diff --git a/arduino-0018-windows/arduino.exe b/arduino-0018-windows/arduino.exe new file mode 100644 index 0000000..920aa99 Binary files /dev/null and b/arduino-0018-windows/arduino.exe differ diff --git a/arduino-0018-windows/cygiconv-2.dll b/arduino-0018-windows/cygiconv-2.dll new file mode 100644 index 0000000..64fd39e Binary files /dev/null and b/arduino-0018-windows/cygiconv-2.dll differ diff --git a/arduino-0018-windows/cygwin1.dll b/arduino-0018-windows/cygwin1.dll new file mode 100644 index 0000000..83e58ea Binary files /dev/null and b/arduino-0018-windows/cygwin1.dll differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/Application Notes.url b/arduino-0018-windows/drivers/FTDI USB Drivers/Application Notes.url new file mode 100644 index 0000000..6ad7c91 --- /dev/null +++ b/arduino-0018-windows/drivers/FTDI USB Drivers/Application Notes.url @@ -0,0 +1,7 @@ +[DEFAULT] +BASEURL=http://www.ftdichip.com/Documents/AppNotes.htm +[InternetShortcut] +URL=http://www.ftdichip.com/Documents/AppNotes.htm +Modified=C055946F4AF7C5011F +IconFile=C:\WINNT\system32\url.dll +IconIndex=0 diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTBUSUI.dll b/arduino-0018-windows/drivers/FTDI USB Drivers/FTBUSUI.dll new file mode 100644 index 0000000..2bc6663 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/FTBUSUI.dll differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.H b/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.H new file mode 100644 index 0000000..9cfe171 --- /dev/null +++ b/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.H @@ -0,0 +1,875 @@ +/*++ + +Copyright (c) 2001-2005 Future Technology Devices International Ltd. + +Module Name: + + ftd2xx.h + +Abstract: + + Native USB device driver for FTDI FT8U232/245 + FTD2XX library definitions + +Environment: + + kernel & user mode + +Revision History: + + 13/03/01 awm Created. + 13/01/03 awm Added device information support. + 19/03/03 awm Added FT_W32_CancelIo. + 12/06/03 awm Added FT_StopInTask and FT_RestartInTask. + 18/09/03 awm Added FT_SetResetPipeRetryCount. + 10/10/03 awm Added FT_ResetPort. + 23/01/04 awm Added support for open-by-location. + 16/03/04 awm Added support for FT2232C. + 23/09/04 awm Added support for FT232R. + 20/10/04 awm Added FT_CyclePort. + 18/01/05 awm Added FT_DEVICE_LIST_INFO_NODE type. + 11/02/05 awm Added LocId to FT_DEVICE_LIST_INFO_NODE. + 25/08/05 awm Added FT_SetDeadmanTimeout. + 02/12/05 awm Removed obsolete references. + 05/12/05 awm Added FT_GetVersion, FT_GetVersionEx. + + +--*/ + + +#ifndef FTD2XX_H +#define FTD2XX_H + +// The following ifdef block is the standard way of creating macros +// which make exporting from a DLL simpler. All files within this DLL +// are compiled with the FTD2XX_EXPORTS symbol defined on the command line. +// This symbol should not be defined on any project that uses this DLL. +// This way any other project whose source files include this file see +// FTD2XX_API functions as being imported from a DLL, whereas this DLL +// sees symbols defined with this macro as being exported. + +#ifdef FTD2XX_EXPORTS +#define FTD2XX_API __declspec(dllexport) +#else +#define FTD2XX_API __declspec(dllimport) +#endif + + +typedef PVOID FT_HANDLE; +typedef ULONG FT_STATUS; + +// +// Device status +// +enum { + FT_OK, + FT_INVALID_HANDLE, + FT_DEVICE_NOT_FOUND, + FT_DEVICE_NOT_OPENED, + FT_IO_ERROR, + FT_INSUFFICIENT_RESOURCES, + FT_INVALID_PARAMETER, + FT_INVALID_BAUD_RATE, + + FT_DEVICE_NOT_OPENED_FOR_ERASE, + FT_DEVICE_NOT_OPENED_FOR_WRITE, + FT_FAILED_TO_WRITE_DEVICE, + FT_EEPROM_READ_FAILED, + FT_EEPROM_WRITE_FAILED, + FT_EEPROM_ERASE_FAILED, + FT_EEPROM_NOT_PRESENT, + FT_EEPROM_NOT_PROGRAMMED, + FT_INVALID_ARGS, + FT_NOT_SUPPORTED, + FT_OTHER_ERROR +}; + + +#define FT_SUCCESS(status) ((status) == FT_OK) + +// +// FT_OpenEx Flags +// + +#define FT_OPEN_BY_SERIAL_NUMBER 1 +#define FT_OPEN_BY_DESCRIPTION 2 +#define FT_OPEN_BY_LOCATION 4 + +// +// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags +// + +#define FT_LIST_NUMBER_ONLY 0x80000000 +#define FT_LIST_BY_INDEX 0x40000000 +#define FT_LIST_ALL 0x20000000 + +#define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL) + +// +// Baud Rates +// + +#define FT_BAUD_300 300 +#define FT_BAUD_600 600 +#define FT_BAUD_1200 1200 +#define FT_BAUD_2400 2400 +#define FT_BAUD_4800 4800 +#define FT_BAUD_9600 9600 +#define FT_BAUD_14400 14400 +#define FT_BAUD_19200 19200 +#define FT_BAUD_38400 38400 +#define FT_BAUD_57600 57600 +#define FT_BAUD_115200 115200 +#define FT_BAUD_230400 230400 +#define FT_BAUD_460800 460800 +#define FT_BAUD_921600 921600 + +// +// Word Lengths +// + +#define FT_BITS_8 (UCHAR) 8 +#define FT_BITS_7 (UCHAR) 7 +#define FT_BITS_6 (UCHAR) 6 +#define FT_BITS_5 (UCHAR) 5 + +// +// Stop Bits +// + +#define FT_STOP_BITS_1 (UCHAR) 0 +#define FT_STOP_BITS_1_5 (UCHAR) 1 +#define FT_STOP_BITS_2 (UCHAR) 2 + +// +// Parity +// + +#define FT_PARITY_NONE (UCHAR) 0 +#define FT_PARITY_ODD (UCHAR) 1 +#define FT_PARITY_EVEN (UCHAR) 2 +#define FT_PARITY_MARK (UCHAR) 3 +#define FT_PARITY_SPACE (UCHAR) 4 + +// +// Flow Control +// + +#define FT_FLOW_NONE 0x0000 +#define FT_FLOW_RTS_CTS 0x0100 +#define FT_FLOW_DTR_DSR 0x0200 +#define FT_FLOW_XON_XOFF 0x0400 + +// +// Purge rx and tx buffers +// +#define FT_PURGE_RX 1 +#define FT_PURGE_TX 2 + +// +// Events +// + +typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD); + +#define FT_EVENT_RXCHAR 1 +#define FT_EVENT_MODEM_STATUS 2 + +// +// Timeouts +// + +#define FT_DEFAULT_RX_TIMEOUT 300 +#define FT_DEFAULT_TX_TIMEOUT 300 + +// +// Device types +// + +typedef ULONG FT_DEVICE; + +enum { + FT_DEVICE_BM, + FT_DEVICE_AM, + FT_DEVICE_100AX, + FT_DEVICE_UNKNOWN, + FT_DEVICE_2232C, + FT_DEVICE_232R +}; + + +#ifdef __cplusplus +extern "C" { +#endif + + +FTD2XX_API +FT_STATUS WINAPI FT_Open( + int deviceNumber, + FT_HANDLE *pHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_OpenEx( + PVOID pArg1, + DWORD Flags, + FT_HANDLE *pHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_ListDevices( + PVOID pArg1, + PVOID pArg2, + DWORD Flags + ); + +FTD2XX_API +FT_STATUS WINAPI FT_Close( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_Read( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesReturned + ); + +FTD2XX_API +FT_STATUS WINAPI FT_Write( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesWritten + ); + +FTD2XX_API +FT_STATUS WINAPI FT_IoCtl( + FT_HANDLE ftHandle, + DWORD dwIoControlCode, + LPVOID lpInBuf, + DWORD nInBufSize, + LPVOID lpOutBuf, + DWORD nOutBufSize, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBaudRate( + FT_HANDLE ftHandle, + ULONG BaudRate + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDivisor( + FT_HANDLE ftHandle, + USHORT Divisor + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDataCharacteristics( + FT_HANDLE ftHandle, + UCHAR WordLength, + UCHAR StopBits, + UCHAR Parity + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetFlowControl( + FT_HANDLE ftHandle, + USHORT FlowControl, + UCHAR XonChar, + UCHAR XoffChar + ); + +FTD2XX_API +FT_STATUS WINAPI FT_ResetDevice( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDtr( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_ClrDtr( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetRts( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_ClrRts( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetModemStatus( + FT_HANDLE ftHandle, + ULONG *pModemStatus + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetChars( + FT_HANDLE ftHandle, + UCHAR EventChar, + UCHAR EventCharEnabled, + UCHAR ErrorChar, + UCHAR ErrorCharEnabled + ); + +FTD2XX_API +FT_STATUS WINAPI FT_Purge( + FT_HANDLE ftHandle, + ULONG Mask + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetTimeouts( + FT_HANDLE ftHandle, + ULONG ReadTimeout, + ULONG WriteTimeout + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetQueueStatus( + FT_HANDLE ftHandle, + DWORD *dwRxBytes + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetEventNotification( + FT_HANDLE ftHandle, + DWORD Mask, + PVOID Param + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetStatus( + FT_HANDLE ftHandle, + DWORD *dwRxBytes, + DWORD *dwTxBytes, + DWORD *dwEventDWord + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBreakOn( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBreakOff( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetWaitMask( + FT_HANDLE ftHandle, + DWORD Mask + ); + +FTD2XX_API +FT_STATUS WINAPI FT_WaitOnMask( + FT_HANDLE ftHandle, + DWORD *Mask + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetEventStatus( + FT_HANDLE ftHandle, + DWORD *dwEventDWord + ); + +FTD2XX_API +FT_STATUS WINAPI FT_ReadEE( + FT_HANDLE ftHandle, + DWORD dwWordOffset, + LPWORD lpwValue + ); + +FTD2XX_API +FT_STATUS WINAPI FT_WriteEE( + FT_HANDLE ftHandle, + DWORD dwWordOffset, + WORD wValue + ); + +FTD2XX_API +FT_STATUS WINAPI FT_EraseEE( + FT_HANDLE ftHandle + ); + +// +// structure to hold program data for FT_Program function +// +typedef struct ft_program_data { + + DWORD Signature1; // Header - must be 0x00000000 + DWORD Signature2; // Header - must be 0xffffffff + DWORD Version; // Header - FT_PROGRAM_DATA version + // 0 = original + // 1 = FT2232C extensions + // 2 = FT232R extensions + + WORD VendorId; // 0x0403 + WORD ProductId; // 0x6001 + char *Manufacturer; // "FTDI" + char *ManufacturerId; // "FT" + char *Description; // "USB HS Serial Converter" + char *SerialNumber; // "FT000001" if fixed, or NULL + WORD MaxPower; // 0 < MaxPower <= 500 + WORD PnP; // 0 = disabled, 1 = enabled + WORD SelfPowered; // 0 = bus powered, 1 = self powered + WORD RemoteWakeup; // 0 = not capable, 1 = capable + // + // Rev4 extensions + // + UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise + UCHAR IsoIn; // non-zero if in endpoint is isochronous + UCHAR IsoOut; // non-zero if out endpoint is isochronous + UCHAR PullDownEnable; // non-zero if pull down enabled + UCHAR SerNumEnable; // non-zero if serial number to be used + UCHAR USBVersionEnable; // non-zero if chip uses USBVersion + WORD USBVersion; // BCD (0x0200 => USB2) + // + // FT2232C extensions + // + UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise + UCHAR IsoInA; // non-zero if in endpoint is isochronous + UCHAR IsoInB; // non-zero if in endpoint is isochronous + UCHAR IsoOutA; // non-zero if out endpoint is isochronous + UCHAR IsoOutB; // non-zero if out endpoint is isochronous + UCHAR PullDownEnable5; // non-zero if pull down enabled + UCHAR SerNumEnable5; // non-zero if serial number to be used + UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion + WORD USBVersion5; // BCD (0x0200 => USB2) + UCHAR AIsHighCurrent; // non-zero if interface is high current + UCHAR BIsHighCurrent; // non-zero if interface is high current + UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO + UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IFAIsFastSer; // non-zero if interface is Fast serial + UCHAR AIsVCP; // non-zero if interface is to use VCP drivers + UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO + UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IFBIsFastSer; // non-zero if interface is Fast serial + UCHAR BIsVCP; // non-zero if interface is to use VCP drivers + // + // FT232R extensions + // + UCHAR UseExtOsc; // Use External Oscillator + UCHAR HighDriveIOs; // High Drive I/Os + UCHAR EndpointSize; // Endpoint size + + UCHAR PullDownEnableR; // non-zero if pull down enabled + UCHAR SerNumEnableR; // non-zero if serial number to be used + + UCHAR InvertTXD; // non-zero if invert TXD + UCHAR InvertRXD; // non-zero if invert RXD + UCHAR InvertRTS; // non-zero if invert RTS + UCHAR InvertCTS; // non-zero if invert CTS + UCHAR InvertDTR; // non-zero if invert DTR + UCHAR InvertDSR; // non-zero if invert DSR + UCHAR InvertDCD; // non-zero if invert DCD + UCHAR InvertRI; // non-zero if invert RI + + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + + UCHAR RIsVCP; // non-zero if using VCP drivers + +} FT_PROGRAM_DATA, *PFT_PROGRAM_DATA; + +FTD2XX_API +FT_STATUS WINAPI FT_EE_Program( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData + ); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_ProgramEx( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData, + char *Manufacturer, + char *ManufacturerId, + char *Description, + char *SerialNumber + ); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_Read( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData + ); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_ReadEx( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData, + char *Manufacturer, + char *ManufacturerId, + char *Description, + char *SerialNumber + ); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_UASize( + FT_HANDLE ftHandle, + LPDWORD lpdwSize + ); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_UAWrite( + FT_HANDLE ftHandle, + PUCHAR pucData, + DWORD dwDataLen + ); + +FTD2XX_API +FT_STATUS WINAPI FT_EE_UARead( + FT_HANDLE ftHandle, + PUCHAR pucData, + DWORD dwDataLen, + LPDWORD lpdwBytesRead + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetLatencyTimer( + FT_HANDLE ftHandle, + UCHAR ucLatency + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetLatencyTimer( + FT_HANDLE ftHandle, + PUCHAR pucLatency + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetBitMode( + FT_HANDLE ftHandle, + UCHAR ucMask, + UCHAR ucEnable + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetBitMode( + FT_HANDLE ftHandle, + PUCHAR pucMode + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetUSBParameters( + FT_HANDLE ftHandle, + ULONG ulInTransferSize, + ULONG ulOutTransferSize + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetDeadmanTimeout( + FT_HANDLE ftHandle, + ULONG ulDeadmanTimeout + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetDeviceInfo( + FT_HANDLE ftHandle, + FT_DEVICE *lpftDevice, + LPDWORD lpdwID, + PCHAR SerialNumber, + PCHAR Description, + LPVOID Dummy + ); + +FTD2XX_API +FT_STATUS WINAPI FT_StopInTask( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_RestartInTask( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_SetResetPipeRetryCount( + FT_HANDLE ftHandle, + DWORD dwCount + ); + +FTD2XX_API +FT_STATUS WINAPI FT_ResetPort( + FT_HANDLE ftHandle + ); + +FTD2XX_API +FT_STATUS WINAPI FT_CyclePort( + FT_HANDLE ftHandle + ); + + +// +// Win32-type functions +// + +FTD2XX_API +FT_HANDLE WINAPI FT_W32_CreateFile( + LPCSTR lpszName, + DWORD dwAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreate, + DWORD dwAttrsAndFlags, + HANDLE hTemplate + ); + +FTD2XX_API +BOOL WINAPI FT_W32_CloseHandle( + FT_HANDLE ftHandle + ); + +FTD2XX_API +BOOL WINAPI FT_W32_ReadFile( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped + ); + +FTD2XX_API +BOOL WINAPI FT_W32_WriteFile( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesWritten, + LPOVERLAPPED lpOverlapped + ); + +FTD2XX_API +DWORD WINAPI FT_W32_GetLastError( + FT_HANDLE ftHandle + ); + +FTD2XX_API +BOOL WINAPI FT_W32_GetOverlappedResult( + FT_HANDLE ftHandle, + LPOVERLAPPED lpOverlapped, + LPDWORD lpdwBytesTransferred, + BOOL bWait + ); + +FTD2XX_API +BOOL WINAPI FT_W32_CancelIo( + FT_HANDLE ftHandle + ); + + +// +// Win32 COMM API type functions +// +typedef struct _FTCOMSTAT { + DWORD fCtsHold : 1; + DWORD fDsrHold : 1; + DWORD fRlsdHold : 1; + DWORD fXoffHold : 1; + DWORD fXoffSent : 1; + DWORD fEof : 1; + DWORD fTxim : 1; + DWORD fReserved : 25; + DWORD cbInQue; + DWORD cbOutQue; +} FTCOMSTAT, *LPFTCOMSTAT; + +typedef struct _FTDCB { + DWORD DCBlength; /* sizeof(FTDCB) */ + DWORD BaudRate; /* Baudrate at which running */ + DWORD fBinary: 1; /* Binary Mode (skip EOF check) */ + DWORD fParity: 1; /* Enable parity checking */ + DWORD fOutxCtsFlow:1; /* CTS handshaking on output */ + DWORD fOutxDsrFlow:1; /* DSR handshaking on output */ + DWORD fDtrControl:2; /* DTR Flow control */ + DWORD fDsrSensitivity:1; /* DSR Sensitivity */ + DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */ + DWORD fOutX: 1; /* Enable output X-ON/X-OFF */ + DWORD fInX: 1; /* Enable input X-ON/X-OFF */ + DWORD fErrorChar: 1; /* Enable Err Replacement */ + DWORD fNull: 1; /* Enable Null stripping */ + DWORD fRtsControl:2; /* Rts Flow control */ + DWORD fAbortOnError:1; /* Abort all reads and writes on Error */ + DWORD fDummy2:17; /* Reserved */ + WORD wReserved; /* Not currently used */ + WORD XonLim; /* Transmit X-ON threshold */ + WORD XoffLim; /* Transmit X-OFF threshold */ + BYTE ByteSize; /* Number of bits/byte, 4-8 */ + BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */ + BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */ + char XonChar; /* Tx and Rx X-ON character */ + char XoffChar; /* Tx and Rx X-OFF character */ + char ErrorChar; /* Error replacement char */ + char EofChar; /* End of Input character */ + char EvtChar; /* Received Event character */ + WORD wReserved1; /* Fill for now. */ +} FTDCB, *LPFTDCB; + +typedef struct _FTTIMEOUTS { + DWORD ReadIntervalTimeout; /* Maximum time between read chars. */ + DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */ + DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */ + DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */ + DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */ +} FTTIMEOUTS,*LPFTTIMEOUTS; + + +FTD2XX_API +BOOL WINAPI FT_W32_ClearCommBreak( + FT_HANDLE ftHandle + ); + +FTD2XX_API +BOOL WINAPI FT_W32_ClearCommError( + FT_HANDLE ftHandle, + LPDWORD lpdwErrors, + LPFTCOMSTAT lpftComstat + ); + +FTD2XX_API +BOOL WINAPI FT_W32_EscapeCommFunction( + FT_HANDLE ftHandle, + DWORD dwFunc + ); + +FTD2XX_API +BOOL WINAPI FT_W32_GetCommModemStatus( + FT_HANDLE ftHandle, + LPDWORD lpdwModemStatus + ); + +FTD2XX_API +BOOL WINAPI FT_W32_GetCommState( + FT_HANDLE ftHandle, + LPFTDCB lpftDcb + ); + +FTD2XX_API +BOOL WINAPI FT_W32_GetCommTimeouts( + FT_HANDLE ftHandle, + FTTIMEOUTS *pTimeouts + ); + +FTD2XX_API +BOOL WINAPI FT_W32_PurgeComm( + FT_HANDLE ftHandle, + DWORD dwMask + ); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommBreak( + FT_HANDLE ftHandle + ); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommMask( + FT_HANDLE ftHandle, + ULONG ulEventMask + ); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommState( + FT_HANDLE ftHandle, + LPFTDCB lpftDcb + ); + +FTD2XX_API +BOOL WINAPI FT_W32_SetCommTimeouts( + FT_HANDLE ftHandle, + FTTIMEOUTS *pTimeouts + ); + +FTD2XX_API +BOOL WINAPI FT_W32_SetupComm( + FT_HANDLE ftHandle, + DWORD dwReadBufferSize, + DWORD dwWriteBufferSize + ); + +FTD2XX_API +BOOL WINAPI FT_W32_WaitCommEvent( + FT_HANDLE ftHandle, + PULONG pulEvent, + LPOVERLAPPED lpOverlapped + ); + + +// +// Device information +// + +typedef struct _ft_device_list_info_node { + ULONG Flags; + ULONG Type; + ULONG ID; + DWORD LocId; + char SerialNumber[16]; + char Description[64]; + FT_HANDLE ftHandle; +} FT_DEVICE_LIST_INFO_NODE; + + +FTD2XX_API +FT_STATUS WINAPI FT_CreateDeviceInfoList( + LPDWORD lpdwNumDevs + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetDeviceInfoList( + FT_DEVICE_LIST_INFO_NODE *pDest, + LPDWORD lpdwNumDevs + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetDeviceInfoDetail( + DWORD dwIndex, + LPDWORD lpdwFlags, + LPDWORD lpdwType, + LPDWORD lpdwID, + LPDWORD lpdwLocId, + LPVOID lpSerialNumber, + LPVOID lpDescription, + FT_HANDLE *pftHandle + ); + + +// +// Version information +// + +FTD2XX_API +FT_STATUS WINAPI FT_GetDriverVersion( + FT_HANDLE ftHandle, + LPDWORD lpdwVersion + ); + +FTD2XX_API +FT_STATUS WINAPI FT_GetLibraryVersion( + LPDWORD lpdwVersion + ); + + + + +#ifdef __cplusplus +} +#endif + + +#endif /* FTD2XX_H */ + diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.dll b/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.dll new file mode 100644 index 0000000..b2b9f0f Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.dll differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.lib b/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.lib new file mode 100644 index 0000000..07451b4 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/FTD2XX.lib differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIBUS.INF b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIBUS.INF new file mode 100644 index 0000000..8b5b308 --- /dev/null +++ b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIBUS.INF @@ -0,0 +1,88 @@ +; FTDIBUS.INF +; Copyright (c) 2000-2006 FTDI Ltd. +; +; USB serial converter driver installation for Windows 2000 and XP. +; + +[Version] +Signature="$Windows NT$" +DriverPackageType=PlugAndPlay +DriverPackageDisplayName=%DESC% +Class=USB +ClassGUID={36fc9e60-c465-11cf-8056-444553540000} +Provider=%FTDI% +CatalogFile=ftdibus.cat +DriverVer=05/19/2006,2.00.00 + +[SourceDisksNames] +1=%DriversDisk%,,, + +[SourceDisksFiles] +ftdibus.sys = 1 +ftdiunin.exe = 1 +ftdiun2k.ini = 1 +ftbusui.dll = 1 +ftd2xx.dll = 1 + +[DestinationDirs] +FtdiBus.NT.Copy = 10,system32\drivers +FtdiBus.NT.Copy2 = 10,system32 + +[Manufacturer] +%Ftdi%=FtdiHw + +[FtdiHw] +%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6001 +%USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6010&MI_00 +%USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6010&MI_01 + +[ControlFlags] +ExcludeFromSelect=* + +[FtdiBus.NT] +CopyFiles=FtdiBus.NT.Copy,FtdiBus.NT.Copy2 +AddReg=FtdiBus.NT.AddReg,FtdiBusUnInst.NT.Reg + +[FtdiBus.NT.Services] +AddService = FTDIBUS, 0x00000002, FtdiBus.NT.AddService + +[FtdiBus.NT.AddService] +DisplayName = %SvcDesc% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %10%\system32\drivers\ftdibus.sys +LoadOrderGroup = Base + +[FtdiBus.NT.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,ftdibus.sys +HKR,,EnumPropPages32,,"ftbusui.dll,FTBUSUIPropPageProvider" + +[FtdiBus.NT.Copy] +ftdibus.sys + +[FtdiBus.NT.Copy2] +ftdiunin.exe +ftdiun2k.ini +ftbusui.dll +ftd2xx.dll + +[FtdiBusUnInst.NT.Reg] +HKLM,%WINUN%,"FTDICOMM" +HKLM,%WINUN%\FTDICOMM , "UninstallString",,"%11%\ftdiunin.exe %11%\ftdiun2k.ini" +HKLM,%WINUN%\FTDICOMM , "DisplayName",,"FTDI USB Serial Converter Drivers" +HKLM,%WINUN%\FTDICOMM , "URLInfoAbout",,"http://www.ftdichip.com" +HKLM,%WINUN%\FTDICOMM , "Publisher",,"FTDI Ltd" +HKLM,%WINUN%\FTDICOMM , "DisplayVersion",,"2.00.00" + +[Strings] +Ftdi="FTDI" +DESC="CDM Driver Package" +DriversDisk="FTDI USB Drivers Disk" +USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B" +WINUN="Software\Microsoft\Windows\CurrentVersion\Uninstall" +SvcDesc="USB Serial Converter Driver" +ClassName="USB" diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIBUS.sys b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIBUS.sys new file mode 100644 index 0000000..1f091c8 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIBUS.sys differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIPORT.INF b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIPORT.INF new file mode 100644 index 0000000..fc52590 --- /dev/null +++ b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIPORT.INF @@ -0,0 +1,127 @@ +; FTDIPORT.INF +; Copyright (c) 2000-2006 FTDI Ltd. +; +; USB serial port driver installation for Windows 2000 and XP. +; + +[Version] +Signature="$Windows NT$" +DriverPackageType=PlugAndPlay +DriverPackageDisplayName=%DESC% +Class=Ports +ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318} +Provider=%FTDI% +CatalogFile=ftdiport.cat +DriverVer=05/19/2006,2.00.00 + +[SourceDisksNames] +1=%DriversDisk%,,, + +[SourceDisksFiles] +ftser2k.sys=1 +ftserui2.dll=1 +FTLang.Dll = 1 +ftcserco.dll = 1 + +[DestinationDirs] +FtdiPort.NT.Copy=10,system32\drivers +FtdiPort.NT.CopyUI=10,system32 +FtdiPort2232.NT.CopyCoInst=10,system32 + +[ControlFlags] +ExcludeFromSelect=* + +[Manufacturer] +%FTDI%=FtdiHw + +[FtdiHw] +%VID_0403&PID_6001.DeviceDesc%=FtdiPort232,FTDIBUS\COMPORT&VID_0403&PID_6001 +%VID_0403&PID_6010.DeviceDesc%=FtdiPort2232,FTDIBUS\COMPORT&VID_0403&PID_6010 + +[FtdiPort.NT.AddService] +DisplayName = %SvcDesc% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %10%\system32\drivers\ftser2k.sys +LoadOrderGroup = Base + +; -------------- Serenum Driver install section +[SerEnum_AddService] +DisplayName = %SerEnum.SvcDesc% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %12%\serenum.sys +LoadOrderGroup = PNP Filter + +[FtdiPort.NT.AddReg] +HKR,,EnumPropPages32,,"ftserui2.dll,SerialPortPropPageProvider" + +[FtdiPort.NT.Copy] +ftser2k.sys +;serenum.sys + +[FtdiPort.NT.CopyUI] +ftserui2.dll +FTLang.dll + +[FtdiPort232.NT] +CopyFiles=FtdiPort.NT.Copy,FtdiPort.NT.CopyUI +AddReg=FtdiPort.NT.AddReg + +[FtdiPort232.NT.HW] +AddReg=FtdiPort232.NT.HW.AddReg + +[FtdiPort232.NT.Services] +AddService = FTSER2K, 0x00000002, FtdiPort.NT.AddService +AddService = Serenum,,SerEnum_AddService +DelService = FTSERIAL + +[FtdiPort232.NT.HW.AddReg] +HKR,,"UpperFilters",0x00010000,"serenum" +;HKR,,"ConfigData",1,01,00,3F,3F,10,27,88,13,C4,09,E2,04,71,02,38,41,9c,80,4E,C0,34,00,1A,00,0D,00,06,40,03,80,00,00,d0,80 +HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00 +HKR,,"MinReadTimeout",0x00010001,0 +HKR,,"MinWriteTimeout",0x00010001,0 +HKR,,"LatencyTimer",0x00010001,16 + +; ------- +; FT2232C +; ------- + +[FtdiPort2232.NT] +CopyFiles=FtdiPort.NT.Copy,FtdiPort.NT.CopyUI +AddReg=FtdiPort.NT.AddReg + +[FtdiPort2232.NT.HW] +AddReg=FtdiPort232.NT.HW.AddReg + +[FtdiPort2232.NT.CoInstallers] +AddReg=FtdiPort2232.NT.CoInstallers.AddReg +CopyFiles=FtdiPort2232.NT.CopyCoInst + +[FtdiPort2232.NT.Services] +AddService = FTSER2K, 0x00000002, FtdiPort.NT.AddService +AddService = Serenum,,SerEnum_AddService +DelService = FTSERIAL + +[FtdiPort2232.NT.CoInstallers.AddReg] +HKR,,CoInstallers32,0x00010000,"ftcserco.Dll,FTCSERCoInstaller" + +[FtdiPort2232.NT.CopyCoInst] +ftcserco.dll + +;---------------------------------------------------------------; + +[Strings] +FTDI="FTDI" +DESC="CDM Driver Package" +DriversDisk="FTDI USB Drivers Disk" +PortsClassName = "Ports (COM & LPT)" +VID_0403&PID_6001.DeviceDesc="USB Serial Port" +VID_0403&PID_6010.DeviceDesc="USB Serial Port" +SvcDesc="USB Serial Port Driver" +SerEnum.SvcDesc="Serenum Filter Driver" + + diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIUN2K.INI b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIUN2K.INI new file mode 100644 index 0000000..2249352 --- /dev/null +++ b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIUN2K.INI @@ -0,0 +1,6 @@ +[Uninstall] +Device=VID_0403&PID_6001,VID_0403&PID_6010 +Converter=FTDIBUS +Serial=FTSER2K +InfFiles=FTDIBUS,FTDIPORT +Key=FTDICOMM diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIUNIN.exe b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIUNIN.exe new file mode 100644 index 0000000..4cee751 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/FTDIUNIN.exe differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/FTLang.dll b/arduino-0018-windows/drivers/FTDI USB Drivers/FTLang.dll new file mode 100644 index 0000000..a64d287 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/FTLang.dll differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/Installation Guides.url b/arduino-0018-windows/drivers/FTDI USB Drivers/Installation Guides.url new file mode 100644 index 0000000..b885746 --- /dev/null +++ b/arduino-0018-windows/drivers/FTDI USB Drivers/Installation Guides.url @@ -0,0 +1,7 @@ +[DEFAULT] +BASEURL=http://www.ftdichip.com/Documents/InstallGuides.htm +[InternetShortcut] +URL=http://www.ftdichip.com/Documents/InstallGuides.htm +Modified=606147754AF7C50184 +IconFile=C:\WINNT\system32\url.dll +IconIndex=0 diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/ftcserco.dll b/arduino-0018-windows/drivers/FTDI USB Drivers/ftcserco.dll new file mode 100644 index 0000000..9c493d3 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/ftcserco.dll differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/ftdibus.cat b/arduino-0018-windows/drivers/FTDI USB Drivers/ftdibus.cat new file mode 100644 index 0000000..05035ff Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/ftdibus.cat differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/ftdiport.cat b/arduino-0018-windows/drivers/FTDI USB Drivers/ftdiport.cat new file mode 100644 index 0000000..c84595b Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/ftdiport.cat differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/ftser2k.sys b/arduino-0018-windows/drivers/FTDI USB Drivers/ftser2k.sys new file mode 100644 index 0000000..a7b47e4 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/ftser2k.sys differ diff --git a/arduino-0018-windows/drivers/FTDI USB Drivers/ftserui2.dll b/arduino-0018-windows/drivers/FTDI USB Drivers/ftserui2.dll new file mode 100644 index 0000000..eb97f13 Binary files /dev/null and b/arduino-0018-windows/drivers/FTDI USB Drivers/ftserui2.dll differ diff --git a/arduino-0018-windows/examples/Analog/AnalogInOutSerial/AnalogInOutSerial.pde b/arduino-0018-windows/examples/Analog/AnalogInOutSerial/AnalogInOutSerial.pde new file mode 100644 index 0000000..81c8e81 --- /dev/null +++ b/arduino-0018-windows/examples/Analog/AnalogInOutSerial/AnalogInOutSerial.pde @@ -0,0 +1,50 @@ +/* + Analog input, analog output, serial output + + Reads an analog input pin, maps the result to a range from 0 to 255 + and uses the result to set the pulsewidth modulation (PWM) of an output pin. + Also prints the results to the serial monitor. + + The circuit: + * potentiometer connected to analog pin 0. + Center pin of the potentiometer goes to the analog pin. + side pins of the potentiometer go to +5V and ground + * LED connected from digital pin 9 to ground + + created 29 Dec. 2008 + by Tom Igoe + + */ + +// These constants won't change. They're used to give names +// to the pins used: +const int analogInPin = 0; // Analog input pin that the potentiometer is attached to +const int analogOutPin = 9; // Analog output pin that the LED is attached to + +int sensorValue = 0; // value read from the pot +int outputValue = 0; // value output to the PWM (analog out) + +void setup() { + // initialize serial communications at 9600 bps: + Serial.begin(9600); +} + +void loop() { + // read the analog in value: + sensorValue = analogRead(analogInPin); + // map it to the range of the analog out: + outputValue = map(sensorValue, 0, 1023, 0, 255); + // change the analog out value: + analogWrite(analogOutPin, outputValue); + + // print the results to the serial monitor: + Serial.print("sensor = " ); + Serial.print(sensorValue); + Serial.print("\t output = "); + Serial.println(outputValue); + + // wait 10 milliseconds before the next loop + // for the analog-to-digital converter to settle + // after the last reading: + delay(10); +} diff --git a/arduino-0018-windows/examples/Analog/AnalogInSerial/AnalogInSerial.pde b/arduino-0018-windows/examples/Analog/AnalogInSerial/AnalogInSerial.pde new file mode 100644 index 0000000..c8fa158 --- /dev/null +++ b/arduino-0018-windows/examples/Analog/AnalogInSerial/AnalogInSerial.pde @@ -0,0 +1,29 @@ +/* + Analog input, serial output + + Reads an analog input pin, prints the results to the serial monitor. + + The circuit: + + * potentiometer connected to analog pin 0. + Center pin of the potentiometer goes to the analog pin. + side pins of the potentiometer go to +5V and ground + + created over and over again + by Tom Igoe and everyone who's ever used Arduino + + */ + + void setup() { + Serial.begin(9600); + } + + void loop() { + // read the analog input into a variable: + int analogValue = analogRead(0); + // print the result: + Serial.println(analogValue); + // wait 10 milliseconds for the analog-to-digital converter + // to settle after the last reading: + delay(10); + } diff --git a/arduino-0018-windows/examples/Analog/AnalogInput/AnalogInput.pde b/arduino-0018-windows/examples/Analog/AnalogInput/AnalogInput.pde new file mode 100644 index 0000000..1ee8ee3 --- /dev/null +++ b/arduino-0018-windows/examples/Analog/AnalogInput/AnalogInput.pde @@ -0,0 +1,48 @@ +/* + Analog Input + Demonstrates analog input by reading an analog sensor on analog pin 0 and + turning on and off a light emitting diode(LED) connected to digital pin 13. + The amount of time the LED will be on and off depends on + the value obtained by analogRead(). + + The circuit: + * Potentiometer attached to analog input 0 + * center pin of the potentiometer to the analog pin + * one side pin (either one) to ground + * the other side pin to +5V + * LED anode (long leg) attached to digital output 13 + * LED cathode (short leg) attached to ground + + * Note: because most Arduinos have a built-in LED attached + to pin 13 on the board, the LED is optional. + + + Created by David Cuartielles + Modified 16 Jun 2009 + By Tom Igoe + + http://arduino.cc/en/Tutorial/AnalogInput + + */ + +int sensorPin = 0; // select the input pin for the potentiometer +int ledPin = 13; // select the pin for the LED +int sensorValue = 0; // variable to store the value coming from the sensor + +void setup() { + // declare the ledPin as an OUTPUT: + pinMode(ledPin, OUTPUT); +} + +void loop() { + // read the value from the sensor: + sensorValue = analogRead(sensorPin); + // turn the ledPin on + digitalWrite(ledPin, HIGH); + // stop the program for milliseconds: + delay(sensorValue); + // turn the ledPin off: + digitalWrite(ledPin, LOW); + // stop the program for for milliseconds: + delay(sensorValue); +} \ No newline at end of file diff --git a/arduino-0018-windows/examples/Analog/AnalogWriteMega/AnalogWriteMega.pde b/arduino-0018-windows/examples/Analog/AnalogWriteMega/AnalogWriteMega.pde new file mode 100644 index 0000000..3166952 --- /dev/null +++ b/arduino-0018-windows/examples/Analog/AnalogWriteMega/AnalogWriteMega.pde @@ -0,0 +1,42 @@ +/* + Mega analogWrite() test + + This sketch fades LEDs up and down one at a time on digital pins 2 through 13. + This sketch was written for the Arduino Mega, and will not work on previous boards. + + The circuit: + * LEDs attached from pins 2 through 13 to ground. + + created 8 Feb 2009 + by Tom Igoe + */ +// These constants won't change. They're used to give names +// to the pins used: +const int lowestPin = 2; +const int highestPin = 13; + + +void setup() { + // set pins 2 through 13 as outputs: + for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // iterate over the pins: + for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { + // fade the LED on thisPin from off to brightest: + for (int brightness = 0; brightness < 255; brightness++) { + analogWrite(thisPin, brightness); + delay(2); + } + // fade the LED on thisPin from brithstest to off: + for (int brightness = 255; brightness >= 0; brightness--) { + analogWrite(thisPin, brightness); + delay(2); + } + // pause between LEDs: + delay(100); + } +} diff --git a/arduino-0018-windows/examples/Analog/Calibration/Calibration.pde b/arduino-0018-windows/examples/Analog/Calibration/Calibration.pde new file mode 100644 index 0000000..52c8d8d --- /dev/null +++ b/arduino-0018-windows/examples/Analog/Calibration/Calibration.pde @@ -0,0 +1,73 @@ +/* + Calibration + + Demonstrates one techinque for calibrating sensor input. The + sensor readings during the first five seconds of the sketch + execution define the minimum and maximum of expected values + attached to the sensor pin. + + The sensor minumum and maximum initial values may seem backwards. + Initially, you set the minimum high and listen for anything + lower, saving it as the new minumum. Likewise, you set the + maximum low and listen for anything higher as the new maximum. + + The circuit: + * Analog sensor (potentiometer will do) attached to analog input 0 + * LED attached from digital pin 9 to ground + + created 29 Oct 2008 + By David A Mellis + Modified 17 Jun 2009 + By Tom Igoe + + http://arduino.cc/en/Tutorial/Calibration + + */ + +// These constants won't change: +const int sensorPin = 2; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to + +// variables: +int sensorValue = 0; // the sensor value +int sensorMin = 1023; // minimum sensor value +int sensorMax = 0; // maximum sensor value + + +void setup() { + // turn on LED to signal the start of the calibration period: + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); + + // calibrate during the first five seconds + while (millis() < 5000) { + sensorValue = analogRead(sensorPin); + + // record the maximum sensor value + if (sensorValue > sensorMax) { + sensorMax = sensorValue; + } + + // record the minimum sensor value + if (sensorValue < sensorMin) { + sensorMin = sensorValue; + } + } + + // signal the end of the calibration period + digitalWrite(13, LOW); +} + +void loop() { + // read the sensor: + sensorValue = analogRead(sensorPin); + + // apply the calibration to the sensor reading + sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); + + // in case the sensor value is outside the range seen during calibration + sensorValue = constrain(sensorValue, 0, 255); + + // fade the LED using the calibrated value: + analogWrite(ledPin, sensorValue); +} \ No newline at end of file diff --git a/arduino-0018-windows/examples/Analog/Fading/Fading.pde b/arduino-0018-windows/examples/Analog/Fading/Fading.pde new file mode 100644 index 0000000..1205078 --- /dev/null +++ b/arduino-0018-windows/examples/Analog/Fading/Fading.pde @@ -0,0 +1,43 @@ +/* + Fading + + This example shows how to fade an LED using the analogWrite() function. + + The circuit: + * LED attached from digital pin 9 to ground. + + Created 1 Nov 2008 + By David A. Mellis + Modified 17 June 2009 + By Tom Igoe + + http://arduino.cc/en/Tutorial/Fading + + */ + + +int ledPin = 9; // LED connected to digital pin 9 + +void setup() { + // nothing happens in setup +} + +void loop() { + // fade in from min to max in increments of 5 points: + for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { + // sets the value (range from 0 to 255): + analogWrite(ledPin, fadeValue); + // wait for 30 milliseconds to see the dimming effect + delay(30); + } + + // fade out from max to min in increments of 5 points: + for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { + // sets the value (range from 0 to 255): + analogWrite(ledPin, fadeValue); + // wait for 30 milliseconds to see the dimming effect + delay(30); + } +} + + diff --git a/arduino-0018-windows/examples/Analog/Smoothing/Smoothing.pde b/arduino-0018-windows/examples/Analog/Smoothing/Smoothing.pde new file mode 100644 index 0000000..881bb13 --- /dev/null +++ b/arduino-0018-windows/examples/Analog/Smoothing/Smoothing.pde @@ -0,0 +1,64 @@ +/* + + Smoothing + + Reads repeatedly from an analog input, calculating a running average + and printing it to the computer. Keeps ten readings in an array and + continually averages them. + + The circuit: + * Analog sensor (potentiometer will do) attached to analog input 0 + + Created 22 April 2007 + By David A. Mellis + + http://www.arduino.cc/en/Tutorial/Smoothing + + +*/ + + +// Define the number of samples to keep track of. The higher the number, +// the more the readings will be smoothed, but the slower the output will +// respond to the input. Using a constant rather than a normal variable lets +// use this value to determine the size of the readings array. +const int numReadings = 10; + +int readings[numReadings]; // the readings from the analog input +int index = 0; // the index of the current reading +int total = 0; // the running total +int average = 0; // the average + +int inputPin = 0; + +void setup() +{ + // initialize serial communication with computer: + Serial.begin(9600); + // initialize all the readings to 0: + for (int thisReading = 0; thisReading < numReadings; thisReading++) + readings[thisReading] = 0; +} + +void loop() { + // subtract the last reading: + total= total - readings[index]; + // read from the sensor: + readings[index] = analogRead(inputPin); + // add the reading to the total: + total= total + readings[index]; + // advance to the next position in the array: + index = index + 1; + + // if we're at the end of the array... + if (index >= numReadings) + // ...wrap around to the beginning: + index = 0; + + // calculate the average: + average = total / numReadings; + // send it to the computer (as ASCII digits) + Serial.println(average, DEC); +} + + diff --git a/arduino-0018-windows/examples/ArduinoISP/ArduinoISP.pde b/arduino-0018-windows/examples/ArduinoISP/ArduinoISP.pde new file mode 100644 index 0000000..0012c69 --- /dev/null +++ b/arduino-0018-windows/examples/ArduinoISP/ArduinoISP.pde @@ -0,0 +1,480 @@ +// this sketch turns the Arduino into a AVRISP +// using the following pins: +// 10: slave reset +// 11: MOSI +// 12: MISO +// 13: SCK + +// Put an LED (with resistor) on the following pins: +// 9: Heartbeat - shows the programmer is running +// 8: Error - Lights up if something goes wrong (use red if that makes sense) +// 7: Programming - In communication with the slave +// +// October 2009 by David A. Mellis +// - Added support for the read signature command +// +// February 2009 by Randall Bohn +// - Added support for writing to EEPROM (what took so long?) +// Windows users should consider WinAVR's avrdude instead of the +// avrdude included with Arduino software. +// +// January 2008 by Randall Bohn +// - Thanks to Amplificar for helping me with the STK500 protocol +// - The AVRISP/STK500 (mk I) protocol is used in the arduino bootloader +// - The SPI functions herein were developed for the AVR910_ARD programmer +// - More information at http://code.google.com/p/mega-isp + +#define SCK 13 +#define MISO 12 +#define MOSI 11 +#define RESET 10 + +#define LED_HB 9 +#define LED_ERR 8 +#define LED_PMODE 7 + +#define HWVER 2 +#define SWMAJ 1 +#define SWMIN 18 + +// STK Definitions +#define STK_OK 0x10 +#define STK_FAILED 0x11 +#define STK_UNKNOWN 0x12 +#define STK_INSYNC 0x14 +#define STK_NOSYNC 0x15 +#define CRC_EOP 0x20 //ok it is a space... + +void pulse(int pin, int times); + +void setup() { + Serial.begin(19200); + pinMode(7, OUTPUT); + pulse(7, 2); + pinMode(8, OUTPUT); + pulse(8, 2); + pinMode(9, OUTPUT); + pulse(9, 2); +} + +int error=0; +int pmode=0; +// address for reading and writing, set by 'U' command +int here; +uint8_t buff[256]; // global block storage + +#define beget16(addr) (*addr * 256 + *(addr+1) ) +typedef struct param { + uint8_t devicecode; + uint8_t revision; + uint8_t progtype; + uint8_t parmode; + uint8_t polling; + uint8_t selftimed; + uint8_t lockbytes; + uint8_t fusebytes; + int flashpoll; + int eeprompoll; + int pagesize; + int eepromsize; + int flashsize; +} +parameter; + +parameter param; + +// this provides a heartbeat on pin 9, so you can tell the software is running. +uint8_t hbval=128; +int8_t hbdelta=8; +void heartbeat() { + if (hbval > 192) hbdelta = -hbdelta; + if (hbval < 32) hbdelta = -hbdelta; + hbval += hbdelta; + analogWrite(LED_HB, hbval); + delay(40); +} + + +void loop(void) { + // is pmode active? + if (pmode) digitalWrite(LED_PMODE, HIGH); + else digitalWrite(LED_PMODE, LOW); + // is there an error? + if (error) digitalWrite(LED_ERR, HIGH); + else digitalWrite(LED_ERR, LOW); + + // light the heartbeat LED + heartbeat(); + if (Serial.available()) { + avrisp(); + } +} + +uint8_t getch() { + while(!Serial.available()); + return Serial.read(); +} +void readbytes(int n) { + for (int x = 0; x < n; x++) { + buff[x] = Serial.read(); + } +} + +#define PTIME 30 +void pulse(int pin, int times) { + do { + digitalWrite(pin, HIGH); + delay(PTIME); + digitalWrite(pin, LOW); + delay(PTIME); + } + while (times--); +} + +void spi_init() { + uint8_t x; + SPCR = 0x53; + x=SPSR; + x=SPDR; +} + +void spi_wait() { + do { + } + while (!(SPSR & (1 << SPIF))); +} + +uint8_t spi_send(uint8_t b) { + uint8_t reply; + SPDR=b; + spi_wait(); + reply = SPDR; + return reply; +} + +uint8_t spi_transaction(uint8_t a, uint8_t b, uint8_t c, uint8_t d) { + uint8_t n; + spi_send(a); + n=spi_send(b); + //if (n != a) error = -1; + n=spi_send(c); + return spi_send(d); +} + +void empty_reply() { + if (CRC_EOP == getch()) { + Serial.print((char)STK_INSYNC); + Serial.print((char)STK_OK); + } + else { + Serial.print((char)STK_NOSYNC); + } +} + +void breply(uint8_t b) { + if (CRC_EOP == getch()) { + Serial.print((char)STK_INSYNC); + Serial.print((char)b); + Serial.print((char)STK_OK); + } + else { + Serial.print((char)STK_NOSYNC); + } +} + +void get_version(uint8_t c) { + switch(c) { + case 0x80: + breply(HWVER); + break; + case 0x81: + breply(SWMAJ); + break; + case 0x82: + breply(SWMIN); + break; + case 0x93: + breply('S'); // serial programmer + break; + default: + breply(0); + } +} + +void set_parameters() { + // call this after reading paramter packet into buff[] + param.devicecode = buff[0]; + param.revision = buff[1]; + param.progtype = buff[2]; + param.parmode = buff[3]; + param.polling = buff[4]; + param.selftimed = buff[5]; + param.lockbytes = buff[6]; + param.fusebytes = buff[7]; + param.flashpoll = buff[8]; + // ignore buff[9] (= buff[8]) + //getch(); // discard second value + + // WARNING: not sure about the byte order of the following + // following are 16 bits (big endian) + param.eeprompoll = beget16(&buff[10]); + param.pagesize = beget16(&buff[12]); + param.eepromsize = beget16(&buff[14]); + + // 32 bits flashsize (big endian) + param.flashsize = buff[16] * 0x01000000 + + buff[17] * 0x00010000 + + buff[18] * 0x00000100 + + buff[19]; + +} + +void start_pmode() { + spi_init(); + // following delays may not work on all targets... + pinMode(RESET, OUTPUT); + digitalWrite(RESET, HIGH); + pinMode(SCK, OUTPUT); + digitalWrite(SCK, LOW); + delay(50); + digitalWrite(RESET, LOW); + delay(50); + pinMode(MISO, INPUT); + pinMode(MOSI, OUTPUT); + spi_transaction(0xAC, 0x53, 0x00, 0x00); + pmode = 1; +} + +void end_pmode() { + pinMode(MISO, INPUT); + pinMode(MOSI, INPUT); + pinMode(SCK, INPUT); + pinMode(RESET, INPUT); + pmode = 0; +} + +void universal() { + int w; + uint8_t ch; + + for (w = 0; w < 4; w++) { + buff[w] = getch(); + } + ch = spi_transaction(buff[0], buff[1], buff[2], buff[3]); + breply(ch); +} + +void flash(uint8_t hilo, int addr, uint8_t data) { + spi_transaction(0x40+8*hilo, + addr>>8 & 0xFF, + addr & 0xFF, + data); +} +void commit(int addr) { + spi_transaction(0x4C, (addr >> 8) & 0xFF, addr & 0xFF, 0); +} + +//#define _current_page(x) (here & 0xFFFFE0) +int current_page(int addr) { + if (param.pagesize == 32) return here & 0xFFFFFFF0; + if (param.pagesize == 64) return here & 0xFFFFFFE0; + if (param.pagesize == 128) return here & 0xFFFFFFC0; + if (param.pagesize == 256) return here & 0xFFFFFF80; + return here; +} +uint8_t write_flash(int length) { + if (param.pagesize < 1) return STK_FAILED; + //if (param.pagesize != 64) return STK_FAILED; + int page = current_page(here); + int x = 0; + while (x < length) { + if (page != current_page(here)) { + commit(page); + page = current_page(here); + } + flash(LOW, here, buff[x++]); + flash(HIGH, here, buff[x++]); + here++; + } + + commit(page); + + return STK_OK; +} + +uint8_t write_eeprom(int length) { + // here is a word address, so we use here*2 + // this writes byte-by-byte, + // page writing may be faster (4 bytes at a time) + for (int x = 0; x < length; x++) { + spi_transaction(0xC0, 0x00, here*2+x, buff[x]); + delay(45); + } + return STK_OK; +} + +void program_page() { + char result = (char) STK_FAILED; + int length = 256 * getch() + getch(); + if (length > 256) { + Serial.print((char) STK_FAILED); + return; + } + char memtype = getch(); + for (int x = 0; x < length; x++) { + buff[x] = getch(); + } + if (CRC_EOP == getch()) { + Serial.print((char) STK_INSYNC); + if (memtype == 'F') result = (char)write_flash(length); + if (memtype == 'E') result = (char)write_eeprom(length); + Serial.print(result); + } + else { + Serial.print((char) STK_NOSYNC); + } +} +uint8_t flash_read(uint8_t hilo, int addr) { + return spi_transaction(0x20 + hilo * 8, + (addr >> 8) & 0xFF, + addr & 0xFF, + 0); +} + +char flash_read_page(int length) { + for (int x = 0; x < length; x+=2) { + uint8_t low = flash_read(LOW, here); + Serial.print((char) low); + uint8_t high = flash_read(HIGH, here); + Serial.print((char) high); + here++; + } + return STK_OK; +} + +char eeprom_read_page(int length) { + // here again we have a word address + for (int x = 0; x < length; x++) { + uint8_t ee = spi_transaction(0xA0, 0x00, here*2+x, 0xFF); + Serial.print((char) ee); + } + return STK_OK; +} + +void read_page() { + char result = (char)STK_FAILED; + int length = 256 * getch() + getch(); + char memtype = getch(); + if (CRC_EOP != getch()) { + Serial.print((char) STK_NOSYNC); + return; + } + Serial.print((char) STK_INSYNC); + if (memtype == 'F') result = flash_read_page(length); + if (memtype == 'E') result = eeprom_read_page(length); + Serial.print(result); + return; +} + +void read_signature() { + if (CRC_EOP != getch()) { + Serial.print((char) STK_NOSYNC); + return; + } + Serial.print((char) STK_INSYNC); + uint8_t high = spi_transaction(0x30, 0x00, 0x00, 0x00); + Serial.print((char) high); + uint8_t middle = spi_transaction(0x30, 0x00, 0x01, 0x00); + Serial.print((char) middle); + uint8_t low = spi_transaction(0x30, 0x00, 0x02, 0x00); + Serial.print((char) low); + Serial.print((char) STK_OK); +} +////////////////////////////////////////// +////////////////////////////////////////// + + +//////////////////////////////////// +//////////////////////////////////// +int avrisp() { + uint8_t data, low, high; + uint8_t ch = getch(); + switch (ch) { + case '0': // signon + empty_reply(); + break; + case '1': + if (getch() == CRC_EOP) { + Serial.print((char) STK_INSYNC); + Serial.print("AVR ISP"); + Serial.print((char) STK_OK); + } + break; + case 'A': + get_version(getch()); + break; + case 'B': + readbytes(20); + set_parameters(); + empty_reply(); + break; + case 'E': // extended parameters - ignore for now + readbytes(5); + empty_reply(); + break; + + case 'P': + start_pmode(); + empty_reply(); + break; + case 'U': + here = getch() + 256 * getch(); + empty_reply(); + break; + + case 0x60: //STK_PROG_FLASH + low = getch(); + high = getch(); + empty_reply(); + break; + case 0x61: //STK_PROG_DATA + data = getch(); + empty_reply(); + break; + + case 0x64: //STK_PROG_PAGE + program_page(); + break; + + case 0x74: //STK_READ_PAGE + read_page(); + break; + + case 'V': + universal(); + break; + case 'Q': + error=0; + end_pmode(); + empty_reply(); + break; + + case 0x75: //STK_READ_SIGN + read_signature(); + break; + + // expecting a command, not CRC_EOP + // this is how we can get back in sync + case CRC_EOP: + Serial.print((char) STK_NOSYNC); + break; + + // anything else we will return STK_UNKNOWN + default: + if (CRC_EOP == getch()) + Serial.print((char)STK_UNKNOWN); + else + Serial.print((char)STK_NOSYNC); + } +} + diff --git a/arduino-0018-windows/examples/Communication/ASCIITable/ASCIITable.pde b/arduino-0018-windows/examples/Communication/ASCIITable/ASCIITable.pde new file mode 100644 index 0000000..3a20603 --- /dev/null +++ b/arduino-0018-windows/examples/Communication/ASCIITable/ASCIITable.pde @@ -0,0 +1,73 @@ +/* + ASCII table + + Prints out byte values in all possible formats: + * as raw binary values + * as ASCII-encoded decimal, hex, octal, and binary values + + For more on ASCII, see http://www.asciitable.com and http://en.wikipedia.org/wiki/ASCII + + The circuit: No external hardware needed. + + created 2006 + by Nicholas Zambetti + modified 18 Jan 2009 + by Tom Igoe + + + */ +void setup() +{ + Serial.begin(9600); + + // prints title with ending line break + Serial.println("ASCII Table ~ Character Map"); +} + +// first visible ASCIIcharacter '!' is number 33: +int thisByte = 33; +// you can also write ASCII characters in single quotes. +// for example. '!' is the same as 33, so you could also use this: +//int thisByte = '!'; + +void loop() +{ + // prints value unaltered, i.e. the raw binary version of the + // byte. The serial monitor interprets all bytes as + // ASCII, so 33, the first number, will show up as '!' + Serial.print(thisByte, BYTE); + + Serial.print(", dec: "); + // prints value as string as an ASCII-encoded decimal (base 10). + // Decimal is the default format for Serial.print() and Serial.println(), + // so no modifier is needed: + Serial.print(thisByte); + // But you can declare the modifier for decimal if you want to. + //this also works if you uncomment it: + + // Serial.print(thisByte, DEC); + + + Serial.print(", hex: "); + // prints value as string in hexadecimal (base 16): + Serial.print(thisByte, HEX); + + Serial.print(", oct: "); + // prints value as string in octal (base 8); + Serial.print(thisByte, OCT); + + Serial.print(", bin: "); + // prints value as string in binary (base 2) + // also prints ending line break: + Serial.println(thisByte, BIN); + + // if printed last visible character '~' or 126, stop: + if(thisByte == 126) { // you could also use if (thisByte == '~') { + // This loop loops forever and does nothing + while(true) { + continue; + } + } + // go on to the next character + thisByte++; +} diff --git a/arduino-0018-windows/examples/Communication/Dimmer/Dimmer.pde b/arduino-0018-windows/examples/Communication/Dimmer/Dimmer.pde new file mode 100644 index 0000000..0990fe5 --- /dev/null +++ b/arduino-0018-windows/examples/Communication/Dimmer/Dimmer.pde @@ -0,0 +1,360 @@ +/* + Dimmer + + Demonstrates the sending data from the computer to the Arduino board, + in this case to control the brightness of an LED. The data is sent + in individual bytes, each of which ranges from 0 to 255. Arduino + reads these bytes and uses them to set the brightness of the LED. + + The circuit: + LED attached from digital pin 9 to ground. + Serial connection to Processing, Max/MSP, or another serial application + + created 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + http://www.arduino.cc/en/Tutorial/Dimmer + */ + +const int ledPin = 9; // the pin that the LED is attached to + +void setup() +{ + // initialize the serial communication: + Serial.begin(9600); + // initialize the ledPin as an output: + pinMode(ledPin, OUTPUT); +} + +void loop() { + byte brightness; + + // check if data has been sent from the computer: + if (Serial.available()) { + // read the most recent byte (which will be from 0 to 255): + brightness = Serial.read(); + // set the brightness of the LED: + analogWrite(ledPin, brightness); + } +} + +/* Processing code for this example + // Dimmer - sends bytes over a serial port + // by David A. Mellis + + import processing.serial.*; + Serial port; + + void setup() { + size(256, 150); + + println("Available serial ports:"); + println(Serial.list()); + + // Uses the first port in this list (number 0). Change this to + // select the port corresponding to your Arduino board. The last + // parameter (e.g. 9600) is the speed of the communication. It + // has to correspond to the value passed to Serial.begin() in your + // Arduino sketch. + port = new Serial(this, Serial.list()[0], 9600); + + // If you know the name of the port used by the Arduino board, you + // can specify it directly like this. + //port = new Serial(this, "COM1", 9600); + } + + void draw() { + // draw a gradient from black to white + for (int i = 0; i < 256; i++) { + stroke(i); + line(i, 0, i, 150); + } + + // write the current X-position of the mouse to the serial port as + // a single byte + port.write(mouseX); + } + */ + +/* Max/MSP v5 patch for this example + + { + "boxes" : [ { + "box" : { + "maxclass" : "comment", + "text" : "Dimmer\n\nThis patch sends a binary number from 0 to 255 out the serial port to an Arduino connected to the port. It dims an LED attached to the Arduino.\n\ncreated 2006\nby David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 10, + "patching_rect" : [ 209.0, 55.0, 344.0, 144.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-32", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "change the slider to alter the brightness of the LED", + "linecount" : 3, + "patching_rect" : [ 90.0, 235.0, 117.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-7", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 215.0, 385.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-6", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "slider", + "patching_rect" : [ 215.0, 235.0, 20.0, 140.0 ], + "numoutlets" : 1, + "outlettype" : [ "" ], + "bgcolor" : [ 0.94902, 0.94902, 0.94902, 0.0 ], + "id" : "obj-1", + "size" : 256.0, + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 342.0, 305.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 390.0, 396.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 415.0, 370.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 342.0, 396.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 364.0, 370.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 435.0, 344.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 342.0, 268.0, 15.0, 15.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 384.0, 344.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 259.0, 420.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 369.0, 268.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "panel", + "patching_rect" : [ 215.0, 235.0, 21.0, 139.0 ], + "numoutlets" : 0, + "mode" : 1, + "grad1" : [ 1.0, 1.0, 1.0, 1.0 ], + "id" : "obj-8", + "grad2" : [ 0.509804, 0.509804, 0.509804, 1.0 ], + "numinlets" : 1, + "angle" : 270.0 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 351.0, 296.0, 351.5, 296.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 351.5, 416.5, 268.5, 416.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 373.5, 393.5, 268.5, 393.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 393.5, 365.5, 268.5, 365.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-1", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 224.5, 411.5, 268.5, 411.5 ] + } + + } + ] + } + */ diff --git a/arduino-0018-windows/examples/Communication/Graph/Graph.pde b/arduino-0018-windows/examples/Communication/Graph/Graph.pde new file mode 100644 index 0000000..1f2fadd --- /dev/null +++ b/arduino-0018-windows/examples/Communication/Graph/Graph.pde @@ -0,0 +1,578 @@ +/* + Graph + + A simple example of communication from the Arduino board to the computer: + the value of analog input 0 is sent out the serial port. We call this "serial" + communication because the connection appears to both the Arduino and the + computer as a serial port, even though it may actually use + a USB cable. Bytes are sent one after another (serially) from the Arduino + to the computer. + + You can use the Arduino serial monitor to view the sent data, or it can + be read by Processing, PD, Max/MSP, or any other program capable of reading + data from a serial port. The Processing code below graphs the data received + so you can see the value of the analog input changing over time. + + The circuit: + Any analog input sensor is attached to analog in pin 0. + + http://www.arduino.cc/en/Tutorial/Graph + + created 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + http://www.arduino.cc/en/Tutorial/Graph + */ + +void setup() { + // initialize the serial communication: + Serial.begin(9600); +} + +void loop() { + // send the value of analog input 0: + Serial.println(analogRead(0)); + // wait a bit for the analog-to-digital converter + // to stabilize after the last reading: + delay(10); +} + +/* Processing code for this example + + // Graphing sketch + + + // This program takes ASCII-encoded strings + // from the serial port at 9600 baud and graphs them. It expects values in the + // range 0 to 1023, followed by a newline, or newline and carriage return + + // Created 20 Apr 2005 + // Updated 18 Jan 2008 + // by Tom Igoe + + import processing.serial.*; + + Serial myPort; // The serial port + int xPos = 1; // horizontal position of the graph + + void setup () { + // set the window size: + size(400, 300); + + // List all the available serial ports + println(Serial.list()); + // I know that the first port in the serial list on my mac + // is always my Arduino, so I open Serial.list()[0]. + // Open whatever port is the one you're using. + myPort = new Serial(this, Serial.list()[0], 9600); + // don't generate a serialEvent() unless you get a newline character: + myPort.bufferUntil('\n'); + // set inital background: + background(0); + } + void draw () { + // everything happens in the serialEvent() + } + + void serialEvent (Serial myPort) { + // get the ASCII string: + String inString = myPort.readStringUntil('\n'); + + if (inString != null) { + // trim off any whitespace: + inString = trim(inString); + // convert to an int and map to the screen height: + float inByte = float(inString); + inByte = map(inByte, 0, 1023, 0, height); + + // draw the line: + stroke(127,34,255); + line(xPos, height, xPos, height - inByte); + + // at the edge of the screen, go back to the beginning: + if (xPos >= width) { + xPos = 0; + background(0); + } + else { + // increment the horizontal position: + xPos++; + } + } + } + + */ + +/* Max/MSP v5 patch for this example + { + "boxes" : [ { + "box" : { + "maxclass" : "comment", + "text" : "Graph\n\nThis patch takes a string, containing ASCII formatted number from 0 to 1023, with a carriage return and linefeed at the end. It converts the string to an integer and graphs it.\n\ncreated 2006\nby David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 10, + "patching_rect" : [ 479.0, 6.0, 344.0, 144.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-32", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 327.0, 80.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 412.0, 231.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 412.0, 205.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 327.0, 231.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 349.0, 205.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "multislider", + "candicane7" : [ 0.878431, 0.243137, 0.145098, 1.0 ], + "patching_rect" : [ 302.0, 450.0, 246.0, 167.0 ], + "contdata" : 1, + "numoutlets" : 2, + "peakcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ], + "slidercolor" : [ 0.066667, 0.058824, 0.776471, 1.0 ], + "candicane8" : [ 0.027451, 0.447059, 0.501961, 1.0 ], + "outlettype" : [ "", "" ], + "setminmax" : [ 0.0, 1023.0 ], + "settype" : 0, + "candicane6" : [ 0.733333, 0.035294, 0.788235, 1.0 ], + "setstyle" : 3, + "bgcolor" : [ 0.231373, 0.713726, 1.0, 1.0 ], + "id" : "obj-1", + "candicane4" : [ 0.439216, 0.619608, 0.070588, 1.0 ], + "candicane5" : [ 0.584314, 0.827451, 0.431373, 1.0 ], + "candicane2" : [ 0.145098, 0.203922, 0.356863, 1.0 ], + "candicane3" : [ 0.290196, 0.411765, 0.713726, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 412.0, 179.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Here's the number from Arduino's analog input", + "linecount" : 2, + "patching_rect" : [ 153.0, 409.0, 138.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-3", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert ASCII to symbol", + "patching_rect" : [ 379.0, 378.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-4", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert integer to ASCII", + "patching_rect" : [ 379.0, 355.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 302.0, 414.0, 37.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "bgcolor" : [ 0.866667, 0.866667, 0.866667, 1.0 ], + "id" : "obj-6", + "triscale" : 0.9, + "fontname" : "Arial", + "htextcolor" : [ 0.870588, 0.870588, 0.870588, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "fromsymbol", + "patching_rect" : [ 302.0, 378.0, 74.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-7", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "itoa", + "patching_rect" : [ 302.0, 355.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-8", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 3 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "zl group 4", + "patching_rect" : [ 302.0, 332.0, 64.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 10 13", + "patching_rect" : [ 244.0, 281.0, 77.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-10", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 244.0, 43.0, 15.0, 15.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 244.0, 80.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 369.0, 179.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 244.0, 255.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 53.0, 72.0, 185.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "If you get newline (ASCII 10), send the list. If you get return (ASCII 13) do nothing. Any other value, add to the list", + "linecount" : 3, + "patching_rect" : [ 332.0, 269.0, 320.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-16", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to open/close serial port and start/stop patch", + "linecount" : 2, + "patching_rect" : [ 271.0, 32.0, 199.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-1", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-7", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-8", 0 ], + "destination" : [ "obj-7", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-8", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 253.5, 308.0, 311.5, 308.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 2 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 311.5, 320.0, 311.5, 320.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 378.5, 200.5, 253.5, 200.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 358.5, 228.5, 253.5, 228.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 336.5, 251.5, 253.5, 251.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 253.0, 71.0, 336.5, 71.0 ] + } + + } + ] + } + + */ diff --git a/arduino-0018-windows/examples/Communication/MIDI/Midi.pde b/arduino-0018-windows/examples/Communication/MIDI/Midi.pde new file mode 100644 index 0000000..feb3e82 --- /dev/null +++ b/arduino-0018-windows/examples/Communication/MIDI/Midi.pde @@ -0,0 +1,47 @@ +/* + MIDI note player + + This sketch shows how to use the serial transmit pin (pin 1) to send MIDI note data. + If this circuit is connected to a MIDI synth, it will play + the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence. + + + The circuit: + * digital in 1 connected to MIDI jack pin 5 + * MIDI jack pin 2 connected to ground + * MIDI jack pin 4 connected to +5V through 220-ohm resistor + Attach a MIDI cable to the jack, then to a MIDI synth, and play music. + + created 13 Jun 2006 + modified 2 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/MIDI + + */ + +void setup() { + // Set MIDI baud rate: + Serial.begin(31250); +} + +void loop() { + // play notes from F#-0 (0x1E) to F#-5 (0x5A): + for (intnote = 0x1E; note < 0x5A; note ++) { + //Note on channel 1 (0x90), some note value (note), middle velocity (0x45): + noteOn(0x90, note, 0x45); + delay(100); + //Note on channel 1 (0x90), some note value (note), silent velocity (0x00): + noteOn(0x90, note, 0x00); + delay(100); + } +} + +// plays a MIDI note. Doesn't check to see that +// cmd is greater than 127, or that data values are less than 127: +void noteOn(int cmd, int pitch, int velocity) { + Serial.print(cmd, BYTE); + Serial.print(pitch, BYTE); + Serial.print(velocity, BYTE); +} + diff --git a/arduino-0018-windows/examples/Communication/MultiSerialMega/MultiSerialMega.pde b/arduino-0018-windows/examples/Communication/MultiSerialMega/MultiSerialMega.pde new file mode 100644 index 0000000..f587c63 --- /dev/null +++ b/arduino-0018-windows/examples/Communication/MultiSerialMega/MultiSerialMega.pde @@ -0,0 +1,31 @@ +/* + Mega multple serial test + + Receives from the main serial port, sends to the others. + Receives from serial port 1, sends to the main serial (Serial 0). + + This example works only on the Arduino Mega + + The circuit: + * Any serial device attached to Serial port 1 + * Serial monitor open on Serial port 0: + + created 30 Dec. 2008 + by Tom Igoe + + */ + + +void setup() { + // initialize both serial ports: + Serial.begin(9600); + Serial1.begin(9600); +} + +void loop() { + // read from port 1, send to port 0: + if (Serial1.available()) { + int inByte = Serial1.read(); + Serial.print(inByte, BYTE); + } +} diff --git a/arduino-0018-windows/examples/Communication/PhysicalPixel/PhysicalPixel.pde b/arduino-0018-windows/examples/Communication/PhysicalPixel/PhysicalPixel.pde new file mode 100644 index 0000000..b5006ec --- /dev/null +++ b/arduino-0018-windows/examples/Communication/PhysicalPixel/PhysicalPixel.pde @@ -0,0 +1,707 @@ +/* + Physical Pixel + + An example of using the Arduino board to receive data from the + computer. In this case, the Arduino boards turns on an LED when + it receives the character 'H', and turns off the LED when it + receives the character 'L'. + + The data can be sent from the Arduino serial monitor, or another + program like Processing (see code below), Flash (via a serial-net + proxy), PD, or Max/MSP. + + The circuit: + * LED connected from digital pin 13 to ground + + created 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + http://www.arduino.cc/en/Tutorial/PhysicalPixel + */ + +const int ledPin = 13; // the pin that the LED is attached to +int incomingByte; // a variable to read incoming serial data into + +void setup() { + // initialize serial communication: + Serial.begin(9600); + // initialize the LED pin as an output: + pinMode(ledPin, OUTPUT); +} + +void loop() { + // see if there's incoming serial data: + if (Serial.available() > 0) { + // read the oldest byte in the serial buffer: + incomingByte = Serial.read(); + // if it's a capital H (ASCII 72), turn on the LED: + if (incomingByte == 'H') { + digitalWrite(ledPin, HIGH); + } + // if it's an L (ASCII 76) turn off the LED: + if (incomingByte == 'L') { + digitalWrite(ledPin, LOW); + } + } +} + +/* Processing code for this example + + // mouseover serial + + // Demonstrates how to send data to the Arduino I/O board, in order to + // turn ON a light if the mouse is over a square and turn it off + // if the mouse is not. + + // created 2003-4 + // based on examples by Casey Reas and Hernando Barragan + // modified 18 Jan 2009 + // by Tom Igoe + + + import processing.serial.*; + + float boxX; + float boxY; + int boxSize = 20; + boolean mouseOverBox = false; + + Serial port; + + void setup() { + size(200, 200); + boxX = width/2.0; + boxY = height/2.0; + rectMode(RADIUS); + + // List all the available serial ports in the output pane. + // You will need to choose the port that the Arduino board is + // connected to from this list. The first port in the list is + // port #0 and the third port in the list is port #2. + println(Serial.list()); + + // Open the port that the Arduino board is connected to (in this case #0) + // Make sure to open the port at the same speed Arduino is using (9600bps) + port = new Serial(this, Serial.list()[0], 9600); + + } + + void draw() + { + background(0); + + // Test if the cursor is over the box + if (mouseX > boxX-boxSize && mouseX < boxX+boxSize && + mouseY > boxY-boxSize && mouseY < boxY+boxSize) { + mouseOverBox = true; + // draw a line around the box and change its color: + stroke(255); + fill(153); + // send an 'H' to indicate mouse is over square: + port.write('H'); + } + else { + // return the box to it's inactive state: + stroke(153); + fill(153); + // send an 'L' to turn the LED off: + port.write('L'); + mouseOverBox = false; + } + + // Draw the box + rect(boxX, boxY, boxSize, boxSize); + } + + + */ + +/* +{ + "boxes" : [ { + "box" : { + "maxclass" : "comment", + "text" : "Physical Pixel\n\nThis patch sends an ASCII H or an ASCII L out the serial port to turn on an LED attached to an Arduino board. It can also send alternating H and L characters once every second to make the LED blink.\n\ncreated 2006\nby David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 11, + "patching_rect" : [ 14.0, 35.0, 354.0, 158.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-1", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to blink every second", + "patching_rect" : [ 99.0, 251.0, 161.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-38", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 74.0, 251.0, 21.0, 21.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-39", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "p blink", + "patching_rect" : [ 74.0, 286.0, 45.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-37", + "fontname" : "Arial", + "numinlets" : 2, + "patcher" : { + "fileversion" : 1, + "rect" : [ 54.0, 94.0, 640.0, 480.0 ], + "bglocked" : 0, + "defrect" : [ 54.0, 94.0, 640.0, 480.0 ], + "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], + "openinpresentation" : 0, + "default_fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "gridonopen" : 0, + "gridsize" : [ 25.0, 25.0 ], + "gridsnaponopen" : 0, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "boxes" : [ { + "box" : { + "maxclass" : "newobj", + "text" : "* 1000", + "patching_rect" : [ 200.0, 150.0, 46.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "int" ], + "id" : "obj-12", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 200.0, 75.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "" ], + "id" : "obj-11", + "numinlets" : 0, + "comment" : "" + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 125.0, 250.0, 20.0, 20.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-10", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "metro 1000", + "patching_rect" : [ 115.0, 190.0, 69.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "bang" ], + "id" : "obj-3", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "outlet", + "patching_rect" : [ 125.0, 400.0, 25.0, 25.0 ], + "numoutlets" : 0, + "id" : "obj-2", + "numinlets" : 1, + "comment" : "" + } + + } + , { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 100.0, 25.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-1", + "numinlets" : 0, + "comment" : "" + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-3", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-1", 0 ], + "destination" : [ "obj-3", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-2", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-3", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] + } + , + "saved_object_attributes" : { + "fontface" : 0, + "fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "default_fontsize" : 10.0, + "fontname" : "Verdana", + "globalpatchername" : "" + } + + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "convert to int", + "patching_rect" : [ 154.0, 386.0, 104.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-36", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "send L if 0, H if 1", + "patching_rect" : [ 154.0, 361.0, 104.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-35", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "is it on or off?", + "patching_rect" : [ 179.0, 336.0, 95.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-34", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "atoi", + "patching_rect" : [ 279.0, 386.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "list" ], + "id" : "obj-33", + "fontname" : "Arial", + "numinlets" : 3 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "H", + "patching_rect" : [ 329.0, 361.0, 32.5, 17.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-32", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "L", + "patching_rect" : [ 279.0, 361.0, 32.5, 17.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-31", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 279.0, 336.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-25", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to turn the LED on and off", + "linecount" : 2, + "patching_rect" : [ 130.0, 205.0, 143.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-24", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 279.0, 211.0, 24.0, 24.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-23", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 381.0, 331.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 429.0, 422.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 454.0, 396.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 381.0, 422.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 403.0, 396.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 474.0, 370.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 381.0, 181.0, 21.0, 21.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 423.0, 370.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 279.0, 461.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 408.0, 181.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-39", 0 ], + "destination" : [ "obj-37", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-37", 0 ], + "destination" : [ "obj-25", 0 ], + "hidden" : 0, + "midpoints" : [ 83.5, 320.5, 288.5, 320.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-33", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-32", 0 ], + "destination" : [ "obj-33", 0 ], + "hidden" : 0, + "midpoints" : [ 338.5, 381.5, 288.5, 381.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-31", 0 ], + "destination" : [ "obj-33", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-25", 0 ], + "destination" : [ "obj-31", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-25", 1 ], + "destination" : [ "obj-32", 0 ], + "hidden" : 0, + "midpoints" : [ 310.0, 358.0, 338.5, 358.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-25", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 432.5, 389.0, 367.0, 389.0, 367.0, 411.0, 288.5, 411.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 412.5, 417.0, 288.5, 417.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 390.5, 450.0, 288.5, 450.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 390.5, 322.0, 390.5, 322.0 ] + } + + } + ] + } + + */ diff --git a/arduino-0018-windows/examples/Communication/SerialCallResponse/SerialCallResponse.pde b/arduino-0018-windows/examples/Communication/SerialCallResponse/SerialCallResponse.pde new file mode 100644 index 0000000..809bbf8 --- /dev/null +++ b/arduino-0018-windows/examples/Communication/SerialCallResponse/SerialCallResponse.pde @@ -0,0 +1,1193 @@ +/* + Serial Call and Response + Language: Wiring/Arduino + + This program sends an ASCII A (byte of value 65) on startup + and repeats that until it gets some data in. + Then it waits for a byte in the serial port, and + sends three sensor values whenever it gets a byte in. + + Thanks to Greg Shakar and Scott Fitzgerald for the improvements + + The circuit: + * potentiometers attached to analog inputs 0 and 1 + * pushbutton attached to digital I/O 2 + + + http://www.arduino.cc/en/Tutorial/SerialCallResponse + + Created 26 Sept. 2005 + by Tom Igoe + Modified 14 April 2009 + by Tom Igoe and Scott Fitzgerald + */ + +int firstSensor = 0; // first analog sensor +int secondSensor = 0; // second analog sensor +int thirdSensor = 0; // digital sensor +int inByte = 0; // incoming serial byte + +void setup() +{ + // start serial port at 9600 bps: + Serial.begin(9600); + pinMode(2, INPUT); // digital sensor is on digital pin 2 + establishContact(); // send a byte to establish contact until receiver responds +} + +void loop() +{ + // if we get a valid byte, read analog ins: + if (Serial.available() > 0) { + // get incoming byte: + inByte = Serial.read(); + // read first analog input, divide by 4 to make the range 0-255: + firstSensor = analogRead(0)/4; + // delay 10ms to let the ADC recover: + delay(10); + // read second analog input, divide by 4 to make the range 0-255: + secondSensor = analogRead(1)/4; + // read switch, map it to 0 or 255L + thirdSensor = map(digitalRead(2), 0, 1, 0, 255); + // send sensor values: + Serial.print(firstSensor, BYTE); + Serial.print(secondSensor, BYTE); + Serial.print(thirdSensor, BYTE); + } +} + +void establishContact() { + while (Serial.available() <= 0) { + Serial.print('A', BYTE); // send a capital A + delay(300); + } +} + +/* +Processing sketch to run with this example: + +import processing.serial.*; + +int bgcolor; // Background color +int fgcolor; // Fill color +Serial myPort; // The serial port +int[] serialInArray = new int[3]; // Where we'll put what we receive +int serialCount = 0; // A count of how many bytes we receive +int xpos, ypos; // Starting position of the ball +boolean firstContact = false; // Whether we've heard from the microcontroller + +void setup() { + size(256, 256); // Stage size + noStroke(); // No border on the next thing drawn + + // Set the starting position of the ball (middle of the stage) + xpos = width/2; + ypos = height/2; + + // Print a list of the serial ports, for debugging purposes: + println(Serial.list()); + + // I know that the first port in the serial list on my mac + // is always my FTDI adaptor, so I open Serial.list()[0]. + // On Windows machines, this generally opens COM1. + // Open whatever port is the one you're using. + String portName = Serial.list()[0]; + myPort = new Serial(this, portName, 9600); +} + +void draw() { + background(bgcolor); + fill(fgcolor); + // Draw the shape + ellipse(xpos, ypos, 20, 20); +} + +void serialEvent(Serial myPort) { + // read a byte from the serial port: + int inByte = myPort.read(); + // if this is the first byte received, and it's an A, + // clear the serial buffer and note that you've + // had first contact from the microcontroller. + // Otherwise, add the incoming byte to the array: + if (firstContact == false) { + if (inByte == 'A') { + myPort.clear(); // clear the serial port buffer + firstContact = true; // you've had first contact from the microcontroller + myPort.write('A'); // ask for more + } + } + else { + // Add the latest byte from the serial port to array: + serialInArray[serialCount] = inByte; + serialCount++; + + // If we have 3 bytes: + if (serialCount > 2 ) { + xpos = serialInArray[0]; + ypos = serialInArray[1]; + fgcolor = serialInArray[2]; + + // print the values (for debugging purposes only): + println(xpos + "\t" + ypos + "\t" + fgcolor); + + // Send a capital A to request new sensor readings: + myPort.write('A'); + // Reset serialCount: + serialCount = 0; + } + } +} +*/ + +/* +Max/MSP version 5 patch to run with this example: + +{ + "boxes" : [ { + "box" : { + "maxclass" : "message", + "text" : "65", + "patching_rect" : [ 339.0, 466.0, 32.5, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 1", + "patching_rect" : [ 339.0, 437.0, 36.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-6", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Serial Call-Response \n\nSends a byte out the serial port, and reads 3 bytes in. Sets foregound color, xpos, and ypos of a circle using the values returned from the serial port. \n\nNote: This patch assumes that the device on the other end of the serial port is going to send a single byte of value 65 (ASCII A) on startup. The sketch waits for that byte, then sends an ASCII A whenever it wants more data. \n\ncreated 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 11, + "patching_rect" : [ 404.0, 52.0, 464.0, 158.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "trigger (or [t]) forces right-left conventions. All the drawing and processing will happen before Max requests new values. When this trigger fires, it sends an ASCII A to ask Arduino for new values.", + "linecount" : 3, + "patching_rect" : [ 239.0, 505.0, 425.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-65", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "reinitializes the gates when turned on and off", + "linecount" : 2, + "patching_rect" : [ 170.0, 370.0, 135.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-64", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "checks for the ascii value of \"A\" to begin cominucation. After initial communication is made, this block shuts down.", + "linecount" : 3, + "patching_rect" : [ 460.0, 355.0, 233.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-63", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "p \"draw the circle\"", + "patching_rect" : [ 217.0, 645.0, 269.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-62", + "fontname" : "Verdana", + "numinlets" : 3, + "patcher" : { + "fileversion" : 1, + "rect" : [ 54.0, 94.0, 640.0, 480.0 ], + "bglocked" : 0, + "defrect" : [ 54.0, 94.0, 640.0, 480.0 ], + "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], + "openinpresentation" : 0, + "default_fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "gridonopen" : 0, + "gridsize" : [ 25.0, 25.0 ], + "gridsnaponopen" : 0, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "boxes" : [ { + "box" : { + "maxclass" : "message", + "text" : "frgb 255 255 255", + "patching_rect" : [ 375.0, 150.0, 98.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-47", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "frgb 0 0 0", + "patching_rect" : [ 275.0, 125.0, 59.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-46", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 255 0", + "patching_rect" : [ 300.0, 100.0, 66.0, 21.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-45", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "pack 0 0 0 0", + "patching_rect" : [ 50.0, 125.0, 180.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-43", + "fontname" : "Verdana", + "numinlets" : 4 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 200.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-42", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 75.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-41", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "clear, paintoval $1 $2 $3 $4", + "patching_rect" : [ 50.0, 150.0, 152.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-40", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 57.5, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-58", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 120.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-59", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 300.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-60", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "outlet", + "patching_rect" : [ 228.333344, 228.0, 25.0, 25.0 ], + "numoutlets" : 0, + "id" : "obj-61", + "numinlets" : 1, + "comment" : "" + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-47", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-46", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-40", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-60", 0 ], + "destination" : [ "obj-45", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-42", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-43", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-41", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-43", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-42", 0 ], + "destination" : [ "obj-43", 3 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-41", 0 ], + "destination" : [ "obj-43", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 1 ], + "destination" : [ "obj-47", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 0 ], + "destination" : [ "obj-46", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-43", 0 ], + "destination" : [ "obj-40", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] + } +, + "saved_object_attributes" : { + "fontface" : 0, + "fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "default_fontsize" : 10.0, + "fontname" : "Verdana", + "globalpatchername" : "" + } + + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "0", + "patching_rect" : [ 310.0, 378.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-57", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "!- 1", + "patching_rect" : [ 385.0, 436.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-55", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 1", + "patching_rect" : [ 385.0, 355.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-54", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 385.0, 405.0, 20.0, 20.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-53", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 0", + "patching_rect" : [ 194.0, 455.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-50", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 65", + "patching_rect" : [ 385.0, 380.0, 43.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-48", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "lcd", + "patching_rect" : [ 217.0, 695.0, 256.0, 256.0 ], + "numoutlets" : 4, + "outlettype" : [ "list", "list", "int", "" ], + "id" : "obj-39", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "t 65 l", + "patching_rect" : [ 194.0, 504.0, 42.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-35", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val3", + "patching_rect" : [ 535.0, 604.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-1", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 467.0, 604.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-3", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val2", + "patching_rect" : [ 410.0, 605.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-18", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val1", + "patching_rect" : [ 282.0, 605.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-20", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 342.0, 605.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-22", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 217.0, 605.0, 55.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-23", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "unpack 0 0 0", + "patching_rect" : [ 217.0, 570.0, 269.0, 21.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "int", "int", "int" ], + "id" : "obj-29", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "zl group 3", + "patching_rect" : [ 194.0, 480.0, 71.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-31", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 312.0, 200.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 360.0, 291.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 385.0, 265.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 312.0, 291.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 334.0, 265.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 405.0, 239.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 229.0, 155.0, 22.0, 22.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 229.0, 200.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 354.0, 239.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 229.0, 315.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 13.0, 192.0, 210.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 256.0, 163.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 363.5, 260.5, 238.5, 260.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 343.5, 288.5, 238.5, 288.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 321.5, 311.5, 238.5, 311.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 238.5, 191.0, 321.5, 191.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 2 ], + "destination" : [ "obj-3", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 0 ], + "destination" : [ "obj-23", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 1 ], + "destination" : [ "obj-22", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-50", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-50", 0 ], + "destination" : [ "obj-31", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-48", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-50", 0 ], + "hidden" : 0, + "midpoints" : [ 394.5, 426.0, 203.5, 426.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-54", 1 ], + "hidden" : 0, + "midpoints" : [ 238.5, 342.0, 429.5, 342.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-54", 0 ], + "destination" : [ "obj-48", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-62", 0 ], + "destination" : [ "obj-39", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-3", 0 ], + "destination" : [ "obj-62", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-22", 0 ], + "destination" : [ "obj-62", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-62", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-55", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-55", 0 ], + "destination" : [ "obj-54", 0 ], + "hidden" : 0, + "midpoints" : [ 394.5, 459.0, 453.0, 459.0, 453.0, 351.0, 394.5, 351.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-57", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-57", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ 319.5, 401.0, 394.5, 401.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 203.5, 542.0, 167.0, 542.0, 167.0, 300.0, 238.5, 300.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 1 ], + "destination" : [ "obj-29", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-31", 0 ], + "destination" : [ "obj-35", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ 394.5, 431.5, 348.5, 431.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] +} + + +*/ diff --git a/arduino-0018-windows/examples/Communication/SerialCallResponseASCII/SerialCallResponseASCII.pde b/arduino-0018-windows/examples/Communication/SerialCallResponseASCII/SerialCallResponseASCII.pde new file mode 100644 index 0000000..7c2528d --- /dev/null +++ b/arduino-0018-windows/examples/Communication/SerialCallResponseASCII/SerialCallResponseASCII.pde @@ -0,0 +1,1267 @@ +/* + Serial Call and Response in ASCII + Language: Wiring/Arduino + + This program sends an ASCII A (byte of value 65) on startup + and repeats that until it gets some data in. + Then it waits for a byte in the serial port, and + sends three ASCII-encoded, comma-separated sensor values, + truncated by a linefeed and carriage return, + whenever it gets a byte in. + + Thanks to Greg Shakar and Scott Fitzgerald for the improvements + + The circuit: + * potentiometers attached to analog inputs 0 and 1 + * pushbutton attached to digital I/O 2 + + + http://www.arduino.cc/en/Tutorial/SerialCallResponseASCII + + Created 26 Sept. 2005 + by Tom Igoe + Modified 14 April 2009 + by Tom Igoe and Scott Fitzgerald + */ + +int firstSensor = 0; // first analog sensor +int secondSensor = 0; // second analog sensor +int thirdSensor = 0; // digital sensor +int inByte = 0; // incoming serial byte + +void setup() +{ + // start serial port at 9600 bps: + Serial.begin(9600); + pinMode(2, INPUT); // digital sensor is on digital pin 2 + establishContact(); // send a byte to establish contact until receiver responds +} + +void loop() +{ + // if we get a valid byte, read analog ins: + if (Serial.available() > 0) { + // get incoming byte: + inByte = Serial.read(); + // read first analog input, divide by 4 to make the range 0-255: + firstSensor = analogRead(0)/4; + // delay 10ms to let the ADC recover: + delay(10); + // read second analog input, divide by 4 to make the range 0-255: + secondSensor = analogRead(1)/4; + // read switch, map it to 0 or 255L + thirdSensor = map(digitalRead(2), 0, 1, 0, 255); + // send sensor values: + Serial.print(firstSensor, DEC); + Serial.print(","); + Serial.print(secondSensor, DEC); + Serial.print(","); + Serial.println(thirdSensor, DEC); + } +} + +void establishContact() { + while (Serial.available() <= 0) { + Serial.println("0,0,0"); // send an initial string + delay(300); + } +} + + +/* +Processing code to run with this example: + + +import processing.serial.*; // import the Processing serial library +Serial myPort; // The serial port + +float bgcolor; // Background color +float fgcolor; // Fill color +float xpos, ypos; // Starting position of the ball + +void setup() { + size(640,480); + + // List all the available serial ports + println(Serial.list()); + + // I know that the first port in the serial list on my mac + // is always my Arduino module, so I open Serial.list()[0]. + // Change the 0 to the appropriate number of the serial port + // that your microcontroller is attached to. + myPort = new Serial(this, Serial.list()[0], 9600); + + // read bytes into a buffer until you get a linefeed (ASCII 10): + myPort.bufferUntil('\n'); + + // draw with smooth edges: + smooth(); +} + +void draw() { + background(bgcolor); + fill(fgcolor); + // Draw the shape + ellipse(xpos, ypos, 20, 20); +} + +// serialEvent method is run automatically by the Processing applet +// whenever the buffer reaches the byte value set in the bufferUntil() +// method in the setup(): + +void serialEvent(Serial myPort) { + // read the serial buffer: + String myString = myPort.readStringUntil('\n'); + // if you got any bytes other than the linefeed: + myString = trim(myString); + + // split the string at the commas + // and convert the sections into integers: + int sensors[] = int(split(myString, ',')); + + // print out the values you got: + for (int sensorNum = 0; sensorNum < sensors.length; sensorNum++) { + print("Sensor " + sensorNum + ": " + sensors[sensorNum] + "\t"); + } + // add a linefeed after all the sensor values are printed: + println(); + if (sensors.length > 1) { + xpos = map(sensors[0], 0,1023,0,width); + ypos = map(sensors[1], 0,1023,0,height); + fgcolor = sensors[2]; + } + // send a byte to ask for more data: + myPort.write("A"); + } + +*/ + +/* +{ + "boxes" : [ { + "box" : { + "maxclass" : "newobj", + "text" : "fromsymbol", + "patching_rect" : [ 265.0, 585.0, 74.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-7", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "itoa", + "patching_rect" : [ 265.0, 562.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-8", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 3 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "zl group", + "patching_rect" : [ 265.0, 539.0, 53.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-4", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "select 10 13", + "patching_rect" : [ 209.0, 501.0, 75.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-10", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "65", + "patching_rect" : [ 354.0, 481.0, 32.5, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 1", + "patching_rect" : [ 354.0, 452.0, 36.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-6", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Serial Call-Response ASCII \n\nSends a byte out the serial port, and reads 3 ASCII enoded, comma separated in, truncated by a linefeed. It then sets foregound color, xpos, and ypos of a circle using the values returned from the serial port. \n\nNote: This patch assumes that the device on the other end of the serial port is going to send a single byte of value 65 (ASCII A) on startup. The sketch waits for that byte, then sends an ASCII A whenever it wants more data. \n\ncreated 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 12, + "patching_rect" : [ 401.0, 67.0, 540.0, 172.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "trigger (or [t]) forces right-left conventions. All the drawing and processing will happen before Max requests new values. When this trigger fires, it sends an ASCII A to ask Arduino for new values.", + "linecount" : 3, + "patching_rect" : [ 254.0, 625.0, 425.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-65", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "reinitializes the gates when turned on and off", + "linecount" : 2, + "patching_rect" : [ 185.0, 385.0, 135.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-64", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "checks for the ascii value of newline to begin communication. After initial communication is made, this block shuts down.", + "linecount" : 3, + "patching_rect" : [ 475.0, 370.0, 252.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-63", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "p \"draw the circle\"", + "patching_rect" : [ 232.0, 765.0, 269.0, 19.0 ], + "numoutlets" : 1, + "fontsize" : 10.0, + "outlettype" : [ "" ], + "id" : "obj-62", + "fontname" : "Verdana", + "numinlets" : 3, + "patcher" : { + "fileversion" : 1, + "rect" : [ 54.0, 94.0, 640.0, 480.0 ], + "bglocked" : 0, + "defrect" : [ 54.0, 94.0, 640.0, 480.0 ], + "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], + "openinpresentation" : 0, + "default_fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "gridonopen" : 0, + "gridsize" : [ 25.0, 25.0 ], + "gridsnaponopen" : 0, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "boxes" : [ { + "box" : { + "maxclass" : "message", + "text" : "frgb 255 255 255", + "patching_rect" : [ 375.0, 150.0, 98.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-47", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "frgb 0 0 0", + "patching_rect" : [ 275.0, 125.0, 59.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-46", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 255 0", + "patching_rect" : [ 300.0, 100.0, 66.0, 21.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-45", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "pack 0 0 0 0", + "patching_rect" : [ 50.0, 125.0, 180.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-43", + "fontname" : "Verdana", + "numinlets" : 4 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 200.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-42", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "+ 10", + "patching_rect" : [ 75.0, 100.0, 40.0, 21.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-41", + "fontname" : "Verdana", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "clear, paintoval $1 $2 $3 $4", + "patching_rect" : [ 50.0, 150.0, 152.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 11.595187, + "outlettype" : [ "" ], + "id" : "obj-40", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 57.5, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-58", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 120.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-59", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "inlet", + "patching_rect" : [ 300.0, 40.0, 25.0, 25.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-60", + "numinlets" : 0, + "comment" : "" + } + + } +, { + "box" : { + "maxclass" : "outlet", + "patching_rect" : [ 228.333344, 228.0, 25.0, 25.0 ], + "numoutlets" : 0, + "id" : "obj-61", + "numinlets" : 1, + "comment" : "" + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-43", 0 ], + "destination" : [ "obj-40", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 0 ], + "destination" : [ "obj-46", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-45", 1 ], + "destination" : [ "obj-47", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-41", 0 ], + "destination" : [ "obj-43", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-42", 0 ], + "destination" : [ "obj-43", 3 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-43", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-58", 0 ], + "destination" : [ "obj-41", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-43", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-59", 0 ], + "destination" : [ "obj-42", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-60", 0 ], + "destination" : [ "obj-45", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-40", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-46", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-47", 0 ], + "destination" : [ "obj-61", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] + } +, + "saved_object_attributes" : { + "fontface" : 0, + "fontsize" : 10.0, + "default_fontface" : 0, + "default_fontname" : "Verdana", + "default_fontsize" : 10.0, + "fontname" : "Verdana", + "globalpatchername" : "" + } + + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "0", + "patching_rect" : [ 325.0, 393.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-57", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "!- 1", + "patching_rect" : [ 400.0, 451.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-55", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 1", + "patching_rect" : [ 400.0, 370.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-54", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 400.0, 420.0, 20.0, 20.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-53", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "gate 1 0", + "patching_rect" : [ 209.0, 470.0, 54.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-50", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "sel 10", + "patching_rect" : [ 400.0, 393.0, 43.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "bang", "" ], + "id" : "obj-48", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "lcd", + "patching_rect" : [ 232.0, 815.0, 256.0, 256.0 ], + "numoutlets" : 4, + "outlettype" : [ "list", "list", "int", "" ], + "id" : "obj-39", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "t 65 l", + "patching_rect" : [ 209.0, 624.0, 42.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-35", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val3", + "patching_rect" : [ 553.0, 725.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-1", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 482.0, 725.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-3", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val2", + "patching_rect" : [ 425.0, 725.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-18", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "val1", + "patching_rect" : [ 297.0, 725.0, 37.0, 21.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-20", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 357.0, 725.0, 56.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-22", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 232.0, 725.0, 55.0, 21.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-23", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "unpack 0 0 0 0 0", + "patching_rect" : [ 232.0, 690.0, 269.0, 21.0 ], + "numoutlets" : 5, + "fontsize" : 12.0, + "outlettype" : [ "int", "int", "int", "int", "int" ], + "id" : "obj-29", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 327.0, 215.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 375.0, 306.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 400.0, 280.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 327.0, 306.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 349.0, 280.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 420.0, 254.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 244.0, 170.0, 22.0, 22.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 244.0, 215.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 369.0, 254.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } +, { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 244.0, 330.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 28.0, 207.0, 210.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } +, { + "box" : { + "maxclass" : "comment", + "text" : "Click to start", + "patching_rect" : [ 271.0, 178.0, 117.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-54", 0 ], + "destination" : [ "obj-48", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-48", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ 409.5, 446.5, 363.5, 446.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-6", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 218.5, 656.0, 182.0, 656.0, 182.0, 315.0, 253.5, 315.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-57", 0 ], + "destination" : [ "obj-53", 0 ], + "hidden" : 0, + "midpoints" : [ 334.5, 416.0, 409.5, 416.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-57", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-55", 0 ], + "destination" : [ "obj-54", 0 ], + "hidden" : 0, + "midpoints" : [ 409.5, 474.0, 468.0, 474.0, 468.0, 366.0, 409.5, 366.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-55", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-62", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-22", 0 ], + "destination" : [ "obj-62", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-3", 0 ], + "destination" : [ "obj-62", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-62", 0 ], + "destination" : [ "obj-39", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-54", 1 ], + "hidden" : 0, + "midpoints" : [ 253.5, 357.0, 444.5, 357.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-53", 0 ], + "destination" : [ "obj-50", 0 ], + "hidden" : 0, + "midpoints" : [ 409.5, 441.0, 218.5, 441.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-50", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 253.5, 206.0, 336.5, 206.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 336.5, 326.5, 253.5, 326.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 358.5, 303.5, 253.5, 303.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 378.5, 275.5, 253.5, 275.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-10", 2 ], + "destination" : [ "obj-4", 0 ], + "hidden" : 0, + "midpoints" : [ 274.5, 542.0, 274.5, 542.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-4", 0 ], + "hidden" : 0, + "midpoints" : [ 218.5, 529.5, 274.5, 529.5 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-4", 0 ], + "destination" : [ "obj-8", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-8", 0 ], + "destination" : [ "obj-7", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-7", 0 ], + "destination" : [ "obj-35", 0 ], + "hidden" : 0, + "midpoints" : [ 274.5, 614.0, 218.5, 614.0 ] + } + + } +, { + "patchline" : { + "source" : [ "obj-50", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 0 ], + "destination" : [ "obj-23", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-35", 1 ], + "destination" : [ "obj-29", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 4 ], + "destination" : [ "obj-3", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } +, { + "patchline" : { + "source" : [ "obj-29", 2 ], + "destination" : [ "obj-22", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + ] +} + +*/ diff --git a/arduino-0018-windows/examples/Communication/VirtualColorMixer/VirtualColorMixer.pde b/arduino-0018-windows/examples/Communication/VirtualColorMixer/VirtualColorMixer.pde new file mode 100644 index 0000000..f23f147 --- /dev/null +++ b/arduino-0018-windows/examples/Communication/VirtualColorMixer/VirtualColorMixer.pde @@ -0,0 +1,697 @@ +/* + This example reads three analog sensors (potentiometers are easiest) + and sends their values serially. The Processing and Max/MSP programs at the bottom + take those three values and use them to change the background color of the screen. + + The circuit: + * potentiometers attached to analog inputs 0, 1, and 2 + + http://www.arduino.cc/en/Tutorial/VirtualColorMixer + + created 2 Dec 2006 + by David A. Mellis + modified 14 Apr 2009 + by Tom Igoe and Scott Fitzgerald + + */ + +const int redPin = 0; // sensor to control red color +const int greenPin = 1; // sensor to control green color +const int bluePin = 2; // sensor to control blue color + +void setup() +{ + Serial.begin(9600); +} + +void loop() +{ + Serial.print(analogRead(redPin)); + Serial.print(","); + Serial.print(analogRead(greenPin)); + Serial.print(","); + Serial.println(analogRead(bluePin)); +} + +/* Processing code for this example + + + import processing.serial.*; + + float redValue = 0; // red value + float greenValue = 0; // green value + float blueValue = 0; // blue value + + Serial myPort; + + void setup() { + size(200, 200); + + // List all the available serial ports + println(Serial.list()); + // I know that the first port in the serial list on my mac + // is always my Arduino, so I open Serial.list()[0]. + // Open whatever port is the one you're using. + myPort = new Serial(this, Serial.list()[0], 9600); + // don't generate a serialEvent() unless you get a newline character: + myPort.bufferUntil('\n'); + } + + void draw() { + // set the background color with the color values: + background(redValue, greenValue, blueValue); + } + + void serialEvent(Serial myPort) { + // get the ASCII string: + String inString = myPort.readStringUntil('\n'); + + if (inString != null) { + // trim off any whitespace: + inString = trim(inString); + // split the string on the commas and convert the + // resulting substrings into an integer array: + float[] colors = float(split(inString, ",")); + // if the array has at least three elements, you know + // you got the whole thing. Put the numbers in the + // color variables: + if (colors.length >=3) { + // map them to the range 0-255: + redValue = map(colors[0], 0, 1023, 0, 255); + greenValue = map(colors[1], 0, 1023, 0, 255); + blueValue = map(colors[2], 0, 1023, 0, 255); + } + } + } + */ + +/* Max/MSP patch for this example + { + "boxes" : [ { + "box" : { + "maxclass" : "newobj", + "text" : "/ 4", + "patching_rect" : [ 448.0, 502.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-25", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "/ 4", + "patching_rect" : [ 398.0, 502.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-24", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "/ 4", + "patching_rect" : [ 348.0, 502.0, 32.5, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-23", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Virtual color mixer\n\nThis patch takes a string, containing three comma-separated ASCII formatted numbers from 0 to 1023, with a carriage return and linefeed at the end. It converts the string to three integers and uses them to set the background color.\n\n created 2 Dec 2006\n by David A. Mellis\nmodified 14 Apr 2009\nby Scott Fitzgerald and Tom Igoe", + "linecount" : 11, + "patching_rect" : [ 524.0, 51.0, 398.0, 158.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-32", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 0 1", + "patching_rect" : [ 372.0, 125.0, 62.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-30", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to close the serial port", + "patching_rect" : [ 457.0, 276.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-26", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "click here to open the serial port", + "patching_rect" : [ 457.0, 250.0, 206.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-27", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "close", + "patching_rect" : [ 372.0, 276.0, 39.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-21", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "port a", + "patching_rect" : [ 394.0, 250.0, 41.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-19", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click here to get a list of serial ports", + "patching_rect" : [ 457.0, 224.0, 207.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-2", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert ASCII to symbol", + "patching_rect" : [ 424.0, 423.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-4", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Convert integer to ASCII", + "patching_rect" : [ 424.0, 400.0, 147.0, 20.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-5", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "fromsymbol", + "patching_rect" : [ 347.0, 423.0, 74.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-7", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "itoa", + "patching_rect" : [ 347.0, 400.0, 46.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "int" ], + "id" : "obj-8", + "fontname" : "Arial", + "color" : [ 1.0, 0.890196, 0.090196, 1.0 ], + "numinlets" : 3 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "zl group", + "patching_rect" : [ 347.0, 377.0, 53.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "", "" ], + "id" : "obj-9", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "select 10 13", + "patching_rect" : [ 289.0, 326.0, 77.0, 20.0 ], + "numoutlets" : 3, + "fontsize" : 12.0, + "outlettype" : [ "bang", "bang", "" ], + "id" : "obj-10", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "toggle", + "patching_rect" : [ 289.0, 88.0, 15.0, 15.0 ], + "numoutlets" : 1, + "outlettype" : [ "int" ], + "id" : "obj-11", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "qmetro 10", + "patching_rect" : [ 289.0, 125.0, 65.0, 20.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "bang" ], + "id" : "obj-12", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "message", + "text" : "print", + "patching_rect" : [ 414.0, 224.0, 36.0, 18.0 ], + "numoutlets" : 1, + "fontsize" : 12.0, + "outlettype" : [ "" ], + "id" : "obj-13", + "fontname" : "Arial", + "numinlets" : 2 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "serial a 9600", + "patching_rect" : [ 289.0, 300.0, 84.0, 20.0 ], + "numoutlets" : 2, + "fontsize" : 12.0, + "outlettype" : [ "int", "" ], + "id" : "obj-14", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Read serial input buffer every 10 milliseconds", + "linecount" : 2, + "patching_rect" : [ 98.0, 117.0, 185.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-15", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "If you get newline (ASCII 10), send the list. If you get return (ASCII 13) do nothing. Any other value, add to the list", + "linecount" : 3, + "patching_rect" : [ 377.0, 314.0, 320.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-16", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Click to open/close serial port and start/stop patch", + "linecount" : 2, + "patching_rect" : [ 316.0, 77.0, 199.0, 34.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-17", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "bgcolor 0 0 0", + "patching_rect" : [ 348.0, 585.0, 169.0, 19.0 ], + "numoutlets" : 0, + "fontsize" : 10.0, + "id" : "obj-6", + "fontname" : "Verdana", + "numinlets" : 4 + } + + } + , { + "box" : { + "maxclass" : "newobj", + "text" : "unpack 0 0 0 0 0", + "patching_rect" : [ 347.0, 470.0, 119.0, 19.0 ], + "numoutlets" : 5, + "fontsize" : 10.0, + "outlettype" : [ "int", "int", "int", "int", "int" ], + "id" : "obj-20", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 448.0, 535.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-18", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 398.0, 535.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-1", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "number", + "patching_rect" : [ 348.0, 535.0, 50.0, 19.0 ], + "numoutlets" : 2, + "fontsize" : 10.0, + "outlettype" : [ "int", "bang" ], + "id" : "obj-22", + "fontname" : "Verdana", + "numinlets" : 1 + } + + } + , { + "box" : { + "maxclass" : "comment", + "text" : "Here's the numbers from Arduino's analog input", + "linecount" : 3, + "patching_rect" : [ 198.0, 484.0, 138.0, 48.0 ], + "numoutlets" : 0, + "fontsize" : 12.0, + "id" : "obj-3", + "fontname" : "Arial", + "numinlets" : 1 + } + + } + ], + "lines" : [ { + "patchline" : { + "source" : [ "obj-18", 0 ], + "destination" : [ "obj-6", 2 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-1", 0 ], + "destination" : [ "obj-6", 1 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-22", 0 ], + "destination" : [ "obj-6", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-25", 0 ], + "destination" : [ "obj-18", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-20", 4 ], + "destination" : [ "obj-25", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-20", 2 ], + "destination" : [ "obj-24", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-24", 0 ], + "destination" : [ "obj-1", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-23", 0 ], + "destination" : [ "obj-22", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-20", 0 ], + "destination" : [ "obj-23", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-8", 0 ], + "destination" : [ "obj-7", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-14", 0 ], + "destination" : [ "obj-10", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-12", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-12", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-13", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 423.5, 245.5, 298.5, 245.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-19", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 403.5, 273.5, 298.5, 273.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-21", 0 ], + "destination" : [ "obj-14", 0 ], + "hidden" : 0, + "midpoints" : [ 381.5, 296.5, 298.5, 296.5 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 0 ], + "destination" : [ "obj-21", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-30", 1 ], + "destination" : [ "obj-19", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-11", 0 ], + "destination" : [ "obj-30", 0 ], + "hidden" : 0, + "midpoints" : [ 298.0, 116.0, 381.5, 116.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-7", 0 ], + "destination" : [ "obj-20", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-9", 0 ], + "destination" : [ "obj-8", 0 ], + "hidden" : 0, + "midpoints" : [ ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 0 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 298.5, 353.0, 356.5, 353.0 ] + } + + } + , { + "patchline" : { + "source" : [ "obj-10", 2 ], + "destination" : [ "obj-9", 0 ], + "hidden" : 0, + "midpoints" : [ 356.5, 365.0, 356.5, 365.0 ] + } + + } + ] + } + + */ diff --git a/arduino-0018-windows/examples/Control/Arrays/Arrays.pde b/arduino-0018-windows/examples/Control/Arrays/Arrays.pde new file mode 100644 index 0000000..d9d9837 --- /dev/null +++ b/arduino-0018-windows/examples/Control/Arrays/Arrays.pde @@ -0,0 +1,55 @@ +/* + Arrays + + Demonstrates the use of an array to hold pin numbers + in order to iterate over the pins in a sequence. + Lights multiple LEDs in sequence, then in reverse. + + Unlike the For Loop tutorial, where the pins have to be + contiguous, here the pins can be in any random order. + + The circuit: + * LEDs from pins 2 through 7 to ground + + created 2006 + by David A. Mellis + modified 5 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/Array + */ + +int timer = 100; // The higher the number, the slower the timing. +int ledPins[] = { + 2, 7, 4, 6, 5, 3 }; // an array of pin numbers to which LEDs are attached +int pinCount = 6; // the number of pins (i.e. the length of the array) + +void setup() { + int thisPin; + // the array elements are numbered from 0 to (pinCount - 1). + // use a for loop to initialize each pin as an output: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + pinMode(ledPins[thisPin], OUTPUT); + } +} + +void loop() { + // loop from the lowest pin to the highest: + for (int thisPin = 0; thisPin < pinCount; thisPin++) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delay(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + + } + + // loop from the highest pin to the lowest: + for (int thisPin = pinCount - 1; thisPin >= 0; thisPin--) { + // turn the pin on: + digitalWrite(ledPins[thisPin], HIGH); + delay(timer); + // turn the pin off: + digitalWrite(ledPins[thisPin], LOW); + } +} diff --git a/arduino-0018-windows/examples/Control/ForLoopIteration/ForLoopIteration.pde b/arduino-0018-windows/examples/Control/ForLoopIteration/ForLoopIteration.pde new file mode 100644 index 0000000..4fd745d --- /dev/null +++ b/arduino-0018-windows/examples/Control/ForLoopIteration/ForLoopIteration.pde @@ -0,0 +1,45 @@ +/* + For Loop Iteration + + Demonstrates the use of a for() loop. + Lights multiple LEDs in sequence, then in reverse. + + The circuit: + * LEDs from pins 2 through 7 to ground + + created 2006 + by David A. Mellis + modified 5 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/ForLoop + */ + +int timer = 100; // The higher the number, the slower the timing. + +void setup() { + // use a for loop to initialize each pin as an output: + for (int thisPin = 2; thisPin < 8; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // loop from the lowest pin to the highest: + for (int thisPin = 2; thisPin < 8; thisPin++) { + // turn the pin on: + digitalWrite(thisPin, HIGH); + delay(timer); + // turn the pin off: + digitalWrite(thisPin, LOW); + } + + // loop from the highest pin to the lowest: + for (int thisPin = 7; thisPin >= 2; thisPin--) { + // turn the pin on: + digitalWrite(thisPin, HIGH); + delay(timer); + // turn the pin off: + digitalWrite(thisPin, LOW); + } +} diff --git a/arduino-0018-windows/examples/Control/IfStatementConditional/IfStatementConditional.pde b/arduino-0018-windows/examples/Control/IfStatementConditional/IfStatementConditional.pde new file mode 100644 index 0000000..a763ae5 --- /dev/null +++ b/arduino-0018-windows/examples/Control/IfStatementConditional/IfStatementConditional.pde @@ -0,0 +1,53 @@ +/* + Conditionals - If statement + + This example demonstrates the use of if() statements. + It reads the state of a potentiometer (an analog input) and turns on an LED + only if the LED goes above a certain threshold level. It prints the analog value + regardless of the level. + + The circuit: + * potentiometer connected to analog pin 0. + Center pin of the potentiometer goes to the analog pin. + side pins of the potentiometer go to +5V and ground + * LED connected from digital pin 13 to ground + + * Note: On most Arduino boards, there is already an LED on the board + connected to pin 13, so you don't need any extra components for this example. + + created 17 Jan 2009 + by Tom Igoe + + http://arduino.cc/en/Tutorial/ + + */ + +// These constants won't change: +const int analogPin = 0; // pin that the sensor is attached to +const int ledPin = 13; // pin that the LED is attached to +const int threshold = 400; // an arbitrary threshold level that's in the range of the analog input + +void setup() { + // initialize the LED pin as an output: + pinMode(ledPin, OUTPUT); + // initialize serial communications: + Serial.begin(9600); +} + +void loop() { + // read the value of the potentiometer: + int analogValue = analogRead(analogPin); + + // if the analog value is high enough, turn on the LED: + if (analogValue > threshold) { + digitalWrite(ledPin, HIGH); + } + else { + digitalWrite(ledPin,LOW); + } + + // print the analog value: + Serial.println(analogValue, DEC); + +} + diff --git a/arduino-0018-windows/examples/Control/WhileStatementConditional/WhileStatementConditional.pde b/arduino-0018-windows/examples/Control/WhileStatementConditional/WhileStatementConditional.pde new file mode 100644 index 0000000..0500479 --- /dev/null +++ b/arduino-0018-windows/examples/Control/WhileStatementConditional/WhileStatementConditional.pde @@ -0,0 +1,86 @@ +/* + Conditionals - while statement + + This example demonstrates the use of while() statements. + + While the pushbutton is pressed, the sketch runs the calibration routine. + The sensor readings during the while loop define the minimum and maximum + of expected values from the photo resistor. + + This is a variation on the calibrate example. + + The circuit: + * photo resistor connected from +5V to analog in pin 0 + * 10K resistor connected from ground to analog in pin 0 + * LED connected from digital pin 9 to ground through 220 ohm resistor + * pushbutton attached from pin 2 to +5V + * 10K resistor attached from pin 2 to ground + + created 17 Jan 2009 + modified 25 Jun 2009 + by Tom Igoe + + http://arduino.cc/en/Tutorial/WhileLoop + + */ + + +// These constants won't change: +const int sensorPin = 2; // pin that the sensor is attached to +const int ledPin = 9; // pin that the LED is attached to +const int indicatorLedPin = 13; // pin that the built-in LED is attached to +const int buttonPin = 2; // pin that the button is attached to + + +// These variables will change: +int sensorMin = 1023; // minimum sensor value +int sensorMax = 0; // maximum sensor value +int sensorValue = 0; // the sensor value + + +void setup() { + // set the LED pins as outputs and the switch pin as input: + pinMode(indicatorLedPin, OUTPUT); + pinMode (ledPin, OUTPUT); + pinMode (buttonPin, INPUT); +} + +void loop() { + // while the button is pressed, take calibration readings: + while (digitalRead(buttonPin) == HIGH) { + calibrate(); + } + // signal the end of the calibration period + digitalWrite(indicatorLedPin, LOW); + + // read the sensor: + sensorValue = analogRead(sensorPin); + + // apply the calibration to the sensor reading + sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); + + // in case the sensor value is outside the range seen during calibration + sensorValue = constrain(sensorValue, 0, 255); + + // fade the LED using the calibrated value: + analogWrite(ledPin, sensorValue); +} + +void calibrate() { + // turn on the indicator LED to indicate that calibration is happening: + digitalWrite(indicatorLedPin, HIGH); + // read the sensor: + sensorValue = analogRead(sensorPin); + + // record the maximum sensor value + if (sensorValue > sensorMax) { + sensorMax = sensorValue; + } + + // record the minimum sensor value + if (sensorValue < sensorMin) { + sensorMin = sensorValue; + } +} + + diff --git a/arduino-0018-windows/examples/Control/switchCase/switchCase.pde b/arduino-0018-windows/examples/Control/switchCase/switchCase.pde new file mode 100644 index 0000000..10a2be1 --- /dev/null +++ b/arduino-0018-windows/examples/Control/switchCase/switchCase.pde @@ -0,0 +1,59 @@ +/* + Switch statement + + Demonstrates the use of a switch statement. The switch + statement allows you to choose from among a set of discrete values + of a variable. It's like a series of if statements. + + To see this sketch in action, but the board and sensor in a well-lit + room, open the serial monitor, and and move your hand gradually + down over the sensor. + + The circuit: + * photoresistor from analog in 0 to +5V + * 10K resistor from analog in 0 to ground + + created 1 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/SwitchCase + */ + +// these constants won't change: +const int sensorMin = 0; // sensor minimum, discovered through experiment +const int sensorMax = 600; // sensor maximum, discovered through experiment + +void setup() { + // initialize serial communication: + Serial.begin(9600); +} + +void loop() { + // read the sensor: + int sensorReading = analogRead(0); + // map the sensor range to a range of four options: + int range = map(sensorReading, sensorMin, sensorMax, 0, 3); + + // do something different depending on the + // range value: + switch (range) { + case 0: // your hand is on the sensor + Serial.println("dark"); + break; + case 1: // your hand is close to the sensor + Serial.println("dim"); + break; + case 2: // your hand is a few inches from the sensor + Serial.println("medium"); + break; + case 3: // your hand is nowhere near the sensor + Serial.println("bright"); + break; + } + +} + + + + + diff --git a/arduino-0018-windows/examples/Control/switchCase2/switchCase2.pde b/arduino-0018-windows/examples/Control/switchCase2/switchCase2.pde new file mode 100644 index 0000000..94a1b6c --- /dev/null +++ b/arduino-0018-windows/examples/Control/switchCase2/switchCase2.pde @@ -0,0 +1,64 @@ +/* + Switch statement with serial input + + Demonstrates the use of a switch statement. The switch + statement allows you to choose from among a set of discrete values + of a variable. It's like a series of if statements. + + To see this sketch in action, open the Serial monitor and send any character. + The characters a, b, c, d, and e, will turn on LEDs. Any other character will turn + the LEDs off. + + The circuit: + * 5 LEDs attached to digital pins 2 through 6 through 220-ohm resistors + + created 1 Jul 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/SwitchCase2 + */ + +void setup() { + // initialize serial communication: + Serial.begin(9600); + // initialize the LED pins: + for (int thisPin = 2; thisPin < 7; thisPin++) { + pinMode(thisPin, OUTPUT); + } +} + +void loop() { + // read the sensor: + if (Serial.available() > 0) { + int inByte = Serial.read(); + // do something different depending on the character received. + // The switch statement expects single number values for each case; + // in this exmaple, though, you're using single quotes to tell + // the controller to get the ASCII value for the character. For + // example 'a' = 97, 'b' = 98, and so forth: + + switch (inByte) { + case 'a': + digitalWrite(2, HIGH); + break; + case 'b': + digitalWrite(3, HIGH); + break; + case 'c': + digitalWrite(4, HIGH); + break; + case 'd': + digitalWrite(5, HIGH); + break; + case 'e': + digitalWrite(6, HIGH); + break; + default: + // turn all the LEDs off: + for (int thisPin = 2; thisPin < 7; thisPin++) { + digitalWrite(thisPin, LOW); + } + } + } +} + diff --git a/arduino-0018-windows/examples/Digital/Blink/Blink.pde b/arduino-0018-windows/examples/Digital/Blink/Blink.pde new file mode 100644 index 0000000..5d27483 --- /dev/null +++ b/arduino-0018-windows/examples/Digital/Blink/Blink.pde @@ -0,0 +1,40 @@ +/* + Blink + + Turns on an LED on for one second, then off for one second, repeatedly. + + The circuit: + * LED connected from digital pin 13 to ground. + + * Note: On most Arduino boards, there is already an LED on the board + connected to pin 13, so you don't need any extra components for this example. + + + Created 1 June 2005 + By David Cuartielles + + http://arduino.cc/en/Tutorial/Blink + + based on an orginal by H. Barragan for the Wiring i/o board + + */ + +int ledPin = 13; // LED connected to digital pin 13 + +// The setup() method runs once, when the sketch starts + +void setup() { + // initialize the digital pin as an output: + pinMode(ledPin, OUTPUT); +} + +// the loop() method runs over and over again, +// as long as the Arduino has power + +void loop() +{ + digitalWrite(ledPin, HIGH); // set the LED on + delay(1000); // wait for a second + digitalWrite(ledPin, LOW); // set the LED off + delay(1000); // wait for a second +} diff --git a/arduino-0018-windows/examples/Digital/BlinkWithoutDelay/BlinkWithoutDelay.pde b/arduino-0018-windows/examples/Digital/BlinkWithoutDelay/BlinkWithoutDelay.pde new file mode 100644 index 0000000..f1d6984 --- /dev/null +++ b/arduino-0018-windows/examples/Digital/BlinkWithoutDelay/BlinkWithoutDelay.pde @@ -0,0 +1,58 @@ +/* Blink without Delay + + Turns on and off a light emitting diode(LED) connected to a digital + pin, without using the delay() function. This means that other code + can run at the same time without being interrupted by the LED code. + + The circuit: + * LED attached from pin 13 to ground. + * Note: on most Arduinos, there is already an LED on the board + that's attached to pin 13, so no hardware is needed for this example. + + + created 2005 + by David A. Mellis + modified 17 Jun 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay + */ + +// constants won't change. Used here to +// set pin numbers: +const int ledPin = 13; // the number of the LED pin + +// Variables will change: +int ledState = LOW; // ledState used to set the LED +long previousMillis = 0; // will store last time LED was updated + +// the follow variables is a long because the time, measured in miliseconds, +// will quickly become a bigger number than can be stored in an int. +long interval = 1000; // interval at which to blink (milliseconds) + +void setup() { + // set the digital pin as output: + pinMode(ledPin, OUTPUT); +} + +void loop() +{ + // here is where you'd put code that needs to be running all the time. + + // check to see if it's time to blink the LED; that is, is the difference + // between the current time and last time we blinked the LED bigger than + // the interval at which we want to blink the LED. + if (millis() - previousMillis > interval) { + // save the last time you blinked the LED + previousMillis = millis(); + + // if the LED is off turn it on and vice-versa: + if (ledState == LOW) + ledState = HIGH; + else + ledState = LOW; + + // set the LED with the ledState of the variable: + digitalWrite(ledPin, ledState); + } +} \ No newline at end of file diff --git a/arduino-0018-windows/examples/Digital/Button/Button.pde b/arduino-0018-windows/examples/Digital/Button/Button.pde new file mode 100644 index 0000000..8df98ec --- /dev/null +++ b/arduino-0018-windows/examples/Digital/Button/Button.pde @@ -0,0 +1,54 @@ +/* + Button + + Turns on and off a light emitting diode(LED) connected to digital + pin 13, when pressing a pushbutton attached to pin 7. + + + The circuit: + * LED attached from pin 13 to ground + * pushbutton attached to pin 2 from +5V + * 10K resistor attached to pin 2 from ground + + * Note: on most Arduinos there is already an LED on the board + attached to pin 13. + + + created 2005 + by DojoDave + modified 17 Jun 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/Button + */ + +// constants won't change. They're used here to +// set pin numbers: +const int buttonPin = 2; // the number of the pushbutton pin +const int ledPin = 13; // the number of the LED pin + +// variables will change: +int buttonState = 0; // variable for reading the pushbutton status + +void setup() { + // initialize the LED pin as an output: + pinMode(ledPin, OUTPUT); + // initialize the pushbutton pin as an input: + pinMode(buttonPin, INPUT); +} + +void loop(){ + // read the state of the pushbutton value: + buttonState = digitalRead(buttonPin); + + // check if the pushbutton is pressed. + // if it is, the buttonState is HIGH: + if (buttonState == HIGH) { + // turn LED on: + digitalWrite(ledPin, HIGH); + } + else { + // turn LED off: + digitalWrite(ledPin, LOW); + } +} \ No newline at end of file diff --git a/arduino-0018-windows/examples/Digital/Debounce/Debounce.pde b/arduino-0018-windows/examples/Digital/Debounce/Debounce.pde new file mode 100644 index 0000000..568100f --- /dev/null +++ b/arduino-0018-windows/examples/Digital/Debounce/Debounce.pde @@ -0,0 +1,74 @@ +/* + Debounce + + Each time the input pin goes from LOW to HIGH (e.g. because of a push-button + press), the output pin is toggled from LOW to HIGH or HIGH to LOW. There's + a minimum delay between toggles to debounce the circuit (i.e. to ignore + noise). + + The circuit: + * LED attached from pin 13 to ground + * pushbutton attached from pin 2 to +5V + * 10K resistor attached from pin 2 to ground + + * Note: On most Arduino boards, there is already an LED on the board + connected to pin 13, so you don't need any extra components for this example. + + + created 21 November 2006 + by David A. Mellis + modified 3 Jul 2009 + by Limor Fried + + + http://www.arduino.cc/en/Tutorial/Debounce + */ + +// constants won't change. They're used here to +// set pin numbers: +const int buttonPin = 2; // the number of the pushbutton pin +const int ledPin = 13; // the number of the LED pin + +// Variables will change: +int ledState = HIGH; // the current state of the output pin +int buttonState; // the current reading from the input pin +int lastButtonState = LOW; // the previous reading from the input pin + +// the following variables are long's because the time, measured in miliseconds, +// will quickly become a bigger number than can be stored in an int. +long lastDebounceTime = 0; // the last time the output pin was toggled +long debounceDelay = 50; // the debounce time; increase if the output flickers + +void setup() { + pinMode(buttonPin, INPUT); + pinMode(ledPin, OUTPUT); +} + +void loop() { + // read the state of the switch into a local variable: + int reading = digitalRead(buttonPin); + + // check to see if you just pressed the button + // (i.e. the input went from LOW to HIGH), and you've waited + // long enough since the last press to ignore any noise: + + // If the switch changed, due to noise or pressing: + if (reading != lastButtonState) { + // reset the debouncing timer + lastDebounceTime = millis(); + } + + if ((millis() - lastDebounceTime) > debounceDelay) { + // whatever the reading is at, it's been there for longer + // than the debounce delay, so take it as the actual current state: + buttonState = reading; + } + + // set the LED using the state of the button: + digitalWrite(ledPin, buttonState); + + // save the reading. Next time through the loop, + // it'll be the lastButtonState: + lastButtonState = reading; +} + diff --git a/arduino-0018-windows/examples/Digital/StateChangeDetection/StateChangeDetection.pde b/arduino-0018-windows/examples/Digital/StateChangeDetection/StateChangeDetection.pde new file mode 100644 index 0000000..607dfc9 --- /dev/null +++ b/arduino-0018-windows/examples/Digital/StateChangeDetection/StateChangeDetection.pde @@ -0,0 +1,90 @@ +/* + State change detection (edge detection) + + Often, you don't need to know the state of a digital input all the time, + but you just need to know when the input changes from one state to another. + For example, you want to know when a button goes from OFF to ON. This is called + state change detection, or edge detection. + + This example shows how to detect when a button or button changes from off to on + and on to off. + + The circuit: + * pushbutton attached to pin 2 from +5V + * 10K resistor attached to pin 2 from ground + * LED attached from pin 13 to ground (or use the built-in LED on + most Arduino boards) + + created 27 Sep 2005 + modified 30 Dec 2009 + by Tom Igoe + + http://arduino.cc/en/Tutorial/ButtonStateChange + + */ + +// this constant won't change: +const int buttonPin = 2; // the pin that the pushbutton is attached to +const int ledPin = 13; // the pin that the LED is attached to + +// Variables will change: +int buttonPushCounter = 0; // counter for the number of button presses +int buttonState = 0; // current state of the button +int lastButtonState = 0; // previous state of the button + +void setup() { + // initialize the button pin as a input: + pinMode(buttonPin, INPUT); + // initialize the LED as an output: + pinMode(ledPin, OUTPUT); + // initialize serial communication: + Serial.begin(9600); +} + + +void loop() { + // read the pushbutton input pin: + buttonState = digitalRead(buttonPin); + + // compare the buttonState to its previous state + if (buttonState != lastButtonState) { + // if the state has changed, increment the counter + if (buttonState == HIGH) { + // if the current state is HIGH then the button + // wend from off to on: + buttonPushCounter++; + Serial.println("on"); + Serial.print("number of button pushes: "); + Serial.println(buttonPushCounter, DEC); + } + else { + // if the current state is LOW then the button + // wend from on to off: + Serial.println("off"); + } + + // save the current state as the last state, + //for next time through the loop + lastButtonState = buttonState; + } + + // turns on the LED every four button pushes by + // checking the modulo of the button push counter. + // the modulo function gives you the remainder of + // the division of two numbers: + if (buttonPushCounter % 4 == 0) { + digitalWrite(ledPin, HIGH); + } else { + digitalWrite(ledPin, LOW); + } + +} + + + + + + + + + diff --git a/arduino-0018-windows/examples/Digital/toneKeyboard/pitches.h b/arduino-0018-windows/examples/Digital/toneKeyboard/pitches.h new file mode 100644 index 0000000..55c7d54 --- /dev/null +++ b/arduino-0018-windows/examples/Digital/toneKeyboard/pitches.h @@ -0,0 +1,95 @@ +/************************************************* + * Public Constants + *************************************************/ + +#define NOTE_B0 31 +#define NOTE_C1 33 +#define NOTE_CS1 35 +#define NOTE_D1 37 +#define NOTE_DS1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_FS1 46 +#define NOTE_G1 49 +#define NOTE_GS1 52 +#define NOTE_A1 55 +#define NOTE_AS1 58 +#define NOTE_B1 62 +#define NOTE_C2 65 +#define NOTE_CS2 69 +#define NOTE_D2 73 +#define NOTE_DS2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_FS2 93 +#define NOTE_G2 98 +#define NOTE_GS2 104 +#define NOTE_A2 110 +#define NOTE_AS2 117 +#define NOTE_B2 123 +#define NOTE_C3 131 +#define NOTE_CS3 139 +#define NOTE_D3 147 +#define NOTE_DS3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_FS3 185 +#define NOTE_G3 196 +#define NOTE_GS3 208 +#define NOTE_A3 220 +#define NOTE_AS3 233 +#define NOTE_B3 247 +#define NOTE_C4 262 +#define NOTE_CS4 277 +#define NOTE_D4 294 +#define NOTE_DS4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_FS4 370 +#define NOTE_G4 392 +#define NOTE_GS4 415 +#define NOTE_A4 440 +#define NOTE_AS4 466 +#define NOTE_B4 494 +#define NOTE_C5 523 +#define NOTE_CS5 554 +#define NOTE_D5 587 +#define NOTE_DS5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_FS5 740 +#define NOTE_G5 784 +#define NOTE_GS5 831 +#define NOTE_A5 880 +#define NOTE_AS5 932 +#define NOTE_B5 988 +#define NOTE_C6 1047 +#define NOTE_CS6 1109 +#define NOTE_D6 1175 +#define NOTE_DS6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_FS6 1480 +#define NOTE_G6 1568 +#define NOTE_GS6 1661 +#define NOTE_A6 1760 +#define NOTE_AS6 1865 +#define NOTE_B6 1976 +#define NOTE_C7 2093 +#define NOTE_CS7 2217 +#define NOTE_D7 2349 +#define NOTE_DS7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_FS7 2960 +#define NOTE_G7 3136 +#define NOTE_GS7 3322 +#define NOTE_A7 3520 +#define NOTE_AS7 3729 +#define NOTE_B7 3951 +#define NOTE_C8 4186 +#define NOTE_CS8 4435 +#define NOTE_D8 4699 +#define NOTE_DS8 4978 + + diff --git a/arduino-0018-windows/examples/Digital/toneKeyboard/toneKeyboard.pde b/arduino-0018-windows/examples/Digital/toneKeyboard/toneKeyboard.pde new file mode 100644 index 0000000..57279ef --- /dev/null +++ b/arduino-0018-windows/examples/Digital/toneKeyboard/toneKeyboard.pde @@ -0,0 +1,49 @@ +/* + keyboard + + Plays a pitch that changes based on a changing analog input + + circuit: + * 3 force-sensing resistors from +5V to analog in 0 through 5 + * 3 10K resistors from analog in 0 through 5 to ground + * 8-ohm speaker on digital pin 8 + + created 21 Jan 2010 + by Tom Igoe + + http://arduino.cc/en/Tutorial/Tone3 + + */ + +#include "pitches.h" + +const int threshold = 10; // minimum reading of the sensors that generates a note + +// notes to play, corresponding to the 3 sensors: +int notes[] = { + NOTE_A4, NOTE_B4,NOTE_C3 }; + +void setup() { + +} + +void loop() { + for (int thisSensor = 0; thisSensor < 3; thisSensor++) { + // get a sensor reading: + int sensorReading = analogRead(thisSensor); + + // if the sensor is pressed hard enough: + if (sensorReading > threshold) { + // play the note corresponding to this sensor: + tone(8, notes[thisSensor], 20); + } + } + Serial.println(); +} + + + + + + + diff --git a/arduino-0018-windows/examples/Digital/toneMelody/pitches.h b/arduino-0018-windows/examples/Digital/toneMelody/pitches.h new file mode 100644 index 0000000..55c7d54 --- /dev/null +++ b/arduino-0018-windows/examples/Digital/toneMelody/pitches.h @@ -0,0 +1,95 @@ +/************************************************* + * Public Constants + *************************************************/ + +#define NOTE_B0 31 +#define NOTE_C1 33 +#define NOTE_CS1 35 +#define NOTE_D1 37 +#define NOTE_DS1 39 +#define NOTE_E1 41 +#define NOTE_F1 44 +#define NOTE_FS1 46 +#define NOTE_G1 49 +#define NOTE_GS1 52 +#define NOTE_A1 55 +#define NOTE_AS1 58 +#define NOTE_B1 62 +#define NOTE_C2 65 +#define NOTE_CS2 69 +#define NOTE_D2 73 +#define NOTE_DS2 78 +#define NOTE_E2 82 +#define NOTE_F2 87 +#define NOTE_FS2 93 +#define NOTE_G2 98 +#define NOTE_GS2 104 +#define NOTE_A2 110 +#define NOTE_AS2 117 +#define NOTE_B2 123 +#define NOTE_C3 131 +#define NOTE_CS3 139 +#define NOTE_D3 147 +#define NOTE_DS3 156 +#define NOTE_E3 165 +#define NOTE_F3 175 +#define NOTE_FS3 185 +#define NOTE_G3 196 +#define NOTE_GS3 208 +#define NOTE_A3 220 +#define NOTE_AS3 233 +#define NOTE_B3 247 +#define NOTE_C4 262 +#define NOTE_CS4 277 +#define NOTE_D4 294 +#define NOTE_DS4 311 +#define NOTE_E4 330 +#define NOTE_F4 349 +#define NOTE_FS4 370 +#define NOTE_G4 392 +#define NOTE_GS4 415 +#define NOTE_A4 440 +#define NOTE_AS4 466 +#define NOTE_B4 494 +#define NOTE_C5 523 +#define NOTE_CS5 554 +#define NOTE_D5 587 +#define NOTE_DS5 622 +#define NOTE_E5 659 +#define NOTE_F5 698 +#define NOTE_FS5 740 +#define NOTE_G5 784 +#define NOTE_GS5 831 +#define NOTE_A5 880 +#define NOTE_AS5 932 +#define NOTE_B5 988 +#define NOTE_C6 1047 +#define NOTE_CS6 1109 +#define NOTE_D6 1175 +#define NOTE_DS6 1245 +#define NOTE_E6 1319 +#define NOTE_F6 1397 +#define NOTE_FS6 1480 +#define NOTE_G6 1568 +#define NOTE_GS6 1661 +#define NOTE_A6 1760 +#define NOTE_AS6 1865 +#define NOTE_B6 1976 +#define NOTE_C7 2093 +#define NOTE_CS7 2217 +#define NOTE_D7 2349 +#define NOTE_DS7 2489 +#define NOTE_E7 2637 +#define NOTE_F7 2794 +#define NOTE_FS7 2960 +#define NOTE_G7 3136 +#define NOTE_GS7 3322 +#define NOTE_A7 3520 +#define NOTE_AS7 3729 +#define NOTE_B7 3951 +#define NOTE_C8 4186 +#define NOTE_CS8 4435 +#define NOTE_D8 4699 +#define NOTE_DS8 4978 + + diff --git a/arduino-0018-windows/examples/Digital/toneMelody/toneMelody.pde b/arduino-0018-windows/examples/Digital/toneMelody/toneMelody.pde new file mode 100644 index 0000000..b6e88d0 --- /dev/null +++ b/arduino-0018-windows/examples/Digital/toneMelody/toneMelody.pde @@ -0,0 +1,48 @@ +/* + Melody + + Plays a melody + + circuit: + * 8-ohm speaker on digital pin 8 + + created 21 Jan 2010 + by Tom Igoe + + http://arduino.cc/en/Tutorial/Tone + + */ + #include "pitches.h" + +// notes in the melody: +int melody[] = { + NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4}; + +// note durations: 4 = quarter note, 8 = eighth note, etc.: +int noteDurations[] = { + 4, 8, 8, 4,4,4,4,4 }; + +void setup() { + // iterate over the notes of the melody: + for (int thisNote = 0; thisNote < 8; thisNote++) { + + // to calculate the note duration, take one second + // divided by the note type. + //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. + int noteDuration = 1000/noteDurations[thisNote]; + tone(8, melody[thisNote],noteDuration); + + // to distinguish the notes, set a minimum time between them. + // the note's duration + 30% seems to work well: + int pauseBetweenNotes = noteDuration * 1.30; + delay(pauseBetweenNotes); + } +} + +void loop() { + // no need to repeat the melody. +} + + + + diff --git a/arduino-0018-windows/examples/Digital/tonePitchFollower/tonePitchFollower.pde b/arduino-0018-windows/examples/Digital/tonePitchFollower/tonePitchFollower.pde new file mode 100644 index 0000000..403b2c1 --- /dev/null +++ b/arduino-0018-windows/examples/Digital/tonePitchFollower/tonePitchFollower.pde @@ -0,0 +1,43 @@ +/* + Pitch follower + + Plays a pitch that changes based on a changing analog input + + circuit: + * 8-ohm speaker on digital pin 8 + * photoresistor on analog 0 to 5V + * 4.7K resistor on analog 0 to ground + + created 21 Jan 2010 + by Tom Igoe + + http://arduino.cc/en/Tutorial/Tone2 + + */ + + +void setup() { + // initialize serial communications (for debugging only): + Serial.begin(9600); +} + +void loop() { + // read the sensor: + int sensorReading = analogRead(0); + // print the sensor reading so you know its range + Serial.println(sensorReading); + // map the pitch to the range of the analog input. + // change the minimum and maximum input numbers below + // depending on the range your sensor's giving: + int thisPitch = map(sensorReading, 400, 1000, 100, 1000); + + // play the pitch: + tone(8, thisPitch, 10); + +} + + + + + + diff --git a/arduino-0018-windows/examples/Display/RowColumnScanning/RowColumnScanning.pde b/arduino-0018-windows/examples/Display/RowColumnScanning/RowColumnScanning.pde new file mode 100644 index 0000000..49f6ab7 --- /dev/null +++ b/arduino-0018-windows/examples/Display/RowColumnScanning/RowColumnScanning.pde @@ -0,0 +1,112 @@ +/* + Row-Column Scanning an 8x8 LED matrix with X-Y input + + This example controls an 8x8 LED matrix using two analog inputs + + created 27 May 2009 + modified 29 Jun 2009 + by Tom Igoe + + This example works for the Lumex LDM-24488NI Matrix. See + http://sigma.octopart.com/140413/datasheet/Lumex-LDM-24488NI.pdf + for the pin connections + + For other LED cathode column matrixes, you should only need to change + the pin numbers in the row[] and column[] arrays + + rows are the anodes + cols are the cathodes + --------- + + Pin numbers: + Matrix: + * Digital pins 2 through 13, + * analog pins 2 through 5 used as digital 16 through 19 + Potentiometers: + * center pins are attached to analog pins 0 and 1, respectively + * side pins attached to +5V and ground, respectively. + + http://www.arduino.cc/en/Tutorial/RowColumnScanning + + see also http://www.tigoe.net/pcomp/code/category/arduinowiring/514 for more + */ + + +// 2-dimensional array of row pin numbers: +const int row[8] = { + 2,7,19,5,13,18,12,16 }; + +// 2-dimensional array of column pin numbers: +const int col[8] = { + 6,11,10,3,17,4,8,9 }; + +// 2-dimensional array of pixels: +int pixels[8][8]; + +// cursor position: +int x = 5; +int y = 5; + +void setup() { + Serial.begin(9600); + // initialize the I/O pins as outputs: + + // iterate over the pins: + for (int thisPin = 0; thisPin < 8; thisPin++) { + // initialize the output pins: + pinMode(col[thisPin], OUTPUT); + pinMode(row[thisPin], OUTPUT); + // take the col pins (i.e. the cathodes) high to ensure that + // the LEDS are off: + digitalWrite(col[thisPin], HIGH); + } + + // initialize the pixel matrix: + for (int x = 0; x < 8; x++) { + for (int y = 0; y < 8; y++) { + pixels[x][y] = HIGH; + } + } +} + +void loop() { + // read input: + readSensors(); + + // draw the screen: + refreshScreen(); +} + +void readSensors() { + // turn off the last position: + pixels[x][y] = HIGH; + // read the sensors for X and Y values: + x = 7 - map(analogRead(0), 0, 1023, 0, 7); + y = map(analogRead(1), 0, 1023, 0, 7); + // set the new pixel position low so that the LED will turn on + // in the next screen refresh: + pixels[x][y] = LOW; + +} + +void refreshScreen() { + // iterate over the rows (anodes): + for (int thisRow = 0; thisRow < 8; thisRow++) { + // take the row pin (anode) high: + digitalWrite(row[thisRow], HIGH); + // iterate over the cols (cathodes): + for (int thisCol = 0; thisCol < 8; thisCol++) { + // get the state of the current pixel; + int thisPixel = pixels[thisRow][thisCol]; + // when the row is HIGH and the col is LOW, + // the LED where they meet turns on: + digitalWrite(col[thisCol], thisPixel); + // turn the pixel off: + if (thisPixel == LOW) { + digitalWrite(col[thisCol], HIGH); + } + } + // take the row pin low to turn off the whole row: + digitalWrite(row[thisRow], LOW); + } +} diff --git a/arduino-0018-windows/examples/Display/barGraph/barGraph.pde b/arduino-0018-windows/examples/Display/barGraph/barGraph.pde new file mode 100644 index 0000000..3e6664a --- /dev/null +++ b/arduino-0018-windows/examples/Display/barGraph/barGraph.pde @@ -0,0 +1,58 @@ +/* + LED bar graph + + Turns on a series of LEDs based on the value of an analog sensor. + This is a simple way to make a bar graph display. Though this graph + uses 10 LEDs, you can use any number by changing the LED count + and the pins in the array. + + This method can be used to control any series of digital outputs that + depends on an analog input. + + The circuit: + * LEDs from pins 2 through 11 to ground + + created 26 Jun 2009 + by Tom Igoe + + http://www.arduino.cc/en/Tutorial/BarGraph + */ + + +// these constants won't change: +const int analogPin = 0; // the pin that the potentiometer is attached to +const int ledCount = 10; // the number of LEDs in the bar graph + +int ledPins[] = { + 2, 3, 4, 5, 6, 7,8,9,10,11 }; // an array of pin numbers to which LEDs are attached + + +void setup() { + // loop over the pin array and set them all to output: + for (int thisLed = 0; thisLed < ledCount; thisLed++) { + pinMode(ledPins[thisLed], OUTPUT); + } +} + +void loop() { + // read the potentiometer: + int sensorReading = analogRead(analogPin); + // map the result to a range from 0 to the number of LEDs: + int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); + + // loop over the LED array: + for (int thisLed = 0; thisLed < ledCount; thisLed++) { + // if the array element's index is less than ledLevel, + // turn the pin for this element on: + if (thisLed < ledLevel) { + digitalWrite(ledPins[thisLed], HIGH); + } + // turn off all pins higher than the ledLevel: + else { + digitalWrite(ledPins[thisLed], LOW); + } + } +} + + + diff --git a/arduino-0018-windows/examples/Sensors/ADXL3xx/ADXL3xx.pde b/arduino-0018-windows/examples/Sensors/ADXL3xx/ADXL3xx.pde new file mode 100644 index 0000000..5609c42 --- /dev/null +++ b/arduino-0018-windows/examples/Sensors/ADXL3xx/ADXL3xx.pde @@ -0,0 +1,62 @@ + +/* + ADXL3xx + + Reads an Analog Devices ADXL3xx accelerometer and communicates the + acceleration to the computer. The pins used are designed to be easily + compatible with the breakout boards from Sparkfun, available from: + http://www.sparkfun.com/commerce/categories.php?c=80 + + http://www.arduino.cc/en/Tutorial/ADXL3xx + + The circuit: + analog 0: accelerometer self test + analog 1: z-axis + analog 2: y-axis + analog 3: x-axis + analog 4: ground + analog 5: vcc + + created 2 Jul 2008 + by David A. Mellis + modified 26 Jun 2009 + by Tom Igoe + +*/ + +// these constants describe the pins. They won't change: +const int groundpin = 18; // analog input pin 4 -- ground +const int powerpin = 19; // analog input pin 5 -- voltage +const int xpin = 3; // x-axis of the accelerometer +const int ypin = 2; // y-axis +const int zpin = 1; // z-axis (only on 3-axis models) + +void setup() +{ + // initialize the serial communications: + Serial.begin(9600); + + // Provide ground and power by using the analog inputs as normal + // digital pins. This makes it possible to directly connect the + // breakout board to the Arduino. If you use the normal 5V and + // GND pins on the Arduino, you can remove these lines. + pinMode(groundpin, OUTPUT); + pinMode(powerpin, OUTPUT); + digitalWrite(groundpin, LOW); + digitalWrite(powerpin, HIGH); +} + +void loop() +{ + // print the sensor values: + Serial.print(analogRead(xpin)); + // print a tab between values: + Serial.print("\t"); + Serial.print(analogRead(ypin)); + // print a tab between values: + Serial.print("\t"); + Serial.print(analogRead(zpin)); + Serial.println(); + // delay before next reading: + delay(100); +} diff --git a/arduino-0018-windows/examples/Sensors/Knock/Knock.pde b/arduino-0018-windows/examples/Sensors/Knock/Knock.pde new file mode 100644 index 0000000..05e4632 --- /dev/null +++ b/arduino-0018-windows/examples/Sensors/Knock/Knock.pde @@ -0,0 +1,53 @@ +/* Knock Sensor + + This sketch reads a piezo element to detect a knocking sound. + It reads an analog pin and compares the result to a set threshold. + If the result is greater than the threshold, it writes + "knock" to the serial port, and toggles the LED on pin 13. + + The circuit: + * + connection of the piezo attached to analog in 0 + * - connection of the piezo attached to ground + * 1-megohm resistor attached from analog in 0 to ground + + http://www.arduino.cc/en/Tutorial/Knock + + created 25 Mar 2007 + by David Cuartielles + modified 30 Jun 2009 + by Tom Igoe + + */ + + +// these constants won't change: +const int ledPin = 13; // led connected to digital pin 13 +const int knockSensor = 0; // the piezo is connected to analog pin 0 +const int threshold = 100; // threshold value to decide when the detected sound is a knock or not + + +// these variables will change: +int sensorReading = 0; // variable to store the value read from the sensor pin +int ledState = LOW; // variable used to store the last LED status, to toggle the light + +void setup() { + pinMode(ledPin, OUTPUT); // declare the ledPin as as OUTPUT + Serial.begin(9600); // use the serial port +} + +void loop() { + // read the sensor and store it in the variable sensorReading: + sensorReading = analogRead(knockSensor); + + // if the sensor reading is greater than the threshold: + if (sensorReading >= threshold) { + // toggle the status of the ledPin: + ledState = !ledState; + // update the LED pin itself: + digitalWrite(ledPin, ledState); + // send the string "Knock!" back to the computer, followed by newline + Serial.println("Knock!"); + } + delay(100); // delay to avoid overloading the serial port buffer +} + diff --git a/arduino-0018-windows/examples/Sensors/Memsic2125/Memsic2125.pde b/arduino-0018-windows/examples/Sensors/Memsic2125/Memsic2125.pde new file mode 100644 index 0000000..a69e31d --- /dev/null +++ b/arduino-0018-windows/examples/Sensors/Memsic2125/Memsic2125.pde @@ -0,0 +1,61 @@ +/* + Memsic2125 + + Read the Memsic 2125 two-axis accelerometer. Converts the + pulses output by the 2125 into milli-g's (1/1000 of earth's + gravity) and prints them over the serial connection to the + computer. + + The circuit: + * X output of accelerometer to digital pin 2 + * Y output of accelerometer to digital pin 3 + * +V of accelerometer to +5V + * GND of accelerometer to ground + + http://www.arduino.cc/en/Tutorial/Memsic2125 + + created 6 Nov 2008 + by David A. Mellis + modified 30 Jun 2009 + by Tom Igoe + + */ + +// these constants won't change: +const int xPin = 2; // X output of the accelerometer +const int yPin = 3; // Y output of the accelerometer + +void setup() { + // initialize serial communications: + Serial.begin(9600); + // initialize the pins connected to the accelerometer + // as inputs: + pinMode(xPin, INPUT); + pinMode(yPin, INPUT); +} + +void loop() { + // variables to read the pulse widths: + int pulseX, pulseY; + // variables to contain the resulting accelerations + int accelerationX, accelerationY; + + // read pulse from x- and y-axes: + pulseX = pulseIn(xPin,HIGH); + pulseY = pulseIn(yPin,HIGH); + + // convert the pulse width into acceleration + // accelerationX and accelerationY are in milli-g's: + // earth's gravity is 1000 milli-g's, or 1g. + accelerationX = ((pulseX / 10) - 500) * 8; + accelerationY = ((pulseY / 10) - 500) * 8; + + // print the acceleration + Serial.print(accelerationX); + // print a tab character: + Serial.print("\t"); + Serial.print(accelerationY); + Serial.println(); + + delay(100); +} diff --git a/arduino-0018-windows/examples/Sensors/Ping/Ping.pde b/arduino-0018-windows/examples/Sensors/Ping/Ping.pde new file mode 100644 index 0000000..3e89744 --- /dev/null +++ b/arduino-0018-windows/examples/Sensors/Ping/Ping.pde @@ -0,0 +1,82 @@ +/* Ping))) Sensor + + This sketch reads a PING))) ultrasonic rangefinder and returns the + distance to the closest object in range. To do this, it sends a pulse + to the sensor to initiate a reading, then listens for a pulse + to return. The length of the returning pulse is proportional to + the distance of the object from the sensor. + + The circuit: + * +V connection of the PING))) attached to +5V + * GND connection of the PING))) attached to ground + * SIG connection of the PING))) attached to digital pin 7 + + http://www.arduino.cc/en/Tutorial/Ping + + created 3 Nov 2008 + by David A. Mellis + modified 30 Jun 2009 + by Tom Igoe + + */ + +// this constant won't change. It's the pin number +// of the sensor's output: +const int pingPin = 7; + +void setup() { + // initialize serial communication: + Serial.begin(9600); +} + +void loop() +{ + // establish variables for duration of the ping, + // and the distance result in inches and centimeters: + long duration, inches, cm; + + // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. + // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: + pinMode(pingPin, OUTPUT); + digitalWrite(pingPin, LOW); + delayMicroseconds(2); + digitalWrite(pingPin, HIGH); + delayMicroseconds(5); + digitalWrite(pingPin, LOW); + + // The same pin is used to read the signal from the PING))): a HIGH + // pulse whose duration is the time (in microseconds) from the sending + // of the ping to the reception of its echo off of an object. + pinMode(pingPin, INPUT); + duration = pulseIn(pingPin, HIGH); + + // convert the time into a distance + inches = microsecondsToInches(duration); + cm = microsecondsToCentimeters(duration); + + Serial.print(inches); + Serial.print("in, "); + Serial.print(cm); + Serial.print("cm"); + Serial.println(); + + delay(100); +} + +long microsecondsToInches(long microseconds) +{ + // According to Parallax's datasheet for the PING))), there are + // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per + // second). This gives the distance travelled by the ping, outbound + // and return, so we divide by 2 to get the distance of the obstacle. + // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf + return microseconds / 74 / 2; +} + +long microsecondsToCentimeters(long microseconds) +{ + // The speed of sound is 340 m/s or 29 microseconds per centimeter. + // The ping travels out and back, so to find the distance of the + // object we take half of the distance travelled. + return microseconds / 29 / 2; +} diff --git a/arduino-0018-windows/examples/Stubs/AnalogReadSerial/AnalogReadSerial.pde b/arduino-0018-windows/examples/Stubs/AnalogReadSerial/AnalogReadSerial.pde new file mode 100644 index 0000000..f0ce8f4 --- /dev/null +++ b/arduino-0018-windows/examples/Stubs/AnalogReadSerial/AnalogReadSerial.pde @@ -0,0 +1,12 @@ + +void setup() { + Serial.begin(9600); +} + +void loop() { + int sensorValue = analogRead(0); + Serial.println(sensorValue, DEC); +} + + + diff --git a/arduino-0018-windows/examples/Stubs/AnalogReadWrite/AnalogReadWrite.pde b/arduino-0018-windows/examples/Stubs/AnalogReadWrite/AnalogReadWrite.pde new file mode 100644 index 0000000..3dc8052 --- /dev/null +++ b/arduino-0018-windows/examples/Stubs/AnalogReadWrite/AnalogReadWrite.pde @@ -0,0 +1,13 @@ + +void setup() { + pinMode(6, OUTPUT); +} + +void loop() { + int sensorValue = analogRead(2); + int ledFadeValue = map(sensorValue, 0, 1023, 0, 255); + analogWrite(6, ledFadeValue); +} + + + diff --git a/arduino-0018-windows/examples/Stubs/BareMinumum/BareMinumum.pde b/arduino-0018-windows/examples/Stubs/BareMinumum/BareMinumum.pde new file mode 100644 index 0000000..b1a29e5 --- /dev/null +++ b/arduino-0018-windows/examples/Stubs/BareMinumum/BareMinumum.pde @@ -0,0 +1,9 @@ +void setup() { + +} + +void loop() { + +} + + diff --git a/arduino-0018-windows/examples/Stubs/DigitalReadSerial/DigitalReadSerial.pde b/arduino-0018-windows/examples/Stubs/DigitalReadSerial/DigitalReadSerial.pde new file mode 100644 index 0000000..369b9a4 --- /dev/null +++ b/arduino-0018-windows/examples/Stubs/DigitalReadSerial/DigitalReadSerial.pde @@ -0,0 +1,13 @@ + +void setup() { + Serial.begin(9600); + pinMode(2, INPUT); +} + +void loop() { + int sensorValue = digitalRead(2); + Serial.println(sensorValue, DEC); +} + + + diff --git a/arduino-0018-windows/examples/Stubs/DigitalReadWrite/DigitalReadWrite.pde b/arduino-0018-windows/examples/Stubs/DigitalReadWrite/DigitalReadWrite.pde new file mode 100644 index 0000000..f4ca3c5 --- /dev/null +++ b/arduino-0018-windows/examples/Stubs/DigitalReadWrite/DigitalReadWrite.pde @@ -0,0 +1,12 @@ + +void setup() { + pinMode(13, OUTPUT); +} + +void loop() { + int switchValue = digitalRead(2); + digitalWrite(13, switchValue); +} + + + diff --git a/arduino-0018-windows/examples/Stubs/HelloWorld/HelloWorld.pde b/arduino-0018-windows/examples/Stubs/HelloWorld/HelloWorld.pde new file mode 100644 index 0000000..628a9f3 --- /dev/null +++ b/arduino-0018-windows/examples/Stubs/HelloWorld/HelloWorld.pde @@ -0,0 +1,9 @@ +void setup() { + Serial.begin(9600); +} + +void loop() { + Serial.println("Hello World!"); +} + + diff --git a/arduino-0018-windows/hardware/arduino/boards.txt b/arduino-0018-windows/hardware/arduino/boards.txt new file mode 100644 index 0000000..4ae4ac9 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/boards.txt @@ -0,0 +1,220 @@ +############################################################## + +atmega328.name=Arduino Duemilanove or Nano w/ ATmega328 + +atmega328.upload.protocol=stk500 +atmega328.upload.maximum_size=30720 +atmega328.upload.speed=57600 + +atmega328.bootloader.low_fuses=0xFF +atmega328.bootloader.high_fuses=0xDA +atmega328.bootloader.extended_fuses=0x05 +atmega328.bootloader.path=atmega +atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex +atmega328.bootloader.unlock_bits=0x3F +atmega328.bootloader.lock_bits=0x0F + +atmega328.build.mcu=atmega328p +atmega328.build.f_cpu=16000000L +atmega328.build.core=arduino + +############################################################## + +diecimila.name=Arduino Diecimila, Duemilanove, or Nano w/ ATmega168 + +diecimila.upload.protocol=stk500 +diecimila.upload.maximum_size=14336 +diecimila.upload.speed=19200 + +diecimila.bootloader.low_fuses=0xff +diecimila.bootloader.high_fuses=0xdd +diecimila.bootloader.extended_fuses=0x00 +diecimila.bootloader.path=atmega +diecimila.bootloader.file=ATmegaBOOT_168_diecimila.hex +diecimila.bootloader.unlock_bits=0x3F +diecimila.bootloader.lock_bits=0x0F + +diecimila.build.mcu=atmega168 +diecimila.build.f_cpu=16000000L +diecimila.build.core=arduino + +############################################################## + +mega.name=Arduino Mega + +mega.upload.protocol=stk500 +mega.upload.maximum_size=126976 +mega.upload.speed=57600 + +mega.bootloader.low_fuses=0xFF +mega.bootloader.high_fuses=0xDA +mega.bootloader.extended_fuses=0xF5 +mega.bootloader.path=atmega +mega.bootloader.file=ATmegaBOOT_168_atmega1280.hex +mega.bootloader.unlock_bits=0x3F +mega.bootloader.lock_bits=0x0F + +mega.build.mcu=atmega1280 +mega.build.f_cpu=16000000L +mega.build.core=arduino + +############################################################## + +mini.name=Arduino Mini + +mini.upload.protocol=stk500 +mini.upload.maximum_size=14336 +mini.upload.speed=19200 + +mini.bootloader.low_fuses=0xff +mini.bootloader.high_fuses=0xdd +mini.bootloader.extended_fuses=0x00 +mini.bootloader.path=atmega +mini.bootloader.file=ATmegaBOOT_168_ng.hex +mini.bootloader.unlock_bits=0x3F +mini.bootloader.lock_bits=0x0F + +mini.build.mcu=atmega168 +mini.build.f_cpu=16000000L +mini.build.core=arduino + +############################################################## + +bt.name=Arduino BT + +bt.upload.protocol=stk500 +bt.upload.maximum_size=14336 +bt.upload.speed=19200 +bt.upload.disable_flushing=true + +bt.bootloader.low_fuses=0xff +bt.bootloader.high_fuses=0xdd +bt.bootloader.extended_fuses=0x00 +bt.bootloader.path=bt +bt.bootloader.file=ATmegaBOOT_168.hex +bt.bootloader.unlock_bits=0x3F +bt.bootloader.lock_bits=0x0F + +bt.build.mcu=atmega168 +bt.build.f_cpu=16000000L +bt.build.core=arduino + +############################################################## + +lilypad328.name=LilyPad Arduino w/ ATmega328 + +lilypad328.upload.protocol=stk500 +lilypad328.upload.maximum_size=30720 +lilypad328.upload.speed=57600 + +lilypad328.bootloader.low_fuses=0xFF +lilypad328.bootloader.high_fuses=0xDA +lilypad328.bootloader.extended_fuses=0x05 +lilypad328.bootloader.path=atmega +lilypad328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex +lilypad328.bootloader.unlock_bits=0x3F +lilypad328.bootloader.lock_bits=0x0F + +lilypad328.build.mcu=atmega328p +lilypad328.build.f_cpu=8000000L +lilypad328.build.core=arduino + +############################################################## + +lilypad.name=LilyPad Arduino w/ ATmega168 + +lilypad.upload.protocol=stk500 +lilypad.upload.maximum_size=14336 +lilypad.upload.speed=19200 + +lilypad.bootloader.low_fuses=0xe2 +lilypad.bootloader.high_fuses=0xdd +lilypad.bootloader.extended_fuses=0x00 +lilypad.bootloader.path=lilypad +lilypad.bootloader.file=LilyPadBOOT_168.hex +lilypad.bootloader.unlock_bits=0x3F +lilypad.bootloader.lock_bits=0x0F + +lilypad.build.mcu=atmega168 +lilypad.build.f_cpu=8000000L +lilypad.build.core=arduino + +############################################################## + +pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328 + +pro328.upload.protocol=stk500 +pro328.upload.maximum_size=30720 +pro328.upload.speed=57600 + +pro328.bootloader.low_fuses=0xFF +pro328.bootloader.high_fuses=0xDA +pro328.bootloader.extended_fuses=0x05 +pro328.bootloader.path=atmega +pro328.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex +pro328.bootloader.unlock_bits=0x3F +pro328.bootloader.lock_bits=0x0F + +pro328.build.mcu=atmega328p +pro328.build.f_cpu=8000000L +pro328.build.core=arduino + +############################################################## + +pro.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 + +pro.upload.protocol=stk500 +pro.upload.maximum_size=14336 +pro.upload.speed=19200 + +pro.bootloader.low_fuses=0xc6 +pro.bootloader.high_fuses=0xdd +pro.bootloader.extended_fuses=0x00 +pro.bootloader.path=atmega +pro.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex +pro.bootloader.unlock_bits=0x3F +pro.bootloader.lock_bits=0x0F + +pro.build.mcu=atmega168 +pro.build.f_cpu=8000000L +pro.build.core=arduino + +############################################################## + +atmega168.name=Arduino NG or older w/ ATmega168 + +atmega168.upload.protocol=stk500 +atmega168.upload.maximum_size=14336 +atmega168.upload.speed=19200 + +atmega168.bootloader.low_fuses=0xff +atmega168.bootloader.high_fuses=0xdd +atmega168.bootloader.extended_fuses=0x00 +atmega168.bootloader.path=atmega +atmega168.bootloader.file=ATmegaBOOT_168_ng.hex +atmega168.bootloader.unlock_bits=0x3F +atmega168.bootloader.lock_bits=0x0F + +atmega168.build.mcu=atmega168 +atmega168.build.f_cpu=16000000L +atmega168.build.core=arduino + +############################################################## + +atmega8.name=Arduino NG or older w/ ATmega8 + +atmega8.upload.protocol=stk500 +atmega8.upload.maximum_size=7168 +atmega8.upload.speed=19200 + +atmega8.bootloader.low_fuses=0xdf +atmega8.bootloader.high_fuses=0xca +atmega8.bootloader.path=atmega8 +atmega8.bootloader.file=ATmegaBOOT.hex +atmega8.bootloader.unlock_bits=0x3F +atmega8.bootloader.lock_bits=0x0F + +atmega8.build.mcu=atmega8 +atmega8.build.f_cpu=16000000L +atmega8.build.core=arduino + diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c new file mode 100644 index 0000000..e8c3fb8 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c @@ -0,0 +1,1054 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega8, ATmega128 and ATmega168 */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* */ +/* 20090308: integrated Mega changes into main bootloader */ +/* source by D. Mellis */ +/* 20080930: hacked for Arduino Mega (with the 1280 */ +/* processor, backwards compatible) */ +/* by D. Cuartielles */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) +#include +#endif + +/* Use the F_CPU defined in Makefile */ + +/* 20060803: hacked by DojoCorp */ +/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ +/* set the waiting time for the bootloader */ +/* get this from the Makefile instead */ +/* #define MAX_TIME_COUNT (F_CPU>>4) */ + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +//#define BAUD_RATE 115200 +#ifndef BAUD_RATE +#define BAUD_RATE 19200 +#endif + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* ATmega1280 has four UARTS, but for Arduino Mega, we will only use RXD0 to get code */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#elif defined __AVR_ATmega1280__ +/* we just don't do anything for the MEGA and enter bootloader on reset anyway*/ +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#if defined __AVR_ATmega128__ || defined __AVR_ATmega1280__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128, Arduino Mega) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#else +/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duomilanuove */ +/* other boards like e.g. Crumb8, Crumb168 are using PB2 */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) +#define MONITOR 1 +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega1280__ +#define SIG2 0x97 +#define SIG3 0x03 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega1281__ +#define SIG2 0x97 +#define SIG3 0x04 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega328P__ +#define SIG2 0x95 +#define SIG3 0x0F +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +uint8_t error_count = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + +#ifdef WATCHDOG_MODS + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if its a not an external reset... + app_start(); // skip bootloader +#else + asm volatile("nop\n\t"); +#endif + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + /* We run the bootloader regardless of the state of this pin. Thus, don't + put it in a different state than the other pins. --DAM, 070709 + This also applies to Arduino Mega -- DC, 080930 + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); + */ +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + +#if defined __AVR_ATmega1280__ + /* the mega1280 chip has four serial ports ... we could eventually use any of them, or not? */ + /* however, we don't wanna confuse people, to avoid making a mess, we will stick to RXD0, TXD0 */ + bootuart = 1; +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + +#ifdef DOUBLE_SPEED + UCSR0A = (1<> 8; +#else + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; +#endif + + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + +#if defined __AVR_ATmega1280__ + /* Enable internal pull-up resistor on pin D0 (RX), in order + to supress line noise that prevents the bootloader from + timing out (DAM: 20070509) */ + /* feature added to the Arduino Mega --DC: 080930 */ + DDRE &= ~_BV(PINE0); + PORTE |= _BV(PINE0); +#endif + + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + /* flash onboard LED to signal entering of bootloader */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + // 4x for UART0, 5x for UART1 + flash_led(NUM_LED_FLASHES + bootuart); +#else + flash_led(NUM_LED_FLASHES); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* P: Enter programming mode */ + /* R: Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='P' || ch=='R') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); +#ifdef WATCHDOG_MODS + // autoreset via watchdog (sneaky!) + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + if (getch() == 0x30) { + getch(); + ch = getch(); + getch(); + if (ch == 0) { + byte_response(SIG1); + } else if (ch == 1) { + byte_response(SIG2); + } else { + byte_response(SIG3); + } + } else { + getNch(3); + byte_response(0x00); + } + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete +#else + while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete +#endif + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ || __AVR_ATmega328P__ || __AVR_ATmega128__ || __AVR_ATmega1280__ || __AVR_ATmega1281__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + address.word = address.word << 1; // address * 2 -> byte location + if (getch() == 'E') flags.eeprom = 1; + else flags.eeprom = 0; + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while(EECR & (1<= 'a') { + return (a - 'a' + 0x0a); + } else if(a >= '0') { + return(a - '0'); + } + return a; +} + + +char gethex(void) { + return (gethexnib() << 4) + gethexnib(); +} + + +void puthex(char ch) { + char ah; + + ah = ch >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + + ch &= 0x0f; + if(ch >= 0x0a) { + ch = ch - 0x0a + 'a'; + } else { + ch += '0'; + } + + putch(ah); + putch(ch); +} + + +void putch(char ch) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + uint32_t count = 0; + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR1; + } + return 0; +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + while(count--) { +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + UDR1; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + getch(); +#else + /* m8,16,32,169,8515,8535,163 */ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + //while(!(UCSRA & _BV(RXC))); + //UDR; + getch(); // need to handle time out +#endif + } +} + + +void byte_response(uint8_t val) +{ + if (getch() == ' ') { + putch(0x14); + putch(val); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + + +void nothing_response(void) +{ + if (getch() == ' ') { + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + +void flash_led(uint8_t count) +{ + while (count--) { + LED_PORT |= _BV(LED); + _delay_ms(100); + LED_PORT &= ~_BV(LED); + _delay_ms(100); + } +} + + +/* end of file ATmegaBOOT.c */ diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex new file mode 100644 index 0000000..f16e877 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega1280.hex @@ -0,0 +1,245 @@ +:020000021000EC +:10F000000C9472F80C9492F80C9492F80C9492F878 +:10F010000C9492F80C9492F80C9492F80C9492F848 +:10F020000C9492F80C9492F80C9492F80C9492F838 +:10F030000C9492F80C9492F80C9492F80C9492F828 +:10F040000C9492F80C9492F80C9492F80C9492F818 +:10F050000C9492F80C9492F80C9492F80C9492F808 +:10F060000C9492F80C9492F80C9492F80C9492F8F8 +:10F070000C9492F80C9492F80C9492F80C9492F8E8 +:10F080000C9492F80C9492F80C9492F80C9492F8D8 +:10F090000C9492F80C9492F80C9492F80C9492F8C8 +:10F0A0000C9492F80C9492F80C9492F80C9492F8B8 +:10F0B0000C9492F80C9492F80C9492F80C9492F8A8 +:10F0C0000C9492F80C9492F80C9492F80C9492F898 +:10F0D0000C9492F80C9492F80C9492F80C9492F888 +:10F0E0000C9492F811241FBECFEFD1E2DEBFCDBF4A +:10F0F00012E0A0E0B2E0EEEDFEEF01E00BBF02C0D7 +:10F1000007900D92A833B107D9F71BBE13E0A8E30F +:10F11000B2E001C01D92A334B107E1F70E9412FAD8 +:10F120000C946DFF0C9400F8982F959595959595F6 +:10F130009595905D8F708A301CF1282F295A809107 +:10F140003802813019F0823071F008958091C0004A +:10F1500085FFFCCF9093C6008091C00085FFFCCF57 +:10F160002093C60008958091C80085FFFCCF90933E +:10F17000CE008091C80085FFFCCF2093CE0008957B +:10F18000282F205DDCCF982F80913802813019F034 +:10F19000823041F008958091C00085FFFCCF9093AC +:10F1A000C60008958091C80085FFFCCF9093CE00E3 +:10F1B0000895EF92FF920F931F9380913802813050 +:10F1C00069F1823031F080E01F910F91FF90EF9054 +:10F1D0000895EE24FF2487018091C80087FD17C0A1 +:10F1E0000894E11CF11C011D111D81E4E81682E464 +:10F1F000F8068FE0080780E0180770F3E0913A0204 +:10F20000F0913B0209958091C80087FFE9CF80917A +:10F21000CE001F910F91FF90EF900895EE24FF24F0 +:10F2200087018091C00087FD17C00894E11CF11C84 +:10F23000011D111D81E4E81682E4F8068FE008073D +:10F2400080E0180770F3E0913A02F0913B020995D3 +:10F250008091C00087FFE9CF8091C6001F910F9178 +:10F26000FF90EF9008950E94D9F8982F809138026E +:10F27000813049F0823091F091366CF490330CF08B +:10F280009053892F08958091C00085FFFCCF909303 +:10F29000C60091369CF39755892F08958091C80038 +:10F2A00085FFFCCF9093CE00E7CF1F930E9433F9E8 +:10F2B000182F0E9433F91295107F810F1F91089526 +:10F2C000982F20913802992339F0213031F02230E3 +:10F2D00061F091509923C9F708958091C00087FF8C +:10F2E000FCCF8091C6009150F5CF8091C80087FF78 +:10F2F000FCCF8091CE009150EDCF1F93182F0E942C +:10F30000D9F8803249F0809139028F5F80933902B9 +:10F31000853091F11F910895809138028130B9F0C4 +:10F320008230C1F78091C80085FFFCCF84E18093D3 +:10F33000CE008091C80085FFFCCF1093CE00809155 +:10F34000C80085FFFCCF80E18093CE00E3CF8091A1 +:10F35000C00085FFFCCF84E18093C6008091C0008F +:10F3600085FFFCCF1093C6008091C00085FFFCCFC5 +:10F3700080E18093C600CECFE0913A02F0913B024B +:10F3800009951F9108950E94D9F8803241F080912B +:10F3900039028F5F80933902853029F10895809179 +:10F3A0003802813089F08230C9F78091C80085FF2A +:10F3B000FCCF84E18093CE008091C80085FFFCCF14 +:10F3C00080E18093CE0008958091C00085FFFCCF3E +:10F3D00084E18093C6008091C00085FFFCCF80E16E +:10F3E0008093C6000895E0913A02F0913B0209959E +:10F3F000089540E951E08823A1F02F9A28EE33E0E8 +:10F40000FA013197F1F721503040D1F72F9828EECB +:10F4100033E0FA013197F1F721503040D1F78150B4 +:10F4200061F708952F923F924F925F926F927F9271 +:10F430008F929F92AF92BF92CF92DF92EF92FF9204 +:10F440000F931F93CF93DF93000081E080933802E6 +:10F4500080E18093C4001092C5001092C00086E045 +:10F460008093C20088E18093C1006898709A279ABF +:10F4700081E00E94F9F9E4E1EE2E7EE1D72E67E902 +:10F48000C62E53E0B52E40E1A42E9924939431E486 +:10F49000832E26E5722E92E5692E80E2582E09E42D +:10F4A000402E13E5312EB0E52B2E0E94D9F8803383 +:10F4B000C9F1813309F452C0803409F4C8C08134E1 +:10F4C00009F4EAC0823489F1853409F4CAC0803570 +:10F4D00049F1823539F1813529F1853509F4ECC0DE +:10F4E000863509F409C1843609F428C1843709F442 +:10F4F000ABC1853709F473C2863709F4D9C08132AC +:10F5000009F4B7C2809139028F5F80933902853048 +:10F5100061F6E0913A02F0913B0209950E94D9F818 +:10F52000803339F60E94C3F9C0CF2091380293E1AD +:10F5300005C0223061F09923A9F391502130C9F719 +:10F540008091C00087FFFCCF8091C600F4CF8091EE +:10F55000C80087FFFCCF8091CE00EDCF0E94D9F884 +:10F56000803281F6809138028130D1F1823009F009 +:10F570009CCF8091C80085FFFCCFE092CE008091A7 +:10F58000C80085FFFCCF8092CE008091C80085FF27 +:10F59000FCCF7092CE008091C80085FFFCCF6092B6 +:10F5A000CE008091C80085FFFCCF5092CE008091A4 +:10F5B000C80085FFFCCF4092CE008091C80085FF37 +:10F5C000FCCF3092CE008091C80085FFFCCF209206 +:10F5D000CE008091C80085FFFCCFA092CE0065CF01 +:10F5E0008091C00085FFFCCFE092C6008091C000F2 +:10F5F00085FFFCCF8092C6008091C00085FFFCCFC4 +:10F600007092C6008091C00085FFFCCF6092C6005A +:10F610008091C00085FFFCCF5092C6008091C00051 +:10F6200085FFFCCF4092C6008091C00085FFFCCFD3 +:10F630003092C6008091C00085FFFCCF2092C600AA +:10F640008091C00085FFFCCFA092C6002ECF0E9403 +:10F65000D9F8863808F466CF0E94D9F80E94C3F919 +:10F6600024CF2091380294E0213041F0223069F01B +:10F67000992309F457CF91502130C1F78091C000F0 +:10F6800087FFFCCF8091C600F3CF8091C80087FF31 +:10F69000FCCF8091CE00ECCF0E94D9F8803841F1A8 +:10F6A000813809F447C0823809F4CAC08839E1F0CA +:10F6B00080E00E947DF9F9CE0E94D9F880933C0247 +:10F6C0000E94D9F880933D020E94C3F9EECE0E94B9 +:10F6D000D9F80E94D9F8182F0E94D9F8112309F4FB +:10F6E0007EC2113009F40AC283E00E947DF9DDCEAA +:10F6F00082E00E947DF9D9CE0E94D9F8803339F397 +:10F700002091380292E0213039F0223061F09923C3 +:10F7100079F291502130C9F78091C00087FFFCCF6A +:10F720008091C600F4CF8091C80087FFFCCF809104 +:10F73000CE00EDCF81E00E947DF9B7CE0E94D9F8CE +:10F7400080933F030E94D9F880933E038091420347 +:10F750008E7F809342030E94D9F8853409F4B3C1A7 +:10F7600080913E0390913F03892B89F000E010E0E7 +:10F770000E94D9F8F801E25CFD4F80830F5F1F4FB4 +:10F7800080913E0390913F030817190788F30E9468 +:10F79000D9F8803209F0B6CE8091420380FFB2C121 +:10F7A00040913C0250913D02440F551F50933D0241 +:10F7B00040933C0260913E0370913F0361157105D7 +:10F7C000F1F080E090E09A01280F391FFC01E25C23 +:10F7D000FD4FE081F999FECF1FBA32BD21BDE0BDDA +:10F7E0000FB6F894FA9AF99A0FBE01968617970702 +:10F7F00050F3460F571F50933D0240933C028091B7 +:10F800003802813081F0823009F04FCE8091C800FB +:10F8100085FFFCCFE092CE008091C80085FFFCCF31 +:10F82000A092CE0042CE8091C00085FFFCCFE09236 +:10F83000C6008091C00085FFFCCFA092C60035CEE7 +:10F8400080E10E947DF931CE0E94D9F880933F0378 +:10F850000E94D9F880933E0320913C0230913D02F2 +:10F8600037FD46C1809142038D7F80934203220F72 +:10F87000331F30933D0220933C020E94D9F8853417 +:10F8800009F430C1809142038E7F809342030E942D +:10F89000D9F8803209F009CE60913802613009F45C +:10F8A0006FC0623009F473C000913E0310913F03B2 +:10F8B0000115110509F440C080914203782F717041 +:10F8C000F82EF69481E0F82240913C0250913D02DE +:10F8D00020E030E013C0FF2009F060C0FA019491ED +:10F8E000613009F43BC0623009F441C0CA0101969D +:10F8F0002F5F3F4FAC0120173107D0F4772359F326 +:10F90000F999FECF52BD41BDF89A90B56130F9F03A +:10F91000623061F78091C80085FFFCCF9093CE00E4 +:10F92000CA0101962F5F3F4FAC012017310730F31A +:10F9300090933D0280933C02613009F4CAC062306A +:10F9400009F0B3CD8091C80085FFFCCF46CE8091F1 +:10F95000C00085FFFCCF9093C600C8CF8091C00047 +:10F9600085FDF9CF8091C00085FFF8CFF4CF80915D +:10F97000C80085FDD3CF8091C80085FFF8CFCECFDA +:10F980008091C00085FFFCCFE092C6008DCF8091B2 +:10F99000C80085FFFCCFE092CE0086CFCA01A0E070 +:10F9A000B0E080509040AF4FBF4FABBFFC0197918C +:10F9B000613061F0623009F099CF8091C80085FD17 +:10F9C000ADCF8091C80085FFF8CFA8CF8091C0004F +:10F9D00085FDC1CF8091C00085FFF8CFBCCF0E94CC +:10F9E000D9F8803209F08ECD80913802813011F142 +:10F9F000823009F05ACD8091C80085FFFCCFE0929B +:10FA0000CE008091C80085FFFCCFD092CE008091BF +:10FA1000C80085FFFCCFC092CE008091C80085FF52 +:10FA2000FCCFB092CE008091C80085FFFCCFA092A1 +:10FA3000CE003BCD8091C00085FFFCCFE092C60098 +:10FA40008091C00085FFFCCFD092C6008091C0009D +:10FA500085FFFCCFC092C6008091C00085FFFCCF1F +:10FA6000B092C6008091C00085FFFCCFA092C60076 +:10FA70001CCD0E94D9F8813209F017CD0E94D9F827 +:10FA8000813209F012CD279A2F98109240032091CD +:10FA90003802E1E491E00EC0223009F4A4C0909352 +:10FAA0004003E92FF0E0E050FE4FE0819F5FEE233E +:10FAB00009F4A0C0213081F78091C00085FFFCCF00 +:10FAC000E093C600ECCF80914203816080934203B3 +:10FAD00047CE8091C00085FDB7CD8091C00085FFE5 +:10FAE000F8CFB2CD80914203816080934203CFCEA4 +:10FAF00080914203826080934203B9CE87E90E94DD +:10FB00007DF9D3CC80913D028823880F880B892111 +:10FB1000809341038BBF80913C0290913D02880FFE +:10FB2000991F90933D0280933C0280913E0380FF99 +:10FB300009C080913E0390913F03019690933F034B +:10FB400080933E03F894F999FECF1127E0913C028F +:10FB5000F0913D02CEE3D2E080913E0390913F03CD +:10FB6000103091F40091570001700130D9F303E097 +:10FB700000935700E8950091570001700130D9F3C8 +:10FB800001E100935700E895099019900091570002 +:10FB900001700130D9F301E000935700E895139507 +:10FBA000103898F011270091570001700130D9F3F7 +:10FBB00005E000935700E89500915700017001306F +:10FBC000D9F301E100935700E8953296029709F0C6 +:10FBD000C7CF103011F00296E5CF112410CE8EE180 +:10FBE0000E947DF962CC8091C80085FFFCCFE09334 +:10FBF000CE0055CF7AE0B72E6DE0A62E5AE3952EB3 +:10FC000040E2842E3DE3732E90E3692E81E3582E6B +:10FC1000213009F442C0223009F45FC00E94D9F8B3 +:10FC2000982F20913802213089F1223009F44EC0FA +:10FC3000943709F46BC0923709F405C1973709F47A +:10FC40007BC0953799F0923609F4BDC09A3601F71A +:10FC5000E0913A02F0913B02099520913802D8CF09 +:10FC60008091C00085FFFCCF9093C6000E94D9F818 +:10FC7000982F80913802813099F38230B9F78091C2 +:10FC8000C80085FFFCCF9093CE00F0CF8091C000DC +:10FC900085FFFCCF9093C600CBCF8091C00085FF3D +:10FCA000FCCFB092C6008091C00085FFFCCFA0922F +:10FCB000C6008091C00085FFFCCF9092C600809165 +:10FCC000C00085FFFCCF8092C600A8CF8091C800FD +:10FCD00085FFFCCF9093CE00ABCF8091C80085FF0D +:10FCE000FCCFB092CE008091C80085FFFCCFA092DF +:10FCF000CE008091C80085FFFCCF9092CE0080910D +:10FD0000C80085FFFCCF8092CE0088CF1F9947C0E6 +:10FD10002F9A213051F0223009F07ACF8091C8001B +:10FD200085FFFCCF6092CE0073CF8091C00085FF2D +:10FD3000FCCF6092C6006CCF0E94D9F8982F8091BA +:10FD400038028130F1F0823009F4ABC00E9455F9DD +:10FD5000082F0E9455F9182F0E94D9F8982F8091EA +:10FD600038028130A9F0823009F4A2C00E9455F90E +:10FD7000D02ECC24F601E10FF11D808320913802B2 +:10FD800047CF8091C00085FFFCCF9093C600DECFA7 +:10FD90008091C00085FFFCCF9093C600E7CF2F98DD +:10FDA000213051F0223009F033CF8091C80085FF17 +:10FDB000FCCF5092CE002CCF8091C00085FFFCCFAD +:10FDC0005092C60025CF213041F1223081F080E8E9 +:10FDD00085BF109274001092750080E091E1FC01E3 +:10FDE000819180E091E13097D1F3CF01F8CF8091FC +:10FDF000C80085FFFCCF82E68093CE008091C800CA +:10FE000085FFFCCF85E78093CE008091C80085FFF9 +:10FE1000FCCF83E78093CE00DACF8091C00085FFCE +:10FE2000FCCF82E68093C6008091C00085FFFCCFA6 +:10FE300085E78093C6008091C00085FFFCCF83E7F3 +:10FE40008093C600C4CF0E94D9F8982F80913802C1 +:10FE50008130C9F08230D1F10E9455F9182F0E94EB +:10FE600055F9982F809138028130A1F0823039F114 +:10FE7000F12EEE24F701E90FF11D80810E9494F824 +:10FE800020913802C5CE8091C00085FFFCCF9093B1 +:10FE9000C600E2CF8091C00085FFFCCF7092C60003 +:10FEA000E7CF8091C80085FFFCCF9093CE004ECF66 +:10FEB0008091C80085FFFCCF9093CE0057CF8091F2 +:10FEC000C80085FFFCCF7092CE00D2CF8091C800D1 +:0EFED00085FFFCCF9093CE00BFCFF894FFCFFC +:10FEDE0041546D656761424F4F54202F204172642B +:10FEEE0075696E6F204D656761202D20284329208E +:10FEFE0041726475696E6F204C4C43202D20303951 +:08FF0E00303933300A0D008088 +:040000031000F000F9 +:00000001FF diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex new file mode 100644 index 0000000..43a8b30 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex @@ -0,0 +1,125 @@ +:107800000C94343C0C94513C0C94513C0C94513CE1 +:107810000C94513C0C94513C0C94513C0C94513CB4 +:107820000C94513C0C94513C0C94513C0C94513CA4 +:107830000C94513C0C94513C0C94513C0C94513C94 +:107840000C94513C0C94513C0C94513C0C94513C84 +:107850000C94513C0C94513C0C94513C0C94513C74 +:107860000C94513C0C94513C11241FBECFEFD8E036 +:10787000DEBFCDBF11E0A0E0B1E0ECE9FFE702C060 +:1078800005900D92A230B107D9F712E0A2E0B1E065 +:1078900001C01D92AD30B107E1F70E942D3D0C945F +:1078A000CC3F0C94003C982F959595959595959582 +:1078B000905D8F708A307CF0282F295A8091C0000B +:1078C00085FFFCCF9093C6008091C00085FFFCCF60 +:1078D0002093C6000895282F205DF0CF982F809127 +:1078E000C00085FFFCCF9093C6000895EF92FF92F1 +:1078F0000F931F93EE24FF2487018091C00087FD22 +:1079000017C00894E11CF11C011D111D81E4E8164B +:1079100082E4F8068FE0080780E0180770F3E09132 +:107920000401F091050109958091C00087FFE9CF1E +:107930008091C6001F910F91FF90EF9008950E94D3 +:10794000763C982F8091C00085FFFCCF9093C600B5 +:1079500091362CF490330CF09053892F089597555D +:10796000892F08951F930E949F3C182F0E949F3CCF +:107970001295107F810F1F9108951F93182F882350 +:1079800021F00E94763C1150E1F71F9108951F935A +:10799000182F0E94763C803249F0809103018F5F5E +:1079A000809303018530C1F01F9108958091C0003C +:1079B00085FFFCCF84E18093C6008091C00085FFE5 +:1079C000FCCF1093C6008091C00085FFFCCF80E102 +:1079D0008093C6001F910895E0910401F091050184 +:1079E00009951F9108950E94763C803241F0809164 +:1079F00003018F5F80930301853081F008958091AA +:107A0000C00085FFFCCF84E18093C6008091C00058 +:107A100085FFFCCF80E18093C6000895E0910401CA +:107A2000F09105010995089540E951E08823A1F0FE +:107A30002D9A28EE33E0FA013197F1F721503040CA +:107A4000D1F72D9828EE33E0FA013197F1F7215064 +:107A50003040D1F7815061F708953F924F925F9285 +:107A60006F927F928F929F92AF92BF92CF92DF924E +:107A7000EF92FF920F931F93CF93DF93000080E16B +:107A80008093C4001092C50088E18093C10086E015 +:107A90008093C2005098589A259A81E00E94143D24 +:107AA00024E1F22E9EE1E92E85E9D82E0FE0C02ECA +:107AB00010E1B12EAA24A394B1E49B2EA6E58A2E50 +:107AC000F2E57F2EE0E26E2E79E4572E63E5462E36 +:107AD00050E5352E0E94763C8033B1F18133B9F107 +:107AE000803409F46FC0813409F476C0823409F41B +:107AF00085C0853409F488C0803531F1823521F1A3 +:107B0000813511F1853509F485C0863509F48DC0BC +:107B1000843609F496C0843709F403C1853709F423 +:107B200072C1863709F466C0809103018F5F80932C +:107B30000301853079F6E0910401F0910501099582 +:107B40000E94763C803351F60E94F33CC3CF0E94E2 +:107B5000763C803249F78091C00085FFFCCFF092DF +:107B6000C6008091C00085FFFCCF9092C600809136 +:107B7000C00085FFFCCF8092C6008091C00085FFC9 +:107B8000FCCF7092C6008091C00085FFFCCF609250 +:107B9000C6008091C00085FFFCCF5092C600809146 +:107BA000C00085FFFCCF4092C6008091C00085FFD9 +:107BB000FCCF3092C6008091C00085FFFCCFB09210 +:107BC000C60088CF0E94763C863808F4BDCF0E945C +:107BD000763C0E94F33C7ECF0E94763C803809F4CC +:107BE0009CC0813809F40BC1823809F43CC1883942 +:107BF00009F48FC080E00E94C73C6CCF84E10E94F2 +:107C0000BD3C0E94F33C66CF85E00E94BD3C0E94D3 +:107C1000F33C60CF0E94763C809306010E94763C44 +:107C2000809307010E94F33C55CF0E94763C80333D +:107C300009F41DC183E00E94BD3C80E00E94C73C66 +:107C400049CF0E94763C809309020E94763C809343 +:107C5000080280910C028E7F80930C020E94763C79 +:107C6000853409F415C18091080290910902892B8D +:107C700089F000E010E00E94763CF801E85FFE4FDA +:107C800080830F5F1F4F80910802909109020817AF +:107C9000190788F30E94763C803209F045CF809125 +:107CA0000C0280FF01C16091060170910701660F0F +:107CB000771F7093070160930601A0910802B091AD +:107CC00009021097C9F0E8E0F1E09B01AD014E0F09 +:107CD0005F1FF999FECF32BD21BD819180BDFA9A17 +:107CE000F99A2F5F3F4FE417F50799F76A0F7B1F4B +:107CF00070930701609306018091C00085FFFCCF5F +:107D0000F092C6008091C00085FFFCCFB092C60003 +:107D1000E1CE83E00E94C73CDDCE82E00E94C73CFA +:107D2000D9CE0E94763C809309020E94763C8093D3 +:107D300008028091060190910701880F991F909386 +:107D40000701809306010E94763C853409F4A6C0A1 +:107D500080910C028E7F80930C020E94763C8032D0 +:107D600009F0B8CE8091C00085FFFCCFF092C6002C +:107D7000609108027091090261157105B9F140E046 +:107D800050E080910C02A82FA170B82FB27011C0E2 +:107D9000BB2309F45CC0E0910601F0910701319624 +:107DA000F0930701E09306014F5F5F4F46175707B7 +:107DB000E8F4AA2369F3F999FECF209106013091E6 +:107DC000070132BD21BDF89A90B58091C00085FFB2 +:107DD000FCCF9093C6002F5F3F4F30930701209355 +:107DE00006014F5F5F4F4617570718F38091C00099 +:107DF00085FDE5CE8091C00085FFF8CFE0CE81E023 +:107E00000E94C73C67CE0E94763C803209F08CCE3F +:107E10008091C00085FFFCCFF092C6008091C00029 +:107E200085FFFCCFE092C6008091C00085FFFCCFAB +:107E3000D092C6008091C00085FFFCCFC092C600E2 +:107E40008091C00085FFFCCFB092C60043CEE09188 +:107E50000601F091070194918091C00085FFFCCF4D +:107E60009093C6009CCF80E10E94C73C33CE0E9415 +:107E7000763C0E94763C182F0E94763C112309F430 +:107E800083C0113009F484C08FE00E94C73C22CE29 +:107E900080910C02816080930C02E5CE80910C02EF +:107EA000816080930C0259CF809107018823880F4D +:107EB000880B8A2180930B02809106019091070123 +:107EC000880F991F90930701809306018091080203 +:107ED00080FF09C080910802909109020196909359 +:107EE000090280930802F894F999FECF1127E091D6 +:107EF0000601F0910701C8E0D1E08091080290915D +:107F00000902103091F40091570001700130D9F34B +:107F100003E000935700E89500915700017001308D +:107F2000D9F301E100935700E89509901990009169 +:107F3000570001700130D9F301E000935700E89534 +:107F40001395103498F011270091570001700130FB +:107F5000D9F305E000935700E895009157000170B0 +:107F60000130D9F301E100935700E895329602976A +:107F700009F0C7CF103011F00296E5CF112480919F +:107F8000C00085FFB9CEBCCE8EE10E94C73CA2CD19 +:0C7F900085E90E94C73C9ECDF894FFCF0D +:027F9C00800063 +:040000030000780081 +:00000001FF diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex new file mode 100644 index 0000000..9753e2e --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex @@ -0,0 +1,124 @@ +:107800000C94343C0C94513C0C94513C0C94513CE1 +:107810000C94513C0C94513C0C94513C0C94513CB4 +:107820000C94513C0C94513C0C94513C0C94513CA4 +:107830000C94513C0C94513C0C94513C0C94513C94 +:107840000C94513C0C94513C0C94513C0C94513C84 +:107850000C94513C0C94513C0C94513C0C94513C74 +:107860000C94513C0C94513C11241FBECFEFD8E036 +:10787000DEBFCDBF11E0A0E0B1E0EAE8FFE702C063 +:1078800005900D92A230B107D9F712E0A2E0B1E065 +:1078900001C01D92AD30B107E1F70E942D3D0C945F +:1078A000C33F0C94003C982F95959595959595958B +:1078B000905D8F708A307CF0282F295A8091C0000B +:1078C00085FFFCCF9093C6008091C00085FFFCCF60 +:1078D0002093C6000895282F205DF0CF982F809127 +:1078E000C00085FFFCCF9093C6000895EF92FF92F1 +:1078F0000F931F93EE24FF2487018091C00087FD22 +:1079000017C00894E11CF11C011D111D81E2E8164D +:1079100081EAF80687E0080780E0180770F3E09135 +:107920000401F091050109958091C00087FFE9CF1E +:107930008091C6001F910F91FF90EF9008950E94D3 +:10794000763C982F8091C00085FFFCCF9093C600B5 +:1079500091362CF490330CF09053892F089597555D +:10796000892F08951F930E949F3C182F0E949F3CCF +:107970001295107F810F1F9108951F93182F882350 +:1079800021F00E94763C1150E1F71F9108951F935A +:10799000182F0E94763C803249F0809103018F5F5E +:1079A000809303018530C1F01F9108958091C0003C +:1079B00085FFFCCF84E18093C6008091C00085FFE5 +:1079C000FCCF1093C6008091C00085FFFCCF80E102 +:1079D0008093C6001F910895E0910401F091050184 +:1079E00009951F9108950E94763C803241F0809164 +:1079F00003018F5F80930301853081F008958091AA +:107A0000C00085FFFCCF84E18093C6008091C00058 +:107A100085FFFCCF80E18093C6000895E0910401CA +:107A2000F09105010995089548EC50E08823A1F0F4 +:107A30002D9A28EE33E0FA013197F1F721503040CA +:107A4000D1F72D9828EE33E0FA013197F1F7215064 +:107A50003040D1F7815061F708953F924F925F9285 +:107A60006F927F928F929F92AF92BF92CF92DF924E +:107A7000EF92FF920F931F93CF93DF93000082E06A +:107A80008093C00080E18093C4001092C50088E11B +:107A90008093C10086E08093C2005098589A259A3E +:107AA00081E00E94143D24E1F22E9EE1E92E85E959 +:107AB000D82E0FE0C02E10E1B12EAA24A394B1E479 +:107AC0009B2EA6E58A2EF2E57F2EE0E26E2E79E46B +:107AD000572E63E5462E50E5352E0E94763C8033C6 +:107AE000B1F18133B9F1803409F46FC0813409F404 +:107AF00076C0823409F485C0853409F488C08035A5 +:107B000031F1823521F1813511F1853509F485C0D6 +:107B1000863509F48DC0843609F496C0843709F49B +:107B200003C1853709F472C1863709F466C08091B4 +:107B300003018F5F80930301853079F6E0910401A2 +:107B4000F091050109950E94763C803351F60E9420 +:107B5000F33CC3CF0E94763C803249F78091C0004D +:107B600085FFFCCFF092C6008091C00085FFFCCF5E +:107B70009092C6008091C00085FFFCCF8092C60025 +:107B80008091C00085FFFCCF7092C6008091C0003C +:107B900085FFFCCF6092C6008091C00085FFFCCFBE +:107BA0005092C6008091C00085FFFCCF4092C60075 +:107BB0008091C00085FFFCCF3092C6008091C0004C +:107BC00085FFFCCFB092C60088CF0E94763C8638F5 +:107BD00008F4BDCF0E94763C0E94F33C7ECF0E9409 +:107BE000763C803809F49CC0813809F40BC1823896 +:107BF00009F430C1883909F48FC080E00E94C73C85 +:107C00006CCF84E10E94BD3C0E94F33C66CF85E0CE +:107C10000E94BD3C0E94F33C60CF0E94763C809362 +:107C200006010E94763C809307010E94F33C55CFE9 +:107C30000E94763C803309F411C183E00E94BD3C70 +:107C400080E00E94C73C49CF0E94763C80930902A5 +:107C50000E94763C8093080280910C028E7F809374 +:107C60000C020E94763C853409F409C18091080217 +:107C700090910902892B89F000E010E00E94763C87 +:107C8000F801E85FFE4F80830F5F1F4F809108026D +:107C9000909109020817190788F30E94763C8032F8 +:107CA00009F045CF80910C0280FFF5C0609106017C +:107CB00070910701660F771F7093070160930601AB +:107CC000A0910802B09109021097C9F0E8E0F1E034 +:107CD0009B01AD014E0F5F1FF999FECF32BD21BD53 +:107CE000819180BDFA9AF99A2F5F3F4FE417F5070B +:107CF00099F76A0F7B1F70930701609306018091CB +:107D0000C00085FFFCCFF092C6008091C00085FFC7 +:107D1000FCCFB092C600E1CE83E00E94C73CDDCE2E +:107D200082E00E94C73CD9CE0E94763C8093090233 +:107D30000E94763C80930802809106019091070191 +:107D4000880F991F90930701809306010E94763C4B +:107D5000853409F49AC080910C028E7F80930C02C6 +:107D60000E94763C803209F0B8CE8091C00085FF39 +:107D7000FCCFF092C600A0910802B09109021097C2 +:107D8000C1F180910C02082F0170182F1695117007 +:107D9000E0910601F0910701AF014F5F5F4FBA011B +:107DA00020E030E00023B1F4112339F49491809164 +:107DB000C00085FFFCCF9093C6002F5F3F4FCB01E3 +:107DC0000196FA012A173B0780F4BC014F5F5F4F11 +:107DD000002351F3F999FECFF2BDE1BDF89A90B5B9 +:107DE0008091C00085FFFCCFE6CF709307016093C0 +:107DF00006018091C00085FDE5CE8091C00085FF21 +:107E0000F8CFE0CE81E00E94C73C67CE0E94763C6E +:107E1000803209F08CCE8091C00085FFFCCFF092BB +:107E2000C6008091C00085FFFCCFE092C600809123 +:107E3000C00085FFFCCFD092C6008091C00085FFB6 +:107E4000FCCFC092C6008091C00085FFFCCFB092ED +:107E5000C60043CE80E10E94C73C3FCE0E94763CE4 +:107E60000E94763C182F0E94763C112309F483C0AF +:107E7000113009F484C08FE00E94C73C2ECE80915F +:107E80000C02816080930C02F1CE80910C02816023 +:107E900080930C0265CF809107018823880F880B9F +:107EA0008A2180930B028091060190910701880F2F +:107EB000991F90930701809306018091080280FF2B +:107EC00009C08091080290910902019690930902DD +:107ED00080930802F894F999FECF1127E0910601EA +:107EE000F0910701C8E0D1E0809108029091090269 +:107EF000103091F40091570001700130D9F303E084 +:107F000000935700E8950091570001700130D9F3B4 +:107F100001E100935700E8950990199000915700EE +:107F200001700130D9F301E000935700E8951395F3 +:107F3000103498F011270091570001700130D9F3E7 +:107F400005E000935700E89500915700017001305B +:107F5000D9F301E100935700E8953296029709F0B2 +:107F6000C7CF103011F00296E5CF11248091C000E8 +:107F700085FFC5CEC8CE8EE10E94C73CAECD85E957 +:0A7F80000E94C73CAACDF894FFCF81 +:027F8A00800075 +:040000030000780081 +:00000001FF diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex new file mode 100644 index 0000000..feac9d2 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_diecimila.hex @@ -0,0 +1,126 @@ +:103800000C94341C0C94511C0C94511C0C94511CA1 +:103810000C94511C0C94511C0C94511C0C94511C74 +:103820000C94511C0C94511C0C94511C0C94511C64 +:103830000C94511C0C94511C0C94511C0C94511C54 +:103840000C94511C0C94511C0C94511C0C94511C44 +:103850000C94511C0C94511C0C94511C0C94511C34 +:103860000C94511C0C94511C11241FBECFEFD4E0BA +:10387000DEBFCDBF11E0A0E0B1E0E4EAFFE302C0AB +:1038800005900D92A230B107D9F712E0A2E0B1E0A5 +:1038900001C01D92AD30B107E1F70E94361D0C94B6 +:1038A000D01F0C94001C982F9595959595959595FE +:1038B000905D8F708A307CF0282F295A8091C0004B +:1038C00085FFFCCF9093C6008091C00085FFFCCFA0 +:1038D0002093C6000895282F205DF0CF982F809167 +:1038E000C00085FFFCCF9093C6000895EF92FF9231 +:1038F0000F931F93EE24FF2487018091C00087FD62 +:1039000017C00894E11CF11C011D111D81E4E8168B +:1039100082E4F8068FE0080780E0180770F3E09172 +:103920000401F091050109958091C00087FFE9CF5E +:103930008091C6001F910F91FF90EF9008950E9413 +:10394000761C982F8091C00085FFFCCF9093C60015 +:1039500091362CF490330CF09053892F089597559D +:10396000892F08951F930E949F1C182F0E949F1C4F +:103970001295107F810F1F910895882351F0982F81 +:1039800091508091C00087FFFCCF8091C6009923A1 +:10399000B9F708951F93182F0E94761C803249F0C2 +:1039A000809103018F5F809303018530C1F01F91E7 +:1039B00008958091C00085FFFCCF84E18093C6000C +:1039C0008091C00085FFFCCF1093C6008091C0009D +:1039D00085FFFCCF80E18093C6001F910895E091A0 +:1039E0000401F091050109951F9108950E94761C2C +:1039F000803241F0809103018F5F80930301853015 +:103A000081F008958091C00085FFFCCF84E1809310 +:103A1000C6008091C00085FFFCCF80E18093C60086 +:103A20000895E0910401F09105010995089510921F +:103A30000A028823D1F090E040E951E02D9A28EE67 +:103A400033E0FA013197F1F721503040D1F72D984A +:103A500028EE33E0FA013197F1F721503040D1F7E9 +:103A60009F5F981758F380930A0208953F924F92F0 +:103A70005F926F927F928F929F92AF92BF92CF92FE +:103A8000DF92EF92FF920F931F93CF93DF9300008B +:103A900083E38093C4001092C50088E18093C10045 +:103AA00086E08093C2005098589A259A81E00E943F +:103AB000171D44E1F42E3EE1E32E24E9D22E96E0D8 +:103AC000C92E80E1B82EAA24A39401E4902E16E515 +:103AD000812EB2E57B2EA0E26A2EF9E45F2EE3E5AB +:103AE0004E2E70E5372E0E94761C8033B1F1813363 +:103AF00009F441C0803409F479C0813409F48CC0E0 +:103B0000823471F1853409F47BC0803531F182351E +:103B100021F1813511F1853509F48DC0863509F41F +:103B20009DC0843609F4AEC0843709F41BC18537C3 +:103B300009F485C1863709F47AC0809103018F5F4B +:103B400080930301853079F6E0910401F09105013D +:103B500009950E94761C803351F60E94F61CC3CF53 +:103B600093E18091C00087FFFCCF8091C60099232C +:103B7000A1F39150F6CF0E94761C8032F1F680912D +:103B8000C00085FFFCCFF092C6008091C00085FF89 +:103B9000FCCF9092C6008091C00085FFFCCF809240 +:103BA000C6008091C00085FFFCCF7092C600809156 +:103BB000C00085FFFCCF6092C6008091C00085FFE9 +:103BC000FCCF5092C6008091C00085FFFCCF409290 +:103BD000C6008091C00085FFFCCF3092C600809166 +:103BE000C00085FFFCCFB092C6007DCF0E94761C3E +:103BF000863808F4B2CF0E94761C0E94F61C73CF60 +:103C000094E08091C00087FFFCCF8091C60099238B +:103C100009F4A3CF9150F5CF0E94761C8038D1F0E3 +:103C2000813861F1823809F499C0883979F080E0EF +:103C30000E94CA1C58CF0E94761C809306010E94E5 +:103C4000761C809307010E94F61C4DCF83E00E94F2 +:103C5000CA1C49CF82E00E94CA1C45CF0E94761C34 +:103C6000803309F486C192E08091C00087FFFCCFC9 +:103C70008091C6009923D9F29150F6CF81E00E943D +:103C8000CA1C31CF0E94761C809309020E94761CC8 +:103C90008093080280910C028E7F80930C020E9418 +:103CA000761C853429F480910C02816080930C028B +:103CB0008091080290910902892B89F000E010E0C0 +:103CC0000E94761CF801E85FFE4F80830F5F1F4F54 +:103CD00080910802909109020817190788F30E9441 +:103CE000761C803209F029CF80910C0280FFD1C070 +:103CF0004091060150910701440F551F5093070151 +:103D000040930601A0910802B09109021097C9F0F2 +:103D1000E8E0F1E09A01BD016E0F7F1FF999FECF37 +:103D200032BD21BD819180BDFA9AF99A2F5F3F4F34 +:103D3000E617F70799F74A0F5B1F50930701409367 +:103D400006018091C00085FFFCCFF092C6008091F3 +:103D5000C00085FFFCCFB092C600C5CE80E10E94B6 +:103D6000CA1CC1CE0E94761C809309020E94761C58 +:103D7000809308028091060190910701880F991F96 +:103D800090930701809306010E94761C853409F404 +:103D90007AC080910C028E7F80930C020E94761C68 +:103DA000803209F0A0CE8091C00085FFFCCFF09258 +:103DB000C600A0910802B09109021097B9F1809154 +:103DC0000C02182F1170082F0270E0910601F0917B +:103DD00007019F012F5F3F4FB90140E050E01123E1 +:103DE000B1F4002339F494918091C00085FFFCCF99 +:103DF0009093C6004F5F5F4FCB010196F9014A17C0 +:103E00005B0780F4BC012F5F3F4F112351F3F999F9 +:103E1000FECFF2BDE1BDF89A90B58091C00085FF5C +:103E2000FCCFE6CF70930701609306018091C0003C +:103E300085FDD9CE8091C00085FFF8CFD4CE0E94F9 +:103E4000761C803209F079CE8091C00085FFFCCFCE +:103E5000F092C6008091C00085FFFCCFE092C600C2 +:103E60008091C00085FFFCCFD092C6008091C00039 +:103E700085FFFCCFC092C6008091C00085FFFCCFBB +:103E8000B092C60030CE80910C02816080930C020B +:103E900085CF809107018823880F880B8A21809322 +:103EA0000B028091060190910701880F991F909352 +:103EB0000701809306018091080280FF09C080916C +:103EC00008029091090201969093090280930802DA +:103ED000F894F999FECF1127E0910601F0910701BE +:103EE000C8E0D1E08091080290910902103091F46D +:103EF0000091570001700130D9F303E0009357009F +:103F0000E8950091570001700130D9F301E1009369 +:103F10005700E89509901990009157000170013001 +:103F2000D9F301E000935700E8951395103498F009 +:103F300011270091570001700130D9F305E000937B +:103F40005700E8950091570001700130D9F301E165 +:103F500000935700E8953296029709F0C7CF1030CA +:103F600011F00296E5CF11248091C00085FFE9CEC3 +:103F7000ECCE0E94761C0E94761C182F0E94761CA4 +:103F8000112351F0113021F086E00E94CA1CABCD04 +:103F900084E90E94CA1CA7CD8EE10E94CA1CA3CD51 +:043FA000F894FFCFC3 +:023FA40080009B +:0400000300003800C1 +:00000001FF diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_ng.hex b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_ng.hex new file mode 100644 index 0000000..387091e --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_ng.hex @@ -0,0 +1,110 @@ +:103800000C94341C0C94511C0C94511C0C94511CA1 +:103810000C94511C0C94511C0C94511C0C94511C74 +:103820000C94511C0C94511C0C94511C0C94511C64 +:103830000C94511C0C94511C0C94511C0C94511C54 +:103840000C94511C0C94511C0C94511C0C94511C44 +:103850000C94511C0C94511C0C94511C0C94511C34 +:103860000C94511C0C94511C11241FBECFEFD4E0BA +:10387000DEBFCDBF11E0A0E0B1E0E4EAFEE302C0AC +:1038800005900D92A230B107D9F712E0A2E0B1E0A5 +:1038900001C01D92AD30B107E1F70E94ED1C0C9400 +:1038A000511F0C94001C482F10920A0280E08417CC +:1038B000E0F4582F2D9A28EE33E080E991E001974B +:1038C000F1F721503040C9F72D9828EE33E080E918 +:1038D00091E00197F1F721503040C9F7852F8F5FB4 +:1038E000582F841738F380930A020895EF92FF92BD +:1038F0000F931F93EE24FF2487018091C00087FD62 +:1039000017C00894E11CF11C011D111D81E0E8168F +:1039100082E1F8068AE7080780E0180770F3E09173 +:103920000201F091030109958091C00087FFE9CF62 +:103930008091C600992787FD90951F910F91FF9068 +:10394000EF900895982F8091C00085FFFCCF909351 +:10395000C60008950E94761C803271F080910401A7 +:103960008F5F80930401853009F00895E091020192 +:10397000F09103010995089584E10E94A21C80E161 +:103980000E94A21C0895CF93C82F0E94761C8032FB +:1039900041F0809104018F5F80930401853081F4B0 +:1039A0000AC084E10E94A21C8C2F0E94A21C80E10C +:1039B0000E94A21C05C0E0910201F091030109954B +:1039C000CF910895CF93C82FC150CF3F21F00E94CF +:1039D000761CC150E0F7CF910895CFEFD4E0DEBF61 +:1039E000CDBF000083E38093C4001092C50088E13E +:1039F0008093C10086E08093C2005098589A259A1F +:103A000083E00E94531C0E94761C8033B1F1813305 +:103A1000B9F1803409F455C0813409F45BC08234B3 +:103A200009F46DC0853409F470C0803531F18235F8 +:103A300021F1813511F1853509F46BC0863509F422 +:103A400073C0843609F47AC0843709F4CEC0853750 +:103A500009F429C1863709F44AC0809104018F5FB7 +:103A600080930401853079F6E0910201F091030121 +:103A700009950E94761C803351F60E94AA1CC3CF80 +:103A80000E94761CC82F803241F784E10E94A21C5C +:103A900081E40E94A21C86E50E94A21C82E50E948D +:103AA000A21C8C2F0E94A21C89E40E94A21C83E508 +:103AB0000E94A21C80E50E94A21C80E10E94A21C20 +:103AC000A2CF0E94761C8638C0F20E94761C0E940B +:103AD000AA1C99CF0E94761C803809F486C18138CF +:103AE00009F487C1823809F488C1883921F080E05F +:103AF0000E94C31C88CF83E00E94C31C84CF84E152 +:103B00000E94E21C0E94AA1C7ECF85E00E94E21C5B +:103B1000F9CF0E94761C809306010E94761C809348 +:103B200007010E94AA1C6FCF0E94761C803309F403 +:103B3000CAC083E00E94E21C80E0DACF0E94761CBB +:103B4000809309020E94761C8093080280910C02E7 +:103B50008E7F80930C020E94761C853409F4C4C0C9 +:103B600000E010E0809108029091090218161906F1 +:103B700070F4C8E0D1E00E94761C89930F5F1F4F5C +:103B8000809108029091090208171907A0F30E947A +:103B9000761C803209F061CF80910C0280FFAEC0AC +:103BA000E0910601F0910701EE0FFF1F00E010E029 +:103BB00020910802309109021216130680F4A8E041 +:103BC000B1E0F999FECFF2BDE1BD8D9180BDFA9AC9 +:103BD000F99A31960F5F1F4F0217130790F3F09376 +:103BE0000701E093060184E166CF0E94761C809372 +:103BF00009020E94761C8093080280910601909130 +:103C00000701880F991F90930701809306010E9476 +:103C1000761C853409F46EC080910C028E7F8093EF +:103C20000C020E94761C803209F0EDCE84E10E94E5 +:103C3000A21C00E010E02091080230910902121647 +:103C4000130608F03ACFE0910601F0910701809148 +:103C50000C0280FF1FC0F999FECFF2BDE1BDF89ABA +:103C600080B50E94A21CE0910601F09107013196F7 +:103C7000F0930701E09306012091080230910902B8 +:103C80000F5F1F4F0217130708F017CF80910C0228 +:103C900080FDE1CF869580FFB4C03196F093070197 +:103CA000E0930601EDCF0E94761C803209F0D5CE5C +:103CB00084E10E94A21C8EE10E94A21C84E90E9461 +:103CC000A21C86E0F8CE0E94761C0E94761CC82FAB +:103CD0000E94761CCC2309F47CC0C13009F47DC05D +:103CE00086E00E94C31C8FCE80910C02816080937D +:103CF0000C0236CF80910C02816091CF8091070138 +:103D000087FD6FC010920B02809106019091070110 +:103D1000880F991F909307018093060180910802F4 +:103D200080FF09C08091080290910902019690934A +:103D3000090280930802F894F999FECF1127E091C7 +:103D40000601F0910701C8E0D1E08091080290914E +:103D50000902103091F40091570001700130D9F33D +:103D600003E000935700E89500915700017001307F +:103D7000D9F301E100935700E8950990199000915B +:103D8000570001700130D9F301E000935700E89526 +:103D90001395103498F011270091570001700130ED +:103DA000D9F305E000935700E895009157000170A2 +:103DB0000130D9F301E100935700E895329602975C +:103DC00009F0C7CF103011F00296E5CF112484E13D +:103DD00072CE8EE10E94C31C16CE84E90E94C31CE1 +:103DE00012CE81E080930B028FCF82E00E94C31C31 +:103DF0000ACE81E00E94C31C06CE80E10E94C31C53 +:103E000002CE84910E94A21C2091080230910902E6 +:103E1000E0910601F091070140CFCF930E94761CFC +:103E2000C82F0E94A21CC13614F0C75503C0C0336E +:103E30000CF0C0538C2F992787FD9095CF91089552 +:103E40000F931F930E940D1F082F112707FD109538 +:103E500002951295107F1027007F10270E940D1FDA +:103E6000800F992787FD90951F910F910895CF930B +:103E7000C82F85958595859585958A3034F0895A22 +:103E8000CF70CA3034F0C95A05C0805DCF70CA30D7 +:103E9000D4F7C05D0E94A21C8C2F0E94A21CCF915F +:043EA0000895FFCFB3 +:023EA40080009C +:0400000300003800C1 +:00000001FF diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex new file mode 100644 index 0000000..994e478 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168_pro_8MHz.hex @@ -0,0 +1,126 @@ +:103800000C94341C0C94511C0C94511C0C94511CA1 +:103810000C94511C0C94511C0C94511C0C94511C74 +:103820000C94511C0C94511C0C94511C0C94511C64 +:103830000C94511C0C94511C0C94511C0C94511C54 +:103840000C94511C0C94511C0C94511C0C94511C44 +:103850000C94511C0C94511C0C94511C0C94511C34 +:103860000C94511C0C94511C11241FBECFEFD4E0BA +:10387000DEBFCDBF11E0A0E0B1E0EEEAFFE302C0A1 +:1038800005900D92A230B107D9F712E0A2E0B1E0A5 +:1038900001C01D92AD30B107E1F70E94331D0C94B9 +:1038A000D51F0C94001C982F9595959595959595F9 +:1038B000905D8F708A307CF0282F295A8091C0004B +:1038C00085FFFCCF9093C6008091C00085FFFCCFA0 +:1038D0002093C6000895282F205DF0CF982F809167 +:1038E000C00085FFFCCF9093C6000895EF92FF9231 +:1038F0000F931F93EE24FF2487018091C00087FD62 +:1039000017C00894E11CF11C011D111D81E2E8168D +:1039100081EAF80687E0080780E0180770F3E09175 +:103920000401F091050109958091C00087FFE9CF5E +:103930008091C6001F910F91FF90EF9008950E9413 +:10394000761C982F8091C00085FFFCCF9093C60015 +:1039500091362CF490330CF09053892F089597559D +:10396000892F08951F930E949F1C182F0E949F1C4F +:103970001295107F810F1F9108951F93182F882390 +:1039800021F00E94761C1150E1F71F9108951F93BA +:10399000182F0E94761C803249F0809103018F5FBE +:1039A000809303018530C1F01F9108958091C0007C +:1039B00085FFFCCF84E18093C6008091C00085FF25 +:1039C000FCCF1093C6008091C00085FFFCCF80E142 +:1039D0008093C6001F910895E0910401F0910501C4 +:1039E00009951F9108950E94761C803241F08091C4 +:1039F00003018F5F80930301853081F008958091EA +:103A0000C00085FFFCCF84E18093C6008091C00098 +:103A100085FFFCCF80E18093C6000895E09104010A +:103A2000F09105010995089510920A028823D1F0BA +:103A300090E048EC50E02D9A28EE33E0FA013197FF +:103A4000F1F721503040D1F72D9828EE33E0FA01FC +:103A50003197F1F721503040D1F79F5F981758F315 +:103A600080930A0208953F924F925F926F927F92E5 +:103A70008F929F92AF92BF92CF92DF92EF92FF927E +:103A80000F931F93CF93DF9394B714BE8091600080 +:103A90008861809360001092600091FF0CC289E100 +:103AA0008093C4001092C50088E18093C10086E035 +:103AB0008093C2005098589A259A81E00E94141D64 +:103AC00044E1F42E3EE1E32E24E9D22E96E0C92E05 +:103AD00080E1B82EAA24A39401E4902E16E5812E4D +:103AE000B2E57B2EA0E26A2EF9E45F2EE3E54E2ECE +:103AF00070E5372E0E94761C8033B9F18133C1F115 +:103B0000803409F470C0813409F477C0823409F438 +:103B100086C0853409F489C0803539F1823529F1B0 +:103B2000813509F4AFC1853509F485C0863509F4BE +:103B30008DC0843609F435C1843709F4C1C0853796 +:103B400009F490C0863709F466C0809103018F5F45 +:103B500080930301853071F6E0910401F091050135 +:103B600009950E94761C803349F60E94F31CC2CF4F +:103B70000E94761C803249F78091C00085FFFCCFFF +:103B8000F092C6008091C00085FFFCCF9092C600E5 +:103B90008091C00085FFFCCF8092C6008091C0005C +:103BA00085FFFCCF7092C6008091C00085FFFCCFDE +:103BB0006092C6008091C00085FFFCCF5092C60085 +:103BC0008091C00085FFFCCF4092C6008091C0006C +:103BD00085FFFCCF3092C6008091C00085FFFCCFEE +:103BE000B092C60087CF0E94761C863808F4BDCFFD +:103BF0000E94761C0E94F31C7DCF0E94761C8038A8 +:103C000009F45AC0813809F453C0823809F440C11C +:103C1000883909F449C080E00E94C71C6BCF84E159 +:103C20000E94BD1C0E94F31C65CF85E00E94BD1C54 +:103C30000E94F31C5FCF0E94761C809306010E94B5 +:103C4000761C809307010E94F31C54CF0E94761CBF +:103C5000803309F421C183E00E94BD1C80E00E94F2 +:103C6000C71C48CF0E94761C803209F06ECF80912D +:103C7000C00085FFFCCFF092C6008091C00085FF98 +:103C8000FCCFE092C6008091C00085FFFCCFD092AF +:103C9000C6008091C00085FFFCCFC092C600809115 +:103CA000C00085FFFCCF9CCF83E00E94C71C22CFC1 +:103CB00081E00E94C71C1ECF82E00E94C71C1ACF61 +:103CC0000E94761C809309020E94761C8093080251 +:103CD0008091060190910701880F991F9093070129 +:103CE000809306010E94761C853409F4C5C080913A +:103CF0000C028E7F80930C020E94761C803209F0A9 +:103D0000F9CE8091C00085FFFCCFF092C600609193 +:103D10000802709109026115710591F140E050E0CF +:103D200080910C02A82FA170B82FB27010C0BB23D5 +:103D300061F1E0910601F09107013196F0930701DE +:103D4000E09306014F5F5F4F46175707C8F4AA2359 +:103D500071F3F999FECF209106013091070132BD30 +:103D600021BDF89A90B58091C00085FFFCCF90935B +:103D7000C6002F5F3F4F3093070120930601E2CF2B +:103D80008091C00085FFFCCF2BCFE0910601F09120 +:103D9000070194918091C00085FFFCCF9093C600ED +:103DA000CCCF0E94761C809309020E94761C8093DF +:103DB000080280910C028E7F80930C020E94761C78 +:103DC000853429F480910C02816080930C028091EB +:103DD000080290910902892B89F000E010E00E940E +:103DE000761CF801E85FFE4F80830F5F1F4F8091C4 +:103DF0000802909109020817190788F30E94761C9F +:103E0000803209F0A2CE80910C0280FF62C0409106 +:103E1000060150910701440F551F5093070140932D +:103E20000601609108027091090261157105C9F0DF +:103E3000E8E0F1E09A01DB01AE0FBF1FF999FECF78 +:103E400032BD21BD819180BDFA9AF99A2F5F3F4F13 +:103E5000EA17FB0799F7460F571F50930701409346 +:103E600006018091C00085FFFCCFF092C6008091D2 +:103E7000C00085FFFCCFB4CE80910C02816080939E +:103E80000C023ACF0E94F31C88E080936000FFCFC1 +:103E900080E10E94C71C2ECE0E94761C0E94761CD8 +:103EA000182F0E94761C112381F0113051F086E00A +:103EB0000E94C71C1FCEE0910401F09105010995F5 +:103EC000EECD84E90E94C71C15CE8EE10E94C71C6E +:103ED00011CE809107018823880F880B8A21809357 +:103EE0000B028091060190910701880F991F909312 +:103EF0000701809306018091080280FF09C080912C +:103F00000802909109020196909309028093080299 +:103F1000F894F999FECF1127E0910601F09107017D +:103F2000C8E0D1E08091080290910902103091F42C +:103F30000091570001700130D9F303E0009357005E +:103F4000E8950091570001700130D9F301E1009329 +:103F50005700E895099019900091570001700130C1 +:103F6000D9F301E000935700E8951395103498F0C9 +:103F700011270091570001700130D9F305E000933B +:103F80005700E8950091570001700130D9F301E125 +:103F900000935700E8953296029709F0C7CF10308A +:0E3FA00011F00296E5CF11245CCFF894FFCF0C +:023FAE00800091 +:0400000300003800C1 +:00000001FF diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega/Makefile b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/Makefile new file mode 100644 index 0000000..0fd54db --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega/Makefile @@ -0,0 +1,224 @@ +# Makefile for ATmegaBOOT +# E.Lins, 18.7.2005 +# $Id$ +# +# Instructions +# +# To make bootloader .hex file: +# make diecimila +# make lilypad +# make ng +# etc... +# +# To burn bootloader .hex file: +# make diecimila_isp +# make lilypad_isp +# make ng_isp +# etc... + +# program name should not be changed... +PROGRAM = ATmegaBOOT_168 + +# enter the parameters for the avrdude isp tool +ISPTOOL = stk500v2 +ISPPORT = usb +ISPSPEED = -b 115200 + +MCU_TARGET = atmega168 +LDSECTION = --section-start=.text=0x3800 + +# the efuse should really be 0xf8; since, however, only the lower +# three bits of that byte are used on the atmega168, avrdude gets +# confused if you specify 1's for the higher bits, see: +# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ +# +# similarly, the lock bits should be 0xff instead of 0x3f (to +# unlock the bootloader section) and 0xcf instead of 0x0f (to +# lock it), but since the high two bits of the lock byte are +# unused, avrdude would get confused. + +ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m +ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m + +STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" +STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ +-lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt +STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt + + +OBJ = $(PROGRAM).o +OPTIMIZE = -O2 + +DEFS = +LIBS = + +CC = avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) +override LDFLAGS = -Wl,$(LDSECTION) +#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION) + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: + +lilypad: TARGET = lilypad +lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +lilypad: AVR_FREQ = 8000000L +lilypad: $(PROGRAM)_lilypad.hex + +lilypad_isp: lilypad +lilypad_isp: TARGET = lilypad +lilypad_isp: HFUSE = DD +lilypad_isp: LFUSE = E2 +lilypad_isp: EFUSE = 00 +lilypad_isp: isp + +lilypad_resonator: TARGET = lilypad_resonator +lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3' +lilypad_resonator: AVR_FREQ = 8000000L +lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex + +lilypad_resonator_isp: lilypad_resonator +lilypad_resonator_isp: TARGET = lilypad_resonator +lilypad_resonator_isp: HFUSE = DD +lilypad_resonator_isp: LFUSE = C6 +lilypad_resonator_isp: EFUSE = 00 +lilypad_resonator_isp: isp + +pro8: TARGET = pro_8MHz +pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro8: AVR_FREQ = 8000000L +pro8: $(PROGRAM)_pro_8MHz.hex + +pro8_isp: pro8 +pro8_isp: TARGET = pro_8MHz +pro8_isp: HFUSE = DD +pro8_isp: LFUSE = C6 +pro8_isp: EFUSE = 00 +pro8_isp: isp + +pro16: TARGET = pro_16MHz +pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro16: AVR_FREQ = 16000000L +pro16: $(PROGRAM)_pro_16MHz.hex + +pro16_isp: pro16 +pro16_isp: TARGET = pro_16MHz +pro16_isp: HFUSE = DD +pro16_isp: LFUSE = C6 +pro16_isp: EFUSE = 00 +pro16_isp: isp + +pro20: TARGET = pro_20mhz +pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro20: AVR_FREQ = 20000000L +pro20: $(PROGRAM)_pro_20mhz.hex + +pro20_isp: pro20 +pro20_isp: TARGET = pro_20mhz +pro20_isp: HFUSE = DD +pro20_isp: LFUSE = C6 +pro20_isp: EFUSE = 00 +pro20_isp: isp + +diecimila: TARGET = diecimila +diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' +diecimila: AVR_FREQ = 16000000L +diecimila: $(PROGRAM)_diecimila.hex + +diecimila_isp: diecimila +diecimila_isp: TARGET = diecimila +diecimila_isp: HFUSE = DD +diecimila_isp: LFUSE = FF +diecimila_isp: EFUSE = 00 +diecimila_isp: isp + +ng: TARGET = ng +ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +ng: AVR_FREQ = 16000000L +ng: $(PROGRAM)_ng.hex + +ng_isp: ng +ng_isp: TARGET = ng +ng_isp: HFUSE = DD +ng_isp: LFUSE = FF +ng_isp: EFUSE = 00 +ng_isp: isp + +atmega328: TARGET = atmega328 +atmega328: MCU_TARGET = atmega328p +atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 +atmega328: AVR_FREQ = 16000000L +atmega328: LDSECTION = --section-start=.text=0x7800 +atmega328: $(PROGRAM)_atmega328.hex + +atmega328_isp: atmega328 +atmega328_isp: TARGET = atmega328 +atmega328_isp: MCU_TARGET = atmega328p +atmega328_isp: HFUSE = DA +atmega328_isp: LFUSE = FF +atmega328_isp: EFUSE = 05 +atmega328_isp: isp + +atmega328_pro8: TARGET = atmega328_pro_8MHz +atmega328_pro8: MCU_TARGET = atmega328p +atmega328_pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DDOUBLE_SPEED +atmega328_pro8: AVR_FREQ = 8000000L +atmega328_pro8: LDSECTION = --section-start=.text=0x7800 +atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex + +atmega328_pro8_isp: atmega328_pro8 +atmega328_pro8_isp: TARGET = atmega328_pro_8MHz +atmega328_pro8_isp: MCU_TARGET = atmega328p +atmega328_pro8_isp: HFUSE = DA +atmega328_pro8_isp: LFUSE = FF +atmega328_pro8_isp: EFUSE = 05 +atmega328_pro8_isp: isp + +mega: TARGET = atmega1280 +mega: MCU_TARGET = atmega1280 +mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600 +mega: AVR_FREQ = 16000000L +mega: LDSECTION = --section-start=.text=0x1F000 +mega: $(PROGRAM)_atmega1280.hex + +mega_isp: mega +mega_isp: TARGET = atmega1280 +mega_isp: MCU_TARGET = atmega1280 +mega_isp: HFUSE = DA +mega_isp: LFUSE = FF +mega_isp: EFUSE = F5 +mega_isp: isp + +isp: $(TARGET) + $(ISPFUSES) + $(ISPFLASH) + +isp-stk500: $(PROGRAM)_$(TARGET).hex + $(STK500-1) + $(STK500-2) + +%.elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c b/arduino-0018-windows/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c new file mode 100644 index 0000000..17977e6 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/atmega8/ATmegaBOOT.c @@ -0,0 +1,507 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel mega8 AVR Controller */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* */ +/* Hacked by DojoCorp - ZGZ - MMX - IVR */ +/* Hacked by David A. Mellis */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m8 */ +/**********************************************************/ + +#include +#include +#include +#include +#include +#include + +//#define F_CPU 16000000 + +/* We, Malmoitians, like slow interaction + * therefore the slow baud rate ;-) + */ +//#define BAUD_RATE 9600 + +/* 6.000.000 is more or less 8 seconds at the + * speed configured here + */ +//#define MAX_TIME_COUNT 6000000 +#define MAX_TIME_COUNT (F_CPU>>1) +///#define MAX_TIME_COUNT_MORATORY 1600000 + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x12 + +// AVR-GCC compiler compatibility +// avr-gcc compiler v3.1.x and older doesn't support outb() and inb() +// if necessary, convert outb and inb to outp and inp +#ifndef outb + #define outb(sfr,val) (_SFR_BYTE(sfr) = (val)) +#endif +#ifndef inb + #define inb(sfr) _SFR_BYTE(sfr) +#endif + +/* defines for future compatibility */ +#ifndef cbi + #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi + #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +#define eeprom_rb(addr) eeprom_read_byte ((uint8_t *)(addr)) +#define eeprom_rw(addr) eeprom_read_word ((uint16_t *)(addr)) +#define eeprom_wb(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val)) + +/* Onboard LED is connected to pin PB5 */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 + + +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + + +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); + +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +//uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +//uint8_t bootuart0=0,bootuart1=0; + + +void (*app_start)(void) = 0x0000; + +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + + //cbi(BL_DDR,BL); + //sbi(BL_PORT,BL); + + asm volatile("nop\n\t"); + + /* check if flash is programmed already, if not start bootloader anyway */ + //if(pgm_read_byte_near(0x0000) != 0xFF) { + + /* check if bootloader pin is set low */ + //if(bit_is_set(BL_PIN,BL)) app_start(); + //} + + /* initialize UART(s) depending on CPU defined */ + /* m8 */ + UBRRH = (((F_CPU/BAUD_RATE)/16)-1)>>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + //UCSRA = 0x00; + //UCSRC = 0x86; + //UCSRB = _BV(TXEN)|_BV(RXEN); + + + /* this was giving uisp problems, so I removed it; without it, the boot + works on with uisp and avrdude on the mac (at least). */ + //putch('\0'); + + //uint32_t l; + //uint32_t time_count; + //time_count=0; + + /* set LED pin as output */ + sbi(LED_DDR,LED); + for (i = 0; i < 16; i++) { + outb(LED_PORT, inb(LED_PORT) ^ _BV(LED)); + _delay_loop_2(0); + } + + //for (l=0; l<40000000; l++) + //outb(LED_PORT, inb(LED_PORT) ^= _BV(LED)); + + /* flash onboard LED three times to signal entering of bootloader */ + //for(i=0; i<3; ++i) { + //for(l=0; l<40000000; ++l); + //sbi(LED_PORT,LED); + //for(l=0; l<40000000; ++l); + //cbi(LED_PORT,LED); + //} + + /* see comment at previous call to putch() */ + //putch('\0'); // this line is needed for the synchronization of the programmer + + /* forever */ + for (;;) { + //if((inb(UCSRA) & _BV(RXC))){ + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } + } + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + //else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + /* Enter programming mode */ + else if(ch=='P') { + nothing_response(); + // FIXME: modified only here by DojoCorp, Mumbai, India, 20050626 + //time_count=0; // exted the delay once entered prog.mode + } + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); + //time_count=MAX_TIME_COUNT_MORATORY; // once the programming is done, + // we should start the application + // but uisp has problems with this, + // therefore we just change the times + // and give the programmer 1 sec to react + } + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') { + nothing_response(); + } + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + getNch(4); + byte_response(0x00); + } + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + //else address_high = 0x00; + + //address.word = address.word << 1; //address * 2 -> byte location + //if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure + while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in words) + "lds r31,address+1 \n\t" + "lsl r30 \n\t" //address * 2 -> byte location + "rol r31 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "sbrs r24,0 \n\t" //Even up an odd number of bytes + "rjmp length_loop \n\t" + "adiw r24,1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "rcall wait_spm \n\t" +// "wait_spm1: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" + "rcall wait_spm \n\t" +// "wait_spm2: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm2 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "rcall wait_spm \n\t" +// "wait_spm3: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "rcall wait_spm \n\t" +// "wait_spm4: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm4 \n\t" + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" + "rcall wait_spm \n\t" +// "wait_spm5: \n\t" +// "lds r16,%0 \n\t" //Wait for previous spm to complete +// "andi r16,1 \n\t" +// "cpi r16,1 \n\t" +// "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + + "wait_spm: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm \n\t" + "ret \n\t" + + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31"); + + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } + } + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); + if (getch() == 'E') flags.eeprom = 1; + else { + flags.eeprom = 0; + address.word = address.word << 1; // address * 2 -> byte location + } + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read + putch(eeprom_rb(address.word)); + address.word++; + } else { + if (!flags.rampz) putch(pgm_read_byte_near(address.word)); + address.word++; + } + } + putch(0x10); + } + } + + /* Get device signature bytes */ + else if(ch=='u') { + if (getch() == ' ') { + putch(0x14); + putch(SIG1); + putch(SIG2); + putch(SIG3); + putch(0x10); + } + } + + /* Read oscillator calibration byte */ + else if(ch=='v') { + byte_response(0x00); + } +// } else { +// time_count++; +// if (time_count>=MAX_TIME_COUNT) { +// app_start(); +// } +// } + } /* end of forever loop */ +} + +void putch(char ch) +{ + /* m8 */ + while (!(inb(UCSRA) & _BV(UDRE))); + outb(UDR,ch); +} + +char getch(void) +{ + /* m8 */ + uint32_t count = 0; + while(!(inb(UCSRA) & _BV(RXC))) { + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return (inb(UDR)); +} + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +size: $(PROGRAM).hex + $(SIZE) $^ + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PROGRAM).hex +bin: $(PROGRAM).bin +srec: $(PROGRAM).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ diff --git a/arduino-0018-windows/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.c b/arduino-0018-windows/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.c new file mode 100644 index 0000000..a85dc9a --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/bootloaders/bt/ATmegaBOOT_168.c @@ -0,0 +1,1032 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega8, ATmega128 and ATmega168 */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* build: 050815 */ +/* date : 15.08.2005 */ +/* */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m128,m8,m163 - feel free to let me know */ +/* how/if it works for you. */ +/* */ +/**********************************************************/ + + +/* some includes */ +#include +#include +#include +#include +#include + + +#define set_output(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#define set_input(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) + + +#define high(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#define low(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) + + + + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#ifndef __AVR_ATmega168__ +#include +#endif + +/* define F_CPU according to AVR_FREQ set in Makefile */ +/* Is there a better way to pass such a parameter from Makefile to source code ? */ + +#define F_CPU 16000000L + +#include + + +/* 20060803: hacked by DojoCorp */ +/* set the waiting time for the bootloader */ +#define MAX_TIME_COUNT (F_CPU>>1) + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +#define BAUD_RATE 115200 + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x0f + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#ifdef __AVR_ATmega128__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#else +/* Onboard LED is connected to pin PB2 (e.g. Crumb8, Crumb168) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +/* 20060803: hacked by DojoCorp, LED pin is B5 in Arduino */ +/* #define LED PINB2 */ +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#ifdef __AVR_ATmega128__ +#define MONITOR +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + + asm volatile("nop\n\t"); + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined __AVR_ATmega168__ + UBRR0H = ((F_CPU / 16 + BAUD_RATE / 2) / BAUD_RATE - 1) >> 8; + UBRR0L = ((F_CPU / 16 + BAUD_RATE / 2) / BAUD_RATE - 1); + + + //UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + //UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + + set_output(DDRD,PIND7); + high(PORTD,PD7); + for (i = 0; i < 16; i++) { + + _delay_loop_2(0); + } + + + low(PORTD,PD7); + + + /* flash onboard LED to signal entering of bootloader */ +#ifdef __AVR_ATmega128__ + // 4x for UART0, 5x for UART1 + flash_led(3 + bootuart); +#else + flash_led(3); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + + //message("SET BT PAGEMODE 3 2000 1"); +putch('S'); +putch('E'); +putch('T'); +putch(' '); +putch('B'); +putch('T'); +putch(' '); +putch('P'); +putch('A'); +putch('G'); +putch('E'); +putch('M'); +putch('O'); +putch('D'); +putch('E'); +putch(' '); +putch('3'); +putch(' '); +putch('2'); +putch('0'); +putch('0'); +putch('0'); +putch(' '); +putch('1'); +putch(0x0D); + + + //put_s("SET BT ROLE 0 f 7d00"); + putch('S'); + putch('E'); + putch('T'); + putch(' '); + putch('B'); + putch('T'); + putch(' '); + putch('R'); + putch('O'); + putch('L'); + putch('E'); + putch(' '); + putch('0'); + putch(' '); + putch('f'); + putch(' '); + putch('7'); + putch('d'); + putch('0'); + putch('0'); + putch(0x0D); + + + + + + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#ifdef __AVR_ATmega128__ + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure + // HACKME: EEPE used to be EEWE + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined __AVR_ATmega128__ + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + if (getch() == 'E') flags.eeprom = 1; + else { + flags.eeprom = 0; + address.word = address.word << 1; // address * 2 -> byte location + } + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#ifdef __AVR_ATmega168__ + while(EECR & (1<= 'a') { + ah = ah - 'a' + 0x0a; + } else if(ah >= '0') { + ah -= '0'; + } + if(al >= 'a') { + al = al - 'a' + 0x0a; + } else if(al >= '0') { + al -= '0'; + } + return (ah << 4) + al; +} + + +void puthex(char ch) { + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + al = (ch & 0x0f); + if(al >= 0x0a) { + al = al - 0x0a + 'a'; + } else { + al += '0'; + } + putch(ah); + putch(al); +} + + +void putch(char ch) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined __AVR_ATmega168__ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + return UDR1; + } + return 0; +#elif defined __AVR_ATmega168__ + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i +#include +#include +#include +#include + + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#ifndef __AVR_ATmega168__ +#include +#endif + +/* Use the F_CPU defined in Makefile */ + +/* 20060803: hacked by DojoCorp */ +/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ +/* set the waiting time for the bootloader */ +/* get this from the Makefile instead */ +/* #define MAX_TIME_COUNT (F_CPU>>4) */ + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +//#define BAUD_RATE 115200 +#define BAUD_RATE 19200 + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#ifdef __AVR_ATmega128__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#else +/* Onboard LED is connected to pin PB2 (e.g. Crumb8, Crumb168) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +/* 20060803: hacked by DojoCorp, LED pin is B5 in Arduino */ +/* #define LED PINB2 */ +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#ifdef __AVR_ATmega128__ +#define MONITOR +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +uint8_t error_count = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + + asm volatile("nop\n\t"); + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + /* We run the bootloader regardless of the state of this pin. Thus, don't + put it in a different state than the other pins. --DAM, 070709 + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); + */ +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined __AVR_ATmega168__ + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + /* flash onboard LED to signal entering of bootloader */ +#ifdef __AVR_ATmega128__ + // 4x for UART0, 5x for UART1 + flash_led(NUM_LED_FLASHES + bootuart); +#else + flash_led(NUM_LED_FLASHES); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#ifdef __AVR_ATmega128__ + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure + // HACKME: EEPE used to be EEWE + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined __AVR_ATmega128__ + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + if (getch() == 'E') flags.eeprom = 1; + else { + flags.eeprom = 0; + address.word = address.word << 1; // address * 2 -> byte location + } + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#ifdef __AVR_ATmega168__ + while(EECR & (1<= 'a') { + ah = ah - 'a' + 0x0a; + } else if(ah >= '0') { + ah -= '0'; + } + if(al >= 'a') { + al = al - 'a' + 0x0a; + } else if(al >= '0') { + al -= '0'; + } + return (ah << 4) + al; +} + + +void puthex(char ch) { + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + al = (ch & 0x0f); + if(al >= 0x0a) { + al = al - 0x0a + 'a'; + } else { + al += '0'; + } + putch(ah); + putch(al); +} + + +void putch(char ch) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined __AVR_ATmega168__ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#ifdef __AVR_ATmega128__ + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + return UDR1; + } + return 0; +#elif defined __AVR_ATmega168__ + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + +install: + avrdude -p m168 -c stk500v2 -P /dev/cu.USA19H1b1P1.1 -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0xdd:m -U lfuse:w:0xe2:m + avrdude -p m168 -c stk500v2 -P /dev/cu.USA19H1b1P1.1 -e -u -U flash:w:ATmegaBOOT_168.hex -U lock:w:0x0f:m diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/HardwareSerial.cpp b/arduino-0018-windows/hardware/arduino/cores/arduino/HardwareSerial.cpp new file mode 100644 index 0000000..712a4c7 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,226 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis +*/ + +#include +#include +#include +#include "wiring.h" +#include "wiring_private.h" + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#define RX_BUFFER_SIZE 128 + +struct ring_buffer { + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +ring_buffer rx_buffer = { { 0 }, 0, 0 }; + +#if defined(__AVR_ATmega1280__) +ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; +ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; +ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *rx_buffer) +{ + int i = (rx_buffer->head + 1) % RX_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer->tail) { + rx_buffer->buffer[rx_buffer->head] = c; + rx_buffer->head = i; + } +} + +#if defined(__AVR_ATmega1280__) + +SIGNAL(SIG_USART0_RECV) +{ + unsigned char c = UDR0; + store_char(c, &rx_buffer); +} + +SIGNAL(SIG_USART1_RECV) +{ + unsigned char c = UDR1; + store_char(c, &rx_buffer1); +} + +SIGNAL(SIG_USART2_RECV) +{ + unsigned char c = UDR2; + store_char(c, &rx_buffer2); +} + +SIGNAL(SIG_USART3_RECV) +{ + unsigned char c = UDR3; + store_char(c, &rx_buffer3); +} + +#else + +#if defined(__AVR_ATmega8__) +SIGNAL(SIG_UART_RECV) +#else +SIGNAL(USART_RX_vect) +#endif +{ +#if defined(__AVR_ATmega8__) + unsigned char c = UDR; +#else + unsigned char c = UDR0; +#endif + store_char(c, &rx_buffer); +} + +#endif + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udre = udre; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(long baud) +{ + uint16_t baud_setting; + bool use_u2x; + + // U2X mode is needed for baud rates higher than (CPU Hz / 16) + if (baud > F_CPU / 16) { + use_u2x = true; + } else { + // figure out if U2X mode would allow for a better connection + + // calculate the percent difference between the baud-rate specified and + // the real baud rate for both U2X and non-U2X mode (0-255 error percent) + uint8_t nonu2x_baud_error = abs((int)(255-((F_CPU/(16*(((F_CPU/8/baud-1)/2)+1))*255)/baud))); + uint8_t u2x_baud_error = abs((int)(255-((F_CPU/(8*(((F_CPU/4/baud-1)/2)+1))*255)/baud))); + + // prefer non-U2X mode because it handles clock skew better + use_u2x = (nonu2x_baud_error > u2x_baud_error); + } + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); +} + +void HardwareSerial::end() +{ + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); +} + +uint8_t HardwareSerial::available(void) +{ + return (RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE; +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (_rx_buffer->tail + 1) % RX_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + _rx_buffer->head = _rx_buffer->tail; +} + +void HardwareSerial::write(uint8_t c) +{ + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(__AVR_ATmega8__) +HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X); +#else +HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0); +#endif + +#if defined(__AVR_ATmega1280__) +HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1); +HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2); +HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3); +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/HardwareSerial.h b/arduino-0018-windows/hardware/arduino/cores/arduino/HardwareSerial.h new file mode 100644 index 0000000..6b620ed --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/HardwareSerial.h @@ -0,0 +1,66 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Print.h" + +struct ring_buffer; + +class HardwareSerial : public Print +{ + private: + ring_buffer *_rx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udre; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); + void begin(long); + void end(); + uint8_t available(void); + int read(void); + void flush(void); + virtual void write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +extern HardwareSerial Serial; + +#if defined(__AVR_ATmega1280__) +extern HardwareSerial Serial1; +extern HardwareSerial Serial2; +extern HardwareSerial Serial3; +#endif + +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/Print.cpp b/arduino-0018-windows/hardware/arduino/cores/arduino/Print.cpp new file mode 100644 index 0000000..fb5afc1 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/Print.cpp @@ -0,0 +1,206 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include "wiring.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +void Print::write(const char *str) +{ + while (*str) + write(*str++); +} + +/* default implementation: may be overridden */ +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) + write(*buffer++); +} + +void Print::print(const char str[]) +{ + write(str); +} + +void Print::print(char c, int base) +{ + print((long) c, base); +} + +void Print::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Print::print(int n, int base) +{ + print((long) n, base); +} + +void Print::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Print::print(long n, int base) +{ + if (base == 0) { + write(n); + } else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void Print::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Print::print(double n, int digits) +{ + printFloat(n, digits); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(char c, int base) +{ + print(c, base); + println(); +} + +void Print::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Print::println(int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n, int digits) +{ + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/Print.h b/arduino-0018-windows/hardware/arduino/cores/arduino/Print.h new file mode 100644 index 0000000..8a1e2b8 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/Print.h @@ -0,0 +1,62 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + virtual void write(uint8_t) = 0; + virtual void write(const char *str); + virtual void write(const uint8_t *buffer, size_t size); + + void print(const char[]); + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + + void println(const char[]); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); +}; + +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/Tone.cpp b/arduino-0018-windows/hardware/arduino/cores/arduino/Tone.cpp new file mode 100644 index 0000000..827fe49 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/Tone.cpp @@ -0,0 +1,515 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions + +*************************************************/ + +#include +#include +#include +#include + +#if defined(__AVR_ATmega8__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(__AVR_ATmega1280__) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +#if defined(__AVR_ATmega1280__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { +#if !defined(__AVR_ATmega8__) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; +#endif + + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + +#if defined(__AVR_ATmega1280__) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + bitWrite(TCCR4B, WGM42, 1); + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; +#endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if !defined(__AVR_ATmega8__) + if (_timer == 0) + TCCR0B = prescalarbits; + else +#endif + TCCR2B = prescalarbits; + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#if defined(__AVR_ATmega1280__) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if !defined(__AVR_ATmega8__) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); + break; + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; + +#if defined(__AVR_ATmega1280__) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + switch (_timer) + { +#if defined(__AVR_ATmega8__) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; + case 2: + bitWrite(TIMSK2, OCIE2A, 0); + break; + +#else + case 0: + TIMSK0 = 0; + break; + case 1: + TIMSK1 = 0; + break; + case 2: + TIMSK2 = 0; + break; +#endif + +#if defined(__AVR_ATmega1280__) + case 3: + TIMSK3 = 0; + break; + case 4: + TIMSK4 = 0; + break; + case 5: + TIMSK5 = 0; + break; +#endif + } + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + TIMSK0 = 0; // disable the interrupt + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + TIMSK1 = 0; // disable the interrupt + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + TIMSK2 = 0; // disable the interrupt + *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + TIMSK3 = 0; // disable the interrupt + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + TIMSK4 = 0; // disable the interrupt + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + TIMSK5 = 0; // disable the interrupt + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/WConstants.h b/arduino-0018-windows/hardware/arduino/cores/arduino/WConstants.h new file mode 100644 index 0000000..3e19ac4 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/WConstants.h @@ -0,0 +1 @@ +#include "wiring.h" diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/WInterrupts.c b/arduino-0018-windows/hardware/arduino/cores/arduino/WInterrupts.c new file mode 100644 index 0000000..69a78b0 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/WInterrupts.c @@ -0,0 +1,215 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis +*/ + +#include +#include +#include +#include +#include + +#include "WConstants.h" +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +#if defined(__AVR_ATmega8__) +#define EICRA MCUCR +#define EIMSK GICR +#endif + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(__AVR_ATmega1280__) + case 2: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 3: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 4: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; + case 5: + EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30); + EIMSK |= (1 << INT3); + break; + case 0: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 1: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; +#else + case 0: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 1: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; +#endif + } + } +} + +void detachInterrupt(uint8_t interruptNum) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + // Disable the interrupt. (We can't assume that interruptNum is equal + // to the number of the EIMSK bit to clear, as this isn't true on the + // ATmega8. There, INT0 is 6 and INT1 is 7.) + switch (interruptNum) { +#if defined(__AVR_ATmega1280__) + case 2: + EIMSK &= ~(1 << INT0); + break; + case 3: + EIMSK &= ~(1 << INT1); + break; + case 4: + EIMSK &= ~(1 << INT2); + break; + case 5: + EIMSK &= ~(1 << INT3); + break; + case 0: + EIMSK &= ~(1 << INT4); + break; + case 1: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; +#else + case 0: + EIMSK &= ~(1 << INT0); + break; + case 1: + EIMSK &= ~(1 << INT1); + break; +#endif + } + + intFunc[interruptNum] = 0; + } +} + +/* +void attachInterruptTwi(void (*userFunc)(void) ) { + twiIntFunc = userFunc; +} +*/ + +#if defined(__AVR_ATmega1280__) + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_4]) + intFunc[EXTERNAL_INT_4](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_5]) + intFunc[EXTERNAL_INT_5](); +} + +SIGNAL(INT4_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT5_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT6_vect) { + if(intFunc[EXTERNAL_INT_6]) + intFunc[EXTERNAL_INT_6](); +} + +SIGNAL(INT7_vect) { + if(intFunc[EXTERNAL_INT_7]) + intFunc[EXTERNAL_INT_7](); +} + +#else + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +#endif + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/WMath.cpp b/arduino-0018-windows/hardware/arduino/cores/arduino/WMath.cpp new file mode 100644 index 0000000..2120c4c --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0) { + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/WProgram.h b/arduino-0018-windows/hardware/arduino/cores/arduino/WProgram.h new file mode 100644 index 0000000..f5d3e29 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/WProgram.h @@ -0,0 +1,32 @@ +#ifndef WProgram_h +#define WProgram_h + +#include +#include +#include + +#include + +#include "wiring.h" + +#ifdef __cplusplus +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); +#endif + +#endif \ No newline at end of file diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/binary.h b/arduino-0018-windows/hardware/arduino/cores/arduino/binary.h new file mode 100644 index 0000000..af14980 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/main.cpp b/arduino-0018-windows/hardware/arduino/cores/arduino/main.cpp new file mode 100644 index 0000000..cc6e81d --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/main.cpp @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/pins_arduino.c b/arduino-0018-windows/hardware/arduino/cores/arduino/pins_arduino.c new file mode 100644 index 0000000..d7b076d --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/pins_arduino.c @@ -0,0 +1,469 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: pins_arduino.c 804 2009-12-18 16:05:52Z dmellis $ +*/ + +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA8 & 168 / ARDUINO +// +// +-\/-+ +// PC6 1| |28 PC5 (AI 5) +// (D 0) PD0 2| |27 PC4 (AI 4) +// (D 1) PD1 3| |26 PC3 (AI 3) +// (D 2) PD2 4| |25 PC2 (AI 2) +// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) +// (D 4) PD4 6| |23 PC0 (AI 0) +// VCC 7| |22 GND +// GND 8| |21 AREF +// PB6 9| |20 AVCC +// PB7 10| |19 PB5 (D 13) +// PWM+ (D 5) PD5 11| |18 PB4 (D 12) +// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM +// (D 7) PD7 13| |16 PB2 (D 10) PWM +// (D 8) PB0 14| |15 PB1 (D 9) PWM +// +----+ +// +// (PWM+ indicates the additional PWM pins on the ATmega168.) + +// ATMEL ATMEGA1280 / ARDUINO +// +// 0-7 PE0-PE7 works +// 8-13 PB0-PB5 works +// 14-21 PA0-PA7 works +// 22-29 PH0-PH7 works +// 30-35 PG5-PG0 works +// 36-43 PC7-PC0 works +// 44-51 PJ7-PJ0 works +// 52-59 PL7-PL0 works +// 60-67 PD7-PD0 works +// A0-A7 PF0-PF7 +// A8-A15 PK0-PK7 + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + +#define REPEAT8(x) x, x, x, x, x, x, x, x +#define BV0TO7 _BV(0), _BV(1), _BV(2), _BV(3), _BV(4), _BV(5), _BV(6), _BV(7) +#define BV7TO0 _BV(7), _BV(6), _BV(5), _BV(4), _BV(3), _BV(2), _BV(1), _BV(0) + + +#if defined(__AVR_ATmega1280__) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + &DDRA, + &DDRB, + &DDRC, + &DDRD, + &DDRE, + &DDRF, + &DDRG, + &DDRH, + NOT_A_PORT, + &DDRJ, + &DDRK, + &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + &PORTA, + &PORTB, + &PORTC, + &PORTD, + &PORTE, + &PORTF, + &PORTG, + &PORTH, + NOT_A_PORT, + &PORTJ, + &PORTK, + &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + &PINA, + &PINB, + &PINC, + &PIND, + &PINE, + &PINF, + &PING, + &PINH, + NOT_A_PIN, + &PINJ, + &PINK, + &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 +}; +#else +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &DDRB, + &DDRC, + &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PORTB, + &PORTC, + &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PINB, + &PINC, + &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, /* 0 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PB, /* 8 */ + PB, + PB, + PB, + PB, + PB, + PC, /* 14 */ + PC, + PC, + PC, + PC, + PC, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(0), /* 14, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - port D */ + NOT_ON_TIMER, + NOT_ON_TIMER, + // on the ATmega168, digital pin 3 has hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, +#else + TIMER2B, +#endif + NOT_ON_TIMER, + // on the ATmega168, digital pins 5 and 6 have hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, + NOT_ON_TIMER, +#else + TIMER0B, + TIMER0A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, /* 8 - port B */ + TIMER1A, + TIMER1B, +#if defined(__AVR_ATmega8__) + TIMER2, +#else + TIMER2A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, /* 14 - port C */ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/pins_arduino.h b/arduino-0018-windows/hardware/arduino/cores/arduino/pins_arduino.h new file mode 100644 index 0000000..c7e40fd --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/pins_arduino.h @@ -0,0 +1,76 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER5A 14 +#define TIMER5B 15 +#define TIMER5C 16 + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/wiring.c b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring.c new file mode 100644 index 0000000..d857e8a --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring.c @@ -0,0 +1,238 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 808 2009-12-18 17:44:08Z dmellis $ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +SIGNAL(TIMER0_OVF_vect) +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; + t = TCNT0; + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + unsigned long start = millis(); + + while (millis() - start <= ms) + ; +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); + +#if F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if !defined(__AVR_ATmega8__) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega8__) + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#else + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#endif + // enable timer 0 overflow interrupt +#if defined(__AVR_ATmega8__) + sbi(TIMSK, TOIE0); +#else + sbi(TIMSK0, TOIE0); +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + + // set timer 1 prescale factor to 64 + sbi(TCCR1B, CS11); + sbi(TCCR1B, CS10); + // put timer 1 in 8-bit phase correct pwm mode + sbi(TCCR1A, WGM10); + + // set timer 2 prescale factor to 64 +#if defined(__AVR_ATmega8__) + sbi(TCCR2, CS22); +#else + sbi(TCCR2B, CS22); +#endif + // configure timer 2 for phase correct pwm (8-bit) +#if defined(__AVR_ATmega8__) + sbi(TCCR2, WGM20); +#else + sbi(TCCR2A, WGM20); +#endif + +#if defined(__AVR_ATmega1280__) + // set timer 3, 4, 5 prescale factor to 64 + sbi(TCCR3B, CS31); sbi(TCCR3B, CS30); + sbi(TCCR4B, CS41); sbi(TCCR4B, CS40); + sbi(TCCR5B, CS51); sbi(TCCR5B, CS50); + // put timer 3, 4, 5 in 8-bit phase correct pwm mode + sbi(TCCR3A, WGM30); + sbi(TCCR4A, WGM40); + sbi(TCCR5A, WGM50); +#endif + + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(__AVR_ATmega8__) + UCSRB = 0; +#else + UCSR0B = 0; +#endif +} \ No newline at end of file diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/wiring.h b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring.h new file mode 100644 index 0000000..8b42629 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring.h @@ -0,0 +1,133 @@ +/* + wiring.h - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 804 2009-12-18 16:05:52Z dmellis $ +*/ + +#ifndef Wiring_h +#define Wiring_h + +#include +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#define INTERNAL 3 +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() ) +#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +void beginSerial(long); +void serialWrite(unsigned char); +int serialAvailable(void); +int serialRead(void); +void serialFlush(void); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_analog.c b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_analog.c new file mode 100644 index 0000000..529ad52 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_analog.c @@ -0,0 +1,179 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). + ADMUX = (analog_reference << 6) | (pin & 0x07); + +#if defined(__AVR_ATmega1280__) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + + if (digitalPinToTimer(pin) == TIMER1A) { + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + // set pwm duty + OCR1A = val; + } else if (digitalPinToTimer(pin) == TIMER1B) { + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + // set pwm duty + OCR1B = val; +#if defined(__AVR_ATmega8__) + } else if (digitalPinToTimer(pin) == TIMER2) { + // connect pwm to pin on timer 2, channel B + sbi(TCCR2, COM21); + // set pwm duty + OCR2 = val; +#else + } else if (digitalPinToTimer(pin) == TIMER0A) { + if (val == 0) { + digitalWrite(pin, LOW); + } else { + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + // set pwm duty + OCR0A = val; + } + } else if (digitalPinToTimer(pin) == TIMER0B) { + if (val == 0) { + digitalWrite(pin, LOW); + } else { + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + // set pwm duty + OCR0B = val; + } + } else if (digitalPinToTimer(pin) == TIMER2A) { + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + // set pwm duty + OCR2A = val; + } else if (digitalPinToTimer(pin) == TIMER2B) { + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + // set pwm duty + OCR2B = val; +#endif +#if defined(__AVR_ATmega1280__) + // XXX: need to handle other timers here + } else if (digitalPinToTimer(pin) == TIMER3A) { + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + // set pwm duty + OCR3A = val; + } else if (digitalPinToTimer(pin) == TIMER3B) { + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + // set pwm duty + OCR3B = val; + } else if (digitalPinToTimer(pin) == TIMER3C) { + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + // set pwm duty + OCR3C = val; + } else if (digitalPinToTimer(pin) == TIMER4A) { + // connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + // set pwm duty + OCR4A = val; + } else if (digitalPinToTimer(pin) == TIMER4B) { + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + // set pwm duty + OCR4B = val; + } else if (digitalPinToTimer(pin) == TIMER4C) { + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + // set pwm duty + OCR4C = val; + } else if (digitalPinToTimer(pin) == TIMER5A) { + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + // set pwm duty + OCR5A = val; + } else if (digitalPinToTimer(pin) == TIMER5B) { + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + // set pwm duty + OCR5B = val; +#endif + } else if (val < 128) + digitalWrite(pin, LOW); + else + digitalWrite(pin, HIGH); +} diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_digital.c b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_digital.c new file mode 100644 index 0000000..1cdbf6c --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_digital.c @@ -0,0 +1,111 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) *reg &= ~bit; + else *reg |= bit; +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +static inline void turnOffPWM(uint8_t timer) +{ + if (timer == TIMER1A) cbi(TCCR1A, COM1A1); + if (timer == TIMER1B) cbi(TCCR1A, COM1B1); + +#if defined(__AVR_ATmega8__) + if (timer == TIMER2) cbi(TCCR2, COM21); +#else + if (timer == TIMER0A) cbi(TCCR0A, COM0A1); + if (timer == TIMER0B) cbi(TCCR0A, COM0B1); + if (timer == TIMER2A) cbi(TCCR2A, COM2A1); + if (timer == TIMER2B) cbi(TCCR2A, COM2B1); +#endif + +#if defined(__AVR_ATmega1280__) + if (timer == TIMER3A) cbi(TCCR3A, COM3A1); + if (timer == TIMER3B) cbi(TCCR3A, COM3B1); + if (timer == TIMER3C) cbi(TCCR3A, COM3C1); + if (timer == TIMER4A) cbi(TCCR4A, COM4A1); + if (timer == TIMER4B) cbi(TCCR4A, COM4B1); + if (timer == TIMER4C) cbi(TCCR4A, COM4C1); + if (timer == TIMER5A) cbi(TCCR5A, COM5A1); + if (timer == TIMER5B) cbi(TCCR5A, COM5B1); + if (timer == TIMER5C) cbi(TCCR5A, COM5C1); +#endif +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + if (val == LOW) *out &= ~bit; + else *out |= bit; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_private.h b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_private.h new file mode 100644 index 0000000..2dfe552 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_private.h @@ -0,0 +1,68 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include +#include + +#include "wiring.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_pulse.c b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_pulse.c new file mode 100644 index 0000000..8f232f1 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_pulse.c @@ -0,0 +1,66 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) + width++; + + // convert the reading to microseconds. The loop has been determined + // to be 10 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 10 + 16); +} diff --git a/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_shift.c b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_shift.c new file mode 100644 index 0000000..956f864 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/cores/arduino/wiring_shift.c @@ -0,0 +1,40 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val) +{ + int i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/arduino-0018-windows/hardware/arduino/programmers.txt b/arduino-0018-windows/hardware/arduino/programmers.txt new file mode 100644 index 0000000..466f602 --- /dev/null +++ b/arduino-0018-windows/hardware/arduino/programmers.txt @@ -0,0 +1,20 @@ +avrisp.name=AVR ISP +avrisp.communication=serial +avrisp.protocol=stk500v1 + +avrispmkii.name=AVRISP mkII +avrispmkii.communication=usb +avrispmkii.protocol=stk500v2 + +usbtinyisp.name=USBtinyISP +usbtinyisp.protocol=usbtiny + +parallel.name=Parallel Programmer +parallel.protocol=dapa +parallel.force=true +# parallel.delay=200 + +arduinoisp.name=Arduino as ISP +arduinoisp.communication=serial +arduinoisp.protocol=stk500v1 +arduinoisp.speed=19200 diff --git a/arduino-0018-windows/hardware/tools/avr/WinAVR-20081205-uninstall.exe b/arduino-0018-windows/hardware/tools/avr/WinAVR-20081205-uninstall.exe new file mode 100644 index 0000000..51cec3d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/WinAVR-20081205-uninstall.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/WinAVR-manifest.log b/arduino-0018-windows/hardware/tools/avr/WinAVR-manifest.log new file mode 100644 index 0000000..5c06896 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/WinAVR-manifest.log @@ -0,0 +1,4271 @@ +.\avr\bin\ar.exe +.\avr\bin\as.exe +.\avr\bin\c++.exe +.\avr\bin\g++.exe +.\avr\bin\gcc.exe +.\avr\bin\ld.exe +.\avr\bin\nm.exe +.\avr\bin\objcopy.exe +.\avr\bin\objdump.exe +.\avr\bin\ranlib.exe +.\avr\bin\strip.exe +.\avr\include\alloca.h +.\avr\include\assert.h +.\avr\include\avr\boot.h +.\avr\include\avr\builtins.h +.\avr\include\avr\common.h +.\avr\include\avr\crc16.h +.\avr\include\avr\delay.h +.\avr\include\avr\eeprom.h +.\avr\include\avr\fuse.h +.\avr\include\avr\interrupt.h +.\avr\include\avr\io.h +.\avr\include\avr\io1200.h +.\avr\include\avr\io2313.h +.\avr\include\avr\io2323.h +.\avr\include\avr\io2333.h +.\avr\include\avr\io2343.h +.\avr\include\avr\io43u32x.h +.\avr\include\avr\io43u35x.h +.\avr\include\avr\io4414.h +.\avr\include\avr\io4433.h +.\avr\include\avr\io4434.h +.\avr\include\avr\io58u54a.h +.\avr\include\avr\io76c711.h +.\avr\include\avr\io8515.h +.\avr\include\avr\io8534.h +.\avr\include\avr\io8535.h +.\avr\include\avr\io86r401.h +.\avr\include\avr\io90pwm1.h +.\avr\include\avr\io90pwm216.h +.\avr\include\avr\io90pwm2b.h +.\avr\include\avr\io90pwm316.h +.\avr\include\avr\io90pwm3b.h +.\avr\include\avr\io90pwmx.h +.\avr\include\avr\ioat94k.h +.\avr\include\avr\iocan128.h +.\avr\include\avr\iocan32.h +.\avr\include\avr\iocan64.h +.\avr\include\avr\iocanxx.h +.\avr\include\avr\iom103.h +.\avr\include\avr\iom128.h +.\avr\include\avr\iom1280.h +.\avr\include\avr\iom1281.h +.\avr\include\avr\iom1284p.h +.\avr\include\avr\iom16.h +.\avr\include\avr\iom161.h +.\avr\include\avr\iom162.h +.\avr\include\avr\iom163.h +.\avr\include\avr\iom164.h +.\avr\include\avr\iom165.h +.\avr\include\avr\iom165p.h +.\avr\include\avr\iom168.h +.\avr\include\avr\iom168p.h +.\avr\include\avr\iom169.h +.\avr\include\avr\iom169p.h +.\avr\include\avr\iom16hva.h +.\avr\include\avr\iom2560.h +.\avr\include\avr\iom2561.h +.\avr\include\avr\iom32.h +.\avr\include\avr\iom323.h +.\avr\include\avr\iom324.h +.\avr\include\avr\iom325.h +.\avr\include\avr\iom3250.h +.\avr\include\avr\iom328p.h +.\avr\include\avr\iom329.h +.\avr\include\avr\iom3290.h +.\avr\include\avr\iom32c1.h +.\avr\include\avr\iom32hvb.h +.\avr\include\avr\iom32m1.h +.\avr\include\avr\iom32u4.h +.\avr\include\avr\iom32u6.h +.\avr\include\avr\iom406.h +.\avr\include\avr\iom48.h +.\avr\include\avr\iom48p.h +.\avr\include\avr\iom64.h +.\avr\include\avr\iom640.h +.\avr\include\avr\iom644.h +.\avr\include\avr\iom645.h +.\avr\include\avr\iom6450.h +.\avr\include\avr\iom649.h +.\avr\include\avr\iom6490.h +.\avr\include\avr\iom8.h +.\avr\include\avr\iom8515.h +.\avr\include\avr\iom8535.h +.\avr\include\avr\iom88.h +.\avr\include\avr\iom88p.h +.\avr\include\avr\iom8hva.h +.\avr\include\avr\iomx8.h +.\avr\include\avr\iomxx0_1.h +.\avr\include\avr\iomxx4.h +.\avr\include\avr\iomxxhva.h +.\avr\include\avr\iotn11.h +.\avr\include\avr\iotn12.h +.\avr\include\avr\iotn13.h +.\avr\include\avr\iotn13a.h +.\avr\include\avr\iotn15.h +.\avr\include\avr\iotn167.h +.\avr\include\avr\iotn22.h +.\avr\include\avr\iotn2313.h +.\avr\include\avr\iotn24.h +.\avr\include\avr\iotn25.h +.\avr\include\avr\iotn26.h +.\avr\include\avr\iotn261.h +.\avr\include\avr\iotn28.h +.\avr\include\avr\iotn43u.h +.\avr\include\avr\iotn44.h +.\avr\include\avr\iotn45.h +.\avr\include\avr\iotn461.h +.\avr\include\avr\iotn48.h +.\avr\include\avr\iotn84.h +.\avr\include\avr\iotn85.h +.\avr\include\avr\iotn861.h +.\avr\include\avr\iotn88.h +.\avr\include\avr\iotnx4.h +.\avr\include\avr\iotnx5.h +.\avr\include\avr\iotnx61.h +.\avr\include\avr\iousb1286.h +.\avr\include\avr\iousb1287.h +.\avr\include\avr\iousb162.h +.\avr\include\avr\iousb646.h +.\avr\include\avr\iousb647.h +.\avr\include\avr\iousb82.h +.\avr\include\avr\iousbxx2.h +.\avr\include\avr\iousbxx6_7.h +.\avr\include\avr\iox128a1.h +.\avr\include\avr\iox128a3.h +.\avr\include\avr\iox256a3.h +.\avr\include\avr\iox256a3b.h +.\avr\include\avr\iox64a1.h +.\avr\include\avr\iox64a3.h +.\avr\include\avr\lock.h +.\avr\include\avr\parity.h +.\avr\include\avr\pgmspace.h +.\avr\include\avr\portpins.h +.\avr\include\avr\power.h +.\avr\include\avr\sfr_defs.h +.\avr\include\avr\signal.h +.\avr\include\avr\sleep.h +.\avr\include\avr\version.h +.\avr\include\avr\wdt.h +.\avr\include\compat\deprecated.h +.\avr\include\compat\ina90.h +.\avr\include\compat\twi.h +.\avr\include\ctype.h +.\avr\include\errno.h +.\avr\include\inttypes.h +.\avr\include\math.h +.\avr\include\setjmp.h +.\avr\include\stdint.h +.\avr\include\stdio.h +.\avr\include\stdlib.h +.\avr\include\string.h +.\avr\include\util\atomic.h +.\avr\include\util\crc16.h +.\avr\include\util\delay.h +.\avr\include\util\delay_basic.h +.\avr\include\util\parity.h +.\avr\include\util\setbaud.h +.\avr\include\util\twi.h +.\avr\lib\avr25\crt86401.o +.\avr\lib\avr25\crttn13.o +.\avr\lib\avr25\crttn13a.o +.\avr\lib\avr25\crttn2313.o +.\avr\lib\avr25\crttn24.o +.\avr\lib\avr25\crttn25.o +.\avr\lib\avr25\crttn261.o +.\avr\lib\avr25\crttn43u.o +.\avr\lib\avr25\crttn44.o +.\avr\lib\avr25\crttn45.o +.\avr\lib\avr25\crttn461.o +.\avr\lib\avr25\crttn48.o +.\avr\lib\avr25\crttn84.o +.\avr\lib\avr25\crttn85.o +.\avr\lib\avr25\crttn861.o +.\avr\lib\avr25\crttn88.o +.\avr\lib\avr25\libc.a +.\avr\lib\avr25\libm.a +.\avr\lib\avr25\libobjc.a +.\avr\lib\avr25\libobjc.la +.\avr\lib\avr25\libprintf_flt.a +.\avr\lib\avr25\libprintf_min.a +.\avr\lib\avr25\libscanf_flt.a +.\avr\lib\avr25\libscanf_min.a +.\avr\lib\avr3\crt43320.o +.\avr\lib\avr3\crt43355.o +.\avr\lib\avr3\crt76711.o +.\avr\lib\avr3\crtm103.o +.\avr\lib\avr3\crtusb162.o +.\avr\lib\avr3\crtusb82.o +.\avr\lib\avr3\libc.a +.\avr\lib\avr3\libm.a +.\avr\lib\avr3\libobjc.a +.\avr\lib\avr3\libobjc.la +.\avr\lib\avr3\libprintf_flt.a +.\avr\lib\avr3\libprintf_min.a +.\avr\lib\avr3\libscanf_flt.a +.\avr\lib\avr3\libscanf_min.a +.\avr\lib\avr31\crt43320.o +.\avr\lib\avr31\crtm103.o +.\avr\lib\avr31\libc.a +.\avr\lib\avr31\libm.a +.\avr\lib\avr31\libobjc.a +.\avr\lib\avr31\libobjc.la +.\avr\lib\avr31\libprintf_flt.a +.\avr\lib\avr31\libprintf_min.a +.\avr\lib\avr31\libscanf_flt.a +.\avr\lib\avr31\libscanf_min.a +.\avr\lib\avr35\crttn167.o +.\avr\lib\avr35\crtusb162.o +.\avr\lib\avr35\crtusb82.o +.\avr\lib\avr35\libc.a +.\avr\lib\avr35\libm.a +.\avr\lib\avr35\libobjc.a +.\avr\lib\avr35\libobjc.la +.\avr\lib\avr35\libprintf_flt.a +.\avr\lib\avr35\libprintf_min.a +.\avr\lib\avr35\libscanf_flt.a +.\avr\lib\avr35\libscanf_min.a +.\avr\lib\avr4\crt90pwm1.o +.\avr\lib\avr4\crt90pwm2.o +.\avr\lib\avr4\crt90pwm2b.o +.\avr\lib\avr4\crt90pwm3.o +.\avr\lib\avr4\crt90pwm3b.o +.\avr\lib\avr4\crtm48.o +.\avr\lib\avr4\crtm48p.o +.\avr\lib\avr4\crtm8.o +.\avr\lib\avr4\crtm8515.o +.\avr\lib\avr4\crtm8535.o +.\avr\lib\avr4\crtm88.o +.\avr\lib\avr4\crtm88p.o +.\avr\lib\avr4\crtm8hva.o +.\avr\lib\avr4\libc.a +.\avr\lib\avr4\libm.a +.\avr\lib\avr4\libobjc.a +.\avr\lib\avr4\libobjc.la +.\avr\lib\avr4\libprintf_flt.a +.\avr\lib\avr4\libprintf_min.a +.\avr\lib\avr4\libscanf_flt.a +.\avr\lib\avr4\libscanf_min.a +.\avr\lib\avr5\crt58u54a.o +.\avr\lib\avr5\crt90pwm216.o +.\avr\lib\avr5\crt90pwm316.o +.\avr\lib\avr5\crtat94k.o +.\avr\lib\avr5\crtcan128.o +.\avr\lib\avr5\crtcan32.o +.\avr\lib\avr5\crtcan64.o +.\avr\lib\avr5\crtm128.o +.\avr\lib\avr5\crtm1280.o +.\avr\lib\avr5\crtm1281.o +.\avr\lib\avr5\crtm1284p.o +.\avr\lib\avr5\crtm16.o +.\avr\lib\avr5\crtm161.o +.\avr\lib\avr5\crtm162.o +.\avr\lib\avr5\crtm163.o +.\avr\lib\avr5\crtm164p.o +.\avr\lib\avr5\crtm165.o +.\avr\lib\avr5\crtm165p.o +.\avr\lib\avr5\crtm168.o +.\avr\lib\avr5\crtm168p.o +.\avr\lib\avr5\crtm169.o +.\avr\lib\avr5\crtm169p.o +.\avr\lib\avr5\crtm16hva.o +.\avr\lib\avr5\crtm32.o +.\avr\lib\avr5\crtm323.o +.\avr\lib\avr5\crtm324p.o +.\avr\lib\avr5\crtm325.o +.\avr\lib\avr5\crtm3250.o +.\avr\lib\avr5\crtm3250p.o +.\avr\lib\avr5\crtm325p.o +.\avr\lib\avr5\crtm328p.o +.\avr\lib\avr5\crtm329.o +.\avr\lib\avr5\crtm3290.o +.\avr\lib\avr5\crtm3290p.o +.\avr\lib\avr5\crtm329p.o +.\avr\lib\avr5\crtm32c1.o +.\avr\lib\avr5\crtm32m1.o +.\avr\lib\avr5\crtm32u4.o +.\avr\lib\avr5\crtm32u6.o +.\avr\lib\avr5\crtm406.o +.\avr\lib\avr5\crtm64.o +.\avr\lib\avr5\crtm640.o +.\avr\lib\avr5\crtm644.o +.\avr\lib\avr5\crtm644p.o +.\avr\lib\avr5\crtm645.o +.\avr\lib\avr5\crtm6450.o +.\avr\lib\avr5\crtm649.o +.\avr\lib\avr5\crtm6490.o +.\avr\lib\avr5\crtusb1286.o +.\avr\lib\avr5\crtusb1287.o +.\avr\lib\avr5\crtusb646.o +.\avr\lib\avr5\crtusb647.o +.\avr\lib\avr5\libc.a +.\avr\lib\avr5\libm.a +.\avr\lib\avr5\libobjc.a +.\avr\lib\avr5\libobjc.la +.\avr\lib\avr5\libprintf_flt.a +.\avr\lib\avr5\libprintf_min.a +.\avr\lib\avr5\libscanf_flt.a +.\avr\lib\avr5\libscanf_min.a +.\avr\lib\avr51\crtcan128.o +.\avr\lib\avr51\crtm128.o +.\avr\lib\avr51\crtm1280.o +.\avr\lib\avr51\crtm1281.o +.\avr\lib\avr51\crtm1284p.o +.\avr\lib\avr51\crtusb1286.o +.\avr\lib\avr51\crtusb1287.o +.\avr\lib\avr51\libc.a +.\avr\lib\avr51\libm.a +.\avr\lib\avr51\libobjc.a +.\avr\lib\avr51\libobjc.la +.\avr\lib\avr51\libprintf_flt.a +.\avr\lib\avr51\libprintf_min.a +.\avr\lib\avr51\libscanf_flt.a +.\avr\lib\avr51\libscanf_min.a +.\avr\lib\avr6\crtm2560.o +.\avr\lib\avr6\crtm2561.o +.\avr\lib\avr6\libc.a +.\avr\lib\avr6\libm.a +.\avr\lib\avr6\libobjc.a +.\avr\lib\avr6\libobjc.la +.\avr\lib\avr6\libprintf_flt.a +.\avr\lib\avr6\libprintf_min.a +.\avr\lib\avr6\libscanf_flt.a +.\avr\lib\avr6\libscanf_min.a +.\avr\lib\avrxmega4\crtx64a3.o +.\avr\lib\avrxmega4\libc.a +.\avr\lib\avrxmega4\libm.a +.\avr\lib\avrxmega4\libobjc.a +.\avr\lib\avrxmega4\libobjc.la +.\avr\lib\avrxmega4\libprintf_flt.a +.\avr\lib\avrxmega4\libprintf_min.a +.\avr\lib\avrxmega4\libscanf_flt.a +.\avr\lib\avrxmega4\libscanf_min.a +.\avr\lib\avrxmega5\crtx64a1.o +.\avr\lib\avrxmega5\libc.a +.\avr\lib\avrxmega5\libm.a +.\avr\lib\avrxmega5\libobjc.a +.\avr\lib\avrxmega5\libobjc.la +.\avr\lib\avrxmega5\libprintf_flt.a +.\avr\lib\avrxmega5\libprintf_min.a +.\avr\lib\avrxmega5\libscanf_flt.a +.\avr\lib\avrxmega5\libscanf_min.a +.\avr\lib\avrxmega6\crtx128a3.o +.\avr\lib\avrxmega6\crtx256a3.o +.\avr\lib\avrxmega6\crtx256a3b.o +.\avr\lib\avrxmega6\libc.a +.\avr\lib\avrxmega6\libm.a +.\avr\lib\avrxmega6\libobjc.a +.\avr\lib\avrxmega6\libobjc.la +.\avr\lib\avrxmega6\libprintf_flt.a +.\avr\lib\avrxmega6\libprintf_min.a +.\avr\lib\avrxmega6\libscanf_flt.a +.\avr\lib\avrxmega6\libscanf_min.a +.\avr\lib\avrxmega7\crtx128a1.o +.\avr\lib\avrxmega7\libc.a +.\avr\lib\avrxmega7\libm.a +.\avr\lib\avrxmega7\libobjc.a +.\avr\lib\avrxmega7\libobjc.la +.\avr\lib\avrxmega7\libprintf_flt.a +.\avr\lib\avrxmega7\libprintf_min.a +.\avr\lib\avrxmega7\libscanf_flt.a +.\avr\lib\avrxmega7\libscanf_min.a +.\avr\lib\crt86401.o +.\avr\lib\crtc8534.o +.\avr\lib\crts1200.o +.\avr\lib\crts2313.o +.\avr\lib\crts2323.o +.\avr\lib\crts2333.o +.\avr\lib\crts2343.o +.\avr\lib\crts4414.o +.\avr\lib\crts4433.o +.\avr\lib\crts4434.o +.\avr\lib\crts8515.o +.\avr\lib\crts8535.o +.\avr\lib\crttn11.o +.\avr\lib\crttn12.o +.\avr\lib\crttn13.o +.\avr\lib\crttn13a.o +.\avr\lib\crttn15.o +.\avr\lib\crttn22.o +.\avr\lib\crttn2313.o +.\avr\lib\crttn24.o +.\avr\lib\crttn25.o +.\avr\lib\crttn26.o +.\avr\lib\crttn261.o +.\avr\lib\crttn28.o +.\avr\lib\crttn44.o +.\avr\lib\crttn45.o +.\avr\lib\crttn461.o +.\avr\lib\crttn84.o +.\avr\lib\crttn85.o +.\avr\lib\crttn861.o +.\avr\lib\ldscripts\avr1.x +.\avr\lib\ldscripts\avr1.xbn +.\avr\lib\ldscripts\avr1.xn +.\avr\lib\ldscripts\avr1.xr +.\avr\lib\ldscripts\avr1.xu +.\avr\lib\ldscripts\avr2.x +.\avr\lib\ldscripts\avr2.xbn +.\avr\lib\ldscripts\avr2.xn +.\avr\lib\ldscripts\avr2.xr +.\avr\lib\ldscripts\avr2.xu +.\avr\lib\ldscripts\avr25.x +.\avr\lib\ldscripts\avr25.xbn +.\avr\lib\ldscripts\avr25.xn +.\avr\lib\ldscripts\avr25.xr +.\avr\lib\ldscripts\avr25.xu +.\avr\lib\ldscripts\avr3.x +.\avr\lib\ldscripts\avr3.xbn +.\avr\lib\ldscripts\avr3.xn +.\avr\lib\ldscripts\avr3.xr +.\avr\lib\ldscripts\avr3.xu +.\avr\lib\ldscripts\avr31.x +.\avr\lib\ldscripts\avr31.xbn +.\avr\lib\ldscripts\avr31.xn +.\avr\lib\ldscripts\avr31.xr +.\avr\lib\ldscripts\avr31.xu +.\avr\lib\ldscripts\avr35.x +.\avr\lib\ldscripts\avr35.xbn +.\avr\lib\ldscripts\avr35.xn +.\avr\lib\ldscripts\avr35.xr +.\avr\lib\ldscripts\avr35.xu +.\avr\lib\ldscripts\avr4.x +.\avr\lib\ldscripts\avr4.xbn +.\avr\lib\ldscripts\avr4.xn +.\avr\lib\ldscripts\avr4.xr +.\avr\lib\ldscripts\avr4.xu +.\avr\lib\ldscripts\avr5.x +.\avr\lib\ldscripts\avr5.xbn +.\avr\lib\ldscripts\avr5.xn +.\avr\lib\ldscripts\avr5.xr +.\avr\lib\ldscripts\avr5.xu +.\avr\lib\ldscripts\avr51.x +.\avr\lib\ldscripts\avr51.xbn +.\avr\lib\ldscripts\avr51.xn +.\avr\lib\ldscripts\avr51.xr +.\avr\lib\ldscripts\avr51.xu +.\avr\lib\ldscripts\avr6.x +.\avr\lib\ldscripts\avr6.xbn +.\avr\lib\ldscripts\avr6.xn +.\avr\lib\ldscripts\avr6.xr +.\avr\lib\ldscripts\avr6.xu +.\avr\lib\ldscripts\avrxmega1.x +.\avr\lib\ldscripts\avrxmega1.xbn +.\avr\lib\ldscripts\avrxmega1.xn +.\avr\lib\ldscripts\avrxmega1.xr +.\avr\lib\ldscripts\avrxmega1.xu +.\avr\lib\ldscripts\avrxmega2.x +.\avr\lib\ldscripts\avrxmega2.xbn +.\avr\lib\ldscripts\avrxmega2.xn +.\avr\lib\ldscripts\avrxmega2.xr +.\avr\lib\ldscripts\avrxmega2.xu +.\avr\lib\ldscripts\avrxmega3.x +.\avr\lib\ldscripts\avrxmega3.xbn +.\avr\lib\ldscripts\avrxmega3.xn +.\avr\lib\ldscripts\avrxmega3.xr +.\avr\lib\ldscripts\avrxmega3.xu +.\avr\lib\ldscripts\avrxmega4.x +.\avr\lib\ldscripts\avrxmega4.xbn +.\avr\lib\ldscripts\avrxmega4.xn +.\avr\lib\ldscripts\avrxmega4.xr +.\avr\lib\ldscripts\avrxmega4.xu +.\avr\lib\ldscripts\avrxmega5.x +.\avr\lib\ldscripts\avrxmega5.xbn +.\avr\lib\ldscripts\avrxmega5.xn +.\avr\lib\ldscripts\avrxmega5.xr +.\avr\lib\ldscripts\avrxmega5.xu +.\avr\lib\ldscripts\avrxmega6.x +.\avr\lib\ldscripts\avrxmega6.xbn +.\avr\lib\ldscripts\avrxmega6.xn +.\avr\lib\ldscripts\avrxmega6.xr +.\avr\lib\ldscripts\avrxmega6.xu +.\avr\lib\ldscripts\avrxmega7.x +.\avr\lib\ldscripts\avrxmega7.xbn +.\avr\lib\ldscripts\avrxmega7.xn +.\avr\lib\ldscripts\avrxmega7.xr +.\avr\lib\ldscripts\avrxmega7.xu +.\avr\lib\libc.a +.\avr\lib\libm.a +.\avr\lib\libobjc.a +.\avr\lib\libobjc.la +.\avr\lib\libprintf_flt.a +.\avr\lib\libprintf_min.a +.\avr\lib\libscanf_flt.a +.\avr\lib\libscanf_min.a +.\bin\avarice.exe +.\bin\avr-addr2line.exe +.\bin\avr-ar.exe +.\bin\avr-as.exe +.\bin\avr-c++.exe +.\bin\avr-c++filt.exe +.\bin\avr-cpp.exe +.\bin\avr-g++.exe +.\bin\avr-gcc-4.3.2.exe +.\bin\avr-gcc.exe +.\bin\avr-gccbug +.\bin\avr-gcov.exe +.\bin\avr-gdb.exe +.\bin\avr-gprof.exe +.\bin\avr-insight.exe +.\bin\avr-ld.exe +.\bin\avr-man +.\bin\avr-nm.exe +.\bin\avr-objcopy.exe +.\bin\avr-objdump.exe +.\bin\avr-ranlib.exe +.\bin\avr-readelf.exe +.\bin\avr-size.exe +.\bin\avr-strings.exe +.\bin\avr-strip.exe +.\bin\avrdude.conf +.\bin\avrdude.exe +.\bin\cygwin1.dll +.\bin\giveio.sys +.\bin\ice-gdb +.\bin\ice-insight +.\bin\install_giveio.bat +.\bin\itcl32.dll +.\bin\itk32.dll +.\bin\kill-avarice +.\bin\libusb0.dll +.\bin\loaddrv.exe +.\bin\remove_giveio.bat +.\bin\simulavr-disp.exe +.\bin\simulavr-vcd.exe +.\bin\simulavr.exe +.\bin\srec_cat.exe +.\bin\srec_cmp.exe +.\bin\srec_info.exe +.\bin\start-avarice +.\bin\status_giveio.bat +.\bin\tcl84.dll +.\bin\tclpip84.dll +.\bin\tclsh84.exe +.\bin\tk84.dll +.\bin\wish84.exe +.\doc\avarice\avarice.pdf +.\doc\avarice\gdb-avarice-script +.\doc\avr-libc\avr-libc-user-manual\acks.html +.\doc\avr-libc\avr-libc-user-manual\annotated.html +.\doc\avr-libc\avr-libc-user-manual\assembler.html +.\doc\avr-libc\avr-libc-user-manual\assert_8h.html +.\doc\avr-libc\avr-libc-user-manual\atoi_8S.html +.\doc\avr-libc\avr-libc-user-manual\atol_8S.html +.\doc\avr-libc\avr-libc-user-manual\atomic_8h.html +.\doc\avr-libc\avr-libc-user-manual\avrs.png +.\doc\avr-libc\avr-libc-user-manual\benchmarks.html +.\doc\avr-libc\avr-libc-user-manual\boot_8h.html +.\doc\avr-libc\avr-libc-user-manual\classes.html +.\doc\avr-libc\avr-libc-user-manual\crc16_8h.html +.\doc\avr-libc\avr-libc-user-manual\ctype_8h.html +.\doc\avr-libc\avr-libc-user-manual\delay_8h.html +.\doc\avr-libc\avr-libc-user-manual\delay__basic_8h.html +.\doc\avr-libc\avr-libc-user-manual\demo.png +.\doc\avr-libc\avr-libc-user-manual\deprecated.html +.\doc\avr-libc\avr-libc-user-manual\dox.css +.\doc\avr-libc\avr-libc-user-manual\doxygen.png +.\doc\avr-libc\avr-libc-user-manual\errno_8h.html +.\doc\avr-libc\avr-libc-user-manual\FAQ.html +.\doc\avr-libc\avr-libc-user-manual\fdevopen_8c.html +.\doc\avr-libc\avr-libc-user-manual\ffsll_8S.html +.\doc\avr-libc\avr-libc-user-manual\ffsl_8S.html +.\doc\avr-libc\avr-libc-user-manual\ffs_8S.html +.\doc\avr-libc\avr-libc-user-manual\files.html +.\doc\avr-libc\avr-libc-user-manual\functions.html +.\doc\avr-libc\avr-libc-user-manual\functions_vars.html +.\doc\avr-libc\avr-libc-user-manual\fuse_8h.html +.\doc\avr-libc\avr-libc-user-manual\globals.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x61.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x62.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x63.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x64.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x65.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x66.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x67.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x68.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x69.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x6c.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x6d.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x6e.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x70.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x71.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x72.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x73.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x74.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x75.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x76.html +.\doc\avr-libc\avr-libc-user-manual\globals_0x77.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x61.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x62.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x63.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x64.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x65.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x66.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x67.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x69.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x6d.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x6e.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x70.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x72.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x73.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x74.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x75.html +.\doc\avr-libc\avr-libc-user-manual\globals_defs_0x77.html +.\doc\avr-libc\avr-libc-user-manual\globals_func.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x61.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x62.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x63.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x64.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x65.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x66.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x67.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x68.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x69.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x6c.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x6d.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x70.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x71.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x72.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x73.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x74.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x75.html +.\doc\avr-libc\avr-libc-user-manual\globals_func_0x76.html +.\doc\avr-libc\avr-libc-user-manual\globals_type.html +.\doc\avr-libc\avr-libc-user-manual\globals_vars.html +.\doc\avr-libc\avr-libc-user-manual\group__alloca.html +.\doc\avr-libc\avr-libc-user-manual\group__asmdemo.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__assert.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__boot.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__eeprom.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__errno.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__fuse.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__interrupts.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__inttypes.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__io.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__lock.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__math.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__pgmspace.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__power.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__sfr.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__sfr__notes.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__sleep.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__stdint.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__stdio.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__stdlib.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__string.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__version.html +.\doc\avr-libc\avr-libc-user-manual\group__avr__watchdog.html +.\doc\avr-libc\avr-libc-user-manual\group__compat__ina90.html +.\doc\avr-libc\avr-libc-user-manual\group__ctype.html +.\doc\avr-libc\avr-libc-user-manual\group__demos.html +.\doc\avr-libc\avr-libc-user-manual\group__demo__project.html +.\doc\avr-libc\avr-libc-user-manual\group__deprecated__items.html +.\doc\avr-libc\avr-libc-user-manual\group__largedemo.html +.\doc\avr-libc\avr-libc-user-manual\group__setjmp.html +.\doc\avr-libc\avr-libc-user-manual\group__stdiodemo.html +.\doc\avr-libc\avr-libc-user-manual\group__twi__demo.html +.\doc\avr-libc\avr-libc-user-manual\group__util__atomic.html +.\doc\avr-libc\avr-libc-user-manual\group__util__crc.html +.\doc\avr-libc\avr-libc-user-manual\group__util__delay.html +.\doc\avr-libc\avr-libc-user-manual\group__util__delay__basic.html +.\doc\avr-libc\avr-libc-user-manual\group__util__parity.html +.\doc\avr-libc\avr-libc-user-manual\group__util__setbaud.html +.\doc\avr-libc\avr-libc-user-manual\group__util__twi.html +.\doc\avr-libc\avr-libc-user-manual\index.html +.\doc\avr-libc\avr-libc-user-manual\inline_asm.html +.\doc\avr-libc\avr-libc-user-manual\install_tools.html +.\doc\avr-libc\avr-libc-user-manual\interrupt_8h.html +.\doc\avr-libc\avr-libc-user-manual\inttypes_8h.html +.\doc\avr-libc\avr-libc-user-manual\io_8h.html +.\doc\avr-libc\avr-libc-user-manual\largedemo-setup.jpg +.\doc\avr-libc\avr-libc-user-manual\largedemo-wiring.jpg +.\doc\avr-libc\avr-libc-user-manual\largedemo-wiring2.jpg +.\doc\avr-libc\avr-libc-user-manual\library.html +.\doc\avr-libc\avr-libc-user-manual\lock_8h.html +.\doc\avr-libc\avr-libc-user-manual\malloc-std.png +.\doc\avr-libc\avr-libc-user-manual\malloc-x1.png +.\doc\avr-libc\avr-libc-user-manual\malloc-x2.png +.\doc\avr-libc\avr-libc-user-manual\malloc.html +.\doc\avr-libc\avr-libc-user-manual\math_8h.html +.\doc\avr-libc\avr-libc-user-manual\memccpy_8S.html +.\doc\avr-libc\avr-libc-user-manual\memchr_8S.html +.\doc\avr-libc\avr-libc-user-manual\memchr__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\memcmp_8S.html +.\doc\avr-libc\avr-libc-user-manual\memcmp__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\memcpy_8S.html +.\doc\avr-libc\avr-libc-user-manual\memcpy__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\memmem_8S.html +.\doc\avr-libc\avr-libc-user-manual\memmove_8S.html +.\doc\avr-libc\avr-libc-user-manual\memrchr_8S.html +.\doc\avr-libc\avr-libc-user-manual\memrchr__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\memset_8S.html +.\doc\avr-libc\avr-libc-user-manual\mem_sections.html +.\doc\avr-libc\avr-libc-user-manual\modules.html +.\doc\avr-libc\avr-libc-user-manual\overview.html +.\doc\avr-libc\avr-libc-user-manual\pages.html +.\doc\avr-libc\avr-libc-user-manual\parity_8h.html +.\doc\avr-libc\avr-libc-user-manual\pgmspace.html +.\doc\avr-libc\avr-libc-user-manual\pgmspace_8h.html +.\doc\avr-libc\avr-libc-user-manual\porting.html +.\doc\avr-libc\avr-libc-user-manual\power_8h.html +.\doc\avr-libc\avr-libc-user-manual\releases.png +.\doc\avr-libc\avr-libc-user-manual\release_method.html +.\doc\avr-libc\avr-libc-user-manual\setbaud_8h.html +.\doc\avr-libc\avr-libc-user-manual\setjmp_8h.html +.\doc\avr-libc\avr-libc-user-manual\sleep_8h.html +.\doc\avr-libc\avr-libc-user-manual\stdint_8h.html +.\doc\avr-libc\avr-libc-user-manual\stdiodemo-setup.jpg +.\doc\avr-libc\avr-libc-user-manual\stdio_8h.html +.\doc\avr-libc\avr-libc-user-manual\stdlib_8h.html +.\doc\avr-libc\avr-libc-user-manual\strcasecmp_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcasecmp__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcasestr_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcat_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcat__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strchrnul_8S.html +.\doc\avr-libc\avr-libc-user-manual\strchrnul__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strchr_8S.html +.\doc\avr-libc\avr-libc-user-manual\strchr__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcmp_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcmp__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcpy_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcpy__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcspn_8S.html +.\doc\avr-libc\avr-libc-user-manual\strcspn__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strdup_8c.html +.\doc\avr-libc\avr-libc-user-manual\string_8h.html +.\doc\avr-libc\avr-libc-user-manual\strlcat_8S.html +.\doc\avr-libc\avr-libc-user-manual\strlcat__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strlcpy_8S.html +.\doc\avr-libc\avr-libc-user-manual\strlcpy__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strlen_8S.html +.\doc\avr-libc\avr-libc-user-manual\strlen__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strlwr_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncasecmp_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncasecmp__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncat_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncat__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncmp_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncmp__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncpy_8S.html +.\doc\avr-libc\avr-libc-user-manual\strncpy__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strnlen_8S.html +.\doc\avr-libc\avr-libc-user-manual\strnlen__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strpbrk_8S.html +.\doc\avr-libc\avr-libc-user-manual\strpbrk__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strrchr_8S.html +.\doc\avr-libc\avr-libc-user-manual\strrchr__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strrev_8S.html +.\doc\avr-libc\avr-libc-user-manual\strsep_8S.html +.\doc\avr-libc\avr-libc-user-manual\strsep__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strspn_8S.html +.\doc\avr-libc\avr-libc-user-manual\strspn__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strstr_8S.html +.\doc\avr-libc\avr-libc-user-manual\strstr__P_8S.html +.\doc\avr-libc\avr-libc-user-manual\strtok_8c.html +.\doc\avr-libc\avr-libc-user-manual\strtok__r_8S.html +.\doc\avr-libc\avr-libc-user-manual\structdiv__t.html +.\doc\avr-libc\avr-libc-user-manual\structldiv__t.html +.\doc\avr-libc\avr-libc-user-manual\strupr_8S.html +.\doc\avr-libc\avr-libc-user-manual\tabs.css +.\doc\avr-libc\avr-libc-user-manual\todo.html +.\doc\avr-libc\avr-libc-user-manual\using_avrprog.html +.\doc\avr-libc\avr-libc-user-manual\using_tools.html +.\doc\avr-libc\avr-libc-user-manual\util_2twi_8h.html +.\doc\avr-libc\avr-libc-user-manual\wdt_8h.html +.\doc\avr-libc\avr-libc-user-manual.pdf +.\doc\avr-libc\avr-libc-user-manual.ps +.\doc\avr-libc\examples\asmdemo\asmdemo.c +.\doc\avr-libc\examples\asmdemo\isrs.S +.\doc\avr-libc\examples\asmdemo\Makefile +.\doc\avr-libc\examples\asmdemo\project.h +.\doc\avr-libc\examples\demo\demo.c +.\doc\avr-libc\examples\demo\iocompat.h +.\doc\avr-libc\examples\demo\Makefile +.\doc\avr-libc\examples\largedemo\largedemo.c +.\doc\avr-libc\examples\largedemo\Makefile +.\doc\avr-libc\examples\stdiodemo\defines.h +.\doc\avr-libc\examples\stdiodemo\hd44780.c +.\doc\avr-libc\examples\stdiodemo\hd44780.h +.\doc\avr-libc\examples\stdiodemo\lcd.c +.\doc\avr-libc\examples\stdiodemo\lcd.h +.\doc\avr-libc\examples\stdiodemo\Makefile +.\doc\avr-libc\examples\stdiodemo\stdiodemo.c +.\doc\avr-libc\examples\stdiodemo\uart.c +.\doc\avr-libc\examples\stdiodemo\uart.h +.\doc\avr-libc\examples\twitest\Makefile +.\doc\avr-libc\examples\twitest\twitest.c +.\doc\avr-libc\man\man3\abort.3 +.\doc\avr-libc\man\man3\abs.3 +.\doc\avr-libc\man\man3\acks.3 +.\doc\avr-libc\man\man3\acos.3 +.\doc\avr-libc\man\man3\alloca.3 +.\doc\avr-libc\man\man3\asin.3 +.\doc\avr-libc\man\man3\asmdemo.3 +.\doc\avr-libc\man\man3\assembler.3 +.\doc\avr-libc\man\man3\assert.3 +.\doc\avr-libc\man\man3\assert.h.3 +.\doc\avr-libc\man\man3\atan.3 +.\doc\avr-libc\man\man3\atan2.3 +.\doc\avr-libc\man\man3\atof.3 +.\doc\avr-libc\man\man3\atoi.3 +.\doc\avr-libc\man\man3\atoi.S.3 +.\doc\avr-libc\man\man3\atol.3 +.\doc\avr-libc\man\man3\atol.S.3 +.\doc\avr-libc\man\man3\atomic.h.3 +.\doc\avr-libc\man\man3\ATOMIC_BLOCK.3 +.\doc\avr-libc\man\man3\ATOMIC_FORCEON.3 +.\doc\avr-libc\man\man3\ATOMIC_RESTORESTATE.3 +.\doc\avr-libc\man\man3\avr_assert.3 +.\doc\avr-libc\man\man3\avr_boot.3 +.\doc\avr-libc\man\man3\avr_eeprom.3 +.\doc\avr-libc\man\man3\avr_errno.3 +.\doc\avr-libc\man\man3\avr_fuse.3 +.\doc\avr-libc\man\man3\avr_interrupts.3 +.\doc\avr-libc\man\man3\avr_inttypes.3 +.\doc\avr-libc\man\man3\avr_io.3 +.\doc\avr-libc\man\man3\avr_lock.3 +.\doc\avr-libc\man\man3\avr_math.3 +.\doc\avr-libc\man\man3\avr_pgmspace.3 +.\doc\avr-libc\man\man3\avr_power.3 +.\doc\avr-libc\man\man3\avr_sfr.3 +.\doc\avr-libc\man\man3\avr_sfr_notes.3 +.\doc\avr-libc\man\man3\avr_sleep.3 +.\doc\avr-libc\man\man3\avr_stdint.3 +.\doc\avr-libc\man\man3\avr_stdio.3 +.\doc\avr-libc\man\man3\avr_stdlib.3 +.\doc\avr-libc\man\man3\avr_string.3 +.\doc\avr-libc\man\man3\avr_version.3 +.\doc\avr-libc\man\man3\avr_watchdog.3 +.\doc\avr-libc\man\man3\BADISR_vect.3 +.\doc\avr-libc\man\man3\BAUD_TOL.3 +.\doc\avr-libc\man\man3\benchmarks.3 +.\doc\avr-libc\man\man3\bit_is_clear.3 +.\doc\avr-libc\man\man3\bit_is_set.3 +.\doc\avr-libc\man\man3\BLB01.3 +.\doc\avr-libc\man\man3\BLB02.3 +.\doc\avr-libc\man\man3\BLB11.3 +.\doc\avr-libc\man\man3\BLB12.3 +.\doc\avr-libc\man\man3\boot.h.3 +.\doc\avr-libc\man\man3\BOOTLOADER_SECTION.3 +.\doc\avr-libc\man\man3\boot_is_spm_interrupt.3 +.\doc\avr-libc\man\man3\boot_lock_bits_set.3 +.\doc\avr-libc\man\man3\boot_lock_bits_set_safe.3 +.\doc\avr-libc\man\man3\boot_lock_fuse_bits_get.3 +.\doc\avr-libc\man\man3\boot_page_erase.3 +.\doc\avr-libc\man\man3\boot_page_erase_safe.3 +.\doc\avr-libc\man\man3\boot_page_fill.3 +.\doc\avr-libc\man\man3\boot_page_fill_safe.3 +.\doc\avr-libc\man\man3\boot_page_write.3 +.\doc\avr-libc\man\man3\boot_page_write_safe.3 +.\doc\avr-libc\man\man3\boot_rww_busy.3 +.\doc\avr-libc\man\man3\boot_rww_enable.3 +.\doc\avr-libc\man\man3\boot_rww_enable_safe.3 +.\doc\avr-libc\man\man3\boot_signature_byte_get.3 +.\doc\avr-libc\man\man3\boot_spm_busy.3 +.\doc\avr-libc\man\man3\boot_spm_busy_wait.3 +.\doc\avr-libc\man\man3\boot_spm_interrupt_disable.3 +.\doc\avr-libc\man\man3\boot_spm_interrupt_enable.3 +.\doc\avr-libc\man\man3\bsearch.3 +.\doc\avr-libc\man\man3\calloc.3 +.\doc\avr-libc\man\man3\cbi.3 +.\doc\avr-libc\man\man3\ceil.3 +.\doc\avr-libc\man\man3\clearerr.3 +.\doc\avr-libc\man\man3\cli.3 +.\doc\avr-libc\man\man3\clock_prescale_get.3 +.\doc\avr-libc\man\man3\clock_prescale_set.3 +.\doc\avr-libc\man\man3\compat_ina90.3 +.\doc\avr-libc\man\man3\copysign.3 +.\doc\avr-libc\man\man3\cos.3 +.\doc\avr-libc\man\man3\cosh.3 +.\doc\avr-libc\man\man3\crc16.h.3 +.\doc\avr-libc\man\man3\ctype.3 +.\doc\avr-libc\man\man3\ctype.h.3 +.\doc\avr-libc\man\man3\delay.h.3 +.\doc\avr-libc\man\man3\delay_basic.h.3 +.\doc\avr-libc\man\man3\demos.3 +.\doc\avr-libc\man\man3\demo_project.3 +.\doc\avr-libc\man\man3\deprecated.3 +.\doc\avr-libc\man\man3\deprecated_items.3 +.\doc\avr-libc\man\man3\div.3 +.\doc\avr-libc\man\man3\div_t.3 +.\doc\avr-libc\man\man3\dtostre.3 +.\doc\avr-libc\man\man3\dtostrf.3 +.\doc\avr-libc\man\man3\DTOSTR_ALWAYS_SIGN.3 +.\doc\avr-libc\man\man3\DTOSTR_PLUS_SIGN.3 +.\doc\avr-libc\man\man3\DTOSTR_UPPERCASE.3 +.\doc\avr-libc\man\man3\EDOM.3 +.\doc\avr-libc\man\man3\EEMEM.3 +.\doc\avr-libc\man\man3\eeprom_busy_wait.3 +.\doc\avr-libc\man\man3\eeprom_is_ready.3 +.\doc\avr-libc\man\man3\eeprom_read_block.3 +.\doc\avr-libc\man\man3\eeprom_read_byte.3 +.\doc\avr-libc\man\man3\eeprom_read_dword.3 +.\doc\avr-libc\man\man3\eeprom_read_word.3 +.\doc\avr-libc\man\man3\eeprom_write_block.3 +.\doc\avr-libc\man\man3\eeprom_write_byte.3 +.\doc\avr-libc\man\man3\eeprom_write_dword.3 +.\doc\avr-libc\man\man3\eeprom_write_word.3 +.\doc\avr-libc\man\man3\EMPTY_INTERRUPT.3 +.\doc\avr-libc\man\man3\enable_external_int.3 +.\doc\avr-libc\man\man3\EOF.3 +.\doc\avr-libc\man\man3\ERANGE.3 +.\doc\avr-libc\man\man3\errno.3 +.\doc\avr-libc\man\man3\errno.h.3 +.\doc\avr-libc\man\man3\exit.3 +.\doc\avr-libc\man\man3\exp.3 +.\doc\avr-libc\man\man3\fabs.3 +.\doc\avr-libc\man\man3\FAQ.3 +.\doc\avr-libc\man\man3\fclose.3 +.\doc\avr-libc\man\man3\fdevopen.3 +.\doc\avr-libc\man\man3\fdevopen.c.3 +.\doc\avr-libc\man\man3\fdev_close.3 +.\doc\avr-libc\man\man3\fdev_get_udata.3 +.\doc\avr-libc\man\man3\FDEV_SETUP_STREAM.3 +.\doc\avr-libc\man\man3\fdev_set_udata.3 +.\doc\avr-libc\man\man3\fdim.3 +.\doc\avr-libc\man\man3\feof.3 +.\doc\avr-libc\man\man3\ferror.3 +.\doc\avr-libc\man\man3\fflush.3 +.\doc\avr-libc\man\man3\ffs.3 +.\doc\avr-libc\man\man3\ffs.S.3 +.\doc\avr-libc\man\man3\ffsl.3 +.\doc\avr-libc\man\man3\ffsl.S.3 +.\doc\avr-libc\man\man3\ffsll.3 +.\doc\avr-libc\man\man3\ffsll.S.3 +.\doc\avr-libc\man\man3\fgetc.3 +.\doc\avr-libc\man\man3\fgets.3 +.\doc\avr-libc\man\man3\FILE.3 +.\doc\avr-libc\man\man3\floor.3 +.\doc\avr-libc\man\man3\fma.3 +.\doc\avr-libc\man\man3\fmax.3 +.\doc\avr-libc\man\man3\fmin.3 +.\doc\avr-libc\man\man3\fmod.3 +.\doc\avr-libc\man\man3\fprintf.3 +.\doc\avr-libc\man\man3\fprintf_P.3 +.\doc\avr-libc\man\man3\fputc.3 +.\doc\avr-libc\man\man3\fputs.3 +.\doc\avr-libc\man\man3\fputs_P.3 +.\doc\avr-libc\man\man3\fread.3 +.\doc\avr-libc\man\man3\free.3 +.\doc\avr-libc\man\man3\frexp.3 +.\doc\avr-libc\man\man3\fscanf.3 +.\doc\avr-libc\man\man3\fscanf_P.3 +.\doc\avr-libc\man\man3\fuse.h.3 +.\doc\avr-libc\man\man3\FUSEMEM.3 +.\doc\avr-libc\man\man3\FUSES.3 +.\doc\avr-libc\man\man3\fwrite.3 +.\doc\avr-libc\man\man3\F_CPU.3 +.\doc\avr-libc\man\man3\getc.3 +.\doc\avr-libc\man\man3\getchar.3 +.\doc\avr-libc\man\man3\gets.3 +.\doc\avr-libc\man\man3\GET_EXTENDED_FUSE_BITS.3 +.\doc\avr-libc\man\man3\GET_HIGH_FUSE_BITS.3 +.\doc\avr-libc\man\man3\GET_LOCK_BITS.3 +.\doc\avr-libc\man\man3\GET_LOW_FUSE_BITS.3 +.\doc\avr-libc\man\man3\hypot.3 +.\doc\avr-libc\man\man3\inb.3 +.\doc\avr-libc\man\man3\INFINITY.3 +.\doc\avr-libc\man\man3\inline_asm.3 +.\doc\avr-libc\man\man3\inp.3 +.\doc\avr-libc\man\man3\install_tools.3 +.\doc\avr-libc\man\man3\INT16_C.3 +.\doc\avr-libc\man\man3\INT16_MAX.3 +.\doc\avr-libc\man\man3\INT16_MIN.3 +.\doc\avr-libc\man\man3\int16_t.3 +.\doc\avr-libc\man\man3\INT32_C.3 +.\doc\avr-libc\man\man3\INT32_MAX.3 +.\doc\avr-libc\man\man3\INT32_MIN.3 +.\doc\avr-libc\man\man3\int32_t.3 +.\doc\avr-libc\man\man3\INT64_C.3 +.\doc\avr-libc\man\man3\INT64_MAX.3 +.\doc\avr-libc\man\man3\INT64_MIN.3 +.\doc\avr-libc\man\man3\int64_t.3 +.\doc\avr-libc\man\man3\INT8_C.3 +.\doc\avr-libc\man\man3\INT8_MAX.3 +.\doc\avr-libc\man\man3\INT8_MIN.3 +.\doc\avr-libc\man\man3\int8_t.3 +.\doc\avr-libc\man\man3\INTERRUPT.3 +.\doc\avr-libc\man\man3\interrupt.h.3 +.\doc\avr-libc\man\man3\INTMAX_C.3 +.\doc\avr-libc\man\man3\INTMAX_MAX.3 +.\doc\avr-libc\man\man3\INTMAX_MIN.3 +.\doc\avr-libc\man\man3\intmax_t.3 +.\doc\avr-libc\man\man3\INTPTR_MAX.3 +.\doc\avr-libc\man\man3\INTPTR_MIN.3 +.\doc\avr-libc\man\man3\intptr_t.3 +.\doc\avr-libc\man\man3\inttypes.h.3 +.\doc\avr-libc\man\man3\int_farptr_t.3 +.\doc\avr-libc\man\man3\INT_FAST16_MAX.3 +.\doc\avr-libc\man\man3\INT_FAST16_MIN.3 +.\doc\avr-libc\man\man3\int_fast16_t.3 +.\doc\avr-libc\man\man3\INT_FAST32_MAX.3 +.\doc\avr-libc\man\man3\INT_FAST32_MIN.3 +.\doc\avr-libc\man\man3\int_fast32_t.3 +.\doc\avr-libc\man\man3\INT_FAST64_MAX.3 +.\doc\avr-libc\man\man3\INT_FAST64_MIN.3 +.\doc\avr-libc\man\man3\int_fast64_t.3 +.\doc\avr-libc\man\man3\INT_FAST8_MAX.3 +.\doc\avr-libc\man\man3\INT_FAST8_MIN.3 +.\doc\avr-libc\man\man3\int_fast8_t.3 +.\doc\avr-libc\man\man3\INT_LEAST16_MAX.3 +.\doc\avr-libc\man\man3\INT_LEAST16_MIN.3 +.\doc\avr-libc\man\man3\int_least16_t.3 +.\doc\avr-libc\man\man3\INT_LEAST32_MAX.3 +.\doc\avr-libc\man\man3\INT_LEAST32_MIN.3 +.\doc\avr-libc\man\man3\int_least32_t.3 +.\doc\avr-libc\man\man3\INT_LEAST64_MAX.3 +.\doc\avr-libc\man\man3\INT_LEAST64_MIN.3 +.\doc\avr-libc\man\man3\int_least64_t.3 +.\doc\avr-libc\man\man3\INT_LEAST8_MAX.3 +.\doc\avr-libc\man\man3\INT_LEAST8_MIN.3 +.\doc\avr-libc\man\man3\int_least8_t.3 +.\doc\avr-libc\man\man3\io.h.3 +.\doc\avr-libc\man\man3\isalnum.3 +.\doc\avr-libc\man\man3\isalpha.3 +.\doc\avr-libc\man\man3\isascii.3 +.\doc\avr-libc\man\man3\isblank.3 +.\doc\avr-libc\man\man3\iscntrl.3 +.\doc\avr-libc\man\man3\isdigit.3 +.\doc\avr-libc\man\man3\isfinite.3 +.\doc\avr-libc\man\man3\isgraph.3 +.\doc\avr-libc\man\man3\isinf.3 +.\doc\avr-libc\man\man3\islower.3 +.\doc\avr-libc\man\man3\isnan.3 +.\doc\avr-libc\man\man3\isprint.3 +.\doc\avr-libc\man\man3\ispunct.3 +.\doc\avr-libc\man\man3\ISR.3 +.\doc\avr-libc\man\man3\ISR_ALIAS.3 +.\doc\avr-libc\man\man3\ISR_ALIASOF.3 +.\doc\avr-libc\man\man3\ISR_BLOCK.3 +.\doc\avr-libc\man\man3\ISR_NAKED.3 +.\doc\avr-libc\man\man3\ISR_NOBLOCK.3 +.\doc\avr-libc\man\man3\isspace.3 +.\doc\avr-libc\man\man3\isupper.3 +.\doc\avr-libc\man\man3\isxdigit.3 +.\doc\avr-libc\man\man3\itoa.3 +.\doc\avr-libc\man\man3\labs.3 +.\doc\avr-libc\man\man3\largedemo.3 +.\doc\avr-libc\man\man3\ldexp.3 +.\doc\avr-libc\man\man3\ldiv.3 +.\doc\avr-libc\man\man3\ldiv_t.3 +.\doc\avr-libc\man\man3\library.3 +.\doc\avr-libc\man\man3\lock.h.3 +.\doc\avr-libc\man\man3\LOCKBITS.3 +.\doc\avr-libc\man\man3\LOCKBITS_DEFAULT.3 +.\doc\avr-libc\man\man3\LOCKMEM.3 +.\doc\avr-libc\man\man3\log.3 +.\doc\avr-libc\man\man3\log10.3 +.\doc\avr-libc\man\man3\longjmp.3 +.\doc\avr-libc\man\man3\loop_until_bit_is_clear.3 +.\doc\avr-libc\man\man3\loop_until_bit_is_set.3 +.\doc\avr-libc\man\man3\lrint.3 +.\doc\avr-libc\man\man3\lround.3 +.\doc\avr-libc\man\man3\ltoa.3 +.\doc\avr-libc\man\man3\malloc.3 +.\doc\avr-libc\man\man3\math.h.3 +.\doc\avr-libc\man\man3\memccpy.3 +.\doc\avr-libc\man\man3\memccpy.S.3 +.\doc\avr-libc\man\man3\memchr.3 +.\doc\avr-libc\man\man3\memchr.S.3 +.\doc\avr-libc\man\man3\memchr_P.3 +.\doc\avr-libc\man\man3\memchr_P.S.3 +.\doc\avr-libc\man\man3\memcmp.3 +.\doc\avr-libc\man\man3\memcmp.S.3 +.\doc\avr-libc\man\man3\memcmp_P.3 +.\doc\avr-libc\man\man3\memcmp_P.S.3 +.\doc\avr-libc\man\man3\memcpy.3 +.\doc\avr-libc\man\man3\memcpy.S.3 +.\doc\avr-libc\man\man3\memcpy_P.3 +.\doc\avr-libc\man\man3\memcpy_P.S.3 +.\doc\avr-libc\man\man3\memmem.3 +.\doc\avr-libc\man\man3\memmem.S.3 +.\doc\avr-libc\man\man3\memmem_P.3 +.\doc\avr-libc\man\man3\memmove.3 +.\doc\avr-libc\man\man3\memmove.S.3 +.\doc\avr-libc\man\man3\memrchr.3 +.\doc\avr-libc\man\man3\memrchr.S.3 +.\doc\avr-libc\man\man3\memrchr_P.3 +.\doc\avr-libc\man\man3\memrchr_P.S.3 +.\doc\avr-libc\man\man3\memset.3 +.\doc\avr-libc\man\man3\memset.S.3 +.\doc\avr-libc\man\man3\mem_sections.3 +.\doc\avr-libc\man\man3\modf.3 +.\doc\avr-libc\man\man3\M_PI.3 +.\doc\avr-libc\man\man3\M_SQRT2.3 +.\doc\avr-libc\man\man3\NAN.3 +.\doc\avr-libc\man\man3\NONATOMIC_BLOCK.3 +.\doc\avr-libc\man\man3\NONATOMIC_FORCEOFF.3 +.\doc\avr-libc\man\man3\NONATOMIC_RESTORESTATE.3 +.\doc\avr-libc\man\man3\outb.3 +.\doc\avr-libc\man\man3\outp.3 +.\doc\avr-libc\man\man3\overview.3 +.\doc\avr-libc\man\man3\p.3 +.\doc\avr-libc\man\man3\parity.h.3 +.\doc\avr-libc\man\man3\parity_even_bit.3 +.\doc\avr-libc\man\man3\pgmspace.3 +.\doc\avr-libc\man\man3\pgmspace.h.3 +.\doc\avr-libc\man\man3\PGM_P.3 +.\doc\avr-libc\man\man3\pgm_read_byte.3 +.\doc\avr-libc\man\man3\pgm_read_byte_far.3 +.\doc\avr-libc\man\man3\pgm_read_byte_near.3 +.\doc\avr-libc\man\man3\pgm_read_dword.3 +.\doc\avr-libc\man\man3\pgm_read_dword_far.3 +.\doc\avr-libc\man\man3\pgm_read_dword_near.3 +.\doc\avr-libc\man\man3\pgm_read_float.3 +.\doc\avr-libc\man\man3\pgm_read_float_far.3 +.\doc\avr-libc\man\man3\pgm_read_float_near.3 +.\doc\avr-libc\man\man3\pgm_read_word.3 +.\doc\avr-libc\man\man3\pgm_read_word_far.3 +.\doc\avr-libc\man\man3\pgm_read_word_near.3 +.\doc\avr-libc\man\man3\PGM_VOID_P.3 +.\doc\avr-libc\man\man3\porting.3 +.\doc\avr-libc\man\man3\pow.3 +.\doc\avr-libc\man\man3\power.h.3 +.\doc\avr-libc\man\man3\PRId16.3 +.\doc\avr-libc\man\man3\PRId32.3 +.\doc\avr-libc\man\man3\PRId8.3 +.\doc\avr-libc\man\man3\PRIdFAST16.3 +.\doc\avr-libc\man\man3\PRIdFAST32.3 +.\doc\avr-libc\man\man3\PRIdFAST8.3 +.\doc\avr-libc\man\man3\PRIdLEAST16.3 +.\doc\avr-libc\man\man3\PRIdLEAST32.3 +.\doc\avr-libc\man\man3\PRIdLEAST8.3 +.\doc\avr-libc\man\man3\PRIdPTR.3 +.\doc\avr-libc\man\man3\PRIi16.3 +.\doc\avr-libc\man\man3\PRIi32.3 +.\doc\avr-libc\man\man3\PRIi8.3 +.\doc\avr-libc\man\man3\PRIiFAST16.3 +.\doc\avr-libc\man\man3\PRIiFAST32.3 +.\doc\avr-libc\man\man3\PRIiFAST8.3 +.\doc\avr-libc\man\man3\PRIiLEAST16.3 +.\doc\avr-libc\man\man3\PRIiLEAST32.3 +.\doc\avr-libc\man\man3\PRIiLEAST8.3 +.\doc\avr-libc\man\man3\PRIiPTR.3 +.\doc\avr-libc\man\man3\printf.3 +.\doc\avr-libc\man\man3\printf_P.3 +.\doc\avr-libc\man\man3\PRIo16.3 +.\doc\avr-libc\man\man3\PRIo32.3 +.\doc\avr-libc\man\man3\PRIo8.3 +.\doc\avr-libc\man\man3\PRIoFAST16.3 +.\doc\avr-libc\man\man3\PRIoFAST32.3 +.\doc\avr-libc\man\man3\PRIoFAST8.3 +.\doc\avr-libc\man\man3\PRIoLEAST16.3 +.\doc\avr-libc\man\man3\PRIoLEAST32.3 +.\doc\avr-libc\man\man3\PRIoLEAST8.3 +.\doc\avr-libc\man\man3\PRIoPTR.3 +.\doc\avr-libc\man\man3\PRIu16.3 +.\doc\avr-libc\man\man3\PRIu32.3 +.\doc\avr-libc\man\man3\PRIu8.3 +.\doc\avr-libc\man\man3\PRIuFAST16.3 +.\doc\avr-libc\man\man3\PRIuFAST32.3 +.\doc\avr-libc\man\man3\PRIuFAST8.3 +.\doc\avr-libc\man\man3\PRIuLEAST16.3 +.\doc\avr-libc\man\man3\PRIuLEAST32.3 +.\doc\avr-libc\man\man3\PRIuLEAST8.3 +.\doc\avr-libc\man\man3\PRIuPTR.3 +.\doc\avr-libc\man\man3\PRIX16.3 +.\doc\avr-libc\man\man3\PRIX32.3 +.\doc\avr-libc\man\man3\PRIX8.3 +.\doc\avr-libc\man\man3\PRIXFAST16.3 +.\doc\avr-libc\man\man3\PRIXFAST32.3 +.\doc\avr-libc\man\man3\PRIXFAST8.3 +.\doc\avr-libc\man\man3\PRIXLEAST16.3 +.\doc\avr-libc\man\man3\PRIXLEAST32.3 +.\doc\avr-libc\man\man3\PRIXLEAST8.3 +.\doc\avr-libc\man\man3\PRIXPTR.3 +.\doc\avr-libc\man\man3\PROGMEM.3 +.\doc\avr-libc\man\man3\prog_char.3 +.\doc\avr-libc\man\man3\prog_int16_t.3 +.\doc\avr-libc\man\man3\prog_int32_t.3 +.\doc\avr-libc\man\man3\prog_int64_t.3 +.\doc\avr-libc\man\man3\prog_int8_t.3 +.\doc\avr-libc\man\man3\prog_uchar.3 +.\doc\avr-libc\man\man3\prog_uint16_t.3 +.\doc\avr-libc\man\man3\prog_uint32_t.3 +.\doc\avr-libc\man\man3\prog_uint64_t.3 +.\doc\avr-libc\man\man3\prog_uint8_t.3 +.\doc\avr-libc\man\man3\prog_void.3 +.\doc\avr-libc\man\man3\PSTR.3 +.\doc\avr-libc\man\man3\PTRDIFF_MAX.3 +.\doc\avr-libc\man\man3\PTRDIFF_MIN.3 +.\doc\avr-libc\man\man3\putc.3 +.\doc\avr-libc\man\man3\putchar.3 +.\doc\avr-libc\man\man3\puts.3 +.\doc\avr-libc\man\man3\puts_P.3 +.\doc\avr-libc\man\man3\qsort.3 +.\doc\avr-libc\man\man3\quot.3 +.\doc\avr-libc\man\man3\rand.3 +.\doc\avr-libc\man\man3\random.3 +.\doc\avr-libc\man\man3\RANDOM_MAX.3 +.\doc\avr-libc\man\man3\random_r.3 +.\doc\avr-libc\man\man3\RAND_MAX.3 +.\doc\avr-libc\man\man3\rand_r.3 +.\doc\avr-libc\man\man3\realloc.3 +.\doc\avr-libc\man\man3\release_method.3 +.\doc\avr-libc\man\man3\rem.3 +.\doc\avr-libc\man\man3\reti.3 +.\doc\avr-libc\man\man3\round.3 +.\doc\avr-libc\man\man3\sbi.3 +.\doc\avr-libc\man\man3\scanf.3 +.\doc\avr-libc\man\man3\scanf_P.3 +.\doc\avr-libc\man\man3\SCNd16.3 +.\doc\avr-libc\man\man3\SCNd32.3 +.\doc\avr-libc\man\man3\SCNdFAST16.3 +.\doc\avr-libc\man\man3\SCNdFAST32.3 +.\doc\avr-libc\man\man3\SCNdLEAST16.3 +.\doc\avr-libc\man\man3\SCNdLEAST32.3 +.\doc\avr-libc\man\man3\SCNdPTR.3 +.\doc\avr-libc\man\man3\SCNi16.3 +.\doc\avr-libc\man\man3\SCNi32.3 +.\doc\avr-libc\man\man3\SCNiFAST16.3 +.\doc\avr-libc\man\man3\SCNiFAST32.3 +.\doc\avr-libc\man\man3\SCNiLEAST16.3 +.\doc\avr-libc\man\man3\SCNiLEAST32.3 +.\doc\avr-libc\man\man3\SCNiPTR.3 +.\doc\avr-libc\man\man3\SCNo16.3 +.\doc\avr-libc\man\man3\SCNo32.3 +.\doc\avr-libc\man\man3\SCNoFAST16.3 +.\doc\avr-libc\man\man3\SCNoFAST32.3 +.\doc\avr-libc\man\man3\SCNoLEAST16.3 +.\doc\avr-libc\man\man3\SCNoLEAST32.3 +.\doc\avr-libc\man\man3\SCNoPTR.3 +.\doc\avr-libc\man\man3\SCNu16.3 +.\doc\avr-libc\man\man3\SCNu32.3 +.\doc\avr-libc\man\man3\SCNuFAST16.3 +.\doc\avr-libc\man\man3\SCNuFAST32.3 +.\doc\avr-libc\man\man3\SCNuLEAST16.3 +.\doc\avr-libc\man\man3\SCNuLEAST32.3 +.\doc\avr-libc\man\man3\SCNuPTR.3 +.\doc\avr-libc\man\man3\SCNx16.3 +.\doc\avr-libc\man\man3\SCNx32.3 +.\doc\avr-libc\man\man3\SCNxFAST16.3 +.\doc\avr-libc\man\man3\SCNxFAST32.3 +.\doc\avr-libc\man\man3\SCNxLEAST16.3 +.\doc\avr-libc\man\man3\SCNxLEAST32.3 +.\doc\avr-libc\man\man3\SCNxPTR.3 +.\doc\avr-libc\man\man3\SEEK_CUR.3 +.\doc\avr-libc\man\man3\SEEK_END.3 +.\doc\avr-libc\man\man3\SEEK_SET.3 +.\doc\avr-libc\man\man3\sei.3 +.\doc\avr-libc\man\man3\setbaud.h.3 +.\doc\avr-libc\man\man3\setjmp.3 +.\doc\avr-libc\man\man3\setjmp.h.3 +.\doc\avr-libc\man\man3\SIGNAL.3 +.\doc\avr-libc\man\man3\signbit.3 +.\doc\avr-libc\man\man3\SIG_ATOMIC_MAX.3 +.\doc\avr-libc\man\man3\SIG_ATOMIC_MIN.3 +.\doc\avr-libc\man\man3\sin.3 +.\doc\avr-libc\man\man3\sinh.3 +.\doc\avr-libc\man\man3\SIZE_MAX.3 +.\doc\avr-libc\man\man3\sleep.h.3 +.\doc\avr-libc\man\man3\sleep_cpu.3 +.\doc\avr-libc\man\man3\sleep_disable.3 +.\doc\avr-libc\man\man3\sleep_enable.3 +.\doc\avr-libc\man\man3\sleep_mode.3 +.\doc\avr-libc\man\man3\snprintf.3 +.\doc\avr-libc\man\man3\snprintf_P.3 +.\doc\avr-libc\man\man3\sprintf.3 +.\doc\avr-libc\man\man3\sprintf_P.3 +.\doc\avr-libc\man\man3\sqrt.3 +.\doc\avr-libc\man\man3\square.3 +.\doc\avr-libc\man\man3\srand.3 +.\doc\avr-libc\man\man3\srandom.3 +.\doc\avr-libc\man\man3\sscanf.3 +.\doc\avr-libc\man\man3\sscanf_P.3 +.\doc\avr-libc\man\man3\stderr.3 +.\doc\avr-libc\man\man3\stdin.3 +.\doc\avr-libc\man\man3\stdint.h.3 +.\doc\avr-libc\man\man3\stdio.h.3 +.\doc\avr-libc\man\man3\stdiodemo.3 +.\doc\avr-libc\man\man3\stdlib.h.3 +.\doc\avr-libc\man\man3\stdout.3 +.\doc\avr-libc\man\man3\strcasecmp.3 +.\doc\avr-libc\man\man3\strcasecmp.S.3 +.\doc\avr-libc\man\man3\strcasecmp_P.3 +.\doc\avr-libc\man\man3\strcasecmp_P.S.3 +.\doc\avr-libc\man\man3\strcasestr.3 +.\doc\avr-libc\man\man3\strcasestr.S.3 +.\doc\avr-libc\man\man3\strcasestr_P.3 +.\doc\avr-libc\man\man3\strcat.3 +.\doc\avr-libc\man\man3\strcat.S.3 +.\doc\avr-libc\man\man3\strcat_P.3 +.\doc\avr-libc\man\man3\strcat_P.S.3 +.\doc\avr-libc\man\man3\strchr.3 +.\doc\avr-libc\man\man3\strchr.S.3 +.\doc\avr-libc\man\man3\strchrnul.3 +.\doc\avr-libc\man\man3\strchrnul.S.3 +.\doc\avr-libc\man\man3\strchrnul_P.3 +.\doc\avr-libc\man\man3\strchrnul_P.S.3 +.\doc\avr-libc\man\man3\strchr_P.3 +.\doc\avr-libc\man\man3\strchr_P.S.3 +.\doc\avr-libc\man\man3\strcmp.3 +.\doc\avr-libc\man\man3\strcmp.S.3 +.\doc\avr-libc\man\man3\strcmp_P.3 +.\doc\avr-libc\man\man3\strcmp_P.S.3 +.\doc\avr-libc\man\man3\strcpy.3 +.\doc\avr-libc\man\man3\strcpy.S.3 +.\doc\avr-libc\man\man3\strcpy_P.3 +.\doc\avr-libc\man\man3\strcpy_P.S.3 +.\doc\avr-libc\man\man3\strcspn.3 +.\doc\avr-libc\man\man3\strcspn.S.3 +.\doc\avr-libc\man\man3\strcspn_P.3 +.\doc\avr-libc\man\man3\strcspn_P.S.3 +.\doc\avr-libc\man\man3\strdup.3 +.\doc\avr-libc\man\man3\strdup.c.3 +.\doc\avr-libc\man\man3\string.h.3 +.\doc\avr-libc\man\man3\strlcat.3 +.\doc\avr-libc\man\man3\strlcat.S.3 +.\doc\avr-libc\man\man3\strlcat_P.3 +.\doc\avr-libc\man\man3\strlcat_P.S.3 +.\doc\avr-libc\man\man3\strlcpy.3 +.\doc\avr-libc\man\man3\strlcpy.S.3 +.\doc\avr-libc\man\man3\strlcpy_P.3 +.\doc\avr-libc\man\man3\strlcpy_P.S.3 +.\doc\avr-libc\man\man3\strlen.3 +.\doc\avr-libc\man\man3\strlen.S.3 +.\doc\avr-libc\man\man3\strlen_P.3 +.\doc\avr-libc\man\man3\strlen_P.S.3 +.\doc\avr-libc\man\man3\strlwr.3 +.\doc\avr-libc\man\man3\strlwr.S.3 +.\doc\avr-libc\man\man3\strncasecmp.3 +.\doc\avr-libc\man\man3\strncasecmp.S.3 +.\doc\avr-libc\man\man3\strncasecmp_P.3 +.\doc\avr-libc\man\man3\strncasecmp_P.S.3 +.\doc\avr-libc\man\man3\strncat.3 +.\doc\avr-libc\man\man3\strncat.S.3 +.\doc\avr-libc\man\man3\strncat_P.3 +.\doc\avr-libc\man\man3\strncat_P.S.3 +.\doc\avr-libc\man\man3\strncmp.3 +.\doc\avr-libc\man\man3\strncmp.S.3 +.\doc\avr-libc\man\man3\strncmp_P.3 +.\doc\avr-libc\man\man3\strncmp_P.S.3 +.\doc\avr-libc\man\man3\strncpy.3 +.\doc\avr-libc\man\man3\strncpy.S.3 +.\doc\avr-libc\man\man3\strncpy_P.3 +.\doc\avr-libc\man\man3\strncpy_P.S.3 +.\doc\avr-libc\man\man3\strnlen.3 +.\doc\avr-libc\man\man3\strnlen.S.3 +.\doc\avr-libc\man\man3\strnlen_P.3 +.\doc\avr-libc\man\man3\strnlen_P.S.3 +.\doc\avr-libc\man\man3\strpbrk.3 +.\doc\avr-libc\man\man3\strpbrk.S.3 +.\doc\avr-libc\man\man3\strpbrk_P.3 +.\doc\avr-libc\man\man3\strpbrk_P.S.3 +.\doc\avr-libc\man\man3\strrchr.3 +.\doc\avr-libc\man\man3\strrchr.S.3 +.\doc\avr-libc\man\man3\strrchr_P.3 +.\doc\avr-libc\man\man3\strrchr_P.S.3 +.\doc\avr-libc\man\man3\strrev.3 +.\doc\avr-libc\man\man3\strrev.S.3 +.\doc\avr-libc\man\man3\strsep.3 +.\doc\avr-libc\man\man3\strsep.S.3 +.\doc\avr-libc\man\man3\strsep_P.3 +.\doc\avr-libc\man\man3\strsep_P.S.3 +.\doc\avr-libc\man\man3\strspn.3 +.\doc\avr-libc\man\man3\strspn.S.3 +.\doc\avr-libc\man\man3\strspn_P.3 +.\doc\avr-libc\man\man3\strspn_P.S.3 +.\doc\avr-libc\man\man3\strstr.3 +.\doc\avr-libc\man\man3\strstr.S.3 +.\doc\avr-libc\man\man3\strstr_P.3 +.\doc\avr-libc\man\man3\strstr_P.S.3 +.\doc\avr-libc\man\man3\strtod.3 +.\doc\avr-libc\man\man3\strtok.3 +.\doc\avr-libc\man\man3\strtok.c.3 +.\doc\avr-libc\man\man3\strtok_r.3 +.\doc\avr-libc\man\man3\strtok_r.S.3 +.\doc\avr-libc\man\man3\strtol.3 +.\doc\avr-libc\man\man3\strtoul.3 +.\doc\avr-libc\man\man3\strupr.3 +.\doc\avr-libc\man\man3\strupr.S.3 +.\doc\avr-libc\man\man3\tan.3 +.\doc\avr-libc\man\man3\tanh.3 +.\doc\avr-libc\man\man3\timer_enable_int.3 +.\doc\avr-libc\man\man3\toascii.3 +.\doc\avr-libc\man\man3\todo.3 +.\doc\avr-libc\man\man3\tolower.3 +.\doc\avr-libc\man\man3\toupper.3 +.\doc\avr-libc\man\man3\trunc.3 +.\doc\avr-libc\man\man3\twi_demo.3 +.\doc\avr-libc\man\man3\TW_BUS_ERROR.3 +.\doc\avr-libc\man\man3\TW_MR_ARB_LOST.3 +.\doc\avr-libc\man\man3\TW_MR_DATA_ACK.3 +.\doc\avr-libc\man\man3\TW_MR_DATA_NACK.3 +.\doc\avr-libc\man\man3\TW_MR_SLA_ACK.3 +.\doc\avr-libc\man\man3\TW_MR_SLA_NACK.3 +.\doc\avr-libc\man\man3\TW_MT_ARB_LOST.3 +.\doc\avr-libc\man\man3\TW_MT_DATA_ACK.3 +.\doc\avr-libc\man\man3\TW_MT_DATA_NACK.3 +.\doc\avr-libc\man\man3\TW_MT_SLA_ACK.3 +.\doc\avr-libc\man\man3\TW_MT_SLA_NACK.3 +.\doc\avr-libc\man\man3\TW_NO_INFO.3 +.\doc\avr-libc\man\man3\TW_READ.3 +.\doc\avr-libc\man\man3\TW_REP_START.3 +.\doc\avr-libc\man\man3\TW_SR_ARB_LOST_GCALL_ACK.3 +.\doc\avr-libc\man\man3\TW_SR_ARB_LOST_SLA_ACK.3 +.\doc\avr-libc\man\man3\TW_SR_DATA_ACK.3 +.\doc\avr-libc\man\man3\TW_SR_DATA_NACK.3 +.\doc\avr-libc\man\man3\TW_SR_GCALL_ACK.3 +.\doc\avr-libc\man\man3\TW_SR_GCALL_DATA_ACK.3 +.\doc\avr-libc\man\man3\TW_SR_GCALL_DATA_NACK.3 +.\doc\avr-libc\man\man3\TW_SR_SLA_ACK.3 +.\doc\avr-libc\man\man3\TW_SR_STOP.3 +.\doc\avr-libc\man\man3\TW_START.3 +.\doc\avr-libc\man\man3\TW_STATUS.3 +.\doc\avr-libc\man\man3\TW_STATUS_MASK.3 +.\doc\avr-libc\man\man3\TW_ST_ARB_LOST_SLA_ACK.3 +.\doc\avr-libc\man\man3\TW_ST_DATA_ACK.3 +.\doc\avr-libc\man\man3\TW_ST_DATA_NACK.3 +.\doc\avr-libc\man\man3\TW_ST_LAST_DATA.3 +.\doc\avr-libc\man\man3\TW_ST_SLA_ACK.3 +.\doc\avr-libc\man\man3\TW_WRITE.3 +.\doc\avr-libc\man\man3\UBRRH_VALUE.3 +.\doc\avr-libc\man\man3\UBRRL_VALUE.3 +.\doc\avr-libc\man\man3\UBRR_VALUE.3 +.\doc\avr-libc\man\man3\UINT16_C.3 +.\doc\avr-libc\man\man3\UINT16_MAX.3 +.\doc\avr-libc\man\man3\uint16_t.3 +.\doc\avr-libc\man\man3\UINT32_C.3 +.\doc\avr-libc\man\man3\UINT32_MAX.3 +.\doc\avr-libc\man\man3\uint32_t.3 +.\doc\avr-libc\man\man3\UINT64_C.3 +.\doc\avr-libc\man\man3\UINT64_MAX.3 +.\doc\avr-libc\man\man3\uint64_t.3 +.\doc\avr-libc\man\man3\UINT8_C.3 +.\doc\avr-libc\man\man3\UINT8_MAX.3 +.\doc\avr-libc\man\man3\uint8_t.3 +.\doc\avr-libc\man\man3\UINTMAX_C.3 +.\doc\avr-libc\man\man3\UINTMAX_MAX.3 +.\doc\avr-libc\man\man3\uintmax_t.3 +.\doc\avr-libc\man\man3\UINTPTR_MAX.3 +.\doc\avr-libc\man\man3\uintptr_t.3 +.\doc\avr-libc\man\man3\uint_farptr_t.3 +.\doc\avr-libc\man\man3\UINT_FAST16_MAX.3 +.\doc\avr-libc\man\man3\uint_fast16_t.3 +.\doc\avr-libc\man\man3\UINT_FAST32_MAX.3 +.\doc\avr-libc\man\man3\uint_fast32_t.3 +.\doc\avr-libc\man\man3\UINT_FAST64_MAX.3 +.\doc\avr-libc\man\man3\uint_fast64_t.3 +.\doc\avr-libc\man\man3\UINT_FAST8_MAX.3 +.\doc\avr-libc\man\man3\uint_fast8_t.3 +.\doc\avr-libc\man\man3\UINT_LEAST16_MAX.3 +.\doc\avr-libc\man\man3\uint_least16_t.3 +.\doc\avr-libc\man\man3\UINT_LEAST32_MAX.3 +.\doc\avr-libc\man\man3\uint_least32_t.3 +.\doc\avr-libc\man\man3\UINT_LEAST64_MAX.3 +.\doc\avr-libc\man\man3\uint_least64_t.3 +.\doc\avr-libc\man\man3\UINT_LEAST8_MAX.3 +.\doc\avr-libc\man\man3\uint_least8_t.3 +.\doc\avr-libc\man\man3\ultoa.3 +.\doc\avr-libc\man\man3\ungetc.3 +.\doc\avr-libc\man\man3\USE_2X.3 +.\doc\avr-libc\man\man3\using_avrprog.3 +.\doc\avr-libc\man\man3\using_tools.3 +.\doc\avr-libc\man\man3\util_atomic.3 +.\doc\avr-libc\man\man3\util_crc.3 +.\doc\avr-libc\man\man3\util_delay.3 +.\doc\avr-libc\man\man3\util_delay_basic.3 +.\doc\avr-libc\man\man3\util_parity.3 +.\doc\avr-libc\man\man3\util_setbaud.3 +.\doc\avr-libc\man\man3\util_twi.3 +.\doc\avr-libc\man\man3\util_twi.h.3 +.\doc\avr-libc\man\man3\utoa.3 +.\doc\avr-libc\man\man3\vfprintf.3 +.\doc\avr-libc\man\man3\vfprintf_P.3 +.\doc\avr-libc\man\man3\vfscanf.3 +.\doc\avr-libc\man\man3\vfscanf_P.3 +.\doc\avr-libc\man\man3\vprintf.3 +.\doc\avr-libc\man\man3\vscanf.3 +.\doc\avr-libc\man\man3\vsnprintf.3 +.\doc\avr-libc\man\man3\vsnprintf_P.3 +.\doc\avr-libc\man\man3\vsprintf.3 +.\doc\avr-libc\man\man3\vsprintf_P.3 +.\doc\avr-libc\man\man3\wdt.h.3 +.\doc\avr-libc\man\man3\WDTO_120MS.3 +.\doc\avr-libc\man\man3\WDTO_15MS.3 +.\doc\avr-libc\man\man3\WDTO_1S.3 +.\doc\avr-libc\man\man3\WDTO_250MS.3 +.\doc\avr-libc\man\man3\WDTO_2S.3 +.\doc\avr-libc\man\man3\WDTO_30MS.3 +.\doc\avr-libc\man\man3\WDTO_4S.3 +.\doc\avr-libc\man\man3\WDTO_500MS.3 +.\doc\avr-libc\man\man3\WDTO_60MS.3 +.\doc\avr-libc\man\man3\WDTO_8S.3 +.\doc\avr-libc\man\man3\wdt_disable.3 +.\doc\avr-libc\man\man3\wdt_enable.3 +.\doc\avr-libc\man\man3\wdt_reset.3 +.\doc\avr-libc\man\man3\_AVR_BOOT_H_.3 +.\doc\avr-libc\man\man3\_AVR_FUSE_H_.3 +.\doc\avr-libc\man\man3\_AVR_LOCK_H_.3 +.\doc\avr-libc\man\man3\_AVR_POWER_H_.3 +.\doc\avr-libc\man\man3\_AVR_SLEEP_H_.3 +.\doc\avr-libc\man\man3\_BV.3 +.\doc\avr-libc\man\man3\_crc16_update.3 +.\doc\avr-libc\man\man3\_crc_ccitt_update.3 +.\doc\avr-libc\man\man3\_crc_ibutton_update.3 +.\doc\avr-libc\man\man3\_crc_xmodem_update.3 +.\doc\avr-libc\man\man3\_delay_loop_1.3 +.\doc\avr-libc\man\man3\_delay_loop_2.3 +.\doc\avr-libc\man\man3\_delay_ms.3 +.\doc\avr-libc\man\man3\_delay_us.3 +.\doc\avr-libc\man\man3\_EEGET.3 +.\doc\avr-libc\man\man3\_EEPUT.3 +.\doc\avr-libc\man\man3\_FDEV_EOF.3 +.\doc\avr-libc\man\man3\_FDEV_ERR.3 +.\doc\avr-libc\man\man3\_FDEV_SETUP_READ.3 +.\doc\avr-libc\man\man3\_FDEV_SETUP_RW.3 +.\doc\avr-libc\man\man3\_FDEV_SETUP_WRITE.3 +.\doc\avr-libc\man\man3\_FFS.3 +.\doc\avr-libc\man\man3\_SLEEP_CONTROL_REG.3 +.\doc\avr-libc\man\man3\_SLEEP_ENABLE_MASK.3 +.\doc\avr-libc\man\man3\_STDIO_H_.3 +.\doc\avr-libc\man\man3\_STDLIB_H_.3 +.\doc\avr-libc\man\man3\_STRING_H_.3 +.\doc\avr-libc\man\man3\_UTIL_ATOMIC_H_.3 +.\doc\avr-libc\man\man3\_UTIL_DELAY_BASIC_H_.3 +.\doc\avr-libc\man\man3\_UTIL_DELAY_H_.3 +.\doc\avr-libc\man\man3\_UTIL_TWI_H_.3 +.\doc\avr-libc\man\man3\_WD_CHANGE_BIT.3 +.\doc\avr-libc\man\man3\_WD_CONTROL_REG.3 +.\doc\avr-libc\man\man3\_WD_PS3_MASK.3 +.\doc\avr-libc\man\man3\__ATTR_NORETURN__.3 +.\doc\avr-libc\man\man3\__ATTR_PROGMEM__.3 +.\doc\avr-libc\man\man3\__ATTR_PURE__.3 +.\doc\avr-libc\man\man3\__AVR_LIBC_DATE_.3 +.\doc\avr-libc\man\man3\__AVR_LIBC_DATE_STRING__.3 +.\doc\avr-libc\man\man3\__AVR_LIBC_MAJOR__.3 +.\doc\avr-libc\man\man3\__AVR_LIBC_MINOR__.3 +.\doc\avr-libc\man\man3\__AVR_LIBC_REVISION__.3 +.\doc\avr-libc\man\man3\__AVR_LIBC_VERSION_STRING__.3 +.\doc\avr-libc\man\man3\__AVR_LIBC_VERSION__.3 +.\doc\avr-libc\man\man3\__BOOT_LOCK_BITS_SET.3 +.\doc\avr-libc\man\man3\__boot_lock_bits_set_alternate.3 +.\doc\avr-libc\man\man3\__BOOT_PAGE_ERASE.3 +.\doc\avr-libc\man\man3\__boot_page_erase_alternate.3 +.\doc\avr-libc\man\man3\__boot_page_erase_extended.3 +.\doc\avr-libc\man\man3\__boot_page_erase_normal.3 +.\doc\avr-libc\man\man3\__BOOT_PAGE_FILL.3 +.\doc\avr-libc\man\man3\__boot_page_fill_alternate.3 +.\doc\avr-libc\man\man3\__boot_page_fill_extended.3 +.\doc\avr-libc\man\man3\__boot_page_fill_normal.3 +.\doc\avr-libc\man\man3\__BOOT_PAGE_WRITE.3 +.\doc\avr-libc\man\man3\__boot_page_write_alternate.3 +.\doc\avr-libc\man\man3\__boot_page_write_extended.3 +.\doc\avr-libc\man\man3\__boot_page_write_normal.3 +.\doc\avr-libc\man\man3\__BOOT_RWW_ENABLE.3 +.\doc\avr-libc\man\man3\__boot_rww_enable_alternate.3 +.\doc\avr-libc\man\man3\__BOOT_SIGROW_READ.3 +.\doc\avr-libc\man\man3\__COMMON_ASB.3 +.\doc\avr-libc\man\man3\__COMMON_ASRE.3 +.\doc\avr-libc\man\man3\__compar_fn_t.3 +.\doc\avr-libc\man\man3\__CONCAT.3 +.\doc\avr-libc\man\man3\__CONCATenate.3 +.\doc\avr-libc\man\man3\__CTYPE_H_.3 +.\doc\avr-libc\man\man3\__ELPM.3 +.\doc\avr-libc\man\man3\__ELPM_classic__.3 +.\doc\avr-libc\man\man3\__ELPM_dword.3 +.\doc\avr-libc\man\man3\__ELPM_dword_classic__.3 +.\doc\avr-libc\man\man3\__ELPM_dword_enhanced__.3 +.\doc\avr-libc\man\man3\__ELPM_enhanced__.3 +.\doc\avr-libc\man\man3\__ELPM_float.3 +.\doc\avr-libc\man\man3\__ELPM_float_classic__.3 +.\doc\avr-libc\man\man3\__ELPM_float_enhanced__.3 +.\doc\avr-libc\man\man3\__ELPM_word.3 +.\doc\avr-libc\man\man3\__ELPM_word_classic__.3 +.\doc\avr-libc\man\man3\__ELPM_word_enhanced__.3 +.\doc\avr-libc\man\man3\__ERRNO_H_.3 +.\doc\avr-libc\man\man3\__INTR_ATTRS.3 +.\doc\avr-libc\man\man3\__LPM.3 +.\doc\avr-libc\man\man3\__LPM_classic__.3 +.\doc\avr-libc\man\man3\__LPM_dword.3 +.\doc\avr-libc\man\man3\__LPM_dword_classic__.3 +.\doc\avr-libc\man\man3\__LPM_dword_enhanced__.3 +.\doc\avr-libc\man\man3\__LPM_enhanced__.3 +.\doc\avr-libc\man\man3\__LPM_float.3 +.\doc\avr-libc\man\man3\__LPM_float_classic__.3 +.\doc\avr-libc\man\man3\__LPM_float_enhanced__.3 +.\doc\avr-libc\man\man3\__LPM_word.3 +.\doc\avr-libc\man\man3\__LPM_word_classic__.3 +.\doc\avr-libc\man\man3\__LPM_word_enhanced__.3 +.\doc\avr-libc\man\man3\__malloc_heap_end.3 +.\doc\avr-libc\man\man3\__malloc_heap_start.3 +.\doc\avr-libc\man\man3\__malloc_margin.3 +.\doc\avr-libc\man\man3\__need_NULL.3 +.\doc\avr-libc\man\man3\__need_size_t.3 +.\doc\avr-libc\man\man3\__need_wchar_t.3 +.\doc\avr-libc\man\man3\__PGMSPACE_H_.3 +.\doc\avr-libc\man\man3\__ptr_t.3 +.\doc\avr-libc\man\man3\__SETJMP_H_.3 +.\doc\avr-libc\man\man3\__USING_MINT8.3 +.\doc\avrdude\avrdude.pdf +.\doc\binutils\as.html\a.html +.\doc\binutils\as.html\ABORT-_0028COFF_0029.html +.\doc\binutils\as.html\Abort.html +.\doc\binutils\as.html\Absolute-Literals-Directive.html +.\doc\binutils\as.html\Acknowledgements.html +.\doc\binutils\as.html\Align.html +.\doc\binutils\as.html\Alpha-Directives.html +.\doc\binutils\as.html\Alpha-Floating-Point.html +.\doc\binutils\as.html\Alpha-Notes.html +.\doc\binutils\as.html\Alpha-Opcodes.html +.\doc\binutils\as.html\Alpha-Options.html +.\doc\binutils\as.html\Alpha-Syntax.html +.\doc\binutils\as.html\Alpha_002dChars.html +.\doc\binutils\as.html\Alpha_002dDependent.html +.\doc\binutils\as.html\Alpha_002dRegs.html +.\doc\binutils\as.html\Alpha_002dRelocs.html +.\doc\binutils\as.html\alternate.html +.\doc\binutils\as.html\Altmacro.html +.\doc\binutils\as.html\ARC-Directives.html +.\doc\binutils\as.html\ARC-Floating-Point.html +.\doc\binutils\as.html\ARC-Opcodes.html +.\doc\binutils\as.html\ARC-Options.html +.\doc\binutils\as.html\ARC-Syntax.html +.\doc\binutils\as.html\ARC_002dChars.html +.\doc\binutils\as.html\ARC_002dDependent.html +.\doc\binutils\as.html\ARC_002dRegs.html +.\doc\binutils\as.html\Arguments.html +.\doc\binutils\as.html\ARM-Directives.html +.\doc\binutils\as.html\ARM-Floating-Point.html +.\doc\binutils\as.html\ARM-Mapping-Symbols.html +.\doc\binutils\as.html\ARM-Opcodes.html +.\doc\binutils\as.html\ARM-Options.html +.\doc\binutils\as.html\ARM-Syntax.html +.\doc\binutils\as.html\ARM-Unwinding-Tutorial.html +.\doc\binutils\as.html\ARM_002dChars.html +.\doc\binutils\as.html\ARM_002dDependent.html +.\doc\binutils\as.html\ARM_002dRegs.html +.\doc\binutils\as.html\ARM_002dRelocations.html +.\doc\binutils\as.html\arm_005ffnend.html +.\doc\binutils\as.html\arm_005ffnstart.html +.\doc\binutils\as.html\arm_005fmovsp.html +.\doc\binutils\as.html\arm_005fpad.html +.\doc\binutils\as.html\arm_005fsave.html +.\doc\binutils\as.html\arm_005fsetfp.html +.\doc\binutils\as.html\AS-Index.html +.\doc\binutils\as.html\As-Sections.html +.\doc\binutils\as.html\Ascii.html +.\doc\binutils\as.html\Asciz.html +.\doc\binutils\as.html\AVR-Opcodes.html +.\doc\binutils\as.html\AVR-Options.html +.\doc\binutils\as.html\AVR-Syntax.html +.\doc\binutils\as.html\AVR_002dChars.html +.\doc\binutils\as.html\AVR_002dDependent.html +.\doc\binutils\as.html\AVR_002dModifiers.html +.\doc\binutils\as.html\AVR_002dRegs.html +.\doc\binutils\as.html\a_002eout-Symbols.html +.\doc\binutils\as.html\Balign.html +.\doc\binutils\as.html\BFIN-Directives.html +.\doc\binutils\as.html\BFIN-Syntax.html +.\doc\binutils\as.html\BFIN_002dDependent.html +.\doc\binutils\as.html\Bignums.html +.\doc\binutils\as.html\bss.html +.\doc\binutils\as.html\Bug-Criteria.html +.\doc\binutils\as.html\Bug-Reporting.html +.\doc\binutils\as.html\Byte.html +.\doc\binutils\as.html\callj_002di960.html +.\doc\binutils\as.html\CFI-directives.html +.\doc\binutils\as.html\Characters.html +.\doc\binutils\as.html\Chars.html +.\doc\binutils\as.html\COFF-Symbols.html +.\doc\binutils\as.html\Comm.html +.\doc\binutils\as.html\Command-Line.html +.\doc\binutils\as.html\Comments.html +.\doc\binutils\as.html\Compare_002dand_002dbranch_002di960.html +.\doc\binutils\as.html\Constants.html +.\doc\binutils\as.html\CR16-Operand-Qualifiers.html +.\doc\binutils\as.html\CR16_002dDependent.html +.\doc\binutils\as.html\crisnous.html +.\doc\binutils\as.html\crispic.html +.\doc\binutils\as.html\CRIS_002dChars.html +.\doc\binutils\as.html\CRIS_002dDependent.html +.\doc\binutils\as.html\CRIS_002dExpand.html +.\doc\binutils\as.html\CRIS_002dOpts.html +.\doc\binutils\as.html\CRIS_002dPic.html +.\doc\binutils\as.html\CRIS_002dPseudos.html +.\doc\binutils\as.html\CRIS_002dRegs.html +.\doc\binutils\as.html\CRIS_002dSymbols.html +.\doc\binutils\as.html\CRIS_002dSyntax.html +.\doc\binutils\as.html\D.html +.\doc\binutils\as.html\D10V_002dAddressing.html +.\doc\binutils\as.html\D10V_002dChars.html +.\doc\binutils\as.html\D10V_002dDependent.html +.\doc\binutils\as.html\D10V_002dFloat.html +.\doc\binutils\as.html\D10V_002dOpcodes.html +.\doc\binutils\as.html\D10V_002dOpts.html +.\doc\binutils\as.html\D10V_002dRegs.html +.\doc\binutils\as.html\D10V_002dSize.html +.\doc\binutils\as.html\D10V_002dSubs.html +.\doc\binutils\as.html\D10V_002dSyntax.html +.\doc\binutils\as.html\D10V_002dWord.html +.\doc\binutils\as.html\D30V_002dAddressing.html +.\doc\binutils\as.html\D30V_002dChars.html +.\doc\binutils\as.html\D30V_002dDependent.html +.\doc\binutils\as.html\D30V_002dFloat.html +.\doc\binutils\as.html\D30V_002dGuarded.html +.\doc\binutils\as.html\D30V_002dOpcodes.html +.\doc\binutils\as.html\D30V_002dOpts.html +.\doc\binutils\as.html\D30V_002dRegs.html +.\doc\binutils\as.html\D30V_002dSize.html +.\doc\binutils\as.html\D30V_002dSubs.html +.\doc\binutils\as.html\D30V_002dSyntax.html +.\doc\binutils\as.html\Data.html +.\doc\binutils\as.html\Def.html +.\doc\binutils\as.html\Defining-New-Object-Attributes.html +.\doc\binutils\as.html\Density-Instructions.html +.\doc\binutils\as.html\Deprecated.html +.\doc\binutils\as.html\Desc.html +.\doc\binutils\as.html\Dim.html +.\doc\binutils\as.html\Directives_002di860.html +.\doc\binutils\as.html\Directives_002di960.html +.\doc\binutils\as.html\Dot.html +.\doc\binutils\as.html\Double.html +.\doc\binutils\as.html\Eject.html +.\doc\binutils\as.html\Else.html +.\doc\binutils\as.html\Elseif.html +.\doc\binutils\as.html\Empty-Exprs.html +.\doc\binutils\as.html\End.html +.\doc\binutils\as.html\Endef.html +.\doc\binutils\as.html\Endfunc.html +.\doc\binutils\as.html\Endif.html +.\doc\binutils\as.html\Equ.html +.\doc\binutils\as.html\Equiv.html +.\doc\binutils\as.html\Eqv.html +.\doc\binutils\as.html\Err.html +.\doc\binutils\as.html\Error.html +.\doc\binutils\as.html\Errors.html +.\doc\binutils\as.html\ESA_002f390-Directives.html +.\doc\binutils\as.html\ESA_002f390-Floating-Point.html +.\doc\binutils\as.html\ESA_002f390-Notes.html +.\doc\binutils\as.html\ESA_002f390-Opcodes.html +.\doc\binutils\as.html\ESA_002f390-Options.html +.\doc\binutils\as.html\ESA_002f390-Syntax.html +.\doc\binutils\as.html\ESA_002f390_002dDependent.html +.\doc\binutils\as.html\Exitm.html +.\doc\binutils\as.html\Expressions.html +.\doc\binutils\as.html\Extern.html +.\doc\binutils\as.html\f.html +.\doc\binutils\as.html\Fail.html +.\doc\binutils\as.html\File.html +.\doc\binutils\as.html\Fill.html +.\doc\binutils\as.html\Float.html +.\doc\binutils\as.html\Floating-Point_002di960.html +.\doc\binutils\as.html\Flonums.html +.\doc\binutils\as.html\Func.html +.\doc\binutils\as.html\Global.html +.\doc\binutils\as.html\GNU-Assembler.html +.\doc\binutils\as.html\GNU-Free-Documentation-License.html +.\doc\binutils\as.html\GNU-Object-Attributes.html +.\doc\binutils\as.html\Gnu_005fattribute.html +.\doc\binutils\as.html\GREG_002dbase.html +.\doc\binutils\as.html\H8_002f300-Directives.html +.\doc\binutils\as.html\H8_002f300-Floating-Point.html +.\doc\binutils\as.html\H8_002f300-Opcodes.html +.\doc\binutils\as.html\H8_002f300-Options.html +.\doc\binutils\as.html\H8_002f300-Syntax.html +.\doc\binutils\as.html\H8_002f300_002dAddressing.html +.\doc\binutils\as.html\H8_002f300_002dChars.html +.\doc\binutils\as.html\H8_002f300_002dDependent.html +.\doc\binutils\as.html\H8_002f300_002dRegs.html +.\doc\binutils\as.html\Hidden.html +.\doc\binutils\as.html\HPPA-Directives.html +.\doc\binutils\as.html\HPPA-Floating-Point.html +.\doc\binutils\as.html\HPPA-Notes.html +.\doc\binutils\as.html\HPPA-Opcodes.html +.\doc\binutils\as.html\HPPA-Options.html +.\doc\binutils\as.html\HPPA-Syntax.html +.\doc\binutils\as.html\HPPA_002dDependent.html +.\doc\binutils\as.html\hword.html +.\doc\binutils\as.html\I.html +.\doc\binutils\as.html\i386_002d16bit.html +.\doc\binutils\as.html\i386_002dArch.html +.\doc\binutils\as.html\i386_002dBugs.html +.\doc\binutils\as.html\i386_002dDependent.html +.\doc\binutils\as.html\i386_002dDirectives.html +.\doc\binutils\as.html\i386_002dFloat.html +.\doc\binutils\as.html\i386_002dJumps.html +.\doc\binutils\as.html\i386_002dMemory.html +.\doc\binutils\as.html\i386_002dMnemonics.html +.\doc\binutils\as.html\i386_002dNotes.html +.\doc\binutils\as.html\i386_002dOptions.html +.\doc\binutils\as.html\i386_002dPrefixes.html +.\doc\binutils\as.html\i386_002dRegs.html +.\doc\binutils\as.html\i386_002dSIMD.html +.\doc\binutils\as.html\i386_002dSyntax.html +.\doc\binutils\as.html\i860_002dDependent.html +.\doc\binutils\as.html\i960_002dDependent.html +.\doc\binutils\as.html\IA_002d64-Opcodes.html +.\doc\binutils\as.html\IA_002d64-Options.html +.\doc\binutils\as.html\IA_002d64-Syntax.html +.\doc\binutils\as.html\IA_002d64_002dBits.html +.\doc\binutils\as.html\IA_002d64_002dChars.html +.\doc\binutils\as.html\IA_002d64_002dDependent.html +.\doc\binutils\as.html\IA_002d64_002dRegs.html +.\doc\binutils\as.html\Ident.html +.\doc\binutils\as.html\If.html +.\doc\binutils\as.html\Incbin.html +.\doc\binutils\as.html\Include.html +.\doc\binutils\as.html\index.html +.\doc\binutils\as.html\Infix-Ops.html +.\doc\binutils\as.html\Input-Files.html +.\doc\binutils\as.html\Int.html +.\doc\binutils\as.html\Integer-Exprs.html +.\doc\binutils\as.html\Integers.html +.\doc\binutils\as.html\Internal.html +.\doc\binutils\as.html\Invoking.html +.\doc\binutils\as.html\IP2K_002dDependent.html +.\doc\binutils\as.html\IP2K_002dOpts.html +.\doc\binutils\as.html\Irp.html +.\doc\binutils\as.html\Irpc.html +.\doc\binutils\as.html\K.html +.\doc\binutils\as.html\L.html +.\doc\binutils\as.html\Labels.html +.\doc\binutils\as.html\Lcomm.html +.\doc\binutils\as.html\Ld-Sections.html +.\doc\binutils\as.html\Lflags.html +.\doc\binutils\as.html\Line.html +.\doc\binutils\as.html\Linkonce.html +.\doc\binutils\as.html\List.html +.\doc\binutils\as.html\listing.html +.\doc\binutils\as.html\Literal-Directive.html +.\doc\binutils\as.html\Literal-Position-Directive.html +.\doc\binutils\as.html\Literal-Prefix-Directive.html +.\doc\binutils\as.html\Ln.html +.\doc\binutils\as.html\LNS-directives.html +.\doc\binutils\as.html\Long.html +.\doc\binutils\as.html\Longcalls-Directive.html +.\doc\binutils\as.html\M.html +.\doc\binutils\as.html\M32C_002dDependent.html +.\doc\binutils\as.html\M32C_002dModifiers.html +.\doc\binutils\as.html\M32C_002dOpts.html +.\doc\binutils\as.html\M32R_002dDependent.html +.\doc\binutils\as.html\M32R_002dDirectives.html +.\doc\binutils\as.html\M32R_002dOpts.html +.\doc\binutils\as.html\M32R_002dWarnings.html +.\doc\binutils\as.html\M68HC11_002dBranch.html +.\doc\binutils\as.html\M68HC11_002dDependent.html +.\doc\binutils\as.html\M68HC11_002dDirectives.html +.\doc\binutils\as.html\M68HC11_002dFloat.html +.\doc\binutils\as.html\M68HC11_002dModifiers.html +.\doc\binutils\as.html\M68HC11_002dopcodes.html +.\doc\binutils\as.html\M68HC11_002dOpts.html +.\doc\binutils\as.html\M68HC11_002dSyntax.html +.\doc\binutils\as.html\M68K_002dBranch.html +.\doc\binutils\as.html\M68K_002dChars.html +.\doc\binutils\as.html\M68K_002dDependent.html +.\doc\binutils\as.html\M68K_002dDirectives.html +.\doc\binutils\as.html\M68K_002dFloat.html +.\doc\binutils\as.html\M68K_002dMoto_002dSyntax.html +.\doc\binutils\as.html\M68K_002dopcodes.html +.\doc\binutils\as.html\M68K_002dOpts.html +.\doc\binutils\as.html\M68K_002dSyntax.html +.\doc\binutils\as.html\Machine-Dependencies.html +.\doc\binutils\as.html\Macro.html +.\doc\binutils\as.html\Manual.html +.\doc\binutils\as.html\march_002doption.html +.\doc\binutils\as.html\MD.html +.\doc\binutils\as.html\MIPS-ASE-instruction-generation-overrides.html +.\doc\binutils\as.html\MIPS-autoextend.html +.\doc\binutils\as.html\MIPS-floating_002dpoint.html +.\doc\binutils\as.html\MIPS-insn.html +.\doc\binutils\as.html\MIPS-ISA.html +.\doc\binutils\as.html\MIPS-Object.html +.\doc\binutils\as.html\MIPS-option-stack.html +.\doc\binutils\as.html\MIPS-Opts.html +.\doc\binutils\as.html\MIPS-Stabs.html +.\doc\binutils\as.html\MIPS-symbol-sizes.html +.\doc\binutils\as.html\MIPS_002dDependent.html +.\doc\binutils\as.html\mmixsite.html +.\doc\binutils\as.html\MMIX_002dbyte.html +.\doc\binutils\as.html\MMIX_002dChars.html +.\doc\binutils\as.html\MMIX_002dconstants.html +.\doc\binutils\as.html\MMIX_002dDependent.html +.\doc\binutils\as.html\MMIX_002dExpand.html +.\doc\binutils\as.html\MMIX_002dgreg.html +.\doc\binutils\as.html\MMIX_002dis.html +.\doc\binutils\as.html\MMIX_002dloc.html +.\doc\binutils\as.html\MMIX_002dlocal.html +.\doc\binutils\as.html\MMIX_002dmmixal.html +.\doc\binutils\as.html\MMIX_002dOpts.html +.\doc\binutils\as.html\MMIX_002dprefix.html +.\doc\binutils\as.html\MMIX_002dPseudos.html +.\doc\binutils\as.html\MMIX_002dRegs.html +.\doc\binutils\as.html\MMIX_002dspec.html +.\doc\binutils\as.html\MMIX_002dSymbols.html +.\doc\binutils\as.html\MMIX_002dSyntax.html +.\doc\binutils\as.html\MRI.html +.\doc\binutils\as.html\MSP430-Directives.html +.\doc\binutils\as.html\MSP430-Floating-Point.html +.\doc\binutils\as.html\MSP430-Opcodes.html +.\doc\binutils\as.html\MSP430-Options.html +.\doc\binutils\as.html\MSP430-Profiling-Capability.html +.\doc\binutils\as.html\MSP430-Syntax.html +.\doc\binutils\as.html\MSP430_002dChars.html +.\doc\binutils\as.html\MSP430_002dDependent.html +.\doc\binutils\as.html\MSP430_002dExt.html +.\doc\binutils\as.html\MSP430_002dMacros.html +.\doc\binutils\as.html\MSP430_002dRegs.html +.\doc\binutils\as.html\Noaltmacro.html +.\doc\binutils\as.html\Nolist.html +.\doc\binutils\as.html\Notes_002di860.html +.\doc\binutils\as.html\Numbers.html +.\doc\binutils\as.html\o.html +.\doc\binutils\as.html\Object-Attributes.html +.\doc\binutils\as.html\Object-Formats.html +.\doc\binutils\as.html\Object.html +.\doc\binutils\as.html\Octa.html +.\doc\binutils\as.html\Opcodes-for-i860.html +.\doc\binutils\as.html\Opcodes-for-i960.html +.\doc\binutils\as.html\Operators.html +.\doc\binutils\as.html\Options_002di860.html +.\doc\binutils\as.html\Options_002di960.html +.\doc\binutils\as.html\Org.html +.\doc\binutils\as.html\Overview.html +.\doc\binutils\as.html\P2align.html +.\doc\binutils\as.html\PDP_002d11_002dDependent.html +.\doc\binutils\as.html\PDP_002d11_002dMnemonics.html +.\doc\binutils\as.html\PDP_002d11_002dOptions.html +.\doc\binutils\as.html\PDP_002d11_002dPseudos.html +.\doc\binutils\as.html\PDP_002d11_002dSyntax.html +.\doc\binutils\as.html\PDP_002d11_002dSynthetic.html +.\doc\binutils\as.html\PJ-Options.html +.\doc\binutils\as.html\PJ_002dDependent.html +.\doc\binutils\as.html\PopSection.html +.\doc\binutils\as.html\PowerPC_002dOpts.html +.\doc\binutils\as.html\PowerPC_002dPseudo.html +.\doc\binutils\as.html\PPC_002dDependent.html +.\doc\binutils\as.html\Prefix-Ops.html +.\doc\binutils\as.html\Preprocessing.html +.\doc\binutils\as.html\Previous.html +.\doc\binutils\as.html\Print.html +.\doc\binutils\as.html\Protected.html +.\doc\binutils\as.html\Pseudo-Ops.html +.\doc\binutils\as.html\Psize.html +.\doc\binutils\as.html\Purgem.html +.\doc\binutils\as.html\PushSection.html +.\doc\binutils\as.html\Quad.html +.\doc\binutils\as.html\R.html +.\doc\binutils\as.html\Reloc.html +.\doc\binutils\as.html\Reporting-Bugs.html +.\doc\binutils\as.html\Rept.html +.\doc\binutils\as.html\Sbttl.html +.\doc\binutils\as.html\Schedule-Directive.html +.\doc\binutils\as.html\Scl.html +.\doc\binutils\as.html\Secs-Background.html +.\doc\binutils\as.html\Section.html +.\doc\binutils\as.html\Sections.html +.\doc\binutils\as.html\Set.html +.\doc\binutils\as.html\Setting-Symbols.html +.\doc\binutils\as.html\SH-Directives.html +.\doc\binutils\as.html\SH-Floating-Point.html +.\doc\binutils\as.html\SH-Opcodes.html +.\doc\binutils\as.html\SH-Options.html +.\doc\binutils\as.html\SH-Syntax.html +.\doc\binutils\as.html\SH64-Directives.html +.\doc\binutils\as.html\SH64-Opcodes.html +.\doc\binutils\as.html\SH64-Options.html +.\doc\binutils\as.html\SH64-Syntax.html +.\doc\binutils\as.html\SH64_002dAddressing.html +.\doc\binutils\as.html\SH64_002dChars.html +.\doc\binutils\as.html\SH64_002dDependent.html +.\doc\binutils\as.html\SH64_002dRegs.html +.\doc\binutils\as.html\Short.html +.\doc\binutils\as.html\SH_002dAddressing.html +.\doc\binutils\as.html\SH_002dChars.html +.\doc\binutils\as.html\SH_002dDependent.html +.\doc\binutils\as.html\SH_002dRegs.html +.\doc\binutils\as.html\Single.html +.\doc\binutils\as.html\Size.html +.\doc\binutils\as.html\Skip.html +.\doc\binutils\as.html\Sleb128.html +.\doc\binutils\as.html\SOM-Symbols.html +.\doc\binutils\as.html\Space.html +.\doc\binutils\as.html\Sparc_002dAligned_002dData.html +.\doc\binutils\as.html\Sparc_002dChars.html +.\doc\binutils\as.html\Sparc_002dConstants.html +.\doc\binutils\as.html\Sparc_002dDependent.html +.\doc\binutils\as.html\Sparc_002dDirectives.html +.\doc\binutils\as.html\Sparc_002dFloat.html +.\doc\binutils\as.html\Sparc_002dOpts.html +.\doc\binutils\as.html\Sparc_002dRegs.html +.\doc\binutils\as.html\Sparc_002dRelocs.html +.\doc\binutils\as.html\Sparc_002dSize_002dTranslations.html +.\doc\binutils\as.html\Sparc_002dSyntax.html +.\doc\binutils\as.html\Stab.html +.\doc\binutils\as.html\Statements.html +.\doc\binutils\as.html\statistics.html +.\doc\binutils\as.html\String.html +.\doc\binutils\as.html\Strings.html +.\doc\binutils\as.html\Struct.html +.\doc\binutils\as.html\SubSection.html +.\doc\binutils\as.html\Sub_002dSections.html +.\doc\binutils\as.html\Symbol-Attributes.html +.\doc\binutils\as.html\Symbol-Desc.html +.\doc\binutils\as.html\Symbol-Intro.html +.\doc\binutils\as.html\Symbol-Names.html +.\doc\binutils\as.html\Symbol-Other.html +.\doc\binutils\as.html\Symbol-Type.html +.\doc\binutils\as.html\Symbol-Value.html +.\doc\binutils\as.html\Symbols.html +.\doc\binutils\as.html\Symver.html +.\doc\binutils\as.html\Syntax.html +.\doc\binutils\as.html\Tag.html +.\doc\binutils\as.html\Text.html +.\doc\binutils\as.html\TIC54X_002dBlock.html +.\doc\binutils\as.html\TIC54X_002dBuiltins.html +.\doc\binutils\as.html\TIC54X_002dConstants.html +.\doc\binutils\as.html\TIC54X_002dDependent.html +.\doc\binutils\as.html\TIC54X_002dDirectives.html +.\doc\binutils\as.html\TIC54X_002dEnv.html +.\doc\binutils\as.html\TIC54X_002dExt.html +.\doc\binutils\as.html\TIC54X_002dLocals.html +.\doc\binutils\as.html\TIC54X_002dMacros.html +.\doc\binutils\as.html\TIC54X_002dMMRegs.html +.\doc\binutils\as.html\TIC54X_002dOpts.html +.\doc\binutils\as.html\TIC54X_002dSubsyms.html +.\doc\binutils\as.html\Title.html +.\doc\binutils\as.html\traditional_002dformat.html +.\doc\binutils\as.html\Transform-Directive.html +.\doc\binutils\as.html\Type.html +.\doc\binutils\as.html\Uleb128.html +.\doc\binutils\as.html\v.html +.\doc\binutils\as.html\V850-Directives.html +.\doc\binutils\as.html\V850-Floating-Point.html +.\doc\binutils\as.html\V850-Opcodes.html +.\doc\binutils\as.html\V850-Options.html +.\doc\binutils\as.html\V850-Syntax.html +.\doc\binutils\as.html\V850_002dChars.html +.\doc\binutils\as.html\V850_002dDependent.html +.\doc\binutils\as.html\V850_002dRegs.html +.\doc\binutils\as.html\Val.html +.\doc\binutils\as.html\VAX_002dbranch.html +.\doc\binutils\as.html\Vax_002dDependent.html +.\doc\binutils\as.html\VAX_002ddirectives.html +.\doc\binutils\as.html\VAX_002dfloat.html +.\doc\binutils\as.html\VAX_002dno.html +.\doc\binutils\as.html\VAX_002dopcodes.html +.\doc\binutils\as.html\VAX_002doperands.html +.\doc\binutils\as.html\VAX_002dOpts.html +.\doc\binutils\as.html\Version.html +.\doc\binutils\as.html\VTableEntry.html +.\doc\binutils\as.html\VTableInherit.html +.\doc\binutils\as.html\W.html +.\doc\binutils\as.html\Warning.html +.\doc\binutils\as.html\Weak.html +.\doc\binutils\as.html\Weakref.html +.\doc\binutils\as.html\Whitespace.html +.\doc\binutils\as.html\Word.html +.\doc\binutils\as.html\Xtensa-Automatic-Alignment.html +.\doc\binutils\as.html\Xtensa-Branch-Relaxation.html +.\doc\binutils\as.html\Xtensa-Call-Relaxation.html +.\doc\binutils\as.html\Xtensa-Directives.html +.\doc\binutils\as.html\Xtensa-Immediate-Relaxation.html +.\doc\binutils\as.html\Xtensa-Opcodes.html +.\doc\binutils\as.html\Xtensa-Optimizations.html +.\doc\binutils\as.html\Xtensa-Options.html +.\doc\binutils\as.html\Xtensa-Registers.html +.\doc\binutils\as.html\Xtensa-Relaxation.html +.\doc\binutils\as.html\Xtensa-Syntax.html +.\doc\binutils\as.html\Xtensa_002dDependent.html +.\doc\binutils\as.html\Z.html +.\doc\binutils\as.html\Z80-Directives.html +.\doc\binutils\as.html\Z80-Floating-Point.html +.\doc\binutils\as.html\Z80-Opcodes.html +.\doc\binutils\as.html\Z80-Options.html +.\doc\binutils\as.html\Z80-Syntax.html +.\doc\binutils\as.html\Z8000-Directives.html +.\doc\binutils\as.html\Z8000-Opcodes.html +.\doc\binutils\as.html\Z8000-Options.html +.\doc\binutils\as.html\Z8000-Syntax.html +.\doc\binutils\as.html\Z8000_002dAddressing.html +.\doc\binutils\as.html\Z8000_002dChars.html +.\doc\binutils\as.html\Z8000_002dDependent.html +.\doc\binutils\as.html\Z8000_002dRegs.html +.\doc\binutils\as.html\Z80_002dCase.html +.\doc\binutils\as.html\Z80_002dChars.html +.\doc\binutils\as.html\Z80_002dDependent.html +.\doc\binutils\as.html\Z80_002dRegs.html +.\doc\binutils\bfd.html\Adding-symbols-from-an-archive.html +.\doc\binutils\bfd.html\Adding-symbols-from-an-object-file.html +.\doc\binutils\bfd.html\Adding-Symbols-to-the-Hash-Table.html +.\doc\binutils\bfd.html\aout.html +.\doc\binutils\bfd.html\Architectures.html +.\doc\binutils\bfd.html\Archives.html +.\doc\binutils\bfd.html\BFD-back-ends.html +.\doc\binutils\bfd.html\BFD-front-end.html +.\doc\binutils\bfd.html\BFD-Index.html +.\doc\binutils\bfd.html\BFD-information-loss.html +.\doc\binutils\bfd.html\bfd_005ftarget.html +.\doc\binutils\bfd.html\Canonical-format.html +.\doc\binutils\bfd.html\coff.html +.\doc\binutils\bfd.html\Core-Files.html +.\doc\binutils\bfd.html\Creating-a-Linker-Hash-Table.html +.\doc\binutils\bfd.html\Creating-and-Freeing-a-Hash-Table.html +.\doc\binutils\bfd.html\Define-the-Derived-Structures.html +.\doc\binutils\bfd.html\Deriving-a-New-Hash-Table-Type.html +.\doc\binutils\bfd.html\Differing-file-formats.html +.\doc\binutils\bfd.html\elf.html +.\doc\binutils\bfd.html\File-Caching.html +.\doc\binutils\bfd.html\File-layout.html +.\doc\binutils\bfd.html\Formats.html +.\doc\binutils\bfd.html\GNU-Free-Documentation-License.html +.\doc\binutils\bfd.html\Hash-Tables.html +.\doc\binutils\bfd.html\History.html +.\doc\binutils\bfd.html\How-It-Works.html +.\doc\binutils\bfd.html\howto-manager.html +.\doc\binutils\bfd.html\index.html +.\doc\binutils\bfd.html\Information-provided-by-the-linker.html +.\doc\binutils\bfd.html\Initialization.html +.\doc\binutils\bfd.html\Internal.html +.\doc\binutils\bfd.html\Linker-Functions.html +.\doc\binutils\bfd.html\Looking-Up-or-Entering-a-String.html +.\doc\binutils\bfd.html\Memory-Usage.html +.\doc\binutils\bfd.html\Mini-Symbols.html +.\doc\binutils\bfd.html\mmo-section-mapping.html +.\doc\binutils\bfd.html\mmo.html +.\doc\binutils\bfd.html\Opening-and-Closing.html +.\doc\binutils\bfd.html\Overview.html +.\doc\binutils\bfd.html\Performing-the-Final-Link.html +.\doc\binutils\bfd.html\Reading-Symbols.html +.\doc\binutils\bfd.html\Relocating-the-section-contents.html +.\doc\binutils\bfd.html\Relocations.html +.\doc\binutils\bfd.html\Section-Input.html +.\doc\binutils\bfd.html\Section-Output.html +.\doc\binutils\bfd.html\section-prototypes.html +.\doc\binutils\bfd.html\Sections.html +.\doc\binutils\bfd.html\symbol-handling-functions.html +.\doc\binutils\bfd.html\Symbols.html +.\doc\binutils\bfd.html\Symbol_002dtable.html +.\doc\binutils\bfd.html\Targets.html +.\doc\binutils\bfd.html\Traversing-a-Hash-Table.html +.\doc\binutils\bfd.html\typedef-arelent.html +.\doc\binutils\bfd.html\typedef-asection.html +.\doc\binutils\bfd.html\typedef-asymbol.html +.\doc\binutils\bfd.html\What-BFD-Version-2-Can-Do.html +.\doc\binutils\bfd.html\What-to-Put-Where.html +.\doc\binutils\bfd.html\Write-Other-Derived-Routines.html +.\doc\binutils\bfd.html\Write-the-Derived-Creation-Routine.html +.\doc\binutils\bfd.html\Writing-Symbols.html +.\doc\binutils\bfd.html\Writing-the-symbol-table.html +.\doc\binutils\binutils.html\addr2line.html +.\doc\binutils\binutils.html\ar-cmdline.html +.\doc\binutils\binutils.html\ar-scripts.html +.\doc\binutils\binutils.html\ar.html +.\doc\binutils\binutils.html\Architecture-Selection.html +.\doc\binutils\binutils.html\Binutils-Index.html +.\doc\binutils\binutils.html\Bug-Criteria.html +.\doc\binutils\binutils.html\Bug-Reporting.html +.\doc\binutils\binutils.html\Common-Options.html +.\doc\binutils\binutils.html\c_002b_002bfilt.html +.\doc\binutils\binutils.html\def-file-format.html +.\doc\binutils\binutils.html\dlltool.html +.\doc\binutils\binutils.html\GNU-Free-Documentation-License.html +.\doc\binutils\binutils.html\index.html +.\doc\binutils\binutils.html\nlmconv.html +.\doc\binutils\binutils.html\nm.html +.\doc\binutils\binutils.html\objcopy.html +.\doc\binutils\binutils.html\objdump.html +.\doc\binutils\binutils.html\ranlib.html +.\doc\binutils\binutils.html\readelf.html +.\doc\binutils\binutils.html\Reporting-Bugs.html +.\doc\binutils\binutils.html\Selecting-the-Target-System.html +.\doc\binutils\binutils.html\size.html +.\doc\binutils\binutils.html\strings.html +.\doc\binutils\binutils.html\strip.html +.\doc\binutils\binutils.html\Target-Selection.html +.\doc\binutils\binutils.html\windmc.html +.\doc\binutils\binutils.html\windres.html +.\doc\binutils\configure.html +.\doc\binutils\gprof.html\Analysis-Options.html +.\doc\binutils\gprof.html\Annotated-Source.html +.\doc\binutils\gprof.html\Assumptions.html +.\doc\binutils\gprof.html\Call-Graph.html +.\doc\binutils\gprof.html\Callers.html +.\doc\binutils\gprof.html\Compiling.html +.\doc\binutils\gprof.html\Cycles.html +.\doc\binutils\gprof.html\Debugging.html +.\doc\binutils\gprof.html\Deprecated-Options.html +.\doc\binutils\gprof.html\Details.html +.\doc\binutils\gprof.html\Executing.html +.\doc\binutils\gprof.html\File-Format.html +.\doc\binutils\gprof.html\Flat-Profile.html +.\doc\binutils\gprof.html\GNU-Free-Documentation-License.html +.\doc\binutils\gprof.html\How-do-I_003f.html +.\doc\binutils\gprof.html\Implementation.html +.\doc\binutils\gprof.html\Inaccuracy.html +.\doc\binutils\gprof.html\Incompatibilities.html +.\doc\binutils\gprof.html\index.html +.\doc\binutils\gprof.html\Internals.html +.\doc\binutils\gprof.html\Introduction.html +.\doc\binutils\gprof.html\Invoking.html +.\doc\binutils\gprof.html\Line_002dby_002dline.html +.\doc\binutils\gprof.html\Miscellaneous-Options.html +.\doc\binutils\gprof.html\Output-Options.html +.\doc\binutils\gprof.html\Output.html +.\doc\binutils\gprof.html\Primary.html +.\doc\binutils\gprof.html\Sampling-Error.html +.\doc\binutils\gprof.html\Subroutines.html +.\doc\binutils\gprof.html\Symspecs.html +.\doc\binutils\ld.html\ARM.html +.\doc\binutils\ld.html\Assignments.html +.\doc\binutils\ld.html\Basic-Script-Concepts.html +.\doc\binutils\ld.html\BFD-information-loss.html +.\doc\binutils\ld.html\BFD-outline.html +.\doc\binutils\ld.html\BFD.html +.\doc\binutils\ld.html\Bug-Criteria.html +.\doc\binutils\ld.html\Bug-Reporting.html +.\doc\binutils\ld.html\Builtin-Functions.html +.\doc\binutils\ld.html\Canonical-format.html +.\doc\binutils\ld.html\Constants.html +.\doc\binutils\ld.html\Entry-Point.html +.\doc\binutils\ld.html\Environment.html +.\doc\binutils\ld.html\Evaluation.html +.\doc\binutils\ld.html\Expression-Section.html +.\doc\binutils\ld.html\Expressions.html +.\doc\binutils\ld.html\File-Commands.html +.\doc\binutils\ld.html\Forced-Input-Alignment.html +.\doc\binutils\ld.html\Forced-Output-Alignment.html +.\doc\binutils\ld.html\Format-Commands.html +.\doc\binutils\ld.html\GNU-Free-Documentation-License.html +.\doc\binutils\ld.html\H8_002f300.html +.\doc\binutils\ld.html\HPPA-ELF32.html +.\doc\binutils\ld.html\i960.html +.\doc\binutils\ld.html\Implicit-Linker-Scripts.html +.\doc\binutils\ld.html\index.html +.\doc\binutils\ld.html\Input-Section-Basics.html +.\doc\binutils\ld.html\Input-Section-Common.html +.\doc\binutils\ld.html\Input-Section-Example.html +.\doc\binutils\ld.html\Input-Section-Keep.html +.\doc\binutils\ld.html\Input-Section-Wildcards.html +.\doc\binutils\ld.html\Input-Section.html +.\doc\binutils\ld.html\Invocation.html +.\doc\binutils\ld.html\LD-Index.html +.\doc\binutils\ld.html\Location-Counter.html +.\doc\binutils\ld.html\M68HC11_002f68HC12.html +.\doc\binutils\ld.html\M68K.html +.\doc\binutils\ld.html\Machine-Dependent.html +.\doc\binutils\ld.html\MEMORY.html +.\doc\binutils\ld.html\Miscellaneous-Commands.html +.\doc\binutils\ld.html\MMIX.html +.\doc\binutils\ld.html\MRI.html +.\doc\binutils\ld.html\MSP430.html +.\doc\binutils\ld.html\Operators.html +.\doc\binutils\ld.html\Options.html +.\doc\binutils\ld.html\Orphan-Sections.html +.\doc\binutils\ld.html\Output-Section-Address.html +.\doc\binutils\ld.html\Output-Section-Attributes.html +.\doc\binutils\ld.html\Output-Section-Data.html +.\doc\binutils\ld.html\Output-Section-Description.html +.\doc\binutils\ld.html\Output-Section-Discarding.html +.\doc\binutils\ld.html\Output-Section-Fill.html +.\doc\binutils\ld.html\Output-Section-Keywords.html +.\doc\binutils\ld.html\Output-Section-LMA.html +.\doc\binutils\ld.html\Output-Section-Name.html +.\doc\binutils\ld.html\Output-Section-Phdr.html +.\doc\binutils\ld.html\Output-Section-Region.html +.\doc\binutils\ld.html\Output-Section-Type.html +.\doc\binutils\ld.html\Overlay-Description.html +.\doc\binutils\ld.html\Overview.html +.\doc\binutils\ld.html\PHDRS.html +.\doc\binutils\ld.html\PowerPC-ELF32.html +.\doc\binutils\ld.html\PowerPC64-ELF64.html +.\doc\binutils\ld.html\PROVIDE.html +.\doc\binutils\ld.html\PROVIDE_005fHIDDEN.html +.\doc\binutils\ld.html\Reporting-Bugs.html +.\doc\binutils\ld.html\Script-Format.html +.\doc\binutils\ld.html\Scripts.html +.\doc\binutils\ld.html\SECTIONS.html +.\doc\binutils\ld.html\Simple-Assignments.html +.\doc\binutils\ld.html\Simple-Commands.html +.\doc\binutils\ld.html\Simple-Example.html +.\doc\binutils\ld.html\Source-Code-Reference.html +.\doc\binutils\ld.html\SPU-ELF.html +.\doc\binutils\ld.html\Symbols.html +.\doc\binutils\ld.html\TI-COFF.html +.\doc\binutils\ld.html\VERSION.html +.\doc\binutils\ld.html\WIN32.html +.\doc\binutils\ld.html\Xtensa.html +.\doc\binutils\libiberty.html +.\doc\binutils\standards.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Argument-Prescan.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Assertions.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Character-sets.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Common-Predefined-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Computed-Includes.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Concatenation.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Concept-Index.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Conditional-Syntax.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Conditional-Uses.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Conditionals.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\C_002b_002b-Named-Operators.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\dashMF.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Defined.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Deleted-Code.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Diagnostics.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Differences-from-previous-versions.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Directives-Within-Macro-Arguments.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Duplication-of-Side-Effects.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Elif.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Else.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Environment-Variables.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\fdollars_002din_002didentifiers.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Function_002dlike-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\GNU-Free-Documentation-License.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Header-Files.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Identifier-characters.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\If.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Ifdef.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Implementation-Details.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Implementation-limits.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Implementation_002ddefined-behavior.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Include-Operation.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Include-Syntax.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Index-of-Directives.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\index.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Initial-processing.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Invocation.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Line-Control.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Macro-Arguments.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Macro-Pitfalls.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Misnesting.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Newlines-in-Arguments.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Object_002dlike-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Obsolete-Features.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Obsolete-once_002donly-headers.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Once_002dOnly-Headers.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Operator-Precedence-Problems.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Option-Index.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Other-Directives.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Overview.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Predefined-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Preprocessor-Output.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Search-Path.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Self_002dReferential-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Standard-Predefined-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Stringification.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Swallowing-the-Semicolon.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\System-Headers.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\System_002dspecific-Predefined-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\The-preprocessing-language.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Tokenization.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Traditional-lexical-analysis.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Traditional-macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Traditional-miscellany.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Traditional-Mode.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Traditional-warnings.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\trigraphs.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Undefining-and-Redefining-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Variadic-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Wrapper-Headers.html +.\doc\gcc\HTML\gcc-4.3.2\cpp\Wtrigraphs.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Concept-Index.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Conventions.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Files.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Guard-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Hash-Nodes.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\index.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Invalid-identifiers.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Lexer.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Lexing-a-line.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Line-Numbering.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Macro-Expansion.html +.\doc\gcc\HTML\gcc-4.3.2\cppinternals\Token-Spacing.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Actual-Bugs.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Alignment.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Alpha-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Alternate-Keywords.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\ARC-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Architecture-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Argument-Types.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\ARM-iWMMXt-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\ARM-NEON-Intrinsics.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\ARM-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\ARM-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Arrays-and-pointers-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Asm-Labels.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Assembler-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Atomic-Builtins.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Attribute-Syntax.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\AVR-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Backwards-Compatibility.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Binary-constants.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Blackfin-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Blackfin-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Bound-member-functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Bug-Criteria.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Bug-Reporting.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Bugs.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C-Dialect-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C-Extensions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C-Implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C99-Thread_002dLocal-Edits.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Case-Ranges.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Cast-to-Union.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Character-Escapes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Characters-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Code-Gen-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Compatibility.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\compatibility_005falias.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Complex.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Compound-Literals.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Conditionals.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Constant-string-objects.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Constructing-Calls.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Contributing.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Contributors.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Copy-Assignment.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Copying.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\CRIS-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Cross_002dCompiler-Problems.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Cross_002dprofiling.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\CRX-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C_002b_002b-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C_002b_002b-Comments.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C_002b_002b-Dialect-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C_002b_002b-Extensions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C_002b_002b-Interface.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C_002b_002b-Misunderstandings.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\C_002b_002b98-Thread_002dLocal-Edits.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Darwin-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Darwin-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\dashMF.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Debugging-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\DEC-Alpha-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\DEC-Alpha_002fVMS-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Decimal-Float.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Declarators-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Deprecated-Features.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Designated-Inits.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Diagnostic-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Directly_002dmapped-Integer-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Directly_002dmapped-Media-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Directory-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Disappointments.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Dollar-Signs.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Empty-Structures.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Environment-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Environment-Variables.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Escaped-Newlines.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Example-of-asm-with-clobbered-asm-reg.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Executing-code-before-main.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Explicit-Reg-Vars.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Extended-Asm.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\fdollars_002din_002didentifiers.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Fixed-Headers.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Fixed_002dPoint.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Floating-point-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Floating-Types.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\FRV-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\FR_002dV-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Function-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Function-Names.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Function-Prototypes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Funding.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Garbage-Collection.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Gcov-and-Optimization.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Gcov-Data-Files.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Gcov-Intro.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Gcov.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Global-Reg-Vars.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\GNU-Free-Documentation-License.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\GNU-Project.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\GNU_002fLinux-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\G_002b_002b-and-GCC.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\H8_002f300-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Hex-Floats.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Hints-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\HPPA-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\i386-and-x86_002d64-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\i386-Type-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\i386-Variable-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\IA_002d64-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Identifiers-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Incompatibilities.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Incomplete-Enums.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\index.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Initializers.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Inline.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Integers-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Interoperation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Invoking-GCC.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Invoking-Gcov.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Invoking-G_002b_002b.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Java-Exceptions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Keyword-Index.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Labels-as-Values.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Language-Independent-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Library-functions-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Link-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Local-Labels.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Local-Reg-Vars.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Locale_002dspecific-behavior-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Long-Long.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\M32C-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\M32C-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\M32R_002fD-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\M680x0-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\M68hc1x-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Machine-Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MCore-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MIPS-DSP-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MIPS-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MIPS-Paired_002dSingle-Support.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MIPS_002d3D-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Mixed-Declarations.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MMIX-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MN10300-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Modifiers.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\MT-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Multi_002dAlternative.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Name-lookup.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Namespace-Association.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Nested-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Non_002dbugs.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Object-Size-Checking.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Objective_002dC.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Offsetof.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Optimize-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Option-Index.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Option-Summary.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Other-Builtins.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Other-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Overall-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Paired_002dSingle-Arithmetic.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Paired_002dSingle-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\PDP_002d11-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Pointer-Arith.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\PowerPC-AltiVec-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\PowerPC-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\PowerPC-Type-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Precompiled-Headers.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Preprocessing-directives-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Preprocessor-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Protoize-Caveats.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Qualifiers-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Raw-read_002fwrite-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Restricted-Pointers.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Return-Address.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\RS_002f6000-and-PowerPC-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\RS_002f6000-and-PowerPC-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Running-Protoize.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Score-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Service.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\SH-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Simple-Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Solaris-Format-Checks.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Solaris-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\SPARC-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\SPARC-VIS-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Spec-Files.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\SPU-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\SPU-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\SPU-Type-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Standard-Libraries.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Standards.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Statement-Exprs.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Statements-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Static-Definitions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Structures-unions-enumerations-and-bit_002dfields-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Structure_002dPacking-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Submodel-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Subscripting.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Symbol_002dRenaming-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\System-V-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\S_002f390-and-zSeries-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Target-Builtins.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Target-Format-Checks.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Target-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Template-Instantiation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Temporaries.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Thread_002dLocal.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Translation-implementation.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Trouble.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Type-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Type-encoding.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Type-Traits.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Typeof.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Type_002dpunning.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Unnamed-Fields.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\V850-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Vague-Linkage.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Variable-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Variable-Length.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Variadic-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\VAX-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Vector-Extensions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Visibility-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Volatiles.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\VxWorks-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Warning-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Warnings-and-Errors.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Weak-Pragmas.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\What-you-can-and-what-you-cannot-do-in-_002bload.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Wtrigraphs.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\X86-Built_002din-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\x86_002d64-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Xstormy16-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Xtensa-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\Zero-Length.html +.\doc\gcc\HTML\gcc-4.3.2\gcc\zSeries-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\binaries.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\build.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\configure.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\download.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\finalinstall.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\gfdl.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\index.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\old.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\prerequisites.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\specific.html +.\doc\gcc\HTML\gcc-4.3.2\gccinstall\test.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Accessors.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Ada-Tests.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Adding-new-DECL-node-types.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Addressing-Modes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Aggregate-Return.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Alias-analysis.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Alignment-Output.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\All-Debuggers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Allocation-Order.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Anchored-Addresses.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Annotations.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Arithmetic.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Assembler-Format.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Assembler.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Attr-Example.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Back-End.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Basic-Blocks.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Bit_002dFields.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Blocks.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Build.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\C-Constraint-Interface.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\C-Tests.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Caller-Saves.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Calls.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Class-Preferences.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Classes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Cleanups.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Code-Iterators.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Collect2.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Comparisons.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\compat-Testing.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Compound-Expressions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Compound-Lvalues.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Concept-Index.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Condition-Code.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Conditional-Execution.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Conditional-Expressions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Config-Fragments.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Configuration-Files.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Configuration.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Configure-Terms.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Constant-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Constant-Definitions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Constants.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Containers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Contributing.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Contributors.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Control-Flow.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Conversions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Copying.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Costs.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Current-structure-hierarchy.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\C_002b_002b-ABI.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Data-Output.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\DBX-Hooks.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\DBX-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Debugging-Info.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Decimal-float-library-routines.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Declarations.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Deficiencies.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Define-Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\define_005fpeephole.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\define_005fpeephole2.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Defining-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Defining-Mode-Iterators.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Defining-Predicates.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Delay-Slots.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Dependency-analysis.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Dependent-Patterns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Dispatch-Tables.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Documentation.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Driver.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Edges.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Elimination.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Empty-Statements.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\epilogue-instruction-pattern.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Example.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Examples.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Exception-handling-routines.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Exception-Handling.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Exception-Region-Output.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Expander-Definitions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Expression-trees.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Expressions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\File-Framework.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\File-Names-and-DBX.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Files.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Filesystem.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Fixed_002dpoint-fractional-library-routines.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Flags.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Floating-Point.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Fragments.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Frame-Layout.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Frame-Registers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Front-End-Config.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Front-End-Directory.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Front-End.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Function-Basics.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Function-Bodies.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Function-Entry.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Funding.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\gcc-Directory.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\gcov-Testing.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GENERIC.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GGC-Roots.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GIMPLE-Example.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GIMPLE-Exception-Handling.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GIMPLE-Expressions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GIMPLE.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Gimplification-pass.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GNU-Free-Documentation-License.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GNU-Project.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\GTY-Options.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Header-Dirs.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Headers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Host-Common.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Host-Config.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Host-Fragment.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Host-Misc.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Identifiers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Incdec.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Including-Patterns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\index.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Initialization.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Insn-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Insn-Canonicalizations.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Insn-Lengths.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Insn-Splitting.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Insns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Instruction-Output.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Integer-library-routines.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Interface.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Interfaces.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Internal-structure.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Iterators.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Jump-Patterns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Jumps.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Label-Output.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Lambda.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Languages.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\LCSSA.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Leaf-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Libgcc.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\libgcj-Tests.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Library-Calls.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Library-Files.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Liveness-information.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Logical-Operators.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Loop-Analysis-and-Representation.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Loop-manipulation.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Loop-querying.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Loop-representation.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Looping-Patterns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Loops.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\loop_002div.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Machine-Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Machine-Desc.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Machine-Modes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Machine_002dIndependent-Predicates.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Macros-and-Functions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Macros-for-Initialization.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Maintaining-the-CFG.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Makefile.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Man-Page-Generation.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\MIPS-Coprocessors.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Misc.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Miscellaneous-Docs.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Miscellaneous-routines.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Mode-Iterators.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Mode-Switching.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Modifiers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Multi_002dAlternative.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Namespaces.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Number-of-iterations.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Old-Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Omega.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Option-file-format.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Option-Index.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Option-properties.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Options.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Output-Statement.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Output-Template.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Overview.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Parsing-pass.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Pass-manager.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Passes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Pattern-Ordering.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Patterns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\PCH-Target.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Peephole-Definitions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Per_002dFunction-Data.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\PIC.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Portability.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Predicates.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Processor-pipeline-description.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Profile-information.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Profiling.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\profopt-Testing.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\prologue-instruction-pattern.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Reading-RTL.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Register-Arguments.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Register-Basics.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Register-Classes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Registers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Regs-and-Memory.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Rough-GIMPLE-Grammar.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\RTL-Classes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\RTL-Declarations.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\RTL-Objects.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\RTL-passes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\RTL-Template.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\RTL.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Run_002dtime-Target.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Scalar-evolutions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Scalar-Return.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Scheduling.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Scopes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\SDB-and-DWARF.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Sections.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Selection-Statements.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Sharing.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\shift-patterns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Side-Effects.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Simple-Constraints.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Soft-float-library-routines.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Source-Tree.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Special-Accessors.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\SSA.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Stack-and-Calling.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Stack-Arguments.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Stack-Checking.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Stack-Registers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Stack-Smashing-Protection.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Standard-Names.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Statement-Operands.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Statement-Sequences.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Statements.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Storage-Layout.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Subdirectories.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Substitutions.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\System-Config.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Tagging-Insns.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Tail-Calls.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Target-Attributes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Target-Fragment.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Target-Macros.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Target-Structure.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Temporaries.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Test-Directives.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Test-Idioms.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Testsuites.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Texinfo-Manuals.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Top-Level.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Trampolines.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Tree-overview.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Tree-SSA.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Trees.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Tree_002dSSA-passes.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Type-Information.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Type-Layout.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Types.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Uninitialized-Data.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Values-in-Registers.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Varargs.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Vector-Operations.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\VMS-Debug.html +.\doc\gcc\HTML\gcc-4.3.2\gccint\Working-with-declarations.html +.\doc\gdb\gdb.pdf +.\doc\gdb\onlinedocs\gdb.html +.\doc\gdb\onlinedocs\gdb_1.html +.\doc\gdb\onlinedocs\gdb_10.html +.\doc\gdb\onlinedocs\gdb_11.html +.\doc\gdb\onlinedocs\gdb_12.html +.\doc\gdb\onlinedocs\gdb_13.html +.\doc\gdb\onlinedocs\gdb_14.html +.\doc\gdb\onlinedocs\gdb_15.html +.\doc\gdb\onlinedocs\gdb_16.html +.\doc\gdb\onlinedocs\gdb_17.html +.\doc\gdb\onlinedocs\gdb_18.html +.\doc\gdb\onlinedocs\gdb_19.html +.\doc\gdb\onlinedocs\gdb_2.html +.\doc\gdb\onlinedocs\gdb_20.html +.\doc\gdb\onlinedocs\gdb_21.html +.\doc\gdb\onlinedocs\gdb_22.html +.\doc\gdb\onlinedocs\gdb_23.html +.\doc\gdb\onlinedocs\gdb_24.html +.\doc\gdb\onlinedocs\gdb_25.html +.\doc\gdb\onlinedocs\gdb_26.html +.\doc\gdb\onlinedocs\gdb_27.html +.\doc\gdb\onlinedocs\gdb_28.html +.\doc\gdb\onlinedocs\gdb_29.html +.\doc\gdb\onlinedocs\gdb_3.html +.\doc\gdb\onlinedocs\gdb_30.html +.\doc\gdb\onlinedocs\gdb_31.html +.\doc\gdb\onlinedocs\gdb_32.html +.\doc\gdb\onlinedocs\gdb_33.html +.\doc\gdb\onlinedocs\gdb_34.html +.\doc\gdb\onlinedocs\gdb_35.html +.\doc\gdb\onlinedocs\gdb_36.html +.\doc\gdb\onlinedocs\gdb_37.html +.\doc\gdb\onlinedocs\gdb_38.html +.\doc\gdb\onlinedocs\gdb_39.html +.\doc\gdb\onlinedocs\gdb_4.html +.\doc\gdb\onlinedocs\gdb_40.html +.\doc\gdb\onlinedocs\gdb_41.html +.\doc\gdb\onlinedocs\gdb_42.html +.\doc\gdb\onlinedocs\gdb_43.html +.\doc\gdb\onlinedocs\gdb_44.html +.\doc\gdb\onlinedocs\gdb_45.html +.\doc\gdb\onlinedocs\gdb_46.html +.\doc\gdb\onlinedocs\gdb_47.html +.\doc\gdb\onlinedocs\gdb_48.html +.\doc\gdb\onlinedocs\gdb_49.html +.\doc\gdb\onlinedocs\gdb_5.html +.\doc\gdb\onlinedocs\gdb_50.html +.\doc\gdb\onlinedocs\gdb_6.html +.\doc\gdb\onlinedocs\gdb_7.html +.\doc\gdb\onlinedocs\gdb_8.html +.\doc\gdb\onlinedocs\gdb_9.html +.\doc\gdb\onlinedocs\gdb_abt.html +.\doc\gdb\onlinedocs\gdb_fot.html +.\doc\gdb\onlinedocs\gdb_ovr.html +.\doc\gdb\onlinedocs\gdb_toc.html +.\doc\GNU Manuals Online.url +.\doc\simulavr\AUTHORS +.\doc\simulavr\ChangeLog +.\doc\simulavr\ChangeLog-2001 +.\doc\simulavr\ChangeLog-2002 +.\doc\simulavr\ChangeLog-2003 +.\doc\simulavr\COPYING +.\doc\simulavr\html\index.html +.\doc\simulavr\html\simulavr.html +.\doc\simulavr\html\simulavr_1.html +.\doc\simulavr\html\simulavr_10.html +.\doc\simulavr\html\simulavr_11.html +.\doc\simulavr\html\simulavr_2.html +.\doc\simulavr\html\simulavr_3.html +.\doc\simulavr\html\simulavr_4.html +.\doc\simulavr\html\simulavr_5.html +.\doc\simulavr\html\simulavr_6.html +.\doc\simulavr\html\simulavr_7.html +.\doc\simulavr\html\simulavr_8.html +.\doc\simulavr\html\simulavr_9.html +.\doc\simulavr\html\simulavr_abt.html +.\doc\simulavr\html\simulavr_toc.html +.\doc\simulavr\INSTALL +.\doc\simulavr\internals_html\adc_8c-source.html +.\doc\simulavr\internals_html\adc_8c.html +.\doc\simulavr\internals_html\avrclass_8c-source.html +.\doc\simulavr\internals_html\avrclass_8c.html +.\doc\simulavr\internals_html\avrcore_8c-source.html +.\doc\simulavr\internals_html\avrcore_8c.html +.\doc\simulavr\internals_html\avrerror_8c-source.html +.\doc\simulavr\internals_html\avrerror_8c.html +.\doc\simulavr\internals_html\avrmalloc_8c-source.html +.\doc\simulavr\internals_html\avrmalloc_8c.html +.\doc\simulavr\internals_html\break_watch_pts.html +.\doc\simulavr\internals_html\callback_8c-source.html +.\doc\simulavr\internals_html\decoder_8c-source.html +.\doc\simulavr\internals_html\decoder_8c.html +.\doc\simulavr\internals_html\deprecated.html +.\doc\simulavr\internals_html\device_8c-source.html +.\doc\simulavr\internals_html\device_8c.html +.\doc\simulavr\internals_html\devsupp_8c-source.html +.\doc\simulavr\internals_html\devsupp_8c.html +.\doc\simulavr\internals_html\display_8c-source.html +.\doc\simulavr\internals_html\display_8c.html +.\doc\simulavr\internals_html\dox.css +.\doc\simulavr\internals_html\eeprom_8c-source.html +.\doc\simulavr\internals_html\ext_devs.html +.\doc\simulavr\internals_html\files.html +.\doc\simulavr\internals_html\flash_8c-source.html +.\doc\simulavr\internals_html\flash_8c.html +.\doc\simulavr\internals_html\gdbserver_8c-source.html +.\doc\simulavr\internals_html\gdbserver_8c.html +.\doc\simulavr\internals_html\globals.html +.\doc\simulavr\internals_html\globals_defs.html +.\doc\simulavr\internals_html\globals_enum.html +.\doc\simulavr\internals_html\globals_eval.html +.\doc\simulavr\internals_html\globals_func.html +.\doc\simulavr\internals_html\globals_vars.html +.\doc\simulavr\internals_html\index.html +.\doc\simulavr\internals_html\insn_decoder.html +.\doc\simulavr\internals_html\interrupts.html +.\doc\simulavr\internals_html\intvects_8c-source.html +.\doc\simulavr\internals_html\main.html +.\doc\simulavr\internals_html\main_8c-source.html +.\doc\simulavr\internals_html\memory_8c-source.html +.\doc\simulavr\internals_html\memory_8c.html +.\doc\simulavr\internals_html\memory_management.html +.\doc\simulavr\internals_html\object_system.html +.\doc\simulavr\internals_html\op__names_8c-source.html +.\doc\simulavr\internals_html\pages.html +.\doc\simulavr\internals_html\ports_8c-source.html +.\doc\simulavr\internals_html\ports_8c.html +.\doc\simulavr\internals_html\register_8c-source.html +.\doc\simulavr\internals_html\sig_8c-source.html +.\doc\simulavr\internals_html\sig_8c.html +.\doc\simulavr\internals_html\spi_8c-source.html +.\doc\simulavr\internals_html\spi_8c.html +.\doc\simulavr\internals_html\sram_8c-source.html +.\doc\simulavr\internals_html\stack_8c-source.html +.\doc\simulavr\internals_html\stack_8c.html +.\doc\simulavr\internals_html\storage_8c-source.html +.\doc\simulavr\internals_html\tabs.css +.\doc\simulavr\internals_html\timers_8c-source.html +.\doc\simulavr\internals_html\timers_8c.html +.\doc\simulavr\internals_html\todo.html +.\doc\simulavr\internals_html\tree.html +.\doc\simulavr\internals_html\uart_8c-source.html +.\doc\simulavr\internals_html\uart_8c.html +.\doc\simulavr\internals_html\usb_8c-source.html +.\doc\simulavr\internals_html\usb_8c.html +.\doc\simulavr\internals_html\utils_8c-source.html +.\doc\simulavr\internals_html\utils_8c.html +.\doc\simulavr\internals_html\virtual_devs.html +.\doc\simulavr\ProjSummary +.\doc\simulavr\README +.\doc\simulavr\README.gdb +.\doc\simulavr\README.opcodes +.\doc\simulavr\simulavr.pdf +.\doc\simulavr\TODO +.\doc\srecord\srecord-1.38.pdf +.\doc\WinAVR.url +.\lib\dde1.2\pkgIndex.tcl +.\lib\dde1.2\tcldde12.dll +.\lib\gcc\avr\4.3.2\avr25\libgcc.a +.\lib\gcc\avr\4.3.2\avr25\libgcov.a +.\lib\gcc\avr\4.3.2\avr3\libgcc.a +.\lib\gcc\avr\4.3.2\avr3\libgcov.a +.\lib\gcc\avr\4.3.2\avr31\libgcc.a +.\lib\gcc\avr\4.3.2\avr31\libgcov.a +.\lib\gcc\avr\4.3.2\avr35\libgcc.a +.\lib\gcc\avr\4.3.2\avr35\libgcov.a +.\lib\gcc\avr\4.3.2\avr4\libgcc.a +.\lib\gcc\avr\4.3.2\avr4\libgcov.a +.\lib\gcc\avr\4.3.2\avr5\libgcc.a +.\lib\gcc\avr\4.3.2\avr5\libgcov.a +.\lib\gcc\avr\4.3.2\avr51\libgcc.a +.\lib\gcc\avr\4.3.2\avr51\libgcov.a +.\lib\gcc\avr\4.3.2\avr6\libgcc.a +.\lib\gcc\avr\4.3.2\avr6\libgcov.a +.\lib\gcc\avr\4.3.2\avrxmega4\libgcc.a +.\lib\gcc\avr\4.3.2\avrxmega4\libgcov.a +.\lib\gcc\avr\4.3.2\avrxmega5\libgcc.a +.\lib\gcc\avr\4.3.2\avrxmega5\libgcov.a +.\lib\gcc\avr\4.3.2\avrxmega6\libgcc.a +.\lib\gcc\avr\4.3.2\avrxmega6\libgcov.a +.\lib\gcc\avr\4.3.2\avrxmega7\libgcc.a +.\lib\gcc\avr\4.3.2\avrxmega7\libgcov.a +.\lib\gcc\avr\4.3.2\include\float.h +.\lib\gcc\avr\4.3.2\include\iso646.h +.\lib\gcc\avr\4.3.2\include\objc\encoding.h +.\lib\gcc\avr\4.3.2\include\objc\hash.h +.\lib\gcc\avr\4.3.2\include\objc\NXConstStr.h +.\lib\gcc\avr\4.3.2\include\objc\objc-api.h +.\lib\gcc\avr\4.3.2\include\objc\objc-decls.h +.\lib\gcc\avr\4.3.2\include\objc\objc-list.h +.\lib\gcc\avr\4.3.2\include\objc\objc.h +.\lib\gcc\avr\4.3.2\include\objc\Object.h +.\lib\gcc\avr\4.3.2\include\objc\Protocol.h +.\lib\gcc\avr\4.3.2\include\objc\sarray.h +.\lib\gcc\avr\4.3.2\include\objc\thr.h +.\lib\gcc\avr\4.3.2\include\objc\typedstream.h +.\lib\gcc\avr\4.3.2\include\stdarg.h +.\lib\gcc\avr\4.3.2\include\stdbool.h +.\lib\gcc\avr\4.3.2\include\stddef.h +.\lib\gcc\avr\4.3.2\include\stdfix.h +.\lib\gcc\avr\4.3.2\include\tgmath.h +.\lib\gcc\avr\4.3.2\include\unwind.h +.\lib\gcc\avr\4.3.2\include\varargs.h +.\lib\gcc\avr\4.3.2\include-fixed\fixed +.\lib\gcc\avr\4.3.2\include-fixed\limits.h +.\lib\gcc\avr\4.3.2\include-fixed\README +.\lib\gcc\avr\4.3.2\include-fixed\syslimits.h +.\lib\gcc\avr\4.3.2\install-tools\fixinc_list +.\lib\gcc\avr\4.3.2\install-tools\gsyslimits.h +.\lib\gcc\avr\4.3.2\install-tools\include\limits.h +.\lib\gcc\avr\4.3.2\install-tools\include\README +.\lib\gcc\avr\4.3.2\install-tools\macro_list +.\lib\gcc\avr\4.3.2\install-tools\mkheaders.conf +.\lib\gcc\avr\4.3.2\libgcc.a +.\lib\gcc\avr\4.3.2\libgcov.a +.\lib\insight1.0\plugins.tcl +.\lib\itcl3.2\pkgIndex.tcl +.\lib\itk3.2\pkgIndex.tcl +.\lib\libiberty.a +.\lib\libitclstub32.a +.\lib\libitkstub32.a +.\lib\libtcl84.a +.\lib\libtclstub84.a +.\lib\libtk84.a +.\lib\libtkstub84.a +.\lib\reg1.1\pkgIndex.tcl +.\lib\reg1.1\tclreg11.dll +.\lib\tclConfig.sh +.\lib\tk8.4\pkgIndex.tcl +.\lib\tkConfig.sh +.\libexec\gcc\avr\4.3.2\cc1.exe +.\libexec\gcc\avr\4.3.2\cc1obj.exe +.\libexec\gcc\avr\4.3.2\cc1plus.exe +.\libexec\gcc\avr\4.3.2\collect2.exe +.\libexec\gcc\avr\4.3.2\install-tools\fix-header.exe +.\libexec\gcc\avr\4.3.2\install-tools\fixinc.sh +.\libexec\gcc\avr\4.3.2\install-tools\fixincl.exe +.\libexec\gcc\avr\4.3.2\install-tools\fixproto +.\libexec\gcc\avr\4.3.2\install-tools\mkheaders +.\libexec\gcc\avr\4.3.2\install-tools\mkinstalldirs +.\mfile\help.html +.\mfile\htmlview.tcl +.\mfile\htmlview.xbm +.\mfile\makefile_template +.\mfile\mfile.tcl +.\mfile\mfile.xbm +.\mfile\README +.\pn\clips\ascii.clips +.\pn\clips\aspnet.clips +.\pn\clips\csharpscheme.clips +.\pn\clips\cstandard.clips +.\pn\clips\docbook.clips +.\pn\clips\htmlchars.clips +.\pn\clips\java.clips +.\pn\clips\nant.clips +.\pn\clips\pascal.clips +.\pn\clips\phpcontrol.clips +.\pn\clips\pl.clips +.\pn\clips\pythonscheme.clips +.\pn\clips\vb.clips +.\pn\clips\winavr.clips +.\pn\clips\xhtml.clips +.\pn\clips\xmlscheme.clips +.\pn\config.xml +.\pn\credits.txt +.\pn\ctags.exe +.\pn\ctags_COPYING +.\pn\ctags_README +.\pn\dbghelp.dll +.\pn\help\pn2.chm +.\pn\history.txt +.\pn\libexpat.dll +.\pn\license.html +.\pn\license.txt +.\pn\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest +.\pn\Microsoft.VC80.CRT\msvcm80.dll +.\pn\Microsoft.VC80.CRT\msvcp80.dll +.\pn\Microsoft.VC80.CRT\msvcr80.dll +.\pn\pcre-license.txt +.\pn\pn.exe +.\pn\pnse.dll +.\pn\presets\Dark.xml +.\pn\presets\Default.xml +.\pn\schemes\ada.scheme +.\pn\schemes\asm.scheme +.\pn\schemes\avrasm.scheme +.\pn\schemes\bash.scheme +.\pn\schemes\cpp.scheme +.\pn\schemes\customscheme.lexer +.\pn\schemes\d.scheme +.\pn\schemes\docbook.scheme +.\pn\schemes\extmap.dat +.\pn\schemes\fortran.scheme +.\pn\schemes\latex.scheme +.\pn\schemes\lua.scheme +.\pn\schemes\master.scheme +.\pn\schemes\matlab.scheme +.\pn\schemes\misc.scheme +.\pn\schemes\modula2.scheme +.\pn\schemes\nsis2.scheme +.\pn\schemes\pascal.scheme +.\pn\schemes\perl.scheme +.\pn\schemes\phpscript.scheme +.\pn\schemes\python.scheme +.\pn\schemes\ruby.scheme +.\pn\schemes\specman.scheme +.\pn\schemes\sql.scheme +.\pn\schemes\tcl.scheme +.\pn\schemes\vb.scheme +.\pn\schemes\verilog.scheme +.\pn\schemes\vhdl.scheme +.\pn\schemes\WebFiles.scheme +.\pn\schemes\xml.scheme +.\pn\SciLexer.dll +.\pn\taggers\ctags\additionalLanguages.conf +.\pn\taggers\ctags\additionalSupportedSchemes.ini +.\pn\taggers\ctagsnavigator.dll +.\pn\tools\WinAVR.xml +.\sample\gcc.bat +.\sample\gcc2.bat +.\sample\Makefile +.\sample\Makefile.lib +.\sample\Makefile.wpo +.\share\insight1.0\about.tcl +.\share\insight1.0\actiondlg.tcl +.\share\insight1.0\attachdlg.itb +.\share\insight1.0\attachdlg.ith +.\share\insight1.0\blockframe.itb +.\share\insight1.0\blockframe.ith +.\share\insight1.0\bpwin.itb +.\share\insight1.0\bpwin.ith +.\share\insight1.0\browserwin.itb +.\share\insight1.0\browserwin.ith +.\share\insight1.0\console.itb +.\share\insight1.0\console.ith +.\share\insight1.0\cspref.itb +.\share\insight1.0\cspref.ith +.\share\insight1.0\debugwin.itb +.\share\insight1.0\debugwin.ith +.\share\insight1.0\download.itb +.\share\insight1.0\download.ith +.\share\insight1.0\editor.tcl +.\share\insight1.0\ehandler.itb +.\share\insight1.0\ehandler.ith +.\share\insight1.0\embeddedwin.ith +.\share\insight1.0\gdbevent.itb +.\share\insight1.0\gdbevent.ith +.\share\insight1.0\gdbmenubar.itcl +.\share\insight1.0\gdbtoolbar.itcl +.\share\insight1.0\gdbwin.ith +.\share\insight1.0\globalpref.itb +.\share\insight1.0\globalpref.ith +.\share\insight1.0\help\breakpoint.html +.\share\insight1.0\help\browser.html +.\share\insight1.0\help\console.html +.\share\insight1.0\help\debug.html +.\share\insight1.0\help\gbl_pref.html +.\share\insight1.0\help\help.html +.\share\insight1.0\help\images\browser1.png +.\share\insight1.0\help\images\browser2.png +.\share\insight1.0\help\images\frame_info.gif +.\share\insight1.0\help\images\insightbwr.png +.\share\insight1.0\help\images\mem_menu.gif +.\share\insight1.0\help\images\mem_popup.gif +.\share\insight1.0\help\images\mem_pref.gif +.\share\insight1.0\help\images\reg.png +.\share\insight1.0\help\images\reg_menu.png +.\share\insight1.0\help\images\src_bal.gif +.\share\insight1.0\help\images\src_bpop.gif +.\share\insight1.0\help\images\src_bp_bal.gif +.\share\insight1.0\help\images\src_menu.gif +.\share\insight1.0\help\images\src_pop.gif +.\share\insight1.0\help\images\src_stat.gif +.\share\insight1.0\help\images\src_thread.gif +.\share\insight1.0\help\images\src_toolbar.gif +.\share\insight1.0\help\images\watch.png +.\share\insight1.0\help\index.html +.\share\insight1.0\help\license.html +.\share\insight1.0\help\locals.html +.\share\insight1.0\help\memory.html +.\share\insight1.0\help\register.html +.\share\insight1.0\help\session.html +.\share\insight1.0\help\source.html +.\share\insight1.0\help\src_pref.html +.\share\insight1.0\help\stack.html +.\share\insight1.0\help\target.html +.\share\insight1.0\help\thread.html +.\share\insight1.0\help\trace\console.html +.\share\insight1.0\help\trace\gbl_pref.html +.\share\insight1.0\help\trace\help.html +.\share\insight1.0\help\trace\index.toc +.\share\insight1.0\help\trace\license.html +.\share\insight1.0\help\trace\locals.html +.\share\insight1.0\help\trace\memory.html +.\share\insight1.0\help\trace\register.html +.\share\insight1.0\help\trace\reg_pref.html +.\share\insight1.0\help\trace\source.html +.\share\insight1.0\help\trace\src_pref.html +.\share\insight1.0\help\trace\stack.html +.\share\insight1.0\help\trace\target.html +.\share\insight1.0\help\trace\tdump.html +.\share\insight1.0\help\trace\tp.html +.\share\insight1.0\help\trace\tracedlg.html +.\share\insight1.0\help\trace\watch.html +.\share\insight1.0\help\watch.html +.\share\insight1.0\helpviewer.tcl +.\share\insight1.0\images\bottom.gif +.\share\insight1.0\images\bp.gif +.\share\insight1.0\images\check.gif +.\share\insight1.0\images\console.gif +.\share\insight1.0\images\continue.gif +.\share\insight1.0\images\down.gif +.\share\insight1.0\images\edit.gif +.\share\insight1.0\images\finish.gif +.\share\insight1.0\images\gdbtk_icon.gif +.\share\insight1.0\images\help.gif +.\share\insight1.0\images\home.gif +.\share\insight1.0\images\icons.txt +.\share\insight1.0\images\insight.gif +.\share\insight1.0\images\less.gif +.\share\insight1.0\images\memory.gif +.\share\insight1.0\images\more.gif +.\share\insight1.0\images\Movie_off.gif +.\share\insight1.0\images\Movie_on.gif +.\share\insight1.0\images\next.gif +.\share\insight1.0\images\nexti.gif +.\share\insight1.0\images\next_check.gif +.\share\insight1.0\images\next_frame.gif +.\share\insight1.0\images\next_hit.gif +.\share\insight1.0\images\next_line.gif +.\share\insight1.0\images\open.gif +.\share\insight1.0\images\prev_hit.gif +.\share\insight1.0\images\reg.gif +.\share\insight1.0\images\rewind.gif +.\share\insight1.0\images\run.gif +.\share\insight1.0\images\run_expt.gif +.\share\insight1.0\images\src.gif +.\share\insight1.0\images\stack.gif +.\share\insight1.0\images\step.gif +.\share\insight1.0\images\stepi.gif +.\share\insight1.0\images\stop.gif +.\share\insight1.0\images\tdump.gif +.\share\insight1.0\images\tp.gif +.\share\insight1.0\images\up.gif +.\share\insight1.0\images\vars.gif +.\share\insight1.0\images\watch.gif +.\share\insight1.0\images\watch_movie.gif +.\share\insight1.0\images2\bottom.gif +.\share\insight1.0\images2\bp.gif +.\share\insight1.0\images2\check.gif +.\share\insight1.0\images2\console.gif +.\share\insight1.0\images2\continue.gif +.\share\insight1.0\images2\down.gif +.\share\insight1.0\images2\edit.gif +.\share\insight1.0\images2\finish.gif +.\share\insight1.0\images2\function.gif +.\share\insight1.0\images2\gdbtk_icon.gif +.\share\insight1.0\images2\help.gif +.\share\insight1.0\images2\home.gif +.\share\insight1.0\images2\icons.txt +.\share\insight1.0\images2\insight.gif +.\share\insight1.0\images2\less.gif +.\share\insight1.0\images2\memory.gif +.\share\insight1.0\images2\more.gif +.\share\insight1.0\images2\Movie_off.gif +.\share\insight1.0\images2\Movie_on.gif +.\share\insight1.0\images2\next.gif +.\share\insight1.0\images2\nexti.gif +.\share\insight1.0\images2\next_check.gif +.\share\insight1.0\images2\next_frame.gif +.\share\insight1.0\images2\next_hit.gif +.\share\insight1.0\images2\next_line.gif +.\share\insight1.0\images2\open.gif +.\share\insight1.0\images2\prev_hit.gif +.\share\insight1.0\images2\reg.gif +.\share\insight1.0\images2\rewind.gif +.\share\insight1.0\images2\run.gif +.\share\insight1.0\images2\run_expt.gif +.\share\insight1.0\images2\src.gif +.\share\insight1.0\images2\stack.gif +.\share\insight1.0\images2\step.gif +.\share\insight1.0\images2\stepi.gif +.\share\insight1.0\images2\stop.gif +.\share\insight1.0\images2\target.gif +.\share\insight1.0\images2\tdump.gif +.\share\insight1.0\images2\tp.gif +.\share\insight1.0\images2\up.gif +.\share\insight1.0\images2\vars.gif +.\share\insight1.0\images2\watch.gif +.\share\insight1.0\images2\watch_movie.gif +.\share\insight1.0\interface.tcl +.\share\insight1.0\ipc.tcl +.\share\insight1.0\ipcpref.itb +.\share\insight1.0\ipcpref.ith +.\share\insight1.0\kod.itb +.\share\insight1.0\kod.ith +.\share\insight1.0\locals.tcl +.\share\insight1.0\main.tcl +.\share\insight1.0\managedwin.itb +.\share\insight1.0\managedwin.ith +.\share\insight1.0\mempref.itb +.\share\insight1.0\mempref.ith +.\share\insight1.0\memwin.itb +.\share\insight1.0\memwin.ith +.\share\insight1.0\modal.tcl +.\share\insight1.0\pluginwin.itcl +.\share\insight1.0\prefs.tcl +.\share\insight1.0\process.itb +.\share\insight1.0\process.ith +.\share\insight1.0\regwin.itb +.\share\insight1.0\regwin.ith +.\share\insight1.0\session.tcl +.\share\insight1.0\srcbar.itcl +.\share\insight1.0\srcpref.itb +.\share\insight1.0\srcpref.ith +.\share\insight1.0\srctextwin.itb +.\share\insight1.0\srctextwin.ith +.\share\insight1.0\srcwin.itb +.\share\insight1.0\srcwin.ith +.\share\insight1.0\stackwin.itb +.\share\insight1.0\stackwin.ith +.\share\insight1.0\targetselection.itb +.\share\insight1.0\targetselection.ith +.\share\insight1.0\tclIndex +.\share\insight1.0\tdump.tcl +.\share\insight1.0\tfind_args.tcl +.\share\insight1.0\toplevelwin.ith +.\share\insight1.0\tracedlg.tcl +.\share\insight1.0\tty.tcl +.\share\insight1.0\util.tcl +.\share\insight1.0\vartree.itb +.\share\insight1.0\vartree.ith +.\share\insight1.0\warning.tcl +.\share\insight1.0\watch.tcl +.\share\itcl3.2\itcl.tcl +.\share\itk3.2\Archetype.itk +.\share\itk3.2\itk.tcl +.\share\itk3.2\tclIndex +.\share\itk3.2\Toplevel.itk +.\share\itk3.2\Widget.itk +.\share\iwidgets4.0.1\demos\buttonbox +.\share\iwidgets4.0.1\demos\calendar +.\share\iwidgets4.0.1\demos\canvasprintbox +.\share\iwidgets4.0.1\demos\canvasprintdialog +.\share\iwidgets4.0.1\demos\catalog +.\share\iwidgets4.0.1\demos\checkbox +.\share\iwidgets4.0.1\demos\combobox +.\share\iwidgets4.0.1\demos\dateentry +.\share\iwidgets4.0.1\demos\datefield +.\share\iwidgets4.0.1\demos\demo.html +.\share\iwidgets4.0.1\demos\dialog +.\share\iwidgets4.0.1\demos\dialogshell +.\share\iwidgets4.0.1\demos\disjointlistbox +.\share\iwidgets4.0.1\demos\entryfield +.\share\iwidgets4.0.1\demos\extbutton +.\share\iwidgets4.0.1\demos\extfileselectionbox +.\share\iwidgets4.0.1\demos\extfileselectiondialog +.\share\iwidgets4.0.1\demos\feedback +.\share\iwidgets4.0.1\demos\fileselectionbox +.\share\iwidgets4.0.1\demos\fileselectiondialog +.\share\iwidgets4.0.1\demos\finddialog +.\share\iwidgets4.0.1\demos\hierarchy +.\share\iwidgets4.0.1\demos\html\buttonbox.n.html +.\share\iwidgets4.0.1\demos\html\calendar.n.html +.\share\iwidgets4.0.1\demos\html\canvasprintbox.n.html +.\share\iwidgets4.0.1\demos\html\canvasprintdialog.n.html +.\share\iwidgets4.0.1\demos\html\checkbox.n.html +.\share\iwidgets4.0.1\demos\html\combobox.n.html +.\share\iwidgets4.0.1\demos\html\dateentry.n.html +.\share\iwidgets4.0.1\demos\html\datefield.n.html +.\share\iwidgets4.0.1\demos\html\dialog.n.html +.\share\iwidgets4.0.1\demos\html\dialogshell.n.html +.\share\iwidgets4.0.1\demos\html\disjointlistbox.n.html +.\share\iwidgets4.0.1\demos\html\entryfield.n.html +.\share\iwidgets4.0.1\demos\html\extbutton.n.html +.\share\iwidgets4.0.1\demos\html\extfileselectionbox.n.html +.\share\iwidgets4.0.1\demos\html\extfileselectiondialog.n.html +.\share\iwidgets4.0.1\demos\html\feedback.n.html +.\share\iwidgets4.0.1\demos\html\fileselectionbox.n.html +.\share\iwidgets4.0.1\demos\html\fileselectiondialog.n.html +.\share\iwidgets4.0.1\demos\html\finddialog.n.html +.\share\iwidgets4.0.1\demos\html\hierarchy.n.html +.\share\iwidgets4.0.1\demos\html\hyperhelp.n.html +.\share\iwidgets4.0.1\demos\html\iwidgets4.0.0UserCmds.html +.\share\iwidgets4.0.1\demos\html\labeledframe.n.html +.\share\iwidgets4.0.1\demos\html\labeledwidget.n.html +.\share\iwidgets4.0.1\demos\html\mainwindow.n.html +.\share\iwidgets4.0.1\demos\html\menubar.n.html +.\share\iwidgets4.0.1\demos\html\messagebox.n.html +.\share\iwidgets4.0.1\demos\html\messagedialog.n.html +.\share\iwidgets4.0.1\demos\html\notebook.n.html +.\share\iwidgets4.0.1\demos\html\optionmenu.n.html +.\share\iwidgets4.0.1\demos\html\panedwindow.n.html +.\share\iwidgets4.0.1\demos\html\promptdialog.n.html +.\share\iwidgets4.0.1\demos\html\pushbutton.n.html +.\share\iwidgets4.0.1\demos\html\radiobox.n.html +.\share\iwidgets4.0.1\demos\html\scopedobject.n.html +.\share\iwidgets4.0.1\demos\html\scrolledcanvas.n.html +.\share\iwidgets4.0.1\demos\html\scrolledframe.n.html +.\share\iwidgets4.0.1\demos\html\scrolledhtml.n.html +.\share\iwidgets4.0.1\demos\html\scrolledlistbox.n.html +.\share\iwidgets4.0.1\demos\html\scrolledtext.n.html +.\share\iwidgets4.0.1\demos\html\selectionbox.n.html +.\share\iwidgets4.0.1\demos\html\selectiondialog.n.html +.\share\iwidgets4.0.1\demos\html\shell.n.html +.\share\iwidgets4.0.1\demos\html\spindate.n.html +.\share\iwidgets4.0.1\demos\html\spinint.n.html +.\share\iwidgets4.0.1\demos\html\spinner.n.html +.\share\iwidgets4.0.1\demos\html\spintime.n.html +.\share\iwidgets4.0.1\demos\html\tabnotebook.n.html +.\share\iwidgets4.0.1\demos\html\tabset.n.html +.\share\iwidgets4.0.1\demos\html\timeentry.n.html +.\share\iwidgets4.0.1\demos\html\timefield.n.html +.\share\iwidgets4.0.1\demos\html\toolbar.n.html +.\share\iwidgets4.0.1\demos\html\watch.n.html +.\share\iwidgets4.0.1\demos\hyperhelp +.\share\iwidgets4.0.1\demos\images\box.xbm +.\share\iwidgets4.0.1\demos\images\clear.gif +.\share\iwidgets4.0.1\demos\images\close.gif +.\share\iwidgets4.0.1\demos\images\copy.gif +.\share\iwidgets4.0.1\demos\images\cut.gif +.\share\iwidgets4.0.1\demos\images\exit.gif +.\share\iwidgets4.0.1\demos\images\find.gif +.\share\iwidgets4.0.1\demos\images\help.gif +.\share\iwidgets4.0.1\demos\images\line.xbm +.\share\iwidgets4.0.1\demos\images\mag.gif +.\share\iwidgets4.0.1\demos\images\new.gif +.\share\iwidgets4.0.1\demos\images\open.gif +.\share\iwidgets4.0.1\demos\images\oval.xbm +.\share\iwidgets4.0.1\demos\images\paste.gif +.\share\iwidgets4.0.1\demos\images\points.xbm +.\share\iwidgets4.0.1\demos\images\poly.gif +.\share\iwidgets4.0.1\demos\images\print.gif +.\share\iwidgets4.0.1\demos\images\ruler.gif +.\share\iwidgets4.0.1\demos\images\save.gif +.\share\iwidgets4.0.1\demos\images\select.gif +.\share\iwidgets4.0.1\demos\images\text.xbm +.\share\iwidgets4.0.1\demos\iwidgets.gif +.\share\iwidgets4.0.1\demos\labeledframe +.\share\iwidgets4.0.1\demos\labeledwidget +.\share\iwidgets4.0.1\demos\mainwindow +.\share\iwidgets4.0.1\demos\menubar +.\share\iwidgets4.0.1\demos\messagebox +.\share\iwidgets4.0.1\demos\messagedialog +.\share\iwidgets4.0.1\demos\notebook +.\share\iwidgets4.0.1\demos\optionmenu +.\share\iwidgets4.0.1\demos\panedwindow +.\share\iwidgets4.0.1\demos\promptdialog +.\share\iwidgets4.0.1\demos\pushbutton +.\share\iwidgets4.0.1\demos\radiobox +.\share\iwidgets4.0.1\demos\scopedobject +.\share\iwidgets4.0.1\demos\scrolledcanvas +.\share\iwidgets4.0.1\demos\scrolledframe +.\share\iwidgets4.0.1\demos\scrolledhtml +.\share\iwidgets4.0.1\demos\scrolledlistbox +.\share\iwidgets4.0.1\demos\scrolledtext +.\share\iwidgets4.0.1\demos\selectionbox +.\share\iwidgets4.0.1\demos\selectiondialog +.\share\iwidgets4.0.1\demos\shell +.\share\iwidgets4.0.1\demos\spindate +.\share\iwidgets4.0.1\demos\spinint +.\share\iwidgets4.0.1\demos\spinner +.\share\iwidgets4.0.1\demos\spintime +.\share\iwidgets4.0.1\demos\tabnotebook +.\share\iwidgets4.0.1\demos\tabset +.\share\iwidgets4.0.1\demos\timeentry +.\share\iwidgets4.0.1\demos\timefield +.\share\iwidgets4.0.1\demos\toolbar +.\share\iwidgets4.0.1\demos\watch +.\share\iwidgets4.0.1\iwidgets.tcl +.\share\iwidgets4.0.1\license.terms +.\share\iwidgets4.0.1\pkgIndex.tcl +.\share\iwidgets4.0.1\scripts\buttonbox.itk +.\share\iwidgets4.0.1\scripts\calendar.itk +.\share\iwidgets4.0.1\scripts\canvasprintbox.itk +.\share\iwidgets4.0.1\scripts\canvasprintdialog.itk +.\share\iwidgets4.0.1\scripts\checkbox.itk +.\share\iwidgets4.0.1\scripts\colors.itcl +.\share\iwidgets4.0.1\scripts\combobox.itk +.\share\iwidgets4.0.1\scripts\dateentry.itk +.\share\iwidgets4.0.1\scripts\datefield.itk +.\share\iwidgets4.0.1\scripts\dialog.itk +.\share\iwidgets4.0.1\scripts\dialogshell.itk +.\share\iwidgets4.0.1\scripts\disjointlistbox.itk +.\share\iwidgets4.0.1\scripts\entryfield.itk +.\share\iwidgets4.0.1\scripts\extbutton.itk +.\share\iwidgets4.0.1\scripts\extfileselectionbox.itk +.\share\iwidgets4.0.1\scripts\extfileselectiondialog.itk +.\share\iwidgets4.0.1\scripts\feedback.itk +.\share\iwidgets4.0.1\scripts\fileselectionbox.itk +.\share\iwidgets4.0.1\scripts\fileselectiondialog.itk +.\share\iwidgets4.0.1\scripts\finddialog.itk +.\share\iwidgets4.0.1\scripts\hierarchy.itk +.\share\iwidgets4.0.1\scripts\hyperhelp.itk +.\share\iwidgets4.0.1\scripts\labeledframe.itk +.\share\iwidgets4.0.1\scripts\labeledwidget.itk +.\share\iwidgets4.0.1\scripts\mainwindow.itk +.\share\iwidgets4.0.1\scripts\menubar.itk +.\share\iwidgets4.0.1\scripts\messagebox.itk +.\share\iwidgets4.0.1\scripts\messagedialog.itk +.\share\iwidgets4.0.1\scripts\notebook.itk +.\share\iwidgets4.0.1\scripts\optionmenu.itk +.\share\iwidgets4.0.1\scripts\pane.itk +.\share\iwidgets4.0.1\scripts\panedwindow.itk +.\share\iwidgets4.0.1\scripts\promptdialog.itk +.\share\iwidgets4.0.1\scripts\pushbutton.itk +.\share\iwidgets4.0.1\scripts\radiobox.itk +.\share\iwidgets4.0.1\scripts\regexpfield.itk +.\share\iwidgets4.0.1\scripts\roman.itcl +.\share\iwidgets4.0.1\scripts\scopedobject.itcl +.\share\iwidgets4.0.1\scripts\scrolledcanvas.itk +.\share\iwidgets4.0.1\scripts\scrolledframe.itk +.\share\iwidgets4.0.1\scripts\scrolledhtml.itk +.\share\iwidgets4.0.1\scripts\scrolledlistbox.itk +.\share\iwidgets4.0.1\scripts\scrolledtext.itk +.\share\iwidgets4.0.1\scripts\scrolledwidget.itk +.\share\iwidgets4.0.1\scripts\selectionbox.itk +.\share\iwidgets4.0.1\scripts\selectiondialog.itk +.\share\iwidgets4.0.1\scripts\shell.itk +.\share\iwidgets4.0.1\scripts\spindate.itk +.\share\iwidgets4.0.1\scripts\spinint.itk +.\share\iwidgets4.0.1\scripts\spinner.itk +.\share\iwidgets4.0.1\scripts\spintime.itk +.\share\iwidgets4.0.1\scripts\tabnotebook.itk +.\share\iwidgets4.0.1\scripts\tabset.itk +.\share\iwidgets4.0.1\scripts\tclIndex +.\share\iwidgets4.0.1\scripts\timeentry.itk +.\share\iwidgets4.0.1\scripts\timefield.itk +.\share\iwidgets4.0.1\scripts\toolbar.itk +.\share\iwidgets4.0.1\scripts\unknownimage.gif +.\share\iwidgets4.0.1\scripts\watch.itk +.\share\locale\da\LC_MESSAGES\bfd.mo +.\share\locale\da\LC_MESSAGES\opcodes.mo +.\share\locale\de\LC_MESSAGES\opcodes.mo +.\share\locale\es\LC_MESSAGES\bfd.mo +.\share\locale\es\LC_MESSAGES\opcodes.mo +.\share\locale\fi\LC_MESSAGES\bfd.mo +.\share\locale\fi\LC_MESSAGES\opcodes.mo +.\share\locale\fr\LC_MESSAGES\bfd.mo +.\share\locale\fr\LC_MESSAGES\opcodes.mo +.\share\locale\ga\LC_MESSAGES\opcodes.mo +.\share\locale\id\LC_MESSAGES\opcodes.mo +.\share\locale\ja\LC_MESSAGES\bfd.mo +.\share\locale\nl\LC_MESSAGES\opcodes.mo +.\share\locale\pt_BR\LC_MESSAGES\opcodes.mo +.\share\locale\ro\LC_MESSAGES\bfd.mo +.\share\locale\ro\LC_MESSAGES\opcodes.mo +.\share\locale\rw\LC_MESSAGES\bfd.mo +.\share\locale\sv\LC_MESSAGES\bfd.mo +.\share\locale\sv\LC_MESSAGES\opcodes.mo +.\share\locale\tr\LC_MESSAGES\bfd.mo +.\share\locale\tr\LC_MESSAGES\opcodes.mo +.\share\locale\vi\LC_MESSAGES\bfd.mo +.\share\locale\vi\LC_MESSAGES\opcodes.mo +.\share\locale\zh_CN\LC_MESSAGES\bfd.mo +.\share\locale\zh_CN\LC_MESSAGES\opcodes.mo +.\share\redhat\gui\advice.tcl +.\share\redhat\gui\balloon.tcl +.\share\redhat\gui\bbox.tcl +.\share\redhat\gui\bgerror.tcl +.\share\redhat\gui\bindings.tcl +.\share\redhat\gui\canvas.tcl +.\share\redhat\gui\center.tcl +.\share\redhat\gui\cframe.tcl +.\share\redhat\gui\combobox.tcl +.\share\redhat\gui\debug.tcl +.\share\redhat\gui\def.tcl +.\share\redhat\gui\font.tcl +.\share\redhat\gui\gensym.tcl +.\share\redhat\gui\gettext.tcl +.\share\redhat\gui\hooks.tcl +.\share\redhat\gui\internet.tcl +.\share\redhat\gui\lframe.tcl +.\share\redhat\gui\list.tcl +.\share\redhat\gui\looknfeel.tcl +.\share\redhat\gui\menu.tcl +.\share\redhat\gui\mono.tcl +.\share\redhat\gui\multibox.tcl +.\share\redhat\gui\pane.tcl +.\share\redhat\gui\panedwindow.tcl +.\share\redhat\gui\parse_args.tcl +.\share\redhat\gui\path.tcl +.\share\redhat\gui\pkgIndex.tcl +.\share\redhat\gui\postghost.tcl +.\share\redhat\gui\prefs.tcl +.\share\redhat\gui\print.tcl +.\share\redhat\gui\sendpr.tcl +.\share\redhat\gui\tclIndex +.\share\redhat\gui\toolbar.tcl +.\share\redhat\gui\topbind.tcl +.\share\redhat\gui\ulset.tcl +.\share\redhat\gui\ventry.tcl +.\share\redhat\gui\wframe.tcl +.\share\redhat\gui\wingrab.tcl +.\share\tcl8.4\auto.tcl +.\share\tcl8.4\encoding\ascii.enc +.\share\tcl8.4\encoding\big5.enc +.\share\tcl8.4\encoding\cp1250.enc +.\share\tcl8.4\encoding\cp1251.enc +.\share\tcl8.4\encoding\cp1252.enc +.\share\tcl8.4\encoding\cp1253.enc +.\share\tcl8.4\encoding\cp1254.enc +.\share\tcl8.4\encoding\cp1255.enc +.\share\tcl8.4\encoding\cp1256.enc +.\share\tcl8.4\encoding\cp1257.enc +.\share\tcl8.4\encoding\cp1258.enc +.\share\tcl8.4\encoding\cp437.enc +.\share\tcl8.4\encoding\cp737.enc +.\share\tcl8.4\encoding\cp775.enc +.\share\tcl8.4\encoding\cp850.enc +.\share\tcl8.4\encoding\cp852.enc +.\share\tcl8.4\encoding\cp855.enc +.\share\tcl8.4\encoding\cp857.enc +.\share\tcl8.4\encoding\cp860.enc +.\share\tcl8.4\encoding\cp861.enc +.\share\tcl8.4\encoding\cp862.enc +.\share\tcl8.4\encoding\cp863.enc +.\share\tcl8.4\encoding\cp864.enc +.\share\tcl8.4\encoding\cp865.enc +.\share\tcl8.4\encoding\cp866.enc +.\share\tcl8.4\encoding\cp869.enc +.\share\tcl8.4\encoding\cp874.enc +.\share\tcl8.4\encoding\cp932.enc +.\share\tcl8.4\encoding\cp936.enc +.\share\tcl8.4\encoding\cp949.enc +.\share\tcl8.4\encoding\cp950.enc +.\share\tcl8.4\encoding\dingbats.enc +.\share\tcl8.4\encoding\ebcdic.enc +.\share\tcl8.4\encoding\euc-cn.enc +.\share\tcl8.4\encoding\euc-jp.enc +.\share\tcl8.4\encoding\euc-kr.enc +.\share\tcl8.4\encoding\gb12345.enc +.\share\tcl8.4\encoding\gb1988.enc +.\share\tcl8.4\encoding\gb2312.enc +.\share\tcl8.4\encoding\iso2022-jp.enc +.\share\tcl8.4\encoding\iso2022-kr.enc +.\share\tcl8.4\encoding\iso2022.enc +.\share\tcl8.4\encoding\iso8859-1.enc +.\share\tcl8.4\encoding\iso8859-10.enc +.\share\tcl8.4\encoding\iso8859-13.enc +.\share\tcl8.4\encoding\iso8859-14.enc +.\share\tcl8.4\encoding\iso8859-15.enc +.\share\tcl8.4\encoding\iso8859-16.enc +.\share\tcl8.4\encoding\iso8859-2.enc +.\share\tcl8.4\encoding\iso8859-3.enc +.\share\tcl8.4\encoding\iso8859-4.enc +.\share\tcl8.4\encoding\iso8859-5.enc +.\share\tcl8.4\encoding\iso8859-6.enc +.\share\tcl8.4\encoding\iso8859-7.enc +.\share\tcl8.4\encoding\iso8859-8.enc +.\share\tcl8.4\encoding\iso8859-9.enc +.\share\tcl8.4\encoding\jis0201.enc +.\share\tcl8.4\encoding\jis0208.enc +.\share\tcl8.4\encoding\jis0212.enc +.\share\tcl8.4\encoding\koi8-r.enc +.\share\tcl8.4\encoding\koi8-u.enc +.\share\tcl8.4\encoding\ksc5601.enc +.\share\tcl8.4\encoding\macCentEuro.enc +.\share\tcl8.4\encoding\macCroatian.enc +.\share\tcl8.4\encoding\macCyrillic.enc +.\share\tcl8.4\encoding\macDingbats.enc +.\share\tcl8.4\encoding\macGreek.enc +.\share\tcl8.4\encoding\macIceland.enc +.\share\tcl8.4\encoding\macJapan.enc +.\share\tcl8.4\encoding\macRoman.enc +.\share\tcl8.4\encoding\macRomania.enc +.\share\tcl8.4\encoding\macThai.enc +.\share\tcl8.4\encoding\macTurkish.enc +.\share\tcl8.4\encoding\macUkraine.enc +.\share\tcl8.4\encoding\shiftjis.enc +.\share\tcl8.4\encoding\symbol.enc +.\share\tcl8.4\encoding\tis-620.enc +.\share\tcl8.4\history.tcl +.\share\tcl8.4\http1.0\http.tcl +.\share\tcl8.4\http1.0\pkgIndex.tcl +.\share\tcl8.4\http2.4\http.tcl +.\share\tcl8.4\http2.4\pkgIndex.tcl +.\share\tcl8.4\init.tcl +.\share\tcl8.4\ldAout.tcl +.\share\tcl8.4\msgcat1.3\msgcat.tcl +.\share\tcl8.4\msgcat1.3\pkgIndex.tcl +.\share\tcl8.4\opt0.4\optparse.tcl +.\share\tcl8.4\opt0.4\pkgIndex.tcl +.\share\tcl8.4\package.tcl +.\share\tcl8.4\parray.tcl +.\share\tcl8.4\safe.tcl +.\share\tcl8.4\tclIndex +.\share\tcl8.4\tcltest2.2\pkgIndex.tcl +.\share\tcl8.4\tcltest2.2\tcltest.tcl +.\share\tcl8.4\word.tcl +.\share\tk8.4\bgerror.tcl +.\share\tk8.4\button.tcl +.\share\tk8.4\choosedir.tcl +.\share\tk8.4\clrpick.tcl +.\share\tk8.4\comdlg.tcl +.\share\tk8.4\console.tcl +.\share\tk8.4\demos\arrow.tcl +.\share\tk8.4\demos\bind.tcl +.\share\tk8.4\demos\bitmap.tcl +.\share\tk8.4\demos\browse +.\share\tk8.4\demos\button.tcl +.\share\tk8.4\demos\check.tcl +.\share\tk8.4\demos\clrpick.tcl +.\share\tk8.4\demos\colors.tcl +.\share\tk8.4\demos\cscroll.tcl +.\share\tk8.4\demos\ctext.tcl +.\share\tk8.4\demos\dialog1.tcl +.\share\tk8.4\demos\dialog2.tcl +.\share\tk8.4\demos\entry1.tcl +.\share\tk8.4\demos\entry2.tcl +.\share\tk8.4\demos\entry3.tcl +.\share\tk8.4\demos\filebox.tcl +.\share\tk8.4\demos\floor.tcl +.\share\tk8.4\demos\form.tcl +.\share\tk8.4\demos\hello +.\share\tk8.4\demos\hscale.tcl +.\share\tk8.4\demos\icon.tcl +.\share\tk8.4\demos\image1.tcl +.\share\tk8.4\demos\image2.tcl +.\share\tk8.4\demos\images\earth.gif +.\share\tk8.4\demos\images\earthris.gif +.\share\tk8.4\demos\images\face.bmp +.\share\tk8.4\demos\images\flagdown.bmp +.\share\tk8.4\demos\images\flagup.bmp +.\share\tk8.4\demos\images\gray25.bmp +.\share\tk8.4\demos\images\letters.bmp +.\share\tk8.4\demos\images\noletter.bmp +.\share\tk8.4\demos\images\pattern.bmp +.\share\tk8.4\demos\images\tcllogo.gif +.\share\tk8.4\demos\images\teapot.ppm +.\share\tk8.4\demos\items.tcl +.\share\tk8.4\demos\ixset +.\share\tk8.4\demos\label.tcl +.\share\tk8.4\demos\labelframe.tcl +.\share\tk8.4\demos\license.terms +.\share\tk8.4\demos\menu.tcl +.\share\tk8.4\demos\menubu.tcl +.\share\tk8.4\demos\msgbox.tcl +.\share\tk8.4\demos\paned1.tcl +.\share\tk8.4\demos\paned2.tcl +.\share\tk8.4\demos\plot.tcl +.\share\tk8.4\demos\puzzle.tcl +.\share\tk8.4\demos\radio.tcl +.\share\tk8.4\demos\README +.\share\tk8.4\demos\rmt +.\share\tk8.4\demos\rolodex +.\share\tk8.4\demos\ruler.tcl +.\share\tk8.4\demos\sayings.tcl +.\share\tk8.4\demos\search.tcl +.\share\tk8.4\demos\spin.tcl +.\share\tk8.4\demos\square +.\share\tk8.4\demos\states.tcl +.\share\tk8.4\demos\style.tcl +.\share\tk8.4\demos\tclIndex +.\share\tk8.4\demos\tcolor +.\share\tk8.4\demos\text.tcl +.\share\tk8.4\demos\timer +.\share\tk8.4\demos\twind.tcl +.\share\tk8.4\demos\vscale.tcl +.\share\tk8.4\demos\widget +.\share\tk8.4\dialog.tcl +.\share\tk8.4\entry.tcl +.\share\tk8.4\focus.tcl +.\share\tk8.4\images\logo.eps +.\share\tk8.4\images\logo100.gif +.\share\tk8.4\images\logo64.gif +.\share\tk8.4\images\logoLarge.gif +.\share\tk8.4\images\logoMed.gif +.\share\tk8.4\images\pwrdLogo.eps +.\share\tk8.4\images\pwrdLogo100.gif +.\share\tk8.4\images\pwrdLogo150.gif +.\share\tk8.4\images\pwrdLogo175.gif +.\share\tk8.4\images\pwrdLogo200.gif +.\share\tk8.4\images\pwrdLogo75.gif +.\share\tk8.4\images\README +.\share\tk8.4\images\tai-ku.gif +.\share\tk8.4\listbox.tcl +.\share\tk8.4\menu.tcl +.\share\tk8.4\mkpsenc.tcl +.\share\tk8.4\msgbox.tcl +.\share\tk8.4\msgs\cs.msg +.\share\tk8.4\msgs\de.msg +.\share\tk8.4\msgs\el.msg +.\share\tk8.4\msgs\en.msg +.\share\tk8.4\msgs\en_gb.msg +.\share\tk8.4\msgs\es.msg +.\share\tk8.4\msgs\fr.msg +.\share\tk8.4\msgs\it.msg +.\share\tk8.4\msgs\nl.msg +.\share\tk8.4\msgs\ru.msg +.\share\tk8.4\obsolete.tcl +.\share\tk8.4\optMenu.tcl +.\share\tk8.4\palette.tcl +.\share\tk8.4\panedwindow.tcl +.\share\tk8.4\prolog.ps +.\share\tk8.4\safetk.tcl +.\share\tk8.4\scale.tcl +.\share\tk8.4\scrlbar.tcl +.\share\tk8.4\spinbox.tcl +.\share\tk8.4\tclIndex +.\share\tk8.4\tearoff.tcl +.\share\tk8.4\text.tcl +.\share\tk8.4\tk.tcl +.\share\tk8.4\tkAppInit.c +.\share\tk8.4\tkfbox.tcl +.\share\tk8.4\unsupported.tcl +.\share\tk8.4\xmfbox.tcl +.\source\avr-libc\1.6.4\30-avr-libc-1.6.4-dwarf2.patch +.\source\avr-libc\1.6.4\31-avr-libc-1.6.4-builtins.patch +.\source\avr-libc\1.6.4\40-avr-libc-1.6.4-fix-attiny13a-arch.patch +.\source\binutils\2.19\30-binutils-2.19-avr-size.patch +.\source\binutils\2.19\31-binutils-2.19-avr-coff.patch +.\source\binutils\2.19\32-binutils-2.19-new-sections.patch +.\source\binutils\2.19\33-binutils-2.19-data-origin.patch +.\source\binutils\2.19\40-binutils-2.19-wrong-arch.patch +.\source\binutils\2.19\50-binutils-2.19-xmega.patch +.\source\binutils\2.19\51-binutils-2.19-xmega2.patch +.\source\binutils\2.19\52-binutils-2.19-atmega32u6.patch +.\source\gcc\4.3.2\20-gcc-4.3.2-libiberty-Makefile.in.patch +.\source\gcc\4.3.2\21-gcc-4.3.2-disable-libssp.patch +.\source\gcc\4.3.2\23-gcc-4.3.2-ada-Makefile.patch +.\source\gcc\4.3.2\40-gcc-4.3.2-bug-10768-by-adacore.patch +.\source\gcc\4.3.2\41-gcc-4.3.2-bug-11259_v3.patch +.\source\gcc\4.3.2\42-gcc-4.3.2-bug-spill-v4.patch +.\source\gcc\4.3.2\43-gcc-4.3.2-bug-35013.patch +.\source\gcc\4.3.2\44-gcc-4.3.2-libgcc16.patch +.\source\gcc\4.3.2\45-gcc-4.3.2-bug-33009.patch +.\source\gcc\4.3.2\50-gcc-4.3.2-mega256.patch +.\source\gcc\4.3.2\51-gcc-4.3.2-mega256-additional.patch +.\source\gcc\4.3.2\52-gcc-4.3.2-xmega-v9.patch +.\source\gcc\4.3.2\53-gcc-4.3.2-xmega2.patch +.\source\gcc\4.3.2\54-gcc-4.3.2-atmega32m1.patch +.\source\gcc\4.3.2\55-gcc-4.3.2-atmega32c1.patch +.\source\gcc\4.3.2\56-gcc-4.3.2-atmega32u4.patch +.\source\gcc\4.3.2\57-gcc-4.3.2-attiny167.patch +.\source\gcc\4.3.2\58-gcc-4.3.2-remove-atmega32hvb.patch +.\source\gcc\4.3.2\59-gcc-4.3.2-attiny13a.patch +.\source\gcc\4.3.2\60-gcc-4.3.2-atmega32u6.patch +.\source\gcc\4.3.2\61-gcc-4.3.2-osmain.patch +.\source\gcc\4.3.2\70-gcc-4.3.2-ada-mlib.patch +.\source\gcc\4.3.2\71-gcc-4.3.2-ada-freestanding.patch +.\source\gcc\4.3.2\72-gcc-4.3.2-ada-timebase.patch +.\source\gcc\4.3.2\73-gcc-4.3.2-ada-gnat1_print_path.patch +.\source\gcc\4.3.2\74-gcc-4.3.2-ada-optim_static_addr.patch +.\source\gcc\4.3.2\75-gcc-4.3.2-builtins_v6.patch +.\source\insight\6.8\50-gdb-6.8-mega256.patch +.\source\mingw\5.1.3\mingw-vista.patch +.\source\SOURCE +.\utils\bin\ansi2knr.exe +.\utils\bin\basename.exe +.\utils\bin\bc.exe +.\utils\bin\bison.exe +.\utils\bin\bison.hairy +.\utils\bin\bison.simple +.\utils\bin\bunzip2.exe +.\utils\bin\bzcat.exe +.\utils\bin\bzip2.exe +.\utils\bin\cat.exe +.\utils\bin\chgrp.exe +.\utils\bin\chmod.exe +.\utils\bin\chown.exe +.\utils\bin\cksum.exe +.\utils\bin\cmp.exe +.\utils\bin\comm.exe +.\utils\bin\compress.exe +.\utils\bin\cp.exe +.\utils\bin\csplit.exe +.\utils\bin\cut.exe +.\utils\bin\date.exe +.\utils\bin\dc.exe +.\utils\bin\dd.exe +.\utils\bin\df.exe +.\utils\bin\diff.exe +.\utils\bin\diff3.exe +.\utils\bin\dircolors.exe +.\utils\bin\dirname.exe +.\utils\bin\du.exe +.\utils\bin\echo.exe +.\utils\bin\egrep.exe +.\utils\bin\env.exe +.\utils\bin\expand.exe +.\utils\bin\expr.exe +.\utils\bin\factor.exe +.\utils\bin\false.exe +.\utils\bin\fgrep.exe +.\utils\bin\find.exe +.\utils\bin\flex.exe +.\utils\bin\flex.lib +.\utils\bin\fmt.exe +.\utils\bin\fold.exe +.\utils\bin\fromdos.exe +.\utils\bin\fsplit.exe +.\utils\bin\gawk.exe +.\utils\bin\gclip.exe +.\utils\bin\gplay.exe +.\utils\bin\grep.exe +.\utils\bin\gsar.exe +.\utils\bin\gunzip.exe +.\utils\bin\gzip.exe +.\utils\bin\head.exe +.\utils\bin\id.exe +.\utils\bin\indent.exe +.\utils\bin\info.exe +.\utils\bin\infokey.exe +.\utils\bin\install-info.exe +.\utils\bin\install.exe +.\utils\bin\join.exe +.\utils\bin\jwhois.exe +.\utils\bin\less.exe +.\utils\bin\ln.exe +.\utils\bin\logname.exe +.\utils\bin\ls.exe +.\utils\bin\m4.exe +.\utils\bin\make.exe +.\utils\bin\make.exe.old +.\utils\bin\makeinfo.exe +.\utils\bin\makemsg.exe +.\utils\bin\man.exe +.\utils\bin\md5sum.exe +.\utils\bin\mkdir.exe +.\utils\bin\mkfifo.exe +.\utils\bin\mknod.exe +.\utils\bin\mount.exe +.\utils\bin\msys-1.0.dll +.\utils\bin\msys-1.0.dll.old +.\utils\bin\mv.exe +.\utils\bin\mvdir.exe +.\utils\bin\nl.exe +.\utils\bin\od.exe +.\utils\bin\paste.exe +.\utils\bin\patch.exe +.\utils\bin\pathchk.exe +.\utils\bin\pclip.exe +.\utils\bin\pr.exe +.\utils\bin\printenv.exe +.\utils\bin\printf.exe +.\utils\bin\ps.exe +.\utils\bin\pwd.exe +.\utils\bin\rm.exe +.\utils\bin\rman.exe +.\utils\bin\rmdir.exe +.\utils\bin\sdiff.exe +.\utils\bin\sed.exe +.\utils\bin\seq.exe +.\utils\bin\sh.exe +.\utils\bin\shar.exe +.\utils\bin\sleep.exe +.\utils\bin\sort.exe +.\utils\bin\split.exe +.\utils\bin\stego.exe +.\utils\bin\su.exe +.\utils\bin\sum.exe +.\utils\bin\sync.exe +.\utils\bin\tac.exe +.\utils\bin\tail.exe +.\utils\bin\tar.exe +.\utils\bin\tee.exe +.\utils\bin\test.exe +.\utils\bin\texindex.exe +.\utils\bin\todos.exe +.\utils\bin\touch.exe +.\utils\bin\tr.exe +.\utils\bin\true.exe +.\utils\bin\type.exe +.\utils\bin\uname.exe +.\utils\bin\unexpand.exe +.\utils\bin\uniq.exe +.\utils\bin\unshar.exe +.\utils\bin\uudecode.exe +.\utils\bin\uuencode.exe +.\utils\bin\wc.exe +.\utils\bin\wget.exe +.\utils\bin\wget.GID +.\utils\bin\wget.hlp +.\utils\bin\which.exe +.\utils\bin\whoami.exe +.\utils\bin\xargs.exe +.\utils\bin\yes.exe +.\utils\bin\zcat.exe +.\utils\libusb\bin\avrisp2.cat +.\utils\libusb\bin\avrisp2.inf +.\utils\libusb\bin\avrisp2_x64.cat +.\utils\libusb\bin\inf-wizard.exe +.\utils\libusb\bin\install-filter.exe +.\utils\libusb\bin\jtagice2.cat +.\utils\libusb\bin\jtagice2.inf +.\utils\libusb\bin\jtagice2_x64.cat +.\utils\libusb\bin\libusb0.dll +.\utils\libusb\bin\libusb0.sys +.\utils\libusb\bin\libusb0_x64.dll +.\utils\libusb\bin\libusb0_x64.sys +.\utils\libusb\bin\testlibusb-win.exe +.\utils\libusb\bin\testlibusb.exe +.\WinAVR-manifest.log +.\WinAVR-user-manual.html +.\WinAVR-user-manual.txt +.\avr\bin +.\avr\include\avr +.\avr\include\compat +.\avr\include\util +.\avr\include +.\avr\lib\avr25 +.\avr\lib\avr3 +.\avr\lib\avr31 +.\avr\lib\avr35 +.\avr\lib\avr4 +.\avr\lib\avr5 +.\avr\lib\avr51 +.\avr\lib\avr6 +.\avr\lib\avrxmega4 +.\avr\lib\avrxmega5 +.\avr\lib\avrxmega6 +.\avr\lib\avrxmega7 +.\avr\lib\ldscripts +.\avr\lib +.\avr +.\bin +.\doc\avarice +.\doc\avr-libc\avr-libc-user-manual +.\doc\avr-libc\examples\asmdemo +.\doc\avr-libc\examples\demo +.\doc\avr-libc\examples\largedemo +.\doc\avr-libc\examples\stdiodemo +.\doc\avr-libc\examples\twitest +.\doc\avr-libc\examples +.\doc\avr-libc\man\man3 +.\doc\avr-libc\man +.\doc\avr-libc +.\doc\avrdude +.\doc\binutils\as.html +.\doc\binutils\bfd.html +.\doc\binutils\binutils.html +.\doc\binutils\gprof.html +.\doc\binutils\ld.html +.\doc\binutils +.\doc\gcc\HTML\gcc-4.3.2\cpp +.\doc\gcc\HTML\gcc-4.3.2\cppinternals +.\doc\gcc\HTML\gcc-4.3.2\gcc +.\doc\gcc\HTML\gcc-4.3.2\gccinstall +.\doc\gcc\HTML\gcc-4.3.2\gccint +.\doc\gcc\HTML\gcc-4.3.2 +.\doc\gcc\HTML +.\doc\gcc +.\doc\gdb\onlinedocs +.\doc\gdb +.\doc\simulavr\html +.\doc\simulavr\internals_html +.\doc\simulavr +.\doc\srecord +.\doc +.\lib\dde1.2 +.\lib\gcc\avr\4.3.2\avr25 +.\lib\gcc\avr\4.3.2\avr3 +.\lib\gcc\avr\4.3.2\avr31 +.\lib\gcc\avr\4.3.2\avr35 +.\lib\gcc\avr\4.3.2\avr4 +.\lib\gcc\avr\4.3.2\avr5 +.\lib\gcc\avr\4.3.2\avr51 +.\lib\gcc\avr\4.3.2\avr6 +.\lib\gcc\avr\4.3.2\avrxmega4 +.\lib\gcc\avr\4.3.2\avrxmega5 +.\lib\gcc\avr\4.3.2\avrxmega6 +.\lib\gcc\avr\4.3.2\avrxmega7 +.\lib\gcc\avr\4.3.2\include\objc +.\lib\gcc\avr\4.3.2\include +.\lib\gcc\avr\4.3.2\include-fixed +.\lib\gcc\avr\4.3.2\install-tools\include +.\lib\gcc\avr\4.3.2\install-tools +.\lib\gcc\avr\4.3.2 +.\lib\gcc\avr +.\lib\gcc +.\lib\insight1.0 +.\lib\itcl3.2 +.\lib\itk3.2 +.\lib\reg1.1 +.\lib\tk8.4 +.\lib +.\libexec\gcc\avr\4.3.2\install-tools +.\libexec\gcc\avr\4.3.2 +.\libexec\gcc\avr +.\libexec\gcc +.\libexec +.\mfile +.\pn\clips +.\pn\help +.\pn\Microsoft.VC80.CRT +.\pn\presets +.\pn\schemes +.\pn\taggers\ctags +.\pn\taggers +.\pn\tools +.\pn +.\sample +.\share\insight1.0\help\images +.\share\insight1.0\help\trace +.\share\insight1.0\help +.\share\insight1.0\images +.\share\insight1.0\images2 +.\share\insight1.0 +.\share\itcl3.2 +.\share\itk3.2 +.\share\iwidgets4.0.1\demos\html +.\share\iwidgets4.0.1\demos\images +.\share\iwidgets4.0.1\demos +.\share\iwidgets4.0.1\scripts +.\share\iwidgets4.0.1 +.\share\locale\da\LC_MESSAGES +.\share\locale\da +.\share\locale\de\LC_MESSAGES +.\share\locale\de +.\share\locale\es\LC_MESSAGES +.\share\locale\es +.\share\locale\fi\LC_MESSAGES +.\share\locale\fi +.\share\locale\fr\LC_MESSAGES +.\share\locale\fr +.\share\locale\ga\LC_MESSAGES +.\share\locale\ga +.\share\locale\id\LC_MESSAGES +.\share\locale\id +.\share\locale\ja\LC_MESSAGES +.\share\locale\ja +.\share\locale\nl\LC_MESSAGES +.\share\locale\nl +.\share\locale\pt_BR\LC_MESSAGES +.\share\locale\pt_BR +.\share\locale\ro\LC_MESSAGES +.\share\locale\ro +.\share\locale\rw\LC_MESSAGES +.\share\locale\rw +.\share\locale\sv\LC_MESSAGES +.\share\locale\sv +.\share\locale\tr\LC_MESSAGES +.\share\locale\tr +.\share\locale\vi\LC_MESSAGES +.\share\locale\vi +.\share\locale\zh_CN\LC_MESSAGES +.\share\locale\zh_CN +.\share\locale +.\share\redhat\gui +.\share\redhat +.\share\tcl8.4\encoding +.\share\tcl8.4\http1.0 +.\share\tcl8.4\http2.4 +.\share\tcl8.4\msgcat1.3 +.\share\tcl8.4\opt0.4 +.\share\tcl8.4\tcltest2.2 +.\share\tcl8.4 +.\share\tk8.4\demos\images +.\share\tk8.4\demos +.\share\tk8.4\images +.\share\tk8.4\msgs +.\share\tk8.4 +.\share +.\source\avr-libc\1.6.4 +.\source\avr-libc +.\source\binutils\2.19 +.\source\binutils +.\source\gcc\4.3.2 +.\source\gcc +.\source\insight\6.8 +.\source\insight +.\source\mingw\5.1.3 +.\source\mingw +.\source +.\utils\bin +.\utils\libusb\bin +.\utils\libusb +.\utils +. diff --git a/arduino-0018-windows/hardware/tools/avr/WinAVR-user-manual.html b/arduino-0018-windows/hardware/tools/avr/WinAVR-user-manual.html new file mode 100644 index 0000000..ffe3b9b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/WinAVR-user-manual.html @@ -0,0 +1,2090 @@ + + + + + + +WinAVR User Manual - 20081205 + + + +
+
+

WinAVR is a suite of executable, open source software +development tools for the Atmel AVR series of RISC microprocessors hosted on +the Windows platform. It includes the GNU GCC compiler for C and C++.

+
+
+

1.0 What's New

+
+

Below is just a sample of what's new.

+
    +
  • +

    +New version of GNU Binutils: 2.19 +

    +
  • +
  • +

    +New version of GCC: 4.3.2 +

    +
  • +
  • +

    +New version of AVR-LibC: 1.6.4 +

    +
  • +
  • +

    +New version of Programmers Notepad: 2.0.8.718 +

    +
  • +
  • +

    +New devices supported: +

    +
      +
    • +

      +ATxmega64A3 +

      +
    • +
    • +

      +ATxmega128A3 +

      +
    • +
    • +

      +ATxmega256A3 +

      +
    • +
    • +

      +ATxmega256A3B +

      +
    • +
    • +

      +ATmega32U6 +

      +
    • +
    +
  • +
  • +

    +Various bugs fixed. +

    +
  • +
+
+

2.0 WinAVR Installation

+
+

This section describes various information and notes about the installation of +WinAVR.

+

2.1 Manifest

+
    +
  1. +

    +GNU Binutils 2.19 +

    +
    +
    +
    Binary utilities for AVR target (including assembler, linker, etc.).
    +
    +
  2. +
  3. +

    +GNU Compiler Collection (GCC) 4.3.2 +

    +
    +
    +
    C language and C++ language compiler for AVR target. There are
    +caveats for using the C++ compiler. See the installed avr-libc
    +User Manual in the <InstallDir>\doc directory.
    +
    +
  4. +
  5. +

    +avr-libc 1.6.4 +

    +
    +
    +
    C Standard Library for AVR.
    +
    +
  6. +
  7. +

    +AVR-Ada 0.5.2 +

    +
    +
    +
    Run Time System for the Ada compiler.
    +
    +
    +
    +
    (Removed temporarily)
    +
    +
  8. +
  9. +

    +AVRDUDE 5.5 +

    +
    +
    +
    avrdude is an open source programmer software that is user extensible.
    +
    +
  10. +
  11. +

    +GNU Debugger (GDB) / Insight 6.8 +

    +
    +
    +
    GDB is a command-line debugger. Insight is GDB with a GUI!
    +
    +
  12. +
  13. +

    +AVaRICE 2.7 +

    +
    +
    +
    avarice is a program for interfacing the Atmel JTAG ICE to GDB and users
    +can debug their AVR. Use it in conjunction with GDB.
    +
    +
  14. +
  15. +

    +SimulAVR 0.1.2.5 +

    +
    +
    +
    simulavr is used in conjunction with GDB to provide AVR simulation.
    +
    +
  16. +
  17. +

    +SRecord 1.38 +

    +
    +
    +
    SRecord is a collection of powerful tools for manipulating EPROM load files.
    +It reads and writes numerous EPROM file formats, and can perform many
    +different manipulations.
    +
    +
  18. +
  19. +

    +MFile +

    +
    +
    +
    An automatic makefile generator for AVR GCC.
    +
    +
  20. +
  21. +

    +Programmers Notepad 2.0.8.718 +

    +
    +
    +
    Programming editor and IDE. This editor includes the Scintilla editor
    +component.
    +
    +
  22. +
  23. +

    +LibUSB 0.1.12.1 and device drivers +

    +
    +
    +
    This is a USB library that is linked into AVRDUDE and AVaRICE to allow them
    +to connect to the Atmel JTAG ICE mkII and the Atmel AVRISP mkII. Drivers
    +for these devices are also included.
    +
    +
  24. +
  25. +

    +Cygwin DLLs +

    +
    +
    +
    Certain DLLs from the Cygwin project are required for specific included
    +packages. See the Build Notes section for which packages require which DLL.
    +
    +
    +
    +
    NOTE: Not all executables require these Cygwin DLLs.
    +
    +
  26. +
  27. +

    +Many native Win32 GNU programs and utilities including make and bash. +

    +
  28. +
  29. +

    +Tofrodos 1.6 +

    +
    +
    +
    A command-line text file line-ending convertor.
    +
    +
  30. +
  31. +

    +A Makefile Template for you to use in your projects. +

    +
  32. +
  33. +

    +Documentation for the various projects. +

    +
  34. +
  35. +

    +Source code patches used to build the various projects. +

    +
  36. +
+

2.2 Layout

+

Listed below are some directories you might want to know about.

+

<install> = The directory where you installed WinAVR.

+
+
+<install>\bin +
+
+

+ The AVR software development programs. This directory should be in your + PATH environment variable. This includes: +

+
    +
  • +

    +GNU Binutils +

    +
  • +
  • +

    +GCC +

    +
  • +
  • +

    +avrdude +

    +
  • +
  • +

    +GNU Debugger (GDB) +

    +
  • +
  • +

    +Insight +

    +
  • +
  • +

    +AVaRICE +

    +
  • +
  • +

    +SimulAVR +

    +
  • +
  • +

    +SRecord +

    +
  • +
  • +

    +Various required DLLs +

    +
  • +
+
+
+<install>\utils\bin +
+
+

+ A collection of Unix programs built for the Windows + platform. The programs make and sh (bash) reside here. This directory + should be in your PATH environment variable. +

+
+
+<install>\avr\lib +
+
+

+ avr-libc libraries, startup files, linker scripts, + and stuff. +

+
+
+<install>\avr\include +
+
+

+ avr-libc header files. This is where, for + example, #include <string.h> comes from. +

+
+
+<install>\avr\include\avr +
+
+

+ avr-libc header files specific to the AVR + microprocessor. This is where, for example, #include <avr/io.h> comes + from. +

+
+
+<install>\lib +
+
+

+ GCC libraries, other libraries,headers and stuff. +

+
+
+<install>\libexec +
+
+

+ GCC program components +

+
+
+<install>\doc +
+
+

+ Various documentation. Before asking, RTFM! :-) +

+
+
+<install>\doc\avr-libc\examples +
+
+

+ Example projects with source code. Have fun! +

+
+
+<install>\sample +
+
+

+ Sample makefile (see below). Batch files to use in + compiling from AVR Studio 3.x (see below). +

+
+
+<install>\pn +
+
+

+ Programmers Notepad +

+
+
+<install>\mfile +
+
+

+ MFile +

+
+
+<install>\source +
+
+

+ Documentation on where to find the source code for the + various projects and source code patches that were used to build the tools. +

+
+
+<install>\utils\bin +
+
+

+ Utility programs, mainly from Unix-land that are used in building the + software, such as the shell (sh.exe), make.exe, and other programs called + from a Makefile. +

+
+
+<install>\utils\libusb\bin +
+
+

+ LibUSB programs and drivers. +

+
+
+

2.3 PATH Environment Variable

+

There are two directories in WinAVR that contain executable programs. +If <install> is your install directory then these two directories are:

+

<install>\bin
+<install>\utils\bin

+

The <install>\bin directory contains the software development toolset +proper. This includes GNU binutils, GCC, and other programs.

+

The <install>\utils\bin contains many miscellaneous Unix or GNU programs +that are built for Windows. This includes sh (bash) and make among a host of +other things.

+

For your operating system to easily locate these directories, they must be put +at the beginning of the PATH environment variable. WinAVR can do this +automatically upon installation, if you selected this option. The reason for +putting these directories at the beginning of the PATH environment variable +is for the correct make program to be called. There have been reports from +users that have Borland tools installed and the Borland make program is started +rather than GNU make correctly started.

+

These programs are put into two seperate directories in case you want to use +a different set of utility programs than the set that comes with WinAVR.

+

If you do not wish to use the utilities that comes with WinAVR, remove the +<install>\utils\bin directory from your PATH environment variable.

+

For Windows 95 and 98 users, see the autoexec.bat file in the root drive +where your OS is installed. This is usually in C:\.

+

For all other Windows users, the WinAVR installer modifies this registry key: +HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path

+
+ + + +
+
Important
+
On Windows NT/2K/XP you must have Administrator priviledges for +the installer to automatically put these directories in your PATH environment +variable.
+
+

2.4 Registry Keys

+

WinAVR installs a minimal amount of registry keys. These keys are installed +to inform of the installation path, the uninstaller, and for GCC to find +other parts of the compiler as needed. Below are the specific keys that are +installed.

+
    +
  • +

    +Installation Location:: + This registry key will be added to provide the location of the WinAVR + installation: +

    +
    +
    +
    `HKEY_LOCAL_MACHINE\SOFTWARE\WinAVR\{VERSION}`
    +
    +
    +
    +
    with {VERSION} being replaced by the version number of WinAVR. Formerly,
    +the key above without {VERSION} was equal to the install location.
    +
    +
  • +
  • +

    +GCC Component Paths:: + There are some keys that are installed that are used to help GCC find installed component programs: +

    +
    +
    +
    `HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\GCC`
    +
    +
    +
    +
    `HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\BINUTILS`
    +
    +
    +
    +
    `HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\G++`
    +
    +
    +
    +
    with {VERSION} being replaced by the version number of WinAVR.
    +Each of these keys points to the WinAVR install location for that version
    +of WinAVR.
    +
    +
  • +
  • +

    +PATH Environment Variable:: + The registry key: +

    +
    +
    +
    `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path`
    +
    +
    +
    +
    may be modified (if selected at installation time) to add two directories to the
    +PATH environment variable.
    +
    +
  • +
  • +

    +Uninstaller:: + There are several registry keys written under: +

    +
    +
    +
    `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\WinAVR-{VERSION}`
    +
    +
    +
    +
    with {VERSION} being replaced by the version number of WinAVR.
    +These registry keys are used to register the uninstaller with Windows.
    +
    +
  • +
+

2.5 LibUSB-Win32

+

LibUSB-Win32 is a USB library that is linked into AVRDUDE and AVaRICE to allow +them to connect to the Atmel JTAG ICE mkII and the Atmel AVRISP mkII. Drivers +for these devices are also included. LibUSB is installed under:

+

<install>\utils\libusb\bin

+

The drivers for the JTAG ICE mkII and the AVRISP mkII are also located in the +above directory.

+

To install the LibUSB-Win32 drivers (when AVR Studio is not installed): +- Plug in your Atmel device (JTAG ICE mkII or AVRISP mkII). +- When Windows asks to locate drivers for this device, select "Install from +a list or specific location". Press Next. +- Uncheck the checkbox, "Search removable media". +- Check the checkbox "Include this location in the search" and select the +location of the drivers in the directory specified above. Press Next. +The driver will then be installed.

+

AVR Studio can install and use the USB drivers from Jungo (which is included as +part of the AVR Studio installation). However, the Jungo drivers and the +LibUSB-Win32 drivers are mutually exclusive; if one set is installed the other +set will not work.

+

You can uninstall the driver by plugging in the device (and making sure it is +powered on), use the Device Manager to find and select the device (under Jungo +or LibUSB-Win32, depending on which driver is installed), right click and select +"Uninstall". Then, install the other driver according to the correct procedures.

+

LibUSB also has a "filter" driver that is available, however, using this is +not recommended by the LibUSB author.

+
+

3.0 Toolset Background

+
+

WinAVR is a collection of executable software development tools for the +Atmel AVR processor hosted on Windows.

+

These software development tools include:

+
    +
  • +

    +Compilers +

    +
  • +
  • +

    +Assembler +

    +
  • +
  • +

    +Linker +

    +
  • +
  • +

    +Librarian +

    +
  • +
  • +

    +File converter +

    +
  • +
  • +

    +Other file utilities +

    +
  • +
  • +

    +C Library +

    +
  • +
  • +

    +Programmer software +

    +
  • +
  • +

    +Debugger +

    +
  • +
  • +

    +In-Circuit Emulator software +

    +
  • +
  • +

    +Editor / IDE +

    +
  • +
  • +

    +Many support utilities +

    +
  • +
+

3.1 The Toolset and Open Source

+

Each of the tools included in WinAVR is Open Source and/or Free Software. Each +tool has it's own project, usually hosted on +SourceForge or Savannah, +with their own project maintainers and developers who all volunteer their time +and energy to creating these tools. Look in the Links section below to find out +the websites of each of these projects.

+

Especially note many of these programs come from the Unix and Linux +platforms. These programs have been ported to the Windows platform but +generally behave for a Unix-like environment. If you are not used to a +Unix-like environment it can possibly be frustrating. Read as much +documentation as you can. Look at examples. Search the Internet. Many links +are also provided in this manual.

+

Also remember that this software is updated and improved continually by many +people who volunteer their precious time to provide some of the best software +for absolutely no cost or obligation to you. Volunteers are always welcome in +furthering any of these projects!

+

3.2 Compiler

+

The compiler in WinAVR is the GNU Compiler Collection, or +GCC. This compiler is incredibly flexible and can be +hosted on many platforms, it can target many different different processors / +operating systems (back-ends), and can be configured for multiple different +languages (front-ends).

+

The GCC included in WinAVR is targeted for the AVR processor, is built to +execute on the Windows platform, and is configured to compile C, or C++.

+
+ + + +
+
Caution
+
There are caveats on using C++. See the avr-libc FAQ.
+
+

Because this GCC is targeted for the AVR, the main executable that is +created is prefixed with the target name: avr-gcc.exe. It is also referred to +as AVR GCC.

+

avr-gcc is just a "driver" program only. The compiler itself is called +cc1.exe for C, or cc1plus.exe for C++. Also, the preprocessor cpp.exe +will usually automatically be prepended with the target name: avr-cpp.exe. +The actual set of component programs called is usually derived from the suffix +of each source code file being processed.

+

GCC compiles a high-level computer language into assembly, and that is all. It +cannot work alone. GCC is coupled with another project, GNU Binutils, which +provides the assembler, linker, librarian and more. Since GCC is just a "driver" +program, it can automatically call the assembler and linker directly to build +the final program.

+

3.3 Assembler, Linker, Librarian and More

+

GNU Binutils is a collection of binary +utilities. This also includes the assembler, as. Sometimes you will see it +referenced as GNU as or gas. Binutils includes the linker, ld; the librarian +or archiver, ar. There are many other programs included that provide various +functionality.

+

Note that while the assembler uses the same mnemonics as proposed by +Atmel, the "glue" (pseudo-ops, operators, expression syntax) is derived from +the common assembler syntax used in Unix assemblers, so it is not directly +compatible to Atmel assembler source files.

+

Binutils is configured for the AVR target and each of the programs is prefixed +with the target name. So you have programs such as:

+
+
+avr-as +
+
+

+ The Assembler. +

+
+
+avr-ld +
+
+

+ The Linker. +

+
+
+avr-ar +
+
+

+ Create, modify, and extract from archives (libraries). +

+
+
+avr-ranlib +
+
+

+ Generate index to archive (library) contents. +

+
+
+avr-objcopy +
+
+

+ Copy and translate object files. +

+
+
+avr-objdump +
+
+

+ Display information from object files including disassembly. +

+
+
+avr-size +
+
+

+ List section sizes and total size. +

+
+
+avr-nm +
+
+

+ List symbols from object files. +

+
+
+avr-strings +
+
+

+ List printable strings from files. +

+
+
+avr-strip +
+
+

+ Discard symbols. +

+
+
+avr-readelf +
+
+

+ Display the contents of ELF format files. +

+
+
+avr-addr2line +
+
+

+ Convert addresses to file and line. +

+
+
+avr-c++filt +
+
+

+ Filter to demangle encoded C++ symbols. +

+
+
+

See the binutils user manual for more information on what each program can do.

+

3.4 C Library

+

avr-libc is the Standard C Library for +AVR GCC. It contains many of the standard C routines, and many non-standard +routines that are specific and useful for the AVR processor.

+
+ + + +
+
Note
+
The actual library is currently split into two main parts, libc.a and +libm.a, where the latter contains mathematical functions (everything mentioned +in <math.h>, and a bit more). Thus it is a good idea to always include the +-lm linker option. The WinAVR Makefile Template automatically includes the +-lm linker option. Also, there are additional libraries which allow a +customization of the printf and scanf function families.
+
+

avr-libc also contains the most documentation on how to use (and build) the +entire toolset, including code examples. The avr-libc user manual also +contains the FAQ on using the toolset.

+

3.5 Making Your Software

+

There is one program that brings all of this together. This program is +GNU make. The make program reads and interprets a makefile. A makefile is a +text file that you write that lists and controls how something is made. It is +most often used to control how software is made.

+

Each of these programs are Command Line Interface (CLI) tools. They are +controlled by parameters or switches that are added to the command line. Or, +in the case of make, by text files that are written and used as input.

+

Most commercial software development toolsets have an Integrated +Development Environment (IDE). This consists of a graphical user-interface +(GUI) that contains a programming editor and graphical front-ends to +compiler, assembler, linker, standard C library, and librarian programs. These +front-ends consist of dialog boxes which allow you to set build options and a +way of creating a list of files that are in a "project". These graphical +front-ends hide and encapsulate the real command-line compiler, assembler, +linker, and standard library that are in the background of any software +development toolset.

+

WinAVR is a collection of open-source, software development tools from various +projects. WinAVR does not have a complete graphical IDE like a commerical +toolset, yet. Because of this, learning to build software under GCC means that +it would be best to learn how to use the make program and learn how to write +makefiles. Learn the common flags that are used to control GCC which in turn +can control gas and ld. You can learn a lot by looking at the Makefile +Template that comes with WinAVR and looking up all the programs and flags in the +included user manuals.

+

3.6 Programming

+

After creating your software, you'll want to program your device. You can do +this by using the program avrdude which can interface with various hardware +devices to program your processor.

+

avrdude is a very flexible package. All the information about AVR processors +and various hardware programmers is stored in a text database. This database +can be modified by any user to add new hardware or to add an AVR processor +if it is not already listed.

+

3.7 Debugging

+

Debugging encompasses both simulation and emulation. Both are available in +WinAVR.

+

The GNU Debugger (GDB) is the main package that can be used for general +debugging. GDB is a command-line program only. Insight is GDB plus a GUI +written in Tcl/Tk. Both GDB and Insight are configured for the AVR and the +main executables are prefixed with the target name: avr-gdb, and +avr-insight. There is now also a "text mode" GUI for GDB: avr-gdbtui.

+

To do emulation with the JTAG ICE, GDB / Insight requires a "helper" program +called avarice which is also included.

+

To do simulation, GDB / Insight requires a different "helper" program called +simulavr which is also included.

+

There are also alternatives for simulation. Atmel offers a free package called +AVR Studio which can also do simulation. The latest version of AVR Studio +is 4.13. Note that AVR Studio is currently free to the public, but it is not +Open Source.

+

See the section, 5.0 Debugging, Simulating, and Emulating, for detailed +information on debugging.

+
+

4.0 Setting Up a Project

+
+

4.1 Where's the GUI / IDE?

+

You won't find a typical GUI / IDE like you might be used to with other +commercial cross-compilers, or like native compilers on Windows. Each of the +tools in WinAVR are from their own projects. In this case, an editor or IDE +is just another component in the toolset. And, everybody has their own +favourite they want to use. WinAVR allows flexibility.

+

WinAVR comes with an editor / IDE called Programmers Notepad. This is an +Open Source editor with some IDE capabilites. Because the compiler and +associated utilities are all command-line driven, you are free to use +whatever editor / IDE you want to provided it can call command-line +programs. See below for more information on Programmers Notepad.

+

There is current work going on to continually improve the IDE capabilities +of Programmers Notepad. Let us know if you're interested in volunteering +to help on these projects.

+

4.2 Programmers Notepad

+

Programmers Notepad (PN) is an Open Source editor +with some IDE features. Version 2.x is is a complete rewrite of version 1. +Many new features are still being added.

+

PN contains the Open Source Scintilla editor +component as the basis for its editor.

+

PN can call any command-line tool and capture it's output. This is ideal for +calling the make utility, which executes your makefile, which in turn calls +the compiler, linker, and other utilities used to build your software. PN will +then capture the output and display it in a window. You can also click on any +GCC warning or error and PN will automatically open the file and go to the +line where the warning or error occurred.

+

To set up tools, go to the Tools menu up top, select Options, then select Tools +on the left side menu. The best Scheme to add tools is under +"(None - Global Tools)". After you add your tool, it will appear in the +Main Menu under Tools.

+

4.3 Make, Makefiles, and the Makefile Template

+

make is a program that is widely used to build software. make reads and +executes makefiles, which are descriptions of how to build something. +Makefiles typical do things such as group files together, set lists of +compiler and linker flags, list rules of how to compile source code to +object code, how to link object files, how to convert files from one +type to another, and many other things.

+

When you set up your project, add a makefile to control how to build your +software. When you use Programmers Notepad, or other IDE, set it up to +call make and have it execute your project's makefile.

+

Three Makefile Templates are included in WinAVR, which provides a lot of +functionality already written for you. There is the standard Makefile Template +(Makefile) that has always been included with WinAVR. And there are two new +Makefile Templates, one to generate a library instead of an application +(Makefile.lib) and another Makefile Template that enables whole program +optimization (Makefile.wpo). You can can copy any of these templates to your +project's directory and easily modify it to fit your project. +These Makefile Templates can be found in the +<install>\sample directory. Copy any of these templates and rename them to +Makefile.

+

WinAVR also includes the MFile utility. +MFile is a automatic makefile generator for AVR GCC written in Tcl/Tk and can +run on various platforms including Windows, FreeBSD, Linux, etc. You can +use this utility to help you quickly generate a makefile for your project +based on some simple menu input. MFile for the Windows platform uses the WinAVR +Makefile Template for it's template.

+
+ + + +
+
Note
+
I HIGHLY RECOMMEND THAT YOU BECOME FAMILIAR WITH THE MAKE PROGRAM +AND WRITING MAKEFILES! PLEASE READ THE MAKE USER MANUAL!
+
+

For more information on the make program and writing makefiles, see the make +user manual that is included or see Links below for GNU Manuals Online.

+
+

5.0 Debugging, Simulating, and Emulating

+
+
+ + + +
+
Note
+
The term "debugging" is a generic term and can mean either simulation or +emulation below.
+
+

There are several different ways to go about debugging, simulating, and +emulating. Each solution has their own requirements and may involve various +tradeoffs.

+

There are open source applications that can be used for simulation and +emulation, and they are included with WinAVR. Use GDB or Insight, with the +simulavr back-end for simulating, or with the avarice back-end to emulate +using the Atmel JTAG ICE.

+

There is a free application from Atmel that can be used for simulation or +emulation: AVR Studio. The latest version as of this writing is 4.11. AVR Studio +can be downloaded from the Atmel web site.

+

There are also a number of commercial simulators, such as VMLab or Proteus VSM.

+

In general, debugging is dependent upon:

+
    +
  1. +

    +The application used to debug. +

    +
  2. +
  3. +

    +The file format used. +

    +
  4. +
  5. +

    +The type of debugging information generated in the object code. +

    +
  6. +
+

Many times the application that is being used, determines the file format, and +the type of debugging information that needs to be generated.

+

This version of the compiler can generate both DWARF2 and stabs debugging +information.

+
+ + + +
+
Note
+
The compiler will currently default to generating DWARF2 debugging info.
+
+

If you are using the WinAVR Makefile Template, or using MFile, there is a line +in the makefile that controls the type of debug information that is generated:

+
+
+
DEBUG = dwarf-2
+
+

To generate stabs information change this line to:

+
+
+
DEBUG = stabs
+
+
+ + + +
+
Tip
+
MFile can change this setting automatically through a menu option.
+
+

This line in the makefile changes the -g compiler switch that is sent to GCC. +See the GCC user manual for more information.

+

The compiler will build your software and automatically output an ELF file.

+

5.1 GDB/Insight + simulavr or avarice

+

The GNU Debugger (GDB) can be used, with other programs, to simulate or +emulate your AVR program. Insight is GDB with a GUI (written in Tcl/Tk). +Insight also has a console window which provides the traditional +command-line interface to GDB. The terms GDB and Insight will be used +interchangably.

+

Use avarice with GDB for use with your JTAG In-Circuit Emulator (ICE).

+

Use simulavr with GDB for simulation.

+

See each of the package's documentation for more information on usage.

+
Requirements

File Format: ELF
+Debugging Information: DWARF-2 (preferred) or stabs

+
+ + + +
+
Tip
+
There is a tutorial on how to use GDB and avarice +at the WinAVR web site.
+
+
+ + + +
+
Tip
+
If you use avarice, when you specify a serial port to use with the —jtag +flag, you must specify it in the form of:
+
+
+
+
--jtag /dev/comX
+
+

where X is the COM port number you are using. This is due to the fact that +avarice is linked to the Cygwin DLL, which requires a Unix-type format for +the COM port number.

+

5.2 AVR Studio

+

AVR Studio 4.10 and above has a new parser component that can read ELF files +natively. These ELF files must contain DWARF2 debugging information.

+
Requirements (for AVR Studio version 4.10 and greater)

File Format: ELF
+Debugging Information: DWARF-2

+

5.3 Commercial Simulators

+

Certain commercial simulators have more requirements to use their products. +Namely, you must compile your software with the stabs debugging information, +and you must convert your ELF file to either the COFF format or to the +Atmel Extended COFF format.

+
Requirements (dependent upon application used)

File Format: COFF / Atmel Extended COFF
+Debugging Information: stabs

+

The GNU Binutils program objcopy (avr-objcopy) has been patched where it can +now convert from ELF to either of these formats. Note that the converter is +a beta release.

+

The usage of avr-objcopy to convert ELF/stabs debugging +information into AVR COFF debugging information is (long lines wrapped +with backslashes):

+
+
+
avr-objcopy \
+        --debugging \
+        -O $(FORMAT) \
+        --change-section-address .data-0x800000 \
+        --change-section-address .bss-0x800000 \
+        --change-section-address .noinit-0x800000 \
+        --change-section-address .eeprom-0x810000 \
+        $(filename).elf $(filename).cof
+
+

where $(FORMAT) should either be coff-avr (COFF format that matches +the older Atmel AVR COFF documentation, as understood by AVR Studio 3, +early versions of AVR Studio 4, and also by VMLab), or coff-ext-avr +(current AVR Extended COFF specification, as understood by AVR +Studio 4.07+; adds long filenames and structure debugging).

+

There might be some warnings when you run the above, like

+
+
+
Warning: file {standard input} not found in symbol table, ignoring
+Warning: ignoring function __vectors() outside any compilation unit
+Warning: ignoring function __bad_interrupt() outside any compilation unit
+
+

Perhaps more of them if your avr-libc has been installed with +debugging symbols (the default WinAVR installation strips debugging +symbols from the installed library files). There should be no other +warning normally.

+
+ + + +
+
Note
+
The avr-objcopy usage describe above is in the Makefile Template that is +included with WinAVR and in the MFile template. You should only have to call +make coff to convert to AVR COFF, or call make extcoff to convert to +AVR Extended COFF.
+
+

As Atmel has now moved towards the ELF file format with DWARF-2 debugging +information, the (E)COFF conversion is deprecated. Thus, there is currently no +ongoing development on the COFF converter. There are a few known bugs in it, in +particular it is known that using forward struct references can crash +the converter. Unfortunately, fixing this bug would be close to a +whole rewrite of it. As a workaround, just avoid forward struct references.

+

Instead of writing:

+
+
+
typedef struct foo *foo_p;
+struct foo {
+    foo_p next;
+    int something;
+};
+
+

reorder it to:

+
+
+
struct foo {
+    struct foo *next;
+    int something;
+};
+typedef struct foo *foo_p;
+
+

That strategy is known to work around that particular bug.

+
+

6.0 Useful Additions

+
+

6.1 Operating Systems

+

While an Operating System, or RTOS, isn't necessary to write software for +the AVR, there may be times when it is desirable. Below, are some links for +free or open source operating systems / kernels for the AVR. Note that this +may not be a complete list.

+
+
+AvrX +
+
+

+ AvrX is a Real-Time Multitasking Kernel. +

+
+
+EtherNut - Nut/OS +
+
+

+ Ethernut is an Open Source Hardware and Software Project for building + Embedded Ethernet Devices. It contains Nut/OS which is an intentionally + simple RTOS for the ATmega128, which provides a minimum of services to run + Nut/Net, the TCP/IP stack. +

+
+
+FreeRTOS +
+
+

+ FreeRTOS is a portable, open source, mini Real Time Scheduler (or mini + RTOS kernel). +

+
+
+TinyOS +
+
+

+ TinyOS is a component-based runtime environment designed to provide + support for deeply embedded systems which require concurrency intensive + operations while constrained by minimal hardware resources. +

+
+
+Contiki +
+
+

+ Contiki is an Internet-enabled operating system and desktop environment + for a number of smallish systems. +

+
+
+XMK - eXtreme Minimal Kernel +
+
+

+ XMK is a preemptive multitasking scheduler/kernel for 8bit + microcontrollers. Its goal is to provide a bare bones RTOS with a small + enough footprint (RAM+ROM) to run on 8bit microcontrollers. +

+
+
+pico OS +
+
+

+ pico OS is a highly configurable and very fast real time operating system + (RTOS). It targets a wide range of architectures, from very small 8 bit + processors and microcontrollers up to very huge platforms. An AVR port is + available. +

+
+
+uSmartX +
+
+

+ uSmartX is a non-preemptive, multitasking, priority based RTOS. It features + mechanisms for inter-task communication and basic task and time control + functions. +

+
+
+Super Simple Tasker (SST) +
+
+

+ This is an implementation of a lightweight scheduler so called "Super + Simple Tasker" - SST. The idea is taken from the Robert Ward's article - + "Practical Real-Time Techniques" http://www.quantum-leaps.com/resources/Ward03.pdf. + The SST allows to significantly reduce needs for precious RAM and ROM and + still allows to keep a real time characteristic of the scheduler (e.g. + tasks prioritization and preemption). +

+
+
+ChibiOS/RT +
+
+

+ ChibiOS/RT is a compact and fast RTOS designed for embedded applications. + It offers threads, mutexes, semaphores, messages, events, timers, flexible + I/O with timeout capability. +

+
+
+

6.2 Other

+

Here are some links to free or open source components that may be useful.

+
+
+uIP - TCP/IP Stack for Embedded Microcontrollers +
+
+

+ uIP is an implementation of the TCP/IP protocol stack intended for small + 8-bit and 16-bit microcontrollers. It provides the necessary protocols for + Internet communication, with a very small code footprint and RAM + requirements - the uIP code size is on the order of a few kilobytes and RAM + usage is on the order of a few hundred bytes. +

+
+
+Protothreads +
+
+

+ Protothreads are extremely lightweight stackless threads designed for + severely memory constrained systems such as small embedded systems or + sensor network nodes. Protothreads provide linear code execution for + event-driven systems implemented in C. Protothreads can be used with or + without an underlying operating system. +

+
+
+
+

7.0 Finding Help

+
+

WinAVR is a packaged collection of software devlopment tools built from open +source projects.

+

There is a large community of people who use these tools. There are a number +of these people who volunteer their time to help other people with problems +or questions. And then there are other people who also volunteer their time +to contribute to these open source projects.

+

The main places to find help is the Documenation and Online Sources. Please +try and find the answer in the documentation first before asking for help +online.

+
+ + + +
+
Tip
+
If you need to ask for help online, please read this first: +How To Ask Questions The Smart Way
+
+

7.1 Documentation

+

The first and best place to find help is in the documentation! WinAVR includes +the user manuals for many of the software tools that are shipped in the +package.

+

The documentation for any particular package may come in different formats +depending upon what is available from that package and available space +in the WinAVR installation. The different documentation formats that you'll +find in WinAVR are:

+
    +
  1. +

    +HTML - Hyper Text Markup Language. Requires a web browser to view. +

    +
  2. +
  3. +

    +PDF - Portable Document Format. Requires a PDF viewer such as Acrobat. +

    +
  4. +
+

Additionally many user manuals can also be found online, especially packages +that are part of the GNU project. You can find links to many of these in the +Links section below.

+

For packages that have HTML, and PDF documentation, look in your +<install>\doc directory.

+

WinAVR installs on your desktop two shortcuts. One is to the HTML +documentation on avr-libc that is installed locally. The other shortcut is +to the GNU Manuals online (which requires Internet connection).

+

7.2 Online Sources

+

I'll say it again:

+

Please try and find the answer in the documentation first before asking for +help online.

+
+ + + +
+
Tip
+
If you need to ask for help online, please read this first: +How To Ask Questions The Smart Way
+
+

Help for the AVR software development toolset (and specifically AVR GCC) can +be found at:

+
+
+AVR Freaks +
+
+

+ All AVR, all the time! This site has several forums including a general + AVR Forum and an AVR GCC Forum specifically for discussion of the GCC + compiler for the AVR. They also have an Academy which contains user's + projects. This gives you access to a lot of sample code, libraries, and + various AVR projects. +

+
+
+avr-gcc mailing list +
+
+

+ The avr-gcc list is intended as a forum for dicussion about the following: + Bugs, Programming technique, Installation and distributions, Hints and + tips, Other avr-gcc related stuff. Note that all of the developers of the + toolset are subscribed to this list! +

+
+
+Mikrocontroller.net +
+
+

+ For native German speakers. They have a forum for the AVR GCC compiler. +

+
+
+

Help for other projects and tools included in WinAVR can usually be found at +the individual project's web page which usually includes links to their +mailing lists.

+

If you need help, do not contact the WinAVR developers personally! Use these +web sites and mailing lists first!

+
+

8.0 Toolset Bugs

+
+

You can fill out a relevant tracker on the +WinAVR SourceForge project page, if you +have one of the following:

+
    +
  • +

    +a bug in the packaging +

    +
  • +
  • +

    +a bug in the installation +

    +
  • +
  • +

    +any suggestions for a new tool to be added +

    +
  • +
  • +

    +any suggestions for improvements to the overall package +

    +
  • +
+
+ + + +
+
Important
+
IF THERE ARE BUGS IN THE SOFTWARE TOOLS THEMSELVES, THE MAINTAINERS +OF THE INDIVIDUAL SOFTWARE PROJECTS SHOULD BE NOTIFIED IN THE APPROPRIATE +MANNER, NOT ME, OR THE WINAVR PROJECT!!!!
+
+

Generally, if you encounter a bug with a library routine or a bug with a +specifc AVR processor or header file, notify the avr-libc project first +(see Links below). They will let you know if the bug is truly in the avr-libc +project, or if it should be passed on to the GCC project. If the bug is in +GCC, go to their web page (see Links below) on how to report bugs to GCC.

+

For bugs with Programmer's Notepad 2, see it's SourceForge web site +(see Links) to issue a Bug Tracker, or email it's author (see Credits).

+

For bugs with avrdude, see it's Project page (see Links).

+

For bugs with simulavr, see it's Project page (see Links).

+

For bugs with avarice, see it's Project page (see Links).

+

For bugs with GDB, see it's web page (see Links).

+

For bugs with Insight, see it's web page (see Links).

+

For bugs with SRecord, see it's Home page (see Links).

+
+

9.0 WinAVR FAQ

+
+

This FAQ is specific to the WinAVR package and installation. For a programming +issues, see the avr-libc FAQ in the avr-libc documentation included in the +WinAVR package or the +avr-libc user manual online.

+

#1) When I run a program, why do I get the error "You have multiple copies of cygwin1.dll on your system."?

+

Certain packages in WinAVR are built with Cygwin and are linked to their +emulation library: cygwin1.dll. If you also have Cygwin installed seperately, +these programs will find the cygwin1.dll that is shipped and included with +WinAVR, and will also find the cygwin1.dll in your Cygwin installation. If +these versions are different, you will get this error.

+

WinAVR must ship the cygwin1.dll file to support it's packages, as most people +do not have Cygwin installed on their system and it's not fair to ask people to +install such a huge package as a prerequisite.

+

Unfortunately, the Cygwin FAQ says that the only +way around this is to remove other copies of cygwin1.dll. This would mean +either uninstalling Cygwin so the WinAVR programs work, or perhaps renaming +the cygwin1.dll found in the <install>\bin directory so the WinAVR programs +will use the cygwin1.dll that is in the Cygwin installation. However, if you do +the latter, note that the version of cygwin1.dll you have in your Cygwin +installation is probably different than the version of cygwin1.dll that was +used to build the WinAVR programs. In this case, use at your own risk.

+

#2) I have any of the following warnings when I create a COFF file, what should I do?

+
+
+
Warning: file {standard input} not found in symbol table, ignoring
+Warning: ignoring function __vectors() outside any compilation unit
+Warning: ignoring function __bad_interrupt() outside any compilation unit
+Discarding local symbol outside any compilation unit: .__do_copy_data_start
+Discarding local symbol outside any compilation unit: .__do_copy_data_loop
+
+

Nothing. These warnings can be ignored.

+

#3) I use WinAVR with AVR Studio. I get an error when avr-objcopy is creating the load file for the EEPROM. It says there are no sections to be copied.

+

avr-objcopy is a part of GNU Binutils. In GNU Binutils 2.17 or later, the objcopy +program was changed to return an error when there are no sections to be copied. +This is different than previous versions of the objcopy program. This is not +really an error, as it is ok if there are no sections to be copied.

+

The Makefile has to be aware of this new behaviour and to not accept this as +a real error. Use the WinAVR Makefile Template as the basis of your Makefile, or +use AVR Studio 4.13 (soon to be released, if not already) which has changed how +it generates its internal Makefile on GCC projects to correctly account for this.

+
+

10.0 WinAVR Project

+
+

10.1 Build Notes

+

The contained packages are built either in the Cygwin environment, or the +MinGW environment. Some, but not all, packages are dependendent upon one or +more Cygwin DLLs, which are included in WinAVR.

+
    +
  1. +

    +GNU Binutils: MinGW. +

    +
  2. +
  3. +

    +GCC: MinGW. +

    +
  4. +
  5. +

    +avr-libc: MinGW. +

    +
  6. +
  7. +

    +avrdude: Cygwin. +

    +
  8. +
  9. +

    +GDB/Insight: MinGW. +

    +
  10. +
  11. +

    +AVaRICE: Cygwin. Requires: cygwin1.dll, +

    +
  12. +
  13. +

    +SimulAVR: Cygwin. Requires: cygwin1.dll. +

    +
  14. +
  15. +

    +SRecord: MinGW. +

    +
  16. +
+

DLL Versions:

+
    +
  • +

    +cygwin1.dll: 1.5.23-2 +

    +
  • +
+

Programmer's Notepad 2 was built by the author, Simon Steele (see Credits). +Tofrodos was built by the author, Christopher Heng (see Credits).

+

10.2 Credits

+

Thank you to everyone who uses WinAVR!

+
    +
  • +

    +WinAVR software devleopment toolset distribution built by +

    +
  • +
+

Eric B. Weddington
+email

+

One person cannot do all of this alone. There are many, many people involved +in making this package what it is. I am deeply indebted to those people. Below +is an attempt at a list of credits. Any omissions are my fault and corrections +are solicited.

+
    +
  • +

    +Very Special Thanks to Joerg Wunsch for helping this project in + innummerable ways including writing the AVR COFF patch for binutils; patches + for GCC to help with debugging and binary constants; being the resident guru + on AVR Freaks; writing portions of this manual; reviewing all of my wacky + ideas; building SRecord; getting me in contact with the right people at the + right time ;-) ; spending the time to take me on a beautiful hike near his + home town; and for tolerating me over the years. + I don't know why he does it, but I am eternally grateful. :-) +

    +
  • +
  • +

    +Very Special Thanks to major contributers to the AVR toolset: Denis Chertykov, + Marek Michalkiewicz, Theodore (Ted) A. Roth, Joerg Wunsch, Michael Stumpf, + Reiner Patommel, Brian S. Dean, Scott Finneran, David Gay, Jason Kyle, + Bjoern Haase, Anatoly Sokolov, Dmitry Xmelkov. +

    +
  • +
  • +

    +Thanks to Brian Dessent and Dave Murphy (wintermute) for help in getting + the toolchain to work on Windows Vista. Thanks to Dave Murphy for the patch + for Insight. +

    +
  • +
  • +

    +Very Special Thanks to Bjoern Haase for taking the time and effort to put + together the patches to add support for the ATmega256x devices and for the + last minute phone call with Joerg to resolve the last problem! +

    +
  • +
  • +

    +Very Special Thanks to Colin O'Flynn for writing a tutorial on how to install + and configure WinAVR, writing a tutorial on how to use Insight, for testing + WinAVR, all around assistance, and helping on avrdude. +

    +
  • +
  • +

    +Very Special Thanks to Torleif Sandnes for all his help in getting WinAVR + to work in AVR Studio in all its various ways. +

    +
  • +
  • +

    +Thanks to SourceForge for hosting the WinAVR project. +

    +
  • +
  • +

    +Very Special Thanks to Simon Steele for permission to include Programmers + Notepad in WinAVR. Programmer's Notepad is written and built by Simon Steele. +

    +
  • +
  • +

    +Native Win32 Unix programs from: +

    +
    +
  • +
  • +

    +Tofrodos 1.6 is written and built by Chistopher Heng +

    +
  • +
  • +

    +Thanks to the following people for additional material for the + Makefile Template: Tim Henigan, Peter Fleury, Joerg Wunsch, Reiner Patommel, + Sander Pool, Frederik Rouleau, Markus Pfaff, and Carlos Lamas. +

    +
  • +
  • +

    +Special Thanks to Markus Assfalg for all his input in doing AVR COFF + pre-alpha tests and to Svenn-Ivar Svendsen from Atmel Norway, who + willingly answered questions regarding Atmel's COFF specs. +

    +
  • +
  • +

    +Very Special Thanks to Torleif Sandness of Atmel, the principal developer of + Atmel's ELF parser for AVR Studio, for really pioneering that area. +

    +
  • +
  • +

    +Thanks to members of the AVR COFF Alpha Testing team, which include: + Wallace White, Markus Assfalg, Volkmar Dierkes, Marc Wetzel, Andrew Ghali, + Omer Sinan KAYA, Eric Weddington. +

    +
  • +
  • +

    +Thanks to Atmel and to Advanced Micro Tools (AMTools), makers of + the VMLAB debugger tool, for assistance in the endeavour of writing + the AVR COFF patch. +

    +
  • +
  • +

    +Special thanks to Nick Moore for designing the WinAVR logos! +

    +
  • +
  • +

    +Special thanks to Brian Brill for helping + to move around some large files for the first release; to Ted Roth + for hosting the first WinAVR release on the avr-libc web site. +

    +
  • +
  • +

    +Very Special Thanks to Ted Roth and Joerg Wunsch for putting up with me + when I was starting out. +

    +
  • +
  • +

    +And a Very Special Thank You to Atmel Corporation. +

    +
  • +
+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/WinAVR-user-manual.txt b/arduino-0018-windows/hardware/tools/avr/WinAVR-user-manual.txt new file mode 100644 index 0000000..966a773 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/WinAVR-user-manual.txt @@ -0,0 +1,1314 @@ +WinAVR User Manual - 20081205 +============================= +Eric B. Weddington + + +WinAVR is a suite of executable, open source software +development tools for the Atmel AVR series of RISC microprocessors hosted on +the Windows platform. It includes the GNU GCC compiler for C and C++. + + +1.0 What's New +-------------- +Below is just a sample of what's new. + +- New version of GNU Binutils: 2.19 + +- New version of GCC: 4.3.2 + +- New version of AVR-LibC: 1.6.4 + +- New version of Programmers Notepad: 2.0.8.718 + +- New devices supported: + * ATxmega64A3 + * ATxmega128A3 + * ATxmega256A3 + * ATxmega256A3B + * ATmega32U6 + +- Various bugs fixed. + + +2.0 WinAVR Installation +----------------------- +This section describes various information and notes about the installation of +WinAVR. + + +2.1 Manifest +~~~~~~~~~~~~ + 1. GNU Binutils 2.19 + + Binary utilities for AVR target (including assembler, linker, etc.). + + 2. GNU Compiler Collection (GCC) 4.3.2 + + C language and C++ language compiler for AVR target. There are + caveats for using the C++ compiler. See the installed avr-libc + User Manual in the \doc directory. + + 3. avr-libc 1.6.4 + + C Standard Library for AVR. + + 4. AVR-Ada 0.5.2 + + Run Time System for the Ada compiler. + + (Removed temporarily) + + 5. AVRDUDE 5.5 + + avrdude is an open source programmer software that is user extensible. + + 6. GNU Debugger (GDB) / Insight 6.8 + + GDB is a command-line debugger. Insight is GDB with a GUI! + + 7. AVaRICE 2.7 + + avarice is a program for interfacing the Atmel JTAG ICE to GDB and users + can debug their AVR. Use it in conjunction with GDB. + + 8. SimulAVR 0.1.2.5 + + simulavr is used in conjunction with GDB to provide AVR simulation. + + 9. SRecord 1.38 + + SRecord is a collection of powerful tools for manipulating EPROM load files. + It reads and writes numerous EPROM file formats, and can perform many + different manipulations. + +10. MFile + + An automatic makefile generator for AVR GCC. + +11. Programmers Notepad 2.0.8.718 + + Programming editor and IDE. This editor includes the Scintilla editor + component. + +12. LibUSB 0.1.12.1 and device drivers + + This is a USB library that is linked into AVRDUDE and AVaRICE to allow them + to connect to the Atmel JTAG ICE mkII and the Atmel AVRISP mkII. Drivers + for these devices are also included. + +13. Cygwin DLLs + + Certain DLLs from the Cygwin project are required for specific included + packages. See the Build Notes section for which packages require which DLL. + + NOTE: Not all executables require these Cygwin DLLs. + +14. Many native Win32 GNU programs and utilities including make and bash. + +15. Tofrodos 1.6 + + A command-line text file line-ending convertor. + +16. A Makefile Template for you to use in your projects. + +17. Documentation for the various projects. + +18. Source code patches used to build the various projects. + + +2.2 Layout +~~~~~~~~~~ +Listed below are some directories you might want to know about. + +`` = The directory where you installed WinAVR. + +*`\bin`*:: + The AVR software development programs. This directory should be in your + `PATH` environment variable. This includes: + + - GNU Binutils + - GCC + - avrdude + - GNU Debugger (GDB) + - Insight + - AVaRICE + - SimulAVR + - SRecord + - Various required DLLs + + +*`\utils\bin`*:: + A collection of Unix programs built for the Windows + platform. The programs make and sh (bash) reside here. This directory + should be in your PATH environment variable. + +*`\avr\lib`*:: + avr-libc libraries, startup files, linker scripts, + and stuff. + +*`\avr\include`*:: + avr-libc header files. This is where, for + example, #include comes from. + +*`\avr\include\avr`*:: + avr-libc header files specific to the AVR + microprocessor. This is where, for example, #include comes + from. + +*`\lib`*:: + GCC libraries, other libraries,headers and stuff. + +*`\libexec`*:: + GCC program components + +*`\doc`*:: + Various documentation. Before asking, RTFM! :-) + +*`\doc\avr-libc\examples`*:: + Example projects with source code. Have fun! + +*`\sample`*:: + Sample makefile (see below). Batch files to use in + compiling from AVR Studio 3.x (see below). + +*`\pn`*:: + Programmers Notepad + +*`\mfile`*:: + MFile + +*`\source`*:: + Documentation on where to find the source code for the + various projects and source code patches that were used to build the tools. + +*`\utils\bin`*:: + Utility programs, mainly from Unix-land that are used in building the + software, such as the shell (sh.exe), make.exe, and other programs called + from a Makefile. + +*`\utils\libusb\bin`*:: + LibUSB programs and drivers. + + +2.3 `PATH` Environment Variable +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +There are two directories in WinAVR that contain executable programs. +If `` is your install directory then these two directories are: + +`\bin` + +`\utils\bin` + +The `\bin` directory contains the software development toolset +proper. This includes GNU binutils, GCC, and other programs. + +The `\utils\bin` contains many miscellaneous Unix or GNU programs +that are built for Windows. This includes sh (bash) and make among a host of +other things. + +For your operating system to easily locate these directories, they must be put +at the *beginning* of the `PATH` environment variable. WinAVR can do this +automatically upon installation, if you selected this option. The reason for +putting these directories at the beginning of the `PATH` environment variable +is for the correct make program to be called. There have been reports from +users that have Borland tools installed and the Borland make program is started +rather than GNU make correctly started. + +These programs are put into two seperate directories in case you want to use +a different set of utility programs than the set that comes with WinAVR. + +If you do not wish to use the utilities that comes with WinAVR, remove the +`\utils\bin` directory from your PATH environment variable. + +For Windows 95 and 98 users, see the autoexec.bat file in the root drive +where your OS is installed. This is usually in C:\. + +For all other Windows users, the WinAVR installer modifies this registry key: +`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path` + +IMPORTANT: On Windows NT/2K/XP you must have Administrator priviledges for +the installer to automatically put these directories in your `PATH` environment +variable. + + +2.4 Registry Keys +~~~~~~~~~~~~~~~~~ + +WinAVR installs a minimal amount of registry keys. These keys are installed +to inform of the installation path, the uninstaller, and for GCC to find +other parts of the compiler as needed. Below are the specific keys that are +installed. + +* Installation Location:: + This registry key will be added to provide the location of the WinAVR + installation: + + `HKEY_LOCAL_MACHINE\SOFTWARE\WinAVR\{VERSION}` + + with {VERSION} being replaced by the version number of WinAVR. Formerly, + the key above without {VERSION} was equal to the install location. + +* GCC Component Paths:: + There are some keys that are installed that are used to help GCC find installed component programs: + + `HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\GCC` + + `HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\BINUTILS` + + `HKEY_LOCAL_MACHINE\Software\Free Software Foundation\WinAVR-{VERSION}\G++` + + with {VERSION} being replaced by the version number of WinAVR. + Each of these keys points to the WinAVR install location for that version + of WinAVR. + +* PATH Environment Variable:: + The registry key: + + `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path` + + may be modified (if selected at installation time) to add two directories to the + PATH environment variable. + +* Uninstaller:: + There are several registry keys written under: + + `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\WinAVR-{VERSION}` + + with {VERSION} being replaced by the version number of WinAVR. + These registry keys are used to register the uninstaller with Windows. + + +2.5 LibUSB-Win32 +~~~~~~~~~~~~~~~~ + +LibUSB-Win32 is a USB library that is linked into AVRDUDE and AVaRICE to allow +them to connect to the Atmel JTAG ICE mkII and the Atmel AVRISP mkII. Drivers +for these devices are also included. LibUSB is installed under: + +`\utils\libusb\bin` + +The drivers for the JTAG ICE mkII and the AVRISP mkII are also located in the +above directory. + +To install the LibUSB-Win32 drivers (when AVR Studio is not installed): +- Plug in your Atmel device (JTAG ICE mkII or AVRISP mkII). +- When Windows asks to locate drivers for this device, select "Install from +a list or specific location". Press Next. +- Uncheck the checkbox, "Search removable media". +- Check the checkbox "Include this location in the search" and select the +location of the drivers in the directory specified above. Press Next. +The driver will then be installed. + +AVR Studio can install and use the USB drivers from Jungo (which is included as +part of the AVR Studio installation). However, the Jungo drivers and the +LibUSB-Win32 drivers are mutually exclusive; if one set is installed the other +set will not work. + +You can uninstall the driver by plugging in the device (and making sure it is +powered on), use the Device Manager to find and select the device (under Jungo +or LibUSB-Win32, depending on which driver is installed), right click and select +"Uninstall". Then, install the other driver according to the correct procedures. + +LibUSB also has a "filter" driver that is available, however, using this is +not recommended by the LibUSB author. + + +3.0 Toolset Background +---------------------- + +WinAVR is a collection of executable software development tools for the +Atmel AVR processor hosted on Windows. + +These software development tools include: + +- Compilers +- Assembler +- Linker +- Librarian +- File converter +- Other file utilities +- C Library +- Programmer software +- Debugger +- In-Circuit Emulator software +- Editor / IDE +- Many support utilities + + +3.1 The Toolset and Open Source +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Each of the tools included in WinAVR is Open Source and/or Free Software. Each +tool has it's own project, usually hosted on +http://sourceforge.net/[SourceForge] or http://savannah.gnu.org/[Savannah], +with their own project maintainers and developers who all volunteer their time +and energy to creating these tools. Look in the Links section below to find out +the websites of each of these projects. + +Especially note many of these programs come from the Unix and Linux +platforms. These programs have been ported to the Windows platform but +generally behave for a Unix-like environment. If you are not used to a +Unix-like environment it can possibly be frustrating. Read as much +documentation as you can. Look at examples. Search the Internet. Many links +are also provided in this manual. + +Also remember that this software is updated and improved continually by many +people who volunteer their precious time to provide some of the best software +for absolutely no cost or obligation to you. Volunteers are always welcome in +furthering any of these projects! + + +3.2 Compiler +~~~~~~~~~~~~ +The compiler in WinAVR is the GNU Compiler Collection, or +http://gcc.gnu.org/[GCC]. This compiler is incredibly flexible and can be +hosted on many platforms, it can target many different different processors / +operating systems (back-ends), and can be configured for multiple different +languages (front-ends). + +The GCC included in WinAVR is targeted for the AVR processor, is built to +execute on the Windows platform, and is configured to compile C, or C++. + +CAUTION: There are caveats on using C++. See the avr-libc FAQ. + +Because this GCC is targeted for the AVR, the main executable that is +created is prefixed with the target name: `avr-gcc.exe`. It is also referred to +as AVR GCC. + +`avr-gcc` is just a "driver" program only. The compiler itself is called +`cc1.exe` for C, or `cc1plus.exe` for C++. Also, the preprocessor `cpp.exe` +will usually automatically be prepended with the target name: `avr-cpp.exe`. +The actual set of component programs called is usually derived from the suffix +of each source code file being processed. + +GCC compiles a high-level computer language into assembly, and that is all. It +cannot work alone. GCC is coupled with another project, GNU Binutils, which +provides the assembler, linker, librarian and more. Since GCC is just a "driver" +program, it can automatically call the assembler and linker directly to build +the final program. + + +3.3 Assembler, Linker, Librarian and More +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +http://sources.redhat.com/binutils/[GNU Binutils] is a collection of binary +utilities. This also includes the assembler, as. Sometimes you will see it +referenced as GNU as or gas. Binutils includes the linker, ld; the librarian +or archiver, ar. There are many other programs included that provide various +functionality. + +Note that while the assembler uses the same mnemonics as proposed by +Atmel, the "glue" (pseudo-ops, operators, expression syntax) is derived from +the common assembler syntax used in Unix assemblers, so it is not directly +compatible to Atmel assembler source files. + +Binutils is configured for the AVR target and each of the programs is prefixed +with the target name. So you have programs such as: + +`avr-as`:: + The Assembler. +`avr-ld`:: + The Linker. +`avr-ar`:: + Create, modify, and extract from archives (libraries). +`avr-ranlib`:: + Generate index to archive (library) contents. +`avr-objcopy`:: + Copy and translate object files. +`avr-objdump`:: + Display information from object files including disassembly. +`avr-size`:: + List section sizes and total size. +`avr-nm`:: + List symbols from object files. +`avr-strings`:: + List printable strings from files. +`avr-strip`:: + Discard symbols. +`avr-readelf`:: + Display the contents of ELF format files. +`avr-addr2line`:: + Convert addresses to file and line. +`avr-c++filt`:: + Filter to demangle encoded C++ symbols. + +See the binutils user manual for more information on what each program can do. + + +3.4 C Library +~~~~~~~~~~~~~ +http://www.nongnu.org/avr-libc/[avr-libc] is the Standard C Library for +AVR GCC. It contains many of the standard C routines, and many non-standard +routines that are specific and useful for the AVR processor. + +NOTE: The actual library is currently split into two main parts, libc.a and +libm.a, where the latter contains mathematical functions (everything mentioned +in , and a bit more). Thus it is a good idea to always include the +`-lm` linker option. The WinAVR Makefile Template automatically includes the +`-lm` linker option. Also, there are additional libraries which allow a +customization of the printf and scanf function families. + +avr-libc also contains the most documentation on how to use (and build) the +entire toolset, including code examples. The avr-libc user manual also +contains the FAQ on using the toolset. + + +3.5 Making Your Software +~~~~~~~~~~~~~~~~~~~~~~~~ +There is one program that brings all of this together. This program is +`GNU make`. The `make` program reads and interprets a makefile. A makefile is a +text file that you write that lists and controls how something is made. It is +most often used to control how software is made. + +Each of these programs are Command Line Interface (CLI) tools. They are +controlled by parameters or switches that are added to the command line. Or, +in the case of make, by text files that are written and used as input. + +Most commercial software development toolsets have an Integrated +Development Environment (IDE). This consists of a graphical user-interface +(GUI) that contains a programming editor and graphical front-ends to +compiler, assembler, linker, standard C library, and librarian programs. These +front-ends consist of dialog boxes which allow you to set build options and a +way of creating a list of files that are in a "project". These graphical +front-ends hide and encapsulate the real command-line compiler, assembler, +linker, and standard library that are in the background of any software +development toolset. + +WinAVR is a collection of open-source, software development tools from various +projects. WinAVR does not have a complete graphical IDE like a commerical +toolset, yet. Because of this, learning to build software under GCC means that +it would be best to learn how to use the `make` program and learn how to write +makefiles. Learn the common flags that are used to control GCC which in turn +can control `gas` and `ld`. You can learn a lot by looking at the Makefile +Template that comes with WinAVR and looking up all the programs and flags in the +included user manuals. + + +3.6 Programming +~~~~~~~~~~~~~~~ +After creating your software, you'll want to program your device. You can do +this by using the program `avrdude` which can interface with various hardware +devices to program your processor. + +`avrdude` is a very flexible package. All the information about AVR processors +and various hardware programmers is stored in a text database. This database +can be modified by any user to add new hardware or to add an AVR processor +if it is not already listed. + + +3.7 Debugging +~~~~~~~~~~~~~ +Debugging encompasses both simulation and emulation. Both are available in +WinAVR. + +The GNU Debugger (`GDB`) is the main package that can be used for general +debugging. `GDB` is a command-line program only. `Insight` is GDB plus a GUI +written in Tcl/Tk. Both `GDB` and `Insight` are configured for the AVR and the +main executables are prefixed with the target name: `avr-gdb`, and +`avr-insight`. There is now also a "text mode" GUI for GDB: `avr-gdbtui`. + +To do emulation with the JTAG ICE, GDB / Insight requires a "helper" program +called `avarice` which is also included. + +To do simulation, GDB / Insight requires a different "helper" program called +`simulavr` which is also included. + +There are also alternatives for simulation. Atmel offers a free package called +`AVR Studio` which can also do simulation. The latest version of `AVR Studio` +is 4.13. Note that `AVR Studio` is currently free to the public, but it is not +Open Source. + +See the section, 5.0 Debugging, Simulating, and Emulating, for detailed +information on debugging. + + + +4.0 Setting Up a Project +------------------------ + +4.1 Where's the GUI / IDE? +~~~~~~~~~~~~~~~~~~~~~~~~~~ +You won't find a typical GUI / IDE like you might be used to with other +commercial cross-compilers, or like native compilers on Windows. Each of the +tools in WinAVR are from their own projects. In this case, an editor or IDE +is just another component in the toolset. And, everybody has their own +favourite they want to use. WinAVR allows flexibility. + +WinAVR comes with an editor / IDE called Programmers Notepad. This is an +Open Source editor with some IDE capabilites. Because the compiler and +associated utilities are all command-line driven, you are free to use +whatever editor / IDE you want to provided it can call command-line +programs. See below for more information on Programmers Notepad. + +There is current work going on to continually improve the IDE capabilities +of Programmers Notepad. Let us know if you're interested in volunteering +to help on these projects. + + +4.2 Programmers Notepad +~~~~~~~~~~~~~~~~~~~~~~~ +http://www.pnotepad.org/[Programmers Notepad (PN)] is an Open Source editor +with some IDE features. Version 2.x is is a complete rewrite of version 1. +Many new features are still being added. + +PN contains the Open Source http://www.scintilla.org/[Scintilla] editor +component as the basis for its editor. + +PN can call any command-line tool and capture it's output. This is ideal for +calling the make utility, which executes your makefile, which in turn calls +the compiler, linker, and other utilities used to build your software. PN will +then capture the output and display it in a window. You can also click on any +GCC warning or error and PN will automatically open the file and go to the +line where the warning or error occurred. + +To set up tools, go to the Tools menu up top, select Options, then select Tools +on the left side menu. The best Scheme to add tools is under +"(None - Global Tools)". After you add your tool, it will appear in the +Main Menu under Tools. + + +4.3 Make, Makefiles, and the Makefile Template +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +make is a program that is widely used to build software. make reads and +executes makefiles, which are descriptions of how to build something. +Makefiles typical do things such as group files together, set lists of +compiler and linker flags, list rules of how to compile source code to +object code, how to link object files, how to convert files from one +type to another, and many other things. + +When you set up your project, add a makefile to control how to build your +software. When you use Programmers Notepad, or other IDE, set it up to +call make and have it execute your project's makefile. + +Three Makefile Templates are included in WinAVR, which provides a lot of +functionality already written for you. There is the standard Makefile Template +(Makefile) that has always been included with WinAVR. And there are two new +Makefile Templates, one to generate a library instead of an application +(Makefile.lib) and another Makefile Template that enables whole program +optimization (Makefile.wpo). You can can copy any of these templates to your +project's directory and easily modify it to fit your project. +These Makefile Templates can be found in the +`\sample` directory. Copy any of these templates and rename them to +`Makefile`. + +WinAVR also includes the http://www.sax.de/~joerg/mfile/[MFile] utility. +MFile is a automatic makefile generator for AVR GCC written in Tcl/Tk and can +run on various platforms including Windows, FreeBSD, Linux, etc. You can +use this utility to help you quickly generate a makefile for your project +based on some simple menu input. MFile for the Windows platform uses the WinAVR +Makefile Template for it's template. + +NOTE: I HIGHLY RECOMMEND THAT YOU BECOME FAMILIAR WITH THE MAKE PROGRAM +AND WRITING MAKEFILES! PLEASE READ THE MAKE USER MANUAL! + +For more information on the make program and writing makefiles, see the make +user manual that is included or see Links below for GNU Manuals Online. + + + + +//////////////////////////////////////////////////////////////////////////////// +Building from AVR Studio 3.x +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +It is not currently recommended that you use AVR Studio 3.x as a build +environment. AVR Studio 3.x is no longer being developed by Atmel. +Programmers Notedpad is better for this. But if you want to, here's how +to do it. + +Included in the \sample directory are 2 batch files that +can be used to make your project from within the AVR Studio software +version 3.x from Atmel. These batch files are only needed if you have +Windows NT / 2000 / XP. For Windows 95 / 98 read on as well. + +Currently there is only 3rd party compiler support with AVR Studio +version 3.x. There is NO 3rd party compiler support with AVR Studio +version 4.x at the time of this writing. AFAIK, you can have both versions +of AVR Studio side-by-side on your computer. + +To make your project from AVR Studio version 3.x: + + 1. Copy gcc.bat and gcc2.bat from the \sample directory to + your project directory. + 2. In AVR Studio, set up a project with 2 targets: all, and clean. CAUTION! + When you create a target, in the Add New Target dialog, type in the name + of the target, and you MUST select an item from the "Copy Settings From" + drop-down list. If you do not select something from this list, AVR Studio + has been known to crash. Selecting the "Debug" item on this list is fine. + 3. With the all target selected, go to menu Project > Settings. You should + get a dialog box titled Target Options. + 4. The setting "Run 'compile' on each file in Source Files group" should + be unchecked. + 5. The setting "Run linker/build stage tools" should be checked. + 6. In the Run Stage Settings group, under the "If output contains the + following text:" heading, the edit box should have: "Errors: none". + 7. Check the radiobutton "Don't run the code". + 8. In the Command line box, write: gcc.bat all + 9. Press OK. +10. Do the above for the clean target, except for number 7 in the Command + line box, write: gcc.bat clean +11. Save the project. +12. You can delete the targets debug and release. + +In general, the batch files take care of calling the make program and +redirecting the output in a way that AVR Studio can handle. The one parameter +that the batch files accept is a target of your makefile that gets passed to +the make program. + +For Windows 95 / 98, the batch files are unnecessary. AVR Studio can call the +Command line directly. To make your project, follow the directions outlined +above except for number 8 change it to: + +8. In the Command line box, write: make all + +Do the same thing for number 10 above. Instead of writing gcc.bat clean, write +make clean. + +The make program executes according to your makefile. A makefile defines how +your project is built. For more information on the make program and writing +makefiles, see the Links below for GNU Manuals Online or in the +\doc directory. + +To have AVR Studio automatically load COFF files after build: select target, +Menu: Project > Settings, Target Options dialog, Extension of object file to +load, change obj to cof. +//////////////////////////////////////////////////////////////////////////////// + + + +5.0 Debugging, Simulating, and Emulating +---------------------------------------- +NOTE: The term "debugging" is a generic term and can mean either simulation or +emulation below. + +There are several different ways to go about debugging, simulating, and +emulating. Each solution has their own requirements and may involve various +tradeoffs. + +There are open source applications that can be used for simulation and +emulation, and they are included with WinAVR. Use `GDB` or `Insight`, with the +`simulavr` back-end for simulating, or with the `avarice` back-end to emulate +using the Atmel JTAG ICE. + +There is a free application from Atmel that can be used for simulation or +emulation: AVR Studio. The latest version as of this writing is 4.11. AVR Studio +can be downloaded from the Atmel web site. + +There are also a number of commercial simulators, such as VMLab or Proteus VSM. + + +In general, debugging is dependent upon: + +1. The application used to debug. +2. The file format used. +3. The type of debugging information generated in the object code. + +Many times the application that is being used, determines the file format, and +the type of debugging information that needs to be generated. + +This version of the compiler can generate both *DWARF2* and *stabs* debugging +information. + +NOTE: The compiler will currently default to generating DWARF2 debugging info. + +If you are using the WinAVR Makefile Template, or using MFile, there is a line +in the makefile that controls the type of debug information that is generated: +--------------- +DEBUG = dwarf-2 +--------------- + +To generate stabs information change this line to: +------------- +DEBUG = stabs +------------- + +TIP: MFile can change this setting automatically through a menu option. + +This line in the makefile changes the `-g` compiler switch that is sent to GCC. +See the GCC user manual for more information. + +The compiler will build your software and automatically output an ELF file. + + +5.1 GDB/Insight + simulavr or avarice +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +The GNU Debugger (GDB) can be used, with other programs, to simulate or +emulate your AVR program. Insight is GDB with a GUI (written in Tcl/Tk). +Insight also has a console window which provides the traditional +command-line interface to GDB. The terms 'GDB' and 'Insight' will be used +interchangably. + +Use `avarice` with GDB for use with your JTAG In-Circuit Emulator (ICE). + +Use `simulavr` with GDB for simulation. + +See each of the package's documentation for more information on usage. + +.Requirements +File Format: ELF + +Debugging Information: DWARF-2 (preferred) or stabs + +TIP: There is a http://winavr.sourceforge.net/document.html[tutorial on how to use GDB and avarice] +at the WinAVR web site. + +TIP: If you use `avarice`, when you specify a serial port to use with the --jtag +flag, you must specify it in the form of: +---------------- +--jtag /dev/comX +---------------- +where *X* is the COM port number you are using. This is due to the fact that +avarice is linked to the Cygwin DLL, which requires a Unix-type format for +the COM port number. + + +5.2 AVR Studio +~~~~~~~~~~~~~~ +AVR Studio 4.10 and above has a new parser component that can read ELF files +natively. These ELF files must contain DWARF2 debugging information. + +.Requirements (for AVR Studio version 4.10 and greater) +File Format: ELF + +Debugging Information: DWARF-2 + + +5.3 Commercial Simulators +~~~~~~~~~~~~~~~~~~~~~~~~~ +Certain commercial simulators have more requirements to use their products. +Namely, you must compile your software with the `stabs` debugging information, +and you must convert your ELF file to either the *COFF* format or to the +*Atmel Extended COFF* format. + +.Requirements (dependent upon application used) +File Format: COFF / Atmel Extended COFF + +Debugging Information: stabs + +The GNU Binutils program objcopy (avr-objcopy) has been patched where it can +now convert from ELF to either of these formats. Note that the converter is +a beta release. + +The usage of avr-objcopy to convert ELF/stabs debugging +information into AVR COFF debugging information is (long lines wrapped +with backslashes): +--------------------------------------------------- +avr-objcopy \ + --debugging \ + -O $(FORMAT) \ + --change-section-address .data-0x800000 \ + --change-section-address .bss-0x800000 \ + --change-section-address .noinit-0x800000 \ + --change-section-address .eeprom-0x810000 \ + $(filename).elf $(filename).cof +--------------------------------------------------- +where `$(FORMAT)` should either be `coff-avr` (COFF format that matches +the older Atmel AVR COFF documentation, as understood by AVR Studio 3, +early versions of AVR Studio 4, and also by VMLab), or `coff-ext-avr` +(current AVR Extended COFF specification, as understood by AVR +Studio 4.07+; adds long filenames and structure debugging). + +There might be some warnings when you run the above, like +------------------------------------------------------------------------- +Warning: file {standard input} not found in symbol table, ignoring +Warning: ignoring function __vectors() outside any compilation unit +Warning: ignoring function __bad_interrupt() outside any compilation unit +------------------------------------------------------------------------- +Perhaps more of them if your avr-libc has been installed with +debugging symbols (the default WinAVR installation strips debugging +symbols from the installed library files). There should be no other +warning normally. + +NOTE: The avr-objcopy usage describe above is in the Makefile Template that is +included with WinAVR and in the MFile template. You should only have to call +'make coff' to convert to AVR COFF, or call 'make extcoff' to convert to +AVR Extended COFF. + +As Atmel has now moved towards the ELF file format with DWARF-2 debugging +information, the (E)COFF conversion is deprecated. Thus, there is currently no +ongoing development on the COFF converter. There are a few known bugs in it, in +particular it is known that using forward struct references can crash +the converter. Unfortunately, fixing this bug would be close to a +whole rewrite of it. As a workaround, just avoid forward struct references. + +Instead of writing: +-------------------------- +typedef struct foo *foo_p; +struct foo { + foo_p next; + int something; +}; +-------------------------- + +reorder it to: + +-------------------------- +struct foo { + struct foo *next; + int something; +}; +typedef struct foo *foo_p; +-------------------------- + +That strategy is known to work around that particular bug. + + +6.0 Useful Additions +-------------------- + +6.1 Operating Systems +~~~~~~~~~~~~~~~~~~~~~ +While an Operating System, or RTOS, isn't necessary to write software for +the AVR, there may be times when it is desirable. Below, are some links for +free or open source operating systems / kernels for the AVR. Note that this +may not be a complete list. + +http://www.barello.net/avrx/[AvrX]:: + AvrX is a Real-Time Multitasking Kernel. + +http://www.ethernut.de/en/[EtherNut - Nut/OS]:: + Ethernut is an Open Source Hardware and Software Project for building + Embedded Ethernet Devices. It contains Nut/OS which is an intentionally + simple RTOS for the ATmega128, which provides a minimum of services to run + Nut/Net, the TCP/IP stack. + +http://www.freertos.org/[FreeRTOS]:: + FreeRTOS is a portable, open source, mini Real Time Scheduler (or mini + RTOS kernel). + +http://webs.cs.berkeley.edu/tos/[TinyOS]:: + TinyOS is a component-based runtime environment designed to provide + support for deeply embedded systems which require concurrency intensive + operations while constrained by minimal hardware resources. + +http://www.sics.se/~adam/contiki/[Contiki]:: + Contiki is an Internet-enabled operating system and desktop environment + for a number of smallish systems. + +http://www.shift-right.com/xmk/index.html[XMK - eXtreme Minimal Kernel]:: + XMK is a preemptive multitasking scheduler/kernel for 8bit + microcontrollers. Its goal is to provide a bare bones RTOS with a small + enough footprint (RAM+ROM) to run on 8bit microcontrollers. + +http://picoos.sourceforge.net/[pico OS]:: + pico OS is a highly configurable and very fast real time operating system + (RTOS). It targets a wide range of architectures, from very small 8 bit + processors and microcontrollers up to very huge platforms. An AVR port is + available. + +http://usmartx.sourceforge.net/[uSmartX]:: + uSmartX is a non-preemptive, multitasking, priority based RTOS. It features + mechanisms for inter-task communication and basic task and time control + functions. + +http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=725[Super Simple Tasker (SST)]:: + This is an implementation of a lightweight scheduler so called "Super + Simple Tasker" - SST. The idea is taken from the Robert Ward's article - + "Practical Real-Time Techniques" http://www.quantum-leaps.com/resources/Ward03.pdf. + The SST allows to significantly reduce needs for precious RAM and ROM and + still allows to keep a real time characteristic of the scheduler (e.g. + tasks prioritization and preemption). + +http://sourceforge.net/projects/chibios/[ChibiOS/RT]:: + ChibiOS/RT is a compact and fast RTOS designed for embedded applications. + It offers threads, mutexes, semaphores, messages, events, timers, flexible + I/O with timeout capability. + + +6.2 Other +~~~~~~~~~~ +Here are some links to free or open source components that may be useful. + +http://www.sics.se/~adam/uip/[uIP - TCP/IP Stack for Embedded Microcontrollers]:: + uIP is an implementation of the TCP/IP protocol stack intended for small + 8-bit and 16-bit microcontrollers. It provides the necessary protocols for + Internet communication, with a very small code footprint and RAM + requirements - the uIP code size is on the order of a few kilobytes and RAM + usage is on the order of a few hundred bytes. + +http://www.sics.se/~adam/pt/[Protothreads]:: + Protothreads are extremely lightweight stackless threads designed for + severely memory constrained systems such as small embedded systems or + sensor network nodes. Protothreads provide linear code execution for + event-driven systems implemented in C. Protothreads can be used with or + without an underlying operating system. + + +7.0 Finding Help +---------------- +WinAVR is a packaged collection of software devlopment tools built from open +source projects. + +There is a large community of people who use these tools. There are a number +of these people who volunteer their time to help other people with problems +or questions. And then there are other people who also volunteer their time +to contribute to these open source projects. + +The main places to find help is the Documenation and Online Sources. Please +try and find the answer in the documentation first before asking for help +online. + +TIP: If you need to ask for help online, please read this first: +http://catb.org/~esr/faqs/smart-questions.html[How To Ask Questions The Smart Way] + + +7.1 Documentation +~~~~~~~~~~~~~~~~~ +The first and best place to find help is in the documentation! WinAVR includes +the user manuals for many of the software tools that are shipped in the +package. + +The documentation for any particular package may come in different formats +depending upon what is available from that package and available space +in the WinAVR installation. The different documentation formats that you'll +find in WinAVR are: + +1. HTML - Hyper Text Markup Language. Requires a web browser to view. +2. PDF - Portable Document Format. Requires a PDF viewer such as Acrobat. + +Additionally many user manuals can also be found online, especially packages +that are part of the GNU project. You can find links to many of these in the +Links section below. + +For packages that have HTML, and PDF documentation, look in your +`\doc` directory. + +WinAVR installs on your desktop two shortcuts. One is to the HTML +documentation on avr-libc that is installed locally. The other shortcut is +to the GNU Manuals online (which requires Internet connection). + + +7.2 Online Sources +~~~~~~~~~~~~~~~~~~ +I'll say it again: + +Please try and find the answer in the documentation first before asking for +help online. + +TIP: If you need to ask for help online, please read this first: +http://catb.org/~esr/faqs/smart-questions.html[How To Ask Questions The Smart Way] + +Help for the AVR software development toolset (and specifically AVR GCC) can +be found at: + +http://www.avrfreaks.net[AVR Freaks]:: + All AVR, all the time! This site has several forums including a general + AVR Forum and an AVR GCC Forum specifically for discussion of the GCC + compiler for the AVR. They also have an Academy which contains user's + projects. This gives you access to a lot of sample code, libraries, and + various AVR projects. + +http://savannah.nongnu.org/mail/?group=avr[avr-gcc mailing list]:: + The avr-gcc list is intended as a forum for dicussion about the following: + Bugs, Programming technique, Installation and distributions, Hints and + tips, Other avr-gcc related stuff. Note that all of the developers of the + toolset are subscribed to this list! + +http://www.mikrocontroller.net/[Mikrocontroller.net]:: + For native German speakers. They have a forum for the AVR GCC compiler. + + +Help for other projects and tools included in WinAVR can usually be found at +the individual project's web page which usually includes links to their +mailing lists. + +If you need help, do not contact the WinAVR developers personally! Use these +web sites and mailing lists first! + + +8.0 Toolset Bugs +---------------- +You can fill out a relevant tracker on the +http://sourceforge.net/projects/winavr/[WinAVR SourceForge project page], if you +have one of the following: + +- a bug in the packaging +- a bug in the installation +- any suggestions for a new tool to be added +- any suggestions for improvements to the overall package + +IMPORTANT: IF THERE ARE BUGS IN THE SOFTWARE TOOLS THEMSELVES, THE MAINTAINERS +OF THE INDIVIDUAL SOFTWARE PROJECTS SHOULD BE NOTIFIED IN THE APPROPRIATE +MANNER, NOT ME, OR THE WINAVR PROJECT!!!! + +Generally, if you encounter a bug with a library routine or a bug with a +specifc AVR processor or header file, notify the avr-libc project first +(see Links below). They will let you know if the bug is truly in the avr-libc +project, or if it should be passed on to the GCC project. If the bug is in +GCC, go to their web page (see Links below) on how to report bugs to GCC. + +For bugs with Programmer's Notepad 2, see it's SourceForge web site +(see Links) to issue a Bug Tracker, or email it's author (see Credits). + +For bugs with avrdude, see it's Project page (see Links). + +For bugs with simulavr, see it's Project page (see Links). + +For bugs with avarice, see it's Project page (see Links). + +For bugs with GDB, see it's web page (see Links). + +For bugs with Insight, see it's web page (see Links). + +For bugs with SRecord, see it's Home page (see Links). + + +9.0 WinAVR FAQ +-------------- +This FAQ is specific to the WinAVR package and installation. For a programming +issues, see the avr-libc FAQ in the avr-libc documentation included in the +WinAVR package or the +http://www.nongnu.org/avr-libc/user-manual/[avr-libc user manual online]. + + +#1) 'When I run a program, why do I get the error "You have multiple copies of cygwin1.dll on your system."?' + +Certain packages in WinAVR are built with Cygwin and are linked to their +emulation library: cygwin1.dll. If you also have Cygwin installed seperately, +these programs will find the cygwin1.dll that is shipped and included with +WinAVR, and will also find the cygwin1.dll in your Cygwin installation. If +these versions are different, you will get this error. + +WinAVR must ship the cygwin1.dll file to support it's packages, as most people +do not have Cygwin installed on their system and it's not fair to ask people to +install such a huge package as a prerequisite. + +Unfortunately, the http://cygwin.com/faq.html[Cygwin FAQ] says that the only +way around this is to remove other copies of cygwin1.dll. This would mean +either uninstalling Cygwin so the WinAVR programs work, or perhaps renaming +the cygwin1.dll found in the `\bin` directory so the WinAVR programs +will use the cygwin1.dll that is in the Cygwin installation. However, if you do +the latter, note that the version of cygwin1.dll you have in your Cygwin +installation is probably different than the version of cygwin1.dll that was +used to build the WinAVR programs. In this case, use at your own risk. + + +#2) 'I have any of the following warnings when I create a COFF file, what should I do?' +--------------------------------------------------------------------------- +Warning: file {standard input} not found in symbol table, ignoring +Warning: ignoring function __vectors() outside any compilation unit +Warning: ignoring function __bad_interrupt() outside any compilation unit +Discarding local symbol outside any compilation unit: .__do_copy_data_start +Discarding local symbol outside any compilation unit: .__do_copy_data_loop +--------------------------------------------------------------------------- + +Nothing. These warnings can be ignored. + +#3) 'I use WinAVR with AVR Studio. I get an error when avr-objcopy is creating the load file for the EEPROM. It says there are no sections to be copied.' + +avr-objcopy is a part of GNU Binutils. In GNU Binutils 2.17 or later, the objcopy +program was changed to return an error when there are no sections to be copied. +This is different than previous versions of the objcopy program. This is not +really an error, as it is ok if there are no sections to be copied. + +The Makefile has to be aware of this new behaviour and to not accept this as +a real error. Use the WinAVR Makefile Template as the basis of your Makefile, or +use AVR Studio 4.13 (soon to be released, if not already) which has changed how +it generates its internal Makefile on GCC projects to correctly account for this. + + +10.0 WinAVR Project +------------------- + +10.1 Build Notes +~~~~~~~~~~~~~~~~ + +The contained packages are built either in the Cygwin environment, or the +MinGW environment. Some, but not all, packages are dependendent upon one or +more Cygwin DLLs, which are included in WinAVR. + + 1. GNU Binutils: MinGW. + 2. GCC: MinGW. + 3. avr-libc: MinGW. + 4. avrdude: Cygwin. + 5. GDB/Insight: MinGW. + 6. AVaRICE: Cygwin. Requires: cygwin1.dll, + 7. SimulAVR: Cygwin. Requires: cygwin1.dll. + 8. SRecord: MinGW. + +DLL Versions: + +- cygwin1.dll: 1.5.23-2 + +Programmer's Notepad 2 was built by the author, Simon Steele (see Credits). +Tofrodos was built by the author, Christopher Heng (see Credits). + + +10.2 Credits +~~~~~~~~~~~~ + +Thank you to everyone who uses WinAVR! + +- WinAVR software devleopment toolset distribution built by + +Eric B. Weddington + +mailto:arcanum@users.sourceforge.net[email] + +One person cannot do all of this alone. There are many, many people involved +in making this package what it is. I am deeply indebted to those people. Below +is an attempt at a list of credits. Any omissions are my fault and corrections +are solicited. + +- Very Special Thanks to Joerg Wunsch for helping this project in + innummerable ways including writing the AVR COFF patch for binutils; patches + for GCC to help with debugging and binary constants; being the resident guru + on AVR Freaks; writing portions of this manual; reviewing all of my wacky + ideas; building SRecord; getting me in contact with the right people at the + right time ;-) ; spending the time to take me on a beautiful hike near his + home town; and for tolerating me over the years. + I don't know why he does it, but I am eternally grateful. :-) + +- Very Special Thanks to major contributers to the AVR toolset: Denis Chertykov, + Marek Michalkiewicz, Theodore (Ted) A. Roth, Joerg Wunsch, Michael Stumpf, + Reiner Patommel, Brian S. Dean, Scott Finneran, David Gay, Jason Kyle, + Bjoern Haase, Anatoly Sokolov, Dmitry Xmelkov. + +- Thanks to Brian Dessent and Dave Murphy (wintermute) for help in getting + the toolchain to work on Windows Vista. Thanks to Dave Murphy for the patch + for Insight. + +- Very Special Thanks to Bjoern Haase for taking the time and effort to put + together the patches to add support for the ATmega256x devices and for the + last minute phone call with Joerg to resolve the last problem! + +- Very Special Thanks to Colin O'Flynn for writing a tutorial on how to install + and configure WinAVR, writing a tutorial on how to use Insight, for testing + WinAVR, all around assistance, and helping on avrdude. + +- Very Special Thanks to Torleif Sandnes for all his help in getting WinAVR + to work in AVR Studio in all its various ways. + +- Thanks to SourceForge for hosting the WinAVR project. + +- Very Special Thanks to Simon Steele for permission to include Programmers + Notepad in WinAVR. Programmer's Notepad is written and built by Simon Steele. + +- Native Win32 Unix programs from: + * Karl M. Syring + * http://www.morpheus.demon.co.uk/ (bison and flex) + * http://www.mingw.org/[MinGW] + +- Tofrodos 1.6 is written and built by Chistopher Heng + +- Thanks to the following people for additional material for the + Makefile Template: Tim Henigan, Peter Fleury, Joerg Wunsch, Reiner Patommel, + Sander Pool, Frederik Rouleau, Markus Pfaff, and Carlos Lamas. + +- Special Thanks to Markus Assfalg for all his input in doing AVR COFF + pre-alpha tests and to Svenn-Ivar Svendsen from Atmel Norway, who + willingly answered questions regarding Atmel's COFF specs. + +- Very Special Thanks to Torleif Sandness of Atmel, the principal developer of + Atmel's ELF parser for AVR Studio, for really pioneering that area. + +- Thanks to members of the AVR COFF Alpha Testing team, which include: + Wallace White, Markus Assfalg, Volkmar Dierkes, Marc Wetzel, Andrew Ghali, + Omer Sinan KAYA, Eric Weddington. + +- Thanks to Atmel and to Advanced Micro Tools (AMTools), makers of + the VMLAB debugger tool, for assistance in the endeavour of writing + the AVR COFF patch. + +- Special thanks to Nick Moore for designing the WinAVR logos! + +- Special thanks to http://www.tulsawebdev.com[Brian Brill] for helping + to move around some large files for the first release; to Ted Roth + for hosting the first WinAVR release on the avr-libc web site. + +- Very Special Thanks to *Ted Roth* and *Joerg Wunsch* for putting up with me + when I was starting out. + +- And a Very Special Thank You to Atmel Corporation. + + + +11.0 Links +---------- +http://sourceforge.net/projects/winavr[WinAVR Project] + +http://winavr.sourceforge.net/[WinAVR Home Page] + +http://sourceforge.net[SourceForge] + +http://www.avrfreaks.net[AVR Freaks] + +http://savannah.nongnu.org/mail/?group=avr[avr-gcc mailing list] + +http://savannah.nongnu.org/mail/?group=avr[avr-chat mailing list] + +http://www.atmel.com[Atmel] + +http://www.atmel.com/products/avr/[Atmel AVR microcontrollers] + +http://www.atmel.com/dyn/products/tools.asp?family_id=607[Atmel's AVR Tools and Software] + +http://www.atmel.no/beta_ware/[Atmel Norway's AVR Tools Beta Site] + +http://www.gnu.org/[GNU Project] + +http://www.gnu.org/manual/[GNU Manuals Online] + +http://sources.redhat.com/binutils/[GNU Binutils] + +http://www.gnu.org/software/gcc/[GNU Compiler Collection (GCC)] + +http://www.gnu.org/software/gcc/onlinedocs/[GCC Manuals Online] + +http://savannah.nongnu.org/projects/avr-libc/[avr-libc] + +http://savannah.nongnu.org/projects/avrdude/[avrdude] + +http://sourceforge.net/projects/avrdude-gui[avrdude-gui] + +http://savannah.nongnu.org/projects/uisp/[uisp] + +http://sources.redhat.com/gdb/[GNU Debugger (GDB)] + +http://sources.redhat.com/insight/[Insight] + +http://sourceforge.net/projects/avarice[avarice] + +http://savannah.nongnu.org/projects/simulavr/[simulavr] + +http://avr-ada.sourceforge.net/[AVR-Ada] + +http://www.sax.de/~joerg/mfile/[MFile] + +http://www.pnotepad.org/[Programmers Notepad] + +http://www.scintilla.org/[Scintilla] + +http://srecord.sourceforge.net/[SRecord] + +http://www.splint.org/[Splint] + +http://libusb-win32.sourceforge.net/[LibUSB-Win32] + +http://reality.sgiweb.org/davea/dwarf.html[dwarfdump] + +http://www.cs.utah.edu/~regehr/stacktool/[stacktool] + +http://www.barello.net/avrx/[AvrX] + +http://www.ethernut.de/en/[EtherNut - Nut/OS] + +http://www.freertos.org/[FreeRTOS] + +http://webs.cs.berkeley.edu/tos/[TinyOS] + +http://www.sics.se/~adam/contiki/[Contiki] + +http://sourceforge.net/projects/xmk[XMK - eXtreme Minimal Kernel] + +http://picoos.sourceforge.net/[Pico OS] + +http://usmartx.sourceforge.net/[uSmartX] + +http://libtom.org/?page=features&newsitems=5&whatfile=crypt[LibTomCrypt] + +http://www.sics.se/~adam/uip/[uIP - TCP/IP Stack for Embedded Microcontrollers] + +http://www.sics.se/~adam/pt/[Protothreads] + +http://www.thefreecountry.com/[Tofrodos] + +http://www.gnu.org/software/make/[GNU Make] + +http://www.mingw.org/[MinGW] + +http://www.cygwin.com/[Cygwin] + +http://savannah.nongnu.org/projects/freeice[Free ICE] + +http://pymite.python-hosting.com/[Pymite] + +http://sourceforge.net/projects/nanovm[NanoVM] + +http://www.catb.org/~esr/jargon/[Jargon] diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/ar.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/ar.exe new file mode 100644 index 0000000..d9f2c89 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/ar.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/as.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/as.exe new file mode 100644 index 0000000..143b7a8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/as.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/c++.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/c++.exe new file mode 100644 index 0000000..1a19652 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/c++.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/g++.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/g++.exe new file mode 100644 index 0000000..1a19652 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/g++.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/gcc.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/gcc.exe new file mode 100644 index 0000000..ed78fd7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/gcc.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/ld.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/ld.exe new file mode 100644 index 0000000..dd25577 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/ld.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/nm.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/nm.exe new file mode 100644 index 0000000..af6f59a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/nm.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/objcopy.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/objcopy.exe new file mode 100644 index 0000000..fc8d748 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/objcopy.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/objdump.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/objdump.exe new file mode 100644 index 0000000..c0da304 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/objdump.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/ranlib.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/ranlib.exe new file mode 100644 index 0000000..9e1568c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/ranlib.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/bin/strip.exe b/arduino-0018-windows/hardware/tools/avr/avr/bin/strip.exe new file mode 100644 index 0000000..161ab18 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/bin/strip.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/alloca.h b/arduino-0018-windows/hardware/tools/avr/avr/include/alloca.h new file mode 100644 index 0000000..34c889a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/alloca.h @@ -0,0 +1,59 @@ +/* Copyright (c) 2007, Dmitry Xmelkov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: alloca.h,v 1.2 2007/12/18 13:34:15 dmix Exp $ */ + +#ifndef _ALLOCA_H +#define _ALLOCA_H 1 + +#include + +/** \defgroup alloca : Allocate space in the stack */ + +/** \ingroup alloca + \brief Allocate \a __size bytes of space in the stack frame of the caller. + + This temporary space is automatically freed when the function that + called alloca() returns to its caller. Avr-libc defines the alloca() as + a macro, which is translated into the inlined \c __builtin_alloca() + function. The fact that the code is inlined, means that it is impossible + to take the address of this function, or to change its behaviour by + linking with a different library. + + \return alloca() returns a pointer to the beginning of the allocated + space. If the allocation causes stack overflow, program behaviour is + undefined. + + \warning Avoid use alloca() inside the list of arguments of a function + call. + */ +extern void *alloca (size_t __size); + +#define alloca(size) __builtin_alloca (size) + +#endif /* alloca.h */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/assert.h b/arduino-0018-windows/hardware/tools/avr/avr/include/assert.h new file mode 100644 index 0000000..4e7e7e6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/assert.h @@ -0,0 +1,112 @@ +/* Copyright (c) 2005,2007 Joerg Wunsch + All rights reserved. + + Portions of documentation Copyright (c) 1991, 1993 + The Regents of the University of California. + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + $Id: assert.h,v 1.3 2007/01/23 15:32:48 joerg_wunsch Exp $ +*/ + +/** \file */ +/** \defgroup avr_assert : Diagnostics + \code #include \endcode + + This header file defines a debugging aid. + + As there is no standard error output stream available for many + applications using this library, the generation of a printable + error message is not enabled by default. These messages will + only be generated if the application defines the macro + + \code __ASSERT_USE_STDERR \endcode + + before including the \c header file. By default, + only abort() will be called to halt the application. +*/ + +/*@{*/ + +/* + * The ability to include this file (with or without NDEBUG) is a + * feature. + */ + +#undef assert + +#if defined(__DOXYGEN__) +/** + * \def assert + * \param expression Expression to test for. + * + * The assert() macro tests the given expression and if it is false, + * the calling process is terminated. A diagnostic message is written + * to stderr and the function abort() is called, effectively + * terminating the program. + * + * If expression is true, the assert() macro does nothing. + * + * The assert() macro may be removed at compile time by defining + * NDEBUG as a macro (e.g., by using the compiler option -DNDEBUG). + */ +# define assert(expression) + +#else /* !DOXYGEN */ + +# if defined(NDEBUG) +# define assert(e) ((void)0) +# else /* !NDEBUG */ +# if defined(__ASSERT_USE_STDERR) +# define assert(e) ((e) ? (void)0 : \ + __assert(__func__, __FILE__, __LINE__, #e)) +# else /* !__ASSERT_USE_STDERR */ +# define assert(e) ((e) ? (void)0 : abort()) +# endif /* __ASSERT_USE_STDERR */ +# endif /* NDEBUG */ +#endif /* DOXYGEN */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(__DOXYGEN__) + +extern void __assert(const char *__func, const char *__file, + int __lineno, const char *__sexp); + +#endif /* not __DOXYGEN__ */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ +/* EOF */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/boot.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/boot.h new file mode 100644 index 0000000..577fd96 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/boot.h @@ -0,0 +1,677 @@ +/* Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: boot.h,v 1.27.2.3 2008/09/30 13:58:48 arcanum Exp $ */ + +#ifndef _AVR_BOOT_H_ +#define _AVR_BOOT_H_ 1 + +/** \file */ +/** \defgroup avr_boot : Bootloader Support Utilities + \code + #include + #include + \endcode + + The macros in this module provide a C language interface to the + bootloader support functionality of certain AVR processors. These + macros are designed to work with all sizes of flash memory. + + Global interrupts are not automatically disabled for these macros. It + is left up to the programmer to do this. See the code example below. + Also see the processor datasheet for caveats on having global interrupts + enabled during writing of the Flash. + + \note Not all AVR processors provide bootloader support. See your + processor datasheet to see if it provides bootloader support. + + \todo From email with Marek: On smaller devices (all except ATmega64/128), + __SPM_REG is in the I/O space, accessible with the shorter "in" and "out" + instructions - since the boot loader has a limited size, this could be an + important optimization. + + \par API Usage Example + The following code shows typical usage of the boot API. + + \code + #include + #include + #include + + void boot_program_page (uint32_t page, uint8_t *buf) + { + uint16_t i; + uint8_t sreg; + + // Disable interrupts. + + sreg = SREG; + cli(); + + eeprom_busy_wait (); + + boot_page_erase (page); + boot_spm_busy_wait (); // Wait until the memory is erased. + + for (i=0; i +#include +#include +#include + +/* Check for SPM Control Register in processor. */ +#if defined (SPMCSR) +# define __SPM_REG SPMCSR +#elif defined (SPMCR) +# define __SPM_REG SPMCR +#else +# error AVR processor does not provide bootloader support! +#endif + + +/* Check for SPM Enable bit. */ +#if defined(SPMEN) +# define __SPM_ENABLE SPMEN +#elif defined(SELFPRGEN) +# define __SPM_ENABLE SELFPRGEN +#else +# error Cannot find SPM Enable bit definition! +#endif + +/** \ingroup avr_boot + \def BOOTLOADER_SECTION + + Used to declare a function or variable to be placed into a + new section called .bootloader. This section and its contents + can then be relocated to any address (such as the bootloader + NRWW area) at link-time. */ + +#define BOOTLOADER_SECTION __attribute__ ((section (".bootloader"))) + +/* Create common bit definitions. */ +#ifdef ASB +#define __COMMON_ASB ASB +#else +#define __COMMON_ASB RWWSB +#endif + +#ifdef ASRE +#define __COMMON_ASRE ASRE +#else +#define __COMMON_ASRE RWWSRE +#endif + +/* Define the bit positions of the Boot Lock Bits. */ + +#define BLB12 5 +#define BLB11 4 +#define BLB02 3 +#define BLB01 2 + +/** \ingroup avr_boot + \def boot_spm_interrupt_enable() + Enable the SPM interrupt. */ + +#define boot_spm_interrupt_enable() (__SPM_REG |= (uint8_t)_BV(SPMIE)) + +/** \ingroup avr_boot + \def boot_spm_interrupt_disable() + Disable the SPM interrupt. */ + +#define boot_spm_interrupt_disable() (__SPM_REG &= (uint8_t)~_BV(SPMIE)) + +/** \ingroup avr_boot + \def boot_is_spm_interrupt() + Check if the SPM interrupt is enabled. */ + +#define boot_is_spm_interrupt() (__SPM_REG & (uint8_t)_BV(SPMIE)) + +/** \ingroup avr_boot + \def boot_rww_busy() + Check if the RWW section is busy. */ + +#define boot_rww_busy() (__SPM_REG & (uint8_t)_BV(__COMMON_ASB)) + +/** \ingroup avr_boot + \def boot_spm_busy() + Check if the SPM instruction is busy. */ + +#define boot_spm_busy() (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE)) + +/** \ingroup avr_boot + \def boot_spm_busy_wait() + Wait while the SPM instruction is busy. */ + +#define boot_spm_busy_wait() do{}while(boot_spm_busy()) + +#define __BOOT_PAGE_ERASE (_BV(__SPM_ENABLE) | _BV(PGERS)) +#define __BOOT_PAGE_WRITE (_BV(__SPM_ENABLE) | _BV(PGWRT)) +#define __BOOT_PAGE_FILL _BV(__SPM_ENABLE) +#define __BOOT_RWW_ENABLE (_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE)) +#define __BOOT_LOCK_BITS_SET (_BV(__SPM_ENABLE) | _BV(BLBSET)) + +#define __boot_page_fill_normal(address, data) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %3\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "z" ((uint16_t)address), \ + "r" ((uint16_t)data) \ + : "r0" \ + ); \ +})) + +#define __boot_page_fill_alternate(address, data)\ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %3\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "z" ((uint16_t)address), \ + "r" ((uint16_t)data) \ + : "r0" \ + ); \ +})) + +#define __boot_page_fill_extended(address, data) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %4\n\t" \ + "movw r30, %A3\n\t" \ + "sts %1, %C3\n\t" \ + "sts %0, %2\n\t" \ + "spm\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "i" (_SFR_MEM_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "r" ((uint32_t)address), \ + "r" ((uint16_t)data) \ + : "r0", "r30", "r31" \ + ); \ +})) + +#define __boot_page_erase_normal(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_erase_alternate(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_erase_extended(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r30, %A3\n\t" \ + "sts %1, %C3\n\t" \ + "sts %0, %2\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "i" (_SFR_MEM_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "r" ((uint32_t)address) \ + : "r30", "r31" \ + ); \ +})) + +#define __boot_page_write_normal(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_write_alternate(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_write_extended(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r30, %A3\n\t" \ + "sts %1, %C3\n\t" \ + "sts %0, %2\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "i" (_SFR_MEM_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "r" ((uint32_t)address) \ + : "r30", "r31" \ + ); \ +})) + +#define __boot_rww_enable() \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_RWW_ENABLE) \ + ); \ +})) + +#define __boot_rww_enable_alternate() \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_RWW_ENABLE) \ + ); \ +})) + +/* From the mega16/mega128 data sheets (maybe others): + + Bits by SPM To set the Boot Loader Lock bits, write the desired data to + R0, write "X0001001" to SPMCR and execute SPM within four clock cycles + after writing SPMCR. The only accessible Lock bits are the Boot Lock bits + that may prevent the Application and Boot Loader section from any + software update by the MCU. + + If bits 5..2 in R0 are cleared (zero), the corresponding Boot Lock bit + will be programmed if an SPM instruction is executed within four cycles + after BLBSET and SPMEN (or SELFPRGEN) are set in SPMCR. The Z-pointer is + don't care during this operation, but for future compatibility it is + recommended to load the Z-pointer with $0001 (same as used for reading the + Lock bits). For future compatibility It is also recommended to set bits 7, + 6, 1, and 0 in R0 to 1 when writing the Lock bits. When programming the + Lock bits the entire Flash can be read during the operation. */ + +#define __boot_lock_bits_set(lock_bits) \ +(__extension__({ \ + uint8_t value = (uint8_t)(~(lock_bits)); \ + __asm__ __volatile__ \ + ( \ + "ldi r30, 1\n\t" \ + "ldi r31, 0\n\t" \ + "mov r0, %2\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "r" (value) \ + : "r0", "r30", "r31" \ + ); \ +})) + +#define __boot_lock_bits_set_alternate(lock_bits) \ +(__extension__({ \ + uint8_t value = (uint8_t)(~(lock_bits)); \ + __asm__ __volatile__ \ + ( \ + "ldi r30, 1\n\t" \ + "ldi r31, 0\n\t" \ + "mov r0, %2\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "r" (value) \ + : "r0", "r30", "r31" \ + ); \ +})) + +/* + Reading lock and fuse bits: + + Similarly to writing the lock bits above, set BLBSET and SPMEN (or + SELFPRGEN) bits in __SPMREG, and then (within four clock cycles) issue an + LPM instruction. + + Z address: contents: + 0x0000 low fuse bits + 0x0001 lock bits + 0x0002 extended fuse bits + 0x0003 high fuse bits + + Sounds confusing, doesn't it? + + Unlike the macros in pgmspace.h, no need to care for non-enhanced + cores here as these old cores do not provide SPM support anyway. + */ + +/** \ingroup avr_boot + \def GET_LOW_FUSE_BITS + address to read the low fuse bits, using boot_lock_fuse_bits_get + */ +#define GET_LOW_FUSE_BITS (0x0000) +/** \ingroup avr_boot + \def GET_LOCK_BITS + address to read the lock bits, using boot_lock_fuse_bits_get + */ +#define GET_LOCK_BITS (0x0001) +/** \ingroup avr_boot + \def GET_EXTENDED_FUSE_BITS + address to read the extended fuse bits, using boot_lock_fuse_bits_get + */ +#define GET_EXTENDED_FUSE_BITS (0x0002) +/** \ingroup avr_boot + \def GET_HIGH_FUSE_BITS + address to read the high fuse bits, using boot_lock_fuse_bits_get + */ +#define GET_HIGH_FUSE_BITS (0x0003) + +/** \ingroup avr_boot + \def boot_lock_fuse_bits_get(address) + + Read the lock or fuse bits at \c address. + + Parameter \c address can be any of GET_LOW_FUSE_BITS, + GET_LOCK_BITS, GET_EXTENDED_FUSE_BITS, or GET_HIGH_FUSE_BITS. + + \note The lock and fuse bits returned are the physical values, + i.e. a bit returned as 0 means the corresponding fuse or lock bit + is programmed. + */ +#define boot_lock_fuse_bits_get(address) \ +(__extension__({ \ + uint8_t __result; \ + __asm__ __volatile__ \ + ( \ + "ldi r30, %3\n\t" \ + "ldi r31, 0\n\t" \ + "sts %1, %2\n\t" \ + "lpm %0, Z\n\t" \ + : "=r" (__result) \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "M" (address) \ + : "r0", "r30", "r31" \ + ); \ + __result; \ +})) + +/** \ingroup avr_boot + \def boot_signature_byte_get(address) + + Read the Signature Row byte at \c address. For some MCU types, + this function can also retrieve the factory-stored oscillator + calibration bytes. + + Parameter \c address can be 0-0x1f as documented by the datasheet. + \note The values are MCU type dependent. +*/ + +#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(SIGRD)) + +#define boot_signature_byte_get(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint8_t __result; \ + __asm__ __volatile__ \ + ( \ + "sts %1, %2\n\t" \ + "lpm %0, Z" "\n\t" \ + : "=r" (__result) \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t) __BOOT_SIGROW_READ), \ + "z" (__addr16) \ + ); \ + __result; \ +})) + +/** \ingroup avr_boot + \def boot_page_fill(address, data) + + Fill the bootloader temporary page buffer for flash + address with data word. + + \note The address is a byte address. The data is a word. The AVR + writes data to the buffer a word at a time, but addresses the buffer + per byte! So, increment your address by 2 between calls, and send 2 + data bytes in a word format! The LSB of the data is written to the lower + address; the MSB of the data is written to the higher address.*/ + +/** \ingroup avr_boot + \def boot_page_erase(address) + + Erase the flash page that contains address. + + \note address is a byte address in flash, not a word address. */ + +/** \ingroup avr_boot + \def boot_page_write(address) + + Write the bootloader temporary page buffer + to flash page that contains address. + + \note address is a byte address in flash, not a word address. */ + +/** \ingroup avr_boot + \def boot_rww_enable() + + Enable the Read-While-Write memory section. */ + +/** \ingroup avr_boot + \def boot_lock_bits_set(lock_bits) + + Set the bootloader lock bits. + + \param lock_bits A mask of which Boot Loader Lock Bits to set. + + \note In this context, a 'set bit' will be written to a zero value. + Note also that only BLBxx bits can be programmed by this command. + + For example, to disallow the SPM instruction from writing to the Boot + Loader memory section of flash, you would use this macro as such: + + \code + boot_lock_bits_set (_BV (BLB11)); + \endcode + + \note Like any lock bits, the Boot Loader Lock Bits, once set, + cannot be cleared again except by a chip erase which will in turn + also erase the boot loader itself. */ + +/* Normal versions of the macros use 16-bit addresses. + Extended versions of the macros use 32-bit addresses. + Alternate versions of the macros use 16-bit addresses and require special + instruction sequences after LPM. + + FLASHEND is defined in the ioXXXX.h file. + USHRT_MAX is defined in . */ + +#if defined(__AVR_ATmega161__) || defined(__AVR_ATmega163__) \ + || defined(__AVR_ATmega323__) + +/* Alternate: ATmega161/163/323 and 16 bit address */ +#define boot_page_fill(address, data) __boot_page_fill_alternate(address, data) +#define boot_page_erase(address) __boot_page_erase_alternate(address) +#define boot_page_write(address) __boot_page_write_alternate(address) +#define boot_rww_enable() __boot_rww_enable_alternate() +#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_alternate(lock_bits) + +#elif (FLASHEND > USHRT_MAX) + +/* Extended: >16 bit address */ +#define boot_page_fill(address, data) __boot_page_fill_extended(address, data) +#define boot_page_erase(address) __boot_page_erase_extended(address) +#define boot_page_write(address) __boot_page_write_extended(address) +#define boot_rww_enable() __boot_rww_enable() +#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set(lock_bits) + +#else + +/* Normal: 16 bit address */ +#define boot_page_fill(address, data) __boot_page_fill_normal(address, data) +#define boot_page_erase(address) __boot_page_erase_normal(address) +#define boot_page_write(address) __boot_page_write_normal(address) +#define boot_rww_enable() __boot_rww_enable() +#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set(lock_bits) + +#endif + +/** \ingroup avr_boot + + Same as boot_page_fill() except it waits for eeprom and spm operations to + complete before filling the page. */ + +#define boot_page_fill_safe(address, data) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_page_fill(address, data); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_page_erase() except it waits for eeprom and spm operations to + complete before erasing the page. */ + +#define boot_page_erase_safe(address) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_page_erase (address); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_page_write() except it waits for eeprom and spm operations to + complete before writing the page. */ + +#define boot_page_write_safe(address) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_page_write (address); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_rww_enable() except waits for eeprom and spm operations to + complete before enabling the RWW mameory. */ + +#define boot_rww_enable_safe() \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_rww_enable(); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_lock_bits_set() except waits for eeprom and spm operations to + complete before setting the lock bits. */ + +#define boot_lock_bits_set_safe(lock_bits) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_lock_bits_set (lock_bits); \ +} while (0) + +#endif /* _AVR_BOOT_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/builtins.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/builtins.h new file mode 100644 index 0000000..d5c67d5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/builtins.h @@ -0,0 +1,101 @@ +/* Copyright (c) 2008 Anatoly Sokolv + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id:$ */ + +/* + avr/builtins.h - + */ + +#ifndef _AVR_BUILTINS_H_ +#define _AVR_BUILTINS_H_ + +/** \file */ +/** \defgroup avr_builtins : GCC builtins + \code #include \endcode + + This header file declares avr builtins. */ + +/** + \ingroup avr_builtins + + Enables interrupts by setting the global interrupt mask. */ +extern void __builtin_avr_sei(void); + +/** + \ingroup avr_builtins + + Disables all interrupts by clearing the global interrupt mask. */ +extern void __builtin_avr_cli(void); + +/** + \ingroup avr_builtins + + TODO. */ + +extern void __builtin_avr_sleep(void); + +/** + \ingroup avr_builtins + + TODO. */ +extern void __builtin_avr_wdr(void); + +/** + \ingroup avr_builtins + + TODO. */ +extern unsigned char __builtin_avr_swap(unsigned char __b); + +/** + \ingroup avr_builtins + + TODO. */ +extern unsigned int __builtin_avr_fmul(unsigned char __a, unsigned char __b); + +/** + \ingroup avr_builtins + + TODO. */ +extern int __builtin_avr_fmuls(char __a, char __b); + +/** + \ingroup avr_builtins + + TODO. */ +extern int __builtin_avr_fmulsu(char __a, unsigned char __b); + +/** + \ingroup avr_builtins + + TODO. */ +extern void __builtin_avr_delay_cycles(unsigned long __n); + +#endif /* _AVR_BUILTINS_H_ */ \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/common.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/common.h new file mode 100644 index 0000000..8aade16 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/common.h @@ -0,0 +1,293 @@ +/* Copyright (c) 2007 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: common.h,v 1.3.4.3 2008/03/24 17:11:06 arcanum Exp $ */ + + +#ifndef _AVR_COMMON_H +#define _AVR_COMMON_H + +#include + +/* +This purpose of this header is to define registers that have not been +previously defined in the individual device IO header files, and to define +other symbols that are common across AVR device families. + +This file is designed to be included in after the individual +device IO header files, and after + +*/ + +/*------------ Registers Not Previously Defined ------------*/ + +/* +These are registers that are not previously defined in the individual +IO header files, OR they are defined here because they are used in parts of +avr-libc even if a device is not selected but a general architecture has +been selected. +*/ + + +/* +Stack pointer register. + +AVR architecture 1 has no RAM, thus no stack pointer. + +All other architectures do have a stack pointer. Some devices have only +less than 256 bytes of possible RAM locations (128 Bytes of SRAM +and no option for external RAM), thus SPH is officially "reserved" +for them. +*/ +#if __AVR_ARCH__ >= 100 +# ifndef SPL +# define SPL _SFR_MEM8(0x3D) +# endif +# ifndef SPH +# define SPH _SFR_MEM8(0x3E) +# endif +# ifndef SP +# define SP _SFR_MEM16(0x3D) +# endif +#elif __AVR_ARCH__ != 1 +# ifndef SPL +# define SPL _SFR_IO8(0x3D) +# endif +# if XRAMEND < 0x100 && !defined(__COMPILING_AVR_LIBC__) +# ifndef SP +# define SP _SFR_IO8(0x3D) +# endif +# else +# ifndef SP +# define SP _SFR_IO16(0x3D) +# endif +# ifndef SPH +# define SPH _SFR_IO8(0x3E) +# endif +# endif /* XRAMEND < 0x100 && !defined(__COMPILING_AVR_LIBC__) */ +#endif /* __AVR_ARCH__ != 1 */ + + +/* Status Register */ +#ifndef SREG +# if __AVR_ARCH__ >= 100 +# define SREG _SFR_MEM8(0x3F) +# else +# define SREG _SFR_IO8(0x3F) +# endif +#endif + + +/* SREG bit definitions */ +#ifndef SREG_C +# define SREG_C (0) +#endif +#ifndef SREG_Z +# define SREG_Z (1) +#endif +#ifndef SREG_N +# define SREG_N (2) +#endif +#ifndef SREG_V +# define SREG_V (3) +#endif +#ifndef SREG_S +# define SREG_S (4) +#endif +#ifndef SREG_H +# define SREG_H (5) +#endif +#ifndef SREG_T +# define SREG_T (6) +#endif +#ifndef SREG_I +# define SREG_I (7) +#endif + + +#if defined(__COMPILING_AVR_LIBC__) + +/* AVR 6 Architecture */ +# if __AVR_ARCH__ == 6 +# ifndef EIND +# define EIND _SFR_IO8(0X3C) +# endif +/* XMEGA Architectures */ +# elif __AVR_ARCH__ >= 100 +# ifndef EIND +# define EIND _SFR_MEM8(0x3C) +# endif +# endif + +/* +Only few devices come without EEPROM. In order to assemble the +EEPROM library components without defining a specific device, we +keep the EEPROM-related definitions here. +*/ + +/* EEPROM Control Register */ +# ifndef EECR +# define EECR _SFR_IO8(0x1C) +# endif + +/* EEPROM Data Register */ +# ifndef EEDR +# define EEDR _SFR_IO8(0x1D) +# endif + +/* EEPROM Address Register */ +# ifndef EEAR +# define EEAR _SFR_IO16(0x1E) +# endif +# ifndef EEARL +# define EEARL _SFR_IO8(0x1E) +# endif +# ifndef EEARH +# define EEARH _SFR_IO8(0x1F) +# endif + +/* EEPROM Control Register bits */ +# ifndef EERE +# define EERE (0) +# endif +# ifndef EEWE +# define EEWE (1) +# endif +# ifndef EEMWE +# define EEMWE (2) +# endif +# ifndef EERIE +# define EERIE (3) +# endif + +#endif /* __COMPILING_AVR_LIBC__ */ + + + +/*------------ Common Symbols ------------*/ + +/* +Generic definitions for registers that are common across multiple AVR devices +and families. +*/ + +/* Pointer registers definitions */ +#if __AVR_ARCH__ != 1 /* avr1 does not have X and Y pointers */ +# define XL r26 +# define XH r27 +# define YL r28 +# define YH r29 +#endif /* #if __AVR_ARCH__ != 1 */ +#define ZL r30 +#define ZH r31 + + +/* Status Register */ +#if defined(SREG) +# define AVR_STATUS_REG SREG +# if __AVR_ARCH__ >= 100 +# define AVR_STATUS_ADDR _SFR_MEM_ADDR(SREG) +# else +# define AVR_STATUS_ADDR _SFR_IO_ADDR(SREG) +# endif +#endif + +/* Stack Pointer (combined) Register */ +#if defined(SP) +# define AVR_STACK_POINTER_REG SP +# if __AVR_ARCH__ >= 100 +# define AVR_STACK_POINTER_ADDR _SFR_MEM_ADDR(SP) +# else +# define AVR_STACK_POINTER_ADDR _SFR_IO_ADDR(SP) +# endif +#endif + +/* Stack Pointer High Register */ +#if defined(SPH) +# define _HAVE_AVR_STACK_POINTER_HI 1 +# define AVR_STACK_POINTER_HI_REG SPH +# if __AVR_ARCH__ >= 100 +# define AVR_STACK_POINTER_HI_ADDR _SFR_MEM_ADDR(SPH) +# else +# define AVR_STACK_POINTER_HI_ADDR _SFR_IO_ADDR(SPH) +# endif +#endif + +/* Stack Pointer Low Register */ +#if defined(SPL) +# define AVR_STACK_POINTER_LO_REG SPL +# if __AVR_ARCH__ >= 100 +# define AVR_STACK_POINTER_LO_ADDR _SFR_MEM_ADDR(SPL) +# else +# define AVR_STACK_POINTER_LO_ADDR _SFR_IO_ADDR(SPL) +# endif +#endif + +/* RAMPZ Register */ +#if defined(RAMPZ) +# define AVR_RAMPZ_REG RAMPZ +# if __AVR_ARCH__ >= 100 +# define AVR_RAMPZ_ADDR _SFR_MEM_ADDR(RAMPZ) +# else +# define AVR_RAMPZ_ADDR _SFR_IO_ADDR(RAMPZ) +# endif +#endif + +/* Extended Indirect Register */ +#if defined(EIND) +# define AVR_EXTENDED_INDIRECT_REG EIND +# if __AVR_ARCH__ >= 100 +# define AVR_EXTENDED_INDIRECT_ADDR _SFR_MEM_ADDR(EIND) +# else +# define AVR_EXTENDED_INDIRECT_ADDR _SFR_IO_ADDR(EIND) +# endif +#endif + +/*------------ Workaround to old compilers (4.1.2 and earlier) ------------*/ + +#ifndef __AVR_HAVE_MOVW__ +# if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__ +# define __AVR_HAVE_MOVW__ 1 +# endif +#endif + +#ifndef __AVR_HAVE_LPMX__ +# if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__ +# define __AVR_HAVE_LPMX__ 1 +# endif +#endif + +#ifndef __AVR_HAVE_MUL__ +# if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__ +# define __AVR_HAVE_MUL__ 1 +# endif +#endif + +#endif /* _AVR_COMMON_H */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/crc16.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/crc16.h new file mode 100644 index 0000000..3376cdf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/crc16.h @@ -0,0 +1,39 @@ +/* Copyright (c) 2005 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: crc16.h,v 1.10 2005/11/05 22:23:15 joerg_wunsch Exp $ */ + +#ifndef _AVR_CRC16_H_ +#define _AVR_CRC16_H_ + +#warning "This file has been moved to ." +#include + +#endif /* _AVR_CRC16_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/delay.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/delay.h new file mode 100644 index 0000000..7fb40e6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/delay.h @@ -0,0 +1,39 @@ +/* Copyright (c) 2005 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: delay.h,v 1.14 2005/11/05 22:23:15 joerg_wunsch Exp $ */ + +#ifndef _AVR_DELAY_H_ +#define _AVR_DELAY_H_ + +#warning "This file has been moved to ." +#include + +#endif /* _AVR_DELAY_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/eeprom.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/eeprom.h new file mode 100644 index 0000000..d34fb1b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/eeprom.h @@ -0,0 +1,423 @@ +/* Copyright (c) 2002, 2003, 2004, 2007 Marek Michalkiewicz + Copyright (c) 2005, 2006 Bjoern Haase + Copyright (c) 2008 Atmel Corporation + Copyright (c) 2008 Wouter van Gulik + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: eeprom.h,v 1.21.2.6 2008/08/19 22:10:39 arcanum Exp $ */ + +#ifndef _AVR_EEPROM_H_ +#define _AVR_EEPROM_H_ 1 + +#include +#include /* size_t */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef __ATTR_PURE__ +# ifdef __DOXYGEN__ +# define __ATTR_PURE__ +# else +# define __ATTR_PURE__ __attribute__((__pure__)) +# endif +#endif + +#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) +uint16_t __eerd_word (const uint16_t *, uint8_t (*)(const uint8_t *)) + __ATTR_PURE__; +uint32_t __eerd_dword (const uint32_t *, uint8_t (*)(const uint8_t *)) + __ATTR_PURE__; +void __eerd_block (void *, const void *, size_t, uint8_t (*)(const uint8_t *)); + +void __eewr_word (uint16_t *, uint16_t, void (*)(uint8_t *, uint8_t)); +void __eewr_dword (uint32_t *, uint32_t, void (*)(uint8_t *, uint8_t)); +void __eewr_block (void *, const void *, size_t, void (*)(uint8_t *, uint8_t)); +#endif /* (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) */ + +#if !E2END && !defined(__DOXYGEN__) +# ifndef __COMPILING_AVR_LIBC__ +# warning "Device does not have EEPROM available." +# endif + /* Omit below for chips without EEPROM. */ + +#else + +/** \defgroup avr_eeprom : EEPROM handling + \code #include \endcode + + This header file declares the interface to some simple library + routines suitable for handling the data EEPROM contained in the + AVR microcontrollers. The implementation uses a simple polled + mode interface. Applications that require interrupt-controlled + EEPROM access to ensure that no time will be wasted in spinloops + will have to deploy their own implementation. + + \note All of the read/write functions first make sure the EEPROM + is ready to be accessed. Since this may cause long delays if a + write operation is still pending, time-critical applications + should first poll the EEPROM e. g. using eeprom_is_ready() before + attempting any actual I/O. But this functions are not wait until + SELFPRGEN in SPMCSR becomes zero. Do this manually, if your + softwate contains the Flash burning. + + \note As these functions modify IO registers, they are known to be + non-reentrant. If any of these functions are used from both, + standard and interrupt context, the applications must ensure + proper protection (e.g. by disabling interrupts before accessing + them). + + \note All write functions force erase_and_write programming mode. + */ + +/** \def EEMEM + \ingroup avr_eeprom + Attribute expression causing a variable to be allocated within the + .eeprom section. */ +#define EEMEM __attribute__((section(".eeprom"))) + + +/* Register definitions */ + +/* Check for aliases. */ +#if !defined(EEWE) && defined(EEPE) +# define EEWE EEPE +#endif + +#if !defined(EEMWE) && defined(EEMPE) +# define EEMWE EEMPE +#endif + +#if !defined(EECR) && defined(DEECR) +/* AT86RF401 */ +# define EECR DEECR +# define EEAR DEEAR +# define EEARL DEEAR +# define EEDR DEEDR +# define EERE EER +# define EEWE EEL +# define EEMWE EEU +#endif + + +#if !defined(EECR) || !defined(EEDR) || !defined(EEARL) + +# if !defined(__EEPROM_REG_LOCATIONS__) \ + && !defined(EEPROM_REG_LOCATIONS_OVERRIDE) + /* 6-byte string denoting where to find the EEPROM registers in memory + space. Adresses denoted in hex syntax with uppercase letters. Used + by the EEPROM subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. + */ +# error "Unknown EEPROM register(s) location." +# endif + +/* If needed, override the locations defined in the IO headers. */ +# ifdef EEPROM_REG_LOCATIONS_OVERRIDE +# undef __EEPROM_REG_LOCATIONS__ +# define __EEPROM_REG_LOCATIONS__ EEPROM_REG_LOCATIONS_OVERRIDE +# endif + +# define CONCAT1(a, b) CONCAT2(a, b) +# define CONCAT2(a, b) a ## b +# define HEXNR CONCAT1(0x, __EEPROM_REG_LOCATIONS__) + +# undef EECR +# define EECR _SFR_IO8((HEXNR >> 16) & 0xFF) + +# undef EEDR +# define EEDR _SFR_IO8((HEXNR >> 8) & 0xFF) + +# undef EEAR +# define EEAR _SFR_IO8(HEXNR & 0xFF) + +# undef EEARH + +# undef EEARL +# define EEARL EEAR + +#endif + + +/** \def eeprom_is_ready + \ingroup avr_eeprom + \returns 1 if EEPROM is ready for a new read/write operation, 0 if not. + */ +#if defined(__DOXYGEN__) +# define eeprom_is_ready() +#elif defined(DEECR) +# define eeprom_is_ready() bit_is_clear(DEECR, BSY) +#else +# define eeprom_is_ready() bit_is_clear(EECR, EEWE) +#endif + + +/** \def eeprom_busy_wait + \ingroup avr_eeprom + Loops until the eeprom is no longer busy. + \returns Nothing. + */ +#define eeprom_busy_wait() do {} while (!eeprom_is_ready()) + + +/** \ingroup avr_eeprom + Read one byte from EEPROM address \a __p. + */ +__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p) +{ + do {} while (!eeprom_is_ready ()); +#if E2END <= 0xFF + EEARL = (uint8_t)__p; +#else + EEAR = (uint16_t)__p; +#endif + /* Use inline assembly below as some AVRs have problems with accessing + EECR with STS instructions. For example, see errata for ATmega64. + The code below also assumes that EECR and EEDR are in the I/O space. + */ + uint8_t __result; + __asm__ __volatile__ + ( + "/* START EEPROM READ CRITICAL SECTION */ \n\t" + "sbi %1, %2 \n\t" + "in %0, %3 \n\t" + "/* END EEPROM READ CRITICAL SECTION */ \n\t" + : "=r" (__result) + : "i" (_SFR_IO_ADDR(EECR)), + "i" (EERE), + "i" (_SFR_IO_ADDR(EEDR)) + ); + return __result; +} + +/** \ingroup avr_eeprom + Read one 16-bit word (little endian) from EEPROM address \a __p. + */ +__ATTR_PURE__ static __inline__ uint16_t eeprom_read_word (const uint16_t *__p) +{ +#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) + return __eerd_word (__p, eeprom_read_byte); +#else + /* If ATmega256x device, do not call function. */ + union + { + uint16_t word; + struct + { + uint8_t lo; + uint8_t hi; + } byte; + } x; + + x.byte.lo = eeprom_read_byte ((const uint8_t *)__p); + x.byte.hi = eeprom_read_byte ((const uint8_t *)__p + 1); + return x.word; +#endif +} + +/** \ingroup avr_eeprom + Read one 32-bit double word (little endian) from EEPROM address \a __p. + */ +__ATTR_PURE__ static __inline__ +uint32_t eeprom_read_dword (const uint32_t *__p) +{ +#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) + return __eerd_dword (__p, eeprom_read_byte); +#else + /* If ATmega256x device, do not call function. */ + union + { + uint32_t dword; + struct + { + uint8_t byte0; + uint8_t byte1; + uint8_t byte2; + uint8_t byte3; + } byte; + } x; + + x.byte.byte0 = eeprom_read_byte ((const uint8_t *)__p); + x.byte.byte1 = eeprom_read_byte ((const uint8_t *)__p + 1); + x.byte.byte2 = eeprom_read_byte ((const uint8_t *)__p + 2); + x.byte.byte3 = eeprom_read_byte ((const uint8_t *)__p + 3); + return x.dword; +#endif +} + +/** \ingroup avr_eeprom + Read a block of \a __n bytes from EEPROM address \a __src to SRAM + \a __dst. + */ +static __inline__ void +eeprom_read_block (void *__dst, const void *__src, size_t __n) +{ +#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) + __eerd_block (__dst, __src, __n, eeprom_read_byte); +#else + /* If ATmega256x device, do not call function. */ + while (__n--) + { + *(char *)__dst++ = eeprom_read_byte(__src++); + } +#endif +} + +/** \ingroup avr_eeprom + Write a byte \a __value to EEPROM address \a __p. + */ +static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value) +{ + do {} while (!eeprom_is_ready ()); + +#if defined(EEPM0) && defined(EEPM1) + EECR = 0; /* Set programming mode: erase and write. */ +#elif defined(EEPM0) || defined(EEPM1) +# warning "Unknown EECR register, eeprom_write_byte() has become outdated." +#endif + +#if E2END <= 0xFF + EEARL = (unsigned)__p; +#else + EEAR = (unsigned)__p; +#endif + EEDR = __value; + + __asm__ __volatile__ ( + "/* START EEPROM WRITE CRITICAL SECTION */\n\t" + "in r0, %[__sreg] \n\t" + "cli \n\t" + "sbi %[__eecr], %[__eemwe] \n\t" + "sbi %[__eecr], %[__eewe] \n\t" + "out %[__sreg], r0 \n\t" + "/* END EEPROM WRITE CRITICAL SECTION */" + : + : [__eecr] "i" (_SFR_IO_ADDR(EECR)), + [__sreg] "i" (_SFR_IO_ADDR(SREG)), + [__eemwe] "i" (EEMWE), + [__eewe] "i" (EEWE) + : "r0" + ); +} + +/** \ingroup avr_eeprom + Write a word \a __value to EEPROM address \a __p. + */ +static __inline__ void eeprom_write_word (uint16_t *__p, uint16_t __value) +{ +#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) + __eewr_word (__p, __value, eeprom_write_byte); +#else + /* If ATmega256x device, do not call function. */ + union + { + uint16_t word; + struct + { + uint8_t lo; + uint8_t hi; + } byte; + } x; + + x.word = __value; + eeprom_write_byte ((uint8_t *)__p, x.byte.lo); + eeprom_write_byte ((uint8_t *)__p + 1, x.byte.hi); +#endif +} + +/** \ingroup avr_eeprom + Write a 32-bit double word \a __value to EEPROM address \a __p. + */ +static __inline__ void eeprom_write_dword (uint32_t *__p, uint32_t __value) +{ +#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) + __eewr_dword (__p, __value, eeprom_write_byte); +#else + /* If ATmega256x device, do not call function. */ + union + { + uint32_t dword; + struct + { + uint8_t byte0; + uint8_t byte1; + uint8_t byte2; + uint8_t byte3; + } byte; + } x; + + x.dword = __value; + eeprom_write_byte ((uint8_t *)__p, x.byte.byte0); + eeprom_write_byte ((uint8_t *)__p + 1, x.byte.byte1); + eeprom_write_byte ((uint8_t *)__p + 2, x.byte.byte2); + eeprom_write_byte ((uint8_t *)__p + 3, x.byte.byte3); +#endif +} + +/** \ingroup avr_eeprom + Write a block of \a __n bytes to EEPROM address \a __dst from \a __src. + \note The argument order is mismatch with common functions like strcpy(). + */ +static __inline__ void +eeprom_write_block (const void *__src, void *__dst, size_t __n) +{ +#if (! (defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)) ) + __eewr_block (__dst, __src, __n, eeprom_write_byte); +#else + /* If ATmega256x device, do not call function. */ + while (__n--) + eeprom_write_byte (__dst++, *(uint8_t *)__src++); +#endif +} + +/** \name IAR C compatibility defines */ +/*@{*/ + +/** \def _EEPUT + \ingroup avr_eeprom + Write a byte to EEPROM. Compatibility define for IAR C. */ +#define _EEPUT(addr, val) eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val)) + +/** \def _EEGET + \ingroup avr_eeprom + Read a byte from EEPROM. Compatibility define for IAR C. */ +#define _EEGET(var, addr) (var) = eeprom_read_byte ((const uint8_t *)(addr)) + +/*@}*/ + +#endif /* E2END || defined(__DOXYGEN__) */ + +#ifdef __cplusplus +} +#endif + +#endif /* !_AVR_EEPROM_H */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/fuse.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/fuse.h new file mode 100644 index 0000000..a516cea --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/fuse.h @@ -0,0 +1,264 @@ +/* Copyright (c) 2007, Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: fuse.h,v 1.3.2.5 2008/07/18 20:32:14 arcanum Exp $ */ + +/* avr/fuse.h - Fuse API */ + +#ifndef _AVR_FUSE_H_ +#define _AVR_FUSE_H_ 1 + + +/** \file */ +/** \defgroup avr_fuse : Fuse Support + + \par Introduction + + The Fuse API allows a user to specify the fuse settings for the specific + AVR device they are compiling for. These fuse settings will be placed + in a special section in the ELF output file, after linking. + + Programming tools can take advantage of the fuse information embedded in + the ELF file, by extracting this information and determining if the fuses + need to be programmed before programming the Flash and EEPROM memories. + This also allows a single ELF file to contain all the + information needed to program an AVR. + + To use the Fuse API, include the header file, which in turn + automatically includes the individual I/O header file and the + file. These other two files provides everything necessary to set the AVR + fuses. + + \par Fuse API + + Each I/O header file must define the FUSE_MEMORY_SIZE macro which is + defined to the number of fuse bytes that exist in the AVR device. + + A new type, __fuse_t, is defined as a structure. The number of fields in + this structure are determined by the number of fuse bytes in the + FUSE_MEMORY_SIZE macro. + + If FUSE_MEMORY_SIZE == 1, there is only a single field: byte, of type + unsigned char. + + If FUSE_MEMORY_SIZE == 2, there are two fields: low, and high, of type + unsigned char. + + If FUSE_MEMORY_SIZE == 3, there are three fields: low, high, and extended, + of type unsigned char. + + If FUSE_MEMORY_SIZE > 3, there is a single field: byte, which is an array + of unsigned char with the size of the array being FUSE_MEMORY_SIZE. + + A convenience macro, FUSEMEM, is defined as a GCC attribute for a + custom-named section of ".fuse". + + A convenience macro, FUSES, is defined that declares a variable, __fuse, of + type __fuse_t with the attribute defined by FUSEMEM. This variable + allows the end user to easily set the fuse data. + + \note If a device-specific I/O header file has previously defined FUSEMEM, + then FUSEMEM is not redefined. If a device-specific I/O header file has + previously defined FUSES, then FUSES is not redefined. + + Each AVR device I/O header file has a set of defined macros which specify the + actual fuse bits available on that device. The AVR fuses have inverted + values, logical 1 for an unprogrammed (disabled) bit and logical 0 for a + programmed (enabled) bit. The defined macros for each individual fuse + bit represent this in their definition by a bit-wise inversion of a mask. + For example, the FUSE_EESAVE fuse in the ATmega128 is defined as: + \code + #define FUSE_EESAVE ~_BV(3) + \endcode + \note The _BV macro creates a bit mask from a bit number. It is then + inverted to represent logical values for a fuse memory byte. + + To combine the fuse bits macros together to represent a whole fuse byte, + use the bitwise AND operator, like so: + \code + (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN) + \endcode + + Each device I/O header file also defines macros that provide default values + for each fuse byte that is available. LFUSE_DEFAULT is defined for a Low + Fuse byte. HFUSE_DEFAULT is defined for a High Fuse byte. EFUSE_DEFAULT + is defined for an Extended Fuse byte. + + If FUSE_MEMORY_SIZE > 3, then the I/O header file defines macros that + provide default values for each fuse byte like so: + FUSE0_DEFAULT + FUSE1_DEFAULT + FUSE2_DEFAULT + FUSE3_DEFAULT + FUSE4_DEFAULT + .... + + \par API Usage Example + + Putting all of this together is easy. Using C99's designated initializers: + + \code + #include + + FUSES = + { + .low = LFUSE_DEFAULT, + .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), + .extended = EFUSE_DEFAULT, + }; + + int main(void) + { + return 0; + } + \endcode + + Or, using the variable directly instead of the FUSES macro, + + \code + #include + + __fuse_t __fuse __attribute__((section (".fuse"))) = + { + .low = LFUSE_DEFAULT, + .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), + .extended = EFUSE_DEFAULT, + }; + + int main(void) + { + return 0; + } + \endcode + + If you are compiling in C++, you cannot use the designated intializers so + you must do: + + \code + #include + + FUSES = + { + LFUSE_DEFAULT, // .low + (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), // .high + EFUSE_DEFAULT, // .extended + }; + + int main(void) + { + return 0; + } + \endcode + + + However there are a number of caveats that you need to be aware of to + use this API properly. + + Be sure to include to get all of the definitions for the API. + The FUSES macro defines a global variable to store the fuse data. This + variable is assigned to its own linker section. Assign the desired fuse + values immediately in the variable initialization. + + The .fuse section in the ELF file will get its values from the initial + variable assignment ONLY. This means that you can NOT assign values to + this variable in functions and the new values will not be put into the + ELF .fuse section. + + The global variable is declared in the FUSES macro has two leading + underscores, which means that it is reserved for the "implementation", + meaning the library, so it will not conflict with a user-named variable. + + You must initialize ALL fields in the __fuse_t structure. This is because + the fuse bits in all bytes default to a logical 1, meaning unprogrammed. + Normal uninitialized data defaults to all locgial zeros. So it is vital that + all fuse bytes are initialized, even with default data. If they are not, + then the fuse bits may not programmed to the desired settings. + + Be sure to have the -mmcu=device flag in your compile command line and + your linker command line to have the correct device selected and to have + the correct I/O header file included when you include . + + You can print out the contents of the .fuse section in the ELF file by + using this command line: + \code + avr-objdump -s -j .fuse + \endcode + The section contents shows the address on the left, then the data going from + lower address to a higher address, left to right. + +*/ + +#ifndef __ASSEMBLER__ + +#ifndef FUSEMEM +#define FUSEMEM __attribute__((section (".fuse"))) +#endif + +#if FUSE_MEMORY_SIZE > 3 + +typedef struct +{ + unsigned char byte[FUSE_MEMORY_SIZE]; +} __fuse_t; + + +#elif FUSE_MEMORY_SIZE == 3 + +typedef struct +{ + unsigned char low; + unsigned char high; + unsigned char extended; +} __fuse_t; + +#elif FUSE_MEMORY_SIZE == 2 + +typedef struct +{ + unsigned char low; + unsigned char high; +} __fuse_t; + +#elif FUSE_MEMORY_SIZE == 1 + +typedef struct +{ + unsigned char byte; +} __fuse_t; + +#endif + +#ifndef FUSES +#define FUSES __fuse_t __fuse FUSEMEM +#endif + +#endif /* !__ASSEMBLER__ */ + +#endif /* _AVR_FUSE_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/interrupt.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/interrupt.h new file mode 100644 index 0000000..369c1b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/interrupt.h @@ -0,0 +1,344 @@ +/* Copyright (c) 2002,2005,2007 Marek Michalkiewicz + Copyright (c) 2007, Dean Camera + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: interrupt.h,v 1.25.2.1 2008/01/05 06:33:11 dmix Exp $ */ + +#ifndef _AVR_INTERRUPT_H_ +#define _AVR_INTERRUPT_H_ + +#include + +#if !defined(__DOXYGEN__) && !defined(__STRINGIFY) +/* Auxiliary macro for ISR_ALIAS(). */ +#define __STRINGIFY(x) #x +#endif /* !defined(__DOXYGEN__) */ + +/** +\file +\@{ +*/ + + +/** \name Global manipulation of the interrupt flag + + The global interrupt flag is maintained in the I bit of the status + register (SREG). +*/ + +#if defined(__DOXYGEN__) +/** \def sei() + \ingroup avr_interrupts + + \code #include \endcode + + Enables interrupts by setting the global interrupt mask. This function + actually compiles into a single line of assembly, so there is no function + call overhead. */ +#define sei() +#else /* !DOXYGEN */ +# define sei() __asm__ __volatile__ ("sei" ::) +#endif /* DOXYGEN */ + +#if defined(__DOXYGEN__) +/** \def cli() + \ingroup avr_interrupts + + \code #include \endcode + + Disables all interrupts by clearing the global interrupt mask. This function + actually compiles into a single line of assembly, so there is no function + call overhead. */ +#define cli() +#else /* !DOXYGEN */ +# define cli() __asm__ __volatile__ ("cli" ::) +#endif /* DOXYGEN */ + + +/** \name Macros for writing interrupt handler functions */ + + +#if defined(__DOXYGEN__) +/** \def ISR(vector [, attributes]) + \ingroup avr_interrupts + + \code #include \endcode + + Introduces an interrupt handler function (interrupt service + routine) that runs with global interrupts initially disabled + by default with no attributes specified. + + The attributes are optional and alter the behaviour and resultant + generated code of the interrupt routine. Multiple attributes may + be used for a single function, with a space seperating each + attribute. + + Valid attributes are ISR_BLOCK, ISR_NOBLOCK, ISR_NAKED and + ISR_ALIASOF(vect). + + \c vector must be one of the interrupt vector names that are + valid for the particular MCU type. +*/ +# define ISR(vector, [attributes]) +#else /* real code */ + +#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) +# define __INTR_ATTRS used, externally_visible +#else /* GCC < 4.1 */ +# define __INTR_ATTRS used +#endif + +#ifdef __cplusplus +# define ISR(vector, ...) \ + extern "C" void vector (void) __attribute__ ((signal,__INTR_ATTRS)) __VA_ARGS__; \ + void vector (void) +#else +# define ISR(vector, ...) \ + void vector (void) __attribute__ ((signal,__INTR_ATTRS)) __VA_ARGS__; \ + void vector (void) +#endif + +#endif /* DOXYGEN */ + +#if defined(__DOXYGEN__) +/** \def SIGNAL(vector) + \ingroup avr_interrupts + + \code #include \endcode + + Introduces an interrupt handler function that runs with global interrupts + initially disabled. + + This is the same as the ISR macro without optional attributes. + \deprecated Do not use SIGNAL() in new code. Use ISR() instead. +*/ +# define SIGNAL(vector) +#else /* real code */ + +#ifdef __cplusplus +# define SIGNAL(vector) \ + extern "C" void vector(void) __attribute__ ((signal, __INTR_ATTRS)); \ + void vector (void) +#else +# define SIGNAL(vector) \ + void vector (void) __attribute__ ((signal, __INTR_ATTRS)); \ + void vector (void) +#endif + +#endif /* DOXYGEN */ + +#if defined(__DOXYGEN__) +/** \def EMPTY_INTERRUPT(vector) + \ingroup avr_interrupts + + \code #include \endcode + + Defines an empty interrupt handler function. This will not generate + any prolog or epilog code and will only return from the ISR. Do not + define a function body as this will define it for you. + Example: + \code EMPTY_INTERRUPT(ADC_vect);\endcode */ +# define EMPTY_INTERRUPT(vector) +#else /* real code */ + +#ifdef __cplusplus +# define EMPTY_INTERRUPT(vector) \ + extern "C" void vector(void) __attribute__ ((signal,naked,__INTR_ATTRS)); \ + void vector (void) { __asm__ __volatile__ ("reti" ::); } +#else +# define EMPTY_INTERRUPT(vector) \ + void vector (void) __attribute__ ((signal,naked,__INTR_ATTRS)); \ + void vector (void) { __asm__ __volatile__ ("reti" ::); } +#endif + +#endif /* DOXYGEN */ + +#if defined(__DOXYGEN__) +/** \def ISR_ALIAS(vector, target_vector) + \ingroup avr_interrupts + + \code #include \endcode + + Aliases a given vector to another one in the same manner as the + ISR_ALIASOF attribute for the ISR() macro. Unlike the ISR_ALIASOF + attribute macro however, this is compatible for all versions of + GCC rather than just GCC version 4.2 onwards. + + \note This macro creates a trampoline function for the aliased + macro. This will result in a two cycle penalty for the aliased + vector compared to the ISR the vector is aliased to, due to the + JMP/RJMP opcode used. + + \deprecated + For new code, the use of ISR(..., ISR_ALIASOF(...)) is + recommended. + + Example: + \code + ISR(INT0_vect) + { + PORTB = 42; + } + + ISR_ALIAS(INT1_vect, INT0_vect); + \endcode +*/ +# define ISR_ALIAS(vector, target_vector) +#else /* real code */ + +#ifdef __cplusplus +# if defined(__AVR_MEGA__) && __AVR_MEGA__ +# define ISR_ALIAS(vector, tgt) extern "C" void vector (void) \ + __attribute__((signal, naked, __INTR_ATTRS)); \ + void vector (void) { asm volatile ("jmp " __STRINGIFY(tgt) ::); } +# else /* !__AVR_MEGA */ +# define ISR_ALIAS(vector, tgt) extern "C" void vector (void) \ + __attribute__((signal, naked, __INTR_ATTRS)); \ + void vector (void) { asm volatile ("rjmp " __STRINGIFY(tgt) ::); } +# endif /* __AVR_MEGA__ */ +#else /* !__cplusplus */ +# if defined(__AVR_MEGA__) && __AVR_MEGA__ +# define ISR_ALIAS(vector, tgt) void vector (void) \ + __attribute__((signal, naked, __INTR_ATTRS)); \ + void vector (void) { asm volatile ("jmp " __STRINGIFY(tgt) ::); } +# else /* !__AVR_MEGA */ +# define ISR_ALIAS(vector, tgt) void vector (void) \ + __attribute__((signal, naked, __INTR_ATTRS)); \ + void vector (void) { asm volatile ("rjmp " __STRINGIFY(tgt) ::); } +# endif /* __AVR_MEGA__ */ +#endif /* __cplusplus */ + +#endif /* DOXYGEN */ + +#if defined(__DOXYGEN__) +/** \def reti() + \ingroup avr_interrupts + + \code #include \endcode + + Returns from an interrupt routine, enabling global interrupts. This should + be the last command executed before leaving an ISR defined with the ISR_NAKED + attribute. + + This macro actually compiles into a single line of assembly, so there is + no function call overhead. +*/ +# define reti() +#else /* !DOXYGEN */ +# define reti() __asm__ __volatile__ ("reti" ::) +#endif /* DOXYGEN */ + +#if defined(__DOXYGEN__) +/** \def BADISR_vect + \ingroup avr_interrupts + + \code #include \endcode + + This is a vector which is aliased to __vector_default, the vector + executed when an ISR fires with no accompanying ISR handler. This + may be used along with the ISR() macro to create a catch-all for + undefined but used ISRs for debugging purposes. +*/ +# define BADISR_vect +#else /* !DOXYGEN */ +# define BADISR_vect __vector_default +#endif /* DOXYGEN */ + +/** \name ISR attributes */ + +#if defined(__DOXYGEN__) +/** \def ISR_BLOCK + \ingroup avr_interrupts + + \code# include \endcode + + Identical to an ISR with no attributes specified. Global + interrupts are initially disabled by the AVR hardware when + entering the ISR, without the compiler modifying this state. + + Use this attribute in the attributes parameter of the ISR macro. +*/ +# define ISR_BLOCK + +/** \def ISR_NOBLOCK + \ingroup avr_interrupts + + \code# include \endcode + + ISR runs with global interrupts initially enabled. The interrupt + enable flag is activated by the compiler as early as possible + within the ISR to ensure minimal processing delay for nested + interrupts. + + This may be used to create nested ISRs, however care should be + taken to avoid stack overflows, or to avoid infinitely entering + the ISR for those cases where the AVR hardware does not clear the + respective interrupt flag before entering the ISR. + + Use this attribute in the attributes parameter of the ISR macro. +*/ +# define ISR_NOBLOCK + +/** \def ISR_NAKED + \ingroup avr_interrupts + + \code# include \endcode + + ISR is created with no prologue or epilogue code. The user code is + responsible for preservation of the machine state including the + SREG register, as well as placing a reti() at the end of the + interrupt routine. + + Use this attribute in the attributes parameter of the ISR macro. +*/ +# define ISR_NAKED + +/** \def ISR_ALIASOF(target_vector) + \ingroup avr_interrupts + + \code#include \endcode + + The ISR is linked to another ISR, specified by the vect parameter. + This is compatible with GCC 4.2 and greater only. + + Use this attribute in the attributes parameter of the ISR macro. +*/ +# define ISR_ALIASOF(target_vector) +#else /* !DOXYGEN */ +# define ISR_BLOCK +# define ISR_NOBLOCK __attribute__((interrupt)) +# define ISR_NAKED __attribute__((naked)) +# define ISR_ALIASOF(v) __attribute__((alias(__STRINGIFY(v)))) +#endif /* DOXYGEN */ + +/* \@} */ + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io.h new file mode 100644 index 0000000..e8db96f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io.h @@ -0,0 +1,346 @@ +/* Copyright (c) 2002,2003,2005,2006,2007 Marek Michalkiewicz, Joerg Wunsch + Copyright (c) 2007 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io.h,v 1.52.2.9 2008/11/03 04:13:14 arcanum Exp $ */ + +/** \file */ +/** \defgroup avr_io : AVR device-specific IO definitions + \code #include \endcode + + This header file includes the apropriate IO definitions for the + device that has been specified by the -mmcu= compiler + command-line switch. This is done by diverting to the appropriate + file <avr/ioXXXX.h> which should + never be included directly. Some register names common to all + AVR devices are defined directly within <avr/common.h>, + which is included in <avr/io.h>, + but most of the details come from the respective include file. + + Note that this file always includes the following files: + \code + #include + #include + #include + #include + \endcode + See \ref avr_sfr for more details about that header file. + + Included are definitions of the IO register set and their + respective bit values as specified in the Atmel documentation. + Note that inconsistencies in naming conventions, + so even identical functions sometimes get different names on + different devices. + + Also included are the specific names useable for interrupt + function definitions as documented + \ref avr_signames "here". + + Finally, the following macros are defined: + + - \b RAMEND +
+ The last on-chip RAM address. +
+ - \b XRAMEND +
+ The last possible RAM location that is addressable. This is equal to + RAMEND for devices that do not allow for external RAM. For devices + that allow external RAM, this will larger than RAMEND. +
+ - \b E2END +
+ The last EEPROM address. +
+ - \b FLASHEND +
+ The last byte address in the Flash program space. +
+ - \b SPM_PAGESIZE +
+ For devices with bootloader support, the flash pagesize + (in bytes) to be used for the \c SPM instruction. + - \b E2PAGESIZE +
+ The size of the EEPROM page. + +*/ + +#ifndef _AVR_IO_H_ +#define _AVR_IO_H_ + +#include + +#if defined (__AVR_AT94K__) +# include +#elif defined (__AVR_AT43USB320__) +# include +#elif defined (__AVR_AT43USB355__) +# include +#elif defined (__AVR_AT76C711__) +# include +#elif defined (__AVR_AT86RF401__) +# include +#elif defined (__AVR_AT90PWM1__) +# include +#elif defined (__AVR_AT90PWM2__) +# include +#elif defined (__AVR_AT90PWM2B__) +# include +#elif defined (__AVR_AT90PWM3__) +# include +#elif defined (__AVR_AT90PWM3B__) +# include +#elif defined (__AVR_AT90PWM216__) +# include +#elif defined (__AVR_AT90PWM316__) +# include +#elif defined (__AVR_ATmega32C1__) +# include +#elif defined (__AVR_ATmega32M1__) +# include +#elif defined (__AVR_ATmega32U4__) +# include +#elif defined (__AVR_ATmega32U6__) +# include +#elif defined (__AVR_ATmega128__) +# include +#elif defined (__AVR_ATmega1280__) +# include +#elif defined (__AVR_ATmega1281__) +# include +#elif defined (__AVR_ATmega1284P__) +# include +#elif defined (__AVR_ATmega2560__) +# include +#elif defined (__AVR_ATmega2561__) +# include +#elif defined (__AVR_AT90CAN32__) +# include +#elif defined (__AVR_AT90CAN64__) +# include +#elif defined (__AVR_AT90CAN128__) +# include +#elif defined (__AVR_AT90USB82__) +# include +#elif defined (__AVR_AT90USB162__) +# include +#elif defined (__AVR_AT90USB646__) +# include +#elif defined (__AVR_AT90USB647__) +# include +#elif defined (__AVR_AT90USB1286__) +# include +#elif defined (__AVR_AT90USB1287__) +# include +#elif defined (__AVR_ATmega64__) +# include +#elif defined (__AVR_ATmega640__) +# include +#elif defined (__AVR_ATmega644__) +# include +#elif defined (__AVR_ATmega644P__) +# include +#elif defined (__AVR_ATmega645__) +# include +#elif defined (__AVR_ATmega6450__) +# include +#elif defined (__AVR_ATmega649__) +# include +#elif defined (__AVR_ATmega6490__) +# include +#elif defined (__AVR_ATmega103__) +# include +#elif defined (__AVR_ATmega32__) +# include +#elif defined (__AVR_ATmega323__) +# include +#elif defined (__AVR_ATmega324P__) +# include +#elif defined (__AVR_ATmega325__) +# include +#elif defined (__AVR_ATmega325P__) +# include +#elif defined (__AVR_ATmega3250__) +# include +#elif defined (__AVR_ATmega3250P__) +# include +#elif defined (__AVR_ATmega328P__) +# include +#elif defined (__AVR_ATmega329__) +# include +#elif defined (__AVR_ATmega329P__) +# include +#elif defined (__AVR_ATmega3290__) +# include +#elif defined (__AVR_ATmega3290P__) +# include +#elif defined (__AVR_ATmega32HVB__) +# include +#elif defined (__AVR_ATmega406__) +# include +#elif defined (__AVR_ATmega16__) +# include +#elif defined (__AVR_ATmega161__) +# include +#elif defined (__AVR_ATmega162__) +# include +#elif defined (__AVR_ATmega163__) +# include +#elif defined (__AVR_ATmega164P__) +# include +#elif defined (__AVR_ATmega165__) +# include +#elif defined (__AVR_ATmega165P__) +# include +#elif defined (__AVR_ATmega168__) +# include +#elif defined (__AVR_ATmega168P__) +# include +#elif defined (__AVR_ATmega169__) +# include +#elif defined (__AVR_ATmega169P__) +# include +#elif defined (__AVR_ATmega8HVA__) +# include +#elif defined (__AVR_ATmega16HVA__) +# include +#elif defined (__AVR_ATmega8__) +# include +#elif defined (__AVR_ATmega48__) +# include +#elif defined (__AVR_ATmega48P__) +# include +#elif defined (__AVR_ATmega88__) +# include +#elif defined (__AVR_ATmega88P__) +# include +#elif defined (__AVR_ATmega8515__) +# include +#elif defined (__AVR_ATmega8535__) +# include +#elif defined (__AVR_AT90S8535__) +# include +#elif defined (__AVR_AT90C8534__) +# include +#elif defined (__AVR_AT90S8515__) +# include +#elif defined (__AVR_AT90S4434__) +# include +#elif defined (__AVR_AT90S4433__) +# include +#elif defined (__AVR_AT90S4414__) +# include +#elif defined (__AVR_ATtiny22__) +# include +#elif defined (__AVR_ATtiny26__) +# include +#elif defined (__AVR_AT90S2343__) +# include +#elif defined (__AVR_AT90S2333__) +# include +#elif defined (__AVR_AT90S2323__) +# include +#elif defined (__AVR_AT90S2313__) +# include +#elif defined (__AVR_ATtiny2313__) +# include +#elif defined (__AVR_ATtiny13__) +# include +#elif defined (__AVR_ATtiny13A__) +# include +#elif defined (__AVR_ATtiny25__) +# include +#elif defined (__AVR_ATtiny45__) +# include +#elif defined (__AVR_ATtiny85__) +# include +#elif defined (__AVR_ATtiny24__) +# include +#elif defined (__AVR_ATtiny44__) +# include +#elif defined (__AVR_ATtiny84__) +# include +#elif defined (__AVR_ATtiny261__) +# include +#elif defined (__AVR_ATtiny461__) +# include +#elif defined (__AVR_ATtiny861__) +# include +#elif defined (__AVR_ATtiny43U__) +# include +#elif defined (__AVR_ATtiny48__) +# include +#elif defined (__AVR_ATtiny88__) +# include +#elif defined (__AVR_ATtiny167__) +# include +/* avr1: the following only supported for assembler programs */ +#elif defined (__AVR_ATtiny28__) +# include +#elif defined (__AVR_AT90S1200__) +# include +#elif defined (__AVR_ATtiny15__) +# include +#elif defined (__AVR_ATtiny12__) +# include +#elif defined (__AVR_ATtiny11__) +# include +#elif defined (__AVR_ATxmega64A1__) +# include +#elif defined (__AVR_ATxmega64A3__) +# include +#elif defined (__AVR_ATxmega128A1__) +# include +#elif defined (__AVR_ATxmega128A3__) +# include +#elif defined (__AVR_ATxmega256A3__) +# include +#elif defined (__AVR_ATxmega256A3B__) +# include +#else +# if !defined(__COMPILING_AVR_LIBC__) +# warning "device type not defined" +# endif +#endif + +#include + +#include + +#include + +/* Include fuse.h after individual IO header files. */ +#include + +/* Include lock.h after individual IO header files. */ +#include + +#endif /* _AVR_IO_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io1200.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io1200.h new file mode 100644 index 0000000..42e9a97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io1200.h @@ -0,0 +1,270 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io1200.h,v 1.8.4.3 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io1200.h - definitions for AT90S1200 */ + +#ifndef _AVR_IO1200_H_ +#define _AVR_IO1200_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io1200.h" +#else +# error "Attempt to include more than one file." +#endif + +#ifndef __ASSEMBLER__ +# warning "MCU not supported by the C compiler" +#endif + +/* I/O registers */ + +/* 0x00..0x07 reserved */ + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* 0x09..0x0F reserved */ + +#define PIND _SFR_IO8(0x10) +#define DDRD _SFR_IO8(0x11) +#define PORTD _SFR_IO8(0x12) + +/* 0x13..0x15 reserved */ + +#define PINB _SFR_IO8(0x16) +#define DDRB _SFR_IO8(0x17) +#define PORTB _SFR_IO8(0x18) + +/* 0x19..0x1B reserved */ + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* 0x1F..0x20 reserved */ + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* 0x22..0x31 reserved */ + +#define TCNT0 _SFR_IO8(0x32) +#define TCCR0 _SFR_IO8(0x33) + +/* 0x34 reserved */ + +#define MCUCR _SFR_IO8(0x35) + +/* 0x36..0x37 reserved */ + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK Register */ +#define TIMSK _SFR_IO8(0x39) + +/* 0x3A reserved */ + +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C..0x3E reserved */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(2) +#define SIG_OVERFLOW0 _VECTOR(2) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(3) +#define SIG_COMPARATOR _VECTOR(3) + +#define _VECTORS_SIZE 8 + +/* Bit numbers */ + +/* GIMSK */ +#define INT0 6 + +/* TIMSK */ +#define TOIE0 1 + +/* TIFR */ +#define TOV0 1 + +/* MCUCR */ +#define SE 5 +#define SM 4 +#define ISC01 1 +#define ISC00 0 + +/* TCCR0 */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* WDTCR */ +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* EECR */ +#undef EEMWE + +/* + PB7 = SCK + PB6 = MISO + PB5 = MOSI + PB1 = AIN1 + PB0 = AIN0 + */ + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* PORTD */ +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* ACSR */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIS1 1 +#define ACIS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +#undef ZH + +/* Last memory addresses */ +#define RAMEND 0x1F +#define XRAMEND 0x0 +#define E2END 0x3F +#define E2PAGESIZE 0 +#define FLASHEND 0x3FF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_RCEN (unsigned char)~_BV(0) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x90 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IO1200_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2313.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2313.h new file mode 100644 index 0000000..33d468a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2313.h @@ -0,0 +1,371 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io2313.h,v 1.10.2.3 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io2313.h - definitions for AT90S2313 */ + +#ifndef _AVR_IO2313_H_ +#define _AVR_IO2313_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io2313.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control Register */ +#define UCR _SFR_IO8(0x0A) + +/* UART Status Register */ +#define USR _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* Output Compare Register 1 */ +#define OCR1 _SFR_IO16(0x2A) +#define OCR1L _SFR_IO8(0x2A) +#define OCR1H _SFR_IO8(0x2B) +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C..0x3D SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT1_vect _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) + +/* Timer/Counter1 Compare Match */ +#define TIMER1_COMP1_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF1_vect _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(5) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF0_vect _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(6) + +/* UART, Rx Complete */ +#define UART_RX_vect _VECTOR(7) +#define SIG_UART_RECV _VECTOR(7) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(8) +#define SIG_UART_DATA _VECTOR(8) + +/* UART, Tx Complete */ +#define UART_TX_vect _VECTOR(9) +#define SIG_UART_TRANS _VECTOR(9) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(10) +#define SIG_COMPARATOR _VECTOR(10) + +#define _VECTORS_SIZE 22 + +/* + * The Register Bit names are represented by their bit number (0-7). + */ + +/* General Interrupt MaSK register */ +#define INT1 7 +#define INT0 6 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 + +/* Timer/Counter Interrupt MaSK register */ +#define TOIE1 7 +#define OCIE1A 6 +#define TICIE 3 /* old name */ +#define TICIE1 3 +#define TOIE0 1 + +/* Timer/Counter Interrupt Flag register */ +#define TOV1 7 +#define OCF1A 6 +#define ICF1 3 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* EEPROM Control Register */ +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port D */ +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 0 +#define FLASHEND 0x07FF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_FSTRT (unsigned char)~_BV(0) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IO2313_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2323.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2323.h new file mode 100644 index 0000000..0eacd30 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2323.h @@ -0,0 +1,204 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io2323.h,v 1.8.4.4 2008/10/17 23:27:45 arcanum Exp $ */ + +/* avr/io2323.h - definitions for AT90S2323 */ + +#ifndef _AVR_IO2323_H_ +#define _AVR_IO2323_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io2323.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF0_vect _VECTOR(2) +#define SIG_OVERFLOW0 _VECTOR(2) + +#define _VECTORS_SIZE 6 + +/* + The Register Bit names are represented by their bit number (0-7). + */ + +/* General Interrupt MaSK register */ +#define INT0 6 +#define INTF0 6 + +/* General Interrupt Flag Register */ +#define TOIE0 1 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + PB2 = SCK/T0 + PB1 = MISO/INT0 + PB0 = MOSI + */ + +/* Data Register, Port B */ +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 0 +#define FLASHEND 0x07FF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_FSTRT (unsigned char)~_BV(0) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x02 + + +#endif /* _AVR_IO2323_H_ */ + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x02 + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2333.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2333.h new file mode 100644 index 0000000..f3a33fb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2333.h @@ -0,0 +1,444 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io2333.h,v 1.9 2005/10/30 22:11:23 joerg_wunsch Exp $ */ + +/* avr/io2333.h - definitions for AT90S2333 */ + +#ifndef _AVR_IO2333_H_ +#define _AVR_IO2333_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io2333.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* UART Baud Rate Register high */ +#define UBRRH _SFR_IO8(0x03) + +/* ADC Data register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register */ +#define ADCSR _SFR_IO8(0x06) + +/* ADC MUX */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control/Status Registers */ +#define UCSRB _SFR_IO8(0x0A) +#define UCSRA _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1 _SFR_IO16(0x2A) +#define OCR1L _SFR_IO8(0x2A) +#define OCR1H _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) + +/* Timer/Counter1 Compare Match */ +#define TIMER1_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(5) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(6) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(7) +#define SIG_SPI _VECTOR(7) + +/* UART, Rx Complete */ +#define UART_RX_vect _VECTOR(8) +#define SIG_UART_RECV _VECTOR(8) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(9) +#define SIG_UART_DATA _VECTOR(9) + +/* UART, Tx Complete */ +#define UART_TX_vect _VECTOR(10) +#define SIG_UART_TRANS _VECTOR(10) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(11) +#define SIG_ADC _VECTOR(11) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(12) +#define SIG_EEPROM_READY _VECTOR(12) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(13) +#define SIG_COMPARATOR _VECTOR(13) + +#define _VECTORS_SIZE 28 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* MCU general Status Register */ +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* General Interrupt MaSK register */ +#define INT1 7 +#define INT0 6 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 + +/* Timer/Counter Interrupt MaSK register */ +#define TOIE1 7 +#define OCIE1 6 +#define TICIE1 3 +#define TOIE0 1 + +/* Timer/Counter Interrupt Flag register */ +#define TOV1 7 +#define OCF1 6 +#define ICF1 3 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 1 Control Register */ +#define COM11 7 +#define COM10 6 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define MPCM 0 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define AINBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC MUX */ +#define ACDBG 6 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* ADC Control and Status Register */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* Data Register, Port B */ +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0xDF /*Last On-Chip SRAM location*/ +#define XRAMEND 0xDF +#define E2END 0x7F +#define FLASHEND 0x7FF + +#endif /* _AVR_IO2333_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2343.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2343.h new file mode 100644 index 0000000..7ab6da8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io2343.h @@ -0,0 +1,209 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io2343.h,v 1.9.2.3 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io2343.h - definitions for AT90S2343 */ + +#ifndef _AVR_IO2343_H_ +#define _AVR_IO2343_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io2343.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF0_vect _VECTOR(2) +#define SIG_OVERFLOW0 _VECTOR(2) + +#define _VECTORS_SIZE 6 + +/* + The Register Bit names are represented by their bit number (0-7). + */ + +/* General Interrupt MaSK register */ +#define INT0 6 +#define INTF0 6 + +/* General Interrupt Flag Register */ +#define TOIE0 1 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC01 1 +#define ISC00 0 + +/* MCU Status Register */ +#define PORF 0 +#define EXTRF 1 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + PB3 = CLOCK + PB2 = SCK/T0 + PB1 = MISO/INT0 + PB0 = MOSI + */ + +/* Data Register, Port B */ +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 0 +#define FLASHEND 0x07FF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_RCEN (unsigned char)~_BV(0) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IO2343_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io43u32x.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io43u32x.h new file mode 100644 index 0000000..82211ba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io43u32x.h @@ -0,0 +1,436 @@ +/* Copyright (c) 2003,2005 Keith Gudger + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io43u32x.h,v 1.5 2005/11/10 22:19:07 joerg_wunsch Exp $ */ + +/* avr/io43u32x.h - definitions for AT43USB32x */ + +#ifndef _AVR_IO43U32X_H_ +#define _AVR_IO43U32X_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io43u32x.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control Register */ +#define UCR _SFR_IO8(0x0A) + +/* UART Status Register */ +#define USR _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* Input Pins, Port E */ // new port for 43324/6 +#define PINE _SFR_IO8(0x01) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x02) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x03) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* 0x1C..0x1F reserved */ + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Control Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt Mask register */ +#define GIMSK _SFR_IO8(0x3B) + +/* Interrupt vectors */ + +#define SIG_INTERRUPT0 _VECTOR(1) +#define SIG_INTERRUPT1 _VECTOR(2) +#define SIG_TIMER1_CAPT1 _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) +#define SIG_OUTPUT_COMPARE1B _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(7) +#define SIG_SPI _VECTOR(8) +#define SIG_UART_RECV _VECTOR(9) +#define SIG_UART_DATA _VECTOR(10) +#define SIG_UART_TRANS _VECTOR(11) +#define SIG_USB_INT _VECTOR(12) + +#define _VECTORS_SIZE 52 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* Timer/Counter Interrupt MaSK register */ +#define TICIE1 3 +#define OCIE1A 6 +#define OCIE1B 5 +#define TOIE1 7 +#define TOIE0 1 + +/* Timer/Counter Interrupt Flag Register */ +#define ICF1 3 +#define OCF1A 6 +#define OCF1B 5 +#define TOV1 7 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Data Register, Port E */ +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Data Direction Register, Port E */ +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* Input Pins, Port E */ +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Constants */ +#define RAMEND 0x025F /*Last On-Chip SRAM Location*/ +#define XRAMEND 0x025F +#define E2END 0x0000 + +/* FIXME: should be 0x1FFFF for max 128K (64K*16) external program memory, + but no RAMPZ causes gcrt1.S build to fail, so assume 64K for now... */ +#define FLASHEND 0x0FFFF + +#endif /* _AVR_43USB32X_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io43u35x.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io43u35x.h new file mode 100644 index 0000000..5109cdd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io43u35x.h @@ -0,0 +1,428 @@ +/* Copyright (c) 2003,2005 Keith Gudger + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io43u35x.h,v 1.7 2005/11/10 22:19:07 joerg_wunsch Exp $ */ + +/* avr/io43u35x.h - definitions for AT43USB35x */ + +#ifndef _AVR_IO43U35X_H_ +#define _AVR_IO43U35X_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io43u35x.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x02) +#endif +#define ADCW _SFR_IO16(0x02) +#define ADCL _SFR_IO8(0x02) +#define ADCH _SFR_IO8(0x03) + +/* ADC Control and status register */ +#define ADCSR _SFR_IO8(0x07) + +/* ADC Multiplexer select */ +#define ADMUX _SFR_IO8(0x08) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* Input Pins, Port F */ +#define PINF _SFR_IO8(0x04) + +/* Data Direction Register, Port F */ +#define DDRF _SFR_IO8(0x05) + +/* Data Register, Port F */ +#define PORTF _SFR_IO8(0x06) + +/* Input Pins, Port E */ +#define PINE _SFR_IO8(0x01) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x02) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x03) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* 0x1C..0x1F reserved */ + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Control Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt Mask register */ +#define GIMSK _SFR_IO8(0x3B) + +/* Interrupt vectors */ + +#define SIG_INTERRUPT0 _VECTOR(1) /* suspend/resume */ +#define SIG_INTERRUPT1 _VECTOR(2) +#define SIG_TIMER1_CAPT1 _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) +#define SIG_OUTPUT_COMPARE1B _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(7) +#define SIG_SPI _VECTOR(8) +/* 9, 10: reserved */ +#define SIG_ADC _VECTOR(11) +#define SIG_USB_INT _VECTOR(12) + +#define _VECTORS_SIZE 52 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* Timer/Counter Interrupt MaSK register */ +#define TICIE1 3 +#define OCIE1A 6 +#define OCIE1B 5 +#define TOIE1 7 +#define TOIE0 1 + +/* Timer/Counter Interrupt Flag Register */ +#define ICF1 3 +#define OCF1A 6 +#define OCF1B 5 +#define TOV1 7 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Data Register, Port F */ +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +/* Data Direction Register, Port F */ +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 + +/* Input Pins, Port F */ +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* ADC Multiplexer select */ +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* ADC Control and Status Register */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* Constants */ +#define RAMEND 0x045F /*Last On-Chip SRAM Location*/ +#define XRAMEND 0x045F +#define E2END 0x0000 +#define FLASHEND 0x5FFF + +#endif /* _AVR_43USB355_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4414.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4414.h new file mode 100644 index 0000000..0b19dcb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4414.h @@ -0,0 +1,485 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io4414.h,v 1.8.4.3 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io4414.h - definitions for AT90S4414 */ + +#ifndef _AVR_IO4414_H_ +#define _AVR_IO4414_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io4414.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control Register */ +#define UCR _SFR_IO8(0x0A) + +/* UART Status Register */ +#define USR _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C..0x3D SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) + +/* Timer/Counter1 Compare MatchB */ +#define TIMER1_COMPB_vect _VECTOR(5) +#define SIG_OUTPUT_COMPARE1B _VECTOR(5) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(6) +#define SIG_OVERFLOW1 _VECTOR(6) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(7) +#define SIG_OVERFLOW0 _VECTOR(7) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(8) +#define SIG_SPI _VECTOR(8) + +/* UART, Rx Complete */ +#define UART_RX_vect _VECTOR(9) +#define SIG_UART_RECV _VECTOR(9) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(10) +#define SIG_UART_DATA _VECTOR(10) + +/* UART, Tx Complete */ +#define UART_TX_vect _VECTOR(11) +#define SIG_UART_TRANS _VECTOR(11) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(12) +#define SIG_COMPARATOR _VECTOR(12) + +#define _VECTORS_SIZE 26 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* General Interrupt MaSK register */ +#define INT1 7 +#define INT0 6 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 + +/* Timer/Counter Interrupt MaSK register */ +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +#define TICIE1 3 +#define TOIE0 1 + +/* Timer/Counter Interrupt Flag register */ +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +#define ICF1 3 +#define TOV0 1 + +/* MCU general Control Register */ +#define SRE 7 +#define SRW 6 +#define SE 5 +#define SM 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0x15F /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0xFF +#define E2PAGESIZE 0 +#define FLASHEND 0xFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_SPIEN (unsigned char)~_BV(1) /* Serial Program Downloading Enabled */ +#define FUSE_FSTRT (unsigned char)~_BV(2) /* Short Start-up time selected */ +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IO4414_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4433.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4433.h new file mode 100644 index 0000000..1ed1910 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4433.h @@ -0,0 +1,473 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io4433.h,v 1.9.4.3 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io4433.h - definitions for AT90S4433 */ + +#ifndef _AVR_IO4433_H_ +#define _AVR_IO4433_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io4433.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* UART Baud Rate Register high */ +#define UBRRH _SFR_IO8(0x03) + +/* ADC Data register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register */ +#define ADCSR _SFR_IO8(0x06) + +/* ADC MUX */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control/Status Registers */ +#define UCSRB _SFR_IO8(0x0A) +#define UCSRA _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1 _SFR_IO16(0x2A) +#define OCR1L _SFR_IO8(0x2A) +#define OCR1H _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) + +/* Timer/Counter1 Compare Match */ +#define TIMER1_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(5) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(6) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(7) +#define SIG_SPI _VECTOR(7) + +/* UART, Rx Complete */ +#define UART_RX_vect _VECTOR(8) +#define SIG_UART_RECV _VECTOR(8) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(9) +#define SIG_UART_DATA _VECTOR(9) + +/* UART, Tx Complete */ +#define UART_TX_vect _VECTOR(10) +#define SIG_UART_TRANS _VECTOR(10) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(11) +#define SIG_ADC _VECTOR(11) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(12) +#define SIG_EEPROM_READY _VECTOR(12) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(13) +#define SIG_COMPARATOR _VECTOR(13) + +#define _VECTORS_SIZE 28 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* MCU general Status Register */ +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* General Interrupt MaSK register */ +#define INT1 7 +#define INT0 6 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 + +/* Timer/Counter Interrupt MaSK register */ +#define TOIE1 7 +#define OCIE1 6 +#define TICIE1 3 +#define TOIE0 1 + +/* Timer/Counter Interrupt Flag register */ +#define TOV1 7 +#define OCF1 6 +#define ICF1 3 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 1 Control Register */ +#define COM11 7 +#define COM10 6 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define MPCM 0 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define AINBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC MUX */ +#define ACDBG 6 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* ADC Control and Status Register */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* Data Register, Port B */ +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0xDF /*Last On-Chip SRAM location*/ +#define XRAMEND 0xDF +#define E2END 0xFF +#define E2PAGESIZE 0 +#define FLASHEND 0xFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_BODEN (unsigned char)~_BV(3) +#define FUSE_BODLEVEL (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IO4433_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4434.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4434.h new file mode 100644 index 0000000..d4d541f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io4434.h @@ -0,0 +1,567 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io4434.h,v 1.9.4.2 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io4434.h - definitions for AT90S4434 */ + +#ifndef _AVR_IO4434_H_ +#define _AVR_IO4434_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io4434.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* ADC Data register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register */ +#define ADCSR _SFR_IO8(0x06) + +/* ADC MUX */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control Register */ +#define UCR _SFR_IO8(0x0A) + +/* UART Status Register */ +#define USR _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Asynchronous mode Status Register */ +#define ASSR _SFR_IO8(0x22) + +/* Timer/Counter2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x23) + +/* Timer/Counter 2 */ +#define TCNT2 _SFR_IO8(0x24) + +/* Timer/Counter 2 Control Register */ +#define TCCR2 _SFR_IO8(0x25) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE2 _VECTOR(3) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW2 _VECTOR(4) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(5) +#define SIG_INPUT_CAPTURE1 _VECTOR(5) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE1A _VECTOR(6) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1B _VECTOR(7) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(8) +#define SIG_OVERFLOW1 _VECTOR(8) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW0 _VECTOR(9) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(10) +#define SIG_SPI _VECTOR(10) + +/* UART, RX Complete */ +#define UART_RX_vect _VECTOR(11) +#define SIG_UART_RECV _VECTOR(11) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(12) +#define SIG_UART_DATA _VECTOR(12) + +/* UART, TX Complete */ +#define UART_TX_vect _VECTOR(13) +#define SIG_UART_TRANS _VECTOR(13) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(14) +#define SIG_ADC _VECTOR(14) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(15) +#define SIG_EEPROM_READY _VECTOR(15) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(16) +#define SIG_COMPARATOR _VECTOR(16) + +#define _VECTORS_SIZE 34 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* MCU general Status Register */ +#define EXTRF 1 +#define PORF 0 + +/* General Interrupt MaSK register */ +#define INT1 7 +#define INT0 6 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 + +/* Timer/Counter Interrupt MaSK register */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define TOIE0 0 + +/* Timer/Counter Interrupt Flag register */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define TOV0 0 + +/* MCU general Control Register */ +#define SE 6 +#define SM1 5 +#define SM0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Timer/Counter 2 Control Register */ +#define PWM2 6 +#define COM21 5 +#define COM20 4 +#define CTC2 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* Asynchronous mode Status Register */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC MUX */ +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* ADC Control and Status Register */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0x15F /*Last On-Chip SRAM location*/ +#define XRAMEND 0x15F +#define E2END 0xFF +#define E2PAGESIZE 0 +#define FLASHEND 0xFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_SPIEN ~_BV(1) /* Serial Program Downloading Enabled */ +#define FUSE_FSTRT ~_BV(2) /* Short Start-up time selected */ +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IO4434_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io58u54a.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io58u54a.h new file mode 100644 index 0000000..379df16 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io58u54a.h @@ -0,0 +1,1558 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id$ */ + +/* avr/io58u54a.h - definitions for 58U54A_Albatross */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io58u54a.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_58U54A_Albatross_H_ +#define _AVR_58U54A_Albatross_H_ 1 + + +/* Registers and associated bit numbers. */ + +#define PINA _SFR_IO8(0x000) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x001) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x002) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 +#define PORTA4 4 +#define PORTA5 5 +#define PORTA6 6 +#define PORTA7 7 + +#define PINB _SFR_IO8(0x003) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x004) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x005) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x006) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 + +#define DDRC _SFR_IO8(0x007) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 + +#define PORTC _SFR_IO8(0x008) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 + +#define PIND _SFR_IO8(0x009) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x00A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x00B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINE _SFR_IO8(0x00C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 +#define PINE3 3 +#define PINE4 4 +#define PINE5 5 +#define PINE6 6 +#define PINE7 7 + +#define DDRE _SFR_IO8(0x00D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 +#define DDE3 3 +#define DDE4 4 +#define DDE5 5 +#define DDE6 6 +#define DDE7 7 + +#define PORTE _SFR_IO8(0x00E) +#define PORTE0 0 +#define PORTE1 1 +#define PORTE2 2 +#define PORTE3 3 +#define PORTE4 4 +#define PORTE5 5 +#define PORTE6 6 +#define PORTE7 7 + +#define PINF _SFR_IO8(0x00F) +#define PINF0 0 +#define PINF1 1 +#define PINF2 2 +#define PINF3 3 +#define PINF4 4 +#define PINF5 5 +#define PINF6 6 +#define PINF7 7 + +#define DDRF _SFR_IO8(0x010) +#define DDF0 0 +#define DDF1 1 +#define DDF2 2 +#define DDF3 3 +#define DDF4 4 +#define DDF5 5 +#define DDF6 6 +#define DDF7 7 + +#define PORTF _SFR_IO8(0x011) +#define PORTF0 0 +#define PORTF1 1 +#define PORTF2 2 +#define PORTF3 3 +#define PORTF4 4 +#define PORTF5 5 +#define PORTF6 6 +#define PORTF7 7 + +#define TIFR0 _SFR_IO8(0x015) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x016) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x017) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define TIFR3 _SFR_IO8(0x018) +#define TOV3 0 +#define OCF3A 1 +#define OCF3B 2 +#define ICF3 5 + +#define TIFR4 _SFR_IO8(0x019) +#define TOV4 0 +#define OCF4A 1 +#define OCF4B 2 + +#define PCIFR _SFR_IO8(0x01B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 +#define PCIF3 3 +#define PCIF4 4 +#define PCIF5 5 + +#define GPIOR0 _SFR_IO8(0x01E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define GTCCR _SFR_IO8(0x023) +#define PSRSYNC 0 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x024) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x025) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x026) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x027) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x028) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x02A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x02B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x02C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x02D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x02E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define OUTCLKR _SFR_IO8(0x02F) +#define CLK_O 0 + +#define ACSR _SFR_IO8(0x030) +#define SELANA 0 + +#define OCDR _SFR_IO8(0x031) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 + +#define SMHIGH _SFR_IO8(0x032) +#define ON_SMHIGH 0 +#define SMHIGH_IE 1 +#define SMHIGH_IF 2 + +#define SMCR _SFR_IO8(0x033) +#define SE 0 + +#define MCUSR _SFR_IO8(0x034) +#define PORF 0 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0x035) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define BODSE 5 +#define JTD 7 + +#define POWER _SFR_IO8(0x036) +#define ONOFF 0 +#define WKUPF 1 +#define PORVBATF 2 +#define WKUPSEL 3 + +#define SPMCSR _SFR_IO8(0x037) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define RAMPZ _SFR_IO8(0x03B) +#define RAMPZ0 0 + +#define WDTCSR _SFR_MEM8(0x060) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x061) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR0 _SFR_MEM8(0x064) +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRLCD 4 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define PRR1 _SFR_MEM8(0x065) +#define PRTIM3 0 +#define PRTIM4 1 +#define PRSCI0 2 +#define PRSCI1 3 +#define PRSCI2 4 +#define PRCL 5 +#define PRDSRC 6 + +#define PCICR _SFR_MEM8(0x068) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 +#define PCIE3 3 +#define PCIE4 4 +#define PCIE5 5 + +#define PCMSK0 _SFR_MEM8(0x06B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x06C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x06D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 + +#define TIMSK0 _SFR_MEM8(0x06E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x06F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x070) +#define TOI20 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#define TIMSK3 _SFR_MEM8(0x071) +#define TOIE3 0 +#define OCIE3A 1 +#define OCIE3B 2 +#define ICIE3 5 + +#define TIMSK4 _SFR_MEM8(0x072) +#define TOIE4 0 +#define OCIE4A 1 +#define OCIE4B 2 + +#define PCMSK3 _SFR_MEM8(0x073) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 +#define PCINT31 7 + +#define PCMSK4 _SFR_MEM8(0x074) +#define PCINT32 0 +#define PCINT33 1 +#define PCINT34 2 +#define PCINT35 3 +#define PCINT36 4 +#define PCINT37 5 +#define PCINT38 6 +#define PCINT39 7 + +#define PCMSK5 _SFR_MEM8(0x075) +#define PCINT40 0 +#define PCINT41 1 +#define PCINT42 2 +#define PCINT43 3 +#define PCINT44 4 +#define PCINT45 5 +#define PCINT46 6 +#define PCINT47 7 + +#define TCCR1A _SFR_MEM8(0x080) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x081) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x082) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x084) + +#define TCNT1L _SFR_MEM8(0x084) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x085) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x086) + +#define ICR1L _SFR_MEM8(0x086) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x087) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x088) + +#define OCR1AL _SFR_MEM8(0x088) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x089) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x08A) + +#define OCR1BL _SFR_MEM8(0x08A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x08B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define TCCR3A _SFR_MEM8(0x090) +#define WGM30 0 +#define WGM31 1 +#define COM3B0 4 +#define COM3B1 5 +#define COM3A0 6 +#define COM3A1 7 + +#define TCCR3B _SFR_MEM8(0x091) +#define CS30 0 +#define CS31 1 +#define CS32 2 +#define WGM32 3 +#define WGM33 4 +#define ICES3 6 +#define ICNC3 7 + +#define TCCR3C _SFR_MEM8(0x092) +#define FOC3B 6 +#define FOC3A 7 + +#define TCNT3 _SFR_MEM16(0x094) + +#define TCNT3L _SFR_MEM8(0x094) +#define TCNT3L0 0 +#define TCNT3L1 1 +#define TCNT3L2 2 +#define TCNT3L3 3 +#define TCNT3L4 4 +#define TCNT3L5 5 +#define TCNT3L6 6 +#define TCNT3L7 7 + +#define TCNT3H _SFR_MEM8(0x095) +#define TCNT3H0 0 +#define TCNT3H1 1 +#define TCNT3H2 2 +#define TCNT3H3 3 +#define TCNT3H4 4 +#define TCNT3H5 5 +#define TCNT3H6 6 +#define TCNT3H7 7 + +#define ICR3 _SFR_MEM16(0x096) + +#define ICR3L _SFR_MEM8(0x096) +#define ICR3L0 0 +#define ICR3L1 1 +#define ICR3L2 2 +#define ICR3L3 3 +#define ICR3L4 4 +#define ICR3L5 5 +#define ICR3L6 6 +#define ICR3L7 7 + +#define ICR3H _SFR_MEM8(0x097) +#define ICR3H0 0 +#define ICR3H1 1 +#define ICR3H2 2 +#define ICR3H3 3 +#define ICR3H4 4 +#define ICR3H5 5 +#define ICR3H6 6 +#define ICR3H7 7 + +#define OCR3A _SFR_MEM16(0x098) + +#define OCR3AL _SFR_MEM8(0x098) +#define OCR3AL0 0 +#define OCR3AL3 1 +#define OCR3AL2 2 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3AH _SFR_MEM8(0x099) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define OCR3B _SFR_MEM16(0x09A) + +#define OCR3BL _SFR_MEM8(0x09A) +#define OCR3BL0 0 +#define OCR3BL1 1 +#define OCR3BL2 2 +#define OCR3BL3 3 +#define OCR3BL4 4 +#define OCR3BL5 5 +#define OCR3BL6 6 +#define OCR3BL7 7 + +#define OCR3BH _SFR_MEM8(0x09B) +#define OCR3BH0 0 +#define OCR3BH1 1 +#define OCR3BH2 2 +#define OCR3BH3 3 +#define OCR3BH4 4 +#define OCR3BH5 5 +#define OCR3BH6 6 +#define OCR3BH7 7 + +#define TCCR2A _SFR_MEM8(0x0A0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0x0A1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0x0A2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0x0A3) +#define OCR2A_0 0 +#define OCR2A_1 1 +#define OCR2A_2 2 +#define OCR2A_3 3 +#define OCR2A_4 4 +#define OCR2A_5 5 +#define OCR2A_6 6 +#define OCR2A_7 7 + +#define OCR2B _SFR_MEM8(0x0A4) +#define OCR2B_0 0 +#define OCR2B_1 1 +#define OCR2B_2 2 +#define OCR2B_3 3 +#define OCR2B_4 4 +#define OCR2B_5 5 +#define OCR2B_6 6 +#define OCR2B_7 7 + +#define TCCR4A _SFR_MEM8(0x0A8) +#define WGM40 0 +#define WGM41 1 +#define COM4B0 4 +#define COM4B1 5 +#define COM4A0 6 +#define COM4A1 7 + +#define TCCR4B _SFR_MEM8(0x0A9) +#define CS40 0 +#define CS41 1 +#define CS42 2 +#define WGM42 3 +#define FOC4B 6 +#define FOC4A 7 + +#define TCNT4 _SFR_MEM8(0x0AA) +#define TCNT4_0 0 +#define TCNT4_1 1 +#define TCNT4_2 2 +#define TCNT4_3 3 +#define TCNT4_4 4 +#define TCNT4_5 5 +#define TCNT4_6 6 +#define TCNT4_7 7 + +#define OCR4A _SFR_MEM8(0x0AB) +#define OCR4A_0 0 +#define OCR4A_1 1 +#define OCR4A_2 2 +#define OCR4A_3 3 +#define OCR4A_4 4 +#define OCR4A_5 5 +#define OCR4A_6 6 +#define OCR4A_7 7 + +#define OCR4B _SFR_MEM8(0x0AC) +#define OCR4B_0 0 +#define OCR4B_1 1 +#define OCR4B_2 2 +#define OCR4B_3 3 +#define OCR4B_4 4 +#define OCR4B_5 5 +#define OCR4B_6 6 +#define OCR4B_7 7 + +#define TWBR _SFR_MEM8(0x0B8) + +#define TWSR _SFR_MEM8(0x0B9) + +#define TWAR _SFR_MEM8(0x0BA) + +#define TWDR _SFR_MEM8(0x0BB) + +#define TWCR _SFR_MEM8(0x0BC) + +#define TWAMR _SFR_MEM8(0x0BD) + +#define UCSR0A _SFR_MEM8(0x0C0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0x0C1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0x0C2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0x0C4) + +#define UBRR0L _SFR_MEM8(0x0C4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0x0C5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0x0C6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + +#define LCDCRA _SFR_MEM8(0x0E0) +#define LCDBL 0 +#define LCDIE 3 +#define LCDIF 4 +#define LCDAB 6 +#define LCDEN 7 + +#define LCDFRR _SFR_MEM8(0x0E1) +#define LCDCD0 0 +#define LCDCD1 1 +#define LCDCD2 2 +#define LCDPS0 4 +#define LCDPS1 5 +#define LCDPS2 6 +#define LCDPBUFEN 7 + +#define LCDCCR _SFR_MEM8(0x0E2) +#define LCDCC0 0 +#define LCDCC1 1 +#define LCDCC2 2 +#define LCDCC3 3 +#define LCDMDT 4 +#define LCDDC0 5 +#define LCDDC1 6 +#define LCDDC2 7 + +#define LCDDR0 _SFR_MEM8(0x0E3) +#define SEG000 0 +#define SEG001 1 +#define SEG002 2 +#define SEG003 3 +#define SEG004 4 +#define SEG005 5 +#define SEG006 6 +#define SEG007 7 + +#define LCDDR1 _SFR_MEM8(0x0E4) +#define SEG008 0 +#define SEG009 1 +#define SEG010 2 +#define SEG011 3 +#define SEG012 4 +#define SEG013 5 +#define SEG014 6 +#define SEG015 7 + +#define LCDDR2 _SFR_MEM8(0x0E5) +#define SEG100 0 +#define SEG101 1 +#define SEG102 2 +#define SEG103 3 +#define SEG104 4 +#define SEG105 5 +#define SEG106 6 +#define SEG107 7 + +#define LCDDR3 _SFR_MEM8(0x0E6) +#define SEG108 0 +#define SEG109 1 +#define SEG024 2 +#define SEG111 3 +#define SEG112 4 +#define SEG113 5 +#define SEG114 6 +#define SEG115 7 + +#define LCDDR4 _SFR_MEM8(0x0E7) +#define SEG200 0 +#define SEG201 1 +#define SEG202 2 +#define SEG203 3 +#define SEG204 4 +#define SEG205 5 +#define SEG206 6 +#define SEG207 7 + +#define LCDDR5 _SFR_MEM8(0x0E8) +#define SEG208 0 +#define SEG209 1 +#define SEG210 2 +#define SEG211 3 +#define SEG213 5 +#define SEG214 6 +#define SEG215 7 + +#define LCDDR6 _SFR_MEM8(0x0E9) +#define SEG300 0 +#define SEG301 1 +#define SEG302 2 +#define SEG303 3 +#define SEG304 4 +#define SEG305 5 +#define SEG306 6 +#define SEG307 7 + +#define LCDDR7 _SFR_MEM8(0x0EA) +#define SEG308 0 +#define SEG309 1 +#define SEG310 2 +#define SEG311 3 +#define SEG312 4 +#define SEG313 5 +#define SEG314 6 +#define SEG315 7 + +#define SC0ICLK _SFR_MEM8(0x100) + +#define SC0WT0 _SFR_MEM8(0x101) + +#define SC0WT1 _SFR_MEM8(0x102) + +#define SC0WT2 _SFR_MEM8(0x103) + +#define SC0WT3 _SFR_MEM8(0x104) + +#define SC0GT _SFR_MEM16(0x105) + +#define SC0GTL _SFR_MEM8(0x105) + +#define SC0GTH _SFR_MEM8(0x106) + +#define SC0ETU _SFR_MEM16(0x107) + +#define SC0ETUL _SFR_MEM8(0x107) + +#define SC0ETUH _SFR_MEM8(0x108) + +#define SC0IBUF _SFR_MEM8(0x109) + +#define SC0SR _SFR_MEM8(0x10A) + +#define SC0IER _SFR_MEM8(0x10B) + +#define SC0IIR _SFR_MEM8(0x10C) + +#define SC0ISR _SFR_MEM8(0x10D) + +#define SC0CON _SFR_MEM8(0x10E) + +#define SC0ICR _SFR_MEM8(0x10F) + +#define SC1ICLK _SFR_MEM8(0x110) + +#define SC1WT0 _SFR_MEM8(0x111) + +#define SC1WT1 _SFR_MEM8(0x112) + +#define SC1WT2 _SFR_MEM8(0x113) + +#define SC1WT3 _SFR_MEM8(0x114) + +#define SC1GT _SFR_MEM16(0x115) + +#define SC1GTL _SFR_MEM8(0x115) + +#define SC1GTH _SFR_MEM8(0x116) + +#define SC1ETU _SFR_MEM16(0x117) + +#define SC1ETUL _SFR_MEM8(0x117) + +#define SC1ETUH _SFR_MEM8(0x118) + +#define SC1IBUF _SFR_MEM8(0x119) + +#define SC1SR _SFR_MEM8(0x11A) + +#define SC1IER _SFR_MEM8(0x11B) + +#define SC1IIR _SFR_MEM8(0x11C) + +#define SC1ISR _SFR_MEM8(0x11D) + +#define SC1CON _SFR_MEM8(0x11E) + +#define SC1ICR _SFR_MEM8(0x11F) + +#define SC2ICLK _SFR_MEM8(0x120) + +#define SC2WT0 _SFR_MEM8(0x121) + +#define SC2WT1 _SFR_MEM8(0x122) + +#define SC2WT2 _SFR_MEM8(0x123) + +#define SC2WT3 _SFR_MEM8(0x124) + +#define SC2GT _SFR_MEM16(0x125) + +#define SC2GTL _SFR_MEM8(0x125) + +#define SC2GTH _SFR_MEM8(0x126) + +#define SC2ETU _SFR_MEM16(0x127) + +#define SC2ETUL _SFR_MEM8(0x127) + +#define SC2ETUH _SFR_MEM8(0x128) + +#define SC2IBUF _SFR_MEM8(0x129) + +#define SC2SR _SFR_MEM8(0x12A) + +#define SC2IER _SFR_MEM8(0x12B) + +#define SC2IIR _SFR_MEM8(0x12C) + +#define SC2ISR _SFR_MEM8(0x12D) + +#define SC2CON _SFR_MEM8(0x12E) + +#define SC2ICR _SFR_MEM8(0x12F) + +#define ACLCr _SFR_MEM8(0x140) + +#define ACLMr _SFR_MEM8(0x141) + +#define ACLIr _SFR_MEM8(0x142) + +#define ACLKey1b1r _SFR_MEM8(0x146) + +#define ACLKey1b2r _SFR_MEM8(0x147) + +#define ACLKey1b3r _SFR_MEM8(0x148) + +#define ACLKey1b4r _SFR_MEM8(0x149) + +#define ACLKey1b5r _SFR_MEM8(0x14A) + +#define ACLKey1b6r _SFR_MEM8(0x14B) + +#define ACLKey1b7r _SFR_MEM8(0x14C) + +#define ACLKey1b8r _SFR_MEM8(0x14D) + +#define ACLKey2b1r _SFR_MEM8(0x14E) + +#define ACLKey2b2r _SFR_MEM8(0x14F) + +#define ACLKey2b3r _SFR_MEM8(0x150) + +#define ACLKey2b4r _SFR_MEM8(0x151) + +#define ACLKey2b5r _SFR_MEM8(0x152) + +#define ACLKey2b6r _SFR_MEM8(0x153) + +#define ACLKey2b7r _SFR_MEM8(0x154) + +#define ACLKey2b8r _SFR_MEM8(0x155) + +#define ACLIdata1r _SFR_MEM8(0x156) + +#define ACLIdata2r _SFR_MEM8(0x157) + +#define ACLIdata3r _SFR_MEM8(0x158) + +#define ACLIdata4r _SFR_MEM8(0x159) + +#define ACLIdata5r _SFR_MEM8(0x15A) + +#define ACLIdata6r _SFR_MEM8(0x15B) + +#define ACLIdata7r _SFR_MEM8(0x15C) + +#define ACLIdata8r _SFR_MEM8(0x15D) + +#define ACLOdata1r _SFR_MEM8(0x15E) + +#define ACLOdata2r _SFR_MEM8(0x15F) + +#define ACLOdata3r _SFR_MEM8(0x160) + +#define ACLOdata4r _SFR_MEM8(0x161) + +#define ACLOdata5r _SFR_MEM8(0x162) + +#define ACLOdata6r _SFR_MEM8(0x163) + +#define ACLOdata7r _SFR_MEM8(0x164) + +#define ACLOdata8r _SFR_MEM8(0x165) + +#define ACLIv1r _SFR_MEM8(0x166) + +#define ACLIv2r _SFR_MEM8(0x167) + +#define ACLIv3r _SFR_MEM8(0x168) + +#define ACLIv4r _SFR_MEM8(0x169) + +#define ACLIv5r _SFR_MEM8(0x16A) + +#define ACLIv6r _SFR_MEM8(0x16B) + +#define ACLIv7r _SFR_MEM8(0x16C) + +#define ACLIv8r _SFR_MEM8(0x16D) + +#define ACLVr _SFR_MEM8(0x16F) + +#define DSRCDvrr _SFR_MEM8(0x180) + +#define DSRCDldr _SFR_MEM8(0x181) + +#define DSRCDenr _SFR_MEM8(0x182) + +#define DSRCIntr _SFR_MEM8(0x188) + +#define DSRCInrr _SFR_MEM8(0x189) + +#define DSRCItmr _SFR_MEM8(0x18A) + +#define DSRCIrmr _SFR_MEM8(0x18B) + +#define DSRCItcr _SFR_MEM8(0x18C) + +#define DSRCIrcr _SFR_MEM8(0x18D) + +#define DSRCTcdrl _SFR_MEM8(0x190) + +#define DSRCTcdrh _SFR_MEM8(0x191) + +#define DSRCRcdrl _SFR_MEM8(0x192) + +#define DSRCRcdrh _SFR_MEM8(0x193) + +#define DSRCAder _SFR_MEM8(0x196) + +#define DSRCAdsr _SFR_MEM8(0x197) + +#define DSRCRadr0 _SFR_MEM8(0x198) + +#define DSRCRadr1 _SFR_MEM8(0x199) + +#define DSRCRadr2 _SFR_MEM8(0x19A) + +#define DSRCRadr3 _SFR_MEM8(0x19B) + +#define DSRCPadr0 _SFR_MEM8(0x19C) + +#define DSRCPadr1 _SFR_MEM8(0x19D) + +#define DSRCPadr2 _SFR_MEM8(0x19E) + +#define DSRCPadr3 _SFR_MEM8(0x19F) + +#define DSRCPamr0 _SFR_MEM8(0x1A0) + +#define DSRCPamr1 _SFR_MEM8(0x1A1) + +#define DSRCPamr2 _SFR_MEM8(0x1A2) + +#define DSRCPamr3 _SFR_MEM8(0x1A3) + +#define DSRCGadr00 _SFR_MEM8(0x1A4) + +#define DSRCGadr01 _SFR_MEM8(0x1A5) + +#define DSRCGadr02 _SFR_MEM8(0x1A6) + +#define DSRCGadr03 _SFR_MEM8(0x1A7) + +#define DSRCGamr00 _SFR_MEM8(0x1A8) + +#define DSRCGamr01 _SFR_MEM8(0x1A9) + +#define DSRCGamr02 _SFR_MEM8(0x1AA) + +#define DSRCGamr03 _SFR_MEM8(0x1AB) + +#define DSRCGadr10 _SFR_MEM8(0x1AC) + +#define DSRCGadr11 _SFR_MEM8(0x1AD) + +#define DSRCGadr12 _SFR_MEM8(0x1AE) + +#define DSRCGadr13 _SFR_MEM8(0x1AF) + +#define DSRCGamr10 _SFR_MEM8(0x1B0) + +#define DSRCGamr11 _SFR_MEM8(0x1B1) + +#define DSRCGamr12 _SFR_MEM8(0x1B2) + +#define DSRCGamr13 _SFR_MEM8(0x1B3) + +#define DSRCGadr20 _SFR_MEM8(0x1B4) + +#define DSRCGadr21 _SFR_MEM8(0x1B5) + +#define DSRCGadr22 _SFR_MEM8(0x1B6) + +#define DSRCGadr23 _SFR_MEM8(0x1B7) + +#define DSRCGamr20 _SFR_MEM8(0x1B8) + +#define DSRCGamr21 _SFR_MEM8(0x1B9) + +#define DSRCGamr22 _SFR_MEM8(0x1BA) + +#define DSRCGamr23 _SFR_MEM8(0x1BB) + +#define DSRCGadr30 _SFR_MEM8(0x1BC) + +#define DSRCGadr31 _SFR_MEM8(0x1BD) + +#define DSRCGadr32 _SFR_MEM8(0x1BE) + +#define DSRCGadr33 _SFR_MEM8(0x1BF) + +#define DSRCGamr30 _SFR_MEM8(0x1C0) + +#define DSRCGamr31 _SFR_MEM8(0x1C1) + +#define DSRCGamr32 _SFR_MEM8(0x1C2) + +#define DSRCGamr33 _SFR_MEM8(0x1C3) + +#define DSRCBmr0 _SFR_MEM8(0x1C4) + +#define DSRCBmr1 _SFR_MEM8(0x1C5) + +#define DSRCBmr2 _SFR_MEM8(0x1C6) + +#define DSRCBmr3 _SFR_MEM8(0x1C7) + +#define DSRCTcmr _SFR_MEM8(0x1C8) + +#define DSRCTcnr _SFR_MEM8(0x1C9) + +#define DSRCTstr _SFR_MEM8(0x1CA) + +#define DSRCTmor _SFR_MEM8(0x1CB) + +#define DSRCTrdr _SFR_MEM8(0x1CC) + +#define DSRCTflr0 _SFR_MEM8(0x1CD) + +#define DSRCTflr1 _SFR_MEM8(0x1CE) + +#define DSRCTfsr _SFR_MEM8(0x1CF) + +#define DSRCTfir0 _SFR_MEM8(0x1D0) + +#define DSRCTfir1 _SFR_MEM8(0x1D1) + +#define DSRCTfir2 _SFR_MEM8(0x1D2) + +#define DSRCTfir3 _SFR_MEM8(0x1D3) + +#define DSRCTprr0 _SFR_MEM8(0x1D4) + +#define DSRCTprr1 _SFR_MEM8(0x1D5) + +#define DSRCTpor0 _SFR_MEM8(0x1D6) + +#define DSRCTpor1 _SFR_MEM8(0x1D7) + +#define DSRCPplr _SFR_MEM8(0x1D8) + +#define DSRCRcmr _SFR_MEM8(0x1E0) + +#define DSRCRcnr _SFR_MEM8(0x1E1) + +#define DSRCRstr _SFR_MEM8(0x1E2) + +#define DSRCRflr0 _SFR_MEM8(0x1E3) + +#define DSRCRflr1 _SFR_MEM8(0x1E4) + +#define DSRCRdtr _SFR_MEM8(0x1E5) + +#define DSRCRrdr _SFR_MEM8(0x1E6) + +#define DSRCRfir0 _SFR_MEM8(0x1E8) + +#define DSRCRfir1 _SFR_MEM8(0x1E9) + +#define DSRCRfir2 _SFR_MEM8(0x1EA) + +#define DSRCRfir3 _SFR_MEM8(0x1EB) + +#define DSRCRfcr0 _SFR_MEM8(0x1EC) + +#define DSRCRfcr1 _SFR_MEM8(0x1ED) + +#define DSRCRfcr2 _SFR_MEM8(0x1EE) + +#define DSRCRfcr3 _SFR_MEM8(0x1EF) + +#define DSRCTestr _SFR_MEM8(0x1F0) + +#define DSRCFstr _SFR_MEM8(0x1F4) + +#define DSRCTfcr _SFR_MEM8(0x1F5) + +#define DSRCRfcr _SFR_MEM8(0x1F6) + +#define DSRCDtdf _SFR_MEM8(0x1F7) + +#define DSRCDrdf _SFR_MEM8(0x1F8) + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +#define PCINT0_vect_num 1 +#define PCINT0_vect _VECTOR(1) /* Pin Change Interrupt Request 0 PortA */ +#define PCINT1_vect_num 2 +#define PCINT1_vect _VECTOR(2) /* Pin Change Interrupt Request 1 PortB */ +#define PCINT2_vect_num 3 +#define PCINT2_vect _VECTOR(3) /* Pin Change Interrupt Request 2 PortC */ +#define PCINT3_vect_num 4 +#define PCINT3_vect _VECTOR(4) /* Pin Change Interrupt Request 3 PortD-LCD */ +#define PCINT4_vect_num 5 +#define PCINT4_vect _VECTOR(5) /* Pin Change Interrupt Request 4 PortE-LCD */ +#define PCINT5_vect_num 6 +#define PCINT5_vect _VECTOR(6) /* Pin Change Interrupt Request 5 PortF-LCD */ +#define WDT_vect_num 7 +#define WDT_vect _VECTOR(7) /* Watchdog Time out Interrupt */ +#define TIMER4_COMPA_vect_num 8 +#define TIMER4_COMPA_vect _VECTOR(8) /* Timer 8bit /Counter4 Compare Match A */ +#define TIMER4_COMPB_vect_num 9 +#define TIMER4_COMPB_vect _VECTOR(9) /* Timer 8bit /Counter4 Compare Match B */ +#define TIMER4_OVF_vect_num 10 +#define TIMER4_OVF_vect _VECTOR(10) /* Timer/Counter4 Overflow */ +#define TIMER3_INPUT_CAPT_vect_num 11 +#define TIMER3_INPUT_CAPT_vect _VECTOR(11) /* Timer 16bit/Counter3 Capture Event */ +#define TIMER3_COMPA_vect_num 12 +#define TIMER3_COMPA_vect _VECTOR(12) /* Timer 16bit/Counter3 Compare Match A */ +#define TIMER3_COMPB_vect_num 13 +#define TIMER3_COMPB_vect _VECTOR(13) /* Timer 16bit/Counter3 Compare Match B */ +#define TIMER3_OVF_vect_num 14 +#define TIMER3_OVF_vect _VECTOR(14) /* Timer3 16 bit/Counter3 Overflow */ +#define TIMER2_COMPA_vect_num 15 +#define TIMER2_COMPA_vect _VECTOR(15) /* Timer 8bit/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect_num 16 +#define TIMER2_COMPB_vect _VECTOR(16) /* Timer 8bit/Counter2 Compare Match B */ +#define TIMER2_OVF_vect_num 17 +#define TIMER2_OVF_vect _VECTOR(17) /* Timer2 8 bit/Counter2 Overflow */ +#define TIMER1_INPUT_CAPT_vect_num 18 +#define TIMER1_INPUT_CAPT_vect _VECTOR(18) /* Timer1 16bit/Counter1 Capture Event */ +#define TIMER1_COMPA_vect_num 19 +#define TIMER1_COMPA_vect _VECTOR(19) /* Timer 16bit/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect_num 20 +#define TIMER1_COMPB_vect _VECTOR(20) /* Timer 16bit/Counter1 Compare Match B */ +#define TIMER1_OVF_vect_num 21 +#define TIMER1_OVF_vect _VECTOR(21) /* Timer1 16 bit/Counter1 Overflow */ +#define TIMER0_COMP_A_vect_num 22 +#define TIMER0_COMP_A_vect _VECTOR(22) /* Timer0/Counter0 Compare Match */ +#define TIMER0_COMP_B_vect_num 23 +#define TIMER0_COMP_B_vect _VECTOR(23) /* Timer0 8bit /Counter0 Compare Match A */ +#define TIMER0_OVF_vect_num 24 +#define TIMER0_OVF_vect _VECTOR(24) /* Timer0 8bit/Counter0 Overflow */ +#define IRQ_DSRC_vect_num 25 +#define IRQ_DSRC_vect _VECTOR(25) /* DSRC interrupt - custom IP */ +#define IRQ_SCI0_vect_num 26 +#define IRQ_SCI0_vect _VECTOR(26) /* Smart Card 0 interrupt */ +#define IRQ_SCI1_vect_num 27 +#define IRQ_SCI1_vect _VECTOR(27) /* Smart Card 1 interrupt */ +#define IRQ_SCI2_vect_num 28 +#define IRQ_SCI2_vect _VECTOR(28) /* Smart Card 2 interrupt */ +#define IRQ_CL_vect_num 29 +#define IRQ_CL_vect _VECTOR(29) /* AWAH custom IP interrupt */ +#define SPI_STC_vect_num 30 +#define SPI_STC_vect _VECTOR(30) /* SPI Serial Transfer Complete */ +#define USART0_RX_vect_num 31 +#define USART0_RX_vect _VECTOR(31) /* USART0, Rx Complete */ +#define USART0_UDRE_vect_num 32 +#define USART0_UDRE_vect _VECTOR(32) /* USART0 Data register Empty */ +#define USART0_TX_vect_num 33 +#define USART0_TX_vect _VECTOR(33) /* USART0, Tx Complete */ +#define TWI_vect_num 34 +#define TWI_vect _VECTOR(34) /* 2 wire interface */ +#define SPM_READY_vect_num 35 +#define SPM_READY_vect _VECTOR(35) /* Store Program Memory Read */ +#define LCD_vect_num 36 +#define LCD_vect _VECTOR(36) /* LCD Start of Frame */ +#define BOD_SMHIGH_vect_num 37 +#define BOD_SMHIGH_vect _VECTOR(37) /* SM High level - SWVBAT between 2V to 2.2V */ + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (38 * _VECTOR_SIZE) + + +/* Constants */ +#define SPM_PAGESIZE (256) +#define RAMSTART (0x200) +#define RAMSIZE (8192) +#define RAMEND (RAMSTART + RAMSIZE - 1) +#define XRAMSTART (NA) +#define XRAMSIZE (0) +#define XRAMEND (RAMEND) +#define E2END (0x0) +#define E2PAGESIZE (0) +#define FLASHEND (0xFFFF) + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_SMHIGH (unsigned char)~_BV(3) /* SM SWVBAT not activated by default */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_CKSEL0 (unsigned char)~_BV(5) /* Select Clock Source */ +#define FUSE_SUT (unsigned char)~_BV(6) /* Select start-up time */ +#define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */ +#define FUSE_DEFAULT (FUSE_BOOTSZ1 & FUSE_BOOTSZ0) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x0 +#define SIGNATURE_1 0x0 +#define SIGNATURE_2 0x0 + + +#endif /* _AVR_58U54A_Albatross_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io76c711.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io76c711.h new file mode 100644 index 0000000..c6a9f83 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io76c711.h @@ -0,0 +1,493 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io76c711.h,v 1.5 2004/11/01 21:19:54 arcanum Exp $ */ + +/* avr/io76c711.h - definitions for AT76C711 */ + +#ifndef _AVR_IO76C711_H_ +#define _AVR_IO76C711_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io76c711.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* 0x00-0x0C reserved */ + +/* SPI */ +#define SPCR _SFR_IO8(0x0D) +#define SPSR _SFR_IO8(0x0E) +#define SPDR _SFR_IO8(0x0F) + +/* Port D */ +#define PIND _SFR_IO8(0x10) +#define DDRD _SFR_IO8(0x11) +#define PORTD _SFR_IO8(0x12) + +/* Peripheral Enable Register */ +#define PERIPHEN _SFR_IO8(0x13) + +/* Clock Control Register */ +#define CLK_CNTR _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Port B */ +#define PINB _SFR_IO8(0x16) +#define DDRB _SFR_IO8(0x17) +#define PORTB _SFR_IO8(0x18) + +/* Port A */ +#define PINA _SFR_IO8(0x19) +#define DDRA _SFR_IO8(0x1A) +#define PORTA _SFR_IO8(0x1B) + +/* 0x1C-0x1F reserved */ + +#define IRDAMOD _SFR_IO8(0x20) + +#define WDTCR _SFR_IO8(0x21) + +/* 0x22-0x25 reserved */ +/* Timer 1 */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) +#define TCCR1B _SFR_IO8(0x2E) +#define TCCR1A _SFR_IO8(0x2F) + +/* 0x30 reserved */ + +/* Timer 0 */ +#define PRELD _SFR_IO8(0x31) +#define TCNT0 _SFR_IO8(0x32) +#define TCCR0 _SFR_IO8(0x33) + +#define MCUSR _SFR_IO8(0x34) +#define MCUCR _SFR_IO8(0x35) + +#define TIFR _SFR_IO8(0x36) +#define TIMSK _SFR_IO8(0x37) + +/* 0x38 reserved */ + +#define EIMSK _SFR_IO8(0x39) + +/* 0x3A-0x3C reserved */ + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +#define SIG_SUSPEND_RESUME _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(2) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) +#define SIG_OUTPUT_COMPARE1B _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(7) +#define SIG_SPI _VECTOR(8) +#define SIG_TDMAC _VECTOR(9) +#define SIG_UART0 _VECTOR(10) +#define SIG_RDMAC _VECTOR(11) +#define SIG_USB_HW _VECTOR(12) +#define SIG_UART1 _VECTOR(13) +#define SIG_INTERRUPT1 _VECTOR(14) + +#define _VECTORS_SIZE 60 + +/* Bit numbers */ + +/* EIMSK */ +/* bits 7-4 reserved */ +#define POL1 3 +#define POL0 2 +#define INT1 1 +#define INT0 0 + +/* TIMSK */ +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +/* bit 4 reserved */ +#define TICIE1 3 +/* bit 2 reserved */ +#define TOIE0 1 +/* bit 0 reserved */ + +/* TIFR */ +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +/* bit 4 reserved */ +#define ICF1 3 +/* bit 2 reserved */ +#define TOV0 1 +/* bit 0 reserved */ + +/* MCUCR */ +/* bits 7-6 reserved */ +#define SE 5 +#define SM1 4 +#define SM0 3 +/* bits 2-0 reserved */ + +/* MCUSR */ +/* bits 7-2 reserved */ +#define EXTRF 1 +#define PORF 0 + +/* TCCR0 */ +/* bits 7-6 reserved */ +#define COM01 5 +#define COM00 4 +#define CTC0 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +/* bits 3-0 reserved */ + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +/* bits 5-4 reserved */ +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* WDTCR */ +/* bits 7-5 reserved */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* IRDAMOD */ +/* bits 7-3 reserved */ +#define POL 2 +#define MODE 1 +#define EN 0 + +/* PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* + PB7 = SCK + PB6 = MISO + PB5 = MOSI + PB4 = SS# + PB2 = ICP + PB1 = T1 + PB0 = T0 + */ + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* PORTC */ +/* bits 7-4 reserved */ +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* + PD7 = INT1 / OC1B + PD6 = INT0 / OC1A + PD1 = TXD + PD0 = RXD + */ + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* CLK_CNTR */ +/* bits 7-5 reserved */ +#define UOSC 4 +#define UCK 3 +#define IRCK 2 +/* bits 1-0 reserved */ + +/* PERIPHEN */ +/* bits 7-3 reserved */ +#define IRDA 2 +#define UART 1 +#define USB 0 + +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +/* bits 5-0 reserved */ + +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* Memory mapped registers (XXX - not yet changed to use _SFR_MEM8() macros) */ + +/* UART */ +#define UART0_BASE 0x2020 +#define UART1_BASE 0x2030 +/* offsets from the base address */ +#define US_RHR 0x00 +#define US_THR 0x00 +#define US_IER 0x01 +#define US_FCR 0x02 +#define US_PMR 0x03 +#define US_MR 0x04 +#define US_CSR 0x05 +#define US_CR 0x06 +#define US_BL 0x07 +#define US_BM 0x08 +#define US_RTO 0x09 +#define US_TTG 0x0A + +/* DMA */ +#define DMA_BASE 0x2000 +/* offsets from the base address */ +#define TXTADL 0x01 +#define TXPLL 0x03 +#define TXPLM 0x04 +#define TXTPLL 0x05 +#define TXTPLM 0x06 +#define RXTADL 0x07 +#define RXTADMEN 0x08 +#define RSPLL 0x09 +#define RXPLM 0x0A +#define RXTPLL 0x0B +#define RXTPLM 0x0C +#define INTCST 0x0D +/* XXX DPORG register mentioned on page 20, but undocumented */ + +/* XXX Program Memory Control Bit mentioned on page 20, but undocumented */ +#define PROGRAM_MEMORY_CONTROL_BIT 0x2040 + +/* USB */ +#define USB_BASE 0x1000 +/* offsets from the base address */ +#define FRM_NUM_H 0x0FD +#define FRM_NUM_L 0x0FC +#define GLB_STATE 0x0FB +#define SPRSR 0x0FA +#define SPRSIE 0x0F9 +#define UISR 0x0F7 +#define UIAR 0x0F5 +#define FADDR 0x0F2 +#define ENDPPGPG 0x0F1 +#define ECR0 0x0EF +#define ECR1 0x0EE +#define ECR2 0x0ED +#define ECR3 0x0EC +#define ECR4 0x0EB +#define ECR5 0x0EA +#define ECR6 0x0E9 +#define ECR7 0x0E8 +#define CSR0 0x0DF +#define CSR1 0x0DE +#define CSR2 0x0DD +#define CSR3 0x0DC +#define CSR4 0x0DB +#define CSR5 0x0DA +#define CSR6 0x0D9 +#define CSR7 0x0D8 +#define FDR0 0x0CF +#define FDR1 0x0CE +#define FDR2 0x0CD +#define FDR3 0x0CC +#define FDR4 0x0CB +#define FDR5 0x0CA +#define FDR6 0x0C9 +#define FDR7 0x0C8 +#define FBYTE_CNT0_L 0x0BF +#define FBYTE_CNT1_L 0x0BE +#define FBYTE_CNT2_L 0x0BD +#define FBYTE_CNT3_L 0x0BC +#define FBYTE_CNT4_L 0x0BB +#define FBYTE_CNT5_L 0x0BA +#define FBYTE_CNT6_L 0x0B9 +#define FBYTE_CNT7_L 0x0B8 +#define FBYTE_CNT0_H 0x0AF +#define FBYTE_CNT1_H 0x0AE +#define FBYTE_CNT2_H 0x0AD +#define FBYTE_CNT3_H 0x0AC +#define FBYTE_CNT4_H 0x0AB +#define FBYTE_CNT5_H 0x0AA +#define FBYTE_CNT6_H 0x0A9 +#define FBYTE_CNT7_H 0x0A8 +#define SLP_MD_EN 0x100 +#define IRQ_EN 0x101 +#define IRQ_STAT 0x102 +#define SUSP_WUP 0x103 +#define PA_EN 0x104 +#define USB_DMA_ADL 0x105 +#define USB_DMA_ADH 0x106 +#define USB_DMA_PLR 0x107 +#define USB_DMA_EAD 0x108 +#define USB_DMA_PLT 0x109 +#define USB_DMA_EN 0x10A + +/* Last memory addresses */ +#define RAMEND 0x07FF +#define XRAMEND 0x07FF +#define E2END 0 +#define FLASHEND 0x3FFF + +/* + AT76C711 data space memory map (ranges not listed are reserved): + 0x0000 - 0x001F - AVR registers + 0x0020 - 0x005F - AVR I/O space + 0x0060 - 0x07FF - AVR data SRAM + 0x1000 - 0x1FFF - USB (not all locations used) + 0x2000 - 0x201F - DMA controller + 0x2020 - 0x202F - UART0 + 0x2030 - 0x203F - UART1 (IRDA) + 0x2040 - the mysterious Program Memory Control bit (???) + 0x3000 - 0x37FF - DPRAM + 0x8000 - 0xBFFF - program SRAM (read/write), would be nice if other + AVR devices did that as well (no need to use LPM!) + */ +#endif /* _AVR_IO76C711_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8515.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8515.h new file mode 100644 index 0000000..95e6f9d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8515.h @@ -0,0 +1,486 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io8515.h,v 1.8.4.2 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io8515.h - definitions for AT90S8515 */ + +#ifndef _AVR_IO8515_H_ +#define _AVR_IO8515_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io8515.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control Register */ +#define UCR _SFR_IO8(0x0A) + +/* UART Status Register */ +#define USR _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) + +/* Timer/Counter1 Compare MatchB */ +#define TIMER1_COMPB_vect _VECTOR(5) +#define SIG_OUTPUT_COMPARE1B _VECTOR(5) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(6) +#define SIG_OVERFLOW1 _VECTOR(6) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(7) +#define SIG_OVERFLOW0 _VECTOR(7) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(8) +#define SIG_SPI _VECTOR(8) + +/* UART, Rx Complete */ +#define UART_RX_vect _VECTOR(9) +#define SIG_UART_RECV _VECTOR(9) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(10) +#define SIG_UART_DATA _VECTOR(10) + +/* UART, Tx Complete */ +#define UART_TX_vect _VECTOR(11) +#define SIG_UART_TRANS _VECTOR(11) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(12) +#define SIG_COMPARATOR _VECTOR(12) + +#define _VECTORS_SIZE 26 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* General Interrupt MaSK register */ +#define INT1 7 +#define INT0 6 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 + +/* Timer/Counter Interrupt MaSK register */ +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +#define TICIE1 3 +#define TOIE0 1 + +/* Timer/Counter Interrupt Flag register */ +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +#define ICF1 3 +#define TOV0 1 + +/* MCU general Control Register */ +#define SRE 7 +#define SRW 6 +#define SE 5 +#define SM 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0x25F /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0x1FF +#define E2PAGESIZE 0 +#define FLASHEND 0x1FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_SPIEN ~_BV(1) /* Serial Program Downloading Enabled */ +#define FUSE_FSTRT ~_BV(2) /* Short Start-up time selected */ +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IO8515_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8534.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8534.h new file mode 100644 index 0000000..55b85c2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8534.h @@ -0,0 +1,216 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io8534.h,v 1.7 2005/07/09 14:01:11 aesok Exp $ */ + +/* avr/io8534.h - definitions for AT90C8534 */ + +#ifndef _AVR_IO8534_ +#define _AVR_IO8534_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io8534.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* 0x00..0x03 reserved */ + +/* ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register */ +#define ADCSR _SFR_IO8(0x06) + +/* ADC Multiplexer Select Register */ +#define ADMUX _SFR_IO8(0x07) + +/* 0x08..0x0F reserved */ + +/* General Interrupt Pin Register */ +#define GIPR _SFR_IO8(0x10) + +/* 0x11..0x19 reserved */ + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* 0x20..0x2B reserved */ + +/* Timer/Counter1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter1 Control Register */ +#define TCCR1 _SFR_IO8(0x2E) + +/* 0x2F..0x31 reserved */ + +/* Timer/Counter0 (8-bit) */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* 0x34 reserved */ + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* 0x36..0x37 reserved */ + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK Register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C reserved */ + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +#define SIG_INTERRUPT0 _VECTOR(1) +#define SIG_INTERRUPT1 _VECTOR(2) +#define SIG_OVERFLOW1 _VECTOR(3) +#define SIG_OVERFLOW0 _VECTOR(4) +#define SIG_ADC _VECTOR(5) +#define SIG_EEPROM_READY _VECTOR(6) + +#define _VECTORS_SIZE 14 + +/* Bit numbers */ + +/* GIMSK */ +#define INT1 7 +#define INT0 6 + +/* GIFR */ +#define INTF1 7 +#define INTF0 6 + +/* GIPR */ +#define IPIN1 3 +#define IPIN0 2 + +/* TIMSK */ +#define TOIE1 2 +#define TOIE0 0 + +/* TIFR */ +#define TOV1 2 +#define TOV0 0 + +/* MCUCR */ +#define SE 6 +#define SM 5 +#define ISC1 2 +#define ISC0 0 + +/* TCCR0 */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR1 */ +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Last memory addresses */ +#define RAMEND 0x15F +#define XRAMEND 0x15F +#define E2END 0x1FF +#define FLASHEND 0x1FFF + +#endif /* _AVR_IO8534_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8535.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8535.h new file mode 100644 index 0000000..8ac4657 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io8535.h @@ -0,0 +1,568 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io8535.h,v 1.9.4.3 2008/08/14 00:07:59 arcanum Exp $ */ + +/* avr/io8535.h - definitions for AT90S8535 */ + +#ifndef _AVR_IO8535_H_ +#define _AVR_IO8535_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io8535.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* ADC Data register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register */ +#define ADCSR _SFR_IO8(0x06) + +/* ADC MUX */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control Register */ +#define UCR _SFR_IO8(0x0A) + +/* UART Status Register */ +#define USR _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Asynchronous mode Status Register */ +#define ASSR _SFR_IO8(0x22) + +/* Timer/Counter2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x23) + +/* Timer/Counter 2 */ +#define TCNT2 _SFR_IO8(0x24) + +/* Timer/Counter 2 Control Register */ +#define TCCR2 _SFR_IO8(0x25) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE2 _VECTOR(3) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW2 _VECTOR(4) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(5) +#define SIG_INPUT_CAPTURE1 _VECTOR(5) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE1A _VECTOR(6) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1B _VECTOR(7) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(8) +#define SIG_OVERFLOW1 _VECTOR(8) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW0 _VECTOR(9) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(10) +#define SIG_SPI _VECTOR(10) + +/* UART, RX Complete */ +#define UART_RX_vect _VECTOR(11) +#define SIG_UART_RECV _VECTOR(11) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(12) +#define SIG_UART_DATA _VECTOR(12) + +/* UART, TX Complete */ +#define UART_TX_vect _VECTOR(13) +#define SIG_UART_TRANS _VECTOR(13) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(14) +#define SIG_ADC _VECTOR(14) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(15) +#define SIG_EEPROM_READY _VECTOR(15) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(16) +#define SIG_COMPARATOR _VECTOR(16) + +#define _VECTORS_SIZE 34 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* MCU general Status Register */ +#define EXTRF 1 +#define PORF 0 + +/* General Interrupt MaSK register */ +#define INT1 7 +#define INT0 6 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 + +/* Timer/Counter Interrupt MaSK register */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define TOIE0 0 + +/* Timer/Counter Interrupt Flag register */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define TOV0 0 + +/* MCU general Control Register */ +#define SE 6 +#define SM1 5 +#define SM0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Timer/Counter 2 Control Register */ +#define PWM2 6 +#define COM21 5 +#define COM20 4 +#define CTC2 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* Asynchronous mode Status Register */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC MUX */ +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* ADC Control and Status Register */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0x25F /*Last On-Chip SRAM location*/ +#define XRAMEND 0x25F +#define E2END 0x1FF +#define E2PAGESIZE 0 +#define FLASHEND 0x1FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_SPIEN (unsigned char)~_BV(1) /* Serial Program Downloading Enabled */ +#define FUSE_FSTRT (unsigned char)~_BV(2) /* Short Start-up time selected */ +#define LFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IO8535_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io86r401.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io86r401.h new file mode 100644 index 0000000..35c72e7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io86r401.h @@ -0,0 +1,308 @@ +/* Copyright (c) 2002, Colin O'Flynn + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/io86r401.h - definitions for AT86RF401 */ + +#ifndef _AVR_IO86RF401_H_ +#define _AVR_IO86RF401_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io86r401.h" +#else +# error "Attempt to include more than one file." +#endif + +#include + +/* Status REGister */ +#define SREG _SFR_IO8(0x3F) + +/* Stack Pointer */ +#define SP _SFR_IO16(0x3D) +#define SPH _SFR_IO8(0x3E) +#define SPL _SFR_IO8(0x3D) + +/*Battery low configeration register */ +#define BL_CONFIG _SFR_IO8(0x35) + +/*Button detect register*/ +#define B_DET _SFR_IO8(0x34) + +/*AVR Configeration register*/ +#define AVR_CONFIG _SFR_IO8(0x33) + +/* I/O registers */ + +/*Data in register */ +#define IO_DATIN _SFR_IO8(0x32) + +/*Data out register */ +#define IO_DATOUT _SFR_IO8(0x31) + +/*IO Enable register */ +#define IO_ENAB _SFR_IO8(0x30) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x22) + +/* Bit Timer Control Register */ +#define BTCR _SFR_IO8(0x21) + +#define BTCNT _SFR_IO8(0x20) + +/* +NOTE: EEPROM name's changed to have D in front on them, per datasheet, but +you may want to remove the leading D. +*/ +/* EEPROM Control Register */ + +/* EEPROM Address Register */ +#define DEEAR _SFR_IO8(0x1E) +#define DEEARL _SFR_IO8(0x1E) + +/* EEPROM Data Register */ +#define DEEDR _SFR_IO8(0x1D) +/* EEPROM Control Register */ +#define DEECR _SFR_IO8(0x1C) + +/* Lock Detector Configuration Register 2 */ +#define LOCKDET2 _SFR_IO8(0x17) + +/* VCO Tuning Register*/ +#define VCOTUNE _SFR_IO8(0x16) + +/* Power Attenuation Control Register */ +#define PWR_ATTEN _SFR_IO8(0x14) + +/* Transmitter Control Register */ +#define TX_CNTL _SFR_IO8(0x12) + +/* Lock Detector Configuration Register 1 */ +#define LOCKDET1 _SFR_IO8(0x10) + + +/* Interrupt vectors */ + +/* Transmission Done, Bit Timer Flag 2 Interrupt */ +#define TXDONE_vect _VECTOR(1) +#define SIG_TXDONE _VECTOR(1) + +/* Transmit Buffer Empty, Bit Itmer Flag 0 Interrupt */ +#define TXEMPTY_vect _VECTOR(2) +#define SIG_TXBE _VECTOR(2) + +#define _VECTORS_SIZE 12 + +/* + * The Register Bit names are represented by their bit number (0-7). + */ + +/* Lock Detector Configuration Register 1 - LOCKDET1 */ +#define UPOK 4 +#define ENKO 3 +#define BOD 2 +#define CS1 1 +#define CS0 0 + +/* Transmit Control Register - TX_CNTL */ +#define TXE 5 +#define TXK 4 +#define LOC 2 + +/* Power Attenuation Control Register - PWR_ATTEN */ +#define PCC2 5 +#define PCC1 4 +#define PCC0 3 +#define PCF2 2 +#define PCF1 1 +#define PCF0 0 + +/* VCO Tuning Register 6 - VCOTUNE --NOTE: [] removed from names*/ +#define VCOVDET1 7 +#define VCOVDET0 6 +#define VCOTUNE4 4 +#define VCOTUNE3 3 +#define VCOTUNE2 2 +#define VCOTUNE1 1 +#define VCOTUNE0 0 + +/* Lock Detector Configuration Register 2 - LOCKDET2 --NOTE: [] removed from names*/ +#define EUD 7 +#define LAT 6 +#define ULC2 5 +#define ULC1 4 +#define ULC0 3 +#define LC2 2 +#define LC1 1 +#define LC0 0 + +/* Data EEPROM Control Register - DEECR */ +#define BSY 3 +#define EEU 2 +#define EEL 1 +#define EER 0 + +/* Data EEPROM Data Register - DEEDR */ +#define ED7 7 +#define ED6 6 +#define ED5 5 +#define ED4 4 +#define ED3 3 +#define ED2 2 +#define ED1 1 +#define ED0 0 + +/* Data EEPROM Address Register - DEEAR */ +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define BA2 2 /* B is not a typo! */ +#define BA1 1 +#define BA0 0 + +/* Bit Timer Count Register - BTCNT */ +#define C7 7 +#define C6 6 +#define C5 5 +#define C4 4 +#define C3 3 +#define C2 2 +#define C1 1 +#define C0 0 + +/* Bit Timer Control Register - BTCR */ +#define C9 7 +#define C8 6 +#define M1 5 +#define M0 4 +#define IE 3 +#define F2 2 +#define DATA 1 +#define F0 0 + +/* Watchdog Timer Control Register - WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* I/O Enable Register - IO_ENAB */ +#define BOHYST 6 +#define IOE5 5 +#define IOE4 4 +#define IOE3 3 +#define IOE2 2 +#define IOE1 1 +#define IOE0 0 + +/* Note: No PORTB or whatever, this is the equivalent. */ +/* I/O Data Out Register - IO_DATOUT */ +#define IOO5 5 +#define IOO4 4 +#define IOO3 3 +#define IOO2 2 +#define IOO1 1 +#define IOO0 0 + +/* Note: No PINB or whatever, this is the equivalent. */ +/* I/O Data In Register - IO_DATIN */ +#define IOI5 5 +#define IOI4 4 +#define IOI3 3 +#define IOI2 2 +#define IOI1 1 +#define IOI0 0 + +/* AVR Configuration Register - AVR_CONFIG */ +#define ACS1 6 +#define ACS0 5 +#define TM 4 +#define BD 3 +#define BLI 2 +#define SLEEP 1 +#define BBM 0 + +/* Button Detect Register - B_DET */ +#define BD5 5 +#define BD4 4 +#define BD3 3 +#define BD2 2 +#define BD1 1 +#define BD0 0 + +/* Battery Low Configuration Register - BL_CONFIG */ +#define BL 7 +#define BLV 6 +#define BL5 5 +#define BL4 4 +#define BL3 3 +#define BL2 2 +#define BL1 1 +#define BL0 0 + +/* Pointer definition */ +#define XL r26 +#define XH r27 +#define YL r28 +#define YH r29 +#define ZL r30 +#define ZH r31 + +/* Constants */ +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 0 +#define FLASHEND 0x07FF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 0 + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x81 + + +#endif /* _AVR_IO86RF401_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm1.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm1.h new file mode 100644 index 0000000..04fc376 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm1.h @@ -0,0 +1,1121 @@ +/* Copyright (c) 2005, Andrey Pashchenko + Copyright (c) 2007, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io90pwm1.h,v 1.3.2.3 2008/08/06 22:44:59 arcanum Exp $ */ + +/* avr/iopwm1.h - definitions for AT90PWM1 device */ + +#ifndef _AVR_IOPWM1_H_ +#define _AVR_IOPWM1_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iopwm1.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Reserved [0x00..0x02] */ + +/* Port B Input Pins Address */ +#define PINB _SFR_IO8(0x03) +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Port B Data Direction Register */ +#define DDRB _SFR_IO8(0x04) +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Port B Data Register */ +#define PORTB _SFR_IO8(0x05) +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Reserved [0x06..0x08] */ + +/* Port D Input Pins Address */ +#define PIND _SFR_IO8(0x09) +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Port D Data Direction Register */ +#define DDRD _SFR_IO8(0x0A) +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Port D Data Register */ +#define PORTD _SFR_IO8(0x0B) +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Port E Input Pins Address */ +#define PINE _SFR_IO8(0x0C) +/* PINE */ +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* Port E Data Direction Register */ +#define DDRE _SFR_IO8(0x0D) +/* DDRE */ +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* Port E Data Register */ +#define PORTE _SFR_IO8(0x0E) +/* PORTE */ +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Reserved [0x0F..0x14] */ + +/* Timer/Counter 0 Interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) +/* TIFR0 */ +#define OCF0B 2 /* Output Compare Flag 0B */ +#define OCF0A 1 /* Output Compare Flag 0A */ +#define TOV0 0 /* Overflow Flag */ + +/* Timer/Counter1 Interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) +/* TIFR1 */ +#define ICF1 5 /* Input Capture Flag 1 */ +#define OCF1B 2 /* Output Compare Flag 1B*/ +#define OCF1A 1 /* Output Compare Flag 1A*/ +#define TOV1 0 /* Overflow Flag */ + +/* Reserved [0x17..0x18] */ + +/* General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x19) +/* GPIOR1 */ +#define GPIOR17 7 +#define GPIOR16 6 +#define GPIOR15 5 +#define GPIOR14 4 +#define GPIOR13 3 +#define GPIOR12 2 +#define GPIOR11 1 +#define GPIOR10 0 + +/* General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x1A) +/* GPIOR2 */ +#define GPIOR27 7 +#define GPIOR26 6 +#define GPIOR25 5 +#define GPIOR24 4 +#define GPIOR23 3 +#define GPIOR22 2 +#define GPIOR21 1 +#define GPIOR20 0 + +/* General Purpose I/O Register 3 */ +#define GPIOR3 _SFR_IO8(0x1B) +/* GPIOR3 */ +#define GPIOR37 7 +#define GPIOR36 6 +#define GPIOR35 5 +#define GPIOR34 4 +#define GPIOR33 3 +#define GPIOR32 2 +#define GPIOR31 1 +#define GPIOR30 0 + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) +/* EIFR */ +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +/* External Interrupt Mask Register */ +#define EIMSK _SFR_IO8(0x1D) +/* EIMSK */ +#define INT3 3 /* External Interrupt Request 3 Enable */ +#define INT2 2 /* External Interrupt Request 2 Enable */ +#define INT1 1 /* External Interrupt Request 1 Enable */ +#define INT0 0 /* External Interrupt Request 0 Enable */ + +/* General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) +/* GPIOR0 */ +#define GPIOR07 7 +#define GPIOR06 6 +#define GPIOR05 5 +#define GPIOR04 4 +#define GPIOR03 3 +#define GPIOR02 2 +#define GPIOR01 1 +#define GPIOR00 0 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1F) +/* EECR */ +#define EERIE 3 /* EEPROM Ready Interrupt Enable */ +#define EEMWE 2 /* EEPROM Master Write Enable */ +#define EEWE 1 /* EEPROM Write Enable */ +#define EERE 0 /* EEPROM Read Enable */ + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x20) +/* EEDR */ +#define EEDR7 7 +#define EEDR6 6 +#define EEDR5 5 +#define EEDR4 4 +#define EEDR3 3 +#define EEDR2 2 +#define EEDR1 1 +#define EEDR0 0 + +/* The EEPROM Address Registers */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0x22) +/* EEARH */ +#define EEAR11 3 +#define EEAR10 2 +#define EEAR9 1 +#define EEAR8 0 +/* EEARL */ +#define EEAR7 7 +#define EEAR6 6 +#define EEAR5 5 +#define EEAR4 4 +#define EEAR3 3 +#define EEAR2 2 +#define EEAR1 1 +#define EEAR0 0 + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) +/* GTCCR */ +#define TSM 7 /* Timer/Counter Synchronization Mode */ +#define ICPSEL1 6 /* Timer1 Input Capture Selection Bit */ +#define PSRSYNC 0 + +/* Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) +/* TCCR0A */ +#define COM0A1 7 /* Compare Output Mode, Phase Correct PWM Mode */ +#define COM0A0 6 /* Compare Output Mode, Phase Correct PWM Mode */ +#define COM0B1 5 /* Compare Output Mode, Fast PWm */ +#define COM0B0 4 /* Compare Output Mode, Fast PWm */ +#define WGM01 1 /* Waveform Generation Mode */ +#define WGM00 0 /* Waveform Generation Mode */ + +/* Timer/Counter Control Register B */ +#define TCCR0B _SFR_IO8(0x25) +/* TCCR0B */ +#define FOC0A 7 /* Force Output Compare A */ +#define FOC0B 6 /* Force Output Compare B */ +#define WGM02 3 /* Waveform Generation Mode */ +#define CS02 2 /* Clock Select */ +#define CS01 1 /* Clock Select */ +#define CS00 0 /* Clock Select */ + +/* Timer/Counter0 Register */ +#define TCNT0 _SFR_IO8(0x26) +/* TCNT0 */ +#define TCNT07 7 +#define TCNT06 6 +#define TCNT05 5 +#define TCNT04 4 +#define TCNT03 3 +#define TCNT02 2 +#define TCNT01 1 +#define TCNT00 0 + +/* Timer/Counter0 Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) +/* OCR0A */ +#define OCR0A7 7 +#define OCR0A6 6 +#define OCR0A5 5 +#define OCR0A4 4 +#define OCR0A3 3 +#define OCR0A2 2 +#define OCR0A1 1 +#define OCR0A0 0 + +/* Timer/Counter0 Output Compare Register B */ +#define OCR0B _SFR_IO8(0x28) +/* OCR0B */ +#define OCR0B7 7 +#define OCR0B6 6 +#define OCR0B5 5 +#define OCR0B4 4 +#define OCR0B3 3 +#define OCR0B2 2 +#define OCR0B1 1 +#define OCR0B0 0 + +/* PLL Control and Status Register */ +#define PLLCSR _SFR_IO8(0x29) +/* PLLCSR */ +#define PLLF 2 +#define PLLE 1 /* PLL Enable */ +#define PLOCK 0 /* PLL Lock Detector */ + +/* Reserved [0x2A..0x2B] */ + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x2C) +/* SPCR */ +#define SPIE 7 /* SPI Interrupt Enable */ +#define SPE 6 /* SPI Enable */ +#define DORD 5 /* Data Order */ +#define MSTR 4 /* Master/Slave Select */ +#define CPOL 3 /* Clock polarity */ +#define CPHA 2 /* Clock Phase */ +#define SPR1 1 /* SPI Clock Rate Select 1 */ +#define SPR0 0 /* SPI Clock Rate Select 0 */ + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x2D) +/* SPSR */ +#define SPIF 7 /* SPI Interrupt Flag */ +#define WCOL 6 /* Write Collision Flag */ +#define SPI2X 0 /* Double SPI Speed Bit */ + +/* SPI Data Register */ +#define SPDR _SFR_IO8(0x2E) +/* SPDR */ +#define SPD7 7 +#define SPD6 6 +#define SPD5 5 +#define SPD4 4 +#define SPD3 3 +#define SPD2 2 +#define SPD1 1 +#define SPD0 0 + +/* Reserved [0x2F] */ + +/* Analog Comparator Status Register */ +#define ACSR _SFR_IO8(0x30) +/* ACSR */ +#define ACCKDIV 7 /* Analog Comparator Clock Divider */ +#define AC2IF 6 /* Analog Comparator 2 Interrupt Flag Bit */ +#define AC0IF 4 /* Analog Comparator 0 Interrupt Flag Bit */ +#define AC2O 2 /* Analog Comparator 2 Output Bit */ +#define AC0O 0 /* Analog Comparator 0 Output Bit */ + +/* Monitor Data Register */ +#define MONDR _SFR_IO8(0x31) + +/* Monitor Stop Mode Control Register */ +#define MSMCR _SFR_IO8(0x32) + +/* Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) +/* SMCR */ +#define SM2 3 /* Sleep Mode Select bit2 */ +#define SM1 2 /* Sleep Mode Select bit1 */ +#define SM0 1 /* Sleep Mode Select bit0 */ +#define SE 0 /* Sleep Enable */ + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) +/* MCUSR */ +#define WDRF 3 /* Watchdog Reset Flag */ +#define BORF 2 /* Brown-out Reset Flag */ +#define EXTRF 1 /* External Reset Flag */ +#define PORF 0 /* Power-on reset flag */ + +/* MCU Control Register */ +#define MCUCR _SFR_IO8(0x35) +/* MCUCR */ +#define SPIPS 7 /* SPI Pin Select */ +#define PUD 4 /* Pull-up disable */ +#define IVSEL 1 /* Interrupt Vector Select */ +#define IVCE 0 /* Interrupt Vector Change Enable */ + +/* Reserved [0x36] */ + +/* Store Program Memory Control Register */ +#define SPMCSR _SFR_IO8(0x37) +/* SPMCSR */ +#define SPMIE 7 /* SPM Interrupt Enable */ +#define RWWSB 6 /* Read While Write Section Busy */ +#define RWWSRE 4 /* Read While Write section read enable */ +#define BLBSET 3 /* Boot Lock Bit Set */ +#define PGWRT 2 /* Page Write */ +#define PGERS 1 /* Page Erase */ +#define SPMEN 0 /* Store Program Memory Enable */ + +/* Reserved [0x38..0x3C] */ + +/* 0x3D..0x3E SP [defined in ] */ +/* 0x3F SREG [defined in ] */ + +/* Watchdog Timer Control Register */ +#define WDTCSR _SFR_MEM8(0x60) +/* WDTCSR */ +#define WDIF 7 /* Watchdog Timeout Interrupt Flag */ +#define WDIE 6 /* Watchdog Timeout Interrupt Enable */ +#define WDP3 5 /* Watchdog Timer Prescaler bit3 */ +#define WDCE 4 /* Watchdog Change Enable */ +#define WDE 3 /* Watchdog Enable */ +#define WDP2 2 /* Watchdog Timer Prescaler bit2 */ +#define WDP1 1 /* Watchdog Timer Prescaler bit1 */ +#define WDP0 0 /* Watchdog Timer Prescaler bit0 */ + +/* Clock Prescaler Register */ +#define CLKPR _SFR_MEM8(0x61) +/* CLKPR */ +#define CLKPCE 7 /* Clock Prescaler Change Enable */ +#define CLKPS3 3 /* Clock Prescaler Select bit3 */ +#define CLKPS2 2 /* Clock Prescaler Select bit2 */ +#define CLKPS1 1 /* Clock Prescaler Select bit1 */ +#define CLKPS0 0 /* Clock Prescaler Select bit0 */ + +/* Reserved [0x62..0x63] */ + +/* Power Reduction Register */ +#define PRR _SFR_MEM8(0x64) +/* PRR */ +#define PRPSC2 7 /* Power Reduction PSC2 */ +#define PRPSC1 6 /* Power Reduction PSC1 */ +#define PRPSC0 5 /* Power Reduction PSC0 */ +#define PRTIM1 4 /* Power Reduction Timer/Counter1 */ +#define PRTIM0 3 /* Power Reduction Timer/Counter0 */ +#define PRSPI 2 /* Power Reduction Serial Peripheral Interface */ +#define PRADC 0 /* Power Reduction ADC */ + +/* Reserved [0x65] */ + +/* Oscillator Calibration Value */ +#define OSCCAL _SFR_MEM8(0x66) +/* OSCCAL */ +#define CAL6 6 +#define CAL5 5 +#define CAL4 4 +#define CAL3 3 +#define CAL2 2 +#define CAL1 1 +#define CAL0 0 + +/* Reserved [0x67..0x68] */ + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) +/* EICRA */ +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Reserved [0x6A..0x6D] */ + +/* Timer/Counter0 Interrupt Mask Register */ +#define TIMSK0 _SFR_MEM8(0x6E) +/* TIMSK0 */ +#define OCIE0B 2 /* Output Compare Match B Interrupt Enable */ +#define OCIE0A 1 /* Output Compare Match A Interrupt Enable */ +#define TOIE0 0 /* Overflow Interrupt Enable */ + +/* Timer/Counter1 Interrupt Mask Register */ +#define TIMSK1 _SFR_MEM8(0x6F) +/* TIMSK1 */ +#define ICIE1 5 /* Input Capture Interrupt Enable */ +#define OCIE1B 2 /* Output Compare Match B Interrupt Enable */ +#define OCIE1A 1 /* Output Compare Match A Interrupt Enable */ +#define TOIE1 0 /* Overflow Interrupt Enable */ + +/* Reserved [0x70..0x75] */ + +/* Amplifier 0 Control and Status register */ +#define AMP0CSR _SFR_MEM8(0x76) +#define AMP0EN 7 +#define AMP0IS 6 +#define AMP0G1 5 +#define AMP0G0 4 +#define AMP0TS1 1 +#define AMP0TS0 0 + +/* Reserved [0x77] */ + +/* ADC Result Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +/* ADC Control and Status Register A */ +#define ADCSRA _SFR_MEM8(0x7A) +/* ADCSRA */ +#define ADEN 7 /* ADC Enable */ +#define ADSC 6 /* ADC Start Conversion */ +#define ADATE 5 /* ADC Auto Trigger Enable */ +#define ADIF 4 /* ADC Interrupt Flag */ +#define ADIE 3 /* ADC Interrupt Enable */ +#define ADPS2 2 /* ADC Prescaler Select bit2 */ +#define ADPS1 1 /* ADC Prescaler Select bit1 */ +#define ADPS0 0 /* ADC Prescaler Select bit0 */ + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x7B) +/* ADCSRB */ +#define ADTS3 3 /* ADC Auto Trigger Source 2 */ +#define ADTS2 2 /* ADC Auto Trigger Source 2 */ +#define ADTS1 1 /* ADC Auto Trigger Source 1 */ +#define ADTS0 0 /* ADC Auto Trigger Source 0 */ + +/* ADC multiplexer Selection Register */ +#define ADMUX _SFR_MEM8(0x7C) +/* ADMUX */ +#define REFS1 7 /* Reference Selection bit1 */ +#define REFS0 6 /* Reference Selection bit0 */ +#define ADLAR 5 /* Left Adjust Result */ +#define MUX3 3 /* Analog Channel and Gain Selection bit3 */ +#define MUX2 2 /* Analog Channel and Gain Selection bit2 */ +#define MUX1 1 /* Analog Channel and Gain Selection bit1 */ +#define MUX0 0 /* Analog Channel and Gain Selection bit0 */ + +/* Reserved [0x7D] */ + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) +/* DIDR0 */ +#define ADC7D 7 /* ADC7 Digital input Disable */ +#define ADC6D 6 /* ADC6 Digital input Disable */ +#define ADC5D 5 /* ADC5 Digital input Disable */ +#define ADC4D 4 /* ADC4 Digital input Disable */ +#define ADC3D 3 /* ADC3 Digital input Disable */ +#define ADC2D 2 /* ADC2 Digital input Disable */ +#define ADC1D 1 /* ADC1 Digital input Disable */ +#define ADC0D 0 /* ADC0 Digital input Disable */ + +/* Digital Input Disable Register 1 */ +#define DIDR1 _SFR_MEM8(0x7F) +/* DIDR1 */ +#define ACMP0D 5 +#define AMP0PD 4 +#define AMP0ND 3 +#define ADC10D 2 /* ADC10 Digital input Disable */ +#define ADC9D 1 /* ADC9 Digital input Disable */ +#define ADC8D 0 /* ADC8 Digital input Disable */ + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_MEM8(0x80) +/* TCCR1A */ +#define COM1A1 7 /* Comparet Ouput Mode 1A, bit 1 */ +#define COM1A0 6 /* Comparet Ouput Mode 1A, bit 0 */ +#define COM1B1 5 /* Compare Output Mode 1B, bit 1 */ +#define COM1B0 4 /* Compare Output Mode 1B, bit 0 */ +#define WGM11 1 /* Waveform Generation Mode */ +#define WGM10 0 /* Waveform Generation Mode */ + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_MEM8(0x81) +/* TCCR1B */ +#define ICNC1 7 /* Input Capture 1 Noise Canceler */ +#define ICES1 6 /* Input Capture 1 Edge Select */ +#define WGM13 4 /* Waveform Generation Mode */ +#define WGM12 3 /* Waveform Generation Mode */ +#define CS12 2 /* Prescaler source of Timer/Counter 1 */ +#define CS11 1 /* Prescaler source of Timer/Counter 1 */ +#define CS10 0 /* Prescaler source of Timer/Counter 1 */ + +/* Timer/Counter1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x82) +/* TCCR1C */ +#define FOC1A 7 /* Force Output Compare for Channel A */ +#define FOC1B 6 /* Force Output Compare for Channel B */ + +/* Reserved [0x83] */ + +/* Timer/Counter1 */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) +/* TCNT1H */ +#define TCNT115 7 +#define TCNT114 6 +#define TCNT113 5 +#define TCNT112 4 +#define TCNT111 3 +#define TCNT110 2 +#define TCNT19 1 +#define TCNT18 0 +/* TCNT1L */ +#define TCNT17 7 +#define TCNT16 6 +#define TCNT15 5 +#define TCNT14 4 +#define TCNT13 3 +#define TCNT12 2 +#define TCNT11 1 +#define TCNT10 0 + +/* Input Capture Register 1 */ +#define ICR1 _SFR_MEM16(0x86) +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) +/* ICR1H */ +#define ICR115 7 +#define ICR114 6 +#define ICR113 5 +#define ICR112 4 +#define ICR111 3 +#define ICR110 2 +#define ICR19 1 +#define ICR18 0 +/* ICR1L */ +#define ICR17 7 +#define ICR16 6 +#define ICR15 5 +#define ICR14 4 +#define ICR13 3 +#define ICR12 2 +#define ICR11 1 +#define ICR10 0 + +/* Output Compare Register 1 A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) +/* OCR1AH */ +#define OCR1A15 7 +#define OCR1A14 6 +#define OCR1A13 5 +#define OCR1A12 4 +#define OCR1A11 3 +#define OCR1A10 2 +#define OCR1A9 1 +#define OCR1A8 0 +/* OCR1AL */ +#define OCR1A7 7 +#define OCR1A6 6 +#define OCR1A5 5 +#define OCR1A4 4 +#define OCR1A3 3 +#define OCR1A2 2 +#define OCR1A1 1 +#define OCR1A0 0 + +/* Output Compare Register 1 B */ +#define OCR1B _SFR_MEM16(0x8A) +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) +/* OCR1BH */ +#define OCR1B15 7 +#define OCR1B14 6 +#define OCR1B13 5 +#define OCR1B12 4 +#define OCR1B11 3 +#define OCR1B10 2 +#define OCR1B9 1 +#define OCR1B8 0 +/* OCR1BL */ +#define OCR1B7 7 +#define OCR1B6 6 +#define OCR1B5 5 +#define OCR1B4 4 +#define OCR1B3 3 +#define OCR1B2 2 +#define OCR1B1 1 +#define OCR1B0 0 + +/* Reserved [0x8C..0x9F] */ + +/* PSC0 Interrupt Flag Register */ +#define PIFR0 _SFR_MEM8(0xA0) +/* PIFR0 */ +#define PSEI0 5 /* PSC0 Synchro Error Interrupt */ +#define PEV0B 4 /* PSC0 External Event B Interrupt */ +#define PEV0A 3 /* PSC0 External Event A Interrupt */ +#define PRN01 2 /* PSC0 Ramp Number bit1 */ +#define PRN00 1 /* PSC0 Ramp Number bit0 */ +#define PEOP0 0 /* End Of PSC0 Interrupt */ + +/* PSC0 Interrupt Mask Register */ +#define PIM0 _SFR_MEM8(0xA1) +/* PIM0 */ +#define PSEIE0 5 /* PSC0 Synchro Error Interrupt Enable */ +#define PEVE0B 4 /* PSC0 External Event B Interrupt Enable */ +#define PEVE0A 3 /* PSC0 External Event A Interrupt Enable */ +#define PEOPE0 0 /* PSC0 End Of Cycle Interrupt Enable */ + +/* Reserved [0xA2..0xA3] */ + +/* PSC2 Interrupt Flag Register */ +#define PIFR2 _SFR_MEM8(0xA4) +/* PIFR2 */ +#define PSEI2 5 /* PSC2 Synchro Error Interrupt */ +#define PEV2B 4 /* PSC2 External Event B Interrupt */ +#define PEV2A 3 /* PSC2 External Event A Interrupt */ +#define PRN21 2 /* PSC2 Ramp Number bit1 */ +#define PRN20 1 /* PSC2 Ramp Number bit0 */ +#define PEOP2 0 /* End Of PSC2 Interrupt */ + +/* PSC2 Interrupt Mask Register */ +#define PIM2 _SFR_MEM8(0xA5) +/* PIM2 */ +#define PSEIE2 5 /* PSC2 Synchro Error Interrupt Enable */ +#define PEVE2B 4 /* PSC2 External Event B Interrupt Enable */ +#define PEVE2A 3 /* PSC2 External Event A Interrupt Enable */ +#define PEOPE2 0 /* PSC2 End Of Cycle Interrupt Enable */ + +/* Reserved [0xA6..0xAC] */ + +/* Analog Comparator 0 Control Register */ +#define AC0CON _SFR_MEM8(0xAD) +/* AC0CON */ +#define AC0EN 7 /* Analog Comparator 0 Enable Bit */ +#define AC0IE 6 /* Analog Comparator 0 Interrupt Enable bit */ +#define AC0IS1 5 /* Analog Comparator 0 Interrupt Select bit1 */ +#define AC0IS0 4 /* Analog Comparator 0 Interrupt Select bit0 */ +#define AC0M2 2 /* Analog Comparator 0 Multiplexer register bit2 */ +#define AC0M1 1 /* Analog Comparator 0 Multiplexer register bit1 */ +#define AC0M0 0 /* Analog Comparator 0 Multiplexer register bit0 */ + +/* Reserved [0xB0..0xAE] */ + +/* Analog Comparator 2 Control Register */ +#define AC2CON _SFR_MEM8(0xAF) +/* AC2CON */ +#define AC2EN 7 /* Analog Comparator 2 Enable Bit */ +#define AC2IE 6 /* Analog Comparator 2 Interrupt Enable bit */ +#define AC2IS1 5 /* Analog Comparator 2 Interrupt Select bit1 */ +#define AC2IS0 4 /* Analog Comparator 2 Interrupt Select bit0 */ +#define AC2M2 2 /* Analog Comparator 2 Multiplexer register bit2 */ +#define AC2M1 1 /* Analog Comparator 2 Multiplexer register bit1 */ +#define AC2M0 0 /* Analog Comparator 2 Multiplexer register bit0 */ + +/* Reserved [0xB0..0xCF] */ + +/* PSC 0 Synchro and Output Configuration */ +#define PSOC0 _SFR_MEM8(0xD0) +/* PSOC0 */ +#define PSYNC01 5 /* Synchronization Out for ADC Selection bit1 */ +#define PSYNC00 4 /* Synchronization Out for ADC Selection bit0 */ +#define POEN0B 2 /* PSC 0 OUT Part B Output Enable */ +#define POEN0A 0 /* PSC 0 OUT Part A Output Enable */ + +/* Reserved [0xD1] */ + +/* Output Compare SA Registers */ +#define OCR0SA _SFR_MEM16(0xD2) +#define OCR0SAL _SFR_MEM8(0xD2) +#define OCR0SAH _SFR_MEM8(0xD3) + +/* Output Compare RA Registers */ +#define OCR0RA _SFR_MEM16(0xD4) +#define OCR0RAL _SFR_MEM8(0xD4) +#define OCR0RAH _SFR_MEM8(0xD5) + +/* Output Compare SB Registers */ +#define OCR0SB _SFR_MEM16(0xD6) +#define OCR0SBL _SFR_MEM8(0xD6) +#define OCR0SBH _SFR_MEM8(0xD7) + +/* Output Compare RB Registers */ +#define OCR0RB _SFR_MEM16(0xD8) +#define OCR0RBL _SFR_MEM8(0xD8) +#define OCR0RBH _SFR_MEM8(0xD9) + +/* PSC 0 Configuration Register */ +#define PCNF0 _SFR_MEM8(0xDA) +/* PCNF0 */ +#define PFIFTY0 7 /* PSC 0 Fifty */ +#define PALOCK0 6 /* PSC 0 Autolock */ +#define PLOCK0 5 /* PSC 0 Lock */ +#define PMODE01 4 /* PSC 0 Mode bit1 */ +#define PMODE00 3 /* PSC 0 Mode bit0 */ +#define POP0 2 /* PSC 0 Output Polarity */ +#define PCLKSEL0 1 /* PSC 0 Input Clock Select */ + +/* PSC 0 Control Register */ +#define PCTL0 _SFR_MEM8(0xDB) +/* PCTL0 */ +#define PPRE01 7 /* PSC 0 Prescaler Select bit1 */ +#define PPRE00 6 /* PSC 0 Prescaler Select bit0 */ +#define PBFM0 5 /* Balance Flank Width Modulation */ +#define PAOC0B 4 /* PSC 0 Asynchronous Output Control B */ +#define PAOC0A 3 /* PSC 0 Asynchronous Output Control A */ +#define PARUN0 2 /* PSC 0 Autorun */ +#define PCCYC0 1 /* PSC 0 Complete Cycle */ +#define PRUN0 0 /* PSC 0 Run */ + +/* PSC 0 Input A Control Register */ +#define PFRC0A _SFR_MEM8(0xDC) +/* PFRC0A */ +#define PCAE0A 7 /* PSC 0 Capture Enable Input Part A */ +#define PISEL0A 6 /* PSC 0 Input Select for Part A */ +#define PELEV0A 5 /* PSC 0 Edge Level Selector of Input Part A */ +#define PFLTE0A 4 /* PSC 0 Filter Enable on Input Part A */ +#define PRFM0A3 3 /* PSC 0 Fault Mode bit3 */ +#define PRFM0A2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0A1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0A0 0 /* PSC 0 Fault Mode bit0 */ + +/* PSC 0 Input B Control Register */ +#define PFRC0B _SFR_MEM8(0xDD) +/* PFRC0B */ +#define PCAE0B 7 /* PSC 0 Capture Enable Input Part B */ +#define PISEL0B 6 /* PSC 0 Input Select for Part B */ +#define PELEV0B 5 /* PSC 0 Edge Level Selector of Input Part B */ +#define PFLTE0B 4 /* PSC 0 Filter Enable on Input Part B */ +#define PRFM0B3 3 /* PSC 0 Fault Mode bit3 */ +#define PRFM0B2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0B1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0B0 0 /* PSC 0 Fault Mode bit0 */ + +/* PSC 0 Input Capture Registers */ +#define PICR0 _SFR_MEM16(0xDE) + +#define PICR0L _SFR_MEM8(0xDE) + +#define PICR0H _SFR_MEM8(0xDF) +#define PCST0 7 /* PSC Capture Software Trig bit */ + +/* Reserved [0xE0..0xEF] */ + +/* PSC 2 Synchro and Output Configuration */ +#define PSOC2 _SFR_MEM8(0xF0) +/* PSOC2 */ +#define POS23 7 /* PSCOUT23 Selection */ +#define POS22 6 /* PSCOUT22 Selection */ +#define PSYNC21 5 /* Synchronization Out for ADC Selection bit1 */ +#define PSYNC20 4 /* Synchronization Out for ADC Selection bit0 */ +#define POEN2D 3 /* PSCOUT23 Output Enable */ +#define POEN2B 2 /* PSC 2 OUT Part B Output Enable */ +#define POEN2C 1 /* PSCOUT22 Output Enable */ +#define POEN2A 0 /* PSC 2 OUT Part A Output Enable */ + +/* PSC 2 Output Matrix */ +#define POM2 _SFR_MEM8(0xF1) +/* POM2 */ +#define POMV2B3 7 /* Output Matrix Output B Ramp 3 */ +#define POMV2B2 6 /* Output Matrix Output B Ramp 2 */ +#define POMV2B1 5 /* Output Matrix Output B Ramp 1 */ +#define POMV2B0 4 /* Output Matrix Output B Ramp 0 */ +#define POMV2A3 3 /* Output Matrix Output A Ramp 3 */ +#define POMV2A2 2 /* Output Matrix Output A Ramp 2 */ +#define POMV2A1 1 /* Output Matrix Output A Ramp 1 */ +#define POMV2A0 0 /* Output Matrix Output A Ramp 0 */ + +/* Output Compare SA Registers */ +#define OCR2SA _SFR_MEM16(0xF2) +#define OCR2SAL _SFR_MEM8(0xF2) +#define OCR2SAH _SFR_MEM8(0xF3) + +/* Output Compare RA Registers */ +#define OCR2RA _SFR_MEM16(0xF4) +#define OCR2RAL _SFR_MEM8(0xF4) +#define OCR2RAH _SFR_MEM8(0xF5) + +/* Output Compare SB Registers */ +#define OCR2SB _SFR_MEM16(0xF6) +#define OCR2SBL _SFR_MEM8(0xF6) +#define OCR2SBH _SFR_MEM8(0xF7) + +/* Output Compare RB Registers */ +#define OCR2RB _SFR_MEM16(0xF8) +#define OCR2RBL _SFR_MEM8(0xF8) +#define OCR2RBH _SFR_MEM8(0xF9) + +/* PSC 2 Configuration Register */ +#define PCNF2 _SFR_MEM8(0xFA) +/* PCNF2 */ +#define PFIFTY2 7 /* PSC 2 Fifty */ +#define PALOCK2 6 /* PSC 2 Autolock */ +#define PLOCK2 5 /* PSC 2 Lock */ +#define PMODE21 4 /* PSC 2 Mode bit1 */ +#define PMODE20 3 /* PSC 2 Mode bit0 */ +#define POP2 2 /* PSC 2 Output Polarity */ +#define PCLKSEL2 1 /* PSC 2 Input Clock Select */ +#define POME2 0 /* PSC 2 Output Matrix Enable */ + +/* PSC 2 Control Register */ +#define PCTL2 _SFR_MEM8(0xFB) +/* PCTL2 */ +#define PPRE21 7 /* PSC 2 Prescaler Select bit1 */ +#define PPRE20 6 /* PSC 2 Prescaler Select bit0 */ +#define PBFM2 5 /* Balance Flank Width Modulation */ +#define PAOC2B 4 /* PSC 2 Asynchronous Output Control B */ +#define PAOC2A 3 /* PSC 2 Asynchronous Output Control A */ +#define PARUN2 2 /* PSC 2 Autorun */ +#define PCCYC2 1 /* PSC 2 Complete Cycle */ +#define PRUN2 0 /* PSC 2 Run */ + +/* PSC 2 Input A Control Register */ +#define PFRC2A _SFR_MEM8(0xFC) +/* PFRC2A */ +#define PCAE2A 7 /* PSC 2 Capture Enable Input Part A */ +#define PISEL2A 6 /* PSC 2 Input Select for Part A */ +#define PELEV2A 5 /* PSC 2 Edge Level Selector of Input Part A */ +#define PFLTE2A 4 /* PSC 2 Filter Enable on Input Part A */ +#define PRFM2A3 3 /* PSC 2 Fault Mode bit3 */ +#define PRFM2A2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2A1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2A0 0 /* PSC 2 Fault Mode bit0 */ + +/* PSC 2 Input B Control Register */ +#define PFRC2B _SFR_MEM8(0xFD) +/* PFRC2B */ +#define PCAE2B 7 /* PSC 2 Capture Enable Input Part B */ +#define PISEL2B 6 /* PSC 2 Input Select for Part B */ +#define PELEV2B 5 /* PSC 2 Edge Level Selector of Input Part B */ +#define PFLTE2B 4 /* PSC 2 Filter Enable on Input Part B */ +#define PRFM2B3 3 /* PSC 2 Fault Mode bit3 */ +#define PRFM2B2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2B1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2B0 0 /* PSC 2 Fault Mode bit0 */ + +/* PSC 2 Input Capture Registers */ +#define PICR2 _SFR_MEM16(0xFE) + +#define PICR2L _SFR_MEM8(0xFE) + +#define PICR2H _SFR_MEM8(0xFF) +#define PCST2 7 /* PSC Capture Software Trig bit */ + /* not implemented on AT90PWM2/AT90PWM3 */ + + +/* Interrupt vectors */ +/* PSC2 Capture Event */ +#define PSC2_CAPT_vect _VECTOR(1) +#define SIG_PSC2_CAPTURE _VECTOR(1) + +/* PSC2 End Cycle */ +#define PSC2_EC_vect _VECTOR(2) +#define SIG_PSC2_END_CYCLE _VECTOR(2) + +/* PSC0 Capture Event */ +#define PSC0_CAPT_vect _VECTOR(5) +#define SIG_PSC0_CAPTURE _VECTOR(5) + +/* PSC0 End Cycle */ +#define PSC0_EC_vect _VECTOR(6) +#define SIG_PSC0_END_CYCLE _VECTOR(6) + +/* Analog Comparator 0 */ +#define ANALOG_COMP_0_vect _VECTOR(7) +#define SIG_COMPARATOR0 _VECTOR(7) + +/* Analog Comparator 2 */ +#define ANALOG_COMP_2_vect _VECTOR(9) +#define SIG_COMPARATOR2 _VECTOR(9) + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(10) +#define SIG_INTERRUPT0 _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) +#define SIG_INPUT_CAPTURE1 _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) +#define SIG_OUTPUT_COMPARE1_A _VECTOR(12) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) +#define SIG_OUTPUT_COMPARE1_B _VECTOR(13) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(15) +#define SIG_OVERFLOW1 _VECTOR(15) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMP_A_vect _VECTOR(16) +#define SIG_OUTPUT_COMPARE0A _VECTOR(16) +#define SIG_OUTPUT_COMPARE0_A _VECTOR(16) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(17) +#define SIG_OVERFLOW0 _VECTOR(17) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(18) +#define SIG_ADC _VECTOR(18) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(19) +#define SIG_INTERRUPT1 _VECTOR(19) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(20) +#define SIG_SPI _VECTOR(20) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(24) +#define SIG_INTERRUPT2 _VECTOR(24) + +/* Watchdog Timeout Interrupt */ +#define WDT_vect _VECTOR(25) +#define SIG_WDT _VECTOR(25) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(25) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(26) +#define SIG_EEPROM_READY _VECTOR(26) + +/* Timer Counter 0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(27) +#define SIG_OUTPUT_COMPARE0B _VECTOR(27) +#define SIG_OUTPUT_COMPARE0_B _VECTOR(27) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(28) +#define SIG_INTERRUPT3 _VECTOR(28) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(31) +#define SIG_SPM_READY _VECTOR(31) + +#define _VECTORS_SIZE 64 + +/* Constants */ +#define SPM_PAGESIZE 64 + +#define RAMEND 0x02FF +#define XRAMEND 0x02FF +#define E2END 0x01FF +#define FLASHEND 0x0FFF + + +/* Fuse Information */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Diasble */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_PSCRV (unsigned char)~_BV(4) +#define FUSE_PSC0RB (unsigned char)~_BV(5) +#define FUSE_PSC2RB (unsigned char)~_BV(7) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +#endif /* _AVR_IOPWM1_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm216.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm216.h new file mode 100644 index 0000000..8e7373b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm216.h @@ -0,0 +1,1181 @@ +/* Copyright (c) 2007, Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io90pwm216.h,v 1.7.2.6 2008/10/17 23:27:45 arcanum Exp $ */ + +/* avr/io90pwm216.h - definitions for AT90PWM216 */ + +#ifndef _AVR_IO90PWM216_H_ +#define _AVR_IO90PWM216_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io90pwm216.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Port B Input Pins Address */ +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +/* Port B Data Direction Register */ +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +/* Port B Data Register */ +#define PORTB _SFR_IO8(0x05) +#define PB0 0 +#define PB1 1 +#define PB2 2 +#define PB3 3 +#define PB4 4 +#define PB5 5 +#define PB6 6 +#define PB7 7 + +/* Port C Input Pins Address */ +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +/* Port C Data Direction Register */ +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +/* Port C Data Register */ +#define PORTC _SFR_IO8(0x08) +#define PC0 0 +#define PC1 1 +#define PC2 2 +#define PC3 3 +#define PC4 4 +#define PC5 5 +#define PC6 6 +#define PC7 7 + +/* Port D Input Pins Address */ +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +/* Port D Data Direction Register */ +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +/* Port D Data Register */ +#define PORTD _SFR_IO8(0x0B) +#define PD0 0 +#define PD1 1 +#define PD2 2 +#define PD3 3 +#define PD4 4 +#define PD5 5 +#define PD6 6 +#define PD7 7 + +/* Port E Input Pins Address */ +#define PINE _SFR_IO8(0x0C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 + +/* Port E Data Direction Register */ +#define DDRE _SFR_IO8(0x0D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 + +/* Port E Data Register */ +#define PORTE _SFR_IO8(0x0E) +#define PE0 0 +#define PE1 1 +#define PE2 2 + +/* Timer/Counter 0 Interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 /* Overflow Flag */ +#define OCF0A 1 /* Output Compare Flag 0A */ +#define OCF0B 2 /* Output Compare Flag 0B */ + +/* Timer/Counter1 Interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 /* Overflow Flag */ +#define OCF1A 1 /* Output Compare Flag 1A*/ +#define OCF1B 2 /* Output Compare Flag 1B*/ +#define ICF1 5 /* Input Capture Flag 1 */ + +/* General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x19) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +/* General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x1A) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +/* General Purpose I/O Register 3 */ +#define GPIOR3 _SFR_IO8(0x1B) +#define GPIOR30 0 +#define GPIOR31 1 +#define GPIOR32 2 +#define GPIOR33 3 +#define GPIOR34 4 +#define GPIOR35 5 +#define GPIOR36 6 +#define GPIOR37 7 + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 + +/* External Interrupt Mask Register */ +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 /* External Interrupt Request 0 Enable */ +#define INT1 1 /* External Interrupt Request 1 Enable */ +#define INT2 2 /* External Interrupt Request 2 Enable */ +#define INT3 3 /* External Interrupt Request 3 Enable */ + +/* General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1F) +#define EERE 0 /* EEPROM Read Enable */ +#define EEWE 1 /* EEPROM Write Enable */ +#define EEMWE 2 /* EEPROM Master Write Enable */ +#define EERIE 3 /* EEPROM Ready Interrupt Enable */ + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +/* The EEPROM Address Registers */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 /* Prescaler Reset Timer/Counter1 and Timer/Counter0 */ +#define ICPSEL1 6 /* Timer1 Input Capture Selection Bit */ +#define TSM 7 /* Timer/Counter Synchronization Mode */ + +/* Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 /* Waveform Generation Mode */ +#define WGM01 1 /* Waveform Generation Mode */ +#define COM0B0 4 /* Compare Output Mode, Fast PWm */ +#define COM0B1 5 /* Compare Output Mode, Fast PWm */ +#define COM0A0 6 /* Compare Output Mode, Phase Correct PWM Mode */ +#define COM0A1 7 /* Compare Output Mode, Phase Correct PWM Mode */ + +/* Timer/Counter Control Register B */ +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 /* Clock Select */ +#define CS01 1 /* Clock Select */ +#define CS02 2 /* Clock Select */ +#define WGM02 3 /* Waveform Generation Mode */ +#define FOC0B 6 /* Force Output Compare B */ +#define FOC0A 7 /* Force Output Compare A */ + +/* Timer/Counter0 Register */ +#define TCNT0 _SFR_IO8(0x26) +#define TCNT00 0 +#define TCNT01 1 +#define TCNT02 2 +#define TCNT03 3 +#define TCNT04 4 +#define TCNT05 5 +#define TCNT06 6 +#define TCNT07 7 + +/* Timer/Counter0 Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) +#define OCR0A0 0 +#define OCR0A1 1 +#define OCR0A2 2 +#define OCR0A3 3 +#define OCR0A4 4 +#define OCR0A5 5 +#define OCR0A6 6 +#define OCR0A7 7 + +/* Timer/Counter0 Output Compare Register B */ +#define OCR0B _SFR_IO8(0x28) +#define OCR0B0 0 +#define OCR0B1 1 +#define OCR0B2 2 +#define OCR0B3 3 +#define OCR0B4 4 +#define OCR0B5 5 +#define OCR0B6 6 +#define OCR0B7 7 + +/* PLL Control and Status Register */ +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 /* PLL Lock Detector */ +#define PLLE 1 /* PLL Enable */ +#define PLLF 2 /* PLL Factor */ + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 /* SPI Clock Rate Select 0 */ +#define SPR1 1 /* SPI Clock Rate Select 1 */ +#define CPHA 2 /* Clock Phase */ +#define CPOL 3 /* Clock polarity */ +#define MSTR 4 /* Master/Slave Select */ +#define DORD 5 /* Data Order */ +#define SPE 6 /* SPI Enable */ +#define SPIE 7 /* SPI Interrupt Enable */ + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 /* Double SPI Speed Bit */ +#define WCOL 6 /* Write Collision Flag */ +#define SPIF 7 /* SPI Interrupt Flag */ + +/* SPI Data Register */ +#define SPDR _SFR_IO8(0x2E) +#define SPD0 0 +#define SPD1 1 +#define SPD2 2 +#define SPD3 3 +#define SPD4 4 +#define SPD5 5 +#define SPD6 6 +#define SPD7 7 + +/* Analog Comparator Status Register */ +#define ACSR _SFR_IO8(0x30) +#define AC0O 0 /* Analog Comparator 0 Output Bit */ +#define AC1O 1 /* Analog Comparator 1 Output Bit */ +#define AC2O 2 /* Analog Comparator 2 Output Bit */ +#define AC0IF 4 /* Analog Comparator 0 Interrupt Flag Bit */ +#define AC1IF 5 /* Analog Comparator 1 Interrupt Flag Bit */ +#define AC2IF 6 /* Analog Comparator 2 Interrupt Flag Bit */ +#define ACCKDIV 7 /* Analog Comparator Clock Divider */ + +/* Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) +#define SE 0 /* Sleep Enable */ +#define SM0 1 /* Sleep Mode Select bit0 */ +#define SM1 2 /* Sleep Mode Select bit1 */ +#define SM2 3 /* Sleep Mode Select bit2 */ + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 /* Power-on reset flag */ +#define EXTRF 1 /* External Reset Flag */ +#define BORF 2 /* Brown-out Reset Flag */ +#define WDRF 3 /* Watchdog Reset Flag */ + +/* MCU Control Register */ +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 /* Interrupt Vector Change Enable */ +#define IVSEL 1 /* Interrupt Vector Select */ +#define PUD 4 /* Pull-up disable */ +#define SPIPS 7 /* SPI Pin Select */ + +/* Store Program Memory Control Register */ +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 /* Store Program Memory Enable */ +#define PGERS 1 /* Page Erase */ +#define PGWRT 2 /* Page Write */ +#define BLBSET 3 /* Boot Lock Bit Set */ +#define RWWSRE 4 /* Read While Write section read enable */ +#define RWWSB 6 /* Read While Write Section Busy */ +#define SPMIE 7 /* SPM Interrupt Enable */ + +/* Watchdog Timer Control Register */ +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 /* Watchdog Timer Prescaler bit0 */ +#define WDP1 1 /* Watchdog Timer Prescaler bit1 */ +#define WDP2 2 /* Watchdog Timer Prescaler bit2 */ +#define WDE 3 /* Watchdog Enable */ +#define WDCE 4 /* Watchdog Change Enable */ +#define WDP3 5 /* Watchdog Timer Prescaler bit3 */ +#define WDIE 6 /* Watchdog Timeout Interrupt Enable */ +#define WDIF 7 /* Watchdog Timeout Interrupt Flag */ + +/* Clock Prescaler Register */ +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 /* Clock Prescaler Select bit0 */ +#define CLKPS1 1 /* Clock Prescaler Select bit1 */ +#define CLKPS2 2 /* Clock Prescaler Select bit2 */ +#define CLKPS3 3 /* Clock Prescaler Select bit3 */ +#define CLKPCE 7 /* Clock Prescaler Change Enable */ + +/* Power Reduction Register */ +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 /* Power Reduction ADC */ +#define PRUSART 1 /* Power Reduction USART */ +#define PRSPI 2 /* Power Reduction Serial Peripheral Interface */ +#define PRTIM0 3 /* Power Reduction Timer/Counter0 */ +#define PRTIM1 4 /* Power Reduction Timer/Counter1 */ +#define PRPSC0 5 /* Power Reduction PSC0 */ +#define PRPSC1 6 /* Power Reduction PSC1 */ +#define PRPSC2 7 /* Power Reduction PSC2 */ + +/* Oscillator Calibration Value */ +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +/* Timer/Counter0 Interrupt Mask Register */ +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 /* Overflow Interrupt Enable */ +#define OCIE0A 1 /* Output Compare Match A Interrupt Enable */ +#define OCIE0B 2 /* Output Compare Match B Interrupt Enable */ + +/* Timer/Counter1 Interrupt Mask Register */ +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 /* Overflow Interrupt Enable */ +#define OCIE1A 1 /* Output Compare Match A Interrupt Enable */ +#define OCIE1B 2 /* Output Compare Match B Interrupt Enable */ +#define ICIE1 5 /* Input Capture Interrupt Enable */ + +/* Amplifier 0 Control and Status register */ +#define AMP0CSR _SFR_MEM8(0x76) +#define AMP0TS0 0 +#define AMP0TS1 1 +#define AMP0G0 4 +#define AMP0G1 5 +#define AMP0IS 6 +#define AMP0EN 7 + +/* Amplifier 1 Control and Status register */ +#define AMP1CSR _SFR_MEM8(0x77) +#define AMP1TS0 0 +#define AMP1TS1 1 +#define AMP1G0 4 +#define AMP1G1 5 +#define AMP1IS 6 +#define AMP1EN 7 + +/* ADC Result Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +/* ADC Control and Status Register A */ +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 /* ADC Prescaler Select bit0 */ +#define ADPS1 1 /* ADC Prescaler Select bit1 */ +#define ADPS2 2 /* ADC Prescaler Select bit2 */ +#define ADIE 3 /* ADC Interrupt Enable */ +#define ADIF 4 /* ADC Interrupt Flag */ +#define ADATE 5 /* ADC Auto Trigger Enable */ +#define ADSC 6 /* ADC Start Conversion */ +#define ADEN 7 /* ADC Enable */ + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 /* ADC Auto Trigger Source 0 */ +#define ADTS1 1 /* ADC Auto Trigger Source 1 */ +#define ADTS2 2 /* ADC Auto Trigger Source 2 */ +#define ADTS3 3 /* ADC Auto Trigger Source 3 */ +#define ADHSM 7 /* ADC High Speed Mode */ + +/* ADC multiplexer Selection Register */ +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 /* Analog Channel and Gain Selection bit0 */ +#define MUX1 1 /* Analog Channel and Gain Selection bit1 */ +#define MUX2 2 /* Analog Channel and Gain Selection bit2 */ +#define MUX3 3 /* Analog Channel and Gain Selection bit3 */ +#define ADLAR 5 /* Left Adjust Result */ +#define REFS0 6 /* Reference Selection bit0 */ +#define REFS1 7 /* Reference Selection bit1 */ + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 /* ADC0 Digital input Disable */ +#define ADC1D 1 /* ADC1 Digital input Disable */ +#define ADC2D 2 /* ADC2 Digital input Disable */ +#define ADC3D 3 /* ADC3 Digital input Disable */ +#define ADC4D 4 /* ADC4 Digital input Disable */ +#define ADC5D 5 /* ADC5 Digital input Disable */ +#define ADC6D 6 /* ADC6 Digital input Disable */ +#define ADC7D 7 /* ADC7 Digital input Disable */ + +/* Digital Input Disable Register 1 */ +#define DIDR1 _SFR_MEM8(0x7F) +#define ADC8D 0 /* ADC8 Digital input Disable */ +#define ADC9D 1 /* ADC9 Digital input Disable */ +#define ADC10D 2 /* ADC10 Digital input Disable */ +#define AMP0ND 3 +#define AMP0PD 4 +#define ACMP0D 5 + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 /* Waveform Generation Mode */ +#define WGM11 1 /* Waveform Generation Mode */ +#define COM1B0 4 /* Compare Output Mode 1B, bit 0 */ +#define COM1B1 5 /* Compare Output Mode 1B, bit 1 */ +#define COM1A0 6 /* Comparet Ouput Mode 1A, bit 0 */ +#define COM1A1 7 /* Comparet Ouput Mode 1A, bit 1 */ + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 /* Prescaler source of Timer/Counter 1 */ +#define CS11 1 /* Prescaler source of Timer/Counter 1 */ +#define CS12 2 /* Prescaler source of Timer/Counter 1 */ +#define WGM12 3 /* Waveform Generation Mode */ +#define WGM13 4 /* Waveform Generation Mode */ +#define ICES1 6 /* Input Capture 1 Edge Select */ +#define ICNC1 7 /* Input Capture 1 Noise Canceler */ + +/* Timer/Counter1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 /* Force Output Compare for Channel B */ +#define FOC1A 7 /* Force Output Compare for Channel A */ + +/* Timer/Counter1 */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT10 0 +#define TCNT11 1 +#define TCNT12 2 +#define TCNT13 3 +#define TCNT14 4 +#define TCNT15 5 +#define TCNT16 6 +#define TCNT17 7 +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT18 0 +#define TCNT19 1 +#define TCNT110 2 +#define TCNT111 3 +#define TCNT112 4 +#define TCNT113 5 +#define TCNT114 6 +#define TCNT115 7 + +/* Input Capture Register 1 */ +#define ICR1 _SFR_MEM16(0x86) +#define ICR1L _SFR_MEM8(0x86) +#define ICR17 7 +#define ICR16 6 +#define ICR15 5 +#define ICR14 4 +#define ICR13 3 +#define ICR12 2 +#define ICR11 1 +#define ICR10 0 +#define ICR1H _SFR_MEM8(0x87) +#define ICR115 7 +#define ICR114 6 +#define ICR113 5 +#define ICR112 4 +#define ICR111 3 +#define ICR110 2 +#define ICR19 1 +#define ICR18 0 + +/* Output Compare Register 1 A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1A0 0 +#define OCR1A1 1 +#define OCR1A2 2 +#define OCR1A3 3 +#define OCR1A4 4 +#define OCR1A5 5 +#define OCR1A6 6 +#define OCR1A7 7 +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1A8 0 +#define OCR1A9 1 +#define OCR1A10 2 +#define OCR1A11 3 +#define OCR1A12 4 +#define OCR1A13 5 +#define OCR1A14 6 +#define OCR1A15 7 + +/* Output Compare Register 1 B */ +#define OCR1B _SFR_MEM16(0x8A) +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1B0 0 +#define OCR1B1 1 +#define OCR1B2 2 +#define OCR1B3 3 +#define OCR1B4 4 +#define OCR1B5 5 +#define OCR1B6 6 +#define OCR1B7 7 +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1B8 0 +#define OCR1B9 1 +#define OCR1B10 2 +#define OCR1B11 3 +#define OCR1B12 4 +#define OCR1B13 5 +#define OCR1B14 6 +#define OCR1B15 7 + +/* PSC0 Interrupt Flag Register */ +#define PIFR0 _SFR_MEM8(0xA0) +#define PEOP0 0 /* End Of PSC0 Interrupt */ +#define PRN00 1 /* PSC0 Ramp Number bit0 */ +#define PRN01 2 /* PSC0 Ramp Number bit1 */ +#define PEV0A 3 /* PSC0 External Event A Interrupt */ +#define PEV0B 4 /* PSC0 External Event B Interrupt */ +#define PSEI0 5 /* PSC0 Synchro Error Interrupt */ +#define POAC0A 6 /* PSC0 Output A Activity */ +#define POAC0B 7 /* PSC0 Output B Activity */ + +/* PSC0 Interrupt Mask Register */ +#define PIM0 _SFR_MEM8(0xA1) +#define PEOPE0 0 /* PSC0 End Of Cycle Interrupt Enable */ +#define PEVE0A 3 /* PSC0 External Event A Interrupt Enable */ +#define PEVE0B 4 /* PSC0 External Event B Interrupt Enable */ +#define PSEIE0 5 /* PSC0 Synchro Error Interrupt Enable */ + +/* PSC1 Interrupt Flag Register */ +#define PIFR1 _SFR_MEM8(0xA2) + +/* PSC1 Interrupt Mask Register */ +#define PIM1 _SFR_MEM8(0xA3) + +/* PSC2 Interrupt Flag Register */ +#define PIFR2 _SFR_MEM8(0xA4) +#define PEOP2 0 /* End Of PSC2 Interrupt */ +#define PRN20 1 /* PSC2 Ramp Number bit0 */ +#define PRN21 2 /* PSC2 Ramp Number bit1 */ +#define PEV2A 3 /* PSC2 External Event A Interrupt */ +#define PEV2B 4 /* PSC2 External Event B Interrupt */ +#define PSEI2 5 /* PSC2 Synchro Error Interrupt */ +#define POAC2A 6 /* PSC2 Output A Activity */ +#define POAC2B 7 /* PSC2 Output B Activity */ + +/* PSC2 Interrupt Mask Register */ +#define PIM2 _SFR_MEM8(0xA5) +#define PEOPE2 0 /* PSC2 End Of Cycle Interrupt Enable */ +#define PEVE2A 3 /* PSC2 External Event A Interrupt Enable */ +#define PEVE2B 4 /* PSC2 External Event B Interrupt Enable */ +#define PSEIE2 5 /* PSC2 Synchro Error Interrupt Enable */ + +/* Digital to Analog Conversion Control Register */ +#define DACON _SFR_MEM8(0xAA) +#define DAEN 0 /* Digital to Analog Enable bit */ +#define DAOE 1 /* Digital to Analog Output Enable bit */ +#define DALA 2 /* Digital to Analog Left Adjust */ +#define DATS0 4 /* DAC Trigger Selection bit0 */ +#define DATS1 5 /* DAC Trigger Selection bit1 */ +#define DATS2 6 /* DAC Trigger Selection bit2 */ +#define DAATE 7 /* DAC Auto Trigger Enable bit */ + +/* Digital to Analog Converter input Register */ +#define DAC _SFR_MEM16(0xAB) +#define DACL _SFR_MEM8(0xAB) +#define DACH _SFR_MEM8(0xAC) + +/* Analog Comparator 0 Control Register */ +#define AC0CON _SFR_MEM8(0xAD) +#define AC0M0 0 /* Analog Comparator 0 Multiplexer register bit0 */ +#define AC0M1 1 /* Analog Comparator 0 Multiplexer register bit1 */ +#define AC0M2 2 /* Analog Comparator 0 Multiplexer register bit2 */ +#define AC0IS0 4 /* Analog Comparator 0 Interrupt Select bit0 */ +#define AC0IS1 5 /* Analog Comparator 0 Interrupt Select bit1 */ +#define AC0IE 6 /* Analog Comparator 0 Interrupt Enable bit */ +#define AC0EN 7 /* Analog Comparator 0 Enable Bit */ + +/* Analog Comparator 1 Control Register */ +#define AC1CON _SFR_MEM8(0xAE) +#define AC1M0 0 /* Analog Comparator 1 Multiplexer register bit0 */ +#define AC1M1 1 /* Analog Comparator 1 Multiplexer register bit1 */ +#define AC1M2 2 /* Analog Comparator 1 Multiplexer register bit2 */ +#define AC1ICE 3 /* Analog Comparator 1 Interrupt Capture Enable bit */ +#define AC1IS0 4 /* Analog Comparator 1 Interrupt Select bit0 */ +#define AC1IS1 5 /* Analog Comparator 1 Interrupt Select bit1 */ +#define AC1IE 6 /* Analog Comparator 1 Interrupt Enable bit */ +#define AC1EN 7 /* Analog Comparator 1 Enable Bit */ + +/* Analog Comparator 2 Control Register */ +#define AC2CON _SFR_MEM8(0xAF) +#define AC2M0 0 /* Analog Comparator 2 Multiplexer register bit0 */ +#define AC2M1 1 /* Analog Comparator 2 Multiplexer register bit1 */ +#define AC2M2 2 /* Analog Comparator 2 Multiplexer register bit2 */ +#define AC2IS0 4 /* Analog Comparator 2 Interrupt Select bit0 */ +#define AC2IS1 5 /* Analog Comparator 2 Interrupt Select bit1 */ +#define AC2IE 6 /* Analog Comparator 2 Interrupt Enable bit */ +#define AC2EN 7 /* Analog Comparator 2 Enable Bit */ + +/* USART Control and Status Register A */ +#define UCSRA _SFR_MEM8(0xC0) +#define MPCM 0 /* Multi-processor Communication Mode */ +#define U2X 1 /* Double the USART Transmission Speed */ +#define UPE 2 /* USART Parity Error */ +#define DOR 3 /* Data OverRun */ +#define FE 4 /* Frame Error */ +#define UDRE 5 /* USART Data Register Empty */ +#define TXC 6 /* USART Transmit Complete */ +#define RXC 7 /* USART Receive Complete */ + +/* USART Control and Status Register B */ +#define UCSRB _SFR_MEM8(0xC1) +#define TXB8 0 /* Transmit Data Bit 8 */ +#define RXB8 1 /* Receive Data Bit 8 */ +#define UCSZ2 2 /* Character Size */ +#define TXEN 3 /* Transmitter Enable */ +#define RXEN 4 /* Receiver Enable */ +#define UDRIE 5 /* USART Data Register Empty Interrupt Enable */ +#define TXCIE 6 /* TX Complete Interrupt Enable */ +#define RXCIE 7 /* RX Complete Interrupt Enable */ + +/* USART Control and Status Register C */ +#define UCSRC _SFR_MEM8(0xC2) +#define UCPOL 0 /* Clock Polarity */ +#define UCSZ0 1 /* Character Size bit0 */ +#define UCSZ1 2 /* Character Size bit1 */ +#define USBS 3 /* Stop Bit Select */ +#define UPM0 4 /* Parity Mode bit0 */ +#define UPM1 5 /* Parity Mode bit1 */ +#define UMSEL 6 /* USART Mode Select */ + +/* USART Baud Rate Register */ +#define UBRR _SFR_MEM16(0xC4) +#define UBRRL _SFR_MEM8(0xC4) +#define UBRRH _SFR_MEM8(0xC5) + +/* USART I/O Data Register */ +#define UDR _SFR_MEM8(0xC6) + +/* EUSART Control and Status Register A */ +#define EUCSRA _SFR_MEM8(0xC8) +#define URxS0 0 /* EUSART Receive Character Size bit0 */ +#define URxS1 1 /* EUSART Receive Character Size bit1 */ +#define URxS2 2 /* EUSART Receive Character Size bit2 */ +#define URxS3 3 /* EUSART Receive Character Size bit3 */ +#define UTxS0 4 /* EUSART Transmit Character Size bit0 */ +#define UTxS1 5 /* EUSART Transmit Character Size bit1 */ +#define UTxS2 6 /* EUSART Transmit Character Size bit2 */ +#define UTxS3 7 /* EUSART Transmit Character Size bit3 */ + +/* EUSART Control and Status Register B */ +#define EUCSRB _SFR_MEM8(0xC9) +#define BODR 0 /* Bit Order */ +#define EMCH 1 /* Manchester mode */ +#define EUSBS 3 /* EUSBS Enable Bit */ +#define EUSART 4 /* EUSART Enable Bit */ + +/* EUSART Control and Status Register C */ +#define EUCSRC _SFR_MEM8(0xCA) +#define STP0 0 /* Stop bits values bit0 */ +#define STP1 1 /* Stop bits values bit1 */ +#define F1617 2 +#define FEM 3 /* Frame Error Manchester */ + +/* Manchester receiver Baud Rate Registers */ +#define MUBRR _SFR_MEM16(0xCC) +#define MUBRRL _SFR_MEM8(0xCC) +#define MUBRRH _SFR_MEM8(0xCD) + +/* EUSART I/O Data Register */ +#define EUDR _SFR_MEM8(0xCE) + +/* PSC 0 Synchro and Output Configuration */ +#define PSOC0 _SFR_MEM8(0xD0) +#define POEN0A 0 /* PSC 0 OUT Part A Output Enable */ +#define POEN0B 2 /* PSC 0 OUT Part B Output Enable */ +#define PSYNC00 4 /* Synchronization Out for ADC Selection bit0 */ +#define PSYNC01 5 /* Synchronization Out for ADC Selection bit1 */ + +/* Output Compare SA Registers */ +#define OCR0SA _SFR_MEM16(0xD2) +#define OCR0SAL _SFR_MEM8(0xD2) +#define OCR0SAH _SFR_MEM8(0xD3) + +/* Output Compare RA Registers */ +#define OCR0RA _SFR_MEM16(0xD4) +#define OCR0RAL _SFR_MEM8(0xD4) +#define OCR0RAH _SFR_MEM8(0xD5) + +/* Output Compare SB Registers */ +#define OCR0SB _SFR_MEM16(0xD6) +#define OCR0SBL _SFR_MEM8(0xD6) +#define OCR0SBH _SFR_MEM8(0xD7) + +/* Output Compare RB Registers */ +#define OCR0RB _SFR_MEM16(0xD8) +#define OCR0RBL _SFR_MEM8(0xD8) +#define OCR0RBH _SFR_MEM8(0xD9) + +/* PSC 0 Configuration Register */ +#define PCNF0 _SFR_MEM8(0xDA) +#define PCLKSEL0 1 /* PSC 0 Input Clock Select */ +#define POP0 2 /* PSC 0 Output Polarity */ +#define PMODE00 3 /* PSC 0 Mode bit0 */ +#define PMODE01 4 /* PSC 0 Mode bit1 */ +#define PLOCK0 5 /* PSC 0 Lock */ +#define PALOCK0 6 /* PSC 0 Autolock */ +#define PFIFTY0 7 /* PSC 0 Fifty */ + +/* PSC 0 Control Register */ +#define PCTL0 _SFR_MEM8(0xDB) +#define PRUN0 0 /* PSC 0 Run */ +#define PCCYC0 1 /* PSC 0 Complete Cycle */ +#define PARUN0 2 /* PSC 0 Autorun */ +#define PAOC0A 3 /* PSC 0 Asynchronous Output Control A */ +#define PAOC0B 4 /* PSC 0 Asynchronous Output Control B */ +#define PBFM0 5 /* Balance Flank Width Modulation */ +#define PPRE00 6 /* PSC 0 Prescaler Select bit0 */ +#define PPRE01 7 /* PSC 0 Prescaler Select bit1 */ + +/* PSC 0 Input A Control Register */ +#define PFRC0A _SFR_MEM8(0xDC) +#define PRFM0A0 0 /* PSC 0 Fault Mode bit0 */ +#define PRFM0A1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0A2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0A3 3 /* PSC 0 Fault Mode bit3 */ +#define PFLTE0A 4 /* PSC 0 Filter Enable on Input Part A */ +#define PELEV0A 5 /* PSC 0 Edge Level Selector of Input Part A */ +#define PISEL0A 6 /* PSC 0 Input Select for Part A */ +#define PCAE0A 7 /* PSC 0 Capture Enable Input Part A */ + +/* PSC 0 Input B Control Register */ +#define PFRC0B _SFR_MEM8(0xDD) +#define PRFM0B0 0 /* PSC 0 Fault Mode bit0 */ +#define PRFM0B1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0B2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0B3 3 /* PSC 0 Fault Mode bit3 */ +#define PFLTE0B 4 /* PSC 0 Filter Enable on Input Part B */ +#define PELEV0B 5 /* PSC 0 Edge Level Selector of Input Part B */ +#define PISEL0B 6 /* PSC 0 Input Select for Part B */ +#define PCAE0B 7 /* PSC 0 Capture Enable Input Part B */ + +/* PSC 0 Input Capture Registers */ +#define PICR0 _SFR_MEM16(0xDE) +#define PICR0L _SFR_MEM8(0xDE) +#define PICR0H _SFR_MEM8(0xDF) +#define PCST0 7 /* PSC Capture Software Trig bit */ + +/* PSC 1 Synchro and Output Configuration */ +#define PSOC1 _SFR_MEM8(0xE0) + +/* Output Compare SA Registers */ +#define OCR1SA _SFR_MEM16(0xE2) +#define OCR1SAL _SFR_MEM8(0xE2) +#define OCR1SAH _SFR_MEM8(0xE3) + +/* Output Compare RA Registers */ +#define OCR1RA _SFR_MEM16(0xE4) +#define OCR1RAL _SFR_MEM8(0xE4) +#define OCR1RAH _SFR_MEM8(0xE5) + +/* Output Compare SB Registers */ +#define OCR1SB _SFR_MEM16(0xE6) +#define OCR1SBL _SFR_MEM8(0xE6) +#define OCR1SBH _SFR_MEM8(0xE7) + +/* Output Compare RB Registers */ +#define OCR1RB _SFR_MEM16(0xE8) +#define OCR1RBL _SFR_MEM8(0xE8) +#define OCR1RBH _SFR_MEM8(0xE9) + +/* PSC 1 Configuration Register */ +#define PCNF1 _SFR_MEM8(0xEA) + +/* PSC 1 Control Register */ +#define PCTL1 _SFR_MEM8(0xEB) + +/* PSC 1 Input A Control Register */ +#define PFRC1A _SFR_MEM8(0xEC) + +/* PSC 1 Input B Control Register */ +#define PFRC1B _SFR_MEM8(0xED) + +/* PSC 1 Input Capture Registers */ +#define PICR1 _SFR_MEM16(0xEE) +#define PICR1L _SFR_MEM8(0xEE) +#define PICR1H _SFR_MEM8(0xEF) + +/* PSC 2 Synchro and Output Configuration */ +#define PSOC2 _SFR_MEM8(0xF0) +#define POEN2A 0 /* PSC 2 OUT Part A Output Enable */ +#define POEN2C 1 /* PSCOUT22 Output Enable */ +#define POEN2B 2 /* PSC 2 OUT Part B Output Enable */ +#define POEN2D 3 /* PSCOUT23 Output Enable */ +#define PSYNC20 4 /* Synchronization Out for ADC Selection bit0 */ +#define PSYNC21 5 /* Synchronization Out for ADC Selection bit1 */ +#define POS22 6 /* PSCOUT22 Selection */ +#define POS23 7 /* PSCOUT23 Selection */ + +/* PSC 2 Output Matrix */ +#define POM2 _SFR_MEM8(0xF1) +#define POMV2A0 0 /* Output Matrix Output A Ramp 0 */ +#define POMV2A1 1 /* Output Matrix Output A Ramp 1 */ +#define POMV2A2 2 /* Output Matrix Output A Ramp 2 */ +#define POMV2A3 3 /* Output Matrix Output A Ramp 3 */ +#define POMV2B0 4 /* Output Matrix Output B Ramp 0 */ +#define POMV2B1 5 /* Output Matrix Output B Ramp 1 */ +#define POMV2B2 6 /* Output Matrix Output B Ramp 2 */ +#define POMV2B3 7 /* Output Matrix Output B Ramp 3 */ + +/* Output Compare SA Registers */ +#define OCR2SA _SFR_MEM16(0xF2) +#define OCR2SAL _SFR_MEM8(0xF2) +#define OCR2SAH _SFR_MEM8(0xF3) + +/* Output Compare RA Registers */ +#define OCR2RA _SFR_MEM16(0xF4) +#define OCR2RAL _SFR_MEM8(0xF4) +#define OCR2RAH _SFR_MEM8(0xF5) + +/* Output Compare SB Registers */ +#define OCR2SB _SFR_MEM16(0xF6) +#define OCR2SBL _SFR_MEM8(0xF6) +#define OCR2SBH _SFR_MEM8(0xF7) + +/* Output Compare RB Registers */ +#define OCR2RB _SFR_MEM16(0xF8) +#define OCR2RBL _SFR_MEM8(0xF8) +#define OCR2RBH _SFR_MEM8(0xF9) + +/* PSC 2 Configuration Register */ +#define PCNF2 _SFR_MEM8(0xFA) +#define POME2 0 /* PSC 2 Output Matrix Enable */ +#define PCLKSEL2 1 /* PSC 2 Input Clock Select */ +#define POP2 2 /* PSC 2 Output Polarity */ +#define PMODE20 3 /* PSC 2 Mode bit0 */ +#define PMODE21 4 /* PSC 2 Mode bit1 */ +#define PLOCK2 5 /* PSC 2 Lock */ +#define PALOCK2 6 /* PSC 2 Autolock */ +#define PFIFTY2 7 /* PSC 2 Fifty */ + +/* PSC 2 Control Register */ +#define PCTL2 _SFR_MEM8(0xFB) +#define PRUN2 0 /* PSC 2 Run */ +#define PCCYC2 1 /* PSC 2 Complete Cycle */ +#define PARUN2 2 /* PSC 2 Autorun */ +#define PAOC2A 3 /* PSC 2 Asynchronous Output Control A */ +#define PAOC2B 4 /* PSC 2 Asynchronous Output Control B */ +#define PBFM2 5 /* Balance Flank Width Modulation */ +#define PPRE20 6 /* PSC 2 Prescaler Select bit0 */ +#define PPRE21 7 /* PSC 2 Prescaler Select bit1 */ + +/* PSC 2 Input A Control Register */ +#define PFRC2A _SFR_MEM8(0xFC) +#define PRFM2A0 0 /* PSC 2 Fault Mode bit0 */ +#define PRFM2A1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2A2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2A3 3 /* PSC 2 Fault Mode bit3 */ +#define PFLTE2A 4 /* PSC 2 Filter Enable on Input Part A */ +#define PELEV2A 5 /* PSC 2 Edge Level Selector of Input Part A */ +#define PISEL2A 6 /* PSC 2 Input Select for Part A */ +#define PCAE2A 7 /* PSC 2 Capture Enable Input Part A */ + +/* PSC 2 Input B Control Register */ +#define PFRC2B _SFR_MEM8(0xFD) +#define PRFM2B0 0 /* PSC 2 Fault Mode bit0 */ +#define PRFM2B1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2B2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2B3 3 /* PSC 2 Fault Mode bit3 */ +#define PFLTE2B 4 /* PSC 2 Filter Enable on Input Part B */ +#define PELEV2B 5 /* PSC 2 Edge Level Selector of Input Part B */ +#define PISEL2B 6 /* PSC 2 Input Select for Part B */ +#define PCAE2B 7 /* PSC 2 Capture Enable Input Part B */ + +/* PSC 2 Input Capture Registers */ +#define PICR2 _SFR_MEM16(0xFE) +#define PICR2L _SFR_MEM8(0xFE) +#define PICR2H _SFR_MEM8(0xFF) +#define PCST2 7 /* PSC Capture Software Trig bit */ + + +/* Interrupt Vectors */ +/* Interrupt 0 is the reset vector. */ + +/* PSC2 Capture Event */ +#define PSC2_CAPT_vect _VECTOR(1) + +/* PSC2 End Cycle */ +#define PSC2_EC_vect _VECTOR(2) + +/* PSC1 Capture Event */ +#define PSC1_CAPT_vect _VECTOR(3) + +/* PSC1 End Cycle */ +#define PSC1_EC_vect _VECTOR(4) + +/* PSC0 Capture Event */ +#define PSC0_CAPT_vect _VECTOR(5) + +/* PSC0 End Cycle */ +#define PSC0_EC_vect _VECTOR(6) + +/* Analog Comparator 0 */ +#define ANALOG_COMP_0_vect _VECTOR(7) + +/* Analog Comparator 1 */ +#define ANALOG_COMP_1_vect _VECTOR(8) + +/* Analog Comparator 2 */ +#define ANALOG_COMP_2_vect _VECTOR(9) + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(15) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMP_A_vect _VECTOR(16) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(17) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(18) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(19) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(20) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(21) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(22) + +/* USART, Tx Complete */ +#define USART_TX_vect _VECTOR(23) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(24) + +/* Watchdog Timeout Interrupt */ +#define WDT_vect _VECTOR(25) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(26) + +/* Timer Counter 0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(27) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(28) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(31) + +#define _VECTORS_SIZE (4 * 32) + +/* Constants */ + +#define RAMEND 0x4FF +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF +#define SPM_PAGESIZE 128 + + +/* Fuse Information */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Diasble */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_PSCRV (unsigned char)~_BV(4) +#define FUSE_PSC0RB (unsigned char)~_BV(5) +#define FUSE_PSC1RB (unsigned char)~_BV(6) +#define FUSE_PSC2RB (unsigned char)~_BV(7) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x83 + + +#endif /* _AVR_IO90PWM216_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm2b.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm2b.h new file mode 100644 index 0000000..bb99c86 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm2b.h @@ -0,0 +1,1383 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: io90pwm2b.h,v 1.3.2.10 2008/10/17 23:27:45 arcanum Exp $ */ + +/* avr/io90pwm2b.h - definitions for AT90PWM2B */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io90pwm2b.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IO90PWM2B_H_ +#define _AVR_IO90PWM2B_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINE _SFR_IO8(0x0C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 + +#define DDRE _SFR_IO8(0x0D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 + +#define PORTE _SFR_IO8(0x0E) +#define PORTE0 0 +#define PORTE1 1 +#define PORTE2 2 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define GPIOR1 _SFR_IO8(0x19) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x1A) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define GPIOR3 _SFR_IO8(0x1B) +#define GPIOR30 0 +#define GPIOR31 1 +#define GPIOR32 2 +#define GPIOR33 3 +#define GPIOR34 4 +#define GPIOR35 5 +#define GPIOR36 6 +#define GPIOR37 7 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 +#define INT3 3 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEARL0 0 +#define EEARL1 1 +#define EEARL2 2 +#define EEARL3 3 +#define EEARL4 4 +#define EEARL5 5 +#define EEARL6 6 +#define EEARL7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSRSYNC 0 +#define ICPSEL1 2 +#define TSM 3 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0_0 0 +#define OCR0_1 1 +#define OCR0_2 2 +#define OCR0_3 3 +#define OCR0_4 4 +#define OCR0_5 5 +#define OCR0_6 6 +#define OCR0_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0_0 0 +#define OCR0_1 1 +#define OCR0_2 2 +#define OCR0_3 3 +#define OCR0_4 4 +#define OCR0_5 5 +#define OCR0_6 6 +#define OCR0_7 7 + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PLLF 2 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define AC0O 0 +#define AC1O 1 +#define AC2O 2 +#define AC0IF 4 +#define AC1IF 5 +#define AC2IF 6 +#define ACCKDIV 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define SPIPS 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE3 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM0 3 +#define PRTIM1 4 +#define PRPSC0 5 +#define PRPSC1 6 +#define PRPSC2 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define AMP0CSR _SFR_MEM8(0x76) +#define AMP0TS0 0 +#define AMP0TS1 1 +#define AMP0G0 4 +#define AMP0G1 5 +#define AMP0IS 6 +#define AMP0EN 7 + +#define AMP1CSR _SFR_MEM8(0x77) +#define AMP1TS0 0 +#define AMP1TS1 1 +#define AMP1G0 4 +#define AMP1G1 5 +#define AMP1IS 6 +#define AMP1EN 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ADTS3 3 +#define ADASCR 4 +#define ADHSM 7 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define ADC8D 0 +#define ADC9D 1 +#define ADC10D 2 +#define AMP0ND 3 +#define AMP0PD 4 +#define ACMP0D 5 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define PIFR0 _SFR_MEM8(0xA0) +#define PEOP0 0 +#define PRN00 1 +#define PRN01 2 +#define PEV0A 3 +#define PEV0B 4 +#define PSEI0 5 +#define POAC0A 6 +#define POAC0B 7 + +#define PIM0 _SFR_MEM8(0xA1) +#define PEOPE0 0 +#define PEVE0A 3 +#define PEVE0B 4 +#define PSEIE0 5 + +#define PIFR1 _SFR_MEM8(0xA2) +#define PEOP1 0 +#define PRN10 1 +#define PRN11 2 +#define PEV1A 3 +#define PEV1B 4 +#define PSEI1 5 +#define POAC1A 6 +#define POAC1B 7 + +#define PIM1 _SFR_MEM8(0xA3) +#define PEOPE1 0 +#define PEVE1A 3 +#define PEVE1B 4 +#define PSEIE1 5 + +#define PIFR2 _SFR_MEM8(0xA4) +#define PEOP2 0 +#define PRN20 1 +#define PRN21 2 +#define PEV2A 3 +#define PEV2B 4 +#define PSEI2 5 +#define POAC2A 6 +#define POAC2B 7 + +#define PIM2 _SFR_MEM8(0xA5) +#define PEOPE2 0 +#define PEVE2A 3 +#define PEVE2B 4 +#define PSEIE2 5 + +#define DACON _SFR_MEM8(0xAA) +#define DAEN 0 +#define DAOE 1 +#define DALA 2 +#define DATS0 4 +#define DATS1 5 +#define DATS2 6 +#define DAATE 7 + +#define DAC _SFR_MEM16(0xAB) + +#define DACL _SFR_MEM8(0xAB) +#define DACL0 0 +#define DACL1 1 +#define DACL2 2 +#define DACL3 3 +#define DACL4 4 +#define DACL5 5 +#define DACL6 6 +#define DACL7 7 + +#define DACH _SFR_MEM8(0xAC) +#define DACH0 0 +#define DACH1 1 +#define DACH2 2 +#define DACH3 3 +#define DACH4 4 +#define DACH5 5 +#define DACH6 6 +#define DACH7 7 + +#define AC0CON _SFR_MEM8(0xAD) +#define AC0M0 0 +#define AC0M1 1 +#define AC0M2 2 +#define AC0IS0 4 +#define AC0IS1 5 +#define AC0IE 6 +#define AC0EN 7 + +#define AC1CON _SFR_MEM8(0xAE) +#define AC1M0 0 +#define AC1M1 1 +#define AC1M2 2 +#define AC1ICE 3 +#define AC1IS0 4 +#define AC1IS1 5 +#define AC1IE 6 +#define AC1EN 7 + +#define AC2CON _SFR_MEM8(0xAF) +#define AC2M0 0 +#define AC2M1 1 +#define AC2M2 2 +#define AC2IS0 4 +#define AC2IS1 5 +#define AC2IE 6 +#define AC2EN 7 + +#define UCSRA _SFR_MEM8(0xC0) +#define MPCM 0 +#define U2X 1 +#define UPE 2 +#define DOR 3 +#define FE 4 +#define UDRE 5 +#define TXC 6 +#define RXC 7 + +#define UCSRB _SFR_MEM8(0xC1) +#define TXB8 0 +#define RXB8 1 +#define UCSZ2 2 +#define TXEN 3 +#define RXEN 4 +#define UDRIE 5 +#define TXCIE 6 +#define RXCIE 7 + +#define UCSRC _SFR_MEM8(0xC2) +#define UCPOL 0 +#define UCSZ0 1 +#define UCSZ1 2 +#define USBS 3 +#define UPM0 4 +#define UPM1 5 +#define UMSEL0 6 + +#define UBRR _SFR_MEM16(0xC4) + +#define UBRRL _SFR_MEM8(0xC4) +#define UBRR0 0 +#define UBRR1 1 +#define UBRR2 2 +#define UBRR3 3 +#define UBRR4 4 +#define UBRR5 5 +#define UBRR6 6 +#define UBRR7 7 + +#define UBRRH _SFR_MEM8(0xC5) +#define UBRR8 0 +#define UBRR9 1 +#define UBRR10 2 +#define UBRR11 3 + +#define UDR _SFR_MEM8(0xC6) +#define UDR0 0 +#define UDR1 1 +#define UDR2 2 +#define UDR3 3 +#define UDR4 4 +#define UDR5 5 +#define UDR6 6 +#define UDR7 7 + +#define EUCSRA _SFR_MEM8(0xC8) +#define URxS0 0 +#define URxS1 1 +#define URxS2 2 +#define URxS3 3 +#define UTxS0 4 +#define UTxS1 5 +#define UTxS2 6 +#define UTxS3 7 + +#define EUCSRB _SFR_MEM8(0xC9) +#define BODR 0 +#define EMCH 1 +#define EUSBS 3 +#define EUSART 4 + +#define EUCSRC _SFR_MEM8(0xCA) +#define STP0 0 +#define STP1 1 +#define F1617 2 +#define FEM 3 + +#define MUBRR _SFR_MEM16(0xCC) + +#define MUBRRL _SFR_MEM8(0xCC) +#define MUBRR0 0 +#define MUBRR1 1 +#define MUBRR2 2 +#define MUBRR3 3 +#define MUBRR4 4 +#define MUBRR5 5 +#define MUBRR6 6 +#define MUBRR7 7 + +#define MUBRRH _SFR_MEM8(0xCD) +#define MUBRR8 0 +#define MUBRR9 1 +#define MUBRR10 2 +#define MUBRR11 3 +#define MUBRR12 4 +#define MUBRR13 5 +#define MUBRR14 6 +#define MUBRR15 7 + +#define EUDR _SFR_MEM8(0xCE) +#define EUDR0 0 +#define EUDR1 1 +#define EUDR2 2 +#define EUDR3 3 +#define EUDR4 4 +#define EUDR5 5 +#define EUDR6 6 +#define EUDR7 7 + +#define PSOC0 _SFR_MEM8(0xD0) +#define POEN0A 0 +#define POEN0B 2 +#define PSYNC00 4 +#define PSYNC01 5 + +#define OCR0SA _SFR_MEM16(0xD2) + +#define OCR0SAL _SFR_MEM8(0xD2) +#define OCR0SA_0 0 +#define OCR0SA_1 1 +#define OCR0SA_2 2 +#define OCR0SA_3 3 +#define OCR0SA_4 4 +#define OCR0SA_5 5 +#define OCR0SA_6 6 +#define OCR0SA_7 7 + +#define OCR0SAH _SFR_MEM8(0xD3) +#define OCR0SA_8 0 +#define OCR0SA_9 1 +#define OCR0SA_00 2 +#define OCR0SA_01 3 + +#define OCR0RA _SFR_MEM16(0xD4) + +#define OCR0RAL _SFR_MEM8(0xD4) +#define OCR0RA_0 0 +#define OCR0RA_1 1 +#define OCR0RA_2 2 +#define OCR0RA_3 3 +#define OCR0RA_4 4 +#define OCR0RA_5 5 +#define OCR0RA_6 6 +#define OCR0RA_7 7 + +#define OCR0RAH _SFR_MEM8(0xD5) +#define OCR0RA_8 0 +#define OCR0RA_9 1 +#define OCR0RA_00 2 +#define OCR0RA_01 3 + +#define OCR0SB _SFR_MEM16(0xD6) + +#define OCR0SBL _SFR_MEM8(0xD6) +#define OCR0SB_0 0 +#define OCR0SB_1 1 +#define OCR0SB_2 2 +#define OCR0SB_3 3 +#define OCR0SB_4 4 +#define OCR0SB_5 5 +#define OCR0SB_6 6 +#define OCR0SB_7 7 + +#define OCR0SBH _SFR_MEM8(0xD7) +#define OCR0SB_8 0 +#define OCR0SB_9 1 +#define OCR0SB_00 2 +#define OCR0SB_01 3 + +#define OCR0RB _SFR_MEM16(0xD8) + +#define OCR0RBL _SFR_MEM8(0xD8) +#define OCR0RB_0 0 +#define OCR0RB_1 1 +#define OCR0RB_2 2 +#define OCR0RB_3 3 +#define OCR0RB_4 4 +#define OCR0RB_5 5 +#define OCR0RB_6 6 +#define OCR0RB_7 7 + +#define OCR0RBH _SFR_MEM8(0xD9) +#define OCR0RB_8 0 +#define OCR0RB_9 1 +#define OCR0RB_00 2 +#define OCR0RB_01 3 +#define OCR0RB_02 4 +#define OCR0RB_03 5 +#define OCR0RB_04 6 +#define OCR0RB_05 7 + +#define PCNF0 _SFR_MEM8(0xDA) +#define PCLKSEL0 1 +#define POP0 2 +#define PMODE00 3 +#define PMODE01 4 +#define PLOCK0 5 +#define PALOCK0 6 +#define PFIFTY0 7 + +#define PCTL0 _SFR_MEM8(0xDB) +#define PRUN0 0 +#define PCCYC0 1 +#define PARUN0 2 +#define PAOC0A 3 +#define PAOC0B 4 +#define PBFM0 5 +#define PPRE00 6 +#define PPRE01 7 + +#define PFRC0A _SFR_MEM8(0xDC) +#define PRFM0A0 0 +#define PRFM0A1 1 +#define PRFM0A2 2 +#define PRFM0A3 3 +#define PFLTE0A 4 +#define PELEV0A 5 +#define PISEL0A 6 +#define PCAE0A 7 + +#define PFRC0B _SFR_MEM8(0xDD) +#define PRFM0B0 0 +#define PRFM0B1 1 +#define PRFM0B2 2 +#define PRFM0B3 3 +#define PFLTE0B 4 +#define PELEV0B 5 +#define PISEL0B 6 +#define PCAE0B 7 + +#define PICR0 _SFR_MEM16(0xDE) + +#define PICR0L _SFR_MEM8(0xDE) +#define PICR0_0 0 +#define PICR0_1 1 +#define PICR0_2 2 +#define PICR0_3 3 +#define PICR0_4 4 +#define PICR0_5 5 +#define PICR0_6 6 +#define PICR0_7 7 + +#define PICR0H _SFR_MEM8(0xDF) +#define PICR0_8 0 +#define PICR0_9 1 +#define PICR0_10 2 +#define PICR0_11 3 +#define PCST0 7 + +#define PSOC1 _SFR_MEM8(0xE0) +#define POEN1A 0 +#define POEN1B 2 +#define PSYNC1_0 4 +#define PSYNC1_1 5 + +#define OCR1SA _SFR_MEM16(0xE2) + +#define OCR1SAL _SFR_MEM8(0xE2) +#define OCR1SA_0 0 +#define OCR1SA_1 1 +#define OCR1SA_2 2 +#define OCR1SA_3 3 +#define OCR1SA_4 4 +#define OCR1SA_5 5 +#define OCR1SA_6 6 +#define OCR1SA_7 7 + +#define OCR1SAH _SFR_MEM8(0xE3) +#define OCR1SA_8 0 +#define OCR1SA_9 1 +#define OCR1SA_10 2 +#define OCR1SA_11 3 + +#define OCR1RA _SFR_MEM16(0xE4) + +#define OCR1RAL _SFR_MEM8(0xE4) +#define OCR1RA_0 0 +#define OCR1RA_1 1 +#define OCR1RA_2 2 +#define OCR1RA_3 3 +#define OCR1RA_4 4 +#define OCR1RA_5 5 +#define OCR1RA_6 6 +#define OCR1RA_7 7 + +#define OCR1RAH _SFR_MEM8(0xE5) +#define OCR1RA_8 0 +#define OCR1RA_9 1 +#define OCR1RA_10 2 +#define OCR1RA_11 3 + +#define OCR1SB _SFR_MEM16(0xE6) + +#define OCR1SBL _SFR_MEM8(0xE6) +#define OCR1SB_0 0 +#define OCR1SB_1 1 +#define OCR1SB_2 2 +#define OCR1SB_3 3 +#define OCR1SB_4 4 +#define OCR1SB_5 5 +#define OCR1SB_6 6 +#define OCR1SB_7 7 + +#define OCR1SBH _SFR_MEM8(0xE7) +#define OCR1SB_8 0 +#define OCR1SB_9 1 +#define OCR1SB_10 2 +#define OCR1SB_11 3 + +#define OCR1RB _SFR_MEM16(0xE8) + +#define OCR1RBL _SFR_MEM8(0xE8) +#define OCR1RB_0 0 +#define OCR1RB_1 1 +#define OCR1RB_2 2 +#define OCR1RB_3 3 +#define OCR1RB_4 4 +#define OCR1RB_5 5 +#define OCR1RB_6 6 +#define OCR1RB_7 7 + +#define OCR1RBH _SFR_MEM8(0xE9) +#define OCR1RB_8 0 +#define OCR1RB_9 1 +#define OCR1RB_10 2 +#define OCR1RB_11 3 +#define OCR1RB_12 4 +#define OCR1RB_13 5 +#define OCR1RB_14 6 +#define OCR1RB_15 7 + +#define PCNF1 _SFR_MEM8(0xEA) +#define PCLKSEL1 1 +#define POP1 2 +#define PMODE10 3 +#define PMODE11 4 +#define PLOCK1 5 +#define PALOCK1 6 +#define PFIFTY1 7 + +#define PCTL1 _SFR_MEM8(0xEB) +#define PRUN1 0 +#define PCCYC1 1 +#define PARUN1 2 +#define PAOC1A 3 +#define PAOC1B 4 +#define PBFM1 5 +#define PPRE10 6 +#define PPRE11 7 + +#define PFRC1A _SFR_MEM8(0xEC) +#define PRFM1A0 0 +#define PRFM1A1 1 +#define PRFM1A2 2 +#define PRFM1A3 3 +#define PFLTE1A 4 +#define PELEV1A 5 +#define PISEL1A 6 +#define PCAE1A 7 + +#define PFRC1B _SFR_MEM8(0xED) +#define PRFM1B0 0 +#define PRFM1B1 1 +#define PRFM1B2 2 +#define PRFM1B3 3 +#define PFLTE1B 4 +#define PELEV1B 5 +#define PISEL1B 6 +#define PCAE1B 7 + +#define PICR1 _SFR_MEM16(0xEE) + +#define PICR1L _SFR_MEM8(0xEE) +#define PICR1_0 0 +#define PICR1_1 1 +#define PICR1_2 2 +#define PICR1_3 3 +#define PICR1_4 4 +#define PICR1_5 5 +#define PICR1_6 6 +#define PICR1_7 7 + +#define PICR1H _SFR_MEM8(0xEF) +#define PICR1_8 0 +#define PICR1_9 1 +#define PICR1_10 2 +#define PICR1_11 3 +#define PCST1 7 + +#define PSOC2 _SFR_MEM8(0xF0) +#define POEN2A 0 +#define POEN2C 1 +#define POEN2B 2 +#define POEN2D 3 +#define PSYNC2_0 4 +#define PSYNC2_1 5 +#define POS22 6 +#define POS23 7 + +#define POM2 _SFR_MEM8(0xF1) +#define POMV2A0 0 +#define POMV2A1 1 +#define POMV2A2 2 +#define POMV2A3 3 +#define POMV2B0 4 +#define POMV2B1 5 +#define POMV2B2 6 +#define POMV2B3 7 + +#define OCR2SA _SFR_MEM16(0xF2) + +#define OCR2SAL _SFR_MEM8(0xF2) +#define OCR2SA_0 0 +#define OCR2SA_1 1 +#define OCR2SA_2 2 +#define OCR2SA_3 3 +#define OCR2SA_4 4 +#define OCR2SA_5 5 +#define OCR2SA_6 6 +#define OCR2SA_7 7 + +#define OCR2SAH _SFR_MEM8(0xF3) +#define OCR2SA_8 0 +#define OCR2SA_9 1 +#define OCR2SA_10 2 +#define OCR2SA_11 3 + +#define OCR2RA _SFR_MEM16(0xF4) + +#define OCR2RAL _SFR_MEM8(0xF4) +#define OCR2RA_0 0 +#define OCR2RA_1 1 +#define OCR2RA_2 2 +#define OCR2RA_3 3 +#define OCR2RA_4 4 +#define OCR2RA_5 5 +#define OCR2RA_6 6 +#define OCR2RA_7 7 + +#define OCR2RAH _SFR_MEM8(0xF5) +#define OCR2RA_8 0 +#define OCR2RA_9 1 +#define OCR2RA_10 2 +#define OCR2RA_11 3 + +#define OCR2SB _SFR_MEM16(0xF6) + +#define OCR2SBL _SFR_MEM8(0xF6) +#define OCR2SB_0 0 +#define OCR2SB_1 1 +#define OCR2SB_2 2 +#define OCR2SB_3 3 +#define OCR2SB_4 4 +#define OCR2SB_5 5 +#define OCR2SB_6 6 +#define OCR2SB_7 7 + +#define OCR2SBH _SFR_MEM8(0xF7) +#define OCR2SB_8 0 +#define OCR2SB_9 1 +#define OCR2SB_10 2 +#define OCR2SB_11 3 + +#define OCR2RB _SFR_MEM16(0xF8) + +#define OCR2RBL _SFR_MEM8(0xF8) +#define OCR2RB_0 0 +#define OCR2RB_1 1 +#define OCR2RB_2 2 +#define OCR2RB_3 3 +#define OCR2RB_4 4 +#define OCR2RB_5 5 +#define OCR2RB_6 6 +#define OCR2RB_7 7 + +#define OCR2RBH _SFR_MEM8(0xF9) +#define OCR2RB_8 0 +#define OCR2RB_9 1 +#define OCR2RB_10 2 +#define OCR2RB_11 3 +#define OCR2RB_12 4 +#define OCR2RB_13 5 +#define OCR2RB_14 6 +#define OCR2RB_15 7 + +#define PCNF2 _SFR_MEM8(0xFA) +#define POME2 0 +#define PCLKSEL2 1 +#define POP2 2 +#define PMODE20 3 +#define PMODE21 4 +#define PLOCK2 5 +#define PALOCK2 6 +#define PFIFTY2 7 + +#define PCTL2 _SFR_MEM8(0xFB) +#define PRUN2 0 +#define PCCYC2 1 +#define PARUN2 2 +#define PAOC2A 3 +#define PAOC2B 4 +#define PBFM2 5 +#define PPRE20 6 +#define PPRE21 7 + +#define PFRC2A _SFR_MEM8(0xFC) +#define PRFM2A0 0 +#define PRFM2A1 1 +#define PRFM2A2 2 +#define PRFM2A3 3 +#define PFLTE2A 4 +#define PELEV2A 5 +#define PISEL2A 6 +#define PCAE2A 7 + +#define PFRC2B _SFR_MEM8(0xFD) +#define PRFM2B0 0 +#define PRFM2B1 1 +#define PRFM2B2 2 +#define PRFM2B3 3 +#define PFLTE2B 4 +#define PELEV2B 5 +#define PISEL2B 6 +#define PCAE2B 7 + +#define PICR2 _SFR_MEM16(0xFE) + +#define PICR2L _SFR_MEM8(0xFE) +#define PICR2_0 0 +#define PICR2_1 1 +#define PICR2_2 2 +#define PICR2_3 3 +#define PICR2_4 4 +#define PICR2_5 5 +#define PICR2_6 6 +#define PICR2_7 7 + +#define PICR2H _SFR_MEM8(0xFF) +#define PICR2_8 0 +#define PICR2_9 1 +#define PICR2_10 2 +#define PICR2_11 3 +#define PCST2 7 + + + +/* Interrupt Vectors */ +/* Interrupt vector 0 is the reset vector. */ +#define PSC2_CAPT_vect _VECTOR(1) /* PSC2 Capture Event */ +#define PSC2_EC_vect _VECTOR(2) /* PSC2 End Cycle */ +#define PSC1_CAPT_vect _VECTOR(3) /* PSC1 Capture Event */ +#define PSC1_EC_vect _VECTOR(4) /* PSC1 End Cycle */ +#define PSC0_CAPT_vect _VECTOR(5) /* PSC0 Capture Event */ +#define PSC0_EC_vect _VECTOR(6) /* PSC0 End Cycle */ +#define ANALOG_COMP_0_vect _VECTOR(7) /* Analog Comparator 0 */ +#define ANALOG_COMP_1_vect _VECTOR(8) /* Analog Comparator 1 */ +#define ANALOG_COMP_2_vect _VECTOR(9) /* Analog Comparator 2 */ +#define INT0_vect _VECTOR(10) /* External Interrupt Request 0 */ +#define TIMER1_CAPT_vect _VECTOR(11) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(12) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(13) /* Timer/Counter Compare Match B */ +/* Vector 14, Reserved */ +#define TIMER1_OVF_vect _VECTOR(15) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(16) /* Timer/Counter0 Compare Match A */ +#define TIMER0_OVF_vect _VECTOR(17) /* Timer/Counter0 Overflow */ +#define ADC_vect _VECTOR(18) /* ADC Conversion Complete */ +#define INT1_vect _VECTOR(19) /* External Interrupt Request 1 */ +#define SPI_STC_vect _VECTOR(20) /* SPI Serial Transfer Complete */ +#define USART_RX_vect _VECTOR(21) /* USART, Rx Complete */ +#define USART_UDRE_vect _VECTOR(22) /* USART Data Register Empty */ +#define USART_TX_vect _VECTOR(23) /* USART, Tx Complete */ +#define INT2_vect _VECTOR(24) /* External Interrupt Request 2 */ +#define WDT_vect _VECTOR(25) /* Watchdog Timeout Interrupt */ +#define EE_READY_vect _VECTOR(26) /* EEPROM Ready */ +#define TIMER0_COMPB_vect _VECTOR(27) /* Timer Counter 0 Compare Match B */ +#define INT3_vect _VECTOR(28) /* External Interrupt Request 3 */ +/* Vector 29, Reserved */ +/* Vector 30, Reserved */ +#define SPM_READY_vect _VECTOR(31) /* Store Program Memory Read */ + +#define _VECTORS_SIZE 64 + + + +/* Memory Sizes */ +#define RAMEND 0x2FF +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF +#define SPM_PAGESIZE 32 + + + +/* Fuse Information */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown out detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_PSCRV (unsigned char)~_BV(4) /* PSCOUT Reset Value */ +#define FUSE_PSC0RB (unsigned char)~_BV(5) /* PSC0 Reset Behaviour */ +#define FUSE_PSC1RB (unsigned char)~_BV(6) /* PSC1 Reset Behaviour */ +#define FUSE_PSC2RB (unsigned char)~_BV(7) /* PSC2 Reset Behaviour */ +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x83 + + +#endif /* _AVR_IO90PWM2B_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm316.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm316.h new file mode 100644 index 0000000..7c1cc6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm316.h @@ -0,0 +1,1224 @@ +/* Copyright (c) 2007, Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io90pwm316.h,v 1.7.2.7 2008/10/17 23:27:46 arcanum Exp $ */ + +/* avr/io90pwm316.h - definitions for AT90PWM316 */ + +#ifndef _AVR_IO90PWM316_H_ +#define _AVR_IO90PWM316_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io90pwm316.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Port B Input Pins Address */ +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +/* Port B Data Direction Register */ +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +/* Port B Data Register */ +#define PORTB _SFR_IO8(0x05) +#define PB0 0 +#define PB1 1 +#define PB2 2 +#define PB3 3 +#define PB4 4 +#define PB5 5 +#define PB6 6 +#define PB7 7 + +/* Port C Input Pins Address */ +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +/* Port C Data Direction Register */ +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +/* Port C Data Register */ +#define PORTC _SFR_IO8(0x08) +#define PC0 0 +#define PC1 1 +#define PC2 2 +#define PC3 3 +#define PC4 4 +#define PC5 5 +#define PC6 6 +#define PC7 7 + +/* Port D Input Pins Address */ +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +/* Port D Data Direction Register */ +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +/* Port D Data Register */ +#define PORTD _SFR_IO8(0x0B) +#define PD0 0 +#define PD1 1 +#define PD2 2 +#define PD3 3 +#define PD4 4 +#define PD5 5 +#define PD6 6 +#define PD7 7 + +/* Port E Input Pins Address */ +#define PINE _SFR_IO8(0x0C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 + +/* Port E Data Direction Register */ +#define DDRE _SFR_IO8(0x0D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 + +/* Port E Data Register */ +#define PORTE _SFR_IO8(0x0E) +#define PE0 0 +#define PE1 1 +#define PE2 2 + +/* Timer/Counter 0 Interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 /* Overflow Flag */ +#define OCF0A 1 /* Output Compare Flag 0A */ +#define OCF0B 2 /* Output Compare Flag 0B */ + +/* Timer/Counter1 Interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 /* Overflow Flag */ +#define OCF1A 1 /* Output Compare Flag 1A*/ +#define OCF1B 2 /* Output Compare Flag 1B*/ +#define ICF1 5 /* Input Capture Flag 1 */ + +/* General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x19) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +/* General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x1A) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +/* General Purpose I/O Register 3 */ +#define GPIOR3 _SFR_IO8(0x1B) +#define GPIOR30 0 +#define GPIOR31 1 +#define GPIOR32 2 +#define GPIOR33 3 +#define GPIOR34 4 +#define GPIOR35 5 +#define GPIOR36 6 +#define GPIOR37 7 + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 + +/* External Interrupt Mask Register */ +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 /* External Interrupt Request 0 Enable */ +#define INT1 1 /* External Interrupt Request 1 Enable */ +#define INT2 2 /* External Interrupt Request 2 Enable */ +#define INT3 3 /* External Interrupt Request 3 Enable */ + +/* General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1F) +#define EERE 0 /* EEPROM Read Enable */ +#define EEWE 1 /* EEPROM Write Enable */ +#define EEMWE 2 /* EEPROM Master Write Enable */ +#define EERIE 3 /* EEPROM Ready Interrupt Enable */ + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +/* The EEPROM Address Registers */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 /* Prescaler Reset Timer/Counter1 and Timer/Counter0 */ +#define ICPSEL1 6 /* Timer1 Input Capture Selection Bit */ +#define TSM 7 /* Timer/Counter Synchronization Mode */ + +/* Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 /* Waveform Generation Mode */ +#define WGM01 1 /* Waveform Generation Mode */ +#define COM0B0 4 /* Compare Output Mode, Fast PWm */ +#define COM0B1 5 /* Compare Output Mode, Fast PWm */ +#define COM0A0 6 /* Compare Output Mode, Phase Correct PWM Mode */ +#define COM0A1 7 /* Compare Output Mode, Phase Correct PWM Mode */ + +/* Timer/Counter Control Register B */ +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 /* Clock Select */ +#define CS01 1 /* Clock Select */ +#define CS02 2 /* Clock Select */ +#define WGM02 3 /* Waveform Generation Mode */ +#define FOC0B 6 /* Force Output Compare B */ +#define FOC0A 7 /* Force Output Compare A */ + +/* Timer/Counter0 Register */ +#define TCNT0 _SFR_IO8(0x26) +#define TCNT00 0 +#define TCNT01 1 +#define TCNT02 2 +#define TCNT03 3 +#define TCNT04 4 +#define TCNT05 5 +#define TCNT06 6 +#define TCNT07 7 + +/* Timer/Counter0 Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) +#define OCR0A0 0 +#define OCR0A1 1 +#define OCR0A2 2 +#define OCR0A3 3 +#define OCR0A4 4 +#define OCR0A5 5 +#define OCR0A6 6 +#define OCR0A7 7 + +/* Timer/Counter0 Output Compare Register B */ +#define OCR0B _SFR_IO8(0x28) +#define OCR0B0 0 +#define OCR0B1 1 +#define OCR0B2 2 +#define OCR0B3 3 +#define OCR0B4 4 +#define OCR0B5 5 +#define OCR0B6 6 +#define OCR0B7 7 + +/* PLL Control and Status Register */ +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 /* PLL Lock Detector */ +#define PLLE 1 /* PLL Enable */ +#define PLLF 2 /* PLL Factor */ + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 /* SPI Clock Rate Select 0 */ +#define SPR1 1 /* SPI Clock Rate Select 1 */ +#define CPHA 2 /* Clock Phase */ +#define CPOL 3 /* Clock polarity */ +#define MSTR 4 /* Master/Slave Select */ +#define DORD 5 /* Data Order */ +#define SPE 6 /* SPI Enable */ +#define SPIE 7 /* SPI Interrupt Enable */ + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 /* Double SPI Speed Bit */ +#define WCOL 6 /* Write Collision Flag */ +#define SPIF 7 /* SPI Interrupt Flag */ + +/* SPI Data Register */ +#define SPDR _SFR_IO8(0x2E) +#define SPD0 0 +#define SPD1 1 +#define SPD2 2 +#define SPD3 3 +#define SPD4 4 +#define SPD5 5 +#define SPD6 6 +#define SPD7 7 + +/* Analog Comparator Status Register */ +#define ACSR _SFR_IO8(0x30) +#define AC0O 0 /* Analog Comparator 0 Output Bit */ +#define AC1O 1 /* Analog Comparator 1 Output Bit */ +#define AC2O 2 /* Analog Comparator 2 Output Bit */ +#define AC0IF 4 /* Analog Comparator 0 Interrupt Flag Bit */ +#define AC1IF 5 /* Analog Comparator 1 Interrupt Flag Bit */ +#define AC2IF 6 /* Analog Comparator 2 Interrupt Flag Bit */ +#define ACCKDIV 7 /* Analog Comparator Clock Divider */ + +/* Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) +#define SE 0 /* Sleep Enable */ +#define SM0 1 /* Sleep Mode Select bit0 */ +#define SM1 2 /* Sleep Mode Select bit1 */ +#define SM2 3 /* Sleep Mode Select bit2 */ + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 /* Power-on reset flag */ +#define EXTRF 1 /* External Reset Flag */ +#define BORF 2 /* Brown-out Reset Flag */ +#define WDRF 3 /* Watchdog Reset Flag */ + +/* MCU Control Register */ +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 /* Interrupt Vector Change Enable */ +#define IVSEL 1 /* Interrupt Vector Select */ +#define PUD 4 /* Pull-up disable */ +#define SPIPS 7 /* SPI Pin Select */ + +/* Store Program Memory Control Register */ +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 /* Store Program Memory Enable */ +#define PGERS 1 /* Page Erase */ +#define PGWRT 2 /* Page Write */ +#define BLBSET 3 /* Boot Lock Bit Set */ +#define RWWSRE 4 /* Read While Write section read enable */ +#define RWWSB 6 /* Read While Write Section Busy */ +#define SPMIE 7 /* SPM Interrupt Enable */ + +/* Watchdog Timer Control Register */ +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 /* Watchdog Timer Prescaler bit0 */ +#define WDP1 1 /* Watchdog Timer Prescaler bit1 */ +#define WDP2 2 /* Watchdog Timer Prescaler bit2 */ +#define WDE 3 /* Watchdog Enable */ +#define WDCE 4 /* Watchdog Change Enable */ +#define WDP3 5 /* Watchdog Timer Prescaler bit3 */ +#define WDIE 6 /* Watchdog Timeout Interrupt Enable */ +#define WDIF 7 /* Watchdog Timeout Interrupt Flag */ + +/* Clock Prescaler Register */ +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 /* Clock Prescaler Select bit0 */ +#define CLKPS1 1 /* Clock Prescaler Select bit1 */ +#define CLKPS2 2 /* Clock Prescaler Select bit2 */ +#define CLKPS3 3 /* Clock Prescaler Select bit3 */ +#define CLKPCE 7 /* Clock Prescaler Change Enable */ + +/* Power Reduction Register */ +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 /* Power Reduction ADC */ +#define PRUSART 1 /* Power Reduction USART */ +#define PRSPI 2 /* Power Reduction Serial Peripheral Interface */ +#define PRTIM0 3 /* Power Reduction Timer/Counter0 */ +#define PRTIM1 4 /* Power Reduction Timer/Counter1 */ +#define PRPSC0 5 /* Power Reduction PSC0 */ +#define PRPSC1 6 /* Power Reduction PSC1 */ +#define PRPSC2 7 /* Power Reduction PSC2 */ + +/* Oscillator Calibration Value */ +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +/* Timer/Counter0 Interrupt Mask Register */ +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 /* Overflow Interrupt Enable */ +#define OCIE0A 1 /* Output Compare Match A Interrupt Enable */ +#define OCIE0B 2 /* Output Compare Match B Interrupt Enable */ + +/* Timer/Counter1 Interrupt Mask Register */ +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 /* Overflow Interrupt Enable */ +#define OCIE1A 1 /* Output Compare Match A Interrupt Enable */ +#define OCIE1B 2 /* Output Compare Match B Interrupt Enable */ +#define ICIE1 5 /* Input Capture Interrupt Enable */ + +/* Amplifier 0 Control and Status register */ +#define AMP0CSR _SFR_MEM8(0x76) +#define AMP0TS0 0 +#define AMP0TS1 1 +#define AMP0G0 4 +#define AMP0G1 5 +#define AMP0IS 6 +#define AMP0EN 7 + +/* Amplifier 1 Control and Status register */ +#define AMP1CSR _SFR_MEM8(0x77) +#define AMP1TS0 0 +#define AMP1TS1 1 +#define AMP1G0 4 +#define AMP1G1 5 +#define AMP1IS 6 +#define AMP1EN 7 + +/* ADC Result Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +/* ADC Control and Status Register A */ +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 /* ADC Prescaler Select bit0 */ +#define ADPS1 1 /* ADC Prescaler Select bit1 */ +#define ADPS2 2 /* ADC Prescaler Select bit2 */ +#define ADIE 3 /* ADC Interrupt Enable */ +#define ADIF 4 /* ADC Interrupt Flag */ +#define ADATE 5 /* ADC Auto Trigger Enable */ +#define ADSC 6 /* ADC Start Conversion */ +#define ADEN 7 /* ADC Enable */ + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 /* ADC Auto Trigger Source 0 */ +#define ADTS1 1 /* ADC Auto Trigger Source 1 */ +#define ADTS2 2 /* ADC Auto Trigger Source 2 */ +#define ADTS3 3 /* ADC Auto Trigger Source 3 */ +#define ADHSM 7 /* ADC High Speed Mode */ + +/* ADC multiplexer Selection Register */ +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 /* Analog Channel and Gain Selection bit0 */ +#define MUX1 1 /* Analog Channel and Gain Selection bit1 */ +#define MUX2 2 /* Analog Channel and Gain Selection bit2 */ +#define MUX3 3 /* Analog Channel and Gain Selection bit3 */ +#define ADLAR 5 /* Left Adjust Result */ +#define REFS0 6 /* Reference Selection bit0 */ +#define REFS1 7 /* Reference Selection bit1 */ + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 /* ADC0 Digital input Disable */ +#define ADC1D 1 /* ADC1 Digital input Disable */ +#define ADC2D 2 /* ADC2 Digital input Disable */ +#define ADC3D 3 /* ADC3 Digital input Disable */ +#define ADC4D 4 /* ADC4 Digital input Disable */ +#define ADC5D 5 /* ADC5 Digital input Disable */ +#define ADC6D 6 /* ADC6 Digital input Disable */ +#define ADC7D 7 /* ADC7 Digital input Disable */ + +/* Digital Input Disable Register 1 */ +#define DIDR1 _SFR_MEM8(0x7F) +#define ADC8D 0 /* ADC8 Digital input Disable */ +#define ADC9D 1 /* ADC9 Digital input Disable */ +#define ADC10D 2 /* ADC10 Digital input Disable */ +#define AMP0ND 3 +#define AMP0PD 4 +#define ACMP0D 5 + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 /* Waveform Generation Mode */ +#define WGM11 1 /* Waveform Generation Mode */ +#define COM1B0 4 /* Compare Output Mode 1B, bit 0 */ +#define COM1B1 5 /* Compare Output Mode 1B, bit 1 */ +#define COM1A0 6 /* Comparet Ouput Mode 1A, bit 0 */ +#define COM1A1 7 /* Comparet Ouput Mode 1A, bit 1 */ + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 /* Prescaler source of Timer/Counter 1 */ +#define CS11 1 /* Prescaler source of Timer/Counter 1 */ +#define CS12 2 /* Prescaler source of Timer/Counter 1 */ +#define WGM12 3 /* Waveform Generation Mode */ +#define WGM13 4 /* Waveform Generation Mode */ +#define ICES1 6 /* Input Capture 1 Edge Select */ +#define ICNC1 7 /* Input Capture 1 Noise Canceler */ + +/* Timer/Counter1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 /* Force Output Compare for Channel B */ +#define FOC1A 7 /* Force Output Compare for Channel A */ + +/* Timer/Counter1 */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT10 0 +#define TCNT11 1 +#define TCNT12 2 +#define TCNT13 3 +#define TCNT14 4 +#define TCNT15 5 +#define TCNT16 6 +#define TCNT17 7 +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT18 0 +#define TCNT19 1 +#define TCNT110 2 +#define TCNT111 3 +#define TCNT112 4 +#define TCNT113 5 +#define TCNT114 6 +#define TCNT115 7 + +/* Input Capture Register 1 */ +#define ICR1 _SFR_MEM16(0x86) +#define ICR1L _SFR_MEM8(0x86) +#define ICR17 7 +#define ICR16 6 +#define ICR15 5 +#define ICR14 4 +#define ICR13 3 +#define ICR12 2 +#define ICR11 1 +#define ICR10 0 +#define ICR1H _SFR_MEM8(0x87) +#define ICR115 7 +#define ICR114 6 +#define ICR113 5 +#define ICR112 4 +#define ICR111 3 +#define ICR110 2 +#define ICR19 1 +#define ICR18 0 + +/* Output Compare Register 1 A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1A0 0 +#define OCR1A1 1 +#define OCR1A2 2 +#define OCR1A3 3 +#define OCR1A4 4 +#define OCR1A5 5 +#define OCR1A6 6 +#define OCR1A7 7 +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1A8 0 +#define OCR1A9 1 +#define OCR1A10 2 +#define OCR1A11 3 +#define OCR1A12 4 +#define OCR1A13 5 +#define OCR1A14 6 +#define OCR1A15 7 + +/* Output Compare Register 1 B */ +#define OCR1B _SFR_MEM16(0x8A) +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1B0 0 +#define OCR1B1 1 +#define OCR1B2 2 +#define OCR1B3 3 +#define OCR1B4 4 +#define OCR1B5 5 +#define OCR1B6 6 +#define OCR1B7 7 +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1B8 0 +#define OCR1B9 1 +#define OCR1B10 2 +#define OCR1B11 3 +#define OCR1B12 4 +#define OCR1B13 5 +#define OCR1B14 6 +#define OCR1B15 7 + +/* PSC0 Interrupt Flag Register */ +#define PIFR0 _SFR_MEM8(0xA0) +#define PEOP0 0 /* End Of PSC0 Interrupt */ +#define PRN00 1 /* PSC0 Ramp Number bit0 */ +#define PRN01 2 /* PSC0 Ramp Number bit1 */ +#define PEV0A 3 /* PSC0 External Event A Interrupt */ +#define PEV0B 4 /* PSC0 External Event B Interrupt */ +#define PSEI0 5 /* PSC0 Synchro Error Interrupt */ +#define POAC0A 6 /* PSC0 Output A Activity */ +#define POAC0B 7 /* PSC0 Output B Activity */ + +/* PSC0 Interrupt Mask Register */ +#define PIM0 _SFR_MEM8(0xA1) +#define PEOPE0 0 /* PSC0 End Of Cycle Interrupt Enable */ +#define PEVE0A 3 /* PSC0 External Event A Interrupt Enable */ +#define PEVE0B 4 /* PSC0 External Event B Interrupt Enable */ +#define PSEIE0 5 /* PSC0 Synchro Error Interrupt Enable */ + +/* PSC1 Interrupt Flag Register */ +#define PIFR1 _SFR_MEM8(0xA2) +#define PEOP1 0 +#define PRN10 1 +#define PRN11 2 +#define PEV1A 3 +#define PEV1B 4 +#define PSEI1 5 +#define POAC1A 6 +#define POAC1B 7 + +/* PSC1 Interrupt Mask Register */ +#define PIM1 _SFR_MEM8(0xA3) + +/* PSC2 Interrupt Flag Register */ +#define PIFR2 _SFR_MEM8(0xA4) +#define PEOP2 0 /* End Of PSC2 Interrupt */ +#define PRN20 1 /* PSC2 Ramp Number bit0 */ +#define PRN21 2 /* PSC2 Ramp Number bit1 */ +#define PEV2A 3 /* PSC2 External Event A Interrupt */ +#define PEV2B 4 /* PSC2 External Event B Interrupt */ +#define PSEI2 5 /* PSC2 Synchro Error Interrupt */ +#define POAC2A 6 /* PSC2 Output A Activity */ +#define POAC2B 7 /* PSC2 Output B Activity */ + +/* PSC2 Interrupt Mask Register */ +#define PIM2 _SFR_MEM8(0xA5) +#define PEOPE2 0 /* PSC2 End Of Cycle Interrupt Enable */ +#define PEVE2A 3 /* PSC2 External Event A Interrupt Enable */ +#define PEVE2B 4 /* PSC2 External Event B Interrupt Enable */ +#define PSEIE2 5 /* PSC2 Synchro Error Interrupt Enable */ + +/* Digital to Analog Conversion Control Register */ +#define DACON _SFR_MEM8(0xAA) +#define DAEN 0 /* Digital to Analog Enable bit */ +#define DAOE 1 /* Digital to Analog Output Enable bit */ +#define DALA 2 /* Digital to Analog Left Adjust */ +#define DATS0 4 /* DAC Trigger Selection bit0 */ +#define DATS1 5 /* DAC Trigger Selection bit1 */ +#define DATS2 6 /* DAC Trigger Selection bit2 */ +#define DAATE 7 /* DAC Auto Trigger Enable bit */ + +/* Digital to Analog Converter input Register */ +#define DAC _SFR_MEM16(0xAB) +#define DACL _SFR_MEM8(0xAB) +#define DACH _SFR_MEM8(0xAC) + +/* Analog Comparator 0 Control Register */ +#define AC0CON _SFR_MEM8(0xAD) +#define AC0M0 0 /* Analog Comparator 0 Multiplexer register bit0 */ +#define AC0M1 1 /* Analog Comparator 0 Multiplexer register bit1 */ +#define AC0M2 2 /* Analog Comparator 0 Multiplexer register bit2 */ +#define AC0IS0 4 /* Analog Comparator 0 Interrupt Select bit0 */ +#define AC0IS1 5 /* Analog Comparator 0 Interrupt Select bit1 */ +#define AC0IE 6 /* Analog Comparator 0 Interrupt Enable bit */ +#define AC0EN 7 /* Analog Comparator 0 Enable Bit */ + +/* Analog Comparator 1 Control Register */ +#define AC1CON _SFR_MEM8(0xAE) +#define AC1M0 0 /* Analog Comparator 1 Multiplexer register bit0 */ +#define AC1M1 1 /* Analog Comparator 1 Multiplexer register bit1 */ +#define AC1M2 2 /* Analog Comparator 1 Multiplexer register bit2 */ +#define AC1ICE 3 /* Analog Comparator 1 Interrupt Capture Enable bit */ +#define AC1IS0 4 /* Analog Comparator 1 Interrupt Select bit0 */ +#define AC1IS1 5 /* Analog Comparator 1 Interrupt Select bit1 */ +#define AC1IE 6 /* Analog Comparator 1 Interrupt Enable bit */ +#define AC1EN 7 /* Analog Comparator 1 Enable Bit */ + +/* Analog Comparator 2 Control Register */ +#define AC2CON _SFR_MEM8(0xAF) +#define AC2M0 0 /* Analog Comparator 2 Multiplexer register bit0 */ +#define AC2M1 1 /* Analog Comparator 2 Multiplexer register bit1 */ +#define AC2M2 2 /* Analog Comparator 2 Multiplexer register bit2 */ +#define AC2IS0 4 /* Analog Comparator 2 Interrupt Select bit0 */ +#define AC2IS1 5 /* Analog Comparator 2 Interrupt Select bit1 */ +#define AC2IE 6 /* Analog Comparator 2 Interrupt Enable bit */ +#define AC2EN 7 /* Analog Comparator 2 Enable Bit */ + +/* USART Control and Status Register A */ +#define UCSRA _SFR_MEM8(0xC0) +#define MPCM 0 /* Multi-processor Communication Mode */ +#define U2X 1 /* Double the USART Transmission Speed */ +#define UPE 2 /* USART Parity Error */ +#define DOR 3 /* Data OverRun */ +#define FE 4 /* Frame Error */ +#define UDRE 5 /* USART Data Register Empty */ +#define TXC 6 /* USART Transmit Complete */ +#define RXC 7 /* USART Receive Complete */ + +/* USART Control and Status Register B */ +#define UCSRB _SFR_MEM8(0xC1) +#define TXB8 0 /* Transmit Data Bit 8 */ +#define RXB8 1 /* Receive Data Bit 8 */ +#define UCSZ2 2 /* Character Size */ +#define TXEN 3 /* Transmitter Enable */ +#define RXEN 4 /* Receiver Enable */ +#define UDRIE 5 /* USART Data Register Empty Interrupt Enable */ +#define TXCIE 6 /* TX Complete Interrupt Enable */ +#define RXCIE 7 /* RX Complete Interrupt Enable */ + +/* USART Control and Status Register C */ +#define UCSRC _SFR_MEM8(0xC2) +#define UCPOL 0 /* Clock Polarity */ +#define UCSZ0 1 /* Character Size bit0 */ +#define UCSZ1 2 /* Character Size bit1 */ +#define USBS 3 /* Stop Bit Select */ +#define UPM0 4 /* Parity Mode bit0 */ +#define UPM1 5 /* Parity Mode bit1 */ +#define UMSEL 6 /* USART Mode Select */ + +/* USART Baud Rate Register */ +#define UBRR _SFR_MEM16(0xC4) +#define UBRRL _SFR_MEM8(0xC4) +#define UBRRH _SFR_MEM8(0xC5) + +/* USART I/O Data Register */ +#define UDR _SFR_MEM8(0xC6) + +/* EUSART Control and Status Register A */ +#define EUCSRA _SFR_MEM8(0xC8) +#define URxS0 0 /* EUSART Receive Character Size bit0 */ +#define URxS1 1 /* EUSART Receive Character Size bit1 */ +#define URxS2 2 /* EUSART Receive Character Size bit2 */ +#define URxS3 3 /* EUSART Receive Character Size bit3 */ +#define UTxS0 4 /* EUSART Transmit Character Size bit0 */ +#define UTxS1 5 /* EUSART Transmit Character Size bit1 */ +#define UTxS2 6 /* EUSART Transmit Character Size bit2 */ +#define UTxS3 7 /* EUSART Transmit Character Size bit3 */ + +/* EUSART Control and Status Register B */ +#define EUCSRB _SFR_MEM8(0xC9) +#define BODR 0 /* Bit Order */ +#define EMCH 1 /* Manchester mode */ +#define EUSBS 3 /* EUSBS Enable Bit */ +#define EUSART 4 /* EUSART Enable Bit */ + +/* EUSART Control and Status Register C */ +#define EUCSRC _SFR_MEM8(0xCA) +#define STP0 0 /* Stop bits values bit0 */ +#define STP1 1 /* Stop bits values bit1 */ +#define F1617 2 +#define FEM 3 /* Frame Error Manchester */ + +/* Manchester receiver Baud Rate Registers */ +#define MUBRR _SFR_MEM16(0xCC) +#define MUBRRL _SFR_MEM8(0xCC) +#define MUBRRH _SFR_MEM8(0xCD) + +/* EUSART I/O Data Register */ +#define EUDR _SFR_MEM8(0xCE) + +/* PSC 0 Synchro and Output Configuration */ +#define PSOC0 _SFR_MEM8(0xD0) +#define POEN0A 0 /* PSC 0 OUT Part A Output Enable */ +#define POEN0B 2 /* PSC 0 OUT Part B Output Enable */ +#define PSYNC00 4 /* Synchronization Out for ADC Selection bit0 */ +#define PSYNC01 5 /* Synchronization Out for ADC Selection bit1 */ + +/* Output Compare SA Registers */ +#define OCR0SA _SFR_MEM16(0xD2) +#define OCR0SAL _SFR_MEM8(0xD2) +#define OCR0SAH _SFR_MEM8(0xD3) + +/* Output Compare RA Registers */ +#define OCR0RA _SFR_MEM16(0xD4) +#define OCR0RAL _SFR_MEM8(0xD4) +#define OCR0RAH _SFR_MEM8(0xD5) + +/* Output Compare SB Registers */ +#define OCR0SB _SFR_MEM16(0xD6) +#define OCR0SBL _SFR_MEM8(0xD6) +#define OCR0SBH _SFR_MEM8(0xD7) + +/* Output Compare RB Registers */ +#define OCR0RB _SFR_MEM16(0xD8) +#define OCR0RBL _SFR_MEM8(0xD8) +#define OCR0RBH _SFR_MEM8(0xD9) + +/* PSC 0 Configuration Register */ +#define PCNF0 _SFR_MEM8(0xDA) +#define PCLKSEL0 1 /* PSC 0 Input Clock Select */ +#define POP0 2 /* PSC 0 Output Polarity */ +#define PMODE00 3 /* PSC 0 Mode bit0 */ +#define PMODE01 4 /* PSC 0 Mode bit1 */ +#define PLOCK0 5 /* PSC 0 Lock */ +#define PALOCK0 6 /* PSC 0 Autolock */ +#define PFIFTY0 7 /* PSC 0 Fifty */ + +/* PSC 0 Control Register */ +#define PCTL0 _SFR_MEM8(0xDB) +#define PRUN0 0 /* PSC 0 Run */ +#define PCCYC0 1 /* PSC 0 Complete Cycle */ +#define PARUN0 2 /* PSC 0 Autorun */ +#define PAOC0A 3 /* PSC 0 Asynchronous Output Control A */ +#define PAOC0B 4 /* PSC 0 Asynchronous Output Control B */ +#define PBFM0 5 /* Balance Flank Width Modulation */ +#define PPRE00 6 /* PSC 0 Prescaler Select bit0 */ +#define PPRE01 7 /* PSC 0 Prescaler Select bit1 */ + +/* PSC 0 Input A Control Register */ +#define PFRC0A _SFR_MEM8(0xDC) +#define PRFM0A0 0 /* PSC 0 Fault Mode bit0 */ +#define PRFM0A1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0A2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0A3 3 /* PSC 0 Fault Mode bit3 */ +#define PFLTE0A 4 /* PSC 0 Filter Enable on Input Part A */ +#define PELEV0A 5 /* PSC 0 Edge Level Selector of Input Part A */ +#define PISEL0A 6 /* PSC 0 Input Select for Part A */ +#define PCAE0A 7 /* PSC 0 Capture Enable Input Part A */ + +/* PSC 0 Input B Control Register */ +#define PFRC0B _SFR_MEM8(0xDD) +#define PRFM0B0 0 /* PSC 0 Fault Mode bit0 */ +#define PRFM0B1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0B2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0B3 3 /* PSC 0 Fault Mode bit3 */ +#define PFLTE0B 4 /* PSC 0 Filter Enable on Input Part B */ +#define PELEV0B 5 /* PSC 0 Edge Level Selector of Input Part B */ +#define PISEL0B 6 /* PSC 0 Input Select for Part B */ +#define PCAE0B 7 /* PSC 0 Capture Enable Input Part B */ + +/* PSC 0 Input Capture Registers */ +#define PICR0 _SFR_MEM16(0xDE) +#define PICR0L _SFR_MEM8(0xDE) +#define PICR0H _SFR_MEM8(0xDF) +#define PCST0 7 /* PSC Capture Software Trig bit */ + +/* PSC 1 Synchro and Output Configuration */ +#define PSOC1 _SFR_MEM8(0xE0) +#define POEN1A 0 +#define POEN1B 2 +#define PSYNC1_0 4 +#define PSYNC1_1 5 + +/* Output Compare SA Registers */ +#define OCR1SA _SFR_MEM16(0xE2) +#define OCR1SAL _SFR_MEM8(0xE2) +#define OCR1SAH _SFR_MEM8(0xE3) + +/* Output Compare RA Registers */ +#define OCR1RA _SFR_MEM16(0xE4) +#define OCR1RAL _SFR_MEM8(0xE4) +#define OCR1RAH _SFR_MEM8(0xE5) + +/* Output Compare SB Registers */ +#define OCR1SB _SFR_MEM16(0xE6) +#define OCR1SBL _SFR_MEM8(0xE6) +#define OCR1SBH _SFR_MEM8(0xE7) + +/* Output Compare RB Registers */ +#define OCR1RB _SFR_MEM16(0xE8) +#define OCR1RBL _SFR_MEM8(0xE8) +#define OCR1RBH _SFR_MEM8(0xE9) + +/* PSC 1 Configuration Register */ +#define PCNF1 _SFR_MEM8(0xEA) +#define PCLKSEL1 1 +#define POP1 2 +#define PMODE10 3 +#define PMODE11 4 +#define PLOCK1 5 +#define PALOCK1 6 +#define PFIFTY1 7 + +/* PSC 1 Control Register */ +#define PCTL1 _SFR_MEM8(0xEB) +#define PRUN1 0 +#define PCCYC1 1 +#define PARUN1 2 +#define PAOC1A 3 +#define PAOC1B 4 +#define PBFM1 5 +#define PPRE10 6 +#define PPRE11 7 + +/* PSC 1 Input A Control Register */ +#define PFRC1A _SFR_MEM8(0xEC) +#define PRFM1A0 0 +#define PRFM1A1 1 +#define PRFM1A2 2 +#define PRFM1A3 3 +#define PFLTE1A 4 +#define PELEV1A 5 +#define PISEL1A 6 +#define PCAE1A 7 + +/* PSC 1 Input B Control Register */ +#define PFRC1B _SFR_MEM8(0xED) +#define PRFM1B0 0 +#define PRFM1B1 1 +#define PRFM1B2 2 +#define PRFM1B3 3 +#define PFLTE1B 4 +#define PELEV1B 5 +#define PISEL1B 6 +#define PCAE1B 7 + +/* PSC 1 Input Capture Registers */ +#define PICR1 _SFR_MEM16(0xEE) +#define PICR1L _SFR_MEM8(0xEE) +#define PICR1H _SFR_MEM8(0xEF) + +/* PSC 2 Synchro and Output Configuration */ +#define PSOC2 _SFR_MEM8(0xF0) +#define POEN2A 0 /* PSC 2 OUT Part A Output Enable */ +#define POEN2C 1 /* PSCOUT22 Output Enable */ +#define POEN2B 2 /* PSC 2 OUT Part B Output Enable */ +#define POEN2D 3 /* PSCOUT23 Output Enable */ +#define PSYNC20 4 /* Synchronization Out for ADC Selection bit0 */ +#define PSYNC21 5 /* Synchronization Out for ADC Selection bit1 */ +#define POS22 6 /* PSCOUT22 Selection */ +#define POS23 7 /* PSCOUT23 Selection */ + +/* PSC 2 Output Matrix */ +#define POM2 _SFR_MEM8(0xF1) +#define POMV2A0 0 /* Output Matrix Output A Ramp 0 */ +#define POMV2A1 1 /* Output Matrix Output A Ramp 1 */ +#define POMV2A2 2 /* Output Matrix Output A Ramp 2 */ +#define POMV2A3 3 /* Output Matrix Output A Ramp 3 */ +#define POMV2B0 4 /* Output Matrix Output B Ramp 0 */ +#define POMV2B1 5 /* Output Matrix Output B Ramp 1 */ +#define POMV2B2 6 /* Output Matrix Output B Ramp 2 */ +#define POMV2B3 7 /* Output Matrix Output B Ramp 3 */ + +/* Output Compare SA Registers */ +#define OCR2SA _SFR_MEM16(0xF2) +#define OCR2SAL _SFR_MEM8(0xF2) +#define OCR2SAH _SFR_MEM8(0xF3) + +/* Output Compare RA Registers */ +#define OCR2RA _SFR_MEM16(0xF4) +#define OCR2RAL _SFR_MEM8(0xF4) +#define OCR2RAH _SFR_MEM8(0xF5) + +/* Output Compare SB Registers */ +#define OCR2SB _SFR_MEM16(0xF6) +#define OCR2SBL _SFR_MEM8(0xF6) +#define OCR2SBH _SFR_MEM8(0xF7) + +/* Output Compare RB Registers */ +#define OCR2RB _SFR_MEM16(0xF8) +#define OCR2RBL _SFR_MEM8(0xF8) +#define OCR2RBH _SFR_MEM8(0xF9) + +/* PSC 2 Configuration Register */ +#define PCNF2 _SFR_MEM8(0xFA) +#define POME2 0 /* PSC 2 Output Matrix Enable */ +#define PCLKSEL2 1 /* PSC 2 Input Clock Select */ +#define POP2 2 /* PSC 2 Output Polarity */ +#define PMODE20 3 /* PSC 2 Mode bit0 */ +#define PMODE21 4 /* PSC 2 Mode bit1 */ +#define PLOCK2 5 /* PSC 2 Lock */ +#define PALOCK2 6 /* PSC 2 Autolock */ +#define PFIFTY2 7 /* PSC 2 Fifty */ + +/* PSC 2 Control Register */ +#define PCTL2 _SFR_MEM8(0xFB) +#define PRUN2 0 /* PSC 2 Run */ +#define PCCYC2 1 /* PSC 2 Complete Cycle */ +#define PARUN2 2 /* PSC 2 Autorun */ +#define PAOC2A 3 /* PSC 2 Asynchronous Output Control A */ +#define PAOC2B 4 /* PSC 2 Asynchronous Output Control B */ +#define PBFM2 5 /* Balance Flank Width Modulation */ +#define PPRE20 6 /* PSC 2 Prescaler Select bit0 */ +#define PPRE21 7 /* PSC 2 Prescaler Select bit1 */ + +/* PSC 2 Input A Control Register */ +#define PFRC2A _SFR_MEM8(0xFC) +#define PRFM2A0 0 /* PSC 2 Fault Mode bit0 */ +#define PRFM2A1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2A2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2A3 3 /* PSC 2 Fault Mode bit3 */ +#define PFLTE2A 4 /* PSC 2 Filter Enable on Input Part A */ +#define PELEV2A 5 /* PSC 2 Edge Level Selector of Input Part A */ +#define PISEL2A 6 /* PSC 2 Input Select for Part A */ +#define PCAE2A 7 /* PSC 2 Capture Enable Input Part A */ + +/* PSC 2 Input B Control Register */ +#define PFRC2B _SFR_MEM8(0xFD) +#define PRFM2B0 0 /* PSC 2 Fault Mode bit0 */ +#define PRFM2B1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2B2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2B3 3 /* PSC 2 Fault Mode bit3 */ +#define PFLTE2B 4 /* PSC 2 Filter Enable on Input Part B */ +#define PELEV2B 5 /* PSC 2 Edge Level Selector of Input Part B */ +#define PISEL2B 6 /* PSC 2 Input Select for Part B */ +#define PCAE2B 7 /* PSC 2 Capture Enable Input Part B */ + +/* PSC 2 Input Capture Registers */ +#define PICR2 _SFR_MEM16(0xFE) +#define PICR2L _SFR_MEM8(0xFE) +#define PICR2H _SFR_MEM8(0xFF) +#define PCST2 7 /* PSC Capture Software Trig bit */ + + +/* Interrupt Vectors */ +/* Interrupt 0 is the reset vector. */ + +/* PSC2 Capture Event */ +#define PSC2_CAPT_vect _VECTOR(1) + +/* PSC2 End Cycle */ +#define PSC2_EC_vect _VECTOR(2) + +/* PSC1 Capture Event */ +#define PSC1_CAPT_vect _VECTOR(3) + +/* PSC1 End Cycle */ +#define PSC1_EC_vect _VECTOR(4) + +/* PSC0 Capture Event */ +#define PSC0_CAPT_vect _VECTOR(5) + +/* PSC0 End Cycle */ +#define PSC0_EC_vect _VECTOR(6) + +/* Analog Comparator 0 */ +#define ANALOG_COMP_0_vect _VECTOR(7) + +/* Analog Comparator 1 */ +#define ANALOG_COMP_1_vect _VECTOR(8) + +/* Analog Comparator 2 */ +#define ANALOG_COMP_2_vect _VECTOR(9) + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(15) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMP_A_vect _VECTOR(16) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(17) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(18) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(19) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(20) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(21) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(22) + +/* USART, Tx Complete */ +#define USART_TX_vect _VECTOR(23) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(24) + +/* Watchdog Timeout Interrupt */ +#define WDT_vect _VECTOR(25) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(26) + +/* Timer Counter 0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(27) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(28) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(31) + +#define _VECTORS_SIZE (4 * 32) + +/* Constants */ + +#define RAMEND 0x4FF +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF +#define SPM_PAGESIZE 128 + + +/* Fuse Information */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Diasble */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_PSCRV (unsigned char)~_BV(4) +#define FUSE_PSC0RB (unsigned char)~_BV(5) +#define FUSE_PSC1RB (unsigned char)~_BV(6) +#define FUSE_PSC2RB (unsigned char)~_BV(7) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x83 + + +#endif /* _AVR_IO90PWM316_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm3b.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm3b.h new file mode 100644 index 0000000..5eeec04 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwm3b.h @@ -0,0 +1,1383 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: io90pwm3b.h,v 1.3.2.11 2008/10/17 23:27:46 arcanum Exp $ */ + +/* avr/io90pwm3b.h - definitions for AT90PWM3B */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io90pwm3b.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IO90PWM3B_H_ +#define _AVR_IO90PWM3B_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINE _SFR_IO8(0x0C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 + +#define DDRE _SFR_IO8(0x0D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 + +#define PORTE _SFR_IO8(0x0E) +#define PORTE0 0 +#define PORTE1 1 +#define PORTE2 2 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define GPIOR1 _SFR_IO8(0x19) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x1A) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define GPIOR3 _SFR_IO8(0x1B) +#define GPIOR30 0 +#define GPIOR31 1 +#define GPIOR32 2 +#define GPIOR33 3 +#define GPIOR34 4 +#define GPIOR35 5 +#define GPIOR36 6 +#define GPIOR37 7 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 +#define INT3 3 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEARL0 0 +#define EEARL1 1 +#define EEARL2 2 +#define EEARL3 3 +#define EEARL4 4 +#define EEARL5 5 +#define EEARL6 6 +#define EEARL7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSRSYNC 0 +#define ICPSEL1 2 +#define TSM 3 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0_0 0 +#define OCR0_1 1 +#define OCR0_2 2 +#define OCR0_3 3 +#define OCR0_4 4 +#define OCR0_5 5 +#define OCR0_6 6 +#define OCR0_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0_0 0 +#define OCR0_1 1 +#define OCR0_2 2 +#define OCR0_3 3 +#define OCR0_4 4 +#define OCR0_5 5 +#define OCR0_6 6 +#define OCR0_7 7 + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PLLF 2 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define AC0O 0 +#define AC1O 1 +#define AC2O 2 +#define AC0IF 4 +#define AC1IF 5 +#define AC2IF 6 +#define ACCKDIV 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define SPIPS 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE3 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM0 3 +#define PRTIM1 4 +#define PRPSC0 5 +#define PRPSC1 6 +#define PRPSC2 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define AMP0CSR _SFR_MEM8(0x76) +#define AMP0TS0 0 +#define AMP0TS1 1 +#define AMP0G0 4 +#define AMP0G1 5 +#define AMP0IS 6 +#define AMP0EN 7 + +#define AMP1CSR _SFR_MEM8(0x77) +#define AMP1TS0 0 +#define AMP1TS1 1 +#define AMP1G0 4 +#define AMP1G1 5 +#define AMP1IS 6 +#define AMP1EN 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ADTS3 3 +#define ADASCR 4 +#define ADHSM 7 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define ADC8D 0 +#define ADC9D 1 +#define ADC10D 2 +#define AMP0ND 3 +#define AMP0PD 4 +#define ACMP0D 5 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define PIFR0 _SFR_MEM8(0xA0) +#define PEOP0 0 +#define PRN00 1 +#define PRN01 2 +#define PEV0A 3 +#define PEV0B 4 +#define PSEI0 5 +#define POAC0A 6 +#define POAC0B 7 + +#define PIM0 _SFR_MEM8(0xA1) +#define PEOPE0 0 +#define PEVE0A 3 +#define PEVE0B 4 +#define PSEIE0 5 + +#define PIFR1 _SFR_MEM8(0xA2) +#define PEOP1 0 +#define PRN10 1 +#define PRN11 2 +#define PEV1A 3 +#define PEV1B 4 +#define PSEI1 5 +#define POAC1A 6 +#define POAC1B 7 + +#define PIM1 _SFR_MEM8(0xA3) +#define PEOPE1 0 +#define PEVE1A 3 +#define PEVE1B 4 +#define PSEIE1 5 + +#define PIFR2 _SFR_MEM8(0xA4) +#define PEOP2 0 +#define PRN20 1 +#define PRN21 2 +#define PEV2A 3 +#define PEV2B 4 +#define PSEI2 5 +#define POAC2A 6 +#define POAC2B 7 + +#define PIM2 _SFR_MEM8(0xA5) +#define PEOPE2 0 +#define PEVE2A 3 +#define PEVE2B 4 +#define PSEIE2 5 + +#define DACON _SFR_MEM8(0xAA) +#define DAEN 0 +#define DAOE 1 +#define DALA 2 +#define DATS0 4 +#define DATS1 5 +#define DATS2 6 +#define DAATE 7 + +#define DAC _SFR_MEM16(0xAB) + +#define DACL _SFR_MEM8(0xAB) +#define DACL0 0 +#define DACL1 1 +#define DACL2 2 +#define DACL3 3 +#define DACL4 4 +#define DACL5 5 +#define DACL6 6 +#define DACL7 7 + +#define DACH _SFR_MEM8(0xAC) +#define DACH0 0 +#define DACH1 1 +#define DACH2 2 +#define DACH3 3 +#define DACH4 4 +#define DACH5 5 +#define DACH6 6 +#define DACH7 7 + +#define AC0CON _SFR_MEM8(0xAD) +#define AC0M0 0 +#define AC0M1 1 +#define AC0M2 2 +#define AC0IS0 4 +#define AC0IS1 5 +#define AC0IE 6 +#define AC0EN 7 + +#define AC1CON _SFR_MEM8(0xAE) +#define AC1M0 0 +#define AC1M1 1 +#define AC1M2 2 +#define AC1ICE 3 +#define AC1IS0 4 +#define AC1IS1 5 +#define AC1IE 6 +#define AC1EN 7 + +#define AC2CON _SFR_MEM8(0xAF) +#define AC2M0 0 +#define AC2M1 1 +#define AC2M2 2 +#define AC2IS0 4 +#define AC2IS1 5 +#define AC2IE 6 +#define AC2EN 7 + +#define UCSRA _SFR_MEM8(0xC0) +#define MPCM 0 +#define U2X 1 +#define UPE 2 +#define DOR 3 +#define FE 4 +#define UDRE 5 +#define TXC 6 +#define RXC 7 + +#define UCSRB _SFR_MEM8(0xC1) +#define TXB8 0 +#define RXB8 1 +#define UCSZ2 2 +#define TXEN 3 +#define RXEN 4 +#define UDRIE 5 +#define TXCIE 6 +#define RXCIE 7 + +#define UCSRC _SFR_MEM8(0xC2) +#define UCPOL 0 +#define UCSZ0 1 +#define UCSZ1 2 +#define USBS 3 +#define UPM0 4 +#define UPM1 5 +#define UMSEL0 6 + +#define UBRR _SFR_MEM16(0xC4) + +#define UBRRL _SFR_MEM8(0xC4) +#define UBRR0 0 +#define UBRR1 1 +#define UBRR2 2 +#define UBRR3 3 +#define UBRR4 4 +#define UBRR5 5 +#define UBRR6 6 +#define UBRR7 7 + +#define UBRRH _SFR_MEM8(0xC5) +#define UBRR8 0 +#define UBRR9 1 +#define UBRR10 2 +#define UBRR11 3 + +#define UDR _SFR_MEM8(0xC6) +#define UDR0 0 +#define UDR1 1 +#define UDR2 2 +#define UDR3 3 +#define UDR4 4 +#define UDR5 5 +#define UDR6 6 +#define UDR7 7 + +#define EUCSRA _SFR_MEM8(0xC8) +#define URxS0 0 +#define URxS1 1 +#define URxS2 2 +#define URxS3 3 +#define UTxS0 4 +#define UTxS1 5 +#define UTxS2 6 +#define UTxS3 7 + +#define EUCSRB _SFR_MEM8(0xC9) +#define BODR 0 +#define EMCH 1 +#define EUSBS 3 +#define EUSART 4 + +#define EUCSRC _SFR_MEM8(0xCA) +#define STP0 0 +#define STP1 1 +#define F1617 2 +#define FEM 3 + +#define MUBRR _SFR_MEM16(0xCC) + +#define MUBRRL _SFR_MEM8(0xCC) +#define MUBRR0 0 +#define MUBRR1 1 +#define MUBRR2 2 +#define MUBRR3 3 +#define MUBRR4 4 +#define MUBRR5 5 +#define MUBRR6 6 +#define MUBRR7 7 + +#define MUBRRH _SFR_MEM8(0xCD) +#define MUBRR8 0 +#define MUBRR9 1 +#define MUBRR10 2 +#define MUBRR11 3 +#define MUBRR12 4 +#define MUBRR13 5 +#define MUBRR14 6 +#define MUBRR15 7 + +#define EUDR _SFR_MEM8(0xCE) +#define EUDR0 0 +#define EUDR1 1 +#define EUDR2 2 +#define EUDR3 3 +#define EUDR4 4 +#define EUDR5 5 +#define EUDR6 6 +#define EUDR7 7 + +#define PSOC0 _SFR_MEM8(0xD0) +#define POEN0A 0 +#define POEN0B 2 +#define PSYNC00 4 +#define PSYNC01 5 + +#define OCR0SA _SFR_MEM16(0xD2) + +#define OCR0SAL _SFR_MEM8(0xD2) +#define OCR0SA_0 0 +#define OCR0SA_1 1 +#define OCR0SA_2 2 +#define OCR0SA_3 3 +#define OCR0SA_4 4 +#define OCR0SA_5 5 +#define OCR0SA_6 6 +#define OCR0SA_7 7 + +#define OCR0SAH _SFR_MEM8(0xD3) +#define OCR0SA_8 0 +#define OCR0SA_9 1 +#define OCR0SA_00 2 +#define OCR0SA_01 3 + +#define OCR0RA _SFR_MEM16(0xD4) + +#define OCR0RAL _SFR_MEM8(0xD4) +#define OCR0RA_0 0 +#define OCR0RA_1 1 +#define OCR0RA_2 2 +#define OCR0RA_3 3 +#define OCR0RA_4 4 +#define OCR0RA_5 5 +#define OCR0RA_6 6 +#define OCR0RA_7 7 + +#define OCR0RAH _SFR_MEM8(0xD5) +#define OCR0RA_8 0 +#define OCR0RA_9 1 +#define OCR0RA_00 2 +#define OCR0RA_01 3 + +#define OCR0SB _SFR_MEM16(0xD6) + +#define OCR0SBL _SFR_MEM8(0xD6) +#define OCR0SB_0 0 +#define OCR0SB_1 1 +#define OCR0SB_2 2 +#define OCR0SB_3 3 +#define OCR0SB_4 4 +#define OCR0SB_5 5 +#define OCR0SB_6 6 +#define OCR0SB_7 7 + +#define OCR0SBH _SFR_MEM8(0xD7) +#define OCR0SB_8 0 +#define OCR0SB_9 1 +#define OCR0SB_00 2 +#define OCR0SB_01 3 + +#define OCR0RB _SFR_MEM16(0xD8) + +#define OCR0RBL _SFR_MEM8(0xD8) +#define OCR0RB_0 0 +#define OCR0RB_1 1 +#define OCR0RB_2 2 +#define OCR0RB_3 3 +#define OCR0RB_4 4 +#define OCR0RB_5 5 +#define OCR0RB_6 6 +#define OCR0RB_7 7 + +#define OCR0RBH _SFR_MEM8(0xD9) +#define OCR0RB_8 0 +#define OCR0RB_9 1 +#define OCR0RB_00 2 +#define OCR0RB_01 3 +#define OCR0RB_02 4 +#define OCR0RB_03 5 +#define OCR0RB_04 6 +#define OCR0RB_05 7 + +#define PCNF0 _SFR_MEM8(0xDA) +#define PCLKSEL0 1 +#define POP0 2 +#define PMODE00 3 +#define PMODE01 4 +#define PLOCK0 5 +#define PALOCK0 6 +#define PFIFTY0 7 + +#define PCTL0 _SFR_MEM8(0xDB) +#define PRUN0 0 +#define PCCYC0 1 +#define PARUN0 2 +#define PAOC0A 3 +#define PAOC0B 4 +#define PBFM0 5 +#define PPRE00 6 +#define PPRE01 7 + +#define PFRC0A _SFR_MEM8(0xDC) +#define PRFM0A0 0 +#define PRFM0A1 1 +#define PRFM0A2 2 +#define PRFM0A3 3 +#define PFLTE0A 4 +#define PELEV0A 5 +#define PISEL0A 6 +#define PCAE0A 7 + +#define PFRC0B _SFR_MEM8(0xDD) +#define PRFM0B0 0 +#define PRFM0B1 1 +#define PRFM0B2 2 +#define PRFM0B3 3 +#define PFLTE0B 4 +#define PELEV0B 5 +#define PISEL0B 6 +#define PCAE0B 7 + +#define PICR0 _SFR_MEM16(0xDE) + +#define PICR0L _SFR_MEM8(0xDE) +#define PICR0_0 0 +#define PICR0_1 1 +#define PICR0_2 2 +#define PICR0_3 3 +#define PICR0_4 4 +#define PICR0_5 5 +#define PICR0_6 6 +#define PICR0_7 7 + +#define PICR0H _SFR_MEM8(0xDF) +#define PICR0_8 0 +#define PICR0_9 1 +#define PICR0_10 2 +#define PICR0_11 3 +#define PCST0 7 + +#define PSOC1 _SFR_MEM8(0xE0) +#define POEN1A 0 +#define POEN1B 2 +#define PSYNC1_0 4 +#define PSYNC1_1 5 + +#define OCR1SA _SFR_MEM16(0xE2) + +#define OCR1SAL _SFR_MEM8(0xE2) +#define OCR1SA_0 0 +#define OCR1SA_1 1 +#define OCR1SA_2 2 +#define OCR1SA_3 3 +#define OCR1SA_4 4 +#define OCR1SA_5 5 +#define OCR1SA_6 6 +#define OCR1SA_7 7 + +#define OCR1SAH _SFR_MEM8(0xE3) +#define OCR1SA_8 0 +#define OCR1SA_9 1 +#define OCR1SA_10 2 +#define OCR1SA_11 3 + +#define OCR1RA _SFR_MEM16(0xE4) + +#define OCR1RAL _SFR_MEM8(0xE4) +#define OCR1RA_0 0 +#define OCR1RA_1 1 +#define OCR1RA_2 2 +#define OCR1RA_3 3 +#define OCR1RA_4 4 +#define OCR1RA_5 5 +#define OCR1RA_6 6 +#define OCR1RA_7 7 + +#define OCR1RAH _SFR_MEM8(0xE5) +#define OCR1RA_8 0 +#define OCR1RA_9 1 +#define OCR1RA_10 2 +#define OCR1RA_11 3 + +#define OCR1SB _SFR_MEM16(0xE6) + +#define OCR1SBL _SFR_MEM8(0xE6) +#define OCR1SB_0 0 +#define OCR1SB_1 1 +#define OCR1SB_2 2 +#define OCR1SB_3 3 +#define OCR1SB_4 4 +#define OCR1SB_5 5 +#define OCR1SB_6 6 +#define OCR1SB_7 7 + +#define OCR1SBH _SFR_MEM8(0xE7) +#define OCR1SB_8 0 +#define OCR1SB_9 1 +#define OCR1SB_10 2 +#define OCR1SB_11 3 + +#define OCR1RB _SFR_MEM16(0xE8) + +#define OCR1RBL _SFR_MEM8(0xE8) +#define OCR1RB_0 0 +#define OCR1RB_1 1 +#define OCR1RB_2 2 +#define OCR1RB_3 3 +#define OCR1RB_4 4 +#define OCR1RB_5 5 +#define OCR1RB_6 6 +#define OCR1RB_7 7 + +#define OCR1RBH _SFR_MEM8(0xE9) +#define OCR1RB_8 0 +#define OCR1RB_9 1 +#define OCR1RB_10 2 +#define OCR1RB_11 3 +#define OCR1RB_12 4 +#define OCR1RB_13 5 +#define OCR1RB_14 6 +#define OCR1RB_15 7 + +#define PCNF1 _SFR_MEM8(0xEA) +#define PCLKSEL1 1 +#define POP1 2 +#define PMODE10 3 +#define PMODE11 4 +#define PLOCK1 5 +#define PALOCK1 6 +#define PFIFTY1 7 + +#define PCTL1 _SFR_MEM8(0xEB) +#define PRUN1 0 +#define PCCYC1 1 +#define PARUN1 2 +#define PAOC1A 3 +#define PAOC1B 4 +#define PBFM1 5 +#define PPRE10 6 +#define PPRE11 7 + +#define PFRC1A _SFR_MEM8(0xEC) +#define PRFM1A0 0 +#define PRFM1A1 1 +#define PRFM1A2 2 +#define PRFM1A3 3 +#define PFLTE1A 4 +#define PELEV1A 5 +#define PISEL1A 6 +#define PCAE1A 7 + +#define PFRC1B _SFR_MEM8(0xED) +#define PRFM1B0 0 +#define PRFM1B1 1 +#define PRFM1B2 2 +#define PRFM1B3 3 +#define PFLTE1B 4 +#define PELEV1B 5 +#define PISEL1B 6 +#define PCAE1B 7 + +#define PICR1 _SFR_MEM16(0xEE) + +#define PICR1L _SFR_MEM8(0xEE) +#define PICR1_0 0 +#define PICR1_1 1 +#define PICR1_2 2 +#define PICR1_3 3 +#define PICR1_4 4 +#define PICR1_5 5 +#define PICR1_6 6 +#define PICR1_7 7 + +#define PICR1H _SFR_MEM8(0xEF) +#define PICR1_8 0 +#define PICR1_9 1 +#define PICR1_10 2 +#define PICR1_11 3 +#define PCST1 7 + +#define PSOC2 _SFR_MEM8(0xF0) +#define POEN2A 0 +#define POEN2C 1 +#define POEN2B 2 +#define POEN2D 3 +#define PSYNC2_0 4 +#define PSYNC2_1 5 +#define POS22 6 +#define POS23 7 + +#define POM2 _SFR_MEM8(0xF1) +#define POMV2A0 0 +#define POMV2A1 1 +#define POMV2A2 2 +#define POMV2A3 3 +#define POMV2B0 4 +#define POMV2B1 5 +#define POMV2B2 6 +#define POMV2B3 7 + +#define OCR2SA _SFR_MEM16(0xF2) + +#define OCR2SAL _SFR_MEM8(0xF2) +#define OCR2SA_0 0 +#define OCR2SA_1 1 +#define OCR2SA_2 2 +#define OCR2SA_3 3 +#define OCR2SA_4 4 +#define OCR2SA_5 5 +#define OCR2SA_6 6 +#define OCR2SA_7 7 + +#define OCR2SAH _SFR_MEM8(0xF3) +#define OCR2SA_8 0 +#define OCR2SA_9 1 +#define OCR2SA_10 2 +#define OCR2SA_11 3 + +#define OCR2RA _SFR_MEM16(0xF4) + +#define OCR2RAL _SFR_MEM8(0xF4) +#define OCR2RA_0 0 +#define OCR2RA_1 1 +#define OCR2RA_2 2 +#define OCR2RA_3 3 +#define OCR2RA_4 4 +#define OCR2RA_5 5 +#define OCR2RA_6 6 +#define OCR2RA_7 7 + +#define OCR2RAH _SFR_MEM8(0xF5) +#define OCR2RA_8 0 +#define OCR2RA_9 1 +#define OCR2RA_10 2 +#define OCR2RA_11 3 + +#define OCR2SB _SFR_MEM16(0xF6) + +#define OCR2SBL _SFR_MEM8(0xF6) +#define OCR2SB_0 0 +#define OCR2SB_1 1 +#define OCR2SB_2 2 +#define OCR2SB_3 3 +#define OCR2SB_4 4 +#define OCR2SB_5 5 +#define OCR2SB_6 6 +#define OCR2SB_7 7 + +#define OCR2SBH _SFR_MEM8(0xF7) +#define OCR2SB_8 0 +#define OCR2SB_9 1 +#define OCR2SB_10 2 +#define OCR2SB_11 3 + +#define OCR2RB _SFR_MEM16(0xF8) + +#define OCR2RBL _SFR_MEM8(0xF8) +#define OCR2RB_0 0 +#define OCR2RB_1 1 +#define OCR2RB_2 2 +#define OCR2RB_3 3 +#define OCR2RB_4 4 +#define OCR2RB_5 5 +#define OCR2RB_6 6 +#define OCR2RB_7 7 + +#define OCR2RBH _SFR_MEM8(0xF9) +#define OCR2RB_8 0 +#define OCR2RB_9 1 +#define OCR2RB_10 2 +#define OCR2RB_11 3 +#define OCR2RB_12 4 +#define OCR2RB_13 5 +#define OCR2RB_14 6 +#define OCR2RB_15 7 + +#define PCNF2 _SFR_MEM8(0xFA) +#define POME2 0 +#define PCLKSEL2 1 +#define POP2 2 +#define PMODE20 3 +#define PMODE21 4 +#define PLOCK2 5 +#define PALOCK2 6 +#define PFIFTY2 7 + +#define PCTL2 _SFR_MEM8(0xFB) +#define PRUN2 0 +#define PCCYC2 1 +#define PARUN2 2 +#define PAOC2A 3 +#define PAOC2B 4 +#define PBFM2 5 +#define PPRE20 6 +#define PPRE21 7 + +#define PFRC2A _SFR_MEM8(0xFC) +#define PRFM2A0 0 +#define PRFM2A1 1 +#define PRFM2A2 2 +#define PRFM2A3 3 +#define PFLTE2A 4 +#define PELEV2A 5 +#define PISEL2A 6 +#define PCAE2A 7 + +#define PFRC2B _SFR_MEM8(0xFD) +#define PRFM2B0 0 +#define PRFM2B1 1 +#define PRFM2B2 2 +#define PRFM2B3 3 +#define PFLTE2B 4 +#define PELEV2B 5 +#define PISEL2B 6 +#define PCAE2B 7 + +#define PICR2 _SFR_MEM16(0xFE) + +#define PICR2L _SFR_MEM8(0xFE) +#define PICR2_0 0 +#define PICR2_1 1 +#define PICR2_2 2 +#define PICR2_3 3 +#define PICR2_4 4 +#define PICR2_5 5 +#define PICR2_6 6 +#define PICR2_7 7 + +#define PICR2H _SFR_MEM8(0xFF) +#define PICR2_8 0 +#define PICR2_9 1 +#define PICR2_10 2 +#define PICR2_11 3 +#define PCST2 7 + + + +/* Interrupt Vectors */ +/* Interrupt vector 0 is the reset vector. */ +#define PSC2_CAPT_vect _VECTOR(1) /* PSC2 Capture Event */ +#define PSC2_EC_vect _VECTOR(2) /* PSC2 End Cycle */ +#define PSC1_CAPT_vect _VECTOR(3) /* PSC1 Capture Event */ +#define PSC1_EC_vect _VECTOR(4) /* PSC1 End Cycle */ +#define PSC0_CAPT_vect _VECTOR(5) /* PSC0 Capture Event */ +#define PSC0_EC_vect _VECTOR(6) /* PSC0 End Cycle */ +#define ANALOG_COMP_0_vect _VECTOR(7) /* Analog Comparator 0 */ +#define ANALOG_COMP_1_vect _VECTOR(8) /* Analog Comparator 1 */ +#define ANALOG_COMP_2_vect _VECTOR(9) /* Analog Comparator 2 */ +#define INT0_vect _VECTOR(10) /* External Interrupt Request 0 */ +#define TIMER1_CAPT_vect _VECTOR(11) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(12) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(13) /* Timer/Counter Compare Match B */ +/* Vector 14, Reserved */ +#define TIMER1_OVF_vect _VECTOR(15) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(16) /* Timer/Counter0 Compare Match A */ +#define TIMER0_OVF_vect _VECTOR(17) /* Timer/Counter0 Overflow */ +#define ADC_vect _VECTOR(18) /* ADC Conversion Complete */ +#define INT1_vect _VECTOR(19) /* External Interrupt Request 1 */ +#define SPI_STC_vect _VECTOR(20) /* SPI Serial Transfer Complete */ +#define USART_RX_vect _VECTOR(21) /* USART, Rx Complete */ +#define USART_UDRE_vect _VECTOR(22) /* USART Data Register Empty */ +#define USART_TX_vect _VECTOR(23) /* USART, Tx Complete */ +#define INT2_vect _VECTOR(24) /* External Interrupt Request 2 */ +#define WDT_vect _VECTOR(25) /* Watchdog Timeout Interrupt */ +#define EE_READY_vect _VECTOR(26) /* EEPROM Ready */ +#define TIMER0_COMPB_vect _VECTOR(27) /* Timer Counter 0 Compare Match B */ +#define INT3_vect _VECTOR(28) /* External Interrupt Request 3 */ +/* Vector 29, Reserved */ +/* Vector 30, Reserved */ +#define SPM_READY_vect _VECTOR(31) /* Store Program Memory Read */ + +#define _VECTORS_SIZE 64 + + + +/* Memory Sizes */ +#define RAMEND 0x2FF +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF +#define SPM_PAGESIZE 32 + + + +/* Fuse Information */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown out detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_PSCRV (unsigned char)~_BV(4) /* PSCOUT Reset Value */ +#define FUSE_PSC0RB (unsigned char)~_BV(5) /* PSC0 Reset Behaviour */ +#define FUSE_PSC1RB (unsigned char)~_BV(6) /* PSC1 Reset Behaviour */ +#define FUSE_PSC2RB (unsigned char)~_BV(7) /* PSC2 Reset Behaviour */ +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x83 + + +#endif /* _AVR_IO90PWM3B_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwmx.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwmx.h new file mode 100644 index 0000000..364b301 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/io90pwmx.h @@ -0,0 +1,1371 @@ +/* Copyright (c) 2005, Andrey Pashchenko + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: io90pwmx.h,v 1.10.2.4 2008/08/14 00:08:00 arcanum Exp $ */ + +/* avr/io90pwmx.h - definitions for AT90PWM2(B) and AT90PWM3(B) */ + +#ifndef _AVR_IO90PWMX_H_ +#define _AVR_IO90PWMX_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "io90pwmX.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Port B Input Pins Address */ +#define PINB _SFR_IO8(0x03) +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Port B Data Direction Register */ +#define DDRB _SFR_IO8(0x04) +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Port B Data Register */ +#define PORTB _SFR_IO8(0x05) +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Port C Input Pins Address */ +#define PINC _SFR_IO8(0x06) +/* PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Port C Data Direction Register */ +#define DDRC _SFR_IO8(0x07) +/* DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Port C Data Register */ +#define PORTC _SFR_IO8(0x08) +/* PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Port D Input Pins Address */ +#define PIND _SFR_IO8(0x09) +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Port D Data Direction Register */ +#define DDRD _SFR_IO8(0x0A) +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Port D Data Register */ +#define PORTD _SFR_IO8(0x0B) +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Port E Input Pins Address */ +#define PINE _SFR_IO8(0x0C) +/* PINE */ +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* Port E Data Direction Register */ +#define DDRE _SFR_IO8(0x0D) +/* DDRE */ +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* Port E Data Register */ +#define PORTE _SFR_IO8(0x0E) +/* PORTE */ +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Timer/Counter 0 Interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) +/* TIFR0 */ +#define OCF0B 2 /* Output Compare Flag 0B */ +#define OCF0A 1 /* Output Compare Flag 0A */ +#define TOV0 0 /* Overflow Flag */ + +/* Timer/Counter1 Interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) +/* TIFR1 */ +#define ICF1 5 /* Input Capture Flag 1 */ +#define OCF1B 2 /* Output Compare Flag 1B*/ +#define OCF1A 1 /* Output Compare Flag 1A*/ +#define TOV1 0 /* Overflow Flag */ + +/* General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x19) +/* GPIOR1 */ +#define GPIOR17 7 +#define GPIOR16 6 +#define GPIOR15 5 +#define GPIOR14 4 +#define GPIOR13 3 +#define GPIOR12 2 +#define GPIOR11 1 +#define GPIOR10 0 + +/* General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x1A) +/* GPIOR2 */ +#define GPIOR27 7 +#define GPIOR26 6 +#define GPIOR25 5 +#define GPIOR24 4 +#define GPIOR23 3 +#define GPIOR22 2 +#define GPIOR21 1 +#define GPIOR20 0 + +/* General Purpose I/O Register 3 */ +#define GPIOR3 _SFR_IO8(0x1B) +/* GPIOR3 */ +#define GPIOR37 7 +#define GPIOR36 6 +#define GPIOR35 5 +#define GPIOR34 4 +#define GPIOR33 3 +#define GPIOR32 2 +#define GPIOR31 1 +#define GPIOR30 0 + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) +/* EIFR */ +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +/* External Interrupt Mask Register */ +#define EIMSK _SFR_IO8(0x1D) +/* EIMSK */ +#define INT3 3 /* External Interrupt Request 3 Enable */ +#define INT2 2 /* External Interrupt Request 2 Enable */ +#define INT1 1 /* External Interrupt Request 1 Enable */ +#define INT0 0 /* External Interrupt Request 0 Enable */ + +/* General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) +/* GPIOR0 */ +#define GPIOR07 7 +#define GPIOR06 6 +#define GPIOR05 5 +#define GPIOR04 4 +#define GPIOR03 3 +#define GPIOR02 2 +#define GPIOR01 1 +#define GPIOR00 0 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1F) +/* EECR */ +#define EERIE 3 /* EEPROM Ready Interrupt Enable */ +#define EEMWE 2 /* EEPROM Master Write Enable */ +#define EEWE 1 /* EEPROM Write Enable */ +#define EERE 0 /* EEPROM Read Enable */ + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x20) +/* EEDR */ +#define EEDR7 7 +#define EEDR6 6 +#define EEDR5 5 +#define EEDR4 4 +#define EEDR3 3 +#define EEDR2 2 +#define EEDR1 1 +#define EEDR0 0 + +/* The EEPROM Address Registers */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0x22) +/* EEARH */ +#define EEAR11 3 +#define EEAR10 2 +#define EEAR9 1 +#define EEAR8 0 +/* EEARL */ +#define EEAR7 7 +#define EEAR6 6 +#define EEAR5 5 +#define EEAR4 4 +#define EEAR3 3 +#define EEAR2 2 +#define EEAR1 1 +#define EEAR0 0 + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) +/* GTCCR */ +#define TSM 7 /* Timer/Counter Synchronization Mode */ +#define ICPSEL1 6 /* Timer1 Input Capture Selection Bit */ +#define PSR10 0 /* Prescaler Reset Timer/Counter1 and Timer/Counter0 */ + +/* Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) +/* TCCR0A */ +#define COM0A1 7 /* Compare Output Mode, Phase Correct PWM Mode */ +#define COM0A0 6 /* Compare Output Mode, Phase Correct PWM Mode */ +#define COM0B1 5 /* Compare Output Mode, Fast PWm */ +#define COM0B0 4 /* Compare Output Mode, Fast PWm */ +#define WGM01 1 /* Waveform Generation Mode */ +#define WGM00 0 /* Waveform Generation Mode */ + +/* Timer/Counter Control Register B */ +#define TCCR0B _SFR_IO8(0x25) +/* TCCR0B */ +#define FOC0A 7 /* Force Output Compare A */ +#define FOC0B 6 /* Force Output Compare B */ +#define WGM02 3 /* Waveform Generation Mode */ +#define CS02 2 /* Clock Select */ +#define CS01 1 /* Clock Select */ +#define CS00 0 /* Clock Select */ + +/* Timer/Counter0 Register */ +#define TCNT0 _SFR_IO8(0x26) +/* TCNT0 */ +#define TCNT07 7 +#define TCNT06 6 +#define TCNT05 5 +#define TCNT04 4 +#define TCNT03 3 +#define TCNT02 2 +#define TCNT01 1 +#define TCNT00 0 + +/* Timer/Counter0 Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) +/* OCR0A */ +#define OCR0A7 7 +#define OCR0A6 6 +#define OCR0A5 5 +#define OCR0A4 4 +#define OCR0A3 3 +#define OCR0A2 2 +#define OCR0A1 1 +#define OCR0A0 0 + +/* Timer/Counter0 Output Compare Register B */ +#define OCR0B _SFR_IO8(0x28) +/* OCR0B */ +#define OCR0B7 7 +#define OCR0B6 6 +#define OCR0B5 5 +#define OCR0B4 4 +#define OCR0B3 3 +#define OCR0B2 2 +#define OCR0B1 1 +#define OCR0B0 0 + +/* PLL Control and Status Register */ +#define PLLCSR _SFR_IO8(0x29) +/* PLLCSR */ +#define PCKE 2 /* PCK Enable */ +/* Bit 2 has been renamed in later versions of the datasheet. */ +#define PLLF 2 /* PLL Factor */ +#define PLLE 1 /* PLL Enable */ +#define PLOCK 0 /* PLL Lock Detector */ + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x2C) +/* SPCR */ +#define SPIE 7 /* SPI Interrupt Enable */ +#define SPE 6 /* SPI Enable */ +#define DORD 5 /* Data Order */ +#define MSTR 4 /* Master/Slave Select */ +#define CPOL 3 /* Clock polarity */ +#define CPHA 2 /* Clock Phase */ +#define SPR1 1 /* SPI Clock Rate Select 1 */ +#define SPR0 0 /* SPI Clock Rate Select 0 */ + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x2D) +/* SPSR */ +#define SPIF 7 /* SPI Interrupt Flag */ +#define WCOL 6 /* Write Collision Flag */ +#define SPI2X 0 /* Double SPI Speed Bit */ + +/* SPI Data Register */ +#define SPDR _SFR_IO8(0x2E) +/* SPDR */ +#define SPD7 7 +#define SPD6 6 +#define SPD5 5 +#define SPD4 4 +#define SPD3 3 +#define SPD2 2 +#define SPD1 1 +#define SPD0 0 + +/* Analog Comparator Status Register */ +#define ACSR _SFR_IO8(0x30) +/* ACSR */ +#define ACCKDIV 7 /* Analog Comparator Clock Divider */ +#define AC2IF 6 /* Analog Comparator 2 Interrupt Flag Bit */ +#define AC1IF 5 /* Analog Comparator 1 Interrupt Flag Bit */ +#define AC0IF 4 /* Analog Comparator 0 Interrupt Flag Bit */ +#define AC2O 2 /* Analog Comparator 2 Output Bit */ +#define AC1O 1 /* Analog Comparator 1 Output Bit */ +#define AC0O 0 /* Analog Comparator 0 Output Bit */ + +/* Monitor Data Register */ +#define MONDR _SFR_IO8(0x31) + +/* Monitor Stop Mode Control Register */ +#define MSMCR _SFR_IO8(0x32) + +/* Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) +/* SMCR */ +#define SM2 3 /* Sleep Mode Select bit2 */ +#define SM1 2 /* Sleep Mode Select bit1 */ +#define SM0 1 /* Sleep Mode Select bit0 */ +#define SE 0 /* Sleep Enable */ + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) +/* MCUSR */ +#define WDRF 3 /* Watchdog Reset Flag */ +#define BORF 2 /* Brown-out Reset Flag */ +#define EXTRF 1 /* External Reset Flag */ +#define PORF 0 /* Power-on reset flag */ + +/* MCU Control Register */ +#define MCUCR _SFR_IO8(0x35) +/* MCUCR */ +#define SPIPS 7 /* SPI Pin Select */ +#define PUD 4 /* Pull-up disable */ +#define IVSEL 1 /* Interrupt Vector Select */ +#define IVCE 0 /* Interrupt Vector Change Enable */ + +/* Store Program Memory Control Register */ +#define SPMCSR _SFR_IO8(0x37) +/* SPMCSR */ +#define SPMIE 7 /* SPM Interrupt Enable */ +#define RWWSB 6 /* Read While Write Section Busy */ +#define RWWSRE 4 /* Read While Write section read enable */ +#define BLBSET 3 /* Boot Lock Bit Set */ +#define PGWRT 2 /* Page Write */ +#define PGERS 1 /* Page Erase */ +#define SPMEN 0 /* Store Program Memory Enable */ + +/* 0x3D..0x3E SP [defined in ] */ +/* 0x3F SREG [defined in ] */ + +/* Watchdog Timer Control Register */ +#define WDTCSR _SFR_MEM8(0x60) +/* WDTCSR */ +#define WDIF 7 /* Watchdog Timeout Interrupt Flag */ +#define WDIE 6 /* Watchdog Timeout Interrupt Enable */ +#define WDP3 5 /* Watchdog Timer Prescaler bit3 */ +#define WDCE 4 /* Watchdog Change Enable */ +#define WDE 3 /* Watchdog Enable */ +#define WDP2 2 /* Watchdog Timer Prescaler bit2 */ +#define WDP1 1 /* Watchdog Timer Prescaler bit1 */ +#define WDP0 0 /* Watchdog Timer Prescaler bit0 */ + +/* Clock Prescaler Register */ +#define CLKPR _SFR_MEM8(0x61) +/* CLKPR */ +#define CLKPCE 7 /* Clock Prescaler Change Enable */ +#define CLKPS3 3 /* Clock Prescaler Select bit3 */ +#define CLKPS2 2 /* Clock Prescaler Select bit2 */ +#define CLKPS1 1 /* Clock Prescaler Select bit1 */ +#define CLKPS0 0 /* Clock Prescaler Select bit0 */ + +/* Power Reduction Register */ +#define PRR _SFR_MEM8(0x64) +/* PRR */ +#define PRPSC2 7 /* Power Reduction PSC2 */ +#define PRPSC1 6 /* Power Reduction PSC1 */ +#define PRPSC0 5 /* Power Reduction PSC0 */ +#define PRTIM1 4 /* Power Reduction Timer/Counter1 */ +#define PRTIM0 3 /* Power Reduction Timer/Counter0 */ +#define PRSPI 2 /* Power Reduction Serial Peripheral Interface */ +#define PRUSART 1 /* Power Reduction USART */ +#define PRADC 0 /* Power Reduction ADC */ + +/* Oscillator Calibration Value */ +#define OSCCAL _SFR_MEM8(0x66) +/* OSCCAL */ +#define CAL6 6 +#define CAL5 5 +#define CAL4 4 +#define CAL3 3 +#define CAL2 2 +#define CAL1 1 +#define CAL0 0 + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) +/* EICRA */ +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter0 Interrupt Mask Register */ +#define TIMSK0 _SFR_MEM8(0x6E) +/* TIMSK0 */ +#define OCIE0B 2 /* Output Compare Match B Interrupt Enable */ +#define OCIE0A 1 /* Output Compare Match A Interrupt Enable */ +#define TOIE0 0 /* Overflow Interrupt Enable */ + +/* Timer/Counter1 Interrupt Mask Register */ +#define TIMSK1 _SFR_MEM8(0x6F) +/* TIMSK1 */ +#define ICIE1 5 /* Input Capture Interrupt Enable */ +#define OCIE1B 2 /* Output Compare Match B Interrupt Enable */ +#define OCIE1A 1 /* Output Compare Match A Interrupt Enable */ +#define TOIE1 0 /* Overflow Interrupt Enable */ + +/* Amplifier 0 Control and Status register */ +#define AMP0CSR _SFR_MEM8(0x76) +#define AMP0EN 7 +#define AMP0IS 6 +#define AMP0G1 5 +#define AMP0G0 4 +#define AMP0TS1 1 +#define AMP0TS0 0 + +/* Amplifier 1 Control and Status register */ +#define AMP1CSR _SFR_MEM8(0x77) +#define AMP1EN 7 +#define AMP1IS 6 +#define AMP1G1 5 +#define AMP1G0 4 +#define AMP1TS1 1 +#define AMP1TS0 0 + +/* ADC Result Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +/* ADC Control and Status Register A */ +#define ADCSRA _SFR_MEM8(0x7A) +/* ADCSRA */ +#define ADEN 7 /* ADC Enable */ +#define ADSC 6 /* ADC Start Conversion */ +#define ADATE 5 /* ADC Auto Trigger Enable */ +#define ADIF 4 /* ADC Interrupt Flag */ +#define ADIE 3 /* ADC Interrupt Enable */ +#define ADPS2 2 /* ADC Prescaler Select bit2 */ +#define ADPS1 1 /* ADC Prescaler Select bit1 */ +#define ADPS0 0 /* ADC Prescaler Select bit0 */ + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x7B) +/* ADCSRB */ +#define ADHSM 7 /* ADC High Speed Mode */ +#define ADASCR 4 +#define ADTS3 3 /* ADC Auto Trigger Source 3 */ +#define ADTS2 2 /* ADC Auto Trigger Source 2 */ +#define ADTS1 1 /* ADC Auto Trigger Source 1 */ +#define ADTS0 0 /* ADC Auto Trigger Source 0 */ + +/* ADC multiplexer Selection Register */ +#define ADMUX _SFR_MEM8(0x7C) +/* ADMUX */ +#define REFS1 7 /* Reference Selection bit1 */ +#define REFS0 6 /* Reference Selection bit0 */ +#define ADLAR 5 /* Left Adjust Result */ +#define MUX3 3 /* Analog Channel and Gain Selection bit3 */ +#define MUX2 2 /* Analog Channel and Gain Selection bit2 */ +#define MUX1 1 /* Analog Channel and Gain Selection bit1 */ +#define MUX0 0 /* Analog Channel and Gain Selection bit0 */ + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) +/* DIDR0 */ +#define ADC7D 7 /* ADC7 Digital input Disable */ +#define ADC6D 6 /* ADC6 Digital input Disable */ +#define ADC5D 5 /* ADC5 Digital input Disable */ +#define ADC4D 4 /* ADC4 Digital input Disable */ +#define ADC3D 3 /* ADC3 Digital input Disable */ +#define ADC2D 2 /* ADC2 Digital input Disable */ +#define ADC1D 1 /* ADC1 Digital input Disable */ +#define ADC0D 0 /* ADC0 Digital input Disable */ + +/* Digital Input Disable Register 1 */ +#define DIDR1 _SFR_MEM8(0x7F) +/* DIDR1 */ +#define ACMP0D 5 +#define AMP0PD 4 +#define AMP0ND 3 +#define ADC10D 2 /* ADC10 Digital input Disable */ +#define ADC9D 1 /* ADC9 Digital input Disable */ +#define ADC8D 0 /* ADC8 Digital input Disable */ + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_MEM8(0x80) +/* TCCR1A */ +#define COM1A1 7 /* Comparet Ouput Mode 1A, bit 1 */ +#define COM1A0 6 /* Comparet Ouput Mode 1A, bit 0 */ +#define COM1B1 5 /* Compare Output Mode 1B, bit 1 */ +#define COM1B0 4 /* Compare Output Mode 1B, bit 0 */ +#define WGM11 1 /* Waveform Generation Mode */ +#define WGM10 0 /* Waveform Generation Mode */ + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_MEM8(0x81) +/* TCCR1B */ +#define ICNC1 7 /* Input Capture 1 Noise Canceler */ +#define ICES1 6 /* Input Capture 1 Edge Select */ +#define WGM13 4 /* Waveform Generation Mode */ +#define WGM12 3 /* Waveform Generation Mode */ +#define CS12 2 /* Prescaler source of Timer/Counter 1 */ +#define CS11 1 /* Prescaler source of Timer/Counter 1 */ +#define CS10 0 /* Prescaler source of Timer/Counter 1 */ + +/* Timer/Counter1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x82) +/* TCCR1C */ +#define FOC1A 7 /* Force Output Compare for Channel A */ +#define FOC1B 6 /* Force Output Compare for Channel B */ + +/* Timer/Counter1 */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) +/* TCNT1H */ +#define TCNT115 7 +#define TCNT114 6 +#define TCNT113 5 +#define TCNT112 4 +#define TCNT111 3 +#define TCNT110 2 +#define TCNT19 1 +#define TCNT18 0 +/* TCNT1L */ +#define TCNT17 7 +#define TCNT16 6 +#define TCNT15 5 +#define TCNT14 4 +#define TCNT13 3 +#define TCNT12 2 +#define TCNT11 1 +#define TCNT10 0 + +/* Input Capture Register 1 */ +#define ICR1 _SFR_MEM16(0x86) +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) +/* ICR1H */ +#define ICR115 7 +#define ICR114 6 +#define ICR113 5 +#define ICR112 4 +#define ICR111 3 +#define ICR110 2 +#define ICR19 1 +#define ICR18 0 +/* ICR1L */ +#define ICR17 7 +#define ICR16 6 +#define ICR15 5 +#define ICR14 4 +#define ICR13 3 +#define ICR12 2 +#define ICR11 1 +#define ICR10 0 + +/* Output Compare Register 1 A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) +/* OCR1AH */ +#define OCR1A15 7 +#define OCR1A14 6 +#define OCR1A13 5 +#define OCR1A12 4 +#define OCR1A11 3 +#define OCR1A10 2 +#define OCR1A9 1 +#define OCR1A8 0 +/* OCR1AL */ +#define OCR1A7 7 +#define OCR1A6 6 +#define OCR1A5 5 +#define OCR1A4 4 +#define OCR1A3 3 +#define OCR1A2 2 +#define OCR1A1 1 +#define OCR1A0 0 + +/* Output Compare Register 1 B */ +#define OCR1B _SFR_MEM16(0x8A) +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) +/* OCR1BH */ +#define OCR1B15 7 +#define OCR1B14 6 +#define OCR1B13 5 +#define OCR1B12 4 +#define OCR1B11 3 +#define OCR1B10 2 +#define OCR1B9 1 +#define OCR1B8 0 +/* OCR1BL */ +#define OCR1B7 7 +#define OCR1B6 6 +#define OCR1B5 5 +#define OCR1B4 4 +#define OCR1B3 3 +#define OCR1B2 2 +#define OCR1B1 1 +#define OCR1B0 0 + +/* PSC0 Interrupt Flag Register */ +#define PIFR0 _SFR_MEM8(0xA0) +/* PIFR0 */ +#define POAC0B 7 /* PSC0 Output B Activity */ +#define POAC0A 6 /* PSC0 Output A Activity */ +#define PSEI0 5 /* PSC0 Synchro Error Interrupt */ +#define PEV0B 4 /* PSC0 External Event B Interrupt */ +#define PEV0A 3 /* PSC0 External Event A Interrupt */ +#define PRN01 2 /* PSC0 Ramp Number bit1 */ +#define PRN00 1 /* PSC0 Ramp Number bit0 */ +#define PEOP0 0 /* End Of PSC0 Interrupt */ + +/* PSC0 Interrupt Mask Register */ +#define PIM0 _SFR_MEM8(0xA1) +/* PIM0 */ +#define PSEIE0 5 /* PSC0 Synchro Error Interrupt Enable */ +#define PEVE0B 4 /* PSC0 External Event B Interrupt Enable */ +#define PEVE0A 3 /* PSC0 External Event A Interrupt Enable */ +#define PEOPE0 0 /* PSC0 End Of Cycle Interrupt Enable */ + +/* PSC1 Interrupt Flag Register */ +#define PIFR1 _SFR_MEM8(0xA2) +/* PIFR1 */ +#define POAC1B 7 /* PSC1 Output B Activity */ +#define POAC1A 6 /* PSC1 Output A Activity */ +#define PSEI1 5 /* PSC1 Synchro Error Interrupt */ +#define PEV1B 4 /* PSC1 External Event B Interrupt */ +#define PEV1A 3 /* PSC1 External Event A Interrupt */ +#define PRN11 2 /* PSC1 Ramp Number bit1 */ +#define PRN10 1 /* PSC1 Ramp Number bit0 */ +#define PEOP1 0 /* End Of PSC1 Interrupt */ + +/* PSC1 Interrupt Mask Register */ +#define PIM1 _SFR_MEM8(0xA3) +/* PIM1 */ +#define PSEIE1 5 /* PSC1 Synchro Error Interrupt Enable */ +#define PEVE1B 4 /* PSC1 External Event B Interrupt Enable */ +#define PEVE1A 3 /* PSC1 External Event A Interrupt Enable */ +#define PEOPE1 0 /* PSC1 End Of Cycle Interrupt Enable */ + +/* PSC2 Interrupt Flag Register */ +#define PIFR2 _SFR_MEM8(0xA4) +/* PIFR2 */ +#define POAC2B 7 /* PSC2 Output B Activity */ +#define POAC2A 6 /* PSC2 Output A Activity */ +#define PSEI2 5 /* PSC2 Synchro Error Interrupt */ +#define PEV2B 4 /* PSC2 External Event B Interrupt */ +#define PEV2A 3 /* PSC2 External Event A Interrupt */ +#define PRN21 2 /* PSC2 Ramp Number bit1 */ +#define PRN20 1 /* PSC2 Ramp Number bit0 */ +#define PEOP2 0 /* End Of PSC2 Interrupt */ + +/* PSC2 Interrupt Mask Register */ +#define PIM2 _SFR_MEM8(0xA5) +/* PIM2 */ +#define PSEIE2 5 /* PSC2 Synchro Error Interrupt Enable */ +#define PEVE2B 4 /* PSC2 External Event B Interrupt Enable */ +#define PEVE2A 3 /* PSC2 External Event A Interrupt Enable */ +#define PEOPE2 0 /* PSC2 End Of Cycle Interrupt Enable */ + +/* Digital to Analog Conversion Control Register */ +#define DACON _SFR_MEM8(0xAA) +/* DACON */ +#define DAATE 7 /* DAC Auto Trigger Enable bit */ +#define DATS2 6 /* DAC Trigger Selection bit2 */ +#define DATS1 5 /* DAC Trigger Selection bit1 */ +#define DATS0 4 /* DAC Trigger Selection bit0 */ +#define DALA 2 /* Digital to Analog Left Adjust */ +#define DAOE 1 /* Digital to Analog Output Enable bit */ +#define DAEN 0 /* Digital to Analog Enable bit */ + +/* Digital to Analog Converter input Register */ +#define DAC _SFR_MEM16(0xAB) +#define DACL _SFR_MEM8(0xAB) +#define DACH _SFR_MEM8(0xAC) + +/* Analog Comparator 0 Control Register */ +#define AC0CON _SFR_MEM8(0xAD) +/* AC0CON */ +#define AC0EN 7 /* Analog Comparator 0 Enable Bit */ +#define AC0IE 6 /* Analog Comparator 0 Interrupt Enable bit */ +#define AC0IS1 5 /* Analog Comparator 0 Interrupt Select bit1 */ +#define AC0IS0 4 /* Analog Comparator 0 Interrupt Select bit0 */ +#define AC0M2 2 /* Analog Comparator 0 Multiplexer register bit2 */ +#define AC0M1 1 /* Analog Comparator 0 Multiplexer register bit1 */ +#define AC0M0 0 /* Analog Comparator 0 Multiplexer register bit0 */ + +/* Analog Comparator 1 Control Register */ +#define AC1CON _SFR_MEM8(0xAE) +/* AC1CON */ +#define AC1EN 7 /* Analog Comparator 1 Enable Bit */ +#define AC1IE 6 /* Analog Comparator 1 Interrupt Enable bit */ +#define AC1IS1 5 /* Analog Comparator 1 Interrupt Select bit1 */ +#define AC1IS0 4 /* Analog Comparator 1 Interrupt Select bit0 */ +#define AC1ICE 3 /* Analog Comparator 1 Interrupt Capture Enable bit */ +#define AC1M2 2 /* Analog Comparator 1 Multiplexer register bit2 */ +#define AC1M1 1 /* Analog Comparator 1 Multiplexer register bit1 */ +#define AC1M0 0 /* Analog Comparator 1 Multiplexer register bit0 */ + +/* Analog Comparator 2 Control Register */ +#define AC2CON _SFR_MEM8(0xAF) +/* AC2CON */ +#define AC2EN 7 /* Analog Comparator 2 Enable Bit */ +#define AC2IE 6 /* Analog Comparator 2 Interrupt Enable bit */ +#define AC2IS1 5 /* Analog Comparator 2 Interrupt Select bit1 */ +#define AC2IS0 4 /* Analog Comparator 2 Interrupt Select bit0 */ +#define AC2M2 2 /* Analog Comparator 2 Multiplexer register bit2 */ +#define AC2M1 1 /* Analog Comparator 2 Multiplexer register bit1 */ +#define AC2M0 0 /* Analog Comparator 2 Multiplexer register bit0 */ + +/* USART Control and Status Register A */ +#define UCSRA _SFR_MEM8(0xC0) +/* UCSRA */ +#define RXC 7 /* USART Receive Complete */ +#define TXC 6 /* USART Transmit Complete */ +#define UDRE 5 /* USART Data Register Empty */ +#define FE 4 /* Frame Error */ +#define DOR 3 /* Data OverRun */ +#define UPE 2 /* USART Parity Error */ +#define U2X 1 /* Double the USART Transmission Speed */ +#define MPCM 0 /* Multi-processor Communication Mode */ + +/* USART Control and Status Register B */ +#define UCSRB _SFR_MEM8(0xC1) +/* UCSRB */ +#define RXCIE 7 /* RX Complete Interrupt Enable */ +#define TXCIE 6 /* TX Complete Interrupt Enable */ +#define UDRIE 5 /* USART Data Register Empty Interrupt Enable */ +#define RXEN 4 /* Receiver Enable */ +#define TXEN 3 /* Transmitter Enable */ +#define UCSZ2 2 /* Character Size */ +#define RXB8 1 /* Receive Data Bit 8 */ +#define TXB8 0 /* Transmit Data Bit 8 */ + +/* USART Control and Status Register C */ +#define UCSRC _SFR_MEM8(0xC2) +/* UCSRC */ +#define UMSEL 6 /* USART Mode Select */ +#define UPM1 5 /* Parity Mode bit1 */ +#define UPM0 4 /* Parity Mode bit0 */ +#define USBS 3 /* Stop Bit Select */ +#define UCSZ1 2 /* Character Size bit1 */ +#define UCSZ0 1 /* Character Size bit0 */ +#define UCPOL 0 /* Clock Polarity */ + +/* USART Baud Rate Register */ +#define UBRR _SFR_MEM16(0xC4) +#define UBRRL _SFR_MEM8(0xC4) +#define UBRRH _SFR_MEM8(0xC5) + +/* USART I/O Data Register */ +#define UDR _SFR_MEM8(0xC6) + +/* EUSART Control and Status Register A */ +#define EUCSRA _SFR_MEM8(0xC8) +/* EUCSRA */ +#define UTxS3 7 /* EUSART Transmit Character Size bit3 */ +#define UTxS2 6 /* EUSART Transmit Character Size bit2 */ +#define UTxS1 5 /* EUSART Transmit Character Size bit1 */ +#define UTxS0 4 /* EUSART Transmit Character Size bit0 */ +#define URxS3 3 /* EUSART Receive Character Size bit3 */ +#define URxS2 2 /* EUSART Receive Character Size bit2 */ +#define URxS1 1 /* EUSART Receive Character Size bit1 */ +#define URxS0 0 /* EUSART Receive Character Size bit0 */ + +/* EUSART Control and Status Register B */ +#define EUCSRB _SFR_MEM8(0xC9) +/* EUCSRB */ +#define EUSART 4 /* EUSART Enable Bit */ +#define EUSBS 3 /* EUSBS Enable Bit */ +#define EMCH 1 /* Manchester mode */ +#define BODR 0 /* Bit Order */ + +/* EUSART Control and Status Register C */ +#define EUCSRC _SFR_MEM8(0xCA) +/* EUCSRC */ +#define FEM 3 /* Frame Error Manchester */ +#define F1617 2 +#define STP1 1 /* Stop bits values bit1 */ +#define STP0 0 /* Stop bits values bit0 */ + +/* Manchester receiver Baud Rate Registers */ +#define MUBRR _SFR_MEM16(0xCC) +#define MUBRRL _SFR_MEM8(0xCC) +#define MUBRRH _SFR_MEM8(0xCD) + +/* EUSART I/O Data Register */ +#define EUDR _SFR_MEM8(0xCE) + +/* PSC 0 Synchro and Output Configuration */ +#define PSOC0 _SFR_MEM8(0xD0) +/* PSOC0 */ +#define PSYNC01 5 /* Synchronization Out for ADC Selection bit1 */ +#define PSYNC00 4 /* Synchronization Out for ADC Selection bit0 */ +#define POEN0B 2 /* PSC 0 OUT Part B Output Enable */ +#define POEN0A 0 /* PSC 0 OUT Part A Output Enable */ + +/* Output Compare SA Registers */ +#define OCR0SA _SFR_MEM16(0xD2) +#define OCR0SAL _SFR_MEM8(0xD2) +#define OCR0SAH _SFR_MEM8(0xD3) + +/* Output Compare RA Registers */ +#define OCR0RA _SFR_MEM16(0xD4) +#define OCR0RAL _SFR_MEM8(0xD4) +#define OCR0RAH _SFR_MEM8(0xD5) + +/* Output Compare SB Registers */ +#define OCR0SB _SFR_MEM16(0xD6) +#define OCR0SBL _SFR_MEM8(0xD6) +#define OCR0SBH _SFR_MEM8(0xD7) + +/* Output Compare RB Registers */ +#define OCR0RB _SFR_MEM16(0xD8) +#define OCR0RBL _SFR_MEM8(0xD8) +#define OCR0RBH _SFR_MEM8(0xD9) + +/* PSC 0 Configuration Register */ +#define PCNF0 _SFR_MEM8(0xDA) +/* PCNF0 */ +#define PFIFTY0 7 /* PSC 0 Fifty */ +#define PALOCK0 6 /* PSC 0 Autolock */ +#define PLOCK0 5 /* PSC 0 Lock */ +#define PMODE01 4 /* PSC 0 Mode bit1 */ +#define PMODE00 3 /* PSC 0 Mode bit0 */ +#define POP0 2 /* PSC 0 Output Polarity */ +#define PCLKSEL0 1 /* PSC 0 Input Clock Select */ + +/* PSC 0 Control Register */ +#define PCTL0 _SFR_MEM8(0xDB) +/* PCTL0 */ +#define PPRE01 7 /* PSC 0 Prescaler Select bit1 */ +#define PPRE00 6 /* PSC 0 Prescaler Select bit0 */ +#define PBFM0 5 /* Balance Flank Width Modulation */ +#define PAOC0B 4 /* PSC 0 Asynchronous Output Control B */ +#define PAOC0A 3 /* PSC 0 Asynchronous Output Control A */ +#define PARUN0 2 /* PSC 0 Autorun */ +#define PCCYC0 1 /* PSC 0 Complete Cycle */ +#define PRUN0 0 /* PSC 0 Run */ + +/* PSC 0 Input A Control Register */ +#define PFRC0A _SFR_MEM8(0xDC) +/* PFRC0A */ +#define PCAE0A 7 /* PSC 0 Capture Enable Input Part A */ +#define PISEL0A 6 /* PSC 0 Input Select for Part A */ +#define PELEV0A 5 /* PSC 0 Edge Level Selector of Input Part A */ +#define PFLTE0A 4 /* PSC 0 Filter Enable on Input Part A */ +#define PRFM0A3 3 /* PSC 0 Fault Mode bit3 */ +#define PRFM0A2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0A1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0A0 0 /* PSC 0 Fault Mode bit0 */ + +/* PSC 0 Input B Control Register */ +#define PFRC0B _SFR_MEM8(0xDD) +/* PFRC0B */ +#define PCAE0B 7 /* PSC 0 Capture Enable Input Part B */ +#define PISEL0B 6 /* PSC 0 Input Select for Part B */ +#define PELEV0B 5 /* PSC 0 Edge Level Selector of Input Part B */ +#define PFLTE0B 4 /* PSC 0 Filter Enable on Input Part B */ +#define PRFM0B3 3 /* PSC 0 Fault Mode bit3 */ +#define PRFM0B2 2 /* PSC 0 Fault Mode bit2 */ +#define PRFM0B1 1 /* PSC 0 Fault Mode bit1 */ +#define PRFM0B0 0 /* PSC 0 Fault Mode bit0 */ + +/* PSC 0 Input Capture Registers */ +#define PICR0 _SFR_MEM16(0xDE) + +#define PICR0L _SFR_MEM8(0xDE) + +#define PICR0H _SFR_MEM8(0xDF) +#define PCST0 7 /* PSC Capture Software Trig bit */ + /* not implemented on AT90PWM2/AT90PWM3 */ + +/* PSC 1 Synchro and Output Configuration */ +#define PSOC1 _SFR_MEM8(0xE0) +/* PSOC1 */ +#define PSYNC11 5 /* Synchronization Out for ADC Selection bit1 */ +#define PSYNC10 4 /* Synchronization Out for ADC Selection bit0 */ +#define POEN1B 2 /* PSC 1 OUT Part B Output Enable */ +#define POEN1A 0 /* PSC 1 OUT Part A Output Enable */ + +/* Output Compare SA Registers */ +#define OCR1SA _SFR_MEM16(0xE2) +#define OCR1SAL _SFR_MEM8(0xE2) +#define OCR1SAH _SFR_MEM8(0xE3) + +/* Output Compare RA Registers */ +#define OCR1RA _SFR_MEM16(0xE4) +#define OCR1RAL _SFR_MEM8(0xE4) +#define OCR1RAH _SFR_MEM8(0xE5) + +/* Output Compare SB Registers */ +#define OCR1SB _SFR_MEM16(0xE6) +#define OCR1SBL _SFR_MEM8(0xE6) +#define OCR1SBH _SFR_MEM8(0xE7) + +/* Output Compare RB Registers */ +#define OCR1RB _SFR_MEM16(0xE8) +#define OCR1RBL _SFR_MEM8(0xE8) +#define OCR1RBH _SFR_MEM8(0xE9) + +/* PSC 1 Configuration Register */ +#define PCNF1 _SFR_MEM8(0xEA) +/* PCNF1 */ +#define PFIFTY1 7 /* PSC 1 Fifty */ +#define PALOCK1 6 /* PSC 1 Autolock */ +#define PLOCK1 5 /* PSC 1 Lock */ +#define PMODE11 4 /* PSC 1 Mode bit1 */ +#define PMODE10 3 /* PSC 1 Mode bit0 */ +#define POP1 2 /* PSC 1 Output Polarity */ +#define PCLKSEL1 1 /* PSC 1 Input Clock Select */ + +/* PSC 1 Control Register */ +#define PCTL1 _SFR_MEM8(0xEB) +/* PCTL1 */ +#define PPRE11 7 /* PSC 1 Prescaler Select bit1 */ +#define PPRE10 6 /* PSC 1 Prescaler Select bit0 */ +#define PBFM1 5 /* Balance Flank Width Modulation */ +#define PAOC1B 4 /* PSC 1 Asynchronous Output Control B */ +#define PAOC1A 3 /* PSC 1 Asynchronous Output Control A */ +#define PARUN1 2 /* PSC 1 Autorun */ +#define PCCYC1 1 /* PSC 1 Complete Cycle */ +#define PRUN1 0 /* PSC 1 Run */ + +/* PSC 1 Input A Control Register */ +#define PFRC1A _SFR_MEM8(0xEC) +/* PFRC1A */ +#define PCAE1A 7 /* PSC 1 Capture Enable Input Part A */ +#define PISEL1A 6 /* PSC 1 Input Select for Part A */ +#define PELEV1A 5 /* PSC 1 Edge Level Selector of Input Part A */ +#define PFLTE1A 4 /* PSC 1 Filter Enable on Input Part A */ +#define PRFM1A3 3 /* PSC 1 Fault Mode bit3 */ +#define PRFM1A2 2 /* PSC 1 Fault Mode bit2 */ +#define PRFM1A1 1 /* PSC 1 Fault Mode bit1 */ +#define PRFM1A0 0 /* PSC 1 Fault Mode bit0 */ + +/* PSC 1 Input B Control Register */ +#define PFRC1B _SFR_MEM8(0xED) +/* PFRC1B */ +#define PCAE1B 7 /* PSC 1 Capture Enable Input Part B */ +#define PISEL1B 6 /* PSC 1 Input Select for Part B */ +#define PELEV1B 5 /* PSC 1 Edge Level Selector of Input Part B */ +#define PFLTE1B 4 /* PSC 1 Filter Enable on Input Part B */ +#define PRFM1B3 3 /* PSC 1 Fault Mode bit3 */ +#define PRFM1B2 2 /* PSC 1 Fault Mode bit2 */ +#define PRFM1B1 1 /* PSC 1 Fault Mode bit1 */ +#define PRFM1B0 0 /* PSC 1 Fault Mode bit0 */ + +/* PSC 1 Input Capture Registers */ +#define PICR1 _SFR_MEM16(0xEE) + +#define PICR1L _SFR_MEM8(0xEE) + +#define PICR1H _SFR_MEM8(0xEF) +#define PCST1 7 /* PSC Capture Software Trig bit */ + /* not implemented on AT90PWM2/AT90PWM3 */ + +/* PSC 2 Synchro and Output Configuration */ +#define PSOC2 _SFR_MEM8(0xF0) +/* PSOC2 */ +#define POS23 7 /* PSCOUT23 Selection */ +#define POS22 6 /* PSCOUT22 Selection */ +#define PSYNC21 5 /* Synchronization Out for ADC Selection bit1 */ +#define PSYNC20 4 /* Synchronization Out for ADC Selection bit0 */ +#define POEN2D 3 /* PSCOUT23 Output Enable */ +#define POEN2B 2 /* PSC 2 OUT Part B Output Enable */ +#define POEN2C 1 /* PSCOUT22 Output Enable */ +#define POEN2A 0 /* PSC 2 OUT Part A Output Enable */ + +/* PSC 2 Output Matrix */ +#define POM2 _SFR_MEM8(0xF1) +/* POM2 */ +#define POMV2B3 7 /* Output Matrix Output B Ramp 3 */ +#define POMV2B2 6 /* Output Matrix Output B Ramp 2 */ +#define POMV2B1 5 /* Output Matrix Output B Ramp 1 */ +#define POMV2B0 4 /* Output Matrix Output B Ramp 0 */ +#define POMV2A3 3 /* Output Matrix Output A Ramp 3 */ +#define POMV2A2 2 /* Output Matrix Output A Ramp 2 */ +#define POMV2A1 1 /* Output Matrix Output A Ramp 1 */ +#define POMV2A0 0 /* Output Matrix Output A Ramp 0 */ + +/* Output Compare SA Registers */ +#define OCR2SA _SFR_MEM16(0xF2) +#define OCR2SAL _SFR_MEM8(0xF2) +#define OCR2SAH _SFR_MEM8(0xF3) + +/* Output Compare RA Registers */ +#define OCR2RA _SFR_MEM16(0xF4) +#define OCR2RAL _SFR_MEM8(0xF4) +#define OCR2RAH _SFR_MEM8(0xF5) + +/* Output Compare SB Registers */ +#define OCR2SB _SFR_MEM16(0xF6) +#define OCR2SBL _SFR_MEM8(0xF6) +#define OCR2SBH _SFR_MEM8(0xF7) + +/* Output Compare RB Registers */ +#define OCR2RB _SFR_MEM16(0xF8) +#define OCR2RBL _SFR_MEM8(0xF8) +#define OCR2RBH _SFR_MEM8(0xF9) + +/* PSC 2 Configuration Register */ +#define PCNF2 _SFR_MEM8(0xFA) +/* PCNF2 */ +#define PFIFTY2 7 /* PSC 2 Fifty */ +#define PALOCK2 6 /* PSC 2 Autolock */ +#define PLOCK2 5 /* PSC 2 Lock */ +#define PMODE21 4 /* PSC 2 Mode bit1 */ +#define PMODE20 3 /* PSC 2 Mode bit0 */ +#define POP2 2 /* PSC 2 Output Polarity */ +#define PCLKSEL2 1 /* PSC 2 Input Clock Select */ +#define POME2 0 /* PSC 2 Output Matrix Enable */ + +/* PSC 2 Control Register */ +#define PCTL2 _SFR_MEM8(0xFB) +/* PCTL2 */ +#define PPRE21 7 /* PSC 2 Prescaler Select bit1 */ +#define PPRE20 6 /* PSC 2 Prescaler Select bit0 */ +#define PBFM2 5 /* Balance Flank Width Modulation */ +#define PAOC2B 4 /* PSC 2 Asynchronous Output Control B */ +#define PAOC2A 3 /* PSC 2 Asynchronous Output Control A */ +#define PARUN2 2 /* PSC 2 Autorun */ +#define PCCYC2 1 /* PSC 2 Complete Cycle */ +#define PRUN2 0 /* PSC 2 Run */ + +/* PSC 2 Input A Control Register */ +#define PFRC2A _SFR_MEM8(0xFC) +/* PFRC2A */ +#define PCAE2A 7 /* PSC 2 Capture Enable Input Part A */ +#define PISEL2A 6 /* PSC 2 Input Select for Part A */ +#define PELEV2A 5 /* PSC 2 Edge Level Selector of Input Part A */ +#define PFLTE2A 4 /* PSC 2 Filter Enable on Input Part A */ +#define PRFM2A3 3 /* PSC 2 Fault Mode bit3 */ +#define PRFM2A2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2A1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2A0 0 /* PSC 2 Fault Mode bit0 */ + +/* PSC 2 Input B Control Register */ +#define PFRC2B _SFR_MEM8(0xFD) +/* PFRC2B */ +#define PCAE2B 7 /* PSC 2 Capture Enable Input Part B */ +#define PISEL2B 6 /* PSC 2 Input Select for Part B */ +#define PELEV2B 5 /* PSC 2 Edge Level Selector of Input Part B */ +#define PFLTE2B 4 /* PSC 2 Filter Enable on Input Part B */ +#define PRFM2B3 3 /* PSC 2 Fault Mode bit3 */ +#define PRFM2B2 2 /* PSC 2 Fault Mode bit2 */ +#define PRFM2B1 1 /* PSC 2 Fault Mode bit1 */ +#define PRFM2B0 0 /* PSC 2 Fault Mode bit0 */ + +/* PSC 2 Input Capture Registers */ +#define PICR2 _SFR_MEM16(0xFE) + +#define PICR2L _SFR_MEM8(0xFE) + +#define PICR2H _SFR_MEM8(0xFF) +#define PCST2 7 /* PSC Capture Software Trig bit */ + /* not implemented on AT90PWM2/AT90PWM3 */ + + +/* Interrupt vectors */ +/* PSC2 Capture Event */ +#define PSC2_CAPT_vect _VECTOR(1) +#define SIG_PSC2_CAPTURE _VECTOR(1) + +/* PSC2 End Cycle */ +#define PSC2_EC_vect _VECTOR(2) +#define SIG_PSC2_END_CYCLE _VECTOR(2) + +/* PSC1 Capture Event */ +#define PSC1_CAPT_vect _VECTOR(3) +#define SIG_PSC1_CAPTURE _VECTOR(3) + +/* PSC1 End Cycle */ +#define PSC1_EC_vect _VECTOR(4) +#define SIG_PSC1_END_CYCLE _VECTOR(4) + +/* PSC0 Capture Event */ +#define PSC0_CAPT_vect _VECTOR(5) +#define SIG_PSC0_CAPTURE _VECTOR(5) + +/* PSC0 End Cycle */ +#define PSC0_EC_vect _VECTOR(6) +#define SIG_PSC0_END_CYCLE _VECTOR(6) + +/* Analog Comparator 0 */ +#define ANALOG_COMP_0_vect _VECTOR(7) +#define SIG_COMPARATOR0 _VECTOR(7) + +/* Analog Comparator 1 */ +#define ANALOG_COMP_1_vect _VECTOR(8) +#define SIG_COMPARATOR1 _VECTOR(8) + +/* Analog Comparator 2 */ +#define ANALOG_COMP_2_vect _VECTOR(9) +#define SIG_COMPARATOR2 _VECTOR(9) + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(10) +#define SIG_INTERRUPT0 _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) +#define SIG_INPUT_CAPTURE1 _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) +#define SIG_OUTPUT_COMPARE1_A _VECTOR(12) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) +#define SIG_OUTPUT_COMPARE1_B _VECTOR(13) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(15) +#define SIG_OVERFLOW1 _VECTOR(15) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMP_A_vect _VECTOR(16) +#define SIG_OUTPUT_COMPARE0A _VECTOR(16) +#define SIG_OUTPUT_COMPARE0_A _VECTOR(16) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(17) +#define SIG_OVERFLOW0 _VECTOR(17) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(18) +#define SIG_ADC _VECTOR(18) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(19) +#define SIG_INTERRUPT1 _VECTOR(19) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(20) +#define SIG_SPI _VECTOR(20) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(21) +#define SIG_USART_RECV _VECTOR(21) +#define SIG_UART_RECV _VECTOR(21) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(22) +#define SIG_USART_DATA _VECTOR(22) +#define SIG_UART_DATA _VECTOR(22) + +/* USART, Tx Complete */ +#define USART_TX_vect _VECTOR(23) +#define SIG_USART_TRANS _VECTOR(23) +#define SIG_UART_TRANS _VECTOR(23) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(24) +#define SIG_INTERRUPT2 _VECTOR(24) + +/* Watchdog Timeout Interrupt */ +#define WDT_vect _VECTOR(25) +#define SIG_WDT _VECTOR(25) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(25) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(26) +#define SIG_EEPROM_READY _VECTOR(26) + +/* Timer Counter 0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(27) +#define SIG_OUTPUT_COMPARE0B _VECTOR(27) +#define SIG_OUTPUT_COMPARE0_B _VECTOR(27) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(28) +#define SIG_INTERRUPT3 _VECTOR(28) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(31) +#define SIG_SPM_READY _VECTOR(31) + +#define _VECTORS_SIZE 64 + +/* Constants */ +#define SPM_PAGESIZE 64 + +#define RAMEND 0x02FF +#define XRAMEND 0x02FF +#define E2END 0x01FF +#define E2PAGESIZE 4 +#define FLASHEND 0x0FFF + + +/* Fuse Information */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Diasble */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_PSCRV (unsigned char)~_BV(4) +#define FUSE_PSC0RB (unsigned char)~_BV(5) +#define FUSE_PSC1RB (unsigned char)~_BV(6) +#define FUSE_PSC2RB (unsigned char)~_BV(7) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +#endif /* _AVR_IO90PWMX_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/ioat94k.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/ioat94k.h new file mode 100644 index 0000000..e516fcb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/ioat94k.h @@ -0,0 +1,557 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: ioat94k.h,v 1.9 2004/11/01 22:23:56 arcanum Exp $ */ + +/* avr/ioat94k.h - definitions for AT94K series FPSLIC(tm) */ + +#ifndef _AVR_IOAT94K_H_ +#define _AVR_IOAT94K_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "ioat94k.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* UART1 Baud Rate Register */ +#define UBRR1 _SFR_IO8(0x00) + +/* UART1 Control and Status Registers */ +#define UCSR1B _SFR_IO8(0x01) +#define UCSR1A _SFR_IO8(0x02) + +/* UART1 I/O Data Register */ +#define UDR1 _SFR_IO8(0x03) + +/* 0x04 reserved */ + +/* Input Pins, Port E */ +#define PINE _SFR_IO8(0x05) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x06) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x07) + +/* On Chip Debug Register (reserved) */ +#define OCDR _SFR_IO8(0x08) + +/* UART0 Baud Rate Register */ +#define UBRR0 _SFR_IO8(0x09) + +/* UART0 Control and Status Registers */ +#define UCSR0B _SFR_IO8(0x0A) +#define UCSR0A _SFR_IO8(0x0B) + +/* UART0 I/O Data Register */ +#define UDR0 _SFR_IO8(0x0C) + +/* 0x0D..0x0F reserved */ + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* FPGA I/O Select Control Register */ +#define FISCR _SFR_IO8(0x13) + +/* FPGA I/O Select Registers A, B, C, D */ +#define FISUA _SFR_IO8(0x14) +#define FISUB _SFR_IO8(0x15) +#define FISUC _SFR_IO8(0x16) +#define FISUD _SFR_IO8(0x17) + +/* FPGA Cache Logic(R) registers (top secret, under NDA) */ +#define FPGAX _SFR_IO8(0x18) +#define FPGAY _SFR_IO8(0x19) +#define FPGAZ _SFR_IO8(0x1A) +#define FPGAD _SFR_IO8(0x1B) + +/* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ + +/* 2-wire Serial Bit Rate Register */ +#define TWBR _SFR_IO8(0x1C) + +/* 2-wire Serial Status Register */ +#define TWSR _SFR_IO8(0x1D) + +/* 2-wire Serial (Slave) Address Register */ +#define TWAR _SFR_IO8(0x1E) + +/* 2-wire Serial Data Register */ +#define TWDR _SFR_IO8(0x1F) + +/* UART Baud Register High */ +#define UBRRH _SFR_IO8(0x20) +#define UBRRHI UBRRH /* New name in datasheet (1138F-FPSLI-06/02) */ + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Timer/Counter2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x22) + +/* Timer/Counter2 (8-bit) */ +#define TCNT2 _SFR_IO8(0x23) + +/* Timer/Counter1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* Asynchronous mode StatuS Register */ +#define ASSR _SFR_IO8(0x26) + +/* Timer/Counter2 Control Register */ +#define TCCR2 _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare RegisterB */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare RegisterA */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Special Function IO Register */ +#define SFIOR _SFR_IO8(0x30) + +/* Timer/Counter0 Output Compare Register */ +#define OCR0 _SFR_IO8(0x31) + +/* Timer/Counter0 (8-bit) */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* 0x34 reserved */ + +/* MCU Control/Status Register */ +#define MCUR _SFR_IO8(0x35) + +/* 2-wire Serial Control Register */ +#define TWCR _SFR_IO8(0x36) + +/* 0x37 reserved */ + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK Register */ +#define TIMSK _SFR_IO8(0x39) + +/* Software Control Register */ +#define SFTCR _SFR_IO8(0x3A) + +/* External Interrupt Mask/Flag Register */ +#define EIMF _SFR_IO8(0x3B) + +/* 0x3C reserved */ + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +#define SIG_FPGA_INTERRUPT0 _VECTOR(1) /* FPGA_INT0 */ +#define SIG_INTERRUPT0 _VECTOR(2) /* EXT_INT0 */ +#define SIG_FPGA_INTERRUPT1 _VECTOR(3) /* FPGA_INT1 */ +#define SIG_INTERRUPT1 _VECTOR(4) /* EXT_INT1 */ +#define SIG_FPGA_INTERRUPT2 _VECTOR(5) /* FPGA_INT2 */ +#define SIG_INTERRUPT2 _VECTOR(6) /* EXT_INT2 */ +#define SIG_FPGA_INTERRUPT3 _VECTOR(7) /* FPGA_INT3 */ +#define SIG_INTERRUPT3 _VECTOR(8) /* EXT_INT3 */ +#define SIG_OUTPUT_COMPARE2 _VECTOR(9) /* TIM2_COMP */ +#define SIG_OVERFLOW2 _VECTOR(10) /* TIM2_OVF */ +#define SIG_INPUT_CAPTURE1 _VECTOR(11) /* TIM1_CAPT */ +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) /* TIM1_COMPA */ +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) /* TIM1_COMPB */ +#define SIG_OVERFLOW1 _VECTOR(14) /* TIM1_OVF */ +#define SIG_OUTPUT_COMPARE0 _VECTOR(15) /* TIM0_COMP */ +#define SIG_OVERFLOW0 _VECTOR(16) /* TIM0_OVF */ +#define SIG_FPGA_INTERRUPT4 _VECTOR(17) /* FPGA_INT4 */ +#define SIG_FPGA_INTERRUPT5 _VECTOR(18) /* FPGA_INT5 */ +#define SIG_FPGA_INTERRUPT6 _VECTOR(19) /* FPGA_INT6 */ +#define SIG_FPGA_INTERRUPT7 _VECTOR(20) /* FPGA_INT7 */ +#define SIG_UART0_RECV _VECTOR(21) /* UART0_RXC */ +#define SIG_UART0_DATA _VECTOR(22) /* UART0_DRE */ +#define SIG_UART0_TRANS _VECTOR(23) /* UART0_TXC */ +#define SIG_FPGA_INTERRUPT8 _VECTOR(24) /* FPGA_INT8 */ +#define SIG_FPGA_INTERRUPT9 _VECTOR(25) /* FPGA_INT9 */ +#define SIG_FPGA_INTERRUPT10 _VECTOR(26) /* FPGA_INT10 */ +#define SIG_FPGA_INTERRUPT11 _VECTOR(27) /* FPGA_INT11 */ +#define SIG_UART1_RECV _VECTOR(28) /* UART1_RXC */ +#define SIG_UART1_DATA _VECTOR(29) /* UART1_DRE */ +#define SIG_UART1_TRANS _VECTOR(30) /* UART1_TXC */ +#define SIG_FPGA_INTERRUPT12 _VECTOR(31) /* FPGA_INT12 */ +#define SIG_FPGA_INTERRUPT13 _VECTOR(32) /* FPGA_INT13 */ +#define SIG_FPGA_INTERRUPT14 _VECTOR(33) /* FPGA_INT14 */ +#define SIG_FPGA_INTERRUPT15 _VECTOR(34) /* FPGA_INT15 */ +#define SIG_2WIRE_SERIAL _VECTOR(35) /* TWS_INT */ + +#define _VECTORS_SIZE 144 + +/* Bit numbers (SFRs alphabetically sorted) */ + +/* ASSR */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* DDRE */ +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* EIMF */ +#define INTF3 7 +#define INTF2 6 +#define INTF1 5 +#define INTF0 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +/* FISCR */ +#define FIADR 7 +#define XFIS1 1 +#define XFIS0 0 + +/* FISUA */ +#define FIF3 7 +#define FIF2 6 +#define FIF1 5 +#define FIF0 4 +#define FINT3 3 +#define FINT2 2 +#define FINT1 1 +#define FINT0 0 + +/* FISUB */ +#define FIF7 7 +#define FIF6 6 +#define FIF5 5 +#define FIF4 4 +#define FINT7 3 +#define FINT6 2 +#define FINT5 1 +#define FINT4 0 + +/* FISUC */ +#define FIF11 7 +#define FIF10 6 +#define FIF9 5 +#define FIF8 4 +#define FINT11 3 +#define FINT10 2 +#define FINT9 1 +#define FINT8 0 + +/* FISUD */ +#define FIF15 7 +#define FIF14 6 +#define FIF13 5 +#define FIF12 4 +#define FINT15 3 +#define FINT14 2 +#define FINT13 1 +#define FINT12 0 + +/* MCUR */ +#define JTRF 7 +#define JTD 6 +#define SE 5 +#define SM1 4 +#define SM0 3 +#define PORF 2 +#define WDRF 1 +#define EXTRF 0 + +/* OCDR (reserved) */ +#define IDRD 7 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* PINE */ +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* PORTE */ +/* + PE7 = IC1 / INT3 (alternate) + PE6 = OC1A / INT2 (alternate) + PE5 = OC1B / INT1 (alternate) + PE4 = ET11 / INT0 (alternate) + PE3 = OC2 / RX1 (alternate) + PE2 = / TX1 (alternate) + PE1 = OC0 / RX0 (alternate) + PE0 = ET0 / TX0 (alternate) + */ +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* SFIOR */ +#define PSR2 1 +#define PSR10 0 + +/* SFTCR */ +#define FMXOR 3 +#define WDTS 2 +#define DBG 1 +#define SRST 0 + +/* TCCR0 */ +#define FOC0 7 +#define PWM0 6 +#define COM01 5 +#define COM00 4 +#define CTC0 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define PWM11 1 +#define PWM10 0 + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +#define ICPE 5 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* TCCR2 */ +#define FOC2 7 +#define PWM2 6 +#define COM21 5 +#define COM20 4 +#define CTC2 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* TIFR */ +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +#define TOV2 4 +#define ICF1 3 +#define OCF2 2 +#define TOV0 1 +#define OCF0 0 + +/* TIMSK */ +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +#define TOIE2 4 +#define TICIE1 3 +#define OCIE2 2 +#define TOIE0 1 +#define OCIE0 0 + +/* TWAR */ +/* #define TWA 1 */ /* TWA is bits 7:1 */ +#define TWGCE 0 + +/* TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +/* TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 + +/* UBRRHI + Bits 11..8 of UART1 are bits 7..4 of UBRRHI. + Bits 11..8 of UART0 are bits 3..0 of UBRRHI. */ +/* #define UBRRHI1 4 */ +/* #define UBRRHI0 0 */ + +/* UCSR0A */ +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define OR0 3 +#define U2X0 1 +#define MPCM0 0 + +/* UCSR0B */ +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define CHR90 2 +#define RXB80 1 +#define TXB80 0 + +/* UCSR1A */ +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define OR1 3 +#define U2X1 1 +#define MPCM1 0 + +/* UCSR1B */ +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define CHR91 2 +#define RXB81 1 +#define TXB81 0 + +/* WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + Last memory addresses - depending on configuration, it is possible + to have 20K-32K of program memory and 4K-16K of data memory + (all in the same 36K total of SRAM, loaded from external EEPROM). + */ + +#ifndef RAMEND +#define RAMEND 0x0FFF +#endif + +#ifndef XRAMEND +#define XRAMEND RAMEND +#endif + +#define E2END 0 + +#ifndef FLASHEND +#define FLASHEND 0x7FFF +#endif + +#endif /* _AVR_IOAT94K_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan128.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan128.h new file mode 100644 index 0000000..2f21482 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan128.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2004,2005, Colin O'Flynn + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iocan128.h,v 1.17.2.5 2008/10/17 23:27:46 arcanum Exp $ */ + +/* iocan128.h - definitions for CAN128 */ + +#ifndef _AVR_IOCAN128_H_ +#define _AVR_IOCAN128_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0x0FFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x81 + + +#endif /* _AVR_IOCAN128_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan32.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan32.h new file mode 100644 index 0000000..5c8092c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan32.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2004,2005, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iocan32.h,v 1.2.2.5 2008/10/17 23:27:46 arcanum Exp $ */ + +/* iocan32.h - definitions for CAN32 */ + +#ifndef _AVR_IOCAN32_H_ +#define _AVR_IOCAN32_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x08FF /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0x03FF +#define E2PAGESIZE 8 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x81 + + +#endif /* _AVR_IOCAN32_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan64.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan64.h new file mode 100644 index 0000000..78a0b24 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocan64.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2004,2005, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iocan64.h,v 1.2.2.5 2008/10/17 23:27:46 arcanum Exp $ */ + +/* iocan64.h - definitions for CAN64 */ + +#ifndef _AVR_IOCAN64_H_ +#define _AVR_IOCAN64_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0x07FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x81 + + +#endif /* _AVR_IOCAN64_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocanxx.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocanxx.h new file mode 100644 index 0000000..97404c0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iocanxx.h @@ -0,0 +1,1978 @@ +/* Copyright (c) 2004,2005,2006 Colin O'Flynn + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iocanxx.h,v 1.7 2007/10/25 20:33:23 aesok Exp $ */ + +/* This file is based largely on: + - iom128.h by Peter Jansen (bit defines) + - iom169.h by Juergen Schilling + (register addresses) + - AT90CAN128 Datasheet (bit defines and register addresses) + - Appnote on Mega128 --> AT90Can128 Conversion (for what registers I need + to change) */ + +/* iocanxx.h - definitions for AT90CAN32, AT90CAN64 and AT90CAN128 */ + +#ifndef _AVR_IOCANXX_H_ +#define _AVR_IOCANXX_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iocanxx.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers and bit definitions. */ + +/* RegDef: Port A */ +#define PINA _SFR_IO8(0x00) +#define DDRA _SFR_IO8(0x01) +#define PORTA _SFR_IO8(0x02) + +/* RegDef: Port B */ +#define PINB _SFR_IO8(0x03) +#define DDRB _SFR_IO8(0x04) +#define PORTB _SFR_IO8(0x05) + +/* RegDef: Port C */ +#define PINC _SFR_IO8(0x06) +#define DDRC _SFR_IO8(0x07) +#define PORTC _SFR_IO8(0x08) + +/* RegDef: Port D */ +#define PIND _SFR_IO8(0x09) +#define DDRD _SFR_IO8(0x0A) +#define PORTD _SFR_IO8(0x0B) + +/* RegDef: Port E */ +#define PINE _SFR_IO8(0x0C) +#define DDRE _SFR_IO8(0x0D) +#define PORTE _SFR_IO8(0x0E) + +/* RegDef: Port F */ +#define PINF _SFR_IO8(0x0F) +#define DDRF _SFR_IO8(0x10) +#define PORTF _SFR_IO8(0x11) + +/* RegDef: Port G */ +#define PING _SFR_IO8(0x12) +#define DDRG _SFR_IO8(0x13) +#define PORTG _SFR_IO8(0x14) + +/* RegDef: Timer/Counter 0 interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) + +/* RegDef: Timer/Counter 1 interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) + +/* RegDef: Timer/Counter 2 interrupt Flag Register */ +#define TIFR2 _SFR_IO8(0x17) + +/* RegDef: Timer/Counter 3 interrupt Flag Register */ +#define TIFR3 _SFR_IO8(0x18) + +/* RegDef: External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) + +/* RegDef: External Interrupt Mask Register */ +#define EIMSK _SFR_IO8(0x1D) + +/* RegDef: General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) + +/* RegDef: EEPROM Control Register */ +#define EECR _SFR_IO8(0x1F) + +/* RegDef: EEPROM Data Register */ +#define EEDR _SFR_IO8(0x20) + +/* RegDef: EEPROM Address Register */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0x22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* RegDef: General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) + +/* RegDef: Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) + +/* RegDef: Timer/Counter Register */ +#define TCNT0 _SFR_IO8(0x26) + +/* RegDef: Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) + +/* RegDef: General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x2A) + +/* RegDef: General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x2B) + +/* RegDef: SPI Control Register */ +#define SPCR _SFR_IO8(0x2C) + +/* RegDef: SPI Status Register */ +#define SPSR _SFR_IO8(0x2D) + +/* RegDef: SPI Data Register */ +#define SPDR _SFR_IO8(0x2E) + +/* RegDef: Analog Comperator Control and Status Register */ +#define ACSR _SFR_IO8(0x30) + +/* RegDef: On-chip Debug Register */ +#define OCDR _SFR_IO8(0x31) + +/* RegDef: Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) + +/* RegDef: MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* RegDef: MCU Control Rgeister */ +#define MCUCR _SFR_IO8(0x35) + +/* RegDef: Store Program Memory Control and Status Register */ +#define SPMCSR _SFR_IO8(0x37) + +/* RegDef: RAMPZ register. */ +#define RAMPZ _SFR_IO8(0x3B) + +/* RegDef: Watchdog Timer Control Register */ +#define WDTCR _SFR_MEM8(0x60) + +/* RegDef: Clock Prescale Register */ +#define CLKPR _SFR_MEM8(0x61) + +/* RegDef: Oscillator Calibration Register */ +#define OSCCAL _SFR_MEM8(0x66) + +/* RegDef: External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) + +/* RegDef: External Interrupt Control Register B */ +#define EICRB _SFR_MEM8(0x6A) + +/* RegDef: Timer/Counter 0 Interrupt Mask Register */ +#define TIMSK0 _SFR_MEM8(0x6E) + +/* RegDef: Timer/Counter 1 Interrupt Mask Register */ +#define TIMSK1 _SFR_MEM8(0x6F) + +/* RegDef: Timer/Counter 2 Interrupt Mask Register */ +#define TIMSK2 _SFR_MEM8(0x70) + +/* RegDef: Timer/Counter 3 Interrupt Mask Register */ +#define TIMSK3 _SFR_MEM8(0x71) + +/* RegDef: External Memory Control Register A */ +#define XMCRA _SFR_MEM8(0x74) + +/* RegDef: External Memory Control Register A */ +#define XMCRB _SFR_MEM8(0x75) + +/* RegDef: ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +/* RegDef: ADC Control and Status Register A */ +#define ADCSRA _SFR_MEM8(0x7A) + +/* RegDef: ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x7B) + +/* RegDef: ADC Multiplex Selection Register */ +#define ADMUX _SFR_MEM8(0x7C) + +/* RegDef: Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) + +/* RegDef: Digital Input Disable Register 1 */ +#define DIDR1 _SFR_MEM8(0x7F) + +/* RegDef: Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_MEM8(0x80) + +/* RegDef: Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_MEM8(0x81) + +/* RegDef: Timer/Counter1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x82) + +/* RegDef: Timer/Counter1 Register */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* RegDef: Timer/Counter1 Input Capture Register */ +#define ICR1 _SFR_MEM16(0x86) +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* RegDef: Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* RegDef: Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_MEM16(0x8A) +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* RegDef: Timer/Counter1 Output Compare Register C */ +#define OCR1C _SFR_MEM16(0x8C) +#define OCR1CL _SFR_MEM8(0x8C) +#define OCR1CH _SFR_MEM8(0x8D) + +/* RegDef: Timer/Counter3 Control Register A */ +#define TCCR3A _SFR_MEM8(0x90) + +/* RegDef: Timer/Counter3 Control Register B */ +#define TCCR3B _SFR_MEM8(0x91) + +/* RegDef: Timer/Counter3 Control Register C */ +#define TCCR3C _SFR_MEM8(0x92) + +/* RegDef: Timer/Counter3 Register */ +#define TCNT3 _SFR_MEM16(0x94) +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3H _SFR_MEM8(0x95) + +/* RegDef: Timer/Counter3 Input Capture Register */ +#define ICR3 _SFR_MEM16(0x96) +#define ICR3L _SFR_MEM8(0x96) +#define ICR3H _SFR_MEM8(0x97) + +/* RegDef: Timer/Counter3 Output Compare Register A */ +#define OCR3A _SFR_MEM16(0x98) +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AH _SFR_MEM8(0x99) + +/* RegDef: Timer/Counter3 Output Compare Register B */ +#define OCR3B _SFR_MEM16(0x9A) +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3BH _SFR_MEM8(0x9B) + +/* RegDef: Timer/Counter3 Output Compare Register C */ +#define OCR3C _SFR_MEM16(0x9C) +#define OCR3CL _SFR_MEM8(0x9C) +#define OCR3CH _SFR_MEM8(0x9D) + +/* RegDef: Timer/Counter2 Control Register A */ +#define TCCR2A _SFR_MEM8(0xB0) + +/* RegDef: Timer/Counter2 Register */ +#define TCNT2 _SFR_MEM8(0xB2) + +/* RegDef: Timer/Counter2 Output Compare Register */ +#define OCR2A _SFR_MEM8(0xB3) + +/* RegDef: Asynchronous Status Register */ +#define ASSR _SFR_MEM8(0xB6) + +/* RegDef: TWI Bit Rate Register */ +#define TWBR _SFR_MEM8(0xB8) + +/* RegDef: TWI Status Register */ +#define TWSR _SFR_MEM8(0xB9) + +/* RegDef: TWI (Slave) Address Register */ +#define TWAR _SFR_MEM8(0xBA) + +/* RegDef: TWI Data Register */ +#define TWDR _SFR_MEM8(0xBB) + +/* RegDef: TWI Control Register */ +#define TWCR _SFR_MEM8(0xBC) + +/* RegDef: USART0 Control and Status Register A */ +#define UCSR0A _SFR_MEM8(0xC0) + +/* RegDef: USART0 Control and Status Register B */ +#define UCSR0B _SFR_MEM8(0xC1) + +/* RegDef: USART0 Control and Status Register C */ +#define UCSR0C _SFR_MEM8(0xC2) + +/* RegDef: USART0 Baud Rate Register */ +#define UBRR0 _SFR_MEM16(0xC4) +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +/* RegDef: USART0 I/O Data Register */ +#define UDR0 _SFR_MEM8(0xC6) + +/* RegDef: USART1 Control and Status Register A */ +#define UCSR1A _SFR_MEM8(0xC8) + +/* RegDef: USART1 Control and Status Register B */ +#define UCSR1B _SFR_MEM8(0xC9) + +/* RegDef: USART1 Control and Status Register C */ +#define UCSR1C _SFR_MEM8(0xCA) + +/* RegDef: USART1 Baud Rate Register */ +#define UBRR1 _SFR_MEM16(0xCC) +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1H _SFR_MEM8(0xCD) + +/* RegDef: USART1 I/O Data Register */ +#define UDR1 _SFR_MEM8(0xCE) + +/* RegDef: CAN General Control Register*/ +#define CANGCON _SFR_MEM8(0xD8) + +/* RegDef: CAN General Status Register*/ +#define CANGSTA _SFR_MEM8(0xD9) + +/* RegDef: CAN General Interrupt Register*/ +#define CANGIT _SFR_MEM8(0xDA) + +/* RegDef: CAN General Interrupt Enable Register*/ +#define CANGIE _SFR_MEM8(0xDB) + +/* RegDef: CAN Enable MOb Register*/ +#define CANEN2 _SFR_MEM8(0xDC) + +/* RegDef: CAN Enable MOb Register*/ +#define CANEN1 _SFR_MEM8(0xDD) + +/* RegDef: CAN Enable Interrupt MOb Register*/ +#define CANIE2 _SFR_MEM8(0xDE) + +/* RegDef: CAN Enable Interrupt MOb Register*/ +#define CANIE1 _SFR_MEM8(0xDF) + +/* RegDef: CAN Status Interrupt MOb Register*/ +/* + * WARNING: Do not apply the SIT8...SIT14 constants to bits in the CANSIT + * register. + */ +#define CANSIT _SFR_MEM16(0xE0) +#define CANSIT2 _SFR_MEM8(0xE0) +#define CANSIT1 _SFR_MEM8(0xE1) + +/* RegDef: CAN Bit Timing Register 1*/ +#define CANBT1 _SFR_MEM8(0xE2) + +/* RegDef: CAN Bit Timing Register 2*/ +#define CANBT2 _SFR_MEM8(0xE3) + +/* RegDef: CAN Bit Timing Register 3*/ +#define CANBT3 _SFR_MEM8(0xE4) + +/* RegDef: CAN Timer Control Register*/ +#define CANTCON _SFR_MEM8(0xE5) + +/* RegDef: CAN Timer Register*/ +#define CANTIM _SFR_MEM16(0xE6) +#define CANTIML _SFR_MEM8(0xE6) +#define CANTIMH _SFR_MEM8(0xE7) + +/* RegDef: CAN TTC Timer Register*/ +#define CANTTC _SFR_MEM16(0xE8) +#define CANTTCL _SFR_MEM8(0xE8) +#define CANTTCH _SFR_MEM8(0xE9) + +/* RegDef: CAN Transmitt Error Counter Register*/ +#define CANTEC _SFR_MEM8(0xEA) + +/* RegDef: CAN Receive Error Counter Register*/ +#define CANREC _SFR_MEM8(0xEB) + +/* RegDef: CAN Highest Priority MOb Register*/ +#define CANHPMOB _SFR_MEM8(0xEC) + +/* RegDef: CAN Page MOb Register*/ +#define CANPAGE _SFR_MEM8(0xED) + +/* RegDef: CAN MOb Status Register*/ +#define CANSTMOB _SFR_MEM8(0xEE) + +/* RegDef: CAN MOb Control and DLC Register*/ +#define CANCDMOB _SFR_MEM8(0xEF) + +/* RegDef: CAN Identifier Tag Registers*/ +#define CANIDT _SFR_MEM32(0xF0) + +#define CANIDT4 _SFR_MEM8(0xF0) +#define CANIDT3 _SFR_MEM8(0xF1) +#define CANIDT2 _SFR_MEM8(0xF2) +#define CANIDT1 _SFR_MEM8(0xF3) + +/* RegDef: CAN Identifier Mask Registers */ +#define CANIDM _SFR_MEM32(0xF4) + +#define CANIDM4 _SFR_MEM8(0xF4) +#define CANIDM3 _SFR_MEM8(0xF5) +#define CANIDM2 _SFR_MEM8(0xF6) +#define CANIDM1 _SFR_MEM8(0xF7) + +/* RegDef: CAN TTC Timer Register*/ +#define CANSTM _SFR_MEM16(0xF8) +#define CANSTML _SFR_MEM8(0xF8) +#define CANSTMH _SFR_MEM8(0xF9) + +/* RegDef: CAN Message Register*/ +#define CANMSG _SFR_MEM8(0xFA) + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(4) +#define SIG_INTERRUPT3 _VECTOR(4) + +/* External Interrupt Request 4 */ +#define INT4_vect _VECTOR(5) +#define SIG_INTERRUPT4 _VECTOR(5) + +/* External Interrupt Request 5 */ +#define INT5_vect _VECTOR(6) +#define SIG_INTERRUPT5 _VECTOR(6) + +/* External Interrupt Request 6 */ +#define INT6_vect _VECTOR(7) +#define SIG_INTERRUPT6 _VECTOR(7) + +/* External Interrupt Request 7 */ +#define INT7_vect _VECTOR(8) +#define SIG_INTERRUPT7 _VECTOR(8) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(9) +#define SIG_OUTPUT_COMPARE2 _VECTOR(9) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(10) +#define SIG_OVERFLOW2 _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) +#define SIG_INPUT_CAPTURE1 _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) + +/* Timer/Counter1 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE1C _VECTOR(14) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(15) +#define SIG_OVERFLOW1 _VECTOR(15) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(16) +#define SIG_OUTPUT_COMPARE0 _VECTOR(16) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(17) +#define SIG_OVERFLOW0 _VECTOR(17) + +/* CAN Transfer Complete or Error */ +#define CANIT_vect _VECTOR(18) +#define SIG_CAN_INTERRUPT1 _VECTOR(18) + +/* CAN Timer Overrun */ +#define OVRIT_vect _VECTOR(19) +#define SIG_CAN_OVERFLOW1 _VECTOR(19) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(20) +#define SIG_SPI _VECTOR(20) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(21) +#define SIG_UART0_RECV _VECTOR(21) +#define SIG_USART0_RECV _VECTOR(21) + +/* USART0 Data Register Empty */ +#define USART0_UDRE_vect _VECTOR(22) +#define SIG_UART0_DATA _VECTOR(22) +#define SIG_USART0_DATA _VECTOR(22) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(23) +#define SIG_UART0_TRANS _VECTOR(23) +#define SIG_USART0_TRANS _VECTOR(23) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(24) +#define SIG_COMPARATOR _VECTOR(24) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(25) +#define SIG_ADC _VECTOR(25) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(26) +#define SIG_EEPROM_READY _VECTOR(26) + +/* Timer/Counter3 Capture Event */ +#define TIMER3_CAPT_vect _VECTOR(27) +#define SIG_INPUT_CAPTURE3 _VECTOR(27) + +/* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPA_vect _VECTOR(28) +#define SIG_OUTPUT_COMPARE3A _VECTOR(28) + +/* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPB_vect _VECTOR(29) +#define SIG_OUTPUT_COMPARE3B _VECTOR(29) + +/* Timer/Counter3 Compare Match C */ +#define TIMER3_COMPC_vect _VECTOR(30) +#define SIG_OUTPUT_COMPARE3C _VECTOR(30) + +/* Timer/Counter3 Overflow */ +#define TIMER3_OVF_vect _VECTOR(31) +#define SIG_OVERFLOW3 _VECTOR(31) + +/* USART1, Rx Complete */ +#define USART1_RX_vect _VECTOR(32) +#define SIG_UART1_RECV _VECTOR(32) +#define SIG_USART1_RECV _VECTOR(32) + +/* USART1, Data Register Empty */ +#define USART1_UDRE_vect _VECTOR(33) +#define SIG_UART1_DATA _VECTOR(33) +#define SIG_USART1_DATA _VECTOR(33) + +/* USART1, Tx Complete */ +#define USART1_TX_vect _VECTOR(34) +#define SIG_UART1_TRANS _VECTOR(34) +#define SIG_USART1_TRANS _VECTOR(34) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(35) +#define SIG_2WIRE_SERIAL _VECTOR(35) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(36) +#define SIG_SPM_READY _VECTOR(36) + +#define _VECTORS_SIZE 148 + +/* The Register Bit names are represented by their bit number (0-7). */ + +/* Register Bits [ASSR] */ +/* Asynchronous Status Register */ +#define EXCLK 4 +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 +/* End Register Bits */ + +/* Register Bits [TWCR] */ +/* 2-wire Control Register - TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 +/* End Register Bits */ + +/* Register Bits [TWAR] */ +/* 2-wire Address Register - TWAR */ +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 +/* End Register Bits */ + +/* Register Bits [TWSR] */ +/* 2-wire Status Register - TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 +/* End Register Bits */ + +/* Register Bits [XMCRB] */ +/* External Memory Control Register B - XMCRB */ +#define XMBK 7 +#define XMM2 2 +#define XMM1 1 +#define XMM0 0 +/* End Register Bits */ + +/* Register Bits [XMCRA] */ +/* External Memory Control Register A - XMCRA */ +#define SRE 7 +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW11 3 +#define SRW10 2 +#define SRW01 1 +#define SRW00 0 +/* End Register Bits */ + +/* Register Bits [RAMPZ] */ +/* RAM Page Z select register - RAMPZ */ +#define RAMPZ0 0 +/* End Register Bits */ + +/* Register Bits [EICRA] */ +/* External Interrupt Control Register A - EICRA */ +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 +/* End Register Bits */ + +/* Register Bits [EICRB] */ +/* External Interrupt Control Register B - EICRB */ +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 +/* End Register Bits */ + +/* Register Bits [SPMCSR] */ +/* Store Program Memory Control Register - SPMCSR, SPMCR */ +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 +/* End Register Bits */ + +/* Register Bits [EIMSK] */ +/* External Interrupt MaSK register - EIMSK */ +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 +/* End Register Bits */ + +/* Register Bits [EIFR] */ +/* External Interrupt Flag Register - EIFR */ +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 +/* End Register Bits */ + +/* Register Bits [TCCR2] */ +/* Timer/Counter 2 Control Register - TCCR2 */ +#define FOC2A 7 +#define WGM20 6 +#define COM2A1 5 +#define COM2A0 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 +/* End Register Bits */ + +/* Register Bits [TCCR1A] */ +/* Timer/Counter 1 Control and Status Register A - TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define COM1C1 3 +#define COM1C0 2 +#define WGM11 1 +#define WGM10 0 +/* End Register Bits */ + +/* Register Bits [TCCR3A] */ +/* Timer/Counter 3 Control and Status Register A - TCCR3A */ +#define COM3A1 7 +#define COM3A0 6 +#define COM3B1 5 +#define COM3B0 4 +#define COM3C1 3 +#define COM3C0 2 +#define WGM31 1 +#define WGM30 0 +/* End Register Bits */ + +/* Register Bits [TCCR1B] */ +/* Timer/Counter 1 Control and Status Register B - TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 +/* End Register Bits */ + +/* Register Bits [TCCR3B] */ +/* Timer/Counter 3 Control and Status Register B - TCCR3B */ +#define ICNC3 7 +#define ICES3 6 +#define WGM33 4 +#define WGM32 3 +#define CS32 2 +#define CS31 1 +#define CS30 0 +/* End Register Bits */ + +/* Register Bits [TCCR3C] */ +/* Timer/Counter 3 Control Register C - TCCR3C */ +#define FOC3A 7 +#define FOC3B 6 +#define FOC3C 5 +/* End Register Bits */ + +/* Register Bits [TCCR1C] */ +/* Timer/Counter 1 Control Register C - TCCR1C */ +#define FOC1A 7 +#define FOC1B 6 +#define FOC1C 5 +/* End Register Bits */ + +/* Register Bits [OCDR] */ +/* On-chip Debug Register - OCDR */ +#define IDRD 7 +#define OCDR7 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 +/* End Register Bits */ + +/* Register Bits [WDTCR] */ +/* Watchdog Timer Control Register - WDTCR */ +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 +/* End Register Bits */ + +/* Register Bits [SPSR] */ +/* SPI Status Register - SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 +/* End Register Bits */ + +/* Register Bits [SPCR] */ +/* SPI Control Register - SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 +/* End Register Bits */ + +/* Register Bits [UCSR1C] */ +/* USART1 Register C - UCSR1C */ +#define UMSEL1 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 +/* End Register Bits */ + +/* Register Bits [UCSR0C] */ +/* USART0 Register C - UCSR0C */ +#define UMSEL0 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPOL0 0 +/* End Register Bits */ + +/* Register Bits [UCSR1A] */ +/* USART1 Status Register A - UCSR1A */ +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 +/* End Register Bits */ + +/* Register Bits [UCSR0A] */ +/* USART0 Status Register A - UCSR0A */ +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 +/* End Register Bits */ + +/* Register Bits [UCSR1B] */ +/* USART1 Control Register B - UCSR1B */ +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 +/* End Register Bits */ + +/* Register Bits [UCSR0B] */ +/* USART0 Control Register B - UCSR0B */ +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 +/* End Register Bits */ + +/* Register Bits [ACSR] */ +/* Analog Comparator Control and Status Register - ACSR */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 +/* End Register Bits */ + +/* Register Bits [ADCSRA] */ +/* ADC Control and status register - ADCSRA */ +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 +/* End Register Bits */ + +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven + to be fast enough even without feeding it more power. +*/ + +/* Register Bits [ADCSRB] */ +/* ADC Control and status register - ADCSRB */ +#define ACME 6 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 +/* End Register Bits */ + +/* Register Bits [ADMUX] */ +/* ADC Multiplexer select - ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 +/* End Register Bits */ + +/* Register Bits [DIDR0] */ +/* Digital Input Disable Register 0 */ +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 +/* End Register Bits */ + +/* Register Bits [DIDR1] */ +/* Digital Input Disable Register 1 */ +#define AIN1D 1 +#define AIN0D 0 +/* End Register Bits */ + +/* Register Bits [PORTA] */ +/* Port A Data Register - PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 +/* End Register Bits */ + +/* Register Bits [DDRA] */ +/* Port A Data Direction Register - DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 +/* End Register Bits */ + +/* Register Bits [PINA] */ +/* Port A Input Pins - PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 +/* End Register Bits */ + +/* Register Bits [PORTB] */ +/* Port B Data Register - PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 +/* End Register Bits */ + +/* Register Bits [DDRB] */ +/* Port B Data Direction Register - DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 +/* End Register Bits */ + +/* Register Bits [PINB] */ +/* Port B Input Pins - PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 +/* End Register Bits */ + +/* Register Bits [PORTC] */ +/* Port C Data Register - PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 +/* End Register Bits */ + +/* Register Bits [DDRC] */ +/* Port C Data Direction Register - DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 +/* End Register Bits */ + +/* Register Bits [PINC] */ +/* Port C Input Pins - PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 +/* End Register Bits */ + +/* Register Bits [PORTD] */ +/* Port D Data Register - PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 +/* End Register Bits */ + +/* Register Bits [DDRD] */ +/* Port D Data Direction Register - DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 +/* End Register Bits */ + +/* Register Bits [PIND] */ +/* Port D Input Pins - PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 +/* End Register Bits */ + +/* Register Bits [PORTE] */ +/* Port E Data Register - PORTE */ +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 +/* End Register Bits */ + +/* Register Bits [DDRE] */ +/* Port E Data Direction Register - DDRE */ +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 +/* End Register Bits */ + +/* Register Bits [PINE] */ +/* Port E Input Pins - PINE */ +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 +/* End Register Bits */ + +/* Register Bits [PORTF] */ +/* Port F Data Register - PORTF */ +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 +/* End Register Bits */ + +/* Register Bits [DDRF] */ +/* Port F Data Direction Register - DDRF */ +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 +/* End Register Bits */ + +/* Register Bits [PINF] */ +/* Port F Input Pins - PINF */ +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 +/* End Register Bits */ + +/* Register Bits [PORTG] */ +/* Port G Data Register - PORTG */ +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 +/* End Register Bits */ + +/* Register Bits [DDRG] */ +/* Port G Data Direction Register - DDRG */ +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 +/* End Register Bits */ + +/* Register Bits [PING] */ +/* Port G Input Pins - PING */ +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 +/* End Register Bits */ + + +/* Register Bits [TIFR0] */ +/* Timer/Counter 0 interrupt Flag Register */ +#define OCF0A 1 +#define TOV0 0 +/* End Register Bits */ + +/* Register Bits [TIFR1] */ +/* Timer/Counter 1 interrupt Flag Register */ +#define ICF1 5 +#define OCF1C 3 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 +/* End Register Bits */ + +/* Register Bits [TIFR2] */ +/* Timer/Counter 2 interrupt Flag Register */ +#define OCF2A 1 +#define TOV2 0 +/* End Register Bits */ + +/* Register Bits [TIFR3] */ +/* Timer/Counter 3 interrupt Flag Register */ +#define ICF3 5 +#define OCF3C 3 +#define OCF3B 2 +#define OCF3A 1 +#define TOV3 0 +/* End Register Bits */ + +/* Register Bits [GPIOR0] */ +/* General Purpose I/O Register 0 */ +#define GPIOR07 7 +#define GPIOR06 6 +#define GPIOR05 5 +#define GPIOR04 4 +#define GPIOR03 3 +#define GPIOR02 2 +#define GPIOR01 1 +#define GPIOR00 0 +/* End Register Bits */ + +/* Register Bits [GPIOR1] */ +/* General Purpose I/O Register 1 */ +#define GPIOR17 7 +#define GPIOR16 6 +#define GPIOR15 5 +#define GPIOR14 4 +#define GPIOR13 3 +#define GPIOR12 2 +#define GPIOR11 1 +#define GPIOR10 0 +/* End Register Bits */ + +/* Register Bits [GPIOR2] */ +/* General Purpose I/O Register 2 */ +#define GPIOR27 7 +#define GPIOR26 6 +#define GPIOR25 5 +#define GPIOR24 4 +#define GPIOR23 3 +#define GPIOR22 2 +#define GPIOR21 1 +#define GPIOR20 0 +/* End Register Bits */ + +/* Register Bits [EECR] */ +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 +/* End Register Bits */ + +/* Register Bits [EEDR] */ +/* EEPROM Data Register */ +#define EEDR7 7 +#define EEDR6 6 +#define EEDR5 5 +#define EEDR4 4 +#define EEDR3 3 +#define EEDR2 2 +#define EEDR1 1 +#define EEDR0 0 +/* End Register Bits */ + +/* Register Bits [EEARL] */ +/* EEPROM Address Register */ +#define EEAR7 7 +#define EEAR6 6 +#define EEAR5 5 +#define EEAR4 4 +#define EEAR3 3 +#define EEAR2 2 +#define EEAR1 1 +#define EEAR0 0 +/* End Register Bits */ + +/* Register Bits [EEARH] */ +/* EEPROM Address Register */ +#define EEAR11 3 +#define EEAR10 2 +#define EEAR9 1 +#define EEAR8 0 +/* End Register Bits */ + +/* Register Bits [GTCCR] */ +/* General Timer/Counter Control Register */ +#define TSM 7 +#define PSR2 1 +#define PSR310 0 +/* End Register Bits */ + +/* Register Bits [TCCR0A] */ +/* Timer/Counter Control Register A */ +/* ALSO COVERED IN GENERIC SECTION */ +#define FOC0A 7 +#define WGM00 6 +#define COM0A1 5 +#define COM0A0 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 +/* End Register Bits */ + +/* Register Bits [OCR0A] */ +/* Output Compare Register A */ +#define OCR0A7 7 +#define OCR0A6 6 +#define OCR0A5 5 +#define OCR0A4 4 +#define OCR0A3 3 +#define OCR0A2 2 +#define OCR0A1 1 +#define OCR0A0 0 +/* End Register Bits */ + + +/* Register Bits [SPIDR] */ +/* SPI Data Register */ +#define SPD7 7 +#define SPD6 6 +#define SPD5 5 +#define SPD4 4 +#define SPD3 3 +#define SPD2 2 +#define SPD1 1 +#define SPD0 0 +/* End Register Bits */ + +/* Register Bits [SMCR] */ +/* Sleep Mode Control Register */ +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 +/* End Register Bits */ + +/* Register Bits [MCUSR] */ +/* MCU Status Register */ +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 +/* End Register Bits */ + +/* Register Bits [MCUCR] */ +/* MCU Control Register */ +#define JTD 7 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 +/* End Register Bits */ + +/* Register Bits [CLKPR] */ +/* Clock Prescale Register */ +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 +/* End Register Bits */ + +/* Register Bits [OSCCAL] */ +/* Oscillator Calibration Register */ +#define CAL6 6 +#define CAL5 5 +#define CAL4 4 +#define CAL3 3 +#define CAL2 2 +#define CAL1 1 +#define CAL0 0 +/* End Register Bits */ + +/* Register Bits [TIMSK0] */ +/* Timer/Counter 0 interrupt mask Register */ +#define OCIE0A 1 +#define TOIE0 0 +/* End Register Bits */ + +/* Register Bits [TIMSK1] */ +/* Timer/Counter 1 interrupt mask Register */ +#define ICIE1 5 +#define OCIE1C 3 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 +/* End Register Bits */ + +/* Register Bits [TIMSK2] */ +/* Timer/Counter 2 interrupt mask Register */ +#define OCIE2A 1 +#define TOIE2 0 +/* End Register Bits */ + +/* Register Bits [TIMSK3] */ +/* Timer/Counter 3 interrupt mask Register */ +#define ICIE3 5 +#define OCIE3C 3 +#define OCIE3B 2 +#define OCIE3A 1 +#define TOIE3 0 +/* End Register Bits */ + +//Begin CAN specific parts + +/* Register Bits [CANGCON] */ +/* CAN General Control Register */ +#define ABRQ 7 +#define OVRQ 6 +#define TTC 5 +#define SYNTTC 4 +#define LISTEN 3 +#define TEST 2 +#define ENASTB 1 +#define SWRES 0 +/* End Register Bits */ + +/* Register Bits [CANGSTA] */ +/* CAN General Status Register */ +#define OVFG 6 +#define OVRG 6 +#define TXBSY 4 +#define RXBSY 3 +#define ENFG 2 +#define BOFF 1 +#define ERRP 0 +/* End Register Bits */ + +/* Register Bits [CANGIT] */ +/* CAN General Interrupt Register */ +#define CANIT 7 +#define BOFFIT 6 +#define OVRTIM 5 +#define BXOK 4 +#define SERG 3 +#define CERG 2 +#define FERG 1 +#define AERG 0 +/* End Register Bits */ + +/* Register Bits [CANGIE] */ +/* CAN General Interrupt Enable */ +#define ENIT 7 +#define ENBOFF 6 +#define ENRX 5 +#define ENTX 4 +#define ENERR 3 +#define ENBX 2 +#define ENERG 1 +#define ENOVRT 0 +/* End Register Bits */ + +/* Register Bits [CANEN2] */ +/* CAN Enable MOb Register */ +#define ENMOB7 7 +#define ENMOB6 6 +#define ENMOB5 5 +#define ENMOB4 4 +#define ENMOB3 3 +#define ENMOB2 2 +#define ENMOB1 1 +#define ENMOB0 0 +/* End Register Bits */ + +/* Register Bits [CANEN1] */ +/* CAN Enable MOb Register */ +#define ENMOB14 6 +#define ENMOB13 5 +#define ENMOB12 4 +#define ENMOB11 3 +#define ENMOB10 2 +#define ENMOB9 1 +#define ENMOB8 0 +/* End Register Bits */ + +/* Register Bits [CANIE2] */ +/* CAN Interrupt Enable MOb Register */ +#define IEMOB7 7 +#define IEMOB6 6 +#define IEMOB5 5 +#define IEMOB4 4 +#define IEMOB3 3 +#define IEMOB2 2 +#define IEMOB1 1 +#define IEMOB0 0 +/* End Register Bits */ + +/* Register Bits [CANIE1] */ +/* CAN Interrupt Enable MOb Register */ +#define IEMOB14 6 +#define IEMOB13 5 +#define IEMOB12 4 +#define IEMOB11 3 +#define IEMOB10 2 +#define IEMOB9 1 +#define IEMOB8 0 +/* End Register Bits */ + +/* Register Bits [CANSIT2] */ +/* CAN Status Interrupt MOb Register */ +#define SIT7 7 +#define SIT6 6 +#define SIT5 5 +#define SIT4 4 +#define SIT3 3 +#define SIT2 2 +#define SIT1 1 +#define SIT0 0 +/* End Register Bits */ + +/* Register Bits [CANSIT1] */ +/* CAN Status Interrupt MOb Register */ +#define SIT14 6 +#define SIT13 5 +#define SIT12 4 +#define SIT11 3 +#define SIT10 2 +#define SIT9 1 +#define SIT8 0 +/* End Register Bits */ + +/* Register Bits [CANBT1] */ +/* Bit Timing Register 1 */ +#define BRP5 6 +#define BRP4 5 +#define BRP3 4 +#define BRP2 3 +#define BRP1 2 +#define BRP0 1 +/* End Register Bits */ + +/* Register Bits [CANBT2] */ +/* Bit Timing Register 2 */ +#define SJW1 6 +#define SJW0 5 +#define PRS2 3 +#define PRS1 2 +#define PRS0 1 +/* End Register Bits */ + +/* Register Bits [CANBT3] */ +/* Bit Timing Register 3 */ +#define PHS22 6 +#define PHS21 5 +#define PHS20 4 +#define PHS12 3 +#define PHS11 2 +#define PHS10 1 +#define SMP 0 +/* End Register Bits */ + +/* Register Bits [CANTCON] */ +/* CAN Timer Control Register */ +#define TPRSC7 7 +#define TPRSC6 6 +#define TPRSC5 5 +#define TPRSC4 4 +#define TPRSC3 3 +#define TPRSC2 2 +#define TPRSC1 1 +#define TPRSC0 0 +/* End Register Bits */ + +/* Register Bits [CANTIML] */ +/* CAN Timer Register Low */ +#define CANTIM7 7 +#define CANTIM6 6 +#define CANTIM5 5 +#define CANTIM4 4 +#define CANTIM3 3 +#define CANTIM2 2 +#define CANTIM1 1 +#define CANTIM0 0 +/* End Register Bits */ + +/* Register Bits [CANTIMH] */ +/* CAN Timer Register High */ +#define CANTIM15 7 +#define CANTIM14 6 +#define CANTIM13 5 +#define CANTIM12 4 +#define CANTIM11 3 +#define CANTIM10 2 +#define CANTIM9 1 +#define CANTIM8 0 +/* End Register Bits */ + +/* Register Bits [CANTTCL] */ +/* CAN TTC Timer Register Low */ +#define TIMTTC7 7 +#define TIMTTC6 6 +#define TIMTTC5 5 +#define TIMTTC4 4 +#define TIMTTC3 3 +#define TIMTTC2 2 +#define TIMTTC1 1 +#define TIMTTC0 0 +/* End Register Bits */ + +/* Register Bits [CANTTCH] */ +/* CAN TTC Timer Register High */ +#define TIMTTC15 7 +#define TIMTTC14 6 +#define TIMTTC13 5 +#define TIMTTC12 4 +#define TIMTTC11 3 +#define TIMTTC10 2 +#define TIMTTC9 1 +#define TIMTTC8 0 +/* End Register Bits */ + +/* Register Bits [CANTEC] */ +/* CAN Transmitt Error Counter */ +#define TEC7 7 +#define TEC6 6 +#define TEC5 5 +#define TEC4 4 +#define TEC3 3 +#define TEC2 2 +#define TEC1 1 +#define TEC0 0 +/* End Register Bits */ + +/* Register Bits [CANREC] */ +/* CAN Receive Error Counter */ +#define REC7 7 +#define REC6 6 +#define REC5 5 +#define REC4 4 +#define REC3 3 +#define REC2 2 +#define REC1 1 +#define REC0 0 +/* End Register Bits */ + +/* Register Bits [CANHPMOB] */ +/* Highest Priority MOb */ +#define HPMOB3 7 +#define HPMOB2 6 +#define HPMOB1 5 +#define HPMOB0 4 +#define CGP3 3 +#define CGP2 2 +#define CGP1 1 +#define CGP0 0 +/* End Register Bits */ + +/* Register Bits [CANPAGE] */ +/* CAN Page MOb Register */ +#define MOBNB3 7 +#define MOBNB2 6 +#define MOBNB1 5 +#define MOBNB0 4 +#define AINC 3 +#define INDX2 2 +#define INDX1 1 +#define INDX0 0 +/* End Register Bits */ + +/* Register Bits [CANSTMOB] */ +/* CAN MOb Status Register */ +#define DLCW 7 +#define TXOK 6 +#define RXOK 5 +#define BERR 4 +#define SERR 3 +#define CERR 2 +#define FERR 1 +#define AERR 0 +/* End Register Bits */ + +/* Register Bits [CANCDMOB] */ +/* CAN MOb Control and DLC Register */ +#define CONMOB1 7 +#define CONMOB0 6 +#define RPLV 5 +#define IDE 4 +#define DLC3 3 +#define DLC2 2 +#define DLC1 1 +#define DLC0 0 +/* End Register Bits */ + +/* Register Bits [CANIDT4] */ +/* CAN Identifier Tag Register 4 */ +#define IDT4 7 +#define IDT3 6 +#define IDT2 5 +#define IDT1 4 +#define IDT0 3 +#define RTRTAG 2 +#define RB1TAG 1 +#define RB0TAG 0 +/* End Register Bits */ + +/* Register Bits [CANIDT3] */ +/* CAN Identifier Tag Register 3 */ +#define IDT12 7 +#define IDT11 6 +#define IDT10 5 +#define IDT9 4 +#define IDT8 3 +#define IDT7 2 +#define IDT6 1 +#define IDT5 0 +/* End Register Bits */ + +/* Register Bits [CANIDT2] */ +/* CAN Identifier Tag Register 2 */ +#define IDT20 7 +#define IDT19 6 +#define IDT18 5 +#define IDT17 4 +#define IDT16 3 +#define IDT15 2 +#define IDT14 1 +#define IDT13 0 +/* End Register Bits */ + +/* Register Bits [CANIDT1] */ +/* CAN Identifier Tag Register 1 */ +#define IDT28 7 +#define IDT27 6 +#define IDT26 5 +#define IDT25 4 +#define IDT24 3 +#define IDT23 2 +#define IDT22 1 +#define IDT21 0 +/* End Register Bits */ + +/* Register Bits [CANIDM4] */ +/* CAN Identifier Mask Register 4 */ +#define IDMSK4 7 +#define IDMSK3 6 +#define IDMSK2 5 +#define IDMSK1 4 +#define IDMSK0 3 +#define RTRMSK 2 +#define IDEMSK 0 +/* End Register Bits */ + +/* Register Bits [CANIDM3] */ +/* CAN Identifier Mask Register 3 */ +#define IDMSK12 7 +#define IDMSK11 6 +#define IDMSK10 5 +#define IDMSK9 4 +#define IDMSK8 3 +#define IDMSK7 2 +#define IDMSK6 1 +#define IDMSK5 0 +/* End Register Bits */ + +/* Register Bits [CANIDM2] */ +/* CAN Identifier Mask Register 2 */ +#define IDMSK20 7 +#define IDMSK19 6 +#define IDMSK18 5 +#define IDMSK17 4 +#define IDMSK16 3 +#define IDMSK15 2 +#define IDMSK14 1 +#define IDMSK13 0 +/* End Register Bits */ + +/* Register Bits [CANIDM1] */ +/* CAN Identifier Mask Register 1 */ +#define IDMSK28 7 +#define IDMSK27 6 +#define IDMSK26 5 +#define IDMSK25 4 +#define IDMSK24 3 +#define IDMSK23 2 +#define IDMSK22 1 +#define IDMSK21 0 +/* End Register Bits */ + +/* Register Bits [CANSTML] */ +/* CAN Timer Register of some sort, low*/ +#define TIMSTM7 7 +#define TIMSTM6 6 +#define TIMSTM5 5 +#define TIMSTM4 4 +#define TIMSTM3 3 +#define TIMSTM2 2 +#define TIMSTM1 1 +#define TIMSTM0 0 +/* End Register Bits */ + +/* Register Bits [CANSTMH] */ +/* CAN Timer Register of some sort, high */ +#define TIMSTM15 7 +#define TIMSTM14 6 +#define TIMSTM13 5 +#define TIMSTM12 4 +#define TIMSTM11 3 +#define TIMSTM10 2 +#define TIMSTM9 1 +#define TIMSTM8 0 +/* End Register Bits */ + +/* Register Bits [CANMSG] */ +/* CAN Message Register */ +#define MSG7 7 +#define MSG6 6 +#define MSG5 5 +#define MSG4 4 +#define MSG3 3 +#define MSG2 2 +#define MSG1 1 +#define MSG0 0 +/* End Register Bits */ + +/* Begin Verbatim */ + +/* Timer/Counter Control Register (generic) */ +#define FOC 7 +#define WGM0 6 +#define COM1 5 +#define COM0 4 +#define WGM1 3 +#define CS2 2 +#define CS1 1 +#define CS0 0 + +/* Timer/Counter Control Register A (generic) */ +#define COMA1 7 +#define COMA0 6 +#define COMB1 5 +#define COMB0 4 +#define COMC1 3 +#define COMC0 2 +#define WGMA1 1 +#define WGMA0 0 + +/* Timer/Counter Control and Status Register B (generic) */ +#define ICNC 7 +#define ICES 6 +#define WGMB3 4 +#define WGMB2 3 +#define CSB2 2 +#define CSB1 1 +#define CSB0 0 + +/* Timer/Counter Control Register C (generic) */ +#define FOCA 7 +#define FOCB 6 +#define FOCC 5 + +/* Port Data Register (generic) */ +#define PORT7 7 +#define PORT6 6 +#define PORT5 5 +#define PORT4 4 +#define PORT3 3 +#define PORT2 2 +#define PORT1 1 +#define PORT0 0 + +/* Port Data Direction Register (generic) */ +#define DD7 7 +#define DD6 6 +#define DD5 5 +#define DD4 4 +#define DD3 3 +#define DD2 2 +#define DD1 1 +#define DD0 0 + +/* Port Input Pins (generic) */ +#define PIN7 7 +#define PIN6 6 +#define PIN5 5 +#define PIN4 4 +#define PIN3 3 +#define PIN2 2 +#define PIN1 1 +#define PIN0 0 + +/* USART Status Register A (generic) */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define UPE 2 +#define U2X 1 +#define MPCM 0 + +/* USART Control Register B (generic) */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ 2 +#define UCSZ2 2 /* new name in datasheet (2467E-AVR-05/02) */ +#define RXB8 1 +#define TXB8 0 + +/* USART Register C (generic) */ +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* End Verbatim */ + +#endif /* _AVR_IOCANXX_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom103.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom103.h new file mode 100644 index 0000000..0401527 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom103.h @@ -0,0 +1,675 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom103.h,v 1.9.4.3 2008/08/14 00:08:00 arcanum Exp $ */ + +/* avr/iom103.h - definitions for ATmega103 */ + +#ifndef _AVR_IOM103_H_ +#define _AVR_IOM103_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom103.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Input Pins, Port F */ +#define PINF _SFR_IO8(0x00) + +/* Input Pins, Port E */ +#define PINE _SFR_IO8(0x01) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x02) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x03) + +/* ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and status register */ +#define ADCSR _SFR_IO8(0x06) + +/* ADC Multiplexer select */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART Baud Rate Register */ +#define UBRR _SFR_IO8(0x09) + +/* UART Control Register */ +#define UCR _SFR_IO8(0x0A) + +/* UART Status Register */ +#define USR _SFR_IO8(0x0B) + +/* UART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Timer2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x23) + +/* Timer/Counter 2 */ +#define TCNT2 _SFR_IO8(0x24) + +/* Timer/Counter 2 Control register */ +#define TCCR2 _SFR_IO8(0x25) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 Asynchronous Control & Status Register */ +#define ASSR _SFR_IO8(0x30) + +/* Output Compare Register 0 */ +#define OCR0 _SFR_IO8(0x31) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x36) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x37) + +/* Èxternal Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x38) + +/* External Interrupt MaSK register */ +#define EIMSK _SFR_IO8(0x39) + +/* External Interrupt Control Register */ +#define EICR _SFR_IO8(0x3A) + +/* RAM Page Z select register */ +#define RAMPZ _SFR_IO8(0x3B) + +/* XDIV Divide control register */ +#define XDIV _SFR_IO8(0x3C) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* External Interrupt 3 */ +#define INT3_vect _VECTOR(4) +#define SIG_INTERRUPT3 _VECTOR(4) + +/* External Interrupt 4 */ +#define INT4_vect _VECTOR(5) +#define SIG_INTERRUPT4 _VECTOR(5) + +/* External Interrupt 5 */ +#define INT5_vect _VECTOR(6) +#define SIG_INTERRUPT5 _VECTOR(6) + +/* External Interrupt 6 */ +#define INT6_vect _VECTOR(7) +#define SIG_INTERRUPT6 _VECTOR(7) + +/* External Interrupt 7 */ +#define INT7_vect _VECTOR(8) +#define SIG_INTERRUPT7 _VECTOR(8) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(9) +#define SIG_OUTPUT_COMPARE2 _VECTOR(9) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(10) +#define SIG_OVERFLOW2 _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) +#define SIG_INPUT_CAPTURE1 _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(14) +#define SIG_OVERFLOW1 _VECTOR(14) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(15) +#define SIG_OUTPUT_COMPARE0 _VECTOR(15) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(16) +#define SIG_OVERFLOW0 _VECTOR(16) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(17) +#define SIG_SPI _VECTOR(17) + +/* UART, Rx Complete */ +#define UART_RX_vect _VECTOR(18) +#define SIG_UART_RECV _VECTOR(18) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(19) +#define SIG_UART_DATA _VECTOR(19) + +/* UART, Tx Complete */ +#define UART_TX_vect _VECTOR(20) +#define SIG_UART_TRANS _VECTOR(20) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(21) +#define SIG_ADC _VECTOR(21) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(22) +#define SIG_EEPROM_READY _VECTOR(22) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(23) +#define SIG_COMPARATOR _VECTOR(23) + +#define _VECTORS_SIZE 96 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* XDIV Divide control register*/ +#define XDIVEN 7 +#define XDIV6 6 +#define XDIV5 5 +#define XDIV4 4 +#define XDIV3 3 +#define XDIV2 2 +#define XDIV1 1 +#define XDIV0 0 + +/* RAM Page Z select register */ +#define RAMPZ0 0 + +/* External Interrupt Control Register */ +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 + +/* External Interrupt MaSK register */ +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +/* Èxternal Interrupt Flag Register */ +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 + +/* Timer/Counter Interrupt MaSK register */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define OCIE0 1 +#define TOIE0 0 + +/* Timer/Counter Interrupt Flag Register */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define OCF0 1 +#define TOV0 0 + +/* MCU general Control Register */ +#define SRE 7 +#define SRW 6 +#define SE 5 +#define SM1 4 +#define SM0 3 + +/* MCU Status Register */ +#define EXTRF 1 +#define PORF 0 + +/* Timer/Counter 0 Control Register */ +#define PWM0 6 +#define COM01 5 +#define COM00 4 +#define CTC0 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 0 Asynchronous Control & Status Register */ +#define AS0 3 +#define TCN0UB 2 +#define OCR0UB 1 +#define TCR0UB 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define PWM11 1 +#define PWM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Timer/Counter 2 Control register */ +#define PWM2 6 +#define COM21 5 +#define COM20 4 +#define CTC2 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Data Register, Port E */ +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Data Direction Register, Port E */ +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* Input Pins, Port E */ +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* Input Pins, Port F */ +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UART Status Register */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 + +/* UART Control Register */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC Control and status register */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADC Multiplexer select */ +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0x0FFF /*Last On-Chip SRAM Location*/ +#define XRAMEND 0xFFFF +#define E2END 0x0FFF +#define E2PAGESIZE 0 +#define FLASHEND 0x1FFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_BODEN (unsigned char)~_BV(6) /* Brown out detector enable */ +#define FUSE_BODLEVEL (unsigned char)~_BV(7) /* Brown out detector trigger level */ +#define LFUSE_DEFAULT (FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IOM103_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom128.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom128.h new file mode 100644 index 0000000..0e2ee6c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom128.h @@ -0,0 +1,1203 @@ +/* Copyright (c) 2002, Peter Jansen + Copyright (c) 2007, Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom128.h,v 1.21.2.5 2008/10/17 23:27:46 arcanum Exp $ */ + +/* avr/iom128.h - defines for ATmega128 + + As of 2002-08-27: + - This should be up to date with data sheet 2467E-AVR-05/02 */ + +#ifndef _AVR_IOM128_H_ +#define _AVR_IOM128_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom128.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Input Pins, Port F */ +#define PINF _SFR_IO8(0x00) + +/* Input Pins, Port E */ +#define PINE _SFR_IO8(0x01) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x02) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x03) + +/* ADC Data Register */ +#define ADCW _SFR_IO16(0x04) /* for backwards compatibility */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and status register */ +#define ADCSR _SFR_IO8(0x06) +#define ADCSRA _SFR_IO8(0x06) /* new name in datasheet (2467E-AVR-05/02) */ + +/* ADC Multiplexer select */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* USART0 Baud Rate Register Low */ +#define UBRR0L _SFR_IO8(0x09) + +/* USART0 Control and Status Register B */ +#define UCSR0B _SFR_IO8(0x0A) + +/* USART0 Control and Status Register A */ +#define UCSR0A _SFR_IO8(0x0B) + +/* USART0 I/O Data Register */ +#define UDR0 _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* Special Function I/O Register */ +#define SFIOR _SFR_IO8(0x20) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* On-chip Debug Register */ +#define OCDR _SFR_IO8(0x22) + +/* Timer2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x23) + +/* Timer/Counter 2 */ +#define TCNT2 _SFR_IO8(0x24) + +/* Timer/Counter 2 Control register */ +#define TCCR2 _SFR_IO8(0x25) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 Asynchronous Control & Status Register */ +#define ASSR _SFR_IO8(0x30) + +/* Output Compare Register 0 */ +#define OCR0 _SFR_IO8(0x31) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) +#define MCUCSR _SFR_IO8(0x34) /* new name in datasheet (2467E-AVR-05/02) */ + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x36) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x37) + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x38) + +/* External Interrupt MaSK register */ +#define EIMSK _SFR_IO8(0x39) + +/* External Interrupt Control Register B */ +#define EICRB _SFR_IO8(0x3A) + +/* RAM Page Z select register */ +#define RAMPZ _SFR_IO8(0x3B) + +/* XDIV Divide control register */ +#define XDIV _SFR_IO8(0x3C) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Extended I/O registers */ + +/* Data Direction Register, Port F */ +#define DDRF _SFR_MEM8(0x61) + +/* Data Register, Port F */ +#define PORTF _SFR_MEM8(0x62) + +/* Input Pins, Port G */ +#define PING _SFR_MEM8(0x63) + +/* Data Direction Register, Port G */ +#define DDRG _SFR_MEM8(0x64) + +/* Data Register, Port G */ +#define PORTG _SFR_MEM8(0x65) + +/* Store Program Memory Control and Status Register */ +#define SPMCR _SFR_MEM8(0x68) +#define SPMCSR _SFR_MEM8(0x68) /* new name in datasheet (2467E-AVR-05/02) */ + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x6A) + +/* External Memory Control Register B */ +#define XMCRB _SFR_MEM8(0x6C) + +/* External Memory Control Register A */ +#define XMCRA _SFR_MEM8(0x6D) + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_MEM8(0x6F) + +/* 2-wire Serial Interface Bit Rate Register */ +#define TWBR _SFR_MEM8(0x70) + +/* 2-wire Serial Interface Status Register */ +#define TWSR _SFR_MEM8(0x71) + +/* 2-wire Serial Interface Address Register */ +#define TWAR _SFR_MEM8(0x72) + +/* 2-wire Serial Interface Data Register */ +#define TWDR _SFR_MEM8(0x73) + +/* 2-wire Serial Interface Control Register */ +#define TWCR _SFR_MEM8(0x74) + +/* Time Counter 1 Output Compare Register C */ +#define OCR1C _SFR_MEM16(0x78) +#define OCR1CL _SFR_MEM8(0x78) +#define OCR1CH _SFR_MEM8(0x79) + +/* Timer/Counter 1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x7A) + +/* Extended Timer Interrupt Flag Register */ +#define ETIFR _SFR_MEM8(0x7C) + +/* Extended Timer Interrupt Mask Register */ +#define ETIMSK _SFR_MEM8(0x7D) + +/* Timer/Counter 3 Input Capture Register */ +#define ICR3 _SFR_MEM16(0x80) +#define ICR3L _SFR_MEM8(0x80) +#define ICR3H _SFR_MEM8(0x81) + +/* Timer/Counter 3 Output Compare Register C */ +#define OCR3C _SFR_MEM16(0x82) +#define OCR3CL _SFR_MEM8(0x82) +#define OCR3CH _SFR_MEM8(0x83) + +/* Timer/Counter 3 Output Compare Register B */ +#define OCR3B _SFR_MEM16(0x84) +#define OCR3BL _SFR_MEM8(0x84) +#define OCR3BH _SFR_MEM8(0x85) + +/* Timer/Counter 3 Output Compare Register A */ +#define OCR3A _SFR_MEM16(0x86) +#define OCR3AL _SFR_MEM8(0x86) +#define OCR3AH _SFR_MEM8(0x87) + +/* Timer/Counter 3 Counter Register */ +#define TCNT3 _SFR_MEM16(0x88) +#define TCNT3L _SFR_MEM8(0x88) +#define TCNT3H _SFR_MEM8(0x89) + +/* Timer/Counter 3 Control Register B */ +#define TCCR3B _SFR_MEM8(0x8A) + +/* Timer/Counter 3 Control Register A */ +#define TCCR3A _SFR_MEM8(0x8B) + +/* Timer/Counter 3 Control Register C */ +#define TCCR3C _SFR_MEM8(0x8C) + +/* USART0 Baud Rate Register High */ +#define UBRR0H _SFR_MEM8(0x90) + +/* USART0 Control and Status Register C */ +#define UCSR0C _SFR_MEM8(0x95) + +/* USART1 Baud Rate Register High */ +#define UBRR1H _SFR_MEM8(0x98) + +/* USART1 Baud Rate Register Low*/ +#define UBRR1L _SFR_MEM8(0x99) + +/* USART1 Control and Status Register B */ +#define UCSR1B _SFR_MEM8(0x9A) + +/* USART1 Control and Status Register A */ +#define UCSR1A _SFR_MEM8(0x9B) + +/* USART1 I/O Data Register */ +#define UDR1 _SFR_MEM8(0x9C) + +/* USART1 Control and Status Register C */ +#define UCSR1C _SFR_MEM8(0x9D) + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(4) +#define SIG_INTERRUPT3 _VECTOR(4) + +/* External Interrupt Request 4 */ +#define INT4_vect _VECTOR(5) +#define SIG_INTERRUPT4 _VECTOR(5) + +/* External Interrupt Request 5 */ +#define INT5_vect _VECTOR(6) +#define SIG_INTERRUPT5 _VECTOR(6) + +/* External Interrupt Request 6 */ +#define INT6_vect _VECTOR(7) +#define SIG_INTERRUPT6 _VECTOR(7) + +/* External Interrupt Request 7 */ +#define INT7_vect _VECTOR(8) +#define SIG_INTERRUPT7 _VECTOR(8) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(9) +#define SIG_OUTPUT_COMPARE2 _VECTOR(9) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(10) +#define SIG_OVERFLOW2 _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) +#define SIG_INPUT_CAPTURE1 _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(14) +#define SIG_OVERFLOW1 _VECTOR(14) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(15) +#define SIG_OUTPUT_COMPARE0 _VECTOR(15) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(16) +#define SIG_OVERFLOW0 _VECTOR(16) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(17) +#define SIG_SPI _VECTOR(17) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(18) +#define SIG_USART0_RECV _VECTOR(18) +#define SIG_UART0_RECV _VECTOR(18) + +/* USART0 Data Register Empty */ +#define USART0_UDRE_vect _VECTOR(19) +#define SIG_USART0_DATA _VECTOR(19) +#define SIG_UART0_DATA _VECTOR(19) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(20) +#define SIG_USART0_TRANS _VECTOR(20) +#define SIG_UART0_TRANS _VECTOR(20) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(21) +#define SIG_ADC _VECTOR(21) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(22) +#define SIG_EEPROM_READY _VECTOR(22) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(23) +#define SIG_COMPARATOR _VECTOR(23) + +/* Timer/Counter1 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(24) +#define SIG_OUTPUT_COMPARE1C _VECTOR(24) + +/* Timer/Counter3 Capture Event */ +#define TIMER3_CAPT_vect _VECTOR(25) +#define SIG_INPUT_CAPTURE3 _VECTOR(25) + +/* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPA_vect _VECTOR(26) +#define SIG_OUTPUT_COMPARE3A _VECTOR(26) + +/* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPB_vect _VECTOR(27) +#define SIG_OUTPUT_COMPARE3B _VECTOR(27) + +/* Timer/Counter3 Compare Match C */ +#define TIMER3_COMPC_vect _VECTOR(28) +#define SIG_OUTPUT_COMPARE3C _VECTOR(28) + +/* Timer/Counter3 Overflow */ +#define TIMER3_OVF_vect _VECTOR(29) +#define SIG_OVERFLOW3 _VECTOR(29) + +/* USART1, Rx Complete */ +#define USART1_RX_vect _VECTOR(30) +#define SIG_USART1_RECV _VECTOR(30) +#define SIG_UART1_RECV _VECTOR(30) + +/* USART1, Data Register Empty */ +#define USART1_UDRE_vect _VECTOR(31) +#define SIG_USART1_DATA _VECTOR(31) +#define SIG_UART1_DATA _VECTOR(31) + +/* USART1, Tx Complete */ +#define USART1_TX_vect _VECTOR(32) +#define SIG_USART1_TRANS _VECTOR(32) +#define SIG_UART1_TRANS _VECTOR(32) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(33) +#define SIG_2WIRE_SERIAL _VECTOR(33) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(34) +#define SIG_SPM_READY _VECTOR(34) + +#define _VECTORS_SIZE 140 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* 2-wire Control Register - TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +/* 2-wire Address Register - TWAR */ +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +/* 2-wire Status Register - TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +/* External Memory Control Register A - XMCRA */ +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW01 3 +#define SRW00 2 +#define SRW11 1 + +/* External Memory Control Register B - XMCRA */ +#define XMBK 7 +#define XMM2 2 +#define XMM1 1 +#define XMM0 0 + +/* XDIV Divide control register - XDIV */ +#define XDIVEN 7 +#define XDIV6 6 +#define XDIV5 5 +#define XDIV4 4 +#define XDIV3 3 +#define XDIV2 2 +#define XDIV1 1 +#define XDIV0 0 + +/* RAM Page Z select register - RAMPZ */ +#define RAMPZ0 0 + +/* External Interrupt Control Register A - EICRA */ +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* External Interrupt Control Register B - EICRB */ +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 + +/* Store Program Memory Control Register - SPMCSR, SPMCR */ +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* External Interrupt MaSK register - EIMSK */ +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +/* External Interrupt Flag Register - EIFR */ +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +/* Timer/Counter Interrupt MaSK register - TIMSK */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define OCIE0 1 +#define TOIE0 0 + +/* Timer/Counter Interrupt Flag Register - TIFR */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define OCF0 1 +#define TOV0 0 + +/* Extended Timer Interrupt MaSK register - ETIMSK */ +#define TICIE3 5 +#define OCIE3A 4 +#define OCIE3B 3 +#define TOIE3 2 +#define OCIE3C 1 +#define OCIE1C 0 + +/* Extended Timer Interrupt Flag Register - ETIFR */ +#define ICF3 5 +#define OCF3A 4 +#define OCF3B 3 +#define TOV3 2 +#define OCF3C 1 +#define OCF1C 0 + +/* MCU general Control Register - MCUCR */ +#define SRE 7 +#define SRW 6 +#define SRW10 6 /* new name in datasheet (2467E-AVR-05/02) */ +#define SE 5 +#define SM1 4 +#define SM0 3 +#define SM2 2 +#define IVSEL 1 +#define IVCE 0 + +/* MCU Status Register - MCUSR, MCUCSR */ +#define JTD 7 +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* Timer/Counter Control Register (generic) */ +#define FOC 7 +#define WGM0 6 +#define COM1 5 +#define COM0 4 +#define WGM1 3 +#define CS2 2 +#define CS1 1 +#define CS0 0 + +/* Timer/Counter 0 Control Register - TCCR0 */ +#define FOC0 7 +#define WGM00 6 +#define COM01 5 +#define COM00 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 2 Control Register - TCCR2 */ +#define FOC2 7 +#define WGM20 6 +#define COM21 5 +#define COM20 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* Timer/Counter 0 Asynchronous Control & Status Register - ASSR */ +#define AS0 3 +#define TCN0UB 2 +#define OCR0UB 1 +#define TCR0UB 0 + +/* Timer/Counter Control Register A (generic) */ +#define COMA1 7 +#define COMA0 6 +#define COMB1 5 +#define COMB0 4 +#define COMC1 3 +#define COMC0 2 +#define WGMA1 1 +#define WGMA0 0 + +/* Timer/Counter 1 Control and Status Register A - TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define COM1C1 3 +#define COM1C0 2 +#define WGM11 1 +#define WGM10 0 + +/* Timer/Counter 3 Control and Status Register A - TCCR3A */ +#define COM3A1 7 +#define COM3A0 6 +#define COM3B1 5 +#define COM3B0 4 +#define COM3C1 3 +#define COM3C0 2 +#define WGM31 1 +#define WGM30 0 + +/* Timer/Counter Control and Status Register B (generic) */ +#define ICNC 7 +#define ICES 6 +#define WGMB3 4 +#define WGMB2 3 +#define CSB2 2 +#define CSB1 1 +#define CSB0 0 + +/* Timer/Counter 1 Control and Status Register B - TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Timer/Counter 3 Control and Status Register B - TCCR3B */ +#define ICNC3 7 +#define ICES3 6 +#define WGM33 4 +#define WGM32 3 +#define CS32 2 +#define CS31 1 +#define CS30 0 + +/* Timer/Counter Control Register C (generic) */ +#define FOCA 7 +#define FOCB 6 +#define FOCC 5 + +/* Timer/Counter 3 Control Register C - TCCR3C */ +#define FOC3A 7 +#define FOC3B 6 +#define FOC3C 5 + +/* Timer/Counter 1 Control Register C - TCCR1C */ +#define FOC1A 7 +#define FOC1B 6 +#define FOC1C 5 + +/* On-chip Debug Register - OCDR */ +#define IDRD 7 +#define OCDR7 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 + +/* Watchdog Timer Control Register - WDTCR */ +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven + to be fast enough even without feeding it more power. +*/ + +/* Special Function I/O Register - SFIOR */ +#define TSM 7 +#define ACME 3 +#define PUD 2 +#define PSR0 1 +#define PSR321 0 + +/* SPI Status Register - SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPI Control Register - SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* USART Register C (generic) */ +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* USART1 Register C - UCSR1C */ +#define UMSEL1 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 + +/* USART0 Register C - UCSR0C */ +#define UMSEL0 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPOL0 0 + +/* USART Status Register A (generic) */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define UPE 2 +#define U2X 1 +#define MPCM 0 + +/* USART1 Status Register A - UCSR1A */ +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + +/* USART0 Status Register A - UCSR0A */ +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + +/* USART Control Register B (generic) */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ 2 +#define UCSZ2 2 /* new name in datasheet (2467E-AVR-05/02) */ +#define RXB8 1 +#define TXB8 0 + +/* USART1 Control Register B - UCSR1B */ +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + +/* USART0 Control Register B - UCSR0B */ +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + +/* Analog Comparator Control and Status Register - ACSR */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC Control and status register - ADCSRA */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADC Multiplexer select - ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* Port A Data Register - PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Port A Data Direction Register - DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Port A Input Pins - PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Port B Data Register - PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Port B Data Direction Register - DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Port B Input Pins - PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Port C Data Register - PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Port C Data Direction Register - DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Port C Input Pins - PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Port D Data Register - PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Port D Data Direction Register - DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Port D Input Pins - PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Port E Data Register - PORTE */ +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Port E Data Direction Register - DDRE */ +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* Port E Input Pins - PINE */ +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* Port F Data Register - PORTF */ +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +/* Port F Data Direction Register - DDRF */ +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +/* Port F Input Pins - PINF */ +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +/* Port G Data Register - PORTG */ +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +/* Port G Data Direction Register - DDRG */ +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +/* Port G Input Pins - PING */ +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0x0FFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_CKOPT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_WDTON (unsigned char)~_BV(0) +#define FUSE_M103C (unsigned char)~_BV(1) +#define EFUSE_DEFAULT (FUSE_M103C) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x02 + + +#endif /* _AVR_IOM128_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1280.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1280.h new file mode 100644 index 0000000..855dd47 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1280.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2005 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom1280.h,v 1.2.2.5 2008/10/17 23:27:46 arcanum Exp $ */ + +/* avr/iom1280.h - definitions for ATmega1280 */ + +#ifndef _AVR_IOM1280_H_ +#define _AVR_IOM1280_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x21FF +#define XRAMEND 0xFFFF +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IOM1280_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1281.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1281.h new file mode 100644 index 0000000..273fc53 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1281.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2005 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom1281.h,v 1.2.2.5 2008/10/17 23:27:47 arcanum Exp $ */ + +/* avr/iom1281.h - definitions for ATmega1281 */ + +#ifndef _AVR_IOM1281_H_ +#define _AVR_IOM1281_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x21FF +#define XRAMEND 0xFFFF +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x04 + + +#endif /* _AVR_IOM1281_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1284p.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1284p.h new file mode 100644 index 0000000..ae3671d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom1284p.h @@ -0,0 +1,1132 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom1284p.h,v 1.2.2.11 2008/10/17 23:27:47 arcanum Exp $ */ + +/* avr/iom1284p.h - definitions for ATmega1284P. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom1284p.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM1284P_H_ +#define _AVR_IOM1284P_H_ 1 + + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x01) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x02) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 +#define PORTA4 4 +#define PORTA5 5 +#define PORTA6 6 +#define PORTA7 7 + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define TIFR3 _SFR_IO8(0x18) +#define TOV3 0 +#define OCF3A 1 +#define OCF3B 2 +#define ICF3 5 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 +#define PCIF3 3 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define BODSE 5 +#define BODS 6 +#define JTD 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define SIGRD 5 +#define RWWSB 6 +#define SPMIE 7 + +#define RAMPZ _SFR_IO8(0x3B) +#define RAMPZ0 0 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR0 _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRUSART1 4 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define PRR1 _SFR_MEM8(0x65) +#define PRTIM3 0 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 +#define PCIE3 3 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#define TIMSK3 _SFR_MEM8(0x71) +#define TOIE3 0 +#define OCIE3A 1 +#define OCIE3B 2 +#define ICIE3 5 + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 +#define PCINT31 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define TCCR3A _SFR_MEM8(0x90) +#define WGM30 0 +#define WGM31 1 +#define COM3B0 4 +#define COM3B1 5 +#define COM3A0 6 +#define COM3A1 7 + +#define TCCR3B _SFR_MEM8(0x91) +#define CS30 0 +#define CS31 1 +#define CS32 2 +#define WGM32 3 +#define WGM33 4 +#define ICES3 6 +#define ICNC3 7 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3B 6 +#define FOC3A 7 + +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3L0 0 +#define TCNT3L1 1 +#define TCNT3L2 2 +#define TCNT3L3 3 +#define TCNT3L4 4 +#define TCNT3L5 5 +#define TCNT3L6 6 +#define TCNT3L7 7 + +#define TCNT3H _SFR_MEM8(0x95) +#define TCNT3H0 0 +#define TCNT3H1 1 +#define TCNT3H2 2 +#define TCNT3H3 3 +#define TCNT3H4 4 +#define TCNT3H5 5 +#define TCNT3H6 6 +#define TCNT3H7 7 + +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3L0 0 +#define ICR3L1 1 +#define ICR3L2 2 +#define ICR3L3 3 +#define ICR3L4 4 +#define ICR3L5 5 +#define ICR3L6 6 +#define ICR3L7 7 + +#define ICR3H _SFR_MEM8(0x97) +#define ICR3H0 0 +#define ICR3H1 1 +#define ICR3H2 2 +#define ICR3H3 3 +#define ICR3H4 4 +#define ICR3H5 5 +#define ICR3H6 6 +#define ICR3H7 7 + +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3AH _SFR_MEM8(0x99) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3BH _SFR_MEM8(0x9B) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 1 +#define TWAM1 2 +#define TWAM2 3 +#define TWAM3 4 +#define TWAM4 5 +#define TWAM5 6 +#define TWAM6 7 + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0xC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0xC5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0xC6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + +#define UCSR1A _SFR_MEM8(0xC8) +#define MPCM1 0 +#define U2X1 1 +#define UPE1 2 +#define DOR1 3 +#define FE1 4 +#define UDRE1 5 +#define TXC1 6 +#define RXC1 7 + +#define UCSR1B _SFR_MEM8(0xC9) +#define TXB81 0 +#define RXB81 1 +#define UCSZ12 2 +#define TXEN1 3 +#define RXEN1 4 +#define UDRIE1 5 +#define TXCIE1 6 +#define RXCIE1 7 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UCPOL1 0 +#define UCSZ10 1 +#define UCSZ11 2 +#define USBS1 3 +#define UPM10 4 +#define UPM11 5 +#define UMSEL10 6 +#define UMSEL11 7 + +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1_0 0 +#define UBRR1_1 1 +#define UBRR1_2 2 +#define UBRR1_3 3 +#define UBRR1_4 4 +#define UBRR1_5 5 +#define UBRR1_6 6 +#define UBRR1_7 7 + +#define UBRR1H _SFR_MEM8(0xCD) +#define UBRR1_8 0 +#define UBRR1_9 1 +#define UBRR1_10 2 +#define UBRR1_11 3 + +#define UDR1 _SFR_MEM8(0xCE) +#define UDR1_0 0 +#define UDR1_1 1 +#define UDR1_2 2 +#define UDR1_3 3 +#define UDR1_4 4 +#define UDR1_5 5 +#define UDR1_6 6 +#define UDR1_7 7 + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ + +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define INT2_vect _VECTOR(3) /* External Interrupt Request 2 */ +#define PCINT0_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */ +#define PCINT2_vect _VECTOR(6) /* Pin Change Interrupt Request 2 */ +#define PCINT3_vect _VECTOR(7) /* Pin Change Interrupt Request 3 */ +#define WDT_vect _VECTOR(8) /* Watchdog Time-out Interrupt */ +#define TIMER2_COMPA_vect _VECTOR(9) /* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect _VECTOR(10) /* Timer/Counter2 Compare Match B */ +#define TIMER2_OVF_vect _VECTOR(11) /* Timer/Counter2 Overflow */ +#define TIMER1_CAPT_vect _VECTOR(12) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(13) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(14) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(15) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(16) /* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(17) /* Timer/Counter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(18) /* Timer/Counter0 Overflow */ +#define SPI_STC_vect _VECTOR(19) /* SPI Serial Transfer Complete */ +#define USART0_RX_vect _VECTOR(20) /* USART0, Rx Complete */ +#define USART0_UDRE_vect _VECTOR(21) /* USART0 Data register Empty */ +#define USART0_TX_vect _VECTOR(22) /* USART0, Tx Complete */ +#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */ +#define ADC_vect _VECTOR(24) /* ADC Conversion Complete */ +#define EE_READY_vect _VECTOR(25) /* EEPROM Ready */ +#define TWI_vect _VECTOR(26) /* 2-wire Serial Interface */ +#define SPM_READY_vect _VECTOR(27) /* Store Program Memory Read */ +#define USART1_RX_vect _VECTOR(28) /* USART1 RX complete */ +#define USART1_UDRE_vect _VECTOR(29) /* USART1 Data Register Empty */ +#define USART1_TX_vect _VECTOR(30) /* USART1 TX complete */ +#define TIMER3_CAPT_vect _VECTOR(31) /* Timer/Counter3 Capture Event */ +#define TIMER3_COMPA_vect _VECTOR(32) /* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPB_vect _VECTOR(33) /* Timer/Counter3 Compare Match B */ +#define TIMER3_OVF_vect _VECTOR(34) /* Timer/Counter3 Overflow */ + +#define _VECTORS_SIZE (35 * 4) + + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x40FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */ +#define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */ +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x05 + + +#endif /* _AVR_IOM1284P_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom16.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom16.h new file mode 100644 index 0000000..70b47eb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom16.h @@ -0,0 +1,614 @@ +/* Copyright (c) 2004 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom16.h,v 1.14.2.5 2008/10/17 23:27:47 arcanum Exp $ */ + +/* avr/iom16.h - definitions for ATmega16 */ + +#ifndef _AVR_IOM16_H_ +#define _AVR_IOM16_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom16.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define TWBR _SFR_IO8(0x00) + +#define TWSR _SFR_IO8(0x01) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_IO8(0x02) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_IO8(0x03) + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +#define ADCSRA _SFR_IO8(0x06) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADMUX _SFR_IO8(0x07) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define ACSR _SFR_IO8(0x08) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define UBRRL _SFR_IO8(0x09) + +#define UCSRB _SFR_IO8(0x0A) +#define TXB8 0 +#define RXB8 1 +#define UCSZ2 2 +#define TXEN 3 +#define RXEN 4 +#define UDRIE 5 +#define TXCIE 6 +#define RXCIE 7 + +#define UCSRA _SFR_IO8(0x0B) +#define MPCM 0 +#define U2X 1 +#define PE 2 +#define DOR 3 +#define FE 4 +#define UDRE 5 +#define TXC 6 +#define RXC 7 + +#define UDR _SFR_IO8(0x0C) + +#define SPCR _SFR_IO8(0x0D) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x0E) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x0F) + +#define PIND _SFR_IO8(0x10) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x11) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x12) +#define PD0 0 +#define PD1 1 +#define PD2 2 +#define PD3 3 +#define PD4 4 +#define PD5 5 +#define PD6 6 +#define PD7 7 + +#define PINC _SFR_IO8(0x13) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x14) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x15) +#define PC0 0 +#define PC1 1 +#define PC2 2 +#define PC3 3 +#define PC4 4 +#define PC5 5 +#define PC6 6 +#define PC7 7 + +#define PINB _SFR_IO8(0x16) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x17) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x18) +#define PB0 0 +#define PB1 1 +#define PB2 2 +#define PB3 3 +#define PB4 4 +#define PB5 5 +#define PB6 6 +#define PB7 7 + +#define PINA _SFR_IO8(0x19) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x1A) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x1B) +#define PA0 0 +#define PA1 1 +#define PA2 2 +#define PA3 3 +#define PA4 4 +#define PA5 5 +#define PA6 6 +#define PA7 7 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define UCSRC _SFR_IO8(0x20) +#define UCPOL 0 +#define UCSZ0 1 +#define UCSZ1 2 +#define USBS 3 +#define UPM0 4 +#define UPM1 5 +#define UMSEL 6 +#define URSEL 7 + +#define UBRRH _SFR_IO8(0x20) +#define URSEL 7 + +#define WDTCR _SFR_IO8(0x21) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDTOE 4 + +#define ASSR _SFR_IO8(0x22) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 + +#define OCR2 _SFR_IO8(0x23) + +#define TCNT2 _SFR_IO8(0x24) + +#define TCCR2 _SFR_IO8(0x25) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM20 4 +#define COM21 5 +#define WGM20 6 +#define FOC2 7 + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_IO16(0x26) + +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_IO16(0x28) + +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_IO16(0x2A) + +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_IO16(0x2C) + +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +#define TCCR1B _SFR_IO8(0x2E) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1A _SFR_IO8(0x2F) +#define WGM10 0 +#define WGM11 1 +#define FOC1B 2 +#define FOC1A 3 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven + to be fast enough even without feeding it more power. +*/ + +#define SFIOR _SFR_IO8(0x30) +#define PSR10 0 +#define PSR2 1 +#define PUD 2 +#define ACME 3 +#define ADTS0 5 +#define ADTS1 6 +#define ADTS2 7 + +#define OSCCAL _SFR_IO8(0x31) + +#define OCDR _SFR_IO8(0x31) + +#define TCNT0 _SFR_IO8(0x32) + +#define TCCR0 _SFR_IO8(0x33) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM00 4 +#define COM01 5 +#define WGM00 6 +#define FOC0 7 + +#define MCUCSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 +#define ISC2 6 +#define JTD 7 + +#define MCUCR _SFR_IO8(0x35) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define SM0 4 +#define SM1 5 +#define SE 6 +#define SM2 7 + +#define TWCR _SFR_IO8(0x36) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define SPMCR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define TIFR _SFR_IO8(0x38) +#define TOV0 0 +#define OCF0 1 +#define TOV1 2 +#define OCF1B 3 +#define OCF1A 4 +#define ICF1 5 +#define TOV2 6 +#define OCF2 7 + +#define TIMSK _SFR_IO8(0x39) +#define TOIE0 0 +#define OCIE0 1 +#define TOIE1 2 +#define OCIE1B 3 +#define OCIE1A 4 +#define TICIE1 5 +#define TOIE2 6 +#define OCIE2 7 + +#define GIFR _SFR_IO8(0x3A) +#define INTF2 5 +#define INTF0 6 +#define INTF1 7 + +#define GICR _SFR_IO8(0x3B) +#define IVCE 0 +#define IVSEL 1 +#define INT2 5 +#define INT0 6 +#define INT1 7 + +#define OCR0 _SFR_IO8(0x3C) + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector. */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE2 _VECTOR(3) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW2 _VECTOR(4) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(5) +#define SIG_INPUT_CAPTURE1 _VECTOR(5) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE1A _VECTOR(6) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1B _VECTOR(7) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(8) +#define SIG_OVERFLOW1 _VECTOR(8) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW0 _VECTOR(9) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(10) +#define SIG_SPI _VECTOR(10) + +/* USART, Rx Complete */ +#define USART_RXC_vect _VECTOR(11) +#define SIG_USART_RECV _VECTOR(11) +#define SIG_UART_RECV _VECTOR(11) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(12) +#define SIG_USART_DATA _VECTOR(12) +#define SIG_UART_DATA _VECTOR(12) + +/* USART, Tx Complete */ +#define USART_TXC_vect _VECTOR(13) +#define SIG_USART_TRANS _VECTOR(13) +#define SIG_UART_TRANS _VECTOR(13) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(14) +#define SIG_ADC _VECTOR(14) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(15) +#define SIG_EEPROM_READY _VECTOR(15) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(16) +#define SIG_COMPARATOR _VECTOR(16) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(17) +#define SIG_2WIRE_SERIAL _VECTOR(17) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(18) +#define SIG_INTERRUPT2 _VECTOR(18) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(19) +#define SIG_OUTPUT_COMPARE0 _VECTOR(19) + +/* Store Program Memory Ready */ +#define SPM_RDY_vect _VECTOR(20) +#define SIG_SPM_READY _VECTOR(20) + +#define _VECTORS_SIZE 84 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x45F +#define XRAMEND 0x45F +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_CKOPT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IOM16_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom161.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom161.h new file mode 100644 index 0000000..118651c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom161.h @@ -0,0 +1,673 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom161.h,v 1.10.2.5 2008/10/17 23:27:47 arcanum Exp $ */ + +/* avr/iom161.h - definitions for ATmega161 */ + +#ifndef _AVR_IOM161_H_ +#define _AVR_IOM161_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom161.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* UART1 Baud Rate Register */ +#define UBRR1 _SFR_IO8(0x00) + +/* UART1 Control and Status Registers */ +#define UCSR1B _SFR_IO8(0x01) +#define UCSR1A _SFR_IO8(0x02) + +/* UART1 I/O Data Register */ +#define UDR1 _SFR_IO8(0x03) + +/* 0x04 reserved */ + +/* Input Pins, Port E */ +#define PINE _SFR_IO8(0x05) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x06) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* UART0 Baud Rate Register */ +#define UBRR0 _SFR_IO8(0x09) + +/* UART0 Control and Status Registers */ +#define UCSR0B _SFR_IO8(0x0A) +#define UCSR0A _SFR_IO8(0x0B) + +/* UART0 I/O Data Register */ +#define UDR0 _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* UART Baud Register HIgh */ +#define UBRRH _SFR_IO8(0x20) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Timer/Counter2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x22) + +/* Timer/Counter2 (8-bit) */ +#define TCNT2 _SFR_IO8(0x23) + +/* Timer/Counter1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* ASynchronous mode Status Register */ +#define ASSR _SFR_IO8(0x26) + +/* Timer/Counter2 Control Register */ +#define TCCR2 _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare RegisterB */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare RegisterA */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Special Function IO Register */ +#define SFIOR _SFR_IO8(0x30) + +/* Timer/Counter0 Output Compare Register */ +#define OCR0 _SFR_IO8(0x31) + +/* Timer/Counter0 (8-bit) */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Extended MCU general Control Register */ +#define EMCUCR _SFR_IO8(0x36) + +/* Store Program Memory Control Register */ +#define SPMCR _SFR_IO8(0x37) + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK Register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C reserved */ + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* UART0, Rx Complete */ +#define UART0_RX_vect _VECTOR(13) +#define SIG_UART0_RECV _VECTOR(13) + +/* UART1, Rx Complete */ +#define UART1_RX_vect _VECTOR(14) +#define SIG_UART1_RECV _VECTOR(14) + +/* UART0 Data Register Empty */ +#define UART0_UDRE_vect _VECTOR(15) +#define SIG_UART0_DATA _VECTOR(15) + +/* UART1 Data Register Empty */ +#define UART1_UDRE_vect _VECTOR(16) +#define SIG_UART1_DATA _VECTOR(16) + +/* UART0, Tx Complete */ +#define UART0_TX_vect _VECTOR(17) +#define SIG_UART0_TRANS _VECTOR(17) + +/* UART1, Tx Complete */ +#define UART1_TX_vect _VECTOR(18) +#define SIG_UART1_TRANS _VECTOR(18) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(19) +#define SIG_EEPROM_READY _VECTOR(19) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(20) +#define SIG_COMPARATOR _VECTOR(20) + +#define _VECTORS_SIZE 84 + +/* Bit numbers */ + +/* GIMSK */ +#define INT1 7 +#define INT0 6 +#define INT2 5 + +/* GIFR */ +#define INTF1 7 +#define INTF0 6 +#define INTF2 5 + +/* TIMSK */ +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +#define TOIE2 4 +#define TICIE1 3 +#define OCIE2 2 +#define TOIE0 1 +#define OCIE0 0 + +/* TIFR */ +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +#define TOV2 4 +#define ICF1 3 +#define OCF2 2 +#define TOV0 1 +#define OCF0 0 + +/* MCUCR */ +#define SRE 7 +#define SRW10 6 +#define SE 5 +#define SM1 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* EMCUCR */ +#define SM0 7 +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW01 3 +#define SRW00 2 +#define SRW11 1 +#define ISC2 0 + +/* SPMCR */ +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* SFIOR */ +#define PSR2 1 +#define PSR10 0 + +/* TCCR0 */ +#define FOC0 7 +#define PWM0 6 +#define COM01 5 +#define COM00 4 +#define CTC0 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR2 */ +#define FOC2 7 +#define PWM2 6 +#define COM21 5 +#define COM20 4 +#define CTC2 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* ASSR */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define PWM11 1 +#define PWM10 0 + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* + PB7 = SCK + PB6 = MISO + PB5 = MOSI + PB4 = SS# + PB3 = TXD1 / AIN1 + PB2 = RXD1 / AIN0 + PB1 = OC2 / T1 + PB0 = OC0 / T0 + */ + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* + PD7 = RD# + PD6 = WR# + PD5 = TOSC2 / OC1A + PD4 = TOSC1 + PD3 = INT1 + PD2 = INT0 + PD1 = TXD0 + PD0 = RXD0 + */ + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* + PE2 = ALE + PE1 = OC1B + PE0 = ICP / INT2 + */ + +/* PORTE */ +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* DDRE */ +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* PINE */ +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UCSR0A, UCSR1A */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define U2X 1 +#define MPCM 0 + +/* UCSR0B, UCSR1B */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* ACSR */ +#define ACD 7 +#define AINBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x45F +#define XRAMEND 0xFFFF +#define E2END 0x1FF +#define E2PAGESIZE 0 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_SUT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_BOOTRST (unsigned char)~_BV(6) +#define FUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IOM161_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom162.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom162.h new file mode 100644 index 0000000..12726b5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom162.h @@ -0,0 +1,951 @@ +/* Copyright (c) 2002, Nils Kristian Strom + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom162.h,v 1.13.2.5 2008/10/17 23:27:47 arcanum Exp $ */ + +/* iom162.h - definitions for ATmega162 */ + +#ifndef _AVR_IOM162_H_ +#define _AVR_IOM162_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom162.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Memory mapped I/O registers */ + +/* Timer/Counter3 Control Register A */ +#define TCCR3A _SFR_MEM8(0x8B) + +/* Timer/Counter3 Control Register B */ +#define TCCR3B _SFR_MEM8(0x8A) + +/* Timer/Counter3 - Counter Register */ +#define TCNT3H _SFR_MEM8(0x89) +#define TCNT3L _SFR_MEM8(0x88) +#define TCNT3 _SFR_MEM16(0x88) + +/* Timer/Counter3 - Output Compare Register A */ +#define OCR3AH _SFR_MEM8(0x87) +#define OCR3AL _SFR_MEM8(0x86) +#define OCR3A _SFR_MEM16(0x86) + +/* Timer/Counter3 - Output Compare Register B */ +#define OCR3BH _SFR_MEM8(0x85) +#define OCR3BL _SFR_MEM8(0x84) +#define OCR3B _SFR_MEM16(0x84) + +/* Timer/Counter3 - Input Capture Register */ +#define ICR3H _SFR_MEM8(0x81) +#define ICR3L _SFR_MEM8(0x80) +#define ICR3 _SFR_MEM16(0x80) + +/* Extended Timer/Counter Interrupt Mask */ +#define ETIMSK _SFR_MEM8(0x7D) + +/* Extended Timer/Counter Interrupt Flag Register */ +#define ETIFR _SFR_MEM8(0x7C) + +/* Pin Change Mask Register 1 */ +#define PCMSK1 _SFR_MEM8(0x6C) + +/* Pin Change Mask Register 0 */ +#define PCMSK0 _SFR_MEM8(0x6B) + +/* Clock PRescale */ +#define CLKPR _SFR_MEM8(0x61) + + +/* Standard I/O registers */ + +/* 0x3F SREG */ +/* 0x3D..0x3E SP */ +#define UBRR1H _SFR_IO8(0x3C) /* USART 1 Baud Rate Register High Byte, Shared with UCSR1C */ +#define UCSR1C _SFR_IO8(0x3C) /* USART 1 Control and Status Register, Shared with UBRR1H */ +#define GICR _SFR_IO8(0x3B) /* General Interrupt Control Register */ +#define GIFR _SFR_IO8(0x3A) /* General Interrupt Flag Register */ +#define TIMSK _SFR_IO8(0x39) /* Timer Interrupt Mask */ +#define TIFR _SFR_IO8(0x38) /* Timer Interrupt Flag Register */ +#define SPMCR _SFR_IO8(0x37) /* Store Program Memory Control Register */ +#define EMCUCR _SFR_IO8(0x36) /* Extended MCU Control Register */ +#define MCUCR _SFR_IO8(0x35) /* MCU Control Register */ +#define MCUCSR _SFR_IO8(0x34) /* MCU Control and Status Register */ +#define TCCR0 _SFR_IO8(0x33) /* Timer/Counter 0 Control Register */ +#define TCNT0 _SFR_IO8(0x32) /* TImer/Counter 0 */ +#define OCR0 _SFR_IO8(0x31) /* Output Compare Register 0 */ +#define SFIOR _SFR_IO8(0x30) /* Special Function I/O Register */ +#define TCCR1A _SFR_IO8(0x2F) /* Timer/Counter 1 Control Register A */ +#define TCCR1B _SFR_IO8(0x2E) /* Timer/Counter 1 Control Register A */ +#define TCNT1H _SFR_IO8(0x2D) /* Timer/Counter 1 High Byte */ +#define TCNT1L _SFR_IO8(0x2C) /* Timer/Counter 1 Low Byte */ +#define TCNT1 _SFR_IO16(0x2C) /* Timer/Counter 1 */ +#define OCR1AH _SFR_IO8(0x2B) /* Timer/Counter 1 Output Compare Register A High Byte */ +#define OCR1AL _SFR_IO8(0x2A) /* Timer/Counter 1 Output Compare Register A Low Byte */ +#define OCR1A _SFR_IO16(0x2A) /* Timer/Counter 1 Output Compare Register A */ +#define OCR1BH _SFR_IO8(0x29) /* Timer/Counter 1 Output Compare Register B High Byte */ +#define OCR1BL _SFR_IO8(0x28) /* Timer/Counter 1 Output Compare Register B Low Byte */ +#define OCR1B _SFR_IO16(0x28) /* Timer/Counter 1 Output Compare Register B */ +#define TCCR2 _SFR_IO8(0x27) /* Timer/Counter 2 Control Register */ +#define ASSR _SFR_IO8(0x26) /* Asynchronous Status Register */ +#define ICR1H _SFR_IO8(0x25) /* Input Capture Register 1 High Byte */ +#define ICR1L _SFR_IO8(0x24) /* Input Capture Register 1 Low Byte */ +#define ICR1 _SFR_IO16(0x24) /* Input Capture Register 1 */ +#define TCNT2 _SFR_IO8(0x23) /* Timer/Counter 2 */ +#define OCR2 _SFR_IO8(0x22) /* Timer/Counter 2 Output Compare Register */ +#define WDTCR _SFR_IO8(0x21) /* Watchdow Timer Control Register */ +#define UBRR0H _SFR_IO8(0x20) /* USART 0 Baud-Rate Register High Byte, Shared with UCSR0C */ +#define UCSR0C _SFR_IO8(0x20) /* USART 0 Control and Status Register C, Shared with UBRR0H */ +#define EEARH _SFR_IO8(0x1F) /* EEPROM Address Register High Byte */ +#define EEARL _SFR_IO8(0x1E) /* EEPROM Address Register Low Byte */ +#define EEAR _SFR_IO16(0x1E) /* EEPROM Address Register */ +#define EEDR _SFR_IO8(0x1D) /* EEPROM Data Register */ +#define EECR _SFR_IO8(0x1C) /* EEPROM Control Register */ +#define PORTA _SFR_IO8(0x1B) /* Port A */ +#define DDRA _SFR_IO8(0x1A) /* Port A Data Direction Register */ +#define PINA _SFR_IO8(0x19) /* Port A Pin Register */ +#define PORTB _SFR_IO8(0x18) /* Port B */ +#define DDRB _SFR_IO8(0x17) /* Port B Data Direction Register */ +#define PINB _SFR_IO8(0x16) /* Port B Pin Register */ +#define PORTC _SFR_IO8(0x15) /* Port C */ +#define DDRC _SFR_IO8(0x14) /* Port C Data Direction Register */ +#define PINC _SFR_IO8(0x13) /* Port C Pin Register */ +#define PORTD _SFR_IO8(0x12) /* Port D */ +#define DDRD _SFR_IO8(0x11) /* Port D Data Direction Register */ +#define PIND _SFR_IO8(0x10) /* Port D Pin Register */ +#define SPDR _SFR_IO8(0x0F) /* SPI Data Register */ +#define SPSR _SFR_IO8(0x0E) /* SPI Status Register */ +#define SPCR _SFR_IO8(0x0D) /* SPI Control Register */ +#define UDR0 _SFR_IO8(0x0C) /* USART 0 Data Register */ +#define UCSR0A _SFR_IO8(0x0B) /* USART 0 Control and Status Register A */ +#define UCSR0B _SFR_IO8(0x0A) /* USART 0 Control and Status Register B */ +#define UBRR0L _SFR_IO8(0x09) /* USART 0 Baud-Rate Register Low Byte */ +#define ACSR _SFR_IO8(0x08) /* Analog Comparator Status Register */ +#define PORTE _SFR_IO8(0x07) /* Port E */ +#define DDRE _SFR_IO8(0x06) /* Port E Data Direction Register */ +#define PINE _SFR_IO8(0x05) /* Port E Pin Register */ +#define OSCCAL _SFR_IO8(0x04) /* Oscillator Calibration, Shared with OCDR */ +#define OCDR _SFR_IO8(0x04) /* On-Chip Debug Register, Shared with OSCCAL */ +#define UDR1 _SFR_IO8(0x03) /* USART 1 Data Register */ +#define UCSR1A _SFR_IO8(0x02) /* USART 1 Control and Status Register A */ +#define UCSR1B _SFR_IO8(0x01) /* USART 1 Control and Status Register B */ +#define UBRR1L _SFR_IO8(0x00) /* USART 0 Baud Rate Register High Byte */ + + +/* Interrupt vectors (byte addresses) */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(4) +#define SIG_PIN_CHANGE0 _VECTOR(4) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(5) +#define SIG_PIN_CHANGE1 _VECTOR(5) + +/* Timer/Counter3 Capture Event */ +#define TIMER3_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE3 _VECTOR(6) + +/* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE3A _VECTOR(7) + +/* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE3B _VECTOR(8) + +/* Timer/Counter3 Overflow */ +#define TIMER3_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW3 _VECTOR(9) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE2 _VECTOR(10) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW2 _VECTOR(11) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(12) +#define SIG_INPUT_CAPTURE1 _VECTOR(12) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1A _VECTOR(13) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE1B _VECTOR(14) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(15) +#define SIG_OVERFLOW1 _VECTOR(15) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(16) +#define SIG_OUTPUT_COMPARE0 _VECTOR(16) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(17) +#define SIG_OVERFLOW0 _VECTOR(17) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(18) +#define SIG_SPI _VECTOR(18) + +/* USART0, Rx Complete */ +#define USART0_RXC_vect _VECTOR(19) +#define SIG_USART0_RECV _VECTOR(19) + +/* USART1, Rx Complete */ +#define USART1_RXC_vect _VECTOR(20) +#define SIG_USART1_RECV _VECTOR(20) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(21) +#define SIG_USART0_DATA _VECTOR(21) + +/* USART1, Data register Empty */ +#define USART1_UDRE_vect _VECTOR(22) +#define SIG_USART1_DATA _VECTOR(22) + +/* USART0, Tx Complete */ +#define USART0_TXC_vect _VECTOR(23) +#define SIG_USART0_TRANS _VECTOR(23) + +/* USART1, Tx Complete */ +#define USART1_TXC_vect _VECTOR(24) +#define SIG_USART1_TRANS _VECTOR(24) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(25) +#define SIG_EEPROM_READY _VECTOR(25) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(26) +#define SIG_COMPARATOR _VECTOR(26) + +/* Store Program Memory Read */ +#define SPM_RDY_vect _VECTOR(27) +#define SIG_SPM_READY _VECTOR(27) + +#define _VECTORS_SIZE 112 /* = (num vec+1) * 4 */ + + + + + +/* TCCR3B bit definitions, memory mapped I/O */ + +#define ICNC3 7 +#define ICES3 6 +#define WGM33 4 +#define WGM32 3 +#define CS32 2 +#define CS31 1 +#define CS30 0 + + + +/* TCCR3A bit definitions, memory mapped I/O */ + +#define COM3A1 7 +#define COM3A0 6 +#define COM3B1 5 +#define COM3B0 4 +#define FOC3A 3 +#define FOC3B 2 +#define WGM31 1 +#define WGM30 0 + + + +/* ETIMSK bit definitions, memory mapped I/O */ + +#define TICIE3 5 +#define OCIE3A 4 +#define OCIE3B 3 +#define TOIE3 2 + + + +/* ETIFR bit definitions, memory mapped I/O */ + +#define ICF3 5 +#define OCF3A 4 +#define OCF3B 3 +#define TOV3 2 + + + +/* PCMSK1 bit definitions, memory mapped I/O */ +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + + + +/* PCMSK0 bit definitions, memory mapped I/O */ + +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + + + +/* CLKPR bit definitions, memory mapped I/O */ + +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + + + +/* SPH bit definitions */ + +#define SP15 15 +#define SP14 14 +#define SP13 13 +#define SP12 12 +#define SP11 11 +#define SP10 10 +#define SP9 9 +#define SP8 8 + + + +/* SPL bit definitions */ + +#define SP7 7 +#define SP6 6 +#define SP5 5 +#define SP4 4 +#define SP3 3 +#define SP2 2 +#define SP1 1 +#define SP0 0 + + + +/* UBRR1H bit definitions */ + +#define URSEL1 7 +#define UBRR111 3 +#define UBRR110 2 +#define UBRR19 1 +#define UBRR18 0 + + + +/* UCSR1C bit definitions */ + +#define URSEL1 7 +#define UMSEL1 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 + + + +/* GICR bit definitions */ + +#define INT1 7 +#define INT0 6 +#define INT2 5 +#define PCIE1 4 +#define PCIE0 3 +#define IVSEL 1 +#define IVCE 0 + + + +/* GIFR bit definitions */ + +#define INTF1 7 +#define INTF0 6 +#define INTF2 5 +#define PCIF1 4 +#define PCIF0 3 + + + +/* TIMSK bit definitions */ + +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +#define OCIE2 4 +#define TICIE1 3 +#define TOIE2 2 +#define TOIE0 1 +#define OCIE0 0 + + + +/* TIFR bit definitions */ + +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +#define OCF2 4 +#define ICF1 3 +#define TOV2 2 +#define TOV0 1 +#define OCF0 0 + + + +/* SPMCR bit definitions */ + +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + + + +/* EMCUCR bit definitions */ + +#define SM0 7 +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW01 3 +#define SRW00 2 +#define SRW11 1 +#define ISC2 0 + + + +/* MCUCR bit definitions */ + +#define SRE 7 +#define SRW10 6 +#define SE 5 +#define SM1 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + + + +/* MCUCSR bit definitions */ + +#define JTD 7 +#define SM2 5 +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + + + +/* TCCR0 bit definitions */ + +#define FOC0 7 +#define WGM00 6 +#define COM01 5 +#define COM00 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + + + +/* SFIOR bit definitions */ + +#define TSM 7 +#define XMBK 6 +#define XMM2 5 +#define XMM1 4 +#define XMM0 3 +#define PUD 2 +#define PSR2 1 +#define PSR310 0 + + + +/* TCCR1A bit definitions */ + +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define WGM11 1 +#define WGM10 0 + + + + +/* TCCR1B bit definitions */ + +#define ICNC1 7 /* Input Capture Noise Canceler */ +#define ICES1 6 /* Input Capture Edge Select */ +#define WGM13 4 /* Waveform Generation Mode 3 */ +#define WGM12 3 /* Waveform Generation Mode 2 */ +#define CS12 2 /* Clock Select 2 */ +#define CS11 1 /* Clock Select 1 */ +#define CS10 0 /* Clock Select 0 */ + + + +/* TCCR2 bit definitions */ + +#define FOC2 7 +#define WGM20 6 +#define COM21 5 +#define COM20 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + + + +/* ASSR bit definitions */ + +#define AS2 3 +#define TCON2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + + + +/* WDTCR bit definitions */ + +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + + + +/* UBRR0H bif definitions */ + +#define URSEL0 7 +#define UBRR011 3 +#define UBRR010 2 +#define UBRR09 1 +#define UBRR08 0 + + + +/* UCSR0C bit definitions */ + +#define URSEL0 7 +#define UMSEL0 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPOL0 0 + + + +/* EEARH bit definitions */ + +#define EEAR8 0 + + + +/* EECR bit definitions */ + +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + + + +/* PORTA bit definitions */ + +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + + + +/* DDRA bit definitions */ + +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + + + +/* PINA bit definitions */ + +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + + +/* PORTB bit definitions */ + +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + + + +/* DDRB bit definitions */ + +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + + + +/* PINB bit definitions */ + +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + + + +/* PORTC bit definitions */ + +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + + + +/* DDRC bit definitions */ + +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + + + +/* PINC bit definitions */ + +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + + + +/* PORTD bit definitions */ + +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + + + +/* DDRD bit definitions */ + +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + + + +/* PIND bit definitions */ + +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + + + +/* SPSR bit definitions */ + +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + + + +/* SPCR bit definitions */ + +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + + + +/* UCSR0A bit definitions */ + +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + + + +/* UCSR0B bit definitions */ + +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + + + +/* ACSR bit definitions */ + +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + + + +/* PORTE bit definitions */ + +#define PE2 2 +#define PE1 1 +#define PE0 0 + + + +/* DDRE bit definitions */ + +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + + + +/* PINE bit definitions */ + +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + + + +/* UCSR1A bit definitions */ + +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + + + +/* UCSR1B bit definitions */ + +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x4FF +#define XRAMEND 0xFFFF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define FUSE_M161C (unsigned char)~_BV(4) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x04 + + +#endif /* _AVR_IOM162_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom163.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom163.h new file mode 100644 index 0000000..35b0f0c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom163.h @@ -0,0 +1,639 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom163.h,v 1.14.2.5 2008/10/17 23:27:47 arcanum Exp $ */ + +/* avr/iom163.h - definitions for ATmega163 */ + +#ifndef _AVR_IOM163_H_ +#define _AVR_IOM163_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom163.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +#define TWBR _SFR_IO8(0x00) +#define TWSR _SFR_IO8(0x01) +#define TWAR _SFR_IO8(0x02) +#define TWDR _SFR_IO8(0x03) + +/* ADC */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) +#define ADCSR _SFR_IO8(0x06) +#define ADMUX _SFR_IO8(0x07) + +/* analog comparator */ +#define ACSR _SFR_IO8(0x08) + +/* UART */ +#define UBRR _SFR_IO8(0x09) +#define UCSRB _SFR_IO8(0x0A) +#define UCSRA _SFR_IO8(0x0B) +#define UDR _SFR_IO8(0x0C) + +/* SPI */ +#define SPCR _SFR_IO8(0x0D) +#define SPSR _SFR_IO8(0x0E) +#define SPDR _SFR_IO8(0x0F) + +/* Port D */ +#define PIND _SFR_IO8(0x10) +#define DDRD _SFR_IO8(0x11) +#define PORTD _SFR_IO8(0x12) + +/* Port C */ +#define PINC _SFR_IO8(0x13) +#define DDRC _SFR_IO8(0x14) +#define PORTC _SFR_IO8(0x15) + +/* Port B */ +#define PINB _SFR_IO8(0x16) +#define DDRB _SFR_IO8(0x17) +#define PORTB _SFR_IO8(0x18) + +/* Port A */ +#define PINA _SFR_IO8(0x19) +#define DDRA _SFR_IO8(0x1A) +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define UBRRHI _SFR_IO8(0x20) + +#define WDTCR _SFR_IO8(0x21) + +#define ASSR _SFR_IO8(0x22) + +/* Timer 2 */ +#define OCR2 _SFR_IO8(0x23) +#define TCNT2 _SFR_IO8(0x24) +#define TCCR2 _SFR_IO8(0x25) + +/* Timer 1 */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) +#define TCCR1B _SFR_IO8(0x2E) +#define TCCR1A _SFR_IO8(0x2F) + +#define SFIOR _SFR_IO8(0x30) + +#define OSCCAL _SFR_IO8(0x31) + +/* Timer 0 */ +#define TCNT0 _SFR_IO8(0x32) +#define TCCR0 _SFR_IO8(0x33) + +#define MCUSR _SFR_IO8(0x34) +#define MCUCR _SFR_IO8(0x35) + +#define TWCR _SFR_IO8(0x36) + +#define SPMCR _SFR_IO8(0x37) + +#define TIFR _SFR_IO8(0x38) +#define TIMSK _SFR_IO8(0x39) + +#define GIFR _SFR_IO8(0x3A) +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C reserved */ + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE2 _VECTOR(3) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW2 _VECTOR(4) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(5) +#define SIG_INPUT_CAPTURE1 _VECTOR(5) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE1A _VECTOR(6) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1B _VECTOR(7) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(8) +#define SIG_OVERFLOW1 _VECTOR(8) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW0 _VECTOR(9) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(10) +#define SIG_SPI _VECTOR(10) + +/* UART, RX Complete */ +#define UART_RX_vect _VECTOR(11) +#define SIG_UART_RECV _VECTOR(11) + +/* UART Data Register Empty */ +#define UART_UDRE_vect _VECTOR(12) +#define SIG_UART_DATA _VECTOR(12) + +/* UART, TX Complete */ +#define UART_TX_vect _VECTOR(13) +#define SIG_UART_TRANS _VECTOR(13) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(14) +#define SIG_ADC _VECTOR(14) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(15) +#define SIG_EEPROM_READY _VECTOR(15) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(16) +#define SIG_COMPARATOR _VECTOR(16) + +/* 2-Wire Serial Interface */ +#define TWI_vect _VECTOR(17) +#define SIG_2WIRE_SERIAL _VECTOR(17) + +#define _VECTORS_SIZE 72 + +/* Bit numbers */ + +/* GIMSK */ +#define INT1 7 +#define INT0 6 +/* bit 5 reserved, undefined */ +/* bits 4-0 reserved */ + +/* GIFR */ +#define INTF1 7 +#define INTF0 6 +/* bits 5-0 reserved */ + +/* TIMSK */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +/* bit 1 reserved */ +#define TOIE0 0 + +/* TIFR */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +/* bit 1 reserved, undefined */ +#define TOV0 0 + +/* SPMCR */ +/* bit 7 reserved */ +#define ASB 6 +/* bit 5 reserved */ +#define ASRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +/* bit 1 reserved */ +#define TWIE 0 + +/* TWAR */ +#define TWGCE 0 + +/* TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +/* bits 2-0 reserved */ + +/* MCUCR */ +/* bit 7 reserved */ +#define SE 6 +#define SM1 5 +#define SM0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* MCUSR */ +/* bits 7-4 reserved */ +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* SFIOR */ +/* bits 7-4 reserved */ +#define ACME 3 +#define PUD 2 +#define PSR2 1 +#define PSR10 0 + +/* TCCR0 */ +/* bits 7-3 reserved */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR2 */ +#define FOC2 7 +#define PWM2 6 +#define COM21 5 +#define COM20 4 +#define CTC2 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* ASSR */ +/* bits 7-4 reserved */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define PWM11 1 +#define PWM10 0 + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +/* bits 5-4 reserved */ +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* WDTCR */ +/* bits 7-5 reserved */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* PA7-PA0 = ADC7-ADC0 */ +/* PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* + PB7 = SCK + PB6 = MISO + PB5 = MOSI + PB4 = SS# + PB3 = AIN1 + PB2 = AIN0 + PB1 = T1 + PB0 = T0 + */ + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* + PC7 = TOSC2 + PC6 = TOSC1 + PC1 = SDA + PC0 = SCL + */ +/* PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* + PD7 = OC2 + PD6 = ICP + PD5 = OC1A + PD4 = OC1B + PD3 = INT1 + PD2 = INT0 + PD1 = TXD + PD0 = RXD + */ + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +/* bits 5-1 reserved */ +#define SPI2X 0 + +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UCSRA */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +/* bit 2 reserved */ +#define U2X 1 +#define MPCM 0 + +/* UCSRB */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* ACSR */ +#define ACD 7 +#define AINBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADCSR */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x45F +#define XRAMEND 0x45F +#define E2END 0x1FF +#define E2PAGESIZE 0 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SPIEN) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define HFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x02 + + +#endif /* _AVR_IOM163_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom164.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom164.h new file mode 100644 index 0000000..a6a4c0a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom164.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2005, 2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iom164.h - definitions for ATmega164 */ + +/* $Id: iom164.h,v 1.3.2.4 2008/08/14 00:08:01 arcanum Exp $ */ + +#ifndef _AVR_IOM164_H_ +#define _AVR_IOM164_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x04FF +#define XRAMEND 0x04FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +#endif /* _AVR_IOM164_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom165.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom165.h new file mode 100644 index 0000000..35cdb0a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom165.h @@ -0,0 +1,820 @@ +/* Copyright (c) 2004,2005,2006 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom165.h,v 1.10.2.6 2008/10/17 23:27:47 arcanum Exp $ */ + +/* avr/iom165.h - definitions for ATmega165 */ + +#ifndef _AVR_IOM165_H_ +#define _AVR_IOM165_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom165.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 6 +#define PCIF1 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 6 +#define PCIE1 7 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCD 7 // The datasheet defines this but IMO it should be OCDR7. +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +/* Combine PCMSK0 and PCMSK1 */ +#define PCMSK _SFR_MEM16(0x6B) + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +/* Reserved [0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSRA _SFR_MEM8(0xC0) +#define MPCM 0 +#define U2X 1 +#define UPE 2 +#define DOR 3 +#define FE 4 +#define UDRE 5 +#define TXC 6 +#define RXC 7 + +#define UCSRB _SFR_MEM8(0XC1) +#define TXB8 0 +#define RXB8 1 +#define UCSZ2 2 +#define TXEN 3 +#define RXEN 4 +#define UDRIE 5 +#define TXCIE 6 +#define RXCIE 7 + +#define UCSRC _SFR_MEM8(0xC2) +#define UCPOL 0 +#define UCSZ0 1 +#define UCSZ1 2 +#define USBS 3 +#define UPM0 4 +#define UPM1 5 +#define UMSEL 6 + +/* Reserved [0xC3] */ + +/* Combine UBRRL and UBRRH */ +#define UBRR _SFR_MEM16(0xC4) + +#define UBRRL _SFR_MEM8(0xC4) +#define UBRRH _SFR_MEM8(0xC5) + +#define UDR _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xFF] */ + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define USART_RX_vect _VECTOR(13) /* Alias */ +#define SIG_UART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define USART_UDRE_vect _VECTOR(14) /* Alias */ +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define USART_TX_vect _VECTOR(15) /* Alias */ +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +#define _VECTORS_SIZE 88 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x4FF +#define XRAMEND 0x4FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_IOM165_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom165p.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom165p.h new file mode 100644 index 0000000..6c54c81 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom165p.h @@ -0,0 +1,822 @@ +/* Copyright (c) 2004,2005,2006 Eric B. Weddington + Copyright (c) 2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom165p.h,v 1.2.2.6 2008/10/17 23:27:47 arcanum Exp $ */ + +/* avr/iom165p.h - definitions for ATmega165P */ + +#ifndef _AVR_IOM165P_H_ +#define _AVR_IOM165P_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom165p.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 6 +#define PCIF1 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 6 +#define PCIE1 7 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCD 7 // The datasheet defines this but IMO it should be OCDR7. +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +/* Combine PCMSK0 and PCMSK1 */ +#define PCMSK _SFR_MEM16(0x6B) + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +/* Reserved [0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRRL and UBRRH */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xFF] */ + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define USART_RX_vect _VECTOR(13) /* Alias */ +#define SIG_UART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define USART_UDRE_vect _VECTOR(14) /* Alias */ +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define USART_TX_vect _VECTOR(15) /* Alias */ +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +#define _VECTORS_SIZE 88 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x4FF +#define XRAMEND 0x4FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_IOM165P_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom168.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom168.h new file mode 100644 index 0000000..b64ed29 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom168.h @@ -0,0 +1,91 @@ +/* Copyright (c) 2004, Theodore A. Roth + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom168.h,v 1.4.2.5 2008/10/17 23:27:47 arcanum Exp $ */ + +#ifndef _AVR_IOM168_H_ +#define _AVR_IOM168_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x4FF +#define XRAMEND 0x4FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x06 + + +#endif /* _AVR_IOM168_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom168p.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom168p.h new file mode 100644 index 0000000..b08d391 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom168p.h @@ -0,0 +1,874 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom168p.h,v 1.3.2.10 2008/10/17 23:27:48 arcanum Exp $ */ + +/* avr/iom168p.h - definitions for ATmega168P. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom168p.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM168P_H_ +#define _AVR_IOM168P_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 + +#define EEPROM_REG_LOCATIONS 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define BODSE 5 +#define BODS 6 + +#define SPMCSR _SFR_IO8(0x37) +#define SELFPRGEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 0 +#define TWAM1 1 +#define TWAM2 2 +#define TWAM3 3 +#define TWAM4 4 +#define TWAM5 5 +#define TWAM6 6 + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0xC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCPHA0 1 +#define UCSZ01 2 +#define UDORD0 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0xC5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0xC6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define PCINT0_vect _VECTOR(3) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */ +#define PCINT2_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */ +#define WDT_vect _VECTOR(6) /* Watchdog Time-out Interrupt */ +#define TIMER2_COMPA_vect _VECTOR(7) /* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect _VECTOR(8) /* Timer/Counter2 Compare Match A */ +#define TIMER2_OVF_vect _VECTOR(9) /* Timer/Counter2 Overflow */ +#define TIMER1_CAPT_vect _VECTOR(10) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(11) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(13) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(14) /* TimerCounter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(15) /* TimerCounter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(16) /* Timer/Couner0 Overflow */ +#define SPI_STC_vect _VECTOR(17) /* SPI Serial Transfer Complete */ +#define USART_RX_vect _VECTOR(18) /* USART Rx Complete */ +#define USART_UDRE_vect _VECTOR(19) /* USART, Data Register Empty */ +#define USART_TX_vect _VECTOR(20) /* USART Tx Complete */ +#define ADC_vect _VECTOR(21) /* ADC Conversion Complete */ +#define EE_READY_vect _VECTOR(22) /* EEPROM Ready */ +#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */ +#define TWI_vect _VECTOR(24) /* Two-wire Serial Interface */ +#define SPM_READY_vect _VECTOR(25) /* Store Program Memory Read */ + +#define _VECTORS_SIZE (26 * 4) + + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x4FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x0B + + +#endif /* _AVR_IOM168P_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom169.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom169.h new file mode 100644 index 0000000..f621771 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom169.h @@ -0,0 +1,1107 @@ +/* Copyright (c) 2002, 2003, 2004, 2005 + Juergen Schilling + Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom169.h,v 1.26.2.5 2008/10/17 23:27:48 arcanum Exp $ */ + +/* iom169.h - definitions for ATmega169 */ + +/* This should be up to date with data sheet version 2514J-AVR-12/03. */ + +#ifndef _AVR_IOM169_H_ +#define _AVR_IOM169_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom169.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Port A */ +#define PINA _SFR_IO8(0x00) +#define DDRA _SFR_IO8(0x01) +#define PORTA _SFR_IO8(0x02) + +/* Port B */ +#define PINB _SFR_IO8(0x03) +#define DDRB _SFR_IO8(0x04) +#define PORTB _SFR_IO8(0x05) + +/* Port C */ +#define PINC _SFR_IO8(0x06) +#define DDRC _SFR_IO8(0x07) +#define PORTC _SFR_IO8(0x08) + +/* Port D */ +#define PIND _SFR_IO8(0x09) +#define DDRD _SFR_IO8(0x0A) +#define PORTD _SFR_IO8(0x0B) + +/* Port E */ +#define PINE _SFR_IO8(0x0C) +#define DDRE _SFR_IO8(0x0D) +#define PORTE _SFR_IO8(0x0E) + +/* Port F */ +#define PINF _SFR_IO8(0x0F) +#define DDRF _SFR_IO8(0x10) +#define PORTF _SFR_IO8(0x11) + +/* Port G */ +#define PING _SFR_IO8(0x12) +#define DDRG _SFR_IO8(0x13) +#define PORTG _SFR_IO8(0x14) + +/* Timer/Counter 0 interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) + +/* Timer/Counter 1 interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) + +/* Timer/Counter 2 interrupt Flag Register */ +#define TIFR2 _SFR_IO8(0x17) + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) + +/* External Interrupt Mask Register */ +#define EIMSK _SFR_IO8(0x1D) + +/* General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) + +/* Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) + +/* Timer/Counter Register */ +#define TCNT0 _SFR_IO8(0x26) + +/* Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) + +/* General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x2A) + +/* General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x2B) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x2C) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x2D) + +/* SPI Data Register */ +#define SPDR _SFR_IO8(0x2E) + +/* Analog Comperator Control and Status Register */ +#define ACSR _SFR_IO8(0x30) + +/* On-chip Debug Register */ +#define OCDR _SFR_IO8(0x31) + +/* Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU Control Rgeister */ +#define MCUCR _SFR_IO8(0x35) + +/* Store Program Memory Control and Status Register */ +#define SPMCSR _SFR_IO8(0x37) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_MEM8(0x60) + +/* Clock Prescale Register */ +#define CLKPR _SFR_MEM8(0x61) + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRLCD 4 + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_MEM8(0x66) + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) + +/* Pin Change Mask Register */ +#define PCMSK _SFR_MEM16(0x6B) +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCMSK1 _SFR_MEM8(0x6C) + +/* Timer/Counter 0 Interrupt Mask Register */ +#define TIMSK0 _SFR_MEM8(0x6E) + +/* Timer/Counter 1 Interrupt Mask Register */ +#define TIMSK1 _SFR_MEM8(0x6F) + +/* Timer/Counter 2 Interrupt Mask Register */ +#define TIMSK2 _SFR_MEM8(0x70) + +/* ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +/* ADC Control and Status Register A */ +#define ADCSRA _SFR_MEM8(0x7A) + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x7B) + +/* ADC Multiplex Selection Register */ +#define ADMUX _SFR_MEM8(0x7C) + +/* NOTE: DIDR0 and DIDR1 are swapped in the register summary of the data sheet + (2514D-AVR-01/03), but seem to be correct in the discussions of the + registers. */ + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) + +/* Digital Input Disable Register 1 */ +#define DIDR1 _SFR_MEM8(0x7F) + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_MEM8(0x80) + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_MEM8(0x81) + +/* Timer/Counter1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x82) + +/* Timer/Counter1 Register */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Timer/Counter1 Input Capture Register */ +#define ICR1 _SFR_MEM16(0x86) +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Timer/Counter1 Output Compare Registare B */ +#define OCR1B _SFR_MEM16(0x8A) +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Timer/Counter2 Control Register A */ +#define TCCR2A _SFR_MEM8(0xB0) + +/* Timer/Counter2 Register */ +#define TCNT2 _SFR_MEM8(0xB2) + +/* Timer/Counter2 Output Compare Register */ +#define OCR2A _SFR_MEM8(0xB3) + +/* Asynchronous Status Register */ +#define ASSR _SFR_MEM8(0xB6) + +/* USI Control Register */ +#define USICR _SFR_MEM8(0xB8) + +/* USI Status Register */ +#define USISR _SFR_MEM8(0xB9) + +/* USI Data Register */ +#define USIDR _SFR_MEM8(0xBA) + +/* USART0 Control and Status Register A */ +#define UCSRA _SFR_MEM8(0xC0) + +/* USART0 Control and Status Register B */ +#define UCSRB _SFR_MEM8(0xC1) + +/* USART0 Control and Status Register C */ +#define UCSRC _SFR_MEM8(0xC2) + +/* USART0 Baud Rate Register */ +#define UBRR _SFR_MEM16(0xC4) +#define UBRRL _SFR_MEM8(0xC4) +#define UBRRH _SFR_MEM8(0xC5) + +/* USART0 I/O Data Register */ +#define UDR _SFR_MEM8(0xC6) + +/* LCD Control and Status Register A */ +#define LCDCRA _SFR_MEM8(0xE4) + +/* LCD Control and Status Register B */ +#define LCDCRB _SFR_MEM8(0xE5) + +/* LCD Frame Rate Register */ +#define LCDFRR _SFR_MEM8(0xE6) + +/* LCD Contrast Control Register */ +#define LCDCCR _SFR_MEM8(0xE7) + +/* LCD Memory mapping */ +#define LCDDR0 _SFR_MEM8(0xEC) +#define LCDDR1 _SFR_MEM8(0xED) +#define LCDDR2 _SFR_MEM8(0xEE) +#define LCDDR3 _SFR_MEM8(0xEF) +#define LCDDR5 _SFR_MEM8(0xF1) +#define LCDDR6 _SFR_MEM8(0xF2) +#define LCDDR7 _SFR_MEM8(0xF3) +#define LCDDR8 _SFR_MEM8(0xF4) +#define LCDDR10 _SFR_MEM8(0xF6) +#define LCDDR11 _SFR_MEM8(0xF7) +#define LCDDR12 _SFR_MEM8(0xF8) +#define LCDDR13 _SFR_MEM8(0xF9) +#define LCDDR15 _SFR_MEM8(0xFB) +#define LCDDR16 _SFR_MEM8(0xFC) +#define LCDDR17 _SFR_MEM8(0xFD) +#define LCDDR18 _SFR_MEM8(0xFE) + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define SIG_USART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define SIG_USART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_USART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* LCD Start of Frame */ +#define LCD_vect _VECTOR(22) +#define SIG_LCD _VECTOR(22) + +#define _VECTORS_SIZE 92 + +/* Bit numbers */ + +/* + PA7 = SEG3 + PA6 = SEG2 + PA5 = SEG1 + PA4 = SEG0 + PA3 = COM3 + PA2 = COM2 + PA1 = COM1 + PA0 = COM0 +*/ + +/* PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* + PB7 = OC2A / PCINT15 + PB6 = OC1B / PCINT14 + PB5 = OC1A / PCINT13 + PB4 = OC0A / PCINT12 + PB3 = MISO / PCINT11 + PB2 = MOSI / PCINT10 + PB1 = SCK / PCINT9 + PB0 = SS# / PCINT8 + */ + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* + PC7 = SEG5 + PC6 = SEG6 + PC5 = SEG7 + PC4 = SEG8 + PC3 = SEG9 + PC2 = SEG10 + PC1 = SEG11 + PC0 = SEG12 +*/ + +/* PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* + PD7 = SEG15 + PD6 = SEG16 + PD5 = SEG17 + PD4 = SEG18 + PD3 = SEG19 + PD2 = SEG20 + PD1 = INT0 / SEG21 + PD0 = ICP / SEG22 + */ + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* + PE7 = CLK0 / PCINT7 + PE6 = DO / PCINT6 + PE5 = DI / SDA / PCINT5 + PE4 = USCK / SCL / PCINT4 + PE3 = AIN1 / PCINT3 + PE2 = XCK / AIN0 / PCINT2 + PE1 = TXD / PCINT1 + PE0 = RXD / PCINT0 + */ + +/* PORTE */ +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* DDRE */ +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* PINE */ +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* + PF7 = ADC7 / TDI + PF6 = ADC6 / TDO + PF5 = ADC5 / TMS + PF4 = ADC4 / TCK + PF3 = ADC3 + PF2 = ADC2 + PF1 = ADC1 + PF0 = ADC0 + */ + +/* PORTF */ +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +/* DDRF */ +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +/* PINF */ +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +/* + PG5 = RESET# + PG4 = T0 / SEG23 + PG3 = T1 / SEG24 + PG2 = SEG4 + PG1 = SEG13 + PG0 = SEG14 + */ + +/* PORTG */ +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +/* DDRG */ +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +/* PING */ +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +/* TIFR0 */ +#define OCF0A 1 +#define TOV0 0 + +/* TIFR1 */ +#define ICF1 5 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +/* TIFR2 */ +#define OCF2A 1 +#define TOV2 0 + +/* EIFR */ +#define PCIF1 7 +#define PCIF0 6 +#define INTF0 0 + +/* EIMSK */ +#define PCIE1 7 +#define PCIE0 6 +#define INT0 0 + +/* EECR */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* GTCCR */ +#define TSM 7 +#define PSR2 1 +#define PSR10 0 + +/* TCCR0A */ +#define FOC0A 7 +#define WGM00 6 +#define COM0A1 5 +#define COM0A0 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* ACSR */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* OCDR */ +#define IDRD 7 +#define OCD 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 + +/* SMCR */ +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +/* MCUSR */ +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* MCUCR */ +#define JTD 7 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 + +/* SPMCSR */ +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* WDTCR */ +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* CLKPR */ +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +/* EICRA */ +#define ISC01 1 +#define ISC00 0 + +/* PCMSK0 */ +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +/* PCMSK1 */ +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +/* TIMSK0 */ +#define OCIE0A 1 +#define TOIE0 0 + +/* TIMSK1 */ +#define ICIE1 5 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +/* TIMSK2 */ +#define OCIE2A 1 +#define TOIE2 0 + +/* ADCSRA */ +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADCSRB */ +#define ACME 6 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* DIDR1 */ +#define AIN1D 1 +#define AIN0D 0 + +/* DIDR0 */ +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define WGM11 1 +#define WGM10 0 + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* TCCR1C */ +#define FOC1A 7 +#define FOC1B 6 + +/* TCCR2A */ +#define FOC2A 7 +#define WGM20 6 +#define COM2A1 5 +#define COM2A0 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* ASSR */ +#define EXCLK 4 +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* USICR */ +#define USISIE 7 +#define USIOIE 6 +#define USIWM1 5 +#define USIWM0 4 +#define USICS1 3 +#define USICS0 2 +#define USICLK 1 +#define USITC 0 + +/* USISR */ +#define USISIF 7 +#define USIOIF 6 +#define USIPF 5 +#define USIDC 4 +#define USICNT3 3 +#define USICNT2 2 +#define USICNT1 1 +#define USICNT0 0 + +/* UCSRA */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define UPE 2 +#define U2X 1 +#define MPCM 0 + +/* UCSRB */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ2 2 +#define RXB8 1 +#define TXB8 0 + +/* UCSRC */ +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* LCDCRA */ +#define LCDEN 7 +#define LCDAB 6 +#define LCDIF 4 +#define LCDIE 3 +#define LCDBD 2 /* Only in Rev. F */ +#define LCDCCD 1 /* Only in Rev. F */ +#define LCDBL 0 + +/* LCDCRB */ +#define LCDCS 7 +#define LCD2B 6 +#define LCDMUX1 5 +#define LCDMUX0 4 +#define LCDPM2 2 +#define LCDPM1 1 +#define LCDPM0 0 + +/* LCDFRR */ +#define LCDPS2 6 +#define LCDPS1 5 +#define LCDPS0 4 +#define LCDCD2 2 +#define LCDCD1 1 +#define LCDCD0 0 + +/* LCDCCR */ +#define LCDDC2 7 +#define LCDDC1 6 +#define LCDDC0 5 +#define LCDMDT 4 /* Only in Rev. F */ +#define LCDCC3 3 +#define LCDCC2 2 +#define LCDCC1 1 +#define LCDCC0 0 + +/* LCDDR0-18 */ +#define SEG24 0 + +#define SEG23 7 +#define SEG22 6 +#define SEG21 5 +#define SEG20 4 +#define SEG19 3 +#define SEG18 2 +#define SEG17 1 +#define SEG16 0 + +#define SEG15 7 +#define SEG14 6 +#define SEG13 5 +#define SEG12 4 +#define SEG11 3 +#define SEG10 2 +#define SEG9 1 +#define SEG8 0 + +#define SEG7 7 +#define SEG6 6 +#define SEG5 5 +#define SEG4 4 +#define SEG3 3 +#define SEG2 2 +#define SEG1 1 +#define SEG0 0 + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x4FF +#define XRAMEND 0x4FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x05 + + +#endif /* _AVR_IOM169_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom169p.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom169p.h new file mode 100644 index 0000000..82543d7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom169p.h @@ -0,0 +1,1030 @@ +/* Copyright (c) 2002, 2003, 2004, 2005, 2006 + Juergen Schilling + Eric B. Weddington + Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom169p.h,v 1.2.2.5 2008/10/17 23:27:48 arcanum Exp $ */ + +/* iom169p.h - definitions for ATmega169P */ + +#ifndef _AVR_IOM169P_H_ +#define _AVR_IOM169P_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom169p.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Port A */ +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Port B */ +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Port C */ +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Port D */ +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Port E */ +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Port F */ +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +/* Port G */ +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +/* Timer/Counter 0 interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) +#define OCF0A 1 +#define TOV0 0 + +/* Timer/Counter 1 interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) +#define ICF1 5 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +/* Timer/Counter 2 interrupt Flag Register */ +#define TIFR2 _SFR_IO8(0x17) +#define OCF2A 1 +#define TOV2 0 + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) +#define PCIF1 7 +#define PCIF0 6 +#define INTF0 0 + +/* External Interrupt Mask Register */ +#define EIMSK _SFR_IO8(0x1D) +#define PCIE1 7 +#define PCIE0 6 +#define INT0 0 + +/* General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSR2 1 +#define PSR10 0 + +/* Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) +#define FOC0A 7 +#define WGM00 6 +#define COM0A1 5 +#define COM0A0 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter Register */ +#define TCNT0 _SFR_IO8(0x26) + +/* Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) + +/* General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x2A) + +/* General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x2B) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x2C) +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x2D) +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPI Data Register */ +#define SPDR _SFR_IO8(0x2E) + +/* Analog Comperator Control and Status Register */ +#define ACSR _SFR_IO8(0x30) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* On-chip Debug Register */ +#define OCDR _SFR_IO8(0x31) +#define IDRD 7 +#define OCDR7 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 + +/* Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* MCU Control Rgeister */ +#define MCUCR _SFR_IO8(0x35) +#define JTD 7 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 + +/* Store Program Memory Control and Status Register */ +#define SPMCSR _SFR_IO8(0x37) +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_MEM8(0x60) +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Clock Prescale Register */ +#define CLKPR _SFR_MEM8(0x61) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRLCD 4 + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_MEM8(0x66) + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) +#define ISC01 1 +#define ISC00 0 + +/* Pin Change Mask Register */ +#define PCMSK _SFR_MEM16(0x6B) + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +/* Timer/Counter 0 Interrupt Mask Register */ +#define TIMSK0 _SFR_MEM8(0x6E) +#define OCIE0A 1 +#define TOIE0 0 + +/* Timer/Counter 1 Interrupt Mask Register */ +#define TIMSK1 _SFR_MEM8(0x6F) +#define ICIE1 5 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +/* Timer/Counter 2 Interrupt Mask Register */ +#define TIMSK2 _SFR_MEM8(0x70) +#define OCIE2A 1 +#define TOIE2 0 + +/* ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +/* ADC Control and Status Register A */ +#define ADCSRA _SFR_MEM8(0x7A) +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x7B) +#define ACME 6 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +/* ADC Multiplex Selection Register */ +#define ADMUX _SFR_MEM8(0x7C) +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +/* Digital Input Disable Register 1 */ +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN1D 1 +#define AIN0D 0 + +/* Timer/Counter1 Control Register A */ +#define TCCR1A _SFR_MEM8(0x80) +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define WGM11 1 +#define WGM10 0 + +/* Timer/Counter1 Control Register B */ +#define TCCR1B _SFR_MEM8(0x81) +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Timer/Counter1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1A 7 +#define FOC1B 6 + +/* Timer/Counter1 Register */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Timer/Counter1 Input Capture Register */ +#define ICR1 _SFR_MEM16(0x86) +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Timer/Counter1 Output Compare Registare B */ +#define OCR1B _SFR_MEM16(0x8A) +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Timer/Counter2 Control Register A */ +#define TCCR2A _SFR_MEM8(0xB0) +#define FOC2A 7 +#define WGM20 6 +#define COM2A1 5 +#define COM2A0 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* Timer/Counter2 Register */ +#define TCNT2 _SFR_MEM8(0xB2) + +/* Timer/Counter2 Output Compare Register */ +#define OCR2A _SFR_MEM8(0xB3) + +/* Asynchronous Status Register */ +#define ASSR _SFR_MEM8(0xB6) +#define EXCLK 4 +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* USI Control Register */ +#define USICR _SFR_MEM8(0xB8) +#define USISIE 7 +#define USIOIE 6 +#define USIWM1 5 +#define USIWM0 4 +#define USICS1 3 +#define USICS0 2 +#define USICLK 1 +#define USITC 0 + +/* USI Status Register */ +#define USISR _SFR_MEM8(0xB9) +#define USISIF 7 +#define USIOIF 6 +#define USIPF 5 +#define USIDC 4 +#define USICNT3 3 +#define USICNT2 2 +#define USICNT1 1 +#define USICNT0 0 + +/* USI Data Register */ +#define USIDR _SFR_MEM8(0xBA) + +/* USART0 Control and Status Register A */ +#define UCSR0A _SFR_MEM8(0xC0) +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + +/* USART0 Control and Status Register B */ +#define UCSR0B _SFR_MEM8(0xC1) +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + +/* USART0 Control and Status Register C */ +#define UCSR0C _SFR_MEM8(0xC2) +#define UMSEL0 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPOL0 0 + +/* USART0 Baud Rate Register */ +#define UBRR0 _SFR_MEM16(0xC4) +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +/* USART0 I/O Data Register */ +#define UDR0 _SFR_MEM8(0xC6) + +/* LCD Control and Status Register A */ +#define LCDCRA _SFR_MEM8(0xE4) +#define LCDEN 7 +#define LCDAB 6 +#define LCDIF 4 +#define LCDIE 3 +#define LCDBD 2 +#define LCDCCD 1 +#define LCDBL 0 + +/* LCD Control and Status Register B */ +#define LCDCRB _SFR_MEM8(0xE5) +#define LCDCS 7 +#define LCD2B 6 +#define LCDMUX1 5 +#define LCDMUX0 4 +#define LCDPM2 2 +#define LCDPM1 1 +#define LCDPM0 0 + +/* LCD Frame Rate Register */ +#define LCDFRR _SFR_MEM8(0xE6) +#define LCDPS2 6 +#define LCDPS1 5 +#define LCDPS0 4 +#define LCDCD2 2 +#define LCDCD1 1 +#define LCDCD0 0 + +/* LCD Contrast Control Register */ +#define LCDCCR _SFR_MEM8(0xE7) +#define LCDDC2 7 +#define LCDDC1 6 +#define LCDDC0 5 +#define LCDMDT 4 +#define LCDCC3 3 +#define LCDCC2 2 +#define LCDCC1 1 +#define LCDCC0 0 + +/* LCD Memory mapping */ +#define LCDDR0 _SFR_MEM8(0xEC) +#define SEG007 7 +#define SEG006 6 +#define SEG005 5 +#define SEG004 4 +#define SEG003 3 +#define SEG002 2 +#define SEG001 1 +#define SEG000 0 + +#define LCDDR1 _SFR_MEM8(0xED) +#define SEG015 7 +#define SEG014 6 +#define SEG013 5 +#define SEG012 4 +#define SEG011 3 +#define SEG010 2 +#define SEG009 1 +#define SEG008 0 + +#define LCDDR2 _SFR_MEM8(0xEE) +#define SEG023 7 +#define SEG022 6 +#define SEG021 5 +#define SEG020 4 +#define SEG019 3 +#define SEG018 2 +#define SEG017 1 +#define SEG016 0 + +#define LCDDR3 _SFR_MEM8(0xEF) +#define SEG024 0 + +#define LCDDR5 _SFR_MEM8(0xF1) +#define SEG107 7 +#define SEG106 6 +#define SEG105 5 +#define SEG104 4 +#define SEG103 3 +#define SEG102 2 +#define SEG101 1 +#define SEG100 0 + +#define LCDDR6 _SFR_MEM8(0xF2) +#define SEG115 7 +#define SEG114 6 +#define SEG113 5 +#define SEG112 4 +#define SEG111 3 +#define SEG110 2 +#define SEG109 1 +#define SEG108 0 + +#define LCDDR7 _SFR_MEM8(0xF3) +#define SEG123 7 +#define SEG122 6 +#define SEG121 5 +#define SEG120 4 +#define SEG119 3 +#define SEG118 2 +#define SEG117 1 +#define SEG116 0 + +#define LCDDR8 _SFR_MEM8(0xF4) +#define SEG124 0 + +#define LCDDR10 _SFR_MEM8(0xF6) +#define SEG207 7 +#define SEG206 6 +#define SEG205 5 +#define SEG204 4 +#define SEG203 3 +#define SEG202 2 +#define SEG201 1 +#define SEG200 0 + +#define LCDDR11 _SFR_MEM8(0xF7) +#define SEG215 7 +#define SEG214 6 +#define SEG213 5 +#define SEG212 4 +#define SEG211 3 +#define SEG210 2 +#define SEG209 1 +#define SEG208 0 + +#define LCDDR12 _SFR_MEM8(0xF8) +#define SEG223 7 +#define SEG222 6 +#define SEG221 5 +#define SEG220 4 +#define SEG219 3 +#define SEG218 2 +#define SEG217 1 +#define SEG216 0 + +#define LCDDR13 _SFR_MEM8(0xF9) +#define SEG224 0 + +#define LCDDR15 _SFR_MEM8(0xFB) +#define SEG307 7 +#define SEG306 6 +#define SEG305 5 +#define SEG304 4 +#define SEG303 3 +#define SEG302 2 +#define SEG301 1 +#define SEG300 0 + +#define LCDDR16 _SFR_MEM8(0xFC) +#define SEG315 7 +#define SEG314 6 +#define SEG313 5 +#define SEG312 4 +#define SEG311 3 +#define SEG310 2 +#define SEG309 1 +#define SEG308 0 + +#define LCDDR17 _SFR_MEM8(0xFD) +#define SEG323 7 +#define SEG322 6 +#define SEG321 5 +#define SEG320 4 +#define SEG319 3 +#define SEG318 2 +#define SEG317 1 +#define SEG316 0 + +#define LCDDR18 _SFR_MEM8(0xFE) +#define SEG324 0 + +/* LCDDR0-18 */ +#define SEG24 0 + +#define SEG23 7 +#define SEG22 6 +#define SEG21 5 +#define SEG20 4 +#define SEG19 3 +#define SEG18 2 +#define SEG17 1 +#define SEG16 0 + +#define SEG15 7 +#define SEG14 6 +#define SEG13 5 +#define SEG12 4 +#define SEG11 3 +#define SEG10 2 +#define SEG9 1 +#define SEG8 0 + +#define SEG7 7 +#define SEG6 6 +#define SEG5 5 +#define SEG4 4 +#define SEG3 3 +#define SEG2 2 +#define SEG1 1 +#define SEG0 0 + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define SIG_USART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define SIG_USART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_USART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* LCD Start of Frame */ +#define LCD_vect _VECTOR(22) +#define SIG_LCD _VECTOR(22) + +#define _VECTORS_SIZE 92 + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x4FF +#define XRAMEND 0x4FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x05 + + +#endif /* _AVR_IOM169P_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom16hva.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom16hva.h new file mode 100644 index 0000000..33adf15 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom16hva.h @@ -0,0 +1,75 @@ +/* Copyright (c) 2007, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom16hva.h,v 1.2.2.5 2008/10/17 23:27:48 arcanum Exp $ */ + +/* iom16hva.h - definitions for ATmega16HVA. */ + +#ifndef _AVR_IOM16HVA_H_ +#define _AVR_IOM16HVA_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x2FF +#define XRAMEND 0x2FF +#define E2END 0xFF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_SUT0 (unsigned char)~_BV(0) +#define FUSE_SUT1 (unsigned char)~_BV(1) +#define FUSE_SUT2 (unsigned char)~_BV(2) +#define FUSE_SELFPRGEN (unsigned char)~_BV(3) +#define FUSE_DWEN (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_EESAVE (unsigned char)~_BV(6) +#define FUSE_WDTON (unsigned char)~_BV(7) +#define FUSE_DEFAULT (FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x0C + + +#endif /* _AVR_IOM16HVA_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom2560.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom2560.h new file mode 100644 index 0000000..07039ad --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom2560.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2005 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id */ + +/* avr/iom2560.h - definitions for ATmega2560 */ + +#ifndef _AVR_IOM2560_H_ +#define _AVR_IOM2560_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x21FF +#define XRAMEND 0xFFFF +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x3FFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x98 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IOM2560_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom2561.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom2561.h new file mode 100644 index 0000000..fd379a2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom2561.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2005 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id */ + +/* avr/iom2561.h - definitions for ATmega2561 */ + +#ifndef _AVR_IOM2561_H_ +#define _AVR_IOM2561_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x21FF +#define XRAMEND 0xFFFF +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x3FFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x98 +#define SIGNATURE_2 0x02 + + +#endif /* _AVR_IOM2561_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32.h new file mode 100644 index 0000000..0b912e5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32.h @@ -0,0 +1,696 @@ +/* Copyright (c) 2002, Steinar Haugen + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom32.h,v 1.11.2.5 2008/10/17 23:27:48 arcanum Exp $ */ + +/* avr/iom32.h - definitions for ATmega32 */ + +#ifndef _AVR_IOM32_H_ +#define _AVR_IOM32_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom32.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ +#define TWBR _SFR_IO8(0x00) +#define TWSR _SFR_IO8(0x01) +#define TWAR _SFR_IO8(0x02) +#define TWDR _SFR_IO8(0x03) + +/* ADC */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) +#define ADCSRA _SFR_IO8(0x06) +#define ADMUX _SFR_IO8(0x07) + +/* analog comparator */ +#define ACSR _SFR_IO8(0x08) + +/* USART */ +#define UBRRL _SFR_IO8(0x09) +#define UCSRB _SFR_IO8(0x0A) +#define UCSRA _SFR_IO8(0x0B) +#define UDR _SFR_IO8(0x0C) + +/* SPI */ +#define SPCR _SFR_IO8(0x0D) +#define SPSR _SFR_IO8(0x0E) +#define SPDR _SFR_IO8(0x0F) + +/* Port D */ +#define PIND _SFR_IO8(0x10) +#define DDRD _SFR_IO8(0x11) +#define PORTD _SFR_IO8(0x12) + +/* Port C */ +#define PINC _SFR_IO8(0x13) +#define DDRC _SFR_IO8(0x14) +#define PORTC _SFR_IO8(0x15) + +/* Port B */ +#define PINB _SFR_IO8(0x16) +#define DDRB _SFR_IO8(0x17) +#define PORTB _SFR_IO8(0x18) + +/* Port A */ +#define PINA _SFR_IO8(0x19) +#define DDRA _SFR_IO8(0x1A) +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define UBRRH _SFR_IO8(0x20) +#define UCSRC UBRRH + +#define WDTCR _SFR_IO8(0x21) + +#define ASSR _SFR_IO8(0x22) + +/* Timer 2 */ +#define OCR2 _SFR_IO8(0x23) +#define TCNT2 _SFR_IO8(0x24) +#define TCCR2 _SFR_IO8(0x25) + +/* Timer 1 */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) +#define TCCR1B _SFR_IO8(0x2E) +#define TCCR1A _SFR_IO8(0x2F) + +#define SFIOR _SFR_IO8(0x30) + +#define OSCCAL _SFR_IO8(0x31) +#define OCDR OSCCAL + +/* Timer 0 */ +#define TCNT0 _SFR_IO8(0x32) +#define TCCR0 _SFR_IO8(0x33) + +#define MCUSR _SFR_IO8(0x34) +#define MCUCSR MCUSR +#define MCUCR _SFR_IO8(0x35) + +#define TWCR _SFR_IO8(0x36) + +#define SPMCR _SFR_IO8(0x37) + +#define TIFR _SFR_IO8(0x38) +#define TIMSK _SFR_IO8(0x39) + +#define GIFR _SFR_IO8(0x3A) +#define GIMSK _SFR_IO8(0x3B) +#define GICR GIMSK + +#define OCR0 _SFR_IO8(0x3C) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART, Rx Complete */ +#define USART_RXC_vect _VECTOR(13) +#define SIG_USART_RECV _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(14) +#define SIG_USART_DATA _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART, Tx Complete */ +#define USART_TXC_vect _VECTOR(15) +#define SIG_USART_TRANS _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(16) +#define SIG_ADC _VECTOR(16) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(17) +#define SIG_EEPROM_READY _VECTOR(17) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(19) +#define SIG_2WIRE_SERIAL _VECTOR(19) + +/* Store Program Memory Ready */ +#define SPM_RDY_vect _VECTOR(20) +#define SIG_SPM_READY _VECTOR(20) + +#define _VECTORS_SIZE 84 + +/* Bit numbers */ + +/* GICR */ +#define INT1 7 +#define INT0 6 +#define INT2 5 +#define IVSEL 1 +#define IVCE 0 + +/* GIFR */ +#define INTF1 7 +#define INTF0 6 +#define INTF2 5 + +/* TIMSK */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define OCIE0 1 +#define TOIE0 0 + +/* TIFR */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define OCF0 1 +#define TOV0 0 + +/* SPMCR */ +#define SPMIE 7 +#define RWWSB 6 +/* bit 5 reserved */ +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +/* bit 1 reserved */ +#define TWIE 0 + +/* TWAR */ +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +/* TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +/* bit 2 reserved */ +#define TWPS1 1 +#define TWPS0 0 + +/* MCUCR */ +#define SE 7 +#define SM2 6 +#define SM1 5 +#define SM0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* MCUCSR */ +#define JTD 7 +#define ISC2 6 +/* bit 5 reserved */ +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* SFIOR */ +#define ADTS2 7 +#define ADTS1 6 +#define ADTS0 5 +/* bit 4 reserved */ +#define ACME 3 +#define PUD 2 +#define PSR2 1 +#define PSR10 0 + +/* TCCR0 */ +#define FOC0 7 +#define WGM00 6 +#define COM01 5 +#define COM00 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR2 */ +#define FOC2 7 +#define WGM20 6 +#define COM21 5 +#define COM20 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* ASSR */ +/* bits 7-4 reserved */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define WGM11 1 +#define WGM10 0 + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +/* bit 5 reserved */ +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* WDTCR */ +/* bits 7-5 reserved */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* PA7-PA0 = ADC7-ADC0 */ +/* PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* + PB7 = SCK + PB6 = MISO + PB5 = MOSI + PB4 = SS# + PB3 = OC0/AIN1 + PB2 = INT2/AIN0 + PB1 = T1 + PB0 = XCK/T0 + */ + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* + PC7 = TOSC2 + PC6 = TOSC1 + PC1 = SDA + PC0 = SCL + */ +/* PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* + PD7 = OC2 + PD6 = ICP + PD5 = OC1A + PD4 = OC1B + PD3 = INT1 + PD2 = INT0 + PD1 = TXD + PD0 = RXD + */ + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +/* bits 5-1 reserved */ +#define SPI2X 0 + +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UCSRA */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define PE 2 +#define U2X 1 +#define MPCM 0 + +/* UCSRB */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ2 2 +#define RXB8 1 +#define TXB8 0 + +/* UCSRC */ +#define URSEL 7 +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* ACSR */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADCSRA */ +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x85F +#define XRAMEND 0x85F +#define E2END 0x3FF +#define E2PAGESIZE 4 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_CKOPT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x02 + + +#endif /* _AVR_IOM32_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom323.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom323.h new file mode 100644 index 0000000..a661205 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom323.h @@ -0,0 +1,688 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom323.h,v 1.13.2.5 2008/10/17 23:27:48 arcanum Exp $ */ + +/* avr/iom323.h - definitions for ATmega323 */ + +#ifndef _AVR_IOM323_H_ +#define _AVR_IOM323_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom323.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ +#define TWBR _SFR_IO8(0x00) +#define TWSR _SFR_IO8(0x01) +#define TWAR _SFR_IO8(0x02) +#define TWDR _SFR_IO8(0x03) + +/* ADC */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) +#define ADCSR _SFR_IO8(0x06) +#define ADMUX _SFR_IO8(0x07) + +/* analog comparator */ +#define ACSR _SFR_IO8(0x08) + +/* UART */ +#define UBRR _SFR_IO8(0x09) +#define UBRRL UBRR +#define UCSRB _SFR_IO8(0x0A) +#define UCSRA _SFR_IO8(0x0B) +#define UDR _SFR_IO8(0x0C) + +/* SPI */ +#define SPCR _SFR_IO8(0x0D) +#define SPSR _SFR_IO8(0x0E) +#define SPDR _SFR_IO8(0x0F) + +/* Port D */ +#define PIND _SFR_IO8(0x10) +#define DDRD _SFR_IO8(0x11) +#define PORTD _SFR_IO8(0x12) + +/* Port C */ +#define PINC _SFR_IO8(0x13) +#define DDRC _SFR_IO8(0x14) +#define PORTC _SFR_IO8(0x15) + +/* Port B */ +#define PINB _SFR_IO8(0x16) +#define DDRB _SFR_IO8(0x17) +#define PORTB _SFR_IO8(0x18) + +/* Port A */ +#define PINA _SFR_IO8(0x19) +#define DDRA _SFR_IO8(0x1A) +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define UBRRH _SFR_IO8(0x20) +#define UCSRC UBRRH + +#define WDTCR _SFR_IO8(0x21) + +#define ASSR _SFR_IO8(0x22) + +/* Timer 2 */ +#define OCR2 _SFR_IO8(0x23) +#define TCNT2 _SFR_IO8(0x24) +#define TCCR2 _SFR_IO8(0x25) + +/* Timer 1 */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) +#define TCCR1B _SFR_IO8(0x2E) +#define TCCR1A _SFR_IO8(0x2F) + +#define SFIOR _SFR_IO8(0x30) + +#define OSCCAL _SFR_IO8(0x31) + +/* Timer 0 */ +#define TCNT0 _SFR_IO8(0x32) +#define TCCR0 _SFR_IO8(0x33) + +#define MCUSR _SFR_IO8(0x34) +#define MCUCSR MCUSR +#define MCUCR _SFR_IO8(0x35) + +#define TWCR _SFR_IO8(0x36) + +#define SPMCR _SFR_IO8(0x37) + +#define TIFR _SFR_IO8(0x38) +#define TIMSK _SFR_IO8(0x39) + +#define GIFR _SFR_IO8(0x3A) +#define GIMSK _SFR_IO8(0x3B) +#define GICR GIMSK + +#define OCR0 _SFR_IO8(0x3C) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART, Rx Complete */ +#define USART_RXC_vect _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART, Tx Complete */ +#define USART_TXC_vect _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(16) +#define SIG_ADC _VECTOR(16) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(17) +#define SIG_EEPROM_READY _VECTOR(17) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(19) +#define SIG_2WIRE_SERIAL _VECTOR(19) + +/* Store Program Memory Ready */ +#define SPM_RDY_vect _VECTOR(20) + +#define _VECTORS_SIZE 80 + + +/* Bit numbers */ + +/* GIMSK */ +#define INT1 7 +#define INT0 6 +#define INT2 5 +#define IVSEL 1 +#define IVCE 0 + +/* GIFR */ +#define INTF1 7 +#define INTF0 6 +#define INTF2 5 + +/* TIMSK */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define OCIE0 1 +#define TOIE0 0 + +/* TIFR */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define OCF0 1 +#define TOV0 0 + +/* SPMCR */ +#define SPMIE 7 +#define ASB 6 +/* bit 5 reserved */ +#define ASRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWI_TST 1 +#define TWIE 0 + +/* TWAR */ +#define TWGCE 0 + +/* TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +/* bits 2-0 reserved */ + +/* MCUCR */ +/* bit 7 reserved (SM2?) */ +#define SE 7 +#define SM2 6 +#define SM1 5 +#define SM0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* MCUCSR */ +#define JTD 7 +#define ISC2 6 +#define EIH 5 +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* SFIOR */ +#define RPDD 7 +#define RPDC 6 +#define RPDB 5 +#define RPDA 4 +#define ACME 3 +#define PUD 2 +#define PSR2 1 +#define PSR10 0 + +/* TCCR0 */ +#define FOC0 7 +#define PWM0 6 +#define COM01 5 +#define COM00 4 +#define CTC0 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR2 */ +#define FOC2 7 +#define PWM2 6 +#define COM21 5 +#define COM20 4 +#define CTC2 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* ASSR */ +/* bits 7-4 reserved */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define PWM11 1 +#define PWM10 0 + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +/* bit 5 reserved */ +#define CTC11 4 +#define CTC10 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* WDTCR */ +/* bits 7-5 reserved */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* PA7-PA0 = ADC7-ADC0 */ +/* PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* + PB7 = SCK + PB6 = MISO + PB5 = MOSI + PB4 = SS# + PB3 = AIN1 + PB2 = AIN0 + PB1 = T1 + PB0 = T0 + */ + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* + PC7 = TOSC2 + PC6 = TOSC1 + PC1 = SDA + PC0 = SCL + */ +/* PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* + PD7 = OC2 + PD6 = ICP + PD5 = OC1A + PD4 = OC1B + PD3 = INT1 + PD2 = INT0 + PD1 = TXD + PD0 = RXD + */ + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* + PE2 = ALE + PE1 = OC1B + PE0 = ICP / INT2 + */ + +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UCSRA */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define PE 2 +#define U2X 1 +#define MPCM 0 + +/* UCSRB */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ2 2 +#define CHR9 2 +#define RXB8 1 +#define TXB8 0 + +/* UCSRC */ +#define URSEL 7 +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* ACSR */ +#define ACD 7 +#define AINBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADCSR */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x85F +#define XRAMEND 0x85F +#define E2END 0x3FF +#define E2PAGESIZE 0 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN & FUSE_JTAGEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x01 + + +#endif /* _AVR_IOM323_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom324.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom324.h new file mode 100644 index 0000000..8ecfd83 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom324.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2005, 2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iom324.h - definitions for ATmega324 */ + +/* $Id: iom324.h,v 1.3.2.4 2008/08/14 00:08:02 arcanum Exp $ */ + +#ifndef _AVR_IOM324_H_ +#define _AVR_IOM324_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x08FF +#define XRAMEND 0x08FF +#define E2END 0x3FF +#define E2PAGESIZE 4 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +#endif /* _AVR_IOM324_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom325.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom325.h new file mode 100644 index 0000000..abca23b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom325.h @@ -0,0 +1,821 @@ +/* Copyright (c) 2004, 2005, 2006, 2007 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom325.h,v 1.12.2.5 2008/10/17 23:27:48 arcanum Exp $ */ + +/* avr/iom325.h - definitions for ATmega325 and ATmega325P. */ + +#ifndef _AVR_IOM325_H_ +#define _AVR_IOM325_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom325.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#if defined(__AVR_ATmega325P__) +#define BODSE 5 +#define BODS 6 +#endif +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +/* Reserved [0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xFF] */ + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* Vector 22 is Reserved */ + +#define _VECTORS_SIZE 92 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x8FF +#define XRAMEND 0x8FF +#define E2END 0x3FF +#define E2PAGESIZE 4 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x05 + + +#endif /* _AVR_IOM325_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom3250.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom3250.h new file mode 100644 index 0000000..444cac4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom3250.h @@ -0,0 +1,911 @@ +/* Copyright (c) 2004, 2005, 2006, 2007 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom3250.h,v 1.12.2.6 2008/10/17 23:27:48 arcanum Exp $ */ + +/* avr/iom3250.h - definitions for ATmega3250 and ATmega3250P. */ + +#ifndef _AVR_IOM3250_H_ +#define _AVR_IOM3250_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom3250.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 +#define PCIF2 6 +#define PCIF3 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 +#define PCIE2 6 +#define PCIE3 7 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#if defined(__AVR_ATmega3250P__) +#define BODSE 5 +#define BODS 6 +#endif +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x72] */ + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 + +/* Reserved [0x74..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xD7] */ + +#define PINH _SFR_MEM8(0xD8) +#define PINH7 7 +#define PINH6 6 +#define PINH5 5 +#define PINH4 4 +#define PINH3 3 +#define PINH2 2 +#define PINH1 1 +#define PINH0 0 + +#define DDRH _SFR_MEM8(0xD9) +#define DDH7 7 +#define DDH6 6 +#define DDH5 5 +#define DDH4 4 +#define DDH3 3 +#define DDH2 2 +#define DDH1 1 +#define DDH0 0 + +#define PORTH _SFR_MEM8(0xDA) +#define PH7 7 +#define PH6 6 +#define PH5 5 +#define PH4 4 +#define PH3 3 +#define PH2 2 +#define PH1 1 +#define PH0 0 + +#define PINJ _SFR_MEM8(0xDB) +#define PINJ6 6 +#define PINJ5 5 +#define PINJ4 4 +#define PINJ3 3 +#define PINJ2 2 +#define PINJ1 1 +#define PINJ0 0 + +#define DDRJ _SFR_MEM8(0xDC) +#define DDJ6 6 +#define DDJ5 5 +#define DDJ4 4 +#define DDJ3 3 +#define DDJ2 2 +#define DDJ1 1 +#define DDJ0 0 + +#define PORTJ _SFR_MEM8(0xDD) +#define PJ6 6 +#define PJ5 5 +#define PJ4 4 +#define PJ3 3 +#define PJ2 2 +#define PJ1 1 +#define PJ0 0 + +/* Reserved [0xDE..0xFF] */ + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(13) +#define USART0_RX_vect _VECTOR(13) /* Alias */ +#define SIG_UART_RECV _VECTOR(13) + +/* USART Data register Empty */ +#define USART_UDRE_vect _VECTOR(14) +#define USART0_UDRE_vect _VECTOR(14) /* Alias */ +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define USART_TX_vect _VECTOR(15) /* Alias */ +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* Pin Change Interrupt Request 2 */ +#define PCINT2_vect _VECTOR(23) +#define SIG_PIN_CHANGE2 _VECTOR(23) + +/* Pin Change Interrupt Request 3 */ +#define PCINT3_vect _VECTOR(24) +#define SIG_PIN_CHANGE3 _VECTOR(24) + +#define _VECTORS_SIZE 100 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x8FF +#define XRAMEND 0x8FF +#define E2END 0x3FF +#define E2PAGESIZE 4 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x06 + + +#endif /* _AVR_IOM3250_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom328p.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom328p.h new file mode 100644 index 0000000..74ba360 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom328p.h @@ -0,0 +1,875 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom328p.h,v 1.3.2.12 2008/10/17 23:27:49 arcanum Exp $ */ + +/* avr/iom328p.h - definitions for ATmega328P. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom328p.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM328P_H_ +#define _AVR_IOM328P_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 + +#define _EEPROM_REG_LOCATIONS_ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define BODSE 5 +#define BODS 6 + +#define SPMCSR _SFR_IO8(0x37) +#define SELFPRGEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 0 +#define TWAM1 1 +#define TWAM2 2 +#define TWAM3 3 +#define TWAM4 4 +#define TWAM5 5 +#define TWAM6 6 + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0xC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCPHA0 1 +#define UCSZ01 2 +#define UDORD0 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0xC5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0xC6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define PCINT0_vect _VECTOR(3) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */ +#define PCINT2_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */ +#define WDT_vect _VECTOR(6) /* Watchdog Time-out Interrupt */ +#define TIMER2_COMPA_vect _VECTOR(7) /* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect _VECTOR(8) /* Timer/Counter2 Compare Match A */ +#define TIMER2_OVF_vect _VECTOR(9) /* Timer/Counter2 Overflow */ +#define TIMER1_CAPT_vect _VECTOR(10) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(11) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(13) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(14) /* TimerCounter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(15) /* TimerCounter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(16) /* Timer/Couner0 Overflow */ +#define SPI_STC_vect _VECTOR(17) /* SPI Serial Transfer Complete */ +#define USART_RX_vect _VECTOR(18) /* USART Rx Complete */ +#define USART_UDRE_vect _VECTOR(19) /* USART, Data Register Empty */ +#define USART_TX_vect _VECTOR(20) /* USART Tx Complete */ +#define ADC_vect _VECTOR(21) /* ADC Conversion Complete */ +#define EE_READY_vect _VECTOR(22) /* EEPROM Ready */ +#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */ +#define TWI_vect _VECTOR(24) /* Two-wire Serial Interface */ +#define SPM_READY_vect _VECTOR(25) /* Store Program Memory Read */ + +#define _VECTORS_SIZE (26 * 4) + + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x8FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x3FF +#define E2PAGESIZE 4 +#define FLASHEND 0x7FFF + + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x0F + + +#endif /* _AVR_IOM328P_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom329.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom329.h new file mode 100644 index 0000000..a34a0e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom329.h @@ -0,0 +1,1003 @@ +/* Copyright (c) 2004 Eric B. Weddington + Copyright (c) 2005, 2006, 2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iom329.h - definitions for ATmega329 and ATmega329P. */ + +#ifndef _AVR_IOM329_H_ +#define _AVR_IOM329_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom329.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#if defined(__AVR_ATmega329P__) +#define BODSE 5 +#define BODS 6 +#endif +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRLCD 4 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +/* Reserved [0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xE3] */ + +#define LCDCRA _SFR_MEM8(0XE4) +#define LCDBL 0 +#if defined(__AVR_ATmega329P__) +#define LCDCCD 1 +#define LCDBD 2 +#endif +#define LCDIE 3 +#define LCDIF 4 +#define LCDAB 6 +#define LCDEN 7 + +#define LCDCRB _SFR_MEM8(0XE5) +#define LCDPM0 0 +#define LCDPM1 1 +#define LCDPM2 2 +#define LCDMUX0 4 +#define LCDMUX1 5 +#define LCD2B 6 +#define LCDCS 7 + +#define LCDFRR _SFR_MEM8(0XE6) +#define LCDCD0 0 +#define LCDCD1 1 +#define LCDCD2 2 +#define LCDPS0 4 +#define LCDPS1 5 +#define LCDPS2 6 + +#define LCDCCR _SFR_MEM8(0XE7) +#define LCDCC0 0 +#define LCDCC1 1 +#define LCDCC2 2 +#define LCDCC3 3 +#if defined(__AVR_ATmega329P__) +#define LCDMDT 4 +#endif +#define LCDDC0 5 +#define LCDDC1 6 +#define LCDDC2 7 + +/* Reserved [0xE8..0xEB] */ + +#define LCDDR00 _SFR_MEM8(0XEC) +#define SEG000 0 +#define SEG001 1 +#define SEG002 2 +#define SEG003 3 +#define SEG004 4 +#define SEG005 5 +#define SEG006 6 +#define SEG007 7 + +#define LCDDR01 _SFR_MEM8(0XED) +#define SEG008 0 +#define SEG009 1 +#define SEG010 2 +#define SEG011 3 +#define SEG012 4 +#define SEG013 5 +#define SEG014 6 +#define SEG015 7 + +#define LCDDR02 _SFR_MEM8(0XEE) +#define SEG016 0 +#define SEG017 1 +#define SEG018 2 +#define SEG019 3 +#define SEG020 4 +#define SEG021 5 +#define SEG022 6 +#define SEG023 7 + +#define LCDDR03 _SFR_MEM8(0XEF) +#define SEG024 0 + +/* Reserved [0xF0] */ + +#define LCDDR05 _SFR_MEM8(0XF1) +#define SEG100 0 +#define SEG101 1 +#define SEG102 2 +#define SEG103 3 +#define SEG104 4 +#define SEG105 5 +#define SEG106 6 +#define SEG107 7 + +#define LCDDR06 _SFR_MEM8(0XF2) +#define SEG108 0 +#define SEG109 1 +#define SEG110 2 +#define SEG111 3 +#define SEG112 4 +#define SEG113 5 +#define SEG114 6 +#define SEG115 7 + +#define LCDDR07 _SFR_MEM8(0XF3) +#define SEG116 0 +#define SEG117 1 +#define SEG118 2 +#define SEG119 3 +#define SEG120 4 +#define SEG121 5 +#define SEG122 6 +#define SEG123 7 + +#define LCDDR08 _SFR_MEM8(0XF4) +#define SEG124 0 + +/* Reserved [0xF5] */ + +#define LCDDR10 _SFR_MEM8(0XF6) +#define SEG200 0 +#define SEG201 1 +#define SEG202 2 +#define SEG203 3 +#define SEG204 4 +#define SEG205 5 +#define SEG206 6 +#define SEG207 7 + +#define LCDDR11 _SFR_MEM8(0XF7) +#define SEG208 0 +#define SEG209 1 +#define SEG210 2 +#define SEG211 3 +#define SEG212 4 +#define SEG213 5 +#define SEG214 6 +#define SEG215 7 + +#define LCDDR12 _SFR_MEM8(0XF8) +#define SEG216 0 +#define SEG217 1 +#define SEG218 2 +#define SEG219 3 +#define SEG220 4 +#define SEG221 5 +#define SEG222 6 +#define SEG223 7 + +#define LCDDR13 _SFR_MEM8(0XF9) +#define SEG224 0 + +/* Reserved [0xFA] */ + +#define LCDDR15 _SFR_MEM8(0XFB) +#define SEG300 0 +#define SEG301 1 +#define SEG302 2 +#define SEG303 3 +#define SEG304 4 +#define SEG305 5 +#define SEG306 6 +#define SEG307 7 + +#define LCDDR16 _SFR_MEM8(0XFC) +#define SEG308 0 +#define SEG309 1 +#define SEG310 2 +#define SEG311 3 +#define SEG312 4 +#define SEG313 5 +#define SEG314 6 +#define SEG315 7 + +#define LCDDR17 _SFR_MEM8(0XFD) +#define SEG316 0 +#define SEG217 1 +#define SEG318 2 +#define SEG319 3 +#define SEG320 4 +#define SEG321 5 +#define SEG322 6 +#define SEG323 7 + +#define LCDDR18 _SFR_MEM8(0XFE) +#define SEG324 0 + +/* Reserved [0xFF] */ + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* LCD Start of Frame */ +#define LCD_vect _VECTOR(22) +#define SIG_LCD _VECTOR(22) + +#define _VECTORS_SIZE 92 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x8FF +#define XRAMEND 0x8FF +#define E2END 0x3FF +#define E2PAGESIZE 4 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IOM329_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom3290.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom3290.h new file mode 100644 index 0000000..50ec793 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom3290.h @@ -0,0 +1,1155 @@ +/* Copyright (c) 2004 Eric B. Weddington + Copyright (c) 2005, 2006, 2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iom3290.h - definitions for ATmega3290 and ATmega3290P. */ + +#ifndef _AVR_IOM3290_H_ +#define _AVR_IOM3290_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom3290.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 +#define PCIF2 6 +#define PCIF3 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 +#define PCIE2 6 +#define PCIE3 7 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#if defined(__AVR_ATmega3290P__) +#define BODSE 5 +#define BODS 6 +#endif +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRLCD 4 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x72] */ + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 + +/* Reserved [0x74..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xD7] */ + +#define PINH _SFR_MEM8(0xD8) +#define PINH7 7 +#define PINH6 6 +#define PINH5 5 +#define PINH4 4 +#define PINH3 3 +#define PINH2 2 +#define PINH1 1 +#define PINH0 0 + +#define DDRH _SFR_MEM8(0xD9) +#define DDH7 7 +#define DDH6 6 +#define DDH5 5 +#define DDH4 4 +#define DDH3 3 +#define DDH2 2 +#define DDH1 1 +#define DDH0 0 + +#define PORTH _SFR_MEM8(0xDA) +#define PH7 7 +#define PH6 6 +#define PH5 5 +#define PH4 4 +#define PH3 3 +#define PH2 2 +#define PH1 1 +#define PH0 0 + +#define PINJ _SFR_MEM8(0xDB) +#define PINJ6 6 +#define PINJ5 5 +#define PINJ4 4 +#define PINJ3 3 +#define PINJ2 2 +#define PINJ1 1 +#define PINJ0 0 + +#define DDRJ _SFR_MEM8(0xDC) +#define DDJ6 6 +#define DDJ5 5 +#define DDJ4 4 +#define DDJ3 3 +#define DDJ2 2 +#define DDJ1 1 +#define DDJ0 0 + +#define PORTJ _SFR_MEM8(0xDD) +#define PJ6 6 +#define PJ5 5 +#define PJ4 4 +#define PJ3 3 +#define PJ2 2 +#define PJ1 1 +#define PJ0 0 + +/* Reserved [0xDE..0xE3] */ + +#define LCDCRA _SFR_MEM8(0XE4) +#define LCDBL 0 +#if defined(__AVR_ATmega3290P__) +#define LCDCCD 1 +#define LCDBD 2 +#endif +#define LCDIE 3 +#define LCDIF 4 +#define LCDAB 6 +#define LCDEN 7 + +#define LCDCRB _SFR_MEM8(0XE5) +#define LCDPM0 0 +#define LCDPM1 1 +#define LCDPM2 2 +#define LCDPM3 3 +#define LCDMUX0 4 +#define LCDMUX1 5 +#define LCD2B 6 +#define LCDCS 7 + +#define LCDFRR _SFR_MEM8(0XE6) +#define LCDCD0 0 +#define LCDCD1 1 +#define LCDCD2 2 +#define LCDPS0 4 +#define LCDPS1 5 +#define LCDPS2 6 + +#define LCDCCR _SFR_MEM8(0XE7) +#define LCDCC0 0 +#define LCDCC1 1 +#define LCDCC2 2 +#define LCDCC3 3 +#if defined(__AVR_ATmega3290P__) +#define LCDMDT 4 +#endif +#define LCDDC0 5 +#define LCDDC1 6 +#define LCDDC2 7 + +/* Reserved [0xE8..0xEB] */ + +#define LCDDR00 _SFR_MEM8(0XEC) +#define SEG000 0 +#define SEG001 1 +#define SEG002 2 +#define SEG003 3 +#define SEG004 4 +#define SEG005 5 +#define SEG006 6 +#define SEG007 7 + +#define LCDDR01 _SFR_MEM8(0XED) +#define SEG008 0 +#define SEG009 1 +#define SEG010 2 +#define SEG011 3 +#define SEG012 4 +#define SEG013 5 +#define SEG014 6 +#define SEG015 7 + +#define LCDDR02 _SFR_MEM8(0XEE) +#define SEG016 0 +#define SEG017 1 +#define SEG018 2 +#define SEG019 3 +#define SEG020 4 +#define SEG021 5 +#define SEG022 6 +#define SEG023 7 + +#define LCDDR03 _SFR_MEM8(0XEF) +#define SEG024 0 +#define SEG025 1 +#define SEG026 2 +#define SEG027 3 +#define SEG028 4 +#define SEG029 5 +#define SEG030 6 +#define SEG031 7 + +#define LCDDR04 _SFR_MEM8(0XF0) +#define SEG032 0 +#define SEG033 1 +#define SEG034 2 +#define SEG035 3 +#define SEG036 4 +#define SEG037 5 +#define SEG038 6 +#define SEG039 7 + +#define LCDDR05 _SFR_MEM8(0XF1) +#define SEG100 0 +#define SEG101 1 +#define SEG102 2 +#define SEG103 3 +#define SEG104 4 +#define SEG105 5 +#define SEG106 6 +#define SEG107 7 + +#define LCDDR06 _SFR_MEM8(0XF2) +#define SEG108 0 +#define SEG109 1 +#define SEG110 2 +#define SEG111 3 +#define SEG112 4 +#define SEG113 5 +#define SEG114 6 +#define SEG115 7 + +#define LCDDR07 _SFR_MEM8(0XF3) +#define SEG116 0 +#define SEG117 1 +#define SEG118 2 +#define SEG119 3 +#define SEG120 4 +#define SEG121 5 +#define SEG122 6 +#define SEG123 7 + +#define LCDDR08 _SFR_MEM8(0XF4) +#define SEG124 0 +#define SEG125 1 +#define SEG126 2 +#define SEG127 3 +#define SEG128 4 +#define SEG129 5 +#define SEG130 6 +#define SEG131 7 + +#define LCDDR09 _SFR_MEM8(0XF5) +#define SEG132 0 +#define SEG133 1 +#define SEG134 2 +#define SEG135 3 +#define SEG136 4 +#define SEG137 5 +#define SEG138 6 +#define SEG139 7 + +#define LCDDR10 _SFR_MEM8(0XF6) +#define SEG200 0 +#define SEG201 1 +#define SEG202 2 +#define SEG203 3 +#define SEG204 4 +#define SEG205 5 +#define SEG206 6 +#define SEG207 7 + +#define LCDDR11 _SFR_MEM8(0XF7) +#define SEG208 0 +#define SEG209 1 +#define SEG210 2 +#define SEG211 3 +#define SEG212 4 +#define SEG213 5 +#define SEG214 6 +#define SEG215 7 + +#define LCDDR12 _SFR_MEM8(0XF8) +#define SEG216 0 +#define SEG217 1 +#define SEG218 2 +#define SEG219 3 +#define SEG220 4 +#define SEG221 5 +#define SEG222 6 +#define SEG223 7 + +#define LCDDR13 _SFR_MEM8(0XF9) +#define SEG224 0 +#define SEG225 1 +#define SEG226 2 +#define SEG227 3 +#define SEG228 4 +#define SEG229 5 +#define SEG230 6 +#define SEG231 7 + +#define LCDDR14 _SFR_MEM8(0XFA) +#define SEG232 0 +#define SEG233 1 +#define SEG234 2 +#define SEG235 3 +#define SEG236 4 +#define SEG237 5 +#define SEG238 6 +#define SEG239 7 + +#define LCDDR15 _SFR_MEM8(0XFB) +#define SEG300 0 +#define SEG301 1 +#define SEG302 2 +#define SEG303 3 +#define SEG304 4 +#define SEG305 5 +#define SEG306 6 +#define SEG307 7 + +#define LCDDR16 _SFR_MEM8(0XFC) +#define SEG308 0 +#define SEG309 1 +#define SEG310 2 +#define SEG311 3 +#define SEG312 4 +#define SEG313 5 +#define SEG314 6 +#define SEG315 7 + +#define LCDDR17 _SFR_MEM8(0XFD) +#define SEG316 0 +#define SEG217 1 +#define SEG318 2 +#define SEG319 3 +#define SEG320 4 +#define SEG321 5 +#define SEG322 6 +#define SEG323 7 + +#define LCDDR18 _SFR_MEM8(0XFE) +#define SEG324 0 +#define SEG325 1 +#define SEG326 2 +#define SEG327 3 +#define SEG328 4 +#define SEG329 5 +#define SEG330 6 +#define SEG331 7 + +#define LCDDR19 _SFR_MEM8(0XFF) +#define SEG332 0 +#define SEG333 1 +#define SEG334 2 +#define SEG335 3 +#define SEG336 4 +#define SEG337 5 +#define SEG338 6 +#define SEG339 7 + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART Data register Empty */ +#define USART_UDRE_vect _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* LCD Start of Frame */ +#define LCD_vect _VECTOR(22) +#define SIG_LCD _VECTOR(22) + +/* Pin Change Interrupt Request 2 */ +#define PCINT2_vect _VECTOR(23) +#define SIG_PIN_CHANGE2 _VECTOR(23) + +/* Pin Change Interrupt Request 3 */ +#define PCINT3_vect _VECTOR(24) +#define SIG_PIN_CHANGE3 _VECTOR(24) + +#define _VECTORS_SIZE 100 + + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x8FF +#define XRAMEND 0x8FF +#define E2END 0x3FF +#define E2PAGESIZE 4 +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x04 + + +#endif /* _AVR_IOM3290_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32c1.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32c1.h new file mode 100644 index 0000000..68b29ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32c1.h @@ -0,0 +1,1146 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom32c1.h,v 1.1.2.7 2008/10/17 23:27:49 arcanum Exp $ */ + +/* avr/iom32c1.h - definitions for ATmega32C1. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom32c1.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM32C1_H_ +#define _AVR_IOM32C1_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINE _SFR_IO8(0x0C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 + +#define DDRE _SFR_IO8(0x0D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 + +#define PORTE _SFR_IO8(0x0E) +#define PORTE0 0 +#define PORTE1 1 +#define PORTE2 2 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define GPIOR1 _SFR_IO8(0x19) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x1A) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define PCIFR _SFR_IO8(0x1B) + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 +#define INT3 3 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSRSYNC 0 +#define ICPSEL1 6 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PLLF 2 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define AC0O 0 +#define AC1O 1 +#define AC2O 2 +#define AC3O 3 +#define AC0IF 4 +#define AC1IF 5 +#define AC2IF 6 +#define AC3IF 7 + +#define DWDR _SFR_IO8(0x31) + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define SPIPS 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRLIN 1 +#define PRSPI 2 +#define PRTIM0 3 +#define PRTIM1 4 +#define PRPSC 5 +#define PRCAN 6 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +#define PCMSK0 _SFR_MEM8(0x6A) + +#define PCMSK1 _SFR_MEM8(0x6B) + +#define PCMSK2 _SFR_MEM8(0x6C) + +#define PCMSK3 _SFR_MEM8(0x6D) + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define AMP0CSR _SFR_MEM8(0x75) +#define AMP0TS0 0 +#define AMP0TS1 1 +#define AMP0TS2 2 +#define AMPCMP0 3 +#define AMP0G0 4 +#define AMP0G1 5 +#define AMP0IS 6 +#define AMP0EN 7 + +#define AMP1CSR _SFR_MEM8(0x76) +#define AMP1TS0 0 +#define AMP1TS1 1 +#define AMP1TS2 2 +#define AMPCMP1 3 +#define AMP1G0 4 +#define AMP1G1 5 +#define AMP1IS 6 +#define AMP1EN 7 + +#define AMP2CSR _SFR_MEM8(0x77) +#define AMP2TS0 0 +#define AMP2TS1 1 +#define AMP2TS2 2 +#define AMPCMP2 3 +#define AMP2G0 4 +#define AMP2G1 5 +#define AMP2IS 6 +#define AMP2EN 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ADTS3 3 +#define AREFEN 5 +#define ISRCEN 6 +#define ADHSM 7 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define ADC8D 0 +#define ADC9D 1 +#define ADC10D 2 +#define AMP0ND 3 +#define AMP0PD 4 +#define ACMP0D 5 +#define AMP2PD 6 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define DACON _SFR_MEM8(0x90) +#define DAEN 0 +#define DAOE 1 +#define DALA 2 +#define DATS0 4 +#define DATS1 5 +#define DATS2 6 +#define DAATE 7 + +#define DAC _SFR_MEM16(0x91) + +#define DACL _SFR_MEM8(0x91) +#define DACL0 0 +#define DACL1 1 +#define DACL2 2 +#define DACL3 3 +#define DACL4 4 +#define DACL5 5 +#define DACL6 6 +#define DACL7 7 + +#define DACH _SFR_MEM8(0x92) +#define DACH0 0 +#define DACH1 1 +#define DACH2 2 +#define DACH3 3 +#define DACH4 4 +#define DACH5 5 +#define DACH6 6 +#define DACH7 7 + +#define AC0CON _SFR_MEM8(0x94) +#define AC0M0 0 +#define AC0M1 1 +#define AC0M2 2 +#define ACCKSEL 3 +#define AC0IS0 4 +#define AC0IS1 5 +#define AC0IE 6 +#define AC0EN 7 + +#define AC1CON _SFR_MEM8(0x95) +#define AC1M0 0 +#define AC1M1 1 +#define AC1M2 2 +#define AC1ICE 3 +#define AC1IS0 4 +#define AC1IS1 5 +#define AC1IE 6 +#define AC1EN 7 + +#define AC2CON _SFR_MEM8(0x96) +#define AC2M0 0 +#define AC2M1 1 +#define AC2M2 2 +#define AC2IS0 4 +#define AC2IS1 5 +#define AC2IE 6 +#define AC2EN 7 + +#define AC3CON _SFR_MEM8(0x97) +#define AC3M0 0 +#define AC3M1 1 +#define AC3M2 2 +#define AC3IS0 4 +#define AC3IS1 5 +#define AC3IE 6 +#define AC3EN 7 + +#define LINCR _SFR_MEM8(0xC8) +#define LCMD0 0 +#define LCMD1 1 +#define LCMD2 2 +#define LENA 3 +#define LCONF0 4 +#define LCONF1 5 +#define LIN13 6 +#define LSWRES 7 + +#define LINSIR _SFR_MEM8(0xC9) +#define LRXOK 0 +#define LTXOK 1 +#define LIDOK 2 +#define LERR 3 +#define LBUSY 4 +#define LIDST0 5 +#define LIDST1 6 +#define LIDST2 7 + +#define LINENIR _SFR_MEM8(0xCA) +#define LENRXOK 0 +#define LENTXOK 1 +#define LENIDOK 2 +#define LENERR 3 + +#define LINERR _SFR_MEM8(0xCB) +#define LBERR 0 +#define LCERR 1 +#define LPERR 2 +#define LSERR 3 +#define LFERR 4 +#define LOVERR 5 +#define LTOERR 6 +#define LABORT 7 + +#define LINBTR _SFR_MEM8(0xCC) +#define LBT0 0 +#define LBT1 1 +#define LBT2 2 +#define LBT3 3 +#define LBT4 4 +#define LBT5 5 +#define LDISR 7 + +#define LINBRR _SFR_MEM16(0xCD) + +#define LINBRRL _SFR_MEM8(0xCD) +#define LDIV0 0 +#define LDIV1 1 +#define LDIV2 2 +#define LDIV3 3 +#define LDIV4 4 +#define LDIV5 5 +#define LDIV6 6 +#define LDIV7 7 + +#define LINBRRH _SFR_MEM8(0xCE) +#define LDIV8 0 +#define LDIV9 1 +#define LDIV10 2 +#define LDIV11 3 + +#define LINDLR _SFR_MEM8(0xCF) +#define LRXDL0 0 +#define LRXDL1 1 +#define LRXDL2 2 +#define LRXDL3 3 +#define LTXDL0 4 +#define LTXDL1 5 +#define LTXDL2 6 +#define LTXDL3 7 + +#define LINIDR _SFR_MEM8(0xD0) +#define LID0 0 +#define LID1 1 +#define LID2 2 +#define LID3 3 +#define LID4 4 +#define LID5 5 +#define LP0 6 +#define LP1 7 + +#define LINSEL _SFR_MEM8(0xD1) +#define LINDX0 0 +#define LINDX1 1 +#define LINDX2 2 +#define LAINC 3 + +#define LINDAT _SFR_MEM8(0xD2) +#define LDATA0 0 +#define LDATA1 1 +#define LDATA2 2 +#define LDATA3 3 +#define LDATA4 4 +#define LDATA5 5 +#define LDATA6 6 +#define LDATA7 7 + +#define CANGCON _SFR_MEM8(0xD8) +#define SWRES 0 +#define ENASTB 1 +#define TEST 2 +#define LISTEN 3 +#define SYNTTC 4 +#define TTC 5 +#define OVRQ 6 +#define ABRQ 7 + +#define CANGSTA _SFR_MEM8(0xD9) +#define ERRP 0 +#define BOFF 1 +#define ENFG 2 +#define RXBSY 3 +#define TXBSY 4 +#define OVFG 6 + +#define CANGIT _SFR_MEM8(0xDA) +#define AERG 0 +#define FERG 1 +#define CERG 2 +#define SERG 3 +#define BXOK 4 +#define OVRTIM 5 +#define BOFFIT 6 +#define CANIT 7 + +#define CANGIE _SFR_MEM8(0xDB) +#define ENOVRT 0 +#define ENERG 1 +#define ENBX 2 +#define ENERR 3 +#define ENTX 4 +#define ENRX 5 +#define ENBOFF 6 +#define ENIT 7 + +#define CANEN2 _SFR_MEM8(0xDC) +#define ENMOB0 0 +#define ENMOB1 1 +#define ENMOB2 2 +#define ENMOB3 3 +#define ENMOB4 4 +#define ENMOB5 5 + +#define CANEN1 _SFR_MEM8(0xDD) + +#define CANIE2 _SFR_MEM8(0xDE) +#define IEMOB0 0 +#define IEMOB1 1 +#define IEMOB2 2 +#define IEMOB3 3 +#define IEMOB4 4 +#define IEMOB5 5 + +#define CANIE1 _SFR_MEM8(0xDF) + +#define CANSIT2 _SFR_MEM8(0xE0) +#define SIT0 0 +#define SIT1 1 +#define SIT2 2 +#define SIT3 3 +#define SIT4 4 +#define SIT5 5 + +#define CANSIT1 _SFR_MEM8(0xE1) + +#define CANBT1 _SFR_MEM8(0xE2) +#define BRP0 0 +#define BRP1 1 +#define BRP2 2 +#define BRP3 3 +#define BRP4 4 +#define BRP5 5 + +#define CANBT2 _SFR_MEM8(0xE3) +#define PRS0 1 +#define PRS1 2 +#define PRS2 3 +#define SJW0 5 +#define SJW1 6 + +#define CANBT3 _SFR_MEM8(0xE4) +#define SMP 0 +#define PHS10 1 +#define PHS11 2 +#define PHS12 3 +#define PHS20 4 +#define PHS21 5 +#define PHS22 6 + +#define CANTCON _SFR_MEM8(0xE5) + +#define CANTIM _SFR_MEM16(0xE6) + +#define CANTIML _SFR_MEM8(0xE6) + +#define CANTIMH _SFR_MEM8(0xE7) + +#define CANTTC _SFR_MEM16(0xE8) + +#define CANTTCL _SFR_MEM8(0xE8) + +#define CANTTCH _SFR_MEM8(0xE9) + +#define CANTEC _SFR_MEM8(0xEA) + +#define CANREC _SFR_MEM8(0xEB) + +#define CANHPMOB _SFR_MEM8(0xEC) +#define CGP0 0 +#define CGP1 1 +#define CGP2 2 +#define CGP3 3 +#define HPMOB0 4 +#define HPMOB1 5 +#define HPMOB2 6 +#define HPMOB3 7 + +#define CANPAGE _SFR_MEM8(0xED) +#define INDX0 0 +#define INDX1 1 +#define INDX2 2 +#define AINC 3 +#define MOBNB0 4 +#define MOBNB1 5 +#define MOBNB2 6 +#define MOBNB3 7 + +#define CANSTMOB _SFR_MEM8(0xEE) +#define AERR 0 +#define FERR 1 +#define CERR 2 +#define SERR 3 +#define BERR 4 +#define RXOK 5 +#define TXOK 6 +#define DLCW 7 + +#define CANCDMOB _SFR_MEM8(0xEF) +#define DLC0 0 +#define DLC1 1 +#define DLC2 2 +#define DLC3 3 +#define IDE 4 +#define RPLV 5 +#define CONMOB0 6 +#define CONMOB1 7 + +#define CANIDT4 _SFR_MEM8(0xF0) +#define RB0TAG 0 +#define RB1TAG 1 +#define RTRTAG 2 +#define IDT0 3 +#define IDT1 4 +#define IDT2 5 +#define IDT3 6 +#define IDT4 7 + +#define CANIDT3 _SFR_MEM8(0xF1) +#define IDT5 0 +#define IDT6 1 +#define IDT7 2 +#define IDT8 3 +#define IDT9 4 +#define IDT10 5 +#define IDT11 6 +#define IDT12 7 + +#define CANIDT2 _SFR_MEM8(0xF2) +#define IDT13 0 +#define IDT14 1 +#define IDT15 2 +#define IDT16 3 +#define IDT17 4 +#define IDT18 5 +#define IDT19 6 +#define IDT20 7 + +#define CANIDT1 _SFR_MEM8(0xF3) +#define IDT21 0 +#define IDT22 1 +#define IDT23 2 +#define IDT24 3 +#define IDT25 4 +#define IDT26 5 +#define IDT27 6 +#define IDT28 7 + +#define CANIDM4 _SFR_MEM8(0xF4) +#define IDEMSK 0 +#define RTRMSK 2 +#define IDMSK0 3 +#define IDMSK1 4 +#define IDMSK2 5 +#define IDMSK3 6 +#define IDMSK4 7 + +#define CANIDM3 _SFR_MEM8(0xF5) +#define IDMSK5 0 +#define IDMSK6 1 +#define IDMSK7 2 +#define IDMSK8 3 +#define IDMSK9 4 +#define IDMSK10 5 +#define IDMSK11 6 +#define IDMSK12 7 + +#define CANIDM2 _SFR_MEM8(0xF6) +#define IDMSK13 0 +#define IDMSK14 1 +#define IDMSK15 2 +#define IDMSK16 3 +#define IDMSK17 4 +#define IDMSK18 5 +#define IDMSK19 6 +#define IDMSK20 7 + +#define CANIDM1 _SFR_MEM8(0xF7) +#define IDMSK21 0 +#define IDMSK22 1 +#define IDMSK23 2 +#define IDMSK24 3 +#define IDMSK25 4 +#define IDMSK26 5 +#define IDMSK27 6 +#define IDMSK28 7 + +#define CANSTM _SFR_MEM16(0xF8) + +#define CANSTML _SFR_MEM8(0xF8) + +#define CANSTMH _SFR_MEM8(0xF9) + +#define CANMSG _SFR_MEM8(0xFA) + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define ANACOMP0_vect _VECTOR(1) /* Analog Comparator 0 */ +#define ANACOMP1_vect _VECTOR(2) /* Analog Comparator 1 */ +#define ANACOMP2_vect _VECTOR(3) /* Analog Comparator 2 */ +#define ANACOMP3_vect _VECTOR(4) /* Analog Comparator 3 */ +#define PSC_FAULT_vect _VECTOR(5) /* PSC Fault */ +#define PSC_EC_vect _VECTOR(6) /* PSC End of Cycle */ +#define INT0_vect _VECTOR(7) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(8) /* External Interrupt Request 1 */ +#define INT2_vect _VECTOR(9) /* External Interrupt Request 2 */ +#define INT3_vect _VECTOR(10) /* External Interrupt Request 3 */ +#define TIMER1_CAPT_vect _VECTOR(11) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(12) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(13) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(14) /* Timer1/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(15) /* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(16) /* Timer/Counter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(17) /* Timer/Counter0 Overflow */ +#define CAN_INT_vect _VECTOR(18) /* CAN MOB, Burst, General Errors */ +#define CAN_TOVF_vect _VECTOR(19) /* CAN Timer Overflow */ +#define LIN_TC_vect _VECTOR(20) /* LIN Transfer Complete */ +#define LIN_ERR_vect _VECTOR(21) /* LIN Error */ +#define PCINT0_vect _VECTOR(22) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(23) /* Pin Change Interrupt Request 1 */ +#define PCINT2_vect _VECTOR(24) /* Pin Change Interrupt Request 2 */ +#define PCINT3_vect _VECTOR(25) /* Pin Change Interrupt Request 3 */ +#define SPI_STC_vect _VECTOR(26) /* SPI Serial Transfer Complete */ +#define ADC_vect _VECTOR(27) /* ADC Conversion Complete */ +#define WDT_vect _VECTOR(28) /* Watchdog Time-Out Interrupt */ +#define EE_READY_vect _VECTOR(29) /* EEPROM Ready */ +#define SPM_READY_vect _VECTOR(30) /* Store Program Memory Read */ + +#define _VECTORS_SIZE (31 * 4) + + +/* Constants */ +#define SPM_PAGESIZE (64) +#define RAMSTART (0x100) +#define RAMSIZE (0x800) +#define RAMEND (RAMSTART + RAMSIZE - 1) /* Last On-Chip SRAM Location */ +#define XRAMSIZE (0x800) +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END (0x3FF) +#define E2PAGESIZE (4) +#define FLASHEND (0x7FFF) + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Disable */ +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector Trigger Level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector Trigger Level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector Trigger Level */ +#define FUSE_PSCRVB (unsigned char)~_BV(3) /* PSC Outputs xB Reset Value */ +#define FUSE_PSCRVA (unsigned char)~_BV(4) /* PSC Outputs xA Reset Value */ +#define FUSE_PSCRB (unsigned char)~_BV(5) /* PSC Reset Behavior */ +#define EFUSE_DEFAULT (FUSE_BODLEVEL1 & FUSE_BODLEVEL2) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x86 + + +#endif /* _AVR_IOM32C1_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32hvb.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32hvb.h new file mode 100644 index 0000000..5355b38 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32hvb.h @@ -0,0 +1,885 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom32hvb.h,v 1.3.2.4 2008/08/06 22:45:05 arcanum Exp $ */ + +/* avr/iom32hvb.h - definitions for ATmega32HVB. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom32hvb.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM32HVB_H_ +#define _AVR_IOM32HVB_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 + +#define DDRA _SFR_IO8(0x01) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 + +#define PORTA _SFR_IO8(0x02) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 +#define ICF0 3 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 3 + +#define OSICSR _SFR_IO8(0x17) +#define OSIEN 0 +#define OSIST 1 +#define OSISEL0 4 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 +#define INT3 3 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define ICS0 3 +#define ICES0 4 +#define ICNC0 5 +#define ICEN0 6 +#define TCW0 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 + +#define TCNT0 _SFR_IO16(0x26) + +#define TCNT0L _SFR_IO8(0x26) +#define TCNT0L0 0 +#define TCNT0L1 1 +#define TCNT0L2 2 +#define TCNT0L3 3 +#define TCNT0L4 4 +#define TCNT0L5 5 +#define TCNT0L6 6 +#define TCNT0L7 7 + +#define TCNT0H _SFR_IO8(0x27) +#define TCNT0H0 0 +#define TCNT0H1 1 +#define TCNT0H2 2 +#define TCNT0H3 3 +#define TCNT0H4 4 +#define TCNT0H5 5 +#define TCNT0H6 6 +#define TCNT0H7 7 + +#define OCR0A _SFR_IO8(0x28) +#define OCR0A0 0 +#define OCR0A1 1 +#define OCR0A2 2 +#define OCR0A3 3 +#define OCR0A4 4 +#define OCR0A5 5 +#define OCR0A6 6 +#define OCR0A7 7 + +#define OCR0B _SFR_IO8(0x29) +#define OCR0B0 0 +#define OCR0B1 1 +#define OCR0B2 2 +#define OCR0B3 3 +#define OCR0B4 4 +#define OCR0B5 5 +#define OCR0B6 6 +#define OCR0B7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BODRF 2 +#define WDRF 3 +#define OCDRF 4 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define CKOE 5 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define LBSET 3 +#define RWWSRE 4 +#define SIGRD 5 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPCE 7 + +#define PRR0 _SFR_MEM8(0x64) +#define PRVADC 0 +#define PRTIM0 1 +#define PRTIM1 2 +#define PRSPI 3 +#define PRVRM 5 +#define PRTWI 6 + +#define FOSCCAL _SFR_MEM8(0x66) +#define FCAL0 0 +#define FCAL1 1 +#define FCAL2 2 +#define FCAL3 3 +#define FCAL4 4 +#define FCAL5 5 +#define FCAL6 6 +#define FCAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT4 0 +#define PCINT5 1 +#define PCINT6 2 +#define PCINT7 3 +#define PCINT8 4 +#define PCINT9 5 +#define PCINT10 6 +#define PCINT11 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 +#define ICIE0 3 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 3 + +#define VADC _SFR_MEM16(0x78) + +#define VADCL _SFR_MEM8(0x78) +#define VADC0 0 +#define VADC1 1 +#define VADC2 2 +#define VADC3 3 +#define VADC4 4 +#define VADC5 5 +#define VADC6 6 +#define VADC7 7 + +#define VADCH _SFR_MEM8(0x79) +#define VADC8 0 +#define VADC9 1 +#define VADC10 2 +#define VADC11 3 + +#define VADCSR _SFR_MEM8(0x7A) +#define VADCCIE 0 +#define VADCCIF 1 +#define VADSC 2 +#define VADEN 3 + +#define VADMUX _SFR_MEM8(0x7C) +#define VADMUX0 0 +#define VADMUX1 1 +#define VADMUX2 2 +#define VADMUX3 3 + +#define DIDR0 _SFR_MEM8(0x7E) +#define PA0DID 0 +#define PA1DID 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define ICS1 3 +#define ICES1 4 +#define ICNC1 5 +#define ICEN1 6 +#define TCW1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define OCR1A _SFR_MEM8(0x88) +#define OCR1A0 0 +#define OCR1A1 1 +#define OCR1A2 2 +#define OCR1A3 3 +#define OCR1A4 4 +#define OCR1A5 5 +#define OCR1A6 6 +#define OCR1A7 7 + +#define OCR1B _SFR_MEM8(0x89) +#define OCR1B0 0 +#define OCR1B1 1 +#define OCR1B2 2 +#define OCR1B3 3 +#define OCR1B4 4 +#define OCR1B5 5 +#define OCR1B6 6 +#define OCR1B7 7 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 0 +#define TWAM1 1 +#define TWAM2 2 +#define TWAM3 3 +#define TWAM4 4 +#define TWAM5 5 +#define TWAM6 6 + +#define TWBCSR _SFR_MEM8(0xBE) +#define TWBCIP 0 +#define TWBDT0 1 +#define TWBDT1 2 +#define TWBCIE 6 +#define TWBCIF 7 + +#define ROCR _SFR_MEM8(0xC8) +#define ROCWIE 0 +#define ROCWIF 1 +#define ROCD 4 +#define ROCS 7 + +#define BGCCR _SFR_MEM8(0xD0) +#define BGCC0 0 +#define BGCC1 1 +#define BGCC2 2 +#define BGCC3 3 +#define BGCC4 4 +#define BGCC5 5 + +#define BGCRR _SFR_MEM8(0xD1) +#define BGCR0 0 +#define BGCR1 1 +#define BGCR2 2 +#define BGCR3 3 +#define BGCR4 4 +#define BGCR5 5 +#define BGCR6 6 +#define BGCR7 7 + +#define BGCSR _SFR_MEM8(0xD2) +#define BGSCDIE 0 +#define BGSCDIF 1 +#define BGSCDE 4 +#define BGD 5 + +#define CHGDCSR _SFR_MEM8(0xD4) +#define CHGDIE 0 +#define CHGDIF 1 +#define CHGDISC0 2 +#define CHGDISC1 3 +#define BATTPVL 4 + +#define CADAC _SFR_MEM32(0xE0) + +#define CADAC0 _SFR_MEM8(0xE0) +#define CADAC00 0 +#define CADAC01 1 +#define CADAC02 2 +#define CADAC03 3 +#define CADAC04 4 +#define CADAC05 5 +#define CADAC06 6 +#define CADAC07 7 + +#define CADAC1 _SFR_MEM8(0xE1) +#define CADAC08 0 +#define CADAC09 1 +#define CADAC10 2 +#define CADAC11 3 +#define CADAC12 4 +#define CADAC13 5 +#define CADAC14 6 +#define CADAC15 7 + +#define CADAC2 _SFR_MEM8(0xE2) +#define CADAC16 0 +#define CADAC17 1 +#define CADAC18 2 +#define CADAC19 3 +#define CADAC20 4 +#define CADAC21 5 +#define CADAC22 6 +#define CADAC23 7 + +#define CADAC3 _SFR_MEM8(0xE3) +#define CADAC24 0 +#define CADAC25 1 +#define CADAC26 2 +#define CADAC27 3 +#define CADAC28 4 +#define CADAC29 5 +#define CADAC30 6 +#define CADAC31 7 + +#define CADIC _SFR_MEM16(0xE4) + +#define CADICL _SFR_MEM8(0xE4) +#define CADICL0 0 +#define CADICL1 1 +#define CADICL2 2 +#define CADICL3 3 +#define CADICL4 4 +#define CADICL5 5 +#define CADICL6 6 +#define CADICL7 7 + +#define CADICH _SFR_MEM8(0xE5) +#define CADICH0 0 +#define CADICH1 1 +#define CADICH2 2 +#define CADICH3 3 +#define CADICH4 4 +#define CADICH5 5 +#define CADICH6 6 +#define CADICH7 7 + +#define CADCSRA _SFR_MEM8(0xE6) +#define CADSE 0 +#define CADSI0 1 +#define CADSI1 2 +#define CADAS0 3 +#define CADAS1 4 +#define CADUB 5 +#define CADPOL 6 +#define CADEN 7 + +#define CADCSRB _SFR_MEM8(0xE7) +#define CADICIF 0 +#define CADRCIF 1 +#define CADACIF 2 +#define CADICIE 4 +#define CADRCIE 5 +#define CADACIE 6 + +#define CADCSRC _SFR_MEM8(0xE8) +#define CADVSE 0 + +#define CADRCC _SFR_MEM8(0xE9) +#define CADRCC0 0 +#define CADRCC1 1 +#define CADRCC2 2 +#define CADRCC3 3 +#define CADRCC4 4 +#define CADRCC5 5 +#define CADRCC6 6 +#define CADRCC7 7 + +#define CADRDC _SFR_MEM8(0xEA) +#define CADRDC0 0 +#define CADRDC1 1 +#define CADRDC2 2 +#define CADRDC3 3 +#define CADRDC4 4 +#define CADRDC5 5 +#define CADRDC6 6 +#define CADRDC7 7 + +#define FCSR _SFR_MEM8(0xF0) +#define CFE 0 +#define DFE 1 +#define CPS 2 +#define DUVRD 3 + +#define CBCR _SFR_MEM8(0xF1) +#define CBE1 0 +#define CBE2 1 +#define CBE3 2 +#define CBE4 3 + +#define BPIMSK _SFR_MEM8(0xF2) +#define CHCIE 0 +#define DHCIE 1 +#define COCIE 2 +#define DOCIE 3 +#define SCIE 4 + +#define BPIFR _SFR_MEM8(0xF3) +#define CHCIF 0 +#define DHCIF 1 +#define COCIF 2 +#define DOCIF 3 +#define SCIF 4 + +#define BPSCD _SFR_MEM8(0xF5) +#define SCDL0 0 +#define SCDL1 1 +#define SCDL2 2 +#define SCDL3 3 +#define SCDL4 4 +#define SCDL5 5 +#define SCDL6 6 +#define SCDL7 7 + +#define BPDOCD _SFR_MEM8(0xF6) +#define DOCDL0 0 +#define DOCDL1 1 +#define DOCDL2 2 +#define DOCDL3 3 +#define DOCDL4 4 +#define DOCDL5 5 +#define DOCDL6 6 +#define DOCDL7 7 + +#define BPCOCD _SFR_MEM8(0xF7) +#define COCDL0 0 +#define COCDL1 1 +#define COCDL2 2 +#define COCDL3 3 +#define COCDL4 4 +#define COCDL5 5 +#define COCDL6 6 +#define COCDL7 7 + +#define BPDHCD _SFR_MEM8(0xF8) +#define DHCDL0 0 +#define DHCDL1 1 +#define DHCDL2 2 +#define DHCDL3 3 +#define DHCDL4 4 +#define DHCDL5 5 +#define DHCDL6 6 +#define DHCDL7 7 + +#define BPCHCD _SFR_MEM8(0xF9) +#define CHCDL0 0 +#define CHCDL1 1 +#define CHCDL2 2 +#define CHCDL3 3 +#define CHCDL4 4 +#define CHCDL5 5 +#define CHCDL6 6 +#define CHCDL7 7 + +#define BPSCTR _SFR_MEM8(0xFA) +#define SCPT0 0 +#define SCPT1 1 +#define SCPT2 2 +#define SCPT3 3 +#define SCPT4 4 +#define SCPT5 5 +#define SCPT6 6 + +#define BPOCTR _SFR_MEM8(0xFB) +#define OCPT0 0 +#define OCPT1 1 +#define OCPT2 2 +#define OCPT3 3 +#define OCPT4 4 +#define OCPT5 5 + +#define BPHCTR _SFR_MEM8(0xFC) +#define HCPT0 0 +#define HCPT1 1 +#define HCPT2 2 +#define HCPT3 3 +#define HCPT4 4 +#define HCPT5 5 + +#define BPCR _SFR_MEM8(0xFD) +#define CHCD 0 +#define DHCD 1 +#define COCD 2 +#define DOCD 3 +#define SCD 4 +#define EPID 5 + +#define BPPLR _SFR_MEM8(0xFE) +#define BPPL 0 +#define BPPLE 1 + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ + +#define BPINT_vect _VECTOR(1) /* Battery Protection Interrupt */ +#define VREGMON_vect _VECTOR(2) /* Voltage regulator monitor interrupt */ +#define INT0_vect _VECTOR(3) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(4) /* External Interrupt Request 1 */ +#define INT2_vect _VECTOR(5) /* External Interrupt Request 2 */ +#define INT3_vect _VECTOR(6) /* External Interrupt Request 3 */ +#define PCINT0_vect _VECTOR(7) /* Pin Change Interrupt 0 */ +#define PCINT1_vect _VECTOR(8) /* Pin Change Interrupt 1 */ +#define WDT_vect _VECTOR(9) /* Watchdog Timeout Interrupt */ +#define BGSCD_vect _VECTOR(10) /* Bandgap Buffer Short Circuit Detected */ +#define CHDET_vect _VECTOR(11) /* Charger Detect */ +#define TIMER1_IC_vect _VECTOR(12) /* Timer 1 Input capture */ +#define TIMER1_COMPA_vect _VECTOR(13) /* Timer 1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(14) /* Timer 1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(15) /* Timer 1 overflow */ +#define TIMER0_IC_vect _VECTOR(16) /* Timer 0 Input Capture */ +#define TIMER0_COMPA_vect _VECTOR(17) /* Timer 0 Comapre Match A */ +#define TIMER0_COMPB_vect _VECTOR(18) /* Timer 0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(19) /* Timer 0 Overflow */ +#define TWIBUSCD_vect _VECTOR(20) /* Two-Wire Bus Connect/Disconnect */ +#define TWI_vect _VECTOR(21) /* Two-Wire Serial Interface */ +#define SPI_STC_vect _VECTOR(22) /* SPI Serial transfer complete */ +#define VADC_vect _VECTOR(23) /* Voltage ADC Conversion Complete */ +#define CCADC_CONV_vect _VECTOR(24) /* Coulomb Counter ADC Conversion Complete */ +#define CCADC_REG_CUR_vect _VECTOR(25) /* Coloumb Counter ADC Regular Current */ +#define CCADC_ACC_vect _VECTOR(26) /* Coloumb Counter ADC Accumulator */ +#define EE_READY_vect _VECTOR(27) /* EEPROM Ready */ +#define SPM_vect _VECTOR(28) /* SPM Ready */ + +#define _VECTORS_SIZE (29 * 4) + + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x8FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x3FF +#define FLASHEND 0x7FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_WDTON (unsigned char)~_BV(7) /* Watchdog Timer Always On */ +#define FUSE_EESAVE (unsigned char)~_BV(6) /* EEPROM memory is preserved through chip erase */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_SUT2 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(3) /* Select start-up time */ +#define FUSE_SUT0 (unsigned char)~_BV(2) /* Select start-up time */ +#define FUSE_OSCSEL1 (unsigned char)~_BV(1) /* Oscillator Select */ +#define FUSE_OSCSEL0 (unsigned char)~_BV(0) /* Oscillator Select */ +#define LFUSE_DEFAULT (FUSE_OSCSEL0 & FUSE_SPIEN) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_DWEN (unsigned char)~_BV(3) /* Enable debugWire */ +#define FUSE_DUVRDINIT (unsigned char)~_BV(4) /* Reset Value of DUVRDRegister */ +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_DUVRDINIT) + + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +#endif /* _AVR_IOM32HVB_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32m1.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32m1.h new file mode 100644 index 0000000..f4a9f5e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32m1.h @@ -0,0 +1,1394 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom32m1.h,v 1.1.2.7 2008/10/17 23:27:49 arcanum Exp $ */ + +/* avr/iom32m1.h - definitions for ATmega32M1. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom32m1.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM32M1_H_ +#define _AVR_IOM32M1_H_ 1 + +/* Registers and associated bit numbers */ + + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINE _SFR_IO8(0x0C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 + +#define DDRE _SFR_IO8(0x0D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 + +#define PORTE _SFR_IO8(0x0E) +#define PORTE0 0 +#define PORTE1 1 +#define PORTE2 2 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define GPIOR1 _SFR_IO8(0x19) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x1A) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define PCIFR _SFR_IO8(0x1B) + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 +#define INT3 3 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 + +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSRSYNC 0 +#define ICPSEL1 6 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PLLF 2 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define AC0O 0 +#define AC1O 1 +#define AC2O 2 +#define AC3O 3 +#define AC0IF 4 +#define AC1IF 5 +#define AC2IF 6 +#define AC3IF 7 + +#define DWDR _SFR_IO8(0x31) + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define SPIPS 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRLIN 1 +#define PRSPI 2 +#define PRTIM0 3 +#define PRTIM1 4 +#define PRPSC 5 +#define PRCAN 6 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +#define PCMSK0 _SFR_MEM8(0x6A) + +#define PCMSK1 _SFR_MEM8(0x6B) + +#define PCMSK2 _SFR_MEM8(0x6C) + +#define PCMSK3 _SFR_MEM8(0x6D) + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define AMP0CSR _SFR_MEM8(0x75) +#define AMP0TS0 0 +#define AMP0TS1 1 +#define AMP0TS2 2 +#define AMPCMP0 3 +#define AMP0G0 4 +#define AMP0G1 5 +#define AMP0IS 6 +#define AMP0EN 7 + +#define AMP1CSR _SFR_MEM8(0x76) +#define AMP1TS0 0 +#define AMP1TS1 1 +#define AMP1TS2 2 +#define AMPCMP1 3 +#define AMP1G0 4 +#define AMP1G1 5 +#define AMP1IS 6 +#define AMP1EN 7 + +#define AMP2CSR _SFR_MEM8(0x77) +#define AMP2TS0 0 +#define AMP2TS1 1 +#define AMP2TS2 2 +#define AMPCMP2 3 +#define AMP2G0 4 +#define AMP2G1 5 +#define AMP2IS 6 +#define AMP2EN 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ADTS3 3 +#define AREFEN 4 +#define ISRCEN 5 +#define ADHSM 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define ADC8D 0 +#define ADC9D 1 +#define ADC10D 2 +#define AMP0ND 3 +#define AMP0PD 4 +#define ACMP0D 5 +#define AMP2PD 6 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define DACON _SFR_MEM8(0x90) +#define DAEN 0 +#define DAOE 1 +#define DALA 2 +#define DATS0 4 +#define DATS1 5 +#define DATS2 6 +#define DAATE 7 + +#define DAC _SFR_MEM16(0x91) + +#define DACL _SFR_MEM8(0x91) +#define DACL0 0 +#define DACL1 1 +#define DACL2 2 +#define DACL3 3 +#define DACL4 4 +#define DACL5 5 +#define DACL6 6 +#define DACL7 7 + +#define DACH _SFR_MEM8(0x92) +#define DACH0 0 +#define DACH1 1 +#define DACH2 2 +#define DACH3 3 +#define DACH4 4 +#define DACH5 5 +#define DACH6 6 +#define DACH7 7 + +#define AC0CON _SFR_MEM8(0x94) +#define AC0M0 0 +#define AC0M1 1 +#define AC0M2 2 +#define ACCKSEL 3 +#define AC0IS0 4 +#define AC0IS1 5 +#define AC0IE 6 +#define AC0EN 7 + +#define AC1CON _SFR_MEM8(0x95) +#define AC1M0 0 +#define AC1M1 1 +#define AC1M2 2 +#define AC1ICE 3 +#define AC1IS0 4 +#define AC1IS1 5 +#define AC1IE 6 +#define AC1EN 7 + +#define AC2CON _SFR_MEM8(0x96) +#define AC2M0 0 +#define AC2M1 1 +#define AC2M2 2 +#define AC2IS0 4 +#define AC2IS1 5 +#define AC2IE 6 +#define AC2EN 7 + +#define AC3CON _SFR_MEM8(0x97) +#define AC3M0 0 +#define AC3M1 1 +#define AC3M2 2 +#define AC3IS0 4 +#define AC3IS1 5 +#define AC3IE 6 +#define AC3EN 7 + +#define POCR0SA _SFR_MEM16(0xA0) + +#define POCR0SAL _SFR_MEM8(0xA0) +#define POCR0SA_0 0 +#define POCR0SA_1 1 +#define POCR0SA_2 2 +#define POCR0SA_3 3 +#define POCR0SA_4 4 +#define POCR0SA_5 5 +#define POCR0SA_6 6 +#define POCR0SA_7 7 + +#define POCR0SAH _SFR_MEM8(0xA1) +#define POCR0SA_8 0 +#define POCR0SA_9 1 +#define POCR0SA_00 2 +#define POCR0SA_01 3 + +#define POCR0RA _SFR_MEM16(0xA2) + +#define POCR0RAL _SFR_MEM8(0xA2) +#define POCR0RA_0 0 +#define POCR0RA_1 1 +#define POCR0RA_2 2 +#define POCR0RA_3 3 +#define POCR0RA_4 4 +#define POCR0RA_5 5 +#define POCR0RA_6 6 +#define POCR0RA_7 7 + +#define POCR0RAH _SFR_MEM8(0xA3) +#define POCR0RA_8 0 +#define POCR0RA_9 1 +#define POCR0RA_00 2 +#define POCR0RA_01 3 + +#define POCR0SB _SFR_MEM16(0xA4) + +#define POCR0SBL _SFR_MEM8(0xA4) +#define POCR0SB_0 0 +#define POCR0SB_1 1 +#define POCR0SB_2 2 +#define POCR0SB_3 3 +#define POCR0SB_4 4 +#define POCR0SB_5 5 +#define POCR0SB_6 6 +#define POCR0SB_7 7 + +#define POCR0SBH _SFR_MEM8(0xA5) +#define POCR0SB_8 0 +#define POCR0SB_9 1 +#define POCR0SB_00 2 +#define POCR0SB_01 3 + +#define POCR1SA _SFR_MEM16(0xA6) + +#define POCR1SAL _SFR_MEM8(0xA6) +#define POCR1SA_0 0 +#define POCR1SA_1 1 +#define POCR1SA_2 2 +#define POCR1SA_3 3 +#define POCR1SA_4 4 +#define POCR1SA_5 5 +#define POCR1SA_6 6 +#define POCR1SA_7 7 + +#define POCR1SAH _SFR_MEM8(0xA7) +#define POCR1SA_8 0 +#define POCR1SA_9 1 +#define POCR1SA_00 2 +#define POCR1SA_01 3 + +#define POCR1RA _SFR_MEM16(0xA8) + +#define POCR1RAL _SFR_MEM8(0xA8) +#define POCR1RA_0 0 +#define POCR1RA_1 1 +#define POCR1RA_2 2 +#define POCR1RA_3 3 +#define POCR1RA_4 4 +#define POCR1RA_5 5 +#define POCR1RA_6 6 +#define POCR1RA_7 7 + +#define POCR1RAH _SFR_MEM8(0xA9) +#define POCR1RA_8 0 +#define POCR1RA_9 1 +#define POCR1RA_00 2 +#define POCR1RA_01 4 + +#define POCR1SB _SFR_MEM16(0xAA) + +#define POCR1SBL _SFR_MEM8(0xAA) +#define POCR1SB_0 0 +#define POCR1SB_1 1 +#define POCR1SB_2 2 +#define POCR1SB_3 3 +#define POCR1SB_4 4 +#define POCR1SB_5 5 +#define POCR1SB_6 6 +#define POCR1SB_7 7 + +#define POCR1SBH _SFR_MEM8(0xAB) +#define POCR1SB_8 0 +#define POCR1SB_9 1 +#define POCR1SB_00 2 +#define POCR1SB_01 3 + +#define POCR2SA _SFR_MEM16(0xAC) + +#define POCR2SAL _SFR_MEM8(0xAC) +#define POCR2SA_0 0 +#define POCR2SA_1 1 +#define POCR2SA_2 2 +#define POCR2SA_3 3 +#define POCR2SA_4 4 +#define POCR2SA_5 5 +#define POCR2SA_6 6 +#define POCR2SA_7 7 + +#define POCR2SAH _SFR_MEM8(0xAD) +#define POCR2SA_8 0 +#define POCR2SA_9 1 +#define POCR2SA_00 2 +#define POCR2SA_01 3 + +#define POCR2RA _SFR_MEM16(0xAE) + +#define POCR2RAL _SFR_MEM8(0xAE) +#define POCR2RA_0 0 +#define POCR2RA_1 1 +#define POCR2RA_2 2 +#define POCR2RA_3 3 +#define POCR2RA_4 4 +#define POCR2RA_5 5 +#define POCR2RA_6 6 +#define POCR2RA_7 7 + +#define POCR2RAH _SFR_MEM8(0xAF) +#define POCR2RA_8 0 +#define POCR2RA_9 1 +#define POCR2RA_00 2 +#define POCR2RA_01 3 + +#define POCR2SB _SFR_MEM16(0xB0) + +#define POCR2SBL _SFR_MEM8(0xB0) +#define POCR2SB_0 0 +#define POCR2SB_1 1 +#define POCR2SB_2 2 +#define POCR2SB_3 3 +#define POCR2SB_4 4 +#define POCR2SB_5 5 +#define POCR2SB_6 6 +#define POCR2SB_7 7 + +#define POCR2SBH _SFR_MEM8(0xB1) +#define POCR2SB_8 0 +#define POCR2SB_9 1 +#define POCR2SB_00 2 +#define POCR2SB_01 3 + +#define POCRxRB _SFR_MEM16(0xB2) + +#define POCRxRBL _SFR_MEM8(0xB2) +#define POCR_RB_0 0 +#define POCR_RB_1 1 +#define POCR_RB_2 2 +#define POCR_RB_3 3 +#define POCR_RB_4 4 +#define POCR_RB_5 5 +#define POCR_RB_6 6 +#define POCR_RB_7 7 + +#define POCRxRBH _SFR_MEM8(0xB3) +#define POCR_RB_8 0 +#define POCR_RB_9 1 +#define POCR_RB_00 2 +#define POCR_RB_01 3 + +#define PSYNC _SFR_MEM8(0xB4) +#define PSYNC00 0 +#define PSYNC01 1 +#define PSYNC10 2 +#define PSYNC11 3 +#define PSYNC20 4 +#define PSYNC21 5 + +#define PCNF _SFR_MEM8(0xB5) +#define POPA 2 +#define POPB 3 +#define PMODE 4 +#define PULOCK 5 + +#define POC _SFR_MEM8(0xB6) +#define POEN0A 0 +#define POEN0B 1 +#define POEN1A 2 +#define POEN1B 3 +#define POEN2A 4 +#define POEN2B 5 + +#define PCTL _SFR_MEM8(0xB7) +#define PRUN 0 +#define PCCYC 1 +#define PCLKSEL 5 +#define PPRE0 6 +#define PPRE1 7 + +#define PMIC0 _SFR_MEM8(0xB8) +#define PRFM00 0 +#define PRFM01 1 +#define PRFM02 2 +#define PAOC0 3 +#define PFLTE0 4 +#define PELEV0 5 +#define PISEL0 6 +#define POVEN0 7 + +#define PMIC1 _SFR_MEM8(0xB9) +#define PRFM10 0 +#define PRFM11 1 +#define PRFM12 2 +#define PAOC1 3 +#define PFLTE1 4 +#define PELEV1 5 +#define PISEL1 6 +#define POVEN1 7 + +#define PMIC2 _SFR_MEM8(0xBA) +#define PRFM20 0 +#define PRFM21 1 +#define PRFM22 2 +#define PAOC2 3 +#define PFLTE2 4 +#define PELEV2 5 +#define PISEL2 6 +#define POVEN2 7 + +#define PIM _SFR_MEM8(0xBB) +#define PEOPE 0 +#define PEVE0 1 +#define PEVE1 2 +#define PEVE2 3 + +#define PIFR _SFR_MEM8(0xBC) +#define PEOP 0 +#define PEV0 1 +#define PEV1 2 +#define PEV2 3 + +#define LINCR _SFR_MEM8(0xC8) +#define LCMD0 0 +#define LCMD1 1 +#define LCMD2 2 +#define LENA 3 +#define LCONF0 4 +#define LCONF1 5 +#define LIN13 6 +#define LSWRES 7 + +#define LINSIR _SFR_MEM8(0xC9) +#define LRXOK 0 +#define LTXOK 1 +#define LIDOK 2 +#define LERR 3 +#define LBUSY 4 +#define LIDST0 5 +#define LIDST1 6 +#define LIDST2 7 + +#define LINENIR _SFR_MEM8(0xCA) +#define LENRXOK 0 +#define LENTXOK 1 +#define LENIDOK 2 +#define LENERR 3 + +#define LINERR _SFR_MEM8(0xCB) +#define LBERR 0 +#define LCERR 1 +#define LPERR 2 +#define LSERR 3 +#define LFERR 4 +#define LOVERR 5 +#define LTOERR 6 +#define LABORT 7 + +#define LINBTR _SFR_MEM8(0xCC) +#define LBT0 0 +#define LBT1 1 +#define LBT2 2 +#define LBT3 3 +#define LBT4 4 +#define LBT5 5 +#define LDISR 7 + +#define LINBRR _SFR_MEM16(0xCD) + +#define LINBRRL _SFR_MEM8(0xCD) +#define LDIV0 0 +#define LDIV1 1 +#define LDIV2 2 +#define LDIV3 3 +#define LDIV4 4 +#define LDIV5 5 +#define LDIV6 6 +#define LDIV7 7 + +#define LINBRRH _SFR_MEM8(0xCE) +#define LDIV8 0 +#define LDIV9 1 +#define LDIV10 2 +#define LDIV11 3 + +#define LINDLR _SFR_MEM8(0xCF) +#define LRXDL0 0 +#define LRXDL1 1 +#define LRXDL2 2 +#define LRXDL3 3 +#define LTXDL0 4 +#define LTXDL1 5 +#define LTXDL2 6 +#define LTXDL3 7 + +#define LINIDR _SFR_MEM8(0xD0) +#define LID0 0 +#define LID1 1 +#define LID2 2 +#define LID3 3 +#define LID4 4 +#define LID5 5 +#define LP0 6 +#define LP1 7 + +#define LINSEL _SFR_MEM8(0xD1) +#define LINDX0 0 +#define LINDX1 1 +#define LINDX2 2 +#define LAINC 3 + +#define LINDAT _SFR_MEM8(0xD2) +#define LDATA0 0 +#define LDATA1 1 +#define LDATA2 2 +#define LDATA3 3 +#define LDATA4 4 +#define LDATA5 5 +#define LDATA6 6 +#define LDATA7 7 + +#define CANGCON _SFR_MEM8(0xD8) +#define SWRES 0 +#define ENASTB 1 +#define TEST 2 +#define LISTEN 3 +#define SYNTTC 4 +#define TTC 5 +#define OVRQ 6 +#define ABRQ 7 + +#define CANGSTA _SFR_MEM8(0xD9) +#define ERRP 0 +#define BOFF 1 +#define ENFG 2 +#define RXBSY 3 +#define TXBSY 4 +#define OVFG 6 + +#define CANGIT _SFR_MEM8(0xDA) +#define AERG 0 +#define FERG 1 +#define CERG 2 +#define SERG 3 +#define BXOK 4 +#define OVRTIM 5 +#define BOFFIT 6 +#define CANIT 7 + +#define CANGIE _SFR_MEM8(0xDB) +#define ENOVRT 0 +#define ENERG 1 +#define ENBX 2 +#define ENERR 3 +#define ENTX 4 +#define ENRX 5 +#define ENBOFF 6 +#define ENIT 7 + +#define CANEN2 _SFR_MEM8(0xDC) +#define ENMOB0 0 +#define ENMOB1 1 +#define ENMOB2 2 +#define ENMOB3 3 +#define ENMOB4 4 +#define ENMOB5 5 + +#define CANEN1 _SFR_MEM8(0xDD) + +#define CANIE2 _SFR_MEM8(0xDE) +#define IEMOB0 0 +#define IEMOB1 1 +#define IEMOB2 2 +#define IEMOB3 3 +#define IEMOB4 4 +#define IEMOB5 5 + +#define CANIE1 _SFR_MEM8(0xDF) + +#define CANSIT2 _SFR_MEM8(0xE0) +#define SIT0 0 +#define SIT1 1 +#define SIT2 2 +#define SIT3 3 +#define SIT4 4 +#define SIT5 5 + +#define CANSIT1 _SFR_MEM8(0xE1) + +#define CANBT1 _SFR_MEM8(0xE2) +#define BRP0 1 +#define BRP1 2 +#define BRP2 3 +#define BRP3 4 +#define BRP4 5 +#define BRP5 6 + +#define CANBT2 _SFR_MEM8(0xE3) +#define PRS0 1 +#define PRS1 2 +#define PRS2 3 +#define SJW0 5 +#define SJW1 6 + +#define CANBT3 _SFR_MEM8(0xE4) +#define SMP 0 +#define PHS10 1 +#define PHS11 2 +#define PHS12 3 +#define PHS20 4 +#define PHS21 5 +#define PHS22 6 + +#define CANTCON _SFR_MEM8(0xE5) + +#define CANTIML _SFR_MEM8(0xE6) + +#define CANTIMH _SFR_MEM8(0xE7) + +#define CANTTCL _SFR_MEM8(0xE8) + +#define CANTTCH _SFR_MEM8(0xE9) + +#define CANTEC _SFR_MEM8(0xEA) + +#define CANREC _SFR_MEM8(0xEB) + +#define CANHPMOB _SFR_MEM8(0xEC) +#define CGP0 0 +#define CGP1 1 +#define CGP2 2 +#define CGP3 3 +#define HPMOB0 4 +#define HPMOB1 5 +#define HPMOB2 6 +#define HPMOB3 7 + +#define CANPAGE _SFR_MEM8(0xED) +#define INDX0 0 +#define INDX1 1 +#define INDX2 2 +#define AINC 3 +#define MOBNB0 4 +#define MOBNB1 5 +#define MOBNB2 6 +#define MOBNB3 7 + +#define CANSTMOB _SFR_MEM8(0xEE) +#define AERR 0 +#define FERR 1 +#define CERR 2 +#define SERR 3 +#define BERR 4 +#define RXOK 5 +#define TXOK 6 +#define DLCW 7 + +#define CANCDMOB _SFR_MEM8(0xEF) +#define DLC0 0 +#define DLC1 1 +#define DLC2 2 +#define DLC3 3 +#define IDE 4 +#define RPLV 5 +#define CONMOB0 6 +#define CONMOB1 7 + +#define CANIDT4 _SFR_MEM8(0xF0) +#define RB0TAG 0 +#define RB1TAG 1 +#define RTRTAG 2 +#define IDT0 3 +#define IDT1 4 +#define IDT2 5 +#define IDT3 6 +#define IDT4 7 + +#define CANIDT3 _SFR_MEM8(0xF1) +#define IDT5 0 +#define IDT6 1 +#define IDT7 2 +#define IDT8 3 +#define IDT9 4 +#define IDT10 5 +#define IDT11 6 +#define IDT12 7 + +#define CANIDT2 _SFR_MEM8(0xF2) +#define IDT13 0 +#define IDT14 1 +#define IDT15 2 +#define IDT16 3 +#define IDT17 4 +#define IDT18 5 +#define IDT19 6 +#define IDT20 7 + +#define CANIDT1 _SFR_MEM8(0xF3) +#define IDT21 0 +#define IDT22 1 +#define IDT23 2 +#define IDT24 3 +#define IDT25 4 +#define IDT26 5 +#define IDT27 6 +#define IDT28 7 + +#define CANIDM4 _SFR_MEM8(0xF4) +#define IDEMSK 0 +#define RTRMSK 2 +#define IDMSK0 3 +#define IDMSK1 4 +#define IDMSK2 5 +#define IDMSK3 6 +#define IDMSK4 7 + +#define CANIDM3 _SFR_MEM8(0xF5) +#define IDMSK5 0 +#define IDMSK6 1 +#define IDMSK7 2 +#define IDMSK8 3 +#define IDMSK9 4 +#define IDMSK10 5 +#define IDMSK11 6 +#define IDMSK12 7 + +#define CANIDM2 _SFR_MEM8(0xF6) +#define IDMSK13 0 +#define IDMSK14 1 +#define IDMSK15 2 +#define IDMSK16 3 +#define IDMSK17 4 +#define IDMSK18 5 +#define IDMSK19 6 +#define IDMSK20 7 + +#define CANIDM1 _SFR_MEM8(0xF7) +#define IDMSK21 0 +#define IDMSK22 1 +#define IDMSK23 2 +#define IDMSK24 3 +#define IDMSK25 4 +#define IDMSK26 5 +#define IDMSK27 6 +#define IDMSK28 7 + +#define CANSTML _SFR_MEM8(0xF8) + +#define CANSTMH _SFR_MEM8(0xF9) + +#define CANMSG _SFR_MEM8(0xFA) + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define ANACOMP0_vect _VECTOR(1) /* Analog Comparator 0 */ +#define ANACOMP1_vect _VECTOR(2) /* Analog Comparator 1 */ +#define ANACOMP2_vect _VECTOR(3) /* Analog Comparator 2 */ +#define ANACOMP3_vect _VECTOR(4) /* Analog Comparator 3 */ +#define PSC_FAULT_vect _VECTOR(5) /* PSC Fault */ +#define PSC_EC_vect _VECTOR(6) /* PSC End of Cycle */ +#define INT0_vect _VECTOR(7) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(8) /* External Interrupt Request 1 */ +#define INT2_vect _VECTOR(9) /* External Interrupt Request 2 */ +#define INT3_vect _VECTOR(10) /* External Interrupt Request 3 */ +#define TIMER1_CAPT_vect _VECTOR(11) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(12) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(13) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(14) /* Timer1/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(15) /* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(16) /* Timer/Counter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(17) /* Timer/Counter0 Overflow */ +#define CAN_INT_vect _VECTOR(18) /* CAN MOB, Burst, General Errors */ +#define CAN_TOVF_vect _VECTOR(19) /* CAN Timer Overflow */ +#define LIN_TC_vect _VECTOR(20) /* LIN Transfer Complete */ +#define LIN_ERR_vect _VECTOR(21) /* LIN Error */ +#define PCINT0_vect _VECTOR(22) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(23) /* Pin Change Interrupt Request 1 */ +#define PCINT2_vect _VECTOR(24) /* Pin Change Interrupt Request 2 */ +#define PCINT3_vect _VECTOR(25) /* Pin Change Interrupt Request 3 */ +#define SPI_STC_vect _VECTOR(26) /* SPI Serial Transfer Complete */ +#define ADC_vect _VECTOR(27) /* ADC Conversion Complete */ +#define WDT_vect _VECTOR(28) /* Watchdog Time-Out Interrupt */ +#define EE_READY_vect _VECTOR(29) /* EEPROM Ready */ +#define SPM_READY_vect _VECTOR(30) /* Store Program Memory Read */ + +#define _VECTORS_SIZE (31 * 4) + + +/* Constants */ +#define SPM_PAGESIZE (64) +#define RAMSTART (0x100) +#define RAMSIZE (0x800) +#define RAMEND (RAMSTART + RAMSIZE - 1) /* Last On-Chip SRAM Location */ +#define XRAMSIZE (0) +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END (0x3FF) +#define E2PAGESIZE (4) +#define FLASHEND (0x7FFF) + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator output option */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset Disable */ +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector Trigger Level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector Trigger Level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector Trigger Level */ +#define FUSE_PSCRVB (unsigned char)~_BV(3) /* PSC Outputs xB Reset Value */ +#define FUSE_PSCRVA (unsigned char)~_BV(4) /* PSC Outputs xA Reset Value */ +#define FUSE_PSCRB (unsigned char)~_BV(5) /* PSC Reset Behavior */ +#define EFUSE_DEFAULT (FUSE_BODLEVEL1 & FUSE_BODLEVEL2) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x84 + + +#endif /* _AVR_IOM32M1_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32u4.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32u4.h new file mode 100644 index 0000000..ca351f8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32u4.h @@ -0,0 +1,1504 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom32u4.h,v 1.1.2.10 2008/08/06 22:45:06 arcanum Exp $ */ + +/* avr/iom32u4.h - definitions for ATmega32U4. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom32u4.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM32U4_H_ +#define _AVR_IOM32U4_H_ 1 + + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINE _SFR_IO8(0x0C) +#define PINE2 2 +#define PINE6 6 + +#define DDRE _SFR_IO8(0x0D) +#define DDE2 2 +#define DDE6 6 + +#define PORTE _SFR_IO8(0x0E) +#define PORTE2 2 +#define PORTE6 6 + +#define PINF _SFR_IO8(0x0F) +#define PINF0 0 +#define PINF1 1 +#define PINF4 4 +#define PINF5 5 +#define PINF6 6 +#define PINF7 7 + +#define DDRF _SFR_IO8(0x10) +#define DDF0 0 +#define DDF1 1 +#define DDF4 4 +#define DDF5 5 +#define DDF6 6 +#define DDF7 7 + +#define PORTF _SFR_IO8(0x11) +#define PORTF0 0 +#define PORTF1 1 +#define PORTF4 4 +#define PORTF5 5 +#define PORTF6 6 +#define PORTF7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define OCF1C 3 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define TIFR3 _SFR_IO8(0x18) +#define TOV3 0 +#define OCF3A 1 +#define OCF3B 2 +#define OCF3C 3 +#define ICF3 5 + +#define TIFR4 _SFR_IO8(0x19) +#define TOV4 2 +#define OCF4B 5 +#define OCF4A 6 +#define OCF4D 7 + +#define TIFR5 _SFR_IO8(0x1A) + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 +#define INTF4 4 +#define INTF5 5 +#define INTF6 6 +#define INTF7 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 +#define INT3 3 +#define INT4 4 +#define INT5 5 +#define INT6 6 +#define INT7 7 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PINDIV 4 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 + +#define PLLFRQ _SFR_IO8(0x32) +#define PDIV0 0 +#define PDIV1 1 +#define PDIV2 2 +#define PDIV3 3 +#define PLLTM0 4 +#define PLLTM1 5 +#define PLLUSB 6 +#define PINMUX 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define SIGRD 5 +#define RWWSB 6 +#define SPMIE 7 + +#define RAMPZ _SFR_IO8(0x3B) +#define RAMPZ0 0 + +#define EIND _SFR_IO8(0x3C) +#define EIND0 0 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR0 _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define PRR1 _SFR_MEM8(0x65) +#define PRUSART1 0 +#define PRTIM3 3 +#define PRUSB 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define RCCTRL _SFR_MEM8(0x67) +#define RCFREQ 0 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +#define EICRB _SFR_MEM8(0x6A) +#define ISC40 0 +#define ISC41 1 +#define ISC50 2 +#define ISC51 3 +#define ISC60 4 +#define ISC61 5 +#define ISC70 6 +#define ISC71 7 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) + +#define PCMSK2 _SFR_MEM8(0x6D) + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define OCIE1C 3 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#define TIMSK3 _SFR_MEM8(0x71) +#define TOIE3 0 +#define OCIE3A 1 +#define OCIE3B 2 +#define OCIE3C 3 +#define ICIE3 5 + +#define TIMSK4 _SFR_MEM8(0x72) +#define TOIE4 2 +#define OCIE4B 5 +#define OCIE4A 6 +#define OCIE4D 7 + +#define TIMSK5 _SFR_MEM8(0x73) + +#define ADC _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ADTS3 4 +#define MUX5 5 +#define ACME 6 +#define ADHSM 7 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR2 _SFR_MEM8(0x7D) +#define ADC8D 0 +#define ADC9D 1 +#define ADC10D 2 +#define ADC11D 3 +#define ADC12D 4 +#define ADC13D 5 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1C0 2 +#define COM1C1 3 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1C 5 +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define OCR1C _SFR_MEM16(0x8C) + +#define OCR1CL _SFR_MEM8(0x8C) +#define OCR1CL0 0 +#define OCR1CL1 1 +#define OCR1CL2 2 +#define OCR1CL3 3 +#define OCR1CL4 4 +#define OCR1CL5 5 +#define OCR1CL6 6 +#define OCR1CL7 7 + +#define OCR1CH _SFR_MEM8(0x8D) +#define OCR1CH0 0 +#define OCR1CH1 1 +#define OCR1CH2 2 +#define OCR1CH3 3 +#define OCR1CH4 4 +#define OCR1CH5 5 +#define OCR1CH6 6 +#define OCR1CH7 7 + +#define TCCR3A _SFR_MEM8(0x90) +#define WGM30 0 +#define WGM31 1 +#define COM3C0 2 +#define COM3C1 3 +#define COM3B0 4 +#define COM3B1 5 +#define COM3A0 6 +#define COM3A1 7 + +#define TCCR3B _SFR_MEM8(0x91) +#define CS30 0 +#define CS31 1 +#define CS32 2 +#define WGM32 3 +#define WGM33 4 +#define ICES3 6 +#define ICNC3 7 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3C 5 +#define FOC3B 6 +#define FOC3A 7 + +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3L0 0 +#define TCNT3L1 1 +#define TCNT3L2 2 +#define TCNT3L3 3 +#define TCNT3L4 4 +#define TCNT3L5 5 +#define TCNT3L6 6 +#define TCNT3L7 7 + +#define TCNT3H _SFR_MEM8(0x95) +#define TCNT3H0 0 +#define TCNT3H1 1 +#define TCNT3H2 2 +#define TCNT3H3 3 +#define TCNT3H4 4 +#define TCNT3H5 5 +#define TCNT3H6 6 +#define TCNT3H7 7 + +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3L0 0 +#define ICR3L1 1 +#define ICR3L2 2 +#define ICR3L3 3 +#define ICR3L4 4 +#define ICR3L5 5 +#define ICR3L6 6 +#define ICR3L7 7 + +#define ICR3H _SFR_MEM8(0x97) +#define ICR3H0 0 +#define ICR3H1 1 +#define ICR3H2 2 +#define ICR3H3 3 +#define ICR3H4 4 +#define ICR3H5 5 +#define ICR3H6 6 +#define ICR3H7 7 + +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3AH _SFR_MEM8(0x99) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3BL0 0 +#define OCR3BL1 1 +#define OCR3BL2 2 +#define OCR3BL3 3 +#define OCR3BL4 4 +#define OCR3BL5 5 +#define OCR3BL6 6 +#define OCR3BL7 7 + +#define OCR3BH _SFR_MEM8(0x9B) +#define OCR3BH0 0 +#define OCR3BH1 1 +#define OCR3BH2 2 +#define OCR3BH3 3 +#define OCR3BH4 4 +#define OCR3BH5 5 +#define OCR3BH6 6 +#define OCR3BH7 7 + +#define OCR3C _SFR_MEM16(0x9C) + +#define OCR3CL _SFR_MEM8(0x9C) +#define OCR3CL0 0 +#define OCR3CL1 1 +#define OCR3CL2 2 +#define OCR3CL3 3 +#define OCR3CL4 4 +#define OCR3CL5 5 +#define OCR3CL6 6 +#define OCR3CL7 7 + +#define OCR3CH _SFR_MEM8(0x9D) +#define OCR3CH0 0 +#define OCR3CH1 1 +#define OCR3CH2 2 +#define OCR3CH3 3 +#define OCR3CH4 4 +#define OCR3CH5 5 +#define OCR3CH6 6 +#define OCR3CH7 7 + +#define UHCON _SFR_MEM8(0x9E) + +#define UHINT _SFR_MEM8(0x9F) + +#define UHIEN _SFR_MEM8(0xA0) + +#define UHADDR _SFR_MEM8(0xA1) + +#define UHFNUM _SFR_MEM16(0xA2) + +#define UHFNUML _SFR_MEM8(0xA2) + +#define UHFNUMH _SFR_MEM8(0xA3) + +#define UHFLEN _SFR_MEM8(0xA4) + +#define UPINRQX _SFR_MEM8(0xA5) + +#define UPINTX _SFR_MEM8(0xA6) + +#define UPNUM _SFR_MEM8(0xA7) + +#define UPRST _SFR_MEM8(0xA8) + +#define UPCONX _SFR_MEM8(0xA9) + +#define UPCFG0X _SFR_MEM8(0xAA) + +#define UPCFG1X _SFR_MEM8(0xAB) + +#define UPSTAX _SFR_MEM8(0xAC) + +#define UPCFG2X _SFR_MEM8(0xAD) + +#define UPIENX _SFR_MEM8(0xAE) + +#define UPDATX _SFR_MEM8(0xAF) + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 1 +#define TWAM1 2 +#define TWAM2 3 +#define TWAM3 4 +#define TWAM4 5 +#define TWAM5 6 +#define TWAM6 7 + +#define TCNT4 _SFR_MEM16(0xBE) + +#define TCNT4L _SFR_MEM8(0xBE) +#define TC40 0 +#define TC41 1 +#define TC42 2 +#define TC43 3 +#define TC44 4 +#define TC45 5 +#define TC46 6 +#define TC47 7 + +#define TCNT4H _SFR_MEM8(0xBF) /* Alias for naming consistency. */ +#define TC4H _SFR_MEM8(0xBF) /* Per XML device file. */ +#define TC48 0 +#define TC49 1 +#define TC410 2 + +#define TCCR4A _SFR_MEM8(0xC0) +#define PWM4B 0 +#define PWM4A 1 +#define FOC4B 2 +#define FOC4A 3 +#define COM4B0 4 +#define COM4B1 5 +#define COM4A0 6 +#define COM4A1 7 + +#define TCCR4B _SFR_MEM8(0xC1) +#define CS40 0 +#define CS41 1 +#define CS42 2 +#define CS43 3 +#define DTPS40 4 +#define DTPS41 5 +#define PSR4 6 +#define PWM4X 7 + +#define TCCR4C _SFR_MEM8(0xC2) +#define PWM4D 0 +#define FOC4D 1 +#define COM4D0 2 +#define COM4D1 3 +#define COM4B0S 4 +#define COM4B1S 5 +#define COM4A0S 6 +#define COM4A1S 7 + +#define TCCR4D _SFR_MEM8(0xC3) +#define WGM40 0 +#define WGM41 1 +#define FPF4 2 +#define FPAC4 3 +#define FPES4 4 +#define FPNC4 5 +#define FPEN4 6 +#define FPIE4 7 + +#define TCCR4E _SFR_MEM8(0xC4) +#define OC4OE0 0 +#define OC4OE1 1 +#define OC4OE2 2 +#define OC4OE3 3 +#define OC4OE4 4 +#define OC4OE5 5 +#define ENHC4 6 +#define TLOCK4 7 + +#define CLKSEL0 _SFR_MEM8(0xC5) +#define CLKS 0 +#define EXTE 2 +#define RCE 3 +#define EXSUT0 4 +#define EXSUT1 5 +#define RCSUT0 6 +#define RCSUT1 7 + +#define CLKSEL1 _SFR_MEM8(0xC6) +#define EXCKSEL0 0 +#define EXCKSEL1 1 +#define EXCKSEL2 2 +#define EXCKSEL3 3 +#define RCCKSEL0 4 +#define RCCKSEL1 5 +#define RCCKSEL2 6 +#define RCCKSEL3 7 + +#define CLKSTA _SFR_MEM8(0xC7) +#define EXTON 0 +#define RCON 1 + +#define UCSR1A _SFR_MEM8(0xC8) +#define MPCM1 0 +#define U2X1 1 +#define UPE1 2 +#define DOR1 3 +#define FE1 4 +#define UDRE1 5 +#define TXC1 6 +#define RXC1 7 + +#define UCSR1B _SFR_MEM8(0xC9) +#define TXB81 0 +#define RXB81 1 +#define UCSZ12 2 +#define TXEN1 3 +#define RXEN1 4 +#define UDRIE1 5 +#define TXCIE1 6 +#define RXCIE1 7 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UCPOL1 0 +#define UCSZ10 1 +#define UCSZ11 2 +#define USBS1 3 +#define UPM10 4 +#define UPM11 5 +#define UMSEL10 6 +#define UMSEL11 7 + +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) + +#define UBRR1H _SFR_MEM8(0xCD) + +#define UDR1 _SFR_MEM8(0xCE) +#define UDR1_0 0 +#define UDR1_1 1 +#define UDR1_2 2 +#define UDR1_3 3 +#define UDR1_4 4 +#define UDR1_5 5 +#define UDR1_6 6 +#define UDR1_7 7 + +#define OCR4A _SFR_MEM8(0xCF) +#define OCR4A0 0 +#define OCR4A1 1 +#define OCR4A2 2 +#define OCR4A3 3 +#define OCR4A4 4 +#define OCR4A5 5 +#define OCR4A6 6 +#define OCR4A7 7 + +#define OCR4B _SFR_MEM8(0xD0) +#define OCR4B0 0 +#define OCR4B1 1 +#define OCR4B2 2 +#define OCR4B3 3 +#define OCR4B4 4 +#define OCR4B5 5 +#define OCR4B6 6 +#define OCR4B7 7 + +#define OCR4C _SFR_MEM8(0xD1) +#define OCR4C0 0 +#define OCR4C1 1 +#define OCR4C2 2 +#define OCR4C3 3 +#define OCR4C4 4 +#define OCR4C5 5 +#define OCR4C6 6 +#define OCR4C7 7 + +#define OCR4D _SFR_MEM8(0xD2) +#define OCR4D0 0 +#define OCR4D1 1 +#define OCR4D2 2 +#define OCR4D3 3 +#define OCR4D4 4 +#define OCR4D5 5 +#define OCR4D6 6 +#define OCR4D7 7 + +#define DT4 _SFR_MEM8(0xD4) +#define DT4L0 0 +#define DT4L1 1 +#define DT4L2 2 +#define DT4L3 3 +#define DT4L4 4 +#define DT4L5 5 +#define DT4L6 6 +#define DT4L7 7 + +#define UHWCON _SFR_MEM8(0xD7) +#define UVREGE 0 + +#define USBCON _SFR_MEM8(0xD8) +#define VBUSTE 0 +#define OTGPADE 4 +#define FRZCLK 5 +#define USBE 7 + +#define USBSTA _SFR_MEM8(0xD9) +#define VBUS 0 +#define SPEED 3 + +#define USBINT _SFR_MEM8(0xDA) +#define VBUSTI 0 + +#define OTGCON _SFR_MEM8(0xDD) + +#define OTGIEN _SFR_MEM8(0xDE) + +#define OTGINT _SFR_MEM8(0xDF) + +#define UDCON _SFR_MEM8(0xE0) +#define DETACH 0 +#define RMWKUP 1 +#define LSM 2 +#define RSTCPU 3 + +#define UDINT _SFR_MEM8(0xE1) +#define SUSPI 0 +#define SOFI 2 +#define EORSTI 3 +#define WAKEUPI 4 +#define EORSMI 5 +#define UPRSMI 6 + +#define UDIEN _SFR_MEM8(0xE2) +#define SUSPE 0 +#define SOFE 2 +#define EORSTE 3 +#define WAKEUPE 4 +#define EORSME 5 +#define UPRSME 6 + +#define UDADDR _SFR_MEM8(0xE3) +#define UADD0 0 +#define UADD1 1 +#define UADD2 2 +#define UADD3 3 +#define UADD4 4 +#define UADD5 5 +#define UADD6 6 +#define ADDEN 7 + +#define UDFNUM _SFR_MEM16(0xE4) + +#define UDFNUML _SFR_MEM8(0xE4) +#define FNUM0 0 +#define FNUM1 1 +#define FNUM2 2 +#define FNUM3 3 +#define FNUM4 4 +#define FNUM5 5 +#define FNUM6 6 +#define FNUM7 7 + +#define UDFNUMH _SFR_MEM8(0xE5) +#define FNUM8 0 +#define FNUM9 1 +#define FNUM10 2 + +#define UDMFN _SFR_MEM8(0xE6) +#define FNCERR 4 + +#define UDTST _SFR_MEM8(0xE7) + +#define UEINTX _SFR_MEM8(0xE8) +#define TXINI 0 +#define STALLEDI 1 +#define RXOUTI 2 +#define RXSTPI 3 +#define NAKOUTI 4 +#define RWAL 5 +#define NAKINI 6 +#define FIFOCON 7 + +#define UENUM _SFR_MEM8(0xE9) +#define UENUM_0 0 +#define UENUM_1 1 +#define UENUM_2 2 + +#define UERST _SFR_MEM8(0xEA) +#define EPRST0 0 +#define EPRST1 1 +#define EPRST2 2 +#define EPRST3 3 +#define EPRST4 4 +#define EPRST5 5 +#define EPRST6 6 + +#define UECONX _SFR_MEM8(0xEB) +#define EPEN 0 +#define RSTDT 3 +#define STALLRQC 4 +#define STALLRQ 5 + +#define UECFG0X _SFR_MEM8(0xEC) +#define EPDIR 0 +#define EPTYPE0 6 +#define EPTYPE1 7 + +#define UECFG1X _SFR_MEM8(0xED) +#define ALLOC 1 +#define EPBK0 2 +#define EPBK1 3 +#define EPSIZE0 4 +#define EPSIZE1 5 +#define EPSIZE2 6 + +#define UESTA0X _SFR_MEM8(0xEE) +#define NBUSYBK0 0 +#define NBUSYBK1 1 +#define DTSEQ0 2 +#define DTSEQ1 3 +#define UNDERFI 5 +#define OVERFI 6 +#define CFGOK 7 + +#define UESTA1X _SFR_MEM8(0xEF) +#define CURRBK0 0 +#define CURRBK1 1 +#define CTRLDIR 2 + +#define UEIENX _SFR_MEM8(0xF0) +#define TXINE 0 +#define STALLEDE 1 +#define RXOUTE 2 +#define RXSTPE 3 +#define NAKOUTE 4 +#define NAKINE 6 +#define FLERRE 7 + +#define UEDATX _SFR_MEM8(0xF1) +#define DAT0 0 +#define DAT1 1 +#define DAT2 2 +#define DAT3 3 +#define DAT4 4 +#define DAT5 5 +#define DAT6 6 +#define DAT7 7 + +#define UEBCX _SFR_MEM16(0xF2) + +#define UEBCLX _SFR_MEM8(0xF2) +#define BYCT0 0 +#define BYCT1 1 +#define BYCT2 2 +#define BYCT3 3 +#define BYCT4 4 +#define BYCT5 5 +#define BYCT6 6 +#define BYCT7 7 + +#define UEBCHX _SFR_MEM8(0xF3) + +#define UEINT _SFR_MEM8(0xF4) +#define EPINT0 0 +#define EPINT1 1 +#define EPINT2 2 +#define EPINT3 3 +#define EPINT4 4 +#define EPINT5 5 +#define EPINT6 6 + +#define UPERRX _SFR_MEM8(0xF5) + +#define UPBCLX _SFR_MEM8(0xF6) + +#define UPBCHX _SFR_MEM8(0xF7) + +#define UPINT _SFR_MEM8(0xF8) + +#define OTGTCON _SFR_MEM8(0xF9) + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define INT2_vect _VECTOR(3) /* External Interrupt Request 2 */ +#define INT3_vect _VECTOR(4) /* External Interrupt Request 3 */ +#define INT6_vect _VECTOR(7) /* External Interrupt Request 6 */ +#define PCINT0_vect _VECTOR(9) /* Pin Change Interrupt Request 0 */ +#define USB_GEN_vect _VECTOR(10) /* USB General Interrupt Request */ +#define USB_COM_vect _VECTOR(11) /* USB Endpoint/Pipe Interrupt Communication Request */ +#define WDT_vect _VECTOR(12) /* Watchdog Time-out Interrupt */ +#define TIMER1_CAPT_vect _VECTOR(16) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(17) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(18) /* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPC_vect _VECTOR(19) /* Timer/Counter1 Compare Match C */ +#define TIMER1_OVF_vect _VECTOR(20) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(21) /* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(22) /* Timer/Counter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(23) /* Timer/Counter0 Overflow */ +#define SPI_STC_vect _VECTOR(24) /* SPI Serial Transfer Complete */ +#define USART1_RX_vect _VECTOR(25) /* USART1, Rx Complete */ +#define USART1_UDRE_vect _VECTOR(26) /* USART1 Data register Empty */ +#define USART1_TX_vect _VECTOR(27) /* USART1, Tx Complete */ +#define ANALOG_COMP_vect _VECTOR(28) /* Analog Comparator */ +#define ADC_vect _VECTOR(29) /* ADC Conversion Complete */ +#define EE_READY_vect _VECTOR(30) /* EEPROM Ready */ +#define TIMER3_CAPT_vect _VECTOR(31) /* Timer/Counter3 Capture Event */ +#define TIMER3_COMPA_vect _VECTOR(32) /* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPB_vect _VECTOR(33) /* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPC_vect _VECTOR(34) /* Timer/Counter3 Compare Match C */ +#define TIMER3_OVF_vect _VECTOR(35) /* Timer/Counter3 Overflow */ +#define TWI_vect _VECTOR(36) /* 2-wire Serial Interface */ +#define SPM_READY_vect _VECTOR(37) /* Store Program Memory Read */ +#define TIMER4_COMPA_vect _VECTOR(38) /* Timer/Counter4 Compare Match A */ +#define TIMER4_COMPB_vect _VECTOR(39) /* Timer/Counter4 Compare Match B */ +#define TIMER4_COMPD_vect _VECTOR(40) /* Timer/Counter4 Compare Match D */ +#define TIMER4_OVF_vect _VECTOR(41) /* Timer/Counter4 Overflow */ +#define TIMER4_FPF_vect _VECTOR(42) /* Timer/Counter4 Fault Protection Interrupt */ + +#define _VECTORS_SIZE (43 * 4) + + + +/* Constants */ +#define SPM_PAGESIZE (128) +#define RAMSTART (0x100) +#define RAMSIZE (0xA00) +#define RAMEND (RAMSTART + RAMSIZE - 1) /* Last On-Chip SRAM Location */ +#define XRAMSTART (0x2200) +#define XRAMSIZE (0x10000) +#define XRAMEND (XRAMSTART + XRAMSIZE - 1) +#define E2END (0x3FF) +#define E2PAGESIZE (4) +#define FLASHEND (0x7FFF) + + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator options */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */ +#define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */ +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_HWBE (unsigned char)~_BV(3) /* Hardware Boot Enable */ +#define EFUSE_DEFAULT (0xFF) + + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x87 + + + +#endif /* _AVR_IOM32U4_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32u6.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32u6.h new file mode 100644 index 0000000..44c1e5c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom32u6.h @@ -0,0 +1,1411 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom32u6.h,v 1.1.2.2 2008/10/30 22:04:09 arcanum Exp $ */ + +/* avr/iom32u6.h - definitions for ATmega32U6 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom32u6.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATmega32U6_H_ +#define _AVR_ATmega32U6_H_ 1 + + +/* Registers and associated bit numbers. */ + +#define PINA _SFR_IO8(0x00) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x01) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x02) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 +#define PORTA4 4 +#define PORTA5 5 +#define PORTA6 6 +#define PORTA7 7 + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINE _SFR_IO8(0x0C) +#define PINE0 0 +#define PINE1 1 +#define PINE2 2 +#define PINE3 3 +#define PINE4 4 +#define PINE5 5 +#define PINE6 6 +#define PINE7 7 + +#define DDRE _SFR_IO8(0x0D) +#define DDE0 0 +#define DDE1 1 +#define DDE2 2 +#define DDE3 3 +#define DDE4 4 +#define DDE5 5 +#define DDE6 6 +#define DDE7 7 + +#define PORTE _SFR_IO8(0x0E) +#define PORTE0 0 +#define PORTE1 1 +#define PORTE2 2 +#define PORTE3 3 +#define PORTE4 4 +#define PORTE5 5 +#define PORTE6 6 +#define PORTE7 7 + +#define PINF _SFR_IO8(0x0F) +#define PINF0 0 +#define PINF1 1 +#define PINF2 2 +#define PINF3 3 +#define PINF4 4 +#define PINF5 5 +#define PINF6 6 +#define PINF7 7 + +#define DDRF _SFR_IO8(0x10) +#define DDF0 0 +#define DDF1 1 +#define DDF2 2 +#define DDF3 3 +#define DDF4 4 +#define DDF5 5 +#define DDF6 6 +#define DDF7 7 + +#define PORTF _SFR_IO8(0x11) +#define PORTF0 0 +#define PORTF1 1 +#define PORTF2 2 +#define PORTF3 3 +#define PORTF4 4 +#define PORTF5 5 +#define PORTF6 6 +#define PORTF7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define OCF1C 3 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define TIFR3 _SFR_IO8(0x18) +#define TOV3 0 +#define OCF3A 1 +#define OCF3B 2 +#define OCF3C 3 +#define ICF3 5 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 +#define INTF3 3 +#define INTF4 4 +#define INTF5 5 +#define INTF6 6 +#define INTF7 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 +#define INT3 3 +#define INT4 4 +#define INT5 5 +#define INT6 6 +#define INT7 7 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PLLP0 2 +#define PLLP1 3 +#define PLLP2 4 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define SIGRD 5 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR0 _SFR_MEM8(0x64) +#define PRADC 0 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define PRR1 _SFR_MEM8(0x65) +#define PRUSART1 0 +#define PRTIM3 3 +#define PRUSB 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 +#define ISC30 6 +#define ISC31 7 + +#define EICRB _SFR_MEM8(0x6A) +#define ISC40 0 +#define ISC41 1 +#define ISC50 2 +#define ISC51 3 +#define ISC60 4 +#define ISC61 5 +#define ISC70 6 +#define ISC71 7 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define OCIE1C 3 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#define TIMSK3 _SFR_MEM8(0x71) +#define TOIE3 0 +#define OCIE3A 1 +#define OCIE3B 2 +#define OCIE3C 3 +#define ICIE3 5 + +#define XMCRA _SFR_MEM8(0x74) +#define SRW00 0 +#define SRW01 1 +#define SRW10 2 +#define SRW11 3 +#define SRL0 4 +#define SRL1 5 +#define SRL2 6 +#define SRE 7 + +#define XMCRB _SFR_MEM8(0x75) +#define XMM0 0 +#define XMM1 1 +#define XMM2 2 +#define XMBK 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 +#define ADHSM 7 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1C0 2 +#define COM1C1 3 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1C 5 +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define OCR1C _SFR_MEM16(0x8C) + +#define OCR1CL _SFR_MEM8(0x8C) +#define OCR1CL0 0 +#define OCR1CL1 1 +#define OCR1CL2 2 +#define OCR1CL3 3 +#define OCR1CL4 4 +#define OCR1CL5 5 +#define OCR1CL6 6 +#define OCR1CL7 7 + +#define OCR1CH _SFR_MEM8(0x8D) +#define OCR1CH0 0 +#define OCR1CH1 1 +#define OCR1CH2 2 +#define OCR1CH3 3 +#define OCR1CH4 4 +#define OCR1CH5 5 +#define OCR1CH6 6 +#define OCR1CH7 7 + +#define TCCR3A _SFR_MEM8(0x90) +#define WGM30 0 +#define WGM31 1 +#define COM3C0 2 +#define COM3C1 3 +#define COM3B0 4 +#define COM3B1 5 +#define COM3A0 6 +#define COM3A1 7 + +#define TCCR3B _SFR_MEM8(0x91) +#define CS30 0 +#define CS31 1 +#define CS32 2 +#define WGM32 3 +#define WGM33 4 +#define ICES3 6 +#define ICNC3 7 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3C 5 +#define FOC3B 6 +#define FOC3A 7 + +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3L0 0 +#define TCNT3L1 1 +#define TCNT3L2 2 +#define TCNT3L3 3 +#define TCNT3L4 4 +#define TCNT3L5 5 +#define TCNT3L6 6 +#define TCNT3L7 7 + +#define TCNT3H _SFR_MEM8(0x95) +#define TCNT3H0 0 +#define TCNT3H1 1 +#define TCNT3H2 2 +#define TCNT3H3 3 +#define TCNT3H4 4 +#define TCNT3H5 5 +#define TCNT3H6 6 +#define TCNT3H7 7 + +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3L0 0 +#define ICR3L1 1 +#define ICR3L2 2 +#define ICR3L3 3 +#define ICR3L4 4 +#define ICR3L5 5 +#define ICR3L6 6 +#define ICR3L7 7 + +#define ICR3H _SFR_MEM8(0x97) +#define ICR3H0 0 +#define ICR3H1 1 +#define ICR3H2 2 +#define ICR3H3 3 +#define ICR3H4 4 +#define ICR3H5 5 +#define ICR3H6 6 +#define ICR3H7 7 + +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3AH _SFR_MEM8(0x99) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3BL0 0 +#define OCR3BL1 1 +#define OCR3BL2 2 +#define OCR3BL3 3 +#define OCR3BL4 4 +#define OCR3BL5 5 +#define OCR3BL6 6 +#define OCR3BL7 7 + +#define OCR3BH _SFR_MEM8(0x9B) +#define OCR3BH0 0 +#define OCR3BH1 1 +#define OCR3BH2 2 +#define OCR3BH3 3 +#define OCR3BH4 4 +#define OCR3BH5 5 +#define OCR3BH6 6 +#define OCR3BH7 7 + +#define OCR3C _SFR_MEM16(0x9C) + +#define OCR3CL _SFR_MEM8(0x9C) +#define OCR3CL0 0 +#define OCR3CL1 1 +#define OCR3CL2 2 +#define OCR3CL3 3 +#define OCR3CL4 4 +#define OCR3CL5 5 +#define OCR3CL6 6 +#define OCR3CL7 7 + +#define OCR3CH _SFR_MEM8(0x9D) +#define OCR3CH0 0 +#define OCR3CH1 1 +#define OCR3CH2 2 +#define OCR3CH3 3 +#define OCR3CH4 4 +#define OCR3CH5 5 +#define OCR3CH6 6 +#define OCR3CH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2A_0 0 +#define OCR2A_1 1 +#define OCR2A_2 2 +#define OCR2A_3 3 +#define OCR2A_4 4 +#define OCR2A_5 5 +#define OCR2A_6 6 +#define OCR2A_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2B_0 0 +#define OCR2B_1 1 +#define OCR2B_2 2 +#define OCR2B_3 3 +#define OCR2B_4 4 +#define OCR2B_5 5 +#define OCR2B_6 6 +#define OCR2B_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 1 +#define TWAM1 2 +#define TWAM2 3 +#define TWAM3 4 +#define TWAM4 5 +#define TWAM5 6 +#define TWAM6 7 + +#define UCSR1A _SFR_MEM8(0xC8) +#define MPCM1 0 +#define U2X1 1 +#define UPE1 2 +#define DOR1 3 +#define FE1 4 +#define UDRE1 5 +#define TXC1 6 +#define RXC1 7 + +#define UCSR1B _SFR_MEM8(0xC9) +#define TXB81 0 +#define RXB81 1 +#define UCSZ12 2 +#define TXEN1 3 +#define RXEN1 4 +#define UDRIE1 5 +#define TXCIE1 6 +#define RXCIE1 7 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UCPOL1 0 +#define UCSZ10 1 +#define UCSZ11 2 +#define USBS1 3 +#define UPM10 4 +#define UPM11 5 +#define UMSEL10 6 +#define UMSEL11 7 + +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR_0 0 +#define UBRR_1 1 +#define UBRR_2 2 +#define UBRR_3 3 +#define UBRR_4 4 +#define UBRR_5 5 +#define UBRR_6 6 +#define UBRR_7 7 + +#define UBRR1H _SFR_MEM8(0xCD) +#define UBRR_8 0 +#define UBRR_9 1 +#define UBRR_10 2 +#define UBRR_11 3 + +#define UDR1 _SFR_MEM8(0xCE) +#define UDR1_0 0 +#define UDR1_1 1 +#define UDR1_2 2 +#define UDR1_3 3 +#define UDR1_4 4 +#define UDR1_5 5 +#define UDR1_6 6 +#define UDR1_7 7 + +#define UHWCON _SFR_MEM8(0xD7) +#define UVREGE 0 +#define UVCONE 4 +#define UIDE 6 +#define UIMOD 7 + +#define USBCON _SFR_MEM8(0xD8) +#define VBUSTE 0 +#define IDTE 1 +#define OTGPADE 4 +#define FRZCLK 5 +#define HOST 6 +#define USBE 7 + +#define USBSTA _SFR_MEM8(0xD9) +#define VBUS 0 +#define ID 1 +#define SPEED 3 + +#define USBINT _SFR_MEM8(0xDA) +#define VBUSTI 0 +#define IDTI 1 + +#define UDCON _SFR_MEM8(0xE0) +#define DETACH 0 +#define RMWKUP 1 +#define LSM 2 + +#define UDINT _SFR_MEM8(0xE1) +#define SUSPI 0 +#define SOFI 2 +#define EORSTI 3 +#define WAKEUPI 4 +#define EORSMI 5 +#define UPRSMI 6 + +#define UDIEN _SFR_MEM8(0xE2) +#define SUSPE 0 +#define SOFE 2 +#define EORSTE 3 +#define WAKEUPE 4 +#define EORSME 5 +#define UPRSME 6 + +#define UDADDR _SFR_MEM8(0xE3) +#define UADD0 0 +#define UADD1 1 +#define UADD2 2 +#define UADD3 3 +#define UADD4 4 +#define UADD5 5 +#define UADD6 6 +#define ADDEN 7 + +#define UDFNUM _SFR_MEM16(0xE4) + +#define UDFNUML _SFR_MEM8(0xE4) +#define UDFNUML_0 0 +#define UDFNUML_1 1 +#define UDFNUML_2 2 +#define UDFNUML_3 3 +#define UDFNUML_4 4 +#define UDFNUML_5 5 +#define UDFNUML_6 6 +#define UDFNUML_7 7 + +#define UDFNUMH _SFR_MEM8(0xE5) +#define UDFNUMH_0 0 +#define UDFNUMH_1 1 +#define UDFNUMH_2 2 + +#define UDMFN _SFR_MEM8(0xE6) +#define FNCERR 4 + +#define UEINTX _SFR_MEM8(0xE8) +#define TXINI 0 +#define STALLEDI 1 +#define RXOUTI 2 +#define RXSTPI 3 +#define NAKOUTI 4 +#define RWAL 5 +#define NAKINI 6 +#define FIFOCON 7 + +#define UENUM _SFR_MEM8(0xE9) +#define UENUM_0 0 +#define UENUM_1 1 +#define UENUM_2 2 + +#define UERST _SFR_MEM8(0xEA) +#define EPRST0 0 +#define EPRST1 1 +#define EPRST2 2 +#define EPRST3 3 +#define EPRST4 4 +#define EPRST5 5 +#define EPRST6 6 + +#define UECONX _SFR_MEM8(0xEB) +#define EPEN 0 +#define RSTDT 3 +#define STALLRQC 4 +#define STALLRQ 5 + +#define UECFG0X _SFR_MEM8(0xEC) +#define EPDIR 0 +#define EPTYPE0 6 +#define EPTYPE1 7 + +#define UECFG1X _SFR_MEM8(0xED) +#define ALLOC 1 +#define EPBK0 2 +#define EPBK1 3 +#define EPSIZE0 4 +#define EPSIZE1 5 +#define EPSIZE2 6 + +#define UESTA0X _SFR_MEM8(0xEE) +#define NBUSYBK0 0 +#define NBUSYBK1 1 +#define DTSEQ0 2 +#define DTSEQ1 3 +#define UNDERFI 5 +#define OVERFI 6 +#define CFGOK 7 + +#define UESTA1X _SFR_MEM8(0xEF) +#define CURRBK0 0 +#define CURRBK1 1 +#define CTRLDIR 2 + +#define UEIENX _SFR_MEM8(0xF0) +#define TXINE 0 +#define STALLEDE 1 +#define RXOUTE 2 +#define RXSTPE 3 +#define NAKOUTE 4 +#define NAKINE 6 +#define FLERRE 7 + +#define UEDATX _SFR_MEM8(0xF1) +#define UEDATX_0 0 +#define UEDATX_1 1 +#define UEDATX_2 2 +#define UEDATX_3 3 +#define UEDATX_4 4 +#define UEDATX_5 5 +#define UEDATX_6 6 +#define UEDATX_7 7 + +#define UEBCLX _SFR_MEM8(0xF2) +#define UEBCLX_0 0 +#define UEBCLX_1 1 +#define UEBCLX_2 2 +#define UEBCLX_3 3 +#define UEBCLX_4 4 +#define UEBCLX_5 5 +#define UEBCLX_6 6 +#define UEBCLX_7 7 + +#define UEBCHX _SFR_MEM8(0xF3) +#define UEBCHX_0 0 +#define UEBCHX_1 1 +#define UEBCHX_2 2 + +#define UEINT _SFR_MEM8(0xF4) +#define EPINT0 0 +#define EPINT1 1 +#define EPINT2 2 +#define EPINT3 3 +#define EPINT4 4 +#define EPINT5 5 +#define EPINT6 6 + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +#define INT0_vect_num 1 +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect_num 2 +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define INT2_vect_num 3 +#define INT2_vect _VECTOR(3) /* External Interrupt Request 2 */ +#define INT3_vect_num 4 +#define INT3_vect _VECTOR(4) /* External Interrupt Request 3 */ +#define INT4_vect_num 5 +#define INT4_vect _VECTOR(5) /* External Interrupt Request 4 */ +#define INT5_vect_num 6 +#define INT5_vect _VECTOR(6) /* External Interrupt Request 5 */ +#define INT6_vect_num 7 +#define INT6_vect _VECTOR(7) /* External Interrupt Request 6 */ +#define INT7_vect_num 8 +#define INT7_vect _VECTOR(8) /* External Interrupt Request 7 */ +#define PCINT0_vect_num 9 +#define PCINT0_vect _VECTOR(9) /* Pin Change Interrupt Request 0 */ +#define USB_GEN_vect_num 10 +#define USB_GEN_vect _VECTOR(10) /* USB General Interrupt Request */ +#define USB_COM_vect_num 11 +#define USB_COM_vect _VECTOR(11) /* USB Endpoint/Pipe Interrupt Communication Request */ +#define WDT_vect_num 12 +#define WDT_vect _VECTOR(12) /* Watchdog Time-out Interrupt */ +#define TIMER2_COMPA_vect_num 13 +#define TIMER2_COMPA_vect _VECTOR(13) /* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect_num 14 +#define TIMER2_COMPB_vect _VECTOR(14) /* Timer/Counter2 Compare Match B */ +#define TIMER2_OVF_vect_num 15 +#define TIMER2_OVF_vect _VECTOR(15) /* Timer/Counter2 Overflow */ +#define TIMER1_CAPT_vect_num 16 +#define TIMER1_CAPT_vect _VECTOR(16) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect_num 17 +#define TIMER1_COMPA_vect _VECTOR(17) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect_num 18 +#define TIMER1_COMPB_vect _VECTOR(18) /* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPC_vect_num 19 +#define TIMER1_COMPC_vect _VECTOR(19) /* Timer/Counter1 Compare Match C */ +#define TIMER1_OVF_vect_num 20 +#define TIMER1_OVF_vect _VECTOR(20) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect_num 21 +#define TIMER0_COMPA_vect _VECTOR(21) /* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPB_vect_num 22 +#define TIMER0_COMPB_vect _VECTOR(22) /* Timer/Counter0 Compare Match B */ +#define TIMER0_OVF_vect_num 23 +#define TIMER0_OVF_vect _VECTOR(23) /* Timer/Counter0 Overflow */ +#define SPI_STC_vect_num 24 +#define SPI_STC_vect _VECTOR(24) /* SPI Serial Transfer Complete */ +#define USART1_RX_vect_num 25 +#define USART1_RX_vect _VECTOR(25) /* USART1, Rx Complete */ +#define USART1_UDRE_vect_num 26 +#define USART1_UDRE_vect _VECTOR(26) /* USART1 Data register Empty */ +#define USART1_TX_vect_num 27 +#define USART1_TX_vect _VECTOR(27) /* USART1, Tx Complete */ +#define ANALOG_COMP_vect_num 28 +#define ANALOG_COMP_vect _VECTOR(28) /* Analog Comparator */ +#define ADC_vect_num 29 +#define ADC_vect _VECTOR(29) /* ADC Conversion Complete */ +#define EE_READY_vect_num 30 +#define EE_READY_vect _VECTOR(30) /* EEPROM Ready */ +#define TIMER3_CAPT_vect_num 31 +#define TIMER3_CAPT_vect _VECTOR(31) /* Timer/Counter3 Capture Event */ +#define TIMER3_COMPA_vect_num 32 +#define TIMER3_COMPA_vect _VECTOR(32) /* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPB_vect_num 33 +#define TIMER3_COMPB_vect _VECTOR(33) /* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPC_vect_num 34 +#define TIMER3_COMPC_vect _VECTOR(34) /* Timer/Counter3 Compare Match C */ +#define TIMER3_OVF_vect_num 35 +#define TIMER3_OVF_vect _VECTOR(35) /* Timer/Counter3 Overflow */ +#define TWI_vect_num 36 +#define TWI_vect _VECTOR(36) /* 2-wire Serial Interface */ +#define SPM_READY_vect_num 37 +#define SPM_READY_vect _VECTOR(37) /* Store Program Memory Read */ + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (38 * _VECTOR_SIZE) + + +/* Constants */ +#define SPM_PAGESIZE (128) +#define RAMSTART (0x100) +#define RAMSIZE (2560) +#define RAMEND (RAMSTART + RAMSIZE - 1) +#define XRAMSTART (0x2200) +#define XRAMSIZE (65536) +#define XRAMEND (XRAMSTART + XRAMSIZE - 1) +#define E2END (0x3FF) +#define E2PAGESIZE (4) +#define FLASHEND (0x7FFF) + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Oscillator options */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKDIV8 & FUSE_SUT1 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */ +#define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */ +#define HFUSE_DEFAULT (FUSE_JTAGEN & FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_HWBE (unsigned char)~_BV(3) /* Hardware Boot Enable */ +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x88 + + +#endif /* _AVR_ATmega32U6_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom406.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom406.h new file mode 100644 index 0000000..f3b6889 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom406.h @@ -0,0 +1,768 @@ +/* Copyright (c) 2006, Pieter Conradie + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom406.h,v 1.3.2.5 2008/10/17 23:27:49 arcanum Exp $ */ + +/* avr/iom406.h - definitions for ATmega406 */ + +#ifndef _AVR_IOM406_H_ +#define _AVR_IOM406_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom406.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Reserved [0x06..0x07] */ + +#define PORTC _SFR_IO8(0x08) +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD1 1 +#define PD0 0 + +/* Reserved [0x0C..0x14] */ + +/* Timer/Counter0 Interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x15) +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +/* Timer/Counter1 Interrupt Flag Register */ +#define TIFR1 _SFR_IO8(0x16) +#define OCF1A 1 +#define TOV1 0 + +/* Reserved [0x17..0x1A] */ + +/* Pin Change Interrupt Control Register */ +#define PCIFR _SFR_IO8(0x1B) +#define PCIF1 1 +#define PCIF0 0 + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x1C) +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +/* External Interrupt MaSK register */ +#define EIMSK _SFR_IO8(0x1D) +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +/* General Purpose I/O Register 0 */ +#define GPIOR0 _SFR_IO8(0x1E) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1F) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x20) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0x22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSRSYNC 0 + +/* Timer/Counter Control Register A */ +#define TCCR0A _SFR_IO8(0x24) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +/* Timer/Counter Control Register B */ +#define TCCR0B _SFR_IO8(0x25) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x26) + +/* Output Compare Register A */ +#define OCR0A _SFR_IO8(0x27) + +/* Output Compare Register B */ +#define OCR0B _SFR_IO8(0x28) + +/* Reserved [0x29] */ + +/* General Purpose I/O Register 1 */ +#define GPIOR1 _SFR_IO8(0x2A) + +/* General Purpose I/O Register 2 */ +#define GPIOR2 _SFR_IO8(0x2B) + +/* Reserved [0x2C..0x30] */ + +/* On-chip Debug Register */ +#define OCDR _SFR_IO8(0x31) + +/* Reserved [0x32] */ + +/* Sleep Mode Control Register */ +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) +#define JTRF 4 +#define WDRF 3 +#define BODRF 2 +#define EXTRF 1 +#define PORF 0 + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) +#define JTD 7 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 + +/* Reserved [0x36] */ + +/* Store Program Memory Control and Status Register */ +#define SPMCSR _SFR_IO8(0x37) +#define SPMIE 7 +#define RWWSB 6 +#define SIGRD 5 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Reserved [0x36..0x3C] */ + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Extended I/O registers */ + +/* Watchdog Timer Control Register */ +#define WDTCSR _SFR_MEM8(0x60) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* Reserved [0x61] */ + +/* Wake-up Timer Control and Status Register */ +#define WUTCSR _SFR_MEM8(0x62) +#define WUTIF 7 +#define WUTIE 6 +#define WUTCF 5 +#define WUTR 4 +#define WUTE 3 +#define WUTP2 2 +#define WUTP1 1 +#define WUTP0 0 + +/* Reserved [0x63] */ + +/* Power Reduction Register 0 */ +#define PRR0 _SFR_MEM8(0x64) +#define PRTWI 3 +#define PRTIM1 2 +#define PRTIM0 1 +#define PRVADC 0 + +/* Reserved [0x65] */ + +/* Fast Oscillator Calibration Register */ +#define FOSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67] */ + +/* Pin Change Interrupt Control Register */ +#define PCICR _SFR_MEM8(0x68) +#define PCIE1 1 +#define PCIE0 0 + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x69) +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Reserved [0x6A] */ + +/* Pin Change Mask Register 0 */ +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +/* Pin Change Mask Register 1 */ +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +/* Reserved [0x6D] */ + +/* Timer/Counter Interrupt MaSK register 0 */ +#define TIMSK0 _SFR_MEM8(0x6E) +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +/* Timer/Counter Interrupt MaSK register 1 */ +#define TIMSK1 _SFR_MEM8(0x6F) +#define OCIE1A 1 +#define TOIE1 0 + +/* Reserved [0x70..0x77] */ + +/* V-ADC Data Register */ +#define VADC _SFR_MEM16(0x78) +#define VADCL _SFR_MEM8(0x78) +#define VADCH _SFR_MEM8(0x79) + +/* V-ADC Control and Status Register */ +#define VADCSR _SFR_MEM8(0x7A) +#define VADEN 3 +#define VADSC 2 +#define VADCCIF 1 +#define VADCCIE 0 + +/* Reserved [0x7B] */ + +/* V-ADC Multiplexer Selection Register */ +#define VADMUX _SFR_MEM8(0x7C) +#define VADMUX3 3 +#define VADMUX2 2 +#define VADMUX1 1 +#define VADMUX0 0 + +/* Reserved [0x7D] */ + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_MEM8(0x7E) +#define VADC3D 3 +#define VADC2D 2 +#define VADC1D 1 +#define VADC0D 0 + +/* Reserved [0x82..0x83] */ + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_MEM8(0x81) +#define CTC1 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Reserved [0x82..0x83] */ + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Reserved [0x86..0x87] */ + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_MEM16(0x88) +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Reserved [0x8A..0xB7] */ + +/* 2-wire Serial Interface Bit Rate Register */ +#define TWBR _SFR_MEM8(0xB8) + +/* 2-wire Serial Interface Status Register */ +#define TWSR _SFR_MEM8(0xB9) +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +/* 2-wire Serial Interface Address Register */ +#define TWAR _SFR_MEM8(0xBA) +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +/* 2-wire Serial Interface Data Register */ +#define TWDR _SFR_MEM8(0xBB) + +/* 2-wire Serial Interface Control Register */ +#define TWCR _SFR_MEM8(0xBC) +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +/* 2-wire Serial (Slave) Address Mask Register */ +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM6 7 +#define TWAM5 6 +#define TWAM4 5 +#define TWAM3 4 +#define TWAM2 3 +#define TWAM1 2 +#define TWAM0 1 + +/* 2-wire Serial Bus Control and Status Register */ +#define TWBCSR _SFR_MEM8(0xBE) +#define TWBCIF 7 +#define TWBCIE 6 +#define TWBDT1 2 +#define TWBDT0 1 +#define TWBCIP 0 + +/* Reserved [0xBF] */ + +/* Clock Control Status Register */ +#define CCSR _SFR_MEM8(0xC0) +#define XOE 1 +#define ACS 0 + +/* Reserved [0xC1..0xCF] */ + +/* Bandgap Calibration C Register */ +#define BGCCR _SFR_MEM8(0xD0) +#define BGEN 7 +#define BGCC5 5 +#define BGCC4 4 +#define BGCC3 3 +#define BGCC2 2 +#define BGCC1 1 +#define BGCC0 0 + +/* Bandgap Calibration R Register */ +#define BGCRR _SFR_MEM8(0xD1) +#define BGCR7 7 +#define BGCR6 6 +#define BGCR5 5 +#define BGCR4 4 +#define BGCR3 3 +#define BGCR2 2 +#define BGCR1 1 +#define BGCR0 0 + +/* Reserved [0xD2..0xDF] */ + +/* CC-ADC Accumulate Current */ +/* TODO: Add _SFR_MEM32 */ +/* #define CADAC _SFR_MEM32(0xE0) */ +#define CADAC0 _SFR_MEM8(0xE0) +#define CADAC1 _SFR_MEM8(0xE1) +#define CADAC2 _SFR_MEM8(0xE2) +#define CADAC3 _SFR_MEM8(0xE3) + +/* CC-ADC Control and Status Register A */ +#define CADCSRA _SFR_MEM8(0xE4) +#define CADEN 7 +#define CADUB 5 +#define CADAS1 4 +#define CADAS0 3 +#define CADSI1 2 +#define CADSI0 1 +#define CADSE 0 + +/* CC-ADC Control and Status Register B */ +#define CADCSRB _SFR_MEM8(0xE5) +#define CADACIE 6 +#define CADRCIE 5 +#define CADICIE 4 +#define CADACIF 2 +#define CADRCIF 1 +#define CADICIF 0 + +/* CC-ADC Regular Charge Current */ +#define CADRCC _SFR_MEM8(0xE6) + +/* CC-ADC Regular Discharge Current */ +#define CADRDC _SFR_MEM8(0xE7) + +/* CC-ADC Instantaneous Current */ +#define CADIC _SFR_MEM16(0xE8) +#define CADICL _SFR_MEM8(0xE8) +#define CADICH _SFR_MEM8(0xE9) + +/* Reserved [0xEA..0xEF] */ + +/* FET Control and Status Register */ +#define FCSR _SFR_MEM8(0xF0) +#define PWMOC 5 +#define PWMOPC 4 +#define CPS 3 +#define DFE 2 +#define CFE 1 +#define PFD 0 + +/* Cell Balancing Control Register */ +#define CBCR _SFR_MEM8(0xF1) +#define CBE4 3 +#define CBE3 2 +#define CBE2 1 +#define CBE1 0 + +/* Battery Protection Interrupt Register */ +#define BPIR _SFR_MEM8(0xF2) +#define DUVIF 7 +#define COCIF 6 +#define DOCIF 5 +#define SCIF 4 +#define DUVIE 3 +#define COCIE 2 +#define DOCIE 1 +#define SCIE 0 + +/* Battery Protection Deep Under Voltage Register */ +#define BPDUV _SFR_MEM8(0xF3) +#define DUVT1 5 +#define DUVT0 4 +#define DUDL3 3 +#define DUDL2 2 +#define DUDL1 1 +#define DUDL0 0 + +/* Battery Protection Short-circuit Detection Level Register */ +#define BPSCD _SFR_MEM8(0xF4) +#define SCDL3 3 +#define SCDL2 2 +#define SCDL1 1 +#define SCDL0 0 + +/* Battery Protection Over-current Detection Level Register */ +#define BPOCD _SFR_MEM8(0xF5) +#define DCDL3 7 +#define DCDL2 6 +#define DCDL1 5 +#define DCDL0 4 +#define CCDL3 3 +#define CCDL2 2 +#define CCDL1 1 +#define CCDL0 0 + +/* Current Battery Protection Timing Register */ +#define CBPTR _SFR_MEM8(0xF6) +#define SCPT3 7 +#define SCPT2 6 +#define SCPT1 5 +#define SCPT0 4 +#define OCPT3 3 +#define OCPT2 2 +#define OCPT1 1 +#define OCPT0 0 + +/* Battery Protection Control Register */ +#define BPCR _SFR_MEM8(0xF7) +#define DUVD 3 +#define SCD 2 +#define DCD 1 +#define CCD 0 + +/* Battery Protection Parameter Lock Register */ +#define BPPLR _SFR_MEM8(0xF8) +#define BPPLE 1 +#define BPPL 0 + +/* Reserved [0xF9..0xFF] */ + +/* Interrupt vectors */ +/* Battery Protection Interrupt */ +#define BPINT_vect _VECTOR(1) + + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(2) + + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(3) + + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(4) + + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(5) + + +/* Pin Change Interrupt 0 */ +#define PCINT0_vect _VECTOR(6) + + +/* Pin Change Interrupt 1 */ +#define PCINT1_vect _VECTOR(7) + + +/* Watchdog Timeout Interrupt */ +#define WDT_vect _VECTOR(8) + + +/* Wakeup timer overflow */ +#define WAKE_UP_vect _VECTOR(9) + + +/* Timer/Counter 1 Compare Match */ +#define TIM1_COMP_vect _VECTOR(10) + + +/* Timer/Counter 1 Overflow */ +#define TIM1_OVF_vect _VECTOR(11) + + +/* Timer/Counter0 Compare A Match */ +#define TIM0_COMPA_vect _VECTOR(12) + + +/* Timer/Counter0 Compare B Match */ +#define TIM0_COMPB_vect _VECTOR(13) + + +/* Timer/Counter0 Overflow */ +#define TIM0_OVF_vect _VECTOR(14) + + +/* Two-Wire Bus Connect/Disconnect */ +#define TWI_BUS_CD_vect _VECTOR(15) + + +/* Two-Wire Serial Interface */ +#define TWI_vect _VECTOR(16) + + +/* Voltage ADC Conversion Complete */ +#define VADC_vect _VECTOR(17) + + +/* Coulomb Counter ADC Conversion Complete */ +#define CCADC_CONV_vect _VECTOR(18) + +/* Coloumb Counter ADC Regular Current */ +#define CCADC_REG_CUR_vect _VECTOR(19) + + +/* Coloumb Counter ADC Accumulator */ +#define CCADC_ACC_vect _VECTOR(20) + + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(21) + + +/* Store Program Memory Ready */ +#define SPM_READY_vect _VECTOR(22) + +#define _VECTORS_SIZE 92 + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x8FF +#define XRAMEND 0x8FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x9FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL (unsigned char)~_BV(0) +#define FUSE_SUT0 (unsigned char)~_BV(1) +#define FUSE_SUT1 (unsigned char)~_BV(2) +#define FUSE_BOOTRST (unsigned char)~_BV(3) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(4) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(5) +#define FUSE_EESAVE (unsigned char)~_BV(6) +#define FUSE_WDTON (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_SUT0 & FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + +/* High Fuse Byte */ +#define FUSE_JTAGEN (unsigned char)~_BV(0) +#define FUSE_OCDEN (unsigned char)~_BV(1) +#define HFUSE_DEFAULT (FUSE_JTAGEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x95 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_IOM406_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom48.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom48.h new file mode 100644 index 0000000..226b9bc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom48.h @@ -0,0 +1,87 @@ +/* Copyright (c) 2004, Theodore A. Roth + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom48.h,v 1.3.2.3 2008/08/14 00:08:03 arcanum Exp $ */ + +#ifndef _AVR_IOM48_H_ +#define _AVR_IOM48_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x2FF +#define XRAMEND 0x2FF +#define E2END 0xFF +#define E2PAGESIZE 4 +#define FLASHEND 0xFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKDIV8 & FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL0) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) /* Self Programming Enable */ +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x05 + + +#endif /* _AVR_IOM48_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom48p.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom48p.h new file mode 100644 index 0000000..070bca1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom48p.h @@ -0,0 +1,868 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom48p.h,v 1.3.2.11 2008/10/17 23:27:49 arcanum Exp $ */ + +/* avr/iom48p.h - definitions for ATmega48P. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom48p.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM48P_H_ +#define _AVR_IOM48P_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +/* Only valid for ATmega88P-168P-328P */ +/* EEARH _SFR_IO8(0x22) */ + +#define EEPROM_REG_LOCATIONS 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define PUD 4 +#define BODSE 5 +#define BODS 6 + +#define SPMCSR _SFR_IO8(0x37) +#define SELFPRGEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 0 +#define TWAM1 1 +#define TWAM2 2 +#define TWAM3 3 +#define TWAM4 4 +#define TWAM5 5 +#define TWAM6 6 + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0xC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCPHA0 1 +#define UCSZ01 2 +#define UDORD0 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0xC5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0xC6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define PCINT0_vect _VECTOR(3) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */ +#define PCINT2_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */ +#define WDT_vect _VECTOR(6) /* Watchdog Time-out Interrupt */ +#define TIMER2_COMPA_vect _VECTOR(7) /* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect _VECTOR(8) /* Timer/Counter2 Compare Match A */ +#define TIMER2_OVF_vect _VECTOR(9) /* Timer/Counter2 Overflow */ +#define TIMER1_CAPT_vect _VECTOR(10) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(11) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(13) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(14) /* TimerCounter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(15) /* TimerCounter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(16) /* Timer/Couner0 Overflow */ +#define SPI_STC_vect _VECTOR(17) /* SPI Serial Transfer Complete */ +#define USART_RX_vect _VECTOR(18) /* USART Rx Complete */ +#define USART_UDRE_vect _VECTOR(19) /* USART, Data Register Empty */ +#define USART_TX_vect _VECTOR(20) /* USART Tx Complete */ +#define ADC_vect _VECTOR(21) /* ADC Conversion Complete */ +#define EE_READY_vect _VECTOR(22) /* EEPROM Ready */ +#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */ +#define TWI_vect _VECTOR(24) /* Two-wire Serial Interface */ +#define SPM_READY_vect _VECTOR(25) /* Store Program Memory Read */ + +#define _VECTORS_SIZE (26 * 2) + + + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x2FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0xFF +#define E2PAGESIZE 4 +#define FLASHEND 0xFFF + + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) /* Self Programming Enable */ +#define EFUSE_DEFAULT (0xFF) + + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x0A + + +#endif /* _AVR_IOM48P_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom64.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom64.h new file mode 100644 index 0000000..457d93a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom64.h @@ -0,0 +1,1227 @@ +/* Copyright (c) 2002, Steinar Haugen + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom64.h,v 1.14.2.5 2008/10/17 23:27:49 arcanum Exp $ */ + +/* avr/iom64.h - defines for ATmega64 + + As of 2002-11-23: + - This should be up to date with data sheet Rev. 2490C-AVR-09/02 */ + +#ifndef _AVR_IOM64_H_ +#define _AVR_IOM64_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom64.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Input Pins, Port F */ +#define PINF _SFR_IO8(0x00) + +/* Input Pins, Port E */ +#define PINE _SFR_IO8(0x01) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x02) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x03) + +/* ADC Data Register */ +#define ADCW _SFR_IO16(0x04) /* for backwards compatibility */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register A */ +#define ADCSR _SFR_IO8(0x06) /* for backwards compatibility */ +#define ADCSRA _SFR_IO8(0x06) + +/* ADC Multiplexer select */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* USART0 Baud Rate Register Low */ +#define UBRR0L _SFR_IO8(0x09) + +/* USART0 Control and Status Register B */ +#define UCSR0B _SFR_IO8(0x0A) + +/* USART0 Control and Status Register A */ +#define UCSR0A _SFR_IO8(0x0B) + +/* USART0 I/O Data Register */ +#define UDR0 _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* Special Function I/O Register */ +#define SFIOR _SFR_IO8(0x20) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* On-chip Debug Register */ +#define OCDR _SFR_IO8(0x22) + +/* Timer2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x23) + +/* Timer/Counter 2 */ +#define TCNT2 _SFR_IO8(0x24) + +/* Timer/Counter 2 Control register */ +#define TCCR2 _SFR_IO8(0x25) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Timer/Counter 0 Asynchronous Control & Status Register */ +#define ASSR _SFR_IO8(0x30) + +/* Output Compare Register 0 */ +#define OCR0 _SFR_IO8(0x31) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) /* for backwards compatibility */ +#define MCUCSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x36) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x37) + +/* External Interrupt Flag Register */ +#define EIFR _SFR_IO8(0x38) + +/* External Interrupt MaSK register */ +#define EIMSK _SFR_IO8(0x39) + +/* External Interrupt Control Register B */ +#define EICRB _SFR_IO8(0x3A) + +/* XDIV Divide control register */ +#define XDIV _SFR_IO8(0x3C) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Extended I/O registers */ + +/* Data Direction Register, Port F */ +#define DDRF _SFR_MEM8(0x61) + +/* Data Register, Port F */ +#define PORTF _SFR_MEM8(0x62) + +/* Input Pins, Port G */ +#define PING _SFR_MEM8(0x63) + +/* Data Direction Register, Port G */ +#define DDRG _SFR_MEM8(0x64) + +/* Data Register, Port G */ +#define PORTG _SFR_MEM8(0x65) + +/* Store Program Memory Control and Status Register */ +#define SPMCR _SFR_MEM8(0x68) +#define SPMCSR _SFR_MEM8(0x68) /* for backwards compatibility with m128*/ + +/* External Interrupt Control Register A */ +#define EICRA _SFR_MEM8(0x6A) + +/* External Memory Control Register B */ +#define XMCRB _SFR_MEM8(0x6C) + +/* External Memory Control Register A */ +#define XMCRA _SFR_MEM8(0x6D) + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_MEM8(0x6F) + +/* 2-wire Serial Interface Bit Rate Register */ +#define TWBR _SFR_MEM8(0x70) + +/* 2-wire Serial Interface Status Register */ +#define TWSR _SFR_MEM8(0x71) + +/* 2-wire Serial Interface Address Register */ +#define TWAR _SFR_MEM8(0x72) + +/* 2-wire Serial Interface Data Register */ +#define TWDR _SFR_MEM8(0x73) + +/* 2-wire Serial Interface Control Register */ +#define TWCR _SFR_MEM8(0x74) + +/* Time Counter 1 Output Compare Register C */ +#define OCR1C _SFR_MEM16(0x78) +#define OCR1CL _SFR_MEM8(0x78) +#define OCR1CH _SFR_MEM8(0x79) + +/* Timer/Counter 1 Control Register C */ +#define TCCR1C _SFR_MEM8(0x7A) + +/* Extended Timer Interrupt Flag Register */ +#define ETIFR _SFR_MEM8(0x7C) + +/* Extended Timer Interrupt Mask Register */ +#define ETIMSK _SFR_MEM8(0x7D) + +/* Timer/Counter 3 Input Capture Register */ +#define ICR3 _SFR_MEM16(0x80) +#define ICR3L _SFR_MEM8(0x80) +#define ICR3H _SFR_MEM8(0x81) + +/* Timer/Counter 3 Output Compare Register C */ +#define OCR3C _SFR_MEM16(0x82) +#define OCR3CL _SFR_MEM8(0x82) +#define OCR3CH _SFR_MEM8(0x83) + +/* Timer/Counter 3 Output Compare Register B */ +#define OCR3B _SFR_MEM16(0x84) +#define OCR3BL _SFR_MEM8(0x84) +#define OCR3BH _SFR_MEM8(0x85) + +/* Timer/Counter 3 Output Compare Register A */ +#define OCR3A _SFR_MEM16(0x86) +#define OCR3AL _SFR_MEM8(0x86) +#define OCR3AH _SFR_MEM8(0x87) + +/* Timer/Counter 3 Counter Register */ +#define TCNT3 _SFR_MEM16(0x88) +#define TCNT3L _SFR_MEM8(0x88) +#define TCNT3H _SFR_MEM8(0x89) + +/* Timer/Counter 3 Control Register B */ +#define TCCR3B _SFR_MEM8(0x8A) + +/* Timer/Counter 3 Control Register A */ +#define TCCR3A _SFR_MEM8(0x8B) + +/* Timer/Counter 3 Control Register C */ +#define TCCR3C _SFR_MEM8(0x8C) + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_MEM8(0x8E) + +/* USART0 Baud Rate Register High */ +#define UBRR0H _SFR_MEM8(0x90) + +/* USART0 Control and Status Register C */ +#define UCSR0C _SFR_MEM8(0x95) + +/* USART1 Baud Rate Register High */ +#define UBRR1H _SFR_MEM8(0x98) + +/* USART1 Baud Rate Register Low*/ +#define UBRR1L _SFR_MEM8(0x99) + +/* USART1 Control and Status Register B */ +#define UCSR1B _SFR_MEM8(0x9A) + +/* USART1 Control and Status Register A */ +#define UCSR1A _SFR_MEM8(0x9B) + +/* USART1 I/O Data Register */ +#define UDR1 _SFR_MEM8(0x9C) + +/* USART1 Control and Status Register C */ +#define UCSR1C _SFR_MEM8(0x9D) + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(4) +#define SIG_INTERRUPT3 _VECTOR(4) + +/* External Interrupt Request 4 */ +#define INT4_vect _VECTOR(5) +#define SIG_INTERRUPT4 _VECTOR(5) + +/* External Interrupt Request 5 */ +#define INT5_vect _VECTOR(6) +#define SIG_INTERRUPT5 _VECTOR(6) + +/* External Interrupt Request 6 */ +#define INT6_vect _VECTOR(7) +#define SIG_INTERRUPT6 _VECTOR(7) + +/* External Interrupt Request 7 */ +#define INT7_vect _VECTOR(8) +#define SIG_INTERRUPT7 _VECTOR(8) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(9) +#define SIG_OUTPUT_COMPARE2 _VECTOR(9) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(10) +#define SIG_OVERFLOW2 _VECTOR(10) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(11) +#define SIG_INPUT_CAPTURE1 _VECTOR(11) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1A _VECTOR(12) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1B _VECTOR(13) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(14) +#define SIG_OVERFLOW1 _VECTOR(14) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(15) +#define SIG_OUTPUT_COMPARE0 _VECTOR(15) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(16) +#define SIG_OVERFLOW0 _VECTOR(16) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(17) +#define SIG_SPI _VECTOR(17) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(18) +#define SIG_UART0_RECV _VECTOR(18) + +/* USART0 Data Register Empty */ +#define USART0_UDRE_vect _VECTOR(19) +#define SIG_UART0_DATA _VECTOR(19) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(20) +#define SIG_UART0_TRANS _VECTOR(20) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(21) +#define SIG_ADC _VECTOR(21) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(22) +#define SIG_EEPROM_READY _VECTOR(22) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(23) +#define SIG_COMPARATOR _VECTOR(23) + +/* Timer/Counter1 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(24) +#define SIG_OUTPUT_COMPARE1C _VECTOR(24) + +/* Timer/Counter3 Capture Event */ +#define TIMER3_CAPT_vect _VECTOR(25) +#define SIG_INPUT_CAPTURE3 _VECTOR(25) + +/* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPA_vect _VECTOR(26) +#define SIG_OUTPUT_COMPARE3A _VECTOR(26) + +/* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPB_vect _VECTOR(27) +#define SIG_OUTPUT_COMPARE3B _VECTOR(27) + +/* Timer/Counter3 Compare Match C */ +#define TIMER3_COMPC_vect _VECTOR(28) +#define SIG_OUTPUT_COMPARE3C _VECTOR(28) + +/* Timer/Counter3 Overflow */ +#define TIMER3_OVF_vect _VECTOR(29) +#define SIG_OVERFLOW3 _VECTOR(29) + +/* USART1, Rx Complete */ +#define USART1_RX_vect _VECTOR(30) +#define SIG_UART1_RECV _VECTOR(30) + +/* USART1, Data Register Empty */ +#define USART1_UDRE_vect _VECTOR(31) +#define SIG_UART1_DATA _VECTOR(31) + +/* USART1, Tx Complete */ +#define USART1_TX_vect _VECTOR(32) +#define SIG_UART1_TRANS _VECTOR(32) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(33) +#define SIG_2WIRE_SERIAL _VECTOR(33) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(34) +#define SIG_SPM_READY _VECTOR(34) + +#define _VECTORS_SIZE 140 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* 2-wire Control Register - TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +/* 2-wire Address Register - TWAR */ +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +/* 2-wire Status Register - TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +/* External Memory Control Register A - XMCRA */ +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW01 3 +#define SRW00 2 +#define SRW11 1 + +/* External Memory Control Register B - XMCRA */ +#define XMBK 7 +#define XMM2 2 +#define XMM1 1 +#define XMM0 0 + +/* XDIV Divide control register - XDIV */ +#define XDIVEN 7 +#define XDIV6 6 +#define XDIV5 5 +#define XDIV4 4 +#define XDIV3 3 +#define XDIV2 2 +#define XDIV1 1 +#define XDIV0 0 + +/* External Interrupt Control Register A - EICRA */ +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* External Interrupt Control Register B - EICRB */ +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 + +/* Store Program Memory Control Register - SPMCSR, SPMCR */ +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* External Interrupt MaSK register - EIMSK */ +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +/* External Interrupt Flag Register - EIFR */ +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +/* Timer/Counter Interrupt MaSK register - TIMSK */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define OCIE0 1 +#define TOIE0 0 + +/* Timer/Counter Interrupt Flag Register - TIFR */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define OCF0 1 +#define TOV0 0 + +/* Extended Timer Interrupt MaSK register - ETIMSK */ +#define TICIE3 5 +#define OCIE3A 4 +#define OCIE3B 3 +#define TOIE3 2 +#define OCIE3C 1 +#define OCIE1C 0 + +/* Extended Timer Interrupt Flag Register - ETIFR */ +#define ICF3 5 +#define OCF3A 4 +#define OCF3B 3 +#define TOV3 2 +#define OCF3C 1 +#define OCF1C 0 + +/* MCU Control Register - MCUCR */ +#define SRE 7 +#define SRW10 6 +#define SE 5 +#define SM1 4 +#define SM0 3 +#define SM2 2 +#define IVSEL 1 +#define IVCE 0 + +/* MCU Control And Status Register - MCUCSR */ +#define JTD 7 +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* Timer/Counter Control Register (generic) */ +#define FOC 7 +#define WGM0 6 +#define COM1 5 +#define COM0 4 +#define WGM1 3 +#define CS2 2 +#define CS1 1 +#define CS0 0 + +/* Timer/Counter 0 Control Register - TCCR0 */ +#define FOC0 7 +#define WGM00 6 +#define COM01 5 +#define COM00 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Timer/Counter 2 Control Register - TCCR2 */ +#define FOC2 7 +#define WGM20 6 +#define COM21 5 +#define COM20 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* Timer/Counter 0 Asynchronous Control & Status Register - ASSR */ +#define AS0 3 +#define TCN0UB 2 +#define OCR0UB 1 +#define TCR0UB 0 + +/* Timer/Counter Control Register A (generic) */ +#define COMA1 7 +#define COMA0 6 +#define COMB1 5 +#define COMB0 4 +#define COMC1 3 +#define COMC0 2 +#define WGMA1 1 +#define WGMA0 0 + +/* Timer/Counter 1 Control and Status Register A - TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define COM1C1 3 +#define COM1C0 2 +#define WGM11 1 +#define WGM10 0 + +/* Timer/Counter 3 Control and Status Register A - TCCR3A */ +#define COM3A1 7 +#define COM3A0 6 +#define COM3B1 5 +#define COM3B0 4 +#define COM3C1 3 +#define COM3C0 2 +#define WGM31 1 +#define WGM30 0 + +/* Timer/Counter Control and Status Register B (generic) */ +#define ICNC 7 +#define ICES 6 +#define WGMB3 4 +#define WGMB2 3 +#define CSB2 2 +#define CSB1 1 +#define CSB0 0 + +/* Timer/Counter 1 Control and Status Register B - TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Timer/Counter 3 Control and Status Register B - TCCR3B */ +#define ICNC3 7 +#define ICES3 6 +#define WGM33 4 +#define WGM32 3 +#define CS32 2 +#define CS31 1 +#define CS30 0 + +/* Timer/Counter Control Register C (generic) */ +#define FOCA 7 +#define FOCB 6 +#define FOCC 5 + +/* Timer/Counter 3 Control Register C - TCCR3C */ +#define FOC3A 7 +#define FOC3B 6 +#define FOC3C 5 + +/* Timer/Counter 1 Control Register C - TCCR1C */ +#define FOC1A 7 +#define FOC1B 6 +#define FOC1C 5 + +/* On-chip Debug Register - OCDR */ +#define IDRD 7 +#define OCDR7 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 + +/* Watchdog Timer Control Register - WDTCR */ +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven + to be fast enough even without feeding it more power. +*/ + +/* Special Function I/O Register - SFIOR */ +#define TSM 7 +#define ACME 3 +#define PUD 2 +#define PSR0 1 +#define PSR321 0 + +/* Port Data Register (generic) */ +#define PORT7 7 +#define PORT6 6 +#define PORT5 5 +#define PORT4 4 +#define PORT3 3 +#define PORT2 2 +#define PORT1 1 +#define PORT0 0 + +/* Port Data Direction Register (generic) */ +#define DD7 7 +#define DD6 6 +#define DD5 5 +#define DD4 4 +#define DD3 3 +#define DD2 2 +#define DD1 1 +#define DD0 0 + +/* Port Input Pins (generic) */ +#define PIN7 7 +#define PIN6 6 +#define PIN5 5 +#define PIN4 4 +#define PIN3 3 +#define PIN2 2 +#define PIN1 1 +#define PIN0 0 + +/* SPI Status Register - SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPI Control Register - SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* USART Register C (generic) */ +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* USART1 Register C - UCSR1C */ +#define UMSEL1 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 + +/* USART0 Register C - UCSR0C */ +#define UMSEL0 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPOL0 0 + +/* USART Status Register A (generic) */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define UPE 2 +#define U2X 1 +#define MPCM 0 + +/* USART1 Status Register A - UCSR1A */ +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + +/* USART0 Status Register A - UCSR0A */ +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + +/* USART Control Register B (generic) */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ 2 +#define UCSZ2 2 /* new name in datasheet (2467E-AVR-05/02) */ +#define RXB8 1 +#define TXB8 0 + +/* USART1 Control Register B - UCSR1B */ +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + +/* USART0 Control Register B - UCSR0B */ +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + +/* Analog Comparator Control and Status Register - ACSR */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC Control and Status Register B - ADCSRB */ +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +/* ADC Control and status Register A - ADCSRA */ +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADC Multiplexer select - ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* Port A Data Register - PORTA */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Port A Data Direction Register - DDRA */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Port A Input Pins - PINA */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Port B Data Register - PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Port B Data Direction Register - DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Port B Input Pins - PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Port C Data Register - PORTC */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Port C Data Direction Register - DDRC */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Port C Input Pins - PINC */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Port D Data Register - PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Port D Data Direction Register - DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Port D Input Pins - PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Port E Data Register - PORTE */ +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Port E Data Direction Register - DDRE */ +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* Port E Input Pins - PINE */ +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* Port F Data Register - PORTF */ +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +/* Port F Data Direction Register - DDRF */ +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +/* Port F Input Pins - PINF */ +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +/* Port G Data Register - PORTG */ +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +/* Port G Data Direction Register - DDRG */ +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +/* Port G Input Pins - PING */ +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0x07FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_CKOPT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_WDTON (unsigned char)~_BV(0) +#define FUSE_M103C (unsigned char)~_BV(1) +#define EFUSE_DEFAULT (FUSE_M103C) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x02 + + +#endif /* _AVR_IOM64_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom640.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom640.h new file mode 100644 index 0000000..6341a08 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom640.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2005 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom640.h,v 1.2.2.5 2008/10/17 23:27:49 arcanum Exp $ */ + +/* avr/iom640.h - definitions for ATmega640 */ + +#ifndef _AVR_IOM640_H_ +#define _AVR_IOM640_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x21FF +#define XRAMEND 0xFFFF +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x08 + + +#endif /* _AVR_IOM640_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom644.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom644.h new file mode 100644 index 0000000..367348f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom644.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2005 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iom644.h - definitions for ATmega644 */ + +/* $Id: iom644.h,v 1.2.2.5 2008/10/17 23:27:50 arcanum Exp $ */ + +#ifndef _AVR_IOM644_H_ +#define _AVR_IOM644_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF +#define XRAMEND 0x10FF +#define E2END 0x7FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x09 + + +#endif /* _AVR_IOM644_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom645.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom645.h new file mode 100644 index 0000000..3579653 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom645.h @@ -0,0 +1,816 @@ +/* Copyright (c) 2004,2005,2006 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom645.h,v 1.11.2.5 2008/10/17 23:27:50 arcanum Exp $ */ + +/* avr/iom645.h - definitions for ATmega645 */ + +#ifndef _AVR_IOM645_H_ +#define _AVR_IOM645_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom645.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +/* Reserved [0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xFF] */ + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* Vector 22 is Reserved */ + +#define _VECTORS_SIZE 92 + + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF +#define XRAMEND 0x10FF +#define E2END 0x7FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x05 + + +#endif /* _AVR_IOM645_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom6450.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom6450.h new file mode 100644 index 0000000..d67777f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom6450.h @@ -0,0 +1,907 @@ +/* Copyright (c) 2004,2005,2006 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom6450.h,v 1.11.2.6 2008/10/17 23:27:50 arcanum Exp $ */ + +/* avr/iom6450.h - definitions for ATmega6450 */ + +#ifndef _AVR_IOM6450_H_ +#define _AVR_IOM6450_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom6450.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 +#define PCIF2 6 +#define PCIF3 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 +#define PCIE2 6 +#define PCIE3 7 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x72] */ + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 + +/* Reserved [0x74..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xD7] */ + +#define PINH _SFR_MEM8(0xD8) +#define PINH7 7 +#define PINH6 6 +#define PINH5 5 +#define PINH4 4 +#define PINH3 3 +#define PINH2 2 +#define PINH1 1 +#define PINH0 0 + +#define DDRH _SFR_MEM8(0xD9) +#define DDH7 7 +#define DDH6 6 +#define DDH5 5 +#define DDH4 4 +#define DDH3 3 +#define DDH2 2 +#define DDH1 1 +#define DDH0 0 + +#define PORTH _SFR_MEM8(0xDA) +#define PH7 7 +#define PH6 6 +#define PH5 5 +#define PH4 4 +#define PH3 3 +#define PH2 2 +#define PH1 1 +#define PH0 0 + +#define PINJ _SFR_MEM8(0xDB) +#define PINJ6 6 +#define PINJ5 5 +#define PINJ4 4 +#define PINJ3 3 +#define PINJ2 2 +#define PINJ1 1 +#define PINJ0 0 + +#define DDRJ _SFR_MEM8(0xDC) +#define DDJ6 6 +#define DDJ5 5 +#define DDJ4 4 +#define DDJ3 3 +#define DDJ2 2 +#define DDJ1 1 +#define DDJ0 0 + +#define PORTJ _SFR_MEM8(0xDD) +#define PJ6 6 +#define PJ5 5 +#define PJ4 4 +#define PJ3 3 +#define PJ2 2 +#define PJ1 1 +#define PJ0 0 + +/* Reserved [0xDE..0xFF] */ + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(13) +#define USART0_RX_vect _VECTOR(13) /* Alias */ +#define SIG_UART_RECV _VECTOR(13) + +/* USART Data register Empty */ +#define USART_UDRE_vect _VECTOR(14) +#define USART0_UDRE_vect _VECTOR(14) /* Alias */ +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define USART_TX_vect _VECTOR(15) /* Alias */ +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* Pin Change Interrupt Request 2 */ +#define PCINT2_vect _VECTOR(23) +#define SIG_PIN_CHANGE2 _VECTOR(23) + +/* Pin Change Interrupt Request 3 */ +#define PCINT3_vect _VECTOR(24) +#define SIG_PIN_CHANGE3 _VECTOR(24) + +#define _VECTORS_SIZE 100 + + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF +#define XRAMEND 0x10FF +#define E2END 0x7FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x06 + + +#endif /* _AVR_IOM6450_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom649.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom649.h new file mode 100644 index 0000000..382b8bb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom649.h @@ -0,0 +1,992 @@ +/* Copyright (c) 2004 Eric B. Weddington + Copyright (c) 2005,2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iom649.h - definitions for ATmega649 */ + +#ifndef _AVR_IOM649_H_ +#define _AVR_IOM649_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom649.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRLCD 4 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +/* Reserved [0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xE3] */ + +#define LCDCRA _SFR_MEM8(0XE4) +#define LCDBL 0 +#define LCDIE 3 +#define LCDIF 4 +#define LCDAB 6 +#define LCDEN 7 + +#define LCDCRB _SFR_MEM8(0XE5) +#define LCDPM0 0 +#define LCDPM1 1 +#define LCDPM2 2 +#define LCDMUX0 4 +#define LCDMUX1 5 +#define LCD2B 6 +#define LCDCS 7 + +#define LCDFRR _SFR_MEM8(0XE6) +#define LCDCD0 0 +#define LCDCD1 1 +#define LCDCD2 2 +#define LCDPS0 4 +#define LCDPS1 5 +#define LCDPS2 6 + +#define LCDCCR _SFR_MEM8(0XE7) +#define LCDCC0 0 +#define LCDCC1 1 +#define LCDCC2 2 +#define LCDCC3 3 +#define LCDDC0 5 +#define LCDDC1 6 +#define LCDDC2 7 + +/* Reserved [0xE8..0xEB] */ + +#define LCDDR00 _SFR_MEM8(0XEC) +#define SEG000 0 +#define SEG001 1 +#define SEG002 2 +#define SEG003 3 +#define SEG004 4 +#define SEG005 5 +#define SEG006 6 +#define SEG007 7 + +#define LCDDR01 _SFR_MEM8(0XED) +#define SEG008 0 +#define SEG009 1 +#define SEG010 2 +#define SEG011 3 +#define SEG012 4 +#define SEG013 5 +#define SEG014 6 +#define SEG015 7 + +#define LCDDR02 _SFR_MEM8(0XEE) +#define SEG016 0 +#define SEG017 1 +#define SEG018 2 +#define SEG019 3 +#define SEG020 4 +#define SEG021 5 +#define SEG022 6 +#define SEG023 7 + +#define LCDDR03 _SFR_MEM8(0XEF) +#define SEG024 0 + +/* Reserved [0xF0] */ + +#define LCDDR05 _SFR_MEM8(0XF1) +#define SEG100 0 +#define SEG101 1 +#define SEG102 2 +#define SEG103 3 +#define SEG104 4 +#define SEG105 5 +#define SEG106 6 +#define SEG107 7 + +#define LCDDR06 _SFR_MEM8(0XF2) +#define SEG108 0 +#define SEG109 1 +#define SEG110 2 +#define SEG111 3 +#define SEG112 4 +#define SEG113 5 +#define SEG114 6 +#define SEG115 7 + +#define LCDDR07 _SFR_MEM8(0XF3) +#define SEG116 0 +#define SEG117 1 +#define SEG118 2 +#define SEG119 3 +#define SEG120 4 +#define SEG121 5 +#define SEG122 6 +#define SEG123 7 + +#define LCDDR08 _SFR_MEM8(0XF4) +#define SEG124 0 + +/* Reserved [0xF5] */ + +#define LCDDR10 _SFR_MEM8(0XF6) +#define SEG200 0 +#define SEG201 1 +#define SEG202 2 +#define SEG203 3 +#define SEG204 4 +#define SEG205 5 +#define SEG206 6 +#define SEG207 7 + +#define LCDDR11 _SFR_MEM8(0XF7) +#define SEG208 0 +#define SEG209 1 +#define SEG210 2 +#define SEG211 3 +#define SEG212 4 +#define SEG213 5 +#define SEG214 6 +#define SEG215 7 + +#define LCDDR12 _SFR_MEM8(0XF8) +#define SEG216 0 +#define SEG217 1 +#define SEG218 2 +#define SEG219 3 +#define SEG220 4 +#define SEG221 5 +#define SEG222 6 +#define SEG223 7 + +#define LCDDR13 _SFR_MEM8(0XF9) +#define SEG224 0 + +/* Reserved [0xFA] */ + +#define LCDDR15 _SFR_MEM8(0XFB) +#define SEG300 0 +#define SEG301 1 +#define SEG302 2 +#define SEG303 3 +#define SEG304 4 +#define SEG305 5 +#define SEG306 6 +#define SEG307 7 + +#define LCDDR16 _SFR_MEM8(0XFC) +#define SEG308 0 +#define SEG309 1 +#define SEG310 2 +#define SEG311 3 +#define SEG312 4 +#define SEG313 5 +#define SEG314 6 +#define SEG315 7 + +#define LCDDR17 _SFR_MEM8(0XFD) +#define SEG316 0 +#define SEG217 1 +#define SEG318 2 +#define SEG319 3 +#define SEG320 4 +#define SEG321 5 +#define SEG322 6 +#define SEG323 7 + +#define LCDDR18 _SFR_MEM8(0XFE) +#define SEG324 0 + +/* Reserved [0xFF] */ + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* LCD Start of Frame */ +#define LCD_vect _VECTOR(22) +#define SIG_LCD _VECTOR(22) + +#define _VECTORS_SIZE 92 + + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF +#define XRAMEND 0x10FF +#define E2END 0x7FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x03 + + +#endif /* _AVR_IOM649_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom6490.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom6490.h new file mode 100644 index 0000000..bb243cf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom6490.h @@ -0,0 +1,1144 @@ +/* Copyright (c) 2004 Eric B. Weddington + Copyright (c) 2005,2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iom6490.h - definitions for ATmega6490 */ + +#ifndef _AVR_IOM6490_H_ +#define _AVR_IOM6490_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom6490.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0x03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define PCIF0 4 +#define PCIF1 5 +#define PCIF2 6 +#define PCIF3 7 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define PCIE0 4 +#define PCIE1 5 +#define PCIE2 6 +#define PCIE3 7 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define PSR2 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM01 3 +#define COM0A0 4 +#define COM0A1 5 +#define WGM00 6 +#define FOC0A 7 + +/* Reserved [0x25] */ + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +/* Reserved [0x28..0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0X35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define JTD 7 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRLCD 4 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 + +/* Reserved [0x71..0x72] */ + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 + +/* Reserved [0x74..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0X80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0X81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM21 3 +#define COM2A0 4 +#define COM2A1 5 +#define WGM20 6 +#define FOC2A 7 + +/* Reserved [0xB1] */ + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +/* Reserved [0xB4..0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2UB 0 +#define OCR2UB 1 +#define TCN2UB 2 +#define AS2 3 +#define EXCLK 4 + +/* Reserved [0xB7] */ + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) + +/* Reserved [0xBB..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0XC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL0 6 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7..0xD7] */ + +#define PINH _SFR_MEM8(0xD8) +#define PINH7 7 +#define PINH6 6 +#define PINH5 5 +#define PINH4 4 +#define PINH3 3 +#define PINH2 2 +#define PINH1 1 +#define PINH0 0 + +#define DDRH _SFR_MEM8(0xD9) +#define DDH7 7 +#define DDH6 6 +#define DDH5 5 +#define DDH4 4 +#define DDH3 3 +#define DDH2 2 +#define DDH1 1 +#define DDH0 0 + +#define PORTH _SFR_MEM8(0xDA) +#define PH7 7 +#define PH6 6 +#define PH5 5 +#define PH4 4 +#define PH3 3 +#define PH2 2 +#define PH1 1 +#define PH0 0 + +#define PINJ _SFR_MEM8(0xDB) +#define PINJ6 6 +#define PINJ5 5 +#define PINJ4 4 +#define PINJ3 3 +#define PINJ2 2 +#define PINJ1 1 +#define PINJ0 0 + +#define DDRJ _SFR_MEM8(0xDC) +#define DDJ6 6 +#define DDJ5 5 +#define DDJ4 4 +#define DDJ3 3 +#define DDJ2 2 +#define DDJ1 1 +#define DDJ0 0 + +#define PORTJ _SFR_MEM8(0xDD) +#define PJ6 6 +#define PJ5 5 +#define PJ4 4 +#define PJ3 3 +#define PJ2 2 +#define PJ1 1 +#define PJ0 0 + +/* Reserved [0xDE..0xE3] */ + +#define LCDCRA _SFR_MEM8(0XE4) +#define LCDBL 0 +#define LCDIE 3 +#define LCDIF 4 +#define LCDAB 6 +#define LCDEN 7 + +#define LCDCRB _SFR_MEM8(0XE5) +#define LCDPM0 0 +#define LCDPM1 1 +#define LCDPM2 2 +#define LCDPM3 3 +#define LCDMUX0 4 +#define LCDMUX1 5 +#define LCD2B 6 +#define LCDCS 7 + +#define LCDFRR _SFR_MEM8(0XE6) +#define LCDCD0 0 +#define LCDCD1 1 +#define LCDCD2 2 +#define LCDPS0 4 +#define LCDPS1 5 +#define LCDPS2 6 + +#define LCDCCR _SFR_MEM8(0XE7) +#define LCDCC0 0 +#define LCDCC1 1 +#define LCDCC2 2 +#define LCDCC3 3 +#define LCDDC0 5 +#define LCDDC1 6 +#define LCDDC2 7 + +/* Reserved [0xE8..0xEB] */ + +#define LCDDR00 _SFR_MEM8(0XEC) +#define SEG000 0 +#define SEG001 1 +#define SEG002 2 +#define SEG003 3 +#define SEG004 4 +#define SEG005 5 +#define SEG006 6 +#define SEG007 7 + +#define LCDDR01 _SFR_MEM8(0XED) +#define SEG008 0 +#define SEG009 1 +#define SEG010 2 +#define SEG011 3 +#define SEG012 4 +#define SEG013 5 +#define SEG014 6 +#define SEG015 7 + +#define LCDDR02 _SFR_MEM8(0XEE) +#define SEG016 0 +#define SEG017 1 +#define SEG018 2 +#define SEG019 3 +#define SEG020 4 +#define SEG021 5 +#define SEG022 6 +#define SEG023 7 + +#define LCDDR03 _SFR_MEM8(0XEF) +#define SEG024 0 +#define SEG025 1 +#define SEG026 2 +#define SEG027 3 +#define SEG028 4 +#define SEG029 5 +#define SEG030 6 +#define SEG031 7 + +#define LCDDR04 _SFR_MEM8(0XF0) +#define SEG032 0 +#define SEG033 1 +#define SEG034 2 +#define SEG035 3 +#define SEG036 4 +#define SEG037 5 +#define SEG038 6 +#define SEG039 7 + +#define LCDDR05 _SFR_MEM8(0XF1) +#define SEG100 0 +#define SEG101 1 +#define SEG102 2 +#define SEG103 3 +#define SEG104 4 +#define SEG105 5 +#define SEG106 6 +#define SEG107 7 + +#define LCDDR06 _SFR_MEM8(0XF2) +#define SEG108 0 +#define SEG109 1 +#define SEG110 2 +#define SEG111 3 +#define SEG112 4 +#define SEG113 5 +#define SEG114 6 +#define SEG115 7 + +#define LCDDR07 _SFR_MEM8(0XF3) +#define SEG116 0 +#define SEG117 1 +#define SEG118 2 +#define SEG119 3 +#define SEG120 4 +#define SEG121 5 +#define SEG122 6 +#define SEG123 7 + +#define LCDDR08 _SFR_MEM8(0XF4) +#define SEG124 0 +#define SEG125 1 +#define SEG126 2 +#define SEG127 3 +#define SEG128 4 +#define SEG129 5 +#define SEG130 6 +#define SEG131 7 + +#define LCDDR09 _SFR_MEM8(0XF5) +#define SEG132 0 +#define SEG133 1 +#define SEG134 2 +#define SEG135 3 +#define SEG136 4 +#define SEG137 5 +#define SEG138 6 +#define SEG139 7 + +#define LCDDR10 _SFR_MEM8(0XF6) +#define SEG200 0 +#define SEG201 1 +#define SEG202 2 +#define SEG203 3 +#define SEG204 4 +#define SEG205 5 +#define SEG206 6 +#define SEG207 7 + +#define LCDDR11 _SFR_MEM8(0XF7) +#define SEG208 0 +#define SEG209 1 +#define SEG210 2 +#define SEG211 3 +#define SEG212 4 +#define SEG213 5 +#define SEG214 6 +#define SEG215 7 + +#define LCDDR12 _SFR_MEM8(0XF8) +#define SEG216 0 +#define SEG217 1 +#define SEG218 2 +#define SEG219 3 +#define SEG220 4 +#define SEG221 5 +#define SEG222 6 +#define SEG223 7 + +#define LCDDR13 _SFR_MEM8(0XF9) +#define SEG224 0 +#define SEG225 1 +#define SEG226 2 +#define SEG227 3 +#define SEG228 4 +#define SEG229 5 +#define SEG230 6 +#define SEG231 7 + +#define LCDDR14 _SFR_MEM8(0XFA) +#define SEG232 0 +#define SEG233 1 +#define SEG234 2 +#define SEG235 3 +#define SEG236 4 +#define SEG237 5 +#define SEG238 6 +#define SEG239 7 + +#define LCDDR15 _SFR_MEM8(0XFB) +#define SEG300 0 +#define SEG301 1 +#define SEG302 2 +#define SEG303 3 +#define SEG304 4 +#define SEG305 5 +#define SEG306 6 +#define SEG307 7 + +#define LCDDR16 _SFR_MEM8(0XFC) +#define SEG308 0 +#define SEG309 1 +#define SEG310 2 +#define SEG311 3 +#define SEG312 4 +#define SEG313 5 +#define SEG314 6 +#define SEG315 7 + +#define LCDDR17 _SFR_MEM8(0XFD) +#define SEG316 0 +#define SEG217 1 +#define SEG318 2 +#define SEG319 3 +#define SEG320 4 +#define SEG321 5 +#define SEG322 6 +#define SEG323 7 + +#define LCDDR18 _SFR_MEM8(0XFE) +#define SEG324 0 +#define SEG325 1 +#define SEG326 2 +#define SEG327 3 +#define SEG328 4 +#define SEG329 5 +#define SEG330 6 +#define SEG331 7 + +#define LCDDR19 _SFR_MEM8(0XFF) +#define SEG332 0 +#define SEG333 1 +#define SEG334 2 +#define SEG335 3 +#define SEG336 4 +#define SEG337 5 +#define SEG338 6 +#define SEG339 7 + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE2 _VECTOR(4) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW2 _VECTOR(5) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(6) +#define SIG_INPUT_CAPTURE1 _VECTOR(6) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1A _VECTOR(7) + +/* Timer/Counter Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE1B _VECTOR(8) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW1 _VECTOR(9) + +/* Timer/Counter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0 _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(12) +#define SIG_SPI _VECTOR(12) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(13) +#define SIG_UART_RECV _VECTOR(13) + +/* USART Data register Empty */ +#define USART_UDRE_vect _VECTOR(14) +#define SIG_UART_DATA _VECTOR(14) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(15) +#define SIG_UART_TRANS _VECTOR(15) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(16) +#define SIG_USI_START _VECTOR(16) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(17) +#define SIG_USI_OVERFLOW _VECTOR(17) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(18) +#define SIG_COMPARATOR _VECTOR(18) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(19) +#define SIG_ADC _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) +#define SIG_EEPROM_READY _VECTOR(20) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(21) +#define SIG_SPM_READY _VECTOR(21) + +/* LCD Start of Frame */ +#define LCD_vect _VECTOR(22) +#define SIG_LCD _VECTOR(22) + +/* Pin Change Interrupt Request 2 */ +#define PCINT2_vect _VECTOR(23) +#define SIG_PIN_CHANGE2 _VECTOR(23) + +/* Pin Change Interrupt Request 3 */ +#define PCINT3_vect _VECTOR(24) +#define SIG_PIN_CHANGE3 _VECTOR(24) + +#define _VECTORS_SIZE 100 + + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF +#define XRAMEND 0x10FF +#define E2END 0x7FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x04 + + +#endif /* _AVR_IOM6490_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8.h new file mode 100644 index 0000000..b88c625 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8.h @@ -0,0 +1,614 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom8.h,v 1.14.2.6 2008/10/17 23:27:50 arcanum Exp $ */ + +/* avr/iom8.h - definitions for ATmega8 */ + +#ifndef _AVR_IOM8_H_ +#define _AVR_IOM8_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom8.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ +#define TWBR _SFR_IO8(0x00) +#define TWSR _SFR_IO8(0x01) +#define TWAR _SFR_IO8(0x02) +#define TWDR _SFR_IO8(0x03) + +/* ADC */ +#define ADCW _SFR_IO16(0x04) +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) +#define ADCSR _SFR_IO8(0x06) +#define ADCSRA _SFR_IO8(0x06) /* Changed in 2486H-AVR-09/02 */ +#define ADMUX _SFR_IO8(0x07) + +/* analog comparator */ +#define ACSR _SFR_IO8(0x08) + +/* USART */ +#define UBRRL _SFR_IO8(0x09) +#define UCSRB _SFR_IO8(0x0A) +#define UCSRA _SFR_IO8(0x0B) +#define UDR _SFR_IO8(0x0C) + +/* SPI */ +#define SPCR _SFR_IO8(0x0D) +#define SPSR _SFR_IO8(0x0E) +#define SPDR _SFR_IO8(0x0F) + +/* Port D */ +#define PIND _SFR_IO8(0x10) +#define DDRD _SFR_IO8(0x11) +#define PORTD _SFR_IO8(0x12) + +/* Port C */ +#define PINC _SFR_IO8(0x13) +#define DDRC _SFR_IO8(0x14) +#define PORTC _SFR_IO8(0x15) + +/* Port B */ +#define PINB _SFR_IO8(0x16) +#define DDRB _SFR_IO8(0x17) +#define PORTB _SFR_IO8(0x18) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define UCSRC _SFR_IO8(0x20) +#define UBRRH _SFR_IO8(0x20) + +#define WDTCR _SFR_IO8(0x21) +#define ASSR _SFR_IO8(0x22) + +/* Timer 2 */ +#define OCR2 _SFR_IO8(0x23) +#define TCNT2 _SFR_IO8(0x24) +#define TCCR2 _SFR_IO8(0x25) + +/* Timer 1 */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) +#define TCCR1B _SFR_IO8(0x2E) +#define TCCR1A _SFR_IO8(0x2F) + +#define SFIOR _SFR_IO8(0x30) + +#define OSCCAL _SFR_IO8(0x31) + +/* Timer 0 */ +#define TCNT0 _SFR_IO8(0x32) +#define TCCR0 _SFR_IO8(0x33) + +#define MCUCSR _SFR_IO8(0x34) +#define MCUSR _SFR_IO8(0x34) /* Defined as an alias for MCUCSR. */ + +#define MCUCR _SFR_IO8(0x35) + +#define TWCR _SFR_IO8(0x36) + +#define SPMCR _SFR_IO8(0x37) + +#define TIFR _SFR_IO8(0x38) +#define TIMSK _SFR_IO8(0x39) + +#define GIFR _SFR_IO8(0x3A) +#define GIMSK _SFR_IO8(0x3B) +#define GICR _SFR_IO8(0x3B) /* Changed in 2486H-AVR-09/02 */ + +/* 0x3C reserved (OCR0?) */ + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE2 _VECTOR(3) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW2 _VECTOR(4) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(5) +#define SIG_INPUT_CAPTURE1 _VECTOR(5) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE1A _VECTOR(6) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1B _VECTOR(7) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(8) +#define SIG_OVERFLOW1 _VECTOR(8) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW0 _VECTOR(9) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(10) +#define SIG_SPI _VECTOR(10) + +/* USART, Rx Complete */ +#define USART_RXC_vect _VECTOR(11) +#define SIG_UART_RECV _VECTOR(11) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(12) +#define SIG_UART_DATA _VECTOR(12) + +/* USART, Tx Complete */ +#define USART_TXC_vect _VECTOR(13) +#define SIG_UART_TRANS _VECTOR(13) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(14) +#define SIG_ADC _VECTOR(14) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(15) +#define SIG_EEPROM_READY _VECTOR(15) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(16) +#define SIG_COMPARATOR _VECTOR(16) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(17) +#define SIG_2WIRE_SERIAL _VECTOR(17) + +/* Store Program Memory Ready */ +#define SPM_RDY_vect _VECTOR(18) +#define SIG_SPM_READY _VECTOR(18) + +#define _VECTORS_SIZE 38 + +/* Bit numbers */ + +/* GIMSK / GICR */ +#define INT1 7 +#define INT0 6 +#define IVSEL 1 +#define IVCE 0 + +/* GIFR */ +#define INTF1 7 +#define INTF0 6 + +/* TIMSK */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +/* bit 1 reserved (OCIE0?) */ +#define TOIE0 0 + +/* TIFR */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +/* bit 1 reserved (OCF0?) */ +#define TOV0 0 + +/* SPMCR */ +#define SPMIE 7 +#define RWWSB 6 +/* bit 5 reserved */ +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +/* bit 1 reserved (TWI_TST?) */ +#define TWIE 0 + +/* TWAR */ +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +/* TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +/* bit 2 reserved */ +#define TWPS1 1 +#define TWPS0 0 + +/* MCUCR */ +#define SE 7 +#define SM2 6 +#define SM1 5 +#define SM0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* MCUCSR */ +/* bits 7-4 reserved */ +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven + to be fast enough even without feeding it more power. +*/ + +/* SFIOR */ +/* bits 7-5 reserved */ +#define ACME 3 +#define PUD 2 +#define PSR2 1 +#define PSR10 0 + +/* TCCR0 */ +/* bits 7-3 reserved */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR2 */ +#define FOC2 7 +#define WGM20 6 +#define COM21 5 +#define COM20 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* ASSR */ +/* bits 7-4 reserved */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define WGM11 1 +#define WGM10 0 + +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +/* bit 5 reserved */ +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* WDTCR */ +/* bits 7-5 reserved */ +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* UBRRH */ +#define URSEL 7 + +/* UCSRC */ +#define URSEL 7 +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* PORTC */ +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* DDRC */ +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* PINC */ +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* UCSRA */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define PE 2 +#define U2X 1 +#define MPCM 0 + +/* UCSRB */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ2 2 +#define RXB8 1 +#define TXB8 0 + +/* ACSR */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADCSR / ADCSRA */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +/* bit 4 reserved */ +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x45F +#define XRAMEND 0x45F +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_CKOPT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_WDTON (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_IOM8_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8515.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8515.h new file mode 100644 index 0000000..04663ae --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8515.h @@ -0,0 +1,636 @@ +/* Copyright (c) 2002, Steinar Haugen + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom8515.h,v 1.10.2.5 2008/10/17 23:27:50 arcanum Exp $ */ + +/* avr/iom8515.h - definitions for ATmega8515 */ + +#ifndef _AVR_IOM8515_H_ +#define _AVR_IOM8515_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom8515.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_IO8(0x04) + +/* Input Pins, Port E */ +#define PINE _SFR_IO8(0x05) + +/* Data Direction Register, Port E */ +#define DDRE _SFR_IO8(0x06) + +/* Data Register, Port E */ +#define PORTE _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* USART Baud Rate Register */ +#define UBRRL _SFR_IO8(0x09) + +/* USART Control and Status Register B */ +#define UCSRB _SFR_IO8(0x0A) + +/* USART Control and Status Register A */ +#define UCSRA _SFR_IO8(0x0B) + +/* USART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* USART Baud Rate Register HI */ +/* USART Control and Status Register C */ +#define UBRRH _SFR_IO8(0x20) +#define UCSRC UBRRH + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Special Function IO Register */ +#define SFIOR _SFR_IO8(0x30) + +/* Timer/Counter 0 Output Compare Register */ +#define OCR0 _SFR_IO8(0x31) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Control and Status Register */ +#define MCUCSR _SFR_IO8(0x34) + +/* MCU Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Extended MCU Control Register */ +#define EMCUCR _SFR_IO8(0x36) + +/* Store Program Memory Control Register */ +#define SPMCR _SFR_IO8(0x37) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt Control Register */ +#define GICR _SFR_IO8(0x3B) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) + +/* Timer/Counter1 Compare MatchB */ +#define TIMER1_COMPB_vect _VECTOR(5) +#define SIG_OUTPUT_COMPARE1B _VECTOR(5) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(6) +#define SIG_OVERFLOW1 _VECTOR(6) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(7) +#define SIG_OVERFLOW0 _VECTOR(7) + +/* Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(8) +#define SIG_SPI _VECTOR(8) + +/* UART, Rx Complete */ +#define USART_RX_vect _VECTOR(9) +#define UART_RX_vect _VECTOR(9) /* For compatability only */ +#define SIG_UART_RECV _VECTOR(9) /* For compatability only */ + +/* UART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(10) +#define UART_UDRE_vect _VECTOR(10) /* For compatability only */ +#define SIG_UART_DATA _VECTOR(10) /* For compatability only */ + +/* UART, Tx Complete */ +#define USART_TX_vect _VECTOR(11) +#define UART_TX_vect _VECTOR(11) /* For compatability only */ +#define SIG_UART_TRANS _VECTOR(11) /* For compatability only */ + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(12) +#define SIG_COMPARATOR _VECTOR(12) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(13) +#define SIG_INTERRUPT2 _VECTOR(13) + +/* Timer 0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE0 _VECTOR(14) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(15) +#define SIG_EEPROM_READY _VECTOR(15) + +/* Store Program Memory Ready */ +#define SPM_RDY_vect _VECTOR(16) +#define SIG_SPM_READY _VECTOR(16) + +#define _VECTORS_SIZE 34 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* General Interrupt Control Register */ +#define INT1 7 +#define INT0 6 +#define INT2 5 +#define IVSEL 1 +#define IVCE 0 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 +#define INTF2 5 + +/* Timer/Counter Interrupt MaSK Register */ +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +#define TICIE1 3 +#define TOIE0 1 +#define OCIE0 0 + +/* Timer/Counter Interrupt Flag Register */ +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +#define ICF1 3 +#define TOV0 1 +#define OCF0 0 + +/* Store Program Memory Control Register */ +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Extended MCU Control Register */ +#define SM0 7 +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW01 3 +#define SRW00 2 +#define SRW11 1 +#define ISC2 0 + +/* MCU Control Register */ +#define SRE 7 +#define SRW10 6 +#define SE 5 +#define SM1 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* MCU Control and Status Register */ +#define SM2 5 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* Timer/Counter 0 Control Register */ +#define FOC0 7 +#define WGM00 6 +#define COM01 5 +#define COM00 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Special Function IO Register */ +#define XMBK 6 +#define XMM2 5 +#define XMM1 4 +#define XMM0 3 +#define PUD 2 +#define PSR10 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define WGM11 1 +#define WGM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Watchdog Timer Control Register */ +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* USART Control and Status Register C */ +#define URSEL 7 +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* USART Control and Status Register A */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define PE 2 +#define U2X 1 +#define MPCM 0 + +/* USART Control and Status Register B */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ2 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* Data Register, Port E */ +#define PE2 2 +#define PE1 1 +#define PE0 0 + +/* Data Direction Register, Port E */ +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +/* Input Pins, Port E */ +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x25F /* Last On-Chip SRAM Location */ +#define XRAMEND 0xFFFF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_CKOPT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_WDTON (unsigned char)~_BV(6) +#define FUSE_S8515C (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x06 + + +#endif /* _AVR_IOM8515_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8535.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8535.h new file mode 100644 index 0000000..0a20da6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8535.h @@ -0,0 +1,715 @@ +/* Copyright (c) 2002, Steinar Haugen + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom8535.h,v 1.11.2.5 2008/10/17 23:27:50 arcanum Exp $ */ + +/* avr/iom8535.h - definitions for ATmega8535 */ + +#ifndef _AVR_IOM8535_H_ +#define _AVR_IOM8535_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom8535.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ +#define TWBR _SFR_IO8(0x00) +#define TWSR _SFR_IO8(0x01) +#define TWAR _SFR_IO8(0x02) +#define TWDR _SFR_IO8(0x03) + +/* ADC Data register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register */ +#define ADCSRA _SFR_IO8(0x06) + +/* ADC MUX */ +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* USART Baud Rate Register */ +#define UBRRL _SFR_IO8(0x09) + +/* USART Control and Status Register B */ +#define UCSRB _SFR_IO8(0x0A) + +/* USART Control and Status Register A */ +#define UCSRA _SFR_IO8(0x0B) + +/* USART I/O Data Register */ +#define UDR _SFR_IO8(0x0C) + +/* SPI Control Register */ +#define SPCR _SFR_IO8(0x0D) + +/* SPI Status Register */ +#define SPSR _SFR_IO8(0x0E) + +/* SPI I/O Data Register */ +#define SPDR _SFR_IO8(0x0F) + +/* Input Pins, Port D */ +#define PIND _SFR_IO8(0x10) + +/* Data Direction Register, Port D */ +#define DDRD _SFR_IO8(0x11) + +/* Data Register, Port D */ +#define PORTD _SFR_IO8(0x12) + +/* Input Pins, Port C */ +#define PINC _SFR_IO8(0x13) + +/* Data Direction Register, Port C */ +#define DDRC _SFR_IO8(0x14) + +/* Data Register, Port C */ +#define PORTC _SFR_IO8(0x15) + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* Input Pins, Port A */ +#define PINA _SFR_IO8(0x19) + +/* Data Direction Register, Port A */ +#define DDRA _SFR_IO8(0x1A) + +/* Data Register, Port A */ +#define PORTA _SFR_IO8(0x1B) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +/* USART Baud Rate Register HI */ +/* USART Control and Status Register C */ +#define UBRRH _SFR_IO8(0x20) +#define UCSRC UBRRH + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Asynchronous mode Status Register */ +#define ASSR _SFR_IO8(0x22) + +/* Timer/Counter2 Output Compare Register */ +#define OCR2 _SFR_IO8(0x23) + +/* Timer/Counter 2 */ +#define TCNT2 _SFR_IO8(0x24) + +/* Timer/Counter 2 Control Register */ +#define TCCR2 _SFR_IO8(0x25) + +/* T/C 1 Input Capture Register */ +#define ICR1 _SFR_IO16(0x26) +#define ICR1L _SFR_IO8(0x26) +#define ICR1H _SFR_IO8(0x27) + +/* Timer/Counter1 Output Compare Register B */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Timer/Counter1 Output Compare Register A */ +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* Timer/Counter 1 Control and Status Register */ +#define TCCR1B _SFR_IO8(0x2E) + +/* Timer/Counter 1 Control Register */ +#define TCCR1A _SFR_IO8(0x2F) + +/* Special Function IO Register */ +#define SFIOR _SFR_IO8(0x30) + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_IO8(0x31) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Control and Status Register */ +#define MCUCSR _SFR_IO8(0x34) + +/* MCU Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* TWI Control Register */ +#define TWCR _SFR_IO8(0x36) + +/* Store Program Memory Control Register */ +#define SPMCR _SFR_IO8(0x37) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GICR _SFR_IO8(0x3B) + +/* Timer/Counter 0 Output Compare Register */ +#define OCR0 _SFR_IO8(0x3C) + +/* 0x3D..0x3E SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Timer/Counter2 Compare Match */ +#define TIMER2_COMP_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE2 _VECTOR(3) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW2 _VECTOR(4) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(5) +#define SIG_INPUT_CAPTURE1 _VECTOR(5) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE1A _VECTOR(6) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1B _VECTOR(7) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(8) +#define SIG_OVERFLOW1 _VECTOR(8) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW0 _VECTOR(9) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(10) +#define SIG_SPI _VECTOR(10) + +/* USART, RX Complete */ +#define USART_RX_vect _VECTOR(11) +#define SIG_UART_RECV _VECTOR(11) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(12) +#define SIG_UART_DATA _VECTOR(12) + +/* USART, TX Complete */ +#define USART_TX_vect _VECTOR(13) +#define SIG_UART_TRANS _VECTOR(13) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(14) +#define SIG_ADC _VECTOR(14) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(15) +#define SIG_EEPROM_READY _VECTOR(15) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(16) +#define SIG_COMPARATOR _VECTOR(16) + +/* Two-wire Serial Interface */ +#define TWI_vect _VECTOR(17) +#define SIG_2WIRE_SERIAL _VECTOR(17) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(18) +#define SIG_INTERRUPT2 _VECTOR(18) + +/* TimerCounter0 Compare Match */ +#define TIMER0_COMP_vect _VECTOR(19) +#define SIG_OUTPUT_COMPARE0 _VECTOR(19) + +/* Store Program Memory Read */ +#define SPM_RDY_vect _VECTOR(20) +#define SIG_SPM_READY _VECTOR(20) + +#define _VECTORS_SIZE 42 + +/* + The Register Bit names are represented by their bit number (0-7). +*/ + +/* General Interrupt Control Register */ +#define INT1 7 +#define INT0 6 +#define INT2 5 +#define IVSEL 1 +#define IVCE 0 + +/* General Interrupt Flag Register */ +#define INTF1 7 +#define INTF0 6 +#define INTF2 5 + +/* Timer/Counter Interrupt MaSK register */ +#define OCIE2 7 +#define TOIE2 6 +#define TICIE1 5 +#define OCIE1A 4 +#define OCIE1B 3 +#define TOIE1 2 +#define OCIE0 1 +#define TOIE0 0 + +/* Timer/Counter Interrupt Flag register */ +#define OCF2 7 +#define TOV2 6 +#define ICF1 5 +#define OCF1A 4 +#define OCF1B 3 +#define TOV1 2 +#define OCF0 1 +#define TOV0 0 + +/* Store Program Memory Control Register */ +#define SPMIE 7 +#define RWWSB 6 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* TWI Control Register */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +/* MCU Control Register */ +#define SM2 7 +#define SE 6 +#define SM1 5 +#define SM0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* MCU Control and Status Register */ +#define ISC2 6 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* Timer/Counter 0 Control Register */ +#define FOC0 7 +#define WGM00 6 +#define COM01 5 +#define COM00 4 +#define WGM01 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* + The ADHSM bit has been removed from all documentation, + as being not needed at all since the comparator has proven + to be fast enough even without feeding it more power. +*/ + +/* Special Function IO Register */ +#define ADTS2 7 +#define ADTS1 6 +#define ADTS0 5 +#define ACME 3 +#define PUD 2 +#define PSR2 1 +#define PSR10 0 + +/* Timer/Counter 1 Control Register */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1A 3 +#define FOC1B 2 +#define WGM11 1 +#define WGM10 0 + +/* Timer/Counter 1 Control and Status Register */ +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Timer/Counter 2 Control Register */ +#define FOC2 7 +#define WGM20 6 +#define COM21 5 +#define COM20 4 +#define WGM21 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +/* Asynchronous mode Status Register */ +#define AS2 3 +#define TCN2UB 2 +#define OCR2UB 1 +#define TCR2UB 0 + +/* Watchdog Timer Control Register */ +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* USART Control and Status Register C */ +#define URSEL 7 +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* Data Register, Port A */ +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* Data Direction Register, Port A */ +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +/* Input Pins, Port A */ +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Data Register, Port B */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Register, Port C */ +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Data Direction Register, Port C */ +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +/* Input Pins, Port C */ +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +/* Data Register, Port D */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Data Direction Register, Port D */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Input Pins, Port D */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* SPI Status Register */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +/* SPI Control Register */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +/* USART Control and Status Register A */ +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define PE 2 +#define U2X 1 +#define MPCM 0 + +/* USART Control and Status Register B */ +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ2 2 +#define RXB8 1 +#define TXB8 0 + +/* Analog Comparator Control and Status Register */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* ADC Multiplexer Selection Register */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* ADC Control and Status Register */ +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* TWI (Slave) Address Register */ +#define TWGCE 0 + +/* TWI Status Register */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x25F /* Last On-Chip SRAM Location */ +#define XRAMEND 0x25F +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_CKOPT (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_WDTON (unsigned char)~_BV(6) +#define FUSE_S8535C (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x08 + + +#endif /* _AVR_IOM8535_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom88.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom88.h new file mode 100644 index 0000000..32e9306 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom88.h @@ -0,0 +1,91 @@ +/* Copyright (c) 2004, Theodore A. Roth + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom88.h,v 1.4.2.5 2008/10/17 23:27:50 arcanum Exp $ */ + +#ifndef _AVR_IOM88_H_ +#define _AVR_IOM88_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x4FF +#define XRAMEND 0x4FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x0A + + +#endif /* _AVR_IOM88_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom88p.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom88p.h new file mode 100644 index 0000000..ed3ab15 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom88p.h @@ -0,0 +1,874 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom88p.h,v 1.3.2.11 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iom88p.h - definitions for ATmega88P. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom88p.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOM88P_H_ +#define _AVR_IOM88P_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 + +#define EEPROM_REG_LOCATIONS 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define BODSE 5 +#define BODS 6 + +#define SPMCSR _SFR_IO8(0x37) +#define SELFPRGEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define RWWSB 6 +#define SPMIE 7 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 0 +#define TWAM1 1 +#define TWAM2 2 +#define TWAM3 3 +#define TWAM4 4 +#define TWAM5 5 +#define TWAM6 6 + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0xC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCPHA0 1 +#define UCSZ01 2 +#define UDORD0 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0xC5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0xC6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define PCINT0_vect _VECTOR(3) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */ +#define PCINT2_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */ +#define WDT_vect _VECTOR(6) /* Watchdog Time-out Interrupt */ +#define TIMER2_COMPA_vect _VECTOR(7) /* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect _VECTOR(8) /* Timer/Counter2 Compare Match A */ +#define TIMER2_OVF_vect _VECTOR(9) /* Timer/Counter2 Overflow */ +#define TIMER1_CAPT_vect _VECTOR(10) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(11) /* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPB_vect _VECTOR(12) /* Timer/Counter1 Compare Match B */ +#define TIMER1_OVF_vect _VECTOR(13) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(14) /* TimerCounter0 Compare Match A */ +#define TIMER0_COMPB_vect _VECTOR(15) /* TimerCounter0 Compare Match B */ +#define TIMER0_OVF_vect _VECTOR(16) /* Timer/Couner0 Overflow */ +#define SPI_STC_vect _VECTOR(17) /* SPI Serial Transfer Complete */ +#define USART_RX_vect _VECTOR(18) /* USART Rx Complete */ +#define USART_UDRE_vect _VECTOR(19) /* USART, Data Register Empty */ +#define USART_TX_vect _VECTOR(20) /* USART Tx Complete */ +#define ADC_vect _VECTOR(21) /* ADC Conversion Complete */ +#define EE_READY_vect _VECTOR(22) /* EEPROM Ready */ +#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */ +#define TWI_vect _VECTOR(24) /* Two-wire Serial Interface */ +#define SPM_READY_vect _VECTOR(25) /* Store Program Memory Read */ + +#define _VECTORS_SIZE (26 * 2) + + + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x4FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define EFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1) + + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x0F + + +#endif /* _AVR_IOM88P_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8hva.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8hva.h new file mode 100644 index 0000000..d9101d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iom8hva.h @@ -0,0 +1,70 @@ +/* Copyright (c) 2007, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iom8hva.h,v 1.2.2.4 2008/08/14 00:08:05 arcanum Exp $ */ + +/* iom8hva.h - definitions for ATmega8HVA. */ + +#ifndef _AVR_IOM8HVA_H_ +#define _AVR_IOM8HVA_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x2FF +#define XRAMEND 0x2FF +#define E2END 0xFF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_SUT0 (unsigned char)~_BV(0) +#define FUSE_SUT1 (unsigned char)~_BV(1) +#define FUSE_SUT2 (unsigned char)~_BV(2) +#define FUSE_SELFPRGEN (unsigned char)~_BV(3) +#define FUSE_DWEN (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_EESAVE (unsigned char)~_BV(6) +#define FUSE_WDTON (unsigned char)~_BV(7) +#define FUSE_DEFAULT (FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +#endif /* _AVR_IOM8HVA_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomx8.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomx8.h new file mode 100644 index 0000000..cdbb843 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomx8.h @@ -0,0 +1,735 @@ +/* Copyright (c) 2004,2005, Theodore A. Roth + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iomx8.h,v 1.13 2007/12/12 14:00:49 arcanum Exp $ */ + +/* avr/iomx8.h - definitions for ATmega48, ATmega88 and ATmega168 */ + +#ifndef _AVR_IOMX8_H_ +#define _AVR_IOMX8_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iomx8.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Port B */ + +#define PINB _SFR_IO8 (0x03) +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8 (0x04) +/* DDRB */ +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8 (0x05) +/* PORTB */ +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Port C */ + +#define PINC _SFR_IO8 (0x06) +/* PINC */ +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8 (0x07) +/* DDRC */ +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8 (0x08) +/* PORTC */ +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +/* Port D */ + +#define PIND _SFR_IO8 (0x09) +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8 (0x0A) +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8 (0x0B) +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define TIFR0 _SFR_IO8 (0x15) +/* TIFR0 */ +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIFR1 _SFR_IO8 (0x16) +/* TIFR1 */ +#define ICF1 5 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +#define TIFR2 _SFR_IO8 (0x17) +/* TIFR2 */ +#define OCF2B 2 +#define OCF2A 1 +#define TOV2 0 + +#define PCIFR _SFR_IO8 (0x1B) +/* PCIFR */ +#define PCIF2 2 +#define PCIF1 1 +#define PCIF0 0 + +#define EIFR _SFR_IO8 (0x1C) +/* EIFR */ +#define INTF1 1 +#define INTF0 0 + +#define EIMSK _SFR_IO8 (0x1D) +/* EIMSK */ +#define INT1 1 +#define INT0 0 + +#define GPIOR0 _SFR_IO8 (0x1E) + +#define EECR _SFR_IO8(0x1F) +/* EECT - EEPROM Control Register */ +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) +/* +Even though EEARH is not used by the mega48, the EEAR8 bit in the register +must be written to 0, according to the datasheet, hence the EEARH register +must be defined for the mega48. +*/ +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + + +#define GTCCR _SFR_IO8 (0x23) +/* GTCCR */ +#define TSM 7 +#define PSRASY 1 +#define PSRSYNC 0 + +#define TCCR0A _SFR_IO8 (0x24) +/* TCCR0A */ +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define TCCR0B _SFR_IO8 (0x25) +/* TCCR0A */ +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define TCNT0 _SFR_IO8 (0x26) +#define OCR0A _SFR_IO8 (0x27) +#define OCR0B _SFR_IO8 (0x28) + +#define GPIOR1 _SFR_IO8 (0x2A) +#define GPIOR2 _SFR_IO8 (0x2B) + +#define SPCR _SFR_IO8 (0x2C) +/* SPCR */ +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +#define SPSR _SFR_IO8 (0x2D) +/* SPSR */ +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +#define SPDR _SFR_IO8 (0x2E) + +#define ACSR _SFR_IO8 (0x30) +/* ACSR */ +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +#define MONDR _SFR_IO8 (0x31) + +#define SMCR _SFR_IO8 (0x33) +/* SMCR */ +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +#define MCUSR _SFR_IO8 (0x34) +/* MCUSR */ +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8 (0x35) +/* MCUCR */ +#define PUD 4 +#if defined (__AVR_ATmega88__) || defined (__AVR_ATmega168__) +#define IVSEL 1 +#define IVCE 0 +#endif + +#define SPMCSR _SFR_IO8 (0x37) +/* SPMCSR */ +#define SPMIE 7 +#if defined (__AVR_ATmega88__) || defined (__AVR_ATmega168__) +# define RWWSB 6 +# define RWWSRE 4 +#endif +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SELFPRGEN 0 +#define SPMEN 0 + +/* 0x3D..0x3E SP [defined in ] */ +/* 0x3F SREG [defined in ] */ + +#define WDTCSR _SFR_MEM8 (0x60) +/* WDTCSR */ +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define CLKPR _SFR_MEM8 (0x61) +/* CLKPR */ +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +#define PRR _SFR_MEM8 (0x64) +/* PRR */ +#define PRTWI 7 +#define PRTIM2 6 +#define PRTIM0 5 +#define PRTIM1 3 +#define PRSPI 2 +#define PRUSART0 1 +#define PRADC 0 + +#define OSCCAL _SFR_MEM8 (0x66) + +#define PCICR _SFR_MEM8 (0x68) +/* PCICR */ +#define PCIE2 2 +#define PCIE1 1 +#define PCIE0 0 + +#define EICRA _SFR_MEM8 (0x69) +/* EICRA */ +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +#define PCMSK0 _SFR_MEM8 (0x6B) +/* PCMSK0 */ +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define PCMSK1 _SFR_MEM8 (0x6C) +/* PCMSK1 */ +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +#define PCMSK2 _SFR_MEM8 (0x6D) +/* PCMSK2 */ +#define PCINT23 7 +#define PCINT22 6 +#define PCINT21 5 +#define PCINT20 4 +#define PCINT19 3 +#define PCINT18 2 +#define PCINT17 1 +#define PCINT16 0 + +#define TIMSK0 _SFR_MEM8 (0x6E) +/* TIMSK0 */ +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define TIMSK1 _SFR_MEM8 (0x6F) +/* TIMSK1 */ +#define ICIE1 5 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +#define TIMSK2 _SFR_MEM8 (0x70) +/* TIMSK2 */ +#define OCIE2B 2 +#define OCIE2A 1 +#define TOIE2 0 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16 (0x78) +#endif +#define ADCW _SFR_MEM16 (0x78) +#define ADCL _SFR_MEM8 (0x78) +#define ADCH _SFR_MEM8 (0x79) + +#define ADCSRA _SFR_MEM8 (0x7A) +/* ADCSRA */ +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +#define ADCSRB _SFR_MEM8 (0x7B) +/* ADCSRB */ +#define ACME 6 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +#define ADMUX _SFR_MEM8 (0x7C) +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +#define DIDR0 _SFR_MEM8 (0x7E) +/* DIDR0 */ +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +#define DIDR1 _SFR_MEM8 (0x7F) +/* DIDR1 */ +#define AIN1D 1 +#define AIN0D 0 + +#define TCCR1A _SFR_MEM8 (0x80) +/* TCCR1A */ +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define WGM11 1 +#define WGM10 0 + +#define TCCR1B _SFR_MEM8 (0x81) +/* TCCR1B */ +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define TCCR1C _SFR_MEM8 (0x82) +/* TCCR1C */ +#define FOC1A 7 +#define FOC1B 6 + +#define TCNT1 _SFR_MEM16 (0x84) +#define TCNT1L _SFR_MEM8 (0x84) +#define TCNT1H _SFR_MEM8 (0x85) + +#define ICR1 _SFR_MEM16 (0x86) +#define ICR1L _SFR_MEM8 (0x86) +#define ICR1H _SFR_MEM8 (0x87) + +#define OCR1A _SFR_MEM16 (0x88) +#define OCR1AL _SFR_MEM8 (0x88) +#define OCR1AH _SFR_MEM8 (0x89) + +#define OCR1B _SFR_MEM16 (0x8A) +#define OCR1BL _SFR_MEM8 (0x8A) +#define OCR1BH _SFR_MEM8 (0x8B) + +#define TCCR2A _SFR_MEM8 (0xB0) +/* TCCR2A */ +#define COM2A1 7 +#define COM2A0 6 +#define COM2B1 5 +#define COM2B0 4 +#define WGM21 1 +#define WGM20 0 + +#define TCCR2B _SFR_MEM8 (0xB1) +/* TCCR2B */ +#define FOC2A 7 +#define FOC2B 6 +#define WGM22 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +#define TCNT2 _SFR_MEM8 (0xB2) +#define OCR2A _SFR_MEM8 (0xB3) +#define OCR2B _SFR_MEM8 (0xB4) + +#define ASSR _SFR_MEM8 (0xB6) +/* ASSR */ +#define EXCLK 6 +#define AS2 5 +#define TCN2UB 4 +#define OCR2AUB 3 +#define OCR2BUB 2 +#define TCR2AUB 1 +#define TCR2BUB 0 + +#define TWBR _SFR_MEM8 (0xB8) + +#define TWSR _SFR_MEM8 (0xB9) +/* TWSR */ +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +#define TWAR _SFR_MEM8 (0xBA) +/* TWAR */ +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +#define TWDR _SFR_MEM8 (0xBB) + +#define TWCR _SFR_MEM8 (0xBC) +/* TWCR */ +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +#define TWAMR _SFR_MEM8 (0xBD) +/* TWAMR */ +#define TWAM6 7 +#define TWAM5 6 +#define TWAM4 5 +#define TWAM3 4 +#define TWAM2 3 +#define TWAM1 2 +#define TWAM0 1 + +#define UCSR0A _SFR_MEM8 (0xC0) +/* UCSR0A */ +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + +#define UCSR0B _SFR_MEM8 (0xC1) +/* UCSR0B */ +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + +#define UCSR0C _SFR_MEM8 (0xC2) +/* UCSR0C */ +#define UMSEL01 7 +#define UMSEL00 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UDORD0 2 +#define UCSZ00 1 +#define UCPHA0 1 +#define UCPOL0 0 + +#define UBRR0 _SFR_MEM16 (0xC4) +#define UBRR0L _SFR_MEM8 (0xC4) +#define UBRR0H _SFR_MEM8 (0xC5) +#define UDR0 _SFR_MEM8 (0xC6) + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(3) +#define SIG_PIN_CHANGE0 _VECTOR(3) + +/* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(4) +#define SIG_PIN_CHANGE1 _VECTOR(4) + +/* Pin Change Interrupt Request 1 */ +#define PCINT2_vect _VECTOR(5) +#define SIG_PIN_CHANGE2 _VECTOR(5) + +/* Watchdog Time-out Interrupt */ +#define WDT_vect _VECTOR(6) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(6) + +/* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPA_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE2A _VECTOR(7) + +/* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPB_vect _VECTOR(8) +#define SIG_OUTPUT_COMPARE2B _VECTOR(8) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(9) +#define SIG_OVERFLOW2 _VECTOR(9) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(10) +#define SIG_INPUT_CAPTURE1 _VECTOR(10) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(11) +#define SIG_OUTPUT_COMPARE1A _VECTOR(11) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1B _VECTOR(12) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(13) +#define SIG_OVERFLOW1 _VECTOR(13) + +/* TimerCounter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE0A _VECTOR(14) + +/* TimerCounter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(15) +#define SIG_OUTPUT_COMPARE0B _VECTOR(15) + +/* Timer/Couner0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(16) +#define SIG_OVERFLOW0 _VECTOR(16) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(17) +#define SIG_SPI _VECTOR(17) + +/* USART Rx Complete */ +#define USART_RX_vect _VECTOR(18) +#define SIG_USART_RECV _VECTOR(18) + +/* USART, Data Register Empty */ +#define USART_UDRE_vect _VECTOR(19) +#define SIG_USART_DATA _VECTOR(19) + +/* USART Tx Complete */ +#define USART_TX_vect _VECTOR(20) +#define SIG_USART_TRANS _VECTOR(20) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(21) +#define SIG_ADC _VECTOR(21) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(22) +#define SIG_EEPROM_READY _VECTOR(22) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(23) +#define SIG_COMPARATOR _VECTOR(23) + +/* Two-wire Serial Interface */ +#define TWI_vect _VECTOR(24) +#define SIG_TWI _VECTOR(24) +#define SIG_2WIRE_SERIAL _VECTOR(24) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(25) +#define SIG_SPM_READY _VECTOR(25) + +/* The mega48 and mega88 vector tables are single instruction entries (16 bits + per entry for an RJMP) while the mega168 table has double instruction + entries (32 bits per entry for a JMP). */ + +#if defined (__AVR_ATmega168__) +# define _VECTORS_SIZE 104 +#else +# define _VECTORS_SIZE 52 +#endif + +#endif /* _AVR_IOM8_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxx0_1.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxx0_1.h new file mode 100644 index 0000000..c1e7d4d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxx0_1.h @@ -0,0 +1,1553 @@ +/* Copyright (c) 2005 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iomxx0_1.h,v 1.12 2007/12/12 14:00:49 arcanum Exp $ */ + +/* avr/iomxx0_1.h - definitions for ATmega640, Atmega1280, ATmega1281, + ATmega2560 and ATmega2561. */ + +#ifndef _AVR_IOMXX0_1_H_ +#define _AVR_IOMXX0_1_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iomxx0_1.h" +#else +# error "Attempt to include more than one file." +#endif + +#if defined(__AVR_ATmega640__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +# define __ATmegaxx0__ +#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) +# define __ATmegaxx1__ +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0X00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0X01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0X02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0X03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +#define PING _SFR_IO8(0x12) +#define PING5 5 +#define PING4 4 +#define PING3 3 +#define PING2 2 +#define PING1 1 +#define PING0 0 + +#define DDRG _SFR_IO8(0x13) +#define DDG5 5 +#define DDG4 4 +#define DDG3 3 +#define DDG2 2 +#define DDG1 1 +#define DDG0 0 + +#define PORTG _SFR_IO8(0x14) +#define PG5 5 +#define PG4 4 +#define PG3 3 +#define PG2 2 +#define PG1 1 +#define PG0 0 + +#define TIFR0 _SFR_IO8(0x15) +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIFR1 _SFR_IO8(0x16) +#define ICF1 5 +#define OCF1C 3 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +#define TIFR2 _SFR_IO8(0x17) +#define OCF2B 2 +#define OCF2A 1 +#define TOV2 0 + +#define TIFR3 _SFR_IO8(0x18) +#define ICF3 5 +#define OCF3C 3 +#define OCF3B 2 +#define OCF3A 1 +#define TOV3 0 + +#define TIFR4 _SFR_IO8(0x19) +#define ICF4 5 +#define OCF4C 3 +#define OCF4B 2 +#define OCF4A 1 +#define TOV4 0 + +#define TIFR5 _SFR_IO8(0x1A) +#define ICF5 5 +#define OCF5C 3 +#define OCF5B 2 +#define OCF5A 1 +#define TOV5 0 + +#define PCIFR _SFR_IO8(0x1B) +#if defined(__ATmegaxx0__) +# define PCIF2 2 +#endif /* __ATmegaxx0__ */ +#define PCIF1 1 +#define PCIF0 0 + +#define EIFR _SFR_IO8(0x1C) +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +#define EIMSK _SFR_IO8(0x1D) +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSRASY 1 +#define PSRSYNC 0 + +#define TCCR0A _SFR_IO8(0x24) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define TCCR0B _SFR_IO8(0x25) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +#define OCR0B _SFR_IO8(0X28) + +/* Reserved [0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +#define SPSR _SFR_IO8(0x2D) +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +#define SPDR _SFR_IO8(0X2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +#define MONDR _SFR_IO8(0x31) +#define OCDR _SFR_IO8(0x31) +#define IDRD 7 +#define OCDR7 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +#define MCUSR _SFR_IO8(0x34) +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0X35) +#define JTD 7 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMIE 7 +#define RWWSB 6 +#define SIGRD 5 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Reserved [0x38..0x3A] */ + +#define RAMPZ _SFR_IO8(0X3B) +#define RAMPZ0 0 + +#define EIND _SFR_IO8(0X3C) +#define EIND0 0 + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCSR _SFR_MEM8(0x60) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +/* Reserved [0x62..0x63] */ + +#define PRR0 _SFR_MEM8(0x64) +#define PRTWI 7 +#define PRTIM2 6 +#define PRTIM0 5 +#define PRTIM1 3 +#define PRSPI 2 +#define PRUSART0 1 +#define PRADC 0 + +#define PRR1 _SFR_MEM8(0x65) +#define PRTIM5 5 +#define PRTIM4 4 +#define PRTIM3 3 +#define PRUSART3 2 +#define PRUSART2 1 +#define PRUSART1 0 + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67] */ + +#define PCICR _SFR_MEM8(0x68) +#if defined(__ATmegaxx0__) +# define PCIE2 2 +#endif /* __ATmegaxx0__ */ +#define PCIE1 1 +#define PCIE0 0 + +#define EICRA _SFR_MEM8(0x69) +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +#define EICRB _SFR_MEM8(0x6A) +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +#if defined(__ATmegaxx0__) +# define PCMSK2 _SFR_MEM8(0x6D) +# define PCINT23 7 +# define PCINT22 6 +# define PCINT21 5 +# define PCINT20 4 +# define PCINT19 3 +# define PCINT18 2 +# define PCINT17 1 +# define PCINT16 0 +#endif /* __ATmegaxx0__ */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define ICIE1 5 +#define OCIE1C 3 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +#define TIMSK2 _SFR_MEM8(0x70) +#define OCIE2B 2 +#define OCIE2A 1 +#define TOIE2 0 + +#define TIMSK3 _SFR_MEM8(0x71) +#define ICIE3 5 +#define OCIE3C 3 +#define OCIE3B 2 +#define OCIE3A 1 +#define TOIE3 0 + +#define TIMSK4 _SFR_MEM8(0x72) +#define ICIE4 5 +#define OCIE4C 3 +#define OCIE4B 2 +#define OCIE4A 1 +#define TOIE4 0 + +#define TIMSK5 _SFR_MEM8(0x73) +#define ICIE5 5 +#define OCIE5C 3 +#define OCIE5B 2 +#define OCIE5A 1 +#define TOIE5 0 + +#define XMCRA _SFR_MEM8(0x74) +#define SRE 7 +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW11 3 +#define SRW10 2 +#define SRW01 1 +#define SRW00 0 + +#define XMCRB _SFR_MEM8(0x75) +#define XMBK 7 +#define XMM2 2 +#define XMM1 1 +#define XMM0 0 + +/* Reserved [0x76..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ACME 6 +#if defined(__ATmegaxx0__) +# define MUX5 3 +#endif /* __ATmegaxx0__ */ +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +#define ADMUX _SFR_MEM8(0x7C) +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +#define DIDR2 _SFR_MEM8(0x7D) +#define ADC15D 7 +#define ADC14D 6 +#define ADC13D 5 +#define ADC12D 4 +#define ADC11D 3 +#define ADC10D 2 +#define ADC9D 1 +#define ADC8D 0 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN1D 1 +#define AIN0D 0 + +#define TCCR1A _SFR_MEM8(0x80) +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define COM1C1 3 +#define COM1C0 2 +#define WGM11 1 +#define WGM10 0 + +#define TCCR1B _SFR_MEM8(0x81) +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1A 7 +#define FOC1B 6 +#define FOC1C 5 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Combine OCR1CL and OCR1CH */ +#define OCR1C _SFR_MEM16(0x8C) + +#define OCR1CL _SFR_MEM8(0x8C) +#define OCR1CH _SFR_MEM8(0x8D) + +/* Reserved [0x8E..0x8F] */ + +#define TCCR3A _SFR_MEM8(0x90) +#define COM3A1 7 +#define COM3A0 6 +#define COM3B1 5 +#define COM3B0 4 +#define COM3C1 3 +#define COM3C0 2 +#define WGM31 1 +#define WGM30 0 + +#define TCCR3B _SFR_MEM8(0x91) +#define ICNC3 7 +#define ICES3 6 +#define WGM33 4 +#define WGM32 3 +#define CS32 2 +#define CS31 1 +#define CS30 0 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3A 7 +#define FOC3B 6 +#define FOC3C 5 + +/* Reserved [0x93] */ + +/* Combine TCNT3L and TCNT3H */ +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3H _SFR_MEM8(0x95) + +/* Combine ICR3L and ICR3H */ +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3H _SFR_MEM8(0x97) + +/* Combine OCR3AL and OCR3AH */ +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AH _SFR_MEM8(0x99) + +/* Combine OCR3BL and OCR3BH */ +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3BH _SFR_MEM8(0x9B) + +/* Combine OCR3CL and OCR3CH */ +#define OCR3C _SFR_MEM16(0x9C) + +#define OCR3CL _SFR_MEM8(0x9C) +#define OCR3CH _SFR_MEM8(0x9D) + +/* Reserved [0x9E..0x9F] */ + +#define TCCR4A _SFR_MEM8(0xA0) +#define COM4A1 7 +#define COM4A0 6 +#define COM4B1 5 +#define COM4B0 4 +#define COM4C1 3 +#define COM4C0 2 +#define WGM41 1 +#define WGM40 0 + +#define TCCR4B _SFR_MEM8(0xA1) +#define ICNC4 7 +#define ICES4 6 +#define WGM43 4 +#define WGM42 3 +#define CS42 2 +#define CS41 1 +#define CS40 0 + +#define TCCR4C _SFR_MEM8(0xA2) +#define FOC4A 7 +#define FOC4B 6 +#define FOC4C 5 + +/* Reserved [0xA3] */ + +/* Combine TCNT4L and TCNT4H */ +#define TCNT4 _SFR_MEM16(0xA4) + +#define TCNT4L _SFR_MEM8(0xA4) +#define TCNT4H _SFR_MEM8(0xA5) + +/* Combine ICR4L and ICR4H */ +#define ICR4 _SFR_MEM16(0xA6) + +#define ICR4L _SFR_MEM8(0xA6) +#define ICR4H _SFR_MEM8(0xA7) + +/* Combine OCR4AL and OCR4AH */ +#define OCR4A _SFR_MEM16(0xA8) + +#define OCR4AL _SFR_MEM8(0xA8) +#define OCR4AH _SFR_MEM8(0xA9) + +/* Combine OCR4BL and OCR4BH */ +#define OCR4B _SFR_MEM16(0xAA) + +#define OCR4BL _SFR_MEM8(0xAA) +#define OCR4BH _SFR_MEM8(0xAB) + +/* Combine OCR4CL and OCR4CH */ +#define OCR4C _SFR_MEM16(0xAC) + +#define OCR4CL _SFR_MEM8(0xAC) +#define OCR4CH _SFR_MEM8(0xAD) + +/* Reserved [0xAE..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define COM2A1 7 +#define COM2A0 6 +#define COM2B1 5 +#define COM2B0 4 +#define WGM21 1 +#define WGM20 0 + +#define TCCR2B _SFR_MEM8(0xB1) +#define FOC2A 7 +#define FOC2B 6 +#define WGM22 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +#define OCR2B _SFR_MEM8(0xB4) + +/* Reserved [0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define EXCLK 6 +#define AS2 5 +#define TCN2UB 4 +#define OCR2AUB 3 +#define OCR2BUB 2 +#define TCR2AUB 1 +#define TCR2BUB 0 + +/* Reserved [0xB7] */ + +#define TWBR _SFR_MEM8(0xB8) + +#define TWSR _SFR_MEM8(0xB9) +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +#define TWAR _SFR_MEM8(0xBA) +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +#define TWDR _SFR_MEM8(0xBB) + +#define TWCR _SFR_MEM8(0xBC) +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM6 7 +#define TWAM5 6 +#define TWAM4 5 +#define TWAM3 4 +#define TWAM2 3 +#define TWAM1 2 +#define TWAM0 1 + +/* Reserved [0xBE..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + +#define UCSR0B _SFR_MEM8(0XC1) +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UMSEL01 7 +#define UMSEL00 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPOL0 0 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +/* Reserved [0xC7] */ + +#define UCSR1A _SFR_MEM8(0xC8) +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + +#define UCSR1B _SFR_MEM8(0XC9) +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UMSEL11 7 +#define UMSEL10 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 + +/* Reserved [0xCB] */ + +/* Combine UBRR1L and UBRR1H */ +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1H _SFR_MEM8(0xCD) + +#define UDR1 _SFR_MEM8(0XCE) + +/* Reserved [0xCF] */ + +#if defined(__ATmegaxx0__) + +# define UCSR2A _SFR_MEM8(0xD0) +# define RXC2 7 +# define TXC2 6 +# define UDRE2 5 +# define FE2 4 +# define DOR2 3 +# define UPE2 2 +# define U2X2 1 +# define MPCM2 0 + +# define UCSR2B _SFR_MEM8(0XD1) +# define RXCIE2 7 +# define TXCIE2 6 +# define UDRIE2 5 +# define RXEN2 4 +# define TXEN2 3 +# define UCSZ22 2 +# define RXB82 1 +# define TXB82 0 + +# define UCSR2C _SFR_MEM8(0xD2) +# define UMSEL21 7 +# define UMSEL20 6 +# define UPM21 5 +# define UPM20 4 +# define USBS2 3 +# define UCSZ21 2 +# define UCSZ20 1 +# define UCPOL2 0 + +/* Reserved [0xD3] */ + +/* Combine UBRR2L and UBRR2H */ +# define UBRR2 _SFR_MEM16(0xD4) + +# define UBRR2L _SFR_MEM8(0xD4) +# define UBRR2H _SFR_MEM8(0xD5) + +# define UDR2 _SFR_MEM8(0XD6) + +#endif /* __ATmegaxx0__ */ + +/* Reserved [0xD7..0xFF] */ + +#if defined(__ATmegaxx0__) + +# define PINH _SFR_MEM8(0x100) +# define PINH7 7 +# define PINH6 6 +# define PINH5 5 +# define PINH4 4 +# define PINH3 3 +# define PINH2 2 +# define PINH1 1 +# define PINH0 0 + +# define DDRH _SFR_MEM8(0x101) +# define DDH7 7 +# define DDH6 6 +# define DDH5 5 +# define DDH4 4 +# define DDH3 3 +# define DDH2 2 +# define DDH1 1 +# define DDH0 0 + +# define PORTH _SFR_MEM8(0x102) +# define PH7 7 +# define PH6 6 +# define PH5 5 +# define PH4 4 +# define PH3 3 +# define PH2 2 +# define PH1 1 +# define PH0 0 + +# define PINJ _SFR_MEM8(0x103) +# define PINJ7 7 +# define PINJ6 6 +# define PINJ5 5 +# define PINJ4 4 +# define PINJ3 3 +# define PINJ2 2 +# define PINJ1 1 +# define PINJ0 0 + +# define DDRJ _SFR_MEM8(0x104) +# define DDJ7 7 +# define DDJ6 6 +# define DDJ5 5 +# define DDJ4 4 +# define DDJ3 3 +# define DDJ2 2 +# define DDJ1 1 +# define DDJ0 0 + +# define PORTJ _SFR_MEM8(0x105) +# define PJ7 7 +# define PJ6 6 +# define PJ5 5 +# define PJ4 4 +# define PJ3 3 +# define PJ2 2 +# define PJ1 1 +# define PJ0 0 + +# define PINK _SFR_MEM8(0x106) +# define PINK7 7 +# define PINK6 6 +# define PINK5 5 +# define PINK4 4 +# define PINK3 3 +# define PINK2 2 +# define PINK1 1 +# define PINK0 0 + +# define DDRK _SFR_MEM8(0x107) +# define DDK7 7 +# define DDK6 6 +# define DDK5 5 +# define DDK4 4 +# define DDK3 3 +# define DDK2 2 +# define DDK1 1 +# define DDK0 0 + +# define PORTK _SFR_MEM8(0x108) +# define PK7 7 +# define PK6 6 +# define PK5 5 +# define PK4 4 +# define PK3 3 +# define PK2 2 +# define PK1 1 +# define PK0 0 + +# define PINL _SFR_MEM8(0x109) +# define PINL7 7 +# define PINL6 6 +# define PINL5 5 +# define PINL4 4 +# define PINL3 3 +# define PINL2 2 +# define PINL1 1 +# define PINL0 0 + +# define DDRL _SFR_MEM8(0x10A) +# define DDL7 7 +# define DDL6 6 +# define DDL5 5 +# define DDL4 4 +# define DDL3 3 +# define DDL2 2 +# define DDL1 1 +# define DDL0 0 + +# define PORTL _SFR_MEM8(0x10B) +# define PL7 7 +# define PL6 6 +# define PL5 5 +# define PL4 4 +# define PL3 3 +# define PL2 2 +# define PL1 1 +# define PL0 0 + +#endif /* __ATmegaxx0__ */ + +/* Reserved [0x10C..0x11F] */ + +#define TCCR5A _SFR_MEM8(0x120) +#define COM5A1 7 +#define COM5A0 6 +#define COM5B1 5 +#define COM5B0 4 +#define COM5C1 3 +#define COM5C0 2 +#define WGM51 1 +#define WGM50 0 + +#define TCCR5B _SFR_MEM8(0x121) +#define ICNC5 7 +#define ICES5 6 +#define WGM53 4 +#define WGM52 3 +#define CS52 2 +#define CS51 1 +#define CS50 0 + +#define TCCR5C _SFR_MEM8(0x122) +#define FOC5A 7 +#define FOC5B 6 +#define FOC5C 5 + +/* Reserved [0x123] */ + +/* Combine TCNT5L and TCNT5H */ +#define TCNT5 _SFR_MEM16(0x124) + +#define TCNT5L _SFR_MEM8(0x124) +#define TCNT5H _SFR_MEM8(0x125) + +/* Combine ICR5L and ICR5H */ +#define ICR5 _SFR_MEM16(0x126) + +#define ICR5L _SFR_MEM8(0x126) +#define ICR5H _SFR_MEM8(0x127) + +/* Combine OCR5AL and OCR5AH */ +#define OCR5A _SFR_MEM16(0x128) + +#define OCR5AL _SFR_MEM8(0x128) +#define OCR5AH _SFR_MEM8(0x129) + +/* Combine OCR5BL and OCR5BH */ +#define OCR5B _SFR_MEM16(0x12A) + +#define OCR5BL _SFR_MEM8(0x12A) +#define OCR5BH _SFR_MEM8(0x12B) + +/* Combine OCR5CL and OCR5CH */ +#define OCR5C _SFR_MEM16(0x12C) + +#define OCR5CL _SFR_MEM8(0x12C) +#define OCR5CH _SFR_MEM8(0x12D) + +/* Reserved [0x12E..0x12F] */ + +#if defined(__ATmegaxx0__) + +# define UCSR3A _SFR_MEM8(0x130) +# define RXC3 7 +# define TXC3 6 +# define UDRE3 5 +# define FE3 4 +# define DOR3 3 +# define UPE3 2 +# define U2X3 1 +# define MPCM3 0 + +# define UCSR3B _SFR_MEM8(0X131) +# define RXCIE3 7 +# define TXCIE3 6 +# define UDRIE3 5 +# define RXEN3 4 +# define TXEN3 3 +# define UCSZ32 2 +# define RXB83 1 +# define TXB83 0 + +# define UCSR3C _SFR_MEM8(0x132) +# define UMSEL31 7 +# define UMSEL30 6 +# define UPM31 5 +# define UPM30 4 +# define USBS3 3 +# define UCSZ31 2 +# define UCSZ30 1 +# define UCPOL3 0 + +/* Reserved [0x133] */ + +/* Combine UBRR3L and UBRR3H */ +# define UBRR3 _SFR_MEM16(0x134) + +# define UBRR3L _SFR_MEM8(0x134) +# define UBRR3H _SFR_MEM8(0x135) + +# define UDR3 _SFR_MEM8(0X136) + +#endif /* __ATmegaxx0__ */ + +/* Reserved [0x137..1FF] */ + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(4) +#define SIG_INTERRUPT3 _VECTOR(4) + +/* External Interrupt Request 4 */ +#define INT4_vect _VECTOR(5) +#define SIG_INTERRUPT4 _VECTOR(5) + +/* External Interrupt Request 5 */ +#define INT5_vect _VECTOR(6) +#define SIG_INTERRUPT5 _VECTOR(6) + +/* External Interrupt Request 6 */ +#define INT6_vect _VECTOR(7) +#define SIG_INTERRUPT6 _VECTOR(7) + +/* External Interrupt Request 7 */ +#define INT7_vect _VECTOR(8) +#define SIG_INTERRUPT7 _VECTOR(8) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(9) +#define SIG_PIN_CHANGE0 _VECTOR(9) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(10) +#define SIG_PIN_CHANGE1 _VECTOR(10) + +#if defined(__ATmegaxx0__) +/* Pin Change Interrupt Request 2 */ +#define PCINT2_vect _VECTOR(11) +#define SIG_PIN_CHANGE2 _VECTOR(11) + +#endif /* __ATmegaxx0__ */ + +/* Watchdog Time-out Interrupt */ +#define WDT_vect _VECTOR(12) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(12) + +/* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPA_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE2A _VECTOR(13) + +/* Timer/Counter2 Compare Match B */ +#define TIMER2_COMPB_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE2B _VECTOR(14) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(15) +#define SIG_OVERFLOW2 _VECTOR(15) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(16) +#define SIG_INPUT_CAPTURE1 _VECTOR(16) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(17) +#define SIG_OUTPUT_COMPARE1A _VECTOR(17) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(18) +#define SIG_OUTPUT_COMPARE1B _VECTOR(18) + +/* Timer/Counter1 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(19) +#define SIG_OUTPUT_COMPARE1C _VECTOR(19) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(20) +#define SIG_OVERFLOW1 _VECTOR(20) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(21) +#define SIG_OUTPUT_COMPARE0A _VECTOR(21) + +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(22) +#define SIG_OUTPUT_COMPARE0B _VECTOR(22) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(23) +#define SIG_OVERFLOW0 _VECTOR(23) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(24) +#define SIG_SPI _VECTOR(24) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(25) +#define SIG_USART0_RECV _VECTOR(25) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(26) +#define SIG_USART0_DATA _VECTOR(26) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(27) +#define SIG_USART0_TRANS _VECTOR(27) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(28) +#define SIG_COMPARATOR _VECTOR(28) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(29) +#define SIG_ADC _VECTOR(29) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(30) +#define SIG_EEPROM_READY _VECTOR(30) + +/* Timer/Counter3 Capture Event */ +#define TIMER3_CAPT_vect _VECTOR(31) +#define SIG_INPUT_CAPTURE3 _VECTOR(31) + +/* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPA_vect _VECTOR(32) +#define SIG_OUTPUT_COMPARE3A _VECTOR(32) + +/* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPB_vect _VECTOR(33) +#define SIG_OUTPUT_COMPARE3B _VECTOR(33) + +/* Timer/Counter3 Compare Match C */ +#define TIMER3_COMPC_vect _VECTOR(34) +#define SIG_OUTPUT_COMPARE3C _VECTOR(34) + +/* Timer/Counter3 Overflow */ +#define TIMER3_OVF_vect _VECTOR(35) +#define SIG_OVERFLOW3 _VECTOR(35) + +/* USART1, Rx Complete */ +#define USART1_RX_vect _VECTOR(36) +#define SIG_USART1_RECV _VECTOR(36) + +/* USART1 Data register Empty */ +#define USART1_UDRE_vect _VECTOR(37) +#define SIG_USART1_DATA _VECTOR(37) + +/* USART1, Tx Complete */ +#define USART1_TX_vect _VECTOR(38) +#define SIG_USART1_TRANS _VECTOR(38) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(39) +#define SIG_2WIRE_SERIAL _VECTOR(39) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(40) +#define SIG_SPM_READY _VECTOR(40) + +#if defined(__ATmegaxx0__) +/* Timer/Counter4 Capture Event */ +#define TIMER4_CAPT_vect _VECTOR(41) +#define SIG_INPUT_CAPTURE4 _VECTOR(41) + +#endif /* __ATmegaxx0__ */ + +/* Timer/Counter4 Compare Match A */ +#define TIMER4_COMPA_vect _VECTOR(42) +#define SIG_OUTPUT_COMPARE4A _VECTOR(42) + +/* Timer/Counter4 Compare Match B */ +#define TIMER4_COMPB_vect _VECTOR(43) +#define SIG_OUTPUT_COMPARE4B _VECTOR(43) + +/* Timer/Counter4 Compare Match C */ +#define TIMER4_COMPC_vect _VECTOR(44) +#define SIG_OUTPUT_COMPARE4C _VECTOR(44) + +/* Timer/Counter4 Overflow */ +#define TIMER4_OVF_vect _VECTOR(45) +#define SIG_OVERFLOW4 _VECTOR(45) + +#if defined(__ATmegaxx0__) +/* Timer/Counter5 Capture Event */ +#define TIMER5_CAPT_vect _VECTOR(46) +#define SIG_INPUT_CAPTURE5 _VECTOR(46) + +#endif /* __ATmegaxx0__ */ + +/* Timer/Counter5 Compare Match A */ +#define TIMER5_COMPA_vect _VECTOR(47) +#define SIG_OUTPUT_COMPARE5A _VECTOR(47) + +/* Timer/Counter5 Compare Match B */ +#define TIMER5_COMPB_vect _VECTOR(48) +#define SIG_OUTPUT_COMPARE5B _VECTOR(48) + +/* Timer/Counter5 Compare Match C */ +#define TIMER5_COMPC_vect _VECTOR(49) +#define SIG_OUTPUT_COMPARE5C _VECTOR(49) + +/* Timer/Counter5 Overflow */ +#define TIMER5_OVF_vect _VECTOR(50) +#define SIG_OVERFLOW5 _VECTOR(50) + +#if defined(__ATmegaxx1__) + +# define _VECTORS_SIZE 204 + +#else + +/* USART2, Rx Complete */ +#define USART2_RX_vect _VECTOR(51) +#define SIG_USART2_RECV _VECTOR(51) + +/* USART2 Data register Empty */ +#define USART2_UDRE_vect _VECTOR(52) +#define SIG_USART2_DATA _VECTOR(52) + +/* USART2, Tx Complete */ +#define USART2_TX_vect _VECTOR(53) +#define SIG_USART2_TRANS _VECTOR(53) + +/* USART3, Rx Complete */ +#define USART3_RX_vect _VECTOR(54) +#define SIG_USART3_RECV _VECTOR(54) + +/* USART3 Data register Empty */ +#define USART3_UDRE_vect _VECTOR(55) +#define SIG_USART3_DATA _VECTOR(55) + +/* USART3, Tx Complete */ +#define USART3_TX_vect _VECTOR(56) +#define SIG_USART3_TRANS _VECTOR(56) + +# define _VECTORS_SIZE 228 + +#endif /* __ATmegaxx1__ */ + +#if defined(__ATmegaxx0__) +# undef __ATmegaxx0__ +#endif + +#if defined(__ATmegaxx1__) +# undef __ATmegaxx1__ +#endif + +#endif /* _AVR_IOMXX0_1_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxx4.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxx4.h new file mode 100644 index 0000000..26a3964 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxx4.h @@ -0,0 +1,867 @@ +/* Copyright (c) 2005, 2006, 2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/iomXX4.h - definitions for ATmega164P/324P/644P and ATmega644 */ + +/* $Id: iomxx4.h,v 1.13.2.4 2008/08/10 17:02:46 arcanum Exp $ */ + +#ifndef _AVR_IOMXX4_H_ +#define _AVR_IOMXX4_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom164.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0X00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0X01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0X02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0X03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Reserved [0x0C..0x14] */ + +#define TIFR0 _SFR_IO8(0x15) +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIFR1 _SFR_IO8(0x16) +#define ICF1 5 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +#define TIFR2 _SFR_IO8(0x17) +#define OCF2B 2 +#define OCF2A 1 +#define TOV2 0 + +/* Reserved [0x18..0x1A] */ + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF3 3 +#define PCIF2 2 +#define PCIF1 1 +#define PCIF0 0 + +#define EIFR _SFR_IO8(0x1C) +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +#define EIMSK _SFR_IO8(0x1D) +#define INT2 2 +#define INT1 1 +#define INT0 0 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +/* EECR - EEPROM Control Register */ +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0X20) + +/* Combine EEARL and EEARH */ +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0X22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSRASY 1 +#define PSRSYNC 0 + +#define TCCR0A _SFR_IO8(0x24) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define TCCR0B _SFR_IO8(0x25) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0X27) + +#define OCR0B _SFR_IO8(0X28) + +/* Reserved [0x29] */ + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +#define SPSR _SFR_IO8(0x2D) +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +#define SPDR _SFR_IO8(0x2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +#define MONDR _SFR_IO8(0x31) +#define OCDR _SFR_IO8(0x31) +#define IDRD 7 +#define OCDR7 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +#define MCUSR _SFR_IO8(0x34) +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0X35) +#define JTD 7 +#define BODS 6 +#define BODSE 5 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMIE 7 +#define RWWSB 6 +#define SIGRD 5 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCSR _SFR_MEM8(0x60) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +/* Reserved [0x62..0x63] */ + +#define PRR _SFR_MEM8(0x64) /* Datasheets: ATmega164P/324P/644P 8011D–AVR–02/07 + and ATmega644 2593L–AVR–02/07. */ +#define PRR0 _SFR_MEM8(0x64) /* AVR Studio 4.13, build 524. */ +#define PRTWI 7 +#define PRTIM2 6 +#define PRTIM0 5 +#if !defined(__AVR_ATmega644__) +# define PRUSART1 4 +#endif +#define PRTIM1 3 +#define PRSPI 2 +#define PRUSART0 1 +#define PRADC 0 + +/* Reserved [0x65] */ + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67] */ + +#define PCICR _SFR_MEM8(0x68) +#define PCIE3 3 +#define PCIE2 2 +#define PCIE1 1 +#define PCIE0 0 + +#define EICRA _SFR_MEM8(0x69) +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Reserved [0x6A] */ + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT15 7 +#define PCINT14 6 +#define PCINT13 5 +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT23 7 +#define PCINT22 6 +#define PCINT21 5 +#define PCINT20 4 +#define PCINT19 3 +#define PCINT18 2 +#define PCINT17 1 +#define PCINT16 0 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define ICIE1 5 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +#define TIMSK2 _SFR_MEM8(0x70) +#define OCIE2B 2 +#define OCIE2A 1 +#define TOIE2 0 + +/* Reserved [0x71..0x72] */ + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT31 7 +#define PCINT30 6 +#define PCINT29 5 +#define PCINT28 4 +#define PCINT27 3 +#define PCINT26 2 +#define PCINT25 1 +#define PCINT24 0 + +/* Reserved [0x74..0x77] */ + +/* Combine ADCL and ADCH */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ACME 6 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +#define ADMUX _SFR_MEM8(0x7C) +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN1D 1 +#define AIN0D 0 + +#define TCCR1A _SFR_MEM8(0x80) +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define WGM11 1 +#define WGM10 0 + +#define TCCR1B _SFR_MEM8(0x81) +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1A 7 +#define FOC1B 6 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Reserved [0x8C..0xAF] */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define COM2A1 7 +#define COM2A0 6 +#define COM2B1 5 +#define COM2B0 4 +#define WGM21 1 +#define WGM20 0 + +#define TCCR2B _SFR_MEM8(0xB1) +#define FOC2A 7 +#define FOC2B 6 +#define WGM22 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +#define OCR2B _SFR_MEM8(0xB4) + +/* Reserved [0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define EXCLK 6 +#define AS2 5 +#define TCN2UB 4 +#define OCR2AUB 3 +#define OCR2BUB 2 +#define TCR2AUB 1 +#define TCR2BUB 0 + +/* Reserved [0xB7] */ + +#define TWBR _SFR_MEM8(0xB8) + +#define TWSR _SFR_MEM8(0xB9) +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +#define TWAR _SFR_MEM8(0xBA) +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +#define TWDR _SFR_MEM8(0xBB) + +#define TWCR _SFR_MEM8(0xBC) +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM6 7 +#define TWAM5 6 +#define TWAM4 5 +#define TWAM3 4 +#define TWAM2 3 +#define TWAM1 2 +#define TWAM0 1 + +/* Reserved [0xBE..0xBF] */ + +#define UCSR0A _SFR_MEM8(0xC0) +#define RXC0 7 +#define TXC0 6 +#define UDRE0 5 +#define FE0 4 +#define DOR0 3 +#define UPE0 2 +#define U2X0 1 +#define MPCM0 0 + +#define UCSR0B _SFR_MEM8(0XC1) +#define RXCIE0 7 +#define TXCIE0 6 +#define UDRIE0 5 +#define RXEN0 4 +#define TXEN0 3 +#define UCSZ02 2 +#define RXB80 1 +#define TXB80 0 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UMSEL01 7 +#define UMSEL00 6 +#define UPM01 5 +#define UPM00 4 +#define USBS0 3 +#define UCSZ01 2 +#define UCSZ00 1 +#define UCPHA0 1 +#define UCPOL0 0 + +/* Reserved [0xC3] */ + +/* Combine UBRR0L and UBRR0H */ +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0H _SFR_MEM8(0xC5) + +#define UDR0 _SFR_MEM8(0XC6) + +#if !defined(__AVR_ATmega644__) +/* + * Only ATmega164P/324P/644P have a second USART. + */ +/* Reserved [0xC7] */ + +#define UCSR1A _SFR_MEM8(0xC8) +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + +#define UCSR1B _SFR_MEM8(0XC9) +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UMSEL11 7 +#define UMSEL10 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPHA1 1 +#define UCPOL1 0 + +/* Reserved [0xCB] */ + +/* Combine UBRR1L and UBRR1H */ +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1H _SFR_MEM8(0xCD) + +#define UDR1 _SFR_MEM8(0XCE) +#endif /* !defined(__AVR_ATmega644) */ + +/* Reserved [0xCF..0xFF] */ + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) +#define SIG_INTERRUPT2 _VECTOR(3) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(4) +#define SIG_PIN_CHANGE0 _VECTOR(4) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(5) +#define SIG_PIN_CHANGE1 _VECTOR(5) + +/* Pin Change Interrupt Request 2 */ +#define PCINT2_vect _VECTOR(6) +#define SIG_PIN_CHANGE2 _VECTOR(6) + +/* Pin Change Interrupt Request 3 */ +#define PCINT3_vect _VECTOR(7) +#define SIG_PIN_CHANGE3 _VECTOR(7) + +/* Watchdog Time-out Interrupt */ +#define WDT_vect _VECTOR(8) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(8) + +/* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPA_vect _VECTOR(9) +#define SIG_OUTPUT_COMPARE2A _VECTOR(9) + +/* Timer/Counter2 Compare Match B */ +#define TIMER2_COMPB_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE2B _VECTOR(10) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW2 _VECTOR(11) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(12) +#define SIG_INPUT_CAPTURE1 _VECTOR(12) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE1A _VECTOR(13) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE1B _VECTOR(14) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(15) +#define SIG_OVERFLOW1 _VECTOR(15) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(16) +#define SIG_OUTPUT_COMPARE0A _VECTOR(16) + +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(17) +#define SIG_OUTPUT_COMPARE0B _VECTOR(17) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(18) +#define SIG_OVERFLOW0 _VECTOR(18) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(19) +#define SIG_SPI _VECTOR(19) + +/* USART0, Rx Complete */ +#define USART0_RX_vect _VECTOR(20) +#define SIG_USART_RECV _VECTOR(20) + +/* USART0 Data register Empty */ +#define USART0_UDRE_vect _VECTOR(21) +#define SIG_USART_DATA _VECTOR(21) + +/* USART0, Tx Complete */ +#define USART0_TX_vect _VECTOR(22) +#define SIG_USART_TRANS _VECTOR(22) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(23) +#define SIG_COMPARATOR _VECTOR(23) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(24) +#define SIG_ADC _VECTOR(24) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(25) +#define SIG_EEPROM_READY _VECTOR(25) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(26) +#define SIG_2WIRE_SERIAL _VECTOR(26) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(27) +#define SIG_SPM_READY _VECTOR(27) + +#if defined(__AVR_ATmega644__) + +# define _VECTORS_SIZE 112 + +#else /* !defined(__AVR_ATmega644__) */ + +/* USART1, Rx Complete */ +/* USART1 RX complete */ +#define USART1_RX_vect _VECTOR(28) +#define SIG_USART1_RECV _VECTOR(28) + +/* USART1 Data register Empty */ +/* USART1 Data Register Empty */ +#define USART1_UDRE_vect _VECTOR(29) +#define SIG_USART1_DATA _VECTOR(29) + +/* USART1, Tx Complete */ +/* USART1 TX complete */ +#define USART1_TX_vect _VECTOR(30) +#define SIG_USART1_TRANS _VECTOR(30) + +# define _VECTORS_SIZE 124 + +#endif /* defined(__AVR_ATmega644__) */ + + +#endif /* _AVR_IOMXX4_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxxhva.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxxhva.h new file mode 100644 index 0000000..b965eb5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iomxxhva.h @@ -0,0 +1,523 @@ +/* Copyright (c) 2007, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iomxxhva.h,v 1.1 2007/05/13 20:21:05 aesok Exp $ */ + +/* iomxxhva.h - definitions for ATmega8HVA and ATmega16HVA. */ + +#ifndef _AVR_IOMXXHVA_H_ +#define _AVR_IOMXXHVA_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iomxxhva.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0X00) +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x01) +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x02) +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0X03) +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 + +/* Reserved [0x7] */ + +#define PORTC _SFR_IO8(0x08) +#define PC0 0 + +/* Reserved [0x9..0x14] */ + +#define TIFR0 _SFR_IO8(0x15) +#define ICF0 3 +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIFR1 _SFR_IO8(0x16) +#define ICF1 3 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +#define OSICSR _SFR_IO8(0x17) +#define OSISEL0 4 +#define OSIST 1 +#define OSIEN 0 + +/* Reserved [0x18..0x1B] */ + +#define EIFR _SFR_IO8(0x1C) +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +#define EIMSK _SFR_IO8(0x1D) +#define INT2 2 +#define INT1 1 +#define INT0 0 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0x20) + +#define EEAR _SFR_IO8(0x21) +#define EEARL _SFR_IO8(0x21) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +/* Reserved [0x22] */ + +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSRSYNC 0 + +#define TCCR0A _SFR_IO8(0x24) +#define TCW0 7 +#define ICEN0 6 +#define ICNC0 5 +#define ICES0 4 +#define ICS0 3 +#define WGM00 0 + +#define TCCR0B _SFR_IO8(0x25) +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define TCNT0 _SFR_IO16(0X26) +#define TCNT0L _SFR_IO8(0X26) +#define TCNT0H _SFR_IO8(0X27) + +#define OCR0A _SFR_IO8(0x28) + +#define OCR0B _SFR_IO8(0X29) + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +#define SPSR _SFR_IO8(0x2D) +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +#define SPDR _SFR_IO8(0x2E) + +/* Reserved [0x2F..0x30] */ + +#define DWDR _SFR_IO8(0x31) +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +#define MCUSR _SFR_IO8(0x34) +#define OCDRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0x35) +#define CKOE 5 +#define PUD 4 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SIGRD 5 +#define CTPB 4 +#define RFLB 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCSR _SFR_MEM8(0x60) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPCE 7 +#define CLKPS1 1 +#define CLKPS0 0 + +/* Reserved [0x62..0x63] */ + +#define PRR0 _SFR_MEM8(0x64) +#define PRVRM 5 +#define PRSPI 3 +#define PRTIM1 2 +#define PRTIM0 1 +#define PRVADC 0 + +/* Reserved [0x65] */ + +#define FOSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67..0x68] */ + +#define EICRA _SFR_MEM8(0x69) +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* Reserved [0x6A..0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define ICIE0 3 +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define ICIE1 3 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +/* Reserved [0x70..0x77] */ + +#define VADC _SFR_MEM16(0x78) +#define VADCL _SFR_MEM8(0x78) +#define VADCH _SFR_MEM8(0x79) + +#define VADCSR _SFR_MEM8(0x7A) +#define VADEN 3 +#define VADSC 2 +#define VADCCIF 1 +#define VADCCIE 0 + +/* Reserved [0x7B] */ + +#define VADMUX _SFR_MEM8(0x7C) +#define VADMUX3 3 +#define VADMUX2 2 +#define VADMUX1 1 +#define VADMUX0 0 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define PA1DID 1 +#define PA0DID 0 + +/* Reserved [0x7F] */ + +#define TCCR1A _SFR_MEM8(0x80) +#define TCW1 7 +#define ICEN1 6 +#define ICNC1 5 +#define ICES1 4 +#define ICS1 3 +#define WGM10 0 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* Reserved [0x82..0x83] */ + +#define TCNT1 _SFR_MEM16(0x84) +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Reserved [0x86..0x87] */ + +#define OCR1A _SFR_MEM8(0x88) + +#define OCR1B _SFR_MEM8(0x89) + +/* Reserved [0x8A..0xC7] */ + +#define ROCR _SFR_MEM8(0xC8) +#define ROCS 7 +#define ROCWIF 1 +#define ROCWIE 0 + +/* Reserved [0xC9..0xCF] */ + +#define BGCCR _SFR_MEM8(0xD0) +#define BGD 7 +#define BGCC5 5 +#define BGCC4 4 +#define BGCC3 3 +#define BGCC2 2 +#define BGCC1 1 +#define BGCC0 0 + +#define BGCRR _SFR_MEM8(0xD1) +#define BGCR7 7 +#define BGCR6 6 +#define BGCR5 5 +#define BGCR4 4 +#define BGCR3 3 +#define BGCR2 2 +#define BGCR1 1 +#define BGCR0 0 + +/* Reserved [0xD2..0xDF] */ + +/* CC-ADC Accumulate Current */ +/* TODO: Add _SFR_MEM32 */ +/* #define CADAC _SFR_MEM32(0xE0) */ +#define CADAC0 _SFR_MEM8(0xE0) +#define CADAC1 _SFR_MEM8(0xE1) +#define CADAC2 _SFR_MEM8(0xE2) +#define CADAC3 _SFR_MEM8(0xE3) + +#define CADCSRA _SFR_MEM8(0xE4) +#define CADEN 7 +#define CADPOL 6 +#define CADUB 5 +#define CADAS1 4 +#define CADAS0 3 +#define CADSI1 2 +#define CADSI0 1 +#define CADSE 0 + +#define CADCSRB _SFR_MEM8(0xE5) +#define CADACIE 6 +#define CADRCIE 5 +#define CADICIE 4 +#define CADACIF 2 +#define CADRCIF 1 +#define CADICIF 0 + +#define CADRC _SFR_MEM8(0xE6) + +/* Reserved [0xE7] */ + +#define CADIC _SFR_MEM16(0xE8) +#define CADICL _SFR_MEM8(0xE8) +#define CADICH _SFR_MEM8(0xE9) + +/* Reserved [0xEA..0xEF] */ + +#define FCSR _SFR_MEM8(0xF0) +#define DUVRD 3 +#define CPS 2 +#define DFE 1 +#define CFE 0 + +/* Reserved [0xF1] */ + +#define BPIMSK _SFR_MEM8(0xF2) +#define SCIE 4 +#define DOCIE 3 +#define COCIE 2 +#define DHCIE 1 +#define CHCIE 0 + +#define BPIFR _SFR_MEM8(0xF3) +#define SCIF 4 +#define DOCIF 3 +#define COCIF 2 +#define DHCIF 1 +#define CHCIF 0 + +/* Reserved [0xF4] */ + +#define BPSCD _SFR_MEM8(0xF5) + +#define BPDOCD _SFR_MEM8(0xF6) + +#define BPCOCD _SFR_MEM8(0xF7) + +#define BPDHCD _SFR_MEM8(0xF8) + +#define BPCHCD _SFR_MEM8(0xF9) + +#define BPSCTR _SFR_MEM8(0xFA) + +#define BPOCTR _SFR_MEM8(0xFB) + +#define BPHCTR _SFR_MEM8(0xFC) + +#define BPCR _SFR_MEM8(0xFD) +#define SCD 4 +#define DOCD 3 +#define COCD 2 +#define DHCD 1 +#define CHCD 0 + +#define BPPLR _SFR_MEM8(0xFE) +#define BPPLE 1 +#define BPPL 0 + +/* Reserved [0xFF] */ + +/* Interrupt vectors */ +/* Battery Protection Interrupt */ +#define BPINT_vect _VECTOR(1) + +/* Voltage Regulator Monitor Interrupt */ +#define VREGMON_vect _VECTOR(2) + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(3) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(4) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(5) + +/* Watchdog Timeout Interrupt */ +#define WDT_vect _VECTOR(6) + +/* Timer/Counter 1 Input Capture */ +#define TIMER1_IC_vect _VECTOR(7) + +/* Timer/Counter 1 Compare A Match */ +#define TIMER1_COMPA_vect _VECTOR(8) + +/* Timer/Counter 1 Compare B Match */ +#define TIMER1_COMPB_vect _VECTOR(9) + +/* Timer/Counter 1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(10) + +/* Timer/Counter 0 Input Capture */ +#define TIMER0_IC_vect _VECTOR(11) + +/* Timer/Counter0 Compare A Match */ +#define TIMER0_COMPA_vect _VECTOR(12) + +/* Timer/Counter0 Compare B Match */ +#define TIMER0_COMPB_vect _VECTOR(13) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(14) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(15) + +/* Voltage ADC Conversion Complete */ +#define VADC_vect _VECTOR(16) + +/* Coulomb Counter ADC Conversion Complete */ +#define CCADC_CONV_vect _VECTOR(17) + +/* Coloumb Counter ADC Regular Current */ +#define CCADC_REG_CUR_vect _VECTOR(18) + +/* Coloumb Counter ADC Accumulator */ +#define CCADC_ACC_vect _VECTOR(19) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(20) + +#if defined (__AVR_ATmega16HVA__) +# define _VECTORS_SIZE 84 +#else +# define _VECTORS_SIZE 42 +#endif + + +#endif /* _AVR_IOMXXHVA_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn11.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn11.h new file mode 100644 index 0000000..4b2d8a6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn11.h @@ -0,0 +1,234 @@ +/* Copyright (c) 2002,2005 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn11.h,v 1.9.2.5 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iotn11.h - definitions for ATtiny10/11 */ + +#ifndef _AVR_IOTN11_H_ +#define _AVR_IOTN11_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn11.h" +#else +# error "Attempt to include more than one file." +#endif + +#ifndef __ASSEMBLER__ +# warning "MCU not supported by the C compiler" +#endif + +/* I/O registers */ + +/* 0x00..0x07 reserved */ + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* 0x09..0x15 reserved */ + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* 0x19..0x20 reserved */ + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* 0x22..0x31 reserved */ + +/* Timer/Counter0 (8-bit) */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* 0x36..0x37 reserved */ + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK Register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C..0x3E reserved */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 0 */ +#define IO_PINS_vect _VECTOR(2) +#define SIG_PIN _VECTOR(2) +#define SIG_PIN_CHANGE _VECTOR(2) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(3) +#define SIG_OVERFLOW0 _VECTOR(3) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(4) +#define SIG_COMPARATOR _VECTOR(4) + +#define _VECTORS_SIZE 10 + +/* Bit numbers */ + +/* GIMSK */ +#define INT0 6 +#define PCIE 5 + +/* GIFR */ +#define INTF0 6 +#define PCIF 5 + +/* TIMSK */ +#define TOIE0 1 + +/* TIFR */ +#define TOV0 1 + +/* MCUCR */ +#define SE 5 +#define SM 4 +#define ISC01 1 +#define ISC00 0 + +/* TCCR0 */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + PB5 = RESET# + PB4 = XTAL2 + PB3 = XTAL1 + PB2 = T0 + PB1 = INT0 / AIN1 + PB0 = AIN0 + */ + +/* PORTB */ +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* ACSR */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIS1 1 +#define ACIS0 0 + +/* Last memory addresses */ +#define RAMEND 0x1F +#define XRAMEND 0x0 +#define E2END 0x0 +#define E2PAGESIZE 2 +#define FLASHEND 0x3FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_RSTDISBL (unsigned char)~_BV(3) +#define FUSE_FSTRT (unsigned char)~_BV(4) +#define FUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL1) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x90 +#define SIGNATURE_2 0x04 + + +#endif /* _AVR_IOTN11_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn12.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn12.h new file mode 100644 index 0000000..396c1b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn12.h @@ -0,0 +1,265 @@ +/* Copyright (c) 2002,2005 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn12.h,v 1.10.2.5 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iotn12.h - definitions for ATtiny12 */ + +#ifndef _AVR_IOTN12_H_ +#define _AVR_IOTN12_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn12.h" +#else +# error "Attempt to include more than one file." +#endif + +#ifndef __ASSEMBLER__ +# warning "MCU not supported by the C compiler" +#endif + +/* I/O registers */ + +/* 0x00..0x07 reserved */ + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* 0x09..0x15 reserved */ + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* 0x19..0x1B reserved */ + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* 0x1F..0x20 reserved */ + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* 0x22..0x30 reserved */ + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_IO8(0x31) + +/* Timer/Counter0 (8-bit) */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* 0x36..0x37 reserved */ + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK Register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C..0x3E reserved */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 0 */ +#define IO_PINS_vect _VECTOR(2) +#define SIG_PIN _VECTOR(2) +#define SIG_PIN_CHANGE _VECTOR(2) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(3) +#define SIG_OVERFLOW0 _VECTOR(3) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(4) +#define SIG_EEPROM_READY _VECTOR(4) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(5) +#define SIG_COMPARATOR _VECTOR(5) + +#define _VECTORS_SIZE 12 + +/* Bit numbers */ + +/* GIMSK */ +#define INT0 6 +#define PCIE 5 + +/* GIFR */ +#define INTF0 6 +#define PCIF 5 + +/* TIMSK */ +#define TOIE0 1 + +/* TIFR */ +#define TOV0 1 + +/* MCUCR */ +#define PUD 6 +#define SE 5 +#define SM 4 +#define ISC01 1 +#define ISC00 0 + +/* TCCR0 */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + PB5 = RESET# + PB4 = XTAL2 + PB3 = XTAL1 + PB2 = T0 / SCK + PB1 = INT0 / AIN1 / MISO + PB0 = AIN0 / MOSI + */ + +/* PORTB */ +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* ACSR */ +#define ACD 7 +#define AINBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIS1 1 +#define ACIS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Last memory addresses */ +#define RAMEND 0x1F +#define XRAMEND 0x0 +#define E2END 0x3F +#define E2PAGESIZE 2 +#define FLASHEND 0x3FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_RSTDISBL (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define FUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SPIEN & FUSE_BODLEVEL) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x90 +#define SIGNATURE_2 0x05 + + +#endif /* _AVR_IOTN12_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn13.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn13.h new file mode 100644 index 0000000..7900e29 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn13.h @@ -0,0 +1,364 @@ +/* Copyright (c) 2004, Theodore A. Roth + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn13.h,v 1.8.2.6 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iotn13.h - definitions for ATtiny13 */ + +/* Verified 5/20/04 by Bruce Graham */ + +#ifndef _AVR_IOTN13_H_ +#define _AVR_IOTN13_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn13.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers and bit names */ + +/* ADC Control and Status Register B */ +#define ADCSRB _SFR_IO8(0x03) +# define ACME 6 +# define ADTS2 2 +# define ADTS1 1 +# define ADTS0 0 + +/* ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16 (0x04) +#endif +#define ADCW _SFR_IO16 (0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +/* ADC Control and Status Register A */ +#define ADCSRA _SFR_IO8(0x06) +# define ADEN 7 +# define ADSC 6 +# define ADATE 5 +# define ADIF 4 +# define ADIE 3 +# define ADPS2 2 +# define ADPS1 1 +# define ADPS0 0 + +/* ADC Multiplex Selection Register */ +#define ADMUX _SFR_IO8(0x07) +# define REFS0 6 +# define ADLAR 5 +# define MUX1 1 +# define MUX0 0 + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) +# define ACD 7 +# define ACBG 6 +# define ACO 5 +# define ACI 4 +# define ACIE 3 +# define ACIS1 1 +# define ACIS0 0 + +/* Digital Input Disable Register 0 */ +#define DIDR0 _SFR_IO8(0x14) +# define ADC0D 5 +# define ADC2D 4 +# define ADC3D 3 +# define ADC1D 2 +# define AIN1D 1 +# define AIN0D 0 + +/* PIN Change Mask Register */ +#define PCMSK _SFR_IO8(0x15) +# define PCINT5 5 +# define PCINT4 4 +# define PCINT3 3 +# define PCINT2 2 +# define PCINT1 1 +# define PCINT0 0 + +/* Port B Pin Utilization [2535D-AVR-04/04] + - PORTB5 = PCINT5/RESET#/ADC0/dW + - PORTB4 = PCINT4/ADC2 + - PORTB3 = PCINT3/CLKI/ADC3 + - PORTB2 = SCK/ADC1/T0/PCINT2 + - PORTB1 = MISO/AIN1/OC0B/INT0/PCINT1 + - PORTB0 = MOSI/AIN0/OC0A/PCINT0 */ + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) +# define PINB5 5 +# define PINB4 4 +# define PINB3 3 +# define PINB2 2 +# define PINB1 1 +# define PINB0 0 + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) +# define DDB5 5 +# define DDB4 4 +# define DDB3 3 +# define DDB2 2 +# define DDB1 1 +# define DDB0 0 + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) +# define PB5 5 +# define PB4 4 +# define PB3 3 +# define PB2 2 +# define PB1 1 +# define PB0 0 + +/* ATtiny EEPROM Control Register EECR */ +#define EECR _SFR_IO8(0x1C) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* The EEPROM Address Register EEAR[6:0] */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) +# define WDTIF 7 +# define WDTIE 6 +# define WDP3 5 +# define WDCE 4 +# define WDE 3 +# define WDP2 2 +# define WDP1 1 +# define WDP0 0 + +/* Clock Prescale Register */ +#define CLKPR _SFR_IO8(0x26) +# define CLKPCE 7 +# define CLKPS3 3 +# define CLKPS2 2 +# define CLKPS1 1 +# define CLKPS0 0 + +/* General Timer/Counter Control Register */ +#define GTCCR _SFR_IO8(0x28) +# define TSM 7 +# define PSR10 0 + +/* Output Compare 0 Register B */ +#define OCR0B _SFR_IO8(0x29) + +/* debugWIRE Data Register */ +#define DWDR _SFR_IO8(0x2e) + +/* Timer/Counter 0 Control Register A */ +#define TCCR0A _SFR_IO8(0x2f) +# define COM0A1 7 +# define COM0A0 6 +# define COM0B1 5 +# define COM0B0 4 +# define WGM01 1 +# define WGM00 0 + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_IO8(0x31) + +/* Timer/Counter0 (8-bit) */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register B */ +#define TCCR0B _SFR_IO8(0x33) +# define FOC0A 7 +# define FOC0B 6 +# define WGM02 3 +# define CS02 2 +# define CS01 1 +# define CS00 0 + +/* MCU General Status Register */ +#define MCUSR _SFR_IO8(0x34) +# define WDRF 3 +# define BORF 2 +# define EXTRF 1 +# define PORF 0 + +/* MCU General Control Register */ +#define MCUCR _SFR_IO8(0x35) +# define PUD 6 +# define SE 5 +# define SM1 4 +# define SM0 3 +# define ISC01 1 +# define ISC00 0 + +/* Output Compare 0 REgister A */ +#define OCR0A _SFR_IO8(0x36) + +/* Store Program Memory Control and Status Register */ +#define SPMCSR _SFR_IO8(0x37) +# define CTPB 4 +# define RFLB 3 +# define PGWRT 2 +# define PGERS 1 +# define SPMEN 0 +# define SELFPRGEN 0 + +/* Timer/Counter 0 Interrupt Flag Register */ +#define TIFR0 _SFR_IO8(0x38) +# define OCF0B 3 +# define OCF0A 2 +# define TOV0 1 + +/* Timer/Counter 0 Interrupt MaSK Register */ +#define TIMSK0 _SFR_IO8(0x39) +# define OCIE0B 3 +# define OCIE0A 2 +# define TOIE0 1 + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3a) +# define INTF0 6 +# define PCIF 5 + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3b) +# define INT0 6 +# define PCIE 5 + +/* SPL and SREG are defined in */ + +/* From the datasheet: + 1 0x0000 RESET External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset + 2 0x0001 INT0 External Interrupt Request 0 + 3 0x0002 PCINT0 Pin Change Interrupt Request 0 + 4 0x0003 TIM0_OVF Timer/Counter Overflow + 5 0x0004 EE_RDY EEPROM Ready + 6 0x0005 ANA_COMP Analog Comparator + 7 0x0006 TIM0_COMPA Timer/Counter Compare Match A + 8 0x0007 TIM0_COMPB Timer/Counter Compare Match B + 9 0x0008 WDT Watchdog Time-out + 10 0x0009 ADC ADC Conversion Complete */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Timer/Counter0 Overflow */ +#define TIM0_OVF_vect _VECTOR(3) +#define SIG_OVERFLOW0 _VECTOR(3) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(4) +#define SIG_EEPROM_READY _VECTOR(4) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(5) +#define SIG_COMPARATOR _VECTOR(5) + +/* Timer/Counter Compare Match A */ +#define TIM0_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE0A _VECTOR(6) + +/* Timer/Counter Compare Match B */ +#define TIM0_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE0B _VECTOR(7) + +/* Watchdog Time-out */ +#define WDT_vect _VECTOR(8) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(8) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(9) +#define SIG_ADC _VECTOR(9) + +#define _VECTORS_SIZE 20 + +#define SPM_PAGESIZE 32 +#define RAMEND 0x9F +#define XRAMEND 0x9F +#define E2END 0x3F +#define E2PAGESIZE 4 +#define FLASHEND 0x3FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_SUT0 (unsigned char)~_BV(2) +#define FUSE_SUT1 (unsigned char)~_BV(3) +#define FUSE_CKDIV8 (unsigned char)~_BV(4) +#define FUSE_WDTON (unsigned char)~_BV(5) +#define FUSE_EESAVE (unsigned char)~_BV(6) +#define FUSE_SPIEN (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_SUT0 & FUSE_CKDIV8 & FUSE_SPIEN) + +/* High Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_DWEN (unsigned char)~_BV(3) +#define FUSE_SPMEN (unsigned char)~_BV(4) +#define HFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x90 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_IOTN13_H_*/ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn13a.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn13a.h new file mode 100644 index 0000000..10a8dd8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn13a.h @@ -0,0 +1,389 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn13a.h,v 1.1.2.5 2008/08/06 22:45:08 arcanum Exp $ */ + +/* avr/iotn13a.h - definitions for ATtiny13 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn13a.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATTINY13A_H_ +#define _AVR_ATTINY13A_H_ 1 + + +/* Registers and associated bit numbers. */ + +#define ADCSRB _SFR_IO8(0x03) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) + +#define ADCL _SFR_IO8(0x04) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_IO8(0x05) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_IO8(0x06) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADMUX _SFR_IO8(0x07) +#define MUX0 0 +#define MUX1 1 +#define ADLAR 5 +#define REFS0 6 + +#define ACSR _SFR_IO8(0x08) +#define ACIS0 0 +#define ACIS1 1 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define DIDR0 _SFR_IO8(0x14) +#define AIN0D 0 +#define AIN1D 1 +#define ADC1D 2 +#define ADC3D 3 +#define ADC2D 4 +#define ADC0D 5 + +#define PCMSK _SFR_IO8(0x15) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 + +#define PINB _SFR_IO8(0x16) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 + +#define DDRB _SFR_IO8(0x17) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 + +#define PORTB _SFR_IO8(0x18) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 + +#define EECR _SFR_IO8(0x1C) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x1D) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEARL _SFR_IO8(0x1E) + +#define EEAR _SFR_IO8(0x1E) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 + +#define WDTCR _SFR_IO8(0x21) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDTIE 6 +#define WDTIF 7 + +#define PRR _SFR_IO8(0x25) +#define PRADC 0 +#define PRSPI 1 +#define PRTIM0 2 + +#define CLKPR _SFR_IO8(0x26) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define GTCCR _SFR_IO8(0x28) +#define PSR10 0 +#define TSM 7 + +#define OCR0B _SFR_IO8(0x29) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define DWDR _SFR_IO8(0x2E) +#define DWDR0 0 +#define DWDR1 1 +#define DWDR2 2 +#define DWDR3 3 +#define DWDR4 4 +#define DWDR5 5 +#define DWDR6 6 +#define DWDR7 7 + +#define TCCR0A _SFR_IO8(0x2F) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define BODCR _SFR_IO8(0x30) +#define BPDSE 0 +#define BPDS 1 + +#define OSCCAL _SFR_IO8(0x31) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 + +#define TCNT0 _SFR_IO8(0x32) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define TCCR0B _SFR_IO8(0x33) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define ISC00 0 +#define ISC01 1 +#define SM0 3 +#define SM1 4 +#define SE 5 +#define PUD 6 + +#define OCR0A _SFR_IO8(0x36) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define RFLB 3 +#define CTPB 4 + +#define TIFR0 _SFR_IO8(0x38) +#define TOV0 1 +#define OCF0A 2 +#define OCF0B 3 + +#define TIMSK0 _SFR_IO8(0x39) +#define TOIE0 1 +#define OCIE0A 2 +#define OCIE0B 3 + +#define GIFR _SFR_IO8(0x3A) +#define PCIF 5 +#define INTF0 6 + +#define GIMSK _SFR_IO8(0x3B) +#define PCIE 5 +#define INT0 6 + + +/* Interrupt vectors */ +/* Vector 0 is the reset vector */ +#define INT0_vect_num 1 +#define INT0_vect _VECTOR(1) /* External Interrupt 0 */ +#define PCINT0_vect_num 2 +#define PCINT0_vect _VECTOR(2) /* External Interrupt Request 0 */ +#define TIM0_OVF_vect_num 3 +#define TIM0_OVF_vect _VECTOR(3) /* Timer/Counter0 Overflow */ +#define EE_RDY_vect_num 4 +#define EE_RDY_vect _VECTOR(4) /* EEPROM Ready */ +#define ANA_COMP_vect_num 5 +#define ANA_COMP_vect _VECTOR(5) /* Analog Comparator */ +#define TIM0_COMPA_vect_num 6 +#define TIM0_COMPA_vect _VECTOR(6) /* Timer/Counter Compare Match A */ +#define TIM0_COMPB_vect_num 7 +#define TIM0_COMPB_vect _VECTOR(7) /* Timer/Counter Compare Match B */ +#define WDT_vect_num 8 +#define WDT_vect _VECTOR(8) /* Watchdog Time-out */ +#define ADC_vect_num 9 +#define ADC_vect _VECTOR(9) /* ADC Conversion Complete */ + +#define _VECTOR_SIZE 2 /* Size of individual vector. */ +#define _VECTORS_SIZE (10 * _VECTOR_SIZE) + + +/* Constants */ +#define SPM_PAGESIZE (32) +#define RAMSTART (0x60) +#define RAMSIZE (64) +#define RAMEND (RAMSTART + RAMSIZE - 1) +#define XRAMSTART (NA) +#define XRAMSIZE (0) +#if XRAMSIZE > 0 && XRAMSTART > 0 +#define XRAMEND (XRAMSTART + XRAMSIZE - 1) +#else +#define XRAMEND (RAMEND + XRAMSIZE) +#endif +#define E2END (64 - 1) +#define E2PAGESIZE (4) +#define FLASHEND (1024 - 1) + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(2) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(3) /* Select start-up time */ +#define FUSE_CKDIV8 (unsigned char)~_BV(4) /* Start up with system clock divided by 8 */ +#define FUSE_WDTON (unsigned char)~_BV(5) /* Watch dog timer always on */ +#define FUSE_EESAVE (unsigned char)~_BV(6) /* Keep EEprom contents during chip erase */ +#define FUSE_SPIEN (unsigned char)~_BV(7) /* SPI programming enable */ +#define LFUSE_DEFAULT (FUSE_SPIEN & FUSE_CKDIV8 & FUSE_SUT0 & FUSE_CKSEL0) + +/* High Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) /* Disable external reset */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) /* Enable BOD and select level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) /* Enable BOD and select level */ +#define FUSE_DWEN (unsigned char)~_BV(3) /* DebugWire Enable */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(4) /* Self Programming Enable */ +#define HFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x90 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_ATTINY13A_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn15.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn15.h new file mode 100644 index 0000000..e5a1334 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn15.h @@ -0,0 +1,333 @@ +/* Copyright (c) 2002,2005 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn15.h,v 1.12.2.5 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iotn15.h - definitions for ATtiny15 */ + +#ifndef _AVR_IOTN15_H_ +#define _AVR_IOTN15_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn15.h" +#else +# error "Attempt to include more than one file." +#endif + +#ifndef __ASSEMBLER__ +# warning "MCU not supported by the C compiler" +#endif + +/* I/O registers */ + +/* 0x00..0x03 reserved */ + +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16 (0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) +#define ADCSR _SFR_IO8(0x06) +#define ADMUX _SFR_IO8(0x07) + +/* Analog Comparator Control and Status Register */ +#define ACSR _SFR_IO8(0x08) + +/* 0x09..0x15 reserved */ + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* 0x19..0x1B reserved */ + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* 0x1F..0x20 reserved */ + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* 0x22..0x2B reserved */ +#define SFIOR _SFR_IO8(0x2C) + +#define OCR1B _SFR_IO8(0x2D) +#define OCR1A _SFR_IO8(0x2E) +#define TCNT1 _SFR_IO8(0x2F) +#define TCCR1 _SFR_IO8(0x30) + +/* Oscillator Calibration Register */ +#define OSCCAL _SFR_IO8(0x31) + +/* Timer/Counter0 (8-bit) */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU general Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* 0x36..0x37 reserved */ + +/* Timer/Counter Interrupt Flag Register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK Register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag Register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3C..0x3E reserved */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 0 */ +#define IO_PINS_vect _VECTOR(2) +#define SIG_PIN _VECTOR(2) +#define SIG_PIN_CHANGE _VECTOR(2) + +/* Timer/Counter1 Compare Match */ +#define TIMER1_COMP_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE1A _VECTOR(3) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW1 _VECTOR(4) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW0 _VECTOR(5) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(6) +#define SIG_EEPROM_READY _VECTOR(6) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(7) +#define SIG_COMPARATOR _VECTOR(7) + +/* ADC Conversion Ready */ +#define ADC_vect _VECTOR(8) +#define SIG_ADC _VECTOR(8) + +#define _VECTORS_SIZE 18 + +/* Bit numbers */ + +/* GIMSK */ +#define INT0 6 +#define PCIE 5 + +/* GIFR */ +#define INTF0 6 +#define PCIF 5 + +/* TIMSK */ +#define OCIE1 6 +#define TOIE1 2 +#define TOIE0 1 + +/* TIFR */ +#define OCF1 6 +#define TOV1 2 +#define TOV0 1 + +/* MCUCR */ +#define PUD 6 +#define SE 5 +#define SM1 4 +#define SM0 3 +#define ISC01 1 +#define ISC00 0 + +/* MCUSR */ +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* TCCR0 */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* TCCR1 */ +#define CTC1 7 +#define PWM1 6 +#define COM1A1 5 +#define COM1A0 4 +#define CS13 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* SFIOR */ +#define FOC1A 2 +#define PSR1 1 +#define PSR0 0 + +/* WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + PB5 = RESET# / ADC0 + PB4 = ADC3 + PB3 = ADC2 + PB2 = SCK / ADC1 / T0 / INT0 + PB1 = MISO / AIN1 / OCP + PB0 = MOSI / AIN0 / AREF + */ + +/* PORTB */ +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* DDRB */ +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* PINB */ +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* ACSR */ +#define ACD 7 +#define GREF 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIS1 1 +#define ACIS0 0 + +/* ADMUX */ +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* ADCSR */ +#define ADEN 7 +#define ADSC 6 +#define ADFR 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Last memory addresses */ +#define RAMEND 0x1F +#define XRAMEND 0x0 +#define E2END 0x3F +#define E2PAGESIZE 2 +#define FLASHEND 0x3FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_RSTDISBL (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_BODEN (unsigned char)~_BV(6) +#define FUSE_BODLEVEL (unsigned char)~_BV(7) +#define FUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL1 & FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x90 +#define SIGNATURE_2 0x06 + + +#endif /* _AVR_IOTN15_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn167.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn167.h new file mode 100644 index 0000000..48ed108 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn167.h @@ -0,0 +1,832 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iotn167.h,v 1.1.2.5 2008/08/06 22:45:08 arcanum Exp $ */ + +/* avr/iotn167.h - definitions for ATtiny167. */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn167.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOTN167_H_ +#define _AVR_IOTN167_H_ 1 + + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x01) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x02) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 +#define PORTA4 4 +#define PORTA5 5 +#define PORTA6 6 +#define PORTA7 7 + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PORTCR _SFR_IO8(0x12) +#define PUDA 0 +#define PUDB 2 +#define BBMA 4 +#define BBMB 5 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 + +#define GTCCR _SFR_IO8(0x23) +#define PSR1 0 +#define PSR0 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x25) +#define WGM00 0 +#define WGM01 1 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x26) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x27) +#define TCNT00 0 +#define TCNT01 1 +#define TCNT02 2 +#define TCNT03 3 +#define TCNT04 4 +#define TCNT05 5 +#define TCNT06 6 +#define TCNT07 7 + +#define OCR0A _SFR_IO8(0x28) +#define OCR00 0 +#define OCR01 1 +#define OCR02 2 +#define OCR03 3 +#define OCR04 4 +#define OCR05 5 +#define OCR06 6 +#define OCR07 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACIRS 6 +#define ACD 7 + +#define DWDR _SFR_IO8(0x31) +#define DWDR0 0 +#define DWDR1 1 +#define DWDR2 2 +#define DWDR3 3 +#define DWDR4 4 +#define DWDR5 5 +#define DWDR6 6 +#define DWDR7 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define PUD 4 +#define BODS 5 +#define BODSE 6 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define RFLB 3 +#define CTPB 4 +#define SIGRD 5 +#define RWWSB 6 + +#define WDTCR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define CLKCSR _SFR_MEM8(0x62) +#define CLKC0 0 +#define CLKC1 1 +#define CLKC2 2 +#define CLKC3 3 +#define CLKRDY 4 +#define CLKCCE 7 + +#define CLKSELR _SFR_MEM8(0x63) +#define CSEL0 0 +#define CSEL1 1 +#define CSEL2 2 +#define CSEL3 3 +#define CSUT0 4 +#define CSUT1 5 +#define COUT 6 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSI 1 +#define PRTIM0 2 +#define PRTIM1 3 +#define PRSPI 4 +#define PRLIN 5 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define AMISCR _SFR_MEM8(0x77) +#define ISRCEN 0 +#define XREFEN 1 +#define AREFEN 2 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACIR0 4 +#define ACIR1 5 +#define ACME 6 +#define BIN 7 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define ADC8D 0 +#define ADC9D 1 +#define ADC10D 2 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCCR1D _SFR_MEM8(0x83) +#define OC1AU 0 +#define OC1AV 1 +#define OC1AW 2 +#define OC1AX 3 +#define OC1BU 4 +#define OC1BV 5 +#define OC1BW 6 +#define OC1BX 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM8(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR0BUB 0 +#define TCR0AUB 1 +#define OCR0AUB 3 +#define TCN0UB 4 +#define AS0 5 +#define EXCLK 6 + +#define USICR _SFR_MEM8(0xB8) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_MEM8(0xB9) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_MEM8(0xBA) +#define USIDR0 0 +#define USIDR1 1 +#define USIDR2 2 +#define USIDR3 3 +#define USIDR4 4 +#define USIDR5 5 +#define USIDR6 6 +#define USIDR7 7 + +#define USIBR _SFR_MEM8(0xBB) +#define USIBR0 0 +#define USIBR1 1 +#define USIBR2 2 +#define USIBR3 3 +#define USIBR4 4 +#define USIBR5 5 +#define USIBR6 6 +#define USIBR7 7 + +#define USIPP _SFR_MEM8(0xBC) +#define USIPOS 0 + +#define LINCR _SFR_MEM8(0xC8) +#define LCMD0 0 +#define LCMD1 1 +#define LCMD2 2 +#define LENA 3 +#define LCONF0 4 +#define LCONF1 5 +#define LIN13 6 +#define LSWRES 7 + +#define LINSIR _SFR_MEM8(0xC9) +#define LRXOK 0 +#define LTXOK 1 +#define LIDOK 2 +#define LERR 3 +#define LBUSY 4 +#define LIDST0 5 +#define LIDST1 6 +#define LIDST2 7 + +#define LINENIR _SFR_MEM8(0xCA) +#define LENRXOK 0 +#define LENTXOK 1 +#define LENIDOK 2 +#define LENERR 3 + +#define LINERR _SFR_MEM8(0xCB) +#define LBERR 0 +#define LCERR 1 +#define LPERR 2 +#define LSERR 3 +#define LFERR 4 +#define LOVERR 5 +#define LTOERR 6 +#define LABORT 7 + +#define LINBTR _SFR_MEM8(0xCC) +#define LBT0 0 +#define LBT1 1 +#define LBT2 2 +#define LBT3 3 +#define LBT4 4 +#define LBT5 5 +#define LDISR 7 + +#define LINBRR _SFR_MEM16(0xCD) + +#define LINBRRL _SFR_MEM8(0xCD) +#define LDIV0 0 +#define LDIV1 1 +#define LDIV2 2 +#define LDIV3 3 +#define LDIV4 4 +#define LDIV5 5 +#define LDIV6 6 +#define LDIV7 7 + +#define LINBRRH _SFR_MEM8(0xCE) +#define LDIV8 0 +#define LDIV9 1 +#define LDIV10 2 +#define LDIV11 3 + +#define LINDLR _SFR_MEM8(0xCF) +#define LRXDL0 0 +#define LRXDL1 1 +#define LRXDL2 2 +#define LRXDL3 3 +#define LTXDL0 4 +#define LTXDL1 5 +#define LTXDL2 6 +#define LTXDL3 7 + +#define LINIDR _SFR_MEM8(0xD0) +#define LID0 0 +#define LID1 1 +#define LID2 2 +#define LID3 3 +#define LID4 4 +#define LID5 5 +#define LP0 6 +#define LP1 7 + +#define LINSEL _SFR_MEM8(0xD1) +#define LINDX0 0 +#define LINDX1 1 +#define LINDX2 2 +#define LAINC 3 + +#define LINDAT _SFR_MEM8(0xD2) +#define LDATA0 0 +#define LDATA1 1 +#define LDATA2 2 +#define LDATA3 3 +#define LDATA4 4 +#define LDATA5 5 +#define LDATA6 6 +#define LDATA7 7 + + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ +#define PCINT0_vect _VECTOR(3) /* Pin Change Interrupt Request 0 */ +#define PCINT1_vect _VECTOR(4) /* Pin Change Interrupt Request 1 */ +#define WDT_vect _VECTOR(5) /* Watchdog Time-Out Interrupt */ +#define TIMER1_CAPT_vect _VECTOR(6) /* Timer/Counter1 Capture Event */ +#define TIMER1_COMPA_vect _VECTOR(7) /* Timer/Counter1 Compare Match 1A */ +#define TIMER1_COMPB_vect _VECTOR(8) /* Timer/Counter1 Compare Match 1B */ +#define TIMER1_OVF_vect _VECTOR(9) /* Timer/Counter1 Overflow */ +#define TIMER0_COMPA_vect _VECTOR(10) /* Timer/Counter0 Compare Match 0A */ +#define TIMER0_OVF_vect _VECTOR(11) /* Timer/Counter0 Overflow */ +#define LIN_TC_vect _VECTOR(12) /* LIN Transfer Complete */ +#define LIN_ERR_vect _VECTOR(13) /* LIN Error */ +#define SPI_STC_vect _VECTOR(14) /* SPI Serial Transfer Complete */ +#define ADC_vect _VECTOR(15) /* ADC Conversion Complete */ +#define EE_RDY_vect _VECTOR(16) /* EEPROM Ready */ +#define ANA_COMP_vect _VECTOR(17) /* Analog Comparator */ +#define USI_START_vect _VECTOR(18) /* USI Start */ +#define USI_OVF_vect _VECTOR(19) /* USI Overflow */ + +#define _VECTORS_SIZE (20 * 4) + + + +/* Constants */ +#define SPM_PAGESIZE (64) +#define RAMSTART (0x100) +#define RAMSIZE (0x1FF) +#define RAMEND (RAMSTART + RAMSIZE - 1) /* Last On-Chip SRAM Location */ +#define XRAMSIZE (0) +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END (0x1FF) +#define E2PAGESIZE (4) +#define FLASHEND (0x3FFF) + + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock Output Enable */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through the Chip Erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer always ON */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial Program and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* DebugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External Reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) /* Self-Programming Enable */ +#define EFUSE_DEFAULT (0xFF) + + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x87 + + + +#endif /* _AVR_IOTN167_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn22.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn22.h new file mode 100644 index 0000000..04fa10c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn22.h @@ -0,0 +1,205 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn22.h,v 1.9.2.5 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iotn22.h - definitions for ATtiny22 */ + +#ifndef _AVR_IOTN22_H_ +#define _AVR_IOTN22_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn22.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Input Pins, Port B */ +#define PINB _SFR_IO8(0x16) + +/* Data Direction Register, Port B */ +#define DDRB _SFR_IO8(0x17) + +/* Data Register, Port B */ +#define PORTB _SFR_IO8(0x18) + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Watchdog Timer Control Register */ +#define WDTCR _SFR_IO8(0x21) + +/* Timer/Counter 0 */ +#define TCNT0 _SFR_IO8(0x32) + +/* Timer/Counter 0 Control Register */ +#define TCCR0 _SFR_IO8(0x33) + +/* MCU Status Register */ +#define MCUSR _SFR_IO8(0x34) + +/* MCU general Control Register */ +#define MCUCR _SFR_IO8(0x35) + +/* Timer/Counter Interrupt Flag register */ +#define TIFR _SFR_IO8(0x38) + +/* Timer/Counter Interrupt MaSK register */ +#define TIMSK _SFR_IO8(0x39) + +/* General Interrupt Flag register */ +#define GIFR _SFR_IO8(0x3A) + +/* General Interrupt MaSK register */ +#define GIMSK _SFR_IO8(0x3B) + +/* 0x3D SP */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF0_vect _VECTOR(2) +#define SIG_OVERFLOW0 _VECTOR(2) + +#define _VECTORS_SIZE 6 + +/* + The Register Bit names are represented by their bit number (0-7). + */ + +/* General Interrupt MaSK register */ +#define INT0 6 +#define INTF0 6 + +/* General Interrupt Flag Register */ +#define TOIE0 1 +#define TOV0 1 + +/* MCU general Control Register */ +#define SE 5 +#define SM 4 +#define ISC01 1 +#define ISC00 0 + +/* Timer/Counter 0 Control Register */ +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* Watchdog Timer Control Register */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + PB2 = SCK/T0 + PB1 = MISO/INT0 + PB0 = MOSI + */ + +/* Data Register, Port B */ +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Data Direction Register, Port B */ +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Input Pins, Port B */ +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* EEPROM Control Register */ +#define EERIE 3 +#define EEMWE 2 +#define EEWE 1 +#define EERE 0 + +/* Constants */ +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 0 +#define FLASHEND 0x07FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Fuse Byte */ +#define FUSE_CKSEL (unsigned char)~_BV(0) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DEFAULT (FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x06 + + +#endif /* _AVR_IOTN22_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn2313.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn2313.h new file mode 100644 index 0000000..8edd230 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn2313.h @@ -0,0 +1,633 @@ +/* Copyright (c) 2004, 2005, 2006 Bob Paddock + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn2313.h,v 1.14.2.6 2008/10/17 23:27:51 arcanum Exp $ */ + +/* iotn2313.h derived from io2313.h by Bob Paddock. + + The changes between the AT90S2313 and the ATtiny2313 are extensive. + + Atmel has renamed several registers, and bits. See Atmel application note + AVR091, as well as the errata at the end of the current ATtiny2313 data + sheet. Some of the names have changed more than once during the sampling + period of the ATtiny2313. + + Where there is no conflict the new and old names are both supported. + + In the case of a new feature in a register, only the new name is used. + This intentionally breaks old code, so that there are no silent bugs. The + source code must be updated to the new name in this case. + + The hardware interrupt vector table has changed from that of the AT90S2313. + + ATtiny2313 programs in page mode rather than the byte mode of the + AT90S2313. Beware of programming the ATtiny2313 as a AT90S2313 device, + when programming the Flash. + + ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + + Changes and/or additions are noted by "ATtiny" in the comments below. */ + +/* avr/iotn2313.h - definitions for ATtiny2313 */ + +#ifndef _AVR_IOTN2313_H_ +#define _AVR_IOTN2313_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn2313.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* + * The Register Bit names are represented by their bit number (0-7). + * Example: PORTB |= _BV(PORTB7); Set MSB of PORTB. + */ + +/* 0x00 Reserved */ + +/* ATtiny Digital Input Disable Register DIDR */ +#define DIDR _SFR_IO8(0x01) + +#define AIN1D 1 +#define AIN0D 0 + +/* ATtiny USART Baud Rate Register High UBBRH[11:8] */ +#define UBRRH _SFR_IO8(0x02) + +/* ATtiny USART Control and Status Register C UCSRC */ +#define UCSRC _SFR_IO8(0x03) + +#define UMSEL 6 +#define UPM1 5 +#define UPM0 4 +#define USBS 3 +#define UCSZ1 2 +#define UCSZ0 1 +#define UCPOL 0 + +/* 0x04 -> 0x07 Reserved */ + +/* ATtiny Analog Comparator Control and Status Register ACSR */ +#define ACSR _SFR_IO8(0x08) + +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* USART Baud Rate Register Low UBBRL[7:0] */ +#define UBRRL _SFR_IO8(0x09) + +/* ATtiny USART Control Register UCSRB */ +#define UCSRB _SFR_IO8(0x0A) + +#define RXCIE 7 +#define TXCIE 6 +#define UDRIE 5 +#define RXEN 4 +#define TXEN 3 +#define UCSZ2 2 +#define RXB8 1 +#define TXB8 0 + +/* ATtiny USART Status Register UCSRA */ +#define UCSRA _SFR_IO8(0x0B) + +#define RXC 7 +#define TXC 6 +#define UDRE 5 +#define FE 4 +#define DOR 3 +#define UPE 2 +#define U2X 1 +#define MPCM 0 + +/* USART I/O Data Register UBR or RXB[7:0], TXB[7:0] */ +#define UDR _SFR_IO8(0x0C) +#define RXB _SFR_IO8(0x0C) +#define TXB _SFR_IO8(0x0C) + +/* ATtiny USI Control Register USICR */ +#define USICR _SFR_IO8(0x0D) + +#define USISIE 7 +#define USIOIE 6 +#define USIWM1 5 +#define USIWM0 4 +#define USICS1 3 +#define USICS0 2 +#define USICLK 1 +#define USITC 0 + +/* ATtiny USI Status Register USISR */ +#define USISR _SFR_IO8(0x0E) + +#define USISIF 7 +#define USIOIF 6 +#define USIPF 5 +#define USIDC 4 +#define USICNT3 3 +#define USICNT2 2 +#define USICNT1 1 +#define USICNT0 0 + +/* ATtiny USI Data Register USIDR[7:0] */ +#define USIDR _SFR_IO8(0x0F) + +/* Input Pins, Port D PIND[6:0] */ +#define PIND _SFR_IO8(0x10) + +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* Data Direction Register, Port D DDRD[6:0] */ +#define DDRD _SFR_IO8(0x11) + +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* Data Register, Port D PORTD[6:0] */ +#define PORTD _SFR_IO8(0x12) + +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* ATtiny General Purpose I/O Register Zero GPIOR0[7:0] */ +#define GPIOR0 _SFR_IO8(0x13) + +/* ATtiny General Purpose I/O Register One GPIOR1[7:0] */ +#define GPIOR1 _SFR_IO8(0x14) + +/* ATtiny General Purpose I/O Register Two One GPIOR2[7:0] */ +#define GPIOR2 _SFR_IO8(0x15) + +/* Input Pins, Port B PORTB[7:0] */ +#define PINB _SFR_IO8(0x16) + +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* Data Direction Register, Port B PORTB[7:0] */ +#define DDRB _SFR_IO8(0x17) + +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +/* Data Register, Port B PORTB[7:0] */ +#define PORTB _SFR_IO8(0x18) + +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Port A Input Pins Address PINA[2:0] */ +#define PINA _SFR_IO8(0x19) + +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +/* Port A Data Direction Register DDRA[2:0] */ +#define DDRA _SFR_IO8(0x1A) + +#define DDRA2 2 +#define DDRA1 1 +#define DDRA0 0 + +/* Port A Data Register PORTA[2:0] */ +#define PORTA _SFR_IO8(0x1B) + +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* ATtiny EEPROM Control Register EECR */ +#define EECR _SFR_IO8(0x1C) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* The EEPROM Address Register EEAR[6:0] */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEAR6 6 +#define EEAR5 5 +#define EEAR4 4 +#define EEAR3 3 +#define EEAR2 2 +#define EEAR1 1 +#define EEAR0 0 + +/* 0x1F Reserved */ + +/* ATtiny Pin Change Mask Register PCMSK PCINT[7:0] */ +#define PCMSK _SFR_IO8(0x20) + +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +/* ATtiny Watchdog Timer Control Register WDTCSR */ +#define WDTCSR _SFR_IO8(0x21) + +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* ATtiny Timer/Counter1 Control Register C TCCR1C */ +#define TCCR1C _SFR_IO8(0x22) + +#define FOC1A 7 +#define FOC1B 6 + +/* General Timer/Counter Control Register GTCCR */ +#define GTCCR _SFR_IO8(0x23) + +#define PSR10 0 + +/* T/C 1 Input Capture Register ICR1[15:0] */ +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +/* ATtiny Clock Prescale Register */ +#define CLKPR _SFR_IO8(0x26) + +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +/* 0x27 Reserved */ + +/* ATtiny Output Compare Register 1 B OCR1B[15:0] */ +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +/* Output Compare Register 1 OCR1A[15:0] */ +#define OCR1 _SFR_IO16(0x2A) +#define OCR1L _SFR_IO8(0x2A) +#define OCR1H _SFR_IO8(0x2B) +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* Timer/Counter 1 TCNT1[15:0] */ +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +/* ATtiny Timer/Counter 1 Control and Status Register TCCR1B */ +#define TCCR1B _SFR_IO8(0x2E) + +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 /* Was CTC1 in AT90S2313 */ +#define CS12 2 +#define CS11 1 +#define CS10 0 + +/* ATtiny Timer/Counter 1 Control Register TCCR1A */ +#define TCCR1A _SFR_IO8(0x2F) + +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define WGM11 1 /* Was PWM11 in AT90S2313 */ +#define WGM10 0 /* Was PWM10 in AT90S2313 */ + +/* ATtiny Timer/Counter Control Register A TCCR0A */ +#define TCCR0A _SFR_IO8(0x30) + +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +/* ATtiny Oscillator Calibration Register OSCCAL[6:0] */ +#define OSCCAL _SFR_IO8(0x31) + +#define CAL6 6 +#define CAL5 5 +#define CAL4 4 +#define CAL3 3 +#define CAL2 2 +#define CAL1 1 +#define CAL0 0 + +/* Timer/Counter 0 TCNT0[7:0] */ +#define TCNT0 _SFR_IO8(0x32) + +/* ATtiny Timer/Counter 0 Control Register TCCR0B */ +#define TCCR0B _SFR_IO8(0x33) + +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* ATtiny MCU Status Register MCUSR */ +#define MCUSR _SFR_IO8(0x34) + +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +/* ATtiny MCU general Control Register MCUCR */ +#define MCUCR _SFR_IO8(0x35) + +#define PUD 7 +#define SM1 6 +#define SE 5 +#define SM0 4 /* Some preliminary ATtiny2313 data sheets incorrectly refer + to this bit as SMD; was SM in AT90S2313. */ +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +/* ATtiny Output Compare Register A OCR0A[7:0] */ +#define OCR0A _SFR_IO8(0x36) + +/* ATtiny Store Program Memory Control and Status Register SPMCSR */ +#define SPMCSR _SFR_IO8(0x37) + +#define CTPB 4 +#define RFLB 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 /* The name is used in ATtiny2313.xml file. */ +#define SELFPRGEN 0 /* The name is used in datasheet. */ +#define SELFPRGE 0 /* The name is left for compatibility. */ + +/* ATtiny Timer/Counter Interrupt Flag register TIFR */ +#define TIFR _SFR_IO8(0x38) + +#define TOV1 7 +#define OCF1A 6 +#define OCF1B 5 +#define ICF1 3 +#define OCF0B 2 +#define TOV0 1 +#define OCF0A 0 + +/* ATtiny Timer/Counter Interrupt MaSK register TIMSK */ +#define TIMSK _SFR_IO8(0x39) + +#define TOIE1 7 +#define OCIE1A 6 +#define OCIE1B 5 +#define ICIE1 3 +#define OCIE0B 2 +#define TOIE0 1 +#define OCIE0A 0 + +/* ATtiny External Interrupt Flag Register EIFR, was GIFR */ +#define EIFR _SFR_IO8(0x3A) + +#define INTF1 7 +#define INTF0 6 +#define PCIF 5 + +/* ATtiny General Interrupt MaSK register GIMSK */ +#define GIMSK _SFR_IO8(0x3B) + +#define INT1 7 +#define INT0 6 +#define PCIE 5 + +/* ATtiny Output Compare Register B OCR0B[7:0] */ +#define OCR0B _SFR_IO8(0x3C) + +/* Interrupt vectors: */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) +#define SIG_INT0 _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) +#define SIG_INT1 _VECTOR(2) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(3) +#define SIG_INPUT_CAPTURE1 _VECTOR(3) +#define SIG_TIMER1_CAPT _VECTOR(3) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1A _VECTOR(4) +#define SIG_TIMER1_COMPA _VECTOR(4) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(5) +#define SIG_TIMER1_OVF _VECTOR(5) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(6) +#define SIG_TIMER0_OVF _VECTOR(6) + +/* USART, Rx Complete */ +#define USART_RX_vect _VECTOR(7) +#define SIG_USART0_RECV _VECTOR(7) +#define SIG_USART0_RX _VECTOR(7) + +/* USART Data Register Empty */ +#define USART_UDRE_vect _VECTOR(8) +#define SIG_USART0_DATA _VECTOR(8) +#define SIG_USART0_UDRE _VECTOR(8) + +/* USART, Tx Complete */ +#define USART_TX_vect _VECTOR(9) +#define SIG_USART0_TRANS _VECTOR(9) +#define SIG_USART0_TX _VECTOR(9) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(10) +#define SIG_COMPARATOR _VECTOR(10) +#define SIG_ANALOG_COMP _VECTOR(10) +#define PCINT_vect _VECTOR(11) +#define SIG_PIN_CHANGE _VECTOR(11) +#define SIG_PCINT _VECTOR(11) +#define TIMER1_COMPB_vect _VECTOR(12) +#define SIG_OUTPUT_COMPARE1B _VECTOR(12) +#define SIG_TIMER1_COMPB _VECTOR(12) +#define TIMER0_COMPA_vect _VECTOR(13) +#define SIG_OUTPUT_COMPARE0A _VECTOR(13) +#define SIG_TIMER0_COMPA _VECTOR(13) +#define TIMER0_COMPB_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE0B _VECTOR(14) +#define SIG_TIMER0_COMPB _VECTOR(14) + +/* USI Start Condition */ +#define USI_START_vect _VECTOR(15) +#define SIG_USI_START _VECTOR(15) +#define SIG_USI_START _VECTOR(15) + +/* USI Overflow */ +#define USI_OVERFLOW_vect _VECTOR(16) +#define SIG_USI_OVERFLOW _VECTOR(16) +#define SIG_USI_OVERFLOW _VECTOR(16) +#define EEPROM_READY_vect _VECTOR(17) +#define SIG_EEPROM_READY _VECTOR(17) +#define SIG_EE_READY _VECTOR(17) + +/* Watchdog Timer Overflow */ +#define WDT_OVERFLOW_vect _VECTOR(18) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(18) +#define SIG_WDT_OVERFLOW _VECTOR(18) + +/* 38 = (18*2)+2: Number of vectors times two, plus the reset vector */ +#define _VECTORS_SIZE 38 + +/* Constants */ +#define SPM_PAGESIZE 32 +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 4 +#define FLASHEND 0x07FF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_RSTDISBL (unsigned char)~_BV(0) +#define FUSE_BODLEVEL0 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(2) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_EESAVE (unsigned char)~_BV(6) +#define FUSE_DWEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x0A + + +#endif /* _AVR_IOTN2313_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn24.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn24.h new file mode 100644 index 0000000..177c75b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn24.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2005, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn24.h,v 1.3.2.5 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iotn24.h - definitions for ATtiny24 */ + +#ifndef _AVR_IOTN24_H_ +#define _AVR_IOTN24_H_ 1 + +#include + +#define SPM_PAGESIZE 32 +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 4 +#define FLASHEND 0x7FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x0B + + +#endif /* _AVR_IOTN24_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn25.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn25.h new file mode 100644 index 0000000..8a6f3cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn25.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2005, Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn25.h,v 1.3.2.5 2008/10/17 23:27:51 arcanum Exp $ */ + +/* avr/iotn25.h - definitions for ATtiny25 */ + +#ifndef _AVR_IOTN25_H_ +#define _AVR_IOTN25_H_ 1 + +#include + +#define SPM_PAGESIZE 32 +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 4 +#define FLASHEND 0x7FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x08 + + +#endif /* _AVR_IOTN25_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn26.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn26.h new file mode 100644 index 0000000..35d9cc9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn26.h @@ -0,0 +1,385 @@ +/* Copyright (c) 2004,2005 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn26.h,v 1.15.2.6 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn26.h - definitions for ATtiny26 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn26.h" +#else +# error "Attempt to include more than one file." +#endif + +#ifndef _AVR_IOTN26_H_ +#define _AVR_IOTN26_H_ 1 + +/* Registers and associated bit numbers */ + +/* Reserved [0x00..0x03] */ + +#define ADCW _SFR_IO16(0x04) +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif + +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +#define ADCSR _SFR_IO8(0x06) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADFR 5 +#define ADSC 6 +#define ADEN 7 + +#define ADMUX _SFR_IO8(0x07) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define ACSR _SFR_IO8(0x08) +#define ACIS0 0 +#define ACIS1 1 +#define ACME 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +/* Reserved [0x09..0x0C] */ + +#define USICR _SFR_IO8(0x0D) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_IO8(0x0E) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_IO8(0x0F) + +/* Reserved [0x10..0x15] */ + + +#define PINB _SFR_IO8(0x16) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x17) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x18) +#define PB0 0 +#define PB1 1 +#define PB2 2 +#define PB3 3 +#define PB4 4 +#define PB5 5 +#define PB6 6 +#define PB7 7 + +#define PINA _SFR_IO8(0x19) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x1A) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x1B) +#define PA0 0 +#define PA1 1 +#define PA2 2 +#define PA3 3 +#define PA4 4 +#define PA5 5 +#define PA6 6 +#define PA7 7 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) +#define EERE 0 +#define EEWE 1 +#define EEMWE 2 +#define EERIE 3 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO8(0x1E) +#define EEARL _SFR_IO8(0x1E) + +/* Reserved [0x1F..0x20] */ + +#define WDTCR _SFR_IO8(0x21) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 + +/* Reserved [0x22..0x28] */ + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PCKE 2 + +/* Reserved [0x2A] */ + +#define OCR1C _SFR_IO8(0x2B) + +#define OCR1B _SFR_IO8(0x2C) + +#define OCR1A _SFR_IO8(0x2D) + +#define TCNT1 _SFR_IO8(0x2E) + +#define TCCR1B _SFR_IO8(0x2F) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define CS13 3 +#define PSR1 6 +#define CTC1 7 + +#define TCCR1A _SFR_IO8(0x30) +#define PWM1B 0 +#define PWM1A 1 +#define FOC1B 2 +#define FOC1A 3 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define OSCCAL _SFR_IO8(0x31) + +#define TCNT0 _SFR_IO8(0x32) + +#define TCCR0 _SFR_IO8(0x33) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define PSR0 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define ISC00 0 +#define ISC01 1 +#define SM0 3 +#define SM1 4 +#define SE 5 +#define PUD 6 + +/* Reserved [0x36..0x37] */ + +#define TIFR _SFR_IO8(0x38) +#define TOV0 1 +#define TOV1 2 +#define OCF1B 5 +#define OCF1A 6 + +#define TIMSK _SFR_IO8(0x39) +#define TOIE0 1 +#define TOIE1 2 +#define OCIE1B 5 +#define OCIE1A 6 + +#define GIFR _SFR_IO8(0x3A) +#define PCIF 5 +#define INTF0 6 + +#define GIMSK _SFR_IO8(0x3B) +#define PCIE0 4 +#define PCIE1 5 +#define INT0 6 + +/* Reserved [0x3C] */ + +/* SP [0x3D] */ + +/* Reserved [0x3E] */ + +/* SREG [0x3F] */ + + +/* Interrupt vectors */ +/* Interrupt vector 0 is the reset vector. */ +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt Request 0 */ +#define IO_PINS_vect _VECTOR(2) +#define SIG_PIN_CHANGE _VECTOR(2) + +/* Timer/Counter1 Compare Match 1A */ +#define TIMER1_CMPA_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE1A _VECTOR(3) + +/* Timer/Counter1 Compare Match 1B */ +#define TIMER1_CMPB_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1B _VECTOR(4) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF1_vect _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(5) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF0_vect _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(6) + +/* USI Start */ +#define USI_STRT_vect _VECTOR(7) +#define SIG_USI_START _VECTOR(7) + +/* USI Overflow */ +#define USI_OVF_vect _VECTOR(8) +#define SIG_USI_OVERFLOW _VECTOR(8) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(9) +#define SIG_EEPROM_READY _VECTOR(9) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(10) +#define SIG_ANA_COMP _VECTOR(10) +#define SIG_COMPARATOR _VECTOR(10) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(11) +#define SIG_ADC _VECTOR(11) + +#define _VECTORS_SIZE 24 + + +/* Constants */ +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 4 +#define FLASHEND 0x07FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 2 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOPT (unsigned char)~_BV(6) +#define FUSE_PLLCK (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL1 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0) + +/* High Fuse Byte */ +#define FUSE_BODEN (unsigned char)~_BV(0) +#define FUSE_BODLEVEL (unsigned char)~_BV(1) +#define FUSE_EESAVE (unsigned char)~_BV(2) +#define FUSE_SPIEN (unsigned char)~_BV(3) +#define FUSE_RSTDISBL (unsigned char)~_BV(4) +#define HFUSE_DEFAULT (FUSE_SPIEN) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x09 + + +#endif /* _AVR_IOTN26_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn261.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn261.h new file mode 100644 index 0000000..79bb770 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn261.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2006, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn261.h,v 1.3.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn261.h - definitions for ATtiny261 */ + +#ifndef _AVR_IOTN261_H_ +#define _AVR_IOTN261_H_ 1 + +#include + +#define SPM_PAGESIZE 32 +#define RAMEND 0xDF +#define XRAMEND 0xDF +#define E2END 0x7F +#define E2PAGESIZE 4 +#define FLASHEND 0x7FF + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x0C + + +#endif /* _AVR_IOTN261_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn28.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn28.h new file mode 100644 index 0000000..fe02d8d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn28.h @@ -0,0 +1,275 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn28.h,v 1.9.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn28.h - definitions for ATtiny28 */ + +#ifndef _AVR_IOTN28_H_ +#define _AVR_IOTN28_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn28.h" +#else +# error "Attempt to include more than one file." +#endif + +#ifndef __ASSEMBLER__ +# warning "MCU not supported by the C compiler" +#endif + +/* I/O registers */ + +#define OSCCAL _SFR_IO8(0x00) + +#define WDTCR _SFR_IO8(0x01) + +#define MODCR _SFR_IO8(0x02) + +#define TCNT0 _SFR_IO8(0x03) +#define TCCR0 _SFR_IO8(0x04) + +#define IFR _SFR_IO8(0x05) +#define ICR _SFR_IO8(0x06) + +#define MCUCS _SFR_IO8(0x07) + +#define ACSR _SFR_IO8(0x08) + +/* 0x09..0x0F reserved */ + +#define PIND _SFR_IO8(0x10) +#define DDRD _SFR_IO8(0x11) +#define PORTD _SFR_IO8(0x12) + +/* 0x13..0x15 reserved */ + +#define PINB _SFR_IO8(0x16) + +/* 0x17..0x18 reserved */ + +#define PINA _SFR_IO8(0x19) +#define PACR _SFR_IO8(0x1A) +#define PORTA _SFR_IO8(0x1B) + +/* 0x1C..0x3E reserved */ + +/* 0x3F SREG */ + +/* Interrupt vectors */ + +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(2) +#define SIG_INTERRUPT1 _VECTOR(2) + +/* Low-level Input on Port B */ +#define LOWLEVEL_IO_PINS_vect _VECTOR(3) +#define SIG_PIN _VECTOR(3) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW0 _VECTOR(4) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(5) +#define SIG_COMPARATOR _VECTOR(5) + +#define _VECTORS_SIZE 12 + + +/* Bit numbers */ + +/* ICR */ +#define INT1 7 +#define INT0 6 +#define LLIE 5 +#define TOIE0 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 + +/* IFR */ +#define INTF1 7 +#define INTF0 6 +#define TOV0 4 + +/* MCUCS */ +#define PLUPB 7 +#define SE 5 +#define SM 4 +#define WDRF 3 +#define EXTRF 1 +#define PORF 0 + +/* TCCR0 */ +#define FOV0 7 +#define OOM01 4 +#define OOM00 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +/* MODCR */ +#define ONTIM4 7 +#define ONTIM3 6 +#define ONTIM2 5 +#define ONTIM1 4 +#define ONTIM0 3 +#define MCONF2 2 +#define MCONF1 1 +#define MCONF0 0 + +/* WDTCR */ +#define WDTOE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +/* + PA2 = IR + */ + +/* PORTA */ +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* PACR */ +#define DDA3 3 +#define PA2HC 2 +#define DDA1 1 +#define DDA0 0 + +/* PINA */ +#define PINA3 3 +#define PINA1 1 +#define PINA0 0 + +/* + PB4 = INT1 + PB3 = INT0 + PB2 = T0 + PB1 = AIN1 + PB0 = AIN0 + */ + +/* PINB */ +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +/* PORTD */ +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* DDRD */ +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +/* PIND */ +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +/* ACSR */ +#define ACD 7 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIS1 1 +#define ACIS0 0 + +/* Last memory addresses */ +#define RAMEND 0x1F +#define XRAMEND 0x0 +#define E2END 0x0 +#define E2PAGESIZE 0 +#define FLASHEND 0x7FF + + +/* Fuses */ + +#define FUSE_MEMORY_SIZE 1 + +/* Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_INTCAP (unsigned char)~_BV(4) +#define FUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x91 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_IOTN28_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn43u.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn43u.h new file mode 100644 index 0000000..5df208a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn43u.h @@ -0,0 +1,575 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iotn43u.h,v 1.4.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn43u.h - definitions for ATtiny43U */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn43u.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOTN43U_H_ +#define _AVR_IOTN43U_H_ 1 + +/* Registers and associated bit numbers */ + +#define PRR _SFR_IO8(0x00) +#define PRADC 0 +#define PRUSI 1 +#define PRTIM0 2 +#define PRTIM1 3 + +#define DIDR0 _SFR_IO8(0x01) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define AIN0D 4 +#define AIN1D 5 + +/* Reserved [0x02] */ + +#define ADCSRB _SFR_IO8(0x03) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ADLAR 4 +#define ACME 6 + +#define ADC _SFR_IO16(0x04) + +#define ADCL _SFR_IO8(0x04) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_IO8(0x05) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_IO8(0x06) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADMUX _SFR_IO8(0x07) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define REFS0 6 + +#define ACSR _SFR_IO8(0x08) +#define ACIS0 0 +#define ACIS1 1 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +/* Reserved [0x09], [0x0A] */ + +#define TIFR1 _SFR_IO8(0x0B) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 + +#define TIMSK1 _SFR_IO8(0x0C) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 + +#define USICR _SFR_IO8(0x0D) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_IO8(0x0E) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_IO8(0x0F) +#define USIDR0 0 +#define USIDR1 1 +#define USIDR2 2 +#define USIDR3 3 +#define USIDR4 4 +#define USIDR5 5 +#define USIDR6 6 +#define USIDR7 7 + +#define USIBR _SFR_IO8(0x10) +#define USIBR0 0 +#define USIBR1 1 +#define USIBR2 2 +#define USIBR3 3 +#define USIBR4 4 +#define USIBR5 5 +#define USIBR6 6 +#define USIBR7 7 + +/* Reserved [0x11] */ + +#define PCMSK0 _SFR_IO8(0x12) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define GPIOR0 _SFR_IO8(0x13) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define GPIOR1 _SFR_IO8(0x14) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x15) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define PINB _SFR_IO8(0x16) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x17) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x18) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINA _SFR_IO8(0x19) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x1A) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x1B) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 +#define PORTA4 4 +#define PORTA5 5 +#define PORTA6 6 +#define PORTA7 7 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEARL _SFR_IO8(0x1E) + +/* Reserved [0x1F] */ + +#define PCMSK1 _SFR_IO8(0x20) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 + +#define WDTCSR _SFR_IO8(0x21) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +/* Reserved [0x22] */ + +#define GTCCR _SFR_IO8(0x23) +#define PSR10 0 +#define TSM 7 + +/* Reserved [0x24], [0x25] */ + +#define CLKPR _SFR_IO8(0x26) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +/* Reserved [0x27],[0x28],[0x29],[0x2A] */ + +#define OCR1B _SFR_IO8(0x2B) +#define OCR1B_0 0 +#define OCR1B_1 1 +#define OCR1B_2 2 +#define OCR1B_3 3 +#define OCR1B_4 4 +#define OCR1B_5 5 +#define OCR1B_6 6 +#define OCR1B_7 7 + +#define OCR1A _SFR_IO8(0x2C) +#define OCR1A_0 0 +#define OCR1A_1 1 +#define OCRA1_2 2 +#define OCRA1_3 3 +#define OCRA1_4 4 +#define OCRA1_5 5 +#define OCRA1_6 6 +#define OCRA1_7 7 + +#define TCNT1 _SFR_IO8(0x2D) +#define TCNT1_0 0 +#define TCNT1_1 1 +#define TCNT1_2 2 +#define TCNT1_3 3 +#define TCNT1_4 4 +#define TCNT1_5 5 +#define TCNT1_6 6 +#define TCNT1_7 7 + +#define TCCR1B _SFR_IO8(0x2E) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define FOC1B 6 +#define FOC1A 7 + +#define TCCR1A _SFR_IO8(0x2F) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR0A _SFR_IO8(0x30) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define OSCCAL _SFR_IO8(0x31) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define TCNT0 _SFR_IO8(0x32) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define TCCR0B _SFR_IO8(0x33) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define ISC00 0 +#define ISC01 1 +#define BODSE 2 +#define SM0 3 +#define SM1 4 +#define SE 5 +#define PUD 6 +#define BODS 7 + +#define OCR0A _SFR_IO8(0x36) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define RFLB 3 +#define CTPB 4 + +#define TIFR0 _SFR_IO8(0x38) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIMSK0 _SFR_IO8(0x39) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define GIFR _SFR_IO8(0x3A) +#define PCIF0 4 +#define PCIF1 5 +#define INTF0 6 + +#define GIMSK _SFR_IO8(0x3B) +#define PCIE0 4 +#define PCIE1 5 +#define INT0 6 + +#define OCR0B _SFR_IO8(0x3C) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + + + +/* Interrupt Vectors */ +/* Interrupt vector 0 is the reset vector. */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) + +/* Watchdog Time-out */ +#define WDT_vect _VECTOR(4) + +/* Timer/Counter1 Compare Match A */ +#define TIM1_COMPA_vect _VECTOR(5) + +/* Timer/Counter1 Compare Match B */ +#define TIM1_COMPB_vect _VECTOR(6) + +/* Timer/Counter1 Overflow */ +#define TIM1_OVF_vect _VECTOR(7) + +/* Timer/Counter0 Compare Match A */ +#define TIM0_COMPA_vect _VECTOR(8) + +/* Timer/Counter0 Compare Match B */ +#define TIM0_COMPB_vect _VECTOR(9) + +/* Timer/Counter0 Overflow */ +#define TIM0_OVF_vect _VECTOR(10) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(11) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(12) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(13) + +/* USI START */ +#define USI_START_vect _VECTOR(14) + +/* USI Overflow */ +#define USI_OVF_vect _VECTOR(15) + +#define _VECTORS_SIZE 32 + + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x15F +#define XRAMEND 0x00 +#define E2END 0x3F +#define E2PAGESIZE 4 +#define FLASHEND 0xFFF + + +/* Fuse Information */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x0C + + +#endif /* _AVR_IOTN43U_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn44.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn44.h new file mode 100644 index 0000000..46132ba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn44.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2005, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn44.h,v 1.3.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn44.h - definitions for ATtiny44 */ + +#ifndef _AVR_IOTN44_H_ +#define _AVR_IOTN44_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x15F +#define XRAMEND 0x15F +#define E2END 0xFF +#define E2PAGESIZE 4 +#define FLASHEND 0xFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x07 + + +#endif /* _AVR_IOTN44_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn45.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn45.h new file mode 100644 index 0000000..af9aec8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn45.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2005, Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn45.h,v 1.3.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn45.h - definitions for ATtiny45 */ + +#ifndef _AVR_IOTN45_H_ +#define _AVR_IOTN45_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x15F +#define XRAMEND 0x15F +#define E2END 0xFF +#define E2PAGESIZE 4 +#define FLASHEND 0xFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x06 + + +#endif /* _AVR_IOTN45_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn461.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn461.h new file mode 100644 index 0000000..fe986ea --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn461.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2006, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn461.h,v 1.3.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn461.h - definitions for ATtiny461 */ + +#ifndef _AVR_IOTN461_H_ +#define _AVR_IOTN461_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x15F +#define XRAMEND 0x15F +#define E2END 0xFF +#define E2PAGESIZE 4 +#define FLASHEND 0xFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x08 + + +#endif /* _AVR_IOTN461_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn48.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn48.h new file mode 100644 index 0000000..37d4fcf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn48.h @@ -0,0 +1,759 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iotn48.h,v 1.4.2.9 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn48.h - definitions for ATtiny43U */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn48.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOTN48_H_ +#define _AVR_IOTN48_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINA _SFR_IO8(0x0C) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 + +#define DDRA _SFR_IO8(0x0D) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 + +#define PORTA _SFR_IO8(0x0E) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 + +#define PORTCR _SFR_IO8(0x12) +#define PUDA 0 +#define PUDB 1 +#define PUDC 2 +#define PUDD 3 +#define BBMA 4 +#define BBMB 5 +#define BBMC 6 +#define BBMD 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 +#define PCIF3 3 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define CTC0 3 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCROA_0 0 +#define OCROA_1 1 +#define OCROA_2 2 +#define OCROA_3 3 +#define OCROA_4 4 +#define OCROA_5 5 +#define OCROA_6 6 +#define OCROA_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define PUD 4 +#define BODSE 5 +#define BODS 6 + +#define SPMCSR _SFR_IO8(0x37) +#define SELFPRGEN 0 +#define PGERS 1 +#define PGWRT 2 +#define RFLB 3 +#define CTPB 4 +#define RWWSB 6 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTWI 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 +#define PCIE3 3 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 + +#define PCMSK3 _SFR_MEM8(0x6A) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 +#define AREFD 2 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 2 +#define TWS4 3 +#define TWS5 4 +#define TWS6 5 +#define TWS7 6 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 1 +#define TWAM1 2 +#define TWAM2 3 +#define TWAM3 4 +#define TWAM4 5 +#define TWAM5 6 +#define TWAM6 7 + +#define TWIHSR _SFR_MEM8(0xBE) +#define TWIHS 0 + + +/* Interrupt Vectors */ +/* Interrupt vector 0 is the reset vector. */ + +#define INT0_vect _VECTOR(1) +#define INT1_vect _VECTOR(2) +#define PCINT0_vect _VECTOR(3) +#define PCINT1_vect _VECTOR(4) +#define PCINT2_vect _VECTOR(5) +#define PCINT3_vect _VECTOR(6) +#define WDT_vect _VECTOR(7) +#define TIMER1_CAPT_vect _VECTOR(8) +#define TIMER1_COMPA_vect _VECTOR(9) +#define TIMER1_COMPB_vect _VECTOR(10) +#define TIMER1_OVF_vect _VECTOR(11) +#define TIMER0_COMPA_vect _VECTOR(12) +#define TIMER0_COMPB_vect _VECTOR(13) +#define TIMER0_OVF_vect _VECTOR(14) +#define SPI_STC_vect _VECTOR(15) +#define ADC_vect _VECTOR(16) +#define EE_READY_vect _VECTOR(17) +#define ANALOG_COMP_vect _VECTOR(18) +#define TWI_vect _VECTOR(19) + +#define _VECTORS_SIZE 40 + + +/* Constants */ +#define SPM_PAGESIZE 32 +#define RAMEND 0x1FF +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x3F +#define E2PAGESIZE 4 +#define FLASHEND 0xFFF + + +/* Fuse Information */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) /* Self Programming Enable */ +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x92 +#define SIGNATURE_2 0x09 + + +#endif /* _AVR_IOTN48_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn84.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn84.h new file mode 100644 index 0000000..6731412 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn84.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2005, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn84.h,v 1.3.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn84.h - definitions for ATtiny84 */ + +#ifndef _AVR_IOTN84_H_ +#define _AVR_IOTN84_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x25F +#define XRAMEND 0x25F +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define FUSE_HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x0C + + +#endif /* _AVR_IOTN84_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn85.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn85.h new file mode 100644 index 0000000..4e63654 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn85.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2005, Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn85.h,v 1.3.2.5 2008/10/17 23:27:52 arcanum Exp $ */ + +/* avr/iotn85.h - definitions for ATtiny85 */ + +#ifndef _AVR_IOTN85_H_ +#define _AVR_IOTN85_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x25F +#define XRAMEND 0x25F +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x0B + + +#endif /* _AVR_IOTN85_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn861.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn861.h new file mode 100644 index 0000000..857a386 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn861.h @@ -0,0 +1,89 @@ +/* Copyright (c) 2006, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotn861.h,v 1.3.2.5 2008/10/17 23:27:53 arcanum Exp $ */ + +/* avr/iotn861.h - definitions for ATtiny861 */ + +#ifndef _AVR_IOTN861_H_ +#define _AVR_IOTN861_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 64 +#define RAMEND 0x25F +#define XRAMEND 0x25F +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_DWEN (unsigned char)~_BV(6) +#define FUSE_RSTDISBL (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN (unsigned char)~_BV(0) +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x0D + + +#endif /* _AVR_IOTN861_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn88.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn88.h new file mode 100644 index 0000000..13ef305 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotn88.h @@ -0,0 +1,760 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iotn88.h,v 1.2.2.7 2008/10/17 23:27:53 arcanum Exp $ */ + +/* avr/iotn88.h - definitions for ATtiny88 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotn88.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_IOTN88_H_ +#define _AVR_IOTN88_H_ 1 + +/* Registers and associated bit numbers */ + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define PINA _SFR_IO8(0x0C) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 + +#define DDRA _SFR_IO8(0x0D) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 + +#define PORTA _SFR_IO8(0x0E) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 + +#define PORTCR _SFR_IO8(0x12) +#define PUDA 0 +#define PUDB 1 +#define PUDC 2 +#define PUDD 3 +#define BBMA 4 +#define BBMB 5 +#define BBMC 6 +#define BBMD 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 +#define PCIF3 3 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define CTC0 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define PUD 4 +#define BODSE 5 +#define BODS 6 + +#define SPMCSR _SFR_IO8(0x37) +#define SELFPRGEN 0 +#define PGERS 1 +#define PGWRT 2 +#define RFLB 3 +#define CTPB 4 +#define RWWSB 6 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR _SFR_MEM8(0x64) +#define PRADC 0 +#define PRSPI 2 +#define PRTIM1 3 +#define PRTIM0 5 +#define PRTWI 7 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 +#define PCIE3 3 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 + +#define PCMSK3 _SFR_MEM8(0x6A) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 +#define AREFD 2 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BL0 0 +#define OCR1BL1 1 +#define OCR1BL2 2 +#define OCR1BL3 3 +#define OCR1BL4 4 +#define OCR1BL5 5 +#define OCR1BL6 6 +#define OCR1BL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1BH0 0 +#define OCR1BH1 1 +#define OCR1BH2 2 +#define OCR1BH3 3 +#define OCR1BH4 4 +#define OCR1BH5 5 +#define OCR1BH6 6 +#define OCR1BH7 7 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 1 +#define TWAM1 2 +#define TWAM2 3 +#define TWAM3 4 +#define TWAM4 5 +#define TWAM5 6 +#define TWAM6 7 + +#define TWHSR _SFR_MEM8(0xBE) +#define TWIHS 0 + + + +/* Interrupt Vectors */ +/* Interrupt vector 0 is the reset vector. */ + +#define INT0_vect _VECTOR(1) +#define INT1_vect _VECTOR(2) +#define PCINT0_vect _VECTOR(3) +#define PCINT1_vect _VECTOR(4) +#define PCINT2_vect _VECTOR(5) +#define PCINT3_vect _VECTOR(6) +#define WDT_vect _VECTOR(7) +#define TIMER1_CAPT_vect _VECTOR(8) +#define TIMER1_COMPA_vect _VECTOR(9) +#define TIMER1_COMPB_vect _VECTOR(10) +#define TIMER1_OVF_vect _VECTOR(11) +#define TIMER0_COMPA_vect _VECTOR(12) +#define TIMER0_COMPB_vect _VECTOR(13) +#define TIMER0_OVF_vect _VECTOR(14) +#define SPI_STC_vect _VECTOR(15) +#define ADC_vect _VECTOR(16) +#define EE_READY_vect _VECTOR(17) +#define ANALOG_COMP_vect _VECTOR(18) +#define TWI_vect _VECTOR(19) + +#define _VECTORS_SIZE 40 + + +/* Constants */ +#define RAMEND 0x1FF +#define XRAMSIZE 0 +#define XRAMEND (RAMEND + XRAMSIZE) +#define E2END 0x3F +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF +#define SPM_PAGESIZE 32 + + +/* Fuse Information */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog Timer Always On */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_DWEN (unsigned char)~_BV(6) /* debugWIRE Enable */ +#define FUSE_RSTDISBL (unsigned char)~_BV(7) /* External reset disable */ +#define HFUSE_DEFAULT (FUSE_SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_SELFPRGEN ~_BV(0) /* Self Programming Enable */ +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x93 +#define SIGNATURE_2 0x11 + + +#endif /* _AVR_IOTN88_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx4.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx4.h new file mode 100644 index 0000000..58dd840 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx4.h @@ -0,0 +1,453 @@ +/* Copyright (c) 2005,2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotnx4.h,v 1.4 2007/05/14 22:21:41 joerg_wunsch Exp $ */ + +/* avr/iotnx4.h - definitions for ATtiny24, ATtiny44 and ATtiny84 */ + +#ifndef _AVR_IOTNX4_H_ +#define _AVR_IOTNX4_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotnx4.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +#define PRR _SFR_IO8 (0x00) +#define PRTIM1 3 +#define PRTIM0 2 +#define PRUSI 1 +#define PRADC 0 + +#define DIDR0 _SFR_IO8(0x01) +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +/* Reserved [0x02] */ + +#define ADCSRB _SFR_IO8 (0x03) +#define BIN 7 +#define ACME 6 +#define ADLAR 4 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +#define ADCSRA _SFR_IO8 (0x06) +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +#define ADMUX _SFR_IO8(0x07) +#define REFS1 7 +#define REFS0 6 +#define MUX5 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +#define ACSR _SFR_IO8(0x08) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +/* Reserved [0x09..0x0A] */ + +#define TIFR1 _SFR_IO8(0x0B) +#define ICF1 5 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +#define TIMSK1 _SFR_IO8(0x0C) +#define ICIE1 5 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +#define USICR _SFR_IO8(0x0D) +#define USISIE 7 +#define USIOIE 6 +#define USIWM1 5 +#define USIWM0 4 +#define USICS1 3 +#define USICS0 2 +#define USICLK 1 +#define USITC 0 + +#define USISR _SFR_IO8(0x0E) +#define USISIF 7 +#define USIOIF 6 +#define USIPF 5 +#define USIDC 4 +#define USICNT3 3 +#define USICNT2 2 +#define USICNT1 1 +#define USICNT0 0 + +#define USIDR _SFR_IO8(0x0F) + +#define USIBR _SFR_IO8(0x10) + +/* Reserved [0x11] */ + +#define PCMSK0 _SFR_IO8(0x12) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define GPIOR0 _SFR_IO8(0x13) + +#define GPIOR1 _SFR_IO8(0x14) + +#define GPIOR2 _SFR_IO8(0x15) + +#define PINB _SFR_IO8(0x16) +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x17) +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x18) +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINA _SFR_IO8(0x19) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0x1A) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0x1B) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +/* EEPROM Control Register EECR */ +#define EECR _SFR_IO8(0x1C) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define PCMSK1 _SFR_IO8(0x20) +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +#define WDTCSR _SFR_IO8(0x21) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define TCCR1C _SFR_IO8(0x22) +#define FOC1A 7 +#define FOC1B 6 + +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSR10 0 + +#define ICR1 _SFR_IO16(0x24) +#define ICR1L _SFR_IO8(0x24) +#define ICR1H _SFR_IO8(0x25) + +#define CLKPR _SFR_IO8(0x26) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +#define DWDR _SFR_IO8(0x27) + +#define OCR1B _SFR_IO16(0x28) +#define OCR1BL _SFR_IO8(0x28) +#define OCR1BH _SFR_IO8(0x29) + +#define OCR1A _SFR_IO16(0x2A) +#define OCR1AL _SFR_IO8(0x2A) +#define OCR1AH _SFR_IO8(0x2B) + +/* keep misspelled names from avr-libc 1.4.[0..1] for compatibility */ +#define OCRB1 _SFR_IO16(0x28) +#define OCRB1L _SFR_IO8(0x28) +#define OCRB1H _SFR_IO8(0x29) + +#define OCRA1 _SFR_IO16(0x2A) +#define OCRA1L _SFR_IO8(0x2A) +#define OCRA1H _SFR_IO8(0x2B) + +#define TCNT1 _SFR_IO16(0x2C) +#define TCNT1L _SFR_IO8(0x2C) +#define TCNT1H _SFR_IO8(0x2D) + +#define TCCR1B _SFR_IO8(0x2E) +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define TCCR1A _SFR_IO8(0x2F) +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define WGM11 1 +#define WGM10 0 + +#define TCCR0A _SFR_IO8(0x30) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define OSCCAL _SFR_IO8(0x31) + +#define TCNT0 _SFR_IO8(0x32) + +#define TCCR0B _SFR_IO8(0x33) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define MCUSR _SFR_IO8(0x34) +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0x35) +#define PUD 6 +#define SE 5 +#define SM1 4 +#define SM0 3 +#define ISC01 1 +#define ISC00 0 + +#define OCR0A _SFR_IO8(0x36) + +#define SPMCSR _SFR_IO8(0x37) +#define CTPB 4 +#define RFLB 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +#define TIFR0 _SFR_IO8(0x38) +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIMSK0 _SFR_IO8(0x39) +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define GIFR _SFR_IO8(0x3A) +#define INTF0 6 +#define PCIF1 5 +#define PCIF0 4 + +#define GIMSK _SFR_IO8(0x3B) +#define INT0 6 +#define PCIE1 5 +#define PCIE0 4 + +#define OCR0B _SFR_IO8(0x3C) + +/* 0x3D..0x3E SP [defined in ] */ +/* 0x3F SREG [defined in ] */ + +///--- + +/* Interrupt vectors */ +/* Interrupt vector 0 is the reset vector. */ +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) +#define EXT_INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE0 _VECTOR(2) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(3) +#define SIG_PIN_CHANGE1 _VECTOR(3) + +/* Watchdog Time-out */ +#define WDT_vect _VECTOR(4) +#define WATCHDOG_vect _VECTOR(4) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(4) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(5) +#define TIM1_CAPT_vect _VECTOR(5) +#define SIG_INPUT_CAPTURE1 _VECTOR(5) + +/* Timer/Counter1 Compare Match A */ +#define TIM1_COMPA_vect _VECTOR(6) +#define SIG_OUTPUT_COMPARE1A _VECTOR(6) + +/* Timer/Counter1 Compare Match B */ +#define TIM1_COMPB_vect _VECTOR(7) +#define SIG_OUTPUT_COMPARE1B _VECTOR(7) + +/* Timer/Counter1 Overflow */ +#define TIM1_OVF_vect _VECTOR(8) +#define SIG_OVERFLOW1 _VECTOR(8) + +/* Timer/Counter0 Compare Match A */ +#define TIM0_COMPA_vect _VECTOR(9) +#define SIG_OUTPUT_COMPARE0A _VECTOR(9) + +/* Timer/Counter0 Compare Match B */ +#define TIM0_COMPB_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0B _VECTOR(10) + +/* Timer/Counter0 Overflow */ +#define TIM0_OVF_vect _VECTOR(11) +#define SIG_OVERFLOW0 _VECTOR(11) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(12) +#define SIG_COMPARATOR _VECTOR(12) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(13) +#define SIG_ADC _VECTOR(13) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(14) +#define SIG_EEPROM_READY _VECTOR(14) + +/* USI START */ +#define USI_START_vect _VECTOR(15) +#define USI_STR_vect _VECTOR(15) +#define SIG_USI_START _VECTOR(15) + +/* USI Overflow */ +#define USI_OVF_vect _VECTOR(16) +#define SIG_USI_OVERFLOW _VECTOR(16) + +#define _VECTORS_SIZE 34 + +#endif /* _AVR_IOTNX4_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx5.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx5.h new file mode 100644 index 0000000..4f04cb9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx5.h @@ -0,0 +1,413 @@ +/* Copyright (c) 2005,2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotnx5.h,v 1.7 2007/10/30 10:39:06 joerg_wunsch Exp $ */ + +/* avr/iotnx5.h - definitions for ATtiny25, ATtiny45 and ATtiny85 */ + +#ifndef _AVR_IOTNX5_H_ +#define _AVR_IOTNX5_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotnx5.h" +#else +# error "Attempt to include more than one file." +#endif + +/* I/O registers */ + +/* Reserved [0x00..0x02] */ + +#define ADCSRB _SFR_IO8 (0x03) +#define BIN 7 +#define ACME 6 +#define IPR 5 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif +#define ADCW _SFR_IO16(0x04) +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +#define ADCSRA _SFR_IO8 (0x06) +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +#define ADMUX _SFR_IO8(0x07) +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define REFS2 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +#define ACSR _SFR_IO8(0x08) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIS1 1 +#define ACIS0 0 + +/* Reserved [0x09..0x0C] */ + +#define USICR _SFR_IO8(0x0D) +#define USISIE 7 +#define USIOIE 6 +#define USIWM1 5 +#define USIWM0 4 +#define USICS1 3 +#define USICS0 2 +#define USICLK 1 +#define USITC 0 + +#define USISR _SFR_IO8(0x0E) +#define USISIF 7 +#define USIOIF 6 +#define USIPF 5 +#define USIDC 4 +#define USICNT3 3 +#define USICNT2 2 +#define USICNT1 1 +#define USICNT0 0 + +#define USIDR _SFR_IO8(0x0F) +#define USIBR _SFR_IO8(0x10) + +#define GPIOR0 _SFR_IO8(0x11) +#define GPIOR1 _SFR_IO8(0x12) +#define GPIOR2 _SFR_IO8(0x13) + +#define DIDR0 _SFR_IO8(0x14) +#define ADC0D 5 +#define ADC2D 4 +#define ADC3D 3 +#define ADC1D 2 +#define AIN1D 1 +#define AIN0D 0 + +#define PCMSK _SFR_IO8(0x15) +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define PINB _SFR_IO8(0x16) +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x17) +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x18) +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +/* Reserved [0x19..0x1B] */ + +/* EEPROM Control Register EECR */ +#define EECR _SFR_IO8(0x1C) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define PRR _SFR_IO8(0x20) +#define PRTIM1 3 +#define PRTIM0 2 +#define PRUSI 1 +#define PRADC 0 + +#define WDTCR _SFR_IO8(0x21) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define DWDR _SFR_IO8(0x22) + +#define DTPS1 _SFR_IO8(0x23) +#define DTPS11 1 +#define DTPS10 0 + +#define DT1B _SFR_IO8(0x24) +#define DT1BH3 7 +#define DT1BH2 6 +#define DT1BH1 5 +#define DT1BH0 4 +#define DT1BL3 3 +#define DT1BL2 2 +#define DT1BL1 1 +#define DT1BL0 0 + +#define DT1A _SFR_IO8(0x25) +#define DT1AH3 7 +#define DT1AH2 6 +#define DT1AH1 5 +#define DT1AH0 4 +#define DT1AL3 3 +#define DT1AL2 2 +#define DT1AL1 1 +#define DT1AL0 0 + +#define CLKPR _SFR_IO8(0x26) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +#define PLLCSR _SFR_IO8(0x27) +#define LSM 7 +#define PCKE 2 +#define PLLE 1 +#define PLOCK 0 + +#define OCR0B _SFR_IO8(0x28) + +#define OCR0A _SFR_IO8(0x29) + +#define TCCR0A _SFR_IO8(0x2A) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define OCR1B _SFR_IO8(0x2B) + +#define GTCCR _SFR_IO8(0x2C) +#define TSM 7 +#define PWM1B 6 +#define COM1B1 5 +#define COM1B0 4 +#define FOC1B 3 +#define FOC1A 2 +#define PSR1 1 +#define PSR0 0 + +#define OCR1C _SFR_IO8(0x2D) + +#define OCR1A _SFR_IO8(0x2E) + +#define TCNT1 _SFR_IO8(0x2F) + +#define TCCR1 _SFR_IO8(0x30) +#define CTC1 7 +#define PWM1A 6 +#define COM1A1 5 +#define COM1A0 4 +#define CS13 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define OSCCAL _SFR_IO8(0x31) + +#define TCNT0 _SFR_IO8(0x32) + +#define TCCR0B _SFR_IO8(0x33) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define MCUSR _SFR_IO8(0x34) +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0x35) +#define PUD 6 +#define SE 5 +#define SM1 4 +#define SM0 3 +#define ISC01 1 +#define ISC00 0 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define CTPB 4 +#define RFLB 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +#define TIFR _SFR_IO8(0x38) +#define OCF1A 6 +#define OCF1B 5 +#define OCF0A 4 +#define OCF0B 3 +#define TOV1 2 +#define TOV0 1 + +#define TIMSK _SFR_IO8(0x39) +#define OCIE1A 6 +#define OCIE1B 5 +#define OCIE0A 4 +#define OCIE0B 3 +#define TOIE1 2 +#define TOIE0 1 + +#define GIFR _SFR_IO8(0x3A) +#define INTF0 6 +#define PCIF 5 + +#define GIMSK _SFR_IO8(0x3B) +#define INT0 6 +#define PCIE 5 + +/* Reserved [0x3C] */ + +/* 0x3D..0x3E SP [defined in ] */ +/* 0x3F SREG [defined in ] */ + +///--- + +/* Interrupt vectors */ +/* Interrupt vector 0 is the reset vector. */ +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(2) +#define SIG_PIN_CHANGE _VECTOR(2) + +/* Timer/Counter1 Compare Match 1A */ +#define TIM1_COMPA_vect _VECTOR(3) +#define TIMER1_COMPA_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE1A _VECTOR(3) + +/* Timer/Counter1 Overflow */ +#define TIM1_OVF_vect _VECTOR(4) +#define TIMER1_OVF_vect _VECTOR(4) +#define SIG_OVERFLOW1 _VECTOR(4) + +/* Timer/Counter0 Overflow */ +#define TIM0_OVF_vect _VECTOR(5) +#define TIMER0_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW0 _VECTOR(5) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(6) +#define SIG_EEPROM_READY _VECTOR(6) + +/* Analog comparator */ +#define ANA_COMP_vect _VECTOR(7) +#define SIG_COMPARATOR _VECTOR(7) + +/* ADC Conversion ready */ +#define ADC_vect _VECTOR(8) +#define SIG_ADC _VECTOR(8) + +/* Timer/Counter1 Compare Match B */ +#define TIM1_COMPB_vect _VECTOR(9) +#define TIMER1_COMPB_vect _VECTOR(9) +#define SIG_OUTPUT_COMPARE1B _VECTOR(9) + +/* Timer/Counter0 Compare Match A */ +#define TIM0_COMPA_vect _VECTOR(10) +#define TIMER0_COMPA_vect _VECTOR(10) +#define SIG_OUTPUT_COMPARE0A _VECTOR(10) + +/* Timer/Counter0 Compare Match B */ +#define TIM0_COMPB_vect _VECTOR(11) +#define TIMER0_COMPB_vect _VECTOR(11) +#define SIG_OUTPUT_COMPARE0B _VECTOR(11) + +/* Watchdog Time-out */ +#define WDT_vect _VECTOR(12) +#define SIG_WATCHDOG_TIMEOUT _VECTOR(12) + +/* USI START */ +#define USI_START_vect _VECTOR(13) +#define SIG_USI_START _VECTOR(13) + +/* USI Overflow */ +#define USI_OVF_vect _VECTOR(14) +#define SIG_USI_OVERFLOW _VECTOR(14) + +#define _VECTORS_SIZE 30 + +#endif /* _AVR_IOTNX5_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx61.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx61.h new file mode 100644 index 0000000..2006323 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iotnx61.h @@ -0,0 +1,515 @@ +/* Copyright (c) 2006, 2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iotnx61.h,v 1.6.2.1 2008/09/08 16:47:37 arcanum Exp $ */ + +/* avr/iotnx61.h - definitions for ATtiny261, ATtiny461 and ATtiny861 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iotnx61.h" +#else +# error "Attempt to include more than one file." +#endif + +#ifndef _AVR_IOTNx61_H_ +#define _AVR_IOTNx61_H_ 1 + +/* Registers and associated bit numbers */ + +#define TCCR1E _SFR_IO8(0x00) +#define OC1OE0 0 +#define OC1OE1 1 +#define OC1OE2 2 +#define OC1OE3 3 +#define OC1OE4 4 +#define OC1OE5 5 + +#define DIDR0 _SFR_IO8(0x01) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define AREFD 3 +#define ADC3D 4 +#define ADC4D 5 +#define ADC5D 6 +#define ADC6D 7 + +#define DIDR1 _SFR_IO8(0x02) +#define ADC7D 4 +#define ADC8D 5 +#define ADC9D 6 +#define ADC10D 7 + +#define ADCSRB _SFR_IO8(0x03) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define MUX5 3 +#define REFS2 4 +#define IRP 5 +#define GSEL 6 +#define BIN 7 + +#define ADCW _SFR_IO16(0x04) +#ifndef __ASSEMBLER__ +#define ADC _SFR_IO16(0x04) +#endif + +#define ADCL _SFR_IO8(0x04) +#define ADCH _SFR_IO8(0x05) + +#define ADCSRA _SFR_IO8(0x06) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADMUX _SFR_IO8(0x07) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define ACSRA _SFR_IO8(0x08) +#define ACIS0 0 +#define ACIS1 1 +#define ACME 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define ACSRB _SFR_IO8(0x09) +#define ACM0 0 +#define ACM1 1 +#define ACM2 2 +#define HLEV 6 +#define HSEL 7 + +#define GPIOR0 _SFR_IO8(0x0A) + +#define GPIOR1 _SFR_IO8(0x0B) + +#define GPIOR2 _SFR_IO8(0x0C) + +#define USICR _SFR_IO8(0x0D) +#define USITC 0 +#define USICLK 1 +#define USICS0 2 +#define USICS1 3 +#define USIWM0 4 +#define USIWM1 5 +#define USIOIE 6 +#define USISIE 7 + +#define USISR _SFR_IO8(0x0E) +#define USICNT0 0 +#define USICNT1 1 +#define USICNT2 2 +#define USICNT3 3 +#define USIDC 4 +#define USIPF 5 +#define USIOIF 6 +#define USISIF 7 + +#define USIDR _SFR_IO8(0x0F) + +#define USIBR _SFR_IO8(0x10) + +#define USIPP _SFR_IO8(0x11) +#define USIPOS 0 + +#define OCR0B _SFR_IO8(0x12) + +#define OCR0A _SFR_IO8(0x13) + +#define TCNT0H _SFR_IO8(0x14) + +#define TCCR0A _SFR_IO8(0x15) +#define WGM00 0 +#define ACIC0 3 +#define ICES0 4 +#define ICNC0 5 +#define ICEN0 6 +#define TCW0 7 + +#define PINB _SFR_IO8(0x16) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x17) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x18) +#define PB0 0 +#define PB1 1 +#define PB2 2 +#define PB3 3 +#define PB4 4 +#define PB5 5 +#define PB6 6 +#define PB7 7 + +#define PINA _SFR_IO8(0x19) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x1A) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x1B) +#define PA0 0 +#define PA1 1 +#define PA2 2 +#define PA3 3 +#define PA4 4 +#define PA5 5 +#define PA6 6 +#define PA7 7 + +/* EEPROM Control Register */ +#define EECR _SFR_IO8(0x1C) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +/* EEPROM Data Register */ +#define EEDR _SFR_IO8(0x1D) + +/* EEPROM Address Register */ +#define EEAR _SFR_IO16(0x1E) +#define EEARL _SFR_IO8(0x1E) +#define EEARH _SFR_IO8(0x1F) + +#define DWDR _SFR_IO8(0x20) + +#define WDTCR _SFR_IO8(0x21) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define PCMSK1 _SFR_IO8(0x22) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK0 _SFR_IO8(0x23) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define DT1 _SFR_IO8(0x24) +#define DT1L0 0 +#define DT1L1 1 +#define DT1L2 2 +#define DT1L3 3 +#define DT1H0 4 +#define DT1H1 5 +#define DT1H2 6 +#define DT1H3 7 + +#define TC1H _SFR_IO8(0x25) +#define TC18 0 +#define TC19 1 + +#define TCCR1D _SFR_IO8(0x26) +#define WGM10 0 +#define WGM11 1 +#define FPF1 2 +#define FPAC1 3 +#define FPES1 4 +#define FPNC1 5 +#define FPEN1 6 +#define FPIE1 7 + +#define TCCR1C _SFR_IO8(0x27) +#define PWM1D 0 +#define FOC1D 1 +#define COM1D0 2 +#define COM1D1 3 +#define COM1B0S 4 +#define COM1B1S 5 +#define COM1A0S 6 +#define COM1A1S 7 + +#define CLKPR _SFR_IO8(0x28) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PLLCSR _SFR_IO8(0x29) +#define PLOCK 0 +#define PLLE 1 +#define PCKE 2 +#define LSM 7 + +#define OCR1D _SFR_IO8(0x2A) + +#define OCR1C _SFR_IO8(0x2B) + +#define OCR1B _SFR_IO8(0x2C) + +#define OCR1A _SFR_IO8(0x2D) + +#define TCNT1 _SFR_IO8(0x2E) + +#define TCCR1B _SFR_IO8(0x2F) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define CS13 3 +#define DTPS10 4 +#define DTPS11 5 +#define PSR1 6 +#define PWM1X 7 + +#define TCCR1A _SFR_IO8(0x30) +#define PWM1B 0 +#define PWM1A 1 +#define FOC1B 2 +#define FOC1A 3 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define OSCCAL _SFR_IO8(0x31) + +#define TCNT0L _SFR_IO8(0x32) + +#define TCCR0B _SFR_IO8(0x33) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define PSR0 3 +#define TSM 4 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 + +#define MCUCR _SFR_IO8(0x35) +#define ISC00 0 +#define ISC01 1 +#define SM0 3 +#define SM1 4 +#define SE 5 +#define PUD 6 + +#define PRR _SFR_IO8(0x36) +#define PRADC 0 +#define PRUSI 1 +#define PRTIM0 2 +#define PRTIM1 3 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define RFLB 3 +#define CTPB 4 + +#define TIFR _SFR_IO8(0x38) +#define ICF0 0 +#define TOV0 1 +#define TOV1 2 +#define OCF0B 3 +#define OCF0A 4 +#define OCF1B 5 +#define OCF1A 6 +#define OCF1D 7 + +#define TIMSK _SFR_IO8(0x39) +#define TICIE0 0 +#define TOIE0 1 +#define TOIE1 2 +#define OCIE0B 3 +#define OCIE0A 4 +#define OCIE1B 5 +#define OCIE1A 6 +#define OCIE1D 7 + +#define GIFR _SFR_IO8(0x3A) +#define PCIF 5 +#define INTF0 6 +#define INTF1 7 + +#define GIMSK _SFR_IO8(0x3B) +#define PCIE0 4 +#define PCIE1 5 +#define INT0 6 +#define INT1 7 + +/* Reserved [0x3C] */ + +/* 0x3D..0x3E SP [defined in ] */ +/* 0x3F SREG [defined in ] */ + + +/* Interrupt vectors */ +/* Interrupt vector 0 is the reset vector. */ +/* External Interrupt 0 */ +#define INT0_vect _VECTOR(1) +#define SIG_INTERRUPT0 _VECTOR(1) + +/* Pin Change Interrupt */ +#define PCINT_vect _VECTOR(2) +#define SIG_PIN_CHANGE _VECTOR(2) + +/* Timer/Counter1 Compare Match 1A */ +#define TIMER1_COMPA_vect _VECTOR(3) +#define SIG_OUTPUT_COMPARE1A _VECTOR(3) + +/* Timer/Counter1 Compare Match 1B */ +#define TIMER1_COMPB_vect _VECTOR(4) +#define SIG_OUTPUT_COMPARE1B _VECTOR(4) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(5) +#define SIG_OVERFLOW1 _VECTOR(5) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(6) +#define SIG_OVERFLOW0 _VECTOR(6) + +/* USI Start */ +#define USI_START_vect _VECTOR(7) +#define SIG_USI_START _VECTOR(7) + +/* USI Overflow */ +#define USI_OVF_vect _VECTOR(8) +#define SIG_USI_OVERFLOW _VECTOR(8) + +/* EEPROM Ready */ +#define EE_RDY_vect _VECTOR(9) +#define SIG_EEPROM_READY _VECTOR(9) + +/* Analog Comparator */ +#define ANA_COMP_vect _VECTOR(10) +#define SIG_ANA_COMP _VECTOR(10) +#define SIG_COMPARATOR _VECTOR(10) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(11) +#define SIG_ADC _VECTOR(11) + +/* Watchdog Time-Out */ +#define WDT_vect _VECTOR(12) +#define SIG_WDT _VECTOR(12) + +/* External Interrupt 1 */ +#define INT1_vect _VECTOR(13) +#define SIG_INTERRUPT1 _VECTOR(13) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(14) +#define SIG_OUTPUT_COMPARE0A _VECTOR(14) + +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(15) +#define SIG_OUTPUT_COMPARE0B _VECTOR(15) + +/* ADC Conversion Complete */ +#define TIMER0_CAPT_vect _VECTOR(16) +#define SIG_INPUT_CAPTURE0 _VECTOR(16) + +/* Timer/Counter1 Compare Match D */ +#define TIMER1_COMPD_vect _VECTOR(17) +#define SIG_OUTPUT_COMPARE0D _VECTOR(17) + +/* Timer/Counter1 Fault Protection */ +#define FAULT_PROTECTION_vect _VECTOR(18) + +#define _VECTORS_SIZE 38 + +#endif /* _AVR_IOTNx61_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb1286.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb1286.h new file mode 100644 index 0000000..708c94a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb1286.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousb1286.h,v 1.2.2.5 2008/10/17 23:27:53 arcanum Exp $ */ + +/* avr/iousb1286.h - definitions for AT90USB1286 */ + +#ifndef _AVR_AT90USB1286_H_ +#define _AVR_AT90USB1286_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x20FF +#define XRAMEND 0xFFFF +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_HWBE (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (FUSE_BODLEVEL2 & FUSE_HWBE) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x82 + + +#endif /* _AVR_AT90USB1286_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb1287.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb1287.h new file mode 100644 index 0000000..311eac0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb1287.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousb1287.h,v 1.2.2.5 2008/10/17 23:27:53 arcanum Exp $ */ + +/* avr/iousb1287.h - definitions for AT90USB1287 */ + +#ifndef _AVR_AT90USB1287_H_ +#define _AVR_AT90USB1287_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x20FF +#define XRAMEND 0xFFFF +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_HWBE (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (FUSE_BODLEVEL2 & FUSE_HWBE) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x82 + + +#endif /* _AVR_AT90USB1287_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb162.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb162.h new file mode 100644 index 0000000..3931130 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb162.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousb162.h,v 1.2.2.4 2008/10/17 23:27:53 arcanum Exp $ */ + +/* avr/iousb162.h - definitions for AT90USB162 */ + +#ifndef _AVR_AT90USB162_H_ +#define _AVR_AT90USB162_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x2FF +#define XRAMEND 0x2FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x3FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (CKSEL0 & SUT1 & CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_RSTDSBL (unsigned char)~_BV(6) +#define FUSE_DWEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (BOOTSZ0 & BOOTSZ1 & SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_HWBE (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (BODLEVEL0 & BODLEVEL1 & HWBE) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x94 +#define SIGNATURE_2 0x82 + + +#endif /* _AVR_AT90USB162_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb646.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb646.h new file mode 100644 index 0000000..a0e7095 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb646.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousb646.h,v 1.2.2.4 2008/10/17 23:27:53 arcanum Exp $ */ + +/* avr/iousb646.h - definitions for AT90USB646 */ + +#ifndef _AVR_AT90USB646_H_ +#define _AVR_AT90USB646_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF +#define XRAMEND 0xFFFF +#define E2END 0x7FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (CKSEL0 & CKSEL2 & CKSEL3 & SUT0 & CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (BOOTSZ0 & BOOTSZ1 & SPIEN & JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_HWBE (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (BODLEVEL2 & HWBE) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x82 + + +#endif /* _AVR_AT90USB646_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb647.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb647.h new file mode 100644 index 0000000..7a6d043 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb647.h @@ -0,0 +1,94 @@ +/* Copyright (c) 2006 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousb647.h,v 1.2.2.4 2008/10/17 23:27:53 arcanum Exp $ */ + +/* avr/iousb647.h - definitions for AT90USB647 */ + +#ifndef _AVR_AT90USB647_H_ +#define _AVR_AT90USB647_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMEND 0x10FF +#define XRAMEND 0xFFFF +#define E2END 0x7FF +#define E2PAGESIZE 8 +#define FLASHEND 0xFFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (CKSEL0 & CKSEL2 & CKSEL3 & SUT0 & CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_JTAGEN (unsigned char)~_BV(6) +#define FUSE_OCDEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (BOOTSZ0 & BOOTSZ1 & SPIEN & JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_HWBE (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (BODLEVEL2 & HWBE) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x82 + + +#endif /* _AVR_AT90USB647_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb82.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb82.h new file mode 100644 index 0000000..09684f1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousb82.h @@ -0,0 +1,88 @@ +/* Copyright (c) 2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousb82.h,v 1.2.2.3 2008/08/14 00:08:08 arcanum Exp $ */ + +/* avr/iousb82.h - definitions for AT90USB82 */ + +#ifndef _AVR_AT90USB82_H_ +#define _AVR_AT90USB82_H_ 1 + +#include + +/* Constants */ +#define SPM_PAGESIZE 128 +#define RAMEND 0x2FF +#define XRAMEND 0x2FF +#define E2END 0x1FF +#define E2PAGESIZE 4 +#define FLASHEND 0x1FFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) +#define FUSE_CKSEL1 (unsigned char)~_BV(1) +#define FUSE_CKSEL2 (unsigned char)~_BV(2) +#define FUSE_CKSEL3 (unsigned char)~_BV(3) +#define FUSE_SUT0 (unsigned char)~_BV(4) +#define FUSE_SUT1 (unsigned char)~_BV(5) +#define FUSE_CKOUT (unsigned char)~_BV(6) +#define FUSE_CKDIV8 (unsigned char)~_BV(7) +#define LFUSE_DEFAULT (CKSEL0 & SUT1 & CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) +#define FUSE_EESAVE (unsigned char)~_BV(3) +#define FUSE_WDTON (unsigned char)~_BV(4) +#define FUSE_SPIEN (unsigned char)~_BV(5) +#define FUSE_RSTDSBL (unsigned char)~_BV(6) +#define FUSE_DWEN (unsigned char)~_BV(7) +#define HFUSE_DEFAULT (BOOTSZ0 & BOOTSZ1 & SPIEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) +#define FUSE_HWBE (unsigned char)~_BV(3) +#define EFUSE_DEFAULT (BODLEVEL0 & BODLEVEL1 & HWBE) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +#endif /* _AVR_AT90USB82_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousbxx2.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousbxx2.h new file mode 100644 index 0000000..0373ceb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousbxx2.h @@ -0,0 +1,766 @@ +/* Copyright (c) 2007 Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousbxx2.h,v 1.3 2007/05/12 11:40:46 aesok Exp $ */ + +/* iousbxx2.h - definitions for AT90USB82 and AT90USB162. */ + +#ifndef _AVR_IOUSBXX2_H_ +#define _AVR_IOUSBXX2_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iousbxx2.h" +#else +# error "Attempt to include more than one file." +#endif + +/* Registers and associated bit numbers */ + +/* Reserved [0x00..0x02] */ + +#define PINB _SFR_IO8(0X03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +/* Reserved [0xC..0x14] */ + +#define TIFR0 _SFR_IO8(0x15) +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIFR1 _SFR_IO8(0x16) +#define ICF1 5 +#define OCF1C 3 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +/* Reserved [0x17..0x1A] */ + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF1 1 +#define PCIF0 0 + +#define EIFR _SFR_IO8(0x1C) +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +#define EIMSK _SFR_IO8(0x1D) +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0x20) + +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0x22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSRASY 1 +#define PSRSYNC 0 + +#define TCCR0A _SFR_IO8(0x24) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define TCCR0B _SFR_IO8(0x25) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0x27) + +#define OCR0B _SFR_IO8(0X28) + +#define PLLCSR _SFR_IO8(0x29) +#define PLLP2 4 +#define PLLP1 3 +#define PLLP0 2 +#define PLLE 1 +#define PLOCK 0 + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +#define SPSR _SFR_IO8(0x2D) +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +#define SPDR _SFR_IO8(0x2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +#define DWDR _SFR_IO8(0x31) +#define IDRD 7 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +#define MCUSR _SFR_IO8(0x34) +#define USBRF 5 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0x35) +#define IVSEL 1 +#define IVCE 0 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMIE 7 +#define RWWSB 6 +#define SIGRD 5 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Reserved [0x38..0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCSR _SFR_MEM8(0x60) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +#define WDTCKD _SFR_MEM8(0x62) +#define WDEWIF 3 +#define WDEWIE 2 +#define WCLKD1 1 +#define WCLKD0 0 + +#define REGCR _SFR_MEM8(0x63) +#define REGDIS 0 + +#define PRR0 _SFR_MEM8(0x64) +#define PRTIM0 5 +#define PRTIM1 3 +#define PRSPI 2 + +#define PRR1 _SFR_MEM8(0x65) +#define PRUSB 7 +#define PRUSART1 0 + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67] */ + +#define PCICR _SFR_MEM8(0x68) +#define PCIE1 1 +#define PCIE0 0 + +#define EICRA _SFR_MEM8(0x69) +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +#define EICRB _SFR_MEM8(0x6A) +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT12 4 +#define PCINT11 3 +#define PCINT10 2 +#define PCINT9 1 +#define PCINT8 0 + +/* Reserved [0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define ICIE1 5 +#define OCIE1C 3 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +/* Reserved [0x70..0x7F] */ + +#define TCCR1A _SFR_MEM8(0x80) +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define COM1C1 3 +#define COM1C0 2 +#define WGM11 1 +#define WGM10 0 + +#define TCCR1B _SFR_MEM8(0x81) +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1A 7 +#define FOC1B 6 +#define FOC1C 5 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Combine OCR1CL and OCR1CH */ +#define OCR1C _SFR_MEM16(0x8C) + +#define OCR1CL _SFR_MEM8(0x8C) +#define OCR1CH _SFR_MEM8(0x8D) + +/* Reserved [0x8E..0xC7] */ + +#define UCSR1A _SFR_MEM8(0xC8) +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + +#define UCSR1B _SFR_MEM8(0XC9) +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UMSEL11 7 +#define UMSEL10 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 + +#define UCSR1D _SFR_MEM8(0xCB) +#define CTSEN 1 +#define RTSEN 0 + +/* Combine UBRR1L and UBRR1H */ +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1H _SFR_MEM8(0xCD) + +#define UDR1 _SFR_MEM8(0XCE) + +/* Reserved [0xCF] */ + +#define CKSEL0 _SFR_MEM8(0XD0) +#define RCSUT1 7 +#define RCSUT0 6 +#define EXSUT1 5 +#define EXSUT0 4 +#define RCE 3 +#define EXTE 2 +#define CLKS 0 + +#define CKSEL1 _SFR_MEM8(0XD1) +#define RCCKSEL3 7 +#define RCCKSEL2 6 +#define RCCKSEL1 5 +#define RCCKSEL0 4 +#define EXCKSEL3 3 +#define EXCKSEL2 2 +#define EXCKSEL1 1 +#define EXCKSEL0 0 + +#define CKSTA _SFR_MEM8(0XD2) +#define RCON 1 +#define EXTON 0 + +/* Reserved [0xD3..0xD7] */ + +#define USBCON _SFR_MEM8(0XD8) +#define USBE 7 +#define FRZCLK 5 + +/* Reserved [0xD9..0xDA] */ + +/* Combine UDPADDL and UDPADDH */ +#define UDPADD _SFR_MEM16(0xDB) + +#define UDPADDL _SFR_MEM8(0xDB) +#define UDPADDH _SFR_MEM8(0xDC) +#define DPACC 7 + +/* Reserved [0xDD..0xDF] */ + +#define UDCON _SFR_MEM8(0XE0) +#define RSTCPU 2 +#define RMWKUP 1 +#define DETACH 0 + +#define UDINT _SFR_MEM8(0XE1) +#define UPRSMI 6 +#define EORSMI 5 +#define WAKEUPI 4 +#define EORSTI 3 +#define SOFI 2 +#define SUSPI 0 + +#define UDIEN _SFR_MEM8(0XE2) +#define UPRSME 6 +#define EORSME 5 +#define WAKEUPE 4 +#define EORSTE 3 +#define SOFE 2 +#define SUSPE 0 + +#define UDADDR _SFR_MEM8(0XE3) +#define ADDEN 7 + +/* Combine UDFNUML and UDFNUMH */ +#define UDFNUM _SFR_MEM16(0xE4) + +#define UDFNUML _SFR_MEM8(0xE4) +#define UDFNUMH _SFR_MEM8(0xE5) + +#define UDMFN _SFR_MEM8(0XE6) +#define FNCERR 4 + +/* Reserved [0xE7] */ + +#define UEINTX _SFR_MEM8(0XE8) +#define FIFOCON 7 +#define NAKINI 6 +#define RWAL 5 +#define NAKOUTI 4 +#define RXSTPI 3 +#define RXOUTI 2 +#define STALLEDI 1 +#define TXINI 0 + +#define UENUM _SFR_MEM8(0XE9) +#define EPNUM2 2 +#define EPNUM1 1 +#define EPNUM0 0 + +#define UERST _SFR_MEM8(0XEA) +#define EPRST4 4 +#define EPRST3 3 +#define EPRST2 2 +#define EPRST1 1 +#define EPRST0 0 + +#define UECONX _SFR_MEM8(0XEB) +#define STALLRQ 5 +#define STALLRQC 4 +#define RSTDT 3 +#define EPEN 0 + +#define UECFG0X _SFR_MEM8(0XEC) +#define EPTYPE1 7 +#define EPTYPE0 6 +#define EPDIR 0 + +#define UECFG1X _SFR_MEM8(0XED) +#define EPSIZE2 6 +#define EPSIZE1 5 +#define EPSIZE0 4 +#define EPBK1 3 +#define EPBK0 2 +#define ALLOC 1 + +#define UESTA0X _SFR_MEM8(0XEE) +#define CFGOK 7 +#define OVERFI 6 +#define UNDERFI 5 +#define DTSEQ1 3 +#define DTSEQ0 2 +#define NBUSYBK1 1 +#define NBUSYBK0 0 + +#define UESTA1X _SFR_MEM8(0XEF) +#define CTRLDIR 2 +#define CURRBK1 1 +#define CURRBK0 0 + +#define UEIENX _SFR_MEM8(0XF0) +#define FLERRE 7 +#define NAKINE 6 +#define NAKOUTE 4 +#define RXSTPE 3 +#define RXOUTE 2 +#define STALLEDE 1 +#define TXINE 0 + +#define UEDATX _SFR_MEM8(0XF1) + +#define UEBCLX _SFR_MEM8(0xF2) + +/* Reserved [0xF3] */ + +#define UEINT _SFR_MEM8(0XF4) +#define EPINT4 4 +#define EPINT3 3 +#define EPINT2 2 +#define EPINT1 1 +#define EPINT0 0 + +/* Reserved [0xF5..0xF9] */ + +#define PS2CON _SFR_MEM8(0XFA) +#define PS2EN 0 + +#define UPOE _SFR_MEM8(0XFB) +#define UPWE1 7 +#define UPWE0 6 +#define UPDRV1 5 +#define UPDRV0 4 +#define SCKI 3 +#define DATAI 2 +#define DPI 1 +#define DMI 0 + +/* Reserved [0xFC..0xFF] */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(4) + +/* External Interrupt Request 4 */ +#define INT4_vect _VECTOR(5) + +/* External Interrupt Request 5 */ +#define INT5_vect _VECTOR(6) + +/* External Interrupt Request 6 */ +#define INT6_vect _VECTOR(7) + +/* External Interrupt Request 7 */ +#define INT7_vect _VECTOR(8) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(9) + +/* Pin Change Interrupt Request 1 */ +#define PCINT1_vect _VECTOR(10) + +/* USB General Interrupt Request */ +#define USB_GEN_vect _VECTOR(11) + +/* USB Endpoint/Pipe Interrupt Communication Request */ +#define USB_COM_vect _VECTOR(12) + +/* Watchdog Time-out Interrupt */ +#define WDT_vect _VECTOR(13) + +/* Timer/Counter2 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(14) + +/* Timer/Counter2 Compare Match B */ +#define TIMER1_COMPA_vect _VECTOR(15) + +/* Timer/Counter2 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(16) + +/* Timer/Counter2 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(17) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(18) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(19) + +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(20) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(21) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(22) + +/* USART1, Rx Complete */ +#define USART1_RX_vect _VECTOR(23) + +/* USART1 Data register Empty */ +#define USART1_UDRE_vect _VECTOR(24) + +/* USART1, Tx Complete */ +#define USART1_TX_vect _VECTOR(25) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(26) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(27) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(28) + +#define _VECTORS_SIZE 116 + +#endif /* _AVR_IOUSBXX2_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousbxx6_7.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousbxx6_7.h new file mode 100644 index 0000000..520df88 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iousbxx6_7.h @@ -0,0 +1,1285 @@ +/* Copyright (c) 2006, Anatoly Sokolov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iousbxx6_7.h,v 1.4.2.1 2008/05/05 01:58:21 arcanum Exp $ */ + +/* iousbxx6_7.h - definitions for AT90USB646, AT90USB647, AT90USB1286 + and AT90USB1287 */ + +#ifndef _AVR_IOUSBXX6_7_H_ +#define _AVR_IOUSBXX6_7_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iousbxx6_7.h" +#else +# error "Attempt to include more than one file." +#endif + +#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) +# define __AT90USBxx6__ 1 +#elif defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1287__) +# define __AT90USBxx7__ 1 +#endif + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0X00) +#define PINA7 7 +#define PINA6 6 +#define PINA5 5 +#define PINA4 4 +#define PINA3 3 +#define PINA2 2 +#define PINA1 1 +#define PINA0 0 + +#define DDRA _SFR_IO8(0X01) +#define DDA7 7 +#define DDA6 6 +#define DDA5 5 +#define DDA4 4 +#define DDA3 3 +#define DDA2 2 +#define DDA1 1 +#define DDA0 0 + +#define PORTA _SFR_IO8(0X02) +#define PA7 7 +#define PA6 6 +#define PA5 5 +#define PA4 4 +#define PA3 3 +#define PA2 2 +#define PA1 1 +#define PA0 0 + +#define PINB _SFR_IO8(0X03) +#define PINB7 7 +#define PINB6 6 +#define PINB5 5 +#define PINB4 4 +#define PINB3 3 +#define PINB2 2 +#define PINB1 1 +#define PINB0 0 + +#define DDRB _SFR_IO8(0x04) +#define DDB7 7 +#define DDB6 6 +#define DDB5 5 +#define DDB4 4 +#define DDB3 3 +#define DDB2 2 +#define DDB1 1 +#define DDB0 0 + +#define PORTB _SFR_IO8(0x05) +#define PB7 7 +#define PB6 6 +#define PB5 5 +#define PB4 4 +#define PB3 3 +#define PB2 2 +#define PB1 1 +#define PB0 0 + +#define PINC _SFR_IO8(0x06) +#define PINC7 7 +#define PINC6 6 +#define PINC5 5 +#define PINC4 4 +#define PINC3 3 +#define PINC2 2 +#define PINC1 1 +#define PINC0 0 + +#define DDRC _SFR_IO8(0x07) +#define DDC7 7 +#define DDC6 6 +#define DDC5 5 +#define DDC4 4 +#define DDC3 3 +#define DDC2 2 +#define DDC1 1 +#define DDC0 0 + +#define PORTC _SFR_IO8(0x08) +#define PC7 7 +#define PC6 6 +#define PC5 5 +#define PC4 4 +#define PC3 3 +#define PC2 2 +#define PC1 1 +#define PC0 0 + +#define PIND _SFR_IO8(0x09) +#define PIND7 7 +#define PIND6 6 +#define PIND5 5 +#define PIND4 4 +#define PIND3 3 +#define PIND2 2 +#define PIND1 1 +#define PIND0 0 + +#define DDRD _SFR_IO8(0x0A) +#define DDD7 7 +#define DDD6 6 +#define DDD5 5 +#define DDD4 4 +#define DDD3 3 +#define DDD2 2 +#define DDD1 1 +#define DDD0 0 + +#define PORTD _SFR_IO8(0x0B) +#define PD7 7 +#define PD6 6 +#define PD5 5 +#define PD4 4 +#define PD3 3 +#define PD2 2 +#define PD1 1 +#define PD0 0 + +#define PINE _SFR_IO8(0x0C) +#define PINE7 7 +#define PINE6 6 +#define PINE5 5 +#define PINE4 4 +#define PINE3 3 +#define PINE2 2 +#define PINE1 1 +#define PINE0 0 + +#define DDRE _SFR_IO8(0x0D) +#define DDE7 7 +#define DDE6 6 +#define DDE5 5 +#define DDE4 4 +#define DDE3 3 +#define DDE2 2 +#define DDE1 1 +#define DDE0 0 + +#define PORTE _SFR_IO8(0x0E) +#define PE7 7 +#define PE6 6 +#define PE5 5 +#define PE4 4 +#define PE3 3 +#define PE2 2 +#define PE1 1 +#define PE0 0 + +#define PINF _SFR_IO8(0x0F) +#define PINF7 7 +#define PINF6 6 +#define PINF5 5 +#define PINF4 4 +#define PINF3 3 +#define PINF2 2 +#define PINF1 1 +#define PINF0 0 + +#define DDRF _SFR_IO8(0x10) +#define DDF7 7 +#define DDF6 6 +#define DDF5 5 +#define DDF4 4 +#define DDF3 3 +#define DDF2 2 +#define DDF1 1 +#define DDF0 0 + +#define PORTF _SFR_IO8(0x11) +#define PF7 7 +#define PF6 6 +#define PF5 5 +#define PF4 4 +#define PF3 3 +#define PF2 2 +#define PF1 1 +#define PF0 0 + +/* Reserved [0x12..0x14] */ + +#define TIFR0 _SFR_IO8(0x15) +#define OCF0B 2 +#define OCF0A 1 +#define TOV0 0 + +#define TIFR1 _SFR_IO8(0x16) +#define ICF1 5 +#define OCF1C 3 +#define OCF1B 2 +#define OCF1A 1 +#define TOV1 0 + +#define TIFR2 _SFR_IO8(0x17) +#define OCF2B 2 +#define OCF2A 1 +#define TOV2 0 + +#define TIFR3 _SFR_IO8(0x18) +#define ICF3 5 +#define OCF3C 3 +#define OCF3B 2 +#define OCF3A 1 +#define TOV3 0 + +/* Reserved [0x19..0x1A] */ + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 + +#define EIFR _SFR_IO8(0x1C) +#define INTF7 7 +#define INTF6 6 +#define INTF5 5 +#define INTF4 4 +#define INTF3 3 +#define INTF2 2 +#define INTF1 1 +#define INTF0 0 + +#define EIMSK _SFR_IO8(0x1D) +#define INT7 7 +#define INT6 6 +#define INT5 5 +#define INT4 4 +#define INT3 3 +#define INT2 2 +#define INT1 1 +#define INT0 0 + +#define GPIOR0 _SFR_IO8(0x1E) + +#define EECR _SFR_IO8(0x1F) +#define EEPM1 5 +#define EEPM0 4 +#define EERIE 3 +#define EEMPE 2 +#define EEPE 1 +#define EERE 0 + +#define EEDR _SFR_IO8(0x20) + +#define EEAR _SFR_IO16(0x21) +#define EEARL _SFR_IO8(0x21) +#define EEARH _SFR_IO8(0x22) + +/* 6-char sequence denoting where to find the EEPROM registers in memory space. + Adresses denoted in hex syntax with uppercase letters. Used by the EEPROM + subroutines. + First two letters: EECR address. + Second two letters: EEDR address. + Last two letters: EEAR address. */ +#define __EEPROM_REG_LOCATIONS__ 1F2021 + +#define GTCCR _SFR_IO8(0x23) +#define TSM 7 +#define PSRASY 1 +#define PSRSYNC 0 + +#define TCCR0A _SFR_IO8(0x24) +#define COM0A1 7 +#define COM0A0 6 +#define COM0B1 5 +#define COM0B0 4 +#define WGM01 1 +#define WGM00 0 + +#define TCCR0B _SFR_IO8(0x25) +#define FOC0A 7 +#define FOC0B 6 +#define WGM02 3 +#define CS02 2 +#define CS01 1 +#define CS00 0 + +#define TCNT0 _SFR_IO8(0X26) + +#define OCR0A _SFR_IO8(0x27) + +#define OCR0B _SFR_IO8(0X28) + +#define PLLCSR _SFR_IO8(0x29) +#define PLLP2 4 +#define PLLP1 3 +#define PLLP0 2 +#define PLLE 1 +#define PLOCK 0 + +#define GPIOR1 _SFR_IO8(0x2A) + +#define GPIOR2 _SFR_IO8(0x2B) + +#define SPCR _SFR_IO8(0x2C) +#define SPIE 7 +#define SPE 6 +#define DORD 5 +#define MSTR 4 +#define CPOL 3 +#define CPHA 2 +#define SPR1 1 +#define SPR0 0 + +#define SPSR _SFR_IO8(0x2D) +#define SPIF 7 +#define WCOL 6 +#define SPI2X 0 + +#define SPDR _SFR_IO8(0x2E) + +/* Reserved [0x2F] */ + +#define ACSR _SFR_IO8(0x30) +#define ACD 7 +#define ACBG 6 +#define ACO 5 +#define ACI 4 +#define ACIE 3 +#define ACIC 2 +#define ACIS1 1 +#define ACIS0 0 + +#define MONDR _SFR_IO8(0x31) +#define OCDR _SFR_IO8(0x31) +#define IDRD 7 +#define OCDR7 7 +#define OCDR6 6 +#define OCDR5 5 +#define OCDR4 4 +#define OCDR3 3 +#define OCDR2 2 +#define OCDR1 1 +#define OCDR0 0 + +/* Reserved [0x32] */ + +#define SMCR _SFR_IO8(0x33) +#define SM2 3 +#define SM1 2 +#define SM0 1 +#define SE 0 + +#define MCUSR _SFR_IO8(0x34) +#define JTRF 4 +#define WDRF 3 +#define BORF 2 +#define EXTRF 1 +#define PORF 0 + +#define MCUCR _SFR_IO8(0x35) +#define JTD 7 +#define PUD 4 +#define IVSEL 1 +#define IVCE 0 + +/* Reserved [0x36] */ + +#define SPMCSR _SFR_IO8(0x37) +#define SPMIE 7 +#define RWWSB 6 +#define SIGRD 5 +#define RWWSRE 4 +#define BLBSET 3 +#define PGWRT 2 +#define PGERS 1 +#define SPMEN 0 + +/* Reserved [0x38..0x3A] */ + +#if defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) +#define RAMPZ _SFR_IO8(0x3B) +#endif + +/* Reserved [0x3C] */ + +/* SP [0x3D..0x3E] */ +/* SREG [0x3F] */ + +#define WDTCSR _SFR_MEM8(0x60) +#define WDIF 7 +#define WDIE 6 +#define WDP3 5 +#define WDCE 4 +#define WDE 3 +#define WDP2 2 +#define WDP1 1 +#define WDP0 0 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPCE 7 +#define CLKPS3 3 +#define CLKPS2 2 +#define CLKPS1 1 +#define CLKPS0 0 + +/* Reserved [0x62..0x63] */ + +#define PRR0 _SFR_MEM8(0x64) +#define PRTWI 7 +#define PRTIM2 6 +#define PRTIM0 5 +#define PRTIM1 3 +#define PRSPI 2 +#define PRADC 0 + +#define PRR1 _SFR_MEM8(0x65) +#define PRUSB 7 +#define PRTIM3 3 +#define PRUSART1 0 + +#define OSCCAL _SFR_MEM8(0x66) + +/* Reserved [0x67] */ + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 + +#define EICRA _SFR_MEM8(0x69) +#define ISC31 7 +#define ISC30 6 +#define ISC21 5 +#define ISC20 4 +#define ISC11 3 +#define ISC10 2 +#define ISC01 1 +#define ISC00 0 + +#define EICRB _SFR_MEM8(0x6A) +#define ISC71 7 +#define ISC70 6 +#define ISC61 5 +#define ISC60 4 +#define ISC51 3 +#define ISC50 2 +#define ISC41 1 +#define ISC40 0 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT7 7 +#define PCINT6 6 +#define PCINT5 5 +#define PCINT4 4 +#define PCINT3 3 +#define PCINT2 2 +#define PCINT1 1 +#define PCINT0 0 + +/* Reserved [0x6C..0x6D] */ + +#define TIMSK0 _SFR_MEM8(0x6E) +#define OCIE0B 2 +#define OCIE0A 1 +#define TOIE0 0 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define ICIE1 5 +#define OCIE1C 3 +#define OCIE1B 2 +#define OCIE1A 1 +#define TOIE1 0 + +#define TIMSK2 _SFR_MEM8(0x70) +#define OCIE2B 2 +#define OCIE2A 1 +#define TOIE2 0 + +#define TIMSK3 _SFR_MEM8(0x71) +#define ICIE3 5 +#define OCIE3C 3 +#define OCIE3B 2 +#define OCIE3A 1 +#define TOIE3 0 + +/* Reserved [0x72..0x73] */ + +#define XMCRA _SFR_MEM8(0x74) +#define SRE 7 +#define SRL2 6 +#define SRL1 5 +#define SRL0 4 +#define SRW11 3 +#define SRW10 2 +#define SRW01 1 +#define SRW00 0 + +#define XMCRB _SFR_MEM8(0x75) +#define XMBK 7 +#define XMM2 2 +#define XMM1 1 +#define XMM0 0 + +/* Reserved [0x76..0x77] */ + +/* RegDef: ADC Data Register */ +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) +#define ADCL _SFR_MEM8(0x78) +#define ADCH _SFR_MEM8(0x79) + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADEN 7 +#define ADSC 6 +#define ADATE 5 +#define ADIF 4 +#define ADIE 3 +#define ADPS2 2 +#define ADPS1 1 +#define ADPS0 0 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ACME 6 +#define ADTS2 2 +#define ADTS1 1 +#define ADTS0 0 + +#define ADMUX _SFR_MEM8(0x7C) +#define REFS1 7 +#define REFS0 6 +#define ADLAR 5 +#define MUX4 4 +#define MUX3 3 +#define MUX2 2 +#define MUX1 1 +#define MUX0 0 + +/* Reserved [0x7D] */ + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC7D 7 +#define ADC6D 6 +#define ADC5D 5 +#define ADC4D 4 +#define ADC3D 3 +#define ADC2D 2 +#define ADC1D 1 +#define ADC0D 0 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN1D 1 +#define AIN0D 0 + +#define TCCR1A _SFR_MEM8(0x80) +#define COM1A1 7 +#define COM1A0 6 +#define COM1B1 5 +#define COM1B0 4 +#define COM1C1 3 +#define COM1C0 2 +#define WGM11 1 +#define WGM10 0 + +#define TCCR1B _SFR_MEM8(0x81) +#define ICNC1 7 +#define ICES1 6 +#define WGM13 4 +#define WGM12 3 +#define CS12 2 +#define CS11 1 +#define CS10 0 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1A 7 +#define FOC1B 6 +#define FOC1C 5 + +/* Reserved [0x83] */ + +/* Combine TCNT1L and TCNT1H */ +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1H _SFR_MEM8(0x85) + +/* Combine ICR1L and ICR1H */ +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1H _SFR_MEM8(0x87) + +/* Combine OCR1AL and OCR1AH */ +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AH _SFR_MEM8(0x89) + +/* Combine OCR1BL and OCR1BH */ +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1BH _SFR_MEM8(0x8B) + +/* Combine OCR1CL and OCR1CH */ +#define OCR1C _SFR_MEM16(0x8C) + +#define OCR1CL _SFR_MEM8(0x8C) +#define OCR1CH _SFR_MEM8(0x8D) + +/* Reserved [0x8E..0x8F] */ + +#define TCCR3A _SFR_MEM8(0x90) +#define COM3A1 7 +#define COM3A0 6 +#define COM3B1 5 +#define COM3B0 4 +#define COM3C1 3 +#define COM3C0 2 +#define WGM31 1 +#define WGM30 0 + +#define TCCR3B _SFR_MEM8(0x91) +#define ICNC3 7 +#define ICES3 6 +#define WGM33 4 +#define WGM32 3 +#define CS32 2 +#define CS31 1 +#define CS30 0 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3A 7 +#define FOC3B 6 +#define FOC3C 5 + +/* Reserved [0x93] */ + +/* Combine TCNT3L and TCNT3H */ +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3H _SFR_MEM8(0x95) + +/* Combine ICR3L and ICR3H */ +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3H _SFR_MEM8(0x97) + +/* Combine OCR3AL and OCR3AH */ +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AH _SFR_MEM8(0x99) + +/* Combine OCR3BL and OCR3BH */ +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3BH _SFR_MEM8(0x9B) + +/* Combine OCR3CL and OCR3CH */ +#define OCR3C _SFR_MEM16(0x9C) + +#define OCR3CL _SFR_MEM8(0x9C) +#define OCR3CH _SFR_MEM8(0x9D) + +#if defined(__AT90USBxx7__) + +#define UHCON _SFR_MEM8(0x9E) +#define RESUME 2 +#define RESET 1 +#define SOFEN 0 + +#define UHINT _SFR_MEM8(0x9F) +#define HWUPI 6 +#define HSOFI 5 +#define RXRSMI 4 +#define RSMEDI 3 +#define RSTI 2 +#define DDISCI 1 +#define DCONNI 0 + +#define UHIEN _SFR_MEM8(0xA0) +#define HWUPE 6 +#define HSOFE 5 +#define RXRSME 4 +#define RSMEDE 3 +#define RSTE 2 +#define DDISCE 1 +#define DCONNE 0 + +#define UHADDR _SFR_MEM8(0xA1) + +/* Combine UHFNUML and UHFNUMH */ +#define UHFNUM _SFR_MEM16(0xA2) + +#define UHFNUML _SFR_MEM8(0xA2) +#define UHFNUMH _SFR_MEM8(0xA3) + +#define UHFLEN _SFR_MEM8(0xA4) + +#define UPINRQX _SFR_MEM8(0xA5) + +#define UPINTX _SFR_MEM8(0xA6) +#define FIFOCON 7 +#define NAKEDI 6 +#define RWAL 5 +#define PERRI 4 +#define TXSTPI 3 +#define TXOUTI 2 +#define RXSTALLI 1 +#define RXINI 0 + +#define UPNUM _SFR_MEM8(0xA7) + +#define UPRST _SFR_MEM8(0xA8) +#define PRST6 6 +#define PRST5 5 +#define PRST4 4 +#define PRST3 3 +#define PRST2 2 +#define PRST1 1 +#define PRST0 0 + +#define UPCONX _SFR_MEM8(0xA9) +#define PFREEZE 6 +#define INMODE 5 +/* #define AUTOSW 4 */ /* Reserved */ +#define RSTDT 3 +#define PEN 0 + +#define UPCFG0X _SFR_MEM8(0XAA) +#define PTYPE1 7 +#define PTYPE0 6 +#define PTOKEN1 5 +#define PTOKEN0 4 +#define PEPNUM3 3 +#define PEPNUM2 2 +#define PEPNUM1 1 +#define PEPNUM0 0 + +#define UPCFG1X _SFR_MEM8(0XAB) +#define PSIZE2 6 +#define PSIZE1 5 +#define PSIZE0 4 +#define PBK1 3 +#define PBK0 2 +#define ALLOC 1 + +#define UPSTAX _SFR_MEM8(0XAC) +#define CFGOK 7 +#define OVERFI 6 +#define UNDERFI 5 +#define DTSEQ1 3 +#define DTSEQ0 2 +#define NBUSYBK1 1 +#define NBUSYBK0 0 + +#define UPCFG2X _SFR_MEM8(0XAD) + +#define UPIENX _SFR_MEM8(0XAE) +#define FLERRE 7 +#define NAKEDE 6 +#define PERRE 4 +#define TXSTPE 3 +#define TXOUTE 2 +#define RXSTALLE 1 +#define RXINE 0 + +#define UPDATX _SFR_MEM8(0XAF) + +#endif /* __AT90USBxx7__ */ + +#define TCCR2A _SFR_MEM8(0xB0) +#define COM2A1 7 +#define COM2A0 6 +#define COM2B1 5 +#define COM2B0 4 +#define WGM21 1 +#define WGM20 0 + +#define TCCR2B _SFR_MEM8(0xB1) +#define FOC2A 7 +#define FOC2B 6 +#define WGM22 3 +#define CS22 2 +#define CS21 1 +#define CS20 0 + +#define TCNT2 _SFR_MEM8(0xB2) + +#define OCR2A _SFR_MEM8(0xB3) + +#define OCR2B _SFR_MEM8(0xB4) + +/* Reserved [0xB5] */ + +#define ASSR _SFR_MEM8(0xB6) +#define EXCLK 6 +#define AS2 5 +#define TCN2UB 4 +#define OCR2AUB 3 +#define OCR2BUB 2 +#define TCR2AUB 1 +#define TCR2BUB 0 + +/* Reserved [0xB7] */ + +#define TWBR _SFR_MEM8(0xB8) + +#define TWSR _SFR_MEM8(0xB9) +#define TWS7 7 +#define TWS6 6 +#define TWS5 5 +#define TWS4 4 +#define TWS3 3 +#define TWPS1 1 +#define TWPS0 0 + +#define TWAR _SFR_MEM8(0xBA) +#define TWA6 7 +#define TWA5 6 +#define TWA4 5 +#define TWA3 4 +#define TWA2 3 +#define TWA1 2 +#define TWA0 1 +#define TWGCE 0 + +#define TWDR _SFR_MEM8(0xBB) + +#define TWCR _SFR_MEM8(0xBC) +#define TWINT 7 +#define TWEA 6 +#define TWSTA 5 +#define TWSTO 4 +#define TWWC 3 +#define TWEN 2 +#define TWIE 0 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM6 7 +#define TWAM5 6 +#define TWAM4 5 +#define TWAM3 4 +#define TWAM2 3 +#define TWAM1 2 +#define TWAM0 1 + +/* Reserved [0xBE..0xC7] */ + +#define UCSR1A _SFR_MEM8(0xC8) +#define RXC1 7 +#define TXC1 6 +#define UDRE1 5 +#define FE1 4 +#define DOR1 3 +#define UPE1 2 +#define U2X1 1 +#define MPCM1 0 + +#define UCSR1B _SFR_MEM8(0XC9) +#define RXCIE1 7 +#define TXCIE1 6 +#define UDRIE1 5 +#define RXEN1 4 +#define TXEN1 3 +#define UCSZ12 2 +#define RXB81 1 +#define TXB81 0 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UMSEL11 7 +#define UMSEL10 6 +#define UPM11 5 +#define UPM10 4 +#define USBS1 3 +#define UCSZ11 2 +#define UCSZ10 1 +#define UCPOL1 0 + +/* Reserved [0xCB] */ + +/* Combine UBRR1L and UBRR1H */ +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1H _SFR_MEM8(0xCD) + +#define UDR1 _SFR_MEM8(0XCE) + +/* Reserved [0xCF..0xD6] */ + +#define UHWCON _SFR_MEM8(0XD7) +#define UIMOD 7 +#define UIDE 6 +#define UVCONE 4 +#define UVREGE 0 + +#define USBCON _SFR_MEM8(0XD8) +#define USBE 7 +#define HOST 6 +#define FRZCLK 5 +#define OTGPADE 4 +#define IDTE 1 +#define VBUSTE 0 + +#define USBSTA _SFR_MEM8(0XD9) +#define SPEED 3 +#define ID 1 +#define VBUS 0 + +#define USBINT _SFR_MEM8(0XDA) +#define IDTI 1 +#define VBUSTI 0 + +/* Combine UDPADDL and UDPADDH */ +#define UDPADD _SFR_MEM16(0xDB) + +#define UDPADDL _SFR_MEM8(0xDB) +#define UDPADDH _SFR_MEM8(0xDC) +#define DPACC 7 + +#if defined(__AT90USBxx7__) + +#define OTGCON _SFR_MEM8(0XDD) +#define HNPREQ 5 +#define SRPREQ 4 +#define SRPSEL 3 +#define VBUSHWC 2 +#define VBUSREQ 1 +#define VBUSRQC 0 + +#define OTGIEN _SFR_MEM8(0XDE) +#define STOE 5 +#define HNPERRE 4 +#define ROLEEXE 3 +#define BCERRE 2 +#define VBERRE 1 +#define SRPE 0 + +#define OTGINT _SFR_MEM8(0XDF) +#define STOI 5 +#define HNPERRI 4 +#define ROLEEXI 3 +#define BCERRI 2 +#define VBERRI 1 +#define SRPI 0 + +#endif /* __AT90USBxx7__ */ + +#define UDCON _SFR_MEM8(0XE0) +#define LSM 2 +#define RMWKUP 1 +#define DETACH 0 + +#define UDINT _SFR_MEM8(0XE1) +#define UPRSMI 6 +#define EORSMI 5 +#define WAKEUPI 4 +#define EORSTI 3 +#define SOFI 2 +/* #define MSOFI 1 */ /* Reserved */ +#define SUSPI 0 + +#define UDIEN _SFR_MEM8(0XE2) +#define UPRSME 6 +#define EORSME 5 +#define WAKEUPE 4 +#define EORSTE 3 +#define SOFE 2 +/* #define MSOFE 1 */ /* Reserved */ +#define SUSPE 0 + +#define UDADDR _SFR_MEM8(0XE3) +#define ADDEN 7 + +/* Combine UDFNUML and UDFNUMH */ +#define UDFNUM _SFR_MEM16(0xE4) + +#define UDFNUML _SFR_MEM8(0xE4) +#define UDFNUMH _SFR_MEM8(0xE5) + +#define UDMFN _SFR_MEM8(0XE6) +#define FNCERR 4 + +#define UDTST _SFR_MEM8(0XE7) +#define OPMODE2 5 +#define TSTPCKT 4 +#define TSTK 3 +#define TSTJ 2 + +#define UEINTX _SFR_MEM8(0XE8) +#define FIFOCON 7 +#define NAKINI 6 +#define RWAL 5 +#define NAKOUTI 4 +#define RXSTPI 3 +#define RXOUTI 2 +#define STALLEDI 1 +#define TXINI 0 + +#define UENUM _SFR_MEM8(0XE9) + +#define UERST _SFR_MEM8(0XEA) +#define EPRST6 6 +#define EPRST5 5 +#define EPRST4 4 +#define EPRST3 3 +#define EPRST2 2 +#define EPRST1 1 +#define EPRST0 0 + +#define UECONX _SFR_MEM8(0XEB) +#define STALLRQ 5 +#define STALLRQC 4 +#define RSTDT 3 +#define EPEN 0 + +#define UECFG0X _SFR_MEM8(0XEC) +#define EPTYPE1 7 +#define EPTYPE0 6 +/* #define ISOSW 3 */ /* Reserved */ +/* #define AUTOSW 2 */ /* Reserved */ +/* #define NYETSDIS 1 */ /* Reserved */ +#define EPDIR 0 + +#define UECFG1X _SFR_MEM8(0XED) +#define EPSIZE2 6 +#define EPSIZE1 5 +#define EPSIZE0 4 +#define EPBK1 3 +#define EPBK0 2 +#define ALLOC 1 + +#define UESTA0X _SFR_MEM8(0XEE) +#define CFGOK 7 +#define OVERFI 6 +#define UNDERFI 5 +#define ZLPSEEN 4 +#define DTSEQ1 3 +#define DTSEQ0 2 +#define NBUSYBK1 1 +#define NBUSYBK0 0 + +#define UESTA1X _SFR_MEM8(0XEF) +#define CTRLDIR 2 +#define CURRBK1 1 +#define CURRBK0 0 + +#define UEIENX _SFR_MEM8(0XF0) +#define FLERRE 7 +#define NAKINE 6 +#define NAKOUTE 4 +#define RXSTPE 3 +#define RXOUTE 2 +#define STALLEDE 1 +#define TXINE 0 + +#define UEDATX _SFR_MEM8(0XF1) + +/* Combine UEBCLX and UEBCHX */ +#define UEBCX _SFR_MEM16(0xF2) + +#define UEBCLX _SFR_MEM8(0xF2) +#define UEBCHX _SFR_MEM8(0xF3) + +#define UEINT _SFR_MEM8(0XF4) +#define EPINT6 6 +#define EPINT5 5 +#define EPINT4 4 +#define EPINT3 3 +#define EPINT2 2 +#define EPINT1 1 +#define EPINT0 0 + +#if defined(__AT90USBxx7__) + +#define UPERRX _SFR_MEM8(0XF5) +#define COUNTER1 6 +#define COUNTER0 5 +#define CRC16 4 +#define TIMEOUT 3 +#define PID 2 +#define DATAPID 1 +#define DATATGL 0 + +/* Combine UPBCLX and UPBCHX */ +#define UPBCX _SFR_MEM16(0xF6) + +#define UPBCLX _SFR_MEM8(0xF6) +#define UPBCHX _SFR_MEM8(0xF7) + +#define UPINT _SFR_MEM8(0XF8) +#define PINT6 6 +#define PINT5 5 +#define PINT4 4 +#define PINT3 3 +#define PINT2 2 +#define PINT1 1 +#define PINT0 0 + +#define OTGTCON _SFR_MEM8(0XF9) +#define PAGE1 6 +#define PAGE0 5 +#define VALUE1 1 +#define VALUE0 0 + +#endif /* __AT90USBxx7__ */ + +/* Reserved [0xFA..0xFF] */ + +/* Interrupt vectors */ + +/* External Interrupt Request 0 */ +#define INT0_vect _VECTOR(1) + +/* External Interrupt Request 1 */ +#define INT1_vect _VECTOR(2) + +/* External Interrupt Request 2 */ +#define INT2_vect _VECTOR(3) + +/* External Interrupt Request 3 */ +#define INT3_vect _VECTOR(4) + +/* External Interrupt Request 4 */ +#define INT4_vect _VECTOR(5) + +/* External Interrupt Request 5 */ +#define INT5_vect _VECTOR(6) + +/* External Interrupt Request 6 */ +#define INT6_vect _VECTOR(7) + +/* External Interrupt Request 7 */ +#define INT7_vect _VECTOR(8) + +/* Pin Change Interrupt Request 0 */ +#define PCINT0_vect _VECTOR(9) + +/* USB General Interrupt Request */ +#define USB_GEN_vect _VECTOR(10) + +/* USB Endpoint/Pipe Interrupt Communication Request */ +#define USB_COM_vect _VECTOR(11) + +/* Watchdog Time-out Interrupt */ +#define WDT_vect _VECTOR(12) + +/* Timer/Counter2 Compare Match A */ +#define TIMER2_COMPA_vect _VECTOR(13) + +/* Timer/Counter2 Compare Match B */ +#define TIMER2_COMPB_vect _VECTOR(14) + +/* Timer/Counter2 Overflow */ +#define TIMER2_OVF_vect _VECTOR(15) + +/* Timer/Counter1 Capture Event */ +#define TIMER1_CAPT_vect _VECTOR(16) + +/* Timer/Counter1 Compare Match A */ +#define TIMER1_COMPA_vect _VECTOR(17) + +/* Timer/Counter1 Compare Match B */ +#define TIMER1_COMPB_vect _VECTOR(18) + +/* Timer/Counter1 Compare Match C */ +#define TIMER1_COMPC_vect _VECTOR(19) + +/* Timer/Counter1 Overflow */ +#define TIMER1_OVF_vect _VECTOR(20) + +/* Timer/Counter0 Compare Match A */ +#define TIMER0_COMPA_vect _VECTOR(21) + +/* Timer/Counter0 Compare Match B */ +#define TIMER0_COMPB_vect _VECTOR(22) + +/* Timer/Counter0 Overflow */ +#define TIMER0_OVF_vect _VECTOR(23) + +/* SPI Serial Transfer Complete */ +#define SPI_STC_vect _VECTOR(24) + +/* USART1, Rx Complete */ +#define USART1_RX_vect _VECTOR(25) + +/* USART1 Data register Empty */ +#define USART1_UDRE_vect _VECTOR(26) + +/* USART1, Tx Complete */ +#define USART1_TX_vect _VECTOR(27) + +/* Analog Comparator */ +#define ANALOG_COMP_vect _VECTOR(28) + +/* ADC Conversion Complete */ +#define ADC_vect _VECTOR(29) + +/* EEPROM Ready */ +#define EE_READY_vect _VECTOR(30) + +/* Timer/Counter3 Capture Event */ +#define TIMER3_CAPT_vect _VECTOR(31) + +/* Timer/Counter3 Compare Match A */ +#define TIMER3_COMPA_vect _VECTOR(32) + +/* Timer/Counter3 Compare Match B */ +#define TIMER3_COMPB_vect _VECTOR(33) + +/* Timer/Counter3 Compare Match C */ +#define TIMER3_COMPC_vect _VECTOR(34) + +/* Timer/Counter3 Overflow */ +#define TIMER3_OVF_vect _VECTOR(35) + +/* 2-wire Serial Interface */ +#define TWI_vect _VECTOR(36) + +/* Store Program Memory Read */ +#define SPM_READY_vect _VECTOR(37) + +#define _VECTORS_SIZE 152 + +#if defined(__AT90USBxx6__) +# undef __AT90USBxx6__ +#endif /* __AT90USBxx6__ */ + +#if defined(__AT90USBxx7__) +# undef __AT90USBxx7__ +#endif /* __AT90USBxx7__ */ + +#endif /* _AVR_IOUSBXX6_7_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox128a1.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox128a1.h new file mode 100644 index 0000000..c05dce6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox128a1.h @@ -0,0 +1,7099 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iox128a1.h,v 1.1.2.11 2008/11/03 04:13:14 arcanum Exp $ */ + +/* avr/iox128a1.h - definitions for ATxmega128A1 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iox128a1.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATxmega128A1_H_ +#define _AVR_ATxmega128A1_H_ 1 + + +/* Ungrouped common registers */ +#define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ +#define GPIO1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ +#define GPIO2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ +#define GPIO3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ +#define GPIO4 _SFR_MEM8(0x0004) /* General Purpose IO Register 4 */ +#define GPIO5 _SFR_MEM8(0x0005) /* General Purpose IO Register 5 */ +#define GPIO6 _SFR_MEM8(0x0006) /* General Purpose IO Register 6 */ +#define GPIO7 _SFR_MEM8(0x0007) /* General Purpose IO Register 7 */ +#define GPIO8 _SFR_MEM8(0x0008) /* General Purpose IO Register 8 */ +#define GPIO9 _SFR_MEM8(0x0009) /* General Purpose IO Register 9 */ +#define GPIOA _SFR_MEM8(0x000A) /* General Purpose IO Register 10 */ +#define GPIOB _SFR_MEM8(0x000B) /* General Purpose IO Register 11 */ +#define GPIOC _SFR_MEM8(0x000C) /* General Purpose IO Register 12 */ +#define GPIOD _SFR_MEM8(0x000D) /* General Purpose IO Register 13 */ +#define GPIOE _SFR_MEM8(0x000E) /* General Purpose IO Register 14 */ +#define GPIOF _SFR_MEM8(0x000F) /* General Purpose IO Register 15 */ + +#define CCP _SFR_MEM8(0x0034) /* Configuration Change Protection */ +#define RAMPD _SFR_MEM8(0x0038) /* Ramp D */ +#define RAMPX _SFR_MEM8(0x0039) /* Ramp X */ +#define RAMPY _SFR_MEM8(0x003A) /* Ramp Y */ +#define RAMPZ _SFR_MEM8(0x003B) /* Ramp Z */ +#define EIND _SFR_MEM8(0x003C) /* Extended Indirect Jump */ +#define SPL _SFR_MEM8(0x003D) /* Stack Pointer Low */ +#define SPH _SFR_MEM8(0x003E) /* Stack Pointer High */ +#define SREG _SFR_MEM8(0x003F) /* Status Register */ + + +/* C Language Only */ +#if !defined (__ASSEMBLER__) + +#include + +typedef volatile uint8_t register8_t; +typedef volatile uint16_t register16_t; +typedef volatile uint32_t register32_t; + + +#ifdef _WORDREGISTER +#undef _WORDREGISTER +#endif +#define _WORDREGISTER(regname) \ + union \ + { \ + register16_t regname; \ + struct \ + { \ + register8_t regname ## L; \ + register8_t regname ## H; \ + }; \ + } + +#ifdef _DWORDREGISTER +#undef _DWORDREGISTER +#endif +#define _DWORDREGISTER(regname) \ + union \ + { \ + register32_t regname; \ + struct \ + { \ + register8_t regname ## 0; \ + register8_t regname ## 1; \ + register8_t regname ## 2; \ + register8_t regname ## 3; \ + }; \ + } + + +/* +========================================================================== +IO Module Structures +========================================================================== +*/ + + +/* +-------------------------------------------------------------------------- +XOCD - On-Chip Debug System +-------------------------------------------------------------------------- +*/ + +/* On-Chip Debug System */ +typedef struct OCD_struct +{ + register8_t OCDR0; /* OCD Register 0 */ + register8_t OCDR1; /* OCD Register 1 */ +} OCD_t; + + +/* CCP signatures */ +typedef enum CCP_enum +{ + CCP_SPM_gc = (0x9D<<0), /* SPM Instruction Protection */ + CCP_IOREG_gc = (0xD8<<0), /* IO Register Protection */ +} CCP_t; + + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Clock System */ +typedef struct CLK_struct +{ + register8_t CTRL; /* Control Register */ + register8_t PSCTRL; /* Prescaler Control Register */ + register8_t LOCK; /* Lock register */ + register8_t RTCCTRL; /* RTC Control Register */ +} CLK_t; + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Power Reduction */ +typedef struct PR_struct +{ + register8_t PR; /* General Power Reduction */ + register8_t PRPA; /* Power Reduction Port A */ + register8_t PRPB; /* Power Reduction Port B */ + register8_t PRPC; /* Power Reduction Port C */ + register8_t PRPD; /* Power Reduction Port D */ + register8_t PRPE; /* Power Reduction Port E */ + register8_t PRPF; /* Power Reduction Port F */ +} PR_t; + +/* System Clock Selection */ +typedef enum CLK_SCLKSEL_enum +{ + CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2MHz RC Oscillator */ + CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32MHz RC Oscillator */ + CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32kHz RC Oscillator */ + CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ + CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ +} CLK_SCLKSEL_t; + +/* Prescaler A Division Factor */ +typedef enum CLK_PSADIV_enum +{ + CLK_PSADIV_1_gc = (0x00<<2), /* Divide by 1 */ + CLK_PSADIV_2_gc = (0x01<<2), /* Divide by 2 */ + CLK_PSADIV_4_gc = (0x03<<2), /* Divide by 4 */ + CLK_PSADIV_8_gc = (0x05<<2), /* Divide by 8 */ + CLK_PSADIV_16_gc = (0x07<<2), /* Divide by 16 */ + CLK_PSADIV_32_gc = (0x09<<2), /* Divide by 32 */ + CLK_PSADIV_64_gc = (0x0B<<2), /* Divide by 64 */ + CLK_PSADIV_128_gc = (0x0D<<2), /* Divide by 128 */ + CLK_PSADIV_256_gc = (0x0F<<2), /* Divide by 256 */ + CLK_PSADIV_512_gc = (0x11<<2), /* Divide by 512 */ +} CLK_PSADIV_t; + +/* Prescaler B and C Division Factor */ +typedef enum CLK_PSBCDIV_enum +{ + CLK_PSBCDIV_1_1_gc = (0x00<<0), /* Divide B by 1 and C by 1 */ + CLK_PSBCDIV_1_2_gc = (0x01<<0), /* Divide B by 1 and C by 2 */ + CLK_PSBCDIV_4_1_gc = (0x02<<0), /* Divide B by 4 and C by 1 */ + CLK_PSBCDIV_2_2_gc = (0x03<<0), /* Divide B by 2 and C by 2 */ +} CLK_PSBCDIV_t; + +/* RTC Clock Source */ +typedef enum CLK_RTCSRC_enum +{ + CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1kHz from internal 32kHz ULP */ + CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1kHz from internal 32kHz RC oscillator */ + CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32kHz from 32kHz crystal oscillator on TOSC */ +} CLK_RTCSRC_t; + + +/* +-------------------------------------------------------------------------- +SLEEP - Sleep Controller +-------------------------------------------------------------------------- +*/ + +/* Sleep Controller */ +typedef struct SLEEP_struct +{ + register8_t CTRL; /* Control Register */ +} SLEEP_t; + +/* Sleep Mode */ +typedef enum SLEEP_SMODE_enum +{ + SLEEP_SMODE_IDLE_gc = (0x00<<1), /* Idle mode */ + SLEEP_SMODE_PDOWN_gc = (0x02<<1), /* Power-down Mode */ + SLEEP_SMODE_PSAVE_gc = (0x03<<1), /* Power-save Mode */ + SLEEP_SMODE_STDBY_gc = (0x06<<1), /* Standby Mode */ + SLEEP_SMODE_ESTDBY_gc = (0x07<<1), /* Extended Standby Mode */ +} SLEEP_SMODE_t; + + +/* +-------------------------------------------------------------------------- +OSC - Oscillator +-------------------------------------------------------------------------- +*/ + +/* Oscillator */ +typedef struct OSC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t XOSCCTRL; /* External Oscillator Control Register */ + register8_t XOSCFAIL; /* External Oscillator Failure Detection Register */ + register8_t RC32KCAL; /* 32kHz Internal Oscillator Calibration Register */ + register8_t PLLCTRL; /* PLL Control REgister */ + register8_t DFLLCTRL; /* DFLL Control Register */ +} OSC_t; + +/* Oscillator Frequency Range */ +typedef enum OSC_FRQRANGE_enum +{ + OSC_FRQRANGE_04TO2_gc = (0x00<<6), /* 0.4 - 2 MHz */ + OSC_FRQRANGE_2TO9_gc = (0x01<<6), /* 2 - 9 MHz */ + OSC_FRQRANGE_9TO12_gc = (0x02<<6), /* 9 - 12 MHz */ + OSC_FRQRANGE_12TO16_gc = (0x03<<6), /* 12 - 16 MHz */ +} OSC_FRQRANGE_t; + +/* External Oscillator Selection and Startup Time */ +typedef enum OSC_XOSCSEL_enum +{ + OSC_XOSCSEL_EXTCLK_gc = (0x00<<0), /* External Clock - 6 CLK */ + OSC_XOSCSEL_32KHz_gc = (0x02<<0), /* 32kHz TOSC - 32K CLK */ + OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), /* 0.4-16MHz XTAL - 256 CLK */ + OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), /* 0.4-16MHz XTAL - 1K CLK */ + OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), /* 0.4-16MHz XTAL - 16K CLK */ +} OSC_XOSCSEL_t; + +/* PLL Clock Source */ +typedef enum OSC_PLLSRC_enum +{ + OSC_PLLSRC_RC2M_gc = (0x00<<6), /* Internal 2MHz RC Oscillator */ + OSC_PLLSRC_RC32M_gc = (0x02<<6), /* Internal 32MHz RC Oscillator */ + OSC_PLLSRC_XOSC_gc = (0x03<<6), /* External Oscillator */ +} OSC_PLLSRC_t; + + +/* +-------------------------------------------------------------------------- +DFLL - DFLL +-------------------------------------------------------------------------- +*/ + +/* DFLL */ +typedef struct DFLL_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t CALA; /* Calibration Register A */ + register8_t CALB; /* Calibration Register B */ + register8_t OSCCNT0; /* Oscillator Counter Register 0 */ + register8_t OSCCNT1; /* Oscillator Counter Register 1 */ + register8_t OSCCNT2; /* Oscillator Counter Register 2 */ + register8_t reserved_0x07; +} DFLL_t; + + +/* +-------------------------------------------------------------------------- +RST - Reset +-------------------------------------------------------------------------- +*/ + +/* Reset */ +typedef struct RST_struct +{ + register8_t STATUS; /* Status Register */ + register8_t CTRL; /* Control Register */ +} RST_t; + + +/* +-------------------------------------------------------------------------- +WDT - Watch-Dog Timer +-------------------------------------------------------------------------- +*/ + +/* Watch-Dog Timer */ +typedef struct WDT_struct +{ + register8_t CTRL; /* Control */ + register8_t WINCTRL; /* Windowed Mode Control */ + register8_t STATUS; /* Status */ +} WDT_t; + +/* Period setting */ +typedef enum WDT_PER_enum +{ + WDT_PER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_PER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_PER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_PER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_PER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_PER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_PER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_PER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_PER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_PER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_PER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_PER_t; + +/* Closed window period */ +typedef enum WDT_WPER_enum +{ + WDT_WPER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_WPER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_WPER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_WPER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_WPER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_WPER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_WPER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_WPER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_WPER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_WPER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_WPER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_WPER_t; + + +/* +-------------------------------------------------------------------------- +MCU - MCU Control +-------------------------------------------------------------------------- +*/ + +/* MCU Control */ +typedef struct MCU_struct +{ + register8_t DEVID0; /* Device ID byte 0 */ + register8_t DEVID1; /* Device ID byte 1 */ + register8_t DEVID2; /* Device ID byte 2 */ + register8_t REVID; /* Revision ID */ + register8_t JTAGUID; /* JTAG User ID */ + register8_t reserved_0x05; + register8_t MCUCR; /* MCU Control */ + register8_t reserved_0x07; + register8_t EVSYSLOCK; /* Event System Lock */ + register8_t AWEXLOCK; /* AWEX Lock */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; +} MCU_t; + + +/* +-------------------------------------------------------------------------- +PMIC - Programmable Multi-level Interrupt Controller +-------------------------------------------------------------------------- +*/ + +/* Programmable Multi-level Interrupt Controller */ +typedef struct PMIC_struct +{ + register8_t STATUS; /* Status Register */ + register8_t INTPRI; /* Interrupt Priority */ + register8_t CTRL; /* Control Register */ +} PMIC_t; + + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Channel */ +typedef struct DMA_CH_struct +{ + register8_t CTRLA; /* Channel Control */ + register8_t CTRLB; /* Channel Control */ + register8_t ADDRCTRL; /* Address Control */ + register8_t TRIGSRC; /* Channel Trigger Source */ + _WORDREGISTER(TRFCNT); /* Channel Block Transfer Count */ + register8_t REPCNT; /* Channel Repeat Count */ + register8_t reserved_0x07; + register8_t SRCADDR0; /* Channel Source Address 0 */ + register8_t SRCADDR1; /* Channel Source Address 1 */ + register8_t SRCADDR2; /* Channel Source Address 2 */ + register8_t reserved_0x0B; + register8_t DESTADDR0; /* Channel Destination Address 0 */ + register8_t DESTADDR1; /* Channel Destination Address 1 */ + register8_t DESTADDR2; /* Channel Destination Address 2 */ + register8_t reserved_0x0F; +} DMA_CH_t; + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Controller */ +typedef struct DMA_struct +{ + register8_t CTRL; /* Control */ + register8_t reserved_0x01; + register8_t reserved_0x02; + register8_t INTFLAGS; /* Transfer Interrupt Status */ + register8_t STATUS; /* Status */ + register8_t reserved_0x05; + _WORDREGISTER(TEMP); /* Temporary Register For 16/24-bit Access */ + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + DMA_CH_t CH0; /* DMA Channel 0 */ + DMA_CH_t CH1; /* DMA Channel 1 */ + DMA_CH_t CH2; /* DMA Channel 2 */ + DMA_CH_t CH3; /* DMA Channel 3 */ +} DMA_t; + +/* Burst mode */ +typedef enum DMA_CH_BURSTLEN_enum +{ + DMA_CH_BURSTLEN_1BYTE_gc = (0x00<<0), /* 1-byte burst mode */ + DMA_CH_BURSTLEN_2BYTE_gc = (0x01<<0), /* 2-byte burst mode */ + DMA_CH_BURSTLEN_4BYTE_gc = (0x02<<0), /* 4-byte burst mode */ + DMA_CH_BURSTLEN_8BYTE_gc = (0x03<<0), /* 8-byte burst mode */ +} DMA_CH_BURSTLEN_t; + +/* Source address reload mode */ +typedef enum DMA_CH_SRCRELOAD_enum +{ + DMA_CH_SRCRELOAD_NONE_gc = (0x00<<6), /* No reload */ + DMA_CH_SRCRELOAD_BLOCK_gc = (0x01<<6), /* Reload at end of block */ + DMA_CH_SRCRELOAD_BURST_gc = (0x02<<6), /* Reload at end of burst */ + DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), /* Reload at end of transaction */ +} DMA_CH_SRCRELOAD_t; + +/* Source addressing mode */ +typedef enum DMA_CH_SRCDIR_enum +{ + DMA_CH_SRCDIR_FIXED_gc = (0x00<<4), /* Fixed */ + DMA_CH_SRCDIR_INC_gc = (0x01<<4), /* Increment */ + DMA_CH_SRCDIR_DEC_gc = (0x02<<4), /* Decrement */ +} DMA_CH_SRCDIR_t; + +/* Destination adress reload mode */ +typedef enum DMA_CH_DESTRELOAD_enum +{ + DMA_CH_DESTRELOAD_NONE_gc = (0x00<<2), /* No reload */ + DMA_CH_DESTRELOAD_BLOCK_gc = (0x01<<2), /* Reload at end of block */ + DMA_CH_DESTRELOAD_BURST_gc = (0x02<<2), /* Reload at end of burst */ + DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), /* Reload at end of transaction */ +} DMA_CH_DESTRELOAD_t; + +/* Destination adressing mode */ +typedef enum DMA_CH_DESTDIR_enum +{ + DMA_CH_DESTDIR_FIXED_gc = (0x00<<0), /* Fixed */ + DMA_CH_DESTDIR_INC_gc = (0x01<<0), /* Increment */ + DMA_CH_DESTDIR_DEC_gc = (0x02<<0), /* Decrement */ +} DMA_CH_DESTDIR_t; + +/* Transfer trigger source */ +typedef enum DMA_CH_TRIGSRC_enum +{ + DMA_CH_TRIGSRC_OFF_gc = (0x00<<0), /* Off software triggers only */ + DMA_CH_TRIGSRC_EVSYS_CH0_gc = (0x01<<0), /* Event System Channel 0 */ + DMA_CH_TRIGSRC_EVSYS_CH1_gc = (0x02<<0), /* Event System Channel 1 */ + DMA_CH_TRIGSRC_EVSYS_CH2_gc = (0x03<<0), /* Event System Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH0_gc = (0x10<<0), /* ADCA Channel 0 */ + DMA_CH_TRIGSRC_ADCA_CH1_gc = (0x11<<0), /* ADCA Channel 1 */ + DMA_CH_TRIGSRC_ADCA_CH2_gc = (0x12<<0), /* ADCA Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH3_gc = (0x13<<0), /* ADCA Channel 3 */ + DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), /* ADCA Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACA_CH0_gc = (0x15<<0), /* DACA Channel 0 */ + DMA_CH_TRIGSRC_DACA_CH1_gc = (0x16<<0), /* DACA Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH0_gc = (0x20<<0), /* ADCB Channel 0 */ + DMA_CH_TRIGSRC_ADCB_CH1_gc = (0x21<<0), /* ADCB Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH2_gc = (0x22<<0), /* ADCB Channel 2 */ + DMA_CH_TRIGSRC_ADCB_CH3_gc = (0x23<<0), /* ADCB Channel 3 */ + DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), /* ADCB Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACB_CH0_gc = (0x25<<0), /* DACB Channel 0 */ + DMA_CH_TRIGSRC_DACB_CH1_gc = (0x26<<0), /* DACB Channel 1 */ + DMA_CH_TRIGSRC_TCC0_OVF_gc = (0x40<<0), /* Timer/Counter C0 Overflow */ + DMA_CH_TRIGSRC_TCC0_ERR_gc = (0x41<<0), /* Timer/Counter C0 Error */ + DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), /* Timer/Counter C0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), /* Timer/Counter C0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), /* Timer/Counter C0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), /* Timer/Counter C0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCC1_OVF_gc = (0x46<<0), /* Timer/Counter C1 Overflow */ + DMA_CH_TRIGSRC_TCC1_ERR_gc = (0x47<<0), /* Timer/Counter C1 Error */ + DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), /* Timer/Counter C1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), /* Timer/Counter C1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIC_gc = (0x4A<<0), /* SPI C Transfer Complete */ + DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), /* USART C0 Receive Complete */ + DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), /* USART C0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), /* USART C1 Receive Complete */ + DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), /* USART C1 Data Register Empty */ + DMA_CH_TRIGSRC_TCD0_OVF_gc = (0x60<<0), /* Timer/Counter D0 Overflow */ + DMA_CH_TRIGSRC_TCD0_ERR_gc = (0x61<<0), /* Timer/Counter D0 Error */ + DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), /* Timer/Counter D0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), /* Timer/Counter D0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), /* Timer/Counter D0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), /* Timer/Counter D0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCD1_OVF_gc = (0x66<<0), /* Timer/Counter D1 Overflow */ + DMA_CH_TRIGSRC_TCD1_ERR_gc = (0x67<<0), /* Timer/Counter D1 Error */ + DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), /* Timer/Counter D1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), /* Timer/Counter D1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPID_gc = (0x6A<<0), /* SPI D Transfer Complete */ + DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), /* USART D0 Receive Complete */ + DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), /* USART D0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), /* USART D1 Receive Complete */ + DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), /* USART D1 Data Register Empty */ + DMA_CH_TRIGSRC_TCE0_OVF_gc = (0x80<<0), /* Timer/Counter E0 Overflow */ + DMA_CH_TRIGSRC_TCE0_ERR_gc = (0x81<<0), /* Timer/Counter E0 Error */ + DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), /* Timer/Counter E0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), /* Timer/Counter E0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), /* Timer/Counter E0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), /* Timer/Counter E0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCE1_OVF_gc = (0x86<<0), /* Timer/Counter E1 Overflow */ + DMA_CH_TRIGSRC_TCE1_ERR_gc = (0x87<<0), /* Timer/Counter E1 Error */ + DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), /* Timer/Counter E1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), /* Timer/Counter E1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIE_gc = (0x8A<<0), /* SPI E Transfer Complete */ + DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), /* USART E0 Receive Complete */ + DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), /* USART E0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), /* USART E1 Receive Complete */ + DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), /* USART E1 Data Register Empty */ + DMA_CH_TRIGSRC_TCF0_OVF_gc = (0xA0<<0), /* Timer/Counter F0 Overflow */ + DMA_CH_TRIGSRC_TCF0_ERR_gc = (0xA1<<0), /* Timer/Counter F0 Error */ + DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), /* Timer/Counter F0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), /* Timer/Counter F0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), /* Timer/Counter F0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), /* Timer/Counter F0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCF1_OVF_gc = (0xA6<<0), /* Timer/Counter F1 Overflow */ + DMA_CH_TRIGSRC_TCF1_ERR_gc = (0xA7<<0), /* Timer/Counter F1 Error */ + DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), /* Timer/Counter F1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), /* Timer/Counter F1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIF_gc = (0xAA<<0), /* SPI F Transfer Complete */ + DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), /* USART F0 Receive Complete */ + DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), /* USART F0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), /* USART F1 Receive Complete */ + DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), /* USART F1 Data Register Empty */ +} DMA_CH_TRIGSRC_t; + +/* Double buffering mode */ +typedef enum DMA_DBUFMODE_enum +{ + DMA_DBUFMODE_DISABLED_gc = (0x00<<2), /* Double buffering disabled */ + DMA_DBUFMODE_CH01_gc = (0x01<<2), /* Double buffering enabled on channel 0/1 */ + DMA_DBUFMODE_CH23_gc = (0x02<<2), /* Double buffering enabled on channel 2/3 */ + DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ +} DMA_DBUFMODE_t; + +/* Priority mode */ +typedef enum DMA_PRIMODE_enum +{ + DMA_PRIMODE_RR0123_gc = (0x00<<0), /* Round Robin */ + DMA_PRIMODE_CH0RR123_gc = (0x01<<0), /* Channel 0 > Round Robin on channel 1/2/3 */ + DMA_PRIMODE_CH01RR23_gc = (0x02<<0), /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ + DMA_PRIMODE_CH0123_gc = (0x03<<0), /* Channel 0 > channel 1 > channel 2 > channel 3 */ +} DMA_PRIMODE_t; + +/* Interrupt level */ +typedef enum DMA_CH_ERRINTLVL_enum +{ + DMA_CH_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + DMA_CH_ERRINTLVL_LO_gc = (0x01<<2), /* Low level */ + DMA_CH_ERRINTLVL_MED_gc = (0x02<<2), /* Medium level */ + DMA_CH_ERRINTLVL_HI_gc = (0x03<<2), /* High level */ +} DMA_CH_ERRINTLVL_t; + +/* Interrupt level */ +typedef enum DMA_CH_TRNINTLVL_enum +{ + DMA_CH_TRNINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + DMA_CH_TRNINTLVL_LO_gc = (0x01<<0), /* Low level */ + DMA_CH_TRNINTLVL_MED_gc = (0x02<<0), /* Medium level */ + DMA_CH_TRNINTLVL_HI_gc = (0x03<<0), /* High level */ +} DMA_CH_TRNINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EVSYS - Event System +-------------------------------------------------------------------------- +*/ + +/* Event System */ +typedef struct EVSYS_struct +{ + register8_t CH0MUX; /* Event Channel 0 Multiplexer */ + register8_t CH1MUX; /* Event Channel 1 Multiplexer */ + register8_t CH2MUX; /* Event Channel 2 Multiplexer */ + register8_t CH3MUX; /* Event Channel 3 Multiplexer */ + register8_t CH4MUX; /* Event Channel 4 Multiplexer */ + register8_t CH5MUX; /* Event Channel 5 Multiplexer */ + register8_t CH6MUX; /* Event Channel 6 Multiplexer */ + register8_t CH7MUX; /* Event Channel 7 Multiplexer */ + register8_t CH0CTRL; /* Channel 0 Control Register */ + register8_t CH1CTRL; /* Channel 1 Control Register */ + register8_t CH2CTRL; /* Channel 2 Control Register */ + register8_t CH3CTRL; /* Channel 3 Control Register */ + register8_t CH4CTRL; /* Channel 4 Control Register */ + register8_t CH5CTRL; /* Channel 5 Control Register */ + register8_t CH6CTRL; /* Channel 6 Control Register */ + register8_t CH7CTRL; /* Channel 7 Control Register */ + register8_t STROBE; /* Event Strobe */ + register8_t DATA; /* Event Data */ +} EVSYS_t; + +/* Quadrature Decoder Index Recognition Mode */ +typedef enum EVSYS_QDIRM_enum +{ + EVSYS_QDIRM_00_gc = (0x00<<5), /* QDPH0 = 0, QDPH90 = 0 */ + EVSYS_QDIRM_01_gc = (0x01<<5), /* QDPH0 = 0, QDPH90 = 1 */ + EVSYS_QDIRM_10_gc = (0x02<<5), /* QDPH0 = 1, QDPH90 = 0 */ + EVSYS_QDIRM_11_gc = (0x03<<5), /* QDPH0 = 1, QDPH90 = 1 */ +} EVSYS_QDIRM_t; + +/* Digital filter coefficient */ +typedef enum EVSYS_DIGFILT_enum +{ + EVSYS_DIGFILT_1SAMPLE_gc = (0x00<<0), /* 1 SAMPLE */ + EVSYS_DIGFILT_2SAMPLES_gc = (0x01<<0), /* 2 SAMPLES */ + EVSYS_DIGFILT_3SAMPLES_gc = (0x02<<0), /* 3 SAMPLES */ + EVSYS_DIGFILT_4SAMPLES_gc = (0x03<<0), /* 4 SAMPLES */ + EVSYS_DIGFILT_5SAMPLES_gc = (0x04<<0), /* 5 SAMPLES */ + EVSYS_DIGFILT_6SAMPLES_gc = (0x05<<0), /* 6 SAMPLES */ + EVSYS_DIGFILT_7SAMPLES_gc = (0x06<<0), /* 7 SAMPLES */ + EVSYS_DIGFILT_8SAMPLES_gc = (0x07<<0), /* 8 SAMPLES */ +} EVSYS_DIGFILT_t; + +/* Event Channel multiplexer input selection */ +typedef enum EVSYS_CHMUX_enum +{ + EVSYS_CHMUX_OFF_gc = (0x00<<0), /* Off */ + EVSYS_CHMUX_RTC_OVF_gc = (0x08<<0), /* RTC Overflow */ + EVSYS_CHMUX_RTC_CMP_gc = (0x09<<0), /* RTC Compare Match */ + EVSYS_CHMUX_ACA_CH0_gc = (0x10<<0), /* Analog Comparator A Channel 0 */ + EVSYS_CHMUX_ACA_CH1_gc = (0x11<<0), /* Analog Comparator A Channel 1 */ + EVSYS_CHMUX_ACA_WIN_gc = (0x12<<0), /* Analog Comparator A Window */ + EVSYS_CHMUX_ACB_CH0_gc = (0x13<<0), /* Analog Comparator B Channel 0 */ + EVSYS_CHMUX_ACB_CH1_gc = (0x14<<0), /* Analog Comparator B Channel 1 */ + EVSYS_CHMUX_ACB_WIN_gc = (0x15<<0), /* Analog Comparator B Window */ + EVSYS_CHMUX_ADCA_CH0_gc = (0x20<<0), /* ADC A Channel 0 */ + EVSYS_CHMUX_ADCA_CH1_gc = (0x21<<0), /* ADC A Channel 1 */ + EVSYS_CHMUX_ADCA_CH2_gc = (0x22<<0), /* ADC A Channel 2 */ + EVSYS_CHMUX_ADCA_CH3_gc = (0x23<<0), /* ADC A Channel 3 */ + EVSYS_CHMUX_ADCB_CH0_gc = (0x24<<0), /* ADC B Channel 0 */ + EVSYS_CHMUX_ADCB_CH1_gc = (0x25<<0), /* ADC B Channel 1 */ + EVSYS_CHMUX_ADCB_CH2_gc = (0x26<<0), /* ADC B Channel 2 */ + EVSYS_CHMUX_ADCB_CH3_gc = (0x27<<0), /* ADC B Channel 3 */ + EVSYS_CHMUX_PORTA_PIN0_gc = (0x50<<0), /* Port A, Pin0 */ + EVSYS_CHMUX_PORTA_PIN1_gc = (0x51<<0), /* Port A, Pin1 */ + EVSYS_CHMUX_PORTA_PIN2_gc = (0x52<<0), /* Port A, Pin2 */ + EVSYS_CHMUX_PORTA_PIN3_gc = (0x53<<0), /* Port A, Pin3 */ + EVSYS_CHMUX_PORTA_PIN4_gc = (0x54<<0), /* Port A, Pin4 */ + EVSYS_CHMUX_PORTA_PIN5_gc = (0x55<<0), /* Port A, Pin5 */ + EVSYS_CHMUX_PORTA_PIN6_gc = (0x56<<0), /* Port A, Pin6 */ + EVSYS_CHMUX_PORTA_PIN7_gc = (0x57<<0), /* Port A, Pin7 */ + EVSYS_CHMUX_PORTB_PIN0_gc = (0x58<<0), /* Port B, Pin0 */ + EVSYS_CHMUX_PORTB_PIN1_gc = (0x59<<0), /* Port B, Pin1 */ + EVSYS_CHMUX_PORTB_PIN2_gc = (0x5A<<0), /* Port B, Pin2 */ + EVSYS_CHMUX_PORTB_PIN3_gc = (0x5B<<0), /* Port B, Pin3 */ + EVSYS_CHMUX_PORTB_PIN4_gc = (0x5C<<0), /* Port B, Pin4 */ + EVSYS_CHMUX_PORTB_PIN5_gc = (0x5D<<0), /* Port B, Pin5 */ + EVSYS_CHMUX_PORTB_PIN6_gc = (0x5E<<0), /* Port B, Pin6 */ + EVSYS_CHMUX_PORTB_PIN7_gc = (0x5F<<0), /* Port B, Pin7 */ + EVSYS_CHMUX_PORTC_PIN0_gc = (0x60<<0), /* Port C, Pin0 */ + EVSYS_CHMUX_PORTC_PIN1_gc = (0x61<<0), /* Port C, Pin1 */ + EVSYS_CHMUX_PORTC_PIN2_gc = (0x62<<0), /* Port C, Pin2 */ + EVSYS_CHMUX_PORTC_PIN3_gc = (0x63<<0), /* Port C, Pin3 */ + EVSYS_CHMUX_PORTC_PIN4_gc = (0x64<<0), /* Port C, Pin4 */ + EVSYS_CHMUX_PORTC_PIN5_gc = (0x65<<0), /* Port C, Pin5 */ + EVSYS_CHMUX_PORTC_PIN6_gc = (0x66<<0), /* Port C, Pin6 */ + EVSYS_CHMUX_PORTC_PIN7_gc = (0x67<<0), /* Port C, Pin7 */ + EVSYS_CHMUX_PORTD_PIN0_gc = (0x68<<0), /* Port D, Pin0 */ + EVSYS_CHMUX_PORTD_PIN1_gc = (0x69<<0), /* Port D, Pin1 */ + EVSYS_CHMUX_PORTD_PIN2_gc = (0x6A<<0), /* Port D, Pin2 */ + EVSYS_CHMUX_PORTD_PIN3_gc = (0x6B<<0), /* Port D, Pin3 */ + EVSYS_CHMUX_PORTD_PIN4_gc = (0x6C<<0), /* Port D, Pin4 */ + EVSYS_CHMUX_PORTD_PIN5_gc = (0x6D<<0), /* Port D, Pin5 */ + EVSYS_CHMUX_PORTD_PIN6_gc = (0x6E<<0), /* Port D, Pin6 */ + EVSYS_CHMUX_PORTD_PIN7_gc = (0x6F<<0), /* Port D, Pin7 */ + EVSYS_CHMUX_PORTE_PIN0_gc = (0x70<<0), /* Port E, Pin0 */ + EVSYS_CHMUX_PORTE_PIN1_gc = (0x71<<0), /* Port E, Pin1 */ + EVSYS_CHMUX_PORTE_PIN2_gc = (0x72<<0), /* Port E, Pin2 */ + EVSYS_CHMUX_PORTE_PIN3_gc = (0x73<<0), /* Port E, Pin3 */ + EVSYS_CHMUX_PORTE_PIN4_gc = (0x74<<0), /* Port E, Pin4 */ + EVSYS_CHMUX_PORTE_PIN5_gc = (0x75<<0), /* Port E, Pin5 */ + EVSYS_CHMUX_PORTE_PIN6_gc = (0x76<<0), /* Port E, Pin6 */ + EVSYS_CHMUX_PORTE_PIN7_gc = (0x77<<0), /* Port E, Pin7 */ + EVSYS_CHMUX_PORTF_PIN0_gc = (0x78<<0), /* Port F, Pin0 */ + EVSYS_CHMUX_PORTF_PIN1_gc = (0x79<<0), /* Port F, Pin1 */ + EVSYS_CHMUX_PORTF_PIN2_gc = (0x7A<<0), /* Port F, Pin2 */ + EVSYS_CHMUX_PORTF_PIN3_gc = (0x7B<<0), /* Port F, Pin3 */ + EVSYS_CHMUX_PORTF_PIN4_gc = (0x7C<<0), /* Port F, Pin4 */ + EVSYS_CHMUX_PORTF_PIN5_gc = (0x7D<<0), /* Port F, Pin5 */ + EVSYS_CHMUX_PORTF_PIN6_gc = (0x7E<<0), /* Port F, Pin6 */ + EVSYS_CHMUX_PORTF_PIN7_gc = (0x7F<<0), /* Port F, Pin7 */ + EVSYS_CHMUX_PRESCALER_1_gc = (0x80<<0), /* Prescaler, divide by 1 */ + EVSYS_CHMUX_PRESCALER_2_gc = (0x81<<0), /* Prescaler, divide by 2 */ + EVSYS_CHMUX_PRESCALER_4_gc = (0x82<<0), /* Prescaler, divide by 4 */ + EVSYS_CHMUX_PRESCALER_8_gc = (0x83<<0), /* Prescaler, divide by 8 */ + EVSYS_CHMUX_PRESCALER_16_gc = (0x84<<0), /* Prescaler, divide by 16 */ + EVSYS_CHMUX_PRESCALER_32_gc = (0x85<<0), /* Prescaler, divide by 32 */ + EVSYS_CHMUX_PRESCALER_64_gc = (0x86<<0), /* Prescaler, divide by 64 */ + EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ + EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ + EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ + EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ + EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ + EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ + EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ + EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ + EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ + EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ + EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ + EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ + EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ + EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ + EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ + EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ + EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ + EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ + EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ + EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ + EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ + EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ + EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ + EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ + EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ + EVSYS_CHMUX_TCD1_OVF_gc = (0xD8<<0), /* Timer/Counter D1 Overflow */ + EVSYS_CHMUX_TCD1_ERR_gc = (0xD9<<0), /* Timer/Counter D1 Error */ + EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), /* Timer/Counter D1 Compare or Capture A */ + EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), /* Timer/Counter D1 Compare or Capture B */ + EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ + EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ + EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ + EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ + EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ + EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ + EVSYS_CHMUX_TCE1_OVF_gc = (0xE8<<0), /* Timer/Counter E1 Overflow */ + EVSYS_CHMUX_TCE1_ERR_gc = (0xE9<<0), /* Timer/Counter E1 Error */ + EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), /* Timer/Counter E1 Compare or Capture A */ + EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), /* Timer/Counter E1 Compare or Capture B */ + EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ + EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ + EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ + EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ + EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ + EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ + EVSYS_CHMUX_TCF1_OVF_gc = (0xF8<<0), /* Timer/Counter F1 Overflow */ + EVSYS_CHMUX_TCF1_ERR_gc = (0xF9<<0), /* Timer/Counter F1 Error */ + EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), /* Timer/Counter F1 Compare or Capture A */ + EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), /* Timer/Counter F1 Compare or Capture B */ +} EVSYS_CHMUX_t; + + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Non-volatile Memory Controller */ +typedef struct NVM_struct +{ + register8_t ADDR0; /* Address Register 0 */ + register8_t ADDR1; /* Address Register 1 */ + register8_t ADDR2; /* Address Register 2 */ + register8_t reserved_0x03; + register8_t DATA0; /* Data Register 0 */ + register8_t DATA1; /* Data Register 1 */ + register8_t DATA2; /* Data Register 2 */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t CMD; /* Command */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t INTCTRL; /* Interrupt Control */ + register8_t reserved_0x0E; + register8_t STATUS; /* Status */ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Lock Bits */ +typedef struct NVM_LOCKBITS_struct +{ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_LOCKBITS_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Fuses */ +typedef struct NVM_FUSES_struct +{ + register8_t FUSEBYTE0; /* JTAG User ID */ + register8_t FUSEBYTE1; /* Watchdog Configuration */ + register8_t FUSEBYTE2; /* Reset Configuration */ + register8_t reserved_0x03; + register8_t FUSEBYTE4; /* Start-up Configuration */ + register8_t FUSEBYTE5; /* EESAVE and BOD Level */ +} NVM_FUSES_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Production Signatures */ +typedef struct NVM_PROD_SIGNATURES_struct +{ + register8_t RCOSC2M; /* RCOSC 2MHz Calibration Value */ + register8_t reserved_0x01; + register8_t RCOSC32K; /* RCOSC 32kHz Calibration Value */ + register8_t RCOSC32M; /* RCOSC 32MHz Calibration Value */ + register8_t reserved_0x04; + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t LOTNUM0; /* Lot Number Byte 0, ASCII */ + register8_t LOTNUM1; /* Lot Number Byte 1, ASCII */ + register8_t LOTNUM2; /* Lot Number Byte 2, ASCII */ + register8_t LOTNUM3; /* Lot Number Byte 3, ASCII */ + register8_t LOTNUM4; /* Lot Number Byte 4, ASCII */ + register8_t LOTNUM5; /* Lot Number Byte 5, ASCII */ + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t WAFNUM; /* Wafer Number */ + register8_t reserved_0x11; + register8_t COORDX0; /* Wafer Coordinate X Byte 0 */ + register8_t COORDX1; /* Wafer Coordinate X Byte 1 */ + register8_t COORDY0; /* Wafer Coordinate Y Byte 0 */ + register8_t COORDY1; /* Wafer Coordinate Y Byte 1 */ + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + register8_t ADCACAL0; /* ADCA Calibration Byte 0 */ + register8_t ADCACAL1; /* ADCA Calibration Byte 1 */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t ADCBCAL0; /* ADCB Calibration Byte 0 */ + register8_t ADCBCAL1; /* ADCB Calibration Byte 1 */ + register8_t reserved_0x26; + register8_t reserved_0x27; + register8_t reserved_0x28; + register8_t reserved_0x29; + register8_t reserved_0x2A; + register8_t reserved_0x2B; + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t TEMPSENSE0; /* Temperature Sensor Calibration Byte 0 */ + register8_t TEMPSENSE1; /* Temperature Sensor Calibration Byte 0 */ + register8_t DACAOFFCAL; /* DACA Calibration Byte 0 */ + register8_t DACACAINCAL; /* DACA Calibration Byte 1 */ + register8_t DACBOFFCAL; /* DACB Calibration Byte 0 */ + register8_t DACBGAINCAL; /* DACB Calibration Byte 1 */ + register8_t reserved_0x34; + register8_t reserved_0x35; + register8_t reserved_0x36; + register8_t reserved_0x37; + register8_t reserved_0x38; + register8_t reserved_0x39; + register8_t reserved_0x3A; + register8_t reserved_0x3B; + register8_t reserved_0x3C; + register8_t reserved_0x3D; + register8_t reserved_0x3E; +} NVM_PROD_SIGNATURES_t; + +/* NVM Command */ +typedef enum NVM_CMD_enum +{ + NVM_CMD_NO_OPERATION_gc = (0x00<<0), /* Noop/Ordinary LPM */ + NVM_CMD_READ_CALIB_ROW_gc = (0x02<<0), /* Read calibration row */ + NVM_CMD_READ_USER_SIG_ROW_gc = (0x01<<0), /* Read user signature row */ + NVM_CMD_READ_EEPROM_gc = (0x06<<0), /* Read EEPROM */ + NVM_CMD_READ_FUSES_gc = (0x07<<0), /* Read fuse byte */ + NVM_CMD_WRITE_LOCK_BITS_gc = (0x08<<0), /* Write lock bits */ + NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ + NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ + NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ + NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ + NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ + NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ + NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ + NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ + NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ + NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ + NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ + NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ + NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ + NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ + NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ + NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ + NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ + NVM_CMD_APP_CRC_gc = (0x38<<0), /* Generate Application section CRC */ + NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Generate Boot Section CRC */ + NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Generate Flash Range CRC */ +} NVM_CMD_t; + +/* SPM ready interrupt level */ +typedef enum NVM_SPMLVL_enum +{ + NVM_SPMLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + NVM_SPMLVL_LO_gc = (0x01<<2), /* Low level */ + NVM_SPMLVL_MED_gc = (0x02<<2), /* Medium level */ + NVM_SPMLVL_HI_gc = (0x03<<2), /* High level */ +} NVM_SPMLVL_t; + +/* EEPROM ready interrupt level */ +typedef enum NVM_EELVL_enum +{ + NVM_EELVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + NVM_EELVL_LO_gc = (0x01<<0), /* Low level */ + NVM_EELVL_MED_gc = (0x02<<0), /* Medium level */ + NVM_EELVL_HI_gc = (0x03<<0), /* High level */ +} NVM_EELVL_t; + +/* Boot lock bits - boot setcion */ +typedef enum NVM_BLBB_enum +{ + NVM_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ + NVM_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ + NVM_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ + NVM_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ +} NVM_BLBB_t; + +/* Boot lock bits - application section */ +typedef enum NVM_BLBA_enum +{ + NVM_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ + NVM_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ + NVM_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ + NVM_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ +} NVM_BLBA_t; + +/* Boot lock bits - application table section */ +typedef enum NVM_BLBAT_enum +{ + NVM_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ + NVM_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ + NVM_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ + NVM_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ +} NVM_BLBAT_t; + +/* Lock bits */ +typedef enum NVM_LB_enum +{ + NVM_LB_NOLOCK_gc = (0x03<<0), /* No locks */ + NVM_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ + NVM_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ +} NVM_LB_t; + +/* Boot Loader Section Reset Vector */ +typedef enum BOOTRST_enum +{ + BOOTRST_BOOTLDR_gc = (0x00<<6), /* Boot Loader Reset */ + BOOTRST_APPLICATION_gc = (0x01<<6), /* Application Reset */ +} BOOTRST_t; + +/* BOD operation */ +typedef enum BOD_enum +{ + BOD_INSAMPLEDMODE_gc = (0x01<<2), /* BOD enabled in sampled mode */ + BOD_CONTINOUSLY_gc = (0x02<<2), /* BOD enabled continuously */ + BOD_DISABLED_gc = (0x03<<2), /* BOD Disabled */ +} BOD_t; + +/* Watchdog (Window) Timeout Period */ +typedef enum WD_enum +{ + WD_8CLK_gc = (0x00<<4), /* 8 cycles (8ms @ 3.3V) */ + WD_16CLK_gc = (0x01<<4), /* 16 cycles (16ms @ 3.3V) */ + WD_32CLK_gc = (0x02<<4), /* 32 cycles (32ms @ 3.3V) */ + WD_64CLK_gc = (0x03<<4), /* 64 cycles (64ms @ 3.3V) */ + WD_128CLK_gc = (0x04<<4), /* 128 cycles (0.125s @ 3.3V) */ + WD_256CLK_gc = (0x05<<4), /* 256 cycles (0.25s @ 3.3V) */ + WD_512CLK_gc = (0x06<<4), /* 512 cycles (0.5s @ 3.3V) */ + WD_1KCLK_gc = (0x07<<4), /* 1K cycles (1s @ 3.3V) */ + WD_2KCLK_gc = (0x08<<4), /* 2K cycles (2s @ 3.3V) */ + WD_4KCLK_gc = (0x09<<4), /* 4K cycles (4s @ 3.3V) */ + WD_8KCLK_gc = (0x0A<<4), /* 8K cycles (8s @ 3.3V) */ +} WD_t; + +/* Start-up Time */ +typedef enum SUT_enum +{ + SUT_0MS_gc = (0x03<<2), /* 0 ms */ + SUT_4MS_gc = (0x01<<2), /* 4 ms */ + SUT_64MS_gc = (0x00<<2), /* 64 ms */ +} SUT_t; + +/* Brown Out Detection Voltage Level */ +typedef enum BODLVL_enum +{ + BODLVL_1V6_gc = (0x07<<0), /* 1.6 V */ + BODLVL_1V8_gc = (0x06<<0), /* 1.8 V */ + BODLVL_2V0_gc = (0x05<<0), /* 2.0 V */ + BODLVL_2V2_gc = (0x04<<0), /* 2.2 V */ + BODLVL_2V4_gc = (0x03<<0), /* 2.4 V */ + BODLVL_2V7_gc = (0x02<<0), /* 2.7 V */ + BODLVL_2V9_gc = (0x01<<0), /* 2.9 V */ + BODLVL_3V2_gc = (0x00<<0), /* 3.2 V */ +} BODLVL_t; + + +/* +-------------------------------------------------------------------------- +AC - Analog Comparator +-------------------------------------------------------------------------- +*/ + +/* Analog Comparator */ +typedef struct AC_struct +{ + register8_t AC0CTRL; /* Comparator 0 Control */ + register8_t AC1CTRL; /* Comparator 1 Control */ + register8_t AC0MUXCTRL; /* Comparator 0 MUX Control */ + register8_t AC1MUXCTRL; /* Comparator 1 MUX Control */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t WINCTRL; /* Window Mode Control */ + register8_t STATUS; /* Status */ +} AC_t; + +/* Interrupt mode */ +typedef enum AC_INTMODE_enum +{ + AC_INTMODE_BOTHEDGES_gc = (0x00<<6), /* Interrupt on both edges */ + AC_INTMODE_FALLING_gc = (0x02<<6), /* Interrupt on falling edge */ + AC_INTMODE_RISING_gc = (0x03<<6), /* Interrupt on rising edge */ +} AC_INTMODE_t; + +/* Interrupt level */ +typedef enum AC_INTLVL_enum +{ + AC_INTLVL_OFF_gc = (0x00<<4), /* Interrupt disabled */ + AC_INTLVL_LO_gc = (0x01<<4), /* Low level */ + AC_INTLVL_MED_gc = (0x02<<4), /* Medium level */ + AC_INTLVL_HI_gc = (0x03<<4), /* High level */ +} AC_INTLVL_t; + +/* Hysteresis mode selection */ +typedef enum AC_HYSMODE_enum +{ + AC_HYSMODE_NO_gc = (0x00<<1), /* No hysteresis */ + AC_HYSMODE_SMALL_gc = (0x01<<1), /* Small hysteresis */ + AC_HYSMODE_LARGE_gc = (0x02<<1), /* Large hysteresis */ +} AC_HYSMODE_t; + +/* Positive input multiplexer selection */ +typedef enum AC_MUXPOS_enum +{ + AC_MUXPOS_PIN0_gc = (0x00<<3), /* Pin 0 */ + AC_MUXPOS_PIN1_gc = (0x01<<3), /* Pin 1 */ + AC_MUXPOS_PIN2_gc = (0x02<<3), /* Pin 2 */ + AC_MUXPOS_PIN3_gc = (0x03<<3), /* Pin 3 */ + AC_MUXPOS_PIN4_gc = (0x04<<3), /* Pin 4 */ + AC_MUXPOS_PIN5_gc = (0x05<<3), /* Pin 5 */ + AC_MUXPOS_PIN6_gc = (0x06<<3), /* Pin 6 */ + AC_MUXPOS_DAC_gc = (0x07<<3), /* DAC output */ +} AC_MUXPOS_t; + +/* Negative input multiplexer selection */ +typedef enum AC_MUXNEG_enum +{ + AC_MUXNEG_PIN0_gc = (0x00<<0), /* Pin 0 */ + AC_MUXNEG_PIN1_gc = (0x01<<0), /* Pin 1 */ + AC_MUXNEG_PIN3_gc = (0x02<<0), /* Pin 3 */ + AC_MUXNEG_PIN5_gc = (0x03<<0), /* Pin 5 */ + AC_MUXNEG_PIN7_gc = (0x04<<0), /* Pin 7 */ + AC_MUXNEG_DAC_gc = (0x05<<0), /* DAC output */ + AC_MUXNEG_BANDGAP_gc = (0x06<<0), /* Bandgap Reference */ + AC_MUXNEG_SCALER_gc = (0x07<<0), /* Internal voltage scaler */ +} AC_MUXNEG_t; + +/* Windows interrupt mode */ +typedef enum AC_WINTMODE_enum +{ + AC_WINTMODE_ABOVE_gc = (0x00<<2), /* Interrupt on above window */ + AC_WINTMODE_INSIDE_gc = (0x01<<2), /* Interrupt on inside window */ + AC_WINTMODE_BELOW_gc = (0x02<<2), /* Interrupt on below window */ + AC_WINTMODE_OUTSIDE_gc = (0x03<<2), /* Interrupt on outside window */ +} AC_WINTMODE_t; + +/* Window interrupt level */ +typedef enum AC_WINTLVL_enum +{ + AC_WINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + AC_WINTLVL_LO_gc = (0x01<<0), /* Low priority */ + AC_WINTLVL_MED_gc = (0x02<<0), /* Medium priority */ + AC_WINTLVL_HI_gc = (0x03<<0), /* High priority */ +} AC_WINTLVL_t; + +/* Window mode state */ +typedef enum AC_WSTATE_enum +{ + AC_WSTATE_ABOVE_gc = (0x00<<6), /* Signal above window */ + AC_WSTATE_INSIDE_gc = (0x01<<6), /* Signal inside window */ + AC_WSTATE_BELOW_gc = (0x02<<6), /* Signal below window */ +} AC_WSTATE_t; + + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* ADC Channel */ +typedef struct ADC_CH_struct +{ + register8_t CTRL; /* Control Register */ + register8_t MUXCTRL; /* MUX Control */ + register8_t INTCTRL; /* Channel Interrupt Control */ + register8_t INTFLAGS; /* Interrupt Flags */ + _WORDREGISTER(RES); /* Channel Result */ + register8_t reserved_0x6; + register8_t reserved_0x7; +} ADC_CH_t; + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* Analog-to-Digital Converter */ +typedef struct ADC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t REFCTRL; /* Reference Control */ + register8_t EVCTRL; /* Event Control */ + register8_t PRESCALER; /* Clock Prescaler */ + register8_t CALCTRL; /* Calibration Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t CALIB; /* Calibration Value */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + _WORDREGISTER(CH0RES); /* Channel 0 Result */ + _WORDREGISTER(CH1RES); /* Channel 1 Result */ + _WORDREGISTER(CH2RES); /* Channel 2 Result */ + _WORDREGISTER(CH3RES); /* Channel 3 Result */ + _WORDREGISTER(CMP); /* Compare Value */ + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + ADC_CH_t CH0; /* ADC Channel 0 */ + ADC_CH_t CH1; /* ADC Channel 1 */ + ADC_CH_t CH2; /* ADC Channel 2 */ + ADC_CH_t CH3; /* ADC Channel 3 */ +} ADC_t; + +/* Positive input multiplexer selection */ +typedef enum ADC_CH_MUXPOS_enum +{ + ADC_CH_MUXPOS_PIN0_gc = (0x00<<3), /* Input pin 0 */ + ADC_CH_MUXPOS_PIN1_gc = (0x01<<3), /* Input pin 1 */ + ADC_CH_MUXPOS_PIN2_gc = (0x02<<3), /* Input pin 2 */ + ADC_CH_MUXPOS_PIN3_gc = (0x03<<3), /* Input pin 3 */ + ADC_CH_MUXPOS_PIN4_gc = (0x04<<3), /* Input pin 4 */ + ADC_CH_MUXPOS_PIN5_gc = (0x05<<3), /* Input pin 5 */ + ADC_CH_MUXPOS_PIN6_gc = (0x06<<3), /* Input pin 6 */ + ADC_CH_MUXPOS_PIN7_gc = (0x07<<3), /* Input pin 7 */ +} ADC_CH_MUXPOS_t; + +/* Internal input multiplexer selections */ +typedef enum ADC_CH_MUXINT_enum +{ + ADC_CH_MUXINT_TEMP_gc = (0x00<<3), /* Temperature Reference */ + ADC_CH_MUXINT_BANDGAP_gc = (0x01<<3), /* Bandgap Reference */ + ADC_CH_MUXINT_SCALEDVCC_gc = (0x02<<3), /* 1/10 scaled VCC */ + ADC_CH_MUXINT_DAC_gc = (0x03<<3), /* DAC output */ +} ADC_CH_MUXINT_t; + +/* Negative input multiplexer selection */ +typedef enum ADC_CH_MUXNEG_enum +{ + ADC_CH_MUXNEG_PIN0_gc = (0x00<<0), /* Input pin 0 */ + ADC_CH_MUXNEG_PIN1_gc = (0x01<<0), /* Input pin 1 */ + ADC_CH_MUXNEG_PIN2_gc = (0x02<<0), /* Input pin 2 */ + ADC_CH_MUXNEG_PIN3_gc = (0x03<<0), /* Input pin 3 */ + ADC_CH_MUXNEG_PIN4_gc = (0x04<<0), /* Input pin 4 */ + ADC_CH_MUXNEG_PIN5_gc = (0x05<<0), /* Input pin 5 */ + ADC_CH_MUXNEG_PIN6_gc = (0x06<<0), /* Input pin 6 */ + ADC_CH_MUXNEG_PIN7_gc = (0x07<<0), /* Input pin 7 */ +} ADC_CH_MUXNEG_t; + +/* Input mode */ +typedef enum ADC_CH_INPUTMODE_enum +{ + ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ + ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ + ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ + ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ +} ADC_CH_INPUTMODE_t; + +/* Gain factor */ +typedef enum ADC_CH_GAIN_enum +{ + ADC_CH_GAIN_1X_gc = (0x00<<2), /* 1x gain */ + ADC_CH_GAIN_2X_gc = (0x01<<2), /* 2x gain */ + ADC_CH_GAIN_4X_gc = (0x02<<2), /* 4x gain */ + ADC_CH_GAIN_8X_gc = (0x03<<2), /* 8x gain */ + ADC_CH_GAIN_16X_gc = (0x04<<2), /* 16x gain */ + ADC_CH_GAIN_32X_gc = (0x05<<2), /* 32x gain */ + ADC_CH_GAIN_64X_gc = (0x06<<2), /* 64x gain */ +} ADC_CH_GAIN_t; + +/* Conversion result resolution */ +typedef enum ADC_RESOLUTION_enum +{ + ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ + ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ + ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ +} ADC_RESOLUTION_t; + +/* Voltage reference selection */ +typedef enum ADC_REFSEL_enum +{ + ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ + ADC_REFSEL_VCC_gc = (0x01<<4), /* Internal VCC / 1.6V */ + ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ + ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ +} ADC_REFSEL_t; + +/* Channel sweep selection */ +typedef enum ADC_SWEEP_enum +{ + ADC_SWEEP_0_gc = (0x00<<6), /* ADC Channel 0 */ + ADC_SWEEP_01_gc = (0x01<<6), /* ADC Channel 0,1 */ + ADC_SWEEP_012_gc = (0x02<<6), /* ADC Channel 0,1,2 */ + ADC_SWEEP_0123_gc = (0x03<<6), /* ADC Channel 0,1,2,3 */ +} ADC_SWEEP_t; + +/* Event channel input selection */ +typedef enum ADC_EVSEL_enum +{ + ADC_EVSEL_0123_gc = (0x00<<3), /* Event Channel 0,1,2,3 */ + ADC_EVSEL_1234_gc = (0x01<<3), /* Event Channel 1,2,3,4 */ + ADC_EVSEL_2345_gc = (0x02<<3), /* Event Channel 2,3,4,5 */ + ADC_EVSEL_3456_gc = (0x03<<3), /* Event Channel 3,4,5,6 */ + ADC_EVSEL_4567_gc = (0x04<<3), /* Event Channel 4,5,6,7 */ + ADC_EVSEL_567_gc = (0x05<<3), /* Event Channel 5,6,7 */ + ADC_EVSEL_67_gc = (0x06<<3), /* Event Channel 6,7 */ + ADC_EVSEL_7_gc = (0x07<<3), /* Event Channel 7 */ +} ADC_EVSEL_t; + +/* Event action selection */ +typedef enum ADC_EVACT_enum +{ + ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ + ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ + ADC_EVACT_CH01_gc = (0x02<<0), /* First two events trigger channel 0,1 */ + ADC_EVACT_CH012_gc = (0x03<<0), /* First three events trigger channel 0,1,2 */ + ADC_EVACT_CH0123_gc = (0x04<<0), /* Events trigger channel 0,1,2,3 */ + ADC_EVACT_SWEEP_gc = (0x05<<0), /* First event triggers sweep */ + ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), /* First event triggers synchronized sweep */ +} ADC_EVACT_t; + +/* Interupt mode */ +typedef enum ADC_CH_INTMODE_enum +{ + ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ + ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ + ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ +} ADC_CH_INTMODE_t; + +/* Interrupt level */ +typedef enum ADC_CH_INTLVL_enum +{ + ADC_CH_INTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + ADC_CH_INTLVL_LO_gc = (0x01<<0), /* Low level */ + ADC_CH_INTLVL_MED_gc = (0x02<<0), /* Medium level */ + ADC_CH_INTLVL_HI_gc = (0x03<<0), /* High level */ +} ADC_CH_INTLVL_t; + +/* DMA request selection */ +typedef enum ADC_DMASEL_enum +{ + ADC_DMASEL_OFF_gc = (0x00<<5), /* Combined DMA request OFF */ + ADC_DMASEL_CH01_gc = (0x01<<5), /* ADC Channel 0 or 1 */ + ADC_DMASEL_CH012_gc = (0x02<<5), /* ADC Channel 0 or 1 or 2 */ + ADC_DMASEL_CH0123_gc = (0x03<<5), /* ADC Channel 0 or 1 or 2 or 3 */ +} ADC_DMASEL_t; + +/* Clock prescaler */ +typedef enum ADC_PRESCALER_enum +{ + ADC_PRESCALER_DIV4_gc = (0x00<<0), /* Divide clock by 4 */ + ADC_PRESCALER_DIV8_gc = (0x01<<0), /* Divide clock by 8 */ + ADC_PRESCALER_DIV16_gc = (0x02<<0), /* Divide clock by 16 */ + ADC_PRESCALER_DIV32_gc = (0x03<<0), /* Divide clock by 32 */ + ADC_PRESCALER_DIV64_gc = (0x04<<0), /* Divide clock by 64 */ + ADC_PRESCALER_DIV128_gc = (0x05<<0), /* Divide clock by 128 */ + ADC_PRESCALER_DIV256_gc = (0x06<<0), /* Divide clock by 256 */ + ADC_PRESCALER_DIV512_gc = (0x07<<0), /* Divide clock by 512 */ +} ADC_PRESCALER_t; + + +/* +-------------------------------------------------------------------------- +DAC - Digital/Analog Converter +-------------------------------------------------------------------------- +*/ + +/* Digital-to-Analog Converter */ +typedef struct DAC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t EVCTRL; /* Event Input Control */ + register8_t TIMCTRL; /* Timing Control */ + register8_t STATUS; /* Status */ + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t GAINCAL; /* Gain Calibration */ + register8_t OFFSETCAL; /* Offset Calibration */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + _WORDREGISTER(CH0DATA); /* Channel 0 Data */ + _WORDREGISTER(CH1DATA); /* Channel 1 Data */ +} DAC_t; + +/* Output channel selection */ +typedef enum DAC_CHSEL_enum +{ + DAC_CHSEL_SINGLE_gc = (0x00<<5), /* Single channel operation (Channel A only) */ + DAC_CHSEL_DUAL_gc = (0x02<<5), /* Dual channel operation (S/H on both channels) */ +} DAC_CHSEL_t; + +/* Reference voltage selection */ +typedef enum DAC_REFSEL_enum +{ + DAC_REFSEL_INT1V_gc = (0x00<<3), /* Internal 1V */ + DAC_REFSEL_AVCC_gc = (0x01<<3), /* Analog supply voltage */ + DAC_REFSEL_AREFA_gc = (0x02<<3), /* External reference on AREF on PORTA */ + DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */ +} DAC_REFSEL_t; + +/* Event channel selection */ +typedef enum DAC_EVSEL_enum +{ + DAC_EVSEL_0_gc = (0x00<<0), /* Event Channel 0 */ + DAC_EVSEL_1_gc = (0x01<<0), /* Event Channel 1 */ + DAC_EVSEL_2_gc = (0x02<<0), /* Event Channel 2 */ + DAC_EVSEL_3_gc = (0x03<<0), /* Event Channel 3 */ + DAC_EVSEL_4_gc = (0x04<<0), /* Event Channel 4 */ + DAC_EVSEL_5_gc = (0x05<<0), /* Event Channel 5 */ + DAC_EVSEL_6_gc = (0x06<<0), /* Event Channel 6 */ + DAC_EVSEL_7_gc = (0x07<<0), /* Event Channel 7 */ +} DAC_EVSEL_t; + +/* Conversion interval */ +typedef enum DAC_CONINTVAL_enum +{ + DAC_CONINTVAL_1CLK_gc = (0x00<<4), /* 1 CLK / 2 CLK in S/H mode */ + DAC_CONINTVAL_2CLK_gc = (0x01<<4), /* 2 CLK / 3 CLK in S/H mode */ + DAC_CONINTVAL_4CLK_gc = (0x02<<4), /* 4 CLK / 6 CLK in S/H mode */ + DAC_CONINTVAL_8CLK_gc = (0x03<<4), /* 8 CLK / 12 CLK in S/H mode */ + DAC_CONINTVAL_16CLK_gc = (0x04<<4), /* 16 CLK / 24 CLK in S/H mode */ + DAC_CONINTVAL_32CLK_gc = (0x05<<4), /* 32 CLK / 48 CLK in S/H mode */ + DAC_CONINTVAL_64CLK_gc = (0x06<<4), /* 64 CLK / 96 CLK in S/H mode */ + DAC_CONINTVAL_128CLK_gc = (0x07<<4), /* 128 CLK / 192 CLK in S/H mode */ +} DAC_CONINTVAL_t; + +/* Refresh rate */ +typedef enum DAC_REFRESH_enum +{ + DAC_REFRESH_16CLK_gc = (0x00<<0), /* 16 CLK */ + DAC_REFRESH_32CLK_gc = (0x01<<0), /* 32 CLK */ + DAC_REFRESH_64CLK_gc = (0x02<<0), /* 64 CLK */ + DAC_REFRESH_128CLK_gc = (0x03<<0), /* 128 CLK */ + DAC_REFRESH_256CLK_gc = (0x04<<0), /* 256 CLK */ + DAC_REFRESH_512CLK_gc = (0x05<<0), /* 512 CLK */ + DAC_REFRESH_1024CLK_gc = (0x06<<0), /* 1024 CLK */ + DAC_REFRESH_2048CLK_gc = (0x07<<0), /* 2048 CLK */ + DAC_REFRESH_4086CLK_gc = (0x08<<0), /* 4096 CLK */ + DAC_REFRESH_8192CLK_gc = (0x09<<0), /* 8192 CLK */ + DAC_REFRESH_16384CLK_gc = (0x0A<<0), /* 16384 CLK */ + DAC_REFRESH_32768CLK_gc = (0x0B<<0), /* 32768 CLK */ + DAC_REFRESH_65536CLK_gc = (0x0C<<0), /* 65536 CLK */ + DAC_REFRESH_OFF_gc = (0x0F<<0), /* Auto refresh OFF */ +} DAC_REFRESH_t; + + +/* +-------------------------------------------------------------------------- +RTC - Real-Time Clounter +-------------------------------------------------------------------------- +*/ + +/* Real-Time Counter */ +typedef struct RTC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t TEMP; /* Temporary register */ + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + _WORDREGISTER(CNT); /* Count Register */ + _WORDREGISTER(PER); /* Period Register */ + _WORDREGISTER(COMP); /* Compare Register */ +} RTC_t; + +/* Prescaler Factor */ +typedef enum RTC_PRESCALER_enum +{ + RTC_PRESCALER_OFF_gc = (0x00<<0), /* RTC Off */ + RTC_PRESCALER_DIV1_gc = (0x01<<0), /* RTC Clock */ + RTC_PRESCALER_DIV2_gc = (0x02<<0), /* RTC Clock / 2 */ + RTC_PRESCALER_DIV8_gc = (0x03<<0), /* RTC Clock / 8 */ + RTC_PRESCALER_DIV16_gc = (0x04<<0), /* RTC Clock / 16 */ + RTC_PRESCALER_DIV64_gc = (0x05<<0), /* RTC Clock / 64 */ + RTC_PRESCALER_DIV256_gc = (0x06<<0), /* RTC Clock / 256 */ + RTC_PRESCALER_DIV1024_gc = (0x07<<0), /* RTC Clock / 1024 */ +} RTC_PRESCALER_t; + +/* Compare Interrupt level */ +typedef enum RTC_COMPINTLVL_enum +{ + RTC_COMPINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + RTC_COMPINTLVL_LO_gc = (0x01<<2), /* Low Level */ + RTC_COMPINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + RTC_COMPINTLVL_HI_gc = (0x03<<2), /* High Level */ +} RTC_COMPINTLVL_t; + +/* Overflow Interrupt level */ +typedef enum RTC_OVFINTLVL_enum +{ + RTC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + RTC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + RTC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + RTC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} RTC_OVFINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* EBI Chip Select Module */ +typedef struct EBI_CS_struct +{ + register8_t CTRLA; /* Chip Select Control Register A */ + register8_t CTRLB; /* Chip Select Control Register B */ + _WORDREGISTER(BASEADDR); /* Chip Select Base Address */ +} EBI_CS_t; + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* External Bus Interface */ +typedef struct EBI_struct +{ + register8_t CTRL; /* Control */ + register8_t SDRAMCTRLA; /* SDRAM Control Register A */ + register8_t reserved_0x02; + register8_t reserved_0x03; + _WORDREGISTER(REFRESH); /* SDRAM Refresh Period */ + _WORDREGISTER(INITDLY); /* SDRAM Initialization Delay */ + register8_t SDRAMCTRLB; /* SDRAM Control Register B */ + register8_t SDRAMCTRLC; /* SDRAM Control Register C */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + EBI_CS_t CS0; /* Chip Select 0 */ + EBI_CS_t CS1; /* Chip Select 1 */ + EBI_CS_t CS2; /* Chip Select 2 */ + EBI_CS_t CS3; /* Chip Select 3 */ +} EBI_t; + +/* Chip Select adress space */ +typedef enum EBI_CS_ASPACE_enum +{ + EBI_CS_ASPACE_256B_gc = (0x00<<2), /* 256 bytes */ + EBI_CS_ASPACE_512B_gc = (0x01<<2), /* 512 bytes */ + EBI_CS_ASPACE_1KB_gc = (0x02<<2), /* 1K bytes */ + EBI_CS_ASPACE_2KB_gc = (0x03<<2), /* 2K bytes */ + EBI_CS_ASPACE_4KB_gc = (0x04<<2), /* 4K bytes */ + EBI_CS_ASPACE_8KB_gc = (0x05<<2), /* 8K bytes */ + EBI_CS_ASPACE_16KB_gc = (0x06<<2), /* 16K bytes */ + EBI_CS_ASPACE_32KB_gc = (0x07<<2), /* 32K bytes */ + EBI_CS_ASPACE_64KB_gc = (0x08<<2), /* 64K bytes */ + EBI_CS_ASPACE_128KB_gc = (0x09<<2), /* 128K bytes */ + EBI_CS_ASPACE_256KB_gc = (0x0A<<2), /* 256K bytes */ + EBI_CS_ASPACE_512KB_gc = (0x0B<<2), /* 512K bytes */ + EBI_CS_ASPACE_1MB_gc = (0x0C<<2), /* 1M bytes */ + EBI_CS_ASPACE_2MB_gc = (0x0D<<2), /* 2M bytes */ + EBI_CS_ASPACE_4MB_gc = (0x0E<<2), /* 4M bytes */ + EBI_CS_ASPACE_8MB_gc = (0x0F<<2), /* 8M bytes */ + EBI_CS_ASPACE_16M_gc = (0x10<<2), /* 16M bytes */ +} EBI_CS_ASPACE_t; + +/* */ +typedef enum EBI_CS_SRWS_enum +{ + EBI_CS_SRWS_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_CS_SRWS_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_CS_SRWS_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_CS_SRWS_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_CS_SRWS_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_CS_SRWS_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_CS_SRWS_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_CS_SRWS_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_CS_SRWS_t; + +/* Chip Select address mode */ +typedef enum EBI_CS_MODE_enum +{ + EBI_CS_MODE_DISABLED_gc = (0x00<<0), /* Chip Select Disabled */ + EBI_CS_MODE_SRAM_gc = (0x01<<0), /* Chip Select in SRAM mode */ + EBI_CS_MODE_LPC_gc = (0x02<<0), /* Chip Select in SRAM LPC mode */ + EBI_CS_MODE_SDRAM_gc = (0x03<<0), /* Chip Select in SDRAM mode */ +} EBI_CS_MODE_t; + +/* Chip Select SDRAM mode */ +typedef enum EBI_CS_SDMODE_enum +{ + EBI_CS_SDMODE_NORMAL_gc = (0x00<<0), /* Normal mode */ + EBI_CS_SDMODE_LOAD_gc = (0x01<<0), /* Load Mode Register command mode */ +} EBI_CS_SDMODE_t; + +/* */ +typedef enum EBI_SDDATAW_enum +{ + EBI_SDDATAW_4BIT_gc = (0x00<<6), /* 4-bit data bus */ + EBI_SDDATAW_8BIT_gc = (0x01<<6), /* 8-bit data bus */ +} EBI_SDDATAW_t; + +/* */ +typedef enum EBI_LPCMODE_enum +{ + EBI_LPCMODE_ALE1_gc = (0x00<<4), /* Data muxed with addr byte 0 */ + EBI_LPCMODE_ALE12_gc = (0x02<<4), /* Data muxed with addr byte 0 and 1 */ +} EBI_LPCMODE_t; + +/* */ +typedef enum EBI_SRMODE_enum +{ + EBI_SRMODE_ALE1_gc = (0x00<<2), /* Addr byte 0 muxed with 1 */ + EBI_SRMODE_ALE2_gc = (0x01<<2), /* Addr byte 0 muxed with 2 */ + EBI_SRMODE_ALE12_gc = (0x02<<2), /* Addr byte 0 muxed with 1 and 2 */ + EBI_SRMODE_NOALE_gc = (0x03<<2), /* No addr muxing */ +} EBI_SRMODE_t; + +/* */ +typedef enum EBI_IFMODE_enum +{ + EBI_IFMODE_DISABLED_gc = (0x00<<0), /* EBI Disabled */ + EBI_IFMODE_3PORT_gc = (0x01<<0), /* 3-port mode */ + EBI_IFMODE_4PORT_gc = (0x02<<0), /* 4-port mode */ + EBI_IFMODE_2PORT_gc = (0x03<<0), /* 2-port mode */ +} EBI_IFMODE_t; + +/* */ +typedef enum EBI_SDCOL_enum +{ + EBI_SDCOL_8BIT_gc = (0x00<<0), /* 8 column bits */ + EBI_SDCOL_9BIT_gc = (0x01<<0), /* 9 column bits */ + EBI_SDCOL_10BIT_gc = (0x02<<0), /* 10 column bits */ + EBI_SDCOL_11BIT_gc = (0x03<<0), /* 11 column bits */ +} EBI_SDCOL_t; + +/* */ +typedef enum EBI_MRDLY_enum +{ + EBI_MRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_MRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_MRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_MRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_MRDLY_t; + +/* */ +typedef enum EBI_ROWCYCDLY_enum +{ + EBI_ROWCYCDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ROWCYCDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ROWCYCDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ROWCYCDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ROWCYCDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ROWCYCDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ROWCYCDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ROWCYCDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ROWCYCDLY_t; + +/* */ +typedef enum EBI_RPDLY_enum +{ + EBI_RPDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_RPDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_RPDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_RPDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_RPDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_RPDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_RPDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_RPDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_RPDLY_t; + +/* */ +typedef enum EBI_WRDLY_enum +{ + EBI_WRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_WRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_WRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_WRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_WRDLY_t; + +/* */ +typedef enum EBI_ESRDLY_enum +{ + EBI_ESRDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ESRDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ESRDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ESRDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ESRDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ESRDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ESRDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ESRDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ESRDLY_t; + +/* */ +typedef enum EBI_ROWCOLDLY_enum +{ + EBI_ROWCOLDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_ROWCOLDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_ROWCOLDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_ROWCOLDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_ROWCOLDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_ROWCOLDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_ROWCOLDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_ROWCOLDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_ROWCOLDLY_t; + + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_MASTER_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t STATUS; /* Status Register */ + register8_t BAUD; /* Baurd Rate Control Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_MASTER_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_SLAVE_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t STATUS; /* Status Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_SLAVE_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* Two-Wire Interface */ +typedef struct TWI_struct +{ + register8_t CTRL; /* TWI Common Control Register */ + TWI_MASTER_t MASTER; /* TWI master module */ + TWI_SLAVE_t SLAVE; /* TWI slave module */ +} TWI_t; + +/* Master Interrupt Level */ +typedef enum TWI_MASTER_INTLVL_enum +{ + TWI_MASTER_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_MASTER_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_MASTER_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_MASTER_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_MASTER_INTLVL_t; + +/* Inactive Timeout */ +typedef enum TWI_MASTER_TIMEOUT_enum +{ + TWI_MASTER_TIMEOUT_DISABLED_gc = (0x00<<2), /* Bus Timeout Disabled */ + TWI_MASTER_TIMEOUT_50US_gc = (0x01<<2), /* 50 Microseconds */ + TWI_MASTER_TIMEOUT_100US_gc = (0x02<<2), /* 100 Microseconds */ + TWI_MASTER_TIMEOUT_200US_gc = (0x03<<2), /* 200 Microseconds */ +} TWI_MASTER_TIMEOUT_t; + +/* Master Command */ +typedef enum TWI_MASTER_CMD_enum +{ + TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ + TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ + TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ +} TWI_MASTER_CMD_t; + +/* Master Bus State */ +typedef enum TWI_MASTER_BUSSTATE_enum +{ + TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ + TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ + TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ + TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ +} TWI_MASTER_BUSSTATE_t; + +/* Slave Interrupt Level */ +typedef enum TWI_SLAVE_INTLVL_enum +{ + TWI_SLAVE_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_SLAVE_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_SLAVE_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_SLAVE_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_SLAVE_INTLVL_t; + +/* Slave Command */ +typedef enum TWI_SLAVE_CMD_enum +{ + TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ + TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ +} TWI_SLAVE_CMD_t; + + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O port Configuration */ +typedef struct PORTCFG_struct +{ + register8_t MPCMASK; /* Multi-pin Configuration Mask */ + register8_t reserved_0x01; + register8_t VPCTRLA; /* Virtual Port Control Register A */ + register8_t VPCTRLB; /* Virtual Port Control Register B */ + register8_t CLKEVOUT; /* Clock and Event Out Register */ +} PORTCFG_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* Virtual Port */ +typedef struct VPORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t OUT; /* I/O Port Output */ + register8_t IN; /* I/O Port Input */ + register8_t INTFLAGS; /* Interrupt Flag Register */ +} VPORT_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O Ports */ +typedef struct PORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t DIRSET; /* I/O Port Data Direction Set */ + register8_t DIRCLR; /* I/O Port Data Direction Clear */ + register8_t DIRTGL; /* I/O Port Data Direction Toggle */ + register8_t OUT; /* I/O Port Output */ + register8_t OUTSET; /* I/O Port Output Set */ + register8_t OUTCLR; /* I/O Port Output Clear */ + register8_t OUTTGL; /* I/O Port Output Toggle */ + register8_t IN; /* I/O port Input */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INT0MASK; /* Port Interrupt 0 Mask */ + register8_t INT1MASK; /* Port Interrupt 1 Mask */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t PIN0CTRL; /* Pin 0 Control Register */ + register8_t PIN1CTRL; /* Pin 1 Control Register */ + register8_t PIN2CTRL; /* Pin 2 Control Register */ + register8_t PIN3CTRL; /* Pin 3 Control Register */ + register8_t PIN4CTRL; /* Pin 4 Control Register */ + register8_t PIN5CTRL; /* Pin 5 Control Register */ + register8_t PIN6CTRL; /* Pin 6 Control Register */ + register8_t PIN7CTRL; /* Pin 7 Control Register */ +} PORT_t; + +/* Virtual Port 0 Mapping */ +typedef enum PORTCFG_VP0MAP_enum +{ + PORTCFG_VP0MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP0MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP0MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP0MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP0MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP0MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP0MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP0MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP0MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP0MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP0MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP0MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP0MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP0MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP0MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP0MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP0MAP_t; + +/* Virtual Port 1 Mapping */ +typedef enum PORTCFG_VP1MAP_enum +{ + PORTCFG_VP1MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP1MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP1MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP1MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP1MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP1MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP1MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP1MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP1MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP1MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP1MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP1MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP1MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP1MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP1MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP1MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP1MAP_t; + +/* Virtual Port 2 Mapping */ +typedef enum PORTCFG_VP2MAP_enum +{ + PORTCFG_VP2MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP2MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP2MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP2MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP2MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP2MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP2MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP2MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP2MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP2MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP2MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP2MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP2MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP2MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP2MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP2MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP2MAP_t; + +/* Virtual Port 3 Mapping */ +typedef enum PORTCFG_VP3MAP_enum +{ + PORTCFG_VP3MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP3MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP3MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP3MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP3MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP3MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP3MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP3MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP3MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP3MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP3MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP3MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP3MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP3MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP3MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP3MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP3MAP_t; + +/* Clock Output Port */ +typedef enum PORTCFG_CLKOUT_enum +{ + PORTCFG_CLKOUT_OFF_gc = (0x00<<0), /* Clock Output Disabled */ + PORTCFG_CLKOUT_PC7_gc = (0x01<<0), /* Clock Output on Port C pin 7 */ + PORTCFG_CLKOUT_PD7_gc = (0x02<<0), /* Clock Output on Port D pin 7 */ + PORTCFG_CLKOUT_PE7_gc = (0x03<<0), /* Clock Output on Port E pin 7 */ +} PORTCFG_CLKOUT_t; + +/* Event Output Port */ +typedef enum PORTCFG_EVOUT_enum +{ + PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ + PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ + PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ + PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ +} PORTCFG_EVOUT_t; + +/* Port Interrupt 0 Level */ +typedef enum PORT_INT0LVL_enum +{ + PORT_INT0LVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + PORT_INT0LVL_LO_gc = (0x01<<0), /* Low Level */ + PORT_INT0LVL_MED_gc = (0x02<<0), /* Medium Level */ + PORT_INT0LVL_HI_gc = (0x03<<0), /* High Level */ +} PORT_INT0LVL_t; + +/* Port Interrupt 1 Level */ +typedef enum PORT_INT1LVL_enum +{ + PORT_INT1LVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + PORT_INT1LVL_LO_gc = (0x01<<2), /* Low Level */ + PORT_INT1LVL_MED_gc = (0x02<<2), /* Medium Level */ + PORT_INT1LVL_HI_gc = (0x03<<2), /* High Level */ +} PORT_INT1LVL_t; + +/* Output/Pull Configuration */ +typedef enum PORT_OPC_enum +{ + PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ + PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ + PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ + PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ + PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ + PORT_OPC_WIREDAND_gc = (0x05<<3), /* Wired AND */ + PORT_OPC_WIREDORPULL_gc = (0x06<<3), /* Wired OR w/ Pull-down */ + PORT_OPC_WIREDANDPULL_gc = (0x07<<3), /* Wired AND w/ Pull-up */ +} PORT_OPC_t; + +/* Input/Sense Configuration */ +typedef enum PORT_ISC_enum +{ + PORT_ISC_BOTHEDGES_gc = (0x00<<0), /* Sense Both Edges */ + PORT_ISC_RISING_gc = (0x01<<0), /* Sense Rising Edge */ + PORT_ISC_FALLING_gc = (0x02<<0), /* Sense Falling Edge */ + PORT_ISC_LEVEL_gc = (0x03<<0), /* Sense Level (Transparent For Events) */ + PORT_ISC_INPUT_DISABLE_gc = (0x07<<0), /* Disable Digital Input Buffer */ +} PORT_ISC_t; + + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 0 */ +typedef struct TC0_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + _WORDREGISTER(CCC); /* Compare or Capture C */ + _WORDREGISTER(CCD); /* Compare or Capture D */ + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ + _WORDREGISTER(CCCBUF); /* Compare Or Capture C Buffer */ + _WORDREGISTER(CCDBUF); /* Compare Or Capture D Buffer */ +} TC0_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 1 */ +typedef struct TC1_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t reserved_0x2E; + register8_t reserved_0x2F; + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ +} TC1_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* Advanced Waveform Extension */ +typedef struct AWEX_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t FDEVMASK; /* Fault Detection Event Mask */ + register8_t FDCTRL; /* Fault Detection Control Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x05; + register8_t DTBOTH; /* Dead Time Both Sides */ + register8_t DTBOTHBUF; /* Dead Time Both Sides Buffer */ + register8_t DTLS; /* Dead Time Low Side */ + register8_t DTHS; /* Dead Time High Side */ + register8_t DTLSBUF; /* Dead Time Low Side Buffer */ + register8_t DTHSBUF; /* Dead Time High Side Buffer */ + register8_t OUTOVEN; /* Output Override Enable */ +} AWEX_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* High-Resolution Extension */ +typedef struct HIRES_struct +{ + register8_t CTRL; /* Control Register */ +} HIRES_t; + +/* Clock Selection */ +typedef enum TC_CLKSEL_enum +{ + TC_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ + TC_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ + TC_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ + TC_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ + TC_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ + TC_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ + TC_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ + TC_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ + TC_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_CLKSEL_EVCH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_CLKSEL_EVCH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_CLKSEL_EVCH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_CLKSEL_EVCH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_CLKSEL_t; + +/* Waveform Generation Mode */ +typedef enum TC_WGMODE_enum +{ + TC_WGMODE_NORMAL_gc = (0x00<<0), /* Normal Mode */ + TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ + TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ + TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ + TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on TOP and BOTTOM */ + TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ +} TC_WGMODE_t; + +/* Event Action */ +typedef enum TC_EVACT_enum +{ + TC_EVACT_OFF_gc = (0x00<<5), /* No Event Action */ + TC_EVACT_CAPT_gc = (0x01<<5), /* Input Capture */ + TC_EVACT_UPDOWN_gc = (0x02<<5), /* Externally Controlled Up/Down Count */ + TC_EVACT_QDEC_gc = (0x03<<5), /* Quadrature Decode */ + TC_EVACT_RESTART_gc = (0x04<<5), /* Restart */ + TC_EVACT_FRW_gc = (0x05<<5), /* Frequency Capture */ + TC_EVACT_PW_gc = (0x06<<5), /* Pulse-width Capture */ +} TC_EVACT_t; + +/* Event Selection */ +typedef enum TC_EVSEL_enum +{ + TC_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + TC_EVSEL_CH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_EVSEL_CH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_EVSEL_CH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_EVSEL_CH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_EVSEL_CH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_EVSEL_CH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_EVSEL_CH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_EVSEL_CH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_EVSEL_t; + +/* Error Interrupt Level */ +typedef enum TC_ERRINTLVL_enum +{ + TC_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_ERRINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_ERRINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_ERRINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_ERRINTLVL_t; + +/* Overflow Interrupt Level */ +typedef enum TC_OVFINTLVL_enum +{ + TC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_OVFINTLVL_t; + +/* Compare or Capture D Interrupt Level */ +typedef enum TC_CCDINTLVL_enum +{ + TC_CCDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TC_CCDINTLVL_LO_gc = (0x01<<6), /* Low Level */ + TC_CCDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TC_CCDINTLVL_HI_gc = (0x03<<6), /* High Level */ +} TC_CCDINTLVL_t; + +/* Compare or Capture C Interrupt Level */ +typedef enum TC_CCCINTLVL_enum +{ + TC_CCCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + TC_CCCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + TC_CCCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + TC_CCCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} TC_CCCINTLVL_t; + +/* Compare or Capture B Interrupt Level */ +typedef enum TC_CCBINTLVL_enum +{ + TC_CCBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_CCBINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_CCBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_CCBINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_CCBINTLVL_t; + +/* Compare or Capture A Interrupt Level */ +typedef enum TC_CCAINTLVL_enum +{ + TC_CCAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_CCAINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_CCAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_CCAINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_CCAINTLVL_t; + +/* Timer/Counter Command */ +typedef enum TC_CMD_enum +{ + TC_CMD_NONE_gc = (0x00<<2), /* No Command */ + TC_CMD_UPDATE_gc = (0x01<<2), /* Force Update */ + TC_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ + TC_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ +} TC_CMD_t; + +/* Fault Detect Action */ +typedef enum AWEX_FDACT_enum +{ + AWEX_FDACT_NONE_gc = (0x00<<0), /* No Fault Protection */ + AWEX_FDACT_CLEAROE_gc = (0x01<<0), /* Clear Output Enable Bits */ + AWEX_FDACT_CLEARDIR_gc = (0x03<<0), /* Clear I/O Port Direction Bits */ +} AWEX_FDACT_t; + +/* High Resolution Enable */ +typedef enum HIRES_HREN_enum +{ + HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ + HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ + HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ + HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ +} HIRES_HREN_t; + + +/* +-------------------------------------------------------------------------- +USART - Universal Asynchronous Receiver-Transmitter +-------------------------------------------------------------------------- +*/ + +/* Universal Synchronous/Asynchronous Receiver/Transmitter */ +typedef struct USART_struct +{ + register8_t DATA; /* Data Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x02; + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t BAUDCTRLA; /* Baud Rate Control Register A */ + register8_t BAUDCTRLB; /* Baud Rate Control Register B */ +} USART_t; + +/* Receive Complete Interrupt level */ +typedef enum USART_RXCINTLVL_enum +{ + USART_RXCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + USART_RXCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + USART_RXCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + USART_RXCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} USART_RXCINTLVL_t; + +/* Transmit Complete Interrupt level */ +typedef enum USART_TXCINTLVL_enum +{ + USART_TXCINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + USART_TXCINTLVL_LO_gc = (0x01<<2), /* Low Level */ + USART_TXCINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + USART_TXCINTLVL_HI_gc = (0x03<<2), /* High Level */ +} USART_TXCINTLVL_t; + +/* Data Register Empty Interrupt level */ +typedef enum USART_DREINTLVL_enum +{ + USART_DREINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + USART_DREINTLVL_LO_gc = (0x01<<0), /* Low Level */ + USART_DREINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + USART_DREINTLVL_HI_gc = (0x03<<0), /* High Level */ +} USART_DREINTLVL_t; + +/* Character Size */ +typedef enum USART_CHSIZE_enum +{ + USART_CHSIZE_5BIT_gc = (0x00<<0), /* Character size: 5 bit */ + USART_CHSIZE_6BIT_gc = (0x01<<0), /* Character size: 6 bit */ + USART_CHSIZE_7BIT_gc = (0x02<<0), /* Character size: 7 bit */ + USART_CHSIZE_8BIT_gc = (0x03<<0), /* Character size: 8 bit */ + USART_CHSIZE_9BIT_gc = (0x07<<0), /* Character size: 9 bit */ +} USART_CHSIZE_t; + +/* Communication Mode */ +typedef enum USART_CMODE_enum +{ + USART_CMODE_ASYNCHRONOUS_gc = (0x00<<6), /* Asynchronous Mode */ + USART_CMODE_SYNCHRONOUS_gc = (0x01<<6), /* Synchronous Mode */ + USART_CMODE_IRDA_gc = (0x02<<6), /* IrDA Mode */ + USART_CMODE_MSPI_gc = (0x03<<6), /* Master SPI Mode */ +} USART_CMODE_t; + +/* Parity Mode */ +typedef enum USART_PMODE_enum +{ + USART_PMODE_DISABLED_gc = (0x00<<4), /* No Parity */ + USART_PMODE_EVEN_gc = (0x02<<4), /* Even Parity */ + USART_PMODE_ODD_gc = (0x03<<4), /* Odd Parity */ +} USART_PMODE_t; + + +/* +-------------------------------------------------------------------------- +SPI - Serial Peripheral Interface +-------------------------------------------------------------------------- +*/ + +/* Serial Peripheral Interface */ +typedef struct SPI_struct +{ + register8_t CTRL; /* Control Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t STATUS; /* Status Register */ + register8_t DATA; /* Data Register */ +} SPI_t; + +/* SPI Mode */ +typedef enum SPI_MODE_enum +{ + SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */ + SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */ + SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */ + SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */ +} SPI_MODE_t; + +/* Prescaler setting */ +typedef enum SPI_PRESCALER_enum +{ + SPI_PRESCALER_DIV4_gc = (0x00<<0), /* System Clock / 4 */ + SPI_PRESCALER_DIV16_gc = (0x01<<0), /* System Clock / 16 */ + SPI_PRESCALER_DIV64_gc = (0x02<<0), /* System Clock / 64 */ + SPI_PRESCALER_DIV128_gc = (0x03<<0), /* System Clock / 128 */ +} SPI_PRESCALER_t; + +/* Interrupt level */ +typedef enum SPI_INTLVL_enum +{ + SPI_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + SPI_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + SPI_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + SPI_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} SPI_INTLVL_t; + + +/* +-------------------------------------------------------------------------- +IRCOM - IR Communication Module +-------------------------------------------------------------------------- +*/ + +/* IR Communication Module */ +typedef struct IRCOM_struct +{ + register8_t CTRL; /* Control Register */ + register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ + register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ +} IRCOM_t; + +/* Event channel selection */ +typedef enum IRDA_EVSEL_enum +{ + IRDA_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + IRDA_EVSEL_0_gc = (0x08<<0), /* Event Channel 0 */ + IRDA_EVSEL_1_gc = (0x09<<0), /* Event Channel 1 */ + IRDA_EVSEL_2_gc = (0x0A<<0), /* Event Channel 2 */ + IRDA_EVSEL_3_gc = (0x0B<<0), /* Event Channel 3 */ + IRDA_EVSEL_4_gc = (0x0C<<0), /* Event Channel 4 */ + IRDA_EVSEL_5_gc = (0x0D<<0), /* Event Channel 5 */ + IRDA_EVSEL_6_gc = (0x0E<<0), /* Event Channel 6 */ + IRDA_EVSEL_7_gc = (0x0F<<0), /* Event Channel 7 */ +} IRDA_EVSEL_t; + + +/* +-------------------------------------------------------------------------- +AES - AES Module +-------------------------------------------------------------------------- +*/ + +/* AES Module */ +typedef struct AES_struct +{ + register8_t CTRL; /* AES Control Register */ + register8_t STATUS; /* AES Status Register */ + register8_t STATE; /* AES State Register */ + register8_t KEY; /* AES Key Register */ + register8_t INTCTRL; /* AES Interrupt Control Register */ +} AES_t; + +/* Interrupt level */ +typedef enum AES_INTLVL_enum +{ + AES_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + AES_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + AES_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + AES_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} AES_INTLVL_t; + + + +/* +========================================================================== +IO Module Instances. Mapped to memory. +========================================================================== +*/ + +#define GPIO (*(GPIO_t *) 0x0000) /* General Purpose IO Registers */ +#define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port 0 */ +#define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port 1 */ +#define VPORT2 (*(VPORT_t *) 0x0018) /* Virtual Port 2 */ +#define VPORT3 (*(VPORT_t *) 0x001C) /* Virtual Port 3 */ +#define OCD (*(OCD_t *) 0x002E) /* On-Chip Debug System */ +#define CPU (*(CPU_t *) 0x0030) /* CPU Registers */ +#define CLK (*(CLK_t *) 0x0040) /* Clock System */ +#define SLEEP (*(SLEEP_t *) 0x0048) /* Sleep Controller */ +#define OSC (*(OSC_t *) 0x0050) /* Oscillator Control */ +#define DFLLRC32M (*(DFLL_t *) 0x0060) /* DFLL for 32MHz RC Oscillator */ +#define DFLLRC2M (*(DFLL_t *) 0x0068) /* DFLL for 2MHz RC Oscillator */ +#define PR (*(PR_t *) 0x0070) /* Power Reduction */ +#define RST (*(RST_t *) 0x0078) /* Reset Controller */ +#define WDT (*(WDT_t *) 0x0080) /* Watch-Dog Timer */ +#define MCU (*(MCU_t *) 0x0090) /* MCU Control */ +#define PMIC (*(PMIC_t *) 0x00A0) /* Programmable Interrupt Controller */ +#define PORTCFG (*(PORTCFG_t *) 0x00B0) /* Port Configuration */ +#define AES (*(AES_t *) 0x00C0) /* AES Crypto Module */ +#define DMA (*(DMA_t *) 0x0100) /* DMA Controller */ +#define EVSYS (*(EVSYS_t *) 0x0180) /* Event System */ +#define NVM (*(NVM_t *) 0x01C0) /* Non Volatile Memory Controller */ +#define ADCA (*(ADC_t *) 0x0200) /* Analog to Digital Converter A */ +#define ADCB (*(ADC_t *) 0x0240) /* Analog to Digital Converter B */ +#define DACA (*(DAC_t *) 0x0300) /* Digital to Analog Converter A */ +#define DACB (*(DAC_t *) 0x0320) /* Digital to Analog Converter B */ +#define ACA (*(AC_t *) 0x0380) /* Analog Comparator A */ +#define ACB (*(AC_t *) 0x0390) /* Analog Comparator B */ +#define RTC (*(RTC_t *) 0x0400) /* Real-Time Counter */ +#define EBI (*(EBI_t *) 0x0440) /* External Bus Interface */ +#define TWIC (*(TWI_t *) 0x0480) /* Two-Wire Interface C */ +#define TWID (*(TWI_t *) 0x0490) /* Two-Wire Interface D */ +#define TWIE (*(TWI_t *) 0x04A0) /* Two-Wire Interface E */ +#define TWIF (*(TWI_t *) 0x04B0) /* Two-Wire Interface F */ +#define PORTA (*(PORT_t *) 0x0600) /* Port A */ +#define PORTB (*(PORT_t *) 0x0620) /* Port B */ +#define PORTC (*(PORT_t *) 0x0640) /* Port C */ +#define PORTD (*(PORT_t *) 0x0660) /* Port D */ +#define PORTE (*(PORT_t *) 0x0680) /* Port E */ +#define PORTF (*(PORT_t *) 0x06A0) /* Port F */ +#define PORTH (*(PORT_t *) 0x06E0) /* Port H */ +#define PORTJ (*(PORT_t *) 0x0700) /* Port J */ +#define PORTK (*(PORT_t *) 0x0720) /* Port K */ +#define PORTQ (*(PORT_t *) 0x07C0) /* Port Q */ +#define PORTR (*(PORT_t *) 0x07E0) /* Port R */ +#define TCC0 (*(TC0_t *) 0x0800) /* Timer/Counter C0 */ +#define TCC1 (*(TC1_t *) 0x0840) /* Timer/Counter C1 */ +#define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension C */ +#define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension C */ +#define USARTC0 (*(USART_t *) 0x08A0) /* Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC1 (*(USART_t *) 0x08B0) /* Universal Asynchronous Receiver-Transmitter C1 */ +#define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface C */ +#define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ +#define TCD0 (*(TC0_t *) 0x0900) /* Timer/Counter D0 */ +#define TCD1 (*(TC1_t *) 0x0940) /* Timer/Counter D1 */ +#define HIRESD (*(HIRES_t *) 0x0990) /* High-Resolution Extension D */ +#define USARTD0 (*(USART_t *) 0x09A0) /* Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD1 (*(USART_t *) 0x09B0) /* Universal Asynchronous Receiver-Transmitter D1 */ +#define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface D */ +#define TCE0 (*(TC0_t *) 0x0A00) /* Timer/Counter E0 */ +#define TCE1 (*(TC1_t *) 0x0A40) /* Timer/Counter E1 */ +#define AWEXE (*(AWEX_t *) 0x0A80) /* Advanced Waveform Extension E */ +#define HIRESE (*(HIRES_t *) 0x0A90) /* High-Resolution Extension E */ +#define USARTE0 (*(USART_t *) 0x0AA0) /* Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE1 (*(USART_t *) 0x0AB0) /* Universal Asynchronous Receiver-Transmitter E1 */ +#define SPIE (*(SPI_t *) 0x0AC0) /* Serial Peripheral Interface E */ +#define TCF0 (*(TC0_t *) 0x0B00) /* Timer/Counter F0 */ +#define TCF1 (*(TC1_t *) 0x0B40) /* Timer/Counter F1 */ +#define HIRESF (*(HIRES_t *) 0x0B90) /* High-Resolution Extension F */ +#define USARTF0 (*(USART_t *) 0x0BA0) /* Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF1 (*(USART_t *) 0x0BB0) /* Universal Asynchronous Receiver-Transmitter F1 */ +#define SPIF (*(SPI_t *) 0x0BC0) /* Serial Peripheral Interface F */ + + +#endif /* !defined (__ASSEMBLER__) */ + + +/* ========== Flattened fully qualified IO register names ========== */ + +/* GPIO - General Purpose IO Registers */ +#define GPIO_GPIO0 _SFR_MEM8(0x0000) +#define GPIO_GPIO1 _SFR_MEM8(0x0001) +#define GPIO_GPIO2 _SFR_MEM8(0x0002) +#define GPIO_GPIO3 _SFR_MEM8(0x0003) +#define GPIO_GPIO4 _SFR_MEM8(0x0004) +#define GPIO_GPIO5 _SFR_MEM8(0x0005) +#define GPIO_GPIO6 _SFR_MEM8(0x0006) +#define GPIO_GPIO7 _SFR_MEM8(0x0007) +#define GPIO_GPIO8 _SFR_MEM8(0x0008) +#define GPIO_GPIO9 _SFR_MEM8(0x0009) +#define GPIO_GPIOA _SFR_MEM8(0x000A) +#define GPIO_GPIOB _SFR_MEM8(0x000B) +#define GPIO_GPIOC _SFR_MEM8(0x000C) +#define GPIO_GPIOD _SFR_MEM8(0x000D) +#define GPIO_GPIOE _SFR_MEM8(0x000E) +#define GPIO_GPIOF _SFR_MEM8(0x000F) + +/* VPORT0 - Virtual Port 0 */ +#define VPORT0_DIR _SFR_MEM8(0x0010) +#define VPORT0_OUT _SFR_MEM8(0x0011) +#define VPORT0_IN _SFR_MEM8(0x0012) +#define VPORT0_INTFLAGS _SFR_MEM8(0x0013) + +/* VPORT1 - Virtual Port 1 */ +#define VPORT1_DIR _SFR_MEM8(0x0014) +#define VPORT1_OUT _SFR_MEM8(0x0015) +#define VPORT1_IN _SFR_MEM8(0x0016) +#define VPORT1_INTFLAGS _SFR_MEM8(0x0017) + +/* VPORT2 - Virtual Port 2 */ +#define VPORT2_DIR _SFR_MEM8(0x0018) +#define VPORT2_OUT _SFR_MEM8(0x0019) +#define VPORT2_IN _SFR_MEM8(0x001A) +#define VPORT2_INTFLAGS _SFR_MEM8(0x001B) + +/* VPORT3 - Virtual Port 3 */ +#define VPORT3_DIR _SFR_MEM8(0x001C) +#define VPORT3_OUT _SFR_MEM8(0x001D) +#define VPORT3_IN _SFR_MEM8(0x001E) +#define VPORT3_INTFLAGS _SFR_MEM8(0x001F) + +/* OCD - On-Chip Debug System */ +#define OCD_OCDR0 _SFR_MEM8(0x002E) +#define OCD_OCDR1 _SFR_MEM8(0x002F) + +/* CPU - CPU Registers */ +#define CPU_CCP _SFR_MEM8(0x0034) +#define CPU_RAMPD _SFR_MEM8(0x0038) +#define CPU_RAMPX _SFR_MEM8(0x0039) +#define CPU_RAMPY _SFR_MEM8(0x003A) +#define CPU_RAMPZ _SFR_MEM8(0x003B) +#define CPU_EIND _SFR_MEM8(0x003C) +#define CPU_SPL _SFR_MEM8(0x003D) +#define CPU_SPH _SFR_MEM8(0x003E) +#define CPU_SREG _SFR_MEM8(0x003F) + +/* CLK - Clock System */ +#define CLK_CTRL _SFR_MEM8(0x0040) +#define CLK_PSCTRL _SFR_MEM8(0x0041) +#define CLK_LOCK _SFR_MEM8(0x0042) +#define CLK_RTCCTRL _SFR_MEM8(0x0043) + +/* SLEEP - Sleep Controller */ +#define SLEEP_CTRL _SFR_MEM8(0x0048) + +/* OSC - Oscillator Control */ +#define OSC_CTRL _SFR_MEM8(0x0050) +#define OSC_STATUS _SFR_MEM8(0x0051) +#define OSC_XOSCCTRL _SFR_MEM8(0x0052) +#define OSC_XOSCFAIL _SFR_MEM8(0x0053) +#define OSC_RC32KCAL _SFR_MEM8(0x0054) +#define OSC_PLLCTRL _SFR_MEM8(0x0055) +#define OSC_DFLLCTRL _SFR_MEM8(0x0056) + +/* DFLLRC32M - DFLL for 32MHz RC Oscillator */ +#define DFLLRC32M_CTRL _SFR_MEM8(0x0060) +#define DFLLRC32M_CALA _SFR_MEM8(0x0062) +#define DFLLRC32M_CALB _SFR_MEM8(0x0063) +#define DFLLRC32M_OSCCNT0 _SFR_MEM8(0x0064) +#define DFLLRC32M_OSCCNT1 _SFR_MEM8(0x0065) +#define DFLLRC32M_OSCCNT2 _SFR_MEM8(0x0066) + +/* DFLLRC2M - DFLL for 2MHz RC Oscillator */ +#define DFLLRC2M_CTRL _SFR_MEM8(0x0068) +#define DFLLRC2M_CALA _SFR_MEM8(0x006A) +#define DFLLRC2M_CALB _SFR_MEM8(0x006B) +#define DFLLRC2M_OSCCNT0 _SFR_MEM8(0x006C) +#define DFLLRC2M_OSCCNT1 _SFR_MEM8(0x006D) +#define DFLLRC2M_OSCCNT2 _SFR_MEM8(0x006E) + +/* PR - Power Reduction */ +#define PR_PR _SFR_MEM8(0x0070) +#define PR_PRPA _SFR_MEM8(0x0071) +#define PR_PRPB _SFR_MEM8(0x0072) +#define PR_PRPC _SFR_MEM8(0x0073) +#define PR_PRPD _SFR_MEM8(0x0074) +#define PR_PRPE _SFR_MEM8(0x0075) +#define PR_PRPF _SFR_MEM8(0x0076) + +/* RST - Reset Controller */ +#define RST_STATUS _SFR_MEM8(0x0078) +#define RST_CTRL _SFR_MEM8(0x0079) + +/* WDT - Watch-Dog Timer */ +#define WDT_CTRL _SFR_MEM8(0x0080) +#define WDT_WINCTRL _SFR_MEM8(0x0081) +#define WDT_STATUS _SFR_MEM8(0x0082) + +/* MCU - MCU Control */ +#define MCU_DEVID0 _SFR_MEM8(0x0090) +#define MCU_DEVID1 _SFR_MEM8(0x0091) +#define MCU_DEVID2 _SFR_MEM8(0x0092) +#define MCU_REVID _SFR_MEM8(0x0093) +#define MCU_JTAGUID _SFR_MEM8(0x0094) +#define MCU_MCUCR _SFR_MEM8(0x0096) +#define MCU_EVSYSLOCK _SFR_MEM8(0x0098) +#define MCU_AWEXLOCK _SFR_MEM8(0x0099) + +/* PMIC - Programmable Interrupt Controller */ +#define PMIC_STATUS _SFR_MEM8(0x00A0) +#define PMIC_INTPRI _SFR_MEM8(0x00A1) +#define PMIC_CTRL _SFR_MEM8(0x00A2) + +/* PORTCFG - Port Configuration */ +#define PORTCFG_MPCMASK _SFR_MEM8(0x00B0) +#define PORTCFG_VPCTRLA _SFR_MEM8(0x00B2) +#define PORTCFG_VPCTRLB _SFR_MEM8(0x00B3) +#define PORTCFG_CLKEVOUT _SFR_MEM8(0x00B4) + +/* AES - AES Crypto Module */ +#define AES_CTRL _SFR_MEM8(0x00C0) +#define AES_STATUS _SFR_MEM8(0x00C1) +#define AES_STATE _SFR_MEM8(0x00C2) +#define AES_KEY _SFR_MEM8(0x00C3) +#define AES_INTCTRL _SFR_MEM8(0x00C4) + +/* DMA - DMA Controller */ +#define DMA_CTRL _SFR_MEM8(0x0100) +#define DMA_INTFLAGS _SFR_MEM8(0x0103) +#define DMA_STATUS _SFR_MEM8(0x0104) +#define DMA_TEMP _SFR_MEM16(0x0106) +#define DMA_CH0_CTRLA _SFR_MEM8(0x0110) +#define DMA_CH0_CTRLB _SFR_MEM8(0x0111) +#define DMA_CH0_ADDRCTRL _SFR_MEM8(0x0112) +#define DMA_CH0_TRIGSRC _SFR_MEM8(0x0113) +#define DMA_CH0_TRFCNT _SFR_MEM16(0x0114) +#define DMA_CH0_REPCNT _SFR_MEM8(0x0116) +#define DMA_CH0_SRCADDR0 _SFR_MEM8(0x0118) +#define DMA_CH0_SRCADDR1 _SFR_MEM8(0x0119) +#define DMA_CH0_SRCADDR2 _SFR_MEM8(0x011A) +#define DMA_CH0_DESTADDR0 _SFR_MEM8(0x011C) +#define DMA_CH0_DESTADDR1 _SFR_MEM8(0x011D) +#define DMA_CH0_DESTADDR2 _SFR_MEM8(0x011E) +#define DMA_CH1_CTRLA _SFR_MEM8(0x0120) +#define DMA_CH1_CTRLB _SFR_MEM8(0x0121) +#define DMA_CH1_ADDRCTRL _SFR_MEM8(0x0122) +#define DMA_CH1_TRIGSRC _SFR_MEM8(0x0123) +#define DMA_CH1_TRFCNT _SFR_MEM16(0x0124) +#define DMA_CH1_REPCNT _SFR_MEM8(0x0126) +#define DMA_CH1_SRCADDR0 _SFR_MEM8(0x0128) +#define DMA_CH1_SRCADDR1 _SFR_MEM8(0x0129) +#define DMA_CH1_SRCADDR2 _SFR_MEM8(0x012A) +#define DMA_CH1_DESTADDR0 _SFR_MEM8(0x012C) +#define DMA_CH1_DESTADDR1 _SFR_MEM8(0x012D) +#define DMA_CH1_DESTADDR2 _SFR_MEM8(0x012E) +#define DMA_CH2_CTRLA _SFR_MEM8(0x0130) +#define DMA_CH2_CTRLB _SFR_MEM8(0x0131) +#define DMA_CH2_ADDRCTRL _SFR_MEM8(0x0132) +#define DMA_CH2_TRIGSRC _SFR_MEM8(0x0133) +#define DMA_CH2_TRFCNT _SFR_MEM16(0x0134) +#define DMA_CH2_REPCNT _SFR_MEM8(0x0136) +#define DMA_CH2_SRCADDR0 _SFR_MEM8(0x0138) +#define DMA_CH2_SRCADDR1 _SFR_MEM8(0x0139) +#define DMA_CH2_SRCADDR2 _SFR_MEM8(0x013A) +#define DMA_CH2_DESTADDR0 _SFR_MEM8(0x013C) +#define DMA_CH2_DESTADDR1 _SFR_MEM8(0x013D) +#define DMA_CH2_DESTADDR2 _SFR_MEM8(0x013E) +#define DMA_CH3_CTRLA _SFR_MEM8(0x0140) +#define DMA_CH3_CTRLB _SFR_MEM8(0x0141) +#define DMA_CH3_ADDRCTRL _SFR_MEM8(0x0142) +#define DMA_CH3_TRIGSRC _SFR_MEM8(0x0143) +#define DMA_CH3_TRFCNT _SFR_MEM16(0x0144) +#define DMA_CH3_REPCNT _SFR_MEM8(0x0146) +#define DMA_CH3_SRCADDR0 _SFR_MEM8(0x0148) +#define DMA_CH3_SRCADDR1 _SFR_MEM8(0x0149) +#define DMA_CH3_SRCADDR2 _SFR_MEM8(0x014A) +#define DMA_CH3_DESTADDR0 _SFR_MEM8(0x014C) +#define DMA_CH3_DESTADDR1 _SFR_MEM8(0x014D) +#define DMA_CH3_DESTADDR2 _SFR_MEM8(0x014E) + +/* EVSYS - Event System */ +#define EVSYS_CH0MUX _SFR_MEM8(0x0180) +#define EVSYS_CH1MUX _SFR_MEM8(0x0181) +#define EVSYS_CH2MUX _SFR_MEM8(0x0182) +#define EVSYS_CH3MUX _SFR_MEM8(0x0183) +#define EVSYS_CH4MUX _SFR_MEM8(0x0184) +#define EVSYS_CH5MUX _SFR_MEM8(0x0185) +#define EVSYS_CH6MUX _SFR_MEM8(0x0186) +#define EVSYS_CH7MUX _SFR_MEM8(0x0187) +#define EVSYS_CH0CTRL _SFR_MEM8(0x0188) +#define EVSYS_CH1CTRL _SFR_MEM8(0x0189) +#define EVSYS_CH2CTRL _SFR_MEM8(0x018A) +#define EVSYS_CH3CTRL _SFR_MEM8(0x018B) +#define EVSYS_CH4CTRL _SFR_MEM8(0x018C) +#define EVSYS_CH5CTRL _SFR_MEM8(0x018D) +#define EVSYS_CH6CTRL _SFR_MEM8(0x018E) +#define EVSYS_CH7CTRL _SFR_MEM8(0x018F) +#define EVSYS_STROBE _SFR_MEM8(0x0190) +#define EVSYS_DATA _SFR_MEM8(0x0191) + +/* NVM - Non Volatile Memory Controller */ +#define NVM_ADDR0 _SFR_MEM8(0x01C0) +#define NVM_ADDR1 _SFR_MEM8(0x01C1) +#define NVM_ADDR2 _SFR_MEM8(0x01C2) +#define NVM_DATA0 _SFR_MEM8(0x01C4) +#define NVM_DATA1 _SFR_MEM8(0x01C5) +#define NVM_DATA2 _SFR_MEM8(0x01C6) +#define NVM_CMD _SFR_MEM8(0x01CA) +#define NVM_CTRLA _SFR_MEM8(0x01CB) +#define NVM_CTRLB _SFR_MEM8(0x01CC) +#define NVM_INTCTRL _SFR_MEM8(0x01CD) +#define NVM_STATUS _SFR_MEM8(0x01CF) +#define NVM_LOCKBITS _SFR_MEM8(0x01D0) + +/* ADCA - Analog to Digital Converter A */ +#define ADCA_CTRLA _SFR_MEM8(0x0200) +#define ADCA_CTRLB _SFR_MEM8(0x0201) +#define ADCA_REFCTRL _SFR_MEM8(0x0202) +#define ADCA_EVCTRL _SFR_MEM8(0x0203) +#define ADCA_PRESCALER _SFR_MEM8(0x0204) +#define ADCA_CALCTRL _SFR_MEM8(0x0205) +#define ADCA_INTFLAGS _SFR_MEM8(0x0206) +#define ADCA_CALIB _SFR_MEM8(0x020C) +#define ADCA_CH0RES _SFR_MEM16(0x0210) +#define ADCA_CH1RES _SFR_MEM16(0x0212) +#define ADCA_CH2RES _SFR_MEM16(0x0214) +#define ADCA_CH3RES _SFR_MEM16(0x0216) +#define ADCA_CMP _SFR_MEM16(0x0218) +#define ADCA_CH0_CTRL _SFR_MEM8(0x0220) +#define ADCA_CH0_MUXCTRL _SFR_MEM8(0x0221) +#define ADCA_CH0_INTCTRL _SFR_MEM8(0x0222) +#define ADCA_CH0_INTFLAGS _SFR_MEM8(0x0223) +#define ADCA_CH0_RES _SFR_MEM16(0x0224) +#define ADCA_CH1_CTRL _SFR_MEM8(0x0228) +#define ADCA_CH1_MUXCTRL _SFR_MEM8(0x0229) +#define ADCA_CH1_INTCTRL _SFR_MEM8(0x022A) +#define ADCA_CH1_INTFLAGS _SFR_MEM8(0x022B) +#define ADCA_CH1_RES _SFR_MEM16(0x022C) +#define ADCA_CH2_CTRL _SFR_MEM8(0x0230) +#define ADCA_CH2_MUXCTRL _SFR_MEM8(0x0231) +#define ADCA_CH2_INTCTRL _SFR_MEM8(0x0232) +#define ADCA_CH2_INTFLAGS _SFR_MEM8(0x0233) +#define ADCA_CH2_RES _SFR_MEM16(0x0234) +#define ADCA_CH3_CTRL _SFR_MEM8(0x0238) +#define ADCA_CH3_MUXCTRL _SFR_MEM8(0x0239) +#define ADCA_CH3_INTCTRL _SFR_MEM8(0x023A) +#define ADCA_CH3_INTFLAGS _SFR_MEM8(0x023B) +#define ADCA_CH3_RES _SFR_MEM16(0x023C) + +/* ADCB - Analog to Digital Converter B */ +#define ADCB_CTRLA _SFR_MEM8(0x0240) +#define ADCB_CTRLB _SFR_MEM8(0x0241) +#define ADCB_REFCTRL _SFR_MEM8(0x0242) +#define ADCB_EVCTRL _SFR_MEM8(0x0243) +#define ADCB_PRESCALER _SFR_MEM8(0x0244) +#define ADCB_CALCTRL _SFR_MEM8(0x0245) +#define ADCB_INTFLAGS _SFR_MEM8(0x0246) +#define ADCB_CALIB _SFR_MEM8(0x024C) +#define ADCB_CH0RES _SFR_MEM16(0x0250) +#define ADCB_CH1RES _SFR_MEM16(0x0252) +#define ADCB_CH2RES _SFR_MEM16(0x0254) +#define ADCB_CH3RES _SFR_MEM16(0x0256) +#define ADCB_CMP _SFR_MEM16(0x0258) +#define ADCB_CH0_CTRL _SFR_MEM8(0x0260) +#define ADCB_CH0_MUXCTRL _SFR_MEM8(0x0261) +#define ADCB_CH0_INTCTRL _SFR_MEM8(0x0262) +#define ADCB_CH0_INTFLAGS _SFR_MEM8(0x0263) +#define ADCB_CH0_RES _SFR_MEM16(0x0264) +#define ADCB_CH1_CTRL _SFR_MEM8(0x0268) +#define ADCB_CH1_MUXCTRL _SFR_MEM8(0x0269) +#define ADCB_CH1_INTCTRL _SFR_MEM8(0x026A) +#define ADCB_CH1_INTFLAGS _SFR_MEM8(0x026B) +#define ADCB_CH1_RES _SFR_MEM16(0x026C) +#define ADCB_CH2_CTRL _SFR_MEM8(0x0270) +#define ADCB_CH2_MUXCTRL _SFR_MEM8(0x0271) +#define ADCB_CH2_INTCTRL _SFR_MEM8(0x0272) +#define ADCB_CH2_INTFLAGS _SFR_MEM8(0x0273) +#define ADCB_CH2_RES _SFR_MEM16(0x0274) +#define ADCB_CH3_CTRL _SFR_MEM8(0x0278) +#define ADCB_CH3_MUXCTRL _SFR_MEM8(0x0279) +#define ADCB_CH3_INTCTRL _SFR_MEM8(0x027A) +#define ADCB_CH3_INTFLAGS _SFR_MEM8(0x027B) +#define ADCB_CH3_RES _SFR_MEM16(0x027C) + +/* DACA - Digital to Analog Converter A */ +#define DACA_CTRLA _SFR_MEM8(0x0300) +#define DACA_CTRLB _SFR_MEM8(0x0301) +#define DACA_CTRLC _SFR_MEM8(0x0302) +#define DACA_EVCTRL _SFR_MEM8(0x0303) +#define DACA_TIMCTRL _SFR_MEM8(0x0304) +#define DACA_STATUS _SFR_MEM8(0x0305) +#define DACA_GAINCAL _SFR_MEM8(0x0308) +#define DACA_OFFSETCAL _SFR_MEM8(0x0309) +#define DACA_CH0DATA _SFR_MEM16(0x0318) +#define DACA_CH1DATA _SFR_MEM16(0x031A) + +/* DACB - Digital to Analog Converter B */ +#define DACB_CTRLA _SFR_MEM8(0x0320) +#define DACB_CTRLB _SFR_MEM8(0x0321) +#define DACB_CTRLC _SFR_MEM8(0x0322) +#define DACB_EVCTRL _SFR_MEM8(0x0323) +#define DACB_TIMCTRL _SFR_MEM8(0x0324) +#define DACB_STATUS _SFR_MEM8(0x0325) +#define DACB_GAINCAL _SFR_MEM8(0x0328) +#define DACB_OFFSETCAL _SFR_MEM8(0x0329) +#define DACB_CH0DATA _SFR_MEM16(0x0338) +#define DACB_CH1DATA _SFR_MEM16(0x033A) + +/* ACA - Analog Comparator A */ +#define ACA_AC0CTRL _SFR_MEM8(0x0380) +#define ACA_AC1CTRL _SFR_MEM8(0x0381) +#define ACA_AC0MUXCTRL _SFR_MEM8(0x0382) +#define ACA_AC1MUXCTRL _SFR_MEM8(0x0383) +#define ACA_CTRLA _SFR_MEM8(0x0384) +#define ACA_CTRLB _SFR_MEM8(0x0385) +#define ACA_WINCTRL _SFR_MEM8(0x0386) +#define ACA_STATUS _SFR_MEM8(0x0387) + +/* ACB - Analog Comparator B */ +#define ACB_AC0CTRL _SFR_MEM8(0x0390) +#define ACB_AC1CTRL _SFR_MEM8(0x0391) +#define ACB_AC0MUXCTRL _SFR_MEM8(0x0392) +#define ACB_AC1MUXCTRL _SFR_MEM8(0x0393) +#define ACB_CTRLA _SFR_MEM8(0x0394) +#define ACB_CTRLB _SFR_MEM8(0x0395) +#define ACB_WINCTRL _SFR_MEM8(0x0396) +#define ACB_STATUS _SFR_MEM8(0x0397) + +/* RTC - Real-Time Counter */ +#define RTC_CTRL _SFR_MEM8(0x0400) +#define RTC_STATUS _SFR_MEM8(0x0401) +#define RTC_INTCTRL _SFR_MEM8(0x0402) +#define RTC_INTFLAGS _SFR_MEM8(0x0403) +#define RTC_TEMP _SFR_MEM8(0x0404) +#define RTC_CNT _SFR_MEM16(0x0408) +#define RTC_PER _SFR_MEM16(0x040A) +#define RTC_COMP _SFR_MEM16(0x040C) + +/* EBI - External Bus Interface */ +#define EBI_CTRL _SFR_MEM8(0x0440) +#define EBI_SDRAMCTRLA _SFR_MEM8(0x0441) +#define EBI_REFRESH _SFR_MEM16(0x0444) +#define EBI_INITDLY _SFR_MEM16(0x0446) +#define EBI_SDRAMCTRLB _SFR_MEM8(0x0448) +#define EBI_SDRAMCTRLC _SFR_MEM8(0x0449) +#define EBI_CS0_CTRLA _SFR_MEM8(0x0450) +#define EBI_CS0_CTRLB _SFR_MEM8(0x0451) +#define EBI_CS0_BASEADDR _SFR_MEM16(0x0452) +#define EBI_CS1_CTRLA _SFR_MEM8(0x0454) +#define EBI_CS1_CTRLB _SFR_MEM8(0x0455) +#define EBI_CS1_BASEADDR _SFR_MEM16(0x0456) +#define EBI_CS2_CTRLA _SFR_MEM8(0x0458) +#define EBI_CS2_CTRLB _SFR_MEM8(0x0459) +#define EBI_CS2_BASEADDR _SFR_MEM16(0x045A) +#define EBI_CS3_CTRLA _SFR_MEM8(0x045C) +#define EBI_CS3_CTRLB _SFR_MEM8(0x045D) +#define EBI_CS3_BASEADDR _SFR_MEM16(0x045E) + +/* TWIC - Two-Wire Interface C */ +#define TWIC_CTRL _SFR_MEM8(0x0480) +#define TWIC_MASTER_CTRLA _SFR_MEM8(0x0481) +#define TWIC_MASTER_CTRLB _SFR_MEM8(0x0482) +#define TWIC_MASTER_CTRLC _SFR_MEM8(0x0483) +#define TWIC_MASTER_STATUS _SFR_MEM8(0x0484) +#define TWIC_MASTER_BAUD _SFR_MEM8(0x0485) +#define TWIC_MASTER_ADDR _SFR_MEM8(0x0486) +#define TWIC_MASTER_DATA _SFR_MEM8(0x0487) +#define TWIC_SLAVE_CTRLA _SFR_MEM8(0x0488) +#define TWIC_SLAVE_CTRLB _SFR_MEM8(0x0489) +#define TWIC_SLAVE_STATUS _SFR_MEM8(0x048A) +#define TWIC_SLAVE_ADDR _SFR_MEM8(0x048B) +#define TWIC_SLAVE_DATA _SFR_MEM8(0x048C) + +/* TWID - Two-Wire Interface D */ +#define TWID_CTRL _SFR_MEM8(0x0490) +#define TWID_MASTER_CTRLA _SFR_MEM8(0x0491) +#define TWID_MASTER_CTRLB _SFR_MEM8(0x0492) +#define TWID_MASTER_CTRLC _SFR_MEM8(0x0493) +#define TWID_MASTER_STATUS _SFR_MEM8(0x0494) +#define TWID_MASTER_BAUD _SFR_MEM8(0x0495) +#define TWID_MASTER_ADDR _SFR_MEM8(0x0496) +#define TWID_MASTER_DATA _SFR_MEM8(0x0497) +#define TWID_SLAVE_CTRLA _SFR_MEM8(0x0498) +#define TWID_SLAVE_CTRLB _SFR_MEM8(0x0499) +#define TWID_SLAVE_STATUS _SFR_MEM8(0x049A) +#define TWID_SLAVE_ADDR _SFR_MEM8(0x049B) +#define TWID_SLAVE_DATA _SFR_MEM8(0x049C) + +/* TWIE - Two-Wire Interface E */ +#define TWIE_CTRL _SFR_MEM8(0x04A0) +#define TWIE_MASTER_CTRLA _SFR_MEM8(0x04A1) +#define TWIE_MASTER_CTRLB _SFR_MEM8(0x04A2) +#define TWIE_MASTER_CTRLC _SFR_MEM8(0x04A3) +#define TWIE_MASTER_STATUS _SFR_MEM8(0x04A4) +#define TWIE_MASTER_BAUD _SFR_MEM8(0x04A5) +#define TWIE_MASTER_ADDR _SFR_MEM8(0x04A6) +#define TWIE_MASTER_DATA _SFR_MEM8(0x04A7) +#define TWIE_SLAVE_CTRLA _SFR_MEM8(0x04A8) +#define TWIE_SLAVE_CTRLB _SFR_MEM8(0x04A9) +#define TWIE_SLAVE_STATUS _SFR_MEM8(0x04AA) +#define TWIE_SLAVE_ADDR _SFR_MEM8(0x04AB) +#define TWIE_SLAVE_DATA _SFR_MEM8(0x04AC) + +/* TWIF - Two-Wire Interface F */ +#define TWIF_CTRL _SFR_MEM8(0x04B0) +#define TWIF_MASTER_CTRLA _SFR_MEM8(0x04B1) +#define TWIF_MASTER_CTRLB _SFR_MEM8(0x04B2) +#define TWIF_MASTER_CTRLC _SFR_MEM8(0x04B3) +#define TWIF_MASTER_STATUS _SFR_MEM8(0x04B4) +#define TWIF_MASTER_BAUD _SFR_MEM8(0x04B5) +#define TWIF_MASTER_ADDR _SFR_MEM8(0x04B6) +#define TWIF_MASTER_DATA _SFR_MEM8(0x04B7) +#define TWIF_SLAVE_CTRLA _SFR_MEM8(0x04B8) +#define TWIF_SLAVE_CTRLB _SFR_MEM8(0x04B9) +#define TWIF_SLAVE_STATUS _SFR_MEM8(0x04BA) +#define TWIF_SLAVE_ADDR _SFR_MEM8(0x04BB) +#define TWIF_SLAVE_DATA _SFR_MEM8(0x04BC) + +/* PORTA - Port A */ +#define PORTA_DIR _SFR_MEM8(0x0600) +#define PORTA_DIRSET _SFR_MEM8(0x0601) +#define PORTA_DIRCLR _SFR_MEM8(0x0602) +#define PORTA_DIRTGL _SFR_MEM8(0x0603) +#define PORTA_OUT _SFR_MEM8(0x0604) +#define PORTA_OUTSET _SFR_MEM8(0x0605) +#define PORTA_OUTCLR _SFR_MEM8(0x0606) +#define PORTA_OUTTGL _SFR_MEM8(0x0607) +#define PORTA_IN _SFR_MEM8(0x0608) +#define PORTA_INTCTRL _SFR_MEM8(0x0609) +#define PORTA_INT0MASK _SFR_MEM8(0x060A) +#define PORTA_INT1MASK _SFR_MEM8(0x060B) +#define PORTA_INTFLAGS _SFR_MEM8(0x060C) +#define PORTA_PIN0CTRL _SFR_MEM8(0x0610) +#define PORTA_PIN1CTRL _SFR_MEM8(0x0611) +#define PORTA_PIN2CTRL _SFR_MEM8(0x0612) +#define PORTA_PIN3CTRL _SFR_MEM8(0x0613) +#define PORTA_PIN4CTRL _SFR_MEM8(0x0614) +#define PORTA_PIN5CTRL _SFR_MEM8(0x0615) +#define PORTA_PIN6CTRL _SFR_MEM8(0x0616) +#define PORTA_PIN7CTRL _SFR_MEM8(0x0617) + +/* PORTB - Port B */ +#define PORTB_DIR _SFR_MEM8(0x0620) +#define PORTB_DIRSET _SFR_MEM8(0x0621) +#define PORTB_DIRCLR _SFR_MEM8(0x0622) +#define PORTB_DIRTGL _SFR_MEM8(0x0623) +#define PORTB_OUT _SFR_MEM8(0x0624) +#define PORTB_OUTSET _SFR_MEM8(0x0625) +#define PORTB_OUTCLR _SFR_MEM8(0x0626) +#define PORTB_OUTTGL _SFR_MEM8(0x0627) +#define PORTB_IN _SFR_MEM8(0x0628) +#define PORTB_INTCTRL _SFR_MEM8(0x0629) +#define PORTB_INT0MASK _SFR_MEM8(0x062A) +#define PORTB_INT1MASK _SFR_MEM8(0x062B) +#define PORTB_INTFLAGS _SFR_MEM8(0x062C) +#define PORTB_PIN0CTRL _SFR_MEM8(0x0630) +#define PORTB_PIN1CTRL _SFR_MEM8(0x0631) +#define PORTB_PIN2CTRL _SFR_MEM8(0x0632) +#define PORTB_PIN3CTRL _SFR_MEM8(0x0633) +#define PORTB_PIN4CTRL _SFR_MEM8(0x0634) +#define PORTB_PIN5CTRL _SFR_MEM8(0x0635) +#define PORTB_PIN6CTRL _SFR_MEM8(0x0636) +#define PORTB_PIN7CTRL _SFR_MEM8(0x0637) + +/* PORTC - Port C */ +#define PORTC_DIR _SFR_MEM8(0x0640) +#define PORTC_DIRSET _SFR_MEM8(0x0641) +#define PORTC_DIRCLR _SFR_MEM8(0x0642) +#define PORTC_DIRTGL _SFR_MEM8(0x0643) +#define PORTC_OUT _SFR_MEM8(0x0644) +#define PORTC_OUTSET _SFR_MEM8(0x0645) +#define PORTC_OUTCLR _SFR_MEM8(0x0646) +#define PORTC_OUTTGL _SFR_MEM8(0x0647) +#define PORTC_IN _SFR_MEM8(0x0648) +#define PORTC_INTCTRL _SFR_MEM8(0x0649) +#define PORTC_INT0MASK _SFR_MEM8(0x064A) +#define PORTC_INT1MASK _SFR_MEM8(0x064B) +#define PORTC_INTFLAGS _SFR_MEM8(0x064C) +#define PORTC_PIN0CTRL _SFR_MEM8(0x0650) +#define PORTC_PIN1CTRL _SFR_MEM8(0x0651) +#define PORTC_PIN2CTRL _SFR_MEM8(0x0652) +#define PORTC_PIN3CTRL _SFR_MEM8(0x0653) +#define PORTC_PIN4CTRL _SFR_MEM8(0x0654) +#define PORTC_PIN5CTRL _SFR_MEM8(0x0655) +#define PORTC_PIN6CTRL _SFR_MEM8(0x0656) +#define PORTC_PIN7CTRL _SFR_MEM8(0x0657) + +/* PORTD - Port D */ +#define PORTD_DIR _SFR_MEM8(0x0660) +#define PORTD_DIRSET _SFR_MEM8(0x0661) +#define PORTD_DIRCLR _SFR_MEM8(0x0662) +#define PORTD_DIRTGL _SFR_MEM8(0x0663) +#define PORTD_OUT _SFR_MEM8(0x0664) +#define PORTD_OUTSET _SFR_MEM8(0x0665) +#define PORTD_OUTCLR _SFR_MEM8(0x0666) +#define PORTD_OUTTGL _SFR_MEM8(0x0667) +#define PORTD_IN _SFR_MEM8(0x0668) +#define PORTD_INTCTRL _SFR_MEM8(0x0669) +#define PORTD_INT0MASK _SFR_MEM8(0x066A) +#define PORTD_INT1MASK _SFR_MEM8(0x066B) +#define PORTD_INTFLAGS _SFR_MEM8(0x066C) +#define PORTD_PIN0CTRL _SFR_MEM8(0x0670) +#define PORTD_PIN1CTRL _SFR_MEM8(0x0671) +#define PORTD_PIN2CTRL _SFR_MEM8(0x0672) +#define PORTD_PIN3CTRL _SFR_MEM8(0x0673) +#define PORTD_PIN4CTRL _SFR_MEM8(0x0674) +#define PORTD_PIN5CTRL _SFR_MEM8(0x0675) +#define PORTD_PIN6CTRL _SFR_MEM8(0x0676) +#define PORTD_PIN7CTRL _SFR_MEM8(0x0677) + +/* PORTE - Port E */ +#define PORTE_DIR _SFR_MEM8(0x0680) +#define PORTE_DIRSET _SFR_MEM8(0x0681) +#define PORTE_DIRCLR _SFR_MEM8(0x0682) +#define PORTE_DIRTGL _SFR_MEM8(0x0683) +#define PORTE_OUT _SFR_MEM8(0x0684) +#define PORTE_OUTSET _SFR_MEM8(0x0685) +#define PORTE_OUTCLR _SFR_MEM8(0x0686) +#define PORTE_OUTTGL _SFR_MEM8(0x0687) +#define PORTE_IN _SFR_MEM8(0x0688) +#define PORTE_INTCTRL _SFR_MEM8(0x0689) +#define PORTE_INT0MASK _SFR_MEM8(0x068A) +#define PORTE_INT1MASK _SFR_MEM8(0x068B) +#define PORTE_INTFLAGS _SFR_MEM8(0x068C) +#define PORTE_PIN0CTRL _SFR_MEM8(0x0690) +#define PORTE_PIN1CTRL _SFR_MEM8(0x0691) +#define PORTE_PIN2CTRL _SFR_MEM8(0x0692) +#define PORTE_PIN3CTRL _SFR_MEM8(0x0693) +#define PORTE_PIN4CTRL _SFR_MEM8(0x0694) +#define PORTE_PIN5CTRL _SFR_MEM8(0x0695) +#define PORTE_PIN6CTRL _SFR_MEM8(0x0696) +#define PORTE_PIN7CTRL _SFR_MEM8(0x0697) + +/* PORTF - Port F */ +#define PORTF_DIR _SFR_MEM8(0x06A0) +#define PORTF_DIRSET _SFR_MEM8(0x06A1) +#define PORTF_DIRCLR _SFR_MEM8(0x06A2) +#define PORTF_DIRTGL _SFR_MEM8(0x06A3) +#define PORTF_OUT _SFR_MEM8(0x06A4) +#define PORTF_OUTSET _SFR_MEM8(0x06A5) +#define PORTF_OUTCLR _SFR_MEM8(0x06A6) +#define PORTF_OUTTGL _SFR_MEM8(0x06A7) +#define PORTF_IN _SFR_MEM8(0x06A8) +#define PORTF_INTCTRL _SFR_MEM8(0x06A9) +#define PORTF_INT0MASK _SFR_MEM8(0x06AA) +#define PORTF_INT1MASK _SFR_MEM8(0x06AB) +#define PORTF_INTFLAGS _SFR_MEM8(0x06AC) +#define PORTF_PIN0CTRL _SFR_MEM8(0x06B0) +#define PORTF_PIN1CTRL _SFR_MEM8(0x06B1) +#define PORTF_PIN2CTRL _SFR_MEM8(0x06B2) +#define PORTF_PIN3CTRL _SFR_MEM8(0x06B3) +#define PORTF_PIN4CTRL _SFR_MEM8(0x06B4) +#define PORTF_PIN5CTRL _SFR_MEM8(0x06B5) +#define PORTF_PIN6CTRL _SFR_MEM8(0x06B6) +#define PORTF_PIN7CTRL _SFR_MEM8(0x06B7) + +/* PORTH - Port H */ +#define PORTH_DIR _SFR_MEM8(0x06E0) +#define PORTH_DIRSET _SFR_MEM8(0x06E1) +#define PORTH_DIRCLR _SFR_MEM8(0x06E2) +#define PORTH_DIRTGL _SFR_MEM8(0x06E3) +#define PORTH_OUT _SFR_MEM8(0x06E4) +#define PORTH_OUTSET _SFR_MEM8(0x06E5) +#define PORTH_OUTCLR _SFR_MEM8(0x06E6) +#define PORTH_OUTTGL _SFR_MEM8(0x06E7) +#define PORTH_IN _SFR_MEM8(0x06E8) +#define PORTH_INTCTRL _SFR_MEM8(0x06E9) +#define PORTH_INT0MASK _SFR_MEM8(0x06EA) +#define PORTH_INT1MASK _SFR_MEM8(0x06EB) +#define PORTH_INTFLAGS _SFR_MEM8(0x06EC) +#define PORTH_PIN0CTRL _SFR_MEM8(0x06F0) +#define PORTH_PIN1CTRL _SFR_MEM8(0x06F1) +#define PORTH_PIN2CTRL _SFR_MEM8(0x06F2) +#define PORTH_PIN3CTRL _SFR_MEM8(0x06F3) +#define PORTH_PIN4CTRL _SFR_MEM8(0x06F4) +#define PORTH_PIN5CTRL _SFR_MEM8(0x06F5) +#define PORTH_PIN6CTRL _SFR_MEM8(0x06F6) +#define PORTH_PIN7CTRL _SFR_MEM8(0x06F7) + +/* PORTJ - Port J */ +#define PORTJ_DIR _SFR_MEM8(0x0700) +#define PORTJ_DIRSET _SFR_MEM8(0x0701) +#define PORTJ_DIRCLR _SFR_MEM8(0x0702) +#define PORTJ_DIRTGL _SFR_MEM8(0x0703) +#define PORTJ_OUT _SFR_MEM8(0x0704) +#define PORTJ_OUTSET _SFR_MEM8(0x0705) +#define PORTJ_OUTCLR _SFR_MEM8(0x0706) +#define PORTJ_OUTTGL _SFR_MEM8(0x0707) +#define PORTJ_IN _SFR_MEM8(0x0708) +#define PORTJ_INTCTRL _SFR_MEM8(0x0709) +#define PORTJ_INT0MASK _SFR_MEM8(0x070A) +#define PORTJ_INT1MASK _SFR_MEM8(0x070B) +#define PORTJ_INTFLAGS _SFR_MEM8(0x070C) +#define PORTJ_PIN0CTRL _SFR_MEM8(0x0710) +#define PORTJ_PIN1CTRL _SFR_MEM8(0x0711) +#define PORTJ_PIN2CTRL _SFR_MEM8(0x0712) +#define PORTJ_PIN3CTRL _SFR_MEM8(0x0713) +#define PORTJ_PIN4CTRL _SFR_MEM8(0x0714) +#define PORTJ_PIN5CTRL _SFR_MEM8(0x0715) +#define PORTJ_PIN6CTRL _SFR_MEM8(0x0716) +#define PORTJ_PIN7CTRL _SFR_MEM8(0x0717) + +/* PORTK - Port K */ +#define PORTK_DIR _SFR_MEM8(0x0720) +#define PORTK_DIRSET _SFR_MEM8(0x0721) +#define PORTK_DIRCLR _SFR_MEM8(0x0722) +#define PORTK_DIRTGL _SFR_MEM8(0x0723) +#define PORTK_OUT _SFR_MEM8(0x0724) +#define PORTK_OUTSET _SFR_MEM8(0x0725) +#define PORTK_OUTCLR _SFR_MEM8(0x0726) +#define PORTK_OUTTGL _SFR_MEM8(0x0727) +#define PORTK_IN _SFR_MEM8(0x0728) +#define PORTK_INTCTRL _SFR_MEM8(0x0729) +#define PORTK_INT0MASK _SFR_MEM8(0x072A) +#define PORTK_INT1MASK _SFR_MEM8(0x072B) +#define PORTK_INTFLAGS _SFR_MEM8(0x072C) +#define PORTK_PIN0CTRL _SFR_MEM8(0x0730) +#define PORTK_PIN1CTRL _SFR_MEM8(0x0731) +#define PORTK_PIN2CTRL _SFR_MEM8(0x0732) +#define PORTK_PIN3CTRL _SFR_MEM8(0x0733) +#define PORTK_PIN4CTRL _SFR_MEM8(0x0734) +#define PORTK_PIN5CTRL _SFR_MEM8(0x0735) +#define PORTK_PIN6CTRL _SFR_MEM8(0x0736) +#define PORTK_PIN7CTRL _SFR_MEM8(0x0737) + +/* PORTQ - Port Q */ +#define PORTQ_DIR _SFR_MEM8(0x07C0) +#define PORTQ_DIRSET _SFR_MEM8(0x07C1) +#define PORTQ_DIRCLR _SFR_MEM8(0x07C2) +#define PORTQ_DIRTGL _SFR_MEM8(0x07C3) +#define PORTQ_OUT _SFR_MEM8(0x07C4) +#define PORTQ_OUTSET _SFR_MEM8(0x07C5) +#define PORTQ_OUTCLR _SFR_MEM8(0x07C6) +#define PORTQ_OUTTGL _SFR_MEM8(0x07C7) +#define PORTQ_IN _SFR_MEM8(0x07C8) +#define PORTQ_INTCTRL _SFR_MEM8(0x07C9) +#define PORTQ_INT0MASK _SFR_MEM8(0x07CA) +#define PORTQ_INT1MASK _SFR_MEM8(0x07CB) +#define PORTQ_INTFLAGS _SFR_MEM8(0x07CC) +#define PORTQ_PIN0CTRL _SFR_MEM8(0x07D0) +#define PORTQ_PIN1CTRL _SFR_MEM8(0x07D1) +#define PORTQ_PIN2CTRL _SFR_MEM8(0x07D2) +#define PORTQ_PIN3CTRL _SFR_MEM8(0x07D3) +#define PORTQ_PIN4CTRL _SFR_MEM8(0x07D4) +#define PORTQ_PIN5CTRL _SFR_MEM8(0x07D5) +#define PORTQ_PIN6CTRL _SFR_MEM8(0x07D6) +#define PORTQ_PIN7CTRL _SFR_MEM8(0x07D7) + +/* PORTR - Port R */ +#define PORTR_DIR _SFR_MEM8(0x07E0) +#define PORTR_DIRSET _SFR_MEM8(0x07E1) +#define PORTR_DIRCLR _SFR_MEM8(0x07E2) +#define PORTR_DIRTGL _SFR_MEM8(0x07E3) +#define PORTR_OUT _SFR_MEM8(0x07E4) +#define PORTR_OUTSET _SFR_MEM8(0x07E5) +#define PORTR_OUTCLR _SFR_MEM8(0x07E6) +#define PORTR_OUTTGL _SFR_MEM8(0x07E7) +#define PORTR_IN _SFR_MEM8(0x07E8) +#define PORTR_INTCTRL _SFR_MEM8(0x07E9) +#define PORTR_INT0MASK _SFR_MEM8(0x07EA) +#define PORTR_INT1MASK _SFR_MEM8(0x07EB) +#define PORTR_INTFLAGS _SFR_MEM8(0x07EC) +#define PORTR_PIN0CTRL _SFR_MEM8(0x07F0) +#define PORTR_PIN1CTRL _SFR_MEM8(0x07F1) +#define PORTR_PIN2CTRL _SFR_MEM8(0x07F2) +#define PORTR_PIN3CTRL _SFR_MEM8(0x07F3) +#define PORTR_PIN4CTRL _SFR_MEM8(0x07F4) +#define PORTR_PIN5CTRL _SFR_MEM8(0x07F5) +#define PORTR_PIN6CTRL _SFR_MEM8(0x07F6) +#define PORTR_PIN7CTRL _SFR_MEM8(0x07F7) + +/* TCC0 - Timer/Counter C0 */ +#define TCC0_CTRLA _SFR_MEM8(0x0800) +#define TCC0_CTRLB _SFR_MEM8(0x0801) +#define TCC0_CTRLC _SFR_MEM8(0x0802) +#define TCC0_CTRLD _SFR_MEM8(0x0803) +#define TCC0_CTRLE _SFR_MEM8(0x0804) +#define TCC0_INTCTRLA _SFR_MEM8(0x0806) +#define TCC0_INTCTRLB _SFR_MEM8(0x0807) +#define TCC0_CTRLFCLR _SFR_MEM8(0x0808) +#define TCC0_CTRLFSET _SFR_MEM8(0x0809) +#define TCC0_CTRLGCLR _SFR_MEM8(0x080A) +#define TCC0_CTRLGSET _SFR_MEM8(0x080B) +#define TCC0_INTFLAGS _SFR_MEM8(0x080C) +#define TCC0_TEMP _SFR_MEM8(0x080F) +#define TCC0_CNT _SFR_MEM16(0x0820) +#define TCC0_PER _SFR_MEM16(0x0826) +#define TCC0_CCA _SFR_MEM16(0x0828) +#define TCC0_CCB _SFR_MEM16(0x082A) +#define TCC0_CCC _SFR_MEM16(0x082C) +#define TCC0_CCD _SFR_MEM16(0x082E) +#define TCC0_PERBUF _SFR_MEM16(0x0836) +#define TCC0_CCABUF _SFR_MEM16(0x0838) +#define TCC0_CCBBUF _SFR_MEM16(0x083A) +#define TCC0_CCCBUF _SFR_MEM16(0x083C) +#define TCC0_CCDBUF _SFR_MEM16(0x083E) + +/* TCC1 - Timer/Counter C1 */ +#define TCC1_CTRLA _SFR_MEM8(0x0840) +#define TCC1_CTRLB _SFR_MEM8(0x0841) +#define TCC1_CTRLC _SFR_MEM8(0x0842) +#define TCC1_CTRLD _SFR_MEM8(0x0843) +#define TCC1_CTRLE _SFR_MEM8(0x0844) +#define TCC1_INTCTRLA _SFR_MEM8(0x0846) +#define TCC1_INTCTRLB _SFR_MEM8(0x0847) +#define TCC1_CTRLFCLR _SFR_MEM8(0x0848) +#define TCC1_CTRLFSET _SFR_MEM8(0x0849) +#define TCC1_CTRLGCLR _SFR_MEM8(0x084A) +#define TCC1_CTRLGSET _SFR_MEM8(0x084B) +#define TCC1_INTFLAGS _SFR_MEM8(0x084C) +#define TCC1_TEMP _SFR_MEM8(0x084F) +#define TCC1_CNT _SFR_MEM16(0x0860) +#define TCC1_PER _SFR_MEM16(0x0866) +#define TCC1_CCA _SFR_MEM16(0x0868) +#define TCC1_CCB _SFR_MEM16(0x086A) +#define TCC1_PERBUF _SFR_MEM16(0x0876) +#define TCC1_CCABUF _SFR_MEM16(0x0878) +#define TCC1_CCBBUF _SFR_MEM16(0x087A) + +/* AWEXC - Advanced Waveform Extension C */ +#define AWEXC_CTRL _SFR_MEM8(0x0880) +#define AWEXC_FDEVMASK _SFR_MEM8(0x0882) +#define AWEXC_FDCTRL _SFR_MEM8(0x0883) +#define AWEXC_STATUS _SFR_MEM8(0x0884) +#define AWEXC_DTBOTH _SFR_MEM8(0x0886) +#define AWEXC_DTBOTHBUF _SFR_MEM8(0x0887) +#define AWEXC_DTLS _SFR_MEM8(0x0888) +#define AWEXC_DTHS _SFR_MEM8(0x0889) +#define AWEXC_DTLSBUF _SFR_MEM8(0x088A) +#define AWEXC_DTHSBUF _SFR_MEM8(0x088B) +#define AWEXC_OUTOVEN _SFR_MEM8(0x088C) + +/* HIRESC - High-Resolution Extension C */ +#define HIRESC_CTRL _SFR_MEM8(0x0890) + +/* USARTC0 - Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC0_DATA _SFR_MEM8(0x08A0) +#define USARTC0_STATUS _SFR_MEM8(0x08A1) +#define USARTC0_CTRLA _SFR_MEM8(0x08A3) +#define USARTC0_CTRLB _SFR_MEM8(0x08A4) +#define USARTC0_CTRLC _SFR_MEM8(0x08A5) +#define USARTC0_BAUDCTRLA _SFR_MEM8(0x08A6) +#define USARTC0_BAUDCTRLB _SFR_MEM8(0x08A7) + +/* USARTC1 - Universal Asynchronous Receiver-Transmitter C1 */ +#define USARTC1_DATA _SFR_MEM8(0x08B0) +#define USARTC1_STATUS _SFR_MEM8(0x08B1) +#define USARTC1_CTRLA _SFR_MEM8(0x08B3) +#define USARTC1_CTRLB _SFR_MEM8(0x08B4) +#define USARTC1_CTRLC _SFR_MEM8(0x08B5) +#define USARTC1_BAUDCTRLA _SFR_MEM8(0x08B6) +#define USARTC1_BAUDCTRLB _SFR_MEM8(0x08B7) + +/* SPIC - Serial Peripheral Interface C */ +#define SPIC_CTRL _SFR_MEM8(0x08C0) +#define SPIC_INTCTRL _SFR_MEM8(0x08C1) +#define SPIC_STATUS _SFR_MEM8(0x08C2) +#define SPIC_DATA _SFR_MEM8(0x08C3) + +/* IRCOM - IR Communication Module */ +#define IRCOM_CTRL _SFR_MEM8(0x08F8) +#define IRCOM_TXPLCTRL _SFR_MEM8(0x08F9) +#define IRCOM_RXPLCTRL _SFR_MEM8(0x08FA) + +/* TCD0 - Timer/Counter D0 */ +#define TCD0_CTRLA _SFR_MEM8(0x0900) +#define TCD0_CTRLB _SFR_MEM8(0x0901) +#define TCD0_CTRLC _SFR_MEM8(0x0902) +#define TCD0_CTRLD _SFR_MEM8(0x0903) +#define TCD0_CTRLE _SFR_MEM8(0x0904) +#define TCD0_INTCTRLA _SFR_MEM8(0x0906) +#define TCD0_INTCTRLB _SFR_MEM8(0x0907) +#define TCD0_CTRLFCLR _SFR_MEM8(0x0908) +#define TCD0_CTRLFSET _SFR_MEM8(0x0909) +#define TCD0_CTRLGCLR _SFR_MEM8(0x090A) +#define TCD0_CTRLGSET _SFR_MEM8(0x090B) +#define TCD0_INTFLAGS _SFR_MEM8(0x090C) +#define TCD0_TEMP _SFR_MEM8(0x090F) +#define TCD0_CNT _SFR_MEM16(0x0920) +#define TCD0_PER _SFR_MEM16(0x0926) +#define TCD0_CCA _SFR_MEM16(0x0928) +#define TCD0_CCB _SFR_MEM16(0x092A) +#define TCD0_CCC _SFR_MEM16(0x092C) +#define TCD0_CCD _SFR_MEM16(0x092E) +#define TCD0_PERBUF _SFR_MEM16(0x0936) +#define TCD0_CCABUF _SFR_MEM16(0x0938) +#define TCD0_CCBBUF _SFR_MEM16(0x093A) +#define TCD0_CCCBUF _SFR_MEM16(0x093C) +#define TCD0_CCDBUF _SFR_MEM16(0x093E) + +/* TCD1 - Timer/Counter D1 */ +#define TCD1_CTRLA _SFR_MEM8(0x0940) +#define TCD1_CTRLB _SFR_MEM8(0x0941) +#define TCD1_CTRLC _SFR_MEM8(0x0942) +#define TCD1_CTRLD _SFR_MEM8(0x0943) +#define TCD1_CTRLE _SFR_MEM8(0x0944) +#define TCD1_INTCTRLA _SFR_MEM8(0x0946) +#define TCD1_INTCTRLB _SFR_MEM8(0x0947) +#define TCD1_CTRLFCLR _SFR_MEM8(0x0948) +#define TCD1_CTRLFSET _SFR_MEM8(0x0949) +#define TCD1_CTRLGCLR _SFR_MEM8(0x094A) +#define TCD1_CTRLGSET _SFR_MEM8(0x094B) +#define TCD1_INTFLAGS _SFR_MEM8(0x094C) +#define TCD1_TEMP _SFR_MEM8(0x094F) +#define TCD1_CNT _SFR_MEM16(0x0960) +#define TCD1_PER _SFR_MEM16(0x0966) +#define TCD1_CCA _SFR_MEM16(0x0968) +#define TCD1_CCB _SFR_MEM16(0x096A) +#define TCD1_PERBUF _SFR_MEM16(0x0976) +#define TCD1_CCABUF _SFR_MEM16(0x0978) +#define TCD1_CCBBUF _SFR_MEM16(0x097A) + +/* HIRESD - High-Resolution Extension D */ +#define HIRESD_CTRL _SFR_MEM8(0x0990) + +/* USARTD0 - Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD0_DATA _SFR_MEM8(0x09A0) +#define USARTD0_STATUS _SFR_MEM8(0x09A1) +#define USARTD0_CTRLA _SFR_MEM8(0x09A3) +#define USARTD0_CTRLB _SFR_MEM8(0x09A4) +#define USARTD0_CTRLC _SFR_MEM8(0x09A5) +#define USARTD0_BAUDCTRLA _SFR_MEM8(0x09A6) +#define USARTD0_BAUDCTRLB _SFR_MEM8(0x09A7) + +/* USARTD1 - Universal Asynchronous Receiver-Transmitter D1 */ +#define USARTD1_DATA _SFR_MEM8(0x09B0) +#define USARTD1_STATUS _SFR_MEM8(0x09B1) +#define USARTD1_CTRLA _SFR_MEM8(0x09B3) +#define USARTD1_CTRLB _SFR_MEM8(0x09B4) +#define USARTD1_CTRLC _SFR_MEM8(0x09B5) +#define USARTD1_BAUDCTRLA _SFR_MEM8(0x09B6) +#define USARTD1_BAUDCTRLB _SFR_MEM8(0x09B7) + +/* SPID - Serial Peripheral Interface D */ +#define SPID_CTRL _SFR_MEM8(0x09C0) +#define SPID_INTCTRL _SFR_MEM8(0x09C1) +#define SPID_STATUS _SFR_MEM8(0x09C2) +#define SPID_DATA _SFR_MEM8(0x09C3) + +/* TCE0 - Timer/Counter E0 */ +#define TCE0_CTRLA _SFR_MEM8(0x0A00) +#define TCE0_CTRLB _SFR_MEM8(0x0A01) +#define TCE0_CTRLC _SFR_MEM8(0x0A02) +#define TCE0_CTRLD _SFR_MEM8(0x0A03) +#define TCE0_CTRLE _SFR_MEM8(0x0A04) +#define TCE0_INTCTRLA _SFR_MEM8(0x0A06) +#define TCE0_INTCTRLB _SFR_MEM8(0x0A07) +#define TCE0_CTRLFCLR _SFR_MEM8(0x0A08) +#define TCE0_CTRLFSET _SFR_MEM8(0x0A09) +#define TCE0_CTRLGCLR _SFR_MEM8(0x0A0A) +#define TCE0_CTRLGSET _SFR_MEM8(0x0A0B) +#define TCE0_INTFLAGS _SFR_MEM8(0x0A0C) +#define TCE0_TEMP _SFR_MEM8(0x0A0F) +#define TCE0_CNT _SFR_MEM16(0x0A20) +#define TCE0_PER _SFR_MEM16(0x0A26) +#define TCE0_CCA _SFR_MEM16(0x0A28) +#define TCE0_CCB _SFR_MEM16(0x0A2A) +#define TCE0_CCC _SFR_MEM16(0x0A2C) +#define TCE0_CCD _SFR_MEM16(0x0A2E) +#define TCE0_PERBUF _SFR_MEM16(0x0A36) +#define TCE0_CCABUF _SFR_MEM16(0x0A38) +#define TCE0_CCBBUF _SFR_MEM16(0x0A3A) +#define TCE0_CCCBUF _SFR_MEM16(0x0A3C) +#define TCE0_CCDBUF _SFR_MEM16(0x0A3E) + +/* TCE1 - Timer/Counter E1 */ +#define TCE1_CTRLA _SFR_MEM8(0x0A40) +#define TCE1_CTRLB _SFR_MEM8(0x0A41) +#define TCE1_CTRLC _SFR_MEM8(0x0A42) +#define TCE1_CTRLD _SFR_MEM8(0x0A43) +#define TCE1_CTRLE _SFR_MEM8(0x0A44) +#define TCE1_INTCTRLA _SFR_MEM8(0x0A46) +#define TCE1_INTCTRLB _SFR_MEM8(0x0A47) +#define TCE1_CTRLFCLR _SFR_MEM8(0x0A48) +#define TCE1_CTRLFSET _SFR_MEM8(0x0A49) +#define TCE1_CTRLGCLR _SFR_MEM8(0x0A4A) +#define TCE1_CTRLGSET _SFR_MEM8(0x0A4B) +#define TCE1_INTFLAGS _SFR_MEM8(0x0A4C) +#define TCE1_TEMP _SFR_MEM8(0x0A4F) +#define TCE1_CNT _SFR_MEM16(0x0A60) +#define TCE1_PER _SFR_MEM16(0x0A66) +#define TCE1_CCA _SFR_MEM16(0x0A68) +#define TCE1_CCB _SFR_MEM16(0x0A6A) +#define TCE1_PERBUF _SFR_MEM16(0x0A76) +#define TCE1_CCABUF _SFR_MEM16(0x0A78) +#define TCE1_CCBBUF _SFR_MEM16(0x0A7A) + +/* AWEXE - Advanced Waveform Extension E */ +#define AWEXE_CTRL _SFR_MEM8(0x0A80) +#define AWEXE_FDEVMASK _SFR_MEM8(0x0A82) +#define AWEXE_FDCTRL _SFR_MEM8(0x0A83) +#define AWEXE_STATUS _SFR_MEM8(0x0A84) +#define AWEXE_DTBOTH _SFR_MEM8(0x0A86) +#define AWEXE_DTBOTHBUF _SFR_MEM8(0x0A87) +#define AWEXE_DTLS _SFR_MEM8(0x0A88) +#define AWEXE_DTHS _SFR_MEM8(0x0A89) +#define AWEXE_DTLSBUF _SFR_MEM8(0x0A8A) +#define AWEXE_DTHSBUF _SFR_MEM8(0x0A8B) +#define AWEXE_OUTOVEN _SFR_MEM8(0x0A8C) + +/* HIRESE - High-Resolution Extension E */ +#define HIRESE_CTRL _SFR_MEM8(0x0A90) + +/* USARTE0 - Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE0_DATA _SFR_MEM8(0x0AA0) +#define USARTE0_STATUS _SFR_MEM8(0x0AA1) +#define USARTE0_CTRLA _SFR_MEM8(0x0AA3) +#define USARTE0_CTRLB _SFR_MEM8(0x0AA4) +#define USARTE0_CTRLC _SFR_MEM8(0x0AA5) +#define USARTE0_BAUDCTRLA _SFR_MEM8(0x0AA6) +#define USARTE0_BAUDCTRLB _SFR_MEM8(0x0AA7) + +/* USARTE1 - Universal Asynchronous Receiver-Transmitter E1 */ +#define USARTE1_DATA _SFR_MEM8(0x0AB0) +#define USARTE1_STATUS _SFR_MEM8(0x0AB1) +#define USARTE1_CTRLA _SFR_MEM8(0x0AB3) +#define USARTE1_CTRLB _SFR_MEM8(0x0AB4) +#define USARTE1_CTRLC _SFR_MEM8(0x0AB5) +#define USARTE1_BAUDCTRLA _SFR_MEM8(0x0AB6) +#define USARTE1_BAUDCTRLB _SFR_MEM8(0x0AB7) + +/* SPIE - Serial Peripheral Interface E */ +#define SPIE_CTRL _SFR_MEM8(0x0AC0) +#define SPIE_INTCTRL _SFR_MEM8(0x0AC1) +#define SPIE_STATUS _SFR_MEM8(0x0AC2) +#define SPIE_DATA _SFR_MEM8(0x0AC3) + +/* TCF0 - Timer/Counter F0 */ +#define TCF0_CTRLA _SFR_MEM8(0x0B00) +#define TCF0_CTRLB _SFR_MEM8(0x0B01) +#define TCF0_CTRLC _SFR_MEM8(0x0B02) +#define TCF0_CTRLD _SFR_MEM8(0x0B03) +#define TCF0_CTRLE _SFR_MEM8(0x0B04) +#define TCF0_INTCTRLA _SFR_MEM8(0x0B06) +#define TCF0_INTCTRLB _SFR_MEM8(0x0B07) +#define TCF0_CTRLFCLR _SFR_MEM8(0x0B08) +#define TCF0_CTRLFSET _SFR_MEM8(0x0B09) +#define TCF0_CTRLGCLR _SFR_MEM8(0x0B0A) +#define TCF0_CTRLGSET _SFR_MEM8(0x0B0B) +#define TCF0_INTFLAGS _SFR_MEM8(0x0B0C) +#define TCF0_TEMP _SFR_MEM8(0x0B0F) +#define TCF0_CNT _SFR_MEM16(0x0B20) +#define TCF0_PER _SFR_MEM16(0x0B26) +#define TCF0_CCA _SFR_MEM16(0x0B28) +#define TCF0_CCB _SFR_MEM16(0x0B2A) +#define TCF0_CCC _SFR_MEM16(0x0B2C) +#define TCF0_CCD _SFR_MEM16(0x0B2E) +#define TCF0_PERBUF _SFR_MEM16(0x0B36) +#define TCF0_CCABUF _SFR_MEM16(0x0B38) +#define TCF0_CCBBUF _SFR_MEM16(0x0B3A) +#define TCF0_CCCBUF _SFR_MEM16(0x0B3C) +#define TCF0_CCDBUF _SFR_MEM16(0x0B3E) + +/* TCF1 - Timer/Counter F1 */ +#define TCF1_CTRLA _SFR_MEM8(0x0B40) +#define TCF1_CTRLB _SFR_MEM8(0x0B41) +#define TCF1_CTRLC _SFR_MEM8(0x0B42) +#define TCF1_CTRLD _SFR_MEM8(0x0B43) +#define TCF1_CTRLE _SFR_MEM8(0x0B44) +#define TCF1_INTCTRLA _SFR_MEM8(0x0B46) +#define TCF1_INTCTRLB _SFR_MEM8(0x0B47) +#define TCF1_CTRLFCLR _SFR_MEM8(0x0B48) +#define TCF1_CTRLFSET _SFR_MEM8(0x0B49) +#define TCF1_CTRLGCLR _SFR_MEM8(0x0B4A) +#define TCF1_CTRLGSET _SFR_MEM8(0x0B4B) +#define TCF1_INTFLAGS _SFR_MEM8(0x0B4C) +#define TCF1_TEMP _SFR_MEM8(0x0B4F) +#define TCF1_CNT _SFR_MEM16(0x0B60) +#define TCF1_PER _SFR_MEM16(0x0B66) +#define TCF1_CCA _SFR_MEM16(0x0B68) +#define TCF1_CCB _SFR_MEM16(0x0B6A) +#define TCF1_PERBUF _SFR_MEM16(0x0B76) +#define TCF1_CCABUF _SFR_MEM16(0x0B78) +#define TCF1_CCBBUF _SFR_MEM16(0x0B7A) + +/* HIRESF - High-Resolution Extension F */ +#define HIRESF_CTRL _SFR_MEM8(0x0B90) + +/* USARTF0 - Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF0_DATA _SFR_MEM8(0x0BA0) +#define USARTF0_STATUS _SFR_MEM8(0x0BA1) +#define USARTF0_CTRLA _SFR_MEM8(0x0BA3) +#define USARTF0_CTRLB _SFR_MEM8(0x0BA4) +#define USARTF0_CTRLC _SFR_MEM8(0x0BA5) +#define USARTF0_BAUDCTRLA _SFR_MEM8(0x0BA6) +#define USARTF0_BAUDCTRLB _SFR_MEM8(0x0BA7) + +/* USARTF1 - Universal Asynchronous Receiver-Transmitter F1 */ +#define USARTF1_DATA _SFR_MEM8(0x0BB0) +#define USARTF1_STATUS _SFR_MEM8(0x0BB1) +#define USARTF1_CTRLA _SFR_MEM8(0x0BB3) +#define USARTF1_CTRLB _SFR_MEM8(0x0BB4) +#define USARTF1_CTRLC _SFR_MEM8(0x0BB5) +#define USARTF1_BAUDCTRLA _SFR_MEM8(0x0BB6) +#define USARTF1_BAUDCTRLB _SFR_MEM8(0x0BB7) + +/* SPIF - Serial Peripheral Interface F */ +#define SPIF_CTRL _SFR_MEM8(0x0BC0) +#define SPIF_INTCTRL _SFR_MEM8(0x0BC1) +#define SPIF_STATUS _SFR_MEM8(0x0BC2) +#define SPIF_DATA _SFR_MEM8(0x0BC3) + + + +/*================== Bitfield Definitions ================== */ + +/* XOCD - On-Chip Debug System */ +/* OCD.OCDR1 bit masks and bit positions */ +#define OCD_OCDRD_bm 0x01 /* OCDR Dirty bit mask. */ +#define OCD_OCDRD_bp 0 /* OCDR Dirty bit position. */ + + +/* CPU - CPU */ +/* CPU.CCP bit masks and bit positions */ +#define CPU_CCP_gm 0xFF /* CCP signature group mask. */ +#define CPU_CCP_gp 0 /* CCP signature group position. */ +#define CPU_CCP0_bm (1<<0) /* CCP signature bit 0 mask. */ +#define CPU_CCP0_bp 0 /* CCP signature bit 0 position. */ +#define CPU_CCP1_bm (1<<1) /* CCP signature bit 1 mask. */ +#define CPU_CCP1_bp 1 /* CCP signature bit 1 position. */ +#define CPU_CCP2_bm (1<<2) /* CCP signature bit 2 mask. */ +#define CPU_CCP2_bp 2 /* CCP signature bit 2 position. */ +#define CPU_CCP3_bm (1<<3) /* CCP signature bit 3 mask. */ +#define CPU_CCP3_bp 3 /* CCP signature bit 3 position. */ +#define CPU_CCP4_bm (1<<4) /* CCP signature bit 4 mask. */ +#define CPU_CCP4_bp 4 /* CCP signature bit 4 position. */ +#define CPU_CCP5_bm (1<<5) /* CCP signature bit 5 mask. */ +#define CPU_CCP5_bp 5 /* CCP signature bit 5 position. */ +#define CPU_CCP6_bm (1<<6) /* CCP signature bit 6 mask. */ +#define CPU_CCP6_bp 6 /* CCP signature bit 6 position. */ +#define CPU_CCP7_bm (1<<7) /* CCP signature bit 7 mask. */ +#define CPU_CCP7_bp 7 /* CCP signature bit 7 position. */ + + +/* CPU.SREG bit masks and bit positions */ +#define CPU_I_bm 0x80 /* Global Interrupt Enable Flag bit mask. */ +#define CPU_I_bp 7 /* Global Interrupt Enable Flag bit position. */ + +#define CPU_T_bm 0x40 /* Transfer Bit bit mask. */ +#define CPU_T_bp 6 /* Transfer Bit bit position. */ + +#define CPU_H_bm 0x20 /* Half Carry Flag bit mask. */ +#define CPU_H_bp 5 /* Half Carry Flag bit position. */ + +#define CPU_S_bm 0x10 /* N Exclusive Or V Flag bit mask. */ +#define CPU_S_bp 4 /* N Exclusive Or V Flag bit position. */ + +#define CPU_V_bm 0x08 /* Two's Complement Overflow Flag bit mask. */ +#define CPU_V_bp 3 /* Two's Complement Overflow Flag bit position. */ + +#define CPU_N_bm 0x04 /* Negative Flag bit mask. */ +#define CPU_N_bp 2 /* Negative Flag bit position. */ + +#define CPU_Z_bm 0x02 /* Zero Flag bit mask. */ +#define CPU_Z_bp 1 /* Zero Flag bit position. */ + +#define CPU_C_bm 0x01 /* Carry Flag bit mask. */ +#define CPU_C_bp 0 /* Carry Flag bit position. */ + + +/* CLK - Clock System */ +/* CLK.CTRL bit masks and bit positions */ +#define CLK_SCLKSEL_gm 0x07 /* System Clock Selection group mask. */ +#define CLK_SCLKSEL_gp 0 /* System Clock Selection group position. */ +#define CLK_SCLKSEL0_bm (1<<0) /* System Clock Selection bit 0 mask. */ +#define CLK_SCLKSEL0_bp 0 /* System Clock Selection bit 0 position. */ +#define CLK_SCLKSEL1_bm (1<<1) /* System Clock Selection bit 1 mask. */ +#define CLK_SCLKSEL1_bp 1 /* System Clock Selection bit 1 position. */ +#define CLK_SCLKSEL2_bm (1<<2) /* System Clock Selection bit 2 mask. */ +#define CLK_SCLKSEL2_bp 2 /* System Clock Selection bit 2 position. */ + + +/* CLK.PSCTRL bit masks and bit positions */ +#define CLK_PSADIV_gm 0x7C /* Prescaler A Division Factor group mask. */ +#define CLK_PSADIV_gp 2 /* Prescaler A Division Factor group position. */ +#define CLK_PSADIV0_bm (1<<2) /* Prescaler A Division Factor bit 0 mask. */ +#define CLK_PSADIV0_bp 2 /* Prescaler A Division Factor bit 0 position. */ +#define CLK_PSADIV1_bm (1<<3) /* Prescaler A Division Factor bit 1 mask. */ +#define CLK_PSADIV1_bp 3 /* Prescaler A Division Factor bit 1 position. */ +#define CLK_PSADIV2_bm (1<<4) /* Prescaler A Division Factor bit 2 mask. */ +#define CLK_PSADIV2_bp 4 /* Prescaler A Division Factor bit 2 position. */ +#define CLK_PSADIV3_bm (1<<5) /* Prescaler A Division Factor bit 3 mask. */ +#define CLK_PSADIV3_bp 5 /* Prescaler A Division Factor bit 3 position. */ +#define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ +#define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ + +#define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ +#define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ +#define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ +#define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ +#define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ +#define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ + + +/* CLK.LOCK bit masks and bit positions */ +#define CLK_LOCK_bm 0x01 /* Clock System Lock bit mask. */ +#define CLK_LOCK_bp 0 /* Clock System Lock bit position. */ + + +/* CLK.RTCCTRL bit masks and bit positions */ +#define CLK_RTCSRC_gm 0x0E /* Clock Source group mask. */ +#define CLK_RTCSRC_gp 1 /* Clock Source group position. */ +#define CLK_RTCSRC0_bm (1<<1) /* Clock Source bit 0 mask. */ +#define CLK_RTCSRC0_bp 1 /* Clock Source bit 0 position. */ +#define CLK_RTCSRC1_bm (1<<2) /* Clock Source bit 1 mask. */ +#define CLK_RTCSRC1_bp 2 /* Clock Source bit 1 position. */ +#define CLK_RTCSRC2_bm (1<<3) /* Clock Source bit 2 mask. */ +#define CLK_RTCSRC2_bp 3 /* Clock Source bit 2 position. */ + +#define CLK_RTCEN_bm 0x01 /* RTC Clock Source Enable bit mask. */ +#define CLK_RTCEN_bp 0 /* RTC Clock Source Enable bit position. */ + + +/* PR.PR bit masks and bit positions */ +#define PR_EBI_bm 0x08 /* External Bus Interface bit mask. */ +#define PR_EBI_bp 3 /* External Bus Interface bit position. */ + +#define PR_RTC_bm 0x04 /* Real-time Counter bit mask. */ +#define PR_RTC_bp 2 /* Real-time Counter bit position. */ + +#define PR_EVSYS_bm 0x02 /* Event System bit mask. */ +#define PR_EVSYS_bp 1 /* Event System bit position. */ + +#define PR_DMA_bm 0x01 /* DMA-Controller bit mask. */ +#define PR_DMA_bp 0 /* DMA-Controller bit position. */ + + +/* PR.PRPA bit masks and bit positions */ +#define PR_DAC_bm 0x04 /* Port A DAC bit mask. */ +#define PR_DAC_bp 2 /* Port A DAC bit position. */ + +#define PR_ADC_bm 0x02 /* Port A ADC bit mask. */ +#define PR_ADC_bp 1 /* Port A ADC bit position. */ + +#define PR_AC_bm 0x01 /* Port A Analog Comparator bit mask. */ +#define PR_AC_bp 0 /* Port A Analog Comparator bit position. */ + + +/* PR.PRPB bit masks and bit positions */ +/* PR_DAC_bm Predefined. */ +/* PR_DAC_bp Predefined. */ + +/* PR_ADC_bm Predefined. */ +/* PR_ADC_bp Predefined. */ + +/* PR_AC_bm Predefined. */ +/* PR_AC_bp Predefined. */ + + +/* PR.PRPC bit masks and bit positions */ +#define PR_TWI_bm 0x40 /* Port C Two-wire Interface bit mask. */ +#define PR_TWI_bp 6 /* Port C Two-wire Interface bit position. */ + +#define PR_USART1_bm 0x20 /* Port C USART1 bit mask. */ +#define PR_USART1_bp 5 /* Port C USART1 bit position. */ + +#define PR_USART0_bm 0x10 /* Port C USART0 bit mask. */ +#define PR_USART0_bp 4 /* Port C USART0 bit position. */ + +#define PR_SPI_bm 0x08 /* Port C SPI bit mask. */ +#define PR_SPI_bp 3 /* Port C SPI bit position. */ + +#define PR_HIRES_bm 0x04 /* Port C AWEX bit mask. */ +#define PR_HIRES_bp 2 /* Port C AWEX bit position. */ + +#define PR_TC1_bm 0x02 /* Port C Timer/Counter1 bit mask. */ +#define PR_TC1_bp 1 /* Port C Timer/Counter1 bit position. */ + +#define PR_TC0_bm 0x01 /* Port C Timer/Counter0 bit mask. */ +#define PR_TC0_bp 0 /* Port C Timer/Counter0 bit position. */ + + +/* PR.PRPD bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPE bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPF bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* SLEEP - Sleep Controller */ +/* SLEEP.CTRL bit masks and bit positions */ +#define SLEEP_SMODE_gm 0x0E /* Sleep Mode group mask. */ +#define SLEEP_SMODE_gp 1 /* Sleep Mode group position. */ +#define SLEEP_SMODE0_bm (1<<1) /* Sleep Mode bit 0 mask. */ +#define SLEEP_SMODE0_bp 1 /* Sleep Mode bit 0 position. */ +#define SLEEP_SMODE1_bm (1<<2) /* Sleep Mode bit 1 mask. */ +#define SLEEP_SMODE1_bp 2 /* Sleep Mode bit 1 position. */ +#define SLEEP_SMODE2_bm (1<<3) /* Sleep Mode bit 2 mask. */ +#define SLEEP_SMODE2_bp 3 /* Sleep Mode bit 2 position. */ + +#define SLEEP_SEN_bm 0x01 /* Sleep Enable bit mask. */ +#define SLEEP_SEN_bp 0 /* Sleep Enable bit position. */ + + +/* OSC - Oscillator */ +/* OSC.CTRL bit masks and bit positions */ +#define OSC_PLLEN_bm 0x10 /* PLL Enable bit mask. */ +#define OSC_PLLEN_bp 4 /* PLL Enable bit position. */ + +#define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ +#define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ + +#define OSC_RC32KEN_bm 0x04 /* Internal 32kHz RC Oscillator Enable bit mask. */ +#define OSC_RC32KEN_bp 2 /* Internal 32kHz RC Oscillator Enable bit position. */ + +#define OSC_RC32MEN_bm 0x02 /* Internal 32MHz RC Oscillator Enable bit mask. */ +#define OSC_RC32MEN_bp 1 /* Internal 32MHz RC Oscillator Enable bit position. */ + +#define OSC_RC2MEN_bm 0x01 /* Internal 2MHz RC Oscillator Enable bit mask. */ +#define OSC_RC2MEN_bp 0 /* Internal 2MHz RC Oscillator Enable bit position. */ + + +/* OSC.STATUS bit masks and bit positions */ +#define OSC_PLLRDY_bm 0x10 /* PLL Ready bit mask. */ +#define OSC_PLLRDY_bp 4 /* PLL Ready bit position. */ + +#define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ +#define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ + +#define OSC_RC32KRDY_bm 0x04 /* Internal 32kHz RC Oscillator Ready bit mask. */ +#define OSC_RC32KRDY_bp 2 /* Internal 32kHz RC Oscillator Ready bit position. */ + +#define OSC_RC32MRDY_bm 0x02 /* Internal 32MHz RC Oscillator Ready bit mask. */ +#define OSC_RC32MRDY_bp 1 /* Internal 32MHz RC Oscillator Ready bit position. */ + +#define OSC_RC2MRDY_bm 0x01 /* Internal 2MHz RC Oscillator Ready bit mask. */ +#define OSC_RC2MRDY_bp 0 /* Internal 2MHz RC Oscillator Ready bit position. */ + + +/* OSC.XOSCCTRL bit masks and bit positions */ +#define OSC_FRQRANGE_gm 0xC0 /* Frequency Range group mask. */ +#define OSC_FRQRANGE_gp 6 /* Frequency Range group position. */ +#define OSC_FRQRANGE0_bm (1<<6) /* Frequency Range bit 0 mask. */ +#define OSC_FRQRANGE0_bp 6 /* Frequency Range bit 0 position. */ +#define OSC_FRQRANGE1_bm (1<<7) /* Frequency Range bit 1 mask. */ +#define OSC_FRQRANGE1_bp 7 /* Frequency Range bit 1 position. */ + +#define OSC_X32KLPM_bm 0x20 /* 32kHz XTAL OSC Low-power Mode bit mask. */ +#define OSC_X32KLPM_bp 5 /* 32kHz XTAL OSC Low-power Mode bit position. */ + +#define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ +#define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ +#define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ +#define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ +#define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ +#define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ +#define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ +#define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ +#define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ +#define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ + + +/* OSC.XOSCFAIL bit masks and bit positions */ +#define OSC_XOSCFDIF_bm 0x02 /* Failure Detection Interrupt Flag bit mask. */ +#define OSC_XOSCFDIF_bp 1 /* Failure Detection Interrupt Flag bit position. */ + +#define OSC_XOSCFDEN_bm 0x01 /* Failure Detection Enable bit mask. */ +#define OSC_XOSCFDEN_bp 0 /* Failure Detection Enable bit position. */ + + +/* OSC.PLLCTRL bit masks and bit positions */ +#define OSC_PLLSRC_gm 0xC0 /* Clock Source group mask. */ +#define OSC_PLLSRC_gp 6 /* Clock Source group position. */ +#define OSC_PLLSRC0_bm (1<<6) /* Clock Source bit 0 mask. */ +#define OSC_PLLSRC0_bp 6 /* Clock Source bit 0 position. */ +#define OSC_PLLSRC1_bm (1<<7) /* Clock Source bit 1 mask. */ +#define OSC_PLLSRC1_bp 7 /* Clock Source bit 1 position. */ + +#define OSC_PLLFAC_gm 0x1F /* Multiplication Factor group mask. */ +#define OSC_PLLFAC_gp 0 /* Multiplication Factor group position. */ +#define OSC_PLLFAC0_bm (1<<0) /* Multiplication Factor bit 0 mask. */ +#define OSC_PLLFAC0_bp 0 /* Multiplication Factor bit 0 position. */ +#define OSC_PLLFAC1_bm (1<<1) /* Multiplication Factor bit 1 mask. */ +#define OSC_PLLFAC1_bp 1 /* Multiplication Factor bit 1 position. */ +#define OSC_PLLFAC2_bm (1<<2) /* Multiplication Factor bit 2 mask. */ +#define OSC_PLLFAC2_bp 2 /* Multiplication Factor bit 2 position. */ +#define OSC_PLLFAC3_bm (1<<3) /* Multiplication Factor bit 3 mask. */ +#define OSC_PLLFAC3_bp 3 /* Multiplication Factor bit 3 position. */ +#define OSC_PLLFAC4_bm (1<<4) /* Multiplication Factor bit 4 mask. */ +#define OSC_PLLFAC4_bp 4 /* Multiplication Factor bit 4 position. */ + + +/* OSC.DFLLCTRL bit masks and bit positions */ +#define OSC_RC32MCREF_bm 0x02 /* 32MHz Calibration Reference bit mask. */ +#define OSC_RC32MCREF_bp 1 /* 32MHz Calibration Reference bit position. */ + +#define OSC_RC2MCREF_bm 0x01 /* 2MHz Calibration Reference bit mask. */ +#define OSC_RC2MCREF_bp 0 /* 2MHz Calibration Reference bit position. */ + + +/* DFLL - DFLL */ +/* DFLL.CTRL bit masks and bit positions */ +#define DFLL_ENABLE_bm 0x01 /* DFLL Enable bit mask. */ +#define DFLL_ENABLE_bp 0 /* DFLL Enable bit position. */ + + +/* DFLL.CALA bit masks and bit positions */ +#define DFLL_CALL_gm 0x7F /* DFLL Calibration bits [6:0] group mask. */ +#define DFLL_CALL_gp 0 /* DFLL Calibration bits [6:0] group position. */ +#define DFLL_CALL0_bm (1<<0) /* DFLL Calibration bits [6:0] bit 0 mask. */ +#define DFLL_CALL0_bp 0 /* DFLL Calibration bits [6:0] bit 0 position. */ +#define DFLL_CALL1_bm (1<<1) /* DFLL Calibration bits [6:0] bit 1 mask. */ +#define DFLL_CALL1_bp 1 /* DFLL Calibration bits [6:0] bit 1 position. */ +#define DFLL_CALL2_bm (1<<2) /* DFLL Calibration bits [6:0] bit 2 mask. */ +#define DFLL_CALL2_bp 2 /* DFLL Calibration bits [6:0] bit 2 position. */ +#define DFLL_CALL3_bm (1<<3) /* DFLL Calibration bits [6:0] bit 3 mask. */ +#define DFLL_CALL3_bp 3 /* DFLL Calibration bits [6:0] bit 3 position. */ +#define DFLL_CALL4_bm (1<<4) /* DFLL Calibration bits [6:0] bit 4 mask. */ +#define DFLL_CALL4_bp 4 /* DFLL Calibration bits [6:0] bit 4 position. */ +#define DFLL_CALL5_bm (1<<5) /* DFLL Calibration bits [6:0] bit 5 mask. */ +#define DFLL_CALL5_bp 5 /* DFLL Calibration bits [6:0] bit 5 position. */ +#define DFLL_CALL6_bm (1<<6) /* DFLL Calibration bits [6:0] bit 6 mask. */ +#define DFLL_CALL6_bp 6 /* DFLL Calibration bits [6:0] bit 6 position. */ + + +/* DFLL.CALB bit masks and bit positions */ +#define DFLL_CALH_gm 0x3F /* DFLL Calibration bits [12:7] group mask. */ +#define DFLL_CALH_gp 0 /* DFLL Calibration bits [12:7] group position. */ +#define DFLL_CALH0_bm (1<<0) /* DFLL Calibration bits [12:7] bit 0 mask. */ +#define DFLL_CALH0_bp 0 /* DFLL Calibration bits [12:7] bit 0 position. */ +#define DFLL_CALH1_bm (1<<1) /* DFLL Calibration bits [12:7] bit 1 mask. */ +#define DFLL_CALH1_bp 1 /* DFLL Calibration bits [12:7] bit 1 position. */ +#define DFLL_CALH2_bm (1<<2) /* DFLL Calibration bits [12:7] bit 2 mask. */ +#define DFLL_CALH2_bp 2 /* DFLL Calibration bits [12:7] bit 2 position. */ +#define DFLL_CALH3_bm (1<<3) /* DFLL Calibration bits [12:7] bit 3 mask. */ +#define DFLL_CALH3_bp 3 /* DFLL Calibration bits [12:7] bit 3 position. */ +#define DFLL_CALH4_bm (1<<4) /* DFLL Calibration bits [12:7] bit 4 mask. */ +#define DFLL_CALH4_bp 4 /* DFLL Calibration bits [12:7] bit 4 position. */ +#define DFLL_CALH5_bm (1<<5) /* DFLL Calibration bits [12:7] bit 5 mask. */ +#define DFLL_CALH5_bp 5 /* DFLL Calibration bits [12:7] bit 5 position. */ + + +/* RST - Reset */ +/* RST.STATUS bit masks and bit positions */ +#define RST_SDRF_bm 0x40 /* Spike Detection Reset Flag bit mask. */ +#define RST_SDRF_bp 6 /* Spike Detection Reset Flag bit position. */ + +#define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ +#define RST_SRF_bp 5 /* Software Reset Flag bit position. */ + +#define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ +#define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ + +#define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ +#define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ + +#define RST_BORF_bm 0x04 /* Brown-out Reset Flag bit mask. */ +#define RST_BORF_bp 2 /* Brown-out Reset Flag bit position. */ + +#define RST_EXTRF_bm 0x02 /* External Reset Flag bit mask. */ +#define RST_EXTRF_bp 1 /* External Reset Flag bit position. */ + +#define RST_PORF_bm 0x01 /* Power-on Reset Flag bit mask. */ +#define RST_PORF_bp 0 /* Power-on Reset Flag bit position. */ + + +/* RST.CTRL bit masks and bit positions */ +#define RST_SWRST_bm 0x01 /* Software Reset bit mask. */ +#define RST_SWRST_bp 0 /* Software Reset bit position. */ + + +/* WDT - Watch-Dog Timer */ +/* WDT.CTRL bit masks and bit positions */ +#define WDT_PER_gm 0x3C /* Period group mask. */ +#define WDT_PER_gp 2 /* Period group position. */ +#define WDT_PER0_bm (1<<2) /* Period bit 0 mask. */ +#define WDT_PER0_bp 2 /* Period bit 0 position. */ +#define WDT_PER1_bm (1<<3) /* Period bit 1 mask. */ +#define WDT_PER1_bp 3 /* Period bit 1 position. */ +#define WDT_PER2_bm (1<<4) /* Period bit 2 mask. */ +#define WDT_PER2_bp 4 /* Period bit 2 position. */ +#define WDT_PER3_bm (1<<5) /* Period bit 3 mask. */ +#define WDT_PER3_bp 5 /* Period bit 3 position. */ + +#define WDT_ENABLE_bm 0x02 /* Enable bit mask. */ +#define WDT_ENABLE_bp 1 /* Enable bit position. */ + +#define WDT_CEN_bm 0x01 /* Change Enable bit mask. */ +#define WDT_CEN_bp 0 /* Change Enable bit position. */ + + +/* WDT.WINCTRL bit masks and bit positions */ +#define WDT_WPER_gm 0x3C /* Windowed Mode Period group mask. */ +#define WDT_WPER_gp 2 /* Windowed Mode Period group position. */ +#define WDT_WPER0_bm (1<<2) /* Windowed Mode Period bit 0 mask. */ +#define WDT_WPER0_bp 2 /* Windowed Mode Period bit 0 position. */ +#define WDT_WPER1_bm (1<<3) /* Windowed Mode Period bit 1 mask. */ +#define WDT_WPER1_bp 3 /* Windowed Mode Period bit 1 position. */ +#define WDT_WPER2_bm (1<<4) /* Windowed Mode Period bit 2 mask. */ +#define WDT_WPER2_bp 4 /* Windowed Mode Period bit 2 position. */ +#define WDT_WPER3_bm (1<<5) /* Windowed Mode Period bit 3 mask. */ +#define WDT_WPER3_bp 5 /* Windowed Mode Period bit 3 position. */ + +#define WDT_WEN_bm 0x02 /* Windowed Mode Enable bit mask. */ +#define WDT_WEN_bp 1 /* Windowed Mode Enable bit position. */ + +#define WDT_WCEN_bm 0x01 /* Windowed Mode Change Enable bit mask. */ +#define WDT_WCEN_bp 0 /* Windowed Mode Change Enable bit position. */ + + +/* WDT.STATUS bit masks and bit positions */ +#define WDT_SYNCBUSY_bm 0x01 /* Syncronization busy bit mask. */ +#define WDT_SYNCBUSY_bp 0 /* Syncronization busy bit position. */ + + +/* MCU - MCU Control */ +/* MCU.MCUCR bit masks and bit positions */ +#define MCU_JTAGD_bm 0x01 /* JTAG Disable bit mask. */ +#define MCU_JTAGD_bp 0 /* JTAG Disable bit position. */ + + +/* MCU.EVSYSLOCK bit masks and bit positions */ +#define MCU_EVSYS1LOCK_bm 0x10 /* Event Channel 4-7 Lock bit mask. */ +#define MCU_EVSYS1LOCK_bp 4 /* Event Channel 4-7 Lock bit position. */ + +#define MCU_EVSYS0LOCK_bm 0x01 /* Event Channel 0-3 Lock bit mask. */ +#define MCU_EVSYS0LOCK_bp 0 /* Event Channel 0-3 Lock bit position. */ + + +/* MCU.AWEXLOCK bit masks and bit positions */ +#define MCU_AWEXELOCK_bm 0x04 /* AWeX on T/C E0 Lock bit mask. */ +#define MCU_AWEXELOCK_bp 2 /* AWeX on T/C E0 Lock bit position. */ + +#define MCU_AWEXCLOCK_bm 0x01 /* AWeX on T/C C0 Lock bit mask. */ +#define MCU_AWEXCLOCK_bp 0 /* AWeX on T/C C0 Lock bit position. */ + + +/* PMIC - Programmable Multi-level Interrupt Controller */ +/* PMIC.STATUS bit masks and bit positions */ +#define PMIC_NMIEX_bm 0x80 /* Non-maskable Interrupt Executing bit mask. */ +#define PMIC_NMIEX_bp 7 /* Non-maskable Interrupt Executing bit position. */ + +#define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ +#define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ + +#define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ +#define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ + +#define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ +#define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ + + +/* PMIC.CTRL bit masks and bit positions */ +#define PMIC_RREN_bm 0x80 /* Round-Robin Priority Enable bit mask. */ +#define PMIC_RREN_bp 7 /* Round-Robin Priority Enable bit position. */ + +#define PMIC_IVSEL_bm 0x40 /* Interrupt Vector Select bit mask. */ +#define PMIC_IVSEL_bp 6 /* Interrupt Vector Select bit position. */ + +#define PMIC_HILVLEN_bm 0x04 /* High Level Enable bit mask. */ +#define PMIC_HILVLEN_bp 2 /* High Level Enable bit position. */ + +#define PMIC_MEDLVLEN_bm 0x02 /* Medium Level Enable bit mask. */ +#define PMIC_MEDLVLEN_bp 1 /* Medium Level Enable bit position. */ + +#define PMIC_LOLVLEN_bm 0x01 /* Low Level Enable bit mask. */ +#define PMIC_LOLVLEN_bp 0 /* Low Level Enable bit position. */ + + +/* DMA - DMA Controller */ +/* DMA_CH.CTRLA bit masks and bit positions */ +#define DMA_CH_ENABLE_bm 0x80 /* Channel Enable bit mask. */ +#define DMA_CH_ENABLE_bp 7 /* Channel Enable bit position. */ + +#define DMA_CH_RESET_bm 0x40 /* Channel Software Reset bit mask. */ +#define DMA_CH_RESET_bp 6 /* Channel Software Reset bit position. */ + +#define DMA_CH_REPEAT_bm 0x20 /* Channel Repeat Mode bit mask. */ +#define DMA_CH_REPEAT_bp 5 /* Channel Repeat Mode bit position. */ + +#define DMA_CH_TRFREQ_bm 0x10 /* Channel Transfer Request bit mask. */ +#define DMA_CH_TRFREQ_bp 4 /* Channel Transfer Request bit position. */ + +#define DMA_CH_SINGLE_bm 0x04 /* Channel Single Shot Data Transfer bit mask. */ +#define DMA_CH_SINGLE_bp 2 /* Channel Single Shot Data Transfer bit position. */ + +#define DMA_CH_BURSTLEN_gm 0x03 /* Channel Transfer Mode group mask. */ +#define DMA_CH_BURSTLEN_gp 0 /* Channel Transfer Mode group position. */ +#define DMA_CH_BURSTLEN0_bm (1<<0) /* Channel Transfer Mode bit 0 mask. */ +#define DMA_CH_BURSTLEN0_bp 0 /* Channel Transfer Mode bit 0 position. */ +#define DMA_CH_BURSTLEN1_bm (1<<1) /* Channel Transfer Mode bit 1 mask. */ +#define DMA_CH_BURSTLEN1_bp 1 /* Channel Transfer Mode bit 1 position. */ + + +/* DMA_CH.CTRLB bit masks and bit positions */ +#define DMA_CH_CHBUSY_bm 0x80 /* Block Transfer Busy bit mask. */ +#define DMA_CH_CHBUSY_bp 7 /* Block Transfer Busy bit position. */ + +#define DMA_CH_CHPEND_bm 0x40 /* Block Transfer Pending bit mask. */ +#define DMA_CH_CHPEND_bp 6 /* Block Transfer Pending bit position. */ + +#define DMA_CH_ERRIF_bm 0x20 /* Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH_ERRIF_bp 5 /* Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ + +#define DMA_CH_ERRINTLVL_gm 0x0C /* Transfer Error Interrupt Level group mask. */ +#define DMA_CH_ERRINTLVL_gp 2 /* Transfer Error Interrupt Level group position. */ +#define DMA_CH_ERRINTLVL0_bm (1<<2) /* Transfer Error Interrupt Level bit 0 mask. */ +#define DMA_CH_ERRINTLVL0_bp 2 /* Transfer Error Interrupt Level bit 0 position. */ +#define DMA_CH_ERRINTLVL1_bm (1<<3) /* Transfer Error Interrupt Level bit 1 mask. */ +#define DMA_CH_ERRINTLVL1_bp 3 /* Transfer Error Interrupt Level bit 1 position. */ + +#define DMA_CH_TRNINTLVL_gm 0x03 /* Transaction Complete Interrupt Level group mask. */ +#define DMA_CH_TRNINTLVL_gp 0 /* Transaction Complete Interrupt Level group position. */ +#define DMA_CH_TRNINTLVL0_bm (1<<0) /* Transaction Complete Interrupt Level bit 0 mask. */ +#define DMA_CH_TRNINTLVL0_bp 0 /* Transaction Complete Interrupt Level bit 0 position. */ +#define DMA_CH_TRNINTLVL1_bm (1<<1) /* Transaction Complete Interrupt Level bit 1 mask. */ +#define DMA_CH_TRNINTLVL1_bp 1 /* Transaction Complete Interrupt Level bit 1 position. */ + + +/* DMA_CH.ADDRCTRL bit masks and bit positions */ +#define DMA_CH_SRCRELOAD_gm 0xC0 /* Channel Source Address Reload group mask. */ +#define DMA_CH_SRCRELOAD_gp 6 /* Channel Source Address Reload group position. */ +#define DMA_CH_SRCRELOAD0_bm (1<<6) /* Channel Source Address Reload bit 0 mask. */ +#define DMA_CH_SRCRELOAD0_bp 6 /* Channel Source Address Reload bit 0 position. */ +#define DMA_CH_SRCRELOAD1_bm (1<<7) /* Channel Source Address Reload bit 1 mask. */ +#define DMA_CH_SRCRELOAD1_bp 7 /* Channel Source Address Reload bit 1 position. */ + +#define DMA_CH_SRCDIR_gm 0x30 /* Channel Source Address Mode group mask. */ +#define DMA_CH_SRCDIR_gp 4 /* Channel Source Address Mode group position. */ +#define DMA_CH_SRCDIR0_bm (1<<4) /* Channel Source Address Mode bit 0 mask. */ +#define DMA_CH_SRCDIR0_bp 4 /* Channel Source Address Mode bit 0 position. */ +#define DMA_CH_SRCDIR1_bm (1<<5) /* Channel Source Address Mode bit 1 mask. */ +#define DMA_CH_SRCDIR1_bp 5 /* Channel Source Address Mode bit 1 position. */ + +#define DMA_CH_DESTRELOAD_gm 0x0C /* Channel Destination Address Reload group mask. */ +#define DMA_CH_DESTRELOAD_gp 2 /* Channel Destination Address Reload group position. */ +#define DMA_CH_DESTRELOAD0_bm (1<<2) /* Channel Destination Address Reload bit 0 mask. */ +#define DMA_CH_DESTRELOAD0_bp 2 /* Channel Destination Address Reload bit 0 position. */ +#define DMA_CH_DESTRELOAD1_bm (1<<3) /* Channel Destination Address Reload bit 1 mask. */ +#define DMA_CH_DESTRELOAD1_bp 3 /* Channel Destination Address Reload bit 1 position. */ + +#define DMA_CH_DESTDIR_gm 0x03 /* Channel Destination Address Mode group mask. */ +#define DMA_CH_DESTDIR_gp 0 /* Channel Destination Address Mode group position. */ +#define DMA_CH_DESTDIR0_bm (1<<0) /* Channel Destination Address Mode bit 0 mask. */ +#define DMA_CH_DESTDIR0_bp 0 /* Channel Destination Address Mode bit 0 position. */ +#define DMA_CH_DESTDIR1_bm (1<<1) /* Channel Destination Address Mode bit 1 mask. */ +#define DMA_CH_DESTDIR1_bp 1 /* Channel Destination Address Mode bit 1 position. */ + + +/* DMA_CH.TRIGSRC bit masks and bit positions */ +#define DMA_CH_TRIGSRC_gm 0xFF /* Channel Trigger Source group mask. */ +#define DMA_CH_TRIGSRC_gp 0 /* Channel Trigger Source group position. */ +#define DMA_CH_TRIGSRC0_bm (1<<0) /* Channel Trigger Source bit 0 mask. */ +#define DMA_CH_TRIGSRC0_bp 0 /* Channel Trigger Source bit 0 position. */ +#define DMA_CH_TRIGSRC1_bm (1<<1) /* Channel Trigger Source bit 1 mask. */ +#define DMA_CH_TRIGSRC1_bp 1 /* Channel Trigger Source bit 1 position. */ +#define DMA_CH_TRIGSRC2_bm (1<<2) /* Channel Trigger Source bit 2 mask. */ +#define DMA_CH_TRIGSRC2_bp 2 /* Channel Trigger Source bit 2 position. */ +#define DMA_CH_TRIGSRC3_bm (1<<3) /* Channel Trigger Source bit 3 mask. */ +#define DMA_CH_TRIGSRC3_bp 3 /* Channel Trigger Source bit 3 position. */ +#define DMA_CH_TRIGSRC4_bm (1<<4) /* Channel Trigger Source bit 4 mask. */ +#define DMA_CH_TRIGSRC4_bp 4 /* Channel Trigger Source bit 4 position. */ +#define DMA_CH_TRIGSRC5_bm (1<<5) /* Channel Trigger Source bit 5 mask. */ +#define DMA_CH_TRIGSRC5_bp 5 /* Channel Trigger Source bit 5 position. */ +#define DMA_CH_TRIGSRC6_bm (1<<6) /* Channel Trigger Source bit 6 mask. */ +#define DMA_CH_TRIGSRC6_bp 6 /* Channel Trigger Source bit 6 position. */ +#define DMA_CH_TRIGSRC7_bm (1<<7) /* Channel Trigger Source bit 7 mask. */ +#define DMA_CH_TRIGSRC7_bp 7 /* Channel Trigger Source bit 7 position. */ + + +/* DMA.CTRL bit masks and bit positions */ +#define DMA_ENABLE_bm 0x80 /* Enable bit mask. */ +#define DMA_ENABLE_bp 7 /* Enable bit position. */ + +#define DMA_RESET_bm 0x40 /* Software Reset bit mask. */ +#define DMA_RESET_bp 6 /* Software Reset bit position. */ + +#define DMA_DBUFMODE_gm 0x0C /* Double Buffering Mode group mask. */ +#define DMA_DBUFMODE_gp 2 /* Double Buffering Mode group position. */ +#define DMA_DBUFMODE0_bm (1<<2) /* Double Buffering Mode bit 0 mask. */ +#define DMA_DBUFMODE0_bp 2 /* Double Buffering Mode bit 0 position. */ +#define DMA_DBUFMODE1_bm (1<<3) /* Double Buffering Mode bit 1 mask. */ +#define DMA_DBUFMODE1_bp 3 /* Double Buffering Mode bit 1 position. */ + +#define DMA_PRIMODE_gm 0x03 /* Channel Priority Mode group mask. */ +#define DMA_PRIMODE_gp 0 /* Channel Priority Mode group position. */ +#define DMA_PRIMODE0_bm (1<<0) /* Channel Priority Mode bit 0 mask. */ +#define DMA_PRIMODE0_bp 0 /* Channel Priority Mode bit 0 position. */ +#define DMA_PRIMODE1_bm (1<<1) /* Channel Priority Mode bit 1 mask. */ +#define DMA_PRIMODE1_bp 1 /* Channel Priority Mode bit 1 position. */ + + +/* DMA.INTFLAGS bit masks and bit positions */ +#define DMA_CH3ERRIF_bm 0x80 /* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH3ERRIF_bp 7 /* Channel 3 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH2ERRIF_bm 0x40 /* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH2ERRIF_bp 6 /* Channel 2 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH1ERRIF_bm 0x20 /* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH1ERRIF_bp 5 /* Channel 1 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH0ERRIF_bm 0x10 /* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH0ERRIF_bp 4 /* Channel 0 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH3TRNIF_bm 0x08 /* Channel 3 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH3TRNIF_bp 3 /* Channel 3 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH2TRNIF_bm 0x04 /* Channel 2 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH2TRNIF_bp 2 /* Channel 2 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH1TRNIF_bm 0x02 /* Channel 1 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH1TRNIF_bp 1 /* Channel 1 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH0TRNIF_bm 0x01 /* Channel 0 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH0TRNIF_bp 0 /* Channel 0 Transaction Complete Interrupt Flag bit position. */ + + +/* DMA.STATUS bit masks and bit positions */ +#define DMA_CH3BUSY_bm 0x80 /* Channel 3 Block Transfer Busy bit mask. */ +#define DMA_CH3BUSY_bp 7 /* Channel 3 Block Transfer Busy bit position. */ + +#define DMA_CH2BUSY_bm 0x40 /* Channel 2 Block Transfer Busy bit mask. */ +#define DMA_CH2BUSY_bp 6 /* Channel 2 Block Transfer Busy bit position. */ + +#define DMA_CH1BUSY_bm 0x20 /* Channel 1 Block Transfer Busy bit mask. */ +#define DMA_CH1BUSY_bp 5 /* Channel 1 Block Transfer Busy bit position. */ + +#define DMA_CH0BUSY_bm 0x10 /* Channel 0 Block Transfer Busy bit mask. */ +#define DMA_CH0BUSY_bp 4 /* Channel 0 Block Transfer Busy bit position. */ + +#define DMA_CH3PEND_bm 0x08 /* Channel 3 Block Transfer Pending bit mask. */ +#define DMA_CH3PEND_bp 3 /* Channel 3 Block Transfer Pending bit position. */ + +#define DMA_CH2PEND_bm 0x04 /* Channel 2 Block Transfer Pending bit mask. */ +#define DMA_CH2PEND_bp 2 /* Channel 2 Block Transfer Pending bit position. */ + +#define DMA_CH1PEND_bm 0x02 /* Channel 1 Block Transfer Pending bit mask. */ +#define DMA_CH1PEND_bp 1 /* Channel 1 Block Transfer Pending bit position. */ + +#define DMA_CH0PEND_bm 0x01 /* Channel 0 Block Transfer Pending bit mask. */ +#define DMA_CH0PEND_bp 0 /* Channel 0 Block Transfer Pending bit position. */ + + +/* EVSYS - Event System */ +/* EVSYS.CH0MUX bit masks and bit positions */ +#define EVSYS_CHMUX_gm 0xFF /* Event Channel 0 Multiplexer group mask. */ +#define EVSYS_CHMUX_gp 0 /* Event Channel 0 Multiplexer group position. */ +#define EVSYS_CHMUX0_bm (1<<0) /* Event Channel 0 Multiplexer bit 0 mask. */ +#define EVSYS_CHMUX0_bp 0 /* Event Channel 0 Multiplexer bit 0 position. */ +#define EVSYS_CHMUX1_bm (1<<1) /* Event Channel 0 Multiplexer bit 1 mask. */ +#define EVSYS_CHMUX1_bp 1 /* Event Channel 0 Multiplexer bit 1 position. */ +#define EVSYS_CHMUX2_bm (1<<2) /* Event Channel 0 Multiplexer bit 2 mask. */ +#define EVSYS_CHMUX2_bp 2 /* Event Channel 0 Multiplexer bit 2 position. */ +#define EVSYS_CHMUX3_bm (1<<3) /* Event Channel 0 Multiplexer bit 3 mask. */ +#define EVSYS_CHMUX3_bp 3 /* Event Channel 0 Multiplexer bit 3 position. */ +#define EVSYS_CHMUX4_bm (1<<4) /* Event Channel 0 Multiplexer bit 4 mask. */ +#define EVSYS_CHMUX4_bp 4 /* Event Channel 0 Multiplexer bit 4 position. */ +#define EVSYS_CHMUX5_bm (1<<5) /* Event Channel 0 Multiplexer bit 5 mask. */ +#define EVSYS_CHMUX5_bp 5 /* Event Channel 0 Multiplexer bit 5 position. */ +#define EVSYS_CHMUX6_bm (1<<6) /* Event Channel 0 Multiplexer bit 6 mask. */ +#define EVSYS_CHMUX6_bp 6 /* Event Channel 0 Multiplexer bit 6 position. */ +#define EVSYS_CHMUX7_bm (1<<7) /* Event Channel 0 Multiplexer bit 7 mask. */ +#define EVSYS_CHMUX7_bp 7 /* Event Channel 0 Multiplexer bit 7 position. */ + + +/* EVSYS.CH1MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH2MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH3MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH4MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH5MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH6MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH7MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH0CTRL bit masks and bit positions */ +#define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ +#define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ +#define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ +#define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ +#define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ +#define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ + +#define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ +#define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ + +#define EVSYS_QDEN_bm 0x08 /* Quadrature Decoder Enable bit mask. */ +#define EVSYS_QDEN_bp 3 /* Quadrature Decoder Enable bit position. */ + +#define EVSYS_DIGFILT_gm 0x07 /* Digital Filter group mask. */ +#define EVSYS_DIGFILT_gp 0 /* Digital Filter group position. */ +#define EVSYS_DIGFILT0_bm (1<<0) /* Digital Filter bit 0 mask. */ +#define EVSYS_DIGFILT0_bp 0 /* Digital Filter bit 0 position. */ +#define EVSYS_DIGFILT1_bm (1<<1) /* Digital Filter bit 1 mask. */ +#define EVSYS_DIGFILT1_bp 1 /* Digital Filter bit 1 position. */ +#define EVSYS_DIGFILT2_bm (1<<2) /* Digital Filter bit 2 mask. */ +#define EVSYS_DIGFILT2_bp 2 /* Digital Filter bit 2 position. */ + + +/* EVSYS.CH1CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH2CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH3CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH4CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH5CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH6CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH7CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* NVM - Non Volatile Memory Controller */ +/* NVM.CMD bit masks and bit positions */ +#define NVM_CMD_gm 0xFF /* Command group mask. */ +#define NVM_CMD_gp 0 /* Command group position. */ +#define NVM_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define NVM_CMD0_bp 0 /* Command bit 0 position. */ +#define NVM_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define NVM_CMD1_bp 1 /* Command bit 1 position. */ +#define NVM_CMD2_bm (1<<2) /* Command bit 2 mask. */ +#define NVM_CMD2_bp 2 /* Command bit 2 position. */ +#define NVM_CMD3_bm (1<<3) /* Command bit 3 mask. */ +#define NVM_CMD3_bp 3 /* Command bit 3 position. */ +#define NVM_CMD4_bm (1<<4) /* Command bit 4 mask. */ +#define NVM_CMD4_bp 4 /* Command bit 4 position. */ +#define NVM_CMD5_bm (1<<5) /* Command bit 5 mask. */ +#define NVM_CMD5_bp 5 /* Command bit 5 position. */ +#define NVM_CMD6_bm (1<<6) /* Command bit 6 mask. */ +#define NVM_CMD6_bp 6 /* Command bit 6 position. */ +#define NVM_CMD7_bm (1<<7) /* Command bit 7 mask. */ +#define NVM_CMD7_bp 7 /* Command bit 7 position. */ + + +/* NVM.CTRLA bit masks and bit positions */ +#define NVM_CMDEX_bm 0x01 /* Command Execute bit mask. */ +#define NVM_CMDEX_bp 0 /* Command Execute bit position. */ + + +/* NVM.CTRLB bit masks and bit positions */ +#define NVM_EEMAPEN_bm 0x08 /* EEPROM Mapping Enable bit mask. */ +#define NVM_EEMAPEN_bp 3 /* EEPROM Mapping Enable bit position. */ + +#define NVM_FPRM_bm 0x04 /* Flash Power Reduction Enable bit mask. */ +#define NVM_FPRM_bp 2 /* Flash Power Reduction Enable bit position. */ + +#define NVM_EPRM_bm 0x02 /* EEPROM Power Reduction Enable bit mask. */ +#define NVM_EPRM_bp 1 /* EEPROM Power Reduction Enable bit position. */ + +#define NVM_SPMLOCK_bm 0x01 /* SPM Lock bit mask. */ +#define NVM_SPMLOCK_bp 0 /* SPM Lock bit position. */ + + +/* NVM.INTCTRL bit masks and bit positions */ +#define NVM_SPMLVL_gm 0x0C /* SPM Interrupt Level group mask. */ +#define NVM_SPMLVL_gp 2 /* SPM Interrupt Level group position. */ +#define NVM_SPMLVL0_bm (1<<2) /* SPM Interrupt Level bit 0 mask. */ +#define NVM_SPMLVL0_bp 2 /* SPM Interrupt Level bit 0 position. */ +#define NVM_SPMLVL1_bm (1<<3) /* SPM Interrupt Level bit 1 mask. */ +#define NVM_SPMLVL1_bp 3 /* SPM Interrupt Level bit 1 position. */ + +#define NVM_EELVL_gm 0x03 /* EEPROM Interrupt Level group mask. */ +#define NVM_EELVL_gp 0 /* EEPROM Interrupt Level group position. */ +#define NVM_EELVL0_bm (1<<0) /* EEPROM Interrupt Level bit 0 mask. */ +#define NVM_EELVL0_bp 0 /* EEPROM Interrupt Level bit 0 position. */ +#define NVM_EELVL1_bm (1<<1) /* EEPROM Interrupt Level bit 1 mask. */ +#define NVM_EELVL1_bp 1 /* EEPROM Interrupt Level bit 1 position. */ + + +/* NVM.STATUS bit masks and bit positions */ +#define NVM_NVMBUSY_bm 0x80 /* Non-volatile Memory Busy bit mask. */ +#define NVM_NVMBUSY_bp 7 /* Non-volatile Memory Busy bit position. */ + +#define NVM_FBUSY_bm 0x40 /* Flash Memory Busy bit mask. */ +#define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ + +#define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ +#define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ + +#define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ +#define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ + + +/* NVM.LOCKBITS bit masks and bit positions */ +#define NVM_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ +#define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LOCKBITS_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LOCKBITS_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LOCKBITS_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LOCKBITS_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE0 bit masks and bit positions */ +#define NVM_FUSES_JTAGUSERID_gm 0xFF /* JTAG User ID group mask. */ +#define NVM_FUSES_JTAGUSERID_gp 0 /* JTAG User ID group position. */ +#define NVM_FUSES_JTAGUSERID0_bm (1<<0) /* JTAG User ID bit 0 mask. */ +#define NVM_FUSES_JTAGUSERID0_bp 0 /* JTAG User ID bit 0 position. */ +#define NVM_FUSES_JTAGUSERID1_bm (1<<1) /* JTAG User ID bit 1 mask. */ +#define NVM_FUSES_JTAGUSERID1_bp 1 /* JTAG User ID bit 1 position. */ +#define NVM_FUSES_JTAGUSERID2_bm (1<<2) /* JTAG User ID bit 2 mask. */ +#define NVM_FUSES_JTAGUSERID2_bp 2 /* JTAG User ID bit 2 position. */ +#define NVM_FUSES_JTAGUSERID3_bm (1<<3) /* JTAG User ID bit 3 mask. */ +#define NVM_FUSES_JTAGUSERID3_bp 3 /* JTAG User ID bit 3 position. */ +#define NVM_FUSES_JTAGUSERID4_bm (1<<4) /* JTAG User ID bit 4 mask. */ +#define NVM_FUSES_JTAGUSERID4_bp 4 /* JTAG User ID bit 4 position. */ +#define NVM_FUSES_JTAGUSERID5_bm (1<<5) /* JTAG User ID bit 5 mask. */ +#define NVM_FUSES_JTAGUSERID5_bp 5 /* JTAG User ID bit 5 position. */ +#define NVM_FUSES_JTAGUSERID6_bm (1<<6) /* JTAG User ID bit 6 mask. */ +#define NVM_FUSES_JTAGUSERID6_bp 6 /* JTAG User ID bit 6 position. */ +#define NVM_FUSES_JTAGUSERID7_bm (1<<7) /* JTAG User ID bit 7 mask. */ +#define NVM_FUSES_JTAGUSERID7_bp 7 /* JTAG User ID bit 7 position. */ + + +/* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ +#define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ +#define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ +#define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ +#define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ +#define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ +#define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ + +#define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ +#define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ +#define NVM_FUSES_WDP0_bm (1<<0) /* Watchdog Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDP0_bp 0 /* Watchdog Timeout Period bit 0 position. */ +#define NVM_FUSES_WDP1_bm (1<<1) /* Watchdog Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDP1_bp 1 /* Watchdog Timeout Period bit 1 position. */ +#define NVM_FUSES_WDP2_bm (1<<2) /* Watchdog Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDP2_bp 2 /* Watchdog Timeout Period bit 2 position. */ +#define NVM_FUSES_WDP3_bm (1<<3) /* Watchdog Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDP3_bp 3 /* Watchdog Timeout Period bit 3 position. */ + + +/* NVM_FUSES.FUSEBYTE2 bit masks and bit positions */ +#define NVM_FUSES_DVSDON_bm 0x80 /* Spike Detector Enable bit mask. */ +#define NVM_FUSES_DVSDON_bp 7 /* Spike Detector Enable bit position. */ + +#define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ +#define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ + +#define NVM_FUSES_BODACT_gm 0x0C /* BOD Operation in Active Mode group mask. */ +#define NVM_FUSES_BODACT_gp 2 /* BOD Operation in Active Mode group position. */ +#define NVM_FUSES_BODACT0_bm (1<<2) /* BOD Operation in Active Mode bit 0 mask. */ +#define NVM_FUSES_BODACT0_bp 2 /* BOD Operation in Active Mode bit 0 position. */ +#define NVM_FUSES_BODACT1_bm (1<<3) /* BOD Operation in Active Mode bit 1 mask. */ +#define NVM_FUSES_BODACT1_bp 3 /* BOD Operation in Active Mode bit 1 position. */ + +#define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ +#define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ +#define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ +#define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ +#define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ +#define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ +#define NVM_FUSES_SUT_gm 0x0C /* Start-up Time group mask. */ +#define NVM_FUSES_SUT_gp 2 /* Start-up Time group position. */ +#define NVM_FUSES_SUT0_bm (1<<2) /* Start-up Time bit 0 mask. */ +#define NVM_FUSES_SUT0_bp 2 /* Start-up Time bit 0 position. */ +#define NVM_FUSES_SUT1_bm (1<<3) /* Start-up Time bit 1 mask. */ +#define NVM_FUSES_SUT1_bp 3 /* Start-up Time bit 1 position. */ + +#define NVM_FUSES_WDLOCK_bm 0x02 /* Watchdog Timer Lock bit mask. */ +#define NVM_FUSES_WDLOCK_bp 1 /* Watchdog Timer Lock bit position. */ + +#define NVM_FUSES_JTAGEN_bm 0x01 /* JTAG Interface Enable bit mask. */ +#define NVM_FUSES_JTAGEN_bp 0 /* JTAG Interface Enable bit position. */ + + +/* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ +#define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ +#define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ + +#define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ +#define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ +#define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ +#define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ +#define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ +#define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ +#define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ +#define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ + + +/* AC - Analog Comparator */ +/* AC.AC0CTRL bit masks and bit positions */ +#define AC_INTMODE_gm 0xC0 /* Interrupt Mode group mask. */ +#define AC_INTMODE_gp 6 /* Interrupt Mode group position. */ +#define AC_INTMODE0_bm (1<<6) /* Interrupt Mode bit 0 mask. */ +#define AC_INTMODE0_bp 6 /* Interrupt Mode bit 0 position. */ +#define AC_INTMODE1_bm (1<<7) /* Interrupt Mode bit 1 mask. */ +#define AC_INTMODE1_bp 7 /* Interrupt Mode bit 1 position. */ + +#define AC_INTLVL_gm 0x30 /* Interrupt Level group mask. */ +#define AC_INTLVL_gp 4 /* Interrupt Level group position. */ +#define AC_INTLVL0_bm (1<<4) /* Interrupt Level bit 0 mask. */ +#define AC_INTLVL0_bp 4 /* Interrupt Level bit 0 position. */ +#define AC_INTLVL1_bm (1<<5) /* Interrupt Level bit 1 mask. */ +#define AC_INTLVL1_bp 5 /* Interrupt Level bit 1 position. */ + +#define AC_HSMODE_bm 0x08 /* High-speed Mode bit mask. */ +#define AC_HSMODE_bp 3 /* High-speed Mode bit position. */ + +#define AC_HYSMODE_gm 0x06 /* Hysteresis Mode group mask. */ +#define AC_HYSMODE_gp 1 /* Hysteresis Mode group position. */ +#define AC_HYSMODE0_bm (1<<1) /* Hysteresis Mode bit 0 mask. */ +#define AC_HYSMODE0_bp 1 /* Hysteresis Mode bit 0 position. */ +#define AC_HYSMODE1_bm (1<<2) /* Hysteresis Mode bit 1 mask. */ +#define AC_HYSMODE1_bp 2 /* Hysteresis Mode bit 1 position. */ + +#define AC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define AC_ENABLE_bp 0 /* Enable bit position. */ + + +/* AC.AC1CTRL bit masks and bit positions */ +/* AC_INTMODE_gm Predefined. */ +/* AC_INTMODE_gp Predefined. */ +/* AC_INTMODE0_bm Predefined. */ +/* AC_INTMODE0_bp Predefined. */ +/* AC_INTMODE1_bm Predefined. */ +/* AC_INTMODE1_bp Predefined. */ + +/* AC_INTLVL_gm Predefined. */ +/* AC_INTLVL_gp Predefined. */ +/* AC_INTLVL0_bm Predefined. */ +/* AC_INTLVL0_bp Predefined. */ +/* AC_INTLVL1_bm Predefined. */ +/* AC_INTLVL1_bp Predefined. */ + +/* AC_HSMODE_bm Predefined. */ +/* AC_HSMODE_bp Predefined. */ + +/* AC_HYSMODE_gm Predefined. */ +/* AC_HYSMODE_gp Predefined. */ +/* AC_HYSMODE0_bm Predefined. */ +/* AC_HYSMODE0_bp Predefined. */ +/* AC_HYSMODE1_bm Predefined. */ +/* AC_HYSMODE1_bp Predefined. */ + +/* AC_ENABLE_bm Predefined. */ +/* AC_ENABLE_bp Predefined. */ + + +/* AC.AC0MUXCTRL bit masks and bit positions */ +#define AC_MUXPOS_gm 0x38 /* MUX Positive Input group mask. */ +#define AC_MUXPOS_gp 3 /* MUX Positive Input group position. */ +#define AC_MUXPOS0_bm (1<<3) /* MUX Positive Input bit 0 mask. */ +#define AC_MUXPOS0_bp 3 /* MUX Positive Input bit 0 position. */ +#define AC_MUXPOS1_bm (1<<4) /* MUX Positive Input bit 1 mask. */ +#define AC_MUXPOS1_bp 4 /* MUX Positive Input bit 1 position. */ +#define AC_MUXPOS2_bm (1<<5) /* MUX Positive Input bit 2 mask. */ +#define AC_MUXPOS2_bp 5 /* MUX Positive Input bit 2 position. */ + +#define AC_MUXNEG_gm 0x07 /* MUX Negative Input group mask. */ +#define AC_MUXNEG_gp 0 /* MUX Negative Input group position. */ +#define AC_MUXNEG0_bm (1<<0) /* MUX Negative Input bit 0 mask. */ +#define AC_MUXNEG0_bp 0 /* MUX Negative Input bit 0 position. */ +#define AC_MUXNEG1_bm (1<<1) /* MUX Negative Input bit 1 mask. */ +#define AC_MUXNEG1_bp 1 /* MUX Negative Input bit 1 position. */ +#define AC_MUXNEG2_bm (1<<2) /* MUX Negative Input bit 2 mask. */ +#define AC_MUXNEG2_bp 2 /* MUX Negative Input bit 2 position. */ + + +/* AC.AC1MUXCTRL bit masks and bit positions */ +/* AC_MUXPOS_gm Predefined. */ +/* AC_MUXPOS_gp Predefined. */ +/* AC_MUXPOS0_bm Predefined. */ +/* AC_MUXPOS0_bp Predefined. */ +/* AC_MUXPOS1_bm Predefined. */ +/* AC_MUXPOS1_bp Predefined. */ +/* AC_MUXPOS2_bm Predefined. */ +/* AC_MUXPOS2_bp Predefined. */ + +/* AC_MUXNEG_gm Predefined. */ +/* AC_MUXNEG_gp Predefined. */ +/* AC_MUXNEG0_bm Predefined. */ +/* AC_MUXNEG0_bp Predefined. */ +/* AC_MUXNEG1_bm Predefined. */ +/* AC_MUXNEG1_bp Predefined. */ +/* AC_MUXNEG2_bm Predefined. */ +/* AC_MUXNEG2_bp Predefined. */ + + +/* AC.CTRLA bit masks and bit positions */ +#define AC_AC0OUT_bm 0x01 /* Comparator 0 Output Enable bit mask. */ +#define AC_AC0OUT_bp 0 /* Comparator 0 Output Enable bit position. */ + + +/* AC.CTRLB bit masks and bit positions */ +#define AC_SCALEFAC_gm 0x3F /* VCC Voltage Scaler Factor group mask. */ +#define AC_SCALEFAC_gp 0 /* VCC Voltage Scaler Factor group position. */ +#define AC_SCALEFAC0_bm (1<<0) /* VCC Voltage Scaler Factor bit 0 mask. */ +#define AC_SCALEFAC0_bp 0 /* VCC Voltage Scaler Factor bit 0 position. */ +#define AC_SCALEFAC1_bm (1<<1) /* VCC Voltage Scaler Factor bit 1 mask. */ +#define AC_SCALEFAC1_bp 1 /* VCC Voltage Scaler Factor bit 1 position. */ +#define AC_SCALEFAC2_bm (1<<2) /* VCC Voltage Scaler Factor bit 2 mask. */ +#define AC_SCALEFAC2_bp 2 /* VCC Voltage Scaler Factor bit 2 position. */ +#define AC_SCALEFAC3_bm (1<<3) /* VCC Voltage Scaler Factor bit 3 mask. */ +#define AC_SCALEFAC3_bp 3 /* VCC Voltage Scaler Factor bit 3 position. */ +#define AC_SCALEFAC4_bm (1<<4) /* VCC Voltage Scaler Factor bit 4 mask. */ +#define AC_SCALEFAC4_bp 4 /* VCC Voltage Scaler Factor bit 4 position. */ +#define AC_SCALEFAC5_bm (1<<5) /* VCC Voltage Scaler Factor bit 5 mask. */ +#define AC_SCALEFAC5_bp 5 /* VCC Voltage Scaler Factor bit 5 position. */ + + +/* AC.WINCTRL bit masks and bit positions */ +#define AC_WEN_bm 0x10 /* Window Mode Enable bit mask. */ +#define AC_WEN_bp 4 /* Window Mode Enable bit position. */ + +#define AC_WINTMODE_gm 0x0C /* Window Interrupt Mode group mask. */ +#define AC_WINTMODE_gp 2 /* Window Interrupt Mode group position. */ +#define AC_WINTMODE0_bm (1<<2) /* Window Interrupt Mode bit 0 mask. */ +#define AC_WINTMODE0_bp 2 /* Window Interrupt Mode bit 0 position. */ +#define AC_WINTMODE1_bm (1<<3) /* Window Interrupt Mode bit 1 mask. */ +#define AC_WINTMODE1_bp 3 /* Window Interrupt Mode bit 1 position. */ + +#define AC_WINTLVL_gm 0x03 /* Window Interrupt Level group mask. */ +#define AC_WINTLVL_gp 0 /* Window Interrupt Level group position. */ +#define AC_WINTLVL0_bm (1<<0) /* Window Interrupt Level bit 0 mask. */ +#define AC_WINTLVL0_bp 0 /* Window Interrupt Level bit 0 position. */ +#define AC_WINTLVL1_bm (1<<1) /* Window Interrupt Level bit 1 mask. */ +#define AC_WINTLVL1_bp 1 /* Window Interrupt Level bit 1 position. */ + + +/* AC.STATUS bit masks and bit positions */ +#define AC_WSTATE_gm 0xC0 /* Window Mode State group mask. */ +#define AC_WSTATE_gp 6 /* Window Mode State group position. */ +#define AC_WSTATE0_bm (1<<6) /* Window Mode State bit 0 mask. */ +#define AC_WSTATE0_bp 6 /* Window Mode State bit 0 position. */ +#define AC_WSTATE1_bm (1<<7) /* Window Mode State bit 1 mask. */ +#define AC_WSTATE1_bp 7 /* Window Mode State bit 1 position. */ + +#define AC_AC1STATE_bm 0x20 /* Comparator 1 State bit mask. */ +#define AC_AC1STATE_bp 5 /* Comparator 1 State bit position. */ + +#define AC_AC0STATE_bm 0x10 /* Comparator 0 State bit mask. */ +#define AC_AC0STATE_bp 4 /* Comparator 0 State bit position. */ + +#define AC_WIF_bm 0x04 /* Window Mode Interrupt Flag bit mask. */ +#define AC_WIF_bp 2 /* Window Mode Interrupt Flag bit position. */ + +#define AC_AC1IF_bm 0x02 /* Comparator 1 Interrupt Flag bit mask. */ +#define AC_AC1IF_bp 1 /* Comparator 1 Interrupt Flag bit position. */ + +#define AC_AC0IF_bm 0x01 /* Comparator 0 Interrupt Flag bit mask. */ +#define AC_AC0IF_bp 0 /* Comparator 0 Interrupt Flag bit position. */ + + +/* ADC - Analog/Digital Converter */ +/* ADC_CH.CTRL bit masks and bit positions */ +#define ADC_CH_START_bm 0x80 /* Channel Start Conversion bit mask. */ +#define ADC_CH_START_bp 7 /* Channel Start Conversion bit position. */ + +#define ADC_CH_GAINFAC_gm 0x1C /* Gain Factor group mask. */ +#define ADC_CH_GAINFAC_gp 2 /* Gain Factor group position. */ +#define ADC_CH_GAINFAC0_bm (1<<2) /* Gain Factor bit 0 mask. */ +#define ADC_CH_GAINFAC0_bp 2 /* Gain Factor bit 0 position. */ +#define ADC_CH_GAINFAC1_bm (1<<3) /* Gain Factor bit 1 mask. */ +#define ADC_CH_GAINFAC1_bp 3 /* Gain Factor bit 1 position. */ +#define ADC_CH_GAINFAC2_bm (1<<4) /* Gain Factor bit 2 mask. */ +#define ADC_CH_GAINFAC2_bp 4 /* Gain Factor bit 2 position. */ + +#define ADC_CH_INPUTMODE_gm 0x03 /* Input Mode Select group mask. */ +#define ADC_CH_INPUTMODE_gp 0 /* Input Mode Select group position. */ +#define ADC_CH_INPUTMODE0_bm (1<<0) /* Input Mode Select bit 0 mask. */ +#define ADC_CH_INPUTMODE0_bp 0 /* Input Mode Select bit 0 position. */ +#define ADC_CH_INPUTMODE1_bm (1<<1) /* Input Mode Select bit 1 mask. */ +#define ADC_CH_INPUTMODE1_bp 1 /* Input Mode Select bit 1 position. */ + + +/* ADC_CH.MUXCTRL bit masks and bit positions */ +#define ADC_CH_MUXPOS_gm 0x78 /* Positive Input Select group mask. */ +#define ADC_CH_MUXPOS_gp 3 /* Positive Input Select group position. */ +#define ADC_CH_MUXPOS0_bm (1<<3) /* Positive Input Select bit 0 mask. */ +#define ADC_CH_MUXPOS0_bp 3 /* Positive Input Select bit 0 position. */ +#define ADC_CH_MUXPOS1_bm (1<<4) /* Positive Input Select bit 1 mask. */ +#define ADC_CH_MUXPOS1_bp 4 /* Positive Input Select bit 1 position. */ +#define ADC_CH_MUXPOS2_bm (1<<5) /* Positive Input Select bit 2 mask. */ +#define ADC_CH_MUXPOS2_bp 5 /* Positive Input Select bit 2 position. */ +#define ADC_CH_MUXPOS3_bm (1<<6) /* Positive Input Select bit 3 mask. */ +#define ADC_CH_MUXPOS3_bp 6 /* Positive Input Select bit 3 position. */ + +#define ADC_CH_MUXINT_gm 0x78 /* Internal Input Select group mask. */ +#define ADC_CH_MUXINT_gp 3 /* Internal Input Select group position. */ +#define ADC_CH_MUXINT0_bm (1<<3) /* Internal Input Select bit 0 mask. */ +#define ADC_CH_MUXINT0_bp 3 /* Internal Input Select bit 0 position. */ +#define ADC_CH_MUXINT1_bm (1<<4) /* Internal Input Select bit 1 mask. */ +#define ADC_CH_MUXINT1_bp 4 /* Internal Input Select bit 1 position. */ +#define ADC_CH_MUXINT2_bm (1<<5) /* Internal Input Select bit 2 mask. */ +#define ADC_CH_MUXINT2_bp 5 /* Internal Input Select bit 2 position. */ +#define ADC_CH_MUXINT3_bm (1<<6) /* Internal Input Select bit 3 mask. */ +#define ADC_CH_MUXINT3_bp 6 /* Internal Input Select bit 3 position. */ + +#define ADC_CH_MUXNEG_gm 0x03 /* Negative Input Select group mask. */ +#define ADC_CH_MUXNEG_gp 0 /* Negative Input Select group position. */ +#define ADC_CH_MUXNEG0_bm (1<<0) /* Negative Input Select bit 0 mask. */ +#define ADC_CH_MUXNEG0_bp 0 /* Negative Input Select bit 0 position. */ +#define ADC_CH_MUXNEG1_bm (1<<1) /* Negative Input Select bit 1 mask. */ +#define ADC_CH_MUXNEG1_bp 1 /* Negative Input Select bit 1 position. */ + + +/* ADC_CH.INTCTRL bit masks and bit positions */ +#define ADC_CH_INTMODE_gm 0x0C /* Interrupt Mode group mask. */ +#define ADC_CH_INTMODE_gp 2 /* Interrupt Mode group position. */ +#define ADC_CH_INTMODE0_bm (1<<2) /* Interrupt Mode bit 0 mask. */ +#define ADC_CH_INTMODE0_bp 2 /* Interrupt Mode bit 0 position. */ +#define ADC_CH_INTMODE1_bm (1<<3) /* Interrupt Mode bit 1 mask. */ +#define ADC_CH_INTMODE1_bp 3 /* Interrupt Mode bit 1 position. */ + +#define ADC_CH_INTLVL_gm 0x03 /* Interrupt Level group mask. */ +#define ADC_CH_INTLVL_gp 0 /* Interrupt Level group position. */ +#define ADC_CH_INTLVL0_bm (1<<0) /* Interrupt Level bit 0 mask. */ +#define ADC_CH_INTLVL0_bp 0 /* Interrupt Level bit 0 position. */ +#define ADC_CH_INTLVL1_bm (1<<1) /* Interrupt Level bit 1 mask. */ +#define ADC_CH_INTLVL1_bp 1 /* Interrupt Level bit 1 position. */ + + +/* ADC_CH.INTFLAGS bit masks and bit positions */ +#define ADC_CH_CHIF_bm 0x01 /* Channel Interrupt Flag bit mask. */ +#define ADC_CH_CHIF_bp 0 /* Channel Interrupt Flag bit position. */ + + +/* ADC.CTRLA bit masks and bit positions */ +#define ADC_DMASEL_gm 0xE0 /* DMA Selection group mask. */ +#define ADC_DMASEL_gp 5 /* DMA Selection group position. */ +#define ADC_DMASEL0_bm (1<<5) /* DMA Selection bit 0 mask. */ +#define ADC_DMASEL0_bp 5 /* DMA Selection bit 0 position. */ +#define ADC_DMASEL1_bm (1<<6) /* DMA Selection bit 1 mask. */ +#define ADC_DMASEL1_bp 6 /* DMA Selection bit 1 position. */ +#define ADC_DMASEL2_bm (1<<7) /* DMA Selection bit 2 mask. */ +#define ADC_DMASEL2_bp 7 /* DMA Selection bit 2 position. */ + +#define ADC_CH3START_bm 0x20 /* Channel 3 Start Conversion bit mask. */ +#define ADC_CH3START_bp 5 /* Channel 3 Start Conversion bit position. */ + +#define ADC_CH2START_bm 0x10 /* Channel 2 Start Conversion bit mask. */ +#define ADC_CH2START_bp 4 /* Channel 2 Start Conversion bit position. */ + +#define ADC_CH1START_bm 0x08 /* Channel 1 Start Conversion bit mask. */ +#define ADC_CH1START_bp 3 /* Channel 1 Start Conversion bit position. */ + +#define ADC_CH0START_bm 0x04 /* Channel 0 Start Conversion bit mask. */ +#define ADC_CH0START_bp 2 /* Channel 0 Start Conversion bit position. */ + +#define ADC_FLUSH_bm 0x02 /* Flush Pipeline bit mask. */ +#define ADC_FLUSH_bp 1 /* Flush Pipeline bit position. */ + +#define ADC_ENABLE_bm 0x01 /* Enable ADC bit mask. */ +#define ADC_ENABLE_bp 0 /* Enable ADC bit position. */ + + +/* ADC.CTRLB bit masks and bit positions */ +#define ADC_CONMODE_bm 0x10 /* Conversion Mode bit mask. */ +#define ADC_CONMODE_bp 4 /* Conversion Mode bit position. */ + +#define ADC_FREERUN_bm 0x08 /* Free Running Mode Enable bit mask. */ +#define ADC_FREERUN_bp 3 /* Free Running Mode Enable bit position. */ + +#define ADC_RESOLUTION_gm 0x06 /* Result Resolution group mask. */ +#define ADC_RESOLUTION_gp 1 /* Result Resolution group position. */ +#define ADC_RESOLUTION0_bm (1<<1) /* Result Resolution bit 0 mask. */ +#define ADC_RESOLUTION0_bp 1 /* Result Resolution bit 0 position. */ +#define ADC_RESOLUTION1_bm (1<<2) /* Result Resolution bit 1 mask. */ +#define ADC_RESOLUTION1_bp 2 /* Result Resolution bit 1 position. */ + + +/* ADC.REFCTRL bit masks and bit positions */ +#define ADC_REFSEL_gm 0x30 /* Reference Selection group mask. */ +#define ADC_REFSEL_gp 4 /* Reference Selection group position. */ +#define ADC_REFSEL0_bm (1<<4) /* Reference Selection bit 0 mask. */ +#define ADC_REFSEL0_bp 4 /* Reference Selection bit 0 position. */ +#define ADC_REFSEL1_bm (1<<5) /* Reference Selection bit 1 mask. */ +#define ADC_REFSEL1_bp 5 /* Reference Selection bit 1 position. */ + +#define ADC_BANDGAP_bm 0x02 /* Bandgap enable bit mask. */ +#define ADC_BANDGAP_bp 1 /* Bandgap enable bit position. */ + +#define ADC_TEMPREF_bm 0x01 /* Temperature Reference Enable bit mask. */ +#define ADC_TEMPREF_bp 0 /* Temperature Reference Enable bit position. */ + + +/* ADC.EVCTRL bit masks and bit positions */ +#define ADC_SWEEP_gm 0xC0 /* Channel Sweep Selection group mask. */ +#define ADC_SWEEP_gp 6 /* Channel Sweep Selection group position. */ +#define ADC_SWEEP0_bm (1<<6) /* Channel Sweep Selection bit 0 mask. */ +#define ADC_SWEEP0_bp 6 /* Channel Sweep Selection bit 0 position. */ +#define ADC_SWEEP1_bm (1<<7) /* Channel Sweep Selection bit 1 mask. */ +#define ADC_SWEEP1_bp 7 /* Channel Sweep Selection bit 1 position. */ + +#define ADC_EVSEL_gm 0x38 /* Event Input Select group mask. */ +#define ADC_EVSEL_gp 3 /* Event Input Select group position. */ +#define ADC_EVSEL0_bm (1<<3) /* Event Input Select bit 0 mask. */ +#define ADC_EVSEL0_bp 3 /* Event Input Select bit 0 position. */ +#define ADC_EVSEL1_bm (1<<4) /* Event Input Select bit 1 mask. */ +#define ADC_EVSEL1_bp 4 /* Event Input Select bit 1 position. */ +#define ADC_EVSEL2_bm (1<<5) /* Event Input Select bit 2 mask. */ +#define ADC_EVSEL2_bp 5 /* Event Input Select bit 2 position. */ + +#define ADC_EVACT_gm 0x07 /* Event Action Select group mask. */ +#define ADC_EVACT_gp 0 /* Event Action Select group position. */ +#define ADC_EVACT0_bm (1<<0) /* Event Action Select bit 0 mask. */ +#define ADC_EVACT0_bp 0 /* Event Action Select bit 0 position. */ +#define ADC_EVACT1_bm (1<<1) /* Event Action Select bit 1 mask. */ +#define ADC_EVACT1_bp 1 /* Event Action Select bit 1 position. */ +#define ADC_EVACT2_bm (1<<2) /* Event Action Select bit 2 mask. */ +#define ADC_EVACT2_bp 2 /* Event Action Select bit 2 position. */ + + +/* ADC.PRESCALER bit masks and bit positions */ +#define ADC_PRESCALER_gm 0x07 /* Clock Prescaler Selection group mask. */ +#define ADC_PRESCALER_gp 0 /* Clock Prescaler Selection group position. */ +#define ADC_PRESCALER0_bm (1<<0) /* Clock Prescaler Selection bit 0 mask. */ +#define ADC_PRESCALER0_bp 0 /* Clock Prescaler Selection bit 0 position. */ +#define ADC_PRESCALER1_bm (1<<1) /* Clock Prescaler Selection bit 1 mask. */ +#define ADC_PRESCALER1_bp 1 /* Clock Prescaler Selection bit 1 position. */ +#define ADC_PRESCALER2_bm (1<<2) /* Clock Prescaler Selection bit 2 mask. */ +#define ADC_PRESCALER2_bp 2 /* Clock Prescaler Selection bit 2 position. */ + + +/* ADC.CALCTRL bit masks and bit positions */ +#define ADC_CAL_bm 0x01 /* ADC Calibration Start bit mask. */ +#define ADC_CAL_bp 0 /* ADC Calibration Start bit position. */ + + +/* ADC.INTFLAGS bit masks and bit positions */ +#define ADC_CH3IF_bm 0x08 /* Channel 3 Interrupt Flag bit mask. */ +#define ADC_CH3IF_bp 3 /* Channel 3 Interrupt Flag bit position. */ + +#define ADC_CH2IF_bm 0x04 /* Channel 2 Interrupt Flag bit mask. */ +#define ADC_CH2IF_bp 2 /* Channel 2 Interrupt Flag bit position. */ + +#define ADC_CH1IF_bm 0x02 /* Channel 1 Interrupt Flag bit mask. */ +#define ADC_CH1IF_bp 1 /* Channel 1 Interrupt Flag bit position. */ + +#define ADC_CH0IF_bm 0x01 /* Channel 0 Interrupt Flag bit mask. */ +#define ADC_CH0IF_bp 0 /* Channel 0 Interrupt Flag bit position. */ + + +/* DAC - Digital/Analog Converter */ +/* DAC.CTRLA bit masks and bit positions */ +#define DAC_IDOEN_bm 0x10 /* Internal Output Enable bit mask. */ +#define DAC_IDOEN_bp 4 /* Internal Output Enable bit position. */ + +#define DAC_CH1EN_bm 0x08 /* Channel 1 Output Enable bit mask. */ +#define DAC_CH1EN_bp 3 /* Channel 1 Output Enable bit position. */ + +#define DAC_CH0EN_bm 0x04 /* Channel 0 Output Enable bit mask. */ +#define DAC_CH0EN_bp 2 /* Channel 0 Output Enable bit position. */ + +#define DAC_LPMODE_bm 0x02 /* Low Power Mode bit mask. */ +#define DAC_LPMODE_bp 1 /* Low Power Mode bit position. */ + +#define DAC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define DAC_ENABLE_bp 0 /* Enable bit position. */ + + +/* DAC.CTRLB bit masks and bit positions */ +#define DAC_CHSEL_gm 0x60 /* Channel Select group mask. */ +#define DAC_CHSEL_gp 5 /* Channel Select group position. */ +#define DAC_CHSEL0_bm (1<<5) /* Channel Select bit 0 mask. */ +#define DAC_CHSEL0_bp 5 /* Channel Select bit 0 position. */ +#define DAC_CHSEL1_bm (1<<6) /* Channel Select bit 1 mask. */ +#define DAC_CHSEL1_bp 6 /* Channel Select bit 1 position. */ + +#define DAC_CH1TRIG_bm 0x02 /* Channel 1 Event Trig Enable bit mask. */ +#define DAC_CH1TRIG_bp 1 /* Channel 1 Event Trig Enable bit position. */ + +#define DAC_CH0TRIG_bm 0x01 /* Channel 0 Event Trig Enable bit mask. */ +#define DAC_CH0TRIG_bp 0 /* Channel 0 Event Trig Enable bit position. */ + + +/* DAC.CTRLC bit masks and bit positions */ +#define DAC_REFSEL_gm 0x18 /* Reference Select group mask. */ +#define DAC_REFSEL_gp 3 /* Reference Select group position. */ +#define DAC_REFSEL0_bm (1<<3) /* Reference Select bit 0 mask. */ +#define DAC_REFSEL0_bp 3 /* Reference Select bit 0 position. */ +#define DAC_REFSEL1_bm (1<<4) /* Reference Select bit 1 mask. */ +#define DAC_REFSEL1_bp 4 /* Reference Select bit 1 position. */ + +#define DAC_LEFTADJ_bm 0x01 /* Left-adjust Result bit mask. */ +#define DAC_LEFTADJ_bp 0 /* Left-adjust Result bit position. */ + + +/* DAC.EVCTRL bit masks and bit positions */ +#define DAC_EVSEL_gm 0x07 /* Event Input Selection group mask. */ +#define DAC_EVSEL_gp 0 /* Event Input Selection group position. */ +#define DAC_EVSEL0_bm (1<<0) /* Event Input Selection bit 0 mask. */ +#define DAC_EVSEL0_bp 0 /* Event Input Selection bit 0 position. */ +#define DAC_EVSEL1_bm (1<<1) /* Event Input Selection bit 1 mask. */ +#define DAC_EVSEL1_bp 1 /* Event Input Selection bit 1 position. */ +#define DAC_EVSEL2_bm (1<<2) /* Event Input Selection bit 2 mask. */ +#define DAC_EVSEL2_bp 2 /* Event Input Selection bit 2 position. */ + + +/* DAC.TIMCTRL bit masks and bit positions */ +#define DAC_CONINTVAL_gm 0x70 /* Conversion Intercal group mask. */ +#define DAC_CONINTVAL_gp 4 /* Conversion Intercal group position. */ +#define DAC_CONINTVAL0_bm (1<<4) /* Conversion Intercal bit 0 mask. */ +#define DAC_CONINTVAL0_bp 4 /* Conversion Intercal bit 0 position. */ +#define DAC_CONINTVAL1_bm (1<<5) /* Conversion Intercal bit 1 mask. */ +#define DAC_CONINTVAL1_bp 5 /* Conversion Intercal bit 1 position. */ +#define DAC_CONINTVAL2_bm (1<<6) /* Conversion Intercal bit 2 mask. */ +#define DAC_CONINTVAL2_bp 6 /* Conversion Intercal bit 2 position. */ + +#define DAC_REFRESH_gm 0x0F /* Refresh Timing Control group mask. */ +#define DAC_REFRESH_gp 0 /* Refresh Timing Control group position. */ +#define DAC_REFRESH0_bm (1<<0) /* Refresh Timing Control bit 0 mask. */ +#define DAC_REFRESH0_bp 0 /* Refresh Timing Control bit 0 position. */ +#define DAC_REFRESH1_bm (1<<1) /* Refresh Timing Control bit 1 mask. */ +#define DAC_REFRESH1_bp 1 /* Refresh Timing Control bit 1 position. */ +#define DAC_REFRESH2_bm (1<<2) /* Refresh Timing Control bit 2 mask. */ +#define DAC_REFRESH2_bp 2 /* Refresh Timing Control bit 2 position. */ +#define DAC_REFRESH3_bm (1<<3) /* Refresh Timing Control bit 3 mask. */ +#define DAC_REFRESH3_bp 3 /* Refresh Timing Control bit 3 position. */ + + +/* DAC.STATUS bit masks and bit positions */ +#define DAC_CH1DRE_bm 0x02 /* Channel 1 Data Register Empty bit mask. */ +#define DAC_CH1DRE_bp 1 /* Channel 1 Data Register Empty bit position. */ + +#define DAC_CH0DRE_bm 0x01 /* Channel 0 Data Register Empty bit mask. */ +#define DAC_CH0DRE_bp 0 /* Channel 0 Data Register Empty bit position. */ + + +/* RTC - Real-Time Clounter */ +/* RTC.CTRL bit masks and bit positions */ +#define RTC_PRESCALER_gm 0x07 /* Prescaling Factor group mask. */ +#define RTC_PRESCALER_gp 0 /* Prescaling Factor group position. */ +#define RTC_PRESCALER0_bm (1<<0) /* Prescaling Factor bit 0 mask. */ +#define RTC_PRESCALER0_bp 0 /* Prescaling Factor bit 0 position. */ +#define RTC_PRESCALER1_bm (1<<1) /* Prescaling Factor bit 1 mask. */ +#define RTC_PRESCALER1_bp 1 /* Prescaling Factor bit 1 position. */ +#define RTC_PRESCALER2_bm (1<<2) /* Prescaling Factor bit 2 mask. */ +#define RTC_PRESCALER2_bp 2 /* Prescaling Factor bit 2 position. */ + + +/* RTC.STATUS bit masks and bit positions */ +#define RTC_SYNCBUSY_bm 0x01 /* Synchronization Busy Flag bit mask. */ +#define RTC_SYNCBUSY_bp 0 /* Synchronization Busy Flag bit position. */ + + +/* RTC.INTCTRL bit masks and bit positions */ +#define RTC_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ +#define RTC_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ +#define RTC_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ +#define RTC_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ +#define RTC_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ +#define RTC_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ + +#define RTC_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ +#define RTC_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ +#define RTC_OVFINTLVL0_bm (1<<0) /* Overflow Interrupt Level bit 0 mask. */ +#define RTC_OVFINTLVL0_bp 0 /* Overflow Interrupt Level bit 0 position. */ +#define RTC_OVFINTLVL1_bm (1<<1) /* Overflow Interrupt Level bit 1 mask. */ +#define RTC_OVFINTLVL1_bp 1 /* Overflow Interrupt Level bit 1 position. */ + + +/* RTC.INTFLAGS bit masks and bit positions */ +#define RTC_COMPIF_bm 0x02 /* Compare Match Interrupt Flag bit mask. */ +#define RTC_COMPIF_bp 1 /* Compare Match Interrupt Flag bit position. */ + +#define RTC_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define RTC_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* EBI - External Bus Interface */ +/* EBI_CS.CTRLA bit masks and bit positions */ +#define EBI_CS_ASPACE_gm 0x7C /* Address Space group mask. */ +#define EBI_CS_ASPACE_gp 2 /* Address Space group position. */ +#define EBI_CS_ASPACE0_bm (1<<2) /* Address Space bit 0 mask. */ +#define EBI_CS_ASPACE0_bp 2 /* Address Space bit 0 position. */ +#define EBI_CS_ASPACE1_bm (1<<3) /* Address Space bit 1 mask. */ +#define EBI_CS_ASPACE1_bp 3 /* Address Space bit 1 position. */ +#define EBI_CS_ASPACE2_bm (1<<4) /* Address Space bit 2 mask. */ +#define EBI_CS_ASPACE2_bp 4 /* Address Space bit 2 position. */ +#define EBI_CS_ASPACE3_bm (1<<5) /* Address Space bit 3 mask. */ +#define EBI_CS_ASPACE3_bp 5 /* Address Space bit 3 position. */ +#define EBI_CS_ASPACE4_bm (1<<6) /* Address Space bit 4 mask. */ +#define EBI_CS_ASPACE4_bp 6 /* Address Space bit 4 position. */ + +#define EBI_CS_MODE_gm 0x03 /* Memory Mode group mask. */ +#define EBI_CS_MODE_gp 0 /* Memory Mode group position. */ +#define EBI_CS_MODE0_bm (1<<0) /* Memory Mode bit 0 mask. */ +#define EBI_CS_MODE0_bp 0 /* Memory Mode bit 0 position. */ +#define EBI_CS_MODE1_bm (1<<1) /* Memory Mode bit 1 mask. */ +#define EBI_CS_MODE1_bp 1 /* Memory Mode bit 1 position. */ + + +/* EBI_CS.CTRLB bit masks and bit positions */ +#define EBI_CS_SRWS_gm 0x07 /* SRAM Wait State Cycles group mask. */ +#define EBI_CS_SRWS_gp 0 /* SRAM Wait State Cycles group position. */ +#define EBI_CS_SRWS0_bm (1<<0) /* SRAM Wait State Cycles bit 0 mask. */ +#define EBI_CS_SRWS0_bp 0 /* SRAM Wait State Cycles bit 0 position. */ +#define EBI_CS_SRWS1_bm (1<<1) /* SRAM Wait State Cycles bit 1 mask. */ +#define EBI_CS_SRWS1_bp 1 /* SRAM Wait State Cycles bit 1 position. */ +#define EBI_CS_SRWS2_bm (1<<2) /* SRAM Wait State Cycles bit 2 mask. */ +#define EBI_CS_SRWS2_bp 2 /* SRAM Wait State Cycles bit 2 position. */ + +#define EBI_CS_SDINITDONE_bm 0x80 /* SDRAM Initialization Done bit mask. */ +#define EBI_CS_SDINITDONE_bp 7 /* SDRAM Initialization Done bit position. */ + +#define EBI_CS_SDSREN_bm 0x04 /* SDRAM Self-refresh Enable bit mask. */ +#define EBI_CS_SDSREN_bp 2 /* SDRAM Self-refresh Enable bit position. */ + +#define EBI_CS_SDMODE_gm 0x03 /* SDRAM Mode group mask. */ +#define EBI_CS_SDMODE_gp 0 /* SDRAM Mode group position. */ +#define EBI_CS_SDMODE0_bm (1<<0) /* SDRAM Mode bit 0 mask. */ +#define EBI_CS_SDMODE0_bp 0 /* SDRAM Mode bit 0 position. */ +#define EBI_CS_SDMODE1_bm (1<<1) /* SDRAM Mode bit 1 mask. */ +#define EBI_CS_SDMODE1_bp 1 /* SDRAM Mode bit 1 position. */ + + +/* EBI.CTRL bit masks and bit positions */ +#define EBI_SDDATAW_gm 0xC0 /* SDRAM Data Width Setting group mask. */ +#define EBI_SDDATAW_gp 6 /* SDRAM Data Width Setting group position. */ +#define EBI_SDDATAW0_bm (1<<6) /* SDRAM Data Width Setting bit 0 mask. */ +#define EBI_SDDATAW0_bp 6 /* SDRAM Data Width Setting bit 0 position. */ +#define EBI_SDDATAW1_bm (1<<7) /* SDRAM Data Width Setting bit 1 mask. */ +#define EBI_SDDATAW1_bp 7 /* SDRAM Data Width Setting bit 1 position. */ + +#define EBI_LPCMODE_gm 0x30 /* SRAM LPC Mode group mask. */ +#define EBI_LPCMODE_gp 4 /* SRAM LPC Mode group position. */ +#define EBI_LPCMODE0_bm (1<<4) /* SRAM LPC Mode bit 0 mask. */ +#define EBI_LPCMODE0_bp 4 /* SRAM LPC Mode bit 0 position. */ +#define EBI_LPCMODE1_bm (1<<5) /* SRAM LPC Mode bit 1 mask. */ +#define EBI_LPCMODE1_bp 5 /* SRAM LPC Mode bit 1 position. */ + +#define EBI_SRMODE_gm 0x0C /* SRAM Mode group mask. */ +#define EBI_SRMODE_gp 2 /* SRAM Mode group position. */ +#define EBI_SRMODE0_bm (1<<2) /* SRAM Mode bit 0 mask. */ +#define EBI_SRMODE0_bp 2 /* SRAM Mode bit 0 position. */ +#define EBI_SRMODE1_bm (1<<3) /* SRAM Mode bit 1 mask. */ +#define EBI_SRMODE1_bp 3 /* SRAM Mode bit 1 position. */ + +#define EBI_IFMODE_gm 0x03 /* Interface Mode group mask. */ +#define EBI_IFMODE_gp 0 /* Interface Mode group position. */ +#define EBI_IFMODE0_bm (1<<0) /* Interface Mode bit 0 mask. */ +#define EBI_IFMODE0_bp 0 /* Interface Mode bit 0 position. */ +#define EBI_IFMODE1_bm (1<<1) /* Interface Mode bit 1 mask. */ +#define EBI_IFMODE1_bp 1 /* Interface Mode bit 1 position. */ + + +/* EBI.SDRAMCTRLA bit masks and bit positions */ +#define EBI_SDCAS_bm 0x08 /* SDRAM CAS Latency Setting bit mask. */ +#define EBI_SDCAS_bp 3 /* SDRAM CAS Latency Setting bit position. */ + +#define EBI_SDROW_bm 0x04 /* SDRAM ROW Bits Setting bit mask. */ +#define EBI_SDROW_bp 2 /* SDRAM ROW Bits Setting bit position. */ + +#define EBI_SDCOL_gm 0x03 /* SDRAM Column Bits Setting group mask. */ +#define EBI_SDCOL_gp 0 /* SDRAM Column Bits Setting group position. */ +#define EBI_SDCOL0_bm (1<<0) /* SDRAM Column Bits Setting bit 0 mask. */ +#define EBI_SDCOL0_bp 0 /* SDRAM Column Bits Setting bit 0 position. */ +#define EBI_SDCOL1_bm (1<<1) /* SDRAM Column Bits Setting bit 1 mask. */ +#define EBI_SDCOL1_bp 1 /* SDRAM Column Bits Setting bit 1 position. */ + + +/* EBI.SDRAMCTRLB bit masks and bit positions */ +#define EBI_MRDLY_gm 0xC0 /* SDRAM Mode Register Delay group mask. */ +#define EBI_MRDLY_gp 6 /* SDRAM Mode Register Delay group position. */ +#define EBI_MRDLY0_bm (1<<6) /* SDRAM Mode Register Delay bit 0 mask. */ +#define EBI_MRDLY0_bp 6 /* SDRAM Mode Register Delay bit 0 position. */ +#define EBI_MRDLY1_bm (1<<7) /* SDRAM Mode Register Delay bit 1 mask. */ +#define EBI_MRDLY1_bp 7 /* SDRAM Mode Register Delay bit 1 position. */ + +#define EBI_ROWCYCDLY_gm 0x38 /* SDRAM Row Cycle Delay group mask. */ +#define EBI_ROWCYCDLY_gp 3 /* SDRAM Row Cycle Delay group position. */ +#define EBI_ROWCYCDLY0_bm (1<<3) /* SDRAM Row Cycle Delay bit 0 mask. */ +#define EBI_ROWCYCDLY0_bp 3 /* SDRAM Row Cycle Delay bit 0 position. */ +#define EBI_ROWCYCDLY1_bm (1<<4) /* SDRAM Row Cycle Delay bit 1 mask. */ +#define EBI_ROWCYCDLY1_bp 4 /* SDRAM Row Cycle Delay bit 1 position. */ +#define EBI_ROWCYCDLY2_bm (1<<5) /* SDRAM Row Cycle Delay bit 2 mask. */ +#define EBI_ROWCYCDLY2_bp 5 /* SDRAM Row Cycle Delay bit 2 position. */ + +#define EBI_RPDLY_gm 0x07 /* SDRAM Row-to-Precharge Delay group mask. */ +#define EBI_RPDLY_gp 0 /* SDRAM Row-to-Precharge Delay group position. */ +#define EBI_RPDLY0_bm (1<<0) /* SDRAM Row-to-Precharge Delay bit 0 mask. */ +#define EBI_RPDLY0_bp 0 /* SDRAM Row-to-Precharge Delay bit 0 position. */ +#define EBI_RPDLY1_bm (1<<1) /* SDRAM Row-to-Precharge Delay bit 1 mask. */ +#define EBI_RPDLY1_bp 1 /* SDRAM Row-to-Precharge Delay bit 1 position. */ +#define EBI_RPDLY2_bm (1<<2) /* SDRAM Row-to-Precharge Delay bit 2 mask. */ +#define EBI_RPDLY2_bp 2 /* SDRAM Row-to-Precharge Delay bit 2 position. */ + + +/* EBI.SDRAMCTRLC bit masks and bit positions */ +#define EBI_WRDLY_gm 0xC0 /* SDRAM Write Recovery Delay group mask. */ +#define EBI_WRDLY_gp 6 /* SDRAM Write Recovery Delay group position. */ +#define EBI_WRDLY0_bm (1<<6) /* SDRAM Write Recovery Delay bit 0 mask. */ +#define EBI_WRDLY0_bp 6 /* SDRAM Write Recovery Delay bit 0 position. */ +#define EBI_WRDLY1_bm (1<<7) /* SDRAM Write Recovery Delay bit 1 mask. */ +#define EBI_WRDLY1_bp 7 /* SDRAM Write Recovery Delay bit 1 position. */ + +#define EBI_ESRDLY_gm 0x38 /* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ +#define EBI_ESRDLY_gp 3 /* SDRAM Exit-Self-refresh-to-Active Delay group position. */ +#define EBI_ESRDLY0_bm (1<<3) /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ +#define EBI_ESRDLY0_bp 3 /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ +#define EBI_ESRDLY1_bm (1<<4) /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ +#define EBI_ESRDLY1_bp 4 /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ +#define EBI_ESRDLY2_bm (1<<5) /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ +#define EBI_ESRDLY2_bp 5 /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ + +#define EBI_ROWCOLDLY_gm 0x07 /* SDRAM Row-to-Column Delay group mask. */ +#define EBI_ROWCOLDLY_gp 0 /* SDRAM Row-to-Column Delay group position. */ +#define EBI_ROWCOLDLY0_bm (1<<0) /* SDRAM Row-to-Column Delay bit 0 mask. */ +#define EBI_ROWCOLDLY0_bp 0 /* SDRAM Row-to-Column Delay bit 0 position. */ +#define EBI_ROWCOLDLY1_bm (1<<1) /* SDRAM Row-to-Column Delay bit 1 mask. */ +#define EBI_ROWCOLDLY1_bp 1 /* SDRAM Row-to-Column Delay bit 1 position. */ +#define EBI_ROWCOLDLY2_bm (1<<2) /* SDRAM Row-to-Column Delay bit 2 mask. */ +#define EBI_ROWCOLDLY2_bp 2 /* SDRAM Row-to-Column Delay bit 2 position. */ + + +/* TWI - Two-Wire Interface */ +/* TWI_MASTER.CTRLA bit masks and bit positions */ +#define TWI_MASTER_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_MASTER_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_MASTER_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_MASTER_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_MASTER_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_MASTER_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_MASTER_RIEN_bm 0x20 /* Read Interrupt Enable bit mask. */ +#define TWI_MASTER_RIEN_bp 5 /* Read Interrupt Enable bit position. */ + +#define TWI_MASTER_WIEN_bm 0x10 /* Write Interrupt Enable bit mask. */ +#define TWI_MASTER_WIEN_bp 4 /* Write Interrupt Enable bit position. */ + +#define TWI_MASTER_ENABLE_bm 0x08 /* Enable TWI Master bit mask. */ +#define TWI_MASTER_ENABLE_bp 3 /* Enable TWI Master bit position. */ + + +/* TWI_MASTER.CTRLB bit masks and bit positions */ +#define TWI_MASTER_TIMEOUT_gm 0x0C /* Inactive Bus Timeout group mask. */ +#define TWI_MASTER_TIMEOUT_gp 2 /* Inactive Bus Timeout group position. */ +#define TWI_MASTER_TIMEOUT0_bm (1<<2) /* Inactive Bus Timeout bit 0 mask. */ +#define TWI_MASTER_TIMEOUT0_bp 2 /* Inactive Bus Timeout bit 0 position. */ +#define TWI_MASTER_TIMEOUT1_bm (1<<3) /* Inactive Bus Timeout bit 1 mask. */ +#define TWI_MASTER_TIMEOUT1_bp 3 /* Inactive Bus Timeout bit 1 position. */ + +#define TWI_MASTER_QCEN_bm 0x02 /* Quick Command Enable bit mask. */ +#define TWI_MASTER_QCEN_bp 1 /* Quick Command Enable bit position. */ + +#define TWI_MASTER_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_MASTER_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_MASTER.CTRLC bit masks and bit positions */ +#define TWI_MASTER_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_MASTER_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_MASTER_CMD_gm 0x03 /* Command group mask. */ +#define TWI_MASTER_CMD_gp 0 /* Command group position. */ +#define TWI_MASTER_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_MASTER_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_MASTER_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_MASTER_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_MASTER.STATUS bit masks and bit positions */ +#define TWI_MASTER_RIF_bm 0x80 /* Read Interrupt Flag bit mask. */ +#define TWI_MASTER_RIF_bp 7 /* Read Interrupt Flag bit position. */ + +#define TWI_MASTER_WIF_bm 0x40 /* Write Interrupt Flag bit mask. */ +#define TWI_MASTER_WIF_bp 6 /* Write Interrupt Flag bit position. */ + +#define TWI_MASTER_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_MASTER_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_MASTER_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_MASTER_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_MASTER_ARBLOST_bm 0x08 /* Arbitration Lost bit mask. */ +#define TWI_MASTER_ARBLOST_bp 3 /* Arbitration Lost bit position. */ + +#define TWI_MASTER_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_MASTER_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_MASTER_BUSSTATE_gm 0x03 /* Bus State group mask. */ +#define TWI_MASTER_BUSSTATE_gp 0 /* Bus State group position. */ +#define TWI_MASTER_BUSSTATE0_bm (1<<0) /* Bus State bit 0 mask. */ +#define TWI_MASTER_BUSSTATE0_bp 0 /* Bus State bit 0 position. */ +#define TWI_MASTER_BUSSTATE1_bm (1<<1) /* Bus State bit 1 mask. */ +#define TWI_MASTER_BUSSTATE1_bp 1 /* Bus State bit 1 position. */ + + +/* TWI_SLAVE.CTRLA bit masks and bit positions */ +#define TWI_SLAVE_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_SLAVE_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_SLAVE_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_SLAVE_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_SLAVE_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_SLAVE_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ +#define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ + +#define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ +#define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ + +#define TWI_SLAVE_PIEN_bm 0x04 /* Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_PIEN_bp 2 /* Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_PMEN_bm 0x02 /* Promiscuous Mode Enable bit mask. */ +#define TWI_SLAVE_PMEN_bp 1 /* Promiscuous Mode Enable bit position. */ + +#define TWI_SLAVE_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_SLAVE_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_SLAVE.CTRLB bit masks and bit positions */ +#define TWI_SLAVE_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_SLAVE_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_SLAVE_CMD_gm 0x03 /* Command group mask. */ +#define TWI_SLAVE_CMD_gp 0 /* Command group position. */ +#define TWI_SLAVE_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_SLAVE_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_SLAVE_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_SLAVE_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_SLAVE.STATUS bit masks and bit positions */ +#define TWI_SLAVE_DIF_bm 0x80 /* Data Interrupt Flag bit mask. */ +#define TWI_SLAVE_DIF_bp 7 /* Data Interrupt Flag bit position. */ + +#define TWI_SLAVE_APIF_bm 0x40 /* Address/Stop Interrupt Flag bit mask. */ +#define TWI_SLAVE_APIF_bp 6 /* Address/Stop Interrupt Flag bit position. */ + +#define TWI_SLAVE_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_SLAVE_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_SLAVE_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_SLAVE_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_SLAVE_COLL_bm 0x08 /* Collision bit mask. */ +#define TWI_SLAVE_COLL_bp 3 /* Collision bit position. */ + +#define TWI_SLAVE_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_SLAVE_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_SLAVE_DIR_bm 0x02 /* Read/Write Direction bit mask. */ +#define TWI_SLAVE_DIR_bp 1 /* Read/Write Direction bit position. */ + +#define TWI_SLAVE_AP_bm 0x01 /* Slave Address or Stop bit mask. */ +#define TWI_SLAVE_AP_bp 0 /* Slave Address or Stop bit position. */ + + +/* TWI.CTRL bit masks and bit positions */ +#define TWI_SDAHOLD_bm 0x02 /* SDA Hold Time Enable bit mask. */ +#define TWI_SDAHOLD_bp 1 /* SDA Hold Time Enable bit position. */ + +#define TWI_EDIEN_bm 0x01 /* External Driver Interface Enable bit mask. */ +#define TWI_EDIEN_bp 0 /* External Driver Interface Enable bit position. */ + + +/* PORT - Port Configuration */ +/* PORTCFG.VPCTRLA bit masks and bit positions */ +#define PORTCFG_VP1MAP_gm 0xF0 /* Virtual Port 1 Mapping group mask. */ +#define PORTCFG_VP1MAP_gp 4 /* Virtual Port 1 Mapping group position. */ +#define PORTCFG_VP1MAP0_bm (1<<4) /* Virtual Port 1 Mapping bit 0 mask. */ +#define PORTCFG_VP1MAP0_bp 4 /* Virtual Port 1 Mapping bit 0 position. */ +#define PORTCFG_VP1MAP1_bm (1<<5) /* Virtual Port 1 Mapping bit 1 mask. */ +#define PORTCFG_VP1MAP1_bp 5 /* Virtual Port 1 Mapping bit 1 position. */ +#define PORTCFG_VP1MAP2_bm (1<<6) /* Virtual Port 1 Mapping bit 2 mask. */ +#define PORTCFG_VP1MAP2_bp 6 /* Virtual Port 1 Mapping bit 2 position. */ +#define PORTCFG_VP1MAP3_bm (1<<7) /* Virtual Port 1 Mapping bit 3 mask. */ +#define PORTCFG_VP1MAP3_bp 7 /* Virtual Port 1 Mapping bit 3 position. */ + +#define PORTCFG_VP0MAP_gm 0x0F /* Virtual Port 0 Mapping group mask. */ +#define PORTCFG_VP0MAP_gp 0 /* Virtual Port 0 Mapping group position. */ +#define PORTCFG_VP0MAP0_bm (1<<0) /* Virtual Port 0 Mapping bit 0 mask. */ +#define PORTCFG_VP0MAP0_bp 0 /* Virtual Port 0 Mapping bit 0 position. */ +#define PORTCFG_VP0MAP1_bm (1<<1) /* Virtual Port 0 Mapping bit 1 mask. */ +#define PORTCFG_VP0MAP1_bp 1 /* Virtual Port 0 Mapping bit 1 position. */ +#define PORTCFG_VP0MAP2_bm (1<<2) /* Virtual Port 0 Mapping bit 2 mask. */ +#define PORTCFG_VP0MAP2_bp 2 /* Virtual Port 0 Mapping bit 2 position. */ +#define PORTCFG_VP0MAP3_bm (1<<3) /* Virtual Port 0 Mapping bit 3 mask. */ +#define PORTCFG_VP0MAP3_bp 3 /* Virtual Port 0 Mapping bit 3 position. */ + + +/* PORTCFG.VPCTRLB bit masks and bit positions */ +#define PORTCFG_VP3MAP_gm 0xF0 /* Virtual Port 3 Mapping group mask. */ +#define PORTCFG_VP3MAP_gp 4 /* Virtual Port 3 Mapping group position. */ +#define PORTCFG_VP3MAP0_bm (1<<4) /* Virtual Port 3 Mapping bit 0 mask. */ +#define PORTCFG_VP3MAP0_bp 4 /* Virtual Port 3 Mapping bit 0 position. */ +#define PORTCFG_VP3MAP1_bm (1<<5) /* Virtual Port 3 Mapping bit 1 mask. */ +#define PORTCFG_VP3MAP1_bp 5 /* Virtual Port 3 Mapping bit 1 position. */ +#define PORTCFG_VP3MAP2_bm (1<<6) /* Virtual Port 3 Mapping bit 2 mask. */ +#define PORTCFG_VP3MAP2_bp 6 /* Virtual Port 3 Mapping bit 2 position. */ +#define PORTCFG_VP3MAP3_bm (1<<7) /* Virtual Port 3 Mapping bit 3 mask. */ +#define PORTCFG_VP3MAP3_bp 7 /* Virtual Port 3 Mapping bit 3 position. */ + +#define PORTCFG_VP2MAP_gm 0x0F /* Virtual Port 2 Mapping group mask. */ +#define PORTCFG_VP2MAP_gp 0 /* Virtual Port 2 Mapping group position. */ +#define PORTCFG_VP2MAP0_bm (1<<0) /* Virtual Port 2 Mapping bit 0 mask. */ +#define PORTCFG_VP2MAP0_bp 0 /* Virtual Port 2 Mapping bit 0 position. */ +#define PORTCFG_VP2MAP1_bm (1<<1) /* Virtual Port 2 Mapping bit 1 mask. */ +#define PORTCFG_VP2MAP1_bp 1 /* Virtual Port 2 Mapping bit 1 position. */ +#define PORTCFG_VP2MAP2_bm (1<<2) /* Virtual Port 2 Mapping bit 2 mask. */ +#define PORTCFG_VP2MAP2_bp 2 /* Virtual Port 2 Mapping bit 2 position. */ +#define PORTCFG_VP2MAP3_bm (1<<3) /* Virtual Port 2 Mapping bit 3 mask. */ +#define PORTCFG_VP2MAP3_bp 3 /* Virtual Port 2 Mapping bit 3 position. */ + + +/* PORTCFG.CLKEVOUT bit masks and bit positions */ +#define PORTCFG_CLKOUT_gm 0x03 /* Clock Output Port group mask. */ +#define PORTCFG_CLKOUT_gp 0 /* Clock Output Port group position. */ +#define PORTCFG_CLKOUT0_bm (1<<0) /* Clock Output Port bit 0 mask. */ +#define PORTCFG_CLKOUT0_bp 0 /* Clock Output Port bit 0 position. */ +#define PORTCFG_CLKOUT1_bm (1<<1) /* Clock Output Port bit 1 mask. */ +#define PORTCFG_CLKOUT1_bp 1 /* Clock Output Port bit 1 position. */ + +#define PORTCFG_EVOUT_gm 0x30 /* Event Output Port group mask. */ +#define PORTCFG_EVOUT_gp 4 /* Event Output Port group position. */ +#define PORTCFG_EVOUT0_bm (1<<4) /* Event Output Port bit 0 mask. */ +#define PORTCFG_EVOUT0_bp 4 /* Event Output Port bit 0 position. */ +#define PORTCFG_EVOUT1_bm (1<<5) /* Event Output Port bit 1 mask. */ +#define PORTCFG_EVOUT1_bp 5 /* Event Output Port bit 1 position. */ + + +/* VPORT.INTFLAGS bit masks and bit positions */ +#define VPORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define VPORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define VPORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define VPORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.INTCTRL bit masks and bit positions */ +#define PORT_INT1LVL_gm 0x0C /* Port Interrupt 1 Level group mask. */ +#define PORT_INT1LVL_gp 2 /* Port Interrupt 1 Level group position. */ +#define PORT_INT1LVL0_bm (1<<2) /* Port Interrupt 1 Level bit 0 mask. */ +#define PORT_INT1LVL0_bp 2 /* Port Interrupt 1 Level bit 0 position. */ +#define PORT_INT1LVL1_bm (1<<3) /* Port Interrupt 1 Level bit 1 mask. */ +#define PORT_INT1LVL1_bp 3 /* Port Interrupt 1 Level bit 1 position. */ + +#define PORT_INT0LVL_gm 0x03 /* Port Interrupt 0 Level group mask. */ +#define PORT_INT0LVL_gp 0 /* Port Interrupt 0 Level group position. */ +#define PORT_INT0LVL0_bm (1<<0) /* Port Interrupt 0 Level bit 0 mask. */ +#define PORT_INT0LVL0_bp 0 /* Port Interrupt 0 Level bit 0 position. */ +#define PORT_INT0LVL1_bm (1<<1) /* Port Interrupt 0 Level bit 1 mask. */ +#define PORT_INT0LVL1_bp 1 /* Port Interrupt 0 Level bit 1 position. */ + + +/* PORT.INTFLAGS bit masks and bit positions */ +#define PORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define PORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define PORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define PORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.PIN0CTRL bit masks and bit positions */ +#define PORT_SRLEN_bm 0x80 /* Slew Rate Enable bit mask. */ +#define PORT_SRLEN_bp 7 /* Slew Rate Enable bit position. */ + +#define PORT_INVEN_bm 0x40 /* Inverted I/O Enable bit mask. */ +#define PORT_INVEN_bp 6 /* Inverted I/O Enable bit position. */ + +#define PORT_OPC_gm 0x38 /* Output/Pull Configuration group mask. */ +#define PORT_OPC_gp 3 /* Output/Pull Configuration group position. */ +#define PORT_OPC0_bm (1<<3) /* Output/Pull Configuration bit 0 mask. */ +#define PORT_OPC0_bp 3 /* Output/Pull Configuration bit 0 position. */ +#define PORT_OPC1_bm (1<<4) /* Output/Pull Configuration bit 1 mask. */ +#define PORT_OPC1_bp 4 /* Output/Pull Configuration bit 1 position. */ +#define PORT_OPC2_bm (1<<5) /* Output/Pull Configuration bit 2 mask. */ +#define PORT_OPC2_bp 5 /* Output/Pull Configuration bit 2 position. */ + +#define PORT_ISC_gm 0x07 /* Input/Sense Configuration group mask. */ +#define PORT_ISC_gp 0 /* Input/Sense Configuration group position. */ +#define PORT_ISC0_bm (1<<0) /* Input/Sense Configuration bit 0 mask. */ +#define PORT_ISC0_bp 0 /* Input/Sense Configuration bit 0 position. */ +#define PORT_ISC1_bm (1<<1) /* Input/Sense Configuration bit 1 mask. */ +#define PORT_ISC1_bp 1 /* Input/Sense Configuration bit 1 position. */ +#define PORT_ISC2_bm (1<<2) /* Input/Sense Configuration bit 2 mask. */ +#define PORT_ISC2_bp 2 /* Input/Sense Configuration bit 2 position. */ + + +/* PORT.PIN1CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN2CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN3CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN4CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN5CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN6CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN7CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* TC - 16-bit Timer/Counter With PWM */ +/* TC0.CTRLA bit masks and bit positions */ +#define TC0_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC0_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC0_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC0_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC0_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC0_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC0_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC0_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC0_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC0_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC0.CTRLB bit masks and bit positions */ +#define TC0_CCDEN_bm 0x80 /* Compare or Capture D Enable bit mask. */ +#define TC0_CCDEN_bp 7 /* Compare or Capture D Enable bit position. */ + +#define TC0_CCCEN_bm 0x40 /* Compare or Capture C Enable bit mask. */ +#define TC0_CCCEN_bp 6 /* Compare or Capture C Enable bit position. */ + +#define TC0_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC0_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC0_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC0_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC0_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC0_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC0_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC0_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC0_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC0_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC0_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC0_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC0.CTRLC bit masks and bit positions */ +#define TC0_CMPD_bm 0x08 /* Compare D Output Value bit mask. */ +#define TC0_CMPD_bp 3 /* Compare D Output Value bit position. */ + +#define TC0_CMPC_bm 0x04 /* Compare C Output Value bit mask. */ +#define TC0_CMPC_bp 2 /* Compare C Output Value bit position. */ + +#define TC0_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC0_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC0_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC0_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC0.CTRLD bit masks and bit positions */ +#define TC0_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC0_EVACT_gp 5 /* Event Action group position. */ +#define TC0_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC0_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC0_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC0_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC0_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC0_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC0_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC0_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC0_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC0_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC0_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC0_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC0_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC0_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC0_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC0_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC0_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC0_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC0.CTRLE bit masks and bit positions */ +#define TC0_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC0_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC0_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC0_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC0.INTCTRLA bit masks and bit positions */ +#define TC0_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC0_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC0_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC0_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC0_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC0_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC0_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC0_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC0_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC0_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC0_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC0_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC0.INTCTRLB bit masks and bit positions */ +#define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ +#define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ +#define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ +#define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ +#define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ +#define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ + +#define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ +#define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ +#define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ +#define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ +#define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ +#define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ + +#define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC0.CTRLFCLR bit masks and bit positions */ +#define TC0_CMD_gm 0x0C /* Command group mask. */ +#define TC0_CMD_gp 2 /* Command group position. */ +#define TC0_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC0_CMD0_bp 2 /* Command bit 0 position. */ +#define TC0_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC0_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC0_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC0_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC0_DIR_bm 0x01 /* Direction bit mask. */ +#define TC0_DIR_bp 0 /* Direction bit position. */ + + +/* TC0.CTRLFSET bit masks and bit positions */ +/* TC0_CMD_gm Predefined. */ +/* TC0_CMD_gp Predefined. */ +/* TC0_CMD0_bm Predefined. */ +/* TC0_CMD0_bp Predefined. */ +/* TC0_CMD1_bm Predefined. */ +/* TC0_CMD1_bp Predefined. */ + +/* TC0_LUPD_bm Predefined. */ +/* TC0_LUPD_bp Predefined. */ + +/* TC0_DIR_bm Predefined. */ +/* TC0_DIR_bp Predefined. */ + + +/* TC0.CTRLGCLR bit masks and bit positions */ +#define TC0_CCDBV_bm 0x10 /* Compare or Capture D Buffer Valid bit mask. */ +#define TC0_CCDBV_bp 4 /* Compare or Capture D Buffer Valid bit position. */ + +#define TC0_CCCBV_bm 0x08 /* Compare or Capture C Buffer Valid bit mask. */ +#define TC0_CCCBV_bp 3 /* Compare or Capture C Buffer Valid bit position. */ + +#define TC0_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC0_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC0_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC0_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC0_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC0_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC0.CTRLGSET bit masks and bit positions */ +/* TC0_CCDBV_bm Predefined. */ +/* TC0_CCDBV_bp Predefined. */ + +/* TC0_CCCBV_bm Predefined. */ +/* TC0_CCCBV_bp Predefined. */ + +/* TC0_CCBBV_bm Predefined. */ +/* TC0_CCBBV_bp Predefined. */ + +/* TC0_CCABV_bm Predefined. */ +/* TC0_CCABV_bp Predefined. */ + +/* TC0_PERBV_bm Predefined. */ +/* TC0_PERBV_bp Predefined. */ + + +/* TC0.INTFLAGS bit masks and bit positions */ +#define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ +#define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ + +#define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ +#define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ + +#define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC0_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC0_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* TC1.CTRLA bit masks and bit positions */ +#define TC1_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC1_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC1_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC1_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC1_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC1_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC1_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC1_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC1_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC1_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC1.CTRLB bit masks and bit positions */ +#define TC1_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC1_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC1_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC1_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC1_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC1_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC1_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC1_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC1_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC1_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC1_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC1_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC1.CTRLC bit masks and bit positions */ +#define TC1_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC1_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC1_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC1_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC1.CTRLD bit masks and bit positions */ +#define TC1_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC1_EVACT_gp 5 /* Event Action group position. */ +#define TC1_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC1_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC1_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC1_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC1_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC1_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC1_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC1_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC1_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC1_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC1_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC1_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC1_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC1_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC1_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC1_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC1_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC1_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC1.CTRLE bit masks and bit positions */ +#define TC1_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC1_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC1_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC1_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC1.INTCTRLA bit masks and bit positions */ +#define TC1_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC1_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC1_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC1_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC1_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC1_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC1_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC1_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC1_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC1_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC1_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC1_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC1.INTCTRLB bit masks and bit positions */ +#define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC1.CTRLFCLR bit masks and bit positions */ +#define TC1_CMD_gm 0x0C /* Command group mask. */ +#define TC1_CMD_gp 2 /* Command group position. */ +#define TC1_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC1_CMD0_bp 2 /* Command bit 0 position. */ +#define TC1_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC1_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC1_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC1_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC1_DIR_bm 0x01 /* Direction bit mask. */ +#define TC1_DIR_bp 0 /* Direction bit position. */ + + +/* TC1.CTRLFSET bit masks and bit positions */ +/* TC1_CMD_gm Predefined. */ +/* TC1_CMD_gp Predefined. */ +/* TC1_CMD0_bm Predefined. */ +/* TC1_CMD0_bp Predefined. */ +/* TC1_CMD1_bm Predefined. */ +/* TC1_CMD1_bp Predefined. */ + +/* TC1_LUPD_bm Predefined. */ +/* TC1_LUPD_bp Predefined. */ + +/* TC1_DIR_bm Predefined. */ +/* TC1_DIR_bp Predefined. */ + + +/* TC1.CTRLGCLR bit masks and bit positions */ +#define TC1_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC1_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC1_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC1_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC1_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC1_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC1.CTRLGSET bit masks and bit positions */ +/* TC1_CCBBV_bm Predefined. */ +/* TC1_CCBBV_bp Predefined. */ + +/* TC1_CCABV_bm Predefined. */ +/* TC1_CCABV_bp Predefined. */ + +/* TC1_PERBV_bm Predefined. */ +/* TC1_PERBV_bp Predefined. */ + + +/* TC1.INTFLAGS bit masks and bit positions */ +#define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC1_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC1_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* AWEX.CTRL bit masks and bit positions */ +#define AWEX_PGM_bm 0x20 /* Pattern Generation Mode bit mask. */ +#define AWEX_PGM_bp 5 /* Pattern Generation Mode bit position. */ + +#define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ +#define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ + +#define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ +#define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ + +#define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ +#define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ + +#define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ +#define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ + +#define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ +#define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ + + +/* AWEX.FDCTRL bit masks and bit positions */ +#define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ +#define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ + +#define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ +#define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ + +#define AWEX_FDACT_gm 0x03 /* Fault Detect Action group mask. */ +#define AWEX_FDACT_gp 0 /* Fault Detect Action group position. */ +#define AWEX_FDACT0_bm (1<<0) /* Fault Detect Action bit 0 mask. */ +#define AWEX_FDACT0_bp 0 /* Fault Detect Action bit 0 position. */ +#define AWEX_FDACT1_bm (1<<1) /* Fault Detect Action bit 1 mask. */ +#define AWEX_FDACT1_bp 1 /* Fault Detect Action bit 1 position. */ + + +/* AWEX.STATUS bit masks and bit positions */ +#define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ +#define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ + +#define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ +#define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ + +#define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ +#define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ + + +/* HIRES.CTRL bit masks and bit positions */ +#define HIRES_HREN_gm 0x03 /* High Resolution Enable group mask. */ +#define HIRES_HREN_gp 0 /* High Resolution Enable group position. */ +#define HIRES_HREN0_bm (1<<0) /* High Resolution Enable bit 0 mask. */ +#define HIRES_HREN0_bp 0 /* High Resolution Enable bit 0 position. */ +#define HIRES_HREN1_bm (1<<1) /* High Resolution Enable bit 1 mask. */ +#define HIRES_HREN1_bp 1 /* High Resolution Enable bit 1 position. */ + + +/* USART - Universal Asynchronous Receiver-Transmitter */ +/* USART.STATUS bit masks and bit positions */ +#define USART_RXCIF_bm 0x80 /* Receive Interrupt Flag bit mask. */ +#define USART_RXCIF_bp 7 /* Receive Interrupt Flag bit position. */ + +#define USART_TXCIF_bm 0x40 /* Transmit Interrupt Flag bit mask. */ +#define USART_TXCIF_bp 6 /* Transmit Interrupt Flag bit position. */ + +#define USART_DREIF_bm 0x20 /* Data Register Empty Flag bit mask. */ +#define USART_DREIF_bp 5 /* Data Register Empty Flag bit position. */ + +#define USART_FERR_bm 0x10 /* Frame Error bit mask. */ +#define USART_FERR_bp 4 /* Frame Error bit position. */ + +#define USART_BUFOVF_bm 0x08 /* Buffer Overflow bit mask. */ +#define USART_BUFOVF_bp 3 /* Buffer Overflow bit position. */ + +#define USART_PERR_bm 0x04 /* Parity Error bit mask. */ +#define USART_PERR_bp 2 /* Parity Error bit position. */ + +#define USART_RXB8_bm 0x01 /* Receive Bit 8 bit mask. */ +#define USART_RXB8_bp 0 /* Receive Bit 8 bit position. */ + + +/* USART.CTRLA bit masks and bit positions */ +#define USART_RXCINTLVL_gm 0x30 /* Receive Interrupt Level group mask. */ +#define USART_RXCINTLVL_gp 4 /* Receive Interrupt Level group position. */ +#define USART_RXCINTLVL0_bm (1<<4) /* Receive Interrupt Level bit 0 mask. */ +#define USART_RXCINTLVL0_bp 4 /* Receive Interrupt Level bit 0 position. */ +#define USART_RXCINTLVL1_bm (1<<5) /* Receive Interrupt Level bit 1 mask. */ +#define USART_RXCINTLVL1_bp 5 /* Receive Interrupt Level bit 1 position. */ + +#define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ +#define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ +#define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ +#define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ +#define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ +#define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ + +#define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ +#define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ +#define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ +#define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ +#define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ +#define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ + + +/* USART.CTRLB bit masks and bit positions */ +#define USART_RXEN_bm 0x10 /* Receiver Enable bit mask. */ +#define USART_RXEN_bp 4 /* Receiver Enable bit position. */ + +#define USART_TXEN_bm 0x08 /* Transmitter Enable bit mask. */ +#define USART_TXEN_bp 3 /* Transmitter Enable bit position. */ + +#define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ +#define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ + +#define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ +#define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ + +#define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ +#define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ + + +/* USART.CTRLC bit masks and bit positions */ +#define USART_CMODE_gm 0xC0 /* Communication Mode group mask. */ +#define USART_CMODE_gp 6 /* Communication Mode group position. */ +#define USART_CMODE0_bm (1<<6) /* Communication Mode bit 0 mask. */ +#define USART_CMODE0_bp 6 /* Communication Mode bit 0 position. */ +#define USART_CMODE1_bm (1<<7) /* Communication Mode bit 1 mask. */ +#define USART_CMODE1_bp 7 /* Communication Mode bit 1 position. */ + +#define USART_PMODE_gm 0x30 /* Parity Mode group mask. */ +#define USART_PMODE_gp 4 /* Parity Mode group position. */ +#define USART_PMODE0_bm (1<<4) /* Parity Mode bit 0 mask. */ +#define USART_PMODE0_bp 4 /* Parity Mode bit 0 position. */ +#define USART_PMODE1_bm (1<<5) /* Parity Mode bit 1 mask. */ +#define USART_PMODE1_bp 5 /* Parity Mode bit 1 position. */ + +#define USART_SBMODE_bm 0x08 /* Stop Bit Mode bit mask. */ +#define USART_SBMODE_bp 3 /* Stop Bit Mode bit position. */ + +#define USART_CHSIZE_gm 0x07 /* Character Size group mask. */ +#define USART_CHSIZE_gp 0 /* Character Size group position. */ +#define USART_CHSIZE0_bm (1<<0) /* Character Size bit 0 mask. */ +#define USART_CHSIZE0_bp 0 /* Character Size bit 0 position. */ +#define USART_CHSIZE1_bm (1<<1) /* Character Size bit 1 mask. */ +#define USART_CHSIZE1_bp 1 /* Character Size bit 1 position. */ +#define USART_CHSIZE2_bm (1<<2) /* Character Size bit 2 mask. */ +#define USART_CHSIZE2_bp 2 /* Character Size bit 2 position. */ + + +/* USART.BAUDCTRLA bit masks and bit positions */ +#define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ +#define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ +#define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ +#define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ +#define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ +#define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ +#define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ +#define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ +#define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ +#define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ +#define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ +#define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ +#define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ +#define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ +#define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ +#define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ +#define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ +#define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ + + +/* USART.BAUDCTRLB bit masks and bit positions */ +#define USART_BSCALE_gm 0xF0 /* Baud Rate Scale group mask. */ +#define USART_BSCALE_gp 4 /* Baud Rate Scale group position. */ +#define USART_BSCALE0_bm (1<<4) /* Baud Rate Scale bit 0 mask. */ +#define USART_BSCALE0_bp 4 /* Baud Rate Scale bit 0 position. */ +#define USART_BSCALE1_bm (1<<5) /* Baud Rate Scale bit 1 mask. */ +#define USART_BSCALE1_bp 5 /* Baud Rate Scale bit 1 position. */ +#define USART_BSCALE2_bm (1<<6) /* Baud Rate Scale bit 2 mask. */ +#define USART_BSCALE2_bp 6 /* Baud Rate Scale bit 2 position. */ +#define USART_BSCALE3_bm (1<<7) /* Baud Rate Scale bit 3 mask. */ +#define USART_BSCALE3_bp 7 /* Baud Rate Scale bit 3 position. */ + +/* USART_BSEL_gm Predefined. */ +/* USART_BSEL_gp Predefined. */ +/* USART_BSEL0_bm Predefined. */ +/* USART_BSEL0_bp Predefined. */ +/* USART_BSEL1_bm Predefined. */ +/* USART_BSEL1_bp Predefined. */ +/* USART_BSEL2_bm Predefined. */ +/* USART_BSEL2_bp Predefined. */ +/* USART_BSEL3_bm Predefined. */ +/* USART_BSEL3_bp Predefined. */ + + +/* SPI - Serial Peripheral Interface */ +/* SPI.CTRL bit masks and bit positions */ +#define SPI_CLK2X_bm 0x80 /* Enable Double Speed bit mask. */ +#define SPI_CLK2X_bp 7 /* Enable Double Speed bit position. */ + +#define SPI_ENABLE_bm 0x40 /* Enable Module bit mask. */ +#define SPI_ENABLE_bp 6 /* Enable Module bit position. */ + +#define SPI_DORD_bm 0x20 /* Data Order Setting bit mask. */ +#define SPI_DORD_bp 5 /* Data Order Setting bit position. */ + +#define SPI_MASTER_bm 0x10 /* Master Operation Enable bit mask. */ +#define SPI_MASTER_bp 4 /* Master Operation Enable bit position. */ + +#define SPI_MODE_gm 0x0C /* SPI Mode group mask. */ +#define SPI_MODE_gp 2 /* SPI Mode group position. */ +#define SPI_MODE0_bm (1<<2) /* SPI Mode bit 0 mask. */ +#define SPI_MODE0_bp 2 /* SPI Mode bit 0 position. */ +#define SPI_MODE1_bm (1<<3) /* SPI Mode bit 1 mask. */ +#define SPI_MODE1_bp 3 /* SPI Mode bit 1 position. */ + +#define SPI_PRESCALER_gm 0x03 /* Prescaler group mask. */ +#define SPI_PRESCALER_gp 0 /* Prescaler group position. */ +#define SPI_PRESCALER0_bm (1<<0) /* Prescaler bit 0 mask. */ +#define SPI_PRESCALER0_bp 0 /* Prescaler bit 0 position. */ +#define SPI_PRESCALER1_bm (1<<1) /* Prescaler bit 1 mask. */ +#define SPI_PRESCALER1_bp 1 /* Prescaler bit 1 position. */ + + +/* SPI.INTCTRL bit masks and bit positions */ +#define SPI_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define SPI_INTLVL_gp 0 /* Interrupt level group position. */ +#define SPI_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define SPI_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define SPI_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define SPI_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + +/* SPI.STATUS bit masks and bit positions */ +#define SPI_IF_bm 0x80 /* Interrupt Flag bit mask. */ +#define SPI_IF_bp 7 /* Interrupt Flag bit position. */ + +#define SPI_WRCOL_bm 0x40 /* Write Collision bit mask. */ +#define SPI_WRCOL_bp 6 /* Write Collision bit position. */ + + +/* IRCOM - IR Communication Module */ +/* IRCOM.CTRL bit masks and bit positions */ +#define IRCOM_EVSEL_gm 0x0F /* Event Channel Select group mask. */ +#define IRCOM_EVSEL_gp 0 /* Event Channel Select group position. */ +#define IRCOM_EVSEL0_bm (1<<0) /* Event Channel Select bit 0 mask. */ +#define IRCOM_EVSEL0_bp 0 /* Event Channel Select bit 0 position. */ +#define IRCOM_EVSEL1_bm (1<<1) /* Event Channel Select bit 1 mask. */ +#define IRCOM_EVSEL1_bp 1 /* Event Channel Select bit 1 position. */ +#define IRCOM_EVSEL2_bm (1<<2) /* Event Channel Select bit 2 mask. */ +#define IRCOM_EVSEL2_bp 2 /* Event Channel Select bit 2 position. */ +#define IRCOM_EVSEL3_bm (1<<3) /* Event Channel Select bit 3 mask. */ +#define IRCOM_EVSEL3_bp 3 /* Event Channel Select bit 3 position. */ + + +/* AES - AES Module */ +/* AES.CTRL bit masks and bit positions */ +#define AES_START_bm 0x80 /* Start/Run bit mask. */ +#define AES_START_bp 7 /* Start/Run bit position. */ + +#define AES_AUTO_bm 0x40 /* Auto Start Trigger bit mask. */ +#define AES_AUTO_bp 6 /* Auto Start Trigger bit position. */ + +#define AES_RESET_bm 0x20 /* AES Software Reset bit mask. */ +#define AES_RESET_bp 5 /* AES Software Reset bit position. */ + +#define AES_DECRYPT_bm 0x10 /* Decryption / Direction bit mask. */ +#define AES_DECRYPT_bp 4 /* Decryption / Direction bit position. */ + +#define AES_XOR_bm 0x04 /* State XOR Load Enable bit mask. */ +#define AES_XOR_bp 2 /* State XOR Load Enable bit position. */ + + +/* AES.STATUS bit masks and bit positions */ +#define AES_ERROR_bm 0x80 /* AES Error bit mask. */ +#define AES_ERROR_bp 7 /* AES Error bit position. */ + +#define AES_SRIF_bm 0x01 /* State Ready Interrupt Flag bit mask. */ +#define AES_SRIF_bp 0 /* State Ready Interrupt Flag bit position. */ + + +/* AES.INTCTRL bit masks and bit positions */ +#define AES_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define AES_INTLVL_gp 0 /* Interrupt level group position. */ +#define AES_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define AES_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define AES_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define AES_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + + +// Generic Port Pins + +#define PIN0_bm 0x01 +#define PIN0_bp 0 +#define PIN1_bm 0x02 +#define PIN1_bp 1 +#define PIN2_bm 0x04 +#define PIN2_bp 2 +#define PIN3_bm 0x08 +#define PIN3_bp 3 +#define PIN4_bm 0x10 +#define PIN4_bp 4 +#define PIN5_bm 0x20 +#define PIN5_bp 5 +#define PIN6_bm 0x40 +#define PIN6_bp 6 +#define PIN7_bm 0x80 +#define PIN7_bp 7 + + +/* ========== Interrupt Vector Definitions ========== */ +/* Vector 0 is the reset vector */ + +/* OSC interrupt vectors */ +#define OSC_XOSCF_vect_num 1 +#define OSC_XOSCF_vect _VECTOR(1) /* External Oscillator Failure Interrupt (NMI) */ + +/* PORTC interrupt vectors */ +#define PORTC_INT0_vect_num 2 +#define PORTC_INT0_vect _VECTOR(2) /* External Interrupt 0 */ +#define PORTC_INT1_vect_num 3 +#define PORTC_INT1_vect _VECTOR(3) /* External Interrupt 1 */ + +/* PORTR interrupt vectors */ +#define PORTR_INT0_vect_num 4 +#define PORTR_INT0_vect _VECTOR(4) /* External Interrupt 0 */ +#define PORTR_INT1_vect_num 5 +#define PORTR_INT1_vect _VECTOR(5) /* External Interrupt 1 */ + +/* DMA interrupt vectors */ +#define DMA_CH0_vect_num 6 +#define DMA_CH0_vect _VECTOR(6) /* Channel 0 Interrupt */ +#define DMA_CH1_vect_num 7 +#define DMA_CH1_vect _VECTOR(7) /* Channel 1 Interrupt */ +#define DMA_CH2_vect_num 8 +#define DMA_CH2_vect _VECTOR(8) /* Channel 2 Interrupt */ +#define DMA_CH3_vect_num 9 +#define DMA_CH3_vect _VECTOR(9) /* Channel 3 Interrupt */ + +/* RTC interrupt vectors */ +#define RTC_OVF_vect_num 10 +#define RTC_OVF_vect _VECTOR(10) /* Overflow Interrupt */ +#define RTC_COMP_vect_num 11 +#define RTC_COMP_vect _VECTOR(11) /* Compare Interrupt */ + +/* TWIC interrupt vectors */ +#define TWIC_TWIS_vect_num 12 +#define TWIC_TWIS_vect _VECTOR(12) /* TWI Slave Interrupt */ +#define TWIC_TWIM_vect_num 13 +#define TWIC_TWIM_vect _VECTOR(13) /* TWI Master Interrupt */ + +/* TCC0 interrupt vectors */ +#define TCC0_OVF_vect_num 14 +#define TCC0_OVF_vect _VECTOR(14) /* Overflow Interrupt */ +#define TCC0_ERR_vect_num 15 +#define TCC0_ERR_vect _VECTOR(15) /* Error Interrupt */ +#define TCC0_CCA_vect_num 16 +#define TCC0_CCA_vect _VECTOR(16) /* Compare or Capture A Interrupt */ +#define TCC0_CCB_vect_num 17 +#define TCC0_CCB_vect _VECTOR(17) /* Compare or Capture B Interrupt */ +#define TCC0_CCC_vect_num 18 +#define TCC0_CCC_vect _VECTOR(18) /* Compare or Capture C Interrupt */ +#define TCC0_CCD_vect_num 19 +#define TCC0_CCD_vect _VECTOR(19) /* Compare or Capture D Interrupt */ + +/* TCC1 interrupt vectors */ +#define TCC1_OVF_vect_num 20 +#define TCC1_OVF_vect _VECTOR(20) /* Overflow Interrupt */ +#define TCC1_ERR_vect_num 21 +#define TCC1_ERR_vect _VECTOR(21) /* Error Interrupt */ +#define TCC1_CCA_vect_num 22 +#define TCC1_CCA_vect _VECTOR(22) /* Compare or Capture A Interrupt */ +#define TCC1_CCB_vect_num 23 +#define TCC1_CCB_vect _VECTOR(23) /* Compare or Capture B Interrupt */ + +/* SPIC interrupt vectors */ +#define SPIC_INT_vect_num 24 +#define SPIC_INT_vect _VECTOR(24) /* SPI Interrupt */ + +/* USARTC0 interrupt vectors */ +#define USARTC0_RXC_vect_num 25 +#define USARTC0_RXC_vect _VECTOR(25) /* Reception Complete Interrupt */ +#define USARTC0_DRE_vect_num 26 +#define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ +#define USARTC0_TXC_vect_num 27 +#define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ + +/* USARTC1 interrupt vectors */ +#define USARTC1_RXC_vect_num 28 +#define USARTC1_RXC_vect _VECTOR(28) /* Reception Complete Interrupt */ +#define USARTC1_DRE_vect_num 29 +#define USARTC1_DRE_vect _VECTOR(29) /* Data Register Empty Interrupt */ +#define USARTC1_TXC_vect_num 30 +#define USARTC1_TXC_vect _VECTOR(30) /* Transmission Complete Interrupt */ + +/* AES interrupt vectors */ +#define AES_INT_vect_num 31 +#define AES_INT_vect _VECTOR(31) /* AES Interrupt */ + +/* NVM interrupt vectors */ +#define NVM_EE_vect_num 32 +#define NVM_EE_vect _VECTOR(32) /* EE Interrupt */ +#define NVM_SPM_vect_num 33 +#define NVM_SPM_vect _VECTOR(33) /* SPM Interrupt */ + +/* PORTB interrupt vectors */ +#define PORTB_INT0_vect_num 34 +#define PORTB_INT0_vect _VECTOR(34) /* External Interrupt 0 */ +#define PORTB_INT1_vect_num 35 +#define PORTB_INT1_vect _VECTOR(35) /* External Interrupt 1 */ + +/* ACB interrupt vectors */ +#define ACB_AC0_vect_num 36 +#define ACB_AC0_vect _VECTOR(36) /* AC0 Interrupt */ +#define ACB_AC1_vect_num 37 +#define ACB_AC1_vect _VECTOR(37) /* AC1 Interrupt */ +#define ACB_ACW_vect_num 38 +#define ACB_ACW_vect _VECTOR(38) /* ACW Window Mode Interrupt */ + +/* ADCB interrupt vectors */ +#define ADCB_CH0_vect_num 39 +#define ADCB_CH0_vect _VECTOR(39) /* Interrupt 0 */ +#define ADCB_CH1_vect_num 40 +#define ADCB_CH1_vect _VECTOR(40) /* Interrupt 1 */ +#define ADCB_CH2_vect_num 41 +#define ADCB_CH2_vect _VECTOR(41) /* Interrupt 2 */ +#define ADCB_CH3_vect_num 42 +#define ADCB_CH3_vect _VECTOR(42) /* Interrupt 3 */ + +/* PORTE interrupt vectors */ +#define PORTE_INT0_vect_num 43 +#define PORTE_INT0_vect _VECTOR(43) /* External Interrupt 0 */ +#define PORTE_INT1_vect_num 44 +#define PORTE_INT1_vect _VECTOR(44) /* External Interrupt 1 */ + +/* TWIE interrupt vectors */ +#define TWIE_TWIS_vect_num 45 +#define TWIE_TWIS_vect _VECTOR(45) /* TWI Slave Interrupt */ +#define TWIE_TWIM_vect_num 46 +#define TWIE_TWIM_vect _VECTOR(46) /* TWI Master Interrupt */ + +/* TCE0 interrupt vectors */ +#define TCE0_OVF_vect_num 47 +#define TCE0_OVF_vect _VECTOR(47) /* Overflow Interrupt */ +#define TCE0_ERR_vect_num 48 +#define TCE0_ERR_vect _VECTOR(48) /* Error Interrupt */ +#define TCE0_CCA_vect_num 49 +#define TCE0_CCA_vect _VECTOR(49) /* Compare or Capture A Interrupt */ +#define TCE0_CCB_vect_num 50 +#define TCE0_CCB_vect _VECTOR(50) /* Compare or Capture B Interrupt */ +#define TCE0_CCC_vect_num 51 +#define TCE0_CCC_vect _VECTOR(51) /* Compare or Capture C Interrupt */ +#define TCE0_CCD_vect_num 52 +#define TCE0_CCD_vect _VECTOR(52) /* Compare or Capture D Interrupt */ + +/* TCE1 interrupt vectors */ +#define TCE1_OVF_vect_num 53 +#define TCE1_OVF_vect _VECTOR(53) /* Overflow Interrupt */ +#define TCE1_ERR_vect_num 54 +#define TCE1_ERR_vect _VECTOR(54) /* Error Interrupt */ +#define TCE1_CCA_vect_num 55 +#define TCE1_CCA_vect _VECTOR(55) /* Compare or Capture A Interrupt */ +#define TCE1_CCB_vect_num 56 +#define TCE1_CCB_vect _VECTOR(56) /* Compare or Capture B Interrupt */ + +/* SPIE interrupt vectors */ +#define SPIE_INT_vect_num 57 +#define SPIE_INT_vect _VECTOR(57) /* SPI Interrupt */ + +/* USARTE0 interrupt vectors */ +#define USARTE0_RXC_vect_num 58 +#define USARTE0_RXC_vect _VECTOR(58) /* Reception Complete Interrupt */ +#define USARTE0_DRE_vect_num 59 +#define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ +#define USARTE0_TXC_vect_num 60 +#define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ + +/* USARTE1 interrupt vectors */ +#define USARTE1_RXC_vect_num 61 +#define USARTE1_RXC_vect _VECTOR(61) /* Reception Complete Interrupt */ +#define USARTE1_DRE_vect_num 62 +#define USARTE1_DRE_vect _VECTOR(62) /* Data Register Empty Interrupt */ +#define USARTE1_TXC_vect_num 63 +#define USARTE1_TXC_vect _VECTOR(63) /* Transmission Complete Interrupt */ + +/* PORTD interrupt vectors */ +#define PORTD_INT0_vect_num 64 +#define PORTD_INT0_vect _VECTOR(64) /* External Interrupt 0 */ +#define PORTD_INT1_vect_num 65 +#define PORTD_INT1_vect _VECTOR(65) /* External Interrupt 1 */ + +/* PORTA interrupt vectors */ +#define PORTA_INT0_vect_num 66 +#define PORTA_INT0_vect _VECTOR(66) /* External Interrupt 0 */ +#define PORTA_INT1_vect_num 67 +#define PORTA_INT1_vect _VECTOR(67) /* External Interrupt 1 */ + +/* ACA interrupt vectors */ +#define ACA_AC0_vect_num 68 +#define ACA_AC0_vect _VECTOR(68) /* AC0 Interrupt */ +#define ACA_AC1_vect_num 69 +#define ACA_AC1_vect _VECTOR(69) /* AC1 Interrupt */ +#define ACA_ACW_vect_num 70 +#define ACA_ACW_vect _VECTOR(70) /* ACW Window Mode Interrupt */ + +/* ADCA interrupt vectors */ +#define ADCA_CH0_vect_num 71 +#define ADCA_CH0_vect _VECTOR(71) /* Interrupt 0 */ +#define ADCA_CH1_vect_num 72 +#define ADCA_CH1_vect _VECTOR(72) /* Interrupt 1 */ +#define ADCA_CH2_vect_num 73 +#define ADCA_CH2_vect _VECTOR(73) /* Interrupt 2 */ +#define ADCA_CH3_vect_num 74 +#define ADCA_CH3_vect _VECTOR(74) /* Interrupt 3 */ + +/* TWID interrupt vectors */ +#define TWID_TWIS_vect_num 75 +#define TWID_TWIS_vect _VECTOR(75) /* TWI Slave Interrupt */ +#define TWID_TWIM_vect_num 76 +#define TWID_TWIM_vect _VECTOR(76) /* TWI Master Interrupt */ + +/* TCD0 interrupt vectors */ +#define TCD0_OVF_vect_num 77 +#define TCD0_OVF_vect _VECTOR(77) /* Overflow Interrupt */ +#define TCD0_ERR_vect_num 78 +#define TCD0_ERR_vect _VECTOR(78) /* Error Interrupt */ +#define TCD0_CCA_vect_num 79 +#define TCD0_CCA_vect _VECTOR(79) /* Compare or Capture A Interrupt */ +#define TCD0_CCB_vect_num 80 +#define TCD0_CCB_vect _VECTOR(80) /* Compare or Capture B Interrupt */ +#define TCD0_CCC_vect_num 81 +#define TCD0_CCC_vect _VECTOR(81) /* Compare or Capture C Interrupt */ +#define TCD0_CCD_vect_num 82 +#define TCD0_CCD_vect _VECTOR(82) /* Compare or Capture D Interrupt */ + +/* TCD1 interrupt vectors */ +#define TCD1_OVF_vect_num 83 +#define TCD1_OVF_vect _VECTOR(83) /* Overflow Interrupt */ +#define TCD1_ERR_vect_num 84 +#define TCD1_ERR_vect _VECTOR(84) /* Error Interrupt */ +#define TCD1_CCA_vect_num 85 +#define TCD1_CCA_vect _VECTOR(85) /* Compare or Capture A Interrupt */ +#define TCD1_CCB_vect_num 86 +#define TCD1_CCB_vect _VECTOR(86) /* Compare or Capture B Interrupt */ + +/* SPID interrupt vectors */ +#define SPID_INT_vect_num 87 +#define SPID_INT_vect _VECTOR(87) /* SPI Interrupt */ + +/* USARTD0 interrupt vectors */ +#define USARTD0_RXC_vect_num 88 +#define USARTD0_RXC_vect _VECTOR(88) /* Reception Complete Interrupt */ +#define USARTD0_DRE_vect_num 89 +#define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ +#define USARTD0_TXC_vect_num 90 +#define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ + +/* USARTD1 interrupt vectors */ +#define USARTD1_RXC_vect_num 91 +#define USARTD1_RXC_vect _VECTOR(91) /* Reception Complete Interrupt */ +#define USARTD1_DRE_vect_num 92 +#define USARTD1_DRE_vect _VECTOR(92) /* Data Register Empty Interrupt */ +#define USARTD1_TXC_vect_num 93 +#define USARTD1_TXC_vect _VECTOR(93) /* Transmission Complete Interrupt */ + +/* PORTQ interrupt vectors */ +#define PORTQ_INT0_vect_num 94 +#define PORTQ_INT0_vect _VECTOR(94) /* External Interrupt 0 */ +#define PORTQ_INT1_vect_num 95 +#define PORTQ_INT1_vect _VECTOR(95) /* External Interrupt 1 */ + +/* PORTH interrupt vectors */ +#define PORTH_INT0_vect_num 96 +#define PORTH_INT0_vect _VECTOR(96) /* External Interrupt 0 */ +#define PORTH_INT1_vect_num 97 +#define PORTH_INT1_vect _VECTOR(97) /* External Interrupt 1 */ + +/* PORTJ interrupt vectors */ +#define PORTJ_INT0_vect_num 98 +#define PORTJ_INT0_vect _VECTOR(98) /* External Interrupt 0 */ +#define PORTJ_INT1_vect_num 99 +#define PORTJ_INT1_vect _VECTOR(99) /* External Interrupt 1 */ + +/* PORTK interrupt vectors */ +#define PORTK_INT0_vect_num 100 +#define PORTK_INT0_vect _VECTOR(100) /* External Interrupt 0 */ +#define PORTK_INT1_vect_num 101 +#define PORTK_INT1_vect _VECTOR(101) /* External Interrupt 1 */ + +/* PORTF interrupt vectors */ +#define PORTF_INT0_vect_num 104 +#define PORTF_INT0_vect _VECTOR(104) /* External Interrupt 0 */ +#define PORTF_INT1_vect_num 105 +#define PORTF_INT1_vect _VECTOR(105) /* External Interrupt 1 */ + +/* TWIF interrupt vectors */ +#define TWIF_TWIS_vect_num 106 +#define TWIF_TWIS_vect _VECTOR(106) /* TWI Slave Interrupt */ +#define TWIF_TWIM_vect_num 107 +#define TWIF_TWIM_vect _VECTOR(107) /* TWI Master Interrupt */ + +/* TCF0 interrupt vectors */ +#define TCF0_OVF_vect_num 108 +#define TCF0_OVF_vect _VECTOR(108) /* Overflow Interrupt */ +#define TCF0_ERR_vect_num 109 +#define TCF0_ERR_vect _VECTOR(109) /* Error Interrupt */ +#define TCF0_CCA_vect_num 110 +#define TCF0_CCA_vect _VECTOR(110) /* Compare or Capture A Interrupt */ +#define TCF0_CCB_vect_num 111 +#define TCF0_CCB_vect _VECTOR(111) /* Compare or Capture B Interrupt */ +#define TCF0_CCC_vect_num 112 +#define TCF0_CCC_vect _VECTOR(112) /* Compare or Capture C Interrupt */ +#define TCF0_CCD_vect_num 113 +#define TCF0_CCD_vect _VECTOR(113) /* Compare or Capture D Interrupt */ + +/* TCF1 interrupt vectors */ +#define TCF1_OVF_vect_num 114 +#define TCF1_OVF_vect _VECTOR(114) /* Overflow Interrupt */ +#define TCF1_ERR_vect_num 115 +#define TCF1_ERR_vect _VECTOR(115) /* Error Interrupt */ +#define TCF1_CCA_vect_num 116 +#define TCF1_CCA_vect _VECTOR(116) /* Compare or Capture A Interrupt */ +#define TCF1_CCB_vect_num 117 +#define TCF1_CCB_vect _VECTOR(117) /* Compare or Capture B Interrupt */ + +/* SPIF interrupt vectors */ +#define SPIF_INT_vect_num 118 +#define SPIF_INT_vect _VECTOR(118) /* SPI Interrupt */ + +/* USARTF0 interrupt vectors */ +#define USARTF0_RXC_vect_num 119 +#define USARTF0_RXC_vect _VECTOR(119) /* Reception Complete Interrupt */ +#define USARTF0_DRE_vect_num 120 +#define USARTF0_DRE_vect _VECTOR(120) /* Data Register Empty Interrupt */ +#define USARTF0_TXC_vect_num 121 +#define USARTF0_TXC_vect _VECTOR(121) /* Transmission Complete Interrupt */ + +/* USARTF1 interrupt vectors */ +#define USARTF1_RXC_vect_num 122 +#define USARTF1_RXC_vect _VECTOR(122) /* Reception Complete Interrupt */ +#define USARTF1_DRE_vect_num 123 +#define USARTF1_DRE_vect _VECTOR(123) /* Data Register Empty Interrupt */ +#define USARTF1_TXC_vect_num 124 +#define USARTF1_TXC_vect _VECTOR(124) /* Transmission Complete Interrupt */ + + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (125 * _VECTOR_SIZE) + + +/* ========== Constants ========== */ + +#define PROGMEM_START (0x0000) +#define PROGMEM_SIZE (139264) +#define PROGMEM_END (PROGMEM_START + PROGMEM_SIZE - 1) + +#define APP_SECTION_START (0x0000) +#define APP_SECTION_SIZE (131072) +#define APP_SECTION_END (APP_SECTION_START + APP_SECTION_SIZE - 1) + +#define APPTABLE_SECTION_START (0x1E000) +#define APPTABLE_SECTION_SIZE (8192) +#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) + +#define BOOT_SECTION_START (0x20000) +#define BOOT_SECTION_SIZE (8192) +#define BOOT_SECTION_END (BOOT_SECTION_START + BOOT_SECTION_SIZE - 1) + +#define DATAMEM_START (0x0000) +#define DATAMEM_SIZE (16777216) +#define DATAMEM_END (DATAMEM_START + DATAMEM_SIZE - 1) + +#define IO_START (0x0000) +#define IO_SIZE (4096) +#define IO_END (IO_START + IO_SIZE - 1) + +#define MAPPED_EEPROM_START (0x1000) +#define MAPPED_EEPROM_SIZE (2048) +#define MAPPED_EEPROM_END (MAPPED_EEPROM_START + MAPPED_EEPROM_SIZE - 1) + +#define INTERNAL_SRAM_START (0x2000) +#define INTERNAL_SRAM_SIZE (8192) +#define INTERNAL_SRAM_END (INTERNAL_SRAM_START + INTERNAL_SRAM_SIZE - 1) + +#define EXTERNAL_SRAM_START (0x4000) +#define EXTERNAL_SRAM_SIZE (16760832) +#define EXTERNAL_SRAM_END (EXTERNAL_SRAM_START + EXTERNAL_SRAM_SIZE - 1) + +#define EEPROM_START (0x0000) +#define EEPROM_SIZE (2048) +#define EEPROM_END (EEPROM_START + EEPROM_SIZE - 1) + +#define FUSE_START (0x0000) +#define FUSE_SIZE (6) +#define FUSE_END (FUSE_START + FUSE_SIZE - 1) + +#define LOCKBIT_START (0x0000) +#define LOCKBIT_SIZE (1) +#define LOCKBIT_END (LOCKBIT_START + LOCKBIT_SIZE - 1) + +#define SIGNATURES_START (0x0000) +#define SIGNATURES_SIZE (3) +#define SIGNATURES_END (SIGNATURES_START + SIGNATURES_SIZE - 1) + +#define USER_SIGNATURES_START (0x0000) +#define USER_SIGNATURES_SIZE (512) +#define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) + +#define PROD_SIGNATURES_START (0x0000) +#define PROD_SIGNATURES_SIZE (52) +#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) + +#define FLASHEND PROGMEM_END +#define SPM_PAGESIZE PROGMEM_PAGE_SIZE +#define RAMSTART INTERNAL_SRAM_START +#define RAMSIZE INTERNAL_SRAM_SIZE +#define RAMEND INTERNAL_SRAM_END +#define XRAMSTART EXTERNAL_SRAM_START +#define XRAMSIZE EXTERNAL_SRAM_SIZE +#define XRAMEND EXTERNAL_SRAM_END +#define E2END EEPROM_END +#define E2PAGESIZE EEPROM_PAGE_SIZE + + +/* ========== Fuses ========== */ +#define FUSE_MEMORY_SIZE 6 + +/* Fuse Byte 0 */ +#define FUSE_JTAGUSERID0 ~_BV(0) /* JTAG User ID Bit 0 */ +#define FUSE_JTAGUSERID1 ~_BV(1) /* JTAG User ID Bit 1 */ +#define FUSE_JTAGUSERID2 ~_BV(2) /* JTAG User ID Bit 2 */ +#define FUSE_JTAGUSERID3 ~_BV(3) /* JTAG User ID Bit 3 */ +#define FUSE_JTAGUSERID4 ~_BV(4) /* JTAG User ID Bit 4 */ +#define FUSE_JTAGUSERID5 ~_BV(5) /* JTAG User ID Bit 5 */ +#define FUSE_JTAGUSERID6 ~_BV(6) /* JTAG User ID Bit 6 */ +#define FUSE_JTAGUSERID7 ~_BV(7) /* JTAG User ID Bit 7 */ +#define FUSE0_DEFAULT (0xFF) + +/* Fuse Byte 1 */ +#define FUSE_WDP0 ~_BV(0) /* Watchdog Timeout Period Bit 0 */ +#define FUSE_WDP1 ~_BV(1) /* Watchdog Timeout Period Bit 1 */ +#define FUSE_WDP2 ~_BV(2) /* Watchdog Timeout Period Bit 2 */ +#define FUSE_WDP3 ~_BV(3) /* Watchdog Timeout Period Bit 3 */ +#define FUSE_WDWP0 ~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ +#define FUSE_WDWP1 ~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ +#define FUSE_WDWP2 ~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ +#define FUSE_WDWP3 ~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ +#define FUSE1_DEFAULT (0xFF) + +/* Fuse Byte 2 */ +#define FUSE_BODPD0 ~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ +#define FUSE_BODPD1 ~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ +#define FUSE_BODACT0 ~_BV(2) /* BOD Operation in Active Mode Bit 0 */ +#define FUSE_BODACT1 ~_BV(3) /* BOD Operation in Active Mode Bit 1 */ +#define FUSE_BOOTRST ~_BV(6) /* Boot Loader Section Reset Vector */ +#define FUSE_DVSDON ~_BV(7) /* Spike Detector Enable */ +#define FUSE2_DEFAULT (0xFF) + +/* Fuse Byte 3 Reserved */ + +/* Fuse Byte 4 */ +#define FUSE_JTAGEN ~_BV(0) /* JTAG Interface Enable */ +#define FUSE_WDLOCK ~_BV(1) /* Watchdog Timer Lock */ +#define FUSE_SUT0 ~_BV(2) /* Start-up Time Bit 0 */ +#define FUSE_SUT1 ~_BV(3) /* Start-up Time Bit 1 */ +#define FUSE4_DEFAULT (0xFF) + +/* Fuse Byte 5 */ +#define FUSE_BODLVL0 ~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ +#define FUSE_BODLVL1 ~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ +#define FUSE_BODLVL2 ~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ +#define FUSE_EESAVE ~_BV(3) /* Preserve EEPROM Through Chip Erase */ +#define FUSE5_DEFAULT (0xFF) + + +/* ========== Lock Bits ========== */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_BITS_EXIST +#define __BOOT_LOCK_BOOT_BITS_EXIST + + +/* ========== Signature ========== */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x4C + + +#endif /* _AVR_ATxmega128A1_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox128a3.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox128a3.h new file mode 100644 index 0000000..5c5f59b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox128a3.h @@ -0,0 +1,6852 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iox128a3.h,v 1.1.2.4 2008/11/03 04:13:15 arcanum Exp $ */ + +/* avr/iox128a3.h - definitions for ATxmega128A3 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iox128a3.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATxmega128A3_H_ +#define _AVR_ATxmega128A3_H_ 1 + + +/* Ungrouped common registers */ +#define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ +#define GPIO1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ +#define GPIO2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ +#define GPIO3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ +#define GPIO4 _SFR_MEM8(0x0004) /* General Purpose IO Register 4 */ +#define GPIO5 _SFR_MEM8(0x0005) /* General Purpose IO Register 5 */ +#define GPIO6 _SFR_MEM8(0x0006) /* General Purpose IO Register 6 */ +#define GPIO7 _SFR_MEM8(0x0007) /* General Purpose IO Register 7 */ +#define GPIO8 _SFR_MEM8(0x0008) /* General Purpose IO Register 8 */ +#define GPIO9 _SFR_MEM8(0x0009) /* General Purpose IO Register 9 */ +#define GPIOA _SFR_MEM8(0x000A) /* General Purpose IO Register 10 */ +#define GPIOB _SFR_MEM8(0x000B) /* General Purpose IO Register 11 */ +#define GPIOC _SFR_MEM8(0x000C) /* General Purpose IO Register 12 */ +#define GPIOD _SFR_MEM8(0x000D) /* General Purpose IO Register 13 */ +#define GPIOE _SFR_MEM8(0x000E) /* General Purpose IO Register 14 */ +#define GPIOF _SFR_MEM8(0x000F) /* General Purpose IO Register 15 */ + +#define CCP _SFR_MEM8(0x0034) /* Configuration Change Protection */ +#define RAMPD _SFR_MEM8(0x0038) /* Ramp D */ +#define RAMPX _SFR_MEM8(0x0039) /* Ramp X */ +#define RAMPY _SFR_MEM8(0x003A) /* Ramp Y */ +#define RAMPZ _SFR_MEM8(0x003B) /* Ramp Z */ +#define EIND _SFR_MEM8(0x003C) /* Extended Indirect Jump */ +#define SPL _SFR_MEM8(0x003D) /* Stack Pointer Low */ +#define SPH _SFR_MEM8(0x003E) /* Stack Pointer High */ +#define SREG _SFR_MEM8(0x003F) /* Status Register */ + + +/* C Language Only */ +#if !defined (__ASSEMBLER__) + +#include + +typedef volatile uint8_t register8_t; +typedef volatile uint16_t register16_t; +typedef volatile uint32_t register32_t; + + +#ifdef _WORDREGISTER +#undef _WORDREGISTER +#endif +#define _WORDREGISTER(regname) \ + union \ + { \ + register16_t regname; \ + struct \ + { \ + register8_t regname ## L; \ + register8_t regname ## H; \ + }; \ + } + +#ifdef _DWORDREGISTER +#undef _DWORDREGISTER +#endif +#define _DWORDREGISTER(regname) \ + union \ + { \ + register32_t regname; \ + struct \ + { \ + register8_t regname ## 0; \ + register8_t regname ## 1; \ + register8_t regname ## 2; \ + register8_t regname ## 3; \ + }; \ + } + + +/* +========================================================================== +IO Module Structures +========================================================================== +*/ + + +/* +-------------------------------------------------------------------------- +XOCD - On-Chip Debug System +-------------------------------------------------------------------------- +*/ + +/* On-Chip Debug System */ +typedef struct OCD_struct +{ + register8_t OCDR0; /* OCD Register 0 */ + register8_t OCDR1; /* OCD Register 1 */ +} OCD_t; + + +/* CCP signatures */ +typedef enum CCP_enum +{ + CCP_SPM_gc = (0x9D<<0), /* SPM Instruction Protection */ + CCP_IOREG_gc = (0xD8<<0), /* IO Register Protection */ +} CCP_t; + + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Clock System */ +typedef struct CLK_struct +{ + register8_t CTRL; /* Control Register */ + register8_t PSCTRL; /* Prescaler Control Register */ + register8_t LOCK; /* Lock register */ + register8_t RTCCTRL; /* RTC Control Register */ +} CLK_t; + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Power Reduction */ +typedef struct PR_struct +{ + register8_t PR; /* General Power Reduction */ + register8_t PRPA; /* Power Reduction Port A */ + register8_t PRPB; /* Power Reduction Port B */ + register8_t PRPC; /* Power Reduction Port C */ + register8_t PRPD; /* Power Reduction Port D */ + register8_t PRPE; /* Power Reduction Port E */ + register8_t PRPF; /* Power Reduction Port F */ +} PR_t; + +/* System Clock Selection */ +typedef enum CLK_SCLKSEL_enum +{ + CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2MHz RC Oscillator */ + CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32MHz RC Oscillator */ + CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32kHz RC Oscillator */ + CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ + CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ +} CLK_SCLKSEL_t; + +/* Prescaler A Division Factor */ +typedef enum CLK_PSADIV_enum +{ + CLK_PSADIV_1_gc = (0x00<<2), /* Divide by 1 */ + CLK_PSADIV_2_gc = (0x01<<2), /* Divide by 2 */ + CLK_PSADIV_4_gc = (0x03<<2), /* Divide by 4 */ + CLK_PSADIV_8_gc = (0x05<<2), /* Divide by 8 */ + CLK_PSADIV_16_gc = (0x07<<2), /* Divide by 16 */ + CLK_PSADIV_32_gc = (0x09<<2), /* Divide by 32 */ + CLK_PSADIV_64_gc = (0x0B<<2), /* Divide by 64 */ + CLK_PSADIV_128_gc = (0x0D<<2), /* Divide by 128 */ + CLK_PSADIV_256_gc = (0x0F<<2), /* Divide by 256 */ + CLK_PSADIV_512_gc = (0x11<<2), /* Divide by 512 */ +} CLK_PSADIV_t; + +/* Prescaler B and C Division Factor */ +typedef enum CLK_PSBCDIV_enum +{ + CLK_PSBCDIV_1_1_gc = (0x00<<0), /* Divide B by 1 and C by 1 */ + CLK_PSBCDIV_1_2_gc = (0x01<<0), /* Divide B by 1 and C by 2 */ + CLK_PSBCDIV_4_1_gc = (0x02<<0), /* Divide B by 4 and C by 1 */ + CLK_PSBCDIV_2_2_gc = (0x03<<0), /* Divide B by 2 and C by 2 */ +} CLK_PSBCDIV_t; + +/* RTC Clock Source */ +typedef enum CLK_RTCSRC_enum +{ + CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1kHz from internal 32kHz ULP */ + CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1kHz from internal 32kHz RC oscillator */ + CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32kHz from 32kHz crystal oscillator on TOSC */ +} CLK_RTCSRC_t; + + +/* +-------------------------------------------------------------------------- +SLEEP - Sleep Controller +-------------------------------------------------------------------------- +*/ + +/* Sleep Controller */ +typedef struct SLEEP_struct +{ + register8_t CTRL; /* Control Register */ +} SLEEP_t; + +/* Sleep Mode */ +typedef enum SLEEP_SMODE_enum +{ + SLEEP_SMODE_IDLE_gc = (0x00<<1), /* Idle mode */ + SLEEP_SMODE_PDOWN_gc = (0x02<<1), /* Power-down Mode */ + SLEEP_SMODE_PSAVE_gc = (0x03<<1), /* Power-save Mode */ + SLEEP_SMODE_STDBY_gc = (0x06<<1), /* Standby Mode */ + SLEEP_SMODE_ESTDBY_gc = (0x07<<1), /* Extended Standby Mode */ +} SLEEP_SMODE_t; + + +/* +-------------------------------------------------------------------------- +OSC - Oscillator +-------------------------------------------------------------------------- +*/ + +/* Oscillator */ +typedef struct OSC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t XOSCCTRL; /* External Oscillator Control Register */ + register8_t XOSCFAIL; /* External Oscillator Failure Detection Register */ + register8_t RC32KCAL; /* 32kHz Internal Oscillator Calibration Register */ + register8_t PLLCTRL; /* PLL Control REgister */ + register8_t DFLLCTRL; /* DFLL Control Register */ +} OSC_t; + +/* Oscillator Frequency Range */ +typedef enum OSC_FRQRANGE_enum +{ + OSC_FRQRANGE_04TO2_gc = (0x00<<6), /* 0.4 - 2 MHz */ + OSC_FRQRANGE_2TO9_gc = (0x01<<6), /* 2 - 9 MHz */ + OSC_FRQRANGE_9TO12_gc = (0x02<<6), /* 9 - 12 MHz */ + OSC_FRQRANGE_12TO16_gc = (0x03<<6), /* 12 - 16 MHz */ +} OSC_FRQRANGE_t; + +/* External Oscillator Selection and Startup Time */ +typedef enum OSC_XOSCSEL_enum +{ + OSC_XOSCSEL_EXTCLK_gc = (0x00<<0), /* External Clock - 6 CLK */ + OSC_XOSCSEL_32KHz_gc = (0x02<<0), /* 32kHz TOSC - 32K CLK */ + OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), /* 0.4-16MHz XTAL - 256 CLK */ + OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), /* 0.4-16MHz XTAL - 1K CLK */ + OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), /* 0.4-16MHz XTAL - 16K CLK */ +} OSC_XOSCSEL_t; + +/* PLL Clock Source */ +typedef enum OSC_PLLSRC_enum +{ + OSC_PLLSRC_RC2M_gc = (0x00<<6), /* Internal 2MHz RC Oscillator */ + OSC_PLLSRC_RC32M_gc = (0x02<<6), /* Internal 32MHz RC Oscillator */ + OSC_PLLSRC_XOSC_gc = (0x03<<6), /* External Oscillator */ +} OSC_PLLSRC_t; + + +/* +-------------------------------------------------------------------------- +DFLL - DFLL +-------------------------------------------------------------------------- +*/ + +/* DFLL */ +typedef struct DFLL_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t CALA; /* Calibration Register A */ + register8_t CALB; /* Calibration Register B */ + register8_t OSCCNT0; /* Oscillator Counter Register 0 */ + register8_t OSCCNT1; /* Oscillator Counter Register 1 */ + register8_t OSCCNT2; /* Oscillator Counter Register 2 */ + register8_t reserved_0x07; +} DFLL_t; + + +/* +-------------------------------------------------------------------------- +RST - Reset +-------------------------------------------------------------------------- +*/ + +/* Reset */ +typedef struct RST_struct +{ + register8_t STATUS; /* Status Register */ + register8_t CTRL; /* Control Register */ +} RST_t; + + +/* +-------------------------------------------------------------------------- +WDT - Watch-Dog Timer +-------------------------------------------------------------------------- +*/ + +/* Watch-Dog Timer */ +typedef struct WDT_struct +{ + register8_t CTRL; /* Control */ + register8_t WINCTRL; /* Windowed Mode Control */ + register8_t STATUS; /* Status */ +} WDT_t; + +/* Period setting */ +typedef enum WDT_PER_enum +{ + WDT_PER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_PER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_PER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_PER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_PER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_PER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_PER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_PER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_PER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_PER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_PER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_PER_t; + +/* Closed window period */ +typedef enum WDT_WPER_enum +{ + WDT_WPER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_WPER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_WPER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_WPER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_WPER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_WPER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_WPER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_WPER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_WPER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_WPER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_WPER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_WPER_t; + + +/* +-------------------------------------------------------------------------- +MCU - MCU Control +-------------------------------------------------------------------------- +*/ + +/* MCU Control */ +typedef struct MCU_struct +{ + register8_t DEVID0; /* Device ID byte 0 */ + register8_t DEVID1; /* Device ID byte 1 */ + register8_t DEVID2; /* Device ID byte 2 */ + register8_t REVID; /* Revision ID */ + register8_t JTAGUID; /* JTAG User ID */ + register8_t reserved_0x05; + register8_t MCUCR; /* MCU Control */ + register8_t reserved_0x07; + register8_t EVSYSLOCK; /* Event System Lock */ + register8_t AWEXLOCK; /* AWEX Lock */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; +} MCU_t; + + +/* +-------------------------------------------------------------------------- +PMIC - Programmable Multi-level Interrupt Controller +-------------------------------------------------------------------------- +*/ + +/* Programmable Multi-level Interrupt Controller */ +typedef struct PMIC_struct +{ + register8_t STATUS; /* Status Register */ + register8_t INTPRI; /* Interrupt Priority */ + register8_t CTRL; /* Control Register */ +} PMIC_t; + + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Channel */ +typedef struct DMA_CH_struct +{ + register8_t CTRLA; /* Channel Control */ + register8_t CTRLB; /* Channel Control */ + register8_t ADDRCTRL; /* Address Control */ + register8_t TRIGSRC; /* Channel Trigger Source */ + _WORDREGISTER(TRFCNT); /* Channel Block Transfer Count */ + register8_t REPCNT; /* Channel Repeat Count */ + register8_t reserved_0x07; + register8_t SRCADDR0; /* Channel Source Address 0 */ + register8_t SRCADDR1; /* Channel Source Address 1 */ + register8_t SRCADDR2; /* Channel Source Address 2 */ + register8_t reserved_0x0B; + register8_t DESTADDR0; /* Channel Destination Address 0 */ + register8_t DESTADDR1; /* Channel Destination Address 1 */ + register8_t DESTADDR2; /* Channel Destination Address 2 */ + register8_t reserved_0x0F; +} DMA_CH_t; + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Controller */ +typedef struct DMA_struct +{ + register8_t CTRL; /* Control */ + register8_t reserved_0x01; + register8_t reserved_0x02; + register8_t INTFLAGS; /* Transfer Interrupt Status */ + register8_t STATUS; /* Status */ + register8_t reserved_0x05; + _WORDREGISTER(TEMP); /* Temporary Register For 16/24-bit Access */ + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + DMA_CH_t CH0; /* DMA Channel 0 */ + DMA_CH_t CH1; /* DMA Channel 1 */ + DMA_CH_t CH2; /* DMA Channel 2 */ + DMA_CH_t CH3; /* DMA Channel 3 */ +} DMA_t; + +/* Burst mode */ +typedef enum DMA_CH_BURSTLEN_enum +{ + DMA_CH_BURSTLEN_1BYTE_gc = (0x00<<0), /* 1-byte burst mode */ + DMA_CH_BURSTLEN_2BYTE_gc = (0x01<<0), /* 2-byte burst mode */ + DMA_CH_BURSTLEN_4BYTE_gc = (0x02<<0), /* 4-byte burst mode */ + DMA_CH_BURSTLEN_8BYTE_gc = (0x03<<0), /* 8-byte burst mode */ +} DMA_CH_BURSTLEN_t; + +/* Source address reload mode */ +typedef enum DMA_CH_SRCRELOAD_enum +{ + DMA_CH_SRCRELOAD_NONE_gc = (0x00<<6), /* No reload */ + DMA_CH_SRCRELOAD_BLOCK_gc = (0x01<<6), /* Reload at end of block */ + DMA_CH_SRCRELOAD_BURST_gc = (0x02<<6), /* Reload at end of burst */ + DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), /* Reload at end of transaction */ +} DMA_CH_SRCRELOAD_t; + +/* Source addressing mode */ +typedef enum DMA_CH_SRCDIR_enum +{ + DMA_CH_SRCDIR_FIXED_gc = (0x00<<4), /* Fixed */ + DMA_CH_SRCDIR_INC_gc = (0x01<<4), /* Increment */ + DMA_CH_SRCDIR_DEC_gc = (0x02<<4), /* Decrement */ +} DMA_CH_SRCDIR_t; + +/* Destination adress reload mode */ +typedef enum DMA_CH_DESTRELOAD_enum +{ + DMA_CH_DESTRELOAD_NONE_gc = (0x00<<2), /* No reload */ + DMA_CH_DESTRELOAD_BLOCK_gc = (0x01<<2), /* Reload at end of block */ + DMA_CH_DESTRELOAD_BURST_gc = (0x02<<2), /* Reload at end of burst */ + DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), /* Reload at end of transaction */ +} DMA_CH_DESTRELOAD_t; + +/* Destination adressing mode */ +typedef enum DMA_CH_DESTDIR_enum +{ + DMA_CH_DESTDIR_FIXED_gc = (0x00<<0), /* Fixed */ + DMA_CH_DESTDIR_INC_gc = (0x01<<0), /* Increment */ + DMA_CH_DESTDIR_DEC_gc = (0x02<<0), /* Decrement */ +} DMA_CH_DESTDIR_t; + +/* Transfer trigger source */ +typedef enum DMA_CH_TRIGSRC_enum +{ + DMA_CH_TRIGSRC_OFF_gc = (0x00<<0), /* Off software triggers only */ + DMA_CH_TRIGSRC_EVSYS_CH0_gc = (0x01<<0), /* Event System Channel 0 */ + DMA_CH_TRIGSRC_EVSYS_CH1_gc = (0x02<<0), /* Event System Channel 1 */ + DMA_CH_TRIGSRC_EVSYS_CH2_gc = (0x03<<0), /* Event System Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH0_gc = (0x10<<0), /* ADCA Channel 0 */ + DMA_CH_TRIGSRC_ADCA_CH1_gc = (0x11<<0), /* ADCA Channel 1 */ + DMA_CH_TRIGSRC_ADCA_CH2_gc = (0x12<<0), /* ADCA Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH3_gc = (0x13<<0), /* ADCA Channel 3 */ + DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), /* ADCA Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACA_CH0_gc = (0x15<<0), /* DACA Channel 0 */ + DMA_CH_TRIGSRC_DACA_CH1_gc = (0x16<<0), /* DACA Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH0_gc = (0x20<<0), /* ADCB Channel 0 */ + DMA_CH_TRIGSRC_ADCB_CH1_gc = (0x21<<0), /* ADCB Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH2_gc = (0x22<<0), /* ADCB Channel 2 */ + DMA_CH_TRIGSRC_ADCB_CH3_gc = (0x23<<0), /* ADCB Channel 3 */ + DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), /* ADCB Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACB_CH0_gc = (0x25<<0), /* DACB Channel 0 */ + DMA_CH_TRIGSRC_DACB_CH1_gc = (0x26<<0), /* DACB Channel 1 */ + DMA_CH_TRIGSRC_TCC0_OVF_gc = (0x40<<0), /* Timer/Counter C0 Overflow */ + DMA_CH_TRIGSRC_TCC0_ERR_gc = (0x41<<0), /* Timer/Counter C0 Error */ + DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), /* Timer/Counter C0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), /* Timer/Counter C0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), /* Timer/Counter C0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), /* Timer/Counter C0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCC1_OVF_gc = (0x46<<0), /* Timer/Counter C1 Overflow */ + DMA_CH_TRIGSRC_TCC1_ERR_gc = (0x47<<0), /* Timer/Counter C1 Error */ + DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), /* Timer/Counter C1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), /* Timer/Counter C1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIC_gc = (0x4A<<0), /* SPI C Transfer Complete */ + DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), /* USART C0 Receive Complete */ + DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), /* USART C0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), /* USART C1 Receive Complete */ + DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), /* USART C1 Data Register Empty */ + DMA_CH_TRIGSRC_TCD0_OVF_gc = (0x60<<0), /* Timer/Counter D0 Overflow */ + DMA_CH_TRIGSRC_TCD0_ERR_gc = (0x61<<0), /* Timer/Counter D0 Error */ + DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), /* Timer/Counter D0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), /* Timer/Counter D0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), /* Timer/Counter D0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), /* Timer/Counter D0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCD1_OVF_gc = (0x66<<0), /* Timer/Counter D1 Overflow */ + DMA_CH_TRIGSRC_TCD1_ERR_gc = (0x67<<0), /* Timer/Counter D1 Error */ + DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), /* Timer/Counter D1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), /* Timer/Counter D1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPID_gc = (0x6A<<0), /* SPI D Transfer Complete */ + DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), /* USART D0 Receive Complete */ + DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), /* USART D0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), /* USART D1 Receive Complete */ + DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), /* USART D1 Data Register Empty */ + DMA_CH_TRIGSRC_TCE0_OVF_gc = (0x80<<0), /* Timer/Counter E0 Overflow */ + DMA_CH_TRIGSRC_TCE0_ERR_gc = (0x81<<0), /* Timer/Counter E0 Error */ + DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), /* Timer/Counter E0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), /* Timer/Counter E0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), /* Timer/Counter E0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), /* Timer/Counter E0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCE1_OVF_gc = (0x86<<0), /* Timer/Counter E1 Overflow */ + DMA_CH_TRIGSRC_TCE1_ERR_gc = (0x87<<0), /* Timer/Counter E1 Error */ + DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), /* Timer/Counter E1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), /* Timer/Counter E1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIE_gc = (0x8A<<0), /* SPI E Transfer Complete */ + DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), /* USART E0 Receive Complete */ + DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), /* USART E0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), /* USART E1 Receive Complete */ + DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), /* USART E1 Data Register Empty */ + DMA_CH_TRIGSRC_TCF0_OVF_gc = (0xA0<<0), /* Timer/Counter F0 Overflow */ + DMA_CH_TRIGSRC_TCF0_ERR_gc = (0xA1<<0), /* Timer/Counter F0 Error */ + DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), /* Timer/Counter F0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), /* Timer/Counter F0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), /* Timer/Counter F0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), /* Timer/Counter F0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCF1_OVF_gc = (0xA6<<0), /* Timer/Counter F1 Overflow */ + DMA_CH_TRIGSRC_TCF1_ERR_gc = (0xA7<<0), /* Timer/Counter F1 Error */ + DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), /* Timer/Counter F1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), /* Timer/Counter F1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIF_gc = (0xAA<<0), /* SPI F Transfer Complete */ + DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), /* USART F0 Receive Complete */ + DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), /* USART F0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), /* USART F1 Receive Complete */ + DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), /* USART F1 Data Register Empty */ +} DMA_CH_TRIGSRC_t; + +/* Double buffering mode */ +typedef enum DMA_DBUFMODE_enum +{ + DMA_DBUFMODE_DISABLED_gc = (0x00<<2), /* Double buffering disabled */ + DMA_DBUFMODE_CH01_gc = (0x01<<2), /* Double buffering enabled on channel 0/1 */ + DMA_DBUFMODE_CH23_gc = (0x02<<2), /* Double buffering enabled on channel 2/3 */ + DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ +} DMA_DBUFMODE_t; + +/* Priority mode */ +typedef enum DMA_PRIMODE_enum +{ + DMA_PRIMODE_RR0123_gc = (0x00<<0), /* Round Robin */ + DMA_PRIMODE_CH0RR123_gc = (0x01<<0), /* Channel 0 > Round Robin on channel 1/2/3 */ + DMA_PRIMODE_CH01RR23_gc = (0x02<<0), /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ + DMA_PRIMODE_CH0123_gc = (0x03<<0), /* Channel 0 > channel 1 > channel 2 > channel 3 */ +} DMA_PRIMODE_t; + +/* Interrupt level */ +typedef enum DMA_CH_ERRINTLVL_enum +{ + DMA_CH_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + DMA_CH_ERRINTLVL_LO_gc = (0x01<<2), /* Low level */ + DMA_CH_ERRINTLVL_MED_gc = (0x02<<2), /* Medium level */ + DMA_CH_ERRINTLVL_HI_gc = (0x03<<2), /* High level */ +} DMA_CH_ERRINTLVL_t; + +/* Interrupt level */ +typedef enum DMA_CH_TRNINTLVL_enum +{ + DMA_CH_TRNINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + DMA_CH_TRNINTLVL_LO_gc = (0x01<<0), /* Low level */ + DMA_CH_TRNINTLVL_MED_gc = (0x02<<0), /* Medium level */ + DMA_CH_TRNINTLVL_HI_gc = (0x03<<0), /* High level */ +} DMA_CH_TRNINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EVSYS - Event System +-------------------------------------------------------------------------- +*/ + +/* Event System */ +typedef struct EVSYS_struct +{ + register8_t CH0MUX; /* Event Channel 0 Multiplexer */ + register8_t CH1MUX; /* Event Channel 1 Multiplexer */ + register8_t CH2MUX; /* Event Channel 2 Multiplexer */ + register8_t CH3MUX; /* Event Channel 3 Multiplexer */ + register8_t CH4MUX; /* Event Channel 4 Multiplexer */ + register8_t CH5MUX; /* Event Channel 5 Multiplexer */ + register8_t CH6MUX; /* Event Channel 6 Multiplexer */ + register8_t CH7MUX; /* Event Channel 7 Multiplexer */ + register8_t CH0CTRL; /* Channel 0 Control Register */ + register8_t CH1CTRL; /* Channel 1 Control Register */ + register8_t CH2CTRL; /* Channel 2 Control Register */ + register8_t CH3CTRL; /* Channel 3 Control Register */ + register8_t CH4CTRL; /* Channel 4 Control Register */ + register8_t CH5CTRL; /* Channel 5 Control Register */ + register8_t CH6CTRL; /* Channel 6 Control Register */ + register8_t CH7CTRL; /* Channel 7 Control Register */ + register8_t STROBE; /* Event Strobe */ + register8_t DATA; /* Event Data */ +} EVSYS_t; + +/* Quadrature Decoder Index Recognition Mode */ +typedef enum EVSYS_QDIRM_enum +{ + EVSYS_QDIRM_00_gc = (0x00<<5), /* QDPH0 = 0, QDPH90 = 0 */ + EVSYS_QDIRM_01_gc = (0x01<<5), /* QDPH0 = 0, QDPH90 = 1 */ + EVSYS_QDIRM_10_gc = (0x02<<5), /* QDPH0 = 1, QDPH90 = 0 */ + EVSYS_QDIRM_11_gc = (0x03<<5), /* QDPH0 = 1, QDPH90 = 1 */ +} EVSYS_QDIRM_t; + +/* Digital filter coefficient */ +typedef enum EVSYS_DIGFILT_enum +{ + EVSYS_DIGFILT_1SAMPLE_gc = (0x00<<0), /* 1 SAMPLE */ + EVSYS_DIGFILT_2SAMPLES_gc = (0x01<<0), /* 2 SAMPLES */ + EVSYS_DIGFILT_3SAMPLES_gc = (0x02<<0), /* 3 SAMPLES */ + EVSYS_DIGFILT_4SAMPLES_gc = (0x03<<0), /* 4 SAMPLES */ + EVSYS_DIGFILT_5SAMPLES_gc = (0x04<<0), /* 5 SAMPLES */ + EVSYS_DIGFILT_6SAMPLES_gc = (0x05<<0), /* 6 SAMPLES */ + EVSYS_DIGFILT_7SAMPLES_gc = (0x06<<0), /* 7 SAMPLES */ + EVSYS_DIGFILT_8SAMPLES_gc = (0x07<<0), /* 8 SAMPLES */ +} EVSYS_DIGFILT_t; + +/* Event Channel multiplexer input selection */ +typedef enum EVSYS_CHMUX_enum +{ + EVSYS_CHMUX_OFF_gc = (0x00<<0), /* Off */ + EVSYS_CHMUX_RTC_OVF_gc = (0x08<<0), /* RTC Overflow */ + EVSYS_CHMUX_RTC_CMP_gc = (0x09<<0), /* RTC Compare Match */ + EVSYS_CHMUX_ACA_CH0_gc = (0x10<<0), /* Analog Comparator A Channel 0 */ + EVSYS_CHMUX_ACA_CH1_gc = (0x11<<0), /* Analog Comparator A Channel 1 */ + EVSYS_CHMUX_ACA_WIN_gc = (0x12<<0), /* Analog Comparator A Window */ + EVSYS_CHMUX_ACB_CH0_gc = (0x13<<0), /* Analog Comparator B Channel 0 */ + EVSYS_CHMUX_ACB_CH1_gc = (0x14<<0), /* Analog Comparator B Channel 1 */ + EVSYS_CHMUX_ACB_WIN_gc = (0x15<<0), /* Analog Comparator B Window */ + EVSYS_CHMUX_ADCA_CH0_gc = (0x20<<0), /* ADC A Channel 0 */ + EVSYS_CHMUX_ADCA_CH1_gc = (0x21<<0), /* ADC A Channel 1 */ + EVSYS_CHMUX_ADCA_CH2_gc = (0x22<<0), /* ADC A Channel 2 */ + EVSYS_CHMUX_ADCA_CH3_gc = (0x23<<0), /* ADC A Channel 3 */ + EVSYS_CHMUX_ADCB_CH0_gc = (0x24<<0), /* ADC B Channel 0 */ + EVSYS_CHMUX_ADCB_CH1_gc = (0x25<<0), /* ADC B Channel 1 */ + EVSYS_CHMUX_ADCB_CH2_gc = (0x26<<0), /* ADC B Channel 2 */ + EVSYS_CHMUX_ADCB_CH3_gc = (0x27<<0), /* ADC B Channel 3 */ + EVSYS_CHMUX_PORTA_PIN0_gc = (0x50<<0), /* Port A, Pin0 */ + EVSYS_CHMUX_PORTA_PIN1_gc = (0x51<<0), /* Port A, Pin1 */ + EVSYS_CHMUX_PORTA_PIN2_gc = (0x52<<0), /* Port A, Pin2 */ + EVSYS_CHMUX_PORTA_PIN3_gc = (0x53<<0), /* Port A, Pin3 */ + EVSYS_CHMUX_PORTA_PIN4_gc = (0x54<<0), /* Port A, Pin4 */ + EVSYS_CHMUX_PORTA_PIN5_gc = (0x55<<0), /* Port A, Pin5 */ + EVSYS_CHMUX_PORTA_PIN6_gc = (0x56<<0), /* Port A, Pin6 */ + EVSYS_CHMUX_PORTA_PIN7_gc = (0x57<<0), /* Port A, Pin7 */ + EVSYS_CHMUX_PORTB_PIN0_gc = (0x58<<0), /* Port B, Pin0 */ + EVSYS_CHMUX_PORTB_PIN1_gc = (0x59<<0), /* Port B, Pin1 */ + EVSYS_CHMUX_PORTB_PIN2_gc = (0x5A<<0), /* Port B, Pin2 */ + EVSYS_CHMUX_PORTB_PIN3_gc = (0x5B<<0), /* Port B, Pin3 */ + EVSYS_CHMUX_PORTB_PIN4_gc = (0x5C<<0), /* Port B, Pin4 */ + EVSYS_CHMUX_PORTB_PIN5_gc = (0x5D<<0), /* Port B, Pin5 */ + EVSYS_CHMUX_PORTB_PIN6_gc = (0x5E<<0), /* Port B, Pin6 */ + EVSYS_CHMUX_PORTB_PIN7_gc = (0x5F<<0), /* Port B, Pin7 */ + EVSYS_CHMUX_PORTC_PIN0_gc = (0x60<<0), /* Port C, Pin0 */ + EVSYS_CHMUX_PORTC_PIN1_gc = (0x61<<0), /* Port C, Pin1 */ + EVSYS_CHMUX_PORTC_PIN2_gc = (0x62<<0), /* Port C, Pin2 */ + EVSYS_CHMUX_PORTC_PIN3_gc = (0x63<<0), /* Port C, Pin3 */ + EVSYS_CHMUX_PORTC_PIN4_gc = (0x64<<0), /* Port C, Pin4 */ + EVSYS_CHMUX_PORTC_PIN5_gc = (0x65<<0), /* Port C, Pin5 */ + EVSYS_CHMUX_PORTC_PIN6_gc = (0x66<<0), /* Port C, Pin6 */ + EVSYS_CHMUX_PORTC_PIN7_gc = (0x67<<0), /* Port C, Pin7 */ + EVSYS_CHMUX_PORTD_PIN0_gc = (0x68<<0), /* Port D, Pin0 */ + EVSYS_CHMUX_PORTD_PIN1_gc = (0x69<<0), /* Port D, Pin1 */ + EVSYS_CHMUX_PORTD_PIN2_gc = (0x6A<<0), /* Port D, Pin2 */ + EVSYS_CHMUX_PORTD_PIN3_gc = (0x6B<<0), /* Port D, Pin3 */ + EVSYS_CHMUX_PORTD_PIN4_gc = (0x6C<<0), /* Port D, Pin4 */ + EVSYS_CHMUX_PORTD_PIN5_gc = (0x6D<<0), /* Port D, Pin5 */ + EVSYS_CHMUX_PORTD_PIN6_gc = (0x6E<<0), /* Port D, Pin6 */ + EVSYS_CHMUX_PORTD_PIN7_gc = (0x6F<<0), /* Port D, Pin7 */ + EVSYS_CHMUX_PORTE_PIN0_gc = (0x70<<0), /* Port E, Pin0 */ + EVSYS_CHMUX_PORTE_PIN1_gc = (0x71<<0), /* Port E, Pin1 */ + EVSYS_CHMUX_PORTE_PIN2_gc = (0x72<<0), /* Port E, Pin2 */ + EVSYS_CHMUX_PORTE_PIN3_gc = (0x73<<0), /* Port E, Pin3 */ + EVSYS_CHMUX_PORTE_PIN4_gc = (0x74<<0), /* Port E, Pin4 */ + EVSYS_CHMUX_PORTE_PIN5_gc = (0x75<<0), /* Port E, Pin5 */ + EVSYS_CHMUX_PORTE_PIN6_gc = (0x76<<0), /* Port E, Pin6 */ + EVSYS_CHMUX_PORTE_PIN7_gc = (0x77<<0), /* Port E, Pin7 */ + EVSYS_CHMUX_PORTF_PIN0_gc = (0x78<<0), /* Port F, Pin0 */ + EVSYS_CHMUX_PORTF_PIN1_gc = (0x79<<0), /* Port F, Pin1 */ + EVSYS_CHMUX_PORTF_PIN2_gc = (0x7A<<0), /* Port F, Pin2 */ + EVSYS_CHMUX_PORTF_PIN3_gc = (0x7B<<0), /* Port F, Pin3 */ + EVSYS_CHMUX_PORTF_PIN4_gc = (0x7C<<0), /* Port F, Pin4 */ + EVSYS_CHMUX_PORTF_PIN5_gc = (0x7D<<0), /* Port F, Pin5 */ + EVSYS_CHMUX_PORTF_PIN6_gc = (0x7E<<0), /* Port F, Pin6 */ + EVSYS_CHMUX_PORTF_PIN7_gc = (0x7F<<0), /* Port F, Pin7 */ + EVSYS_CHMUX_PRESCALER_1_gc = (0x80<<0), /* Prescaler, divide by 1 */ + EVSYS_CHMUX_PRESCALER_2_gc = (0x81<<0), /* Prescaler, divide by 2 */ + EVSYS_CHMUX_PRESCALER_4_gc = (0x82<<0), /* Prescaler, divide by 4 */ + EVSYS_CHMUX_PRESCALER_8_gc = (0x83<<0), /* Prescaler, divide by 8 */ + EVSYS_CHMUX_PRESCALER_16_gc = (0x84<<0), /* Prescaler, divide by 16 */ + EVSYS_CHMUX_PRESCALER_32_gc = (0x85<<0), /* Prescaler, divide by 32 */ + EVSYS_CHMUX_PRESCALER_64_gc = (0x86<<0), /* Prescaler, divide by 64 */ + EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ + EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ + EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ + EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ + EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ + EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ + EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ + EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ + EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ + EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ + EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ + EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ + EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ + EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ + EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ + EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ + EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ + EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ + EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ + EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ + EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ + EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ + EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ + EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ + EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ + EVSYS_CHMUX_TCD1_OVF_gc = (0xD8<<0), /* Timer/Counter D1 Overflow */ + EVSYS_CHMUX_TCD1_ERR_gc = (0xD9<<0), /* Timer/Counter D1 Error */ + EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), /* Timer/Counter D1 Compare or Capture A */ + EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), /* Timer/Counter D1 Compare or Capture B */ + EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ + EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ + EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ + EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ + EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ + EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ + EVSYS_CHMUX_TCE1_OVF_gc = (0xE8<<0), /* Timer/Counter E1 Overflow */ + EVSYS_CHMUX_TCE1_ERR_gc = (0xE9<<0), /* Timer/Counter E1 Error */ + EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), /* Timer/Counter E1 Compare or Capture A */ + EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), /* Timer/Counter E1 Compare or Capture B */ + EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ + EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ + EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ + EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ + EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ + EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ + EVSYS_CHMUX_TCF1_OVF_gc = (0xF8<<0), /* Timer/Counter F1 Overflow */ + EVSYS_CHMUX_TCF1_ERR_gc = (0xF9<<0), /* Timer/Counter F1 Error */ + EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), /* Timer/Counter F1 Compare or Capture A */ + EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), /* Timer/Counter F1 Compare or Capture B */ +} EVSYS_CHMUX_t; + + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Non-volatile Memory Controller */ +typedef struct NVM_struct +{ + register8_t ADDR0; /* Address Register 0 */ + register8_t ADDR1; /* Address Register 1 */ + register8_t ADDR2; /* Address Register 2 */ + register8_t reserved_0x03; + register8_t DATA0; /* Data Register 0 */ + register8_t DATA1; /* Data Register 1 */ + register8_t DATA2; /* Data Register 2 */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t CMD; /* Command */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t INTCTRL; /* Interrupt Control */ + register8_t reserved_0x0E; + register8_t STATUS; /* Status */ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Lock Bits */ +typedef struct NVM_LOCKBITS_struct +{ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_LOCKBITS_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Fuses */ +typedef struct NVM_FUSES_struct +{ + register8_t FUSEBYTE0; /* JTAG User ID */ + register8_t FUSEBYTE1; /* Watchdog Configuration */ + register8_t FUSEBYTE2; /* Reset Configuration */ + register8_t reserved_0x03; + register8_t FUSEBYTE4; /* Start-up Configuration */ + register8_t FUSEBYTE5; /* EESAVE and BOD Level */ +} NVM_FUSES_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Production Signatures */ +typedef struct NVM_PROD_SIGNATURES_struct +{ + register8_t RCOSC2M; /* RCOSC 2MHz Calibration Value */ + register8_t reserved_0x01; + register8_t RCOSC32K; /* RCOSC 32kHz Calibration Value */ + register8_t RCOSC32M; /* RCOSC 32MHz Calibration Value */ + register8_t reserved_0x04; + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t LOTNUM0; /* Lot Number Byte 0, ASCII */ + register8_t LOTNUM1; /* Lot Number Byte 1, ASCII */ + register8_t LOTNUM2; /* Lot Number Byte 2, ASCII */ + register8_t LOTNUM3; /* Lot Number Byte 3, ASCII */ + register8_t LOTNUM4; /* Lot Number Byte 4, ASCII */ + register8_t LOTNUM5; /* Lot Number Byte 5, ASCII */ + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t WAFNUM; /* Wafer Number */ + register8_t reserved_0x11; + register8_t COORDX0; /* Wafer Coordinate X Byte 0 */ + register8_t COORDX1; /* Wafer Coordinate X Byte 1 */ + register8_t COORDY0; /* Wafer Coordinate Y Byte 0 */ + register8_t COORDY1; /* Wafer Coordinate Y Byte 1 */ + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + register8_t ADCACAL0; /* ADCA Calibration Byte 0 */ + register8_t ADCACAL1; /* ADCA Calibration Byte 1 */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t ADCBCAL0; /* ADCB Calibration Byte 0 */ + register8_t ADCBCAL1; /* ADCB Calibration Byte 1 */ + register8_t reserved_0x26; + register8_t reserved_0x27; + register8_t reserved_0x28; + register8_t reserved_0x29; + register8_t reserved_0x2A; + register8_t reserved_0x2B; + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t TEMPSENSE0; /* Temperature Sensor Calibration Byte 0 */ + register8_t TEMPSENSE1; /* Temperature Sensor Calibration Byte 0 */ + register8_t DACAOFFCAL; /* DACA Calibration Byte 0 */ + register8_t DACACAINCAL; /* DACA Calibration Byte 1 */ + register8_t DACBOFFCAL; /* DACB Calibration Byte 0 */ + register8_t DACBGAINCAL; /* DACB Calibration Byte 1 */ + register8_t reserved_0x34; + register8_t reserved_0x35; + register8_t reserved_0x36; + register8_t reserved_0x37; + register8_t reserved_0x38; + register8_t reserved_0x39; + register8_t reserved_0x3A; + register8_t reserved_0x3B; + register8_t reserved_0x3C; + register8_t reserved_0x3D; + register8_t reserved_0x3E; +} NVM_PROD_SIGNATURES_t; + +/* NVM Command */ +typedef enum NVM_CMD_enum +{ + NVM_CMD_NO_OPERATION_gc = (0x00<<0), /* Noop/Ordinary LPM */ + NVM_CMD_READ_CALIB_ROW_gc = (0x02<<0), /* Read calibration row */ + NVM_CMD_READ_USER_SIG_ROW_gc = (0x01<<0), /* Read user signature row */ + NVM_CMD_READ_EEPROM_gc = (0x06<<0), /* Read EEPROM */ + NVM_CMD_READ_FUSES_gc = (0x07<<0), /* Read fuse byte */ + NVM_CMD_WRITE_LOCK_BITS_gc = (0x08<<0), /* Write lock bits */ + NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ + NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ + NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ + NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ + NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ + NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ + NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ + NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ + NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ + NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ + NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ + NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ + NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ + NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ + NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ + NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ + NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ + NVM_CMD_APP_CRC_gc = (0x38<<0), /* Generate Application section CRC */ + NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Generate Boot Section CRC */ + NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Generate Flash Range CRC */ +} NVM_CMD_t; + +/* SPM ready interrupt level */ +typedef enum NVM_SPMLVL_enum +{ + NVM_SPMLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + NVM_SPMLVL_LO_gc = (0x01<<2), /* Low level */ + NVM_SPMLVL_MED_gc = (0x02<<2), /* Medium level */ + NVM_SPMLVL_HI_gc = (0x03<<2), /* High level */ +} NVM_SPMLVL_t; + +/* EEPROM ready interrupt level */ +typedef enum NVM_EELVL_enum +{ + NVM_EELVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + NVM_EELVL_LO_gc = (0x01<<0), /* Low level */ + NVM_EELVL_MED_gc = (0x02<<0), /* Medium level */ + NVM_EELVL_HI_gc = (0x03<<0), /* High level */ +} NVM_EELVL_t; + +/* Boot lock bits - boot setcion */ +typedef enum NVM_BLBB_enum +{ + NVM_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ + NVM_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ + NVM_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ + NVM_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ +} NVM_BLBB_t; + +/* Boot lock bits - application section */ +typedef enum NVM_BLBA_enum +{ + NVM_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ + NVM_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ + NVM_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ + NVM_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ +} NVM_BLBA_t; + +/* Boot lock bits - application table section */ +typedef enum NVM_BLBAT_enum +{ + NVM_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ + NVM_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ + NVM_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ + NVM_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ +} NVM_BLBAT_t; + +/* Lock bits */ +typedef enum NVM_LB_enum +{ + NVM_LB_NOLOCK_gc = (0x03<<0), /* No locks */ + NVM_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ + NVM_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ +} NVM_LB_t; + +/* Boot Loader Section Reset Vector */ +typedef enum BOOTRST_enum +{ + BOOTRST_BOOTLDR_gc = (0x00<<6), /* Boot Loader Reset */ + BOOTRST_APPLICATION_gc = (0x01<<6), /* Application Reset */ +} BOOTRST_t; + +/* BOD operation */ +typedef enum BOD_enum +{ + BOD_INSAMPLEDMODE_gc = (0x01<<2), /* BOD enabled in sampled mode */ + BOD_CONTINOUSLY_gc = (0x02<<2), /* BOD enabled continuously */ + BOD_DISABLED_gc = (0x03<<2), /* BOD Disabled */ +} BOD_t; + +/* Watchdog (Window) Timeout Period */ +typedef enum WD_enum +{ + WD_8CLK_gc = (0x00<<4), /* 8 cycles (8ms @ 3.3V) */ + WD_16CLK_gc = (0x01<<4), /* 16 cycles (16ms @ 3.3V) */ + WD_32CLK_gc = (0x02<<4), /* 32 cycles (32ms @ 3.3V) */ + WD_64CLK_gc = (0x03<<4), /* 64 cycles (64ms @ 3.3V) */ + WD_128CLK_gc = (0x04<<4), /* 128 cycles (0.125s @ 3.3V) */ + WD_256CLK_gc = (0x05<<4), /* 256 cycles (0.25s @ 3.3V) */ + WD_512CLK_gc = (0x06<<4), /* 512 cycles (0.5s @ 3.3V) */ + WD_1KCLK_gc = (0x07<<4), /* 1K cycles (1s @ 3.3V) */ + WD_2KCLK_gc = (0x08<<4), /* 2K cycles (2s @ 3.3V) */ + WD_4KCLK_gc = (0x09<<4), /* 4K cycles (4s @ 3.3V) */ + WD_8KCLK_gc = (0x0A<<4), /* 8K cycles (8s @ 3.3V) */ +} WD_t; + +/* Start-up Time */ +typedef enum SUT_enum +{ + SUT_0MS_gc = (0x03<<2), /* 0 ms */ + SUT_4MS_gc = (0x01<<2), /* 4 ms */ + SUT_64MS_gc = (0x00<<2), /* 64 ms */ +} SUT_t; + +/* Brown Out Detection Voltage Level */ +typedef enum BODLVL_enum +{ + BODLVL_1V6_gc = (0x07<<0), /* 1.6 V */ + BODLVL_1V8_gc = (0x06<<0), /* 1.8 V */ + BODLVL_2V0_gc = (0x05<<0), /* 2.0 V */ + BODLVL_2V2_gc = (0x04<<0), /* 2.2 V */ + BODLVL_2V4_gc = (0x03<<0), /* 2.4 V */ + BODLVL_2V7_gc = (0x02<<0), /* 2.7 V */ + BODLVL_2V9_gc = (0x01<<0), /* 2.9 V */ + BODLVL_3V2_gc = (0x00<<0), /* 3.2 V */ +} BODLVL_t; + + +/* +-------------------------------------------------------------------------- +AC - Analog Comparator +-------------------------------------------------------------------------- +*/ + +/* Analog Comparator */ +typedef struct AC_struct +{ + register8_t AC0CTRL; /* Comparator 0 Control */ + register8_t AC1CTRL; /* Comparator 1 Control */ + register8_t AC0MUXCTRL; /* Comparator 0 MUX Control */ + register8_t AC1MUXCTRL; /* Comparator 1 MUX Control */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t WINCTRL; /* Window Mode Control */ + register8_t STATUS; /* Status */ +} AC_t; + +/* Interrupt mode */ +typedef enum AC_INTMODE_enum +{ + AC_INTMODE_BOTHEDGES_gc = (0x00<<6), /* Interrupt on both edges */ + AC_INTMODE_FALLING_gc = (0x02<<6), /* Interrupt on falling edge */ + AC_INTMODE_RISING_gc = (0x03<<6), /* Interrupt on rising edge */ +} AC_INTMODE_t; + +/* Interrupt level */ +typedef enum AC_INTLVL_enum +{ + AC_INTLVL_OFF_gc = (0x00<<4), /* Interrupt disabled */ + AC_INTLVL_LO_gc = (0x01<<4), /* Low level */ + AC_INTLVL_MED_gc = (0x02<<4), /* Medium level */ + AC_INTLVL_HI_gc = (0x03<<4), /* High level */ +} AC_INTLVL_t; + +/* Hysteresis mode selection */ +typedef enum AC_HYSMODE_enum +{ + AC_HYSMODE_NO_gc = (0x00<<1), /* No hysteresis */ + AC_HYSMODE_SMALL_gc = (0x01<<1), /* Small hysteresis */ + AC_HYSMODE_LARGE_gc = (0x02<<1), /* Large hysteresis */ +} AC_HYSMODE_t; + +/* Positive input multiplexer selection */ +typedef enum AC_MUXPOS_enum +{ + AC_MUXPOS_PIN0_gc = (0x00<<3), /* Pin 0 */ + AC_MUXPOS_PIN1_gc = (0x01<<3), /* Pin 1 */ + AC_MUXPOS_PIN2_gc = (0x02<<3), /* Pin 2 */ + AC_MUXPOS_PIN3_gc = (0x03<<3), /* Pin 3 */ + AC_MUXPOS_PIN4_gc = (0x04<<3), /* Pin 4 */ + AC_MUXPOS_PIN5_gc = (0x05<<3), /* Pin 5 */ + AC_MUXPOS_PIN6_gc = (0x06<<3), /* Pin 6 */ + AC_MUXPOS_DAC_gc = (0x07<<3), /* DAC output */ +} AC_MUXPOS_t; + +/* Negative input multiplexer selection */ +typedef enum AC_MUXNEG_enum +{ + AC_MUXNEG_PIN0_gc = (0x00<<0), /* Pin 0 */ + AC_MUXNEG_PIN1_gc = (0x01<<0), /* Pin 1 */ + AC_MUXNEG_PIN3_gc = (0x02<<0), /* Pin 3 */ + AC_MUXNEG_PIN5_gc = (0x03<<0), /* Pin 5 */ + AC_MUXNEG_PIN7_gc = (0x04<<0), /* Pin 7 */ + AC_MUXNEG_DAC_gc = (0x05<<0), /* DAC output */ + AC_MUXNEG_BANDGAP_gc = (0x06<<0), /* Bandgap Reference */ + AC_MUXNEG_SCALER_gc = (0x07<<0), /* Internal voltage scaler */ +} AC_MUXNEG_t; + +/* Windows interrupt mode */ +typedef enum AC_WINTMODE_enum +{ + AC_WINTMODE_ABOVE_gc = (0x00<<2), /* Interrupt on above window */ + AC_WINTMODE_INSIDE_gc = (0x01<<2), /* Interrupt on inside window */ + AC_WINTMODE_BELOW_gc = (0x02<<2), /* Interrupt on below window */ + AC_WINTMODE_OUTSIDE_gc = (0x03<<2), /* Interrupt on outside window */ +} AC_WINTMODE_t; + +/* Window interrupt level */ +typedef enum AC_WINTLVL_enum +{ + AC_WINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + AC_WINTLVL_LO_gc = (0x01<<0), /* Low priority */ + AC_WINTLVL_MED_gc = (0x02<<0), /* Medium priority */ + AC_WINTLVL_HI_gc = (0x03<<0), /* High priority */ +} AC_WINTLVL_t; + +/* Window mode state */ +typedef enum AC_WSTATE_enum +{ + AC_WSTATE_ABOVE_gc = (0x00<<6), /* Signal above window */ + AC_WSTATE_INSIDE_gc = (0x01<<6), /* Signal inside window */ + AC_WSTATE_BELOW_gc = (0x02<<6), /* Signal below window */ +} AC_WSTATE_t; + + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* ADC Channel */ +typedef struct ADC_CH_struct +{ + register8_t CTRL; /* Control Register */ + register8_t MUXCTRL; /* MUX Control */ + register8_t INTCTRL; /* Channel Interrupt Control */ + register8_t INTFLAGS; /* Interrupt Flags */ + _WORDREGISTER(RES); /* Channel Result */ + register8_t reserved_0x6; + register8_t reserved_0x7; +} ADC_CH_t; + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* Analog-to-Digital Converter */ +typedef struct ADC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t REFCTRL; /* Reference Control */ + register8_t EVCTRL; /* Event Control */ + register8_t PRESCALER; /* Clock Prescaler */ + register8_t CALCTRL; /* Calibration Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t CALIB; /* Calibration Value */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + _WORDREGISTER(CH0RES); /* Channel 0 Result */ + _WORDREGISTER(CH1RES); /* Channel 1 Result */ + _WORDREGISTER(CH2RES); /* Channel 2 Result */ + _WORDREGISTER(CH3RES); /* Channel 3 Result */ + _WORDREGISTER(CMP); /* Compare Value */ + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + ADC_CH_t CH0; /* ADC Channel 0 */ + ADC_CH_t CH1; /* ADC Channel 1 */ + ADC_CH_t CH2; /* ADC Channel 2 */ + ADC_CH_t CH3; /* ADC Channel 3 */ +} ADC_t; + +/* Positive input multiplexer selection */ +typedef enum ADC_CH_MUXPOS_enum +{ + ADC_CH_MUXPOS_PIN0_gc = (0x00<<3), /* Input pin 0 */ + ADC_CH_MUXPOS_PIN1_gc = (0x01<<3), /* Input pin 1 */ + ADC_CH_MUXPOS_PIN2_gc = (0x02<<3), /* Input pin 2 */ + ADC_CH_MUXPOS_PIN3_gc = (0x03<<3), /* Input pin 3 */ + ADC_CH_MUXPOS_PIN4_gc = (0x04<<3), /* Input pin 4 */ + ADC_CH_MUXPOS_PIN5_gc = (0x05<<3), /* Input pin 5 */ + ADC_CH_MUXPOS_PIN6_gc = (0x06<<3), /* Input pin 6 */ + ADC_CH_MUXPOS_PIN7_gc = (0x07<<3), /* Input pin 7 */ +} ADC_CH_MUXPOS_t; + +/* Internal input multiplexer selections */ +typedef enum ADC_CH_MUXINT_enum +{ + ADC_CH_MUXINT_TEMP_gc = (0x00<<3), /* Temperature Reference */ + ADC_CH_MUXINT_BANDGAP_gc = (0x01<<3), /* Bandgap Reference */ + ADC_CH_MUXINT_SCALEDVCC_gc = (0x02<<3), /* 1/10 scaled VCC */ + ADC_CH_MUXINT_DAC_gc = (0x03<<3), /* DAC output */ +} ADC_CH_MUXINT_t; + +/* Negative input multiplexer selection */ +typedef enum ADC_CH_MUXNEG_enum +{ + ADC_CH_MUXNEG_PIN0_gc = (0x00<<0), /* Input pin 0 */ + ADC_CH_MUXNEG_PIN1_gc = (0x01<<0), /* Input pin 1 */ + ADC_CH_MUXNEG_PIN2_gc = (0x02<<0), /* Input pin 2 */ + ADC_CH_MUXNEG_PIN3_gc = (0x03<<0), /* Input pin 3 */ + ADC_CH_MUXNEG_PIN4_gc = (0x04<<0), /* Input pin 4 */ + ADC_CH_MUXNEG_PIN5_gc = (0x05<<0), /* Input pin 5 */ + ADC_CH_MUXNEG_PIN6_gc = (0x06<<0), /* Input pin 6 */ + ADC_CH_MUXNEG_PIN7_gc = (0x07<<0), /* Input pin 7 */ +} ADC_CH_MUXNEG_t; + +/* Input mode */ +typedef enum ADC_CH_INPUTMODE_enum +{ + ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ + ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ + ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ + ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ +} ADC_CH_INPUTMODE_t; + +/* Gain factor */ +typedef enum ADC_CH_GAIN_enum +{ + ADC_CH_GAIN_1X_gc = (0x00<<2), /* 1x gain */ + ADC_CH_GAIN_2X_gc = (0x01<<2), /* 2x gain */ + ADC_CH_GAIN_4X_gc = (0x02<<2), /* 4x gain */ + ADC_CH_GAIN_8X_gc = (0x03<<2), /* 8x gain */ + ADC_CH_GAIN_16X_gc = (0x04<<2), /* 16x gain */ + ADC_CH_GAIN_32X_gc = (0x05<<2), /* 32x gain */ + ADC_CH_GAIN_64X_gc = (0x06<<2), /* 64x gain */ +} ADC_CH_GAIN_t; + +/* Conversion result resolution */ +typedef enum ADC_RESOLUTION_enum +{ + ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ + ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ + ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ +} ADC_RESOLUTION_t; + +/* Voltage reference selection */ +typedef enum ADC_REFSEL_enum +{ + ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ + ADC_REFSEL_VCC_gc = (0x01<<4), /* Internal VCC / 1.6V */ + ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ + ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ +} ADC_REFSEL_t; + +/* Channel sweep selection */ +typedef enum ADC_SWEEP_enum +{ + ADC_SWEEP_0_gc = (0x00<<6), /* ADC Channel 0 */ + ADC_SWEEP_01_gc = (0x01<<6), /* ADC Channel 0,1 */ + ADC_SWEEP_012_gc = (0x02<<6), /* ADC Channel 0,1,2 */ + ADC_SWEEP_0123_gc = (0x03<<6), /* ADC Channel 0,1,2,3 */ +} ADC_SWEEP_t; + +/* Event channel input selection */ +typedef enum ADC_EVSEL_enum +{ + ADC_EVSEL_0123_gc = (0x00<<3), /* Event Channel 0,1,2,3 */ + ADC_EVSEL_1234_gc = (0x01<<3), /* Event Channel 1,2,3,4 */ + ADC_EVSEL_2345_gc = (0x02<<3), /* Event Channel 2,3,4,5 */ + ADC_EVSEL_3456_gc = (0x03<<3), /* Event Channel 3,4,5,6 */ + ADC_EVSEL_4567_gc = (0x04<<3), /* Event Channel 4,5,6,7 */ + ADC_EVSEL_567_gc = (0x05<<3), /* Event Channel 5,6,7 */ + ADC_EVSEL_67_gc = (0x06<<3), /* Event Channel 6,7 */ + ADC_EVSEL_7_gc = (0x07<<3), /* Event Channel 7 */ +} ADC_EVSEL_t; + +/* Event action selection */ +typedef enum ADC_EVACT_enum +{ + ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ + ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ + ADC_EVACT_CH01_gc = (0x02<<0), /* First two events trigger channel 0,1 */ + ADC_EVACT_CH012_gc = (0x03<<0), /* First three events trigger channel 0,1,2 */ + ADC_EVACT_CH0123_gc = (0x04<<0), /* Events trigger channel 0,1,2,3 */ + ADC_EVACT_SWEEP_gc = (0x05<<0), /* First event triggers sweep */ + ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), /* First event triggers synchronized sweep */ +} ADC_EVACT_t; + +/* Interupt mode */ +typedef enum ADC_CH_INTMODE_enum +{ + ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ + ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ + ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ +} ADC_CH_INTMODE_t; + +/* Interrupt level */ +typedef enum ADC_CH_INTLVL_enum +{ + ADC_CH_INTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + ADC_CH_INTLVL_LO_gc = (0x01<<0), /* Low level */ + ADC_CH_INTLVL_MED_gc = (0x02<<0), /* Medium level */ + ADC_CH_INTLVL_HI_gc = (0x03<<0), /* High level */ +} ADC_CH_INTLVL_t; + +/* DMA request selection */ +typedef enum ADC_DMASEL_enum +{ + ADC_DMASEL_OFF_gc = (0x00<<5), /* Combined DMA request OFF */ + ADC_DMASEL_CH01_gc = (0x01<<5), /* ADC Channel 0 or 1 */ + ADC_DMASEL_CH012_gc = (0x02<<5), /* ADC Channel 0 or 1 or 2 */ + ADC_DMASEL_CH0123_gc = (0x03<<5), /* ADC Channel 0 or 1 or 2 or 3 */ +} ADC_DMASEL_t; + +/* Clock prescaler */ +typedef enum ADC_PRESCALER_enum +{ + ADC_PRESCALER_DIV4_gc = (0x00<<0), /* Divide clock by 4 */ + ADC_PRESCALER_DIV8_gc = (0x01<<0), /* Divide clock by 8 */ + ADC_PRESCALER_DIV16_gc = (0x02<<0), /* Divide clock by 16 */ + ADC_PRESCALER_DIV32_gc = (0x03<<0), /* Divide clock by 32 */ + ADC_PRESCALER_DIV64_gc = (0x04<<0), /* Divide clock by 64 */ + ADC_PRESCALER_DIV128_gc = (0x05<<0), /* Divide clock by 128 */ + ADC_PRESCALER_DIV256_gc = (0x06<<0), /* Divide clock by 256 */ + ADC_PRESCALER_DIV512_gc = (0x07<<0), /* Divide clock by 512 */ +} ADC_PRESCALER_t; + + +/* +-------------------------------------------------------------------------- +DAC - Digital/Analog Converter +-------------------------------------------------------------------------- +*/ + +/* Digital-to-Analog Converter */ +typedef struct DAC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t EVCTRL; /* Event Input Control */ + register8_t TIMCTRL; /* Timing Control */ + register8_t STATUS; /* Status */ + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t GAINCAL; /* Gain Calibration */ + register8_t OFFSETCAL; /* Offset Calibration */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + _WORDREGISTER(CH0DATA); /* Channel 0 Data */ + _WORDREGISTER(CH1DATA); /* Channel 1 Data */ +} DAC_t; + +/* Output channel selection */ +typedef enum DAC_CHSEL_enum +{ + DAC_CHSEL_SINGLE_gc = (0x00<<5), /* Single channel operation (Channel A only) */ + DAC_CHSEL_DUAL_gc = (0x02<<5), /* Dual channel operation (S/H on both channels) */ +} DAC_CHSEL_t; + +/* Reference voltage selection */ +typedef enum DAC_REFSEL_enum +{ + DAC_REFSEL_INT1V_gc = (0x00<<3), /* Internal 1V */ + DAC_REFSEL_AVCC_gc = (0x01<<3), /* Analog supply voltage */ + DAC_REFSEL_AREFA_gc = (0x02<<3), /* External reference on AREF on PORTA */ + DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */ +} DAC_REFSEL_t; + +/* Event channel selection */ +typedef enum DAC_EVSEL_enum +{ + DAC_EVSEL_0_gc = (0x00<<0), /* Event Channel 0 */ + DAC_EVSEL_1_gc = (0x01<<0), /* Event Channel 1 */ + DAC_EVSEL_2_gc = (0x02<<0), /* Event Channel 2 */ + DAC_EVSEL_3_gc = (0x03<<0), /* Event Channel 3 */ + DAC_EVSEL_4_gc = (0x04<<0), /* Event Channel 4 */ + DAC_EVSEL_5_gc = (0x05<<0), /* Event Channel 5 */ + DAC_EVSEL_6_gc = (0x06<<0), /* Event Channel 6 */ + DAC_EVSEL_7_gc = (0x07<<0), /* Event Channel 7 */ +} DAC_EVSEL_t; + +/* Conversion interval */ +typedef enum DAC_CONINTVAL_enum +{ + DAC_CONINTVAL_1CLK_gc = (0x00<<4), /* 1 CLK / 2 CLK in S/H mode */ + DAC_CONINTVAL_2CLK_gc = (0x01<<4), /* 2 CLK / 3 CLK in S/H mode */ + DAC_CONINTVAL_4CLK_gc = (0x02<<4), /* 4 CLK / 6 CLK in S/H mode */ + DAC_CONINTVAL_8CLK_gc = (0x03<<4), /* 8 CLK / 12 CLK in S/H mode */ + DAC_CONINTVAL_16CLK_gc = (0x04<<4), /* 16 CLK / 24 CLK in S/H mode */ + DAC_CONINTVAL_32CLK_gc = (0x05<<4), /* 32 CLK / 48 CLK in S/H mode */ + DAC_CONINTVAL_64CLK_gc = (0x06<<4), /* 64 CLK / 96 CLK in S/H mode */ + DAC_CONINTVAL_128CLK_gc = (0x07<<4), /* 128 CLK / 192 CLK in S/H mode */ +} DAC_CONINTVAL_t; + +/* Refresh rate */ +typedef enum DAC_REFRESH_enum +{ + DAC_REFRESH_16CLK_gc = (0x00<<0), /* 16 CLK */ + DAC_REFRESH_32CLK_gc = (0x01<<0), /* 32 CLK */ + DAC_REFRESH_64CLK_gc = (0x02<<0), /* 64 CLK */ + DAC_REFRESH_128CLK_gc = (0x03<<0), /* 128 CLK */ + DAC_REFRESH_256CLK_gc = (0x04<<0), /* 256 CLK */ + DAC_REFRESH_512CLK_gc = (0x05<<0), /* 512 CLK */ + DAC_REFRESH_1024CLK_gc = (0x06<<0), /* 1024 CLK */ + DAC_REFRESH_2048CLK_gc = (0x07<<0), /* 2048 CLK */ + DAC_REFRESH_4086CLK_gc = (0x08<<0), /* 4096 CLK */ + DAC_REFRESH_8192CLK_gc = (0x09<<0), /* 8192 CLK */ + DAC_REFRESH_16384CLK_gc = (0x0A<<0), /* 16384 CLK */ + DAC_REFRESH_32768CLK_gc = (0x0B<<0), /* 32768 CLK */ + DAC_REFRESH_65536CLK_gc = (0x0C<<0), /* 65536 CLK */ + DAC_REFRESH_OFF_gc = (0x0F<<0), /* Auto refresh OFF */ +} DAC_REFRESH_t; + + +/* +-------------------------------------------------------------------------- +RTC - Real-Time Clounter +-------------------------------------------------------------------------- +*/ + +/* Real-Time Counter */ +typedef struct RTC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t TEMP; /* Temporary register */ + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + _WORDREGISTER(CNT); /* Count Register */ + _WORDREGISTER(PER); /* Period Register */ + _WORDREGISTER(COMP); /* Compare Register */ +} RTC_t; + +/* Prescaler Factor */ +typedef enum RTC_PRESCALER_enum +{ + RTC_PRESCALER_OFF_gc = (0x00<<0), /* RTC Off */ + RTC_PRESCALER_DIV1_gc = (0x01<<0), /* RTC Clock */ + RTC_PRESCALER_DIV2_gc = (0x02<<0), /* RTC Clock / 2 */ + RTC_PRESCALER_DIV8_gc = (0x03<<0), /* RTC Clock / 8 */ + RTC_PRESCALER_DIV16_gc = (0x04<<0), /* RTC Clock / 16 */ + RTC_PRESCALER_DIV64_gc = (0x05<<0), /* RTC Clock / 64 */ + RTC_PRESCALER_DIV256_gc = (0x06<<0), /* RTC Clock / 256 */ + RTC_PRESCALER_DIV1024_gc = (0x07<<0), /* RTC Clock / 1024 */ +} RTC_PRESCALER_t; + +/* Compare Interrupt level */ +typedef enum RTC_COMPINTLVL_enum +{ + RTC_COMPINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + RTC_COMPINTLVL_LO_gc = (0x01<<2), /* Low Level */ + RTC_COMPINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + RTC_COMPINTLVL_HI_gc = (0x03<<2), /* High Level */ +} RTC_COMPINTLVL_t; + +/* Overflow Interrupt level */ +typedef enum RTC_OVFINTLVL_enum +{ + RTC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + RTC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + RTC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + RTC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} RTC_OVFINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* EBI Chip Select Module */ +typedef struct EBI_CS_struct +{ + register8_t CTRLA; /* Chip Select Control Register A */ + register8_t CTRLB; /* Chip Select Control Register B */ + _WORDREGISTER(BASEADDR); /* Chip Select Base Address */ +} EBI_CS_t; + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* External Bus Interface */ +typedef struct EBI_struct +{ + register8_t CTRL; /* Control */ + register8_t SDRAMCTRLA; /* SDRAM Control Register A */ + register8_t reserved_0x02; + register8_t reserved_0x03; + _WORDREGISTER(REFRESH); /* SDRAM Refresh Period */ + _WORDREGISTER(INITDLY); /* SDRAM Initialization Delay */ + register8_t SDRAMCTRLB; /* SDRAM Control Register B */ + register8_t SDRAMCTRLC; /* SDRAM Control Register C */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + EBI_CS_t CS0; /* Chip Select 0 */ + EBI_CS_t CS1; /* Chip Select 1 */ + EBI_CS_t CS2; /* Chip Select 2 */ + EBI_CS_t CS3; /* Chip Select 3 */ +} EBI_t; + +/* Chip Select adress space */ +typedef enum EBI_CS_ASPACE_enum +{ + EBI_CS_ASPACE_256B_gc = (0x00<<2), /* 256 bytes */ + EBI_CS_ASPACE_512B_gc = (0x01<<2), /* 512 bytes */ + EBI_CS_ASPACE_1KB_gc = (0x02<<2), /* 1K bytes */ + EBI_CS_ASPACE_2KB_gc = (0x03<<2), /* 2K bytes */ + EBI_CS_ASPACE_4KB_gc = (0x04<<2), /* 4K bytes */ + EBI_CS_ASPACE_8KB_gc = (0x05<<2), /* 8K bytes */ + EBI_CS_ASPACE_16KB_gc = (0x06<<2), /* 16K bytes */ + EBI_CS_ASPACE_32KB_gc = (0x07<<2), /* 32K bytes */ + EBI_CS_ASPACE_64KB_gc = (0x08<<2), /* 64K bytes */ + EBI_CS_ASPACE_128KB_gc = (0x09<<2), /* 128K bytes */ + EBI_CS_ASPACE_256KB_gc = (0x0A<<2), /* 256K bytes */ + EBI_CS_ASPACE_512KB_gc = (0x0B<<2), /* 512K bytes */ + EBI_CS_ASPACE_1MB_gc = (0x0C<<2), /* 1M bytes */ + EBI_CS_ASPACE_2MB_gc = (0x0D<<2), /* 2M bytes */ + EBI_CS_ASPACE_4MB_gc = (0x0E<<2), /* 4M bytes */ + EBI_CS_ASPACE_8MB_gc = (0x0F<<2), /* 8M bytes */ + EBI_CS_ASPACE_16M_gc = (0x10<<2), /* 16M bytes */ +} EBI_CS_ASPACE_t; + +/* */ +typedef enum EBI_CS_SRWS_enum +{ + EBI_CS_SRWS_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_CS_SRWS_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_CS_SRWS_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_CS_SRWS_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_CS_SRWS_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_CS_SRWS_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_CS_SRWS_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_CS_SRWS_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_CS_SRWS_t; + +/* Chip Select address mode */ +typedef enum EBI_CS_MODE_enum +{ + EBI_CS_MODE_DISABLED_gc = (0x00<<0), /* Chip Select Disabled */ + EBI_CS_MODE_SRAM_gc = (0x01<<0), /* Chip Select in SRAM mode */ + EBI_CS_MODE_LPC_gc = (0x02<<0), /* Chip Select in SRAM LPC mode */ + EBI_CS_MODE_SDRAM_gc = (0x03<<0), /* Chip Select in SDRAM mode */ +} EBI_CS_MODE_t; + +/* Chip Select SDRAM mode */ +typedef enum EBI_CS_SDMODE_enum +{ + EBI_CS_SDMODE_NORMAL_gc = (0x00<<0), /* Normal mode */ + EBI_CS_SDMODE_LOAD_gc = (0x01<<0), /* Load Mode Register command mode */ +} EBI_CS_SDMODE_t; + +/* */ +typedef enum EBI_SDDATAW_enum +{ + EBI_SDDATAW_4BIT_gc = (0x00<<6), /* 4-bit data bus */ + EBI_SDDATAW_8BIT_gc = (0x01<<6), /* 8-bit data bus */ +} EBI_SDDATAW_t; + +/* */ +typedef enum EBI_LPCMODE_enum +{ + EBI_LPCMODE_ALE1_gc = (0x00<<4), /* Data muxed with addr byte 0 */ + EBI_LPCMODE_ALE12_gc = (0x02<<4), /* Data muxed with addr byte 0 and 1 */ +} EBI_LPCMODE_t; + +/* */ +typedef enum EBI_SRMODE_enum +{ + EBI_SRMODE_ALE1_gc = (0x00<<2), /* Addr byte 0 muxed with 1 */ + EBI_SRMODE_ALE2_gc = (0x01<<2), /* Addr byte 0 muxed with 2 */ + EBI_SRMODE_ALE12_gc = (0x02<<2), /* Addr byte 0 muxed with 1 and 2 */ + EBI_SRMODE_NOALE_gc = (0x03<<2), /* No addr muxing */ +} EBI_SRMODE_t; + +/* */ +typedef enum EBI_IFMODE_enum +{ + EBI_IFMODE_DISABLED_gc = (0x00<<0), /* EBI Disabled */ + EBI_IFMODE_3PORT_gc = (0x01<<0), /* 3-port mode */ + EBI_IFMODE_4PORT_gc = (0x02<<0), /* 4-port mode */ + EBI_IFMODE_2PORT_gc = (0x03<<0), /* 2-port mode */ +} EBI_IFMODE_t; + +/* */ +typedef enum EBI_SDCOL_enum +{ + EBI_SDCOL_8BIT_gc = (0x00<<0), /* 8 column bits */ + EBI_SDCOL_9BIT_gc = (0x01<<0), /* 9 column bits */ + EBI_SDCOL_10BIT_gc = (0x02<<0), /* 10 column bits */ + EBI_SDCOL_11BIT_gc = (0x03<<0), /* 11 column bits */ +} EBI_SDCOL_t; + +/* */ +typedef enum EBI_MRDLY_enum +{ + EBI_MRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_MRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_MRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_MRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_MRDLY_t; + +/* */ +typedef enum EBI_ROWCYCDLY_enum +{ + EBI_ROWCYCDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ROWCYCDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ROWCYCDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ROWCYCDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ROWCYCDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ROWCYCDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ROWCYCDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ROWCYCDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ROWCYCDLY_t; + +/* */ +typedef enum EBI_RPDLY_enum +{ + EBI_RPDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_RPDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_RPDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_RPDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_RPDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_RPDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_RPDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_RPDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_RPDLY_t; + +/* */ +typedef enum EBI_WRDLY_enum +{ + EBI_WRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_WRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_WRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_WRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_WRDLY_t; + +/* */ +typedef enum EBI_ESRDLY_enum +{ + EBI_ESRDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ESRDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ESRDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ESRDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ESRDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ESRDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ESRDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ESRDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ESRDLY_t; + +/* */ +typedef enum EBI_ROWCOLDLY_enum +{ + EBI_ROWCOLDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_ROWCOLDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_ROWCOLDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_ROWCOLDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_ROWCOLDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_ROWCOLDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_ROWCOLDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_ROWCOLDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_ROWCOLDLY_t; + + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_MASTER_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t STATUS; /* Status Register */ + register8_t BAUD; /* Baurd Rate Control Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_MASTER_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_SLAVE_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t STATUS; /* Status Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_SLAVE_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* Two-Wire Interface */ +typedef struct TWI_struct +{ + register8_t CTRL; /* TWI Common Control Register */ + TWI_MASTER_t MASTER; /* TWI master module */ + TWI_SLAVE_t SLAVE; /* TWI slave module */ +} TWI_t; + +/* Master Interrupt Level */ +typedef enum TWI_MASTER_INTLVL_enum +{ + TWI_MASTER_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_MASTER_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_MASTER_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_MASTER_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_MASTER_INTLVL_t; + +/* Inactive Timeout */ +typedef enum TWI_MASTER_TIMEOUT_enum +{ + TWI_MASTER_TIMEOUT_DISABLED_gc = (0x00<<2), /* Bus Timeout Disabled */ + TWI_MASTER_TIMEOUT_50US_gc = (0x01<<2), /* 50 Microseconds */ + TWI_MASTER_TIMEOUT_100US_gc = (0x02<<2), /* 100 Microseconds */ + TWI_MASTER_TIMEOUT_200US_gc = (0x03<<2), /* 200 Microseconds */ +} TWI_MASTER_TIMEOUT_t; + +/* Master Command */ +typedef enum TWI_MASTER_CMD_enum +{ + TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ + TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ + TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ +} TWI_MASTER_CMD_t; + +/* Master Bus State */ +typedef enum TWI_MASTER_BUSSTATE_enum +{ + TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ + TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ + TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ + TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ +} TWI_MASTER_BUSSTATE_t; + +/* Slave Interrupt Level */ +typedef enum TWI_SLAVE_INTLVL_enum +{ + TWI_SLAVE_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_SLAVE_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_SLAVE_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_SLAVE_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_SLAVE_INTLVL_t; + +/* Slave Command */ +typedef enum TWI_SLAVE_CMD_enum +{ + TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ + TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ +} TWI_SLAVE_CMD_t; + + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O port Configuration */ +typedef struct PORTCFG_struct +{ + register8_t MPCMASK; /* Multi-pin Configuration Mask */ + register8_t reserved_0x01; + register8_t VPCTRLA; /* Virtual Port Control Register A */ + register8_t VPCTRLB; /* Virtual Port Control Register B */ + register8_t CLKEVOUT; /* Clock and Event Out Register */ +} PORTCFG_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* Virtual Port */ +typedef struct VPORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t OUT; /* I/O Port Output */ + register8_t IN; /* I/O Port Input */ + register8_t INTFLAGS; /* Interrupt Flag Register */ +} VPORT_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O Ports */ +typedef struct PORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t DIRSET; /* I/O Port Data Direction Set */ + register8_t DIRCLR; /* I/O Port Data Direction Clear */ + register8_t DIRTGL; /* I/O Port Data Direction Toggle */ + register8_t OUT; /* I/O Port Output */ + register8_t OUTSET; /* I/O Port Output Set */ + register8_t OUTCLR; /* I/O Port Output Clear */ + register8_t OUTTGL; /* I/O Port Output Toggle */ + register8_t IN; /* I/O port Input */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INT0MASK; /* Port Interrupt 0 Mask */ + register8_t INT1MASK; /* Port Interrupt 1 Mask */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t PIN0CTRL; /* Pin 0 Control Register */ + register8_t PIN1CTRL; /* Pin 1 Control Register */ + register8_t PIN2CTRL; /* Pin 2 Control Register */ + register8_t PIN3CTRL; /* Pin 3 Control Register */ + register8_t PIN4CTRL; /* Pin 4 Control Register */ + register8_t PIN5CTRL; /* Pin 5 Control Register */ + register8_t PIN6CTRL; /* Pin 6 Control Register */ + register8_t PIN7CTRL; /* Pin 7 Control Register */ +} PORT_t; + +/* Virtual Port 0 Mapping */ +typedef enum PORTCFG_VP0MAP_enum +{ + PORTCFG_VP0MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP0MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP0MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP0MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP0MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP0MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP0MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP0MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP0MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP0MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP0MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP0MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP0MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP0MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP0MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP0MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP0MAP_t; + +/* Virtual Port 1 Mapping */ +typedef enum PORTCFG_VP1MAP_enum +{ + PORTCFG_VP1MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP1MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP1MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP1MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP1MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP1MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP1MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP1MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP1MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP1MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP1MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP1MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP1MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP1MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP1MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP1MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP1MAP_t; + +/* Virtual Port 2 Mapping */ +typedef enum PORTCFG_VP2MAP_enum +{ + PORTCFG_VP2MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP2MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP2MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP2MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP2MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP2MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP2MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP2MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP2MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP2MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP2MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP2MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP2MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP2MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP2MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP2MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP2MAP_t; + +/* Virtual Port 3 Mapping */ +typedef enum PORTCFG_VP3MAP_enum +{ + PORTCFG_VP3MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP3MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP3MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP3MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP3MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP3MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP3MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP3MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP3MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP3MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP3MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP3MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP3MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP3MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP3MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP3MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP3MAP_t; + +/* Clock Output Port */ +typedef enum PORTCFG_CLKOUT_enum +{ + PORTCFG_CLKOUT_OFF_gc = (0x00<<0), /* Clock Output Disabled */ + PORTCFG_CLKOUT_PC7_gc = (0x01<<0), /* Clock Output on Port C pin 7 */ + PORTCFG_CLKOUT_PD7_gc = (0x02<<0), /* Clock Output on Port D pin 7 */ + PORTCFG_CLKOUT_PE7_gc = (0x03<<0), /* Clock Output on Port E pin 7 */ +} PORTCFG_CLKOUT_t; + +/* Event Output Port */ +typedef enum PORTCFG_EVOUT_enum +{ + PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ + PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ + PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ + PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ +} PORTCFG_EVOUT_t; + +/* Port Interrupt 0 Level */ +typedef enum PORT_INT0LVL_enum +{ + PORT_INT0LVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + PORT_INT0LVL_LO_gc = (0x01<<0), /* Low Level */ + PORT_INT0LVL_MED_gc = (0x02<<0), /* Medium Level */ + PORT_INT0LVL_HI_gc = (0x03<<0), /* High Level */ +} PORT_INT0LVL_t; + +/* Port Interrupt 1 Level */ +typedef enum PORT_INT1LVL_enum +{ + PORT_INT1LVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + PORT_INT1LVL_LO_gc = (0x01<<2), /* Low Level */ + PORT_INT1LVL_MED_gc = (0x02<<2), /* Medium Level */ + PORT_INT1LVL_HI_gc = (0x03<<2), /* High Level */ +} PORT_INT1LVL_t; + +/* Output/Pull Configuration */ +typedef enum PORT_OPC_enum +{ + PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ + PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ + PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ + PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ + PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ + PORT_OPC_WIREDAND_gc = (0x05<<3), /* Wired AND */ + PORT_OPC_WIREDORPULL_gc = (0x06<<3), /* Wired OR w/ Pull-down */ + PORT_OPC_WIREDANDPULL_gc = (0x07<<3), /* Wired AND w/ Pull-up */ +} PORT_OPC_t; + +/* Input/Sense Configuration */ +typedef enum PORT_ISC_enum +{ + PORT_ISC_BOTHEDGES_gc = (0x00<<0), /* Sense Both Edges */ + PORT_ISC_RISING_gc = (0x01<<0), /* Sense Rising Edge */ + PORT_ISC_FALLING_gc = (0x02<<0), /* Sense Falling Edge */ + PORT_ISC_LEVEL_gc = (0x03<<0), /* Sense Level (Transparent For Events) */ + PORT_ISC_INPUT_DISABLE_gc = (0x07<<0), /* Disable Digital Input Buffer */ +} PORT_ISC_t; + + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 0 */ +typedef struct TC0_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + _WORDREGISTER(CCC); /* Compare or Capture C */ + _WORDREGISTER(CCD); /* Compare or Capture D */ + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ + _WORDREGISTER(CCCBUF); /* Compare Or Capture C Buffer */ + _WORDREGISTER(CCDBUF); /* Compare Or Capture D Buffer */ +} TC0_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 1 */ +typedef struct TC1_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t reserved_0x2E; + register8_t reserved_0x2F; + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ +} TC1_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* Advanced Waveform Extension */ +typedef struct AWEX_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t FDEVMASK; /* Fault Detection Event Mask */ + register8_t FDCTRL; /* Fault Detection Control Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x05; + register8_t DTBOTH; /* Dead Time Both Sides */ + register8_t DTBOTHBUF; /* Dead Time Both Sides Buffer */ + register8_t DTLS; /* Dead Time Low Side */ + register8_t DTHS; /* Dead Time High Side */ + register8_t DTLSBUF; /* Dead Time Low Side Buffer */ + register8_t DTHSBUF; /* Dead Time High Side Buffer */ + register8_t OUTOVEN; /* Output Override Enable */ +} AWEX_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* High-Resolution Extension */ +typedef struct HIRES_struct +{ + register8_t CTRL; /* Control Register */ +} HIRES_t; + +/* Clock Selection */ +typedef enum TC_CLKSEL_enum +{ + TC_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ + TC_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ + TC_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ + TC_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ + TC_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ + TC_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ + TC_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ + TC_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ + TC_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_CLKSEL_EVCH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_CLKSEL_EVCH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_CLKSEL_EVCH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_CLKSEL_EVCH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_CLKSEL_t; + +/* Waveform Generation Mode */ +typedef enum TC_WGMODE_enum +{ + TC_WGMODE_NORMAL_gc = (0x00<<0), /* Normal Mode */ + TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ + TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ + TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ + TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on TOP and BOTTOM */ + TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ +} TC_WGMODE_t; + +/* Event Action */ +typedef enum TC_EVACT_enum +{ + TC_EVACT_OFF_gc = (0x00<<5), /* No Event Action */ + TC_EVACT_CAPT_gc = (0x01<<5), /* Input Capture */ + TC_EVACT_UPDOWN_gc = (0x02<<5), /* Externally Controlled Up/Down Count */ + TC_EVACT_QDEC_gc = (0x03<<5), /* Quadrature Decode */ + TC_EVACT_RESTART_gc = (0x04<<5), /* Restart */ + TC_EVACT_FRW_gc = (0x05<<5), /* Frequency Capture */ + TC_EVACT_PW_gc = (0x06<<5), /* Pulse-width Capture */ +} TC_EVACT_t; + +/* Event Selection */ +typedef enum TC_EVSEL_enum +{ + TC_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + TC_EVSEL_CH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_EVSEL_CH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_EVSEL_CH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_EVSEL_CH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_EVSEL_CH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_EVSEL_CH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_EVSEL_CH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_EVSEL_CH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_EVSEL_t; + +/* Error Interrupt Level */ +typedef enum TC_ERRINTLVL_enum +{ + TC_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_ERRINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_ERRINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_ERRINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_ERRINTLVL_t; + +/* Overflow Interrupt Level */ +typedef enum TC_OVFINTLVL_enum +{ + TC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_OVFINTLVL_t; + +/* Compare or Capture D Interrupt Level */ +typedef enum TC_CCDINTLVL_enum +{ + TC_CCDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TC_CCDINTLVL_LO_gc = (0x01<<6), /* Low Level */ + TC_CCDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TC_CCDINTLVL_HI_gc = (0x03<<6), /* High Level */ +} TC_CCDINTLVL_t; + +/* Compare or Capture C Interrupt Level */ +typedef enum TC_CCCINTLVL_enum +{ + TC_CCCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + TC_CCCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + TC_CCCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + TC_CCCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} TC_CCCINTLVL_t; + +/* Compare or Capture B Interrupt Level */ +typedef enum TC_CCBINTLVL_enum +{ + TC_CCBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_CCBINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_CCBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_CCBINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_CCBINTLVL_t; + +/* Compare or Capture A Interrupt Level */ +typedef enum TC_CCAINTLVL_enum +{ + TC_CCAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_CCAINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_CCAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_CCAINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_CCAINTLVL_t; + +/* Timer/Counter Command */ +typedef enum TC_CMD_enum +{ + TC_CMD_NONE_gc = (0x00<<2), /* No Command */ + TC_CMD_UPDATE_gc = (0x01<<2), /* Force Update */ + TC_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ + TC_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ +} TC_CMD_t; + +/* Fault Detect Action */ +typedef enum AWEX_FDACT_enum +{ + AWEX_FDACT_NONE_gc = (0x00<<0), /* No Fault Protection */ + AWEX_FDACT_CLEAROE_gc = (0x01<<0), /* Clear Output Enable Bits */ + AWEX_FDACT_CLEARDIR_gc = (0x03<<0), /* Clear I/O Port Direction Bits */ +} AWEX_FDACT_t; + +/* High Resolution Enable */ +typedef enum HIRES_HREN_enum +{ + HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ + HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ + HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ + HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ +} HIRES_HREN_t; + + +/* +-------------------------------------------------------------------------- +USART - Universal Asynchronous Receiver-Transmitter +-------------------------------------------------------------------------- +*/ + +/* Universal Synchronous/Asynchronous Receiver/Transmitter */ +typedef struct USART_struct +{ + register8_t DATA; /* Data Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x02; + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t BAUDCTRLA; /* Baud Rate Control Register A */ + register8_t BAUDCTRLB; /* Baud Rate Control Register B */ +} USART_t; + +/* Receive Complete Interrupt level */ +typedef enum USART_RXCINTLVL_enum +{ + USART_RXCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + USART_RXCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + USART_RXCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + USART_RXCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} USART_RXCINTLVL_t; + +/* Transmit Complete Interrupt level */ +typedef enum USART_TXCINTLVL_enum +{ + USART_TXCINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + USART_TXCINTLVL_LO_gc = (0x01<<2), /* Low Level */ + USART_TXCINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + USART_TXCINTLVL_HI_gc = (0x03<<2), /* High Level */ +} USART_TXCINTLVL_t; + +/* Data Register Empty Interrupt level */ +typedef enum USART_DREINTLVL_enum +{ + USART_DREINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + USART_DREINTLVL_LO_gc = (0x01<<0), /* Low Level */ + USART_DREINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + USART_DREINTLVL_HI_gc = (0x03<<0), /* High Level */ +} USART_DREINTLVL_t; + +/* Character Size */ +typedef enum USART_CHSIZE_enum +{ + USART_CHSIZE_5BIT_gc = (0x00<<0), /* Character size: 5 bit */ + USART_CHSIZE_6BIT_gc = (0x01<<0), /* Character size: 6 bit */ + USART_CHSIZE_7BIT_gc = (0x02<<0), /* Character size: 7 bit */ + USART_CHSIZE_8BIT_gc = (0x03<<0), /* Character size: 8 bit */ + USART_CHSIZE_9BIT_gc = (0x07<<0), /* Character size: 9 bit */ +} USART_CHSIZE_t; + +/* Communication Mode */ +typedef enum USART_CMODE_enum +{ + USART_CMODE_ASYNCHRONOUS_gc = (0x00<<6), /* Asynchronous Mode */ + USART_CMODE_SYNCHRONOUS_gc = (0x01<<6), /* Synchronous Mode */ + USART_CMODE_IRDA_gc = (0x02<<6), /* IrDA Mode */ + USART_CMODE_MSPI_gc = (0x03<<6), /* Master SPI Mode */ +} USART_CMODE_t; + +/* Parity Mode */ +typedef enum USART_PMODE_enum +{ + USART_PMODE_DISABLED_gc = (0x00<<4), /* No Parity */ + USART_PMODE_EVEN_gc = (0x02<<4), /* Even Parity */ + USART_PMODE_ODD_gc = (0x03<<4), /* Odd Parity */ +} USART_PMODE_t; + + +/* +-------------------------------------------------------------------------- +SPI - Serial Peripheral Interface +-------------------------------------------------------------------------- +*/ + +/* Serial Peripheral Interface */ +typedef struct SPI_struct +{ + register8_t CTRL; /* Control Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t STATUS; /* Status Register */ + register8_t DATA; /* Data Register */ +} SPI_t; + +/* SPI Mode */ +typedef enum SPI_MODE_enum +{ + SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */ + SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */ + SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */ + SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */ +} SPI_MODE_t; + +/* Prescaler setting */ +typedef enum SPI_PRESCALER_enum +{ + SPI_PRESCALER_DIV4_gc = (0x00<<0), /* System Clock / 4 */ + SPI_PRESCALER_DIV16_gc = (0x01<<0), /* System Clock / 16 */ + SPI_PRESCALER_DIV64_gc = (0x02<<0), /* System Clock / 64 */ + SPI_PRESCALER_DIV128_gc = (0x03<<0), /* System Clock / 128 */ +} SPI_PRESCALER_t; + +/* Interrupt level */ +typedef enum SPI_INTLVL_enum +{ + SPI_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + SPI_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + SPI_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + SPI_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} SPI_INTLVL_t; + + +/* +-------------------------------------------------------------------------- +IRCOM - IR Communication Module +-------------------------------------------------------------------------- +*/ + +/* IR Communication Module */ +typedef struct IRCOM_struct +{ + register8_t CTRL; /* Control Register */ + register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ + register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ +} IRCOM_t; + +/* Event channel selection */ +typedef enum IRDA_EVSEL_enum +{ + IRDA_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + IRDA_EVSEL_0_gc = (0x08<<0), /* Event Channel 0 */ + IRDA_EVSEL_1_gc = (0x09<<0), /* Event Channel 1 */ + IRDA_EVSEL_2_gc = (0x0A<<0), /* Event Channel 2 */ + IRDA_EVSEL_3_gc = (0x0B<<0), /* Event Channel 3 */ + IRDA_EVSEL_4_gc = (0x0C<<0), /* Event Channel 4 */ + IRDA_EVSEL_5_gc = (0x0D<<0), /* Event Channel 5 */ + IRDA_EVSEL_6_gc = (0x0E<<0), /* Event Channel 6 */ + IRDA_EVSEL_7_gc = (0x0F<<0), /* Event Channel 7 */ +} IRDA_EVSEL_t; + + +/* +-------------------------------------------------------------------------- +AES - AES Module +-------------------------------------------------------------------------- +*/ + +/* AES Module */ +typedef struct AES_struct +{ + register8_t CTRL; /* AES Control Register */ + register8_t STATUS; /* AES Status Register */ + register8_t STATE; /* AES State Register */ + register8_t KEY; /* AES Key Register */ + register8_t INTCTRL; /* AES Interrupt Control Register */ +} AES_t; + +/* Interrupt level */ +typedef enum AES_INTLVL_enum +{ + AES_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + AES_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + AES_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + AES_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} AES_INTLVL_t; + + + +/* +========================================================================== +IO Module Instances. Mapped to memory. +========================================================================== +*/ + +#define GPIO (*(GPIO_t *) 0x0000) /* General Purpose IO Registers */ +#define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port 0 */ +#define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port 1 */ +#define VPORT2 (*(VPORT_t *) 0x0018) /* Virtual Port 2 */ +#define VPORT3 (*(VPORT_t *) 0x001C) /* Virtual Port 3 */ +#define OCD (*(OCD_t *) 0x002E) /* On-Chip Debug System */ +#define CPU (*(CPU_t *) 0x0030) /* CPU Registers */ +#define CLK (*(CLK_t *) 0x0040) /* Clock System */ +#define SLEEP (*(SLEEP_t *) 0x0048) /* Sleep Controller */ +#define OSC (*(OSC_t *) 0x0050) /* Oscillator Control */ +#define DFLLRC32M (*(DFLL_t *) 0x0060) /* DFLL for 32MHz RC Oscillator */ +#define DFLLRC2M (*(DFLL_t *) 0x0068) /* DFLL for 2MHz RC Oscillator */ +#define PR (*(PR_t *) 0x0070) /* Power Reduction */ +#define RST (*(RST_t *) 0x0078) /* Reset Controller */ +#define WDT (*(WDT_t *) 0x0080) /* Watch-Dog Timer */ +#define MCU (*(MCU_t *) 0x0090) /* MCU Control */ +#define PMIC (*(PMIC_t *) 0x00A0) /* Programmable Interrupt Controller */ +#define PORTCFG (*(PORTCFG_t *) 0x00B0) /* Port Configuration */ +#define AES (*(AES_t *) 0x00C0) /* AES Crypto Module */ +#define DMA (*(DMA_t *) 0x0100) /* DMA Controller */ +#define EVSYS (*(EVSYS_t *) 0x0180) /* Event System */ +#define NVM (*(NVM_t *) 0x01C0) /* Non Volatile Memory Controller */ +#define ADCA (*(ADC_t *) 0x0200) /* Analog to Digital Converter A */ +#define ADCB (*(ADC_t *) 0x0240) /* Analog to Digital Converter B */ +#define DACB (*(DAC_t *) 0x0320) /* Digital to Analog Converter B */ +#define ACA (*(AC_t *) 0x0380) /* Analog Comparator A */ +#define ACB (*(AC_t *) 0x0390) /* Analog Comparator B */ +#define RTC (*(RTC_t *) 0x0400) /* Real-Time Counter */ +#define TWIC (*(TWI_t *) 0x0480) /* Two-Wire Interface C */ +#define TWIE (*(TWI_t *) 0x04A0) /* Two-Wire Interface E */ +#define PORTA (*(PORT_t *) 0x0600) /* Port A */ +#define PORTB (*(PORT_t *) 0x0620) /* Port B */ +#define PORTC (*(PORT_t *) 0x0640) /* Port C */ +#define PORTD (*(PORT_t *) 0x0660) /* Port D */ +#define PORTE (*(PORT_t *) 0x0680) /* Port E */ +#define PORTF (*(PORT_t *) 0x06A0) /* Port F */ +#define PORTR (*(PORT_t *) 0x07E0) /* Port R */ +#define TCC0 (*(TC0_t *) 0x0800) /* Timer/Counter C0 */ +#define TCC1 (*(TC1_t *) 0x0840) /* Timer/Counter C1 */ +#define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension C */ +#define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension C */ +#define USARTC0 (*(USART_t *) 0x08A0) /* Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC1 (*(USART_t *) 0x08B0) /* Universal Asynchronous Receiver-Transmitter C1 */ +#define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface C */ +#define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ +#define TCD0 (*(TC0_t *) 0x0900) /* Timer/Counter D0 */ +#define TCD1 (*(TC1_t *) 0x0940) /* Timer/Counter D1 */ +#define HIRESD (*(HIRES_t *) 0x0990) /* High-Resolution Extension D */ +#define USARTD0 (*(USART_t *) 0x09A0) /* Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD1 (*(USART_t *) 0x09B0) /* Universal Asynchronous Receiver-Transmitter D1 */ +#define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface D */ +#define TCE0 (*(TC0_t *) 0x0A00) /* Timer/Counter E0 */ +#define TCE1 (*(TC1_t *) 0x0A40) /* Timer/Counter E1 */ +#define AWEXE (*(AWEX_t *) 0x0A80) /* Advanced Waveform Extension E */ +#define HIRESE (*(HIRES_t *) 0x0A90) /* High-Resolution Extension E */ +#define USARTE0 (*(USART_t *) 0x0AA0) /* Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE1 (*(USART_t *) 0x0AB0) /* Universal Asynchronous Receiver-Transmitter E1 */ +#define SPIE (*(SPI_t *) 0x0AC0) /* Serial Peripheral Interface E */ +#define TCF0 (*(TC0_t *) 0x0B00) /* Timer/Counter F0 */ +#define HIRESF (*(HIRES_t *) 0x0B90) /* High-Resolution Extension F */ +#define USARTF0 (*(USART_t *) 0x0BA0) /* Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF1 (*(USART_t *) 0x0BB0) /* Universal Asynchronous Receiver-Transmitter F1 */ +#define SPIF (*(SPI_t *) 0x0BC0) /* Serial Peripheral Interface F */ + + +#endif /* !defined (__ASSEMBLER__) */ + + +/* ========== Flattened fully qualified IO register names ========== */ + +/* GPIO - General Purpose IO Registers */ +#define GPIO_GPIO0 _SFR_MEM8(0x0000) +#define GPIO_GPIO1 _SFR_MEM8(0x0001) +#define GPIO_GPIO2 _SFR_MEM8(0x0002) +#define GPIO_GPIO3 _SFR_MEM8(0x0003) +#define GPIO_GPIO4 _SFR_MEM8(0x0004) +#define GPIO_GPIO5 _SFR_MEM8(0x0005) +#define GPIO_GPIO6 _SFR_MEM8(0x0006) +#define GPIO_GPIO7 _SFR_MEM8(0x0007) +#define GPIO_GPIO8 _SFR_MEM8(0x0008) +#define GPIO_GPIO9 _SFR_MEM8(0x0009) +#define GPIO_GPIOA _SFR_MEM8(0x000A) +#define GPIO_GPIOB _SFR_MEM8(0x000B) +#define GPIO_GPIOC _SFR_MEM8(0x000C) +#define GPIO_GPIOD _SFR_MEM8(0x000D) +#define GPIO_GPIOE _SFR_MEM8(0x000E) +#define GPIO_GPIOF _SFR_MEM8(0x000F) + +/* VPORT0 - Virtual Port 0 */ +#define VPORT0_DIR _SFR_MEM8(0x0010) +#define VPORT0_OUT _SFR_MEM8(0x0011) +#define VPORT0_IN _SFR_MEM8(0x0012) +#define VPORT0_INTFLAGS _SFR_MEM8(0x0013) + +/* VPORT1 - Virtual Port 1 */ +#define VPORT1_DIR _SFR_MEM8(0x0014) +#define VPORT1_OUT _SFR_MEM8(0x0015) +#define VPORT1_IN _SFR_MEM8(0x0016) +#define VPORT1_INTFLAGS _SFR_MEM8(0x0017) + +/* VPORT2 - Virtual Port 2 */ +#define VPORT2_DIR _SFR_MEM8(0x0018) +#define VPORT2_OUT _SFR_MEM8(0x0019) +#define VPORT2_IN _SFR_MEM8(0x001A) +#define VPORT2_INTFLAGS _SFR_MEM8(0x001B) + +/* VPORT3 - Virtual Port 3 */ +#define VPORT3_DIR _SFR_MEM8(0x001C) +#define VPORT3_OUT _SFR_MEM8(0x001D) +#define VPORT3_IN _SFR_MEM8(0x001E) +#define VPORT3_INTFLAGS _SFR_MEM8(0x001F) + +/* OCD - On-Chip Debug System */ +#define OCD_OCDR0 _SFR_MEM8(0x002E) +#define OCD_OCDR1 _SFR_MEM8(0x002F) + +/* CPU - CPU Registers */ +#define CPU_CCP _SFR_MEM8(0x0034) +#define CPU_RAMPD _SFR_MEM8(0x0038) +#define CPU_RAMPX _SFR_MEM8(0x0039) +#define CPU_RAMPY _SFR_MEM8(0x003A) +#define CPU_RAMPZ _SFR_MEM8(0x003B) +#define CPU_EIND _SFR_MEM8(0x003C) +#define CPU_SPL _SFR_MEM8(0x003D) +#define CPU_SPH _SFR_MEM8(0x003E) +#define CPU_SREG _SFR_MEM8(0x003F) + +/* CLK - Clock System */ +#define CLK_CTRL _SFR_MEM8(0x0040) +#define CLK_PSCTRL _SFR_MEM8(0x0041) +#define CLK_LOCK _SFR_MEM8(0x0042) +#define CLK_RTCCTRL _SFR_MEM8(0x0043) + +/* SLEEP - Sleep Controller */ +#define SLEEP_CTRL _SFR_MEM8(0x0048) + +/* OSC - Oscillator Control */ +#define OSC_CTRL _SFR_MEM8(0x0050) +#define OSC_STATUS _SFR_MEM8(0x0051) +#define OSC_XOSCCTRL _SFR_MEM8(0x0052) +#define OSC_XOSCFAIL _SFR_MEM8(0x0053) +#define OSC_RC32KCAL _SFR_MEM8(0x0054) +#define OSC_PLLCTRL _SFR_MEM8(0x0055) +#define OSC_DFLLCTRL _SFR_MEM8(0x0056) + +/* DFLLRC32M - DFLL for 32MHz RC Oscillator */ +#define DFLLRC32M_CTRL _SFR_MEM8(0x0060) +#define DFLLRC32M_CALA _SFR_MEM8(0x0062) +#define DFLLRC32M_CALB _SFR_MEM8(0x0063) +#define DFLLRC32M_OSCCNT0 _SFR_MEM8(0x0064) +#define DFLLRC32M_OSCCNT1 _SFR_MEM8(0x0065) +#define DFLLRC32M_OSCCNT2 _SFR_MEM8(0x0066) + +/* DFLLRC2M - DFLL for 2MHz RC Oscillator */ +#define DFLLRC2M_CTRL _SFR_MEM8(0x0068) +#define DFLLRC2M_CALA _SFR_MEM8(0x006A) +#define DFLLRC2M_CALB _SFR_MEM8(0x006B) +#define DFLLRC2M_OSCCNT0 _SFR_MEM8(0x006C) +#define DFLLRC2M_OSCCNT1 _SFR_MEM8(0x006D) +#define DFLLRC2M_OSCCNT2 _SFR_MEM8(0x006E) + +/* PR - Power Reduction */ +#define PR_PR _SFR_MEM8(0x0070) +#define PR_PRPA _SFR_MEM8(0x0071) +#define PR_PRPB _SFR_MEM8(0x0072) +#define PR_PRPC _SFR_MEM8(0x0073) +#define PR_PRPD _SFR_MEM8(0x0074) +#define PR_PRPE _SFR_MEM8(0x0075) +#define PR_PRPF _SFR_MEM8(0x0076) + +/* RST - Reset Controller */ +#define RST_STATUS _SFR_MEM8(0x0078) +#define RST_CTRL _SFR_MEM8(0x0079) + +/* WDT - Watch-Dog Timer */ +#define WDT_CTRL _SFR_MEM8(0x0080) +#define WDT_WINCTRL _SFR_MEM8(0x0081) +#define WDT_STATUS _SFR_MEM8(0x0082) + +/* MCU - MCU Control */ +#define MCU_DEVID0 _SFR_MEM8(0x0090) +#define MCU_DEVID1 _SFR_MEM8(0x0091) +#define MCU_DEVID2 _SFR_MEM8(0x0092) +#define MCU_REVID _SFR_MEM8(0x0093) +#define MCU_JTAGUID _SFR_MEM8(0x0094) +#define MCU_MCUCR _SFR_MEM8(0x0096) +#define MCU_EVSYSLOCK _SFR_MEM8(0x0098) +#define MCU_AWEXLOCK _SFR_MEM8(0x0099) + +/* PMIC - Programmable Interrupt Controller */ +#define PMIC_STATUS _SFR_MEM8(0x00A0) +#define PMIC_INTPRI _SFR_MEM8(0x00A1) +#define PMIC_CTRL _SFR_MEM8(0x00A2) + +/* PORTCFG - Port Configuration */ +#define PORTCFG_MPCMASK _SFR_MEM8(0x00B0) +#define PORTCFG_VPCTRLA _SFR_MEM8(0x00B2) +#define PORTCFG_VPCTRLB _SFR_MEM8(0x00B3) +#define PORTCFG_CLKEVOUT _SFR_MEM8(0x00B4) + +/* AES - AES Crypto Module */ +#define AES_CTRL _SFR_MEM8(0x00C0) +#define AES_STATUS _SFR_MEM8(0x00C1) +#define AES_STATE _SFR_MEM8(0x00C2) +#define AES_KEY _SFR_MEM8(0x00C3) +#define AES_INTCTRL _SFR_MEM8(0x00C4) + +/* DMA - DMA Controller */ +#define DMA_CTRL _SFR_MEM8(0x0100) +#define DMA_INTFLAGS _SFR_MEM8(0x0103) +#define DMA_STATUS _SFR_MEM8(0x0104) +#define DMA_TEMP _SFR_MEM16(0x0106) +#define DMA_CH0_CTRLA _SFR_MEM8(0x0110) +#define DMA_CH0_CTRLB _SFR_MEM8(0x0111) +#define DMA_CH0_ADDRCTRL _SFR_MEM8(0x0112) +#define DMA_CH0_TRIGSRC _SFR_MEM8(0x0113) +#define DMA_CH0_TRFCNT _SFR_MEM16(0x0114) +#define DMA_CH0_REPCNT _SFR_MEM8(0x0116) +#define DMA_CH0_SRCADDR0 _SFR_MEM8(0x0118) +#define DMA_CH0_SRCADDR1 _SFR_MEM8(0x0119) +#define DMA_CH0_SRCADDR2 _SFR_MEM8(0x011A) +#define DMA_CH0_DESTADDR0 _SFR_MEM8(0x011C) +#define DMA_CH0_DESTADDR1 _SFR_MEM8(0x011D) +#define DMA_CH0_DESTADDR2 _SFR_MEM8(0x011E) +#define DMA_CH1_CTRLA _SFR_MEM8(0x0120) +#define DMA_CH1_CTRLB _SFR_MEM8(0x0121) +#define DMA_CH1_ADDRCTRL _SFR_MEM8(0x0122) +#define DMA_CH1_TRIGSRC _SFR_MEM8(0x0123) +#define DMA_CH1_TRFCNT _SFR_MEM16(0x0124) +#define DMA_CH1_REPCNT _SFR_MEM8(0x0126) +#define DMA_CH1_SRCADDR0 _SFR_MEM8(0x0128) +#define DMA_CH1_SRCADDR1 _SFR_MEM8(0x0129) +#define DMA_CH1_SRCADDR2 _SFR_MEM8(0x012A) +#define DMA_CH1_DESTADDR0 _SFR_MEM8(0x012C) +#define DMA_CH1_DESTADDR1 _SFR_MEM8(0x012D) +#define DMA_CH1_DESTADDR2 _SFR_MEM8(0x012E) +#define DMA_CH2_CTRLA _SFR_MEM8(0x0130) +#define DMA_CH2_CTRLB _SFR_MEM8(0x0131) +#define DMA_CH2_ADDRCTRL _SFR_MEM8(0x0132) +#define DMA_CH2_TRIGSRC _SFR_MEM8(0x0133) +#define DMA_CH2_TRFCNT _SFR_MEM16(0x0134) +#define DMA_CH2_REPCNT _SFR_MEM8(0x0136) +#define DMA_CH2_SRCADDR0 _SFR_MEM8(0x0138) +#define DMA_CH2_SRCADDR1 _SFR_MEM8(0x0139) +#define DMA_CH2_SRCADDR2 _SFR_MEM8(0x013A) +#define DMA_CH2_DESTADDR0 _SFR_MEM8(0x013C) +#define DMA_CH2_DESTADDR1 _SFR_MEM8(0x013D) +#define DMA_CH2_DESTADDR2 _SFR_MEM8(0x013E) +#define DMA_CH3_CTRLA _SFR_MEM8(0x0140) +#define DMA_CH3_CTRLB _SFR_MEM8(0x0141) +#define DMA_CH3_ADDRCTRL _SFR_MEM8(0x0142) +#define DMA_CH3_TRIGSRC _SFR_MEM8(0x0143) +#define DMA_CH3_TRFCNT _SFR_MEM16(0x0144) +#define DMA_CH3_REPCNT _SFR_MEM8(0x0146) +#define DMA_CH3_SRCADDR0 _SFR_MEM8(0x0148) +#define DMA_CH3_SRCADDR1 _SFR_MEM8(0x0149) +#define DMA_CH3_SRCADDR2 _SFR_MEM8(0x014A) +#define DMA_CH3_DESTADDR0 _SFR_MEM8(0x014C) +#define DMA_CH3_DESTADDR1 _SFR_MEM8(0x014D) +#define DMA_CH3_DESTADDR2 _SFR_MEM8(0x014E) + +/* EVSYS - Event System */ +#define EVSYS_CH0MUX _SFR_MEM8(0x0180) +#define EVSYS_CH1MUX _SFR_MEM8(0x0181) +#define EVSYS_CH2MUX _SFR_MEM8(0x0182) +#define EVSYS_CH3MUX _SFR_MEM8(0x0183) +#define EVSYS_CH4MUX _SFR_MEM8(0x0184) +#define EVSYS_CH5MUX _SFR_MEM8(0x0185) +#define EVSYS_CH6MUX _SFR_MEM8(0x0186) +#define EVSYS_CH7MUX _SFR_MEM8(0x0187) +#define EVSYS_CH0CTRL _SFR_MEM8(0x0188) +#define EVSYS_CH1CTRL _SFR_MEM8(0x0189) +#define EVSYS_CH2CTRL _SFR_MEM8(0x018A) +#define EVSYS_CH3CTRL _SFR_MEM8(0x018B) +#define EVSYS_CH4CTRL _SFR_MEM8(0x018C) +#define EVSYS_CH5CTRL _SFR_MEM8(0x018D) +#define EVSYS_CH6CTRL _SFR_MEM8(0x018E) +#define EVSYS_CH7CTRL _SFR_MEM8(0x018F) +#define EVSYS_STROBE _SFR_MEM8(0x0190) +#define EVSYS_DATA _SFR_MEM8(0x0191) + +/* NVM - Non Volatile Memory Controller */ +#define NVM_ADDR0 _SFR_MEM8(0x01C0) +#define NVM_ADDR1 _SFR_MEM8(0x01C1) +#define NVM_ADDR2 _SFR_MEM8(0x01C2) +#define NVM_DATA0 _SFR_MEM8(0x01C4) +#define NVM_DATA1 _SFR_MEM8(0x01C5) +#define NVM_DATA2 _SFR_MEM8(0x01C6) +#define NVM_CMD _SFR_MEM8(0x01CA) +#define NVM_CTRLA _SFR_MEM8(0x01CB) +#define NVM_CTRLB _SFR_MEM8(0x01CC) +#define NVM_INTCTRL _SFR_MEM8(0x01CD) +#define NVM_STATUS _SFR_MEM8(0x01CF) +#define NVM_LOCKBITS _SFR_MEM8(0x01D0) + +/* ADCA - Analog to Digital Converter A */ +#define ADCA_CTRLA _SFR_MEM8(0x0200) +#define ADCA_CTRLB _SFR_MEM8(0x0201) +#define ADCA_REFCTRL _SFR_MEM8(0x0202) +#define ADCA_EVCTRL _SFR_MEM8(0x0203) +#define ADCA_PRESCALER _SFR_MEM8(0x0204) +#define ADCA_CALCTRL _SFR_MEM8(0x0205) +#define ADCA_INTFLAGS _SFR_MEM8(0x0206) +#define ADCA_CALIB _SFR_MEM8(0x020C) +#define ADCA_CH0RES _SFR_MEM16(0x0210) +#define ADCA_CH1RES _SFR_MEM16(0x0212) +#define ADCA_CH2RES _SFR_MEM16(0x0214) +#define ADCA_CH3RES _SFR_MEM16(0x0216) +#define ADCA_CMP _SFR_MEM16(0x0218) +#define ADCA_CH0_CTRL _SFR_MEM8(0x0220) +#define ADCA_CH0_MUXCTRL _SFR_MEM8(0x0221) +#define ADCA_CH0_INTCTRL _SFR_MEM8(0x0222) +#define ADCA_CH0_INTFLAGS _SFR_MEM8(0x0223) +#define ADCA_CH0_RES _SFR_MEM16(0x0224) +#define ADCA_CH1_CTRL _SFR_MEM8(0x0228) +#define ADCA_CH1_MUXCTRL _SFR_MEM8(0x0229) +#define ADCA_CH1_INTCTRL _SFR_MEM8(0x022A) +#define ADCA_CH1_INTFLAGS _SFR_MEM8(0x022B) +#define ADCA_CH1_RES _SFR_MEM16(0x022C) +#define ADCA_CH2_CTRL _SFR_MEM8(0x0230) +#define ADCA_CH2_MUXCTRL _SFR_MEM8(0x0231) +#define ADCA_CH2_INTCTRL _SFR_MEM8(0x0232) +#define ADCA_CH2_INTFLAGS _SFR_MEM8(0x0233) +#define ADCA_CH2_RES _SFR_MEM16(0x0234) +#define ADCA_CH3_CTRL _SFR_MEM8(0x0238) +#define ADCA_CH3_MUXCTRL _SFR_MEM8(0x0239) +#define ADCA_CH3_INTCTRL _SFR_MEM8(0x023A) +#define ADCA_CH3_INTFLAGS _SFR_MEM8(0x023B) +#define ADCA_CH3_RES _SFR_MEM16(0x023C) + +/* ADCB - Analog to Digital Converter B */ +#define ADCB_CTRLA _SFR_MEM8(0x0240) +#define ADCB_CTRLB _SFR_MEM8(0x0241) +#define ADCB_REFCTRL _SFR_MEM8(0x0242) +#define ADCB_EVCTRL _SFR_MEM8(0x0243) +#define ADCB_PRESCALER _SFR_MEM8(0x0244) +#define ADCB_CALCTRL _SFR_MEM8(0x0245) +#define ADCB_INTFLAGS _SFR_MEM8(0x0246) +#define ADCB_CALIB _SFR_MEM8(0x024C) +#define ADCB_CH0RES _SFR_MEM16(0x0250) +#define ADCB_CH1RES _SFR_MEM16(0x0252) +#define ADCB_CH2RES _SFR_MEM16(0x0254) +#define ADCB_CH3RES _SFR_MEM16(0x0256) +#define ADCB_CMP _SFR_MEM16(0x0258) +#define ADCB_CH0_CTRL _SFR_MEM8(0x0260) +#define ADCB_CH0_MUXCTRL _SFR_MEM8(0x0261) +#define ADCB_CH0_INTCTRL _SFR_MEM8(0x0262) +#define ADCB_CH0_INTFLAGS _SFR_MEM8(0x0263) +#define ADCB_CH0_RES _SFR_MEM16(0x0264) +#define ADCB_CH1_CTRL _SFR_MEM8(0x0268) +#define ADCB_CH1_MUXCTRL _SFR_MEM8(0x0269) +#define ADCB_CH1_INTCTRL _SFR_MEM8(0x026A) +#define ADCB_CH1_INTFLAGS _SFR_MEM8(0x026B) +#define ADCB_CH1_RES _SFR_MEM16(0x026C) +#define ADCB_CH2_CTRL _SFR_MEM8(0x0270) +#define ADCB_CH2_MUXCTRL _SFR_MEM8(0x0271) +#define ADCB_CH2_INTCTRL _SFR_MEM8(0x0272) +#define ADCB_CH2_INTFLAGS _SFR_MEM8(0x0273) +#define ADCB_CH2_RES _SFR_MEM16(0x0274) +#define ADCB_CH3_CTRL _SFR_MEM8(0x0278) +#define ADCB_CH3_MUXCTRL _SFR_MEM8(0x0279) +#define ADCB_CH3_INTCTRL _SFR_MEM8(0x027A) +#define ADCB_CH3_INTFLAGS _SFR_MEM8(0x027B) +#define ADCB_CH3_RES _SFR_MEM16(0x027C) + +/* DACB - Digital to Analog Converter B */ +#define DACB_CTRLA _SFR_MEM8(0x0320) +#define DACB_CTRLB _SFR_MEM8(0x0321) +#define DACB_CTRLC _SFR_MEM8(0x0322) +#define DACB_EVCTRL _SFR_MEM8(0x0323) +#define DACB_TIMCTRL _SFR_MEM8(0x0324) +#define DACB_STATUS _SFR_MEM8(0x0325) +#define DACB_GAINCAL _SFR_MEM8(0x0328) +#define DACB_OFFSETCAL _SFR_MEM8(0x0329) +#define DACB_CH0DATA _SFR_MEM16(0x0338) +#define DACB_CH1DATA _SFR_MEM16(0x033A) + +/* ACA - Analog Comparator A */ +#define ACA_AC0CTRL _SFR_MEM8(0x0380) +#define ACA_AC1CTRL _SFR_MEM8(0x0381) +#define ACA_AC0MUXCTRL _SFR_MEM8(0x0382) +#define ACA_AC1MUXCTRL _SFR_MEM8(0x0383) +#define ACA_CTRLA _SFR_MEM8(0x0384) +#define ACA_CTRLB _SFR_MEM8(0x0385) +#define ACA_WINCTRL _SFR_MEM8(0x0386) +#define ACA_STATUS _SFR_MEM8(0x0387) + +/* ACB - Analog Comparator B */ +#define ACB_AC0CTRL _SFR_MEM8(0x0390) +#define ACB_AC1CTRL _SFR_MEM8(0x0391) +#define ACB_AC0MUXCTRL _SFR_MEM8(0x0392) +#define ACB_AC1MUXCTRL _SFR_MEM8(0x0393) +#define ACB_CTRLA _SFR_MEM8(0x0394) +#define ACB_CTRLB _SFR_MEM8(0x0395) +#define ACB_WINCTRL _SFR_MEM8(0x0396) +#define ACB_STATUS _SFR_MEM8(0x0397) + +/* RTC - Real-Time Counter */ +#define RTC_CTRL _SFR_MEM8(0x0400) +#define RTC_STATUS _SFR_MEM8(0x0401) +#define RTC_INTCTRL _SFR_MEM8(0x0402) +#define RTC_INTFLAGS _SFR_MEM8(0x0403) +#define RTC_TEMP _SFR_MEM8(0x0404) +#define RTC_CNT _SFR_MEM16(0x0408) +#define RTC_PER _SFR_MEM16(0x040A) +#define RTC_COMP _SFR_MEM16(0x040C) + +/* TWIC - Two-Wire Interface C */ +#define TWIC_CTRL _SFR_MEM8(0x0480) +#define TWIC_MASTER_CTRLA _SFR_MEM8(0x0481) +#define TWIC_MASTER_CTRLB _SFR_MEM8(0x0482) +#define TWIC_MASTER_CTRLC _SFR_MEM8(0x0483) +#define TWIC_MASTER_STATUS _SFR_MEM8(0x0484) +#define TWIC_MASTER_BAUD _SFR_MEM8(0x0485) +#define TWIC_MASTER_ADDR _SFR_MEM8(0x0486) +#define TWIC_MASTER_DATA _SFR_MEM8(0x0487) +#define TWIC_SLAVE_CTRLA _SFR_MEM8(0x0488) +#define TWIC_SLAVE_CTRLB _SFR_MEM8(0x0489) +#define TWIC_SLAVE_STATUS _SFR_MEM8(0x048A) +#define TWIC_SLAVE_ADDR _SFR_MEM8(0x048B) +#define TWIC_SLAVE_DATA _SFR_MEM8(0x048C) + +/* TWIE - Two-Wire Interface E */ +#define TWIE_CTRL _SFR_MEM8(0x04A0) +#define TWIE_MASTER_CTRLA _SFR_MEM8(0x04A1) +#define TWIE_MASTER_CTRLB _SFR_MEM8(0x04A2) +#define TWIE_MASTER_CTRLC _SFR_MEM8(0x04A3) +#define TWIE_MASTER_STATUS _SFR_MEM8(0x04A4) +#define TWIE_MASTER_BAUD _SFR_MEM8(0x04A5) +#define TWIE_MASTER_ADDR _SFR_MEM8(0x04A6) +#define TWIE_MASTER_DATA _SFR_MEM8(0x04A7) +#define TWIE_SLAVE_CTRLA _SFR_MEM8(0x04A8) +#define TWIE_SLAVE_CTRLB _SFR_MEM8(0x04A9) +#define TWIE_SLAVE_STATUS _SFR_MEM8(0x04AA) +#define TWIE_SLAVE_ADDR _SFR_MEM8(0x04AB) +#define TWIE_SLAVE_DATA _SFR_MEM8(0x04AC) + +/* PORTA - Port A */ +#define PORTA_DIR _SFR_MEM8(0x0600) +#define PORTA_DIRSET _SFR_MEM8(0x0601) +#define PORTA_DIRCLR _SFR_MEM8(0x0602) +#define PORTA_DIRTGL _SFR_MEM8(0x0603) +#define PORTA_OUT _SFR_MEM8(0x0604) +#define PORTA_OUTSET _SFR_MEM8(0x0605) +#define PORTA_OUTCLR _SFR_MEM8(0x0606) +#define PORTA_OUTTGL _SFR_MEM8(0x0607) +#define PORTA_IN _SFR_MEM8(0x0608) +#define PORTA_INTCTRL _SFR_MEM8(0x0609) +#define PORTA_INT0MASK _SFR_MEM8(0x060A) +#define PORTA_INT1MASK _SFR_MEM8(0x060B) +#define PORTA_INTFLAGS _SFR_MEM8(0x060C) +#define PORTA_PIN0CTRL _SFR_MEM8(0x0610) +#define PORTA_PIN1CTRL _SFR_MEM8(0x0611) +#define PORTA_PIN2CTRL _SFR_MEM8(0x0612) +#define PORTA_PIN3CTRL _SFR_MEM8(0x0613) +#define PORTA_PIN4CTRL _SFR_MEM8(0x0614) +#define PORTA_PIN5CTRL _SFR_MEM8(0x0615) +#define PORTA_PIN6CTRL _SFR_MEM8(0x0616) +#define PORTA_PIN7CTRL _SFR_MEM8(0x0617) + +/* PORTB - Port B */ +#define PORTB_DIR _SFR_MEM8(0x0620) +#define PORTB_DIRSET _SFR_MEM8(0x0621) +#define PORTB_DIRCLR _SFR_MEM8(0x0622) +#define PORTB_DIRTGL _SFR_MEM8(0x0623) +#define PORTB_OUT _SFR_MEM8(0x0624) +#define PORTB_OUTSET _SFR_MEM8(0x0625) +#define PORTB_OUTCLR _SFR_MEM8(0x0626) +#define PORTB_OUTTGL _SFR_MEM8(0x0627) +#define PORTB_IN _SFR_MEM8(0x0628) +#define PORTB_INTCTRL _SFR_MEM8(0x0629) +#define PORTB_INT0MASK _SFR_MEM8(0x062A) +#define PORTB_INT1MASK _SFR_MEM8(0x062B) +#define PORTB_INTFLAGS _SFR_MEM8(0x062C) +#define PORTB_PIN0CTRL _SFR_MEM8(0x0630) +#define PORTB_PIN1CTRL _SFR_MEM8(0x0631) +#define PORTB_PIN2CTRL _SFR_MEM8(0x0632) +#define PORTB_PIN3CTRL _SFR_MEM8(0x0633) +#define PORTB_PIN4CTRL _SFR_MEM8(0x0634) +#define PORTB_PIN5CTRL _SFR_MEM8(0x0635) +#define PORTB_PIN6CTRL _SFR_MEM8(0x0636) +#define PORTB_PIN7CTRL _SFR_MEM8(0x0637) + +/* PORTC - Port C */ +#define PORTC_DIR _SFR_MEM8(0x0640) +#define PORTC_DIRSET _SFR_MEM8(0x0641) +#define PORTC_DIRCLR _SFR_MEM8(0x0642) +#define PORTC_DIRTGL _SFR_MEM8(0x0643) +#define PORTC_OUT _SFR_MEM8(0x0644) +#define PORTC_OUTSET _SFR_MEM8(0x0645) +#define PORTC_OUTCLR _SFR_MEM8(0x0646) +#define PORTC_OUTTGL _SFR_MEM8(0x0647) +#define PORTC_IN _SFR_MEM8(0x0648) +#define PORTC_INTCTRL _SFR_MEM8(0x0649) +#define PORTC_INT0MASK _SFR_MEM8(0x064A) +#define PORTC_INT1MASK _SFR_MEM8(0x064B) +#define PORTC_INTFLAGS _SFR_MEM8(0x064C) +#define PORTC_PIN0CTRL _SFR_MEM8(0x0650) +#define PORTC_PIN1CTRL _SFR_MEM8(0x0651) +#define PORTC_PIN2CTRL _SFR_MEM8(0x0652) +#define PORTC_PIN3CTRL _SFR_MEM8(0x0653) +#define PORTC_PIN4CTRL _SFR_MEM8(0x0654) +#define PORTC_PIN5CTRL _SFR_MEM8(0x0655) +#define PORTC_PIN6CTRL _SFR_MEM8(0x0656) +#define PORTC_PIN7CTRL _SFR_MEM8(0x0657) + +/* PORTD - Port D */ +#define PORTD_DIR _SFR_MEM8(0x0660) +#define PORTD_DIRSET _SFR_MEM8(0x0661) +#define PORTD_DIRCLR _SFR_MEM8(0x0662) +#define PORTD_DIRTGL _SFR_MEM8(0x0663) +#define PORTD_OUT _SFR_MEM8(0x0664) +#define PORTD_OUTSET _SFR_MEM8(0x0665) +#define PORTD_OUTCLR _SFR_MEM8(0x0666) +#define PORTD_OUTTGL _SFR_MEM8(0x0667) +#define PORTD_IN _SFR_MEM8(0x0668) +#define PORTD_INTCTRL _SFR_MEM8(0x0669) +#define PORTD_INT0MASK _SFR_MEM8(0x066A) +#define PORTD_INT1MASK _SFR_MEM8(0x066B) +#define PORTD_INTFLAGS _SFR_MEM8(0x066C) +#define PORTD_PIN0CTRL _SFR_MEM8(0x0670) +#define PORTD_PIN1CTRL _SFR_MEM8(0x0671) +#define PORTD_PIN2CTRL _SFR_MEM8(0x0672) +#define PORTD_PIN3CTRL _SFR_MEM8(0x0673) +#define PORTD_PIN4CTRL _SFR_MEM8(0x0674) +#define PORTD_PIN5CTRL _SFR_MEM8(0x0675) +#define PORTD_PIN6CTRL _SFR_MEM8(0x0676) +#define PORTD_PIN7CTRL _SFR_MEM8(0x0677) + +/* PORTE - Port E */ +#define PORTE_DIR _SFR_MEM8(0x0680) +#define PORTE_DIRSET _SFR_MEM8(0x0681) +#define PORTE_DIRCLR _SFR_MEM8(0x0682) +#define PORTE_DIRTGL _SFR_MEM8(0x0683) +#define PORTE_OUT _SFR_MEM8(0x0684) +#define PORTE_OUTSET _SFR_MEM8(0x0685) +#define PORTE_OUTCLR _SFR_MEM8(0x0686) +#define PORTE_OUTTGL _SFR_MEM8(0x0687) +#define PORTE_IN _SFR_MEM8(0x0688) +#define PORTE_INTCTRL _SFR_MEM8(0x0689) +#define PORTE_INT0MASK _SFR_MEM8(0x068A) +#define PORTE_INT1MASK _SFR_MEM8(0x068B) +#define PORTE_INTFLAGS _SFR_MEM8(0x068C) +#define PORTE_PIN0CTRL _SFR_MEM8(0x0690) +#define PORTE_PIN1CTRL _SFR_MEM8(0x0691) +#define PORTE_PIN2CTRL _SFR_MEM8(0x0692) +#define PORTE_PIN3CTRL _SFR_MEM8(0x0693) +#define PORTE_PIN4CTRL _SFR_MEM8(0x0694) +#define PORTE_PIN5CTRL _SFR_MEM8(0x0695) +#define PORTE_PIN6CTRL _SFR_MEM8(0x0696) +#define PORTE_PIN7CTRL _SFR_MEM8(0x0697) + +/* PORTF - Port F */ +#define PORTF_DIR _SFR_MEM8(0x06A0) +#define PORTF_DIRSET _SFR_MEM8(0x06A1) +#define PORTF_DIRCLR _SFR_MEM8(0x06A2) +#define PORTF_DIRTGL _SFR_MEM8(0x06A3) +#define PORTF_OUT _SFR_MEM8(0x06A4) +#define PORTF_OUTSET _SFR_MEM8(0x06A5) +#define PORTF_OUTCLR _SFR_MEM8(0x06A6) +#define PORTF_OUTTGL _SFR_MEM8(0x06A7) +#define PORTF_IN _SFR_MEM8(0x06A8) +#define PORTF_INTCTRL _SFR_MEM8(0x06A9) +#define PORTF_INT0MASK _SFR_MEM8(0x06AA) +#define PORTF_INT1MASK _SFR_MEM8(0x06AB) +#define PORTF_INTFLAGS _SFR_MEM8(0x06AC) +#define PORTF_PIN0CTRL _SFR_MEM8(0x06B0) +#define PORTF_PIN1CTRL _SFR_MEM8(0x06B1) +#define PORTF_PIN2CTRL _SFR_MEM8(0x06B2) +#define PORTF_PIN3CTRL _SFR_MEM8(0x06B3) +#define PORTF_PIN4CTRL _SFR_MEM8(0x06B4) +#define PORTF_PIN5CTRL _SFR_MEM8(0x06B5) +#define PORTF_PIN6CTRL _SFR_MEM8(0x06B6) +#define PORTF_PIN7CTRL _SFR_MEM8(0x06B7) + +/* PORTR - Port R */ +#define PORTR_DIR _SFR_MEM8(0x07E0) +#define PORTR_DIRSET _SFR_MEM8(0x07E1) +#define PORTR_DIRCLR _SFR_MEM8(0x07E2) +#define PORTR_DIRTGL _SFR_MEM8(0x07E3) +#define PORTR_OUT _SFR_MEM8(0x07E4) +#define PORTR_OUTSET _SFR_MEM8(0x07E5) +#define PORTR_OUTCLR _SFR_MEM8(0x07E6) +#define PORTR_OUTTGL _SFR_MEM8(0x07E7) +#define PORTR_IN _SFR_MEM8(0x07E8) +#define PORTR_INTCTRL _SFR_MEM8(0x07E9) +#define PORTR_INT0MASK _SFR_MEM8(0x07EA) +#define PORTR_INT1MASK _SFR_MEM8(0x07EB) +#define PORTR_INTFLAGS _SFR_MEM8(0x07EC) +#define PORTR_PIN0CTRL _SFR_MEM8(0x07F0) +#define PORTR_PIN1CTRL _SFR_MEM8(0x07F1) +#define PORTR_PIN2CTRL _SFR_MEM8(0x07F2) +#define PORTR_PIN3CTRL _SFR_MEM8(0x07F3) +#define PORTR_PIN4CTRL _SFR_MEM8(0x07F4) +#define PORTR_PIN5CTRL _SFR_MEM8(0x07F5) +#define PORTR_PIN6CTRL _SFR_MEM8(0x07F6) +#define PORTR_PIN7CTRL _SFR_MEM8(0x07F7) + +/* TCC0 - Timer/Counter C0 */ +#define TCC0_CTRLA _SFR_MEM8(0x0800) +#define TCC0_CTRLB _SFR_MEM8(0x0801) +#define TCC0_CTRLC _SFR_MEM8(0x0802) +#define TCC0_CTRLD _SFR_MEM8(0x0803) +#define TCC0_CTRLE _SFR_MEM8(0x0804) +#define TCC0_INTCTRLA _SFR_MEM8(0x0806) +#define TCC0_INTCTRLB _SFR_MEM8(0x0807) +#define TCC0_CTRLFCLR _SFR_MEM8(0x0808) +#define TCC0_CTRLFSET _SFR_MEM8(0x0809) +#define TCC0_CTRLGCLR _SFR_MEM8(0x080A) +#define TCC0_CTRLGSET _SFR_MEM8(0x080B) +#define TCC0_INTFLAGS _SFR_MEM8(0x080C) +#define TCC0_TEMP _SFR_MEM8(0x080F) +#define TCC0_CNT _SFR_MEM16(0x0820) +#define TCC0_PER _SFR_MEM16(0x0826) +#define TCC0_CCA _SFR_MEM16(0x0828) +#define TCC0_CCB _SFR_MEM16(0x082A) +#define TCC0_CCC _SFR_MEM16(0x082C) +#define TCC0_CCD _SFR_MEM16(0x082E) +#define TCC0_PERBUF _SFR_MEM16(0x0836) +#define TCC0_CCABUF _SFR_MEM16(0x0838) +#define TCC0_CCBBUF _SFR_MEM16(0x083A) +#define TCC0_CCCBUF _SFR_MEM16(0x083C) +#define TCC0_CCDBUF _SFR_MEM16(0x083E) + +/* TCC1 - Timer/Counter C1 */ +#define TCC1_CTRLA _SFR_MEM8(0x0840) +#define TCC1_CTRLB _SFR_MEM8(0x0841) +#define TCC1_CTRLC _SFR_MEM8(0x0842) +#define TCC1_CTRLD _SFR_MEM8(0x0843) +#define TCC1_CTRLE _SFR_MEM8(0x0844) +#define TCC1_INTCTRLA _SFR_MEM8(0x0846) +#define TCC1_INTCTRLB _SFR_MEM8(0x0847) +#define TCC1_CTRLFCLR _SFR_MEM8(0x0848) +#define TCC1_CTRLFSET _SFR_MEM8(0x0849) +#define TCC1_CTRLGCLR _SFR_MEM8(0x084A) +#define TCC1_CTRLGSET _SFR_MEM8(0x084B) +#define TCC1_INTFLAGS _SFR_MEM8(0x084C) +#define TCC1_TEMP _SFR_MEM8(0x084F) +#define TCC1_CNT _SFR_MEM16(0x0860) +#define TCC1_PER _SFR_MEM16(0x0866) +#define TCC1_CCA _SFR_MEM16(0x0868) +#define TCC1_CCB _SFR_MEM16(0x086A) +#define TCC1_PERBUF _SFR_MEM16(0x0876) +#define TCC1_CCABUF _SFR_MEM16(0x0878) +#define TCC1_CCBBUF _SFR_MEM16(0x087A) + +/* AWEXC - Advanced Waveform Extension C */ +#define AWEXC_CTRL _SFR_MEM8(0x0880) +#define AWEXC_FDEVMASK _SFR_MEM8(0x0882) +#define AWEXC_FDCTRL _SFR_MEM8(0x0883) +#define AWEXC_STATUS _SFR_MEM8(0x0884) +#define AWEXC_DTBOTH _SFR_MEM8(0x0886) +#define AWEXC_DTBOTHBUF _SFR_MEM8(0x0887) +#define AWEXC_DTLS _SFR_MEM8(0x0888) +#define AWEXC_DTHS _SFR_MEM8(0x0889) +#define AWEXC_DTLSBUF _SFR_MEM8(0x088A) +#define AWEXC_DTHSBUF _SFR_MEM8(0x088B) +#define AWEXC_OUTOVEN _SFR_MEM8(0x088C) + +/* HIRESC - High-Resolution Extension C */ +#define HIRESC_CTRL _SFR_MEM8(0x0890) + +/* USARTC0 - Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC0_DATA _SFR_MEM8(0x08A0) +#define USARTC0_STATUS _SFR_MEM8(0x08A1) +#define USARTC0_CTRLA _SFR_MEM8(0x08A3) +#define USARTC0_CTRLB _SFR_MEM8(0x08A4) +#define USARTC0_CTRLC _SFR_MEM8(0x08A5) +#define USARTC0_BAUDCTRLA _SFR_MEM8(0x08A6) +#define USARTC0_BAUDCTRLB _SFR_MEM8(0x08A7) + +/* USARTC1 - Universal Asynchronous Receiver-Transmitter C1 */ +#define USARTC1_DATA _SFR_MEM8(0x08B0) +#define USARTC1_STATUS _SFR_MEM8(0x08B1) +#define USARTC1_CTRLA _SFR_MEM8(0x08B3) +#define USARTC1_CTRLB _SFR_MEM8(0x08B4) +#define USARTC1_CTRLC _SFR_MEM8(0x08B5) +#define USARTC1_BAUDCTRLA _SFR_MEM8(0x08B6) +#define USARTC1_BAUDCTRLB _SFR_MEM8(0x08B7) + +/* SPIC - Serial Peripheral Interface C */ +#define SPIC_CTRL _SFR_MEM8(0x08C0) +#define SPIC_INTCTRL _SFR_MEM8(0x08C1) +#define SPIC_STATUS _SFR_MEM8(0x08C2) +#define SPIC_DATA _SFR_MEM8(0x08C3) + +/* IRCOM - IR Communication Module */ +#define IRCOM_CTRL _SFR_MEM8(0x08F8) +#define IRCOM_TXPLCTRL _SFR_MEM8(0x08F9) +#define IRCOM_RXPLCTRL _SFR_MEM8(0x08FA) + +/* TCD0 - Timer/Counter D0 */ +#define TCD0_CTRLA _SFR_MEM8(0x0900) +#define TCD0_CTRLB _SFR_MEM8(0x0901) +#define TCD0_CTRLC _SFR_MEM8(0x0902) +#define TCD0_CTRLD _SFR_MEM8(0x0903) +#define TCD0_CTRLE _SFR_MEM8(0x0904) +#define TCD0_INTCTRLA _SFR_MEM8(0x0906) +#define TCD0_INTCTRLB _SFR_MEM8(0x0907) +#define TCD0_CTRLFCLR _SFR_MEM8(0x0908) +#define TCD0_CTRLFSET _SFR_MEM8(0x0909) +#define TCD0_CTRLGCLR _SFR_MEM8(0x090A) +#define TCD0_CTRLGSET _SFR_MEM8(0x090B) +#define TCD0_INTFLAGS _SFR_MEM8(0x090C) +#define TCD0_TEMP _SFR_MEM8(0x090F) +#define TCD0_CNT _SFR_MEM16(0x0920) +#define TCD0_PER _SFR_MEM16(0x0926) +#define TCD0_CCA _SFR_MEM16(0x0928) +#define TCD0_CCB _SFR_MEM16(0x092A) +#define TCD0_CCC _SFR_MEM16(0x092C) +#define TCD0_CCD _SFR_MEM16(0x092E) +#define TCD0_PERBUF _SFR_MEM16(0x0936) +#define TCD0_CCABUF _SFR_MEM16(0x0938) +#define TCD0_CCBBUF _SFR_MEM16(0x093A) +#define TCD0_CCCBUF _SFR_MEM16(0x093C) +#define TCD0_CCDBUF _SFR_MEM16(0x093E) + +/* TCD1 - Timer/Counter D1 */ +#define TCD1_CTRLA _SFR_MEM8(0x0940) +#define TCD1_CTRLB _SFR_MEM8(0x0941) +#define TCD1_CTRLC _SFR_MEM8(0x0942) +#define TCD1_CTRLD _SFR_MEM8(0x0943) +#define TCD1_CTRLE _SFR_MEM8(0x0944) +#define TCD1_INTCTRLA _SFR_MEM8(0x0946) +#define TCD1_INTCTRLB _SFR_MEM8(0x0947) +#define TCD1_CTRLFCLR _SFR_MEM8(0x0948) +#define TCD1_CTRLFSET _SFR_MEM8(0x0949) +#define TCD1_CTRLGCLR _SFR_MEM8(0x094A) +#define TCD1_CTRLGSET _SFR_MEM8(0x094B) +#define TCD1_INTFLAGS _SFR_MEM8(0x094C) +#define TCD1_TEMP _SFR_MEM8(0x094F) +#define TCD1_CNT _SFR_MEM16(0x0960) +#define TCD1_PER _SFR_MEM16(0x0966) +#define TCD1_CCA _SFR_MEM16(0x0968) +#define TCD1_CCB _SFR_MEM16(0x096A) +#define TCD1_PERBUF _SFR_MEM16(0x0976) +#define TCD1_CCABUF _SFR_MEM16(0x0978) +#define TCD1_CCBBUF _SFR_MEM16(0x097A) + +/* HIRESD - High-Resolution Extension D */ +#define HIRESD_CTRL _SFR_MEM8(0x0990) + +/* USARTD0 - Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD0_DATA _SFR_MEM8(0x09A0) +#define USARTD0_STATUS _SFR_MEM8(0x09A1) +#define USARTD0_CTRLA _SFR_MEM8(0x09A3) +#define USARTD0_CTRLB _SFR_MEM8(0x09A4) +#define USARTD0_CTRLC _SFR_MEM8(0x09A5) +#define USARTD0_BAUDCTRLA _SFR_MEM8(0x09A6) +#define USARTD0_BAUDCTRLB _SFR_MEM8(0x09A7) + +/* USARTD1 - Universal Asynchronous Receiver-Transmitter D1 */ +#define USARTD1_DATA _SFR_MEM8(0x09B0) +#define USARTD1_STATUS _SFR_MEM8(0x09B1) +#define USARTD1_CTRLA _SFR_MEM8(0x09B3) +#define USARTD1_CTRLB _SFR_MEM8(0x09B4) +#define USARTD1_CTRLC _SFR_MEM8(0x09B5) +#define USARTD1_BAUDCTRLA _SFR_MEM8(0x09B6) +#define USARTD1_BAUDCTRLB _SFR_MEM8(0x09B7) + +/* SPID - Serial Peripheral Interface D */ +#define SPID_CTRL _SFR_MEM8(0x09C0) +#define SPID_INTCTRL _SFR_MEM8(0x09C1) +#define SPID_STATUS _SFR_MEM8(0x09C2) +#define SPID_DATA _SFR_MEM8(0x09C3) + +/* TCE0 - Timer/Counter E0 */ +#define TCE0_CTRLA _SFR_MEM8(0x0A00) +#define TCE0_CTRLB _SFR_MEM8(0x0A01) +#define TCE0_CTRLC _SFR_MEM8(0x0A02) +#define TCE0_CTRLD _SFR_MEM8(0x0A03) +#define TCE0_CTRLE _SFR_MEM8(0x0A04) +#define TCE0_INTCTRLA _SFR_MEM8(0x0A06) +#define TCE0_INTCTRLB _SFR_MEM8(0x0A07) +#define TCE0_CTRLFCLR _SFR_MEM8(0x0A08) +#define TCE0_CTRLFSET _SFR_MEM8(0x0A09) +#define TCE0_CTRLGCLR _SFR_MEM8(0x0A0A) +#define TCE0_CTRLGSET _SFR_MEM8(0x0A0B) +#define TCE0_INTFLAGS _SFR_MEM8(0x0A0C) +#define TCE0_TEMP _SFR_MEM8(0x0A0F) +#define TCE0_CNT _SFR_MEM16(0x0A20) +#define TCE0_PER _SFR_MEM16(0x0A26) +#define TCE0_CCA _SFR_MEM16(0x0A28) +#define TCE0_CCB _SFR_MEM16(0x0A2A) +#define TCE0_CCC _SFR_MEM16(0x0A2C) +#define TCE0_CCD _SFR_MEM16(0x0A2E) +#define TCE0_PERBUF _SFR_MEM16(0x0A36) +#define TCE0_CCABUF _SFR_MEM16(0x0A38) +#define TCE0_CCBBUF _SFR_MEM16(0x0A3A) +#define TCE0_CCCBUF _SFR_MEM16(0x0A3C) +#define TCE0_CCDBUF _SFR_MEM16(0x0A3E) + +/* TCE1 - Timer/Counter E1 */ +#define TCE1_CTRLA _SFR_MEM8(0x0A40) +#define TCE1_CTRLB _SFR_MEM8(0x0A41) +#define TCE1_CTRLC _SFR_MEM8(0x0A42) +#define TCE1_CTRLD _SFR_MEM8(0x0A43) +#define TCE1_CTRLE _SFR_MEM8(0x0A44) +#define TCE1_INTCTRLA _SFR_MEM8(0x0A46) +#define TCE1_INTCTRLB _SFR_MEM8(0x0A47) +#define TCE1_CTRLFCLR _SFR_MEM8(0x0A48) +#define TCE1_CTRLFSET _SFR_MEM8(0x0A49) +#define TCE1_CTRLGCLR _SFR_MEM8(0x0A4A) +#define TCE1_CTRLGSET _SFR_MEM8(0x0A4B) +#define TCE1_INTFLAGS _SFR_MEM8(0x0A4C) +#define TCE1_TEMP _SFR_MEM8(0x0A4F) +#define TCE1_CNT _SFR_MEM16(0x0A60) +#define TCE1_PER _SFR_MEM16(0x0A66) +#define TCE1_CCA _SFR_MEM16(0x0A68) +#define TCE1_CCB _SFR_MEM16(0x0A6A) +#define TCE1_PERBUF _SFR_MEM16(0x0A76) +#define TCE1_CCABUF _SFR_MEM16(0x0A78) +#define TCE1_CCBBUF _SFR_MEM16(0x0A7A) + +/* AWEXE - Advanced Waveform Extension E */ +#define AWEXE_CTRL _SFR_MEM8(0x0A80) +#define AWEXE_FDEVMASK _SFR_MEM8(0x0A82) +#define AWEXE_FDCTRL _SFR_MEM8(0x0A83) +#define AWEXE_STATUS _SFR_MEM8(0x0A84) +#define AWEXE_DTBOTH _SFR_MEM8(0x0A86) +#define AWEXE_DTBOTHBUF _SFR_MEM8(0x0A87) +#define AWEXE_DTLS _SFR_MEM8(0x0A88) +#define AWEXE_DTHS _SFR_MEM8(0x0A89) +#define AWEXE_DTLSBUF _SFR_MEM8(0x0A8A) +#define AWEXE_DTHSBUF _SFR_MEM8(0x0A8B) +#define AWEXE_OUTOVEN _SFR_MEM8(0x0A8C) + +/* HIRESE - High-Resolution Extension E */ +#define HIRESE_CTRL _SFR_MEM8(0x0A90) + +/* USARTE0 - Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE0_DATA _SFR_MEM8(0x0AA0) +#define USARTE0_STATUS _SFR_MEM8(0x0AA1) +#define USARTE0_CTRLA _SFR_MEM8(0x0AA3) +#define USARTE0_CTRLB _SFR_MEM8(0x0AA4) +#define USARTE0_CTRLC _SFR_MEM8(0x0AA5) +#define USARTE0_BAUDCTRLA _SFR_MEM8(0x0AA6) +#define USARTE0_BAUDCTRLB _SFR_MEM8(0x0AA7) + +/* USARTE1 - Universal Asynchronous Receiver-Transmitter E1 */ +#define USARTE1_DATA _SFR_MEM8(0x0AB0) +#define USARTE1_STATUS _SFR_MEM8(0x0AB1) +#define USARTE1_CTRLA _SFR_MEM8(0x0AB3) +#define USARTE1_CTRLB _SFR_MEM8(0x0AB4) +#define USARTE1_CTRLC _SFR_MEM8(0x0AB5) +#define USARTE1_BAUDCTRLA _SFR_MEM8(0x0AB6) +#define USARTE1_BAUDCTRLB _SFR_MEM8(0x0AB7) + +/* SPIE - Serial Peripheral Interface E */ +#define SPIE_CTRL _SFR_MEM8(0x0AC0) +#define SPIE_INTCTRL _SFR_MEM8(0x0AC1) +#define SPIE_STATUS _SFR_MEM8(0x0AC2) +#define SPIE_DATA _SFR_MEM8(0x0AC3) + +/* TCF0 - Timer/Counter F0 */ +#define TCF0_CTRLA _SFR_MEM8(0x0B00) +#define TCF0_CTRLB _SFR_MEM8(0x0B01) +#define TCF0_CTRLC _SFR_MEM8(0x0B02) +#define TCF0_CTRLD _SFR_MEM8(0x0B03) +#define TCF0_CTRLE _SFR_MEM8(0x0B04) +#define TCF0_INTCTRLA _SFR_MEM8(0x0B06) +#define TCF0_INTCTRLB _SFR_MEM8(0x0B07) +#define TCF0_CTRLFCLR _SFR_MEM8(0x0B08) +#define TCF0_CTRLFSET _SFR_MEM8(0x0B09) +#define TCF0_CTRLGCLR _SFR_MEM8(0x0B0A) +#define TCF0_CTRLGSET _SFR_MEM8(0x0B0B) +#define TCF0_INTFLAGS _SFR_MEM8(0x0B0C) +#define TCF0_TEMP _SFR_MEM8(0x0B0F) +#define TCF0_CNT _SFR_MEM16(0x0B20) +#define TCF0_PER _SFR_MEM16(0x0B26) +#define TCF0_CCA _SFR_MEM16(0x0B28) +#define TCF0_CCB _SFR_MEM16(0x0B2A) +#define TCF0_CCC _SFR_MEM16(0x0B2C) +#define TCF0_CCD _SFR_MEM16(0x0B2E) +#define TCF0_PERBUF _SFR_MEM16(0x0B36) +#define TCF0_CCABUF _SFR_MEM16(0x0B38) +#define TCF0_CCBBUF _SFR_MEM16(0x0B3A) +#define TCF0_CCCBUF _SFR_MEM16(0x0B3C) +#define TCF0_CCDBUF _SFR_MEM16(0x0B3E) + +/* HIRESF - High-Resolution Extension F */ +#define HIRESF_CTRL _SFR_MEM8(0x0B90) + +/* USARTF0 - Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF0_DATA _SFR_MEM8(0x0BA0) +#define USARTF0_STATUS _SFR_MEM8(0x0BA1) +#define USARTF0_CTRLA _SFR_MEM8(0x0BA3) +#define USARTF0_CTRLB _SFR_MEM8(0x0BA4) +#define USARTF0_CTRLC _SFR_MEM8(0x0BA5) +#define USARTF0_BAUDCTRLA _SFR_MEM8(0x0BA6) +#define USARTF0_BAUDCTRLB _SFR_MEM8(0x0BA7) + +/* USARTF1 - Universal Asynchronous Receiver-Transmitter F1 */ +#define USARTF1_DATA _SFR_MEM8(0x0BB0) +#define USARTF1_STATUS _SFR_MEM8(0x0BB1) +#define USARTF1_CTRLA _SFR_MEM8(0x0BB3) +#define USARTF1_CTRLB _SFR_MEM8(0x0BB4) +#define USARTF1_CTRLC _SFR_MEM8(0x0BB5) +#define USARTF1_BAUDCTRLA _SFR_MEM8(0x0BB6) +#define USARTF1_BAUDCTRLB _SFR_MEM8(0x0BB7) + +/* SPIF - Serial Peripheral Interface F */ +#define SPIF_CTRL _SFR_MEM8(0x0BC0) +#define SPIF_INTCTRL _SFR_MEM8(0x0BC1) +#define SPIF_STATUS _SFR_MEM8(0x0BC2) +#define SPIF_DATA _SFR_MEM8(0x0BC3) + + + +/*================== Bitfield Definitions ================== */ + +/* XOCD - On-Chip Debug System */ +/* OCD.OCDR1 bit masks and bit positions */ +#define OCD_OCDRD_bm 0x01 /* OCDR Dirty bit mask. */ +#define OCD_OCDRD_bp 0 /* OCDR Dirty bit position. */ + + +/* CPU - CPU */ +/* CPU.CCP bit masks and bit positions */ +#define CPU_CCP_gm 0xFF /* CCP signature group mask. */ +#define CPU_CCP_gp 0 /* CCP signature group position. */ +#define CPU_CCP0_bm (1<<0) /* CCP signature bit 0 mask. */ +#define CPU_CCP0_bp 0 /* CCP signature bit 0 position. */ +#define CPU_CCP1_bm (1<<1) /* CCP signature bit 1 mask. */ +#define CPU_CCP1_bp 1 /* CCP signature bit 1 position. */ +#define CPU_CCP2_bm (1<<2) /* CCP signature bit 2 mask. */ +#define CPU_CCP2_bp 2 /* CCP signature bit 2 position. */ +#define CPU_CCP3_bm (1<<3) /* CCP signature bit 3 mask. */ +#define CPU_CCP3_bp 3 /* CCP signature bit 3 position. */ +#define CPU_CCP4_bm (1<<4) /* CCP signature bit 4 mask. */ +#define CPU_CCP4_bp 4 /* CCP signature bit 4 position. */ +#define CPU_CCP5_bm (1<<5) /* CCP signature bit 5 mask. */ +#define CPU_CCP5_bp 5 /* CCP signature bit 5 position. */ +#define CPU_CCP6_bm (1<<6) /* CCP signature bit 6 mask. */ +#define CPU_CCP6_bp 6 /* CCP signature bit 6 position. */ +#define CPU_CCP7_bm (1<<7) /* CCP signature bit 7 mask. */ +#define CPU_CCP7_bp 7 /* CCP signature bit 7 position. */ + + +/* CPU.SREG bit masks and bit positions */ +#define CPU_I_bm 0x80 /* Global Interrupt Enable Flag bit mask. */ +#define CPU_I_bp 7 /* Global Interrupt Enable Flag bit position. */ + +#define CPU_T_bm 0x40 /* Transfer Bit bit mask. */ +#define CPU_T_bp 6 /* Transfer Bit bit position. */ + +#define CPU_H_bm 0x20 /* Half Carry Flag bit mask. */ +#define CPU_H_bp 5 /* Half Carry Flag bit position. */ + +#define CPU_S_bm 0x10 /* N Exclusive Or V Flag bit mask. */ +#define CPU_S_bp 4 /* N Exclusive Or V Flag bit position. */ + +#define CPU_V_bm 0x08 /* Two's Complement Overflow Flag bit mask. */ +#define CPU_V_bp 3 /* Two's Complement Overflow Flag bit position. */ + +#define CPU_N_bm 0x04 /* Negative Flag bit mask. */ +#define CPU_N_bp 2 /* Negative Flag bit position. */ + +#define CPU_Z_bm 0x02 /* Zero Flag bit mask. */ +#define CPU_Z_bp 1 /* Zero Flag bit position. */ + +#define CPU_C_bm 0x01 /* Carry Flag bit mask. */ +#define CPU_C_bp 0 /* Carry Flag bit position. */ + + +/* CLK - Clock System */ +/* CLK.CTRL bit masks and bit positions */ +#define CLK_SCLKSEL_gm 0x07 /* System Clock Selection group mask. */ +#define CLK_SCLKSEL_gp 0 /* System Clock Selection group position. */ +#define CLK_SCLKSEL0_bm (1<<0) /* System Clock Selection bit 0 mask. */ +#define CLK_SCLKSEL0_bp 0 /* System Clock Selection bit 0 position. */ +#define CLK_SCLKSEL1_bm (1<<1) /* System Clock Selection bit 1 mask. */ +#define CLK_SCLKSEL1_bp 1 /* System Clock Selection bit 1 position. */ +#define CLK_SCLKSEL2_bm (1<<2) /* System Clock Selection bit 2 mask. */ +#define CLK_SCLKSEL2_bp 2 /* System Clock Selection bit 2 position. */ + + +/* CLK.PSCTRL bit masks and bit positions */ +#define CLK_PSADIV_gm 0x7C /* Prescaler A Division Factor group mask. */ +#define CLK_PSADIV_gp 2 /* Prescaler A Division Factor group position. */ +#define CLK_PSADIV0_bm (1<<2) /* Prescaler A Division Factor bit 0 mask. */ +#define CLK_PSADIV0_bp 2 /* Prescaler A Division Factor bit 0 position. */ +#define CLK_PSADIV1_bm (1<<3) /* Prescaler A Division Factor bit 1 mask. */ +#define CLK_PSADIV1_bp 3 /* Prescaler A Division Factor bit 1 position. */ +#define CLK_PSADIV2_bm (1<<4) /* Prescaler A Division Factor bit 2 mask. */ +#define CLK_PSADIV2_bp 4 /* Prescaler A Division Factor bit 2 position. */ +#define CLK_PSADIV3_bm (1<<5) /* Prescaler A Division Factor bit 3 mask. */ +#define CLK_PSADIV3_bp 5 /* Prescaler A Division Factor bit 3 position. */ +#define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ +#define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ + +#define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ +#define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ +#define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ +#define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ +#define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ +#define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ + + +/* CLK.LOCK bit masks and bit positions */ +#define CLK_LOCK_bm 0x01 /* Clock System Lock bit mask. */ +#define CLK_LOCK_bp 0 /* Clock System Lock bit position. */ + + +/* CLK.RTCCTRL bit masks and bit positions */ +#define CLK_RTCSRC_gm 0x0E /* Clock Source group mask. */ +#define CLK_RTCSRC_gp 1 /* Clock Source group position. */ +#define CLK_RTCSRC0_bm (1<<1) /* Clock Source bit 0 mask. */ +#define CLK_RTCSRC0_bp 1 /* Clock Source bit 0 position. */ +#define CLK_RTCSRC1_bm (1<<2) /* Clock Source bit 1 mask. */ +#define CLK_RTCSRC1_bp 2 /* Clock Source bit 1 position. */ +#define CLK_RTCSRC2_bm (1<<3) /* Clock Source bit 2 mask. */ +#define CLK_RTCSRC2_bp 3 /* Clock Source bit 2 position. */ + +#define CLK_RTCEN_bm 0x01 /* RTC Clock Source Enable bit mask. */ +#define CLK_RTCEN_bp 0 /* RTC Clock Source Enable bit position. */ + + +/* PR.PR bit masks and bit positions */ +#define PR_EBI_bm 0x08 /* External Bus Interface bit mask. */ +#define PR_EBI_bp 3 /* External Bus Interface bit position. */ + +#define PR_RTC_bm 0x04 /* Real-time Counter bit mask. */ +#define PR_RTC_bp 2 /* Real-time Counter bit position. */ + +#define PR_EVSYS_bm 0x02 /* Event System bit mask. */ +#define PR_EVSYS_bp 1 /* Event System bit position. */ + +#define PR_DMA_bm 0x01 /* DMA-Controller bit mask. */ +#define PR_DMA_bp 0 /* DMA-Controller bit position. */ + + +/* PR.PRPA bit masks and bit positions */ +#define PR_DAC_bm 0x04 /* Port A DAC bit mask. */ +#define PR_DAC_bp 2 /* Port A DAC bit position. */ + +#define PR_ADC_bm 0x02 /* Port A ADC bit mask. */ +#define PR_ADC_bp 1 /* Port A ADC bit position. */ + +#define PR_AC_bm 0x01 /* Port A Analog Comparator bit mask. */ +#define PR_AC_bp 0 /* Port A Analog Comparator bit position. */ + + +/* PR.PRPB bit masks and bit positions */ +/* PR_DAC_bm Predefined. */ +/* PR_DAC_bp Predefined. */ + +/* PR_ADC_bm Predefined. */ +/* PR_ADC_bp Predefined. */ + +/* PR_AC_bm Predefined. */ +/* PR_AC_bp Predefined. */ + + +/* PR.PRPC bit masks and bit positions */ +#define PR_TWI_bm 0x40 /* Port C Two-wire Interface bit mask. */ +#define PR_TWI_bp 6 /* Port C Two-wire Interface bit position. */ + +#define PR_USART1_bm 0x20 /* Port C USART1 bit mask. */ +#define PR_USART1_bp 5 /* Port C USART1 bit position. */ + +#define PR_USART0_bm 0x10 /* Port C USART0 bit mask. */ +#define PR_USART0_bp 4 /* Port C USART0 bit position. */ + +#define PR_SPI_bm 0x08 /* Port C SPI bit mask. */ +#define PR_SPI_bp 3 /* Port C SPI bit position. */ + +#define PR_HIRES_bm 0x04 /* Port C AWEX bit mask. */ +#define PR_HIRES_bp 2 /* Port C AWEX bit position. */ + +#define PR_TC1_bm 0x02 /* Port C Timer/Counter1 bit mask. */ +#define PR_TC1_bp 1 /* Port C Timer/Counter1 bit position. */ + +#define PR_TC0_bm 0x01 /* Port C Timer/Counter0 bit mask. */ +#define PR_TC0_bp 0 /* Port C Timer/Counter0 bit position. */ + + +/* PR.PRPD bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPE bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPF bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* SLEEP - Sleep Controller */ +/* SLEEP.CTRL bit masks and bit positions */ +#define SLEEP_SMODE_gm 0x0E /* Sleep Mode group mask. */ +#define SLEEP_SMODE_gp 1 /* Sleep Mode group position. */ +#define SLEEP_SMODE0_bm (1<<1) /* Sleep Mode bit 0 mask. */ +#define SLEEP_SMODE0_bp 1 /* Sleep Mode bit 0 position. */ +#define SLEEP_SMODE1_bm (1<<2) /* Sleep Mode bit 1 mask. */ +#define SLEEP_SMODE1_bp 2 /* Sleep Mode bit 1 position. */ +#define SLEEP_SMODE2_bm (1<<3) /* Sleep Mode bit 2 mask. */ +#define SLEEP_SMODE2_bp 3 /* Sleep Mode bit 2 position. */ + +#define SLEEP_SEN_bm 0x01 /* Sleep Enable bit mask. */ +#define SLEEP_SEN_bp 0 /* Sleep Enable bit position. */ + + +/* OSC - Oscillator */ +/* OSC.CTRL bit masks and bit positions */ +#define OSC_PLLEN_bm 0x10 /* PLL Enable bit mask. */ +#define OSC_PLLEN_bp 4 /* PLL Enable bit position. */ + +#define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ +#define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ + +#define OSC_RC32KEN_bm 0x04 /* Internal 32kHz RC Oscillator Enable bit mask. */ +#define OSC_RC32KEN_bp 2 /* Internal 32kHz RC Oscillator Enable bit position. */ + +#define OSC_RC32MEN_bm 0x02 /* Internal 32MHz RC Oscillator Enable bit mask. */ +#define OSC_RC32MEN_bp 1 /* Internal 32MHz RC Oscillator Enable bit position. */ + +#define OSC_RC2MEN_bm 0x01 /* Internal 2MHz RC Oscillator Enable bit mask. */ +#define OSC_RC2MEN_bp 0 /* Internal 2MHz RC Oscillator Enable bit position. */ + + +/* OSC.STATUS bit masks and bit positions */ +#define OSC_PLLRDY_bm 0x10 /* PLL Ready bit mask. */ +#define OSC_PLLRDY_bp 4 /* PLL Ready bit position. */ + +#define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ +#define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ + +#define OSC_RC32KRDY_bm 0x04 /* Internal 32kHz RC Oscillator Ready bit mask. */ +#define OSC_RC32KRDY_bp 2 /* Internal 32kHz RC Oscillator Ready bit position. */ + +#define OSC_RC32MRDY_bm 0x02 /* Internal 32MHz RC Oscillator Ready bit mask. */ +#define OSC_RC32MRDY_bp 1 /* Internal 32MHz RC Oscillator Ready bit position. */ + +#define OSC_RC2MRDY_bm 0x01 /* Internal 2MHz RC Oscillator Ready bit mask. */ +#define OSC_RC2MRDY_bp 0 /* Internal 2MHz RC Oscillator Ready bit position. */ + + +/* OSC.XOSCCTRL bit masks and bit positions */ +#define OSC_FRQRANGE_gm 0xC0 /* Frequency Range group mask. */ +#define OSC_FRQRANGE_gp 6 /* Frequency Range group position. */ +#define OSC_FRQRANGE0_bm (1<<6) /* Frequency Range bit 0 mask. */ +#define OSC_FRQRANGE0_bp 6 /* Frequency Range bit 0 position. */ +#define OSC_FRQRANGE1_bm (1<<7) /* Frequency Range bit 1 mask. */ +#define OSC_FRQRANGE1_bp 7 /* Frequency Range bit 1 position. */ + +#define OSC_X32KLPM_bm 0x20 /* 32kHz XTAL OSC Low-power Mode bit mask. */ +#define OSC_X32KLPM_bp 5 /* 32kHz XTAL OSC Low-power Mode bit position. */ + +#define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ +#define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ +#define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ +#define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ +#define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ +#define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ +#define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ +#define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ +#define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ +#define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ + + +/* OSC.XOSCFAIL bit masks and bit positions */ +#define OSC_XOSCFDIF_bm 0x02 /* Failure Detection Interrupt Flag bit mask. */ +#define OSC_XOSCFDIF_bp 1 /* Failure Detection Interrupt Flag bit position. */ + +#define OSC_XOSCFDEN_bm 0x01 /* Failure Detection Enable bit mask. */ +#define OSC_XOSCFDEN_bp 0 /* Failure Detection Enable bit position. */ + + +/* OSC.PLLCTRL bit masks and bit positions */ +#define OSC_PLLSRC_gm 0xC0 /* Clock Source group mask. */ +#define OSC_PLLSRC_gp 6 /* Clock Source group position. */ +#define OSC_PLLSRC0_bm (1<<6) /* Clock Source bit 0 mask. */ +#define OSC_PLLSRC0_bp 6 /* Clock Source bit 0 position. */ +#define OSC_PLLSRC1_bm (1<<7) /* Clock Source bit 1 mask. */ +#define OSC_PLLSRC1_bp 7 /* Clock Source bit 1 position. */ + +#define OSC_PLLFAC_gm 0x1F /* Multiplication Factor group mask. */ +#define OSC_PLLFAC_gp 0 /* Multiplication Factor group position. */ +#define OSC_PLLFAC0_bm (1<<0) /* Multiplication Factor bit 0 mask. */ +#define OSC_PLLFAC0_bp 0 /* Multiplication Factor bit 0 position. */ +#define OSC_PLLFAC1_bm (1<<1) /* Multiplication Factor bit 1 mask. */ +#define OSC_PLLFAC1_bp 1 /* Multiplication Factor bit 1 position. */ +#define OSC_PLLFAC2_bm (1<<2) /* Multiplication Factor bit 2 mask. */ +#define OSC_PLLFAC2_bp 2 /* Multiplication Factor bit 2 position. */ +#define OSC_PLLFAC3_bm (1<<3) /* Multiplication Factor bit 3 mask. */ +#define OSC_PLLFAC3_bp 3 /* Multiplication Factor bit 3 position. */ +#define OSC_PLLFAC4_bm (1<<4) /* Multiplication Factor bit 4 mask. */ +#define OSC_PLLFAC4_bp 4 /* Multiplication Factor bit 4 position. */ + + +/* OSC.DFLLCTRL bit masks and bit positions */ +#define OSC_RC32MCREF_bm 0x02 /* 32MHz Calibration Reference bit mask. */ +#define OSC_RC32MCREF_bp 1 /* 32MHz Calibration Reference bit position. */ + +#define OSC_RC2MCREF_bm 0x01 /* 2MHz Calibration Reference bit mask. */ +#define OSC_RC2MCREF_bp 0 /* 2MHz Calibration Reference bit position. */ + + +/* DFLL - DFLL */ +/* DFLL.CTRL bit masks and bit positions */ +#define DFLL_ENABLE_bm 0x01 /* DFLL Enable bit mask. */ +#define DFLL_ENABLE_bp 0 /* DFLL Enable bit position. */ + + +/* DFLL.CALA bit masks and bit positions */ +#define DFLL_CALL_gm 0x7F /* DFLL Calibration bits [6:0] group mask. */ +#define DFLL_CALL_gp 0 /* DFLL Calibration bits [6:0] group position. */ +#define DFLL_CALL0_bm (1<<0) /* DFLL Calibration bits [6:0] bit 0 mask. */ +#define DFLL_CALL0_bp 0 /* DFLL Calibration bits [6:0] bit 0 position. */ +#define DFLL_CALL1_bm (1<<1) /* DFLL Calibration bits [6:0] bit 1 mask. */ +#define DFLL_CALL1_bp 1 /* DFLL Calibration bits [6:0] bit 1 position. */ +#define DFLL_CALL2_bm (1<<2) /* DFLL Calibration bits [6:0] bit 2 mask. */ +#define DFLL_CALL2_bp 2 /* DFLL Calibration bits [6:0] bit 2 position. */ +#define DFLL_CALL3_bm (1<<3) /* DFLL Calibration bits [6:0] bit 3 mask. */ +#define DFLL_CALL3_bp 3 /* DFLL Calibration bits [6:0] bit 3 position. */ +#define DFLL_CALL4_bm (1<<4) /* DFLL Calibration bits [6:0] bit 4 mask. */ +#define DFLL_CALL4_bp 4 /* DFLL Calibration bits [6:0] bit 4 position. */ +#define DFLL_CALL5_bm (1<<5) /* DFLL Calibration bits [6:0] bit 5 mask. */ +#define DFLL_CALL5_bp 5 /* DFLL Calibration bits [6:0] bit 5 position. */ +#define DFLL_CALL6_bm (1<<6) /* DFLL Calibration bits [6:0] bit 6 mask. */ +#define DFLL_CALL6_bp 6 /* DFLL Calibration bits [6:0] bit 6 position. */ + + +/* DFLL.CALB bit masks and bit positions */ +#define DFLL_CALH_gm 0x3F /* DFLL Calibration bits [12:7] group mask. */ +#define DFLL_CALH_gp 0 /* DFLL Calibration bits [12:7] group position. */ +#define DFLL_CALH0_bm (1<<0) /* DFLL Calibration bits [12:7] bit 0 mask. */ +#define DFLL_CALH0_bp 0 /* DFLL Calibration bits [12:7] bit 0 position. */ +#define DFLL_CALH1_bm (1<<1) /* DFLL Calibration bits [12:7] bit 1 mask. */ +#define DFLL_CALH1_bp 1 /* DFLL Calibration bits [12:7] bit 1 position. */ +#define DFLL_CALH2_bm (1<<2) /* DFLL Calibration bits [12:7] bit 2 mask. */ +#define DFLL_CALH2_bp 2 /* DFLL Calibration bits [12:7] bit 2 position. */ +#define DFLL_CALH3_bm (1<<3) /* DFLL Calibration bits [12:7] bit 3 mask. */ +#define DFLL_CALH3_bp 3 /* DFLL Calibration bits [12:7] bit 3 position. */ +#define DFLL_CALH4_bm (1<<4) /* DFLL Calibration bits [12:7] bit 4 mask. */ +#define DFLL_CALH4_bp 4 /* DFLL Calibration bits [12:7] bit 4 position. */ +#define DFLL_CALH5_bm (1<<5) /* DFLL Calibration bits [12:7] bit 5 mask. */ +#define DFLL_CALH5_bp 5 /* DFLL Calibration bits [12:7] bit 5 position. */ + + +/* RST - Reset */ +/* RST.STATUS bit masks and bit positions */ +#define RST_SDRF_bm 0x40 /* Spike Detection Reset Flag bit mask. */ +#define RST_SDRF_bp 6 /* Spike Detection Reset Flag bit position. */ + +#define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ +#define RST_SRF_bp 5 /* Software Reset Flag bit position. */ + +#define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ +#define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ + +#define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ +#define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ + +#define RST_BORF_bm 0x04 /* Brown-out Reset Flag bit mask. */ +#define RST_BORF_bp 2 /* Brown-out Reset Flag bit position. */ + +#define RST_EXTRF_bm 0x02 /* External Reset Flag bit mask. */ +#define RST_EXTRF_bp 1 /* External Reset Flag bit position. */ + +#define RST_PORF_bm 0x01 /* Power-on Reset Flag bit mask. */ +#define RST_PORF_bp 0 /* Power-on Reset Flag bit position. */ + + +/* RST.CTRL bit masks and bit positions */ +#define RST_SWRST_bm 0x01 /* Software Reset bit mask. */ +#define RST_SWRST_bp 0 /* Software Reset bit position. */ + + +/* WDT - Watch-Dog Timer */ +/* WDT.CTRL bit masks and bit positions */ +#define WDT_PER_gm 0x3C /* Period group mask. */ +#define WDT_PER_gp 2 /* Period group position. */ +#define WDT_PER0_bm (1<<2) /* Period bit 0 mask. */ +#define WDT_PER0_bp 2 /* Period bit 0 position. */ +#define WDT_PER1_bm (1<<3) /* Period bit 1 mask. */ +#define WDT_PER1_bp 3 /* Period bit 1 position. */ +#define WDT_PER2_bm (1<<4) /* Period bit 2 mask. */ +#define WDT_PER2_bp 4 /* Period bit 2 position. */ +#define WDT_PER3_bm (1<<5) /* Period bit 3 mask. */ +#define WDT_PER3_bp 5 /* Period bit 3 position. */ + +#define WDT_ENABLE_bm 0x02 /* Enable bit mask. */ +#define WDT_ENABLE_bp 1 /* Enable bit position. */ + +#define WDT_CEN_bm 0x01 /* Change Enable bit mask. */ +#define WDT_CEN_bp 0 /* Change Enable bit position. */ + + +/* WDT.WINCTRL bit masks and bit positions */ +#define WDT_WPER_gm 0x3C /* Windowed Mode Period group mask. */ +#define WDT_WPER_gp 2 /* Windowed Mode Period group position. */ +#define WDT_WPER0_bm (1<<2) /* Windowed Mode Period bit 0 mask. */ +#define WDT_WPER0_bp 2 /* Windowed Mode Period bit 0 position. */ +#define WDT_WPER1_bm (1<<3) /* Windowed Mode Period bit 1 mask. */ +#define WDT_WPER1_bp 3 /* Windowed Mode Period bit 1 position. */ +#define WDT_WPER2_bm (1<<4) /* Windowed Mode Period bit 2 mask. */ +#define WDT_WPER2_bp 4 /* Windowed Mode Period bit 2 position. */ +#define WDT_WPER3_bm (1<<5) /* Windowed Mode Period bit 3 mask. */ +#define WDT_WPER3_bp 5 /* Windowed Mode Period bit 3 position. */ + +#define WDT_WEN_bm 0x02 /* Windowed Mode Enable bit mask. */ +#define WDT_WEN_bp 1 /* Windowed Mode Enable bit position. */ + +#define WDT_WCEN_bm 0x01 /* Windowed Mode Change Enable bit mask. */ +#define WDT_WCEN_bp 0 /* Windowed Mode Change Enable bit position. */ + + +/* WDT.STATUS bit masks and bit positions */ +#define WDT_SYNCBUSY_bm 0x01 /* Syncronization busy bit mask. */ +#define WDT_SYNCBUSY_bp 0 /* Syncronization busy bit position. */ + + +/* MCU - MCU Control */ +/* MCU.MCUCR bit masks and bit positions */ +#define MCU_JTAGD_bm 0x01 /* JTAG Disable bit mask. */ +#define MCU_JTAGD_bp 0 /* JTAG Disable bit position. */ + + +/* MCU.EVSYSLOCK bit masks and bit positions */ +#define MCU_EVSYS1LOCK_bm 0x10 /* Event Channel 4-7 Lock bit mask. */ +#define MCU_EVSYS1LOCK_bp 4 /* Event Channel 4-7 Lock bit position. */ + +#define MCU_EVSYS0LOCK_bm 0x01 /* Event Channel 0-3 Lock bit mask. */ +#define MCU_EVSYS0LOCK_bp 0 /* Event Channel 0-3 Lock bit position. */ + + +/* MCU.AWEXLOCK bit masks and bit positions */ +#define MCU_AWEXELOCK_bm 0x04 /* AWeX on T/C E0 Lock bit mask. */ +#define MCU_AWEXELOCK_bp 2 /* AWeX on T/C E0 Lock bit position. */ + +#define MCU_AWEXCLOCK_bm 0x01 /* AWeX on T/C C0 Lock bit mask. */ +#define MCU_AWEXCLOCK_bp 0 /* AWeX on T/C C0 Lock bit position. */ + + +/* PMIC - Programmable Multi-level Interrupt Controller */ +/* PMIC.STATUS bit masks and bit positions */ +#define PMIC_NMIEX_bm 0x80 /* Non-maskable Interrupt Executing bit mask. */ +#define PMIC_NMIEX_bp 7 /* Non-maskable Interrupt Executing bit position. */ + +#define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ +#define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ + +#define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ +#define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ + +#define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ +#define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ + + +/* PMIC.CTRL bit masks and bit positions */ +#define PMIC_RREN_bm 0x80 /* Round-Robin Priority Enable bit mask. */ +#define PMIC_RREN_bp 7 /* Round-Robin Priority Enable bit position. */ + +#define PMIC_IVSEL_bm 0x40 /* Interrupt Vector Select bit mask. */ +#define PMIC_IVSEL_bp 6 /* Interrupt Vector Select bit position. */ + +#define PMIC_HILVLEN_bm 0x04 /* High Level Enable bit mask. */ +#define PMIC_HILVLEN_bp 2 /* High Level Enable bit position. */ + +#define PMIC_MEDLVLEN_bm 0x02 /* Medium Level Enable bit mask. */ +#define PMIC_MEDLVLEN_bp 1 /* Medium Level Enable bit position. */ + +#define PMIC_LOLVLEN_bm 0x01 /* Low Level Enable bit mask. */ +#define PMIC_LOLVLEN_bp 0 /* Low Level Enable bit position. */ + + +/* DMA - DMA Controller */ +/* DMA_CH.CTRLA bit masks and bit positions */ +#define DMA_CH_ENABLE_bm 0x80 /* Channel Enable bit mask. */ +#define DMA_CH_ENABLE_bp 7 /* Channel Enable bit position. */ + +#define DMA_CH_RESET_bm 0x40 /* Channel Software Reset bit mask. */ +#define DMA_CH_RESET_bp 6 /* Channel Software Reset bit position. */ + +#define DMA_CH_REPEAT_bm 0x20 /* Channel Repeat Mode bit mask. */ +#define DMA_CH_REPEAT_bp 5 /* Channel Repeat Mode bit position. */ + +#define DMA_CH_TRFREQ_bm 0x10 /* Channel Transfer Request bit mask. */ +#define DMA_CH_TRFREQ_bp 4 /* Channel Transfer Request bit position. */ + +#define DMA_CH_SINGLE_bm 0x04 /* Channel Single Shot Data Transfer bit mask. */ +#define DMA_CH_SINGLE_bp 2 /* Channel Single Shot Data Transfer bit position. */ + +#define DMA_CH_BURSTLEN_gm 0x03 /* Channel Transfer Mode group mask. */ +#define DMA_CH_BURSTLEN_gp 0 /* Channel Transfer Mode group position. */ +#define DMA_CH_BURSTLEN0_bm (1<<0) /* Channel Transfer Mode bit 0 mask. */ +#define DMA_CH_BURSTLEN0_bp 0 /* Channel Transfer Mode bit 0 position. */ +#define DMA_CH_BURSTLEN1_bm (1<<1) /* Channel Transfer Mode bit 1 mask. */ +#define DMA_CH_BURSTLEN1_bp 1 /* Channel Transfer Mode bit 1 position. */ + + +/* DMA_CH.CTRLB bit masks and bit positions */ +#define DMA_CH_CHBUSY_bm 0x80 /* Block Transfer Busy bit mask. */ +#define DMA_CH_CHBUSY_bp 7 /* Block Transfer Busy bit position. */ + +#define DMA_CH_CHPEND_bm 0x40 /* Block Transfer Pending bit mask. */ +#define DMA_CH_CHPEND_bp 6 /* Block Transfer Pending bit position. */ + +#define DMA_CH_ERRIF_bm 0x20 /* Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH_ERRIF_bp 5 /* Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ + +#define DMA_CH_ERRINTLVL_gm 0x0C /* Transfer Error Interrupt Level group mask. */ +#define DMA_CH_ERRINTLVL_gp 2 /* Transfer Error Interrupt Level group position. */ +#define DMA_CH_ERRINTLVL0_bm (1<<2) /* Transfer Error Interrupt Level bit 0 mask. */ +#define DMA_CH_ERRINTLVL0_bp 2 /* Transfer Error Interrupt Level bit 0 position. */ +#define DMA_CH_ERRINTLVL1_bm (1<<3) /* Transfer Error Interrupt Level bit 1 mask. */ +#define DMA_CH_ERRINTLVL1_bp 3 /* Transfer Error Interrupt Level bit 1 position. */ + +#define DMA_CH_TRNINTLVL_gm 0x03 /* Transaction Complete Interrupt Level group mask. */ +#define DMA_CH_TRNINTLVL_gp 0 /* Transaction Complete Interrupt Level group position. */ +#define DMA_CH_TRNINTLVL0_bm (1<<0) /* Transaction Complete Interrupt Level bit 0 mask. */ +#define DMA_CH_TRNINTLVL0_bp 0 /* Transaction Complete Interrupt Level bit 0 position. */ +#define DMA_CH_TRNINTLVL1_bm (1<<1) /* Transaction Complete Interrupt Level bit 1 mask. */ +#define DMA_CH_TRNINTLVL1_bp 1 /* Transaction Complete Interrupt Level bit 1 position. */ + + +/* DMA_CH.ADDRCTRL bit masks and bit positions */ +#define DMA_CH_SRCRELOAD_gm 0xC0 /* Channel Source Address Reload group mask. */ +#define DMA_CH_SRCRELOAD_gp 6 /* Channel Source Address Reload group position. */ +#define DMA_CH_SRCRELOAD0_bm (1<<6) /* Channel Source Address Reload bit 0 mask. */ +#define DMA_CH_SRCRELOAD0_bp 6 /* Channel Source Address Reload bit 0 position. */ +#define DMA_CH_SRCRELOAD1_bm (1<<7) /* Channel Source Address Reload bit 1 mask. */ +#define DMA_CH_SRCRELOAD1_bp 7 /* Channel Source Address Reload bit 1 position. */ + +#define DMA_CH_SRCDIR_gm 0x30 /* Channel Source Address Mode group mask. */ +#define DMA_CH_SRCDIR_gp 4 /* Channel Source Address Mode group position. */ +#define DMA_CH_SRCDIR0_bm (1<<4) /* Channel Source Address Mode bit 0 mask. */ +#define DMA_CH_SRCDIR0_bp 4 /* Channel Source Address Mode bit 0 position. */ +#define DMA_CH_SRCDIR1_bm (1<<5) /* Channel Source Address Mode bit 1 mask. */ +#define DMA_CH_SRCDIR1_bp 5 /* Channel Source Address Mode bit 1 position. */ + +#define DMA_CH_DESTRELOAD_gm 0x0C /* Channel Destination Address Reload group mask. */ +#define DMA_CH_DESTRELOAD_gp 2 /* Channel Destination Address Reload group position. */ +#define DMA_CH_DESTRELOAD0_bm (1<<2) /* Channel Destination Address Reload bit 0 mask. */ +#define DMA_CH_DESTRELOAD0_bp 2 /* Channel Destination Address Reload bit 0 position. */ +#define DMA_CH_DESTRELOAD1_bm (1<<3) /* Channel Destination Address Reload bit 1 mask. */ +#define DMA_CH_DESTRELOAD1_bp 3 /* Channel Destination Address Reload bit 1 position. */ + +#define DMA_CH_DESTDIR_gm 0x03 /* Channel Destination Address Mode group mask. */ +#define DMA_CH_DESTDIR_gp 0 /* Channel Destination Address Mode group position. */ +#define DMA_CH_DESTDIR0_bm (1<<0) /* Channel Destination Address Mode bit 0 mask. */ +#define DMA_CH_DESTDIR0_bp 0 /* Channel Destination Address Mode bit 0 position. */ +#define DMA_CH_DESTDIR1_bm (1<<1) /* Channel Destination Address Mode bit 1 mask. */ +#define DMA_CH_DESTDIR1_bp 1 /* Channel Destination Address Mode bit 1 position. */ + + +/* DMA_CH.TRIGSRC bit masks and bit positions */ +#define DMA_CH_TRIGSRC_gm 0xFF /* Channel Trigger Source group mask. */ +#define DMA_CH_TRIGSRC_gp 0 /* Channel Trigger Source group position. */ +#define DMA_CH_TRIGSRC0_bm (1<<0) /* Channel Trigger Source bit 0 mask. */ +#define DMA_CH_TRIGSRC0_bp 0 /* Channel Trigger Source bit 0 position. */ +#define DMA_CH_TRIGSRC1_bm (1<<1) /* Channel Trigger Source bit 1 mask. */ +#define DMA_CH_TRIGSRC1_bp 1 /* Channel Trigger Source bit 1 position. */ +#define DMA_CH_TRIGSRC2_bm (1<<2) /* Channel Trigger Source bit 2 mask. */ +#define DMA_CH_TRIGSRC2_bp 2 /* Channel Trigger Source bit 2 position. */ +#define DMA_CH_TRIGSRC3_bm (1<<3) /* Channel Trigger Source bit 3 mask. */ +#define DMA_CH_TRIGSRC3_bp 3 /* Channel Trigger Source bit 3 position. */ +#define DMA_CH_TRIGSRC4_bm (1<<4) /* Channel Trigger Source bit 4 mask. */ +#define DMA_CH_TRIGSRC4_bp 4 /* Channel Trigger Source bit 4 position. */ +#define DMA_CH_TRIGSRC5_bm (1<<5) /* Channel Trigger Source bit 5 mask. */ +#define DMA_CH_TRIGSRC5_bp 5 /* Channel Trigger Source bit 5 position. */ +#define DMA_CH_TRIGSRC6_bm (1<<6) /* Channel Trigger Source bit 6 mask. */ +#define DMA_CH_TRIGSRC6_bp 6 /* Channel Trigger Source bit 6 position. */ +#define DMA_CH_TRIGSRC7_bm (1<<7) /* Channel Trigger Source bit 7 mask. */ +#define DMA_CH_TRIGSRC7_bp 7 /* Channel Trigger Source bit 7 position. */ + + +/* DMA.CTRL bit masks and bit positions */ +#define DMA_ENABLE_bm 0x80 /* Enable bit mask. */ +#define DMA_ENABLE_bp 7 /* Enable bit position. */ + +#define DMA_RESET_bm 0x40 /* Software Reset bit mask. */ +#define DMA_RESET_bp 6 /* Software Reset bit position. */ + +#define DMA_DBUFMODE_gm 0x0C /* Double Buffering Mode group mask. */ +#define DMA_DBUFMODE_gp 2 /* Double Buffering Mode group position. */ +#define DMA_DBUFMODE0_bm (1<<2) /* Double Buffering Mode bit 0 mask. */ +#define DMA_DBUFMODE0_bp 2 /* Double Buffering Mode bit 0 position. */ +#define DMA_DBUFMODE1_bm (1<<3) /* Double Buffering Mode bit 1 mask. */ +#define DMA_DBUFMODE1_bp 3 /* Double Buffering Mode bit 1 position. */ + +#define DMA_PRIMODE_gm 0x03 /* Channel Priority Mode group mask. */ +#define DMA_PRIMODE_gp 0 /* Channel Priority Mode group position. */ +#define DMA_PRIMODE0_bm (1<<0) /* Channel Priority Mode bit 0 mask. */ +#define DMA_PRIMODE0_bp 0 /* Channel Priority Mode bit 0 position. */ +#define DMA_PRIMODE1_bm (1<<1) /* Channel Priority Mode bit 1 mask. */ +#define DMA_PRIMODE1_bp 1 /* Channel Priority Mode bit 1 position. */ + + +/* DMA.INTFLAGS bit masks and bit positions */ +#define DMA_CH3ERRIF_bm 0x80 /* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH3ERRIF_bp 7 /* Channel 3 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH2ERRIF_bm 0x40 /* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH2ERRIF_bp 6 /* Channel 2 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH1ERRIF_bm 0x20 /* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH1ERRIF_bp 5 /* Channel 1 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH0ERRIF_bm 0x10 /* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH0ERRIF_bp 4 /* Channel 0 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH3TRNIF_bm 0x08 /* Channel 3 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH3TRNIF_bp 3 /* Channel 3 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH2TRNIF_bm 0x04 /* Channel 2 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH2TRNIF_bp 2 /* Channel 2 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH1TRNIF_bm 0x02 /* Channel 1 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH1TRNIF_bp 1 /* Channel 1 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH0TRNIF_bm 0x01 /* Channel 0 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH0TRNIF_bp 0 /* Channel 0 Transaction Complete Interrupt Flag bit position. */ + + +/* DMA.STATUS bit masks and bit positions */ +#define DMA_CH3BUSY_bm 0x80 /* Channel 3 Block Transfer Busy bit mask. */ +#define DMA_CH3BUSY_bp 7 /* Channel 3 Block Transfer Busy bit position. */ + +#define DMA_CH2BUSY_bm 0x40 /* Channel 2 Block Transfer Busy bit mask. */ +#define DMA_CH2BUSY_bp 6 /* Channel 2 Block Transfer Busy bit position. */ + +#define DMA_CH1BUSY_bm 0x20 /* Channel 1 Block Transfer Busy bit mask. */ +#define DMA_CH1BUSY_bp 5 /* Channel 1 Block Transfer Busy bit position. */ + +#define DMA_CH0BUSY_bm 0x10 /* Channel 0 Block Transfer Busy bit mask. */ +#define DMA_CH0BUSY_bp 4 /* Channel 0 Block Transfer Busy bit position. */ + +#define DMA_CH3PEND_bm 0x08 /* Channel 3 Block Transfer Pending bit mask. */ +#define DMA_CH3PEND_bp 3 /* Channel 3 Block Transfer Pending bit position. */ + +#define DMA_CH2PEND_bm 0x04 /* Channel 2 Block Transfer Pending bit mask. */ +#define DMA_CH2PEND_bp 2 /* Channel 2 Block Transfer Pending bit position. */ + +#define DMA_CH1PEND_bm 0x02 /* Channel 1 Block Transfer Pending bit mask. */ +#define DMA_CH1PEND_bp 1 /* Channel 1 Block Transfer Pending bit position. */ + +#define DMA_CH0PEND_bm 0x01 /* Channel 0 Block Transfer Pending bit mask. */ +#define DMA_CH0PEND_bp 0 /* Channel 0 Block Transfer Pending bit position. */ + + +/* EVSYS - Event System */ +/* EVSYS.CH0MUX bit masks and bit positions */ +#define EVSYS_CHMUX_gm 0xFF /* Event Channel 0 Multiplexer group mask. */ +#define EVSYS_CHMUX_gp 0 /* Event Channel 0 Multiplexer group position. */ +#define EVSYS_CHMUX0_bm (1<<0) /* Event Channel 0 Multiplexer bit 0 mask. */ +#define EVSYS_CHMUX0_bp 0 /* Event Channel 0 Multiplexer bit 0 position. */ +#define EVSYS_CHMUX1_bm (1<<1) /* Event Channel 0 Multiplexer bit 1 mask. */ +#define EVSYS_CHMUX1_bp 1 /* Event Channel 0 Multiplexer bit 1 position. */ +#define EVSYS_CHMUX2_bm (1<<2) /* Event Channel 0 Multiplexer bit 2 mask. */ +#define EVSYS_CHMUX2_bp 2 /* Event Channel 0 Multiplexer bit 2 position. */ +#define EVSYS_CHMUX3_bm (1<<3) /* Event Channel 0 Multiplexer bit 3 mask. */ +#define EVSYS_CHMUX3_bp 3 /* Event Channel 0 Multiplexer bit 3 position. */ +#define EVSYS_CHMUX4_bm (1<<4) /* Event Channel 0 Multiplexer bit 4 mask. */ +#define EVSYS_CHMUX4_bp 4 /* Event Channel 0 Multiplexer bit 4 position. */ +#define EVSYS_CHMUX5_bm (1<<5) /* Event Channel 0 Multiplexer bit 5 mask. */ +#define EVSYS_CHMUX5_bp 5 /* Event Channel 0 Multiplexer bit 5 position. */ +#define EVSYS_CHMUX6_bm (1<<6) /* Event Channel 0 Multiplexer bit 6 mask. */ +#define EVSYS_CHMUX6_bp 6 /* Event Channel 0 Multiplexer bit 6 position. */ +#define EVSYS_CHMUX7_bm (1<<7) /* Event Channel 0 Multiplexer bit 7 mask. */ +#define EVSYS_CHMUX7_bp 7 /* Event Channel 0 Multiplexer bit 7 position. */ + + +/* EVSYS.CH1MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH2MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH3MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH4MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH5MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH6MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH7MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH0CTRL bit masks and bit positions */ +#define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ +#define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ +#define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ +#define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ +#define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ +#define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ + +#define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ +#define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ + +#define EVSYS_QDEN_bm 0x08 /* Quadrature Decoder Enable bit mask. */ +#define EVSYS_QDEN_bp 3 /* Quadrature Decoder Enable bit position. */ + +#define EVSYS_DIGFILT_gm 0x07 /* Digital Filter group mask. */ +#define EVSYS_DIGFILT_gp 0 /* Digital Filter group position. */ +#define EVSYS_DIGFILT0_bm (1<<0) /* Digital Filter bit 0 mask. */ +#define EVSYS_DIGFILT0_bp 0 /* Digital Filter bit 0 position. */ +#define EVSYS_DIGFILT1_bm (1<<1) /* Digital Filter bit 1 mask. */ +#define EVSYS_DIGFILT1_bp 1 /* Digital Filter bit 1 position. */ +#define EVSYS_DIGFILT2_bm (1<<2) /* Digital Filter bit 2 mask. */ +#define EVSYS_DIGFILT2_bp 2 /* Digital Filter bit 2 position. */ + + +/* EVSYS.CH1CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH2CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH3CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH4CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH5CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH6CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH7CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* NVM - Non Volatile Memory Controller */ +/* NVM.CMD bit masks and bit positions */ +#define NVM_CMD_gm 0xFF /* Command group mask. */ +#define NVM_CMD_gp 0 /* Command group position. */ +#define NVM_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define NVM_CMD0_bp 0 /* Command bit 0 position. */ +#define NVM_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define NVM_CMD1_bp 1 /* Command bit 1 position. */ +#define NVM_CMD2_bm (1<<2) /* Command bit 2 mask. */ +#define NVM_CMD2_bp 2 /* Command bit 2 position. */ +#define NVM_CMD3_bm (1<<3) /* Command bit 3 mask. */ +#define NVM_CMD3_bp 3 /* Command bit 3 position. */ +#define NVM_CMD4_bm (1<<4) /* Command bit 4 mask. */ +#define NVM_CMD4_bp 4 /* Command bit 4 position. */ +#define NVM_CMD5_bm (1<<5) /* Command bit 5 mask. */ +#define NVM_CMD5_bp 5 /* Command bit 5 position. */ +#define NVM_CMD6_bm (1<<6) /* Command bit 6 mask. */ +#define NVM_CMD6_bp 6 /* Command bit 6 position. */ +#define NVM_CMD7_bm (1<<7) /* Command bit 7 mask. */ +#define NVM_CMD7_bp 7 /* Command bit 7 position. */ + + +/* NVM.CTRLA bit masks and bit positions */ +#define NVM_CMDEX_bm 0x01 /* Command Execute bit mask. */ +#define NVM_CMDEX_bp 0 /* Command Execute bit position. */ + + +/* NVM.CTRLB bit masks and bit positions */ +#define NVM_EEMAPEN_bm 0x08 /* EEPROM Mapping Enable bit mask. */ +#define NVM_EEMAPEN_bp 3 /* EEPROM Mapping Enable bit position. */ + +#define NVM_FPRM_bm 0x04 /* Flash Power Reduction Enable bit mask. */ +#define NVM_FPRM_bp 2 /* Flash Power Reduction Enable bit position. */ + +#define NVM_EPRM_bm 0x02 /* EEPROM Power Reduction Enable bit mask. */ +#define NVM_EPRM_bp 1 /* EEPROM Power Reduction Enable bit position. */ + +#define NVM_SPMLOCK_bm 0x01 /* SPM Lock bit mask. */ +#define NVM_SPMLOCK_bp 0 /* SPM Lock bit position. */ + + +/* NVM.INTCTRL bit masks and bit positions */ +#define NVM_SPMLVL_gm 0x0C /* SPM Interrupt Level group mask. */ +#define NVM_SPMLVL_gp 2 /* SPM Interrupt Level group position. */ +#define NVM_SPMLVL0_bm (1<<2) /* SPM Interrupt Level bit 0 mask. */ +#define NVM_SPMLVL0_bp 2 /* SPM Interrupt Level bit 0 position. */ +#define NVM_SPMLVL1_bm (1<<3) /* SPM Interrupt Level bit 1 mask. */ +#define NVM_SPMLVL1_bp 3 /* SPM Interrupt Level bit 1 position. */ + +#define NVM_EELVL_gm 0x03 /* EEPROM Interrupt Level group mask. */ +#define NVM_EELVL_gp 0 /* EEPROM Interrupt Level group position. */ +#define NVM_EELVL0_bm (1<<0) /* EEPROM Interrupt Level bit 0 mask. */ +#define NVM_EELVL0_bp 0 /* EEPROM Interrupt Level bit 0 position. */ +#define NVM_EELVL1_bm (1<<1) /* EEPROM Interrupt Level bit 1 mask. */ +#define NVM_EELVL1_bp 1 /* EEPROM Interrupt Level bit 1 position. */ + + +/* NVM.STATUS bit masks and bit positions */ +#define NVM_NVMBUSY_bm 0x80 /* Non-volatile Memory Busy bit mask. */ +#define NVM_NVMBUSY_bp 7 /* Non-volatile Memory Busy bit position. */ + +#define NVM_FBUSY_bm 0x40 /* Flash Memory Busy bit mask. */ +#define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ + +#define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ +#define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ + +#define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ +#define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ + + +/* NVM.LOCKBITS bit masks and bit positions */ +#define NVM_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ +#define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LOCKBITS_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LOCKBITS_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LOCKBITS_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LOCKBITS_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE0 bit masks and bit positions */ +#define NVM_FUSES_JTAGUSERID_gm 0xFF /* JTAG User ID group mask. */ +#define NVM_FUSES_JTAGUSERID_gp 0 /* JTAG User ID group position. */ +#define NVM_FUSES_JTAGUSERID0_bm (1<<0) /* JTAG User ID bit 0 mask. */ +#define NVM_FUSES_JTAGUSERID0_bp 0 /* JTAG User ID bit 0 position. */ +#define NVM_FUSES_JTAGUSERID1_bm (1<<1) /* JTAG User ID bit 1 mask. */ +#define NVM_FUSES_JTAGUSERID1_bp 1 /* JTAG User ID bit 1 position. */ +#define NVM_FUSES_JTAGUSERID2_bm (1<<2) /* JTAG User ID bit 2 mask. */ +#define NVM_FUSES_JTAGUSERID2_bp 2 /* JTAG User ID bit 2 position. */ +#define NVM_FUSES_JTAGUSERID3_bm (1<<3) /* JTAG User ID bit 3 mask. */ +#define NVM_FUSES_JTAGUSERID3_bp 3 /* JTAG User ID bit 3 position. */ +#define NVM_FUSES_JTAGUSERID4_bm (1<<4) /* JTAG User ID bit 4 mask. */ +#define NVM_FUSES_JTAGUSERID4_bp 4 /* JTAG User ID bit 4 position. */ +#define NVM_FUSES_JTAGUSERID5_bm (1<<5) /* JTAG User ID bit 5 mask. */ +#define NVM_FUSES_JTAGUSERID5_bp 5 /* JTAG User ID bit 5 position. */ +#define NVM_FUSES_JTAGUSERID6_bm (1<<6) /* JTAG User ID bit 6 mask. */ +#define NVM_FUSES_JTAGUSERID6_bp 6 /* JTAG User ID bit 6 position. */ +#define NVM_FUSES_JTAGUSERID7_bm (1<<7) /* JTAG User ID bit 7 mask. */ +#define NVM_FUSES_JTAGUSERID7_bp 7 /* JTAG User ID bit 7 position. */ + + +/* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ +#define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ +#define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ +#define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ +#define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ +#define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ +#define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ + +#define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ +#define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ +#define NVM_FUSES_WDP0_bm (1<<0) /* Watchdog Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDP0_bp 0 /* Watchdog Timeout Period bit 0 position. */ +#define NVM_FUSES_WDP1_bm (1<<1) /* Watchdog Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDP1_bp 1 /* Watchdog Timeout Period bit 1 position. */ +#define NVM_FUSES_WDP2_bm (1<<2) /* Watchdog Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDP2_bp 2 /* Watchdog Timeout Period bit 2 position. */ +#define NVM_FUSES_WDP3_bm (1<<3) /* Watchdog Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDP3_bp 3 /* Watchdog Timeout Period bit 3 position. */ + + +/* NVM_FUSES.FUSEBYTE2 bit masks and bit positions */ +#define NVM_FUSES_DVSDON_bm 0x80 /* Spike Detector Enable bit mask. */ +#define NVM_FUSES_DVSDON_bp 7 /* Spike Detector Enable bit position. */ + +#define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ +#define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ + +#define NVM_FUSES_BODACT_gm 0x0C /* BOD Operation in Active Mode group mask. */ +#define NVM_FUSES_BODACT_gp 2 /* BOD Operation in Active Mode group position. */ +#define NVM_FUSES_BODACT0_bm (1<<2) /* BOD Operation in Active Mode bit 0 mask. */ +#define NVM_FUSES_BODACT0_bp 2 /* BOD Operation in Active Mode bit 0 position. */ +#define NVM_FUSES_BODACT1_bm (1<<3) /* BOD Operation in Active Mode bit 1 mask. */ +#define NVM_FUSES_BODACT1_bp 3 /* BOD Operation in Active Mode bit 1 position. */ + +#define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ +#define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ +#define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ +#define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ +#define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ +#define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ +#define NVM_FUSES_SUT_gm 0x0C /* Start-up Time group mask. */ +#define NVM_FUSES_SUT_gp 2 /* Start-up Time group position. */ +#define NVM_FUSES_SUT0_bm (1<<2) /* Start-up Time bit 0 mask. */ +#define NVM_FUSES_SUT0_bp 2 /* Start-up Time bit 0 position. */ +#define NVM_FUSES_SUT1_bm (1<<3) /* Start-up Time bit 1 mask. */ +#define NVM_FUSES_SUT1_bp 3 /* Start-up Time bit 1 position. */ + +#define NVM_FUSES_WDLOCK_bm 0x02 /* Watchdog Timer Lock bit mask. */ +#define NVM_FUSES_WDLOCK_bp 1 /* Watchdog Timer Lock bit position. */ + +#define NVM_FUSES_JTAGEN_bm 0x01 /* JTAG Interface Enable bit mask. */ +#define NVM_FUSES_JTAGEN_bp 0 /* JTAG Interface Enable bit position. */ + + +/* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ +#define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ +#define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ + +#define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ +#define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ +#define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ +#define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ +#define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ +#define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ +#define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ +#define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ + + +/* AC - Analog Comparator */ +/* AC.AC0CTRL bit masks and bit positions */ +#define AC_INTMODE_gm 0xC0 /* Interrupt Mode group mask. */ +#define AC_INTMODE_gp 6 /* Interrupt Mode group position. */ +#define AC_INTMODE0_bm (1<<6) /* Interrupt Mode bit 0 mask. */ +#define AC_INTMODE0_bp 6 /* Interrupt Mode bit 0 position. */ +#define AC_INTMODE1_bm (1<<7) /* Interrupt Mode bit 1 mask. */ +#define AC_INTMODE1_bp 7 /* Interrupt Mode bit 1 position. */ + +#define AC_INTLVL_gm 0x30 /* Interrupt Level group mask. */ +#define AC_INTLVL_gp 4 /* Interrupt Level group position. */ +#define AC_INTLVL0_bm (1<<4) /* Interrupt Level bit 0 mask. */ +#define AC_INTLVL0_bp 4 /* Interrupt Level bit 0 position. */ +#define AC_INTLVL1_bm (1<<5) /* Interrupt Level bit 1 mask. */ +#define AC_INTLVL1_bp 5 /* Interrupt Level bit 1 position. */ + +#define AC_HSMODE_bm 0x08 /* High-speed Mode bit mask. */ +#define AC_HSMODE_bp 3 /* High-speed Mode bit position. */ + +#define AC_HYSMODE_gm 0x06 /* Hysteresis Mode group mask. */ +#define AC_HYSMODE_gp 1 /* Hysteresis Mode group position. */ +#define AC_HYSMODE0_bm (1<<1) /* Hysteresis Mode bit 0 mask. */ +#define AC_HYSMODE0_bp 1 /* Hysteresis Mode bit 0 position. */ +#define AC_HYSMODE1_bm (1<<2) /* Hysteresis Mode bit 1 mask. */ +#define AC_HYSMODE1_bp 2 /* Hysteresis Mode bit 1 position. */ + +#define AC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define AC_ENABLE_bp 0 /* Enable bit position. */ + + +/* AC.AC1CTRL bit masks and bit positions */ +/* AC_INTMODE_gm Predefined. */ +/* AC_INTMODE_gp Predefined. */ +/* AC_INTMODE0_bm Predefined. */ +/* AC_INTMODE0_bp Predefined. */ +/* AC_INTMODE1_bm Predefined. */ +/* AC_INTMODE1_bp Predefined. */ + +/* AC_INTLVL_gm Predefined. */ +/* AC_INTLVL_gp Predefined. */ +/* AC_INTLVL0_bm Predefined. */ +/* AC_INTLVL0_bp Predefined. */ +/* AC_INTLVL1_bm Predefined. */ +/* AC_INTLVL1_bp Predefined. */ + +/* AC_HSMODE_bm Predefined. */ +/* AC_HSMODE_bp Predefined. */ + +/* AC_HYSMODE_gm Predefined. */ +/* AC_HYSMODE_gp Predefined. */ +/* AC_HYSMODE0_bm Predefined. */ +/* AC_HYSMODE0_bp Predefined. */ +/* AC_HYSMODE1_bm Predefined. */ +/* AC_HYSMODE1_bp Predefined. */ + +/* AC_ENABLE_bm Predefined. */ +/* AC_ENABLE_bp Predefined. */ + + +/* AC.AC0MUXCTRL bit masks and bit positions */ +#define AC_MUXPOS_gm 0x38 /* MUX Positive Input group mask. */ +#define AC_MUXPOS_gp 3 /* MUX Positive Input group position. */ +#define AC_MUXPOS0_bm (1<<3) /* MUX Positive Input bit 0 mask. */ +#define AC_MUXPOS0_bp 3 /* MUX Positive Input bit 0 position. */ +#define AC_MUXPOS1_bm (1<<4) /* MUX Positive Input bit 1 mask. */ +#define AC_MUXPOS1_bp 4 /* MUX Positive Input bit 1 position. */ +#define AC_MUXPOS2_bm (1<<5) /* MUX Positive Input bit 2 mask. */ +#define AC_MUXPOS2_bp 5 /* MUX Positive Input bit 2 position. */ + +#define AC_MUXNEG_gm 0x07 /* MUX Negative Input group mask. */ +#define AC_MUXNEG_gp 0 /* MUX Negative Input group position. */ +#define AC_MUXNEG0_bm (1<<0) /* MUX Negative Input bit 0 mask. */ +#define AC_MUXNEG0_bp 0 /* MUX Negative Input bit 0 position. */ +#define AC_MUXNEG1_bm (1<<1) /* MUX Negative Input bit 1 mask. */ +#define AC_MUXNEG1_bp 1 /* MUX Negative Input bit 1 position. */ +#define AC_MUXNEG2_bm (1<<2) /* MUX Negative Input bit 2 mask. */ +#define AC_MUXNEG2_bp 2 /* MUX Negative Input bit 2 position. */ + + +/* AC.AC1MUXCTRL bit masks and bit positions */ +/* AC_MUXPOS_gm Predefined. */ +/* AC_MUXPOS_gp Predefined. */ +/* AC_MUXPOS0_bm Predefined. */ +/* AC_MUXPOS0_bp Predefined. */ +/* AC_MUXPOS1_bm Predefined. */ +/* AC_MUXPOS1_bp Predefined. */ +/* AC_MUXPOS2_bm Predefined. */ +/* AC_MUXPOS2_bp Predefined. */ + +/* AC_MUXNEG_gm Predefined. */ +/* AC_MUXNEG_gp Predefined. */ +/* AC_MUXNEG0_bm Predefined. */ +/* AC_MUXNEG0_bp Predefined. */ +/* AC_MUXNEG1_bm Predefined. */ +/* AC_MUXNEG1_bp Predefined. */ +/* AC_MUXNEG2_bm Predefined. */ +/* AC_MUXNEG2_bp Predefined. */ + + +/* AC.CTRLA bit masks and bit positions */ +#define AC_AC0OUT_bm 0x01 /* Comparator 0 Output Enable bit mask. */ +#define AC_AC0OUT_bp 0 /* Comparator 0 Output Enable bit position. */ + + +/* AC.CTRLB bit masks and bit positions */ +#define AC_SCALEFAC_gm 0x3F /* VCC Voltage Scaler Factor group mask. */ +#define AC_SCALEFAC_gp 0 /* VCC Voltage Scaler Factor group position. */ +#define AC_SCALEFAC0_bm (1<<0) /* VCC Voltage Scaler Factor bit 0 mask. */ +#define AC_SCALEFAC0_bp 0 /* VCC Voltage Scaler Factor bit 0 position. */ +#define AC_SCALEFAC1_bm (1<<1) /* VCC Voltage Scaler Factor bit 1 mask. */ +#define AC_SCALEFAC1_bp 1 /* VCC Voltage Scaler Factor bit 1 position. */ +#define AC_SCALEFAC2_bm (1<<2) /* VCC Voltage Scaler Factor bit 2 mask. */ +#define AC_SCALEFAC2_bp 2 /* VCC Voltage Scaler Factor bit 2 position. */ +#define AC_SCALEFAC3_bm (1<<3) /* VCC Voltage Scaler Factor bit 3 mask. */ +#define AC_SCALEFAC3_bp 3 /* VCC Voltage Scaler Factor bit 3 position. */ +#define AC_SCALEFAC4_bm (1<<4) /* VCC Voltage Scaler Factor bit 4 mask. */ +#define AC_SCALEFAC4_bp 4 /* VCC Voltage Scaler Factor bit 4 position. */ +#define AC_SCALEFAC5_bm (1<<5) /* VCC Voltage Scaler Factor bit 5 mask. */ +#define AC_SCALEFAC5_bp 5 /* VCC Voltage Scaler Factor bit 5 position. */ + + +/* AC.WINCTRL bit masks and bit positions */ +#define AC_WEN_bm 0x10 /* Window Mode Enable bit mask. */ +#define AC_WEN_bp 4 /* Window Mode Enable bit position. */ + +#define AC_WINTMODE_gm 0x0C /* Window Interrupt Mode group mask. */ +#define AC_WINTMODE_gp 2 /* Window Interrupt Mode group position. */ +#define AC_WINTMODE0_bm (1<<2) /* Window Interrupt Mode bit 0 mask. */ +#define AC_WINTMODE0_bp 2 /* Window Interrupt Mode bit 0 position. */ +#define AC_WINTMODE1_bm (1<<3) /* Window Interrupt Mode bit 1 mask. */ +#define AC_WINTMODE1_bp 3 /* Window Interrupt Mode bit 1 position. */ + +#define AC_WINTLVL_gm 0x03 /* Window Interrupt Level group mask. */ +#define AC_WINTLVL_gp 0 /* Window Interrupt Level group position. */ +#define AC_WINTLVL0_bm (1<<0) /* Window Interrupt Level bit 0 mask. */ +#define AC_WINTLVL0_bp 0 /* Window Interrupt Level bit 0 position. */ +#define AC_WINTLVL1_bm (1<<1) /* Window Interrupt Level bit 1 mask. */ +#define AC_WINTLVL1_bp 1 /* Window Interrupt Level bit 1 position. */ + + +/* AC.STATUS bit masks and bit positions */ +#define AC_WSTATE_gm 0xC0 /* Window Mode State group mask. */ +#define AC_WSTATE_gp 6 /* Window Mode State group position. */ +#define AC_WSTATE0_bm (1<<6) /* Window Mode State bit 0 mask. */ +#define AC_WSTATE0_bp 6 /* Window Mode State bit 0 position. */ +#define AC_WSTATE1_bm (1<<7) /* Window Mode State bit 1 mask. */ +#define AC_WSTATE1_bp 7 /* Window Mode State bit 1 position. */ + +#define AC_AC1STATE_bm 0x20 /* Comparator 1 State bit mask. */ +#define AC_AC1STATE_bp 5 /* Comparator 1 State bit position. */ + +#define AC_AC0STATE_bm 0x10 /* Comparator 0 State bit mask. */ +#define AC_AC0STATE_bp 4 /* Comparator 0 State bit position. */ + +#define AC_WIF_bm 0x04 /* Window Mode Interrupt Flag bit mask. */ +#define AC_WIF_bp 2 /* Window Mode Interrupt Flag bit position. */ + +#define AC_AC1IF_bm 0x02 /* Comparator 1 Interrupt Flag bit mask. */ +#define AC_AC1IF_bp 1 /* Comparator 1 Interrupt Flag bit position. */ + +#define AC_AC0IF_bm 0x01 /* Comparator 0 Interrupt Flag bit mask. */ +#define AC_AC0IF_bp 0 /* Comparator 0 Interrupt Flag bit position. */ + + +/* ADC - Analog/Digital Converter */ +/* ADC_CH.CTRL bit masks and bit positions */ +#define ADC_CH_START_bm 0x80 /* Channel Start Conversion bit mask. */ +#define ADC_CH_START_bp 7 /* Channel Start Conversion bit position. */ + +#define ADC_CH_GAINFAC_gm 0x1C /* Gain Factor group mask. */ +#define ADC_CH_GAINFAC_gp 2 /* Gain Factor group position. */ +#define ADC_CH_GAINFAC0_bm (1<<2) /* Gain Factor bit 0 mask. */ +#define ADC_CH_GAINFAC0_bp 2 /* Gain Factor bit 0 position. */ +#define ADC_CH_GAINFAC1_bm (1<<3) /* Gain Factor bit 1 mask. */ +#define ADC_CH_GAINFAC1_bp 3 /* Gain Factor bit 1 position. */ +#define ADC_CH_GAINFAC2_bm (1<<4) /* Gain Factor bit 2 mask. */ +#define ADC_CH_GAINFAC2_bp 4 /* Gain Factor bit 2 position. */ + +#define ADC_CH_INPUTMODE_gm 0x03 /* Input Mode Select group mask. */ +#define ADC_CH_INPUTMODE_gp 0 /* Input Mode Select group position. */ +#define ADC_CH_INPUTMODE0_bm (1<<0) /* Input Mode Select bit 0 mask. */ +#define ADC_CH_INPUTMODE0_bp 0 /* Input Mode Select bit 0 position. */ +#define ADC_CH_INPUTMODE1_bm (1<<1) /* Input Mode Select bit 1 mask. */ +#define ADC_CH_INPUTMODE1_bp 1 /* Input Mode Select bit 1 position. */ + + +/* ADC_CH.MUXCTRL bit masks and bit positions */ +#define ADC_CH_MUXPOS_gm 0x78 /* Positive Input Select group mask. */ +#define ADC_CH_MUXPOS_gp 3 /* Positive Input Select group position. */ +#define ADC_CH_MUXPOS0_bm (1<<3) /* Positive Input Select bit 0 mask. */ +#define ADC_CH_MUXPOS0_bp 3 /* Positive Input Select bit 0 position. */ +#define ADC_CH_MUXPOS1_bm (1<<4) /* Positive Input Select bit 1 mask. */ +#define ADC_CH_MUXPOS1_bp 4 /* Positive Input Select bit 1 position. */ +#define ADC_CH_MUXPOS2_bm (1<<5) /* Positive Input Select bit 2 mask. */ +#define ADC_CH_MUXPOS2_bp 5 /* Positive Input Select bit 2 position. */ +#define ADC_CH_MUXPOS3_bm (1<<6) /* Positive Input Select bit 3 mask. */ +#define ADC_CH_MUXPOS3_bp 6 /* Positive Input Select bit 3 position. */ + +#define ADC_CH_MUXINT_gm 0x78 /* Internal Input Select group mask. */ +#define ADC_CH_MUXINT_gp 3 /* Internal Input Select group position. */ +#define ADC_CH_MUXINT0_bm (1<<3) /* Internal Input Select bit 0 mask. */ +#define ADC_CH_MUXINT0_bp 3 /* Internal Input Select bit 0 position. */ +#define ADC_CH_MUXINT1_bm (1<<4) /* Internal Input Select bit 1 mask. */ +#define ADC_CH_MUXINT1_bp 4 /* Internal Input Select bit 1 position. */ +#define ADC_CH_MUXINT2_bm (1<<5) /* Internal Input Select bit 2 mask. */ +#define ADC_CH_MUXINT2_bp 5 /* Internal Input Select bit 2 position. */ +#define ADC_CH_MUXINT3_bm (1<<6) /* Internal Input Select bit 3 mask. */ +#define ADC_CH_MUXINT3_bp 6 /* Internal Input Select bit 3 position. */ + +#define ADC_CH_MUXNEG_gm 0x03 /* Negative Input Select group mask. */ +#define ADC_CH_MUXNEG_gp 0 /* Negative Input Select group position. */ +#define ADC_CH_MUXNEG0_bm (1<<0) /* Negative Input Select bit 0 mask. */ +#define ADC_CH_MUXNEG0_bp 0 /* Negative Input Select bit 0 position. */ +#define ADC_CH_MUXNEG1_bm (1<<1) /* Negative Input Select bit 1 mask. */ +#define ADC_CH_MUXNEG1_bp 1 /* Negative Input Select bit 1 position. */ + + +/* ADC_CH.INTCTRL bit masks and bit positions */ +#define ADC_CH_INTMODE_gm 0x0C /* Interrupt Mode group mask. */ +#define ADC_CH_INTMODE_gp 2 /* Interrupt Mode group position. */ +#define ADC_CH_INTMODE0_bm (1<<2) /* Interrupt Mode bit 0 mask. */ +#define ADC_CH_INTMODE0_bp 2 /* Interrupt Mode bit 0 position. */ +#define ADC_CH_INTMODE1_bm (1<<3) /* Interrupt Mode bit 1 mask. */ +#define ADC_CH_INTMODE1_bp 3 /* Interrupt Mode bit 1 position. */ + +#define ADC_CH_INTLVL_gm 0x03 /* Interrupt Level group mask. */ +#define ADC_CH_INTLVL_gp 0 /* Interrupt Level group position. */ +#define ADC_CH_INTLVL0_bm (1<<0) /* Interrupt Level bit 0 mask. */ +#define ADC_CH_INTLVL0_bp 0 /* Interrupt Level bit 0 position. */ +#define ADC_CH_INTLVL1_bm (1<<1) /* Interrupt Level bit 1 mask. */ +#define ADC_CH_INTLVL1_bp 1 /* Interrupt Level bit 1 position. */ + + +/* ADC_CH.INTFLAGS bit masks and bit positions */ +#define ADC_CH_CHIF_bm 0x01 /* Channel Interrupt Flag bit mask. */ +#define ADC_CH_CHIF_bp 0 /* Channel Interrupt Flag bit position. */ + + +/* ADC.CTRLA bit masks and bit positions */ +#define ADC_DMASEL_gm 0xE0 /* DMA Selection group mask. */ +#define ADC_DMASEL_gp 5 /* DMA Selection group position. */ +#define ADC_DMASEL0_bm (1<<5) /* DMA Selection bit 0 mask. */ +#define ADC_DMASEL0_bp 5 /* DMA Selection bit 0 position. */ +#define ADC_DMASEL1_bm (1<<6) /* DMA Selection bit 1 mask. */ +#define ADC_DMASEL1_bp 6 /* DMA Selection bit 1 position. */ +#define ADC_DMASEL2_bm (1<<7) /* DMA Selection bit 2 mask. */ +#define ADC_DMASEL2_bp 7 /* DMA Selection bit 2 position. */ + +#define ADC_CH3START_bm 0x20 /* Channel 3 Start Conversion bit mask. */ +#define ADC_CH3START_bp 5 /* Channel 3 Start Conversion bit position. */ + +#define ADC_CH2START_bm 0x10 /* Channel 2 Start Conversion bit mask. */ +#define ADC_CH2START_bp 4 /* Channel 2 Start Conversion bit position. */ + +#define ADC_CH1START_bm 0x08 /* Channel 1 Start Conversion bit mask. */ +#define ADC_CH1START_bp 3 /* Channel 1 Start Conversion bit position. */ + +#define ADC_CH0START_bm 0x04 /* Channel 0 Start Conversion bit mask. */ +#define ADC_CH0START_bp 2 /* Channel 0 Start Conversion bit position. */ + +#define ADC_FLUSH_bm 0x02 /* Flush Pipeline bit mask. */ +#define ADC_FLUSH_bp 1 /* Flush Pipeline bit position. */ + +#define ADC_ENABLE_bm 0x01 /* Enable ADC bit mask. */ +#define ADC_ENABLE_bp 0 /* Enable ADC bit position. */ + + +/* ADC.CTRLB bit masks and bit positions */ +#define ADC_CONMODE_bm 0x10 /* Conversion Mode bit mask. */ +#define ADC_CONMODE_bp 4 /* Conversion Mode bit position. */ + +#define ADC_FREERUN_bm 0x08 /* Free Running Mode Enable bit mask. */ +#define ADC_FREERUN_bp 3 /* Free Running Mode Enable bit position. */ + +#define ADC_RESOLUTION_gm 0x06 /* Result Resolution group mask. */ +#define ADC_RESOLUTION_gp 1 /* Result Resolution group position. */ +#define ADC_RESOLUTION0_bm (1<<1) /* Result Resolution bit 0 mask. */ +#define ADC_RESOLUTION0_bp 1 /* Result Resolution bit 0 position. */ +#define ADC_RESOLUTION1_bm (1<<2) /* Result Resolution bit 1 mask. */ +#define ADC_RESOLUTION1_bp 2 /* Result Resolution bit 1 position. */ + + +/* ADC.REFCTRL bit masks and bit positions */ +#define ADC_REFSEL_gm 0x30 /* Reference Selection group mask. */ +#define ADC_REFSEL_gp 4 /* Reference Selection group position. */ +#define ADC_REFSEL0_bm (1<<4) /* Reference Selection bit 0 mask. */ +#define ADC_REFSEL0_bp 4 /* Reference Selection bit 0 position. */ +#define ADC_REFSEL1_bm (1<<5) /* Reference Selection bit 1 mask. */ +#define ADC_REFSEL1_bp 5 /* Reference Selection bit 1 position. */ + +#define ADC_BANDGAP_bm 0x02 /* Bandgap enable bit mask. */ +#define ADC_BANDGAP_bp 1 /* Bandgap enable bit position. */ + +#define ADC_TEMPREF_bm 0x01 /* Temperature Reference Enable bit mask. */ +#define ADC_TEMPREF_bp 0 /* Temperature Reference Enable bit position. */ + + +/* ADC.EVCTRL bit masks and bit positions */ +#define ADC_SWEEP_gm 0xC0 /* Channel Sweep Selection group mask. */ +#define ADC_SWEEP_gp 6 /* Channel Sweep Selection group position. */ +#define ADC_SWEEP0_bm (1<<6) /* Channel Sweep Selection bit 0 mask. */ +#define ADC_SWEEP0_bp 6 /* Channel Sweep Selection bit 0 position. */ +#define ADC_SWEEP1_bm (1<<7) /* Channel Sweep Selection bit 1 mask. */ +#define ADC_SWEEP1_bp 7 /* Channel Sweep Selection bit 1 position. */ + +#define ADC_EVSEL_gm 0x38 /* Event Input Select group mask. */ +#define ADC_EVSEL_gp 3 /* Event Input Select group position. */ +#define ADC_EVSEL0_bm (1<<3) /* Event Input Select bit 0 mask. */ +#define ADC_EVSEL0_bp 3 /* Event Input Select bit 0 position. */ +#define ADC_EVSEL1_bm (1<<4) /* Event Input Select bit 1 mask. */ +#define ADC_EVSEL1_bp 4 /* Event Input Select bit 1 position. */ +#define ADC_EVSEL2_bm (1<<5) /* Event Input Select bit 2 mask. */ +#define ADC_EVSEL2_bp 5 /* Event Input Select bit 2 position. */ + +#define ADC_EVACT_gm 0x07 /* Event Action Select group mask. */ +#define ADC_EVACT_gp 0 /* Event Action Select group position. */ +#define ADC_EVACT0_bm (1<<0) /* Event Action Select bit 0 mask. */ +#define ADC_EVACT0_bp 0 /* Event Action Select bit 0 position. */ +#define ADC_EVACT1_bm (1<<1) /* Event Action Select bit 1 mask. */ +#define ADC_EVACT1_bp 1 /* Event Action Select bit 1 position. */ +#define ADC_EVACT2_bm (1<<2) /* Event Action Select bit 2 mask. */ +#define ADC_EVACT2_bp 2 /* Event Action Select bit 2 position. */ + + +/* ADC.PRESCALER bit masks and bit positions */ +#define ADC_PRESCALER_gm 0x07 /* Clock Prescaler Selection group mask. */ +#define ADC_PRESCALER_gp 0 /* Clock Prescaler Selection group position. */ +#define ADC_PRESCALER0_bm (1<<0) /* Clock Prescaler Selection bit 0 mask. */ +#define ADC_PRESCALER0_bp 0 /* Clock Prescaler Selection bit 0 position. */ +#define ADC_PRESCALER1_bm (1<<1) /* Clock Prescaler Selection bit 1 mask. */ +#define ADC_PRESCALER1_bp 1 /* Clock Prescaler Selection bit 1 position. */ +#define ADC_PRESCALER2_bm (1<<2) /* Clock Prescaler Selection bit 2 mask. */ +#define ADC_PRESCALER2_bp 2 /* Clock Prescaler Selection bit 2 position. */ + + +/* ADC.CALCTRL bit masks and bit positions */ +#define ADC_CAL_bm 0x01 /* ADC Calibration Start bit mask. */ +#define ADC_CAL_bp 0 /* ADC Calibration Start bit position. */ + + +/* ADC.INTFLAGS bit masks and bit positions */ +#define ADC_CH3IF_bm 0x08 /* Channel 3 Interrupt Flag bit mask. */ +#define ADC_CH3IF_bp 3 /* Channel 3 Interrupt Flag bit position. */ + +#define ADC_CH2IF_bm 0x04 /* Channel 2 Interrupt Flag bit mask. */ +#define ADC_CH2IF_bp 2 /* Channel 2 Interrupt Flag bit position. */ + +#define ADC_CH1IF_bm 0x02 /* Channel 1 Interrupt Flag bit mask. */ +#define ADC_CH1IF_bp 1 /* Channel 1 Interrupt Flag bit position. */ + +#define ADC_CH0IF_bm 0x01 /* Channel 0 Interrupt Flag bit mask. */ +#define ADC_CH0IF_bp 0 /* Channel 0 Interrupt Flag bit position. */ + + +/* DAC - Digital/Analog Converter */ +/* DAC.CTRLA bit masks and bit positions */ +#define DAC_IDOEN_bm 0x10 /* Internal Output Enable bit mask. */ +#define DAC_IDOEN_bp 4 /* Internal Output Enable bit position. */ + +#define DAC_CH1EN_bm 0x08 /* Channel 1 Output Enable bit mask. */ +#define DAC_CH1EN_bp 3 /* Channel 1 Output Enable bit position. */ + +#define DAC_CH0EN_bm 0x04 /* Channel 0 Output Enable bit mask. */ +#define DAC_CH0EN_bp 2 /* Channel 0 Output Enable bit position. */ + +#define DAC_LPMODE_bm 0x02 /* Low Power Mode bit mask. */ +#define DAC_LPMODE_bp 1 /* Low Power Mode bit position. */ + +#define DAC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define DAC_ENABLE_bp 0 /* Enable bit position. */ + + +/* DAC.CTRLB bit masks and bit positions */ +#define DAC_CHSEL_gm 0x60 /* Channel Select group mask. */ +#define DAC_CHSEL_gp 5 /* Channel Select group position. */ +#define DAC_CHSEL0_bm (1<<5) /* Channel Select bit 0 mask. */ +#define DAC_CHSEL0_bp 5 /* Channel Select bit 0 position. */ +#define DAC_CHSEL1_bm (1<<6) /* Channel Select bit 1 mask. */ +#define DAC_CHSEL1_bp 6 /* Channel Select bit 1 position. */ + +#define DAC_CH1TRIG_bm 0x02 /* Channel 1 Event Trig Enable bit mask. */ +#define DAC_CH1TRIG_bp 1 /* Channel 1 Event Trig Enable bit position. */ + +#define DAC_CH0TRIG_bm 0x01 /* Channel 0 Event Trig Enable bit mask. */ +#define DAC_CH0TRIG_bp 0 /* Channel 0 Event Trig Enable bit position. */ + + +/* DAC.CTRLC bit masks and bit positions */ +#define DAC_REFSEL_gm 0x18 /* Reference Select group mask. */ +#define DAC_REFSEL_gp 3 /* Reference Select group position. */ +#define DAC_REFSEL0_bm (1<<3) /* Reference Select bit 0 mask. */ +#define DAC_REFSEL0_bp 3 /* Reference Select bit 0 position. */ +#define DAC_REFSEL1_bm (1<<4) /* Reference Select bit 1 mask. */ +#define DAC_REFSEL1_bp 4 /* Reference Select bit 1 position. */ + +#define DAC_LEFTADJ_bm 0x01 /* Left-adjust Result bit mask. */ +#define DAC_LEFTADJ_bp 0 /* Left-adjust Result bit position. */ + + +/* DAC.EVCTRL bit masks and bit positions */ +#define DAC_EVSEL_gm 0x07 /* Event Input Selection group mask. */ +#define DAC_EVSEL_gp 0 /* Event Input Selection group position. */ +#define DAC_EVSEL0_bm (1<<0) /* Event Input Selection bit 0 mask. */ +#define DAC_EVSEL0_bp 0 /* Event Input Selection bit 0 position. */ +#define DAC_EVSEL1_bm (1<<1) /* Event Input Selection bit 1 mask. */ +#define DAC_EVSEL1_bp 1 /* Event Input Selection bit 1 position. */ +#define DAC_EVSEL2_bm (1<<2) /* Event Input Selection bit 2 mask. */ +#define DAC_EVSEL2_bp 2 /* Event Input Selection bit 2 position. */ + + +/* DAC.TIMCTRL bit masks and bit positions */ +#define DAC_CONINTVAL_gm 0x70 /* Conversion Intercal group mask. */ +#define DAC_CONINTVAL_gp 4 /* Conversion Intercal group position. */ +#define DAC_CONINTVAL0_bm (1<<4) /* Conversion Intercal bit 0 mask. */ +#define DAC_CONINTVAL0_bp 4 /* Conversion Intercal bit 0 position. */ +#define DAC_CONINTVAL1_bm (1<<5) /* Conversion Intercal bit 1 mask. */ +#define DAC_CONINTVAL1_bp 5 /* Conversion Intercal bit 1 position. */ +#define DAC_CONINTVAL2_bm (1<<6) /* Conversion Intercal bit 2 mask. */ +#define DAC_CONINTVAL2_bp 6 /* Conversion Intercal bit 2 position. */ + +#define DAC_REFRESH_gm 0x0F /* Refresh Timing Control group mask. */ +#define DAC_REFRESH_gp 0 /* Refresh Timing Control group position. */ +#define DAC_REFRESH0_bm (1<<0) /* Refresh Timing Control bit 0 mask. */ +#define DAC_REFRESH0_bp 0 /* Refresh Timing Control bit 0 position. */ +#define DAC_REFRESH1_bm (1<<1) /* Refresh Timing Control bit 1 mask. */ +#define DAC_REFRESH1_bp 1 /* Refresh Timing Control bit 1 position. */ +#define DAC_REFRESH2_bm (1<<2) /* Refresh Timing Control bit 2 mask. */ +#define DAC_REFRESH2_bp 2 /* Refresh Timing Control bit 2 position. */ +#define DAC_REFRESH3_bm (1<<3) /* Refresh Timing Control bit 3 mask. */ +#define DAC_REFRESH3_bp 3 /* Refresh Timing Control bit 3 position. */ + + +/* DAC.STATUS bit masks and bit positions */ +#define DAC_CH1DRE_bm 0x02 /* Channel 1 Data Register Empty bit mask. */ +#define DAC_CH1DRE_bp 1 /* Channel 1 Data Register Empty bit position. */ + +#define DAC_CH0DRE_bm 0x01 /* Channel 0 Data Register Empty bit mask. */ +#define DAC_CH0DRE_bp 0 /* Channel 0 Data Register Empty bit position. */ + + +/* RTC - Real-Time Clounter */ +/* RTC.CTRL bit masks and bit positions */ +#define RTC_PRESCALER_gm 0x07 /* Prescaling Factor group mask. */ +#define RTC_PRESCALER_gp 0 /* Prescaling Factor group position. */ +#define RTC_PRESCALER0_bm (1<<0) /* Prescaling Factor bit 0 mask. */ +#define RTC_PRESCALER0_bp 0 /* Prescaling Factor bit 0 position. */ +#define RTC_PRESCALER1_bm (1<<1) /* Prescaling Factor bit 1 mask. */ +#define RTC_PRESCALER1_bp 1 /* Prescaling Factor bit 1 position. */ +#define RTC_PRESCALER2_bm (1<<2) /* Prescaling Factor bit 2 mask. */ +#define RTC_PRESCALER2_bp 2 /* Prescaling Factor bit 2 position. */ + + +/* RTC.STATUS bit masks and bit positions */ +#define RTC_SYNCBUSY_bm 0x01 /* Synchronization Busy Flag bit mask. */ +#define RTC_SYNCBUSY_bp 0 /* Synchronization Busy Flag bit position. */ + + +/* RTC.INTCTRL bit masks and bit positions */ +#define RTC_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ +#define RTC_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ +#define RTC_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ +#define RTC_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ +#define RTC_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ +#define RTC_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ + +#define RTC_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ +#define RTC_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ +#define RTC_OVFINTLVL0_bm (1<<0) /* Overflow Interrupt Level bit 0 mask. */ +#define RTC_OVFINTLVL0_bp 0 /* Overflow Interrupt Level bit 0 position. */ +#define RTC_OVFINTLVL1_bm (1<<1) /* Overflow Interrupt Level bit 1 mask. */ +#define RTC_OVFINTLVL1_bp 1 /* Overflow Interrupt Level bit 1 position. */ + + +/* RTC.INTFLAGS bit masks and bit positions */ +#define RTC_COMPIF_bm 0x02 /* Compare Match Interrupt Flag bit mask. */ +#define RTC_COMPIF_bp 1 /* Compare Match Interrupt Flag bit position. */ + +#define RTC_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define RTC_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* EBI - External Bus Interface */ +/* EBI_CS.CTRLA bit masks and bit positions */ +#define EBI_CS_ASPACE_gm 0x7C /* Address Space group mask. */ +#define EBI_CS_ASPACE_gp 2 /* Address Space group position. */ +#define EBI_CS_ASPACE0_bm (1<<2) /* Address Space bit 0 mask. */ +#define EBI_CS_ASPACE0_bp 2 /* Address Space bit 0 position. */ +#define EBI_CS_ASPACE1_bm (1<<3) /* Address Space bit 1 mask. */ +#define EBI_CS_ASPACE1_bp 3 /* Address Space bit 1 position. */ +#define EBI_CS_ASPACE2_bm (1<<4) /* Address Space bit 2 mask. */ +#define EBI_CS_ASPACE2_bp 4 /* Address Space bit 2 position. */ +#define EBI_CS_ASPACE3_bm (1<<5) /* Address Space bit 3 mask. */ +#define EBI_CS_ASPACE3_bp 5 /* Address Space bit 3 position. */ +#define EBI_CS_ASPACE4_bm (1<<6) /* Address Space bit 4 mask. */ +#define EBI_CS_ASPACE4_bp 6 /* Address Space bit 4 position. */ + +#define EBI_CS_MODE_gm 0x03 /* Memory Mode group mask. */ +#define EBI_CS_MODE_gp 0 /* Memory Mode group position. */ +#define EBI_CS_MODE0_bm (1<<0) /* Memory Mode bit 0 mask. */ +#define EBI_CS_MODE0_bp 0 /* Memory Mode bit 0 position. */ +#define EBI_CS_MODE1_bm (1<<1) /* Memory Mode bit 1 mask. */ +#define EBI_CS_MODE1_bp 1 /* Memory Mode bit 1 position. */ + + +/* EBI_CS.CTRLB bit masks and bit positions */ +#define EBI_CS_SRWS_gm 0x07 /* SRAM Wait State Cycles group mask. */ +#define EBI_CS_SRWS_gp 0 /* SRAM Wait State Cycles group position. */ +#define EBI_CS_SRWS0_bm (1<<0) /* SRAM Wait State Cycles bit 0 mask. */ +#define EBI_CS_SRWS0_bp 0 /* SRAM Wait State Cycles bit 0 position. */ +#define EBI_CS_SRWS1_bm (1<<1) /* SRAM Wait State Cycles bit 1 mask. */ +#define EBI_CS_SRWS1_bp 1 /* SRAM Wait State Cycles bit 1 position. */ +#define EBI_CS_SRWS2_bm (1<<2) /* SRAM Wait State Cycles bit 2 mask. */ +#define EBI_CS_SRWS2_bp 2 /* SRAM Wait State Cycles bit 2 position. */ + +#define EBI_CS_SDINITDONE_bm 0x80 /* SDRAM Initialization Done bit mask. */ +#define EBI_CS_SDINITDONE_bp 7 /* SDRAM Initialization Done bit position. */ + +#define EBI_CS_SDSREN_bm 0x04 /* SDRAM Self-refresh Enable bit mask. */ +#define EBI_CS_SDSREN_bp 2 /* SDRAM Self-refresh Enable bit position. */ + +#define EBI_CS_SDMODE_gm 0x03 /* SDRAM Mode group mask. */ +#define EBI_CS_SDMODE_gp 0 /* SDRAM Mode group position. */ +#define EBI_CS_SDMODE0_bm (1<<0) /* SDRAM Mode bit 0 mask. */ +#define EBI_CS_SDMODE0_bp 0 /* SDRAM Mode bit 0 position. */ +#define EBI_CS_SDMODE1_bm (1<<1) /* SDRAM Mode bit 1 mask. */ +#define EBI_CS_SDMODE1_bp 1 /* SDRAM Mode bit 1 position. */ + + +/* EBI.CTRL bit masks and bit positions */ +#define EBI_SDDATAW_gm 0xC0 /* SDRAM Data Width Setting group mask. */ +#define EBI_SDDATAW_gp 6 /* SDRAM Data Width Setting group position. */ +#define EBI_SDDATAW0_bm (1<<6) /* SDRAM Data Width Setting bit 0 mask. */ +#define EBI_SDDATAW0_bp 6 /* SDRAM Data Width Setting bit 0 position. */ +#define EBI_SDDATAW1_bm (1<<7) /* SDRAM Data Width Setting bit 1 mask. */ +#define EBI_SDDATAW1_bp 7 /* SDRAM Data Width Setting bit 1 position. */ + +#define EBI_LPCMODE_gm 0x30 /* SRAM LPC Mode group mask. */ +#define EBI_LPCMODE_gp 4 /* SRAM LPC Mode group position. */ +#define EBI_LPCMODE0_bm (1<<4) /* SRAM LPC Mode bit 0 mask. */ +#define EBI_LPCMODE0_bp 4 /* SRAM LPC Mode bit 0 position. */ +#define EBI_LPCMODE1_bm (1<<5) /* SRAM LPC Mode bit 1 mask. */ +#define EBI_LPCMODE1_bp 5 /* SRAM LPC Mode bit 1 position. */ + +#define EBI_SRMODE_gm 0x0C /* SRAM Mode group mask. */ +#define EBI_SRMODE_gp 2 /* SRAM Mode group position. */ +#define EBI_SRMODE0_bm (1<<2) /* SRAM Mode bit 0 mask. */ +#define EBI_SRMODE0_bp 2 /* SRAM Mode bit 0 position. */ +#define EBI_SRMODE1_bm (1<<3) /* SRAM Mode bit 1 mask. */ +#define EBI_SRMODE1_bp 3 /* SRAM Mode bit 1 position. */ + +#define EBI_IFMODE_gm 0x03 /* Interface Mode group mask. */ +#define EBI_IFMODE_gp 0 /* Interface Mode group position. */ +#define EBI_IFMODE0_bm (1<<0) /* Interface Mode bit 0 mask. */ +#define EBI_IFMODE0_bp 0 /* Interface Mode bit 0 position. */ +#define EBI_IFMODE1_bm (1<<1) /* Interface Mode bit 1 mask. */ +#define EBI_IFMODE1_bp 1 /* Interface Mode bit 1 position. */ + + +/* EBI.SDRAMCTRLA bit masks and bit positions */ +#define EBI_SDCAS_bm 0x08 /* SDRAM CAS Latency Setting bit mask. */ +#define EBI_SDCAS_bp 3 /* SDRAM CAS Latency Setting bit position. */ + +#define EBI_SDROW_bm 0x04 /* SDRAM ROW Bits Setting bit mask. */ +#define EBI_SDROW_bp 2 /* SDRAM ROW Bits Setting bit position. */ + +#define EBI_SDCOL_gm 0x03 /* SDRAM Column Bits Setting group mask. */ +#define EBI_SDCOL_gp 0 /* SDRAM Column Bits Setting group position. */ +#define EBI_SDCOL0_bm (1<<0) /* SDRAM Column Bits Setting bit 0 mask. */ +#define EBI_SDCOL0_bp 0 /* SDRAM Column Bits Setting bit 0 position. */ +#define EBI_SDCOL1_bm (1<<1) /* SDRAM Column Bits Setting bit 1 mask. */ +#define EBI_SDCOL1_bp 1 /* SDRAM Column Bits Setting bit 1 position. */ + + +/* EBI.SDRAMCTRLB bit masks and bit positions */ +#define EBI_MRDLY_gm 0xC0 /* SDRAM Mode Register Delay group mask. */ +#define EBI_MRDLY_gp 6 /* SDRAM Mode Register Delay group position. */ +#define EBI_MRDLY0_bm (1<<6) /* SDRAM Mode Register Delay bit 0 mask. */ +#define EBI_MRDLY0_bp 6 /* SDRAM Mode Register Delay bit 0 position. */ +#define EBI_MRDLY1_bm (1<<7) /* SDRAM Mode Register Delay bit 1 mask. */ +#define EBI_MRDLY1_bp 7 /* SDRAM Mode Register Delay bit 1 position. */ + +#define EBI_ROWCYCDLY_gm 0x38 /* SDRAM Row Cycle Delay group mask. */ +#define EBI_ROWCYCDLY_gp 3 /* SDRAM Row Cycle Delay group position. */ +#define EBI_ROWCYCDLY0_bm (1<<3) /* SDRAM Row Cycle Delay bit 0 mask. */ +#define EBI_ROWCYCDLY0_bp 3 /* SDRAM Row Cycle Delay bit 0 position. */ +#define EBI_ROWCYCDLY1_bm (1<<4) /* SDRAM Row Cycle Delay bit 1 mask. */ +#define EBI_ROWCYCDLY1_bp 4 /* SDRAM Row Cycle Delay bit 1 position. */ +#define EBI_ROWCYCDLY2_bm (1<<5) /* SDRAM Row Cycle Delay bit 2 mask. */ +#define EBI_ROWCYCDLY2_bp 5 /* SDRAM Row Cycle Delay bit 2 position. */ + +#define EBI_RPDLY_gm 0x07 /* SDRAM Row-to-Precharge Delay group mask. */ +#define EBI_RPDLY_gp 0 /* SDRAM Row-to-Precharge Delay group position. */ +#define EBI_RPDLY0_bm (1<<0) /* SDRAM Row-to-Precharge Delay bit 0 mask. */ +#define EBI_RPDLY0_bp 0 /* SDRAM Row-to-Precharge Delay bit 0 position. */ +#define EBI_RPDLY1_bm (1<<1) /* SDRAM Row-to-Precharge Delay bit 1 mask. */ +#define EBI_RPDLY1_bp 1 /* SDRAM Row-to-Precharge Delay bit 1 position. */ +#define EBI_RPDLY2_bm (1<<2) /* SDRAM Row-to-Precharge Delay bit 2 mask. */ +#define EBI_RPDLY2_bp 2 /* SDRAM Row-to-Precharge Delay bit 2 position. */ + + +/* EBI.SDRAMCTRLC bit masks and bit positions */ +#define EBI_WRDLY_gm 0xC0 /* SDRAM Write Recovery Delay group mask. */ +#define EBI_WRDLY_gp 6 /* SDRAM Write Recovery Delay group position. */ +#define EBI_WRDLY0_bm (1<<6) /* SDRAM Write Recovery Delay bit 0 mask. */ +#define EBI_WRDLY0_bp 6 /* SDRAM Write Recovery Delay bit 0 position. */ +#define EBI_WRDLY1_bm (1<<7) /* SDRAM Write Recovery Delay bit 1 mask. */ +#define EBI_WRDLY1_bp 7 /* SDRAM Write Recovery Delay bit 1 position. */ + +#define EBI_ESRDLY_gm 0x38 /* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ +#define EBI_ESRDLY_gp 3 /* SDRAM Exit-Self-refresh-to-Active Delay group position. */ +#define EBI_ESRDLY0_bm (1<<3) /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ +#define EBI_ESRDLY0_bp 3 /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ +#define EBI_ESRDLY1_bm (1<<4) /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ +#define EBI_ESRDLY1_bp 4 /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ +#define EBI_ESRDLY2_bm (1<<5) /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ +#define EBI_ESRDLY2_bp 5 /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ + +#define EBI_ROWCOLDLY_gm 0x07 /* SDRAM Row-to-Column Delay group mask. */ +#define EBI_ROWCOLDLY_gp 0 /* SDRAM Row-to-Column Delay group position. */ +#define EBI_ROWCOLDLY0_bm (1<<0) /* SDRAM Row-to-Column Delay bit 0 mask. */ +#define EBI_ROWCOLDLY0_bp 0 /* SDRAM Row-to-Column Delay bit 0 position. */ +#define EBI_ROWCOLDLY1_bm (1<<1) /* SDRAM Row-to-Column Delay bit 1 mask. */ +#define EBI_ROWCOLDLY1_bp 1 /* SDRAM Row-to-Column Delay bit 1 position. */ +#define EBI_ROWCOLDLY2_bm (1<<2) /* SDRAM Row-to-Column Delay bit 2 mask. */ +#define EBI_ROWCOLDLY2_bp 2 /* SDRAM Row-to-Column Delay bit 2 position. */ + + +/* TWI - Two-Wire Interface */ +/* TWI_MASTER.CTRLA bit masks and bit positions */ +#define TWI_MASTER_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_MASTER_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_MASTER_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_MASTER_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_MASTER_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_MASTER_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_MASTER_RIEN_bm 0x20 /* Read Interrupt Enable bit mask. */ +#define TWI_MASTER_RIEN_bp 5 /* Read Interrupt Enable bit position. */ + +#define TWI_MASTER_WIEN_bm 0x10 /* Write Interrupt Enable bit mask. */ +#define TWI_MASTER_WIEN_bp 4 /* Write Interrupt Enable bit position. */ + +#define TWI_MASTER_ENABLE_bm 0x08 /* Enable TWI Master bit mask. */ +#define TWI_MASTER_ENABLE_bp 3 /* Enable TWI Master bit position. */ + + +/* TWI_MASTER.CTRLB bit masks and bit positions */ +#define TWI_MASTER_TIMEOUT_gm 0x0C /* Inactive Bus Timeout group mask. */ +#define TWI_MASTER_TIMEOUT_gp 2 /* Inactive Bus Timeout group position. */ +#define TWI_MASTER_TIMEOUT0_bm (1<<2) /* Inactive Bus Timeout bit 0 mask. */ +#define TWI_MASTER_TIMEOUT0_bp 2 /* Inactive Bus Timeout bit 0 position. */ +#define TWI_MASTER_TIMEOUT1_bm (1<<3) /* Inactive Bus Timeout bit 1 mask. */ +#define TWI_MASTER_TIMEOUT1_bp 3 /* Inactive Bus Timeout bit 1 position. */ + +#define TWI_MASTER_QCEN_bm 0x02 /* Quick Command Enable bit mask. */ +#define TWI_MASTER_QCEN_bp 1 /* Quick Command Enable bit position. */ + +#define TWI_MASTER_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_MASTER_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_MASTER.CTRLC bit masks and bit positions */ +#define TWI_MASTER_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_MASTER_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_MASTER_CMD_gm 0x03 /* Command group mask. */ +#define TWI_MASTER_CMD_gp 0 /* Command group position. */ +#define TWI_MASTER_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_MASTER_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_MASTER_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_MASTER_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_MASTER.STATUS bit masks and bit positions */ +#define TWI_MASTER_RIF_bm 0x80 /* Read Interrupt Flag bit mask. */ +#define TWI_MASTER_RIF_bp 7 /* Read Interrupt Flag bit position. */ + +#define TWI_MASTER_WIF_bm 0x40 /* Write Interrupt Flag bit mask. */ +#define TWI_MASTER_WIF_bp 6 /* Write Interrupt Flag bit position. */ + +#define TWI_MASTER_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_MASTER_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_MASTER_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_MASTER_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_MASTER_ARBLOST_bm 0x08 /* Arbitration Lost bit mask. */ +#define TWI_MASTER_ARBLOST_bp 3 /* Arbitration Lost bit position. */ + +#define TWI_MASTER_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_MASTER_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_MASTER_BUSSTATE_gm 0x03 /* Bus State group mask. */ +#define TWI_MASTER_BUSSTATE_gp 0 /* Bus State group position. */ +#define TWI_MASTER_BUSSTATE0_bm (1<<0) /* Bus State bit 0 mask. */ +#define TWI_MASTER_BUSSTATE0_bp 0 /* Bus State bit 0 position. */ +#define TWI_MASTER_BUSSTATE1_bm (1<<1) /* Bus State bit 1 mask. */ +#define TWI_MASTER_BUSSTATE1_bp 1 /* Bus State bit 1 position. */ + + +/* TWI_SLAVE.CTRLA bit masks and bit positions */ +#define TWI_SLAVE_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_SLAVE_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_SLAVE_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_SLAVE_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_SLAVE_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_SLAVE_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ +#define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ + +#define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ +#define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ + +#define TWI_SLAVE_PIEN_bm 0x04 /* Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_PIEN_bp 2 /* Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_PMEN_bm 0x02 /* Promiscuous Mode Enable bit mask. */ +#define TWI_SLAVE_PMEN_bp 1 /* Promiscuous Mode Enable bit position. */ + +#define TWI_SLAVE_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_SLAVE_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_SLAVE.CTRLB bit masks and bit positions */ +#define TWI_SLAVE_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_SLAVE_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_SLAVE_CMD_gm 0x03 /* Command group mask. */ +#define TWI_SLAVE_CMD_gp 0 /* Command group position. */ +#define TWI_SLAVE_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_SLAVE_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_SLAVE_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_SLAVE_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_SLAVE.STATUS bit masks and bit positions */ +#define TWI_SLAVE_DIF_bm 0x80 /* Data Interrupt Flag bit mask. */ +#define TWI_SLAVE_DIF_bp 7 /* Data Interrupt Flag bit position. */ + +#define TWI_SLAVE_APIF_bm 0x40 /* Address/Stop Interrupt Flag bit mask. */ +#define TWI_SLAVE_APIF_bp 6 /* Address/Stop Interrupt Flag bit position. */ + +#define TWI_SLAVE_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_SLAVE_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_SLAVE_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_SLAVE_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_SLAVE_COLL_bm 0x08 /* Collision bit mask. */ +#define TWI_SLAVE_COLL_bp 3 /* Collision bit position. */ + +#define TWI_SLAVE_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_SLAVE_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_SLAVE_DIR_bm 0x02 /* Read/Write Direction bit mask. */ +#define TWI_SLAVE_DIR_bp 1 /* Read/Write Direction bit position. */ + +#define TWI_SLAVE_AP_bm 0x01 /* Slave Address or Stop bit mask. */ +#define TWI_SLAVE_AP_bp 0 /* Slave Address or Stop bit position. */ + + +/* TWI.CTRL bit masks and bit positions */ +#define TWI_SDAHOLD_bm 0x02 /* SDA Hold Time Enable bit mask. */ +#define TWI_SDAHOLD_bp 1 /* SDA Hold Time Enable bit position. */ + +#define TWI_EDIEN_bm 0x01 /* External Driver Interface Enable bit mask. */ +#define TWI_EDIEN_bp 0 /* External Driver Interface Enable bit position. */ + + +/* PORT - Port Configuration */ +/* PORTCFG.VPCTRLA bit masks and bit positions */ +#define PORTCFG_VP1MAP_gm 0xF0 /* Virtual Port 1 Mapping group mask. */ +#define PORTCFG_VP1MAP_gp 4 /* Virtual Port 1 Mapping group position. */ +#define PORTCFG_VP1MAP0_bm (1<<4) /* Virtual Port 1 Mapping bit 0 mask. */ +#define PORTCFG_VP1MAP0_bp 4 /* Virtual Port 1 Mapping bit 0 position. */ +#define PORTCFG_VP1MAP1_bm (1<<5) /* Virtual Port 1 Mapping bit 1 mask. */ +#define PORTCFG_VP1MAP1_bp 5 /* Virtual Port 1 Mapping bit 1 position. */ +#define PORTCFG_VP1MAP2_bm (1<<6) /* Virtual Port 1 Mapping bit 2 mask. */ +#define PORTCFG_VP1MAP2_bp 6 /* Virtual Port 1 Mapping bit 2 position. */ +#define PORTCFG_VP1MAP3_bm (1<<7) /* Virtual Port 1 Mapping bit 3 mask. */ +#define PORTCFG_VP1MAP3_bp 7 /* Virtual Port 1 Mapping bit 3 position. */ + +#define PORTCFG_VP0MAP_gm 0x0F /* Virtual Port 0 Mapping group mask. */ +#define PORTCFG_VP0MAP_gp 0 /* Virtual Port 0 Mapping group position. */ +#define PORTCFG_VP0MAP0_bm (1<<0) /* Virtual Port 0 Mapping bit 0 mask. */ +#define PORTCFG_VP0MAP0_bp 0 /* Virtual Port 0 Mapping bit 0 position. */ +#define PORTCFG_VP0MAP1_bm (1<<1) /* Virtual Port 0 Mapping bit 1 mask. */ +#define PORTCFG_VP0MAP1_bp 1 /* Virtual Port 0 Mapping bit 1 position. */ +#define PORTCFG_VP0MAP2_bm (1<<2) /* Virtual Port 0 Mapping bit 2 mask. */ +#define PORTCFG_VP0MAP2_bp 2 /* Virtual Port 0 Mapping bit 2 position. */ +#define PORTCFG_VP0MAP3_bm (1<<3) /* Virtual Port 0 Mapping bit 3 mask. */ +#define PORTCFG_VP0MAP3_bp 3 /* Virtual Port 0 Mapping bit 3 position. */ + + +/* PORTCFG.VPCTRLB bit masks and bit positions */ +#define PORTCFG_VP3MAP_gm 0xF0 /* Virtual Port 3 Mapping group mask. */ +#define PORTCFG_VP3MAP_gp 4 /* Virtual Port 3 Mapping group position. */ +#define PORTCFG_VP3MAP0_bm (1<<4) /* Virtual Port 3 Mapping bit 0 mask. */ +#define PORTCFG_VP3MAP0_bp 4 /* Virtual Port 3 Mapping bit 0 position. */ +#define PORTCFG_VP3MAP1_bm (1<<5) /* Virtual Port 3 Mapping bit 1 mask. */ +#define PORTCFG_VP3MAP1_bp 5 /* Virtual Port 3 Mapping bit 1 position. */ +#define PORTCFG_VP3MAP2_bm (1<<6) /* Virtual Port 3 Mapping bit 2 mask. */ +#define PORTCFG_VP3MAP2_bp 6 /* Virtual Port 3 Mapping bit 2 position. */ +#define PORTCFG_VP3MAP3_bm (1<<7) /* Virtual Port 3 Mapping bit 3 mask. */ +#define PORTCFG_VP3MAP3_bp 7 /* Virtual Port 3 Mapping bit 3 position. */ + +#define PORTCFG_VP2MAP_gm 0x0F /* Virtual Port 2 Mapping group mask. */ +#define PORTCFG_VP2MAP_gp 0 /* Virtual Port 2 Mapping group position. */ +#define PORTCFG_VP2MAP0_bm (1<<0) /* Virtual Port 2 Mapping bit 0 mask. */ +#define PORTCFG_VP2MAP0_bp 0 /* Virtual Port 2 Mapping bit 0 position. */ +#define PORTCFG_VP2MAP1_bm (1<<1) /* Virtual Port 2 Mapping bit 1 mask. */ +#define PORTCFG_VP2MAP1_bp 1 /* Virtual Port 2 Mapping bit 1 position. */ +#define PORTCFG_VP2MAP2_bm (1<<2) /* Virtual Port 2 Mapping bit 2 mask. */ +#define PORTCFG_VP2MAP2_bp 2 /* Virtual Port 2 Mapping bit 2 position. */ +#define PORTCFG_VP2MAP3_bm (1<<3) /* Virtual Port 2 Mapping bit 3 mask. */ +#define PORTCFG_VP2MAP3_bp 3 /* Virtual Port 2 Mapping bit 3 position. */ + + +/* PORTCFG.CLKEVOUT bit masks and bit positions */ +#define PORTCFG_CLKOUT_gm 0x03 /* Clock Output Port group mask. */ +#define PORTCFG_CLKOUT_gp 0 /* Clock Output Port group position. */ +#define PORTCFG_CLKOUT0_bm (1<<0) /* Clock Output Port bit 0 mask. */ +#define PORTCFG_CLKOUT0_bp 0 /* Clock Output Port bit 0 position. */ +#define PORTCFG_CLKOUT1_bm (1<<1) /* Clock Output Port bit 1 mask. */ +#define PORTCFG_CLKOUT1_bp 1 /* Clock Output Port bit 1 position. */ + +#define PORTCFG_EVOUT_gm 0x30 /* Event Output Port group mask. */ +#define PORTCFG_EVOUT_gp 4 /* Event Output Port group position. */ +#define PORTCFG_EVOUT0_bm (1<<4) /* Event Output Port bit 0 mask. */ +#define PORTCFG_EVOUT0_bp 4 /* Event Output Port bit 0 position. */ +#define PORTCFG_EVOUT1_bm (1<<5) /* Event Output Port bit 1 mask. */ +#define PORTCFG_EVOUT1_bp 5 /* Event Output Port bit 1 position. */ + + +/* VPORT.INTFLAGS bit masks and bit positions */ +#define VPORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define VPORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define VPORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define VPORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.INTCTRL bit masks and bit positions */ +#define PORT_INT1LVL_gm 0x0C /* Port Interrupt 1 Level group mask. */ +#define PORT_INT1LVL_gp 2 /* Port Interrupt 1 Level group position. */ +#define PORT_INT1LVL0_bm (1<<2) /* Port Interrupt 1 Level bit 0 mask. */ +#define PORT_INT1LVL0_bp 2 /* Port Interrupt 1 Level bit 0 position. */ +#define PORT_INT1LVL1_bm (1<<3) /* Port Interrupt 1 Level bit 1 mask. */ +#define PORT_INT1LVL1_bp 3 /* Port Interrupt 1 Level bit 1 position. */ + +#define PORT_INT0LVL_gm 0x03 /* Port Interrupt 0 Level group mask. */ +#define PORT_INT0LVL_gp 0 /* Port Interrupt 0 Level group position. */ +#define PORT_INT0LVL0_bm (1<<0) /* Port Interrupt 0 Level bit 0 mask. */ +#define PORT_INT0LVL0_bp 0 /* Port Interrupt 0 Level bit 0 position. */ +#define PORT_INT0LVL1_bm (1<<1) /* Port Interrupt 0 Level bit 1 mask. */ +#define PORT_INT0LVL1_bp 1 /* Port Interrupt 0 Level bit 1 position. */ + + +/* PORT.INTFLAGS bit masks and bit positions */ +#define PORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define PORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define PORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define PORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.PIN0CTRL bit masks and bit positions */ +#define PORT_SRLEN_bm 0x80 /* Slew Rate Enable bit mask. */ +#define PORT_SRLEN_bp 7 /* Slew Rate Enable bit position. */ + +#define PORT_INVEN_bm 0x40 /* Inverted I/O Enable bit mask. */ +#define PORT_INVEN_bp 6 /* Inverted I/O Enable bit position. */ + +#define PORT_OPC_gm 0x38 /* Output/Pull Configuration group mask. */ +#define PORT_OPC_gp 3 /* Output/Pull Configuration group position. */ +#define PORT_OPC0_bm (1<<3) /* Output/Pull Configuration bit 0 mask. */ +#define PORT_OPC0_bp 3 /* Output/Pull Configuration bit 0 position. */ +#define PORT_OPC1_bm (1<<4) /* Output/Pull Configuration bit 1 mask. */ +#define PORT_OPC1_bp 4 /* Output/Pull Configuration bit 1 position. */ +#define PORT_OPC2_bm (1<<5) /* Output/Pull Configuration bit 2 mask. */ +#define PORT_OPC2_bp 5 /* Output/Pull Configuration bit 2 position. */ + +#define PORT_ISC_gm 0x07 /* Input/Sense Configuration group mask. */ +#define PORT_ISC_gp 0 /* Input/Sense Configuration group position. */ +#define PORT_ISC0_bm (1<<0) /* Input/Sense Configuration bit 0 mask. */ +#define PORT_ISC0_bp 0 /* Input/Sense Configuration bit 0 position. */ +#define PORT_ISC1_bm (1<<1) /* Input/Sense Configuration bit 1 mask. */ +#define PORT_ISC1_bp 1 /* Input/Sense Configuration bit 1 position. */ +#define PORT_ISC2_bm (1<<2) /* Input/Sense Configuration bit 2 mask. */ +#define PORT_ISC2_bp 2 /* Input/Sense Configuration bit 2 position. */ + + +/* PORT.PIN1CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN2CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN3CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN4CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN5CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN6CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN7CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* TC - 16-bit Timer/Counter With PWM */ +/* TC0.CTRLA bit masks and bit positions */ +#define TC0_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC0_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC0_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC0_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC0_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC0_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC0_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC0_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC0_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC0_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC0.CTRLB bit masks and bit positions */ +#define TC0_CCDEN_bm 0x80 /* Compare or Capture D Enable bit mask. */ +#define TC0_CCDEN_bp 7 /* Compare or Capture D Enable bit position. */ + +#define TC0_CCCEN_bm 0x40 /* Compare or Capture C Enable bit mask. */ +#define TC0_CCCEN_bp 6 /* Compare or Capture C Enable bit position. */ + +#define TC0_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC0_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC0_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC0_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC0_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC0_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC0_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC0_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC0_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC0_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC0_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC0_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC0.CTRLC bit masks and bit positions */ +#define TC0_CMPD_bm 0x08 /* Compare D Output Value bit mask. */ +#define TC0_CMPD_bp 3 /* Compare D Output Value bit position. */ + +#define TC0_CMPC_bm 0x04 /* Compare C Output Value bit mask. */ +#define TC0_CMPC_bp 2 /* Compare C Output Value bit position. */ + +#define TC0_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC0_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC0_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC0_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC0.CTRLD bit masks and bit positions */ +#define TC0_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC0_EVACT_gp 5 /* Event Action group position. */ +#define TC0_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC0_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC0_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC0_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC0_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC0_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC0_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC0_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC0_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC0_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC0_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC0_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC0_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC0_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC0_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC0_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC0_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC0_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC0.CTRLE bit masks and bit positions */ +#define TC0_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC0_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC0_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC0_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC0.INTCTRLA bit masks and bit positions */ +#define TC0_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC0_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC0_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC0_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC0_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC0_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC0_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC0_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC0_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC0_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC0_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC0_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC0.INTCTRLB bit masks and bit positions */ +#define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ +#define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ +#define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ +#define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ +#define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ +#define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ + +#define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ +#define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ +#define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ +#define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ +#define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ +#define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ + +#define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC0.CTRLFCLR bit masks and bit positions */ +#define TC0_CMD_gm 0x0C /* Command group mask. */ +#define TC0_CMD_gp 2 /* Command group position. */ +#define TC0_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC0_CMD0_bp 2 /* Command bit 0 position. */ +#define TC0_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC0_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC0_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC0_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC0_DIR_bm 0x01 /* Direction bit mask. */ +#define TC0_DIR_bp 0 /* Direction bit position. */ + + +/* TC0.CTRLFSET bit masks and bit positions */ +/* TC0_CMD_gm Predefined. */ +/* TC0_CMD_gp Predefined. */ +/* TC0_CMD0_bm Predefined. */ +/* TC0_CMD0_bp Predefined. */ +/* TC0_CMD1_bm Predefined. */ +/* TC0_CMD1_bp Predefined. */ + +/* TC0_LUPD_bm Predefined. */ +/* TC0_LUPD_bp Predefined. */ + +/* TC0_DIR_bm Predefined. */ +/* TC0_DIR_bp Predefined. */ + + +/* TC0.CTRLGCLR bit masks and bit positions */ +#define TC0_CCDBV_bm 0x10 /* Compare or Capture D Buffer Valid bit mask. */ +#define TC0_CCDBV_bp 4 /* Compare or Capture D Buffer Valid bit position. */ + +#define TC0_CCCBV_bm 0x08 /* Compare or Capture C Buffer Valid bit mask. */ +#define TC0_CCCBV_bp 3 /* Compare or Capture C Buffer Valid bit position. */ + +#define TC0_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC0_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC0_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC0_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC0_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC0_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC0.CTRLGSET bit masks and bit positions */ +/* TC0_CCDBV_bm Predefined. */ +/* TC0_CCDBV_bp Predefined. */ + +/* TC0_CCCBV_bm Predefined. */ +/* TC0_CCCBV_bp Predefined. */ + +/* TC0_CCBBV_bm Predefined. */ +/* TC0_CCBBV_bp Predefined. */ + +/* TC0_CCABV_bm Predefined. */ +/* TC0_CCABV_bp Predefined. */ + +/* TC0_PERBV_bm Predefined. */ +/* TC0_PERBV_bp Predefined. */ + + +/* TC0.INTFLAGS bit masks and bit positions */ +#define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ +#define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ + +#define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ +#define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ + +#define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC0_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC0_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* TC1.CTRLA bit masks and bit positions */ +#define TC1_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC1_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC1_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC1_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC1_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC1_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC1_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC1_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC1_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC1_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC1.CTRLB bit masks and bit positions */ +#define TC1_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC1_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC1_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC1_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC1_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC1_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC1_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC1_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC1_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC1_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC1_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC1_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC1.CTRLC bit masks and bit positions */ +#define TC1_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC1_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC1_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC1_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC1.CTRLD bit masks and bit positions */ +#define TC1_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC1_EVACT_gp 5 /* Event Action group position. */ +#define TC1_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC1_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC1_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC1_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC1_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC1_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC1_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC1_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC1_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC1_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC1_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC1_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC1_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC1_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC1_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC1_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC1_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC1_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC1.CTRLE bit masks and bit positions */ +#define TC1_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC1_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC1_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC1_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC1.INTCTRLA bit masks and bit positions */ +#define TC1_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC1_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC1_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC1_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC1_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC1_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC1_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC1_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC1_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC1_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC1_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC1_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC1.INTCTRLB bit masks and bit positions */ +#define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC1.CTRLFCLR bit masks and bit positions */ +#define TC1_CMD_gm 0x0C /* Command group mask. */ +#define TC1_CMD_gp 2 /* Command group position. */ +#define TC1_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC1_CMD0_bp 2 /* Command bit 0 position. */ +#define TC1_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC1_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC1_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC1_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC1_DIR_bm 0x01 /* Direction bit mask. */ +#define TC1_DIR_bp 0 /* Direction bit position. */ + + +/* TC1.CTRLFSET bit masks and bit positions */ +/* TC1_CMD_gm Predefined. */ +/* TC1_CMD_gp Predefined. */ +/* TC1_CMD0_bm Predefined. */ +/* TC1_CMD0_bp Predefined. */ +/* TC1_CMD1_bm Predefined. */ +/* TC1_CMD1_bp Predefined. */ + +/* TC1_LUPD_bm Predefined. */ +/* TC1_LUPD_bp Predefined. */ + +/* TC1_DIR_bm Predefined. */ +/* TC1_DIR_bp Predefined. */ + + +/* TC1.CTRLGCLR bit masks and bit positions */ +#define TC1_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC1_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC1_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC1_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC1_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC1_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC1.CTRLGSET bit masks and bit positions */ +/* TC1_CCBBV_bm Predefined. */ +/* TC1_CCBBV_bp Predefined. */ + +/* TC1_CCABV_bm Predefined. */ +/* TC1_CCABV_bp Predefined. */ + +/* TC1_PERBV_bm Predefined. */ +/* TC1_PERBV_bp Predefined. */ + + +/* TC1.INTFLAGS bit masks and bit positions */ +#define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC1_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC1_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* AWEX.CTRL bit masks and bit positions */ +#define AWEX_PGM_bm 0x20 /* Pattern Generation Mode bit mask. */ +#define AWEX_PGM_bp 5 /* Pattern Generation Mode bit position. */ + +#define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ +#define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ + +#define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ +#define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ + +#define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ +#define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ + +#define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ +#define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ + +#define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ +#define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ + + +/* AWEX.FDCTRL bit masks and bit positions */ +#define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ +#define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ + +#define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ +#define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ + +#define AWEX_FDACT_gm 0x03 /* Fault Detect Action group mask. */ +#define AWEX_FDACT_gp 0 /* Fault Detect Action group position. */ +#define AWEX_FDACT0_bm (1<<0) /* Fault Detect Action bit 0 mask. */ +#define AWEX_FDACT0_bp 0 /* Fault Detect Action bit 0 position. */ +#define AWEX_FDACT1_bm (1<<1) /* Fault Detect Action bit 1 mask. */ +#define AWEX_FDACT1_bp 1 /* Fault Detect Action bit 1 position. */ + + +/* AWEX.STATUS bit masks and bit positions */ +#define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ +#define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ + +#define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ +#define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ + +#define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ +#define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ + + +/* HIRES.CTRL bit masks and bit positions */ +#define HIRES_HREN_gm 0x03 /* High Resolution Enable group mask. */ +#define HIRES_HREN_gp 0 /* High Resolution Enable group position. */ +#define HIRES_HREN0_bm (1<<0) /* High Resolution Enable bit 0 mask. */ +#define HIRES_HREN0_bp 0 /* High Resolution Enable bit 0 position. */ +#define HIRES_HREN1_bm (1<<1) /* High Resolution Enable bit 1 mask. */ +#define HIRES_HREN1_bp 1 /* High Resolution Enable bit 1 position. */ + + +/* USART - Universal Asynchronous Receiver-Transmitter */ +/* USART.STATUS bit masks and bit positions */ +#define USART_RXCIF_bm 0x80 /* Receive Interrupt Flag bit mask. */ +#define USART_RXCIF_bp 7 /* Receive Interrupt Flag bit position. */ + +#define USART_TXCIF_bm 0x40 /* Transmit Interrupt Flag bit mask. */ +#define USART_TXCIF_bp 6 /* Transmit Interrupt Flag bit position. */ + +#define USART_DREIF_bm 0x20 /* Data Register Empty Flag bit mask. */ +#define USART_DREIF_bp 5 /* Data Register Empty Flag bit position. */ + +#define USART_FERR_bm 0x10 /* Frame Error bit mask. */ +#define USART_FERR_bp 4 /* Frame Error bit position. */ + +#define USART_BUFOVF_bm 0x08 /* Buffer Overflow bit mask. */ +#define USART_BUFOVF_bp 3 /* Buffer Overflow bit position. */ + +#define USART_PERR_bm 0x04 /* Parity Error bit mask. */ +#define USART_PERR_bp 2 /* Parity Error bit position. */ + +#define USART_RXB8_bm 0x01 /* Receive Bit 8 bit mask. */ +#define USART_RXB8_bp 0 /* Receive Bit 8 bit position. */ + + +/* USART.CTRLA bit masks and bit positions */ +#define USART_RXCINTLVL_gm 0x30 /* Receive Interrupt Level group mask. */ +#define USART_RXCINTLVL_gp 4 /* Receive Interrupt Level group position. */ +#define USART_RXCINTLVL0_bm (1<<4) /* Receive Interrupt Level bit 0 mask. */ +#define USART_RXCINTLVL0_bp 4 /* Receive Interrupt Level bit 0 position. */ +#define USART_RXCINTLVL1_bm (1<<5) /* Receive Interrupt Level bit 1 mask. */ +#define USART_RXCINTLVL1_bp 5 /* Receive Interrupt Level bit 1 position. */ + +#define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ +#define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ +#define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ +#define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ +#define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ +#define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ + +#define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ +#define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ +#define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ +#define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ +#define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ +#define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ + + +/* USART.CTRLB bit masks and bit positions */ +#define USART_RXEN_bm 0x10 /* Receiver Enable bit mask. */ +#define USART_RXEN_bp 4 /* Receiver Enable bit position. */ + +#define USART_TXEN_bm 0x08 /* Transmitter Enable bit mask. */ +#define USART_TXEN_bp 3 /* Transmitter Enable bit position. */ + +#define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ +#define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ + +#define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ +#define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ + +#define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ +#define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ + + +/* USART.CTRLC bit masks and bit positions */ +#define USART_CMODE_gm 0xC0 /* Communication Mode group mask. */ +#define USART_CMODE_gp 6 /* Communication Mode group position. */ +#define USART_CMODE0_bm (1<<6) /* Communication Mode bit 0 mask. */ +#define USART_CMODE0_bp 6 /* Communication Mode bit 0 position. */ +#define USART_CMODE1_bm (1<<7) /* Communication Mode bit 1 mask. */ +#define USART_CMODE1_bp 7 /* Communication Mode bit 1 position. */ + +#define USART_PMODE_gm 0x30 /* Parity Mode group mask. */ +#define USART_PMODE_gp 4 /* Parity Mode group position. */ +#define USART_PMODE0_bm (1<<4) /* Parity Mode bit 0 mask. */ +#define USART_PMODE0_bp 4 /* Parity Mode bit 0 position. */ +#define USART_PMODE1_bm (1<<5) /* Parity Mode bit 1 mask. */ +#define USART_PMODE1_bp 5 /* Parity Mode bit 1 position. */ + +#define USART_SBMODE_bm 0x08 /* Stop Bit Mode bit mask. */ +#define USART_SBMODE_bp 3 /* Stop Bit Mode bit position. */ + +#define USART_CHSIZE_gm 0x07 /* Character Size group mask. */ +#define USART_CHSIZE_gp 0 /* Character Size group position. */ +#define USART_CHSIZE0_bm (1<<0) /* Character Size bit 0 mask. */ +#define USART_CHSIZE0_bp 0 /* Character Size bit 0 position. */ +#define USART_CHSIZE1_bm (1<<1) /* Character Size bit 1 mask. */ +#define USART_CHSIZE1_bp 1 /* Character Size bit 1 position. */ +#define USART_CHSIZE2_bm (1<<2) /* Character Size bit 2 mask. */ +#define USART_CHSIZE2_bp 2 /* Character Size bit 2 position. */ + + +/* USART.BAUDCTRLA bit masks and bit positions */ +#define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ +#define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ +#define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ +#define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ +#define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ +#define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ +#define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ +#define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ +#define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ +#define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ +#define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ +#define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ +#define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ +#define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ +#define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ +#define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ +#define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ +#define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ + + +/* USART.BAUDCTRLB bit masks and bit positions */ +#define USART_BSCALE_gm 0xF0 /* Baud Rate Scale group mask. */ +#define USART_BSCALE_gp 4 /* Baud Rate Scale group position. */ +#define USART_BSCALE0_bm (1<<4) /* Baud Rate Scale bit 0 mask. */ +#define USART_BSCALE0_bp 4 /* Baud Rate Scale bit 0 position. */ +#define USART_BSCALE1_bm (1<<5) /* Baud Rate Scale bit 1 mask. */ +#define USART_BSCALE1_bp 5 /* Baud Rate Scale bit 1 position. */ +#define USART_BSCALE2_bm (1<<6) /* Baud Rate Scale bit 2 mask. */ +#define USART_BSCALE2_bp 6 /* Baud Rate Scale bit 2 position. */ +#define USART_BSCALE3_bm (1<<7) /* Baud Rate Scale bit 3 mask. */ +#define USART_BSCALE3_bp 7 /* Baud Rate Scale bit 3 position. */ + +/* USART_BSEL_gm Predefined. */ +/* USART_BSEL_gp Predefined. */ +/* USART_BSEL0_bm Predefined. */ +/* USART_BSEL0_bp Predefined. */ +/* USART_BSEL1_bm Predefined. */ +/* USART_BSEL1_bp Predefined. */ +/* USART_BSEL2_bm Predefined. */ +/* USART_BSEL2_bp Predefined. */ +/* USART_BSEL3_bm Predefined. */ +/* USART_BSEL3_bp Predefined. */ + + +/* SPI - Serial Peripheral Interface */ +/* SPI.CTRL bit masks and bit positions */ +#define SPI_CLK2X_bm 0x80 /* Enable Double Speed bit mask. */ +#define SPI_CLK2X_bp 7 /* Enable Double Speed bit position. */ + +#define SPI_ENABLE_bm 0x40 /* Enable Module bit mask. */ +#define SPI_ENABLE_bp 6 /* Enable Module bit position. */ + +#define SPI_DORD_bm 0x20 /* Data Order Setting bit mask. */ +#define SPI_DORD_bp 5 /* Data Order Setting bit position. */ + +#define SPI_MASTER_bm 0x10 /* Master Operation Enable bit mask. */ +#define SPI_MASTER_bp 4 /* Master Operation Enable bit position. */ + +#define SPI_MODE_gm 0x0C /* SPI Mode group mask. */ +#define SPI_MODE_gp 2 /* SPI Mode group position. */ +#define SPI_MODE0_bm (1<<2) /* SPI Mode bit 0 mask. */ +#define SPI_MODE0_bp 2 /* SPI Mode bit 0 position. */ +#define SPI_MODE1_bm (1<<3) /* SPI Mode bit 1 mask. */ +#define SPI_MODE1_bp 3 /* SPI Mode bit 1 position. */ + +#define SPI_PRESCALER_gm 0x03 /* Prescaler group mask. */ +#define SPI_PRESCALER_gp 0 /* Prescaler group position. */ +#define SPI_PRESCALER0_bm (1<<0) /* Prescaler bit 0 mask. */ +#define SPI_PRESCALER0_bp 0 /* Prescaler bit 0 position. */ +#define SPI_PRESCALER1_bm (1<<1) /* Prescaler bit 1 mask. */ +#define SPI_PRESCALER1_bp 1 /* Prescaler bit 1 position. */ + + +/* SPI.INTCTRL bit masks and bit positions */ +#define SPI_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define SPI_INTLVL_gp 0 /* Interrupt level group position. */ +#define SPI_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define SPI_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define SPI_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define SPI_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + +/* SPI.STATUS bit masks and bit positions */ +#define SPI_IF_bm 0x80 /* Interrupt Flag bit mask. */ +#define SPI_IF_bp 7 /* Interrupt Flag bit position. */ + +#define SPI_WRCOL_bm 0x40 /* Write Collision bit mask. */ +#define SPI_WRCOL_bp 6 /* Write Collision bit position. */ + + +/* IRCOM - IR Communication Module */ +/* IRCOM.CTRL bit masks and bit positions */ +#define IRCOM_EVSEL_gm 0x0F /* Event Channel Select group mask. */ +#define IRCOM_EVSEL_gp 0 /* Event Channel Select group position. */ +#define IRCOM_EVSEL0_bm (1<<0) /* Event Channel Select bit 0 mask. */ +#define IRCOM_EVSEL0_bp 0 /* Event Channel Select bit 0 position. */ +#define IRCOM_EVSEL1_bm (1<<1) /* Event Channel Select bit 1 mask. */ +#define IRCOM_EVSEL1_bp 1 /* Event Channel Select bit 1 position. */ +#define IRCOM_EVSEL2_bm (1<<2) /* Event Channel Select bit 2 mask. */ +#define IRCOM_EVSEL2_bp 2 /* Event Channel Select bit 2 position. */ +#define IRCOM_EVSEL3_bm (1<<3) /* Event Channel Select bit 3 mask. */ +#define IRCOM_EVSEL3_bp 3 /* Event Channel Select bit 3 position. */ + + +/* AES - AES Module */ +/* AES.CTRL bit masks and bit positions */ +#define AES_START_bm 0x80 /* Start/Run bit mask. */ +#define AES_START_bp 7 /* Start/Run bit position. */ + +#define AES_AUTO_bm 0x40 /* Auto Start Trigger bit mask. */ +#define AES_AUTO_bp 6 /* Auto Start Trigger bit position. */ + +#define AES_RESET_bm 0x20 /* AES Software Reset bit mask. */ +#define AES_RESET_bp 5 /* AES Software Reset bit position. */ + +#define AES_DECRYPT_bm 0x10 /* Decryption / Direction bit mask. */ +#define AES_DECRYPT_bp 4 /* Decryption / Direction bit position. */ + +#define AES_XOR_bm 0x04 /* State XOR Load Enable bit mask. */ +#define AES_XOR_bp 2 /* State XOR Load Enable bit position. */ + + +/* AES.STATUS bit masks and bit positions */ +#define AES_ERROR_bm 0x80 /* AES Error bit mask. */ +#define AES_ERROR_bp 7 /* AES Error bit position. */ + +#define AES_SRIF_bm 0x01 /* State Ready Interrupt Flag bit mask. */ +#define AES_SRIF_bp 0 /* State Ready Interrupt Flag bit position. */ + + +/* AES.INTCTRL bit masks and bit positions */ +#define AES_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define AES_INTLVL_gp 0 /* Interrupt level group position. */ +#define AES_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define AES_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define AES_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define AES_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + + +// Generic Port Pins + +#define PIN0_bm 0x01 +#define PIN0_bp 0 +#define PIN1_bm 0x02 +#define PIN1_bp 1 +#define PIN2_bm 0x04 +#define PIN2_bp 2 +#define PIN3_bm 0x08 +#define PIN3_bp 3 +#define PIN4_bm 0x10 +#define PIN4_bp 4 +#define PIN5_bm 0x20 +#define PIN5_bp 5 +#define PIN6_bm 0x40 +#define PIN6_bp 6 +#define PIN7_bm 0x80 +#define PIN7_bp 7 + + +/* ========== Interrupt Vector Definitions ========== */ +/* Vector 0 is the reset vector */ + +/* OSC interrupt vectors */ +#define OSC_XOSCF_vect_num 1 +#define OSC_XOSCF_vect _VECTOR(1) /* External Oscillator Failure Interrupt (NMI) */ + +/* PORTC interrupt vectors */ +#define PORTC_INT0_vect_num 2 +#define PORTC_INT0_vect _VECTOR(2) /* External Interrupt 0 */ +#define PORTC_INT1_vect_num 3 +#define PORTC_INT1_vect _VECTOR(3) /* External Interrupt 1 */ + +/* PORTR interrupt vectors */ +#define PORTR_INT0_vect_num 4 +#define PORTR_INT0_vect _VECTOR(4) /* External Interrupt 0 */ +#define PORTR_INT1_vect_num 5 +#define PORTR_INT1_vect _VECTOR(5) /* External Interrupt 1 */ + +/* DMA interrupt vectors */ +#define DMA_CH0_vect_num 6 +#define DMA_CH0_vect _VECTOR(6) /* Channel 0 Interrupt */ +#define DMA_CH1_vect_num 7 +#define DMA_CH1_vect _VECTOR(7) /* Channel 1 Interrupt */ +#define DMA_CH2_vect_num 8 +#define DMA_CH2_vect _VECTOR(8) /* Channel 2 Interrupt */ +#define DMA_CH3_vect_num 9 +#define DMA_CH3_vect _VECTOR(9) /* Channel 3 Interrupt */ + +/* RTC interrupt vectors */ +#define RTC_OVF_vect_num 10 +#define RTC_OVF_vect _VECTOR(10) /* Overflow Interrupt */ +#define RTC_COMP_vect_num 11 +#define RTC_COMP_vect _VECTOR(11) /* Compare Interrupt */ + +/* TWIC interrupt vectors */ +#define TWIC_TWIS_vect_num 12 +#define TWIC_TWIS_vect _VECTOR(12) /* TWI Slave Interrupt */ +#define TWIC_TWIM_vect_num 13 +#define TWIC_TWIM_vect _VECTOR(13) /* TWI Master Interrupt */ + +/* TCC0 interrupt vectors */ +#define TCC0_OVF_vect_num 14 +#define TCC0_OVF_vect _VECTOR(14) /* Overflow Interrupt */ +#define TCC0_ERR_vect_num 15 +#define TCC0_ERR_vect _VECTOR(15) /* Error Interrupt */ +#define TCC0_CCA_vect_num 16 +#define TCC0_CCA_vect _VECTOR(16) /* Compare or Capture A Interrupt */ +#define TCC0_CCB_vect_num 17 +#define TCC0_CCB_vect _VECTOR(17) /* Compare or Capture B Interrupt */ +#define TCC0_CCC_vect_num 18 +#define TCC0_CCC_vect _VECTOR(18) /* Compare or Capture C Interrupt */ +#define TCC0_CCD_vect_num 19 +#define TCC0_CCD_vect _VECTOR(19) /* Compare or Capture D Interrupt */ + +/* TCC1 interrupt vectors */ +#define TCC1_OVF_vect_num 20 +#define TCC1_OVF_vect _VECTOR(20) /* Overflow Interrupt */ +#define TCC1_ERR_vect_num 21 +#define TCC1_ERR_vect _VECTOR(21) /* Error Interrupt */ +#define TCC1_CCA_vect_num 22 +#define TCC1_CCA_vect _VECTOR(22) /* Compare or Capture A Interrupt */ +#define TCC1_CCB_vect_num 23 +#define TCC1_CCB_vect _VECTOR(23) /* Compare or Capture B Interrupt */ + +/* SPIC interrupt vectors */ +#define SPIC_INT_vect_num 24 +#define SPIC_INT_vect _VECTOR(24) /* SPI Interrupt */ + +/* USARTC0 interrupt vectors */ +#define USARTC0_RXC_vect_num 25 +#define USARTC0_RXC_vect _VECTOR(25) /* Reception Complete Interrupt */ +#define USARTC0_DRE_vect_num 26 +#define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ +#define USARTC0_TXC_vect_num 27 +#define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ + +/* USARTC1 interrupt vectors */ +#define USARTC1_RXC_vect_num 28 +#define USARTC1_RXC_vect _VECTOR(28) /* Reception Complete Interrupt */ +#define USARTC1_DRE_vect_num 29 +#define USARTC1_DRE_vect _VECTOR(29) /* Data Register Empty Interrupt */ +#define USARTC1_TXC_vect_num 30 +#define USARTC1_TXC_vect _VECTOR(30) /* Transmission Complete Interrupt */ + +/* AES interrupt vectors */ +#define AES_INT_vect_num 31 +#define AES_INT_vect _VECTOR(31) /* AES Interrupt */ + +/* NVM interrupt vectors */ +#define NVM_EE_vect_num 32 +#define NVM_EE_vect _VECTOR(32) /* EE Interrupt */ +#define NVM_SPM_vect_num 33 +#define NVM_SPM_vect _VECTOR(33) /* SPM Interrupt */ + +/* PORTB interrupt vectors */ +#define PORTB_INT0_vect_num 34 +#define PORTB_INT0_vect _VECTOR(34) /* External Interrupt 0 */ +#define PORTB_INT1_vect_num 35 +#define PORTB_INT1_vect _VECTOR(35) /* External Interrupt 1 */ + +/* ACB interrupt vectors */ +#define ACB_AC0_vect_num 36 +#define ACB_AC0_vect _VECTOR(36) /* AC0 Interrupt */ +#define ACB_AC1_vect_num 37 +#define ACB_AC1_vect _VECTOR(37) /* AC1 Interrupt */ +#define ACB_ACW_vect_num 38 +#define ACB_ACW_vect _VECTOR(38) /* ACW Window Mode Interrupt */ + +/* ADCB interrupt vectors */ +#define ADCB_CH0_vect_num 39 +#define ADCB_CH0_vect _VECTOR(39) /* Interrupt 0 */ +#define ADCB_CH1_vect_num 40 +#define ADCB_CH1_vect _VECTOR(40) /* Interrupt 1 */ +#define ADCB_CH2_vect_num 41 +#define ADCB_CH2_vect _VECTOR(41) /* Interrupt 2 */ +#define ADCB_CH3_vect_num 42 +#define ADCB_CH3_vect _VECTOR(42) /* Interrupt 3 */ + +/* PORTE interrupt vectors */ +#define PORTE_INT0_vect_num 43 +#define PORTE_INT0_vect _VECTOR(43) /* External Interrupt 0 */ +#define PORTE_INT1_vect_num 44 +#define PORTE_INT1_vect _VECTOR(44) /* External Interrupt 1 */ + +/* TWIE interrupt vectors */ +#define TWIE_TWIS_vect_num 45 +#define TWIE_TWIS_vect _VECTOR(45) /* TWI Slave Interrupt */ +#define TWIE_TWIM_vect_num 46 +#define TWIE_TWIM_vect _VECTOR(46) /* TWI Master Interrupt */ + +/* TCE0 interrupt vectors */ +#define TCE0_OVF_vect_num 47 +#define TCE0_OVF_vect _VECTOR(47) /* Overflow Interrupt */ +#define TCE0_ERR_vect_num 48 +#define TCE0_ERR_vect _VECTOR(48) /* Error Interrupt */ +#define TCE0_CCA_vect_num 49 +#define TCE0_CCA_vect _VECTOR(49) /* Compare or Capture A Interrupt */ +#define TCE0_CCB_vect_num 50 +#define TCE0_CCB_vect _VECTOR(50) /* Compare or Capture B Interrupt */ +#define TCE0_CCC_vect_num 51 +#define TCE0_CCC_vect _VECTOR(51) /* Compare or Capture C Interrupt */ +#define TCE0_CCD_vect_num 52 +#define TCE0_CCD_vect _VECTOR(52) /* Compare or Capture D Interrupt */ + +/* TCE1 interrupt vectors */ +#define TCE1_OVF_vect_num 53 +#define TCE1_OVF_vect _VECTOR(53) /* Overflow Interrupt */ +#define TCE1_ERR_vect_num 54 +#define TCE1_ERR_vect _VECTOR(54) /* Error Interrupt */ +#define TCE1_CCA_vect_num 55 +#define TCE1_CCA_vect _VECTOR(55) /* Compare or Capture A Interrupt */ +#define TCE1_CCB_vect_num 56 +#define TCE1_CCB_vect _VECTOR(56) /* Compare or Capture B Interrupt */ + +/* SPIE interrupt vectors */ +#define SPIE_INT_vect_num 57 +#define SPIE_INT_vect _VECTOR(57) /* SPI Interrupt */ + +/* USARTE0 interrupt vectors */ +#define USARTE0_RXC_vect_num 58 +#define USARTE0_RXC_vect _VECTOR(58) /* Reception Complete Interrupt */ +#define USARTE0_DRE_vect_num 59 +#define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ +#define USARTE0_TXC_vect_num 60 +#define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ + +/* USARTE1 interrupt vectors */ +#define USARTE1_RXC_vect_num 61 +#define USARTE1_RXC_vect _VECTOR(61) /* Reception Complete Interrupt */ +#define USARTE1_DRE_vect_num 62 +#define USARTE1_DRE_vect _VECTOR(62) /* Data Register Empty Interrupt */ +#define USARTE1_TXC_vect_num 63 +#define USARTE1_TXC_vect _VECTOR(63) /* Transmission Complete Interrupt */ + +/* PORTD interrupt vectors */ +#define PORTD_INT0_vect_num 64 +#define PORTD_INT0_vect _VECTOR(64) /* External Interrupt 0 */ +#define PORTD_INT1_vect_num 65 +#define PORTD_INT1_vect _VECTOR(65) /* External Interrupt 1 */ + +/* PORTA interrupt vectors */ +#define PORTA_INT0_vect_num 66 +#define PORTA_INT0_vect _VECTOR(66) /* External Interrupt 0 */ +#define PORTA_INT1_vect_num 67 +#define PORTA_INT1_vect _VECTOR(67) /* External Interrupt 1 */ + +/* ACA interrupt vectors */ +#define ACA_AC0_vect_num 68 +#define ACA_AC0_vect _VECTOR(68) /* AC0 Interrupt */ +#define ACA_AC1_vect_num 69 +#define ACA_AC1_vect _VECTOR(69) /* AC1 Interrupt */ +#define ACA_ACW_vect_num 70 +#define ACA_ACW_vect _VECTOR(70) /* ACW Window Mode Interrupt */ + +/* ADCA interrupt vectors */ +#define ADCA_CH0_vect_num 71 +#define ADCA_CH0_vect _VECTOR(71) /* Interrupt 0 */ +#define ADCA_CH1_vect_num 72 +#define ADCA_CH1_vect _VECTOR(72) /* Interrupt 1 */ +#define ADCA_CH2_vect_num 73 +#define ADCA_CH2_vect _VECTOR(73) /* Interrupt 2 */ +#define ADCA_CH3_vect_num 74 +#define ADCA_CH3_vect _VECTOR(74) /* Interrupt 3 */ + +/* TCD0 interrupt vectors */ +#define TCD0_OVF_vect_num 77 +#define TCD0_OVF_vect _VECTOR(77) /* Overflow Interrupt */ +#define TCD0_ERR_vect_num 78 +#define TCD0_ERR_vect _VECTOR(78) /* Error Interrupt */ +#define TCD0_CCA_vect_num 79 +#define TCD0_CCA_vect _VECTOR(79) /* Compare or Capture A Interrupt */ +#define TCD0_CCB_vect_num 80 +#define TCD0_CCB_vect _VECTOR(80) /* Compare or Capture B Interrupt */ +#define TCD0_CCC_vect_num 81 +#define TCD0_CCC_vect _VECTOR(81) /* Compare or Capture C Interrupt */ +#define TCD0_CCD_vect_num 82 +#define TCD0_CCD_vect _VECTOR(82) /* Compare or Capture D Interrupt */ + +/* TCD1 interrupt vectors */ +#define TCD1_OVF_vect_num 83 +#define TCD1_OVF_vect _VECTOR(83) /* Overflow Interrupt */ +#define TCD1_ERR_vect_num 84 +#define TCD1_ERR_vect _VECTOR(84) /* Error Interrupt */ +#define TCD1_CCA_vect_num 85 +#define TCD1_CCA_vect _VECTOR(85) /* Compare or Capture A Interrupt */ +#define TCD1_CCB_vect_num 86 +#define TCD1_CCB_vect _VECTOR(86) /* Compare or Capture B Interrupt */ + +/* SPID interrupt vectors */ +#define SPID_INT_vect_num 87 +#define SPID_INT_vect _VECTOR(87) /* SPI Interrupt */ + +/* USARTD0 interrupt vectors */ +#define USARTD0_RXC_vect_num 88 +#define USARTD0_RXC_vect _VECTOR(88) /* Reception Complete Interrupt */ +#define USARTD0_DRE_vect_num 89 +#define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ +#define USARTD0_TXC_vect_num 90 +#define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ + +/* USARTD1 interrupt vectors */ +#define USARTD1_RXC_vect_num 91 +#define USARTD1_RXC_vect _VECTOR(91) /* Reception Complete Interrupt */ +#define USARTD1_DRE_vect_num 92 +#define USARTD1_DRE_vect _VECTOR(92) /* Data Register Empty Interrupt */ +#define USARTD1_TXC_vect_num 93 +#define USARTD1_TXC_vect _VECTOR(93) /* Transmission Complete Interrupt */ + +/* PORTF interrupt vectors */ +#define PORTF_INT0_vect_num 104 +#define PORTF_INT0_vect _VECTOR(104) /* External Interrupt 0 */ +#define PORTF_INT1_vect_num 105 +#define PORTF_INT1_vect _VECTOR(105) /* External Interrupt 1 */ + +/* TCF0 interrupt vectors */ +#define TCF0_OVF_vect_num 108 +#define TCF0_OVF_vect _VECTOR(108) /* Overflow Interrupt */ +#define TCF0_ERR_vect_num 109 +#define TCF0_ERR_vect _VECTOR(109) /* Error Interrupt */ +#define TCF0_CCA_vect_num 110 +#define TCF0_CCA_vect _VECTOR(110) /* Compare or Capture A Interrupt */ +#define TCF0_CCB_vect_num 111 +#define TCF0_CCB_vect _VECTOR(111) /* Compare or Capture B Interrupt */ +#define TCF0_CCC_vect_num 112 +#define TCF0_CCC_vect _VECTOR(112) /* Compare or Capture C Interrupt */ +#define TCF0_CCD_vect_num 113 +#define TCF0_CCD_vect _VECTOR(113) /* Compare or Capture D Interrupt */ + +/* USARTF0 interrupt vectors */ +#define USARTF0_RXC_vect_num 119 +#define USARTF0_RXC_vect _VECTOR(119) /* Reception Complete Interrupt */ +#define USARTF0_DRE_vect_num 120 +#define USARTF0_DRE_vect _VECTOR(120) /* Data Register Empty Interrupt */ +#define USARTF0_TXC_vect_num 121 +#define USARTF0_TXC_vect _VECTOR(121) /* Transmission Complete Interrupt */ + + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (122 * _VECTOR_SIZE) + + +/* ========== Constants ========== */ + +#define PROGMEM_START (0x0000) +#define PROGMEM_SIZE (139264) +#define PROGMEM_END (PROGMEM_START + PROGMEM_SIZE - 1) + +#define APP_SECTION_START (0x0000) +#define APP_SECTION_SIZE (131072) +#define APP_SECTION_END (APP_SECTION_START + APP_SECTION_SIZE - 1) + +#define APPTABLE_SECTION_START (0x1E000) +#define APPTABLE_SECTION_SIZE (8192) +#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) + +#define BOOT_SECTION_START (0x20000) +#define BOOT_SECTION_SIZE (8192) +#define BOOT_SECTION_END (BOOT_SECTION_START + BOOT_SECTION_SIZE - 1) + +#define DATAMEM_START (0x0000) +#define DATAMEM_SIZE (16384) +#define DATAMEM_END (DATAMEM_START + DATAMEM_SIZE - 1) + +#define IO_START (0x0000) +#define IO_SIZE (4096) +#define IO_END (IO_START + IO_SIZE - 1) + +#define MAPPED_EEPROM_START (0x1000) +#define MAPPED_EEPROM_SIZE (2048) +#define MAPPED_EEPROM_END (MAPPED_EEPROM_START + MAPPED_EEPROM_SIZE - 1) + +#define INTERNAL_SRAM_START (0x2000) +#define INTERNAL_SRAM_SIZE (8192) +#define INTERNAL_SRAM_END (INTERNAL_SRAM_START + INTERNAL_SRAM_SIZE - 1) + +#define EEPROM_START (0x0000) +#define EEPROM_SIZE (2048) +#define EEPROM_END (EEPROM_START + EEPROM_SIZE - 1) + +#define FUSE_START (0x0000) +#define FUSE_SIZE (6) +#define FUSE_END (FUSE_START + FUSE_SIZE - 1) + +#define LOCKBIT_START (0x0000) +#define LOCKBIT_SIZE (1) +#define LOCKBIT_END (LOCKBIT_START + LOCKBIT_SIZE - 1) + +#define SIGNATURES_START (0x0000) +#define SIGNATURES_SIZE (3) +#define SIGNATURES_END (SIGNATURES_START + SIGNATURES_SIZE - 1) + +#define USER_SIGNATURES_START (0x0000) +#define USER_SIGNATURES_SIZE (512) +#define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) + +#define PROD_SIGNATURES_START (0x0000) +#define PROD_SIGNATURES_SIZE (52) +#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) + +#define FLASHEND PROGMEM_END +#define SPM_PAGESIZE PROGMEM_PAGE_SIZE +#define RAMSTART INTERNAL_SRAM_START +#define RAMSIZE INTERNAL_SRAM_SIZE +#define RAMEND INTERNAL_SRAM_END +#define XRAMSTART EXTERNAL_SRAM_START +#define XRAMSIZE EXTERNAL_SRAM_SIZE +#define XRAMEND INTERNAL_SRAM_END +#define E2END EEPROM_END +#define E2PAGESIZE EEPROM_PAGE_SIZE + + +/* ========== Fuses ========== */ +#define FUSE_MEMORY_SIZE 6 + +/* Fuse Byte 0 */ +#define FUSE_JTAGUSERID0 ~_BV(0) /* JTAG User ID Bit 0 */ +#define FUSE_JTAGUSERID1 ~_BV(1) /* JTAG User ID Bit 1 */ +#define FUSE_JTAGUSERID2 ~_BV(2) /* JTAG User ID Bit 2 */ +#define FUSE_JTAGUSERID3 ~_BV(3) /* JTAG User ID Bit 3 */ +#define FUSE_JTAGUSERID4 ~_BV(4) /* JTAG User ID Bit 4 */ +#define FUSE_JTAGUSERID5 ~_BV(5) /* JTAG User ID Bit 5 */ +#define FUSE_JTAGUSERID6 ~_BV(6) /* JTAG User ID Bit 6 */ +#define FUSE_JTAGUSERID7 ~_BV(7) /* JTAG User ID Bit 7 */ +#define FUSE0_DEFAULT (0xFF) + +/* Fuse Byte 1 */ +#define FUSE_WDP0 ~_BV(0) /* Watchdog Timeout Period Bit 0 */ +#define FUSE_WDP1 ~_BV(1) /* Watchdog Timeout Period Bit 1 */ +#define FUSE_WDP2 ~_BV(2) /* Watchdog Timeout Period Bit 2 */ +#define FUSE_WDP3 ~_BV(3) /* Watchdog Timeout Period Bit 3 */ +#define FUSE_WDWP0 ~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ +#define FUSE_WDWP1 ~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ +#define FUSE_WDWP2 ~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ +#define FUSE_WDWP3 ~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ +#define FUSE1_DEFAULT (0xFF) + +/* Fuse Byte 2 */ +#define FUSE_BODPD0 ~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ +#define FUSE_BODPD1 ~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ +#define FUSE_BODACT0 ~_BV(2) /* BOD Operation in Active Mode Bit 0 */ +#define FUSE_BODACT1 ~_BV(3) /* BOD Operation in Active Mode Bit 1 */ +#define FUSE_BOOTRST ~_BV(6) /* Boot Loader Section Reset Vector */ +#define FUSE_DVSDON ~_BV(7) /* Spike Detector Enable */ +#define FUSE2_DEFAULT (0xFF) + +/* Fuse Byte 3 Reserved */ + +/* Fuse Byte 4 */ +#define FUSE_JTAGEN ~_BV(0) /* JTAG Interface Enable */ +#define FUSE_WDLOCK ~_BV(1) /* Watchdog Timer Lock */ +#define FUSE_SUT0 ~_BV(2) /* Start-up Time Bit 0 */ +#define FUSE_SUT1 ~_BV(3) /* Start-up Time Bit 1 */ +#define FUSE4_DEFAULT (0xFF) + +/* Fuse Byte 5 */ +#define FUSE_BODLVL0 ~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ +#define FUSE_BODLVL1 ~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ +#define FUSE_BODLVL2 ~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ +#define FUSE_EESAVE ~_BV(3) /* Preserve EEPROM Through Chip Erase */ +#define FUSE5_DEFAULT (0xFF) + + +/* ========== Lock Bits ========== */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_BITS_EXIST +#define __BOOT_LOCK_BOOT_BITS_EXIST + + +/* ========== Signature ========== */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x42 + + +#endif /* _AVR_ATxmega128A3_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox256a3.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox256a3.h new file mode 100644 index 0000000..b760f31 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox256a3.h @@ -0,0 +1,6852 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iox256a3.h,v 1.1.2.4 2008/11/03 04:13:16 arcanum Exp $ */ + +/* avr/iox256a3.h - definitions for ATxmega256A3 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iox256a3.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATxmega256A3_H_ +#define _AVR_ATxmega256A3_H_ 1 + + +/* Ungrouped common registers */ +#define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ +#define GPIO1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ +#define GPIO2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ +#define GPIO3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ +#define GPIO4 _SFR_MEM8(0x0004) /* General Purpose IO Register 4 */ +#define GPIO5 _SFR_MEM8(0x0005) /* General Purpose IO Register 5 */ +#define GPIO6 _SFR_MEM8(0x0006) /* General Purpose IO Register 6 */ +#define GPIO7 _SFR_MEM8(0x0007) /* General Purpose IO Register 7 */ +#define GPIO8 _SFR_MEM8(0x0008) /* General Purpose IO Register 8 */ +#define GPIO9 _SFR_MEM8(0x0009) /* General Purpose IO Register 9 */ +#define GPIOA _SFR_MEM8(0x000A) /* General Purpose IO Register 10 */ +#define GPIOB _SFR_MEM8(0x000B) /* General Purpose IO Register 11 */ +#define GPIOC _SFR_MEM8(0x000C) /* General Purpose IO Register 12 */ +#define GPIOD _SFR_MEM8(0x000D) /* General Purpose IO Register 13 */ +#define GPIOE _SFR_MEM8(0x000E) /* General Purpose IO Register 14 */ +#define GPIOF _SFR_MEM8(0x000F) /* General Purpose IO Register 15 */ + +#define CCP _SFR_MEM8(0x0034) /* Configuration Change Protection */ +#define RAMPD _SFR_MEM8(0x0038) /* Ramp D */ +#define RAMPX _SFR_MEM8(0x0039) /* Ramp X */ +#define RAMPY _SFR_MEM8(0x003A) /* Ramp Y */ +#define RAMPZ _SFR_MEM8(0x003B) /* Ramp Z */ +#define EIND _SFR_MEM8(0x003C) /* Extended Indirect Jump */ +#define SPL _SFR_MEM8(0x003D) /* Stack Pointer Low */ +#define SPH _SFR_MEM8(0x003E) /* Stack Pointer High */ +#define SREG _SFR_MEM8(0x003F) /* Status Register */ + + +/* C Language Only */ +#if !defined (__ASSEMBLER__) + +#include + +typedef volatile uint8_t register8_t; +typedef volatile uint16_t register16_t; +typedef volatile uint32_t register32_t; + + +#ifdef _WORDREGISTER +#undef _WORDREGISTER +#endif +#define _WORDREGISTER(regname) \ + union \ + { \ + register16_t regname; \ + struct \ + { \ + register8_t regname ## L; \ + register8_t regname ## H; \ + }; \ + } + +#ifdef _DWORDREGISTER +#undef _DWORDREGISTER +#endif +#define _DWORDREGISTER(regname) \ + union \ + { \ + register32_t regname; \ + struct \ + { \ + register8_t regname ## 0; \ + register8_t regname ## 1; \ + register8_t regname ## 2; \ + register8_t regname ## 3; \ + }; \ + } + + +/* +========================================================================== +IO Module Structures +========================================================================== +*/ + + +/* +-------------------------------------------------------------------------- +XOCD - On-Chip Debug System +-------------------------------------------------------------------------- +*/ + +/* On-Chip Debug System */ +typedef struct OCD_struct +{ + register8_t OCDR0; /* OCD Register 0 */ + register8_t OCDR1; /* OCD Register 1 */ +} OCD_t; + + +/* CCP signatures */ +typedef enum CCP_enum +{ + CCP_SPM_gc = (0x9D<<0), /* SPM Instruction Protection */ + CCP_IOREG_gc = (0xD8<<0), /* IO Register Protection */ +} CCP_t; + + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Clock System */ +typedef struct CLK_struct +{ + register8_t CTRL; /* Control Register */ + register8_t PSCTRL; /* Prescaler Control Register */ + register8_t LOCK; /* Lock register */ + register8_t RTCCTRL; /* RTC Control Register */ +} CLK_t; + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Power Reduction */ +typedef struct PR_struct +{ + register8_t PR; /* General Power Reduction */ + register8_t PRPA; /* Power Reduction Port A */ + register8_t PRPB; /* Power Reduction Port B */ + register8_t PRPC; /* Power Reduction Port C */ + register8_t PRPD; /* Power Reduction Port D */ + register8_t PRPE; /* Power Reduction Port E */ + register8_t PRPF; /* Power Reduction Port F */ +} PR_t; + +/* System Clock Selection */ +typedef enum CLK_SCLKSEL_enum +{ + CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2MHz RC Oscillator */ + CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32MHz RC Oscillator */ + CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32kHz RC Oscillator */ + CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ + CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ +} CLK_SCLKSEL_t; + +/* Prescaler A Division Factor */ +typedef enum CLK_PSADIV_enum +{ + CLK_PSADIV_1_gc = (0x00<<2), /* Divide by 1 */ + CLK_PSADIV_2_gc = (0x01<<2), /* Divide by 2 */ + CLK_PSADIV_4_gc = (0x03<<2), /* Divide by 4 */ + CLK_PSADIV_8_gc = (0x05<<2), /* Divide by 8 */ + CLK_PSADIV_16_gc = (0x07<<2), /* Divide by 16 */ + CLK_PSADIV_32_gc = (0x09<<2), /* Divide by 32 */ + CLK_PSADIV_64_gc = (0x0B<<2), /* Divide by 64 */ + CLK_PSADIV_128_gc = (0x0D<<2), /* Divide by 128 */ + CLK_PSADIV_256_gc = (0x0F<<2), /* Divide by 256 */ + CLK_PSADIV_512_gc = (0x11<<2), /* Divide by 512 */ +} CLK_PSADIV_t; + +/* Prescaler B and C Division Factor */ +typedef enum CLK_PSBCDIV_enum +{ + CLK_PSBCDIV_1_1_gc = (0x00<<0), /* Divide B by 1 and C by 1 */ + CLK_PSBCDIV_1_2_gc = (0x01<<0), /* Divide B by 1 and C by 2 */ + CLK_PSBCDIV_4_1_gc = (0x02<<0), /* Divide B by 4 and C by 1 */ + CLK_PSBCDIV_2_2_gc = (0x03<<0), /* Divide B by 2 and C by 2 */ +} CLK_PSBCDIV_t; + +/* RTC Clock Source */ +typedef enum CLK_RTCSRC_enum +{ + CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1kHz from internal 32kHz ULP */ + CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1kHz from internal 32kHz RC oscillator */ + CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32kHz from 32kHz crystal oscillator on TOSC */ +} CLK_RTCSRC_t; + + +/* +-------------------------------------------------------------------------- +SLEEP - Sleep Controller +-------------------------------------------------------------------------- +*/ + +/* Sleep Controller */ +typedef struct SLEEP_struct +{ + register8_t CTRL; /* Control Register */ +} SLEEP_t; + +/* Sleep Mode */ +typedef enum SLEEP_SMODE_enum +{ + SLEEP_SMODE_IDLE_gc = (0x00<<1), /* Idle mode */ + SLEEP_SMODE_PDOWN_gc = (0x02<<1), /* Power-down Mode */ + SLEEP_SMODE_PSAVE_gc = (0x03<<1), /* Power-save Mode */ + SLEEP_SMODE_STDBY_gc = (0x06<<1), /* Standby Mode */ + SLEEP_SMODE_ESTDBY_gc = (0x07<<1), /* Extended Standby Mode */ +} SLEEP_SMODE_t; + + +/* +-------------------------------------------------------------------------- +OSC - Oscillator +-------------------------------------------------------------------------- +*/ + +/* Oscillator */ +typedef struct OSC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t XOSCCTRL; /* External Oscillator Control Register */ + register8_t XOSCFAIL; /* External Oscillator Failure Detection Register */ + register8_t RC32KCAL; /* 32kHz Internal Oscillator Calibration Register */ + register8_t PLLCTRL; /* PLL Control REgister */ + register8_t DFLLCTRL; /* DFLL Control Register */ +} OSC_t; + +/* Oscillator Frequency Range */ +typedef enum OSC_FRQRANGE_enum +{ + OSC_FRQRANGE_04TO2_gc = (0x00<<6), /* 0.4 - 2 MHz */ + OSC_FRQRANGE_2TO9_gc = (0x01<<6), /* 2 - 9 MHz */ + OSC_FRQRANGE_9TO12_gc = (0x02<<6), /* 9 - 12 MHz */ + OSC_FRQRANGE_12TO16_gc = (0x03<<6), /* 12 - 16 MHz */ +} OSC_FRQRANGE_t; + +/* External Oscillator Selection and Startup Time */ +typedef enum OSC_XOSCSEL_enum +{ + OSC_XOSCSEL_EXTCLK_gc = (0x00<<0), /* External Clock - 6 CLK */ + OSC_XOSCSEL_32KHz_gc = (0x02<<0), /* 32kHz TOSC - 32K CLK */ + OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), /* 0.4-16MHz XTAL - 256 CLK */ + OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), /* 0.4-16MHz XTAL - 1K CLK */ + OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), /* 0.4-16MHz XTAL - 16K CLK */ +} OSC_XOSCSEL_t; + +/* PLL Clock Source */ +typedef enum OSC_PLLSRC_enum +{ + OSC_PLLSRC_RC2M_gc = (0x00<<6), /* Internal 2MHz RC Oscillator */ + OSC_PLLSRC_RC32M_gc = (0x02<<6), /* Internal 32MHz RC Oscillator */ + OSC_PLLSRC_XOSC_gc = (0x03<<6), /* External Oscillator */ +} OSC_PLLSRC_t; + + +/* +-------------------------------------------------------------------------- +DFLL - DFLL +-------------------------------------------------------------------------- +*/ + +/* DFLL */ +typedef struct DFLL_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t CALA; /* Calibration Register A */ + register8_t CALB; /* Calibration Register B */ + register8_t OSCCNT0; /* Oscillator Counter Register 0 */ + register8_t OSCCNT1; /* Oscillator Counter Register 1 */ + register8_t OSCCNT2; /* Oscillator Counter Register 2 */ + register8_t reserved_0x07; +} DFLL_t; + + +/* +-------------------------------------------------------------------------- +RST - Reset +-------------------------------------------------------------------------- +*/ + +/* Reset */ +typedef struct RST_struct +{ + register8_t STATUS; /* Status Register */ + register8_t CTRL; /* Control Register */ +} RST_t; + + +/* +-------------------------------------------------------------------------- +WDT - Watch-Dog Timer +-------------------------------------------------------------------------- +*/ + +/* Watch-Dog Timer */ +typedef struct WDT_struct +{ + register8_t CTRL; /* Control */ + register8_t WINCTRL; /* Windowed Mode Control */ + register8_t STATUS; /* Status */ +} WDT_t; + +/* Period setting */ +typedef enum WDT_PER_enum +{ + WDT_PER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_PER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_PER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_PER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_PER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_PER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_PER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_PER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_PER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_PER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_PER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_PER_t; + +/* Closed window period */ +typedef enum WDT_WPER_enum +{ + WDT_WPER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_WPER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_WPER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_WPER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_WPER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_WPER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_WPER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_WPER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_WPER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_WPER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_WPER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_WPER_t; + + +/* +-------------------------------------------------------------------------- +MCU - MCU Control +-------------------------------------------------------------------------- +*/ + +/* MCU Control */ +typedef struct MCU_struct +{ + register8_t DEVID0; /* Device ID byte 0 */ + register8_t DEVID1; /* Device ID byte 1 */ + register8_t DEVID2; /* Device ID byte 2 */ + register8_t REVID; /* Revision ID */ + register8_t JTAGUID; /* JTAG User ID */ + register8_t reserved_0x05; + register8_t MCUCR; /* MCU Control */ + register8_t reserved_0x07; + register8_t EVSYSLOCK; /* Event System Lock */ + register8_t AWEXLOCK; /* AWEX Lock */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; +} MCU_t; + + +/* +-------------------------------------------------------------------------- +PMIC - Programmable Multi-level Interrupt Controller +-------------------------------------------------------------------------- +*/ + +/* Programmable Multi-level Interrupt Controller */ +typedef struct PMIC_struct +{ + register8_t STATUS; /* Status Register */ + register8_t INTPRI; /* Interrupt Priority */ + register8_t CTRL; /* Control Register */ +} PMIC_t; + + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Channel */ +typedef struct DMA_CH_struct +{ + register8_t CTRLA; /* Channel Control */ + register8_t CTRLB; /* Channel Control */ + register8_t ADDRCTRL; /* Address Control */ + register8_t TRIGSRC; /* Channel Trigger Source */ + _WORDREGISTER(TRFCNT); /* Channel Block Transfer Count */ + register8_t REPCNT; /* Channel Repeat Count */ + register8_t reserved_0x07; + register8_t SRCADDR0; /* Channel Source Address 0 */ + register8_t SRCADDR1; /* Channel Source Address 1 */ + register8_t SRCADDR2; /* Channel Source Address 2 */ + register8_t reserved_0x0B; + register8_t DESTADDR0; /* Channel Destination Address 0 */ + register8_t DESTADDR1; /* Channel Destination Address 1 */ + register8_t DESTADDR2; /* Channel Destination Address 2 */ + register8_t reserved_0x0F; +} DMA_CH_t; + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Controller */ +typedef struct DMA_struct +{ + register8_t CTRL; /* Control */ + register8_t reserved_0x01; + register8_t reserved_0x02; + register8_t INTFLAGS; /* Transfer Interrupt Status */ + register8_t STATUS; /* Status */ + register8_t reserved_0x05; + _WORDREGISTER(TEMP); /* Temporary Register For 16/24-bit Access */ + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + DMA_CH_t CH0; /* DMA Channel 0 */ + DMA_CH_t CH1; /* DMA Channel 1 */ + DMA_CH_t CH2; /* DMA Channel 2 */ + DMA_CH_t CH3; /* DMA Channel 3 */ +} DMA_t; + +/* Burst mode */ +typedef enum DMA_CH_BURSTLEN_enum +{ + DMA_CH_BURSTLEN_1BYTE_gc = (0x00<<0), /* 1-byte burst mode */ + DMA_CH_BURSTLEN_2BYTE_gc = (0x01<<0), /* 2-byte burst mode */ + DMA_CH_BURSTLEN_4BYTE_gc = (0x02<<0), /* 4-byte burst mode */ + DMA_CH_BURSTLEN_8BYTE_gc = (0x03<<0), /* 8-byte burst mode */ +} DMA_CH_BURSTLEN_t; + +/* Source address reload mode */ +typedef enum DMA_CH_SRCRELOAD_enum +{ + DMA_CH_SRCRELOAD_NONE_gc = (0x00<<6), /* No reload */ + DMA_CH_SRCRELOAD_BLOCK_gc = (0x01<<6), /* Reload at end of block */ + DMA_CH_SRCRELOAD_BURST_gc = (0x02<<6), /* Reload at end of burst */ + DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), /* Reload at end of transaction */ +} DMA_CH_SRCRELOAD_t; + +/* Source addressing mode */ +typedef enum DMA_CH_SRCDIR_enum +{ + DMA_CH_SRCDIR_FIXED_gc = (0x00<<4), /* Fixed */ + DMA_CH_SRCDIR_INC_gc = (0x01<<4), /* Increment */ + DMA_CH_SRCDIR_DEC_gc = (0x02<<4), /* Decrement */ +} DMA_CH_SRCDIR_t; + +/* Destination adress reload mode */ +typedef enum DMA_CH_DESTRELOAD_enum +{ + DMA_CH_DESTRELOAD_NONE_gc = (0x00<<2), /* No reload */ + DMA_CH_DESTRELOAD_BLOCK_gc = (0x01<<2), /* Reload at end of block */ + DMA_CH_DESTRELOAD_BURST_gc = (0x02<<2), /* Reload at end of burst */ + DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), /* Reload at end of transaction */ +} DMA_CH_DESTRELOAD_t; + +/* Destination adressing mode */ +typedef enum DMA_CH_DESTDIR_enum +{ + DMA_CH_DESTDIR_FIXED_gc = (0x00<<0), /* Fixed */ + DMA_CH_DESTDIR_INC_gc = (0x01<<0), /* Increment */ + DMA_CH_DESTDIR_DEC_gc = (0x02<<0), /* Decrement */ +} DMA_CH_DESTDIR_t; + +/* Transfer trigger source */ +typedef enum DMA_CH_TRIGSRC_enum +{ + DMA_CH_TRIGSRC_OFF_gc = (0x00<<0), /* Off software triggers only */ + DMA_CH_TRIGSRC_EVSYS_CH0_gc = (0x01<<0), /* Event System Channel 0 */ + DMA_CH_TRIGSRC_EVSYS_CH1_gc = (0x02<<0), /* Event System Channel 1 */ + DMA_CH_TRIGSRC_EVSYS_CH2_gc = (0x03<<0), /* Event System Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH0_gc = (0x10<<0), /* ADCA Channel 0 */ + DMA_CH_TRIGSRC_ADCA_CH1_gc = (0x11<<0), /* ADCA Channel 1 */ + DMA_CH_TRIGSRC_ADCA_CH2_gc = (0x12<<0), /* ADCA Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH3_gc = (0x13<<0), /* ADCA Channel 3 */ + DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), /* ADCA Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACA_CH0_gc = (0x15<<0), /* DACA Channel 0 */ + DMA_CH_TRIGSRC_DACA_CH1_gc = (0x16<<0), /* DACA Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH0_gc = (0x20<<0), /* ADCB Channel 0 */ + DMA_CH_TRIGSRC_ADCB_CH1_gc = (0x21<<0), /* ADCB Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH2_gc = (0x22<<0), /* ADCB Channel 2 */ + DMA_CH_TRIGSRC_ADCB_CH3_gc = (0x23<<0), /* ADCB Channel 3 */ + DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), /* ADCB Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACB_CH0_gc = (0x25<<0), /* DACB Channel 0 */ + DMA_CH_TRIGSRC_DACB_CH1_gc = (0x26<<0), /* DACB Channel 1 */ + DMA_CH_TRIGSRC_TCC0_OVF_gc = (0x40<<0), /* Timer/Counter C0 Overflow */ + DMA_CH_TRIGSRC_TCC0_ERR_gc = (0x41<<0), /* Timer/Counter C0 Error */ + DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), /* Timer/Counter C0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), /* Timer/Counter C0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), /* Timer/Counter C0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), /* Timer/Counter C0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCC1_OVF_gc = (0x46<<0), /* Timer/Counter C1 Overflow */ + DMA_CH_TRIGSRC_TCC1_ERR_gc = (0x47<<0), /* Timer/Counter C1 Error */ + DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), /* Timer/Counter C1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), /* Timer/Counter C1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIC_gc = (0x4A<<0), /* SPI C Transfer Complete */ + DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), /* USART C0 Receive Complete */ + DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), /* USART C0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), /* USART C1 Receive Complete */ + DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), /* USART C1 Data Register Empty */ + DMA_CH_TRIGSRC_TCD0_OVF_gc = (0x60<<0), /* Timer/Counter D0 Overflow */ + DMA_CH_TRIGSRC_TCD0_ERR_gc = (0x61<<0), /* Timer/Counter D0 Error */ + DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), /* Timer/Counter D0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), /* Timer/Counter D0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), /* Timer/Counter D0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), /* Timer/Counter D0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCD1_OVF_gc = (0x66<<0), /* Timer/Counter D1 Overflow */ + DMA_CH_TRIGSRC_TCD1_ERR_gc = (0x67<<0), /* Timer/Counter D1 Error */ + DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), /* Timer/Counter D1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), /* Timer/Counter D1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPID_gc = (0x6A<<0), /* SPI D Transfer Complete */ + DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), /* USART D0 Receive Complete */ + DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), /* USART D0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), /* USART D1 Receive Complete */ + DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), /* USART D1 Data Register Empty */ + DMA_CH_TRIGSRC_TCE0_OVF_gc = (0x80<<0), /* Timer/Counter E0 Overflow */ + DMA_CH_TRIGSRC_TCE0_ERR_gc = (0x81<<0), /* Timer/Counter E0 Error */ + DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), /* Timer/Counter E0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), /* Timer/Counter E0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), /* Timer/Counter E0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), /* Timer/Counter E0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCE1_OVF_gc = (0x86<<0), /* Timer/Counter E1 Overflow */ + DMA_CH_TRIGSRC_TCE1_ERR_gc = (0x87<<0), /* Timer/Counter E1 Error */ + DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), /* Timer/Counter E1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), /* Timer/Counter E1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIE_gc = (0x8A<<0), /* SPI E Transfer Complete */ + DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), /* USART E0 Receive Complete */ + DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), /* USART E0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), /* USART E1 Receive Complete */ + DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), /* USART E1 Data Register Empty */ + DMA_CH_TRIGSRC_TCF0_OVF_gc = (0xA0<<0), /* Timer/Counter F0 Overflow */ + DMA_CH_TRIGSRC_TCF0_ERR_gc = (0xA1<<0), /* Timer/Counter F0 Error */ + DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), /* Timer/Counter F0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), /* Timer/Counter F0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), /* Timer/Counter F0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), /* Timer/Counter F0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCF1_OVF_gc = (0xA6<<0), /* Timer/Counter F1 Overflow */ + DMA_CH_TRIGSRC_TCF1_ERR_gc = (0xA7<<0), /* Timer/Counter F1 Error */ + DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), /* Timer/Counter F1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), /* Timer/Counter F1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIF_gc = (0xAA<<0), /* SPI F Transfer Complete */ + DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), /* USART F0 Receive Complete */ + DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), /* USART F0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), /* USART F1 Receive Complete */ + DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), /* USART F1 Data Register Empty */ +} DMA_CH_TRIGSRC_t; + +/* Double buffering mode */ +typedef enum DMA_DBUFMODE_enum +{ + DMA_DBUFMODE_DISABLED_gc = (0x00<<2), /* Double buffering disabled */ + DMA_DBUFMODE_CH01_gc = (0x01<<2), /* Double buffering enabled on channel 0/1 */ + DMA_DBUFMODE_CH23_gc = (0x02<<2), /* Double buffering enabled on channel 2/3 */ + DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ +} DMA_DBUFMODE_t; + +/* Priority mode */ +typedef enum DMA_PRIMODE_enum +{ + DMA_PRIMODE_RR0123_gc = (0x00<<0), /* Round Robin */ + DMA_PRIMODE_CH0RR123_gc = (0x01<<0), /* Channel 0 > Round Robin on channel 1/2/3 */ + DMA_PRIMODE_CH01RR23_gc = (0x02<<0), /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ + DMA_PRIMODE_CH0123_gc = (0x03<<0), /* Channel 0 > channel 1 > channel 2 > channel 3 */ +} DMA_PRIMODE_t; + +/* Interrupt level */ +typedef enum DMA_CH_ERRINTLVL_enum +{ + DMA_CH_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + DMA_CH_ERRINTLVL_LO_gc = (0x01<<2), /* Low level */ + DMA_CH_ERRINTLVL_MED_gc = (0x02<<2), /* Medium level */ + DMA_CH_ERRINTLVL_HI_gc = (0x03<<2), /* High level */ +} DMA_CH_ERRINTLVL_t; + +/* Interrupt level */ +typedef enum DMA_CH_TRNINTLVL_enum +{ + DMA_CH_TRNINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + DMA_CH_TRNINTLVL_LO_gc = (0x01<<0), /* Low level */ + DMA_CH_TRNINTLVL_MED_gc = (0x02<<0), /* Medium level */ + DMA_CH_TRNINTLVL_HI_gc = (0x03<<0), /* High level */ +} DMA_CH_TRNINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EVSYS - Event System +-------------------------------------------------------------------------- +*/ + +/* Event System */ +typedef struct EVSYS_struct +{ + register8_t CH0MUX; /* Event Channel 0 Multiplexer */ + register8_t CH1MUX; /* Event Channel 1 Multiplexer */ + register8_t CH2MUX; /* Event Channel 2 Multiplexer */ + register8_t CH3MUX; /* Event Channel 3 Multiplexer */ + register8_t CH4MUX; /* Event Channel 4 Multiplexer */ + register8_t CH5MUX; /* Event Channel 5 Multiplexer */ + register8_t CH6MUX; /* Event Channel 6 Multiplexer */ + register8_t CH7MUX; /* Event Channel 7 Multiplexer */ + register8_t CH0CTRL; /* Channel 0 Control Register */ + register8_t CH1CTRL; /* Channel 1 Control Register */ + register8_t CH2CTRL; /* Channel 2 Control Register */ + register8_t CH3CTRL; /* Channel 3 Control Register */ + register8_t CH4CTRL; /* Channel 4 Control Register */ + register8_t CH5CTRL; /* Channel 5 Control Register */ + register8_t CH6CTRL; /* Channel 6 Control Register */ + register8_t CH7CTRL; /* Channel 7 Control Register */ + register8_t STROBE; /* Event Strobe */ + register8_t DATA; /* Event Data */ +} EVSYS_t; + +/* Quadrature Decoder Index Recognition Mode */ +typedef enum EVSYS_QDIRM_enum +{ + EVSYS_QDIRM_00_gc = (0x00<<5), /* QDPH0 = 0, QDPH90 = 0 */ + EVSYS_QDIRM_01_gc = (0x01<<5), /* QDPH0 = 0, QDPH90 = 1 */ + EVSYS_QDIRM_10_gc = (0x02<<5), /* QDPH0 = 1, QDPH90 = 0 */ + EVSYS_QDIRM_11_gc = (0x03<<5), /* QDPH0 = 1, QDPH90 = 1 */ +} EVSYS_QDIRM_t; + +/* Digital filter coefficient */ +typedef enum EVSYS_DIGFILT_enum +{ + EVSYS_DIGFILT_1SAMPLE_gc = (0x00<<0), /* 1 SAMPLE */ + EVSYS_DIGFILT_2SAMPLES_gc = (0x01<<0), /* 2 SAMPLES */ + EVSYS_DIGFILT_3SAMPLES_gc = (0x02<<0), /* 3 SAMPLES */ + EVSYS_DIGFILT_4SAMPLES_gc = (0x03<<0), /* 4 SAMPLES */ + EVSYS_DIGFILT_5SAMPLES_gc = (0x04<<0), /* 5 SAMPLES */ + EVSYS_DIGFILT_6SAMPLES_gc = (0x05<<0), /* 6 SAMPLES */ + EVSYS_DIGFILT_7SAMPLES_gc = (0x06<<0), /* 7 SAMPLES */ + EVSYS_DIGFILT_8SAMPLES_gc = (0x07<<0), /* 8 SAMPLES */ +} EVSYS_DIGFILT_t; + +/* Event Channel multiplexer input selection */ +typedef enum EVSYS_CHMUX_enum +{ + EVSYS_CHMUX_OFF_gc = (0x00<<0), /* Off */ + EVSYS_CHMUX_RTC_OVF_gc = (0x08<<0), /* RTC Overflow */ + EVSYS_CHMUX_RTC_CMP_gc = (0x09<<0), /* RTC Compare Match */ + EVSYS_CHMUX_ACA_CH0_gc = (0x10<<0), /* Analog Comparator A Channel 0 */ + EVSYS_CHMUX_ACA_CH1_gc = (0x11<<0), /* Analog Comparator A Channel 1 */ + EVSYS_CHMUX_ACA_WIN_gc = (0x12<<0), /* Analog Comparator A Window */ + EVSYS_CHMUX_ACB_CH0_gc = (0x13<<0), /* Analog Comparator B Channel 0 */ + EVSYS_CHMUX_ACB_CH1_gc = (0x14<<0), /* Analog Comparator B Channel 1 */ + EVSYS_CHMUX_ACB_WIN_gc = (0x15<<0), /* Analog Comparator B Window */ + EVSYS_CHMUX_ADCA_CH0_gc = (0x20<<0), /* ADC A Channel 0 */ + EVSYS_CHMUX_ADCA_CH1_gc = (0x21<<0), /* ADC A Channel 1 */ + EVSYS_CHMUX_ADCA_CH2_gc = (0x22<<0), /* ADC A Channel 2 */ + EVSYS_CHMUX_ADCA_CH3_gc = (0x23<<0), /* ADC A Channel 3 */ + EVSYS_CHMUX_ADCB_CH0_gc = (0x24<<0), /* ADC B Channel 0 */ + EVSYS_CHMUX_ADCB_CH1_gc = (0x25<<0), /* ADC B Channel 1 */ + EVSYS_CHMUX_ADCB_CH2_gc = (0x26<<0), /* ADC B Channel 2 */ + EVSYS_CHMUX_ADCB_CH3_gc = (0x27<<0), /* ADC B Channel 3 */ + EVSYS_CHMUX_PORTA_PIN0_gc = (0x50<<0), /* Port A, Pin0 */ + EVSYS_CHMUX_PORTA_PIN1_gc = (0x51<<0), /* Port A, Pin1 */ + EVSYS_CHMUX_PORTA_PIN2_gc = (0x52<<0), /* Port A, Pin2 */ + EVSYS_CHMUX_PORTA_PIN3_gc = (0x53<<0), /* Port A, Pin3 */ + EVSYS_CHMUX_PORTA_PIN4_gc = (0x54<<0), /* Port A, Pin4 */ + EVSYS_CHMUX_PORTA_PIN5_gc = (0x55<<0), /* Port A, Pin5 */ + EVSYS_CHMUX_PORTA_PIN6_gc = (0x56<<0), /* Port A, Pin6 */ + EVSYS_CHMUX_PORTA_PIN7_gc = (0x57<<0), /* Port A, Pin7 */ + EVSYS_CHMUX_PORTB_PIN0_gc = (0x58<<0), /* Port B, Pin0 */ + EVSYS_CHMUX_PORTB_PIN1_gc = (0x59<<0), /* Port B, Pin1 */ + EVSYS_CHMUX_PORTB_PIN2_gc = (0x5A<<0), /* Port B, Pin2 */ + EVSYS_CHMUX_PORTB_PIN3_gc = (0x5B<<0), /* Port B, Pin3 */ + EVSYS_CHMUX_PORTB_PIN4_gc = (0x5C<<0), /* Port B, Pin4 */ + EVSYS_CHMUX_PORTB_PIN5_gc = (0x5D<<0), /* Port B, Pin5 */ + EVSYS_CHMUX_PORTB_PIN6_gc = (0x5E<<0), /* Port B, Pin6 */ + EVSYS_CHMUX_PORTB_PIN7_gc = (0x5F<<0), /* Port B, Pin7 */ + EVSYS_CHMUX_PORTC_PIN0_gc = (0x60<<0), /* Port C, Pin0 */ + EVSYS_CHMUX_PORTC_PIN1_gc = (0x61<<0), /* Port C, Pin1 */ + EVSYS_CHMUX_PORTC_PIN2_gc = (0x62<<0), /* Port C, Pin2 */ + EVSYS_CHMUX_PORTC_PIN3_gc = (0x63<<0), /* Port C, Pin3 */ + EVSYS_CHMUX_PORTC_PIN4_gc = (0x64<<0), /* Port C, Pin4 */ + EVSYS_CHMUX_PORTC_PIN5_gc = (0x65<<0), /* Port C, Pin5 */ + EVSYS_CHMUX_PORTC_PIN6_gc = (0x66<<0), /* Port C, Pin6 */ + EVSYS_CHMUX_PORTC_PIN7_gc = (0x67<<0), /* Port C, Pin7 */ + EVSYS_CHMUX_PORTD_PIN0_gc = (0x68<<0), /* Port D, Pin0 */ + EVSYS_CHMUX_PORTD_PIN1_gc = (0x69<<0), /* Port D, Pin1 */ + EVSYS_CHMUX_PORTD_PIN2_gc = (0x6A<<0), /* Port D, Pin2 */ + EVSYS_CHMUX_PORTD_PIN3_gc = (0x6B<<0), /* Port D, Pin3 */ + EVSYS_CHMUX_PORTD_PIN4_gc = (0x6C<<0), /* Port D, Pin4 */ + EVSYS_CHMUX_PORTD_PIN5_gc = (0x6D<<0), /* Port D, Pin5 */ + EVSYS_CHMUX_PORTD_PIN6_gc = (0x6E<<0), /* Port D, Pin6 */ + EVSYS_CHMUX_PORTD_PIN7_gc = (0x6F<<0), /* Port D, Pin7 */ + EVSYS_CHMUX_PORTE_PIN0_gc = (0x70<<0), /* Port E, Pin0 */ + EVSYS_CHMUX_PORTE_PIN1_gc = (0x71<<0), /* Port E, Pin1 */ + EVSYS_CHMUX_PORTE_PIN2_gc = (0x72<<0), /* Port E, Pin2 */ + EVSYS_CHMUX_PORTE_PIN3_gc = (0x73<<0), /* Port E, Pin3 */ + EVSYS_CHMUX_PORTE_PIN4_gc = (0x74<<0), /* Port E, Pin4 */ + EVSYS_CHMUX_PORTE_PIN5_gc = (0x75<<0), /* Port E, Pin5 */ + EVSYS_CHMUX_PORTE_PIN6_gc = (0x76<<0), /* Port E, Pin6 */ + EVSYS_CHMUX_PORTE_PIN7_gc = (0x77<<0), /* Port E, Pin7 */ + EVSYS_CHMUX_PORTF_PIN0_gc = (0x78<<0), /* Port F, Pin0 */ + EVSYS_CHMUX_PORTF_PIN1_gc = (0x79<<0), /* Port F, Pin1 */ + EVSYS_CHMUX_PORTF_PIN2_gc = (0x7A<<0), /* Port F, Pin2 */ + EVSYS_CHMUX_PORTF_PIN3_gc = (0x7B<<0), /* Port F, Pin3 */ + EVSYS_CHMUX_PORTF_PIN4_gc = (0x7C<<0), /* Port F, Pin4 */ + EVSYS_CHMUX_PORTF_PIN5_gc = (0x7D<<0), /* Port F, Pin5 */ + EVSYS_CHMUX_PORTF_PIN6_gc = (0x7E<<0), /* Port F, Pin6 */ + EVSYS_CHMUX_PORTF_PIN7_gc = (0x7F<<0), /* Port F, Pin7 */ + EVSYS_CHMUX_PRESCALER_1_gc = (0x80<<0), /* Prescaler, divide by 1 */ + EVSYS_CHMUX_PRESCALER_2_gc = (0x81<<0), /* Prescaler, divide by 2 */ + EVSYS_CHMUX_PRESCALER_4_gc = (0x82<<0), /* Prescaler, divide by 4 */ + EVSYS_CHMUX_PRESCALER_8_gc = (0x83<<0), /* Prescaler, divide by 8 */ + EVSYS_CHMUX_PRESCALER_16_gc = (0x84<<0), /* Prescaler, divide by 16 */ + EVSYS_CHMUX_PRESCALER_32_gc = (0x85<<0), /* Prescaler, divide by 32 */ + EVSYS_CHMUX_PRESCALER_64_gc = (0x86<<0), /* Prescaler, divide by 64 */ + EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ + EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ + EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ + EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ + EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ + EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ + EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ + EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ + EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ + EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ + EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ + EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ + EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ + EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ + EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ + EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ + EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ + EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ + EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ + EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ + EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ + EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ + EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ + EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ + EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ + EVSYS_CHMUX_TCD1_OVF_gc = (0xD8<<0), /* Timer/Counter D1 Overflow */ + EVSYS_CHMUX_TCD1_ERR_gc = (0xD9<<0), /* Timer/Counter D1 Error */ + EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), /* Timer/Counter D1 Compare or Capture A */ + EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), /* Timer/Counter D1 Compare or Capture B */ + EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ + EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ + EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ + EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ + EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ + EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ + EVSYS_CHMUX_TCE1_OVF_gc = (0xE8<<0), /* Timer/Counter E1 Overflow */ + EVSYS_CHMUX_TCE1_ERR_gc = (0xE9<<0), /* Timer/Counter E1 Error */ + EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), /* Timer/Counter E1 Compare or Capture A */ + EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), /* Timer/Counter E1 Compare or Capture B */ + EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ + EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ + EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ + EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ + EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ + EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ + EVSYS_CHMUX_TCF1_OVF_gc = (0xF8<<0), /* Timer/Counter F1 Overflow */ + EVSYS_CHMUX_TCF1_ERR_gc = (0xF9<<0), /* Timer/Counter F1 Error */ + EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), /* Timer/Counter F1 Compare or Capture A */ + EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), /* Timer/Counter F1 Compare or Capture B */ +} EVSYS_CHMUX_t; + + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Non-volatile Memory Controller */ +typedef struct NVM_struct +{ + register8_t ADDR0; /* Address Register 0 */ + register8_t ADDR1; /* Address Register 1 */ + register8_t ADDR2; /* Address Register 2 */ + register8_t reserved_0x03; + register8_t DATA0; /* Data Register 0 */ + register8_t DATA1; /* Data Register 1 */ + register8_t DATA2; /* Data Register 2 */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t CMD; /* Command */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t INTCTRL; /* Interrupt Control */ + register8_t reserved_0x0E; + register8_t STATUS; /* Status */ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Lock Bits */ +typedef struct NVM_LOCKBITS_struct +{ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_LOCKBITS_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Fuses */ +typedef struct NVM_FUSES_struct +{ + register8_t FUSEBYTE0; /* JTAG User ID */ + register8_t FUSEBYTE1; /* Watchdog Configuration */ + register8_t FUSEBYTE2; /* Reset Configuration */ + register8_t reserved_0x03; + register8_t FUSEBYTE4; /* Start-up Configuration */ + register8_t FUSEBYTE5; /* EESAVE and BOD Level */ +} NVM_FUSES_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Production Signatures */ +typedef struct NVM_PROD_SIGNATURES_struct +{ + register8_t RCOSC2M; /* RCOSC 2MHz Calibration Value */ + register8_t reserved_0x01; + register8_t RCOSC32K; /* RCOSC 32kHz Calibration Value */ + register8_t RCOSC32M; /* RCOSC 32MHz Calibration Value */ + register8_t reserved_0x04; + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t LOTNUM0; /* Lot Number Byte 0, ASCII */ + register8_t LOTNUM1; /* Lot Number Byte 1, ASCII */ + register8_t LOTNUM2; /* Lot Number Byte 2, ASCII */ + register8_t LOTNUM3; /* Lot Number Byte 3, ASCII */ + register8_t LOTNUM4; /* Lot Number Byte 4, ASCII */ + register8_t LOTNUM5; /* Lot Number Byte 5, ASCII */ + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t WAFNUM; /* Wafer Number */ + register8_t reserved_0x11; + register8_t COORDX0; /* Wafer Coordinate X Byte 0 */ + register8_t COORDX1; /* Wafer Coordinate X Byte 1 */ + register8_t COORDY0; /* Wafer Coordinate Y Byte 0 */ + register8_t COORDY1; /* Wafer Coordinate Y Byte 1 */ + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + register8_t ADCACAL0; /* ADCA Calibration Byte 0 */ + register8_t ADCACAL1; /* ADCA Calibration Byte 1 */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t ADCBCAL0; /* ADCB Calibration Byte 0 */ + register8_t ADCBCAL1; /* ADCB Calibration Byte 1 */ + register8_t reserved_0x26; + register8_t reserved_0x27; + register8_t reserved_0x28; + register8_t reserved_0x29; + register8_t reserved_0x2A; + register8_t reserved_0x2B; + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t TEMPSENSE0; /* Temperature Sensor Calibration Byte 0 */ + register8_t TEMPSENSE1; /* Temperature Sensor Calibration Byte 0 */ + register8_t DACAOFFCAL; /* DACA Calibration Byte 0 */ + register8_t DACACAINCAL; /* DACA Calibration Byte 1 */ + register8_t DACBOFFCAL; /* DACB Calibration Byte 0 */ + register8_t DACBGAINCAL; /* DACB Calibration Byte 1 */ + register8_t reserved_0x34; + register8_t reserved_0x35; + register8_t reserved_0x36; + register8_t reserved_0x37; + register8_t reserved_0x38; + register8_t reserved_0x39; + register8_t reserved_0x3A; + register8_t reserved_0x3B; + register8_t reserved_0x3C; + register8_t reserved_0x3D; + register8_t reserved_0x3E; +} NVM_PROD_SIGNATURES_t; + +/* NVM Command */ +typedef enum NVM_CMD_enum +{ + NVM_CMD_NO_OPERATION_gc = (0x00<<0), /* Noop/Ordinary LPM */ + NVM_CMD_READ_CALIB_ROW_gc = (0x02<<0), /* Read calibration row */ + NVM_CMD_READ_USER_SIG_ROW_gc = (0x01<<0), /* Read user signature row */ + NVM_CMD_READ_EEPROM_gc = (0x06<<0), /* Read EEPROM */ + NVM_CMD_READ_FUSES_gc = (0x07<<0), /* Read fuse byte */ + NVM_CMD_WRITE_LOCK_BITS_gc = (0x08<<0), /* Write lock bits */ + NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ + NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ + NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ + NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ + NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ + NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ + NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ + NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ + NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ + NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ + NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ + NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ + NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ + NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ + NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ + NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ + NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ + NVM_CMD_APP_CRC_gc = (0x38<<0), /* Generate Application section CRC */ + NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Generate Boot Section CRC */ + NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Generate Flash Range CRC */ +} NVM_CMD_t; + +/* SPM ready interrupt level */ +typedef enum NVM_SPMLVL_enum +{ + NVM_SPMLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + NVM_SPMLVL_LO_gc = (0x01<<2), /* Low level */ + NVM_SPMLVL_MED_gc = (0x02<<2), /* Medium level */ + NVM_SPMLVL_HI_gc = (0x03<<2), /* High level */ +} NVM_SPMLVL_t; + +/* EEPROM ready interrupt level */ +typedef enum NVM_EELVL_enum +{ + NVM_EELVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + NVM_EELVL_LO_gc = (0x01<<0), /* Low level */ + NVM_EELVL_MED_gc = (0x02<<0), /* Medium level */ + NVM_EELVL_HI_gc = (0x03<<0), /* High level */ +} NVM_EELVL_t; + +/* Boot lock bits - boot setcion */ +typedef enum NVM_BLBB_enum +{ + NVM_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ + NVM_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ + NVM_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ + NVM_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ +} NVM_BLBB_t; + +/* Boot lock bits - application section */ +typedef enum NVM_BLBA_enum +{ + NVM_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ + NVM_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ + NVM_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ + NVM_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ +} NVM_BLBA_t; + +/* Boot lock bits - application table section */ +typedef enum NVM_BLBAT_enum +{ + NVM_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ + NVM_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ + NVM_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ + NVM_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ +} NVM_BLBAT_t; + +/* Lock bits */ +typedef enum NVM_LB_enum +{ + NVM_LB_NOLOCK_gc = (0x03<<0), /* No locks */ + NVM_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ + NVM_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ +} NVM_LB_t; + +/* Boot Loader Section Reset Vector */ +typedef enum BOOTRST_enum +{ + BOOTRST_BOOTLDR_gc = (0x00<<6), /* Boot Loader Reset */ + BOOTRST_APPLICATION_gc = (0x01<<6), /* Application Reset */ +} BOOTRST_t; + +/* BOD operation */ +typedef enum BOD_enum +{ + BOD_INSAMPLEDMODE_gc = (0x01<<2), /* BOD enabled in sampled mode */ + BOD_CONTINOUSLY_gc = (0x02<<2), /* BOD enabled continuously */ + BOD_DISABLED_gc = (0x03<<2), /* BOD Disabled */ +} BOD_t; + +/* Watchdog (Window) Timeout Period */ +typedef enum WD_enum +{ + WD_8CLK_gc = (0x00<<4), /* 8 cycles (8ms @ 3.3V) */ + WD_16CLK_gc = (0x01<<4), /* 16 cycles (16ms @ 3.3V) */ + WD_32CLK_gc = (0x02<<4), /* 32 cycles (32ms @ 3.3V) */ + WD_64CLK_gc = (0x03<<4), /* 64 cycles (64ms @ 3.3V) */ + WD_128CLK_gc = (0x04<<4), /* 128 cycles (0.125s @ 3.3V) */ + WD_256CLK_gc = (0x05<<4), /* 256 cycles (0.25s @ 3.3V) */ + WD_512CLK_gc = (0x06<<4), /* 512 cycles (0.5s @ 3.3V) */ + WD_1KCLK_gc = (0x07<<4), /* 1K cycles (1s @ 3.3V) */ + WD_2KCLK_gc = (0x08<<4), /* 2K cycles (2s @ 3.3V) */ + WD_4KCLK_gc = (0x09<<4), /* 4K cycles (4s @ 3.3V) */ + WD_8KCLK_gc = (0x0A<<4), /* 8K cycles (8s @ 3.3V) */ +} WD_t; + +/* Start-up Time */ +typedef enum SUT_enum +{ + SUT_0MS_gc = (0x03<<2), /* 0 ms */ + SUT_4MS_gc = (0x01<<2), /* 4 ms */ + SUT_64MS_gc = (0x00<<2), /* 64 ms */ +} SUT_t; + +/* Brown Out Detection Voltage Level */ +typedef enum BODLVL_enum +{ + BODLVL_1V6_gc = (0x07<<0), /* 1.6 V */ + BODLVL_1V8_gc = (0x06<<0), /* 1.8 V */ + BODLVL_2V0_gc = (0x05<<0), /* 2.0 V */ + BODLVL_2V2_gc = (0x04<<0), /* 2.2 V */ + BODLVL_2V4_gc = (0x03<<0), /* 2.4 V */ + BODLVL_2V7_gc = (0x02<<0), /* 2.7 V */ + BODLVL_2V9_gc = (0x01<<0), /* 2.9 V */ + BODLVL_3V2_gc = (0x00<<0), /* 3.2 V */ +} BODLVL_t; + + +/* +-------------------------------------------------------------------------- +AC - Analog Comparator +-------------------------------------------------------------------------- +*/ + +/* Analog Comparator */ +typedef struct AC_struct +{ + register8_t AC0CTRL; /* Comparator 0 Control */ + register8_t AC1CTRL; /* Comparator 1 Control */ + register8_t AC0MUXCTRL; /* Comparator 0 MUX Control */ + register8_t AC1MUXCTRL; /* Comparator 1 MUX Control */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t WINCTRL; /* Window Mode Control */ + register8_t STATUS; /* Status */ +} AC_t; + +/* Interrupt mode */ +typedef enum AC_INTMODE_enum +{ + AC_INTMODE_BOTHEDGES_gc = (0x00<<6), /* Interrupt on both edges */ + AC_INTMODE_FALLING_gc = (0x02<<6), /* Interrupt on falling edge */ + AC_INTMODE_RISING_gc = (0x03<<6), /* Interrupt on rising edge */ +} AC_INTMODE_t; + +/* Interrupt level */ +typedef enum AC_INTLVL_enum +{ + AC_INTLVL_OFF_gc = (0x00<<4), /* Interrupt disabled */ + AC_INTLVL_LO_gc = (0x01<<4), /* Low level */ + AC_INTLVL_MED_gc = (0x02<<4), /* Medium level */ + AC_INTLVL_HI_gc = (0x03<<4), /* High level */ +} AC_INTLVL_t; + +/* Hysteresis mode selection */ +typedef enum AC_HYSMODE_enum +{ + AC_HYSMODE_NO_gc = (0x00<<1), /* No hysteresis */ + AC_HYSMODE_SMALL_gc = (0x01<<1), /* Small hysteresis */ + AC_HYSMODE_LARGE_gc = (0x02<<1), /* Large hysteresis */ +} AC_HYSMODE_t; + +/* Positive input multiplexer selection */ +typedef enum AC_MUXPOS_enum +{ + AC_MUXPOS_PIN0_gc = (0x00<<3), /* Pin 0 */ + AC_MUXPOS_PIN1_gc = (0x01<<3), /* Pin 1 */ + AC_MUXPOS_PIN2_gc = (0x02<<3), /* Pin 2 */ + AC_MUXPOS_PIN3_gc = (0x03<<3), /* Pin 3 */ + AC_MUXPOS_PIN4_gc = (0x04<<3), /* Pin 4 */ + AC_MUXPOS_PIN5_gc = (0x05<<3), /* Pin 5 */ + AC_MUXPOS_PIN6_gc = (0x06<<3), /* Pin 6 */ + AC_MUXPOS_DAC_gc = (0x07<<3), /* DAC output */ +} AC_MUXPOS_t; + +/* Negative input multiplexer selection */ +typedef enum AC_MUXNEG_enum +{ + AC_MUXNEG_PIN0_gc = (0x00<<0), /* Pin 0 */ + AC_MUXNEG_PIN1_gc = (0x01<<0), /* Pin 1 */ + AC_MUXNEG_PIN3_gc = (0x02<<0), /* Pin 3 */ + AC_MUXNEG_PIN5_gc = (0x03<<0), /* Pin 5 */ + AC_MUXNEG_PIN7_gc = (0x04<<0), /* Pin 7 */ + AC_MUXNEG_DAC_gc = (0x05<<0), /* DAC output */ + AC_MUXNEG_BANDGAP_gc = (0x06<<0), /* Bandgap Reference */ + AC_MUXNEG_SCALER_gc = (0x07<<0), /* Internal voltage scaler */ +} AC_MUXNEG_t; + +/* Windows interrupt mode */ +typedef enum AC_WINTMODE_enum +{ + AC_WINTMODE_ABOVE_gc = (0x00<<2), /* Interrupt on above window */ + AC_WINTMODE_INSIDE_gc = (0x01<<2), /* Interrupt on inside window */ + AC_WINTMODE_BELOW_gc = (0x02<<2), /* Interrupt on below window */ + AC_WINTMODE_OUTSIDE_gc = (0x03<<2), /* Interrupt on outside window */ +} AC_WINTMODE_t; + +/* Window interrupt level */ +typedef enum AC_WINTLVL_enum +{ + AC_WINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + AC_WINTLVL_LO_gc = (0x01<<0), /* Low priority */ + AC_WINTLVL_MED_gc = (0x02<<0), /* Medium priority */ + AC_WINTLVL_HI_gc = (0x03<<0), /* High priority */ +} AC_WINTLVL_t; + +/* Window mode state */ +typedef enum AC_WSTATE_enum +{ + AC_WSTATE_ABOVE_gc = (0x00<<6), /* Signal above window */ + AC_WSTATE_INSIDE_gc = (0x01<<6), /* Signal inside window */ + AC_WSTATE_BELOW_gc = (0x02<<6), /* Signal below window */ +} AC_WSTATE_t; + + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* ADC Channel */ +typedef struct ADC_CH_struct +{ + register8_t CTRL; /* Control Register */ + register8_t MUXCTRL; /* MUX Control */ + register8_t INTCTRL; /* Channel Interrupt Control */ + register8_t INTFLAGS; /* Interrupt Flags */ + _WORDREGISTER(RES); /* Channel Result */ + register8_t reserved_0x6; + register8_t reserved_0x7; +} ADC_CH_t; + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* Analog-to-Digital Converter */ +typedef struct ADC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t REFCTRL; /* Reference Control */ + register8_t EVCTRL; /* Event Control */ + register8_t PRESCALER; /* Clock Prescaler */ + register8_t CALCTRL; /* Calibration Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t CALIB; /* Calibration Value */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + _WORDREGISTER(CH0RES); /* Channel 0 Result */ + _WORDREGISTER(CH1RES); /* Channel 1 Result */ + _WORDREGISTER(CH2RES); /* Channel 2 Result */ + _WORDREGISTER(CH3RES); /* Channel 3 Result */ + _WORDREGISTER(CMP); /* Compare Value */ + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + ADC_CH_t CH0; /* ADC Channel 0 */ + ADC_CH_t CH1; /* ADC Channel 1 */ + ADC_CH_t CH2; /* ADC Channel 2 */ + ADC_CH_t CH3; /* ADC Channel 3 */ +} ADC_t; + +/* Positive input multiplexer selection */ +typedef enum ADC_CH_MUXPOS_enum +{ + ADC_CH_MUXPOS_PIN0_gc = (0x00<<3), /* Input pin 0 */ + ADC_CH_MUXPOS_PIN1_gc = (0x01<<3), /* Input pin 1 */ + ADC_CH_MUXPOS_PIN2_gc = (0x02<<3), /* Input pin 2 */ + ADC_CH_MUXPOS_PIN3_gc = (0x03<<3), /* Input pin 3 */ + ADC_CH_MUXPOS_PIN4_gc = (0x04<<3), /* Input pin 4 */ + ADC_CH_MUXPOS_PIN5_gc = (0x05<<3), /* Input pin 5 */ + ADC_CH_MUXPOS_PIN6_gc = (0x06<<3), /* Input pin 6 */ + ADC_CH_MUXPOS_PIN7_gc = (0x07<<3), /* Input pin 7 */ +} ADC_CH_MUXPOS_t; + +/* Internal input multiplexer selections */ +typedef enum ADC_CH_MUXINT_enum +{ + ADC_CH_MUXINT_TEMP_gc = (0x00<<3), /* Temperature Reference */ + ADC_CH_MUXINT_BANDGAP_gc = (0x01<<3), /* Bandgap Reference */ + ADC_CH_MUXINT_SCALEDVCC_gc = (0x02<<3), /* 1/10 scaled VCC */ + ADC_CH_MUXINT_DAC_gc = (0x03<<3), /* DAC output */ +} ADC_CH_MUXINT_t; + +/* Negative input multiplexer selection */ +typedef enum ADC_CH_MUXNEG_enum +{ + ADC_CH_MUXNEG_PIN0_gc = (0x00<<0), /* Input pin 0 */ + ADC_CH_MUXNEG_PIN1_gc = (0x01<<0), /* Input pin 1 */ + ADC_CH_MUXNEG_PIN2_gc = (0x02<<0), /* Input pin 2 */ + ADC_CH_MUXNEG_PIN3_gc = (0x03<<0), /* Input pin 3 */ + ADC_CH_MUXNEG_PIN4_gc = (0x04<<0), /* Input pin 4 */ + ADC_CH_MUXNEG_PIN5_gc = (0x05<<0), /* Input pin 5 */ + ADC_CH_MUXNEG_PIN6_gc = (0x06<<0), /* Input pin 6 */ + ADC_CH_MUXNEG_PIN7_gc = (0x07<<0), /* Input pin 7 */ +} ADC_CH_MUXNEG_t; + +/* Input mode */ +typedef enum ADC_CH_INPUTMODE_enum +{ + ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ + ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ + ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ + ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ +} ADC_CH_INPUTMODE_t; + +/* Gain factor */ +typedef enum ADC_CH_GAIN_enum +{ + ADC_CH_GAIN_1X_gc = (0x00<<2), /* 1x gain */ + ADC_CH_GAIN_2X_gc = (0x01<<2), /* 2x gain */ + ADC_CH_GAIN_4X_gc = (0x02<<2), /* 4x gain */ + ADC_CH_GAIN_8X_gc = (0x03<<2), /* 8x gain */ + ADC_CH_GAIN_16X_gc = (0x04<<2), /* 16x gain */ + ADC_CH_GAIN_32X_gc = (0x05<<2), /* 32x gain */ + ADC_CH_GAIN_64X_gc = (0x06<<2), /* 64x gain */ +} ADC_CH_GAIN_t; + +/* Conversion result resolution */ +typedef enum ADC_RESOLUTION_enum +{ + ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ + ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ + ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ +} ADC_RESOLUTION_t; + +/* Voltage reference selection */ +typedef enum ADC_REFSEL_enum +{ + ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ + ADC_REFSEL_VCC_gc = (0x01<<4), /* Internal VCC / 1.6V */ + ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ + ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ +} ADC_REFSEL_t; + +/* Channel sweep selection */ +typedef enum ADC_SWEEP_enum +{ + ADC_SWEEP_0_gc = (0x00<<6), /* ADC Channel 0 */ + ADC_SWEEP_01_gc = (0x01<<6), /* ADC Channel 0,1 */ + ADC_SWEEP_012_gc = (0x02<<6), /* ADC Channel 0,1,2 */ + ADC_SWEEP_0123_gc = (0x03<<6), /* ADC Channel 0,1,2,3 */ +} ADC_SWEEP_t; + +/* Event channel input selection */ +typedef enum ADC_EVSEL_enum +{ + ADC_EVSEL_0123_gc = (0x00<<3), /* Event Channel 0,1,2,3 */ + ADC_EVSEL_1234_gc = (0x01<<3), /* Event Channel 1,2,3,4 */ + ADC_EVSEL_2345_gc = (0x02<<3), /* Event Channel 2,3,4,5 */ + ADC_EVSEL_3456_gc = (0x03<<3), /* Event Channel 3,4,5,6 */ + ADC_EVSEL_4567_gc = (0x04<<3), /* Event Channel 4,5,6,7 */ + ADC_EVSEL_567_gc = (0x05<<3), /* Event Channel 5,6,7 */ + ADC_EVSEL_67_gc = (0x06<<3), /* Event Channel 6,7 */ + ADC_EVSEL_7_gc = (0x07<<3), /* Event Channel 7 */ +} ADC_EVSEL_t; + +/* Event action selection */ +typedef enum ADC_EVACT_enum +{ + ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ + ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ + ADC_EVACT_CH01_gc = (0x02<<0), /* First two events trigger channel 0,1 */ + ADC_EVACT_CH012_gc = (0x03<<0), /* First three events trigger channel 0,1,2 */ + ADC_EVACT_CH0123_gc = (0x04<<0), /* Events trigger channel 0,1,2,3 */ + ADC_EVACT_SWEEP_gc = (0x05<<0), /* First event triggers sweep */ + ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), /* First event triggers synchronized sweep */ +} ADC_EVACT_t; + +/* Interupt mode */ +typedef enum ADC_CH_INTMODE_enum +{ + ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ + ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ + ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ +} ADC_CH_INTMODE_t; + +/* Interrupt level */ +typedef enum ADC_CH_INTLVL_enum +{ + ADC_CH_INTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + ADC_CH_INTLVL_LO_gc = (0x01<<0), /* Low level */ + ADC_CH_INTLVL_MED_gc = (0x02<<0), /* Medium level */ + ADC_CH_INTLVL_HI_gc = (0x03<<0), /* High level */ +} ADC_CH_INTLVL_t; + +/* DMA request selection */ +typedef enum ADC_DMASEL_enum +{ + ADC_DMASEL_OFF_gc = (0x00<<5), /* Combined DMA request OFF */ + ADC_DMASEL_CH01_gc = (0x01<<5), /* ADC Channel 0 or 1 */ + ADC_DMASEL_CH012_gc = (0x02<<5), /* ADC Channel 0 or 1 or 2 */ + ADC_DMASEL_CH0123_gc = (0x03<<5), /* ADC Channel 0 or 1 or 2 or 3 */ +} ADC_DMASEL_t; + +/* Clock prescaler */ +typedef enum ADC_PRESCALER_enum +{ + ADC_PRESCALER_DIV4_gc = (0x00<<0), /* Divide clock by 4 */ + ADC_PRESCALER_DIV8_gc = (0x01<<0), /* Divide clock by 8 */ + ADC_PRESCALER_DIV16_gc = (0x02<<0), /* Divide clock by 16 */ + ADC_PRESCALER_DIV32_gc = (0x03<<0), /* Divide clock by 32 */ + ADC_PRESCALER_DIV64_gc = (0x04<<0), /* Divide clock by 64 */ + ADC_PRESCALER_DIV128_gc = (0x05<<0), /* Divide clock by 128 */ + ADC_PRESCALER_DIV256_gc = (0x06<<0), /* Divide clock by 256 */ + ADC_PRESCALER_DIV512_gc = (0x07<<0), /* Divide clock by 512 */ +} ADC_PRESCALER_t; + + +/* +-------------------------------------------------------------------------- +DAC - Digital/Analog Converter +-------------------------------------------------------------------------- +*/ + +/* Digital-to-Analog Converter */ +typedef struct DAC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t EVCTRL; /* Event Input Control */ + register8_t TIMCTRL; /* Timing Control */ + register8_t STATUS; /* Status */ + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t GAINCAL; /* Gain Calibration */ + register8_t OFFSETCAL; /* Offset Calibration */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + _WORDREGISTER(CH0DATA); /* Channel 0 Data */ + _WORDREGISTER(CH1DATA); /* Channel 1 Data */ +} DAC_t; + +/* Output channel selection */ +typedef enum DAC_CHSEL_enum +{ + DAC_CHSEL_SINGLE_gc = (0x00<<5), /* Single channel operation (Channel A only) */ + DAC_CHSEL_DUAL_gc = (0x02<<5), /* Dual channel operation (S/H on both channels) */ +} DAC_CHSEL_t; + +/* Reference voltage selection */ +typedef enum DAC_REFSEL_enum +{ + DAC_REFSEL_INT1V_gc = (0x00<<3), /* Internal 1V */ + DAC_REFSEL_AVCC_gc = (0x01<<3), /* Analog supply voltage */ + DAC_REFSEL_AREFA_gc = (0x02<<3), /* External reference on AREF on PORTA */ + DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */ +} DAC_REFSEL_t; + +/* Event channel selection */ +typedef enum DAC_EVSEL_enum +{ + DAC_EVSEL_0_gc = (0x00<<0), /* Event Channel 0 */ + DAC_EVSEL_1_gc = (0x01<<0), /* Event Channel 1 */ + DAC_EVSEL_2_gc = (0x02<<0), /* Event Channel 2 */ + DAC_EVSEL_3_gc = (0x03<<0), /* Event Channel 3 */ + DAC_EVSEL_4_gc = (0x04<<0), /* Event Channel 4 */ + DAC_EVSEL_5_gc = (0x05<<0), /* Event Channel 5 */ + DAC_EVSEL_6_gc = (0x06<<0), /* Event Channel 6 */ + DAC_EVSEL_7_gc = (0x07<<0), /* Event Channel 7 */ +} DAC_EVSEL_t; + +/* Conversion interval */ +typedef enum DAC_CONINTVAL_enum +{ + DAC_CONINTVAL_1CLK_gc = (0x00<<4), /* 1 CLK / 2 CLK in S/H mode */ + DAC_CONINTVAL_2CLK_gc = (0x01<<4), /* 2 CLK / 3 CLK in S/H mode */ + DAC_CONINTVAL_4CLK_gc = (0x02<<4), /* 4 CLK / 6 CLK in S/H mode */ + DAC_CONINTVAL_8CLK_gc = (0x03<<4), /* 8 CLK / 12 CLK in S/H mode */ + DAC_CONINTVAL_16CLK_gc = (0x04<<4), /* 16 CLK / 24 CLK in S/H mode */ + DAC_CONINTVAL_32CLK_gc = (0x05<<4), /* 32 CLK / 48 CLK in S/H mode */ + DAC_CONINTVAL_64CLK_gc = (0x06<<4), /* 64 CLK / 96 CLK in S/H mode */ + DAC_CONINTVAL_128CLK_gc = (0x07<<4), /* 128 CLK / 192 CLK in S/H mode */ +} DAC_CONINTVAL_t; + +/* Refresh rate */ +typedef enum DAC_REFRESH_enum +{ + DAC_REFRESH_16CLK_gc = (0x00<<0), /* 16 CLK */ + DAC_REFRESH_32CLK_gc = (0x01<<0), /* 32 CLK */ + DAC_REFRESH_64CLK_gc = (0x02<<0), /* 64 CLK */ + DAC_REFRESH_128CLK_gc = (0x03<<0), /* 128 CLK */ + DAC_REFRESH_256CLK_gc = (0x04<<0), /* 256 CLK */ + DAC_REFRESH_512CLK_gc = (0x05<<0), /* 512 CLK */ + DAC_REFRESH_1024CLK_gc = (0x06<<0), /* 1024 CLK */ + DAC_REFRESH_2048CLK_gc = (0x07<<0), /* 2048 CLK */ + DAC_REFRESH_4086CLK_gc = (0x08<<0), /* 4096 CLK */ + DAC_REFRESH_8192CLK_gc = (0x09<<0), /* 8192 CLK */ + DAC_REFRESH_16384CLK_gc = (0x0A<<0), /* 16384 CLK */ + DAC_REFRESH_32768CLK_gc = (0x0B<<0), /* 32768 CLK */ + DAC_REFRESH_65536CLK_gc = (0x0C<<0), /* 65536 CLK */ + DAC_REFRESH_OFF_gc = (0x0F<<0), /* Auto refresh OFF */ +} DAC_REFRESH_t; + + +/* +-------------------------------------------------------------------------- +RTC - Real-Time Clounter +-------------------------------------------------------------------------- +*/ + +/* Real-Time Counter */ +typedef struct RTC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t TEMP; /* Temporary register */ + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + _WORDREGISTER(CNT); /* Count Register */ + _WORDREGISTER(PER); /* Period Register */ + _WORDREGISTER(COMP); /* Compare Register */ +} RTC_t; + +/* Prescaler Factor */ +typedef enum RTC_PRESCALER_enum +{ + RTC_PRESCALER_OFF_gc = (0x00<<0), /* RTC Off */ + RTC_PRESCALER_DIV1_gc = (0x01<<0), /* RTC Clock */ + RTC_PRESCALER_DIV2_gc = (0x02<<0), /* RTC Clock / 2 */ + RTC_PRESCALER_DIV8_gc = (0x03<<0), /* RTC Clock / 8 */ + RTC_PRESCALER_DIV16_gc = (0x04<<0), /* RTC Clock / 16 */ + RTC_PRESCALER_DIV64_gc = (0x05<<0), /* RTC Clock / 64 */ + RTC_PRESCALER_DIV256_gc = (0x06<<0), /* RTC Clock / 256 */ + RTC_PRESCALER_DIV1024_gc = (0x07<<0), /* RTC Clock / 1024 */ +} RTC_PRESCALER_t; + +/* Compare Interrupt level */ +typedef enum RTC_COMPINTLVL_enum +{ + RTC_COMPINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + RTC_COMPINTLVL_LO_gc = (0x01<<2), /* Low Level */ + RTC_COMPINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + RTC_COMPINTLVL_HI_gc = (0x03<<2), /* High Level */ +} RTC_COMPINTLVL_t; + +/* Overflow Interrupt level */ +typedef enum RTC_OVFINTLVL_enum +{ + RTC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + RTC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + RTC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + RTC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} RTC_OVFINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* EBI Chip Select Module */ +typedef struct EBI_CS_struct +{ + register8_t CTRLA; /* Chip Select Control Register A */ + register8_t CTRLB; /* Chip Select Control Register B */ + _WORDREGISTER(BASEADDR); /* Chip Select Base Address */ +} EBI_CS_t; + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* External Bus Interface */ +typedef struct EBI_struct +{ + register8_t CTRL; /* Control */ + register8_t SDRAMCTRLA; /* SDRAM Control Register A */ + register8_t reserved_0x02; + register8_t reserved_0x03; + _WORDREGISTER(REFRESH); /* SDRAM Refresh Period */ + _WORDREGISTER(INITDLY); /* SDRAM Initialization Delay */ + register8_t SDRAMCTRLB; /* SDRAM Control Register B */ + register8_t SDRAMCTRLC; /* SDRAM Control Register C */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + EBI_CS_t CS0; /* Chip Select 0 */ + EBI_CS_t CS1; /* Chip Select 1 */ + EBI_CS_t CS2; /* Chip Select 2 */ + EBI_CS_t CS3; /* Chip Select 3 */ +} EBI_t; + +/* Chip Select adress space */ +typedef enum EBI_CS_ASPACE_enum +{ + EBI_CS_ASPACE_256B_gc = (0x00<<2), /* 256 bytes */ + EBI_CS_ASPACE_512B_gc = (0x01<<2), /* 512 bytes */ + EBI_CS_ASPACE_1KB_gc = (0x02<<2), /* 1K bytes */ + EBI_CS_ASPACE_2KB_gc = (0x03<<2), /* 2K bytes */ + EBI_CS_ASPACE_4KB_gc = (0x04<<2), /* 4K bytes */ + EBI_CS_ASPACE_8KB_gc = (0x05<<2), /* 8K bytes */ + EBI_CS_ASPACE_16KB_gc = (0x06<<2), /* 16K bytes */ + EBI_CS_ASPACE_32KB_gc = (0x07<<2), /* 32K bytes */ + EBI_CS_ASPACE_64KB_gc = (0x08<<2), /* 64K bytes */ + EBI_CS_ASPACE_128KB_gc = (0x09<<2), /* 128K bytes */ + EBI_CS_ASPACE_256KB_gc = (0x0A<<2), /* 256K bytes */ + EBI_CS_ASPACE_512KB_gc = (0x0B<<2), /* 512K bytes */ + EBI_CS_ASPACE_1MB_gc = (0x0C<<2), /* 1M bytes */ + EBI_CS_ASPACE_2MB_gc = (0x0D<<2), /* 2M bytes */ + EBI_CS_ASPACE_4MB_gc = (0x0E<<2), /* 4M bytes */ + EBI_CS_ASPACE_8MB_gc = (0x0F<<2), /* 8M bytes */ + EBI_CS_ASPACE_16M_gc = (0x10<<2), /* 16M bytes */ +} EBI_CS_ASPACE_t; + +/* */ +typedef enum EBI_CS_SRWS_enum +{ + EBI_CS_SRWS_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_CS_SRWS_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_CS_SRWS_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_CS_SRWS_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_CS_SRWS_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_CS_SRWS_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_CS_SRWS_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_CS_SRWS_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_CS_SRWS_t; + +/* Chip Select address mode */ +typedef enum EBI_CS_MODE_enum +{ + EBI_CS_MODE_DISABLED_gc = (0x00<<0), /* Chip Select Disabled */ + EBI_CS_MODE_SRAM_gc = (0x01<<0), /* Chip Select in SRAM mode */ + EBI_CS_MODE_LPC_gc = (0x02<<0), /* Chip Select in SRAM LPC mode */ + EBI_CS_MODE_SDRAM_gc = (0x03<<0), /* Chip Select in SDRAM mode */ +} EBI_CS_MODE_t; + +/* Chip Select SDRAM mode */ +typedef enum EBI_CS_SDMODE_enum +{ + EBI_CS_SDMODE_NORMAL_gc = (0x00<<0), /* Normal mode */ + EBI_CS_SDMODE_LOAD_gc = (0x01<<0), /* Load Mode Register command mode */ +} EBI_CS_SDMODE_t; + +/* */ +typedef enum EBI_SDDATAW_enum +{ + EBI_SDDATAW_4BIT_gc = (0x00<<6), /* 4-bit data bus */ + EBI_SDDATAW_8BIT_gc = (0x01<<6), /* 8-bit data bus */ +} EBI_SDDATAW_t; + +/* */ +typedef enum EBI_LPCMODE_enum +{ + EBI_LPCMODE_ALE1_gc = (0x00<<4), /* Data muxed with addr byte 0 */ + EBI_LPCMODE_ALE12_gc = (0x02<<4), /* Data muxed with addr byte 0 and 1 */ +} EBI_LPCMODE_t; + +/* */ +typedef enum EBI_SRMODE_enum +{ + EBI_SRMODE_ALE1_gc = (0x00<<2), /* Addr byte 0 muxed with 1 */ + EBI_SRMODE_ALE2_gc = (0x01<<2), /* Addr byte 0 muxed with 2 */ + EBI_SRMODE_ALE12_gc = (0x02<<2), /* Addr byte 0 muxed with 1 and 2 */ + EBI_SRMODE_NOALE_gc = (0x03<<2), /* No addr muxing */ +} EBI_SRMODE_t; + +/* */ +typedef enum EBI_IFMODE_enum +{ + EBI_IFMODE_DISABLED_gc = (0x00<<0), /* EBI Disabled */ + EBI_IFMODE_3PORT_gc = (0x01<<0), /* 3-port mode */ + EBI_IFMODE_4PORT_gc = (0x02<<0), /* 4-port mode */ + EBI_IFMODE_2PORT_gc = (0x03<<0), /* 2-port mode */ +} EBI_IFMODE_t; + +/* */ +typedef enum EBI_SDCOL_enum +{ + EBI_SDCOL_8BIT_gc = (0x00<<0), /* 8 column bits */ + EBI_SDCOL_9BIT_gc = (0x01<<0), /* 9 column bits */ + EBI_SDCOL_10BIT_gc = (0x02<<0), /* 10 column bits */ + EBI_SDCOL_11BIT_gc = (0x03<<0), /* 11 column bits */ +} EBI_SDCOL_t; + +/* */ +typedef enum EBI_MRDLY_enum +{ + EBI_MRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_MRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_MRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_MRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_MRDLY_t; + +/* */ +typedef enum EBI_ROWCYCDLY_enum +{ + EBI_ROWCYCDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ROWCYCDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ROWCYCDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ROWCYCDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ROWCYCDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ROWCYCDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ROWCYCDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ROWCYCDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ROWCYCDLY_t; + +/* */ +typedef enum EBI_RPDLY_enum +{ + EBI_RPDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_RPDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_RPDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_RPDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_RPDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_RPDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_RPDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_RPDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_RPDLY_t; + +/* */ +typedef enum EBI_WRDLY_enum +{ + EBI_WRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_WRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_WRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_WRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_WRDLY_t; + +/* */ +typedef enum EBI_ESRDLY_enum +{ + EBI_ESRDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ESRDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ESRDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ESRDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ESRDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ESRDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ESRDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ESRDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ESRDLY_t; + +/* */ +typedef enum EBI_ROWCOLDLY_enum +{ + EBI_ROWCOLDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_ROWCOLDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_ROWCOLDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_ROWCOLDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_ROWCOLDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_ROWCOLDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_ROWCOLDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_ROWCOLDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_ROWCOLDLY_t; + + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_MASTER_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t STATUS; /* Status Register */ + register8_t BAUD; /* Baurd Rate Control Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_MASTER_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_SLAVE_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t STATUS; /* Status Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_SLAVE_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* Two-Wire Interface */ +typedef struct TWI_struct +{ + register8_t CTRL; /* TWI Common Control Register */ + TWI_MASTER_t MASTER; /* TWI master module */ + TWI_SLAVE_t SLAVE; /* TWI slave module */ +} TWI_t; + +/* Master Interrupt Level */ +typedef enum TWI_MASTER_INTLVL_enum +{ + TWI_MASTER_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_MASTER_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_MASTER_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_MASTER_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_MASTER_INTLVL_t; + +/* Inactive Timeout */ +typedef enum TWI_MASTER_TIMEOUT_enum +{ + TWI_MASTER_TIMEOUT_DISABLED_gc = (0x00<<2), /* Bus Timeout Disabled */ + TWI_MASTER_TIMEOUT_50US_gc = (0x01<<2), /* 50 Microseconds */ + TWI_MASTER_TIMEOUT_100US_gc = (0x02<<2), /* 100 Microseconds */ + TWI_MASTER_TIMEOUT_200US_gc = (0x03<<2), /* 200 Microseconds */ +} TWI_MASTER_TIMEOUT_t; + +/* Master Command */ +typedef enum TWI_MASTER_CMD_enum +{ + TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ + TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ + TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ +} TWI_MASTER_CMD_t; + +/* Master Bus State */ +typedef enum TWI_MASTER_BUSSTATE_enum +{ + TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ + TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ + TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ + TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ +} TWI_MASTER_BUSSTATE_t; + +/* Slave Interrupt Level */ +typedef enum TWI_SLAVE_INTLVL_enum +{ + TWI_SLAVE_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_SLAVE_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_SLAVE_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_SLAVE_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_SLAVE_INTLVL_t; + +/* Slave Command */ +typedef enum TWI_SLAVE_CMD_enum +{ + TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ + TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ +} TWI_SLAVE_CMD_t; + + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O port Configuration */ +typedef struct PORTCFG_struct +{ + register8_t MPCMASK; /* Multi-pin Configuration Mask */ + register8_t reserved_0x01; + register8_t VPCTRLA; /* Virtual Port Control Register A */ + register8_t VPCTRLB; /* Virtual Port Control Register B */ + register8_t CLKEVOUT; /* Clock and Event Out Register */ +} PORTCFG_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* Virtual Port */ +typedef struct VPORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t OUT; /* I/O Port Output */ + register8_t IN; /* I/O Port Input */ + register8_t INTFLAGS; /* Interrupt Flag Register */ +} VPORT_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O Ports */ +typedef struct PORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t DIRSET; /* I/O Port Data Direction Set */ + register8_t DIRCLR; /* I/O Port Data Direction Clear */ + register8_t DIRTGL; /* I/O Port Data Direction Toggle */ + register8_t OUT; /* I/O Port Output */ + register8_t OUTSET; /* I/O Port Output Set */ + register8_t OUTCLR; /* I/O Port Output Clear */ + register8_t OUTTGL; /* I/O Port Output Toggle */ + register8_t IN; /* I/O port Input */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INT0MASK; /* Port Interrupt 0 Mask */ + register8_t INT1MASK; /* Port Interrupt 1 Mask */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t PIN0CTRL; /* Pin 0 Control Register */ + register8_t PIN1CTRL; /* Pin 1 Control Register */ + register8_t PIN2CTRL; /* Pin 2 Control Register */ + register8_t PIN3CTRL; /* Pin 3 Control Register */ + register8_t PIN4CTRL; /* Pin 4 Control Register */ + register8_t PIN5CTRL; /* Pin 5 Control Register */ + register8_t PIN6CTRL; /* Pin 6 Control Register */ + register8_t PIN7CTRL; /* Pin 7 Control Register */ +} PORT_t; + +/* Virtual Port 0 Mapping */ +typedef enum PORTCFG_VP0MAP_enum +{ + PORTCFG_VP0MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP0MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP0MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP0MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP0MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP0MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP0MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP0MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP0MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP0MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP0MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP0MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP0MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP0MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP0MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP0MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP0MAP_t; + +/* Virtual Port 1 Mapping */ +typedef enum PORTCFG_VP1MAP_enum +{ + PORTCFG_VP1MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP1MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP1MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP1MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP1MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP1MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP1MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP1MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP1MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP1MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP1MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP1MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP1MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP1MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP1MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP1MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP1MAP_t; + +/* Virtual Port 2 Mapping */ +typedef enum PORTCFG_VP2MAP_enum +{ + PORTCFG_VP2MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP2MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP2MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP2MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP2MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP2MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP2MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP2MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP2MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP2MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP2MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP2MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP2MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP2MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP2MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP2MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP2MAP_t; + +/* Virtual Port 3 Mapping */ +typedef enum PORTCFG_VP3MAP_enum +{ + PORTCFG_VP3MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP3MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP3MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP3MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP3MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP3MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP3MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP3MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP3MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP3MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP3MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP3MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP3MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP3MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP3MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP3MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP3MAP_t; + +/* Clock Output Port */ +typedef enum PORTCFG_CLKOUT_enum +{ + PORTCFG_CLKOUT_OFF_gc = (0x00<<0), /* Clock Output Disabled */ + PORTCFG_CLKOUT_PC7_gc = (0x01<<0), /* Clock Output on Port C pin 7 */ + PORTCFG_CLKOUT_PD7_gc = (0x02<<0), /* Clock Output on Port D pin 7 */ + PORTCFG_CLKOUT_PE7_gc = (0x03<<0), /* Clock Output on Port E pin 7 */ +} PORTCFG_CLKOUT_t; + +/* Event Output Port */ +typedef enum PORTCFG_EVOUT_enum +{ + PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ + PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ + PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ + PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ +} PORTCFG_EVOUT_t; + +/* Port Interrupt 0 Level */ +typedef enum PORT_INT0LVL_enum +{ + PORT_INT0LVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + PORT_INT0LVL_LO_gc = (0x01<<0), /* Low Level */ + PORT_INT0LVL_MED_gc = (0x02<<0), /* Medium Level */ + PORT_INT0LVL_HI_gc = (0x03<<0), /* High Level */ +} PORT_INT0LVL_t; + +/* Port Interrupt 1 Level */ +typedef enum PORT_INT1LVL_enum +{ + PORT_INT1LVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + PORT_INT1LVL_LO_gc = (0x01<<2), /* Low Level */ + PORT_INT1LVL_MED_gc = (0x02<<2), /* Medium Level */ + PORT_INT1LVL_HI_gc = (0x03<<2), /* High Level */ +} PORT_INT1LVL_t; + +/* Output/Pull Configuration */ +typedef enum PORT_OPC_enum +{ + PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ + PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ + PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ + PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ + PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ + PORT_OPC_WIREDAND_gc = (0x05<<3), /* Wired AND */ + PORT_OPC_WIREDORPULL_gc = (0x06<<3), /* Wired OR w/ Pull-down */ + PORT_OPC_WIREDANDPULL_gc = (0x07<<3), /* Wired AND w/ Pull-up */ +} PORT_OPC_t; + +/* Input/Sense Configuration */ +typedef enum PORT_ISC_enum +{ + PORT_ISC_BOTHEDGES_gc = (0x00<<0), /* Sense Both Edges */ + PORT_ISC_RISING_gc = (0x01<<0), /* Sense Rising Edge */ + PORT_ISC_FALLING_gc = (0x02<<0), /* Sense Falling Edge */ + PORT_ISC_LEVEL_gc = (0x03<<0), /* Sense Level (Transparent For Events) */ + PORT_ISC_INPUT_DISABLE_gc = (0x07<<0), /* Disable Digital Input Buffer */ +} PORT_ISC_t; + + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 0 */ +typedef struct TC0_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + _WORDREGISTER(CCC); /* Compare or Capture C */ + _WORDREGISTER(CCD); /* Compare or Capture D */ + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ + _WORDREGISTER(CCCBUF); /* Compare Or Capture C Buffer */ + _WORDREGISTER(CCDBUF); /* Compare Or Capture D Buffer */ +} TC0_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 1 */ +typedef struct TC1_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t reserved_0x2E; + register8_t reserved_0x2F; + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ +} TC1_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* Advanced Waveform Extension */ +typedef struct AWEX_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t FDEVMASK; /* Fault Detection Event Mask */ + register8_t FDCTRL; /* Fault Detection Control Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x05; + register8_t DTBOTH; /* Dead Time Both Sides */ + register8_t DTBOTHBUF; /* Dead Time Both Sides Buffer */ + register8_t DTLS; /* Dead Time Low Side */ + register8_t DTHS; /* Dead Time High Side */ + register8_t DTLSBUF; /* Dead Time Low Side Buffer */ + register8_t DTHSBUF; /* Dead Time High Side Buffer */ + register8_t OUTOVEN; /* Output Override Enable */ +} AWEX_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* High-Resolution Extension */ +typedef struct HIRES_struct +{ + register8_t CTRL; /* Control Register */ +} HIRES_t; + +/* Clock Selection */ +typedef enum TC_CLKSEL_enum +{ + TC_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ + TC_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ + TC_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ + TC_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ + TC_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ + TC_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ + TC_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ + TC_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ + TC_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_CLKSEL_EVCH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_CLKSEL_EVCH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_CLKSEL_EVCH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_CLKSEL_EVCH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_CLKSEL_t; + +/* Waveform Generation Mode */ +typedef enum TC_WGMODE_enum +{ + TC_WGMODE_NORMAL_gc = (0x00<<0), /* Normal Mode */ + TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ + TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ + TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ + TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on TOP and BOTTOM */ + TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ +} TC_WGMODE_t; + +/* Event Action */ +typedef enum TC_EVACT_enum +{ + TC_EVACT_OFF_gc = (0x00<<5), /* No Event Action */ + TC_EVACT_CAPT_gc = (0x01<<5), /* Input Capture */ + TC_EVACT_UPDOWN_gc = (0x02<<5), /* Externally Controlled Up/Down Count */ + TC_EVACT_QDEC_gc = (0x03<<5), /* Quadrature Decode */ + TC_EVACT_RESTART_gc = (0x04<<5), /* Restart */ + TC_EVACT_FRW_gc = (0x05<<5), /* Frequency Capture */ + TC_EVACT_PW_gc = (0x06<<5), /* Pulse-width Capture */ +} TC_EVACT_t; + +/* Event Selection */ +typedef enum TC_EVSEL_enum +{ + TC_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + TC_EVSEL_CH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_EVSEL_CH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_EVSEL_CH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_EVSEL_CH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_EVSEL_CH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_EVSEL_CH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_EVSEL_CH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_EVSEL_CH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_EVSEL_t; + +/* Error Interrupt Level */ +typedef enum TC_ERRINTLVL_enum +{ + TC_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_ERRINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_ERRINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_ERRINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_ERRINTLVL_t; + +/* Overflow Interrupt Level */ +typedef enum TC_OVFINTLVL_enum +{ + TC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_OVFINTLVL_t; + +/* Compare or Capture D Interrupt Level */ +typedef enum TC_CCDINTLVL_enum +{ + TC_CCDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TC_CCDINTLVL_LO_gc = (0x01<<6), /* Low Level */ + TC_CCDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TC_CCDINTLVL_HI_gc = (0x03<<6), /* High Level */ +} TC_CCDINTLVL_t; + +/* Compare or Capture C Interrupt Level */ +typedef enum TC_CCCINTLVL_enum +{ + TC_CCCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + TC_CCCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + TC_CCCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + TC_CCCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} TC_CCCINTLVL_t; + +/* Compare or Capture B Interrupt Level */ +typedef enum TC_CCBINTLVL_enum +{ + TC_CCBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_CCBINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_CCBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_CCBINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_CCBINTLVL_t; + +/* Compare or Capture A Interrupt Level */ +typedef enum TC_CCAINTLVL_enum +{ + TC_CCAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_CCAINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_CCAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_CCAINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_CCAINTLVL_t; + +/* Timer/Counter Command */ +typedef enum TC_CMD_enum +{ + TC_CMD_NONE_gc = (0x00<<2), /* No Command */ + TC_CMD_UPDATE_gc = (0x01<<2), /* Force Update */ + TC_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ + TC_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ +} TC_CMD_t; + +/* Fault Detect Action */ +typedef enum AWEX_FDACT_enum +{ + AWEX_FDACT_NONE_gc = (0x00<<0), /* No Fault Protection */ + AWEX_FDACT_CLEAROE_gc = (0x01<<0), /* Clear Output Enable Bits */ + AWEX_FDACT_CLEARDIR_gc = (0x03<<0), /* Clear I/O Port Direction Bits */ +} AWEX_FDACT_t; + +/* High Resolution Enable */ +typedef enum HIRES_HREN_enum +{ + HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ + HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ + HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ + HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ +} HIRES_HREN_t; + + +/* +-------------------------------------------------------------------------- +USART - Universal Asynchronous Receiver-Transmitter +-------------------------------------------------------------------------- +*/ + +/* Universal Synchronous/Asynchronous Receiver/Transmitter */ +typedef struct USART_struct +{ + register8_t DATA; /* Data Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x02; + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t BAUDCTRLA; /* Baud Rate Control Register A */ + register8_t BAUDCTRLB; /* Baud Rate Control Register B */ +} USART_t; + +/* Receive Complete Interrupt level */ +typedef enum USART_RXCINTLVL_enum +{ + USART_RXCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + USART_RXCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + USART_RXCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + USART_RXCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} USART_RXCINTLVL_t; + +/* Transmit Complete Interrupt level */ +typedef enum USART_TXCINTLVL_enum +{ + USART_TXCINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + USART_TXCINTLVL_LO_gc = (0x01<<2), /* Low Level */ + USART_TXCINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + USART_TXCINTLVL_HI_gc = (0x03<<2), /* High Level */ +} USART_TXCINTLVL_t; + +/* Data Register Empty Interrupt level */ +typedef enum USART_DREINTLVL_enum +{ + USART_DREINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + USART_DREINTLVL_LO_gc = (0x01<<0), /* Low Level */ + USART_DREINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + USART_DREINTLVL_HI_gc = (0x03<<0), /* High Level */ +} USART_DREINTLVL_t; + +/* Character Size */ +typedef enum USART_CHSIZE_enum +{ + USART_CHSIZE_5BIT_gc = (0x00<<0), /* Character size: 5 bit */ + USART_CHSIZE_6BIT_gc = (0x01<<0), /* Character size: 6 bit */ + USART_CHSIZE_7BIT_gc = (0x02<<0), /* Character size: 7 bit */ + USART_CHSIZE_8BIT_gc = (0x03<<0), /* Character size: 8 bit */ + USART_CHSIZE_9BIT_gc = (0x07<<0), /* Character size: 9 bit */ +} USART_CHSIZE_t; + +/* Communication Mode */ +typedef enum USART_CMODE_enum +{ + USART_CMODE_ASYNCHRONOUS_gc = (0x00<<6), /* Asynchronous Mode */ + USART_CMODE_SYNCHRONOUS_gc = (0x01<<6), /* Synchronous Mode */ + USART_CMODE_IRDA_gc = (0x02<<6), /* IrDA Mode */ + USART_CMODE_MSPI_gc = (0x03<<6), /* Master SPI Mode */ +} USART_CMODE_t; + +/* Parity Mode */ +typedef enum USART_PMODE_enum +{ + USART_PMODE_DISABLED_gc = (0x00<<4), /* No Parity */ + USART_PMODE_EVEN_gc = (0x02<<4), /* Even Parity */ + USART_PMODE_ODD_gc = (0x03<<4), /* Odd Parity */ +} USART_PMODE_t; + + +/* +-------------------------------------------------------------------------- +SPI - Serial Peripheral Interface +-------------------------------------------------------------------------- +*/ + +/* Serial Peripheral Interface */ +typedef struct SPI_struct +{ + register8_t CTRL; /* Control Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t STATUS; /* Status Register */ + register8_t DATA; /* Data Register */ +} SPI_t; + +/* SPI Mode */ +typedef enum SPI_MODE_enum +{ + SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */ + SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */ + SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */ + SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */ +} SPI_MODE_t; + +/* Prescaler setting */ +typedef enum SPI_PRESCALER_enum +{ + SPI_PRESCALER_DIV4_gc = (0x00<<0), /* System Clock / 4 */ + SPI_PRESCALER_DIV16_gc = (0x01<<0), /* System Clock / 16 */ + SPI_PRESCALER_DIV64_gc = (0x02<<0), /* System Clock / 64 */ + SPI_PRESCALER_DIV128_gc = (0x03<<0), /* System Clock / 128 */ +} SPI_PRESCALER_t; + +/* Interrupt level */ +typedef enum SPI_INTLVL_enum +{ + SPI_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + SPI_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + SPI_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + SPI_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} SPI_INTLVL_t; + + +/* +-------------------------------------------------------------------------- +IRCOM - IR Communication Module +-------------------------------------------------------------------------- +*/ + +/* IR Communication Module */ +typedef struct IRCOM_struct +{ + register8_t CTRL; /* Control Register */ + register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ + register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ +} IRCOM_t; + +/* Event channel selection */ +typedef enum IRDA_EVSEL_enum +{ + IRDA_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + IRDA_EVSEL_0_gc = (0x08<<0), /* Event Channel 0 */ + IRDA_EVSEL_1_gc = (0x09<<0), /* Event Channel 1 */ + IRDA_EVSEL_2_gc = (0x0A<<0), /* Event Channel 2 */ + IRDA_EVSEL_3_gc = (0x0B<<0), /* Event Channel 3 */ + IRDA_EVSEL_4_gc = (0x0C<<0), /* Event Channel 4 */ + IRDA_EVSEL_5_gc = (0x0D<<0), /* Event Channel 5 */ + IRDA_EVSEL_6_gc = (0x0E<<0), /* Event Channel 6 */ + IRDA_EVSEL_7_gc = (0x0F<<0), /* Event Channel 7 */ +} IRDA_EVSEL_t; + + +/* +-------------------------------------------------------------------------- +AES - AES Module +-------------------------------------------------------------------------- +*/ + +/* AES Module */ +typedef struct AES_struct +{ + register8_t CTRL; /* AES Control Register */ + register8_t STATUS; /* AES Status Register */ + register8_t STATE; /* AES State Register */ + register8_t KEY; /* AES Key Register */ + register8_t INTCTRL; /* AES Interrupt Control Register */ +} AES_t; + +/* Interrupt level */ +typedef enum AES_INTLVL_enum +{ + AES_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + AES_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + AES_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + AES_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} AES_INTLVL_t; + + + +/* +========================================================================== +IO Module Instances. Mapped to memory. +========================================================================== +*/ + +#define GPIO (*(GPIO_t *) 0x0000) /* General Purpose IO Registers */ +#define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port 0 */ +#define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port 1 */ +#define VPORT2 (*(VPORT_t *) 0x0018) /* Virtual Port 2 */ +#define VPORT3 (*(VPORT_t *) 0x001C) /* Virtual Port 3 */ +#define OCD (*(OCD_t *) 0x002E) /* On-Chip Debug System */ +#define CPU (*(CPU_t *) 0x0030) /* CPU Registers */ +#define CLK (*(CLK_t *) 0x0040) /* Clock System */ +#define SLEEP (*(SLEEP_t *) 0x0048) /* Sleep Controller */ +#define OSC (*(OSC_t *) 0x0050) /* Oscillator Control */ +#define DFLLRC32M (*(DFLL_t *) 0x0060) /* DFLL for 32MHz RC Oscillator */ +#define DFLLRC2M (*(DFLL_t *) 0x0068) /* DFLL for 2MHz RC Oscillator */ +#define PR (*(PR_t *) 0x0070) /* Power Reduction */ +#define RST (*(RST_t *) 0x0078) /* Reset Controller */ +#define WDT (*(WDT_t *) 0x0080) /* Watch-Dog Timer */ +#define MCU (*(MCU_t *) 0x0090) /* MCU Control */ +#define PMIC (*(PMIC_t *) 0x00A0) /* Programmable Interrupt Controller */ +#define PORTCFG (*(PORTCFG_t *) 0x00B0) /* Port Configuration */ +#define AES (*(AES_t *) 0x00C0) /* AES Crypto Module */ +#define DMA (*(DMA_t *) 0x0100) /* DMA Controller */ +#define EVSYS (*(EVSYS_t *) 0x0180) /* Event System */ +#define NVM (*(NVM_t *) 0x01C0) /* Non Volatile Memory Controller */ +#define ADCA (*(ADC_t *) 0x0200) /* Analog to Digital Converter A */ +#define ADCB (*(ADC_t *) 0x0240) /* Analog to Digital Converter B */ +#define DACB (*(DAC_t *) 0x0320) /* Digital to Analog Converter B */ +#define ACA (*(AC_t *) 0x0380) /* Analog Comparator A */ +#define ACB (*(AC_t *) 0x0390) /* Analog Comparator B */ +#define RTC (*(RTC_t *) 0x0400) /* Real-Time Counter */ +#define TWIC (*(TWI_t *) 0x0480) /* Two-Wire Interface C */ +#define TWIE (*(TWI_t *) 0x04A0) /* Two-Wire Interface E */ +#define PORTA (*(PORT_t *) 0x0600) /* Port A */ +#define PORTB (*(PORT_t *) 0x0620) /* Port B */ +#define PORTC (*(PORT_t *) 0x0640) /* Port C */ +#define PORTD (*(PORT_t *) 0x0660) /* Port D */ +#define PORTE (*(PORT_t *) 0x0680) /* Port E */ +#define PORTF (*(PORT_t *) 0x06A0) /* Port F */ +#define PORTR (*(PORT_t *) 0x07E0) /* Port R */ +#define TCC0 (*(TC0_t *) 0x0800) /* Timer/Counter C0 */ +#define TCC1 (*(TC1_t *) 0x0840) /* Timer/Counter C1 */ +#define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension C */ +#define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension C */ +#define USARTC0 (*(USART_t *) 0x08A0) /* Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC1 (*(USART_t *) 0x08B0) /* Universal Asynchronous Receiver-Transmitter C1 */ +#define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface C */ +#define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ +#define TCD0 (*(TC0_t *) 0x0900) /* Timer/Counter D0 */ +#define TCD1 (*(TC1_t *) 0x0940) /* Timer/Counter D1 */ +#define HIRESD (*(HIRES_t *) 0x0990) /* High-Resolution Extension D */ +#define USARTD0 (*(USART_t *) 0x09A0) /* Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD1 (*(USART_t *) 0x09B0) /* Universal Asynchronous Receiver-Transmitter D1 */ +#define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface D */ +#define TCE0 (*(TC0_t *) 0x0A00) /* Timer/Counter E0 */ +#define TCE1 (*(TC1_t *) 0x0A40) /* Timer/Counter E1 */ +#define AWEXE (*(AWEX_t *) 0x0A80) /* Advanced Waveform Extension E */ +#define HIRESE (*(HIRES_t *) 0x0A90) /* High-Resolution Extension E */ +#define USARTE0 (*(USART_t *) 0x0AA0) /* Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE1 (*(USART_t *) 0x0AB0) /* Universal Asynchronous Receiver-Transmitter E1 */ +#define SPIE (*(SPI_t *) 0x0AC0) /* Serial Peripheral Interface E */ +#define TCF0 (*(TC0_t *) 0x0B00) /* Timer/Counter F0 */ +#define HIRESF (*(HIRES_t *) 0x0B90) /* High-Resolution Extension F */ +#define USARTF0 (*(USART_t *) 0x0BA0) /* Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF1 (*(USART_t *) 0x0BB0) /* Universal Asynchronous Receiver-Transmitter F1 */ +#define SPIF (*(SPI_t *) 0x0BC0) /* Serial Peripheral Interface F */ + + +#endif /* !defined (__ASSEMBLER__) */ + + +/* ========== Flattened fully qualified IO register names ========== */ + +/* GPIO - General Purpose IO Registers */ +#define GPIO_GPIO0 _SFR_MEM8(0x0000) +#define GPIO_GPIO1 _SFR_MEM8(0x0001) +#define GPIO_GPIO2 _SFR_MEM8(0x0002) +#define GPIO_GPIO3 _SFR_MEM8(0x0003) +#define GPIO_GPIO4 _SFR_MEM8(0x0004) +#define GPIO_GPIO5 _SFR_MEM8(0x0005) +#define GPIO_GPIO6 _SFR_MEM8(0x0006) +#define GPIO_GPIO7 _SFR_MEM8(0x0007) +#define GPIO_GPIO8 _SFR_MEM8(0x0008) +#define GPIO_GPIO9 _SFR_MEM8(0x0009) +#define GPIO_GPIOA _SFR_MEM8(0x000A) +#define GPIO_GPIOB _SFR_MEM8(0x000B) +#define GPIO_GPIOC _SFR_MEM8(0x000C) +#define GPIO_GPIOD _SFR_MEM8(0x000D) +#define GPIO_GPIOE _SFR_MEM8(0x000E) +#define GPIO_GPIOF _SFR_MEM8(0x000F) + +/* VPORT0 - Virtual Port 0 */ +#define VPORT0_DIR _SFR_MEM8(0x0010) +#define VPORT0_OUT _SFR_MEM8(0x0011) +#define VPORT0_IN _SFR_MEM8(0x0012) +#define VPORT0_INTFLAGS _SFR_MEM8(0x0013) + +/* VPORT1 - Virtual Port 1 */ +#define VPORT1_DIR _SFR_MEM8(0x0014) +#define VPORT1_OUT _SFR_MEM8(0x0015) +#define VPORT1_IN _SFR_MEM8(0x0016) +#define VPORT1_INTFLAGS _SFR_MEM8(0x0017) + +/* VPORT2 - Virtual Port 2 */ +#define VPORT2_DIR _SFR_MEM8(0x0018) +#define VPORT2_OUT _SFR_MEM8(0x0019) +#define VPORT2_IN _SFR_MEM8(0x001A) +#define VPORT2_INTFLAGS _SFR_MEM8(0x001B) + +/* VPORT3 - Virtual Port 3 */ +#define VPORT3_DIR _SFR_MEM8(0x001C) +#define VPORT3_OUT _SFR_MEM8(0x001D) +#define VPORT3_IN _SFR_MEM8(0x001E) +#define VPORT3_INTFLAGS _SFR_MEM8(0x001F) + +/* OCD - On-Chip Debug System */ +#define OCD_OCDR0 _SFR_MEM8(0x002E) +#define OCD_OCDR1 _SFR_MEM8(0x002F) + +/* CPU - CPU Registers */ +#define CPU_CCP _SFR_MEM8(0x0034) +#define CPU_RAMPD _SFR_MEM8(0x0038) +#define CPU_RAMPX _SFR_MEM8(0x0039) +#define CPU_RAMPY _SFR_MEM8(0x003A) +#define CPU_RAMPZ _SFR_MEM8(0x003B) +#define CPU_EIND _SFR_MEM8(0x003C) +#define CPU_SPL _SFR_MEM8(0x003D) +#define CPU_SPH _SFR_MEM8(0x003E) +#define CPU_SREG _SFR_MEM8(0x003F) + +/* CLK - Clock System */ +#define CLK_CTRL _SFR_MEM8(0x0040) +#define CLK_PSCTRL _SFR_MEM8(0x0041) +#define CLK_LOCK _SFR_MEM8(0x0042) +#define CLK_RTCCTRL _SFR_MEM8(0x0043) + +/* SLEEP - Sleep Controller */ +#define SLEEP_CTRL _SFR_MEM8(0x0048) + +/* OSC - Oscillator Control */ +#define OSC_CTRL _SFR_MEM8(0x0050) +#define OSC_STATUS _SFR_MEM8(0x0051) +#define OSC_XOSCCTRL _SFR_MEM8(0x0052) +#define OSC_XOSCFAIL _SFR_MEM8(0x0053) +#define OSC_RC32KCAL _SFR_MEM8(0x0054) +#define OSC_PLLCTRL _SFR_MEM8(0x0055) +#define OSC_DFLLCTRL _SFR_MEM8(0x0056) + +/* DFLLRC32M - DFLL for 32MHz RC Oscillator */ +#define DFLLRC32M_CTRL _SFR_MEM8(0x0060) +#define DFLLRC32M_CALA _SFR_MEM8(0x0062) +#define DFLLRC32M_CALB _SFR_MEM8(0x0063) +#define DFLLRC32M_OSCCNT0 _SFR_MEM8(0x0064) +#define DFLLRC32M_OSCCNT1 _SFR_MEM8(0x0065) +#define DFLLRC32M_OSCCNT2 _SFR_MEM8(0x0066) + +/* DFLLRC2M - DFLL for 2MHz RC Oscillator */ +#define DFLLRC2M_CTRL _SFR_MEM8(0x0068) +#define DFLLRC2M_CALA _SFR_MEM8(0x006A) +#define DFLLRC2M_CALB _SFR_MEM8(0x006B) +#define DFLLRC2M_OSCCNT0 _SFR_MEM8(0x006C) +#define DFLLRC2M_OSCCNT1 _SFR_MEM8(0x006D) +#define DFLLRC2M_OSCCNT2 _SFR_MEM8(0x006E) + +/* PR - Power Reduction */ +#define PR_PR _SFR_MEM8(0x0070) +#define PR_PRPA _SFR_MEM8(0x0071) +#define PR_PRPB _SFR_MEM8(0x0072) +#define PR_PRPC _SFR_MEM8(0x0073) +#define PR_PRPD _SFR_MEM8(0x0074) +#define PR_PRPE _SFR_MEM8(0x0075) +#define PR_PRPF _SFR_MEM8(0x0076) + +/* RST - Reset Controller */ +#define RST_STATUS _SFR_MEM8(0x0078) +#define RST_CTRL _SFR_MEM8(0x0079) + +/* WDT - Watch-Dog Timer */ +#define WDT_CTRL _SFR_MEM8(0x0080) +#define WDT_WINCTRL _SFR_MEM8(0x0081) +#define WDT_STATUS _SFR_MEM8(0x0082) + +/* MCU - MCU Control */ +#define MCU_DEVID0 _SFR_MEM8(0x0090) +#define MCU_DEVID1 _SFR_MEM8(0x0091) +#define MCU_DEVID2 _SFR_MEM8(0x0092) +#define MCU_REVID _SFR_MEM8(0x0093) +#define MCU_JTAGUID _SFR_MEM8(0x0094) +#define MCU_MCUCR _SFR_MEM8(0x0096) +#define MCU_EVSYSLOCK _SFR_MEM8(0x0098) +#define MCU_AWEXLOCK _SFR_MEM8(0x0099) + +/* PMIC - Programmable Interrupt Controller */ +#define PMIC_STATUS _SFR_MEM8(0x00A0) +#define PMIC_INTPRI _SFR_MEM8(0x00A1) +#define PMIC_CTRL _SFR_MEM8(0x00A2) + +/* PORTCFG - Port Configuration */ +#define PORTCFG_MPCMASK _SFR_MEM8(0x00B0) +#define PORTCFG_VPCTRLA _SFR_MEM8(0x00B2) +#define PORTCFG_VPCTRLB _SFR_MEM8(0x00B3) +#define PORTCFG_CLKEVOUT _SFR_MEM8(0x00B4) + +/* AES - AES Crypto Module */ +#define AES_CTRL _SFR_MEM8(0x00C0) +#define AES_STATUS _SFR_MEM8(0x00C1) +#define AES_STATE _SFR_MEM8(0x00C2) +#define AES_KEY _SFR_MEM8(0x00C3) +#define AES_INTCTRL _SFR_MEM8(0x00C4) + +/* DMA - DMA Controller */ +#define DMA_CTRL _SFR_MEM8(0x0100) +#define DMA_INTFLAGS _SFR_MEM8(0x0103) +#define DMA_STATUS _SFR_MEM8(0x0104) +#define DMA_TEMP _SFR_MEM16(0x0106) +#define DMA_CH0_CTRLA _SFR_MEM8(0x0110) +#define DMA_CH0_CTRLB _SFR_MEM8(0x0111) +#define DMA_CH0_ADDRCTRL _SFR_MEM8(0x0112) +#define DMA_CH0_TRIGSRC _SFR_MEM8(0x0113) +#define DMA_CH0_TRFCNT _SFR_MEM16(0x0114) +#define DMA_CH0_REPCNT _SFR_MEM8(0x0116) +#define DMA_CH0_SRCADDR0 _SFR_MEM8(0x0118) +#define DMA_CH0_SRCADDR1 _SFR_MEM8(0x0119) +#define DMA_CH0_SRCADDR2 _SFR_MEM8(0x011A) +#define DMA_CH0_DESTADDR0 _SFR_MEM8(0x011C) +#define DMA_CH0_DESTADDR1 _SFR_MEM8(0x011D) +#define DMA_CH0_DESTADDR2 _SFR_MEM8(0x011E) +#define DMA_CH1_CTRLA _SFR_MEM8(0x0120) +#define DMA_CH1_CTRLB _SFR_MEM8(0x0121) +#define DMA_CH1_ADDRCTRL _SFR_MEM8(0x0122) +#define DMA_CH1_TRIGSRC _SFR_MEM8(0x0123) +#define DMA_CH1_TRFCNT _SFR_MEM16(0x0124) +#define DMA_CH1_REPCNT _SFR_MEM8(0x0126) +#define DMA_CH1_SRCADDR0 _SFR_MEM8(0x0128) +#define DMA_CH1_SRCADDR1 _SFR_MEM8(0x0129) +#define DMA_CH1_SRCADDR2 _SFR_MEM8(0x012A) +#define DMA_CH1_DESTADDR0 _SFR_MEM8(0x012C) +#define DMA_CH1_DESTADDR1 _SFR_MEM8(0x012D) +#define DMA_CH1_DESTADDR2 _SFR_MEM8(0x012E) +#define DMA_CH2_CTRLA _SFR_MEM8(0x0130) +#define DMA_CH2_CTRLB _SFR_MEM8(0x0131) +#define DMA_CH2_ADDRCTRL _SFR_MEM8(0x0132) +#define DMA_CH2_TRIGSRC _SFR_MEM8(0x0133) +#define DMA_CH2_TRFCNT _SFR_MEM16(0x0134) +#define DMA_CH2_REPCNT _SFR_MEM8(0x0136) +#define DMA_CH2_SRCADDR0 _SFR_MEM8(0x0138) +#define DMA_CH2_SRCADDR1 _SFR_MEM8(0x0139) +#define DMA_CH2_SRCADDR2 _SFR_MEM8(0x013A) +#define DMA_CH2_DESTADDR0 _SFR_MEM8(0x013C) +#define DMA_CH2_DESTADDR1 _SFR_MEM8(0x013D) +#define DMA_CH2_DESTADDR2 _SFR_MEM8(0x013E) +#define DMA_CH3_CTRLA _SFR_MEM8(0x0140) +#define DMA_CH3_CTRLB _SFR_MEM8(0x0141) +#define DMA_CH3_ADDRCTRL _SFR_MEM8(0x0142) +#define DMA_CH3_TRIGSRC _SFR_MEM8(0x0143) +#define DMA_CH3_TRFCNT _SFR_MEM16(0x0144) +#define DMA_CH3_REPCNT _SFR_MEM8(0x0146) +#define DMA_CH3_SRCADDR0 _SFR_MEM8(0x0148) +#define DMA_CH3_SRCADDR1 _SFR_MEM8(0x0149) +#define DMA_CH3_SRCADDR2 _SFR_MEM8(0x014A) +#define DMA_CH3_DESTADDR0 _SFR_MEM8(0x014C) +#define DMA_CH3_DESTADDR1 _SFR_MEM8(0x014D) +#define DMA_CH3_DESTADDR2 _SFR_MEM8(0x014E) + +/* EVSYS - Event System */ +#define EVSYS_CH0MUX _SFR_MEM8(0x0180) +#define EVSYS_CH1MUX _SFR_MEM8(0x0181) +#define EVSYS_CH2MUX _SFR_MEM8(0x0182) +#define EVSYS_CH3MUX _SFR_MEM8(0x0183) +#define EVSYS_CH4MUX _SFR_MEM8(0x0184) +#define EVSYS_CH5MUX _SFR_MEM8(0x0185) +#define EVSYS_CH6MUX _SFR_MEM8(0x0186) +#define EVSYS_CH7MUX _SFR_MEM8(0x0187) +#define EVSYS_CH0CTRL _SFR_MEM8(0x0188) +#define EVSYS_CH1CTRL _SFR_MEM8(0x0189) +#define EVSYS_CH2CTRL _SFR_MEM8(0x018A) +#define EVSYS_CH3CTRL _SFR_MEM8(0x018B) +#define EVSYS_CH4CTRL _SFR_MEM8(0x018C) +#define EVSYS_CH5CTRL _SFR_MEM8(0x018D) +#define EVSYS_CH6CTRL _SFR_MEM8(0x018E) +#define EVSYS_CH7CTRL _SFR_MEM8(0x018F) +#define EVSYS_STROBE _SFR_MEM8(0x0190) +#define EVSYS_DATA _SFR_MEM8(0x0191) + +/* NVM - Non Volatile Memory Controller */ +#define NVM_ADDR0 _SFR_MEM8(0x01C0) +#define NVM_ADDR1 _SFR_MEM8(0x01C1) +#define NVM_ADDR2 _SFR_MEM8(0x01C2) +#define NVM_DATA0 _SFR_MEM8(0x01C4) +#define NVM_DATA1 _SFR_MEM8(0x01C5) +#define NVM_DATA2 _SFR_MEM8(0x01C6) +#define NVM_CMD _SFR_MEM8(0x01CA) +#define NVM_CTRLA _SFR_MEM8(0x01CB) +#define NVM_CTRLB _SFR_MEM8(0x01CC) +#define NVM_INTCTRL _SFR_MEM8(0x01CD) +#define NVM_STATUS _SFR_MEM8(0x01CF) +#define NVM_LOCKBITS _SFR_MEM8(0x01D0) + +/* ADCA - Analog to Digital Converter A */ +#define ADCA_CTRLA _SFR_MEM8(0x0200) +#define ADCA_CTRLB _SFR_MEM8(0x0201) +#define ADCA_REFCTRL _SFR_MEM8(0x0202) +#define ADCA_EVCTRL _SFR_MEM8(0x0203) +#define ADCA_PRESCALER _SFR_MEM8(0x0204) +#define ADCA_CALCTRL _SFR_MEM8(0x0205) +#define ADCA_INTFLAGS _SFR_MEM8(0x0206) +#define ADCA_CALIB _SFR_MEM8(0x020C) +#define ADCA_CH0RES _SFR_MEM16(0x0210) +#define ADCA_CH1RES _SFR_MEM16(0x0212) +#define ADCA_CH2RES _SFR_MEM16(0x0214) +#define ADCA_CH3RES _SFR_MEM16(0x0216) +#define ADCA_CMP _SFR_MEM16(0x0218) +#define ADCA_CH0_CTRL _SFR_MEM8(0x0220) +#define ADCA_CH0_MUXCTRL _SFR_MEM8(0x0221) +#define ADCA_CH0_INTCTRL _SFR_MEM8(0x0222) +#define ADCA_CH0_INTFLAGS _SFR_MEM8(0x0223) +#define ADCA_CH0_RES _SFR_MEM16(0x0224) +#define ADCA_CH1_CTRL _SFR_MEM8(0x0228) +#define ADCA_CH1_MUXCTRL _SFR_MEM8(0x0229) +#define ADCA_CH1_INTCTRL _SFR_MEM8(0x022A) +#define ADCA_CH1_INTFLAGS _SFR_MEM8(0x022B) +#define ADCA_CH1_RES _SFR_MEM16(0x022C) +#define ADCA_CH2_CTRL _SFR_MEM8(0x0230) +#define ADCA_CH2_MUXCTRL _SFR_MEM8(0x0231) +#define ADCA_CH2_INTCTRL _SFR_MEM8(0x0232) +#define ADCA_CH2_INTFLAGS _SFR_MEM8(0x0233) +#define ADCA_CH2_RES _SFR_MEM16(0x0234) +#define ADCA_CH3_CTRL _SFR_MEM8(0x0238) +#define ADCA_CH3_MUXCTRL _SFR_MEM8(0x0239) +#define ADCA_CH3_INTCTRL _SFR_MEM8(0x023A) +#define ADCA_CH3_INTFLAGS _SFR_MEM8(0x023B) +#define ADCA_CH3_RES _SFR_MEM16(0x023C) + +/* ADCB - Analog to Digital Converter B */ +#define ADCB_CTRLA _SFR_MEM8(0x0240) +#define ADCB_CTRLB _SFR_MEM8(0x0241) +#define ADCB_REFCTRL _SFR_MEM8(0x0242) +#define ADCB_EVCTRL _SFR_MEM8(0x0243) +#define ADCB_PRESCALER _SFR_MEM8(0x0244) +#define ADCB_CALCTRL _SFR_MEM8(0x0245) +#define ADCB_INTFLAGS _SFR_MEM8(0x0246) +#define ADCB_CALIB _SFR_MEM8(0x024C) +#define ADCB_CH0RES _SFR_MEM16(0x0250) +#define ADCB_CH1RES _SFR_MEM16(0x0252) +#define ADCB_CH2RES _SFR_MEM16(0x0254) +#define ADCB_CH3RES _SFR_MEM16(0x0256) +#define ADCB_CMP _SFR_MEM16(0x0258) +#define ADCB_CH0_CTRL _SFR_MEM8(0x0260) +#define ADCB_CH0_MUXCTRL _SFR_MEM8(0x0261) +#define ADCB_CH0_INTCTRL _SFR_MEM8(0x0262) +#define ADCB_CH0_INTFLAGS _SFR_MEM8(0x0263) +#define ADCB_CH0_RES _SFR_MEM16(0x0264) +#define ADCB_CH1_CTRL _SFR_MEM8(0x0268) +#define ADCB_CH1_MUXCTRL _SFR_MEM8(0x0269) +#define ADCB_CH1_INTCTRL _SFR_MEM8(0x026A) +#define ADCB_CH1_INTFLAGS _SFR_MEM8(0x026B) +#define ADCB_CH1_RES _SFR_MEM16(0x026C) +#define ADCB_CH2_CTRL _SFR_MEM8(0x0270) +#define ADCB_CH2_MUXCTRL _SFR_MEM8(0x0271) +#define ADCB_CH2_INTCTRL _SFR_MEM8(0x0272) +#define ADCB_CH2_INTFLAGS _SFR_MEM8(0x0273) +#define ADCB_CH2_RES _SFR_MEM16(0x0274) +#define ADCB_CH3_CTRL _SFR_MEM8(0x0278) +#define ADCB_CH3_MUXCTRL _SFR_MEM8(0x0279) +#define ADCB_CH3_INTCTRL _SFR_MEM8(0x027A) +#define ADCB_CH3_INTFLAGS _SFR_MEM8(0x027B) +#define ADCB_CH3_RES _SFR_MEM16(0x027C) + +/* DACB - Digital to Analog Converter B */ +#define DACB_CTRLA _SFR_MEM8(0x0320) +#define DACB_CTRLB _SFR_MEM8(0x0321) +#define DACB_CTRLC _SFR_MEM8(0x0322) +#define DACB_EVCTRL _SFR_MEM8(0x0323) +#define DACB_TIMCTRL _SFR_MEM8(0x0324) +#define DACB_STATUS _SFR_MEM8(0x0325) +#define DACB_GAINCAL _SFR_MEM8(0x0328) +#define DACB_OFFSETCAL _SFR_MEM8(0x0329) +#define DACB_CH0DATA _SFR_MEM16(0x0338) +#define DACB_CH1DATA _SFR_MEM16(0x033A) + +/* ACA - Analog Comparator A */ +#define ACA_AC0CTRL _SFR_MEM8(0x0380) +#define ACA_AC1CTRL _SFR_MEM8(0x0381) +#define ACA_AC0MUXCTRL _SFR_MEM8(0x0382) +#define ACA_AC1MUXCTRL _SFR_MEM8(0x0383) +#define ACA_CTRLA _SFR_MEM8(0x0384) +#define ACA_CTRLB _SFR_MEM8(0x0385) +#define ACA_WINCTRL _SFR_MEM8(0x0386) +#define ACA_STATUS _SFR_MEM8(0x0387) + +/* ACB - Analog Comparator B */ +#define ACB_AC0CTRL _SFR_MEM8(0x0390) +#define ACB_AC1CTRL _SFR_MEM8(0x0391) +#define ACB_AC0MUXCTRL _SFR_MEM8(0x0392) +#define ACB_AC1MUXCTRL _SFR_MEM8(0x0393) +#define ACB_CTRLA _SFR_MEM8(0x0394) +#define ACB_CTRLB _SFR_MEM8(0x0395) +#define ACB_WINCTRL _SFR_MEM8(0x0396) +#define ACB_STATUS _SFR_MEM8(0x0397) + +/* RTC - Real-Time Counter */ +#define RTC_CTRL _SFR_MEM8(0x0400) +#define RTC_STATUS _SFR_MEM8(0x0401) +#define RTC_INTCTRL _SFR_MEM8(0x0402) +#define RTC_INTFLAGS _SFR_MEM8(0x0403) +#define RTC_TEMP _SFR_MEM8(0x0404) +#define RTC_CNT _SFR_MEM16(0x0408) +#define RTC_PER _SFR_MEM16(0x040A) +#define RTC_COMP _SFR_MEM16(0x040C) + +/* TWIC - Two-Wire Interface C */ +#define TWIC_CTRL _SFR_MEM8(0x0480) +#define TWIC_MASTER_CTRLA _SFR_MEM8(0x0481) +#define TWIC_MASTER_CTRLB _SFR_MEM8(0x0482) +#define TWIC_MASTER_CTRLC _SFR_MEM8(0x0483) +#define TWIC_MASTER_STATUS _SFR_MEM8(0x0484) +#define TWIC_MASTER_BAUD _SFR_MEM8(0x0485) +#define TWIC_MASTER_ADDR _SFR_MEM8(0x0486) +#define TWIC_MASTER_DATA _SFR_MEM8(0x0487) +#define TWIC_SLAVE_CTRLA _SFR_MEM8(0x0488) +#define TWIC_SLAVE_CTRLB _SFR_MEM8(0x0489) +#define TWIC_SLAVE_STATUS _SFR_MEM8(0x048A) +#define TWIC_SLAVE_ADDR _SFR_MEM8(0x048B) +#define TWIC_SLAVE_DATA _SFR_MEM8(0x048C) + +/* TWIE - Two-Wire Interface E */ +#define TWIE_CTRL _SFR_MEM8(0x04A0) +#define TWIE_MASTER_CTRLA _SFR_MEM8(0x04A1) +#define TWIE_MASTER_CTRLB _SFR_MEM8(0x04A2) +#define TWIE_MASTER_CTRLC _SFR_MEM8(0x04A3) +#define TWIE_MASTER_STATUS _SFR_MEM8(0x04A4) +#define TWIE_MASTER_BAUD _SFR_MEM8(0x04A5) +#define TWIE_MASTER_ADDR _SFR_MEM8(0x04A6) +#define TWIE_MASTER_DATA _SFR_MEM8(0x04A7) +#define TWIE_SLAVE_CTRLA _SFR_MEM8(0x04A8) +#define TWIE_SLAVE_CTRLB _SFR_MEM8(0x04A9) +#define TWIE_SLAVE_STATUS _SFR_MEM8(0x04AA) +#define TWIE_SLAVE_ADDR _SFR_MEM8(0x04AB) +#define TWIE_SLAVE_DATA _SFR_MEM8(0x04AC) + +/* PORTA - Port A */ +#define PORTA_DIR _SFR_MEM8(0x0600) +#define PORTA_DIRSET _SFR_MEM8(0x0601) +#define PORTA_DIRCLR _SFR_MEM8(0x0602) +#define PORTA_DIRTGL _SFR_MEM8(0x0603) +#define PORTA_OUT _SFR_MEM8(0x0604) +#define PORTA_OUTSET _SFR_MEM8(0x0605) +#define PORTA_OUTCLR _SFR_MEM8(0x0606) +#define PORTA_OUTTGL _SFR_MEM8(0x0607) +#define PORTA_IN _SFR_MEM8(0x0608) +#define PORTA_INTCTRL _SFR_MEM8(0x0609) +#define PORTA_INT0MASK _SFR_MEM8(0x060A) +#define PORTA_INT1MASK _SFR_MEM8(0x060B) +#define PORTA_INTFLAGS _SFR_MEM8(0x060C) +#define PORTA_PIN0CTRL _SFR_MEM8(0x0610) +#define PORTA_PIN1CTRL _SFR_MEM8(0x0611) +#define PORTA_PIN2CTRL _SFR_MEM8(0x0612) +#define PORTA_PIN3CTRL _SFR_MEM8(0x0613) +#define PORTA_PIN4CTRL _SFR_MEM8(0x0614) +#define PORTA_PIN5CTRL _SFR_MEM8(0x0615) +#define PORTA_PIN6CTRL _SFR_MEM8(0x0616) +#define PORTA_PIN7CTRL _SFR_MEM8(0x0617) + +/* PORTB - Port B */ +#define PORTB_DIR _SFR_MEM8(0x0620) +#define PORTB_DIRSET _SFR_MEM8(0x0621) +#define PORTB_DIRCLR _SFR_MEM8(0x0622) +#define PORTB_DIRTGL _SFR_MEM8(0x0623) +#define PORTB_OUT _SFR_MEM8(0x0624) +#define PORTB_OUTSET _SFR_MEM8(0x0625) +#define PORTB_OUTCLR _SFR_MEM8(0x0626) +#define PORTB_OUTTGL _SFR_MEM8(0x0627) +#define PORTB_IN _SFR_MEM8(0x0628) +#define PORTB_INTCTRL _SFR_MEM8(0x0629) +#define PORTB_INT0MASK _SFR_MEM8(0x062A) +#define PORTB_INT1MASK _SFR_MEM8(0x062B) +#define PORTB_INTFLAGS _SFR_MEM8(0x062C) +#define PORTB_PIN0CTRL _SFR_MEM8(0x0630) +#define PORTB_PIN1CTRL _SFR_MEM8(0x0631) +#define PORTB_PIN2CTRL _SFR_MEM8(0x0632) +#define PORTB_PIN3CTRL _SFR_MEM8(0x0633) +#define PORTB_PIN4CTRL _SFR_MEM8(0x0634) +#define PORTB_PIN5CTRL _SFR_MEM8(0x0635) +#define PORTB_PIN6CTRL _SFR_MEM8(0x0636) +#define PORTB_PIN7CTRL _SFR_MEM8(0x0637) + +/* PORTC - Port C */ +#define PORTC_DIR _SFR_MEM8(0x0640) +#define PORTC_DIRSET _SFR_MEM8(0x0641) +#define PORTC_DIRCLR _SFR_MEM8(0x0642) +#define PORTC_DIRTGL _SFR_MEM8(0x0643) +#define PORTC_OUT _SFR_MEM8(0x0644) +#define PORTC_OUTSET _SFR_MEM8(0x0645) +#define PORTC_OUTCLR _SFR_MEM8(0x0646) +#define PORTC_OUTTGL _SFR_MEM8(0x0647) +#define PORTC_IN _SFR_MEM8(0x0648) +#define PORTC_INTCTRL _SFR_MEM8(0x0649) +#define PORTC_INT0MASK _SFR_MEM8(0x064A) +#define PORTC_INT1MASK _SFR_MEM8(0x064B) +#define PORTC_INTFLAGS _SFR_MEM8(0x064C) +#define PORTC_PIN0CTRL _SFR_MEM8(0x0650) +#define PORTC_PIN1CTRL _SFR_MEM8(0x0651) +#define PORTC_PIN2CTRL _SFR_MEM8(0x0652) +#define PORTC_PIN3CTRL _SFR_MEM8(0x0653) +#define PORTC_PIN4CTRL _SFR_MEM8(0x0654) +#define PORTC_PIN5CTRL _SFR_MEM8(0x0655) +#define PORTC_PIN6CTRL _SFR_MEM8(0x0656) +#define PORTC_PIN7CTRL _SFR_MEM8(0x0657) + +/* PORTD - Port D */ +#define PORTD_DIR _SFR_MEM8(0x0660) +#define PORTD_DIRSET _SFR_MEM8(0x0661) +#define PORTD_DIRCLR _SFR_MEM8(0x0662) +#define PORTD_DIRTGL _SFR_MEM8(0x0663) +#define PORTD_OUT _SFR_MEM8(0x0664) +#define PORTD_OUTSET _SFR_MEM8(0x0665) +#define PORTD_OUTCLR _SFR_MEM8(0x0666) +#define PORTD_OUTTGL _SFR_MEM8(0x0667) +#define PORTD_IN _SFR_MEM8(0x0668) +#define PORTD_INTCTRL _SFR_MEM8(0x0669) +#define PORTD_INT0MASK _SFR_MEM8(0x066A) +#define PORTD_INT1MASK _SFR_MEM8(0x066B) +#define PORTD_INTFLAGS _SFR_MEM8(0x066C) +#define PORTD_PIN0CTRL _SFR_MEM8(0x0670) +#define PORTD_PIN1CTRL _SFR_MEM8(0x0671) +#define PORTD_PIN2CTRL _SFR_MEM8(0x0672) +#define PORTD_PIN3CTRL _SFR_MEM8(0x0673) +#define PORTD_PIN4CTRL _SFR_MEM8(0x0674) +#define PORTD_PIN5CTRL _SFR_MEM8(0x0675) +#define PORTD_PIN6CTRL _SFR_MEM8(0x0676) +#define PORTD_PIN7CTRL _SFR_MEM8(0x0677) + +/* PORTE - Port E */ +#define PORTE_DIR _SFR_MEM8(0x0680) +#define PORTE_DIRSET _SFR_MEM8(0x0681) +#define PORTE_DIRCLR _SFR_MEM8(0x0682) +#define PORTE_DIRTGL _SFR_MEM8(0x0683) +#define PORTE_OUT _SFR_MEM8(0x0684) +#define PORTE_OUTSET _SFR_MEM8(0x0685) +#define PORTE_OUTCLR _SFR_MEM8(0x0686) +#define PORTE_OUTTGL _SFR_MEM8(0x0687) +#define PORTE_IN _SFR_MEM8(0x0688) +#define PORTE_INTCTRL _SFR_MEM8(0x0689) +#define PORTE_INT0MASK _SFR_MEM8(0x068A) +#define PORTE_INT1MASK _SFR_MEM8(0x068B) +#define PORTE_INTFLAGS _SFR_MEM8(0x068C) +#define PORTE_PIN0CTRL _SFR_MEM8(0x0690) +#define PORTE_PIN1CTRL _SFR_MEM8(0x0691) +#define PORTE_PIN2CTRL _SFR_MEM8(0x0692) +#define PORTE_PIN3CTRL _SFR_MEM8(0x0693) +#define PORTE_PIN4CTRL _SFR_MEM8(0x0694) +#define PORTE_PIN5CTRL _SFR_MEM8(0x0695) +#define PORTE_PIN6CTRL _SFR_MEM8(0x0696) +#define PORTE_PIN7CTRL _SFR_MEM8(0x0697) + +/* PORTF - Port F */ +#define PORTF_DIR _SFR_MEM8(0x06A0) +#define PORTF_DIRSET _SFR_MEM8(0x06A1) +#define PORTF_DIRCLR _SFR_MEM8(0x06A2) +#define PORTF_DIRTGL _SFR_MEM8(0x06A3) +#define PORTF_OUT _SFR_MEM8(0x06A4) +#define PORTF_OUTSET _SFR_MEM8(0x06A5) +#define PORTF_OUTCLR _SFR_MEM8(0x06A6) +#define PORTF_OUTTGL _SFR_MEM8(0x06A7) +#define PORTF_IN _SFR_MEM8(0x06A8) +#define PORTF_INTCTRL _SFR_MEM8(0x06A9) +#define PORTF_INT0MASK _SFR_MEM8(0x06AA) +#define PORTF_INT1MASK _SFR_MEM8(0x06AB) +#define PORTF_INTFLAGS _SFR_MEM8(0x06AC) +#define PORTF_PIN0CTRL _SFR_MEM8(0x06B0) +#define PORTF_PIN1CTRL _SFR_MEM8(0x06B1) +#define PORTF_PIN2CTRL _SFR_MEM8(0x06B2) +#define PORTF_PIN3CTRL _SFR_MEM8(0x06B3) +#define PORTF_PIN4CTRL _SFR_MEM8(0x06B4) +#define PORTF_PIN5CTRL _SFR_MEM8(0x06B5) +#define PORTF_PIN6CTRL _SFR_MEM8(0x06B6) +#define PORTF_PIN7CTRL _SFR_MEM8(0x06B7) + +/* PORTR - Port R */ +#define PORTR_DIR _SFR_MEM8(0x07E0) +#define PORTR_DIRSET _SFR_MEM8(0x07E1) +#define PORTR_DIRCLR _SFR_MEM8(0x07E2) +#define PORTR_DIRTGL _SFR_MEM8(0x07E3) +#define PORTR_OUT _SFR_MEM8(0x07E4) +#define PORTR_OUTSET _SFR_MEM8(0x07E5) +#define PORTR_OUTCLR _SFR_MEM8(0x07E6) +#define PORTR_OUTTGL _SFR_MEM8(0x07E7) +#define PORTR_IN _SFR_MEM8(0x07E8) +#define PORTR_INTCTRL _SFR_MEM8(0x07E9) +#define PORTR_INT0MASK _SFR_MEM8(0x07EA) +#define PORTR_INT1MASK _SFR_MEM8(0x07EB) +#define PORTR_INTFLAGS _SFR_MEM8(0x07EC) +#define PORTR_PIN0CTRL _SFR_MEM8(0x07F0) +#define PORTR_PIN1CTRL _SFR_MEM8(0x07F1) +#define PORTR_PIN2CTRL _SFR_MEM8(0x07F2) +#define PORTR_PIN3CTRL _SFR_MEM8(0x07F3) +#define PORTR_PIN4CTRL _SFR_MEM8(0x07F4) +#define PORTR_PIN5CTRL _SFR_MEM8(0x07F5) +#define PORTR_PIN6CTRL _SFR_MEM8(0x07F6) +#define PORTR_PIN7CTRL _SFR_MEM8(0x07F7) + +/* TCC0 - Timer/Counter C0 */ +#define TCC0_CTRLA _SFR_MEM8(0x0800) +#define TCC0_CTRLB _SFR_MEM8(0x0801) +#define TCC0_CTRLC _SFR_MEM8(0x0802) +#define TCC0_CTRLD _SFR_MEM8(0x0803) +#define TCC0_CTRLE _SFR_MEM8(0x0804) +#define TCC0_INTCTRLA _SFR_MEM8(0x0806) +#define TCC0_INTCTRLB _SFR_MEM8(0x0807) +#define TCC0_CTRLFCLR _SFR_MEM8(0x0808) +#define TCC0_CTRLFSET _SFR_MEM8(0x0809) +#define TCC0_CTRLGCLR _SFR_MEM8(0x080A) +#define TCC0_CTRLGSET _SFR_MEM8(0x080B) +#define TCC0_INTFLAGS _SFR_MEM8(0x080C) +#define TCC0_TEMP _SFR_MEM8(0x080F) +#define TCC0_CNT _SFR_MEM16(0x0820) +#define TCC0_PER _SFR_MEM16(0x0826) +#define TCC0_CCA _SFR_MEM16(0x0828) +#define TCC0_CCB _SFR_MEM16(0x082A) +#define TCC0_CCC _SFR_MEM16(0x082C) +#define TCC0_CCD _SFR_MEM16(0x082E) +#define TCC0_PERBUF _SFR_MEM16(0x0836) +#define TCC0_CCABUF _SFR_MEM16(0x0838) +#define TCC0_CCBBUF _SFR_MEM16(0x083A) +#define TCC0_CCCBUF _SFR_MEM16(0x083C) +#define TCC0_CCDBUF _SFR_MEM16(0x083E) + +/* TCC1 - Timer/Counter C1 */ +#define TCC1_CTRLA _SFR_MEM8(0x0840) +#define TCC1_CTRLB _SFR_MEM8(0x0841) +#define TCC1_CTRLC _SFR_MEM8(0x0842) +#define TCC1_CTRLD _SFR_MEM8(0x0843) +#define TCC1_CTRLE _SFR_MEM8(0x0844) +#define TCC1_INTCTRLA _SFR_MEM8(0x0846) +#define TCC1_INTCTRLB _SFR_MEM8(0x0847) +#define TCC1_CTRLFCLR _SFR_MEM8(0x0848) +#define TCC1_CTRLFSET _SFR_MEM8(0x0849) +#define TCC1_CTRLGCLR _SFR_MEM8(0x084A) +#define TCC1_CTRLGSET _SFR_MEM8(0x084B) +#define TCC1_INTFLAGS _SFR_MEM8(0x084C) +#define TCC1_TEMP _SFR_MEM8(0x084F) +#define TCC1_CNT _SFR_MEM16(0x0860) +#define TCC1_PER _SFR_MEM16(0x0866) +#define TCC1_CCA _SFR_MEM16(0x0868) +#define TCC1_CCB _SFR_MEM16(0x086A) +#define TCC1_PERBUF _SFR_MEM16(0x0876) +#define TCC1_CCABUF _SFR_MEM16(0x0878) +#define TCC1_CCBBUF _SFR_MEM16(0x087A) + +/* AWEXC - Advanced Waveform Extension C */ +#define AWEXC_CTRL _SFR_MEM8(0x0880) +#define AWEXC_FDEVMASK _SFR_MEM8(0x0882) +#define AWEXC_FDCTRL _SFR_MEM8(0x0883) +#define AWEXC_STATUS _SFR_MEM8(0x0884) +#define AWEXC_DTBOTH _SFR_MEM8(0x0886) +#define AWEXC_DTBOTHBUF _SFR_MEM8(0x0887) +#define AWEXC_DTLS _SFR_MEM8(0x0888) +#define AWEXC_DTHS _SFR_MEM8(0x0889) +#define AWEXC_DTLSBUF _SFR_MEM8(0x088A) +#define AWEXC_DTHSBUF _SFR_MEM8(0x088B) +#define AWEXC_OUTOVEN _SFR_MEM8(0x088C) + +/* HIRESC - High-Resolution Extension C */ +#define HIRESC_CTRL _SFR_MEM8(0x0890) + +/* USARTC0 - Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC0_DATA _SFR_MEM8(0x08A0) +#define USARTC0_STATUS _SFR_MEM8(0x08A1) +#define USARTC0_CTRLA _SFR_MEM8(0x08A3) +#define USARTC0_CTRLB _SFR_MEM8(0x08A4) +#define USARTC0_CTRLC _SFR_MEM8(0x08A5) +#define USARTC0_BAUDCTRLA _SFR_MEM8(0x08A6) +#define USARTC0_BAUDCTRLB _SFR_MEM8(0x08A7) + +/* USARTC1 - Universal Asynchronous Receiver-Transmitter C1 */ +#define USARTC1_DATA _SFR_MEM8(0x08B0) +#define USARTC1_STATUS _SFR_MEM8(0x08B1) +#define USARTC1_CTRLA _SFR_MEM8(0x08B3) +#define USARTC1_CTRLB _SFR_MEM8(0x08B4) +#define USARTC1_CTRLC _SFR_MEM8(0x08B5) +#define USARTC1_BAUDCTRLA _SFR_MEM8(0x08B6) +#define USARTC1_BAUDCTRLB _SFR_MEM8(0x08B7) + +/* SPIC - Serial Peripheral Interface C */ +#define SPIC_CTRL _SFR_MEM8(0x08C0) +#define SPIC_INTCTRL _SFR_MEM8(0x08C1) +#define SPIC_STATUS _SFR_MEM8(0x08C2) +#define SPIC_DATA _SFR_MEM8(0x08C3) + +/* IRCOM - IR Communication Module */ +#define IRCOM_CTRL _SFR_MEM8(0x08F8) +#define IRCOM_TXPLCTRL _SFR_MEM8(0x08F9) +#define IRCOM_RXPLCTRL _SFR_MEM8(0x08FA) + +/* TCD0 - Timer/Counter D0 */ +#define TCD0_CTRLA _SFR_MEM8(0x0900) +#define TCD0_CTRLB _SFR_MEM8(0x0901) +#define TCD0_CTRLC _SFR_MEM8(0x0902) +#define TCD0_CTRLD _SFR_MEM8(0x0903) +#define TCD0_CTRLE _SFR_MEM8(0x0904) +#define TCD0_INTCTRLA _SFR_MEM8(0x0906) +#define TCD0_INTCTRLB _SFR_MEM8(0x0907) +#define TCD0_CTRLFCLR _SFR_MEM8(0x0908) +#define TCD0_CTRLFSET _SFR_MEM8(0x0909) +#define TCD0_CTRLGCLR _SFR_MEM8(0x090A) +#define TCD0_CTRLGSET _SFR_MEM8(0x090B) +#define TCD0_INTFLAGS _SFR_MEM8(0x090C) +#define TCD0_TEMP _SFR_MEM8(0x090F) +#define TCD0_CNT _SFR_MEM16(0x0920) +#define TCD0_PER _SFR_MEM16(0x0926) +#define TCD0_CCA _SFR_MEM16(0x0928) +#define TCD0_CCB _SFR_MEM16(0x092A) +#define TCD0_CCC _SFR_MEM16(0x092C) +#define TCD0_CCD _SFR_MEM16(0x092E) +#define TCD0_PERBUF _SFR_MEM16(0x0936) +#define TCD0_CCABUF _SFR_MEM16(0x0938) +#define TCD0_CCBBUF _SFR_MEM16(0x093A) +#define TCD0_CCCBUF _SFR_MEM16(0x093C) +#define TCD0_CCDBUF _SFR_MEM16(0x093E) + +/* TCD1 - Timer/Counter D1 */ +#define TCD1_CTRLA _SFR_MEM8(0x0940) +#define TCD1_CTRLB _SFR_MEM8(0x0941) +#define TCD1_CTRLC _SFR_MEM8(0x0942) +#define TCD1_CTRLD _SFR_MEM8(0x0943) +#define TCD1_CTRLE _SFR_MEM8(0x0944) +#define TCD1_INTCTRLA _SFR_MEM8(0x0946) +#define TCD1_INTCTRLB _SFR_MEM8(0x0947) +#define TCD1_CTRLFCLR _SFR_MEM8(0x0948) +#define TCD1_CTRLFSET _SFR_MEM8(0x0949) +#define TCD1_CTRLGCLR _SFR_MEM8(0x094A) +#define TCD1_CTRLGSET _SFR_MEM8(0x094B) +#define TCD1_INTFLAGS _SFR_MEM8(0x094C) +#define TCD1_TEMP _SFR_MEM8(0x094F) +#define TCD1_CNT _SFR_MEM16(0x0960) +#define TCD1_PER _SFR_MEM16(0x0966) +#define TCD1_CCA _SFR_MEM16(0x0968) +#define TCD1_CCB _SFR_MEM16(0x096A) +#define TCD1_PERBUF _SFR_MEM16(0x0976) +#define TCD1_CCABUF _SFR_MEM16(0x0978) +#define TCD1_CCBBUF _SFR_MEM16(0x097A) + +/* HIRESD - High-Resolution Extension D */ +#define HIRESD_CTRL _SFR_MEM8(0x0990) + +/* USARTD0 - Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD0_DATA _SFR_MEM8(0x09A0) +#define USARTD0_STATUS _SFR_MEM8(0x09A1) +#define USARTD0_CTRLA _SFR_MEM8(0x09A3) +#define USARTD0_CTRLB _SFR_MEM8(0x09A4) +#define USARTD0_CTRLC _SFR_MEM8(0x09A5) +#define USARTD0_BAUDCTRLA _SFR_MEM8(0x09A6) +#define USARTD0_BAUDCTRLB _SFR_MEM8(0x09A7) + +/* USARTD1 - Universal Asynchronous Receiver-Transmitter D1 */ +#define USARTD1_DATA _SFR_MEM8(0x09B0) +#define USARTD1_STATUS _SFR_MEM8(0x09B1) +#define USARTD1_CTRLA _SFR_MEM8(0x09B3) +#define USARTD1_CTRLB _SFR_MEM8(0x09B4) +#define USARTD1_CTRLC _SFR_MEM8(0x09B5) +#define USARTD1_BAUDCTRLA _SFR_MEM8(0x09B6) +#define USARTD1_BAUDCTRLB _SFR_MEM8(0x09B7) + +/* SPID - Serial Peripheral Interface D */ +#define SPID_CTRL _SFR_MEM8(0x09C0) +#define SPID_INTCTRL _SFR_MEM8(0x09C1) +#define SPID_STATUS _SFR_MEM8(0x09C2) +#define SPID_DATA _SFR_MEM8(0x09C3) + +/* TCE0 - Timer/Counter E0 */ +#define TCE0_CTRLA _SFR_MEM8(0x0A00) +#define TCE0_CTRLB _SFR_MEM8(0x0A01) +#define TCE0_CTRLC _SFR_MEM8(0x0A02) +#define TCE0_CTRLD _SFR_MEM8(0x0A03) +#define TCE0_CTRLE _SFR_MEM8(0x0A04) +#define TCE0_INTCTRLA _SFR_MEM8(0x0A06) +#define TCE0_INTCTRLB _SFR_MEM8(0x0A07) +#define TCE0_CTRLFCLR _SFR_MEM8(0x0A08) +#define TCE0_CTRLFSET _SFR_MEM8(0x0A09) +#define TCE0_CTRLGCLR _SFR_MEM8(0x0A0A) +#define TCE0_CTRLGSET _SFR_MEM8(0x0A0B) +#define TCE0_INTFLAGS _SFR_MEM8(0x0A0C) +#define TCE0_TEMP _SFR_MEM8(0x0A0F) +#define TCE0_CNT _SFR_MEM16(0x0A20) +#define TCE0_PER _SFR_MEM16(0x0A26) +#define TCE0_CCA _SFR_MEM16(0x0A28) +#define TCE0_CCB _SFR_MEM16(0x0A2A) +#define TCE0_CCC _SFR_MEM16(0x0A2C) +#define TCE0_CCD _SFR_MEM16(0x0A2E) +#define TCE0_PERBUF _SFR_MEM16(0x0A36) +#define TCE0_CCABUF _SFR_MEM16(0x0A38) +#define TCE0_CCBBUF _SFR_MEM16(0x0A3A) +#define TCE0_CCCBUF _SFR_MEM16(0x0A3C) +#define TCE0_CCDBUF _SFR_MEM16(0x0A3E) + +/* TCE1 - Timer/Counter E1 */ +#define TCE1_CTRLA _SFR_MEM8(0x0A40) +#define TCE1_CTRLB _SFR_MEM8(0x0A41) +#define TCE1_CTRLC _SFR_MEM8(0x0A42) +#define TCE1_CTRLD _SFR_MEM8(0x0A43) +#define TCE1_CTRLE _SFR_MEM8(0x0A44) +#define TCE1_INTCTRLA _SFR_MEM8(0x0A46) +#define TCE1_INTCTRLB _SFR_MEM8(0x0A47) +#define TCE1_CTRLFCLR _SFR_MEM8(0x0A48) +#define TCE1_CTRLFSET _SFR_MEM8(0x0A49) +#define TCE1_CTRLGCLR _SFR_MEM8(0x0A4A) +#define TCE1_CTRLGSET _SFR_MEM8(0x0A4B) +#define TCE1_INTFLAGS _SFR_MEM8(0x0A4C) +#define TCE1_TEMP _SFR_MEM8(0x0A4F) +#define TCE1_CNT _SFR_MEM16(0x0A60) +#define TCE1_PER _SFR_MEM16(0x0A66) +#define TCE1_CCA _SFR_MEM16(0x0A68) +#define TCE1_CCB _SFR_MEM16(0x0A6A) +#define TCE1_PERBUF _SFR_MEM16(0x0A76) +#define TCE1_CCABUF _SFR_MEM16(0x0A78) +#define TCE1_CCBBUF _SFR_MEM16(0x0A7A) + +/* AWEXE - Advanced Waveform Extension E */ +#define AWEXE_CTRL _SFR_MEM8(0x0A80) +#define AWEXE_FDEVMASK _SFR_MEM8(0x0A82) +#define AWEXE_FDCTRL _SFR_MEM8(0x0A83) +#define AWEXE_STATUS _SFR_MEM8(0x0A84) +#define AWEXE_DTBOTH _SFR_MEM8(0x0A86) +#define AWEXE_DTBOTHBUF _SFR_MEM8(0x0A87) +#define AWEXE_DTLS _SFR_MEM8(0x0A88) +#define AWEXE_DTHS _SFR_MEM8(0x0A89) +#define AWEXE_DTLSBUF _SFR_MEM8(0x0A8A) +#define AWEXE_DTHSBUF _SFR_MEM8(0x0A8B) +#define AWEXE_OUTOVEN _SFR_MEM8(0x0A8C) + +/* HIRESE - High-Resolution Extension E */ +#define HIRESE_CTRL _SFR_MEM8(0x0A90) + +/* USARTE0 - Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE0_DATA _SFR_MEM8(0x0AA0) +#define USARTE0_STATUS _SFR_MEM8(0x0AA1) +#define USARTE0_CTRLA _SFR_MEM8(0x0AA3) +#define USARTE0_CTRLB _SFR_MEM8(0x0AA4) +#define USARTE0_CTRLC _SFR_MEM8(0x0AA5) +#define USARTE0_BAUDCTRLA _SFR_MEM8(0x0AA6) +#define USARTE0_BAUDCTRLB _SFR_MEM8(0x0AA7) + +/* USARTE1 - Universal Asynchronous Receiver-Transmitter E1 */ +#define USARTE1_DATA _SFR_MEM8(0x0AB0) +#define USARTE1_STATUS _SFR_MEM8(0x0AB1) +#define USARTE1_CTRLA _SFR_MEM8(0x0AB3) +#define USARTE1_CTRLB _SFR_MEM8(0x0AB4) +#define USARTE1_CTRLC _SFR_MEM8(0x0AB5) +#define USARTE1_BAUDCTRLA _SFR_MEM8(0x0AB6) +#define USARTE1_BAUDCTRLB _SFR_MEM8(0x0AB7) + +/* SPIE - Serial Peripheral Interface E */ +#define SPIE_CTRL _SFR_MEM8(0x0AC0) +#define SPIE_INTCTRL _SFR_MEM8(0x0AC1) +#define SPIE_STATUS _SFR_MEM8(0x0AC2) +#define SPIE_DATA _SFR_MEM8(0x0AC3) + +/* TCF0 - Timer/Counter F0 */ +#define TCF0_CTRLA _SFR_MEM8(0x0B00) +#define TCF0_CTRLB _SFR_MEM8(0x0B01) +#define TCF0_CTRLC _SFR_MEM8(0x0B02) +#define TCF0_CTRLD _SFR_MEM8(0x0B03) +#define TCF0_CTRLE _SFR_MEM8(0x0B04) +#define TCF0_INTCTRLA _SFR_MEM8(0x0B06) +#define TCF0_INTCTRLB _SFR_MEM8(0x0B07) +#define TCF0_CTRLFCLR _SFR_MEM8(0x0B08) +#define TCF0_CTRLFSET _SFR_MEM8(0x0B09) +#define TCF0_CTRLGCLR _SFR_MEM8(0x0B0A) +#define TCF0_CTRLGSET _SFR_MEM8(0x0B0B) +#define TCF0_INTFLAGS _SFR_MEM8(0x0B0C) +#define TCF0_TEMP _SFR_MEM8(0x0B0F) +#define TCF0_CNT _SFR_MEM16(0x0B20) +#define TCF0_PER _SFR_MEM16(0x0B26) +#define TCF0_CCA _SFR_MEM16(0x0B28) +#define TCF0_CCB _SFR_MEM16(0x0B2A) +#define TCF0_CCC _SFR_MEM16(0x0B2C) +#define TCF0_CCD _SFR_MEM16(0x0B2E) +#define TCF0_PERBUF _SFR_MEM16(0x0B36) +#define TCF0_CCABUF _SFR_MEM16(0x0B38) +#define TCF0_CCBBUF _SFR_MEM16(0x0B3A) +#define TCF0_CCCBUF _SFR_MEM16(0x0B3C) +#define TCF0_CCDBUF _SFR_MEM16(0x0B3E) + +/* HIRESF - High-Resolution Extension F */ +#define HIRESF_CTRL _SFR_MEM8(0x0B90) + +/* USARTF0 - Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF0_DATA _SFR_MEM8(0x0BA0) +#define USARTF0_STATUS _SFR_MEM8(0x0BA1) +#define USARTF0_CTRLA _SFR_MEM8(0x0BA3) +#define USARTF0_CTRLB _SFR_MEM8(0x0BA4) +#define USARTF0_CTRLC _SFR_MEM8(0x0BA5) +#define USARTF0_BAUDCTRLA _SFR_MEM8(0x0BA6) +#define USARTF0_BAUDCTRLB _SFR_MEM8(0x0BA7) + +/* USARTF1 - Universal Asynchronous Receiver-Transmitter F1 */ +#define USARTF1_DATA _SFR_MEM8(0x0BB0) +#define USARTF1_STATUS _SFR_MEM8(0x0BB1) +#define USARTF1_CTRLA _SFR_MEM8(0x0BB3) +#define USARTF1_CTRLB _SFR_MEM8(0x0BB4) +#define USARTF1_CTRLC _SFR_MEM8(0x0BB5) +#define USARTF1_BAUDCTRLA _SFR_MEM8(0x0BB6) +#define USARTF1_BAUDCTRLB _SFR_MEM8(0x0BB7) + +/* SPIF - Serial Peripheral Interface F */ +#define SPIF_CTRL _SFR_MEM8(0x0BC0) +#define SPIF_INTCTRL _SFR_MEM8(0x0BC1) +#define SPIF_STATUS _SFR_MEM8(0x0BC2) +#define SPIF_DATA _SFR_MEM8(0x0BC3) + + + +/*================== Bitfield Definitions ================== */ + +/* XOCD - On-Chip Debug System */ +/* OCD.OCDR1 bit masks and bit positions */ +#define OCD_OCDRD_bm 0x01 /* OCDR Dirty bit mask. */ +#define OCD_OCDRD_bp 0 /* OCDR Dirty bit position. */ + + +/* CPU - CPU */ +/* CPU.CCP bit masks and bit positions */ +#define CPU_CCP_gm 0xFF /* CCP signature group mask. */ +#define CPU_CCP_gp 0 /* CCP signature group position. */ +#define CPU_CCP0_bm (1<<0) /* CCP signature bit 0 mask. */ +#define CPU_CCP0_bp 0 /* CCP signature bit 0 position. */ +#define CPU_CCP1_bm (1<<1) /* CCP signature bit 1 mask. */ +#define CPU_CCP1_bp 1 /* CCP signature bit 1 position. */ +#define CPU_CCP2_bm (1<<2) /* CCP signature bit 2 mask. */ +#define CPU_CCP2_bp 2 /* CCP signature bit 2 position. */ +#define CPU_CCP3_bm (1<<3) /* CCP signature bit 3 mask. */ +#define CPU_CCP3_bp 3 /* CCP signature bit 3 position. */ +#define CPU_CCP4_bm (1<<4) /* CCP signature bit 4 mask. */ +#define CPU_CCP4_bp 4 /* CCP signature bit 4 position. */ +#define CPU_CCP5_bm (1<<5) /* CCP signature bit 5 mask. */ +#define CPU_CCP5_bp 5 /* CCP signature bit 5 position. */ +#define CPU_CCP6_bm (1<<6) /* CCP signature bit 6 mask. */ +#define CPU_CCP6_bp 6 /* CCP signature bit 6 position. */ +#define CPU_CCP7_bm (1<<7) /* CCP signature bit 7 mask. */ +#define CPU_CCP7_bp 7 /* CCP signature bit 7 position. */ + + +/* CPU.SREG bit masks and bit positions */ +#define CPU_I_bm 0x80 /* Global Interrupt Enable Flag bit mask. */ +#define CPU_I_bp 7 /* Global Interrupt Enable Flag bit position. */ + +#define CPU_T_bm 0x40 /* Transfer Bit bit mask. */ +#define CPU_T_bp 6 /* Transfer Bit bit position. */ + +#define CPU_H_bm 0x20 /* Half Carry Flag bit mask. */ +#define CPU_H_bp 5 /* Half Carry Flag bit position. */ + +#define CPU_S_bm 0x10 /* N Exclusive Or V Flag bit mask. */ +#define CPU_S_bp 4 /* N Exclusive Or V Flag bit position. */ + +#define CPU_V_bm 0x08 /* Two's Complement Overflow Flag bit mask. */ +#define CPU_V_bp 3 /* Two's Complement Overflow Flag bit position. */ + +#define CPU_N_bm 0x04 /* Negative Flag bit mask. */ +#define CPU_N_bp 2 /* Negative Flag bit position. */ + +#define CPU_Z_bm 0x02 /* Zero Flag bit mask. */ +#define CPU_Z_bp 1 /* Zero Flag bit position. */ + +#define CPU_C_bm 0x01 /* Carry Flag bit mask. */ +#define CPU_C_bp 0 /* Carry Flag bit position. */ + + +/* CLK - Clock System */ +/* CLK.CTRL bit masks and bit positions */ +#define CLK_SCLKSEL_gm 0x07 /* System Clock Selection group mask. */ +#define CLK_SCLKSEL_gp 0 /* System Clock Selection group position. */ +#define CLK_SCLKSEL0_bm (1<<0) /* System Clock Selection bit 0 mask. */ +#define CLK_SCLKSEL0_bp 0 /* System Clock Selection bit 0 position. */ +#define CLK_SCLKSEL1_bm (1<<1) /* System Clock Selection bit 1 mask. */ +#define CLK_SCLKSEL1_bp 1 /* System Clock Selection bit 1 position. */ +#define CLK_SCLKSEL2_bm (1<<2) /* System Clock Selection bit 2 mask. */ +#define CLK_SCLKSEL2_bp 2 /* System Clock Selection bit 2 position. */ + + +/* CLK.PSCTRL bit masks and bit positions */ +#define CLK_PSADIV_gm 0x7C /* Prescaler A Division Factor group mask. */ +#define CLK_PSADIV_gp 2 /* Prescaler A Division Factor group position. */ +#define CLK_PSADIV0_bm (1<<2) /* Prescaler A Division Factor bit 0 mask. */ +#define CLK_PSADIV0_bp 2 /* Prescaler A Division Factor bit 0 position. */ +#define CLK_PSADIV1_bm (1<<3) /* Prescaler A Division Factor bit 1 mask. */ +#define CLK_PSADIV1_bp 3 /* Prescaler A Division Factor bit 1 position. */ +#define CLK_PSADIV2_bm (1<<4) /* Prescaler A Division Factor bit 2 mask. */ +#define CLK_PSADIV2_bp 4 /* Prescaler A Division Factor bit 2 position. */ +#define CLK_PSADIV3_bm (1<<5) /* Prescaler A Division Factor bit 3 mask. */ +#define CLK_PSADIV3_bp 5 /* Prescaler A Division Factor bit 3 position. */ +#define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ +#define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ + +#define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ +#define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ +#define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ +#define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ +#define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ +#define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ + + +/* CLK.LOCK bit masks and bit positions */ +#define CLK_LOCK_bm 0x01 /* Clock System Lock bit mask. */ +#define CLK_LOCK_bp 0 /* Clock System Lock bit position. */ + + +/* CLK.RTCCTRL bit masks and bit positions */ +#define CLK_RTCSRC_gm 0x0E /* Clock Source group mask. */ +#define CLK_RTCSRC_gp 1 /* Clock Source group position. */ +#define CLK_RTCSRC0_bm (1<<1) /* Clock Source bit 0 mask. */ +#define CLK_RTCSRC0_bp 1 /* Clock Source bit 0 position. */ +#define CLK_RTCSRC1_bm (1<<2) /* Clock Source bit 1 mask. */ +#define CLK_RTCSRC1_bp 2 /* Clock Source bit 1 position. */ +#define CLK_RTCSRC2_bm (1<<3) /* Clock Source bit 2 mask. */ +#define CLK_RTCSRC2_bp 3 /* Clock Source bit 2 position. */ + +#define CLK_RTCEN_bm 0x01 /* RTC Clock Source Enable bit mask. */ +#define CLK_RTCEN_bp 0 /* RTC Clock Source Enable bit position. */ + + +/* PR.PR bit masks and bit positions */ +#define PR_EBI_bm 0x08 /* External Bus Interface bit mask. */ +#define PR_EBI_bp 3 /* External Bus Interface bit position. */ + +#define PR_RTC_bm 0x04 /* Real-time Counter bit mask. */ +#define PR_RTC_bp 2 /* Real-time Counter bit position. */ + +#define PR_EVSYS_bm 0x02 /* Event System bit mask. */ +#define PR_EVSYS_bp 1 /* Event System bit position. */ + +#define PR_DMA_bm 0x01 /* DMA-Controller bit mask. */ +#define PR_DMA_bp 0 /* DMA-Controller bit position. */ + + +/* PR.PRPA bit masks and bit positions */ +#define PR_DAC_bm 0x04 /* Port A DAC bit mask. */ +#define PR_DAC_bp 2 /* Port A DAC bit position. */ + +#define PR_ADC_bm 0x02 /* Port A ADC bit mask. */ +#define PR_ADC_bp 1 /* Port A ADC bit position. */ + +#define PR_AC_bm 0x01 /* Port A Analog Comparator bit mask. */ +#define PR_AC_bp 0 /* Port A Analog Comparator bit position. */ + + +/* PR.PRPB bit masks and bit positions */ +/* PR_DAC_bm Predefined. */ +/* PR_DAC_bp Predefined. */ + +/* PR_ADC_bm Predefined. */ +/* PR_ADC_bp Predefined. */ + +/* PR_AC_bm Predefined. */ +/* PR_AC_bp Predefined. */ + + +/* PR.PRPC bit masks and bit positions */ +#define PR_TWI_bm 0x40 /* Port C Two-wire Interface bit mask. */ +#define PR_TWI_bp 6 /* Port C Two-wire Interface bit position. */ + +#define PR_USART1_bm 0x20 /* Port C USART1 bit mask. */ +#define PR_USART1_bp 5 /* Port C USART1 bit position. */ + +#define PR_USART0_bm 0x10 /* Port C USART0 bit mask. */ +#define PR_USART0_bp 4 /* Port C USART0 bit position. */ + +#define PR_SPI_bm 0x08 /* Port C SPI bit mask. */ +#define PR_SPI_bp 3 /* Port C SPI bit position. */ + +#define PR_HIRES_bm 0x04 /* Port C AWEX bit mask. */ +#define PR_HIRES_bp 2 /* Port C AWEX bit position. */ + +#define PR_TC1_bm 0x02 /* Port C Timer/Counter1 bit mask. */ +#define PR_TC1_bp 1 /* Port C Timer/Counter1 bit position. */ + +#define PR_TC0_bm 0x01 /* Port C Timer/Counter0 bit mask. */ +#define PR_TC0_bp 0 /* Port C Timer/Counter0 bit position. */ + + +/* PR.PRPD bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPE bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPF bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* SLEEP - Sleep Controller */ +/* SLEEP.CTRL bit masks and bit positions */ +#define SLEEP_SMODE_gm 0x0E /* Sleep Mode group mask. */ +#define SLEEP_SMODE_gp 1 /* Sleep Mode group position. */ +#define SLEEP_SMODE0_bm (1<<1) /* Sleep Mode bit 0 mask. */ +#define SLEEP_SMODE0_bp 1 /* Sleep Mode bit 0 position. */ +#define SLEEP_SMODE1_bm (1<<2) /* Sleep Mode bit 1 mask. */ +#define SLEEP_SMODE1_bp 2 /* Sleep Mode bit 1 position. */ +#define SLEEP_SMODE2_bm (1<<3) /* Sleep Mode bit 2 mask. */ +#define SLEEP_SMODE2_bp 3 /* Sleep Mode bit 2 position. */ + +#define SLEEP_SEN_bm 0x01 /* Sleep Enable bit mask. */ +#define SLEEP_SEN_bp 0 /* Sleep Enable bit position. */ + + +/* OSC - Oscillator */ +/* OSC.CTRL bit masks and bit positions */ +#define OSC_PLLEN_bm 0x10 /* PLL Enable bit mask. */ +#define OSC_PLLEN_bp 4 /* PLL Enable bit position. */ + +#define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ +#define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ + +#define OSC_RC32KEN_bm 0x04 /* Internal 32kHz RC Oscillator Enable bit mask. */ +#define OSC_RC32KEN_bp 2 /* Internal 32kHz RC Oscillator Enable bit position. */ + +#define OSC_RC32MEN_bm 0x02 /* Internal 32MHz RC Oscillator Enable bit mask. */ +#define OSC_RC32MEN_bp 1 /* Internal 32MHz RC Oscillator Enable bit position. */ + +#define OSC_RC2MEN_bm 0x01 /* Internal 2MHz RC Oscillator Enable bit mask. */ +#define OSC_RC2MEN_bp 0 /* Internal 2MHz RC Oscillator Enable bit position. */ + + +/* OSC.STATUS bit masks and bit positions */ +#define OSC_PLLRDY_bm 0x10 /* PLL Ready bit mask. */ +#define OSC_PLLRDY_bp 4 /* PLL Ready bit position. */ + +#define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ +#define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ + +#define OSC_RC32KRDY_bm 0x04 /* Internal 32kHz RC Oscillator Ready bit mask. */ +#define OSC_RC32KRDY_bp 2 /* Internal 32kHz RC Oscillator Ready bit position. */ + +#define OSC_RC32MRDY_bm 0x02 /* Internal 32MHz RC Oscillator Ready bit mask. */ +#define OSC_RC32MRDY_bp 1 /* Internal 32MHz RC Oscillator Ready bit position. */ + +#define OSC_RC2MRDY_bm 0x01 /* Internal 2MHz RC Oscillator Ready bit mask. */ +#define OSC_RC2MRDY_bp 0 /* Internal 2MHz RC Oscillator Ready bit position. */ + + +/* OSC.XOSCCTRL bit masks and bit positions */ +#define OSC_FRQRANGE_gm 0xC0 /* Frequency Range group mask. */ +#define OSC_FRQRANGE_gp 6 /* Frequency Range group position. */ +#define OSC_FRQRANGE0_bm (1<<6) /* Frequency Range bit 0 mask. */ +#define OSC_FRQRANGE0_bp 6 /* Frequency Range bit 0 position. */ +#define OSC_FRQRANGE1_bm (1<<7) /* Frequency Range bit 1 mask. */ +#define OSC_FRQRANGE1_bp 7 /* Frequency Range bit 1 position. */ + +#define OSC_X32KLPM_bm 0x20 /* 32kHz XTAL OSC Low-power Mode bit mask. */ +#define OSC_X32KLPM_bp 5 /* 32kHz XTAL OSC Low-power Mode bit position. */ + +#define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ +#define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ +#define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ +#define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ +#define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ +#define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ +#define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ +#define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ +#define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ +#define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ + + +/* OSC.XOSCFAIL bit masks and bit positions */ +#define OSC_XOSCFDIF_bm 0x02 /* Failure Detection Interrupt Flag bit mask. */ +#define OSC_XOSCFDIF_bp 1 /* Failure Detection Interrupt Flag bit position. */ + +#define OSC_XOSCFDEN_bm 0x01 /* Failure Detection Enable bit mask. */ +#define OSC_XOSCFDEN_bp 0 /* Failure Detection Enable bit position. */ + + +/* OSC.PLLCTRL bit masks and bit positions */ +#define OSC_PLLSRC_gm 0xC0 /* Clock Source group mask. */ +#define OSC_PLLSRC_gp 6 /* Clock Source group position. */ +#define OSC_PLLSRC0_bm (1<<6) /* Clock Source bit 0 mask. */ +#define OSC_PLLSRC0_bp 6 /* Clock Source bit 0 position. */ +#define OSC_PLLSRC1_bm (1<<7) /* Clock Source bit 1 mask. */ +#define OSC_PLLSRC1_bp 7 /* Clock Source bit 1 position. */ + +#define OSC_PLLFAC_gm 0x1F /* Multiplication Factor group mask. */ +#define OSC_PLLFAC_gp 0 /* Multiplication Factor group position. */ +#define OSC_PLLFAC0_bm (1<<0) /* Multiplication Factor bit 0 mask. */ +#define OSC_PLLFAC0_bp 0 /* Multiplication Factor bit 0 position. */ +#define OSC_PLLFAC1_bm (1<<1) /* Multiplication Factor bit 1 mask. */ +#define OSC_PLLFAC1_bp 1 /* Multiplication Factor bit 1 position. */ +#define OSC_PLLFAC2_bm (1<<2) /* Multiplication Factor bit 2 mask. */ +#define OSC_PLLFAC2_bp 2 /* Multiplication Factor bit 2 position. */ +#define OSC_PLLFAC3_bm (1<<3) /* Multiplication Factor bit 3 mask. */ +#define OSC_PLLFAC3_bp 3 /* Multiplication Factor bit 3 position. */ +#define OSC_PLLFAC4_bm (1<<4) /* Multiplication Factor bit 4 mask. */ +#define OSC_PLLFAC4_bp 4 /* Multiplication Factor bit 4 position. */ + + +/* OSC.DFLLCTRL bit masks and bit positions */ +#define OSC_RC32MCREF_bm 0x02 /* 32MHz Calibration Reference bit mask. */ +#define OSC_RC32MCREF_bp 1 /* 32MHz Calibration Reference bit position. */ + +#define OSC_RC2MCREF_bm 0x01 /* 2MHz Calibration Reference bit mask. */ +#define OSC_RC2MCREF_bp 0 /* 2MHz Calibration Reference bit position. */ + + +/* DFLL - DFLL */ +/* DFLL.CTRL bit masks and bit positions */ +#define DFLL_ENABLE_bm 0x01 /* DFLL Enable bit mask. */ +#define DFLL_ENABLE_bp 0 /* DFLL Enable bit position. */ + + +/* DFLL.CALA bit masks and bit positions */ +#define DFLL_CALL_gm 0x7F /* DFLL Calibration bits [6:0] group mask. */ +#define DFLL_CALL_gp 0 /* DFLL Calibration bits [6:0] group position. */ +#define DFLL_CALL0_bm (1<<0) /* DFLL Calibration bits [6:0] bit 0 mask. */ +#define DFLL_CALL0_bp 0 /* DFLL Calibration bits [6:0] bit 0 position. */ +#define DFLL_CALL1_bm (1<<1) /* DFLL Calibration bits [6:0] bit 1 mask. */ +#define DFLL_CALL1_bp 1 /* DFLL Calibration bits [6:0] bit 1 position. */ +#define DFLL_CALL2_bm (1<<2) /* DFLL Calibration bits [6:0] bit 2 mask. */ +#define DFLL_CALL2_bp 2 /* DFLL Calibration bits [6:0] bit 2 position. */ +#define DFLL_CALL3_bm (1<<3) /* DFLL Calibration bits [6:0] bit 3 mask. */ +#define DFLL_CALL3_bp 3 /* DFLL Calibration bits [6:0] bit 3 position. */ +#define DFLL_CALL4_bm (1<<4) /* DFLL Calibration bits [6:0] bit 4 mask. */ +#define DFLL_CALL4_bp 4 /* DFLL Calibration bits [6:0] bit 4 position. */ +#define DFLL_CALL5_bm (1<<5) /* DFLL Calibration bits [6:0] bit 5 mask. */ +#define DFLL_CALL5_bp 5 /* DFLL Calibration bits [6:0] bit 5 position. */ +#define DFLL_CALL6_bm (1<<6) /* DFLL Calibration bits [6:0] bit 6 mask. */ +#define DFLL_CALL6_bp 6 /* DFLL Calibration bits [6:0] bit 6 position. */ + + +/* DFLL.CALB bit masks and bit positions */ +#define DFLL_CALH_gm 0x3F /* DFLL Calibration bits [12:7] group mask. */ +#define DFLL_CALH_gp 0 /* DFLL Calibration bits [12:7] group position. */ +#define DFLL_CALH0_bm (1<<0) /* DFLL Calibration bits [12:7] bit 0 mask. */ +#define DFLL_CALH0_bp 0 /* DFLL Calibration bits [12:7] bit 0 position. */ +#define DFLL_CALH1_bm (1<<1) /* DFLL Calibration bits [12:7] bit 1 mask. */ +#define DFLL_CALH1_bp 1 /* DFLL Calibration bits [12:7] bit 1 position. */ +#define DFLL_CALH2_bm (1<<2) /* DFLL Calibration bits [12:7] bit 2 mask. */ +#define DFLL_CALH2_bp 2 /* DFLL Calibration bits [12:7] bit 2 position. */ +#define DFLL_CALH3_bm (1<<3) /* DFLL Calibration bits [12:7] bit 3 mask. */ +#define DFLL_CALH3_bp 3 /* DFLL Calibration bits [12:7] bit 3 position. */ +#define DFLL_CALH4_bm (1<<4) /* DFLL Calibration bits [12:7] bit 4 mask. */ +#define DFLL_CALH4_bp 4 /* DFLL Calibration bits [12:7] bit 4 position. */ +#define DFLL_CALH5_bm (1<<5) /* DFLL Calibration bits [12:7] bit 5 mask. */ +#define DFLL_CALH5_bp 5 /* DFLL Calibration bits [12:7] bit 5 position. */ + + +/* RST - Reset */ +/* RST.STATUS bit masks and bit positions */ +#define RST_SDRF_bm 0x40 /* Spike Detection Reset Flag bit mask. */ +#define RST_SDRF_bp 6 /* Spike Detection Reset Flag bit position. */ + +#define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ +#define RST_SRF_bp 5 /* Software Reset Flag bit position. */ + +#define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ +#define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ + +#define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ +#define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ + +#define RST_BORF_bm 0x04 /* Brown-out Reset Flag bit mask. */ +#define RST_BORF_bp 2 /* Brown-out Reset Flag bit position. */ + +#define RST_EXTRF_bm 0x02 /* External Reset Flag bit mask. */ +#define RST_EXTRF_bp 1 /* External Reset Flag bit position. */ + +#define RST_PORF_bm 0x01 /* Power-on Reset Flag bit mask. */ +#define RST_PORF_bp 0 /* Power-on Reset Flag bit position. */ + + +/* RST.CTRL bit masks and bit positions */ +#define RST_SWRST_bm 0x01 /* Software Reset bit mask. */ +#define RST_SWRST_bp 0 /* Software Reset bit position. */ + + +/* WDT - Watch-Dog Timer */ +/* WDT.CTRL bit masks and bit positions */ +#define WDT_PER_gm 0x3C /* Period group mask. */ +#define WDT_PER_gp 2 /* Period group position. */ +#define WDT_PER0_bm (1<<2) /* Period bit 0 mask. */ +#define WDT_PER0_bp 2 /* Period bit 0 position. */ +#define WDT_PER1_bm (1<<3) /* Period bit 1 mask. */ +#define WDT_PER1_bp 3 /* Period bit 1 position. */ +#define WDT_PER2_bm (1<<4) /* Period bit 2 mask. */ +#define WDT_PER2_bp 4 /* Period bit 2 position. */ +#define WDT_PER3_bm (1<<5) /* Period bit 3 mask. */ +#define WDT_PER3_bp 5 /* Period bit 3 position. */ + +#define WDT_ENABLE_bm 0x02 /* Enable bit mask. */ +#define WDT_ENABLE_bp 1 /* Enable bit position. */ + +#define WDT_CEN_bm 0x01 /* Change Enable bit mask. */ +#define WDT_CEN_bp 0 /* Change Enable bit position. */ + + +/* WDT.WINCTRL bit masks and bit positions */ +#define WDT_WPER_gm 0x3C /* Windowed Mode Period group mask. */ +#define WDT_WPER_gp 2 /* Windowed Mode Period group position. */ +#define WDT_WPER0_bm (1<<2) /* Windowed Mode Period bit 0 mask. */ +#define WDT_WPER0_bp 2 /* Windowed Mode Period bit 0 position. */ +#define WDT_WPER1_bm (1<<3) /* Windowed Mode Period bit 1 mask. */ +#define WDT_WPER1_bp 3 /* Windowed Mode Period bit 1 position. */ +#define WDT_WPER2_bm (1<<4) /* Windowed Mode Period bit 2 mask. */ +#define WDT_WPER2_bp 4 /* Windowed Mode Period bit 2 position. */ +#define WDT_WPER3_bm (1<<5) /* Windowed Mode Period bit 3 mask. */ +#define WDT_WPER3_bp 5 /* Windowed Mode Period bit 3 position. */ + +#define WDT_WEN_bm 0x02 /* Windowed Mode Enable bit mask. */ +#define WDT_WEN_bp 1 /* Windowed Mode Enable bit position. */ + +#define WDT_WCEN_bm 0x01 /* Windowed Mode Change Enable bit mask. */ +#define WDT_WCEN_bp 0 /* Windowed Mode Change Enable bit position. */ + + +/* WDT.STATUS bit masks and bit positions */ +#define WDT_SYNCBUSY_bm 0x01 /* Syncronization busy bit mask. */ +#define WDT_SYNCBUSY_bp 0 /* Syncronization busy bit position. */ + + +/* MCU - MCU Control */ +/* MCU.MCUCR bit masks and bit positions */ +#define MCU_JTAGD_bm 0x01 /* JTAG Disable bit mask. */ +#define MCU_JTAGD_bp 0 /* JTAG Disable bit position. */ + + +/* MCU.EVSYSLOCK bit masks and bit positions */ +#define MCU_EVSYS1LOCK_bm 0x10 /* Event Channel 4-7 Lock bit mask. */ +#define MCU_EVSYS1LOCK_bp 4 /* Event Channel 4-7 Lock bit position. */ + +#define MCU_EVSYS0LOCK_bm 0x01 /* Event Channel 0-3 Lock bit mask. */ +#define MCU_EVSYS0LOCK_bp 0 /* Event Channel 0-3 Lock bit position. */ + + +/* MCU.AWEXLOCK bit masks and bit positions */ +#define MCU_AWEXELOCK_bm 0x04 /* AWeX on T/C E0 Lock bit mask. */ +#define MCU_AWEXELOCK_bp 2 /* AWeX on T/C E0 Lock bit position. */ + +#define MCU_AWEXCLOCK_bm 0x01 /* AWeX on T/C C0 Lock bit mask. */ +#define MCU_AWEXCLOCK_bp 0 /* AWeX on T/C C0 Lock bit position. */ + + +/* PMIC - Programmable Multi-level Interrupt Controller */ +/* PMIC.STATUS bit masks and bit positions */ +#define PMIC_NMIEX_bm 0x80 /* Non-maskable Interrupt Executing bit mask. */ +#define PMIC_NMIEX_bp 7 /* Non-maskable Interrupt Executing bit position. */ + +#define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ +#define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ + +#define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ +#define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ + +#define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ +#define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ + + +/* PMIC.CTRL bit masks and bit positions */ +#define PMIC_RREN_bm 0x80 /* Round-Robin Priority Enable bit mask. */ +#define PMIC_RREN_bp 7 /* Round-Robin Priority Enable bit position. */ + +#define PMIC_IVSEL_bm 0x40 /* Interrupt Vector Select bit mask. */ +#define PMIC_IVSEL_bp 6 /* Interrupt Vector Select bit position. */ + +#define PMIC_HILVLEN_bm 0x04 /* High Level Enable bit mask. */ +#define PMIC_HILVLEN_bp 2 /* High Level Enable bit position. */ + +#define PMIC_MEDLVLEN_bm 0x02 /* Medium Level Enable bit mask. */ +#define PMIC_MEDLVLEN_bp 1 /* Medium Level Enable bit position. */ + +#define PMIC_LOLVLEN_bm 0x01 /* Low Level Enable bit mask. */ +#define PMIC_LOLVLEN_bp 0 /* Low Level Enable bit position. */ + + +/* DMA - DMA Controller */ +/* DMA_CH.CTRLA bit masks and bit positions */ +#define DMA_CH_ENABLE_bm 0x80 /* Channel Enable bit mask. */ +#define DMA_CH_ENABLE_bp 7 /* Channel Enable bit position. */ + +#define DMA_CH_RESET_bm 0x40 /* Channel Software Reset bit mask. */ +#define DMA_CH_RESET_bp 6 /* Channel Software Reset bit position. */ + +#define DMA_CH_REPEAT_bm 0x20 /* Channel Repeat Mode bit mask. */ +#define DMA_CH_REPEAT_bp 5 /* Channel Repeat Mode bit position. */ + +#define DMA_CH_TRFREQ_bm 0x10 /* Channel Transfer Request bit mask. */ +#define DMA_CH_TRFREQ_bp 4 /* Channel Transfer Request bit position. */ + +#define DMA_CH_SINGLE_bm 0x04 /* Channel Single Shot Data Transfer bit mask. */ +#define DMA_CH_SINGLE_bp 2 /* Channel Single Shot Data Transfer bit position. */ + +#define DMA_CH_BURSTLEN_gm 0x03 /* Channel Transfer Mode group mask. */ +#define DMA_CH_BURSTLEN_gp 0 /* Channel Transfer Mode group position. */ +#define DMA_CH_BURSTLEN0_bm (1<<0) /* Channel Transfer Mode bit 0 mask. */ +#define DMA_CH_BURSTLEN0_bp 0 /* Channel Transfer Mode bit 0 position. */ +#define DMA_CH_BURSTLEN1_bm (1<<1) /* Channel Transfer Mode bit 1 mask. */ +#define DMA_CH_BURSTLEN1_bp 1 /* Channel Transfer Mode bit 1 position. */ + + +/* DMA_CH.CTRLB bit masks and bit positions */ +#define DMA_CH_CHBUSY_bm 0x80 /* Block Transfer Busy bit mask. */ +#define DMA_CH_CHBUSY_bp 7 /* Block Transfer Busy bit position. */ + +#define DMA_CH_CHPEND_bm 0x40 /* Block Transfer Pending bit mask. */ +#define DMA_CH_CHPEND_bp 6 /* Block Transfer Pending bit position. */ + +#define DMA_CH_ERRIF_bm 0x20 /* Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH_ERRIF_bp 5 /* Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ + +#define DMA_CH_ERRINTLVL_gm 0x0C /* Transfer Error Interrupt Level group mask. */ +#define DMA_CH_ERRINTLVL_gp 2 /* Transfer Error Interrupt Level group position. */ +#define DMA_CH_ERRINTLVL0_bm (1<<2) /* Transfer Error Interrupt Level bit 0 mask. */ +#define DMA_CH_ERRINTLVL0_bp 2 /* Transfer Error Interrupt Level bit 0 position. */ +#define DMA_CH_ERRINTLVL1_bm (1<<3) /* Transfer Error Interrupt Level bit 1 mask. */ +#define DMA_CH_ERRINTLVL1_bp 3 /* Transfer Error Interrupt Level bit 1 position. */ + +#define DMA_CH_TRNINTLVL_gm 0x03 /* Transaction Complete Interrupt Level group mask. */ +#define DMA_CH_TRNINTLVL_gp 0 /* Transaction Complete Interrupt Level group position. */ +#define DMA_CH_TRNINTLVL0_bm (1<<0) /* Transaction Complete Interrupt Level bit 0 mask. */ +#define DMA_CH_TRNINTLVL0_bp 0 /* Transaction Complete Interrupt Level bit 0 position. */ +#define DMA_CH_TRNINTLVL1_bm (1<<1) /* Transaction Complete Interrupt Level bit 1 mask. */ +#define DMA_CH_TRNINTLVL1_bp 1 /* Transaction Complete Interrupt Level bit 1 position. */ + + +/* DMA_CH.ADDRCTRL bit masks and bit positions */ +#define DMA_CH_SRCRELOAD_gm 0xC0 /* Channel Source Address Reload group mask. */ +#define DMA_CH_SRCRELOAD_gp 6 /* Channel Source Address Reload group position. */ +#define DMA_CH_SRCRELOAD0_bm (1<<6) /* Channel Source Address Reload bit 0 mask. */ +#define DMA_CH_SRCRELOAD0_bp 6 /* Channel Source Address Reload bit 0 position. */ +#define DMA_CH_SRCRELOAD1_bm (1<<7) /* Channel Source Address Reload bit 1 mask. */ +#define DMA_CH_SRCRELOAD1_bp 7 /* Channel Source Address Reload bit 1 position. */ + +#define DMA_CH_SRCDIR_gm 0x30 /* Channel Source Address Mode group mask. */ +#define DMA_CH_SRCDIR_gp 4 /* Channel Source Address Mode group position. */ +#define DMA_CH_SRCDIR0_bm (1<<4) /* Channel Source Address Mode bit 0 mask. */ +#define DMA_CH_SRCDIR0_bp 4 /* Channel Source Address Mode bit 0 position. */ +#define DMA_CH_SRCDIR1_bm (1<<5) /* Channel Source Address Mode bit 1 mask. */ +#define DMA_CH_SRCDIR1_bp 5 /* Channel Source Address Mode bit 1 position. */ + +#define DMA_CH_DESTRELOAD_gm 0x0C /* Channel Destination Address Reload group mask. */ +#define DMA_CH_DESTRELOAD_gp 2 /* Channel Destination Address Reload group position. */ +#define DMA_CH_DESTRELOAD0_bm (1<<2) /* Channel Destination Address Reload bit 0 mask. */ +#define DMA_CH_DESTRELOAD0_bp 2 /* Channel Destination Address Reload bit 0 position. */ +#define DMA_CH_DESTRELOAD1_bm (1<<3) /* Channel Destination Address Reload bit 1 mask. */ +#define DMA_CH_DESTRELOAD1_bp 3 /* Channel Destination Address Reload bit 1 position. */ + +#define DMA_CH_DESTDIR_gm 0x03 /* Channel Destination Address Mode group mask. */ +#define DMA_CH_DESTDIR_gp 0 /* Channel Destination Address Mode group position. */ +#define DMA_CH_DESTDIR0_bm (1<<0) /* Channel Destination Address Mode bit 0 mask. */ +#define DMA_CH_DESTDIR0_bp 0 /* Channel Destination Address Mode bit 0 position. */ +#define DMA_CH_DESTDIR1_bm (1<<1) /* Channel Destination Address Mode bit 1 mask. */ +#define DMA_CH_DESTDIR1_bp 1 /* Channel Destination Address Mode bit 1 position. */ + + +/* DMA_CH.TRIGSRC bit masks and bit positions */ +#define DMA_CH_TRIGSRC_gm 0xFF /* Channel Trigger Source group mask. */ +#define DMA_CH_TRIGSRC_gp 0 /* Channel Trigger Source group position. */ +#define DMA_CH_TRIGSRC0_bm (1<<0) /* Channel Trigger Source bit 0 mask. */ +#define DMA_CH_TRIGSRC0_bp 0 /* Channel Trigger Source bit 0 position. */ +#define DMA_CH_TRIGSRC1_bm (1<<1) /* Channel Trigger Source bit 1 mask. */ +#define DMA_CH_TRIGSRC1_bp 1 /* Channel Trigger Source bit 1 position. */ +#define DMA_CH_TRIGSRC2_bm (1<<2) /* Channel Trigger Source bit 2 mask. */ +#define DMA_CH_TRIGSRC2_bp 2 /* Channel Trigger Source bit 2 position. */ +#define DMA_CH_TRIGSRC3_bm (1<<3) /* Channel Trigger Source bit 3 mask. */ +#define DMA_CH_TRIGSRC3_bp 3 /* Channel Trigger Source bit 3 position. */ +#define DMA_CH_TRIGSRC4_bm (1<<4) /* Channel Trigger Source bit 4 mask. */ +#define DMA_CH_TRIGSRC4_bp 4 /* Channel Trigger Source bit 4 position. */ +#define DMA_CH_TRIGSRC5_bm (1<<5) /* Channel Trigger Source bit 5 mask. */ +#define DMA_CH_TRIGSRC5_bp 5 /* Channel Trigger Source bit 5 position. */ +#define DMA_CH_TRIGSRC6_bm (1<<6) /* Channel Trigger Source bit 6 mask. */ +#define DMA_CH_TRIGSRC6_bp 6 /* Channel Trigger Source bit 6 position. */ +#define DMA_CH_TRIGSRC7_bm (1<<7) /* Channel Trigger Source bit 7 mask. */ +#define DMA_CH_TRIGSRC7_bp 7 /* Channel Trigger Source bit 7 position. */ + + +/* DMA.CTRL bit masks and bit positions */ +#define DMA_ENABLE_bm 0x80 /* Enable bit mask. */ +#define DMA_ENABLE_bp 7 /* Enable bit position. */ + +#define DMA_RESET_bm 0x40 /* Software Reset bit mask. */ +#define DMA_RESET_bp 6 /* Software Reset bit position. */ + +#define DMA_DBUFMODE_gm 0x0C /* Double Buffering Mode group mask. */ +#define DMA_DBUFMODE_gp 2 /* Double Buffering Mode group position. */ +#define DMA_DBUFMODE0_bm (1<<2) /* Double Buffering Mode bit 0 mask. */ +#define DMA_DBUFMODE0_bp 2 /* Double Buffering Mode bit 0 position. */ +#define DMA_DBUFMODE1_bm (1<<3) /* Double Buffering Mode bit 1 mask. */ +#define DMA_DBUFMODE1_bp 3 /* Double Buffering Mode bit 1 position. */ + +#define DMA_PRIMODE_gm 0x03 /* Channel Priority Mode group mask. */ +#define DMA_PRIMODE_gp 0 /* Channel Priority Mode group position. */ +#define DMA_PRIMODE0_bm (1<<0) /* Channel Priority Mode bit 0 mask. */ +#define DMA_PRIMODE0_bp 0 /* Channel Priority Mode bit 0 position. */ +#define DMA_PRIMODE1_bm (1<<1) /* Channel Priority Mode bit 1 mask. */ +#define DMA_PRIMODE1_bp 1 /* Channel Priority Mode bit 1 position. */ + + +/* DMA.INTFLAGS bit masks and bit positions */ +#define DMA_CH3ERRIF_bm 0x80 /* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH3ERRIF_bp 7 /* Channel 3 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH2ERRIF_bm 0x40 /* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH2ERRIF_bp 6 /* Channel 2 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH1ERRIF_bm 0x20 /* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH1ERRIF_bp 5 /* Channel 1 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH0ERRIF_bm 0x10 /* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH0ERRIF_bp 4 /* Channel 0 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH3TRNIF_bm 0x08 /* Channel 3 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH3TRNIF_bp 3 /* Channel 3 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH2TRNIF_bm 0x04 /* Channel 2 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH2TRNIF_bp 2 /* Channel 2 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH1TRNIF_bm 0x02 /* Channel 1 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH1TRNIF_bp 1 /* Channel 1 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH0TRNIF_bm 0x01 /* Channel 0 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH0TRNIF_bp 0 /* Channel 0 Transaction Complete Interrupt Flag bit position. */ + + +/* DMA.STATUS bit masks and bit positions */ +#define DMA_CH3BUSY_bm 0x80 /* Channel 3 Block Transfer Busy bit mask. */ +#define DMA_CH3BUSY_bp 7 /* Channel 3 Block Transfer Busy bit position. */ + +#define DMA_CH2BUSY_bm 0x40 /* Channel 2 Block Transfer Busy bit mask. */ +#define DMA_CH2BUSY_bp 6 /* Channel 2 Block Transfer Busy bit position. */ + +#define DMA_CH1BUSY_bm 0x20 /* Channel 1 Block Transfer Busy bit mask. */ +#define DMA_CH1BUSY_bp 5 /* Channel 1 Block Transfer Busy bit position. */ + +#define DMA_CH0BUSY_bm 0x10 /* Channel 0 Block Transfer Busy bit mask. */ +#define DMA_CH0BUSY_bp 4 /* Channel 0 Block Transfer Busy bit position. */ + +#define DMA_CH3PEND_bm 0x08 /* Channel 3 Block Transfer Pending bit mask. */ +#define DMA_CH3PEND_bp 3 /* Channel 3 Block Transfer Pending bit position. */ + +#define DMA_CH2PEND_bm 0x04 /* Channel 2 Block Transfer Pending bit mask. */ +#define DMA_CH2PEND_bp 2 /* Channel 2 Block Transfer Pending bit position. */ + +#define DMA_CH1PEND_bm 0x02 /* Channel 1 Block Transfer Pending bit mask. */ +#define DMA_CH1PEND_bp 1 /* Channel 1 Block Transfer Pending bit position. */ + +#define DMA_CH0PEND_bm 0x01 /* Channel 0 Block Transfer Pending bit mask. */ +#define DMA_CH0PEND_bp 0 /* Channel 0 Block Transfer Pending bit position. */ + + +/* EVSYS - Event System */ +/* EVSYS.CH0MUX bit masks and bit positions */ +#define EVSYS_CHMUX_gm 0xFF /* Event Channel 0 Multiplexer group mask. */ +#define EVSYS_CHMUX_gp 0 /* Event Channel 0 Multiplexer group position. */ +#define EVSYS_CHMUX0_bm (1<<0) /* Event Channel 0 Multiplexer bit 0 mask. */ +#define EVSYS_CHMUX0_bp 0 /* Event Channel 0 Multiplexer bit 0 position. */ +#define EVSYS_CHMUX1_bm (1<<1) /* Event Channel 0 Multiplexer bit 1 mask. */ +#define EVSYS_CHMUX1_bp 1 /* Event Channel 0 Multiplexer bit 1 position. */ +#define EVSYS_CHMUX2_bm (1<<2) /* Event Channel 0 Multiplexer bit 2 mask. */ +#define EVSYS_CHMUX2_bp 2 /* Event Channel 0 Multiplexer bit 2 position. */ +#define EVSYS_CHMUX3_bm (1<<3) /* Event Channel 0 Multiplexer bit 3 mask. */ +#define EVSYS_CHMUX3_bp 3 /* Event Channel 0 Multiplexer bit 3 position. */ +#define EVSYS_CHMUX4_bm (1<<4) /* Event Channel 0 Multiplexer bit 4 mask. */ +#define EVSYS_CHMUX4_bp 4 /* Event Channel 0 Multiplexer bit 4 position. */ +#define EVSYS_CHMUX5_bm (1<<5) /* Event Channel 0 Multiplexer bit 5 mask. */ +#define EVSYS_CHMUX5_bp 5 /* Event Channel 0 Multiplexer bit 5 position. */ +#define EVSYS_CHMUX6_bm (1<<6) /* Event Channel 0 Multiplexer bit 6 mask. */ +#define EVSYS_CHMUX6_bp 6 /* Event Channel 0 Multiplexer bit 6 position. */ +#define EVSYS_CHMUX7_bm (1<<7) /* Event Channel 0 Multiplexer bit 7 mask. */ +#define EVSYS_CHMUX7_bp 7 /* Event Channel 0 Multiplexer bit 7 position. */ + + +/* EVSYS.CH1MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH2MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH3MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH4MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH5MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH6MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH7MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH0CTRL bit masks and bit positions */ +#define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ +#define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ +#define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ +#define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ +#define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ +#define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ + +#define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ +#define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ + +#define EVSYS_QDEN_bm 0x08 /* Quadrature Decoder Enable bit mask. */ +#define EVSYS_QDEN_bp 3 /* Quadrature Decoder Enable bit position. */ + +#define EVSYS_DIGFILT_gm 0x07 /* Digital Filter group mask. */ +#define EVSYS_DIGFILT_gp 0 /* Digital Filter group position. */ +#define EVSYS_DIGFILT0_bm (1<<0) /* Digital Filter bit 0 mask. */ +#define EVSYS_DIGFILT0_bp 0 /* Digital Filter bit 0 position. */ +#define EVSYS_DIGFILT1_bm (1<<1) /* Digital Filter bit 1 mask. */ +#define EVSYS_DIGFILT1_bp 1 /* Digital Filter bit 1 position. */ +#define EVSYS_DIGFILT2_bm (1<<2) /* Digital Filter bit 2 mask. */ +#define EVSYS_DIGFILT2_bp 2 /* Digital Filter bit 2 position. */ + + +/* EVSYS.CH1CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH2CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH3CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH4CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH5CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH6CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH7CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* NVM - Non Volatile Memory Controller */ +/* NVM.CMD bit masks and bit positions */ +#define NVM_CMD_gm 0xFF /* Command group mask. */ +#define NVM_CMD_gp 0 /* Command group position. */ +#define NVM_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define NVM_CMD0_bp 0 /* Command bit 0 position. */ +#define NVM_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define NVM_CMD1_bp 1 /* Command bit 1 position. */ +#define NVM_CMD2_bm (1<<2) /* Command bit 2 mask. */ +#define NVM_CMD2_bp 2 /* Command bit 2 position. */ +#define NVM_CMD3_bm (1<<3) /* Command bit 3 mask. */ +#define NVM_CMD3_bp 3 /* Command bit 3 position. */ +#define NVM_CMD4_bm (1<<4) /* Command bit 4 mask. */ +#define NVM_CMD4_bp 4 /* Command bit 4 position. */ +#define NVM_CMD5_bm (1<<5) /* Command bit 5 mask. */ +#define NVM_CMD5_bp 5 /* Command bit 5 position. */ +#define NVM_CMD6_bm (1<<6) /* Command bit 6 mask. */ +#define NVM_CMD6_bp 6 /* Command bit 6 position. */ +#define NVM_CMD7_bm (1<<7) /* Command bit 7 mask. */ +#define NVM_CMD7_bp 7 /* Command bit 7 position. */ + + +/* NVM.CTRLA bit masks and bit positions */ +#define NVM_CMDEX_bm 0x01 /* Command Execute bit mask. */ +#define NVM_CMDEX_bp 0 /* Command Execute bit position. */ + + +/* NVM.CTRLB bit masks and bit positions */ +#define NVM_EEMAPEN_bm 0x08 /* EEPROM Mapping Enable bit mask. */ +#define NVM_EEMAPEN_bp 3 /* EEPROM Mapping Enable bit position. */ + +#define NVM_FPRM_bm 0x04 /* Flash Power Reduction Enable bit mask. */ +#define NVM_FPRM_bp 2 /* Flash Power Reduction Enable bit position. */ + +#define NVM_EPRM_bm 0x02 /* EEPROM Power Reduction Enable bit mask. */ +#define NVM_EPRM_bp 1 /* EEPROM Power Reduction Enable bit position. */ + +#define NVM_SPMLOCK_bm 0x01 /* SPM Lock bit mask. */ +#define NVM_SPMLOCK_bp 0 /* SPM Lock bit position. */ + + +/* NVM.INTCTRL bit masks and bit positions */ +#define NVM_SPMLVL_gm 0x0C /* SPM Interrupt Level group mask. */ +#define NVM_SPMLVL_gp 2 /* SPM Interrupt Level group position. */ +#define NVM_SPMLVL0_bm (1<<2) /* SPM Interrupt Level bit 0 mask. */ +#define NVM_SPMLVL0_bp 2 /* SPM Interrupt Level bit 0 position. */ +#define NVM_SPMLVL1_bm (1<<3) /* SPM Interrupt Level bit 1 mask. */ +#define NVM_SPMLVL1_bp 3 /* SPM Interrupt Level bit 1 position. */ + +#define NVM_EELVL_gm 0x03 /* EEPROM Interrupt Level group mask. */ +#define NVM_EELVL_gp 0 /* EEPROM Interrupt Level group position. */ +#define NVM_EELVL0_bm (1<<0) /* EEPROM Interrupt Level bit 0 mask. */ +#define NVM_EELVL0_bp 0 /* EEPROM Interrupt Level bit 0 position. */ +#define NVM_EELVL1_bm (1<<1) /* EEPROM Interrupt Level bit 1 mask. */ +#define NVM_EELVL1_bp 1 /* EEPROM Interrupt Level bit 1 position. */ + + +/* NVM.STATUS bit masks and bit positions */ +#define NVM_NVMBUSY_bm 0x80 /* Non-volatile Memory Busy bit mask. */ +#define NVM_NVMBUSY_bp 7 /* Non-volatile Memory Busy bit position. */ + +#define NVM_FBUSY_bm 0x40 /* Flash Memory Busy bit mask. */ +#define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ + +#define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ +#define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ + +#define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ +#define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ + + +/* NVM.LOCKBITS bit masks and bit positions */ +#define NVM_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ +#define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LOCKBITS_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LOCKBITS_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LOCKBITS_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LOCKBITS_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE0 bit masks and bit positions */ +#define NVM_FUSES_JTAGUSERID_gm 0xFF /* JTAG User ID group mask. */ +#define NVM_FUSES_JTAGUSERID_gp 0 /* JTAG User ID group position. */ +#define NVM_FUSES_JTAGUSERID0_bm (1<<0) /* JTAG User ID bit 0 mask. */ +#define NVM_FUSES_JTAGUSERID0_bp 0 /* JTAG User ID bit 0 position. */ +#define NVM_FUSES_JTAGUSERID1_bm (1<<1) /* JTAG User ID bit 1 mask. */ +#define NVM_FUSES_JTAGUSERID1_bp 1 /* JTAG User ID bit 1 position. */ +#define NVM_FUSES_JTAGUSERID2_bm (1<<2) /* JTAG User ID bit 2 mask. */ +#define NVM_FUSES_JTAGUSERID2_bp 2 /* JTAG User ID bit 2 position. */ +#define NVM_FUSES_JTAGUSERID3_bm (1<<3) /* JTAG User ID bit 3 mask. */ +#define NVM_FUSES_JTAGUSERID3_bp 3 /* JTAG User ID bit 3 position. */ +#define NVM_FUSES_JTAGUSERID4_bm (1<<4) /* JTAG User ID bit 4 mask. */ +#define NVM_FUSES_JTAGUSERID4_bp 4 /* JTAG User ID bit 4 position. */ +#define NVM_FUSES_JTAGUSERID5_bm (1<<5) /* JTAG User ID bit 5 mask. */ +#define NVM_FUSES_JTAGUSERID5_bp 5 /* JTAG User ID bit 5 position. */ +#define NVM_FUSES_JTAGUSERID6_bm (1<<6) /* JTAG User ID bit 6 mask. */ +#define NVM_FUSES_JTAGUSERID6_bp 6 /* JTAG User ID bit 6 position. */ +#define NVM_FUSES_JTAGUSERID7_bm (1<<7) /* JTAG User ID bit 7 mask. */ +#define NVM_FUSES_JTAGUSERID7_bp 7 /* JTAG User ID bit 7 position. */ + + +/* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ +#define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ +#define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ +#define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ +#define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ +#define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ +#define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ + +#define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ +#define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ +#define NVM_FUSES_WDP0_bm (1<<0) /* Watchdog Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDP0_bp 0 /* Watchdog Timeout Period bit 0 position. */ +#define NVM_FUSES_WDP1_bm (1<<1) /* Watchdog Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDP1_bp 1 /* Watchdog Timeout Period bit 1 position. */ +#define NVM_FUSES_WDP2_bm (1<<2) /* Watchdog Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDP2_bp 2 /* Watchdog Timeout Period bit 2 position. */ +#define NVM_FUSES_WDP3_bm (1<<3) /* Watchdog Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDP3_bp 3 /* Watchdog Timeout Period bit 3 position. */ + + +/* NVM_FUSES.FUSEBYTE2 bit masks and bit positions */ +#define NVM_FUSES_DVSDON_bm 0x80 /* Spike Detector Enable bit mask. */ +#define NVM_FUSES_DVSDON_bp 7 /* Spike Detector Enable bit position. */ + +#define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ +#define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ + +#define NVM_FUSES_BODACT_gm 0x0C /* BOD Operation in Active Mode group mask. */ +#define NVM_FUSES_BODACT_gp 2 /* BOD Operation in Active Mode group position. */ +#define NVM_FUSES_BODACT0_bm (1<<2) /* BOD Operation in Active Mode bit 0 mask. */ +#define NVM_FUSES_BODACT0_bp 2 /* BOD Operation in Active Mode bit 0 position. */ +#define NVM_FUSES_BODACT1_bm (1<<3) /* BOD Operation in Active Mode bit 1 mask. */ +#define NVM_FUSES_BODACT1_bp 3 /* BOD Operation in Active Mode bit 1 position. */ + +#define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ +#define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ +#define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ +#define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ +#define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ +#define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ +#define NVM_FUSES_SUT_gm 0x0C /* Start-up Time group mask. */ +#define NVM_FUSES_SUT_gp 2 /* Start-up Time group position. */ +#define NVM_FUSES_SUT0_bm (1<<2) /* Start-up Time bit 0 mask. */ +#define NVM_FUSES_SUT0_bp 2 /* Start-up Time bit 0 position. */ +#define NVM_FUSES_SUT1_bm (1<<3) /* Start-up Time bit 1 mask. */ +#define NVM_FUSES_SUT1_bp 3 /* Start-up Time bit 1 position. */ + +#define NVM_FUSES_WDLOCK_bm 0x02 /* Watchdog Timer Lock bit mask. */ +#define NVM_FUSES_WDLOCK_bp 1 /* Watchdog Timer Lock bit position. */ + +#define NVM_FUSES_JTAGEN_bm 0x01 /* JTAG Interface Enable bit mask. */ +#define NVM_FUSES_JTAGEN_bp 0 /* JTAG Interface Enable bit position. */ + + +/* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ +#define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ +#define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ + +#define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ +#define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ +#define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ +#define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ +#define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ +#define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ +#define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ +#define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ + + +/* AC - Analog Comparator */ +/* AC.AC0CTRL bit masks and bit positions */ +#define AC_INTMODE_gm 0xC0 /* Interrupt Mode group mask. */ +#define AC_INTMODE_gp 6 /* Interrupt Mode group position. */ +#define AC_INTMODE0_bm (1<<6) /* Interrupt Mode bit 0 mask. */ +#define AC_INTMODE0_bp 6 /* Interrupt Mode bit 0 position. */ +#define AC_INTMODE1_bm (1<<7) /* Interrupt Mode bit 1 mask. */ +#define AC_INTMODE1_bp 7 /* Interrupt Mode bit 1 position. */ + +#define AC_INTLVL_gm 0x30 /* Interrupt Level group mask. */ +#define AC_INTLVL_gp 4 /* Interrupt Level group position. */ +#define AC_INTLVL0_bm (1<<4) /* Interrupt Level bit 0 mask. */ +#define AC_INTLVL0_bp 4 /* Interrupt Level bit 0 position. */ +#define AC_INTLVL1_bm (1<<5) /* Interrupt Level bit 1 mask. */ +#define AC_INTLVL1_bp 5 /* Interrupt Level bit 1 position. */ + +#define AC_HSMODE_bm 0x08 /* High-speed Mode bit mask. */ +#define AC_HSMODE_bp 3 /* High-speed Mode bit position. */ + +#define AC_HYSMODE_gm 0x06 /* Hysteresis Mode group mask. */ +#define AC_HYSMODE_gp 1 /* Hysteresis Mode group position. */ +#define AC_HYSMODE0_bm (1<<1) /* Hysteresis Mode bit 0 mask. */ +#define AC_HYSMODE0_bp 1 /* Hysteresis Mode bit 0 position. */ +#define AC_HYSMODE1_bm (1<<2) /* Hysteresis Mode bit 1 mask. */ +#define AC_HYSMODE1_bp 2 /* Hysteresis Mode bit 1 position. */ + +#define AC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define AC_ENABLE_bp 0 /* Enable bit position. */ + + +/* AC.AC1CTRL bit masks and bit positions */ +/* AC_INTMODE_gm Predefined. */ +/* AC_INTMODE_gp Predefined. */ +/* AC_INTMODE0_bm Predefined. */ +/* AC_INTMODE0_bp Predefined. */ +/* AC_INTMODE1_bm Predefined. */ +/* AC_INTMODE1_bp Predefined. */ + +/* AC_INTLVL_gm Predefined. */ +/* AC_INTLVL_gp Predefined. */ +/* AC_INTLVL0_bm Predefined. */ +/* AC_INTLVL0_bp Predefined. */ +/* AC_INTLVL1_bm Predefined. */ +/* AC_INTLVL1_bp Predefined. */ + +/* AC_HSMODE_bm Predefined. */ +/* AC_HSMODE_bp Predefined. */ + +/* AC_HYSMODE_gm Predefined. */ +/* AC_HYSMODE_gp Predefined. */ +/* AC_HYSMODE0_bm Predefined. */ +/* AC_HYSMODE0_bp Predefined. */ +/* AC_HYSMODE1_bm Predefined. */ +/* AC_HYSMODE1_bp Predefined. */ + +/* AC_ENABLE_bm Predefined. */ +/* AC_ENABLE_bp Predefined. */ + + +/* AC.AC0MUXCTRL bit masks and bit positions */ +#define AC_MUXPOS_gm 0x38 /* MUX Positive Input group mask. */ +#define AC_MUXPOS_gp 3 /* MUX Positive Input group position. */ +#define AC_MUXPOS0_bm (1<<3) /* MUX Positive Input bit 0 mask. */ +#define AC_MUXPOS0_bp 3 /* MUX Positive Input bit 0 position. */ +#define AC_MUXPOS1_bm (1<<4) /* MUX Positive Input bit 1 mask. */ +#define AC_MUXPOS1_bp 4 /* MUX Positive Input bit 1 position. */ +#define AC_MUXPOS2_bm (1<<5) /* MUX Positive Input bit 2 mask. */ +#define AC_MUXPOS2_bp 5 /* MUX Positive Input bit 2 position. */ + +#define AC_MUXNEG_gm 0x07 /* MUX Negative Input group mask. */ +#define AC_MUXNEG_gp 0 /* MUX Negative Input group position. */ +#define AC_MUXNEG0_bm (1<<0) /* MUX Negative Input bit 0 mask. */ +#define AC_MUXNEG0_bp 0 /* MUX Negative Input bit 0 position. */ +#define AC_MUXNEG1_bm (1<<1) /* MUX Negative Input bit 1 mask. */ +#define AC_MUXNEG1_bp 1 /* MUX Negative Input bit 1 position. */ +#define AC_MUXNEG2_bm (1<<2) /* MUX Negative Input bit 2 mask. */ +#define AC_MUXNEG2_bp 2 /* MUX Negative Input bit 2 position. */ + + +/* AC.AC1MUXCTRL bit masks and bit positions */ +/* AC_MUXPOS_gm Predefined. */ +/* AC_MUXPOS_gp Predefined. */ +/* AC_MUXPOS0_bm Predefined. */ +/* AC_MUXPOS0_bp Predefined. */ +/* AC_MUXPOS1_bm Predefined. */ +/* AC_MUXPOS1_bp Predefined. */ +/* AC_MUXPOS2_bm Predefined. */ +/* AC_MUXPOS2_bp Predefined. */ + +/* AC_MUXNEG_gm Predefined. */ +/* AC_MUXNEG_gp Predefined. */ +/* AC_MUXNEG0_bm Predefined. */ +/* AC_MUXNEG0_bp Predefined. */ +/* AC_MUXNEG1_bm Predefined. */ +/* AC_MUXNEG1_bp Predefined. */ +/* AC_MUXNEG2_bm Predefined. */ +/* AC_MUXNEG2_bp Predefined. */ + + +/* AC.CTRLA bit masks and bit positions */ +#define AC_AC0OUT_bm 0x01 /* Comparator 0 Output Enable bit mask. */ +#define AC_AC0OUT_bp 0 /* Comparator 0 Output Enable bit position. */ + + +/* AC.CTRLB bit masks and bit positions */ +#define AC_SCALEFAC_gm 0x3F /* VCC Voltage Scaler Factor group mask. */ +#define AC_SCALEFAC_gp 0 /* VCC Voltage Scaler Factor group position. */ +#define AC_SCALEFAC0_bm (1<<0) /* VCC Voltage Scaler Factor bit 0 mask. */ +#define AC_SCALEFAC0_bp 0 /* VCC Voltage Scaler Factor bit 0 position. */ +#define AC_SCALEFAC1_bm (1<<1) /* VCC Voltage Scaler Factor bit 1 mask. */ +#define AC_SCALEFAC1_bp 1 /* VCC Voltage Scaler Factor bit 1 position. */ +#define AC_SCALEFAC2_bm (1<<2) /* VCC Voltage Scaler Factor bit 2 mask. */ +#define AC_SCALEFAC2_bp 2 /* VCC Voltage Scaler Factor bit 2 position. */ +#define AC_SCALEFAC3_bm (1<<3) /* VCC Voltage Scaler Factor bit 3 mask. */ +#define AC_SCALEFAC3_bp 3 /* VCC Voltage Scaler Factor bit 3 position. */ +#define AC_SCALEFAC4_bm (1<<4) /* VCC Voltage Scaler Factor bit 4 mask. */ +#define AC_SCALEFAC4_bp 4 /* VCC Voltage Scaler Factor bit 4 position. */ +#define AC_SCALEFAC5_bm (1<<5) /* VCC Voltage Scaler Factor bit 5 mask. */ +#define AC_SCALEFAC5_bp 5 /* VCC Voltage Scaler Factor bit 5 position. */ + + +/* AC.WINCTRL bit masks and bit positions */ +#define AC_WEN_bm 0x10 /* Window Mode Enable bit mask. */ +#define AC_WEN_bp 4 /* Window Mode Enable bit position. */ + +#define AC_WINTMODE_gm 0x0C /* Window Interrupt Mode group mask. */ +#define AC_WINTMODE_gp 2 /* Window Interrupt Mode group position. */ +#define AC_WINTMODE0_bm (1<<2) /* Window Interrupt Mode bit 0 mask. */ +#define AC_WINTMODE0_bp 2 /* Window Interrupt Mode bit 0 position. */ +#define AC_WINTMODE1_bm (1<<3) /* Window Interrupt Mode bit 1 mask. */ +#define AC_WINTMODE1_bp 3 /* Window Interrupt Mode bit 1 position. */ + +#define AC_WINTLVL_gm 0x03 /* Window Interrupt Level group mask. */ +#define AC_WINTLVL_gp 0 /* Window Interrupt Level group position. */ +#define AC_WINTLVL0_bm (1<<0) /* Window Interrupt Level bit 0 mask. */ +#define AC_WINTLVL0_bp 0 /* Window Interrupt Level bit 0 position. */ +#define AC_WINTLVL1_bm (1<<1) /* Window Interrupt Level bit 1 mask. */ +#define AC_WINTLVL1_bp 1 /* Window Interrupt Level bit 1 position. */ + + +/* AC.STATUS bit masks and bit positions */ +#define AC_WSTATE_gm 0xC0 /* Window Mode State group mask. */ +#define AC_WSTATE_gp 6 /* Window Mode State group position. */ +#define AC_WSTATE0_bm (1<<6) /* Window Mode State bit 0 mask. */ +#define AC_WSTATE0_bp 6 /* Window Mode State bit 0 position. */ +#define AC_WSTATE1_bm (1<<7) /* Window Mode State bit 1 mask. */ +#define AC_WSTATE1_bp 7 /* Window Mode State bit 1 position. */ + +#define AC_AC1STATE_bm 0x20 /* Comparator 1 State bit mask. */ +#define AC_AC1STATE_bp 5 /* Comparator 1 State bit position. */ + +#define AC_AC0STATE_bm 0x10 /* Comparator 0 State bit mask. */ +#define AC_AC0STATE_bp 4 /* Comparator 0 State bit position. */ + +#define AC_WIF_bm 0x04 /* Window Mode Interrupt Flag bit mask. */ +#define AC_WIF_bp 2 /* Window Mode Interrupt Flag bit position. */ + +#define AC_AC1IF_bm 0x02 /* Comparator 1 Interrupt Flag bit mask. */ +#define AC_AC1IF_bp 1 /* Comparator 1 Interrupt Flag bit position. */ + +#define AC_AC0IF_bm 0x01 /* Comparator 0 Interrupt Flag bit mask. */ +#define AC_AC0IF_bp 0 /* Comparator 0 Interrupt Flag bit position. */ + + +/* ADC - Analog/Digital Converter */ +/* ADC_CH.CTRL bit masks and bit positions */ +#define ADC_CH_START_bm 0x80 /* Channel Start Conversion bit mask. */ +#define ADC_CH_START_bp 7 /* Channel Start Conversion bit position. */ + +#define ADC_CH_GAINFAC_gm 0x1C /* Gain Factor group mask. */ +#define ADC_CH_GAINFAC_gp 2 /* Gain Factor group position. */ +#define ADC_CH_GAINFAC0_bm (1<<2) /* Gain Factor bit 0 mask. */ +#define ADC_CH_GAINFAC0_bp 2 /* Gain Factor bit 0 position. */ +#define ADC_CH_GAINFAC1_bm (1<<3) /* Gain Factor bit 1 mask. */ +#define ADC_CH_GAINFAC1_bp 3 /* Gain Factor bit 1 position. */ +#define ADC_CH_GAINFAC2_bm (1<<4) /* Gain Factor bit 2 mask. */ +#define ADC_CH_GAINFAC2_bp 4 /* Gain Factor bit 2 position. */ + +#define ADC_CH_INPUTMODE_gm 0x03 /* Input Mode Select group mask. */ +#define ADC_CH_INPUTMODE_gp 0 /* Input Mode Select group position. */ +#define ADC_CH_INPUTMODE0_bm (1<<0) /* Input Mode Select bit 0 mask. */ +#define ADC_CH_INPUTMODE0_bp 0 /* Input Mode Select bit 0 position. */ +#define ADC_CH_INPUTMODE1_bm (1<<1) /* Input Mode Select bit 1 mask. */ +#define ADC_CH_INPUTMODE1_bp 1 /* Input Mode Select bit 1 position. */ + + +/* ADC_CH.MUXCTRL bit masks and bit positions */ +#define ADC_CH_MUXPOS_gm 0x78 /* Positive Input Select group mask. */ +#define ADC_CH_MUXPOS_gp 3 /* Positive Input Select group position. */ +#define ADC_CH_MUXPOS0_bm (1<<3) /* Positive Input Select bit 0 mask. */ +#define ADC_CH_MUXPOS0_bp 3 /* Positive Input Select bit 0 position. */ +#define ADC_CH_MUXPOS1_bm (1<<4) /* Positive Input Select bit 1 mask. */ +#define ADC_CH_MUXPOS1_bp 4 /* Positive Input Select bit 1 position. */ +#define ADC_CH_MUXPOS2_bm (1<<5) /* Positive Input Select bit 2 mask. */ +#define ADC_CH_MUXPOS2_bp 5 /* Positive Input Select bit 2 position. */ +#define ADC_CH_MUXPOS3_bm (1<<6) /* Positive Input Select bit 3 mask. */ +#define ADC_CH_MUXPOS3_bp 6 /* Positive Input Select bit 3 position. */ + +#define ADC_CH_MUXINT_gm 0x78 /* Internal Input Select group mask. */ +#define ADC_CH_MUXINT_gp 3 /* Internal Input Select group position. */ +#define ADC_CH_MUXINT0_bm (1<<3) /* Internal Input Select bit 0 mask. */ +#define ADC_CH_MUXINT0_bp 3 /* Internal Input Select bit 0 position. */ +#define ADC_CH_MUXINT1_bm (1<<4) /* Internal Input Select bit 1 mask. */ +#define ADC_CH_MUXINT1_bp 4 /* Internal Input Select bit 1 position. */ +#define ADC_CH_MUXINT2_bm (1<<5) /* Internal Input Select bit 2 mask. */ +#define ADC_CH_MUXINT2_bp 5 /* Internal Input Select bit 2 position. */ +#define ADC_CH_MUXINT3_bm (1<<6) /* Internal Input Select bit 3 mask. */ +#define ADC_CH_MUXINT3_bp 6 /* Internal Input Select bit 3 position. */ + +#define ADC_CH_MUXNEG_gm 0x03 /* Negative Input Select group mask. */ +#define ADC_CH_MUXNEG_gp 0 /* Negative Input Select group position. */ +#define ADC_CH_MUXNEG0_bm (1<<0) /* Negative Input Select bit 0 mask. */ +#define ADC_CH_MUXNEG0_bp 0 /* Negative Input Select bit 0 position. */ +#define ADC_CH_MUXNEG1_bm (1<<1) /* Negative Input Select bit 1 mask. */ +#define ADC_CH_MUXNEG1_bp 1 /* Negative Input Select bit 1 position. */ + + +/* ADC_CH.INTCTRL bit masks and bit positions */ +#define ADC_CH_INTMODE_gm 0x0C /* Interrupt Mode group mask. */ +#define ADC_CH_INTMODE_gp 2 /* Interrupt Mode group position. */ +#define ADC_CH_INTMODE0_bm (1<<2) /* Interrupt Mode bit 0 mask. */ +#define ADC_CH_INTMODE0_bp 2 /* Interrupt Mode bit 0 position. */ +#define ADC_CH_INTMODE1_bm (1<<3) /* Interrupt Mode bit 1 mask. */ +#define ADC_CH_INTMODE1_bp 3 /* Interrupt Mode bit 1 position. */ + +#define ADC_CH_INTLVL_gm 0x03 /* Interrupt Level group mask. */ +#define ADC_CH_INTLVL_gp 0 /* Interrupt Level group position. */ +#define ADC_CH_INTLVL0_bm (1<<0) /* Interrupt Level bit 0 mask. */ +#define ADC_CH_INTLVL0_bp 0 /* Interrupt Level bit 0 position. */ +#define ADC_CH_INTLVL1_bm (1<<1) /* Interrupt Level bit 1 mask. */ +#define ADC_CH_INTLVL1_bp 1 /* Interrupt Level bit 1 position. */ + + +/* ADC_CH.INTFLAGS bit masks and bit positions */ +#define ADC_CH_CHIF_bm 0x01 /* Channel Interrupt Flag bit mask. */ +#define ADC_CH_CHIF_bp 0 /* Channel Interrupt Flag bit position. */ + + +/* ADC.CTRLA bit masks and bit positions */ +#define ADC_DMASEL_gm 0xE0 /* DMA Selection group mask. */ +#define ADC_DMASEL_gp 5 /* DMA Selection group position. */ +#define ADC_DMASEL0_bm (1<<5) /* DMA Selection bit 0 mask. */ +#define ADC_DMASEL0_bp 5 /* DMA Selection bit 0 position. */ +#define ADC_DMASEL1_bm (1<<6) /* DMA Selection bit 1 mask. */ +#define ADC_DMASEL1_bp 6 /* DMA Selection bit 1 position. */ +#define ADC_DMASEL2_bm (1<<7) /* DMA Selection bit 2 mask. */ +#define ADC_DMASEL2_bp 7 /* DMA Selection bit 2 position. */ + +#define ADC_CH3START_bm 0x20 /* Channel 3 Start Conversion bit mask. */ +#define ADC_CH3START_bp 5 /* Channel 3 Start Conversion bit position. */ + +#define ADC_CH2START_bm 0x10 /* Channel 2 Start Conversion bit mask. */ +#define ADC_CH2START_bp 4 /* Channel 2 Start Conversion bit position. */ + +#define ADC_CH1START_bm 0x08 /* Channel 1 Start Conversion bit mask. */ +#define ADC_CH1START_bp 3 /* Channel 1 Start Conversion bit position. */ + +#define ADC_CH0START_bm 0x04 /* Channel 0 Start Conversion bit mask. */ +#define ADC_CH0START_bp 2 /* Channel 0 Start Conversion bit position. */ + +#define ADC_FLUSH_bm 0x02 /* Flush Pipeline bit mask. */ +#define ADC_FLUSH_bp 1 /* Flush Pipeline bit position. */ + +#define ADC_ENABLE_bm 0x01 /* Enable ADC bit mask. */ +#define ADC_ENABLE_bp 0 /* Enable ADC bit position. */ + + +/* ADC.CTRLB bit masks and bit positions */ +#define ADC_CONMODE_bm 0x10 /* Conversion Mode bit mask. */ +#define ADC_CONMODE_bp 4 /* Conversion Mode bit position. */ + +#define ADC_FREERUN_bm 0x08 /* Free Running Mode Enable bit mask. */ +#define ADC_FREERUN_bp 3 /* Free Running Mode Enable bit position. */ + +#define ADC_RESOLUTION_gm 0x06 /* Result Resolution group mask. */ +#define ADC_RESOLUTION_gp 1 /* Result Resolution group position. */ +#define ADC_RESOLUTION0_bm (1<<1) /* Result Resolution bit 0 mask. */ +#define ADC_RESOLUTION0_bp 1 /* Result Resolution bit 0 position. */ +#define ADC_RESOLUTION1_bm (1<<2) /* Result Resolution bit 1 mask. */ +#define ADC_RESOLUTION1_bp 2 /* Result Resolution bit 1 position. */ + + +/* ADC.REFCTRL bit masks and bit positions */ +#define ADC_REFSEL_gm 0x30 /* Reference Selection group mask. */ +#define ADC_REFSEL_gp 4 /* Reference Selection group position. */ +#define ADC_REFSEL0_bm (1<<4) /* Reference Selection bit 0 mask. */ +#define ADC_REFSEL0_bp 4 /* Reference Selection bit 0 position. */ +#define ADC_REFSEL1_bm (1<<5) /* Reference Selection bit 1 mask. */ +#define ADC_REFSEL1_bp 5 /* Reference Selection bit 1 position. */ + +#define ADC_BANDGAP_bm 0x02 /* Bandgap enable bit mask. */ +#define ADC_BANDGAP_bp 1 /* Bandgap enable bit position. */ + +#define ADC_TEMPREF_bm 0x01 /* Temperature Reference Enable bit mask. */ +#define ADC_TEMPREF_bp 0 /* Temperature Reference Enable bit position. */ + + +/* ADC.EVCTRL bit masks and bit positions */ +#define ADC_SWEEP_gm 0xC0 /* Channel Sweep Selection group mask. */ +#define ADC_SWEEP_gp 6 /* Channel Sweep Selection group position. */ +#define ADC_SWEEP0_bm (1<<6) /* Channel Sweep Selection bit 0 mask. */ +#define ADC_SWEEP0_bp 6 /* Channel Sweep Selection bit 0 position. */ +#define ADC_SWEEP1_bm (1<<7) /* Channel Sweep Selection bit 1 mask. */ +#define ADC_SWEEP1_bp 7 /* Channel Sweep Selection bit 1 position. */ + +#define ADC_EVSEL_gm 0x38 /* Event Input Select group mask. */ +#define ADC_EVSEL_gp 3 /* Event Input Select group position. */ +#define ADC_EVSEL0_bm (1<<3) /* Event Input Select bit 0 mask. */ +#define ADC_EVSEL0_bp 3 /* Event Input Select bit 0 position. */ +#define ADC_EVSEL1_bm (1<<4) /* Event Input Select bit 1 mask. */ +#define ADC_EVSEL1_bp 4 /* Event Input Select bit 1 position. */ +#define ADC_EVSEL2_bm (1<<5) /* Event Input Select bit 2 mask. */ +#define ADC_EVSEL2_bp 5 /* Event Input Select bit 2 position. */ + +#define ADC_EVACT_gm 0x07 /* Event Action Select group mask. */ +#define ADC_EVACT_gp 0 /* Event Action Select group position. */ +#define ADC_EVACT0_bm (1<<0) /* Event Action Select bit 0 mask. */ +#define ADC_EVACT0_bp 0 /* Event Action Select bit 0 position. */ +#define ADC_EVACT1_bm (1<<1) /* Event Action Select bit 1 mask. */ +#define ADC_EVACT1_bp 1 /* Event Action Select bit 1 position. */ +#define ADC_EVACT2_bm (1<<2) /* Event Action Select bit 2 mask. */ +#define ADC_EVACT2_bp 2 /* Event Action Select bit 2 position. */ + + +/* ADC.PRESCALER bit masks and bit positions */ +#define ADC_PRESCALER_gm 0x07 /* Clock Prescaler Selection group mask. */ +#define ADC_PRESCALER_gp 0 /* Clock Prescaler Selection group position. */ +#define ADC_PRESCALER0_bm (1<<0) /* Clock Prescaler Selection bit 0 mask. */ +#define ADC_PRESCALER0_bp 0 /* Clock Prescaler Selection bit 0 position. */ +#define ADC_PRESCALER1_bm (1<<1) /* Clock Prescaler Selection bit 1 mask. */ +#define ADC_PRESCALER1_bp 1 /* Clock Prescaler Selection bit 1 position. */ +#define ADC_PRESCALER2_bm (1<<2) /* Clock Prescaler Selection bit 2 mask. */ +#define ADC_PRESCALER2_bp 2 /* Clock Prescaler Selection bit 2 position. */ + + +/* ADC.CALCTRL bit masks and bit positions */ +#define ADC_CAL_bm 0x01 /* ADC Calibration Start bit mask. */ +#define ADC_CAL_bp 0 /* ADC Calibration Start bit position. */ + + +/* ADC.INTFLAGS bit masks and bit positions */ +#define ADC_CH3IF_bm 0x08 /* Channel 3 Interrupt Flag bit mask. */ +#define ADC_CH3IF_bp 3 /* Channel 3 Interrupt Flag bit position. */ + +#define ADC_CH2IF_bm 0x04 /* Channel 2 Interrupt Flag bit mask. */ +#define ADC_CH2IF_bp 2 /* Channel 2 Interrupt Flag bit position. */ + +#define ADC_CH1IF_bm 0x02 /* Channel 1 Interrupt Flag bit mask. */ +#define ADC_CH1IF_bp 1 /* Channel 1 Interrupt Flag bit position. */ + +#define ADC_CH0IF_bm 0x01 /* Channel 0 Interrupt Flag bit mask. */ +#define ADC_CH0IF_bp 0 /* Channel 0 Interrupt Flag bit position. */ + + +/* DAC - Digital/Analog Converter */ +/* DAC.CTRLA bit masks and bit positions */ +#define DAC_IDOEN_bm 0x10 /* Internal Output Enable bit mask. */ +#define DAC_IDOEN_bp 4 /* Internal Output Enable bit position. */ + +#define DAC_CH1EN_bm 0x08 /* Channel 1 Output Enable bit mask. */ +#define DAC_CH1EN_bp 3 /* Channel 1 Output Enable bit position. */ + +#define DAC_CH0EN_bm 0x04 /* Channel 0 Output Enable bit mask. */ +#define DAC_CH0EN_bp 2 /* Channel 0 Output Enable bit position. */ + +#define DAC_LPMODE_bm 0x02 /* Low Power Mode bit mask. */ +#define DAC_LPMODE_bp 1 /* Low Power Mode bit position. */ + +#define DAC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define DAC_ENABLE_bp 0 /* Enable bit position. */ + + +/* DAC.CTRLB bit masks and bit positions */ +#define DAC_CHSEL_gm 0x60 /* Channel Select group mask. */ +#define DAC_CHSEL_gp 5 /* Channel Select group position. */ +#define DAC_CHSEL0_bm (1<<5) /* Channel Select bit 0 mask. */ +#define DAC_CHSEL0_bp 5 /* Channel Select bit 0 position. */ +#define DAC_CHSEL1_bm (1<<6) /* Channel Select bit 1 mask. */ +#define DAC_CHSEL1_bp 6 /* Channel Select bit 1 position. */ + +#define DAC_CH1TRIG_bm 0x02 /* Channel 1 Event Trig Enable bit mask. */ +#define DAC_CH1TRIG_bp 1 /* Channel 1 Event Trig Enable bit position. */ + +#define DAC_CH0TRIG_bm 0x01 /* Channel 0 Event Trig Enable bit mask. */ +#define DAC_CH0TRIG_bp 0 /* Channel 0 Event Trig Enable bit position. */ + + +/* DAC.CTRLC bit masks and bit positions */ +#define DAC_REFSEL_gm 0x18 /* Reference Select group mask. */ +#define DAC_REFSEL_gp 3 /* Reference Select group position. */ +#define DAC_REFSEL0_bm (1<<3) /* Reference Select bit 0 mask. */ +#define DAC_REFSEL0_bp 3 /* Reference Select bit 0 position. */ +#define DAC_REFSEL1_bm (1<<4) /* Reference Select bit 1 mask. */ +#define DAC_REFSEL1_bp 4 /* Reference Select bit 1 position. */ + +#define DAC_LEFTADJ_bm 0x01 /* Left-adjust Result bit mask. */ +#define DAC_LEFTADJ_bp 0 /* Left-adjust Result bit position. */ + + +/* DAC.EVCTRL bit masks and bit positions */ +#define DAC_EVSEL_gm 0x07 /* Event Input Selection group mask. */ +#define DAC_EVSEL_gp 0 /* Event Input Selection group position. */ +#define DAC_EVSEL0_bm (1<<0) /* Event Input Selection bit 0 mask. */ +#define DAC_EVSEL0_bp 0 /* Event Input Selection bit 0 position. */ +#define DAC_EVSEL1_bm (1<<1) /* Event Input Selection bit 1 mask. */ +#define DAC_EVSEL1_bp 1 /* Event Input Selection bit 1 position. */ +#define DAC_EVSEL2_bm (1<<2) /* Event Input Selection bit 2 mask. */ +#define DAC_EVSEL2_bp 2 /* Event Input Selection bit 2 position. */ + + +/* DAC.TIMCTRL bit masks and bit positions */ +#define DAC_CONINTVAL_gm 0x70 /* Conversion Intercal group mask. */ +#define DAC_CONINTVAL_gp 4 /* Conversion Intercal group position. */ +#define DAC_CONINTVAL0_bm (1<<4) /* Conversion Intercal bit 0 mask. */ +#define DAC_CONINTVAL0_bp 4 /* Conversion Intercal bit 0 position. */ +#define DAC_CONINTVAL1_bm (1<<5) /* Conversion Intercal bit 1 mask. */ +#define DAC_CONINTVAL1_bp 5 /* Conversion Intercal bit 1 position. */ +#define DAC_CONINTVAL2_bm (1<<6) /* Conversion Intercal bit 2 mask. */ +#define DAC_CONINTVAL2_bp 6 /* Conversion Intercal bit 2 position. */ + +#define DAC_REFRESH_gm 0x0F /* Refresh Timing Control group mask. */ +#define DAC_REFRESH_gp 0 /* Refresh Timing Control group position. */ +#define DAC_REFRESH0_bm (1<<0) /* Refresh Timing Control bit 0 mask. */ +#define DAC_REFRESH0_bp 0 /* Refresh Timing Control bit 0 position. */ +#define DAC_REFRESH1_bm (1<<1) /* Refresh Timing Control bit 1 mask. */ +#define DAC_REFRESH1_bp 1 /* Refresh Timing Control bit 1 position. */ +#define DAC_REFRESH2_bm (1<<2) /* Refresh Timing Control bit 2 mask. */ +#define DAC_REFRESH2_bp 2 /* Refresh Timing Control bit 2 position. */ +#define DAC_REFRESH3_bm (1<<3) /* Refresh Timing Control bit 3 mask. */ +#define DAC_REFRESH3_bp 3 /* Refresh Timing Control bit 3 position. */ + + +/* DAC.STATUS bit masks and bit positions */ +#define DAC_CH1DRE_bm 0x02 /* Channel 1 Data Register Empty bit mask. */ +#define DAC_CH1DRE_bp 1 /* Channel 1 Data Register Empty bit position. */ + +#define DAC_CH0DRE_bm 0x01 /* Channel 0 Data Register Empty bit mask. */ +#define DAC_CH0DRE_bp 0 /* Channel 0 Data Register Empty bit position. */ + + +/* RTC - Real-Time Clounter */ +/* RTC.CTRL bit masks and bit positions */ +#define RTC_PRESCALER_gm 0x07 /* Prescaling Factor group mask. */ +#define RTC_PRESCALER_gp 0 /* Prescaling Factor group position. */ +#define RTC_PRESCALER0_bm (1<<0) /* Prescaling Factor bit 0 mask. */ +#define RTC_PRESCALER0_bp 0 /* Prescaling Factor bit 0 position. */ +#define RTC_PRESCALER1_bm (1<<1) /* Prescaling Factor bit 1 mask. */ +#define RTC_PRESCALER1_bp 1 /* Prescaling Factor bit 1 position. */ +#define RTC_PRESCALER2_bm (1<<2) /* Prescaling Factor bit 2 mask. */ +#define RTC_PRESCALER2_bp 2 /* Prescaling Factor bit 2 position. */ + + +/* RTC.STATUS bit masks and bit positions */ +#define RTC_SYNCBUSY_bm 0x01 /* Synchronization Busy Flag bit mask. */ +#define RTC_SYNCBUSY_bp 0 /* Synchronization Busy Flag bit position. */ + + +/* RTC.INTCTRL bit masks and bit positions */ +#define RTC_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ +#define RTC_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ +#define RTC_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ +#define RTC_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ +#define RTC_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ +#define RTC_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ + +#define RTC_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ +#define RTC_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ +#define RTC_OVFINTLVL0_bm (1<<0) /* Overflow Interrupt Level bit 0 mask. */ +#define RTC_OVFINTLVL0_bp 0 /* Overflow Interrupt Level bit 0 position. */ +#define RTC_OVFINTLVL1_bm (1<<1) /* Overflow Interrupt Level bit 1 mask. */ +#define RTC_OVFINTLVL1_bp 1 /* Overflow Interrupt Level bit 1 position. */ + + +/* RTC.INTFLAGS bit masks and bit positions */ +#define RTC_COMPIF_bm 0x02 /* Compare Match Interrupt Flag bit mask. */ +#define RTC_COMPIF_bp 1 /* Compare Match Interrupt Flag bit position. */ + +#define RTC_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define RTC_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* EBI - External Bus Interface */ +/* EBI_CS.CTRLA bit masks and bit positions */ +#define EBI_CS_ASPACE_gm 0x7C /* Address Space group mask. */ +#define EBI_CS_ASPACE_gp 2 /* Address Space group position. */ +#define EBI_CS_ASPACE0_bm (1<<2) /* Address Space bit 0 mask. */ +#define EBI_CS_ASPACE0_bp 2 /* Address Space bit 0 position. */ +#define EBI_CS_ASPACE1_bm (1<<3) /* Address Space bit 1 mask. */ +#define EBI_CS_ASPACE1_bp 3 /* Address Space bit 1 position. */ +#define EBI_CS_ASPACE2_bm (1<<4) /* Address Space bit 2 mask. */ +#define EBI_CS_ASPACE2_bp 4 /* Address Space bit 2 position. */ +#define EBI_CS_ASPACE3_bm (1<<5) /* Address Space bit 3 mask. */ +#define EBI_CS_ASPACE3_bp 5 /* Address Space bit 3 position. */ +#define EBI_CS_ASPACE4_bm (1<<6) /* Address Space bit 4 mask. */ +#define EBI_CS_ASPACE4_bp 6 /* Address Space bit 4 position. */ + +#define EBI_CS_MODE_gm 0x03 /* Memory Mode group mask. */ +#define EBI_CS_MODE_gp 0 /* Memory Mode group position. */ +#define EBI_CS_MODE0_bm (1<<0) /* Memory Mode bit 0 mask. */ +#define EBI_CS_MODE0_bp 0 /* Memory Mode bit 0 position. */ +#define EBI_CS_MODE1_bm (1<<1) /* Memory Mode bit 1 mask. */ +#define EBI_CS_MODE1_bp 1 /* Memory Mode bit 1 position. */ + + +/* EBI_CS.CTRLB bit masks and bit positions */ +#define EBI_CS_SRWS_gm 0x07 /* SRAM Wait State Cycles group mask. */ +#define EBI_CS_SRWS_gp 0 /* SRAM Wait State Cycles group position. */ +#define EBI_CS_SRWS0_bm (1<<0) /* SRAM Wait State Cycles bit 0 mask. */ +#define EBI_CS_SRWS0_bp 0 /* SRAM Wait State Cycles bit 0 position. */ +#define EBI_CS_SRWS1_bm (1<<1) /* SRAM Wait State Cycles bit 1 mask. */ +#define EBI_CS_SRWS1_bp 1 /* SRAM Wait State Cycles bit 1 position. */ +#define EBI_CS_SRWS2_bm (1<<2) /* SRAM Wait State Cycles bit 2 mask. */ +#define EBI_CS_SRWS2_bp 2 /* SRAM Wait State Cycles bit 2 position. */ + +#define EBI_CS_SDINITDONE_bm 0x80 /* SDRAM Initialization Done bit mask. */ +#define EBI_CS_SDINITDONE_bp 7 /* SDRAM Initialization Done bit position. */ + +#define EBI_CS_SDSREN_bm 0x04 /* SDRAM Self-refresh Enable bit mask. */ +#define EBI_CS_SDSREN_bp 2 /* SDRAM Self-refresh Enable bit position. */ + +#define EBI_CS_SDMODE_gm 0x03 /* SDRAM Mode group mask. */ +#define EBI_CS_SDMODE_gp 0 /* SDRAM Mode group position. */ +#define EBI_CS_SDMODE0_bm (1<<0) /* SDRAM Mode bit 0 mask. */ +#define EBI_CS_SDMODE0_bp 0 /* SDRAM Mode bit 0 position. */ +#define EBI_CS_SDMODE1_bm (1<<1) /* SDRAM Mode bit 1 mask. */ +#define EBI_CS_SDMODE1_bp 1 /* SDRAM Mode bit 1 position. */ + + +/* EBI.CTRL bit masks and bit positions */ +#define EBI_SDDATAW_gm 0xC0 /* SDRAM Data Width Setting group mask. */ +#define EBI_SDDATAW_gp 6 /* SDRAM Data Width Setting group position. */ +#define EBI_SDDATAW0_bm (1<<6) /* SDRAM Data Width Setting bit 0 mask. */ +#define EBI_SDDATAW0_bp 6 /* SDRAM Data Width Setting bit 0 position. */ +#define EBI_SDDATAW1_bm (1<<7) /* SDRAM Data Width Setting bit 1 mask. */ +#define EBI_SDDATAW1_bp 7 /* SDRAM Data Width Setting bit 1 position. */ + +#define EBI_LPCMODE_gm 0x30 /* SRAM LPC Mode group mask. */ +#define EBI_LPCMODE_gp 4 /* SRAM LPC Mode group position. */ +#define EBI_LPCMODE0_bm (1<<4) /* SRAM LPC Mode bit 0 mask. */ +#define EBI_LPCMODE0_bp 4 /* SRAM LPC Mode bit 0 position. */ +#define EBI_LPCMODE1_bm (1<<5) /* SRAM LPC Mode bit 1 mask. */ +#define EBI_LPCMODE1_bp 5 /* SRAM LPC Mode bit 1 position. */ + +#define EBI_SRMODE_gm 0x0C /* SRAM Mode group mask. */ +#define EBI_SRMODE_gp 2 /* SRAM Mode group position. */ +#define EBI_SRMODE0_bm (1<<2) /* SRAM Mode bit 0 mask. */ +#define EBI_SRMODE0_bp 2 /* SRAM Mode bit 0 position. */ +#define EBI_SRMODE1_bm (1<<3) /* SRAM Mode bit 1 mask. */ +#define EBI_SRMODE1_bp 3 /* SRAM Mode bit 1 position. */ + +#define EBI_IFMODE_gm 0x03 /* Interface Mode group mask. */ +#define EBI_IFMODE_gp 0 /* Interface Mode group position. */ +#define EBI_IFMODE0_bm (1<<0) /* Interface Mode bit 0 mask. */ +#define EBI_IFMODE0_bp 0 /* Interface Mode bit 0 position. */ +#define EBI_IFMODE1_bm (1<<1) /* Interface Mode bit 1 mask. */ +#define EBI_IFMODE1_bp 1 /* Interface Mode bit 1 position. */ + + +/* EBI.SDRAMCTRLA bit masks and bit positions */ +#define EBI_SDCAS_bm 0x08 /* SDRAM CAS Latency Setting bit mask. */ +#define EBI_SDCAS_bp 3 /* SDRAM CAS Latency Setting bit position. */ + +#define EBI_SDROW_bm 0x04 /* SDRAM ROW Bits Setting bit mask. */ +#define EBI_SDROW_bp 2 /* SDRAM ROW Bits Setting bit position. */ + +#define EBI_SDCOL_gm 0x03 /* SDRAM Column Bits Setting group mask. */ +#define EBI_SDCOL_gp 0 /* SDRAM Column Bits Setting group position. */ +#define EBI_SDCOL0_bm (1<<0) /* SDRAM Column Bits Setting bit 0 mask. */ +#define EBI_SDCOL0_bp 0 /* SDRAM Column Bits Setting bit 0 position. */ +#define EBI_SDCOL1_bm (1<<1) /* SDRAM Column Bits Setting bit 1 mask. */ +#define EBI_SDCOL1_bp 1 /* SDRAM Column Bits Setting bit 1 position. */ + + +/* EBI.SDRAMCTRLB bit masks and bit positions */ +#define EBI_MRDLY_gm 0xC0 /* SDRAM Mode Register Delay group mask. */ +#define EBI_MRDLY_gp 6 /* SDRAM Mode Register Delay group position. */ +#define EBI_MRDLY0_bm (1<<6) /* SDRAM Mode Register Delay bit 0 mask. */ +#define EBI_MRDLY0_bp 6 /* SDRAM Mode Register Delay bit 0 position. */ +#define EBI_MRDLY1_bm (1<<7) /* SDRAM Mode Register Delay bit 1 mask. */ +#define EBI_MRDLY1_bp 7 /* SDRAM Mode Register Delay bit 1 position. */ + +#define EBI_ROWCYCDLY_gm 0x38 /* SDRAM Row Cycle Delay group mask. */ +#define EBI_ROWCYCDLY_gp 3 /* SDRAM Row Cycle Delay group position. */ +#define EBI_ROWCYCDLY0_bm (1<<3) /* SDRAM Row Cycle Delay bit 0 mask. */ +#define EBI_ROWCYCDLY0_bp 3 /* SDRAM Row Cycle Delay bit 0 position. */ +#define EBI_ROWCYCDLY1_bm (1<<4) /* SDRAM Row Cycle Delay bit 1 mask. */ +#define EBI_ROWCYCDLY1_bp 4 /* SDRAM Row Cycle Delay bit 1 position. */ +#define EBI_ROWCYCDLY2_bm (1<<5) /* SDRAM Row Cycle Delay bit 2 mask. */ +#define EBI_ROWCYCDLY2_bp 5 /* SDRAM Row Cycle Delay bit 2 position. */ + +#define EBI_RPDLY_gm 0x07 /* SDRAM Row-to-Precharge Delay group mask. */ +#define EBI_RPDLY_gp 0 /* SDRAM Row-to-Precharge Delay group position. */ +#define EBI_RPDLY0_bm (1<<0) /* SDRAM Row-to-Precharge Delay bit 0 mask. */ +#define EBI_RPDLY0_bp 0 /* SDRAM Row-to-Precharge Delay bit 0 position. */ +#define EBI_RPDLY1_bm (1<<1) /* SDRAM Row-to-Precharge Delay bit 1 mask. */ +#define EBI_RPDLY1_bp 1 /* SDRAM Row-to-Precharge Delay bit 1 position. */ +#define EBI_RPDLY2_bm (1<<2) /* SDRAM Row-to-Precharge Delay bit 2 mask. */ +#define EBI_RPDLY2_bp 2 /* SDRAM Row-to-Precharge Delay bit 2 position. */ + + +/* EBI.SDRAMCTRLC bit masks and bit positions */ +#define EBI_WRDLY_gm 0xC0 /* SDRAM Write Recovery Delay group mask. */ +#define EBI_WRDLY_gp 6 /* SDRAM Write Recovery Delay group position. */ +#define EBI_WRDLY0_bm (1<<6) /* SDRAM Write Recovery Delay bit 0 mask. */ +#define EBI_WRDLY0_bp 6 /* SDRAM Write Recovery Delay bit 0 position. */ +#define EBI_WRDLY1_bm (1<<7) /* SDRAM Write Recovery Delay bit 1 mask. */ +#define EBI_WRDLY1_bp 7 /* SDRAM Write Recovery Delay bit 1 position. */ + +#define EBI_ESRDLY_gm 0x38 /* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ +#define EBI_ESRDLY_gp 3 /* SDRAM Exit-Self-refresh-to-Active Delay group position. */ +#define EBI_ESRDLY0_bm (1<<3) /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ +#define EBI_ESRDLY0_bp 3 /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ +#define EBI_ESRDLY1_bm (1<<4) /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ +#define EBI_ESRDLY1_bp 4 /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ +#define EBI_ESRDLY2_bm (1<<5) /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ +#define EBI_ESRDLY2_bp 5 /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ + +#define EBI_ROWCOLDLY_gm 0x07 /* SDRAM Row-to-Column Delay group mask. */ +#define EBI_ROWCOLDLY_gp 0 /* SDRAM Row-to-Column Delay group position. */ +#define EBI_ROWCOLDLY0_bm (1<<0) /* SDRAM Row-to-Column Delay bit 0 mask. */ +#define EBI_ROWCOLDLY0_bp 0 /* SDRAM Row-to-Column Delay bit 0 position. */ +#define EBI_ROWCOLDLY1_bm (1<<1) /* SDRAM Row-to-Column Delay bit 1 mask. */ +#define EBI_ROWCOLDLY1_bp 1 /* SDRAM Row-to-Column Delay bit 1 position. */ +#define EBI_ROWCOLDLY2_bm (1<<2) /* SDRAM Row-to-Column Delay bit 2 mask. */ +#define EBI_ROWCOLDLY2_bp 2 /* SDRAM Row-to-Column Delay bit 2 position. */ + + +/* TWI - Two-Wire Interface */ +/* TWI_MASTER.CTRLA bit masks and bit positions */ +#define TWI_MASTER_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_MASTER_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_MASTER_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_MASTER_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_MASTER_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_MASTER_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_MASTER_RIEN_bm 0x20 /* Read Interrupt Enable bit mask. */ +#define TWI_MASTER_RIEN_bp 5 /* Read Interrupt Enable bit position. */ + +#define TWI_MASTER_WIEN_bm 0x10 /* Write Interrupt Enable bit mask. */ +#define TWI_MASTER_WIEN_bp 4 /* Write Interrupt Enable bit position. */ + +#define TWI_MASTER_ENABLE_bm 0x08 /* Enable TWI Master bit mask. */ +#define TWI_MASTER_ENABLE_bp 3 /* Enable TWI Master bit position. */ + + +/* TWI_MASTER.CTRLB bit masks and bit positions */ +#define TWI_MASTER_TIMEOUT_gm 0x0C /* Inactive Bus Timeout group mask. */ +#define TWI_MASTER_TIMEOUT_gp 2 /* Inactive Bus Timeout group position. */ +#define TWI_MASTER_TIMEOUT0_bm (1<<2) /* Inactive Bus Timeout bit 0 mask. */ +#define TWI_MASTER_TIMEOUT0_bp 2 /* Inactive Bus Timeout bit 0 position. */ +#define TWI_MASTER_TIMEOUT1_bm (1<<3) /* Inactive Bus Timeout bit 1 mask. */ +#define TWI_MASTER_TIMEOUT1_bp 3 /* Inactive Bus Timeout bit 1 position. */ + +#define TWI_MASTER_QCEN_bm 0x02 /* Quick Command Enable bit mask. */ +#define TWI_MASTER_QCEN_bp 1 /* Quick Command Enable bit position. */ + +#define TWI_MASTER_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_MASTER_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_MASTER.CTRLC bit masks and bit positions */ +#define TWI_MASTER_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_MASTER_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_MASTER_CMD_gm 0x03 /* Command group mask. */ +#define TWI_MASTER_CMD_gp 0 /* Command group position. */ +#define TWI_MASTER_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_MASTER_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_MASTER_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_MASTER_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_MASTER.STATUS bit masks and bit positions */ +#define TWI_MASTER_RIF_bm 0x80 /* Read Interrupt Flag bit mask. */ +#define TWI_MASTER_RIF_bp 7 /* Read Interrupt Flag bit position. */ + +#define TWI_MASTER_WIF_bm 0x40 /* Write Interrupt Flag bit mask. */ +#define TWI_MASTER_WIF_bp 6 /* Write Interrupt Flag bit position. */ + +#define TWI_MASTER_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_MASTER_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_MASTER_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_MASTER_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_MASTER_ARBLOST_bm 0x08 /* Arbitration Lost bit mask. */ +#define TWI_MASTER_ARBLOST_bp 3 /* Arbitration Lost bit position. */ + +#define TWI_MASTER_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_MASTER_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_MASTER_BUSSTATE_gm 0x03 /* Bus State group mask. */ +#define TWI_MASTER_BUSSTATE_gp 0 /* Bus State group position. */ +#define TWI_MASTER_BUSSTATE0_bm (1<<0) /* Bus State bit 0 mask. */ +#define TWI_MASTER_BUSSTATE0_bp 0 /* Bus State bit 0 position. */ +#define TWI_MASTER_BUSSTATE1_bm (1<<1) /* Bus State bit 1 mask. */ +#define TWI_MASTER_BUSSTATE1_bp 1 /* Bus State bit 1 position. */ + + +/* TWI_SLAVE.CTRLA bit masks and bit positions */ +#define TWI_SLAVE_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_SLAVE_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_SLAVE_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_SLAVE_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_SLAVE_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_SLAVE_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ +#define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ + +#define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ +#define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ + +#define TWI_SLAVE_PIEN_bm 0x04 /* Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_PIEN_bp 2 /* Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_PMEN_bm 0x02 /* Promiscuous Mode Enable bit mask. */ +#define TWI_SLAVE_PMEN_bp 1 /* Promiscuous Mode Enable bit position. */ + +#define TWI_SLAVE_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_SLAVE_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_SLAVE.CTRLB bit masks and bit positions */ +#define TWI_SLAVE_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_SLAVE_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_SLAVE_CMD_gm 0x03 /* Command group mask. */ +#define TWI_SLAVE_CMD_gp 0 /* Command group position. */ +#define TWI_SLAVE_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_SLAVE_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_SLAVE_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_SLAVE_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_SLAVE.STATUS bit masks and bit positions */ +#define TWI_SLAVE_DIF_bm 0x80 /* Data Interrupt Flag bit mask. */ +#define TWI_SLAVE_DIF_bp 7 /* Data Interrupt Flag bit position. */ + +#define TWI_SLAVE_APIF_bm 0x40 /* Address/Stop Interrupt Flag bit mask. */ +#define TWI_SLAVE_APIF_bp 6 /* Address/Stop Interrupt Flag bit position. */ + +#define TWI_SLAVE_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_SLAVE_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_SLAVE_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_SLAVE_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_SLAVE_COLL_bm 0x08 /* Collision bit mask. */ +#define TWI_SLAVE_COLL_bp 3 /* Collision bit position. */ + +#define TWI_SLAVE_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_SLAVE_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_SLAVE_DIR_bm 0x02 /* Read/Write Direction bit mask. */ +#define TWI_SLAVE_DIR_bp 1 /* Read/Write Direction bit position. */ + +#define TWI_SLAVE_AP_bm 0x01 /* Slave Address or Stop bit mask. */ +#define TWI_SLAVE_AP_bp 0 /* Slave Address or Stop bit position. */ + + +/* TWI.CTRL bit masks and bit positions */ +#define TWI_SDAHOLD_bm 0x02 /* SDA Hold Time Enable bit mask. */ +#define TWI_SDAHOLD_bp 1 /* SDA Hold Time Enable bit position. */ + +#define TWI_EDIEN_bm 0x01 /* External Driver Interface Enable bit mask. */ +#define TWI_EDIEN_bp 0 /* External Driver Interface Enable bit position. */ + + +/* PORT - Port Configuration */ +/* PORTCFG.VPCTRLA bit masks and bit positions */ +#define PORTCFG_VP1MAP_gm 0xF0 /* Virtual Port 1 Mapping group mask. */ +#define PORTCFG_VP1MAP_gp 4 /* Virtual Port 1 Mapping group position. */ +#define PORTCFG_VP1MAP0_bm (1<<4) /* Virtual Port 1 Mapping bit 0 mask. */ +#define PORTCFG_VP1MAP0_bp 4 /* Virtual Port 1 Mapping bit 0 position. */ +#define PORTCFG_VP1MAP1_bm (1<<5) /* Virtual Port 1 Mapping bit 1 mask. */ +#define PORTCFG_VP1MAP1_bp 5 /* Virtual Port 1 Mapping bit 1 position. */ +#define PORTCFG_VP1MAP2_bm (1<<6) /* Virtual Port 1 Mapping bit 2 mask. */ +#define PORTCFG_VP1MAP2_bp 6 /* Virtual Port 1 Mapping bit 2 position. */ +#define PORTCFG_VP1MAP3_bm (1<<7) /* Virtual Port 1 Mapping bit 3 mask. */ +#define PORTCFG_VP1MAP3_bp 7 /* Virtual Port 1 Mapping bit 3 position. */ + +#define PORTCFG_VP0MAP_gm 0x0F /* Virtual Port 0 Mapping group mask. */ +#define PORTCFG_VP0MAP_gp 0 /* Virtual Port 0 Mapping group position. */ +#define PORTCFG_VP0MAP0_bm (1<<0) /* Virtual Port 0 Mapping bit 0 mask. */ +#define PORTCFG_VP0MAP0_bp 0 /* Virtual Port 0 Mapping bit 0 position. */ +#define PORTCFG_VP0MAP1_bm (1<<1) /* Virtual Port 0 Mapping bit 1 mask. */ +#define PORTCFG_VP0MAP1_bp 1 /* Virtual Port 0 Mapping bit 1 position. */ +#define PORTCFG_VP0MAP2_bm (1<<2) /* Virtual Port 0 Mapping bit 2 mask. */ +#define PORTCFG_VP0MAP2_bp 2 /* Virtual Port 0 Mapping bit 2 position. */ +#define PORTCFG_VP0MAP3_bm (1<<3) /* Virtual Port 0 Mapping bit 3 mask. */ +#define PORTCFG_VP0MAP3_bp 3 /* Virtual Port 0 Mapping bit 3 position. */ + + +/* PORTCFG.VPCTRLB bit masks and bit positions */ +#define PORTCFG_VP3MAP_gm 0xF0 /* Virtual Port 3 Mapping group mask. */ +#define PORTCFG_VP3MAP_gp 4 /* Virtual Port 3 Mapping group position. */ +#define PORTCFG_VP3MAP0_bm (1<<4) /* Virtual Port 3 Mapping bit 0 mask. */ +#define PORTCFG_VP3MAP0_bp 4 /* Virtual Port 3 Mapping bit 0 position. */ +#define PORTCFG_VP3MAP1_bm (1<<5) /* Virtual Port 3 Mapping bit 1 mask. */ +#define PORTCFG_VP3MAP1_bp 5 /* Virtual Port 3 Mapping bit 1 position. */ +#define PORTCFG_VP3MAP2_bm (1<<6) /* Virtual Port 3 Mapping bit 2 mask. */ +#define PORTCFG_VP3MAP2_bp 6 /* Virtual Port 3 Mapping bit 2 position. */ +#define PORTCFG_VP3MAP3_bm (1<<7) /* Virtual Port 3 Mapping bit 3 mask. */ +#define PORTCFG_VP3MAP3_bp 7 /* Virtual Port 3 Mapping bit 3 position. */ + +#define PORTCFG_VP2MAP_gm 0x0F /* Virtual Port 2 Mapping group mask. */ +#define PORTCFG_VP2MAP_gp 0 /* Virtual Port 2 Mapping group position. */ +#define PORTCFG_VP2MAP0_bm (1<<0) /* Virtual Port 2 Mapping bit 0 mask. */ +#define PORTCFG_VP2MAP0_bp 0 /* Virtual Port 2 Mapping bit 0 position. */ +#define PORTCFG_VP2MAP1_bm (1<<1) /* Virtual Port 2 Mapping bit 1 mask. */ +#define PORTCFG_VP2MAP1_bp 1 /* Virtual Port 2 Mapping bit 1 position. */ +#define PORTCFG_VP2MAP2_bm (1<<2) /* Virtual Port 2 Mapping bit 2 mask. */ +#define PORTCFG_VP2MAP2_bp 2 /* Virtual Port 2 Mapping bit 2 position. */ +#define PORTCFG_VP2MAP3_bm (1<<3) /* Virtual Port 2 Mapping bit 3 mask. */ +#define PORTCFG_VP2MAP3_bp 3 /* Virtual Port 2 Mapping bit 3 position. */ + + +/* PORTCFG.CLKEVOUT bit masks and bit positions */ +#define PORTCFG_CLKOUT_gm 0x03 /* Clock Output Port group mask. */ +#define PORTCFG_CLKOUT_gp 0 /* Clock Output Port group position. */ +#define PORTCFG_CLKOUT0_bm (1<<0) /* Clock Output Port bit 0 mask. */ +#define PORTCFG_CLKOUT0_bp 0 /* Clock Output Port bit 0 position. */ +#define PORTCFG_CLKOUT1_bm (1<<1) /* Clock Output Port bit 1 mask. */ +#define PORTCFG_CLKOUT1_bp 1 /* Clock Output Port bit 1 position. */ + +#define PORTCFG_EVOUT_gm 0x30 /* Event Output Port group mask. */ +#define PORTCFG_EVOUT_gp 4 /* Event Output Port group position. */ +#define PORTCFG_EVOUT0_bm (1<<4) /* Event Output Port bit 0 mask. */ +#define PORTCFG_EVOUT0_bp 4 /* Event Output Port bit 0 position. */ +#define PORTCFG_EVOUT1_bm (1<<5) /* Event Output Port bit 1 mask. */ +#define PORTCFG_EVOUT1_bp 5 /* Event Output Port bit 1 position. */ + + +/* VPORT.INTFLAGS bit masks and bit positions */ +#define VPORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define VPORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define VPORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define VPORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.INTCTRL bit masks and bit positions */ +#define PORT_INT1LVL_gm 0x0C /* Port Interrupt 1 Level group mask. */ +#define PORT_INT1LVL_gp 2 /* Port Interrupt 1 Level group position. */ +#define PORT_INT1LVL0_bm (1<<2) /* Port Interrupt 1 Level bit 0 mask. */ +#define PORT_INT1LVL0_bp 2 /* Port Interrupt 1 Level bit 0 position. */ +#define PORT_INT1LVL1_bm (1<<3) /* Port Interrupt 1 Level bit 1 mask. */ +#define PORT_INT1LVL1_bp 3 /* Port Interrupt 1 Level bit 1 position. */ + +#define PORT_INT0LVL_gm 0x03 /* Port Interrupt 0 Level group mask. */ +#define PORT_INT0LVL_gp 0 /* Port Interrupt 0 Level group position. */ +#define PORT_INT0LVL0_bm (1<<0) /* Port Interrupt 0 Level bit 0 mask. */ +#define PORT_INT0LVL0_bp 0 /* Port Interrupt 0 Level bit 0 position. */ +#define PORT_INT0LVL1_bm (1<<1) /* Port Interrupt 0 Level bit 1 mask. */ +#define PORT_INT0LVL1_bp 1 /* Port Interrupt 0 Level bit 1 position. */ + + +/* PORT.INTFLAGS bit masks and bit positions */ +#define PORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define PORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define PORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define PORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.PIN0CTRL bit masks and bit positions */ +#define PORT_SRLEN_bm 0x80 /* Slew Rate Enable bit mask. */ +#define PORT_SRLEN_bp 7 /* Slew Rate Enable bit position. */ + +#define PORT_INVEN_bm 0x40 /* Inverted I/O Enable bit mask. */ +#define PORT_INVEN_bp 6 /* Inverted I/O Enable bit position. */ + +#define PORT_OPC_gm 0x38 /* Output/Pull Configuration group mask. */ +#define PORT_OPC_gp 3 /* Output/Pull Configuration group position. */ +#define PORT_OPC0_bm (1<<3) /* Output/Pull Configuration bit 0 mask. */ +#define PORT_OPC0_bp 3 /* Output/Pull Configuration bit 0 position. */ +#define PORT_OPC1_bm (1<<4) /* Output/Pull Configuration bit 1 mask. */ +#define PORT_OPC1_bp 4 /* Output/Pull Configuration bit 1 position. */ +#define PORT_OPC2_bm (1<<5) /* Output/Pull Configuration bit 2 mask. */ +#define PORT_OPC2_bp 5 /* Output/Pull Configuration bit 2 position. */ + +#define PORT_ISC_gm 0x07 /* Input/Sense Configuration group mask. */ +#define PORT_ISC_gp 0 /* Input/Sense Configuration group position. */ +#define PORT_ISC0_bm (1<<0) /* Input/Sense Configuration bit 0 mask. */ +#define PORT_ISC0_bp 0 /* Input/Sense Configuration bit 0 position. */ +#define PORT_ISC1_bm (1<<1) /* Input/Sense Configuration bit 1 mask. */ +#define PORT_ISC1_bp 1 /* Input/Sense Configuration bit 1 position. */ +#define PORT_ISC2_bm (1<<2) /* Input/Sense Configuration bit 2 mask. */ +#define PORT_ISC2_bp 2 /* Input/Sense Configuration bit 2 position. */ + + +/* PORT.PIN1CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN2CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN3CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN4CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN5CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN6CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN7CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* TC - 16-bit Timer/Counter With PWM */ +/* TC0.CTRLA bit masks and bit positions */ +#define TC0_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC0_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC0_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC0_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC0_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC0_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC0_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC0_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC0_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC0_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC0.CTRLB bit masks and bit positions */ +#define TC0_CCDEN_bm 0x80 /* Compare or Capture D Enable bit mask. */ +#define TC0_CCDEN_bp 7 /* Compare or Capture D Enable bit position. */ + +#define TC0_CCCEN_bm 0x40 /* Compare or Capture C Enable bit mask. */ +#define TC0_CCCEN_bp 6 /* Compare or Capture C Enable bit position. */ + +#define TC0_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC0_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC0_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC0_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC0_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC0_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC0_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC0_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC0_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC0_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC0_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC0_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC0.CTRLC bit masks and bit positions */ +#define TC0_CMPD_bm 0x08 /* Compare D Output Value bit mask. */ +#define TC0_CMPD_bp 3 /* Compare D Output Value bit position. */ + +#define TC0_CMPC_bm 0x04 /* Compare C Output Value bit mask. */ +#define TC0_CMPC_bp 2 /* Compare C Output Value bit position. */ + +#define TC0_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC0_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC0_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC0_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC0.CTRLD bit masks and bit positions */ +#define TC0_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC0_EVACT_gp 5 /* Event Action group position. */ +#define TC0_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC0_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC0_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC0_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC0_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC0_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC0_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC0_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC0_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC0_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC0_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC0_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC0_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC0_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC0_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC0_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC0_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC0_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC0.CTRLE bit masks and bit positions */ +#define TC0_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC0_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC0_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC0_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC0.INTCTRLA bit masks and bit positions */ +#define TC0_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC0_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC0_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC0_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC0_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC0_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC0_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC0_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC0_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC0_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC0_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC0_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC0.INTCTRLB bit masks and bit positions */ +#define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ +#define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ +#define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ +#define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ +#define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ +#define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ + +#define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ +#define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ +#define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ +#define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ +#define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ +#define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ + +#define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC0.CTRLFCLR bit masks and bit positions */ +#define TC0_CMD_gm 0x0C /* Command group mask. */ +#define TC0_CMD_gp 2 /* Command group position. */ +#define TC0_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC0_CMD0_bp 2 /* Command bit 0 position. */ +#define TC0_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC0_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC0_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC0_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC0_DIR_bm 0x01 /* Direction bit mask. */ +#define TC0_DIR_bp 0 /* Direction bit position. */ + + +/* TC0.CTRLFSET bit masks and bit positions */ +/* TC0_CMD_gm Predefined. */ +/* TC0_CMD_gp Predefined. */ +/* TC0_CMD0_bm Predefined. */ +/* TC0_CMD0_bp Predefined. */ +/* TC0_CMD1_bm Predefined. */ +/* TC0_CMD1_bp Predefined. */ + +/* TC0_LUPD_bm Predefined. */ +/* TC0_LUPD_bp Predefined. */ + +/* TC0_DIR_bm Predefined. */ +/* TC0_DIR_bp Predefined. */ + + +/* TC0.CTRLGCLR bit masks and bit positions */ +#define TC0_CCDBV_bm 0x10 /* Compare or Capture D Buffer Valid bit mask. */ +#define TC0_CCDBV_bp 4 /* Compare or Capture D Buffer Valid bit position. */ + +#define TC0_CCCBV_bm 0x08 /* Compare or Capture C Buffer Valid bit mask. */ +#define TC0_CCCBV_bp 3 /* Compare or Capture C Buffer Valid bit position. */ + +#define TC0_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC0_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC0_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC0_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC0_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC0_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC0.CTRLGSET bit masks and bit positions */ +/* TC0_CCDBV_bm Predefined. */ +/* TC0_CCDBV_bp Predefined. */ + +/* TC0_CCCBV_bm Predefined. */ +/* TC0_CCCBV_bp Predefined. */ + +/* TC0_CCBBV_bm Predefined. */ +/* TC0_CCBBV_bp Predefined. */ + +/* TC0_CCABV_bm Predefined. */ +/* TC0_CCABV_bp Predefined. */ + +/* TC0_PERBV_bm Predefined. */ +/* TC0_PERBV_bp Predefined. */ + + +/* TC0.INTFLAGS bit masks and bit positions */ +#define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ +#define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ + +#define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ +#define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ + +#define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC0_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC0_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* TC1.CTRLA bit masks and bit positions */ +#define TC1_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC1_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC1_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC1_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC1_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC1_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC1_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC1_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC1_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC1_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC1.CTRLB bit masks and bit positions */ +#define TC1_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC1_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC1_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC1_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC1_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC1_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC1_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC1_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC1_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC1_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC1_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC1_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC1.CTRLC bit masks and bit positions */ +#define TC1_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC1_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC1_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC1_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC1.CTRLD bit masks and bit positions */ +#define TC1_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC1_EVACT_gp 5 /* Event Action group position. */ +#define TC1_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC1_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC1_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC1_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC1_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC1_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC1_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC1_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC1_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC1_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC1_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC1_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC1_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC1_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC1_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC1_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC1_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC1_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC1.CTRLE bit masks and bit positions */ +#define TC1_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC1_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC1_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC1_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC1.INTCTRLA bit masks and bit positions */ +#define TC1_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC1_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC1_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC1_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC1_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC1_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC1_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC1_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC1_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC1_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC1_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC1_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC1.INTCTRLB bit masks and bit positions */ +#define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC1.CTRLFCLR bit masks and bit positions */ +#define TC1_CMD_gm 0x0C /* Command group mask. */ +#define TC1_CMD_gp 2 /* Command group position. */ +#define TC1_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC1_CMD0_bp 2 /* Command bit 0 position. */ +#define TC1_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC1_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC1_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC1_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC1_DIR_bm 0x01 /* Direction bit mask. */ +#define TC1_DIR_bp 0 /* Direction bit position. */ + + +/* TC1.CTRLFSET bit masks and bit positions */ +/* TC1_CMD_gm Predefined. */ +/* TC1_CMD_gp Predefined. */ +/* TC1_CMD0_bm Predefined. */ +/* TC1_CMD0_bp Predefined. */ +/* TC1_CMD1_bm Predefined. */ +/* TC1_CMD1_bp Predefined. */ + +/* TC1_LUPD_bm Predefined. */ +/* TC1_LUPD_bp Predefined. */ + +/* TC1_DIR_bm Predefined. */ +/* TC1_DIR_bp Predefined. */ + + +/* TC1.CTRLGCLR bit masks and bit positions */ +#define TC1_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC1_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC1_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC1_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC1_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC1_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC1.CTRLGSET bit masks and bit positions */ +/* TC1_CCBBV_bm Predefined. */ +/* TC1_CCBBV_bp Predefined. */ + +/* TC1_CCABV_bm Predefined. */ +/* TC1_CCABV_bp Predefined. */ + +/* TC1_PERBV_bm Predefined. */ +/* TC1_PERBV_bp Predefined. */ + + +/* TC1.INTFLAGS bit masks and bit positions */ +#define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC1_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC1_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* AWEX.CTRL bit masks and bit positions */ +#define AWEX_PGM_bm 0x20 /* Pattern Generation Mode bit mask. */ +#define AWEX_PGM_bp 5 /* Pattern Generation Mode bit position. */ + +#define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ +#define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ + +#define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ +#define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ + +#define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ +#define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ + +#define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ +#define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ + +#define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ +#define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ + + +/* AWEX.FDCTRL bit masks and bit positions */ +#define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ +#define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ + +#define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ +#define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ + +#define AWEX_FDACT_gm 0x03 /* Fault Detect Action group mask. */ +#define AWEX_FDACT_gp 0 /* Fault Detect Action group position. */ +#define AWEX_FDACT0_bm (1<<0) /* Fault Detect Action bit 0 mask. */ +#define AWEX_FDACT0_bp 0 /* Fault Detect Action bit 0 position. */ +#define AWEX_FDACT1_bm (1<<1) /* Fault Detect Action bit 1 mask. */ +#define AWEX_FDACT1_bp 1 /* Fault Detect Action bit 1 position. */ + + +/* AWEX.STATUS bit masks and bit positions */ +#define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ +#define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ + +#define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ +#define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ + +#define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ +#define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ + + +/* HIRES.CTRL bit masks and bit positions */ +#define HIRES_HREN_gm 0x03 /* High Resolution Enable group mask. */ +#define HIRES_HREN_gp 0 /* High Resolution Enable group position. */ +#define HIRES_HREN0_bm (1<<0) /* High Resolution Enable bit 0 mask. */ +#define HIRES_HREN0_bp 0 /* High Resolution Enable bit 0 position. */ +#define HIRES_HREN1_bm (1<<1) /* High Resolution Enable bit 1 mask. */ +#define HIRES_HREN1_bp 1 /* High Resolution Enable bit 1 position. */ + + +/* USART - Universal Asynchronous Receiver-Transmitter */ +/* USART.STATUS bit masks and bit positions */ +#define USART_RXCIF_bm 0x80 /* Receive Interrupt Flag bit mask. */ +#define USART_RXCIF_bp 7 /* Receive Interrupt Flag bit position. */ + +#define USART_TXCIF_bm 0x40 /* Transmit Interrupt Flag bit mask. */ +#define USART_TXCIF_bp 6 /* Transmit Interrupt Flag bit position. */ + +#define USART_DREIF_bm 0x20 /* Data Register Empty Flag bit mask. */ +#define USART_DREIF_bp 5 /* Data Register Empty Flag bit position. */ + +#define USART_FERR_bm 0x10 /* Frame Error bit mask. */ +#define USART_FERR_bp 4 /* Frame Error bit position. */ + +#define USART_BUFOVF_bm 0x08 /* Buffer Overflow bit mask. */ +#define USART_BUFOVF_bp 3 /* Buffer Overflow bit position. */ + +#define USART_PERR_bm 0x04 /* Parity Error bit mask. */ +#define USART_PERR_bp 2 /* Parity Error bit position. */ + +#define USART_RXB8_bm 0x01 /* Receive Bit 8 bit mask. */ +#define USART_RXB8_bp 0 /* Receive Bit 8 bit position. */ + + +/* USART.CTRLA bit masks and bit positions */ +#define USART_RXCINTLVL_gm 0x30 /* Receive Interrupt Level group mask. */ +#define USART_RXCINTLVL_gp 4 /* Receive Interrupt Level group position. */ +#define USART_RXCINTLVL0_bm (1<<4) /* Receive Interrupt Level bit 0 mask. */ +#define USART_RXCINTLVL0_bp 4 /* Receive Interrupt Level bit 0 position. */ +#define USART_RXCINTLVL1_bm (1<<5) /* Receive Interrupt Level bit 1 mask. */ +#define USART_RXCINTLVL1_bp 5 /* Receive Interrupt Level bit 1 position. */ + +#define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ +#define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ +#define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ +#define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ +#define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ +#define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ + +#define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ +#define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ +#define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ +#define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ +#define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ +#define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ + + +/* USART.CTRLB bit masks and bit positions */ +#define USART_RXEN_bm 0x10 /* Receiver Enable bit mask. */ +#define USART_RXEN_bp 4 /* Receiver Enable bit position. */ + +#define USART_TXEN_bm 0x08 /* Transmitter Enable bit mask. */ +#define USART_TXEN_bp 3 /* Transmitter Enable bit position. */ + +#define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ +#define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ + +#define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ +#define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ + +#define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ +#define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ + + +/* USART.CTRLC bit masks and bit positions */ +#define USART_CMODE_gm 0xC0 /* Communication Mode group mask. */ +#define USART_CMODE_gp 6 /* Communication Mode group position. */ +#define USART_CMODE0_bm (1<<6) /* Communication Mode bit 0 mask. */ +#define USART_CMODE0_bp 6 /* Communication Mode bit 0 position. */ +#define USART_CMODE1_bm (1<<7) /* Communication Mode bit 1 mask. */ +#define USART_CMODE1_bp 7 /* Communication Mode bit 1 position. */ + +#define USART_PMODE_gm 0x30 /* Parity Mode group mask. */ +#define USART_PMODE_gp 4 /* Parity Mode group position. */ +#define USART_PMODE0_bm (1<<4) /* Parity Mode bit 0 mask. */ +#define USART_PMODE0_bp 4 /* Parity Mode bit 0 position. */ +#define USART_PMODE1_bm (1<<5) /* Parity Mode bit 1 mask. */ +#define USART_PMODE1_bp 5 /* Parity Mode bit 1 position. */ + +#define USART_SBMODE_bm 0x08 /* Stop Bit Mode bit mask. */ +#define USART_SBMODE_bp 3 /* Stop Bit Mode bit position. */ + +#define USART_CHSIZE_gm 0x07 /* Character Size group mask. */ +#define USART_CHSIZE_gp 0 /* Character Size group position. */ +#define USART_CHSIZE0_bm (1<<0) /* Character Size bit 0 mask. */ +#define USART_CHSIZE0_bp 0 /* Character Size bit 0 position. */ +#define USART_CHSIZE1_bm (1<<1) /* Character Size bit 1 mask. */ +#define USART_CHSIZE1_bp 1 /* Character Size bit 1 position. */ +#define USART_CHSIZE2_bm (1<<2) /* Character Size bit 2 mask. */ +#define USART_CHSIZE2_bp 2 /* Character Size bit 2 position. */ + + +/* USART.BAUDCTRLA bit masks and bit positions */ +#define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ +#define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ +#define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ +#define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ +#define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ +#define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ +#define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ +#define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ +#define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ +#define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ +#define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ +#define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ +#define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ +#define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ +#define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ +#define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ +#define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ +#define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ + + +/* USART.BAUDCTRLB bit masks and bit positions */ +#define USART_BSCALE_gm 0xF0 /* Baud Rate Scale group mask. */ +#define USART_BSCALE_gp 4 /* Baud Rate Scale group position. */ +#define USART_BSCALE0_bm (1<<4) /* Baud Rate Scale bit 0 mask. */ +#define USART_BSCALE0_bp 4 /* Baud Rate Scale bit 0 position. */ +#define USART_BSCALE1_bm (1<<5) /* Baud Rate Scale bit 1 mask. */ +#define USART_BSCALE1_bp 5 /* Baud Rate Scale bit 1 position. */ +#define USART_BSCALE2_bm (1<<6) /* Baud Rate Scale bit 2 mask. */ +#define USART_BSCALE2_bp 6 /* Baud Rate Scale bit 2 position. */ +#define USART_BSCALE3_bm (1<<7) /* Baud Rate Scale bit 3 mask. */ +#define USART_BSCALE3_bp 7 /* Baud Rate Scale bit 3 position. */ + +/* USART_BSEL_gm Predefined. */ +/* USART_BSEL_gp Predefined. */ +/* USART_BSEL0_bm Predefined. */ +/* USART_BSEL0_bp Predefined. */ +/* USART_BSEL1_bm Predefined. */ +/* USART_BSEL1_bp Predefined. */ +/* USART_BSEL2_bm Predefined. */ +/* USART_BSEL2_bp Predefined. */ +/* USART_BSEL3_bm Predefined. */ +/* USART_BSEL3_bp Predefined. */ + + +/* SPI - Serial Peripheral Interface */ +/* SPI.CTRL bit masks and bit positions */ +#define SPI_CLK2X_bm 0x80 /* Enable Double Speed bit mask. */ +#define SPI_CLK2X_bp 7 /* Enable Double Speed bit position. */ + +#define SPI_ENABLE_bm 0x40 /* Enable Module bit mask. */ +#define SPI_ENABLE_bp 6 /* Enable Module bit position. */ + +#define SPI_DORD_bm 0x20 /* Data Order Setting bit mask. */ +#define SPI_DORD_bp 5 /* Data Order Setting bit position. */ + +#define SPI_MASTER_bm 0x10 /* Master Operation Enable bit mask. */ +#define SPI_MASTER_bp 4 /* Master Operation Enable bit position. */ + +#define SPI_MODE_gm 0x0C /* SPI Mode group mask. */ +#define SPI_MODE_gp 2 /* SPI Mode group position. */ +#define SPI_MODE0_bm (1<<2) /* SPI Mode bit 0 mask. */ +#define SPI_MODE0_bp 2 /* SPI Mode bit 0 position. */ +#define SPI_MODE1_bm (1<<3) /* SPI Mode bit 1 mask. */ +#define SPI_MODE1_bp 3 /* SPI Mode bit 1 position. */ + +#define SPI_PRESCALER_gm 0x03 /* Prescaler group mask. */ +#define SPI_PRESCALER_gp 0 /* Prescaler group position. */ +#define SPI_PRESCALER0_bm (1<<0) /* Prescaler bit 0 mask. */ +#define SPI_PRESCALER0_bp 0 /* Prescaler bit 0 position. */ +#define SPI_PRESCALER1_bm (1<<1) /* Prescaler bit 1 mask. */ +#define SPI_PRESCALER1_bp 1 /* Prescaler bit 1 position. */ + + +/* SPI.INTCTRL bit masks and bit positions */ +#define SPI_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define SPI_INTLVL_gp 0 /* Interrupt level group position. */ +#define SPI_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define SPI_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define SPI_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define SPI_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + +/* SPI.STATUS bit masks and bit positions */ +#define SPI_IF_bm 0x80 /* Interrupt Flag bit mask. */ +#define SPI_IF_bp 7 /* Interrupt Flag bit position. */ + +#define SPI_WRCOL_bm 0x40 /* Write Collision bit mask. */ +#define SPI_WRCOL_bp 6 /* Write Collision bit position. */ + + +/* IRCOM - IR Communication Module */ +/* IRCOM.CTRL bit masks and bit positions */ +#define IRCOM_EVSEL_gm 0x0F /* Event Channel Select group mask. */ +#define IRCOM_EVSEL_gp 0 /* Event Channel Select group position. */ +#define IRCOM_EVSEL0_bm (1<<0) /* Event Channel Select bit 0 mask. */ +#define IRCOM_EVSEL0_bp 0 /* Event Channel Select bit 0 position. */ +#define IRCOM_EVSEL1_bm (1<<1) /* Event Channel Select bit 1 mask. */ +#define IRCOM_EVSEL1_bp 1 /* Event Channel Select bit 1 position. */ +#define IRCOM_EVSEL2_bm (1<<2) /* Event Channel Select bit 2 mask. */ +#define IRCOM_EVSEL2_bp 2 /* Event Channel Select bit 2 position. */ +#define IRCOM_EVSEL3_bm (1<<3) /* Event Channel Select bit 3 mask. */ +#define IRCOM_EVSEL3_bp 3 /* Event Channel Select bit 3 position. */ + + +/* AES - AES Module */ +/* AES.CTRL bit masks and bit positions */ +#define AES_START_bm 0x80 /* Start/Run bit mask. */ +#define AES_START_bp 7 /* Start/Run bit position. */ + +#define AES_AUTO_bm 0x40 /* Auto Start Trigger bit mask. */ +#define AES_AUTO_bp 6 /* Auto Start Trigger bit position. */ + +#define AES_RESET_bm 0x20 /* AES Software Reset bit mask. */ +#define AES_RESET_bp 5 /* AES Software Reset bit position. */ + +#define AES_DECRYPT_bm 0x10 /* Decryption / Direction bit mask. */ +#define AES_DECRYPT_bp 4 /* Decryption / Direction bit position. */ + +#define AES_XOR_bm 0x04 /* State XOR Load Enable bit mask. */ +#define AES_XOR_bp 2 /* State XOR Load Enable bit position. */ + + +/* AES.STATUS bit masks and bit positions */ +#define AES_ERROR_bm 0x80 /* AES Error bit mask. */ +#define AES_ERROR_bp 7 /* AES Error bit position. */ + +#define AES_SRIF_bm 0x01 /* State Ready Interrupt Flag bit mask. */ +#define AES_SRIF_bp 0 /* State Ready Interrupt Flag bit position. */ + + +/* AES.INTCTRL bit masks and bit positions */ +#define AES_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define AES_INTLVL_gp 0 /* Interrupt level group position. */ +#define AES_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define AES_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define AES_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define AES_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + + +// Generic Port Pins + +#define PIN0_bm 0x01 +#define PIN0_bp 0 +#define PIN1_bm 0x02 +#define PIN1_bp 1 +#define PIN2_bm 0x04 +#define PIN2_bp 2 +#define PIN3_bm 0x08 +#define PIN3_bp 3 +#define PIN4_bm 0x10 +#define PIN4_bp 4 +#define PIN5_bm 0x20 +#define PIN5_bp 5 +#define PIN6_bm 0x40 +#define PIN6_bp 6 +#define PIN7_bm 0x80 +#define PIN7_bp 7 + + +/* ========== Interrupt Vector Definitions ========== */ +/* Vector 0 is the reset vector */ + +/* OSC interrupt vectors */ +#define OSC_XOSCF_vect_num 1 +#define OSC_XOSCF_vect _VECTOR(1) /* External Oscillator Failure Interrupt (NMI) */ + +/* PORTC interrupt vectors */ +#define PORTC_INT0_vect_num 2 +#define PORTC_INT0_vect _VECTOR(2) /* External Interrupt 0 */ +#define PORTC_INT1_vect_num 3 +#define PORTC_INT1_vect _VECTOR(3) /* External Interrupt 1 */ + +/* PORTR interrupt vectors */ +#define PORTR_INT0_vect_num 4 +#define PORTR_INT0_vect _VECTOR(4) /* External Interrupt 0 */ +#define PORTR_INT1_vect_num 5 +#define PORTR_INT1_vect _VECTOR(5) /* External Interrupt 1 */ + +/* DMA interrupt vectors */ +#define DMA_CH0_vect_num 6 +#define DMA_CH0_vect _VECTOR(6) /* Channel 0 Interrupt */ +#define DMA_CH1_vect_num 7 +#define DMA_CH1_vect _VECTOR(7) /* Channel 1 Interrupt */ +#define DMA_CH2_vect_num 8 +#define DMA_CH2_vect _VECTOR(8) /* Channel 2 Interrupt */ +#define DMA_CH3_vect_num 9 +#define DMA_CH3_vect _VECTOR(9) /* Channel 3 Interrupt */ + +/* RTC interrupt vectors */ +#define RTC_OVF_vect_num 10 +#define RTC_OVF_vect _VECTOR(10) /* Overflow Interrupt */ +#define RTC_COMP_vect_num 11 +#define RTC_COMP_vect _VECTOR(11) /* Compare Interrupt */ + +/* TWIC interrupt vectors */ +#define TWIC_TWIS_vect_num 12 +#define TWIC_TWIS_vect _VECTOR(12) /* TWI Slave Interrupt */ +#define TWIC_TWIM_vect_num 13 +#define TWIC_TWIM_vect _VECTOR(13) /* TWI Master Interrupt */ + +/* TCC0 interrupt vectors */ +#define TCC0_OVF_vect_num 14 +#define TCC0_OVF_vect _VECTOR(14) /* Overflow Interrupt */ +#define TCC0_ERR_vect_num 15 +#define TCC0_ERR_vect _VECTOR(15) /* Error Interrupt */ +#define TCC0_CCA_vect_num 16 +#define TCC0_CCA_vect _VECTOR(16) /* Compare or Capture A Interrupt */ +#define TCC0_CCB_vect_num 17 +#define TCC0_CCB_vect _VECTOR(17) /* Compare or Capture B Interrupt */ +#define TCC0_CCC_vect_num 18 +#define TCC0_CCC_vect _VECTOR(18) /* Compare or Capture C Interrupt */ +#define TCC0_CCD_vect_num 19 +#define TCC0_CCD_vect _VECTOR(19) /* Compare or Capture D Interrupt */ + +/* TCC1 interrupt vectors */ +#define TCC1_OVF_vect_num 20 +#define TCC1_OVF_vect _VECTOR(20) /* Overflow Interrupt */ +#define TCC1_ERR_vect_num 21 +#define TCC1_ERR_vect _VECTOR(21) /* Error Interrupt */ +#define TCC1_CCA_vect_num 22 +#define TCC1_CCA_vect _VECTOR(22) /* Compare or Capture A Interrupt */ +#define TCC1_CCB_vect_num 23 +#define TCC1_CCB_vect _VECTOR(23) /* Compare or Capture B Interrupt */ + +/* SPIC interrupt vectors */ +#define SPIC_INT_vect_num 24 +#define SPIC_INT_vect _VECTOR(24) /* SPI Interrupt */ + +/* USARTC0 interrupt vectors */ +#define USARTC0_RXC_vect_num 25 +#define USARTC0_RXC_vect _VECTOR(25) /* Reception Complete Interrupt */ +#define USARTC0_DRE_vect_num 26 +#define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ +#define USARTC0_TXC_vect_num 27 +#define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ + +/* USARTC1 interrupt vectors */ +#define USARTC1_RXC_vect_num 28 +#define USARTC1_RXC_vect _VECTOR(28) /* Reception Complete Interrupt */ +#define USARTC1_DRE_vect_num 29 +#define USARTC1_DRE_vect _VECTOR(29) /* Data Register Empty Interrupt */ +#define USARTC1_TXC_vect_num 30 +#define USARTC1_TXC_vect _VECTOR(30) /* Transmission Complete Interrupt */ + +/* AES interrupt vectors */ +#define AES_INT_vect_num 31 +#define AES_INT_vect _VECTOR(31) /* AES Interrupt */ + +/* NVM interrupt vectors */ +#define NVM_EE_vect_num 32 +#define NVM_EE_vect _VECTOR(32) /* EE Interrupt */ +#define NVM_SPM_vect_num 33 +#define NVM_SPM_vect _VECTOR(33) /* SPM Interrupt */ + +/* PORTB interrupt vectors */ +#define PORTB_INT0_vect_num 34 +#define PORTB_INT0_vect _VECTOR(34) /* External Interrupt 0 */ +#define PORTB_INT1_vect_num 35 +#define PORTB_INT1_vect _VECTOR(35) /* External Interrupt 1 */ + +/* ACB interrupt vectors */ +#define ACB_AC0_vect_num 36 +#define ACB_AC0_vect _VECTOR(36) /* AC0 Interrupt */ +#define ACB_AC1_vect_num 37 +#define ACB_AC1_vect _VECTOR(37) /* AC1 Interrupt */ +#define ACB_ACW_vect_num 38 +#define ACB_ACW_vect _VECTOR(38) /* ACW Window Mode Interrupt */ + +/* ADCB interrupt vectors */ +#define ADCB_CH0_vect_num 39 +#define ADCB_CH0_vect _VECTOR(39) /* Interrupt 0 */ +#define ADCB_CH1_vect_num 40 +#define ADCB_CH1_vect _VECTOR(40) /* Interrupt 1 */ +#define ADCB_CH2_vect_num 41 +#define ADCB_CH2_vect _VECTOR(41) /* Interrupt 2 */ +#define ADCB_CH3_vect_num 42 +#define ADCB_CH3_vect _VECTOR(42) /* Interrupt 3 */ + +/* PORTE interrupt vectors */ +#define PORTE_INT0_vect_num 43 +#define PORTE_INT0_vect _VECTOR(43) /* External Interrupt 0 */ +#define PORTE_INT1_vect_num 44 +#define PORTE_INT1_vect _VECTOR(44) /* External Interrupt 1 */ + +/* TWIE interrupt vectors */ +#define TWIE_TWIS_vect_num 45 +#define TWIE_TWIS_vect _VECTOR(45) /* TWI Slave Interrupt */ +#define TWIE_TWIM_vect_num 46 +#define TWIE_TWIM_vect _VECTOR(46) /* TWI Master Interrupt */ + +/* TCE0 interrupt vectors */ +#define TCE0_OVF_vect_num 47 +#define TCE0_OVF_vect _VECTOR(47) /* Overflow Interrupt */ +#define TCE0_ERR_vect_num 48 +#define TCE0_ERR_vect _VECTOR(48) /* Error Interrupt */ +#define TCE0_CCA_vect_num 49 +#define TCE0_CCA_vect _VECTOR(49) /* Compare or Capture A Interrupt */ +#define TCE0_CCB_vect_num 50 +#define TCE0_CCB_vect _VECTOR(50) /* Compare or Capture B Interrupt */ +#define TCE0_CCC_vect_num 51 +#define TCE0_CCC_vect _VECTOR(51) /* Compare or Capture C Interrupt */ +#define TCE0_CCD_vect_num 52 +#define TCE0_CCD_vect _VECTOR(52) /* Compare or Capture D Interrupt */ + +/* TCE1 interrupt vectors */ +#define TCE1_OVF_vect_num 53 +#define TCE1_OVF_vect _VECTOR(53) /* Overflow Interrupt */ +#define TCE1_ERR_vect_num 54 +#define TCE1_ERR_vect _VECTOR(54) /* Error Interrupt */ +#define TCE1_CCA_vect_num 55 +#define TCE1_CCA_vect _VECTOR(55) /* Compare or Capture A Interrupt */ +#define TCE1_CCB_vect_num 56 +#define TCE1_CCB_vect _VECTOR(56) /* Compare or Capture B Interrupt */ + +/* SPIE interrupt vectors */ +#define SPIE_INT_vect_num 57 +#define SPIE_INT_vect _VECTOR(57) /* SPI Interrupt */ + +/* USARTE0 interrupt vectors */ +#define USARTE0_RXC_vect_num 58 +#define USARTE0_RXC_vect _VECTOR(58) /* Reception Complete Interrupt */ +#define USARTE0_DRE_vect_num 59 +#define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ +#define USARTE0_TXC_vect_num 60 +#define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ + +/* USARTE1 interrupt vectors */ +#define USARTE1_RXC_vect_num 61 +#define USARTE1_RXC_vect _VECTOR(61) /* Reception Complete Interrupt */ +#define USARTE1_DRE_vect_num 62 +#define USARTE1_DRE_vect _VECTOR(62) /* Data Register Empty Interrupt */ +#define USARTE1_TXC_vect_num 63 +#define USARTE1_TXC_vect _VECTOR(63) /* Transmission Complete Interrupt */ + +/* PORTD interrupt vectors */ +#define PORTD_INT0_vect_num 64 +#define PORTD_INT0_vect _VECTOR(64) /* External Interrupt 0 */ +#define PORTD_INT1_vect_num 65 +#define PORTD_INT1_vect _VECTOR(65) /* External Interrupt 1 */ + +/* PORTA interrupt vectors */ +#define PORTA_INT0_vect_num 66 +#define PORTA_INT0_vect _VECTOR(66) /* External Interrupt 0 */ +#define PORTA_INT1_vect_num 67 +#define PORTA_INT1_vect _VECTOR(67) /* External Interrupt 1 */ + +/* ACA interrupt vectors */ +#define ACA_AC0_vect_num 68 +#define ACA_AC0_vect _VECTOR(68) /* AC0 Interrupt */ +#define ACA_AC1_vect_num 69 +#define ACA_AC1_vect _VECTOR(69) /* AC1 Interrupt */ +#define ACA_ACW_vect_num 70 +#define ACA_ACW_vect _VECTOR(70) /* ACW Window Mode Interrupt */ + +/* ADCA interrupt vectors */ +#define ADCA_CH0_vect_num 71 +#define ADCA_CH0_vect _VECTOR(71) /* Interrupt 0 */ +#define ADCA_CH1_vect_num 72 +#define ADCA_CH1_vect _VECTOR(72) /* Interrupt 1 */ +#define ADCA_CH2_vect_num 73 +#define ADCA_CH2_vect _VECTOR(73) /* Interrupt 2 */ +#define ADCA_CH3_vect_num 74 +#define ADCA_CH3_vect _VECTOR(74) /* Interrupt 3 */ + +/* TCD0 interrupt vectors */ +#define TCD0_OVF_vect_num 77 +#define TCD0_OVF_vect _VECTOR(77) /* Overflow Interrupt */ +#define TCD0_ERR_vect_num 78 +#define TCD0_ERR_vect _VECTOR(78) /* Error Interrupt */ +#define TCD0_CCA_vect_num 79 +#define TCD0_CCA_vect _VECTOR(79) /* Compare or Capture A Interrupt */ +#define TCD0_CCB_vect_num 80 +#define TCD0_CCB_vect _VECTOR(80) /* Compare or Capture B Interrupt */ +#define TCD0_CCC_vect_num 81 +#define TCD0_CCC_vect _VECTOR(81) /* Compare or Capture C Interrupt */ +#define TCD0_CCD_vect_num 82 +#define TCD0_CCD_vect _VECTOR(82) /* Compare or Capture D Interrupt */ + +/* TCD1 interrupt vectors */ +#define TCD1_OVF_vect_num 83 +#define TCD1_OVF_vect _VECTOR(83) /* Overflow Interrupt */ +#define TCD1_ERR_vect_num 84 +#define TCD1_ERR_vect _VECTOR(84) /* Error Interrupt */ +#define TCD1_CCA_vect_num 85 +#define TCD1_CCA_vect _VECTOR(85) /* Compare or Capture A Interrupt */ +#define TCD1_CCB_vect_num 86 +#define TCD1_CCB_vect _VECTOR(86) /* Compare or Capture B Interrupt */ + +/* SPID interrupt vectors */ +#define SPID_INT_vect_num 87 +#define SPID_INT_vect _VECTOR(87) /* SPI Interrupt */ + +/* USARTD0 interrupt vectors */ +#define USARTD0_RXC_vect_num 88 +#define USARTD0_RXC_vect _VECTOR(88) /* Reception Complete Interrupt */ +#define USARTD0_DRE_vect_num 89 +#define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ +#define USARTD0_TXC_vect_num 90 +#define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ + +/* USARTD1 interrupt vectors */ +#define USARTD1_RXC_vect_num 91 +#define USARTD1_RXC_vect _VECTOR(91) /* Reception Complete Interrupt */ +#define USARTD1_DRE_vect_num 92 +#define USARTD1_DRE_vect _VECTOR(92) /* Data Register Empty Interrupt */ +#define USARTD1_TXC_vect_num 93 +#define USARTD1_TXC_vect _VECTOR(93) /* Transmission Complete Interrupt */ + +/* PORTF interrupt vectors */ +#define PORTF_INT0_vect_num 104 +#define PORTF_INT0_vect _VECTOR(104) /* External Interrupt 0 */ +#define PORTF_INT1_vect_num 105 +#define PORTF_INT1_vect _VECTOR(105) /* External Interrupt 1 */ + +/* TCF0 interrupt vectors */ +#define TCF0_OVF_vect_num 108 +#define TCF0_OVF_vect _VECTOR(108) /* Overflow Interrupt */ +#define TCF0_ERR_vect_num 109 +#define TCF0_ERR_vect _VECTOR(109) /* Error Interrupt */ +#define TCF0_CCA_vect_num 110 +#define TCF0_CCA_vect _VECTOR(110) /* Compare or Capture A Interrupt */ +#define TCF0_CCB_vect_num 111 +#define TCF0_CCB_vect _VECTOR(111) /* Compare or Capture B Interrupt */ +#define TCF0_CCC_vect_num 112 +#define TCF0_CCC_vect _VECTOR(112) /* Compare or Capture C Interrupt */ +#define TCF0_CCD_vect_num 113 +#define TCF0_CCD_vect _VECTOR(113) /* Compare or Capture D Interrupt */ + +/* USARTF0 interrupt vectors */ +#define USARTF0_RXC_vect_num 119 +#define USARTF0_RXC_vect _VECTOR(119) /* Reception Complete Interrupt */ +#define USARTF0_DRE_vect_num 120 +#define USARTF0_DRE_vect _VECTOR(120) /* Data Register Empty Interrupt */ +#define USARTF0_TXC_vect_num 121 +#define USARTF0_TXC_vect _VECTOR(121) /* Transmission Complete Interrupt */ + + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (122 * _VECTOR_SIZE) + + +/* ========== Constants ========== */ + +#define PROGMEM_START (0x0000) +#define PROGMEM_SIZE (270336) +#define PROGMEM_END (PROGMEM_START + PROGMEM_SIZE - 1) + +#define APP_SECTION_START (0x0000) +#define APP_SECTION_SIZE (262144) +#define APP_SECTION_END (APP_SECTION_START + APP_SECTION_SIZE - 1) + +#define APPTABLE_SECTION_START (0x3E000) +#define APPTABLE_SECTION_SIZE (8192) +#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) + +#define BOOT_SECTION_START (0x40000) +#define BOOT_SECTION_SIZE (8192) +#define BOOT_SECTION_END (BOOT_SECTION_START + BOOT_SECTION_SIZE - 1) + +#define DATAMEM_START (0x0000) +#define DATAMEM_SIZE (24576) +#define DATAMEM_END (DATAMEM_START + DATAMEM_SIZE - 1) + +#define IO_START (0x0000) +#define IO_SIZE (4096) +#define IO_END (IO_START + IO_SIZE - 1) + +#define MAPPED_EEPROM_START (0x1000) +#define MAPPED_EEPROM_SIZE (4096) +#define MAPPED_EEPROM_END (MAPPED_EEPROM_START + MAPPED_EEPROM_SIZE - 1) + +#define INTERNAL_SRAM_START (0x2000) +#define INTERNAL_SRAM_SIZE (16384) +#define INTERNAL_SRAM_END (INTERNAL_SRAM_START + INTERNAL_SRAM_SIZE - 1) + +#define EEPROM_START (0x0000) +#define EEPROM_SIZE (4096) +#define EEPROM_END (EEPROM_START + EEPROM_SIZE - 1) + +#define FUSE_START (0x0000) +#define FUSE_SIZE (6) +#define FUSE_END (FUSE_START + FUSE_SIZE - 1) + +#define LOCKBIT_START (0x0000) +#define LOCKBIT_SIZE (1) +#define LOCKBIT_END (LOCKBIT_START + LOCKBIT_SIZE - 1) + +#define SIGNATURES_START (0x0000) +#define SIGNATURES_SIZE (3) +#define SIGNATURES_END (SIGNATURES_START + SIGNATURES_SIZE - 1) + +#define USER_SIGNATURES_START (0x0000) +#define USER_SIGNATURES_SIZE (512) +#define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) + +#define PROD_SIGNATURES_START (0x0000) +#define PROD_SIGNATURES_SIZE (52) +#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) + +#define FLASHEND PROGMEM_END +#define SPM_PAGESIZE PROGMEM_PAGE_SIZE +#define RAMSTART INTERNAL_SRAM_START +#define RAMSIZE INTERNAL_SRAM_SIZE +#define RAMEND INTERNAL_SRAM_END +#define XRAMSTART EXTERNAL_SRAM_START +#define XRAMSIZE EXTERNAL_SRAM_SIZE +#define XRAMEND INTERNAL_SRAM_END +#define E2END EEPROM_END +#define E2PAGESIZE EEPROM_PAGE_SIZE + + +/* ========== Fuses ========== */ +#define FUSE_MEMORY_SIZE 6 + +/* Fuse Byte 0 */ +#define FUSE_JTAGUSERID0 ~_BV(0) /* JTAG User ID Bit 0 */ +#define FUSE_JTAGUSERID1 ~_BV(1) /* JTAG User ID Bit 1 */ +#define FUSE_JTAGUSERID2 ~_BV(2) /* JTAG User ID Bit 2 */ +#define FUSE_JTAGUSERID3 ~_BV(3) /* JTAG User ID Bit 3 */ +#define FUSE_JTAGUSERID4 ~_BV(4) /* JTAG User ID Bit 4 */ +#define FUSE_JTAGUSERID5 ~_BV(5) /* JTAG User ID Bit 5 */ +#define FUSE_JTAGUSERID6 ~_BV(6) /* JTAG User ID Bit 6 */ +#define FUSE_JTAGUSERID7 ~_BV(7) /* JTAG User ID Bit 7 */ +#define FUSE0_DEFAULT (0xFF) + +/* Fuse Byte 1 */ +#define FUSE_WDP0 ~_BV(0) /* Watchdog Timeout Period Bit 0 */ +#define FUSE_WDP1 ~_BV(1) /* Watchdog Timeout Period Bit 1 */ +#define FUSE_WDP2 ~_BV(2) /* Watchdog Timeout Period Bit 2 */ +#define FUSE_WDP3 ~_BV(3) /* Watchdog Timeout Period Bit 3 */ +#define FUSE_WDWP0 ~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ +#define FUSE_WDWP1 ~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ +#define FUSE_WDWP2 ~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ +#define FUSE_WDWP3 ~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ +#define FUSE1_DEFAULT (0xFF) + +/* Fuse Byte 2 */ +#define FUSE_BODPD0 ~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ +#define FUSE_BODPD1 ~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ +#define FUSE_BODACT0 ~_BV(2) /* BOD Operation in Active Mode Bit 0 */ +#define FUSE_BODACT1 ~_BV(3) /* BOD Operation in Active Mode Bit 1 */ +#define FUSE_BOOTRST ~_BV(6) /* Boot Loader Section Reset Vector */ +#define FUSE_DVSDON ~_BV(7) /* Spike Detector Enable */ +#define FUSE2_DEFAULT (0xFF) + +/* Fuse Byte 3 Reserved */ + +/* Fuse Byte 4 */ +#define FUSE_JTAGEN ~_BV(0) /* JTAG Interface Enable */ +#define FUSE_WDLOCK ~_BV(1) /* Watchdog Timer Lock */ +#define FUSE_SUT0 ~_BV(2) /* Start-up Time Bit 0 */ +#define FUSE_SUT1 ~_BV(3) /* Start-up Time Bit 1 */ +#define FUSE4_DEFAULT (0xFF) + +/* Fuse Byte 5 */ +#define FUSE_BODLVL0 ~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ +#define FUSE_BODLVL1 ~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ +#define FUSE_BODLVL2 ~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ +#define FUSE_EESAVE ~_BV(3) /* Preserve EEPROM Through Chip Erase */ +#define FUSE5_DEFAULT (0xFF) + + +/* ========== Lock Bits ========== */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_BITS_EXIST +#define __BOOT_LOCK_BOOT_BITS_EXIST + + +/* ========== Signature ========== */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x98 +#define SIGNATURE_2 0x42 + + +#endif /* _AVR_ATxmega256A3_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox256a3b.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox256a3b.h new file mode 100644 index 0000000..bf5a6aa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox256a3b.h @@ -0,0 +1,6854 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iox256a3b.h,v 1.1.2.4 2008/11/03 04:13:17 arcanum Exp $ */ + +/* avr/iox256a3b.h - definitions for ATxmega256A3B */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iox256a3b.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATxmega256A3B_H_ +#define _AVR_ATxmega256A3B_H_ 1 + + +/* Ungrouped common registers */ +#define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ +#define GPIO1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ +#define GPIO2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ +#define GPIO3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ +#define GPIO4 _SFR_MEM8(0x0004) /* General Purpose IO Register 4 */ +#define GPIO5 _SFR_MEM8(0x0005) /* General Purpose IO Register 5 */ +#define GPIO6 _SFR_MEM8(0x0006) /* General Purpose IO Register 6 */ +#define GPIO7 _SFR_MEM8(0x0007) /* General Purpose IO Register 7 */ +#define GPIO8 _SFR_MEM8(0x0008) /* General Purpose IO Register 8 */ +#define GPIO9 _SFR_MEM8(0x0009) /* General Purpose IO Register 9 */ +#define GPIOA _SFR_MEM8(0x000A) /* General Purpose IO Register 10 */ +#define GPIOB _SFR_MEM8(0x000B) /* General Purpose IO Register 11 */ +#define GPIOC _SFR_MEM8(0x000C) /* General Purpose IO Register 12 */ +#define GPIOD _SFR_MEM8(0x000D) /* General Purpose IO Register 13 */ +#define GPIOE _SFR_MEM8(0x000E) /* General Purpose IO Register 14 */ +#define GPIOF _SFR_MEM8(0x000F) /* General Purpose IO Register 15 */ + +#define CCP _SFR_MEM8(0x0034) /* Configuration Change Protection */ +#define RAMPD _SFR_MEM8(0x0038) /* Ramp D */ +#define RAMPX _SFR_MEM8(0x0039) /* Ramp X */ +#define RAMPY _SFR_MEM8(0x003A) /* Ramp Y */ +#define RAMPZ _SFR_MEM8(0x003B) /* Ramp Z */ +#define EIND _SFR_MEM8(0x003C) /* Extended Indirect Jump */ +#define SPL _SFR_MEM8(0x003D) /* Stack Pointer Low */ +#define SPH _SFR_MEM8(0x003E) /* Stack Pointer High */ +#define SREG _SFR_MEM8(0x003F) /* Status Register */ + + +/* C Language Only */ +#if !defined (__ASSEMBLER__) + +#include + +typedef volatile uint8_t register8_t; +typedef volatile uint16_t register16_t; +typedef volatile uint32_t register32_t; + + +#ifdef _WORDREGISTER +#undef _WORDREGISTER +#endif +#define _WORDREGISTER(regname) \ + union \ + { \ + register16_t regname; \ + struct \ + { \ + register8_t regname ## L; \ + register8_t regname ## H; \ + }; \ + } + +#ifdef _DWORDREGISTER +#undef _DWORDREGISTER +#endif +#define _DWORDREGISTER(regname) \ + union \ + { \ + register32_t regname; \ + struct \ + { \ + register8_t regname ## 0; \ + register8_t regname ## 1; \ + register8_t regname ## 2; \ + register8_t regname ## 3; \ + }; \ + } + + +/* +========================================================================== +IO Module Structures +========================================================================== +*/ + + +/* +-------------------------------------------------------------------------- +XOCD - On-Chip Debug System +-------------------------------------------------------------------------- +*/ + +/* On-Chip Debug System */ +typedef struct OCD_struct +{ + register8_t OCDR0; /* OCD Register 0 */ + register8_t OCDR1; /* OCD Register 1 */ +} OCD_t; + + +/* CCP signatures */ +typedef enum CCP_enum +{ + CCP_SPM_gc = (0x9D<<0), /* SPM Instruction Protection */ + CCP_IOREG_gc = (0xD8<<0), /* IO Register Protection */ +} CCP_t; + + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Clock System */ +typedef struct CLK_struct +{ + register8_t CTRL; /* Control Register */ + register8_t PSCTRL; /* Prescaler Control Register */ + register8_t LOCK; /* Lock register */ + register8_t RTCCTRL; /* RTC Control Register */ +} CLK_t; + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Power Reduction */ +typedef struct PR_struct +{ + register8_t PR; /* General Power Reduction */ + register8_t PRPA; /* Power Reduction Port A */ + register8_t PRPB; /* Power Reduction Port B */ + register8_t PRPC; /* Power Reduction Port C */ + register8_t PRPD; /* Power Reduction Port D */ + register8_t PRPE; /* Power Reduction Port E */ + register8_t PRPF; /* Power Reduction Port F */ +} PR_t; + +/* System Clock Selection */ +typedef enum CLK_SCLKSEL_enum +{ + CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2MHz RC Oscillator */ + CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32MHz RC Oscillator */ + CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32kHz RC Oscillator */ + CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ + CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ +} CLK_SCLKSEL_t; + +/* Prescaler A Division Factor */ +typedef enum CLK_PSADIV_enum +{ + CLK_PSADIV_1_gc = (0x00<<2), /* Divide by 1 */ + CLK_PSADIV_2_gc = (0x01<<2), /* Divide by 2 */ + CLK_PSADIV_4_gc = (0x03<<2), /* Divide by 4 */ + CLK_PSADIV_8_gc = (0x05<<2), /* Divide by 8 */ + CLK_PSADIV_16_gc = (0x07<<2), /* Divide by 16 */ + CLK_PSADIV_32_gc = (0x09<<2), /* Divide by 32 */ + CLK_PSADIV_64_gc = (0x0B<<2), /* Divide by 64 */ + CLK_PSADIV_128_gc = (0x0D<<2), /* Divide by 128 */ + CLK_PSADIV_256_gc = (0x0F<<2), /* Divide by 256 */ + CLK_PSADIV_512_gc = (0x11<<2), /* Divide by 512 */ +} CLK_PSADIV_t; + +/* Prescaler B and C Division Factor */ +typedef enum CLK_PSBCDIV_enum +{ + CLK_PSBCDIV_1_1_gc = (0x00<<0), /* Divide B by 1 and C by 1 */ + CLK_PSBCDIV_1_2_gc = (0x01<<0), /* Divide B by 1 and C by 2 */ + CLK_PSBCDIV_4_1_gc = (0x02<<0), /* Divide B by 4 and C by 1 */ + CLK_PSBCDIV_2_2_gc = (0x03<<0), /* Divide B by 2 and C by 2 */ +} CLK_PSBCDIV_t; + +/* RTC Clock Source */ +typedef enum CLK_RTCSRC_enum +{ + CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1kHz from internal 32kHz ULP */ + CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1kHz from internal 32kHz RC oscillator */ + CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32kHz from 32kHz crystal oscillator on TOSC */ +} CLK_RTCSRC_t; + + +/* +-------------------------------------------------------------------------- +SLEEP - Sleep Controller +-------------------------------------------------------------------------- +*/ + +/* Sleep Controller */ +typedef struct SLEEP_struct +{ + register8_t CTRL; /* Control Register */ +} SLEEP_t; + +/* Sleep Mode */ +typedef enum SLEEP_SMODE_enum +{ + SLEEP_SMODE_IDLE_gc = (0x00<<1), /* Idle mode */ + SLEEP_SMODE_PDOWN_gc = (0x02<<1), /* Power-down Mode */ + SLEEP_SMODE_PSAVE_gc = (0x03<<1), /* Power-save Mode */ + SLEEP_SMODE_STDBY_gc = (0x06<<1), /* Standby Mode */ + SLEEP_SMODE_ESTDBY_gc = (0x07<<1), /* Extended Standby Mode */ +} SLEEP_SMODE_t; + + +/* +-------------------------------------------------------------------------- +OSC - Oscillator +-------------------------------------------------------------------------- +*/ + +/* Oscillator */ +typedef struct OSC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t XOSCCTRL; /* External Oscillator Control Register */ + register8_t XOSCFAIL; /* External Oscillator Failure Detection Register */ + register8_t RC32KCAL; /* 32kHz Internal Oscillator Calibration Register */ + register8_t PLLCTRL; /* PLL Control REgister */ + register8_t DFLLCTRL; /* DFLL Control Register */ +} OSC_t; + +/* Oscillator Frequency Range */ +typedef enum OSC_FRQRANGE_enum +{ + OSC_FRQRANGE_04TO2_gc = (0x00<<6), /* 0.4 - 2 MHz */ + OSC_FRQRANGE_2TO9_gc = (0x01<<6), /* 2 - 9 MHz */ + OSC_FRQRANGE_9TO12_gc = (0x02<<6), /* 9 - 12 MHz */ + OSC_FRQRANGE_12TO16_gc = (0x03<<6), /* 12 - 16 MHz */ +} OSC_FRQRANGE_t; + +/* External Oscillator Selection and Startup Time */ +typedef enum OSC_XOSCSEL_enum +{ + OSC_XOSCSEL_EXTCLK_gc = (0x00<<0), /* External Clock - 6 CLK */ + OSC_XOSCSEL_32KHz_gc = (0x02<<0), /* 32kHz TOSC - 32K CLK */ + OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), /* 0.4-16MHz XTAL - 256 CLK */ + OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), /* 0.4-16MHz XTAL - 1K CLK */ + OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), /* 0.4-16MHz XTAL - 16K CLK */ +} OSC_XOSCSEL_t; + +/* PLL Clock Source */ +typedef enum OSC_PLLSRC_enum +{ + OSC_PLLSRC_RC2M_gc = (0x00<<6), /* Internal 2MHz RC Oscillator */ + OSC_PLLSRC_RC32M_gc = (0x02<<6), /* Internal 32MHz RC Oscillator */ + OSC_PLLSRC_XOSC_gc = (0x03<<6), /* External Oscillator */ +} OSC_PLLSRC_t; + + +/* +-------------------------------------------------------------------------- +DFLL - DFLL +-------------------------------------------------------------------------- +*/ + +/* DFLL */ +typedef struct DFLL_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t CALA; /* Calibration Register A */ + register8_t CALB; /* Calibration Register B */ + register8_t OSCCNT0; /* Oscillator Counter Register 0 */ + register8_t OSCCNT1; /* Oscillator Counter Register 1 */ + register8_t OSCCNT2; /* Oscillator Counter Register 2 */ + register8_t reserved_0x07; +} DFLL_t; + + +/* +-------------------------------------------------------------------------- +RST - Reset +-------------------------------------------------------------------------- +*/ + +/* Reset */ +typedef struct RST_struct +{ + register8_t STATUS; /* Status Register */ + register8_t CTRL; /* Control Register */ +} RST_t; + + +/* +-------------------------------------------------------------------------- +WDT - Watch-Dog Timer +-------------------------------------------------------------------------- +*/ + +/* Watch-Dog Timer */ +typedef struct WDT_struct +{ + register8_t CTRL; /* Control */ + register8_t WINCTRL; /* Windowed Mode Control */ + register8_t STATUS; /* Status */ +} WDT_t; + +/* Period setting */ +typedef enum WDT_PER_enum +{ + WDT_PER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_PER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_PER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_PER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_PER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_PER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_PER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_PER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_PER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_PER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_PER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_PER_t; + +/* Closed window period */ +typedef enum WDT_WPER_enum +{ + WDT_WPER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_WPER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_WPER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_WPER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_WPER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_WPER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_WPER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_WPER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_WPER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_WPER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_WPER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_WPER_t; + + +/* +-------------------------------------------------------------------------- +MCU - MCU Control +-------------------------------------------------------------------------- +*/ + +/* MCU Control */ +typedef struct MCU_struct +{ + register8_t DEVID0; /* Device ID byte 0 */ + register8_t DEVID1; /* Device ID byte 1 */ + register8_t DEVID2; /* Device ID byte 2 */ + register8_t REVID; /* Revision ID */ + register8_t JTAGUID; /* JTAG User ID */ + register8_t reserved_0x05; + register8_t MCUCR; /* MCU Control */ + register8_t reserved_0x07; + register8_t EVSYSLOCK; /* Event System Lock */ + register8_t AWEXLOCK; /* AWEX Lock */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; +} MCU_t; + + +/* +-------------------------------------------------------------------------- +PMIC - Programmable Multi-level Interrupt Controller +-------------------------------------------------------------------------- +*/ + +/* Programmable Multi-level Interrupt Controller */ +typedef struct PMIC_struct +{ + register8_t STATUS; /* Status Register */ + register8_t INTPRI; /* Interrupt Priority */ + register8_t CTRL; /* Control Register */ +} PMIC_t; + + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Channel */ +typedef struct DMA_CH_struct +{ + register8_t CTRLA; /* Channel Control */ + register8_t CTRLB; /* Channel Control */ + register8_t ADDRCTRL; /* Address Control */ + register8_t TRIGSRC; /* Channel Trigger Source */ + _WORDREGISTER(TRFCNT); /* Channel Block Transfer Count */ + register8_t REPCNT; /* Channel Repeat Count */ + register8_t reserved_0x07; + register8_t SRCADDR0; /* Channel Source Address 0 */ + register8_t SRCADDR1; /* Channel Source Address 1 */ + register8_t SRCADDR2; /* Channel Source Address 2 */ + register8_t reserved_0x0B; + register8_t DESTADDR0; /* Channel Destination Address 0 */ + register8_t DESTADDR1; /* Channel Destination Address 1 */ + register8_t DESTADDR2; /* Channel Destination Address 2 */ + register8_t reserved_0x0F; +} DMA_CH_t; + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Controller */ +typedef struct DMA_struct +{ + register8_t CTRL; /* Control */ + register8_t reserved_0x01; + register8_t reserved_0x02; + register8_t INTFLAGS; /* Transfer Interrupt Status */ + register8_t STATUS; /* Status */ + register8_t reserved_0x05; + _WORDREGISTER(TEMP); /* Temporary Register For 16/24-bit Access */ + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + DMA_CH_t CH0; /* DMA Channel 0 */ + DMA_CH_t CH1; /* DMA Channel 1 */ + DMA_CH_t CH2; /* DMA Channel 2 */ + DMA_CH_t CH3; /* DMA Channel 3 */ +} DMA_t; + +/* Burst mode */ +typedef enum DMA_CH_BURSTLEN_enum +{ + DMA_CH_BURSTLEN_1BYTE_gc = (0x00<<0), /* 1-byte burst mode */ + DMA_CH_BURSTLEN_2BYTE_gc = (0x01<<0), /* 2-byte burst mode */ + DMA_CH_BURSTLEN_4BYTE_gc = (0x02<<0), /* 4-byte burst mode */ + DMA_CH_BURSTLEN_8BYTE_gc = (0x03<<0), /* 8-byte burst mode */ +} DMA_CH_BURSTLEN_t; + +/* Source address reload mode */ +typedef enum DMA_CH_SRCRELOAD_enum +{ + DMA_CH_SRCRELOAD_NONE_gc = (0x00<<6), /* No reload */ + DMA_CH_SRCRELOAD_BLOCK_gc = (0x01<<6), /* Reload at end of block */ + DMA_CH_SRCRELOAD_BURST_gc = (0x02<<6), /* Reload at end of burst */ + DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), /* Reload at end of transaction */ +} DMA_CH_SRCRELOAD_t; + +/* Source addressing mode */ +typedef enum DMA_CH_SRCDIR_enum +{ + DMA_CH_SRCDIR_FIXED_gc = (0x00<<4), /* Fixed */ + DMA_CH_SRCDIR_INC_gc = (0x01<<4), /* Increment */ + DMA_CH_SRCDIR_DEC_gc = (0x02<<4), /* Decrement */ +} DMA_CH_SRCDIR_t; + +/* Destination adress reload mode */ +typedef enum DMA_CH_DESTRELOAD_enum +{ + DMA_CH_DESTRELOAD_NONE_gc = (0x00<<2), /* No reload */ + DMA_CH_DESTRELOAD_BLOCK_gc = (0x01<<2), /* Reload at end of block */ + DMA_CH_DESTRELOAD_BURST_gc = (0x02<<2), /* Reload at end of burst */ + DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), /* Reload at end of transaction */ +} DMA_CH_DESTRELOAD_t; + +/* Destination adressing mode */ +typedef enum DMA_CH_DESTDIR_enum +{ + DMA_CH_DESTDIR_FIXED_gc = (0x00<<0), /* Fixed */ + DMA_CH_DESTDIR_INC_gc = (0x01<<0), /* Increment */ + DMA_CH_DESTDIR_DEC_gc = (0x02<<0), /* Decrement */ +} DMA_CH_DESTDIR_t; + +/* Transfer trigger source */ +typedef enum DMA_CH_TRIGSRC_enum +{ + DMA_CH_TRIGSRC_OFF_gc = (0x00<<0), /* Off software triggers only */ + DMA_CH_TRIGSRC_EVSYS_CH0_gc = (0x01<<0), /* Event System Channel 0 */ + DMA_CH_TRIGSRC_EVSYS_CH1_gc = (0x02<<0), /* Event System Channel 1 */ + DMA_CH_TRIGSRC_EVSYS_CH2_gc = (0x03<<0), /* Event System Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH0_gc = (0x10<<0), /* ADCA Channel 0 */ + DMA_CH_TRIGSRC_ADCA_CH1_gc = (0x11<<0), /* ADCA Channel 1 */ + DMA_CH_TRIGSRC_ADCA_CH2_gc = (0x12<<0), /* ADCA Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH3_gc = (0x13<<0), /* ADCA Channel 3 */ + DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), /* ADCA Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACA_CH0_gc = (0x15<<0), /* DACA Channel 0 */ + DMA_CH_TRIGSRC_DACA_CH1_gc = (0x16<<0), /* DACA Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH0_gc = (0x20<<0), /* ADCB Channel 0 */ + DMA_CH_TRIGSRC_ADCB_CH1_gc = (0x21<<0), /* ADCB Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH2_gc = (0x22<<0), /* ADCB Channel 2 */ + DMA_CH_TRIGSRC_ADCB_CH3_gc = (0x23<<0), /* ADCB Channel 3 */ + DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), /* ADCB Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACB_CH0_gc = (0x25<<0), /* DACB Channel 0 */ + DMA_CH_TRIGSRC_DACB_CH1_gc = (0x26<<0), /* DACB Channel 1 */ + DMA_CH_TRIGSRC_TCC0_OVF_gc = (0x40<<0), /* Timer/Counter C0 Overflow */ + DMA_CH_TRIGSRC_TCC0_ERR_gc = (0x41<<0), /* Timer/Counter C0 Error */ + DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), /* Timer/Counter C0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), /* Timer/Counter C0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), /* Timer/Counter C0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), /* Timer/Counter C0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCC1_OVF_gc = (0x46<<0), /* Timer/Counter C1 Overflow */ + DMA_CH_TRIGSRC_TCC1_ERR_gc = (0x47<<0), /* Timer/Counter C1 Error */ + DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), /* Timer/Counter C1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), /* Timer/Counter C1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIC_gc = (0x4A<<0), /* SPI C Transfer Complete */ + DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), /* USART C0 Receive Complete */ + DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), /* USART C0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), /* USART C1 Receive Complete */ + DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), /* USART C1 Data Register Empty */ + DMA_CH_TRIGSRC_TCD0_OVF_gc = (0x60<<0), /* Timer/Counter D0 Overflow */ + DMA_CH_TRIGSRC_TCD0_ERR_gc = (0x61<<0), /* Timer/Counter D0 Error */ + DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), /* Timer/Counter D0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), /* Timer/Counter D0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), /* Timer/Counter D0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), /* Timer/Counter D0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCD1_OVF_gc = (0x66<<0), /* Timer/Counter D1 Overflow */ + DMA_CH_TRIGSRC_TCD1_ERR_gc = (0x67<<0), /* Timer/Counter D1 Error */ + DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), /* Timer/Counter D1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), /* Timer/Counter D1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPID_gc = (0x6A<<0), /* SPI D Transfer Complete */ + DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), /* USART D0 Receive Complete */ + DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), /* USART D0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), /* USART D1 Receive Complete */ + DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), /* USART D1 Data Register Empty */ + DMA_CH_TRIGSRC_TCE0_OVF_gc = (0x80<<0), /* Timer/Counter E0 Overflow */ + DMA_CH_TRIGSRC_TCE0_ERR_gc = (0x81<<0), /* Timer/Counter E0 Error */ + DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), /* Timer/Counter E0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), /* Timer/Counter E0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), /* Timer/Counter E0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), /* Timer/Counter E0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCE1_OVF_gc = (0x86<<0), /* Timer/Counter E1 Overflow */ + DMA_CH_TRIGSRC_TCE1_ERR_gc = (0x87<<0), /* Timer/Counter E1 Error */ + DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), /* Timer/Counter E1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), /* Timer/Counter E1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIE_gc = (0x8A<<0), /* SPI E Transfer Complete */ + DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), /* USART E0 Receive Complete */ + DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), /* USART E0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), /* USART E1 Receive Complete */ + DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), /* USART E1 Data Register Empty */ + DMA_CH_TRIGSRC_TCF0_OVF_gc = (0xA0<<0), /* Timer/Counter F0 Overflow */ + DMA_CH_TRIGSRC_TCF0_ERR_gc = (0xA1<<0), /* Timer/Counter F0 Error */ + DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), /* Timer/Counter F0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), /* Timer/Counter F0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), /* Timer/Counter F0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), /* Timer/Counter F0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCF1_OVF_gc = (0xA6<<0), /* Timer/Counter F1 Overflow */ + DMA_CH_TRIGSRC_TCF1_ERR_gc = (0xA7<<0), /* Timer/Counter F1 Error */ + DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), /* Timer/Counter F1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), /* Timer/Counter F1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIF_gc = (0xAA<<0), /* SPI F Transfer Complete */ + DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), /* USART F0 Receive Complete */ + DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), /* USART F0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), /* USART F1 Receive Complete */ + DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), /* USART F1 Data Register Empty */ +} DMA_CH_TRIGSRC_t; + +/* Double buffering mode */ +typedef enum DMA_DBUFMODE_enum +{ + DMA_DBUFMODE_DISABLED_gc = (0x00<<2), /* Double buffering disabled */ + DMA_DBUFMODE_CH01_gc = (0x01<<2), /* Double buffering enabled on channel 0/1 */ + DMA_DBUFMODE_CH23_gc = (0x02<<2), /* Double buffering enabled on channel 2/3 */ + DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ +} DMA_DBUFMODE_t; + +/* Priority mode */ +typedef enum DMA_PRIMODE_enum +{ + DMA_PRIMODE_RR0123_gc = (0x00<<0), /* Round Robin */ + DMA_PRIMODE_CH0RR123_gc = (0x01<<0), /* Channel 0 > Round Robin on channel 1/2/3 */ + DMA_PRIMODE_CH01RR23_gc = (0x02<<0), /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ + DMA_PRIMODE_CH0123_gc = (0x03<<0), /* Channel 0 > channel 1 > channel 2 > channel 3 */ +} DMA_PRIMODE_t; + +/* Interrupt level */ +typedef enum DMA_CH_ERRINTLVL_enum +{ + DMA_CH_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + DMA_CH_ERRINTLVL_LO_gc = (0x01<<2), /* Low level */ + DMA_CH_ERRINTLVL_MED_gc = (0x02<<2), /* Medium level */ + DMA_CH_ERRINTLVL_HI_gc = (0x03<<2), /* High level */ +} DMA_CH_ERRINTLVL_t; + +/* Interrupt level */ +typedef enum DMA_CH_TRNINTLVL_enum +{ + DMA_CH_TRNINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + DMA_CH_TRNINTLVL_LO_gc = (0x01<<0), /* Low level */ + DMA_CH_TRNINTLVL_MED_gc = (0x02<<0), /* Medium level */ + DMA_CH_TRNINTLVL_HI_gc = (0x03<<0), /* High level */ +} DMA_CH_TRNINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EVSYS - Event System +-------------------------------------------------------------------------- +*/ + +/* Event System */ +typedef struct EVSYS_struct +{ + register8_t CH0MUX; /* Event Channel 0 Multiplexer */ + register8_t CH1MUX; /* Event Channel 1 Multiplexer */ + register8_t CH2MUX; /* Event Channel 2 Multiplexer */ + register8_t CH3MUX; /* Event Channel 3 Multiplexer */ + register8_t CH4MUX; /* Event Channel 4 Multiplexer */ + register8_t CH5MUX; /* Event Channel 5 Multiplexer */ + register8_t CH6MUX; /* Event Channel 6 Multiplexer */ + register8_t CH7MUX; /* Event Channel 7 Multiplexer */ + register8_t CH0CTRL; /* Channel 0 Control Register */ + register8_t CH1CTRL; /* Channel 1 Control Register */ + register8_t CH2CTRL; /* Channel 2 Control Register */ + register8_t CH3CTRL; /* Channel 3 Control Register */ + register8_t CH4CTRL; /* Channel 4 Control Register */ + register8_t CH5CTRL; /* Channel 5 Control Register */ + register8_t CH6CTRL; /* Channel 6 Control Register */ + register8_t CH7CTRL; /* Channel 7 Control Register */ + register8_t STROBE; /* Event Strobe */ + register8_t DATA; /* Event Data */ +} EVSYS_t; + +/* Quadrature Decoder Index Recognition Mode */ +typedef enum EVSYS_QDIRM_enum +{ + EVSYS_QDIRM_00_gc = (0x00<<5), /* QDPH0 = 0, QDPH90 = 0 */ + EVSYS_QDIRM_01_gc = (0x01<<5), /* QDPH0 = 0, QDPH90 = 1 */ + EVSYS_QDIRM_10_gc = (0x02<<5), /* QDPH0 = 1, QDPH90 = 0 */ + EVSYS_QDIRM_11_gc = (0x03<<5), /* QDPH0 = 1, QDPH90 = 1 */ +} EVSYS_QDIRM_t; + +/* Digital filter coefficient */ +typedef enum EVSYS_DIGFILT_enum +{ + EVSYS_DIGFILT_1SAMPLE_gc = (0x00<<0), /* 1 SAMPLE */ + EVSYS_DIGFILT_2SAMPLES_gc = (0x01<<0), /* 2 SAMPLES */ + EVSYS_DIGFILT_3SAMPLES_gc = (0x02<<0), /* 3 SAMPLES */ + EVSYS_DIGFILT_4SAMPLES_gc = (0x03<<0), /* 4 SAMPLES */ + EVSYS_DIGFILT_5SAMPLES_gc = (0x04<<0), /* 5 SAMPLES */ + EVSYS_DIGFILT_6SAMPLES_gc = (0x05<<0), /* 6 SAMPLES */ + EVSYS_DIGFILT_7SAMPLES_gc = (0x06<<0), /* 7 SAMPLES */ + EVSYS_DIGFILT_8SAMPLES_gc = (0x07<<0), /* 8 SAMPLES */ +} EVSYS_DIGFILT_t; + +/* Event Channel multiplexer input selection */ +typedef enum EVSYS_CHMUX_enum +{ + EVSYS_CHMUX_OFF_gc = (0x00<<0), /* Off */ + EVSYS_CHMUX_RTC_OVF_gc = (0x08<<0), /* RTC Overflow */ + EVSYS_CHMUX_RTC_CMP_gc = (0x09<<0), /* RTC Compare Match */ + EVSYS_CHMUX_ACA_CH0_gc = (0x10<<0), /* Analog Comparator A Channel 0 */ + EVSYS_CHMUX_ACA_CH1_gc = (0x11<<0), /* Analog Comparator A Channel 1 */ + EVSYS_CHMUX_ACA_WIN_gc = (0x12<<0), /* Analog Comparator A Window */ + EVSYS_CHMUX_ACB_CH0_gc = (0x13<<0), /* Analog Comparator B Channel 0 */ + EVSYS_CHMUX_ACB_CH1_gc = (0x14<<0), /* Analog Comparator B Channel 1 */ + EVSYS_CHMUX_ACB_WIN_gc = (0x15<<0), /* Analog Comparator B Window */ + EVSYS_CHMUX_ADCA_CH0_gc = (0x20<<0), /* ADC A Channel 0 */ + EVSYS_CHMUX_ADCA_CH1_gc = (0x21<<0), /* ADC A Channel 1 */ + EVSYS_CHMUX_ADCA_CH2_gc = (0x22<<0), /* ADC A Channel 2 */ + EVSYS_CHMUX_ADCA_CH3_gc = (0x23<<0), /* ADC A Channel 3 */ + EVSYS_CHMUX_ADCB_CH0_gc = (0x24<<0), /* ADC B Channel 0 */ + EVSYS_CHMUX_ADCB_CH1_gc = (0x25<<0), /* ADC B Channel 1 */ + EVSYS_CHMUX_ADCB_CH2_gc = (0x26<<0), /* ADC B Channel 2 */ + EVSYS_CHMUX_ADCB_CH3_gc = (0x27<<0), /* ADC B Channel 3 */ + EVSYS_CHMUX_PORTA_PIN0_gc = (0x50<<0), /* Port A, Pin0 */ + EVSYS_CHMUX_PORTA_PIN1_gc = (0x51<<0), /* Port A, Pin1 */ + EVSYS_CHMUX_PORTA_PIN2_gc = (0x52<<0), /* Port A, Pin2 */ + EVSYS_CHMUX_PORTA_PIN3_gc = (0x53<<0), /* Port A, Pin3 */ + EVSYS_CHMUX_PORTA_PIN4_gc = (0x54<<0), /* Port A, Pin4 */ + EVSYS_CHMUX_PORTA_PIN5_gc = (0x55<<0), /* Port A, Pin5 */ + EVSYS_CHMUX_PORTA_PIN6_gc = (0x56<<0), /* Port A, Pin6 */ + EVSYS_CHMUX_PORTA_PIN7_gc = (0x57<<0), /* Port A, Pin7 */ + EVSYS_CHMUX_PORTB_PIN0_gc = (0x58<<0), /* Port B, Pin0 */ + EVSYS_CHMUX_PORTB_PIN1_gc = (0x59<<0), /* Port B, Pin1 */ + EVSYS_CHMUX_PORTB_PIN2_gc = (0x5A<<0), /* Port B, Pin2 */ + EVSYS_CHMUX_PORTB_PIN3_gc = (0x5B<<0), /* Port B, Pin3 */ + EVSYS_CHMUX_PORTB_PIN4_gc = (0x5C<<0), /* Port B, Pin4 */ + EVSYS_CHMUX_PORTB_PIN5_gc = (0x5D<<0), /* Port B, Pin5 */ + EVSYS_CHMUX_PORTB_PIN6_gc = (0x5E<<0), /* Port B, Pin6 */ + EVSYS_CHMUX_PORTB_PIN7_gc = (0x5F<<0), /* Port B, Pin7 */ + EVSYS_CHMUX_PORTC_PIN0_gc = (0x60<<0), /* Port C, Pin0 */ + EVSYS_CHMUX_PORTC_PIN1_gc = (0x61<<0), /* Port C, Pin1 */ + EVSYS_CHMUX_PORTC_PIN2_gc = (0x62<<0), /* Port C, Pin2 */ + EVSYS_CHMUX_PORTC_PIN3_gc = (0x63<<0), /* Port C, Pin3 */ + EVSYS_CHMUX_PORTC_PIN4_gc = (0x64<<0), /* Port C, Pin4 */ + EVSYS_CHMUX_PORTC_PIN5_gc = (0x65<<0), /* Port C, Pin5 */ + EVSYS_CHMUX_PORTC_PIN6_gc = (0x66<<0), /* Port C, Pin6 */ + EVSYS_CHMUX_PORTC_PIN7_gc = (0x67<<0), /* Port C, Pin7 */ + EVSYS_CHMUX_PORTD_PIN0_gc = (0x68<<0), /* Port D, Pin0 */ + EVSYS_CHMUX_PORTD_PIN1_gc = (0x69<<0), /* Port D, Pin1 */ + EVSYS_CHMUX_PORTD_PIN2_gc = (0x6A<<0), /* Port D, Pin2 */ + EVSYS_CHMUX_PORTD_PIN3_gc = (0x6B<<0), /* Port D, Pin3 */ + EVSYS_CHMUX_PORTD_PIN4_gc = (0x6C<<0), /* Port D, Pin4 */ + EVSYS_CHMUX_PORTD_PIN5_gc = (0x6D<<0), /* Port D, Pin5 */ + EVSYS_CHMUX_PORTD_PIN6_gc = (0x6E<<0), /* Port D, Pin6 */ + EVSYS_CHMUX_PORTD_PIN7_gc = (0x6F<<0), /* Port D, Pin7 */ + EVSYS_CHMUX_PORTE_PIN0_gc = (0x70<<0), /* Port E, Pin0 */ + EVSYS_CHMUX_PORTE_PIN1_gc = (0x71<<0), /* Port E, Pin1 */ + EVSYS_CHMUX_PORTE_PIN2_gc = (0x72<<0), /* Port E, Pin2 */ + EVSYS_CHMUX_PORTE_PIN3_gc = (0x73<<0), /* Port E, Pin3 */ + EVSYS_CHMUX_PORTE_PIN4_gc = (0x74<<0), /* Port E, Pin4 */ + EVSYS_CHMUX_PORTE_PIN5_gc = (0x75<<0), /* Port E, Pin5 */ + EVSYS_CHMUX_PORTE_PIN6_gc = (0x76<<0), /* Port E, Pin6 */ + EVSYS_CHMUX_PORTE_PIN7_gc = (0x77<<0), /* Port E, Pin7 */ + EVSYS_CHMUX_PORTF_PIN0_gc = (0x78<<0), /* Port F, Pin0 */ + EVSYS_CHMUX_PORTF_PIN1_gc = (0x79<<0), /* Port F, Pin1 */ + EVSYS_CHMUX_PORTF_PIN2_gc = (0x7A<<0), /* Port F, Pin2 */ + EVSYS_CHMUX_PORTF_PIN3_gc = (0x7B<<0), /* Port F, Pin3 */ + EVSYS_CHMUX_PORTF_PIN4_gc = (0x7C<<0), /* Port F, Pin4 */ + EVSYS_CHMUX_PORTF_PIN5_gc = (0x7D<<0), /* Port F, Pin5 */ + EVSYS_CHMUX_PORTF_PIN6_gc = (0x7E<<0), /* Port F, Pin6 */ + EVSYS_CHMUX_PORTF_PIN7_gc = (0x7F<<0), /* Port F, Pin7 */ + EVSYS_CHMUX_PRESCALER_1_gc = (0x80<<0), /* Prescaler, divide by 1 */ + EVSYS_CHMUX_PRESCALER_2_gc = (0x81<<0), /* Prescaler, divide by 2 */ + EVSYS_CHMUX_PRESCALER_4_gc = (0x82<<0), /* Prescaler, divide by 4 */ + EVSYS_CHMUX_PRESCALER_8_gc = (0x83<<0), /* Prescaler, divide by 8 */ + EVSYS_CHMUX_PRESCALER_16_gc = (0x84<<0), /* Prescaler, divide by 16 */ + EVSYS_CHMUX_PRESCALER_32_gc = (0x85<<0), /* Prescaler, divide by 32 */ + EVSYS_CHMUX_PRESCALER_64_gc = (0x86<<0), /* Prescaler, divide by 64 */ + EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ + EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ + EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ + EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ + EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ + EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ + EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ + EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ + EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ + EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ + EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ + EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ + EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ + EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ + EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ + EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ + EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ + EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ + EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ + EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ + EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ + EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ + EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ + EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ + EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ + EVSYS_CHMUX_TCD1_OVF_gc = (0xD8<<0), /* Timer/Counter D1 Overflow */ + EVSYS_CHMUX_TCD1_ERR_gc = (0xD9<<0), /* Timer/Counter D1 Error */ + EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), /* Timer/Counter D1 Compare or Capture A */ + EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), /* Timer/Counter D1 Compare or Capture B */ + EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ + EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ + EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ + EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ + EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ + EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ + EVSYS_CHMUX_TCE1_OVF_gc = (0xE8<<0), /* Timer/Counter E1 Overflow */ + EVSYS_CHMUX_TCE1_ERR_gc = (0xE9<<0), /* Timer/Counter E1 Error */ + EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), /* Timer/Counter E1 Compare or Capture A */ + EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), /* Timer/Counter E1 Compare or Capture B */ + EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ + EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ + EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ + EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ + EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ + EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ + EVSYS_CHMUX_TCF1_OVF_gc = (0xF8<<0), /* Timer/Counter F1 Overflow */ + EVSYS_CHMUX_TCF1_ERR_gc = (0xF9<<0), /* Timer/Counter F1 Error */ + EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), /* Timer/Counter F1 Compare or Capture A */ + EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), /* Timer/Counter F1 Compare or Capture B */ +} EVSYS_CHMUX_t; + + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Non-volatile Memory Controller */ +typedef struct NVM_struct +{ + register8_t ADDR0; /* Address Register 0 */ + register8_t ADDR1; /* Address Register 1 */ + register8_t ADDR2; /* Address Register 2 */ + register8_t reserved_0x03; + register8_t DATA0; /* Data Register 0 */ + register8_t DATA1; /* Data Register 1 */ + register8_t DATA2; /* Data Register 2 */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t CMD; /* Command */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t INTCTRL; /* Interrupt Control */ + register8_t reserved_0x0E; + register8_t STATUS; /* Status */ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Lock Bits */ +typedef struct NVM_LOCKBITS_struct +{ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_LOCKBITS_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Fuses */ +typedef struct NVM_FUSES_struct +{ + register8_t FUSEBYTE0; /* JTAG User ID */ + register8_t FUSEBYTE1; /* Watchdog Configuration */ + register8_t FUSEBYTE2; /* Reset Configuration */ + register8_t reserved_0x03; + register8_t FUSEBYTE4; /* Start-up Configuration */ + register8_t FUSEBYTE5; /* EESAVE and BOD Level */ +} NVM_FUSES_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Production Signatures */ +typedef struct NVM_PROD_SIGNATURES_struct +{ + register8_t RCOSC2M; /* RCOSC 2MHz Calibration Value */ + register8_t reserved_0x01; + register8_t RCOSC32K; /* RCOSC 32kHz Calibration Value */ + register8_t RCOSC32M; /* RCOSC 32MHz Calibration Value */ + register8_t reserved_0x04; + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t LOTNUM0; /* Lot Number Byte 0, ASCII */ + register8_t LOTNUM1; /* Lot Number Byte 1, ASCII */ + register8_t LOTNUM2; /* Lot Number Byte 2, ASCII */ + register8_t LOTNUM3; /* Lot Number Byte 3, ASCII */ + register8_t LOTNUM4; /* Lot Number Byte 4, ASCII */ + register8_t LOTNUM5; /* Lot Number Byte 5, ASCII */ + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t WAFNUM; /* Wafer Number */ + register8_t reserved_0x11; + register8_t COORDX0; /* Wafer Coordinate X Byte 0 */ + register8_t COORDX1; /* Wafer Coordinate X Byte 1 */ + register8_t COORDY0; /* Wafer Coordinate Y Byte 0 */ + register8_t COORDY1; /* Wafer Coordinate Y Byte 1 */ + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + register8_t ADCACAL0; /* ADCA Calibration Byte 0 */ + register8_t ADCACAL1; /* ADCA Calibration Byte 1 */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t ADCBCAL0; /* ADCB Calibration Byte 0 */ + register8_t ADCBCAL1; /* ADCB Calibration Byte 1 */ + register8_t reserved_0x26; + register8_t reserved_0x27; + register8_t reserved_0x28; + register8_t reserved_0x29; + register8_t reserved_0x2A; + register8_t reserved_0x2B; + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t TEMPSENSE0; /* Temperature Sensor Calibration Byte 0 */ + register8_t TEMPSENSE1; /* Temperature Sensor Calibration Byte 0 */ + register8_t DACAOFFCAL; /* DACA Calibration Byte 0 */ + register8_t DACACAINCAL; /* DACA Calibration Byte 1 */ + register8_t DACBOFFCAL; /* DACB Calibration Byte 0 */ + register8_t DACBGAINCAL; /* DACB Calibration Byte 1 */ + register8_t reserved_0x34; + register8_t reserved_0x35; + register8_t reserved_0x36; + register8_t reserved_0x37; + register8_t reserved_0x38; + register8_t reserved_0x39; + register8_t reserved_0x3A; + register8_t reserved_0x3B; + register8_t reserved_0x3C; + register8_t reserved_0x3D; + register8_t reserved_0x3E; +} NVM_PROD_SIGNATURES_t; + +/* NVM Command */ +typedef enum NVM_CMD_enum +{ + NVM_CMD_NO_OPERATION_gc = (0x00<<0), /* Noop/Ordinary LPM */ + NVM_CMD_READ_CALIB_ROW_gc = (0x02<<0), /* Read calibration row */ + NVM_CMD_READ_USER_SIG_ROW_gc = (0x01<<0), /* Read user signature row */ + NVM_CMD_READ_EEPROM_gc = (0x06<<0), /* Read EEPROM */ + NVM_CMD_READ_FUSES_gc = (0x07<<0), /* Read fuse byte */ + NVM_CMD_WRITE_LOCK_BITS_gc = (0x08<<0), /* Write lock bits */ + NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ + NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ + NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ + NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ + NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ + NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ + NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ + NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ + NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ + NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ + NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ + NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ + NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ + NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ + NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ + NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ + NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ + NVM_CMD_APP_CRC_gc = (0x38<<0), /* Generate Application section CRC */ + NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Generate Boot Section CRC */ + NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Generate Flash Range CRC */ +} NVM_CMD_t; + +/* SPM ready interrupt level */ +typedef enum NVM_SPMLVL_enum +{ + NVM_SPMLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + NVM_SPMLVL_LO_gc = (0x01<<2), /* Low level */ + NVM_SPMLVL_MED_gc = (0x02<<2), /* Medium level */ + NVM_SPMLVL_HI_gc = (0x03<<2), /* High level */ +} NVM_SPMLVL_t; + +/* EEPROM ready interrupt level */ +typedef enum NVM_EELVL_enum +{ + NVM_EELVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + NVM_EELVL_LO_gc = (0x01<<0), /* Low level */ + NVM_EELVL_MED_gc = (0x02<<0), /* Medium level */ + NVM_EELVL_HI_gc = (0x03<<0), /* High level */ +} NVM_EELVL_t; + +/* Boot lock bits - boot setcion */ +typedef enum NVM_BLBB_enum +{ + NVM_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ + NVM_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ + NVM_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ + NVM_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ +} NVM_BLBB_t; + +/* Boot lock bits - application section */ +typedef enum NVM_BLBA_enum +{ + NVM_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ + NVM_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ + NVM_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ + NVM_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ +} NVM_BLBA_t; + +/* Boot lock bits - application table section */ +typedef enum NVM_BLBAT_enum +{ + NVM_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ + NVM_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ + NVM_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ + NVM_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ +} NVM_BLBAT_t; + +/* Lock bits */ +typedef enum NVM_LB_enum +{ + NVM_LB_NOLOCK_gc = (0x03<<0), /* No locks */ + NVM_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ + NVM_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ +} NVM_LB_t; + +/* Boot Loader Section Reset Vector */ +typedef enum BOOTRST_enum +{ + BOOTRST_BOOTLDR_gc = (0x00<<6), /* Boot Loader Reset */ + BOOTRST_APPLICATION_gc = (0x01<<6), /* Application Reset */ +} BOOTRST_t; + +/* BOD operation */ +typedef enum BOD_enum +{ + BOD_INSAMPLEDMODE_gc = (0x01<<2), /* BOD enabled in sampled mode */ + BOD_CONTINOUSLY_gc = (0x02<<2), /* BOD enabled continuously */ + BOD_DISABLED_gc = (0x03<<2), /* BOD Disabled */ +} BOD_t; + +/* Watchdog (Window) Timeout Period */ +typedef enum WD_enum +{ + WD_8CLK_gc = (0x00<<4), /* 8 cycles (8ms @ 3.3V) */ + WD_16CLK_gc = (0x01<<4), /* 16 cycles (16ms @ 3.3V) */ + WD_32CLK_gc = (0x02<<4), /* 32 cycles (32ms @ 3.3V) */ + WD_64CLK_gc = (0x03<<4), /* 64 cycles (64ms @ 3.3V) */ + WD_128CLK_gc = (0x04<<4), /* 128 cycles (0.125s @ 3.3V) */ + WD_256CLK_gc = (0x05<<4), /* 256 cycles (0.25s @ 3.3V) */ + WD_512CLK_gc = (0x06<<4), /* 512 cycles (0.5s @ 3.3V) */ + WD_1KCLK_gc = (0x07<<4), /* 1K cycles (1s @ 3.3V) */ + WD_2KCLK_gc = (0x08<<4), /* 2K cycles (2s @ 3.3V) */ + WD_4KCLK_gc = (0x09<<4), /* 4K cycles (4s @ 3.3V) */ + WD_8KCLK_gc = (0x0A<<4), /* 8K cycles (8s @ 3.3V) */ +} WD_t; + +/* Start-up Time */ +typedef enum SUT_enum +{ + SUT_0MS_gc = (0x03<<2), /* 0 ms */ + SUT_4MS_gc = (0x01<<2), /* 4 ms */ + SUT_64MS_gc = (0x00<<2), /* 64 ms */ +} SUT_t; + +/* Brown Out Detection Voltage Level */ +typedef enum BODLVL_enum +{ + BODLVL_1V6_gc = (0x07<<0), /* 1.6 V */ + BODLVL_1V8_gc = (0x06<<0), /* 1.8 V */ + BODLVL_2V0_gc = (0x05<<0), /* 2.0 V */ + BODLVL_2V2_gc = (0x04<<0), /* 2.2 V */ + BODLVL_2V4_gc = (0x03<<0), /* 2.4 V */ + BODLVL_2V7_gc = (0x02<<0), /* 2.7 V */ + BODLVL_2V9_gc = (0x01<<0), /* 2.9 V */ + BODLVL_3V2_gc = (0x00<<0), /* 3.2 V */ +} BODLVL_t; + + +/* +-------------------------------------------------------------------------- +AC - Analog Comparator +-------------------------------------------------------------------------- +*/ + +/* Analog Comparator */ +typedef struct AC_struct +{ + register8_t AC0CTRL; /* Comparator 0 Control */ + register8_t AC1CTRL; /* Comparator 1 Control */ + register8_t AC0MUXCTRL; /* Comparator 0 MUX Control */ + register8_t AC1MUXCTRL; /* Comparator 1 MUX Control */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t WINCTRL; /* Window Mode Control */ + register8_t STATUS; /* Status */ +} AC_t; + +/* Interrupt mode */ +typedef enum AC_INTMODE_enum +{ + AC_INTMODE_BOTHEDGES_gc = (0x00<<6), /* Interrupt on both edges */ + AC_INTMODE_FALLING_gc = (0x02<<6), /* Interrupt on falling edge */ + AC_INTMODE_RISING_gc = (0x03<<6), /* Interrupt on rising edge */ +} AC_INTMODE_t; + +/* Interrupt level */ +typedef enum AC_INTLVL_enum +{ + AC_INTLVL_OFF_gc = (0x00<<4), /* Interrupt disabled */ + AC_INTLVL_LO_gc = (0x01<<4), /* Low level */ + AC_INTLVL_MED_gc = (0x02<<4), /* Medium level */ + AC_INTLVL_HI_gc = (0x03<<4), /* High level */ +} AC_INTLVL_t; + +/* Hysteresis mode selection */ +typedef enum AC_HYSMODE_enum +{ + AC_HYSMODE_NO_gc = (0x00<<1), /* No hysteresis */ + AC_HYSMODE_SMALL_gc = (0x01<<1), /* Small hysteresis */ + AC_HYSMODE_LARGE_gc = (0x02<<1), /* Large hysteresis */ +} AC_HYSMODE_t; + +/* Positive input multiplexer selection */ +typedef enum AC_MUXPOS_enum +{ + AC_MUXPOS_PIN0_gc = (0x00<<3), /* Pin 0 */ + AC_MUXPOS_PIN1_gc = (0x01<<3), /* Pin 1 */ + AC_MUXPOS_PIN2_gc = (0x02<<3), /* Pin 2 */ + AC_MUXPOS_PIN3_gc = (0x03<<3), /* Pin 3 */ + AC_MUXPOS_PIN4_gc = (0x04<<3), /* Pin 4 */ + AC_MUXPOS_PIN5_gc = (0x05<<3), /* Pin 5 */ + AC_MUXPOS_PIN6_gc = (0x06<<3), /* Pin 6 */ + AC_MUXPOS_DAC_gc = (0x07<<3), /* DAC output */ +} AC_MUXPOS_t; + +/* Negative input multiplexer selection */ +typedef enum AC_MUXNEG_enum +{ + AC_MUXNEG_PIN0_gc = (0x00<<0), /* Pin 0 */ + AC_MUXNEG_PIN1_gc = (0x01<<0), /* Pin 1 */ + AC_MUXNEG_PIN3_gc = (0x02<<0), /* Pin 3 */ + AC_MUXNEG_PIN5_gc = (0x03<<0), /* Pin 5 */ + AC_MUXNEG_PIN7_gc = (0x04<<0), /* Pin 7 */ + AC_MUXNEG_DAC_gc = (0x05<<0), /* DAC output */ + AC_MUXNEG_BANDGAP_gc = (0x06<<0), /* Bandgap Reference */ + AC_MUXNEG_SCALER_gc = (0x07<<0), /* Internal voltage scaler */ +} AC_MUXNEG_t; + +/* Windows interrupt mode */ +typedef enum AC_WINTMODE_enum +{ + AC_WINTMODE_ABOVE_gc = (0x00<<2), /* Interrupt on above window */ + AC_WINTMODE_INSIDE_gc = (0x01<<2), /* Interrupt on inside window */ + AC_WINTMODE_BELOW_gc = (0x02<<2), /* Interrupt on below window */ + AC_WINTMODE_OUTSIDE_gc = (0x03<<2), /* Interrupt on outside window */ +} AC_WINTMODE_t; + +/* Window interrupt level */ +typedef enum AC_WINTLVL_enum +{ + AC_WINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + AC_WINTLVL_LO_gc = (0x01<<0), /* Low priority */ + AC_WINTLVL_MED_gc = (0x02<<0), /* Medium priority */ + AC_WINTLVL_HI_gc = (0x03<<0), /* High priority */ +} AC_WINTLVL_t; + +/* Window mode state */ +typedef enum AC_WSTATE_enum +{ + AC_WSTATE_ABOVE_gc = (0x00<<6), /* Signal above window */ + AC_WSTATE_INSIDE_gc = (0x01<<6), /* Signal inside window */ + AC_WSTATE_BELOW_gc = (0x02<<6), /* Signal below window */ +} AC_WSTATE_t; + + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* ADC Channel */ +typedef struct ADC_CH_struct +{ + register8_t CTRL; /* Control Register */ + register8_t MUXCTRL; /* MUX Control */ + register8_t INTCTRL; /* Channel Interrupt Control */ + register8_t INTFLAGS; /* Interrupt Flags */ + _WORDREGISTER(RES); /* Channel Result */ + register8_t reserved_0x6; + register8_t reserved_0x7; +} ADC_CH_t; + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* Analog-to-Digital Converter */ +typedef struct ADC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t REFCTRL; /* Reference Control */ + register8_t EVCTRL; /* Event Control */ + register8_t PRESCALER; /* Clock Prescaler */ + register8_t CALCTRL; /* Calibration Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t CALIB; /* Calibration Value */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + _WORDREGISTER(CH0RES); /* Channel 0 Result */ + _WORDREGISTER(CH1RES); /* Channel 1 Result */ + _WORDREGISTER(CH2RES); /* Channel 2 Result */ + _WORDREGISTER(CH3RES); /* Channel 3 Result */ + _WORDREGISTER(CMP); /* Compare Value */ + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + ADC_CH_t CH0; /* ADC Channel 0 */ + ADC_CH_t CH1; /* ADC Channel 1 */ + ADC_CH_t CH2; /* ADC Channel 2 */ + ADC_CH_t CH3; /* ADC Channel 3 */ +} ADC_t; + +/* Positive input multiplexer selection */ +typedef enum ADC_CH_MUXPOS_enum +{ + ADC_CH_MUXPOS_PIN0_gc = (0x00<<3), /* Input pin 0 */ + ADC_CH_MUXPOS_PIN1_gc = (0x01<<3), /* Input pin 1 */ + ADC_CH_MUXPOS_PIN2_gc = (0x02<<3), /* Input pin 2 */ + ADC_CH_MUXPOS_PIN3_gc = (0x03<<3), /* Input pin 3 */ + ADC_CH_MUXPOS_PIN4_gc = (0x04<<3), /* Input pin 4 */ + ADC_CH_MUXPOS_PIN5_gc = (0x05<<3), /* Input pin 5 */ + ADC_CH_MUXPOS_PIN6_gc = (0x06<<3), /* Input pin 6 */ + ADC_CH_MUXPOS_PIN7_gc = (0x07<<3), /* Input pin 7 */ +} ADC_CH_MUXPOS_t; + +/* Internal input multiplexer selections */ +typedef enum ADC_CH_MUXINT_enum +{ + ADC_CH_MUXINT_TEMP_gc = (0x00<<3), /* Temperature Reference */ + ADC_CH_MUXINT_BANDGAP_gc = (0x01<<3), /* Bandgap Reference */ + ADC_CH_MUXINT_SCALEDVCC_gc = (0x02<<3), /* 1/10 scaled VCC */ + ADC_CH_MUXINT_DAC_gc = (0x03<<3), /* DAC output */ +} ADC_CH_MUXINT_t; + +/* Negative input multiplexer selection */ +typedef enum ADC_CH_MUXNEG_enum +{ + ADC_CH_MUXNEG_PIN0_gc = (0x00<<0), /* Input pin 0 */ + ADC_CH_MUXNEG_PIN1_gc = (0x01<<0), /* Input pin 1 */ + ADC_CH_MUXNEG_PIN2_gc = (0x02<<0), /* Input pin 2 */ + ADC_CH_MUXNEG_PIN3_gc = (0x03<<0), /* Input pin 3 */ + ADC_CH_MUXNEG_PIN4_gc = (0x04<<0), /* Input pin 4 */ + ADC_CH_MUXNEG_PIN5_gc = (0x05<<0), /* Input pin 5 */ + ADC_CH_MUXNEG_PIN6_gc = (0x06<<0), /* Input pin 6 */ + ADC_CH_MUXNEG_PIN7_gc = (0x07<<0), /* Input pin 7 */ +} ADC_CH_MUXNEG_t; + +/* Input mode */ +typedef enum ADC_CH_INPUTMODE_enum +{ + ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ + ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ + ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ + ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ +} ADC_CH_INPUTMODE_t; + +/* Gain factor */ +typedef enum ADC_CH_GAIN_enum +{ + ADC_CH_GAIN_1X_gc = (0x00<<2), /* 1x gain */ + ADC_CH_GAIN_2X_gc = (0x01<<2), /* 2x gain */ + ADC_CH_GAIN_4X_gc = (0x02<<2), /* 4x gain */ + ADC_CH_GAIN_8X_gc = (0x03<<2), /* 8x gain */ + ADC_CH_GAIN_16X_gc = (0x04<<2), /* 16x gain */ + ADC_CH_GAIN_32X_gc = (0x05<<2), /* 32x gain */ + ADC_CH_GAIN_64X_gc = (0x06<<2), /* 64x gain */ +} ADC_CH_GAIN_t; + +/* Conversion result resolution */ +typedef enum ADC_RESOLUTION_enum +{ + ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ + ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ + ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ +} ADC_RESOLUTION_t; + +/* Voltage reference selection */ +typedef enum ADC_REFSEL_enum +{ + ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ + ADC_REFSEL_VCC_gc = (0x01<<4), /* Internal VCC / 1.6V */ + ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ + ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ +} ADC_REFSEL_t; + +/* Channel sweep selection */ +typedef enum ADC_SWEEP_enum +{ + ADC_SWEEP_0_gc = (0x00<<6), /* ADC Channel 0 */ + ADC_SWEEP_01_gc = (0x01<<6), /* ADC Channel 0,1 */ + ADC_SWEEP_012_gc = (0x02<<6), /* ADC Channel 0,1,2 */ + ADC_SWEEP_0123_gc = (0x03<<6), /* ADC Channel 0,1,2,3 */ +} ADC_SWEEP_t; + +/* Event channel input selection */ +typedef enum ADC_EVSEL_enum +{ + ADC_EVSEL_0123_gc = (0x00<<3), /* Event Channel 0,1,2,3 */ + ADC_EVSEL_1234_gc = (0x01<<3), /* Event Channel 1,2,3,4 */ + ADC_EVSEL_2345_gc = (0x02<<3), /* Event Channel 2,3,4,5 */ + ADC_EVSEL_3456_gc = (0x03<<3), /* Event Channel 3,4,5,6 */ + ADC_EVSEL_4567_gc = (0x04<<3), /* Event Channel 4,5,6,7 */ + ADC_EVSEL_567_gc = (0x05<<3), /* Event Channel 5,6,7 */ + ADC_EVSEL_67_gc = (0x06<<3), /* Event Channel 6,7 */ + ADC_EVSEL_7_gc = (0x07<<3), /* Event Channel 7 */ +} ADC_EVSEL_t; + +/* Event action selection */ +typedef enum ADC_EVACT_enum +{ + ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ + ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ + ADC_EVACT_CH01_gc = (0x02<<0), /* First two events trigger channel 0,1 */ + ADC_EVACT_CH012_gc = (0x03<<0), /* First three events trigger channel 0,1,2 */ + ADC_EVACT_CH0123_gc = (0x04<<0), /* Events trigger channel 0,1,2,3 */ + ADC_EVACT_SWEEP_gc = (0x05<<0), /* First event triggers sweep */ + ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), /* First event triggers synchronized sweep */ +} ADC_EVACT_t; + +/* Interupt mode */ +typedef enum ADC_CH_INTMODE_enum +{ + ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ + ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ + ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ +} ADC_CH_INTMODE_t; + +/* Interrupt level */ +typedef enum ADC_CH_INTLVL_enum +{ + ADC_CH_INTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + ADC_CH_INTLVL_LO_gc = (0x01<<0), /* Low level */ + ADC_CH_INTLVL_MED_gc = (0x02<<0), /* Medium level */ + ADC_CH_INTLVL_HI_gc = (0x03<<0), /* High level */ +} ADC_CH_INTLVL_t; + +/* DMA request selection */ +typedef enum ADC_DMASEL_enum +{ + ADC_DMASEL_OFF_gc = (0x00<<5), /* Combined DMA request OFF */ + ADC_DMASEL_CH01_gc = (0x01<<5), /* ADC Channel 0 or 1 */ + ADC_DMASEL_CH012_gc = (0x02<<5), /* ADC Channel 0 or 1 or 2 */ + ADC_DMASEL_CH0123_gc = (0x03<<5), /* ADC Channel 0 or 1 or 2 or 3 */ +} ADC_DMASEL_t; + +/* Clock prescaler */ +typedef enum ADC_PRESCALER_enum +{ + ADC_PRESCALER_DIV4_gc = (0x00<<0), /* Divide clock by 4 */ + ADC_PRESCALER_DIV8_gc = (0x01<<0), /* Divide clock by 8 */ + ADC_PRESCALER_DIV16_gc = (0x02<<0), /* Divide clock by 16 */ + ADC_PRESCALER_DIV32_gc = (0x03<<0), /* Divide clock by 32 */ + ADC_PRESCALER_DIV64_gc = (0x04<<0), /* Divide clock by 64 */ + ADC_PRESCALER_DIV128_gc = (0x05<<0), /* Divide clock by 128 */ + ADC_PRESCALER_DIV256_gc = (0x06<<0), /* Divide clock by 256 */ + ADC_PRESCALER_DIV512_gc = (0x07<<0), /* Divide clock by 512 */ +} ADC_PRESCALER_t; + + +/* +-------------------------------------------------------------------------- +DAC - Digital/Analog Converter +-------------------------------------------------------------------------- +*/ + +/* Digital-to-Analog Converter */ +typedef struct DAC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t EVCTRL; /* Event Input Control */ + register8_t TIMCTRL; /* Timing Control */ + register8_t STATUS; /* Status */ + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t GAINCAL; /* Gain Calibration */ + register8_t OFFSETCAL; /* Offset Calibration */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + _WORDREGISTER(CH0DATA); /* Channel 0 Data */ + _WORDREGISTER(CH1DATA); /* Channel 1 Data */ +} DAC_t; + +/* Output channel selection */ +typedef enum DAC_CHSEL_enum +{ + DAC_CHSEL_SINGLE_gc = (0x00<<5), /* Single channel operation (Channel A only) */ + DAC_CHSEL_DUAL_gc = (0x02<<5), /* Dual channel operation (S/H on both channels) */ +} DAC_CHSEL_t; + +/* Reference voltage selection */ +typedef enum DAC_REFSEL_enum +{ + DAC_REFSEL_INT1V_gc = (0x00<<3), /* Internal 1V */ + DAC_REFSEL_AVCC_gc = (0x01<<3), /* Analog supply voltage */ + DAC_REFSEL_AREFA_gc = (0x02<<3), /* External reference on AREF on PORTA */ + DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */ +} DAC_REFSEL_t; + +/* Event channel selection */ +typedef enum DAC_EVSEL_enum +{ + DAC_EVSEL_0_gc = (0x00<<0), /* Event Channel 0 */ + DAC_EVSEL_1_gc = (0x01<<0), /* Event Channel 1 */ + DAC_EVSEL_2_gc = (0x02<<0), /* Event Channel 2 */ + DAC_EVSEL_3_gc = (0x03<<0), /* Event Channel 3 */ + DAC_EVSEL_4_gc = (0x04<<0), /* Event Channel 4 */ + DAC_EVSEL_5_gc = (0x05<<0), /* Event Channel 5 */ + DAC_EVSEL_6_gc = (0x06<<0), /* Event Channel 6 */ + DAC_EVSEL_7_gc = (0x07<<0), /* Event Channel 7 */ +} DAC_EVSEL_t; + +/* Conversion interval */ +typedef enum DAC_CONINTVAL_enum +{ + DAC_CONINTVAL_1CLK_gc = (0x00<<4), /* 1 CLK / 2 CLK in S/H mode */ + DAC_CONINTVAL_2CLK_gc = (0x01<<4), /* 2 CLK / 3 CLK in S/H mode */ + DAC_CONINTVAL_4CLK_gc = (0x02<<4), /* 4 CLK / 6 CLK in S/H mode */ + DAC_CONINTVAL_8CLK_gc = (0x03<<4), /* 8 CLK / 12 CLK in S/H mode */ + DAC_CONINTVAL_16CLK_gc = (0x04<<4), /* 16 CLK / 24 CLK in S/H mode */ + DAC_CONINTVAL_32CLK_gc = (0x05<<4), /* 32 CLK / 48 CLK in S/H mode */ + DAC_CONINTVAL_64CLK_gc = (0x06<<4), /* 64 CLK / 96 CLK in S/H mode */ + DAC_CONINTVAL_128CLK_gc = (0x07<<4), /* 128 CLK / 192 CLK in S/H mode */ +} DAC_CONINTVAL_t; + +/* Refresh rate */ +typedef enum DAC_REFRESH_enum +{ + DAC_REFRESH_16CLK_gc = (0x00<<0), /* 16 CLK */ + DAC_REFRESH_32CLK_gc = (0x01<<0), /* 32 CLK */ + DAC_REFRESH_64CLK_gc = (0x02<<0), /* 64 CLK */ + DAC_REFRESH_128CLK_gc = (0x03<<0), /* 128 CLK */ + DAC_REFRESH_256CLK_gc = (0x04<<0), /* 256 CLK */ + DAC_REFRESH_512CLK_gc = (0x05<<0), /* 512 CLK */ + DAC_REFRESH_1024CLK_gc = (0x06<<0), /* 1024 CLK */ + DAC_REFRESH_2048CLK_gc = (0x07<<0), /* 2048 CLK */ + DAC_REFRESH_4086CLK_gc = (0x08<<0), /* 4096 CLK */ + DAC_REFRESH_8192CLK_gc = (0x09<<0), /* 8192 CLK */ + DAC_REFRESH_16384CLK_gc = (0x0A<<0), /* 16384 CLK */ + DAC_REFRESH_32768CLK_gc = (0x0B<<0), /* 32768 CLK */ + DAC_REFRESH_65536CLK_gc = (0x0C<<0), /* 65536 CLK */ + DAC_REFRESH_OFF_gc = (0x0F<<0), /* Auto refresh OFF */ +} DAC_REFRESH_t; + + +/* +-------------------------------------------------------------------------- +RTC32 - 32-bit Real-Time Counter +-------------------------------------------------------------------------- +*/ + +/* 32-bit Real-Time Clounter */ +typedef struct RTC32_struct +{ + register8_t CTRL; /* Control Register */ + register8_t SYNCCTRL; /* Synchronization Control/Status Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ +} RTC32_t; + +/* Compare Interrupt level */ +typedef enum RTC32_COMPINTLVL_enum +{ + RTC32_COMPINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + RTC32_COMPINTLVL_LO_gc = (0x01<<2), /* Low Level */ + RTC32_COMPINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + RTC32_COMPINTLVL_HI_gc = (0x03<<2), /* High Level */ +} RTC32_COMPINTLVL_t; + +/* Overflow Interrupt level */ +typedef enum RTC32_OVFINTLVL_enum +{ + RTC32_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + RTC32_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + RTC32_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + RTC32_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} RTC32_OVFINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* EBI Chip Select Module */ +typedef struct EBI_CS_struct +{ + register8_t CTRLA; /* Chip Select Control Register A */ + register8_t CTRLB; /* Chip Select Control Register B */ + _WORDREGISTER(BASEADDR); /* Chip Select Base Address */ +} EBI_CS_t; + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* External Bus Interface */ +typedef struct EBI_struct +{ + register8_t CTRL; /* Control */ + register8_t SDRAMCTRLA; /* SDRAM Control Register A */ + register8_t reserved_0x02; + register8_t reserved_0x03; + _WORDREGISTER(REFRESH); /* SDRAM Refresh Period */ + _WORDREGISTER(INITDLY); /* SDRAM Initialization Delay */ + register8_t SDRAMCTRLB; /* SDRAM Control Register B */ + register8_t SDRAMCTRLC; /* SDRAM Control Register C */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + EBI_CS_t CS0; /* Chip Select 0 */ + EBI_CS_t CS1; /* Chip Select 1 */ + EBI_CS_t CS2; /* Chip Select 2 */ + EBI_CS_t CS3; /* Chip Select 3 */ +} EBI_t; + +/* Chip Select adress space */ +typedef enum EBI_CS_ASPACE_enum +{ + EBI_CS_ASPACE_256B_gc = (0x00<<2), /* 256 bytes */ + EBI_CS_ASPACE_512B_gc = (0x01<<2), /* 512 bytes */ + EBI_CS_ASPACE_1KB_gc = (0x02<<2), /* 1K bytes */ + EBI_CS_ASPACE_2KB_gc = (0x03<<2), /* 2K bytes */ + EBI_CS_ASPACE_4KB_gc = (0x04<<2), /* 4K bytes */ + EBI_CS_ASPACE_8KB_gc = (0x05<<2), /* 8K bytes */ + EBI_CS_ASPACE_16KB_gc = (0x06<<2), /* 16K bytes */ + EBI_CS_ASPACE_32KB_gc = (0x07<<2), /* 32K bytes */ + EBI_CS_ASPACE_64KB_gc = (0x08<<2), /* 64K bytes */ + EBI_CS_ASPACE_128KB_gc = (0x09<<2), /* 128K bytes */ + EBI_CS_ASPACE_256KB_gc = (0x0A<<2), /* 256K bytes */ + EBI_CS_ASPACE_512KB_gc = (0x0B<<2), /* 512K bytes */ + EBI_CS_ASPACE_1MB_gc = (0x0C<<2), /* 1M bytes */ + EBI_CS_ASPACE_2MB_gc = (0x0D<<2), /* 2M bytes */ + EBI_CS_ASPACE_4MB_gc = (0x0E<<2), /* 4M bytes */ + EBI_CS_ASPACE_8MB_gc = (0x0F<<2), /* 8M bytes */ + EBI_CS_ASPACE_16M_gc = (0x10<<2), /* 16M bytes */ +} EBI_CS_ASPACE_t; + +/* */ +typedef enum EBI_CS_SRWS_enum +{ + EBI_CS_SRWS_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_CS_SRWS_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_CS_SRWS_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_CS_SRWS_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_CS_SRWS_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_CS_SRWS_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_CS_SRWS_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_CS_SRWS_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_CS_SRWS_t; + +/* Chip Select address mode */ +typedef enum EBI_CS_MODE_enum +{ + EBI_CS_MODE_DISABLED_gc = (0x00<<0), /* Chip Select Disabled */ + EBI_CS_MODE_SRAM_gc = (0x01<<0), /* Chip Select in SRAM mode */ + EBI_CS_MODE_LPC_gc = (0x02<<0), /* Chip Select in SRAM LPC mode */ + EBI_CS_MODE_SDRAM_gc = (0x03<<0), /* Chip Select in SDRAM mode */ +} EBI_CS_MODE_t; + +/* Chip Select SDRAM mode */ +typedef enum EBI_CS_SDMODE_enum +{ + EBI_CS_SDMODE_NORMAL_gc = (0x00<<0), /* Normal mode */ + EBI_CS_SDMODE_LOAD_gc = (0x01<<0), /* Load Mode Register command mode */ +} EBI_CS_SDMODE_t; + +/* */ +typedef enum EBI_SDDATAW_enum +{ + EBI_SDDATAW_4BIT_gc = (0x00<<6), /* 4-bit data bus */ + EBI_SDDATAW_8BIT_gc = (0x01<<6), /* 8-bit data bus */ +} EBI_SDDATAW_t; + +/* */ +typedef enum EBI_LPCMODE_enum +{ + EBI_LPCMODE_ALE1_gc = (0x00<<4), /* Data muxed with addr byte 0 */ + EBI_LPCMODE_ALE12_gc = (0x02<<4), /* Data muxed with addr byte 0 and 1 */ +} EBI_LPCMODE_t; + +/* */ +typedef enum EBI_SRMODE_enum +{ + EBI_SRMODE_ALE1_gc = (0x00<<2), /* Addr byte 0 muxed with 1 */ + EBI_SRMODE_ALE2_gc = (0x01<<2), /* Addr byte 0 muxed with 2 */ + EBI_SRMODE_ALE12_gc = (0x02<<2), /* Addr byte 0 muxed with 1 and 2 */ + EBI_SRMODE_NOALE_gc = (0x03<<2), /* No addr muxing */ +} EBI_SRMODE_t; + +/* */ +typedef enum EBI_IFMODE_enum +{ + EBI_IFMODE_DISABLED_gc = (0x00<<0), /* EBI Disabled */ + EBI_IFMODE_3PORT_gc = (0x01<<0), /* 3-port mode */ + EBI_IFMODE_4PORT_gc = (0x02<<0), /* 4-port mode */ + EBI_IFMODE_2PORT_gc = (0x03<<0), /* 2-port mode */ +} EBI_IFMODE_t; + +/* */ +typedef enum EBI_SDCOL_enum +{ + EBI_SDCOL_8BIT_gc = (0x00<<0), /* 8 column bits */ + EBI_SDCOL_9BIT_gc = (0x01<<0), /* 9 column bits */ + EBI_SDCOL_10BIT_gc = (0x02<<0), /* 10 column bits */ + EBI_SDCOL_11BIT_gc = (0x03<<0), /* 11 column bits */ +} EBI_SDCOL_t; + +/* */ +typedef enum EBI_MRDLY_enum +{ + EBI_MRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_MRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_MRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_MRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_MRDLY_t; + +/* */ +typedef enum EBI_ROWCYCDLY_enum +{ + EBI_ROWCYCDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ROWCYCDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ROWCYCDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ROWCYCDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ROWCYCDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ROWCYCDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ROWCYCDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ROWCYCDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ROWCYCDLY_t; + +/* */ +typedef enum EBI_RPDLY_enum +{ + EBI_RPDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_RPDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_RPDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_RPDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_RPDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_RPDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_RPDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_RPDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_RPDLY_t; + +/* */ +typedef enum EBI_WRDLY_enum +{ + EBI_WRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_WRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_WRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_WRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_WRDLY_t; + +/* */ +typedef enum EBI_ESRDLY_enum +{ + EBI_ESRDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ESRDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ESRDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ESRDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ESRDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ESRDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ESRDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ESRDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ESRDLY_t; + +/* */ +typedef enum EBI_ROWCOLDLY_enum +{ + EBI_ROWCOLDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_ROWCOLDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_ROWCOLDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_ROWCOLDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_ROWCOLDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_ROWCOLDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_ROWCOLDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_ROWCOLDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_ROWCOLDLY_t; + + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_MASTER_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t STATUS; /* Status Register */ + register8_t BAUD; /* Baurd Rate Control Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_MASTER_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_SLAVE_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t STATUS; /* Status Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_SLAVE_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* Two-Wire Interface */ +typedef struct TWI_struct +{ + register8_t CTRL; /* TWI Common Control Register */ + TWI_MASTER_t MASTER; /* TWI master module */ + TWI_SLAVE_t SLAVE; /* TWI slave module */ +} TWI_t; + +/* Master Interrupt Level */ +typedef enum TWI_MASTER_INTLVL_enum +{ + TWI_MASTER_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_MASTER_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_MASTER_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_MASTER_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_MASTER_INTLVL_t; + +/* Inactive Timeout */ +typedef enum TWI_MASTER_TIMEOUT_enum +{ + TWI_MASTER_TIMEOUT_DISABLED_gc = (0x00<<2), /* Bus Timeout Disabled */ + TWI_MASTER_TIMEOUT_50US_gc = (0x01<<2), /* 50 Microseconds */ + TWI_MASTER_TIMEOUT_100US_gc = (0x02<<2), /* 100 Microseconds */ + TWI_MASTER_TIMEOUT_200US_gc = (0x03<<2), /* 200 Microseconds */ +} TWI_MASTER_TIMEOUT_t; + +/* Master Command */ +typedef enum TWI_MASTER_CMD_enum +{ + TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ + TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ + TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ +} TWI_MASTER_CMD_t; + +/* Master Bus State */ +typedef enum TWI_MASTER_BUSSTATE_enum +{ + TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ + TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ + TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ + TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ +} TWI_MASTER_BUSSTATE_t; + +/* Slave Interrupt Level */ +typedef enum TWI_SLAVE_INTLVL_enum +{ + TWI_SLAVE_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_SLAVE_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_SLAVE_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_SLAVE_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_SLAVE_INTLVL_t; + +/* Slave Command */ +typedef enum TWI_SLAVE_CMD_enum +{ + TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ + TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ +} TWI_SLAVE_CMD_t; + + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O port Configuration */ +typedef struct PORTCFG_struct +{ + register8_t MPCMASK; /* Multi-pin Configuration Mask */ + register8_t reserved_0x01; + register8_t VPCTRLA; /* Virtual Port Control Register A */ + register8_t VPCTRLB; /* Virtual Port Control Register B */ + register8_t CLKEVOUT; /* Clock and Event Out Register */ +} PORTCFG_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* Virtual Port */ +typedef struct VPORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t OUT; /* I/O Port Output */ + register8_t IN; /* I/O Port Input */ + register8_t INTFLAGS; /* Interrupt Flag Register */ +} VPORT_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O Ports */ +typedef struct PORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t DIRSET; /* I/O Port Data Direction Set */ + register8_t DIRCLR; /* I/O Port Data Direction Clear */ + register8_t DIRTGL; /* I/O Port Data Direction Toggle */ + register8_t OUT; /* I/O Port Output */ + register8_t OUTSET; /* I/O Port Output Set */ + register8_t OUTCLR; /* I/O Port Output Clear */ + register8_t OUTTGL; /* I/O Port Output Toggle */ + register8_t IN; /* I/O port Input */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INT0MASK; /* Port Interrupt 0 Mask */ + register8_t INT1MASK; /* Port Interrupt 1 Mask */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t PIN0CTRL; /* Pin 0 Control Register */ + register8_t PIN1CTRL; /* Pin 1 Control Register */ + register8_t PIN2CTRL; /* Pin 2 Control Register */ + register8_t PIN3CTRL; /* Pin 3 Control Register */ + register8_t PIN4CTRL; /* Pin 4 Control Register */ + register8_t PIN5CTRL; /* Pin 5 Control Register */ + register8_t PIN6CTRL; /* Pin 6 Control Register */ + register8_t PIN7CTRL; /* Pin 7 Control Register */ +} PORT_t; + +/* Virtual Port 0 Mapping */ +typedef enum PORTCFG_VP0MAP_enum +{ + PORTCFG_VP0MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP0MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP0MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP0MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP0MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP0MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP0MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP0MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP0MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP0MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP0MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP0MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP0MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP0MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP0MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP0MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP0MAP_t; + +/* Virtual Port 1 Mapping */ +typedef enum PORTCFG_VP1MAP_enum +{ + PORTCFG_VP1MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP1MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP1MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP1MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP1MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP1MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP1MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP1MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP1MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP1MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP1MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP1MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP1MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP1MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP1MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP1MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP1MAP_t; + +/* Virtual Port 2 Mapping */ +typedef enum PORTCFG_VP2MAP_enum +{ + PORTCFG_VP2MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP2MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP2MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP2MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP2MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP2MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP2MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP2MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP2MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP2MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP2MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP2MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP2MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP2MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP2MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP2MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP2MAP_t; + +/* Virtual Port 3 Mapping */ +typedef enum PORTCFG_VP3MAP_enum +{ + PORTCFG_VP3MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP3MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP3MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP3MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP3MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP3MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP3MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP3MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP3MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP3MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP3MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP3MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP3MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP3MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP3MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP3MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP3MAP_t; + +/* Clock Output Port */ +typedef enum PORTCFG_CLKOUT_enum +{ + PORTCFG_CLKOUT_OFF_gc = (0x00<<0), /* Clock Output Disabled */ + PORTCFG_CLKOUT_PC7_gc = (0x01<<0), /* Clock Output on Port C pin 7 */ + PORTCFG_CLKOUT_PD7_gc = (0x02<<0), /* Clock Output on Port D pin 7 */ + PORTCFG_CLKOUT_PE7_gc = (0x03<<0), /* Clock Output on Port E pin 7 */ +} PORTCFG_CLKOUT_t; + +/* Event Output Port */ +typedef enum PORTCFG_EVOUT_enum +{ + PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ + PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ + PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ + PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ +} PORTCFG_EVOUT_t; + +/* Port Interrupt 0 Level */ +typedef enum PORT_INT0LVL_enum +{ + PORT_INT0LVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + PORT_INT0LVL_LO_gc = (0x01<<0), /* Low Level */ + PORT_INT0LVL_MED_gc = (0x02<<0), /* Medium Level */ + PORT_INT0LVL_HI_gc = (0x03<<0), /* High Level */ +} PORT_INT0LVL_t; + +/* Port Interrupt 1 Level */ +typedef enum PORT_INT1LVL_enum +{ + PORT_INT1LVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + PORT_INT1LVL_LO_gc = (0x01<<2), /* Low Level */ + PORT_INT1LVL_MED_gc = (0x02<<2), /* Medium Level */ + PORT_INT1LVL_HI_gc = (0x03<<2), /* High Level */ +} PORT_INT1LVL_t; + +/* Output/Pull Configuration */ +typedef enum PORT_OPC_enum +{ + PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ + PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ + PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ + PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ + PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ + PORT_OPC_WIREDAND_gc = (0x05<<3), /* Wired AND */ + PORT_OPC_WIREDORPULL_gc = (0x06<<3), /* Wired OR w/ Pull-down */ + PORT_OPC_WIREDANDPULL_gc = (0x07<<3), /* Wired AND w/ Pull-up */ +} PORT_OPC_t; + +/* Input/Sense Configuration */ +typedef enum PORT_ISC_enum +{ + PORT_ISC_BOTHEDGES_gc = (0x00<<0), /* Sense Both Edges */ + PORT_ISC_RISING_gc = (0x01<<0), /* Sense Rising Edge */ + PORT_ISC_FALLING_gc = (0x02<<0), /* Sense Falling Edge */ + PORT_ISC_LEVEL_gc = (0x03<<0), /* Sense Level (Transparent For Events) */ + PORT_ISC_INPUT_DISABLE_gc = (0x07<<0), /* Disable Digital Input Buffer */ +} PORT_ISC_t; + + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 0 */ +typedef struct TC0_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + _WORDREGISTER(CCC); /* Compare or Capture C */ + _WORDREGISTER(CCD); /* Compare or Capture D */ + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ + _WORDREGISTER(CCCBUF); /* Compare Or Capture C Buffer */ + _WORDREGISTER(CCDBUF); /* Compare Or Capture D Buffer */ +} TC0_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 1 */ +typedef struct TC1_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t reserved_0x2E; + register8_t reserved_0x2F; + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ +} TC1_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* Advanced Waveform Extension */ +typedef struct AWEX_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t FDEVMASK; /* Fault Detection Event Mask */ + register8_t FDCTRL; /* Fault Detection Control Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x05; + register8_t DTBOTH; /* Dead Time Both Sides */ + register8_t DTBOTHBUF; /* Dead Time Both Sides Buffer */ + register8_t DTLS; /* Dead Time Low Side */ + register8_t DTHS; /* Dead Time High Side */ + register8_t DTLSBUF; /* Dead Time Low Side Buffer */ + register8_t DTHSBUF; /* Dead Time High Side Buffer */ + register8_t OUTOVEN; /* Output Override Enable */ +} AWEX_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* High-Resolution Extension */ +typedef struct HIRES_struct +{ + register8_t CTRL; /* Control Register */ +} HIRES_t; + +/* Clock Selection */ +typedef enum TC_CLKSEL_enum +{ + TC_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ + TC_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ + TC_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ + TC_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ + TC_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ + TC_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ + TC_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ + TC_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ + TC_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_CLKSEL_EVCH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_CLKSEL_EVCH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_CLKSEL_EVCH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_CLKSEL_EVCH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_CLKSEL_t; + +/* Waveform Generation Mode */ +typedef enum TC_WGMODE_enum +{ + TC_WGMODE_NORMAL_gc = (0x00<<0), /* Normal Mode */ + TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ + TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ + TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ + TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on TOP and BOTTOM */ + TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ +} TC_WGMODE_t; + +/* Event Action */ +typedef enum TC_EVACT_enum +{ + TC_EVACT_OFF_gc = (0x00<<5), /* No Event Action */ + TC_EVACT_CAPT_gc = (0x01<<5), /* Input Capture */ + TC_EVACT_UPDOWN_gc = (0x02<<5), /* Externally Controlled Up/Down Count */ + TC_EVACT_QDEC_gc = (0x03<<5), /* Quadrature Decode */ + TC_EVACT_RESTART_gc = (0x04<<5), /* Restart */ + TC_EVACT_FRW_gc = (0x05<<5), /* Frequency Capture */ + TC_EVACT_PW_gc = (0x06<<5), /* Pulse-width Capture */ +} TC_EVACT_t; + +/* Event Selection */ +typedef enum TC_EVSEL_enum +{ + TC_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + TC_EVSEL_CH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_EVSEL_CH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_EVSEL_CH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_EVSEL_CH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_EVSEL_CH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_EVSEL_CH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_EVSEL_CH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_EVSEL_CH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_EVSEL_t; + +/* Error Interrupt Level */ +typedef enum TC_ERRINTLVL_enum +{ + TC_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_ERRINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_ERRINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_ERRINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_ERRINTLVL_t; + +/* Overflow Interrupt Level */ +typedef enum TC_OVFINTLVL_enum +{ + TC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_OVFINTLVL_t; + +/* Compare or Capture D Interrupt Level */ +typedef enum TC_CCDINTLVL_enum +{ + TC_CCDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TC_CCDINTLVL_LO_gc = (0x01<<6), /* Low Level */ + TC_CCDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TC_CCDINTLVL_HI_gc = (0x03<<6), /* High Level */ +} TC_CCDINTLVL_t; + +/* Compare or Capture C Interrupt Level */ +typedef enum TC_CCCINTLVL_enum +{ + TC_CCCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + TC_CCCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + TC_CCCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + TC_CCCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} TC_CCCINTLVL_t; + +/* Compare or Capture B Interrupt Level */ +typedef enum TC_CCBINTLVL_enum +{ + TC_CCBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_CCBINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_CCBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_CCBINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_CCBINTLVL_t; + +/* Compare or Capture A Interrupt Level */ +typedef enum TC_CCAINTLVL_enum +{ + TC_CCAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_CCAINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_CCAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_CCAINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_CCAINTLVL_t; + +/* Timer/Counter Command */ +typedef enum TC_CMD_enum +{ + TC_CMD_NONE_gc = (0x00<<2), /* No Command */ + TC_CMD_UPDATE_gc = (0x01<<2), /* Force Update */ + TC_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ + TC_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ +} TC_CMD_t; + +/* Fault Detect Action */ +typedef enum AWEX_FDACT_enum +{ + AWEX_FDACT_NONE_gc = (0x00<<0), /* No Fault Protection */ + AWEX_FDACT_CLEAROE_gc = (0x01<<0), /* Clear Output Enable Bits */ + AWEX_FDACT_CLEARDIR_gc = (0x03<<0), /* Clear I/O Port Direction Bits */ +} AWEX_FDACT_t; + +/* High Resolution Enable */ +typedef enum HIRES_HREN_enum +{ + HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ + HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ + HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ + HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ +} HIRES_HREN_t; + + +/* +-------------------------------------------------------------------------- +USART - Universal Asynchronous Receiver-Transmitter +-------------------------------------------------------------------------- +*/ + +/* Universal Synchronous/Asynchronous Receiver/Transmitter */ +typedef struct USART_struct +{ + register8_t DATA; /* Data Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x02; + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t BAUDCTRLA; /* Baud Rate Control Register A */ + register8_t BAUDCTRLB; /* Baud Rate Control Register B */ +} USART_t; + +/* Receive Complete Interrupt level */ +typedef enum USART_RXCINTLVL_enum +{ + USART_RXCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + USART_RXCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + USART_RXCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + USART_RXCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} USART_RXCINTLVL_t; + +/* Transmit Complete Interrupt level */ +typedef enum USART_TXCINTLVL_enum +{ + USART_TXCINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + USART_TXCINTLVL_LO_gc = (0x01<<2), /* Low Level */ + USART_TXCINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + USART_TXCINTLVL_HI_gc = (0x03<<2), /* High Level */ +} USART_TXCINTLVL_t; + +/* Data Register Empty Interrupt level */ +typedef enum USART_DREINTLVL_enum +{ + USART_DREINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + USART_DREINTLVL_LO_gc = (0x01<<0), /* Low Level */ + USART_DREINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + USART_DREINTLVL_HI_gc = (0x03<<0), /* High Level */ +} USART_DREINTLVL_t; + +/* Character Size */ +typedef enum USART_CHSIZE_enum +{ + USART_CHSIZE_5BIT_gc = (0x00<<0), /* Character size: 5 bit */ + USART_CHSIZE_6BIT_gc = (0x01<<0), /* Character size: 6 bit */ + USART_CHSIZE_7BIT_gc = (0x02<<0), /* Character size: 7 bit */ + USART_CHSIZE_8BIT_gc = (0x03<<0), /* Character size: 8 bit */ + USART_CHSIZE_9BIT_gc = (0x07<<0), /* Character size: 9 bit */ +} USART_CHSIZE_t; + +/* Communication Mode */ +typedef enum USART_CMODE_enum +{ + USART_CMODE_ASYNCHRONOUS_gc = (0x00<<6), /* Asynchronous Mode */ + USART_CMODE_SYNCHRONOUS_gc = (0x01<<6), /* Synchronous Mode */ + USART_CMODE_IRDA_gc = (0x02<<6), /* IrDA Mode */ + USART_CMODE_MSPI_gc = (0x03<<6), /* Master SPI Mode */ +} USART_CMODE_t; + +/* Parity Mode */ +typedef enum USART_PMODE_enum +{ + USART_PMODE_DISABLED_gc = (0x00<<4), /* No Parity */ + USART_PMODE_EVEN_gc = (0x02<<4), /* Even Parity */ + USART_PMODE_ODD_gc = (0x03<<4), /* Odd Parity */ +} USART_PMODE_t; + + +/* +-------------------------------------------------------------------------- +SPI - Serial Peripheral Interface +-------------------------------------------------------------------------- +*/ + +/* Serial Peripheral Interface */ +typedef struct SPI_struct +{ + register8_t CTRL; /* Control Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t STATUS; /* Status Register */ + register8_t DATA; /* Data Register */ +} SPI_t; + +/* SPI Mode */ +typedef enum SPI_MODE_enum +{ + SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */ + SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */ + SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */ + SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */ +} SPI_MODE_t; + +/* Prescaler setting */ +typedef enum SPI_PRESCALER_enum +{ + SPI_PRESCALER_DIV4_gc = (0x00<<0), /* System Clock / 4 */ + SPI_PRESCALER_DIV16_gc = (0x01<<0), /* System Clock / 16 */ + SPI_PRESCALER_DIV64_gc = (0x02<<0), /* System Clock / 64 */ + SPI_PRESCALER_DIV128_gc = (0x03<<0), /* System Clock / 128 */ +} SPI_PRESCALER_t; + +/* Interrupt level */ +typedef enum SPI_INTLVL_enum +{ + SPI_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + SPI_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + SPI_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + SPI_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} SPI_INTLVL_t; + + +/* +-------------------------------------------------------------------------- +IRCOM - IR Communication Module +-------------------------------------------------------------------------- +*/ + +/* IR Communication Module */ +typedef struct IRCOM_struct +{ + register8_t CTRL; /* Control Register */ + register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ + register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ +} IRCOM_t; + +/* Event channel selection */ +typedef enum IRDA_EVSEL_enum +{ + IRDA_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + IRDA_EVSEL_0_gc = (0x08<<0), /* Event Channel 0 */ + IRDA_EVSEL_1_gc = (0x09<<0), /* Event Channel 1 */ + IRDA_EVSEL_2_gc = (0x0A<<0), /* Event Channel 2 */ + IRDA_EVSEL_3_gc = (0x0B<<0), /* Event Channel 3 */ + IRDA_EVSEL_4_gc = (0x0C<<0), /* Event Channel 4 */ + IRDA_EVSEL_5_gc = (0x0D<<0), /* Event Channel 5 */ + IRDA_EVSEL_6_gc = (0x0E<<0), /* Event Channel 6 */ + IRDA_EVSEL_7_gc = (0x0F<<0), /* Event Channel 7 */ +} IRDA_EVSEL_t; + + +/* +-------------------------------------------------------------------------- +AES - AES Module +-------------------------------------------------------------------------- +*/ + +/* AES Module */ +typedef struct AES_struct +{ + register8_t CTRL; /* AES Control Register */ + register8_t STATUS; /* AES Status Register */ + register8_t STATE; /* AES State Register */ + register8_t KEY; /* AES Key Register */ + register8_t INTCTRL; /* AES Interrupt Control Register */ +} AES_t; + +/* Interrupt level */ +typedef enum AES_INTLVL_enum +{ + AES_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + AES_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + AES_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + AES_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} AES_INTLVL_t; + + +/* +-------------------------------------------------------------------------- +VBAT - VBAT Battery Backup Module +-------------------------------------------------------------------------- +*/ + +/* VBAT Battery Backup Module */ +typedef struct VBAT_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t BACKUP0; /* Battery Bacup Register 0 */ + register8_t BACKUP1; /* Battery Backup Register 1 */ +} VBAT_t; + + + +/* +========================================================================== +IO Module Instances. Mapped to memory. +========================================================================== +*/ + +#define GPIO (*(GPIO_t *) 0x0000) /* General Purpose IO Registers */ +#define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port 0 */ +#define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port 1 */ +#define VPORT2 (*(VPORT_t *) 0x0018) /* Virtual Port 2 */ +#define VPORT3 (*(VPORT_t *) 0x001C) /* Virtual Port 3 */ +#define OCD (*(OCD_t *) 0x002E) /* On-Chip Debug System */ +#define CPU (*(CPU_t *) 0x0030) /* CPU Registers */ +#define CLK (*(CLK_t *) 0x0040) /* Clock System */ +#define SLEEP (*(SLEEP_t *) 0x0048) /* Sleep Controller */ +#define OSC (*(OSC_t *) 0x0050) /* Oscillator Control */ +#define DFLLRC32M (*(DFLL_t *) 0x0060) /* DFLL for 32MHz RC Oscillator */ +#define DFLLRC2M (*(DFLL_t *) 0x0068) /* DFLL for 2MHz RC Oscillator */ +#define PR (*(PR_t *) 0x0070) /* Power Reduction */ +#define RST (*(RST_t *) 0x0078) /* Reset Controller */ +#define WDT (*(WDT_t *) 0x0080) /* Watch-Dog Timer */ +#define MCU (*(MCU_t *) 0x0090) /* MCU Control */ +#define PMIC (*(PMIC_t *) 0x00A0) /* Programmable Interrupt Controller */ +#define PORTCFG (*(PORTCFG_t *) 0x00B0) /* Port Configuration */ +#define AES (*(AES_t *) 0x00C0) /* AES Crypto Module */ +#define VBAT (*(VBAT_t *) 0x00F0) /* VBAT Battery Backup Module */ +#define DMA (*(DMA_t *) 0x0100) /* DMA Controller */ +#define EVSYS (*(EVSYS_t *) 0x0180) /* Event System */ +#define NVM (*(NVM_t *) 0x01C0) /* Non Volatile Memory Controller */ +#define ADCA (*(ADC_t *) 0x0200) /* Analog to Digital Converter A */ +#define ADCB (*(ADC_t *) 0x0240) /* Analog to Digital Converter B */ +#define DACB (*(DAC_t *) 0x0320) /* Digital to Analog Converter B */ +#define ACA (*(AC_t *) 0x0380) /* Analog Comparator A */ +#define ACB (*(AC_t *) 0x0390) /* Analog Comparator B */ +#define RTC32 (*(RTC32_t *) 0x0420) /* 32-bit Real-Time Counter */ +#define TWIC (*(TWI_t *) 0x0480) /* Two-Wire Interface C */ +#define TWIE (*(TWI_t *) 0x04A0) /* Two-Wire Interface E */ +#define PORTA (*(PORT_t *) 0x0600) /* Port A */ +#define PORTB (*(PORT_t *) 0x0620) /* Port B */ +#define PORTC (*(PORT_t *) 0x0640) /* Port C */ +#define PORTD (*(PORT_t *) 0x0660) /* Port D */ +#define PORTE (*(PORT_t *) 0x0680) /* Port E */ +#define PORTF (*(PORT_t *) 0x06A0) /* Port F */ +#define PORTR (*(PORT_t *) 0x07E0) /* Port R */ +#define TCC0 (*(TC0_t *) 0x0800) /* Timer/Counter C0 */ +#define TCC1 (*(TC1_t *) 0x0840) /* Timer/Counter C1 */ +#define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension C */ +#define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension C */ +#define USARTC0 (*(USART_t *) 0x08A0) /* Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC1 (*(USART_t *) 0x08B0) /* Universal Asynchronous Receiver-Transmitter C1 */ +#define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface C */ +#define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ +#define TCD0 (*(TC0_t *) 0x0900) /* Timer/Counter D0 */ +#define TCD1 (*(TC1_t *) 0x0940) /* Timer/Counter D1 */ +#define HIRESD (*(HIRES_t *) 0x0990) /* High-Resolution Extension D */ +#define USARTD0 (*(USART_t *) 0x09A0) /* Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD1 (*(USART_t *) 0x09B0) /* Universal Asynchronous Receiver-Transmitter D1 */ +#define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface D */ +#define TCE0 (*(TC0_t *) 0x0A00) /* Timer/Counter E0 */ +#define TCE1 (*(TC1_t *) 0x0A40) /* Timer/Counter E1 */ +#define AWEXE (*(AWEX_t *) 0x0A80) /* Advanced Waveform Extension E */ +#define HIRESE (*(HIRES_t *) 0x0A90) /* High-Resolution Extension E */ +#define USARTE0 (*(USART_t *) 0x0AA0) /* Universal Asynchronous Receiver-Transmitter E0 */ +#define TCF0 (*(TC0_t *) 0x0B00) /* Timer/Counter F0 */ +#define HIRESF (*(HIRES_t *) 0x0B90) /* High-Resolution Extension F */ +#define USARTF0 (*(USART_t *) 0x0BA0) /* Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF1 (*(USART_t *) 0x0BB0) /* Universal Asynchronous Receiver-Transmitter F1 */ +#define SPIF (*(SPI_t *) 0x0BC0) /* Serial Peripheral Interface F */ + + +#endif /* !defined (__ASSEMBLER__) */ + + +/* ========== Flattened fully qualified IO register names ========== */ + +/* GPIO - General Purpose IO Registers */ +#define GPIO_GPIO0 _SFR_MEM8(0x0000) +#define GPIO_GPIO1 _SFR_MEM8(0x0001) +#define GPIO_GPIO2 _SFR_MEM8(0x0002) +#define GPIO_GPIO3 _SFR_MEM8(0x0003) +#define GPIO_GPIO4 _SFR_MEM8(0x0004) +#define GPIO_GPIO5 _SFR_MEM8(0x0005) +#define GPIO_GPIO6 _SFR_MEM8(0x0006) +#define GPIO_GPIO7 _SFR_MEM8(0x0007) +#define GPIO_GPIO8 _SFR_MEM8(0x0008) +#define GPIO_GPIO9 _SFR_MEM8(0x0009) +#define GPIO_GPIOA _SFR_MEM8(0x000A) +#define GPIO_GPIOB _SFR_MEM8(0x000B) +#define GPIO_GPIOC _SFR_MEM8(0x000C) +#define GPIO_GPIOD _SFR_MEM8(0x000D) +#define GPIO_GPIOE _SFR_MEM8(0x000E) +#define GPIO_GPIOF _SFR_MEM8(0x000F) + +/* VPORT0 - Virtual Port 0 */ +#define VPORT0_DIR _SFR_MEM8(0x0010) +#define VPORT0_OUT _SFR_MEM8(0x0011) +#define VPORT0_IN _SFR_MEM8(0x0012) +#define VPORT0_INTFLAGS _SFR_MEM8(0x0013) + +/* VPORT1 - Virtual Port 1 */ +#define VPORT1_DIR _SFR_MEM8(0x0014) +#define VPORT1_OUT _SFR_MEM8(0x0015) +#define VPORT1_IN _SFR_MEM8(0x0016) +#define VPORT1_INTFLAGS _SFR_MEM8(0x0017) + +/* VPORT2 - Virtual Port 2 */ +#define VPORT2_DIR _SFR_MEM8(0x0018) +#define VPORT2_OUT _SFR_MEM8(0x0019) +#define VPORT2_IN _SFR_MEM8(0x001A) +#define VPORT2_INTFLAGS _SFR_MEM8(0x001B) + +/* VPORT3 - Virtual Port 3 */ +#define VPORT3_DIR _SFR_MEM8(0x001C) +#define VPORT3_OUT _SFR_MEM8(0x001D) +#define VPORT3_IN _SFR_MEM8(0x001E) +#define VPORT3_INTFLAGS _SFR_MEM8(0x001F) + +/* OCD - On-Chip Debug System */ +#define OCD_OCDR0 _SFR_MEM8(0x002E) +#define OCD_OCDR1 _SFR_MEM8(0x002F) + +/* CPU - CPU Registers */ +#define CPU_CCP _SFR_MEM8(0x0034) +#define CPU_RAMPD _SFR_MEM8(0x0038) +#define CPU_RAMPX _SFR_MEM8(0x0039) +#define CPU_RAMPY _SFR_MEM8(0x003A) +#define CPU_RAMPZ _SFR_MEM8(0x003B) +#define CPU_EIND _SFR_MEM8(0x003C) +#define CPU_SPL _SFR_MEM8(0x003D) +#define CPU_SPH _SFR_MEM8(0x003E) +#define CPU_SREG _SFR_MEM8(0x003F) + +/* CLK - Clock System */ +#define CLK_CTRL _SFR_MEM8(0x0040) +#define CLK_PSCTRL _SFR_MEM8(0x0041) +#define CLK_LOCK _SFR_MEM8(0x0042) +#define CLK_RTCCTRL _SFR_MEM8(0x0043) + +/* SLEEP - Sleep Controller */ +#define SLEEP_CTRL _SFR_MEM8(0x0048) + +/* OSC - Oscillator Control */ +#define OSC_CTRL _SFR_MEM8(0x0050) +#define OSC_STATUS _SFR_MEM8(0x0051) +#define OSC_XOSCCTRL _SFR_MEM8(0x0052) +#define OSC_XOSCFAIL _SFR_MEM8(0x0053) +#define OSC_RC32KCAL _SFR_MEM8(0x0054) +#define OSC_PLLCTRL _SFR_MEM8(0x0055) +#define OSC_DFLLCTRL _SFR_MEM8(0x0056) + +/* DFLLRC32M - DFLL for 32MHz RC Oscillator */ +#define DFLLRC32M_CTRL _SFR_MEM8(0x0060) +#define DFLLRC32M_CALA _SFR_MEM8(0x0062) +#define DFLLRC32M_CALB _SFR_MEM8(0x0063) +#define DFLLRC32M_OSCCNT0 _SFR_MEM8(0x0064) +#define DFLLRC32M_OSCCNT1 _SFR_MEM8(0x0065) +#define DFLLRC32M_OSCCNT2 _SFR_MEM8(0x0066) + +/* DFLLRC2M - DFLL for 2MHz RC Oscillator */ +#define DFLLRC2M_CTRL _SFR_MEM8(0x0068) +#define DFLLRC2M_CALA _SFR_MEM8(0x006A) +#define DFLLRC2M_CALB _SFR_MEM8(0x006B) +#define DFLLRC2M_OSCCNT0 _SFR_MEM8(0x006C) +#define DFLLRC2M_OSCCNT1 _SFR_MEM8(0x006D) +#define DFLLRC2M_OSCCNT2 _SFR_MEM8(0x006E) + +/* PR - Power Reduction */ +#define PR_PR _SFR_MEM8(0x0070) +#define PR_PRPA _SFR_MEM8(0x0071) +#define PR_PRPB _SFR_MEM8(0x0072) +#define PR_PRPC _SFR_MEM8(0x0073) +#define PR_PRPD _SFR_MEM8(0x0074) +#define PR_PRPE _SFR_MEM8(0x0075) +#define PR_PRPF _SFR_MEM8(0x0076) + +/* RST - Reset Controller */ +#define RST_STATUS _SFR_MEM8(0x0078) +#define RST_CTRL _SFR_MEM8(0x0079) + +/* WDT - Watch-Dog Timer */ +#define WDT_CTRL _SFR_MEM8(0x0080) +#define WDT_WINCTRL _SFR_MEM8(0x0081) +#define WDT_STATUS _SFR_MEM8(0x0082) + +/* MCU - MCU Control */ +#define MCU_DEVID0 _SFR_MEM8(0x0090) +#define MCU_DEVID1 _SFR_MEM8(0x0091) +#define MCU_DEVID2 _SFR_MEM8(0x0092) +#define MCU_REVID _SFR_MEM8(0x0093) +#define MCU_JTAGUID _SFR_MEM8(0x0094) +#define MCU_MCUCR _SFR_MEM8(0x0096) +#define MCU_EVSYSLOCK _SFR_MEM8(0x0098) +#define MCU_AWEXLOCK _SFR_MEM8(0x0099) + +/* PMIC - Programmable Interrupt Controller */ +#define PMIC_STATUS _SFR_MEM8(0x00A0) +#define PMIC_INTPRI _SFR_MEM8(0x00A1) +#define PMIC_CTRL _SFR_MEM8(0x00A2) + +/* PORTCFG - Port Configuration */ +#define PORTCFG_MPCMASK _SFR_MEM8(0x00B0) +#define PORTCFG_VPCTRLA _SFR_MEM8(0x00B2) +#define PORTCFG_VPCTRLB _SFR_MEM8(0x00B3) +#define PORTCFG_CLKEVOUT _SFR_MEM8(0x00B4) + +/* AES - AES Crypto Module */ +#define AES_CTRL _SFR_MEM8(0x00C0) +#define AES_STATUS _SFR_MEM8(0x00C1) +#define AES_STATE _SFR_MEM8(0x00C2) +#define AES_KEY _SFR_MEM8(0x00C3) +#define AES_INTCTRL _SFR_MEM8(0x00C4) + +/* VBAT - VBAT Battery Backup Module */ +#define VBAT_CTRL _SFR_MEM8(0x00F0) +#define VBAT_STATUS _SFR_MEM8(0x00F1) +#define VBAT_BACKUP0 _SFR_MEM8(0x00F2) +#define VBAT_BACKUP1 _SFR_MEM8(0x00F3) + +/* DMA - DMA Controller */ +#define DMA_CTRL _SFR_MEM8(0x0100) +#define DMA_INTFLAGS _SFR_MEM8(0x0103) +#define DMA_STATUS _SFR_MEM8(0x0104) +#define DMA_TEMP _SFR_MEM16(0x0106) +#define DMA_CH0_CTRLA _SFR_MEM8(0x0110) +#define DMA_CH0_CTRLB _SFR_MEM8(0x0111) +#define DMA_CH0_ADDRCTRL _SFR_MEM8(0x0112) +#define DMA_CH0_TRIGSRC _SFR_MEM8(0x0113) +#define DMA_CH0_TRFCNT _SFR_MEM16(0x0114) +#define DMA_CH0_REPCNT _SFR_MEM8(0x0116) +#define DMA_CH0_SRCADDR0 _SFR_MEM8(0x0118) +#define DMA_CH0_SRCADDR1 _SFR_MEM8(0x0119) +#define DMA_CH0_SRCADDR2 _SFR_MEM8(0x011A) +#define DMA_CH0_DESTADDR0 _SFR_MEM8(0x011C) +#define DMA_CH0_DESTADDR1 _SFR_MEM8(0x011D) +#define DMA_CH0_DESTADDR2 _SFR_MEM8(0x011E) +#define DMA_CH1_CTRLA _SFR_MEM8(0x0120) +#define DMA_CH1_CTRLB _SFR_MEM8(0x0121) +#define DMA_CH1_ADDRCTRL _SFR_MEM8(0x0122) +#define DMA_CH1_TRIGSRC _SFR_MEM8(0x0123) +#define DMA_CH1_TRFCNT _SFR_MEM16(0x0124) +#define DMA_CH1_REPCNT _SFR_MEM8(0x0126) +#define DMA_CH1_SRCADDR0 _SFR_MEM8(0x0128) +#define DMA_CH1_SRCADDR1 _SFR_MEM8(0x0129) +#define DMA_CH1_SRCADDR2 _SFR_MEM8(0x012A) +#define DMA_CH1_DESTADDR0 _SFR_MEM8(0x012C) +#define DMA_CH1_DESTADDR1 _SFR_MEM8(0x012D) +#define DMA_CH1_DESTADDR2 _SFR_MEM8(0x012E) +#define DMA_CH2_CTRLA _SFR_MEM8(0x0130) +#define DMA_CH2_CTRLB _SFR_MEM8(0x0131) +#define DMA_CH2_ADDRCTRL _SFR_MEM8(0x0132) +#define DMA_CH2_TRIGSRC _SFR_MEM8(0x0133) +#define DMA_CH2_TRFCNT _SFR_MEM16(0x0134) +#define DMA_CH2_REPCNT _SFR_MEM8(0x0136) +#define DMA_CH2_SRCADDR0 _SFR_MEM8(0x0138) +#define DMA_CH2_SRCADDR1 _SFR_MEM8(0x0139) +#define DMA_CH2_SRCADDR2 _SFR_MEM8(0x013A) +#define DMA_CH2_DESTADDR0 _SFR_MEM8(0x013C) +#define DMA_CH2_DESTADDR1 _SFR_MEM8(0x013D) +#define DMA_CH2_DESTADDR2 _SFR_MEM8(0x013E) +#define DMA_CH3_CTRLA _SFR_MEM8(0x0140) +#define DMA_CH3_CTRLB _SFR_MEM8(0x0141) +#define DMA_CH3_ADDRCTRL _SFR_MEM8(0x0142) +#define DMA_CH3_TRIGSRC _SFR_MEM8(0x0143) +#define DMA_CH3_TRFCNT _SFR_MEM16(0x0144) +#define DMA_CH3_REPCNT _SFR_MEM8(0x0146) +#define DMA_CH3_SRCADDR0 _SFR_MEM8(0x0148) +#define DMA_CH3_SRCADDR1 _SFR_MEM8(0x0149) +#define DMA_CH3_SRCADDR2 _SFR_MEM8(0x014A) +#define DMA_CH3_DESTADDR0 _SFR_MEM8(0x014C) +#define DMA_CH3_DESTADDR1 _SFR_MEM8(0x014D) +#define DMA_CH3_DESTADDR2 _SFR_MEM8(0x014E) + +/* EVSYS - Event System */ +#define EVSYS_CH0MUX _SFR_MEM8(0x0180) +#define EVSYS_CH1MUX _SFR_MEM8(0x0181) +#define EVSYS_CH2MUX _SFR_MEM8(0x0182) +#define EVSYS_CH3MUX _SFR_MEM8(0x0183) +#define EVSYS_CH4MUX _SFR_MEM8(0x0184) +#define EVSYS_CH5MUX _SFR_MEM8(0x0185) +#define EVSYS_CH6MUX _SFR_MEM8(0x0186) +#define EVSYS_CH7MUX _SFR_MEM8(0x0187) +#define EVSYS_CH0CTRL _SFR_MEM8(0x0188) +#define EVSYS_CH1CTRL _SFR_MEM8(0x0189) +#define EVSYS_CH2CTRL _SFR_MEM8(0x018A) +#define EVSYS_CH3CTRL _SFR_MEM8(0x018B) +#define EVSYS_CH4CTRL _SFR_MEM8(0x018C) +#define EVSYS_CH5CTRL _SFR_MEM8(0x018D) +#define EVSYS_CH6CTRL _SFR_MEM8(0x018E) +#define EVSYS_CH7CTRL _SFR_MEM8(0x018F) +#define EVSYS_STROBE _SFR_MEM8(0x0190) +#define EVSYS_DATA _SFR_MEM8(0x0191) + +/* NVM - Non Volatile Memory Controller */ +#define NVM_ADDR0 _SFR_MEM8(0x01C0) +#define NVM_ADDR1 _SFR_MEM8(0x01C1) +#define NVM_ADDR2 _SFR_MEM8(0x01C2) +#define NVM_DATA0 _SFR_MEM8(0x01C4) +#define NVM_DATA1 _SFR_MEM8(0x01C5) +#define NVM_DATA2 _SFR_MEM8(0x01C6) +#define NVM_CMD _SFR_MEM8(0x01CA) +#define NVM_CTRLA _SFR_MEM8(0x01CB) +#define NVM_CTRLB _SFR_MEM8(0x01CC) +#define NVM_INTCTRL _SFR_MEM8(0x01CD) +#define NVM_STATUS _SFR_MEM8(0x01CF) +#define NVM_LOCKBITS _SFR_MEM8(0x01D0) + +/* ADCA - Analog to Digital Converter A */ +#define ADCA_CTRLA _SFR_MEM8(0x0200) +#define ADCA_CTRLB _SFR_MEM8(0x0201) +#define ADCA_REFCTRL _SFR_MEM8(0x0202) +#define ADCA_EVCTRL _SFR_MEM8(0x0203) +#define ADCA_PRESCALER _SFR_MEM8(0x0204) +#define ADCA_CALCTRL _SFR_MEM8(0x0205) +#define ADCA_INTFLAGS _SFR_MEM8(0x0206) +#define ADCA_CALIB _SFR_MEM8(0x020C) +#define ADCA_CH0RES _SFR_MEM16(0x0210) +#define ADCA_CH1RES _SFR_MEM16(0x0212) +#define ADCA_CH2RES _SFR_MEM16(0x0214) +#define ADCA_CH3RES _SFR_MEM16(0x0216) +#define ADCA_CMP _SFR_MEM16(0x0218) +#define ADCA_CH0_CTRL _SFR_MEM8(0x0220) +#define ADCA_CH0_MUXCTRL _SFR_MEM8(0x0221) +#define ADCA_CH0_INTCTRL _SFR_MEM8(0x0222) +#define ADCA_CH0_INTFLAGS _SFR_MEM8(0x0223) +#define ADCA_CH0_RES _SFR_MEM16(0x0224) +#define ADCA_CH1_CTRL _SFR_MEM8(0x0228) +#define ADCA_CH1_MUXCTRL _SFR_MEM8(0x0229) +#define ADCA_CH1_INTCTRL _SFR_MEM8(0x022A) +#define ADCA_CH1_INTFLAGS _SFR_MEM8(0x022B) +#define ADCA_CH1_RES _SFR_MEM16(0x022C) +#define ADCA_CH2_CTRL _SFR_MEM8(0x0230) +#define ADCA_CH2_MUXCTRL _SFR_MEM8(0x0231) +#define ADCA_CH2_INTCTRL _SFR_MEM8(0x0232) +#define ADCA_CH2_INTFLAGS _SFR_MEM8(0x0233) +#define ADCA_CH2_RES _SFR_MEM16(0x0234) +#define ADCA_CH3_CTRL _SFR_MEM8(0x0238) +#define ADCA_CH3_MUXCTRL _SFR_MEM8(0x0239) +#define ADCA_CH3_INTCTRL _SFR_MEM8(0x023A) +#define ADCA_CH3_INTFLAGS _SFR_MEM8(0x023B) +#define ADCA_CH3_RES _SFR_MEM16(0x023C) + +/* ADCB - Analog to Digital Converter B */ +#define ADCB_CTRLA _SFR_MEM8(0x0240) +#define ADCB_CTRLB _SFR_MEM8(0x0241) +#define ADCB_REFCTRL _SFR_MEM8(0x0242) +#define ADCB_EVCTRL _SFR_MEM8(0x0243) +#define ADCB_PRESCALER _SFR_MEM8(0x0244) +#define ADCB_CALCTRL _SFR_MEM8(0x0245) +#define ADCB_INTFLAGS _SFR_MEM8(0x0246) +#define ADCB_CALIB _SFR_MEM8(0x024C) +#define ADCB_CH0RES _SFR_MEM16(0x0250) +#define ADCB_CH1RES _SFR_MEM16(0x0252) +#define ADCB_CH2RES _SFR_MEM16(0x0254) +#define ADCB_CH3RES _SFR_MEM16(0x0256) +#define ADCB_CMP _SFR_MEM16(0x0258) +#define ADCB_CH0_CTRL _SFR_MEM8(0x0260) +#define ADCB_CH0_MUXCTRL _SFR_MEM8(0x0261) +#define ADCB_CH0_INTCTRL _SFR_MEM8(0x0262) +#define ADCB_CH0_INTFLAGS _SFR_MEM8(0x0263) +#define ADCB_CH0_RES _SFR_MEM16(0x0264) +#define ADCB_CH1_CTRL _SFR_MEM8(0x0268) +#define ADCB_CH1_MUXCTRL _SFR_MEM8(0x0269) +#define ADCB_CH1_INTCTRL _SFR_MEM8(0x026A) +#define ADCB_CH1_INTFLAGS _SFR_MEM8(0x026B) +#define ADCB_CH1_RES _SFR_MEM16(0x026C) +#define ADCB_CH2_CTRL _SFR_MEM8(0x0270) +#define ADCB_CH2_MUXCTRL _SFR_MEM8(0x0271) +#define ADCB_CH2_INTCTRL _SFR_MEM8(0x0272) +#define ADCB_CH2_INTFLAGS _SFR_MEM8(0x0273) +#define ADCB_CH2_RES _SFR_MEM16(0x0274) +#define ADCB_CH3_CTRL _SFR_MEM8(0x0278) +#define ADCB_CH3_MUXCTRL _SFR_MEM8(0x0279) +#define ADCB_CH3_INTCTRL _SFR_MEM8(0x027A) +#define ADCB_CH3_INTFLAGS _SFR_MEM8(0x027B) +#define ADCB_CH3_RES _SFR_MEM16(0x027C) + +/* DACB - Digital to Analog Converter B */ +#define DACB_CTRLA _SFR_MEM8(0x0320) +#define DACB_CTRLB _SFR_MEM8(0x0321) +#define DACB_CTRLC _SFR_MEM8(0x0322) +#define DACB_EVCTRL _SFR_MEM8(0x0323) +#define DACB_TIMCTRL _SFR_MEM8(0x0324) +#define DACB_STATUS _SFR_MEM8(0x0325) +#define DACB_GAINCAL _SFR_MEM8(0x0328) +#define DACB_OFFSETCAL _SFR_MEM8(0x0329) +#define DACB_CH0DATA _SFR_MEM16(0x0338) +#define DACB_CH1DATA _SFR_MEM16(0x033A) + +/* ACA - Analog Comparator A */ +#define ACA_AC0CTRL _SFR_MEM8(0x0380) +#define ACA_AC1CTRL _SFR_MEM8(0x0381) +#define ACA_AC0MUXCTRL _SFR_MEM8(0x0382) +#define ACA_AC1MUXCTRL _SFR_MEM8(0x0383) +#define ACA_CTRLA _SFR_MEM8(0x0384) +#define ACA_CTRLB _SFR_MEM8(0x0385) +#define ACA_WINCTRL _SFR_MEM8(0x0386) +#define ACA_STATUS _SFR_MEM8(0x0387) + +/* ACB - Analog Comparator B */ +#define ACB_AC0CTRL _SFR_MEM8(0x0390) +#define ACB_AC1CTRL _SFR_MEM8(0x0391) +#define ACB_AC0MUXCTRL _SFR_MEM8(0x0392) +#define ACB_AC1MUXCTRL _SFR_MEM8(0x0393) +#define ACB_CTRLA _SFR_MEM8(0x0394) +#define ACB_CTRLB _SFR_MEM8(0x0395) +#define ACB_WINCTRL _SFR_MEM8(0x0396) +#define ACB_STATUS _SFR_MEM8(0x0397) + +/* RTC32 - 32-bit Real-Time Counter */ +#define RTC32_CTRL _SFR_MEM8(0x0420) +#define RTC32_SYNCCTRL _SFR_MEM8(0x0421) +#define RTC32_INTCTRL _SFR_MEM8(0x0422) +#define RTC32_INTFLAGS _SFR_MEM8(0x0423) + +/* TWIC - Two-Wire Interface C */ +#define TWIC_CTRL _SFR_MEM8(0x0480) +#define TWIC_MASTER_CTRLA _SFR_MEM8(0x0481) +#define TWIC_MASTER_CTRLB _SFR_MEM8(0x0482) +#define TWIC_MASTER_CTRLC _SFR_MEM8(0x0483) +#define TWIC_MASTER_STATUS _SFR_MEM8(0x0484) +#define TWIC_MASTER_BAUD _SFR_MEM8(0x0485) +#define TWIC_MASTER_ADDR _SFR_MEM8(0x0486) +#define TWIC_MASTER_DATA _SFR_MEM8(0x0487) +#define TWIC_SLAVE_CTRLA _SFR_MEM8(0x0488) +#define TWIC_SLAVE_CTRLB _SFR_MEM8(0x0489) +#define TWIC_SLAVE_STATUS _SFR_MEM8(0x048A) +#define TWIC_SLAVE_ADDR _SFR_MEM8(0x048B) +#define TWIC_SLAVE_DATA _SFR_MEM8(0x048C) + +/* TWIE - Two-Wire Interface E */ +#define TWIE_CTRL _SFR_MEM8(0x04A0) +#define TWIE_MASTER_CTRLA _SFR_MEM8(0x04A1) +#define TWIE_MASTER_CTRLB _SFR_MEM8(0x04A2) +#define TWIE_MASTER_CTRLC _SFR_MEM8(0x04A3) +#define TWIE_MASTER_STATUS _SFR_MEM8(0x04A4) +#define TWIE_MASTER_BAUD _SFR_MEM8(0x04A5) +#define TWIE_MASTER_ADDR _SFR_MEM8(0x04A6) +#define TWIE_MASTER_DATA _SFR_MEM8(0x04A7) +#define TWIE_SLAVE_CTRLA _SFR_MEM8(0x04A8) +#define TWIE_SLAVE_CTRLB _SFR_MEM8(0x04A9) +#define TWIE_SLAVE_STATUS _SFR_MEM8(0x04AA) +#define TWIE_SLAVE_ADDR _SFR_MEM8(0x04AB) +#define TWIE_SLAVE_DATA _SFR_MEM8(0x04AC) + +/* PORTA - Port A */ +#define PORTA_DIR _SFR_MEM8(0x0600) +#define PORTA_DIRSET _SFR_MEM8(0x0601) +#define PORTA_DIRCLR _SFR_MEM8(0x0602) +#define PORTA_DIRTGL _SFR_MEM8(0x0603) +#define PORTA_OUT _SFR_MEM8(0x0604) +#define PORTA_OUTSET _SFR_MEM8(0x0605) +#define PORTA_OUTCLR _SFR_MEM8(0x0606) +#define PORTA_OUTTGL _SFR_MEM8(0x0607) +#define PORTA_IN _SFR_MEM8(0x0608) +#define PORTA_INTCTRL _SFR_MEM8(0x0609) +#define PORTA_INT0MASK _SFR_MEM8(0x060A) +#define PORTA_INT1MASK _SFR_MEM8(0x060B) +#define PORTA_INTFLAGS _SFR_MEM8(0x060C) +#define PORTA_PIN0CTRL _SFR_MEM8(0x0610) +#define PORTA_PIN1CTRL _SFR_MEM8(0x0611) +#define PORTA_PIN2CTRL _SFR_MEM8(0x0612) +#define PORTA_PIN3CTRL _SFR_MEM8(0x0613) +#define PORTA_PIN4CTRL _SFR_MEM8(0x0614) +#define PORTA_PIN5CTRL _SFR_MEM8(0x0615) +#define PORTA_PIN6CTRL _SFR_MEM8(0x0616) +#define PORTA_PIN7CTRL _SFR_MEM8(0x0617) + +/* PORTB - Port B */ +#define PORTB_DIR _SFR_MEM8(0x0620) +#define PORTB_DIRSET _SFR_MEM8(0x0621) +#define PORTB_DIRCLR _SFR_MEM8(0x0622) +#define PORTB_DIRTGL _SFR_MEM8(0x0623) +#define PORTB_OUT _SFR_MEM8(0x0624) +#define PORTB_OUTSET _SFR_MEM8(0x0625) +#define PORTB_OUTCLR _SFR_MEM8(0x0626) +#define PORTB_OUTTGL _SFR_MEM8(0x0627) +#define PORTB_IN _SFR_MEM8(0x0628) +#define PORTB_INTCTRL _SFR_MEM8(0x0629) +#define PORTB_INT0MASK _SFR_MEM8(0x062A) +#define PORTB_INT1MASK _SFR_MEM8(0x062B) +#define PORTB_INTFLAGS _SFR_MEM8(0x062C) +#define PORTB_PIN0CTRL _SFR_MEM8(0x0630) +#define PORTB_PIN1CTRL _SFR_MEM8(0x0631) +#define PORTB_PIN2CTRL _SFR_MEM8(0x0632) +#define PORTB_PIN3CTRL _SFR_MEM8(0x0633) +#define PORTB_PIN4CTRL _SFR_MEM8(0x0634) +#define PORTB_PIN5CTRL _SFR_MEM8(0x0635) +#define PORTB_PIN6CTRL _SFR_MEM8(0x0636) +#define PORTB_PIN7CTRL _SFR_MEM8(0x0637) + +/* PORTC - Port C */ +#define PORTC_DIR _SFR_MEM8(0x0640) +#define PORTC_DIRSET _SFR_MEM8(0x0641) +#define PORTC_DIRCLR _SFR_MEM8(0x0642) +#define PORTC_DIRTGL _SFR_MEM8(0x0643) +#define PORTC_OUT _SFR_MEM8(0x0644) +#define PORTC_OUTSET _SFR_MEM8(0x0645) +#define PORTC_OUTCLR _SFR_MEM8(0x0646) +#define PORTC_OUTTGL _SFR_MEM8(0x0647) +#define PORTC_IN _SFR_MEM8(0x0648) +#define PORTC_INTCTRL _SFR_MEM8(0x0649) +#define PORTC_INT0MASK _SFR_MEM8(0x064A) +#define PORTC_INT1MASK _SFR_MEM8(0x064B) +#define PORTC_INTFLAGS _SFR_MEM8(0x064C) +#define PORTC_PIN0CTRL _SFR_MEM8(0x0650) +#define PORTC_PIN1CTRL _SFR_MEM8(0x0651) +#define PORTC_PIN2CTRL _SFR_MEM8(0x0652) +#define PORTC_PIN3CTRL _SFR_MEM8(0x0653) +#define PORTC_PIN4CTRL _SFR_MEM8(0x0654) +#define PORTC_PIN5CTRL _SFR_MEM8(0x0655) +#define PORTC_PIN6CTRL _SFR_MEM8(0x0656) +#define PORTC_PIN7CTRL _SFR_MEM8(0x0657) + +/* PORTD - Port D */ +#define PORTD_DIR _SFR_MEM8(0x0660) +#define PORTD_DIRSET _SFR_MEM8(0x0661) +#define PORTD_DIRCLR _SFR_MEM8(0x0662) +#define PORTD_DIRTGL _SFR_MEM8(0x0663) +#define PORTD_OUT _SFR_MEM8(0x0664) +#define PORTD_OUTSET _SFR_MEM8(0x0665) +#define PORTD_OUTCLR _SFR_MEM8(0x0666) +#define PORTD_OUTTGL _SFR_MEM8(0x0667) +#define PORTD_IN _SFR_MEM8(0x0668) +#define PORTD_INTCTRL _SFR_MEM8(0x0669) +#define PORTD_INT0MASK _SFR_MEM8(0x066A) +#define PORTD_INT1MASK _SFR_MEM8(0x066B) +#define PORTD_INTFLAGS _SFR_MEM8(0x066C) +#define PORTD_PIN0CTRL _SFR_MEM8(0x0670) +#define PORTD_PIN1CTRL _SFR_MEM8(0x0671) +#define PORTD_PIN2CTRL _SFR_MEM8(0x0672) +#define PORTD_PIN3CTRL _SFR_MEM8(0x0673) +#define PORTD_PIN4CTRL _SFR_MEM8(0x0674) +#define PORTD_PIN5CTRL _SFR_MEM8(0x0675) +#define PORTD_PIN6CTRL _SFR_MEM8(0x0676) +#define PORTD_PIN7CTRL _SFR_MEM8(0x0677) + +/* PORTE - Port E */ +#define PORTE_DIR _SFR_MEM8(0x0680) +#define PORTE_DIRSET _SFR_MEM8(0x0681) +#define PORTE_DIRCLR _SFR_MEM8(0x0682) +#define PORTE_DIRTGL _SFR_MEM8(0x0683) +#define PORTE_OUT _SFR_MEM8(0x0684) +#define PORTE_OUTSET _SFR_MEM8(0x0685) +#define PORTE_OUTCLR _SFR_MEM8(0x0686) +#define PORTE_OUTTGL _SFR_MEM8(0x0687) +#define PORTE_IN _SFR_MEM8(0x0688) +#define PORTE_INTCTRL _SFR_MEM8(0x0689) +#define PORTE_INT0MASK _SFR_MEM8(0x068A) +#define PORTE_INT1MASK _SFR_MEM8(0x068B) +#define PORTE_INTFLAGS _SFR_MEM8(0x068C) +#define PORTE_PIN0CTRL _SFR_MEM8(0x0690) +#define PORTE_PIN1CTRL _SFR_MEM8(0x0691) +#define PORTE_PIN2CTRL _SFR_MEM8(0x0692) +#define PORTE_PIN3CTRL _SFR_MEM8(0x0693) +#define PORTE_PIN4CTRL _SFR_MEM8(0x0694) +#define PORTE_PIN5CTRL _SFR_MEM8(0x0695) +#define PORTE_PIN6CTRL _SFR_MEM8(0x0696) +#define PORTE_PIN7CTRL _SFR_MEM8(0x0697) + +/* PORTF - Port F */ +#define PORTF_DIR _SFR_MEM8(0x06A0) +#define PORTF_DIRSET _SFR_MEM8(0x06A1) +#define PORTF_DIRCLR _SFR_MEM8(0x06A2) +#define PORTF_DIRTGL _SFR_MEM8(0x06A3) +#define PORTF_OUT _SFR_MEM8(0x06A4) +#define PORTF_OUTSET _SFR_MEM8(0x06A5) +#define PORTF_OUTCLR _SFR_MEM8(0x06A6) +#define PORTF_OUTTGL _SFR_MEM8(0x06A7) +#define PORTF_IN _SFR_MEM8(0x06A8) +#define PORTF_INTCTRL _SFR_MEM8(0x06A9) +#define PORTF_INT0MASK _SFR_MEM8(0x06AA) +#define PORTF_INT1MASK _SFR_MEM8(0x06AB) +#define PORTF_INTFLAGS _SFR_MEM8(0x06AC) +#define PORTF_PIN0CTRL _SFR_MEM8(0x06B0) +#define PORTF_PIN1CTRL _SFR_MEM8(0x06B1) +#define PORTF_PIN2CTRL _SFR_MEM8(0x06B2) +#define PORTF_PIN3CTRL _SFR_MEM8(0x06B3) +#define PORTF_PIN4CTRL _SFR_MEM8(0x06B4) +#define PORTF_PIN5CTRL _SFR_MEM8(0x06B5) +#define PORTF_PIN6CTRL _SFR_MEM8(0x06B6) +#define PORTF_PIN7CTRL _SFR_MEM8(0x06B7) + +/* PORTR - Port R */ +#define PORTR_DIR _SFR_MEM8(0x07E0) +#define PORTR_DIRSET _SFR_MEM8(0x07E1) +#define PORTR_DIRCLR _SFR_MEM8(0x07E2) +#define PORTR_DIRTGL _SFR_MEM8(0x07E3) +#define PORTR_OUT _SFR_MEM8(0x07E4) +#define PORTR_OUTSET _SFR_MEM8(0x07E5) +#define PORTR_OUTCLR _SFR_MEM8(0x07E6) +#define PORTR_OUTTGL _SFR_MEM8(0x07E7) +#define PORTR_IN _SFR_MEM8(0x07E8) +#define PORTR_INTCTRL _SFR_MEM8(0x07E9) +#define PORTR_INT0MASK _SFR_MEM8(0x07EA) +#define PORTR_INT1MASK _SFR_MEM8(0x07EB) +#define PORTR_INTFLAGS _SFR_MEM8(0x07EC) +#define PORTR_PIN0CTRL _SFR_MEM8(0x07F0) +#define PORTR_PIN1CTRL _SFR_MEM8(0x07F1) +#define PORTR_PIN2CTRL _SFR_MEM8(0x07F2) +#define PORTR_PIN3CTRL _SFR_MEM8(0x07F3) +#define PORTR_PIN4CTRL _SFR_MEM8(0x07F4) +#define PORTR_PIN5CTRL _SFR_MEM8(0x07F5) +#define PORTR_PIN6CTRL _SFR_MEM8(0x07F6) +#define PORTR_PIN7CTRL _SFR_MEM8(0x07F7) + +/* TCC0 - Timer/Counter C0 */ +#define TCC0_CTRLA _SFR_MEM8(0x0800) +#define TCC0_CTRLB _SFR_MEM8(0x0801) +#define TCC0_CTRLC _SFR_MEM8(0x0802) +#define TCC0_CTRLD _SFR_MEM8(0x0803) +#define TCC0_CTRLE _SFR_MEM8(0x0804) +#define TCC0_INTCTRLA _SFR_MEM8(0x0806) +#define TCC0_INTCTRLB _SFR_MEM8(0x0807) +#define TCC0_CTRLFCLR _SFR_MEM8(0x0808) +#define TCC0_CTRLFSET _SFR_MEM8(0x0809) +#define TCC0_CTRLGCLR _SFR_MEM8(0x080A) +#define TCC0_CTRLGSET _SFR_MEM8(0x080B) +#define TCC0_INTFLAGS _SFR_MEM8(0x080C) +#define TCC0_TEMP _SFR_MEM8(0x080F) +#define TCC0_CNT _SFR_MEM16(0x0820) +#define TCC0_PER _SFR_MEM16(0x0826) +#define TCC0_CCA _SFR_MEM16(0x0828) +#define TCC0_CCB _SFR_MEM16(0x082A) +#define TCC0_CCC _SFR_MEM16(0x082C) +#define TCC0_CCD _SFR_MEM16(0x082E) +#define TCC0_PERBUF _SFR_MEM16(0x0836) +#define TCC0_CCABUF _SFR_MEM16(0x0838) +#define TCC0_CCBBUF _SFR_MEM16(0x083A) +#define TCC0_CCCBUF _SFR_MEM16(0x083C) +#define TCC0_CCDBUF _SFR_MEM16(0x083E) + +/* TCC1 - Timer/Counter C1 */ +#define TCC1_CTRLA _SFR_MEM8(0x0840) +#define TCC1_CTRLB _SFR_MEM8(0x0841) +#define TCC1_CTRLC _SFR_MEM8(0x0842) +#define TCC1_CTRLD _SFR_MEM8(0x0843) +#define TCC1_CTRLE _SFR_MEM8(0x0844) +#define TCC1_INTCTRLA _SFR_MEM8(0x0846) +#define TCC1_INTCTRLB _SFR_MEM8(0x0847) +#define TCC1_CTRLFCLR _SFR_MEM8(0x0848) +#define TCC1_CTRLFSET _SFR_MEM8(0x0849) +#define TCC1_CTRLGCLR _SFR_MEM8(0x084A) +#define TCC1_CTRLGSET _SFR_MEM8(0x084B) +#define TCC1_INTFLAGS _SFR_MEM8(0x084C) +#define TCC1_TEMP _SFR_MEM8(0x084F) +#define TCC1_CNT _SFR_MEM16(0x0860) +#define TCC1_PER _SFR_MEM16(0x0866) +#define TCC1_CCA _SFR_MEM16(0x0868) +#define TCC1_CCB _SFR_MEM16(0x086A) +#define TCC1_PERBUF _SFR_MEM16(0x0876) +#define TCC1_CCABUF _SFR_MEM16(0x0878) +#define TCC1_CCBBUF _SFR_MEM16(0x087A) + +/* AWEXC - Advanced Waveform Extension C */ +#define AWEXC_CTRL _SFR_MEM8(0x0880) +#define AWEXC_FDEVMASK _SFR_MEM8(0x0882) +#define AWEXC_FDCTRL _SFR_MEM8(0x0883) +#define AWEXC_STATUS _SFR_MEM8(0x0884) +#define AWEXC_DTBOTH _SFR_MEM8(0x0886) +#define AWEXC_DTBOTHBUF _SFR_MEM8(0x0887) +#define AWEXC_DTLS _SFR_MEM8(0x0888) +#define AWEXC_DTHS _SFR_MEM8(0x0889) +#define AWEXC_DTLSBUF _SFR_MEM8(0x088A) +#define AWEXC_DTHSBUF _SFR_MEM8(0x088B) +#define AWEXC_OUTOVEN _SFR_MEM8(0x088C) + +/* HIRESC - High-Resolution Extension C */ +#define HIRESC_CTRL _SFR_MEM8(0x0890) + +/* USARTC0 - Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC0_DATA _SFR_MEM8(0x08A0) +#define USARTC0_STATUS _SFR_MEM8(0x08A1) +#define USARTC0_CTRLA _SFR_MEM8(0x08A3) +#define USARTC0_CTRLB _SFR_MEM8(0x08A4) +#define USARTC0_CTRLC _SFR_MEM8(0x08A5) +#define USARTC0_BAUDCTRLA _SFR_MEM8(0x08A6) +#define USARTC0_BAUDCTRLB _SFR_MEM8(0x08A7) + +/* USARTC1 - Universal Asynchronous Receiver-Transmitter C1 */ +#define USARTC1_DATA _SFR_MEM8(0x08B0) +#define USARTC1_STATUS _SFR_MEM8(0x08B1) +#define USARTC1_CTRLA _SFR_MEM8(0x08B3) +#define USARTC1_CTRLB _SFR_MEM8(0x08B4) +#define USARTC1_CTRLC _SFR_MEM8(0x08B5) +#define USARTC1_BAUDCTRLA _SFR_MEM8(0x08B6) +#define USARTC1_BAUDCTRLB _SFR_MEM8(0x08B7) + +/* SPIC - Serial Peripheral Interface C */ +#define SPIC_CTRL _SFR_MEM8(0x08C0) +#define SPIC_INTCTRL _SFR_MEM8(0x08C1) +#define SPIC_STATUS _SFR_MEM8(0x08C2) +#define SPIC_DATA _SFR_MEM8(0x08C3) + +/* IRCOM - IR Communication Module */ +#define IRCOM_CTRL _SFR_MEM8(0x08F8) +#define IRCOM_TXPLCTRL _SFR_MEM8(0x08F9) +#define IRCOM_RXPLCTRL _SFR_MEM8(0x08FA) + +/* TCD0 - Timer/Counter D0 */ +#define TCD0_CTRLA _SFR_MEM8(0x0900) +#define TCD0_CTRLB _SFR_MEM8(0x0901) +#define TCD0_CTRLC _SFR_MEM8(0x0902) +#define TCD0_CTRLD _SFR_MEM8(0x0903) +#define TCD0_CTRLE _SFR_MEM8(0x0904) +#define TCD0_INTCTRLA _SFR_MEM8(0x0906) +#define TCD0_INTCTRLB _SFR_MEM8(0x0907) +#define TCD0_CTRLFCLR _SFR_MEM8(0x0908) +#define TCD0_CTRLFSET _SFR_MEM8(0x0909) +#define TCD0_CTRLGCLR _SFR_MEM8(0x090A) +#define TCD0_CTRLGSET _SFR_MEM8(0x090B) +#define TCD0_INTFLAGS _SFR_MEM8(0x090C) +#define TCD0_TEMP _SFR_MEM8(0x090F) +#define TCD0_CNT _SFR_MEM16(0x0920) +#define TCD0_PER _SFR_MEM16(0x0926) +#define TCD0_CCA _SFR_MEM16(0x0928) +#define TCD0_CCB _SFR_MEM16(0x092A) +#define TCD0_CCC _SFR_MEM16(0x092C) +#define TCD0_CCD _SFR_MEM16(0x092E) +#define TCD0_PERBUF _SFR_MEM16(0x0936) +#define TCD0_CCABUF _SFR_MEM16(0x0938) +#define TCD0_CCBBUF _SFR_MEM16(0x093A) +#define TCD0_CCCBUF _SFR_MEM16(0x093C) +#define TCD0_CCDBUF _SFR_MEM16(0x093E) + +/* TCD1 - Timer/Counter D1 */ +#define TCD1_CTRLA _SFR_MEM8(0x0940) +#define TCD1_CTRLB _SFR_MEM8(0x0941) +#define TCD1_CTRLC _SFR_MEM8(0x0942) +#define TCD1_CTRLD _SFR_MEM8(0x0943) +#define TCD1_CTRLE _SFR_MEM8(0x0944) +#define TCD1_INTCTRLA _SFR_MEM8(0x0946) +#define TCD1_INTCTRLB _SFR_MEM8(0x0947) +#define TCD1_CTRLFCLR _SFR_MEM8(0x0948) +#define TCD1_CTRLFSET _SFR_MEM8(0x0949) +#define TCD1_CTRLGCLR _SFR_MEM8(0x094A) +#define TCD1_CTRLGSET _SFR_MEM8(0x094B) +#define TCD1_INTFLAGS _SFR_MEM8(0x094C) +#define TCD1_TEMP _SFR_MEM8(0x094F) +#define TCD1_CNT _SFR_MEM16(0x0960) +#define TCD1_PER _SFR_MEM16(0x0966) +#define TCD1_CCA _SFR_MEM16(0x0968) +#define TCD1_CCB _SFR_MEM16(0x096A) +#define TCD1_PERBUF _SFR_MEM16(0x0976) +#define TCD1_CCABUF _SFR_MEM16(0x0978) +#define TCD1_CCBBUF _SFR_MEM16(0x097A) + +/* HIRESD - High-Resolution Extension D */ +#define HIRESD_CTRL _SFR_MEM8(0x0990) + +/* USARTD0 - Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD0_DATA _SFR_MEM8(0x09A0) +#define USARTD0_STATUS _SFR_MEM8(0x09A1) +#define USARTD0_CTRLA _SFR_MEM8(0x09A3) +#define USARTD0_CTRLB _SFR_MEM8(0x09A4) +#define USARTD0_CTRLC _SFR_MEM8(0x09A5) +#define USARTD0_BAUDCTRLA _SFR_MEM8(0x09A6) +#define USARTD0_BAUDCTRLB _SFR_MEM8(0x09A7) + +/* USARTD1 - Universal Asynchronous Receiver-Transmitter D1 */ +#define USARTD1_DATA _SFR_MEM8(0x09B0) +#define USARTD1_STATUS _SFR_MEM8(0x09B1) +#define USARTD1_CTRLA _SFR_MEM8(0x09B3) +#define USARTD1_CTRLB _SFR_MEM8(0x09B4) +#define USARTD1_CTRLC _SFR_MEM8(0x09B5) +#define USARTD1_BAUDCTRLA _SFR_MEM8(0x09B6) +#define USARTD1_BAUDCTRLB _SFR_MEM8(0x09B7) + +/* SPID - Serial Peripheral Interface D */ +#define SPID_CTRL _SFR_MEM8(0x09C0) +#define SPID_INTCTRL _SFR_MEM8(0x09C1) +#define SPID_STATUS _SFR_MEM8(0x09C2) +#define SPID_DATA _SFR_MEM8(0x09C3) + +/* TCE0 - Timer/Counter E0 */ +#define TCE0_CTRLA _SFR_MEM8(0x0A00) +#define TCE0_CTRLB _SFR_MEM8(0x0A01) +#define TCE0_CTRLC _SFR_MEM8(0x0A02) +#define TCE0_CTRLD _SFR_MEM8(0x0A03) +#define TCE0_CTRLE _SFR_MEM8(0x0A04) +#define TCE0_INTCTRLA _SFR_MEM8(0x0A06) +#define TCE0_INTCTRLB _SFR_MEM8(0x0A07) +#define TCE0_CTRLFCLR _SFR_MEM8(0x0A08) +#define TCE0_CTRLFSET _SFR_MEM8(0x0A09) +#define TCE0_CTRLGCLR _SFR_MEM8(0x0A0A) +#define TCE0_CTRLGSET _SFR_MEM8(0x0A0B) +#define TCE0_INTFLAGS _SFR_MEM8(0x0A0C) +#define TCE0_TEMP _SFR_MEM8(0x0A0F) +#define TCE0_CNT _SFR_MEM16(0x0A20) +#define TCE0_PER _SFR_MEM16(0x0A26) +#define TCE0_CCA _SFR_MEM16(0x0A28) +#define TCE0_CCB _SFR_MEM16(0x0A2A) +#define TCE0_CCC _SFR_MEM16(0x0A2C) +#define TCE0_CCD _SFR_MEM16(0x0A2E) +#define TCE0_PERBUF _SFR_MEM16(0x0A36) +#define TCE0_CCABUF _SFR_MEM16(0x0A38) +#define TCE0_CCBBUF _SFR_MEM16(0x0A3A) +#define TCE0_CCCBUF _SFR_MEM16(0x0A3C) +#define TCE0_CCDBUF _SFR_MEM16(0x0A3E) + +/* TCE1 - Timer/Counter E1 */ +#define TCE1_CTRLA _SFR_MEM8(0x0A40) +#define TCE1_CTRLB _SFR_MEM8(0x0A41) +#define TCE1_CTRLC _SFR_MEM8(0x0A42) +#define TCE1_CTRLD _SFR_MEM8(0x0A43) +#define TCE1_CTRLE _SFR_MEM8(0x0A44) +#define TCE1_INTCTRLA _SFR_MEM8(0x0A46) +#define TCE1_INTCTRLB _SFR_MEM8(0x0A47) +#define TCE1_CTRLFCLR _SFR_MEM8(0x0A48) +#define TCE1_CTRLFSET _SFR_MEM8(0x0A49) +#define TCE1_CTRLGCLR _SFR_MEM8(0x0A4A) +#define TCE1_CTRLGSET _SFR_MEM8(0x0A4B) +#define TCE1_INTFLAGS _SFR_MEM8(0x0A4C) +#define TCE1_TEMP _SFR_MEM8(0x0A4F) +#define TCE1_CNT _SFR_MEM16(0x0A60) +#define TCE1_PER _SFR_MEM16(0x0A66) +#define TCE1_CCA _SFR_MEM16(0x0A68) +#define TCE1_CCB _SFR_MEM16(0x0A6A) +#define TCE1_PERBUF _SFR_MEM16(0x0A76) +#define TCE1_CCABUF _SFR_MEM16(0x0A78) +#define TCE1_CCBBUF _SFR_MEM16(0x0A7A) + +/* AWEXE - Advanced Waveform Extension E */ +#define AWEXE_CTRL _SFR_MEM8(0x0A80) +#define AWEXE_FDEVMASK _SFR_MEM8(0x0A82) +#define AWEXE_FDCTRL _SFR_MEM8(0x0A83) +#define AWEXE_STATUS _SFR_MEM8(0x0A84) +#define AWEXE_DTBOTH _SFR_MEM8(0x0A86) +#define AWEXE_DTBOTHBUF _SFR_MEM8(0x0A87) +#define AWEXE_DTLS _SFR_MEM8(0x0A88) +#define AWEXE_DTHS _SFR_MEM8(0x0A89) +#define AWEXE_DTLSBUF _SFR_MEM8(0x0A8A) +#define AWEXE_DTHSBUF _SFR_MEM8(0x0A8B) +#define AWEXE_OUTOVEN _SFR_MEM8(0x0A8C) + +/* HIRESE - High-Resolution Extension E */ +#define HIRESE_CTRL _SFR_MEM8(0x0A90) + +/* USARTE0 - Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE0_DATA _SFR_MEM8(0x0AA0) +#define USARTE0_STATUS _SFR_MEM8(0x0AA1) +#define USARTE0_CTRLA _SFR_MEM8(0x0AA3) +#define USARTE0_CTRLB _SFR_MEM8(0x0AA4) +#define USARTE0_CTRLC _SFR_MEM8(0x0AA5) +#define USARTE0_BAUDCTRLA _SFR_MEM8(0x0AA6) +#define USARTE0_BAUDCTRLB _SFR_MEM8(0x0AA7) + +/* TCF0 - Timer/Counter F0 */ +#define TCF0_CTRLA _SFR_MEM8(0x0B00) +#define TCF0_CTRLB _SFR_MEM8(0x0B01) +#define TCF0_CTRLC _SFR_MEM8(0x0B02) +#define TCF0_CTRLD _SFR_MEM8(0x0B03) +#define TCF0_CTRLE _SFR_MEM8(0x0B04) +#define TCF0_INTCTRLA _SFR_MEM8(0x0B06) +#define TCF0_INTCTRLB _SFR_MEM8(0x0B07) +#define TCF0_CTRLFCLR _SFR_MEM8(0x0B08) +#define TCF0_CTRLFSET _SFR_MEM8(0x0B09) +#define TCF0_CTRLGCLR _SFR_MEM8(0x0B0A) +#define TCF0_CTRLGSET _SFR_MEM8(0x0B0B) +#define TCF0_INTFLAGS _SFR_MEM8(0x0B0C) +#define TCF0_TEMP _SFR_MEM8(0x0B0F) +#define TCF0_CNT _SFR_MEM16(0x0B20) +#define TCF0_PER _SFR_MEM16(0x0B26) +#define TCF0_CCA _SFR_MEM16(0x0B28) +#define TCF0_CCB _SFR_MEM16(0x0B2A) +#define TCF0_CCC _SFR_MEM16(0x0B2C) +#define TCF0_CCD _SFR_MEM16(0x0B2E) +#define TCF0_PERBUF _SFR_MEM16(0x0B36) +#define TCF0_CCABUF _SFR_MEM16(0x0B38) +#define TCF0_CCBBUF _SFR_MEM16(0x0B3A) +#define TCF0_CCCBUF _SFR_MEM16(0x0B3C) +#define TCF0_CCDBUF _SFR_MEM16(0x0B3E) + +/* HIRESF - High-Resolution Extension F */ +#define HIRESF_CTRL _SFR_MEM8(0x0B90) + +/* USARTF0 - Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF0_DATA _SFR_MEM8(0x0BA0) +#define USARTF0_STATUS _SFR_MEM8(0x0BA1) +#define USARTF0_CTRLA _SFR_MEM8(0x0BA3) +#define USARTF0_CTRLB _SFR_MEM8(0x0BA4) +#define USARTF0_CTRLC _SFR_MEM8(0x0BA5) +#define USARTF0_BAUDCTRLA _SFR_MEM8(0x0BA6) +#define USARTF0_BAUDCTRLB _SFR_MEM8(0x0BA7) + +/* USARTF1 - Universal Asynchronous Receiver-Transmitter F1 */ +#define USARTF1_DATA _SFR_MEM8(0x0BB0) +#define USARTF1_STATUS _SFR_MEM8(0x0BB1) +#define USARTF1_CTRLA _SFR_MEM8(0x0BB3) +#define USARTF1_CTRLB _SFR_MEM8(0x0BB4) +#define USARTF1_CTRLC _SFR_MEM8(0x0BB5) +#define USARTF1_BAUDCTRLA _SFR_MEM8(0x0BB6) +#define USARTF1_BAUDCTRLB _SFR_MEM8(0x0BB7) + +/* SPIF - Serial Peripheral Interface F */ +#define SPIF_CTRL _SFR_MEM8(0x0BC0) +#define SPIF_INTCTRL _SFR_MEM8(0x0BC1) +#define SPIF_STATUS _SFR_MEM8(0x0BC2) +#define SPIF_DATA _SFR_MEM8(0x0BC3) + + + +/*================== Bitfield Definitions ================== */ + +/* XOCD - On-Chip Debug System */ +/* OCD.OCDR1 bit masks and bit positions */ +#define OCD_OCDRD_bm 0x01 /* OCDR Dirty bit mask. */ +#define OCD_OCDRD_bp 0 /* OCDR Dirty bit position. */ + + +/* CPU - CPU */ +/* CPU.CCP bit masks and bit positions */ +#define CPU_CCP_gm 0xFF /* CCP signature group mask. */ +#define CPU_CCP_gp 0 /* CCP signature group position. */ +#define CPU_CCP0_bm (1<<0) /* CCP signature bit 0 mask. */ +#define CPU_CCP0_bp 0 /* CCP signature bit 0 position. */ +#define CPU_CCP1_bm (1<<1) /* CCP signature bit 1 mask. */ +#define CPU_CCP1_bp 1 /* CCP signature bit 1 position. */ +#define CPU_CCP2_bm (1<<2) /* CCP signature bit 2 mask. */ +#define CPU_CCP2_bp 2 /* CCP signature bit 2 position. */ +#define CPU_CCP3_bm (1<<3) /* CCP signature bit 3 mask. */ +#define CPU_CCP3_bp 3 /* CCP signature bit 3 position. */ +#define CPU_CCP4_bm (1<<4) /* CCP signature bit 4 mask. */ +#define CPU_CCP4_bp 4 /* CCP signature bit 4 position. */ +#define CPU_CCP5_bm (1<<5) /* CCP signature bit 5 mask. */ +#define CPU_CCP5_bp 5 /* CCP signature bit 5 position. */ +#define CPU_CCP6_bm (1<<6) /* CCP signature bit 6 mask. */ +#define CPU_CCP6_bp 6 /* CCP signature bit 6 position. */ +#define CPU_CCP7_bm (1<<7) /* CCP signature bit 7 mask. */ +#define CPU_CCP7_bp 7 /* CCP signature bit 7 position. */ + + +/* CPU.SREG bit masks and bit positions */ +#define CPU_I_bm 0x80 /* Global Interrupt Enable Flag bit mask. */ +#define CPU_I_bp 7 /* Global Interrupt Enable Flag bit position. */ + +#define CPU_T_bm 0x40 /* Transfer Bit bit mask. */ +#define CPU_T_bp 6 /* Transfer Bit bit position. */ + +#define CPU_H_bm 0x20 /* Half Carry Flag bit mask. */ +#define CPU_H_bp 5 /* Half Carry Flag bit position. */ + +#define CPU_S_bm 0x10 /* N Exclusive Or V Flag bit mask. */ +#define CPU_S_bp 4 /* N Exclusive Or V Flag bit position. */ + +#define CPU_V_bm 0x08 /* Two's Complement Overflow Flag bit mask. */ +#define CPU_V_bp 3 /* Two's Complement Overflow Flag bit position. */ + +#define CPU_N_bm 0x04 /* Negative Flag bit mask. */ +#define CPU_N_bp 2 /* Negative Flag bit position. */ + +#define CPU_Z_bm 0x02 /* Zero Flag bit mask. */ +#define CPU_Z_bp 1 /* Zero Flag bit position. */ + +#define CPU_C_bm 0x01 /* Carry Flag bit mask. */ +#define CPU_C_bp 0 /* Carry Flag bit position. */ + + +/* CLK - Clock System */ +/* CLK.CTRL bit masks and bit positions */ +#define CLK_SCLKSEL_gm 0x07 /* System Clock Selection group mask. */ +#define CLK_SCLKSEL_gp 0 /* System Clock Selection group position. */ +#define CLK_SCLKSEL0_bm (1<<0) /* System Clock Selection bit 0 mask. */ +#define CLK_SCLKSEL0_bp 0 /* System Clock Selection bit 0 position. */ +#define CLK_SCLKSEL1_bm (1<<1) /* System Clock Selection bit 1 mask. */ +#define CLK_SCLKSEL1_bp 1 /* System Clock Selection bit 1 position. */ +#define CLK_SCLKSEL2_bm (1<<2) /* System Clock Selection bit 2 mask. */ +#define CLK_SCLKSEL2_bp 2 /* System Clock Selection bit 2 position. */ + + +/* CLK.PSCTRL bit masks and bit positions */ +#define CLK_PSADIV_gm 0x7C /* Prescaler A Division Factor group mask. */ +#define CLK_PSADIV_gp 2 /* Prescaler A Division Factor group position. */ +#define CLK_PSADIV0_bm (1<<2) /* Prescaler A Division Factor bit 0 mask. */ +#define CLK_PSADIV0_bp 2 /* Prescaler A Division Factor bit 0 position. */ +#define CLK_PSADIV1_bm (1<<3) /* Prescaler A Division Factor bit 1 mask. */ +#define CLK_PSADIV1_bp 3 /* Prescaler A Division Factor bit 1 position. */ +#define CLK_PSADIV2_bm (1<<4) /* Prescaler A Division Factor bit 2 mask. */ +#define CLK_PSADIV2_bp 4 /* Prescaler A Division Factor bit 2 position. */ +#define CLK_PSADIV3_bm (1<<5) /* Prescaler A Division Factor bit 3 mask. */ +#define CLK_PSADIV3_bp 5 /* Prescaler A Division Factor bit 3 position. */ +#define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ +#define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ + +#define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ +#define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ +#define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ +#define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ +#define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ +#define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ + + +/* CLK.LOCK bit masks and bit positions */ +#define CLK_LOCK_bm 0x01 /* Clock System Lock bit mask. */ +#define CLK_LOCK_bp 0 /* Clock System Lock bit position. */ + + +/* CLK.RTCCTRL bit masks and bit positions */ +#define CLK_RTCSRC_gm 0x0E /* Clock Source group mask. */ +#define CLK_RTCSRC_gp 1 /* Clock Source group position. */ +#define CLK_RTCSRC0_bm (1<<1) /* Clock Source bit 0 mask. */ +#define CLK_RTCSRC0_bp 1 /* Clock Source bit 0 position. */ +#define CLK_RTCSRC1_bm (1<<2) /* Clock Source bit 1 mask. */ +#define CLK_RTCSRC1_bp 2 /* Clock Source bit 1 position. */ +#define CLK_RTCSRC2_bm (1<<3) /* Clock Source bit 2 mask. */ +#define CLK_RTCSRC2_bp 3 /* Clock Source bit 2 position. */ + +#define CLK_RTCEN_bm 0x01 /* RTC Clock Source Enable bit mask. */ +#define CLK_RTCEN_bp 0 /* RTC Clock Source Enable bit position. */ + + +/* PR.PR bit masks and bit positions */ +#define PR_EBI_bm 0x08 /* External Bus Interface bit mask. */ +#define PR_EBI_bp 3 /* External Bus Interface bit position. */ + +#define PR_RTC_bm 0x04 /* Real-time Counter bit mask. */ +#define PR_RTC_bp 2 /* Real-time Counter bit position. */ + +#define PR_EVSYS_bm 0x02 /* Event System bit mask. */ +#define PR_EVSYS_bp 1 /* Event System bit position. */ + +#define PR_DMA_bm 0x01 /* DMA-Controller bit mask. */ +#define PR_DMA_bp 0 /* DMA-Controller bit position. */ + + +/* PR.PRPA bit masks and bit positions */ +#define PR_DAC_bm 0x04 /* Port A DAC bit mask. */ +#define PR_DAC_bp 2 /* Port A DAC bit position. */ + +#define PR_ADC_bm 0x02 /* Port A ADC bit mask. */ +#define PR_ADC_bp 1 /* Port A ADC bit position. */ + +#define PR_AC_bm 0x01 /* Port A Analog Comparator bit mask. */ +#define PR_AC_bp 0 /* Port A Analog Comparator bit position. */ + + +/* PR.PRPB bit masks and bit positions */ +/* PR_DAC_bm Predefined. */ +/* PR_DAC_bp Predefined. */ + +/* PR_ADC_bm Predefined. */ +/* PR_ADC_bp Predefined. */ + +/* PR_AC_bm Predefined. */ +/* PR_AC_bp Predefined. */ + + +/* PR.PRPC bit masks and bit positions */ +#define PR_TWI_bm 0x40 /* Port C Two-wire Interface bit mask. */ +#define PR_TWI_bp 6 /* Port C Two-wire Interface bit position. */ + +#define PR_USART1_bm 0x20 /* Port C USART1 bit mask. */ +#define PR_USART1_bp 5 /* Port C USART1 bit position. */ + +#define PR_USART0_bm 0x10 /* Port C USART0 bit mask. */ +#define PR_USART0_bp 4 /* Port C USART0 bit position. */ + +#define PR_SPI_bm 0x08 /* Port C SPI bit mask. */ +#define PR_SPI_bp 3 /* Port C SPI bit position. */ + +#define PR_HIRES_bm 0x04 /* Port C AWEX bit mask. */ +#define PR_HIRES_bp 2 /* Port C AWEX bit position. */ + +#define PR_TC1_bm 0x02 /* Port C Timer/Counter1 bit mask. */ +#define PR_TC1_bp 1 /* Port C Timer/Counter1 bit position. */ + +#define PR_TC0_bm 0x01 /* Port C Timer/Counter0 bit mask. */ +#define PR_TC0_bp 0 /* Port C Timer/Counter0 bit position. */ + + +/* PR.PRPD bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPE bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPF bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* SLEEP - Sleep Controller */ +/* SLEEP.CTRL bit masks and bit positions */ +#define SLEEP_SMODE_gm 0x0E /* Sleep Mode group mask. */ +#define SLEEP_SMODE_gp 1 /* Sleep Mode group position. */ +#define SLEEP_SMODE0_bm (1<<1) /* Sleep Mode bit 0 mask. */ +#define SLEEP_SMODE0_bp 1 /* Sleep Mode bit 0 position. */ +#define SLEEP_SMODE1_bm (1<<2) /* Sleep Mode bit 1 mask. */ +#define SLEEP_SMODE1_bp 2 /* Sleep Mode bit 1 position. */ +#define SLEEP_SMODE2_bm (1<<3) /* Sleep Mode bit 2 mask. */ +#define SLEEP_SMODE2_bp 3 /* Sleep Mode bit 2 position. */ + +#define SLEEP_SEN_bm 0x01 /* Sleep Enable bit mask. */ +#define SLEEP_SEN_bp 0 /* Sleep Enable bit position. */ + + +/* OSC - Oscillator */ +/* OSC.CTRL bit masks and bit positions */ +#define OSC_PLLEN_bm 0x10 /* PLL Enable bit mask. */ +#define OSC_PLLEN_bp 4 /* PLL Enable bit position. */ + +#define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ +#define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ + +#define OSC_RC32KEN_bm 0x04 /* Internal 32kHz RC Oscillator Enable bit mask. */ +#define OSC_RC32KEN_bp 2 /* Internal 32kHz RC Oscillator Enable bit position. */ + +#define OSC_RC32MEN_bm 0x02 /* Internal 32MHz RC Oscillator Enable bit mask. */ +#define OSC_RC32MEN_bp 1 /* Internal 32MHz RC Oscillator Enable bit position. */ + +#define OSC_RC2MEN_bm 0x01 /* Internal 2MHz RC Oscillator Enable bit mask. */ +#define OSC_RC2MEN_bp 0 /* Internal 2MHz RC Oscillator Enable bit position. */ + + +/* OSC.STATUS bit masks and bit positions */ +#define OSC_PLLRDY_bm 0x10 /* PLL Ready bit mask. */ +#define OSC_PLLRDY_bp 4 /* PLL Ready bit position. */ + +#define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ +#define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ + +#define OSC_RC32KRDY_bm 0x04 /* Internal 32kHz RC Oscillator Ready bit mask. */ +#define OSC_RC32KRDY_bp 2 /* Internal 32kHz RC Oscillator Ready bit position. */ + +#define OSC_RC32MRDY_bm 0x02 /* Internal 32MHz RC Oscillator Ready bit mask. */ +#define OSC_RC32MRDY_bp 1 /* Internal 32MHz RC Oscillator Ready bit position. */ + +#define OSC_RC2MRDY_bm 0x01 /* Internal 2MHz RC Oscillator Ready bit mask. */ +#define OSC_RC2MRDY_bp 0 /* Internal 2MHz RC Oscillator Ready bit position. */ + + +/* OSC.XOSCCTRL bit masks and bit positions */ +#define OSC_FRQRANGE_gm 0xC0 /* Frequency Range group mask. */ +#define OSC_FRQRANGE_gp 6 /* Frequency Range group position. */ +#define OSC_FRQRANGE0_bm (1<<6) /* Frequency Range bit 0 mask. */ +#define OSC_FRQRANGE0_bp 6 /* Frequency Range bit 0 position. */ +#define OSC_FRQRANGE1_bm (1<<7) /* Frequency Range bit 1 mask. */ +#define OSC_FRQRANGE1_bp 7 /* Frequency Range bit 1 position. */ + +#define OSC_X32KLPM_bm 0x20 /* 32kHz XTAL OSC Low-power Mode bit mask. */ +#define OSC_X32KLPM_bp 5 /* 32kHz XTAL OSC Low-power Mode bit position. */ + +#define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ +#define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ +#define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ +#define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ +#define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ +#define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ +#define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ +#define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ +#define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ +#define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ + + +/* OSC.XOSCFAIL bit masks and bit positions */ +#define OSC_XOSCFDIF_bm 0x02 /* Failure Detection Interrupt Flag bit mask. */ +#define OSC_XOSCFDIF_bp 1 /* Failure Detection Interrupt Flag bit position. */ + +#define OSC_XOSCFDEN_bm 0x01 /* Failure Detection Enable bit mask. */ +#define OSC_XOSCFDEN_bp 0 /* Failure Detection Enable bit position. */ + + +/* OSC.PLLCTRL bit masks and bit positions */ +#define OSC_PLLSRC_gm 0xC0 /* Clock Source group mask. */ +#define OSC_PLLSRC_gp 6 /* Clock Source group position. */ +#define OSC_PLLSRC0_bm (1<<6) /* Clock Source bit 0 mask. */ +#define OSC_PLLSRC0_bp 6 /* Clock Source bit 0 position. */ +#define OSC_PLLSRC1_bm (1<<7) /* Clock Source bit 1 mask. */ +#define OSC_PLLSRC1_bp 7 /* Clock Source bit 1 position. */ + +#define OSC_PLLFAC_gm 0x1F /* Multiplication Factor group mask. */ +#define OSC_PLLFAC_gp 0 /* Multiplication Factor group position. */ +#define OSC_PLLFAC0_bm (1<<0) /* Multiplication Factor bit 0 mask. */ +#define OSC_PLLFAC0_bp 0 /* Multiplication Factor bit 0 position. */ +#define OSC_PLLFAC1_bm (1<<1) /* Multiplication Factor bit 1 mask. */ +#define OSC_PLLFAC1_bp 1 /* Multiplication Factor bit 1 position. */ +#define OSC_PLLFAC2_bm (1<<2) /* Multiplication Factor bit 2 mask. */ +#define OSC_PLLFAC2_bp 2 /* Multiplication Factor bit 2 position. */ +#define OSC_PLLFAC3_bm (1<<3) /* Multiplication Factor bit 3 mask. */ +#define OSC_PLLFAC3_bp 3 /* Multiplication Factor bit 3 position. */ +#define OSC_PLLFAC4_bm (1<<4) /* Multiplication Factor bit 4 mask. */ +#define OSC_PLLFAC4_bp 4 /* Multiplication Factor bit 4 position. */ + + +/* OSC.DFLLCTRL bit masks and bit positions */ +#define OSC_RC32MCREF_bm 0x02 /* 32MHz Calibration Reference bit mask. */ +#define OSC_RC32MCREF_bp 1 /* 32MHz Calibration Reference bit position. */ + +#define OSC_RC2MCREF_bm 0x01 /* 2MHz Calibration Reference bit mask. */ +#define OSC_RC2MCREF_bp 0 /* 2MHz Calibration Reference bit position. */ + + +/* DFLL - DFLL */ +/* DFLL.CTRL bit masks and bit positions */ +#define DFLL_ENABLE_bm 0x01 /* DFLL Enable bit mask. */ +#define DFLL_ENABLE_bp 0 /* DFLL Enable bit position. */ + + +/* DFLL.CALA bit masks and bit positions */ +#define DFLL_CALL_gm 0x7F /* DFLL Calibration bits [6:0] group mask. */ +#define DFLL_CALL_gp 0 /* DFLL Calibration bits [6:0] group position. */ +#define DFLL_CALL0_bm (1<<0) /* DFLL Calibration bits [6:0] bit 0 mask. */ +#define DFLL_CALL0_bp 0 /* DFLL Calibration bits [6:0] bit 0 position. */ +#define DFLL_CALL1_bm (1<<1) /* DFLL Calibration bits [6:0] bit 1 mask. */ +#define DFLL_CALL1_bp 1 /* DFLL Calibration bits [6:0] bit 1 position. */ +#define DFLL_CALL2_bm (1<<2) /* DFLL Calibration bits [6:0] bit 2 mask. */ +#define DFLL_CALL2_bp 2 /* DFLL Calibration bits [6:0] bit 2 position. */ +#define DFLL_CALL3_bm (1<<3) /* DFLL Calibration bits [6:0] bit 3 mask. */ +#define DFLL_CALL3_bp 3 /* DFLL Calibration bits [6:0] bit 3 position. */ +#define DFLL_CALL4_bm (1<<4) /* DFLL Calibration bits [6:0] bit 4 mask. */ +#define DFLL_CALL4_bp 4 /* DFLL Calibration bits [6:0] bit 4 position. */ +#define DFLL_CALL5_bm (1<<5) /* DFLL Calibration bits [6:0] bit 5 mask. */ +#define DFLL_CALL5_bp 5 /* DFLL Calibration bits [6:0] bit 5 position. */ +#define DFLL_CALL6_bm (1<<6) /* DFLL Calibration bits [6:0] bit 6 mask. */ +#define DFLL_CALL6_bp 6 /* DFLL Calibration bits [6:0] bit 6 position. */ + + +/* DFLL.CALB bit masks and bit positions */ +#define DFLL_CALH_gm 0x3F /* DFLL Calibration bits [12:7] group mask. */ +#define DFLL_CALH_gp 0 /* DFLL Calibration bits [12:7] group position. */ +#define DFLL_CALH0_bm (1<<0) /* DFLL Calibration bits [12:7] bit 0 mask. */ +#define DFLL_CALH0_bp 0 /* DFLL Calibration bits [12:7] bit 0 position. */ +#define DFLL_CALH1_bm (1<<1) /* DFLL Calibration bits [12:7] bit 1 mask. */ +#define DFLL_CALH1_bp 1 /* DFLL Calibration bits [12:7] bit 1 position. */ +#define DFLL_CALH2_bm (1<<2) /* DFLL Calibration bits [12:7] bit 2 mask. */ +#define DFLL_CALH2_bp 2 /* DFLL Calibration bits [12:7] bit 2 position. */ +#define DFLL_CALH3_bm (1<<3) /* DFLL Calibration bits [12:7] bit 3 mask. */ +#define DFLL_CALH3_bp 3 /* DFLL Calibration bits [12:7] bit 3 position. */ +#define DFLL_CALH4_bm (1<<4) /* DFLL Calibration bits [12:7] bit 4 mask. */ +#define DFLL_CALH4_bp 4 /* DFLL Calibration bits [12:7] bit 4 position. */ +#define DFLL_CALH5_bm (1<<5) /* DFLL Calibration bits [12:7] bit 5 mask. */ +#define DFLL_CALH5_bp 5 /* DFLL Calibration bits [12:7] bit 5 position. */ + + +/* RST - Reset */ +/* RST.STATUS bit masks and bit positions */ +#define RST_SDRF_bm 0x40 /* Spike Detection Reset Flag bit mask. */ +#define RST_SDRF_bp 6 /* Spike Detection Reset Flag bit position. */ + +#define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ +#define RST_SRF_bp 5 /* Software Reset Flag bit position. */ + +#define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ +#define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ + +#define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ +#define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ + +#define RST_BORF_bm 0x04 /* Brown-out Reset Flag bit mask. */ +#define RST_BORF_bp 2 /* Brown-out Reset Flag bit position. */ + +#define RST_EXTRF_bm 0x02 /* External Reset Flag bit mask. */ +#define RST_EXTRF_bp 1 /* External Reset Flag bit position. */ + +#define RST_PORF_bm 0x01 /* Power-on Reset Flag bit mask. */ +#define RST_PORF_bp 0 /* Power-on Reset Flag bit position. */ + + +/* RST.CTRL bit masks and bit positions */ +#define RST_SWRST_bm 0x01 /* Software Reset bit mask. */ +#define RST_SWRST_bp 0 /* Software Reset bit position. */ + + +/* WDT - Watch-Dog Timer */ +/* WDT.CTRL bit masks and bit positions */ +#define WDT_PER_gm 0x3C /* Period group mask. */ +#define WDT_PER_gp 2 /* Period group position. */ +#define WDT_PER0_bm (1<<2) /* Period bit 0 mask. */ +#define WDT_PER0_bp 2 /* Period bit 0 position. */ +#define WDT_PER1_bm (1<<3) /* Period bit 1 mask. */ +#define WDT_PER1_bp 3 /* Period bit 1 position. */ +#define WDT_PER2_bm (1<<4) /* Period bit 2 mask. */ +#define WDT_PER2_bp 4 /* Period bit 2 position. */ +#define WDT_PER3_bm (1<<5) /* Period bit 3 mask. */ +#define WDT_PER3_bp 5 /* Period bit 3 position. */ + +#define WDT_ENABLE_bm 0x02 /* Enable bit mask. */ +#define WDT_ENABLE_bp 1 /* Enable bit position. */ + +#define WDT_CEN_bm 0x01 /* Change Enable bit mask. */ +#define WDT_CEN_bp 0 /* Change Enable bit position. */ + + +/* WDT.WINCTRL bit masks and bit positions */ +#define WDT_WPER_gm 0x3C /* Windowed Mode Period group mask. */ +#define WDT_WPER_gp 2 /* Windowed Mode Period group position. */ +#define WDT_WPER0_bm (1<<2) /* Windowed Mode Period bit 0 mask. */ +#define WDT_WPER0_bp 2 /* Windowed Mode Period bit 0 position. */ +#define WDT_WPER1_bm (1<<3) /* Windowed Mode Period bit 1 mask. */ +#define WDT_WPER1_bp 3 /* Windowed Mode Period bit 1 position. */ +#define WDT_WPER2_bm (1<<4) /* Windowed Mode Period bit 2 mask. */ +#define WDT_WPER2_bp 4 /* Windowed Mode Period bit 2 position. */ +#define WDT_WPER3_bm (1<<5) /* Windowed Mode Period bit 3 mask. */ +#define WDT_WPER3_bp 5 /* Windowed Mode Period bit 3 position. */ + +#define WDT_WEN_bm 0x02 /* Windowed Mode Enable bit mask. */ +#define WDT_WEN_bp 1 /* Windowed Mode Enable bit position. */ + +#define WDT_WCEN_bm 0x01 /* Windowed Mode Change Enable bit mask. */ +#define WDT_WCEN_bp 0 /* Windowed Mode Change Enable bit position. */ + + +/* WDT.STATUS bit masks and bit positions */ +#define WDT_SYNCBUSY_bm 0x01 /* Syncronization busy bit mask. */ +#define WDT_SYNCBUSY_bp 0 /* Syncronization busy bit position. */ + + +/* MCU - MCU Control */ +/* MCU.MCUCR bit masks and bit positions */ +#define MCU_JTAGD_bm 0x01 /* JTAG Disable bit mask. */ +#define MCU_JTAGD_bp 0 /* JTAG Disable bit position. */ + + +/* MCU.EVSYSLOCK bit masks and bit positions */ +#define MCU_EVSYS1LOCK_bm 0x10 /* Event Channel 4-7 Lock bit mask. */ +#define MCU_EVSYS1LOCK_bp 4 /* Event Channel 4-7 Lock bit position. */ + +#define MCU_EVSYS0LOCK_bm 0x01 /* Event Channel 0-3 Lock bit mask. */ +#define MCU_EVSYS0LOCK_bp 0 /* Event Channel 0-3 Lock bit position. */ + + +/* MCU.AWEXLOCK bit masks and bit positions */ +#define MCU_AWEXELOCK_bm 0x04 /* AWeX on T/C E0 Lock bit mask. */ +#define MCU_AWEXELOCK_bp 2 /* AWeX on T/C E0 Lock bit position. */ + +#define MCU_AWEXCLOCK_bm 0x01 /* AWeX on T/C C0 Lock bit mask. */ +#define MCU_AWEXCLOCK_bp 0 /* AWeX on T/C C0 Lock bit position. */ + + +/* PMIC - Programmable Multi-level Interrupt Controller */ +/* PMIC.STATUS bit masks and bit positions */ +#define PMIC_NMIEX_bm 0x80 /* Non-maskable Interrupt Executing bit mask. */ +#define PMIC_NMIEX_bp 7 /* Non-maskable Interrupt Executing bit position. */ + +#define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ +#define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ + +#define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ +#define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ + +#define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ +#define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ + + +/* PMIC.CTRL bit masks and bit positions */ +#define PMIC_RREN_bm 0x80 /* Round-Robin Priority Enable bit mask. */ +#define PMIC_RREN_bp 7 /* Round-Robin Priority Enable bit position. */ + +#define PMIC_IVSEL_bm 0x40 /* Interrupt Vector Select bit mask. */ +#define PMIC_IVSEL_bp 6 /* Interrupt Vector Select bit position. */ + +#define PMIC_HILVLEN_bm 0x04 /* High Level Enable bit mask. */ +#define PMIC_HILVLEN_bp 2 /* High Level Enable bit position. */ + +#define PMIC_MEDLVLEN_bm 0x02 /* Medium Level Enable bit mask. */ +#define PMIC_MEDLVLEN_bp 1 /* Medium Level Enable bit position. */ + +#define PMIC_LOLVLEN_bm 0x01 /* Low Level Enable bit mask. */ +#define PMIC_LOLVLEN_bp 0 /* Low Level Enable bit position. */ + + +/* DMA - DMA Controller */ +/* DMA_CH.CTRLA bit masks and bit positions */ +#define DMA_CH_ENABLE_bm 0x80 /* Channel Enable bit mask. */ +#define DMA_CH_ENABLE_bp 7 /* Channel Enable bit position. */ + +#define DMA_CH_RESET_bm 0x40 /* Channel Software Reset bit mask. */ +#define DMA_CH_RESET_bp 6 /* Channel Software Reset bit position. */ + +#define DMA_CH_REPEAT_bm 0x20 /* Channel Repeat Mode bit mask. */ +#define DMA_CH_REPEAT_bp 5 /* Channel Repeat Mode bit position. */ + +#define DMA_CH_TRFREQ_bm 0x10 /* Channel Transfer Request bit mask. */ +#define DMA_CH_TRFREQ_bp 4 /* Channel Transfer Request bit position. */ + +#define DMA_CH_SINGLE_bm 0x04 /* Channel Single Shot Data Transfer bit mask. */ +#define DMA_CH_SINGLE_bp 2 /* Channel Single Shot Data Transfer bit position. */ + +#define DMA_CH_BURSTLEN_gm 0x03 /* Channel Transfer Mode group mask. */ +#define DMA_CH_BURSTLEN_gp 0 /* Channel Transfer Mode group position. */ +#define DMA_CH_BURSTLEN0_bm (1<<0) /* Channel Transfer Mode bit 0 mask. */ +#define DMA_CH_BURSTLEN0_bp 0 /* Channel Transfer Mode bit 0 position. */ +#define DMA_CH_BURSTLEN1_bm (1<<1) /* Channel Transfer Mode bit 1 mask. */ +#define DMA_CH_BURSTLEN1_bp 1 /* Channel Transfer Mode bit 1 position. */ + + +/* DMA_CH.CTRLB bit masks and bit positions */ +#define DMA_CH_CHBUSY_bm 0x80 /* Block Transfer Busy bit mask. */ +#define DMA_CH_CHBUSY_bp 7 /* Block Transfer Busy bit position. */ + +#define DMA_CH_CHPEND_bm 0x40 /* Block Transfer Pending bit mask. */ +#define DMA_CH_CHPEND_bp 6 /* Block Transfer Pending bit position. */ + +#define DMA_CH_ERRIF_bm 0x20 /* Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH_ERRIF_bp 5 /* Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ + +#define DMA_CH_ERRINTLVL_gm 0x0C /* Transfer Error Interrupt Level group mask. */ +#define DMA_CH_ERRINTLVL_gp 2 /* Transfer Error Interrupt Level group position. */ +#define DMA_CH_ERRINTLVL0_bm (1<<2) /* Transfer Error Interrupt Level bit 0 mask. */ +#define DMA_CH_ERRINTLVL0_bp 2 /* Transfer Error Interrupt Level bit 0 position. */ +#define DMA_CH_ERRINTLVL1_bm (1<<3) /* Transfer Error Interrupt Level bit 1 mask. */ +#define DMA_CH_ERRINTLVL1_bp 3 /* Transfer Error Interrupt Level bit 1 position. */ + +#define DMA_CH_TRNINTLVL_gm 0x03 /* Transaction Complete Interrupt Level group mask. */ +#define DMA_CH_TRNINTLVL_gp 0 /* Transaction Complete Interrupt Level group position. */ +#define DMA_CH_TRNINTLVL0_bm (1<<0) /* Transaction Complete Interrupt Level bit 0 mask. */ +#define DMA_CH_TRNINTLVL0_bp 0 /* Transaction Complete Interrupt Level bit 0 position. */ +#define DMA_CH_TRNINTLVL1_bm (1<<1) /* Transaction Complete Interrupt Level bit 1 mask. */ +#define DMA_CH_TRNINTLVL1_bp 1 /* Transaction Complete Interrupt Level bit 1 position. */ + + +/* DMA_CH.ADDRCTRL bit masks and bit positions */ +#define DMA_CH_SRCRELOAD_gm 0xC0 /* Channel Source Address Reload group mask. */ +#define DMA_CH_SRCRELOAD_gp 6 /* Channel Source Address Reload group position. */ +#define DMA_CH_SRCRELOAD0_bm (1<<6) /* Channel Source Address Reload bit 0 mask. */ +#define DMA_CH_SRCRELOAD0_bp 6 /* Channel Source Address Reload bit 0 position. */ +#define DMA_CH_SRCRELOAD1_bm (1<<7) /* Channel Source Address Reload bit 1 mask. */ +#define DMA_CH_SRCRELOAD1_bp 7 /* Channel Source Address Reload bit 1 position. */ + +#define DMA_CH_SRCDIR_gm 0x30 /* Channel Source Address Mode group mask. */ +#define DMA_CH_SRCDIR_gp 4 /* Channel Source Address Mode group position. */ +#define DMA_CH_SRCDIR0_bm (1<<4) /* Channel Source Address Mode bit 0 mask. */ +#define DMA_CH_SRCDIR0_bp 4 /* Channel Source Address Mode bit 0 position. */ +#define DMA_CH_SRCDIR1_bm (1<<5) /* Channel Source Address Mode bit 1 mask. */ +#define DMA_CH_SRCDIR1_bp 5 /* Channel Source Address Mode bit 1 position. */ + +#define DMA_CH_DESTRELOAD_gm 0x0C /* Channel Destination Address Reload group mask. */ +#define DMA_CH_DESTRELOAD_gp 2 /* Channel Destination Address Reload group position. */ +#define DMA_CH_DESTRELOAD0_bm (1<<2) /* Channel Destination Address Reload bit 0 mask. */ +#define DMA_CH_DESTRELOAD0_bp 2 /* Channel Destination Address Reload bit 0 position. */ +#define DMA_CH_DESTRELOAD1_bm (1<<3) /* Channel Destination Address Reload bit 1 mask. */ +#define DMA_CH_DESTRELOAD1_bp 3 /* Channel Destination Address Reload bit 1 position. */ + +#define DMA_CH_DESTDIR_gm 0x03 /* Channel Destination Address Mode group mask. */ +#define DMA_CH_DESTDIR_gp 0 /* Channel Destination Address Mode group position. */ +#define DMA_CH_DESTDIR0_bm (1<<0) /* Channel Destination Address Mode bit 0 mask. */ +#define DMA_CH_DESTDIR0_bp 0 /* Channel Destination Address Mode bit 0 position. */ +#define DMA_CH_DESTDIR1_bm (1<<1) /* Channel Destination Address Mode bit 1 mask. */ +#define DMA_CH_DESTDIR1_bp 1 /* Channel Destination Address Mode bit 1 position. */ + + +/* DMA_CH.TRIGSRC bit masks and bit positions */ +#define DMA_CH_TRIGSRC_gm 0xFF /* Channel Trigger Source group mask. */ +#define DMA_CH_TRIGSRC_gp 0 /* Channel Trigger Source group position. */ +#define DMA_CH_TRIGSRC0_bm (1<<0) /* Channel Trigger Source bit 0 mask. */ +#define DMA_CH_TRIGSRC0_bp 0 /* Channel Trigger Source bit 0 position. */ +#define DMA_CH_TRIGSRC1_bm (1<<1) /* Channel Trigger Source bit 1 mask. */ +#define DMA_CH_TRIGSRC1_bp 1 /* Channel Trigger Source bit 1 position. */ +#define DMA_CH_TRIGSRC2_bm (1<<2) /* Channel Trigger Source bit 2 mask. */ +#define DMA_CH_TRIGSRC2_bp 2 /* Channel Trigger Source bit 2 position. */ +#define DMA_CH_TRIGSRC3_bm (1<<3) /* Channel Trigger Source bit 3 mask. */ +#define DMA_CH_TRIGSRC3_bp 3 /* Channel Trigger Source bit 3 position. */ +#define DMA_CH_TRIGSRC4_bm (1<<4) /* Channel Trigger Source bit 4 mask. */ +#define DMA_CH_TRIGSRC4_bp 4 /* Channel Trigger Source bit 4 position. */ +#define DMA_CH_TRIGSRC5_bm (1<<5) /* Channel Trigger Source bit 5 mask. */ +#define DMA_CH_TRIGSRC5_bp 5 /* Channel Trigger Source bit 5 position. */ +#define DMA_CH_TRIGSRC6_bm (1<<6) /* Channel Trigger Source bit 6 mask. */ +#define DMA_CH_TRIGSRC6_bp 6 /* Channel Trigger Source bit 6 position. */ +#define DMA_CH_TRIGSRC7_bm (1<<7) /* Channel Trigger Source bit 7 mask. */ +#define DMA_CH_TRIGSRC7_bp 7 /* Channel Trigger Source bit 7 position. */ + + +/* DMA.CTRL bit masks and bit positions */ +#define DMA_ENABLE_bm 0x80 /* Enable bit mask. */ +#define DMA_ENABLE_bp 7 /* Enable bit position. */ + +#define DMA_RESET_bm 0x40 /* Software Reset bit mask. */ +#define DMA_RESET_bp 6 /* Software Reset bit position. */ + +#define DMA_DBUFMODE_gm 0x0C /* Double Buffering Mode group mask. */ +#define DMA_DBUFMODE_gp 2 /* Double Buffering Mode group position. */ +#define DMA_DBUFMODE0_bm (1<<2) /* Double Buffering Mode bit 0 mask. */ +#define DMA_DBUFMODE0_bp 2 /* Double Buffering Mode bit 0 position. */ +#define DMA_DBUFMODE1_bm (1<<3) /* Double Buffering Mode bit 1 mask. */ +#define DMA_DBUFMODE1_bp 3 /* Double Buffering Mode bit 1 position. */ + +#define DMA_PRIMODE_gm 0x03 /* Channel Priority Mode group mask. */ +#define DMA_PRIMODE_gp 0 /* Channel Priority Mode group position. */ +#define DMA_PRIMODE0_bm (1<<0) /* Channel Priority Mode bit 0 mask. */ +#define DMA_PRIMODE0_bp 0 /* Channel Priority Mode bit 0 position. */ +#define DMA_PRIMODE1_bm (1<<1) /* Channel Priority Mode bit 1 mask. */ +#define DMA_PRIMODE1_bp 1 /* Channel Priority Mode bit 1 position. */ + + +/* DMA.INTFLAGS bit masks and bit positions */ +#define DMA_CH3ERRIF_bm 0x80 /* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH3ERRIF_bp 7 /* Channel 3 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH2ERRIF_bm 0x40 /* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH2ERRIF_bp 6 /* Channel 2 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH1ERRIF_bm 0x20 /* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH1ERRIF_bp 5 /* Channel 1 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH0ERRIF_bm 0x10 /* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH0ERRIF_bp 4 /* Channel 0 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH3TRNIF_bm 0x08 /* Channel 3 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH3TRNIF_bp 3 /* Channel 3 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH2TRNIF_bm 0x04 /* Channel 2 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH2TRNIF_bp 2 /* Channel 2 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH1TRNIF_bm 0x02 /* Channel 1 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH1TRNIF_bp 1 /* Channel 1 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH0TRNIF_bm 0x01 /* Channel 0 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH0TRNIF_bp 0 /* Channel 0 Transaction Complete Interrupt Flag bit position. */ + + +/* DMA.STATUS bit masks and bit positions */ +#define DMA_CH3BUSY_bm 0x80 /* Channel 3 Block Transfer Busy bit mask. */ +#define DMA_CH3BUSY_bp 7 /* Channel 3 Block Transfer Busy bit position. */ + +#define DMA_CH2BUSY_bm 0x40 /* Channel 2 Block Transfer Busy bit mask. */ +#define DMA_CH2BUSY_bp 6 /* Channel 2 Block Transfer Busy bit position. */ + +#define DMA_CH1BUSY_bm 0x20 /* Channel 1 Block Transfer Busy bit mask. */ +#define DMA_CH1BUSY_bp 5 /* Channel 1 Block Transfer Busy bit position. */ + +#define DMA_CH0BUSY_bm 0x10 /* Channel 0 Block Transfer Busy bit mask. */ +#define DMA_CH0BUSY_bp 4 /* Channel 0 Block Transfer Busy bit position. */ + +#define DMA_CH3PEND_bm 0x08 /* Channel 3 Block Transfer Pending bit mask. */ +#define DMA_CH3PEND_bp 3 /* Channel 3 Block Transfer Pending bit position. */ + +#define DMA_CH2PEND_bm 0x04 /* Channel 2 Block Transfer Pending bit mask. */ +#define DMA_CH2PEND_bp 2 /* Channel 2 Block Transfer Pending bit position. */ + +#define DMA_CH1PEND_bm 0x02 /* Channel 1 Block Transfer Pending bit mask. */ +#define DMA_CH1PEND_bp 1 /* Channel 1 Block Transfer Pending bit position. */ + +#define DMA_CH0PEND_bm 0x01 /* Channel 0 Block Transfer Pending bit mask. */ +#define DMA_CH0PEND_bp 0 /* Channel 0 Block Transfer Pending bit position. */ + + +/* EVSYS - Event System */ +/* EVSYS.CH0MUX bit masks and bit positions */ +#define EVSYS_CHMUX_gm 0xFF /* Event Channel 0 Multiplexer group mask. */ +#define EVSYS_CHMUX_gp 0 /* Event Channel 0 Multiplexer group position. */ +#define EVSYS_CHMUX0_bm (1<<0) /* Event Channel 0 Multiplexer bit 0 mask. */ +#define EVSYS_CHMUX0_bp 0 /* Event Channel 0 Multiplexer bit 0 position. */ +#define EVSYS_CHMUX1_bm (1<<1) /* Event Channel 0 Multiplexer bit 1 mask. */ +#define EVSYS_CHMUX1_bp 1 /* Event Channel 0 Multiplexer bit 1 position. */ +#define EVSYS_CHMUX2_bm (1<<2) /* Event Channel 0 Multiplexer bit 2 mask. */ +#define EVSYS_CHMUX2_bp 2 /* Event Channel 0 Multiplexer bit 2 position. */ +#define EVSYS_CHMUX3_bm (1<<3) /* Event Channel 0 Multiplexer bit 3 mask. */ +#define EVSYS_CHMUX3_bp 3 /* Event Channel 0 Multiplexer bit 3 position. */ +#define EVSYS_CHMUX4_bm (1<<4) /* Event Channel 0 Multiplexer bit 4 mask. */ +#define EVSYS_CHMUX4_bp 4 /* Event Channel 0 Multiplexer bit 4 position. */ +#define EVSYS_CHMUX5_bm (1<<5) /* Event Channel 0 Multiplexer bit 5 mask. */ +#define EVSYS_CHMUX5_bp 5 /* Event Channel 0 Multiplexer bit 5 position. */ +#define EVSYS_CHMUX6_bm (1<<6) /* Event Channel 0 Multiplexer bit 6 mask. */ +#define EVSYS_CHMUX6_bp 6 /* Event Channel 0 Multiplexer bit 6 position. */ +#define EVSYS_CHMUX7_bm (1<<7) /* Event Channel 0 Multiplexer bit 7 mask. */ +#define EVSYS_CHMUX7_bp 7 /* Event Channel 0 Multiplexer bit 7 position. */ + + +/* EVSYS.CH1MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH2MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH3MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH4MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH5MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH6MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH7MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH0CTRL bit masks and bit positions */ +#define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ +#define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ +#define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ +#define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ +#define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ +#define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ + +#define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ +#define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ + +#define EVSYS_QDEN_bm 0x08 /* Quadrature Decoder Enable bit mask. */ +#define EVSYS_QDEN_bp 3 /* Quadrature Decoder Enable bit position. */ + +#define EVSYS_DIGFILT_gm 0x07 /* Digital Filter group mask. */ +#define EVSYS_DIGFILT_gp 0 /* Digital Filter group position. */ +#define EVSYS_DIGFILT0_bm (1<<0) /* Digital Filter bit 0 mask. */ +#define EVSYS_DIGFILT0_bp 0 /* Digital Filter bit 0 position. */ +#define EVSYS_DIGFILT1_bm (1<<1) /* Digital Filter bit 1 mask. */ +#define EVSYS_DIGFILT1_bp 1 /* Digital Filter bit 1 position. */ +#define EVSYS_DIGFILT2_bm (1<<2) /* Digital Filter bit 2 mask. */ +#define EVSYS_DIGFILT2_bp 2 /* Digital Filter bit 2 position. */ + + +/* EVSYS.CH1CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH2CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH3CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH4CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH5CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH6CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH7CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* NVM - Non Volatile Memory Controller */ +/* NVM.CMD bit masks and bit positions */ +#define NVM_CMD_gm 0xFF /* Command group mask. */ +#define NVM_CMD_gp 0 /* Command group position. */ +#define NVM_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define NVM_CMD0_bp 0 /* Command bit 0 position. */ +#define NVM_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define NVM_CMD1_bp 1 /* Command bit 1 position. */ +#define NVM_CMD2_bm (1<<2) /* Command bit 2 mask. */ +#define NVM_CMD2_bp 2 /* Command bit 2 position. */ +#define NVM_CMD3_bm (1<<3) /* Command bit 3 mask. */ +#define NVM_CMD3_bp 3 /* Command bit 3 position. */ +#define NVM_CMD4_bm (1<<4) /* Command bit 4 mask. */ +#define NVM_CMD4_bp 4 /* Command bit 4 position. */ +#define NVM_CMD5_bm (1<<5) /* Command bit 5 mask. */ +#define NVM_CMD5_bp 5 /* Command bit 5 position. */ +#define NVM_CMD6_bm (1<<6) /* Command bit 6 mask. */ +#define NVM_CMD6_bp 6 /* Command bit 6 position. */ +#define NVM_CMD7_bm (1<<7) /* Command bit 7 mask. */ +#define NVM_CMD7_bp 7 /* Command bit 7 position. */ + + +/* NVM.CTRLA bit masks and bit positions */ +#define NVM_CMDEX_bm 0x01 /* Command Execute bit mask. */ +#define NVM_CMDEX_bp 0 /* Command Execute bit position. */ + + +/* NVM.CTRLB bit masks and bit positions */ +#define NVM_EEMAPEN_bm 0x08 /* EEPROM Mapping Enable bit mask. */ +#define NVM_EEMAPEN_bp 3 /* EEPROM Mapping Enable bit position. */ + +#define NVM_FPRM_bm 0x04 /* Flash Power Reduction Enable bit mask. */ +#define NVM_FPRM_bp 2 /* Flash Power Reduction Enable bit position. */ + +#define NVM_EPRM_bm 0x02 /* EEPROM Power Reduction Enable bit mask. */ +#define NVM_EPRM_bp 1 /* EEPROM Power Reduction Enable bit position. */ + +#define NVM_SPMLOCK_bm 0x01 /* SPM Lock bit mask. */ +#define NVM_SPMLOCK_bp 0 /* SPM Lock bit position. */ + + +/* NVM.INTCTRL bit masks and bit positions */ +#define NVM_SPMLVL_gm 0x0C /* SPM Interrupt Level group mask. */ +#define NVM_SPMLVL_gp 2 /* SPM Interrupt Level group position. */ +#define NVM_SPMLVL0_bm (1<<2) /* SPM Interrupt Level bit 0 mask. */ +#define NVM_SPMLVL0_bp 2 /* SPM Interrupt Level bit 0 position. */ +#define NVM_SPMLVL1_bm (1<<3) /* SPM Interrupt Level bit 1 mask. */ +#define NVM_SPMLVL1_bp 3 /* SPM Interrupt Level bit 1 position. */ + +#define NVM_EELVL_gm 0x03 /* EEPROM Interrupt Level group mask. */ +#define NVM_EELVL_gp 0 /* EEPROM Interrupt Level group position. */ +#define NVM_EELVL0_bm (1<<0) /* EEPROM Interrupt Level bit 0 mask. */ +#define NVM_EELVL0_bp 0 /* EEPROM Interrupt Level bit 0 position. */ +#define NVM_EELVL1_bm (1<<1) /* EEPROM Interrupt Level bit 1 mask. */ +#define NVM_EELVL1_bp 1 /* EEPROM Interrupt Level bit 1 position. */ + + +/* NVM.STATUS bit masks and bit positions */ +#define NVM_NVMBUSY_bm 0x80 /* Non-volatile Memory Busy bit mask. */ +#define NVM_NVMBUSY_bp 7 /* Non-volatile Memory Busy bit position. */ + +#define NVM_FBUSY_bm 0x40 /* Flash Memory Busy bit mask. */ +#define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ + +#define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ +#define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ + +#define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ +#define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ + + +/* NVM.LOCKBITS bit masks and bit positions */ +#define NVM_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ +#define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LOCKBITS_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LOCKBITS_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LOCKBITS_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LOCKBITS_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE0 bit masks and bit positions */ +#define NVM_FUSES_JTAGUSERID_gm 0xFF /* JTAG User ID group mask. */ +#define NVM_FUSES_JTAGUSERID_gp 0 /* JTAG User ID group position. */ +#define NVM_FUSES_JTAGUSERID0_bm (1<<0) /* JTAG User ID bit 0 mask. */ +#define NVM_FUSES_JTAGUSERID0_bp 0 /* JTAG User ID bit 0 position. */ +#define NVM_FUSES_JTAGUSERID1_bm (1<<1) /* JTAG User ID bit 1 mask. */ +#define NVM_FUSES_JTAGUSERID1_bp 1 /* JTAG User ID bit 1 position. */ +#define NVM_FUSES_JTAGUSERID2_bm (1<<2) /* JTAG User ID bit 2 mask. */ +#define NVM_FUSES_JTAGUSERID2_bp 2 /* JTAG User ID bit 2 position. */ +#define NVM_FUSES_JTAGUSERID3_bm (1<<3) /* JTAG User ID bit 3 mask. */ +#define NVM_FUSES_JTAGUSERID3_bp 3 /* JTAG User ID bit 3 position. */ +#define NVM_FUSES_JTAGUSERID4_bm (1<<4) /* JTAG User ID bit 4 mask. */ +#define NVM_FUSES_JTAGUSERID4_bp 4 /* JTAG User ID bit 4 position. */ +#define NVM_FUSES_JTAGUSERID5_bm (1<<5) /* JTAG User ID bit 5 mask. */ +#define NVM_FUSES_JTAGUSERID5_bp 5 /* JTAG User ID bit 5 position. */ +#define NVM_FUSES_JTAGUSERID6_bm (1<<6) /* JTAG User ID bit 6 mask. */ +#define NVM_FUSES_JTAGUSERID6_bp 6 /* JTAG User ID bit 6 position. */ +#define NVM_FUSES_JTAGUSERID7_bm (1<<7) /* JTAG User ID bit 7 mask. */ +#define NVM_FUSES_JTAGUSERID7_bp 7 /* JTAG User ID bit 7 position. */ + + +/* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ +#define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ +#define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ +#define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ +#define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ +#define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ +#define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ + +#define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ +#define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ +#define NVM_FUSES_WDP0_bm (1<<0) /* Watchdog Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDP0_bp 0 /* Watchdog Timeout Period bit 0 position. */ +#define NVM_FUSES_WDP1_bm (1<<1) /* Watchdog Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDP1_bp 1 /* Watchdog Timeout Period bit 1 position. */ +#define NVM_FUSES_WDP2_bm (1<<2) /* Watchdog Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDP2_bp 2 /* Watchdog Timeout Period bit 2 position. */ +#define NVM_FUSES_WDP3_bm (1<<3) /* Watchdog Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDP3_bp 3 /* Watchdog Timeout Period bit 3 position. */ + + +/* NVM_FUSES.FUSEBYTE2 bit masks and bit positions */ +#define NVM_FUSES_DVSDON_bm 0x80 /* Spike Detector Enable bit mask. */ +#define NVM_FUSES_DVSDON_bp 7 /* Spike Detector Enable bit position. */ + +#define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ +#define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ + +#define NVM_FUSES_BODACT_gm 0x0C /* BOD Operation in Active Mode group mask. */ +#define NVM_FUSES_BODACT_gp 2 /* BOD Operation in Active Mode group position. */ +#define NVM_FUSES_BODACT0_bm (1<<2) /* BOD Operation in Active Mode bit 0 mask. */ +#define NVM_FUSES_BODACT0_bp 2 /* BOD Operation in Active Mode bit 0 position. */ +#define NVM_FUSES_BODACT1_bm (1<<3) /* BOD Operation in Active Mode bit 1 mask. */ +#define NVM_FUSES_BODACT1_bp 3 /* BOD Operation in Active Mode bit 1 position. */ + +#define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ +#define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ +#define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ +#define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ +#define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ +#define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ +#define NVM_FUSES_SUT_gm 0x0C /* Start-up Time group mask. */ +#define NVM_FUSES_SUT_gp 2 /* Start-up Time group position. */ +#define NVM_FUSES_SUT0_bm (1<<2) /* Start-up Time bit 0 mask. */ +#define NVM_FUSES_SUT0_bp 2 /* Start-up Time bit 0 position. */ +#define NVM_FUSES_SUT1_bm (1<<3) /* Start-up Time bit 1 mask. */ +#define NVM_FUSES_SUT1_bp 3 /* Start-up Time bit 1 position. */ + +#define NVM_FUSES_WDLOCK_bm 0x02 /* Watchdog Timer Lock bit mask. */ +#define NVM_FUSES_WDLOCK_bp 1 /* Watchdog Timer Lock bit position. */ + +#define NVM_FUSES_JTAGEN_bm 0x01 /* JTAG Interface Enable bit mask. */ +#define NVM_FUSES_JTAGEN_bp 0 /* JTAG Interface Enable bit position. */ + + +/* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ +#define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ +#define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ + +#define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ +#define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ +#define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ +#define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ +#define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ +#define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ +#define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ +#define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ + + +/* AC - Analog Comparator */ +/* AC.AC0CTRL bit masks and bit positions */ +#define AC_INTMODE_gm 0xC0 /* Interrupt Mode group mask. */ +#define AC_INTMODE_gp 6 /* Interrupt Mode group position. */ +#define AC_INTMODE0_bm (1<<6) /* Interrupt Mode bit 0 mask. */ +#define AC_INTMODE0_bp 6 /* Interrupt Mode bit 0 position. */ +#define AC_INTMODE1_bm (1<<7) /* Interrupt Mode bit 1 mask. */ +#define AC_INTMODE1_bp 7 /* Interrupt Mode bit 1 position. */ + +#define AC_INTLVL_gm 0x30 /* Interrupt Level group mask. */ +#define AC_INTLVL_gp 4 /* Interrupt Level group position. */ +#define AC_INTLVL0_bm (1<<4) /* Interrupt Level bit 0 mask. */ +#define AC_INTLVL0_bp 4 /* Interrupt Level bit 0 position. */ +#define AC_INTLVL1_bm (1<<5) /* Interrupt Level bit 1 mask. */ +#define AC_INTLVL1_bp 5 /* Interrupt Level bit 1 position. */ + +#define AC_HSMODE_bm 0x08 /* High-speed Mode bit mask. */ +#define AC_HSMODE_bp 3 /* High-speed Mode bit position. */ + +#define AC_HYSMODE_gm 0x06 /* Hysteresis Mode group mask. */ +#define AC_HYSMODE_gp 1 /* Hysteresis Mode group position. */ +#define AC_HYSMODE0_bm (1<<1) /* Hysteresis Mode bit 0 mask. */ +#define AC_HYSMODE0_bp 1 /* Hysteresis Mode bit 0 position. */ +#define AC_HYSMODE1_bm (1<<2) /* Hysteresis Mode bit 1 mask. */ +#define AC_HYSMODE1_bp 2 /* Hysteresis Mode bit 1 position. */ + +#define AC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define AC_ENABLE_bp 0 /* Enable bit position. */ + + +/* AC.AC1CTRL bit masks and bit positions */ +/* AC_INTMODE_gm Predefined. */ +/* AC_INTMODE_gp Predefined. */ +/* AC_INTMODE0_bm Predefined. */ +/* AC_INTMODE0_bp Predefined. */ +/* AC_INTMODE1_bm Predefined. */ +/* AC_INTMODE1_bp Predefined. */ + +/* AC_INTLVL_gm Predefined. */ +/* AC_INTLVL_gp Predefined. */ +/* AC_INTLVL0_bm Predefined. */ +/* AC_INTLVL0_bp Predefined. */ +/* AC_INTLVL1_bm Predefined. */ +/* AC_INTLVL1_bp Predefined. */ + +/* AC_HSMODE_bm Predefined. */ +/* AC_HSMODE_bp Predefined. */ + +/* AC_HYSMODE_gm Predefined. */ +/* AC_HYSMODE_gp Predefined. */ +/* AC_HYSMODE0_bm Predefined. */ +/* AC_HYSMODE0_bp Predefined. */ +/* AC_HYSMODE1_bm Predefined. */ +/* AC_HYSMODE1_bp Predefined. */ + +/* AC_ENABLE_bm Predefined. */ +/* AC_ENABLE_bp Predefined. */ + + +/* AC.AC0MUXCTRL bit masks and bit positions */ +#define AC_MUXPOS_gm 0x38 /* MUX Positive Input group mask. */ +#define AC_MUXPOS_gp 3 /* MUX Positive Input group position. */ +#define AC_MUXPOS0_bm (1<<3) /* MUX Positive Input bit 0 mask. */ +#define AC_MUXPOS0_bp 3 /* MUX Positive Input bit 0 position. */ +#define AC_MUXPOS1_bm (1<<4) /* MUX Positive Input bit 1 mask. */ +#define AC_MUXPOS1_bp 4 /* MUX Positive Input bit 1 position. */ +#define AC_MUXPOS2_bm (1<<5) /* MUX Positive Input bit 2 mask. */ +#define AC_MUXPOS2_bp 5 /* MUX Positive Input bit 2 position. */ + +#define AC_MUXNEG_gm 0x07 /* MUX Negative Input group mask. */ +#define AC_MUXNEG_gp 0 /* MUX Negative Input group position. */ +#define AC_MUXNEG0_bm (1<<0) /* MUX Negative Input bit 0 mask. */ +#define AC_MUXNEG0_bp 0 /* MUX Negative Input bit 0 position. */ +#define AC_MUXNEG1_bm (1<<1) /* MUX Negative Input bit 1 mask. */ +#define AC_MUXNEG1_bp 1 /* MUX Negative Input bit 1 position. */ +#define AC_MUXNEG2_bm (1<<2) /* MUX Negative Input bit 2 mask. */ +#define AC_MUXNEG2_bp 2 /* MUX Negative Input bit 2 position. */ + + +/* AC.AC1MUXCTRL bit masks and bit positions */ +/* AC_MUXPOS_gm Predefined. */ +/* AC_MUXPOS_gp Predefined. */ +/* AC_MUXPOS0_bm Predefined. */ +/* AC_MUXPOS0_bp Predefined. */ +/* AC_MUXPOS1_bm Predefined. */ +/* AC_MUXPOS1_bp Predefined. */ +/* AC_MUXPOS2_bm Predefined. */ +/* AC_MUXPOS2_bp Predefined. */ + +/* AC_MUXNEG_gm Predefined. */ +/* AC_MUXNEG_gp Predefined. */ +/* AC_MUXNEG0_bm Predefined. */ +/* AC_MUXNEG0_bp Predefined. */ +/* AC_MUXNEG1_bm Predefined. */ +/* AC_MUXNEG1_bp Predefined. */ +/* AC_MUXNEG2_bm Predefined. */ +/* AC_MUXNEG2_bp Predefined. */ + + +/* AC.CTRLA bit masks and bit positions */ +#define AC_AC0OUT_bm 0x01 /* Comparator 0 Output Enable bit mask. */ +#define AC_AC0OUT_bp 0 /* Comparator 0 Output Enable bit position. */ + + +/* AC.CTRLB bit masks and bit positions */ +#define AC_SCALEFAC_gm 0x3F /* VCC Voltage Scaler Factor group mask. */ +#define AC_SCALEFAC_gp 0 /* VCC Voltage Scaler Factor group position. */ +#define AC_SCALEFAC0_bm (1<<0) /* VCC Voltage Scaler Factor bit 0 mask. */ +#define AC_SCALEFAC0_bp 0 /* VCC Voltage Scaler Factor bit 0 position. */ +#define AC_SCALEFAC1_bm (1<<1) /* VCC Voltage Scaler Factor bit 1 mask. */ +#define AC_SCALEFAC1_bp 1 /* VCC Voltage Scaler Factor bit 1 position. */ +#define AC_SCALEFAC2_bm (1<<2) /* VCC Voltage Scaler Factor bit 2 mask. */ +#define AC_SCALEFAC2_bp 2 /* VCC Voltage Scaler Factor bit 2 position. */ +#define AC_SCALEFAC3_bm (1<<3) /* VCC Voltage Scaler Factor bit 3 mask. */ +#define AC_SCALEFAC3_bp 3 /* VCC Voltage Scaler Factor bit 3 position. */ +#define AC_SCALEFAC4_bm (1<<4) /* VCC Voltage Scaler Factor bit 4 mask. */ +#define AC_SCALEFAC4_bp 4 /* VCC Voltage Scaler Factor bit 4 position. */ +#define AC_SCALEFAC5_bm (1<<5) /* VCC Voltage Scaler Factor bit 5 mask. */ +#define AC_SCALEFAC5_bp 5 /* VCC Voltage Scaler Factor bit 5 position. */ + + +/* AC.WINCTRL bit masks and bit positions */ +#define AC_WEN_bm 0x10 /* Window Mode Enable bit mask. */ +#define AC_WEN_bp 4 /* Window Mode Enable bit position. */ + +#define AC_WINTMODE_gm 0x0C /* Window Interrupt Mode group mask. */ +#define AC_WINTMODE_gp 2 /* Window Interrupt Mode group position. */ +#define AC_WINTMODE0_bm (1<<2) /* Window Interrupt Mode bit 0 mask. */ +#define AC_WINTMODE0_bp 2 /* Window Interrupt Mode bit 0 position. */ +#define AC_WINTMODE1_bm (1<<3) /* Window Interrupt Mode bit 1 mask. */ +#define AC_WINTMODE1_bp 3 /* Window Interrupt Mode bit 1 position. */ + +#define AC_WINTLVL_gm 0x03 /* Window Interrupt Level group mask. */ +#define AC_WINTLVL_gp 0 /* Window Interrupt Level group position. */ +#define AC_WINTLVL0_bm (1<<0) /* Window Interrupt Level bit 0 mask. */ +#define AC_WINTLVL0_bp 0 /* Window Interrupt Level bit 0 position. */ +#define AC_WINTLVL1_bm (1<<1) /* Window Interrupt Level bit 1 mask. */ +#define AC_WINTLVL1_bp 1 /* Window Interrupt Level bit 1 position. */ + + +/* AC.STATUS bit masks and bit positions */ +#define AC_WSTATE_gm 0xC0 /* Window Mode State group mask. */ +#define AC_WSTATE_gp 6 /* Window Mode State group position. */ +#define AC_WSTATE0_bm (1<<6) /* Window Mode State bit 0 mask. */ +#define AC_WSTATE0_bp 6 /* Window Mode State bit 0 position. */ +#define AC_WSTATE1_bm (1<<7) /* Window Mode State bit 1 mask. */ +#define AC_WSTATE1_bp 7 /* Window Mode State bit 1 position. */ + +#define AC_AC1STATE_bm 0x20 /* Comparator 1 State bit mask. */ +#define AC_AC1STATE_bp 5 /* Comparator 1 State bit position. */ + +#define AC_AC0STATE_bm 0x10 /* Comparator 0 State bit mask. */ +#define AC_AC0STATE_bp 4 /* Comparator 0 State bit position. */ + +#define AC_WIF_bm 0x04 /* Window Mode Interrupt Flag bit mask. */ +#define AC_WIF_bp 2 /* Window Mode Interrupt Flag bit position. */ + +#define AC_AC1IF_bm 0x02 /* Comparator 1 Interrupt Flag bit mask. */ +#define AC_AC1IF_bp 1 /* Comparator 1 Interrupt Flag bit position. */ + +#define AC_AC0IF_bm 0x01 /* Comparator 0 Interrupt Flag bit mask. */ +#define AC_AC0IF_bp 0 /* Comparator 0 Interrupt Flag bit position. */ + + +/* ADC - Analog/Digital Converter */ +/* ADC_CH.CTRL bit masks and bit positions */ +#define ADC_CH_START_bm 0x80 /* Channel Start Conversion bit mask. */ +#define ADC_CH_START_bp 7 /* Channel Start Conversion bit position. */ + +#define ADC_CH_GAINFAC_gm 0x1C /* Gain Factor group mask. */ +#define ADC_CH_GAINFAC_gp 2 /* Gain Factor group position. */ +#define ADC_CH_GAINFAC0_bm (1<<2) /* Gain Factor bit 0 mask. */ +#define ADC_CH_GAINFAC0_bp 2 /* Gain Factor bit 0 position. */ +#define ADC_CH_GAINFAC1_bm (1<<3) /* Gain Factor bit 1 mask. */ +#define ADC_CH_GAINFAC1_bp 3 /* Gain Factor bit 1 position. */ +#define ADC_CH_GAINFAC2_bm (1<<4) /* Gain Factor bit 2 mask. */ +#define ADC_CH_GAINFAC2_bp 4 /* Gain Factor bit 2 position. */ + +#define ADC_CH_INPUTMODE_gm 0x03 /* Input Mode Select group mask. */ +#define ADC_CH_INPUTMODE_gp 0 /* Input Mode Select group position. */ +#define ADC_CH_INPUTMODE0_bm (1<<0) /* Input Mode Select bit 0 mask. */ +#define ADC_CH_INPUTMODE0_bp 0 /* Input Mode Select bit 0 position. */ +#define ADC_CH_INPUTMODE1_bm (1<<1) /* Input Mode Select bit 1 mask. */ +#define ADC_CH_INPUTMODE1_bp 1 /* Input Mode Select bit 1 position. */ + + +/* ADC_CH.MUXCTRL bit masks and bit positions */ +#define ADC_CH_MUXPOS_gm 0x78 /* Positive Input Select group mask. */ +#define ADC_CH_MUXPOS_gp 3 /* Positive Input Select group position. */ +#define ADC_CH_MUXPOS0_bm (1<<3) /* Positive Input Select bit 0 mask. */ +#define ADC_CH_MUXPOS0_bp 3 /* Positive Input Select bit 0 position. */ +#define ADC_CH_MUXPOS1_bm (1<<4) /* Positive Input Select bit 1 mask. */ +#define ADC_CH_MUXPOS1_bp 4 /* Positive Input Select bit 1 position. */ +#define ADC_CH_MUXPOS2_bm (1<<5) /* Positive Input Select bit 2 mask. */ +#define ADC_CH_MUXPOS2_bp 5 /* Positive Input Select bit 2 position. */ +#define ADC_CH_MUXPOS3_bm (1<<6) /* Positive Input Select bit 3 mask. */ +#define ADC_CH_MUXPOS3_bp 6 /* Positive Input Select bit 3 position. */ + +#define ADC_CH_MUXINT_gm 0x78 /* Internal Input Select group mask. */ +#define ADC_CH_MUXINT_gp 3 /* Internal Input Select group position. */ +#define ADC_CH_MUXINT0_bm (1<<3) /* Internal Input Select bit 0 mask. */ +#define ADC_CH_MUXINT0_bp 3 /* Internal Input Select bit 0 position. */ +#define ADC_CH_MUXINT1_bm (1<<4) /* Internal Input Select bit 1 mask. */ +#define ADC_CH_MUXINT1_bp 4 /* Internal Input Select bit 1 position. */ +#define ADC_CH_MUXINT2_bm (1<<5) /* Internal Input Select bit 2 mask. */ +#define ADC_CH_MUXINT2_bp 5 /* Internal Input Select bit 2 position. */ +#define ADC_CH_MUXINT3_bm (1<<6) /* Internal Input Select bit 3 mask. */ +#define ADC_CH_MUXINT3_bp 6 /* Internal Input Select bit 3 position. */ + +#define ADC_CH_MUXNEG_gm 0x03 /* Negative Input Select group mask. */ +#define ADC_CH_MUXNEG_gp 0 /* Negative Input Select group position. */ +#define ADC_CH_MUXNEG0_bm (1<<0) /* Negative Input Select bit 0 mask. */ +#define ADC_CH_MUXNEG0_bp 0 /* Negative Input Select bit 0 position. */ +#define ADC_CH_MUXNEG1_bm (1<<1) /* Negative Input Select bit 1 mask. */ +#define ADC_CH_MUXNEG1_bp 1 /* Negative Input Select bit 1 position. */ + + +/* ADC_CH.INTCTRL bit masks and bit positions */ +#define ADC_CH_INTMODE_gm 0x0C /* Interrupt Mode group mask. */ +#define ADC_CH_INTMODE_gp 2 /* Interrupt Mode group position. */ +#define ADC_CH_INTMODE0_bm (1<<2) /* Interrupt Mode bit 0 mask. */ +#define ADC_CH_INTMODE0_bp 2 /* Interrupt Mode bit 0 position. */ +#define ADC_CH_INTMODE1_bm (1<<3) /* Interrupt Mode bit 1 mask. */ +#define ADC_CH_INTMODE1_bp 3 /* Interrupt Mode bit 1 position. */ + +#define ADC_CH_INTLVL_gm 0x03 /* Interrupt Level group mask. */ +#define ADC_CH_INTLVL_gp 0 /* Interrupt Level group position. */ +#define ADC_CH_INTLVL0_bm (1<<0) /* Interrupt Level bit 0 mask. */ +#define ADC_CH_INTLVL0_bp 0 /* Interrupt Level bit 0 position. */ +#define ADC_CH_INTLVL1_bm (1<<1) /* Interrupt Level bit 1 mask. */ +#define ADC_CH_INTLVL1_bp 1 /* Interrupt Level bit 1 position. */ + + +/* ADC_CH.INTFLAGS bit masks and bit positions */ +#define ADC_CH_CHIF_bm 0x01 /* Channel Interrupt Flag bit mask. */ +#define ADC_CH_CHIF_bp 0 /* Channel Interrupt Flag bit position. */ + + +/* ADC.CTRLA bit masks and bit positions */ +#define ADC_DMASEL_gm 0xE0 /* DMA Selection group mask. */ +#define ADC_DMASEL_gp 5 /* DMA Selection group position. */ +#define ADC_DMASEL0_bm (1<<5) /* DMA Selection bit 0 mask. */ +#define ADC_DMASEL0_bp 5 /* DMA Selection bit 0 position. */ +#define ADC_DMASEL1_bm (1<<6) /* DMA Selection bit 1 mask. */ +#define ADC_DMASEL1_bp 6 /* DMA Selection bit 1 position. */ +#define ADC_DMASEL2_bm (1<<7) /* DMA Selection bit 2 mask. */ +#define ADC_DMASEL2_bp 7 /* DMA Selection bit 2 position. */ + +#define ADC_CH3START_bm 0x20 /* Channel 3 Start Conversion bit mask. */ +#define ADC_CH3START_bp 5 /* Channel 3 Start Conversion bit position. */ + +#define ADC_CH2START_bm 0x10 /* Channel 2 Start Conversion bit mask. */ +#define ADC_CH2START_bp 4 /* Channel 2 Start Conversion bit position. */ + +#define ADC_CH1START_bm 0x08 /* Channel 1 Start Conversion bit mask. */ +#define ADC_CH1START_bp 3 /* Channel 1 Start Conversion bit position. */ + +#define ADC_CH0START_bm 0x04 /* Channel 0 Start Conversion bit mask. */ +#define ADC_CH0START_bp 2 /* Channel 0 Start Conversion bit position. */ + +#define ADC_FLUSH_bm 0x02 /* Flush Pipeline bit mask. */ +#define ADC_FLUSH_bp 1 /* Flush Pipeline bit position. */ + +#define ADC_ENABLE_bm 0x01 /* Enable ADC bit mask. */ +#define ADC_ENABLE_bp 0 /* Enable ADC bit position. */ + + +/* ADC.CTRLB bit masks and bit positions */ +#define ADC_CONMODE_bm 0x10 /* Conversion Mode bit mask. */ +#define ADC_CONMODE_bp 4 /* Conversion Mode bit position. */ + +#define ADC_FREERUN_bm 0x08 /* Free Running Mode Enable bit mask. */ +#define ADC_FREERUN_bp 3 /* Free Running Mode Enable bit position. */ + +#define ADC_RESOLUTION_gm 0x06 /* Result Resolution group mask. */ +#define ADC_RESOLUTION_gp 1 /* Result Resolution group position. */ +#define ADC_RESOLUTION0_bm (1<<1) /* Result Resolution bit 0 mask. */ +#define ADC_RESOLUTION0_bp 1 /* Result Resolution bit 0 position. */ +#define ADC_RESOLUTION1_bm (1<<2) /* Result Resolution bit 1 mask. */ +#define ADC_RESOLUTION1_bp 2 /* Result Resolution bit 1 position. */ + + +/* ADC.REFCTRL bit masks and bit positions */ +#define ADC_REFSEL_gm 0x30 /* Reference Selection group mask. */ +#define ADC_REFSEL_gp 4 /* Reference Selection group position. */ +#define ADC_REFSEL0_bm (1<<4) /* Reference Selection bit 0 mask. */ +#define ADC_REFSEL0_bp 4 /* Reference Selection bit 0 position. */ +#define ADC_REFSEL1_bm (1<<5) /* Reference Selection bit 1 mask. */ +#define ADC_REFSEL1_bp 5 /* Reference Selection bit 1 position. */ + +#define ADC_BANDGAP_bm 0x02 /* Bandgap enable bit mask. */ +#define ADC_BANDGAP_bp 1 /* Bandgap enable bit position. */ + +#define ADC_TEMPREF_bm 0x01 /* Temperature Reference Enable bit mask. */ +#define ADC_TEMPREF_bp 0 /* Temperature Reference Enable bit position. */ + + +/* ADC.EVCTRL bit masks and bit positions */ +#define ADC_SWEEP_gm 0xC0 /* Channel Sweep Selection group mask. */ +#define ADC_SWEEP_gp 6 /* Channel Sweep Selection group position. */ +#define ADC_SWEEP0_bm (1<<6) /* Channel Sweep Selection bit 0 mask. */ +#define ADC_SWEEP0_bp 6 /* Channel Sweep Selection bit 0 position. */ +#define ADC_SWEEP1_bm (1<<7) /* Channel Sweep Selection bit 1 mask. */ +#define ADC_SWEEP1_bp 7 /* Channel Sweep Selection bit 1 position. */ + +#define ADC_EVSEL_gm 0x38 /* Event Input Select group mask. */ +#define ADC_EVSEL_gp 3 /* Event Input Select group position. */ +#define ADC_EVSEL0_bm (1<<3) /* Event Input Select bit 0 mask. */ +#define ADC_EVSEL0_bp 3 /* Event Input Select bit 0 position. */ +#define ADC_EVSEL1_bm (1<<4) /* Event Input Select bit 1 mask. */ +#define ADC_EVSEL1_bp 4 /* Event Input Select bit 1 position. */ +#define ADC_EVSEL2_bm (1<<5) /* Event Input Select bit 2 mask. */ +#define ADC_EVSEL2_bp 5 /* Event Input Select bit 2 position. */ + +#define ADC_EVACT_gm 0x07 /* Event Action Select group mask. */ +#define ADC_EVACT_gp 0 /* Event Action Select group position. */ +#define ADC_EVACT0_bm (1<<0) /* Event Action Select bit 0 mask. */ +#define ADC_EVACT0_bp 0 /* Event Action Select bit 0 position. */ +#define ADC_EVACT1_bm (1<<1) /* Event Action Select bit 1 mask. */ +#define ADC_EVACT1_bp 1 /* Event Action Select bit 1 position. */ +#define ADC_EVACT2_bm (1<<2) /* Event Action Select bit 2 mask. */ +#define ADC_EVACT2_bp 2 /* Event Action Select bit 2 position. */ + + +/* ADC.PRESCALER bit masks and bit positions */ +#define ADC_PRESCALER_gm 0x07 /* Clock Prescaler Selection group mask. */ +#define ADC_PRESCALER_gp 0 /* Clock Prescaler Selection group position. */ +#define ADC_PRESCALER0_bm (1<<0) /* Clock Prescaler Selection bit 0 mask. */ +#define ADC_PRESCALER0_bp 0 /* Clock Prescaler Selection bit 0 position. */ +#define ADC_PRESCALER1_bm (1<<1) /* Clock Prescaler Selection bit 1 mask. */ +#define ADC_PRESCALER1_bp 1 /* Clock Prescaler Selection bit 1 position. */ +#define ADC_PRESCALER2_bm (1<<2) /* Clock Prescaler Selection bit 2 mask. */ +#define ADC_PRESCALER2_bp 2 /* Clock Prescaler Selection bit 2 position. */ + + +/* ADC.CALCTRL bit masks and bit positions */ +#define ADC_CAL_bm 0x01 /* ADC Calibration Start bit mask. */ +#define ADC_CAL_bp 0 /* ADC Calibration Start bit position. */ + + +/* ADC.INTFLAGS bit masks and bit positions */ +#define ADC_CH3IF_bm 0x08 /* Channel 3 Interrupt Flag bit mask. */ +#define ADC_CH3IF_bp 3 /* Channel 3 Interrupt Flag bit position. */ + +#define ADC_CH2IF_bm 0x04 /* Channel 2 Interrupt Flag bit mask. */ +#define ADC_CH2IF_bp 2 /* Channel 2 Interrupt Flag bit position. */ + +#define ADC_CH1IF_bm 0x02 /* Channel 1 Interrupt Flag bit mask. */ +#define ADC_CH1IF_bp 1 /* Channel 1 Interrupt Flag bit position. */ + +#define ADC_CH0IF_bm 0x01 /* Channel 0 Interrupt Flag bit mask. */ +#define ADC_CH0IF_bp 0 /* Channel 0 Interrupt Flag bit position. */ + + +/* DAC - Digital/Analog Converter */ +/* DAC.CTRLA bit masks and bit positions */ +#define DAC_IDOEN_bm 0x10 /* Internal Output Enable bit mask. */ +#define DAC_IDOEN_bp 4 /* Internal Output Enable bit position. */ + +#define DAC_CH1EN_bm 0x08 /* Channel 1 Output Enable bit mask. */ +#define DAC_CH1EN_bp 3 /* Channel 1 Output Enable bit position. */ + +#define DAC_CH0EN_bm 0x04 /* Channel 0 Output Enable bit mask. */ +#define DAC_CH0EN_bp 2 /* Channel 0 Output Enable bit position. */ + +#define DAC_LPMODE_bm 0x02 /* Low Power Mode bit mask. */ +#define DAC_LPMODE_bp 1 /* Low Power Mode bit position. */ + +#define DAC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define DAC_ENABLE_bp 0 /* Enable bit position. */ + + +/* DAC.CTRLB bit masks and bit positions */ +#define DAC_CHSEL_gm 0x60 /* Channel Select group mask. */ +#define DAC_CHSEL_gp 5 /* Channel Select group position. */ +#define DAC_CHSEL0_bm (1<<5) /* Channel Select bit 0 mask. */ +#define DAC_CHSEL0_bp 5 /* Channel Select bit 0 position. */ +#define DAC_CHSEL1_bm (1<<6) /* Channel Select bit 1 mask. */ +#define DAC_CHSEL1_bp 6 /* Channel Select bit 1 position. */ + +#define DAC_CH1TRIG_bm 0x02 /* Channel 1 Event Trig Enable bit mask. */ +#define DAC_CH1TRIG_bp 1 /* Channel 1 Event Trig Enable bit position. */ + +#define DAC_CH0TRIG_bm 0x01 /* Channel 0 Event Trig Enable bit mask. */ +#define DAC_CH0TRIG_bp 0 /* Channel 0 Event Trig Enable bit position. */ + + +/* DAC.CTRLC bit masks and bit positions */ +#define DAC_REFSEL_gm 0x18 /* Reference Select group mask. */ +#define DAC_REFSEL_gp 3 /* Reference Select group position. */ +#define DAC_REFSEL0_bm (1<<3) /* Reference Select bit 0 mask. */ +#define DAC_REFSEL0_bp 3 /* Reference Select bit 0 position. */ +#define DAC_REFSEL1_bm (1<<4) /* Reference Select bit 1 mask. */ +#define DAC_REFSEL1_bp 4 /* Reference Select bit 1 position. */ + +#define DAC_LEFTADJ_bm 0x01 /* Left-adjust Result bit mask. */ +#define DAC_LEFTADJ_bp 0 /* Left-adjust Result bit position. */ + + +/* DAC.EVCTRL bit masks and bit positions */ +#define DAC_EVSEL_gm 0x07 /* Event Input Selection group mask. */ +#define DAC_EVSEL_gp 0 /* Event Input Selection group position. */ +#define DAC_EVSEL0_bm (1<<0) /* Event Input Selection bit 0 mask. */ +#define DAC_EVSEL0_bp 0 /* Event Input Selection bit 0 position. */ +#define DAC_EVSEL1_bm (1<<1) /* Event Input Selection bit 1 mask. */ +#define DAC_EVSEL1_bp 1 /* Event Input Selection bit 1 position. */ +#define DAC_EVSEL2_bm (1<<2) /* Event Input Selection bit 2 mask. */ +#define DAC_EVSEL2_bp 2 /* Event Input Selection bit 2 position. */ + + +/* DAC.TIMCTRL bit masks and bit positions */ +#define DAC_CONINTVAL_gm 0x70 /* Conversion Intercal group mask. */ +#define DAC_CONINTVAL_gp 4 /* Conversion Intercal group position. */ +#define DAC_CONINTVAL0_bm (1<<4) /* Conversion Intercal bit 0 mask. */ +#define DAC_CONINTVAL0_bp 4 /* Conversion Intercal bit 0 position. */ +#define DAC_CONINTVAL1_bm (1<<5) /* Conversion Intercal bit 1 mask. */ +#define DAC_CONINTVAL1_bp 5 /* Conversion Intercal bit 1 position. */ +#define DAC_CONINTVAL2_bm (1<<6) /* Conversion Intercal bit 2 mask. */ +#define DAC_CONINTVAL2_bp 6 /* Conversion Intercal bit 2 position. */ + +#define DAC_REFRESH_gm 0x0F /* Refresh Timing Control group mask. */ +#define DAC_REFRESH_gp 0 /* Refresh Timing Control group position. */ +#define DAC_REFRESH0_bm (1<<0) /* Refresh Timing Control bit 0 mask. */ +#define DAC_REFRESH0_bp 0 /* Refresh Timing Control bit 0 position. */ +#define DAC_REFRESH1_bm (1<<1) /* Refresh Timing Control bit 1 mask. */ +#define DAC_REFRESH1_bp 1 /* Refresh Timing Control bit 1 position. */ +#define DAC_REFRESH2_bm (1<<2) /* Refresh Timing Control bit 2 mask. */ +#define DAC_REFRESH2_bp 2 /* Refresh Timing Control bit 2 position. */ +#define DAC_REFRESH3_bm (1<<3) /* Refresh Timing Control bit 3 mask. */ +#define DAC_REFRESH3_bp 3 /* Refresh Timing Control bit 3 position. */ + + +/* DAC.STATUS bit masks and bit positions */ +#define DAC_CH1DRE_bm 0x02 /* Channel 1 Data Register Empty bit mask. */ +#define DAC_CH1DRE_bp 1 /* Channel 1 Data Register Empty bit position. */ + +#define DAC_CH0DRE_bm 0x01 /* Channel 0 Data Register Empty bit mask. */ +#define DAC_CH0DRE_bp 0 /* Channel 0 Data Register Empty bit position. */ + + +/* RTC32 - 32-bit Real-Time Counter */ +/* RTC32.CTRL bit masks and bit positions */ +#define RTC32_ENABLE_bm 0x01 /* RTC enable bit mask. */ +#define RTC32_ENABLE_bp 0 /* RTC enable bit position. */ + + +/* RTC32.SYNCCTRL bit masks and bit positions */ +#define RTC32_SYNCCNT_bm 0x10 /* Synchronization Busy Flag bit mask. */ +#define RTC32_SYNCCNT_bp 4 /* Synchronization Busy Flag bit position. */ + +#define RTC32_SYNCBUSY_bm 0x01 /* Synchronization Busy Flag bit mask. */ +#define RTC32_SYNCBUSY_bp 0 /* Synchronization Busy Flag bit position. */ + + +/* RTC32.INTCTRL bit masks and bit positions */ +#define RTC32_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ +#define RTC32_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ +#define RTC32_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ +#define RTC32_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ +#define RTC32_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ +#define RTC32_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ + +#define RTC32_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ +#define RTC32_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ +#define RTC32_OVFINTLVL0_bm (1<<0) /* Overflow Interrupt Level bit 0 mask. */ +#define RTC32_OVFINTLVL0_bp 0 /* Overflow Interrupt Level bit 0 position. */ +#define RTC32_OVFINTLVL1_bm (1<<1) /* Overflow Interrupt Level bit 1 mask. */ +#define RTC32_OVFINTLVL1_bp 1 /* Overflow Interrupt Level bit 1 position. */ + + +/* RTC32.INTFLAGS bit masks and bit positions */ +#define RTC32_COMPIF_bm 0x02 /* Compare Match Interrupt Flag bit mask. */ +#define RTC32_COMPIF_bp 1 /* Compare Match Interrupt Flag bit position. */ + +#define RTC32_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define RTC32_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* EBI - External Bus Interface */ +/* EBI_CS.CTRLA bit masks and bit positions */ +#define EBI_CS_ASPACE_gm 0x7C /* Address Space group mask. */ +#define EBI_CS_ASPACE_gp 2 /* Address Space group position. */ +#define EBI_CS_ASPACE0_bm (1<<2) /* Address Space bit 0 mask. */ +#define EBI_CS_ASPACE0_bp 2 /* Address Space bit 0 position. */ +#define EBI_CS_ASPACE1_bm (1<<3) /* Address Space bit 1 mask. */ +#define EBI_CS_ASPACE1_bp 3 /* Address Space bit 1 position. */ +#define EBI_CS_ASPACE2_bm (1<<4) /* Address Space bit 2 mask. */ +#define EBI_CS_ASPACE2_bp 4 /* Address Space bit 2 position. */ +#define EBI_CS_ASPACE3_bm (1<<5) /* Address Space bit 3 mask. */ +#define EBI_CS_ASPACE3_bp 5 /* Address Space bit 3 position. */ +#define EBI_CS_ASPACE4_bm (1<<6) /* Address Space bit 4 mask. */ +#define EBI_CS_ASPACE4_bp 6 /* Address Space bit 4 position. */ + +#define EBI_CS_MODE_gm 0x03 /* Memory Mode group mask. */ +#define EBI_CS_MODE_gp 0 /* Memory Mode group position. */ +#define EBI_CS_MODE0_bm (1<<0) /* Memory Mode bit 0 mask. */ +#define EBI_CS_MODE0_bp 0 /* Memory Mode bit 0 position. */ +#define EBI_CS_MODE1_bm (1<<1) /* Memory Mode bit 1 mask. */ +#define EBI_CS_MODE1_bp 1 /* Memory Mode bit 1 position. */ + + +/* EBI_CS.CTRLB bit masks and bit positions */ +#define EBI_CS_SRWS_gm 0x07 /* SRAM Wait State Cycles group mask. */ +#define EBI_CS_SRWS_gp 0 /* SRAM Wait State Cycles group position. */ +#define EBI_CS_SRWS0_bm (1<<0) /* SRAM Wait State Cycles bit 0 mask. */ +#define EBI_CS_SRWS0_bp 0 /* SRAM Wait State Cycles bit 0 position. */ +#define EBI_CS_SRWS1_bm (1<<1) /* SRAM Wait State Cycles bit 1 mask. */ +#define EBI_CS_SRWS1_bp 1 /* SRAM Wait State Cycles bit 1 position. */ +#define EBI_CS_SRWS2_bm (1<<2) /* SRAM Wait State Cycles bit 2 mask. */ +#define EBI_CS_SRWS2_bp 2 /* SRAM Wait State Cycles bit 2 position. */ + +#define EBI_CS_SDINITDONE_bm 0x80 /* SDRAM Initialization Done bit mask. */ +#define EBI_CS_SDINITDONE_bp 7 /* SDRAM Initialization Done bit position. */ + +#define EBI_CS_SDSREN_bm 0x04 /* SDRAM Self-refresh Enable bit mask. */ +#define EBI_CS_SDSREN_bp 2 /* SDRAM Self-refresh Enable bit position. */ + +#define EBI_CS_SDMODE_gm 0x03 /* SDRAM Mode group mask. */ +#define EBI_CS_SDMODE_gp 0 /* SDRAM Mode group position. */ +#define EBI_CS_SDMODE0_bm (1<<0) /* SDRAM Mode bit 0 mask. */ +#define EBI_CS_SDMODE0_bp 0 /* SDRAM Mode bit 0 position. */ +#define EBI_CS_SDMODE1_bm (1<<1) /* SDRAM Mode bit 1 mask. */ +#define EBI_CS_SDMODE1_bp 1 /* SDRAM Mode bit 1 position. */ + + +/* EBI.CTRL bit masks and bit positions */ +#define EBI_SDDATAW_gm 0xC0 /* SDRAM Data Width Setting group mask. */ +#define EBI_SDDATAW_gp 6 /* SDRAM Data Width Setting group position. */ +#define EBI_SDDATAW0_bm (1<<6) /* SDRAM Data Width Setting bit 0 mask. */ +#define EBI_SDDATAW0_bp 6 /* SDRAM Data Width Setting bit 0 position. */ +#define EBI_SDDATAW1_bm (1<<7) /* SDRAM Data Width Setting bit 1 mask. */ +#define EBI_SDDATAW1_bp 7 /* SDRAM Data Width Setting bit 1 position. */ + +#define EBI_LPCMODE_gm 0x30 /* SRAM LPC Mode group mask. */ +#define EBI_LPCMODE_gp 4 /* SRAM LPC Mode group position. */ +#define EBI_LPCMODE0_bm (1<<4) /* SRAM LPC Mode bit 0 mask. */ +#define EBI_LPCMODE0_bp 4 /* SRAM LPC Mode bit 0 position. */ +#define EBI_LPCMODE1_bm (1<<5) /* SRAM LPC Mode bit 1 mask. */ +#define EBI_LPCMODE1_bp 5 /* SRAM LPC Mode bit 1 position. */ + +#define EBI_SRMODE_gm 0x0C /* SRAM Mode group mask. */ +#define EBI_SRMODE_gp 2 /* SRAM Mode group position. */ +#define EBI_SRMODE0_bm (1<<2) /* SRAM Mode bit 0 mask. */ +#define EBI_SRMODE0_bp 2 /* SRAM Mode bit 0 position. */ +#define EBI_SRMODE1_bm (1<<3) /* SRAM Mode bit 1 mask. */ +#define EBI_SRMODE1_bp 3 /* SRAM Mode bit 1 position. */ + +#define EBI_IFMODE_gm 0x03 /* Interface Mode group mask. */ +#define EBI_IFMODE_gp 0 /* Interface Mode group position. */ +#define EBI_IFMODE0_bm (1<<0) /* Interface Mode bit 0 mask. */ +#define EBI_IFMODE0_bp 0 /* Interface Mode bit 0 position. */ +#define EBI_IFMODE1_bm (1<<1) /* Interface Mode bit 1 mask. */ +#define EBI_IFMODE1_bp 1 /* Interface Mode bit 1 position. */ + + +/* EBI.SDRAMCTRLA bit masks and bit positions */ +#define EBI_SDCAS_bm 0x08 /* SDRAM CAS Latency Setting bit mask. */ +#define EBI_SDCAS_bp 3 /* SDRAM CAS Latency Setting bit position. */ + +#define EBI_SDROW_bm 0x04 /* SDRAM ROW Bits Setting bit mask. */ +#define EBI_SDROW_bp 2 /* SDRAM ROW Bits Setting bit position. */ + +#define EBI_SDCOL_gm 0x03 /* SDRAM Column Bits Setting group mask. */ +#define EBI_SDCOL_gp 0 /* SDRAM Column Bits Setting group position. */ +#define EBI_SDCOL0_bm (1<<0) /* SDRAM Column Bits Setting bit 0 mask. */ +#define EBI_SDCOL0_bp 0 /* SDRAM Column Bits Setting bit 0 position. */ +#define EBI_SDCOL1_bm (1<<1) /* SDRAM Column Bits Setting bit 1 mask. */ +#define EBI_SDCOL1_bp 1 /* SDRAM Column Bits Setting bit 1 position. */ + + +/* EBI.SDRAMCTRLB bit masks and bit positions */ +#define EBI_MRDLY_gm 0xC0 /* SDRAM Mode Register Delay group mask. */ +#define EBI_MRDLY_gp 6 /* SDRAM Mode Register Delay group position. */ +#define EBI_MRDLY0_bm (1<<6) /* SDRAM Mode Register Delay bit 0 mask. */ +#define EBI_MRDLY0_bp 6 /* SDRAM Mode Register Delay bit 0 position. */ +#define EBI_MRDLY1_bm (1<<7) /* SDRAM Mode Register Delay bit 1 mask. */ +#define EBI_MRDLY1_bp 7 /* SDRAM Mode Register Delay bit 1 position. */ + +#define EBI_ROWCYCDLY_gm 0x38 /* SDRAM Row Cycle Delay group mask. */ +#define EBI_ROWCYCDLY_gp 3 /* SDRAM Row Cycle Delay group position. */ +#define EBI_ROWCYCDLY0_bm (1<<3) /* SDRAM Row Cycle Delay bit 0 mask. */ +#define EBI_ROWCYCDLY0_bp 3 /* SDRAM Row Cycle Delay bit 0 position. */ +#define EBI_ROWCYCDLY1_bm (1<<4) /* SDRAM Row Cycle Delay bit 1 mask. */ +#define EBI_ROWCYCDLY1_bp 4 /* SDRAM Row Cycle Delay bit 1 position. */ +#define EBI_ROWCYCDLY2_bm (1<<5) /* SDRAM Row Cycle Delay bit 2 mask. */ +#define EBI_ROWCYCDLY2_bp 5 /* SDRAM Row Cycle Delay bit 2 position. */ + +#define EBI_RPDLY_gm 0x07 /* SDRAM Row-to-Precharge Delay group mask. */ +#define EBI_RPDLY_gp 0 /* SDRAM Row-to-Precharge Delay group position. */ +#define EBI_RPDLY0_bm (1<<0) /* SDRAM Row-to-Precharge Delay bit 0 mask. */ +#define EBI_RPDLY0_bp 0 /* SDRAM Row-to-Precharge Delay bit 0 position. */ +#define EBI_RPDLY1_bm (1<<1) /* SDRAM Row-to-Precharge Delay bit 1 mask. */ +#define EBI_RPDLY1_bp 1 /* SDRAM Row-to-Precharge Delay bit 1 position. */ +#define EBI_RPDLY2_bm (1<<2) /* SDRAM Row-to-Precharge Delay bit 2 mask. */ +#define EBI_RPDLY2_bp 2 /* SDRAM Row-to-Precharge Delay bit 2 position. */ + + +/* EBI.SDRAMCTRLC bit masks and bit positions */ +#define EBI_WRDLY_gm 0xC0 /* SDRAM Write Recovery Delay group mask. */ +#define EBI_WRDLY_gp 6 /* SDRAM Write Recovery Delay group position. */ +#define EBI_WRDLY0_bm (1<<6) /* SDRAM Write Recovery Delay bit 0 mask. */ +#define EBI_WRDLY0_bp 6 /* SDRAM Write Recovery Delay bit 0 position. */ +#define EBI_WRDLY1_bm (1<<7) /* SDRAM Write Recovery Delay bit 1 mask. */ +#define EBI_WRDLY1_bp 7 /* SDRAM Write Recovery Delay bit 1 position. */ + +#define EBI_ESRDLY_gm 0x38 /* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ +#define EBI_ESRDLY_gp 3 /* SDRAM Exit-Self-refresh-to-Active Delay group position. */ +#define EBI_ESRDLY0_bm (1<<3) /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ +#define EBI_ESRDLY0_bp 3 /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ +#define EBI_ESRDLY1_bm (1<<4) /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ +#define EBI_ESRDLY1_bp 4 /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ +#define EBI_ESRDLY2_bm (1<<5) /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ +#define EBI_ESRDLY2_bp 5 /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ + +#define EBI_ROWCOLDLY_gm 0x07 /* SDRAM Row-to-Column Delay group mask. */ +#define EBI_ROWCOLDLY_gp 0 /* SDRAM Row-to-Column Delay group position. */ +#define EBI_ROWCOLDLY0_bm (1<<0) /* SDRAM Row-to-Column Delay bit 0 mask. */ +#define EBI_ROWCOLDLY0_bp 0 /* SDRAM Row-to-Column Delay bit 0 position. */ +#define EBI_ROWCOLDLY1_bm (1<<1) /* SDRAM Row-to-Column Delay bit 1 mask. */ +#define EBI_ROWCOLDLY1_bp 1 /* SDRAM Row-to-Column Delay bit 1 position. */ +#define EBI_ROWCOLDLY2_bm (1<<2) /* SDRAM Row-to-Column Delay bit 2 mask. */ +#define EBI_ROWCOLDLY2_bp 2 /* SDRAM Row-to-Column Delay bit 2 position. */ + + +/* TWI - Two-Wire Interface */ +/* TWI_MASTER.CTRLA bit masks and bit positions */ +#define TWI_MASTER_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_MASTER_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_MASTER_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_MASTER_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_MASTER_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_MASTER_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_MASTER_RIEN_bm 0x20 /* Read Interrupt Enable bit mask. */ +#define TWI_MASTER_RIEN_bp 5 /* Read Interrupt Enable bit position. */ + +#define TWI_MASTER_WIEN_bm 0x10 /* Write Interrupt Enable bit mask. */ +#define TWI_MASTER_WIEN_bp 4 /* Write Interrupt Enable bit position. */ + +#define TWI_MASTER_ENABLE_bm 0x08 /* Enable TWI Master bit mask. */ +#define TWI_MASTER_ENABLE_bp 3 /* Enable TWI Master bit position. */ + + +/* TWI_MASTER.CTRLB bit masks and bit positions */ +#define TWI_MASTER_TIMEOUT_gm 0x0C /* Inactive Bus Timeout group mask. */ +#define TWI_MASTER_TIMEOUT_gp 2 /* Inactive Bus Timeout group position. */ +#define TWI_MASTER_TIMEOUT0_bm (1<<2) /* Inactive Bus Timeout bit 0 mask. */ +#define TWI_MASTER_TIMEOUT0_bp 2 /* Inactive Bus Timeout bit 0 position. */ +#define TWI_MASTER_TIMEOUT1_bm (1<<3) /* Inactive Bus Timeout bit 1 mask. */ +#define TWI_MASTER_TIMEOUT1_bp 3 /* Inactive Bus Timeout bit 1 position. */ + +#define TWI_MASTER_QCEN_bm 0x02 /* Quick Command Enable bit mask. */ +#define TWI_MASTER_QCEN_bp 1 /* Quick Command Enable bit position. */ + +#define TWI_MASTER_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_MASTER_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_MASTER.CTRLC bit masks and bit positions */ +#define TWI_MASTER_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_MASTER_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_MASTER_CMD_gm 0x03 /* Command group mask. */ +#define TWI_MASTER_CMD_gp 0 /* Command group position. */ +#define TWI_MASTER_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_MASTER_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_MASTER_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_MASTER_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_MASTER.STATUS bit masks and bit positions */ +#define TWI_MASTER_RIF_bm 0x80 /* Read Interrupt Flag bit mask. */ +#define TWI_MASTER_RIF_bp 7 /* Read Interrupt Flag bit position. */ + +#define TWI_MASTER_WIF_bm 0x40 /* Write Interrupt Flag bit mask. */ +#define TWI_MASTER_WIF_bp 6 /* Write Interrupt Flag bit position. */ + +#define TWI_MASTER_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_MASTER_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_MASTER_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_MASTER_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_MASTER_ARBLOST_bm 0x08 /* Arbitration Lost bit mask. */ +#define TWI_MASTER_ARBLOST_bp 3 /* Arbitration Lost bit position. */ + +#define TWI_MASTER_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_MASTER_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_MASTER_BUSSTATE_gm 0x03 /* Bus State group mask. */ +#define TWI_MASTER_BUSSTATE_gp 0 /* Bus State group position. */ +#define TWI_MASTER_BUSSTATE0_bm (1<<0) /* Bus State bit 0 mask. */ +#define TWI_MASTER_BUSSTATE0_bp 0 /* Bus State bit 0 position. */ +#define TWI_MASTER_BUSSTATE1_bm (1<<1) /* Bus State bit 1 mask. */ +#define TWI_MASTER_BUSSTATE1_bp 1 /* Bus State bit 1 position. */ + + +/* TWI_SLAVE.CTRLA bit masks and bit positions */ +#define TWI_SLAVE_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_SLAVE_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_SLAVE_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_SLAVE_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_SLAVE_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_SLAVE_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ +#define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ + +#define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ +#define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ + +#define TWI_SLAVE_PIEN_bm 0x04 /* Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_PIEN_bp 2 /* Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_PMEN_bm 0x02 /* Promiscuous Mode Enable bit mask. */ +#define TWI_SLAVE_PMEN_bp 1 /* Promiscuous Mode Enable bit position. */ + +#define TWI_SLAVE_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_SLAVE_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_SLAVE.CTRLB bit masks and bit positions */ +#define TWI_SLAVE_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_SLAVE_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_SLAVE_CMD_gm 0x03 /* Command group mask. */ +#define TWI_SLAVE_CMD_gp 0 /* Command group position. */ +#define TWI_SLAVE_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_SLAVE_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_SLAVE_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_SLAVE_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_SLAVE.STATUS bit masks and bit positions */ +#define TWI_SLAVE_DIF_bm 0x80 /* Data Interrupt Flag bit mask. */ +#define TWI_SLAVE_DIF_bp 7 /* Data Interrupt Flag bit position. */ + +#define TWI_SLAVE_APIF_bm 0x40 /* Address/Stop Interrupt Flag bit mask. */ +#define TWI_SLAVE_APIF_bp 6 /* Address/Stop Interrupt Flag bit position. */ + +#define TWI_SLAVE_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_SLAVE_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_SLAVE_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_SLAVE_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_SLAVE_COLL_bm 0x08 /* Collision bit mask. */ +#define TWI_SLAVE_COLL_bp 3 /* Collision bit position. */ + +#define TWI_SLAVE_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_SLAVE_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_SLAVE_DIR_bm 0x02 /* Read/Write Direction bit mask. */ +#define TWI_SLAVE_DIR_bp 1 /* Read/Write Direction bit position. */ + +#define TWI_SLAVE_AP_bm 0x01 /* Slave Address or Stop bit mask. */ +#define TWI_SLAVE_AP_bp 0 /* Slave Address or Stop bit position. */ + + +/* TWI.CTRL bit masks and bit positions */ +#define TWI_SDAHOLD_bm 0x02 /* SDA Hold Time Enable bit mask. */ +#define TWI_SDAHOLD_bp 1 /* SDA Hold Time Enable bit position. */ + +#define TWI_EDIEN_bm 0x01 /* External Driver Interface Enable bit mask. */ +#define TWI_EDIEN_bp 0 /* External Driver Interface Enable bit position. */ + + +/* PORT - Port Configuration */ +/* PORTCFG.VPCTRLA bit masks and bit positions */ +#define PORTCFG_VP1MAP_gm 0xF0 /* Virtual Port 1 Mapping group mask. */ +#define PORTCFG_VP1MAP_gp 4 /* Virtual Port 1 Mapping group position. */ +#define PORTCFG_VP1MAP0_bm (1<<4) /* Virtual Port 1 Mapping bit 0 mask. */ +#define PORTCFG_VP1MAP0_bp 4 /* Virtual Port 1 Mapping bit 0 position. */ +#define PORTCFG_VP1MAP1_bm (1<<5) /* Virtual Port 1 Mapping bit 1 mask. */ +#define PORTCFG_VP1MAP1_bp 5 /* Virtual Port 1 Mapping bit 1 position. */ +#define PORTCFG_VP1MAP2_bm (1<<6) /* Virtual Port 1 Mapping bit 2 mask. */ +#define PORTCFG_VP1MAP2_bp 6 /* Virtual Port 1 Mapping bit 2 position. */ +#define PORTCFG_VP1MAP3_bm (1<<7) /* Virtual Port 1 Mapping bit 3 mask. */ +#define PORTCFG_VP1MAP3_bp 7 /* Virtual Port 1 Mapping bit 3 position. */ + +#define PORTCFG_VP0MAP_gm 0x0F /* Virtual Port 0 Mapping group mask. */ +#define PORTCFG_VP0MAP_gp 0 /* Virtual Port 0 Mapping group position. */ +#define PORTCFG_VP0MAP0_bm (1<<0) /* Virtual Port 0 Mapping bit 0 mask. */ +#define PORTCFG_VP0MAP0_bp 0 /* Virtual Port 0 Mapping bit 0 position. */ +#define PORTCFG_VP0MAP1_bm (1<<1) /* Virtual Port 0 Mapping bit 1 mask. */ +#define PORTCFG_VP0MAP1_bp 1 /* Virtual Port 0 Mapping bit 1 position. */ +#define PORTCFG_VP0MAP2_bm (1<<2) /* Virtual Port 0 Mapping bit 2 mask. */ +#define PORTCFG_VP0MAP2_bp 2 /* Virtual Port 0 Mapping bit 2 position. */ +#define PORTCFG_VP0MAP3_bm (1<<3) /* Virtual Port 0 Mapping bit 3 mask. */ +#define PORTCFG_VP0MAP3_bp 3 /* Virtual Port 0 Mapping bit 3 position. */ + + +/* PORTCFG.VPCTRLB bit masks and bit positions */ +#define PORTCFG_VP3MAP_gm 0xF0 /* Virtual Port 3 Mapping group mask. */ +#define PORTCFG_VP3MAP_gp 4 /* Virtual Port 3 Mapping group position. */ +#define PORTCFG_VP3MAP0_bm (1<<4) /* Virtual Port 3 Mapping bit 0 mask. */ +#define PORTCFG_VP3MAP0_bp 4 /* Virtual Port 3 Mapping bit 0 position. */ +#define PORTCFG_VP3MAP1_bm (1<<5) /* Virtual Port 3 Mapping bit 1 mask. */ +#define PORTCFG_VP3MAP1_bp 5 /* Virtual Port 3 Mapping bit 1 position. */ +#define PORTCFG_VP3MAP2_bm (1<<6) /* Virtual Port 3 Mapping bit 2 mask. */ +#define PORTCFG_VP3MAP2_bp 6 /* Virtual Port 3 Mapping bit 2 position. */ +#define PORTCFG_VP3MAP3_bm (1<<7) /* Virtual Port 3 Mapping bit 3 mask. */ +#define PORTCFG_VP3MAP3_bp 7 /* Virtual Port 3 Mapping bit 3 position. */ + +#define PORTCFG_VP2MAP_gm 0x0F /* Virtual Port 2 Mapping group mask. */ +#define PORTCFG_VP2MAP_gp 0 /* Virtual Port 2 Mapping group position. */ +#define PORTCFG_VP2MAP0_bm (1<<0) /* Virtual Port 2 Mapping bit 0 mask. */ +#define PORTCFG_VP2MAP0_bp 0 /* Virtual Port 2 Mapping bit 0 position. */ +#define PORTCFG_VP2MAP1_bm (1<<1) /* Virtual Port 2 Mapping bit 1 mask. */ +#define PORTCFG_VP2MAP1_bp 1 /* Virtual Port 2 Mapping bit 1 position. */ +#define PORTCFG_VP2MAP2_bm (1<<2) /* Virtual Port 2 Mapping bit 2 mask. */ +#define PORTCFG_VP2MAP2_bp 2 /* Virtual Port 2 Mapping bit 2 position. */ +#define PORTCFG_VP2MAP3_bm (1<<3) /* Virtual Port 2 Mapping bit 3 mask. */ +#define PORTCFG_VP2MAP3_bp 3 /* Virtual Port 2 Mapping bit 3 position. */ + + +/* PORTCFG.CLKEVOUT bit masks and bit positions */ +#define PORTCFG_CLKOUT_gm 0x03 /* Clock Output Port group mask. */ +#define PORTCFG_CLKOUT_gp 0 /* Clock Output Port group position. */ +#define PORTCFG_CLKOUT0_bm (1<<0) /* Clock Output Port bit 0 mask. */ +#define PORTCFG_CLKOUT0_bp 0 /* Clock Output Port bit 0 position. */ +#define PORTCFG_CLKOUT1_bm (1<<1) /* Clock Output Port bit 1 mask. */ +#define PORTCFG_CLKOUT1_bp 1 /* Clock Output Port bit 1 position. */ + +#define PORTCFG_EVOUT_gm 0x30 /* Event Output Port group mask. */ +#define PORTCFG_EVOUT_gp 4 /* Event Output Port group position. */ +#define PORTCFG_EVOUT0_bm (1<<4) /* Event Output Port bit 0 mask. */ +#define PORTCFG_EVOUT0_bp 4 /* Event Output Port bit 0 position. */ +#define PORTCFG_EVOUT1_bm (1<<5) /* Event Output Port bit 1 mask. */ +#define PORTCFG_EVOUT1_bp 5 /* Event Output Port bit 1 position. */ + + +/* VPORT.INTFLAGS bit masks and bit positions */ +#define VPORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define VPORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define VPORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define VPORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.INTCTRL bit masks and bit positions */ +#define PORT_INT1LVL_gm 0x0C /* Port Interrupt 1 Level group mask. */ +#define PORT_INT1LVL_gp 2 /* Port Interrupt 1 Level group position. */ +#define PORT_INT1LVL0_bm (1<<2) /* Port Interrupt 1 Level bit 0 mask. */ +#define PORT_INT1LVL0_bp 2 /* Port Interrupt 1 Level bit 0 position. */ +#define PORT_INT1LVL1_bm (1<<3) /* Port Interrupt 1 Level bit 1 mask. */ +#define PORT_INT1LVL1_bp 3 /* Port Interrupt 1 Level bit 1 position. */ + +#define PORT_INT0LVL_gm 0x03 /* Port Interrupt 0 Level group mask. */ +#define PORT_INT0LVL_gp 0 /* Port Interrupt 0 Level group position. */ +#define PORT_INT0LVL0_bm (1<<0) /* Port Interrupt 0 Level bit 0 mask. */ +#define PORT_INT0LVL0_bp 0 /* Port Interrupt 0 Level bit 0 position. */ +#define PORT_INT0LVL1_bm (1<<1) /* Port Interrupt 0 Level bit 1 mask. */ +#define PORT_INT0LVL1_bp 1 /* Port Interrupt 0 Level bit 1 position. */ + + +/* PORT.INTFLAGS bit masks and bit positions */ +#define PORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define PORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define PORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define PORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.PIN0CTRL bit masks and bit positions */ +#define PORT_SRLEN_bm 0x80 /* Slew Rate Enable bit mask. */ +#define PORT_SRLEN_bp 7 /* Slew Rate Enable bit position. */ + +#define PORT_INVEN_bm 0x40 /* Inverted I/O Enable bit mask. */ +#define PORT_INVEN_bp 6 /* Inverted I/O Enable bit position. */ + +#define PORT_OPC_gm 0x38 /* Output/Pull Configuration group mask. */ +#define PORT_OPC_gp 3 /* Output/Pull Configuration group position. */ +#define PORT_OPC0_bm (1<<3) /* Output/Pull Configuration bit 0 mask. */ +#define PORT_OPC0_bp 3 /* Output/Pull Configuration bit 0 position. */ +#define PORT_OPC1_bm (1<<4) /* Output/Pull Configuration bit 1 mask. */ +#define PORT_OPC1_bp 4 /* Output/Pull Configuration bit 1 position. */ +#define PORT_OPC2_bm (1<<5) /* Output/Pull Configuration bit 2 mask. */ +#define PORT_OPC2_bp 5 /* Output/Pull Configuration bit 2 position. */ + +#define PORT_ISC_gm 0x07 /* Input/Sense Configuration group mask. */ +#define PORT_ISC_gp 0 /* Input/Sense Configuration group position. */ +#define PORT_ISC0_bm (1<<0) /* Input/Sense Configuration bit 0 mask. */ +#define PORT_ISC0_bp 0 /* Input/Sense Configuration bit 0 position. */ +#define PORT_ISC1_bm (1<<1) /* Input/Sense Configuration bit 1 mask. */ +#define PORT_ISC1_bp 1 /* Input/Sense Configuration bit 1 position. */ +#define PORT_ISC2_bm (1<<2) /* Input/Sense Configuration bit 2 mask. */ +#define PORT_ISC2_bp 2 /* Input/Sense Configuration bit 2 position. */ + + +/* PORT.PIN1CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN2CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN3CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN4CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN5CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN6CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN7CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* TC - 16-bit Timer/Counter With PWM */ +/* TC0.CTRLA bit masks and bit positions */ +#define TC0_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC0_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC0_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC0_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC0_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC0_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC0_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC0_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC0_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC0_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC0.CTRLB bit masks and bit positions */ +#define TC0_CCDEN_bm 0x80 /* Compare or Capture D Enable bit mask. */ +#define TC0_CCDEN_bp 7 /* Compare or Capture D Enable bit position. */ + +#define TC0_CCCEN_bm 0x40 /* Compare or Capture C Enable bit mask. */ +#define TC0_CCCEN_bp 6 /* Compare or Capture C Enable bit position. */ + +#define TC0_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC0_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC0_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC0_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC0_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC0_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC0_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC0_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC0_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC0_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC0_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC0_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC0.CTRLC bit masks and bit positions */ +#define TC0_CMPD_bm 0x08 /* Compare D Output Value bit mask. */ +#define TC0_CMPD_bp 3 /* Compare D Output Value bit position. */ + +#define TC0_CMPC_bm 0x04 /* Compare C Output Value bit mask. */ +#define TC0_CMPC_bp 2 /* Compare C Output Value bit position. */ + +#define TC0_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC0_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC0_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC0_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC0.CTRLD bit masks and bit positions */ +#define TC0_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC0_EVACT_gp 5 /* Event Action group position. */ +#define TC0_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC0_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC0_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC0_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC0_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC0_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC0_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC0_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC0_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC0_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC0_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC0_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC0_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC0_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC0_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC0_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC0_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC0_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC0.CTRLE bit masks and bit positions */ +#define TC0_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC0_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC0_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC0_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC0.INTCTRLA bit masks and bit positions */ +#define TC0_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC0_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC0_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC0_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC0_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC0_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC0_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC0_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC0_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC0_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC0_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC0_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC0.INTCTRLB bit masks and bit positions */ +#define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ +#define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ +#define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ +#define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ +#define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ +#define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ + +#define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ +#define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ +#define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ +#define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ +#define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ +#define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ + +#define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC0.CTRLFCLR bit masks and bit positions */ +#define TC0_CMD_gm 0x0C /* Command group mask. */ +#define TC0_CMD_gp 2 /* Command group position. */ +#define TC0_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC0_CMD0_bp 2 /* Command bit 0 position. */ +#define TC0_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC0_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC0_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC0_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC0_DIR_bm 0x01 /* Direction bit mask. */ +#define TC0_DIR_bp 0 /* Direction bit position. */ + + +/* TC0.CTRLFSET bit masks and bit positions */ +/* TC0_CMD_gm Predefined. */ +/* TC0_CMD_gp Predefined. */ +/* TC0_CMD0_bm Predefined. */ +/* TC0_CMD0_bp Predefined. */ +/* TC0_CMD1_bm Predefined. */ +/* TC0_CMD1_bp Predefined. */ + +/* TC0_LUPD_bm Predefined. */ +/* TC0_LUPD_bp Predefined. */ + +/* TC0_DIR_bm Predefined. */ +/* TC0_DIR_bp Predefined. */ + + +/* TC0.CTRLGCLR bit masks and bit positions */ +#define TC0_CCDBV_bm 0x10 /* Compare or Capture D Buffer Valid bit mask. */ +#define TC0_CCDBV_bp 4 /* Compare or Capture D Buffer Valid bit position. */ + +#define TC0_CCCBV_bm 0x08 /* Compare or Capture C Buffer Valid bit mask. */ +#define TC0_CCCBV_bp 3 /* Compare or Capture C Buffer Valid bit position. */ + +#define TC0_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC0_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC0_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC0_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC0_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC0_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC0.CTRLGSET bit masks and bit positions */ +/* TC0_CCDBV_bm Predefined. */ +/* TC0_CCDBV_bp Predefined. */ + +/* TC0_CCCBV_bm Predefined. */ +/* TC0_CCCBV_bp Predefined. */ + +/* TC0_CCBBV_bm Predefined. */ +/* TC0_CCBBV_bp Predefined. */ + +/* TC0_CCABV_bm Predefined. */ +/* TC0_CCABV_bp Predefined. */ + +/* TC0_PERBV_bm Predefined. */ +/* TC0_PERBV_bp Predefined. */ + + +/* TC0.INTFLAGS bit masks and bit positions */ +#define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ +#define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ + +#define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ +#define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ + +#define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC0_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC0_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* TC1.CTRLA bit masks and bit positions */ +#define TC1_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC1_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC1_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC1_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC1_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC1_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC1_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC1_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC1_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC1_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC1.CTRLB bit masks and bit positions */ +#define TC1_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC1_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC1_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC1_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC1_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC1_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC1_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC1_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC1_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC1_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC1_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC1_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC1.CTRLC bit masks and bit positions */ +#define TC1_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC1_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC1_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC1_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC1.CTRLD bit masks and bit positions */ +#define TC1_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC1_EVACT_gp 5 /* Event Action group position. */ +#define TC1_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC1_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC1_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC1_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC1_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC1_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC1_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC1_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC1_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC1_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC1_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC1_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC1_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC1_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC1_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC1_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC1_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC1_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC1.CTRLE bit masks and bit positions */ +#define TC1_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC1_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC1_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC1_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC1.INTCTRLA bit masks and bit positions */ +#define TC1_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC1_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC1_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC1_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC1_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC1_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC1_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC1_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC1_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC1_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC1_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC1_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC1.INTCTRLB bit masks and bit positions */ +#define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC1.CTRLFCLR bit masks and bit positions */ +#define TC1_CMD_gm 0x0C /* Command group mask. */ +#define TC1_CMD_gp 2 /* Command group position. */ +#define TC1_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC1_CMD0_bp 2 /* Command bit 0 position. */ +#define TC1_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC1_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC1_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC1_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC1_DIR_bm 0x01 /* Direction bit mask. */ +#define TC1_DIR_bp 0 /* Direction bit position. */ + + +/* TC1.CTRLFSET bit masks and bit positions */ +/* TC1_CMD_gm Predefined. */ +/* TC1_CMD_gp Predefined. */ +/* TC1_CMD0_bm Predefined. */ +/* TC1_CMD0_bp Predefined. */ +/* TC1_CMD1_bm Predefined. */ +/* TC1_CMD1_bp Predefined. */ + +/* TC1_LUPD_bm Predefined. */ +/* TC1_LUPD_bp Predefined. */ + +/* TC1_DIR_bm Predefined. */ +/* TC1_DIR_bp Predefined. */ + + +/* TC1.CTRLGCLR bit masks and bit positions */ +#define TC1_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC1_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC1_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC1_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC1_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC1_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC1.CTRLGSET bit masks and bit positions */ +/* TC1_CCBBV_bm Predefined. */ +/* TC1_CCBBV_bp Predefined. */ + +/* TC1_CCABV_bm Predefined. */ +/* TC1_CCABV_bp Predefined. */ + +/* TC1_PERBV_bm Predefined. */ +/* TC1_PERBV_bp Predefined. */ + + +/* TC1.INTFLAGS bit masks and bit positions */ +#define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC1_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC1_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* AWEX.CTRL bit masks and bit positions */ +#define AWEX_PGM_bm 0x20 /* Pattern Generation Mode bit mask. */ +#define AWEX_PGM_bp 5 /* Pattern Generation Mode bit position. */ + +#define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ +#define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ + +#define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ +#define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ + +#define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ +#define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ + +#define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ +#define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ + +#define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ +#define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ + + +/* AWEX.FDCTRL bit masks and bit positions */ +#define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ +#define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ + +#define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ +#define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ + +#define AWEX_FDACT_gm 0x03 /* Fault Detect Action group mask. */ +#define AWEX_FDACT_gp 0 /* Fault Detect Action group position. */ +#define AWEX_FDACT0_bm (1<<0) /* Fault Detect Action bit 0 mask. */ +#define AWEX_FDACT0_bp 0 /* Fault Detect Action bit 0 position. */ +#define AWEX_FDACT1_bm (1<<1) /* Fault Detect Action bit 1 mask. */ +#define AWEX_FDACT1_bp 1 /* Fault Detect Action bit 1 position. */ + + +/* AWEX.STATUS bit masks and bit positions */ +#define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ +#define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ + +#define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ +#define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ + +#define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ +#define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ + + +/* HIRES.CTRL bit masks and bit positions */ +#define HIRES_HREN_gm 0x03 /* High Resolution Enable group mask. */ +#define HIRES_HREN_gp 0 /* High Resolution Enable group position. */ +#define HIRES_HREN0_bm (1<<0) /* High Resolution Enable bit 0 mask. */ +#define HIRES_HREN0_bp 0 /* High Resolution Enable bit 0 position. */ +#define HIRES_HREN1_bm (1<<1) /* High Resolution Enable bit 1 mask. */ +#define HIRES_HREN1_bp 1 /* High Resolution Enable bit 1 position. */ + + +/* USART - Universal Asynchronous Receiver-Transmitter */ +/* USART.STATUS bit masks and bit positions */ +#define USART_RXCIF_bm 0x80 /* Receive Interrupt Flag bit mask. */ +#define USART_RXCIF_bp 7 /* Receive Interrupt Flag bit position. */ + +#define USART_TXCIF_bm 0x40 /* Transmit Interrupt Flag bit mask. */ +#define USART_TXCIF_bp 6 /* Transmit Interrupt Flag bit position. */ + +#define USART_DREIF_bm 0x20 /* Data Register Empty Flag bit mask. */ +#define USART_DREIF_bp 5 /* Data Register Empty Flag bit position. */ + +#define USART_FERR_bm 0x10 /* Frame Error bit mask. */ +#define USART_FERR_bp 4 /* Frame Error bit position. */ + +#define USART_BUFOVF_bm 0x08 /* Buffer Overflow bit mask. */ +#define USART_BUFOVF_bp 3 /* Buffer Overflow bit position. */ + +#define USART_PERR_bm 0x04 /* Parity Error bit mask. */ +#define USART_PERR_bp 2 /* Parity Error bit position. */ + +#define USART_RXB8_bm 0x01 /* Receive Bit 8 bit mask. */ +#define USART_RXB8_bp 0 /* Receive Bit 8 bit position. */ + + +/* USART.CTRLA bit masks and bit positions */ +#define USART_RXCINTLVL_gm 0x30 /* Receive Interrupt Level group mask. */ +#define USART_RXCINTLVL_gp 4 /* Receive Interrupt Level group position. */ +#define USART_RXCINTLVL0_bm (1<<4) /* Receive Interrupt Level bit 0 mask. */ +#define USART_RXCINTLVL0_bp 4 /* Receive Interrupt Level bit 0 position. */ +#define USART_RXCINTLVL1_bm (1<<5) /* Receive Interrupt Level bit 1 mask. */ +#define USART_RXCINTLVL1_bp 5 /* Receive Interrupt Level bit 1 position. */ + +#define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ +#define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ +#define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ +#define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ +#define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ +#define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ + +#define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ +#define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ +#define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ +#define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ +#define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ +#define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ + + +/* USART.CTRLB bit masks and bit positions */ +#define USART_RXEN_bm 0x10 /* Receiver Enable bit mask. */ +#define USART_RXEN_bp 4 /* Receiver Enable bit position. */ + +#define USART_TXEN_bm 0x08 /* Transmitter Enable bit mask. */ +#define USART_TXEN_bp 3 /* Transmitter Enable bit position. */ + +#define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ +#define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ + +#define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ +#define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ + +#define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ +#define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ + + +/* USART.CTRLC bit masks and bit positions */ +#define USART_CMODE_gm 0xC0 /* Communication Mode group mask. */ +#define USART_CMODE_gp 6 /* Communication Mode group position. */ +#define USART_CMODE0_bm (1<<6) /* Communication Mode bit 0 mask. */ +#define USART_CMODE0_bp 6 /* Communication Mode bit 0 position. */ +#define USART_CMODE1_bm (1<<7) /* Communication Mode bit 1 mask. */ +#define USART_CMODE1_bp 7 /* Communication Mode bit 1 position. */ + +#define USART_PMODE_gm 0x30 /* Parity Mode group mask. */ +#define USART_PMODE_gp 4 /* Parity Mode group position. */ +#define USART_PMODE0_bm (1<<4) /* Parity Mode bit 0 mask. */ +#define USART_PMODE0_bp 4 /* Parity Mode bit 0 position. */ +#define USART_PMODE1_bm (1<<5) /* Parity Mode bit 1 mask. */ +#define USART_PMODE1_bp 5 /* Parity Mode bit 1 position. */ + +#define USART_SBMODE_bm 0x08 /* Stop Bit Mode bit mask. */ +#define USART_SBMODE_bp 3 /* Stop Bit Mode bit position. */ + +#define USART_CHSIZE_gm 0x07 /* Character Size group mask. */ +#define USART_CHSIZE_gp 0 /* Character Size group position. */ +#define USART_CHSIZE0_bm (1<<0) /* Character Size bit 0 mask. */ +#define USART_CHSIZE0_bp 0 /* Character Size bit 0 position. */ +#define USART_CHSIZE1_bm (1<<1) /* Character Size bit 1 mask. */ +#define USART_CHSIZE1_bp 1 /* Character Size bit 1 position. */ +#define USART_CHSIZE2_bm (1<<2) /* Character Size bit 2 mask. */ +#define USART_CHSIZE2_bp 2 /* Character Size bit 2 position. */ + + +/* USART.BAUDCTRLA bit masks and bit positions */ +#define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ +#define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ +#define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ +#define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ +#define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ +#define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ +#define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ +#define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ +#define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ +#define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ +#define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ +#define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ +#define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ +#define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ +#define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ +#define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ +#define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ +#define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ + + +/* USART.BAUDCTRLB bit masks and bit positions */ +#define USART_BSCALE_gm 0xF0 /* Baud Rate Scale group mask. */ +#define USART_BSCALE_gp 4 /* Baud Rate Scale group position. */ +#define USART_BSCALE0_bm (1<<4) /* Baud Rate Scale bit 0 mask. */ +#define USART_BSCALE0_bp 4 /* Baud Rate Scale bit 0 position. */ +#define USART_BSCALE1_bm (1<<5) /* Baud Rate Scale bit 1 mask. */ +#define USART_BSCALE1_bp 5 /* Baud Rate Scale bit 1 position. */ +#define USART_BSCALE2_bm (1<<6) /* Baud Rate Scale bit 2 mask. */ +#define USART_BSCALE2_bp 6 /* Baud Rate Scale bit 2 position. */ +#define USART_BSCALE3_bm (1<<7) /* Baud Rate Scale bit 3 mask. */ +#define USART_BSCALE3_bp 7 /* Baud Rate Scale bit 3 position. */ + +/* USART_BSEL_gm Predefined. */ +/* USART_BSEL_gp Predefined. */ +/* USART_BSEL0_bm Predefined. */ +/* USART_BSEL0_bp Predefined. */ +/* USART_BSEL1_bm Predefined. */ +/* USART_BSEL1_bp Predefined. */ +/* USART_BSEL2_bm Predefined. */ +/* USART_BSEL2_bp Predefined. */ +/* USART_BSEL3_bm Predefined. */ +/* USART_BSEL3_bp Predefined. */ + + +/* SPI - Serial Peripheral Interface */ +/* SPI.CTRL bit masks and bit positions */ +#define SPI_CLK2X_bm 0x80 /* Enable Double Speed bit mask. */ +#define SPI_CLK2X_bp 7 /* Enable Double Speed bit position. */ + +#define SPI_ENABLE_bm 0x40 /* Enable Module bit mask. */ +#define SPI_ENABLE_bp 6 /* Enable Module bit position. */ + +#define SPI_DORD_bm 0x20 /* Data Order Setting bit mask. */ +#define SPI_DORD_bp 5 /* Data Order Setting bit position. */ + +#define SPI_MASTER_bm 0x10 /* Master Operation Enable bit mask. */ +#define SPI_MASTER_bp 4 /* Master Operation Enable bit position. */ + +#define SPI_MODE_gm 0x0C /* SPI Mode group mask. */ +#define SPI_MODE_gp 2 /* SPI Mode group position. */ +#define SPI_MODE0_bm (1<<2) /* SPI Mode bit 0 mask. */ +#define SPI_MODE0_bp 2 /* SPI Mode bit 0 position. */ +#define SPI_MODE1_bm (1<<3) /* SPI Mode bit 1 mask. */ +#define SPI_MODE1_bp 3 /* SPI Mode bit 1 position. */ + +#define SPI_PRESCALER_gm 0x03 /* Prescaler group mask. */ +#define SPI_PRESCALER_gp 0 /* Prescaler group position. */ +#define SPI_PRESCALER0_bm (1<<0) /* Prescaler bit 0 mask. */ +#define SPI_PRESCALER0_bp 0 /* Prescaler bit 0 position. */ +#define SPI_PRESCALER1_bm (1<<1) /* Prescaler bit 1 mask. */ +#define SPI_PRESCALER1_bp 1 /* Prescaler bit 1 position. */ + + +/* SPI.INTCTRL bit masks and bit positions */ +#define SPI_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define SPI_INTLVL_gp 0 /* Interrupt level group position. */ +#define SPI_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define SPI_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define SPI_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define SPI_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + +/* SPI.STATUS bit masks and bit positions */ +#define SPI_IF_bm 0x80 /* Interrupt Flag bit mask. */ +#define SPI_IF_bp 7 /* Interrupt Flag bit position. */ + +#define SPI_WRCOL_bm 0x40 /* Write Collision bit mask. */ +#define SPI_WRCOL_bp 6 /* Write Collision bit position. */ + + +/* IRCOM - IR Communication Module */ +/* IRCOM.CTRL bit masks and bit positions */ +#define IRCOM_EVSEL_gm 0x0F /* Event Channel Select group mask. */ +#define IRCOM_EVSEL_gp 0 /* Event Channel Select group position. */ +#define IRCOM_EVSEL0_bm (1<<0) /* Event Channel Select bit 0 mask. */ +#define IRCOM_EVSEL0_bp 0 /* Event Channel Select bit 0 position. */ +#define IRCOM_EVSEL1_bm (1<<1) /* Event Channel Select bit 1 mask. */ +#define IRCOM_EVSEL1_bp 1 /* Event Channel Select bit 1 position. */ +#define IRCOM_EVSEL2_bm (1<<2) /* Event Channel Select bit 2 mask. */ +#define IRCOM_EVSEL2_bp 2 /* Event Channel Select bit 2 position. */ +#define IRCOM_EVSEL3_bm (1<<3) /* Event Channel Select bit 3 mask. */ +#define IRCOM_EVSEL3_bp 3 /* Event Channel Select bit 3 position. */ + + +/* AES - AES Module */ +/* AES.CTRL bit masks and bit positions */ +#define AES_START_bm 0x80 /* Start/Run bit mask. */ +#define AES_START_bp 7 /* Start/Run bit position. */ + +#define AES_AUTO_bm 0x40 /* Auto Start Trigger bit mask. */ +#define AES_AUTO_bp 6 /* Auto Start Trigger bit position. */ + +#define AES_RESET_bm 0x20 /* AES Software Reset bit mask. */ +#define AES_RESET_bp 5 /* AES Software Reset bit position. */ + +#define AES_DECRYPT_bm 0x10 /* Decryption / Direction bit mask. */ +#define AES_DECRYPT_bp 4 /* Decryption / Direction bit position. */ + +#define AES_XOR_bm 0x04 /* State XOR Load Enable bit mask. */ +#define AES_XOR_bp 2 /* State XOR Load Enable bit position. */ + + +/* AES.STATUS bit masks and bit positions */ +#define AES_ERROR_bm 0x80 /* AES Error bit mask. */ +#define AES_ERROR_bp 7 /* AES Error bit position. */ + +#define AES_SRIF_bm 0x01 /* State Ready Interrupt Flag bit mask. */ +#define AES_SRIF_bp 0 /* State Ready Interrupt Flag bit position. */ + + +/* AES.INTCTRL bit masks and bit positions */ +#define AES_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define AES_INTLVL_gp 0 /* Interrupt level group position. */ +#define AES_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define AES_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define AES_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define AES_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + +/* VBAT - VBAT Battery Backup Module */ +/* VBAT.CTRL bit masks and bit positions */ +#define VBAT_XOSCSEL_bm 0x10 /* 32-kHz Crystal Oscillator Output Selection bit mask. */ +#define VBAT_XOSCSEL_bp 4 /* 32-kHz Crystal Oscillator Output Selection bit position. */ + +#define VBAT_XOSCEN_bm 0x08 /* Crystal Oscillator Enable bit mask. */ +#define VBAT_XOSCEN_bp 3 /* Crystal Oscillator Enable bit position. */ + +#define VBAT_XOSCFDEN_bm 0x04 /* Crystal Oscillator Failure Detection Monitor Enable bit mask. */ +#define VBAT_XOSCFDEN_bp 2 /* Crystal Oscillator Failure Detection Monitor Enable bit position. */ + +#define VBAT_ACCEN_bm 0x02 /* Battery Backup Access Enable bit mask. */ +#define VBAT_ACCEN_bp 1 /* Battery Backup Access Enable bit position. */ + +#define VBAT_RESET_bm 0x01 /* Battery Backup Reset bit mask. */ +#define VBAT_RESET_bp 0 /* Battery Backup Reset bit position. */ + + +/* VBAT.STATUS bit masks and bit positions */ +#define VBAT_BBPWR_bm 0x80 /* Battery backup Power bit mask. */ +#define VBAT_BBPWR_bp 7 /* Battery backup Power bit position. */ + +#define VBAT_XOSCRDY_bm 0x08 /* Crystal Oscillator Ready bit mask. */ +#define VBAT_XOSCRDY_bp 3 /* Crystal Oscillator Ready bit position. */ + +#define VBAT_XOSCFAIL_bm 0x04 /* Crystal Oscillator Failure bit mask. */ +#define VBAT_XOSCFAIL_bp 2 /* Crystal Oscillator Failure bit position. */ + +#define VBAT_BBBORF_bm 0x02 /* Battery Backup Brown-Out Reset Flag bit mask. */ +#define VBAT_BBBORF_bp 1 /* Battery Backup Brown-Out Reset Flag bit position. */ + +#define VBAT_BBPORF_bm 0x01 /* Battery Backup Power-On Reset Flag bit mask. */ +#define VBAT_BBPORF_bp 0 /* Battery Backup Power-On Reset Flag bit position. */ + + + +// Generic Port Pins + +#define PIN0_bm 0x01 +#define PIN0_bp 0 +#define PIN1_bm 0x02 +#define PIN1_bp 1 +#define PIN2_bm 0x04 +#define PIN2_bp 2 +#define PIN3_bm 0x08 +#define PIN3_bp 3 +#define PIN4_bm 0x10 +#define PIN4_bp 4 +#define PIN5_bm 0x20 +#define PIN5_bp 5 +#define PIN6_bm 0x40 +#define PIN6_bp 6 +#define PIN7_bm 0x80 +#define PIN7_bp 7 + + +/* ========== Interrupt Vector Definitions ========== */ +/* Vector 0 is the reset vector */ + +/* OSC interrupt vectors */ +#define OSC_XOSCF_vect_num 1 +#define OSC_XOSCF_vect _VECTOR(1) /* External Oscillator Failure Interrupt (NMI) */ + +/* PORTC interrupt vectors */ +#define PORTC_INT0_vect_num 2 +#define PORTC_INT0_vect _VECTOR(2) /* External Interrupt 0 */ +#define PORTC_INT1_vect_num 3 +#define PORTC_INT1_vect _VECTOR(3) /* External Interrupt 1 */ + +/* PORTR interrupt vectors */ +#define PORTR_INT0_vect_num 4 +#define PORTR_INT0_vect _VECTOR(4) /* External Interrupt 0 */ +#define PORTR_INT1_vect_num 5 +#define PORTR_INT1_vect _VECTOR(5) /* External Interrupt 1 */ + +/* DMA interrupt vectors */ +#define DMA_CH0_vect_num 6 +#define DMA_CH0_vect _VECTOR(6) /* Channel 0 Interrupt */ +#define DMA_CH1_vect_num 7 +#define DMA_CH1_vect _VECTOR(7) /* Channel 1 Interrupt */ +#define DMA_CH2_vect_num 8 +#define DMA_CH2_vect _VECTOR(8) /* Channel 2 Interrupt */ +#define DMA_CH3_vect_num 9 +#define DMA_CH3_vect _VECTOR(9) /* Channel 3 Interrupt */ + +/* RTC32 interrupt vectors */ +#define RTC32_OVF_vect_num 10 +#define RTC32_OVF_vect _VECTOR(10) /* Overflow Interrupt */ +#define RTC32_COMP_vect_num 11 +#define RTC32_COMP_vect _VECTOR(11) /* Compare Interrupt */ + +/* TWIC interrupt vectors */ +#define TWIC_TWIS_vect_num 12 +#define TWIC_TWIS_vect _VECTOR(12) /* TWI Slave Interrupt */ +#define TWIC_TWIM_vect_num 13 +#define TWIC_TWIM_vect _VECTOR(13) /* TWI Master Interrupt */ + +/* TCC0 interrupt vectors */ +#define TCC0_OVF_vect_num 14 +#define TCC0_OVF_vect _VECTOR(14) /* Overflow Interrupt */ +#define TCC0_ERR_vect_num 15 +#define TCC0_ERR_vect _VECTOR(15) /* Error Interrupt */ +#define TCC0_CCA_vect_num 16 +#define TCC0_CCA_vect _VECTOR(16) /* Compare or Capture A Interrupt */ +#define TCC0_CCB_vect_num 17 +#define TCC0_CCB_vect _VECTOR(17) /* Compare or Capture B Interrupt */ +#define TCC0_CCC_vect_num 18 +#define TCC0_CCC_vect _VECTOR(18) /* Compare or Capture C Interrupt */ +#define TCC0_CCD_vect_num 19 +#define TCC0_CCD_vect _VECTOR(19) /* Compare or Capture D Interrupt */ + +/* TCC1 interrupt vectors */ +#define TCC1_OVF_vect_num 20 +#define TCC1_OVF_vect _VECTOR(20) /* Overflow Interrupt */ +#define TCC1_ERR_vect_num 21 +#define TCC1_ERR_vect _VECTOR(21) /* Error Interrupt */ +#define TCC1_CCA_vect_num 22 +#define TCC1_CCA_vect _VECTOR(22) /* Compare or Capture A Interrupt */ +#define TCC1_CCB_vect_num 23 +#define TCC1_CCB_vect _VECTOR(23) /* Compare or Capture B Interrupt */ + +/* SPIC interrupt vectors */ +#define SPIC_INT_vect_num 24 +#define SPIC_INT_vect _VECTOR(24) /* SPI Interrupt */ + +/* USARTC0 interrupt vectors */ +#define USARTC0_RXC_vect_num 25 +#define USARTC0_RXC_vect _VECTOR(25) /* Reception Complete Interrupt */ +#define USARTC0_DRE_vect_num 26 +#define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ +#define USARTC0_TXC_vect_num 27 +#define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ + +/* USARTC1 interrupt vectors */ +#define USARTC1_RXC_vect_num 28 +#define USARTC1_RXC_vect _VECTOR(28) /* Reception Complete Interrupt */ +#define USARTC1_DRE_vect_num 29 +#define USARTC1_DRE_vect _VECTOR(29) /* Data Register Empty Interrupt */ +#define USARTC1_TXC_vect_num 30 +#define USARTC1_TXC_vect _VECTOR(30) /* Transmission Complete Interrupt */ + +/* AES interrupt vectors */ +#define AES_INT_vect_num 31 +#define AES_INT_vect _VECTOR(31) /* AES Interrupt */ + +/* NVM interrupt vectors */ +#define NVM_EE_vect_num 32 +#define NVM_EE_vect _VECTOR(32) /* EE Interrupt */ +#define NVM_SPM_vect_num 33 +#define NVM_SPM_vect _VECTOR(33) /* SPM Interrupt */ + +/* PORTB interrupt vectors */ +#define PORTB_INT0_vect_num 34 +#define PORTB_INT0_vect _VECTOR(34) /* External Interrupt 0 */ +#define PORTB_INT1_vect_num 35 +#define PORTB_INT1_vect _VECTOR(35) /* External Interrupt 1 */ + +/* ACB interrupt vectors */ +#define ACB_AC0_vect_num 36 +#define ACB_AC0_vect _VECTOR(36) /* AC0 Interrupt */ +#define ACB_AC1_vect_num 37 +#define ACB_AC1_vect _VECTOR(37) /* AC1 Interrupt */ +#define ACB_ACW_vect_num 38 +#define ACB_ACW_vect _VECTOR(38) /* ACW Window Mode Interrupt */ + +/* ADCB interrupt vectors */ +#define ADCB_CH0_vect_num 39 +#define ADCB_CH0_vect _VECTOR(39) /* Interrupt 0 */ +#define ADCB_CH1_vect_num 40 +#define ADCB_CH1_vect _VECTOR(40) /* Interrupt 1 */ +#define ADCB_CH2_vect_num 41 +#define ADCB_CH2_vect _VECTOR(41) /* Interrupt 2 */ +#define ADCB_CH3_vect_num 42 +#define ADCB_CH3_vect _VECTOR(42) /* Interrupt 3 */ + +/* PORTE interrupt vectors */ +#define PORTE_INT0_vect_num 43 +#define PORTE_INT0_vect _VECTOR(43) /* External Interrupt 0 */ +#define PORTE_INT1_vect_num 44 +#define PORTE_INT1_vect _VECTOR(44) /* External Interrupt 1 */ + +/* TWIE interrupt vectors */ +#define TWIE_TWIS_vect_num 45 +#define TWIE_TWIS_vect _VECTOR(45) /* TWI Slave Interrupt */ +#define TWIE_TWIM_vect_num 46 +#define TWIE_TWIM_vect _VECTOR(46) /* TWI Master Interrupt */ + +/* TCE0 interrupt vectors */ +#define TCE0_OVF_vect_num 47 +#define TCE0_OVF_vect _VECTOR(47) /* Overflow Interrupt */ +#define TCE0_ERR_vect_num 48 +#define TCE0_ERR_vect _VECTOR(48) /* Error Interrupt */ +#define TCE0_CCA_vect_num 49 +#define TCE0_CCA_vect _VECTOR(49) /* Compare or Capture A Interrupt */ +#define TCE0_CCB_vect_num 50 +#define TCE0_CCB_vect _VECTOR(50) /* Compare or Capture B Interrupt */ +#define TCE0_CCC_vect_num 51 +#define TCE0_CCC_vect _VECTOR(51) /* Compare or Capture C Interrupt */ +#define TCE0_CCD_vect_num 52 +#define TCE0_CCD_vect _VECTOR(52) /* Compare or Capture D Interrupt */ + +/* TCE1 interrupt vectors */ +#define TCE1_OVF_vect_num 53 +#define TCE1_OVF_vect _VECTOR(53) /* Overflow Interrupt */ +#define TCE1_ERR_vect_num 54 +#define TCE1_ERR_vect _VECTOR(54) /* Error Interrupt */ +#define TCE1_CCA_vect_num 55 +#define TCE1_CCA_vect _VECTOR(55) /* Compare or Capture A Interrupt */ +#define TCE1_CCB_vect_num 56 +#define TCE1_CCB_vect _VECTOR(56) /* Compare or Capture B Interrupt */ + +/* USARTE0 interrupt vectors */ +#define USARTE0_RXC_vect_num 58 +#define USARTE0_RXC_vect _VECTOR(58) /* Reception Complete Interrupt */ +#define USARTE0_DRE_vect_num 59 +#define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ +#define USARTE0_TXC_vect_num 60 +#define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ + +/* PORTD interrupt vectors */ +#define PORTD_INT0_vect_num 64 +#define PORTD_INT0_vect _VECTOR(64) /* External Interrupt 0 */ +#define PORTD_INT1_vect_num 65 +#define PORTD_INT1_vect _VECTOR(65) /* External Interrupt 1 */ + +/* PORTA interrupt vectors */ +#define PORTA_INT0_vect_num 66 +#define PORTA_INT0_vect _VECTOR(66) /* External Interrupt 0 */ +#define PORTA_INT1_vect_num 67 +#define PORTA_INT1_vect _VECTOR(67) /* External Interrupt 1 */ + +/* ACA interrupt vectors */ +#define ACA_AC0_vect_num 68 +#define ACA_AC0_vect _VECTOR(68) /* AC0 Interrupt */ +#define ACA_AC1_vect_num 69 +#define ACA_AC1_vect _VECTOR(69) /* AC1 Interrupt */ +#define ACA_ACW_vect_num 70 +#define ACA_ACW_vect _VECTOR(70) /* ACW Window Mode Interrupt */ + +/* ADCA interrupt vectors */ +#define ADCA_CH0_vect_num 71 +#define ADCA_CH0_vect _VECTOR(71) /* Interrupt 0 */ +#define ADCA_CH1_vect_num 72 +#define ADCA_CH1_vect _VECTOR(72) /* Interrupt 1 */ +#define ADCA_CH2_vect_num 73 +#define ADCA_CH2_vect _VECTOR(73) /* Interrupt 2 */ +#define ADCA_CH3_vect_num 74 +#define ADCA_CH3_vect _VECTOR(74) /* Interrupt 3 */ + +/* TCD0 interrupt vectors */ +#define TCD0_OVF_vect_num 77 +#define TCD0_OVF_vect _VECTOR(77) /* Overflow Interrupt */ +#define TCD0_ERR_vect_num 78 +#define TCD0_ERR_vect _VECTOR(78) /* Error Interrupt */ +#define TCD0_CCA_vect_num 79 +#define TCD0_CCA_vect _VECTOR(79) /* Compare or Capture A Interrupt */ +#define TCD0_CCB_vect_num 80 +#define TCD0_CCB_vect _VECTOR(80) /* Compare or Capture B Interrupt */ +#define TCD0_CCC_vect_num 81 +#define TCD0_CCC_vect _VECTOR(81) /* Compare or Capture C Interrupt */ +#define TCD0_CCD_vect_num 82 +#define TCD0_CCD_vect _VECTOR(82) /* Compare or Capture D Interrupt */ + +/* TCD1 interrupt vectors */ +#define TCD1_OVF_vect_num 83 +#define TCD1_OVF_vect _VECTOR(83) /* Overflow Interrupt */ +#define TCD1_ERR_vect_num 84 +#define TCD1_ERR_vect _VECTOR(84) /* Error Interrupt */ +#define TCD1_CCA_vect_num 85 +#define TCD1_CCA_vect _VECTOR(85) /* Compare or Capture A Interrupt */ +#define TCD1_CCB_vect_num 86 +#define TCD1_CCB_vect _VECTOR(86) /* Compare or Capture B Interrupt */ + +/* SPID interrupt vectors */ +#define SPID_INT_vect_num 87 +#define SPID_INT_vect _VECTOR(87) /* SPI Interrupt */ + +/* USARTD0 interrupt vectors */ +#define USARTD0_RXC_vect_num 88 +#define USARTD0_RXC_vect _VECTOR(88) /* Reception Complete Interrupt */ +#define USARTD0_DRE_vect_num 89 +#define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ +#define USARTD0_TXC_vect_num 90 +#define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ + +/* USARTD1 interrupt vectors */ +#define USARTD1_RXC_vect_num 91 +#define USARTD1_RXC_vect _VECTOR(91) /* Reception Complete Interrupt */ +#define USARTD1_DRE_vect_num 92 +#define USARTD1_DRE_vect _VECTOR(92) /* Data Register Empty Interrupt */ +#define USARTD1_TXC_vect_num 93 +#define USARTD1_TXC_vect _VECTOR(93) /* Transmission Complete Interrupt */ + +/* PORTF interrupt vectors */ +#define PORTF_INT0_vect_num 104 +#define PORTF_INT0_vect _VECTOR(104) /* External Interrupt 0 */ +#define PORTF_INT1_vect_num 105 +#define PORTF_INT1_vect _VECTOR(105) /* External Interrupt 1 */ + +/* TCF0 interrupt vectors */ +#define TCF0_OVF_vect_num 108 +#define TCF0_OVF_vect _VECTOR(108) /* Overflow Interrupt */ +#define TCF0_ERR_vect_num 109 +#define TCF0_ERR_vect _VECTOR(109) /* Error Interrupt */ +#define TCF0_CCA_vect_num 110 +#define TCF0_CCA_vect _VECTOR(110) /* Compare or Capture A Interrupt */ +#define TCF0_CCB_vect_num 111 +#define TCF0_CCB_vect _VECTOR(111) /* Compare or Capture B Interrupt */ +#define TCF0_CCC_vect_num 112 +#define TCF0_CCC_vect _VECTOR(112) /* Compare or Capture C Interrupt */ +#define TCF0_CCD_vect_num 113 +#define TCF0_CCD_vect _VECTOR(113) /* Compare or Capture D Interrupt */ + +/* USARTF0 interrupt vectors */ +#define USARTF0_RXC_vect_num 119 +#define USARTF0_RXC_vect _VECTOR(119) /* Reception Complete Interrupt */ +#define USARTF0_DRE_vect_num 120 +#define USARTF0_DRE_vect _VECTOR(120) /* Data Register Empty Interrupt */ +#define USARTF0_TXC_vect_num 121 +#define USARTF0_TXC_vect _VECTOR(121) /* Transmission Complete Interrupt */ + + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (122 * _VECTOR_SIZE) + + +/* ========== Constants ========== */ + +#define PROGMEM_START (0x0000) +#define PROGMEM_SIZE (270336) +#define PROGMEM_END (PROGMEM_START + PROGMEM_SIZE - 1) + +#define APP_SECTION_START (0x0000) +#define APP_SECTION_SIZE (262144) +#define APP_SECTION_END (APP_SECTION_START + APP_SECTION_SIZE - 1) + +#define APPTABLE_SECTION_START (0x3E000) +#define APPTABLE_SECTION_SIZE (8192) +#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) + +#define BOOT_SECTION_START (0x40000) +#define BOOT_SECTION_SIZE (8192) +#define BOOT_SECTION_END (BOOT_SECTION_START + BOOT_SECTION_SIZE - 1) + +#define DATAMEM_START (0x0000) +#define DATAMEM_SIZE (24576) +#define DATAMEM_END (DATAMEM_START + DATAMEM_SIZE - 1) + +#define IO_START (0x0000) +#define IO_SIZE (4096) +#define IO_END (IO_START + IO_SIZE - 1) + +#define MAPPED_EEPROM_START (0x1000) +#define MAPPED_EEPROM_SIZE (4096) +#define MAPPED_EEPROM_END (MAPPED_EEPROM_START + MAPPED_EEPROM_SIZE - 1) + +#define INTERNAL_SRAM_START (0x2000) +#define INTERNAL_SRAM_SIZE (16384) +#define INTERNAL_SRAM_END (INTERNAL_SRAM_START + INTERNAL_SRAM_SIZE - 1) + +#define EEPROM_START (0x0000) +#define EEPROM_SIZE (4096) +#define EEPROM_END (EEPROM_START + EEPROM_SIZE - 1) + +#define FUSE_START (0x0000) +#define FUSE_SIZE (6) +#define FUSE_END (FUSE_START + FUSE_SIZE - 1) + +#define LOCKBIT_START (0x0000) +#define LOCKBIT_SIZE (1) +#define LOCKBIT_END (LOCKBIT_START + LOCKBIT_SIZE - 1) + +#define SIGNATURES_START (0x0000) +#define SIGNATURES_SIZE (3) +#define SIGNATURES_END (SIGNATURES_START + SIGNATURES_SIZE - 1) + +#define USER_SIGNATURES_START (0x0000) +#define USER_SIGNATURES_SIZE (512) +#define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) + +#define PROD_SIGNATURES_START (0x0000) +#define PROD_SIGNATURES_SIZE (52) +#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) + +#define FLASHEND PROGMEM_END +#define SPM_PAGESIZE PROGMEM_PAGE_SIZE +#define RAMSTART INTERNAL_SRAM_START +#define RAMSIZE INTERNAL_SRAM_SIZE +#define RAMEND INTERNAL_SRAM_END +#define XRAMSTART EXTERNAL_SRAM_START +#define XRAMSIZE EXTERNAL_SRAM_SIZE +#define XRAMEND INTERNAL_SRAM_END +#define E2END EEPROM_END +#define E2PAGESIZE EEPROM_PAGE_SIZE + + +/* ========== Fuses ========== */ +#define FUSE_MEMORY_SIZE 6 + +/* Fuse Byte 0 */ +#define FUSE_JTAGUSERID0 ~_BV(0) /* JTAG User ID Bit 0 */ +#define FUSE_JTAGUSERID1 ~_BV(1) /* JTAG User ID Bit 1 */ +#define FUSE_JTAGUSERID2 ~_BV(2) /* JTAG User ID Bit 2 */ +#define FUSE_JTAGUSERID3 ~_BV(3) /* JTAG User ID Bit 3 */ +#define FUSE_JTAGUSERID4 ~_BV(4) /* JTAG User ID Bit 4 */ +#define FUSE_JTAGUSERID5 ~_BV(5) /* JTAG User ID Bit 5 */ +#define FUSE_JTAGUSERID6 ~_BV(6) /* JTAG User ID Bit 6 */ +#define FUSE_JTAGUSERID7 ~_BV(7) /* JTAG User ID Bit 7 */ +#define FUSE0_DEFAULT (0xFF) + +/* Fuse Byte 1 */ +#define FUSE_WDP0 ~_BV(0) /* Watchdog Timeout Period Bit 0 */ +#define FUSE_WDP1 ~_BV(1) /* Watchdog Timeout Period Bit 1 */ +#define FUSE_WDP2 ~_BV(2) /* Watchdog Timeout Period Bit 2 */ +#define FUSE_WDP3 ~_BV(3) /* Watchdog Timeout Period Bit 3 */ +#define FUSE_WDWP0 ~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ +#define FUSE_WDWP1 ~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ +#define FUSE_WDWP2 ~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ +#define FUSE_WDWP3 ~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ +#define FUSE1_DEFAULT (0xFF) + +/* Fuse Byte 2 */ +#define FUSE_BODPD0 ~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ +#define FUSE_BODPD1 ~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ +#define FUSE_BODACT0 ~_BV(2) /* BOD Operation in Active Mode Bit 0 */ +#define FUSE_BODACT1 ~_BV(3) /* BOD Operation in Active Mode Bit 1 */ +#define FUSE_BOOTRST ~_BV(6) /* Boot Loader Section Reset Vector */ +#define FUSE_DVSDON ~_BV(7) /* Spike Detector Enable */ +#define FUSE2_DEFAULT (0xFF) + +/* Fuse Byte 3 Reserved */ + +/* Fuse Byte 4 */ +#define FUSE_JTAGEN ~_BV(0) /* JTAG Interface Enable */ +#define FUSE_WDLOCK ~_BV(1) /* Watchdog Timer Lock */ +#define FUSE_SUT0 ~_BV(2) /* Start-up Time Bit 0 */ +#define FUSE_SUT1 ~_BV(3) /* Start-up Time Bit 1 */ +#define FUSE4_DEFAULT (0xFF) + +/* Fuse Byte 5 */ +#define FUSE_BODLVL0 ~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ +#define FUSE_BODLVL1 ~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ +#define FUSE_BODLVL2 ~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ +#define FUSE_EESAVE ~_BV(3) /* Preserve EEPROM Through Chip Erase */ +#define FUSE5_DEFAULT (0xFF) + + +/* ========== Lock Bits ========== */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_BITS_EXIST +#define __BOOT_LOCK_BOOT_BITS_EXIST + + +/* ========== Signature ========== */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x98 +#define SIGNATURE_2 0x43 + + +#endif /* _AVR_ATxmega256A3B_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox64a1.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox64a1.h new file mode 100644 index 0000000..3361564 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox64a1.h @@ -0,0 +1,7099 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iox64a1.h,v 1.1.2.11 2008/11/03 04:13:17 arcanum Exp $ */ + +/* avr/iox64a1.h - definitions for ATxmega64A1 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iox64a1.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATxmega64A1_H_ +#define _AVR_ATxmega64A1_H_ 1 + + +/* Ungrouped common registers */ +#define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ +#define GPIO1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ +#define GPIO2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ +#define GPIO3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ +#define GPIO4 _SFR_MEM8(0x0004) /* General Purpose IO Register 4 */ +#define GPIO5 _SFR_MEM8(0x0005) /* General Purpose IO Register 5 */ +#define GPIO6 _SFR_MEM8(0x0006) /* General Purpose IO Register 6 */ +#define GPIO7 _SFR_MEM8(0x0007) /* General Purpose IO Register 7 */ +#define GPIO8 _SFR_MEM8(0x0008) /* General Purpose IO Register 8 */ +#define GPIO9 _SFR_MEM8(0x0009) /* General Purpose IO Register 9 */ +#define GPIOA _SFR_MEM8(0x000A) /* General Purpose IO Register 10 */ +#define GPIOB _SFR_MEM8(0x000B) /* General Purpose IO Register 11 */ +#define GPIOC _SFR_MEM8(0x000C) /* General Purpose IO Register 12 */ +#define GPIOD _SFR_MEM8(0x000D) /* General Purpose IO Register 13 */ +#define GPIOE _SFR_MEM8(0x000E) /* General Purpose IO Register 14 */ +#define GPIOF _SFR_MEM8(0x000F) /* General Purpose IO Register 15 */ + +#define CCP _SFR_MEM8(0x0034) /* Configuration Change Protection */ +#define RAMPD _SFR_MEM8(0x0038) /* Ramp D */ +#define RAMPX _SFR_MEM8(0x0039) /* Ramp X */ +#define RAMPY _SFR_MEM8(0x003A) /* Ramp Y */ +#define RAMPZ _SFR_MEM8(0x003B) /* Ramp Z */ +#define EIND _SFR_MEM8(0x003C) /* Extended Indirect Jump */ +#define SPL _SFR_MEM8(0x003D) /* Stack Pointer Low */ +#define SPH _SFR_MEM8(0x003E) /* Stack Pointer High */ +#define SREG _SFR_MEM8(0x003F) /* Status Register */ + + +/* C Language Only */ +#if !defined (__ASSEMBLER__) + +#include + +typedef volatile uint8_t register8_t; +typedef volatile uint16_t register16_t; +typedef volatile uint32_t register32_t; + + +#ifdef _WORDREGISTER +#undef _WORDREGISTER +#endif +#define _WORDREGISTER(regname) \ + union \ + { \ + register16_t regname; \ + struct \ + { \ + register8_t regname ## L; \ + register8_t regname ## H; \ + }; \ + } + +#ifdef _DWORDREGISTER +#undef _DWORDREGISTER +#endif +#define _DWORDREGISTER(regname) \ + union \ + { \ + register32_t regname; \ + struct \ + { \ + register8_t regname ## 0; \ + register8_t regname ## 1; \ + register8_t regname ## 2; \ + register8_t regname ## 3; \ + }; \ + } + + +/* +========================================================================== +IO Module Structures +========================================================================== +*/ + + +/* +-------------------------------------------------------------------------- +XOCD - On-Chip Debug System +-------------------------------------------------------------------------- +*/ + +/* On-Chip Debug System */ +typedef struct OCD_struct +{ + register8_t OCDR0; /* OCD Register 0 */ + register8_t OCDR1; /* OCD Register 1 */ +} OCD_t; + + +/* CCP signatures */ +typedef enum CCP_enum +{ + CCP_SPM_gc = (0x9D<<0), /* SPM Instruction Protection */ + CCP_IOREG_gc = (0xD8<<0), /* IO Register Protection */ +} CCP_t; + + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Clock System */ +typedef struct CLK_struct +{ + register8_t CTRL; /* Control Register */ + register8_t PSCTRL; /* Prescaler Control Register */ + register8_t LOCK; /* Lock register */ + register8_t RTCCTRL; /* RTC Control Register */ +} CLK_t; + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Power Reduction */ +typedef struct PR_struct +{ + register8_t PR; /* General Power Reduction */ + register8_t PRPA; /* Power Reduction Port A */ + register8_t PRPB; /* Power Reduction Port B */ + register8_t PRPC; /* Power Reduction Port C */ + register8_t PRPD; /* Power Reduction Port D */ + register8_t PRPE; /* Power Reduction Port E */ + register8_t PRPF; /* Power Reduction Port F */ +} PR_t; + +/* System Clock Selection */ +typedef enum CLK_SCLKSEL_enum +{ + CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2MHz RC Oscillator */ + CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32MHz RC Oscillator */ + CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32kHz RC Oscillator */ + CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ + CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ +} CLK_SCLKSEL_t; + +/* Prescaler A Division Factor */ +typedef enum CLK_PSADIV_enum +{ + CLK_PSADIV_1_gc = (0x00<<2), /* Divide by 1 */ + CLK_PSADIV_2_gc = (0x01<<2), /* Divide by 2 */ + CLK_PSADIV_4_gc = (0x03<<2), /* Divide by 4 */ + CLK_PSADIV_8_gc = (0x05<<2), /* Divide by 8 */ + CLK_PSADIV_16_gc = (0x07<<2), /* Divide by 16 */ + CLK_PSADIV_32_gc = (0x09<<2), /* Divide by 32 */ + CLK_PSADIV_64_gc = (0x0B<<2), /* Divide by 64 */ + CLK_PSADIV_128_gc = (0x0D<<2), /* Divide by 128 */ + CLK_PSADIV_256_gc = (0x0F<<2), /* Divide by 256 */ + CLK_PSADIV_512_gc = (0x11<<2), /* Divide by 512 */ +} CLK_PSADIV_t; + +/* Prescaler B and C Division Factor */ +typedef enum CLK_PSBCDIV_enum +{ + CLK_PSBCDIV_1_1_gc = (0x00<<0), /* Divide B by 1 and C by 1 */ + CLK_PSBCDIV_1_2_gc = (0x01<<0), /* Divide B by 1 and C by 2 */ + CLK_PSBCDIV_4_1_gc = (0x02<<0), /* Divide B by 4 and C by 1 */ + CLK_PSBCDIV_2_2_gc = (0x03<<0), /* Divide B by 2 and C by 2 */ +} CLK_PSBCDIV_t; + +/* RTC Clock Source */ +typedef enum CLK_RTCSRC_enum +{ + CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1kHz from internal 32kHz ULP */ + CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1kHz from internal 32kHz RC oscillator */ + CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32kHz from 32kHz crystal oscillator on TOSC */ +} CLK_RTCSRC_t; + + +/* +-------------------------------------------------------------------------- +SLEEP - Sleep Controller +-------------------------------------------------------------------------- +*/ + +/* Sleep Controller */ +typedef struct SLEEP_struct +{ + register8_t CTRL; /* Control Register */ +} SLEEP_t; + +/* Sleep Mode */ +typedef enum SLEEP_SMODE_enum +{ + SLEEP_SMODE_IDLE_gc = (0x00<<1), /* Idle mode */ + SLEEP_SMODE_PDOWN_gc = (0x02<<1), /* Power-down Mode */ + SLEEP_SMODE_PSAVE_gc = (0x03<<1), /* Power-save Mode */ + SLEEP_SMODE_STDBY_gc = (0x06<<1), /* Standby Mode */ + SLEEP_SMODE_ESTDBY_gc = (0x07<<1), /* Extended Standby Mode */ +} SLEEP_SMODE_t; + + +/* +-------------------------------------------------------------------------- +OSC - Oscillator +-------------------------------------------------------------------------- +*/ + +/* Oscillator */ +typedef struct OSC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t XOSCCTRL; /* External Oscillator Control Register */ + register8_t XOSCFAIL; /* External Oscillator Failure Detection Register */ + register8_t RC32KCAL; /* 32kHz Internal Oscillator Calibration Register */ + register8_t PLLCTRL; /* PLL Control REgister */ + register8_t DFLLCTRL; /* DFLL Control Register */ +} OSC_t; + +/* Oscillator Frequency Range */ +typedef enum OSC_FRQRANGE_enum +{ + OSC_FRQRANGE_04TO2_gc = (0x00<<6), /* 0.4 - 2 MHz */ + OSC_FRQRANGE_2TO9_gc = (0x01<<6), /* 2 - 9 MHz */ + OSC_FRQRANGE_9TO12_gc = (0x02<<6), /* 9 - 12 MHz */ + OSC_FRQRANGE_12TO16_gc = (0x03<<6), /* 12 - 16 MHz */ +} OSC_FRQRANGE_t; + +/* External Oscillator Selection and Startup Time */ +typedef enum OSC_XOSCSEL_enum +{ + OSC_XOSCSEL_EXTCLK_gc = (0x00<<0), /* External Clock - 6 CLK */ + OSC_XOSCSEL_32KHz_gc = (0x02<<0), /* 32kHz TOSC - 32K CLK */ + OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), /* 0.4-16MHz XTAL - 256 CLK */ + OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), /* 0.4-16MHz XTAL - 1K CLK */ + OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), /* 0.4-16MHz XTAL - 16K CLK */ +} OSC_XOSCSEL_t; + +/* PLL Clock Source */ +typedef enum OSC_PLLSRC_enum +{ + OSC_PLLSRC_RC2M_gc = (0x00<<6), /* Internal 2MHz RC Oscillator */ + OSC_PLLSRC_RC32M_gc = (0x02<<6), /* Internal 32MHz RC Oscillator */ + OSC_PLLSRC_XOSC_gc = (0x03<<6), /* External Oscillator */ +} OSC_PLLSRC_t; + + +/* +-------------------------------------------------------------------------- +DFLL - DFLL +-------------------------------------------------------------------------- +*/ + +/* DFLL */ +typedef struct DFLL_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t CALA; /* Calibration Register A */ + register8_t CALB; /* Calibration Register B */ + register8_t OSCCNT0; /* Oscillator Counter Register 0 */ + register8_t OSCCNT1; /* Oscillator Counter Register 1 */ + register8_t OSCCNT2; /* Oscillator Counter Register 2 */ + register8_t reserved_0x07; +} DFLL_t; + + +/* +-------------------------------------------------------------------------- +RST - Reset +-------------------------------------------------------------------------- +*/ + +/* Reset */ +typedef struct RST_struct +{ + register8_t STATUS; /* Status Register */ + register8_t CTRL; /* Control Register */ +} RST_t; + + +/* +-------------------------------------------------------------------------- +WDT - Watch-Dog Timer +-------------------------------------------------------------------------- +*/ + +/* Watch-Dog Timer */ +typedef struct WDT_struct +{ + register8_t CTRL; /* Control */ + register8_t WINCTRL; /* Windowed Mode Control */ + register8_t STATUS; /* Status */ +} WDT_t; + +/* Period setting */ +typedef enum WDT_PER_enum +{ + WDT_PER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_PER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_PER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_PER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_PER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_PER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_PER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_PER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_PER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_PER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_PER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_PER_t; + +/* Closed window period */ +typedef enum WDT_WPER_enum +{ + WDT_WPER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_WPER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_WPER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_WPER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_WPER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_WPER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_WPER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_WPER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_WPER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_WPER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_WPER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_WPER_t; + + +/* +-------------------------------------------------------------------------- +MCU - MCU Control +-------------------------------------------------------------------------- +*/ + +/* MCU Control */ +typedef struct MCU_struct +{ + register8_t DEVID0; /* Device ID byte 0 */ + register8_t DEVID1; /* Device ID byte 1 */ + register8_t DEVID2; /* Device ID byte 2 */ + register8_t REVID; /* Revision ID */ + register8_t JTAGUID; /* JTAG User ID */ + register8_t reserved_0x05; + register8_t MCUCR; /* MCU Control */ + register8_t reserved_0x07; + register8_t EVSYSLOCK; /* Event System Lock */ + register8_t AWEXLOCK; /* AWEX Lock */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; +} MCU_t; + + +/* +-------------------------------------------------------------------------- +PMIC - Programmable Multi-level Interrupt Controller +-------------------------------------------------------------------------- +*/ + +/* Programmable Multi-level Interrupt Controller */ +typedef struct PMIC_struct +{ + register8_t STATUS; /* Status Register */ + register8_t INTPRI; /* Interrupt Priority */ + register8_t CTRL; /* Control Register */ +} PMIC_t; + + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Channel */ +typedef struct DMA_CH_struct +{ + register8_t CTRLA; /* Channel Control */ + register8_t CTRLB; /* Channel Control */ + register8_t ADDRCTRL; /* Address Control */ + register8_t TRIGSRC; /* Channel Trigger Source */ + _WORDREGISTER(TRFCNT); /* Channel Block Transfer Count */ + register8_t REPCNT; /* Channel Repeat Count */ + register8_t reserved_0x07; + register8_t SRCADDR0; /* Channel Source Address 0 */ + register8_t SRCADDR1; /* Channel Source Address 1 */ + register8_t SRCADDR2; /* Channel Source Address 2 */ + register8_t reserved_0x0B; + register8_t DESTADDR0; /* Channel Destination Address 0 */ + register8_t DESTADDR1; /* Channel Destination Address 1 */ + register8_t DESTADDR2; /* Channel Destination Address 2 */ + register8_t reserved_0x0F; +} DMA_CH_t; + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Controller */ +typedef struct DMA_struct +{ + register8_t CTRL; /* Control */ + register8_t reserved_0x01; + register8_t reserved_0x02; + register8_t INTFLAGS; /* Transfer Interrupt Status */ + register8_t STATUS; /* Status */ + register8_t reserved_0x05; + _WORDREGISTER(TEMP); /* Temporary Register For 16/24-bit Access */ + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + DMA_CH_t CH0; /* DMA Channel 0 */ + DMA_CH_t CH1; /* DMA Channel 1 */ + DMA_CH_t CH2; /* DMA Channel 2 */ + DMA_CH_t CH3; /* DMA Channel 3 */ +} DMA_t; + +/* Burst mode */ +typedef enum DMA_CH_BURSTLEN_enum +{ + DMA_CH_BURSTLEN_1BYTE_gc = (0x00<<0), /* 1-byte burst mode */ + DMA_CH_BURSTLEN_2BYTE_gc = (0x01<<0), /* 2-byte burst mode */ + DMA_CH_BURSTLEN_4BYTE_gc = (0x02<<0), /* 4-byte burst mode */ + DMA_CH_BURSTLEN_8BYTE_gc = (0x03<<0), /* 8-byte burst mode */ +} DMA_CH_BURSTLEN_t; + +/* Source address reload mode */ +typedef enum DMA_CH_SRCRELOAD_enum +{ + DMA_CH_SRCRELOAD_NONE_gc = (0x00<<6), /* No reload */ + DMA_CH_SRCRELOAD_BLOCK_gc = (0x01<<6), /* Reload at end of block */ + DMA_CH_SRCRELOAD_BURST_gc = (0x02<<6), /* Reload at end of burst */ + DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), /* Reload at end of transaction */ +} DMA_CH_SRCRELOAD_t; + +/* Source addressing mode */ +typedef enum DMA_CH_SRCDIR_enum +{ + DMA_CH_SRCDIR_FIXED_gc = (0x00<<4), /* Fixed */ + DMA_CH_SRCDIR_INC_gc = (0x01<<4), /* Increment */ + DMA_CH_SRCDIR_DEC_gc = (0x02<<4), /* Decrement */ +} DMA_CH_SRCDIR_t; + +/* Destination adress reload mode */ +typedef enum DMA_CH_DESTRELOAD_enum +{ + DMA_CH_DESTRELOAD_NONE_gc = (0x00<<2), /* No reload */ + DMA_CH_DESTRELOAD_BLOCK_gc = (0x01<<2), /* Reload at end of block */ + DMA_CH_DESTRELOAD_BURST_gc = (0x02<<2), /* Reload at end of burst */ + DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), /* Reload at end of transaction */ +} DMA_CH_DESTRELOAD_t; + +/* Destination adressing mode */ +typedef enum DMA_CH_DESTDIR_enum +{ + DMA_CH_DESTDIR_FIXED_gc = (0x00<<0), /* Fixed */ + DMA_CH_DESTDIR_INC_gc = (0x01<<0), /* Increment */ + DMA_CH_DESTDIR_DEC_gc = (0x02<<0), /* Decrement */ +} DMA_CH_DESTDIR_t; + +/* Transfer trigger source */ +typedef enum DMA_CH_TRIGSRC_enum +{ + DMA_CH_TRIGSRC_OFF_gc = (0x00<<0), /* Off software triggers only */ + DMA_CH_TRIGSRC_EVSYS_CH0_gc = (0x01<<0), /* Event System Channel 0 */ + DMA_CH_TRIGSRC_EVSYS_CH1_gc = (0x02<<0), /* Event System Channel 1 */ + DMA_CH_TRIGSRC_EVSYS_CH2_gc = (0x03<<0), /* Event System Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH0_gc = (0x10<<0), /* ADCA Channel 0 */ + DMA_CH_TRIGSRC_ADCA_CH1_gc = (0x11<<0), /* ADCA Channel 1 */ + DMA_CH_TRIGSRC_ADCA_CH2_gc = (0x12<<0), /* ADCA Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH3_gc = (0x13<<0), /* ADCA Channel 3 */ + DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), /* ADCA Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACA_CH0_gc = (0x15<<0), /* DACA Channel 0 */ + DMA_CH_TRIGSRC_DACA_CH1_gc = (0x16<<0), /* DACA Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH0_gc = (0x20<<0), /* ADCB Channel 0 */ + DMA_CH_TRIGSRC_ADCB_CH1_gc = (0x21<<0), /* ADCB Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH2_gc = (0x22<<0), /* ADCB Channel 2 */ + DMA_CH_TRIGSRC_ADCB_CH3_gc = (0x23<<0), /* ADCB Channel 3 */ + DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), /* ADCB Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACB_CH0_gc = (0x25<<0), /* DACB Channel 0 */ + DMA_CH_TRIGSRC_DACB_CH1_gc = (0x26<<0), /* DACB Channel 1 */ + DMA_CH_TRIGSRC_TCC0_OVF_gc = (0x40<<0), /* Timer/Counter C0 Overflow */ + DMA_CH_TRIGSRC_TCC0_ERR_gc = (0x41<<0), /* Timer/Counter C0 Error */ + DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), /* Timer/Counter C0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), /* Timer/Counter C0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), /* Timer/Counter C0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), /* Timer/Counter C0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCC1_OVF_gc = (0x46<<0), /* Timer/Counter C1 Overflow */ + DMA_CH_TRIGSRC_TCC1_ERR_gc = (0x47<<0), /* Timer/Counter C1 Error */ + DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), /* Timer/Counter C1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), /* Timer/Counter C1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIC_gc = (0x4A<<0), /* SPI C Transfer Complete */ + DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), /* USART C0 Receive Complete */ + DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), /* USART C0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), /* USART C1 Receive Complete */ + DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), /* USART C1 Data Register Empty */ + DMA_CH_TRIGSRC_TCD0_OVF_gc = (0x60<<0), /* Timer/Counter D0 Overflow */ + DMA_CH_TRIGSRC_TCD0_ERR_gc = (0x61<<0), /* Timer/Counter D0 Error */ + DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), /* Timer/Counter D0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), /* Timer/Counter D0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), /* Timer/Counter D0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), /* Timer/Counter D0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCD1_OVF_gc = (0x66<<0), /* Timer/Counter D1 Overflow */ + DMA_CH_TRIGSRC_TCD1_ERR_gc = (0x67<<0), /* Timer/Counter D1 Error */ + DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), /* Timer/Counter D1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), /* Timer/Counter D1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPID_gc = (0x6A<<0), /* SPI D Transfer Complete */ + DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), /* USART D0 Receive Complete */ + DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), /* USART D0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), /* USART D1 Receive Complete */ + DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), /* USART D1 Data Register Empty */ + DMA_CH_TRIGSRC_TCE0_OVF_gc = (0x80<<0), /* Timer/Counter E0 Overflow */ + DMA_CH_TRIGSRC_TCE0_ERR_gc = (0x81<<0), /* Timer/Counter E0 Error */ + DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), /* Timer/Counter E0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), /* Timer/Counter E0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), /* Timer/Counter E0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), /* Timer/Counter E0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCE1_OVF_gc = (0x86<<0), /* Timer/Counter E1 Overflow */ + DMA_CH_TRIGSRC_TCE1_ERR_gc = (0x87<<0), /* Timer/Counter E1 Error */ + DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), /* Timer/Counter E1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), /* Timer/Counter E1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIE_gc = (0x8A<<0), /* SPI E Transfer Complete */ + DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), /* USART E0 Receive Complete */ + DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), /* USART E0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), /* USART E1 Receive Complete */ + DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), /* USART E1 Data Register Empty */ + DMA_CH_TRIGSRC_TCF0_OVF_gc = (0xA0<<0), /* Timer/Counter F0 Overflow */ + DMA_CH_TRIGSRC_TCF0_ERR_gc = (0xA1<<0), /* Timer/Counter F0 Error */ + DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), /* Timer/Counter F0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), /* Timer/Counter F0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), /* Timer/Counter F0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), /* Timer/Counter F0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCF1_OVF_gc = (0xA6<<0), /* Timer/Counter F1 Overflow */ + DMA_CH_TRIGSRC_TCF1_ERR_gc = (0xA7<<0), /* Timer/Counter F1 Error */ + DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), /* Timer/Counter F1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), /* Timer/Counter F1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIF_gc = (0xAA<<0), /* SPI F Transfer Complete */ + DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), /* USART F0 Receive Complete */ + DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), /* USART F0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), /* USART F1 Receive Complete */ + DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), /* USART F1 Data Register Empty */ +} DMA_CH_TRIGSRC_t; + +/* Double buffering mode */ +typedef enum DMA_DBUFMODE_enum +{ + DMA_DBUFMODE_DISABLED_gc = (0x00<<2), /* Double buffering disabled */ + DMA_DBUFMODE_CH01_gc = (0x01<<2), /* Double buffering enabled on channel 0/1 */ + DMA_DBUFMODE_CH23_gc = (0x02<<2), /* Double buffering enabled on channel 2/3 */ + DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ +} DMA_DBUFMODE_t; + +/* Priority mode */ +typedef enum DMA_PRIMODE_enum +{ + DMA_PRIMODE_RR0123_gc = (0x00<<0), /* Round Robin */ + DMA_PRIMODE_CH0RR123_gc = (0x01<<0), /* Channel 0 > Round Robin on channel 1/2/3 */ + DMA_PRIMODE_CH01RR23_gc = (0x02<<0), /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ + DMA_PRIMODE_CH0123_gc = (0x03<<0), /* Channel 0 > channel 1 > channel 2 > channel 3 */ +} DMA_PRIMODE_t; + +/* Interrupt level */ +typedef enum DMA_CH_ERRINTLVL_enum +{ + DMA_CH_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + DMA_CH_ERRINTLVL_LO_gc = (0x01<<2), /* Low level */ + DMA_CH_ERRINTLVL_MED_gc = (0x02<<2), /* Medium level */ + DMA_CH_ERRINTLVL_HI_gc = (0x03<<2), /* High level */ +} DMA_CH_ERRINTLVL_t; + +/* Interrupt level */ +typedef enum DMA_CH_TRNINTLVL_enum +{ + DMA_CH_TRNINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + DMA_CH_TRNINTLVL_LO_gc = (0x01<<0), /* Low level */ + DMA_CH_TRNINTLVL_MED_gc = (0x02<<0), /* Medium level */ + DMA_CH_TRNINTLVL_HI_gc = (0x03<<0), /* High level */ +} DMA_CH_TRNINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EVSYS - Event System +-------------------------------------------------------------------------- +*/ + +/* Event System */ +typedef struct EVSYS_struct +{ + register8_t CH0MUX; /* Event Channel 0 Multiplexer */ + register8_t CH1MUX; /* Event Channel 1 Multiplexer */ + register8_t CH2MUX; /* Event Channel 2 Multiplexer */ + register8_t CH3MUX; /* Event Channel 3 Multiplexer */ + register8_t CH4MUX; /* Event Channel 4 Multiplexer */ + register8_t CH5MUX; /* Event Channel 5 Multiplexer */ + register8_t CH6MUX; /* Event Channel 6 Multiplexer */ + register8_t CH7MUX; /* Event Channel 7 Multiplexer */ + register8_t CH0CTRL; /* Channel 0 Control Register */ + register8_t CH1CTRL; /* Channel 1 Control Register */ + register8_t CH2CTRL; /* Channel 2 Control Register */ + register8_t CH3CTRL; /* Channel 3 Control Register */ + register8_t CH4CTRL; /* Channel 4 Control Register */ + register8_t CH5CTRL; /* Channel 5 Control Register */ + register8_t CH6CTRL; /* Channel 6 Control Register */ + register8_t CH7CTRL; /* Channel 7 Control Register */ + register8_t STROBE; /* Event Strobe */ + register8_t DATA; /* Event Data */ +} EVSYS_t; + +/* Quadrature Decoder Index Recognition Mode */ +typedef enum EVSYS_QDIRM_enum +{ + EVSYS_QDIRM_00_gc = (0x00<<5), /* QDPH0 = 0, QDPH90 = 0 */ + EVSYS_QDIRM_01_gc = (0x01<<5), /* QDPH0 = 0, QDPH90 = 1 */ + EVSYS_QDIRM_10_gc = (0x02<<5), /* QDPH0 = 1, QDPH90 = 0 */ + EVSYS_QDIRM_11_gc = (0x03<<5), /* QDPH0 = 1, QDPH90 = 1 */ +} EVSYS_QDIRM_t; + +/* Digital filter coefficient */ +typedef enum EVSYS_DIGFILT_enum +{ + EVSYS_DIGFILT_1SAMPLE_gc = (0x00<<0), /* 1 SAMPLE */ + EVSYS_DIGFILT_2SAMPLES_gc = (0x01<<0), /* 2 SAMPLES */ + EVSYS_DIGFILT_3SAMPLES_gc = (0x02<<0), /* 3 SAMPLES */ + EVSYS_DIGFILT_4SAMPLES_gc = (0x03<<0), /* 4 SAMPLES */ + EVSYS_DIGFILT_5SAMPLES_gc = (0x04<<0), /* 5 SAMPLES */ + EVSYS_DIGFILT_6SAMPLES_gc = (0x05<<0), /* 6 SAMPLES */ + EVSYS_DIGFILT_7SAMPLES_gc = (0x06<<0), /* 7 SAMPLES */ + EVSYS_DIGFILT_8SAMPLES_gc = (0x07<<0), /* 8 SAMPLES */ +} EVSYS_DIGFILT_t; + +/* Event Channel multiplexer input selection */ +typedef enum EVSYS_CHMUX_enum +{ + EVSYS_CHMUX_OFF_gc = (0x00<<0), /* Off */ + EVSYS_CHMUX_RTC_OVF_gc = (0x08<<0), /* RTC Overflow */ + EVSYS_CHMUX_RTC_CMP_gc = (0x09<<0), /* RTC Compare Match */ + EVSYS_CHMUX_ACA_CH0_gc = (0x10<<0), /* Analog Comparator A Channel 0 */ + EVSYS_CHMUX_ACA_CH1_gc = (0x11<<0), /* Analog Comparator A Channel 1 */ + EVSYS_CHMUX_ACA_WIN_gc = (0x12<<0), /* Analog Comparator A Window */ + EVSYS_CHMUX_ACB_CH0_gc = (0x13<<0), /* Analog Comparator B Channel 0 */ + EVSYS_CHMUX_ACB_CH1_gc = (0x14<<0), /* Analog Comparator B Channel 1 */ + EVSYS_CHMUX_ACB_WIN_gc = (0x15<<0), /* Analog Comparator B Window */ + EVSYS_CHMUX_ADCA_CH0_gc = (0x20<<0), /* ADC A Channel 0 */ + EVSYS_CHMUX_ADCA_CH1_gc = (0x21<<0), /* ADC A Channel 1 */ + EVSYS_CHMUX_ADCA_CH2_gc = (0x22<<0), /* ADC A Channel 2 */ + EVSYS_CHMUX_ADCA_CH3_gc = (0x23<<0), /* ADC A Channel 3 */ + EVSYS_CHMUX_ADCB_CH0_gc = (0x24<<0), /* ADC B Channel 0 */ + EVSYS_CHMUX_ADCB_CH1_gc = (0x25<<0), /* ADC B Channel 1 */ + EVSYS_CHMUX_ADCB_CH2_gc = (0x26<<0), /* ADC B Channel 2 */ + EVSYS_CHMUX_ADCB_CH3_gc = (0x27<<0), /* ADC B Channel 3 */ + EVSYS_CHMUX_PORTA_PIN0_gc = (0x50<<0), /* Port A, Pin0 */ + EVSYS_CHMUX_PORTA_PIN1_gc = (0x51<<0), /* Port A, Pin1 */ + EVSYS_CHMUX_PORTA_PIN2_gc = (0x52<<0), /* Port A, Pin2 */ + EVSYS_CHMUX_PORTA_PIN3_gc = (0x53<<0), /* Port A, Pin3 */ + EVSYS_CHMUX_PORTA_PIN4_gc = (0x54<<0), /* Port A, Pin4 */ + EVSYS_CHMUX_PORTA_PIN5_gc = (0x55<<0), /* Port A, Pin5 */ + EVSYS_CHMUX_PORTA_PIN6_gc = (0x56<<0), /* Port A, Pin6 */ + EVSYS_CHMUX_PORTA_PIN7_gc = (0x57<<0), /* Port A, Pin7 */ + EVSYS_CHMUX_PORTB_PIN0_gc = (0x58<<0), /* Port B, Pin0 */ + EVSYS_CHMUX_PORTB_PIN1_gc = (0x59<<0), /* Port B, Pin1 */ + EVSYS_CHMUX_PORTB_PIN2_gc = (0x5A<<0), /* Port B, Pin2 */ + EVSYS_CHMUX_PORTB_PIN3_gc = (0x5B<<0), /* Port B, Pin3 */ + EVSYS_CHMUX_PORTB_PIN4_gc = (0x5C<<0), /* Port B, Pin4 */ + EVSYS_CHMUX_PORTB_PIN5_gc = (0x5D<<0), /* Port B, Pin5 */ + EVSYS_CHMUX_PORTB_PIN6_gc = (0x5E<<0), /* Port B, Pin6 */ + EVSYS_CHMUX_PORTB_PIN7_gc = (0x5F<<0), /* Port B, Pin7 */ + EVSYS_CHMUX_PORTC_PIN0_gc = (0x60<<0), /* Port C, Pin0 */ + EVSYS_CHMUX_PORTC_PIN1_gc = (0x61<<0), /* Port C, Pin1 */ + EVSYS_CHMUX_PORTC_PIN2_gc = (0x62<<0), /* Port C, Pin2 */ + EVSYS_CHMUX_PORTC_PIN3_gc = (0x63<<0), /* Port C, Pin3 */ + EVSYS_CHMUX_PORTC_PIN4_gc = (0x64<<0), /* Port C, Pin4 */ + EVSYS_CHMUX_PORTC_PIN5_gc = (0x65<<0), /* Port C, Pin5 */ + EVSYS_CHMUX_PORTC_PIN6_gc = (0x66<<0), /* Port C, Pin6 */ + EVSYS_CHMUX_PORTC_PIN7_gc = (0x67<<0), /* Port C, Pin7 */ + EVSYS_CHMUX_PORTD_PIN0_gc = (0x68<<0), /* Port D, Pin0 */ + EVSYS_CHMUX_PORTD_PIN1_gc = (0x69<<0), /* Port D, Pin1 */ + EVSYS_CHMUX_PORTD_PIN2_gc = (0x6A<<0), /* Port D, Pin2 */ + EVSYS_CHMUX_PORTD_PIN3_gc = (0x6B<<0), /* Port D, Pin3 */ + EVSYS_CHMUX_PORTD_PIN4_gc = (0x6C<<0), /* Port D, Pin4 */ + EVSYS_CHMUX_PORTD_PIN5_gc = (0x6D<<0), /* Port D, Pin5 */ + EVSYS_CHMUX_PORTD_PIN6_gc = (0x6E<<0), /* Port D, Pin6 */ + EVSYS_CHMUX_PORTD_PIN7_gc = (0x6F<<0), /* Port D, Pin7 */ + EVSYS_CHMUX_PORTE_PIN0_gc = (0x70<<0), /* Port E, Pin0 */ + EVSYS_CHMUX_PORTE_PIN1_gc = (0x71<<0), /* Port E, Pin1 */ + EVSYS_CHMUX_PORTE_PIN2_gc = (0x72<<0), /* Port E, Pin2 */ + EVSYS_CHMUX_PORTE_PIN3_gc = (0x73<<0), /* Port E, Pin3 */ + EVSYS_CHMUX_PORTE_PIN4_gc = (0x74<<0), /* Port E, Pin4 */ + EVSYS_CHMUX_PORTE_PIN5_gc = (0x75<<0), /* Port E, Pin5 */ + EVSYS_CHMUX_PORTE_PIN6_gc = (0x76<<0), /* Port E, Pin6 */ + EVSYS_CHMUX_PORTE_PIN7_gc = (0x77<<0), /* Port E, Pin7 */ + EVSYS_CHMUX_PORTF_PIN0_gc = (0x78<<0), /* Port F, Pin0 */ + EVSYS_CHMUX_PORTF_PIN1_gc = (0x79<<0), /* Port F, Pin1 */ + EVSYS_CHMUX_PORTF_PIN2_gc = (0x7A<<0), /* Port F, Pin2 */ + EVSYS_CHMUX_PORTF_PIN3_gc = (0x7B<<0), /* Port F, Pin3 */ + EVSYS_CHMUX_PORTF_PIN4_gc = (0x7C<<0), /* Port F, Pin4 */ + EVSYS_CHMUX_PORTF_PIN5_gc = (0x7D<<0), /* Port F, Pin5 */ + EVSYS_CHMUX_PORTF_PIN6_gc = (0x7E<<0), /* Port F, Pin6 */ + EVSYS_CHMUX_PORTF_PIN7_gc = (0x7F<<0), /* Port F, Pin7 */ + EVSYS_CHMUX_PRESCALER_1_gc = (0x80<<0), /* Prescaler, divide by 1 */ + EVSYS_CHMUX_PRESCALER_2_gc = (0x81<<0), /* Prescaler, divide by 2 */ + EVSYS_CHMUX_PRESCALER_4_gc = (0x82<<0), /* Prescaler, divide by 4 */ + EVSYS_CHMUX_PRESCALER_8_gc = (0x83<<0), /* Prescaler, divide by 8 */ + EVSYS_CHMUX_PRESCALER_16_gc = (0x84<<0), /* Prescaler, divide by 16 */ + EVSYS_CHMUX_PRESCALER_32_gc = (0x85<<0), /* Prescaler, divide by 32 */ + EVSYS_CHMUX_PRESCALER_64_gc = (0x86<<0), /* Prescaler, divide by 64 */ + EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ + EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ + EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ + EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ + EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ + EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ + EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ + EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ + EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ + EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ + EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ + EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ + EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ + EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ + EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ + EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ + EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ + EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ + EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ + EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ + EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ + EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ + EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ + EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ + EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ + EVSYS_CHMUX_TCD1_OVF_gc = (0xD8<<0), /* Timer/Counter D1 Overflow */ + EVSYS_CHMUX_TCD1_ERR_gc = (0xD9<<0), /* Timer/Counter D1 Error */ + EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), /* Timer/Counter D1 Compare or Capture A */ + EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), /* Timer/Counter D1 Compare or Capture B */ + EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ + EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ + EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ + EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ + EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ + EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ + EVSYS_CHMUX_TCE1_OVF_gc = (0xE8<<0), /* Timer/Counter E1 Overflow */ + EVSYS_CHMUX_TCE1_ERR_gc = (0xE9<<0), /* Timer/Counter E1 Error */ + EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), /* Timer/Counter E1 Compare or Capture A */ + EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), /* Timer/Counter E1 Compare or Capture B */ + EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ + EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ + EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ + EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ + EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ + EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ + EVSYS_CHMUX_TCF1_OVF_gc = (0xF8<<0), /* Timer/Counter F1 Overflow */ + EVSYS_CHMUX_TCF1_ERR_gc = (0xF9<<0), /* Timer/Counter F1 Error */ + EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), /* Timer/Counter F1 Compare or Capture A */ + EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), /* Timer/Counter F1 Compare or Capture B */ +} EVSYS_CHMUX_t; + + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Non-volatile Memory Controller */ +typedef struct NVM_struct +{ + register8_t ADDR0; /* Address Register 0 */ + register8_t ADDR1; /* Address Register 1 */ + register8_t ADDR2; /* Address Register 2 */ + register8_t reserved_0x03; + register8_t DATA0; /* Data Register 0 */ + register8_t DATA1; /* Data Register 1 */ + register8_t DATA2; /* Data Register 2 */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t CMD; /* Command */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t INTCTRL; /* Interrupt Control */ + register8_t reserved_0x0E; + register8_t STATUS; /* Status */ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Lock Bits */ +typedef struct NVM_LOCKBITS_struct +{ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_LOCKBITS_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Fuses */ +typedef struct NVM_FUSES_struct +{ + register8_t FUSEBYTE0; /* JTAG User ID */ + register8_t FUSEBYTE1; /* Watchdog Configuration */ + register8_t FUSEBYTE2; /* Reset Configuration */ + register8_t reserved_0x03; + register8_t FUSEBYTE4; /* Start-up Configuration */ + register8_t FUSEBYTE5; /* EESAVE and BOD Level */ +} NVM_FUSES_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Production Signatures */ +typedef struct NVM_PROD_SIGNATURES_struct +{ + register8_t RCOSC2M; /* RCOSC 2MHz Calibration Value */ + register8_t reserved_0x01; + register8_t RCOSC32K; /* RCOSC 32kHz Calibration Value */ + register8_t RCOSC32M; /* RCOSC 32MHz Calibration Value */ + register8_t reserved_0x04; + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t LOTNUM0; /* Lot Number Byte 0, ASCII */ + register8_t LOTNUM1; /* Lot Number Byte 1, ASCII */ + register8_t LOTNUM2; /* Lot Number Byte 2, ASCII */ + register8_t LOTNUM3; /* Lot Number Byte 3, ASCII */ + register8_t LOTNUM4; /* Lot Number Byte 4, ASCII */ + register8_t LOTNUM5; /* Lot Number Byte 5, ASCII */ + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t WAFNUM; /* Wafer Number */ + register8_t reserved_0x11; + register8_t COORDX0; /* Wafer Coordinate X Byte 0 */ + register8_t COORDX1; /* Wafer Coordinate X Byte 1 */ + register8_t COORDY0; /* Wafer Coordinate Y Byte 0 */ + register8_t COORDY1; /* Wafer Coordinate Y Byte 1 */ + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + register8_t ADCACAL0; /* ADCA Calibration Byte 0 */ + register8_t ADCACAL1; /* ADCA Calibration Byte 1 */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t ADCBCAL0; /* ADCB Calibration Byte 0 */ + register8_t ADCBCAL1; /* ADCB Calibration Byte 1 */ + register8_t reserved_0x26; + register8_t reserved_0x27; + register8_t reserved_0x28; + register8_t reserved_0x29; + register8_t reserved_0x2A; + register8_t reserved_0x2B; + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t TEMPSENSE0; /* Temperature Sensor Calibration Byte 0 */ + register8_t TEMPSENSE1; /* Temperature Sensor Calibration Byte 0 */ + register8_t DACAOFFCAL; /* DACA Calibration Byte 0 */ + register8_t DACACAINCAL; /* DACA Calibration Byte 1 */ + register8_t DACBOFFCAL; /* DACB Calibration Byte 0 */ + register8_t DACBGAINCAL; /* DACB Calibration Byte 1 */ + register8_t reserved_0x34; + register8_t reserved_0x35; + register8_t reserved_0x36; + register8_t reserved_0x37; + register8_t reserved_0x38; + register8_t reserved_0x39; + register8_t reserved_0x3A; + register8_t reserved_0x3B; + register8_t reserved_0x3C; + register8_t reserved_0x3D; + register8_t reserved_0x3E; +} NVM_PROD_SIGNATURES_t; + +/* NVM Command */ +typedef enum NVM_CMD_enum +{ + NVM_CMD_NO_OPERATION_gc = (0x00<<0), /* Noop/Ordinary LPM */ + NVM_CMD_READ_CALIB_ROW_gc = (0x02<<0), /* Read calibration row */ + NVM_CMD_READ_USER_SIG_ROW_gc = (0x01<<0), /* Read user signature row */ + NVM_CMD_READ_EEPROM_gc = (0x06<<0), /* Read EEPROM */ + NVM_CMD_READ_FUSES_gc = (0x07<<0), /* Read fuse byte */ + NVM_CMD_WRITE_LOCK_BITS_gc = (0x08<<0), /* Write lock bits */ + NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ + NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ + NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ + NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ + NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ + NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ + NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ + NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ + NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ + NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ + NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ + NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ + NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ + NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ + NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ + NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ + NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ + NVM_CMD_APP_CRC_gc = (0x38<<0), /* Generate Application section CRC */ + NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Generate Boot Section CRC */ + NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Generate Flash Range CRC */ +} NVM_CMD_t; + +/* SPM ready interrupt level */ +typedef enum NVM_SPMLVL_enum +{ + NVM_SPMLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + NVM_SPMLVL_LO_gc = (0x01<<2), /* Low level */ + NVM_SPMLVL_MED_gc = (0x02<<2), /* Medium level */ + NVM_SPMLVL_HI_gc = (0x03<<2), /* High level */ +} NVM_SPMLVL_t; + +/* EEPROM ready interrupt level */ +typedef enum NVM_EELVL_enum +{ + NVM_EELVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + NVM_EELVL_LO_gc = (0x01<<0), /* Low level */ + NVM_EELVL_MED_gc = (0x02<<0), /* Medium level */ + NVM_EELVL_HI_gc = (0x03<<0), /* High level */ +} NVM_EELVL_t; + +/* Boot lock bits - boot setcion */ +typedef enum NVM_BLBB_enum +{ + NVM_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ + NVM_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ + NVM_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ + NVM_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ +} NVM_BLBB_t; + +/* Boot lock bits - application section */ +typedef enum NVM_BLBA_enum +{ + NVM_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ + NVM_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ + NVM_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ + NVM_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ +} NVM_BLBA_t; + +/* Boot lock bits - application table section */ +typedef enum NVM_BLBAT_enum +{ + NVM_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ + NVM_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ + NVM_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ + NVM_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ +} NVM_BLBAT_t; + +/* Lock bits */ +typedef enum NVM_LB_enum +{ + NVM_LB_NOLOCK_gc = (0x03<<0), /* No locks */ + NVM_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ + NVM_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ +} NVM_LB_t; + +/* Boot Loader Section Reset Vector */ +typedef enum BOOTRST_enum +{ + BOOTRST_BOOTLDR_gc = (0x00<<6), /* Boot Loader Reset */ + BOOTRST_APPLICATION_gc = (0x01<<6), /* Application Reset */ +} BOOTRST_t; + +/* BOD operation */ +typedef enum BOD_enum +{ + BOD_INSAMPLEDMODE_gc = (0x01<<2), /* BOD enabled in sampled mode */ + BOD_CONTINOUSLY_gc = (0x02<<2), /* BOD enabled continuously */ + BOD_DISABLED_gc = (0x03<<2), /* BOD Disabled */ +} BOD_t; + +/* Watchdog (Window) Timeout Period */ +typedef enum WD_enum +{ + WD_8CLK_gc = (0x00<<4), /* 8 cycles (8ms @ 3.3V) */ + WD_16CLK_gc = (0x01<<4), /* 16 cycles (16ms @ 3.3V) */ + WD_32CLK_gc = (0x02<<4), /* 32 cycles (32ms @ 3.3V) */ + WD_64CLK_gc = (0x03<<4), /* 64 cycles (64ms @ 3.3V) */ + WD_128CLK_gc = (0x04<<4), /* 128 cycles (0.125s @ 3.3V) */ + WD_256CLK_gc = (0x05<<4), /* 256 cycles (0.25s @ 3.3V) */ + WD_512CLK_gc = (0x06<<4), /* 512 cycles (0.5s @ 3.3V) */ + WD_1KCLK_gc = (0x07<<4), /* 1K cycles (1s @ 3.3V) */ + WD_2KCLK_gc = (0x08<<4), /* 2K cycles (2s @ 3.3V) */ + WD_4KCLK_gc = (0x09<<4), /* 4K cycles (4s @ 3.3V) */ + WD_8KCLK_gc = (0x0A<<4), /* 8K cycles (8s @ 3.3V) */ +} WD_t; + +/* Start-up Time */ +typedef enum SUT_enum +{ + SUT_0MS_gc = (0x03<<2), /* 0 ms */ + SUT_4MS_gc = (0x01<<2), /* 4 ms */ + SUT_64MS_gc = (0x00<<2), /* 64 ms */ +} SUT_t; + +/* Brown Out Detection Voltage Level */ +typedef enum BODLVL_enum +{ + BODLVL_1V6_gc = (0x07<<0), /* 1.6 V */ + BODLVL_1V8_gc = (0x06<<0), /* 1.8 V */ + BODLVL_2V0_gc = (0x05<<0), /* 2.0 V */ + BODLVL_2V2_gc = (0x04<<0), /* 2.2 V */ + BODLVL_2V4_gc = (0x03<<0), /* 2.4 V */ + BODLVL_2V7_gc = (0x02<<0), /* 2.7 V */ + BODLVL_2V9_gc = (0x01<<0), /* 2.9 V */ + BODLVL_3V2_gc = (0x00<<0), /* 3.2 V */ +} BODLVL_t; + + +/* +-------------------------------------------------------------------------- +AC - Analog Comparator +-------------------------------------------------------------------------- +*/ + +/* Analog Comparator */ +typedef struct AC_struct +{ + register8_t AC0CTRL; /* Comparator 0 Control */ + register8_t AC1CTRL; /* Comparator 1 Control */ + register8_t AC0MUXCTRL; /* Comparator 0 MUX Control */ + register8_t AC1MUXCTRL; /* Comparator 1 MUX Control */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t WINCTRL; /* Window Mode Control */ + register8_t STATUS; /* Status */ +} AC_t; + +/* Interrupt mode */ +typedef enum AC_INTMODE_enum +{ + AC_INTMODE_BOTHEDGES_gc = (0x00<<6), /* Interrupt on both edges */ + AC_INTMODE_FALLING_gc = (0x02<<6), /* Interrupt on falling edge */ + AC_INTMODE_RISING_gc = (0x03<<6), /* Interrupt on rising edge */ +} AC_INTMODE_t; + +/* Interrupt level */ +typedef enum AC_INTLVL_enum +{ + AC_INTLVL_OFF_gc = (0x00<<4), /* Interrupt disabled */ + AC_INTLVL_LO_gc = (0x01<<4), /* Low level */ + AC_INTLVL_MED_gc = (0x02<<4), /* Medium level */ + AC_INTLVL_HI_gc = (0x03<<4), /* High level */ +} AC_INTLVL_t; + +/* Hysteresis mode selection */ +typedef enum AC_HYSMODE_enum +{ + AC_HYSMODE_NO_gc = (0x00<<1), /* No hysteresis */ + AC_HYSMODE_SMALL_gc = (0x01<<1), /* Small hysteresis */ + AC_HYSMODE_LARGE_gc = (0x02<<1), /* Large hysteresis */ +} AC_HYSMODE_t; + +/* Positive input multiplexer selection */ +typedef enum AC_MUXPOS_enum +{ + AC_MUXPOS_PIN0_gc = (0x00<<3), /* Pin 0 */ + AC_MUXPOS_PIN1_gc = (0x01<<3), /* Pin 1 */ + AC_MUXPOS_PIN2_gc = (0x02<<3), /* Pin 2 */ + AC_MUXPOS_PIN3_gc = (0x03<<3), /* Pin 3 */ + AC_MUXPOS_PIN4_gc = (0x04<<3), /* Pin 4 */ + AC_MUXPOS_PIN5_gc = (0x05<<3), /* Pin 5 */ + AC_MUXPOS_PIN6_gc = (0x06<<3), /* Pin 6 */ + AC_MUXPOS_DAC_gc = (0x07<<3), /* DAC output */ +} AC_MUXPOS_t; + +/* Negative input multiplexer selection */ +typedef enum AC_MUXNEG_enum +{ + AC_MUXNEG_PIN0_gc = (0x00<<0), /* Pin 0 */ + AC_MUXNEG_PIN1_gc = (0x01<<0), /* Pin 1 */ + AC_MUXNEG_PIN3_gc = (0x02<<0), /* Pin 3 */ + AC_MUXNEG_PIN5_gc = (0x03<<0), /* Pin 5 */ + AC_MUXNEG_PIN7_gc = (0x04<<0), /* Pin 7 */ + AC_MUXNEG_DAC_gc = (0x05<<0), /* DAC output */ + AC_MUXNEG_BANDGAP_gc = (0x06<<0), /* Bandgap Reference */ + AC_MUXNEG_SCALER_gc = (0x07<<0), /* Internal voltage scaler */ +} AC_MUXNEG_t; + +/* Windows interrupt mode */ +typedef enum AC_WINTMODE_enum +{ + AC_WINTMODE_ABOVE_gc = (0x00<<2), /* Interrupt on above window */ + AC_WINTMODE_INSIDE_gc = (0x01<<2), /* Interrupt on inside window */ + AC_WINTMODE_BELOW_gc = (0x02<<2), /* Interrupt on below window */ + AC_WINTMODE_OUTSIDE_gc = (0x03<<2), /* Interrupt on outside window */ +} AC_WINTMODE_t; + +/* Window interrupt level */ +typedef enum AC_WINTLVL_enum +{ + AC_WINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + AC_WINTLVL_LO_gc = (0x01<<0), /* Low priority */ + AC_WINTLVL_MED_gc = (0x02<<0), /* Medium priority */ + AC_WINTLVL_HI_gc = (0x03<<0), /* High priority */ +} AC_WINTLVL_t; + +/* Window mode state */ +typedef enum AC_WSTATE_enum +{ + AC_WSTATE_ABOVE_gc = (0x00<<6), /* Signal above window */ + AC_WSTATE_INSIDE_gc = (0x01<<6), /* Signal inside window */ + AC_WSTATE_BELOW_gc = (0x02<<6), /* Signal below window */ +} AC_WSTATE_t; + + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* ADC Channel */ +typedef struct ADC_CH_struct +{ + register8_t CTRL; /* Control Register */ + register8_t MUXCTRL; /* MUX Control */ + register8_t INTCTRL; /* Channel Interrupt Control */ + register8_t INTFLAGS; /* Interrupt Flags */ + _WORDREGISTER(RES); /* Channel Result */ + register8_t reserved_0x6; + register8_t reserved_0x7; +} ADC_CH_t; + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* Analog-to-Digital Converter */ +typedef struct ADC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t REFCTRL; /* Reference Control */ + register8_t EVCTRL; /* Event Control */ + register8_t PRESCALER; /* Clock Prescaler */ + register8_t CALCTRL; /* Calibration Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t CALIB; /* Calibration Value */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + _WORDREGISTER(CH0RES); /* Channel 0 Result */ + _WORDREGISTER(CH1RES); /* Channel 1 Result */ + _WORDREGISTER(CH2RES); /* Channel 2 Result */ + _WORDREGISTER(CH3RES); /* Channel 3 Result */ + _WORDREGISTER(CMP); /* Compare Value */ + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + ADC_CH_t CH0; /* ADC Channel 0 */ + ADC_CH_t CH1; /* ADC Channel 1 */ + ADC_CH_t CH2; /* ADC Channel 2 */ + ADC_CH_t CH3; /* ADC Channel 3 */ +} ADC_t; + +/* Positive input multiplexer selection */ +typedef enum ADC_CH_MUXPOS_enum +{ + ADC_CH_MUXPOS_PIN0_gc = (0x00<<3), /* Input pin 0 */ + ADC_CH_MUXPOS_PIN1_gc = (0x01<<3), /* Input pin 1 */ + ADC_CH_MUXPOS_PIN2_gc = (0x02<<3), /* Input pin 2 */ + ADC_CH_MUXPOS_PIN3_gc = (0x03<<3), /* Input pin 3 */ + ADC_CH_MUXPOS_PIN4_gc = (0x04<<3), /* Input pin 4 */ + ADC_CH_MUXPOS_PIN5_gc = (0x05<<3), /* Input pin 5 */ + ADC_CH_MUXPOS_PIN6_gc = (0x06<<3), /* Input pin 6 */ + ADC_CH_MUXPOS_PIN7_gc = (0x07<<3), /* Input pin 7 */ +} ADC_CH_MUXPOS_t; + +/* Internal input multiplexer selections */ +typedef enum ADC_CH_MUXINT_enum +{ + ADC_CH_MUXINT_TEMP_gc = (0x00<<3), /* Temperature Reference */ + ADC_CH_MUXINT_BANDGAP_gc = (0x01<<3), /* Bandgap Reference */ + ADC_CH_MUXINT_SCALEDVCC_gc = (0x02<<3), /* 1/10 scaled VCC */ + ADC_CH_MUXINT_DAC_gc = (0x03<<3), /* DAC output */ +} ADC_CH_MUXINT_t; + +/* Negative input multiplexer selection */ +typedef enum ADC_CH_MUXNEG_enum +{ + ADC_CH_MUXNEG_PIN0_gc = (0x00<<0), /* Input pin 0 */ + ADC_CH_MUXNEG_PIN1_gc = (0x01<<0), /* Input pin 1 */ + ADC_CH_MUXNEG_PIN2_gc = (0x02<<0), /* Input pin 2 */ + ADC_CH_MUXNEG_PIN3_gc = (0x03<<0), /* Input pin 3 */ + ADC_CH_MUXNEG_PIN4_gc = (0x04<<0), /* Input pin 4 */ + ADC_CH_MUXNEG_PIN5_gc = (0x05<<0), /* Input pin 5 */ + ADC_CH_MUXNEG_PIN6_gc = (0x06<<0), /* Input pin 6 */ + ADC_CH_MUXNEG_PIN7_gc = (0x07<<0), /* Input pin 7 */ +} ADC_CH_MUXNEG_t; + +/* Input mode */ +typedef enum ADC_CH_INPUTMODE_enum +{ + ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ + ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ + ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ + ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ +} ADC_CH_INPUTMODE_t; + +/* Gain factor */ +typedef enum ADC_CH_GAIN_enum +{ + ADC_CH_GAIN_1X_gc = (0x00<<2), /* 1x gain */ + ADC_CH_GAIN_2X_gc = (0x01<<2), /* 2x gain */ + ADC_CH_GAIN_4X_gc = (0x02<<2), /* 4x gain */ + ADC_CH_GAIN_8X_gc = (0x03<<2), /* 8x gain */ + ADC_CH_GAIN_16X_gc = (0x04<<2), /* 16x gain */ + ADC_CH_GAIN_32X_gc = (0x05<<2), /* 32x gain */ + ADC_CH_GAIN_64X_gc = (0x06<<2), /* 64x gain */ +} ADC_CH_GAIN_t; + +/* Conversion result resolution */ +typedef enum ADC_RESOLUTION_enum +{ + ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ + ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ + ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ +} ADC_RESOLUTION_t; + +/* Voltage reference selection */ +typedef enum ADC_REFSEL_enum +{ + ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ + ADC_REFSEL_VCC_gc = (0x01<<4), /* Internal VCC / 1.6V */ + ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ + ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ +} ADC_REFSEL_t; + +/* Channel sweep selection */ +typedef enum ADC_SWEEP_enum +{ + ADC_SWEEP_0_gc = (0x00<<6), /* ADC Channel 0 */ + ADC_SWEEP_01_gc = (0x01<<6), /* ADC Channel 0,1 */ + ADC_SWEEP_012_gc = (0x02<<6), /* ADC Channel 0,1,2 */ + ADC_SWEEP_0123_gc = (0x03<<6), /* ADC Channel 0,1,2,3 */ +} ADC_SWEEP_t; + +/* Event channel input selection */ +typedef enum ADC_EVSEL_enum +{ + ADC_EVSEL_0123_gc = (0x00<<3), /* Event Channel 0,1,2,3 */ + ADC_EVSEL_1234_gc = (0x01<<3), /* Event Channel 1,2,3,4 */ + ADC_EVSEL_2345_gc = (0x02<<3), /* Event Channel 2,3,4,5 */ + ADC_EVSEL_3456_gc = (0x03<<3), /* Event Channel 3,4,5,6 */ + ADC_EVSEL_4567_gc = (0x04<<3), /* Event Channel 4,5,6,7 */ + ADC_EVSEL_567_gc = (0x05<<3), /* Event Channel 5,6,7 */ + ADC_EVSEL_67_gc = (0x06<<3), /* Event Channel 6,7 */ + ADC_EVSEL_7_gc = (0x07<<3), /* Event Channel 7 */ +} ADC_EVSEL_t; + +/* Event action selection */ +typedef enum ADC_EVACT_enum +{ + ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ + ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ + ADC_EVACT_CH01_gc = (0x02<<0), /* First two events trigger channel 0,1 */ + ADC_EVACT_CH012_gc = (0x03<<0), /* First three events trigger channel 0,1,2 */ + ADC_EVACT_CH0123_gc = (0x04<<0), /* Events trigger channel 0,1,2,3 */ + ADC_EVACT_SWEEP_gc = (0x05<<0), /* First event triggers sweep */ + ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), /* First event triggers synchronized sweep */ +} ADC_EVACT_t; + +/* Interupt mode */ +typedef enum ADC_CH_INTMODE_enum +{ + ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ + ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ + ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ +} ADC_CH_INTMODE_t; + +/* Interrupt level */ +typedef enum ADC_CH_INTLVL_enum +{ + ADC_CH_INTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + ADC_CH_INTLVL_LO_gc = (0x01<<0), /* Low level */ + ADC_CH_INTLVL_MED_gc = (0x02<<0), /* Medium level */ + ADC_CH_INTLVL_HI_gc = (0x03<<0), /* High level */ +} ADC_CH_INTLVL_t; + +/* DMA request selection */ +typedef enum ADC_DMASEL_enum +{ + ADC_DMASEL_OFF_gc = (0x00<<5), /* Combined DMA request OFF */ + ADC_DMASEL_CH01_gc = (0x01<<5), /* ADC Channel 0 or 1 */ + ADC_DMASEL_CH012_gc = (0x02<<5), /* ADC Channel 0 or 1 or 2 */ + ADC_DMASEL_CH0123_gc = (0x03<<5), /* ADC Channel 0 or 1 or 2 or 3 */ +} ADC_DMASEL_t; + +/* Clock prescaler */ +typedef enum ADC_PRESCALER_enum +{ + ADC_PRESCALER_DIV4_gc = (0x00<<0), /* Divide clock by 4 */ + ADC_PRESCALER_DIV8_gc = (0x01<<0), /* Divide clock by 8 */ + ADC_PRESCALER_DIV16_gc = (0x02<<0), /* Divide clock by 16 */ + ADC_PRESCALER_DIV32_gc = (0x03<<0), /* Divide clock by 32 */ + ADC_PRESCALER_DIV64_gc = (0x04<<0), /* Divide clock by 64 */ + ADC_PRESCALER_DIV128_gc = (0x05<<0), /* Divide clock by 128 */ + ADC_PRESCALER_DIV256_gc = (0x06<<0), /* Divide clock by 256 */ + ADC_PRESCALER_DIV512_gc = (0x07<<0), /* Divide clock by 512 */ +} ADC_PRESCALER_t; + + +/* +-------------------------------------------------------------------------- +DAC - Digital/Analog Converter +-------------------------------------------------------------------------- +*/ + +/* Digital-to-Analog Converter */ +typedef struct DAC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t EVCTRL; /* Event Input Control */ + register8_t TIMCTRL; /* Timing Control */ + register8_t STATUS; /* Status */ + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t GAINCAL; /* Gain Calibration */ + register8_t OFFSETCAL; /* Offset Calibration */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + _WORDREGISTER(CH0DATA); /* Channel 0 Data */ + _WORDREGISTER(CH1DATA); /* Channel 1 Data */ +} DAC_t; + +/* Output channel selection */ +typedef enum DAC_CHSEL_enum +{ + DAC_CHSEL_SINGLE_gc = (0x00<<5), /* Single channel operation (Channel A only) */ + DAC_CHSEL_DUAL_gc = (0x02<<5), /* Dual channel operation (S/H on both channels) */ +} DAC_CHSEL_t; + +/* Reference voltage selection */ +typedef enum DAC_REFSEL_enum +{ + DAC_REFSEL_INT1V_gc = (0x00<<3), /* Internal 1V */ + DAC_REFSEL_AVCC_gc = (0x01<<3), /* Analog supply voltage */ + DAC_REFSEL_AREFA_gc = (0x02<<3), /* External reference on AREF on PORTA */ + DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */ +} DAC_REFSEL_t; + +/* Event channel selection */ +typedef enum DAC_EVSEL_enum +{ + DAC_EVSEL_0_gc = (0x00<<0), /* Event Channel 0 */ + DAC_EVSEL_1_gc = (0x01<<0), /* Event Channel 1 */ + DAC_EVSEL_2_gc = (0x02<<0), /* Event Channel 2 */ + DAC_EVSEL_3_gc = (0x03<<0), /* Event Channel 3 */ + DAC_EVSEL_4_gc = (0x04<<0), /* Event Channel 4 */ + DAC_EVSEL_5_gc = (0x05<<0), /* Event Channel 5 */ + DAC_EVSEL_6_gc = (0x06<<0), /* Event Channel 6 */ + DAC_EVSEL_7_gc = (0x07<<0), /* Event Channel 7 */ +} DAC_EVSEL_t; + +/* Conversion interval */ +typedef enum DAC_CONINTVAL_enum +{ + DAC_CONINTVAL_1CLK_gc = (0x00<<4), /* 1 CLK / 2 CLK in S/H mode */ + DAC_CONINTVAL_2CLK_gc = (0x01<<4), /* 2 CLK / 3 CLK in S/H mode */ + DAC_CONINTVAL_4CLK_gc = (0x02<<4), /* 4 CLK / 6 CLK in S/H mode */ + DAC_CONINTVAL_8CLK_gc = (0x03<<4), /* 8 CLK / 12 CLK in S/H mode */ + DAC_CONINTVAL_16CLK_gc = (0x04<<4), /* 16 CLK / 24 CLK in S/H mode */ + DAC_CONINTVAL_32CLK_gc = (0x05<<4), /* 32 CLK / 48 CLK in S/H mode */ + DAC_CONINTVAL_64CLK_gc = (0x06<<4), /* 64 CLK / 96 CLK in S/H mode */ + DAC_CONINTVAL_128CLK_gc = (0x07<<4), /* 128 CLK / 192 CLK in S/H mode */ +} DAC_CONINTVAL_t; + +/* Refresh rate */ +typedef enum DAC_REFRESH_enum +{ + DAC_REFRESH_16CLK_gc = (0x00<<0), /* 16 CLK */ + DAC_REFRESH_32CLK_gc = (0x01<<0), /* 32 CLK */ + DAC_REFRESH_64CLK_gc = (0x02<<0), /* 64 CLK */ + DAC_REFRESH_128CLK_gc = (0x03<<0), /* 128 CLK */ + DAC_REFRESH_256CLK_gc = (0x04<<0), /* 256 CLK */ + DAC_REFRESH_512CLK_gc = (0x05<<0), /* 512 CLK */ + DAC_REFRESH_1024CLK_gc = (0x06<<0), /* 1024 CLK */ + DAC_REFRESH_2048CLK_gc = (0x07<<0), /* 2048 CLK */ + DAC_REFRESH_4086CLK_gc = (0x08<<0), /* 4096 CLK */ + DAC_REFRESH_8192CLK_gc = (0x09<<0), /* 8192 CLK */ + DAC_REFRESH_16384CLK_gc = (0x0A<<0), /* 16384 CLK */ + DAC_REFRESH_32768CLK_gc = (0x0B<<0), /* 32768 CLK */ + DAC_REFRESH_65536CLK_gc = (0x0C<<0), /* 65536 CLK */ + DAC_REFRESH_OFF_gc = (0x0F<<0), /* Auto refresh OFF */ +} DAC_REFRESH_t; + + +/* +-------------------------------------------------------------------------- +RTC - Real-Time Clounter +-------------------------------------------------------------------------- +*/ + +/* Real-Time Counter */ +typedef struct RTC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t TEMP; /* Temporary register */ + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + _WORDREGISTER(CNT); /* Count Register */ + _WORDREGISTER(PER); /* Period Register */ + _WORDREGISTER(COMP); /* Compare Register */ +} RTC_t; + +/* Prescaler Factor */ +typedef enum RTC_PRESCALER_enum +{ + RTC_PRESCALER_OFF_gc = (0x00<<0), /* RTC Off */ + RTC_PRESCALER_DIV1_gc = (0x01<<0), /* RTC Clock */ + RTC_PRESCALER_DIV2_gc = (0x02<<0), /* RTC Clock / 2 */ + RTC_PRESCALER_DIV8_gc = (0x03<<0), /* RTC Clock / 8 */ + RTC_PRESCALER_DIV16_gc = (0x04<<0), /* RTC Clock / 16 */ + RTC_PRESCALER_DIV64_gc = (0x05<<0), /* RTC Clock / 64 */ + RTC_PRESCALER_DIV256_gc = (0x06<<0), /* RTC Clock / 256 */ + RTC_PRESCALER_DIV1024_gc = (0x07<<0), /* RTC Clock / 1024 */ +} RTC_PRESCALER_t; + +/* Compare Interrupt level */ +typedef enum RTC_COMPINTLVL_enum +{ + RTC_COMPINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + RTC_COMPINTLVL_LO_gc = (0x01<<2), /* Low Level */ + RTC_COMPINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + RTC_COMPINTLVL_HI_gc = (0x03<<2), /* High Level */ +} RTC_COMPINTLVL_t; + +/* Overflow Interrupt level */ +typedef enum RTC_OVFINTLVL_enum +{ + RTC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + RTC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + RTC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + RTC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} RTC_OVFINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* EBI Chip Select Module */ +typedef struct EBI_CS_struct +{ + register8_t CTRLA; /* Chip Select Control Register A */ + register8_t CTRLB; /* Chip Select Control Register B */ + _WORDREGISTER(BASEADDR); /* Chip Select Base Address */ +} EBI_CS_t; + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* External Bus Interface */ +typedef struct EBI_struct +{ + register8_t CTRL; /* Control */ + register8_t SDRAMCTRLA; /* SDRAM Control Register A */ + register8_t reserved_0x02; + register8_t reserved_0x03; + _WORDREGISTER(REFRESH); /* SDRAM Refresh Period */ + _WORDREGISTER(INITDLY); /* SDRAM Initialization Delay */ + register8_t SDRAMCTRLB; /* SDRAM Control Register B */ + register8_t SDRAMCTRLC; /* SDRAM Control Register C */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + EBI_CS_t CS0; /* Chip Select 0 */ + EBI_CS_t CS1; /* Chip Select 1 */ + EBI_CS_t CS2; /* Chip Select 2 */ + EBI_CS_t CS3; /* Chip Select 3 */ +} EBI_t; + +/* Chip Select adress space */ +typedef enum EBI_CS_ASPACE_enum +{ + EBI_CS_ASPACE_256B_gc = (0x00<<2), /* 256 bytes */ + EBI_CS_ASPACE_512B_gc = (0x01<<2), /* 512 bytes */ + EBI_CS_ASPACE_1KB_gc = (0x02<<2), /* 1K bytes */ + EBI_CS_ASPACE_2KB_gc = (0x03<<2), /* 2K bytes */ + EBI_CS_ASPACE_4KB_gc = (0x04<<2), /* 4K bytes */ + EBI_CS_ASPACE_8KB_gc = (0x05<<2), /* 8K bytes */ + EBI_CS_ASPACE_16KB_gc = (0x06<<2), /* 16K bytes */ + EBI_CS_ASPACE_32KB_gc = (0x07<<2), /* 32K bytes */ + EBI_CS_ASPACE_64KB_gc = (0x08<<2), /* 64K bytes */ + EBI_CS_ASPACE_128KB_gc = (0x09<<2), /* 128K bytes */ + EBI_CS_ASPACE_256KB_gc = (0x0A<<2), /* 256K bytes */ + EBI_CS_ASPACE_512KB_gc = (0x0B<<2), /* 512K bytes */ + EBI_CS_ASPACE_1MB_gc = (0x0C<<2), /* 1M bytes */ + EBI_CS_ASPACE_2MB_gc = (0x0D<<2), /* 2M bytes */ + EBI_CS_ASPACE_4MB_gc = (0x0E<<2), /* 4M bytes */ + EBI_CS_ASPACE_8MB_gc = (0x0F<<2), /* 8M bytes */ + EBI_CS_ASPACE_16M_gc = (0x10<<2), /* 16M bytes */ +} EBI_CS_ASPACE_t; + +/* */ +typedef enum EBI_CS_SRWS_enum +{ + EBI_CS_SRWS_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_CS_SRWS_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_CS_SRWS_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_CS_SRWS_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_CS_SRWS_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_CS_SRWS_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_CS_SRWS_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_CS_SRWS_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_CS_SRWS_t; + +/* Chip Select address mode */ +typedef enum EBI_CS_MODE_enum +{ + EBI_CS_MODE_DISABLED_gc = (0x00<<0), /* Chip Select Disabled */ + EBI_CS_MODE_SRAM_gc = (0x01<<0), /* Chip Select in SRAM mode */ + EBI_CS_MODE_LPC_gc = (0x02<<0), /* Chip Select in SRAM LPC mode */ + EBI_CS_MODE_SDRAM_gc = (0x03<<0), /* Chip Select in SDRAM mode */ +} EBI_CS_MODE_t; + +/* Chip Select SDRAM mode */ +typedef enum EBI_CS_SDMODE_enum +{ + EBI_CS_SDMODE_NORMAL_gc = (0x00<<0), /* Normal mode */ + EBI_CS_SDMODE_LOAD_gc = (0x01<<0), /* Load Mode Register command mode */ +} EBI_CS_SDMODE_t; + +/* */ +typedef enum EBI_SDDATAW_enum +{ + EBI_SDDATAW_4BIT_gc = (0x00<<6), /* 4-bit data bus */ + EBI_SDDATAW_8BIT_gc = (0x01<<6), /* 8-bit data bus */ +} EBI_SDDATAW_t; + +/* */ +typedef enum EBI_LPCMODE_enum +{ + EBI_LPCMODE_ALE1_gc = (0x00<<4), /* Data muxed with addr byte 0 */ + EBI_LPCMODE_ALE12_gc = (0x02<<4), /* Data muxed with addr byte 0 and 1 */ +} EBI_LPCMODE_t; + +/* */ +typedef enum EBI_SRMODE_enum +{ + EBI_SRMODE_ALE1_gc = (0x00<<2), /* Addr byte 0 muxed with 1 */ + EBI_SRMODE_ALE2_gc = (0x01<<2), /* Addr byte 0 muxed with 2 */ + EBI_SRMODE_ALE12_gc = (0x02<<2), /* Addr byte 0 muxed with 1 and 2 */ + EBI_SRMODE_NOALE_gc = (0x03<<2), /* No addr muxing */ +} EBI_SRMODE_t; + +/* */ +typedef enum EBI_IFMODE_enum +{ + EBI_IFMODE_DISABLED_gc = (0x00<<0), /* EBI Disabled */ + EBI_IFMODE_3PORT_gc = (0x01<<0), /* 3-port mode */ + EBI_IFMODE_4PORT_gc = (0x02<<0), /* 4-port mode */ + EBI_IFMODE_2PORT_gc = (0x03<<0), /* 2-port mode */ +} EBI_IFMODE_t; + +/* */ +typedef enum EBI_SDCOL_enum +{ + EBI_SDCOL_8BIT_gc = (0x00<<0), /* 8 column bits */ + EBI_SDCOL_9BIT_gc = (0x01<<0), /* 9 column bits */ + EBI_SDCOL_10BIT_gc = (0x02<<0), /* 10 column bits */ + EBI_SDCOL_11BIT_gc = (0x03<<0), /* 11 column bits */ +} EBI_SDCOL_t; + +/* */ +typedef enum EBI_MRDLY_enum +{ + EBI_MRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_MRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_MRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_MRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_MRDLY_t; + +/* */ +typedef enum EBI_ROWCYCDLY_enum +{ + EBI_ROWCYCDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ROWCYCDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ROWCYCDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ROWCYCDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ROWCYCDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ROWCYCDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ROWCYCDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ROWCYCDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ROWCYCDLY_t; + +/* */ +typedef enum EBI_RPDLY_enum +{ + EBI_RPDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_RPDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_RPDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_RPDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_RPDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_RPDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_RPDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_RPDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_RPDLY_t; + +/* */ +typedef enum EBI_WRDLY_enum +{ + EBI_WRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_WRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_WRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_WRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_WRDLY_t; + +/* */ +typedef enum EBI_ESRDLY_enum +{ + EBI_ESRDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ESRDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ESRDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ESRDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ESRDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ESRDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ESRDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ESRDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ESRDLY_t; + +/* */ +typedef enum EBI_ROWCOLDLY_enum +{ + EBI_ROWCOLDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_ROWCOLDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_ROWCOLDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_ROWCOLDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_ROWCOLDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_ROWCOLDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_ROWCOLDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_ROWCOLDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_ROWCOLDLY_t; + + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_MASTER_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t STATUS; /* Status Register */ + register8_t BAUD; /* Baurd Rate Control Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_MASTER_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_SLAVE_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t STATUS; /* Status Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_SLAVE_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* Two-Wire Interface */ +typedef struct TWI_struct +{ + register8_t CTRL; /* TWI Common Control Register */ + TWI_MASTER_t MASTER; /* TWI master module */ + TWI_SLAVE_t SLAVE; /* TWI slave module */ +} TWI_t; + +/* Master Interrupt Level */ +typedef enum TWI_MASTER_INTLVL_enum +{ + TWI_MASTER_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_MASTER_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_MASTER_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_MASTER_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_MASTER_INTLVL_t; + +/* Inactive Timeout */ +typedef enum TWI_MASTER_TIMEOUT_enum +{ + TWI_MASTER_TIMEOUT_DISABLED_gc = (0x00<<2), /* Bus Timeout Disabled */ + TWI_MASTER_TIMEOUT_50US_gc = (0x01<<2), /* 50 Microseconds */ + TWI_MASTER_TIMEOUT_100US_gc = (0x02<<2), /* 100 Microseconds */ + TWI_MASTER_TIMEOUT_200US_gc = (0x03<<2), /* 200 Microseconds */ +} TWI_MASTER_TIMEOUT_t; + +/* Master Command */ +typedef enum TWI_MASTER_CMD_enum +{ + TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ + TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ + TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ +} TWI_MASTER_CMD_t; + +/* Master Bus State */ +typedef enum TWI_MASTER_BUSSTATE_enum +{ + TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ + TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ + TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ + TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ +} TWI_MASTER_BUSSTATE_t; + +/* Slave Interrupt Level */ +typedef enum TWI_SLAVE_INTLVL_enum +{ + TWI_SLAVE_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_SLAVE_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_SLAVE_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_SLAVE_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_SLAVE_INTLVL_t; + +/* Slave Command */ +typedef enum TWI_SLAVE_CMD_enum +{ + TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ + TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ +} TWI_SLAVE_CMD_t; + + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O port Configuration */ +typedef struct PORTCFG_struct +{ + register8_t MPCMASK; /* Multi-pin Configuration Mask */ + register8_t reserved_0x01; + register8_t VPCTRLA; /* Virtual Port Control Register A */ + register8_t VPCTRLB; /* Virtual Port Control Register B */ + register8_t CLKEVOUT; /* Clock and Event Out Register */ +} PORTCFG_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* Virtual Port */ +typedef struct VPORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t OUT; /* I/O Port Output */ + register8_t IN; /* I/O Port Input */ + register8_t INTFLAGS; /* Interrupt Flag Register */ +} VPORT_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O Ports */ +typedef struct PORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t DIRSET; /* I/O Port Data Direction Set */ + register8_t DIRCLR; /* I/O Port Data Direction Clear */ + register8_t DIRTGL; /* I/O Port Data Direction Toggle */ + register8_t OUT; /* I/O Port Output */ + register8_t OUTSET; /* I/O Port Output Set */ + register8_t OUTCLR; /* I/O Port Output Clear */ + register8_t OUTTGL; /* I/O Port Output Toggle */ + register8_t IN; /* I/O port Input */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INT0MASK; /* Port Interrupt 0 Mask */ + register8_t INT1MASK; /* Port Interrupt 1 Mask */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t PIN0CTRL; /* Pin 0 Control Register */ + register8_t PIN1CTRL; /* Pin 1 Control Register */ + register8_t PIN2CTRL; /* Pin 2 Control Register */ + register8_t PIN3CTRL; /* Pin 3 Control Register */ + register8_t PIN4CTRL; /* Pin 4 Control Register */ + register8_t PIN5CTRL; /* Pin 5 Control Register */ + register8_t PIN6CTRL; /* Pin 6 Control Register */ + register8_t PIN7CTRL; /* Pin 7 Control Register */ +} PORT_t; + +/* Virtual Port 0 Mapping */ +typedef enum PORTCFG_VP0MAP_enum +{ + PORTCFG_VP0MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP0MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP0MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP0MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP0MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP0MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP0MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP0MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP0MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP0MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP0MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP0MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP0MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP0MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP0MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP0MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP0MAP_t; + +/* Virtual Port 1 Mapping */ +typedef enum PORTCFG_VP1MAP_enum +{ + PORTCFG_VP1MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP1MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP1MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP1MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP1MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP1MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP1MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP1MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP1MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP1MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP1MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP1MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP1MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP1MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP1MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP1MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP1MAP_t; + +/* Virtual Port 2 Mapping */ +typedef enum PORTCFG_VP2MAP_enum +{ + PORTCFG_VP2MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP2MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP2MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP2MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP2MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP2MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP2MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP2MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP2MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP2MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP2MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP2MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP2MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP2MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP2MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP2MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP2MAP_t; + +/* Virtual Port 3 Mapping */ +typedef enum PORTCFG_VP3MAP_enum +{ + PORTCFG_VP3MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP3MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP3MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP3MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP3MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP3MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP3MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP3MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP3MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP3MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP3MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP3MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP3MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP3MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP3MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP3MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP3MAP_t; + +/* Clock Output Port */ +typedef enum PORTCFG_CLKOUT_enum +{ + PORTCFG_CLKOUT_OFF_gc = (0x00<<0), /* Clock Output Disabled */ + PORTCFG_CLKOUT_PC7_gc = (0x01<<0), /* Clock Output on Port C pin 7 */ + PORTCFG_CLKOUT_PD7_gc = (0x02<<0), /* Clock Output on Port D pin 7 */ + PORTCFG_CLKOUT_PE7_gc = (0x03<<0), /* Clock Output on Port E pin 7 */ +} PORTCFG_CLKOUT_t; + +/* Event Output Port */ +typedef enum PORTCFG_EVOUT_enum +{ + PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ + PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ + PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ + PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ +} PORTCFG_EVOUT_t; + +/* Port Interrupt 0 Level */ +typedef enum PORT_INT0LVL_enum +{ + PORT_INT0LVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + PORT_INT0LVL_LO_gc = (0x01<<0), /* Low Level */ + PORT_INT0LVL_MED_gc = (0x02<<0), /* Medium Level */ + PORT_INT0LVL_HI_gc = (0x03<<0), /* High Level */ +} PORT_INT0LVL_t; + +/* Port Interrupt 1 Level */ +typedef enum PORT_INT1LVL_enum +{ + PORT_INT1LVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + PORT_INT1LVL_LO_gc = (0x01<<2), /* Low Level */ + PORT_INT1LVL_MED_gc = (0x02<<2), /* Medium Level */ + PORT_INT1LVL_HI_gc = (0x03<<2), /* High Level */ +} PORT_INT1LVL_t; + +/* Output/Pull Configuration */ +typedef enum PORT_OPC_enum +{ + PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ + PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ + PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ + PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ + PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ + PORT_OPC_WIREDAND_gc = (0x05<<3), /* Wired AND */ + PORT_OPC_WIREDORPULL_gc = (0x06<<3), /* Wired OR w/ Pull-down */ + PORT_OPC_WIREDANDPULL_gc = (0x07<<3), /* Wired AND w/ Pull-up */ +} PORT_OPC_t; + +/* Input/Sense Configuration */ +typedef enum PORT_ISC_enum +{ + PORT_ISC_BOTHEDGES_gc = (0x00<<0), /* Sense Both Edges */ + PORT_ISC_RISING_gc = (0x01<<0), /* Sense Rising Edge */ + PORT_ISC_FALLING_gc = (0x02<<0), /* Sense Falling Edge */ + PORT_ISC_LEVEL_gc = (0x03<<0), /* Sense Level (Transparent For Events) */ + PORT_ISC_INPUT_DISABLE_gc = (0x07<<0), /* Disable Digital Input Buffer */ +} PORT_ISC_t; + + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 0 */ +typedef struct TC0_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + _WORDREGISTER(CCC); /* Compare or Capture C */ + _WORDREGISTER(CCD); /* Compare or Capture D */ + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ + _WORDREGISTER(CCCBUF); /* Compare Or Capture C Buffer */ + _WORDREGISTER(CCDBUF); /* Compare Or Capture D Buffer */ +} TC0_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 1 */ +typedef struct TC1_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t reserved_0x2E; + register8_t reserved_0x2F; + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ +} TC1_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* Advanced Waveform Extension */ +typedef struct AWEX_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t FDEVMASK; /* Fault Detection Event Mask */ + register8_t FDCTRL; /* Fault Detection Control Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x05; + register8_t DTBOTH; /* Dead Time Both Sides */ + register8_t DTBOTHBUF; /* Dead Time Both Sides Buffer */ + register8_t DTLS; /* Dead Time Low Side */ + register8_t DTHS; /* Dead Time High Side */ + register8_t DTLSBUF; /* Dead Time Low Side Buffer */ + register8_t DTHSBUF; /* Dead Time High Side Buffer */ + register8_t OUTOVEN; /* Output Override Enable */ +} AWEX_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* High-Resolution Extension */ +typedef struct HIRES_struct +{ + register8_t CTRL; /* Control Register */ +} HIRES_t; + +/* Clock Selection */ +typedef enum TC_CLKSEL_enum +{ + TC_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ + TC_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ + TC_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ + TC_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ + TC_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ + TC_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ + TC_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ + TC_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ + TC_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_CLKSEL_EVCH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_CLKSEL_EVCH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_CLKSEL_EVCH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_CLKSEL_EVCH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_CLKSEL_t; + +/* Waveform Generation Mode */ +typedef enum TC_WGMODE_enum +{ + TC_WGMODE_NORMAL_gc = (0x00<<0), /* Normal Mode */ + TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ + TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ + TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ + TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on TOP and BOTTOM */ + TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ +} TC_WGMODE_t; + +/* Event Action */ +typedef enum TC_EVACT_enum +{ + TC_EVACT_OFF_gc = (0x00<<5), /* No Event Action */ + TC_EVACT_CAPT_gc = (0x01<<5), /* Input Capture */ + TC_EVACT_UPDOWN_gc = (0x02<<5), /* Externally Controlled Up/Down Count */ + TC_EVACT_QDEC_gc = (0x03<<5), /* Quadrature Decode */ + TC_EVACT_RESTART_gc = (0x04<<5), /* Restart */ + TC_EVACT_FRW_gc = (0x05<<5), /* Frequency Capture */ + TC_EVACT_PW_gc = (0x06<<5), /* Pulse-width Capture */ +} TC_EVACT_t; + +/* Event Selection */ +typedef enum TC_EVSEL_enum +{ + TC_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + TC_EVSEL_CH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_EVSEL_CH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_EVSEL_CH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_EVSEL_CH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_EVSEL_CH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_EVSEL_CH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_EVSEL_CH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_EVSEL_CH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_EVSEL_t; + +/* Error Interrupt Level */ +typedef enum TC_ERRINTLVL_enum +{ + TC_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_ERRINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_ERRINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_ERRINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_ERRINTLVL_t; + +/* Overflow Interrupt Level */ +typedef enum TC_OVFINTLVL_enum +{ + TC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_OVFINTLVL_t; + +/* Compare or Capture D Interrupt Level */ +typedef enum TC_CCDINTLVL_enum +{ + TC_CCDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TC_CCDINTLVL_LO_gc = (0x01<<6), /* Low Level */ + TC_CCDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TC_CCDINTLVL_HI_gc = (0x03<<6), /* High Level */ +} TC_CCDINTLVL_t; + +/* Compare or Capture C Interrupt Level */ +typedef enum TC_CCCINTLVL_enum +{ + TC_CCCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + TC_CCCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + TC_CCCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + TC_CCCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} TC_CCCINTLVL_t; + +/* Compare or Capture B Interrupt Level */ +typedef enum TC_CCBINTLVL_enum +{ + TC_CCBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_CCBINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_CCBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_CCBINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_CCBINTLVL_t; + +/* Compare or Capture A Interrupt Level */ +typedef enum TC_CCAINTLVL_enum +{ + TC_CCAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_CCAINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_CCAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_CCAINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_CCAINTLVL_t; + +/* Timer/Counter Command */ +typedef enum TC_CMD_enum +{ + TC_CMD_NONE_gc = (0x00<<2), /* No Command */ + TC_CMD_UPDATE_gc = (0x01<<2), /* Force Update */ + TC_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ + TC_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ +} TC_CMD_t; + +/* Fault Detect Action */ +typedef enum AWEX_FDACT_enum +{ + AWEX_FDACT_NONE_gc = (0x00<<0), /* No Fault Protection */ + AWEX_FDACT_CLEAROE_gc = (0x01<<0), /* Clear Output Enable Bits */ + AWEX_FDACT_CLEARDIR_gc = (0x03<<0), /* Clear I/O Port Direction Bits */ +} AWEX_FDACT_t; + +/* High Resolution Enable */ +typedef enum HIRES_HREN_enum +{ + HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ + HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ + HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ + HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ +} HIRES_HREN_t; + + +/* +-------------------------------------------------------------------------- +USART - Universal Asynchronous Receiver-Transmitter +-------------------------------------------------------------------------- +*/ + +/* Universal Synchronous/Asynchronous Receiver/Transmitter */ +typedef struct USART_struct +{ + register8_t DATA; /* Data Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x02; + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t BAUDCTRLA; /* Baud Rate Control Register A */ + register8_t BAUDCTRLB; /* Baud Rate Control Register B */ +} USART_t; + +/* Receive Complete Interrupt level */ +typedef enum USART_RXCINTLVL_enum +{ + USART_RXCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + USART_RXCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + USART_RXCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + USART_RXCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} USART_RXCINTLVL_t; + +/* Transmit Complete Interrupt level */ +typedef enum USART_TXCINTLVL_enum +{ + USART_TXCINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + USART_TXCINTLVL_LO_gc = (0x01<<2), /* Low Level */ + USART_TXCINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + USART_TXCINTLVL_HI_gc = (0x03<<2), /* High Level */ +} USART_TXCINTLVL_t; + +/* Data Register Empty Interrupt level */ +typedef enum USART_DREINTLVL_enum +{ + USART_DREINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + USART_DREINTLVL_LO_gc = (0x01<<0), /* Low Level */ + USART_DREINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + USART_DREINTLVL_HI_gc = (0x03<<0), /* High Level */ +} USART_DREINTLVL_t; + +/* Character Size */ +typedef enum USART_CHSIZE_enum +{ + USART_CHSIZE_5BIT_gc = (0x00<<0), /* Character size: 5 bit */ + USART_CHSIZE_6BIT_gc = (0x01<<0), /* Character size: 6 bit */ + USART_CHSIZE_7BIT_gc = (0x02<<0), /* Character size: 7 bit */ + USART_CHSIZE_8BIT_gc = (0x03<<0), /* Character size: 8 bit */ + USART_CHSIZE_9BIT_gc = (0x07<<0), /* Character size: 9 bit */ +} USART_CHSIZE_t; + +/* Communication Mode */ +typedef enum USART_CMODE_enum +{ + USART_CMODE_ASYNCHRONOUS_gc = (0x00<<6), /* Asynchronous Mode */ + USART_CMODE_SYNCHRONOUS_gc = (0x01<<6), /* Synchronous Mode */ + USART_CMODE_IRDA_gc = (0x02<<6), /* IrDA Mode */ + USART_CMODE_MSPI_gc = (0x03<<6), /* Master SPI Mode */ +} USART_CMODE_t; + +/* Parity Mode */ +typedef enum USART_PMODE_enum +{ + USART_PMODE_DISABLED_gc = (0x00<<4), /* No Parity */ + USART_PMODE_EVEN_gc = (0x02<<4), /* Even Parity */ + USART_PMODE_ODD_gc = (0x03<<4), /* Odd Parity */ +} USART_PMODE_t; + + +/* +-------------------------------------------------------------------------- +SPI - Serial Peripheral Interface +-------------------------------------------------------------------------- +*/ + +/* Serial Peripheral Interface */ +typedef struct SPI_struct +{ + register8_t CTRL; /* Control Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t STATUS; /* Status Register */ + register8_t DATA; /* Data Register */ +} SPI_t; + +/* SPI Mode */ +typedef enum SPI_MODE_enum +{ + SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */ + SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */ + SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */ + SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */ +} SPI_MODE_t; + +/* Prescaler setting */ +typedef enum SPI_PRESCALER_enum +{ + SPI_PRESCALER_DIV4_gc = (0x00<<0), /* System Clock / 4 */ + SPI_PRESCALER_DIV16_gc = (0x01<<0), /* System Clock / 16 */ + SPI_PRESCALER_DIV64_gc = (0x02<<0), /* System Clock / 64 */ + SPI_PRESCALER_DIV128_gc = (0x03<<0), /* System Clock / 128 */ +} SPI_PRESCALER_t; + +/* Interrupt level */ +typedef enum SPI_INTLVL_enum +{ + SPI_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + SPI_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + SPI_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + SPI_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} SPI_INTLVL_t; + + +/* +-------------------------------------------------------------------------- +IRCOM - IR Communication Module +-------------------------------------------------------------------------- +*/ + +/* IR Communication Module */ +typedef struct IRCOM_struct +{ + register8_t CTRL; /* Control Register */ + register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ + register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ +} IRCOM_t; + +/* Event channel selection */ +typedef enum IRDA_EVSEL_enum +{ + IRDA_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + IRDA_EVSEL_0_gc = (0x08<<0), /* Event Channel 0 */ + IRDA_EVSEL_1_gc = (0x09<<0), /* Event Channel 1 */ + IRDA_EVSEL_2_gc = (0x0A<<0), /* Event Channel 2 */ + IRDA_EVSEL_3_gc = (0x0B<<0), /* Event Channel 3 */ + IRDA_EVSEL_4_gc = (0x0C<<0), /* Event Channel 4 */ + IRDA_EVSEL_5_gc = (0x0D<<0), /* Event Channel 5 */ + IRDA_EVSEL_6_gc = (0x0E<<0), /* Event Channel 6 */ + IRDA_EVSEL_7_gc = (0x0F<<0), /* Event Channel 7 */ +} IRDA_EVSEL_t; + + +/* +-------------------------------------------------------------------------- +AES - AES Module +-------------------------------------------------------------------------- +*/ + +/* AES Module */ +typedef struct AES_struct +{ + register8_t CTRL; /* AES Control Register */ + register8_t STATUS; /* AES Status Register */ + register8_t STATE; /* AES State Register */ + register8_t KEY; /* AES Key Register */ + register8_t INTCTRL; /* AES Interrupt Control Register */ +} AES_t; + +/* Interrupt level */ +typedef enum AES_INTLVL_enum +{ + AES_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + AES_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + AES_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + AES_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} AES_INTLVL_t; + + + +/* +========================================================================== +IO Module Instances. Mapped to memory. +========================================================================== +*/ + +#define GPIO (*(GPIO_t *) 0x0000) /* General Purpose IO Registers */ +#define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port 0 */ +#define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port 1 */ +#define VPORT2 (*(VPORT_t *) 0x0018) /* Virtual Port 2 */ +#define VPORT3 (*(VPORT_t *) 0x001C) /* Virtual Port 3 */ +#define OCD (*(OCD_t *) 0x002E) /* On-Chip Debug System */ +#define CPU (*(CPU_t *) 0x0030) /* CPU Registers */ +#define CLK (*(CLK_t *) 0x0040) /* Clock System */ +#define SLEEP (*(SLEEP_t *) 0x0048) /* Sleep Controller */ +#define OSC (*(OSC_t *) 0x0050) /* Oscillator Control */ +#define DFLLRC32M (*(DFLL_t *) 0x0060) /* DFLL for 32MHz RC Oscillator */ +#define DFLLRC2M (*(DFLL_t *) 0x0068) /* DFLL for 2MHz RC Oscillator */ +#define PR (*(PR_t *) 0x0070) /* Power Reduction */ +#define RST (*(RST_t *) 0x0078) /* Reset Controller */ +#define WDT (*(WDT_t *) 0x0080) /* Watch-Dog Timer */ +#define MCU (*(MCU_t *) 0x0090) /* MCU Control */ +#define PMIC (*(PMIC_t *) 0x00A0) /* Programmable Interrupt Controller */ +#define PORTCFG (*(PORTCFG_t *) 0x00B0) /* Port Configuration */ +#define AES (*(AES_t *) 0x00C0) /* AES Crypto Module */ +#define DMA (*(DMA_t *) 0x0100) /* DMA Controller */ +#define EVSYS (*(EVSYS_t *) 0x0180) /* Event System */ +#define NVM (*(NVM_t *) 0x01C0) /* Non Volatile Memory Controller */ +#define ADCA (*(ADC_t *) 0x0200) /* Analog to Digital Converter A */ +#define ADCB (*(ADC_t *) 0x0240) /* Analog to Digital Converter B */ +#define DACA (*(DAC_t *) 0x0300) /* Digitalto Analog Converter A */ +#define DACB (*(DAC_t *) 0x0320) /* Digital to Analog Converter B */ +#define ACA (*(AC_t *) 0x0380) /* Analog Comparator A */ +#define ACB (*(AC_t *) 0x0390) /* Analog Comparator B */ +#define RTC (*(RTC_t *) 0x0400) /* Real-Time Counter */ +#define EBI (*(EBI_t *) 0x0440) /* External Bus Interface */ +#define TWIC (*(TWI_t *) 0x0480) /* Two-Wire Interface C */ +#define TWID (*(TWI_t *) 0x0490) /* Two-Wire Interface D */ +#define TWIE (*(TWI_t *) 0x04A0) /* Two-Wire Interface E */ +#define TWIF (*(TWI_t *) 0x04B0) /* Two-Wire Interface F */ +#define PORTA (*(PORT_t *) 0x0600) /* Port A */ +#define PORTB (*(PORT_t *) 0x0620) /* Port B */ +#define PORTC (*(PORT_t *) 0x0640) /* Port C */ +#define PORTD (*(PORT_t *) 0x0660) /* Port D */ +#define PORTE (*(PORT_t *) 0x0680) /* Port E */ +#define PORTF (*(PORT_t *) 0x06A0) /* Port F */ +#define PORTH (*(PORT_t *) 0x06E0) /* Port H */ +#define PORTJ (*(PORT_t *) 0x0700) /* Port J */ +#define PORTK (*(PORT_t *) 0x0720) /* Port K */ +#define PORTQ (*(PORT_t *) 0x07C0) /* Port Q */ +#define PORTR (*(PORT_t *) 0x07E0) /* Port R */ +#define TCC0 (*(TC0_t *) 0x0800) /* Timer/Counter C0 */ +#define TCC1 (*(TC1_t *) 0x0840) /* Timer/Counter C1 */ +#define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension C */ +#define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension C */ +#define USARTC0 (*(USART_t *) 0x08A0) /* Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC1 (*(USART_t *) 0x08B0) /* Universal Asynchronous Receiver-Transmitter C1 */ +#define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface C */ +#define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ +#define TCD0 (*(TC0_t *) 0x0900) /* Timer/Counter D0 */ +#define TCD1 (*(TC1_t *) 0x0940) /* Timer/Counter D1 */ +#define HIRESD (*(HIRES_t *) 0x0990) /* High-Resolution Extension D */ +#define USARTD0 (*(USART_t *) 0x09A0) /* Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD1 (*(USART_t *) 0x09B0) /* Universal Asynchronous Receiver-Transmitter D1 */ +#define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface D */ +#define TCE0 (*(TC0_t *) 0x0A00) /* Timer/Counter E0 */ +#define TCE1 (*(TC1_t *) 0x0A40) /* Timer/Counter E1 */ +#define AWEXE (*(AWEX_t *) 0x0A80) /* Advanced Waveform Extension E */ +#define HIRESE (*(HIRES_t *) 0x0A90) /* High-Resolution Extension E */ +#define USARTE0 (*(USART_t *) 0x0AA0) /* Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE1 (*(USART_t *) 0x0AB0) /* Universal Asynchronous Receiver-Transmitter E1 */ +#define SPIE (*(SPI_t *) 0x0AC0) /* Serial Peripheral Interface E */ +#define TCF0 (*(TC0_t *) 0x0B00) /* Timer/Counter F0 */ +#define TCF1 (*(TC1_t *) 0x0B40) /* Timer/Counter F1 */ +#define HIRESF (*(HIRES_t *) 0x0B90) /* High-Resolution Extension F */ +#define USARTF0 (*(USART_t *) 0x0BA0) /* Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF1 (*(USART_t *) 0x0BB0) /* Universal Asynchronous Receiver-Transmitter F1 */ +#define SPIF (*(SPI_t *) 0x0BC0) /* Serial Peripheral Interface F */ + + +#endif /* !defined (__ASSEMBLER__) */ + + +/* ========== Flattened fully qualified IO register names ========== */ + +/* GPIO - General Purpose IO Registers */ +#define GPIO_GPIO0 _SFR_MEM8(0x0000) +#define GPIO_GPIO1 _SFR_MEM8(0x0001) +#define GPIO_GPIO2 _SFR_MEM8(0x0002) +#define GPIO_GPIO3 _SFR_MEM8(0x0003) +#define GPIO_GPIO4 _SFR_MEM8(0x0004) +#define GPIO_GPIO5 _SFR_MEM8(0x0005) +#define GPIO_GPIO6 _SFR_MEM8(0x0006) +#define GPIO_GPIO7 _SFR_MEM8(0x0007) +#define GPIO_GPIO8 _SFR_MEM8(0x0008) +#define GPIO_GPIO9 _SFR_MEM8(0x0009) +#define GPIO_GPIOA _SFR_MEM8(0x000A) +#define GPIO_GPIOB _SFR_MEM8(0x000B) +#define GPIO_GPIOC _SFR_MEM8(0x000C) +#define GPIO_GPIOD _SFR_MEM8(0x000D) +#define GPIO_GPIOE _SFR_MEM8(0x000E) +#define GPIO_GPIOF _SFR_MEM8(0x000F) + +/* VPORT0 - Virtual Port 0 */ +#define VPORT0_DIR _SFR_MEM8(0x0010) +#define VPORT0_OUT _SFR_MEM8(0x0011) +#define VPORT0_IN _SFR_MEM8(0x0012) +#define VPORT0_INTFLAGS _SFR_MEM8(0x0013) + +/* VPORT1 - Virtual Port 1 */ +#define VPORT1_DIR _SFR_MEM8(0x0014) +#define VPORT1_OUT _SFR_MEM8(0x0015) +#define VPORT1_IN _SFR_MEM8(0x0016) +#define VPORT1_INTFLAGS _SFR_MEM8(0x0017) + +/* VPORT2 - Virtual Port 2 */ +#define VPORT2_DIR _SFR_MEM8(0x0018) +#define VPORT2_OUT _SFR_MEM8(0x0019) +#define VPORT2_IN _SFR_MEM8(0x001A) +#define VPORT2_INTFLAGS _SFR_MEM8(0x001B) + +/* VPORT3 - Virtual Port 3 */ +#define VPORT3_DIR _SFR_MEM8(0x001C) +#define VPORT3_OUT _SFR_MEM8(0x001D) +#define VPORT3_IN _SFR_MEM8(0x001E) +#define VPORT3_INTFLAGS _SFR_MEM8(0x001F) + +/* OCD - On-Chip Debug System */ +#define OCD_OCDR0 _SFR_MEM8(0x002E) +#define OCD_OCDR1 _SFR_MEM8(0x002F) + +/* CPU - CPU Registers */ +#define CPU_CCP _SFR_MEM8(0x0034) +#define CPU_RAMPD _SFR_MEM8(0x0038) +#define CPU_RAMPX _SFR_MEM8(0x0039) +#define CPU_RAMPY _SFR_MEM8(0x003A) +#define CPU_RAMPZ _SFR_MEM8(0x003B) +#define CPU_EIND _SFR_MEM8(0x003C) +#define CPU_SPL _SFR_MEM8(0x003D) +#define CPU_SPH _SFR_MEM8(0x003E) +#define CPU_SREG _SFR_MEM8(0x003F) + +/* CLK - Clock System */ +#define CLK_CTRL _SFR_MEM8(0x0040) +#define CLK_PSCTRL _SFR_MEM8(0x0041) +#define CLK_LOCK _SFR_MEM8(0x0042) +#define CLK_RTCCTRL _SFR_MEM8(0x0043) + +/* SLEEP - Sleep Controller */ +#define SLEEP_CTRL _SFR_MEM8(0x0048) + +/* OSC - Oscillator Control */ +#define OSC_CTRL _SFR_MEM8(0x0050) +#define OSC_STATUS _SFR_MEM8(0x0051) +#define OSC_XOSCCTRL _SFR_MEM8(0x0052) +#define OSC_XOSCFAIL _SFR_MEM8(0x0053) +#define OSC_RC32KCAL _SFR_MEM8(0x0054) +#define OSC_PLLCTRL _SFR_MEM8(0x0055) +#define OSC_DFLLCTRL _SFR_MEM8(0x0056) + +/* DFLLRC32M - DFLL for 32MHz RC Oscillator */ +#define DFLLRC32M_CTRL _SFR_MEM8(0x0060) +#define DFLLRC32M_CALA _SFR_MEM8(0x0062) +#define DFLLRC32M_CALB _SFR_MEM8(0x0063) +#define DFLLRC32M_OSCCNT0 _SFR_MEM8(0x0064) +#define DFLLRC32M_OSCCNT1 _SFR_MEM8(0x0065) +#define DFLLRC32M_OSCCNT2 _SFR_MEM8(0x0066) + +/* DFLLRC2M - DFLL for 2MHz RC Oscillator */ +#define DFLLRC2M_CTRL _SFR_MEM8(0x0068) +#define DFLLRC2M_CALA _SFR_MEM8(0x006A) +#define DFLLRC2M_CALB _SFR_MEM8(0x006B) +#define DFLLRC2M_OSCCNT0 _SFR_MEM8(0x006C) +#define DFLLRC2M_OSCCNT1 _SFR_MEM8(0x006D) +#define DFLLRC2M_OSCCNT2 _SFR_MEM8(0x006E) + +/* PR - Power Reduction */ +#define PR_PR _SFR_MEM8(0x0070) +#define PR_PRPA _SFR_MEM8(0x0071) +#define PR_PRPB _SFR_MEM8(0x0072) +#define PR_PRPC _SFR_MEM8(0x0073) +#define PR_PRPD _SFR_MEM8(0x0074) +#define PR_PRPE _SFR_MEM8(0x0075) +#define PR_PRPF _SFR_MEM8(0x0076) + +/* RST - Reset Controller */ +#define RST_STATUS _SFR_MEM8(0x0078) +#define RST_CTRL _SFR_MEM8(0x0079) + +/* WDT - Watch-Dog Timer */ +#define WDT_CTRL _SFR_MEM8(0x0080) +#define WDT_WINCTRL _SFR_MEM8(0x0081) +#define WDT_STATUS _SFR_MEM8(0x0082) + +/* MCU - MCU Control */ +#define MCU_DEVID0 _SFR_MEM8(0x0090) +#define MCU_DEVID1 _SFR_MEM8(0x0091) +#define MCU_DEVID2 _SFR_MEM8(0x0092) +#define MCU_REVID _SFR_MEM8(0x0093) +#define MCU_JTAGUID _SFR_MEM8(0x0094) +#define MCU_MCUCR _SFR_MEM8(0x0096) +#define MCU_EVSYSLOCK _SFR_MEM8(0x0098) +#define MCU_AWEXLOCK _SFR_MEM8(0x0099) + +/* PMIC - Programmable Interrupt Controller */ +#define PMIC_STATUS _SFR_MEM8(0x00A0) +#define PMIC_INTPRI _SFR_MEM8(0x00A1) +#define PMIC_CTRL _SFR_MEM8(0x00A2) + +/* PORTCFG - Port Configuration */ +#define PORTCFG_MPCMASK _SFR_MEM8(0x00B0) +#define PORTCFG_VPCTRLA _SFR_MEM8(0x00B2) +#define PORTCFG_VPCTRLB _SFR_MEM8(0x00B3) +#define PORTCFG_CLKEVOUT _SFR_MEM8(0x00B4) + +/* AES - AES Crypto Module */ +#define AES_CTRL _SFR_MEM8(0x00C0) +#define AES_STATUS _SFR_MEM8(0x00C1) +#define AES_STATE _SFR_MEM8(0x00C2) +#define AES_KEY _SFR_MEM8(0x00C3) +#define AES_INTCTRL _SFR_MEM8(0x00C4) + +/* DMA - DMA Controller */ +#define DMA_CTRL _SFR_MEM8(0x0100) +#define DMA_INTFLAGS _SFR_MEM8(0x0103) +#define DMA_STATUS _SFR_MEM8(0x0104) +#define DMA_TEMP _SFR_MEM16(0x0106) +#define DMA_CH0_CTRLA _SFR_MEM8(0x0110) +#define DMA_CH0_CTRLB _SFR_MEM8(0x0111) +#define DMA_CH0_ADDRCTRL _SFR_MEM8(0x0112) +#define DMA_CH0_TRIGSRC _SFR_MEM8(0x0113) +#define DMA_CH0_TRFCNT _SFR_MEM16(0x0114) +#define DMA_CH0_REPCNT _SFR_MEM8(0x0116) +#define DMA_CH0_SRCADDR0 _SFR_MEM8(0x0118) +#define DMA_CH0_SRCADDR1 _SFR_MEM8(0x0119) +#define DMA_CH0_SRCADDR2 _SFR_MEM8(0x011A) +#define DMA_CH0_DESTADDR0 _SFR_MEM8(0x011C) +#define DMA_CH0_DESTADDR1 _SFR_MEM8(0x011D) +#define DMA_CH0_DESTADDR2 _SFR_MEM8(0x011E) +#define DMA_CH1_CTRLA _SFR_MEM8(0x0120) +#define DMA_CH1_CTRLB _SFR_MEM8(0x0121) +#define DMA_CH1_ADDRCTRL _SFR_MEM8(0x0122) +#define DMA_CH1_TRIGSRC _SFR_MEM8(0x0123) +#define DMA_CH1_TRFCNT _SFR_MEM16(0x0124) +#define DMA_CH1_REPCNT _SFR_MEM8(0x0126) +#define DMA_CH1_SRCADDR0 _SFR_MEM8(0x0128) +#define DMA_CH1_SRCADDR1 _SFR_MEM8(0x0129) +#define DMA_CH1_SRCADDR2 _SFR_MEM8(0x012A) +#define DMA_CH1_DESTADDR0 _SFR_MEM8(0x012C) +#define DMA_CH1_DESTADDR1 _SFR_MEM8(0x012D) +#define DMA_CH1_DESTADDR2 _SFR_MEM8(0x012E) +#define DMA_CH2_CTRLA _SFR_MEM8(0x0130) +#define DMA_CH2_CTRLB _SFR_MEM8(0x0131) +#define DMA_CH2_ADDRCTRL _SFR_MEM8(0x0132) +#define DMA_CH2_TRIGSRC _SFR_MEM8(0x0133) +#define DMA_CH2_TRFCNT _SFR_MEM16(0x0134) +#define DMA_CH2_REPCNT _SFR_MEM8(0x0136) +#define DMA_CH2_SRCADDR0 _SFR_MEM8(0x0138) +#define DMA_CH2_SRCADDR1 _SFR_MEM8(0x0139) +#define DMA_CH2_SRCADDR2 _SFR_MEM8(0x013A) +#define DMA_CH2_DESTADDR0 _SFR_MEM8(0x013C) +#define DMA_CH2_DESTADDR1 _SFR_MEM8(0x013D) +#define DMA_CH2_DESTADDR2 _SFR_MEM8(0x013E) +#define DMA_CH3_CTRLA _SFR_MEM8(0x0140) +#define DMA_CH3_CTRLB _SFR_MEM8(0x0141) +#define DMA_CH3_ADDRCTRL _SFR_MEM8(0x0142) +#define DMA_CH3_TRIGSRC _SFR_MEM8(0x0143) +#define DMA_CH3_TRFCNT _SFR_MEM16(0x0144) +#define DMA_CH3_REPCNT _SFR_MEM8(0x0146) +#define DMA_CH3_SRCADDR0 _SFR_MEM8(0x0148) +#define DMA_CH3_SRCADDR1 _SFR_MEM8(0x0149) +#define DMA_CH3_SRCADDR2 _SFR_MEM8(0x014A) +#define DMA_CH3_DESTADDR0 _SFR_MEM8(0x014C) +#define DMA_CH3_DESTADDR1 _SFR_MEM8(0x014D) +#define DMA_CH3_DESTADDR2 _SFR_MEM8(0x014E) + +/* EVSYS - Event System */ +#define EVSYS_CH0MUX _SFR_MEM8(0x0180) +#define EVSYS_CH1MUX _SFR_MEM8(0x0181) +#define EVSYS_CH2MUX _SFR_MEM8(0x0182) +#define EVSYS_CH3MUX _SFR_MEM8(0x0183) +#define EVSYS_CH4MUX _SFR_MEM8(0x0184) +#define EVSYS_CH5MUX _SFR_MEM8(0x0185) +#define EVSYS_CH6MUX _SFR_MEM8(0x0186) +#define EVSYS_CH7MUX _SFR_MEM8(0x0187) +#define EVSYS_CH0CTRL _SFR_MEM8(0x0188) +#define EVSYS_CH1CTRL _SFR_MEM8(0x0189) +#define EVSYS_CH2CTRL _SFR_MEM8(0x018A) +#define EVSYS_CH3CTRL _SFR_MEM8(0x018B) +#define EVSYS_CH4CTRL _SFR_MEM8(0x018C) +#define EVSYS_CH5CTRL _SFR_MEM8(0x018D) +#define EVSYS_CH6CTRL _SFR_MEM8(0x018E) +#define EVSYS_CH7CTRL _SFR_MEM8(0x018F) +#define EVSYS_STROBE _SFR_MEM8(0x0190) +#define EVSYS_DATA _SFR_MEM8(0x0191) + +/* NVM - Non Volatile Memory Controller */ +#define NVM_ADDR0 _SFR_MEM8(0x01C0) +#define NVM_ADDR1 _SFR_MEM8(0x01C1) +#define NVM_ADDR2 _SFR_MEM8(0x01C2) +#define NVM_DATA0 _SFR_MEM8(0x01C4) +#define NVM_DATA1 _SFR_MEM8(0x01C5) +#define NVM_DATA2 _SFR_MEM8(0x01C6) +#define NVM_CMD _SFR_MEM8(0x01CA) +#define NVM_CTRLA _SFR_MEM8(0x01CB) +#define NVM_CTRLB _SFR_MEM8(0x01CC) +#define NVM_INTCTRL _SFR_MEM8(0x01CD) +#define NVM_STATUS _SFR_MEM8(0x01CF) +#define NVM_LOCKBITS _SFR_MEM8(0x01D0) + +/* ADCA - Analog to Digital Converter A */ +#define ADCA_CTRLA _SFR_MEM8(0x0200) +#define ADCA_CTRLB _SFR_MEM8(0x0201) +#define ADCA_REFCTRL _SFR_MEM8(0x0202) +#define ADCA_EVCTRL _SFR_MEM8(0x0203) +#define ADCA_PRESCALER _SFR_MEM8(0x0204) +#define ADCA_CALCTRL _SFR_MEM8(0x0205) +#define ADCA_INTFLAGS _SFR_MEM8(0x0206) +#define ADCA_CALIB _SFR_MEM8(0x020C) +#define ADCA_CH0RES _SFR_MEM16(0x0210) +#define ADCA_CH1RES _SFR_MEM16(0x0212) +#define ADCA_CH2RES _SFR_MEM16(0x0214) +#define ADCA_CH3RES _SFR_MEM16(0x0216) +#define ADCA_CMP _SFR_MEM16(0x0218) +#define ADCA_CH0_CTRL _SFR_MEM8(0x0220) +#define ADCA_CH0_MUXCTRL _SFR_MEM8(0x0221) +#define ADCA_CH0_INTCTRL _SFR_MEM8(0x0222) +#define ADCA_CH0_INTFLAGS _SFR_MEM8(0x0223) +#define ADCA_CH0_RES _SFR_MEM16(0x0224) +#define ADCA_CH1_CTRL _SFR_MEM8(0x0228) +#define ADCA_CH1_MUXCTRL _SFR_MEM8(0x0229) +#define ADCA_CH1_INTCTRL _SFR_MEM8(0x022A) +#define ADCA_CH1_INTFLAGS _SFR_MEM8(0x022B) +#define ADCA_CH1_RES _SFR_MEM16(0x022C) +#define ADCA_CH2_CTRL _SFR_MEM8(0x0230) +#define ADCA_CH2_MUXCTRL _SFR_MEM8(0x0231) +#define ADCA_CH2_INTCTRL _SFR_MEM8(0x0232) +#define ADCA_CH2_INTFLAGS _SFR_MEM8(0x0233) +#define ADCA_CH2_RES _SFR_MEM16(0x0234) +#define ADCA_CH3_CTRL _SFR_MEM8(0x0238) +#define ADCA_CH3_MUXCTRL _SFR_MEM8(0x0239) +#define ADCA_CH3_INTCTRL _SFR_MEM8(0x023A) +#define ADCA_CH3_INTFLAGS _SFR_MEM8(0x023B) +#define ADCA_CH3_RES _SFR_MEM16(0x023C) + +/* ADCB - Analog to Digital Converter B */ +#define ADCB_CTRLA _SFR_MEM8(0x0240) +#define ADCB_CTRLB _SFR_MEM8(0x0241) +#define ADCB_REFCTRL _SFR_MEM8(0x0242) +#define ADCB_EVCTRL _SFR_MEM8(0x0243) +#define ADCB_PRESCALER _SFR_MEM8(0x0244) +#define ADCB_CALCTRL _SFR_MEM8(0x0245) +#define ADCB_INTFLAGS _SFR_MEM8(0x0246) +#define ADCB_CALIB _SFR_MEM8(0x024C) +#define ADCB_CH0RES _SFR_MEM16(0x0250) +#define ADCB_CH1RES _SFR_MEM16(0x0252) +#define ADCB_CH2RES _SFR_MEM16(0x0254) +#define ADCB_CH3RES _SFR_MEM16(0x0256) +#define ADCB_CMP _SFR_MEM16(0x0258) +#define ADCB_CH0_CTRL _SFR_MEM8(0x0260) +#define ADCB_CH0_MUXCTRL _SFR_MEM8(0x0261) +#define ADCB_CH0_INTCTRL _SFR_MEM8(0x0262) +#define ADCB_CH0_INTFLAGS _SFR_MEM8(0x0263) +#define ADCB_CH0_RES _SFR_MEM16(0x0264) +#define ADCB_CH1_CTRL _SFR_MEM8(0x0268) +#define ADCB_CH1_MUXCTRL _SFR_MEM8(0x0269) +#define ADCB_CH1_INTCTRL _SFR_MEM8(0x026A) +#define ADCB_CH1_INTFLAGS _SFR_MEM8(0x026B) +#define ADCB_CH1_RES _SFR_MEM16(0x026C) +#define ADCB_CH2_CTRL _SFR_MEM8(0x0270) +#define ADCB_CH2_MUXCTRL _SFR_MEM8(0x0271) +#define ADCB_CH2_INTCTRL _SFR_MEM8(0x0272) +#define ADCB_CH2_INTFLAGS _SFR_MEM8(0x0273) +#define ADCB_CH2_RES _SFR_MEM16(0x0274) +#define ADCB_CH3_CTRL _SFR_MEM8(0x0278) +#define ADCB_CH3_MUXCTRL _SFR_MEM8(0x0279) +#define ADCB_CH3_INTCTRL _SFR_MEM8(0x027A) +#define ADCB_CH3_INTFLAGS _SFR_MEM8(0x027B) +#define ADCB_CH3_RES _SFR_MEM16(0x027C) + +/* DACA - Digitalto Analog Converter A */ +#define DACA_CTRLA _SFR_MEM8(0x0300) +#define DACA_CTRLB _SFR_MEM8(0x0301) +#define DACA_CTRLC _SFR_MEM8(0x0302) +#define DACA_EVCTRL _SFR_MEM8(0x0303) +#define DACA_TIMCTRL _SFR_MEM8(0x0304) +#define DACA_STATUS _SFR_MEM8(0x0305) +#define DACA_GAINCAL _SFR_MEM8(0x0308) +#define DACA_OFFSETCAL _SFR_MEM8(0x0309) +#define DACA_CH0DATA _SFR_MEM16(0x0318) +#define DACA_CH1DATA _SFR_MEM16(0x031A) + +/* DACB - Digital to Analog Converter B */ +#define DACB_CTRLA _SFR_MEM8(0x0320) +#define DACB_CTRLB _SFR_MEM8(0x0321) +#define DACB_CTRLC _SFR_MEM8(0x0322) +#define DACB_EVCTRL _SFR_MEM8(0x0323) +#define DACB_TIMCTRL _SFR_MEM8(0x0324) +#define DACB_STATUS _SFR_MEM8(0x0325) +#define DACB_GAINCAL _SFR_MEM8(0x0328) +#define DACB_OFFSETCAL _SFR_MEM8(0x0329) +#define DACB_CH0DATA _SFR_MEM16(0x0338) +#define DACB_CH1DATA _SFR_MEM16(0x033A) + +/* ACA - Analog Comparator A */ +#define ACA_AC0CTRL _SFR_MEM8(0x0380) +#define ACA_AC1CTRL _SFR_MEM8(0x0381) +#define ACA_AC0MUXCTRL _SFR_MEM8(0x0382) +#define ACA_AC1MUXCTRL _SFR_MEM8(0x0383) +#define ACA_CTRLA _SFR_MEM8(0x0384) +#define ACA_CTRLB _SFR_MEM8(0x0385) +#define ACA_WINCTRL _SFR_MEM8(0x0386) +#define ACA_STATUS _SFR_MEM8(0x0387) + +/* ACB - Analog Comparator B */ +#define ACB_AC0CTRL _SFR_MEM8(0x0390) +#define ACB_AC1CTRL _SFR_MEM8(0x0391) +#define ACB_AC0MUXCTRL _SFR_MEM8(0x0392) +#define ACB_AC1MUXCTRL _SFR_MEM8(0x0393) +#define ACB_CTRLA _SFR_MEM8(0x0394) +#define ACB_CTRLB _SFR_MEM8(0x0395) +#define ACB_WINCTRL _SFR_MEM8(0x0396) +#define ACB_STATUS _SFR_MEM8(0x0397) + +/* RTC - Real-Time Counter */ +#define RTC_CTRL _SFR_MEM8(0x0400) +#define RTC_STATUS _SFR_MEM8(0x0401) +#define RTC_INTCTRL _SFR_MEM8(0x0402) +#define RTC_INTFLAGS _SFR_MEM8(0x0403) +#define RTC_TEMP _SFR_MEM8(0x0404) +#define RTC_CNT _SFR_MEM16(0x0408) +#define RTC_PER _SFR_MEM16(0x040A) +#define RTC_COMP _SFR_MEM16(0x040C) + +/* EBI - External Bus Interface */ +#define EBI_CTRL _SFR_MEM8(0x0440) +#define EBI_SDRAMCTRLA _SFR_MEM8(0x0441) +#define EBI_REFRESH _SFR_MEM16(0x0444) +#define EBI_INITDLY _SFR_MEM16(0x0446) +#define EBI_SDRAMCTRLB _SFR_MEM8(0x0448) +#define EBI_SDRAMCTRLC _SFR_MEM8(0x0449) +#define EBI_CS0_CTRLA _SFR_MEM8(0x0450) +#define EBI_CS0_CTRLB _SFR_MEM8(0x0451) +#define EBI_CS0_BASEADDR _SFR_MEM16(0x0452) +#define EBI_CS1_CTRLA _SFR_MEM8(0x0454) +#define EBI_CS1_CTRLB _SFR_MEM8(0x0455) +#define EBI_CS1_BASEADDR _SFR_MEM16(0x0456) +#define EBI_CS2_CTRLA _SFR_MEM8(0x0458) +#define EBI_CS2_CTRLB _SFR_MEM8(0x0459) +#define EBI_CS2_BASEADDR _SFR_MEM16(0x045A) +#define EBI_CS3_CTRLA _SFR_MEM8(0x045C) +#define EBI_CS3_CTRLB _SFR_MEM8(0x045D) +#define EBI_CS3_BASEADDR _SFR_MEM16(0x045E) + +/* TWIC - Two-Wire Interface C */ +#define TWIC_CTRL _SFR_MEM8(0x0480) +#define TWIC_MASTER_CTRLA _SFR_MEM8(0x0481) +#define TWIC_MASTER_CTRLB _SFR_MEM8(0x0482) +#define TWIC_MASTER_CTRLC _SFR_MEM8(0x0483) +#define TWIC_MASTER_STATUS _SFR_MEM8(0x0484) +#define TWIC_MASTER_BAUD _SFR_MEM8(0x0485) +#define TWIC_MASTER_ADDR _SFR_MEM8(0x0486) +#define TWIC_MASTER_DATA _SFR_MEM8(0x0487) +#define TWIC_SLAVE_CTRLA _SFR_MEM8(0x0488) +#define TWIC_SLAVE_CTRLB _SFR_MEM8(0x0489) +#define TWIC_SLAVE_STATUS _SFR_MEM8(0x048A) +#define TWIC_SLAVE_ADDR _SFR_MEM8(0x048B) +#define TWIC_SLAVE_DATA _SFR_MEM8(0x048C) + +/* TWID - Two-Wire Interface D */ +#define TWID_CTRL _SFR_MEM8(0x0490) +#define TWID_MASTER_CTRLA _SFR_MEM8(0x0491) +#define TWID_MASTER_CTRLB _SFR_MEM8(0x0492) +#define TWID_MASTER_CTRLC _SFR_MEM8(0x0493) +#define TWID_MASTER_STATUS _SFR_MEM8(0x0494) +#define TWID_MASTER_BAUD _SFR_MEM8(0x0495) +#define TWID_MASTER_ADDR _SFR_MEM8(0x0496) +#define TWID_MASTER_DATA _SFR_MEM8(0x0497) +#define TWID_SLAVE_CTRLA _SFR_MEM8(0x0498) +#define TWID_SLAVE_CTRLB _SFR_MEM8(0x0499) +#define TWID_SLAVE_STATUS _SFR_MEM8(0x049A) +#define TWID_SLAVE_ADDR _SFR_MEM8(0x049B) +#define TWID_SLAVE_DATA _SFR_MEM8(0x049C) + +/* TWIE - Two-Wire Interface E */ +#define TWIE_CTRL _SFR_MEM8(0x04A0) +#define TWIE_MASTER_CTRLA _SFR_MEM8(0x04A1) +#define TWIE_MASTER_CTRLB _SFR_MEM8(0x04A2) +#define TWIE_MASTER_CTRLC _SFR_MEM8(0x04A3) +#define TWIE_MASTER_STATUS _SFR_MEM8(0x04A4) +#define TWIE_MASTER_BAUD _SFR_MEM8(0x04A5) +#define TWIE_MASTER_ADDR _SFR_MEM8(0x04A6) +#define TWIE_MASTER_DATA _SFR_MEM8(0x04A7) +#define TWIE_SLAVE_CTRLA _SFR_MEM8(0x04A8) +#define TWIE_SLAVE_CTRLB _SFR_MEM8(0x04A9) +#define TWIE_SLAVE_STATUS _SFR_MEM8(0x04AA) +#define TWIE_SLAVE_ADDR _SFR_MEM8(0x04AB) +#define TWIE_SLAVE_DATA _SFR_MEM8(0x04AC) + +/* TWIF - Two-Wire Interface F */ +#define TWIF_CTRL _SFR_MEM8(0x04B0) +#define TWIF_MASTER_CTRLA _SFR_MEM8(0x04B1) +#define TWIF_MASTER_CTRLB _SFR_MEM8(0x04B2) +#define TWIF_MASTER_CTRLC _SFR_MEM8(0x04B3) +#define TWIF_MASTER_STATUS _SFR_MEM8(0x04B4) +#define TWIF_MASTER_BAUD _SFR_MEM8(0x04B5) +#define TWIF_MASTER_ADDR _SFR_MEM8(0x04B6) +#define TWIF_MASTER_DATA _SFR_MEM8(0x04B7) +#define TWIF_SLAVE_CTRLA _SFR_MEM8(0x04B8) +#define TWIF_SLAVE_CTRLB _SFR_MEM8(0x04B9) +#define TWIF_SLAVE_STATUS _SFR_MEM8(0x04BA) +#define TWIF_SLAVE_ADDR _SFR_MEM8(0x04BB) +#define TWIF_SLAVE_DATA _SFR_MEM8(0x04BC) + +/* PORTA - Port A */ +#define PORTA_DIR _SFR_MEM8(0x0600) +#define PORTA_DIRSET _SFR_MEM8(0x0601) +#define PORTA_DIRCLR _SFR_MEM8(0x0602) +#define PORTA_DIRTGL _SFR_MEM8(0x0603) +#define PORTA_OUT _SFR_MEM8(0x0604) +#define PORTA_OUTSET _SFR_MEM8(0x0605) +#define PORTA_OUTCLR _SFR_MEM8(0x0606) +#define PORTA_OUTTGL _SFR_MEM8(0x0607) +#define PORTA_IN _SFR_MEM8(0x0608) +#define PORTA_INTCTRL _SFR_MEM8(0x0609) +#define PORTA_INT0MASK _SFR_MEM8(0x060A) +#define PORTA_INT1MASK _SFR_MEM8(0x060B) +#define PORTA_INTFLAGS _SFR_MEM8(0x060C) +#define PORTA_PIN0CTRL _SFR_MEM8(0x0610) +#define PORTA_PIN1CTRL _SFR_MEM8(0x0611) +#define PORTA_PIN2CTRL _SFR_MEM8(0x0612) +#define PORTA_PIN3CTRL _SFR_MEM8(0x0613) +#define PORTA_PIN4CTRL _SFR_MEM8(0x0614) +#define PORTA_PIN5CTRL _SFR_MEM8(0x0615) +#define PORTA_PIN6CTRL _SFR_MEM8(0x0616) +#define PORTA_PIN7CTRL _SFR_MEM8(0x0617) + +/* PORTB - Port B */ +#define PORTB_DIR _SFR_MEM8(0x0620) +#define PORTB_DIRSET _SFR_MEM8(0x0621) +#define PORTB_DIRCLR _SFR_MEM8(0x0622) +#define PORTB_DIRTGL _SFR_MEM8(0x0623) +#define PORTB_OUT _SFR_MEM8(0x0624) +#define PORTB_OUTSET _SFR_MEM8(0x0625) +#define PORTB_OUTCLR _SFR_MEM8(0x0626) +#define PORTB_OUTTGL _SFR_MEM8(0x0627) +#define PORTB_IN _SFR_MEM8(0x0628) +#define PORTB_INTCTRL _SFR_MEM8(0x0629) +#define PORTB_INT0MASK _SFR_MEM8(0x062A) +#define PORTB_INT1MASK _SFR_MEM8(0x062B) +#define PORTB_INTFLAGS _SFR_MEM8(0x062C) +#define PORTB_PIN0CTRL _SFR_MEM8(0x0630) +#define PORTB_PIN1CTRL _SFR_MEM8(0x0631) +#define PORTB_PIN2CTRL _SFR_MEM8(0x0632) +#define PORTB_PIN3CTRL _SFR_MEM8(0x0633) +#define PORTB_PIN4CTRL _SFR_MEM8(0x0634) +#define PORTB_PIN5CTRL _SFR_MEM8(0x0635) +#define PORTB_PIN6CTRL _SFR_MEM8(0x0636) +#define PORTB_PIN7CTRL _SFR_MEM8(0x0637) + +/* PORTC - Port C */ +#define PORTC_DIR _SFR_MEM8(0x0640) +#define PORTC_DIRSET _SFR_MEM8(0x0641) +#define PORTC_DIRCLR _SFR_MEM8(0x0642) +#define PORTC_DIRTGL _SFR_MEM8(0x0643) +#define PORTC_OUT _SFR_MEM8(0x0644) +#define PORTC_OUTSET _SFR_MEM8(0x0645) +#define PORTC_OUTCLR _SFR_MEM8(0x0646) +#define PORTC_OUTTGL _SFR_MEM8(0x0647) +#define PORTC_IN _SFR_MEM8(0x0648) +#define PORTC_INTCTRL _SFR_MEM8(0x0649) +#define PORTC_INT0MASK _SFR_MEM8(0x064A) +#define PORTC_INT1MASK _SFR_MEM8(0x064B) +#define PORTC_INTFLAGS _SFR_MEM8(0x064C) +#define PORTC_PIN0CTRL _SFR_MEM8(0x0650) +#define PORTC_PIN1CTRL _SFR_MEM8(0x0651) +#define PORTC_PIN2CTRL _SFR_MEM8(0x0652) +#define PORTC_PIN3CTRL _SFR_MEM8(0x0653) +#define PORTC_PIN4CTRL _SFR_MEM8(0x0654) +#define PORTC_PIN5CTRL _SFR_MEM8(0x0655) +#define PORTC_PIN6CTRL _SFR_MEM8(0x0656) +#define PORTC_PIN7CTRL _SFR_MEM8(0x0657) + +/* PORTD - Port D */ +#define PORTD_DIR _SFR_MEM8(0x0660) +#define PORTD_DIRSET _SFR_MEM8(0x0661) +#define PORTD_DIRCLR _SFR_MEM8(0x0662) +#define PORTD_DIRTGL _SFR_MEM8(0x0663) +#define PORTD_OUT _SFR_MEM8(0x0664) +#define PORTD_OUTSET _SFR_MEM8(0x0665) +#define PORTD_OUTCLR _SFR_MEM8(0x0666) +#define PORTD_OUTTGL _SFR_MEM8(0x0667) +#define PORTD_IN _SFR_MEM8(0x0668) +#define PORTD_INTCTRL _SFR_MEM8(0x0669) +#define PORTD_INT0MASK _SFR_MEM8(0x066A) +#define PORTD_INT1MASK _SFR_MEM8(0x066B) +#define PORTD_INTFLAGS _SFR_MEM8(0x066C) +#define PORTD_PIN0CTRL _SFR_MEM8(0x0670) +#define PORTD_PIN1CTRL _SFR_MEM8(0x0671) +#define PORTD_PIN2CTRL _SFR_MEM8(0x0672) +#define PORTD_PIN3CTRL _SFR_MEM8(0x0673) +#define PORTD_PIN4CTRL _SFR_MEM8(0x0674) +#define PORTD_PIN5CTRL _SFR_MEM8(0x0675) +#define PORTD_PIN6CTRL _SFR_MEM8(0x0676) +#define PORTD_PIN7CTRL _SFR_MEM8(0x0677) + +/* PORTE - Port E */ +#define PORTE_DIR _SFR_MEM8(0x0680) +#define PORTE_DIRSET _SFR_MEM8(0x0681) +#define PORTE_DIRCLR _SFR_MEM8(0x0682) +#define PORTE_DIRTGL _SFR_MEM8(0x0683) +#define PORTE_OUT _SFR_MEM8(0x0684) +#define PORTE_OUTSET _SFR_MEM8(0x0685) +#define PORTE_OUTCLR _SFR_MEM8(0x0686) +#define PORTE_OUTTGL _SFR_MEM8(0x0687) +#define PORTE_IN _SFR_MEM8(0x0688) +#define PORTE_INTCTRL _SFR_MEM8(0x0689) +#define PORTE_INT0MASK _SFR_MEM8(0x068A) +#define PORTE_INT1MASK _SFR_MEM8(0x068B) +#define PORTE_INTFLAGS _SFR_MEM8(0x068C) +#define PORTE_PIN0CTRL _SFR_MEM8(0x0690) +#define PORTE_PIN1CTRL _SFR_MEM8(0x0691) +#define PORTE_PIN2CTRL _SFR_MEM8(0x0692) +#define PORTE_PIN3CTRL _SFR_MEM8(0x0693) +#define PORTE_PIN4CTRL _SFR_MEM8(0x0694) +#define PORTE_PIN5CTRL _SFR_MEM8(0x0695) +#define PORTE_PIN6CTRL _SFR_MEM8(0x0696) +#define PORTE_PIN7CTRL _SFR_MEM8(0x0697) + +/* PORTF - Port F */ +#define PORTF_DIR _SFR_MEM8(0x06A0) +#define PORTF_DIRSET _SFR_MEM8(0x06A1) +#define PORTF_DIRCLR _SFR_MEM8(0x06A2) +#define PORTF_DIRTGL _SFR_MEM8(0x06A3) +#define PORTF_OUT _SFR_MEM8(0x06A4) +#define PORTF_OUTSET _SFR_MEM8(0x06A5) +#define PORTF_OUTCLR _SFR_MEM8(0x06A6) +#define PORTF_OUTTGL _SFR_MEM8(0x06A7) +#define PORTF_IN _SFR_MEM8(0x06A8) +#define PORTF_INTCTRL _SFR_MEM8(0x06A9) +#define PORTF_INT0MASK _SFR_MEM8(0x06AA) +#define PORTF_INT1MASK _SFR_MEM8(0x06AB) +#define PORTF_INTFLAGS _SFR_MEM8(0x06AC) +#define PORTF_PIN0CTRL _SFR_MEM8(0x06B0) +#define PORTF_PIN1CTRL _SFR_MEM8(0x06B1) +#define PORTF_PIN2CTRL _SFR_MEM8(0x06B2) +#define PORTF_PIN3CTRL _SFR_MEM8(0x06B3) +#define PORTF_PIN4CTRL _SFR_MEM8(0x06B4) +#define PORTF_PIN5CTRL _SFR_MEM8(0x06B5) +#define PORTF_PIN6CTRL _SFR_MEM8(0x06B6) +#define PORTF_PIN7CTRL _SFR_MEM8(0x06B7) + +/* PORTH - Port H */ +#define PORTH_DIR _SFR_MEM8(0x06E0) +#define PORTH_DIRSET _SFR_MEM8(0x06E1) +#define PORTH_DIRCLR _SFR_MEM8(0x06E2) +#define PORTH_DIRTGL _SFR_MEM8(0x06E3) +#define PORTH_OUT _SFR_MEM8(0x06E4) +#define PORTH_OUTSET _SFR_MEM8(0x06E5) +#define PORTH_OUTCLR _SFR_MEM8(0x06E6) +#define PORTH_OUTTGL _SFR_MEM8(0x06E7) +#define PORTH_IN _SFR_MEM8(0x06E8) +#define PORTH_INTCTRL _SFR_MEM8(0x06E9) +#define PORTH_INT0MASK _SFR_MEM8(0x06EA) +#define PORTH_INT1MASK _SFR_MEM8(0x06EB) +#define PORTH_INTFLAGS _SFR_MEM8(0x06EC) +#define PORTH_PIN0CTRL _SFR_MEM8(0x06F0) +#define PORTH_PIN1CTRL _SFR_MEM8(0x06F1) +#define PORTH_PIN2CTRL _SFR_MEM8(0x06F2) +#define PORTH_PIN3CTRL _SFR_MEM8(0x06F3) +#define PORTH_PIN4CTRL _SFR_MEM8(0x06F4) +#define PORTH_PIN5CTRL _SFR_MEM8(0x06F5) +#define PORTH_PIN6CTRL _SFR_MEM8(0x06F6) +#define PORTH_PIN7CTRL _SFR_MEM8(0x06F7) + +/* PORTJ - Port J */ +#define PORTJ_DIR _SFR_MEM8(0x0700) +#define PORTJ_DIRSET _SFR_MEM8(0x0701) +#define PORTJ_DIRCLR _SFR_MEM8(0x0702) +#define PORTJ_DIRTGL _SFR_MEM8(0x0703) +#define PORTJ_OUT _SFR_MEM8(0x0704) +#define PORTJ_OUTSET _SFR_MEM8(0x0705) +#define PORTJ_OUTCLR _SFR_MEM8(0x0706) +#define PORTJ_OUTTGL _SFR_MEM8(0x0707) +#define PORTJ_IN _SFR_MEM8(0x0708) +#define PORTJ_INTCTRL _SFR_MEM8(0x0709) +#define PORTJ_INT0MASK _SFR_MEM8(0x070A) +#define PORTJ_INT1MASK _SFR_MEM8(0x070B) +#define PORTJ_INTFLAGS _SFR_MEM8(0x070C) +#define PORTJ_PIN0CTRL _SFR_MEM8(0x0710) +#define PORTJ_PIN1CTRL _SFR_MEM8(0x0711) +#define PORTJ_PIN2CTRL _SFR_MEM8(0x0712) +#define PORTJ_PIN3CTRL _SFR_MEM8(0x0713) +#define PORTJ_PIN4CTRL _SFR_MEM8(0x0714) +#define PORTJ_PIN5CTRL _SFR_MEM8(0x0715) +#define PORTJ_PIN6CTRL _SFR_MEM8(0x0716) +#define PORTJ_PIN7CTRL _SFR_MEM8(0x0717) + +/* PORTK - Port K */ +#define PORTK_DIR _SFR_MEM8(0x0720) +#define PORTK_DIRSET _SFR_MEM8(0x0721) +#define PORTK_DIRCLR _SFR_MEM8(0x0722) +#define PORTK_DIRTGL _SFR_MEM8(0x0723) +#define PORTK_OUT _SFR_MEM8(0x0724) +#define PORTK_OUTSET _SFR_MEM8(0x0725) +#define PORTK_OUTCLR _SFR_MEM8(0x0726) +#define PORTK_OUTTGL _SFR_MEM8(0x0727) +#define PORTK_IN _SFR_MEM8(0x0728) +#define PORTK_INTCTRL _SFR_MEM8(0x0729) +#define PORTK_INT0MASK _SFR_MEM8(0x072A) +#define PORTK_INT1MASK _SFR_MEM8(0x072B) +#define PORTK_INTFLAGS _SFR_MEM8(0x072C) +#define PORTK_PIN0CTRL _SFR_MEM8(0x0730) +#define PORTK_PIN1CTRL _SFR_MEM8(0x0731) +#define PORTK_PIN2CTRL _SFR_MEM8(0x0732) +#define PORTK_PIN3CTRL _SFR_MEM8(0x0733) +#define PORTK_PIN4CTRL _SFR_MEM8(0x0734) +#define PORTK_PIN5CTRL _SFR_MEM8(0x0735) +#define PORTK_PIN6CTRL _SFR_MEM8(0x0736) +#define PORTK_PIN7CTRL _SFR_MEM8(0x0737) + +/* PORTQ - Port Q */ +#define PORTQ_DIR _SFR_MEM8(0x07C0) +#define PORTQ_DIRSET _SFR_MEM8(0x07C1) +#define PORTQ_DIRCLR _SFR_MEM8(0x07C2) +#define PORTQ_DIRTGL _SFR_MEM8(0x07C3) +#define PORTQ_OUT _SFR_MEM8(0x07C4) +#define PORTQ_OUTSET _SFR_MEM8(0x07C5) +#define PORTQ_OUTCLR _SFR_MEM8(0x07C6) +#define PORTQ_OUTTGL _SFR_MEM8(0x07C7) +#define PORTQ_IN _SFR_MEM8(0x07C8) +#define PORTQ_INTCTRL _SFR_MEM8(0x07C9) +#define PORTQ_INT0MASK _SFR_MEM8(0x07CA) +#define PORTQ_INT1MASK _SFR_MEM8(0x07CB) +#define PORTQ_INTFLAGS _SFR_MEM8(0x07CC) +#define PORTQ_PIN0CTRL _SFR_MEM8(0x07D0) +#define PORTQ_PIN1CTRL _SFR_MEM8(0x07D1) +#define PORTQ_PIN2CTRL _SFR_MEM8(0x07D2) +#define PORTQ_PIN3CTRL _SFR_MEM8(0x07D3) +#define PORTQ_PIN4CTRL _SFR_MEM8(0x07D4) +#define PORTQ_PIN5CTRL _SFR_MEM8(0x07D5) +#define PORTQ_PIN6CTRL _SFR_MEM8(0x07D6) +#define PORTQ_PIN7CTRL _SFR_MEM8(0x07D7) + +/* PORTR - Port R */ +#define PORTR_DIR _SFR_MEM8(0x07E0) +#define PORTR_DIRSET _SFR_MEM8(0x07E1) +#define PORTR_DIRCLR _SFR_MEM8(0x07E2) +#define PORTR_DIRTGL _SFR_MEM8(0x07E3) +#define PORTR_OUT _SFR_MEM8(0x07E4) +#define PORTR_OUTSET _SFR_MEM8(0x07E5) +#define PORTR_OUTCLR _SFR_MEM8(0x07E6) +#define PORTR_OUTTGL _SFR_MEM8(0x07E7) +#define PORTR_IN _SFR_MEM8(0x07E8) +#define PORTR_INTCTRL _SFR_MEM8(0x07E9) +#define PORTR_INT0MASK _SFR_MEM8(0x07EA) +#define PORTR_INT1MASK _SFR_MEM8(0x07EB) +#define PORTR_INTFLAGS _SFR_MEM8(0x07EC) +#define PORTR_PIN0CTRL _SFR_MEM8(0x07F0) +#define PORTR_PIN1CTRL _SFR_MEM8(0x07F1) +#define PORTR_PIN2CTRL _SFR_MEM8(0x07F2) +#define PORTR_PIN3CTRL _SFR_MEM8(0x07F3) +#define PORTR_PIN4CTRL _SFR_MEM8(0x07F4) +#define PORTR_PIN5CTRL _SFR_MEM8(0x07F5) +#define PORTR_PIN6CTRL _SFR_MEM8(0x07F6) +#define PORTR_PIN7CTRL _SFR_MEM8(0x07F7) + +/* TCC0 - Timer/Counter C0 */ +#define TCC0_CTRLA _SFR_MEM8(0x0800) +#define TCC0_CTRLB _SFR_MEM8(0x0801) +#define TCC0_CTRLC _SFR_MEM8(0x0802) +#define TCC0_CTRLD _SFR_MEM8(0x0803) +#define TCC0_CTRLE _SFR_MEM8(0x0804) +#define TCC0_INTCTRLA _SFR_MEM8(0x0806) +#define TCC0_INTCTRLB _SFR_MEM8(0x0807) +#define TCC0_CTRLFCLR _SFR_MEM8(0x0808) +#define TCC0_CTRLFSET _SFR_MEM8(0x0809) +#define TCC0_CTRLGCLR _SFR_MEM8(0x080A) +#define TCC0_CTRLGSET _SFR_MEM8(0x080B) +#define TCC0_INTFLAGS _SFR_MEM8(0x080C) +#define TCC0_TEMP _SFR_MEM8(0x080F) +#define TCC0_CNT _SFR_MEM16(0x0820) +#define TCC0_PER _SFR_MEM16(0x0826) +#define TCC0_CCA _SFR_MEM16(0x0828) +#define TCC0_CCB _SFR_MEM16(0x082A) +#define TCC0_CCC _SFR_MEM16(0x082C) +#define TCC0_CCD _SFR_MEM16(0x082E) +#define TCC0_PERBUF _SFR_MEM16(0x0836) +#define TCC0_CCABUF _SFR_MEM16(0x0838) +#define TCC0_CCBBUF _SFR_MEM16(0x083A) +#define TCC0_CCCBUF _SFR_MEM16(0x083C) +#define TCC0_CCDBUF _SFR_MEM16(0x083E) + +/* TCC1 - Timer/Counter C1 */ +#define TCC1_CTRLA _SFR_MEM8(0x0840) +#define TCC1_CTRLB _SFR_MEM8(0x0841) +#define TCC1_CTRLC _SFR_MEM8(0x0842) +#define TCC1_CTRLD _SFR_MEM8(0x0843) +#define TCC1_CTRLE _SFR_MEM8(0x0844) +#define TCC1_INTCTRLA _SFR_MEM8(0x0846) +#define TCC1_INTCTRLB _SFR_MEM8(0x0847) +#define TCC1_CTRLFCLR _SFR_MEM8(0x0848) +#define TCC1_CTRLFSET _SFR_MEM8(0x0849) +#define TCC1_CTRLGCLR _SFR_MEM8(0x084A) +#define TCC1_CTRLGSET _SFR_MEM8(0x084B) +#define TCC1_INTFLAGS _SFR_MEM8(0x084C) +#define TCC1_TEMP _SFR_MEM8(0x084F) +#define TCC1_CNT _SFR_MEM16(0x0860) +#define TCC1_PER _SFR_MEM16(0x0866) +#define TCC1_CCA _SFR_MEM16(0x0868) +#define TCC1_CCB _SFR_MEM16(0x086A) +#define TCC1_PERBUF _SFR_MEM16(0x0876) +#define TCC1_CCABUF _SFR_MEM16(0x0878) +#define TCC1_CCBBUF _SFR_MEM16(0x087A) + +/* AWEXC - Advanced Waveform Extension C */ +#define AWEXC_CTRL _SFR_MEM8(0x0880) +#define AWEXC_FDEVMASK _SFR_MEM8(0x0882) +#define AWEXC_FDCTRL _SFR_MEM8(0x0883) +#define AWEXC_STATUS _SFR_MEM8(0x0884) +#define AWEXC_DTBOTH _SFR_MEM8(0x0886) +#define AWEXC_DTBOTHBUF _SFR_MEM8(0x0887) +#define AWEXC_DTLS _SFR_MEM8(0x0888) +#define AWEXC_DTHS _SFR_MEM8(0x0889) +#define AWEXC_DTLSBUF _SFR_MEM8(0x088A) +#define AWEXC_DTHSBUF _SFR_MEM8(0x088B) +#define AWEXC_OUTOVEN _SFR_MEM8(0x088C) + +/* HIRESC - High-Resolution Extension C */ +#define HIRESC_CTRL _SFR_MEM8(0x0890) + +/* USARTC0 - Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC0_DATA _SFR_MEM8(0x08A0) +#define USARTC0_STATUS _SFR_MEM8(0x08A1) +#define USARTC0_CTRLA _SFR_MEM8(0x08A3) +#define USARTC0_CTRLB _SFR_MEM8(0x08A4) +#define USARTC0_CTRLC _SFR_MEM8(0x08A5) +#define USARTC0_BAUDCTRLA _SFR_MEM8(0x08A6) +#define USARTC0_BAUDCTRLB _SFR_MEM8(0x08A7) + +/* USARTC1 - Universal Asynchronous Receiver-Transmitter C1 */ +#define USARTC1_DATA _SFR_MEM8(0x08B0) +#define USARTC1_STATUS _SFR_MEM8(0x08B1) +#define USARTC1_CTRLA _SFR_MEM8(0x08B3) +#define USARTC1_CTRLB _SFR_MEM8(0x08B4) +#define USARTC1_CTRLC _SFR_MEM8(0x08B5) +#define USARTC1_BAUDCTRLA _SFR_MEM8(0x08B6) +#define USARTC1_BAUDCTRLB _SFR_MEM8(0x08B7) + +/* SPIC - Serial Peripheral Interface C */ +#define SPIC_CTRL _SFR_MEM8(0x08C0) +#define SPIC_INTCTRL _SFR_MEM8(0x08C1) +#define SPIC_STATUS _SFR_MEM8(0x08C2) +#define SPIC_DATA _SFR_MEM8(0x08C3) + +/* IRCOM - IR Communication Module */ +#define IRCOM_CTRL _SFR_MEM8(0x08F8) +#define IRCOM_TXPLCTRL _SFR_MEM8(0x08F9) +#define IRCOM_RXPLCTRL _SFR_MEM8(0x08FA) + +/* TCD0 - Timer/Counter D0 */ +#define TCD0_CTRLA _SFR_MEM8(0x0900) +#define TCD0_CTRLB _SFR_MEM8(0x0901) +#define TCD0_CTRLC _SFR_MEM8(0x0902) +#define TCD0_CTRLD _SFR_MEM8(0x0903) +#define TCD0_CTRLE _SFR_MEM8(0x0904) +#define TCD0_INTCTRLA _SFR_MEM8(0x0906) +#define TCD0_INTCTRLB _SFR_MEM8(0x0907) +#define TCD0_CTRLFCLR _SFR_MEM8(0x0908) +#define TCD0_CTRLFSET _SFR_MEM8(0x0909) +#define TCD0_CTRLGCLR _SFR_MEM8(0x090A) +#define TCD0_CTRLGSET _SFR_MEM8(0x090B) +#define TCD0_INTFLAGS _SFR_MEM8(0x090C) +#define TCD0_TEMP _SFR_MEM8(0x090F) +#define TCD0_CNT _SFR_MEM16(0x0920) +#define TCD0_PER _SFR_MEM16(0x0926) +#define TCD0_CCA _SFR_MEM16(0x0928) +#define TCD0_CCB _SFR_MEM16(0x092A) +#define TCD0_CCC _SFR_MEM16(0x092C) +#define TCD0_CCD _SFR_MEM16(0x092E) +#define TCD0_PERBUF _SFR_MEM16(0x0936) +#define TCD0_CCABUF _SFR_MEM16(0x0938) +#define TCD0_CCBBUF _SFR_MEM16(0x093A) +#define TCD0_CCCBUF _SFR_MEM16(0x093C) +#define TCD0_CCDBUF _SFR_MEM16(0x093E) + +/* TCD1 - Timer/Counter D1 */ +#define TCD1_CTRLA _SFR_MEM8(0x0940) +#define TCD1_CTRLB _SFR_MEM8(0x0941) +#define TCD1_CTRLC _SFR_MEM8(0x0942) +#define TCD1_CTRLD _SFR_MEM8(0x0943) +#define TCD1_CTRLE _SFR_MEM8(0x0944) +#define TCD1_INTCTRLA _SFR_MEM8(0x0946) +#define TCD1_INTCTRLB _SFR_MEM8(0x0947) +#define TCD1_CTRLFCLR _SFR_MEM8(0x0948) +#define TCD1_CTRLFSET _SFR_MEM8(0x0949) +#define TCD1_CTRLGCLR _SFR_MEM8(0x094A) +#define TCD1_CTRLGSET _SFR_MEM8(0x094B) +#define TCD1_INTFLAGS _SFR_MEM8(0x094C) +#define TCD1_TEMP _SFR_MEM8(0x094F) +#define TCD1_CNT _SFR_MEM16(0x0960) +#define TCD1_PER _SFR_MEM16(0x0966) +#define TCD1_CCA _SFR_MEM16(0x0968) +#define TCD1_CCB _SFR_MEM16(0x096A) +#define TCD1_PERBUF _SFR_MEM16(0x0976) +#define TCD1_CCABUF _SFR_MEM16(0x0978) +#define TCD1_CCBBUF _SFR_MEM16(0x097A) + +/* HIRESD - High-Resolution Extension D */ +#define HIRESD_CTRL _SFR_MEM8(0x0990) + +/* USARTD0 - Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD0_DATA _SFR_MEM8(0x09A0) +#define USARTD0_STATUS _SFR_MEM8(0x09A1) +#define USARTD0_CTRLA _SFR_MEM8(0x09A3) +#define USARTD0_CTRLB _SFR_MEM8(0x09A4) +#define USARTD0_CTRLC _SFR_MEM8(0x09A5) +#define USARTD0_BAUDCTRLA _SFR_MEM8(0x09A6) +#define USARTD0_BAUDCTRLB _SFR_MEM8(0x09A7) + +/* USARTD1 - Universal Asynchronous Receiver-Transmitter D1 */ +#define USARTD1_DATA _SFR_MEM8(0x09B0) +#define USARTD1_STATUS _SFR_MEM8(0x09B1) +#define USARTD1_CTRLA _SFR_MEM8(0x09B3) +#define USARTD1_CTRLB _SFR_MEM8(0x09B4) +#define USARTD1_CTRLC _SFR_MEM8(0x09B5) +#define USARTD1_BAUDCTRLA _SFR_MEM8(0x09B6) +#define USARTD1_BAUDCTRLB _SFR_MEM8(0x09B7) + +/* SPID - Serial Peripheral Interface D */ +#define SPID_CTRL _SFR_MEM8(0x09C0) +#define SPID_INTCTRL _SFR_MEM8(0x09C1) +#define SPID_STATUS _SFR_MEM8(0x09C2) +#define SPID_DATA _SFR_MEM8(0x09C3) + +/* TCE0 - Timer/Counter E0 */ +#define TCE0_CTRLA _SFR_MEM8(0x0A00) +#define TCE0_CTRLB _SFR_MEM8(0x0A01) +#define TCE0_CTRLC _SFR_MEM8(0x0A02) +#define TCE0_CTRLD _SFR_MEM8(0x0A03) +#define TCE0_CTRLE _SFR_MEM8(0x0A04) +#define TCE0_INTCTRLA _SFR_MEM8(0x0A06) +#define TCE0_INTCTRLB _SFR_MEM8(0x0A07) +#define TCE0_CTRLFCLR _SFR_MEM8(0x0A08) +#define TCE0_CTRLFSET _SFR_MEM8(0x0A09) +#define TCE0_CTRLGCLR _SFR_MEM8(0x0A0A) +#define TCE0_CTRLGSET _SFR_MEM8(0x0A0B) +#define TCE0_INTFLAGS _SFR_MEM8(0x0A0C) +#define TCE0_TEMP _SFR_MEM8(0x0A0F) +#define TCE0_CNT _SFR_MEM16(0x0A20) +#define TCE0_PER _SFR_MEM16(0x0A26) +#define TCE0_CCA _SFR_MEM16(0x0A28) +#define TCE0_CCB _SFR_MEM16(0x0A2A) +#define TCE0_CCC _SFR_MEM16(0x0A2C) +#define TCE0_CCD _SFR_MEM16(0x0A2E) +#define TCE0_PERBUF _SFR_MEM16(0x0A36) +#define TCE0_CCABUF _SFR_MEM16(0x0A38) +#define TCE0_CCBBUF _SFR_MEM16(0x0A3A) +#define TCE0_CCCBUF _SFR_MEM16(0x0A3C) +#define TCE0_CCDBUF _SFR_MEM16(0x0A3E) + +/* TCE1 - Timer/Counter E1 */ +#define TCE1_CTRLA _SFR_MEM8(0x0A40) +#define TCE1_CTRLB _SFR_MEM8(0x0A41) +#define TCE1_CTRLC _SFR_MEM8(0x0A42) +#define TCE1_CTRLD _SFR_MEM8(0x0A43) +#define TCE1_CTRLE _SFR_MEM8(0x0A44) +#define TCE1_INTCTRLA _SFR_MEM8(0x0A46) +#define TCE1_INTCTRLB _SFR_MEM8(0x0A47) +#define TCE1_CTRLFCLR _SFR_MEM8(0x0A48) +#define TCE1_CTRLFSET _SFR_MEM8(0x0A49) +#define TCE1_CTRLGCLR _SFR_MEM8(0x0A4A) +#define TCE1_CTRLGSET _SFR_MEM8(0x0A4B) +#define TCE1_INTFLAGS _SFR_MEM8(0x0A4C) +#define TCE1_TEMP _SFR_MEM8(0x0A4F) +#define TCE1_CNT _SFR_MEM16(0x0A60) +#define TCE1_PER _SFR_MEM16(0x0A66) +#define TCE1_CCA _SFR_MEM16(0x0A68) +#define TCE1_CCB _SFR_MEM16(0x0A6A) +#define TCE1_PERBUF _SFR_MEM16(0x0A76) +#define TCE1_CCABUF _SFR_MEM16(0x0A78) +#define TCE1_CCBBUF _SFR_MEM16(0x0A7A) + +/* AWEXE - Advanced Waveform Extension E */ +#define AWEXE_CTRL _SFR_MEM8(0x0A80) +#define AWEXE_FDEVMASK _SFR_MEM8(0x0A82) +#define AWEXE_FDCTRL _SFR_MEM8(0x0A83) +#define AWEXE_STATUS _SFR_MEM8(0x0A84) +#define AWEXE_DTBOTH _SFR_MEM8(0x0A86) +#define AWEXE_DTBOTHBUF _SFR_MEM8(0x0A87) +#define AWEXE_DTLS _SFR_MEM8(0x0A88) +#define AWEXE_DTHS _SFR_MEM8(0x0A89) +#define AWEXE_DTLSBUF _SFR_MEM8(0x0A8A) +#define AWEXE_DTHSBUF _SFR_MEM8(0x0A8B) +#define AWEXE_OUTOVEN _SFR_MEM8(0x0A8C) + +/* HIRESE - High-Resolution Extension E */ +#define HIRESE_CTRL _SFR_MEM8(0x0A90) + +/* USARTE0 - Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE0_DATA _SFR_MEM8(0x0AA0) +#define USARTE0_STATUS _SFR_MEM8(0x0AA1) +#define USARTE0_CTRLA _SFR_MEM8(0x0AA3) +#define USARTE0_CTRLB _SFR_MEM8(0x0AA4) +#define USARTE0_CTRLC _SFR_MEM8(0x0AA5) +#define USARTE0_BAUDCTRLA _SFR_MEM8(0x0AA6) +#define USARTE0_BAUDCTRLB _SFR_MEM8(0x0AA7) + +/* USARTE1 - Universal Asynchronous Receiver-Transmitter E1 */ +#define USARTE1_DATA _SFR_MEM8(0x0AB0) +#define USARTE1_STATUS _SFR_MEM8(0x0AB1) +#define USARTE1_CTRLA _SFR_MEM8(0x0AB3) +#define USARTE1_CTRLB _SFR_MEM8(0x0AB4) +#define USARTE1_CTRLC _SFR_MEM8(0x0AB5) +#define USARTE1_BAUDCTRLA _SFR_MEM8(0x0AB6) +#define USARTE1_BAUDCTRLB _SFR_MEM8(0x0AB7) + +/* SPIE - Serial Peripheral Interface E */ +#define SPIE_CTRL _SFR_MEM8(0x0AC0) +#define SPIE_INTCTRL _SFR_MEM8(0x0AC1) +#define SPIE_STATUS _SFR_MEM8(0x0AC2) +#define SPIE_DATA _SFR_MEM8(0x0AC3) + +/* TCF0 - Timer/Counter F0 */ +#define TCF0_CTRLA _SFR_MEM8(0x0B00) +#define TCF0_CTRLB _SFR_MEM8(0x0B01) +#define TCF0_CTRLC _SFR_MEM8(0x0B02) +#define TCF0_CTRLD _SFR_MEM8(0x0B03) +#define TCF0_CTRLE _SFR_MEM8(0x0B04) +#define TCF0_INTCTRLA _SFR_MEM8(0x0B06) +#define TCF0_INTCTRLB _SFR_MEM8(0x0B07) +#define TCF0_CTRLFCLR _SFR_MEM8(0x0B08) +#define TCF0_CTRLFSET _SFR_MEM8(0x0B09) +#define TCF0_CTRLGCLR _SFR_MEM8(0x0B0A) +#define TCF0_CTRLGSET _SFR_MEM8(0x0B0B) +#define TCF0_INTFLAGS _SFR_MEM8(0x0B0C) +#define TCF0_TEMP _SFR_MEM8(0x0B0F) +#define TCF0_CNT _SFR_MEM16(0x0B20) +#define TCF0_PER _SFR_MEM16(0x0B26) +#define TCF0_CCA _SFR_MEM16(0x0B28) +#define TCF0_CCB _SFR_MEM16(0x0B2A) +#define TCF0_CCC _SFR_MEM16(0x0B2C) +#define TCF0_CCD _SFR_MEM16(0x0B2E) +#define TCF0_PERBUF _SFR_MEM16(0x0B36) +#define TCF0_CCABUF _SFR_MEM16(0x0B38) +#define TCF0_CCBBUF _SFR_MEM16(0x0B3A) +#define TCF0_CCCBUF _SFR_MEM16(0x0B3C) +#define TCF0_CCDBUF _SFR_MEM16(0x0B3E) + +/* TCF1 - Timer/Counter F1 */ +#define TCF1_CTRLA _SFR_MEM8(0x0B40) +#define TCF1_CTRLB _SFR_MEM8(0x0B41) +#define TCF1_CTRLC _SFR_MEM8(0x0B42) +#define TCF1_CTRLD _SFR_MEM8(0x0B43) +#define TCF1_CTRLE _SFR_MEM8(0x0B44) +#define TCF1_INTCTRLA _SFR_MEM8(0x0B46) +#define TCF1_INTCTRLB _SFR_MEM8(0x0B47) +#define TCF1_CTRLFCLR _SFR_MEM8(0x0B48) +#define TCF1_CTRLFSET _SFR_MEM8(0x0B49) +#define TCF1_CTRLGCLR _SFR_MEM8(0x0B4A) +#define TCF1_CTRLGSET _SFR_MEM8(0x0B4B) +#define TCF1_INTFLAGS _SFR_MEM8(0x0B4C) +#define TCF1_TEMP _SFR_MEM8(0x0B4F) +#define TCF1_CNT _SFR_MEM16(0x0B60) +#define TCF1_PER _SFR_MEM16(0x0B66) +#define TCF1_CCA _SFR_MEM16(0x0B68) +#define TCF1_CCB _SFR_MEM16(0x0B6A) +#define TCF1_PERBUF _SFR_MEM16(0x0B76) +#define TCF1_CCABUF _SFR_MEM16(0x0B78) +#define TCF1_CCBBUF _SFR_MEM16(0x0B7A) + +/* HIRESF - High-Resolution Extension F */ +#define HIRESF_CTRL _SFR_MEM8(0x0B90) + +/* USARTF0 - Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF0_DATA _SFR_MEM8(0x0BA0) +#define USARTF0_STATUS _SFR_MEM8(0x0BA1) +#define USARTF0_CTRLA _SFR_MEM8(0x0BA3) +#define USARTF0_CTRLB _SFR_MEM8(0x0BA4) +#define USARTF0_CTRLC _SFR_MEM8(0x0BA5) +#define USARTF0_BAUDCTRLA _SFR_MEM8(0x0BA6) +#define USARTF0_BAUDCTRLB _SFR_MEM8(0x0BA7) + +/* USARTF1 - Universal Asynchronous Receiver-Transmitter F1 */ +#define USARTF1_DATA _SFR_MEM8(0x0BB0) +#define USARTF1_STATUS _SFR_MEM8(0x0BB1) +#define USARTF1_CTRLA _SFR_MEM8(0x0BB3) +#define USARTF1_CTRLB _SFR_MEM8(0x0BB4) +#define USARTF1_CTRLC _SFR_MEM8(0x0BB5) +#define USARTF1_BAUDCTRLA _SFR_MEM8(0x0BB6) +#define USARTF1_BAUDCTRLB _SFR_MEM8(0x0BB7) + +/* SPIF - Serial Peripheral Interface F */ +#define SPIF_CTRL _SFR_MEM8(0x0BC0) +#define SPIF_INTCTRL _SFR_MEM8(0x0BC1) +#define SPIF_STATUS _SFR_MEM8(0x0BC2) +#define SPIF_DATA _SFR_MEM8(0x0BC3) + + + +/*================== Bitfield Definitions ================== */ + +/* XOCD - On-Chip Debug System */ +/* OCD.OCDR1 bit masks and bit positions */ +#define OCD_OCDRD_bm 0x01 /* OCDR Dirty bit mask. */ +#define OCD_OCDRD_bp 0 /* OCDR Dirty bit position. */ + + +/* CPU - CPU */ +/* CPU.CCP bit masks and bit positions */ +#define CPU_CCP_gm 0xFF /* CCP signature group mask. */ +#define CPU_CCP_gp 0 /* CCP signature group position. */ +#define CPU_CCP0_bm (1<<0) /* CCP signature bit 0 mask. */ +#define CPU_CCP0_bp 0 /* CCP signature bit 0 position. */ +#define CPU_CCP1_bm (1<<1) /* CCP signature bit 1 mask. */ +#define CPU_CCP1_bp 1 /* CCP signature bit 1 position. */ +#define CPU_CCP2_bm (1<<2) /* CCP signature bit 2 mask. */ +#define CPU_CCP2_bp 2 /* CCP signature bit 2 position. */ +#define CPU_CCP3_bm (1<<3) /* CCP signature bit 3 mask. */ +#define CPU_CCP3_bp 3 /* CCP signature bit 3 position. */ +#define CPU_CCP4_bm (1<<4) /* CCP signature bit 4 mask. */ +#define CPU_CCP4_bp 4 /* CCP signature bit 4 position. */ +#define CPU_CCP5_bm (1<<5) /* CCP signature bit 5 mask. */ +#define CPU_CCP5_bp 5 /* CCP signature bit 5 position. */ +#define CPU_CCP6_bm (1<<6) /* CCP signature bit 6 mask. */ +#define CPU_CCP6_bp 6 /* CCP signature bit 6 position. */ +#define CPU_CCP7_bm (1<<7) /* CCP signature bit 7 mask. */ +#define CPU_CCP7_bp 7 /* CCP signature bit 7 position. */ + + +/* CPU.SREG bit masks and bit positions */ +#define CPU_I_bm 0x80 /* Global Interrupt Enable Flag bit mask. */ +#define CPU_I_bp 7 /* Global Interrupt Enable Flag bit position. */ + +#define CPU_T_bm 0x40 /* Transfer Bit bit mask. */ +#define CPU_T_bp 6 /* Transfer Bit bit position. */ + +#define CPU_H_bm 0x20 /* Half Carry Flag bit mask. */ +#define CPU_H_bp 5 /* Half Carry Flag bit position. */ + +#define CPU_S_bm 0x10 /* N Exclusive Or V Flag bit mask. */ +#define CPU_S_bp 4 /* N Exclusive Or V Flag bit position. */ + +#define CPU_V_bm 0x08 /* Two's Complement Overflow Flag bit mask. */ +#define CPU_V_bp 3 /* Two's Complement Overflow Flag bit position. */ + +#define CPU_N_bm 0x04 /* Negative Flag bit mask. */ +#define CPU_N_bp 2 /* Negative Flag bit position. */ + +#define CPU_Z_bm 0x02 /* Zero Flag bit mask. */ +#define CPU_Z_bp 1 /* Zero Flag bit position. */ + +#define CPU_C_bm 0x01 /* Carry Flag bit mask. */ +#define CPU_C_bp 0 /* Carry Flag bit position. */ + + +/* CLK - Clock System */ +/* CLK.CTRL bit masks and bit positions */ +#define CLK_SCLKSEL_gm 0x07 /* System Clock Selection group mask. */ +#define CLK_SCLKSEL_gp 0 /* System Clock Selection group position. */ +#define CLK_SCLKSEL0_bm (1<<0) /* System Clock Selection bit 0 mask. */ +#define CLK_SCLKSEL0_bp 0 /* System Clock Selection bit 0 position. */ +#define CLK_SCLKSEL1_bm (1<<1) /* System Clock Selection bit 1 mask. */ +#define CLK_SCLKSEL1_bp 1 /* System Clock Selection bit 1 position. */ +#define CLK_SCLKSEL2_bm (1<<2) /* System Clock Selection bit 2 mask. */ +#define CLK_SCLKSEL2_bp 2 /* System Clock Selection bit 2 position. */ + + +/* CLK.PSCTRL bit masks and bit positions */ +#define CLK_PSADIV_gm 0x7C /* Prescaler A Division Factor group mask. */ +#define CLK_PSADIV_gp 2 /* Prescaler A Division Factor group position. */ +#define CLK_PSADIV0_bm (1<<2) /* Prescaler A Division Factor bit 0 mask. */ +#define CLK_PSADIV0_bp 2 /* Prescaler A Division Factor bit 0 position. */ +#define CLK_PSADIV1_bm (1<<3) /* Prescaler A Division Factor bit 1 mask. */ +#define CLK_PSADIV1_bp 3 /* Prescaler A Division Factor bit 1 position. */ +#define CLK_PSADIV2_bm (1<<4) /* Prescaler A Division Factor bit 2 mask. */ +#define CLK_PSADIV2_bp 4 /* Prescaler A Division Factor bit 2 position. */ +#define CLK_PSADIV3_bm (1<<5) /* Prescaler A Division Factor bit 3 mask. */ +#define CLK_PSADIV3_bp 5 /* Prescaler A Division Factor bit 3 position. */ +#define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ +#define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ + +#define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ +#define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ +#define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ +#define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ +#define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ +#define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ + + +/* CLK.LOCK bit masks and bit positions */ +#define CLK_LOCK_bm 0x01 /* Clock System Lock bit mask. */ +#define CLK_LOCK_bp 0 /* Clock System Lock bit position. */ + + +/* CLK.RTCCTRL bit masks and bit positions */ +#define CLK_RTCSRC_gm 0x0E /* Clock Source group mask. */ +#define CLK_RTCSRC_gp 1 /* Clock Source group position. */ +#define CLK_RTCSRC0_bm (1<<1) /* Clock Source bit 0 mask. */ +#define CLK_RTCSRC0_bp 1 /* Clock Source bit 0 position. */ +#define CLK_RTCSRC1_bm (1<<2) /* Clock Source bit 1 mask. */ +#define CLK_RTCSRC1_bp 2 /* Clock Source bit 1 position. */ +#define CLK_RTCSRC2_bm (1<<3) /* Clock Source bit 2 mask. */ +#define CLK_RTCSRC2_bp 3 /* Clock Source bit 2 position. */ + +#define CLK_RTCEN_bm 0x01 /* RTC Clock Source Enable bit mask. */ +#define CLK_RTCEN_bp 0 /* RTC Clock Source Enable bit position. */ + + +/* PR.PR bit masks and bit positions */ +#define PR_EBI_bm 0x08 /* External Bus Interface bit mask. */ +#define PR_EBI_bp 3 /* External Bus Interface bit position. */ + +#define PR_RTC_bm 0x04 /* Real-time Counter bit mask. */ +#define PR_RTC_bp 2 /* Real-time Counter bit position. */ + +#define PR_EVSYS_bm 0x02 /* Event System bit mask. */ +#define PR_EVSYS_bp 1 /* Event System bit position. */ + +#define PR_DMA_bm 0x01 /* DMA-Controller bit mask. */ +#define PR_DMA_bp 0 /* DMA-Controller bit position. */ + + +/* PR.PRPA bit masks and bit positions */ +#define PR_DAC_bm 0x04 /* Port A DAC bit mask. */ +#define PR_DAC_bp 2 /* Port A DAC bit position. */ + +#define PR_ADC_bm 0x02 /* Port A ADC bit mask. */ +#define PR_ADC_bp 1 /* Port A ADC bit position. */ + +#define PR_AC_bm 0x01 /* Port A Analog Comparator bit mask. */ +#define PR_AC_bp 0 /* Port A Analog Comparator bit position. */ + + +/* PR.PRPB bit masks and bit positions */ +/* PR_DAC_bm Predefined. */ +/* PR_DAC_bp Predefined. */ + +/* PR_ADC_bm Predefined. */ +/* PR_ADC_bp Predefined. */ + +/* PR_AC_bm Predefined. */ +/* PR_AC_bp Predefined. */ + + +/* PR.PRPC bit masks and bit positions */ +#define PR_TWI_bm 0x40 /* Port C Two-wire Interface bit mask. */ +#define PR_TWI_bp 6 /* Port C Two-wire Interface bit position. */ + +#define PR_USART1_bm 0x20 /* Port C USART1 bit mask. */ +#define PR_USART1_bp 5 /* Port C USART1 bit position. */ + +#define PR_USART0_bm 0x10 /* Port C USART0 bit mask. */ +#define PR_USART0_bp 4 /* Port C USART0 bit position. */ + +#define PR_SPI_bm 0x08 /* Port C SPI bit mask. */ +#define PR_SPI_bp 3 /* Port C SPI bit position. */ + +#define PR_HIRES_bm 0x04 /* Port C AWEX bit mask. */ +#define PR_HIRES_bp 2 /* Port C AWEX bit position. */ + +#define PR_TC1_bm 0x02 /* Port C Timer/Counter1 bit mask. */ +#define PR_TC1_bp 1 /* Port C Timer/Counter1 bit position. */ + +#define PR_TC0_bm 0x01 /* Port C Timer/Counter0 bit mask. */ +#define PR_TC0_bp 0 /* Port C Timer/Counter0 bit position. */ + + +/* PR.PRPD bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPE bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPF bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* SLEEP - Sleep Controller */ +/* SLEEP.CTRL bit masks and bit positions */ +#define SLEEP_SMODE_gm 0x0E /* Sleep Mode group mask. */ +#define SLEEP_SMODE_gp 1 /* Sleep Mode group position. */ +#define SLEEP_SMODE0_bm (1<<1) /* Sleep Mode bit 0 mask. */ +#define SLEEP_SMODE0_bp 1 /* Sleep Mode bit 0 position. */ +#define SLEEP_SMODE1_bm (1<<2) /* Sleep Mode bit 1 mask. */ +#define SLEEP_SMODE1_bp 2 /* Sleep Mode bit 1 position. */ +#define SLEEP_SMODE2_bm (1<<3) /* Sleep Mode bit 2 mask. */ +#define SLEEP_SMODE2_bp 3 /* Sleep Mode bit 2 position. */ + +#define SLEEP_SEN_bm 0x01 /* Sleep Enable bit mask. */ +#define SLEEP_SEN_bp 0 /* Sleep Enable bit position. */ + + +/* OSC - Oscillator */ +/* OSC.CTRL bit masks and bit positions */ +#define OSC_PLLEN_bm 0x10 /* PLL Enable bit mask. */ +#define OSC_PLLEN_bp 4 /* PLL Enable bit position. */ + +#define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ +#define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ + +#define OSC_RC32KEN_bm 0x04 /* Internal 32kHz RC Oscillator Enable bit mask. */ +#define OSC_RC32KEN_bp 2 /* Internal 32kHz RC Oscillator Enable bit position. */ + +#define OSC_RC32MEN_bm 0x02 /* Internal 32MHz RC Oscillator Enable bit mask. */ +#define OSC_RC32MEN_bp 1 /* Internal 32MHz RC Oscillator Enable bit position. */ + +#define OSC_RC2MEN_bm 0x01 /* Internal 2MHz RC Oscillator Enable bit mask. */ +#define OSC_RC2MEN_bp 0 /* Internal 2MHz RC Oscillator Enable bit position. */ + + +/* OSC.STATUS bit masks and bit positions */ +#define OSC_PLLRDY_bm 0x10 /* PLL Ready bit mask. */ +#define OSC_PLLRDY_bp 4 /* PLL Ready bit position. */ + +#define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ +#define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ + +#define OSC_RC32KRDY_bm 0x04 /* Internal 32kHz RC Oscillator Ready bit mask. */ +#define OSC_RC32KRDY_bp 2 /* Internal 32kHz RC Oscillator Ready bit position. */ + +#define OSC_RC32MRDY_bm 0x02 /* Internal 32MHz RC Oscillator Ready bit mask. */ +#define OSC_RC32MRDY_bp 1 /* Internal 32MHz RC Oscillator Ready bit position. */ + +#define OSC_RC2MRDY_bm 0x01 /* Internal 2MHz RC Oscillator Ready bit mask. */ +#define OSC_RC2MRDY_bp 0 /* Internal 2MHz RC Oscillator Ready bit position. */ + + +/* OSC.XOSCCTRL bit masks and bit positions */ +#define OSC_FRQRANGE_gm 0xC0 /* Frequency Range group mask. */ +#define OSC_FRQRANGE_gp 6 /* Frequency Range group position. */ +#define OSC_FRQRANGE0_bm (1<<6) /* Frequency Range bit 0 mask. */ +#define OSC_FRQRANGE0_bp 6 /* Frequency Range bit 0 position. */ +#define OSC_FRQRANGE1_bm (1<<7) /* Frequency Range bit 1 mask. */ +#define OSC_FRQRANGE1_bp 7 /* Frequency Range bit 1 position. */ + +#define OSC_X32KLPM_bm 0x20 /* 32kHz XTAL OSC Low-power Mode bit mask. */ +#define OSC_X32KLPM_bp 5 /* 32kHz XTAL OSC Low-power Mode bit position. */ + +#define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ +#define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ +#define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ +#define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ +#define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ +#define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ +#define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ +#define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ +#define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ +#define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ + + +/* OSC.XOSCFAIL bit masks and bit positions */ +#define OSC_XOSCFDIF_bm 0x02 /* Failure Detection Interrupt Flag bit mask. */ +#define OSC_XOSCFDIF_bp 1 /* Failure Detection Interrupt Flag bit position. */ + +#define OSC_XOSCFDEN_bm 0x01 /* Failure Detection Enable bit mask. */ +#define OSC_XOSCFDEN_bp 0 /* Failure Detection Enable bit position. */ + + +/* OSC.PLLCTRL bit masks and bit positions */ +#define OSC_PLLSRC_gm 0xC0 /* Clock Source group mask. */ +#define OSC_PLLSRC_gp 6 /* Clock Source group position. */ +#define OSC_PLLSRC0_bm (1<<6) /* Clock Source bit 0 mask. */ +#define OSC_PLLSRC0_bp 6 /* Clock Source bit 0 position. */ +#define OSC_PLLSRC1_bm (1<<7) /* Clock Source bit 1 mask. */ +#define OSC_PLLSRC1_bp 7 /* Clock Source bit 1 position. */ + +#define OSC_PLLFAC_gm 0x1F /* Multiplication Factor group mask. */ +#define OSC_PLLFAC_gp 0 /* Multiplication Factor group position. */ +#define OSC_PLLFAC0_bm (1<<0) /* Multiplication Factor bit 0 mask. */ +#define OSC_PLLFAC0_bp 0 /* Multiplication Factor bit 0 position. */ +#define OSC_PLLFAC1_bm (1<<1) /* Multiplication Factor bit 1 mask. */ +#define OSC_PLLFAC1_bp 1 /* Multiplication Factor bit 1 position. */ +#define OSC_PLLFAC2_bm (1<<2) /* Multiplication Factor bit 2 mask. */ +#define OSC_PLLFAC2_bp 2 /* Multiplication Factor bit 2 position. */ +#define OSC_PLLFAC3_bm (1<<3) /* Multiplication Factor bit 3 mask. */ +#define OSC_PLLFAC3_bp 3 /* Multiplication Factor bit 3 position. */ +#define OSC_PLLFAC4_bm (1<<4) /* Multiplication Factor bit 4 mask. */ +#define OSC_PLLFAC4_bp 4 /* Multiplication Factor bit 4 position. */ + + +/* OSC.DFLLCTRL bit masks and bit positions */ +#define OSC_RC32MCREF_bm 0x02 /* 32MHz Calibration Reference bit mask. */ +#define OSC_RC32MCREF_bp 1 /* 32MHz Calibration Reference bit position. */ + +#define OSC_RC2MCREF_bm 0x01 /* 2MHz Calibration Reference bit mask. */ +#define OSC_RC2MCREF_bp 0 /* 2MHz Calibration Reference bit position. */ + + +/* DFLL - DFLL */ +/* DFLL.CTRL bit masks and bit positions */ +#define DFLL_ENABLE_bm 0x01 /* DFLL Enable bit mask. */ +#define DFLL_ENABLE_bp 0 /* DFLL Enable bit position. */ + + +/* DFLL.CALA bit masks and bit positions */ +#define DFLL_CALL_gm 0x7F /* DFLL Calibration bits [6:0] group mask. */ +#define DFLL_CALL_gp 0 /* DFLL Calibration bits [6:0] group position. */ +#define DFLL_CALL0_bm (1<<0) /* DFLL Calibration bits [6:0] bit 0 mask. */ +#define DFLL_CALL0_bp 0 /* DFLL Calibration bits [6:0] bit 0 position. */ +#define DFLL_CALL1_bm (1<<1) /* DFLL Calibration bits [6:0] bit 1 mask. */ +#define DFLL_CALL1_bp 1 /* DFLL Calibration bits [6:0] bit 1 position. */ +#define DFLL_CALL2_bm (1<<2) /* DFLL Calibration bits [6:0] bit 2 mask. */ +#define DFLL_CALL2_bp 2 /* DFLL Calibration bits [6:0] bit 2 position. */ +#define DFLL_CALL3_bm (1<<3) /* DFLL Calibration bits [6:0] bit 3 mask. */ +#define DFLL_CALL3_bp 3 /* DFLL Calibration bits [6:0] bit 3 position. */ +#define DFLL_CALL4_bm (1<<4) /* DFLL Calibration bits [6:0] bit 4 mask. */ +#define DFLL_CALL4_bp 4 /* DFLL Calibration bits [6:0] bit 4 position. */ +#define DFLL_CALL5_bm (1<<5) /* DFLL Calibration bits [6:0] bit 5 mask. */ +#define DFLL_CALL5_bp 5 /* DFLL Calibration bits [6:0] bit 5 position. */ +#define DFLL_CALL6_bm (1<<6) /* DFLL Calibration bits [6:0] bit 6 mask. */ +#define DFLL_CALL6_bp 6 /* DFLL Calibration bits [6:0] bit 6 position. */ + + +/* DFLL.CALB bit masks and bit positions */ +#define DFLL_CALH_gm 0x3F /* DFLL Calibration bits [12:7] group mask. */ +#define DFLL_CALH_gp 0 /* DFLL Calibration bits [12:7] group position. */ +#define DFLL_CALH0_bm (1<<0) /* DFLL Calibration bits [12:7] bit 0 mask. */ +#define DFLL_CALH0_bp 0 /* DFLL Calibration bits [12:7] bit 0 position. */ +#define DFLL_CALH1_bm (1<<1) /* DFLL Calibration bits [12:7] bit 1 mask. */ +#define DFLL_CALH1_bp 1 /* DFLL Calibration bits [12:7] bit 1 position. */ +#define DFLL_CALH2_bm (1<<2) /* DFLL Calibration bits [12:7] bit 2 mask. */ +#define DFLL_CALH2_bp 2 /* DFLL Calibration bits [12:7] bit 2 position. */ +#define DFLL_CALH3_bm (1<<3) /* DFLL Calibration bits [12:7] bit 3 mask. */ +#define DFLL_CALH3_bp 3 /* DFLL Calibration bits [12:7] bit 3 position. */ +#define DFLL_CALH4_bm (1<<4) /* DFLL Calibration bits [12:7] bit 4 mask. */ +#define DFLL_CALH4_bp 4 /* DFLL Calibration bits [12:7] bit 4 position. */ +#define DFLL_CALH5_bm (1<<5) /* DFLL Calibration bits [12:7] bit 5 mask. */ +#define DFLL_CALH5_bp 5 /* DFLL Calibration bits [12:7] bit 5 position. */ + + +/* RST - Reset */ +/* RST.STATUS bit masks and bit positions */ +#define RST_SDRF_bm 0x40 /* Spike Detection Reset Flag bit mask. */ +#define RST_SDRF_bp 6 /* Spike Detection Reset Flag bit position. */ + +#define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ +#define RST_SRF_bp 5 /* Software Reset Flag bit position. */ + +#define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ +#define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ + +#define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ +#define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ + +#define RST_BORF_bm 0x04 /* Brown-out Reset Flag bit mask. */ +#define RST_BORF_bp 2 /* Brown-out Reset Flag bit position. */ + +#define RST_EXTRF_bm 0x02 /* External Reset Flag bit mask. */ +#define RST_EXTRF_bp 1 /* External Reset Flag bit position. */ + +#define RST_PORF_bm 0x01 /* Power-on Reset Flag bit mask. */ +#define RST_PORF_bp 0 /* Power-on Reset Flag bit position. */ + + +/* RST.CTRL bit masks and bit positions */ +#define RST_SWRST_bm 0x01 /* Software Reset bit mask. */ +#define RST_SWRST_bp 0 /* Software Reset bit position. */ + + +/* WDT - Watch-Dog Timer */ +/* WDT.CTRL bit masks and bit positions */ +#define WDT_PER_gm 0x3C /* Period group mask. */ +#define WDT_PER_gp 2 /* Period group position. */ +#define WDT_PER0_bm (1<<2) /* Period bit 0 mask. */ +#define WDT_PER0_bp 2 /* Period bit 0 position. */ +#define WDT_PER1_bm (1<<3) /* Period bit 1 mask. */ +#define WDT_PER1_bp 3 /* Period bit 1 position. */ +#define WDT_PER2_bm (1<<4) /* Period bit 2 mask. */ +#define WDT_PER2_bp 4 /* Period bit 2 position. */ +#define WDT_PER3_bm (1<<5) /* Period bit 3 mask. */ +#define WDT_PER3_bp 5 /* Period bit 3 position. */ + +#define WDT_ENABLE_bm 0x02 /* Enable bit mask. */ +#define WDT_ENABLE_bp 1 /* Enable bit position. */ + +#define WDT_CEN_bm 0x01 /* Change Enable bit mask. */ +#define WDT_CEN_bp 0 /* Change Enable bit position. */ + + +/* WDT.WINCTRL bit masks and bit positions */ +#define WDT_WPER_gm 0x3C /* Windowed Mode Period group mask. */ +#define WDT_WPER_gp 2 /* Windowed Mode Period group position. */ +#define WDT_WPER0_bm (1<<2) /* Windowed Mode Period bit 0 mask. */ +#define WDT_WPER0_bp 2 /* Windowed Mode Period bit 0 position. */ +#define WDT_WPER1_bm (1<<3) /* Windowed Mode Period bit 1 mask. */ +#define WDT_WPER1_bp 3 /* Windowed Mode Period bit 1 position. */ +#define WDT_WPER2_bm (1<<4) /* Windowed Mode Period bit 2 mask. */ +#define WDT_WPER2_bp 4 /* Windowed Mode Period bit 2 position. */ +#define WDT_WPER3_bm (1<<5) /* Windowed Mode Period bit 3 mask. */ +#define WDT_WPER3_bp 5 /* Windowed Mode Period bit 3 position. */ + +#define WDT_WEN_bm 0x02 /* Windowed Mode Enable bit mask. */ +#define WDT_WEN_bp 1 /* Windowed Mode Enable bit position. */ + +#define WDT_WCEN_bm 0x01 /* Windowed Mode Change Enable bit mask. */ +#define WDT_WCEN_bp 0 /* Windowed Mode Change Enable bit position. */ + + +/* WDT.STATUS bit masks and bit positions */ +#define WDT_SYNCBUSY_bm 0x01 /* Syncronization busy bit mask. */ +#define WDT_SYNCBUSY_bp 0 /* Syncronization busy bit position. */ + + +/* MCU - MCU Control */ +/* MCU.MCUCR bit masks and bit positions */ +#define MCU_JTAGD_bm 0x01 /* JTAG Disable bit mask. */ +#define MCU_JTAGD_bp 0 /* JTAG Disable bit position. */ + + +/* MCU.EVSYSLOCK bit masks and bit positions */ +#define MCU_EVSYS1LOCK_bm 0x10 /* Event Channel 4-7 Lock bit mask. */ +#define MCU_EVSYS1LOCK_bp 4 /* Event Channel 4-7 Lock bit position. */ + +#define MCU_EVSYS0LOCK_bm 0x01 /* Event Channel 0-3 Lock bit mask. */ +#define MCU_EVSYS0LOCK_bp 0 /* Event Channel 0-3 Lock bit position. */ + + +/* MCU.AWEXLOCK bit masks and bit positions */ +#define MCU_AWEXELOCK_bm 0x04 /* AWeX on T/C E0 Lock bit mask. */ +#define MCU_AWEXELOCK_bp 2 /* AWeX on T/C E0 Lock bit position. */ + +#define MCU_AWEXCLOCK_bm 0x01 /* AWeX on T/C C0 Lock bit mask. */ +#define MCU_AWEXCLOCK_bp 0 /* AWeX on T/C C0 Lock bit position. */ + + +/* PMIC - Programmable Multi-level Interrupt Controller */ +/* PMIC.STATUS bit masks and bit positions */ +#define PMIC_NMIEX_bm 0x80 /* Non-maskable Interrupt Executing bit mask. */ +#define PMIC_NMIEX_bp 7 /* Non-maskable Interrupt Executing bit position. */ + +#define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ +#define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ + +#define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ +#define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ + +#define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ +#define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ + + +/* PMIC.CTRL bit masks and bit positions */ +#define PMIC_RREN_bm 0x80 /* Round-Robin Priority Enable bit mask. */ +#define PMIC_RREN_bp 7 /* Round-Robin Priority Enable bit position. */ + +#define PMIC_IVSEL_bm 0x40 /* Interrupt Vector Select bit mask. */ +#define PMIC_IVSEL_bp 6 /* Interrupt Vector Select bit position. */ + +#define PMIC_HILVLEN_bm 0x04 /* High Level Enable bit mask. */ +#define PMIC_HILVLEN_bp 2 /* High Level Enable bit position. */ + +#define PMIC_MEDLVLEN_bm 0x02 /* Medium Level Enable bit mask. */ +#define PMIC_MEDLVLEN_bp 1 /* Medium Level Enable bit position. */ + +#define PMIC_LOLVLEN_bm 0x01 /* Low Level Enable bit mask. */ +#define PMIC_LOLVLEN_bp 0 /* Low Level Enable bit position. */ + + +/* DMA - DMA Controller */ +/* DMA_CH.CTRLA bit masks and bit positions */ +#define DMA_CH_ENABLE_bm 0x80 /* Channel Enable bit mask. */ +#define DMA_CH_ENABLE_bp 7 /* Channel Enable bit position. */ + +#define DMA_CH_RESET_bm 0x40 /* Channel Software Reset bit mask. */ +#define DMA_CH_RESET_bp 6 /* Channel Software Reset bit position. */ + +#define DMA_CH_REPEAT_bm 0x20 /* Channel Repeat Mode bit mask. */ +#define DMA_CH_REPEAT_bp 5 /* Channel Repeat Mode bit position. */ + +#define DMA_CH_TRFREQ_bm 0x10 /* Channel Transfer Request bit mask. */ +#define DMA_CH_TRFREQ_bp 4 /* Channel Transfer Request bit position. */ + +#define DMA_CH_SINGLE_bm 0x04 /* Channel Single Shot Data Transfer bit mask. */ +#define DMA_CH_SINGLE_bp 2 /* Channel Single Shot Data Transfer bit position. */ + +#define DMA_CH_BURSTLEN_gm 0x03 /* Channel Transfer Mode group mask. */ +#define DMA_CH_BURSTLEN_gp 0 /* Channel Transfer Mode group position. */ +#define DMA_CH_BURSTLEN0_bm (1<<0) /* Channel Transfer Mode bit 0 mask. */ +#define DMA_CH_BURSTLEN0_bp 0 /* Channel Transfer Mode bit 0 position. */ +#define DMA_CH_BURSTLEN1_bm (1<<1) /* Channel Transfer Mode bit 1 mask. */ +#define DMA_CH_BURSTLEN1_bp 1 /* Channel Transfer Mode bit 1 position. */ + + +/* DMA_CH.CTRLB bit masks and bit positions */ +#define DMA_CH_CHBUSY_bm 0x80 /* Block Transfer Busy bit mask. */ +#define DMA_CH_CHBUSY_bp 7 /* Block Transfer Busy bit position. */ + +#define DMA_CH_CHPEND_bm 0x40 /* Block Transfer Pending bit mask. */ +#define DMA_CH_CHPEND_bp 6 /* Block Transfer Pending bit position. */ + +#define DMA_CH_ERRIF_bm 0x20 /* Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH_ERRIF_bp 5 /* Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ + +#define DMA_CH_ERRINTLVL_gm 0x0C /* Transfer Error Interrupt Level group mask. */ +#define DMA_CH_ERRINTLVL_gp 2 /* Transfer Error Interrupt Level group position. */ +#define DMA_CH_ERRINTLVL0_bm (1<<2) /* Transfer Error Interrupt Level bit 0 mask. */ +#define DMA_CH_ERRINTLVL0_bp 2 /* Transfer Error Interrupt Level bit 0 position. */ +#define DMA_CH_ERRINTLVL1_bm (1<<3) /* Transfer Error Interrupt Level bit 1 mask. */ +#define DMA_CH_ERRINTLVL1_bp 3 /* Transfer Error Interrupt Level bit 1 position. */ + +#define DMA_CH_TRNINTLVL_gm 0x03 /* Transaction Complete Interrupt Level group mask. */ +#define DMA_CH_TRNINTLVL_gp 0 /* Transaction Complete Interrupt Level group position. */ +#define DMA_CH_TRNINTLVL0_bm (1<<0) /* Transaction Complete Interrupt Level bit 0 mask. */ +#define DMA_CH_TRNINTLVL0_bp 0 /* Transaction Complete Interrupt Level bit 0 position. */ +#define DMA_CH_TRNINTLVL1_bm (1<<1) /* Transaction Complete Interrupt Level bit 1 mask. */ +#define DMA_CH_TRNINTLVL1_bp 1 /* Transaction Complete Interrupt Level bit 1 position. */ + + +/* DMA_CH.ADDRCTRL bit masks and bit positions */ +#define DMA_CH_SRCRELOAD_gm 0xC0 /* Channel Source Address Reload group mask. */ +#define DMA_CH_SRCRELOAD_gp 6 /* Channel Source Address Reload group position. */ +#define DMA_CH_SRCRELOAD0_bm (1<<6) /* Channel Source Address Reload bit 0 mask. */ +#define DMA_CH_SRCRELOAD0_bp 6 /* Channel Source Address Reload bit 0 position. */ +#define DMA_CH_SRCRELOAD1_bm (1<<7) /* Channel Source Address Reload bit 1 mask. */ +#define DMA_CH_SRCRELOAD1_bp 7 /* Channel Source Address Reload bit 1 position. */ + +#define DMA_CH_SRCDIR_gm 0x30 /* Channel Source Address Mode group mask. */ +#define DMA_CH_SRCDIR_gp 4 /* Channel Source Address Mode group position. */ +#define DMA_CH_SRCDIR0_bm (1<<4) /* Channel Source Address Mode bit 0 mask. */ +#define DMA_CH_SRCDIR0_bp 4 /* Channel Source Address Mode bit 0 position. */ +#define DMA_CH_SRCDIR1_bm (1<<5) /* Channel Source Address Mode bit 1 mask. */ +#define DMA_CH_SRCDIR1_bp 5 /* Channel Source Address Mode bit 1 position. */ + +#define DMA_CH_DESTRELOAD_gm 0x0C /* Channel Destination Address Reload group mask. */ +#define DMA_CH_DESTRELOAD_gp 2 /* Channel Destination Address Reload group position. */ +#define DMA_CH_DESTRELOAD0_bm (1<<2) /* Channel Destination Address Reload bit 0 mask. */ +#define DMA_CH_DESTRELOAD0_bp 2 /* Channel Destination Address Reload bit 0 position. */ +#define DMA_CH_DESTRELOAD1_bm (1<<3) /* Channel Destination Address Reload bit 1 mask. */ +#define DMA_CH_DESTRELOAD1_bp 3 /* Channel Destination Address Reload bit 1 position. */ + +#define DMA_CH_DESTDIR_gm 0x03 /* Channel Destination Address Mode group mask. */ +#define DMA_CH_DESTDIR_gp 0 /* Channel Destination Address Mode group position. */ +#define DMA_CH_DESTDIR0_bm (1<<0) /* Channel Destination Address Mode bit 0 mask. */ +#define DMA_CH_DESTDIR0_bp 0 /* Channel Destination Address Mode bit 0 position. */ +#define DMA_CH_DESTDIR1_bm (1<<1) /* Channel Destination Address Mode bit 1 mask. */ +#define DMA_CH_DESTDIR1_bp 1 /* Channel Destination Address Mode bit 1 position. */ + + +/* DMA_CH.TRIGSRC bit masks and bit positions */ +#define DMA_CH_TRIGSRC_gm 0xFF /* Channel Trigger Source group mask. */ +#define DMA_CH_TRIGSRC_gp 0 /* Channel Trigger Source group position. */ +#define DMA_CH_TRIGSRC0_bm (1<<0) /* Channel Trigger Source bit 0 mask. */ +#define DMA_CH_TRIGSRC0_bp 0 /* Channel Trigger Source bit 0 position. */ +#define DMA_CH_TRIGSRC1_bm (1<<1) /* Channel Trigger Source bit 1 mask. */ +#define DMA_CH_TRIGSRC1_bp 1 /* Channel Trigger Source bit 1 position. */ +#define DMA_CH_TRIGSRC2_bm (1<<2) /* Channel Trigger Source bit 2 mask. */ +#define DMA_CH_TRIGSRC2_bp 2 /* Channel Trigger Source bit 2 position. */ +#define DMA_CH_TRIGSRC3_bm (1<<3) /* Channel Trigger Source bit 3 mask. */ +#define DMA_CH_TRIGSRC3_bp 3 /* Channel Trigger Source bit 3 position. */ +#define DMA_CH_TRIGSRC4_bm (1<<4) /* Channel Trigger Source bit 4 mask. */ +#define DMA_CH_TRIGSRC4_bp 4 /* Channel Trigger Source bit 4 position. */ +#define DMA_CH_TRIGSRC5_bm (1<<5) /* Channel Trigger Source bit 5 mask. */ +#define DMA_CH_TRIGSRC5_bp 5 /* Channel Trigger Source bit 5 position. */ +#define DMA_CH_TRIGSRC6_bm (1<<6) /* Channel Trigger Source bit 6 mask. */ +#define DMA_CH_TRIGSRC6_bp 6 /* Channel Trigger Source bit 6 position. */ +#define DMA_CH_TRIGSRC7_bm (1<<7) /* Channel Trigger Source bit 7 mask. */ +#define DMA_CH_TRIGSRC7_bp 7 /* Channel Trigger Source bit 7 position. */ + + +/* DMA.CTRL bit masks and bit positions */ +#define DMA_ENABLE_bm 0x80 /* Enable bit mask. */ +#define DMA_ENABLE_bp 7 /* Enable bit position. */ + +#define DMA_RESET_bm 0x40 /* Software Reset bit mask. */ +#define DMA_RESET_bp 6 /* Software Reset bit position. */ + +#define DMA_DBUFMODE_gm 0x0C /* Double Buffering Mode group mask. */ +#define DMA_DBUFMODE_gp 2 /* Double Buffering Mode group position. */ +#define DMA_DBUFMODE0_bm (1<<2) /* Double Buffering Mode bit 0 mask. */ +#define DMA_DBUFMODE0_bp 2 /* Double Buffering Mode bit 0 position. */ +#define DMA_DBUFMODE1_bm (1<<3) /* Double Buffering Mode bit 1 mask. */ +#define DMA_DBUFMODE1_bp 3 /* Double Buffering Mode bit 1 position. */ + +#define DMA_PRIMODE_gm 0x03 /* Channel Priority Mode group mask. */ +#define DMA_PRIMODE_gp 0 /* Channel Priority Mode group position. */ +#define DMA_PRIMODE0_bm (1<<0) /* Channel Priority Mode bit 0 mask. */ +#define DMA_PRIMODE0_bp 0 /* Channel Priority Mode bit 0 position. */ +#define DMA_PRIMODE1_bm (1<<1) /* Channel Priority Mode bit 1 mask. */ +#define DMA_PRIMODE1_bp 1 /* Channel Priority Mode bit 1 position. */ + + +/* DMA.INTFLAGS bit masks and bit positions */ +#define DMA_CH3ERRIF_bm 0x80 /* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH3ERRIF_bp 7 /* Channel 3 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH2ERRIF_bm 0x40 /* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH2ERRIF_bp 6 /* Channel 2 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH1ERRIF_bm 0x20 /* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH1ERRIF_bp 5 /* Channel 1 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH0ERRIF_bm 0x10 /* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH0ERRIF_bp 4 /* Channel 0 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH3TRNIF_bm 0x08 /* Channel 3 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH3TRNIF_bp 3 /* Channel 3 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH2TRNIF_bm 0x04 /* Channel 2 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH2TRNIF_bp 2 /* Channel 2 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH1TRNIF_bm 0x02 /* Channel 1 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH1TRNIF_bp 1 /* Channel 1 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH0TRNIF_bm 0x01 /* Channel 0 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH0TRNIF_bp 0 /* Channel 0 Transaction Complete Interrupt Flag bit position. */ + + +/* DMA.STATUS bit masks and bit positions */ +#define DMA_CH3BUSY_bm 0x80 /* Channel 3 Block Transfer Busy bit mask. */ +#define DMA_CH3BUSY_bp 7 /* Channel 3 Block Transfer Busy bit position. */ + +#define DMA_CH2BUSY_bm 0x40 /* Channel 2 Block Transfer Busy bit mask. */ +#define DMA_CH2BUSY_bp 6 /* Channel 2 Block Transfer Busy bit position. */ + +#define DMA_CH1BUSY_bm 0x20 /* Channel 1 Block Transfer Busy bit mask. */ +#define DMA_CH1BUSY_bp 5 /* Channel 1 Block Transfer Busy bit position. */ + +#define DMA_CH0BUSY_bm 0x10 /* Channel 0 Block Transfer Busy bit mask. */ +#define DMA_CH0BUSY_bp 4 /* Channel 0 Block Transfer Busy bit position. */ + +#define DMA_CH3PEND_bm 0x08 /* Channel 3 Block Transfer Pending bit mask. */ +#define DMA_CH3PEND_bp 3 /* Channel 3 Block Transfer Pending bit position. */ + +#define DMA_CH2PEND_bm 0x04 /* Channel 2 Block Transfer Pending bit mask. */ +#define DMA_CH2PEND_bp 2 /* Channel 2 Block Transfer Pending bit position. */ + +#define DMA_CH1PEND_bm 0x02 /* Channel 1 Block Transfer Pending bit mask. */ +#define DMA_CH1PEND_bp 1 /* Channel 1 Block Transfer Pending bit position. */ + +#define DMA_CH0PEND_bm 0x01 /* Channel 0 Block Transfer Pending bit mask. */ +#define DMA_CH0PEND_bp 0 /* Channel 0 Block Transfer Pending bit position. */ + + +/* EVSYS - Event System */ +/* EVSYS.CH0MUX bit masks and bit positions */ +#define EVSYS_CHMUX_gm 0xFF /* Event Channel 0 Multiplexer group mask. */ +#define EVSYS_CHMUX_gp 0 /* Event Channel 0 Multiplexer group position. */ +#define EVSYS_CHMUX0_bm (1<<0) /* Event Channel 0 Multiplexer bit 0 mask. */ +#define EVSYS_CHMUX0_bp 0 /* Event Channel 0 Multiplexer bit 0 position. */ +#define EVSYS_CHMUX1_bm (1<<1) /* Event Channel 0 Multiplexer bit 1 mask. */ +#define EVSYS_CHMUX1_bp 1 /* Event Channel 0 Multiplexer bit 1 position. */ +#define EVSYS_CHMUX2_bm (1<<2) /* Event Channel 0 Multiplexer bit 2 mask. */ +#define EVSYS_CHMUX2_bp 2 /* Event Channel 0 Multiplexer bit 2 position. */ +#define EVSYS_CHMUX3_bm (1<<3) /* Event Channel 0 Multiplexer bit 3 mask. */ +#define EVSYS_CHMUX3_bp 3 /* Event Channel 0 Multiplexer bit 3 position. */ +#define EVSYS_CHMUX4_bm (1<<4) /* Event Channel 0 Multiplexer bit 4 mask. */ +#define EVSYS_CHMUX4_bp 4 /* Event Channel 0 Multiplexer bit 4 position. */ +#define EVSYS_CHMUX5_bm (1<<5) /* Event Channel 0 Multiplexer bit 5 mask. */ +#define EVSYS_CHMUX5_bp 5 /* Event Channel 0 Multiplexer bit 5 position. */ +#define EVSYS_CHMUX6_bm (1<<6) /* Event Channel 0 Multiplexer bit 6 mask. */ +#define EVSYS_CHMUX6_bp 6 /* Event Channel 0 Multiplexer bit 6 position. */ +#define EVSYS_CHMUX7_bm (1<<7) /* Event Channel 0 Multiplexer bit 7 mask. */ +#define EVSYS_CHMUX7_bp 7 /* Event Channel 0 Multiplexer bit 7 position. */ + + +/* EVSYS.CH1MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH2MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH3MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH4MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH5MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH6MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH7MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH0CTRL bit masks and bit positions */ +#define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ +#define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ +#define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ +#define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ +#define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ +#define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ + +#define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ +#define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ + +#define EVSYS_QDEN_bm 0x08 /* Quadrature Decoder Enable bit mask. */ +#define EVSYS_QDEN_bp 3 /* Quadrature Decoder Enable bit position. */ + +#define EVSYS_DIGFILT_gm 0x07 /* Digital Filter group mask. */ +#define EVSYS_DIGFILT_gp 0 /* Digital Filter group position. */ +#define EVSYS_DIGFILT0_bm (1<<0) /* Digital Filter bit 0 mask. */ +#define EVSYS_DIGFILT0_bp 0 /* Digital Filter bit 0 position. */ +#define EVSYS_DIGFILT1_bm (1<<1) /* Digital Filter bit 1 mask. */ +#define EVSYS_DIGFILT1_bp 1 /* Digital Filter bit 1 position. */ +#define EVSYS_DIGFILT2_bm (1<<2) /* Digital Filter bit 2 mask. */ +#define EVSYS_DIGFILT2_bp 2 /* Digital Filter bit 2 position. */ + + +/* EVSYS.CH1CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH2CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH3CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH4CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH5CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH6CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH7CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* NVM - Non Volatile Memory Controller */ +/* NVM.CMD bit masks and bit positions */ +#define NVM_CMD_gm 0xFF /* Command group mask. */ +#define NVM_CMD_gp 0 /* Command group position. */ +#define NVM_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define NVM_CMD0_bp 0 /* Command bit 0 position. */ +#define NVM_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define NVM_CMD1_bp 1 /* Command bit 1 position. */ +#define NVM_CMD2_bm (1<<2) /* Command bit 2 mask. */ +#define NVM_CMD2_bp 2 /* Command bit 2 position. */ +#define NVM_CMD3_bm (1<<3) /* Command bit 3 mask. */ +#define NVM_CMD3_bp 3 /* Command bit 3 position. */ +#define NVM_CMD4_bm (1<<4) /* Command bit 4 mask. */ +#define NVM_CMD4_bp 4 /* Command bit 4 position. */ +#define NVM_CMD5_bm (1<<5) /* Command bit 5 mask. */ +#define NVM_CMD5_bp 5 /* Command bit 5 position. */ +#define NVM_CMD6_bm (1<<6) /* Command bit 6 mask. */ +#define NVM_CMD6_bp 6 /* Command bit 6 position. */ +#define NVM_CMD7_bm (1<<7) /* Command bit 7 mask. */ +#define NVM_CMD7_bp 7 /* Command bit 7 position. */ + + +/* NVM.CTRLA bit masks and bit positions */ +#define NVM_CMDEX_bm 0x01 /* Command Execute bit mask. */ +#define NVM_CMDEX_bp 0 /* Command Execute bit position. */ + + +/* NVM.CTRLB bit masks and bit positions */ +#define NVM_EEMAPEN_bm 0x08 /* EEPROM Mapping Enable bit mask. */ +#define NVM_EEMAPEN_bp 3 /* EEPROM Mapping Enable bit position. */ + +#define NVM_FPRM_bm 0x04 /* Flash Power Reduction Enable bit mask. */ +#define NVM_FPRM_bp 2 /* Flash Power Reduction Enable bit position. */ + +#define NVM_EPRM_bm 0x02 /* EEPROM Power Reduction Enable bit mask. */ +#define NVM_EPRM_bp 1 /* EEPROM Power Reduction Enable bit position. */ + +#define NVM_SPMLOCK_bm 0x01 /* SPM Lock bit mask. */ +#define NVM_SPMLOCK_bp 0 /* SPM Lock bit position. */ + + +/* NVM.INTCTRL bit masks and bit positions */ +#define NVM_SPMLVL_gm 0x0C /* SPM Interrupt Level group mask. */ +#define NVM_SPMLVL_gp 2 /* SPM Interrupt Level group position. */ +#define NVM_SPMLVL0_bm (1<<2) /* SPM Interrupt Level bit 0 mask. */ +#define NVM_SPMLVL0_bp 2 /* SPM Interrupt Level bit 0 position. */ +#define NVM_SPMLVL1_bm (1<<3) /* SPM Interrupt Level bit 1 mask. */ +#define NVM_SPMLVL1_bp 3 /* SPM Interrupt Level bit 1 position. */ + +#define NVM_EELVL_gm 0x03 /* EEPROM Interrupt Level group mask. */ +#define NVM_EELVL_gp 0 /* EEPROM Interrupt Level group position. */ +#define NVM_EELVL0_bm (1<<0) /* EEPROM Interrupt Level bit 0 mask. */ +#define NVM_EELVL0_bp 0 /* EEPROM Interrupt Level bit 0 position. */ +#define NVM_EELVL1_bm (1<<1) /* EEPROM Interrupt Level bit 1 mask. */ +#define NVM_EELVL1_bp 1 /* EEPROM Interrupt Level bit 1 position. */ + + +/* NVM.STATUS bit masks and bit positions */ +#define NVM_NVMBUSY_bm 0x80 /* Non-volatile Memory Busy bit mask. */ +#define NVM_NVMBUSY_bp 7 /* Non-volatile Memory Busy bit position. */ + +#define NVM_FBUSY_bm 0x40 /* Flash Memory Busy bit mask. */ +#define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ + +#define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ +#define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ + +#define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ +#define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ + + +/* NVM.LOCKBITS bit masks and bit positions */ +#define NVM_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ +#define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LOCKBITS_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LOCKBITS_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LOCKBITS_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LOCKBITS_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE0 bit masks and bit positions */ +#define NVM_FUSES_JTAGUSERID_gm 0xFF /* JTAG User ID group mask. */ +#define NVM_FUSES_JTAGUSERID_gp 0 /* JTAG User ID group position. */ +#define NVM_FUSES_JTAGUSERID0_bm (1<<0) /* JTAG User ID bit 0 mask. */ +#define NVM_FUSES_JTAGUSERID0_bp 0 /* JTAG User ID bit 0 position. */ +#define NVM_FUSES_JTAGUSERID1_bm (1<<1) /* JTAG User ID bit 1 mask. */ +#define NVM_FUSES_JTAGUSERID1_bp 1 /* JTAG User ID bit 1 position. */ +#define NVM_FUSES_JTAGUSERID2_bm (1<<2) /* JTAG User ID bit 2 mask. */ +#define NVM_FUSES_JTAGUSERID2_bp 2 /* JTAG User ID bit 2 position. */ +#define NVM_FUSES_JTAGUSERID3_bm (1<<3) /* JTAG User ID bit 3 mask. */ +#define NVM_FUSES_JTAGUSERID3_bp 3 /* JTAG User ID bit 3 position. */ +#define NVM_FUSES_JTAGUSERID4_bm (1<<4) /* JTAG User ID bit 4 mask. */ +#define NVM_FUSES_JTAGUSERID4_bp 4 /* JTAG User ID bit 4 position. */ +#define NVM_FUSES_JTAGUSERID5_bm (1<<5) /* JTAG User ID bit 5 mask. */ +#define NVM_FUSES_JTAGUSERID5_bp 5 /* JTAG User ID bit 5 position. */ +#define NVM_FUSES_JTAGUSERID6_bm (1<<6) /* JTAG User ID bit 6 mask. */ +#define NVM_FUSES_JTAGUSERID6_bp 6 /* JTAG User ID bit 6 position. */ +#define NVM_FUSES_JTAGUSERID7_bm (1<<7) /* JTAG User ID bit 7 mask. */ +#define NVM_FUSES_JTAGUSERID7_bp 7 /* JTAG User ID bit 7 position. */ + + +/* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ +#define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ +#define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ +#define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ +#define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ +#define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ +#define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ + +#define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ +#define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ +#define NVM_FUSES_WDP0_bm (1<<0) /* Watchdog Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDP0_bp 0 /* Watchdog Timeout Period bit 0 position. */ +#define NVM_FUSES_WDP1_bm (1<<1) /* Watchdog Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDP1_bp 1 /* Watchdog Timeout Period bit 1 position. */ +#define NVM_FUSES_WDP2_bm (1<<2) /* Watchdog Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDP2_bp 2 /* Watchdog Timeout Period bit 2 position. */ +#define NVM_FUSES_WDP3_bm (1<<3) /* Watchdog Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDP3_bp 3 /* Watchdog Timeout Period bit 3 position. */ + + +/* NVM_FUSES.FUSEBYTE2 bit masks and bit positions */ +#define NVM_FUSES_DVSDON_bm 0x80 /* Spike Detector Enable bit mask. */ +#define NVM_FUSES_DVSDON_bp 7 /* Spike Detector Enable bit position. */ + +#define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ +#define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ + +#define NVM_FUSES_BODACT_gm 0x0C /* BOD Operation in Active Mode group mask. */ +#define NVM_FUSES_BODACT_gp 2 /* BOD Operation in Active Mode group position. */ +#define NVM_FUSES_BODACT0_bm (1<<2) /* BOD Operation in Active Mode bit 0 mask. */ +#define NVM_FUSES_BODACT0_bp 2 /* BOD Operation in Active Mode bit 0 position. */ +#define NVM_FUSES_BODACT1_bm (1<<3) /* BOD Operation in Active Mode bit 1 mask. */ +#define NVM_FUSES_BODACT1_bp 3 /* BOD Operation in Active Mode bit 1 position. */ + +#define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ +#define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ +#define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ +#define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ +#define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ +#define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ +#define NVM_FUSES_SUT_gm 0x0C /* Start-up Time group mask. */ +#define NVM_FUSES_SUT_gp 2 /* Start-up Time group position. */ +#define NVM_FUSES_SUT0_bm (1<<2) /* Start-up Time bit 0 mask. */ +#define NVM_FUSES_SUT0_bp 2 /* Start-up Time bit 0 position. */ +#define NVM_FUSES_SUT1_bm (1<<3) /* Start-up Time bit 1 mask. */ +#define NVM_FUSES_SUT1_bp 3 /* Start-up Time bit 1 position. */ + +#define NVM_FUSES_WDLOCK_bm 0x02 /* Watchdog Timer Lock bit mask. */ +#define NVM_FUSES_WDLOCK_bp 1 /* Watchdog Timer Lock bit position. */ + +#define NVM_FUSES_JTAGEN_bm 0x01 /* JTAG Interface Enable bit mask. */ +#define NVM_FUSES_JTAGEN_bp 0 /* JTAG Interface Enable bit position. */ + + +/* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ +#define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ +#define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ + +#define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ +#define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ +#define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ +#define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ +#define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ +#define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ +#define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ +#define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ + + +/* AC - Analog Comparator */ +/* AC.AC0CTRL bit masks and bit positions */ +#define AC_INTMODE_gm 0xC0 /* Interrupt Mode group mask. */ +#define AC_INTMODE_gp 6 /* Interrupt Mode group position. */ +#define AC_INTMODE0_bm (1<<6) /* Interrupt Mode bit 0 mask. */ +#define AC_INTMODE0_bp 6 /* Interrupt Mode bit 0 position. */ +#define AC_INTMODE1_bm (1<<7) /* Interrupt Mode bit 1 mask. */ +#define AC_INTMODE1_bp 7 /* Interrupt Mode bit 1 position. */ + +#define AC_INTLVL_gm 0x30 /* Interrupt Level group mask. */ +#define AC_INTLVL_gp 4 /* Interrupt Level group position. */ +#define AC_INTLVL0_bm (1<<4) /* Interrupt Level bit 0 mask. */ +#define AC_INTLVL0_bp 4 /* Interrupt Level bit 0 position. */ +#define AC_INTLVL1_bm (1<<5) /* Interrupt Level bit 1 mask. */ +#define AC_INTLVL1_bp 5 /* Interrupt Level bit 1 position. */ + +#define AC_HSMODE_bm 0x08 /* High-speed Mode bit mask. */ +#define AC_HSMODE_bp 3 /* High-speed Mode bit position. */ + +#define AC_HYSMODE_gm 0x06 /* Hysteresis Mode group mask. */ +#define AC_HYSMODE_gp 1 /* Hysteresis Mode group position. */ +#define AC_HYSMODE0_bm (1<<1) /* Hysteresis Mode bit 0 mask. */ +#define AC_HYSMODE0_bp 1 /* Hysteresis Mode bit 0 position. */ +#define AC_HYSMODE1_bm (1<<2) /* Hysteresis Mode bit 1 mask. */ +#define AC_HYSMODE1_bp 2 /* Hysteresis Mode bit 1 position. */ + +#define AC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define AC_ENABLE_bp 0 /* Enable bit position. */ + + +/* AC.AC1CTRL bit masks and bit positions */ +/* AC_INTMODE_gm Predefined. */ +/* AC_INTMODE_gp Predefined. */ +/* AC_INTMODE0_bm Predefined. */ +/* AC_INTMODE0_bp Predefined. */ +/* AC_INTMODE1_bm Predefined. */ +/* AC_INTMODE1_bp Predefined. */ + +/* AC_INTLVL_gm Predefined. */ +/* AC_INTLVL_gp Predefined. */ +/* AC_INTLVL0_bm Predefined. */ +/* AC_INTLVL0_bp Predefined. */ +/* AC_INTLVL1_bm Predefined. */ +/* AC_INTLVL1_bp Predefined. */ + +/* AC_HSMODE_bm Predefined. */ +/* AC_HSMODE_bp Predefined. */ + +/* AC_HYSMODE_gm Predefined. */ +/* AC_HYSMODE_gp Predefined. */ +/* AC_HYSMODE0_bm Predefined. */ +/* AC_HYSMODE0_bp Predefined. */ +/* AC_HYSMODE1_bm Predefined. */ +/* AC_HYSMODE1_bp Predefined. */ + +/* AC_ENABLE_bm Predefined. */ +/* AC_ENABLE_bp Predefined. */ + + +/* AC.AC0MUXCTRL bit masks and bit positions */ +#define AC_MUXPOS_gm 0x38 /* MUX Positive Input group mask. */ +#define AC_MUXPOS_gp 3 /* MUX Positive Input group position. */ +#define AC_MUXPOS0_bm (1<<3) /* MUX Positive Input bit 0 mask. */ +#define AC_MUXPOS0_bp 3 /* MUX Positive Input bit 0 position. */ +#define AC_MUXPOS1_bm (1<<4) /* MUX Positive Input bit 1 mask. */ +#define AC_MUXPOS1_bp 4 /* MUX Positive Input bit 1 position. */ +#define AC_MUXPOS2_bm (1<<5) /* MUX Positive Input bit 2 mask. */ +#define AC_MUXPOS2_bp 5 /* MUX Positive Input bit 2 position. */ + +#define AC_MUXNEG_gm 0x07 /* MUX Negative Input group mask. */ +#define AC_MUXNEG_gp 0 /* MUX Negative Input group position. */ +#define AC_MUXNEG0_bm (1<<0) /* MUX Negative Input bit 0 mask. */ +#define AC_MUXNEG0_bp 0 /* MUX Negative Input bit 0 position. */ +#define AC_MUXNEG1_bm (1<<1) /* MUX Negative Input bit 1 mask. */ +#define AC_MUXNEG1_bp 1 /* MUX Negative Input bit 1 position. */ +#define AC_MUXNEG2_bm (1<<2) /* MUX Negative Input bit 2 mask. */ +#define AC_MUXNEG2_bp 2 /* MUX Negative Input bit 2 position. */ + + +/* AC.AC1MUXCTRL bit masks and bit positions */ +/* AC_MUXPOS_gm Predefined. */ +/* AC_MUXPOS_gp Predefined. */ +/* AC_MUXPOS0_bm Predefined. */ +/* AC_MUXPOS0_bp Predefined. */ +/* AC_MUXPOS1_bm Predefined. */ +/* AC_MUXPOS1_bp Predefined. */ +/* AC_MUXPOS2_bm Predefined. */ +/* AC_MUXPOS2_bp Predefined. */ + +/* AC_MUXNEG_gm Predefined. */ +/* AC_MUXNEG_gp Predefined. */ +/* AC_MUXNEG0_bm Predefined. */ +/* AC_MUXNEG0_bp Predefined. */ +/* AC_MUXNEG1_bm Predefined. */ +/* AC_MUXNEG1_bp Predefined. */ +/* AC_MUXNEG2_bm Predefined. */ +/* AC_MUXNEG2_bp Predefined. */ + + +/* AC.CTRLA bit masks and bit positions */ +#define AC_AC0OUT_bm 0x01 /* Comparator 0 Output Enable bit mask. */ +#define AC_AC0OUT_bp 0 /* Comparator 0 Output Enable bit position. */ + + +/* AC.CTRLB bit masks and bit positions */ +#define AC_SCALEFAC_gm 0x3F /* VCC Voltage Scaler Factor group mask. */ +#define AC_SCALEFAC_gp 0 /* VCC Voltage Scaler Factor group position. */ +#define AC_SCALEFAC0_bm (1<<0) /* VCC Voltage Scaler Factor bit 0 mask. */ +#define AC_SCALEFAC0_bp 0 /* VCC Voltage Scaler Factor bit 0 position. */ +#define AC_SCALEFAC1_bm (1<<1) /* VCC Voltage Scaler Factor bit 1 mask. */ +#define AC_SCALEFAC1_bp 1 /* VCC Voltage Scaler Factor bit 1 position. */ +#define AC_SCALEFAC2_bm (1<<2) /* VCC Voltage Scaler Factor bit 2 mask. */ +#define AC_SCALEFAC2_bp 2 /* VCC Voltage Scaler Factor bit 2 position. */ +#define AC_SCALEFAC3_bm (1<<3) /* VCC Voltage Scaler Factor bit 3 mask. */ +#define AC_SCALEFAC3_bp 3 /* VCC Voltage Scaler Factor bit 3 position. */ +#define AC_SCALEFAC4_bm (1<<4) /* VCC Voltage Scaler Factor bit 4 mask. */ +#define AC_SCALEFAC4_bp 4 /* VCC Voltage Scaler Factor bit 4 position. */ +#define AC_SCALEFAC5_bm (1<<5) /* VCC Voltage Scaler Factor bit 5 mask. */ +#define AC_SCALEFAC5_bp 5 /* VCC Voltage Scaler Factor bit 5 position. */ + + +/* AC.WINCTRL bit masks and bit positions */ +#define AC_WEN_bm 0x10 /* Window Mode Enable bit mask. */ +#define AC_WEN_bp 4 /* Window Mode Enable bit position. */ + +#define AC_WINTMODE_gm 0x0C /* Window Interrupt Mode group mask. */ +#define AC_WINTMODE_gp 2 /* Window Interrupt Mode group position. */ +#define AC_WINTMODE0_bm (1<<2) /* Window Interrupt Mode bit 0 mask. */ +#define AC_WINTMODE0_bp 2 /* Window Interrupt Mode bit 0 position. */ +#define AC_WINTMODE1_bm (1<<3) /* Window Interrupt Mode bit 1 mask. */ +#define AC_WINTMODE1_bp 3 /* Window Interrupt Mode bit 1 position. */ + +#define AC_WINTLVL_gm 0x03 /* Window Interrupt Level group mask. */ +#define AC_WINTLVL_gp 0 /* Window Interrupt Level group position. */ +#define AC_WINTLVL0_bm (1<<0) /* Window Interrupt Level bit 0 mask. */ +#define AC_WINTLVL0_bp 0 /* Window Interrupt Level bit 0 position. */ +#define AC_WINTLVL1_bm (1<<1) /* Window Interrupt Level bit 1 mask. */ +#define AC_WINTLVL1_bp 1 /* Window Interrupt Level bit 1 position. */ + + +/* AC.STATUS bit masks and bit positions */ +#define AC_WSTATE_gm 0xC0 /* Window Mode State group mask. */ +#define AC_WSTATE_gp 6 /* Window Mode State group position. */ +#define AC_WSTATE0_bm (1<<6) /* Window Mode State bit 0 mask. */ +#define AC_WSTATE0_bp 6 /* Window Mode State bit 0 position. */ +#define AC_WSTATE1_bm (1<<7) /* Window Mode State bit 1 mask. */ +#define AC_WSTATE1_bp 7 /* Window Mode State bit 1 position. */ + +#define AC_AC1STATE_bm 0x20 /* Comparator 1 State bit mask. */ +#define AC_AC1STATE_bp 5 /* Comparator 1 State bit position. */ + +#define AC_AC0STATE_bm 0x10 /* Comparator 0 State bit mask. */ +#define AC_AC0STATE_bp 4 /* Comparator 0 State bit position. */ + +#define AC_WIF_bm 0x04 /* Window Mode Interrupt Flag bit mask. */ +#define AC_WIF_bp 2 /* Window Mode Interrupt Flag bit position. */ + +#define AC_AC1IF_bm 0x02 /* Comparator 1 Interrupt Flag bit mask. */ +#define AC_AC1IF_bp 1 /* Comparator 1 Interrupt Flag bit position. */ + +#define AC_AC0IF_bm 0x01 /* Comparator 0 Interrupt Flag bit mask. */ +#define AC_AC0IF_bp 0 /* Comparator 0 Interrupt Flag bit position. */ + + +/* ADC - Analog/Digital Converter */ +/* ADC_CH.CTRL bit masks and bit positions */ +#define ADC_CH_START_bm 0x80 /* Channel Start Conversion bit mask. */ +#define ADC_CH_START_bp 7 /* Channel Start Conversion bit position. */ + +#define ADC_CH_GAINFAC_gm 0x1C /* Gain Factor group mask. */ +#define ADC_CH_GAINFAC_gp 2 /* Gain Factor group position. */ +#define ADC_CH_GAINFAC0_bm (1<<2) /* Gain Factor bit 0 mask. */ +#define ADC_CH_GAINFAC0_bp 2 /* Gain Factor bit 0 position. */ +#define ADC_CH_GAINFAC1_bm (1<<3) /* Gain Factor bit 1 mask. */ +#define ADC_CH_GAINFAC1_bp 3 /* Gain Factor bit 1 position. */ +#define ADC_CH_GAINFAC2_bm (1<<4) /* Gain Factor bit 2 mask. */ +#define ADC_CH_GAINFAC2_bp 4 /* Gain Factor bit 2 position. */ + +#define ADC_CH_INPUTMODE_gm 0x03 /* Input Mode Select group mask. */ +#define ADC_CH_INPUTMODE_gp 0 /* Input Mode Select group position. */ +#define ADC_CH_INPUTMODE0_bm (1<<0) /* Input Mode Select bit 0 mask. */ +#define ADC_CH_INPUTMODE0_bp 0 /* Input Mode Select bit 0 position. */ +#define ADC_CH_INPUTMODE1_bm (1<<1) /* Input Mode Select bit 1 mask. */ +#define ADC_CH_INPUTMODE1_bp 1 /* Input Mode Select bit 1 position. */ + + +/* ADC_CH.MUXCTRL bit masks and bit positions */ +#define ADC_CH_MUXPOS_gm 0x78 /* Positive Input Select group mask. */ +#define ADC_CH_MUXPOS_gp 3 /* Positive Input Select group position. */ +#define ADC_CH_MUXPOS0_bm (1<<3) /* Positive Input Select bit 0 mask. */ +#define ADC_CH_MUXPOS0_bp 3 /* Positive Input Select bit 0 position. */ +#define ADC_CH_MUXPOS1_bm (1<<4) /* Positive Input Select bit 1 mask. */ +#define ADC_CH_MUXPOS1_bp 4 /* Positive Input Select bit 1 position. */ +#define ADC_CH_MUXPOS2_bm (1<<5) /* Positive Input Select bit 2 mask. */ +#define ADC_CH_MUXPOS2_bp 5 /* Positive Input Select bit 2 position. */ +#define ADC_CH_MUXPOS3_bm (1<<6) /* Positive Input Select bit 3 mask. */ +#define ADC_CH_MUXPOS3_bp 6 /* Positive Input Select bit 3 position. */ + +#define ADC_CH_MUXINT_gm 0x78 /* Internal Input Select group mask. */ +#define ADC_CH_MUXINT_gp 3 /* Internal Input Select group position. */ +#define ADC_CH_MUXINT0_bm (1<<3) /* Internal Input Select bit 0 mask. */ +#define ADC_CH_MUXINT0_bp 3 /* Internal Input Select bit 0 position. */ +#define ADC_CH_MUXINT1_bm (1<<4) /* Internal Input Select bit 1 mask. */ +#define ADC_CH_MUXINT1_bp 4 /* Internal Input Select bit 1 position. */ +#define ADC_CH_MUXINT2_bm (1<<5) /* Internal Input Select bit 2 mask. */ +#define ADC_CH_MUXINT2_bp 5 /* Internal Input Select bit 2 position. */ +#define ADC_CH_MUXINT3_bm (1<<6) /* Internal Input Select bit 3 mask. */ +#define ADC_CH_MUXINT3_bp 6 /* Internal Input Select bit 3 position. */ + +#define ADC_CH_MUXNEG_gm 0x03 /* Negative Input Select group mask. */ +#define ADC_CH_MUXNEG_gp 0 /* Negative Input Select group position. */ +#define ADC_CH_MUXNEG0_bm (1<<0) /* Negative Input Select bit 0 mask. */ +#define ADC_CH_MUXNEG0_bp 0 /* Negative Input Select bit 0 position. */ +#define ADC_CH_MUXNEG1_bm (1<<1) /* Negative Input Select bit 1 mask. */ +#define ADC_CH_MUXNEG1_bp 1 /* Negative Input Select bit 1 position. */ + + +/* ADC_CH.INTCTRL bit masks and bit positions */ +#define ADC_CH_INTMODE_gm 0x0C /* Interrupt Mode group mask. */ +#define ADC_CH_INTMODE_gp 2 /* Interrupt Mode group position. */ +#define ADC_CH_INTMODE0_bm (1<<2) /* Interrupt Mode bit 0 mask. */ +#define ADC_CH_INTMODE0_bp 2 /* Interrupt Mode bit 0 position. */ +#define ADC_CH_INTMODE1_bm (1<<3) /* Interrupt Mode bit 1 mask. */ +#define ADC_CH_INTMODE1_bp 3 /* Interrupt Mode bit 1 position. */ + +#define ADC_CH_INTLVL_gm 0x03 /* Interrupt Level group mask. */ +#define ADC_CH_INTLVL_gp 0 /* Interrupt Level group position. */ +#define ADC_CH_INTLVL0_bm (1<<0) /* Interrupt Level bit 0 mask. */ +#define ADC_CH_INTLVL0_bp 0 /* Interrupt Level bit 0 position. */ +#define ADC_CH_INTLVL1_bm (1<<1) /* Interrupt Level bit 1 mask. */ +#define ADC_CH_INTLVL1_bp 1 /* Interrupt Level bit 1 position. */ + + +/* ADC_CH.INTFLAGS bit masks and bit positions */ +#define ADC_CH_CHIF_bm 0x01 /* Channel Interrupt Flag bit mask. */ +#define ADC_CH_CHIF_bp 0 /* Channel Interrupt Flag bit position. */ + + +/* ADC.CTRLA bit masks and bit positions */ +#define ADC_DMASEL_gm 0xE0 /* DMA Selection group mask. */ +#define ADC_DMASEL_gp 5 /* DMA Selection group position. */ +#define ADC_DMASEL0_bm (1<<5) /* DMA Selection bit 0 mask. */ +#define ADC_DMASEL0_bp 5 /* DMA Selection bit 0 position. */ +#define ADC_DMASEL1_bm (1<<6) /* DMA Selection bit 1 mask. */ +#define ADC_DMASEL1_bp 6 /* DMA Selection bit 1 position. */ +#define ADC_DMASEL2_bm (1<<7) /* DMA Selection bit 2 mask. */ +#define ADC_DMASEL2_bp 7 /* DMA Selection bit 2 position. */ + +#define ADC_CH3START_bm 0x20 /* Channel 3 Start Conversion bit mask. */ +#define ADC_CH3START_bp 5 /* Channel 3 Start Conversion bit position. */ + +#define ADC_CH2START_bm 0x10 /* Channel 2 Start Conversion bit mask. */ +#define ADC_CH2START_bp 4 /* Channel 2 Start Conversion bit position. */ + +#define ADC_CH1START_bm 0x08 /* Channel 1 Start Conversion bit mask. */ +#define ADC_CH1START_bp 3 /* Channel 1 Start Conversion bit position. */ + +#define ADC_CH0START_bm 0x04 /* Channel 0 Start Conversion bit mask. */ +#define ADC_CH0START_bp 2 /* Channel 0 Start Conversion bit position. */ + +#define ADC_FLUSH_bm 0x02 /* Flush Pipeline bit mask. */ +#define ADC_FLUSH_bp 1 /* Flush Pipeline bit position. */ + +#define ADC_ENABLE_bm 0x01 /* Enable ADC bit mask. */ +#define ADC_ENABLE_bp 0 /* Enable ADC bit position. */ + + +/* ADC.CTRLB bit masks and bit positions */ +#define ADC_CONMODE_bm 0x10 /* Conversion Mode bit mask. */ +#define ADC_CONMODE_bp 4 /* Conversion Mode bit position. */ + +#define ADC_FREERUN_bm 0x08 /* Free Running Mode Enable bit mask. */ +#define ADC_FREERUN_bp 3 /* Free Running Mode Enable bit position. */ + +#define ADC_RESOLUTION_gm 0x06 /* Result Resolution group mask. */ +#define ADC_RESOLUTION_gp 1 /* Result Resolution group position. */ +#define ADC_RESOLUTION0_bm (1<<1) /* Result Resolution bit 0 mask. */ +#define ADC_RESOLUTION0_bp 1 /* Result Resolution bit 0 position. */ +#define ADC_RESOLUTION1_bm (1<<2) /* Result Resolution bit 1 mask. */ +#define ADC_RESOLUTION1_bp 2 /* Result Resolution bit 1 position. */ + + +/* ADC.REFCTRL bit masks and bit positions */ +#define ADC_REFSEL_gm 0x30 /* Reference Selection group mask. */ +#define ADC_REFSEL_gp 4 /* Reference Selection group position. */ +#define ADC_REFSEL0_bm (1<<4) /* Reference Selection bit 0 mask. */ +#define ADC_REFSEL0_bp 4 /* Reference Selection bit 0 position. */ +#define ADC_REFSEL1_bm (1<<5) /* Reference Selection bit 1 mask. */ +#define ADC_REFSEL1_bp 5 /* Reference Selection bit 1 position. */ + +#define ADC_BANDGAP_bm 0x02 /* Bandgap enable bit mask. */ +#define ADC_BANDGAP_bp 1 /* Bandgap enable bit position. */ + +#define ADC_TEMPREF_bm 0x01 /* Temperature Reference Enable bit mask. */ +#define ADC_TEMPREF_bp 0 /* Temperature Reference Enable bit position. */ + + +/* ADC.EVCTRL bit masks and bit positions */ +#define ADC_SWEEP_gm 0xC0 /* Channel Sweep Selection group mask. */ +#define ADC_SWEEP_gp 6 /* Channel Sweep Selection group position. */ +#define ADC_SWEEP0_bm (1<<6) /* Channel Sweep Selection bit 0 mask. */ +#define ADC_SWEEP0_bp 6 /* Channel Sweep Selection bit 0 position. */ +#define ADC_SWEEP1_bm (1<<7) /* Channel Sweep Selection bit 1 mask. */ +#define ADC_SWEEP1_bp 7 /* Channel Sweep Selection bit 1 position. */ + +#define ADC_EVSEL_gm 0x38 /* Event Input Select group mask. */ +#define ADC_EVSEL_gp 3 /* Event Input Select group position. */ +#define ADC_EVSEL0_bm (1<<3) /* Event Input Select bit 0 mask. */ +#define ADC_EVSEL0_bp 3 /* Event Input Select bit 0 position. */ +#define ADC_EVSEL1_bm (1<<4) /* Event Input Select bit 1 mask. */ +#define ADC_EVSEL1_bp 4 /* Event Input Select bit 1 position. */ +#define ADC_EVSEL2_bm (1<<5) /* Event Input Select bit 2 mask. */ +#define ADC_EVSEL2_bp 5 /* Event Input Select bit 2 position. */ + +#define ADC_EVACT_gm 0x07 /* Event Action Select group mask. */ +#define ADC_EVACT_gp 0 /* Event Action Select group position. */ +#define ADC_EVACT0_bm (1<<0) /* Event Action Select bit 0 mask. */ +#define ADC_EVACT0_bp 0 /* Event Action Select bit 0 position. */ +#define ADC_EVACT1_bm (1<<1) /* Event Action Select bit 1 mask. */ +#define ADC_EVACT1_bp 1 /* Event Action Select bit 1 position. */ +#define ADC_EVACT2_bm (1<<2) /* Event Action Select bit 2 mask. */ +#define ADC_EVACT2_bp 2 /* Event Action Select bit 2 position. */ + + +/* ADC.PRESCALER bit masks and bit positions */ +#define ADC_PRESCALER_gm 0x07 /* Clock Prescaler Selection group mask. */ +#define ADC_PRESCALER_gp 0 /* Clock Prescaler Selection group position. */ +#define ADC_PRESCALER0_bm (1<<0) /* Clock Prescaler Selection bit 0 mask. */ +#define ADC_PRESCALER0_bp 0 /* Clock Prescaler Selection bit 0 position. */ +#define ADC_PRESCALER1_bm (1<<1) /* Clock Prescaler Selection bit 1 mask. */ +#define ADC_PRESCALER1_bp 1 /* Clock Prescaler Selection bit 1 position. */ +#define ADC_PRESCALER2_bm (1<<2) /* Clock Prescaler Selection bit 2 mask. */ +#define ADC_PRESCALER2_bp 2 /* Clock Prescaler Selection bit 2 position. */ + + +/* ADC.CALCTRL bit masks and bit positions */ +#define ADC_CAL_bm 0x01 /* ADC Calibration Start bit mask. */ +#define ADC_CAL_bp 0 /* ADC Calibration Start bit position. */ + + +/* ADC.INTFLAGS bit masks and bit positions */ +#define ADC_CH3IF_bm 0x08 /* Channel 3 Interrupt Flag bit mask. */ +#define ADC_CH3IF_bp 3 /* Channel 3 Interrupt Flag bit position. */ + +#define ADC_CH2IF_bm 0x04 /* Channel 2 Interrupt Flag bit mask. */ +#define ADC_CH2IF_bp 2 /* Channel 2 Interrupt Flag bit position. */ + +#define ADC_CH1IF_bm 0x02 /* Channel 1 Interrupt Flag bit mask. */ +#define ADC_CH1IF_bp 1 /* Channel 1 Interrupt Flag bit position. */ + +#define ADC_CH0IF_bm 0x01 /* Channel 0 Interrupt Flag bit mask. */ +#define ADC_CH0IF_bp 0 /* Channel 0 Interrupt Flag bit position. */ + + +/* DAC - Digital/Analog Converter */ +/* DAC.CTRLA bit masks and bit positions */ +#define DAC_IDOEN_bm 0x10 /* Internal Output Enable bit mask. */ +#define DAC_IDOEN_bp 4 /* Internal Output Enable bit position. */ + +#define DAC_CH1EN_bm 0x08 /* Channel 1 Output Enable bit mask. */ +#define DAC_CH1EN_bp 3 /* Channel 1 Output Enable bit position. */ + +#define DAC_CH0EN_bm 0x04 /* Channel 0 Output Enable bit mask. */ +#define DAC_CH0EN_bp 2 /* Channel 0 Output Enable bit position. */ + +#define DAC_LPMODE_bm 0x02 /* Low Power Mode bit mask. */ +#define DAC_LPMODE_bp 1 /* Low Power Mode bit position. */ + +#define DAC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define DAC_ENABLE_bp 0 /* Enable bit position. */ + + +/* DAC.CTRLB bit masks and bit positions */ +#define DAC_CHSEL_gm 0x60 /* Channel Select group mask. */ +#define DAC_CHSEL_gp 5 /* Channel Select group position. */ +#define DAC_CHSEL0_bm (1<<5) /* Channel Select bit 0 mask. */ +#define DAC_CHSEL0_bp 5 /* Channel Select bit 0 position. */ +#define DAC_CHSEL1_bm (1<<6) /* Channel Select bit 1 mask. */ +#define DAC_CHSEL1_bp 6 /* Channel Select bit 1 position. */ + +#define DAC_CH1TRIG_bm 0x02 /* Channel 1 Event Trig Enable bit mask. */ +#define DAC_CH1TRIG_bp 1 /* Channel 1 Event Trig Enable bit position. */ + +#define DAC_CH0TRIG_bm 0x01 /* Channel 0 Event Trig Enable bit mask. */ +#define DAC_CH0TRIG_bp 0 /* Channel 0 Event Trig Enable bit position. */ + + +/* DAC.CTRLC bit masks and bit positions */ +#define DAC_REFSEL_gm 0x18 /* Reference Select group mask. */ +#define DAC_REFSEL_gp 3 /* Reference Select group position. */ +#define DAC_REFSEL0_bm (1<<3) /* Reference Select bit 0 mask. */ +#define DAC_REFSEL0_bp 3 /* Reference Select bit 0 position. */ +#define DAC_REFSEL1_bm (1<<4) /* Reference Select bit 1 mask. */ +#define DAC_REFSEL1_bp 4 /* Reference Select bit 1 position. */ + +#define DAC_LEFTADJ_bm 0x01 /* Left-adjust Result bit mask. */ +#define DAC_LEFTADJ_bp 0 /* Left-adjust Result bit position. */ + + +/* DAC.EVCTRL bit masks and bit positions */ +#define DAC_EVSEL_gm 0x07 /* Event Input Selection group mask. */ +#define DAC_EVSEL_gp 0 /* Event Input Selection group position. */ +#define DAC_EVSEL0_bm (1<<0) /* Event Input Selection bit 0 mask. */ +#define DAC_EVSEL0_bp 0 /* Event Input Selection bit 0 position. */ +#define DAC_EVSEL1_bm (1<<1) /* Event Input Selection bit 1 mask. */ +#define DAC_EVSEL1_bp 1 /* Event Input Selection bit 1 position. */ +#define DAC_EVSEL2_bm (1<<2) /* Event Input Selection bit 2 mask. */ +#define DAC_EVSEL2_bp 2 /* Event Input Selection bit 2 position. */ + + +/* DAC.TIMCTRL bit masks and bit positions */ +#define DAC_CONINTVAL_gm 0x70 /* Conversion Intercal group mask. */ +#define DAC_CONINTVAL_gp 4 /* Conversion Intercal group position. */ +#define DAC_CONINTVAL0_bm (1<<4) /* Conversion Intercal bit 0 mask. */ +#define DAC_CONINTVAL0_bp 4 /* Conversion Intercal bit 0 position. */ +#define DAC_CONINTVAL1_bm (1<<5) /* Conversion Intercal bit 1 mask. */ +#define DAC_CONINTVAL1_bp 5 /* Conversion Intercal bit 1 position. */ +#define DAC_CONINTVAL2_bm (1<<6) /* Conversion Intercal bit 2 mask. */ +#define DAC_CONINTVAL2_bp 6 /* Conversion Intercal bit 2 position. */ + +#define DAC_REFRESH_gm 0x0F /* Refresh Timing Control group mask. */ +#define DAC_REFRESH_gp 0 /* Refresh Timing Control group position. */ +#define DAC_REFRESH0_bm (1<<0) /* Refresh Timing Control bit 0 mask. */ +#define DAC_REFRESH0_bp 0 /* Refresh Timing Control bit 0 position. */ +#define DAC_REFRESH1_bm (1<<1) /* Refresh Timing Control bit 1 mask. */ +#define DAC_REFRESH1_bp 1 /* Refresh Timing Control bit 1 position. */ +#define DAC_REFRESH2_bm (1<<2) /* Refresh Timing Control bit 2 mask. */ +#define DAC_REFRESH2_bp 2 /* Refresh Timing Control bit 2 position. */ +#define DAC_REFRESH3_bm (1<<3) /* Refresh Timing Control bit 3 mask. */ +#define DAC_REFRESH3_bp 3 /* Refresh Timing Control bit 3 position. */ + + +/* DAC.STATUS bit masks and bit positions */ +#define DAC_CH1DRE_bm 0x02 /* Channel 1 Data Register Empty bit mask. */ +#define DAC_CH1DRE_bp 1 /* Channel 1 Data Register Empty bit position. */ + +#define DAC_CH0DRE_bm 0x01 /* Channel 0 Data Register Empty bit mask. */ +#define DAC_CH0DRE_bp 0 /* Channel 0 Data Register Empty bit position. */ + + +/* RTC - Real-Time Clounter */ +/* RTC.CTRL bit masks and bit positions */ +#define RTC_PRESCALER_gm 0x07 /* Prescaling Factor group mask. */ +#define RTC_PRESCALER_gp 0 /* Prescaling Factor group position. */ +#define RTC_PRESCALER0_bm (1<<0) /* Prescaling Factor bit 0 mask. */ +#define RTC_PRESCALER0_bp 0 /* Prescaling Factor bit 0 position. */ +#define RTC_PRESCALER1_bm (1<<1) /* Prescaling Factor bit 1 mask. */ +#define RTC_PRESCALER1_bp 1 /* Prescaling Factor bit 1 position. */ +#define RTC_PRESCALER2_bm (1<<2) /* Prescaling Factor bit 2 mask. */ +#define RTC_PRESCALER2_bp 2 /* Prescaling Factor bit 2 position. */ + + +/* RTC.STATUS bit masks and bit positions */ +#define RTC_SYNCBUSY_bm 0x01 /* Synchronization Busy Flag bit mask. */ +#define RTC_SYNCBUSY_bp 0 /* Synchronization Busy Flag bit position. */ + + +/* RTC.INTCTRL bit masks and bit positions */ +#define RTC_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ +#define RTC_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ +#define RTC_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ +#define RTC_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ +#define RTC_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ +#define RTC_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ + +#define RTC_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ +#define RTC_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ +#define RTC_OVFINTLVL0_bm (1<<0) /* Overflow Interrupt Level bit 0 mask. */ +#define RTC_OVFINTLVL0_bp 0 /* Overflow Interrupt Level bit 0 position. */ +#define RTC_OVFINTLVL1_bm (1<<1) /* Overflow Interrupt Level bit 1 mask. */ +#define RTC_OVFINTLVL1_bp 1 /* Overflow Interrupt Level bit 1 position. */ + + +/* RTC.INTFLAGS bit masks and bit positions */ +#define RTC_COMPIF_bm 0x02 /* Compare Match Interrupt Flag bit mask. */ +#define RTC_COMPIF_bp 1 /* Compare Match Interrupt Flag bit position. */ + +#define RTC_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define RTC_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* EBI - External Bus Interface */ +/* EBI_CS.CTRLA bit masks and bit positions */ +#define EBI_CS_ASPACE_gm 0x7C /* Address Space group mask. */ +#define EBI_CS_ASPACE_gp 2 /* Address Space group position. */ +#define EBI_CS_ASPACE0_bm (1<<2) /* Address Space bit 0 mask. */ +#define EBI_CS_ASPACE0_bp 2 /* Address Space bit 0 position. */ +#define EBI_CS_ASPACE1_bm (1<<3) /* Address Space bit 1 mask. */ +#define EBI_CS_ASPACE1_bp 3 /* Address Space bit 1 position. */ +#define EBI_CS_ASPACE2_bm (1<<4) /* Address Space bit 2 mask. */ +#define EBI_CS_ASPACE2_bp 4 /* Address Space bit 2 position. */ +#define EBI_CS_ASPACE3_bm (1<<5) /* Address Space bit 3 mask. */ +#define EBI_CS_ASPACE3_bp 5 /* Address Space bit 3 position. */ +#define EBI_CS_ASPACE4_bm (1<<6) /* Address Space bit 4 mask. */ +#define EBI_CS_ASPACE4_bp 6 /* Address Space bit 4 position. */ + +#define EBI_CS_MODE_gm 0x03 /* Memory Mode group mask. */ +#define EBI_CS_MODE_gp 0 /* Memory Mode group position. */ +#define EBI_CS_MODE0_bm (1<<0) /* Memory Mode bit 0 mask. */ +#define EBI_CS_MODE0_bp 0 /* Memory Mode bit 0 position. */ +#define EBI_CS_MODE1_bm (1<<1) /* Memory Mode bit 1 mask. */ +#define EBI_CS_MODE1_bp 1 /* Memory Mode bit 1 position. */ + + +/* EBI_CS.CTRLB bit masks and bit positions */ +#define EBI_CS_SRWS_gm 0x07 /* SRAM Wait State Cycles group mask. */ +#define EBI_CS_SRWS_gp 0 /* SRAM Wait State Cycles group position. */ +#define EBI_CS_SRWS0_bm (1<<0) /* SRAM Wait State Cycles bit 0 mask. */ +#define EBI_CS_SRWS0_bp 0 /* SRAM Wait State Cycles bit 0 position. */ +#define EBI_CS_SRWS1_bm (1<<1) /* SRAM Wait State Cycles bit 1 mask. */ +#define EBI_CS_SRWS1_bp 1 /* SRAM Wait State Cycles bit 1 position. */ +#define EBI_CS_SRWS2_bm (1<<2) /* SRAM Wait State Cycles bit 2 mask. */ +#define EBI_CS_SRWS2_bp 2 /* SRAM Wait State Cycles bit 2 position. */ + +#define EBI_CS_SDINITDONE_bm 0x80 /* SDRAM Initialization Done bit mask. */ +#define EBI_CS_SDINITDONE_bp 7 /* SDRAM Initialization Done bit position. */ + +#define EBI_CS_SDSREN_bm 0x04 /* SDRAM Self-refresh Enable bit mask. */ +#define EBI_CS_SDSREN_bp 2 /* SDRAM Self-refresh Enable bit position. */ + +#define EBI_CS_SDMODE_gm 0x03 /* SDRAM Mode group mask. */ +#define EBI_CS_SDMODE_gp 0 /* SDRAM Mode group position. */ +#define EBI_CS_SDMODE0_bm (1<<0) /* SDRAM Mode bit 0 mask. */ +#define EBI_CS_SDMODE0_bp 0 /* SDRAM Mode bit 0 position. */ +#define EBI_CS_SDMODE1_bm (1<<1) /* SDRAM Mode bit 1 mask. */ +#define EBI_CS_SDMODE1_bp 1 /* SDRAM Mode bit 1 position. */ + + +/* EBI.CTRL bit masks and bit positions */ +#define EBI_SDDATAW_gm 0xC0 /* SDRAM Data Width Setting group mask. */ +#define EBI_SDDATAW_gp 6 /* SDRAM Data Width Setting group position. */ +#define EBI_SDDATAW0_bm (1<<6) /* SDRAM Data Width Setting bit 0 mask. */ +#define EBI_SDDATAW0_bp 6 /* SDRAM Data Width Setting bit 0 position. */ +#define EBI_SDDATAW1_bm (1<<7) /* SDRAM Data Width Setting bit 1 mask. */ +#define EBI_SDDATAW1_bp 7 /* SDRAM Data Width Setting bit 1 position. */ + +#define EBI_LPCMODE_gm 0x30 /* SRAM LPC Mode group mask. */ +#define EBI_LPCMODE_gp 4 /* SRAM LPC Mode group position. */ +#define EBI_LPCMODE0_bm (1<<4) /* SRAM LPC Mode bit 0 mask. */ +#define EBI_LPCMODE0_bp 4 /* SRAM LPC Mode bit 0 position. */ +#define EBI_LPCMODE1_bm (1<<5) /* SRAM LPC Mode bit 1 mask. */ +#define EBI_LPCMODE1_bp 5 /* SRAM LPC Mode bit 1 position. */ + +#define EBI_SRMODE_gm 0x0C /* SRAM Mode group mask. */ +#define EBI_SRMODE_gp 2 /* SRAM Mode group position. */ +#define EBI_SRMODE0_bm (1<<2) /* SRAM Mode bit 0 mask. */ +#define EBI_SRMODE0_bp 2 /* SRAM Mode bit 0 position. */ +#define EBI_SRMODE1_bm (1<<3) /* SRAM Mode bit 1 mask. */ +#define EBI_SRMODE1_bp 3 /* SRAM Mode bit 1 position. */ + +#define EBI_IFMODE_gm 0x03 /* Interface Mode group mask. */ +#define EBI_IFMODE_gp 0 /* Interface Mode group position. */ +#define EBI_IFMODE0_bm (1<<0) /* Interface Mode bit 0 mask. */ +#define EBI_IFMODE0_bp 0 /* Interface Mode bit 0 position. */ +#define EBI_IFMODE1_bm (1<<1) /* Interface Mode bit 1 mask. */ +#define EBI_IFMODE1_bp 1 /* Interface Mode bit 1 position. */ + + +/* EBI.SDRAMCTRLA bit masks and bit positions */ +#define EBI_SDCAS_bm 0x08 /* SDRAM CAS Latency Setting bit mask. */ +#define EBI_SDCAS_bp 3 /* SDRAM CAS Latency Setting bit position. */ + +#define EBI_SDROW_bm 0x04 /* SDRAM ROW Bits Setting bit mask. */ +#define EBI_SDROW_bp 2 /* SDRAM ROW Bits Setting bit position. */ + +#define EBI_SDCOL_gm 0x03 /* SDRAM Column Bits Setting group mask. */ +#define EBI_SDCOL_gp 0 /* SDRAM Column Bits Setting group position. */ +#define EBI_SDCOL0_bm (1<<0) /* SDRAM Column Bits Setting bit 0 mask. */ +#define EBI_SDCOL0_bp 0 /* SDRAM Column Bits Setting bit 0 position. */ +#define EBI_SDCOL1_bm (1<<1) /* SDRAM Column Bits Setting bit 1 mask. */ +#define EBI_SDCOL1_bp 1 /* SDRAM Column Bits Setting bit 1 position. */ + + +/* EBI.SDRAMCTRLB bit masks and bit positions */ +#define EBI_MRDLY_gm 0xC0 /* SDRAM Mode Register Delay group mask. */ +#define EBI_MRDLY_gp 6 /* SDRAM Mode Register Delay group position. */ +#define EBI_MRDLY0_bm (1<<6) /* SDRAM Mode Register Delay bit 0 mask. */ +#define EBI_MRDLY0_bp 6 /* SDRAM Mode Register Delay bit 0 position. */ +#define EBI_MRDLY1_bm (1<<7) /* SDRAM Mode Register Delay bit 1 mask. */ +#define EBI_MRDLY1_bp 7 /* SDRAM Mode Register Delay bit 1 position. */ + +#define EBI_ROWCYCDLY_gm 0x38 /* SDRAM Row Cycle Delay group mask. */ +#define EBI_ROWCYCDLY_gp 3 /* SDRAM Row Cycle Delay group position. */ +#define EBI_ROWCYCDLY0_bm (1<<3) /* SDRAM Row Cycle Delay bit 0 mask. */ +#define EBI_ROWCYCDLY0_bp 3 /* SDRAM Row Cycle Delay bit 0 position. */ +#define EBI_ROWCYCDLY1_bm (1<<4) /* SDRAM Row Cycle Delay bit 1 mask. */ +#define EBI_ROWCYCDLY1_bp 4 /* SDRAM Row Cycle Delay bit 1 position. */ +#define EBI_ROWCYCDLY2_bm (1<<5) /* SDRAM Row Cycle Delay bit 2 mask. */ +#define EBI_ROWCYCDLY2_bp 5 /* SDRAM Row Cycle Delay bit 2 position. */ + +#define EBI_RPDLY_gm 0x07 /* SDRAM Row-to-Precharge Delay group mask. */ +#define EBI_RPDLY_gp 0 /* SDRAM Row-to-Precharge Delay group position. */ +#define EBI_RPDLY0_bm (1<<0) /* SDRAM Row-to-Precharge Delay bit 0 mask. */ +#define EBI_RPDLY0_bp 0 /* SDRAM Row-to-Precharge Delay bit 0 position. */ +#define EBI_RPDLY1_bm (1<<1) /* SDRAM Row-to-Precharge Delay bit 1 mask. */ +#define EBI_RPDLY1_bp 1 /* SDRAM Row-to-Precharge Delay bit 1 position. */ +#define EBI_RPDLY2_bm (1<<2) /* SDRAM Row-to-Precharge Delay bit 2 mask. */ +#define EBI_RPDLY2_bp 2 /* SDRAM Row-to-Precharge Delay bit 2 position. */ + + +/* EBI.SDRAMCTRLC bit masks and bit positions */ +#define EBI_WRDLY_gm 0xC0 /* SDRAM Write Recovery Delay group mask. */ +#define EBI_WRDLY_gp 6 /* SDRAM Write Recovery Delay group position. */ +#define EBI_WRDLY0_bm (1<<6) /* SDRAM Write Recovery Delay bit 0 mask. */ +#define EBI_WRDLY0_bp 6 /* SDRAM Write Recovery Delay bit 0 position. */ +#define EBI_WRDLY1_bm (1<<7) /* SDRAM Write Recovery Delay bit 1 mask. */ +#define EBI_WRDLY1_bp 7 /* SDRAM Write Recovery Delay bit 1 position. */ + +#define EBI_ESRDLY_gm 0x38 /* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ +#define EBI_ESRDLY_gp 3 /* SDRAM Exit-Self-refresh-to-Active Delay group position. */ +#define EBI_ESRDLY0_bm (1<<3) /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ +#define EBI_ESRDLY0_bp 3 /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ +#define EBI_ESRDLY1_bm (1<<4) /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ +#define EBI_ESRDLY1_bp 4 /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ +#define EBI_ESRDLY2_bm (1<<5) /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ +#define EBI_ESRDLY2_bp 5 /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ + +#define EBI_ROWCOLDLY_gm 0x07 /* SDRAM Row-to-Column Delay group mask. */ +#define EBI_ROWCOLDLY_gp 0 /* SDRAM Row-to-Column Delay group position. */ +#define EBI_ROWCOLDLY0_bm (1<<0) /* SDRAM Row-to-Column Delay bit 0 mask. */ +#define EBI_ROWCOLDLY0_bp 0 /* SDRAM Row-to-Column Delay bit 0 position. */ +#define EBI_ROWCOLDLY1_bm (1<<1) /* SDRAM Row-to-Column Delay bit 1 mask. */ +#define EBI_ROWCOLDLY1_bp 1 /* SDRAM Row-to-Column Delay bit 1 position. */ +#define EBI_ROWCOLDLY2_bm (1<<2) /* SDRAM Row-to-Column Delay bit 2 mask. */ +#define EBI_ROWCOLDLY2_bp 2 /* SDRAM Row-to-Column Delay bit 2 position. */ + + +/* TWI - Two-Wire Interface */ +/* TWI_MASTER.CTRLA bit masks and bit positions */ +#define TWI_MASTER_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_MASTER_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_MASTER_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_MASTER_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_MASTER_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_MASTER_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_MASTER_RIEN_bm 0x20 /* Read Interrupt Enable bit mask. */ +#define TWI_MASTER_RIEN_bp 5 /* Read Interrupt Enable bit position. */ + +#define TWI_MASTER_WIEN_bm 0x10 /* Write Interrupt Enable bit mask. */ +#define TWI_MASTER_WIEN_bp 4 /* Write Interrupt Enable bit position. */ + +#define TWI_MASTER_ENABLE_bm 0x08 /* Enable TWI Master bit mask. */ +#define TWI_MASTER_ENABLE_bp 3 /* Enable TWI Master bit position. */ + + +/* TWI_MASTER.CTRLB bit masks and bit positions */ +#define TWI_MASTER_TIMEOUT_gm 0x0C /* Inactive Bus Timeout group mask. */ +#define TWI_MASTER_TIMEOUT_gp 2 /* Inactive Bus Timeout group position. */ +#define TWI_MASTER_TIMEOUT0_bm (1<<2) /* Inactive Bus Timeout bit 0 mask. */ +#define TWI_MASTER_TIMEOUT0_bp 2 /* Inactive Bus Timeout bit 0 position. */ +#define TWI_MASTER_TIMEOUT1_bm (1<<3) /* Inactive Bus Timeout bit 1 mask. */ +#define TWI_MASTER_TIMEOUT1_bp 3 /* Inactive Bus Timeout bit 1 position. */ + +#define TWI_MASTER_QCEN_bm 0x02 /* Quick Command Enable bit mask. */ +#define TWI_MASTER_QCEN_bp 1 /* Quick Command Enable bit position. */ + +#define TWI_MASTER_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_MASTER_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_MASTER.CTRLC bit masks and bit positions */ +#define TWI_MASTER_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_MASTER_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_MASTER_CMD_gm 0x03 /* Command group mask. */ +#define TWI_MASTER_CMD_gp 0 /* Command group position. */ +#define TWI_MASTER_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_MASTER_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_MASTER_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_MASTER_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_MASTER.STATUS bit masks and bit positions */ +#define TWI_MASTER_RIF_bm 0x80 /* Read Interrupt Flag bit mask. */ +#define TWI_MASTER_RIF_bp 7 /* Read Interrupt Flag bit position. */ + +#define TWI_MASTER_WIF_bm 0x40 /* Write Interrupt Flag bit mask. */ +#define TWI_MASTER_WIF_bp 6 /* Write Interrupt Flag bit position. */ + +#define TWI_MASTER_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_MASTER_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_MASTER_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_MASTER_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_MASTER_ARBLOST_bm 0x08 /* Arbitration Lost bit mask. */ +#define TWI_MASTER_ARBLOST_bp 3 /* Arbitration Lost bit position. */ + +#define TWI_MASTER_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_MASTER_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_MASTER_BUSSTATE_gm 0x03 /* Bus State group mask. */ +#define TWI_MASTER_BUSSTATE_gp 0 /* Bus State group position. */ +#define TWI_MASTER_BUSSTATE0_bm (1<<0) /* Bus State bit 0 mask. */ +#define TWI_MASTER_BUSSTATE0_bp 0 /* Bus State bit 0 position. */ +#define TWI_MASTER_BUSSTATE1_bm (1<<1) /* Bus State bit 1 mask. */ +#define TWI_MASTER_BUSSTATE1_bp 1 /* Bus State bit 1 position. */ + + +/* TWI_SLAVE.CTRLA bit masks and bit positions */ +#define TWI_SLAVE_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_SLAVE_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_SLAVE_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_SLAVE_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_SLAVE_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_SLAVE_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ +#define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ + +#define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ +#define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ + +#define TWI_SLAVE_PIEN_bm 0x04 /* Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_PIEN_bp 2 /* Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_PMEN_bm 0x02 /* Promiscuous Mode Enable bit mask. */ +#define TWI_SLAVE_PMEN_bp 1 /* Promiscuous Mode Enable bit position. */ + +#define TWI_SLAVE_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_SLAVE_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_SLAVE.CTRLB bit masks and bit positions */ +#define TWI_SLAVE_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_SLAVE_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_SLAVE_CMD_gm 0x03 /* Command group mask. */ +#define TWI_SLAVE_CMD_gp 0 /* Command group position. */ +#define TWI_SLAVE_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_SLAVE_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_SLAVE_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_SLAVE_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_SLAVE.STATUS bit masks and bit positions */ +#define TWI_SLAVE_DIF_bm 0x80 /* Data Interrupt Flag bit mask. */ +#define TWI_SLAVE_DIF_bp 7 /* Data Interrupt Flag bit position. */ + +#define TWI_SLAVE_APIF_bm 0x40 /* Address/Stop Interrupt Flag bit mask. */ +#define TWI_SLAVE_APIF_bp 6 /* Address/Stop Interrupt Flag bit position. */ + +#define TWI_SLAVE_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_SLAVE_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_SLAVE_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_SLAVE_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_SLAVE_COLL_bm 0x08 /* Collision bit mask. */ +#define TWI_SLAVE_COLL_bp 3 /* Collision bit position. */ + +#define TWI_SLAVE_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_SLAVE_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_SLAVE_DIR_bm 0x02 /* Read/Write Direction bit mask. */ +#define TWI_SLAVE_DIR_bp 1 /* Read/Write Direction bit position. */ + +#define TWI_SLAVE_AP_bm 0x01 /* Slave Address or Stop bit mask. */ +#define TWI_SLAVE_AP_bp 0 /* Slave Address or Stop bit position. */ + + +/* TWI.CTRL bit masks and bit positions */ +#define TWI_SDAHOLD_bm 0x02 /* SDA Hold Time Enable bit mask. */ +#define TWI_SDAHOLD_bp 1 /* SDA Hold Time Enable bit position. */ + +#define TWI_EDIEN_bm 0x01 /* External Driver Interface Enable bit mask. */ +#define TWI_EDIEN_bp 0 /* External Driver Interface Enable bit position. */ + + +/* PORT - Port Configuration */ +/* PORTCFG.VPCTRLA bit masks and bit positions */ +#define PORTCFG_VP1MAP_gm 0xF0 /* Virtual Port 1 Mapping group mask. */ +#define PORTCFG_VP1MAP_gp 4 /* Virtual Port 1 Mapping group position. */ +#define PORTCFG_VP1MAP0_bm (1<<4) /* Virtual Port 1 Mapping bit 0 mask. */ +#define PORTCFG_VP1MAP0_bp 4 /* Virtual Port 1 Mapping bit 0 position. */ +#define PORTCFG_VP1MAP1_bm (1<<5) /* Virtual Port 1 Mapping bit 1 mask. */ +#define PORTCFG_VP1MAP1_bp 5 /* Virtual Port 1 Mapping bit 1 position. */ +#define PORTCFG_VP1MAP2_bm (1<<6) /* Virtual Port 1 Mapping bit 2 mask. */ +#define PORTCFG_VP1MAP2_bp 6 /* Virtual Port 1 Mapping bit 2 position. */ +#define PORTCFG_VP1MAP3_bm (1<<7) /* Virtual Port 1 Mapping bit 3 mask. */ +#define PORTCFG_VP1MAP3_bp 7 /* Virtual Port 1 Mapping bit 3 position. */ + +#define PORTCFG_VP0MAP_gm 0x0F /* Virtual Port 0 Mapping group mask. */ +#define PORTCFG_VP0MAP_gp 0 /* Virtual Port 0 Mapping group position. */ +#define PORTCFG_VP0MAP0_bm (1<<0) /* Virtual Port 0 Mapping bit 0 mask. */ +#define PORTCFG_VP0MAP0_bp 0 /* Virtual Port 0 Mapping bit 0 position. */ +#define PORTCFG_VP0MAP1_bm (1<<1) /* Virtual Port 0 Mapping bit 1 mask. */ +#define PORTCFG_VP0MAP1_bp 1 /* Virtual Port 0 Mapping bit 1 position. */ +#define PORTCFG_VP0MAP2_bm (1<<2) /* Virtual Port 0 Mapping bit 2 mask. */ +#define PORTCFG_VP0MAP2_bp 2 /* Virtual Port 0 Mapping bit 2 position. */ +#define PORTCFG_VP0MAP3_bm (1<<3) /* Virtual Port 0 Mapping bit 3 mask. */ +#define PORTCFG_VP0MAP3_bp 3 /* Virtual Port 0 Mapping bit 3 position. */ + + +/* PORTCFG.VPCTRLB bit masks and bit positions */ +#define PORTCFG_VP3MAP_gm 0xF0 /* Virtual Port 3 Mapping group mask. */ +#define PORTCFG_VP3MAP_gp 4 /* Virtual Port 3 Mapping group position. */ +#define PORTCFG_VP3MAP0_bm (1<<4) /* Virtual Port 3 Mapping bit 0 mask. */ +#define PORTCFG_VP3MAP0_bp 4 /* Virtual Port 3 Mapping bit 0 position. */ +#define PORTCFG_VP3MAP1_bm (1<<5) /* Virtual Port 3 Mapping bit 1 mask. */ +#define PORTCFG_VP3MAP1_bp 5 /* Virtual Port 3 Mapping bit 1 position. */ +#define PORTCFG_VP3MAP2_bm (1<<6) /* Virtual Port 3 Mapping bit 2 mask. */ +#define PORTCFG_VP3MAP2_bp 6 /* Virtual Port 3 Mapping bit 2 position. */ +#define PORTCFG_VP3MAP3_bm (1<<7) /* Virtual Port 3 Mapping bit 3 mask. */ +#define PORTCFG_VP3MAP3_bp 7 /* Virtual Port 3 Mapping bit 3 position. */ + +#define PORTCFG_VP2MAP_gm 0x0F /* Virtual Port 2 Mapping group mask. */ +#define PORTCFG_VP2MAP_gp 0 /* Virtual Port 2 Mapping group position. */ +#define PORTCFG_VP2MAP0_bm (1<<0) /* Virtual Port 2 Mapping bit 0 mask. */ +#define PORTCFG_VP2MAP0_bp 0 /* Virtual Port 2 Mapping bit 0 position. */ +#define PORTCFG_VP2MAP1_bm (1<<1) /* Virtual Port 2 Mapping bit 1 mask. */ +#define PORTCFG_VP2MAP1_bp 1 /* Virtual Port 2 Mapping bit 1 position. */ +#define PORTCFG_VP2MAP2_bm (1<<2) /* Virtual Port 2 Mapping bit 2 mask. */ +#define PORTCFG_VP2MAP2_bp 2 /* Virtual Port 2 Mapping bit 2 position. */ +#define PORTCFG_VP2MAP3_bm (1<<3) /* Virtual Port 2 Mapping bit 3 mask. */ +#define PORTCFG_VP2MAP3_bp 3 /* Virtual Port 2 Mapping bit 3 position. */ + + +/* PORTCFG.CLKEVOUT bit masks and bit positions */ +#define PORTCFG_CLKOUT_gm 0x03 /* Clock Output Port group mask. */ +#define PORTCFG_CLKOUT_gp 0 /* Clock Output Port group position. */ +#define PORTCFG_CLKOUT0_bm (1<<0) /* Clock Output Port bit 0 mask. */ +#define PORTCFG_CLKOUT0_bp 0 /* Clock Output Port bit 0 position. */ +#define PORTCFG_CLKOUT1_bm (1<<1) /* Clock Output Port bit 1 mask. */ +#define PORTCFG_CLKOUT1_bp 1 /* Clock Output Port bit 1 position. */ + +#define PORTCFG_EVOUT_gm 0x30 /* Event Output Port group mask. */ +#define PORTCFG_EVOUT_gp 4 /* Event Output Port group position. */ +#define PORTCFG_EVOUT0_bm (1<<4) /* Event Output Port bit 0 mask. */ +#define PORTCFG_EVOUT0_bp 4 /* Event Output Port bit 0 position. */ +#define PORTCFG_EVOUT1_bm (1<<5) /* Event Output Port bit 1 mask. */ +#define PORTCFG_EVOUT1_bp 5 /* Event Output Port bit 1 position. */ + + +/* VPORT.INTFLAGS bit masks and bit positions */ +#define VPORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define VPORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define VPORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define VPORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.INTCTRL bit masks and bit positions */ +#define PORT_INT1LVL_gm 0x0C /* Port Interrupt 1 Level group mask. */ +#define PORT_INT1LVL_gp 2 /* Port Interrupt 1 Level group position. */ +#define PORT_INT1LVL0_bm (1<<2) /* Port Interrupt 1 Level bit 0 mask. */ +#define PORT_INT1LVL0_bp 2 /* Port Interrupt 1 Level bit 0 position. */ +#define PORT_INT1LVL1_bm (1<<3) /* Port Interrupt 1 Level bit 1 mask. */ +#define PORT_INT1LVL1_bp 3 /* Port Interrupt 1 Level bit 1 position. */ + +#define PORT_INT0LVL_gm 0x03 /* Port Interrupt 0 Level group mask. */ +#define PORT_INT0LVL_gp 0 /* Port Interrupt 0 Level group position. */ +#define PORT_INT0LVL0_bm (1<<0) /* Port Interrupt 0 Level bit 0 mask. */ +#define PORT_INT0LVL0_bp 0 /* Port Interrupt 0 Level bit 0 position. */ +#define PORT_INT0LVL1_bm (1<<1) /* Port Interrupt 0 Level bit 1 mask. */ +#define PORT_INT0LVL1_bp 1 /* Port Interrupt 0 Level bit 1 position. */ + + +/* PORT.INTFLAGS bit masks and bit positions */ +#define PORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define PORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define PORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define PORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.PIN0CTRL bit masks and bit positions */ +#define PORT_SRLEN_bm 0x80 /* Slew Rate Enable bit mask. */ +#define PORT_SRLEN_bp 7 /* Slew Rate Enable bit position. */ + +#define PORT_INVEN_bm 0x40 /* Inverted I/O Enable bit mask. */ +#define PORT_INVEN_bp 6 /* Inverted I/O Enable bit position. */ + +#define PORT_OPC_gm 0x38 /* Output/Pull Configuration group mask. */ +#define PORT_OPC_gp 3 /* Output/Pull Configuration group position. */ +#define PORT_OPC0_bm (1<<3) /* Output/Pull Configuration bit 0 mask. */ +#define PORT_OPC0_bp 3 /* Output/Pull Configuration bit 0 position. */ +#define PORT_OPC1_bm (1<<4) /* Output/Pull Configuration bit 1 mask. */ +#define PORT_OPC1_bp 4 /* Output/Pull Configuration bit 1 position. */ +#define PORT_OPC2_bm (1<<5) /* Output/Pull Configuration bit 2 mask. */ +#define PORT_OPC2_bp 5 /* Output/Pull Configuration bit 2 position. */ + +#define PORT_ISC_gm 0x07 /* Input/Sense Configuration group mask. */ +#define PORT_ISC_gp 0 /* Input/Sense Configuration group position. */ +#define PORT_ISC0_bm (1<<0) /* Input/Sense Configuration bit 0 mask. */ +#define PORT_ISC0_bp 0 /* Input/Sense Configuration bit 0 position. */ +#define PORT_ISC1_bm (1<<1) /* Input/Sense Configuration bit 1 mask. */ +#define PORT_ISC1_bp 1 /* Input/Sense Configuration bit 1 position. */ +#define PORT_ISC2_bm (1<<2) /* Input/Sense Configuration bit 2 mask. */ +#define PORT_ISC2_bp 2 /* Input/Sense Configuration bit 2 position. */ + + +/* PORT.PIN1CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN2CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN3CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN4CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN5CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN6CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN7CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* TC - 16-bit Timer/Counter With PWM */ +/* TC0.CTRLA bit masks and bit positions */ +#define TC0_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC0_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC0_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC0_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC0_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC0_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC0_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC0_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC0_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC0_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC0.CTRLB bit masks and bit positions */ +#define TC0_CCDEN_bm 0x80 /* Compare or Capture D Enable bit mask. */ +#define TC0_CCDEN_bp 7 /* Compare or Capture D Enable bit position. */ + +#define TC0_CCCEN_bm 0x40 /* Compare or Capture C Enable bit mask. */ +#define TC0_CCCEN_bp 6 /* Compare or Capture C Enable bit position. */ + +#define TC0_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC0_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC0_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC0_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC0_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC0_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC0_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC0_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC0_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC0_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC0_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC0_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC0.CTRLC bit masks and bit positions */ +#define TC0_CMPD_bm 0x08 /* Compare D Output Value bit mask. */ +#define TC0_CMPD_bp 3 /* Compare D Output Value bit position. */ + +#define TC0_CMPC_bm 0x04 /* Compare C Output Value bit mask. */ +#define TC0_CMPC_bp 2 /* Compare C Output Value bit position. */ + +#define TC0_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC0_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC0_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC0_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC0.CTRLD bit masks and bit positions */ +#define TC0_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC0_EVACT_gp 5 /* Event Action group position. */ +#define TC0_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC0_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC0_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC0_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC0_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC0_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC0_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC0_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC0_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC0_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC0_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC0_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC0_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC0_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC0_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC0_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC0_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC0_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC0.CTRLE bit masks and bit positions */ +#define TC0_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC0_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC0_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC0_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC0.INTCTRLA bit masks and bit positions */ +#define TC0_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC0_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC0_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC0_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC0_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC0_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC0_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC0_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC0_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC0_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC0_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC0_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC0.INTCTRLB bit masks and bit positions */ +#define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ +#define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ +#define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ +#define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ +#define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ +#define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ + +#define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ +#define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ +#define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ +#define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ +#define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ +#define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ + +#define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC0.CTRLFCLR bit masks and bit positions */ +#define TC0_CMD_gm 0x0C /* Command group mask. */ +#define TC0_CMD_gp 2 /* Command group position. */ +#define TC0_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC0_CMD0_bp 2 /* Command bit 0 position. */ +#define TC0_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC0_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC0_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC0_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC0_DIR_bm 0x01 /* Direction bit mask. */ +#define TC0_DIR_bp 0 /* Direction bit position. */ + + +/* TC0.CTRLFSET bit masks and bit positions */ +/* TC0_CMD_gm Predefined. */ +/* TC0_CMD_gp Predefined. */ +/* TC0_CMD0_bm Predefined. */ +/* TC0_CMD0_bp Predefined. */ +/* TC0_CMD1_bm Predefined. */ +/* TC0_CMD1_bp Predefined. */ + +/* TC0_LUPD_bm Predefined. */ +/* TC0_LUPD_bp Predefined. */ + +/* TC0_DIR_bm Predefined. */ +/* TC0_DIR_bp Predefined. */ + + +/* TC0.CTRLGCLR bit masks and bit positions */ +#define TC0_CCDBV_bm 0x10 /* Compare or Capture D Buffer Valid bit mask. */ +#define TC0_CCDBV_bp 4 /* Compare or Capture D Buffer Valid bit position. */ + +#define TC0_CCCBV_bm 0x08 /* Compare or Capture C Buffer Valid bit mask. */ +#define TC0_CCCBV_bp 3 /* Compare or Capture C Buffer Valid bit position. */ + +#define TC0_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC0_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC0_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC0_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC0_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC0_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC0.CTRLGSET bit masks and bit positions */ +/* TC0_CCDBV_bm Predefined. */ +/* TC0_CCDBV_bp Predefined. */ + +/* TC0_CCCBV_bm Predefined. */ +/* TC0_CCCBV_bp Predefined. */ + +/* TC0_CCBBV_bm Predefined. */ +/* TC0_CCBBV_bp Predefined. */ + +/* TC0_CCABV_bm Predefined. */ +/* TC0_CCABV_bp Predefined. */ + +/* TC0_PERBV_bm Predefined. */ +/* TC0_PERBV_bp Predefined. */ + + +/* TC0.INTFLAGS bit masks and bit positions */ +#define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ +#define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ + +#define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ +#define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ + +#define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC0_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC0_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* TC1.CTRLA bit masks and bit positions */ +#define TC1_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC1_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC1_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC1_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC1_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC1_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC1_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC1_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC1_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC1_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC1.CTRLB bit masks and bit positions */ +#define TC1_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC1_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC1_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC1_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC1_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC1_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC1_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC1_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC1_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC1_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC1_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC1_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC1.CTRLC bit masks and bit positions */ +#define TC1_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC1_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC1_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC1_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC1.CTRLD bit masks and bit positions */ +#define TC1_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC1_EVACT_gp 5 /* Event Action group position. */ +#define TC1_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC1_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC1_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC1_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC1_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC1_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC1_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC1_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC1_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC1_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC1_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC1_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC1_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC1_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC1_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC1_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC1_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC1_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC1.CTRLE bit masks and bit positions */ +#define TC1_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC1_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC1_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC1_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC1.INTCTRLA bit masks and bit positions */ +#define TC1_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC1_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC1_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC1_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC1_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC1_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC1_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC1_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC1_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC1_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC1_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC1_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC1.INTCTRLB bit masks and bit positions */ +#define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC1.CTRLFCLR bit masks and bit positions */ +#define TC1_CMD_gm 0x0C /* Command group mask. */ +#define TC1_CMD_gp 2 /* Command group position. */ +#define TC1_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC1_CMD0_bp 2 /* Command bit 0 position. */ +#define TC1_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC1_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC1_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC1_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC1_DIR_bm 0x01 /* Direction bit mask. */ +#define TC1_DIR_bp 0 /* Direction bit position. */ + + +/* TC1.CTRLFSET bit masks and bit positions */ +/* TC1_CMD_gm Predefined. */ +/* TC1_CMD_gp Predefined. */ +/* TC1_CMD0_bm Predefined. */ +/* TC1_CMD0_bp Predefined. */ +/* TC1_CMD1_bm Predefined. */ +/* TC1_CMD1_bp Predefined. */ + +/* TC1_LUPD_bm Predefined. */ +/* TC1_LUPD_bp Predefined. */ + +/* TC1_DIR_bm Predefined. */ +/* TC1_DIR_bp Predefined. */ + + +/* TC1.CTRLGCLR bit masks and bit positions */ +#define TC1_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC1_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC1_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC1_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC1_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC1_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC1.CTRLGSET bit masks and bit positions */ +/* TC1_CCBBV_bm Predefined. */ +/* TC1_CCBBV_bp Predefined. */ + +/* TC1_CCABV_bm Predefined. */ +/* TC1_CCABV_bp Predefined. */ + +/* TC1_PERBV_bm Predefined. */ +/* TC1_PERBV_bp Predefined. */ + + +/* TC1.INTFLAGS bit masks and bit positions */ +#define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC1_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC1_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* AWEX.CTRL bit masks and bit positions */ +#define AWEX_PGM_bm 0x20 /* Pattern Generation Mode bit mask. */ +#define AWEX_PGM_bp 5 /* Pattern Generation Mode bit position. */ + +#define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ +#define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ + +#define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ +#define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ + +#define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ +#define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ + +#define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ +#define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ + +#define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ +#define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ + + +/* AWEX.FDCTRL bit masks and bit positions */ +#define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ +#define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ + +#define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ +#define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ + +#define AWEX_FDACT_gm 0x03 /* Fault Detect Action group mask. */ +#define AWEX_FDACT_gp 0 /* Fault Detect Action group position. */ +#define AWEX_FDACT0_bm (1<<0) /* Fault Detect Action bit 0 mask. */ +#define AWEX_FDACT0_bp 0 /* Fault Detect Action bit 0 position. */ +#define AWEX_FDACT1_bm (1<<1) /* Fault Detect Action bit 1 mask. */ +#define AWEX_FDACT1_bp 1 /* Fault Detect Action bit 1 position. */ + + +/* AWEX.STATUS bit masks and bit positions */ +#define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ +#define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ + +#define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ +#define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ + +#define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ +#define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ + + +/* HIRES.CTRL bit masks and bit positions */ +#define HIRES_HREN_gm 0x03 /* High Resolution Enable group mask. */ +#define HIRES_HREN_gp 0 /* High Resolution Enable group position. */ +#define HIRES_HREN0_bm (1<<0) /* High Resolution Enable bit 0 mask. */ +#define HIRES_HREN0_bp 0 /* High Resolution Enable bit 0 position. */ +#define HIRES_HREN1_bm (1<<1) /* High Resolution Enable bit 1 mask. */ +#define HIRES_HREN1_bp 1 /* High Resolution Enable bit 1 position. */ + + +/* USART - Universal Asynchronous Receiver-Transmitter */ +/* USART.STATUS bit masks and bit positions */ +#define USART_RXCIF_bm 0x80 /* Receive Interrupt Flag bit mask. */ +#define USART_RXCIF_bp 7 /* Receive Interrupt Flag bit position. */ + +#define USART_TXCIF_bm 0x40 /* Transmit Interrupt Flag bit mask. */ +#define USART_TXCIF_bp 6 /* Transmit Interrupt Flag bit position. */ + +#define USART_DREIF_bm 0x20 /* Data Register Empty Flag bit mask. */ +#define USART_DREIF_bp 5 /* Data Register Empty Flag bit position. */ + +#define USART_FERR_bm 0x10 /* Frame Error bit mask. */ +#define USART_FERR_bp 4 /* Frame Error bit position. */ + +#define USART_BUFOVF_bm 0x08 /* Buffer Overflow bit mask. */ +#define USART_BUFOVF_bp 3 /* Buffer Overflow bit position. */ + +#define USART_PERR_bm 0x04 /* Parity Error bit mask. */ +#define USART_PERR_bp 2 /* Parity Error bit position. */ + +#define USART_RXB8_bm 0x01 /* Receive Bit 8 bit mask. */ +#define USART_RXB8_bp 0 /* Receive Bit 8 bit position. */ + + +/* USART.CTRLA bit masks and bit positions */ +#define USART_RXCINTLVL_gm 0x30 /* Receive Interrupt Level group mask. */ +#define USART_RXCINTLVL_gp 4 /* Receive Interrupt Level group position. */ +#define USART_RXCINTLVL0_bm (1<<4) /* Receive Interrupt Level bit 0 mask. */ +#define USART_RXCINTLVL0_bp 4 /* Receive Interrupt Level bit 0 position. */ +#define USART_RXCINTLVL1_bm (1<<5) /* Receive Interrupt Level bit 1 mask. */ +#define USART_RXCINTLVL1_bp 5 /* Receive Interrupt Level bit 1 position. */ + +#define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ +#define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ +#define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ +#define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ +#define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ +#define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ + +#define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ +#define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ +#define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ +#define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ +#define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ +#define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ + + +/* USART.CTRLB bit masks and bit positions */ +#define USART_RXEN_bm 0x10 /* Receiver Enable bit mask. */ +#define USART_RXEN_bp 4 /* Receiver Enable bit position. */ + +#define USART_TXEN_bm 0x08 /* Transmitter Enable bit mask. */ +#define USART_TXEN_bp 3 /* Transmitter Enable bit position. */ + +#define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ +#define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ + +#define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ +#define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ + +#define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ +#define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ + + +/* USART.CTRLC bit masks and bit positions */ +#define USART_CMODE_gm 0xC0 /* Communication Mode group mask. */ +#define USART_CMODE_gp 6 /* Communication Mode group position. */ +#define USART_CMODE0_bm (1<<6) /* Communication Mode bit 0 mask. */ +#define USART_CMODE0_bp 6 /* Communication Mode bit 0 position. */ +#define USART_CMODE1_bm (1<<7) /* Communication Mode bit 1 mask. */ +#define USART_CMODE1_bp 7 /* Communication Mode bit 1 position. */ + +#define USART_PMODE_gm 0x30 /* Parity Mode group mask. */ +#define USART_PMODE_gp 4 /* Parity Mode group position. */ +#define USART_PMODE0_bm (1<<4) /* Parity Mode bit 0 mask. */ +#define USART_PMODE0_bp 4 /* Parity Mode bit 0 position. */ +#define USART_PMODE1_bm (1<<5) /* Parity Mode bit 1 mask. */ +#define USART_PMODE1_bp 5 /* Parity Mode bit 1 position. */ + +#define USART_SBMODE_bm 0x08 /* Stop Bit Mode bit mask. */ +#define USART_SBMODE_bp 3 /* Stop Bit Mode bit position. */ + +#define USART_CHSIZE_gm 0x07 /* Character Size group mask. */ +#define USART_CHSIZE_gp 0 /* Character Size group position. */ +#define USART_CHSIZE0_bm (1<<0) /* Character Size bit 0 mask. */ +#define USART_CHSIZE0_bp 0 /* Character Size bit 0 position. */ +#define USART_CHSIZE1_bm (1<<1) /* Character Size bit 1 mask. */ +#define USART_CHSIZE1_bp 1 /* Character Size bit 1 position. */ +#define USART_CHSIZE2_bm (1<<2) /* Character Size bit 2 mask. */ +#define USART_CHSIZE2_bp 2 /* Character Size bit 2 position. */ + + +/* USART.BAUDCTRLA bit masks and bit positions */ +#define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ +#define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ +#define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ +#define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ +#define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ +#define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ +#define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ +#define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ +#define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ +#define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ +#define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ +#define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ +#define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ +#define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ +#define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ +#define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ +#define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ +#define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ + + +/* USART.BAUDCTRLB bit masks and bit positions */ +#define USART_BSCALE_gm 0xF0 /* Baud Rate Scale group mask. */ +#define USART_BSCALE_gp 4 /* Baud Rate Scale group position. */ +#define USART_BSCALE0_bm (1<<4) /* Baud Rate Scale bit 0 mask. */ +#define USART_BSCALE0_bp 4 /* Baud Rate Scale bit 0 position. */ +#define USART_BSCALE1_bm (1<<5) /* Baud Rate Scale bit 1 mask. */ +#define USART_BSCALE1_bp 5 /* Baud Rate Scale bit 1 position. */ +#define USART_BSCALE2_bm (1<<6) /* Baud Rate Scale bit 2 mask. */ +#define USART_BSCALE2_bp 6 /* Baud Rate Scale bit 2 position. */ +#define USART_BSCALE3_bm (1<<7) /* Baud Rate Scale bit 3 mask. */ +#define USART_BSCALE3_bp 7 /* Baud Rate Scale bit 3 position. */ + +/* USART_BSEL_gm Predefined. */ +/* USART_BSEL_gp Predefined. */ +/* USART_BSEL0_bm Predefined. */ +/* USART_BSEL0_bp Predefined. */ +/* USART_BSEL1_bm Predefined. */ +/* USART_BSEL1_bp Predefined. */ +/* USART_BSEL2_bm Predefined. */ +/* USART_BSEL2_bp Predefined. */ +/* USART_BSEL3_bm Predefined. */ +/* USART_BSEL3_bp Predefined. */ + + +/* SPI - Serial Peripheral Interface */ +/* SPI.CTRL bit masks and bit positions */ +#define SPI_CLK2X_bm 0x80 /* Enable Double Speed bit mask. */ +#define SPI_CLK2X_bp 7 /* Enable Double Speed bit position. */ + +#define SPI_ENABLE_bm 0x40 /* Enable Module bit mask. */ +#define SPI_ENABLE_bp 6 /* Enable Module bit position. */ + +#define SPI_DORD_bm 0x20 /* Data Order Setting bit mask. */ +#define SPI_DORD_bp 5 /* Data Order Setting bit position. */ + +#define SPI_MASTER_bm 0x10 /* Master Operation Enable bit mask. */ +#define SPI_MASTER_bp 4 /* Master Operation Enable bit position. */ + +#define SPI_MODE_gm 0x0C /* SPI Mode group mask. */ +#define SPI_MODE_gp 2 /* SPI Mode group position. */ +#define SPI_MODE0_bm (1<<2) /* SPI Mode bit 0 mask. */ +#define SPI_MODE0_bp 2 /* SPI Mode bit 0 position. */ +#define SPI_MODE1_bm (1<<3) /* SPI Mode bit 1 mask. */ +#define SPI_MODE1_bp 3 /* SPI Mode bit 1 position. */ + +#define SPI_PRESCALER_gm 0x03 /* Prescaler group mask. */ +#define SPI_PRESCALER_gp 0 /* Prescaler group position. */ +#define SPI_PRESCALER0_bm (1<<0) /* Prescaler bit 0 mask. */ +#define SPI_PRESCALER0_bp 0 /* Prescaler bit 0 position. */ +#define SPI_PRESCALER1_bm (1<<1) /* Prescaler bit 1 mask. */ +#define SPI_PRESCALER1_bp 1 /* Prescaler bit 1 position. */ + + +/* SPI.INTCTRL bit masks and bit positions */ +#define SPI_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define SPI_INTLVL_gp 0 /* Interrupt level group position. */ +#define SPI_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define SPI_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define SPI_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define SPI_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + +/* SPI.STATUS bit masks and bit positions */ +#define SPI_IF_bm 0x80 /* Interrupt Flag bit mask. */ +#define SPI_IF_bp 7 /* Interrupt Flag bit position. */ + +#define SPI_WRCOL_bm 0x40 /* Write Collision bit mask. */ +#define SPI_WRCOL_bp 6 /* Write Collision bit position. */ + + +/* IRCOM - IR Communication Module */ +/* IRCOM.CTRL bit masks and bit positions */ +#define IRCOM_EVSEL_gm 0x0F /* Event Channel Select group mask. */ +#define IRCOM_EVSEL_gp 0 /* Event Channel Select group position. */ +#define IRCOM_EVSEL0_bm (1<<0) /* Event Channel Select bit 0 mask. */ +#define IRCOM_EVSEL0_bp 0 /* Event Channel Select bit 0 position. */ +#define IRCOM_EVSEL1_bm (1<<1) /* Event Channel Select bit 1 mask. */ +#define IRCOM_EVSEL1_bp 1 /* Event Channel Select bit 1 position. */ +#define IRCOM_EVSEL2_bm (1<<2) /* Event Channel Select bit 2 mask. */ +#define IRCOM_EVSEL2_bp 2 /* Event Channel Select bit 2 position. */ +#define IRCOM_EVSEL3_bm (1<<3) /* Event Channel Select bit 3 mask. */ +#define IRCOM_EVSEL3_bp 3 /* Event Channel Select bit 3 position. */ + + +/* AES - AES Module */ +/* AES.CTRL bit masks and bit positions */ +#define AES_START_bm 0x80 /* Start/Run bit mask. */ +#define AES_START_bp 7 /* Start/Run bit position. */ + +#define AES_AUTO_bm 0x40 /* Auto Start Trigger bit mask. */ +#define AES_AUTO_bp 6 /* Auto Start Trigger bit position. */ + +#define AES_RESET_bm 0x20 /* AES Software Reset bit mask. */ +#define AES_RESET_bp 5 /* AES Software Reset bit position. */ + +#define AES_DECRYPT_bm 0x10 /* Decryption / Direction bit mask. */ +#define AES_DECRYPT_bp 4 /* Decryption / Direction bit position. */ + +#define AES_XOR_bm 0x04 /* State XOR Load Enable bit mask. */ +#define AES_XOR_bp 2 /* State XOR Load Enable bit position. */ + + +/* AES.STATUS bit masks and bit positions */ +#define AES_ERROR_bm 0x80 /* AES Error bit mask. */ +#define AES_ERROR_bp 7 /* AES Error bit position. */ + +#define AES_SRIF_bm 0x01 /* State Ready Interrupt Flag bit mask. */ +#define AES_SRIF_bp 0 /* State Ready Interrupt Flag bit position. */ + + +/* AES.INTCTRL bit masks and bit positions */ +#define AES_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define AES_INTLVL_gp 0 /* Interrupt level group position. */ +#define AES_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define AES_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define AES_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define AES_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + + +// Generic Port Pins + +#define PIN0_bm 0x01 +#define PIN0_bp 0 +#define PIN1_bm 0x02 +#define PIN1_bp 1 +#define PIN2_bm 0x04 +#define PIN2_bp 2 +#define PIN3_bm 0x08 +#define PIN3_bp 3 +#define PIN4_bm 0x10 +#define PIN4_bp 4 +#define PIN5_bm 0x20 +#define PIN5_bp 5 +#define PIN6_bm 0x40 +#define PIN6_bp 6 +#define PIN7_bm 0x80 +#define PIN7_bp 7 + + +/* ========== Interrupt Vector Definitions ========== */ +/* Vector 0 is the reset vector */ + +/* OSC interrupt vectors */ +#define OSC_XOSCF_vect_num 1 +#define OSC_XOSCF_vect _VECTOR(1) /* External Oscillator Failure Interrupt (NMI) */ + +/* PORTC interrupt vectors */ +#define PORTC_INT0_vect_num 2 +#define PORTC_INT0_vect _VECTOR(2) /* External Interrupt 0 */ +#define PORTC_INT1_vect_num 3 +#define PORTC_INT1_vect _VECTOR(3) /* External Interrupt 1 */ + +/* PORTR interrupt vectors */ +#define PORTR_INT0_vect_num 4 +#define PORTR_INT0_vect _VECTOR(4) /* External Interrupt 0 */ +#define PORTR_INT1_vect_num 5 +#define PORTR_INT1_vect _VECTOR(5) /* External Interrupt 1 */ + +/* DMA interrupt vectors */ +#define DMA_CH0_vect_num 6 +#define DMA_CH0_vect _VECTOR(6) /* Channel 0 Interrupt */ +#define DMA_CH1_vect_num 7 +#define DMA_CH1_vect _VECTOR(7) /* Channel 1 Interrupt */ +#define DMA_CH2_vect_num 8 +#define DMA_CH2_vect _VECTOR(8) /* Channel 2 Interrupt */ +#define DMA_CH3_vect_num 9 +#define DMA_CH3_vect _VECTOR(9) /* Channel 3 Interrupt */ + +/* RTC interrupt vectors */ +#define RTC_OVF_vect_num 10 +#define RTC_OVF_vect _VECTOR(10) /* Overflow Interrupt */ +#define RTC_COMP_vect_num 11 +#define RTC_COMP_vect _VECTOR(11) /* Compare Interrupt */ + +/* TWIC interrupt vectors */ +#define TWIC_TWIS_vect_num 12 +#define TWIC_TWIS_vect _VECTOR(12) /* TWI Slave Interrupt */ +#define TWIC_TWIM_vect_num 13 +#define TWIC_TWIM_vect _VECTOR(13) /* TWI Master Interrupt */ + +/* TCC0 interrupt vectors */ +#define TCC0_OVF_vect_num 14 +#define TCC0_OVF_vect _VECTOR(14) /* Overflow Interrupt */ +#define TCC0_ERR_vect_num 15 +#define TCC0_ERR_vect _VECTOR(15) /* Error Interrupt */ +#define TCC0_CCA_vect_num 16 +#define TCC0_CCA_vect _VECTOR(16) /* Compare or Capture A Interrupt */ +#define TCC0_CCB_vect_num 17 +#define TCC0_CCB_vect _VECTOR(17) /* Compare or Capture B Interrupt */ +#define TCC0_CCC_vect_num 18 +#define TCC0_CCC_vect _VECTOR(18) /* Compare or Capture C Interrupt */ +#define TCC0_CCD_vect_num 19 +#define TCC0_CCD_vect _VECTOR(19) /* Compare or Capture D Interrupt */ + +/* TCC1 interrupt vectors */ +#define TCC1_OVF_vect_num 20 +#define TCC1_OVF_vect _VECTOR(20) /* Overflow Interrupt */ +#define TCC1_ERR_vect_num 21 +#define TCC1_ERR_vect _VECTOR(21) /* Error Interrupt */ +#define TCC1_CCA_vect_num 22 +#define TCC1_CCA_vect _VECTOR(22) /* Compare or Capture A Interrupt */ +#define TCC1_CCB_vect_num 23 +#define TCC1_CCB_vect _VECTOR(23) /* Compare or Capture B Interrupt */ + +/* SPIC interrupt vectors */ +#define SPIC_INT_vect_num 24 +#define SPIC_INT_vect _VECTOR(24) /* SPI Interrupt */ + +/* USARTC0 interrupt vectors */ +#define USARTC0_RXC_vect_num 25 +#define USARTC0_RXC_vect _VECTOR(25) /* Reception Complete Interrupt */ +#define USARTC0_DRE_vect_num 26 +#define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ +#define USARTC0_TXC_vect_num 27 +#define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ + +/* USARTC1 interrupt vectors */ +#define USARTC1_RXC_vect_num 28 +#define USARTC1_RXC_vect _VECTOR(28) /* Reception Complete Interrupt */ +#define USARTC1_DRE_vect_num 29 +#define USARTC1_DRE_vect _VECTOR(29) /* Data Register Empty Interrupt */ +#define USARTC1_TXC_vect_num 30 +#define USARTC1_TXC_vect _VECTOR(30) /* Transmission Complete Interrupt */ + +/* AES interrupt vectors */ +#define AES_INT_vect_num 31 +#define AES_INT_vect _VECTOR(31) /* AES Interrupt */ + +/* NVM interrupt vectors */ +#define NVM_EE_vect_num 32 +#define NVM_EE_vect _VECTOR(32) /* EE Interrupt */ +#define NVM_SPM_vect_num 33 +#define NVM_SPM_vect _VECTOR(33) /* SPM Interrupt */ + +/* PORTB interrupt vectors */ +#define PORTB_INT0_vect_num 34 +#define PORTB_INT0_vect _VECTOR(34) /* External Interrupt 0 */ +#define PORTB_INT1_vect_num 35 +#define PORTB_INT1_vect _VECTOR(35) /* External Interrupt 1 */ + +/* ACB interrupt vectors */ +#define ACB_AC0_vect_num 36 +#define ACB_AC0_vect _VECTOR(36) /* AC0 Interrupt */ +#define ACB_AC1_vect_num 37 +#define ACB_AC1_vect _VECTOR(37) /* AC1 Interrupt */ +#define ACB_ACW_vect_num 38 +#define ACB_ACW_vect _VECTOR(38) /* ACW Window Mode Interrupt */ + +/* ADCB interrupt vectors */ +#define ADCB_CH0_vect_num 39 +#define ADCB_CH0_vect _VECTOR(39) /* Interrupt 0 */ +#define ADCB_CH1_vect_num 40 +#define ADCB_CH1_vect _VECTOR(40) /* Interrupt 1 */ +#define ADCB_CH2_vect_num 41 +#define ADCB_CH2_vect _VECTOR(41) /* Interrupt 2 */ +#define ADCB_CH3_vect_num 42 +#define ADCB_CH3_vect _VECTOR(42) /* Interrupt 3 */ + +/* PORTE interrupt vectors */ +#define PORTE_INT0_vect_num 43 +#define PORTE_INT0_vect _VECTOR(43) /* External Interrupt 0 */ +#define PORTE_INT1_vect_num 44 +#define PORTE_INT1_vect _VECTOR(44) /* External Interrupt 1 */ + +/* TWIE interrupt vectors */ +#define TWIE_TWIS_vect_num 45 +#define TWIE_TWIS_vect _VECTOR(45) /* TWI Slave Interrupt */ +#define TWIE_TWIM_vect_num 46 +#define TWIE_TWIM_vect _VECTOR(46) /* TWI Master Interrupt */ + +/* TCE0 interrupt vectors */ +#define TCE0_OVF_vect_num 47 +#define TCE0_OVF_vect _VECTOR(47) /* Overflow Interrupt */ +#define TCE0_ERR_vect_num 48 +#define TCE0_ERR_vect _VECTOR(48) /* Error Interrupt */ +#define TCE0_CCA_vect_num 49 +#define TCE0_CCA_vect _VECTOR(49) /* Compare or Capture A Interrupt */ +#define TCE0_CCB_vect_num 50 +#define TCE0_CCB_vect _VECTOR(50) /* Compare or Capture B Interrupt */ +#define TCE0_CCC_vect_num 51 +#define TCE0_CCC_vect _VECTOR(51) /* Compare or Capture C Interrupt */ +#define TCE0_CCD_vect_num 52 +#define TCE0_CCD_vect _VECTOR(52) /* Compare or Capture D Interrupt */ + +/* TCE1 interrupt vectors */ +#define TCE1_OVF_vect_num 53 +#define TCE1_OVF_vect _VECTOR(53) /* Overflow Interrupt */ +#define TCE1_ERR_vect_num 54 +#define TCE1_ERR_vect _VECTOR(54) /* Error Interrupt */ +#define TCE1_CCA_vect_num 55 +#define TCE1_CCA_vect _VECTOR(55) /* Compare or Capture A Interrupt */ +#define TCE1_CCB_vect_num 56 +#define TCE1_CCB_vect _VECTOR(56) /* Compare or Capture B Interrupt */ + +/* SPIE interrupt vectors */ +#define SPIE_INT_vect_num 57 +#define SPIE_INT_vect _VECTOR(57) /* SPI Interrupt */ + +/* USARTE0 interrupt vectors */ +#define USARTE0_RXC_vect_num 58 +#define USARTE0_RXC_vect _VECTOR(58) /* Reception Complete Interrupt */ +#define USARTE0_DRE_vect_num 59 +#define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ +#define USARTE0_TXC_vect_num 60 +#define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ + +/* USARTE1 interrupt vectors */ +#define USARTE1_RXC_vect_num 61 +#define USARTE1_RXC_vect _VECTOR(61) /* Reception Complete Interrupt */ +#define USARTE1_DRE_vect_num 62 +#define USARTE1_DRE_vect _VECTOR(62) /* Data Register Empty Interrupt */ +#define USARTE1_TXC_vect_num 63 +#define USARTE1_TXC_vect _VECTOR(63) /* Transmission Complete Interrupt */ + +/* PORTD interrupt vectors */ +#define PORTD_INT0_vect_num 64 +#define PORTD_INT0_vect _VECTOR(64) /* External Interrupt 0 */ +#define PORTD_INT1_vect_num 65 +#define PORTD_INT1_vect _VECTOR(65) /* External Interrupt 1 */ + +/* PORTA interrupt vectors */ +#define PORTA_INT0_vect_num 66 +#define PORTA_INT0_vect _VECTOR(66) /* External Interrupt 0 */ +#define PORTA_INT1_vect_num 67 +#define PORTA_INT1_vect _VECTOR(67) /* External Interrupt 1 */ + +/* ACA interrupt vectors */ +#define ACA_AC0_vect_num 68 +#define ACA_AC0_vect _VECTOR(68) /* AC0 Interrupt */ +#define ACA_AC1_vect_num 69 +#define ACA_AC1_vect _VECTOR(69) /* AC1 Interrupt */ +#define ACA_ACW_vect_num 70 +#define ACA_ACW_vect _VECTOR(70) /* ACW Window Mode Interrupt */ + +/* ADCA interrupt vectors */ +#define ADCA_CH0_vect_num 71 +#define ADCA_CH0_vect _VECTOR(71) /* Interrupt 0 */ +#define ADCA_CH1_vect_num 72 +#define ADCA_CH1_vect _VECTOR(72) /* Interrupt 1 */ +#define ADCA_CH2_vect_num 73 +#define ADCA_CH2_vect _VECTOR(73) /* Interrupt 2 */ +#define ADCA_CH3_vect_num 74 +#define ADCA_CH3_vect _VECTOR(74) /* Interrupt 3 */ + +/* TWID interrupt vectors */ +#define TWID_TWIS_vect_num 75 +#define TWID_TWIS_vect _VECTOR(75) /* TWI Slave Interrupt */ +#define TWID_TWIM_vect_num 76 +#define TWID_TWIM_vect _VECTOR(76) /* TWI Master Interrupt */ + +/* TCD0 interrupt vectors */ +#define TCD0_OVF_vect_num 77 +#define TCD0_OVF_vect _VECTOR(77) /* Overflow Interrupt */ +#define TCD0_ERR_vect_num 78 +#define TCD0_ERR_vect _VECTOR(78) /* Error Interrupt */ +#define TCD0_CCA_vect_num 79 +#define TCD0_CCA_vect _VECTOR(79) /* Compare or Capture A Interrupt */ +#define TCD0_CCB_vect_num 80 +#define TCD0_CCB_vect _VECTOR(80) /* Compare or Capture B Interrupt */ +#define TCD0_CCC_vect_num 81 +#define TCD0_CCC_vect _VECTOR(81) /* Compare or Capture C Interrupt */ +#define TCD0_CCD_vect_num 82 +#define TCD0_CCD_vect _VECTOR(82) /* Compare or Capture D Interrupt */ + +/* TCD1 interrupt vectors */ +#define TCD1_OVF_vect_num 83 +#define TCD1_OVF_vect _VECTOR(83) /* Overflow Interrupt */ +#define TCD1_ERR_vect_num 84 +#define TCD1_ERR_vect _VECTOR(84) /* Error Interrupt */ +#define TCD1_CCA_vect_num 85 +#define TCD1_CCA_vect _VECTOR(85) /* Compare or Capture A Interrupt */ +#define TCD1_CCB_vect_num 86 +#define TCD1_CCB_vect _VECTOR(86) /* Compare or Capture B Interrupt */ + +/* SPID interrupt vectors */ +#define SPID_INT_vect_num 87 +#define SPID_INT_vect _VECTOR(87) /* SPI Interrupt */ + +/* USARTD0 interrupt vectors */ +#define USARTD0_RXC_vect_num 88 +#define USARTD0_RXC_vect _VECTOR(88) /* Reception Complete Interrupt */ +#define USARTD0_DRE_vect_num 89 +#define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ +#define USARTD0_TXC_vect_num 90 +#define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ + +/* USARTD1 interrupt vectors */ +#define USARTD1_RXC_vect_num 91 +#define USARTD1_RXC_vect _VECTOR(91) /* Reception Complete Interrupt */ +#define USARTD1_DRE_vect_num 92 +#define USARTD1_DRE_vect _VECTOR(92) /* Data Register Empty Interrupt */ +#define USARTD1_TXC_vect_num 93 +#define USARTD1_TXC_vect _VECTOR(93) /* Transmission Complete Interrupt */ + +/* PORTQ interrupt vectors */ +#define PORTQ_INT0_vect_num 94 +#define PORTQ_INT0_vect _VECTOR(94) /* External Interrupt 0 */ +#define PORTQ_INT1_vect_num 95 +#define PORTQ_INT1_vect _VECTOR(95) /* External Interrupt 1 */ + +/* PORTH interrupt vectors */ +#define PORTH_INT0_vect_num 96 +#define PORTH_INT0_vect _VECTOR(96) /* External Interrupt 0 */ +#define PORTH_INT1_vect_num 97 +#define PORTH_INT1_vect _VECTOR(97) /* External Interrupt 1 */ + +/* PORTJ interrupt vectors */ +#define PORTJ_INT0_vect_num 98 +#define PORTJ_INT0_vect _VECTOR(98) /* External Interrupt 0 */ +#define PORTJ_INT1_vect_num 99 +#define PORTJ_INT1_vect _VECTOR(99) /* External Interrupt 1 */ + +/* PORTK interrupt vectors */ +#define PORTK_INT0_vect_num 100 +#define PORTK_INT0_vect _VECTOR(100) /* External Interrupt 0 */ +#define PORTK_INT1_vect_num 101 +#define PORTK_INT1_vect _VECTOR(101) /* External Interrupt 1 */ + +/* PORTF interrupt vectors */ +#define PORTF_INT0_vect_num 104 +#define PORTF_INT0_vect _VECTOR(104) /* External Interrupt 0 */ +#define PORTF_INT1_vect_num 105 +#define PORTF_INT1_vect _VECTOR(105) /* External Interrupt 1 */ + +/* TWIF interrupt vectors */ +#define TWIF_TWIS_vect_num 106 +#define TWIF_TWIS_vect _VECTOR(106) /* TWI Slave Interrupt */ +#define TWIF_TWIM_vect_num 107 +#define TWIF_TWIM_vect _VECTOR(107) /* TWI Master Interrupt */ + +/* TCF0 interrupt vectors */ +#define TCF0_OVF_vect_num 108 +#define TCF0_OVF_vect _VECTOR(108) /* Overflow Interrupt */ +#define TCF0_ERR_vect_num 109 +#define TCF0_ERR_vect _VECTOR(109) /* Error Interrupt */ +#define TCF0_CCA_vect_num 110 +#define TCF0_CCA_vect _VECTOR(110) /* Compare or Capture A Interrupt */ +#define TCF0_CCB_vect_num 111 +#define TCF0_CCB_vect _VECTOR(111) /* Compare or Capture B Interrupt */ +#define TCF0_CCC_vect_num 112 +#define TCF0_CCC_vect _VECTOR(112) /* Compare or Capture C Interrupt */ +#define TCF0_CCD_vect_num 113 +#define TCF0_CCD_vect _VECTOR(113) /* Compare or Capture D Interrupt */ + +/* TCF1 interrupt vectors */ +#define TCF1_OVF_vect_num 114 +#define TCF1_OVF_vect _VECTOR(114) /* Overflow Interrupt */ +#define TCF1_ERR_vect_num 115 +#define TCF1_ERR_vect _VECTOR(115) /* Error Interrupt */ +#define TCF1_CCA_vect_num 116 +#define TCF1_CCA_vect _VECTOR(116) /* Compare or Capture A Interrupt */ +#define TCF1_CCB_vect_num 117 +#define TCF1_CCB_vect _VECTOR(117) /* Compare or Capture B Interrupt */ + +/* SPIF interrupt vectors */ +#define SPIF_INT_vect_num 118 +#define SPIF_INT_vect _VECTOR(118) /* SPI Interrupt */ + +/* USARTF0 interrupt vectors */ +#define USARTF0_RXC_vect_num 119 +#define USARTF0_RXC_vect _VECTOR(119) /* Reception Complete Interrupt */ +#define USARTF0_DRE_vect_num 120 +#define USARTF0_DRE_vect _VECTOR(120) /* Data Register Empty Interrupt */ +#define USARTF0_TXC_vect_num 121 +#define USARTF0_TXC_vect _VECTOR(121) /* Transmission Complete Interrupt */ + +/* USARTF1 interrupt vectors */ +#define USARTF1_RXC_vect_num 122 +#define USARTF1_RXC_vect _VECTOR(122) /* Reception Complete Interrupt */ +#define USARTF1_DRE_vect_num 123 +#define USARTF1_DRE_vect _VECTOR(123) /* Data Register Empty Interrupt */ +#define USARTF1_TXC_vect_num 124 +#define USARTF1_TXC_vect _VECTOR(124) /* Transmission Complete Interrupt */ + + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (125 * _VECTOR_SIZE) + + +/* ========== Constants ========== */ + +#define PROGMEM_START (0x0000) +#define PROGMEM_SIZE (69632) +#define PROGMEM_END (PROGMEM_START + PROGMEM_SIZE - 1) + +#define APP_SECTION_START (0x0000) +#define APP_SECTION_SIZE (65536) +#define APP_SECTION_END (APP_SECTION_START + APP_SECTION_SIZE - 1) + +#define APPTABLE_SECTION_START (0x0F000) +#define APPTABLE_SECTION_SIZE (4096) +#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) + +#define BOOT_SECTION_START (0x10000) +#define BOOT_SECTION_SIZE (4096) +#define BOOT_SECTION_END (BOOT_SECTION_START + BOOT_SECTION_SIZE - 1) + +#define DATAMEM_START (0x0000) +#define DATAMEM_SIZE (16777216) +#define DATAMEM_END (DATAMEM_START + DATAMEM_SIZE - 1) + +#define IO_START (0x0000) +#define IO_SIZE (4096) +#define IO_END (IO_START + IO_SIZE - 1) + +#define MAPPED_EEPROM_START (0x1000) +#define MAPPED_EEPROM_SIZE (2048) +#define MAPPED_EEPROM_END (MAPPED_EEPROM_START + MAPPED_EEPROM_SIZE - 1) + +#define INTERNAL_SRAM_START (0x2000) +#define INTERNAL_SRAM_SIZE (4096) +#define INTERNAL_SRAM_END (INTERNAL_SRAM_START + INTERNAL_SRAM_SIZE - 1) + +#define EXTERNAL_SRAM_START (0x3000) +#define EXTERNAL_SRAM_SIZE (16764928) +#define EXTERNAL_SRAM_END (EXTERNAL_SRAM_START + EXTERNAL_SRAM_SIZE - 1) + +#define EEPROM_START (0x0000) +#define EEPROM_SIZE (2048) +#define EEPROM_END (EEPROM_START + EEPROM_SIZE - 1) + +#define FUSE_START (0x0000) +#define FUSE_SIZE (6) +#define FUSE_END (FUSE_START + FUSE_SIZE - 1) + +#define LOCKBIT_START (0x0000) +#define LOCKBIT_SIZE (1) +#define LOCKBIT_END (LOCKBIT_START + LOCKBIT_SIZE - 1) + +#define SIGNATURES_START (0x0000) +#define SIGNATURES_SIZE (3) +#define SIGNATURES_END (SIGNATURES_START + SIGNATURES_SIZE - 1) + +#define USER_SIGNATURES_START (0x0000) +#define USER_SIGNATURES_SIZE (256) +#define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) + +#define PROD_SIGNATURES_START (0x0000) +#define PROD_SIGNATURES_SIZE (52) +#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) + +#define FLASHEND PROGMEM_END +#define SPM_PAGESIZE PROGMEM_PAGE_SIZE +#define RAMSTART INTERNAL_SRAM_START +#define RAMSIZE INTERNAL_SRAM_SIZE +#define RAMEND INTERNAL_SRAM_END +#define XRAMSTART EXTERNAL_SRAM_START +#define XRAMSIZE EXTERNAL_SRAM_SIZE +#define XRAMEND EXTERNAL_SRAM_END +#define E2END EEPROM_END +#define E2PAGESIZE EEPROM_PAGE_SIZE + + +/* ========== Fuses ========== */ +#define FUSE_MEMORY_SIZE 6 + +/* Fuse Byte 0 */ +#define FUSE_JTAGUSERID0 ~_BV(0) /* JTAG User ID Bit 0 */ +#define FUSE_JTAGUSERID1 ~_BV(1) /* JTAG User ID Bit 1 */ +#define FUSE_JTAGUSERID2 ~_BV(2) /* JTAG User ID Bit 2 */ +#define FUSE_JTAGUSERID3 ~_BV(3) /* JTAG User ID Bit 3 */ +#define FUSE_JTAGUSERID4 ~_BV(4) /* JTAG User ID Bit 4 */ +#define FUSE_JTAGUSERID5 ~_BV(5) /* JTAG User ID Bit 5 */ +#define FUSE_JTAGUSERID6 ~_BV(6) /* JTAG User ID Bit 6 */ +#define FUSE_JTAGUSERID7 ~_BV(7) /* JTAG User ID Bit 7 */ +#define FUSE0_DEFAULT (0xFF) + +/* Fuse Byte 1 */ +#define FUSE_WDP0 ~_BV(0) /* Watchdog Timeout Period Bit 0 */ +#define FUSE_WDP1 ~_BV(1) /* Watchdog Timeout Period Bit 1 */ +#define FUSE_WDP2 ~_BV(2) /* Watchdog Timeout Period Bit 2 */ +#define FUSE_WDP3 ~_BV(3) /* Watchdog Timeout Period Bit 3 */ +#define FUSE_WDWP0 ~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ +#define FUSE_WDWP1 ~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ +#define FUSE_WDWP2 ~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ +#define FUSE_WDWP3 ~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ +#define FUSE1_DEFAULT (0xFF) + +/* Fuse Byte 2 */ +#define FUSE_BODPD0 ~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ +#define FUSE_BODPD1 ~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ +#define FUSE_BODACT0 ~_BV(2) /* BOD Operation in Active Mode Bit 0 */ +#define FUSE_BODACT1 ~_BV(3) /* BOD Operation in Active Mode Bit 1 */ +#define FUSE_BOOTRST ~_BV(6) /* Boot Loader Section Reset Vector */ +#define FUSE_DVSDON ~_BV(7) /* Spike Detector Enable */ +#define FUSE2_DEFAULT (0xFF) + +/* Fuse Byte 3 Reserved */ + +/* Fuse Byte 4 */ +#define FUSE_JTAGEN ~_BV(0) /* JTAG Interface Enable */ +#define FUSE_WDLOCK ~_BV(1) /* Watchdog Timer Lock */ +#define FUSE_SUT0 ~_BV(2) /* Start-up Time Bit 0 */ +#define FUSE_SUT1 ~_BV(3) /* Start-up Time Bit 1 */ +#define FUSE4_DEFAULT (0xFF) + +/* Fuse Byte 5 */ +#define FUSE_BODLVL0 ~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ +#define FUSE_BODLVL1 ~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ +#define FUSE_BODLVL2 ~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ +#define FUSE_EESAVE ~_BV(3) /* Preserve EEPROM Through Chip Erase */ +#define FUSE5_DEFAULT (0xFF) + + +/* ========== Lock Bits ========== */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_BITS_EXIST +#define __BOOT_LOCK_BOOT_BITS_EXIST + + +/* ========== Signature ========== */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x4E + + +#endif /* _AVR_ATxmega64A1_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox64a3.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox64a3.h new file mode 100644 index 0000000..6b365df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/iox64a3.h @@ -0,0 +1,6852 @@ +/* Copyright (c) 2008 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: iox64a3.h,v 1.1.2.4 2008/11/03 04:13:18 arcanum Exp $ */ + +/* avr/iox64a3.h - definitions for ATxmega64A3 */ + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iox64a3.h" +#else +# error "Attempt to include more than one file." +#endif + + +#ifndef _AVR_ATxmega64A3_H_ +#define _AVR_ATxmega64A3_H_ 1 + + +/* Ungrouped common registers */ +#define GPIO0 _SFR_MEM8(0x0000) /* General Purpose IO Register 0 */ +#define GPIO1 _SFR_MEM8(0x0001) /* General Purpose IO Register 1 */ +#define GPIO2 _SFR_MEM8(0x0002) /* General Purpose IO Register 2 */ +#define GPIO3 _SFR_MEM8(0x0003) /* General Purpose IO Register 3 */ +#define GPIO4 _SFR_MEM8(0x0004) /* General Purpose IO Register 4 */ +#define GPIO5 _SFR_MEM8(0x0005) /* General Purpose IO Register 5 */ +#define GPIO6 _SFR_MEM8(0x0006) /* General Purpose IO Register 6 */ +#define GPIO7 _SFR_MEM8(0x0007) /* General Purpose IO Register 7 */ +#define GPIO8 _SFR_MEM8(0x0008) /* General Purpose IO Register 8 */ +#define GPIO9 _SFR_MEM8(0x0009) /* General Purpose IO Register 9 */ +#define GPIOA _SFR_MEM8(0x000A) /* General Purpose IO Register 10 */ +#define GPIOB _SFR_MEM8(0x000B) /* General Purpose IO Register 11 */ +#define GPIOC _SFR_MEM8(0x000C) /* General Purpose IO Register 12 */ +#define GPIOD _SFR_MEM8(0x000D) /* General Purpose IO Register 13 */ +#define GPIOE _SFR_MEM8(0x000E) /* General Purpose IO Register 14 */ +#define GPIOF _SFR_MEM8(0x000F) /* General Purpose IO Register 15 */ + +#define CCP _SFR_MEM8(0x0034) /* Configuration Change Protection */ +#define RAMPD _SFR_MEM8(0x0038) /* Ramp D */ +#define RAMPX _SFR_MEM8(0x0039) /* Ramp X */ +#define RAMPY _SFR_MEM8(0x003A) /* Ramp Y */ +#define RAMPZ _SFR_MEM8(0x003B) /* Ramp Z */ +#define EIND _SFR_MEM8(0x003C) /* Extended Indirect Jump */ +#define SPL _SFR_MEM8(0x003D) /* Stack Pointer Low */ +#define SPH _SFR_MEM8(0x003E) /* Stack Pointer High */ +#define SREG _SFR_MEM8(0x003F) /* Status Register */ + + +/* C Language Only */ +#if !defined (__ASSEMBLER__) + +#include + +typedef volatile uint8_t register8_t; +typedef volatile uint16_t register16_t; +typedef volatile uint32_t register32_t; + + +#ifdef _WORDREGISTER +#undef _WORDREGISTER +#endif +#define _WORDREGISTER(regname) \ + union \ + { \ + register16_t regname; \ + struct \ + { \ + register8_t regname ## L; \ + register8_t regname ## H; \ + }; \ + } + +#ifdef _DWORDREGISTER +#undef _DWORDREGISTER +#endif +#define _DWORDREGISTER(regname) \ + union \ + { \ + register32_t regname; \ + struct \ + { \ + register8_t regname ## 0; \ + register8_t regname ## 1; \ + register8_t regname ## 2; \ + register8_t regname ## 3; \ + }; \ + } + + +/* +========================================================================== +IO Module Structures +========================================================================== +*/ + + +/* +-------------------------------------------------------------------------- +XOCD - On-Chip Debug System +-------------------------------------------------------------------------- +*/ + +/* On-Chip Debug System */ +typedef struct OCD_struct +{ + register8_t OCDR0; /* OCD Register 0 */ + register8_t OCDR1; /* OCD Register 1 */ +} OCD_t; + + +/* CCP signatures */ +typedef enum CCP_enum +{ + CCP_SPM_gc = (0x9D<<0), /* SPM Instruction Protection */ + CCP_IOREG_gc = (0xD8<<0), /* IO Register Protection */ +} CCP_t; + + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Clock System */ +typedef struct CLK_struct +{ + register8_t CTRL; /* Control Register */ + register8_t PSCTRL; /* Prescaler Control Register */ + register8_t LOCK; /* Lock register */ + register8_t RTCCTRL; /* RTC Control Register */ +} CLK_t; + +/* +-------------------------------------------------------------------------- +CLK - Clock System +-------------------------------------------------------------------------- +*/ + +/* Power Reduction */ +typedef struct PR_struct +{ + register8_t PR; /* General Power Reduction */ + register8_t PRPA; /* Power Reduction Port A */ + register8_t PRPB; /* Power Reduction Port B */ + register8_t PRPC; /* Power Reduction Port C */ + register8_t PRPD; /* Power Reduction Port D */ + register8_t PRPE; /* Power Reduction Port E */ + register8_t PRPF; /* Power Reduction Port F */ +} PR_t; + +/* System Clock Selection */ +typedef enum CLK_SCLKSEL_enum +{ + CLK_SCLKSEL_RC2M_gc = (0x00<<0), /* Internal 2MHz RC Oscillator */ + CLK_SCLKSEL_RC32M_gc = (0x01<<0), /* Internal 32MHz RC Oscillator */ + CLK_SCLKSEL_RC32K_gc = (0x02<<0), /* Internal 32kHz RC Oscillator */ + CLK_SCLKSEL_XOSC_gc = (0x03<<0), /* External Crystal Oscillator or Clock */ + CLK_SCLKSEL_PLL_gc = (0x04<<0), /* Phase Locked Loop */ +} CLK_SCLKSEL_t; + +/* Prescaler A Division Factor */ +typedef enum CLK_PSADIV_enum +{ + CLK_PSADIV_1_gc = (0x00<<2), /* Divide by 1 */ + CLK_PSADIV_2_gc = (0x01<<2), /* Divide by 2 */ + CLK_PSADIV_4_gc = (0x03<<2), /* Divide by 4 */ + CLK_PSADIV_8_gc = (0x05<<2), /* Divide by 8 */ + CLK_PSADIV_16_gc = (0x07<<2), /* Divide by 16 */ + CLK_PSADIV_32_gc = (0x09<<2), /* Divide by 32 */ + CLK_PSADIV_64_gc = (0x0B<<2), /* Divide by 64 */ + CLK_PSADIV_128_gc = (0x0D<<2), /* Divide by 128 */ + CLK_PSADIV_256_gc = (0x0F<<2), /* Divide by 256 */ + CLK_PSADIV_512_gc = (0x11<<2), /* Divide by 512 */ +} CLK_PSADIV_t; + +/* Prescaler B and C Division Factor */ +typedef enum CLK_PSBCDIV_enum +{ + CLK_PSBCDIV_1_1_gc = (0x00<<0), /* Divide B by 1 and C by 1 */ + CLK_PSBCDIV_1_2_gc = (0x01<<0), /* Divide B by 1 and C by 2 */ + CLK_PSBCDIV_4_1_gc = (0x02<<0), /* Divide B by 4 and C by 1 */ + CLK_PSBCDIV_2_2_gc = (0x03<<0), /* Divide B by 2 and C by 2 */ +} CLK_PSBCDIV_t; + +/* RTC Clock Source */ +typedef enum CLK_RTCSRC_enum +{ + CLK_RTCSRC_ULP_gc = (0x00<<1), /* 1kHz from internal 32kHz ULP */ + CLK_RTCSRC_TOSC_gc = (0x01<<1), /* 1kHz from 32kHz crystal oscillator on TOSC */ + CLK_RTCSRC_RCOSC_gc = (0x02<<1), /* 1kHz from internal 32kHz RC oscillator */ + CLK_RTCSRC_TOSC32_gc = (0x05<<1), /* 32kHz from 32kHz crystal oscillator on TOSC */ +} CLK_RTCSRC_t; + + +/* +-------------------------------------------------------------------------- +SLEEP - Sleep Controller +-------------------------------------------------------------------------- +*/ + +/* Sleep Controller */ +typedef struct SLEEP_struct +{ + register8_t CTRL; /* Control Register */ +} SLEEP_t; + +/* Sleep Mode */ +typedef enum SLEEP_SMODE_enum +{ + SLEEP_SMODE_IDLE_gc = (0x00<<1), /* Idle mode */ + SLEEP_SMODE_PDOWN_gc = (0x02<<1), /* Power-down Mode */ + SLEEP_SMODE_PSAVE_gc = (0x03<<1), /* Power-save Mode */ + SLEEP_SMODE_STDBY_gc = (0x06<<1), /* Standby Mode */ + SLEEP_SMODE_ESTDBY_gc = (0x07<<1), /* Extended Standby Mode */ +} SLEEP_SMODE_t; + + +/* +-------------------------------------------------------------------------- +OSC - Oscillator +-------------------------------------------------------------------------- +*/ + +/* Oscillator */ +typedef struct OSC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t XOSCCTRL; /* External Oscillator Control Register */ + register8_t XOSCFAIL; /* External Oscillator Failure Detection Register */ + register8_t RC32KCAL; /* 32kHz Internal Oscillator Calibration Register */ + register8_t PLLCTRL; /* PLL Control REgister */ + register8_t DFLLCTRL; /* DFLL Control Register */ +} OSC_t; + +/* Oscillator Frequency Range */ +typedef enum OSC_FRQRANGE_enum +{ + OSC_FRQRANGE_04TO2_gc = (0x00<<6), /* 0.4 - 2 MHz */ + OSC_FRQRANGE_2TO9_gc = (0x01<<6), /* 2 - 9 MHz */ + OSC_FRQRANGE_9TO12_gc = (0x02<<6), /* 9 - 12 MHz */ + OSC_FRQRANGE_12TO16_gc = (0x03<<6), /* 12 - 16 MHz */ +} OSC_FRQRANGE_t; + +/* External Oscillator Selection and Startup Time */ +typedef enum OSC_XOSCSEL_enum +{ + OSC_XOSCSEL_EXTCLK_gc = (0x00<<0), /* External Clock - 6 CLK */ + OSC_XOSCSEL_32KHz_gc = (0x02<<0), /* 32kHz TOSC - 32K CLK */ + OSC_XOSCSEL_XTAL_256CLK_gc = (0x03<<0), /* 0.4-16MHz XTAL - 256 CLK */ + OSC_XOSCSEL_XTAL_1KCLK_gc = (0x07<<0), /* 0.4-16MHz XTAL - 1K CLK */ + OSC_XOSCSEL_XTAL_16KCLK_gc = (0x0B<<0), /* 0.4-16MHz XTAL - 16K CLK */ +} OSC_XOSCSEL_t; + +/* PLL Clock Source */ +typedef enum OSC_PLLSRC_enum +{ + OSC_PLLSRC_RC2M_gc = (0x00<<6), /* Internal 2MHz RC Oscillator */ + OSC_PLLSRC_RC32M_gc = (0x02<<6), /* Internal 32MHz RC Oscillator */ + OSC_PLLSRC_XOSC_gc = (0x03<<6), /* External Oscillator */ +} OSC_PLLSRC_t; + + +/* +-------------------------------------------------------------------------- +DFLL - DFLL +-------------------------------------------------------------------------- +*/ + +/* DFLL */ +typedef struct DFLL_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t CALA; /* Calibration Register A */ + register8_t CALB; /* Calibration Register B */ + register8_t OSCCNT0; /* Oscillator Counter Register 0 */ + register8_t OSCCNT1; /* Oscillator Counter Register 1 */ + register8_t OSCCNT2; /* Oscillator Counter Register 2 */ + register8_t reserved_0x07; +} DFLL_t; + + +/* +-------------------------------------------------------------------------- +RST - Reset +-------------------------------------------------------------------------- +*/ + +/* Reset */ +typedef struct RST_struct +{ + register8_t STATUS; /* Status Register */ + register8_t CTRL; /* Control Register */ +} RST_t; + + +/* +-------------------------------------------------------------------------- +WDT - Watch-Dog Timer +-------------------------------------------------------------------------- +*/ + +/* Watch-Dog Timer */ +typedef struct WDT_struct +{ + register8_t CTRL; /* Control */ + register8_t WINCTRL; /* Windowed Mode Control */ + register8_t STATUS; /* Status */ +} WDT_t; + +/* Period setting */ +typedef enum WDT_PER_enum +{ + WDT_PER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_PER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_PER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_PER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_PER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_PER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_PER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_PER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_PER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_PER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_PER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_PER_t; + +/* Closed window period */ +typedef enum WDT_WPER_enum +{ + WDT_WPER_8CLK_gc = (0x00<<2), /* 8 cycles (8ms @ 3.3V) */ + WDT_WPER_16CLK_gc = (0x01<<2), /* 16 cycles (16ms @ 3.3V) */ + WDT_WPER_32CLK_gc = (0x02<<2), /* 32 cycles (32ms @ 3.3V) */ + WDT_WPER_64CLK_gc = (0x03<<2), /* 64 cycles (64ms @ 3.3V) */ + WDT_WPER_128CLK_gc = (0x04<<2), /* 128 cycles (0.125s @ 3.3V) */ + WDT_WPER_256CLK_gc = (0x05<<2), /* 256 cycles (0.25s @ 3.3V) */ + WDT_WPER_512CLK_gc = (0x06<<2), /* 512 cycles (0.5s @ 3.3V) */ + WDT_WPER_1KCLK_gc = (0x07<<2), /* 1K cycles (1s @ 3.3V) */ + WDT_WPER_2KCLK_gc = (0x08<<2), /* 2K cycles (2s @ 3.3V) */ + WDT_WPER_4KCLK_gc = (0x09<<2), /* 4K cycles (4s @ 3.3V) */ + WDT_WPER_8KCLK_gc = (0x0A<<2), /* 8K cycles (8s @ 3.3V) */ +} WDT_WPER_t; + + +/* +-------------------------------------------------------------------------- +MCU - MCU Control +-------------------------------------------------------------------------- +*/ + +/* MCU Control */ +typedef struct MCU_struct +{ + register8_t DEVID0; /* Device ID byte 0 */ + register8_t DEVID1; /* Device ID byte 1 */ + register8_t DEVID2; /* Device ID byte 2 */ + register8_t REVID; /* Revision ID */ + register8_t JTAGUID; /* JTAG User ID */ + register8_t reserved_0x05; + register8_t MCUCR; /* MCU Control */ + register8_t reserved_0x07; + register8_t EVSYSLOCK; /* Event System Lock */ + register8_t AWEXLOCK; /* AWEX Lock */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; +} MCU_t; + + +/* +-------------------------------------------------------------------------- +PMIC - Programmable Multi-level Interrupt Controller +-------------------------------------------------------------------------- +*/ + +/* Programmable Multi-level Interrupt Controller */ +typedef struct PMIC_struct +{ + register8_t STATUS; /* Status Register */ + register8_t INTPRI; /* Interrupt Priority */ + register8_t CTRL; /* Control Register */ +} PMIC_t; + + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Channel */ +typedef struct DMA_CH_struct +{ + register8_t CTRLA; /* Channel Control */ + register8_t CTRLB; /* Channel Control */ + register8_t ADDRCTRL; /* Address Control */ + register8_t TRIGSRC; /* Channel Trigger Source */ + _WORDREGISTER(TRFCNT); /* Channel Block Transfer Count */ + register8_t REPCNT; /* Channel Repeat Count */ + register8_t reserved_0x07; + register8_t SRCADDR0; /* Channel Source Address 0 */ + register8_t SRCADDR1; /* Channel Source Address 1 */ + register8_t SRCADDR2; /* Channel Source Address 2 */ + register8_t reserved_0x0B; + register8_t DESTADDR0; /* Channel Destination Address 0 */ + register8_t DESTADDR1; /* Channel Destination Address 1 */ + register8_t DESTADDR2; /* Channel Destination Address 2 */ + register8_t reserved_0x0F; +} DMA_CH_t; + +/* +-------------------------------------------------------------------------- +DMA - DMA Controller +-------------------------------------------------------------------------- +*/ + +/* DMA Controller */ +typedef struct DMA_struct +{ + register8_t CTRL; /* Control */ + register8_t reserved_0x01; + register8_t reserved_0x02; + register8_t INTFLAGS; /* Transfer Interrupt Status */ + register8_t STATUS; /* Status */ + register8_t reserved_0x05; + _WORDREGISTER(TEMP); /* Temporary Register For 16/24-bit Access */ + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + DMA_CH_t CH0; /* DMA Channel 0 */ + DMA_CH_t CH1; /* DMA Channel 1 */ + DMA_CH_t CH2; /* DMA Channel 2 */ + DMA_CH_t CH3; /* DMA Channel 3 */ +} DMA_t; + +/* Burst mode */ +typedef enum DMA_CH_BURSTLEN_enum +{ + DMA_CH_BURSTLEN_1BYTE_gc = (0x00<<0), /* 1-byte burst mode */ + DMA_CH_BURSTLEN_2BYTE_gc = (0x01<<0), /* 2-byte burst mode */ + DMA_CH_BURSTLEN_4BYTE_gc = (0x02<<0), /* 4-byte burst mode */ + DMA_CH_BURSTLEN_8BYTE_gc = (0x03<<0), /* 8-byte burst mode */ +} DMA_CH_BURSTLEN_t; + +/* Source address reload mode */ +typedef enum DMA_CH_SRCRELOAD_enum +{ + DMA_CH_SRCRELOAD_NONE_gc = (0x00<<6), /* No reload */ + DMA_CH_SRCRELOAD_BLOCK_gc = (0x01<<6), /* Reload at end of block */ + DMA_CH_SRCRELOAD_BURST_gc = (0x02<<6), /* Reload at end of burst */ + DMA_CH_SRCRELOAD_TRANSACTION_gc = (0x03<<6), /* Reload at end of transaction */ +} DMA_CH_SRCRELOAD_t; + +/* Source addressing mode */ +typedef enum DMA_CH_SRCDIR_enum +{ + DMA_CH_SRCDIR_FIXED_gc = (0x00<<4), /* Fixed */ + DMA_CH_SRCDIR_INC_gc = (0x01<<4), /* Increment */ + DMA_CH_SRCDIR_DEC_gc = (0x02<<4), /* Decrement */ +} DMA_CH_SRCDIR_t; + +/* Destination adress reload mode */ +typedef enum DMA_CH_DESTRELOAD_enum +{ + DMA_CH_DESTRELOAD_NONE_gc = (0x00<<2), /* No reload */ + DMA_CH_DESTRELOAD_BLOCK_gc = (0x01<<2), /* Reload at end of block */ + DMA_CH_DESTRELOAD_BURST_gc = (0x02<<2), /* Reload at end of burst */ + DMA_CH_DESTRELOAD_TRANSACTION_gc = (0x03<<2), /* Reload at end of transaction */ +} DMA_CH_DESTRELOAD_t; + +/* Destination adressing mode */ +typedef enum DMA_CH_DESTDIR_enum +{ + DMA_CH_DESTDIR_FIXED_gc = (0x00<<0), /* Fixed */ + DMA_CH_DESTDIR_INC_gc = (0x01<<0), /* Increment */ + DMA_CH_DESTDIR_DEC_gc = (0x02<<0), /* Decrement */ +} DMA_CH_DESTDIR_t; + +/* Transfer trigger source */ +typedef enum DMA_CH_TRIGSRC_enum +{ + DMA_CH_TRIGSRC_OFF_gc = (0x00<<0), /* Off software triggers only */ + DMA_CH_TRIGSRC_EVSYS_CH0_gc = (0x01<<0), /* Event System Channel 0 */ + DMA_CH_TRIGSRC_EVSYS_CH1_gc = (0x02<<0), /* Event System Channel 1 */ + DMA_CH_TRIGSRC_EVSYS_CH2_gc = (0x03<<0), /* Event System Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH0_gc = (0x10<<0), /* ADCA Channel 0 */ + DMA_CH_TRIGSRC_ADCA_CH1_gc = (0x11<<0), /* ADCA Channel 1 */ + DMA_CH_TRIGSRC_ADCA_CH2_gc = (0x12<<0), /* ADCA Channel 2 */ + DMA_CH_TRIGSRC_ADCA_CH3_gc = (0x13<<0), /* ADCA Channel 3 */ + DMA_CH_TRIGSRC_ADCA_CH4_gc = (0x14<<0), /* ADCA Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACA_CH0_gc = (0x15<<0), /* DACA Channel 0 */ + DMA_CH_TRIGSRC_DACA_CH1_gc = (0x16<<0), /* DACA Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH0_gc = (0x20<<0), /* ADCB Channel 0 */ + DMA_CH_TRIGSRC_ADCB_CH1_gc = (0x21<<0), /* ADCB Channel 1 */ + DMA_CH_TRIGSRC_ADCB_CH2_gc = (0x22<<0), /* ADCB Channel 2 */ + DMA_CH_TRIGSRC_ADCB_CH3_gc = (0x23<<0), /* ADCB Channel 3 */ + DMA_CH_TRIGSRC_ADCB_CH4_gc = (0x24<<0), /* ADCB Channel 0,1,2,3 combined */ + DMA_CH_TRIGSRC_DACB_CH0_gc = (0x25<<0), /* DACB Channel 0 */ + DMA_CH_TRIGSRC_DACB_CH1_gc = (0x26<<0), /* DACB Channel 1 */ + DMA_CH_TRIGSRC_TCC0_OVF_gc = (0x40<<0), /* Timer/Counter C0 Overflow */ + DMA_CH_TRIGSRC_TCC0_ERR_gc = (0x41<<0), /* Timer/Counter C0 Error */ + DMA_CH_TRIGSRC_TCC0_CCA_gc = (0x42<<0), /* Timer/Counter C0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC0_CCB_gc = (0x43<<0), /* Timer/Counter C0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCC0_CCC_gc = (0x44<<0), /* Timer/Counter C0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCC0_CCD_gc = (0x45<<0), /* Timer/Counter C0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCC1_OVF_gc = (0x46<<0), /* Timer/Counter C1 Overflow */ + DMA_CH_TRIGSRC_TCC1_ERR_gc = (0x47<<0), /* Timer/Counter C1 Error */ + DMA_CH_TRIGSRC_TCC1_CCA_gc = (0x48<<0), /* Timer/Counter C1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCC1_CCB_gc = (0x49<<0), /* Timer/Counter C1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIC_gc = (0x4A<<0), /* SPI C Transfer Complete */ + DMA_CH_TRIGSRC_USARTC0_RXC_gc = (0x4B<<0), /* USART C0 Receive Complete */ + DMA_CH_TRIGSRC_USARTC0_DRE_gc = (0x4C<<0), /* USART C0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTC1_RXC_gc = (0x4E<<0), /* USART C1 Receive Complete */ + DMA_CH_TRIGSRC_USARTC1_DRE_gc = (0x4F<<0), /* USART C1 Data Register Empty */ + DMA_CH_TRIGSRC_TCD0_OVF_gc = (0x60<<0), /* Timer/Counter D0 Overflow */ + DMA_CH_TRIGSRC_TCD0_ERR_gc = (0x61<<0), /* Timer/Counter D0 Error */ + DMA_CH_TRIGSRC_TCD0_CCA_gc = (0x62<<0), /* Timer/Counter D0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD0_CCB_gc = (0x63<<0), /* Timer/Counter D0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCD0_CCC_gc = (0x64<<0), /* Timer/Counter D0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCD0_CCD_gc = (0x65<<0), /* Timer/Counter D0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCD1_OVF_gc = (0x66<<0), /* Timer/Counter D1 Overflow */ + DMA_CH_TRIGSRC_TCD1_ERR_gc = (0x67<<0), /* Timer/Counter D1 Error */ + DMA_CH_TRIGSRC_TCD1_CCA_gc = (0x68<<0), /* Timer/Counter D1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCD1_CCB_gc = (0x69<<0), /* Timer/Counter D1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPID_gc = (0x6A<<0), /* SPI D Transfer Complete */ + DMA_CH_TRIGSRC_USARTD0_RXC_gc = (0x6B<<0), /* USART D0 Receive Complete */ + DMA_CH_TRIGSRC_USARTD0_DRE_gc = (0x6C<<0), /* USART D0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTD1_RXC_gc = (0x6E<<0), /* USART D1 Receive Complete */ + DMA_CH_TRIGSRC_USARTD1_DRE_gc = (0x6F<<0), /* USART D1 Data Register Empty */ + DMA_CH_TRIGSRC_TCE0_OVF_gc = (0x80<<0), /* Timer/Counter E0 Overflow */ + DMA_CH_TRIGSRC_TCE0_ERR_gc = (0x81<<0), /* Timer/Counter E0 Error */ + DMA_CH_TRIGSRC_TCE0_CCA_gc = (0x82<<0), /* Timer/Counter E0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE0_CCB_gc = (0x83<<0), /* Timer/Counter E0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCE0_CCC_gc = (0x84<<0), /* Timer/Counter E0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCE0_CCD_gc = (0x85<<0), /* Timer/Counter E0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCE1_OVF_gc = (0x86<<0), /* Timer/Counter E1 Overflow */ + DMA_CH_TRIGSRC_TCE1_ERR_gc = (0x87<<0), /* Timer/Counter E1 Error */ + DMA_CH_TRIGSRC_TCE1_CCA_gc = (0x88<<0), /* Timer/Counter E1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCE1_CCB_gc = (0x89<<0), /* Timer/Counter E1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIE_gc = (0x8A<<0), /* SPI E Transfer Complete */ + DMA_CH_TRIGSRC_USARTE0_RXC_gc = (0x8B<<0), /* USART E0 Receive Complete */ + DMA_CH_TRIGSRC_USARTE0_DRE_gc = (0x8C<<0), /* USART E0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTE1_RXC_gc = (0x8E<<0), /* USART E1 Receive Complete */ + DMA_CH_TRIGSRC_USARTE1_DRE_gc = (0x8F<<0), /* USART E1 Data Register Empty */ + DMA_CH_TRIGSRC_TCF0_OVF_gc = (0xA0<<0), /* Timer/Counter F0 Overflow */ + DMA_CH_TRIGSRC_TCF0_ERR_gc = (0xA1<<0), /* Timer/Counter F0 Error */ + DMA_CH_TRIGSRC_TCF0_CCA_gc = (0xA2<<0), /* Timer/Counter F0 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF0_CCB_gc = (0xA3<<0), /* Timer/Counter F0 Compare or Capture B */ + DMA_CH_TRIGSRC_TCF0_CCC_gc = (0xA4<<0), /* Timer/Counter F0 Compare or Capture C */ + DMA_CH_TRIGSRC_TCF0_CCD_gc = (0xA5<<0), /* Timer/Counter F0 Compare or Capture D */ + DMA_CH_TRIGSRC_TCF1_OVF_gc = (0xA6<<0), /* Timer/Counter F1 Overflow */ + DMA_CH_TRIGSRC_TCF1_ERR_gc = (0xA7<<0), /* Timer/Counter F1 Error */ + DMA_CH_TRIGSRC_TCF1_CCA_gc = (0xA8<<0), /* Timer/Counter F1 Compare or Capture A */ + DMA_CH_TRIGSRC_TCF1_CCB_gc = (0xA9<<0), /* Timer/Counter F1 Compare or Capture B */ + DMA_CH_TRIGSRC_SPIF_gc = (0xAA<<0), /* SPI F Transfer Complete */ + DMA_CH_TRIGSRC_USARTF0_RXC_gc = (0xAB<<0), /* USART F0 Receive Complete */ + DMA_CH_TRIGSRC_USARTF0_DRE_gc = (0xAC<<0), /* USART F0 Data Register Empty */ + DMA_CH_TRIGSRC_USARTF1_RXC_gc = (0xAE<<0), /* USART F1 Receive Complete */ + DMA_CH_TRIGSRC_USARTF1_DRE_gc = (0xAF<<0), /* USART F1 Data Register Empty */ +} DMA_CH_TRIGSRC_t; + +/* Double buffering mode */ +typedef enum DMA_DBUFMODE_enum +{ + DMA_DBUFMODE_DISABLED_gc = (0x00<<2), /* Double buffering disabled */ + DMA_DBUFMODE_CH01_gc = (0x01<<2), /* Double buffering enabled on channel 0/1 */ + DMA_DBUFMODE_CH23_gc = (0x02<<2), /* Double buffering enabled on channel 2/3 */ + DMA_DBUFMODE_CH01CH23_gc = (0x03<<2), /* Double buffering enabled on ch. 0/1 and ch. 2/3 */ +} DMA_DBUFMODE_t; + +/* Priority mode */ +typedef enum DMA_PRIMODE_enum +{ + DMA_PRIMODE_RR0123_gc = (0x00<<0), /* Round Robin */ + DMA_PRIMODE_CH0RR123_gc = (0x01<<0), /* Channel 0 > Round Robin on channel 1/2/3 */ + DMA_PRIMODE_CH01RR23_gc = (0x02<<0), /* Channel 0 > channel 1 > Round Robin on channel 2/3 */ + DMA_PRIMODE_CH0123_gc = (0x03<<0), /* Channel 0 > channel 1 > channel 2 > channel 3 */ +} DMA_PRIMODE_t; + +/* Interrupt level */ +typedef enum DMA_CH_ERRINTLVL_enum +{ + DMA_CH_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + DMA_CH_ERRINTLVL_LO_gc = (0x01<<2), /* Low level */ + DMA_CH_ERRINTLVL_MED_gc = (0x02<<2), /* Medium level */ + DMA_CH_ERRINTLVL_HI_gc = (0x03<<2), /* High level */ +} DMA_CH_ERRINTLVL_t; + +/* Interrupt level */ +typedef enum DMA_CH_TRNINTLVL_enum +{ + DMA_CH_TRNINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + DMA_CH_TRNINTLVL_LO_gc = (0x01<<0), /* Low level */ + DMA_CH_TRNINTLVL_MED_gc = (0x02<<0), /* Medium level */ + DMA_CH_TRNINTLVL_HI_gc = (0x03<<0), /* High level */ +} DMA_CH_TRNINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EVSYS - Event System +-------------------------------------------------------------------------- +*/ + +/* Event System */ +typedef struct EVSYS_struct +{ + register8_t CH0MUX; /* Event Channel 0 Multiplexer */ + register8_t CH1MUX; /* Event Channel 1 Multiplexer */ + register8_t CH2MUX; /* Event Channel 2 Multiplexer */ + register8_t CH3MUX; /* Event Channel 3 Multiplexer */ + register8_t CH4MUX; /* Event Channel 4 Multiplexer */ + register8_t CH5MUX; /* Event Channel 5 Multiplexer */ + register8_t CH6MUX; /* Event Channel 6 Multiplexer */ + register8_t CH7MUX; /* Event Channel 7 Multiplexer */ + register8_t CH0CTRL; /* Channel 0 Control Register */ + register8_t CH1CTRL; /* Channel 1 Control Register */ + register8_t CH2CTRL; /* Channel 2 Control Register */ + register8_t CH3CTRL; /* Channel 3 Control Register */ + register8_t CH4CTRL; /* Channel 4 Control Register */ + register8_t CH5CTRL; /* Channel 5 Control Register */ + register8_t CH6CTRL; /* Channel 6 Control Register */ + register8_t CH7CTRL; /* Channel 7 Control Register */ + register8_t STROBE; /* Event Strobe */ + register8_t DATA; /* Event Data */ +} EVSYS_t; + +/* Quadrature Decoder Index Recognition Mode */ +typedef enum EVSYS_QDIRM_enum +{ + EVSYS_QDIRM_00_gc = (0x00<<5), /* QDPH0 = 0, QDPH90 = 0 */ + EVSYS_QDIRM_01_gc = (0x01<<5), /* QDPH0 = 0, QDPH90 = 1 */ + EVSYS_QDIRM_10_gc = (0x02<<5), /* QDPH0 = 1, QDPH90 = 0 */ + EVSYS_QDIRM_11_gc = (0x03<<5), /* QDPH0 = 1, QDPH90 = 1 */ +} EVSYS_QDIRM_t; + +/* Digital filter coefficient */ +typedef enum EVSYS_DIGFILT_enum +{ + EVSYS_DIGFILT_1SAMPLE_gc = (0x00<<0), /* 1 SAMPLE */ + EVSYS_DIGFILT_2SAMPLES_gc = (0x01<<0), /* 2 SAMPLES */ + EVSYS_DIGFILT_3SAMPLES_gc = (0x02<<0), /* 3 SAMPLES */ + EVSYS_DIGFILT_4SAMPLES_gc = (0x03<<0), /* 4 SAMPLES */ + EVSYS_DIGFILT_5SAMPLES_gc = (0x04<<0), /* 5 SAMPLES */ + EVSYS_DIGFILT_6SAMPLES_gc = (0x05<<0), /* 6 SAMPLES */ + EVSYS_DIGFILT_7SAMPLES_gc = (0x06<<0), /* 7 SAMPLES */ + EVSYS_DIGFILT_8SAMPLES_gc = (0x07<<0), /* 8 SAMPLES */ +} EVSYS_DIGFILT_t; + +/* Event Channel multiplexer input selection */ +typedef enum EVSYS_CHMUX_enum +{ + EVSYS_CHMUX_OFF_gc = (0x00<<0), /* Off */ + EVSYS_CHMUX_RTC_OVF_gc = (0x08<<0), /* RTC Overflow */ + EVSYS_CHMUX_RTC_CMP_gc = (0x09<<0), /* RTC Compare Match */ + EVSYS_CHMUX_ACA_CH0_gc = (0x10<<0), /* Analog Comparator A Channel 0 */ + EVSYS_CHMUX_ACA_CH1_gc = (0x11<<0), /* Analog Comparator A Channel 1 */ + EVSYS_CHMUX_ACA_WIN_gc = (0x12<<0), /* Analog Comparator A Window */ + EVSYS_CHMUX_ACB_CH0_gc = (0x13<<0), /* Analog Comparator B Channel 0 */ + EVSYS_CHMUX_ACB_CH1_gc = (0x14<<0), /* Analog Comparator B Channel 1 */ + EVSYS_CHMUX_ACB_WIN_gc = (0x15<<0), /* Analog Comparator B Window */ + EVSYS_CHMUX_ADCA_CH0_gc = (0x20<<0), /* ADC A Channel 0 */ + EVSYS_CHMUX_ADCA_CH1_gc = (0x21<<0), /* ADC A Channel 1 */ + EVSYS_CHMUX_ADCA_CH2_gc = (0x22<<0), /* ADC A Channel 2 */ + EVSYS_CHMUX_ADCA_CH3_gc = (0x23<<0), /* ADC A Channel 3 */ + EVSYS_CHMUX_ADCB_CH0_gc = (0x24<<0), /* ADC B Channel 0 */ + EVSYS_CHMUX_ADCB_CH1_gc = (0x25<<0), /* ADC B Channel 1 */ + EVSYS_CHMUX_ADCB_CH2_gc = (0x26<<0), /* ADC B Channel 2 */ + EVSYS_CHMUX_ADCB_CH3_gc = (0x27<<0), /* ADC B Channel 3 */ + EVSYS_CHMUX_PORTA_PIN0_gc = (0x50<<0), /* Port A, Pin0 */ + EVSYS_CHMUX_PORTA_PIN1_gc = (0x51<<0), /* Port A, Pin1 */ + EVSYS_CHMUX_PORTA_PIN2_gc = (0x52<<0), /* Port A, Pin2 */ + EVSYS_CHMUX_PORTA_PIN3_gc = (0x53<<0), /* Port A, Pin3 */ + EVSYS_CHMUX_PORTA_PIN4_gc = (0x54<<0), /* Port A, Pin4 */ + EVSYS_CHMUX_PORTA_PIN5_gc = (0x55<<0), /* Port A, Pin5 */ + EVSYS_CHMUX_PORTA_PIN6_gc = (0x56<<0), /* Port A, Pin6 */ + EVSYS_CHMUX_PORTA_PIN7_gc = (0x57<<0), /* Port A, Pin7 */ + EVSYS_CHMUX_PORTB_PIN0_gc = (0x58<<0), /* Port B, Pin0 */ + EVSYS_CHMUX_PORTB_PIN1_gc = (0x59<<0), /* Port B, Pin1 */ + EVSYS_CHMUX_PORTB_PIN2_gc = (0x5A<<0), /* Port B, Pin2 */ + EVSYS_CHMUX_PORTB_PIN3_gc = (0x5B<<0), /* Port B, Pin3 */ + EVSYS_CHMUX_PORTB_PIN4_gc = (0x5C<<0), /* Port B, Pin4 */ + EVSYS_CHMUX_PORTB_PIN5_gc = (0x5D<<0), /* Port B, Pin5 */ + EVSYS_CHMUX_PORTB_PIN6_gc = (0x5E<<0), /* Port B, Pin6 */ + EVSYS_CHMUX_PORTB_PIN7_gc = (0x5F<<0), /* Port B, Pin7 */ + EVSYS_CHMUX_PORTC_PIN0_gc = (0x60<<0), /* Port C, Pin0 */ + EVSYS_CHMUX_PORTC_PIN1_gc = (0x61<<0), /* Port C, Pin1 */ + EVSYS_CHMUX_PORTC_PIN2_gc = (0x62<<0), /* Port C, Pin2 */ + EVSYS_CHMUX_PORTC_PIN3_gc = (0x63<<0), /* Port C, Pin3 */ + EVSYS_CHMUX_PORTC_PIN4_gc = (0x64<<0), /* Port C, Pin4 */ + EVSYS_CHMUX_PORTC_PIN5_gc = (0x65<<0), /* Port C, Pin5 */ + EVSYS_CHMUX_PORTC_PIN6_gc = (0x66<<0), /* Port C, Pin6 */ + EVSYS_CHMUX_PORTC_PIN7_gc = (0x67<<0), /* Port C, Pin7 */ + EVSYS_CHMUX_PORTD_PIN0_gc = (0x68<<0), /* Port D, Pin0 */ + EVSYS_CHMUX_PORTD_PIN1_gc = (0x69<<0), /* Port D, Pin1 */ + EVSYS_CHMUX_PORTD_PIN2_gc = (0x6A<<0), /* Port D, Pin2 */ + EVSYS_CHMUX_PORTD_PIN3_gc = (0x6B<<0), /* Port D, Pin3 */ + EVSYS_CHMUX_PORTD_PIN4_gc = (0x6C<<0), /* Port D, Pin4 */ + EVSYS_CHMUX_PORTD_PIN5_gc = (0x6D<<0), /* Port D, Pin5 */ + EVSYS_CHMUX_PORTD_PIN6_gc = (0x6E<<0), /* Port D, Pin6 */ + EVSYS_CHMUX_PORTD_PIN7_gc = (0x6F<<0), /* Port D, Pin7 */ + EVSYS_CHMUX_PORTE_PIN0_gc = (0x70<<0), /* Port E, Pin0 */ + EVSYS_CHMUX_PORTE_PIN1_gc = (0x71<<0), /* Port E, Pin1 */ + EVSYS_CHMUX_PORTE_PIN2_gc = (0x72<<0), /* Port E, Pin2 */ + EVSYS_CHMUX_PORTE_PIN3_gc = (0x73<<0), /* Port E, Pin3 */ + EVSYS_CHMUX_PORTE_PIN4_gc = (0x74<<0), /* Port E, Pin4 */ + EVSYS_CHMUX_PORTE_PIN5_gc = (0x75<<0), /* Port E, Pin5 */ + EVSYS_CHMUX_PORTE_PIN6_gc = (0x76<<0), /* Port E, Pin6 */ + EVSYS_CHMUX_PORTE_PIN7_gc = (0x77<<0), /* Port E, Pin7 */ + EVSYS_CHMUX_PORTF_PIN0_gc = (0x78<<0), /* Port F, Pin0 */ + EVSYS_CHMUX_PORTF_PIN1_gc = (0x79<<0), /* Port F, Pin1 */ + EVSYS_CHMUX_PORTF_PIN2_gc = (0x7A<<0), /* Port F, Pin2 */ + EVSYS_CHMUX_PORTF_PIN3_gc = (0x7B<<0), /* Port F, Pin3 */ + EVSYS_CHMUX_PORTF_PIN4_gc = (0x7C<<0), /* Port F, Pin4 */ + EVSYS_CHMUX_PORTF_PIN5_gc = (0x7D<<0), /* Port F, Pin5 */ + EVSYS_CHMUX_PORTF_PIN6_gc = (0x7E<<0), /* Port F, Pin6 */ + EVSYS_CHMUX_PORTF_PIN7_gc = (0x7F<<0), /* Port F, Pin7 */ + EVSYS_CHMUX_PRESCALER_1_gc = (0x80<<0), /* Prescaler, divide by 1 */ + EVSYS_CHMUX_PRESCALER_2_gc = (0x81<<0), /* Prescaler, divide by 2 */ + EVSYS_CHMUX_PRESCALER_4_gc = (0x82<<0), /* Prescaler, divide by 4 */ + EVSYS_CHMUX_PRESCALER_8_gc = (0x83<<0), /* Prescaler, divide by 8 */ + EVSYS_CHMUX_PRESCALER_16_gc = (0x84<<0), /* Prescaler, divide by 16 */ + EVSYS_CHMUX_PRESCALER_32_gc = (0x85<<0), /* Prescaler, divide by 32 */ + EVSYS_CHMUX_PRESCALER_64_gc = (0x86<<0), /* Prescaler, divide by 64 */ + EVSYS_CHMUX_PRESCALER_128_gc = (0x87<<0), /* Prescaler, divide by 128 */ + EVSYS_CHMUX_PRESCALER_256_gc = (0x88<<0), /* Prescaler, divide by 256 */ + EVSYS_CHMUX_PRESCALER_512_gc = (0x89<<0), /* Prescaler, divide by 512 */ + EVSYS_CHMUX_PRESCALER_1024_gc = (0x8A<<0), /* Prescaler, divide by 1024 */ + EVSYS_CHMUX_PRESCALER_2048_gc = (0x8B<<0), /* Prescaler, divide by 2048 */ + EVSYS_CHMUX_PRESCALER_4096_gc = (0x8C<<0), /* Prescaler, divide by 4096 */ + EVSYS_CHMUX_PRESCALER_8192_gc = (0x8D<<0), /* Prescaler, divide by 8192 */ + EVSYS_CHMUX_PRESCALER_16384_gc = (0x8E<<0), /* Prescaler, divide by 16384 */ + EVSYS_CHMUX_PRESCALER_32768_gc = (0x8F<<0), /* Prescaler, divide by 32768 */ + EVSYS_CHMUX_TCC0_OVF_gc = (0xC0<<0), /* Timer/Counter C0 Overflow */ + EVSYS_CHMUX_TCC0_ERR_gc = (0xC1<<0), /* Timer/Counter C0 Error */ + EVSYS_CHMUX_TCC0_CCA_gc = (0xC4<<0), /* Timer/Counter C0 Compare or Capture A */ + EVSYS_CHMUX_TCC0_CCB_gc = (0xC5<<0), /* Timer/Counter C0 Compare or Capture B */ + EVSYS_CHMUX_TCC0_CCC_gc = (0xC6<<0), /* Timer/Counter C0 Compare or Capture C */ + EVSYS_CHMUX_TCC0_CCD_gc = (0xC7<<0), /* Timer/Counter C0 Compare or Capture D */ + EVSYS_CHMUX_TCC1_OVF_gc = (0xC8<<0), /* Timer/Counter C1 Overflow */ + EVSYS_CHMUX_TCC1_ERR_gc = (0xC9<<0), /* Timer/Counter C1 Error */ + EVSYS_CHMUX_TCC1_CCA_gc = (0xCC<<0), /* Timer/Counter C1 Compare or Capture A */ + EVSYS_CHMUX_TCC1_CCB_gc = (0xCD<<0), /* Timer/Counter C1 Compare or Capture B */ + EVSYS_CHMUX_TCD0_OVF_gc = (0xD0<<0), /* Timer/Counter D0 Overflow */ + EVSYS_CHMUX_TCD0_ERR_gc = (0xD1<<0), /* Timer/Counter D0 Error */ + EVSYS_CHMUX_TCD0_CCA_gc = (0xD4<<0), /* Timer/Counter D0 Compare or Capture A */ + EVSYS_CHMUX_TCD0_CCB_gc = (0xD5<<0), /* Timer/Counter D0 Compare or Capture B */ + EVSYS_CHMUX_TCD0_CCC_gc = (0xD6<<0), /* Timer/Counter D0 Compare or Capture C */ + EVSYS_CHMUX_TCD0_CCD_gc = (0xD7<<0), /* Timer/Counter D0 Compare or Capture D */ + EVSYS_CHMUX_TCD1_OVF_gc = (0xD8<<0), /* Timer/Counter D1 Overflow */ + EVSYS_CHMUX_TCD1_ERR_gc = (0xD9<<0), /* Timer/Counter D1 Error */ + EVSYS_CHMUX_TCD1_CCA_gc = (0xDC<<0), /* Timer/Counter D1 Compare or Capture A */ + EVSYS_CHMUX_TCD1_CCB_gc = (0xDD<<0), /* Timer/Counter D1 Compare or Capture B */ + EVSYS_CHMUX_TCE0_OVF_gc = (0xE0<<0), /* Timer/Counter E0 Overflow */ + EVSYS_CHMUX_TCE0_ERR_gc = (0xE1<<0), /* Timer/Counter E0 Error */ + EVSYS_CHMUX_TCE0_CCA_gc = (0xE4<<0), /* Timer/Counter E0 Compare or Capture A */ + EVSYS_CHMUX_TCE0_CCB_gc = (0xE5<<0), /* Timer/Counter E0 Compare or Capture B */ + EVSYS_CHMUX_TCE0_CCC_gc = (0xE6<<0), /* Timer/Counter E0 Compare or Capture C */ + EVSYS_CHMUX_TCE0_CCD_gc = (0xE7<<0), /* Timer/Counter E0 Compare or Capture D */ + EVSYS_CHMUX_TCE1_OVF_gc = (0xE8<<0), /* Timer/Counter E1 Overflow */ + EVSYS_CHMUX_TCE1_ERR_gc = (0xE9<<0), /* Timer/Counter E1 Error */ + EVSYS_CHMUX_TCE1_CCA_gc = (0xEC<<0), /* Timer/Counter E1 Compare or Capture A */ + EVSYS_CHMUX_TCE1_CCB_gc = (0xED<<0), /* Timer/Counter E1 Compare or Capture B */ + EVSYS_CHMUX_TCF0_OVF_gc = (0xF0<<0), /* Timer/Counter F0 Overflow */ + EVSYS_CHMUX_TCF0_ERR_gc = (0xF1<<0), /* Timer/Counter F0 Error */ + EVSYS_CHMUX_TCF0_CCA_gc = (0xF4<<0), /* Timer/Counter F0 Compare or Capture A */ + EVSYS_CHMUX_TCF0_CCB_gc = (0xF5<<0), /* Timer/Counter F0 Compare or Capture B */ + EVSYS_CHMUX_TCF0_CCC_gc = (0xF6<<0), /* Timer/Counter F0 Compare or Capture C */ + EVSYS_CHMUX_TCF0_CCD_gc = (0xF7<<0), /* Timer/Counter F0 Compare or Capture D */ + EVSYS_CHMUX_TCF1_OVF_gc = (0xF8<<0), /* Timer/Counter F1 Overflow */ + EVSYS_CHMUX_TCF1_ERR_gc = (0xF9<<0), /* Timer/Counter F1 Error */ + EVSYS_CHMUX_TCF1_CCA_gc = (0xFC<<0), /* Timer/Counter F1 Compare or Capture A */ + EVSYS_CHMUX_TCF1_CCB_gc = (0xFD<<0), /* Timer/Counter F1 Compare or Capture B */ +} EVSYS_CHMUX_t; + + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Non-volatile Memory Controller */ +typedef struct NVM_struct +{ + register8_t ADDR0; /* Address Register 0 */ + register8_t ADDR1; /* Address Register 1 */ + register8_t ADDR2; /* Address Register 2 */ + register8_t reserved_0x03; + register8_t DATA0; /* Data Register 0 */ + register8_t DATA1; /* Data Register 1 */ + register8_t DATA2; /* Data Register 2 */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t CMD; /* Command */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t INTCTRL; /* Interrupt Control */ + register8_t reserved_0x0E; + register8_t STATUS; /* Status */ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Lock Bits */ +typedef struct NVM_LOCKBITS_struct +{ + register8_t LOCKBITS; /* Lock Bits */ +} NVM_LOCKBITS_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Fuses */ +typedef struct NVM_FUSES_struct +{ + register8_t FUSEBYTE0; /* JTAG User ID */ + register8_t FUSEBYTE1; /* Watchdog Configuration */ + register8_t FUSEBYTE2; /* Reset Configuration */ + register8_t reserved_0x03; + register8_t FUSEBYTE4; /* Start-up Configuration */ + register8_t FUSEBYTE5; /* EESAVE and BOD Level */ +} NVM_FUSES_t; + +/* +-------------------------------------------------------------------------- +NVM - Non Volatile Memory Controller +-------------------------------------------------------------------------- +*/ + +/* Production Signatures */ +typedef struct NVM_PROD_SIGNATURES_struct +{ + register8_t RCOSC2M; /* RCOSC 2MHz Calibration Value */ + register8_t reserved_0x01; + register8_t RCOSC32K; /* RCOSC 32kHz Calibration Value */ + register8_t RCOSC32M; /* RCOSC 32MHz Calibration Value */ + register8_t reserved_0x04; + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t LOTNUM0; /* Lot Number Byte 0, ASCII */ + register8_t LOTNUM1; /* Lot Number Byte 1, ASCII */ + register8_t LOTNUM2; /* Lot Number Byte 2, ASCII */ + register8_t LOTNUM3; /* Lot Number Byte 3, ASCII */ + register8_t LOTNUM4; /* Lot Number Byte 4, ASCII */ + register8_t LOTNUM5; /* Lot Number Byte 5, ASCII */ + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t WAFNUM; /* Wafer Number */ + register8_t reserved_0x11; + register8_t COORDX0; /* Wafer Coordinate X Byte 0 */ + register8_t COORDX1; /* Wafer Coordinate X Byte 1 */ + register8_t COORDY0; /* Wafer Coordinate Y Byte 0 */ + register8_t COORDY1; /* Wafer Coordinate Y Byte 1 */ + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + register8_t ADCACAL0; /* ADCA Calibration Byte 0 */ + register8_t ADCACAL1; /* ADCA Calibration Byte 1 */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t ADCBCAL0; /* ADCB Calibration Byte 0 */ + register8_t ADCBCAL1; /* ADCB Calibration Byte 1 */ + register8_t reserved_0x26; + register8_t reserved_0x27; + register8_t reserved_0x28; + register8_t reserved_0x29; + register8_t reserved_0x2A; + register8_t reserved_0x2B; + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t TEMPSENSE0; /* Temperature Sensor Calibration Byte 0 */ + register8_t TEMPSENSE1; /* Temperature Sensor Calibration Byte 0 */ + register8_t DACAOFFCAL; /* DACA Calibration Byte 0 */ + register8_t DACACAINCAL; /* DACA Calibration Byte 1 */ + register8_t DACBOFFCAL; /* DACB Calibration Byte 0 */ + register8_t DACBGAINCAL; /* DACB Calibration Byte 1 */ + register8_t reserved_0x34; + register8_t reserved_0x35; + register8_t reserved_0x36; + register8_t reserved_0x37; + register8_t reserved_0x38; + register8_t reserved_0x39; + register8_t reserved_0x3A; + register8_t reserved_0x3B; + register8_t reserved_0x3C; + register8_t reserved_0x3D; + register8_t reserved_0x3E; +} NVM_PROD_SIGNATURES_t; + +/* NVM Command */ +typedef enum NVM_CMD_enum +{ + NVM_CMD_NO_OPERATION_gc = (0x00<<0), /* Noop/Ordinary LPM */ + NVM_CMD_READ_CALIB_ROW_gc = (0x02<<0), /* Read calibration row */ + NVM_CMD_READ_USER_SIG_ROW_gc = (0x01<<0), /* Read user signature row */ + NVM_CMD_READ_EEPROM_gc = (0x06<<0), /* Read EEPROM */ + NVM_CMD_READ_FUSES_gc = (0x07<<0), /* Read fuse byte */ + NVM_CMD_WRITE_LOCK_BITS_gc = (0x08<<0), /* Write lock bits */ + NVM_CMD_ERASE_USER_SIG_ROW_gc = (0x18<<0), /* Erase user signature row */ + NVM_CMD_WRITE_USER_SIG_ROW_gc = (0x1A<<0), /* Write user signature row */ + NVM_CMD_ERASE_APP_gc = (0x20<<0), /* Erase Application Section */ + NVM_CMD_ERASE_APP_PAGE_gc = (0x22<<0), /* Erase Application Section page */ + NVM_CMD_LOAD_FLASH_BUFFER_gc = (0x23<<0), /* Load Flash page buffer */ + NVM_CMD_WRITE_APP_PAGE_gc = (0x24<<0), /* Write Application Section page */ + NVM_CMD_ERASE_WRITE_APP_PAGE_gc = (0x25<<0), /* Erase-and-write Application Section page */ + NVM_CMD_ERASE_FLASH_BUFFER_gc = (0x26<<0), /* Erase/flush Flash page buffer */ + NVM_CMD_ERASE_BOOT_PAGE_gc = (0x2A<<0), /* Erase Boot Section page */ + NVM_CMD_WRITE_BOOT_PAGE_gc = (0x2C<<0), /* Write Boot Section page */ + NVM_CMD_ERASE_WRITE_BOOT_PAGE_gc = (0x2D<<0), /* Erase-and-write Boot Section page */ + NVM_CMD_ERASE_EEPROM_gc = (0x30<<0), /* Erase EEPROM */ + NVM_CMD_ERASE_EEPROM_PAGE_gc = (0x32<<0), /* Erase EEPROM page */ + NVM_CMD_LOAD_EEPROM_BUFFER_gc = (0x33<<0), /* Load EEPROM page buffer */ + NVM_CMD_WRITE_EEPROM_PAGE_gc = (0x34<<0), /* Write EEPROM page */ + NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc = (0x35<<0), /* Erase-and-write EEPROM page */ + NVM_CMD_ERASE_EEPROM_BUFFER_gc = (0x36<<0), /* Erase/flush EEPROM page buffer */ + NVM_CMD_APP_CRC_gc = (0x38<<0), /* Generate Application section CRC */ + NVM_CMD_BOOT_CRC_gc = (0x39<<0), /* Generate Boot Section CRC */ + NVM_CMD_FLASH_RANGE_CRC_gc = (0x3A<<0), /* Generate Flash Range CRC */ +} NVM_CMD_t; + +/* SPM ready interrupt level */ +typedef enum NVM_SPMLVL_enum +{ + NVM_SPMLVL_OFF_gc = (0x00<<2), /* Interrupt disabled */ + NVM_SPMLVL_LO_gc = (0x01<<2), /* Low level */ + NVM_SPMLVL_MED_gc = (0x02<<2), /* Medium level */ + NVM_SPMLVL_HI_gc = (0x03<<2), /* High level */ +} NVM_SPMLVL_t; + +/* EEPROM ready interrupt level */ +typedef enum NVM_EELVL_enum +{ + NVM_EELVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + NVM_EELVL_LO_gc = (0x01<<0), /* Low level */ + NVM_EELVL_MED_gc = (0x02<<0), /* Medium level */ + NVM_EELVL_HI_gc = (0x03<<0), /* High level */ +} NVM_EELVL_t; + +/* Boot lock bits - boot setcion */ +typedef enum NVM_BLBB_enum +{ + NVM_BLBB_NOLOCK_gc = (0x03<<6), /* No locks */ + NVM_BLBB_WLOCK_gc = (0x02<<6), /* Write not allowed */ + NVM_BLBB_RLOCK_gc = (0x01<<6), /* Read not allowed */ + NVM_BLBB_RWLOCK_gc = (0x00<<6), /* Read and write not allowed */ +} NVM_BLBB_t; + +/* Boot lock bits - application section */ +typedef enum NVM_BLBA_enum +{ + NVM_BLBA_NOLOCK_gc = (0x03<<4), /* No locks */ + NVM_BLBA_WLOCK_gc = (0x02<<4), /* Write not allowed */ + NVM_BLBA_RLOCK_gc = (0x01<<4), /* Read not allowed */ + NVM_BLBA_RWLOCK_gc = (0x00<<4), /* Read and write not allowed */ +} NVM_BLBA_t; + +/* Boot lock bits - application table section */ +typedef enum NVM_BLBAT_enum +{ + NVM_BLBAT_NOLOCK_gc = (0x03<<2), /* No locks */ + NVM_BLBAT_WLOCK_gc = (0x02<<2), /* Write not allowed */ + NVM_BLBAT_RLOCK_gc = (0x01<<2), /* Read not allowed */ + NVM_BLBAT_RWLOCK_gc = (0x00<<2), /* Read and write not allowed */ +} NVM_BLBAT_t; + +/* Lock bits */ +typedef enum NVM_LB_enum +{ + NVM_LB_NOLOCK_gc = (0x03<<0), /* No locks */ + NVM_LB_WLOCK_gc = (0x02<<0), /* Write not allowed */ + NVM_LB_RWLOCK_gc = (0x00<<0), /* Read and write not allowed */ +} NVM_LB_t; + +/* Boot Loader Section Reset Vector */ +typedef enum BOOTRST_enum +{ + BOOTRST_BOOTLDR_gc = (0x00<<6), /* Boot Loader Reset */ + BOOTRST_APPLICATION_gc = (0x01<<6), /* Application Reset */ +} BOOTRST_t; + +/* BOD operation */ +typedef enum BOD_enum +{ + BOD_INSAMPLEDMODE_gc = (0x01<<2), /* BOD enabled in sampled mode */ + BOD_CONTINOUSLY_gc = (0x02<<2), /* BOD enabled continuously */ + BOD_DISABLED_gc = (0x03<<2), /* BOD Disabled */ +} BOD_t; + +/* Watchdog (Window) Timeout Period */ +typedef enum WD_enum +{ + WD_8CLK_gc = (0x00<<4), /* 8 cycles (8ms @ 3.3V) */ + WD_16CLK_gc = (0x01<<4), /* 16 cycles (16ms @ 3.3V) */ + WD_32CLK_gc = (0x02<<4), /* 32 cycles (32ms @ 3.3V) */ + WD_64CLK_gc = (0x03<<4), /* 64 cycles (64ms @ 3.3V) */ + WD_128CLK_gc = (0x04<<4), /* 128 cycles (0.125s @ 3.3V) */ + WD_256CLK_gc = (0x05<<4), /* 256 cycles (0.25s @ 3.3V) */ + WD_512CLK_gc = (0x06<<4), /* 512 cycles (0.5s @ 3.3V) */ + WD_1KCLK_gc = (0x07<<4), /* 1K cycles (1s @ 3.3V) */ + WD_2KCLK_gc = (0x08<<4), /* 2K cycles (2s @ 3.3V) */ + WD_4KCLK_gc = (0x09<<4), /* 4K cycles (4s @ 3.3V) */ + WD_8KCLK_gc = (0x0A<<4), /* 8K cycles (8s @ 3.3V) */ +} WD_t; + +/* Start-up Time */ +typedef enum SUT_enum +{ + SUT_0MS_gc = (0x03<<2), /* 0 ms */ + SUT_4MS_gc = (0x01<<2), /* 4 ms */ + SUT_64MS_gc = (0x00<<2), /* 64 ms */ +} SUT_t; + +/* Brown Out Detection Voltage Level */ +typedef enum BODLVL_enum +{ + BODLVL_1V6_gc = (0x07<<0), /* 1.6 V */ + BODLVL_1V8_gc = (0x06<<0), /* 1.8 V */ + BODLVL_2V0_gc = (0x05<<0), /* 2.0 V */ + BODLVL_2V2_gc = (0x04<<0), /* 2.2 V */ + BODLVL_2V4_gc = (0x03<<0), /* 2.4 V */ + BODLVL_2V7_gc = (0x02<<0), /* 2.7 V */ + BODLVL_2V9_gc = (0x01<<0), /* 2.9 V */ + BODLVL_3V2_gc = (0x00<<0), /* 3.2 V */ +} BODLVL_t; + + +/* +-------------------------------------------------------------------------- +AC - Analog Comparator +-------------------------------------------------------------------------- +*/ + +/* Analog Comparator */ +typedef struct AC_struct +{ + register8_t AC0CTRL; /* Comparator 0 Control */ + register8_t AC1CTRL; /* Comparator 1 Control */ + register8_t AC0MUXCTRL; /* Comparator 0 MUX Control */ + register8_t AC1MUXCTRL; /* Comparator 1 MUX Control */ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t WINCTRL; /* Window Mode Control */ + register8_t STATUS; /* Status */ +} AC_t; + +/* Interrupt mode */ +typedef enum AC_INTMODE_enum +{ + AC_INTMODE_BOTHEDGES_gc = (0x00<<6), /* Interrupt on both edges */ + AC_INTMODE_FALLING_gc = (0x02<<6), /* Interrupt on falling edge */ + AC_INTMODE_RISING_gc = (0x03<<6), /* Interrupt on rising edge */ +} AC_INTMODE_t; + +/* Interrupt level */ +typedef enum AC_INTLVL_enum +{ + AC_INTLVL_OFF_gc = (0x00<<4), /* Interrupt disabled */ + AC_INTLVL_LO_gc = (0x01<<4), /* Low level */ + AC_INTLVL_MED_gc = (0x02<<4), /* Medium level */ + AC_INTLVL_HI_gc = (0x03<<4), /* High level */ +} AC_INTLVL_t; + +/* Hysteresis mode selection */ +typedef enum AC_HYSMODE_enum +{ + AC_HYSMODE_NO_gc = (0x00<<1), /* No hysteresis */ + AC_HYSMODE_SMALL_gc = (0x01<<1), /* Small hysteresis */ + AC_HYSMODE_LARGE_gc = (0x02<<1), /* Large hysteresis */ +} AC_HYSMODE_t; + +/* Positive input multiplexer selection */ +typedef enum AC_MUXPOS_enum +{ + AC_MUXPOS_PIN0_gc = (0x00<<3), /* Pin 0 */ + AC_MUXPOS_PIN1_gc = (0x01<<3), /* Pin 1 */ + AC_MUXPOS_PIN2_gc = (0x02<<3), /* Pin 2 */ + AC_MUXPOS_PIN3_gc = (0x03<<3), /* Pin 3 */ + AC_MUXPOS_PIN4_gc = (0x04<<3), /* Pin 4 */ + AC_MUXPOS_PIN5_gc = (0x05<<3), /* Pin 5 */ + AC_MUXPOS_PIN6_gc = (0x06<<3), /* Pin 6 */ + AC_MUXPOS_DAC_gc = (0x07<<3), /* DAC output */ +} AC_MUXPOS_t; + +/* Negative input multiplexer selection */ +typedef enum AC_MUXNEG_enum +{ + AC_MUXNEG_PIN0_gc = (0x00<<0), /* Pin 0 */ + AC_MUXNEG_PIN1_gc = (0x01<<0), /* Pin 1 */ + AC_MUXNEG_PIN3_gc = (0x02<<0), /* Pin 3 */ + AC_MUXNEG_PIN5_gc = (0x03<<0), /* Pin 5 */ + AC_MUXNEG_PIN7_gc = (0x04<<0), /* Pin 7 */ + AC_MUXNEG_DAC_gc = (0x05<<0), /* DAC output */ + AC_MUXNEG_BANDGAP_gc = (0x06<<0), /* Bandgap Reference */ + AC_MUXNEG_SCALER_gc = (0x07<<0), /* Internal voltage scaler */ +} AC_MUXNEG_t; + +/* Windows interrupt mode */ +typedef enum AC_WINTMODE_enum +{ + AC_WINTMODE_ABOVE_gc = (0x00<<2), /* Interrupt on above window */ + AC_WINTMODE_INSIDE_gc = (0x01<<2), /* Interrupt on inside window */ + AC_WINTMODE_BELOW_gc = (0x02<<2), /* Interrupt on below window */ + AC_WINTMODE_OUTSIDE_gc = (0x03<<2), /* Interrupt on outside window */ +} AC_WINTMODE_t; + +/* Window interrupt level */ +typedef enum AC_WINTLVL_enum +{ + AC_WINTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + AC_WINTLVL_LO_gc = (0x01<<0), /* Low priority */ + AC_WINTLVL_MED_gc = (0x02<<0), /* Medium priority */ + AC_WINTLVL_HI_gc = (0x03<<0), /* High priority */ +} AC_WINTLVL_t; + +/* Window mode state */ +typedef enum AC_WSTATE_enum +{ + AC_WSTATE_ABOVE_gc = (0x00<<6), /* Signal above window */ + AC_WSTATE_INSIDE_gc = (0x01<<6), /* Signal inside window */ + AC_WSTATE_BELOW_gc = (0x02<<6), /* Signal below window */ +} AC_WSTATE_t; + + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* ADC Channel */ +typedef struct ADC_CH_struct +{ + register8_t CTRL; /* Control Register */ + register8_t MUXCTRL; /* MUX Control */ + register8_t INTCTRL; /* Channel Interrupt Control */ + register8_t INTFLAGS; /* Interrupt Flags */ + _WORDREGISTER(RES); /* Channel Result */ + register8_t reserved_0x6; + register8_t reserved_0x7; +} ADC_CH_t; + +/* +-------------------------------------------------------------------------- +ADC - Analog/Digital Converter +-------------------------------------------------------------------------- +*/ + +/* Analog-to-Digital Converter */ +typedef struct ADC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t REFCTRL; /* Reference Control */ + register8_t EVCTRL; /* Event Control */ + register8_t PRESCALER; /* Clock Prescaler */ + register8_t CALCTRL; /* Calibration Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t reserved_0x07; + register8_t reserved_0x08; + register8_t reserved_0x09; + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t CALIB; /* Calibration Value */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + _WORDREGISTER(CH0RES); /* Channel 0 Result */ + _WORDREGISTER(CH1RES); /* Channel 1 Result */ + _WORDREGISTER(CH2RES); /* Channel 2 Result */ + _WORDREGISTER(CH3RES); /* Channel 3 Result */ + _WORDREGISTER(CMP); /* Compare Value */ + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + ADC_CH_t CH0; /* ADC Channel 0 */ + ADC_CH_t CH1; /* ADC Channel 1 */ + ADC_CH_t CH2; /* ADC Channel 2 */ + ADC_CH_t CH3; /* ADC Channel 3 */ +} ADC_t; + +/* Positive input multiplexer selection */ +typedef enum ADC_CH_MUXPOS_enum +{ + ADC_CH_MUXPOS_PIN0_gc = (0x00<<3), /* Input pin 0 */ + ADC_CH_MUXPOS_PIN1_gc = (0x01<<3), /* Input pin 1 */ + ADC_CH_MUXPOS_PIN2_gc = (0x02<<3), /* Input pin 2 */ + ADC_CH_MUXPOS_PIN3_gc = (0x03<<3), /* Input pin 3 */ + ADC_CH_MUXPOS_PIN4_gc = (0x04<<3), /* Input pin 4 */ + ADC_CH_MUXPOS_PIN5_gc = (0x05<<3), /* Input pin 5 */ + ADC_CH_MUXPOS_PIN6_gc = (0x06<<3), /* Input pin 6 */ + ADC_CH_MUXPOS_PIN7_gc = (0x07<<3), /* Input pin 7 */ +} ADC_CH_MUXPOS_t; + +/* Internal input multiplexer selections */ +typedef enum ADC_CH_MUXINT_enum +{ + ADC_CH_MUXINT_TEMP_gc = (0x00<<3), /* Temperature Reference */ + ADC_CH_MUXINT_BANDGAP_gc = (0x01<<3), /* Bandgap Reference */ + ADC_CH_MUXINT_SCALEDVCC_gc = (0x02<<3), /* 1/10 scaled VCC */ + ADC_CH_MUXINT_DAC_gc = (0x03<<3), /* DAC output */ +} ADC_CH_MUXINT_t; + +/* Negative input multiplexer selection */ +typedef enum ADC_CH_MUXNEG_enum +{ + ADC_CH_MUXNEG_PIN0_gc = (0x00<<0), /* Input pin 0 */ + ADC_CH_MUXNEG_PIN1_gc = (0x01<<0), /* Input pin 1 */ + ADC_CH_MUXNEG_PIN2_gc = (0x02<<0), /* Input pin 2 */ + ADC_CH_MUXNEG_PIN3_gc = (0x03<<0), /* Input pin 3 */ + ADC_CH_MUXNEG_PIN4_gc = (0x04<<0), /* Input pin 4 */ + ADC_CH_MUXNEG_PIN5_gc = (0x05<<0), /* Input pin 5 */ + ADC_CH_MUXNEG_PIN6_gc = (0x06<<0), /* Input pin 6 */ + ADC_CH_MUXNEG_PIN7_gc = (0x07<<0), /* Input pin 7 */ +} ADC_CH_MUXNEG_t; + +/* Input mode */ +typedef enum ADC_CH_INPUTMODE_enum +{ + ADC_CH_INPUTMODE_INTERNAL_gc = (0x00<<0), /* Internal inputs, no gain */ + ADC_CH_INPUTMODE_SINGLEENDED_gc = (0x01<<0), /* Single-ended input, no gain */ + ADC_CH_INPUTMODE_DIFF_gc = (0x02<<0), /* Differential input, no gain */ + ADC_CH_INPUTMODE_DIFFWGAIN_gc = (0x03<<0), /* Differential input, with gain */ +} ADC_CH_INPUTMODE_t; + +/* Gain factor */ +typedef enum ADC_CH_GAIN_enum +{ + ADC_CH_GAIN_1X_gc = (0x00<<2), /* 1x gain */ + ADC_CH_GAIN_2X_gc = (0x01<<2), /* 2x gain */ + ADC_CH_GAIN_4X_gc = (0x02<<2), /* 4x gain */ + ADC_CH_GAIN_8X_gc = (0x03<<2), /* 8x gain */ + ADC_CH_GAIN_16X_gc = (0x04<<2), /* 16x gain */ + ADC_CH_GAIN_32X_gc = (0x05<<2), /* 32x gain */ + ADC_CH_GAIN_64X_gc = (0x06<<2), /* 64x gain */ +} ADC_CH_GAIN_t; + +/* Conversion result resolution */ +typedef enum ADC_RESOLUTION_enum +{ + ADC_RESOLUTION_12BIT_gc = (0x00<<1), /* 12-bit right-adjusted result */ + ADC_RESOLUTION_8BIT_gc = (0x02<<1), /* 8-bit right-adjusted result */ + ADC_RESOLUTION_LEFT12BIT_gc = (0x03<<1), /* 12-bit left-adjusted result */ +} ADC_RESOLUTION_t; + +/* Voltage reference selection */ +typedef enum ADC_REFSEL_enum +{ + ADC_REFSEL_INT1V_gc = (0x00<<4), /* Internal 1V */ + ADC_REFSEL_VCC_gc = (0x01<<4), /* Internal VCC / 1.6V */ + ADC_REFSEL_AREFA_gc = (0x02<<4), /* External reference on PORT A */ + ADC_REFSEL_AREFB_gc = (0x03<<4), /* External reference on PORT B */ +} ADC_REFSEL_t; + +/* Channel sweep selection */ +typedef enum ADC_SWEEP_enum +{ + ADC_SWEEP_0_gc = (0x00<<6), /* ADC Channel 0 */ + ADC_SWEEP_01_gc = (0x01<<6), /* ADC Channel 0,1 */ + ADC_SWEEP_012_gc = (0x02<<6), /* ADC Channel 0,1,2 */ + ADC_SWEEP_0123_gc = (0x03<<6), /* ADC Channel 0,1,2,3 */ +} ADC_SWEEP_t; + +/* Event channel input selection */ +typedef enum ADC_EVSEL_enum +{ + ADC_EVSEL_0123_gc = (0x00<<3), /* Event Channel 0,1,2,3 */ + ADC_EVSEL_1234_gc = (0x01<<3), /* Event Channel 1,2,3,4 */ + ADC_EVSEL_2345_gc = (0x02<<3), /* Event Channel 2,3,4,5 */ + ADC_EVSEL_3456_gc = (0x03<<3), /* Event Channel 3,4,5,6 */ + ADC_EVSEL_4567_gc = (0x04<<3), /* Event Channel 4,5,6,7 */ + ADC_EVSEL_567_gc = (0x05<<3), /* Event Channel 5,6,7 */ + ADC_EVSEL_67_gc = (0x06<<3), /* Event Channel 6,7 */ + ADC_EVSEL_7_gc = (0x07<<3), /* Event Channel 7 */ +} ADC_EVSEL_t; + +/* Event action selection */ +typedef enum ADC_EVACT_enum +{ + ADC_EVACT_NONE_gc = (0x00<<0), /* No event action */ + ADC_EVACT_CH0_gc = (0x01<<0), /* First event triggers channel 0 */ + ADC_EVACT_CH01_gc = (0x02<<0), /* First two events trigger channel 0,1 */ + ADC_EVACT_CH012_gc = (0x03<<0), /* First three events trigger channel 0,1,2 */ + ADC_EVACT_CH0123_gc = (0x04<<0), /* Events trigger channel 0,1,2,3 */ + ADC_EVACT_SWEEP_gc = (0x05<<0), /* First event triggers sweep */ + ADC_EVACT_SYNCHSWEEP_gc = (0x06<<0), /* First event triggers synchronized sweep */ +} ADC_EVACT_t; + +/* Interupt mode */ +typedef enum ADC_CH_INTMODE_enum +{ + ADC_CH_INTMODE_COMPLETE_gc = (0x00<<2), /* Interrupt on conversion complete */ + ADC_CH_INTMODE_BELOW_gc = (0x01<<2), /* Interrupt on result below compare value */ + ADC_CH_INTMODE_ABOVE_gc = (0x03<<2), /* Interrupt on result above compare value */ +} ADC_CH_INTMODE_t; + +/* Interrupt level */ +typedef enum ADC_CH_INTLVL_enum +{ + ADC_CH_INTLVL_OFF_gc = (0x00<<0), /* Interrupt disabled */ + ADC_CH_INTLVL_LO_gc = (0x01<<0), /* Low level */ + ADC_CH_INTLVL_MED_gc = (0x02<<0), /* Medium level */ + ADC_CH_INTLVL_HI_gc = (0x03<<0), /* High level */ +} ADC_CH_INTLVL_t; + +/* DMA request selection */ +typedef enum ADC_DMASEL_enum +{ + ADC_DMASEL_OFF_gc = (0x00<<5), /* Combined DMA request OFF */ + ADC_DMASEL_CH01_gc = (0x01<<5), /* ADC Channel 0 or 1 */ + ADC_DMASEL_CH012_gc = (0x02<<5), /* ADC Channel 0 or 1 or 2 */ + ADC_DMASEL_CH0123_gc = (0x03<<5), /* ADC Channel 0 or 1 or 2 or 3 */ +} ADC_DMASEL_t; + +/* Clock prescaler */ +typedef enum ADC_PRESCALER_enum +{ + ADC_PRESCALER_DIV4_gc = (0x00<<0), /* Divide clock by 4 */ + ADC_PRESCALER_DIV8_gc = (0x01<<0), /* Divide clock by 8 */ + ADC_PRESCALER_DIV16_gc = (0x02<<0), /* Divide clock by 16 */ + ADC_PRESCALER_DIV32_gc = (0x03<<0), /* Divide clock by 32 */ + ADC_PRESCALER_DIV64_gc = (0x04<<0), /* Divide clock by 64 */ + ADC_PRESCALER_DIV128_gc = (0x05<<0), /* Divide clock by 128 */ + ADC_PRESCALER_DIV256_gc = (0x06<<0), /* Divide clock by 256 */ + ADC_PRESCALER_DIV512_gc = (0x07<<0), /* Divide clock by 512 */ +} ADC_PRESCALER_t; + + +/* +-------------------------------------------------------------------------- +DAC - Digital/Analog Converter +-------------------------------------------------------------------------- +*/ + +/* Digital-to-Analog Converter */ +typedef struct DAC_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t EVCTRL; /* Event Input Control */ + register8_t TIMCTRL; /* Timing Control */ + register8_t STATUS; /* Status */ + register8_t reserved_0x06; + register8_t reserved_0x07; + register8_t GAINCAL; /* Gain Calibration */ + register8_t OFFSETCAL; /* Offset Calibration */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + _WORDREGISTER(CH0DATA); /* Channel 0 Data */ + _WORDREGISTER(CH1DATA); /* Channel 1 Data */ +} DAC_t; + +/* Output channel selection */ +typedef enum DAC_CHSEL_enum +{ + DAC_CHSEL_SINGLE_gc = (0x00<<5), /* Single channel operation (Channel A only) */ + DAC_CHSEL_DUAL_gc = (0x02<<5), /* Dual channel operation (S/H on both channels) */ +} DAC_CHSEL_t; + +/* Reference voltage selection */ +typedef enum DAC_REFSEL_enum +{ + DAC_REFSEL_INT1V_gc = (0x00<<3), /* Internal 1V */ + DAC_REFSEL_AVCC_gc = (0x01<<3), /* Analog supply voltage */ + DAC_REFSEL_AREFA_gc = (0x02<<3), /* External reference on AREF on PORTA */ + DAC_REFSEL_AREFB_gc = (0x03<<3), /* External reference on AREF on PORTB */ +} DAC_REFSEL_t; + +/* Event channel selection */ +typedef enum DAC_EVSEL_enum +{ + DAC_EVSEL_0_gc = (0x00<<0), /* Event Channel 0 */ + DAC_EVSEL_1_gc = (0x01<<0), /* Event Channel 1 */ + DAC_EVSEL_2_gc = (0x02<<0), /* Event Channel 2 */ + DAC_EVSEL_3_gc = (0x03<<0), /* Event Channel 3 */ + DAC_EVSEL_4_gc = (0x04<<0), /* Event Channel 4 */ + DAC_EVSEL_5_gc = (0x05<<0), /* Event Channel 5 */ + DAC_EVSEL_6_gc = (0x06<<0), /* Event Channel 6 */ + DAC_EVSEL_7_gc = (0x07<<0), /* Event Channel 7 */ +} DAC_EVSEL_t; + +/* Conversion interval */ +typedef enum DAC_CONINTVAL_enum +{ + DAC_CONINTVAL_1CLK_gc = (0x00<<4), /* 1 CLK / 2 CLK in S/H mode */ + DAC_CONINTVAL_2CLK_gc = (0x01<<4), /* 2 CLK / 3 CLK in S/H mode */ + DAC_CONINTVAL_4CLK_gc = (0x02<<4), /* 4 CLK / 6 CLK in S/H mode */ + DAC_CONINTVAL_8CLK_gc = (0x03<<4), /* 8 CLK / 12 CLK in S/H mode */ + DAC_CONINTVAL_16CLK_gc = (0x04<<4), /* 16 CLK / 24 CLK in S/H mode */ + DAC_CONINTVAL_32CLK_gc = (0x05<<4), /* 32 CLK / 48 CLK in S/H mode */ + DAC_CONINTVAL_64CLK_gc = (0x06<<4), /* 64 CLK / 96 CLK in S/H mode */ + DAC_CONINTVAL_128CLK_gc = (0x07<<4), /* 128 CLK / 192 CLK in S/H mode */ +} DAC_CONINTVAL_t; + +/* Refresh rate */ +typedef enum DAC_REFRESH_enum +{ + DAC_REFRESH_16CLK_gc = (0x00<<0), /* 16 CLK */ + DAC_REFRESH_32CLK_gc = (0x01<<0), /* 32 CLK */ + DAC_REFRESH_64CLK_gc = (0x02<<0), /* 64 CLK */ + DAC_REFRESH_128CLK_gc = (0x03<<0), /* 128 CLK */ + DAC_REFRESH_256CLK_gc = (0x04<<0), /* 256 CLK */ + DAC_REFRESH_512CLK_gc = (0x05<<0), /* 512 CLK */ + DAC_REFRESH_1024CLK_gc = (0x06<<0), /* 1024 CLK */ + DAC_REFRESH_2048CLK_gc = (0x07<<0), /* 2048 CLK */ + DAC_REFRESH_4086CLK_gc = (0x08<<0), /* 4096 CLK */ + DAC_REFRESH_8192CLK_gc = (0x09<<0), /* 8192 CLK */ + DAC_REFRESH_16384CLK_gc = (0x0A<<0), /* 16384 CLK */ + DAC_REFRESH_32768CLK_gc = (0x0B<<0), /* 32768 CLK */ + DAC_REFRESH_65536CLK_gc = (0x0C<<0), /* 65536 CLK */ + DAC_REFRESH_OFF_gc = (0x0F<<0), /* Auto refresh OFF */ +} DAC_REFRESH_t; + + +/* +-------------------------------------------------------------------------- +RTC - Real-Time Clounter +-------------------------------------------------------------------------- +*/ + +/* Real-Time Counter */ +typedef struct RTC_struct +{ + register8_t CTRL; /* Control Register */ + register8_t STATUS; /* Status Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INTFLAGS; /* Interrupt Flags */ + register8_t TEMP; /* Temporary register */ + register8_t reserved_0x05; + register8_t reserved_0x06; + register8_t reserved_0x07; + _WORDREGISTER(CNT); /* Count Register */ + _WORDREGISTER(PER); /* Period Register */ + _WORDREGISTER(COMP); /* Compare Register */ +} RTC_t; + +/* Prescaler Factor */ +typedef enum RTC_PRESCALER_enum +{ + RTC_PRESCALER_OFF_gc = (0x00<<0), /* RTC Off */ + RTC_PRESCALER_DIV1_gc = (0x01<<0), /* RTC Clock */ + RTC_PRESCALER_DIV2_gc = (0x02<<0), /* RTC Clock / 2 */ + RTC_PRESCALER_DIV8_gc = (0x03<<0), /* RTC Clock / 8 */ + RTC_PRESCALER_DIV16_gc = (0x04<<0), /* RTC Clock / 16 */ + RTC_PRESCALER_DIV64_gc = (0x05<<0), /* RTC Clock / 64 */ + RTC_PRESCALER_DIV256_gc = (0x06<<0), /* RTC Clock / 256 */ + RTC_PRESCALER_DIV1024_gc = (0x07<<0), /* RTC Clock / 1024 */ +} RTC_PRESCALER_t; + +/* Compare Interrupt level */ +typedef enum RTC_COMPINTLVL_enum +{ + RTC_COMPINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + RTC_COMPINTLVL_LO_gc = (0x01<<2), /* Low Level */ + RTC_COMPINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + RTC_COMPINTLVL_HI_gc = (0x03<<2), /* High Level */ +} RTC_COMPINTLVL_t; + +/* Overflow Interrupt level */ +typedef enum RTC_OVFINTLVL_enum +{ + RTC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + RTC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + RTC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + RTC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} RTC_OVFINTLVL_t; + + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* EBI Chip Select Module */ +typedef struct EBI_CS_struct +{ + register8_t CTRLA; /* Chip Select Control Register A */ + register8_t CTRLB; /* Chip Select Control Register B */ + _WORDREGISTER(BASEADDR); /* Chip Select Base Address */ +} EBI_CS_t; + +/* +-------------------------------------------------------------------------- +EBI - External Bus Interface +-------------------------------------------------------------------------- +*/ + +/* External Bus Interface */ +typedef struct EBI_struct +{ + register8_t CTRL; /* Control */ + register8_t SDRAMCTRLA; /* SDRAM Control Register A */ + register8_t reserved_0x02; + register8_t reserved_0x03; + _WORDREGISTER(REFRESH); /* SDRAM Refresh Period */ + _WORDREGISTER(INITDLY); /* SDRAM Initialization Delay */ + register8_t SDRAMCTRLB; /* SDRAM Control Register B */ + register8_t SDRAMCTRLC; /* SDRAM Control Register C */ + register8_t reserved_0x0A; + register8_t reserved_0x0B; + register8_t reserved_0x0C; + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + EBI_CS_t CS0; /* Chip Select 0 */ + EBI_CS_t CS1; /* Chip Select 1 */ + EBI_CS_t CS2; /* Chip Select 2 */ + EBI_CS_t CS3; /* Chip Select 3 */ +} EBI_t; + +/* Chip Select adress space */ +typedef enum EBI_CS_ASPACE_enum +{ + EBI_CS_ASPACE_256B_gc = (0x00<<2), /* 256 bytes */ + EBI_CS_ASPACE_512B_gc = (0x01<<2), /* 512 bytes */ + EBI_CS_ASPACE_1KB_gc = (0x02<<2), /* 1K bytes */ + EBI_CS_ASPACE_2KB_gc = (0x03<<2), /* 2K bytes */ + EBI_CS_ASPACE_4KB_gc = (0x04<<2), /* 4K bytes */ + EBI_CS_ASPACE_8KB_gc = (0x05<<2), /* 8K bytes */ + EBI_CS_ASPACE_16KB_gc = (0x06<<2), /* 16K bytes */ + EBI_CS_ASPACE_32KB_gc = (0x07<<2), /* 32K bytes */ + EBI_CS_ASPACE_64KB_gc = (0x08<<2), /* 64K bytes */ + EBI_CS_ASPACE_128KB_gc = (0x09<<2), /* 128K bytes */ + EBI_CS_ASPACE_256KB_gc = (0x0A<<2), /* 256K bytes */ + EBI_CS_ASPACE_512KB_gc = (0x0B<<2), /* 512K bytes */ + EBI_CS_ASPACE_1MB_gc = (0x0C<<2), /* 1M bytes */ + EBI_CS_ASPACE_2MB_gc = (0x0D<<2), /* 2M bytes */ + EBI_CS_ASPACE_4MB_gc = (0x0E<<2), /* 4M bytes */ + EBI_CS_ASPACE_8MB_gc = (0x0F<<2), /* 8M bytes */ + EBI_CS_ASPACE_16M_gc = (0x10<<2), /* 16M bytes */ +} EBI_CS_ASPACE_t; + +/* */ +typedef enum EBI_CS_SRWS_enum +{ + EBI_CS_SRWS_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_CS_SRWS_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_CS_SRWS_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_CS_SRWS_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_CS_SRWS_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_CS_SRWS_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_CS_SRWS_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_CS_SRWS_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_CS_SRWS_t; + +/* Chip Select address mode */ +typedef enum EBI_CS_MODE_enum +{ + EBI_CS_MODE_DISABLED_gc = (0x00<<0), /* Chip Select Disabled */ + EBI_CS_MODE_SRAM_gc = (0x01<<0), /* Chip Select in SRAM mode */ + EBI_CS_MODE_LPC_gc = (0x02<<0), /* Chip Select in SRAM LPC mode */ + EBI_CS_MODE_SDRAM_gc = (0x03<<0), /* Chip Select in SDRAM mode */ +} EBI_CS_MODE_t; + +/* Chip Select SDRAM mode */ +typedef enum EBI_CS_SDMODE_enum +{ + EBI_CS_SDMODE_NORMAL_gc = (0x00<<0), /* Normal mode */ + EBI_CS_SDMODE_LOAD_gc = (0x01<<0), /* Load Mode Register command mode */ +} EBI_CS_SDMODE_t; + +/* */ +typedef enum EBI_SDDATAW_enum +{ + EBI_SDDATAW_4BIT_gc = (0x00<<6), /* 4-bit data bus */ + EBI_SDDATAW_8BIT_gc = (0x01<<6), /* 8-bit data bus */ +} EBI_SDDATAW_t; + +/* */ +typedef enum EBI_LPCMODE_enum +{ + EBI_LPCMODE_ALE1_gc = (0x00<<4), /* Data muxed with addr byte 0 */ + EBI_LPCMODE_ALE12_gc = (0x02<<4), /* Data muxed with addr byte 0 and 1 */ +} EBI_LPCMODE_t; + +/* */ +typedef enum EBI_SRMODE_enum +{ + EBI_SRMODE_ALE1_gc = (0x00<<2), /* Addr byte 0 muxed with 1 */ + EBI_SRMODE_ALE2_gc = (0x01<<2), /* Addr byte 0 muxed with 2 */ + EBI_SRMODE_ALE12_gc = (0x02<<2), /* Addr byte 0 muxed with 1 and 2 */ + EBI_SRMODE_NOALE_gc = (0x03<<2), /* No addr muxing */ +} EBI_SRMODE_t; + +/* */ +typedef enum EBI_IFMODE_enum +{ + EBI_IFMODE_DISABLED_gc = (0x00<<0), /* EBI Disabled */ + EBI_IFMODE_3PORT_gc = (0x01<<0), /* 3-port mode */ + EBI_IFMODE_4PORT_gc = (0x02<<0), /* 4-port mode */ + EBI_IFMODE_2PORT_gc = (0x03<<0), /* 2-port mode */ +} EBI_IFMODE_t; + +/* */ +typedef enum EBI_SDCOL_enum +{ + EBI_SDCOL_8BIT_gc = (0x00<<0), /* 8 column bits */ + EBI_SDCOL_9BIT_gc = (0x01<<0), /* 9 column bits */ + EBI_SDCOL_10BIT_gc = (0x02<<0), /* 10 column bits */ + EBI_SDCOL_11BIT_gc = (0x03<<0), /* 11 column bits */ +} EBI_SDCOL_t; + +/* */ +typedef enum EBI_MRDLY_enum +{ + EBI_MRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_MRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_MRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_MRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_MRDLY_t; + +/* */ +typedef enum EBI_ROWCYCDLY_enum +{ + EBI_ROWCYCDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ROWCYCDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ROWCYCDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ROWCYCDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ROWCYCDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ROWCYCDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ROWCYCDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ROWCYCDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ROWCYCDLY_t; + +/* */ +typedef enum EBI_RPDLY_enum +{ + EBI_RPDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_RPDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_RPDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_RPDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_RPDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_RPDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_RPDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_RPDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_RPDLY_t; + +/* */ +typedef enum EBI_WRDLY_enum +{ + EBI_WRDLY_0CLK_gc = (0x00<<6), /* 0 cycles */ + EBI_WRDLY_1CLK_gc = (0x01<<6), /* 1 cycle */ + EBI_WRDLY_2CLK_gc = (0x02<<6), /* 2 cycles */ + EBI_WRDLY_3CLK_gc = (0x03<<6), /* 3 cycles */ +} EBI_WRDLY_t; + +/* */ +typedef enum EBI_ESRDLY_enum +{ + EBI_ESRDLY_0CLK_gc = (0x00<<3), /* 0 cycles */ + EBI_ESRDLY_1CLK_gc = (0x01<<3), /* 1 cycle */ + EBI_ESRDLY_2CLK_gc = (0x02<<3), /* 2 cycles */ + EBI_ESRDLY_3CLK_gc = (0x03<<3), /* 3 cycles */ + EBI_ESRDLY_4CLK_gc = (0x04<<3), /* 4 cycles */ + EBI_ESRDLY_5CLK_gc = (0x05<<3), /* 5 cycle */ + EBI_ESRDLY_6CLK_gc = (0x06<<3), /* 6 cycles */ + EBI_ESRDLY_7CLK_gc = (0x07<<3), /* 7 cycles */ +} EBI_ESRDLY_t; + +/* */ +typedef enum EBI_ROWCOLDLY_enum +{ + EBI_ROWCOLDLY_0CLK_gc = (0x00<<0), /* 0 cycles */ + EBI_ROWCOLDLY_1CLK_gc = (0x01<<0), /* 1 cycle */ + EBI_ROWCOLDLY_2CLK_gc = (0x02<<0), /* 2 cycles */ + EBI_ROWCOLDLY_3CLK_gc = (0x03<<0), /* 3 cycles */ + EBI_ROWCOLDLY_4CLK_gc = (0x04<<0), /* 4 cycles */ + EBI_ROWCOLDLY_5CLK_gc = (0x05<<0), /* 5 cycle */ + EBI_ROWCOLDLY_6CLK_gc = (0x06<<0), /* 6 cycles */ + EBI_ROWCOLDLY_7CLK_gc = (0x07<<0), /* 7 cycles */ +} EBI_ROWCOLDLY_t; + + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_MASTER_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t STATUS; /* Status Register */ + register8_t BAUD; /* Baurd Rate Control Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_MASTER_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* */ +typedef struct TWI_SLAVE_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t STATUS; /* Status Register */ + register8_t ADDR; /* Address Register */ + register8_t DATA; /* Data Register */ +} TWI_SLAVE_t; + +/* +-------------------------------------------------------------------------- +TWI - Two-Wire Interface +-------------------------------------------------------------------------- +*/ + +/* Two-Wire Interface */ +typedef struct TWI_struct +{ + register8_t CTRL; /* TWI Common Control Register */ + TWI_MASTER_t MASTER; /* TWI master module */ + TWI_SLAVE_t SLAVE; /* TWI slave module */ +} TWI_t; + +/* Master Interrupt Level */ +typedef enum TWI_MASTER_INTLVL_enum +{ + TWI_MASTER_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_MASTER_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_MASTER_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_MASTER_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_MASTER_INTLVL_t; + +/* Inactive Timeout */ +typedef enum TWI_MASTER_TIMEOUT_enum +{ + TWI_MASTER_TIMEOUT_DISABLED_gc = (0x00<<2), /* Bus Timeout Disabled */ + TWI_MASTER_TIMEOUT_50US_gc = (0x01<<2), /* 50 Microseconds */ + TWI_MASTER_TIMEOUT_100US_gc = (0x02<<2), /* 100 Microseconds */ + TWI_MASTER_TIMEOUT_200US_gc = (0x03<<2), /* 200 Microseconds */ +} TWI_MASTER_TIMEOUT_t; + +/* Master Command */ +typedef enum TWI_MASTER_CMD_enum +{ + TWI_MASTER_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_MASTER_CMD_REPSTART_gc = (0x01<<0), /* Issue Repeated Start Condition */ + TWI_MASTER_CMD_RECVTRANS_gc = (0x02<<0), /* Receive or Transmit Data */ + TWI_MASTER_CMD_STOP_gc = (0x03<<0), /* Issue Stop Condition */ +} TWI_MASTER_CMD_t; + +/* Master Bus State */ +typedef enum TWI_MASTER_BUSSTATE_enum +{ + TWI_MASTER_BUSSTATE_UNKNOWN_gc = (0x00<<0), /* Unknown Bus State */ + TWI_MASTER_BUSSTATE_IDLE_gc = (0x01<<0), /* Bus is Idle */ + TWI_MASTER_BUSSTATE_OWNER_gc = (0x02<<0), /* This Module Controls The Bus */ + TWI_MASTER_BUSSTATE_BUSY_gc = (0x03<<0), /* The Bus is Busy */ +} TWI_MASTER_BUSSTATE_t; + +/* Slave Interrupt Level */ +typedef enum TWI_SLAVE_INTLVL_enum +{ + TWI_SLAVE_INTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TWI_SLAVE_INTLVL_LO_gc = (0x01<<6), /* Low Level */ + TWI_SLAVE_INTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TWI_SLAVE_INTLVL_HI_gc = (0x03<<6), /* High Level */ +} TWI_SLAVE_INTLVL_t; + +/* Slave Command */ +typedef enum TWI_SLAVE_CMD_enum +{ + TWI_SLAVE_CMD_NOACT_gc = (0x00<<0), /* No Action */ + TWI_SLAVE_CMD_COMPTRANS_gc = (0x02<<0), /* Used To Complete a Transaction */ + TWI_SLAVE_CMD_RESPONSE_gc = (0x03<<0), /* Used in Response to Address/Data Interrupt */ +} TWI_SLAVE_CMD_t; + + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O port Configuration */ +typedef struct PORTCFG_struct +{ + register8_t MPCMASK; /* Multi-pin Configuration Mask */ + register8_t reserved_0x01; + register8_t VPCTRLA; /* Virtual Port Control Register A */ + register8_t VPCTRLB; /* Virtual Port Control Register B */ + register8_t CLKEVOUT; /* Clock and Event Out Register */ +} PORTCFG_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* Virtual Port */ +typedef struct VPORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t OUT; /* I/O Port Output */ + register8_t IN; /* I/O Port Input */ + register8_t INTFLAGS; /* Interrupt Flag Register */ +} VPORT_t; + +/* +-------------------------------------------------------------------------- +PORT - Port Configuration +-------------------------------------------------------------------------- +*/ + +/* I/O Ports */ +typedef struct PORT_struct +{ + register8_t DIR; /* I/O Port Data Direction */ + register8_t DIRSET; /* I/O Port Data Direction Set */ + register8_t DIRCLR; /* I/O Port Data Direction Clear */ + register8_t DIRTGL; /* I/O Port Data Direction Toggle */ + register8_t OUT; /* I/O Port Output */ + register8_t OUTSET; /* I/O Port Output Set */ + register8_t OUTCLR; /* I/O Port Output Clear */ + register8_t OUTTGL; /* I/O Port Output Toggle */ + register8_t IN; /* I/O port Input */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t INT0MASK; /* Port Interrupt 0 Mask */ + register8_t INT1MASK; /* Port Interrupt 1 Mask */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t reserved_0x0F; + register8_t PIN0CTRL; /* Pin 0 Control Register */ + register8_t PIN1CTRL; /* Pin 1 Control Register */ + register8_t PIN2CTRL; /* Pin 2 Control Register */ + register8_t PIN3CTRL; /* Pin 3 Control Register */ + register8_t PIN4CTRL; /* Pin 4 Control Register */ + register8_t PIN5CTRL; /* Pin 5 Control Register */ + register8_t PIN6CTRL; /* Pin 6 Control Register */ + register8_t PIN7CTRL; /* Pin 7 Control Register */ +} PORT_t; + +/* Virtual Port 0 Mapping */ +typedef enum PORTCFG_VP0MAP_enum +{ + PORTCFG_VP0MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP0MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP0MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP0MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP0MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP0MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP0MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP0MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP0MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP0MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP0MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP0MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP0MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP0MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP0MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP0MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP0MAP_t; + +/* Virtual Port 1 Mapping */ +typedef enum PORTCFG_VP1MAP_enum +{ + PORTCFG_VP1MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP1MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP1MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP1MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP1MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP1MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP1MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP1MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP1MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP1MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP1MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP1MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP1MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP1MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP1MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP1MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP1MAP_t; + +/* Virtual Port 2 Mapping */ +typedef enum PORTCFG_VP2MAP_enum +{ + PORTCFG_VP2MAP_PORTA_gc = (0x00<<0), /* Mapped To PORTA */ + PORTCFG_VP2MAP_PORTB_gc = (0x01<<0), /* Mapped To PORTB */ + PORTCFG_VP2MAP_PORTC_gc = (0x02<<0), /* Mapped To PORTC */ + PORTCFG_VP2MAP_PORTD_gc = (0x03<<0), /* Mapped To PORTD */ + PORTCFG_VP2MAP_PORTE_gc = (0x04<<0), /* Mapped To PORTE */ + PORTCFG_VP2MAP_PORTF_gc = (0x05<<0), /* Mapped To PORTF */ + PORTCFG_VP2MAP_PORTG_gc = (0x06<<0), /* Mapped To PORTG */ + PORTCFG_VP2MAP_PORTH_gc = (0x07<<0), /* Mapped To PORTH */ + PORTCFG_VP2MAP_PORTJ_gc = (0x08<<0), /* Mapped To PORTJ */ + PORTCFG_VP2MAP_PORTK_gc = (0x09<<0), /* Mapped To PORTK */ + PORTCFG_VP2MAP_PORTL_gc = (0x0A<<0), /* Mapped To PORTL */ + PORTCFG_VP2MAP_PORTM_gc = (0x0B<<0), /* Mapped To PORTM */ + PORTCFG_VP2MAP_PORTN_gc = (0x0C<<0), /* Mapped To PORTN */ + PORTCFG_VP2MAP_PORTP_gc = (0x0D<<0), /* Mapped To PORTP */ + PORTCFG_VP2MAP_PORTQ_gc = (0x0E<<0), /* Mapped To PORTQ */ + PORTCFG_VP2MAP_PORTR_gc = (0x0F<<0), /* Mapped To PORTR */ +} PORTCFG_VP2MAP_t; + +/* Virtual Port 3 Mapping */ +typedef enum PORTCFG_VP3MAP_enum +{ + PORTCFG_VP3MAP_PORTA_gc = (0x00<<4), /* Mapped To PORTA */ + PORTCFG_VP3MAP_PORTB_gc = (0x01<<4), /* Mapped To PORTB */ + PORTCFG_VP3MAP_PORTC_gc = (0x02<<4), /* Mapped To PORTC */ + PORTCFG_VP3MAP_PORTD_gc = (0x03<<4), /* Mapped To PORTD */ + PORTCFG_VP3MAP_PORTE_gc = (0x04<<4), /* Mapped To PORTE */ + PORTCFG_VP3MAP_PORTF_gc = (0x05<<4), /* Mapped To PORTF */ + PORTCFG_VP3MAP_PORTG_gc = (0x06<<4), /* Mapped To PORTG */ + PORTCFG_VP3MAP_PORTH_gc = (0x07<<4), /* Mapped To PORTH */ + PORTCFG_VP3MAP_PORTJ_gc = (0x08<<4), /* Mapped To PORTJ */ + PORTCFG_VP3MAP_PORTK_gc = (0x09<<4), /* Mapped To PORTK */ + PORTCFG_VP3MAP_PORTL_gc = (0x0A<<4), /* Mapped To PORTL */ + PORTCFG_VP3MAP_PORTM_gc = (0x0B<<4), /* Mapped To PORTM */ + PORTCFG_VP3MAP_PORTN_gc = (0x0C<<4), /* Mapped To PORTN */ + PORTCFG_VP3MAP_PORTP_gc = (0x0D<<4), /* Mapped To PORTP */ + PORTCFG_VP3MAP_PORTQ_gc = (0x0E<<4), /* Mapped To PORTQ */ + PORTCFG_VP3MAP_PORTR_gc = (0x0F<<4), /* Mapped To PORTR */ +} PORTCFG_VP3MAP_t; + +/* Clock Output Port */ +typedef enum PORTCFG_CLKOUT_enum +{ + PORTCFG_CLKOUT_OFF_gc = (0x00<<0), /* Clock Output Disabled */ + PORTCFG_CLKOUT_PC7_gc = (0x01<<0), /* Clock Output on Port C pin 7 */ + PORTCFG_CLKOUT_PD7_gc = (0x02<<0), /* Clock Output on Port D pin 7 */ + PORTCFG_CLKOUT_PE7_gc = (0x03<<0), /* Clock Output on Port E pin 7 */ +} PORTCFG_CLKOUT_t; + +/* Event Output Port */ +typedef enum PORTCFG_EVOUT_enum +{ + PORTCFG_EVOUT_OFF_gc = (0x00<<4), /* Event Output Disabled */ + PORTCFG_EVOUT_PC7_gc = (0x01<<4), /* Event Channel 7 Output on Port C pin 7 */ + PORTCFG_EVOUT_PD7_gc = (0x02<<4), /* Event Channel 7 Output on Port D pin 7 */ + PORTCFG_EVOUT_PE7_gc = (0x03<<4), /* Event Channel 7 Output on Port E pin 7 */ +} PORTCFG_EVOUT_t; + +/* Port Interrupt 0 Level */ +typedef enum PORT_INT0LVL_enum +{ + PORT_INT0LVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + PORT_INT0LVL_LO_gc = (0x01<<0), /* Low Level */ + PORT_INT0LVL_MED_gc = (0x02<<0), /* Medium Level */ + PORT_INT0LVL_HI_gc = (0x03<<0), /* High Level */ +} PORT_INT0LVL_t; + +/* Port Interrupt 1 Level */ +typedef enum PORT_INT1LVL_enum +{ + PORT_INT1LVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + PORT_INT1LVL_LO_gc = (0x01<<2), /* Low Level */ + PORT_INT1LVL_MED_gc = (0x02<<2), /* Medium Level */ + PORT_INT1LVL_HI_gc = (0x03<<2), /* High Level */ +} PORT_INT1LVL_t; + +/* Output/Pull Configuration */ +typedef enum PORT_OPC_enum +{ + PORT_OPC_TOTEM_gc = (0x00<<3), /* Totempole */ + PORT_OPC_BUSKEEPER_gc = (0x01<<3), /* Totempole w/ Bus keeper on Input and Output */ + PORT_OPC_PULLDOWN_gc = (0x02<<3), /* Totempole w/ Pull-down on Input */ + PORT_OPC_PULLUP_gc = (0x03<<3), /* Totempole w/ Pull-up on Input */ + PORT_OPC_WIREDOR_gc = (0x04<<3), /* Wired OR */ + PORT_OPC_WIREDAND_gc = (0x05<<3), /* Wired AND */ + PORT_OPC_WIREDORPULL_gc = (0x06<<3), /* Wired OR w/ Pull-down */ + PORT_OPC_WIREDANDPULL_gc = (0x07<<3), /* Wired AND w/ Pull-up */ +} PORT_OPC_t; + +/* Input/Sense Configuration */ +typedef enum PORT_ISC_enum +{ + PORT_ISC_BOTHEDGES_gc = (0x00<<0), /* Sense Both Edges */ + PORT_ISC_RISING_gc = (0x01<<0), /* Sense Rising Edge */ + PORT_ISC_FALLING_gc = (0x02<<0), /* Sense Falling Edge */ + PORT_ISC_LEVEL_gc = (0x03<<0), /* Sense Level (Transparent For Events) */ + PORT_ISC_INPUT_DISABLE_gc = (0x07<<0), /* Disable Digital Input Buffer */ +} PORT_ISC_t; + + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 0 */ +typedef struct TC0_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + _WORDREGISTER(CCC); /* Compare or Capture C */ + _WORDREGISTER(CCD); /* Compare or Capture D */ + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ + _WORDREGISTER(CCCBUF); /* Compare Or Capture C Buffer */ + _WORDREGISTER(CCDBUF); /* Compare Or Capture D Buffer */ +} TC0_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* 16-bit Timer/Counter 1 */ +typedef struct TC1_struct +{ + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control register C */ + register8_t CTRLD; /* Control Register D */ + register8_t CTRLE; /* Control Register E */ + register8_t reserved_0x05; + register8_t INTCTRLA; /* Interrupt Control Register A */ + register8_t INTCTRLB; /* Interrupt Control Register B */ + register8_t CTRLFCLR; /* Control Register F Clear */ + register8_t CTRLFSET; /* Control Register F Set */ + register8_t CTRLGCLR; /* Control Register G Clear */ + register8_t CTRLGSET; /* Control Register G Set */ + register8_t INTFLAGS; /* Interrupt Flag Register */ + register8_t reserved_0x0D; + register8_t reserved_0x0E; + register8_t TEMP; /* Temporary Register For 16-bit Access */ + register8_t reserved_0x10; + register8_t reserved_0x11; + register8_t reserved_0x12; + register8_t reserved_0x13; + register8_t reserved_0x14; + register8_t reserved_0x15; + register8_t reserved_0x16; + register8_t reserved_0x17; + register8_t reserved_0x18; + register8_t reserved_0x19; + register8_t reserved_0x1A; + register8_t reserved_0x1B; + register8_t reserved_0x1C; + register8_t reserved_0x1D; + register8_t reserved_0x1E; + register8_t reserved_0x1F; + _WORDREGISTER(CNT); /* Count */ + register8_t reserved_0x22; + register8_t reserved_0x23; + register8_t reserved_0x24; + register8_t reserved_0x25; + _WORDREGISTER(PER); /* Period */ + _WORDREGISTER(CCA); /* Compare or Capture A */ + _WORDREGISTER(CCB); /* Compare or Capture B */ + register8_t reserved_0x2C; + register8_t reserved_0x2D; + register8_t reserved_0x2E; + register8_t reserved_0x2F; + register8_t reserved_0x30; + register8_t reserved_0x31; + register8_t reserved_0x32; + register8_t reserved_0x33; + register8_t reserved_0x34; + register8_t reserved_0x35; + _WORDREGISTER(PERBUF); /* Period Buffer */ + _WORDREGISTER(CCABUF); /* Compare Or Capture A Buffer */ + _WORDREGISTER(CCBBUF); /* Compare Or Capture B Buffer */ +} TC1_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* Advanced Waveform Extension */ +typedef struct AWEX_struct +{ + register8_t CTRL; /* Control Register */ + register8_t reserved_0x01; + register8_t FDEVMASK; /* Fault Detection Event Mask */ + register8_t FDCTRL; /* Fault Detection Control Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x05; + register8_t DTBOTH; /* Dead Time Both Sides */ + register8_t DTBOTHBUF; /* Dead Time Both Sides Buffer */ + register8_t DTLS; /* Dead Time Low Side */ + register8_t DTHS; /* Dead Time High Side */ + register8_t DTLSBUF; /* Dead Time Low Side Buffer */ + register8_t DTHSBUF; /* Dead Time High Side Buffer */ + register8_t OUTOVEN; /* Output Override Enable */ +} AWEX_t; + +/* +-------------------------------------------------------------------------- +TC - 16-bit Timer/Counter With PWM +-------------------------------------------------------------------------- +*/ + +/* High-Resolution Extension */ +typedef struct HIRES_struct +{ + register8_t CTRL; /* Control Register */ +} HIRES_t; + +/* Clock Selection */ +typedef enum TC_CLKSEL_enum +{ + TC_CLKSEL_OFF_gc = (0x00<<0), /* Timer Off */ + TC_CLKSEL_DIV1_gc = (0x01<<0), /* System Clock */ + TC_CLKSEL_DIV2_gc = (0x02<<0), /* System Clock / 2 */ + TC_CLKSEL_DIV4_gc = (0x03<<0), /* System Clock / 4 */ + TC_CLKSEL_DIV8_gc = (0x04<<0), /* System Clock / 8 */ + TC_CLKSEL_DIV64_gc = (0x05<<0), /* System Clock / 64 */ + TC_CLKSEL_DIV256_gc = (0x06<<0), /* System Clock / 256 */ + TC_CLKSEL_DIV1024_gc = (0x07<<0), /* System Clock / 1024 */ + TC_CLKSEL_EVCH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_CLKSEL_EVCH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_CLKSEL_EVCH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_CLKSEL_EVCH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_CLKSEL_EVCH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_CLKSEL_EVCH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_CLKSEL_EVCH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_CLKSEL_EVCH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_CLKSEL_t; + +/* Waveform Generation Mode */ +typedef enum TC_WGMODE_enum +{ + TC_WGMODE_NORMAL_gc = (0x00<<0), /* Normal Mode */ + TC_WGMODE_FRQ_gc = (0x01<<0), /* Frequency Generation Mode */ + TC_WGMODE_SS_gc = (0x03<<0), /* Single Slope */ + TC_WGMODE_DS_T_gc = (0x05<<0), /* Dual Slope, Update on TOP */ + TC_WGMODE_DS_TB_gc = (0x06<<0), /* Dual Slope, Update on TOP and BOTTOM */ + TC_WGMODE_DS_B_gc = (0x07<<0), /* Dual Slope, Update on BOTTOM */ +} TC_WGMODE_t; + +/* Event Action */ +typedef enum TC_EVACT_enum +{ + TC_EVACT_OFF_gc = (0x00<<5), /* No Event Action */ + TC_EVACT_CAPT_gc = (0x01<<5), /* Input Capture */ + TC_EVACT_UPDOWN_gc = (0x02<<5), /* Externally Controlled Up/Down Count */ + TC_EVACT_QDEC_gc = (0x03<<5), /* Quadrature Decode */ + TC_EVACT_RESTART_gc = (0x04<<5), /* Restart */ + TC_EVACT_FRW_gc = (0x05<<5), /* Frequency Capture */ + TC_EVACT_PW_gc = (0x06<<5), /* Pulse-width Capture */ +} TC_EVACT_t; + +/* Event Selection */ +typedef enum TC_EVSEL_enum +{ + TC_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + TC_EVSEL_CH0_gc = (0x08<<0), /* Event Channel 0 */ + TC_EVSEL_CH1_gc = (0x09<<0), /* Event Channel 1 */ + TC_EVSEL_CH2_gc = (0x0A<<0), /* Event Channel 2 */ + TC_EVSEL_CH3_gc = (0x0B<<0), /* Event Channel 3 */ + TC_EVSEL_CH4_gc = (0x0C<<0), /* Event Channel 4 */ + TC_EVSEL_CH5_gc = (0x0D<<0), /* Event Channel 5 */ + TC_EVSEL_CH6_gc = (0x0E<<0), /* Event Channel 6 */ + TC_EVSEL_CH7_gc = (0x0F<<0), /* Event Channel 7 */ +} TC_EVSEL_t; + +/* Error Interrupt Level */ +typedef enum TC_ERRINTLVL_enum +{ + TC_ERRINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_ERRINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_ERRINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_ERRINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_ERRINTLVL_t; + +/* Overflow Interrupt Level */ +typedef enum TC_OVFINTLVL_enum +{ + TC_OVFINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_OVFINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_OVFINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_OVFINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_OVFINTLVL_t; + +/* Compare or Capture D Interrupt Level */ +typedef enum TC_CCDINTLVL_enum +{ + TC_CCDINTLVL_OFF_gc = (0x00<<6), /* Interrupt Disabled */ + TC_CCDINTLVL_LO_gc = (0x01<<6), /* Low Level */ + TC_CCDINTLVL_MED_gc = (0x02<<6), /* Medium Level */ + TC_CCDINTLVL_HI_gc = (0x03<<6), /* High Level */ +} TC_CCDINTLVL_t; + +/* Compare or Capture C Interrupt Level */ +typedef enum TC_CCCINTLVL_enum +{ + TC_CCCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + TC_CCCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + TC_CCCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + TC_CCCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} TC_CCCINTLVL_t; + +/* Compare or Capture B Interrupt Level */ +typedef enum TC_CCBINTLVL_enum +{ + TC_CCBINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + TC_CCBINTLVL_LO_gc = (0x01<<2), /* Low Level */ + TC_CCBINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + TC_CCBINTLVL_HI_gc = (0x03<<2), /* High Level */ +} TC_CCBINTLVL_t; + +/* Compare or Capture A Interrupt Level */ +typedef enum TC_CCAINTLVL_enum +{ + TC_CCAINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + TC_CCAINTLVL_LO_gc = (0x01<<0), /* Low Level */ + TC_CCAINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + TC_CCAINTLVL_HI_gc = (0x03<<0), /* High Level */ +} TC_CCAINTLVL_t; + +/* Timer/Counter Command */ +typedef enum TC_CMD_enum +{ + TC_CMD_NONE_gc = (0x00<<2), /* No Command */ + TC_CMD_UPDATE_gc = (0x01<<2), /* Force Update */ + TC_CMD_RESTART_gc = (0x02<<2), /* Force Restart */ + TC_CMD_RESET_gc = (0x03<<2), /* Force Hard Reset */ +} TC_CMD_t; + +/* Fault Detect Action */ +typedef enum AWEX_FDACT_enum +{ + AWEX_FDACT_NONE_gc = (0x00<<0), /* No Fault Protection */ + AWEX_FDACT_CLEAROE_gc = (0x01<<0), /* Clear Output Enable Bits */ + AWEX_FDACT_CLEARDIR_gc = (0x03<<0), /* Clear I/O Port Direction Bits */ +} AWEX_FDACT_t; + +/* High Resolution Enable */ +typedef enum HIRES_HREN_enum +{ + HIRES_HREN_NONE_gc = (0x00<<0), /* No Fault Protection */ + HIRES_HREN_TC0_gc = (0x01<<0), /* Enable High Resolution on Timer/Counter 0 */ + HIRES_HREN_TC1_gc = (0x02<<0), /* Enable High Resolution on Timer/Counter 1 */ + HIRES_HREN_BOTH_gc = (0x03<<0), /* Enable High Resolution both Timer/Counters */ +} HIRES_HREN_t; + + +/* +-------------------------------------------------------------------------- +USART - Universal Asynchronous Receiver-Transmitter +-------------------------------------------------------------------------- +*/ + +/* Universal Synchronous/Asynchronous Receiver/Transmitter */ +typedef struct USART_struct +{ + register8_t DATA; /* Data Register */ + register8_t STATUS; /* Status Register */ + register8_t reserved_0x02; + register8_t CTRLA; /* Control Register A */ + register8_t CTRLB; /* Control Register B */ + register8_t CTRLC; /* Control Register C */ + register8_t BAUDCTRLA; /* Baud Rate Control Register A */ + register8_t BAUDCTRLB; /* Baud Rate Control Register B */ +} USART_t; + +/* Receive Complete Interrupt level */ +typedef enum USART_RXCINTLVL_enum +{ + USART_RXCINTLVL_OFF_gc = (0x00<<4), /* Interrupt Disabled */ + USART_RXCINTLVL_LO_gc = (0x01<<4), /* Low Level */ + USART_RXCINTLVL_MED_gc = (0x02<<4), /* Medium Level */ + USART_RXCINTLVL_HI_gc = (0x03<<4), /* High Level */ +} USART_RXCINTLVL_t; + +/* Transmit Complete Interrupt level */ +typedef enum USART_TXCINTLVL_enum +{ + USART_TXCINTLVL_OFF_gc = (0x00<<2), /* Interrupt Disabled */ + USART_TXCINTLVL_LO_gc = (0x01<<2), /* Low Level */ + USART_TXCINTLVL_MED_gc = (0x02<<2), /* Medium Level */ + USART_TXCINTLVL_HI_gc = (0x03<<2), /* High Level */ +} USART_TXCINTLVL_t; + +/* Data Register Empty Interrupt level */ +typedef enum USART_DREINTLVL_enum +{ + USART_DREINTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + USART_DREINTLVL_LO_gc = (0x01<<0), /* Low Level */ + USART_DREINTLVL_MED_gc = (0x02<<0), /* Medium Level */ + USART_DREINTLVL_HI_gc = (0x03<<0), /* High Level */ +} USART_DREINTLVL_t; + +/* Character Size */ +typedef enum USART_CHSIZE_enum +{ + USART_CHSIZE_5BIT_gc = (0x00<<0), /* Character size: 5 bit */ + USART_CHSIZE_6BIT_gc = (0x01<<0), /* Character size: 6 bit */ + USART_CHSIZE_7BIT_gc = (0x02<<0), /* Character size: 7 bit */ + USART_CHSIZE_8BIT_gc = (0x03<<0), /* Character size: 8 bit */ + USART_CHSIZE_9BIT_gc = (0x07<<0), /* Character size: 9 bit */ +} USART_CHSIZE_t; + +/* Communication Mode */ +typedef enum USART_CMODE_enum +{ + USART_CMODE_ASYNCHRONOUS_gc = (0x00<<6), /* Asynchronous Mode */ + USART_CMODE_SYNCHRONOUS_gc = (0x01<<6), /* Synchronous Mode */ + USART_CMODE_IRDA_gc = (0x02<<6), /* IrDA Mode */ + USART_CMODE_MSPI_gc = (0x03<<6), /* Master SPI Mode */ +} USART_CMODE_t; + +/* Parity Mode */ +typedef enum USART_PMODE_enum +{ + USART_PMODE_DISABLED_gc = (0x00<<4), /* No Parity */ + USART_PMODE_EVEN_gc = (0x02<<4), /* Even Parity */ + USART_PMODE_ODD_gc = (0x03<<4), /* Odd Parity */ +} USART_PMODE_t; + + +/* +-------------------------------------------------------------------------- +SPI - Serial Peripheral Interface +-------------------------------------------------------------------------- +*/ + +/* Serial Peripheral Interface */ +typedef struct SPI_struct +{ + register8_t CTRL; /* Control Register */ + register8_t INTCTRL; /* Interrupt Control Register */ + register8_t STATUS; /* Status Register */ + register8_t DATA; /* Data Register */ +} SPI_t; + +/* SPI Mode */ +typedef enum SPI_MODE_enum +{ + SPI_MODE_0_gc = (0x00<<2), /* SPI Mode 0 */ + SPI_MODE_1_gc = (0x01<<2), /* SPI Mode 1 */ + SPI_MODE_2_gc = (0x02<<2), /* SPI Mode 2 */ + SPI_MODE_3_gc = (0x03<<2), /* SPI Mode 3 */ +} SPI_MODE_t; + +/* Prescaler setting */ +typedef enum SPI_PRESCALER_enum +{ + SPI_PRESCALER_DIV4_gc = (0x00<<0), /* System Clock / 4 */ + SPI_PRESCALER_DIV16_gc = (0x01<<0), /* System Clock / 16 */ + SPI_PRESCALER_DIV64_gc = (0x02<<0), /* System Clock / 64 */ + SPI_PRESCALER_DIV128_gc = (0x03<<0), /* System Clock / 128 */ +} SPI_PRESCALER_t; + +/* Interrupt level */ +typedef enum SPI_INTLVL_enum +{ + SPI_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + SPI_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + SPI_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + SPI_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} SPI_INTLVL_t; + + +/* +-------------------------------------------------------------------------- +IRCOM - IR Communication Module +-------------------------------------------------------------------------- +*/ + +/* IR Communication Module */ +typedef struct IRCOM_struct +{ + register8_t CTRL; /* Control Register */ + register8_t TXPLCTRL; /* IrDA Transmitter Pulse Length Control Register */ + register8_t RXPLCTRL; /* IrDA Receiver Pulse Length Control Register */ +} IRCOM_t; + +/* Event channel selection */ +typedef enum IRDA_EVSEL_enum +{ + IRDA_EVSEL_OFF_gc = (0x00<<0), /* No Event Source */ + IRDA_EVSEL_0_gc = (0x08<<0), /* Event Channel 0 */ + IRDA_EVSEL_1_gc = (0x09<<0), /* Event Channel 1 */ + IRDA_EVSEL_2_gc = (0x0A<<0), /* Event Channel 2 */ + IRDA_EVSEL_3_gc = (0x0B<<0), /* Event Channel 3 */ + IRDA_EVSEL_4_gc = (0x0C<<0), /* Event Channel 4 */ + IRDA_EVSEL_5_gc = (0x0D<<0), /* Event Channel 5 */ + IRDA_EVSEL_6_gc = (0x0E<<0), /* Event Channel 6 */ + IRDA_EVSEL_7_gc = (0x0F<<0), /* Event Channel 7 */ +} IRDA_EVSEL_t; + + +/* +-------------------------------------------------------------------------- +AES - AES Module +-------------------------------------------------------------------------- +*/ + +/* AES Module */ +typedef struct AES_struct +{ + register8_t CTRL; /* AES Control Register */ + register8_t STATUS; /* AES Status Register */ + register8_t STATE; /* AES State Register */ + register8_t KEY; /* AES Key Register */ + register8_t INTCTRL; /* AES Interrupt Control Register */ +} AES_t; + +/* Interrupt level */ +typedef enum AES_INTLVL_enum +{ + AES_INTLVL_OFF_gc = (0x00<<0), /* Interrupt Disabled */ + AES_INTLVL_LO_gc = (0x01<<0), /* Low Level */ + AES_INTLVL_MED_gc = (0x02<<0), /* Medium Level */ + AES_INTLVL_HI_gc = (0x03<<0), /* High Level */ +} AES_INTLVL_t; + + + +/* +========================================================================== +IO Module Instances. Mapped to memory. +========================================================================== +*/ + +#define GPIO (*(GPIO_t *) 0x0000) /* General Purpose IO Registers */ +#define VPORT0 (*(VPORT_t *) 0x0010) /* Virtual Port 0 */ +#define VPORT1 (*(VPORT_t *) 0x0014) /* Virtual Port 1 */ +#define VPORT2 (*(VPORT_t *) 0x0018) /* Virtual Port 2 */ +#define VPORT3 (*(VPORT_t *) 0x001C) /* Virtual Port 3 */ +#define OCD (*(OCD_t *) 0x002E) /* On-Chip Debug System */ +#define CPU (*(CPU_t *) 0x0030) /* CPU Registers */ +#define CLK (*(CLK_t *) 0x0040) /* Clock System */ +#define SLEEP (*(SLEEP_t *) 0x0048) /* Sleep Controller */ +#define OSC (*(OSC_t *) 0x0050) /* Oscillator Control */ +#define DFLLRC32M (*(DFLL_t *) 0x0060) /* DFLL for 32MHz RC Oscillator */ +#define DFLLRC2M (*(DFLL_t *) 0x0068) /* DFLL for 2MHz RC Oscillator */ +#define PR (*(PR_t *) 0x0070) /* Power Reduction */ +#define RST (*(RST_t *) 0x0078) /* Reset Controller */ +#define WDT (*(WDT_t *) 0x0080) /* Watch-Dog Timer */ +#define MCU (*(MCU_t *) 0x0090) /* MCU Control */ +#define PMIC (*(PMIC_t *) 0x00A0) /* Programmable Interrupt Controller */ +#define PORTCFG (*(PORTCFG_t *) 0x00B0) /* Port Configuration */ +#define AES (*(AES_t *) 0x00C0) /* AES Crypto Module */ +#define DMA (*(DMA_t *) 0x0100) /* DMA Controller */ +#define EVSYS (*(EVSYS_t *) 0x0180) /* Event System */ +#define NVM (*(NVM_t *) 0x01C0) /* Non Volatile Memory Controller */ +#define ADCA (*(ADC_t *) 0x0200) /* Analog to Digital Converter A */ +#define ADCB (*(ADC_t *) 0x0240) /* Analog to Digital Converter B */ +#define DACB (*(DAC_t *) 0x0320) /* Digital to Analog Converter B */ +#define ACA (*(AC_t *) 0x0380) /* Analog Comparator A */ +#define ACB (*(AC_t *) 0x0390) /* Analog Comparator B */ +#define RTC (*(RTC_t *) 0x0400) /* Real-Time Counter */ +#define TWIC (*(TWI_t *) 0x0480) /* Two-Wire Interface C */ +#define TWIE (*(TWI_t *) 0x04A0) /* Two-Wire Interface E */ +#define PORTA (*(PORT_t *) 0x0600) /* Port A */ +#define PORTB (*(PORT_t *) 0x0620) /* Port B */ +#define PORTC (*(PORT_t *) 0x0640) /* Port C */ +#define PORTD (*(PORT_t *) 0x0660) /* Port D */ +#define PORTE (*(PORT_t *) 0x0680) /* Port E */ +#define PORTF (*(PORT_t *) 0x06A0) /* Port F */ +#define PORTR (*(PORT_t *) 0x07E0) /* Port R */ +#define TCC0 (*(TC0_t *) 0x0800) /* Timer/Counter C0 */ +#define TCC1 (*(TC1_t *) 0x0840) /* Timer/Counter C1 */ +#define AWEXC (*(AWEX_t *) 0x0880) /* Advanced Waveform Extension C */ +#define HIRESC (*(HIRES_t *) 0x0890) /* High-Resolution Extension C */ +#define USARTC0 (*(USART_t *) 0x08A0) /* Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC1 (*(USART_t *) 0x08B0) /* Universal Asynchronous Receiver-Transmitter C1 */ +#define SPIC (*(SPI_t *) 0x08C0) /* Serial Peripheral Interface C */ +#define IRCOM (*(IRCOM_t *) 0x08F8) /* IR Communication Module */ +#define TCD0 (*(TC0_t *) 0x0900) /* Timer/Counter D0 */ +#define TCD1 (*(TC1_t *) 0x0940) /* Timer/Counter D1 */ +#define HIRESD (*(HIRES_t *) 0x0990) /* High-Resolution Extension D */ +#define USARTD0 (*(USART_t *) 0x09A0) /* Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD1 (*(USART_t *) 0x09B0) /* Universal Asynchronous Receiver-Transmitter D1 */ +#define SPID (*(SPI_t *) 0x09C0) /* Serial Peripheral Interface D */ +#define TCE0 (*(TC0_t *) 0x0A00) /* Timer/Counter E0 */ +#define TCE1 (*(TC1_t *) 0x0A40) /* Timer/Counter E1 */ +#define AWEXE (*(AWEX_t *) 0x0A80) /* Advanced Waveform Extension E */ +#define HIRESE (*(HIRES_t *) 0x0A90) /* High-Resolution Extension E */ +#define USARTE0 (*(USART_t *) 0x0AA0) /* Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE1 (*(USART_t *) 0x0AB0) /* Universal Asynchronous Receiver-Transmitter E1 */ +#define SPIE (*(SPI_t *) 0x0AC0) /* Serial Peripheral Interface E */ +#define TCF0 (*(TC0_t *) 0x0B00) /* Timer/Counter F0 */ +#define HIRESF (*(HIRES_t *) 0x0B90) /* High-Resolution Extension F */ +#define USARTF0 (*(USART_t *) 0x0BA0) /* Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF1 (*(USART_t *) 0x0BB0) /* Universal Asynchronous Receiver-Transmitter F1 */ +#define SPIF (*(SPI_t *) 0x0BC0) /* Serial Peripheral Interface F */ + + +#endif /* !defined (__ASSEMBLER__) */ + + +/* ========== Flattened fully qualified IO register names ========== */ + +/* GPIO - General Purpose IO Registers */ +#define GPIO_GPIO0 _SFR_MEM8(0x0000) +#define GPIO_GPIO1 _SFR_MEM8(0x0001) +#define GPIO_GPIO2 _SFR_MEM8(0x0002) +#define GPIO_GPIO3 _SFR_MEM8(0x0003) +#define GPIO_GPIO4 _SFR_MEM8(0x0004) +#define GPIO_GPIO5 _SFR_MEM8(0x0005) +#define GPIO_GPIO6 _SFR_MEM8(0x0006) +#define GPIO_GPIO7 _SFR_MEM8(0x0007) +#define GPIO_GPIO8 _SFR_MEM8(0x0008) +#define GPIO_GPIO9 _SFR_MEM8(0x0009) +#define GPIO_GPIOA _SFR_MEM8(0x000A) +#define GPIO_GPIOB _SFR_MEM8(0x000B) +#define GPIO_GPIOC _SFR_MEM8(0x000C) +#define GPIO_GPIOD _SFR_MEM8(0x000D) +#define GPIO_GPIOE _SFR_MEM8(0x000E) +#define GPIO_GPIOF _SFR_MEM8(0x000F) + +/* VPORT0 - Virtual Port 0 */ +#define VPORT0_DIR _SFR_MEM8(0x0010) +#define VPORT0_OUT _SFR_MEM8(0x0011) +#define VPORT0_IN _SFR_MEM8(0x0012) +#define VPORT0_INTFLAGS _SFR_MEM8(0x0013) + +/* VPORT1 - Virtual Port 1 */ +#define VPORT1_DIR _SFR_MEM8(0x0014) +#define VPORT1_OUT _SFR_MEM8(0x0015) +#define VPORT1_IN _SFR_MEM8(0x0016) +#define VPORT1_INTFLAGS _SFR_MEM8(0x0017) + +/* VPORT2 - Virtual Port 2 */ +#define VPORT2_DIR _SFR_MEM8(0x0018) +#define VPORT2_OUT _SFR_MEM8(0x0019) +#define VPORT2_IN _SFR_MEM8(0x001A) +#define VPORT2_INTFLAGS _SFR_MEM8(0x001B) + +/* VPORT3 - Virtual Port 3 */ +#define VPORT3_DIR _SFR_MEM8(0x001C) +#define VPORT3_OUT _SFR_MEM8(0x001D) +#define VPORT3_IN _SFR_MEM8(0x001E) +#define VPORT3_INTFLAGS _SFR_MEM8(0x001F) + +/* OCD - On-Chip Debug System */ +#define OCD_OCDR0 _SFR_MEM8(0x002E) +#define OCD_OCDR1 _SFR_MEM8(0x002F) + +/* CPU - CPU Registers */ +#define CPU_CCP _SFR_MEM8(0x0034) +#define CPU_RAMPD _SFR_MEM8(0x0038) +#define CPU_RAMPX _SFR_MEM8(0x0039) +#define CPU_RAMPY _SFR_MEM8(0x003A) +#define CPU_RAMPZ _SFR_MEM8(0x003B) +#define CPU_EIND _SFR_MEM8(0x003C) +#define CPU_SPL _SFR_MEM8(0x003D) +#define CPU_SPH _SFR_MEM8(0x003E) +#define CPU_SREG _SFR_MEM8(0x003F) + +/* CLK - Clock System */ +#define CLK_CTRL _SFR_MEM8(0x0040) +#define CLK_PSCTRL _SFR_MEM8(0x0041) +#define CLK_LOCK _SFR_MEM8(0x0042) +#define CLK_RTCCTRL _SFR_MEM8(0x0043) + +/* SLEEP - Sleep Controller */ +#define SLEEP_CTRL _SFR_MEM8(0x0048) + +/* OSC - Oscillator Control */ +#define OSC_CTRL _SFR_MEM8(0x0050) +#define OSC_STATUS _SFR_MEM8(0x0051) +#define OSC_XOSCCTRL _SFR_MEM8(0x0052) +#define OSC_XOSCFAIL _SFR_MEM8(0x0053) +#define OSC_RC32KCAL _SFR_MEM8(0x0054) +#define OSC_PLLCTRL _SFR_MEM8(0x0055) +#define OSC_DFLLCTRL _SFR_MEM8(0x0056) + +/* DFLLRC32M - DFLL for 32MHz RC Oscillator */ +#define DFLLRC32M_CTRL _SFR_MEM8(0x0060) +#define DFLLRC32M_CALA _SFR_MEM8(0x0062) +#define DFLLRC32M_CALB _SFR_MEM8(0x0063) +#define DFLLRC32M_OSCCNT0 _SFR_MEM8(0x0064) +#define DFLLRC32M_OSCCNT1 _SFR_MEM8(0x0065) +#define DFLLRC32M_OSCCNT2 _SFR_MEM8(0x0066) + +/* DFLLRC2M - DFLL for 2MHz RC Oscillator */ +#define DFLLRC2M_CTRL _SFR_MEM8(0x0068) +#define DFLLRC2M_CALA _SFR_MEM8(0x006A) +#define DFLLRC2M_CALB _SFR_MEM8(0x006B) +#define DFLLRC2M_OSCCNT0 _SFR_MEM8(0x006C) +#define DFLLRC2M_OSCCNT1 _SFR_MEM8(0x006D) +#define DFLLRC2M_OSCCNT2 _SFR_MEM8(0x006E) + +/* PR - Power Reduction */ +#define PR_PR _SFR_MEM8(0x0070) +#define PR_PRPA _SFR_MEM8(0x0071) +#define PR_PRPB _SFR_MEM8(0x0072) +#define PR_PRPC _SFR_MEM8(0x0073) +#define PR_PRPD _SFR_MEM8(0x0074) +#define PR_PRPE _SFR_MEM8(0x0075) +#define PR_PRPF _SFR_MEM8(0x0076) + +/* RST - Reset Controller */ +#define RST_STATUS _SFR_MEM8(0x0078) +#define RST_CTRL _SFR_MEM8(0x0079) + +/* WDT - Watch-Dog Timer */ +#define WDT_CTRL _SFR_MEM8(0x0080) +#define WDT_WINCTRL _SFR_MEM8(0x0081) +#define WDT_STATUS _SFR_MEM8(0x0082) + +/* MCU - MCU Control */ +#define MCU_DEVID0 _SFR_MEM8(0x0090) +#define MCU_DEVID1 _SFR_MEM8(0x0091) +#define MCU_DEVID2 _SFR_MEM8(0x0092) +#define MCU_REVID _SFR_MEM8(0x0093) +#define MCU_JTAGUID _SFR_MEM8(0x0094) +#define MCU_MCUCR _SFR_MEM8(0x0096) +#define MCU_EVSYSLOCK _SFR_MEM8(0x0098) +#define MCU_AWEXLOCK _SFR_MEM8(0x0099) + +/* PMIC - Programmable Interrupt Controller */ +#define PMIC_STATUS _SFR_MEM8(0x00A0) +#define PMIC_INTPRI _SFR_MEM8(0x00A1) +#define PMIC_CTRL _SFR_MEM8(0x00A2) + +/* PORTCFG - Port Configuration */ +#define PORTCFG_MPCMASK _SFR_MEM8(0x00B0) +#define PORTCFG_VPCTRLA _SFR_MEM8(0x00B2) +#define PORTCFG_VPCTRLB _SFR_MEM8(0x00B3) +#define PORTCFG_CLKEVOUT _SFR_MEM8(0x00B4) + +/* AES - AES Crypto Module */ +#define AES_CTRL _SFR_MEM8(0x00C0) +#define AES_STATUS _SFR_MEM8(0x00C1) +#define AES_STATE _SFR_MEM8(0x00C2) +#define AES_KEY _SFR_MEM8(0x00C3) +#define AES_INTCTRL _SFR_MEM8(0x00C4) + +/* DMA - DMA Controller */ +#define DMA_CTRL _SFR_MEM8(0x0100) +#define DMA_INTFLAGS _SFR_MEM8(0x0103) +#define DMA_STATUS _SFR_MEM8(0x0104) +#define DMA_TEMP _SFR_MEM16(0x0106) +#define DMA_CH0_CTRLA _SFR_MEM8(0x0110) +#define DMA_CH0_CTRLB _SFR_MEM8(0x0111) +#define DMA_CH0_ADDRCTRL _SFR_MEM8(0x0112) +#define DMA_CH0_TRIGSRC _SFR_MEM8(0x0113) +#define DMA_CH0_TRFCNT _SFR_MEM16(0x0114) +#define DMA_CH0_REPCNT _SFR_MEM8(0x0116) +#define DMA_CH0_SRCADDR0 _SFR_MEM8(0x0118) +#define DMA_CH0_SRCADDR1 _SFR_MEM8(0x0119) +#define DMA_CH0_SRCADDR2 _SFR_MEM8(0x011A) +#define DMA_CH0_DESTADDR0 _SFR_MEM8(0x011C) +#define DMA_CH0_DESTADDR1 _SFR_MEM8(0x011D) +#define DMA_CH0_DESTADDR2 _SFR_MEM8(0x011E) +#define DMA_CH1_CTRLA _SFR_MEM8(0x0120) +#define DMA_CH1_CTRLB _SFR_MEM8(0x0121) +#define DMA_CH1_ADDRCTRL _SFR_MEM8(0x0122) +#define DMA_CH1_TRIGSRC _SFR_MEM8(0x0123) +#define DMA_CH1_TRFCNT _SFR_MEM16(0x0124) +#define DMA_CH1_REPCNT _SFR_MEM8(0x0126) +#define DMA_CH1_SRCADDR0 _SFR_MEM8(0x0128) +#define DMA_CH1_SRCADDR1 _SFR_MEM8(0x0129) +#define DMA_CH1_SRCADDR2 _SFR_MEM8(0x012A) +#define DMA_CH1_DESTADDR0 _SFR_MEM8(0x012C) +#define DMA_CH1_DESTADDR1 _SFR_MEM8(0x012D) +#define DMA_CH1_DESTADDR2 _SFR_MEM8(0x012E) +#define DMA_CH2_CTRLA _SFR_MEM8(0x0130) +#define DMA_CH2_CTRLB _SFR_MEM8(0x0131) +#define DMA_CH2_ADDRCTRL _SFR_MEM8(0x0132) +#define DMA_CH2_TRIGSRC _SFR_MEM8(0x0133) +#define DMA_CH2_TRFCNT _SFR_MEM16(0x0134) +#define DMA_CH2_REPCNT _SFR_MEM8(0x0136) +#define DMA_CH2_SRCADDR0 _SFR_MEM8(0x0138) +#define DMA_CH2_SRCADDR1 _SFR_MEM8(0x0139) +#define DMA_CH2_SRCADDR2 _SFR_MEM8(0x013A) +#define DMA_CH2_DESTADDR0 _SFR_MEM8(0x013C) +#define DMA_CH2_DESTADDR1 _SFR_MEM8(0x013D) +#define DMA_CH2_DESTADDR2 _SFR_MEM8(0x013E) +#define DMA_CH3_CTRLA _SFR_MEM8(0x0140) +#define DMA_CH3_CTRLB _SFR_MEM8(0x0141) +#define DMA_CH3_ADDRCTRL _SFR_MEM8(0x0142) +#define DMA_CH3_TRIGSRC _SFR_MEM8(0x0143) +#define DMA_CH3_TRFCNT _SFR_MEM16(0x0144) +#define DMA_CH3_REPCNT _SFR_MEM8(0x0146) +#define DMA_CH3_SRCADDR0 _SFR_MEM8(0x0148) +#define DMA_CH3_SRCADDR1 _SFR_MEM8(0x0149) +#define DMA_CH3_SRCADDR2 _SFR_MEM8(0x014A) +#define DMA_CH3_DESTADDR0 _SFR_MEM8(0x014C) +#define DMA_CH3_DESTADDR1 _SFR_MEM8(0x014D) +#define DMA_CH3_DESTADDR2 _SFR_MEM8(0x014E) + +/* EVSYS - Event System */ +#define EVSYS_CH0MUX _SFR_MEM8(0x0180) +#define EVSYS_CH1MUX _SFR_MEM8(0x0181) +#define EVSYS_CH2MUX _SFR_MEM8(0x0182) +#define EVSYS_CH3MUX _SFR_MEM8(0x0183) +#define EVSYS_CH4MUX _SFR_MEM8(0x0184) +#define EVSYS_CH5MUX _SFR_MEM8(0x0185) +#define EVSYS_CH6MUX _SFR_MEM8(0x0186) +#define EVSYS_CH7MUX _SFR_MEM8(0x0187) +#define EVSYS_CH0CTRL _SFR_MEM8(0x0188) +#define EVSYS_CH1CTRL _SFR_MEM8(0x0189) +#define EVSYS_CH2CTRL _SFR_MEM8(0x018A) +#define EVSYS_CH3CTRL _SFR_MEM8(0x018B) +#define EVSYS_CH4CTRL _SFR_MEM8(0x018C) +#define EVSYS_CH5CTRL _SFR_MEM8(0x018D) +#define EVSYS_CH6CTRL _SFR_MEM8(0x018E) +#define EVSYS_CH7CTRL _SFR_MEM8(0x018F) +#define EVSYS_STROBE _SFR_MEM8(0x0190) +#define EVSYS_DATA _SFR_MEM8(0x0191) + +/* NVM - Non Volatile Memory Controller */ +#define NVM_ADDR0 _SFR_MEM8(0x01C0) +#define NVM_ADDR1 _SFR_MEM8(0x01C1) +#define NVM_ADDR2 _SFR_MEM8(0x01C2) +#define NVM_DATA0 _SFR_MEM8(0x01C4) +#define NVM_DATA1 _SFR_MEM8(0x01C5) +#define NVM_DATA2 _SFR_MEM8(0x01C6) +#define NVM_CMD _SFR_MEM8(0x01CA) +#define NVM_CTRLA _SFR_MEM8(0x01CB) +#define NVM_CTRLB _SFR_MEM8(0x01CC) +#define NVM_INTCTRL _SFR_MEM8(0x01CD) +#define NVM_STATUS _SFR_MEM8(0x01CF) +#define NVM_LOCKBITS _SFR_MEM8(0x01D0) + +/* ADCA - Analog to Digital Converter A */ +#define ADCA_CTRLA _SFR_MEM8(0x0200) +#define ADCA_CTRLB _SFR_MEM8(0x0201) +#define ADCA_REFCTRL _SFR_MEM8(0x0202) +#define ADCA_EVCTRL _SFR_MEM8(0x0203) +#define ADCA_PRESCALER _SFR_MEM8(0x0204) +#define ADCA_CALCTRL _SFR_MEM8(0x0205) +#define ADCA_INTFLAGS _SFR_MEM8(0x0206) +#define ADCA_CALIB _SFR_MEM8(0x020C) +#define ADCA_CH0RES _SFR_MEM16(0x0210) +#define ADCA_CH1RES _SFR_MEM16(0x0212) +#define ADCA_CH2RES _SFR_MEM16(0x0214) +#define ADCA_CH3RES _SFR_MEM16(0x0216) +#define ADCA_CMP _SFR_MEM16(0x0218) +#define ADCA_CH0_CTRL _SFR_MEM8(0x0220) +#define ADCA_CH0_MUXCTRL _SFR_MEM8(0x0221) +#define ADCA_CH0_INTCTRL _SFR_MEM8(0x0222) +#define ADCA_CH0_INTFLAGS _SFR_MEM8(0x0223) +#define ADCA_CH0_RES _SFR_MEM16(0x0224) +#define ADCA_CH1_CTRL _SFR_MEM8(0x0228) +#define ADCA_CH1_MUXCTRL _SFR_MEM8(0x0229) +#define ADCA_CH1_INTCTRL _SFR_MEM8(0x022A) +#define ADCA_CH1_INTFLAGS _SFR_MEM8(0x022B) +#define ADCA_CH1_RES _SFR_MEM16(0x022C) +#define ADCA_CH2_CTRL _SFR_MEM8(0x0230) +#define ADCA_CH2_MUXCTRL _SFR_MEM8(0x0231) +#define ADCA_CH2_INTCTRL _SFR_MEM8(0x0232) +#define ADCA_CH2_INTFLAGS _SFR_MEM8(0x0233) +#define ADCA_CH2_RES _SFR_MEM16(0x0234) +#define ADCA_CH3_CTRL _SFR_MEM8(0x0238) +#define ADCA_CH3_MUXCTRL _SFR_MEM8(0x0239) +#define ADCA_CH3_INTCTRL _SFR_MEM8(0x023A) +#define ADCA_CH3_INTFLAGS _SFR_MEM8(0x023B) +#define ADCA_CH3_RES _SFR_MEM16(0x023C) + +/* ADCB - Analog to Digital Converter B */ +#define ADCB_CTRLA _SFR_MEM8(0x0240) +#define ADCB_CTRLB _SFR_MEM8(0x0241) +#define ADCB_REFCTRL _SFR_MEM8(0x0242) +#define ADCB_EVCTRL _SFR_MEM8(0x0243) +#define ADCB_PRESCALER _SFR_MEM8(0x0244) +#define ADCB_CALCTRL _SFR_MEM8(0x0245) +#define ADCB_INTFLAGS _SFR_MEM8(0x0246) +#define ADCB_CALIB _SFR_MEM8(0x024C) +#define ADCB_CH0RES _SFR_MEM16(0x0250) +#define ADCB_CH1RES _SFR_MEM16(0x0252) +#define ADCB_CH2RES _SFR_MEM16(0x0254) +#define ADCB_CH3RES _SFR_MEM16(0x0256) +#define ADCB_CMP _SFR_MEM16(0x0258) +#define ADCB_CH0_CTRL _SFR_MEM8(0x0260) +#define ADCB_CH0_MUXCTRL _SFR_MEM8(0x0261) +#define ADCB_CH0_INTCTRL _SFR_MEM8(0x0262) +#define ADCB_CH0_INTFLAGS _SFR_MEM8(0x0263) +#define ADCB_CH0_RES _SFR_MEM16(0x0264) +#define ADCB_CH1_CTRL _SFR_MEM8(0x0268) +#define ADCB_CH1_MUXCTRL _SFR_MEM8(0x0269) +#define ADCB_CH1_INTCTRL _SFR_MEM8(0x026A) +#define ADCB_CH1_INTFLAGS _SFR_MEM8(0x026B) +#define ADCB_CH1_RES _SFR_MEM16(0x026C) +#define ADCB_CH2_CTRL _SFR_MEM8(0x0270) +#define ADCB_CH2_MUXCTRL _SFR_MEM8(0x0271) +#define ADCB_CH2_INTCTRL _SFR_MEM8(0x0272) +#define ADCB_CH2_INTFLAGS _SFR_MEM8(0x0273) +#define ADCB_CH2_RES _SFR_MEM16(0x0274) +#define ADCB_CH3_CTRL _SFR_MEM8(0x0278) +#define ADCB_CH3_MUXCTRL _SFR_MEM8(0x0279) +#define ADCB_CH3_INTCTRL _SFR_MEM8(0x027A) +#define ADCB_CH3_INTFLAGS _SFR_MEM8(0x027B) +#define ADCB_CH3_RES _SFR_MEM16(0x027C) + +/* DACB - Digital to Analog Converter B */ +#define DACB_CTRLA _SFR_MEM8(0x0320) +#define DACB_CTRLB _SFR_MEM8(0x0321) +#define DACB_CTRLC _SFR_MEM8(0x0322) +#define DACB_EVCTRL _SFR_MEM8(0x0323) +#define DACB_TIMCTRL _SFR_MEM8(0x0324) +#define DACB_STATUS _SFR_MEM8(0x0325) +#define DACB_GAINCAL _SFR_MEM8(0x0328) +#define DACB_OFFSETCAL _SFR_MEM8(0x0329) +#define DACB_CH0DATA _SFR_MEM16(0x0338) +#define DACB_CH1DATA _SFR_MEM16(0x033A) + +/* ACA - Analog Comparator A */ +#define ACA_AC0CTRL _SFR_MEM8(0x0380) +#define ACA_AC1CTRL _SFR_MEM8(0x0381) +#define ACA_AC0MUXCTRL _SFR_MEM8(0x0382) +#define ACA_AC1MUXCTRL _SFR_MEM8(0x0383) +#define ACA_CTRLA _SFR_MEM8(0x0384) +#define ACA_CTRLB _SFR_MEM8(0x0385) +#define ACA_WINCTRL _SFR_MEM8(0x0386) +#define ACA_STATUS _SFR_MEM8(0x0387) + +/* ACB - Analog Comparator B */ +#define ACB_AC0CTRL _SFR_MEM8(0x0390) +#define ACB_AC1CTRL _SFR_MEM8(0x0391) +#define ACB_AC0MUXCTRL _SFR_MEM8(0x0392) +#define ACB_AC1MUXCTRL _SFR_MEM8(0x0393) +#define ACB_CTRLA _SFR_MEM8(0x0394) +#define ACB_CTRLB _SFR_MEM8(0x0395) +#define ACB_WINCTRL _SFR_MEM8(0x0396) +#define ACB_STATUS _SFR_MEM8(0x0397) + +/* RTC - Real-Time Counter */ +#define RTC_CTRL _SFR_MEM8(0x0400) +#define RTC_STATUS _SFR_MEM8(0x0401) +#define RTC_INTCTRL _SFR_MEM8(0x0402) +#define RTC_INTFLAGS _SFR_MEM8(0x0403) +#define RTC_TEMP _SFR_MEM8(0x0404) +#define RTC_CNT _SFR_MEM16(0x0408) +#define RTC_PER _SFR_MEM16(0x040A) +#define RTC_COMP _SFR_MEM16(0x040C) + +/* TWIC - Two-Wire Interface C */ +#define TWIC_CTRL _SFR_MEM8(0x0480) +#define TWIC_MASTER_CTRLA _SFR_MEM8(0x0481) +#define TWIC_MASTER_CTRLB _SFR_MEM8(0x0482) +#define TWIC_MASTER_CTRLC _SFR_MEM8(0x0483) +#define TWIC_MASTER_STATUS _SFR_MEM8(0x0484) +#define TWIC_MASTER_BAUD _SFR_MEM8(0x0485) +#define TWIC_MASTER_ADDR _SFR_MEM8(0x0486) +#define TWIC_MASTER_DATA _SFR_MEM8(0x0487) +#define TWIC_SLAVE_CTRLA _SFR_MEM8(0x0488) +#define TWIC_SLAVE_CTRLB _SFR_MEM8(0x0489) +#define TWIC_SLAVE_STATUS _SFR_MEM8(0x048A) +#define TWIC_SLAVE_ADDR _SFR_MEM8(0x048B) +#define TWIC_SLAVE_DATA _SFR_MEM8(0x048C) + +/* TWIE - Two-Wire Interface E */ +#define TWIE_CTRL _SFR_MEM8(0x04A0) +#define TWIE_MASTER_CTRLA _SFR_MEM8(0x04A1) +#define TWIE_MASTER_CTRLB _SFR_MEM8(0x04A2) +#define TWIE_MASTER_CTRLC _SFR_MEM8(0x04A3) +#define TWIE_MASTER_STATUS _SFR_MEM8(0x04A4) +#define TWIE_MASTER_BAUD _SFR_MEM8(0x04A5) +#define TWIE_MASTER_ADDR _SFR_MEM8(0x04A6) +#define TWIE_MASTER_DATA _SFR_MEM8(0x04A7) +#define TWIE_SLAVE_CTRLA _SFR_MEM8(0x04A8) +#define TWIE_SLAVE_CTRLB _SFR_MEM8(0x04A9) +#define TWIE_SLAVE_STATUS _SFR_MEM8(0x04AA) +#define TWIE_SLAVE_ADDR _SFR_MEM8(0x04AB) +#define TWIE_SLAVE_DATA _SFR_MEM8(0x04AC) + +/* PORTA - Port A */ +#define PORTA_DIR _SFR_MEM8(0x0600) +#define PORTA_DIRSET _SFR_MEM8(0x0601) +#define PORTA_DIRCLR _SFR_MEM8(0x0602) +#define PORTA_DIRTGL _SFR_MEM8(0x0603) +#define PORTA_OUT _SFR_MEM8(0x0604) +#define PORTA_OUTSET _SFR_MEM8(0x0605) +#define PORTA_OUTCLR _SFR_MEM8(0x0606) +#define PORTA_OUTTGL _SFR_MEM8(0x0607) +#define PORTA_IN _SFR_MEM8(0x0608) +#define PORTA_INTCTRL _SFR_MEM8(0x0609) +#define PORTA_INT0MASK _SFR_MEM8(0x060A) +#define PORTA_INT1MASK _SFR_MEM8(0x060B) +#define PORTA_INTFLAGS _SFR_MEM8(0x060C) +#define PORTA_PIN0CTRL _SFR_MEM8(0x0610) +#define PORTA_PIN1CTRL _SFR_MEM8(0x0611) +#define PORTA_PIN2CTRL _SFR_MEM8(0x0612) +#define PORTA_PIN3CTRL _SFR_MEM8(0x0613) +#define PORTA_PIN4CTRL _SFR_MEM8(0x0614) +#define PORTA_PIN5CTRL _SFR_MEM8(0x0615) +#define PORTA_PIN6CTRL _SFR_MEM8(0x0616) +#define PORTA_PIN7CTRL _SFR_MEM8(0x0617) + +/* PORTB - Port B */ +#define PORTB_DIR _SFR_MEM8(0x0620) +#define PORTB_DIRSET _SFR_MEM8(0x0621) +#define PORTB_DIRCLR _SFR_MEM8(0x0622) +#define PORTB_DIRTGL _SFR_MEM8(0x0623) +#define PORTB_OUT _SFR_MEM8(0x0624) +#define PORTB_OUTSET _SFR_MEM8(0x0625) +#define PORTB_OUTCLR _SFR_MEM8(0x0626) +#define PORTB_OUTTGL _SFR_MEM8(0x0627) +#define PORTB_IN _SFR_MEM8(0x0628) +#define PORTB_INTCTRL _SFR_MEM8(0x0629) +#define PORTB_INT0MASK _SFR_MEM8(0x062A) +#define PORTB_INT1MASK _SFR_MEM8(0x062B) +#define PORTB_INTFLAGS _SFR_MEM8(0x062C) +#define PORTB_PIN0CTRL _SFR_MEM8(0x0630) +#define PORTB_PIN1CTRL _SFR_MEM8(0x0631) +#define PORTB_PIN2CTRL _SFR_MEM8(0x0632) +#define PORTB_PIN3CTRL _SFR_MEM8(0x0633) +#define PORTB_PIN4CTRL _SFR_MEM8(0x0634) +#define PORTB_PIN5CTRL _SFR_MEM8(0x0635) +#define PORTB_PIN6CTRL _SFR_MEM8(0x0636) +#define PORTB_PIN7CTRL _SFR_MEM8(0x0637) + +/* PORTC - Port C */ +#define PORTC_DIR _SFR_MEM8(0x0640) +#define PORTC_DIRSET _SFR_MEM8(0x0641) +#define PORTC_DIRCLR _SFR_MEM8(0x0642) +#define PORTC_DIRTGL _SFR_MEM8(0x0643) +#define PORTC_OUT _SFR_MEM8(0x0644) +#define PORTC_OUTSET _SFR_MEM8(0x0645) +#define PORTC_OUTCLR _SFR_MEM8(0x0646) +#define PORTC_OUTTGL _SFR_MEM8(0x0647) +#define PORTC_IN _SFR_MEM8(0x0648) +#define PORTC_INTCTRL _SFR_MEM8(0x0649) +#define PORTC_INT0MASK _SFR_MEM8(0x064A) +#define PORTC_INT1MASK _SFR_MEM8(0x064B) +#define PORTC_INTFLAGS _SFR_MEM8(0x064C) +#define PORTC_PIN0CTRL _SFR_MEM8(0x0650) +#define PORTC_PIN1CTRL _SFR_MEM8(0x0651) +#define PORTC_PIN2CTRL _SFR_MEM8(0x0652) +#define PORTC_PIN3CTRL _SFR_MEM8(0x0653) +#define PORTC_PIN4CTRL _SFR_MEM8(0x0654) +#define PORTC_PIN5CTRL _SFR_MEM8(0x0655) +#define PORTC_PIN6CTRL _SFR_MEM8(0x0656) +#define PORTC_PIN7CTRL _SFR_MEM8(0x0657) + +/* PORTD - Port D */ +#define PORTD_DIR _SFR_MEM8(0x0660) +#define PORTD_DIRSET _SFR_MEM8(0x0661) +#define PORTD_DIRCLR _SFR_MEM8(0x0662) +#define PORTD_DIRTGL _SFR_MEM8(0x0663) +#define PORTD_OUT _SFR_MEM8(0x0664) +#define PORTD_OUTSET _SFR_MEM8(0x0665) +#define PORTD_OUTCLR _SFR_MEM8(0x0666) +#define PORTD_OUTTGL _SFR_MEM8(0x0667) +#define PORTD_IN _SFR_MEM8(0x0668) +#define PORTD_INTCTRL _SFR_MEM8(0x0669) +#define PORTD_INT0MASK _SFR_MEM8(0x066A) +#define PORTD_INT1MASK _SFR_MEM8(0x066B) +#define PORTD_INTFLAGS _SFR_MEM8(0x066C) +#define PORTD_PIN0CTRL _SFR_MEM8(0x0670) +#define PORTD_PIN1CTRL _SFR_MEM8(0x0671) +#define PORTD_PIN2CTRL _SFR_MEM8(0x0672) +#define PORTD_PIN3CTRL _SFR_MEM8(0x0673) +#define PORTD_PIN4CTRL _SFR_MEM8(0x0674) +#define PORTD_PIN5CTRL _SFR_MEM8(0x0675) +#define PORTD_PIN6CTRL _SFR_MEM8(0x0676) +#define PORTD_PIN7CTRL _SFR_MEM8(0x0677) + +/* PORTE - Port E */ +#define PORTE_DIR _SFR_MEM8(0x0680) +#define PORTE_DIRSET _SFR_MEM8(0x0681) +#define PORTE_DIRCLR _SFR_MEM8(0x0682) +#define PORTE_DIRTGL _SFR_MEM8(0x0683) +#define PORTE_OUT _SFR_MEM8(0x0684) +#define PORTE_OUTSET _SFR_MEM8(0x0685) +#define PORTE_OUTCLR _SFR_MEM8(0x0686) +#define PORTE_OUTTGL _SFR_MEM8(0x0687) +#define PORTE_IN _SFR_MEM8(0x0688) +#define PORTE_INTCTRL _SFR_MEM8(0x0689) +#define PORTE_INT0MASK _SFR_MEM8(0x068A) +#define PORTE_INT1MASK _SFR_MEM8(0x068B) +#define PORTE_INTFLAGS _SFR_MEM8(0x068C) +#define PORTE_PIN0CTRL _SFR_MEM8(0x0690) +#define PORTE_PIN1CTRL _SFR_MEM8(0x0691) +#define PORTE_PIN2CTRL _SFR_MEM8(0x0692) +#define PORTE_PIN3CTRL _SFR_MEM8(0x0693) +#define PORTE_PIN4CTRL _SFR_MEM8(0x0694) +#define PORTE_PIN5CTRL _SFR_MEM8(0x0695) +#define PORTE_PIN6CTRL _SFR_MEM8(0x0696) +#define PORTE_PIN7CTRL _SFR_MEM8(0x0697) + +/* PORTF - Port F */ +#define PORTF_DIR _SFR_MEM8(0x06A0) +#define PORTF_DIRSET _SFR_MEM8(0x06A1) +#define PORTF_DIRCLR _SFR_MEM8(0x06A2) +#define PORTF_DIRTGL _SFR_MEM8(0x06A3) +#define PORTF_OUT _SFR_MEM8(0x06A4) +#define PORTF_OUTSET _SFR_MEM8(0x06A5) +#define PORTF_OUTCLR _SFR_MEM8(0x06A6) +#define PORTF_OUTTGL _SFR_MEM8(0x06A7) +#define PORTF_IN _SFR_MEM8(0x06A8) +#define PORTF_INTCTRL _SFR_MEM8(0x06A9) +#define PORTF_INT0MASK _SFR_MEM8(0x06AA) +#define PORTF_INT1MASK _SFR_MEM8(0x06AB) +#define PORTF_INTFLAGS _SFR_MEM8(0x06AC) +#define PORTF_PIN0CTRL _SFR_MEM8(0x06B0) +#define PORTF_PIN1CTRL _SFR_MEM8(0x06B1) +#define PORTF_PIN2CTRL _SFR_MEM8(0x06B2) +#define PORTF_PIN3CTRL _SFR_MEM8(0x06B3) +#define PORTF_PIN4CTRL _SFR_MEM8(0x06B4) +#define PORTF_PIN5CTRL _SFR_MEM8(0x06B5) +#define PORTF_PIN6CTRL _SFR_MEM8(0x06B6) +#define PORTF_PIN7CTRL _SFR_MEM8(0x06B7) + +/* PORTR - Port R */ +#define PORTR_DIR _SFR_MEM8(0x07E0) +#define PORTR_DIRSET _SFR_MEM8(0x07E1) +#define PORTR_DIRCLR _SFR_MEM8(0x07E2) +#define PORTR_DIRTGL _SFR_MEM8(0x07E3) +#define PORTR_OUT _SFR_MEM8(0x07E4) +#define PORTR_OUTSET _SFR_MEM8(0x07E5) +#define PORTR_OUTCLR _SFR_MEM8(0x07E6) +#define PORTR_OUTTGL _SFR_MEM8(0x07E7) +#define PORTR_IN _SFR_MEM8(0x07E8) +#define PORTR_INTCTRL _SFR_MEM8(0x07E9) +#define PORTR_INT0MASK _SFR_MEM8(0x07EA) +#define PORTR_INT1MASK _SFR_MEM8(0x07EB) +#define PORTR_INTFLAGS _SFR_MEM8(0x07EC) +#define PORTR_PIN0CTRL _SFR_MEM8(0x07F0) +#define PORTR_PIN1CTRL _SFR_MEM8(0x07F1) +#define PORTR_PIN2CTRL _SFR_MEM8(0x07F2) +#define PORTR_PIN3CTRL _SFR_MEM8(0x07F3) +#define PORTR_PIN4CTRL _SFR_MEM8(0x07F4) +#define PORTR_PIN5CTRL _SFR_MEM8(0x07F5) +#define PORTR_PIN6CTRL _SFR_MEM8(0x07F6) +#define PORTR_PIN7CTRL _SFR_MEM8(0x07F7) + +/* TCC0 - Timer/Counter C0 */ +#define TCC0_CTRLA _SFR_MEM8(0x0800) +#define TCC0_CTRLB _SFR_MEM8(0x0801) +#define TCC0_CTRLC _SFR_MEM8(0x0802) +#define TCC0_CTRLD _SFR_MEM8(0x0803) +#define TCC0_CTRLE _SFR_MEM8(0x0804) +#define TCC0_INTCTRLA _SFR_MEM8(0x0806) +#define TCC0_INTCTRLB _SFR_MEM8(0x0807) +#define TCC0_CTRLFCLR _SFR_MEM8(0x0808) +#define TCC0_CTRLFSET _SFR_MEM8(0x0809) +#define TCC0_CTRLGCLR _SFR_MEM8(0x080A) +#define TCC0_CTRLGSET _SFR_MEM8(0x080B) +#define TCC0_INTFLAGS _SFR_MEM8(0x080C) +#define TCC0_TEMP _SFR_MEM8(0x080F) +#define TCC0_CNT _SFR_MEM16(0x0820) +#define TCC0_PER _SFR_MEM16(0x0826) +#define TCC0_CCA _SFR_MEM16(0x0828) +#define TCC0_CCB _SFR_MEM16(0x082A) +#define TCC0_CCC _SFR_MEM16(0x082C) +#define TCC0_CCD _SFR_MEM16(0x082E) +#define TCC0_PERBUF _SFR_MEM16(0x0836) +#define TCC0_CCABUF _SFR_MEM16(0x0838) +#define TCC0_CCBBUF _SFR_MEM16(0x083A) +#define TCC0_CCCBUF _SFR_MEM16(0x083C) +#define TCC0_CCDBUF _SFR_MEM16(0x083E) + +/* TCC1 - Timer/Counter C1 */ +#define TCC1_CTRLA _SFR_MEM8(0x0840) +#define TCC1_CTRLB _SFR_MEM8(0x0841) +#define TCC1_CTRLC _SFR_MEM8(0x0842) +#define TCC1_CTRLD _SFR_MEM8(0x0843) +#define TCC1_CTRLE _SFR_MEM8(0x0844) +#define TCC1_INTCTRLA _SFR_MEM8(0x0846) +#define TCC1_INTCTRLB _SFR_MEM8(0x0847) +#define TCC1_CTRLFCLR _SFR_MEM8(0x0848) +#define TCC1_CTRLFSET _SFR_MEM8(0x0849) +#define TCC1_CTRLGCLR _SFR_MEM8(0x084A) +#define TCC1_CTRLGSET _SFR_MEM8(0x084B) +#define TCC1_INTFLAGS _SFR_MEM8(0x084C) +#define TCC1_TEMP _SFR_MEM8(0x084F) +#define TCC1_CNT _SFR_MEM16(0x0860) +#define TCC1_PER _SFR_MEM16(0x0866) +#define TCC1_CCA _SFR_MEM16(0x0868) +#define TCC1_CCB _SFR_MEM16(0x086A) +#define TCC1_PERBUF _SFR_MEM16(0x0876) +#define TCC1_CCABUF _SFR_MEM16(0x0878) +#define TCC1_CCBBUF _SFR_MEM16(0x087A) + +/* AWEXC - Advanced Waveform Extension C */ +#define AWEXC_CTRL _SFR_MEM8(0x0880) +#define AWEXC_FDEVMASK _SFR_MEM8(0x0882) +#define AWEXC_FDCTRL _SFR_MEM8(0x0883) +#define AWEXC_STATUS _SFR_MEM8(0x0884) +#define AWEXC_DTBOTH _SFR_MEM8(0x0886) +#define AWEXC_DTBOTHBUF _SFR_MEM8(0x0887) +#define AWEXC_DTLS _SFR_MEM8(0x0888) +#define AWEXC_DTHS _SFR_MEM8(0x0889) +#define AWEXC_DTLSBUF _SFR_MEM8(0x088A) +#define AWEXC_DTHSBUF _SFR_MEM8(0x088B) +#define AWEXC_OUTOVEN _SFR_MEM8(0x088C) + +/* HIRESC - High-Resolution Extension C */ +#define HIRESC_CTRL _SFR_MEM8(0x0890) + +/* USARTC0 - Universal Asynchronous Receiver-Transmitter C0 */ +#define USARTC0_DATA _SFR_MEM8(0x08A0) +#define USARTC0_STATUS _SFR_MEM8(0x08A1) +#define USARTC0_CTRLA _SFR_MEM8(0x08A3) +#define USARTC0_CTRLB _SFR_MEM8(0x08A4) +#define USARTC0_CTRLC _SFR_MEM8(0x08A5) +#define USARTC0_BAUDCTRLA _SFR_MEM8(0x08A6) +#define USARTC0_BAUDCTRLB _SFR_MEM8(0x08A7) + +/* USARTC1 - Universal Asynchronous Receiver-Transmitter C1 */ +#define USARTC1_DATA _SFR_MEM8(0x08B0) +#define USARTC1_STATUS _SFR_MEM8(0x08B1) +#define USARTC1_CTRLA _SFR_MEM8(0x08B3) +#define USARTC1_CTRLB _SFR_MEM8(0x08B4) +#define USARTC1_CTRLC _SFR_MEM8(0x08B5) +#define USARTC1_BAUDCTRLA _SFR_MEM8(0x08B6) +#define USARTC1_BAUDCTRLB _SFR_MEM8(0x08B7) + +/* SPIC - Serial Peripheral Interface C */ +#define SPIC_CTRL _SFR_MEM8(0x08C0) +#define SPIC_INTCTRL _SFR_MEM8(0x08C1) +#define SPIC_STATUS _SFR_MEM8(0x08C2) +#define SPIC_DATA _SFR_MEM8(0x08C3) + +/* IRCOM - IR Communication Module */ +#define IRCOM_CTRL _SFR_MEM8(0x08F8) +#define IRCOM_TXPLCTRL _SFR_MEM8(0x08F9) +#define IRCOM_RXPLCTRL _SFR_MEM8(0x08FA) + +/* TCD0 - Timer/Counter D0 */ +#define TCD0_CTRLA _SFR_MEM8(0x0900) +#define TCD0_CTRLB _SFR_MEM8(0x0901) +#define TCD0_CTRLC _SFR_MEM8(0x0902) +#define TCD0_CTRLD _SFR_MEM8(0x0903) +#define TCD0_CTRLE _SFR_MEM8(0x0904) +#define TCD0_INTCTRLA _SFR_MEM8(0x0906) +#define TCD0_INTCTRLB _SFR_MEM8(0x0907) +#define TCD0_CTRLFCLR _SFR_MEM8(0x0908) +#define TCD0_CTRLFSET _SFR_MEM8(0x0909) +#define TCD0_CTRLGCLR _SFR_MEM8(0x090A) +#define TCD0_CTRLGSET _SFR_MEM8(0x090B) +#define TCD0_INTFLAGS _SFR_MEM8(0x090C) +#define TCD0_TEMP _SFR_MEM8(0x090F) +#define TCD0_CNT _SFR_MEM16(0x0920) +#define TCD0_PER _SFR_MEM16(0x0926) +#define TCD0_CCA _SFR_MEM16(0x0928) +#define TCD0_CCB _SFR_MEM16(0x092A) +#define TCD0_CCC _SFR_MEM16(0x092C) +#define TCD0_CCD _SFR_MEM16(0x092E) +#define TCD0_PERBUF _SFR_MEM16(0x0936) +#define TCD0_CCABUF _SFR_MEM16(0x0938) +#define TCD0_CCBBUF _SFR_MEM16(0x093A) +#define TCD0_CCCBUF _SFR_MEM16(0x093C) +#define TCD0_CCDBUF _SFR_MEM16(0x093E) + +/* TCD1 - Timer/Counter D1 */ +#define TCD1_CTRLA _SFR_MEM8(0x0940) +#define TCD1_CTRLB _SFR_MEM8(0x0941) +#define TCD1_CTRLC _SFR_MEM8(0x0942) +#define TCD1_CTRLD _SFR_MEM8(0x0943) +#define TCD1_CTRLE _SFR_MEM8(0x0944) +#define TCD1_INTCTRLA _SFR_MEM8(0x0946) +#define TCD1_INTCTRLB _SFR_MEM8(0x0947) +#define TCD1_CTRLFCLR _SFR_MEM8(0x0948) +#define TCD1_CTRLFSET _SFR_MEM8(0x0949) +#define TCD1_CTRLGCLR _SFR_MEM8(0x094A) +#define TCD1_CTRLGSET _SFR_MEM8(0x094B) +#define TCD1_INTFLAGS _SFR_MEM8(0x094C) +#define TCD1_TEMP _SFR_MEM8(0x094F) +#define TCD1_CNT _SFR_MEM16(0x0960) +#define TCD1_PER _SFR_MEM16(0x0966) +#define TCD1_CCA _SFR_MEM16(0x0968) +#define TCD1_CCB _SFR_MEM16(0x096A) +#define TCD1_PERBUF _SFR_MEM16(0x0976) +#define TCD1_CCABUF _SFR_MEM16(0x0978) +#define TCD1_CCBBUF _SFR_MEM16(0x097A) + +/* HIRESD - High-Resolution Extension D */ +#define HIRESD_CTRL _SFR_MEM8(0x0990) + +/* USARTD0 - Universal Asynchronous Receiver-Transmitter D0 */ +#define USARTD0_DATA _SFR_MEM8(0x09A0) +#define USARTD0_STATUS _SFR_MEM8(0x09A1) +#define USARTD0_CTRLA _SFR_MEM8(0x09A3) +#define USARTD0_CTRLB _SFR_MEM8(0x09A4) +#define USARTD0_CTRLC _SFR_MEM8(0x09A5) +#define USARTD0_BAUDCTRLA _SFR_MEM8(0x09A6) +#define USARTD0_BAUDCTRLB _SFR_MEM8(0x09A7) + +/* USARTD1 - Universal Asynchronous Receiver-Transmitter D1 */ +#define USARTD1_DATA _SFR_MEM8(0x09B0) +#define USARTD1_STATUS _SFR_MEM8(0x09B1) +#define USARTD1_CTRLA _SFR_MEM8(0x09B3) +#define USARTD1_CTRLB _SFR_MEM8(0x09B4) +#define USARTD1_CTRLC _SFR_MEM8(0x09B5) +#define USARTD1_BAUDCTRLA _SFR_MEM8(0x09B6) +#define USARTD1_BAUDCTRLB _SFR_MEM8(0x09B7) + +/* SPID - Serial Peripheral Interface D */ +#define SPID_CTRL _SFR_MEM8(0x09C0) +#define SPID_INTCTRL _SFR_MEM8(0x09C1) +#define SPID_STATUS _SFR_MEM8(0x09C2) +#define SPID_DATA _SFR_MEM8(0x09C3) + +/* TCE0 - Timer/Counter E0 */ +#define TCE0_CTRLA _SFR_MEM8(0x0A00) +#define TCE0_CTRLB _SFR_MEM8(0x0A01) +#define TCE0_CTRLC _SFR_MEM8(0x0A02) +#define TCE0_CTRLD _SFR_MEM8(0x0A03) +#define TCE0_CTRLE _SFR_MEM8(0x0A04) +#define TCE0_INTCTRLA _SFR_MEM8(0x0A06) +#define TCE0_INTCTRLB _SFR_MEM8(0x0A07) +#define TCE0_CTRLFCLR _SFR_MEM8(0x0A08) +#define TCE0_CTRLFSET _SFR_MEM8(0x0A09) +#define TCE0_CTRLGCLR _SFR_MEM8(0x0A0A) +#define TCE0_CTRLGSET _SFR_MEM8(0x0A0B) +#define TCE0_INTFLAGS _SFR_MEM8(0x0A0C) +#define TCE0_TEMP _SFR_MEM8(0x0A0F) +#define TCE0_CNT _SFR_MEM16(0x0A20) +#define TCE0_PER _SFR_MEM16(0x0A26) +#define TCE0_CCA _SFR_MEM16(0x0A28) +#define TCE0_CCB _SFR_MEM16(0x0A2A) +#define TCE0_CCC _SFR_MEM16(0x0A2C) +#define TCE0_CCD _SFR_MEM16(0x0A2E) +#define TCE0_PERBUF _SFR_MEM16(0x0A36) +#define TCE0_CCABUF _SFR_MEM16(0x0A38) +#define TCE0_CCBBUF _SFR_MEM16(0x0A3A) +#define TCE0_CCCBUF _SFR_MEM16(0x0A3C) +#define TCE0_CCDBUF _SFR_MEM16(0x0A3E) + +/* TCE1 - Timer/Counter E1 */ +#define TCE1_CTRLA _SFR_MEM8(0x0A40) +#define TCE1_CTRLB _SFR_MEM8(0x0A41) +#define TCE1_CTRLC _SFR_MEM8(0x0A42) +#define TCE1_CTRLD _SFR_MEM8(0x0A43) +#define TCE1_CTRLE _SFR_MEM8(0x0A44) +#define TCE1_INTCTRLA _SFR_MEM8(0x0A46) +#define TCE1_INTCTRLB _SFR_MEM8(0x0A47) +#define TCE1_CTRLFCLR _SFR_MEM8(0x0A48) +#define TCE1_CTRLFSET _SFR_MEM8(0x0A49) +#define TCE1_CTRLGCLR _SFR_MEM8(0x0A4A) +#define TCE1_CTRLGSET _SFR_MEM8(0x0A4B) +#define TCE1_INTFLAGS _SFR_MEM8(0x0A4C) +#define TCE1_TEMP _SFR_MEM8(0x0A4F) +#define TCE1_CNT _SFR_MEM16(0x0A60) +#define TCE1_PER _SFR_MEM16(0x0A66) +#define TCE1_CCA _SFR_MEM16(0x0A68) +#define TCE1_CCB _SFR_MEM16(0x0A6A) +#define TCE1_PERBUF _SFR_MEM16(0x0A76) +#define TCE1_CCABUF _SFR_MEM16(0x0A78) +#define TCE1_CCBBUF _SFR_MEM16(0x0A7A) + +/* AWEXE - Advanced Waveform Extension E */ +#define AWEXE_CTRL _SFR_MEM8(0x0A80) +#define AWEXE_FDEVMASK _SFR_MEM8(0x0A82) +#define AWEXE_FDCTRL _SFR_MEM8(0x0A83) +#define AWEXE_STATUS _SFR_MEM8(0x0A84) +#define AWEXE_DTBOTH _SFR_MEM8(0x0A86) +#define AWEXE_DTBOTHBUF _SFR_MEM8(0x0A87) +#define AWEXE_DTLS _SFR_MEM8(0x0A88) +#define AWEXE_DTHS _SFR_MEM8(0x0A89) +#define AWEXE_DTLSBUF _SFR_MEM8(0x0A8A) +#define AWEXE_DTHSBUF _SFR_MEM8(0x0A8B) +#define AWEXE_OUTOVEN _SFR_MEM8(0x0A8C) + +/* HIRESE - High-Resolution Extension E */ +#define HIRESE_CTRL _SFR_MEM8(0x0A90) + +/* USARTE0 - Universal Asynchronous Receiver-Transmitter E0 */ +#define USARTE0_DATA _SFR_MEM8(0x0AA0) +#define USARTE0_STATUS _SFR_MEM8(0x0AA1) +#define USARTE0_CTRLA _SFR_MEM8(0x0AA3) +#define USARTE0_CTRLB _SFR_MEM8(0x0AA4) +#define USARTE0_CTRLC _SFR_MEM8(0x0AA5) +#define USARTE0_BAUDCTRLA _SFR_MEM8(0x0AA6) +#define USARTE0_BAUDCTRLB _SFR_MEM8(0x0AA7) + +/* USARTE1 - Universal Asynchronous Receiver-Transmitter E1 */ +#define USARTE1_DATA _SFR_MEM8(0x0AB0) +#define USARTE1_STATUS _SFR_MEM8(0x0AB1) +#define USARTE1_CTRLA _SFR_MEM8(0x0AB3) +#define USARTE1_CTRLB _SFR_MEM8(0x0AB4) +#define USARTE1_CTRLC _SFR_MEM8(0x0AB5) +#define USARTE1_BAUDCTRLA _SFR_MEM8(0x0AB6) +#define USARTE1_BAUDCTRLB _SFR_MEM8(0x0AB7) + +/* SPIE - Serial Peripheral Interface E */ +#define SPIE_CTRL _SFR_MEM8(0x0AC0) +#define SPIE_INTCTRL _SFR_MEM8(0x0AC1) +#define SPIE_STATUS _SFR_MEM8(0x0AC2) +#define SPIE_DATA _SFR_MEM8(0x0AC3) + +/* TCF0 - Timer/Counter F0 */ +#define TCF0_CTRLA _SFR_MEM8(0x0B00) +#define TCF0_CTRLB _SFR_MEM8(0x0B01) +#define TCF0_CTRLC _SFR_MEM8(0x0B02) +#define TCF0_CTRLD _SFR_MEM8(0x0B03) +#define TCF0_CTRLE _SFR_MEM8(0x0B04) +#define TCF0_INTCTRLA _SFR_MEM8(0x0B06) +#define TCF0_INTCTRLB _SFR_MEM8(0x0B07) +#define TCF0_CTRLFCLR _SFR_MEM8(0x0B08) +#define TCF0_CTRLFSET _SFR_MEM8(0x0B09) +#define TCF0_CTRLGCLR _SFR_MEM8(0x0B0A) +#define TCF0_CTRLGSET _SFR_MEM8(0x0B0B) +#define TCF0_INTFLAGS _SFR_MEM8(0x0B0C) +#define TCF0_TEMP _SFR_MEM8(0x0B0F) +#define TCF0_CNT _SFR_MEM16(0x0B20) +#define TCF0_PER _SFR_MEM16(0x0B26) +#define TCF0_CCA _SFR_MEM16(0x0B28) +#define TCF0_CCB _SFR_MEM16(0x0B2A) +#define TCF0_CCC _SFR_MEM16(0x0B2C) +#define TCF0_CCD _SFR_MEM16(0x0B2E) +#define TCF0_PERBUF _SFR_MEM16(0x0B36) +#define TCF0_CCABUF _SFR_MEM16(0x0B38) +#define TCF0_CCBBUF _SFR_MEM16(0x0B3A) +#define TCF0_CCCBUF _SFR_MEM16(0x0B3C) +#define TCF0_CCDBUF _SFR_MEM16(0x0B3E) + +/* HIRESF - High-Resolution Extension F */ +#define HIRESF_CTRL _SFR_MEM8(0x0B90) + +/* USARTF0 - Universal Asynchronous Receiver-Transmitter F0 */ +#define USARTF0_DATA _SFR_MEM8(0x0BA0) +#define USARTF0_STATUS _SFR_MEM8(0x0BA1) +#define USARTF0_CTRLA _SFR_MEM8(0x0BA3) +#define USARTF0_CTRLB _SFR_MEM8(0x0BA4) +#define USARTF0_CTRLC _SFR_MEM8(0x0BA5) +#define USARTF0_BAUDCTRLA _SFR_MEM8(0x0BA6) +#define USARTF0_BAUDCTRLB _SFR_MEM8(0x0BA7) + +/* USARTF1 - Universal Asynchronous Receiver-Transmitter F1 */ +#define USARTF1_DATA _SFR_MEM8(0x0BB0) +#define USARTF1_STATUS _SFR_MEM8(0x0BB1) +#define USARTF1_CTRLA _SFR_MEM8(0x0BB3) +#define USARTF1_CTRLB _SFR_MEM8(0x0BB4) +#define USARTF1_CTRLC _SFR_MEM8(0x0BB5) +#define USARTF1_BAUDCTRLA _SFR_MEM8(0x0BB6) +#define USARTF1_BAUDCTRLB _SFR_MEM8(0x0BB7) + +/* SPIF - Serial Peripheral Interface F */ +#define SPIF_CTRL _SFR_MEM8(0x0BC0) +#define SPIF_INTCTRL _SFR_MEM8(0x0BC1) +#define SPIF_STATUS _SFR_MEM8(0x0BC2) +#define SPIF_DATA _SFR_MEM8(0x0BC3) + + + +/*================== Bitfield Definitions ================== */ + +/* XOCD - On-Chip Debug System */ +/* OCD.OCDR1 bit masks and bit positions */ +#define OCD_OCDRD_bm 0x01 /* OCDR Dirty bit mask. */ +#define OCD_OCDRD_bp 0 /* OCDR Dirty bit position. */ + + +/* CPU - CPU */ +/* CPU.CCP bit masks and bit positions */ +#define CPU_CCP_gm 0xFF /* CCP signature group mask. */ +#define CPU_CCP_gp 0 /* CCP signature group position. */ +#define CPU_CCP0_bm (1<<0) /* CCP signature bit 0 mask. */ +#define CPU_CCP0_bp 0 /* CCP signature bit 0 position. */ +#define CPU_CCP1_bm (1<<1) /* CCP signature bit 1 mask. */ +#define CPU_CCP1_bp 1 /* CCP signature bit 1 position. */ +#define CPU_CCP2_bm (1<<2) /* CCP signature bit 2 mask. */ +#define CPU_CCP2_bp 2 /* CCP signature bit 2 position. */ +#define CPU_CCP3_bm (1<<3) /* CCP signature bit 3 mask. */ +#define CPU_CCP3_bp 3 /* CCP signature bit 3 position. */ +#define CPU_CCP4_bm (1<<4) /* CCP signature bit 4 mask. */ +#define CPU_CCP4_bp 4 /* CCP signature bit 4 position. */ +#define CPU_CCP5_bm (1<<5) /* CCP signature bit 5 mask. */ +#define CPU_CCP5_bp 5 /* CCP signature bit 5 position. */ +#define CPU_CCP6_bm (1<<6) /* CCP signature bit 6 mask. */ +#define CPU_CCP6_bp 6 /* CCP signature bit 6 position. */ +#define CPU_CCP7_bm (1<<7) /* CCP signature bit 7 mask. */ +#define CPU_CCP7_bp 7 /* CCP signature bit 7 position. */ + + +/* CPU.SREG bit masks and bit positions */ +#define CPU_I_bm 0x80 /* Global Interrupt Enable Flag bit mask. */ +#define CPU_I_bp 7 /* Global Interrupt Enable Flag bit position. */ + +#define CPU_T_bm 0x40 /* Transfer Bit bit mask. */ +#define CPU_T_bp 6 /* Transfer Bit bit position. */ + +#define CPU_H_bm 0x20 /* Half Carry Flag bit mask. */ +#define CPU_H_bp 5 /* Half Carry Flag bit position. */ + +#define CPU_S_bm 0x10 /* N Exclusive Or V Flag bit mask. */ +#define CPU_S_bp 4 /* N Exclusive Or V Flag bit position. */ + +#define CPU_V_bm 0x08 /* Two's Complement Overflow Flag bit mask. */ +#define CPU_V_bp 3 /* Two's Complement Overflow Flag bit position. */ + +#define CPU_N_bm 0x04 /* Negative Flag bit mask. */ +#define CPU_N_bp 2 /* Negative Flag bit position. */ + +#define CPU_Z_bm 0x02 /* Zero Flag bit mask. */ +#define CPU_Z_bp 1 /* Zero Flag bit position. */ + +#define CPU_C_bm 0x01 /* Carry Flag bit mask. */ +#define CPU_C_bp 0 /* Carry Flag bit position. */ + + +/* CLK - Clock System */ +/* CLK.CTRL bit masks and bit positions */ +#define CLK_SCLKSEL_gm 0x07 /* System Clock Selection group mask. */ +#define CLK_SCLKSEL_gp 0 /* System Clock Selection group position. */ +#define CLK_SCLKSEL0_bm (1<<0) /* System Clock Selection bit 0 mask. */ +#define CLK_SCLKSEL0_bp 0 /* System Clock Selection bit 0 position. */ +#define CLK_SCLKSEL1_bm (1<<1) /* System Clock Selection bit 1 mask. */ +#define CLK_SCLKSEL1_bp 1 /* System Clock Selection bit 1 position. */ +#define CLK_SCLKSEL2_bm (1<<2) /* System Clock Selection bit 2 mask. */ +#define CLK_SCLKSEL2_bp 2 /* System Clock Selection bit 2 position. */ + + +/* CLK.PSCTRL bit masks and bit positions */ +#define CLK_PSADIV_gm 0x7C /* Prescaler A Division Factor group mask. */ +#define CLK_PSADIV_gp 2 /* Prescaler A Division Factor group position. */ +#define CLK_PSADIV0_bm (1<<2) /* Prescaler A Division Factor bit 0 mask. */ +#define CLK_PSADIV0_bp 2 /* Prescaler A Division Factor bit 0 position. */ +#define CLK_PSADIV1_bm (1<<3) /* Prescaler A Division Factor bit 1 mask. */ +#define CLK_PSADIV1_bp 3 /* Prescaler A Division Factor bit 1 position. */ +#define CLK_PSADIV2_bm (1<<4) /* Prescaler A Division Factor bit 2 mask. */ +#define CLK_PSADIV2_bp 4 /* Prescaler A Division Factor bit 2 position. */ +#define CLK_PSADIV3_bm (1<<5) /* Prescaler A Division Factor bit 3 mask. */ +#define CLK_PSADIV3_bp 5 /* Prescaler A Division Factor bit 3 position. */ +#define CLK_PSADIV4_bm (1<<6) /* Prescaler A Division Factor bit 4 mask. */ +#define CLK_PSADIV4_bp 6 /* Prescaler A Division Factor bit 4 position. */ + +#define CLK_PSBCDIV_gm 0x03 /* Prescaler B and C Division factor group mask. */ +#define CLK_PSBCDIV_gp 0 /* Prescaler B and C Division factor group position. */ +#define CLK_PSBCDIV0_bm (1<<0) /* Prescaler B and C Division factor bit 0 mask. */ +#define CLK_PSBCDIV0_bp 0 /* Prescaler B and C Division factor bit 0 position. */ +#define CLK_PSBCDIV1_bm (1<<1) /* Prescaler B and C Division factor bit 1 mask. */ +#define CLK_PSBCDIV1_bp 1 /* Prescaler B and C Division factor bit 1 position. */ + + +/* CLK.LOCK bit masks and bit positions */ +#define CLK_LOCK_bm 0x01 /* Clock System Lock bit mask. */ +#define CLK_LOCK_bp 0 /* Clock System Lock bit position. */ + + +/* CLK.RTCCTRL bit masks and bit positions */ +#define CLK_RTCSRC_gm 0x0E /* Clock Source group mask. */ +#define CLK_RTCSRC_gp 1 /* Clock Source group position. */ +#define CLK_RTCSRC0_bm (1<<1) /* Clock Source bit 0 mask. */ +#define CLK_RTCSRC0_bp 1 /* Clock Source bit 0 position. */ +#define CLK_RTCSRC1_bm (1<<2) /* Clock Source bit 1 mask. */ +#define CLK_RTCSRC1_bp 2 /* Clock Source bit 1 position. */ +#define CLK_RTCSRC2_bm (1<<3) /* Clock Source bit 2 mask. */ +#define CLK_RTCSRC2_bp 3 /* Clock Source bit 2 position. */ + +#define CLK_RTCEN_bm 0x01 /* RTC Clock Source Enable bit mask. */ +#define CLK_RTCEN_bp 0 /* RTC Clock Source Enable bit position. */ + + +/* PR.PR bit masks and bit positions */ +#define PR_EBI_bm 0x08 /* External Bus Interface bit mask. */ +#define PR_EBI_bp 3 /* External Bus Interface bit position. */ + +#define PR_RTC_bm 0x04 /* Real-time Counter bit mask. */ +#define PR_RTC_bp 2 /* Real-time Counter bit position. */ + +#define PR_EVSYS_bm 0x02 /* Event System bit mask. */ +#define PR_EVSYS_bp 1 /* Event System bit position. */ + +#define PR_DMA_bm 0x01 /* DMA-Controller bit mask. */ +#define PR_DMA_bp 0 /* DMA-Controller bit position. */ + + +/* PR.PRPA bit masks and bit positions */ +#define PR_DAC_bm 0x04 /* Port A DAC bit mask. */ +#define PR_DAC_bp 2 /* Port A DAC bit position. */ + +#define PR_ADC_bm 0x02 /* Port A ADC bit mask. */ +#define PR_ADC_bp 1 /* Port A ADC bit position. */ + +#define PR_AC_bm 0x01 /* Port A Analog Comparator bit mask. */ +#define PR_AC_bp 0 /* Port A Analog Comparator bit position. */ + + +/* PR.PRPB bit masks and bit positions */ +/* PR_DAC_bm Predefined. */ +/* PR_DAC_bp Predefined. */ + +/* PR_ADC_bm Predefined. */ +/* PR_ADC_bp Predefined. */ + +/* PR_AC_bm Predefined. */ +/* PR_AC_bp Predefined. */ + + +/* PR.PRPC bit masks and bit positions */ +#define PR_TWI_bm 0x40 /* Port C Two-wire Interface bit mask. */ +#define PR_TWI_bp 6 /* Port C Two-wire Interface bit position. */ + +#define PR_USART1_bm 0x20 /* Port C USART1 bit mask. */ +#define PR_USART1_bp 5 /* Port C USART1 bit position. */ + +#define PR_USART0_bm 0x10 /* Port C USART0 bit mask. */ +#define PR_USART0_bp 4 /* Port C USART0 bit position. */ + +#define PR_SPI_bm 0x08 /* Port C SPI bit mask. */ +#define PR_SPI_bp 3 /* Port C SPI bit position. */ + +#define PR_HIRES_bm 0x04 /* Port C AWEX bit mask. */ +#define PR_HIRES_bp 2 /* Port C AWEX bit position. */ + +#define PR_TC1_bm 0x02 /* Port C Timer/Counter1 bit mask. */ +#define PR_TC1_bp 1 /* Port C Timer/Counter1 bit position. */ + +#define PR_TC0_bm 0x01 /* Port C Timer/Counter0 bit mask. */ +#define PR_TC0_bp 0 /* Port C Timer/Counter0 bit position. */ + + +/* PR.PRPD bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPE bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* PR.PRPF bit masks and bit positions */ +/* PR_TWI_bm Predefined. */ +/* PR_TWI_bp Predefined. */ + +/* PR_USART1_bm Predefined. */ +/* PR_USART1_bp Predefined. */ + +/* PR_USART0_bm Predefined. */ +/* PR_USART0_bp Predefined. */ + +/* PR_SPI_bm Predefined. */ +/* PR_SPI_bp Predefined. */ + +/* PR_HIRES_bm Predefined. */ +/* PR_HIRES_bp Predefined. */ + +/* PR_TC1_bm Predefined. */ +/* PR_TC1_bp Predefined. */ + +/* PR_TC0_bm Predefined. */ +/* PR_TC0_bp Predefined. */ + + +/* SLEEP - Sleep Controller */ +/* SLEEP.CTRL bit masks and bit positions */ +#define SLEEP_SMODE_gm 0x0E /* Sleep Mode group mask. */ +#define SLEEP_SMODE_gp 1 /* Sleep Mode group position. */ +#define SLEEP_SMODE0_bm (1<<1) /* Sleep Mode bit 0 mask. */ +#define SLEEP_SMODE0_bp 1 /* Sleep Mode bit 0 position. */ +#define SLEEP_SMODE1_bm (1<<2) /* Sleep Mode bit 1 mask. */ +#define SLEEP_SMODE1_bp 2 /* Sleep Mode bit 1 position. */ +#define SLEEP_SMODE2_bm (1<<3) /* Sleep Mode bit 2 mask. */ +#define SLEEP_SMODE2_bp 3 /* Sleep Mode bit 2 position. */ + +#define SLEEP_SEN_bm 0x01 /* Sleep Enable bit mask. */ +#define SLEEP_SEN_bp 0 /* Sleep Enable bit position. */ + + +/* OSC - Oscillator */ +/* OSC.CTRL bit masks and bit positions */ +#define OSC_PLLEN_bm 0x10 /* PLL Enable bit mask. */ +#define OSC_PLLEN_bp 4 /* PLL Enable bit position. */ + +#define OSC_XOSCEN_bm 0x08 /* External Oscillator Enable bit mask. */ +#define OSC_XOSCEN_bp 3 /* External Oscillator Enable bit position. */ + +#define OSC_RC32KEN_bm 0x04 /* Internal 32kHz RC Oscillator Enable bit mask. */ +#define OSC_RC32KEN_bp 2 /* Internal 32kHz RC Oscillator Enable bit position. */ + +#define OSC_RC32MEN_bm 0x02 /* Internal 32MHz RC Oscillator Enable bit mask. */ +#define OSC_RC32MEN_bp 1 /* Internal 32MHz RC Oscillator Enable bit position. */ + +#define OSC_RC2MEN_bm 0x01 /* Internal 2MHz RC Oscillator Enable bit mask. */ +#define OSC_RC2MEN_bp 0 /* Internal 2MHz RC Oscillator Enable bit position. */ + + +/* OSC.STATUS bit masks and bit positions */ +#define OSC_PLLRDY_bm 0x10 /* PLL Ready bit mask. */ +#define OSC_PLLRDY_bp 4 /* PLL Ready bit position. */ + +#define OSC_XOSCRDY_bm 0x08 /* External Oscillator Ready bit mask. */ +#define OSC_XOSCRDY_bp 3 /* External Oscillator Ready bit position. */ + +#define OSC_RC32KRDY_bm 0x04 /* Internal 32kHz RC Oscillator Ready bit mask. */ +#define OSC_RC32KRDY_bp 2 /* Internal 32kHz RC Oscillator Ready bit position. */ + +#define OSC_RC32MRDY_bm 0x02 /* Internal 32MHz RC Oscillator Ready bit mask. */ +#define OSC_RC32MRDY_bp 1 /* Internal 32MHz RC Oscillator Ready bit position. */ + +#define OSC_RC2MRDY_bm 0x01 /* Internal 2MHz RC Oscillator Ready bit mask. */ +#define OSC_RC2MRDY_bp 0 /* Internal 2MHz RC Oscillator Ready bit position. */ + + +/* OSC.XOSCCTRL bit masks and bit positions */ +#define OSC_FRQRANGE_gm 0xC0 /* Frequency Range group mask. */ +#define OSC_FRQRANGE_gp 6 /* Frequency Range group position. */ +#define OSC_FRQRANGE0_bm (1<<6) /* Frequency Range bit 0 mask. */ +#define OSC_FRQRANGE0_bp 6 /* Frequency Range bit 0 position. */ +#define OSC_FRQRANGE1_bm (1<<7) /* Frequency Range bit 1 mask. */ +#define OSC_FRQRANGE1_bp 7 /* Frequency Range bit 1 position. */ + +#define OSC_X32KLPM_bm 0x20 /* 32kHz XTAL OSC Low-power Mode bit mask. */ +#define OSC_X32KLPM_bp 5 /* 32kHz XTAL OSC Low-power Mode bit position. */ + +#define OSC_XOSCSEL_gm 0x0F /* External Oscillator Selection and Startup Time group mask. */ +#define OSC_XOSCSEL_gp 0 /* External Oscillator Selection and Startup Time group position. */ +#define OSC_XOSCSEL0_bm (1<<0) /* External Oscillator Selection and Startup Time bit 0 mask. */ +#define OSC_XOSCSEL0_bp 0 /* External Oscillator Selection and Startup Time bit 0 position. */ +#define OSC_XOSCSEL1_bm (1<<1) /* External Oscillator Selection and Startup Time bit 1 mask. */ +#define OSC_XOSCSEL1_bp 1 /* External Oscillator Selection and Startup Time bit 1 position. */ +#define OSC_XOSCSEL2_bm (1<<2) /* External Oscillator Selection and Startup Time bit 2 mask. */ +#define OSC_XOSCSEL2_bp 2 /* External Oscillator Selection and Startup Time bit 2 position. */ +#define OSC_XOSCSEL3_bm (1<<3) /* External Oscillator Selection and Startup Time bit 3 mask. */ +#define OSC_XOSCSEL3_bp 3 /* External Oscillator Selection and Startup Time bit 3 position. */ + + +/* OSC.XOSCFAIL bit masks and bit positions */ +#define OSC_XOSCFDIF_bm 0x02 /* Failure Detection Interrupt Flag bit mask. */ +#define OSC_XOSCFDIF_bp 1 /* Failure Detection Interrupt Flag bit position. */ + +#define OSC_XOSCFDEN_bm 0x01 /* Failure Detection Enable bit mask. */ +#define OSC_XOSCFDEN_bp 0 /* Failure Detection Enable bit position. */ + + +/* OSC.PLLCTRL bit masks and bit positions */ +#define OSC_PLLSRC_gm 0xC0 /* Clock Source group mask. */ +#define OSC_PLLSRC_gp 6 /* Clock Source group position. */ +#define OSC_PLLSRC0_bm (1<<6) /* Clock Source bit 0 mask. */ +#define OSC_PLLSRC0_bp 6 /* Clock Source bit 0 position. */ +#define OSC_PLLSRC1_bm (1<<7) /* Clock Source bit 1 mask. */ +#define OSC_PLLSRC1_bp 7 /* Clock Source bit 1 position. */ + +#define OSC_PLLFAC_gm 0x1F /* Multiplication Factor group mask. */ +#define OSC_PLLFAC_gp 0 /* Multiplication Factor group position. */ +#define OSC_PLLFAC0_bm (1<<0) /* Multiplication Factor bit 0 mask. */ +#define OSC_PLLFAC0_bp 0 /* Multiplication Factor bit 0 position. */ +#define OSC_PLLFAC1_bm (1<<1) /* Multiplication Factor bit 1 mask. */ +#define OSC_PLLFAC1_bp 1 /* Multiplication Factor bit 1 position. */ +#define OSC_PLLFAC2_bm (1<<2) /* Multiplication Factor bit 2 mask. */ +#define OSC_PLLFAC2_bp 2 /* Multiplication Factor bit 2 position. */ +#define OSC_PLLFAC3_bm (1<<3) /* Multiplication Factor bit 3 mask. */ +#define OSC_PLLFAC3_bp 3 /* Multiplication Factor bit 3 position. */ +#define OSC_PLLFAC4_bm (1<<4) /* Multiplication Factor bit 4 mask. */ +#define OSC_PLLFAC4_bp 4 /* Multiplication Factor bit 4 position. */ + + +/* OSC.DFLLCTRL bit masks and bit positions */ +#define OSC_RC32MCREF_bm 0x02 /* 32MHz Calibration Reference bit mask. */ +#define OSC_RC32MCREF_bp 1 /* 32MHz Calibration Reference bit position. */ + +#define OSC_RC2MCREF_bm 0x01 /* 2MHz Calibration Reference bit mask. */ +#define OSC_RC2MCREF_bp 0 /* 2MHz Calibration Reference bit position. */ + + +/* DFLL - DFLL */ +/* DFLL.CTRL bit masks and bit positions */ +#define DFLL_ENABLE_bm 0x01 /* DFLL Enable bit mask. */ +#define DFLL_ENABLE_bp 0 /* DFLL Enable bit position. */ + + +/* DFLL.CALA bit masks and bit positions */ +#define DFLL_CALL_gm 0x7F /* DFLL Calibration bits [6:0] group mask. */ +#define DFLL_CALL_gp 0 /* DFLL Calibration bits [6:0] group position. */ +#define DFLL_CALL0_bm (1<<0) /* DFLL Calibration bits [6:0] bit 0 mask. */ +#define DFLL_CALL0_bp 0 /* DFLL Calibration bits [6:0] bit 0 position. */ +#define DFLL_CALL1_bm (1<<1) /* DFLL Calibration bits [6:0] bit 1 mask. */ +#define DFLL_CALL1_bp 1 /* DFLL Calibration bits [6:0] bit 1 position. */ +#define DFLL_CALL2_bm (1<<2) /* DFLL Calibration bits [6:0] bit 2 mask. */ +#define DFLL_CALL2_bp 2 /* DFLL Calibration bits [6:0] bit 2 position. */ +#define DFLL_CALL3_bm (1<<3) /* DFLL Calibration bits [6:0] bit 3 mask. */ +#define DFLL_CALL3_bp 3 /* DFLL Calibration bits [6:0] bit 3 position. */ +#define DFLL_CALL4_bm (1<<4) /* DFLL Calibration bits [6:0] bit 4 mask. */ +#define DFLL_CALL4_bp 4 /* DFLL Calibration bits [6:0] bit 4 position. */ +#define DFLL_CALL5_bm (1<<5) /* DFLL Calibration bits [6:0] bit 5 mask. */ +#define DFLL_CALL5_bp 5 /* DFLL Calibration bits [6:0] bit 5 position. */ +#define DFLL_CALL6_bm (1<<6) /* DFLL Calibration bits [6:0] bit 6 mask. */ +#define DFLL_CALL6_bp 6 /* DFLL Calibration bits [6:0] bit 6 position. */ + + +/* DFLL.CALB bit masks and bit positions */ +#define DFLL_CALH_gm 0x3F /* DFLL Calibration bits [12:7] group mask. */ +#define DFLL_CALH_gp 0 /* DFLL Calibration bits [12:7] group position. */ +#define DFLL_CALH0_bm (1<<0) /* DFLL Calibration bits [12:7] bit 0 mask. */ +#define DFLL_CALH0_bp 0 /* DFLL Calibration bits [12:7] bit 0 position. */ +#define DFLL_CALH1_bm (1<<1) /* DFLL Calibration bits [12:7] bit 1 mask. */ +#define DFLL_CALH1_bp 1 /* DFLL Calibration bits [12:7] bit 1 position. */ +#define DFLL_CALH2_bm (1<<2) /* DFLL Calibration bits [12:7] bit 2 mask. */ +#define DFLL_CALH2_bp 2 /* DFLL Calibration bits [12:7] bit 2 position. */ +#define DFLL_CALH3_bm (1<<3) /* DFLL Calibration bits [12:7] bit 3 mask. */ +#define DFLL_CALH3_bp 3 /* DFLL Calibration bits [12:7] bit 3 position. */ +#define DFLL_CALH4_bm (1<<4) /* DFLL Calibration bits [12:7] bit 4 mask. */ +#define DFLL_CALH4_bp 4 /* DFLL Calibration bits [12:7] bit 4 position. */ +#define DFLL_CALH5_bm (1<<5) /* DFLL Calibration bits [12:7] bit 5 mask. */ +#define DFLL_CALH5_bp 5 /* DFLL Calibration bits [12:7] bit 5 position. */ + + +/* RST - Reset */ +/* RST.STATUS bit masks and bit positions */ +#define RST_SDRF_bm 0x40 /* Spike Detection Reset Flag bit mask. */ +#define RST_SDRF_bp 6 /* Spike Detection Reset Flag bit position. */ + +#define RST_SRF_bm 0x20 /* Software Reset Flag bit mask. */ +#define RST_SRF_bp 5 /* Software Reset Flag bit position. */ + +#define RST_PDIRF_bm 0x10 /* Programming and Debug Interface Interface Reset Flag bit mask. */ +#define RST_PDIRF_bp 4 /* Programming and Debug Interface Interface Reset Flag bit position. */ + +#define RST_WDRF_bm 0x08 /* Watchdog Reset Flag bit mask. */ +#define RST_WDRF_bp 3 /* Watchdog Reset Flag bit position. */ + +#define RST_BORF_bm 0x04 /* Brown-out Reset Flag bit mask. */ +#define RST_BORF_bp 2 /* Brown-out Reset Flag bit position. */ + +#define RST_EXTRF_bm 0x02 /* External Reset Flag bit mask. */ +#define RST_EXTRF_bp 1 /* External Reset Flag bit position. */ + +#define RST_PORF_bm 0x01 /* Power-on Reset Flag bit mask. */ +#define RST_PORF_bp 0 /* Power-on Reset Flag bit position. */ + + +/* RST.CTRL bit masks and bit positions */ +#define RST_SWRST_bm 0x01 /* Software Reset bit mask. */ +#define RST_SWRST_bp 0 /* Software Reset bit position. */ + + +/* WDT - Watch-Dog Timer */ +/* WDT.CTRL bit masks and bit positions */ +#define WDT_PER_gm 0x3C /* Period group mask. */ +#define WDT_PER_gp 2 /* Period group position. */ +#define WDT_PER0_bm (1<<2) /* Period bit 0 mask. */ +#define WDT_PER0_bp 2 /* Period bit 0 position. */ +#define WDT_PER1_bm (1<<3) /* Period bit 1 mask. */ +#define WDT_PER1_bp 3 /* Period bit 1 position. */ +#define WDT_PER2_bm (1<<4) /* Period bit 2 mask. */ +#define WDT_PER2_bp 4 /* Period bit 2 position. */ +#define WDT_PER3_bm (1<<5) /* Period bit 3 mask. */ +#define WDT_PER3_bp 5 /* Period bit 3 position. */ + +#define WDT_ENABLE_bm 0x02 /* Enable bit mask. */ +#define WDT_ENABLE_bp 1 /* Enable bit position. */ + +#define WDT_CEN_bm 0x01 /* Change Enable bit mask. */ +#define WDT_CEN_bp 0 /* Change Enable bit position. */ + + +/* WDT.WINCTRL bit masks and bit positions */ +#define WDT_WPER_gm 0x3C /* Windowed Mode Period group mask. */ +#define WDT_WPER_gp 2 /* Windowed Mode Period group position. */ +#define WDT_WPER0_bm (1<<2) /* Windowed Mode Period bit 0 mask. */ +#define WDT_WPER0_bp 2 /* Windowed Mode Period bit 0 position. */ +#define WDT_WPER1_bm (1<<3) /* Windowed Mode Period bit 1 mask. */ +#define WDT_WPER1_bp 3 /* Windowed Mode Period bit 1 position. */ +#define WDT_WPER2_bm (1<<4) /* Windowed Mode Period bit 2 mask. */ +#define WDT_WPER2_bp 4 /* Windowed Mode Period bit 2 position. */ +#define WDT_WPER3_bm (1<<5) /* Windowed Mode Period bit 3 mask. */ +#define WDT_WPER3_bp 5 /* Windowed Mode Period bit 3 position. */ + +#define WDT_WEN_bm 0x02 /* Windowed Mode Enable bit mask. */ +#define WDT_WEN_bp 1 /* Windowed Mode Enable bit position. */ + +#define WDT_WCEN_bm 0x01 /* Windowed Mode Change Enable bit mask. */ +#define WDT_WCEN_bp 0 /* Windowed Mode Change Enable bit position. */ + + +/* WDT.STATUS bit masks and bit positions */ +#define WDT_SYNCBUSY_bm 0x01 /* Syncronization busy bit mask. */ +#define WDT_SYNCBUSY_bp 0 /* Syncronization busy bit position. */ + + +/* MCU - MCU Control */ +/* MCU.MCUCR bit masks and bit positions */ +#define MCU_JTAGD_bm 0x01 /* JTAG Disable bit mask. */ +#define MCU_JTAGD_bp 0 /* JTAG Disable bit position. */ + + +/* MCU.EVSYSLOCK bit masks and bit positions */ +#define MCU_EVSYS1LOCK_bm 0x10 /* Event Channel 4-7 Lock bit mask. */ +#define MCU_EVSYS1LOCK_bp 4 /* Event Channel 4-7 Lock bit position. */ + +#define MCU_EVSYS0LOCK_bm 0x01 /* Event Channel 0-3 Lock bit mask. */ +#define MCU_EVSYS0LOCK_bp 0 /* Event Channel 0-3 Lock bit position. */ + + +/* MCU.AWEXLOCK bit masks and bit positions */ +#define MCU_AWEXELOCK_bm 0x04 /* AWeX on T/C E0 Lock bit mask. */ +#define MCU_AWEXELOCK_bp 2 /* AWeX on T/C E0 Lock bit position. */ + +#define MCU_AWEXCLOCK_bm 0x01 /* AWeX on T/C C0 Lock bit mask. */ +#define MCU_AWEXCLOCK_bp 0 /* AWeX on T/C C0 Lock bit position. */ + + +/* PMIC - Programmable Multi-level Interrupt Controller */ +/* PMIC.STATUS bit masks and bit positions */ +#define PMIC_NMIEX_bm 0x80 /* Non-maskable Interrupt Executing bit mask. */ +#define PMIC_NMIEX_bp 7 /* Non-maskable Interrupt Executing bit position. */ + +#define PMIC_HILVLEX_bm 0x04 /* High Level Interrupt Executing bit mask. */ +#define PMIC_HILVLEX_bp 2 /* High Level Interrupt Executing bit position. */ + +#define PMIC_MEDLVLEX_bm 0x02 /* Medium Level Interrupt Executing bit mask. */ +#define PMIC_MEDLVLEX_bp 1 /* Medium Level Interrupt Executing bit position. */ + +#define PMIC_LOLVLEX_bm 0x01 /* Low Level Interrupt Executing bit mask. */ +#define PMIC_LOLVLEX_bp 0 /* Low Level Interrupt Executing bit position. */ + + +/* PMIC.CTRL bit masks and bit positions */ +#define PMIC_RREN_bm 0x80 /* Round-Robin Priority Enable bit mask. */ +#define PMIC_RREN_bp 7 /* Round-Robin Priority Enable bit position. */ + +#define PMIC_IVSEL_bm 0x40 /* Interrupt Vector Select bit mask. */ +#define PMIC_IVSEL_bp 6 /* Interrupt Vector Select bit position. */ + +#define PMIC_HILVLEN_bm 0x04 /* High Level Enable bit mask. */ +#define PMIC_HILVLEN_bp 2 /* High Level Enable bit position. */ + +#define PMIC_MEDLVLEN_bm 0x02 /* Medium Level Enable bit mask. */ +#define PMIC_MEDLVLEN_bp 1 /* Medium Level Enable bit position. */ + +#define PMIC_LOLVLEN_bm 0x01 /* Low Level Enable bit mask. */ +#define PMIC_LOLVLEN_bp 0 /* Low Level Enable bit position. */ + + +/* DMA - DMA Controller */ +/* DMA_CH.CTRLA bit masks and bit positions */ +#define DMA_CH_ENABLE_bm 0x80 /* Channel Enable bit mask. */ +#define DMA_CH_ENABLE_bp 7 /* Channel Enable bit position. */ + +#define DMA_CH_RESET_bm 0x40 /* Channel Software Reset bit mask. */ +#define DMA_CH_RESET_bp 6 /* Channel Software Reset bit position. */ + +#define DMA_CH_REPEAT_bm 0x20 /* Channel Repeat Mode bit mask. */ +#define DMA_CH_REPEAT_bp 5 /* Channel Repeat Mode bit position. */ + +#define DMA_CH_TRFREQ_bm 0x10 /* Channel Transfer Request bit mask. */ +#define DMA_CH_TRFREQ_bp 4 /* Channel Transfer Request bit position. */ + +#define DMA_CH_SINGLE_bm 0x04 /* Channel Single Shot Data Transfer bit mask. */ +#define DMA_CH_SINGLE_bp 2 /* Channel Single Shot Data Transfer bit position. */ + +#define DMA_CH_BURSTLEN_gm 0x03 /* Channel Transfer Mode group mask. */ +#define DMA_CH_BURSTLEN_gp 0 /* Channel Transfer Mode group position. */ +#define DMA_CH_BURSTLEN0_bm (1<<0) /* Channel Transfer Mode bit 0 mask. */ +#define DMA_CH_BURSTLEN0_bp 0 /* Channel Transfer Mode bit 0 position. */ +#define DMA_CH_BURSTLEN1_bm (1<<1) /* Channel Transfer Mode bit 1 mask. */ +#define DMA_CH_BURSTLEN1_bp 1 /* Channel Transfer Mode bit 1 position. */ + + +/* DMA_CH.CTRLB bit masks and bit positions */ +#define DMA_CH_CHBUSY_bm 0x80 /* Block Transfer Busy bit mask. */ +#define DMA_CH_CHBUSY_bp 7 /* Block Transfer Busy bit position. */ + +#define DMA_CH_CHPEND_bm 0x40 /* Block Transfer Pending bit mask. */ +#define DMA_CH_CHPEND_bp 6 /* Block Transfer Pending bit position. */ + +#define DMA_CH_ERRIF_bm 0x20 /* Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH_ERRIF_bp 5 /* Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH_TRNIF_bm 0x10 /* Transaction Complete Interrup Flag bit mask. */ +#define DMA_CH_TRNIF_bp 4 /* Transaction Complete Interrup Flag bit position. */ + +#define DMA_CH_ERRINTLVL_gm 0x0C /* Transfer Error Interrupt Level group mask. */ +#define DMA_CH_ERRINTLVL_gp 2 /* Transfer Error Interrupt Level group position. */ +#define DMA_CH_ERRINTLVL0_bm (1<<2) /* Transfer Error Interrupt Level bit 0 mask. */ +#define DMA_CH_ERRINTLVL0_bp 2 /* Transfer Error Interrupt Level bit 0 position. */ +#define DMA_CH_ERRINTLVL1_bm (1<<3) /* Transfer Error Interrupt Level bit 1 mask. */ +#define DMA_CH_ERRINTLVL1_bp 3 /* Transfer Error Interrupt Level bit 1 position. */ + +#define DMA_CH_TRNINTLVL_gm 0x03 /* Transaction Complete Interrupt Level group mask. */ +#define DMA_CH_TRNINTLVL_gp 0 /* Transaction Complete Interrupt Level group position. */ +#define DMA_CH_TRNINTLVL0_bm (1<<0) /* Transaction Complete Interrupt Level bit 0 mask. */ +#define DMA_CH_TRNINTLVL0_bp 0 /* Transaction Complete Interrupt Level bit 0 position. */ +#define DMA_CH_TRNINTLVL1_bm (1<<1) /* Transaction Complete Interrupt Level bit 1 mask. */ +#define DMA_CH_TRNINTLVL1_bp 1 /* Transaction Complete Interrupt Level bit 1 position. */ + + +/* DMA_CH.ADDRCTRL bit masks and bit positions */ +#define DMA_CH_SRCRELOAD_gm 0xC0 /* Channel Source Address Reload group mask. */ +#define DMA_CH_SRCRELOAD_gp 6 /* Channel Source Address Reload group position. */ +#define DMA_CH_SRCRELOAD0_bm (1<<6) /* Channel Source Address Reload bit 0 mask. */ +#define DMA_CH_SRCRELOAD0_bp 6 /* Channel Source Address Reload bit 0 position. */ +#define DMA_CH_SRCRELOAD1_bm (1<<7) /* Channel Source Address Reload bit 1 mask. */ +#define DMA_CH_SRCRELOAD1_bp 7 /* Channel Source Address Reload bit 1 position. */ + +#define DMA_CH_SRCDIR_gm 0x30 /* Channel Source Address Mode group mask. */ +#define DMA_CH_SRCDIR_gp 4 /* Channel Source Address Mode group position. */ +#define DMA_CH_SRCDIR0_bm (1<<4) /* Channel Source Address Mode bit 0 mask. */ +#define DMA_CH_SRCDIR0_bp 4 /* Channel Source Address Mode bit 0 position. */ +#define DMA_CH_SRCDIR1_bm (1<<5) /* Channel Source Address Mode bit 1 mask. */ +#define DMA_CH_SRCDIR1_bp 5 /* Channel Source Address Mode bit 1 position. */ + +#define DMA_CH_DESTRELOAD_gm 0x0C /* Channel Destination Address Reload group mask. */ +#define DMA_CH_DESTRELOAD_gp 2 /* Channel Destination Address Reload group position. */ +#define DMA_CH_DESTRELOAD0_bm (1<<2) /* Channel Destination Address Reload bit 0 mask. */ +#define DMA_CH_DESTRELOAD0_bp 2 /* Channel Destination Address Reload bit 0 position. */ +#define DMA_CH_DESTRELOAD1_bm (1<<3) /* Channel Destination Address Reload bit 1 mask. */ +#define DMA_CH_DESTRELOAD1_bp 3 /* Channel Destination Address Reload bit 1 position. */ + +#define DMA_CH_DESTDIR_gm 0x03 /* Channel Destination Address Mode group mask. */ +#define DMA_CH_DESTDIR_gp 0 /* Channel Destination Address Mode group position. */ +#define DMA_CH_DESTDIR0_bm (1<<0) /* Channel Destination Address Mode bit 0 mask. */ +#define DMA_CH_DESTDIR0_bp 0 /* Channel Destination Address Mode bit 0 position. */ +#define DMA_CH_DESTDIR1_bm (1<<1) /* Channel Destination Address Mode bit 1 mask. */ +#define DMA_CH_DESTDIR1_bp 1 /* Channel Destination Address Mode bit 1 position. */ + + +/* DMA_CH.TRIGSRC bit masks and bit positions */ +#define DMA_CH_TRIGSRC_gm 0xFF /* Channel Trigger Source group mask. */ +#define DMA_CH_TRIGSRC_gp 0 /* Channel Trigger Source group position. */ +#define DMA_CH_TRIGSRC0_bm (1<<0) /* Channel Trigger Source bit 0 mask. */ +#define DMA_CH_TRIGSRC0_bp 0 /* Channel Trigger Source bit 0 position. */ +#define DMA_CH_TRIGSRC1_bm (1<<1) /* Channel Trigger Source bit 1 mask. */ +#define DMA_CH_TRIGSRC1_bp 1 /* Channel Trigger Source bit 1 position. */ +#define DMA_CH_TRIGSRC2_bm (1<<2) /* Channel Trigger Source bit 2 mask. */ +#define DMA_CH_TRIGSRC2_bp 2 /* Channel Trigger Source bit 2 position. */ +#define DMA_CH_TRIGSRC3_bm (1<<3) /* Channel Trigger Source bit 3 mask. */ +#define DMA_CH_TRIGSRC3_bp 3 /* Channel Trigger Source bit 3 position. */ +#define DMA_CH_TRIGSRC4_bm (1<<4) /* Channel Trigger Source bit 4 mask. */ +#define DMA_CH_TRIGSRC4_bp 4 /* Channel Trigger Source bit 4 position. */ +#define DMA_CH_TRIGSRC5_bm (1<<5) /* Channel Trigger Source bit 5 mask. */ +#define DMA_CH_TRIGSRC5_bp 5 /* Channel Trigger Source bit 5 position. */ +#define DMA_CH_TRIGSRC6_bm (1<<6) /* Channel Trigger Source bit 6 mask. */ +#define DMA_CH_TRIGSRC6_bp 6 /* Channel Trigger Source bit 6 position. */ +#define DMA_CH_TRIGSRC7_bm (1<<7) /* Channel Trigger Source bit 7 mask. */ +#define DMA_CH_TRIGSRC7_bp 7 /* Channel Trigger Source bit 7 position. */ + + +/* DMA.CTRL bit masks and bit positions */ +#define DMA_ENABLE_bm 0x80 /* Enable bit mask. */ +#define DMA_ENABLE_bp 7 /* Enable bit position. */ + +#define DMA_RESET_bm 0x40 /* Software Reset bit mask. */ +#define DMA_RESET_bp 6 /* Software Reset bit position. */ + +#define DMA_DBUFMODE_gm 0x0C /* Double Buffering Mode group mask. */ +#define DMA_DBUFMODE_gp 2 /* Double Buffering Mode group position. */ +#define DMA_DBUFMODE0_bm (1<<2) /* Double Buffering Mode bit 0 mask. */ +#define DMA_DBUFMODE0_bp 2 /* Double Buffering Mode bit 0 position. */ +#define DMA_DBUFMODE1_bm (1<<3) /* Double Buffering Mode bit 1 mask. */ +#define DMA_DBUFMODE1_bp 3 /* Double Buffering Mode bit 1 position. */ + +#define DMA_PRIMODE_gm 0x03 /* Channel Priority Mode group mask. */ +#define DMA_PRIMODE_gp 0 /* Channel Priority Mode group position. */ +#define DMA_PRIMODE0_bm (1<<0) /* Channel Priority Mode bit 0 mask. */ +#define DMA_PRIMODE0_bp 0 /* Channel Priority Mode bit 0 position. */ +#define DMA_PRIMODE1_bm (1<<1) /* Channel Priority Mode bit 1 mask. */ +#define DMA_PRIMODE1_bp 1 /* Channel Priority Mode bit 1 position. */ + + +/* DMA.INTFLAGS bit masks and bit positions */ +#define DMA_CH3ERRIF_bm 0x80 /* Channel 3 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH3ERRIF_bp 7 /* Channel 3 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH2ERRIF_bm 0x40 /* Channel 2 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH2ERRIF_bp 6 /* Channel 2 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH1ERRIF_bm 0x20 /* Channel 1 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH1ERRIF_bp 5 /* Channel 1 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH0ERRIF_bm 0x10 /* Channel 0 Block Transfer Error Interrupt Flag bit mask. */ +#define DMA_CH0ERRIF_bp 4 /* Channel 0 Block Transfer Error Interrupt Flag bit position. */ + +#define DMA_CH3TRNIF_bm 0x08 /* Channel 3 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH3TRNIF_bp 3 /* Channel 3 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH2TRNIF_bm 0x04 /* Channel 2 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH2TRNIF_bp 2 /* Channel 2 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH1TRNIF_bm 0x02 /* Channel 1 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH1TRNIF_bp 1 /* Channel 1 Transaction Complete Interrupt Flag bit position. */ + +#define DMA_CH0TRNIF_bm 0x01 /* Channel 0 Transaction Complete Interrupt Flag bit mask. */ +#define DMA_CH0TRNIF_bp 0 /* Channel 0 Transaction Complete Interrupt Flag bit position. */ + + +/* DMA.STATUS bit masks and bit positions */ +#define DMA_CH3BUSY_bm 0x80 /* Channel 3 Block Transfer Busy bit mask. */ +#define DMA_CH3BUSY_bp 7 /* Channel 3 Block Transfer Busy bit position. */ + +#define DMA_CH2BUSY_bm 0x40 /* Channel 2 Block Transfer Busy bit mask. */ +#define DMA_CH2BUSY_bp 6 /* Channel 2 Block Transfer Busy bit position. */ + +#define DMA_CH1BUSY_bm 0x20 /* Channel 1 Block Transfer Busy bit mask. */ +#define DMA_CH1BUSY_bp 5 /* Channel 1 Block Transfer Busy bit position. */ + +#define DMA_CH0BUSY_bm 0x10 /* Channel 0 Block Transfer Busy bit mask. */ +#define DMA_CH0BUSY_bp 4 /* Channel 0 Block Transfer Busy bit position. */ + +#define DMA_CH3PEND_bm 0x08 /* Channel 3 Block Transfer Pending bit mask. */ +#define DMA_CH3PEND_bp 3 /* Channel 3 Block Transfer Pending bit position. */ + +#define DMA_CH2PEND_bm 0x04 /* Channel 2 Block Transfer Pending bit mask. */ +#define DMA_CH2PEND_bp 2 /* Channel 2 Block Transfer Pending bit position. */ + +#define DMA_CH1PEND_bm 0x02 /* Channel 1 Block Transfer Pending bit mask. */ +#define DMA_CH1PEND_bp 1 /* Channel 1 Block Transfer Pending bit position. */ + +#define DMA_CH0PEND_bm 0x01 /* Channel 0 Block Transfer Pending bit mask. */ +#define DMA_CH0PEND_bp 0 /* Channel 0 Block Transfer Pending bit position. */ + + +/* EVSYS - Event System */ +/* EVSYS.CH0MUX bit masks and bit positions */ +#define EVSYS_CHMUX_gm 0xFF /* Event Channel 0 Multiplexer group mask. */ +#define EVSYS_CHMUX_gp 0 /* Event Channel 0 Multiplexer group position. */ +#define EVSYS_CHMUX0_bm (1<<0) /* Event Channel 0 Multiplexer bit 0 mask. */ +#define EVSYS_CHMUX0_bp 0 /* Event Channel 0 Multiplexer bit 0 position. */ +#define EVSYS_CHMUX1_bm (1<<1) /* Event Channel 0 Multiplexer bit 1 mask. */ +#define EVSYS_CHMUX1_bp 1 /* Event Channel 0 Multiplexer bit 1 position. */ +#define EVSYS_CHMUX2_bm (1<<2) /* Event Channel 0 Multiplexer bit 2 mask. */ +#define EVSYS_CHMUX2_bp 2 /* Event Channel 0 Multiplexer bit 2 position. */ +#define EVSYS_CHMUX3_bm (1<<3) /* Event Channel 0 Multiplexer bit 3 mask. */ +#define EVSYS_CHMUX3_bp 3 /* Event Channel 0 Multiplexer bit 3 position. */ +#define EVSYS_CHMUX4_bm (1<<4) /* Event Channel 0 Multiplexer bit 4 mask. */ +#define EVSYS_CHMUX4_bp 4 /* Event Channel 0 Multiplexer bit 4 position. */ +#define EVSYS_CHMUX5_bm (1<<5) /* Event Channel 0 Multiplexer bit 5 mask. */ +#define EVSYS_CHMUX5_bp 5 /* Event Channel 0 Multiplexer bit 5 position. */ +#define EVSYS_CHMUX6_bm (1<<6) /* Event Channel 0 Multiplexer bit 6 mask. */ +#define EVSYS_CHMUX6_bp 6 /* Event Channel 0 Multiplexer bit 6 position. */ +#define EVSYS_CHMUX7_bm (1<<7) /* Event Channel 0 Multiplexer bit 7 mask. */ +#define EVSYS_CHMUX7_bp 7 /* Event Channel 0 Multiplexer bit 7 position. */ + + +/* EVSYS.CH1MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH2MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH3MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH4MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH5MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH6MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH7MUX bit masks and bit positions */ +/* EVSYS_CHMUX_gm Predefined. */ +/* EVSYS_CHMUX_gp Predefined. */ +/* EVSYS_CHMUX0_bm Predefined. */ +/* EVSYS_CHMUX0_bp Predefined. */ +/* EVSYS_CHMUX1_bm Predefined. */ +/* EVSYS_CHMUX1_bp Predefined. */ +/* EVSYS_CHMUX2_bm Predefined. */ +/* EVSYS_CHMUX2_bp Predefined. */ +/* EVSYS_CHMUX3_bm Predefined. */ +/* EVSYS_CHMUX3_bp Predefined. */ +/* EVSYS_CHMUX4_bm Predefined. */ +/* EVSYS_CHMUX4_bp Predefined. */ +/* EVSYS_CHMUX5_bm Predefined. */ +/* EVSYS_CHMUX5_bp Predefined. */ +/* EVSYS_CHMUX6_bm Predefined. */ +/* EVSYS_CHMUX6_bp Predefined. */ +/* EVSYS_CHMUX7_bm Predefined. */ +/* EVSYS_CHMUX7_bp Predefined. */ + + +/* EVSYS.CH0CTRL bit masks and bit positions */ +#define EVSYS_QDIRM_gm 0x60 /* Quadrature Decoder Index Recognition Mode group mask. */ +#define EVSYS_QDIRM_gp 5 /* Quadrature Decoder Index Recognition Mode group position. */ +#define EVSYS_QDIRM0_bm (1<<5) /* Quadrature Decoder Index Recognition Mode bit 0 mask. */ +#define EVSYS_QDIRM0_bp 5 /* Quadrature Decoder Index Recognition Mode bit 0 position. */ +#define EVSYS_QDIRM1_bm (1<<6) /* Quadrature Decoder Index Recognition Mode bit 1 mask. */ +#define EVSYS_QDIRM1_bp 6 /* Quadrature Decoder Index Recognition Mode bit 1 position. */ + +#define EVSYS_QDIEN_bm 0x10 /* Quadrature Decoder Index Enable bit mask. */ +#define EVSYS_QDIEN_bp 4 /* Quadrature Decoder Index Enable bit position. */ + +#define EVSYS_QDEN_bm 0x08 /* Quadrature Decoder Enable bit mask. */ +#define EVSYS_QDEN_bp 3 /* Quadrature Decoder Enable bit position. */ + +#define EVSYS_DIGFILT_gm 0x07 /* Digital Filter group mask. */ +#define EVSYS_DIGFILT_gp 0 /* Digital Filter group position. */ +#define EVSYS_DIGFILT0_bm (1<<0) /* Digital Filter bit 0 mask. */ +#define EVSYS_DIGFILT0_bp 0 /* Digital Filter bit 0 position. */ +#define EVSYS_DIGFILT1_bm (1<<1) /* Digital Filter bit 1 mask. */ +#define EVSYS_DIGFILT1_bp 1 /* Digital Filter bit 1 position. */ +#define EVSYS_DIGFILT2_bm (1<<2) /* Digital Filter bit 2 mask. */ +#define EVSYS_DIGFILT2_bp 2 /* Digital Filter bit 2 position. */ + + +/* EVSYS.CH1CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH2CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH3CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH4CTRL bit masks and bit positions */ +/* EVSYS_QDIRM_gm Predefined. */ +/* EVSYS_QDIRM_gp Predefined. */ +/* EVSYS_QDIRM0_bm Predefined. */ +/* EVSYS_QDIRM0_bp Predefined. */ +/* EVSYS_QDIRM1_bm Predefined. */ +/* EVSYS_QDIRM1_bp Predefined. */ + +/* EVSYS_QDIEN_bm Predefined. */ +/* EVSYS_QDIEN_bp Predefined. */ + +/* EVSYS_QDEN_bm Predefined. */ +/* EVSYS_QDEN_bp Predefined. */ + +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH5CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH6CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* EVSYS.CH7CTRL bit masks and bit positions */ +/* EVSYS_DIGFILT_gm Predefined. */ +/* EVSYS_DIGFILT_gp Predefined. */ +/* EVSYS_DIGFILT0_bm Predefined. */ +/* EVSYS_DIGFILT0_bp Predefined. */ +/* EVSYS_DIGFILT1_bm Predefined. */ +/* EVSYS_DIGFILT1_bp Predefined. */ +/* EVSYS_DIGFILT2_bm Predefined. */ +/* EVSYS_DIGFILT2_bp Predefined. */ + + +/* NVM - Non Volatile Memory Controller */ +/* NVM.CMD bit masks and bit positions */ +#define NVM_CMD_gm 0xFF /* Command group mask. */ +#define NVM_CMD_gp 0 /* Command group position. */ +#define NVM_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define NVM_CMD0_bp 0 /* Command bit 0 position. */ +#define NVM_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define NVM_CMD1_bp 1 /* Command bit 1 position. */ +#define NVM_CMD2_bm (1<<2) /* Command bit 2 mask. */ +#define NVM_CMD2_bp 2 /* Command bit 2 position. */ +#define NVM_CMD3_bm (1<<3) /* Command bit 3 mask. */ +#define NVM_CMD3_bp 3 /* Command bit 3 position. */ +#define NVM_CMD4_bm (1<<4) /* Command bit 4 mask. */ +#define NVM_CMD4_bp 4 /* Command bit 4 position. */ +#define NVM_CMD5_bm (1<<5) /* Command bit 5 mask. */ +#define NVM_CMD5_bp 5 /* Command bit 5 position. */ +#define NVM_CMD6_bm (1<<6) /* Command bit 6 mask. */ +#define NVM_CMD6_bp 6 /* Command bit 6 position. */ +#define NVM_CMD7_bm (1<<7) /* Command bit 7 mask. */ +#define NVM_CMD7_bp 7 /* Command bit 7 position. */ + + +/* NVM.CTRLA bit masks and bit positions */ +#define NVM_CMDEX_bm 0x01 /* Command Execute bit mask. */ +#define NVM_CMDEX_bp 0 /* Command Execute bit position. */ + + +/* NVM.CTRLB bit masks and bit positions */ +#define NVM_EEMAPEN_bm 0x08 /* EEPROM Mapping Enable bit mask. */ +#define NVM_EEMAPEN_bp 3 /* EEPROM Mapping Enable bit position. */ + +#define NVM_FPRM_bm 0x04 /* Flash Power Reduction Enable bit mask. */ +#define NVM_FPRM_bp 2 /* Flash Power Reduction Enable bit position. */ + +#define NVM_EPRM_bm 0x02 /* EEPROM Power Reduction Enable bit mask. */ +#define NVM_EPRM_bp 1 /* EEPROM Power Reduction Enable bit position. */ + +#define NVM_SPMLOCK_bm 0x01 /* SPM Lock bit mask. */ +#define NVM_SPMLOCK_bp 0 /* SPM Lock bit position. */ + + +/* NVM.INTCTRL bit masks and bit positions */ +#define NVM_SPMLVL_gm 0x0C /* SPM Interrupt Level group mask. */ +#define NVM_SPMLVL_gp 2 /* SPM Interrupt Level group position. */ +#define NVM_SPMLVL0_bm (1<<2) /* SPM Interrupt Level bit 0 mask. */ +#define NVM_SPMLVL0_bp 2 /* SPM Interrupt Level bit 0 position. */ +#define NVM_SPMLVL1_bm (1<<3) /* SPM Interrupt Level bit 1 mask. */ +#define NVM_SPMLVL1_bp 3 /* SPM Interrupt Level bit 1 position. */ + +#define NVM_EELVL_gm 0x03 /* EEPROM Interrupt Level group mask. */ +#define NVM_EELVL_gp 0 /* EEPROM Interrupt Level group position. */ +#define NVM_EELVL0_bm (1<<0) /* EEPROM Interrupt Level bit 0 mask. */ +#define NVM_EELVL0_bp 0 /* EEPROM Interrupt Level bit 0 position. */ +#define NVM_EELVL1_bm (1<<1) /* EEPROM Interrupt Level bit 1 mask. */ +#define NVM_EELVL1_bp 1 /* EEPROM Interrupt Level bit 1 position. */ + + +/* NVM.STATUS bit masks and bit positions */ +#define NVM_NVMBUSY_bm 0x80 /* Non-volatile Memory Busy bit mask. */ +#define NVM_NVMBUSY_bp 7 /* Non-volatile Memory Busy bit position. */ + +#define NVM_FBUSY_bm 0x40 /* Flash Memory Busy bit mask. */ +#define NVM_FBUSY_bp 6 /* Flash Memory Busy bit position. */ + +#define NVM_EELOAD_bm 0x02 /* EEPROM Page Buffer Active Loading bit mask. */ +#define NVM_EELOAD_bp 1 /* EEPROM Page Buffer Active Loading bit position. */ + +#define NVM_FLOAD_bm 0x01 /* Flash Page Buffer Active Loading bit mask. */ +#define NVM_FLOAD_bp 0 /* Flash Page Buffer Active Loading bit position. */ + + +/* NVM.LOCKBITS bit masks and bit positions */ +#define NVM_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_LOCKBITS.LOCKBITS bit masks and bit positions */ +#define NVM_LOCKBITS_BLBB_gm 0xC0 /* Boot Lock Bits - Boot Section group mask. */ +#define NVM_LOCKBITS_BLBB_gp 6 /* Boot Lock Bits - Boot Section group position. */ +#define NVM_LOCKBITS_BLBB0_bm (1<<6) /* Boot Lock Bits - Boot Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBB0_bp 6 /* Boot Lock Bits - Boot Section bit 0 position. */ +#define NVM_LOCKBITS_BLBB1_bm (1<<7) /* Boot Lock Bits - Boot Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBB1_bp 7 /* Boot Lock Bits - Boot Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBA_gm 0x30 /* Boot Lock Bits - Application Section group mask. */ +#define NVM_LOCKBITS_BLBA_gp 4 /* Boot Lock Bits - Application Section group position. */ +#define NVM_LOCKBITS_BLBA0_bm (1<<4) /* Boot Lock Bits - Application Section bit 0 mask. */ +#define NVM_LOCKBITS_BLBA0_bp 4 /* Boot Lock Bits - Application Section bit 0 position. */ +#define NVM_LOCKBITS_BLBA1_bm (1<<5) /* Boot Lock Bits - Application Section bit 1 mask. */ +#define NVM_LOCKBITS_BLBA1_bp 5 /* Boot Lock Bits - Application Section bit 1 position. */ + +#define NVM_LOCKBITS_BLBAT_gm 0x0C /* Boot Lock Bits - Application Table group mask. */ +#define NVM_LOCKBITS_BLBAT_gp 2 /* Boot Lock Bits - Application Table group position. */ +#define NVM_LOCKBITS_BLBAT0_bm (1<<2) /* Boot Lock Bits - Application Table bit 0 mask. */ +#define NVM_LOCKBITS_BLBAT0_bp 2 /* Boot Lock Bits - Application Table bit 0 position. */ +#define NVM_LOCKBITS_BLBAT1_bm (1<<3) /* Boot Lock Bits - Application Table bit 1 mask. */ +#define NVM_LOCKBITS_BLBAT1_bp 3 /* Boot Lock Bits - Application Table bit 1 position. */ + +#define NVM_LOCKBITS_LB_gm 0x03 /* Lock Bits group mask. */ +#define NVM_LOCKBITS_LB_gp 0 /* Lock Bits group position. */ +#define NVM_LOCKBITS_LB0_bm (1<<0) /* Lock Bits bit 0 mask. */ +#define NVM_LOCKBITS_LB0_bp 0 /* Lock Bits bit 0 position. */ +#define NVM_LOCKBITS_LB1_bm (1<<1) /* Lock Bits bit 1 mask. */ +#define NVM_LOCKBITS_LB1_bp 1 /* Lock Bits bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE0 bit masks and bit positions */ +#define NVM_FUSES_JTAGUSERID_gm 0xFF /* JTAG User ID group mask. */ +#define NVM_FUSES_JTAGUSERID_gp 0 /* JTAG User ID group position. */ +#define NVM_FUSES_JTAGUSERID0_bm (1<<0) /* JTAG User ID bit 0 mask. */ +#define NVM_FUSES_JTAGUSERID0_bp 0 /* JTAG User ID bit 0 position. */ +#define NVM_FUSES_JTAGUSERID1_bm (1<<1) /* JTAG User ID bit 1 mask. */ +#define NVM_FUSES_JTAGUSERID1_bp 1 /* JTAG User ID bit 1 position. */ +#define NVM_FUSES_JTAGUSERID2_bm (1<<2) /* JTAG User ID bit 2 mask. */ +#define NVM_FUSES_JTAGUSERID2_bp 2 /* JTAG User ID bit 2 position. */ +#define NVM_FUSES_JTAGUSERID3_bm (1<<3) /* JTAG User ID bit 3 mask. */ +#define NVM_FUSES_JTAGUSERID3_bp 3 /* JTAG User ID bit 3 position. */ +#define NVM_FUSES_JTAGUSERID4_bm (1<<4) /* JTAG User ID bit 4 mask. */ +#define NVM_FUSES_JTAGUSERID4_bp 4 /* JTAG User ID bit 4 position. */ +#define NVM_FUSES_JTAGUSERID5_bm (1<<5) /* JTAG User ID bit 5 mask. */ +#define NVM_FUSES_JTAGUSERID5_bp 5 /* JTAG User ID bit 5 position. */ +#define NVM_FUSES_JTAGUSERID6_bm (1<<6) /* JTAG User ID bit 6 mask. */ +#define NVM_FUSES_JTAGUSERID6_bp 6 /* JTAG User ID bit 6 position. */ +#define NVM_FUSES_JTAGUSERID7_bm (1<<7) /* JTAG User ID bit 7 mask. */ +#define NVM_FUSES_JTAGUSERID7_bp 7 /* JTAG User ID bit 7 position. */ + + +/* NVM_FUSES.FUSEBYTE1 bit masks and bit positions */ +#define NVM_FUSES_WDWP_gm 0xF0 /* Watchdog Window Timeout Period group mask. */ +#define NVM_FUSES_WDWP_gp 4 /* Watchdog Window Timeout Period group position. */ +#define NVM_FUSES_WDWP0_bm (1<<4) /* Watchdog Window Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDWP0_bp 4 /* Watchdog Window Timeout Period bit 0 position. */ +#define NVM_FUSES_WDWP1_bm (1<<5) /* Watchdog Window Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDWP1_bp 5 /* Watchdog Window Timeout Period bit 1 position. */ +#define NVM_FUSES_WDWP2_bm (1<<6) /* Watchdog Window Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDWP2_bp 6 /* Watchdog Window Timeout Period bit 2 position. */ +#define NVM_FUSES_WDWP3_bm (1<<7) /* Watchdog Window Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDWP3_bp 7 /* Watchdog Window Timeout Period bit 3 position. */ + +#define NVM_FUSES_WDP_gm 0x0F /* Watchdog Timeout Period group mask. */ +#define NVM_FUSES_WDP_gp 0 /* Watchdog Timeout Period group position. */ +#define NVM_FUSES_WDP0_bm (1<<0) /* Watchdog Timeout Period bit 0 mask. */ +#define NVM_FUSES_WDP0_bp 0 /* Watchdog Timeout Period bit 0 position. */ +#define NVM_FUSES_WDP1_bm (1<<1) /* Watchdog Timeout Period bit 1 mask. */ +#define NVM_FUSES_WDP1_bp 1 /* Watchdog Timeout Period bit 1 position. */ +#define NVM_FUSES_WDP2_bm (1<<2) /* Watchdog Timeout Period bit 2 mask. */ +#define NVM_FUSES_WDP2_bp 2 /* Watchdog Timeout Period bit 2 position. */ +#define NVM_FUSES_WDP3_bm (1<<3) /* Watchdog Timeout Period bit 3 mask. */ +#define NVM_FUSES_WDP3_bp 3 /* Watchdog Timeout Period bit 3 position. */ + + +/* NVM_FUSES.FUSEBYTE2 bit masks and bit positions */ +#define NVM_FUSES_DVSDON_bm 0x80 /* Spike Detector Enable bit mask. */ +#define NVM_FUSES_DVSDON_bp 7 /* Spike Detector Enable bit position. */ + +#define NVM_FUSES_BOOTRST_bm 0x40 /* Boot Loader Section Reset Vector bit mask. */ +#define NVM_FUSES_BOOTRST_bp 6 /* Boot Loader Section Reset Vector bit position. */ + +#define NVM_FUSES_BODACT_gm 0x0C /* BOD Operation in Active Mode group mask. */ +#define NVM_FUSES_BODACT_gp 2 /* BOD Operation in Active Mode group position. */ +#define NVM_FUSES_BODACT0_bm (1<<2) /* BOD Operation in Active Mode bit 0 mask. */ +#define NVM_FUSES_BODACT0_bp 2 /* BOD Operation in Active Mode bit 0 position. */ +#define NVM_FUSES_BODACT1_bm (1<<3) /* BOD Operation in Active Mode bit 1 mask. */ +#define NVM_FUSES_BODACT1_bp 3 /* BOD Operation in Active Mode bit 1 position. */ + +#define NVM_FUSES_BODPD_gm 0x03 /* BOD Operation in Power-Down Mode group mask. */ +#define NVM_FUSES_BODPD_gp 0 /* BOD Operation in Power-Down Mode group position. */ +#define NVM_FUSES_BODPD0_bm (1<<0) /* BOD Operation in Power-Down Mode bit 0 mask. */ +#define NVM_FUSES_BODPD0_bp 0 /* BOD Operation in Power-Down Mode bit 0 position. */ +#define NVM_FUSES_BODPD1_bm (1<<1) /* BOD Operation in Power-Down Mode bit 1 mask. */ +#define NVM_FUSES_BODPD1_bp 1 /* BOD Operation in Power-Down Mode bit 1 position. */ + + +/* NVM_FUSES.FUSEBYTE4 bit masks and bit positions */ +#define NVM_FUSES_SUT_gm 0x0C /* Start-up Time group mask. */ +#define NVM_FUSES_SUT_gp 2 /* Start-up Time group position. */ +#define NVM_FUSES_SUT0_bm (1<<2) /* Start-up Time bit 0 mask. */ +#define NVM_FUSES_SUT0_bp 2 /* Start-up Time bit 0 position. */ +#define NVM_FUSES_SUT1_bm (1<<3) /* Start-up Time bit 1 mask. */ +#define NVM_FUSES_SUT1_bp 3 /* Start-up Time bit 1 position. */ + +#define NVM_FUSES_WDLOCK_bm 0x02 /* Watchdog Timer Lock bit mask. */ +#define NVM_FUSES_WDLOCK_bp 1 /* Watchdog Timer Lock bit position. */ + +#define NVM_FUSES_JTAGEN_bm 0x01 /* JTAG Interface Enable bit mask. */ +#define NVM_FUSES_JTAGEN_bp 0 /* JTAG Interface Enable bit position. */ + + +/* NVM_FUSES.FUSEBYTE5 bit masks and bit positions */ +#define NVM_FUSES_EESAVE_bm 0x08 /* Preserve EEPROM Through Chip Erase bit mask. */ +#define NVM_FUSES_EESAVE_bp 3 /* Preserve EEPROM Through Chip Erase bit position. */ + +#define NVM_FUSES_BODLVL_gm 0x07 /* Brown Out Detection Voltage Level group mask. */ +#define NVM_FUSES_BODLVL_gp 0 /* Brown Out Detection Voltage Level group position. */ +#define NVM_FUSES_BODLVL0_bm (1<<0) /* Brown Out Detection Voltage Level bit 0 mask. */ +#define NVM_FUSES_BODLVL0_bp 0 /* Brown Out Detection Voltage Level bit 0 position. */ +#define NVM_FUSES_BODLVL1_bm (1<<1) /* Brown Out Detection Voltage Level bit 1 mask. */ +#define NVM_FUSES_BODLVL1_bp 1 /* Brown Out Detection Voltage Level bit 1 position. */ +#define NVM_FUSES_BODLVL2_bm (1<<2) /* Brown Out Detection Voltage Level bit 2 mask. */ +#define NVM_FUSES_BODLVL2_bp 2 /* Brown Out Detection Voltage Level bit 2 position. */ + + +/* AC - Analog Comparator */ +/* AC.AC0CTRL bit masks and bit positions */ +#define AC_INTMODE_gm 0xC0 /* Interrupt Mode group mask. */ +#define AC_INTMODE_gp 6 /* Interrupt Mode group position. */ +#define AC_INTMODE0_bm (1<<6) /* Interrupt Mode bit 0 mask. */ +#define AC_INTMODE0_bp 6 /* Interrupt Mode bit 0 position. */ +#define AC_INTMODE1_bm (1<<7) /* Interrupt Mode bit 1 mask. */ +#define AC_INTMODE1_bp 7 /* Interrupt Mode bit 1 position. */ + +#define AC_INTLVL_gm 0x30 /* Interrupt Level group mask. */ +#define AC_INTLVL_gp 4 /* Interrupt Level group position. */ +#define AC_INTLVL0_bm (1<<4) /* Interrupt Level bit 0 mask. */ +#define AC_INTLVL0_bp 4 /* Interrupt Level bit 0 position. */ +#define AC_INTLVL1_bm (1<<5) /* Interrupt Level bit 1 mask. */ +#define AC_INTLVL1_bp 5 /* Interrupt Level bit 1 position. */ + +#define AC_HSMODE_bm 0x08 /* High-speed Mode bit mask. */ +#define AC_HSMODE_bp 3 /* High-speed Mode bit position. */ + +#define AC_HYSMODE_gm 0x06 /* Hysteresis Mode group mask. */ +#define AC_HYSMODE_gp 1 /* Hysteresis Mode group position. */ +#define AC_HYSMODE0_bm (1<<1) /* Hysteresis Mode bit 0 mask. */ +#define AC_HYSMODE0_bp 1 /* Hysteresis Mode bit 0 position. */ +#define AC_HYSMODE1_bm (1<<2) /* Hysteresis Mode bit 1 mask. */ +#define AC_HYSMODE1_bp 2 /* Hysteresis Mode bit 1 position. */ + +#define AC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define AC_ENABLE_bp 0 /* Enable bit position. */ + + +/* AC.AC1CTRL bit masks and bit positions */ +/* AC_INTMODE_gm Predefined. */ +/* AC_INTMODE_gp Predefined. */ +/* AC_INTMODE0_bm Predefined. */ +/* AC_INTMODE0_bp Predefined. */ +/* AC_INTMODE1_bm Predefined. */ +/* AC_INTMODE1_bp Predefined. */ + +/* AC_INTLVL_gm Predefined. */ +/* AC_INTLVL_gp Predefined. */ +/* AC_INTLVL0_bm Predefined. */ +/* AC_INTLVL0_bp Predefined. */ +/* AC_INTLVL1_bm Predefined. */ +/* AC_INTLVL1_bp Predefined. */ + +/* AC_HSMODE_bm Predefined. */ +/* AC_HSMODE_bp Predefined. */ + +/* AC_HYSMODE_gm Predefined. */ +/* AC_HYSMODE_gp Predefined. */ +/* AC_HYSMODE0_bm Predefined. */ +/* AC_HYSMODE0_bp Predefined. */ +/* AC_HYSMODE1_bm Predefined. */ +/* AC_HYSMODE1_bp Predefined. */ + +/* AC_ENABLE_bm Predefined. */ +/* AC_ENABLE_bp Predefined. */ + + +/* AC.AC0MUXCTRL bit masks and bit positions */ +#define AC_MUXPOS_gm 0x38 /* MUX Positive Input group mask. */ +#define AC_MUXPOS_gp 3 /* MUX Positive Input group position. */ +#define AC_MUXPOS0_bm (1<<3) /* MUX Positive Input bit 0 mask. */ +#define AC_MUXPOS0_bp 3 /* MUX Positive Input bit 0 position. */ +#define AC_MUXPOS1_bm (1<<4) /* MUX Positive Input bit 1 mask. */ +#define AC_MUXPOS1_bp 4 /* MUX Positive Input bit 1 position. */ +#define AC_MUXPOS2_bm (1<<5) /* MUX Positive Input bit 2 mask. */ +#define AC_MUXPOS2_bp 5 /* MUX Positive Input bit 2 position. */ + +#define AC_MUXNEG_gm 0x07 /* MUX Negative Input group mask. */ +#define AC_MUXNEG_gp 0 /* MUX Negative Input group position. */ +#define AC_MUXNEG0_bm (1<<0) /* MUX Negative Input bit 0 mask. */ +#define AC_MUXNEG0_bp 0 /* MUX Negative Input bit 0 position. */ +#define AC_MUXNEG1_bm (1<<1) /* MUX Negative Input bit 1 mask. */ +#define AC_MUXNEG1_bp 1 /* MUX Negative Input bit 1 position. */ +#define AC_MUXNEG2_bm (1<<2) /* MUX Negative Input bit 2 mask. */ +#define AC_MUXNEG2_bp 2 /* MUX Negative Input bit 2 position. */ + + +/* AC.AC1MUXCTRL bit masks and bit positions */ +/* AC_MUXPOS_gm Predefined. */ +/* AC_MUXPOS_gp Predefined. */ +/* AC_MUXPOS0_bm Predefined. */ +/* AC_MUXPOS0_bp Predefined. */ +/* AC_MUXPOS1_bm Predefined. */ +/* AC_MUXPOS1_bp Predefined. */ +/* AC_MUXPOS2_bm Predefined. */ +/* AC_MUXPOS2_bp Predefined. */ + +/* AC_MUXNEG_gm Predefined. */ +/* AC_MUXNEG_gp Predefined. */ +/* AC_MUXNEG0_bm Predefined. */ +/* AC_MUXNEG0_bp Predefined. */ +/* AC_MUXNEG1_bm Predefined. */ +/* AC_MUXNEG1_bp Predefined. */ +/* AC_MUXNEG2_bm Predefined. */ +/* AC_MUXNEG2_bp Predefined. */ + + +/* AC.CTRLA bit masks and bit positions */ +#define AC_AC0OUT_bm 0x01 /* Comparator 0 Output Enable bit mask. */ +#define AC_AC0OUT_bp 0 /* Comparator 0 Output Enable bit position. */ + + +/* AC.CTRLB bit masks and bit positions */ +#define AC_SCALEFAC_gm 0x3F /* VCC Voltage Scaler Factor group mask. */ +#define AC_SCALEFAC_gp 0 /* VCC Voltage Scaler Factor group position. */ +#define AC_SCALEFAC0_bm (1<<0) /* VCC Voltage Scaler Factor bit 0 mask. */ +#define AC_SCALEFAC0_bp 0 /* VCC Voltage Scaler Factor bit 0 position. */ +#define AC_SCALEFAC1_bm (1<<1) /* VCC Voltage Scaler Factor bit 1 mask. */ +#define AC_SCALEFAC1_bp 1 /* VCC Voltage Scaler Factor bit 1 position. */ +#define AC_SCALEFAC2_bm (1<<2) /* VCC Voltage Scaler Factor bit 2 mask. */ +#define AC_SCALEFAC2_bp 2 /* VCC Voltage Scaler Factor bit 2 position. */ +#define AC_SCALEFAC3_bm (1<<3) /* VCC Voltage Scaler Factor bit 3 mask. */ +#define AC_SCALEFAC3_bp 3 /* VCC Voltage Scaler Factor bit 3 position. */ +#define AC_SCALEFAC4_bm (1<<4) /* VCC Voltage Scaler Factor bit 4 mask. */ +#define AC_SCALEFAC4_bp 4 /* VCC Voltage Scaler Factor bit 4 position. */ +#define AC_SCALEFAC5_bm (1<<5) /* VCC Voltage Scaler Factor bit 5 mask. */ +#define AC_SCALEFAC5_bp 5 /* VCC Voltage Scaler Factor bit 5 position. */ + + +/* AC.WINCTRL bit masks and bit positions */ +#define AC_WEN_bm 0x10 /* Window Mode Enable bit mask. */ +#define AC_WEN_bp 4 /* Window Mode Enable bit position. */ + +#define AC_WINTMODE_gm 0x0C /* Window Interrupt Mode group mask. */ +#define AC_WINTMODE_gp 2 /* Window Interrupt Mode group position. */ +#define AC_WINTMODE0_bm (1<<2) /* Window Interrupt Mode bit 0 mask. */ +#define AC_WINTMODE0_bp 2 /* Window Interrupt Mode bit 0 position. */ +#define AC_WINTMODE1_bm (1<<3) /* Window Interrupt Mode bit 1 mask. */ +#define AC_WINTMODE1_bp 3 /* Window Interrupt Mode bit 1 position. */ + +#define AC_WINTLVL_gm 0x03 /* Window Interrupt Level group mask. */ +#define AC_WINTLVL_gp 0 /* Window Interrupt Level group position. */ +#define AC_WINTLVL0_bm (1<<0) /* Window Interrupt Level bit 0 mask. */ +#define AC_WINTLVL0_bp 0 /* Window Interrupt Level bit 0 position. */ +#define AC_WINTLVL1_bm (1<<1) /* Window Interrupt Level bit 1 mask. */ +#define AC_WINTLVL1_bp 1 /* Window Interrupt Level bit 1 position. */ + + +/* AC.STATUS bit masks and bit positions */ +#define AC_WSTATE_gm 0xC0 /* Window Mode State group mask. */ +#define AC_WSTATE_gp 6 /* Window Mode State group position. */ +#define AC_WSTATE0_bm (1<<6) /* Window Mode State bit 0 mask. */ +#define AC_WSTATE0_bp 6 /* Window Mode State bit 0 position. */ +#define AC_WSTATE1_bm (1<<7) /* Window Mode State bit 1 mask. */ +#define AC_WSTATE1_bp 7 /* Window Mode State bit 1 position. */ + +#define AC_AC1STATE_bm 0x20 /* Comparator 1 State bit mask. */ +#define AC_AC1STATE_bp 5 /* Comparator 1 State bit position. */ + +#define AC_AC0STATE_bm 0x10 /* Comparator 0 State bit mask. */ +#define AC_AC0STATE_bp 4 /* Comparator 0 State bit position. */ + +#define AC_WIF_bm 0x04 /* Window Mode Interrupt Flag bit mask. */ +#define AC_WIF_bp 2 /* Window Mode Interrupt Flag bit position. */ + +#define AC_AC1IF_bm 0x02 /* Comparator 1 Interrupt Flag bit mask. */ +#define AC_AC1IF_bp 1 /* Comparator 1 Interrupt Flag bit position. */ + +#define AC_AC0IF_bm 0x01 /* Comparator 0 Interrupt Flag bit mask. */ +#define AC_AC0IF_bp 0 /* Comparator 0 Interrupt Flag bit position. */ + + +/* ADC - Analog/Digital Converter */ +/* ADC_CH.CTRL bit masks and bit positions */ +#define ADC_CH_START_bm 0x80 /* Channel Start Conversion bit mask. */ +#define ADC_CH_START_bp 7 /* Channel Start Conversion bit position. */ + +#define ADC_CH_GAINFAC_gm 0x1C /* Gain Factor group mask. */ +#define ADC_CH_GAINFAC_gp 2 /* Gain Factor group position. */ +#define ADC_CH_GAINFAC0_bm (1<<2) /* Gain Factor bit 0 mask. */ +#define ADC_CH_GAINFAC0_bp 2 /* Gain Factor bit 0 position. */ +#define ADC_CH_GAINFAC1_bm (1<<3) /* Gain Factor bit 1 mask. */ +#define ADC_CH_GAINFAC1_bp 3 /* Gain Factor bit 1 position. */ +#define ADC_CH_GAINFAC2_bm (1<<4) /* Gain Factor bit 2 mask. */ +#define ADC_CH_GAINFAC2_bp 4 /* Gain Factor bit 2 position. */ + +#define ADC_CH_INPUTMODE_gm 0x03 /* Input Mode Select group mask. */ +#define ADC_CH_INPUTMODE_gp 0 /* Input Mode Select group position. */ +#define ADC_CH_INPUTMODE0_bm (1<<0) /* Input Mode Select bit 0 mask. */ +#define ADC_CH_INPUTMODE0_bp 0 /* Input Mode Select bit 0 position. */ +#define ADC_CH_INPUTMODE1_bm (1<<1) /* Input Mode Select bit 1 mask. */ +#define ADC_CH_INPUTMODE1_bp 1 /* Input Mode Select bit 1 position. */ + + +/* ADC_CH.MUXCTRL bit masks and bit positions */ +#define ADC_CH_MUXPOS_gm 0x78 /* Positive Input Select group mask. */ +#define ADC_CH_MUXPOS_gp 3 /* Positive Input Select group position. */ +#define ADC_CH_MUXPOS0_bm (1<<3) /* Positive Input Select bit 0 mask. */ +#define ADC_CH_MUXPOS0_bp 3 /* Positive Input Select bit 0 position. */ +#define ADC_CH_MUXPOS1_bm (1<<4) /* Positive Input Select bit 1 mask. */ +#define ADC_CH_MUXPOS1_bp 4 /* Positive Input Select bit 1 position. */ +#define ADC_CH_MUXPOS2_bm (1<<5) /* Positive Input Select bit 2 mask. */ +#define ADC_CH_MUXPOS2_bp 5 /* Positive Input Select bit 2 position. */ +#define ADC_CH_MUXPOS3_bm (1<<6) /* Positive Input Select bit 3 mask. */ +#define ADC_CH_MUXPOS3_bp 6 /* Positive Input Select bit 3 position. */ + +#define ADC_CH_MUXINT_gm 0x78 /* Internal Input Select group mask. */ +#define ADC_CH_MUXINT_gp 3 /* Internal Input Select group position. */ +#define ADC_CH_MUXINT0_bm (1<<3) /* Internal Input Select bit 0 mask. */ +#define ADC_CH_MUXINT0_bp 3 /* Internal Input Select bit 0 position. */ +#define ADC_CH_MUXINT1_bm (1<<4) /* Internal Input Select bit 1 mask. */ +#define ADC_CH_MUXINT1_bp 4 /* Internal Input Select bit 1 position. */ +#define ADC_CH_MUXINT2_bm (1<<5) /* Internal Input Select bit 2 mask. */ +#define ADC_CH_MUXINT2_bp 5 /* Internal Input Select bit 2 position. */ +#define ADC_CH_MUXINT3_bm (1<<6) /* Internal Input Select bit 3 mask. */ +#define ADC_CH_MUXINT3_bp 6 /* Internal Input Select bit 3 position. */ + +#define ADC_CH_MUXNEG_gm 0x03 /* Negative Input Select group mask. */ +#define ADC_CH_MUXNEG_gp 0 /* Negative Input Select group position. */ +#define ADC_CH_MUXNEG0_bm (1<<0) /* Negative Input Select bit 0 mask. */ +#define ADC_CH_MUXNEG0_bp 0 /* Negative Input Select bit 0 position. */ +#define ADC_CH_MUXNEG1_bm (1<<1) /* Negative Input Select bit 1 mask. */ +#define ADC_CH_MUXNEG1_bp 1 /* Negative Input Select bit 1 position. */ + + +/* ADC_CH.INTCTRL bit masks and bit positions */ +#define ADC_CH_INTMODE_gm 0x0C /* Interrupt Mode group mask. */ +#define ADC_CH_INTMODE_gp 2 /* Interrupt Mode group position. */ +#define ADC_CH_INTMODE0_bm (1<<2) /* Interrupt Mode bit 0 mask. */ +#define ADC_CH_INTMODE0_bp 2 /* Interrupt Mode bit 0 position. */ +#define ADC_CH_INTMODE1_bm (1<<3) /* Interrupt Mode bit 1 mask. */ +#define ADC_CH_INTMODE1_bp 3 /* Interrupt Mode bit 1 position. */ + +#define ADC_CH_INTLVL_gm 0x03 /* Interrupt Level group mask. */ +#define ADC_CH_INTLVL_gp 0 /* Interrupt Level group position. */ +#define ADC_CH_INTLVL0_bm (1<<0) /* Interrupt Level bit 0 mask. */ +#define ADC_CH_INTLVL0_bp 0 /* Interrupt Level bit 0 position. */ +#define ADC_CH_INTLVL1_bm (1<<1) /* Interrupt Level bit 1 mask. */ +#define ADC_CH_INTLVL1_bp 1 /* Interrupt Level bit 1 position. */ + + +/* ADC_CH.INTFLAGS bit masks and bit positions */ +#define ADC_CH_CHIF_bm 0x01 /* Channel Interrupt Flag bit mask. */ +#define ADC_CH_CHIF_bp 0 /* Channel Interrupt Flag bit position. */ + + +/* ADC.CTRLA bit masks and bit positions */ +#define ADC_DMASEL_gm 0xE0 /* DMA Selection group mask. */ +#define ADC_DMASEL_gp 5 /* DMA Selection group position. */ +#define ADC_DMASEL0_bm (1<<5) /* DMA Selection bit 0 mask. */ +#define ADC_DMASEL0_bp 5 /* DMA Selection bit 0 position. */ +#define ADC_DMASEL1_bm (1<<6) /* DMA Selection bit 1 mask. */ +#define ADC_DMASEL1_bp 6 /* DMA Selection bit 1 position. */ +#define ADC_DMASEL2_bm (1<<7) /* DMA Selection bit 2 mask. */ +#define ADC_DMASEL2_bp 7 /* DMA Selection bit 2 position. */ + +#define ADC_CH3START_bm 0x20 /* Channel 3 Start Conversion bit mask. */ +#define ADC_CH3START_bp 5 /* Channel 3 Start Conversion bit position. */ + +#define ADC_CH2START_bm 0x10 /* Channel 2 Start Conversion bit mask. */ +#define ADC_CH2START_bp 4 /* Channel 2 Start Conversion bit position. */ + +#define ADC_CH1START_bm 0x08 /* Channel 1 Start Conversion bit mask. */ +#define ADC_CH1START_bp 3 /* Channel 1 Start Conversion bit position. */ + +#define ADC_CH0START_bm 0x04 /* Channel 0 Start Conversion bit mask. */ +#define ADC_CH0START_bp 2 /* Channel 0 Start Conversion bit position. */ + +#define ADC_FLUSH_bm 0x02 /* Flush Pipeline bit mask. */ +#define ADC_FLUSH_bp 1 /* Flush Pipeline bit position. */ + +#define ADC_ENABLE_bm 0x01 /* Enable ADC bit mask. */ +#define ADC_ENABLE_bp 0 /* Enable ADC bit position. */ + + +/* ADC.CTRLB bit masks and bit positions */ +#define ADC_CONMODE_bm 0x10 /* Conversion Mode bit mask. */ +#define ADC_CONMODE_bp 4 /* Conversion Mode bit position. */ + +#define ADC_FREERUN_bm 0x08 /* Free Running Mode Enable bit mask. */ +#define ADC_FREERUN_bp 3 /* Free Running Mode Enable bit position. */ + +#define ADC_RESOLUTION_gm 0x06 /* Result Resolution group mask. */ +#define ADC_RESOLUTION_gp 1 /* Result Resolution group position. */ +#define ADC_RESOLUTION0_bm (1<<1) /* Result Resolution bit 0 mask. */ +#define ADC_RESOLUTION0_bp 1 /* Result Resolution bit 0 position. */ +#define ADC_RESOLUTION1_bm (1<<2) /* Result Resolution bit 1 mask. */ +#define ADC_RESOLUTION1_bp 2 /* Result Resolution bit 1 position. */ + + +/* ADC.REFCTRL bit masks and bit positions */ +#define ADC_REFSEL_gm 0x30 /* Reference Selection group mask. */ +#define ADC_REFSEL_gp 4 /* Reference Selection group position. */ +#define ADC_REFSEL0_bm (1<<4) /* Reference Selection bit 0 mask. */ +#define ADC_REFSEL0_bp 4 /* Reference Selection bit 0 position. */ +#define ADC_REFSEL1_bm (1<<5) /* Reference Selection bit 1 mask. */ +#define ADC_REFSEL1_bp 5 /* Reference Selection bit 1 position. */ + +#define ADC_BANDGAP_bm 0x02 /* Bandgap enable bit mask. */ +#define ADC_BANDGAP_bp 1 /* Bandgap enable bit position. */ + +#define ADC_TEMPREF_bm 0x01 /* Temperature Reference Enable bit mask. */ +#define ADC_TEMPREF_bp 0 /* Temperature Reference Enable bit position. */ + + +/* ADC.EVCTRL bit masks and bit positions */ +#define ADC_SWEEP_gm 0xC0 /* Channel Sweep Selection group mask. */ +#define ADC_SWEEP_gp 6 /* Channel Sweep Selection group position. */ +#define ADC_SWEEP0_bm (1<<6) /* Channel Sweep Selection bit 0 mask. */ +#define ADC_SWEEP0_bp 6 /* Channel Sweep Selection bit 0 position. */ +#define ADC_SWEEP1_bm (1<<7) /* Channel Sweep Selection bit 1 mask. */ +#define ADC_SWEEP1_bp 7 /* Channel Sweep Selection bit 1 position. */ + +#define ADC_EVSEL_gm 0x38 /* Event Input Select group mask. */ +#define ADC_EVSEL_gp 3 /* Event Input Select group position. */ +#define ADC_EVSEL0_bm (1<<3) /* Event Input Select bit 0 mask. */ +#define ADC_EVSEL0_bp 3 /* Event Input Select bit 0 position. */ +#define ADC_EVSEL1_bm (1<<4) /* Event Input Select bit 1 mask. */ +#define ADC_EVSEL1_bp 4 /* Event Input Select bit 1 position. */ +#define ADC_EVSEL2_bm (1<<5) /* Event Input Select bit 2 mask. */ +#define ADC_EVSEL2_bp 5 /* Event Input Select bit 2 position. */ + +#define ADC_EVACT_gm 0x07 /* Event Action Select group mask. */ +#define ADC_EVACT_gp 0 /* Event Action Select group position. */ +#define ADC_EVACT0_bm (1<<0) /* Event Action Select bit 0 mask. */ +#define ADC_EVACT0_bp 0 /* Event Action Select bit 0 position. */ +#define ADC_EVACT1_bm (1<<1) /* Event Action Select bit 1 mask. */ +#define ADC_EVACT1_bp 1 /* Event Action Select bit 1 position. */ +#define ADC_EVACT2_bm (1<<2) /* Event Action Select bit 2 mask. */ +#define ADC_EVACT2_bp 2 /* Event Action Select bit 2 position. */ + + +/* ADC.PRESCALER bit masks and bit positions */ +#define ADC_PRESCALER_gm 0x07 /* Clock Prescaler Selection group mask. */ +#define ADC_PRESCALER_gp 0 /* Clock Prescaler Selection group position. */ +#define ADC_PRESCALER0_bm (1<<0) /* Clock Prescaler Selection bit 0 mask. */ +#define ADC_PRESCALER0_bp 0 /* Clock Prescaler Selection bit 0 position. */ +#define ADC_PRESCALER1_bm (1<<1) /* Clock Prescaler Selection bit 1 mask. */ +#define ADC_PRESCALER1_bp 1 /* Clock Prescaler Selection bit 1 position. */ +#define ADC_PRESCALER2_bm (1<<2) /* Clock Prescaler Selection bit 2 mask. */ +#define ADC_PRESCALER2_bp 2 /* Clock Prescaler Selection bit 2 position. */ + + +/* ADC.CALCTRL bit masks and bit positions */ +#define ADC_CAL_bm 0x01 /* ADC Calibration Start bit mask. */ +#define ADC_CAL_bp 0 /* ADC Calibration Start bit position. */ + + +/* ADC.INTFLAGS bit masks and bit positions */ +#define ADC_CH3IF_bm 0x08 /* Channel 3 Interrupt Flag bit mask. */ +#define ADC_CH3IF_bp 3 /* Channel 3 Interrupt Flag bit position. */ + +#define ADC_CH2IF_bm 0x04 /* Channel 2 Interrupt Flag bit mask. */ +#define ADC_CH2IF_bp 2 /* Channel 2 Interrupt Flag bit position. */ + +#define ADC_CH1IF_bm 0x02 /* Channel 1 Interrupt Flag bit mask. */ +#define ADC_CH1IF_bp 1 /* Channel 1 Interrupt Flag bit position. */ + +#define ADC_CH0IF_bm 0x01 /* Channel 0 Interrupt Flag bit mask. */ +#define ADC_CH0IF_bp 0 /* Channel 0 Interrupt Flag bit position. */ + + +/* DAC - Digital/Analog Converter */ +/* DAC.CTRLA bit masks and bit positions */ +#define DAC_IDOEN_bm 0x10 /* Internal Output Enable bit mask. */ +#define DAC_IDOEN_bp 4 /* Internal Output Enable bit position. */ + +#define DAC_CH1EN_bm 0x08 /* Channel 1 Output Enable bit mask. */ +#define DAC_CH1EN_bp 3 /* Channel 1 Output Enable bit position. */ + +#define DAC_CH0EN_bm 0x04 /* Channel 0 Output Enable bit mask. */ +#define DAC_CH0EN_bp 2 /* Channel 0 Output Enable bit position. */ + +#define DAC_LPMODE_bm 0x02 /* Low Power Mode bit mask. */ +#define DAC_LPMODE_bp 1 /* Low Power Mode bit position. */ + +#define DAC_ENABLE_bm 0x01 /* Enable bit mask. */ +#define DAC_ENABLE_bp 0 /* Enable bit position. */ + + +/* DAC.CTRLB bit masks and bit positions */ +#define DAC_CHSEL_gm 0x60 /* Channel Select group mask. */ +#define DAC_CHSEL_gp 5 /* Channel Select group position. */ +#define DAC_CHSEL0_bm (1<<5) /* Channel Select bit 0 mask. */ +#define DAC_CHSEL0_bp 5 /* Channel Select bit 0 position. */ +#define DAC_CHSEL1_bm (1<<6) /* Channel Select bit 1 mask. */ +#define DAC_CHSEL1_bp 6 /* Channel Select bit 1 position. */ + +#define DAC_CH1TRIG_bm 0x02 /* Channel 1 Event Trig Enable bit mask. */ +#define DAC_CH1TRIG_bp 1 /* Channel 1 Event Trig Enable bit position. */ + +#define DAC_CH0TRIG_bm 0x01 /* Channel 0 Event Trig Enable bit mask. */ +#define DAC_CH0TRIG_bp 0 /* Channel 0 Event Trig Enable bit position. */ + + +/* DAC.CTRLC bit masks and bit positions */ +#define DAC_REFSEL_gm 0x18 /* Reference Select group mask. */ +#define DAC_REFSEL_gp 3 /* Reference Select group position. */ +#define DAC_REFSEL0_bm (1<<3) /* Reference Select bit 0 mask. */ +#define DAC_REFSEL0_bp 3 /* Reference Select bit 0 position. */ +#define DAC_REFSEL1_bm (1<<4) /* Reference Select bit 1 mask. */ +#define DAC_REFSEL1_bp 4 /* Reference Select bit 1 position. */ + +#define DAC_LEFTADJ_bm 0x01 /* Left-adjust Result bit mask. */ +#define DAC_LEFTADJ_bp 0 /* Left-adjust Result bit position. */ + + +/* DAC.EVCTRL bit masks and bit positions */ +#define DAC_EVSEL_gm 0x07 /* Event Input Selection group mask. */ +#define DAC_EVSEL_gp 0 /* Event Input Selection group position. */ +#define DAC_EVSEL0_bm (1<<0) /* Event Input Selection bit 0 mask. */ +#define DAC_EVSEL0_bp 0 /* Event Input Selection bit 0 position. */ +#define DAC_EVSEL1_bm (1<<1) /* Event Input Selection bit 1 mask. */ +#define DAC_EVSEL1_bp 1 /* Event Input Selection bit 1 position. */ +#define DAC_EVSEL2_bm (1<<2) /* Event Input Selection bit 2 mask. */ +#define DAC_EVSEL2_bp 2 /* Event Input Selection bit 2 position. */ + + +/* DAC.TIMCTRL bit masks and bit positions */ +#define DAC_CONINTVAL_gm 0x70 /* Conversion Intercal group mask. */ +#define DAC_CONINTVAL_gp 4 /* Conversion Intercal group position. */ +#define DAC_CONINTVAL0_bm (1<<4) /* Conversion Intercal bit 0 mask. */ +#define DAC_CONINTVAL0_bp 4 /* Conversion Intercal bit 0 position. */ +#define DAC_CONINTVAL1_bm (1<<5) /* Conversion Intercal bit 1 mask. */ +#define DAC_CONINTVAL1_bp 5 /* Conversion Intercal bit 1 position. */ +#define DAC_CONINTVAL2_bm (1<<6) /* Conversion Intercal bit 2 mask. */ +#define DAC_CONINTVAL2_bp 6 /* Conversion Intercal bit 2 position. */ + +#define DAC_REFRESH_gm 0x0F /* Refresh Timing Control group mask. */ +#define DAC_REFRESH_gp 0 /* Refresh Timing Control group position. */ +#define DAC_REFRESH0_bm (1<<0) /* Refresh Timing Control bit 0 mask. */ +#define DAC_REFRESH0_bp 0 /* Refresh Timing Control bit 0 position. */ +#define DAC_REFRESH1_bm (1<<1) /* Refresh Timing Control bit 1 mask. */ +#define DAC_REFRESH1_bp 1 /* Refresh Timing Control bit 1 position. */ +#define DAC_REFRESH2_bm (1<<2) /* Refresh Timing Control bit 2 mask. */ +#define DAC_REFRESH2_bp 2 /* Refresh Timing Control bit 2 position. */ +#define DAC_REFRESH3_bm (1<<3) /* Refresh Timing Control bit 3 mask. */ +#define DAC_REFRESH3_bp 3 /* Refresh Timing Control bit 3 position. */ + + +/* DAC.STATUS bit masks and bit positions */ +#define DAC_CH1DRE_bm 0x02 /* Channel 1 Data Register Empty bit mask. */ +#define DAC_CH1DRE_bp 1 /* Channel 1 Data Register Empty bit position. */ + +#define DAC_CH0DRE_bm 0x01 /* Channel 0 Data Register Empty bit mask. */ +#define DAC_CH0DRE_bp 0 /* Channel 0 Data Register Empty bit position. */ + + +/* RTC - Real-Time Clounter */ +/* RTC.CTRL bit masks and bit positions */ +#define RTC_PRESCALER_gm 0x07 /* Prescaling Factor group mask. */ +#define RTC_PRESCALER_gp 0 /* Prescaling Factor group position. */ +#define RTC_PRESCALER0_bm (1<<0) /* Prescaling Factor bit 0 mask. */ +#define RTC_PRESCALER0_bp 0 /* Prescaling Factor bit 0 position. */ +#define RTC_PRESCALER1_bm (1<<1) /* Prescaling Factor bit 1 mask. */ +#define RTC_PRESCALER1_bp 1 /* Prescaling Factor bit 1 position. */ +#define RTC_PRESCALER2_bm (1<<2) /* Prescaling Factor bit 2 mask. */ +#define RTC_PRESCALER2_bp 2 /* Prescaling Factor bit 2 position. */ + + +/* RTC.STATUS bit masks and bit positions */ +#define RTC_SYNCBUSY_bm 0x01 /* Synchronization Busy Flag bit mask. */ +#define RTC_SYNCBUSY_bp 0 /* Synchronization Busy Flag bit position. */ + + +/* RTC.INTCTRL bit masks and bit positions */ +#define RTC_COMPINTLVL_gm 0x0C /* Compare Match Interrupt Level group mask. */ +#define RTC_COMPINTLVL_gp 2 /* Compare Match Interrupt Level group position. */ +#define RTC_COMPINTLVL0_bm (1<<2) /* Compare Match Interrupt Level bit 0 mask. */ +#define RTC_COMPINTLVL0_bp 2 /* Compare Match Interrupt Level bit 0 position. */ +#define RTC_COMPINTLVL1_bm (1<<3) /* Compare Match Interrupt Level bit 1 mask. */ +#define RTC_COMPINTLVL1_bp 3 /* Compare Match Interrupt Level bit 1 position. */ + +#define RTC_OVFINTLVL_gm 0x03 /* Overflow Interrupt Level group mask. */ +#define RTC_OVFINTLVL_gp 0 /* Overflow Interrupt Level group position. */ +#define RTC_OVFINTLVL0_bm (1<<0) /* Overflow Interrupt Level bit 0 mask. */ +#define RTC_OVFINTLVL0_bp 0 /* Overflow Interrupt Level bit 0 position. */ +#define RTC_OVFINTLVL1_bm (1<<1) /* Overflow Interrupt Level bit 1 mask. */ +#define RTC_OVFINTLVL1_bp 1 /* Overflow Interrupt Level bit 1 position. */ + + +/* RTC.INTFLAGS bit masks and bit positions */ +#define RTC_COMPIF_bm 0x02 /* Compare Match Interrupt Flag bit mask. */ +#define RTC_COMPIF_bp 1 /* Compare Match Interrupt Flag bit position. */ + +#define RTC_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define RTC_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* EBI - External Bus Interface */ +/* EBI_CS.CTRLA bit masks and bit positions */ +#define EBI_CS_ASPACE_gm 0x7C /* Address Space group mask. */ +#define EBI_CS_ASPACE_gp 2 /* Address Space group position. */ +#define EBI_CS_ASPACE0_bm (1<<2) /* Address Space bit 0 mask. */ +#define EBI_CS_ASPACE0_bp 2 /* Address Space bit 0 position. */ +#define EBI_CS_ASPACE1_bm (1<<3) /* Address Space bit 1 mask. */ +#define EBI_CS_ASPACE1_bp 3 /* Address Space bit 1 position. */ +#define EBI_CS_ASPACE2_bm (1<<4) /* Address Space bit 2 mask. */ +#define EBI_CS_ASPACE2_bp 4 /* Address Space bit 2 position. */ +#define EBI_CS_ASPACE3_bm (1<<5) /* Address Space bit 3 mask. */ +#define EBI_CS_ASPACE3_bp 5 /* Address Space bit 3 position. */ +#define EBI_CS_ASPACE4_bm (1<<6) /* Address Space bit 4 mask. */ +#define EBI_CS_ASPACE4_bp 6 /* Address Space bit 4 position. */ + +#define EBI_CS_MODE_gm 0x03 /* Memory Mode group mask. */ +#define EBI_CS_MODE_gp 0 /* Memory Mode group position. */ +#define EBI_CS_MODE0_bm (1<<0) /* Memory Mode bit 0 mask. */ +#define EBI_CS_MODE0_bp 0 /* Memory Mode bit 0 position. */ +#define EBI_CS_MODE1_bm (1<<1) /* Memory Mode bit 1 mask. */ +#define EBI_CS_MODE1_bp 1 /* Memory Mode bit 1 position. */ + + +/* EBI_CS.CTRLB bit masks and bit positions */ +#define EBI_CS_SRWS_gm 0x07 /* SRAM Wait State Cycles group mask. */ +#define EBI_CS_SRWS_gp 0 /* SRAM Wait State Cycles group position. */ +#define EBI_CS_SRWS0_bm (1<<0) /* SRAM Wait State Cycles bit 0 mask. */ +#define EBI_CS_SRWS0_bp 0 /* SRAM Wait State Cycles bit 0 position. */ +#define EBI_CS_SRWS1_bm (1<<1) /* SRAM Wait State Cycles bit 1 mask. */ +#define EBI_CS_SRWS1_bp 1 /* SRAM Wait State Cycles bit 1 position. */ +#define EBI_CS_SRWS2_bm (1<<2) /* SRAM Wait State Cycles bit 2 mask. */ +#define EBI_CS_SRWS2_bp 2 /* SRAM Wait State Cycles bit 2 position. */ + +#define EBI_CS_SDINITDONE_bm 0x80 /* SDRAM Initialization Done bit mask. */ +#define EBI_CS_SDINITDONE_bp 7 /* SDRAM Initialization Done bit position. */ + +#define EBI_CS_SDSREN_bm 0x04 /* SDRAM Self-refresh Enable bit mask. */ +#define EBI_CS_SDSREN_bp 2 /* SDRAM Self-refresh Enable bit position. */ + +#define EBI_CS_SDMODE_gm 0x03 /* SDRAM Mode group mask. */ +#define EBI_CS_SDMODE_gp 0 /* SDRAM Mode group position. */ +#define EBI_CS_SDMODE0_bm (1<<0) /* SDRAM Mode bit 0 mask. */ +#define EBI_CS_SDMODE0_bp 0 /* SDRAM Mode bit 0 position. */ +#define EBI_CS_SDMODE1_bm (1<<1) /* SDRAM Mode bit 1 mask. */ +#define EBI_CS_SDMODE1_bp 1 /* SDRAM Mode bit 1 position. */ + + +/* EBI.CTRL bit masks and bit positions */ +#define EBI_SDDATAW_gm 0xC0 /* SDRAM Data Width Setting group mask. */ +#define EBI_SDDATAW_gp 6 /* SDRAM Data Width Setting group position. */ +#define EBI_SDDATAW0_bm (1<<6) /* SDRAM Data Width Setting bit 0 mask. */ +#define EBI_SDDATAW0_bp 6 /* SDRAM Data Width Setting bit 0 position. */ +#define EBI_SDDATAW1_bm (1<<7) /* SDRAM Data Width Setting bit 1 mask. */ +#define EBI_SDDATAW1_bp 7 /* SDRAM Data Width Setting bit 1 position. */ + +#define EBI_LPCMODE_gm 0x30 /* SRAM LPC Mode group mask. */ +#define EBI_LPCMODE_gp 4 /* SRAM LPC Mode group position. */ +#define EBI_LPCMODE0_bm (1<<4) /* SRAM LPC Mode bit 0 mask. */ +#define EBI_LPCMODE0_bp 4 /* SRAM LPC Mode bit 0 position. */ +#define EBI_LPCMODE1_bm (1<<5) /* SRAM LPC Mode bit 1 mask. */ +#define EBI_LPCMODE1_bp 5 /* SRAM LPC Mode bit 1 position. */ + +#define EBI_SRMODE_gm 0x0C /* SRAM Mode group mask. */ +#define EBI_SRMODE_gp 2 /* SRAM Mode group position. */ +#define EBI_SRMODE0_bm (1<<2) /* SRAM Mode bit 0 mask. */ +#define EBI_SRMODE0_bp 2 /* SRAM Mode bit 0 position. */ +#define EBI_SRMODE1_bm (1<<3) /* SRAM Mode bit 1 mask. */ +#define EBI_SRMODE1_bp 3 /* SRAM Mode bit 1 position. */ + +#define EBI_IFMODE_gm 0x03 /* Interface Mode group mask. */ +#define EBI_IFMODE_gp 0 /* Interface Mode group position. */ +#define EBI_IFMODE0_bm (1<<0) /* Interface Mode bit 0 mask. */ +#define EBI_IFMODE0_bp 0 /* Interface Mode bit 0 position. */ +#define EBI_IFMODE1_bm (1<<1) /* Interface Mode bit 1 mask. */ +#define EBI_IFMODE1_bp 1 /* Interface Mode bit 1 position. */ + + +/* EBI.SDRAMCTRLA bit masks and bit positions */ +#define EBI_SDCAS_bm 0x08 /* SDRAM CAS Latency Setting bit mask. */ +#define EBI_SDCAS_bp 3 /* SDRAM CAS Latency Setting bit position. */ + +#define EBI_SDROW_bm 0x04 /* SDRAM ROW Bits Setting bit mask. */ +#define EBI_SDROW_bp 2 /* SDRAM ROW Bits Setting bit position. */ + +#define EBI_SDCOL_gm 0x03 /* SDRAM Column Bits Setting group mask. */ +#define EBI_SDCOL_gp 0 /* SDRAM Column Bits Setting group position. */ +#define EBI_SDCOL0_bm (1<<0) /* SDRAM Column Bits Setting bit 0 mask. */ +#define EBI_SDCOL0_bp 0 /* SDRAM Column Bits Setting bit 0 position. */ +#define EBI_SDCOL1_bm (1<<1) /* SDRAM Column Bits Setting bit 1 mask. */ +#define EBI_SDCOL1_bp 1 /* SDRAM Column Bits Setting bit 1 position. */ + + +/* EBI.SDRAMCTRLB bit masks and bit positions */ +#define EBI_MRDLY_gm 0xC0 /* SDRAM Mode Register Delay group mask. */ +#define EBI_MRDLY_gp 6 /* SDRAM Mode Register Delay group position. */ +#define EBI_MRDLY0_bm (1<<6) /* SDRAM Mode Register Delay bit 0 mask. */ +#define EBI_MRDLY0_bp 6 /* SDRAM Mode Register Delay bit 0 position. */ +#define EBI_MRDLY1_bm (1<<7) /* SDRAM Mode Register Delay bit 1 mask. */ +#define EBI_MRDLY1_bp 7 /* SDRAM Mode Register Delay bit 1 position. */ + +#define EBI_ROWCYCDLY_gm 0x38 /* SDRAM Row Cycle Delay group mask. */ +#define EBI_ROWCYCDLY_gp 3 /* SDRAM Row Cycle Delay group position. */ +#define EBI_ROWCYCDLY0_bm (1<<3) /* SDRAM Row Cycle Delay bit 0 mask. */ +#define EBI_ROWCYCDLY0_bp 3 /* SDRAM Row Cycle Delay bit 0 position. */ +#define EBI_ROWCYCDLY1_bm (1<<4) /* SDRAM Row Cycle Delay bit 1 mask. */ +#define EBI_ROWCYCDLY1_bp 4 /* SDRAM Row Cycle Delay bit 1 position. */ +#define EBI_ROWCYCDLY2_bm (1<<5) /* SDRAM Row Cycle Delay bit 2 mask. */ +#define EBI_ROWCYCDLY2_bp 5 /* SDRAM Row Cycle Delay bit 2 position. */ + +#define EBI_RPDLY_gm 0x07 /* SDRAM Row-to-Precharge Delay group mask. */ +#define EBI_RPDLY_gp 0 /* SDRAM Row-to-Precharge Delay group position. */ +#define EBI_RPDLY0_bm (1<<0) /* SDRAM Row-to-Precharge Delay bit 0 mask. */ +#define EBI_RPDLY0_bp 0 /* SDRAM Row-to-Precharge Delay bit 0 position. */ +#define EBI_RPDLY1_bm (1<<1) /* SDRAM Row-to-Precharge Delay bit 1 mask. */ +#define EBI_RPDLY1_bp 1 /* SDRAM Row-to-Precharge Delay bit 1 position. */ +#define EBI_RPDLY2_bm (1<<2) /* SDRAM Row-to-Precharge Delay bit 2 mask. */ +#define EBI_RPDLY2_bp 2 /* SDRAM Row-to-Precharge Delay bit 2 position. */ + + +/* EBI.SDRAMCTRLC bit masks and bit positions */ +#define EBI_WRDLY_gm 0xC0 /* SDRAM Write Recovery Delay group mask. */ +#define EBI_WRDLY_gp 6 /* SDRAM Write Recovery Delay group position. */ +#define EBI_WRDLY0_bm (1<<6) /* SDRAM Write Recovery Delay bit 0 mask. */ +#define EBI_WRDLY0_bp 6 /* SDRAM Write Recovery Delay bit 0 position. */ +#define EBI_WRDLY1_bm (1<<7) /* SDRAM Write Recovery Delay bit 1 mask. */ +#define EBI_WRDLY1_bp 7 /* SDRAM Write Recovery Delay bit 1 position. */ + +#define EBI_ESRDLY_gm 0x38 /* SDRAM Exit-Self-refresh-to-Active Delay group mask. */ +#define EBI_ESRDLY_gp 3 /* SDRAM Exit-Self-refresh-to-Active Delay group position. */ +#define EBI_ESRDLY0_bm (1<<3) /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 mask. */ +#define EBI_ESRDLY0_bp 3 /* SDRAM Exit-Self-refresh-to-Active Delay bit 0 position. */ +#define EBI_ESRDLY1_bm (1<<4) /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 mask. */ +#define EBI_ESRDLY1_bp 4 /* SDRAM Exit-Self-refresh-to-Active Delay bit 1 position. */ +#define EBI_ESRDLY2_bm (1<<5) /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 mask. */ +#define EBI_ESRDLY2_bp 5 /* SDRAM Exit-Self-refresh-to-Active Delay bit 2 position. */ + +#define EBI_ROWCOLDLY_gm 0x07 /* SDRAM Row-to-Column Delay group mask. */ +#define EBI_ROWCOLDLY_gp 0 /* SDRAM Row-to-Column Delay group position. */ +#define EBI_ROWCOLDLY0_bm (1<<0) /* SDRAM Row-to-Column Delay bit 0 mask. */ +#define EBI_ROWCOLDLY0_bp 0 /* SDRAM Row-to-Column Delay bit 0 position. */ +#define EBI_ROWCOLDLY1_bm (1<<1) /* SDRAM Row-to-Column Delay bit 1 mask. */ +#define EBI_ROWCOLDLY1_bp 1 /* SDRAM Row-to-Column Delay bit 1 position. */ +#define EBI_ROWCOLDLY2_bm (1<<2) /* SDRAM Row-to-Column Delay bit 2 mask. */ +#define EBI_ROWCOLDLY2_bp 2 /* SDRAM Row-to-Column Delay bit 2 position. */ + + +/* TWI - Two-Wire Interface */ +/* TWI_MASTER.CTRLA bit masks and bit positions */ +#define TWI_MASTER_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_MASTER_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_MASTER_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_MASTER_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_MASTER_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_MASTER_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_MASTER_RIEN_bm 0x20 /* Read Interrupt Enable bit mask. */ +#define TWI_MASTER_RIEN_bp 5 /* Read Interrupt Enable bit position. */ + +#define TWI_MASTER_WIEN_bm 0x10 /* Write Interrupt Enable bit mask. */ +#define TWI_MASTER_WIEN_bp 4 /* Write Interrupt Enable bit position. */ + +#define TWI_MASTER_ENABLE_bm 0x08 /* Enable TWI Master bit mask. */ +#define TWI_MASTER_ENABLE_bp 3 /* Enable TWI Master bit position. */ + + +/* TWI_MASTER.CTRLB bit masks and bit positions */ +#define TWI_MASTER_TIMEOUT_gm 0x0C /* Inactive Bus Timeout group mask. */ +#define TWI_MASTER_TIMEOUT_gp 2 /* Inactive Bus Timeout group position. */ +#define TWI_MASTER_TIMEOUT0_bm (1<<2) /* Inactive Bus Timeout bit 0 mask. */ +#define TWI_MASTER_TIMEOUT0_bp 2 /* Inactive Bus Timeout bit 0 position. */ +#define TWI_MASTER_TIMEOUT1_bm (1<<3) /* Inactive Bus Timeout bit 1 mask. */ +#define TWI_MASTER_TIMEOUT1_bp 3 /* Inactive Bus Timeout bit 1 position. */ + +#define TWI_MASTER_QCEN_bm 0x02 /* Quick Command Enable bit mask. */ +#define TWI_MASTER_QCEN_bp 1 /* Quick Command Enable bit position. */ + +#define TWI_MASTER_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_MASTER_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_MASTER.CTRLC bit masks and bit positions */ +#define TWI_MASTER_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_MASTER_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_MASTER_CMD_gm 0x03 /* Command group mask. */ +#define TWI_MASTER_CMD_gp 0 /* Command group position. */ +#define TWI_MASTER_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_MASTER_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_MASTER_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_MASTER_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_MASTER.STATUS bit masks and bit positions */ +#define TWI_MASTER_RIF_bm 0x80 /* Read Interrupt Flag bit mask. */ +#define TWI_MASTER_RIF_bp 7 /* Read Interrupt Flag bit position. */ + +#define TWI_MASTER_WIF_bm 0x40 /* Write Interrupt Flag bit mask. */ +#define TWI_MASTER_WIF_bp 6 /* Write Interrupt Flag bit position. */ + +#define TWI_MASTER_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_MASTER_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_MASTER_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_MASTER_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_MASTER_ARBLOST_bm 0x08 /* Arbitration Lost bit mask. */ +#define TWI_MASTER_ARBLOST_bp 3 /* Arbitration Lost bit position. */ + +#define TWI_MASTER_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_MASTER_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_MASTER_BUSSTATE_gm 0x03 /* Bus State group mask. */ +#define TWI_MASTER_BUSSTATE_gp 0 /* Bus State group position. */ +#define TWI_MASTER_BUSSTATE0_bm (1<<0) /* Bus State bit 0 mask. */ +#define TWI_MASTER_BUSSTATE0_bp 0 /* Bus State bit 0 position. */ +#define TWI_MASTER_BUSSTATE1_bm (1<<1) /* Bus State bit 1 mask. */ +#define TWI_MASTER_BUSSTATE1_bp 1 /* Bus State bit 1 position. */ + + +/* TWI_SLAVE.CTRLA bit masks and bit positions */ +#define TWI_SLAVE_INTLVL_gm 0xC0 /* Interrupt Level group mask. */ +#define TWI_SLAVE_INTLVL_gp 6 /* Interrupt Level group position. */ +#define TWI_SLAVE_INTLVL0_bm (1<<6) /* Interrupt Level bit 0 mask. */ +#define TWI_SLAVE_INTLVL0_bp 6 /* Interrupt Level bit 0 position. */ +#define TWI_SLAVE_INTLVL1_bm (1<<7) /* Interrupt Level bit 1 mask. */ +#define TWI_SLAVE_INTLVL1_bp 7 /* Interrupt Level bit 1 position. */ + +#define TWI_SLAVE_DIEN_bm 0x20 /* Data Interrupt Enable bit mask. */ +#define TWI_SLAVE_DIEN_bp 5 /* Data Interrupt Enable bit position. */ + +#define TWI_SLAVE_APIEN_bm 0x10 /* Address/Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_APIEN_bp 4 /* Address/Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_ENABLE_bm 0x08 /* Enable TWI Slave bit mask. */ +#define TWI_SLAVE_ENABLE_bp 3 /* Enable TWI Slave bit position. */ + +#define TWI_SLAVE_PIEN_bm 0x04 /* Stop Interrupt Enable bit mask. */ +#define TWI_SLAVE_PIEN_bp 2 /* Stop Interrupt Enable bit position. */ + +#define TWI_SLAVE_PMEN_bm 0x02 /* Promiscuous Mode Enable bit mask. */ +#define TWI_SLAVE_PMEN_bp 1 /* Promiscuous Mode Enable bit position. */ + +#define TWI_SLAVE_SMEN_bm 0x01 /* Smart Mode Enable bit mask. */ +#define TWI_SLAVE_SMEN_bp 0 /* Smart Mode Enable bit position. */ + + +/* TWI_SLAVE.CTRLB bit masks and bit positions */ +#define TWI_SLAVE_ACKACT_bm 0x04 /* Acknowledge Action bit mask. */ +#define TWI_SLAVE_ACKACT_bp 2 /* Acknowledge Action bit position. */ + +#define TWI_SLAVE_CMD_gm 0x03 /* Command group mask. */ +#define TWI_SLAVE_CMD_gp 0 /* Command group position. */ +#define TWI_SLAVE_CMD0_bm (1<<0) /* Command bit 0 mask. */ +#define TWI_SLAVE_CMD0_bp 0 /* Command bit 0 position. */ +#define TWI_SLAVE_CMD1_bm (1<<1) /* Command bit 1 mask. */ +#define TWI_SLAVE_CMD1_bp 1 /* Command bit 1 position. */ + + +/* TWI_SLAVE.STATUS bit masks and bit positions */ +#define TWI_SLAVE_DIF_bm 0x80 /* Data Interrupt Flag bit mask. */ +#define TWI_SLAVE_DIF_bp 7 /* Data Interrupt Flag bit position. */ + +#define TWI_SLAVE_APIF_bm 0x40 /* Address/Stop Interrupt Flag bit mask. */ +#define TWI_SLAVE_APIF_bp 6 /* Address/Stop Interrupt Flag bit position. */ + +#define TWI_SLAVE_CLKHOLD_bm 0x20 /* Clock Hold bit mask. */ +#define TWI_SLAVE_CLKHOLD_bp 5 /* Clock Hold bit position. */ + +#define TWI_SLAVE_RXACK_bm 0x10 /* Received Acknowledge bit mask. */ +#define TWI_SLAVE_RXACK_bp 4 /* Received Acknowledge bit position. */ + +#define TWI_SLAVE_COLL_bm 0x08 /* Collision bit mask. */ +#define TWI_SLAVE_COLL_bp 3 /* Collision bit position. */ + +#define TWI_SLAVE_BUSERR_bm 0x04 /* Bus Error bit mask. */ +#define TWI_SLAVE_BUSERR_bp 2 /* Bus Error bit position. */ + +#define TWI_SLAVE_DIR_bm 0x02 /* Read/Write Direction bit mask. */ +#define TWI_SLAVE_DIR_bp 1 /* Read/Write Direction bit position. */ + +#define TWI_SLAVE_AP_bm 0x01 /* Slave Address or Stop bit mask. */ +#define TWI_SLAVE_AP_bp 0 /* Slave Address or Stop bit position. */ + + +/* TWI.CTRL bit masks and bit positions */ +#define TWI_SDAHOLD_bm 0x02 /* SDA Hold Time Enable bit mask. */ +#define TWI_SDAHOLD_bp 1 /* SDA Hold Time Enable bit position. */ + +#define TWI_EDIEN_bm 0x01 /* External Driver Interface Enable bit mask. */ +#define TWI_EDIEN_bp 0 /* External Driver Interface Enable bit position. */ + + +/* PORT - Port Configuration */ +/* PORTCFG.VPCTRLA bit masks and bit positions */ +#define PORTCFG_VP1MAP_gm 0xF0 /* Virtual Port 1 Mapping group mask. */ +#define PORTCFG_VP1MAP_gp 4 /* Virtual Port 1 Mapping group position. */ +#define PORTCFG_VP1MAP0_bm (1<<4) /* Virtual Port 1 Mapping bit 0 mask. */ +#define PORTCFG_VP1MAP0_bp 4 /* Virtual Port 1 Mapping bit 0 position. */ +#define PORTCFG_VP1MAP1_bm (1<<5) /* Virtual Port 1 Mapping bit 1 mask. */ +#define PORTCFG_VP1MAP1_bp 5 /* Virtual Port 1 Mapping bit 1 position. */ +#define PORTCFG_VP1MAP2_bm (1<<6) /* Virtual Port 1 Mapping bit 2 mask. */ +#define PORTCFG_VP1MAP2_bp 6 /* Virtual Port 1 Mapping bit 2 position. */ +#define PORTCFG_VP1MAP3_bm (1<<7) /* Virtual Port 1 Mapping bit 3 mask. */ +#define PORTCFG_VP1MAP3_bp 7 /* Virtual Port 1 Mapping bit 3 position. */ + +#define PORTCFG_VP0MAP_gm 0x0F /* Virtual Port 0 Mapping group mask. */ +#define PORTCFG_VP0MAP_gp 0 /* Virtual Port 0 Mapping group position. */ +#define PORTCFG_VP0MAP0_bm (1<<0) /* Virtual Port 0 Mapping bit 0 mask. */ +#define PORTCFG_VP0MAP0_bp 0 /* Virtual Port 0 Mapping bit 0 position. */ +#define PORTCFG_VP0MAP1_bm (1<<1) /* Virtual Port 0 Mapping bit 1 mask. */ +#define PORTCFG_VP0MAP1_bp 1 /* Virtual Port 0 Mapping bit 1 position. */ +#define PORTCFG_VP0MAP2_bm (1<<2) /* Virtual Port 0 Mapping bit 2 mask. */ +#define PORTCFG_VP0MAP2_bp 2 /* Virtual Port 0 Mapping bit 2 position. */ +#define PORTCFG_VP0MAP3_bm (1<<3) /* Virtual Port 0 Mapping bit 3 mask. */ +#define PORTCFG_VP0MAP3_bp 3 /* Virtual Port 0 Mapping bit 3 position. */ + + +/* PORTCFG.VPCTRLB bit masks and bit positions */ +#define PORTCFG_VP3MAP_gm 0xF0 /* Virtual Port 3 Mapping group mask. */ +#define PORTCFG_VP3MAP_gp 4 /* Virtual Port 3 Mapping group position. */ +#define PORTCFG_VP3MAP0_bm (1<<4) /* Virtual Port 3 Mapping bit 0 mask. */ +#define PORTCFG_VP3MAP0_bp 4 /* Virtual Port 3 Mapping bit 0 position. */ +#define PORTCFG_VP3MAP1_bm (1<<5) /* Virtual Port 3 Mapping bit 1 mask. */ +#define PORTCFG_VP3MAP1_bp 5 /* Virtual Port 3 Mapping bit 1 position. */ +#define PORTCFG_VP3MAP2_bm (1<<6) /* Virtual Port 3 Mapping bit 2 mask. */ +#define PORTCFG_VP3MAP2_bp 6 /* Virtual Port 3 Mapping bit 2 position. */ +#define PORTCFG_VP3MAP3_bm (1<<7) /* Virtual Port 3 Mapping bit 3 mask. */ +#define PORTCFG_VP3MAP3_bp 7 /* Virtual Port 3 Mapping bit 3 position. */ + +#define PORTCFG_VP2MAP_gm 0x0F /* Virtual Port 2 Mapping group mask. */ +#define PORTCFG_VP2MAP_gp 0 /* Virtual Port 2 Mapping group position. */ +#define PORTCFG_VP2MAP0_bm (1<<0) /* Virtual Port 2 Mapping bit 0 mask. */ +#define PORTCFG_VP2MAP0_bp 0 /* Virtual Port 2 Mapping bit 0 position. */ +#define PORTCFG_VP2MAP1_bm (1<<1) /* Virtual Port 2 Mapping bit 1 mask. */ +#define PORTCFG_VP2MAP1_bp 1 /* Virtual Port 2 Mapping bit 1 position. */ +#define PORTCFG_VP2MAP2_bm (1<<2) /* Virtual Port 2 Mapping bit 2 mask. */ +#define PORTCFG_VP2MAP2_bp 2 /* Virtual Port 2 Mapping bit 2 position. */ +#define PORTCFG_VP2MAP3_bm (1<<3) /* Virtual Port 2 Mapping bit 3 mask. */ +#define PORTCFG_VP2MAP3_bp 3 /* Virtual Port 2 Mapping bit 3 position. */ + + +/* PORTCFG.CLKEVOUT bit masks and bit positions */ +#define PORTCFG_CLKOUT_gm 0x03 /* Clock Output Port group mask. */ +#define PORTCFG_CLKOUT_gp 0 /* Clock Output Port group position. */ +#define PORTCFG_CLKOUT0_bm (1<<0) /* Clock Output Port bit 0 mask. */ +#define PORTCFG_CLKOUT0_bp 0 /* Clock Output Port bit 0 position. */ +#define PORTCFG_CLKOUT1_bm (1<<1) /* Clock Output Port bit 1 mask. */ +#define PORTCFG_CLKOUT1_bp 1 /* Clock Output Port bit 1 position. */ + +#define PORTCFG_EVOUT_gm 0x30 /* Event Output Port group mask. */ +#define PORTCFG_EVOUT_gp 4 /* Event Output Port group position. */ +#define PORTCFG_EVOUT0_bm (1<<4) /* Event Output Port bit 0 mask. */ +#define PORTCFG_EVOUT0_bp 4 /* Event Output Port bit 0 position. */ +#define PORTCFG_EVOUT1_bm (1<<5) /* Event Output Port bit 1 mask. */ +#define PORTCFG_EVOUT1_bp 5 /* Event Output Port bit 1 position. */ + + +/* VPORT.INTFLAGS bit masks and bit positions */ +#define VPORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define VPORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define VPORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define VPORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.INTCTRL bit masks and bit positions */ +#define PORT_INT1LVL_gm 0x0C /* Port Interrupt 1 Level group mask. */ +#define PORT_INT1LVL_gp 2 /* Port Interrupt 1 Level group position. */ +#define PORT_INT1LVL0_bm (1<<2) /* Port Interrupt 1 Level bit 0 mask. */ +#define PORT_INT1LVL0_bp 2 /* Port Interrupt 1 Level bit 0 position. */ +#define PORT_INT1LVL1_bm (1<<3) /* Port Interrupt 1 Level bit 1 mask. */ +#define PORT_INT1LVL1_bp 3 /* Port Interrupt 1 Level bit 1 position. */ + +#define PORT_INT0LVL_gm 0x03 /* Port Interrupt 0 Level group mask. */ +#define PORT_INT0LVL_gp 0 /* Port Interrupt 0 Level group position. */ +#define PORT_INT0LVL0_bm (1<<0) /* Port Interrupt 0 Level bit 0 mask. */ +#define PORT_INT0LVL0_bp 0 /* Port Interrupt 0 Level bit 0 position. */ +#define PORT_INT0LVL1_bm (1<<1) /* Port Interrupt 0 Level bit 1 mask. */ +#define PORT_INT0LVL1_bp 1 /* Port Interrupt 0 Level bit 1 position. */ + + +/* PORT.INTFLAGS bit masks and bit positions */ +#define PORT_INT1IF_bm 0x02 /* Port Interrupt 1 Flag bit mask. */ +#define PORT_INT1IF_bp 1 /* Port Interrupt 1 Flag bit position. */ + +#define PORT_INT0IF_bm 0x01 /* Port Interrupt 0 Flag bit mask. */ +#define PORT_INT0IF_bp 0 /* Port Interrupt 0 Flag bit position. */ + + +/* PORT.PIN0CTRL bit masks and bit positions */ +#define PORT_SRLEN_bm 0x80 /* Slew Rate Enable bit mask. */ +#define PORT_SRLEN_bp 7 /* Slew Rate Enable bit position. */ + +#define PORT_INVEN_bm 0x40 /* Inverted I/O Enable bit mask. */ +#define PORT_INVEN_bp 6 /* Inverted I/O Enable bit position. */ + +#define PORT_OPC_gm 0x38 /* Output/Pull Configuration group mask. */ +#define PORT_OPC_gp 3 /* Output/Pull Configuration group position. */ +#define PORT_OPC0_bm (1<<3) /* Output/Pull Configuration bit 0 mask. */ +#define PORT_OPC0_bp 3 /* Output/Pull Configuration bit 0 position. */ +#define PORT_OPC1_bm (1<<4) /* Output/Pull Configuration bit 1 mask. */ +#define PORT_OPC1_bp 4 /* Output/Pull Configuration bit 1 position. */ +#define PORT_OPC2_bm (1<<5) /* Output/Pull Configuration bit 2 mask. */ +#define PORT_OPC2_bp 5 /* Output/Pull Configuration bit 2 position. */ + +#define PORT_ISC_gm 0x07 /* Input/Sense Configuration group mask. */ +#define PORT_ISC_gp 0 /* Input/Sense Configuration group position. */ +#define PORT_ISC0_bm (1<<0) /* Input/Sense Configuration bit 0 mask. */ +#define PORT_ISC0_bp 0 /* Input/Sense Configuration bit 0 position. */ +#define PORT_ISC1_bm (1<<1) /* Input/Sense Configuration bit 1 mask. */ +#define PORT_ISC1_bp 1 /* Input/Sense Configuration bit 1 position. */ +#define PORT_ISC2_bm (1<<2) /* Input/Sense Configuration bit 2 mask. */ +#define PORT_ISC2_bp 2 /* Input/Sense Configuration bit 2 position. */ + + +/* PORT.PIN1CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN2CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN3CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN4CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN5CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN6CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* PORT.PIN7CTRL bit masks and bit positions */ +/* PORT_SRLEN_bm Predefined. */ +/* PORT_SRLEN_bp Predefined. */ + +/* PORT_INVEN_bm Predefined. */ +/* PORT_INVEN_bp Predefined. */ + +/* PORT_OPC_gm Predefined. */ +/* PORT_OPC_gp Predefined. */ +/* PORT_OPC0_bm Predefined. */ +/* PORT_OPC0_bp Predefined. */ +/* PORT_OPC1_bm Predefined. */ +/* PORT_OPC1_bp Predefined. */ +/* PORT_OPC2_bm Predefined. */ +/* PORT_OPC2_bp Predefined. */ + +/* PORT_ISC_gm Predefined. */ +/* PORT_ISC_gp Predefined. */ +/* PORT_ISC0_bm Predefined. */ +/* PORT_ISC0_bp Predefined. */ +/* PORT_ISC1_bm Predefined. */ +/* PORT_ISC1_bp Predefined. */ +/* PORT_ISC2_bm Predefined. */ +/* PORT_ISC2_bp Predefined. */ + + +/* TC - 16-bit Timer/Counter With PWM */ +/* TC0.CTRLA bit masks and bit positions */ +#define TC0_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC0_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC0_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC0_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC0_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC0_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC0_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC0_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC0_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC0_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC0.CTRLB bit masks and bit positions */ +#define TC0_CCDEN_bm 0x80 /* Compare or Capture D Enable bit mask. */ +#define TC0_CCDEN_bp 7 /* Compare or Capture D Enable bit position. */ + +#define TC0_CCCEN_bm 0x40 /* Compare or Capture C Enable bit mask. */ +#define TC0_CCCEN_bp 6 /* Compare or Capture C Enable bit position. */ + +#define TC0_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC0_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC0_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC0_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC0_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC0_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC0_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC0_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC0_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC0_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC0_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC0_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC0.CTRLC bit masks and bit positions */ +#define TC0_CMPD_bm 0x08 /* Compare D Output Value bit mask. */ +#define TC0_CMPD_bp 3 /* Compare D Output Value bit position. */ + +#define TC0_CMPC_bm 0x04 /* Compare C Output Value bit mask. */ +#define TC0_CMPC_bp 2 /* Compare C Output Value bit position. */ + +#define TC0_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC0_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC0_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC0_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC0.CTRLD bit masks and bit positions */ +#define TC0_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC0_EVACT_gp 5 /* Event Action group position. */ +#define TC0_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC0_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC0_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC0_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC0_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC0_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC0_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC0_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC0_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC0_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC0_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC0_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC0_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC0_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC0_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC0_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC0_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC0_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC0.CTRLE bit masks and bit positions */ +#define TC0_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC0_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC0_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC0_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC0.INTCTRLA bit masks and bit positions */ +#define TC0_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC0_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC0_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC0_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC0_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC0_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC0_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC0_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC0_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC0_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC0_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC0_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC0.INTCTRLB bit masks and bit positions */ +#define TC0_CCDINTLVL_gm 0xC0 /* Compare or Capture D Interrupt Level group mask. */ +#define TC0_CCDINTLVL_gp 6 /* Compare or Capture D Interrupt Level group position. */ +#define TC0_CCDINTLVL0_bm (1<<6) /* Compare or Capture D Interrupt Level bit 0 mask. */ +#define TC0_CCDINTLVL0_bp 6 /* Compare or Capture D Interrupt Level bit 0 position. */ +#define TC0_CCDINTLVL1_bm (1<<7) /* Compare or Capture D Interrupt Level bit 1 mask. */ +#define TC0_CCDINTLVL1_bp 7 /* Compare or Capture D Interrupt Level bit 1 position. */ + +#define TC0_CCCINTLVL_gm 0x30 /* Compare or Capture C Interrupt Level group mask. */ +#define TC0_CCCINTLVL_gp 4 /* Compare or Capture C Interrupt Level group position. */ +#define TC0_CCCINTLVL0_bm (1<<4) /* Compare or Capture C Interrupt Level bit 0 mask. */ +#define TC0_CCCINTLVL0_bp 4 /* Compare or Capture C Interrupt Level bit 0 position. */ +#define TC0_CCCINTLVL1_bm (1<<5) /* Compare or Capture C Interrupt Level bit 1 mask. */ +#define TC0_CCCINTLVL1_bp 5 /* Compare or Capture C Interrupt Level bit 1 position. */ + +#define TC0_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC0_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC0_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC0_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC0_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC0_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC0_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC0_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC0_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC0_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC0_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC0_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC0.CTRLFCLR bit masks and bit positions */ +#define TC0_CMD_gm 0x0C /* Command group mask. */ +#define TC0_CMD_gp 2 /* Command group position. */ +#define TC0_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC0_CMD0_bp 2 /* Command bit 0 position. */ +#define TC0_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC0_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC0_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC0_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC0_DIR_bm 0x01 /* Direction bit mask. */ +#define TC0_DIR_bp 0 /* Direction bit position. */ + + +/* TC0.CTRLFSET bit masks and bit positions */ +/* TC0_CMD_gm Predefined. */ +/* TC0_CMD_gp Predefined. */ +/* TC0_CMD0_bm Predefined. */ +/* TC0_CMD0_bp Predefined. */ +/* TC0_CMD1_bm Predefined. */ +/* TC0_CMD1_bp Predefined. */ + +/* TC0_LUPD_bm Predefined. */ +/* TC0_LUPD_bp Predefined. */ + +/* TC0_DIR_bm Predefined. */ +/* TC0_DIR_bp Predefined. */ + + +/* TC0.CTRLGCLR bit masks and bit positions */ +#define TC0_CCDBV_bm 0x10 /* Compare or Capture D Buffer Valid bit mask. */ +#define TC0_CCDBV_bp 4 /* Compare or Capture D Buffer Valid bit position. */ + +#define TC0_CCCBV_bm 0x08 /* Compare or Capture C Buffer Valid bit mask. */ +#define TC0_CCCBV_bp 3 /* Compare or Capture C Buffer Valid bit position. */ + +#define TC0_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC0_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC0_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC0_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC0_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC0_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC0.CTRLGSET bit masks and bit positions */ +/* TC0_CCDBV_bm Predefined. */ +/* TC0_CCDBV_bp Predefined. */ + +/* TC0_CCCBV_bm Predefined. */ +/* TC0_CCCBV_bp Predefined. */ + +/* TC0_CCBBV_bm Predefined. */ +/* TC0_CCBBV_bp Predefined. */ + +/* TC0_CCABV_bm Predefined. */ +/* TC0_CCABV_bp Predefined. */ + +/* TC0_PERBV_bm Predefined. */ +/* TC0_PERBV_bp Predefined. */ + + +/* TC0.INTFLAGS bit masks and bit positions */ +#define TC0_CCDIF_bm 0x80 /* Compare or Capture D Interrupt Flag bit mask. */ +#define TC0_CCDIF_bp 7 /* Compare or Capture D Interrupt Flag bit position. */ + +#define TC0_CCCIF_bm 0x40 /* Compare or Capture C Interrupt Flag bit mask. */ +#define TC0_CCCIF_bp 6 /* Compare or Capture C Interrupt Flag bit position. */ + +#define TC0_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC0_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC0_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC0_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC0_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC0_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC0_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC0_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* TC1.CTRLA bit masks and bit positions */ +#define TC1_CLKSEL_gm 0x0F /* Clock Selection group mask. */ +#define TC1_CLKSEL_gp 0 /* Clock Selection group position. */ +#define TC1_CLKSEL0_bm (1<<0) /* Clock Selection bit 0 mask. */ +#define TC1_CLKSEL0_bp 0 /* Clock Selection bit 0 position. */ +#define TC1_CLKSEL1_bm (1<<1) /* Clock Selection bit 1 mask. */ +#define TC1_CLKSEL1_bp 1 /* Clock Selection bit 1 position. */ +#define TC1_CLKSEL2_bm (1<<2) /* Clock Selection bit 2 mask. */ +#define TC1_CLKSEL2_bp 2 /* Clock Selection bit 2 position. */ +#define TC1_CLKSEL3_bm (1<<3) /* Clock Selection bit 3 mask. */ +#define TC1_CLKSEL3_bp 3 /* Clock Selection bit 3 position. */ + + +/* TC1.CTRLB bit masks and bit positions */ +#define TC1_CCBEN_bm 0x20 /* Compare or Capture B Enable bit mask. */ +#define TC1_CCBEN_bp 5 /* Compare or Capture B Enable bit position. */ + +#define TC1_CCAEN_bm 0x10 /* Compare or Capture A Enable bit mask. */ +#define TC1_CCAEN_bp 4 /* Compare or Capture A Enable bit position. */ + +#define TC1_WGMODE_gm 0x07 /* Waveform generation mode group mask. */ +#define TC1_WGMODE_gp 0 /* Waveform generation mode group position. */ +#define TC1_WGMODE0_bm (1<<0) /* Waveform generation mode bit 0 mask. */ +#define TC1_WGMODE0_bp 0 /* Waveform generation mode bit 0 position. */ +#define TC1_WGMODE1_bm (1<<1) /* Waveform generation mode bit 1 mask. */ +#define TC1_WGMODE1_bp 1 /* Waveform generation mode bit 1 position. */ +#define TC1_WGMODE2_bm (1<<2) /* Waveform generation mode bit 2 mask. */ +#define TC1_WGMODE2_bp 2 /* Waveform generation mode bit 2 position. */ + + +/* TC1.CTRLC bit masks and bit positions */ +#define TC1_CMPB_bm 0x02 /* Compare B Output Value bit mask. */ +#define TC1_CMPB_bp 1 /* Compare B Output Value bit position. */ + +#define TC1_CMPA_bm 0x01 /* Compare A Output Value bit mask. */ +#define TC1_CMPA_bp 0 /* Compare A Output Value bit position. */ + + +/* TC1.CTRLD bit masks and bit positions */ +#define TC1_EVACT_gm 0xE0 /* Event Action group mask. */ +#define TC1_EVACT_gp 5 /* Event Action group position. */ +#define TC1_EVACT0_bm (1<<5) /* Event Action bit 0 mask. */ +#define TC1_EVACT0_bp 5 /* Event Action bit 0 position. */ +#define TC1_EVACT1_bm (1<<6) /* Event Action bit 1 mask. */ +#define TC1_EVACT1_bp 6 /* Event Action bit 1 position. */ +#define TC1_EVACT2_bm (1<<7) /* Event Action bit 2 mask. */ +#define TC1_EVACT2_bp 7 /* Event Action bit 2 position. */ + +#define TC1_EVDLY_bm 0x10 /* Event Delay bit mask. */ +#define TC1_EVDLY_bp 4 /* Event Delay bit position. */ + +#define TC1_EVSEL_gm 0x0F /* Event Source Select group mask. */ +#define TC1_EVSEL_gp 0 /* Event Source Select group position. */ +#define TC1_EVSEL0_bm (1<<0) /* Event Source Select bit 0 mask. */ +#define TC1_EVSEL0_bp 0 /* Event Source Select bit 0 position. */ +#define TC1_EVSEL1_bm (1<<1) /* Event Source Select bit 1 mask. */ +#define TC1_EVSEL1_bp 1 /* Event Source Select bit 1 position. */ +#define TC1_EVSEL2_bm (1<<2) /* Event Source Select bit 2 mask. */ +#define TC1_EVSEL2_bp 2 /* Event Source Select bit 2 position. */ +#define TC1_EVSEL3_bm (1<<3) /* Event Source Select bit 3 mask. */ +#define TC1_EVSEL3_bp 3 /* Event Source Select bit 3 position. */ + + +/* TC1.CTRLE bit masks and bit positions */ +#define TC1_DTHM_bm 0x02 /* Dead Time Hold Mode bit mask. */ +#define TC1_DTHM_bp 1 /* Dead Time Hold Mode bit position. */ + +#define TC1_BYTEM_bm 0x01 /* Byte Mode bit mask. */ +#define TC1_BYTEM_bp 0 /* Byte Mode bit position. */ + + +/* TC1.INTCTRLA bit masks and bit positions */ +#define TC1_ERRINTLVL_gm 0x0C /* Error Interrupt Level group mask. */ +#define TC1_ERRINTLVL_gp 2 /* Error Interrupt Level group position. */ +#define TC1_ERRINTLVL0_bm (1<<2) /* Error Interrupt Level bit 0 mask. */ +#define TC1_ERRINTLVL0_bp 2 /* Error Interrupt Level bit 0 position. */ +#define TC1_ERRINTLVL1_bm (1<<3) /* Error Interrupt Level bit 1 mask. */ +#define TC1_ERRINTLVL1_bp 3 /* Error Interrupt Level bit 1 position. */ + +#define TC1_OVFINTLVL_gm 0x03 /* Overflow interrupt level group mask. */ +#define TC1_OVFINTLVL_gp 0 /* Overflow interrupt level group position. */ +#define TC1_OVFINTLVL0_bm (1<<0) /* Overflow interrupt level bit 0 mask. */ +#define TC1_OVFINTLVL0_bp 0 /* Overflow interrupt level bit 0 position. */ +#define TC1_OVFINTLVL1_bm (1<<1) /* Overflow interrupt level bit 1 mask. */ +#define TC1_OVFINTLVL1_bp 1 /* Overflow interrupt level bit 1 position. */ + + +/* TC1.INTCTRLB bit masks and bit positions */ +#define TC1_CCBINTLVL_gm 0x0C /* Compare or Capture B Interrupt Level group mask. */ +#define TC1_CCBINTLVL_gp 2 /* Compare or Capture B Interrupt Level group position. */ +#define TC1_CCBINTLVL0_bm (1<<2) /* Compare or Capture B Interrupt Level bit 0 mask. */ +#define TC1_CCBINTLVL0_bp 2 /* Compare or Capture B Interrupt Level bit 0 position. */ +#define TC1_CCBINTLVL1_bm (1<<3) /* Compare or Capture B Interrupt Level bit 1 mask. */ +#define TC1_CCBINTLVL1_bp 3 /* Compare or Capture B Interrupt Level bit 1 position. */ + +#define TC1_CCAINTLVL_gm 0x03 /* Compare or Capture A Interrupt Level group mask. */ +#define TC1_CCAINTLVL_gp 0 /* Compare or Capture A Interrupt Level group position. */ +#define TC1_CCAINTLVL0_bm (1<<0) /* Compare or Capture A Interrupt Level bit 0 mask. */ +#define TC1_CCAINTLVL0_bp 0 /* Compare or Capture A Interrupt Level bit 0 position. */ +#define TC1_CCAINTLVL1_bm (1<<1) /* Compare or Capture A Interrupt Level bit 1 mask. */ +#define TC1_CCAINTLVL1_bp 1 /* Compare or Capture A Interrupt Level bit 1 position. */ + + +/* TC1.CTRLFCLR bit masks and bit positions */ +#define TC1_CMD_gm 0x0C /* Command group mask. */ +#define TC1_CMD_gp 2 /* Command group position. */ +#define TC1_CMD0_bm (1<<2) /* Command bit 0 mask. */ +#define TC1_CMD0_bp 2 /* Command bit 0 position. */ +#define TC1_CMD1_bm (1<<3) /* Command bit 1 mask. */ +#define TC1_CMD1_bp 3 /* Command bit 1 position. */ + +#define TC1_LUPD_bm 0x02 /* Lock Update bit mask. */ +#define TC1_LUPD_bp 1 /* Lock Update bit position. */ + +#define TC1_DIR_bm 0x01 /* Direction bit mask. */ +#define TC1_DIR_bp 0 /* Direction bit position. */ + + +/* TC1.CTRLFSET bit masks and bit positions */ +/* TC1_CMD_gm Predefined. */ +/* TC1_CMD_gp Predefined. */ +/* TC1_CMD0_bm Predefined. */ +/* TC1_CMD0_bp Predefined. */ +/* TC1_CMD1_bm Predefined. */ +/* TC1_CMD1_bp Predefined. */ + +/* TC1_LUPD_bm Predefined. */ +/* TC1_LUPD_bp Predefined. */ + +/* TC1_DIR_bm Predefined. */ +/* TC1_DIR_bp Predefined. */ + + +/* TC1.CTRLGCLR bit masks and bit positions */ +#define TC1_CCBBV_bm 0x04 /* Compare or Capture B Buffer Valid bit mask. */ +#define TC1_CCBBV_bp 2 /* Compare or Capture B Buffer Valid bit position. */ + +#define TC1_CCABV_bm 0x02 /* Compare or Capture A Buffer Valid bit mask. */ +#define TC1_CCABV_bp 1 /* Compare or Capture A Buffer Valid bit position. */ + +#define TC1_PERBV_bm 0x01 /* Period Buffer Valid bit mask. */ +#define TC1_PERBV_bp 0 /* Period Buffer Valid bit position. */ + + +/* TC1.CTRLGSET bit masks and bit positions */ +/* TC1_CCBBV_bm Predefined. */ +/* TC1_CCBBV_bp Predefined. */ + +/* TC1_CCABV_bm Predefined. */ +/* TC1_CCABV_bp Predefined. */ + +/* TC1_PERBV_bm Predefined. */ +/* TC1_PERBV_bp Predefined. */ + + +/* TC1.INTFLAGS bit masks and bit positions */ +#define TC1_CCBIF_bm 0x20 /* Compare or Capture B Interrupt Flag bit mask. */ +#define TC1_CCBIF_bp 5 /* Compare or Capture B Interrupt Flag bit position. */ + +#define TC1_CCAIF_bm 0x10 /* Compare or Capture A Interrupt Flag bit mask. */ +#define TC1_CCAIF_bp 4 /* Compare or Capture A Interrupt Flag bit position. */ + +#define TC1_ERRIF_bm 0x02 /* Error Interrupt Flag bit mask. */ +#define TC1_ERRIF_bp 1 /* Error Interrupt Flag bit position. */ + +#define TC1_OVFIF_bm 0x01 /* Overflow Interrupt Flag bit mask. */ +#define TC1_OVFIF_bp 0 /* Overflow Interrupt Flag bit position. */ + + +/* AWEX.CTRL bit masks and bit positions */ +#define AWEX_PGM_bm 0x20 /* Pattern Generation Mode bit mask. */ +#define AWEX_PGM_bp 5 /* Pattern Generation Mode bit position. */ + +#define AWEX_CWCM_bm 0x10 /* Common Waveform Channel Mode bit mask. */ +#define AWEX_CWCM_bp 4 /* Common Waveform Channel Mode bit position. */ + +#define AWEX_DTICCDEN_bm 0x08 /* Dead Time Insertion Compare Channel D Enable bit mask. */ +#define AWEX_DTICCDEN_bp 3 /* Dead Time Insertion Compare Channel D Enable bit position. */ + +#define AWEX_DTICCCEN_bm 0x04 /* Dead Time Insertion Compare Channel C Enable bit mask. */ +#define AWEX_DTICCCEN_bp 2 /* Dead Time Insertion Compare Channel C Enable bit position. */ + +#define AWEX_DTICCBEN_bm 0x02 /* Dead Time Insertion Compare Channel B Enable bit mask. */ +#define AWEX_DTICCBEN_bp 1 /* Dead Time Insertion Compare Channel B Enable bit position. */ + +#define AWEX_DTICCAEN_bm 0x01 /* Dead Time Insertion Compare Channel A Enable bit mask. */ +#define AWEX_DTICCAEN_bp 0 /* Dead Time Insertion Compare Channel A Enable bit position. */ + + +/* AWEX.FDCTRL bit masks and bit positions */ +#define AWEX_FDDBD_bm 0x10 /* Fault Detect on Disable Break Disable bit mask. */ +#define AWEX_FDDBD_bp 4 /* Fault Detect on Disable Break Disable bit position. */ + +#define AWEX_FDMODE_bm 0x04 /* Fault Detect Mode bit mask. */ +#define AWEX_FDMODE_bp 2 /* Fault Detect Mode bit position. */ + +#define AWEX_FDACT_gm 0x03 /* Fault Detect Action group mask. */ +#define AWEX_FDACT_gp 0 /* Fault Detect Action group position. */ +#define AWEX_FDACT0_bm (1<<0) /* Fault Detect Action bit 0 mask. */ +#define AWEX_FDACT0_bp 0 /* Fault Detect Action bit 0 position. */ +#define AWEX_FDACT1_bm (1<<1) /* Fault Detect Action bit 1 mask. */ +#define AWEX_FDACT1_bp 1 /* Fault Detect Action bit 1 position. */ + + +/* AWEX.STATUS bit masks and bit positions */ +#define AWEX_FDF_bm 0x04 /* Fault Detect Flag bit mask. */ +#define AWEX_FDF_bp 2 /* Fault Detect Flag bit position. */ + +#define AWEX_DTHSBUFV_bm 0x02 /* Dead Time High Side Buffer Valid bit mask. */ +#define AWEX_DTHSBUFV_bp 1 /* Dead Time High Side Buffer Valid bit position. */ + +#define AWEX_DTLSBUFV_bm 0x01 /* Dead Time Low Side Buffer Valid bit mask. */ +#define AWEX_DTLSBUFV_bp 0 /* Dead Time Low Side Buffer Valid bit position. */ + + +/* HIRES.CTRL bit masks and bit positions */ +#define HIRES_HREN_gm 0x03 /* High Resolution Enable group mask. */ +#define HIRES_HREN_gp 0 /* High Resolution Enable group position. */ +#define HIRES_HREN0_bm (1<<0) /* High Resolution Enable bit 0 mask. */ +#define HIRES_HREN0_bp 0 /* High Resolution Enable bit 0 position. */ +#define HIRES_HREN1_bm (1<<1) /* High Resolution Enable bit 1 mask. */ +#define HIRES_HREN1_bp 1 /* High Resolution Enable bit 1 position. */ + + +/* USART - Universal Asynchronous Receiver-Transmitter */ +/* USART.STATUS bit masks and bit positions */ +#define USART_RXCIF_bm 0x80 /* Receive Interrupt Flag bit mask. */ +#define USART_RXCIF_bp 7 /* Receive Interrupt Flag bit position. */ + +#define USART_TXCIF_bm 0x40 /* Transmit Interrupt Flag bit mask. */ +#define USART_TXCIF_bp 6 /* Transmit Interrupt Flag bit position. */ + +#define USART_DREIF_bm 0x20 /* Data Register Empty Flag bit mask. */ +#define USART_DREIF_bp 5 /* Data Register Empty Flag bit position. */ + +#define USART_FERR_bm 0x10 /* Frame Error bit mask. */ +#define USART_FERR_bp 4 /* Frame Error bit position. */ + +#define USART_BUFOVF_bm 0x08 /* Buffer Overflow bit mask. */ +#define USART_BUFOVF_bp 3 /* Buffer Overflow bit position. */ + +#define USART_PERR_bm 0x04 /* Parity Error bit mask. */ +#define USART_PERR_bp 2 /* Parity Error bit position. */ + +#define USART_RXB8_bm 0x01 /* Receive Bit 8 bit mask. */ +#define USART_RXB8_bp 0 /* Receive Bit 8 bit position. */ + + +/* USART.CTRLA bit masks and bit positions */ +#define USART_RXCINTLVL_gm 0x30 /* Receive Interrupt Level group mask. */ +#define USART_RXCINTLVL_gp 4 /* Receive Interrupt Level group position. */ +#define USART_RXCINTLVL0_bm (1<<4) /* Receive Interrupt Level bit 0 mask. */ +#define USART_RXCINTLVL0_bp 4 /* Receive Interrupt Level bit 0 position. */ +#define USART_RXCINTLVL1_bm (1<<5) /* Receive Interrupt Level bit 1 mask. */ +#define USART_RXCINTLVL1_bp 5 /* Receive Interrupt Level bit 1 position. */ + +#define USART_TXCINTLVL_gm 0x0C /* Transmit Interrupt Level group mask. */ +#define USART_TXCINTLVL_gp 2 /* Transmit Interrupt Level group position. */ +#define USART_TXCINTLVL0_bm (1<<2) /* Transmit Interrupt Level bit 0 mask. */ +#define USART_TXCINTLVL0_bp 2 /* Transmit Interrupt Level bit 0 position. */ +#define USART_TXCINTLVL1_bm (1<<3) /* Transmit Interrupt Level bit 1 mask. */ +#define USART_TXCINTLVL1_bp 3 /* Transmit Interrupt Level bit 1 position. */ + +#define USART_DREINTLVL_gm 0x03 /* Data Register Empty Interrupt Level group mask. */ +#define USART_DREINTLVL_gp 0 /* Data Register Empty Interrupt Level group position. */ +#define USART_DREINTLVL0_bm (1<<0) /* Data Register Empty Interrupt Level bit 0 mask. */ +#define USART_DREINTLVL0_bp 0 /* Data Register Empty Interrupt Level bit 0 position. */ +#define USART_DREINTLVL1_bm (1<<1) /* Data Register Empty Interrupt Level bit 1 mask. */ +#define USART_DREINTLVL1_bp 1 /* Data Register Empty Interrupt Level bit 1 position. */ + + +/* USART.CTRLB bit masks and bit positions */ +#define USART_RXEN_bm 0x10 /* Receiver Enable bit mask. */ +#define USART_RXEN_bp 4 /* Receiver Enable bit position. */ + +#define USART_TXEN_bm 0x08 /* Transmitter Enable bit mask. */ +#define USART_TXEN_bp 3 /* Transmitter Enable bit position. */ + +#define USART_CLK2X_bm 0x04 /* Double transmission speed bit mask. */ +#define USART_CLK2X_bp 2 /* Double transmission speed bit position. */ + +#define USART_MPCM_bm 0x02 /* Multi-processor Communication Mode bit mask. */ +#define USART_MPCM_bp 1 /* Multi-processor Communication Mode bit position. */ + +#define USART_TXB8_bm 0x01 /* Transmit bit 8 bit mask. */ +#define USART_TXB8_bp 0 /* Transmit bit 8 bit position. */ + + +/* USART.CTRLC bit masks and bit positions */ +#define USART_CMODE_gm 0xC0 /* Communication Mode group mask. */ +#define USART_CMODE_gp 6 /* Communication Mode group position. */ +#define USART_CMODE0_bm (1<<6) /* Communication Mode bit 0 mask. */ +#define USART_CMODE0_bp 6 /* Communication Mode bit 0 position. */ +#define USART_CMODE1_bm (1<<7) /* Communication Mode bit 1 mask. */ +#define USART_CMODE1_bp 7 /* Communication Mode bit 1 position. */ + +#define USART_PMODE_gm 0x30 /* Parity Mode group mask. */ +#define USART_PMODE_gp 4 /* Parity Mode group position. */ +#define USART_PMODE0_bm (1<<4) /* Parity Mode bit 0 mask. */ +#define USART_PMODE0_bp 4 /* Parity Mode bit 0 position. */ +#define USART_PMODE1_bm (1<<5) /* Parity Mode bit 1 mask. */ +#define USART_PMODE1_bp 5 /* Parity Mode bit 1 position. */ + +#define USART_SBMODE_bm 0x08 /* Stop Bit Mode bit mask. */ +#define USART_SBMODE_bp 3 /* Stop Bit Mode bit position. */ + +#define USART_CHSIZE_gm 0x07 /* Character Size group mask. */ +#define USART_CHSIZE_gp 0 /* Character Size group position. */ +#define USART_CHSIZE0_bm (1<<0) /* Character Size bit 0 mask. */ +#define USART_CHSIZE0_bp 0 /* Character Size bit 0 position. */ +#define USART_CHSIZE1_bm (1<<1) /* Character Size bit 1 mask. */ +#define USART_CHSIZE1_bp 1 /* Character Size bit 1 position. */ +#define USART_CHSIZE2_bm (1<<2) /* Character Size bit 2 mask. */ +#define USART_CHSIZE2_bp 2 /* Character Size bit 2 position. */ + + +/* USART.BAUDCTRLA bit masks and bit positions */ +#define USART_BSEL_gm 0xFF /* Baud Rate Selection Bits [7:0] group mask. */ +#define USART_BSEL_gp 0 /* Baud Rate Selection Bits [7:0] group position. */ +#define USART_BSEL0_bm (1<<0) /* Baud Rate Selection Bits [7:0] bit 0 mask. */ +#define USART_BSEL0_bp 0 /* Baud Rate Selection Bits [7:0] bit 0 position. */ +#define USART_BSEL1_bm (1<<1) /* Baud Rate Selection Bits [7:0] bit 1 mask. */ +#define USART_BSEL1_bp 1 /* Baud Rate Selection Bits [7:0] bit 1 position. */ +#define USART_BSEL2_bm (1<<2) /* Baud Rate Selection Bits [7:0] bit 2 mask. */ +#define USART_BSEL2_bp 2 /* Baud Rate Selection Bits [7:0] bit 2 position. */ +#define USART_BSEL3_bm (1<<3) /* Baud Rate Selection Bits [7:0] bit 3 mask. */ +#define USART_BSEL3_bp 3 /* Baud Rate Selection Bits [7:0] bit 3 position. */ +#define USART_BSEL4_bm (1<<4) /* Baud Rate Selection Bits [7:0] bit 4 mask. */ +#define USART_BSEL4_bp 4 /* Baud Rate Selection Bits [7:0] bit 4 position. */ +#define USART_BSEL5_bm (1<<5) /* Baud Rate Selection Bits [7:0] bit 5 mask. */ +#define USART_BSEL5_bp 5 /* Baud Rate Selection Bits [7:0] bit 5 position. */ +#define USART_BSEL6_bm (1<<6) /* Baud Rate Selection Bits [7:0] bit 6 mask. */ +#define USART_BSEL6_bp 6 /* Baud Rate Selection Bits [7:0] bit 6 position. */ +#define USART_BSEL7_bm (1<<7) /* Baud Rate Selection Bits [7:0] bit 7 mask. */ +#define USART_BSEL7_bp 7 /* Baud Rate Selection Bits [7:0] bit 7 position. */ + + +/* USART.BAUDCTRLB bit masks and bit positions */ +#define USART_BSCALE_gm 0xF0 /* Baud Rate Scale group mask. */ +#define USART_BSCALE_gp 4 /* Baud Rate Scale group position. */ +#define USART_BSCALE0_bm (1<<4) /* Baud Rate Scale bit 0 mask. */ +#define USART_BSCALE0_bp 4 /* Baud Rate Scale bit 0 position. */ +#define USART_BSCALE1_bm (1<<5) /* Baud Rate Scale bit 1 mask. */ +#define USART_BSCALE1_bp 5 /* Baud Rate Scale bit 1 position. */ +#define USART_BSCALE2_bm (1<<6) /* Baud Rate Scale bit 2 mask. */ +#define USART_BSCALE2_bp 6 /* Baud Rate Scale bit 2 position. */ +#define USART_BSCALE3_bm (1<<7) /* Baud Rate Scale bit 3 mask. */ +#define USART_BSCALE3_bp 7 /* Baud Rate Scale bit 3 position. */ + +/* USART_BSEL_gm Predefined. */ +/* USART_BSEL_gp Predefined. */ +/* USART_BSEL0_bm Predefined. */ +/* USART_BSEL0_bp Predefined. */ +/* USART_BSEL1_bm Predefined. */ +/* USART_BSEL1_bp Predefined. */ +/* USART_BSEL2_bm Predefined. */ +/* USART_BSEL2_bp Predefined. */ +/* USART_BSEL3_bm Predefined. */ +/* USART_BSEL3_bp Predefined. */ + + +/* SPI - Serial Peripheral Interface */ +/* SPI.CTRL bit masks and bit positions */ +#define SPI_CLK2X_bm 0x80 /* Enable Double Speed bit mask. */ +#define SPI_CLK2X_bp 7 /* Enable Double Speed bit position. */ + +#define SPI_ENABLE_bm 0x40 /* Enable Module bit mask. */ +#define SPI_ENABLE_bp 6 /* Enable Module bit position. */ + +#define SPI_DORD_bm 0x20 /* Data Order Setting bit mask. */ +#define SPI_DORD_bp 5 /* Data Order Setting bit position. */ + +#define SPI_MASTER_bm 0x10 /* Master Operation Enable bit mask. */ +#define SPI_MASTER_bp 4 /* Master Operation Enable bit position. */ + +#define SPI_MODE_gm 0x0C /* SPI Mode group mask. */ +#define SPI_MODE_gp 2 /* SPI Mode group position. */ +#define SPI_MODE0_bm (1<<2) /* SPI Mode bit 0 mask. */ +#define SPI_MODE0_bp 2 /* SPI Mode bit 0 position. */ +#define SPI_MODE1_bm (1<<3) /* SPI Mode bit 1 mask. */ +#define SPI_MODE1_bp 3 /* SPI Mode bit 1 position. */ + +#define SPI_PRESCALER_gm 0x03 /* Prescaler group mask. */ +#define SPI_PRESCALER_gp 0 /* Prescaler group position. */ +#define SPI_PRESCALER0_bm (1<<0) /* Prescaler bit 0 mask. */ +#define SPI_PRESCALER0_bp 0 /* Prescaler bit 0 position. */ +#define SPI_PRESCALER1_bm (1<<1) /* Prescaler bit 1 mask. */ +#define SPI_PRESCALER1_bp 1 /* Prescaler bit 1 position. */ + + +/* SPI.INTCTRL bit masks and bit positions */ +#define SPI_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define SPI_INTLVL_gp 0 /* Interrupt level group position. */ +#define SPI_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define SPI_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define SPI_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define SPI_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + +/* SPI.STATUS bit masks and bit positions */ +#define SPI_IF_bm 0x80 /* Interrupt Flag bit mask. */ +#define SPI_IF_bp 7 /* Interrupt Flag bit position. */ + +#define SPI_WRCOL_bm 0x40 /* Write Collision bit mask. */ +#define SPI_WRCOL_bp 6 /* Write Collision bit position. */ + + +/* IRCOM - IR Communication Module */ +/* IRCOM.CTRL bit masks and bit positions */ +#define IRCOM_EVSEL_gm 0x0F /* Event Channel Select group mask. */ +#define IRCOM_EVSEL_gp 0 /* Event Channel Select group position. */ +#define IRCOM_EVSEL0_bm (1<<0) /* Event Channel Select bit 0 mask. */ +#define IRCOM_EVSEL0_bp 0 /* Event Channel Select bit 0 position. */ +#define IRCOM_EVSEL1_bm (1<<1) /* Event Channel Select bit 1 mask. */ +#define IRCOM_EVSEL1_bp 1 /* Event Channel Select bit 1 position. */ +#define IRCOM_EVSEL2_bm (1<<2) /* Event Channel Select bit 2 mask. */ +#define IRCOM_EVSEL2_bp 2 /* Event Channel Select bit 2 position. */ +#define IRCOM_EVSEL3_bm (1<<3) /* Event Channel Select bit 3 mask. */ +#define IRCOM_EVSEL3_bp 3 /* Event Channel Select bit 3 position. */ + + +/* AES - AES Module */ +/* AES.CTRL bit masks and bit positions */ +#define AES_START_bm 0x80 /* Start/Run bit mask. */ +#define AES_START_bp 7 /* Start/Run bit position. */ + +#define AES_AUTO_bm 0x40 /* Auto Start Trigger bit mask. */ +#define AES_AUTO_bp 6 /* Auto Start Trigger bit position. */ + +#define AES_RESET_bm 0x20 /* AES Software Reset bit mask. */ +#define AES_RESET_bp 5 /* AES Software Reset bit position. */ + +#define AES_DECRYPT_bm 0x10 /* Decryption / Direction bit mask. */ +#define AES_DECRYPT_bp 4 /* Decryption / Direction bit position. */ + +#define AES_XOR_bm 0x04 /* State XOR Load Enable bit mask. */ +#define AES_XOR_bp 2 /* State XOR Load Enable bit position. */ + + +/* AES.STATUS bit masks and bit positions */ +#define AES_ERROR_bm 0x80 /* AES Error bit mask. */ +#define AES_ERROR_bp 7 /* AES Error bit position. */ + +#define AES_SRIF_bm 0x01 /* State Ready Interrupt Flag bit mask. */ +#define AES_SRIF_bp 0 /* State Ready Interrupt Flag bit position. */ + + +/* AES.INTCTRL bit masks and bit positions */ +#define AES_INTLVL_gm 0x03 /* Interrupt level group mask. */ +#define AES_INTLVL_gp 0 /* Interrupt level group position. */ +#define AES_INTLVL0_bm (1<<0) /* Interrupt level bit 0 mask. */ +#define AES_INTLVL0_bp 0 /* Interrupt level bit 0 position. */ +#define AES_INTLVL1_bm (1<<1) /* Interrupt level bit 1 mask. */ +#define AES_INTLVL1_bp 1 /* Interrupt level bit 1 position. */ + + + +// Generic Port Pins + +#define PIN0_bm 0x01 +#define PIN0_bp 0 +#define PIN1_bm 0x02 +#define PIN1_bp 1 +#define PIN2_bm 0x04 +#define PIN2_bp 2 +#define PIN3_bm 0x08 +#define PIN3_bp 3 +#define PIN4_bm 0x10 +#define PIN4_bp 4 +#define PIN5_bm 0x20 +#define PIN5_bp 5 +#define PIN6_bm 0x40 +#define PIN6_bp 6 +#define PIN7_bm 0x80 +#define PIN7_bp 7 + + +/* ========== Interrupt Vector Definitions ========== */ +/* Vector 0 is the reset vector */ + +/* OSC interrupt vectors */ +#define OSC_XOSCF_vect_num 1 +#define OSC_XOSCF_vect _VECTOR(1) /* External Oscillator Failure Interrupt (NMI) */ + +/* PORTC interrupt vectors */ +#define PORTC_INT0_vect_num 2 +#define PORTC_INT0_vect _VECTOR(2) /* External Interrupt 0 */ +#define PORTC_INT1_vect_num 3 +#define PORTC_INT1_vect _VECTOR(3) /* External Interrupt 1 */ + +/* PORTR interrupt vectors */ +#define PORTR_INT0_vect_num 4 +#define PORTR_INT0_vect _VECTOR(4) /* External Interrupt 0 */ +#define PORTR_INT1_vect_num 5 +#define PORTR_INT1_vect _VECTOR(5) /* External Interrupt 1 */ + +/* DMA interrupt vectors */ +#define DMA_CH0_vect_num 6 +#define DMA_CH0_vect _VECTOR(6) /* Channel 0 Interrupt */ +#define DMA_CH1_vect_num 7 +#define DMA_CH1_vect _VECTOR(7) /* Channel 1 Interrupt */ +#define DMA_CH2_vect_num 8 +#define DMA_CH2_vect _VECTOR(8) /* Channel 2 Interrupt */ +#define DMA_CH3_vect_num 9 +#define DMA_CH3_vect _VECTOR(9) /* Channel 3 Interrupt */ + +/* RTC interrupt vectors */ +#define RTC_OVF_vect_num 10 +#define RTC_OVF_vect _VECTOR(10) /* Overflow Interrupt */ +#define RTC_COMP_vect_num 11 +#define RTC_COMP_vect _VECTOR(11) /* Compare Interrupt */ + +/* TWIC interrupt vectors */ +#define TWIC_TWIS_vect_num 12 +#define TWIC_TWIS_vect _VECTOR(12) /* TWI Slave Interrupt */ +#define TWIC_TWIM_vect_num 13 +#define TWIC_TWIM_vect _VECTOR(13) /* TWI Master Interrupt */ + +/* TCC0 interrupt vectors */ +#define TCC0_OVF_vect_num 14 +#define TCC0_OVF_vect _VECTOR(14) /* Overflow Interrupt */ +#define TCC0_ERR_vect_num 15 +#define TCC0_ERR_vect _VECTOR(15) /* Error Interrupt */ +#define TCC0_CCA_vect_num 16 +#define TCC0_CCA_vect _VECTOR(16) /* Compare or Capture A Interrupt */ +#define TCC0_CCB_vect_num 17 +#define TCC0_CCB_vect _VECTOR(17) /* Compare or Capture B Interrupt */ +#define TCC0_CCC_vect_num 18 +#define TCC0_CCC_vect _VECTOR(18) /* Compare or Capture C Interrupt */ +#define TCC0_CCD_vect_num 19 +#define TCC0_CCD_vect _VECTOR(19) /* Compare or Capture D Interrupt */ + +/* TCC1 interrupt vectors */ +#define TCC1_OVF_vect_num 20 +#define TCC1_OVF_vect _VECTOR(20) /* Overflow Interrupt */ +#define TCC1_ERR_vect_num 21 +#define TCC1_ERR_vect _VECTOR(21) /* Error Interrupt */ +#define TCC1_CCA_vect_num 22 +#define TCC1_CCA_vect _VECTOR(22) /* Compare or Capture A Interrupt */ +#define TCC1_CCB_vect_num 23 +#define TCC1_CCB_vect _VECTOR(23) /* Compare or Capture B Interrupt */ + +/* SPIC interrupt vectors */ +#define SPIC_INT_vect_num 24 +#define SPIC_INT_vect _VECTOR(24) /* SPI Interrupt */ + +/* USARTC0 interrupt vectors */ +#define USARTC0_RXC_vect_num 25 +#define USARTC0_RXC_vect _VECTOR(25) /* Reception Complete Interrupt */ +#define USARTC0_DRE_vect_num 26 +#define USARTC0_DRE_vect _VECTOR(26) /* Data Register Empty Interrupt */ +#define USARTC0_TXC_vect_num 27 +#define USARTC0_TXC_vect _VECTOR(27) /* Transmission Complete Interrupt */ + +/* USARTC1 interrupt vectors */ +#define USARTC1_RXC_vect_num 28 +#define USARTC1_RXC_vect _VECTOR(28) /* Reception Complete Interrupt */ +#define USARTC1_DRE_vect_num 29 +#define USARTC1_DRE_vect _VECTOR(29) /* Data Register Empty Interrupt */ +#define USARTC1_TXC_vect_num 30 +#define USARTC1_TXC_vect _VECTOR(30) /* Transmission Complete Interrupt */ + +/* AES interrupt vectors */ +#define AES_INT_vect_num 31 +#define AES_INT_vect _VECTOR(31) /* AES Interrupt */ + +/* NVM interrupt vectors */ +#define NVM_EE_vect_num 32 +#define NVM_EE_vect _VECTOR(32) /* EE Interrupt */ +#define NVM_SPM_vect_num 33 +#define NVM_SPM_vect _VECTOR(33) /* SPM Interrupt */ + +/* PORTB interrupt vectors */ +#define PORTB_INT0_vect_num 34 +#define PORTB_INT0_vect _VECTOR(34) /* External Interrupt 0 */ +#define PORTB_INT1_vect_num 35 +#define PORTB_INT1_vect _VECTOR(35) /* External Interrupt 1 */ + +/* ACB interrupt vectors */ +#define ACB_AC0_vect_num 36 +#define ACB_AC0_vect _VECTOR(36) /* AC0 Interrupt */ +#define ACB_AC1_vect_num 37 +#define ACB_AC1_vect _VECTOR(37) /* AC1 Interrupt */ +#define ACB_ACW_vect_num 38 +#define ACB_ACW_vect _VECTOR(38) /* ACW Window Mode Interrupt */ + +/* ADCB interrupt vectors */ +#define ADCB_CH0_vect_num 39 +#define ADCB_CH0_vect _VECTOR(39) /* Interrupt 0 */ +#define ADCB_CH1_vect_num 40 +#define ADCB_CH1_vect _VECTOR(40) /* Interrupt 1 */ +#define ADCB_CH2_vect_num 41 +#define ADCB_CH2_vect _VECTOR(41) /* Interrupt 2 */ +#define ADCB_CH3_vect_num 42 +#define ADCB_CH3_vect _VECTOR(42) /* Interrupt 3 */ + +/* PORTE interrupt vectors */ +#define PORTE_INT0_vect_num 43 +#define PORTE_INT0_vect _VECTOR(43) /* External Interrupt 0 */ +#define PORTE_INT1_vect_num 44 +#define PORTE_INT1_vect _VECTOR(44) /* External Interrupt 1 */ + +/* TWIE interrupt vectors */ +#define TWIE_TWIS_vect_num 45 +#define TWIE_TWIS_vect _VECTOR(45) /* TWI Slave Interrupt */ +#define TWIE_TWIM_vect_num 46 +#define TWIE_TWIM_vect _VECTOR(46) /* TWI Master Interrupt */ + +/* TCE0 interrupt vectors */ +#define TCE0_OVF_vect_num 47 +#define TCE0_OVF_vect _VECTOR(47) /* Overflow Interrupt */ +#define TCE0_ERR_vect_num 48 +#define TCE0_ERR_vect _VECTOR(48) /* Error Interrupt */ +#define TCE0_CCA_vect_num 49 +#define TCE0_CCA_vect _VECTOR(49) /* Compare or Capture A Interrupt */ +#define TCE0_CCB_vect_num 50 +#define TCE0_CCB_vect _VECTOR(50) /* Compare or Capture B Interrupt */ +#define TCE0_CCC_vect_num 51 +#define TCE0_CCC_vect _VECTOR(51) /* Compare or Capture C Interrupt */ +#define TCE0_CCD_vect_num 52 +#define TCE0_CCD_vect _VECTOR(52) /* Compare or Capture D Interrupt */ + +/* TCE1 interrupt vectors */ +#define TCE1_OVF_vect_num 53 +#define TCE1_OVF_vect _VECTOR(53) /* Overflow Interrupt */ +#define TCE1_ERR_vect_num 54 +#define TCE1_ERR_vect _VECTOR(54) /* Error Interrupt */ +#define TCE1_CCA_vect_num 55 +#define TCE1_CCA_vect _VECTOR(55) /* Compare or Capture A Interrupt */ +#define TCE1_CCB_vect_num 56 +#define TCE1_CCB_vect _VECTOR(56) /* Compare or Capture B Interrupt */ + +/* SPIE interrupt vectors */ +#define SPIE_INT_vect_num 57 +#define SPIE_INT_vect _VECTOR(57) /* SPI Interrupt */ + +/* USARTE0 interrupt vectors */ +#define USARTE0_RXC_vect_num 58 +#define USARTE0_RXC_vect _VECTOR(58) /* Reception Complete Interrupt */ +#define USARTE0_DRE_vect_num 59 +#define USARTE0_DRE_vect _VECTOR(59) /* Data Register Empty Interrupt */ +#define USARTE0_TXC_vect_num 60 +#define USARTE0_TXC_vect _VECTOR(60) /* Transmission Complete Interrupt */ + +/* USARTE1 interrupt vectors */ +#define USARTE1_RXC_vect_num 61 +#define USARTE1_RXC_vect _VECTOR(61) /* Reception Complete Interrupt */ +#define USARTE1_DRE_vect_num 62 +#define USARTE1_DRE_vect _VECTOR(62) /* Data Register Empty Interrupt */ +#define USARTE1_TXC_vect_num 63 +#define USARTE1_TXC_vect _VECTOR(63) /* Transmission Complete Interrupt */ + +/* PORTD interrupt vectors */ +#define PORTD_INT0_vect_num 64 +#define PORTD_INT0_vect _VECTOR(64) /* External Interrupt 0 */ +#define PORTD_INT1_vect_num 65 +#define PORTD_INT1_vect _VECTOR(65) /* External Interrupt 1 */ + +/* PORTA interrupt vectors */ +#define PORTA_INT0_vect_num 66 +#define PORTA_INT0_vect _VECTOR(66) /* External Interrupt 0 */ +#define PORTA_INT1_vect_num 67 +#define PORTA_INT1_vect _VECTOR(67) /* External Interrupt 1 */ + +/* ACA interrupt vectors */ +#define ACA_AC0_vect_num 68 +#define ACA_AC0_vect _VECTOR(68) /* AC0 Interrupt */ +#define ACA_AC1_vect_num 69 +#define ACA_AC1_vect _VECTOR(69) /* AC1 Interrupt */ +#define ACA_ACW_vect_num 70 +#define ACA_ACW_vect _VECTOR(70) /* ACW Window Mode Interrupt */ + +/* ADCA interrupt vectors */ +#define ADCA_CH0_vect_num 71 +#define ADCA_CH0_vect _VECTOR(71) /* Interrupt 0 */ +#define ADCA_CH1_vect_num 72 +#define ADCA_CH1_vect _VECTOR(72) /* Interrupt 1 */ +#define ADCA_CH2_vect_num 73 +#define ADCA_CH2_vect _VECTOR(73) /* Interrupt 2 */ +#define ADCA_CH3_vect_num 74 +#define ADCA_CH3_vect _VECTOR(74) /* Interrupt 3 */ + +/* TCD0 interrupt vectors */ +#define TCD0_OVF_vect_num 77 +#define TCD0_OVF_vect _VECTOR(77) /* Overflow Interrupt */ +#define TCD0_ERR_vect_num 78 +#define TCD0_ERR_vect _VECTOR(78) /* Error Interrupt */ +#define TCD0_CCA_vect_num 79 +#define TCD0_CCA_vect _VECTOR(79) /* Compare or Capture A Interrupt */ +#define TCD0_CCB_vect_num 80 +#define TCD0_CCB_vect _VECTOR(80) /* Compare or Capture B Interrupt */ +#define TCD0_CCC_vect_num 81 +#define TCD0_CCC_vect _VECTOR(81) /* Compare or Capture C Interrupt */ +#define TCD0_CCD_vect_num 82 +#define TCD0_CCD_vect _VECTOR(82) /* Compare or Capture D Interrupt */ + +/* TCD1 interrupt vectors */ +#define TCD1_OVF_vect_num 83 +#define TCD1_OVF_vect _VECTOR(83) /* Overflow Interrupt */ +#define TCD1_ERR_vect_num 84 +#define TCD1_ERR_vect _VECTOR(84) /* Error Interrupt */ +#define TCD1_CCA_vect_num 85 +#define TCD1_CCA_vect _VECTOR(85) /* Compare or Capture A Interrupt */ +#define TCD1_CCB_vect_num 86 +#define TCD1_CCB_vect _VECTOR(86) /* Compare or Capture B Interrupt */ + +/* SPID interrupt vectors */ +#define SPID_INT_vect_num 87 +#define SPID_INT_vect _VECTOR(87) /* SPI Interrupt */ + +/* USARTD0 interrupt vectors */ +#define USARTD0_RXC_vect_num 88 +#define USARTD0_RXC_vect _VECTOR(88) /* Reception Complete Interrupt */ +#define USARTD0_DRE_vect_num 89 +#define USARTD0_DRE_vect _VECTOR(89) /* Data Register Empty Interrupt */ +#define USARTD0_TXC_vect_num 90 +#define USARTD0_TXC_vect _VECTOR(90) /* Transmission Complete Interrupt */ + +/* USARTD1 interrupt vectors */ +#define USARTD1_RXC_vect_num 91 +#define USARTD1_RXC_vect _VECTOR(91) /* Reception Complete Interrupt */ +#define USARTD1_DRE_vect_num 92 +#define USARTD1_DRE_vect _VECTOR(92) /* Data Register Empty Interrupt */ +#define USARTD1_TXC_vect_num 93 +#define USARTD1_TXC_vect _VECTOR(93) /* Transmission Complete Interrupt */ + +/* PORTF interrupt vectors */ +#define PORTF_INT0_vect_num 104 +#define PORTF_INT0_vect _VECTOR(104) /* External Interrupt 0 */ +#define PORTF_INT1_vect_num 105 +#define PORTF_INT1_vect _VECTOR(105) /* External Interrupt 1 */ + +/* TCF0 interrupt vectors */ +#define TCF0_OVF_vect_num 108 +#define TCF0_OVF_vect _VECTOR(108) /* Overflow Interrupt */ +#define TCF0_ERR_vect_num 109 +#define TCF0_ERR_vect _VECTOR(109) /* Error Interrupt */ +#define TCF0_CCA_vect_num 110 +#define TCF0_CCA_vect _VECTOR(110) /* Compare or Capture A Interrupt */ +#define TCF0_CCB_vect_num 111 +#define TCF0_CCB_vect _VECTOR(111) /* Compare or Capture B Interrupt */ +#define TCF0_CCC_vect_num 112 +#define TCF0_CCC_vect _VECTOR(112) /* Compare or Capture C Interrupt */ +#define TCF0_CCD_vect_num 113 +#define TCF0_CCD_vect _VECTOR(113) /* Compare or Capture D Interrupt */ + +/* USARTF0 interrupt vectors */ +#define USARTF0_RXC_vect_num 119 +#define USARTF0_RXC_vect _VECTOR(119) /* Reception Complete Interrupt */ +#define USARTF0_DRE_vect_num 120 +#define USARTF0_DRE_vect _VECTOR(120) /* Data Register Empty Interrupt */ +#define USARTF0_TXC_vect_num 121 +#define USARTF0_TXC_vect _VECTOR(121) /* Transmission Complete Interrupt */ + + +#define _VECTOR_SIZE 4 /* Size of individual vector. */ +#define _VECTORS_SIZE (122 * _VECTOR_SIZE) + + +/* ========== Constants ========== */ + +#define PROGMEM_START (0x0000) +#define PROGMEM_SIZE (69632) +#define PROGMEM_END (PROGMEM_START + PROGMEM_SIZE - 1) + +#define APP_SECTION_START (0x0000) +#define APP_SECTION_SIZE (65536) +#define APP_SECTION_END (APP_SECTION_START + APP_SECTION_SIZE - 1) + +#define APPTABLE_SECTION_START (0x0F000) +#define APPTABLE_SECTION_SIZE (4096) +#define APPTABLE_SECTION_END (APPTABLE_SECTION_START + APPTABLE_SECTION_SIZE - 1) + +#define BOOT_SECTION_START (0x10000) +#define BOOT_SECTION_SIZE (4096) +#define BOOT_SECTION_END (BOOT_SECTION_START + BOOT_SECTION_SIZE - 1) + +#define DATAMEM_START (0x0000) +#define DATAMEM_SIZE (12288) +#define DATAMEM_END (DATAMEM_START + DATAMEM_SIZE - 1) + +#define IO_START (0x0000) +#define IO_SIZE (4096) +#define IO_END (IO_START + IO_SIZE - 1) + +#define MAPPED_EEPROM_START (0x1000) +#define MAPPED_EEPROM_SIZE (2048) +#define MAPPED_EEPROM_END (MAPPED_EEPROM_START + MAPPED_EEPROM_SIZE - 1) + +#define INTERNAL_SRAM_START (0x2000) +#define INTERNAL_SRAM_SIZE (4096) +#define INTERNAL_SRAM_END (INTERNAL_SRAM_START + INTERNAL_SRAM_SIZE - 1) + +#define EEPROM_START (0x0000) +#define EEPROM_SIZE (2048) +#define EEPROM_END (EEPROM_START + EEPROM_SIZE - 1) + +#define FUSE_START (0x0000) +#define FUSE_SIZE (6) +#define FUSE_END (FUSE_START + FUSE_SIZE - 1) + +#define LOCKBIT_START (0x0000) +#define LOCKBIT_SIZE (1) +#define LOCKBIT_END (LOCKBIT_START + LOCKBIT_SIZE - 1) + +#define SIGNATURES_START (0x0000) +#define SIGNATURES_SIZE (3) +#define SIGNATURES_END (SIGNATURES_START + SIGNATURES_SIZE - 1) + +#define USER_SIGNATURES_START (0x0000) +#define USER_SIGNATURES_SIZE (256) +#define USER_SIGNATURES_END (USER_SIGNATURES_START + USER_SIGNATURES_SIZE - 1) + +#define PROD_SIGNATURES_START (0x0000) +#define PROD_SIGNATURES_SIZE (52) +#define PROD_SIGNATURES_END (PROD_SIGNATURES_START + PROD_SIGNATURES_SIZE - 1) + +#define FLASHEND PROGMEM_END +#define SPM_PAGESIZE PROGMEM_PAGE_SIZE +#define RAMSTART INTERNAL_SRAM_START +#define RAMSIZE INTERNAL_SRAM_SIZE +#define RAMEND INTERNAL_SRAM_END +#define XRAMSTART EXTERNAL_SRAM_START +#define XRAMSIZE EXTERNAL_SRAM_SIZE +#define XRAMEND INTERNAL_SRAM_END +#define E2END EEPROM_END +#define E2PAGESIZE EEPROM_PAGE_SIZE + + +/* ========== Fuses ========== */ +#define FUSE_MEMORY_SIZE 6 + +/* Fuse Byte 0 */ +#define FUSE_JTAGUSERID0 ~_BV(0) /* JTAG User ID Bit 0 */ +#define FUSE_JTAGUSERID1 ~_BV(1) /* JTAG User ID Bit 1 */ +#define FUSE_JTAGUSERID2 ~_BV(2) /* JTAG User ID Bit 2 */ +#define FUSE_JTAGUSERID3 ~_BV(3) /* JTAG User ID Bit 3 */ +#define FUSE_JTAGUSERID4 ~_BV(4) /* JTAG User ID Bit 4 */ +#define FUSE_JTAGUSERID5 ~_BV(5) /* JTAG User ID Bit 5 */ +#define FUSE_JTAGUSERID6 ~_BV(6) /* JTAG User ID Bit 6 */ +#define FUSE_JTAGUSERID7 ~_BV(7) /* JTAG User ID Bit 7 */ +#define FUSE0_DEFAULT (0xFF) + +/* Fuse Byte 1 */ +#define FUSE_WDP0 ~_BV(0) /* Watchdog Timeout Period Bit 0 */ +#define FUSE_WDP1 ~_BV(1) /* Watchdog Timeout Period Bit 1 */ +#define FUSE_WDP2 ~_BV(2) /* Watchdog Timeout Period Bit 2 */ +#define FUSE_WDP3 ~_BV(3) /* Watchdog Timeout Period Bit 3 */ +#define FUSE_WDWP0 ~_BV(4) /* Watchdog Window Timeout Period Bit 0 */ +#define FUSE_WDWP1 ~_BV(5) /* Watchdog Window Timeout Period Bit 1 */ +#define FUSE_WDWP2 ~_BV(6) /* Watchdog Window Timeout Period Bit 2 */ +#define FUSE_WDWP3 ~_BV(7) /* Watchdog Window Timeout Period Bit 3 */ +#define FUSE1_DEFAULT (0xFF) + +/* Fuse Byte 2 */ +#define FUSE_BODPD0 ~_BV(0) /* BOD Operation in Power-Down Mode Bit 0 */ +#define FUSE_BODPD1 ~_BV(1) /* BOD Operation in Power-Down Mode Bit 1 */ +#define FUSE_BODACT0 ~_BV(2) /* BOD Operation in Active Mode Bit 0 */ +#define FUSE_BODACT1 ~_BV(3) /* BOD Operation in Active Mode Bit 1 */ +#define FUSE_BOOTRST ~_BV(6) /* Boot Loader Section Reset Vector */ +#define FUSE_DVSDON ~_BV(7) /* Spike Detector Enable */ +#define FUSE2_DEFAULT (0xFF) + +/* Fuse Byte 3 Reserved */ + +/* Fuse Byte 4 */ +#define FUSE_JTAGEN ~_BV(0) /* JTAG Interface Enable */ +#define FUSE_WDLOCK ~_BV(1) /* Watchdog Timer Lock */ +#define FUSE_SUT0 ~_BV(2) /* Start-up Time Bit 0 */ +#define FUSE_SUT1 ~_BV(3) /* Start-up Time Bit 1 */ +#define FUSE4_DEFAULT (0xFF) + +/* Fuse Byte 5 */ +#define FUSE_BODLVL0 ~_BV(0) /* Brown Out Detection Voltage Level Bit 0 */ +#define FUSE_BODLVL1 ~_BV(1) /* Brown Out Detection Voltage Level Bit 1 */ +#define FUSE_BODLVL2 ~_BV(2) /* Brown Out Detection Voltage Level Bit 2 */ +#define FUSE_EESAVE ~_BV(3) /* Preserve EEPROM Through Chip Erase */ +#define FUSE5_DEFAULT (0xFF) + + +/* ========== Lock Bits ========== */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST +#define __BOOT_LOCK_APPLICATION_BITS_EXIST +#define __BOOT_LOCK_BOOT_BITS_EXIST + + +/* ========== Signature ========== */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x96 +#define SIGNATURE_2 0x42 + + +#endif /* _AVR_ATxmega64A3_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/lock.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/lock.h new file mode 100644 index 0000000..9ac8c57 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/lock.h @@ -0,0 +1,239 @@ +/* Copyright (c) 2007, Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: lock.h,v 1.3.2.2 2008/04/29 18:07:36 arcanum Exp $ */ + +/* avr/lock.h - Lock Bits API */ + +#ifndef _AVR_LOCK_H_ +#define _AVR_LOCK_H_ 1 + + +/** \file */ +/** \defgroup avr_lock : Lockbit Support + + \par Introduction + + The Lockbit API allows a user to specify the lockbit settings for the + specific AVR device they are compiling for. These lockbit settings will be + placed in a special section in the ELF output file, after linking. + + Programming tools can take advantage of the lockbit information embedded in + the ELF file, by extracting this information and determining if the lockbits + need to be programmed after programming the Flash and EEPROM memories. + This also allows a single ELF file to contain all the + information needed to program an AVR. + + To use the Lockbit API, include the header file, which in turn + automatically includes the individual I/O header file and the + file. These other two files provides everything necessary to set the AVR + lockbits. + + \par Lockbit API + + Each I/O header file may define up to 3 macros that controls what kinds + of lockbits are available to the user. + + If __LOCK_BITS_EXIST is defined, then two lock bits are available to the + user and 3 mode settings are defined for these two bits. + + If __BOOT_LOCK_BITS_0_EXIST is defined, then the two BLB0 lock bits are + available to the user and 4 mode settings are defined for these two bits. + + If __BOOT_LOCK_BITS_1_EXIST is defined, then the two BLB1 lock bits are + available to the user and 4 mode settings are defined for these two bits. + + If __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST is defined then two lock bits + are available to set the locking mode for the Application Table Section + (which is used in the XMEGA family). + + If __BOOT_LOCK_APPLICATION_BITS_EXIST is defined then two lock bits are + available to set the locking mode for the Application Section (which is used + in the XMEGA family). + + If __BOOT_LOCK_BOOT_BITS_EXIST is defined then two lock bits are available + to set the locking mode for the Boot Loader Section (which is used in the + XMEGA family). + + The AVR lockbit modes have inverted values, logical 1 for an unprogrammed + (disabled) bit and logical 0 for a programmed (enabled) bit. The defined + macros for each individual lock bit represent this in their definition by a + bit-wise inversion of a mask. For example, the LB_MODE_3 macro is defined + as: + \code + #define LB_MODE_3 (0xFC) +` \endcode + + To combine the lockbit mode macros together to represent a whole byte, + use the bitwise AND operator, like so: + \code + (LB_MODE_3 & BLB0_MODE_2) + \endcode + + also defines a macro that provides a default lockbit value: + LOCKBITS_DEFAULT which is defined to be 0xFF. + + See the AVR device specific datasheet for more details about these + lock bits and the available mode settings. + + A convenience macro, LOCKMEM, is defined as a GCC attribute for a + custom-named section of ".lock". + + A convenience macro, LOCKBITS, is defined that declares a variable, __lock, + of type unsigned char with the attribute defined by LOCKMEM. This variable + allows the end user to easily set the lockbit data. + + \note If a device-specific I/O header file has previously defined LOCKMEM, + then LOCKMEM is not redefined. If a device-specific I/O header file has + previously defined LOCKBITS, then LOCKBITS is not redefined. LOCKBITS is + currently known to be defined in the I/O header files for the XMEGA devices. + + \par API Usage Example + + Putting all of this together is easy: + + \code + #include + + LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); + + int main(void) + { + return 0; + } + \endcode + + Or: + + \code + #include + + unsigned char __lock __attribute__((section (".lock"))) = + (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); + + int main(void) + { + return 0; + } + \endcode + + + + However there are a number of caveats that you need to be aware of to + use this API properly. + + Be sure to include to get all of the definitions for the API. + The LOCKBITS macro defines a global variable to store the lockbit data. This + variable is assigned to its own linker section. Assign the desired lockbit + values immediately in the variable initialization. + + The .lock section in the ELF file will get its values from the initial + variable assignment ONLY. This means that you can NOT assign values to + this variable in functions and the new values will not be put into the + ELF .lock section. + + The global variable is declared in the LOCKBITS macro has two leading + underscores, which means that it is reserved for the "implementation", + meaning the library, so it will not conflict with a user-named variable. + + You must initialize the lockbit variable to some meaningful value, even + if it is the default value. This is because the lockbits default to a + logical 1, meaning unprogrammed. Normal uninitialized data defaults to all + locgial zeros. So it is vital that all lockbits are initialized, even with + default data. If they are not, then the lockbits may not programmed to the + desired settings and can possibly put your device into an unrecoverable + state. + + Be sure to have the -mmcu=device flag in your compile command line and + your linker command line to have the correct device selected and to have + the correct I/O header file included when you include . + + You can print out the contents of the .lock section in the ELF file by + using this command line: + \code + avr-objdump -s -j .lock + \endcode + +*/ + + +#ifndef __ASSEMBLER__ + +#ifndef LOCKMEM +#define LOCKMEM __attribute__((section (".lock"))) +#endif + +#ifndef LOCKBITS +#define LOCKBITS unsigned char __lock LOCKMEM +#endif + +#endif /* !__ASSEMBLER */ + + +/* Lock Bit Modes */ +#if defined(__LOCK_BITS_EXIST) +#define LB_MODE_1 (0xFF) +#define LB_MODE_2 (0xFE) +#define LB_MODE_3 (0xFC) +#endif + +#if defined(__BOOT_LOCK_BITS_0_EXIST) +#define BLB0_MODE_1 (0xFF) +#define BLB0_MODE_2 (0xFB) +#define BLB0_MODE_3 (0xF3) +#define BLB0_MODE_4 (0xF7) +#endif + +#if defined(__BOOT_LOCK_BITS_1_EXIST) +#define BLB1_MODE_1 (0xFF) +#define BLB1_MODE_2 (0xEF) +#define BLB1_MODE_3 (0xCF) +#define BLB1_MODE_4 (0xDF) +#endif + +#if defined(__BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST) +#define BLBAT0 ~_BV(2) +#define BLBAT1 ~_BV(3) +#endif + +#if defined(__BOOT_LOCK_APPLICATION_BITS_EXIST) +#define BLBA0 ~_BV(4) +#define BLBA1 ~_BV(5) +#endif + +#if defined(__BOOT_LOCK_BOOT_BITS_EXIST) +#define BLBB0 ~_BV(6) +#define BLBB1 ~_BV(7) +#endif + + +#define LOCKBITS_DEFAULT (0xFF) + +#endif /* _AVR_LOCK_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/parity.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/parity.h new file mode 100644 index 0000000..cedd9b5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/parity.h @@ -0,0 +1,39 @@ +/* Copyright (c) 2005 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: parity.h,v 1.7 2005/11/05 22:23:15 joerg_wunsch Exp $ */ + +#ifndef _AVR_PARITY_H_ +#define _AVR_PARITY_H_ + +#warning "This file has been moved to ." +#include + +#endif /* _AVR_PARITY_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/pgmspace.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/pgmspace.h new file mode 100644 index 0000000..283e269 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/pgmspace.h @@ -0,0 +1,775 @@ +/* Copyright (c) 2002 - 2007 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: pgmspace.h,v 1.40.2.2 2008/10/22 04:35:00 arcanum Exp $ */ + +/* + pgmspace.h + + Contributors: + Created by Marek Michalkiewicz + Eric B. Weddington + Wolfgang Haidinger (pgm_read_dword()) + Ivanov Anton (pgm_read_float()) + */ + +/** \file */ +/** \defgroup avr_pgmspace : Program Space Utilities + \code + #include + #include + \endcode + + The functions in this module provide interfaces for a program to access + data stored in program space (flash memory) of the device. In order to + use these functions, the target device must support either the \c LPM or + \c ELPM instructions. + + \note These functions are an attempt to provide some compatibility with + header files that come with IAR C, to make porting applications between + different compilers easier. This is not 100% compatibility though (GCC + does not have full support for multiple address spaces yet). + + \note If you are working with strings which are completely based in ram, + use the standard string functions described in \ref avr_string. + + \note If possible, put your constant tables in the lower 64 KB and use + pgm_read_byte_near() or pgm_read_word_near() instead of + pgm_read_byte_far() or pgm_read_word_far() since it is more efficient that + way, and you can still use the upper 64K for executable code. + All functions that are suffixed with a \c _P \e require their + arguments to be in the lower 64 KB of the flash ROM, as they do + not use ELPM instructions. This is normally not a big concern as + the linker setup arranges any program space constants declared + using the macros from this header file so they are placed right after + the interrupt vectors, and in front of any executable code. However, + it can become a problem if there are too many of these constants, or + for bootloaders on devices with more than 64 KB of ROM. + All these functions will not work in that situation. +*/ + +#ifndef __PGMSPACE_H_ +#define __PGMSPACE_H_ 1 + +#define __need_size_t +#include +#include +#include + +#ifndef __ATTR_CONST__ +#define __ATTR_CONST__ __attribute__((__const__)) +#endif + +#ifndef __ATTR_PROGMEM__ +#define __ATTR_PROGMEM__ __attribute__((__progmem__)) +#endif + +#ifndef __ATTR_PURE__ +#define __ATTR_PURE__ __attribute__((__pure__)) +#endif + +/** + \ingroup avr_pgmspace + \def PROGMEM + + Attribute to use in order to declare an object being located in + flash ROM. + */ +#define PROGMEM __ATTR_PROGMEM__ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(__DOXYGEN__) +/* + * Doxygen doesn't grok the appended attribute syntax of + * GCC, and confuses the typedefs with function decls, so + * supply a doxygen-friendly view. + */ +/** + \ingroup avr_pgmspace + \typedef prog_void + + Type of a "void" object located in flash ROM. Does not make much + sense by itself, but can be used to declare a "void *" object in + flash ROM. +*/ +typedef void PROGMEM prog_void; +/** + \ingroup avr_pgmspace + \typedef prog_char + + Type of a "char" object located in flash ROM. +*/ +typedef char PROGMEM prog_char; + +/** + \ingroup avr_pgmspace + \typedef prog_uchar + + Type of an "unsigned char" object located in flash ROM. +*/ +typedef unsigned char PROGMEM prog_uchar; + + +/** + \ingroup avr_pgmspace + \typedef prog_int8_t + + Type of an "int8_t" object located in flash ROM. +*/ +typedef int8_t PROGMEM prog_int8_t; + +/** + \ingroup avr_pgmspace + \typedef prog_uint8_t + + Type of an "uint8_t" object located in flash ROM. +*/ +typedef uint8_t PROGMEM prog_uint8_t; + +/** + \ingroup avr_pgmspace + \typedef prog_int16_t + + Type of an "int16_t" object located in flash ROM. +*/ +typedef int16_t PROGMEM prog_int16_t; + +/** + \ingroup avr_pgmspace + \typedef prog_uint16_t + + Type of an "uint16_t" object located in flash ROM. +*/ +typedef uint16_t PROGMEM prog_uint16_t; + +/** + \ingroup avr_pgmspace + \typedef prog_int32_t + + Type of an "int32_t" object located in flash ROM. +*/ +typedef int32_t PROGMEM prog_int32_t; + +/** + \ingroup avr_pgmspace + \typedef prog_uint32_t + + Type of an "uint32_t" object located in flash ROM. +*/ +typedef uint32_t PROGMEM prog_uint32_t; + +/** + \ingroup avr_pgmspace + \typedef prog_int64_t + + Type of an "int64_t" object located in flash ROM. + + \note This type is not available when the compiler + option -mint8 is in effect. +*/ +typedef int64_t PROGMEM prog_int64_t; + +/** + \ingroup avr_pgmspace + \typedef prog_uint64_t + + Type of an "uint64_t" object located in flash ROM. + + \note This type is not available when the compiler + option -mint8 is in effect. +*/ +typedef uint64_t PROGMEM prog_uint64_t; +#else /* !DOXYGEN */ +typedef void prog_void PROGMEM; +typedef char prog_char PROGMEM; +typedef unsigned char prog_uchar PROGMEM; + +typedef int8_t prog_int8_t PROGMEM; +typedef uint8_t prog_uint8_t PROGMEM; +typedef int16_t prog_int16_t PROGMEM; +typedef uint16_t prog_uint16_t PROGMEM; +typedef int32_t prog_int32_t PROGMEM; +typedef uint32_t prog_uint32_t PROGMEM; +#if !__USING_MINT8 +typedef int64_t prog_int64_t PROGMEM; +typedef uint64_t prog_uint64_t PROGMEM; +#endif +#endif /* defined(__DOXYGEN__) */ + +/* Although in C, we can get away with just using __c, it does not work in + C++. We need to use &__c[0] to avoid the compiler puking. Dave Hylands + explaned it thusly, + + Let's suppose that we use PSTR("Test"). In this case, the type returned + by __c is a prog_char[5] and not a prog_char *. While these are + compatible, they aren't the same thing (especially in C++). The type + returned by &__c[0] is a prog_char *, which explains why it works + fine. */ + +#if defined(__DOXYGEN__) +/* + * The #define below is just a dummy that serves documentation + * purposes only. + */ +/** \ingroup avr_pgmspace + \def PSTR(s) + + Used to declare a static pointer to a string in program space. */ +# define PSTR(s) ((const PROGMEM char *)(s)) +#else /* !DOXYGEN */ +/* The real thing. */ +# define PSTR(s) (__extension__({static char __c[] PROGMEM = (s); &__c[0];})) +#endif /* DOXYGEN */ + +#define __LPM_classic__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + "lpm" "\n\t" \ + "mov %0, r0" "\n\t" \ + : "=r" (__result) \ + : "z" (__addr16) \ + : "r0" \ + ); \ + __result; \ +})) + +#define __LPM_enhanced__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + "lpm %0, Z" "\n\t" \ + : "=r" (__result) \ + : "z" (__addr16) \ + ); \ + __result; \ +})) + +#define __LPM_word_classic__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + "lpm" "\n\t" \ + "mov %A0, r0" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "lpm" "\n\t" \ + "mov %B0, r0" "\n\t" \ + : "=r" (__result), "=z" (__addr16) \ + : "1" (__addr16) \ + : "r0" \ + ); \ + __result; \ +})) + +#define __LPM_word_enhanced__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + "lpm %A0, Z+" "\n\t" \ + "lpm %B0, Z" "\n\t" \ + : "=r" (__result), "=z" (__addr16) \ + : "1" (__addr16) \ + ); \ + __result; \ +})) + +#define __LPM_dword_classic__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint32_t __result; \ + __asm__ \ + ( \ + "lpm" "\n\t" \ + "mov %A0, r0" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "lpm" "\n\t" \ + "mov %B0, r0" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "lpm" "\n\t" \ + "mov %C0, r0" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "lpm" "\n\t" \ + "mov %D0, r0" "\n\t" \ + : "=r" (__result), "=z" (__addr16) \ + : "1" (__addr16) \ + : "r0" \ + ); \ + __result; \ +})) + +#define __LPM_dword_enhanced__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint32_t __result; \ + __asm__ \ + ( \ + "lpm %A0, Z+" "\n\t" \ + "lpm %B0, Z+" "\n\t" \ + "lpm %C0, Z+" "\n\t" \ + "lpm %D0, Z" "\n\t" \ + : "=r" (__result), "=z" (__addr16) \ + : "1" (__addr16) \ + ); \ + __result; \ +})) + +#define __LPM_float_classic__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + float __result; \ + __asm__ \ + ( \ + "lpm" "\n\t" \ + "mov %A0, r0" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "lpm" "\n\t" \ + "mov %B0, r0" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "lpm" "\n\t" \ + "mov %C0, r0" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "lpm" "\n\t" \ + "mov %D0, r0" "\n\t" \ + : "=r" (__result), "=z" (__addr16) \ + : "1" (__addr16) \ + : "r0" \ + ); \ + __result; \ +})) + +#define __LPM_float_enhanced__(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + float __result; \ + __asm__ \ + ( \ + "lpm %A0, Z+" "\n\t" \ + "lpm %B0, Z+" "\n\t" \ + "lpm %C0, Z+" "\n\t" \ + "lpm %D0, Z" "\n\t" \ + : "=r" (__result), "=z" (__addr16) \ + : "1" (__addr16) \ + ); \ + __result; \ +})) + +#if defined (__AVR_HAVE_LPMX__) +#define __LPM(addr) __LPM_enhanced__(addr) +#define __LPM_word(addr) __LPM_word_enhanced__(addr) +#define __LPM_dword(addr) __LPM_dword_enhanced__(addr) +#define __LPM_float(addr) __LPM_float_enhanced__(addr) +#else +#define __LPM(addr) __LPM_classic__(addr) +#define __LPM_word(addr) __LPM_word_classic__(addr) +#define __LPM_dword(addr) __LPM_dword_classic__(addr) +#define __LPM_float(addr) __LPM_float_classic__(addr) +#endif + +/** \ingroup avr_pgmspace + \def pgm_read_byte_near(address_short) + Read a byte from the program space with a 16-bit (near) address. + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short)) + +/** \ingroup avr_pgmspace + \def pgm_read_word_near(address_short) + Read a word from the program space with a 16-bit (near) address. + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_word_near(address_short) __LPM_word((uint16_t)(address_short)) + +/** \ingroup avr_pgmspace + \def pgm_read_dword_near(address_short) + Read a double word from the program space with a 16-bit (near) address. + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_dword_near(address_short) \ + __LPM_dword((uint16_t)(address_short)) + +/** \ingroup avr_pgmspace + \def pgm_read_float_near(address_short) + Read a float from the program space with a 16-bit (near) address. + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_float_near(address_short) \ + __LPM_float((uint16_t)(address_short)) + +#if defined(RAMPZ) || defined(__DOXYGEN__) + +/* Only for devices with more than 64K of program memory. + RAMPZ must be defined (see iom103.h, iom128.h). +*/ + +/* The classic functions are needed for ATmega103. */ + +#define __ELPM_classic__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "mov r31, %B1" "\n\t" \ + "mov r30, %A1" "\n\t" \ + "elpm" "\n\t" \ + "mov %0, r0" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r0", "r30", "r31" \ + ); \ + __result; \ +})) + +#define __ELPM_enhanced__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "movw r30, %1" "\n\t" \ + "elpm %0, Z+" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r30", "r31" \ + ); \ + __result; \ +})) + +#define __ELPM_word_classic__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "mov r31, %B1" "\n\t" \ + "mov r30, %A1" "\n\t" \ + "elpm" "\n\t" \ + "mov %A0, r0" "\n\t" \ + "in r0, %2" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "adc r0, __zero_reg__" "\n\t" \ + "out %2, r0" "\n\t" \ + "elpm" "\n\t" \ + "mov %B0, r0" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r0", "r30", "r31" \ + ); \ + __result; \ +})) + +#define __ELPM_word_enhanced__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "movw r30, %1" "\n\t" \ + "elpm %A0, Z+" "\n\t" \ + "elpm %B0, Z" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r30", "r31" \ + ); \ + __result; \ +})) + +#define __ELPM_dword_classic__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint32_t __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "mov r31, %B1" "\n\t" \ + "mov r30, %A1" "\n\t" \ + "elpm" "\n\t" \ + "mov %A0, r0" "\n\t" \ + "in r0, %2" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "adc r0, __zero_reg__" "\n\t" \ + "out %2, r0" "\n\t" \ + "elpm" "\n\t" \ + "mov %B0, r0" "\n\t" \ + "in r0, %2" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "adc r0, __zero_reg__" "\n\t" \ + "out %2, r0" "\n\t" \ + "elpm" "\n\t" \ + "mov %C0, r0" "\n\t" \ + "in r0, %2" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "adc r0, __zero_reg__" "\n\t" \ + "out %2, r0" "\n\t" \ + "elpm" "\n\t" \ + "mov %D0, r0" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r0", "r30", "r31" \ + ); \ + __result; \ +})) + +#define __ELPM_dword_enhanced__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint32_t __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "movw r30, %1" "\n\t" \ + "elpm %A0, Z+" "\n\t" \ + "elpm %B0, Z+" "\n\t" \ + "elpm %C0, Z+" "\n\t" \ + "elpm %D0, Z" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r30", "r31" \ + ); \ + __result; \ +})) + +#define __ELPM_float_classic__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + float __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "mov r31, %B1" "\n\t" \ + "mov r30, %A1" "\n\t" \ + "elpm" "\n\t" \ + "mov %A0, r0" "\n\t" \ + "in r0, %2" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "adc r0, __zero_reg__" "\n\t" \ + "out %2, r0" "\n\t" \ + "elpm" "\n\t" \ + "mov %B0, r0" "\n\t" \ + "in r0, %2" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "adc r0, __zero_reg__" "\n\t" \ + "out %2, r0" "\n\t" \ + "elpm" "\n\t" \ + "mov %C0, r0" "\n\t" \ + "in r0, %2" "\n\t" \ + "adiw r30, 1" "\n\t" \ + "adc r0, __zero_reg__" "\n\t" \ + "out %2, r0" "\n\t" \ + "elpm" "\n\t" \ + "mov %D0, r0" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r0", "r30", "r31" \ + ); \ + __result; \ +})) + +#define __ELPM_float_enhanced__(addr) \ +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + float __result; \ + __asm__ \ + ( \ + "out %2, %C1" "\n\t" \ + "movw r30, %1" "\n\t" \ + "elpm %A0, Z+" "\n\t" \ + "elpm %B0, Z+" "\n\t" \ + "elpm %C0, Z+" "\n\t" \ + "elpm %D0, Z" "\n\t" \ + : "=r" (__result) \ + : "r" (__addr32), \ + "I" (_SFR_IO_ADDR(RAMPZ)) \ + : "r30", "r31" \ + ); \ + __result; \ +})) + +#if defined (__AVR_HAVE_LPMX__) +#define __ELPM(addr) __ELPM_enhanced__(addr) +#define __ELPM_word(addr) __ELPM_word_enhanced__(addr) +#define __ELPM_dword(addr) __ELPM_dword_enhanced__(addr) +#define __ELPM_float(addr) __ELPM_float_enhanced__(addr) +#else +#define __ELPM(addr) __ELPM_classic__(addr) +#define __ELPM_word(addr) __ELPM_word_classic__(addr) +#define __ELPM_dword(addr) __ELPM_dword_classic__(addr) +#define __ELPM_float(addr) __ELPM_float_classic__(addr) +#endif + +/** \ingroup avr_pgmspace + \def pgm_read_byte_far(address_long) + Read a byte from the program space with a 32-bit (far) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_byte_far(address_long) __ELPM((uint32_t)(address_long)) + +/** \ingroup avr_pgmspace + \def pgm_read_word_far(address_long) + Read a word from the program space with a 32-bit (far) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_word_far(address_long) __ELPM_word((uint32_t)(address_long)) + +/** \ingroup avr_pgmspace + \def pgm_read_dword_far(address_long) + Read a double word from the program space with a 32-bit (far) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_dword_far(address_long) __ELPM_dword((uint32_t)(address_long)) + +/** \ingroup avr_pgmspace + \def pgm_read_float_far(address_long) + Read a float from the program space with a 32-bit (far) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_float_far(address_long) __ELPM_float((uint32_t)(address_long)) + +#endif /* RAMPZ or __DOXYGEN__ */ + +/** \ingroup avr_pgmspace + \def pgm_read_byte(address_short) + Read a byte from the program space with a 16-bit (near) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_byte(address_short) pgm_read_byte_near(address_short) + +/** \ingroup avr_pgmspace + \def pgm_read_word(address_short) + Read a word from the program space with a 16-bit (near) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_word(address_short) pgm_read_word_near(address_short) + +/** \ingroup avr_pgmspace + \def pgm_read_dword(address_short) + Read a double word from the program space with a 16-bit (near) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_dword(address_short) pgm_read_dword_near(address_short) + +/** \ingroup avr_pgmspace + \def pgm_read_float(address_short) + Read a float from the program space with a 16-bit (near) address. + + \note The address is a byte address. + The address is in the program space. */ + +#define pgm_read_float(address_short) pgm_read_float_near(address_short) + +/** \ingroup avr_pgmspace + \def PGM_P + + Used to declare a variable that is a pointer to a string in program + space. */ + +#ifndef PGM_P +#define PGM_P const prog_char * +#endif + +/** \ingroup avr_pgmspace + \def PGM_VOID_P + + Used to declare a generic pointer to an object in program space. */ + +#ifndef PGM_VOID_P +#define PGM_VOID_P const prog_void * +#endif + +extern PGM_VOID_P memchr_P(PGM_VOID_P, int __val, size_t __len) __ATTR_CONST__; +extern int memcmp_P(const void *, PGM_VOID_P, size_t) __ATTR_PURE__; +extern void *memcpy_P(void *, PGM_VOID_P, size_t); +extern void *memmem_P(const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__; +extern PGM_VOID_P memrchr_P(PGM_VOID_P, int __val, size_t __len) __ATTR_CONST__; +extern char *strcat_P(char *, PGM_P); +extern PGM_P strchr_P(PGM_P, int __val) __ATTR_CONST__; +extern PGM_P strchrnul_P(PGM_P, int __val) __ATTR_CONST__; +extern int strcmp_P(const char *, PGM_P) __ATTR_PURE__; +extern char *strcpy_P(char *, PGM_P); +extern int strcasecmp_P(const char *, PGM_P) __ATTR_PURE__; +extern char *strcasestr_P(const char *, PGM_P) __ATTR_PURE__; +extern size_t strcspn_P(const char *__s, PGM_P __reject) __ATTR_PURE__; +extern size_t strlcat_P (char *, PGM_P, size_t ); +extern size_t strlcpy_P (char *, PGM_P, size_t ); +extern size_t strlen_P(PGM_P) __ATTR_CONST__; /* program memory can't change */ +extern size_t strnlen_P(PGM_P, size_t) __ATTR_CONST__; /* program memory can't change */ +extern int strncmp_P(const char *, PGM_P, size_t) __ATTR_PURE__; +extern int strncasecmp_P(const char *, PGM_P, size_t) __ATTR_PURE__; +extern char *strncat_P(char *, PGM_P, size_t); +extern char *strncpy_P(char *, PGM_P, size_t); +extern char *strpbrk_P(const char *__s, PGM_P __accept) __ATTR_PURE__; +extern PGM_P strrchr_P(PGM_P, int __val) __ATTR_CONST__; +extern char *strsep_P(char **__sp, PGM_P __delim); +extern size_t strspn_P(const char *__s, PGM_P __accept) __ATTR_PURE__; +extern char *strstr_P(const char *, PGM_P) __ATTR_PURE__; + +#ifdef __cplusplus +} +#endif + +#endif /* __PGMSPACE_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/portpins.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/portpins.h new file mode 100644 index 0000000..d569662 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/portpins.h @@ -0,0 +1,373 @@ +/* Copyright (c) 2003 Theodore A. Roth + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: portpins.h,v 1.4 2006/03/10 16:15:38 aesok Exp $ */ + +#ifndef _AVR_PORTPINS_H_ +#define _AVR_PORTPINS_H_ 1 + +/* This file should only be included from , never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include instead of this file." +#endif + +/* Define Generic PORTn, DDn, and PINn values. */ + +/* Port Data Register (generic) */ +#define PORT7 7 +#define PORT6 6 +#define PORT5 5 +#define PORT4 4 +#define PORT3 3 +#define PORT2 2 +#define PORT1 1 +#define PORT0 0 + +/* Port Data Direction Register (generic) */ +#define DD7 7 +#define DD6 6 +#define DD5 5 +#define DD4 4 +#define DD3 3 +#define DD2 2 +#define DD1 1 +#define DD0 0 + +/* Port Input Pins (generic) */ +#define PIN7 7 +#define PIN6 6 +#define PIN5 5 +#define PIN4 4 +#define PIN3 3 +#define PIN2 2 +#define PIN1 1 +#define PIN0 0 + +/* Define PORTxn values for all possible port pins. */ + +/* PORT A */ + +#if defined(PA0) +# define PORTA0 PA0 +#endif +#if defined(PA1) +# define PORTA1 PA1 +#endif +#if defined(PA2) +# define PORTA2 PA2 +#endif +#if defined(PA3) +# define PORTA3 PA3 +#endif +#if defined(PA4) +# define PORTA4 PA4 +#endif +#if defined(PA5) +# define PORTA5 PA5 +#endif +#if defined(PA6) +# define PORTA6 PA6 +#endif +#if defined(PA7) +# define PORTA7 PA7 +#endif + +/* PORT B */ + +#if defined(PB0) +# define PORTB0 PB0 +#endif +#if defined(PB1) +# define PORTB1 PB1 +#endif +#if defined(PB2) +# define PORTB2 PB2 +#endif +#if defined(PB3) +# define PORTB3 PB3 +#endif +#if defined(PB4) +# define PORTB4 PB4 +#endif +#if defined(PB5) +# define PORTB5 PB5 +#endif +#if defined(PB6) +# define PORTB6 PB6 +#endif +#if defined(PB7) +# define PORTB7 PB7 +#endif + +/* PORT C */ + +#if defined(PC0) +# define PORTC0 PC0 +#endif +#if defined(PC1) +# define PORTC1 PC1 +#endif +#if defined(PC2) +# define PORTC2 PC2 +#endif +#if defined(PC3) +# define PORTC3 PC3 +#endif +#if defined(PC4) +# define PORTC4 PC4 +#endif +#if defined(PC5) +# define PORTC5 PC5 +#endif +#if defined(PC6) +# define PORTC6 PC6 +#endif +#if defined(PC7) +# define PORTC7 PC7 +#endif + +/* PORT D */ + +#if defined(PD0) +# define PORTD0 PD0 +#endif +#if defined(PD1) +# define PORTD1 PD1 +#endif +#if defined(PD2) +# define PORTD2 PD2 +#endif +#if defined(PD3) +# define PORTD3 PD3 +#endif +#if defined(PD4) +# define PORTD4 PD4 +#endif +#if defined(PD5) +# define PORTD5 PD5 +#endif +#if defined(PD6) +# define PORTD6 PD6 +#endif +#if defined(PD7) +# define PORTD7 PD7 +#endif + +/* PORT E */ + +#if defined(PE0) +# define PORTE0 PE0 +#endif +#if defined(PE1) +# define PORTE1 PE1 +#endif +#if defined(PE2) +# define PORTE2 PE2 +#endif +#if defined(PE3) +# define PORTE3 PE3 +#endif +#if defined(PE4) +# define PORTE4 PE4 +#endif +#if defined(PE5) +# define PORTE5 PE5 +#endif +#if defined(PE6) +# define PORTE6 PE6 +#endif +#if defined(PE7) +# define PORTE7 PE7 +#endif + +/* PORT F */ + +#if defined(PF0) +# define PORTF0 PF0 +#endif +#if defined(PF1) +# define PORTF1 PF1 +#endif +#if defined(PF2) +# define PORTF2 PF2 +#endif +#if defined(PF3) +# define PORTF3 PF3 +#endif +#if defined(PF4) +# define PORTF4 PF4 +#endif +#if defined(PF5) +# define PORTF5 PF5 +#endif +#if defined(PF6) +# define PORTF6 PF6 +#endif +#if defined(PF7) +# define PORTF7 PF7 +#endif + +/* PORT G */ + +#if defined(PG0) +# define PORTG0 PG0 +#endif +#if defined(PG1) +# define PORTG1 PG1 +#endif +#if defined(PG2) +# define PORTG2 PG2 +#endif +#if defined(PG3) +# define PORTG3 PG3 +#endif +#if defined(PG4) +# define PORTG4 PG4 +#endif +#if defined(PG5) +# define PORTG5 PG5 +#endif +#if defined(PG6) +# define PORTG6 PG6 +#endif +#if defined(PG7) +# define PORTG7 PG7 +#endif + +/* PORT H */ + +#if defined(PH0) +# define PORTH0 PH0 +#endif +#if defined(PH1) +# define PORTH1 PH1 +#endif +#if defined(PH2) +# define PORTH2 PH2 +#endif +#if defined(PH3) +# define PORTH3 PH3 +#endif +#if defined(PH4) +# define PORTH4 PH4 +#endif +#if defined(PH5) +# define PORTH5 PH5 +#endif +#if defined(PH6) +# define PORTH6 PH6 +#endif +#if defined(PH7) +# define PORTH7 PH7 +#endif + +/* PORT J */ + +#if defined(PJ0) +# define PORTJ0 PJ0 +#endif +#if defined(PJ1) +# define PORTJ1 PJ1 +#endif +#if defined(PJ2) +# define PORTJ2 PJ2 +#endif +#if defined(PJ3) +# define PORTJ3 PJ3 +#endif +#if defined(PJ4) +# define PORTJ4 PJ4 +#endif +#if defined(PJ5) +# define PORTJ5 PJ5 +#endif +#if defined(PJ6) +# define PORTJ6 PJ6 +#endif +#if defined(PJ7) +# define PORTJ7 PJ7 +#endif + +/* PORT K */ + +#if defined(PK0) +# define PORTK0 PK0 +#endif +#if defined(PK1) +# define PORTK1 PK1 +#endif +#if defined(PK2) +# define PORTK2 PK2 +#endif +#if defined(PK3) +# define PORTK3 PK3 +#endif +#if defined(PK4) +# define PORTK4 PK4 +#endif +#if defined(PK5) +# define PORTK5 PK5 +#endif +#if defined(PK6) +# define PORTK6 PK6 +#endif +#if defined(PK7) +# define PORTK7 PK7 +#endif + +/* PORT L */ + +#if defined(PL0) +# define PORTL0 PL0 +#endif +#if defined(PL1) +# define PORTL1 PL1 +#endif +#if defined(PL2) +# define PORTL2 PL2 +#endif +#if defined(PL3) +# define PORTL3 PL3 +#endif +#if defined(PL4) +# define PORTL4 PL4 +#endif +#if defined(PL5) +# define PORTL5 PL5 +#endif +#if defined(PL6) +# define PORTL6 PL6 +#endif +#if defined(PL7) +# define PORTL7 PL7 +#endif + +#endif /* _AVR_PORTPINS_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/power.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/power.h new file mode 100644 index 0000000..621af68 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/power.h @@ -0,0 +1,1260 @@ +/* Copyright (c) 2006, 2007, 2008 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: power.h,v 1.11.2.11 2008/11/03 04:13:18 arcanum Exp $ */ + +#ifndef _AVR_POWER_H_ +#define _AVR_POWER_H_ 1 + +#include +#include + + +/** \file */ +/** \defgroup avr_power : Power Reduction Management + +\code #include \endcode + +Many AVRs contain a Power Reduction Register (PRR) or Registers (PRRx) that +allow you to reduce power consumption by disabling or enabling various on-board +peripherals as needed. + +There are many macros in this header file that provide an easy interface +to enable or disable on-board peripherals to reduce power. See the table below. + +\note Not all AVR devices have a Power Reduction Register (for example +the ATmega128). On those devices without a Power Reduction Register, these +macros are not available. + +\note Not all AVR devices contain the same peripherals (for example, the LCD +interface), or they will be named differently (for example, USART and +USART0). Please consult your device's datasheet, or the header file, to +find out which macros are applicable to your device. + +*/ + + +/** \addtogroup avr_power + +\anchor avr_powermacros + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Power MacroDescriptionApplicable for device
power_adc_enable()Enable the Analog to Digital Converter module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_adc_disable()Disable the Analog to Digital Converter module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_lcd_enable()Enable the LCD module.ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490
power_lcd_disable().Disable the LCD module.ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490
power_psc0_enable()Enable the Power Stage Controller 0 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc0_disable()Disable the Power Stage Controller 0 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc1_enable()Enable the Power Stage Controller 1 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc1_disable()Disable the Power Stage Controller 1 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc2_enable()Enable the Power Stage Controller 2 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_psc2_disable()Disable the Power Stage Controller 2 module.AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_spi_enable()Enable the Serial Peripheral Interface module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_spi_disable()Disable the Serial Peripheral Interface module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_timer0_enable()Enable the Timer 0 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM216, AT90PWM316, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_timer0_disable()Disable the Timer 0 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_timer1_enable()Enable the Timer 1 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_timer1_disable()Disable the Timer 1 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_timer2_enable()Enable the Timer 2 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_timer2_disable()Disable the Timer 2 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_timer3_enable()Enable the Timer 3 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_timer3_disable()Disable the Timer 3 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_timer4_enable()Enable the Timer 4 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_timer4_disable()Disable the Timer 4 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_timer5_enable()Enable the Timer 5 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_timer5_disable()Disable the Timer 5 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_twi_enable()Enable the Two Wire Interface module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168
power_twi_disable()Disable the Two Wire Interface module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168
power_usart_enable()Enable the USART module.AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_usart_disable()Disable the USART module.AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B
power_usart0_enable()Enable the USART 0 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_usart0_disable()Disable the USART 0 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168
power_usart1_enable()Enable the USART 1 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P
power_usart1_disable()Disable the USART 1 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P
power_usart2_enable()Enable the USART 2 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usart2_disable()Disable the USART 2 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usart3_enable()Enable the USART 3 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usart3_disable()Disable the USART 3 module.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
power_usb_enable()Enable the USB module.AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_usb_disable()Disable the USB module.AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
power_usi_enable()Enable the Universal Serial Interface module.ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_usi_disable()Disable the Universal Serial Interface module.ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_vadc_enable()Enable the Voltage ADC module.ATmega406
power_vadc_disable()Disable the Voltage ADC module.ATmega406
power_all_enable()Enable all modules.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
power_all_disable()Disable all modules.ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+
+
+ +@} */ + + +#if defined(__AVR_ATxmega64a1) \ +|| defined(__AVR_ATxmega64a3) \ +|| defined(__AVR_ATxmega128a1__) \ +|| defined(__AVR_ATxmega128a3__) \ +|| defined(__AVR_ATxmega256a3__) \ +|| defined(__AVR_ATxmega256a3b__) + +/* +#define power_aes_enable() (PR_PR &= (uint8_t)~(PR_AES_bm)) +#define power_aes_disable() (PR_PR |= (uint8_t)PR_AES_bm) +*/ + +#define power_ebi_enable() (PR_PR &= (uint8_t)~(PR_EBI_bm)) +#define power_ebi_disable() (PR_PR |= (uint8_t)PR_EBI_bm) + +#define power_rtc_enable() (PR_PR &= (uint8_t)~(PR_RTC_bm)) +#define power_rtc_disable() (PR_PR |= (uint8_t)PR_RTC_bm) + +#define power_evsys_enable() (PR_PR &= (uint8_t)~(PR_EVSYS_bm)) +#define power_evsys_disable() (PR_PR |= (uint8_t)PR_EVSYS_bm) + +#define power_dma_enable() (PR_PR &= (uint8_t)~(PR_DMA_bm)) +#define power_dma_disable() (PR_PR |= (uint8_t)PR_DMA_bm) + +#define power_daca_enable() (PR_PRPA &= (uint8_t)~(PR_DAC_bm)) +#define power_daca_disable() (PR_PRPA |= (uint8_t)PR_DAC_bm) +#define power_dacb_enable() (PR_PRPB &= (uint8_t)~(PR_DAC_bm)) +#define power_dacb_disable() (PR_PRPB |= (uint8_t)PR_DAC_bm) + +#define power_adca_enable() (PR_PRPA &= (uint8_t)~(PR_ADC_bm)) +#define power_adca_disable() (PR_PRPA |= (uint8_t)PR_ADC_bm) +#define power_adcb_enable() (PR_PRPB &= (uint8_t)~(PR_ADC_bm)) +#define power_adcb_disable() (PR_PRPB |= (uint8_t)PR_ADC_bm) + +#define power_aca_enable() (PR_PRPA &= (uint8_t)~(PR_AC_bm)) +#define power_aca_disable() (PR_PRPA |= (uint8_t)PR_AC_bm) +#define power_acb_enable() (PR_PRPB &= (uint8_t)~(PR_AC_bm)) +#define power_acb_disable() (PR_PRPB |= (uint8_t)PR_AC_bm) + +#define power_twic_enable() (PR_PRPC &= (uint8_t)~(PR_TWI_bm)) +#define power_twic_disable() (PR_PRPC |= (uint8_t)PR_TWI_bm) +#define power_twid_enable() (PR_PRPD &= (uint8_t)~(PR_TWI_bm)) +#define power_twid_disable() (PR_PRPD |= (uint8_t)PR_TWI_bm) +#define power_twie_enable() (PR_PRPE &= (uint8_t)~(PR_TWI_bm)) +#define power_twie_disable() (PR_PRPE |= (uint8_t)PR_TWI_bm) +#define power_twif_enable() (PR_PRPF &= (uint8_t)~(PR_TWI_bm)) +#define power_twif_disable() (PR_PRPF |= (uint8_t)PR_TWI_bm) + +#define power_usartc1_enable() (PR_PRPC &= (uint8_t)~(PR_USART1_bm)) +#define power_usartc1_disable() (PR_PRPC |= (uint8_t)PR_USART1_bm) +#define power_usartd1_enable() (PR_PRPD &= (uint8_t)~(PR_USART1_bm)) +#define power_usartd1_disable() (PR_PRPD |= (uint8_t)PR_USART1_bm) +#define power_usarte1_enable() (PR_PRPE &= (uint8_t)~(PR_USART1_bm)) +#define power_usarte1_disable() (PR_PRPE |= (uint8_t)PR_USART1_bm) +#define power_usartf1_enable() (PR_PRPF &= (uint8_t)~(PR_USART1_bm)) +#define power_usartf1_disable() (PR_PRPF |= (uint8_t)PR_USART1_bm) + +#define power_usartc0_enable() (PR_PRPC &= (uint8_t)~(PR_USART0_bm)) +#define power_usartc0_disable() (PR_PRPC |= (uint8_t)PR_USART0_bm) +#define power_usartd0_enable() (PR_PRPD &= (uint8_t)~(PR_USART0_bm)) +#define power_usartd0_disable() (PR_PRPD |= (uint8_t)PR_USART0_bm) +#define power_usarte0_enable() (PR_PRPE &= (uint8_t)~(PR_USART0_bm)) +#define power_usarte0_disable() (PR_PRPE |= (uint8_t)PR_USART0_bm) +#define power_usartf0_enable() (PR_PRPF &= (uint8_t)~(PR_USART0_bm)) +#define power_usartf0_disable() (PR_PRPF |= (uint8_t)PR_USART0_bm) + +#define power_spic_enable() (PR_PRPC &= (uint8_t)~(PR_SPI_bm)) +#define power_spic_disable() (PR_PRPC |= (uint8_t)PR_SPI_bm) +#define power_spid_enable() (PR_PRPD &= (uint8_t)~(PR_SPI_bm)) +#define power_spid_disable() (PR_PRPD |= (uint8_t)PR_SPI_bm) +#define power_spie_enable() (PR_PRPE &= (uint8_t)~(PR_SPI_bm)) +#define power_spie_disable() (PR_PRPE |= (uint8_t)PR_SPI_bm) +#define power_spif_enable() (PR_PRPF &= (uint8_t)~(PR_SPI_bm)) +#define power_spif_disable() (PR_PRPF |= (uint8_t)PR_SPI_bm) + +#define power_hiresc_enable() (PR_PRPC &= (uint8_t)~(PR_HIRES_bm)) +#define power_hiresc_disable() (PR_PRPC |= (uint8_t)PR_HIRES_bm) +#define power_hiresd_enable() (PR_PRPD &= (uint8_t)~(PR_HIRES_bm)) +#define power_hiresd_disable() (PR_PRPD |= (uint8_t)PR_HIRES_bm) +#define power_hirese_enable() (PR_PRPE &= (uint8_t)~(PR_HIRES_bm)) +#define power_hirese_disable() (PR_PRPE |= (uint8_t)PR_HIRES_bm) +#define power_hiresf_enable() (PR_PRPF &= (uint8_t)~(PR_HIRES_bm)) +#define power_hiresf_disable() (PR_PRPF |= (uint8_t)PR_HIRES_bm) + +#define power_tc1c_enable() (PR_PRPC &= (uint8_t)~(PR_TC1_bm)) +#define power_tc1c_disable() (PR_PRPC |= (uint8_t)PR_TC1_bm) +#define power_tc1d_enable() (PR_PRPD &= (uint8_t)~(PR_TC1_bm)) +#define power_tc1d_disable() (PR_PRPD |= (uint8_t)PR_TC1_bm) +#define power_tc1e_enable() (PR_PRPE &= (uint8_t)~(PR_TC1_bm)) +#define power_tc1e_disable() (PR_PRPE |= (uint8_t)PR_TC1_bm) +#define power_tc1f_enable() (PR_PRPF &= (uint8_t)~(PR_TC1_bm)) +#define power_tc1f_disable() (PR_PRPF |= (uint8_t)PR_TC1_bm) + +#define power_tc0c_enable() (PR_PRPC &= (uint8_t)~(PR_TC0_bm)) +#define power_tc0c_disable() (PR_PRPC |= (uint8_t)PR_TC0_bm) +#define power_tc0d_enable() (PR_PRPD &= (uint8_t)~(PR_TC0_bm)) +#define power_tc0d_disable() (PR_PRPD |= (uint8_t)PR_TC0_bm) +#define power_tc0e_enable() (PR_PRPE &= (uint8_t)~(PR_TC0_bm)) +#define power_tc0e_disable() (PR_PRPE |= (uint8_t)PR_TC0_bm) +#define power_tc0f_enable() (PR_PRPF &= (uint8_t)~(PR_TC0_bm)) +#define power_tc0f_disable() (PR_PRPF |= (uint8_t)PR_TC0_bm) + +#define power_all_enable() \ +do { \ + /* PR_PR &= (uint8_t)~(PR_AES_bm|PR_EBI_bm|PR_RTC_bm|PR_EVSYS_bm|PR_DMA_bm); */ \ + PR_PR &= (uint8_t)~(PR_EBI_bm|PR_RTC_bm|PR_EVSYS_bm|PR_DMA_bm); \ + PR_PRPA &= (uint8_t)~(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \ + PR_PRPB &= (uint8_t)~(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \ + PR_PRPC &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ + PR_PRPD &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ + PR_PRPE &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ + PR_PRPF &= (uint8_t)~(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ +} while(0) + + +#define power_all_disable() \ +do { \ + /* PM_PR_PR |= (uint8_t)(PR_AES_bm|PR_EBI_bm|PR_RTC_bm|PR_EVSYS_bm|PR_DMA_bm); */ \ + PR_PR |= (uint8_t)(PR_EBI_bm|PR_RTC_bm|PR_EVSYS_bm|PR_DMA_bm); \ + PR_PRPA |= (uint8_t)(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \ + PR_PRPB |= (uint8_t)(PR_DAC_bm|PR_ADC_bm|PR_AC_bm); \ + PR_PRPC |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ + PR_PRPD |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ + PR_PRPE |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ + PR_PRPF |= (uint8_t)(PR_TWI_bm|PR_USART1_bm|PR_USART0_bm|PR_SPI_bm|PR_HIRES_bm|PR_TC1_bm|PR_TC0_bm); \ +} while(0) + + +#elif defined(__AVR_ATmega640__) \ +|| defined(__AVR_ATmega1280__) \ +|| defined(__AVR_ATmega1281__) \ +|| defined(__AVR_ATmega2560__) \ +|| defined(__AVR_ATmega2561__) + +#define power_adc_enable() (PRR0 &= (uint8_t)~(1 << PRADC)) +#define power_adc_disable() (PRR0 |= (uint8_t)(1 << PRADC)) + +#define power_spi_enable() (PRR0 &= (uint8_t)~(1 << PRSPI)) +#define power_spi_disable() (PRR0 |= (uint8_t)(1 << PRSPI)) + +#define power_twi_enable() (PRR0 &= (uint8_t)~(1 << PRTWI)) +#define power_twi_disable() (PRR0 |= (uint8_t)(1 << PRTWI)) + +#define power_timer0_enable() (PRR0 &= (uint8_t)~(1 << PRTIM0)) +#define power_timer0_disable() (PRR0 |= (uint8_t)(1 << PRTIM0)) + +#define power_timer1_enable() (PRR0 &= (uint8_t)~(1 << PRTIM1)) +#define power_timer1_disable() (PRR0 |= (uint8_t)(1 << PRTIM1)) + +#define power_timer2_enable() (PRR0 &= (uint8_t)~(1 << PRTIM2)) +#define power_timer2_disable() (PRR0 |= (uint8_t)(1 << PRTIM2)) + +#define power_timer3_enable() (PRR1 &= (uint8_t)~(1 << PRTIM3)) +#define power_timer3_disable() (PRR1 |= (uint8_t)(1 << PRTIM3)) + +#define power_timer4_enable() (PRR1 &= (uint8_t)~(1 << PRTIM4)) +#define power_timer4_disable() (PRR1 |= (uint8_t)(1 << PRTIM4)) + +#define power_timer5_enable() (PRR1 &= (uint8_t)~(1 << PRTIM5)) +#define power_timer5_disable() (PRR1 |= (uint8_t)(1 << PRTIM5)) + +#define power_usart0_enable() (PRR0 &= (uint8_t)~(1 << PRUSART0)) +#define power_usart0_disable() (PRR0 |= (uint8_t)(1 << PRUSART0)) + +#define power_usart1_enable() (PRR1 &= (uint8_t)~(1 << PRUSART1)) +#define power_usart1_disable() (PRR1 |= (uint8_t)(1 << PRUSART1)) + +#define power_usart2_enable() (PRR1 &= (uint8_t)~(1 << PRUSART2)) +#define power_usart2_disable() (PRR1 |= (uint8_t)(1 << PRUSART2)) + +#define power_usart3_enable() (PRR1 &= (uint8_t)~(1 << PRUSART3)) +#define power_usart3_disable() (PRR1 |= (uint8_t)(1 << PRUSART3)) + +#define power_all_enable() \ +do{ \ + PRR0 &= (uint8_t)~((1< + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* avr/sfr_defs.h - macros for accessing AVR special function registers */ + +/* $Id: sfr_defs.h,v 1.18.2.1 2008/04/28 22:05:42 arcanum Exp $ */ + +#ifndef _AVR_SFR_DEFS_H_ +#define _AVR_SFR_DEFS_H_ 1 + +/** \defgroup avr_sfr_notes Additional notes from + \ingroup avr_sfr + + The \c file is included by all of the \c + files, which use macros defined here to make the special function register + definitions look like C variables or simple constants, depending on the + _SFR_ASM_COMPAT define. Some examples from \c to + show how to define such macros: + +\code +#define PORTA _SFR_IO8(0x02) +#define EEAR _SFR_IO16(0x21) +#define UDR0 _SFR_MEM8(0xC6) +#define TCNT3 _SFR_MEM16(0x94) +#define CANIDT _SFR_MEM32(0xF0) +\endcode + + If \c _SFR_ASM_COMPAT is not defined, C programs can use names like + PORTA directly in C expressions (also on the left side of + assignment operators) and GCC will do the right thing (use short I/O + instructions if possible). The \c __SFR_OFFSET definition is not used in + any way in this case. + + Define \c _SFR_ASM_COMPAT as 1 to make these names work as simple constants + (addresses of the I/O registers). This is necessary when included in + preprocessed assembler (*.S) source files, so it is done automatically if + \c __ASSEMBLER__ is defined. By default, all addresses are defined as if + they were memory addresses (used in \c lds/sts instructions). To use these + addresses in \c in/out instructions, you must subtract 0x20 from them. + + For more backwards compatibility, insert the following at the start of your + old assembler source file: + +\code +#define __SFR_OFFSET 0 +\endcode + + This automatically subtracts 0x20 from I/O space addresses, but it's a + hack, so it is recommended to change your source: wrap such addresses in + macros defined here, as shown below. After this is done, the + __SFR_OFFSET definition is no longer necessary and can be removed. + + Real example - this code could be used in a boot loader that is portable + between devices with \c SPMCR at different addresses. + +\verbatim +: #define SPMCR _SFR_IO8(0x37) +: #define SPMCR _SFR_MEM8(0x68) +\endverbatim + +\code +#if _SFR_IO_REG_P(SPMCR) + out _SFR_IO_ADDR(SPMCR), r24 +#else + sts _SFR_MEM_ADDR(SPMCR), r24 +#endif +\endcode + + You can use the \c in/out/cbi/sbi/sbic/sbis instructions, without the + _SFR_IO_REG_P test, if you know that the register is in the I/O + space (as with \c SREG, for example). If it isn't, the assembler will + complain (I/O address out of range 0...0x3f), so this should be fairly + safe. + + If you do not define \c __SFR_OFFSET (so it will be 0x20 by default), all + special register addresses are defined as memory addresses (so \c SREG is + 0x5f), and (if code size and speed are not important, and you don't like + the ugly \#if above) you can always use lds/sts to access them. But, this + will not work if __SFR_OFFSET != 0x20, so use a different macro + (defined only if __SFR_OFFSET == 0x20) for safety: + +\code + sts _SFR_ADDR(SPMCR), r24 +\endcode + + In C programs, all 3 combinations of \c _SFR_ASM_COMPAT and + __SFR_OFFSET are supported - the \c _SFR_ADDR(SPMCR) macro can be + used to get the address of the \c SPMCR register (0x57 or 0x68 depending on + device). */ + +#ifdef __ASSEMBLER__ +#define _SFR_ASM_COMPAT 1 +#elif !defined(_SFR_ASM_COMPAT) +#define _SFR_ASM_COMPAT 0 +#endif + +#ifndef __ASSEMBLER__ +/* These only work in C programs. */ +#include + +#define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr)) +#define _MMIO_WORD(mem_addr) (*(volatile uint16_t *)(mem_addr)) +#define _MMIO_DWORD(mem_addr) (*(volatile uint32_t *)(mem_addr)) +#endif + +#if _SFR_ASM_COMPAT + +#ifndef __SFR_OFFSET +/* Define as 0 before including this file for compatibility with old asm + sources that don't subtract __SFR_OFFSET from symbolic I/O addresses. */ +# if __AVR_ARCH__ >= 100 +# define __SFR_OFFSET 0x00 +# else +# define __SFR_OFFSET 0x20 +# endif +#endif + +#if (__SFR_OFFSET != 0) && (__SFR_OFFSET != 0x20) +#error "__SFR_OFFSET must be 0 or 0x20" +#endif + +#define _SFR_MEM8(mem_addr) (mem_addr) +#define _SFR_MEM16(mem_addr) (mem_addr) +#define _SFR_MEM32(mem_addr) (mem_addr) +#define _SFR_IO8(io_addr) ((io_addr) + __SFR_OFFSET) +#define _SFR_IO16(io_addr) ((io_addr) + __SFR_OFFSET) + +#define _SFR_IO_ADDR(sfr) ((sfr) - __SFR_OFFSET) +#define _SFR_MEM_ADDR(sfr) (sfr) +#define _SFR_IO_REG_P(sfr) ((sfr) < 0x40 + __SFR_OFFSET) + +#if (__SFR_OFFSET == 0x20) +/* No need to use ?: operator, so works in assembler too. */ +#define _SFR_ADDR(sfr) _SFR_MEM_ADDR(sfr) +#elif !defined(__ASSEMBLER__) +#define _SFR_ADDR(sfr) (_SFR_IO_REG_P(sfr) ? (_SFR_IO_ADDR(sfr) + 0x20) : _SFR_MEM_ADDR(sfr)) +#endif + +#else /* !_SFR_ASM_COMPAT */ + +#ifndef __SFR_OFFSET +# if __AVR_ARCH__ >= 100 +# define __SFR_OFFSET 0x00 +# else +# define __SFR_OFFSET 0x20 +# endif +#endif + +#define _SFR_MEM8(mem_addr) _MMIO_BYTE(mem_addr) +#define _SFR_MEM16(mem_addr) _MMIO_WORD(mem_addr) +#define _SFR_MEM32(mem_addr) _MMIO_DWORD(mem_addr) +#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + __SFR_OFFSET) +#define _SFR_IO16(io_addr) _MMIO_WORD((io_addr) + __SFR_OFFSET) + +#define _SFR_MEM_ADDR(sfr) ((uint16_t) &(sfr)) +#define _SFR_IO_ADDR(sfr) (_SFR_MEM_ADDR(sfr) - __SFR_OFFSET) +#define _SFR_IO_REG_P(sfr) (_SFR_MEM_ADDR(sfr) < 0x40 + __SFR_OFFSET) + +#define _SFR_ADDR(sfr) _SFR_MEM_ADDR(sfr) + +#endif /* !_SFR_ASM_COMPAT */ + +#define _SFR_BYTE(sfr) _MMIO_BYTE(_SFR_ADDR(sfr)) +#define _SFR_WORD(sfr) _MMIO_WORD(_SFR_ADDR(sfr)) +#define _SFR_DWORD(sfr) _MMIO_DWORD(_SFR_ADDR(sfr)) + +/** \name Bit manipulation */ + +/*@{*/ +/** \def _BV + \ingroup avr_sfr + + \code #include \endcode + + Converts a bit number into a byte value. + + \note The bit shift is performed by the compiler which then inserts the + result into the code. Thus, there is no run-time overhead when using + _BV(). */ + +#define _BV(bit) (1 << (bit)) + +/*@}*/ + +#ifndef _VECTOR +#define _VECTOR(N) __vector_ ## N +#endif + +#ifndef __ASSEMBLER__ + + +/** \name IO register bit manipulation */ + +/*@{*/ + + + +/** \def bit_is_set + \ingroup avr_sfr + + \code #include \endcode + + Test whether bit \c bit in IO register \c sfr is set. + This will return a 0 if the bit is clear, and non-zero + if the bit is set. */ + +#define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit)) + +/** \def bit_is_clear + \ingroup avr_sfr + + \code #include \endcode + + Test whether bit \c bit in IO register \c sfr is clear. + This will return non-zero if the bit is clear, and a 0 + if the bit is set. */ + +#define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit))) + +/** \def loop_until_bit_is_set + \ingroup avr_sfr + + \code #include \endcode + + Wait until bit \c bit in IO register \c sfr is set. */ + +#define loop_until_bit_is_set(sfr, bit) do { } while (bit_is_clear(sfr, bit)) + +/** \def loop_until_bit_is_clear + \ingroup avr_sfr + + \code #include \endcode + + Wait until bit \c bit in IO register \c sfr is clear. */ + +#define loop_until_bit_is_clear(sfr, bit) do { } while (bit_is_set(sfr, bit)) + +/*@}*/ + +#endif /* !__ASSEMBLER__ */ + +#endif /* _SFR_DEFS_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/signal.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/signal.h new file mode 100644 index 0000000..a7a7bcf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/signal.h @@ -0,0 +1,39 @@ +/* Copyright (c) 2002,2005,2006 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: signal.h,v 1.12 2006/02/02 19:37:16 aesok Exp $ */ + +#ifndef _AVR_SIGNAL_H_ +#define _AVR_SIGNAL_H_ + +#warning "This header file is obsolete. Use ." +#include + +#endif /* _AVR_SIGNAL_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/sleep.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/sleep.h new file mode 100644 index 0000000..06a96ed --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/sleep.h @@ -0,0 +1,456 @@ +/* Copyright (c) 2002, 2004 Theodore A. Roth + Copyright (c) 2004, 2007, 2008 Eric B. Weddington + Copyright (c) 2005, 2006, 2007 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: sleep.h,v 1.17.2.10 2008/11/06 14:55:34 arcanum Exp $ */ + +#ifndef _AVR_SLEEP_H_ +#define _AVR_SLEEP_H_ 1 + +#include +#include + + +/** \file */ + +/** \defgroup avr_sleep : Power Management and Sleep Modes + + \code #include \endcode + + Use of the \c SLEEP instruction can allow an application to reduce its + power comsumption considerably. AVR devices can be put into different + sleep modes. Refer to the datasheet for the details relating to the device + you are using. + + There are several macros provided in this header file to actually + put the device into sleep mode. The simplest way is to optionally + set the desired sleep mode using \c set_sleep_mode() (it usually + defaults to idle mode where the CPU is put on sleep but all + peripheral clocks are still running), and then call + \c sleep_mode(). This macro automatically sets the sleep enable bit, goes + to sleep, and clears the sleep enable bit. + + Example: + \code + #include + + ... + set_sleep_mode(); + sleep_mode(); + \endcode + + Note that unless your purpose is to completely lock the CPU (until a + hardware reset), interrupts need to be enabled before going to sleep. + + As the \c sleep_mode() macro might cause race conditions in some + situations, the individual steps of manipulating the sleep enable + (SE) bit, and actually issuing the \c SLEEP instruction, are provided + in the macros \c sleep_enable(), \c sleep_disable(), and + \c sleep_cpu(). This also allows for test-and-sleep scenarios that + take care of not missing the interrupt that will awake the device + from sleep. + + Example: + \code + #include + #include + + ... + set_sleep_mode(); + cli(); + if (some_condition) + { + sleep_enable(); + sei(); + sleep_cpu(); + sleep_disable(); + } + sei(); + \endcode + + This sequence ensures an atomic test of \c some_condition with + interrupts being disabled. If the condition is met, sleep mode + will be prepared, and the \c SLEEP instruction will be scheduled + immediately after an \c SEI instruction. As the intruction right + after the \c SEI is guaranteed to be executed before an interrupt + could trigger, it is sure the device will really be put to sleep. +*/ + + +/* Define an internal sleep control register and an internal sleep enable bit mask. */ +#if defined(SLEEP_CTRL) + + /* XMEGA devices */ + #define _SLEEP_CONTROL_REG SLEEP_CTRL + #define _SLEEP_ENABLE_MASK SLEEP_SEN_bm + +#elif defined(SMCR) + + #define _SLEEP_CONTROL_REG SMCR + #define _SLEEP_ENABLE_MASK _BV(SE) + +#elif defined(__AVR_AT94K__) + + #define _SLEEP_CONTROL_REG MCUR + #define _SLEEP_ENABLE_MASK _BV(SE) + +#else + + #define _SLEEP_CONTROL_REG MCUCR + #define _SLEEP_ENABLE_MASK _BV(SE) + +#endif + + +/* Define set_sleep_mode() and sleep mode values per device. */ +#if defined(__AVR_ATmega161__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_PWR_DOWN 1 + #define SLEEP_MODE_PWR_SAVE 2 + + #define set_sleep_mode(mode) \ + do { \ + MCUCR = ((MCUCR & ~_BV(SM1)) | ((mode) == SLEEP_MODE_PWR_DOWN || (mode) == SLEEP_MODE_PWR_SAVE ? _BV(SM1) : 0)); \ + EMCUCR = ((EMCUCR & ~_BV(SM0)) | ((mode) == SLEEP_MODE_PWR_SAVE ? _BV(SM0) : 0)); \ + } while(0) + + +#elif defined(__AVR_ATmega162__) \ +|| defined(__AVR_ATmega8515__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_PWR_DOWN 1 + #define SLEEP_MODE_PWR_SAVE 2 + #define SLEEP_MODE_ADC 3 + #define SLEEP_MODE_STANDBY 4 + #define SLEEP_MODE_EXT_STANDBY 5 + + #define set_sleep_mode(mode) \ + do { \ + MCUCR = ((MCUCR & ~_BV(SM1)) | ((mode) == SLEEP_MODE_IDLE ? 0 : _BV(SM1))); \ + MCUCSR = ((MCUCSR & ~_BV(SM2)) | ((mode) == SLEEP_MODE_STANDBY || (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM2) : 0)); \ + EMCUCR = ((EMCUCR & ~_BV(SM0)) | ((mode) == SLEEP_MODE_PWR_SAVE || (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM0) : 0)); \ + } while(0) + +#elif defined(__AVR_AT90S2313__) \ +|| defined(__AVR_AT90S2323__) \ +|| defined(__AVR_AT90S2333__) \ +|| defined(__AVR_AT90S2343__) \ +|| defined(__AVR_AT43USB320__) \ +|| defined(__AVR_AT43USB355__) \ +|| defined(__AVR_AT90S4414__) \ +|| defined(__AVR_AT90S4433__) \ +|| defined(__AVR_AT90S8515__) \ +|| defined(__AVR_ATtiny22__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_PWR_DOWN _BV(SM) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~__BV(SM)) | (mode)); \ + } while(0) + +#elif defined(__AVR_ATtiny167__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_ADC _BV(SM0) + #define SLEEP_MODE_PWR_DOWN _BV(SM1) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + } while(0) + +#elif defined(__AVR_AT90S4434__) \ +|| defined(__AVR_AT76C711__) \ +|| defined(__AVR_AT90S8535__) \ +|| defined(__AVR_ATmega103__) \ +|| defined(__AVR_ATmega161__) \ +|| defined(__AVR_ATmega163__) \ +|| defined(__AVR_ATtiny13__) \ +|| defined(__AVR_ATtiny13A__) \ +|| defined(__AVR_ATtiny15__) \ +|| defined(__AVR_ATtiny24__) \ +|| defined(__AVR_ATtiny44__) \ +|| defined(__AVR_ATtiny84__) \ +|| defined(__AVR_ATtiny25__) \ +|| defined(__AVR_ATtiny45__) \ +|| defined(__AVR_ATtiny48__) \ +|| defined(__AVR_ATtiny85__) \ +|| defined(__AVR_ATtiny261__) \ +|| defined(__AVR_ATtiny461__) \ +|| defined(__AVR_ATtiny861__) \ +|| defined(__AVR_ATtiny88__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_ADC _BV(SM0) + #define SLEEP_MODE_PWR_DOWN _BV(SM1) + #define SLEEP_MODE_PWR_SAVE (_BV(SM0) | _BV(SM1)) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + } while(0) + +#elif defined(__AVR_ATtiny2313__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_PWR_DOWN (_BV(SM0) | _BV(SM1)) + #define SLEEP_MODE_STANDBY _BV(SM1) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + } while(0) + +#elif defined(__AVR_AT94K__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_PWR_DOWN _BV(SM1) + #define SLEEP_MODE_PWR_SAVE (_BV(SM0) | _BV(SM1)) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + } while(0) + +#elif defined(__AVR_ATtiny26__) \ +|| defined(__AVR_ATtiny43U__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_ADC _BV(SM0) + #define SLEEP_MODE_PWR_DOWN _BV(SM1) + #define SLEEP_MODE_STANDBY (_BV(SM0) | _BV(SM1)) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \ + } while(0) + +#elif defined(__AVR_AT90PWM216__) \ +|| defined(__AVR_AT90PWM316__) + + #define SLEEP_MODE_IDLE 0 + #define SLEEP_MODE_ADC _BV(SM0) + #define SLEEP_MODE_PWR_DOWN _BV(SM1) + #define SLEEP_MODE_STANDBY (_BV(SM1) | _BV(SM2)) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ + } while(0) + +#elif \ +defined(__AVR_AT90PWM1__) \ +|| defined(__AVR_AT90PWM2__) \ +|| defined(__AVR_AT90PWM2B__) \ +|| defined(__AVR_AT90PWM3__) \ +|| defined(__AVR_AT90PWM3B__) \ +|| defined(__AVR_ATmega128__) \ +|| defined(__AVR_ATmega16__) \ +|| defined(__AVR_ATmega162__) \ +|| defined(__AVR_ATmega165__) \ +|| defined(__AVR_ATmega165P__) \ +|| defined(__AVR_ATmega169__) \ +|| defined(__AVR_ATmega169P__) \ +|| defined(__AVR_ATmega32__) \ +|| defined(__AVR_ATmega323__) \ +|| defined(__AVR_ATmega325__) \ +|| defined(__AVR_ATmega3250__) \ +|| defined(__AVR_ATmega329__) \ +|| defined(__AVR_ATmega3290__) \ +|| defined(__AVR_ATmega3290P__) \ +|| defined(__AVR_ATmega406__) \ +|| defined(__AVR_ATmega64__) \ +|| defined(__AVR_ATmega645__) \ +|| defined(__AVR_ATmega6450__) \ +|| defined(__AVR_ATmega649__) \ +|| defined(__AVR_ATmega6490__) \ +|| defined(__AVR_ATmega8__) \ +|| defined(__AVR_ATmega8515__) \ +|| defined(__AVR_ATmega8535__) \ +|| defined(__AVR_AT90CAN128__) \ +|| defined(__AVR_AT90CAN32__) \ +|| defined(__AVR_AT90CAN64__) \ +|| defined(__AVR_ATmega1280__) \ +|| defined(__AVR_ATmega1281__) \ +|| defined(__AVR_ATmega1284P__) \ +|| defined(__AVR_ATmega2560__) \ +|| defined(__AVR_ATmega2561__) \ +|| defined(__AVR_ATmega640__) \ +|| defined(__AVR_ATmega164P__) \ +|| defined(__AVR_ATmega324P__) \ +|| defined(__AVR_ATmega644__) \ +|| defined(__AVR_ATmega644P__) \ +|| defined(__AVR_ATmega16HVA__) \ +|| defined(__AVR_ATmega8HVA__) \ +|| defined(__AVR_ATmega32HVB__) \ +|| defined(__AVR_AT90USB162__) \ +|| defined(__AVR_AT90USB82__) \ +|| defined(__AVR_AT90USB1286__) \ +|| defined(__AVR_AT90USB1287__) \ +|| defined(__AVR_AT90USB646__) \ +|| defined(__AVR_AT90USB647__) \ +|| defined(__AVR_ATmega168__) \ +|| defined(__AVR_ATmega48__) \ +|| defined(__AVR_ATmega88__) \ +|| defined(__AVR_ATmega32C1__) \ +|| defined(__AVR_ATmega32M1__) \ +|| defined(__AVR_ATmega32U4__) \ +|| defined(__AVR_ATmega32U6__) \ +|| defined(__AVR_ATmega48P__) \ +|| defined(__AVR_ATmega88P__) \ +|| defined(__AVR_ATmega168P__) \ +|| defined(__AVR_ATmega328P__) + + #define SLEEP_MODE_IDLE (0) + #define SLEEP_MODE_ADC _BV(SM0) + #define SLEEP_MODE_PWR_DOWN _BV(SM1) + #define SLEEP_MODE_PWR_SAVE (_BV(SM0) | _BV(SM1)) + #define SLEEP_MODE_STANDBY (_BV(SM1) | _BV(SM2)) + #define SLEEP_MODE_EXT_STANDBY (_BV(SM0) | _BV(SM1) | _BV(SM2)) + + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1) | _BV(SM2))) | (mode)); \ + } while(0) + +#elif defined(__AVR_ATxmega64A1__) \ +|| defined(__AVR_ATxmega64A3__) \ +|| defined(__AVR_ATxmega128A1__) \ +|| defined(__AVR_ATxmega128A3__) \ +|| defined(__AVR_ATxmega256A3__) \ +|| defined(__AVR_ATxmega256A3B__) + + #define SLEEP_MODE_IDLE (0) + #define SLEEP_MODE_PWR_DOWN (SLEEP_SMODE1_bm) + #define SLEEP_MODE_PWR_SAVE (SLEEP_SMODE1_bm | SLEEP_SMODE0_bm) + #define SLEEP_MODE_STANDBY (SLEEP_SMODE2_bm | SLEEP_SMODE1_bm) + #define SLEEP_MODE_EXT_STANDBY (SLEEP_SMODE2_bm | SLEEP_SMODE1_bm | SLEEP_SMODE0_bm) + + #define set_sleep_mode(mode) \ + do { \ + _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(SLEEP_SMODE2_bm | SLEEP_SMODE1_bm | SLEEP_SMODE0_bm)) | (mode)); \ + } while(0) + +#else + + #error "No SLEEP mode defined for this device." + +#endif + + + +/** \ingroup avr_sleep + + Put the device in sleep mode. How the device is brought out of sleep mode + depends on the specific mode selected with the set_sleep_mode() function. + See the data sheet for your device for more details. */ + + +#if defined(__DOXYGEN__) + +/** \ingroup avr_sleep + + Set the SE (sleep enable) bit. +*/ +extern void sleep_enable (void); + +#else + +#define sleep_enable() \ +do { \ + _SLEEP_CONTROL_REG |= (uint8_t)_SLEEP_ENABLE_MASK; \ +} while(0) + +#endif + + +#if defined(__DOXYGEN__) + +/** \ingroup avr_sleep + + Clear the SE (sleep enable) bit. +*/ +extern void sleep_disable (void); + +#else + +#define sleep_disable() \ +do { \ + _SLEEP_CONTROL_REG &= (uint8_t)(~_SLEEP_ENABLE_MASK); \ +} while(0) + +#endif + + +/** \ingroup avr_sleep + + Put the device into sleep mode. The SE bit must be set + beforehand, and it is recommended to clear it afterwards. +*/ +#if defined(__DOXYGEN__) + +extern void sleep_cpu (void); + +#else + +#define sleep_cpu() \ +do { \ + __asm__ __volatile__ ( "sleep" "\n\t" :: ); \ +} while(0) + +#endif + + +#if defined(__DOXYGEN__) + +extern void sleep_mode (void); + +#else + +#define sleep_mode() \ +do { \ + sleep_enable(); \ + sleep_cpu(); \ + sleep_disable(); \ +} while (0) + +#endif + + + +/*@}*/ + +#endif /* _AVR_SLEEP_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/version.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/version.h new file mode 100644 index 0000000..ffc517b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/version.h @@ -0,0 +1,90 @@ +/* Copyright (c) 2005, Joerg Wunsch -*- c -*- + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: version.h.in,v 1.1 2005/09/12 20:18:12 joerg_wunsch Exp $ */ + +/** \defgroup avr_version : avr-libc version macros + \code #include \endcode + + This header file defines macros that contain version numbers and + strings describing the current version of avr-libc. + + The version number itself basically consists of three pieces that + are separated by a dot: the major number, the minor number, and + the revision number. For development versions (which use an odd + minor number), the string representation additionally gets the + date code (YYYYMMDD) appended. + + This file will also be included by \c . That way, + portable tests can be implemented using \c that can be + used in code that wants to remain backwards-compatible to library + versions prior to the date when the library version API had been + added, as referenced but undefined C preprocessor macros + automatically evaluate to 0. +*/ + +#ifndef _AVR_VERSION_H_ +#define _AVR_VERSION_H_ + +/** \ingroup avr_version + String literal representation of the current library version. */ +#define __AVR_LIBC_VERSION_STRING__ "1.6.4" + +/** \ingroup avr_version + Numerical representation of the current library version. + + In the numerical representation, the major number is multiplied by + 10000, the minor number by 100, and all three parts are then + added. It is intented to provide a monotonically increasing + numerical value that can easily be used in numerical checks. + */ +#define __AVR_LIBC_VERSION__ 10604UL + +/** \ingroup avr_version + String literal representation of the release date. */ +#define __AVR_LIBC_DATE_STRING__ "20081106" + +/** \ingroup avr_version + Numerical representation of the release date. */ +#define __AVR_LIBC_DATE_ 20081106UL + +/** \ingroup avr_version + Library major version number. */ +#define __AVR_LIBC_MAJOR__ 1 + +/** \ingroup avr_version + Library minor version number. */ +#define __AVR_LIBC_MINOR__ 6 + +/** \ingroup avr_version + Library revision number. */ +#define __AVR_LIBC_REVISION__ 4 + +#endif /* _AVR_VERSION_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/avr/wdt.h b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/wdt.h new file mode 100644 index 0000000..b9cba6a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/avr/wdt.h @@ -0,0 +1,392 @@ +/* Copyright (c) 2002, 2004 Marek Michalkiewicz + Copyright (c) 2005, 2006, 2007 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: wdt.h,v 1.44.2.16 2008/11/06 14:55:34 arcanum Exp $ */ + +/* + avr/wdt.h - macros for AVR watchdog timer + */ + +#ifndef _AVR_WDT_H_ +#define _AVR_WDT_H_ + +#include +#include + +/** \file */ +/** \defgroup avr_watchdog : Watchdog timer handling + \code #include \endcode + + This header file declares the interface to some inline macros + handling the watchdog timer present in many AVR devices. In order + to prevent the watchdog timer configuration from being + accidentally altered by a crashing application, a special timed + sequence is required in order to change it. The macros within + this header file handle the required sequence automatically + before changing any value. Interrupts will be disabled during + the manipulation. + + \note Depending on the fuse configuration of the particular + device, further restrictions might apply, in particular it might + be disallowed to turn off the watchdog timer. + + Note that for newer devices (ATmega88 and newer, effectively any + AVR that has the option to also generate interrupts), the watchdog + timer remains active even after a system reset (except a power-on + condition), using the fastest prescaler value (approximately 15 + ms). It is therefore required to turn off the watchdog early + during program startup, the datasheet recommends a sequence like + the following: + + \code + #include + #include + + uint8_t mcusr_mirror __attribute__ ((section (".noinit"))); + + void get_mcusr(void) \ + __attribute__((naked)) \ + __attribute__((section(".init3"))); + void get_mcusr(void) + { + mcusr_mirror = MCUSR; + MCUSR = 0; + wdt_disable(); + } + \endcode + + Saving the value of MCUSR in \c mcusr_mirror is only needed if the + application later wants to examine the reset source, but in particular, + clearing the watchdog reset flag before disabling the + watchdog is required, according to the datasheet. +*/ + +/** + \ingroup avr_watchdog + Reset the watchdog timer. When the watchdog timer is enabled, + a call to this instruction is required before the timer expires, + otherwise a watchdog-initiated device reset will occur. +*/ + +#define wdt_reset() __asm__ __volatile__ ("wdr") + + +#if defined(WDP3) +# define _WD_PS3_MASK _BV(WDP3) +#else +# define _WD_PS3_MASK 0x00 +#endif + +#if defined(WDTCSR) +# define _WD_CONTROL_REG WDTCSR +#else +# define _WD_CONTROL_REG WDTCR +#endif + +#if defined(WDTOE) +#define _WD_CHANGE_BIT WDTOE +#else +#define _WD_CHANGE_BIT WDCE +#endif + + +/** + \ingroup avr_watchdog + Enable the watchdog timer, configuring it for expiry after + \c timeout (which is a combination of the \c WDP0 through + \c WDP2 bits to write into the \c WDTCR register; For those devices + that have a \c WDTCSR register, it uses the combination of the \c WDP0 + through \c WDP3 bits). + + See also the symbolic constants \c WDTO_15MS et al. +*/ + + +#if defined(__AVR_ATxmega64A1__) \ +|| defined(__AVR_ATxmega64A3__) \ +|| defined(__AVR_ATxmega128A1__) \ +|| defined(__AVR_ATxmega128A3__) \ +|| defined(__AVR_ATxmega256A3__) \ +|| defined(__AVR_ATxmega256A3B__) + +/* + wdt_enable(WDT_PER_8KCLK_gc); +*/ +#define wdt_enable(value) \ +__asm__ __volatile__ ( \ + "in __tmp_reg__, %0" "\n\t" \ + "out %1, %3" "\n\t" \ + "sts %2, %4" "\n\t" \ + "wdr" "\n\t" \ + "out %0, __tmp_reg__" "\n\t" \ + : \ + : "M" (_SFR_MEM_ADDR(RAMPD)), \ + "M" (_SFR_MEM_ADDR(CCP)), \ + "M" (_SFR_MEM_ADDR(WDT_CTRL)), \ + "r" ((uint8_t)0xD8), \ + "r" ((uint8_t)(WDT_CEN_bm | WDT_ENABLE_bm | value)) \ + : "r0" \ +) + + +#elif defined(__AVR_AT90CAN32__) \ +|| defined(__AVR_AT90CAN64__) \ +|| defined(__AVR_AT90CAN128__) \ +|| defined(__AVR_AT90PWM1__) \ +|| defined(__AVR_AT90PWM2__) \ +|| defined(__AVR_AT90PWM216__) \ +|| defined(__AVR_AT90PWM2B__) \ +|| defined(__AVR_AT90PWM3__) \ +|| defined(__AVR_AT90PWM316__) \ +|| defined(__AVR_AT90PWM3B__) \ +|| defined(__AVR_AT90USB1286__) \ +|| defined(__AVR_AT90USB1287__) \ +|| defined(__AVR_AT90USB162__) \ +|| defined(__AVR_AT90USB646__) \ +|| defined(__AVR_AT90USB647__) \ +|| defined(__AVR_AT90USB82__) \ +|| defined(__AVR_ATmega1280__) \ +|| defined(__AVR_ATmega1281__) \ +|| defined(__AVR_ATmega1284P__) \ +|| defined(__AVR_ATmega164__) \ +|| defined(__AVR_ATmega164P__) \ +|| defined(__AVR_ATmega165__) \ +|| defined(__AVR_ATmega165P__) \ +|| defined(__AVR_ATmega168__) \ +|| defined(__AVR_ATmega168P__) \ +|| defined(__AVR_ATmega169__) \ +|| defined(__AVR_ATmega169P__) \ +|| defined(__AVR_ATmega16HVA__) \ +|| defined(__AVR_ATmega2560__) \ +|| defined(__AVR_ATmega2561__) \ +|| defined(__AVR_ATmega324__) \ +|| defined(__AVR_ATmega324P__) \ +|| defined(__AVR_ATmega325__) \ +|| defined(__AVR_ATmega3250__) \ +|| defined(__AVR_ATmega328P__) \ +|| defined(__AVR_ATmega329__) \ +|| defined(__AVR_ATmega3290__) \ +|| defined(__AVR_ATmega3290P__) \ +|| defined(__AVR_ATmega32C1__) \ +|| defined(__AVR_ATmega32HVB__) \ +|| defined(__AVR_ATmega32M1__) \ +|| defined(__AVR_ATmega32U4__) \ +|| defined(__AVR_ATmega32U6__) \ +|| defined(__AVR_ATmega406__) \ +|| defined(__AVR_ATmega48__) \ +|| defined(__AVR_ATmega48P__) \ +|| defined(__AVR_ATmega640__) \ +|| defined(__AVR_ATmega644__) \ +|| defined(__AVR_ATmega644P__) \ +|| defined(__AVR_ATmega645__) \ +|| defined(__AVR_ATmega6450__) \ +|| defined(__AVR_ATmega649__) \ +|| defined(__AVR_ATmega6490__) \ +|| defined(__AVR_ATmega8HVA__) \ +|| defined(__AVR_ATmega88__) \ +|| defined(__AVR_ATmega88P__) \ +|| defined(__AVR_ATtiny48__) \ +|| defined(__AVR_ATtiny88__) \ +|| defined(__AVR_ATtiny167__) + +/* Use STS instruction. */ + +#define wdt_enable(value) \ +__asm__ __volatile__ ( \ + "in __tmp_reg__,__SREG__" "\n\t" \ + "cli" "\n\t" \ + "wdr" "\n\t" \ + "sts %0,%1" "\n\t" \ + "out __SREG__,__tmp_reg__" "\n\t" \ + "sts %0,%2" "\n\t" \ + : /* no outputs */ \ + : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \ + "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \ + "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \ + _BV(WDE) | (value & 0x07)) ) \ + : "r0" \ +) + +#define wdt_disable() \ +__asm__ __volatile__ ( \ + "in __tmp_reg__, __SREG__" "\n\t" \ + "cli" "\n\t" \ + "sts %0, %1" "\n\t" \ + "sts %0, __zero_reg__" "\n\t" \ + "out __SREG__,__tmp_reg__" "\n\t" \ + : /* no outputs */ \ + : "M" (_SFR_MEM_ADDR(_WD_CONTROL_REG)), \ + "r" ((uint8_t)(_BV(_WD_CHANGE_BIT) | _BV(WDE))) \ + : "r0" \ +) + + + +#else + +/* Use OUT instruction. */ + +#define wdt_enable(value) \ + __asm__ __volatile__ ( \ + "in __tmp_reg__,__SREG__" "\n\t" \ + "cli" "\n\t" \ + "wdr" "\n\t" \ + "out %0,%1" "\n\t" \ + "out __SREG__,__tmp_reg__" "\n\t" \ + "out %0,%2" \ + : /* no outputs */ \ + : "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \ + "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \ + "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \ + _BV(WDE) | (value & 0x07)) ) \ + : "r0" \ + ) + +/** + \ingroup avr_watchdog + Disable the watchdog timer, if possible. This attempts to turn off the + Enable bit in the watchdog control register. See the datasheet for + details. +*/ +#define wdt_disable() \ +__asm__ __volatile__ ( \ + "in __tmp_reg__, __SREG__" "\n\t" \ + "cli" "\n\t" \ + "out %0, %1" "\n\t" \ + "out %0, __zero_reg__" "\n\t" \ + "out __SREG__,__tmp_reg__" "\n\t" \ + : /* no outputs */ \ + : "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \ + "r" ((uint8_t)(_BV(_WD_CHANGE_BIT) | _BV(WDE))) \ + : "r0" \ +) + +#endif + + + +/** + \ingroup avr_watchdog + Symbolic constants for the watchdog timeout. Since the watchdog + timer is based on a free-running RC oscillator, the times are + approximate only and apply to a supply voltage of 5 V. At lower + supply voltages, the times will increase. For older devices, the + times will be as large as three times when operating at Vcc = 3 V, + while the newer devices (e. g. ATmega128, ATmega8) only experience + a negligible change. + + Possible timeout values are: 15 ms, 30 ms, 60 ms, 120 ms, 250 ms, + 500 ms, 1 s, 2 s. (Some devices also allow for 4 s and 8 s.) + Symbolic constants are formed by the prefix + \c WDTO_, followed by the time. + + Example that would select a watchdog timer expiry of approximately + 500 ms: + \code + wdt_enable(WDTO_500MS); + \endcode +*/ +#define WDTO_15MS 0 + +/** \ingroup avr_watchdog + See \c WDT0_15MS */ +#define WDTO_30MS 1 + +/** \ingroup avr_watchdog See + \c WDT0_15MS */ +#define WDTO_60MS 2 + +/** \ingroup avr_watchdog + See \c WDT0_15MS */ +#define WDTO_120MS 3 + +/** \ingroup avr_watchdog + See \c WDT0_15MS */ +#define WDTO_250MS 4 + +/** \ingroup avr_watchdog + See \c WDT0_15MS */ +#define WDTO_500MS 5 + +/** \ingroup avr_watchdog + See \c WDT0_15MS */ +#define WDTO_1S 6 + +/** \ingroup avr_watchdog + See \c WDT0_15MS */ +#define WDTO_2S 7 + +#if defined(__DOXYGEN__) || defined(WDP3) + +/** \ingroup avr_watchdog + See \c WDT0_15MS + Note: This is only available on the + ATtiny2313, + ATtiny24, ATtiny44, ATtiny84, + ATtiny25, ATtiny45, ATtiny85, + ATtiny261, ATtiny461, ATtiny861, + ATmega48, ATmega88, ATmega168, + ATmega48P, ATmega88P, ATmega168P, ATmega328P, + ATmega164P, ATmega324P, ATmega644P, ATmega644, + ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, + ATmega8HVA, ATmega16HVA, ATmega32HVB, + ATmega406, ATmega1284P, + AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316 + AT90USB82, AT90USB162, + AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, + ATtiny48, ATtiny88. + */ +#define WDTO_4S 8 + +/** \ingroup avr_watchdog + See \c WDT0_15MS + Note: This is only available on the + ATtiny2313, + ATtiny24, ATtiny44, ATtiny84, + ATtiny25, ATtiny45, ATtiny85, + ATtiny261, ATtiny461, ATtiny861, + ATmega48, ATmega88, ATmega168, + ATmega48P, ATmega88P, ATmega168P, ATmega328P, + ATmega164P, ATmega324P, ATmega644P, ATmega644, + ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, + ATmega8HVA, ATmega16HVA, ATmega32HVB, + ATmega406, ATmega1284P, + AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316 + AT90USB82, AT90USB162, + AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, + ATtiny48, ATtiny88. + */ +#define WDTO_8S 9 + +#endif /* defined(__DOXYGEN__) || defined(WDP3) */ + + +#endif /* _AVR_WDT_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/compat/deprecated.h b/arduino-0018-windows/hardware/tools/avr/avr/include/compat/deprecated.h new file mode 100644 index 0000000..39567e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/compat/deprecated.h @@ -0,0 +1,226 @@ +/* Copyright (c) 2005,2006 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: deprecated.h,v 1.6.2.2 2008/07/30 21:39:21 arcanum Exp $ */ + +#ifndef _COMPAT_DEPRECATED_H_ +#define _COMPAT_DEPRECATED_H_ + +/** \defgroup deprecated_items : Deprecated items + + This header file contains several items that used to be available + in previous versions of this library, but have eventually been + deprecated over time. + + \code #include \endcode + + These items are supplied within that header file for backward + compatibility reasons only, so old source code that has been + written for previous library versions could easily be maintained + until its end-of-life. Use of any of these items in new code is + strongly discouraged. + */ + +/** \name Allowing specific system-wide interrupts + + In addition to globally enabling interrupts, each device's particular + interrupt needs to be enabled separately if interrupts for this device are + desired. While some devices maintain their interrupt enable bit inside + the device's register set, external and timer interrupts have system-wide + configuration registers. + + Example: + + \code + // Enable timer 1 overflow interrupts. + timer_enable_int(_BV(TOIE1)); + + // Do some work... + + // Disable all timer interrupts. + timer_enable_int(0); + \endcode + + \note Be careful when you use these functions. If you already have a + different interrupt enabled, you could inadvertantly disable it by + enabling another intterupt. */ + +/*@{*/ + +/** \ingroup deprecated_items + \def enable_external_int(mask) + \deprecated + + This macro gives access to the \c GIMSK register (or \c EIMSK register + if using an AVR Mega device or \c GICR register for others). Although this + macro is essentially the same as assigning to the register, it does + adapt slightly to the type of device being used. This macro is + unavailable if none of the registers listed above are defined. */ + +/* Define common register definition if available. */ +#if defined(EIMSK) +# define __EICR EIMSK +#elif defined(GIMSK) +# define __EICR GIMSK +#elif defined(GICR) +# define __EICR GICR +#endif + +/* If common register defined, define macro. */ +#if defined(__EICR) || defined(__DOXYGEN__) +#define enable_external_int(mask) (__EICR = mask) +#endif + +/** \ingroup deprecated_items + \deprecated + + This function modifies the \c timsk register. + The value you pass via \c ints is device specific. */ + +static __inline__ void timer_enable_int (unsigned char ints) +{ +#ifdef TIMSK + TIMSK = ints; +#endif +} + +/** \def INTERRUPT(signame) + \ingroup deprecated_items + \deprecated + + Introduces an interrupt handler function that runs with global interrupts + initially enabled. This allows interrupt handlers to be interrupted. + + As this macro has been used by too many unsuspecting people in the + past, it has been deprecated, and will be removed in a future + version of the library. Users who want to legitimately re-enable + interrupts in their interrupt handlers as quickly as possible are + encouraged to explicitly declare their handlers as described + \ref attr_interrupt "above". +*/ + +#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) +# define __INTR_ATTRS used, externally_visible +#else /* GCC < 4.1 */ +# define __INTR_ATTRS used +#endif + +#ifdef __cplusplus +#define INTERRUPT(signame) \ +extern "C" void signame(void); \ +void signame (void) __attribute__ ((interrupt,__INTR_ATTRS)); \ +void signame (void) +#else +#define INTERRUPT(signame) \ +void signame (void) __attribute__ ((interrupt,__INTR_ATTRS)); \ +void signame (void) +#endif + +/*@}*/ + +/** + \name Obsolete IO macros + + Back in a time when AVR-GCC and avr-libc could not handle IO port + access in the direct assignment form as they are handled now, all + IO port access had to be done through specific macros that + eventually resulted in inline assembly instructions performing the + desired action. + + These macros became obsolete, as reading and writing IO ports can + be done by simply using the IO port name in an expression, and all + bit manipulation (including those on IO ports) can be done using + generic C bit manipulation operators. + + The macros in this group simulate the historical behaviour. While + they are supposed to be applied to IO ports, the emulation actually + uses standard C methods, so they could be applied to arbitrary + memory locations as well. +*/ + +/*@{*/ + +/** + \ingroup deprecated_items + \def inp(port) + \deprecated + + Read a value from an IO port \c port. +*/ +#define inp(port) (port) + +/** + \ingroup deprecated_items + \def outp(val, port) + \deprecated + + Write \c val to IO port \c port. +*/ +#define outp(val, port) (port) = (val) + +/** + \ingroup deprecated_items + \def inb(port) + \deprecated + + Read a value from an IO port \c port. +*/ +#define inb(port) (port) + +/** + \ingroup deprecated_items + \def outb(port, val) + \deprecated + + Write \c val to IO port \c port. +*/ +#define outb(port, val) (port) = (val) + +/** + \ingroup deprecated_items + \def sbi(port, bit) + \deprecated + + Set \c bit in IO port \c port. +*/ +#define sbi(port, bit) (port) |= (1 << (bit)) + +/** + \ingroup deprecated_items + \def cbi(port, bit) + \deprecated + + Clear \c bit in IO port \c port. +*/ +#define cbi(port, bit) (port) &= ~(1 << (bit)) + +/*@}*/ + +#endif /* _COMPAT_DEPRECATED_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/compat/ina90.h b/arduino-0018-windows/hardware/tools/avr/avr/include/compat/ina90.h new file mode 100644 index 0000000..2ab196a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/compat/ina90.h @@ -0,0 +1,99 @@ +/* Copyright (c) 2002,2004 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: ina90.h,v 1.2 2005/11/05 21:22:33 joerg_wunsch Exp $ */ +/* copied from: Id: avr/ina90.h,v 1.8 2004/11/09 19:16:09 arcanum Exp */ + +/* + ina90.h + + Contributors: + Created by Marek Michalkiewicz + */ + +/** + \defgroup compat_ina90 : Compatibility with IAR EWB 3.x + + \code #include \endcode + + This is an attempt to provide some compatibility with + header files that come with IAR C, to make porting applications + between different compilers easier. No 100% compatibility though. + + \note For actual documentation, please see the IAR manual. + */ + +#ifndef _INA90_H_ +#define _INA90_H_ 1 + +#define _CLI() do { __asm__ __volatile__ ("cli"); } while (0) +#define _SEI() do { __asm__ __volatile__ ("sei"); } while (0) +#define _NOP() do { __asm__ __volatile__ ("nop"); } while (0) +#define _WDR() do { __asm__ __volatile__ ("wdr"); } while (0) +#define _SLEEP() do { __asm__ __volatile__ ("sleep"); } while (0) +#define _OPC(op) do { __asm__ __volatile__ (".word %0" : : "n" (op)); } while (0) + +/* _LPM, _ELPM */ +#include +#define _LPM(x) do { __LPM(x); } while (0) +#define _ELPM(x) do { __ELPM(x); } while (0) + +/* _EEGET, _EEPUT */ +#include + +#define input(port) (port) +#define output(port, val) do { (port) = (val); } while (0) + +#define __inp_blk__(port, addr, cnt, op) do { \ + unsigned char __i = (cnt); \ + unsigned char *__addr = (addr); \ + while (__i) { \ + *(__addr op) = input(port); \ + __i--; \ + } \ + } while (0) + +#define input_block_inc(port, addr, cnt) __inp_blk__(port, addr, cnt, ++) +#define input_block_dec(port, addr, cnt) __inp_blk__(port, addr, cnt, --) + +#define __out_blk__(port, addr, cnt, op) do { \ + unsigned char __i = (cnt); \ + const unsigned char *__addr = (addr); \ + while (__i) { \ + output(port, *(__addr op)); \ + __i--; \ + } \ + } while (0) + +#define output_block_inc(port, addr, cnt) __out_blk__(port, addr, cnt, ++) +#define output_block_dec(port, addr, cnt) __out_blk__(port, addr, cnt, --) + +#endif + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/compat/twi.h b/arduino-0018-windows/hardware/tools/avr/avr/include/compat/twi.h new file mode 100644 index 0000000..6d88cbb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/compat/twi.h @@ -0,0 +1,38 @@ +/* Copyright (c) 2005 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: twi.h,v 1.2 2005/11/05 22:23:15 joerg_wunsch Exp $ */ + +#ifndef _COMPAT_TWI_H_ +#define _COMPAT_TWI_H_ + +#include + +#endif /* _COMPAT_TWI_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/ctype.h b/arduino-0018-windows/hardware/tools/avr/avr/include/ctype.h new file mode 100644 index 0000000..d225f70 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/ctype.h @@ -0,0 +1,193 @@ +/* Copyright (c) 2002,2007 Michael Stumpf + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: ctype.h,v 1.8 2007/12/16 07:33:59 dmix Exp $ */ + +/* + ctype.h - character conversion macros and ctype macros + + Author : Michael Stumpf + Michael.Stumpf@t-online.de +*/ + +#ifndef __CTYPE_H_ +#define __CTYPE_H_ 1 + +#ifndef __ATTR_CONST__ +#define __ATTR_CONST__ __attribute__((__const__)) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file */ +/** \defgroup ctype : Character Operations + These functions perform various operations on characters. + + \code #include \endcode + +*/ + +/** \name Character classification routines + + These functions perform character classification. They return true or + false status depending whether the character passed to the function falls + into the function's classification (i.e. isdigit() returns true if its + argument is any value '0' though '9', inclusive). If the input is not + an unsigned char value, all of this function return false. */ + + /* @{ */ + +/** \ingroup ctype + + Checks for an alphanumeric character. It is equivalent to (isalpha(c) + || isdigit(c)). */ + +extern int isalnum(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for an alphabetic character. It is equivalent to (isupper(c) || + islower(c)). */ + +extern int isalpha(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks whether \c c is a 7-bit unsigned char value that fits into the + ASCII character set. */ + +extern int isascii(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for a blank character, that is, a space or a tab. */ + +extern int isblank(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for a control character. */ + +extern int iscntrl(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for a digit (0 through 9). */ + +extern int isdigit(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for any printable character except space. */ + +extern int isgraph(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for a lower-case character. */ + +extern int islower(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for any printable character including space. */ + +extern int isprint(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for any printable character which is not a space or an alphanumeric + character. */ + +extern int ispunct(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for white-space characters. For the avr-libc library, these are: + space, form-feed ('\\f'), newline ('\\n'), carriage return ('\\r'), + horizontal tab ('\\t'), and vertical tab ('\\v'). */ + +extern int isspace(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for an uppercase letter. */ + +extern int isupper(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 8 9 a b c d e + f A B C D E F. */ + +extern int isxdigit(int __c) __ATTR_CONST__; + +/* @} */ + +/** \name Character convertion routines + + This realization permits all possible values of integer argument. + The toascii() function clears all highest bits. The tolower() and + toupper() functions return an input argument as is, if it is not an + unsigned char value. */ + +/* @{ */ + +/** \ingroup ctype + + Converts \c c to a 7-bit unsigned char value that fits into the ASCII + character set, by clearing the high-order bits. + + \warning Many people will be unhappy if you use this function. This + function will convert accented letters into random characters. */ + +extern int toascii(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Converts the letter \c c to lower case, if possible. */ + +extern int tolower(int __c) __ATTR_CONST__; + +/** \ingroup ctype + + Converts the letter \c c to upper case, if possible. */ + +extern int toupper(int __c) __ATTR_CONST__; + +/* @} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/errno.h b/arduino-0018-windows/hardware/tools/avr/avr/include/errno.h new file mode 100644 index 0000000..bdd326f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/errno.h @@ -0,0 +1,73 @@ +/* Copyright (c) 2002,2007 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: errno.h,v 1.6 2007/01/23 15:32:48 joerg_wunsch Exp $ */ + +#ifndef __ERRNO_H_ +#define __ERRNO_H_ 1 + +/** \file */ +/** \defgroup avr_errno : System Errors + + \code #include \endcode + + Some functions in the library set the global variable \c errno when an + error occurs. The file, \c , provides symbolic names for various + error codes. + + \warning The \c errno global variable is not safe to use in a threaded or + multi-task system. A race condition can occur if a task is interrupted + between the call which sets \c error and when the task examines \c + errno. If another task changes \c errno during this time, the result will + be incorrect for the interrupted task. */ + +#ifdef __cplusplus +extern "C" { +#endif + +extern int errno; + +#ifdef __cplusplus +} +#endif + +/** \ingroup avr_errno + \def EDOM + + Domain error. */ +#define EDOM 33 + +/** \ingroup avr_errno + \def ERANGE + + Range error. */ +#define ERANGE 34 + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/inttypes.h b/arduino-0018-windows/hardware/tools/avr/avr/include/inttypes.h new file mode 100644 index 0000000..1062468 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/inttypes.h @@ -0,0 +1,533 @@ +/* Copyright (c) 2004,2005,2007 Joerg Wunsch + Copyright (c) 2005, Carlos Lamas + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: inttypes.h,v 1.16.2.1 2008/10/17 21:33:57 arcanum Exp $ */ + +#ifndef __INTTYPES_H_ +#define __INTTYPES_H_ + +#include + +/** \file */ +/** \defgroup avr_inttypes : Integer Type conversions + \code #include \endcode + + This header file includes the exact-width integer definitions from + , and extends them with additional facilities + provided by the implementation. + + Currently, the extensions include two additional integer types + that could hold a "far" pointer (i.e. a code pointer that can + address more than 64 KB), as well as standard names for all printf + and scanf formatting options that are supported by the \ref avr_stdio. + As the library does not support the full range of conversion + specifiers from ISO 9899:1999, only those conversions that are + actually implemented will be listed here. + + The idea behind these conversion macros is that, for each of the + types defined by , a macro will be supplied that portably + allows formatting an object of that type in printf() or scanf() + operations. Example: + + \code + #include + + uint8_t smallval; + int32_t longval; + ... + printf("The hexadecimal value of smallval is %" PRIx8 + ", the decimal value of longval is %" PRId32 ".\n", + smallval, longval); + \endcode +*/ + +/** \name Far pointers for memory access >64K */ + +/*@{*/ +/** \ingroup avr_inttypes + signed integer type that can hold a pointer > 64 KB */ +typedef int32_t int_farptr_t; + +/** \ingroup avr_inttypes + unsigned integer type that can hold a pointer > 64 KB */ +typedef uint32_t uint_farptr_t; +/*@}*/ + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) + + +/** \name macros for printf and scanf format specifiers + + For C++, these are only included if __STDC_LIMIT_MACROS + is defined before including . + */ + +/*@{*/ +/** \ingroup avr_inttypes + decimal printf format for int8_t */ +#define PRId8 "d" +/** \ingroup avr_inttypes + decimal printf format for int_least8_t */ +#define PRIdLEAST8 "d" +/** \ingroup avr_inttypes + decimal printf format for int_fast8_t */ +#define PRIdFAST8 "d" + +/** \ingroup avr_inttypes + integer printf format for int8_t */ +#define PRIi8 "i" +/** \ingroup avr_inttypes + integer printf format for int_least8_t */ +#define PRIiLEAST8 "i" +/** \ingroup avr_inttypes + integer printf format for int_fast8_t */ +#define PRIiFAST8 "i" + + +/** \ingroup avr_inttypes + decimal printf format for int16_t */ +#define PRId16 "d" +/** \ingroup avr_inttypes + decimal printf format for int_least16_t */ +#define PRIdLEAST16 "d" +/** \ingroup avr_inttypes + decimal printf format for int_fast16_t */ +#define PRIdFAST16 "d" + +/** \ingroup avr_inttypes + integer printf format for int16_t */ +#define PRIi16 "i" +/** \ingroup avr_inttypes + integer printf format for int_least16_t */ +#define PRIiLEAST16 "i" +/** \ingroup avr_inttypes + integer printf format for int_fast16_t */ +#define PRIiFAST16 "i" + + +/** \ingroup avr_inttypes + decimal printf format for int32_t */ +#define PRId32 "ld" +/** \ingroup avr_inttypes + decimal printf format for int_least32_t */ +#define PRIdLEAST32 "ld" +/** \ingroup avr_inttypes + decimal printf format for int_fast32_t */ +#define PRIdFAST32 "ld" + +/** \ingroup avr_inttypes + integer printf format for int32_t */ +#define PRIi32 "li" +/** \ingroup avr_inttypes + integer printf format for int_least32_t */ +#define PRIiLEAST32 "li" +/** \ingroup avr_inttypes + integer printf format for int_fast32_t */ +#define PRIiFAST32 "li" + + +#ifdef __avr_libc_does_not_implement_long_long_in_printf_or_scanf + +#define PRId64 "lld" +#define PRIdLEAST64 "lld" +#define PRIdFAST64 "lld" + +#define PRIi64 "lli" +#define PRIiLEAST64 "lli" +#define PRIiFAST64 "lli" + + +#define PRIdMAX "lld" +#define PRIiMAX "lli" + +#endif + +/** \ingroup avr_inttypes + decimal printf format for intptr_t */ +#define PRIdPTR PRId16 +/** \ingroup avr_inttypes + integer printf format for intptr_t */ +#define PRIiPTR PRIi16 + +/** \ingroup avr_inttypes + octal printf format for uint8_t */ +#define PRIo8 "o" +/** \ingroup avr_inttypes + octal printf format for uint_least8_t */ +#define PRIoLEAST8 "o" +/** \ingroup avr_inttypes + octal printf format for uint_fast8_t */ +#define PRIoFAST8 "o" + +/** \ingroup avr_inttypes + decimal printf format for uint8_t */ +#define PRIu8 "u" +/** \ingroup avr_inttypes + decimal printf format for uint_least8_t */ +#define PRIuLEAST8 "u" +/** \ingroup avr_inttypes + decimal printf format for uint_fast8_t */ +#define PRIuFAST8 "u" + +/** \ingroup avr_inttypes + hexadecimal printf format for uint8_t */ +#define PRIx8 "x" +/** \ingroup avr_inttypes + hexadecimal printf format for uint_least8_t */ +#define PRIxLEAST8 "x" +/** \ingroup avr_inttypes + hexadecimal printf format for uint_fast8_t */ +#define PRIxFAST8 "x" + +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint8_t */ +#define PRIX8 "X" +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint_least8_t */ +#define PRIXLEAST8 "X" +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint_fast8_t */ +#define PRIXFAST8 "X" + + +/** \ingroup avr_inttypes + octal printf format for uint16_t */ +#define PRIo16 "o" +/** \ingroup avr_inttypes + octal printf format for uint_least16_t */ +#define PRIoLEAST16 "o" +/** \ingroup avr_inttypes + octal printf format for uint_fast16_t */ +#define PRIoFAST16 "o" + +/** \ingroup avr_inttypes + decimal printf format for uint16_t */ +#define PRIu16 "u" +/** \ingroup avr_inttypes + decimal printf format for uint_least16_t */ +#define PRIuLEAST16 "u" +/** \ingroup avr_inttypes + decimal printf format for uint_fast16_t */ +#define PRIuFAST16 "u" + +/** \ingroup avr_inttypes + hexadecimal printf format for uint16_t */ +#define PRIx16 "x" +/** \ingroup avr_inttypes + hexadecimal printf format for uint_least16_t */ +#define PRIxLEAST16 "x" +/** \ingroup avr_inttypes + hexadecimal printf format for uint_fast16_t */ +#define PRIxFAST16 "x" + +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint16_t */ +#define PRIX16 "X" +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint_least16_t */ +#define PRIXLEAST16 "X" +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint_fast16_t */ +#define PRIXFAST16 "X" + + +/** \ingroup avr_inttypes + octal printf format for uint32_t */ +#define PRIo32 "lo" +/** \ingroup avr_inttypes + octal printf format for uint_least32_t */ +#define PRIoLEAST32 "lo" +/** \ingroup avr_inttypes + octal printf format for uint_fast32_t */ +#define PRIoFAST32 "lo" + +/** \ingroup avr_inttypes + decimal printf format for uint32_t */ +#define PRIu32 "lu" +/** \ingroup avr_inttypes + decimal printf format for uint_least32_t */ +#define PRIuLEAST32 "lu" +/** \ingroup avr_inttypes + decimal printf format for uint_fast32_t */ +#define PRIuFAST32 "lu" + +/** \ingroup avr_inttypes + hexadecimal printf format for uint32_t */ +#define PRIx32 "lx" +/** \ingroup avr_inttypes + hexadecimal printf format for uint_least32_t */ +#define PRIxLEAST32 "lx" +/** \ingroup avr_inttypes + hexadecimal printf format for uint_fast32_t */ +#define PRIxFAST32 "lx" + +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint32_t */ +#define PRIX32 "lX" +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint_least32_t */ +#define PRIXLEAST32 "lX" +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uint_fast32_t */ +#define PRIXFAST32 "lX" + + +#ifdef __avr_libc_does_not_implement_long_long_in_printf_or_scanf + +#define PRIo64 "llo" +#define PRIoLEAST64 "llo" +#define PRIoFAST64 "llo" + +#define PRIu64 "llu" +#define PRIuLEAST64 "llu" +#define PRIuFAST64 "llu" + +#define PRIx64 "llx" +#define PRIxLEAST64 "llx" +#define PRIxFAST64 "llx" + +#define PRIX64 "llX" +#define PRIXLEAST64 "llX" +#define PRIXFAST64 "llX" + +#define PRIoMAX "llo" +#define PRIuMAX "llu" +#define PRIxMAX "llx" +#define PRIXMAX "llX" + +#endif + +/** \ingroup avr_inttypes + octal printf format for uintptr_t */ +#define PRIoPTR PRIo16 +/** \ingroup avr_inttypes + decimal printf format for uintptr_t */ +#define PRIuPTR PRIu16 +/** \ingroup avr_inttypes + hexadecimal printf format for uintptr_t */ +#define PRIxPTR PRIx16 +/** \ingroup avr_inttypes + uppercase hexadecimal printf format for uintptr_t */ +#define PRIXPTR PRIX16 + + +#ifdef __avr_libc_does_not_implement_hh_in_scanf + +#define SCNd8 "hhd" +#define SCNdLEAST8 "hhd" +#define SCNdFAST8 "hhd" + +#define SCNi8 "hhi" +#define SCNiLEAST8 "hhi" +#define SCNiFAST8 "hhi" + +#endif + + +/** \ingroup avr_inttypes + decimal scanf format for int16_t */ +#define SCNd16 "d" +/** \ingroup avr_inttypes + decimal scanf format for int_least16_t */ +#define SCNdLEAST16 "d" +/** \ingroup avr_inttypes + decimal scanf format for int_fast16_t */ +#define SCNdFAST16 "d" + +/** \ingroup avr_inttypes + generic-integer scanf format for int16_t */ +#define SCNi16 "i" +/** \ingroup avr_inttypes + generic-integer scanf format for int_least16_t */ +#define SCNiLEAST16 "i" +/** \ingroup avr_inttypes + generic-integer scanf format for int_fast16_t */ +#define SCNiFAST16 "i" + + +/** \ingroup avr_inttypes + decimal scanf format for int32_t */ +#define SCNd32 "ld" +/** \ingroup avr_inttypes + decimal scanf format for int_least32_t */ +#define SCNdLEAST32 "ld" +/** \ingroup avr_inttypes + decimal scanf format for int_fast32_t */ +#define SCNdFAST32 "ld" + +/** \ingroup avr_inttypes + generic-integer scanf format for int32_t */ +#define SCNi32 "li" +/** \ingroup avr_inttypes + generic-integer scanf format for int_least32_t */ +#define SCNiLEAST32 "li" +/** \ingroup avr_inttypes + generic-integer scanf format for int_fast32_t */ +#define SCNiFAST32 "li" + + +#ifdef __avr_libc_does_not_implement_long_long_in_printf_or_scanf + +#define SCNd64 "lld" +#define SCNdLEAST64 "lld" +#define SCNdFAST64 "lld" + +#define SCNi64 "lli" +#define SCNiLEAST64 "lli" +#define SCNiFAST64 "lli" + +#define SCNdMAX "lld" +#define SCNiMAX "lli" + +#endif + +/** \ingroup avr_inttypes + decimal scanf format for intptr_t */ +#define SCNdPTR SCNd16 +/** \ingroup avr_inttypes + generic-integer scanf format for intptr_t */ +#define SCNiPTR SCNi16 + +#ifdef __avr_libc_does_not_implement_hh_in_scanf + +#define SCNo8 "hho" +#define SCNoLEAST8 "hho" +#define SCNoFAST8 "hho" + +#define SCNu8 "hhu" +#define SCNuLEAST8 "hhu" +#define SCNuFAST8 "hhu" + +#define SCNx8 "hhx" +#define SCNxLEAST8 "hhx" +#define SCNxFAST8 "hhx" + +#endif + +/** \ingroup avr_inttypes + octal scanf format for uint16_t */ +#define SCNo16 "o" +/** \ingroup avr_inttypes + octal scanf format for uint_least16_t */ +#define SCNoLEAST16 "o" +/** \ingroup avr_inttypes + octal scanf format for uint_fast16_t */ +#define SCNoFAST16 "o" + +/** \ingroup avr_inttypes + decimal scanf format for uint16_t */ +#define SCNu16 "u" +/** \ingroup avr_inttypes + decimal scanf format for uint_least16_t */ +#define SCNuLEAST16 "u" +/** \ingroup avr_inttypes + decimal scanf format for uint_fast16_t */ +#define SCNuFAST16 "u" + +/** \ingroup avr_inttypes + hexadecimal scanf format for uint16_t */ +#define SCNx16 "x" +/** \ingroup avr_inttypes + hexadecimal scanf format for uint_least16_t */ +#define SCNxLEAST16 "x" +/** \ingroup avr_inttypes + hexadecimal scanf format for uint_fast16_t */ +#define SCNxFAST16 "x" + + +/** \ingroup avr_inttypes + octal scanf format for uint32_t */ +#define SCNo32 "lo" +/** \ingroup avr_inttypes + octal scanf format for uint_least32_t */ +#define SCNoLEAST32 "lo" +/** \ingroup avr_inttypes + octal scanf format for uint_fast32_t */ +#define SCNoFAST32 "lo" + +/** \ingroup avr_inttypes + decimal scanf format for uint32_t */ +#define SCNu32 "lu" +/** \ingroup avr_inttypes + decimal scanf format for uint_least32_t */ +#define SCNuLEAST32 "lu" +/** \ingroup avr_inttypes + decimal scanf format for uint_fast32_t */ +#define SCNuFAST32 "lu" + +/** \ingroup avr_inttypes + hexadecimal scanf format for uint32_t */ +#define SCNx32 "lx" +/** \ingroup avr_inttypes + hexadecimal scanf format for uint_least32_t */ +#define SCNxLEAST32 "lx" +/** \ingroup avr_inttypes + hexadecimal scanf format for uint_fast32_t */ +#define SCNxFAST32 "lx" + + +#ifdef __avr_libc_does_not_implement_long_long_in_printf_or_scanf + +#define SCNo64 "llo" +#define SCNoLEAST64 "llo" +#define SCNoFAST64 "llo" + +#define SCNu64 "llu" +#define SCNuLEAST64 "llu" +#define SCNuFAST64 "llu" + +#define SCNx64 "llx" +#define SCNxLEAST64 "llx" +#define SCNxFAST64 "llx" + +#define SCNoMAX "llo" +#define SCNuMAX "llu" +#define SCNxMAX "llx" + +#endif + +/** \ingroup avr_inttypes + octal scanf format for uintptr_t */ +#define SCNoPTR SCNo16 +/** \ingroup avr_inttypes + decimal scanf format for uintptr_t */ +#define SCNuPTR SCNu16 +/** \ingroup avr_inttypes + hexadecimal scanf format for uintptr_t */ +#define SCNxPTR SCNx16 + +/*@}*/ + + +#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ + + +#endif /* __INTTYPES_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/math.h b/arduino-0018-windows/hardware/tools/avr/avr/include/math.h new file mode 100644 index 0000000..7804d6e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/math.h @@ -0,0 +1,473 @@ +/* Copyright (c) 2002,2007 Michael Stumpf + + Portions of documentation Copyright (c) 1990 - 1994 + The Regents of the University of California. + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: math.h,v 1.21.2.2 2008/04/10 13:39:16 arcanum Exp $ */ + +/* + math.h - mathematical functions + + Author : Michael Stumpf + Michael.Stumpf@t-online.de + + __ATTR_CONST__ added by marekm@linux.org.pl for functions + that "do not examine any values except their arguments, and have + no effects except the return value", for better optimization by gcc. + */ + +#ifndef __MATH_H +#define __MATH_H + +/** \file */ +/** \defgroup avr_math : Mathematics + \code #include \endcode + + This header file declares basic mathematics constants and + functions. + + \par Notes: + - In order to access the functions delcared herein, it is usually + also required to additionally link against the library \c libm.a. + See also the related \ref faq_libm "FAQ entry". + - Math functions do not raise exceptions and do not change the + \c errno variable. Therefore the majority of them are declared + with const attribute, for better optimization by GCC. */ + +/** + \ingroup avr_math + + The constant \c pi. */ +#define M_PI 3.141592653589793238462643 + +/** + \ingroup avr_math + + The square root of 2. */ +#define M_SQRT2 1.4142135623730950488016887 + +/** + \ingroup avr_math + + NAN constant. */ +#define NAN __builtin_nan("") + +/** + \ingroup avr_math + + INFINITY constant. */ +#define INFINITY __builtin_inf() + +#ifndef __ATTR_CONST__ +# define __ATTR_CONST__ __attribute__((__const__)) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + /** + \ingroup avr_math + + The cos() function returns the cosine of \a __x, measured in radians. + */ +extern double cos(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The fabs() function computes the absolute value of a floating-point + number \a __x. + */ +extern double fabs(double __x) __ATTR_CONST__; +#if 0 +/* fabs seems to be built in already */ +static inline double fabs( double __x ) + { double __res; + __asm__ __volatile__ ("andi %D0,0x7F \n\t" + : "=d" (__res) : "0" (__x) ); + return __res; + } +#endif + + /** + \ingroup avr_math + + The function fmod() returns the floating-point remainder of __x / + __y. + */ +extern double fmod(double __x, double __y) __ATTR_CONST__; + + /** + \ingroup avr_math + + The modf() function breaks the argument \a __x into integral and + fractional parts, each of which has the same sign as the argument. + It stores the integral part as a double in the object pointed to by + \a __iptr. + + The modf() function returns the signed fractional part of \a __x. + + \note + This implementation skips writing by zero pointer. + */ +extern double modf(double __x, double *__iptr); + + /** + \ingroup avr_math + + The sin() function returns the sine of \a __x, measured in radians. + */ +extern double sin(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The sqrt() function returns the non-negative square root of \a __x. + */ +extern double sqrt(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The tan() function returns the tangent of \a __x, measured in + radians. + */ +extern double tan(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The floor() function returns the largest integral value less than or + equal to \a __x, expressed as a floating-point number. + */ +extern double floor(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The ceil() function returns the smallest integral value greater than + or equal to \a __x, expressed as a floating-point number. + */ +extern double ceil(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The frexp() function breaks a floating-point number into a normalized + fraction and an integral power of 2. It stores the integer in the \c + int object pointed to by \a __pexp. + + If \a __x is a normal float point number, the frexp() function + returns the value \c v, such that \c v has a magnitude in the + interval [1/2, 1) or zero, and \a __x equals \c v times 2 raised to + the power \a __pexp. If \a __x is zero, both parts of the result are + zero. If \a __x is not a finite number, the frexp() returns \a __x as + is and stores 0 by \a __pexp. + + \note This implementation permits a zero pointer as a directive to + skip a storing the exponent. + */ +extern double frexp(double __x, int *__pexp); + + /** + \ingroup avr_math + + The ldexp() function multiplies a floating-point number by an integral + power of 2. + + The ldexp() function returns the value of \a __x times 2 raised to + the power \a __exp. + */ +extern double ldexp(double __x, int __exp) __ATTR_CONST__; + + /** + \ingroup avr_math + + The exp() function returns the exponential value of \a __x. + */ +extern double exp(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The cosh() function returns the hyperbolic cosine of \a __x. + */ +extern double cosh(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The sinh() function returns the hyperbolic sine of \a __x. + */ +extern double sinh(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The tanh() function returns the hyperbolic tangent of \a __x. + */ +extern double tanh(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The acos() function computes the principal value of the arc cosine of + \a __x. The returned value is in the range [0, pi] radians. A domain + error occurs for arguments not in the range [-1, +1]. + */ +extern double acos(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The asin() function computes the principal value of the arc sine of + \a __x. The returned value is in the range [-pi/2, pi/2] radians. A + domain error occurs for arguments not in the range [-1, +1]. + */ +extern double asin(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The atan() function computes the principal value of the arc tangent + of \a __x. The returned value is in the range [-pi/2, pi/2] radians. + */ +extern double atan(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The atan2() function computes the principal value of the arc tangent + of __y / __x, using the signs of both arguments to determine + the quadrant of the return value. The returned value is in the range + [-pi, +pi] radians. + */ +extern double atan2(double __y, double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The log() function returns the natural logarithm of argument \a __x. + */ +extern double log(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The log10() function returns the logarithm of argument \a __x to base + 10. + */ +extern double log10(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The function pow() returns the value of \a __x to the exponent \a __y. + */ +extern double pow(double __x, double __y) __ATTR_CONST__; + + /** + \ingroup avr_math + + The function isnan() returns 1 if the argument \a __x represents a + "not-a-number" (NaN) object, otherwise 0. + */ +extern int isnan(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The function isinf() returns 1 if the argument \a __x is positive + infinity, -1 if \a __x is negative infinity, and 0 otherwise. + */ +extern int isinf(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The function square() returns __x * __x. + + \note + This function does not belong to the C standard definition. + */ +extern double square(double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The copysign() function returns \a __x but with the sign of \a __y. + They work even if \a __x or \a __y are NaN or zero. + */ +__ATTR_CONST__ static inline double copysign (double __x, double __y) +{ + __asm__ ( + "bst %D2, 7 \n\t" + "bld %D0, 7 " + : "=r" (__x) + : "0" (__x), "r" (__y) ); + return __x; +} + + /** + \ingroup avr_math + + The fdim() function returns max(__x - __y, 0). If \a __x or + \a __y or both are NaN, NaN is returned. + */ +extern double fdim (double __x, double __y) __ATTR_CONST__; + + /** + \ingroup avr_math + + The fma() function performs floating-point multiply-add. This is the + operation (__x * __y) + __z, but the intermediate result is + not rounded to the destination type. This can sometimes improve the + precision of a calculation. + */ +extern double fma (double __x, double __y, double __z) __ATTR_CONST__; + + /** + \ingroup avr_math + + The fmax() function returns the greater of the two values \a __x and + \a __y. If an argument is NaN, the other argument is returned. If + both arguments are NaN, NaN is returned. + */ +extern double fmax (double __x, double __y) __ATTR_CONST__; + + /** + \ingroup avr_math + + The fmin() function returns the lesser of the two values \a __x and + \a __y. If an argument is NaN, the other argument is returned. If + both arguments are NaN, NaN is returned. + */ +extern double fmin (double __x, double __y) __ATTR_CONST__; + + /** + \ingroup avr_math + + The signbit() function returns a nonzero value if the value of \a __x + has its sign bit set. This is not the same as `\a __x < 0.0', + because IEEE 754 floating point allows zero to be signed. The + comparison `-0.0 < 0.0' is false, but `signbit (-0.0)' will return a + nonzero value. + + \note + This implementation returns 1 if sign bit is set. + */ +extern int signbit (double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The trunc() function rounds \a __x to the nearest integer not larger + in absolute value. + */ +extern double trunc (double __x) __ATTR_CONST__; + + /** + \ingroup avr_math + + The isfinite() function returns a nonzero value if \a __x is finite: + not plus or minus infinity, and not NaN. + */ +__ATTR_CONST__ static inline int isfinite (double __x) +{ + unsigned char __exp; + __asm__ ( + "mov %0, %C1 \n\t" + "lsl %0 \n\t" + "mov %0, %D1 \n\t" + "rol %0 " + : "=r" (__exp) + : "r" (__x) ); + return __exp != 0xff; +} + + /** + \ingroup avr_math + + The hypot() function returns sqrt(__x*__x + __y*__y). This + is the length of the hypotenuse of a right triangle with sides of + length \a __x and \a __y, or the distance of the point (\a __x, \a + __y) from the origin. Using this function instead of the direct + formula is wise, since the error is much smaller. No underflow with + small \a __x and \a __y. No overflow if result is in range. + */ +double hypot (double __x, double __y) __ATTR_CONST__; + +/** \ingroup avr_math + + The round() function rounds \a __x to the nearest integer, but rounds + halfway cases away from zero (instead of to the nearest even integer). + Overflow is impossible. + + \return The rounded value. If \a __x is an integral or infinite, \a + __x itself is returned. If \a __x is \c NaN, then \c NaN is returned. + */ +double round (double __x) __ATTR_CONST__; + +/** \ingroup avr_math + + The lround() function rounds \a __x to the nearest integer, but rounds + halfway cases away from zero (instead of to the nearest even integer). + This function is similar to round() function, but it differs in type of + return value and in that an overflow is possible. + + \return The rounded long integer value. If \a __x is not a finite number + or an overflow was, this realization returns the \c LONG_MIN value + (0x80000000). + */ +long lround (double __x) __ATTR_CONST__; + +/** \ingroup avr_math + + The lrint() function rounds \a __x to the nearest integer, rounding the + halfway cases to the even integer direction. (That is both 1.5 and 2.5 + values are rounded to 2). This function is similar to rint() function, + but it differs in type of return value and in that an overflow is + possible. + + \return The rounded long integer value. If \a __x is not a finite + number or an overflow was, this realization returns the \c LONG_MIN + value (0x80000000). + */ +long lrint (double __x) __ATTR_CONST__; + +#ifdef __cplusplus +} +#endif + +#endif /* _MATH_H */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/setjmp.h b/arduino-0018-windows/hardware/tools/avr/avr/include/setjmp.h new file mode 100644 index 0000000..6713e3b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/setjmp.h @@ -0,0 +1,160 @@ +/* Copyright (c) 2002,2007 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: setjmp.h,v 1.10.2.1 2008/03/24 11:29:53 dmix Exp $ */ + +#ifndef __SETJMP_H_ +#define __SETJMP_H_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* + jmp_buf: + offset size description + 0 16 call-saved registers (r2-r17) + 16 2 frame pointer (r29:r28) + 18 2 stack pointer (SPH:SPL) + 20 1 status register (SREG) + 21 2/3 return address (PC) (2 bytes used for <=128Kw flash) + 23/24 = total size + */ + +#if !defined(__DOXYGEN__) + +#if defined(__AVR_3_BYTE_PC__) && __AVR_3_BYTE_PC__ +# define _JBLEN 24 +#else +# define _JBLEN 23 +#endif +typedef struct _jmp_buf { unsigned char _jb[_JBLEN]; } jmp_buf[1]; + +#endif /* not __DOXYGEN__ */ + +/** \file */ +/** \defgroup setjmp : Non-local goto + + While the C language has the dreaded \c goto statement, it can only be + used to jump to a label in the same (local) function. In order to jump + directly to another (non-local) function, the C library provides the + setjmp() and longjmp() functions. setjmp() and longjmp() are useful for + dealing with errors and interrupts encountered in a low-level subroutine + of a program. + + \note setjmp() and longjmp() make programs hard to understand and maintain. + If possible, an alternative should be used. + + \note longjmp() can destroy changes made to global register + variables (see \ref faq_regbind). + + For a very detailed discussion of setjmp()/longjmp(), see Chapter 7 of + Advanced Programming in the UNIX Environment, by W. Richard + Stevens. + + Example: + + \code + #include + + jmp_buf env; + + int main (void) + { + if (setjmp (env)) + { + ... handle error ... + } + + while (1) + { + ... main processing loop which calls foo() some where ... + } + } + + ... + + void foo (void) + { + ... blah, blah, blah ... + + if (err) + { + longjmp (env, 1); + } + } + \endcode */ + +#ifndef __ATTR_NORETURN__ +#define __ATTR_NORETURN__ __attribute__((__noreturn__)) +#endif + +/** \ingroup setjmp + \brief Save stack context for non-local goto. + + \code #include \endcode + + setjmp() saves the stack context/environment in \e __jmpb for later use by + longjmp(). The stack context will be invalidated if the function which + called setjmp() returns. + + \param __jmpb Variable of type \c jmp_buf which holds the stack + information such that the environment can be restored. + + \returns setjmp() returns 0 if returning directly, and + non-zero when returning from longjmp() using the saved context. */ + +extern int setjmp(jmp_buf __jmpb); + +/** \ingroup setjmp + \brief Non-local jump to a saved stack context. + + \code #include \endcode + + longjmp() restores the environment saved by the last call of setjmp() with + the corresponding \e __jmpb argument. After longjmp() is completed, + program execution continues as if the corresponding call of setjmp() had + just returned the value \e __ret. + + \note longjmp() cannot cause 0 to be returned. If longjmp() is invoked + with a second argument of 0, 1 will be returned instead. + + \param __jmpb Information saved by a previous call to setjmp(). + \param __ret Value to return to the caller of setjmp(). + + \returns This function never returns. */ + +extern void longjmp(jmp_buf __jmpb, int __ret) __ATTR_NORETURN__; + +#ifdef __cplusplus +} +#endif + +#endif /* !__SETJMP_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/stdint.h b/arduino-0018-windows/hardware/tools/avr/avr/include/stdint.h new file mode 100644 index 0000000..3a99d86 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/stdint.h @@ -0,0 +1,673 @@ +/* Copyright (c) 2002,2004,2005 Marek Michalkiewicz + Copyright (c) 2005, Carlos Lamas + Copyright (c) 2005,2007 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: stdint.h,v 1.10 2007/01/23 15:32:48 joerg_wunsch Exp $ */ + +/* + * ISO/IEC 9899:1999 7.18 Integer types + */ + +#ifndef __STDINT_H_ +#define __STDINT_H_ + +/** \file */ +/** \defgroup avr_stdint : Standard Integer Types + \code #include \endcode + + Use [u]intN_t if you need exactly N bits. + + Since these typedefs are mandated by the C99 standard, they are preferred + over rolling your own typedefs. */ + +/* + * __USING_MINT8 is defined to 1 if the -mint8 option is in effect. + */ +#if __INT_MAX__ == 127 +# define __USING_MINT8 1 +#else +# define __USING_MINT8 0 +#endif + +/* Integer types */ + +#if defined(__DOXYGEN__) + +/* doxygen gets confused by the __attribute__ stuff */ + +/** \name Exact-width integer types + Integer types having exactly the specified width */ + +/*@{*/ + +/** \ingroup avr_stdint + 8-bit signed type. */ + +typedef signed char int8_t; + +/** \ingroup avr_stdint + 8-bit unsigned type. */ + +typedef unsigned char uint8_t; + +/** \ingroup avr_stdint + 16-bit signed type. */ + +typedef signed int int16_t; + +/** \ingroup avr_stdint + 16-bit unsigned type. */ + +typedef unsigned int uint16_t; + +/** \ingroup avr_stdint + 32-bit signed type. */ + +typedef signed long int int32_t; + +/** \ingroup avr_stdint + 32-bit unsigned type. */ + +typedef unsigned long int uint32_t; + +/** \ingroup avr_stdint + 64-bit signed type. + \note This type is not available when the compiler + option -mint8 is in effect. */ + +typedef signed long long int int64_t; + +/** \ingroup avr_stdint + 64-bit unsigned type. + \note This type is not available when the compiler + option -mint8 is in effect. */ + +typedef unsigned long long int uint64_t; + +/*@}*/ + +#else /* !defined(__DOXYGEN__) */ + +/* actual implementation goes here */ + +typedef int int8_t __attribute__((__mode__(__QI__))); +typedef unsigned int uint8_t __attribute__((__mode__(__QI__))); +typedef int int16_t __attribute__ ((__mode__ (__HI__))); +typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__))); +typedef int int32_t __attribute__ ((__mode__ (__SI__))); +typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__))); +#if !__USING_MINT8 +typedef int int64_t __attribute__((__mode__(__DI__))); +typedef unsigned int uint64_t __attribute__((__mode__(__DI__))); +#endif + +#endif /* defined(__DOXYGEN__) */ + +/** \name Integer types capable of holding object pointers + These allow you to declare variables of the same size as a pointer. */ + +/*@{*/ + +/** \ingroup avr_stdint + Signed pointer compatible type. */ + +typedef int16_t intptr_t; + +/** \ingroup avr_stdint + Unsigned pointer compatible type. */ + +typedef uint16_t uintptr_t; + +/*@}*/ + +/** \name Minimum-width integer types + Integer types having at least the specified width */ + +/*@{*/ + +/** \ingroup avr_stdint + signed int with at least 8 bits. */ + +typedef int8_t int_least8_t; + +/** \ingroup avr_stdint + unsigned int with at least 8 bits. */ + +typedef uint8_t uint_least8_t; + +/** \ingroup avr_stdint + signed int with at least 16 bits. */ + +typedef int16_t int_least16_t; + +/** \ingroup avr_stdint + unsigned int with at least 16 bits. */ + +typedef uint16_t uint_least16_t; + +/** \ingroup avr_stdint + signed int with at least 32 bits. */ + +typedef int32_t int_least32_t; + +/** \ingroup avr_stdint + unsigned int with at least 32 bits. */ + +typedef uint32_t uint_least32_t; + +#if !__USING_MINT8 || defined(__DOXYGEN__) +/** \ingroup avr_stdint + signed int with at least 64 bits. + \note This type is not available when the compiler + option -mint8 is in effect. */ + +typedef int64_t int_least64_t; + +/** \ingroup avr_stdint + unsigned int with at least 64 bits. + \note This type is not available when the compiler + option -mint8 is in effect. */ + +typedef uint64_t uint_least64_t; +#endif + +/*@}*/ + + +/** \name Fastest minimum-width integer types + Integer types being usually fastest having at least the specified width */ + +/*@{*/ + +/** \ingroup avr_stdint + fastest signed int with at least 8 bits. */ + +typedef int8_t int_fast8_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 8 bits. */ + +typedef uint8_t uint_fast8_t; + +/** \ingroup avr_stdint + fastest signed int with at least 16 bits. */ + +typedef int16_t int_fast16_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 16 bits. */ + +typedef uint16_t uint_fast16_t; + +/** \ingroup avr_stdint + fastest signed int with at least 32 bits. */ + +typedef int32_t int_fast32_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 32 bits. */ + +typedef uint32_t uint_fast32_t; + +#if !__USING_MINT8 || defined(__DOXYGEN__) +/** \ingroup avr_stdint + fastest signed int with at least 64 bits. + \note This type is not available when the compiler + option -mint8 is in effect. */ + +typedef int64_t int_fast64_t; + +/** \ingroup avr_stdint + fastest unsigned int with at least 64 bits. + \note This type is not available when the compiler + option -mint8 is in effect. */ + +typedef uint64_t uint_fast64_t; +#endif + +/*@}*/ + + +/** \name Greatest-width integer types + Types designating integer data capable of representing any value of + any integer type in the corresponding signed or unsigned category */ + +/*@{*/ + +#if __USING_MINT8 +typedef int32_t intmax_t; + +typedef uint32_t uintmax_t; +#else /* !__USING_MINT8 */ +/** \ingroup avr_stdint + largest signed int available. */ + +typedef int64_t intmax_t; + +/** \ingroup avr_stdint + largest unsigned int available. */ + +typedef uint64_t uintmax_t; +#endif /* __USING_MINT8 */ + +/*@}*/ + +/* Helping macro */ +#ifndef __CONCAT +#define __CONCATenate(left, right) left ## right +#define __CONCAT(left, right) __CONCATenate(left, right) +#endif + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) + +/** \name Limits of specified-width integer types + C++ implementations should define these macros only when + __STDC_LIMIT_MACROS is defined before is included */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an int8_t can hold. */ + +#define INT8_MAX 0x7f + +/** \ingroup avr_stdint + smallest negative value an int8_t can hold. */ + +#define INT8_MIN (-INT8_MAX - 1) + +/** \ingroup avr_stdint + largest value an uint8_t can hold. */ + +#define UINT8_MAX (__CONCAT(INT8_MAX, U) * 2U + 1U) + +#if __USING_MINT8 + +#define INT16_MAX 0x7fffL +#define INT16_MIN (-INT16_MAX - 1L) +#define UINT16_MAX (__CONCAT(INT16_MAX, U) * 2UL + 1UL) + +#define INT32_MAX 0x7fffffffLL +#define INT32_MIN (-INT32_MAX - 1LL) +#define UINT32_MAX (__CONCAT(INT32_MAX, U) * 2ULL + 1ULL) + +#else /* !__USING_MINT8 */ + +/** \ingroup avr_stdint + largest positive value an int16_t can hold. */ + +#define INT16_MAX 0x7fff + +/** \ingroup avr_stdint + smallest negative value an int16_t can hold. */ + +#define INT16_MIN (-INT16_MAX - 1) + +/** \ingroup avr_stdint + largest value an uint16_t can hold. */ + +#define UINT16_MAX (__CONCAT(INT16_MAX, U) * 2U + 1U) + +/** \ingroup avr_stdint + largest positive value an int32_t can hold. */ + +#define INT32_MAX 0x7fffffffL + +/** \ingroup avr_stdint + smallest negative value an int32_t can hold. */ + +#define INT32_MIN (-INT32_MAX - 1L) + +/** \ingroup avr_stdint + largest value an uint32_t can hold. */ + +#define UINT32_MAX (__CONCAT(INT32_MAX, U) * 2UL + 1UL) + +#endif /* __USING_MINT8 */ + +/** \ingroup avr_stdint + largest positive value an int64_t can hold. */ + +#define INT64_MAX 0x7fffffffffffffffLL + +/** \ingroup avr_stdint + smallest negative value an int64_t can hold. */ + +#define INT64_MIN (-INT64_MAX - 1LL) + +/** \ingroup avr_stdint + largest value an uint64_t can hold. */ + +#define UINT64_MAX (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL) + +/*@}*/ + +/** \name Limits of minimum-width integer types */ +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an int_least8_t can hold. */ + +#define INT_LEAST8_MAX INT8_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least8_t can hold. */ + +#define INT_LEAST8_MIN INT8_MIN + +/** \ingroup avr_stdint + largest value an uint_least8_t can hold. */ + +#define UINT_LEAST8_MAX UINT8_MAX + +/** \ingroup avr_stdint + largest positive value an int_least16_t can hold. */ + +#define INT_LEAST16_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least16_t can hold. */ + +#define INT_LEAST16_MIN INT16_MIN + +/** \ingroup avr_stdint + largest value an uint_least16_t can hold. */ + +#define UINT_LEAST16_MAX UINT16_MAX + +/** \ingroup avr_stdint + largest positive value an int_least32_t can hold. */ + +#define INT_LEAST32_MAX INT32_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least32_t can hold. */ + +#define INT_LEAST32_MIN INT32_MIN + +/** \ingroup avr_stdint + largest value an uint_least32_t can hold. */ + +#define UINT_LEAST32_MAX UINT32_MAX + +/** \ingroup avr_stdint + largest positive value an int_least64_t can hold. */ + +#define INT_LEAST64_MAX INT64_MAX + +/** \ingroup avr_stdint + smallest negative value an int_least64_t can hold. */ + +#define INT_LEAST64_MIN INT64_MIN + +/** \ingroup avr_stdint + largest value an uint_least64_t can hold. */ + +#define UINT_LEAST64_MAX UINT64_MAX + +/*@}*/ + +/** \name Limits of fastest minimum-width integer types */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an int_fast8_t can hold. */ + +#define INT_FAST8_MAX INT8_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast8_t can hold. */ + +#define INT_FAST8_MIN INT8_MIN + +/** \ingroup avr_stdint + largest value an uint_fast8_t can hold. */ + +#define UINT_FAST8_MAX UINT8_MAX + +/** \ingroup avr_stdint + largest positive value an int_fast16_t can hold. */ + +#define INT_FAST16_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast16_t can hold. */ + +#define INT_FAST16_MIN INT16_MIN + +/** \ingroup avr_stdint + largest value an uint_fast16_t can hold. */ + +#define UINT_FAST16_MAX UINT16_MAX + +/** \ingroup avr_stdint + largest positive value an int_fast32_t can hold. */ + +#define INT_FAST32_MAX INT32_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast32_t can hold. */ + +#define INT_FAST32_MIN INT32_MIN + +/** \ingroup avr_stdint + largest value an uint_fast32_t can hold. */ + +#define UINT_FAST32_MAX UINT32_MAX + +/** \ingroup avr_stdint + largest positive value an int_fast64_t can hold. */ + +#define INT_FAST64_MAX INT64_MAX + +/** \ingroup avr_stdint + smallest negative value an int_fast64_t can hold. */ + +#define INT_FAST64_MIN INT64_MIN + +/** \ingroup avr_stdint + largest value an uint_fast64_t can hold. */ + +#define UINT_FAST64_MAX UINT64_MAX + +/*@}*/ + +/** \name Limits of integer types capable of holding object pointers */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an intptr_t can hold. */ + +#define INTPTR_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value an intptr_t can hold. */ + +#define INTPTR_MIN INT16_MIN + +/** \ingroup avr_stdint + largest value an uintptr_t can hold. */ + +#define UINTPTR_MAX UINT16_MAX + +/*@}*/ + +/** \name Limits of greatest-width integer types */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value an intmax_t can hold. */ + +#define INTMAX_MAX INT64_MAX + +/** \ingroup avr_stdint + smallest negative value an intmax_t can hold. */ + +#define INTMAX_MIN INT64_MIN + +/** \ingroup avr_stdint + largest value an uintmax_t can hold. */ + +#define UINTMAX_MAX UINT64_MAX + +/*@}*/ + +/** \name Limits of other integer types + C++ implementations should define these macros only when + __STDC_LIMIT_MACROS is defined before is included */ + +/*@{*/ + +/** \ingroup avr_stdint + largest positive value a ptrdiff_t can hold. */ + +#define PTRDIFF_MAX INT16_MAX + +/** \ingroup avr_stdint + smallest negative value a ptrdiff_t can hold. */ + +#define PTRDIFF_MIN INT16_MIN + + +/* Limits of sig_atomic_t */ +/* signal.h is currently not implemented (not avr/signal.h) */ + +/** \ingroup avr_stdint + largest positive value a sig_atomic_t can hold. */ + +#define SIG_ATOMIC_MAX INT8_MAX + +/** \ingroup avr_stdint + smallest negative value a sig_atomic_t can hold. */ + +#define SIG_ATOMIC_MIN INT8_MIN + + +/** \ingroup avr_stdint + largest value a size_t can hold. */ + +#define SIZE_MAX (__CONCAT(INT16_MAX, U)) + + +/* Limits of wchar_t */ +/* wchar.h is currently not implemented */ +/* #define WCHAR_MAX */ +/* #define WCHAR_MIN */ + + +/* Limits of wint_t */ +/* wchar.h is currently not implemented */ +/* #define WINT_MAX */ +/* #define WINT_MIN */ + + +#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) + +/** \name Macros for integer constants + C++ implementations should define these macros only when + __STDC_CONSTANT_MACROS is defined before is included. + + These definitions are valid for integer constants without suffix and + for macros defined as integer constant without suffix */ + +/** \ingroup avr_stdint + define a constant of type int8_t */ + +#define INT8_C(value) ((int8_t) value) + +/** \ingroup avr_stdint + define a constant of type uint8_t */ + +#define UINT8_C(value) ((uint8_t) __CONCAT(value, U)) + +#if __USING_MINT8 + +#define INT16_C(value) __CONCAT(value, L) +#define UINT16_C(value) __CONCAT(value, UL) + +#define INT32_C(value) ((int32_t) __CONCAT(value, LL)) +#define UINT32_C(value) ((uint32_t) __CONCAT(value, ULL)) + +#else /* !__USING_MINT8 */ + +/** \ingroup avr_stdint + define a constant of type int16_t */ + +#define INT16_C(value) value + +/** \ingroup avr_stdint + define a constant of type uint16_t */ + +#define UINT16_C(value) __CONCAT(value, U) + +/** \ingroup avr_stdint + define a constant of type int32_t */ + +#define INT32_C(value) __CONCAT(value, L) + +/** \ingroup avr_stdint + define a constant of type uint32_t */ + +#define UINT32_C(value) __CONCAT(value, UL) + +#endif /* __USING_MINT8 */ + +/** \ingroup avr_stdint + define a constant of type int64_t */ + +#define INT64_C(value) __CONCAT(value, LL) + +/** \ingroup avr_stdint + define a constant of type uint64_t */ + +#define UINT64_C(value) __CONCAT(value, ULL) + +/** \ingroup avr_stdint + define a constant of type intmax_t */ + +#define INTMAX_C(value) __CONCAT(value, LL) + +/** \ingroup avr_stdint + define a constant of type uintmax_t */ + +#define UINTMAX_C(value) __CONCAT(value, ULL) + +/*@}*/ + +#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ + + +#endif /* _STDINT_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/stdio.h b/arduino-0018-windows/hardware/tools/avr/avr/include/stdio.h new file mode 100644 index 0000000..7c87a3f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/stdio.h @@ -0,0 +1,961 @@ +/* Copyright (c) 2002, 2005, 2007 Joerg Wunsch + All rights reserved. + + Portions of documentation Copyright (c) 1990, 1991, 1993 + The Regents of the University of California. + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + $Id: stdio.h,v 1.29.2.1 2008/02/23 08:59:27 dmix Exp $ +*/ + +#ifndef _STDIO_H_ +#define _STDIO_H_ 1 + +#ifndef __ASSEMBLER__ + +#include +#include + +#define __need_NULL +#define __need_size_t +#include + +/** \file */ +/** \defgroup avr_stdio : Standard IO facilities + \code #include \endcode + +

Introduction to the Standard IO facilities

+ + This file declares the standard IO facilities that are implemented + in \c avr-libc. Due to the nature of the underlying hardware, + only a limited subset of standard IO is implemented. There is no + actual file implementation available, so only device IO can be + performed. Since there's no operating system, the application + needs to provide enough details about their devices in order to + make them usable by the standard IO facilities. + + Due to space constraints, some functionality has not been + implemented at all (like some of the \c printf conversions that + have been left out). Nevertheless, potential users of this + implementation should be warned: the \c printf and \c scanf families of functions, although + usually associated with presumably simple things like the + famous "Hello, world!" program, are actually fairly complex + which causes their inclusion to eat up a fair amount of code space. + Also, they are not fast due to the nature of interpreting the + format string at run-time. Whenever possible, resorting to the + (sometimes non-standard) predetermined conversion facilities that are + offered by avr-libc will usually cost much less in terms of speed + and code size. + +

Tunable options for code size vs. feature set

+ + In order to allow programmers a code size vs. functionality tradeoff, + the function vfprintf() which is the heart of the printf family can be + selected in different flavours using linker options. See the + documentation of vfprintf() for a detailed description. The same + applies to vfscanf() and the \c scanf family of functions. + +

Outline of the chosen API

+ + The standard streams \c stdin, \c stdout, and \c stderr are + provided, but contrary to the C standard, since avr-libc has no + knowledge about applicable devices, these streams are not already + pre-initialized at application startup. Also, since there is no + notion of "file" whatsoever to avr-libc, there is no function + \c fopen() that could be used to associate a stream to some device. + (See \ref stdio_note1 "note 1".) Instead, the function \c fdevopen() + is provided to associate a stream to a device, where the device + needs to provide a function to send a character, to receive a + character, or both. There is no differentiation between "text" and + "binary" streams inside avr-libc. Character \c \\n is sent + literally down to the device's \c put() function. If the device + requires a carriage return (\c \\r) character to be sent before + the linefeed, its \c put() routine must implement this (see + \ref stdio_note2 "note 2"). + + As an alternative method to fdevopen(), the macro + fdev_setup_stream() might be used to setup a user-supplied FILE + structure. + + It should be noted that the automatic conversion of a newline + character into a carriage return - newline sequence breaks binary + transfers. If binary transfers are desired, no automatic + conversion should be performed, but instead any string that aims + to issue a CR-LF sequence must use "\r\n" explicitly. + + For convenience, the first call to \c fdevopen() that opens a + stream for reading will cause the resulting stream to be aliased + to \c stdin. Likewise, the first call to \c fdevopen() that opens + a stream for writing will cause the resulting stream to be aliased + to both, \c stdout, and \c stderr. Thus, if the open was done + with both, read and write intent, all three standard streams will + be identical. Note that these aliases are indistinguishable from + each other, thus calling \c fclose() on such a stream will also + effectively close all of its aliases (\ref stdio_note3 "note 3"). + + It is possible to tie additional user data to a stream, using + fdev_set_udata(). The backend put and get functions can then + extract this user data using fdev_get_udata(), and act + appropriately. For example, a single put function could be used + to talk to two different UARTs that way, or the put and get + functions could keep internal state between calls there. + +

Format strings in flash ROM

+ + All the \c printf and \c scanf family functions come in two flavours: the + standard name, where the format string is expected to be in + SRAM, as well as a version with the suffix "_P" where the format + string is expected to reside in the flash ROM. The macro + \c PSTR (explained in \ref avr_pgmspace) becomes very handy + for declaring these format strings. + + \anchor stdio_without_malloc +

Running stdio without malloc()

+ + By default, fdevopen() requires malloc(). As this is often + not desired in the limited environment of a microcontroller, an + alternative option is provided to run completely without malloc(). + + The macro fdev_setup_stream() is provided to prepare a + user-supplied FILE buffer for operation with stdio. + +

Example

+ + \code + #include + + static int uart_putchar(char c, FILE *stream); + + static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, + _FDEV_SETUP_WRITE); + + static int + uart_putchar(char c, FILE *stream) + { + + if (c == '\n') + uart_putchar('\r', stream); + loop_until_bit_is_set(UCSRA, UDRE); + UDR = c; + return 0; + } + + int + main(void) + { + init_uart(); + stdout = &mystdout; + printf("Hello, world!\n"); + + return 0; + } + \endcode + + This example uses the initializer form FDEV_SETUP_STREAM() rather + than the function-like fdev_setup_stream(), so all data + initialization happens during C start-up. + + If streams initialized that way are no longer needed, they can be + destroyed by first calling the macro fdev_close(), and then + destroying the object itself. No call to fclose() should be + issued for these streams. While calling fclose() itself is + harmless, it will cause an undefined reference to free() and thus + cause the linker to link the malloc module into the application. + +

Notes

+ + \anchor stdio_note1 \par Note 1: + It might have been possible to implement a device abstraction that + is compatible with \c fopen() but since this would have required + to parse a string, and to take all the information needed either + out of this string, or out of an additional table that would need to be + provided by the application, this approach was not taken. + + \anchor stdio_note2 \par Note 2: + This basically follows the Unix approach: if a device such as a + terminal needs special handling, it is in the domain of the + terminal device driver to provide this functionality. Thus, a + simple function suitable as \c put() for \c fdevopen() that talks + to a UART interface might look like this: + + \code + int + uart_putchar(char c, FILE *stream) + { + + if (c == '\n') + uart_putchar('\r'); + loop_until_bit_is_set(UCSRA, UDRE); + UDR = c; + return 0; + } + \endcode + + \anchor stdio_note3 \par Note 3: + This implementation has been chosen because the cost of maintaining + an alias is considerably smaller than the cost of maintaining full + copies of each stream. Yet, providing an implementation that offers + the complete set of standard streams was deemed to be useful. Not + only that writing \c printf() instead of fprintf(mystream, ...) + saves typing work, but since avr-gcc needs to resort to pass all + arguments of variadic functions on the stack (as opposed to passing + them in registers for functions that take a fixed number of + parameters), the ability to pass one parameter less by implying + \c stdin will also save some execution time. +*/ + +#if !defined(__DOXYGEN__) + +/* + * This is an internal structure of the library that is subject to be + * changed without warnings at any time. Please do *never* reference + * elements of it beyond by using the official interfaces provided. + */ +struct __file { + char *buf; /* buffer pointer */ + unsigned char unget; /* ungetc() buffer */ + uint8_t flags; /* flags, see below */ +#define __SRD 0x0001 /* OK to read */ +#define __SWR 0x0002 /* OK to write */ +#define __SSTR 0x0004 /* this is an sprintf/snprintf string */ +#define __SPGM 0x0008 /* fmt string is in progmem */ +#define __SERR 0x0010 /* found error */ +#define __SEOF 0x0020 /* found EOF */ +#define __SUNGET 0x040 /* ungetc() happened */ +#define __SMALLOC 0x80 /* handle is malloc()ed */ +#if 0 +/* possible future extensions, will require uint16_t flags */ +#define __SRW 0x0100 /* open for reading & writing */ +#define __SLBF 0x0200 /* line buffered */ +#define __SNBF 0x0400 /* unbuffered */ +#define __SMBF 0x0800 /* buf is from malloc */ +#endif + int size; /* size of buffer */ + int len; /* characters read or written so far */ + int (*put)(char, struct __file *); /* function to write one char to device */ + int (*get)(struct __file *); /* function to read one char from device */ + void *udata; /* User defined and accessible data. */ +}; + +#endif /* not __DOXYGEN__ */ + +/*@{*/ +/** + \c FILE is the opaque structure that is passed around between the + various standard IO functions. +*/ +#define FILE struct __file + +/** + Stream that will be used as an input stream by the simplified + functions that don't take a \c stream argument. + + The first stream opened with read intent using \c fdevopen() + will be assigned to \c stdin. +*/ +#define stdin (__iob[0]) + +/** + Stream that will be used as an output stream by the simplified + functions that don't take a \c stream argument. + + The first stream opened with write intent using \c fdevopen() + will be assigned to both, \c stdin, and \c stderr. +*/ +#define stdout (__iob[1]) + +/** + Stream destined for error output. Unless specifically assigned, + identical to \c stdout. + + If \c stderr should point to another stream, the result of + another \c fdevopen() must be explicitly assigned to it without + closing the previous \c stderr (since this would also close + \c stdout). +*/ +#define stderr (__iob[2]) + +/** + \c EOF declares the value that is returned by various standard IO + functions in case of an error. Since the AVR platform (currently) + doesn't contain an abstraction for actual files, its origin as + "end of file" is somewhat meaningless here. +*/ +#define EOF (-1) + +/** This macro inserts a pointer to user defined data into a FILE + stream object. + + The user data can be useful for tracking state in the put and get + functions supplied to the fdevopen() function. */ +#define fdev_set_udata(stream, u) do { (stream)->udata = u; } while(0) + +/** This macro retrieves a pointer to user defined data from a FILE + stream object. */ +#define fdev_get_udata(stream) ((stream)->udata) + +#if defined(__DOXYGEN__) +/** + \brief Setup a user-supplied buffer as an stdio stream + + This macro takes a user-supplied buffer \c stream, and sets it up + as a stream that is valid for stdio operations, similar to one that + has been obtained dynamically from fdevopen(). The buffer to setup + must be of type FILE. + + The arguments \c put and \c get are identical to those that need to + be passed to fdevopen(). + + The \c rwflag argument can take one of the values _FDEV_SETUP_READ, + _FDEV_SETUP_WRITE, or _FDEV_SETUP_RW, for read, write, or read/write + intent, respectively. + + \note No assignments to the standard streams will be performed by + fdev_setup_stream(). If standard streams are to be used, these + need to be assigned by the user. See also under + \ref stdio_without_malloc "Running stdio without malloc()". + */ +#define fdev_setup_stream(stream, put, get, rwflag) +#else /* !DOXYGEN */ +#define fdev_setup_stream(stream, p, g, f) \ + do { \ + (stream)->put = p; \ + (stream)->get = g; \ + (stream)->flags = f; \ + (stream)->udata = 0; \ + } while(0) +#endif /* DOXYGEN */ + +#define _FDEV_SETUP_READ __SRD /**< fdev_setup_stream() with read intent */ +#define _FDEV_SETUP_WRITE __SWR /**< fdev_setup_stream() with write intent */ +#define _FDEV_SETUP_RW (__SRD|__SWR) /**< fdev_setup_stream() with read/write intent */ + +/** + * Return code for an error condition during device read. + * + * To be used in the get function of fdevopen(). + */ +#define _FDEV_ERR (-1) + +/** + * Return code for an end-of-file condition during device read. + * + * To be used in the get function of fdevopen(). + */ +#define _FDEV_EOF (-2) + +#if defined(__DOXYGEN__) +/** + \brief Initializer for a user-supplied stdio stream + + This macro acts similar to fdev_setup_stream(), but it is to be + used as the initializer of a variable of type FILE. + + The remaining arguments are to be used as explained in + fdev_setup_stream(). + */ +#define FDEV_SETUP_STREAM(put, get, rwflag) +#else /* !DOXYGEN */ +#define FDEV_SETUP_STREAM(p, g, f) \ + { \ + .put = p, \ + .get = g, \ + .flags = f, \ + .udata = 0, \ + } +#endif /* DOXYGEN */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(__DOXYGEN__) +/* + * Doxygen documentation can be found in fdevopen.c. + */ + +extern struct __file *__iob[]; + +#if defined(__STDIO_FDEVOPEN_COMPAT_12) +/* + * Declare prototype for the discontinued version of fdevopen() that + * has been in use up to avr-libc 1.2.x. The new implementation has + * some backwards compatibility with the old version. + */ +extern FILE *fdevopen(int (*__put)(char), int (*__get)(void), + int __opts __attribute__((unused))); +#else /* !defined(__STDIO_FDEVOPEN_COMPAT_12) */ +/* New prototype for avr-libc 1.4 and above. */ +extern FILE *fdevopen(int (*__put)(char, FILE*), int (*__get)(FILE*)); +#endif /* defined(__STDIO_FDEVOPEN_COMPAT_12) */ + +#endif /* not __DOXYGEN__ */ + +/** + This function closes \c stream, and disallows and further + IO to and from it. + + When using fdevopen() to setup the stream, a call to fclose() is + needed in order to free the internal resources allocated. + + If the stream has been set up using fdev_setup_stream() or + FDEV_SETUP_STREAM(), use fdev_close() instead. + + It currently always returns 0 (for success). +*/ +extern int fclose(FILE *__stream); + +/** + This macro frees up any library resources that might be associated + with \c stream. It should be called if \c stream is no longer + needed, right before the application is going to destroy the + \c stream object itself. + + (Currently, this macro evaluates to nothing, but this might change + in future versions of the library.) +*/ +#if defined(__DOXYGEN__) +# define fdev_close() +#else +# define fdev_close() ((void)0) +#endif + +/** + \c vfprintf is the central facility of the \c printf family of + functions. It outputs values to \c stream under control of a + format string passed in \c fmt. The actual values to print are + passed as a variable argument list \c ap. + + \c vfprintf returns the number of characters written to \c stream, + or \c EOF in case of an error. Currently, this will only happen + if \c stream has not been opened with write intent. + + The format string is composed of zero or more directives: ordinary + characters (not \c %), which are copied unchanged to the output + stream; and conversion specifications, each of which results in + fetching zero or more subsequent arguments. Each conversion + specification is introduced by the \c % character. The arguments must + properly correspond (after type promotion) with the conversion + specifier. After the \c %, the following appear in sequence: + + - Zero or more of the following flags: +
    +
  • \c # The value should be converted to an "alternate form". For + c, d, i, s, and u conversions, this option has no effect. + For o conversions, the precision of the number is + increased to force the first character of the output + string to a zero (except if a zero value is printed with + an explicit precision of zero). For x and X conversions, + a non-zero result has the string `0x' (or `0X' for X + conversions) prepended to it.
  • +
  • \c 0 (zero) Zero padding. For all conversions, the converted + value is padded on the left with zeros rather than blanks. + If a precision is given with a numeric conversion (d, i, + o, u, i, x, and X), the 0 flag is ignored.
  • +
  • \c - A negative field width flag; the converted value is to be + left adjusted on the field boundary. The converted value + is padded on the right with blanks, rather than on the + left with blanks or zeros. A - overrides a 0 if both are + given.
  • +
  • ' ' (space) A blank should be left before a positive number + produced by a signed conversion (d, or i).
  • +
  • \c + A sign must always be placed before a number produced by a + signed conversion. A + overrides a space if both are + used.
  • +
+ + - An optional decimal digit string specifying a minimum field width. + If the converted value has fewer characters than the field width, it + will be padded with spaces on the left (or right, if the left-adjustment + flag has been given) to fill out the field width. + - An optional precision, in the form of a period . followed by an + optional digit string. If the digit string is omitted, the + precision is taken as zero. This gives the minimum number of + digits to appear for d, i, o, u, x, and X conversions, or the + maximum number of characters to be printed from a string for \c s + conversions. + - An optional \c l or \c h length modifier, that specifies that the + argument for the d, i, o, u, x, or X conversion is a \c "long int" + rather than \c int. The \c h is ignored, as \c "short int" is + equivalent to \c int. + - A character that specifies the type of conversion to be applied. + + The conversion specifiers and their meanings are: + + - \c diouxX The int (or appropriate variant) argument is converted + to signed decimal (d and i), unsigned octal (o), unsigned + decimal (u), or unsigned hexadecimal (x and X) notation. + The letters "abcdef" are used for x conversions; the + letters "ABCDEF" are used for X conversions. The + precision, if any, gives the minimum number of digits that + must appear; if the converted value requires fewer digits, + it is padded on the left with zeros. + - \c p The void * argument is taken as an unsigned integer, + and converted similarly as a %\#x command would do. + - \c c The \c int argument is converted to an \c "unsigned char", and the + resulting character is written. + - \c s The \c "char *" argument is expected to be a pointer to an array + of character type (pointer to a string). Characters from + the array are written up to (but not including) a + terminating NUL character; if a precision is specified, no + more than the number specified are written. If a precision + is given, no null character need be present; if the + precision is not specified, or is greater than the size of + the array, the array must contain a terminating NUL + character. + - \c % A \c % is written. No argument is converted. The complete + conversion specification is "%%". + - \c eE The double argument is rounded and converted in the format + \c "[-]d.ddde±dd" where there is one digit before the + decimal-point character and the number of digits after it + is equal to the precision; if the precision is missing, it + is taken as 6; if the precision is zero, no decimal-point + character appears. An \e E conversion uses the letter \c 'E' + (rather than \c 'e') to introduce the exponent. The exponent + always contains two digits; if the value is zero, + the exponent is 00. + - \c fF The double argument is rounded and converted to decimal notation + in the format \c "[-]ddd.ddd", where the number of digits after the + decimal-point character is equal to the precision specification. + If the precision is missing, it is taken as 6; if the precision + is explicitly zero, no decimal-point character appears. If a + decimal point appears, at least one digit appears before it. + - \c gG The double argument is converted in style \c f or \c e (or + \c F or \c E for \c G conversions). The precision + specifies the number of significant digits. If the + precision is missing, 6 digits are given; if the precision + is zero, it is treated as 1. Style \c e is used if the + exponent from its conversion is less than -4 or greater + than or equal to the precision. Trailing zeros are removed + from the fractional part of the result; a decimal point + appears only if it is followed by at least one digit. + - \c S Similar to the \c s format, except the pointer is expected to + point to a program-memory (ROM) string instead of a RAM string. + + In no case does a non-existent or small field width cause truncation of a + numeric field; if the result of a conversion is wider than the field + width, the field is expanded to contain the conversion result. + + Since the full implementation of all the mentioned features becomes + fairly large, three different flavours of vfprintf() can be + selected using linker options. The default vfprintf() implements + all the mentioned functionality except floating point conversions. + A minimized version of vfprintf() is available that only implements + the very basic integer and string conversion facilities, but only + the \c # additional option can be specified using conversion + flags (these flags are parsed correctly from the format + specification, but then simply ignored). This version can be + requested using the following \ref gcc_minusW "compiler options": + + \code + -Wl,-u,vfprintf -lprintf_min + \endcode + + If the full functionality including the floating point conversions + is required, the following options should be used: + + \code + -Wl,-u,vfprintf -lprintf_flt -lm + \endcode + + \par Limitations: + - The specified width and precision can be at most 255. + + \par Notes: + - For floating-point conversions, if you link default or minimized + version of vfprintf(), the symbol \c ? will be output and double + argument will be skiped. So you output below will not be crashed. + For default version the width field and the "pad to left" ( symbol + minus ) option will work in this case. + - The \c hh length modifier is ignored (\c char argument is + promouted to \c int). More exactly, this realization does not check + the number of \c h symbols. + - But the \c ll length modifier will to abort the output, as this + realization does not operate \c long \c long arguments. + - The variable width or precision field (an asterisk \c * symbol) + is not realized and will to abort the output. + + */ + +extern int vfprintf(FILE *__stream, const char *__fmt, va_list __ap); + +/** + Variant of \c vfprintf() that uses a \c fmt string that resides + in program memory. +*/ +extern int vfprintf_P(FILE *__stream, const char *__fmt, va_list __ap); + +/** + The function \c fputc sends the character \c c (though given as type + \c int) to \c stream. It returns the character, or \c EOF in case + an error occurred. +*/ +extern int fputc(int __c, FILE *__stream); + +#if !defined(__DOXYGEN__) + +/* putc() function implementation, required by standard */ +extern int putc(int __c, FILE *__stream); + +/* putchar() function implementation, required by standard */ +extern int putchar(int __c); + +#endif /* not __DOXYGEN__ */ + +/** + The macro \c putc used to be a "fast" macro implementation with a + functionality identical to fputc(). For space constraints, in + \c avr-libc, it is just an alias for \c fputc. +*/ +#define putc(__c, __stream) fputc(__c, __stream) + +/** + The macro \c putchar sends character \c c to \c stdout. +*/ +#define putchar(__c) fputc(__c, stdout) + +/** + The function \c printf performs formatted output to stream + \c stderr. See \c vfprintf() for details. +*/ +extern int printf(const char *__fmt, ...); + +/** + Variant of \c printf() that uses a \c fmt string that resides + in program memory. +*/ +extern int printf_P(const char *__fmt, ...); + +/** + The function \c vprintf performs formatted output to stream + \c stdout, taking a variable argument list as in vfprintf(). + + See vfprintf() for details. +*/ +extern int vprintf(const char *__fmt, va_list __ap); + +/** + Variant of \c printf() that sends the formatted characters + to string \c s. +*/ +extern int sprintf(char *__s, const char *__fmt, ...); + +/** + Variant of \c sprintf() that uses a \c fmt string that resides + in program memory. +*/ +extern int sprintf_P(char *__s, const char *__fmt, ...); + +/** + Like \c sprintf(), but instead of assuming \c s to be of infinite + size, no more than \c n characters (including the trailing NUL + character) will be converted to \c s. + + Returns the number of characters that would have been written to + \c s if there were enough space. +*/ +extern int snprintf(char *__s, size_t __n, const char *__fmt, ...); + +/** + Variant of \c snprintf() that uses a \c fmt string that resides + in program memory. +*/ +extern int snprintf_P(char *__s, size_t __n, const char *__fmt, ...); + +/** + Like \c sprintf() but takes a variable argument list for the + arguments. +*/ +extern int vsprintf(char *__s, const char *__fmt, va_list ap); + +/** + Variant of \c vsprintf() that uses a \c fmt string that resides + in program memory. +*/ +extern int vsprintf_P(char *__s, const char *__fmt, va_list ap); + +/** + Like \c vsprintf(), but instead of assuming \c s to be of infinite + size, no more than \c n characters (including the trailing NUL + character) will be converted to \c s. + + Returns the number of characters that would have been written to + \c s if there were enough space. +*/ +extern int vsnprintf(char *__s, size_t __n, const char *__fmt, va_list ap); + +/** + Variant of \c vsnprintf() that uses a \c fmt string that resides + in program memory. +*/ +extern int vsnprintf_P(char *__s, size_t __n, const char *__fmt, va_list ap); +/** + The function \c fprintf performs formatted output to \c stream. + See \c vfprintf() for details. +*/ +extern int fprintf(FILE *__stream, const char *__fmt, ...); + +/** + Variant of \c fprintf() that uses a \c fmt string that resides + in program memory. +*/ +extern int fprintf_P(FILE *__stream, const char *__fmt, ...); + +/** + Write the string pointed to by \c str to stream \c stream. + + Returns 0 on success and EOF on error. +*/ +extern int fputs(const char *__str, FILE *__stream); + +/** + Variant of fputs() where \c str resides in program memory. +*/ +extern int fputs_P(const char *__str, FILE *__stream); + +/** + Write the string pointed to by \c str, and a trailing newline + character, to \c stdout. +*/ +extern int puts(const char *__str); + +/** + Variant of puts() where \c str resides in program memory. +*/ +extern int puts_P(const char *__str); + +/** + Write \c nmemb objects, \c size bytes each, to \c stream. + The first byte of the first object is referenced by \c ptr. + + Returns the number of objects successfully written, i. e. + \c nmemb unless an output error occured. + */ +extern size_t fwrite(const void *__ptr, size_t __size, size_t __nmemb, + FILE *__stream); + +/** + The function \c fgetc reads a character from \c stream. It returns + the character, or \c EOF in case end-of-file was encountered or an + error occurred. The routines feof() or ferror() must be used to + distinguish between both situations. +*/ +extern int fgetc(FILE *__stream); + +#if !defined(__DOXYGEN__) + +/* getc() function implementation, required by standard */ +extern int getc(FILE *__stream); + +/* getchar() function implementation, required by standard */ +extern int getchar(void); + +#endif /* not __DOXYGEN__ */ + +/** + The macro \c getc used to be a "fast" macro implementation with a + functionality identical to fgetc(). For space constraints, in + \c avr-libc, it is just an alias for \c fgetc. +*/ +#define getc(__stream) fgetc(__stream) + +/** + The macro \c getchar reads a character from \c stdin. Return + values and error handling is identical to fgetc(). +*/ +#define getchar() fgetc(stdin) + +/** + The ungetc() function pushes the character \c c (converted to an + unsigned char) back onto the input stream pointed to by \c stream. + The pushed-back character will be returned by a subsequent read on + the stream. + + Currently, only a single character can be pushed back onto the + stream. + + The ungetc() function returns the character pushed back after the + conversion, or \c EOF if the operation fails. If the value of the + argument \c c character equals \c EOF, the operation will fail and + the stream will remain unchanged. +*/ +extern int ungetc(int __c, FILE *__stream); + +/** + Read at most size - 1 bytes from \c stream, until a + newline character was encountered, and store the characters in the + buffer pointed to by \c str. Unless an error was encountered while + reading, the string will then be terminated with a \c NUL + character. + + If an error was encountered, the function returns NULL and sets the + error flag of \c stream, which can be tested using ferror(). + Otherwise, a pointer to the string will be returned. */ +extern char *fgets(char *__str, int __size, FILE *__stream); + +/** + Similar to fgets() except that it will operate on stream \c stdin, + and the trailing newline (if any) will not be stored in the string. + It is the caller's responsibility to provide enough storage to hold + the characters read. */ +extern char *gets(char *__str); + +/** + Read \c nmemb objects, \c size bytes each, from \c stream, + to the buffer pointed to by \c ptr. + + Returns the number of objects successfully read, i. e. + \c nmemb unless an input error occured or end-of-file was + encountered. feof() and ferror() must be used to distinguish + between these two conditions. + */ +extern size_t fread(void *__ptr, size_t __size, size_t __nmemb, + FILE *__stream); + +/** + Clear the error and end-of-file flags of \c stream. + */ +extern void clearerr(FILE *__stream); + +#if !defined(__DOXYGEN__) +/* fast inlined version of clearerr() */ +#define clearerror(s) do { (s)->flags &= ~(__SERR | __SEOF); } while(0) +#endif /* !defined(__DOXYGEN__) */ + +/** + Test the end-of-file flag of \c stream. This flag can only be cleared + by a call to clearerr(). + */ +extern int feof(FILE *__stream); + +#if !defined(__DOXYGEN__) +/* fast inlined version of feof() */ +#define feof(s) ((s)->flags & __SEOF) +#endif /* !defined(__DOXYGEN__) */ + +/** + Test the error flag of \c stream. This flag can only be cleared + by a call to clearerr(). + */ +extern int ferror(FILE *__stream); + +#if !defined(__DOXYGEN__) +/* fast inlined version of ferror() */ +#define ferror(s) ((s)->flags & __SERR) +#endif /* !defined(__DOXYGEN__) */ + +extern int vfscanf(FILE *__stream, const char *__fmt, va_list __ap); + +/** + Variant of vfscanf() using a \c fmt string in program memory. + */ +extern int vfscanf_P(FILE *__stream, const char *__fmt, va_list __ap); + +/** + The function \c fscanf performs formatted input, reading the + input data from \c stream. + + See vfscanf() for details. + */ +extern int fscanf(FILE *__stream, const char *__fmt, ...); + +/** + Variant of fscanf() using a \c fmt string in program memory. + */ +extern int fscanf_P(FILE *__stream, const char *__fmt, ...); + +/** + The function \c scanf performs formatted input from stream \c stdin. + + See vfscanf() for details. + */ +extern int scanf(const char *__fmt, ...); + +/** + Variant of scanf() where \c fmt resides in program memory. + */ +extern int scanf_P(const char *__fmt, ...); + +/** + The function \c vscanf performs formatted input from stream + \c stdin, taking a variable argument list as in vfscanf(). + + See vfscanf() for details. +*/ +extern int vscanf(const char *__fmt, va_list __ap); + +/** + The function \c sscanf performs formatted input, reading the + input data from the buffer pointed to by \c buf. + + See vfscanf() for details. + */ +extern int sscanf(const char *__buf, const char *__fmt, ...); + +/** + Variant of sscanf() using a \c fmt string in program memory. + */ +extern int sscanf_P(const char *__buf, const char *__fmt, ...); + +#if defined(__DOXYGEN__) +/** + Flush \c stream. + + This is a null operation provided for source-code compatibility + only, as the standard IO implementation currently does not perform + any buffering. + */ +extern int fflush(FILE *stream); +#else +static __inline__ int fflush(FILE *stream __attribute__((unused))) +{ + return 0; +} +#endif + +#ifdef __cplusplus +} +#endif + +/*@}*/ + +/* + * The following constants are currently not used by avr-libc's + * stdio subsystem. They are defined here since the gcc build + * environment expects them to be here. + */ +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#endif /* __ASSEMBLER */ + +#endif /* _STDLIB_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/stdlib.h b/arduino-0018-windows/hardware/tools/avr/avr/include/stdlib.h new file mode 100644 index 0000000..25511a3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/stdlib.h @@ -0,0 +1,595 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + Copyright (c) 2004,2007 Joerg Wunsch + + Portions of documentation Copyright (c) 1990, 1991, 1993, 1994 + The Regents of the University of California. + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + $Id: stdlib.h,v 1.33.2.2 2008/03/16 13:44:44 dmix Exp $ +*/ + +#ifndef _STDLIB_H_ +#define _STDLIB_H_ 1 + +#ifndef __ASSEMBLER__ + +#define __need_NULL +#define __need_size_t +#define __need_wchar_t +#include + +#ifndef __ptr_t +#define __ptr_t void * +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file */ + +/** \defgroup avr_stdlib : General utilities + \code #include \endcode + + This file declares some basic C macros and functions as + defined by the ISO standard, plus some AVR-specific extensions. +*/ + +/*@{*/ +/** Result type for function div(). */ +typedef struct { + int quot; /**< The Quotient. */ + int rem; /**< The Remainder. */ +} div_t; + +/** Result type for function ldiv(). */ +typedef struct { + long quot; /**< The Quotient. */ + long rem; /**< The Remainder. */ +} ldiv_t; + +/** Comparision function type for qsort(), just for convenience. */ +typedef int (*__compar_fn_t)(const void *, const void *); + +#ifndef __DOXYGEN__ + +#ifndef __ATTR_CONST__ +#define __ATTR_CONST__ __attribute__((__const__)) +#endif + +#ifndef __ATTR_MALLOC__ +#define __ATTR_MALLOC__ __attribute__((__malloc__)) +#endif + +#ifndef __ATTR_NORETURN__ +#define __ATTR_NORETURN__ __attribute__((__noreturn__)) +#endif + +#ifndef __ATTR_PURE__ +#define __ATTR_PURE__ __attribute__((__pure__)) +#endif + +#endif + +/** The abort() function causes abnormal program termination to occur. + This realization disables interrupts and jumps to _exit() function + with argument equal to 1. In the limited AVR environment, execution is + effectively halted by entering an infinite loop. */ +extern void abort(void) __ATTR_NORETURN__; + +/** The abs() function computes the absolute value of the integer \c i. + \note The abs() and labs() functions are builtins of gcc. +*/ +extern int abs(int __i) __ATTR_CONST__; +#ifndef __DOXYGEN__ +#define abs(__i) __builtin_abs(__i) +#endif + +/** The labs() function computes the absolute value of the long integer + \c i. + \note The abs() and labs() functions are builtins of gcc. +*/ +extern long labs(long __i) __ATTR_CONST__; +#ifndef __DOXYGEN__ +#define labs(__i) __builtin_labs(__i) +#endif + +/** + The bsearch() function searches an array of \c nmemb objects, the + initial member of which is pointed to by \c base, for a member + that matches the object pointed to by \c key. The size of each + member of the array is specified by \c size. + + The contents of the array should be in ascending sorted order + according to the comparison function referenced by \c compar. + The \c compar routine is expected to have two arguments which + point to the key object and to an array member, in that order, + and should return an integer less than, equal to, or greater than + zero if the key object is found, respectively, to be less than, + to match, or be greater than the array member. + + The bsearch() function returns a pointer to a matching member of + the array, or a null pointer if no match is found. If two + members compare as equal, which member is matched is unspecified. +*/ +extern void *bsearch(const void *__key, const void *__base, size_t __nmemb, + size_t __size, int (*__compar)(const void *, const void *)); + +/* __divmodhi4 and __divmodsi4 from libgcc.a */ +/** + The div() function computes the value \c num/denom and returns + the quotient and remainder in a structure named \c div_t that + contains two int members named \c quot and \c rem. +*/ +extern div_t div(int __num, int __denom) __asm__("__divmodhi4") __ATTR_CONST__; +/** + The ldiv() function computes the value \c num/denom and returns + the quotient and remainder in a structure named \c ldiv_t that + contains two long integer members named \c quot and \c rem. +*/ +extern ldiv_t ldiv(long __num, long __denom) __asm__("__divmodsi4") __ATTR_CONST__; + +/** + The qsort() function is a modified partition-exchange sort, or + quicksort. + + The qsort() function sorts an array of \c nmemb objects, the + initial member of which is pointed to by \c base. The size of + each object is specified by \c size. The contents of the array + base are sorted in ascending order according to a comparison + function pointed to by \c compar, which requires two arguments + pointing to the objects being compared. + + The comparison function must return an integer less than, equal + to, or greater than zero if the first argument is considered to + be respectively less than, equal to, or greater than the second. +*/ +extern void qsort(void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar); + +/** + The strtol() function converts the string in \c nptr to a long + value. The conversion is done according to the given base, which + must be between 2 and 36 inclusive, or be the special value 0. + + The string may begin with an arbitrary amount of white space (as + determined by isspace()) followed by a single optional \c '+' or \c '-' + sign. If \c base is zero or 16, the string may then include a + \c "0x" prefix, and the number will be read in base 16; otherwise, + a zero base is taken as 10 (decimal) unless the next character is + \c '0', in which case it is taken as 8 (octal). + + The remainder of the string is converted to a long value in the + obvious manner, stopping at the first character which is not a + valid digit in the given base. (In bases above 10, the letter \c 'A' + in either upper or lower case represents 10, \c 'B' represents 11, + and so forth, with \c 'Z' representing 35.) + + If \c endptr is not NULL, strtol() stores the address of the first + invalid character in \c *endptr. If there were no digits at all, + however, strtol() stores the original value of \c nptr in \c + *endptr. (Thus, if \c *nptr is not \c '\\0' but \c **endptr is \c '\\0' + on return, the entire string was valid.) + + The strtol() function returns the result of the conversion, unless + the value would underflow or overflow. If no conversion could be + performed, 0 is returned. If an overflow or underflow occurs, \c + errno is set to \ref avr_errno "ERANGE" and the function return value + is clamped to \c LONG_MIN or \c LONG_MAX, respectively. +*/ +extern long strtol(const char *__nptr, char **__endptr, int __base); + +/** + The strtoul() function converts the string in \c nptr to an + unsigned long value. The conversion is done according to the + given base, which must be between 2 and 36 inclusive, or be the + special value 0. + + The string may begin with an arbitrary amount of white space (as + determined by isspace()) followed by a single optional \c '+' or \c '-' + sign. If \c base is zero or 16, the string may then include a + \c "0x" prefix, and the number will be read in base 16; otherwise, + a zero base is taken as 10 (decimal) unless the next character is + \c '0', in which case it is taken as 8 (octal). + + The remainder of the string is converted to an unsigned long value + in the obvious manner, stopping at the first character which is + not a valid digit in the given base. (In bases above 10, the + letter \c 'A' in either upper or lower case represents 10, \c 'B' + represents 11, and so forth, with \c 'Z' representing 35.) + + If \c endptr is not NULL, strtoul() stores the address of the first + invalid character in \c *endptr. If there were no digits at all, + however, strtoul() stores the original value of \c nptr in \c + *endptr. (Thus, if \c *nptr is not \c '\\0' but \c **endptr is \c '\\0' + on return, the entire string was valid.) + + The strtoul() function return either the result of the conversion + or, if there was a leading minus sign, the negation of the result + of the conversion, unless the original (non-negated) value would + overflow; in the latter case, strtoul() returns ULONG_MAX, and \c + errno is set to \ref avr_errno "ERANGE". If no conversion could + be performed, 0 is returned. +*/ +extern unsigned long strtoul(const char *__nptr, char **__endptr, int __base); + +/** + The atol() function converts the initial portion of the string + pointed to by \p s to long integer representation. In contrast to + + \code strtol(s, (char **)NULL, 10); \endcode + + this function does not detect overflow (\c errno is not changed and + the result value is not predictable), uses smaller memory (flash and + stack) and works more quickly. +*/ +extern long atol(const char *__s) __ATTR_PURE__; + +/** + The atoi() function converts the initial portion of the string + pointed to by \p s to integer representation. In contrast to + + \code (int)strtol(s, (char **)NULL, 10); \endcode + + this function does not detect overflow (\c errno is not changed and + the result value is not predictable), uses smaller memory (flash and + stack) and works more quickly. +*/ +extern int atoi(const char *__s) __ATTR_PURE__; + +/** + The exit() function terminates the application. Since there is no + environment to return to, \c status is ignored, and code execution + will eventually reach an infinite loop, thereby effectively halting + all code processing. Before entering the infinite loop, interrupts + are globally disabled. + + In a C++ context, global destructors will be called before halting + execution. +*/ +extern void exit(int __status) __ATTR_NORETURN__; + +/** + The malloc() function allocates \c size bytes of memory. + If malloc() fails, a NULL pointer is returned. + + Note that malloc() does \e not initialize the returned memory to + zero bytes. + + See the chapter about \ref malloc "malloc() usage" for implementation + details. +*/ +extern void *malloc(size_t __size) __ATTR_MALLOC__; + +/** + The free() function causes the allocated memory referenced by \c + ptr to be made available for future allocations. If \c ptr is + NULL, no action occurs. +*/ +extern void free(void *__ptr); + +/** + \c malloc() \ref malloc_tunables "tunable". +*/ +extern size_t __malloc_margin; + +/** + \c malloc() \ref malloc_tunables "tunable". +*/ +extern char *__malloc_heap_start; + +/** + \c malloc() \ref malloc_tunables "tunable". +*/ +extern char *__malloc_heap_end; + +/** + Allocate \c nele elements of \c size each. Identical to calling + \c malloc() using nele * size as argument, except the + allocated memory will be cleared to zero. +*/ +extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__; + +/** + The realloc() function tries to change the size of the region + allocated at \c ptr to the new \c size value. It returns a + pointer to the new region. The returned pointer might be the + same as the old pointer, or a pointer to a completely different + region. + + The contents of the returned region up to either the old or the new + size value (whatever is less) will be identical to the contents of + the old region, even in case a new region had to be allocated. + + It is acceptable to pass \c ptr as NULL, in which case realloc() + will behave identical to malloc(). + + If the new memory cannot be allocated, realloc() returns NULL, and + the region at \c ptr will not be changed. +*/ +extern void *realloc(void *__ptr, size_t __size) __ATTR_MALLOC__; + +extern double strtod(const char *__nptr, char **__endptr); + +extern double atof(const char *__nptr); + +/** Highest number that can be generated by rand(). */ +#define RAND_MAX 0x7FFF + +/** + The rand() function computes a sequence of pseudo-random integers in the + range of 0 to \c RAND_MAX (as defined by the header file ). + + The srand() function sets its argument \c seed as the seed for a new + sequence of pseudo-random numbers to be returned by rand(). These + sequences are repeatable by calling srand() with the same seed value. + + If no seed value is provided, the functions are automatically seeded with + a value of 1. + + In compliance with the C standard, these functions operate on + \c int arguments. Since the underlying algorithm already uses + 32-bit calculations, this causes a loss of precision. See + \c random() for an alternate set of functions that retains full + 32-bit precision. +*/ +extern int rand(void); +/** + Pseudo-random number generator seeding; see rand(). +*/ +extern void srand(unsigned int __seed); + +/** + Variant of rand() that stores the context in the user-supplied + variable located at \c ctx instead of a static library variable + so the function becomes re-entrant. +*/ +extern int rand_r(unsigned long *__ctx); +/*@}*/ + +/*@{*/ +/** \name Non-standard (i.e. non-ISO C) functions. + \ingroup avr_stdlib +*/ +/** + \brief Convert an integer to a string. + + The function itoa() converts the integer value from \c val into an + ASCII representation that will be stored under \c s. The caller + is responsible for providing sufficient storage in \c s. + + \note The minimal size of the buffer \c s depends on the choice of + radix. For example, if the radix is 2 (binary), you need to supply a buffer + with a minimal length of 8 * sizeof (int) + 1 characters, i.e. one + character for each bit plus one for the string terminator. Using a larger + radix will require a smaller minimal buffer size. + + \warning If the buffer is too small, you risk a buffer overflow. + + Conversion is done using the \c radix as base, which may be a + number between 2 (binary conversion) and up to 36. If \c radix + is greater than 10, the next digit after \c '9' will be the letter + \c 'a'. + + If radix is 10 and val is negative, a minus sign will be prepended. + + The itoa() function returns the pointer passed as \c s. +*/ +extern char *itoa(int __val, char *__s, int __radix); + +/** + \ingroup avr_stdlib + + \brief Convert a long integer to a string. + + The function ltoa() converts the long integer value from \c val into an + ASCII representation that will be stored under \c s. The caller + is responsible for providing sufficient storage in \c s. + + \note The minimal size of the buffer \c s depends on the choice of + radix. For example, if the radix is 2 (binary), you need to supply a buffer + with a minimal length of 8 * sizeof (long int) + 1 characters, i.e. one + character for each bit plus one for the string terminator. Using a larger + radix will require a smaller minimal buffer size. + + \warning If the buffer is too small, you risk a buffer overflow. + + Conversion is done using the \c radix as base, which may be a + number between 2 (binary conversion) and up to 36. If \c radix + is greater than 10, the next digit after \c '9' will be the letter + \c 'a'. + + If radix is 10 and val is negative, a minus sign will be prepended. + + The ltoa() function returns the pointer passed as \c s. +*/ +extern char *ltoa(long int __val, char *__s, int __radix); + +/** + \ingroup avr_stdlib + + \brief Convert an unsigned integer to a string. + + The function utoa() converts the unsigned integer value from \c val into an + ASCII representation that will be stored under \c s. The caller + is responsible for providing sufficient storage in \c s. + + \note The minimal size of the buffer \c s depends on the choice of + radix. For example, if the radix is 2 (binary), you need to supply a buffer + with a minimal length of 8 * sizeof (unsigned int) + 1 characters, i.e. one + character for each bit plus one for the string terminator. Using a larger + radix will require a smaller minimal buffer size. + + \warning If the buffer is too small, you risk a buffer overflow. + + Conversion is done using the \c radix as base, which may be a + number between 2 (binary conversion) and up to 36. If \c radix + is greater than 10, the next digit after \c '9' will be the letter + \c 'a'. + + The utoa() function returns the pointer passed as \c s. +*/ +extern char *utoa(unsigned int __val, char *__s, int __radix); + +/** + \ingroup avr_stdlib + \brief Convert an unsigned long integer to a string. + + The function ultoa() converts the unsigned long integer value from + \c val into an + ASCII representation that will be stored under \c s. The caller + is responsible for providing sufficient storage in \c s. + + \note The minimal size of the buffer \c s depends on the choice of + radix. For example, if the radix is 2 (binary), you need to supply a buffer + with a minimal length of 8 * sizeof (unsigned long int) + 1 characters, + i.e. one character for each bit plus one for the string terminator. Using a + larger radix will require a smaller minimal buffer size. + + \warning If the buffer is too small, you risk a buffer overflow. + + Conversion is done using the \c radix as base, which may be a + number between 2 (binary conversion) and up to 36. If \c radix + is greater than 10, the next digit after \c '9' will be the letter + \c 'a'. + + The ultoa() function returns the pointer passed as \c s. +*/ +extern char *ultoa(unsigned long int __val, char *__s, int __radix); + +/** \ingroup avr_stdlib +Highest number that can be generated by random(). */ +#define RANDOM_MAX 0x7FFFFFFF + +/** + \ingroup avr_stdlib + The random() function computes a sequence of pseudo-random integers in the + range of 0 to \c RANDOM_MAX (as defined by the header file ). + + The srandom() function sets its argument \c seed as the seed for a new + sequence of pseudo-random numbers to be returned by rand(). These + sequences are repeatable by calling srandom() with the same seed value. + + If no seed value is provided, the functions are automatically seeded with + a value of 1. +*/ +extern long random(void); +/** + \ingroup avr_stdlib + Pseudo-random number generator seeding; see random(). +*/ +extern void srandom(unsigned long __seed); + +/** + \ingroup avr_stdlib + Variant of random() that stores the context in the user-supplied + variable located at \c ctx instead of a static library variable + so the function becomes re-entrant. +*/ +extern long random_r(unsigned long *__ctx); +#endif /* __ASSEMBLER */ +/*@}*/ + +/*@{*/ +/** \name Conversion functions for double arguments. + \ingroup avr_stdlib + Note that these functions are not located in the default library, + libc.a, but in the mathematical library, libm.a. + So when linking the application, the \c -lm option needs to be + specified. +*/ +/** \ingroup avr_stdlib + Bit value that can be passed in \c flags to dtostre(). */ +#define DTOSTR_ALWAYS_SIGN 0x01 /* put '+' or ' ' for positives */ +/** \ingroup avr_stdlib + Bit value that can be passed in \c flags to dtostre(). */ +#define DTOSTR_PLUS_SIGN 0x02 /* put '+' rather than ' ' */ +/** \ingroup avr_stdlib + Bit value that can be passed in \c flags to dtostre(). */ +#define DTOSTR_UPPERCASE 0x04 /* put 'E' rather 'e' */ + +#ifndef __ASSEMBLER__ + +/** + \ingroup avr_stdlib + The dtostre() function converts the double value passed in \c val into + an ASCII representation that will be stored under \c s. The caller + is responsible for providing sufficient storage in \c s. + + Conversion is done in the format \c "[-]d.ddde±dd" where there is + one digit before the decimal-point character and the number of + digits after it is equal to the precision \c prec; if the precision + is zero, no decimal-point character appears. If \c flags has the + DTOSTRE_UPPERCASE bit set, the letter \c 'E' (rather than \c 'e' ) will be + used to introduce the exponent. The exponent always contains two + digits; if the value is zero, the exponent is \c "00". + + If \c flags has the DTOSTRE_ALWAYS_SIGN bit set, a space character + will be placed into the leading position for positive numbers. + + If \c flags has the DTOSTRE_PLUS_SIGN bit set, a plus sign will be + used instead of a space character in this case. + + The dtostre() function returns the pointer to the converted string \c s. +*/ +extern char *dtostre(double __val, char *__s, unsigned char __prec, + unsigned char __flags); + +/** + \ingroup avr_stdlib + The dtostrf() function converts the double value passed in \c val into + an ASCII representationthat will be stored under \c s. The caller + is responsible for providing sufficient storage in \c s. + + Conversion is done in the format \c "[-]d.ddd". The minimum field + width of the output string (including the \c '.' and the possible + sign for negative values) is given in \c width, and \c prec determines + the number of digits after the decimal sign. \c width is signed value, + negative for left adjustment. + + The dtostrf() function returns the pointer to the converted string \c s. +*/ +extern char *dtostrf(double __val, signed char __width, + unsigned char __prec, char *__s); + +/*@}*/ + +#if 0 /* not yet implemented */ +extern int atexit(void (*)(void)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __ASSEMBLER */ + +#endif /* _STDLIB_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/string.h b/arduino-0018-windows/hardware/tools/avr/avr/include/string.h new file mode 100644 index 0000000..3537a6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/string.h @@ -0,0 +1,154 @@ +/* Copyright (c) 2002,2007 Marek Michalkiewicz + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: string.h,v 1.19.2.3 2008/08/20 16:18:54 arcanum Exp $ */ + +/* + string.h + + Contributors: + Created by Marek Michalkiewicz + */ + +#ifndef _STRING_H_ +#define _STRING_H_ 1 + +#define __need_NULL +#define __need_size_t +#include + +#ifndef __ATTR_PURE__ +#define __ATTR_PURE__ __attribute__((__pure__)) +#endif + +#ifndef __ATTR_CONST__ +# define __ATTR_CONST__ __attribute__((__const__)) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file */ +/** \defgroup avr_string : Strings + \code #include \endcode + + The string functions perform string operations on NULL terminated + strings. + + \note If the strings you are working on resident in program space (flash), + you will need to use the string functions described in \ref avr_pgmspace. */ + + +/** \ingroup avr_string + + This macro finds the first (least significant) bit set in the + input value. + + This macro is very similar to the function ffs() except that + it evaluates its argument at compile-time, so it should only + be applied to compile-time constant expressions where it will + reduce to a constant itself. + Application of this macro to expressions that are not constant + at compile-time is not recommended, and might result in a huge + amount of code generated. + + \returns The _FFS() macro returns the position of the first + (least significant) bit set in the word val, or 0 if no bits are set. + The least significant bit is position 1. +*/ +#if defined(__DOXYGEN__) +#define _FFS(x) +#else /* !DOXYGEN */ +#define _FFS(x) \ + ( (x) & 1 ? 1 \ + : (x) & 2 ? 2 \ + : (x) & 4 ? 3 \ + : (x) & 010 ? 4 \ + : (x) & 020 ? 5 \ + : (x) & 040 ? 6 \ + : (x) & 0100 ? 7 \ + : (x) & 0200 ? 8 \ + : (x) & 0400 ? 9 \ + : (x) & 01000 ? 10 \ + : (x) & 02000 ? 11 \ + : (x) & 04000 ? 12 \ + : (x) & 010000 ? 13 \ + : (x) & 020000 ? 14 \ + : (x) & 040000 ? 15 \ + : (x) & 0100000 ? 16 \ + : 0 ) +#endif /* DOXYGEN */ + +extern int ffs (int __val) __ATTR_CONST__; +extern int ffsl (long __val) __ATTR_CONST__; +extern int ffsll (long long __val) __ATTR_CONST__; +extern void *memccpy(void *, const void *, int, size_t); +extern void *memchr(const void *, int, size_t) __ATTR_PURE__; +extern int memcmp(const void *, const void *, size_t) __ATTR_PURE__; +extern void *memcpy(void *, const void *, size_t); +extern void *memmem(const void *, size_t, const void *, size_t) __ATTR_PURE__; +extern void *memmove(void *, const void *, size_t); +extern void *memrchr(const void *, int, size_t) __ATTR_PURE__; +extern void *memset(void *, int, size_t); +extern char *strcat(char *, const char *); +extern char *strchr(const char *, int) __ATTR_PURE__; +extern char *strchrnul(const char *, int) __ATTR_PURE__; +extern int strcmp(const char *, const char *) __ATTR_PURE__; +extern char *strcpy(char *, const char *); +extern int strcasecmp(const char *, const char *) __ATTR_PURE__; +extern char *strcasestr(const char *, const char *) __ATTR_PURE__; +extern size_t strcspn(const char *__s, const char *__reject) __ATTR_PURE__; +extern char *strdup(const char *s1); +extern size_t strlcat(char *, const char *, size_t); +extern size_t strlcpy(char *, const char *, size_t); +extern size_t strlen(const char *) __ATTR_PURE__; +extern char *strlwr(char *); +extern char *strncat(char *, const char *, size_t); +extern int strncmp(const char *, const char *, size_t) __ATTR_PURE__; +extern char *strncpy(char *, const char *, size_t); +extern int strncasecmp(const char *, const char *, size_t) __ATTR_PURE__; +extern size_t strnlen(const char *, size_t) __ATTR_PURE__; +extern char *strpbrk(const char *__s, const char *__accept) __ATTR_PURE__; +extern char *strrchr(const char *, int) __ATTR_PURE__; +extern char *strrev(char *); +extern char *strsep(char **, const char *); +extern size_t strspn(const char *__s, const char *__accept) __ATTR_PURE__; +extern char *strstr(const char *, const char *) __ATTR_PURE__; +extern char *strtok(char *, const char *); +extern char *strtok_r(char *, const char *, char **); +extern char *strupr(char *); + +#ifdef __cplusplus +} +#endif + +#endif /* _STRING_H_ */ + diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/util/atomic.h b/arduino-0018-windows/hardware/tools/avr/avr/include/util/atomic.h new file mode 100644 index 0000000..cef0f73 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/util/atomic.h @@ -0,0 +1,306 @@ +/* Copyright (c) 2007 Dean Camera + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: atomic.h,v 1.3 2007/12/20 14:17:56 joerg_wunsch Exp $ */ + +#ifndef _UTIL_ATOMIC_H_ +#define _UTIL_ATOMIC_H_ 1 + +#include +#include + +#if !defined(__DOXYGEN__) +/* Internal helper functions. */ +static __inline__ uint8_t __iSeiRetVal(void) +{ + sei(); + return 1; +} + +static __inline__ uint8_t __iCliRetVal(void) +{ + cli(); + return 1; +} + +static __inline__ void __iSeiParam(const uint8_t *__s) +{ + sei(); + __asm__ volatile ("" ::: "memory"); + (void)__s; +} + +static __inline__ void __iCliParam(const uint8_t *__s) +{ + cli(); + __asm__ volatile ("" ::: "memory"); + (void)__s; +} + +static __inline__ void __iRestore(const uint8_t *__s) +{ + SREG = *__s; + __asm__ volatile ("" ::: "memory"); +} +#endif /* !__DOXYGEN__ */ + +/** \file */ +/** \defgroup util_atomic Atomically and Non-Atomically Executed Code Blocks + + \code + #include + \endcode + + \note The macros in this header file require the ISO/IEC 9899:1999 + ("ISO C99") feature of for loop variables that are declared inside + the for loop itself. For that reason, this header file can only + be used if the standard level of the compiler (option --std=) is + set to either \c c99 or \c gnu99. + + The macros in this header file deal with code blocks that are + guaranteed to be excuted Atomically or Non-Atmomically. The term + "Atomic" in this context refers to the unability of the respective + code to be interrupted. + + These macros operate via automatic manipulation of the Global + Interrupt Status (I) bit of the SREG register. Exit paths from + both block types are all managed automatically without the need + for special considerations, i. e. the interrupt status will be + restored to the same value it has been when entering the + respective block. + + A typical example that requires atomic access is a 16 (or more) + bit variable that is shared between the main execution path and an + ISR. While declaring such a variable as volatile ensures that the + compiler will not optimize accesses to it away, it does not + guarantee atomic access to it. Assuming the following example: + + \code +#include +#include +#include + +volatile uint16_t ctr; + +ISR(TIMER1_OVF_vect) +{ + ctr--; +} + +... +int +main(void) +{ + ... + ctr = 0x200; + start_timer(); + while (ctr != 0) + // wait + ; + ... +} + \endcode + + There is a chance where the main context will exit its wait loop + when the variable \c ctr just reached the value 0xFF. This happens + because the compiler cannot natively access a 16-bit variable + atomically in an 8-bit CPU. So the variable is for example at + 0x100, the compiler then tests the low byte for 0, which succeeds. + It then proceeds to test the high byte, but that moment the ISR + triggers, and the main context is interrupted. The ISR will + decrement the variable from 0x100 to 0xFF, and the main context + proceeds. It now tests the high byte of the variable which is + (now) also 0, so it concludes the variable has reached 0, and + terminates the loop. + + Using the macros from this header file, the above code can be + rewritten like: + + \code +#include +#include +#include +#include + +volatile uint16_t ctr; + +ISR(TIMER1_OVF_vect) +{ + ctr--; +} + +... +int +main(void) +{ + ... + ctr = 0x200; + start_timer(); + sei(); + uint16_t ctr_copy; + do + { + ATOMIC_BLOCK(ATOMIC_FORCEON) + { + ctr_copy = ctr; + } + } + while (ctr_copy != 0); + ... +} + \endcode + + This will install the appropriate interrupt protection before + accessing variable \c ctr, so it is guaranteed to be consistently + tested. If the global interrupt state were uncertain before + entering the ATOMIC_BLOCK, it should be executed with the + parameter ATOMIC_RESTORESTATE rather than ATOMIC_FORCEON. + +*/ + +/** \def ATOMIC_BLOCK(type) + \ingroup util_atomic + + Creates a block of code that is guaranteed to be executed + atomically. Upon entering the block the Global Interrupt Status + flag in SREG is disabled, and re-enabled upon exiting the block + from any exit path. + + Two possible macro parameters are permitted, ATOMIC_RESTORESTATE + and ATOMIC_FORCEON. +*/ +#if defined(__DOXYGEN__) +#define ATOMIC_BLOCK(type) +#else +#define ATOMIC_BLOCK(type) for ( type, __ToDo = __iCliRetVal(); \ + __ToDo ; __ToDo = 0 ) +#endif /* __DOXYGEN__ */ + +/** \def NONATOMIC_BLOCK(type) + \ingroup util_atomic + + Creates a block of code that is executed non-atomically. Upon + entering the block the Global Interrupt Status flag in SREG is + enabled, and disabled upon exiting the block from any exit + path. This is useful when nested inside ATOMIC_BLOCK sections, + allowing for non-atomic execution of small blocks of code while + maintaining the atomic access of the other sections of the parent + ATOMIC_BLOCK. + + Two possible macro parameters are permitted, + NONATOMIC_RESTORESTATE and NONATOMIC_FORCEOFF. +*/ +#if defined(__DOXYGEN__) +#define NONATOMIC_BLOCK(type) +#else +#define NONATOMIC_BLOCK(type) for ( type, __ToDo = __iSeiRetVal(); \ + __ToDo ; __ToDo = 0 ) +#endif /* __DOXYGEN__ */ + +/** \def ATOMIC_RESTORESTATE + \ingroup util_atomic + + This is a possible parameter for ATOMIC_BLOCK. When used, it will + cause the ATOMIC_BLOCK to restore the previous state of the SREG + register, saved before the Global Interrupt Status flag bit was + disabled. The net effect of this is to make the ATOMIC_BLOCK's + contents guaranteed atomic, without changing the state of the + Global Interrupt Status flag when execution of the block + completes. +*/ +#if defined(__DOXYGEN__) +#define ATOMIC_RESTORESTATE +#else +#define ATOMIC_RESTORESTATE uint8_t sreg_save \ + __attribute__((__cleanup__(__iRestore))) = SREG +#endif /* __DOXYGEN__ */ + +/** \def ATOMIC_FORCEON + \ingroup util_atomic + + This is a possible parameter for ATOMIC_BLOCK. When used, it will + cause the ATOMIC_BLOCK to force the state of the SREG register on + exit, enabling the Global Interrupt Status flag bit. This saves on + flash space as the previous value of the SREG register does not + need to be saved at the start of the block. + + Care should be taken that ATOMIC_FORCEON is only used when it is + known that interrupts are enabled before the block's execution or + when the side effects of enabling global interrupts at the block's + completion are known and understood. +*/ +#if defined(__DOXYGEN__) +#define ATOMIC_FORCEON +#else +#define ATOMIC_FORCEON uint8_t sreg_save \ + __attribute__((__cleanup__(__iSeiParam))) = 0 +#endif /* __DOXYGEN__ */ + +/** \def NONATOMIC_RESTORESTATE + \ingroup util_atomic + + This is a possible parameter for NONATOMIC_BLOCK. When used, it + will cause the NONATOMIC_BLOCK to restore the previous state of + the SREG register, saved before the Global Interrupt Status flag + bit was enabled. The net effect of this is to make the + NONATOMIC_BLOCK's contents guaranteed non-atomic, without changing + the state of the Global Interrupt Status flag when execution of + the block completes. +*/ +#if defined(__DOXYGEN__) +#define NONATOMIC_RESTORESTATE +#else +#define NONATOMIC_RESTORESTATE uint8_t sreg_save \ + __attribute__((__cleanup__(__iRestore))) = SREG +#endif /* __DOXYGEN__ */ + +/** \def NONATOMIC_FORCEOFF + \ingroup util_atomic + + This is a possible parameter for NONATOMIC_BLOCK. When used, it + will cause the NONATOMIC_BLOCK to force the state of the SREG + register on exit, disabling the Global Interrupt Status flag + bit. This saves on flash space as the previous value of the SREG + register does not need to be saved at the start of the block. + + Care should be taken that NONATOMIC_FORCEOFF is only used when it + is known that interrupts are disabled before the block's execution + or when the side effects of disabling global interrupts at the + block's completion are known and understood. +*/ +#if defined(__DOXYGEN__) +#define NONATOMIC_FORCEOFF +#else +#define NONATOMIC_FORCEOFF uint8_t sreg_save \ + __attribute__((__cleanup__(__iCliParam))) = 0 +#endif /* __DOXYGEN__ */ + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/util/crc16.h b/arduino-0018-windows/hardware/tools/avr/avr/include/util/crc16.h new file mode 100644 index 0000000..79d67d6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/util/crc16.h @@ -0,0 +1,336 @@ +/* Copyright (c) 2002, 2003, 2004 Marek Michalkiewicz + Copyright (c) 2005, 2007 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: crc16.h,v 1.4 2007/01/23 15:32:48 joerg_wunsch Exp $ */ + +#ifndef _UTIL_CRC16_H_ +#define _UTIL_CRC16_H_ + +#include + +/** \file */ +/** \defgroup util_crc : CRC Computations + \code#include \endcode + + This header file provides a optimized inline functions for calculating + cyclic redundancy checks (CRC) using common polynomials. + + \par References: + + \par + + See the Dallas Semiconductor app note 27 for 8051 assembler example and + general CRC optimization suggestions. The table on the last page of the + app note is the key to understanding these implementations. + + \par + + Jack Crenshaw's "Implementing CRCs" article in the January 1992 isue of \e + Embedded \e Systems \e Programming. This may be difficult to find, but it + explains CRC's in very clear and concise terms. Well worth the effort to + obtain a copy. + + A typical application would look like: + + \code + // Dallas iButton test vector. + uint8_t serno[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0, 0xa2 }; + + int + checkcrc(void) + { + uint8_t crc = 0, i; + + for (i = 0; i < sizeof serno / sizeof serno[0]; i++) + crc = _crc_ibutton_update(crc, serno[i]); + + return crc; // must be 0 + } + \endcode +*/ + +/** \ingroup util_crc + Optimized CRC-16 calculation. + + Polynomial: x^16 + x^15 + x^2 + 1 (0xa001)
+ Initial value: 0xffff + + This CRC is normally used in disk-drive controllers. + + The following is the equivalent functionality written in C. + + \code + uint16_t + crc16_update(uint16_t crc, uint8_t a) + { + int i; + + crc ^= a; + for (i = 0; i < 8; ++i) + { + if (crc & 1) + crc = (crc >> 1) ^ 0xA001; + else + crc = (crc >> 1); + } + + return crc; + } + + \endcode */ + +static __inline__ uint16_t +_crc16_update(uint16_t __crc, uint8_t __data) +{ + uint8_t __tmp; + uint16_t __ret; + + __asm__ __volatile__ ( + "eor %A0,%2" "\n\t" + "mov %1,%A0" "\n\t" + "swap %1" "\n\t" + "eor %1,%A0" "\n\t" + "mov __tmp_reg__,%1" "\n\t" + "lsr %1" "\n\t" + "lsr %1" "\n\t" + "eor %1,__tmp_reg__" "\n\t" + "mov __tmp_reg__,%1" "\n\t" + "lsr %1" "\n\t" + "eor %1,__tmp_reg__" "\n\t" + "andi %1,0x07" "\n\t" + "mov __tmp_reg__,%A0" "\n\t" + "mov %A0,%B0" "\n\t" + "lsr %1" "\n\t" + "ror __tmp_reg__" "\n\t" + "ror %1" "\n\t" + "mov %B0,__tmp_reg__" "\n\t" + "eor %A0,%1" "\n\t" + "lsr __tmp_reg__" "\n\t" + "ror %1" "\n\t" + "eor %B0,__tmp_reg__" "\n\t" + "eor %A0,%1" + : "=r" (__ret), "=d" (__tmp) + : "r" (__data), "0" (__crc) + : "r0" + ); + return __ret; +} + +/** \ingroup util_crc + Optimized CRC-XMODEM calculation. + + Polynomial: x^16 + x^12 + x^5 + 1 (0x1021)
+ Initial value: 0x0 + + This is the CRC used by the Xmodem-CRC protocol. + + The following is the equivalent functionality written in C. + + \code + uint16_t + crc_xmodem_update (uint16_t crc, uint8_t data) + { + int i; + + crc = crc ^ ((uint16_t)data << 8); + for (i=0; i<8; i++) + { + if (crc & 0x8000) + crc = (crc << 1) ^ 0x1021; + else + crc <<= 1; + } + + return crc; + } + \endcode */ + +static __inline__ uint16_t +_crc_xmodem_update(uint16_t __crc, uint8_t __data) +{ + uint16_t __ret; /* %B0:%A0 (alias for __crc) */ + uint8_t __tmp1; /* %1 */ + uint8_t __tmp2; /* %2 */ + /* %3 __data */ + + __asm__ __volatile__ ( + "eor %B0,%3" "\n\t" /* crc.hi ^ data */ + "mov __tmp_reg__,%B0" "\n\t" + "swap __tmp_reg__" "\n\t" /* swap(crc.hi ^ data) */ + + /* Calculate the ret.lo of the CRC. */ + "mov %1,__tmp_reg__" "\n\t" + "andi %1,0x0f" "\n\t" + "eor %1,%B0" "\n\t" + "mov %2,%B0" "\n\t" + "eor %2,__tmp_reg__" "\n\t" + "lsl %2" "\n\t" + "andi %2,0xe0" "\n\t" + "eor %1,%2" "\n\t" /* __tmp1 is now ret.lo. */ + + /* Calculate the ret.hi of the CRC. */ + "mov %2,__tmp_reg__" "\n\t" + "eor %2,%B0" "\n\t" + "andi %2,0xf0" "\n\t" + "lsr %2" "\n\t" + "mov __tmp_reg__,%B0" "\n\t" + "lsl __tmp_reg__" "\n\t" + "rol %2" "\n\t" + "lsr %B0" "\n\t" + "lsr %B0" "\n\t" + "lsr %B0" "\n\t" + "andi %B0,0x1f" "\n\t" + "eor %B0,%2" "\n\t" + "eor %B0,%A0" "\n\t" /* ret.hi is now ready. */ + "mov %A0,%1" "\n\t" /* ret.lo is now ready. */ + : "=d" (__ret), "=d" (__tmp1), "=d" (__tmp2) + : "r" (__data), "0" (__crc) + : "r0" + ); + return __ret; +} + +/** \ingroup util_crc + Optimized CRC-CCITT calculation. + + Polynomial: x^16 + x^12 + x^5 + 1 (0x8408)
+ Initial value: 0xffff + + This is the CRC used by PPP and IrDA. + + See RFC1171 (PPP protocol) and IrDA IrLAP 1.1 + + \note Although the CCITT polynomial is the same as that used by the Xmodem + protocol, they are quite different. The difference is in how the bits are + shifted through the alorgithm. Xmodem shifts the MSB of the CRC and the + input first, while CCITT shifts the LSB of the CRC and the input first. + + The following is the equivalent functionality written in C. + + \code + uint16_t + crc_ccitt_update (uint16_t crc, uint8_t data) + { + data ^= lo8 (crc); + data ^= data << 4; + + return ((((uint16_t)data << 8) | hi8 (crc)) ^ (uint8_t)(data >> 4) + ^ ((uint16_t)data << 3)); + } + \endcode */ + +static __inline__ uint16_t +_crc_ccitt_update (uint16_t __crc, uint8_t __data) +{ + uint16_t __ret; + + __asm__ __volatile__ ( + "eor %A0,%1" "\n\t" + + "mov __tmp_reg__,%A0" "\n\t" + "swap %A0" "\n\t" + "andi %A0,0xf0" "\n\t" + "eor %A0,__tmp_reg__" "\n\t" + + "mov __tmp_reg__,%B0" "\n\t" + + "mov %B0,%A0" "\n\t" + + "swap %A0" "\n\t" + "andi %A0,0x0f" "\n\t" + "eor __tmp_reg__,%A0" "\n\t" + + "lsr %A0" "\n\t" + "eor %B0,%A0" "\n\t" + + "eor %A0,%B0" "\n\t" + "lsl %A0" "\n\t" + "lsl %A0" "\n\t" + "lsl %A0" "\n\t" + "eor %A0,__tmp_reg__" + + : "=d" (__ret) + : "r" (__data), "0" (__crc) + : "r0" + ); + return __ret; +} + +/** \ingroup util_crc + Optimized Dallas (now Maxim) iButton 8-bit CRC calculation. + + Polynomial: x^8 + x^5 + x^4 + 1 (0x8C)
+ Initial value: 0x0 + + See http://www.maxim-ic.com/appnotes.cfm/appnote_number/27 + + The following is the equivalent functionality written in C. + + \code + uint8_t + _crc_ibutton_update(uint8_t crc, uint8_t data) + { + uint8_t i; + + crc = crc ^ data; + for (i = 0; i < 8; i++) + { + if (crc & 0x01) + crc = (crc >> 1) ^ 0x8C; + else + crc >>= 1; + } + + return crc; + } + \endcode +*/ + +static __inline__ uint8_t +_crc_ibutton_update(uint8_t __crc, uint8_t __data) +{ + uint8_t __i, __pattern; + __asm__ __volatile__ ( + " eor %0, %4" "\n\t" + " ldi %1, 8" "\n\t" + " ldi %2, 0x8C" "\n\t" + "1: bst %0, 0" "\n\t" + " lsr %0" "\n\t" + " brtc 2f" "\n\t" + " eor %0, %2" "\n\t" + "2: dec %1" "\n\t" + " brne 1b" "\n\t" + : "=r" (__crc), "=d" (__i), "=d" (__pattern) + : "0" (__crc), "r" (__data)); + return __crc; +} + +#endif /* _UTIL_CRC16_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/util/delay.h b/arduino-0018-windows/hardware/tools/avr/avr/include/util/delay.h new file mode 100644 index 0000000..77c95e4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/util/delay.h @@ -0,0 +1,165 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + Copyright (c) 2004,2005,2007 Joerg Wunsch + Copyright (c) 2007 Florin-Viorel Petrov + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: delay.h,v 1.5 2007/10/28 23:25:56 joerg_wunsch Exp $ */ + +#ifndef _UTIL_DELAY_H_ +#define _UTIL_DELAY_H_ 1 + +#include +#include + +/** \file */ +/** \defgroup util_delay : Convenience functions for busy-wait delay loops + \code + #define F_CPU 1000000UL // 1 MHz + //#define F_CPU 14.7456E6 + #include + \endcode + + \note As an alternative method, it is possible to pass the + F_CPU macro down to the compiler from the Makefile. + Obviously, in that case, no \c \#define statement should be + used. + + The functions in this header file are wrappers around the basic + busy-wait functions from . They are meant as + convenience functions where actual time values can be specified + rather than a number of cycles to wait for. The idea behind is + that compile-time constant expressions will be eliminated by + compiler optimization so floating-point expressions can be used + to calculate the number of delay cycles needed based on the CPU + frequency passed by the macro F_CPU. + + \note In order for these functions to work as intended, compiler + optimizations must be enabled, and the delay time + must be an expression that is a known constant at + compile-time. If these requirements are not met, the resulting + delay will be much longer (and basically unpredictable), and + applications that otherwise do not use floating-point calculations + will experience severe code bloat by the floating-point library + routines linked into the application. + + The functions available allow the specification of microsecond, and + millisecond delays directly, using the application-supplied macro + F_CPU as the CPU clock frequency (in Hertz). + +*/ + +#if !defined(__DOXYGEN__) +static inline void _delay_us(double __us) __attribute__((always_inline)); +static inline void _delay_ms(double __ms) __attribute__((always_inline)); +#endif + +#ifndef F_CPU +/* prevent compiler error by supplying a default */ +# warning "F_CPU not defined for " +# define F_CPU 1000000UL +#endif + +#ifndef __OPTIMIZE__ +# warning "Compiler optimizations disabled; functions from won't work as designed" +#endif + +/** + \ingroup util_delay + + Perform a delay of \c __us microseconds, using _delay_loop_1(). + + The macro F_CPU is supposed to be defined to a + constant defining the CPU clock frequency (in Hertz). + + The maximal possible delay is 768 us / F_CPU in MHz. + + If the user requests a delay greater than the maximal possible one, + _delay_us() will automatically call _delay_ms() instead. The user + will not be informed about this case. + */ +void +_delay_us(double __us) +{ + uint8_t __ticks; + double __tmp = ((F_CPU) / 3e6) * __us; + if (__tmp < 1.0) + __ticks = 1; + else if (__tmp > 255) + { + _delay_ms(__us / 1000.0); + return; + } + else + __ticks = (uint8_t)__tmp; + _delay_loop_1(__ticks); +} + + +/** + \ingroup util_delay + + Perform a delay of \c __ms milliseconds, using _delay_loop_2(). + + The macro F_CPU is supposed to be defined to a + constant defining the CPU clock frequency (in Hertz). + + The maximal possible delay is 262.14 ms / F_CPU in MHz. + + When the user request delay which exceed the maximum possible one, + _delay_ms() provides a decreased resolution functionality. In this + mode _delay_ms() will work with a resolution of 1/10 ms, providing + delays up to 6.5535 seconds (independent from CPU frequency). The + user will not be informed about decreased resolution. + */ +void +_delay_ms(double __ms) +{ + uint16_t __ticks; + double __tmp = ((F_CPU) / 4e3) * __ms; + if (__tmp < 1.0) + __ticks = 1; + else if (__tmp > 65535) + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + while(__ticks) + { + // wait 1/10 ms + _delay_loop_2(((F_CPU) / 4e3) / 10); + __ticks --; + } + return; + } + else + __ticks = (uint16_t)__tmp; + _delay_loop_2(__ticks); +} + +#endif /* _UTIL_DELAY_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/util/delay_basic.h b/arduino-0018-windows/hardware/tools/avr/avr/include/util/delay_basic.h new file mode 100644 index 0000000..f967aa7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/util/delay_basic.h @@ -0,0 +1,113 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + Copyright (c) 2007 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */ + +#ifndef _UTIL_DELAY_BASIC_H_ +#define _UTIL_DELAY_BASIC_H_ 1 + +#include + +/** \file */ +/** \defgroup util_delay_basic : Basic busy-wait delay loops + \code + #include + \endcode + + The functions in this header file implement simple delay loops + that perform a busy-waiting. They are typically used to + facilitate short delays in the program execution. They are + implemented as count-down loops with a well-known CPU cycle + count per loop iteration. As such, no other processing can + occur simultaneously. It should be kept in mind that the + functions described here do not disable interrupts. + + In general, for long delays, the use of hardware timers is + much preferrable, as they free the CPU, and allow for + concurrent processing of other events while the timer is + running. However, in particular for very short delays, the + overhead of setting up a hardware timer is too much compared + to the overall delay time. + + Two inline functions are provided for the actual delay algorithms. + +*/ + +#if !defined(__DOXYGEN__) +static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline)); +static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline)); +#endif + +/** \ingroup util_delay_basic + + Delay loop using an 8-bit counter \c __count, so up to 256 + iterations are possible. (The value 256 would have to be passed + as 0.) The loop executes three CPU cycles per iteration, not + including the overhead the compiler needs to setup the counter + register. + + Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds + can be achieved. +*/ +void +_delay_loop_1(uint8_t __count) +{ + __asm__ volatile ( + "1: dec %0" "\n\t" + "brne 1b" + : "=r" (__count) + : "0" (__count) + ); +} + +/** \ingroup util_delay_basic + + Delay loop using a 16-bit counter \c __count, so up to 65536 + iterations are possible. (The value 65536 would have to be + passed as 0.) The loop executes four CPU cycles per iteration, + not including the overhead the compiler requires to setup the + counter register pair. + + Thus, at a CPU speed of 1 MHz, delays of up to about 262.1 + milliseconds can be achieved. + */ +void +_delay_loop_2(uint16_t __count) +{ + __asm__ volatile ( + "1: sbiw %0,1" "\n\t" + "brne 1b" + : "=w" (__count) + : "0" (__count) + ); +} + +#endif /* _UTIL_DELAY_BASIC_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/util/parity.h b/arduino-0018-windows/hardware/tools/avr/avr/include/util/parity.h new file mode 100644 index 0000000..2e7a714 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/util/parity.h @@ -0,0 +1,65 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + Copyright (c) 2004,2005,2007 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: parity.h,v 1.2 2007/01/23 15:32:48 joerg_wunsch Exp $ */ + +#ifndef _UTIL_PARITY_H_ +#define _UTIL_PARITY_H_ + +/** \file */ +/** \defgroup util_parity : Parity bit generation + \code #include \endcode + + This header file contains optimized assembler code to calculate + the parity bit for a byte. +*/ +/** \def parity_even_bit + \ingroup util_parity + \returns 1 if \c val has an odd number of bits set. */ +#define parity_even_bit(val) \ +(__extension__({ \ + unsigned char __t; \ + __asm__ ( \ + "mov __tmp_reg__,%0" "\n\t" \ + "swap %0" "\n\t" \ + "eor %0,__tmp_reg__" "\n\t" \ + "mov __tmp_reg__,%0" "\n\t" \ + "lsr %0" "\n\t" \ + "lsr %0" "\n\t" \ + "eor %0,__tmp_reg__" \ + : "=r" (__t) \ + : "0" ((unsigned char)(val)) \ + : "r0" \ + ); \ + (((__t + 1) >> 1) & 1); \ + })) + +#endif /* _UTIL_PARITY_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/util/setbaud.h b/arduino-0018-windows/hardware/tools/avr/avr/include/util/setbaud.h new file mode 100644 index 0000000..087ccac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/util/setbaud.h @@ -0,0 +1,229 @@ +/* Copyright (c) 2007 Cliff Lawson + Copyright (c) 2007 Carlos Lamas + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: setbaud.h,v 1.1 2007/10/28 23:01:09 joerg_wunsch Exp $ */ + +/** + \file +*/ + +/** + \defgroup util_setbaud : Helper macros for baud rate calculations + \code + #define F_CPU 11059200 + #define BAUD 38400 + #include + \endcode + + This header file requires that on entry values are already defined + for F_CPU and BAUD. In addition, the macro BAUD_TOL will define + the baud rate tolerance (in percent) that is acceptable during + the calculations. The value of BAUD_TOL will default to 2 %. + + This header file defines macros suitable to setup the UART baud + rate prescaler registers of an AVR. All calculations are done + using the C preprocessor. Including this header file causes no + other side effects so it is possible to include this file more than + once (supposedly, with different values for the BAUD parameter), + possibly even within the same function. + + Assuming that the requested BAUD is valid for the given F_CPU then + the macro UBRR_VALUE is set to the required prescaler value. Two + additional macros are provided for the low and high bytes of the + prescaler, respectively: UBRRL_VALUE is set to the lower byte of + the UBRR_VALUE and UBRRH_VALUE is set to the upper byte. An + additional macro USE_2X will be defined. Its value is set to 1 if + the desired BAUD rate within the given tolerance could only be + achieved by setting the U2X bit in the UART configuration. It will + be defined to 0 if U2X is not needed. + + Example usage: + + \code + #include + + #define F_CPU 4000000 + + static void + uart_9600(void) + { + #define BAUD 9600 + #include + UBRRH = UBRRH_VALUE; + UBRRL = UBRRL_VALUE; + #if USE_2X + UCSRA |= (1 << U2X); + #else + UCSRA &= ~(1 << U2X); + #endif + } + + static void + uart_38400(void) + { + #undef BAUD // avoid compiler warning + #define BAUD 38400 + #include + UBRRH = UBRRH_VALUE; + UBRRL = UBRRL_VALUE; + #if USE_2X + UCSRA |= (1 << U2X); + #else + UCSRA &= ~(1 << U2X); + #endif + } + \endcode + + In this example, two functions are defined to setup the UART + to run at 9600 Bd, and 38400 Bd, respectively. Using a CPU + clock of 4 MHz, 9600 Bd can be achieved with an acceptable + tolerance without setting U2X (prescaler 25), while 38400 Bd + require U2X to be set (prescaler 12). +*/ + +#ifndef F_CPU +# error "setbaud.h requires F_CPU to be defined" +#endif + +#ifndef BAUD +# error "setbaud.h requires BAUD to be defined" +#endif + +#if !(F_CPU) +# error "F_CPU must be a constant value" +#endif + +#if !(BAUD) +# error "BAUD must be a constant value" +#endif + +#if defined(__DOXYGEN__) +/** + \def BAUD_TOL + \ingroup util_setbaud + + Input and output macro for + + Define the acceptable baud rate tolerance in percent. If not set + on entry, it will be set to its default value of 2. +*/ +#define BAUD_TOL 2 + +/** + \def UBRR_VALUE + \ingroup util_setbaud + + Output macro from + + Contains the calculated baud rate prescaler value for the UBRR + register. +*/ +#define UBRR_VALUE + +/** + \def UBRRL_VALUE + \ingroup util_setbaud + + Output macro from + + Contains the lower byte of the calculated prescaler value + (UBRR_VALUE). +*/ +#define UBRRL_VALUE + +/** + \def UBRRH_VALUE + \ingroup util_setbaud + + Output macro from + + Contains the upper byte of the calculated prescaler value + (UBRR_VALUE). +*/ +#define UBRRH_VALUE + +/** + \def USE_2X + \ingroup util_setbaud + + Output bacro from + + Contains the value 1 if the desired baud rate tolerance could only + be achieved by setting the U2X bit in the UART configuration. + Contains 0 otherwise. +*/ +#define USE_2X 0 + +#else /* !__DOXYGEN__ */ + +#undef USE_2X + +/* Baud rate tolerance is 2 % unless previously defined */ +#ifndef BAUD_TOL +# define BAUD_TOL 2 +#endif + +#define UBRR_VALUE (((F_CPU) + 8UL * (BAUD)) / (16UL * (BAUD)) -1UL) + +#if 100 * (F_CPU) > \ + (16 * ((UBRR_VALUE) + 1)) * (100 * (BAUD) + (BAUD) * (BAUD_TOL)) +# define USE_2X 1 +#elif 100 * (F_CPU) < \ + (16 * ((UBRR_VALUE) + 1)) * (100 * (BAUD) - (BAUD) * (BAUD_TOL)) +# define USE_2X 1 +#else +# define USE_2X 0 +#endif + +#if USE_2X +/* U2X required, recalculate */ +#undef UBRR_VALUE +#define UBRR_VALUE (((F_CPU) + 4UL * (BAUD)) / (8UL * (BAUD)) -1UL) + +#if 100 * (F_CPU) > \ + (8 * ((UBRR_VALUE) + 1)) * (100 * (BAUD) + (BAUD) * (BAUD_TOL)) +# warning "Baud rate achieved is higher than allowed" +#endif + +#if 100 * (F_CPU) < \ + (8 * ((UBRR_VALUE) + 1)) * (100 * (BAUD) - (BAUD) * (BAUD_TOL)) +# warning "Baud rate achieved is lower than allowed" +#endif + +#endif /* USE_U2X */ + +#ifdef UBRR_VALUE +# define UBRRL_VALUE (UBRR_VALUE & 0xff) +# define UBRRH_VALUE (UBRR_VALUE >> 8) +#endif + +#endif /* __DOXYGEN__ */ +/* end of util/setbaud.h */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/include/util/twi.h b/arduino-0018-windows/hardware/tools/avr/avr/include/util/twi.h new file mode 100644 index 0000000..5876204 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/include/util/twi.h @@ -0,0 +1,237 @@ +/* Copyright (c) 2002, Marek Michalkiewicz + Copyright (c) 2005, 2007 Joerg Wunsch + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: twi.h,v 1.2 2007/01/23 15:32:48 joerg_wunsch Exp $ */ +/* copied from: Id: avr/twi.h,v 1.4 2004/11/01 21:19:54 arcanum Exp */ + +#ifndef _UTIL_TWI_H_ +#define _UTIL_TWI_H_ 1 + +#include + +/** \file */ +/** \defgroup util_twi : TWI bit mask definitions + \code #include \endcode + + This header file contains bit mask definitions for use with + the AVR TWI interface. +*/ +/** \name TWSR values + + Mnemonics: +
TW_MT_xxx - master transmitter +
TW_MR_xxx - master receiver +
TW_ST_xxx - slave transmitter +
TW_SR_xxx - slave receiver + */ + +/*@{*/ +/* Master */ +/** \ingroup util_twi + \def TW_START + start condition transmitted */ +#define TW_START 0x08 + +/** \ingroup util_twi + \def TW_REP_START + repeated start condition transmitted */ +#define TW_REP_START 0x10 + +/* Master Transmitter */ +/** \ingroup util_twi + \def TW_MT_SLA_ACK + SLA+W transmitted, ACK received */ +#define TW_MT_SLA_ACK 0x18 + +/** \ingroup util_twi + \def TW_MT_SLA_NACK + SLA+W transmitted, NACK received */ +#define TW_MT_SLA_NACK 0x20 + +/** \ingroup util_twi + \def TW_MT_DATA_ACK + data transmitted, ACK received */ +#define TW_MT_DATA_ACK 0x28 + +/** \ingroup util_twi + \def TW_MT_DATA_NACK + data transmitted, NACK received */ +#define TW_MT_DATA_NACK 0x30 + +/** \ingroup util_twi + \def TW_MT_ARB_LOST + arbitration lost in SLA+W or data */ +#define TW_MT_ARB_LOST 0x38 + +/* Master Receiver */ +/** \ingroup util_twi + \def TW_MR_ARB_LOST + arbitration lost in SLA+R or NACK */ +#define TW_MR_ARB_LOST 0x38 + +/** \ingroup util_twi + \def TW_MR_SLA_ACK + SLA+R transmitted, ACK received */ +#define TW_MR_SLA_ACK 0x40 + +/** \ingroup util_twi + \def TW_MR_SLA_NACK + SLA+R transmitted, NACK received */ +#define TW_MR_SLA_NACK 0x48 + +/** \ingroup util_twi + \def TW_MR_DATA_ACK + data received, ACK returned */ +#define TW_MR_DATA_ACK 0x50 + +/** \ingroup util_twi + \def TW_MR_DATA_NACK + data received, NACK returned */ +#define TW_MR_DATA_NACK 0x58 + +/* Slave Transmitter */ +/** \ingroup util_twi + \def TW_ST_SLA_ACK + SLA+R received, ACK returned */ +#define TW_ST_SLA_ACK 0xA8 + +/** \ingroup util_twi + \def TW_ST_ARB_LOST_SLA_ACK + arbitration lost in SLA+RW, SLA+R received, ACK returned */ +#define TW_ST_ARB_LOST_SLA_ACK 0xB0 + +/** \ingroup util_twi + \def TW_ST_DATA_ACK + data transmitted, ACK received */ +#define TW_ST_DATA_ACK 0xB8 + +/** \ingroup util_twi + \def TW_ST_DATA_NACK + data transmitted, NACK received */ +#define TW_ST_DATA_NACK 0xC0 + +/** \ingroup util_twi + \def TW_ST_LAST_DATA + last data byte transmitted, ACK received */ +#define TW_ST_LAST_DATA 0xC8 + +/* Slave Receiver */ +/** \ingroup util_twi + \def TW_SR_SLA_ACK + SLA+W received, ACK returned */ +#define TW_SR_SLA_ACK 0x60 + +/** \ingroup util_twi + \def TW_SR_ARB_LOST_SLA_ACK + arbitration lost in SLA+RW, SLA+W received, ACK returned */ +#define TW_SR_ARB_LOST_SLA_ACK 0x68 + +/** \ingroup util_twi + \def TW_SR_GCALL_ACK + general call received, ACK returned */ +#define TW_SR_GCALL_ACK 0x70 + +/** \ingroup util_twi + \def TW_SR_ARB_LOST_GCALL_ACK + arbitration lost in SLA+RW, general call received, ACK returned */ +#define TW_SR_ARB_LOST_GCALL_ACK 0x78 + +/** \ingroup util_twi + \def TW_SR_DATA_ACK + data received, ACK returned */ +#define TW_SR_DATA_ACK 0x80 + +/** \ingroup util_twi + \def TW_SR_DATA_NACK + data received, NACK returned */ +#define TW_SR_DATA_NACK 0x88 + +/** \ingroup util_twi + \def TW_SR_GCALL_DATA_ACK + general call data received, ACK returned */ +#define TW_SR_GCALL_DATA_ACK 0x90 + +/** \ingroup util_twi + \def TW_SR_GCALL_DATA_NACK + general call data received, NACK returned */ +#define TW_SR_GCALL_DATA_NACK 0x98 + +/** \ingroup util_twi + \def TW_SR_STOP + stop or repeated start condition received while selected */ +#define TW_SR_STOP 0xA0 + +/* Misc */ +/** \ingroup util_twi + \def TW_NO_INFO + no state information available */ +#define TW_NO_INFO 0xF8 + +/** \ingroup util_twi + \def TW_BUS_ERROR + illegal start or stop condition */ +#define TW_BUS_ERROR 0x00 + + +/** + * \ingroup util_twi + * \def TW_STATUS_MASK + * The lower 3 bits of TWSR are reserved on the ATmega163. + * The 2 LSB carry the prescaler bits on the newer ATmegas. + */ +#define TW_STATUS_MASK (_BV(TWS7)|_BV(TWS6)|_BV(TWS5)|_BV(TWS4)|\ + _BV(TWS3)) +/** + * \ingroup util_twi + * \def TW_STATUS + * + * TWSR, masked by TW_STATUS_MASK + */ +#define TW_STATUS (TWSR & TW_STATUS_MASK) +/*@}*/ + +/** + * \name R/~W bit in SLA+R/W address field. + */ + +/*@{*/ +/** \ingroup util_twi + \def TW_READ + SLA+R address */ +#define TW_READ 1 + +/** \ingroup util_twi + \def TW_WRITE + SLA+W address */ +#define TW_WRITE 0 +/*@}*/ + +#endif /* _UTIL_TWI_H_ */ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crt86401.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crt86401.o new file mode 100644 index 0000000..2a7cf70 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crt86401.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn13.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn13.o new file mode 100644 index 0000000..ad09b94 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn13.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn13a.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn13a.o new file mode 100644 index 0000000..ad09b94 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn13a.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn2313.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn2313.o new file mode 100644 index 0000000..2311ef7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn2313.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn24.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn24.o new file mode 100644 index 0000000..af5cfc8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn24.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn25.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn25.o new file mode 100644 index 0000000..644e65f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn25.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn261.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn261.o new file mode 100644 index 0000000..2311ef7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn261.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn43u.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn43u.o new file mode 100644 index 0000000..b69988b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn43u.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn44.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn44.o new file mode 100644 index 0000000..a7f2887 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn44.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn45.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn45.o new file mode 100644 index 0000000..358b79d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn45.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn461.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn461.o new file mode 100644 index 0000000..f0292a7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn461.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn48.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn48.o new file mode 100644 index 0000000..7a5bc89 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn48.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn84.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn84.o new file mode 100644 index 0000000..b2f1467 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn84.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn85.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn85.o new file mode 100644 index 0000000..e442c55 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn85.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn861.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn861.o new file mode 100644 index 0000000..e412cbc Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn861.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn88.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn88.o new file mode 100644 index 0000000..7a5bc89 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/crttn88.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libc.a new file mode 100644 index 0000000..325011a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libm.a new file mode 100644 index 0000000..09ff986 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libobjc.a new file mode 100644 index 0000000..1d83372 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libobjc.la new file mode 100644 index 0000000..ea327b0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr25' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libprintf_flt.a new file mode 100644 index 0000000..e71701e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libprintf_min.a new file mode 100644 index 0000000..a94cdb7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libscanf_flt.a new file mode 100644 index 0000000..e37e9b4 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libscanf_min.a new file mode 100644 index 0000000..707af70 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr25/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt43320.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt43320.o new file mode 100644 index 0000000..0c5d47c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt43320.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt43355.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt43355.o new file mode 100644 index 0000000..1ecf250 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt43355.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt76711.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt76711.o new file mode 100644 index 0000000..eaaa4d6 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crt76711.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtm103.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtm103.o new file mode 100644 index 0000000..cb8f000 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtm103.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtusb162.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtusb162.o new file mode 100644 index 0000000..ba2cc9d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtusb162.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtusb82.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtusb82.o new file mode 100644 index 0000000..ba2cc9d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/crtusb82.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libc.a new file mode 100644 index 0000000..fa44615 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libm.a new file mode 100644 index 0000000..9c7f16c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libobjc.a new file mode 100644 index 0000000..ceac20e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libobjc.la new file mode 100644 index 0000000..0d7c31d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr3' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libprintf_flt.a new file mode 100644 index 0000000..4aa0a83 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libprintf_min.a new file mode 100644 index 0000000..5f376d1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libscanf_flt.a new file mode 100644 index 0000000..11d8cf3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libscanf_min.a new file mode 100644 index 0000000..70d3075 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr3/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/crt43320.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/crt43320.o new file mode 100644 index 0000000..0c5d47c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/crt43320.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/crtm103.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/crtm103.o new file mode 100644 index 0000000..cb8f000 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/crtm103.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libc.a new file mode 100644 index 0000000..6b43b1b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libm.a new file mode 100644 index 0000000..8f54c7a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libobjc.a new file mode 100644 index 0000000..06079de Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libobjc.la new file mode 100644 index 0000000..bdf4405 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr31' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libprintf_flt.a new file mode 100644 index 0000000..f4e9d1c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libprintf_min.a new file mode 100644 index 0000000..ecde4dd Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libscanf_flt.a new file mode 100644 index 0000000..fe26d80 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libscanf_min.a new file mode 100644 index 0000000..a50d3ea Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr31/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crttn167.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crttn167.o new file mode 100644 index 0000000..d8cb4bc Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crttn167.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crtusb162.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crtusb162.o new file mode 100644 index 0000000..ba2cc9d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crtusb162.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crtusb82.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crtusb82.o new file mode 100644 index 0000000..ba2cc9d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/crtusb82.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libc.a new file mode 100644 index 0000000..3b8b3a9 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libm.a new file mode 100644 index 0000000..f566b37 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libobjc.a new file mode 100644 index 0000000..54de372 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libobjc.la new file mode 100644 index 0000000..cb63e63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr35' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libprintf_flt.a new file mode 100644 index 0000000..ce0b045 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libprintf_min.a new file mode 100644 index 0000000..0d4fc66 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libscanf_flt.a new file mode 100644 index 0000000..1908c86 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libscanf_min.a new file mode 100644 index 0000000..4b2901d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr35/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm1.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm1.o new file mode 100644 index 0000000..05d1a0f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm1.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm2.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm2.o new file mode 100644 index 0000000..05d1a0f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm2.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm2b.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm2b.o new file mode 100644 index 0000000..05d1a0f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm2b.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm3.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm3.o new file mode 100644 index 0000000..05d1a0f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm3.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm3b.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm3b.o new file mode 100644 index 0000000..05d1a0f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crt90pwm3b.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm48.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm48.o new file mode 100644 index 0000000..456d141 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm48.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm48p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm48p.o new file mode 100644 index 0000000..456d141 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm48p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8.o new file mode 100644 index 0000000..98d59c8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8515.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8515.o new file mode 100644 index 0000000..939b35a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8515.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8535.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8535.o new file mode 100644 index 0000000..ee75d0e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8535.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm88.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm88.o new file mode 100644 index 0000000..a5832a3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm88.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm88p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm88p.o new file mode 100644 index 0000000..a5832a3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm88p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8hva.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8hva.o new file mode 100644 index 0000000..2f28584 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/crtm8hva.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libc.a new file mode 100644 index 0000000..4f3ec32 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libm.a new file mode 100644 index 0000000..05c3cc8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libobjc.a new file mode 100644 index 0000000..049994d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libobjc.la new file mode 100644 index 0000000..f7a79cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr4' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libprintf_flt.a new file mode 100644 index 0000000..2c557d5 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libprintf_min.a new file mode 100644 index 0000000..8c395e9 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libscanf_flt.a new file mode 100644 index 0000000..d9956d8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libscanf_min.a new file mode 100644 index 0000000..6035830 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr4/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt58u54a.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt58u54a.o new file mode 100644 index 0000000..4aa902d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt58u54a.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt90pwm216.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt90pwm216.o new file mode 100644 index 0000000..0d7c48f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt90pwm216.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt90pwm316.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt90pwm316.o new file mode 100644 index 0000000..0d7c48f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crt90pwm316.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtat94k.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtat94k.o new file mode 100644 index 0000000..a7b7485 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtat94k.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan128.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan128.o new file mode 100644 index 0000000..57e2f5f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan128.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan32.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan32.o new file mode 100644 index 0000000..4dd257a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan32.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan64.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan64.o new file mode 100644 index 0000000..ece6cc5 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtcan64.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm128.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm128.o new file mode 100644 index 0000000..ccb73a2 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm128.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1280.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1280.o new file mode 100644 index 0000000..a0640d8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1280.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1281.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1281.o new file mode 100644 index 0000000..e3b1a2d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1281.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1284p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1284p.o new file mode 100644 index 0000000..31ad096 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm1284p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm16.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm16.o new file mode 100644 index 0000000..09db830 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm16.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm161.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm161.o new file mode 100644 index 0000000..09db830 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm161.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm162.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm162.o new file mode 100644 index 0000000..1868afc Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm162.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm163.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm163.o new file mode 100644 index 0000000..e1b384c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm163.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm164p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm164p.o new file mode 100644 index 0000000..9405bfa Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm164p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm165.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm165.o new file mode 100644 index 0000000..e34cd1b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm165.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm165p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm165p.o new file mode 100644 index 0000000..e34cd1b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm165p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm168.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm168.o new file mode 100644 index 0000000..f841de4 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm168.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm168p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm168p.o new file mode 100644 index 0000000..f841de4 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm168p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm169.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm169.o new file mode 100644 index 0000000..0c0e803 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm169.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm169p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm169p.o new file mode 100644 index 0000000..0c0e803 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm169p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm16hva.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm16hva.o new file mode 100644 index 0000000..d174119 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm16hva.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32.o new file mode 100644 index 0000000..8939e03 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm323.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm323.o new file mode 100644 index 0000000..9cddf21 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm323.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm324p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm324p.o new file mode 100644 index 0000000..66a1833 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm324p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm325.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm325.o new file mode 100644 index 0000000..f9b75a1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm325.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3250.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3250.o new file mode 100644 index 0000000..28ae54d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3250.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3250p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3250p.o new file mode 100644 index 0000000..28ae54d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3250p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm325p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm325p.o new file mode 100644 index 0000000..f9b75a1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm325p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm328p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm328p.o new file mode 100644 index 0000000..06ecdc8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm328p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm329.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm329.o new file mode 100644 index 0000000..f9b75a1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm329.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3290.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3290.o new file mode 100644 index 0000000..28ae54d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3290.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3290p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3290p.o new file mode 100644 index 0000000..28ae54d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm3290p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm329p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm329p.o new file mode 100644 index 0000000..f9b75a1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm329p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32c1.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32c1.o new file mode 100644 index 0000000..66a1833 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32c1.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32m1.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32m1.o new file mode 100644 index 0000000..66a1833 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32m1.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32u4.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32u4.o new file mode 100644 index 0000000..e8f7d9d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32u4.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32u6.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32u6.o new file mode 100644 index 0000000..cf18e7d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm32u6.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm406.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm406.o new file mode 100644 index 0000000..f9b75a1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm406.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm64.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm64.o new file mode 100644 index 0000000..066c301 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm64.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm640.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm640.o new file mode 100644 index 0000000..32c9dcf Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm640.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm644.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm644.o new file mode 100644 index 0000000..44dfd1a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm644.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm644p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm644p.o new file mode 100644 index 0000000..919c761 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm644p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm645.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm645.o new file mode 100644 index 0000000..0983a1a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm645.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm6450.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm6450.o new file mode 100644 index 0000000..53c9f6e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm6450.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm649.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm649.o new file mode 100644 index 0000000..0983a1a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm649.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm6490.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm6490.o new file mode 100644 index 0000000..53c9f6e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtm6490.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb1286.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb1286.o new file mode 100644 index 0000000..2f645be Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb1286.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb1287.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb1287.o new file mode 100644 index 0000000..2f645be Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb1287.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb646.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb646.o new file mode 100644 index 0000000..444955f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb646.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb647.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb647.o new file mode 100644 index 0000000..444955f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/crtusb647.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libc.a new file mode 100644 index 0000000..987d404 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libm.a new file mode 100644 index 0000000..01eb9de Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libobjc.a new file mode 100644 index 0000000..1556368 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libobjc.la new file mode 100644 index 0000000..0baf6bc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr5' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libprintf_flt.a new file mode 100644 index 0000000..ac7e656 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libprintf_min.a new file mode 100644 index 0000000..58c32c3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libscanf_flt.a new file mode 100644 index 0000000..e74a3b0 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libscanf_min.a new file mode 100644 index 0000000..4335cee Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr5/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtcan128.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtcan128.o new file mode 100644 index 0000000..57e2f5f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtcan128.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm128.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm128.o new file mode 100644 index 0000000..ccb73a2 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm128.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1280.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1280.o new file mode 100644 index 0000000..a0640d8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1280.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1281.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1281.o new file mode 100644 index 0000000..e3b1a2d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1281.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1284p.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1284p.o new file mode 100644 index 0000000..31ad096 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtm1284p.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtusb1286.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtusb1286.o new file mode 100644 index 0000000..2f645be Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtusb1286.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtusb1287.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtusb1287.o new file mode 100644 index 0000000..2f645be Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/crtusb1287.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libc.a new file mode 100644 index 0000000..5909e0b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libm.a new file mode 100644 index 0000000..8cc4957 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libobjc.a new file mode 100644 index 0000000..ac9c4bb Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libobjc.la new file mode 100644 index 0000000..efa8fc1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr51' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libprintf_flt.a new file mode 100644 index 0000000..037082b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libprintf_min.a new file mode 100644 index 0000000..7c357a1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libscanf_flt.a new file mode 100644 index 0000000..edf8e23 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libscanf_min.a new file mode 100644 index 0000000..cf9218a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr51/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/crtm2560.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/crtm2560.o new file mode 100644 index 0000000..55d1884 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/crtm2560.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/crtm2561.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/crtm2561.o new file mode 100644 index 0000000..2513134 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/crtm2561.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libc.a new file mode 100644 index 0000000..ee2915a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libm.a new file mode 100644 index 0000000..e0b4337 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libobjc.a new file mode 100644 index 0000000..ff264c8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libobjc.la new file mode 100644 index 0000000..836d56c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avr6' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libprintf_flt.a new file mode 100644 index 0000000..52fb835 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libprintf_min.a new file mode 100644 index 0000000..495b1d1 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libscanf_flt.a new file mode 100644 index 0000000..dc51506 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libscanf_min.a new file mode 100644 index 0000000..ab80a41 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avr6/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/crtx64a3.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/crtx64a3.o new file mode 100644 index 0000000..336880d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/crtx64a3.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libc.a new file mode 100644 index 0000000..b6be0df Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libm.a new file mode 100644 index 0000000..c4d1254 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libobjc.a new file mode 100644 index 0000000..be7c080 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libobjc.la new file mode 100644 index 0000000..8f379b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avrxmega4' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libprintf_flt.a new file mode 100644 index 0000000..3ea66a2 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libprintf_min.a new file mode 100644 index 0000000..bd16e80 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libscanf_flt.a new file mode 100644 index 0000000..941c068 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libscanf_min.a new file mode 100644 index 0000000..896f419 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega4/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/crtx64a1.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/crtx64a1.o new file mode 100644 index 0000000..b2f755d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/crtx64a1.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libc.a new file mode 100644 index 0000000..35a6a84 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libm.a new file mode 100644 index 0000000..69e87f5 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libobjc.a new file mode 100644 index 0000000..a4894c5 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libobjc.la new file mode 100644 index 0000000..aed2e57 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avrxmega5' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libprintf_flt.a new file mode 100644 index 0000000..2e474c2 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libprintf_min.a new file mode 100644 index 0000000..3b8dc4e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libscanf_flt.a new file mode 100644 index 0000000..2cb99c8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libscanf_min.a new file mode 100644 index 0000000..2c2f0e7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega5/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx128a3.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx128a3.o new file mode 100644 index 0000000..ff8ec3a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx128a3.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx256a3.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx256a3.o new file mode 100644 index 0000000..d9ac67c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx256a3.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx256a3b.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx256a3b.o new file mode 100644 index 0000000..d9ac67c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/crtx256a3b.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libc.a new file mode 100644 index 0000000..4c43eee Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libm.a new file mode 100644 index 0000000..a533ff6 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libobjc.a new file mode 100644 index 0000000..289fdde Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libobjc.la new file mode 100644 index 0000000..7df9099 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avrxmega6' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libprintf_flt.a new file mode 100644 index 0000000..97272a8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libprintf_min.a new file mode 100644 index 0000000..f236a6e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libscanf_flt.a new file mode 100644 index 0000000..4e22396 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libscanf_min.a new file mode 100644 index 0000000..42d78fe Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega6/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/crtx128a1.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/crtx128a1.o new file mode 100644 index 0000000..7646aa3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/crtx128a1.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libc.a new file mode 100644 index 0000000..bf35e57 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libm.a new file mode 100644 index 0000000..dba7d01 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libobjc.a new file mode 100644 index 0000000..181d6bb Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libobjc.la new file mode 100644 index 0000000..589080b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib/avrxmega7' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libprintf_flt.a new file mode 100644 index 0000000..8f34563 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libprintf_min.a new file mode 100644 index 0000000..14acc6c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libscanf_flt.a new file mode 100644 index 0000000..dc97b54 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libscanf_min.a new file mode 100644 index 0000000..66bb9f5 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/avrxmega7/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crt86401.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crt86401.o new file mode 100644 index 0000000..2a7cf70 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crt86401.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crtc8534.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crtc8534.o new file mode 100644 index 0000000..ead8bca Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crtc8534.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts1200.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts1200.o new file mode 100644 index 0000000..c1ba443 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts1200.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2313.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2313.o new file mode 100644 index 0000000..3839593 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2313.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2323.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2323.o new file mode 100644 index 0000000..e2a6299 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2323.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2333.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2333.o new file mode 100644 index 0000000..7f6bc02 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2333.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2343.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2343.o new file mode 100644 index 0000000..e2a6299 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts2343.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4414.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4414.o new file mode 100644 index 0000000..11390a2 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4414.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4433.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4433.o new file mode 100644 index 0000000..7f6bc02 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4433.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4434.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4434.o new file mode 100644 index 0000000..97a46cf Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts4434.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts8515.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts8515.o new file mode 100644 index 0000000..5d67aee Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts8515.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crts8535.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts8535.o new file mode 100644 index 0000000..11e9e07 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crts8535.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn11.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn11.o new file mode 100644 index 0000000..45c7ce0 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn11.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn12.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn12.o new file mode 100644 index 0000000..3b67949 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn12.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn13.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn13.o new file mode 100644 index 0000000..ad09b94 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn13.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn13a.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn13a.o new file mode 100644 index 0000000..ad09b94 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn13a.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn15.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn15.o new file mode 100644 index 0000000..281d944 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn15.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn22.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn22.o new file mode 100644 index 0000000..e2a6299 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn22.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn2313.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn2313.o new file mode 100644 index 0000000..2311ef7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn2313.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn24.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn24.o new file mode 100644 index 0000000..af5cfc8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn24.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn25.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn25.o new file mode 100644 index 0000000..644e65f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn25.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn26.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn26.o new file mode 100644 index 0000000..094cc6f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn26.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn261.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn261.o new file mode 100644 index 0000000..2311ef7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn261.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn28.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn28.o new file mode 100644 index 0000000..3b67949 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn28.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn44.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn44.o new file mode 100644 index 0000000..a7f2887 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn44.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn45.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn45.o new file mode 100644 index 0000000..358b79d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn45.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn461.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn461.o new file mode 100644 index 0000000..f0292a7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn461.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn84.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn84.o new file mode 100644 index 0000000..b2f1467 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn84.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn85.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn85.o new file mode 100644 index 0000000..e442c55 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn85.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn861.o b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn861.o new file mode 100644 index 0000000..e412cbc Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/crttn861.o differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.x new file mode 100644 index 0000000..3c257de --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:1) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xbn new file mode 100644 index 0000000..752fc97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:1) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xn new file mode 100644 index 0000000..4b66500 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:1) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xr new file mode 100644 index 0000000..9d130ad --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:1) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xu new file mode 100644 index 0000000..628062c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr1.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:1) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.x new file mode 100644 index 0000000..030f332 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:2) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xbn new file mode 100644 index 0000000..913fb55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:2) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xn new file mode 100644 index 0000000..514459e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:2) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xr new file mode 100644 index 0000000..6cf4f1c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:2) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xu new file mode 100644 index 0000000..ca89848 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr2.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:2) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.x new file mode 100644 index 0000000..897a1a8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:25) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xbn new file mode 100644 index 0000000..09fb783 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:25) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xn new file mode 100644 index 0000000..1cae62d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:25) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xr new file mode 100644 index 0000000..64bca7f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:25) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xu new file mode 100644 index 0000000..c61de0d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr25.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:25) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.x new file mode 100644 index 0000000..637b266 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:3) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xbn new file mode 100644 index 0000000..5656277 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:3) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xn new file mode 100644 index 0000000..b8c0cf5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:3) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xr new file mode 100644 index 0000000..f955df2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:3) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xu new file mode 100644 index 0000000..0a1aa93 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr3.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:3) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.x new file mode 100644 index 0000000..4bbab16 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:31) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xbn new file mode 100644 index 0000000..bd459dd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:31) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xn new file mode 100644 index 0000000..a985a8a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:31) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xr new file mode 100644 index 0000000..3f3d1d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:31) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xu new file mode 100644 index 0000000..0b91ee4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr31.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:31) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.x new file mode 100644 index 0000000..b20c2bc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:35) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 64K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xbn new file mode 100644 index 0000000..30c3def --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:35) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 64K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xn new file mode 100644 index 0000000..0cd0bc9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:35) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 64K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xr new file mode 100644 index 0000000..ead2864 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:35) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 64K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xu new file mode 100644 index 0000000..de4e0ca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr35.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:35) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 64K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.x new file mode 100644 index 0000000..f87c16d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:4) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xbn new file mode 100644 index 0000000..ea7bb24 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:4) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xn new file mode 100644 index 0000000..bcc7a9b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:4) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xr new file mode 100644 index 0000000..f1cc67a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:4) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xu new file mode 100644 index 0000000..9d4f5ce --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr4.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:4) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 8K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.x new file mode 100644 index 0000000..727f489 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:5) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xbn new file mode 100644 index 0000000..d001403 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:5) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xn new file mode 100644 index 0000000..c27d56e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:5) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xr new file mode 100644 index 0000000..816a267 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:5) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xu new file mode 100644 index 0000000..fcba3c5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr5.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:5) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = 0x800060, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.x new file mode 100644 index 0000000..f1488eb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xbn new file mode 100644 index 0000000..dcd8ae9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xn new file mode 100644 index 0000000..2ad3c5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xr new file mode 100644 index 0000000..bbc802e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xu new file mode 100644 index 0000000..d541a13 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr51.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:51) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 128K + data (rw!x) : ORIGIN = , LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.x new file mode 100644 index 0000000..f33cf41 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:6) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x800200, LENGTH = 0xfe00 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xbn new file mode 100644 index 0000000..e97e76d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:6) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x800200, LENGTH = 0xfe00 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xn new file mode 100644 index 0000000..481a7cf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:6) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x800200, LENGTH = 0xfe00 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xr new file mode 100644 index 0000000..d450ef0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:6) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x800200, LENGTH = 0xfe00 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xu new file mode 100644 index 0000000..c7d5956 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avr6.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:6) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x800200, LENGTH = 0xfe00 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.x new file mode 100644 index 0000000..86740e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:101) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xbn new file mode 100644 index 0000000..56fe5db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:101) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xn new file mode 100644 index 0000000..12bd0fb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:101) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xr new file mode 100644 index 0000000..e1cbd91 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:101) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xu new file mode 100644 index 0000000..3f6d2a8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega1.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:101) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.x new file mode 100644 index 0000000..ad4c41b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:102) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xbn new file mode 100644 index 0000000..9bd3d53 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:102) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xn new file mode 100644 index 0000000..55da1df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:102) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xr new file mode 100644 index 0000000..42ae5db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:102) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xu new file mode 100644 index 0000000..16a6dc0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega2.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:102) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.x new file mode 100644 index 0000000..af0248d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:103) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xbn new file mode 100644 index 0000000..0fb4282 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:103) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xn new file mode 100644 index 0000000..21fe20f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:103) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xr new file mode 100644 index 0000000..33435f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:103) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xu new file mode 100644 index 0000000..3fa64ee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega3.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:103) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.x new file mode 100644 index 0000000..37ada34 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:104) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xbn new file mode 100644 index 0000000..85de878 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:104) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xn new file mode 100644 index 0000000..417c147 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:104) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xr new file mode 100644 index 0000000..3978eaa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:104) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xu new file mode 100644 index 0000000..da1f439 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega4.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:104) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.x new file mode 100644 index 0000000..0bba34e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:105) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xbn new file mode 100644 index 0000000..b4ff19e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:105) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xn new file mode 100644 index 0000000..77229da --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:105) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xr new file mode 100644 index 0000000..6bb9de1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:105) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xu new file mode 100644 index 0000000..68a09f7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega5.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:105) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.x new file mode 100644 index 0000000..6b4e6fc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:106) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xbn new file mode 100644 index 0000000..011be11 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:106) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xn new file mode 100644 index 0000000..a0daa4f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:106) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xr new file mode 100644 index 0000000..c7d8518 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:106) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xu new file mode 100644 index 0000000..f9ad761 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega6.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:106) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.x b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.x new file mode 100644 index 0000000..f2acaab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.x @@ -0,0 +1,228 @@ +/* Default linker script, for normal executables */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:107) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xbn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xbn new file mode 100644 index 0000000..35b8319 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xbn @@ -0,0 +1,228 @@ +/* Script for -N: mix text and data on same page; don't align data */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:107) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xn b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xn new file mode 100644 index 0000000..c0faf52 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xn @@ -0,0 +1,228 @@ +/* Script for -n: mix text and data on same page */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:107) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + . = ALIGN(2); + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + . = ALIGN(2); + *(.text.*) + . = ALIGN(2); + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + _etext = . ; + } > text + .data : AT (ADDR (.text) + SIZEOF (.text)) + { + PROVIDE (__data_start = .) ; + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + . = ALIGN(2); + _edata = . ; + PROVIDE (__data_end = .) ; + } > data + .bss : AT (ADDR (.bss)) + { + PROVIDE (__bss_start = .) ; + *(.bss) + *(.bss*) + *(COMMON) + PROVIDE (__bss_end = .) ; + } > data + __data_load_start = LOADADDR(.data); + __data_load_end = __data_load_start + SIZEOF(.data); + /* Global data not cleared after reset. */ + .noinit : + { + PROVIDE (__noinit_start = .) ; + *(.noinit*) + PROVIDE (__noinit_end = .) ; + _end = . ; + PROVIDE (__heap_start = .) ; + } > data + .eeprom : + { + *(.eeprom*) + __eeprom_end = . ; + } > eeprom + .fuse : + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } > fuse + .lock : + { + KEEP(*(.lock*)) + } > lock + .signature : + { + KEEP(*(.signature*)) + } > signature + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xr b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xr new file mode 100644 index 0000000..ada0fae --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xr @@ -0,0 +1,191 @@ +/* Script for ld -r: link without relocation */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:107) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xu b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xu new file mode 100644 index 0000000..0a0598b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/ldscripts/avrxmega7.xu @@ -0,0 +1,199 @@ +/* Script for ld -Ur: link w/out relocation, do create constructors */ +OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr") +OUTPUT_ARCH(avr:107) +MEMORY +{ + text (rx) : ORIGIN = 0, LENGTH = 1024K + data (rw!x) : ORIGIN = 0x802000, LENGTH = 0xffa0 + eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K + fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K + lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K + signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K +} +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + .hash 0 : { *(.hash) } + .dynsym 0 : { *(.dynsym) } + .dynstr 0 : { *(.dynstr) } + .gnu.version 0 : { *(.gnu.version) } + .gnu.version_d 0 : { *(.gnu.version_d) } + .gnu.version_r 0 : { *(.gnu.version_r) } + .rel.init 0 : { *(.rel.init) } + .rela.init 0 : { *(.rela.init) } + .rel.text 0 : + { + *(.rel.text) + } + .rela.text 0 : + { + *(.rela.text) + } + .rel.fini 0 : { *(.rel.fini) } + .rela.fini 0 : { *(.rela.fini) } + .rel.rodata 0 : + { + *(.rel.rodata) + } + .rela.rodata 0 : + { + *(.rela.rodata) + } + .rel.data 0 : + { + *(.rel.data) + } + .rela.data 0 : + { + *(.rela.data) + } + .rel.ctors 0 : { *(.rel.ctors) } + .rela.ctors 0 : { *(.rela.ctors) } + .rel.dtors 0 : { *(.rel.dtors) } + .rela.dtors 0 : { *(.rela.dtors) } + .rel.got 0 : { *(.rel.got) } + .rela.got 0 : { *(.rela.got) } + .rel.bss 0 : { *(.rel.bss) } + .rela.bss 0 : { *(.rela.bss) } + .rel.plt 0 : { *(.rel.plt) } + .rela.plt 0 : { *(.rela.plt) } + /* Internal text space or external memory. */ + .text 0 : + { + *(.vectors) + KEEP(*(.vectors)) + /* For data that needs to reside in the lower 64k of progmem. */ + *(.progmem.gcc*) + *(.progmem*) + __trampolines_start = . ; + /* The jump trampolines for the 16-bit limited relocs will reside here. */ + *(.trampolines) + *(.trampolines*) + __trampolines_end = . ; + /* For future tablejump instruction arrays for 3 byte pc devices. + We don't relax jump/call instructions within these sections. */ + *(.jumptables) + *(.jumptables*) + /* For code that needs to reside in the lower 128k progmem. */ + *(.lowtext) + *(.lowtext*) + __ctors_start = . ; + *(.ctors) + __ctors_end = . ; + __dtors_start = . ; + *(.dtors) + __dtors_end = . ; + KEEP(SORT(*)(.ctors)) + KEEP(SORT(*)(.dtors)) + /* From this point on, we don't bother about wether the insns are + below or above the 16 bits boundary. */ + *(.init0) /* Start here after reset. */ + KEEP (*(.init0)) + *(.init1) + KEEP (*(.init1)) + *(.init2) /* Clear __zero_reg__, set up stack pointer. */ + KEEP (*(.init2)) + *(.init3) + KEEP (*(.init3)) + *(.init4) /* Initialize data and BSS. */ + KEEP (*(.init4)) + *(.init5) + KEEP (*(.init5)) + *(.init6) /* C++ constructors. */ + KEEP (*(.init6)) + *(.init7) + KEEP (*(.init7)) + *(.init8) + KEEP (*(.init8)) + *(.init9) /* Call main(). */ + KEEP (*(.init9)) + *(.text) + *(.text.*) + *(.fini9) /* _exit() starts here. */ + KEEP (*(.fini9)) + *(.fini8) + KEEP (*(.fini8)) + *(.fini7) + KEEP (*(.fini7)) + *(.fini6) /* C++ destructors. */ + KEEP (*(.fini6)) + *(.fini5) + KEEP (*(.fini5)) + *(.fini4) + KEEP (*(.fini4)) + *(.fini3) + KEEP (*(.fini3)) + *(.fini2) + KEEP (*(.fini2)) + *(.fini1) + KEEP (*(.fini1)) + *(.fini0) /* Infinite loop after program termination. */ + KEEP (*(.fini0)) + } + .data 0 : + { + *(.data) + *(.data*) + *(.rodata) /* We need to include .rodata here if gcc is used */ + *(.rodata*) /* with -fdata-sections. */ + *(.gnu.linkonce.d*) + } + .bss 0 : + { + *(.bss) + *(.bss*) + *(COMMON) + } + /* Global data not cleared after reset. */ + .noinit 0: + { + *(.noinit*) + } + .eeprom 0: + { + *(.eeprom*) + } + .fuse 0: + { + KEEP(*(.fuse)) + KEEP(*(.lfuse)) + KEEP(*(.hfuse)) + KEEP(*(.efuse)) + } + .lock 0: + { + KEEP(*(.lock*)) + } + .signature 0: + { + KEEP(*(.signature*)) + } + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } +} diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/libc.a new file mode 100644 index 0000000..6973038 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/libc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libm.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/libm.a new file mode 100644 index 0000000..61518f3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/libm.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libobjc.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/libobjc.a new file mode 100644 index 0000000..74d42c5 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/libobjc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libobjc.la b/arduino-0018-windows/hardware/tools/avr/avr/lib/libobjc.la new file mode 100644 index 0000000..6c369cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/avr/lib/libobjc.la @@ -0,0 +1,41 @@ +# libobjc.la - a libtool library file +# Generated by ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libobjc.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs='' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libobjc. +current=2 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/c/WinAVR/avr/lib' diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libprintf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/libprintf_flt.a new file mode 100644 index 0000000..2ff4717 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/libprintf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libprintf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/libprintf_min.a new file mode 100644 index 0000000..643f68d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/libprintf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libscanf_flt.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/libscanf_flt.a new file mode 100644 index 0000000..d1ca9e7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/libscanf_flt.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/avr/lib/libscanf_min.a b/arduino-0018-windows/hardware/tools/avr/avr/lib/libscanf_min.a new file mode 100644 index 0000000..8f59235 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/avr/lib/libscanf_min.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avarice.exe b/arduino-0018-windows/hardware/tools/avr/bin/avarice.exe new file mode 100644 index 0000000..488bf18 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avarice.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-addr2line.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-addr2line.exe new file mode 100644 index 0000000..aa5d036 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-addr2line.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-ar.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-ar.exe new file mode 100644 index 0000000..d9f2c89 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-ar.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-as.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-as.exe new file mode 100644 index 0000000..143b7a8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-as.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-c++.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-c++.exe new file mode 100644 index 0000000..b90c083 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-c++.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-c++filt.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-c++filt.exe new file mode 100644 index 0000000..63efb29 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-c++filt.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-cpp.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-cpp.exe new file mode 100644 index 0000000..00dded6 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-cpp.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-g++.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-g++.exe new file mode 100644 index 0000000..b90c083 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-g++.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-gcc-4.3.2.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-gcc-4.3.2.exe new file mode 100644 index 0000000..25019b7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-gcc-4.3.2.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-gcc.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-gcc.exe new file mode 100644 index 0000000..25019b7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-gcc.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-gccbug b/arduino-0018-windows/hardware/tools/avr/bin/avr-gccbug new file mode 100644 index 0000000..0cc7ffd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/avr-gccbug @@ -0,0 +1,558 @@ +#!/bin/sh +# Submit a problem report to a GNATS site. +# Copyright (C) 1993, 2000, 2001, 2002, 2003, 2007 Free Software Foundation, Inc. +# Contributed by Brendan Kehoe (brendan@cygnus.com), based on a +# version written by Heinz G. Seidl (hgs@cygnus.com). +# +# This file is part of GNU GNATS. +# +# GNU GNATS is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU GNATS is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU GNATS; see the file COPYING3. If not see +# . + +# The version of this send-pr. +VERSION=3.113 + +# The submitter-id for your site. +SUBMITTER=net + +# The default mail address for PR submissions. +GNATS_ADDR=gcc-gnats@gcc.gnu.org + +# The default release for this host. +# We have to guess at what program_transform_name might have done. +# "sed 1q" because neither "head -1" nor "head -n 1" is universal, argh. + +DEFAULT_GCC="`echo $0 | sed -e 's/bug//'`" +DEFAULT_RELEASE="`$DEFAULT_GCC --version | sed 1q`" + +# The default organization. +DEFAULT_ORGANIZATION= + +# What mailer to use. This must come after the config file, since it is +# host-dependent. +# Copied from cvsbug +if [ -f /usr/sbin/sendmail ]; then + MAIL_AGENT="/usr/sbin/sendmail -oi -t" +else + MAIL_AGENT="/usr/lib/sendmail -oi -t" +fi +MAILER=`echo $MAIL_AGENT | sed -e 's, .*,,'` +if [ ! -f "$MAILER" ] ; then + echo "$COMMAND: Cannot file mail program \"$MAILER\"." + echo "$COMMAND: Please fix the MAIL_AGENT entry in the $COMMAND file." + exit 1 +fi + + +# How to read the passwd database. +PASSWD="cat /etc/passwd" + +ECHON=bsd + +if [ $ECHON = bsd ] ; then + ECHON1="echo -n" + ECHON2= +elif [ $ECHON = sysv ] ; then + ECHON1=echo + ECHON2='\c' +else + ECHON1=echo + ECHON2= +fi + +# + +if [ -z "$TMPDIR" ]; then + TMPDIR=/tmp +else + if [ "`echo $TMPDIR | grep '/$'`" != "" ]; then + TMPDIR="`echo $TMPDIR | sed -e 's,/$,,'`" + fi +fi + +if [ yes = yes ]; then + TEMP0=`mktemp $TMPDIR/poXXXXXX` || exit 1 + TEMP=`mktemp $TMPDIR/pXXXXXX` || exit 1 + BAD=`mktemp $TMPDIR/pbadXXXXXX` || exit 1 + REF=`mktemp $TMPDIR/pfXXXXXX` || exit 1 + REMOVE_TEMP="rm -f $TEMP0 $TEMP $BAD $REF" +else + TEMPD=$TMPDIR/pd$$ + TEMP0=$TEMPD/po$$ + TEMP=$TEMPD/p$$ + BAD=$TEMPD/pbad$$ + REF=$TEMPD/pf$$ + mkdir $TEMPD || exit 1 + REMOVE_TEMP="rm -rf $TEMPD" +fi + +# find a user name +if [ "$LOGNAME" = "" ]; then + if [ "$USER" != "" ]; then + LOGNAME="$USER" + else + LOGNAME="UNKNOWN" + fi +fi + +FROM="$LOGNAME" +REPLY_TO="${REPLY_TO:-${REPLYTO:-$LOGNAME}}" + +# Find out the name of the originator of this PR. +if [ -n "$NAME" ]; then + ORIGINATOR="$NAME" +elif [ -f $HOME/.fullname ]; then + ORIGINATOR="`sed -e '1q' $HOME/.fullname`" +else + # Must use temp file due to incompatibilities in quoting behavior + # and to protect shell metacharacters in the expansion of $LOGNAME + $PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP0 + ORIGINATOR="`cat $TEMP0`" + rm -f $TEMP0 +fi + +if [ -n "$ORGANIZATION" ]; then + if [ -f "$ORGANIZATION" ]; then + ORGANIZATION="`cat $ORGANIZATION`" + fi +else + if [ -n "$DEFAULT_ORGANIZATION" ]; then + ORGANIZATION="$DEFAULT_ORGANIZATION" + elif [ -f $HOME/.organization ]; then + ORGANIZATION="`cat $HOME/.organization`" + fi +fi + +# If they don't have a preferred editor set, then use +if [ -z "$VISUAL" ]; then + if [ -z "$EDITOR" ]; then + EDIT=vi + else + EDIT="$EDITOR" + fi +else + EDIT="$VISUAL" +fi + +# Find out some information. +SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \ + ( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""` +ARCH=`[ -f /bin/arch ] && /bin/arch` +MACHINE=`[ -f /bin/machine ] && /bin/machine` + +COMMAND=`echo $0 | sed -e 's,.*/,,'` +USAGE="Usage: $COMMAND [-PVL] [-t address] [-f filename] [-s severity] + [-c address] [--request-id] [--version]" +REMOVE= +BATCH= +CC= +SEVERITY_C= + +while [ $# -gt 0 ]; do + case "$1" in + -r) ;; # Ignore for backward compat. + -t | --to) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi + shift ; GNATS_ADDR="$1" + EXPLICIT_GNATS_ADDR=true + ;; + -f | --file) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi + shift ; IN_FILE="$1" + if [ "$IN_FILE" != "-" -a ! -r "$IN_FILE" ]; then + echo "$COMMAND: cannot read $IN_FILE" + $REMOVE_TEMP + exit 1 + fi + ;; + -b | --batch) BATCH=true ;; + -c | --cc) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi + shift ; CC="$1" + ;; + -s | --severity) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi + shift ; SEVERITY_C="$1" + ;; + -p | -P | --print) PRINT=true ;; + -L | --list) FORMAT=norm ;; + -l | -CL | --lisp) FORMAT=lisp ;; + --request-id) REQUEST_ID=true ;; + -h | --help) echo "$USAGE"; $REMOVE_TEMP; exit 0 ;; + -V | --version) cat < max) { max = length($0); } } + END {print max + 1;}'` + c=`expr 70 / $l` + if [ $c -eq 0 ]; then c=1; fi + echo "$CATEGORIES" | \ + awk 'BEGIN {print "Known categories:"; i = 0 } + { printf ("%-'$l'.'$l's", $0); if ((++i % '$c') == 0) { print "" } } + END { print ""; }' + $REMOVE_TEMP + exit 0 + ;; +esac + +ORIGINATOR_C='' +ORGANIZATION_C='' +SYNOPSIS_C='' +if [ -z "$SEVERITY_C" ]; then + SEVERITY_C='<[ non-critical | serious | critical ] (one line)>' +fi +PRIORITY_C='<[ low | medium ] (one line)>' +CATEGORY_C='' +RELEASE_C='' +ENVIRONMENT_C='' +DESCRIPTION_C='' +HOW_TO_REPEAT_C='' +FIX_C='' + +# Catch some signals. ($xs kludge needed by Sun /bin/sh) +xs=0 +trap '$REMOVE_TEMP; exit $xs' 0 +trap 'echo "$COMMAND: Aborting ..."; $REMOVE_TEMP; xs=1; exit' 1 3 13 15 + +# If they told us to use a specific file, then do so. +if [ -n "$IN_FILE" ]; then + if [ "$IN_FILE" = "-" ]; then + # The PR is coming from the standard input. + if [ -n "$EXPLICIT_GNATS_ADDR" ]; then + sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" > $TEMP + else + cat > $TEMP + fi + else + # Use the file they named. + if [ -n "$EXPLICIT_GNATS_ADDR" ]; then + sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" $IN_FILE > $TEMP + else + cat $IN_FILE > $TEMP + fi + fi +else + + if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then + # If their PR_FORM points to a bogus entry, then bail. + if [ ! -f "$PR_FORM" -o ! -r "$PR_FORM" -o ! -s "$PR_FORM" ]; then + echo "$COMMAND: can't seem to read your template file (\`$PR_FORM'), ignoring PR_FORM" + sleep 1 + PRINT_INTERN=bad_prform + fi + fi + + if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then + cp $PR_FORM $TEMP || + ( echo "$COMMAND: could not copy $PR_FORM" ; xs=1; exit ) + else + for file in $TEMP $REF ; do + cat > $file << '__EOF__' +SEND-PR: -*- send-pr -*- +SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as +SEND-PR: will all comments (text enclosed in `<' and `>'). +SEND-PR: +SEND-PR: Please consult the GCC manual if you are not sure how to +SEND-PR: fill out a problem report. +SEND-PR: Note that the Synopsis field is mandatory. The Subject (for +SEND-PR: the mail) will be made the same as Synopsis unless explicitly +SEND-PR: changed. +SEND-PR: +SEND-PR: Choose from the following categories: +SEND-PR: +__EOF__ + + # Format the categories so they fit onto lines. + l=`echo "$CATEGORIES" | \ + awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } } + END {print max + 1;}'` + c=`expr 61 / $l` + if [ $c -eq 0 ]; then c=1; fi + echo "$CATEGORIES" | \ + awk 'BEGIN {printf "SEND-PR: "; i = 0 } + { printf ("%-'$l'.'$l's", $0); + if ((++i % '$c') == 0) { printf "\nSEND-PR: " } } + END { printf "\nSEND-PR:\n"; }' >> $file + + cat >> $file << __EOF__ +To: $GNATS_ADDR +Subject: +From: $FROM +Reply-To: $REPLYTO +Cc: $CC +X-send-pr-version: $VERSION +X-GNATS-Notify: + + +>Submitter-Id: $SUBMITTER +>Originator: $ORIGINATOR +>Organization: ${ORGANIZATION-$ORGANIZATION_C} +>Confidential: no +SEND-PR: Leave "Confidential" as "no"; all GCC PRs are public. +>Synopsis: $SYNOPSIS_C +>Severity: $SEVERITY_C +SEND-PR: critical GCC is completely not operational; no work-around known. +SEND-PR: serious GCC is not working properly; a work-around is possible. +SEND-PR: non-critical Report indicates minor problem. +>Priority: $PRIORITY_C +SEND-PR: medium The problem should be solved in the next release. +SEND-PR: low The problem should be solve in a future release. +>Category: $CATEGORY_C +>Class: <[ doc-bug | accepts-illegal | rejects-legal | wrong-code | ice-on-legal-code| ice-on-illegal-code | pessimizes-code | sw-bug | change-request | support ] (one line)> +SEND-PR: doc-bug The documentation is incorrect. +SEND-PR: accepts-illegal GCC fails to reject erroneous code. +SEND-PR: rejects-legal GCC gives an error message for correct code. +SEND-PR: wrong-code The machine code generated by gcc is incorrect. +SEND-PR: ice-on-legal-code GCC gives an Internal Compiler Error (ICE) +SEND-PR: for correct code +SEND-PR: ice-on-illegal-code GCC gives an ICE instead of reporting an error +SEND-PR: pessimizes-code GCC misses an important optimization opportunity +SEND-PR: sw-bug Software bug of some other class than above +SEND-PR: change-request A feature in GCC is missing. +SEND-PR: support I need help with gcc. +>Release: ${DEFAULT_RELEASE-$RELEASE_C} +>Environment: +`[ -n "$SYSTEM" ] && echo System: $SYSTEM` +`[ -n "$ARCH" ] && echo Architecture: $ARCH` +`[ -n "$MACHINE" ] && echo Machine: $MACHINE` + $ENVIRONMENT_C +host: i686-pc-mingw32 +build: i686-pc-mingw32 +target: avr-unknown-none +__EOF__ + cat >> $file << \__EOF__ +configured with: ../gcc-4.3.2/configure --enable-win32-registry=WinAVR-20081205 --with-gmp=/usr/local --with-mpfr=/usr/local --prefix=/c/WinAVR --target=avr --enable-languages=c,c++,objc --with-dwarf2 --enable-doc --disable-shared --disable-libada --disable-libssp --disable-nls --with-pkgversion='WinAVR 20081205' --with-bugurl='URL:http://sourceforge.net/tracker/?atid=520074&group_id=68108&func=browse' +__EOF__ + cat >> $file << __EOF__ +>Description: + $DESCRIPTION_C +>How-To-Repeat: + $HOW_TO_REPEAT_C +>Fix: + $FIX_C +__EOF__ + done + fi + + if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then + cat $TEMP + xs=0; exit + fi + + chmod u+w $TEMP + if [ -z "$REQUEST_ID" ]; then + eval $EDIT $TEMP + else + ed -s $TEMP << '__EOF__' +/^Subject/s/^Subject:.*/Subject: request for a customer id/ +/^>Category/s/^>Category:.*/>Category: send-pr/ +w +q +__EOF__ + fi + + if cmp -s $REF $TEMP ; then + echo "$COMMAND: problem report not filled out, therefore not sent" + xs=1; exit + fi +fi + +# +# Check the enumeration fields + +# This is a "sed-subroutine" with one keyword parameter +# (with workaround for Sun sed bug) +# +SED_CMD=' +/$PATTERN/{ +s||| +s|<.*>|| +s|^[ ]*|| +s|[ ]*$|| +p +q +}' + + +while [ -z "$REQUEST_ID" ]; do + CNT=0 + + # 1) Confidential + # + PATTERN=">Confidential:" + CONFIDENTIAL=`eval sed -n -e "\"$SED_CMD\"" $TEMP` + case "$CONFIDENTIAL" in + no) CNT=`expr $CNT + 1` ;; + *) echo "$COMMAND: \`$CONFIDENTIAL' is not a valid value for \`Confidential'." ;; + esac + # + # 2) Severity + # + PATTERN=">Severity:" + SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP` + case "$SEVERITY" in + ""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;; + *) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'." + esac + # + # 3) Priority + # + PATTERN=">Priority:" + PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP` + case "$PRIORITY" in + ""|low|medium) CNT=`expr $CNT + 1` ;; + high) echo "$COMMAND: \`Priority: high' is reserved for GCC maintainers." ;; + *) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'." + esac + # + # 4) Category + # + PATTERN=">Category:" + CATEGORY=`eval sed -n -e "\"$SED_CMD\"" $TEMP` + FOUND= + for C in $CATEGORIES + do + if [ "$C" = "$CATEGORY" ]; then FOUND=true ; break ; fi + done + if [ -n "$FOUND" ]; then + CNT=`expr $CNT + 1` + else + if [ -z "$CATEGORY" ]; then + echo "$COMMAND: you must include a Category: field in your report." + else + echo "$COMMAND: \`$CATEGORY' is not a known category." + fi + fi + # + # 5) Class + # + PATTERN=">Class:" + CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP` + case "$CLASS" in + ""|doc-bug|accepts-illegal|rejects-legal|wrong-code|ice-on-legal-code|ice-on-illegal-code|pessimizes-code|sw-bug|change-request|support) CNT=`expr $CNT + 1` ;; + *) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'." + esac + # + # 6) Check that synopsis is not empty + # + if grep "^>Synopsis:[ ]*${SYNOPSIS_C}\$" $TEMP > /dev/null + then + echo "$COMMAND: Synopsis must not be empty." + else + CNT=`expr $CNT + 1` + fi + + [ $CNT -lt 6 -a -z "$BATCH" ] && + echo "Errors were found with the problem report." + + while true; do + if [ -z "$BATCH" ]; then + $ECHON1 "a)bort, e)dit or s)end? $ECHON2" + read input + else + if [ $CNT -eq 6 ]; then + input=s + else + input=a + fi + fi + case "$input" in + a*) + if [ -z "$BATCH" ]; then + echo "$COMMAND: the problem report remains in $BAD and is not sent." + REMOVE_TEMP="rm -f $TEMP0 $TEMP $REF" + mv $TEMP $BAD + else + echo "$COMMAND: the problem report is not sent." + fi + xs=1; exit + ;; + e*) + eval $EDIT $TEMP + continue 2 + ;; + s*) + break 2 + ;; + esac + done +done + +# +# Make sure the mail has got a Subject. If not, use the same as +# in Synopsis. +# + +if grep '^Subject:[ ]*$' $TEMP > /dev/null +then + SYNOPSIS=`grep '^>Synopsis:' $TEMP | sed -e 's/^>Synopsis:[ ]*//'` + ed -s $TEMP << __EOF__ +/^Subject:/s/:.*\$/: $SYNOPSIS/ +w +q +__EOF__ +fi + +# +# Remove comments and send the problem report +# (we have to use patterns, where the comment contains regex chars) +# +# /^>Originator:/s;$ORIGINATOR;; +sed -e " +/^SEND-PR:/d +/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;; +/^>Confidential:/s;<.*>;; +/^>Synopsis:/s;$SYNOPSIS_C;; +/^>Severity:/s;<.*>;; +/^>Priority:/s;<.*>;; +/^>Category:/s;$CATEGORY_C;; +/^>Class:/s;<.*>;; +/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;; +/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;; +/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;; +/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;; +/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;; +" $TEMP > $REF + +if $MAIL_AGENT < $REF; then + echo "$COMMAND: problem report sent" + xs=0; exit +else + echo "$COMMAND: mysterious mail failure." + if [ -z "$BATCH" ]; then + echo "$COMMAND: the problem report remains in $BAD and is not sent." + REMOVE_TEMP="rm -f $TEMP0 $TEMP $REF" + mv $REF $BAD + else + echo "$COMMAND: the problem report is not sent." + fi + xs=1; exit +fi diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-gcov.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-gcov.exe new file mode 100644 index 0000000..b6b2c2f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-gcov.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-gdb.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-gdb.exe new file mode 100644 index 0000000..e4b3167 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-gdb.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-gprof.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-gprof.exe new file mode 100644 index 0000000..5217017 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-gprof.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-insight.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-insight.exe new file mode 100644 index 0000000..c2c4dc8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-insight.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-ld.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-ld.exe new file mode 100644 index 0000000..dd25577 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-ld.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-man b/arduino-0018-windows/hardware/tools/avr/bin/avr-man new file mode 100644 index 0000000..9d4aece --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/avr-man @@ -0,0 +1,37 @@ +#! /bin/sh + +# Copyright (c) 2004, Joerg Wunsch +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of the copyright holders nor the names of +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +## man(1) replacement to access the avr-libc manual pages + +: ${DESTDIR:-} +prefix=/c/WinAVR +datadir=/c/WinAVR + +exec man -M /c/WinAVR/doc/avr-libc/man "$@" diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-nm.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-nm.exe new file mode 100644 index 0000000..af6f59a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-nm.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-objcopy.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-objcopy.exe new file mode 100644 index 0000000..fc8d748 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-objcopy.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-objdump.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-objdump.exe new file mode 100644 index 0000000..c0da304 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-objdump.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-ranlib.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-ranlib.exe new file mode 100644 index 0000000..9e1568c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-ranlib.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-readelf.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-readelf.exe new file mode 100644 index 0000000..b421b0e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-readelf.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-size.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-size.exe new file mode 100644 index 0000000..dc0597a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-size.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-strings.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-strings.exe new file mode 100644 index 0000000..9451d7f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-strings.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avr-strip.exe b/arduino-0018-windows/hardware/tools/avr/bin/avr-strip.exe new file mode 100644 index 0000000..161ab18 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avr-strip.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/avrdude.exe b/arduino-0018-windows/hardware/tools/avr/bin/avrdude.exe new file mode 100644 index 0000000..3546144 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/avrdude.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/cygwin1.dll b/arduino-0018-windows/hardware/tools/avr/bin/cygwin1.dll new file mode 100644 index 0000000..0296b95 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/cygwin1.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/giveio.sys b/arduino-0018-windows/hardware/tools/avr/bin/giveio.sys new file mode 100644 index 0000000..62a0cb6 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/giveio.sys differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/ice-gdb b/arduino-0018-windows/hardware/tools/avr/bin/ice-gdb new file mode 100644 index 0000000..ac92e60 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/ice-gdb @@ -0,0 +1,44 @@ +#!/usr/bin/perl +$prefix = "c:/WinAVR"; +$datadir = "c:/WinAVR/doc"; +$debugger = "avr-gdb"; + +@argcmds = ( "-b", "--cd", "--command", "--core", "--pid", "--directory", + "--exec", "--interpreter", "--se", "--symbols", "--tty", + "-s", "-e", "-se", "-x", "-d" ); + +for ($i = 0; $i <= $#ARGV; $i++) { + $arg = $ARGV[$i]; + + if ($arg =~ /^-/ && + (grep $_ eq $arg, @argcmds || grep /^-$arg$/, @argcmds)) { + $i++; + } + elsif ($arg eq "--debugger" && $i < $#ARGV) { + $debugger = $ARGV[$i + 1]; + splice @ARGV, $i, 2; + $i--; + } + elsif ($arg eq "--capture" || $arg eq "--ignore-intr") { + $ENV{AVARICE_ARGS} = "$ENV{AVARICE_ARGS} $arg"; + splice @ARGV, $i, 1; + # Don't load an executable + $capture = 1 if $arg eq "--capture"; + $i--; + } + elsif ($arg eq "--external") { + $avarice_running = 1; + splice @ARGV, $i, 1; + $i--; + } + elsif (!($arg =~ /^-/)) { + $exe = $arg; + break; + } +} + +$exe = "" if $capture; + +system "start-avarice $exe" unless $avarice_running; +unshift @ARGV, ($debugger, "-x", "$datadir/avarice/gdb-avarice-script" ); +exec @ARGV; diff --git a/arduino-0018-windows/hardware/tools/avr/bin/ice-insight b/arduino-0018-windows/hardware/tools/avr/bin/ice-insight new file mode 100644 index 0000000..b4fa710 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/ice-insight @@ -0,0 +1,2 @@ +#!/bin/sh +exec ice-gdb --debugger avr-insight "$@" diff --git a/arduino-0018-windows/hardware/tools/avr/bin/install_giveio.bat b/arduino-0018-windows/hardware/tools/avr/bin/install_giveio.bat new file mode 100644 index 0000000..e473ce3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/install_giveio.bat @@ -0,0 +1,34 @@ +@set DIRVERNAME=giveio +@set DIRVERFILE=%DIRVERNAME%.sys + +@echo Copying the driver to the windows directory +@echo target file: %WINDIR%\%DIRVERFILE% +@copy %DIRVERFILE% %WINDIR%\%DIRVERFILE% + +@echo Remove a running service if needed... +@loaddrv stop %DIRVERNAME% >NUL +@if errorlevel 2 goto install + +@loaddrv remove %DIRVERNAME% >NUL +@if errorlevel 1 goto install + +:install +@echo Installing Windows NT/2k/XP driver: %DIRVERNAME% + +@loaddrv install %DIRVERNAME% %WINDIR%\%DIRVERFILE% +@if errorlevel 3 goto error + +@loaddrv start %DIRVERNAME% +@if errorlevel 1 goto error + +@loaddrv starttype %DIRVERNAME% auto +@if errorlevel 1 goto error + +@echo Success +@goto exit + +:error +@echo ERROR: Installation of %DIRVERNAME% failed + +:exit + diff --git a/arduino-0018-windows/hardware/tools/avr/bin/itcl32.dll b/arduino-0018-windows/hardware/tools/avr/bin/itcl32.dll new file mode 100644 index 0000000..d5f02bb Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/itcl32.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/itk32.dll b/arduino-0018-windows/hardware/tools/avr/bin/itk32.dll new file mode 100644 index 0000000..cc31479 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/itk32.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/kill-avarice b/arduino-0018-windows/hardware/tools/avr/bin/kill-avarice new file mode 100644 index 0000000..da34261 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/kill-avarice @@ -0,0 +1,13 @@ +#!/bin/sh +if [ -f /usr/bin/cygpath.exe ]; then + # cygwin + while + avaricepid=`ps -es | grep '/avarice' | head -1 | cut -c2-7` + [ "$avaricepid" != "" ] + do + kill -9 $avaricepid + done +else + # linux, probably some others at least + killall -q avarice +fi diff --git a/arduino-0018-windows/hardware/tools/avr/bin/libusb0.dll b/arduino-0018-windows/hardware/tools/avr/bin/libusb0.dll new file mode 100644 index 0000000..9387bed Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/libusb0.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/loaddrv.exe b/arduino-0018-windows/hardware/tools/avr/bin/loaddrv.exe new file mode 100644 index 0000000..44d8f1e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/loaddrv.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/remove_giveio.bat b/arduino-0018-windows/hardware/tools/avr/bin/remove_giveio.bat new file mode 100644 index 0000000..67302a4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/remove_giveio.bat @@ -0,0 +1,14 @@ +@set DIRVERNAME=giveio + +@loaddrv stop %DIRVERNAME% +@if errorlevel 2 goto error + +@loaddrv remove %DIRVERNAME% +@if errorlevel 1 goto error + +@goto exit + +:error +@echo ERROR: Deinstallation of %DIRVERNAME% failed + +:exit diff --git a/arduino-0018-windows/hardware/tools/avr/bin/simulavr-disp.exe b/arduino-0018-windows/hardware/tools/avr/bin/simulavr-disp.exe new file mode 100644 index 0000000..bb0d1e9 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/simulavr-disp.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/simulavr-vcd.exe b/arduino-0018-windows/hardware/tools/avr/bin/simulavr-vcd.exe new file mode 100644 index 0000000..4c92563 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/simulavr-vcd.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/simulavr.exe b/arduino-0018-windows/hardware/tools/avr/bin/simulavr.exe new file mode 100644 index 0000000..735688d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/simulavr.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/srec_cat.exe b/arduino-0018-windows/hardware/tools/avr/bin/srec_cat.exe new file mode 100644 index 0000000..30b2171 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/srec_cat.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/srec_cmp.exe b/arduino-0018-windows/hardware/tools/avr/bin/srec_cmp.exe new file mode 100644 index 0000000..f73c127 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/srec_cmp.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/srec_info.exe b/arduino-0018-windows/hardware/tools/avr/bin/srec_info.exe new file mode 100644 index 0000000..3fdecfa Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/srec_info.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/start-avarice b/arduino-0018-windows/hardware/tools/avr/bin/start-avarice new file mode 100644 index 0000000..182e5ec --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/start-avarice @@ -0,0 +1,11 @@ +#!/bin/sh +kill-avarice +TMPDIR=/tmp +if [ -f /usr/bin/cygpath.exe ]; then + TMPDIR=`cygpath -w $TMPDIR` +fi +if [ "$1" != "" ] ; then + AVARICE_ARGS="$AVARICE_ARGS --erase -f $1" +fi +avarice $AVARICE_ARGS localhost:6423 --detach + diff --git a/arduino-0018-windows/hardware/tools/avr/bin/status_giveio.bat b/arduino-0018-windows/hardware/tools/avr/bin/status_giveio.bat new file mode 100644 index 0000000..2ed16db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/bin/status_giveio.bat @@ -0,0 +1,12 @@ +@set DIRVERNAME=giveio + +@loaddrv status %DIRVERNAME% +@if errorlevel 1 goto error + +@goto exit + +:error +@echo ERROR: Status querry for %DIRVERNAME% failed + +:exit + diff --git a/arduino-0018-windows/hardware/tools/avr/bin/tcl84.dll b/arduino-0018-windows/hardware/tools/avr/bin/tcl84.dll new file mode 100644 index 0000000..ea5f940 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/tcl84.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/tclpip84.dll b/arduino-0018-windows/hardware/tools/avr/bin/tclpip84.dll new file mode 100644 index 0000000..00a0390 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/tclpip84.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/tclsh84.exe b/arduino-0018-windows/hardware/tools/avr/bin/tclsh84.exe new file mode 100644 index 0000000..3f54197 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/tclsh84.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/tk84.dll b/arduino-0018-windows/hardware/tools/avr/bin/tk84.dll new file mode 100644 index 0000000..d4f0e61 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/tk84.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/bin/wish84.exe b/arduino-0018-windows/hardware/tools/avr/bin/wish84.exe new file mode 100644 index 0000000..97af6a3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/bin/wish84.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/GNU Manuals Online.url b/arduino-0018-windows/hardware/tools/avr/doc/GNU Manuals Online.url new file mode 100644 index 0000000..df019a4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/GNU Manuals Online.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=http://www.gnu.org/manual/manual.html diff --git a/arduino-0018-windows/hardware/tools/avr/doc/WinAVR.url b/arduino-0018-windows/hardware/tools/avr/doc/WinAVR.url new file mode 100644 index 0000000..d2bb956 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/WinAVR.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=http://winavr.sourceforge.net/ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avarice/avarice.pdf b/arduino-0018-windows/hardware/tools/avr/doc/avarice/avarice.pdf new file mode 100644 index 0000000..02cfb47 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avarice/avarice.pdf differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avarice/gdb-avarice-script b/arduino-0018-windows/hardware/tools/avr/doc/avarice/gdb-avarice-script new file mode 100644 index 0000000..a986c2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avarice/gdb-avarice-script @@ -0,0 +1,25 @@ +set remoteaddresssize 32 +set remote Z-packet enable +set remote hardware-breakpoint-limit 3 +set remote hardware-watchpoint-limit 2 + +define target-ice + target extended-remote localhost:6423 +end + +define ice-load + shell start-avarice $arg0 + file $arg0 + target-ice +end + +define ice-restart + shell start-avarice + target-ice +end + +define hook-quit + shell kill-avarice +end + +target-ice diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual.pdf b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual.pdf new file mode 100644 index 0000000..763e876 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual.pdf @@ -0,0 +1,69959 @@ +%PDF-1.4 +%ÐÔÅØ +4 0 obj +<< /S /GoTo /D (section.1) >> +endobj +7 0 obj +(\376\377\000A\000V\000R\000\040\000L\000i\000b\000c) +endobj +8 0 obj +<< /S /GoTo /D (subsection.1.1) >> +endobj +11 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +endobj +12 0 obj +<< /S /GoTo /D (subsection.1.2) >> +endobj +15 0 obj +(\376\377\000G\000e\000n\000e\000r\000a\000l\000\040\000i\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n\000\040\000a\000b\000o\000u\000t\000\040\000t\000h\000i\000s\000\040\000l\000i\000b\000r\000a\000r\000y) +endobj +16 0 obj +<< /S /GoTo /D (subsection.1.3) >> +endobj +19 0 obj +(\376\377\000S\000u\000p\000p\000o\000r\000t\000e\000d\000\040\000D\000e\000v\000i\000c\000e\000s) +endobj +20 0 obj +<< /S /GoTo /D (subsection.1.4) >> +endobj +23 0 obj +(\376\377\000a\000v\000r\000-\000l\000i\000b\000c\000\040\000L\000i\000c\000e\000n\000s\000e) +endobj +24 0 obj +<< /S /GoTo /D (section.2) >> +endobj +27 0 obj +(\376\377\000T\000o\000o\000l\000c\000h\000a\000i\000n\000\040\000O\000v\000e\000r\000v\000i\000e\000w) +endobj +28 0 obj +<< /S /GoTo /D (subsection.2.1) >> +endobj +31 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +endobj +32 0 obj +<< /S /GoTo /D (subsection.2.2) >> +endobj +35 0 obj +(\376\377\000F\000S\000F\000\040\000a\000n\000d\000\040\000G\000N\000U) +endobj +36 0 obj +<< /S /GoTo /D (subsection.2.3) >> +endobj +39 0 obj +(\376\377\000G\000C\000C) +endobj +40 0 obj +<< /S /GoTo /D (subsection.2.4) >> +endobj +43 0 obj +(\376\377\000G\000N\000U\000\040\000B\000i\000n\000u\000t\000i\000l\000s) +endobj +44 0 obj +<< /S /GoTo /D (subsection.2.5) >> +endobj +47 0 obj +(\376\377\000a\000v\000r\000-\000l\000i\000b\000c) +endobj +48 0 obj +<< /S /GoTo /D (subsection.2.6) >> +endobj +51 0 obj +(\376\377\000B\000u\000i\000l\000d\000i\000n\000g\000\040\000S\000o\000f\000t\000w\000a\000r\000e) +endobj +52 0 obj +<< /S /GoTo /D (subsection.2.7) >> +endobj +55 0 obj +(\376\377\000A\000V\000R\000D\000U\000D\000E) +endobj +56 0 obj +<< /S /GoTo /D (subsection.2.8) >> +endobj +59 0 obj +(\376\377\000G\000D\000B\000\040\000/\000\040\000I\000n\000s\000i\000g\000h\000t\000\040\000/\000\040\000D\000D\000D) +endobj +60 0 obj +<< /S /GoTo /D (subsection.2.9) >> +endobj +63 0 obj +(\376\377\000A\000V\000a\000R\000I\000C\000E) +endobj +64 0 obj +<< /S /GoTo /D (subsection.2.10) >> +endobj +67 0 obj +(\376\377\000S\000i\000m\000u\000l\000A\000V\000R) +endobj +68 0 obj +<< /S /GoTo /D (subsection.2.11) >> +endobj +71 0 obj +(\376\377\000U\000t\000i\000l\000i\000t\000i\000e\000s) +endobj +72 0 obj +<< /S /GoTo /D (subsection.2.12) >> +endobj +75 0 obj +(\376\377\000T\000o\000o\000l\000c\000h\000a\000i\000n\000\040\000D\000i\000s\000t\000r\000i\000b\000u\000t\000i\000o\000n\000s\000\040\000\050\000D\000i\000s\000t\000r\000o\000s\000\051) +endobj +76 0 obj +<< /S /GoTo /D (subsection.2.13) >> +endobj +79 0 obj +(\376\377\000O\000p\000e\000n\000\040\000S\000o\000u\000r\000c\000e) +endobj +80 0 obj +<< /S /GoTo /D (section.3) >> +endobj +83 0 obj +(\376\377\000M\000e\000m\000o\000r\000y\000\040\000A\000r\000e\000a\000s\000\040\000a\000n\000d\000\040\000U\000s\000i\000n\000g\000\040\000m\000a\000l\000l\000o\000c\000\050\000\051) +endobj +84 0 obj +<< /S /GoTo /D (subsection.3.1) >> +endobj +87 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +endobj +88 0 obj +<< /S /GoTo /D (subsection.3.2) >> +endobj +91 0 obj +(\376\377\000I\000n\000t\000e\000r\000n\000a\000l\000\040\000v\000s\000.\000\040\000e\000x\000t\000e\000r\000n\000a\000l\000\040\000R\000A\000M) +endobj +92 0 obj +<< /S /GoTo /D (subsection.3.3) >> +endobj +95 0 obj +(\376\377\000T\000u\000n\000a\000b\000l\000e\000s\000\040\000f\000o\000r\000\040\000m\000a\000l\000l\000o\000c\000\050\000\051) +endobj +96 0 obj +<< /S /GoTo /D (subsection.3.4) >> +endobj +99 0 obj +(\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000\040\000d\000e\000t\000a\000i\000l\000s) +endobj +100 0 obj +<< /S /GoTo /D (section.4) >> +endobj +103 0 obj +(\376\377\000M\000e\000m\000o\000r\000y\000\040\000S\000e\000c\000t\000i\000o\000n\000s) +endobj +104 0 obj +<< /S /GoTo /D (subsection.4.1) >> +endobj +107 0 obj +(\376\377\000T\000h\000e\000\040\000.\000t\000e\000x\000t\000\040\000S\000e\000c\000t\000i\000o\000n) +endobj +108 0 obj +<< /S /GoTo /D (subsection.4.2) >> +endobj +111 0 obj +(\376\377\000T\000h\000e\000\040\000.\000d\000a\000t\000a\000\040\000S\000e\000c\000t\000i\000o\000n) +endobj +112 0 obj +<< /S /GoTo /D (subsection.4.3) >> +endobj +115 0 obj +(\376\377\000T\000h\000e\000\040\000.\000b\000s\000s\000\040\000S\000e\000c\000t\000i\000o\000n) +endobj +116 0 obj +<< /S /GoTo /D (subsection.4.4) >> +endobj +119 0 obj +(\376\377\000T\000h\000e\000\040\000.\000e\000e\000p\000r\000o\000m\000\040\000S\000e\000c\000t\000i\000o\000n) +endobj +120 0 obj +<< /S /GoTo /D (subsection.4.5) >> +endobj +123 0 obj +(\376\377\000T\000h\000e\000\040\000.\000n\000o\000i\000n\000i\000t\000\040\000S\000e\000c\000t\000i\000o\000n) +endobj +124 0 obj +<< /S /GoTo /D (subsection.4.6) >> +endobj +127 0 obj +(\376\377\000T\000h\000e\000\040\000.\000i\000n\000i\000t\000N\000\040\000S\000e\000c\000t\000i\000o\000n\000s) +endobj +128 0 obj +<< /S /GoTo /D (subsection.4.7) >> +endobj +131 0 obj +(\376\377\000T\000h\000e\000\040\000.\000f\000i\000n\000i\000N\000\040\000S\000e\000c\000t\000i\000o\000n\000s) +endobj +132 0 obj +<< /S /GoTo /D (subsection.4.8) >> +endobj +135 0 obj +(\376\377\000U\000s\000i\000n\000g\000\040\000S\000e\000c\000t\000i\000o\000n\000s\000\040\000i\000n\000\040\000A\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000C\000o\000d\000e) +endobj +136 0 obj +<< /S /GoTo /D (subsection.4.9) >> +endobj +139 0 obj +(\376\377\000U\000s\000i\000n\000g\000\040\000S\000e\000c\000t\000i\000o\000n\000s\000\040\000i\000n\000\040\000C\000\040\000C\000o\000d\000e) +endobj +140 0 obj +<< /S /GoTo /D (section.5) >> +endobj +143 0 obj +(\376\377\000D\000a\000t\000a\000\040\000i\000n\000\040\000P\000r\000o\000g\000r\000a\000m\000\040\000S\000p\000a\000c\000e) +endobj +144 0 obj +<< /S /GoTo /D (subsection.5.1) >> +endobj +147 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +endobj +148 0 obj +<< /S /GoTo /D (subsection.5.2) >> +endobj +151 0 obj +(\376\377\000A\000\040\000N\000o\000t\000e\000\040\000O\000n\000\040\000c\000o\000n\000s\000t) +endobj +152 0 obj +<< /S /GoTo /D (subsection.5.3) >> +endobj +155 0 obj +(\376\377\000S\000t\000o\000r\000i\000n\000g\000\040\000a\000n\000d\000\040\000R\000e\000t\000r\000i\000e\000v\000i\000n\000g\000\040\000D\000a\000t\000a\000\040\000i\000n\000\040\000t\000h\000e\000\040\000P\000r\000o\000g\000r\000a\000m\000\040\000S\000p\000a\000c\000e) +endobj +156 0 obj +<< /S /GoTo /D (subsection.5.4) >> +endobj +159 0 obj +(\376\377\000S\000t\000o\000r\000i\000n\000g\000\040\000a\000n\000d\000\040\000R\000e\000t\000r\000i\000e\000v\000i\000n\000g\000\040\000S\000t\000r\000i\000n\000g\000s\000\040\000i\000n\000\040\000t\000h\000e\000\040\000P\000r\000o\000g\000r\000a\000m\000\040\000S\000p\000a\000c\000e) +endobj +160 0 obj +<< /S /GoTo /D (subsection.5.5) >> +endobj +163 0 obj +(\376\377\000C\000a\000v\000e\000a\000t\000s) +endobj +164 0 obj +<< /S /GoTo /D (section.6) >> +endobj +167 0 obj +(\376\377\000a\000v\000r\000-\000l\000i\000b\000c\000\040\000a\000n\000d\000\040\000a\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000p\000r\000o\000g\000r\000a\000m\000s) +endobj +168 0 obj +<< /S /GoTo /D (subsection.6.1) >> +endobj +171 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +endobj +172 0 obj +<< /S /GoTo /D (subsection.6.2) >> +endobj +175 0 obj +(\376\377\000I\000n\000v\000o\000k\000i\000n\000g\000\040\000t\000h\000e\000\040\000c\000o\000m\000p\000i\000l\000e\000r) +endobj +176 0 obj +<< /S /GoTo /D (subsection.6.3) >> +endobj +179 0 obj +(\376\377\000E\000x\000a\000m\000p\000l\000e\000\040\000p\000r\000o\000g\000r\000a\000m) +endobj +180 0 obj +<< /S /GoTo /D (subsection.6.4) >> +endobj +183 0 obj +(\376\377\000P\000s\000e\000u\000d\000o\000-\000o\000p\000s\000\040\000a\000n\000d\000\040\000o\000p\000e\000r\000a\000t\000o\000r\000s) +endobj +184 0 obj +<< /S /GoTo /D (section.7) >> +endobj +187 0 obj +(\376\377\000I\000n\000l\000i\000n\000e\000\040\000A\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000C\000o\000o\000k\000b\000o\000o\000k) +endobj +188 0 obj +<< /S /GoTo /D (subsection.7.1) >> +endobj +191 0 obj +(\376\377\000G\000C\000C\000\040\000a\000s\000m\000\040\000S\000t\000a\000t\000e\000m\000e\000n\000t) +endobj +192 0 obj +<< /S /GoTo /D (subsection.7.2) >> +endobj +195 0 obj +(\376\377\000A\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000C\000o\000d\000e) +endobj +196 0 obj +<< /S /GoTo /D (subsection.7.3) >> +endobj +199 0 obj +(\376\377\000I\000n\000p\000u\000t\000\040\000a\000n\000d\000\040\000O\000u\000t\000p\000u\000t\000\040\000O\000p\000e\000r\000a\000n\000d\000s) +endobj +200 0 obj +<< /S /GoTo /D (subsection.7.4) >> +endobj +203 0 obj +(\376\377\000C\000l\000o\000b\000b\000e\000r\000s) +endobj +204 0 obj +<< /S /GoTo /D (subsection.7.5) >> +endobj +207 0 obj +(\376\377\000A\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000M\000a\000c\000r\000o\000s) +endobj +208 0 obj +<< /S /GoTo /D (subsection.7.6) >> +endobj +211 0 obj +(\376\377\000C\000\040\000S\000t\000u\000b\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000s) +endobj +212 0 obj +<< /S /GoTo /D (subsection.7.7) >> +endobj +215 0 obj +(\376\377\000C\000\040\000N\000a\000m\000e\000s\000\040\000U\000s\000e\000d\000\040\000i\000n\000\040\000A\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000C\000o\000d\000e) +endobj +216 0 obj +<< /S /GoTo /D (subsection.7.8) >> +endobj +219 0 obj +(\376\377\000L\000i\000n\000k\000s) +endobj +220 0 obj +<< /S /GoTo /D (section.8) >> +endobj +223 0 obj +(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000B\000u\000i\000l\000d\000\040\000a\000\040\000L\000i\000b\000r\000a\000r\000y) +endobj +224 0 obj +<< /S /GoTo /D (subsection.8.1) >> +endobj +227 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +endobj +228 0 obj +<< /S /GoTo /D (subsection.8.2) >> +endobj +231 0 obj +(\376\377\000H\000o\000w\000\040\000t\000h\000e\000\040\000L\000i\000n\000k\000e\000r\000\040\000W\000o\000r\000k\000s) +endobj +232 0 obj +<< /S /GoTo /D (subsection.8.3) >> +endobj +235 0 obj +(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000D\000e\000s\000i\000g\000n\000\040\000a\000\040\000L\000i\000b\000r\000a\000r\000y) +endobj +236 0 obj +<< /S /GoTo /D (subsection.8.4) >> +endobj +239 0 obj +(\376\377\000C\000r\000e\000a\000t\000i\000n\000g\000\040\000a\000\040\000L\000i\000b\000r\000a\000r\000y) +endobj +240 0 obj +<< /S /GoTo /D (subsection.8.5) >> +endobj +243 0 obj +(\376\377\000U\000s\000i\000n\000g\000\040\000a\000\040\000L\000i\000b\000r\000a\000r\000y) +endobj +244 0 obj +<< /S /GoTo /D (section.9) >> +endobj +247 0 obj +(\376\377\000B\000e\000n\000c\000h\000m\000a\000r\000k\000s) +endobj +248 0 obj +<< /S /GoTo /D (subsection.9.1) >> +endobj +251 0 obj +(\376\377\000A\000\040\000f\000e\000w\000\040\000o\000f\000\040\000l\000i\000b\000c\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000s\000.) +endobj +252 0 obj +<< /S /GoTo /D (subsection.9.2) >> +endobj +255 0 obj +(\376\377\000M\000a\000t\000h\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000s\000.) +endobj +256 0 obj +<< /S /GoTo /D (section.10) >> +endobj +259 0 obj +(\376\377\000P\000o\000r\000t\000i\000n\000g\000\040\000F\000r\000o\000m\000\040\000I\000A\000R\000\040\000t\000o\000\040\000A\000V\000R\000\040\000G\000C\000C) +endobj +260 0 obj +<< /S /GoTo /D (subsection.10.1) >> +endobj +263 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n) +endobj +264 0 obj +<< /S /GoTo /D (subsection.10.2) >> +endobj +267 0 obj +(\376\377\000R\000e\000g\000i\000s\000t\000e\000r\000s) +endobj +268 0 obj +<< /S /GoTo /D (subsection.10.3) >> +endobj +271 0 obj +(\376\377\000I\000n\000t\000e\000r\000r\000u\000p\000t\000\040\000S\000e\000r\000v\000i\000c\000e\000\040\000R\000o\000u\000t\000i\000n\000e\000s\000\040\000\050\000I\000S\000R\000s\000\051) +endobj +272 0 obj +<< /S /GoTo /D (subsection.10.4) >> +endobj +275 0 obj +(\376\377\000I\000n\000t\000r\000i\000n\000s\000i\000c\000\040\000R\000o\000u\000t\000i\000n\000e\000s) +endobj +276 0 obj +<< /S /GoTo /D (subsection.10.5) >> +endobj +279 0 obj +(\376\377\000F\000l\000a\000s\000h\000\040\000V\000a\000r\000i\000a\000b\000l\000e\000s) +endobj +280 0 obj +<< /S /GoTo /D (subsection.10.6) >> +endobj +283 0 obj +(\376\377\000N\000o\000n\000-\000R\000e\000t\000u\000r\000n\000i\000n\000g\000\040\000m\000a\000i\000n\000\050\000\051) +endobj +284 0 obj +<< /S /GoTo /D (subsection.10.7) >> +endobj +287 0 obj +(\376\377\000L\000o\000c\000k\000i\000n\000g\000\040\000R\000e\000g\000i\000s\000t\000e\000r\000s) +endobj +288 0 obj +<< /S /GoTo /D (section.11) >> +endobj +291 0 obj +(\376\377\000F\000r\000e\000q\000u\000e\000n\000t\000l\000y\000\040\000A\000s\000k\000e\000d\000\040\000Q\000u\000e\000s\000t\000i\000o\000n\000s) +endobj +292 0 obj +<< /S /GoTo /D (subsection.11.1) >> +endobj +295 0 obj +(\376\377\000F\000A\000Q\000\040\000I\000n\000d\000e\000x) +endobj +296 0 obj +<< /S /GoTo /D (subsection.11.2) >> +endobj +299 0 obj +(\376\377\000M\000y\000\040\000p\000r\000o\000g\000r\000a\000m\000\040\000d\000o\000e\000s\000n\000'\000t\000\040\000r\000e\000c\000o\000g\000n\000i\000z\000e\000\040\000a\000\040\000v\000a\000r\000i\000a\000b\000l\000e\000\040\000u\000p\000d\000a\000t\000e\000d\000\040\000w\000i\000t\000h\000i\000n\000\040\000a\000n\000\040\000i\000n\000t\000e\000r\000r\000u\000p\000t\000\040\000r\000o\000u\000t\000i\000n\000e) +endobj +300 0 obj +<< /S /GoTo /D (subsection.11.3) >> +endobj +303 0 obj +(\376\377\000I\000\040\000g\000e\000t\000\040\000`\000\250\000u\000n\000d\000e\000f\000i\000n\000e\000d\000\040\000r\000e\000f\000e\000r\000e\000n\000c\000e\000\040\000t\000o\000.\000.\000.\000`\000\250\000\040\000f\000o\000r\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000s\000\040\000l\000i\000k\000e\000\040\000`\000\250\000s\000i\000n\000\050\000\051\000`\000\250) +endobj +304 0 obj +<< /S /GoTo /D (subsection.11.4) >> +endobj +307 0 obj +(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000p\000e\000r\000m\000a\000n\000e\000n\000t\000l\000y\000\040\000b\000i\000n\000d\000\040\000a\000\040\000v\000a\000r\000i\000a\000b\000l\000e\000\040\000t\000o\000\040\000a\000\040\000r\000e\000g\000i\000s\000t\000e\000r\000?) +endobj +308 0 obj +<< /S /GoTo /D (subsection.11.5) >> +endobj +311 0 obj +(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000m\000o\000d\000i\000f\000y\000\040\000M\000C\000U\000C\000R\000\040\000o\000r\000\040\000W\000D\000T\000C\000R\000\040\000e\000a\000r\000l\000y\000?) +endobj +312 0 obj +<< /S /GoTo /D (subsection.11.6) >> +endobj +315 0 obj +(\376\377\000W\000h\000a\000t\000\040\000i\000s\000\040\000a\000l\000l\000\040\000t\000h\000i\000s\000\040\000\137\000B\000V\000\050\000\051\000\040\000s\000t\000u\000f\000f\000\040\000a\000b\000o\000u\000t\000?) +endobj +316 0 obj +<< /S /GoTo /D (subsection.11.7) >> +endobj +319 0 obj +(\376\377\000C\000a\000n\000\040\000I\000\040\000u\000s\000e\000\040\000C\000+\000+\000\040\000o\000n\000\040\000t\000h\000e\000\040\000A\000V\000R\000?) +endobj +320 0 obj +<< /S /GoTo /D (subsection.11.8) >> +endobj +323 0 obj +(\376\377\000S\000h\000o\000u\000l\000d\000n\000'\000t\000\040\000I\000\040\000i\000n\000i\000t\000i\000a\000l\000i\000z\000e\000\040\000a\000l\000l\000\040\000m\000y\000\040\000v\000a\000r\000i\000a\000b\000l\000e\000s\000?) +endobj +324 0 obj +<< /S /GoTo /D (subsection.11.9) >> +endobj +327 0 obj +(\376\377\000W\000h\000y\000\040\000d\000o\000\040\000s\000o\000m\000e\000\040\0001\0006\000-\000b\000i\000t\000\040\000t\000i\000m\000e\000r\000\040\000r\000e\000g\000i\000s\000t\000e\000r\000s\000\040\000s\000o\000m\000e\000t\000i\000m\000e\000s\000\040\000g\000e\000t\000\040\000t\000r\000a\000s\000h\000e\000d\000?) +endobj +328 0 obj +<< /S /GoTo /D (subsection.11.10) >> +endobj +331 0 obj +(\376\377\000H\000o\000w\000\040\000d\000o\000\040\000I\000\040\000u\000s\000e\000\040\000a\000\040\000\043\000d\000e\000f\000i\000n\000e\000'\000d\000\040\000c\000o\000n\000s\000t\000a\000n\000t\000\040\000i\000n\000\040\000a\000n\000\040\000a\000s\000m\000\040\000s\000t\000a\000t\000e\000m\000e\000n\000t\000?) +endobj +332 0 obj +<< /S /GoTo /D (subsection.11.11) >> +endobj +335 0 obj +(\376\377\000W\000h\000y\000\040\000d\000o\000e\000s\000\040\000t\000h\000e\000\040\000P\000C\000\040\000r\000a\000n\000d\000o\000m\000l\000y\000\040\000j\000u\000m\000p\000\040\000a\000r\000o\000u\000n\000d\000\040\000w\000h\000e\000n\000\040\000s\000i\000n\000g\000l\000e\000-\000s\000t\000e\000p\000p\000i\000n\000g\000\040\000t\000h\000r\000o\000u\000g\000h\000\040\000m\000y\000\040\000p\000r\000o\000g\000r\000a\000m\000\040\000i\000n\000\040\000a\000v\000r\000-\000g\000d\000b\000?) +endobj +336 0 obj +<< /S /GoTo /D (subsection.11.12) >> +endobj +339 0 obj +(\376\377\000H\000o\000w\000\040\000d\000o\000\040\000I\000\040\000t\000r\000a\000c\000e\000\040\000a\000n\000\040\000a\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000f\000i\000l\000e\000\040\000i\000n\000\040\000a\000v\000r\000-\000g\000d\000b\000?) +endobj +340 0 obj +<< /S /GoTo /D (subsection.11.13) >> +endobj +343 0 obj +(\376\377\000H\000o\000w\000\040\000d\000o\000\040\000I\000\040\000p\000a\000s\000s\000\040\000a\000n\000\040\000I\000O\000\040\000p\000o\000r\000t\000\040\000a\000s\000\040\000a\000\040\000p\000a\000r\000a\000m\000e\000t\000e\000r\000\040\000t\000o\000\040\000a\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000?) +endobj +344 0 obj +<< /S /GoTo /D (subsection.11.14) >> +endobj +347 0 obj +(\376\377\000W\000h\000a\000t\000\040\000r\000e\000g\000i\000s\000t\000e\000r\000s\000\040\000a\000r\000e\000\040\000u\000s\000e\000d\000\040\000b\000y\000\040\000t\000h\000e\000\040\000C\000\040\000c\000o\000m\000p\000i\000l\000e\000r\000?) +endobj +348 0 obj +<< /S /GoTo /D (subsection.11.15) >> +endobj +351 0 obj +(\376\377\000H\000o\000w\000\040\000d\000o\000\040\000I\000\040\000p\000u\000t\000\040\000a\000n\000\040\000a\000r\000r\000a\000y\000\040\000o\000f\000\040\000s\000t\000r\000i\000n\000g\000s\000\040\000c\000o\000m\000p\000l\000e\000t\000e\000l\000y\000\040\000i\000n\000\040\000R\000O\000M\000?) +endobj +352 0 obj +<< /S /GoTo /D (subsection.11.16) >> +endobj +355 0 obj +(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000u\000s\000e\000\040\000e\000x\000t\000e\000r\000n\000a\000l\000\040\000R\000A\000M\000?) +endobj +356 0 obj +<< /S /GoTo /D (subsection.11.17) >> +endobj +359 0 obj +(\376\377\000W\000h\000i\000c\000h\000\040\000-\000O\000\040\000f\000l\000a\000g\000\040\000t\000o\000\040\000u\000s\000e\000?) +endobj +360 0 obj +<< /S /GoTo /D (subsection.11.18) >> +endobj +363 0 obj +(\376\377\000H\000o\000w\000\040\000d\000o\000\040\000I\000\040\000r\000e\000l\000o\000c\000a\000t\000e\000\040\000c\000o\000d\000e\000\040\000t\000o\000\040\000a\000\040\000f\000i\000x\000e\000d\000\040\000a\000d\000d\000r\000e\000s\000s\000?) +endobj +364 0 obj +<< /S /GoTo /D (subsection.11.19) >> +endobj +367 0 obj +(\376\377\000M\000y\000\040\000U\000A\000R\000T\000\040\000i\000s\000\040\000g\000e\000n\000e\000r\000a\000t\000i\000n\000g\000\040\000n\000o\000n\000s\000e\000n\000s\000e\000!\000\040\000M\000y\000\040\000A\000T\000m\000e\000g\000a\0001\0002\0008\000\040\000k\000e\000e\000p\000s\000\040\000c\000r\000a\000s\000h\000i\000n\000g\000!\000\040\000P\000o\000r\000t\000\040\000F\000\040\000i\000s\000\040\000c\000o\000m\000p\000l\000e\000t\000e\000l\000y\000\040\000b\000r\000o\000k\000e\000n\000!) +endobj +368 0 obj +<< /S /GoTo /D (subsection.11.20) >> +endobj +371 0 obj +(\376\377\000W\000h\000y\000\040\000d\000o\000\040\000a\000l\000l\000\040\000m\000y\000\040\000`\000\250\000f\000o\000o\000.\000.\000.\000b\000a\000r\000`\000\250\000\040\000s\000t\000r\000i\000n\000g\000s\000\040\000e\000a\000t\000\040\000u\000p\000\040\000t\000h\000e\000\040\000S\000R\000A\000M\000?) +endobj +372 0 obj +<< /S /GoTo /D (subsection.11.21) >> +endobj +375 0 obj +(\376\377\000W\000h\000y\000\040\000d\000o\000e\000s\000\040\000t\000h\000e\000\040\000c\000o\000m\000p\000i\000l\000e\000r\000\040\000c\000o\000m\000p\000i\000l\000e\000\040\000a\000n\000\040\0008\000-\000b\000i\000t\000\040\000o\000p\000e\000r\000a\000t\000i\000o\000n\000\040\000t\000h\000a\000t\000\040\000u\000s\000e\000s\000\040\000b\000i\000t\000w\000i\000s\000e\000\040\000o\000p\000e\000r\000a\000t\000o\000r\000s\000\040\000i\000n\000t\000o\000\040\000a\000\040\0001\0006\000-\000b\000i\000t\000\040\000o\000p\000e\000r\000a\000t\000i\000o\000n\000\040\000i\000n\000\040\000a\000s\000s\000e\000m\000b\000l\000y\000?) +endobj +376 0 obj +<< /S /GoTo /D (subsection.11.22) >> +endobj +379 0 obj +(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000d\000e\000t\000e\000c\000t\000\040\000R\000A\000M\000\040\000m\000e\000m\000o\000r\000y\000\040\000a\000n\000d\000\040\000v\000a\000r\000i\000a\000b\000l\000e\000\040\000o\000v\000e\000r\000l\000a\000p\000\040\000p\000r\000o\000b\000l\000e\000m\000s\000?) +endobj +380 0 obj +<< /S /GoTo /D (subsection.11.23) >> +endobj +383 0 obj +(\376\377\000I\000s\000\040\000i\000t\000\040\000r\000e\000a\000l\000l\000y\000\040\000i\000m\000p\000o\000s\000s\000i\000b\000l\000e\000\040\000t\000o\000\040\000p\000r\000o\000g\000r\000a\000m\000\040\000t\000h\000e\000\040\000A\000T\000t\000i\000n\000y\000X\000X\000\040\000i\000n\000\040\000C\000?) +endobj +384 0 obj +<< /S /GoTo /D (subsection.11.24) >> +endobj +387 0 obj +(\376\377\000W\000h\000a\000t\000\040\000i\000s\000\040\000t\000h\000i\000s\000\040\000`\000\250\000c\000l\000o\000c\000k\000\040\000s\000k\000e\000w\000\040\000d\000e\000t\000e\000c\000t\000e\000d\000`\000\250\000\040\000m\000e\000s\000s\000s\000a\000g\000e\000?) +endobj +388 0 obj +<< /S /GoTo /D (subsection.11.25) >> +endobj +391 0 obj +(\376\377\000W\000h\000y\000\040\000a\000r\000e\000\040\000\050\000m\000a\000n\000y\000\051\000\040\000i\000n\000t\000e\000r\000r\000u\000p\000t\000\040\000f\000l\000a\000g\000s\000\040\000c\000l\000e\000a\000r\000e\000d\000\040\000b\000y\000\040\000w\000r\000i\000t\000i\000n\000g\000\040\000a\000\040\000l\000o\000g\000i\000c\000a\000l\000\040\0001\000?) +endobj +392 0 obj +<< /S /GoTo /D (subsection.11.26) >> +endobj +395 0 obj +(\376\377\000W\000h\000y\000\040\000h\000a\000v\000e\000\040\000`\000\250\000p\000r\000o\000g\000r\000a\000m\000m\000e\000d\000`\000\250\000\040\000f\000u\000s\000e\000s\000\040\000t\000h\000e\000\040\000b\000i\000t\000\040\000v\000a\000l\000u\000e\000\040\0000\000?) +endobj +396 0 obj +<< /S /GoTo /D (subsection.11.27) >> +endobj +399 0 obj +(\376\377\000W\000h\000i\000c\000h\000\040\000A\000V\000R\000-\000s\000p\000e\000c\000i\000f\000i\000c\000\040\000a\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000o\000p\000e\000r\000a\000t\000o\000r\000s\000\040\000a\000r\000e\000\040\000a\000v\000a\000i\000l\000a\000b\000l\000e\000?) +endobj +400 0 obj +<< /S /GoTo /D (subsection.11.28) >> +endobj +403 0 obj +(\376\377\000W\000h\000y\000\040\000a\000r\000e\000\040\000i\000n\000t\000e\000r\000r\000u\000p\000t\000s\000\040\000r\000e\000-\000e\000n\000a\000b\000l\000e\000d\000\040\000i\000n\000\040\000t\000h\000e\000\040\000m\000i\000d\000d\000l\000e\000\040\000o\000f\000\040\000w\000r\000i\000t\000i\000n\000g\000\040\000t\000h\000e\000\040\000s\000t\000a\000c\000k\000\040\000p\000o\000i\000n\000t\000e\000r\000?) +endobj +404 0 obj +<< /S /GoTo /D (subsection.11.29) >> +endobj +407 0 obj +(\376\377\000W\000h\000y\000\040\000a\000r\000e\000\040\000t\000h\000e\000r\000e\000\040\000f\000i\000v\000e\000\040\000d\000i\000f\000f\000e\000r\000e\000n\000t\000\040\000l\000i\000n\000k\000e\000r\000\040\000s\000c\000r\000i\000p\000t\000s\000?) +endobj +408 0 obj +<< /S /GoTo /D (subsection.11.30) >> +endobj +411 0 obj +(\376\377\000H\000o\000w\000\040\000t\000o\000\040\000a\000d\000d\000\040\000a\000\040\000r\000a\000w\000\040\000b\000i\000n\000a\000r\000y\000\040\000i\000m\000a\000g\000e\000\040\000t\000o\000\040\000l\000i\000n\000k\000e\000r\000\040\000o\000u\000t\000p\000u\000t\000?) +endobj +412 0 obj +<< /S /GoTo /D (subsection.11.31) >> +endobj +415 0 obj +(\376\377\000H\000o\000w\000\040\000d\000o\000\040\000I\000\040\000p\000e\000r\000f\000o\000r\000m\000\040\000a\000\040\000s\000o\000f\000t\000w\000a\000r\000e\000\040\000r\000e\000s\000e\000t\000\040\000o\000f\000\040\000t\000h\000e\000\040\000A\000V\000R\000?) +endobj +416 0 obj +<< /S /GoTo /D (subsection.11.32) >> +endobj +419 0 obj +(\376\377\000I\000\040\000a\000m\000\040\000u\000s\000i\000n\000g\000\040\000f\000l\000o\000a\000t\000i\000n\000g\000\040\000p\000o\000i\000n\000t\000\040\000m\000a\000t\000h\000.\000\040\000W\000h\000y\000\040\000i\000s\000\040\000t\000h\000e\000\040\000c\000o\000m\000p\000i\000l\000e\000d\000\040\000c\000o\000d\000e\000\040\000s\000o\000\040\000b\000i\000g\000?\000\040\000W\000h\000y\000\040\000d\000o\000e\000s\000\040\000m\000y\000\040\000c\000o\000d\000e\000\040\000n\000o\000t\000\040\000w\000o\000r\000k\000?) +endobj +420 0 obj +<< /S /GoTo /D (subsection.11.33) >> +endobj +423 0 obj +(\376\377\000W\000h\000a\000t\000\040\000p\000i\000t\000f\000a\000l\000l\000s\000\040\000e\000x\000i\000s\000t\000\040\000w\000h\000e\000n\000\040\000w\000r\000i\000t\000i\000n\000g\000\040\000r\000e\000e\000n\000t\000r\000a\000n\000t\000\040\000c\000o\000d\000e\000?) +endobj +424 0 obj +<< /S /GoTo /D (section.12) >> +endobj +427 0 obj +(\376\377\000B\000u\000i\000l\000d\000i\000n\000g\000\040\000a\000n\000d\000\040\000I\000n\000s\000t\000a\000l\000l\000i\000n\000g\000\040\000t\000h\000e\000\040\000G\000N\000U\000\040\000T\000o\000o\000l\000\040\000C\000h\000a\000i\000n) +endobj +428 0 obj +<< /S /GoTo /D (subsection.12.1) >> +endobj +431 0 obj +(\376\377\000B\000u\000i\000l\000d\000i\000n\000g\000\040\000a\000n\000d\000\040\000I\000n\000s\000t\000a\000l\000l\000i\000n\000g\000\040\000u\000n\000d\000e\000r\000\040\000L\000i\000n\000u\000x\000,\000\040\000F\000r\000e\000e\000B\000S\000D\000,\000\040\000a\000n\000d\000\040\000O\000t\000h\000e\000r\000s) +endobj +432 0 obj +<< /S /GoTo /D (subsection.12.2) >> +endobj +435 0 obj +(\376\377\000R\000e\000q\000u\000i\000r\000e\000d\000\040\000T\000o\000o\000l\000s) +endobj +436 0 obj +<< /S /GoTo /D (subsection.12.3) >> +endobj +439 0 obj +(\376\377\000O\000p\000t\000i\000o\000n\000a\000l\000\040\000T\000o\000o\000l\000s) +endobj +440 0 obj +<< /S /GoTo /D (subsection.12.4) >> +endobj +443 0 obj +(\376\377\000G\000N\000U\000\040\000B\000i\000n\000u\000t\000i\000l\000s\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000A\000V\000R\000\040\000t\000a\000r\000g\000e\000t) +endobj +444 0 obj +<< /S /GoTo /D (subsection.12.5) >> +endobj +447 0 obj +(\376\377\000G\000C\000C\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000A\000V\000R\000\040\000t\000a\000r\000g\000e\000t) +endobj +448 0 obj +<< /S /GoTo /D (subsection.12.6) >> +endobj +451 0 obj +(\376\377\000A\000V\000R\000\040\000L\000i\000b\000c) +endobj +452 0 obj +<< /S /GoTo /D (subsection.12.7) >> +endobj +455 0 obj +(\376\377\000A\000V\000R\000D\000U\000D\000E) +endobj +456 0 obj +<< /S /GoTo /D (subsection.12.8) >> +endobj +459 0 obj +(\376\377\000G\000D\000B\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000A\000V\000R\000\040\000t\000a\000r\000g\000e\000t) +endobj +460 0 obj +<< /S /GoTo /D (subsection.12.9) >> +endobj +463 0 obj +(\376\377\000S\000i\000m\000u\000l\000A\000V\000R) +endobj +464 0 obj +<< /S /GoTo /D (subsection.12.10) >> +endobj +467 0 obj +(\376\377\000A\000V\000a\000R\000I\000C\000E) +endobj +468 0 obj +<< /S /GoTo /D (subsection.12.11) >> +endobj +471 0 obj +(\376\377\000B\000u\000i\000l\000d\000i\000n\000g\000\040\000a\000n\000d\000\040\000I\000n\000s\000t\000a\000l\000l\000i\000n\000g\000\040\000u\000n\000d\000e\000r\000\040\000W\000i\000n\000d\000o\000w\000s) +endobj +472 0 obj +<< /S /GoTo /D (subsection.12.12) >> +endobj +475 0 obj +(\376\377\000T\000o\000o\000l\000s\000\040\000R\000e\000q\000u\000i\000r\000e\000d\000\040\000f\000o\000r\000\040\000B\000u\000i\000l\000d\000i\000n\000g\000\040\000t\000h\000e\000\040\000T\000o\000o\000l\000c\000h\000a\000i\000n\000\040\000f\000o\000r\000\040\000W\000i\000n\000d\000o\000w\000s) +endobj +476 0 obj +<< /S /GoTo /D (subsection.12.13) >> +endobj +479 0 obj +(\376\377\000B\000u\000i\000l\000d\000i\000n\000g\000\040\000t\000h\000e\000\040\000T\000o\000o\000l\000c\000h\000a\000i\000n\000\040\000f\000o\000r\000\040\000W\000i\000n\000d\000o\000w\000s) +endobj +480 0 obj +<< /S /GoTo /D (section.13) >> +endobj +483 0 obj +(\376\377\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000G\000N\000U\000\040\000t\000o\000o\000l\000s) +endobj +484 0 obj +<< /S /GoTo /D (subsection.13.1) >> +endobj +487 0 obj +(\376\377\000O\000p\000t\000i\000o\000n\000s\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000C\000\040\000c\000o\000m\000p\000i\000l\000e\000r\000\040\000a\000v\000r\000-\000g\000c\000c) +endobj +488 0 obj +<< /S /GoTo /D (subsubsection.13.1.1) >> +endobj +491 0 obj +(\376\377\000M\000a\000c\000h\000i\000n\000e\000-\000s\000p\000e\000c\000i\000f\000i\000c\000\040\000o\000p\000t\000i\000o\000n\000s\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000A\000V\000R) +endobj +492 0 obj +<< /S /GoTo /D (subsubsection.13.1.2) >> +endobj +495 0 obj +(\376\377\000S\000e\000l\000e\000c\000t\000e\000d\000\040\000g\000e\000n\000e\000r\000a\000l\000\040\000c\000o\000m\000p\000i\000l\000e\000r\000\040\000o\000p\000t\000i\000o\000n\000s) +endobj +496 0 obj +<< /S /GoTo /D (subsection.13.2) >> +endobj +499 0 obj +(\376\377\000O\000p\000t\000i\000o\000n\000s\000\040\000f\000o\000r\000\040\000t\000h\000e\000\040\000a\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000a\000v\000r\000-\000a\000s) +endobj +500 0 obj +<< /S /GoTo /D (subsubsection.13.2.1) >> +endobj +503 0 obj +(\376\377\000M\000a\000c\000h\000i\000n\000e\000-\000s\000p\000e\000c\000i\000f\000i\000c\000\040\000a\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000o\000p\000t\000i\000o\000n\000s) +endobj +504 0 obj +<< /S /GoTo /D (subsubsection.13.2.2) >> +endobj +507 0 obj +(\376\377\000E\000x\000a\000m\000p\000l\000e\000s\000\040\000f\000o\000r\000\040\000a\000s\000s\000e\000m\000b\000l\000e\000r\000\040\000o\000p\000t\000i\000o\000n\000s\000\040\000p\000a\000s\000s\000e\000d\000\040\000t\000h\000r\000o\000u\000g\000h\000\040\000t\000h\000e\000\040\000C\000\040\000c\000o\000m\000p\000i\000l\000e\000r) +endobj +508 0 obj +<< /S /GoTo /D (subsection.13.3) >> +endobj +511 0 obj +(\376\377\000C\000o\000n\000t\000r\000o\000l\000l\000i\000n\000g\000\040\000t\000h\000e\000\040\000l\000i\000n\000k\000e\000r\000\040\000a\000v\000r\000-\000l\000d) +endobj +512 0 obj +<< /S /GoTo /D (subsubsection.13.3.1) >> +endobj +515 0 obj +(\376\377\000S\000e\000l\000e\000c\000t\000e\000d\000\040\000l\000i\000n\000k\000e\000r\000\040\000o\000p\000t\000i\000o\000n\000s) +endobj +516 0 obj +<< /S /GoTo /D (subsubsection.13.3.2) >> +endobj +519 0 obj +(\376\377\000P\000a\000s\000s\000i\000n\000g\000\040\000l\000i\000n\000k\000e\000r\000\040\000o\000p\000t\000i\000o\000n\000s\000\040\000f\000r\000o\000m\000\040\000t\000h\000e\000\040\000C\000\040\000c\000o\000m\000p\000i\000l\000e\000r) +endobj +520 0 obj +<< /S /GoTo /D (section.14) >> +endobj +523 0 obj +(\376\377\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000a\000v\000r\000d\000u\000d\000e\000\040\000p\000r\000o\000g\000r\000a\000m) +endobj +524 0 obj +<< /S /GoTo /D (section.15) >> +endobj +527 0 obj +(\376\377\000R\000e\000l\000e\000a\000s\000e\000\040\000N\000u\000m\000b\000e\000r\000i\000n\000g\000\040\000a\000n\000d\000\040\000M\000e\000t\000h\000o\000d\000o\000l\000o\000g\000y) +endobj +528 0 obj +<< /S /GoTo /D (subsection.15.1) >> +endobj +531 0 obj +(\376\377\000R\000e\000l\000e\000a\000s\000e\000\040\000V\000e\000r\000s\000i\000o\000n\000\040\000N\000u\000m\000b\000e\000r\000i\000n\000g\000\040\000S\000c\000h\000e\000m\000e) +endobj +532 0 obj +<< /S /GoTo /D (subsubsection.15.1.1) >> +endobj +535 0 obj +(\376\377\000S\000t\000a\000b\000l\000e\000\040\000V\000e\000r\000s\000i\000o\000n\000s) +endobj +536 0 obj +<< /S /GoTo /D (subsubsection.15.1.2) >> +endobj +539 0 obj +(\376\377\000D\000e\000v\000e\000l\000o\000p\000m\000e\000n\000t\000\040\000V\000e\000r\000s\000i\000o\000n\000s) +endobj +540 0 obj +<< /S /GoTo /D (subsection.15.2) >> +endobj +543 0 obj +(\376\377\000R\000e\000l\000e\000a\000s\000i\000n\000g\000\040\000A\000V\000R\000\040\000L\000i\000b\000c) +endobj +544 0 obj +<< /S /GoTo /D (subsubsection.15.2.1) >> +endobj +547 0 obj +(\376\377\000C\000r\000e\000a\000t\000i\000n\000g\000\040\000a\000\040\000c\000v\000s\000\040\000b\000r\000a\000n\000c\000h) +endobj +548 0 obj +<< /S /GoTo /D (subsubsection.15.2.2) >> +endobj +551 0 obj +(\376\377\000M\000a\000k\000i\000n\000g\000\040\000a\000\040\000r\000e\000l\000e\000a\000s\000e) +endobj +552 0 obj +<< /S /GoTo /D (section.16) >> +endobj +555 0 obj +(\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000m\000e\000n\000t\000s) +endobj +556 0 obj +<< /S /GoTo /D (section.17) >> +endobj +559 0 obj +(\376\377\000T\000o\000d\000o\000\040\000L\000i\000s\000t) +endobj +560 0 obj +<< /S /GoTo /D (section.18) >> +endobj +563 0 obj +(\376\377\000D\000e\000p\000r\000e\000c\000a\000t\000e\000d\000\040\000L\000i\000s\000t) +endobj +564 0 obj +<< /S /GoTo /D (section.19) >> +endobj +567 0 obj +(\376\377\000M\000o\000d\000u\000l\000e\000\040\000I\000n\000d\000e\000x) +endobj +568 0 obj +<< /S /GoTo /D (subsection.19.1) >> +endobj +571 0 obj +(\376\377\000M\000o\000d\000u\000l\000e\000s) +endobj +572 0 obj +<< /S /GoTo /D (section.20) >> +endobj +575 0 obj +(\376\377\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000\040\000I\000n\000d\000e\000x) +endobj +576 0 obj +<< /S /GoTo /D (subsection.20.1) >> +endobj +579 0 obj +(\376\377\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000s) +endobj +580 0 obj +<< /S /GoTo /D (section.21) >> +endobj +583 0 obj +(\376\377\000F\000i\000l\000e\000\040\000I\000n\000d\000e\000x) +endobj +584 0 obj +<< /S /GoTo /D (subsection.21.1) >> +endobj +587 0 obj +(\376\377\000F\000i\000l\000e\000\040\000L\000i\000s\000t) +endobj +588 0 obj +<< /S /GoTo /D (section.22) >> +endobj +591 0 obj +(\376\377\000M\000o\000d\000u\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +592 0 obj +<< /S /GoTo /D (subsection.22.1) >> +endobj +595 0 obj +(\376\377\000<\000a\000l\000l\000o\000c\000a\000.\000h\000>\000:\000\040\000A\000l\000l\000o\000c\000a\000t\000e\000\040\000s\000p\000a\000c\000e\000\040\000i\000n\000\040\000t\000h\000e\000\040\000s\000t\000a\000c\000k) +endobj +596 0 obj +<< /S /GoTo /D (subsubsection.22.1.1) >> +endobj +599 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +600 0 obj +<< /S /GoTo /D (subsubsection.22.1.2) >> +endobj +603 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +604 0 obj +<< /S /GoTo /D (subsection.22.2) >> +endobj +607 0 obj +(\376\377\000<\000a\000s\000s\000e\000r\000t\000.\000h\000>\000:\000\040\000D\000i\000a\000g\000n\000o\000s\000t\000i\000c\000s) +endobj +608 0 obj +<< /S /GoTo /D (subsubsection.22.2.1) >> +endobj +611 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +612 0 obj +<< /S /GoTo /D (subsubsection.22.2.2) >> +endobj +615 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +616 0 obj +<< /S /GoTo /D (subsection.22.3) >> +endobj +619 0 obj +(\376\377\000<\000c\000t\000y\000p\000e\000.\000h\000>\000:\000\040\000C\000h\000a\000r\000a\000c\000t\000e\000r\000\040\000O\000p\000e\000r\000a\000t\000i\000o\000n\000s) +endobj +620 0 obj +<< /S /GoTo /D (subsubsection.22.3.1) >> +endobj +623 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +624 0 obj +<< /S /GoTo /D (subsubsection.22.3.2) >> +endobj +627 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +628 0 obj +<< /S /GoTo /D (subsection.22.4) >> +endobj +631 0 obj +(\376\377\000<\000e\000r\000r\000n\000o\000.\000h\000>\000:\000\040\000S\000y\000s\000t\000e\000m\000\040\000E\000r\000r\000o\000r\000s) +endobj +632 0 obj +<< /S /GoTo /D (subsubsection.22.4.1) >> +endobj +635 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +636 0 obj +<< /S /GoTo /D (subsubsection.22.4.2) >> +endobj +639 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +640 0 obj +<< /S /GoTo /D (subsection.22.5) >> +endobj +643 0 obj +(\376\377\000<\000i\000n\000t\000t\000y\000p\000e\000s\000.\000h\000>\000:\000\040\000I\000n\000t\000e\000g\000e\000r\000\040\000T\000y\000p\000e\000\040\000c\000o\000n\000v\000e\000r\000s\000i\000o\000n\000s) +endobj +644 0 obj +<< /S /GoTo /D (subsubsection.22.5.1) >> +endobj +647 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +648 0 obj +<< /S /GoTo /D (subsubsection.22.5.2) >> +endobj +651 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +652 0 obj +<< /S /GoTo /D (subsubsection.22.5.3) >> +endobj +655 0 obj +(\376\377\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +656 0 obj +<< /S /GoTo /D (subsection.22.6) >> +endobj +659 0 obj +(\376\377\000<\000m\000a\000t\000h\000.\000h\000>\000:\000\040\000M\000a\000t\000h\000e\000m\000a\000t\000i\000c\000s) +endobj +660 0 obj +<< /S /GoTo /D (subsubsection.22.6.1) >> +endobj +663 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +664 0 obj +<< /S /GoTo /D (subsubsection.22.6.2) >> +endobj +667 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +668 0 obj +<< /S /GoTo /D (subsubsection.22.6.3) >> +endobj +671 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +672 0 obj +<< /S /GoTo /D (subsection.22.7) >> +endobj +675 0 obj +(\376\377\000<\000s\000e\000t\000j\000m\000p\000.\000h\000>\000:\000\040\000N\000o\000n\000-\000l\000o\000c\000a\000l\000\040\000g\000o\000t\000o) +endobj +676 0 obj +<< /S /GoTo /D (subsubsection.22.7.1) >> +endobj +679 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +680 0 obj +<< /S /GoTo /D (subsubsection.22.7.2) >> +endobj +683 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +684 0 obj +<< /S /GoTo /D (subsection.22.8) >> +endobj +687 0 obj +(\376\377\000<\000s\000t\000d\000i\000n\000t\000.\000h\000>\000:\000\040\000S\000t\000a\000n\000d\000a\000r\000d\000\040\000I\000n\000t\000e\000g\000e\000r\000\040\000T\000y\000p\000e\000s) +endobj +688 0 obj +<< /S /GoTo /D (subsubsection.22.8.1) >> +endobj +691 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +692 0 obj +<< /S /GoTo /D (subsubsection.22.8.2) >> +endobj +695 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +696 0 obj +<< /S /GoTo /D (subsubsection.22.8.3) >> +endobj +699 0 obj +(\376\377\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +700 0 obj +<< /S /GoTo /D (subsection.22.9) >> +endobj +703 0 obj +(\376\377\000<\000s\000t\000d\000i\000o\000.\000h\000>\000:\000\040\000S\000t\000a\000n\000d\000a\000r\000d\000\040\000I\000O\000\040\000f\000a\000c\000i\000l\000i\000t\000i\000e\000s) +endobj +704 0 obj +<< /S /GoTo /D (subsubsection.22.9.1) >> +endobj +707 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +708 0 obj +<< /S /GoTo /D (subsubsection.22.9.2) >> +endobj +711 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +712 0 obj +<< /S /GoTo /D (subsubsection.22.9.3) >> +endobj +715 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +716 0 obj +<< /S /GoTo /D (subsection.22.10) >> +endobj +719 0 obj +(\376\377\000<\000s\000t\000d\000l\000i\000b\000.\000h\000>\000:\000\040\000G\000e\000n\000e\000r\000a\000l\000\040\000u\000t\000i\000l\000i\000t\000i\000e\000s) +endobj +720 0 obj +<< /S /GoTo /D (subsubsection.22.10.1) >> +endobj +723 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +724 0 obj +<< /S /GoTo /D (subsubsection.22.10.2) >> +endobj +727 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +728 0 obj +<< /S /GoTo /D (subsubsection.22.10.3) >> +endobj +731 0 obj +(\376\377\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +732 0 obj +<< /S /GoTo /D (subsubsection.22.10.4) >> +endobj +735 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +736 0 obj +<< /S /GoTo /D (subsubsection.22.10.5) >> +endobj +739 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +740 0 obj +<< /S /GoTo /D (subsection.22.11) >> +endobj +743 0 obj +(\376\377\000<\000s\000t\000r\000i\000n\000g\000.\000h\000>\000:\000\040\000S\000t\000r\000i\000n\000g\000s) +endobj +744 0 obj +<< /S /GoTo /D (subsubsection.22.11.1) >> +endobj +747 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +748 0 obj +<< /S /GoTo /D (subsubsection.22.11.2) >> +endobj +751 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +752 0 obj +<< /S /GoTo /D (subsubsection.22.11.3) >> +endobj +755 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +756 0 obj +<< /S /GoTo /D (subsection.22.12) >> +endobj +759 0 obj +(\376\377\000<\000a\000v\000r\000/\000b\000o\000o\000t\000.\000h\000>\000:\000\040\000B\000o\000o\000t\000l\000o\000a\000d\000e\000r\000\040\000S\000u\000p\000p\000o\000r\000t\000\040\000U\000t\000i\000l\000i\000t\000i\000e\000s) +endobj +760 0 obj +<< /S /GoTo /D (subsubsection.22.12.1) >> +endobj +763 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +764 0 obj +<< /S /GoTo /D (subsubsection.22.12.2) >> +endobj +767 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +768 0 obj +<< /S /GoTo /D (subsection.22.13) >> +endobj +771 0 obj +(\376\377\000<\000a\000v\000r\000/\000e\000e\000p\000r\000o\000m\000.\000h\000>\000:\000\040\000E\000E\000P\000R\000O\000M\000\040\000h\000a\000n\000d\000l\000i\000n\000g) +endobj +772 0 obj +<< /S /GoTo /D (subsubsection.22.13.1) >> +endobj +775 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +776 0 obj +<< /S /GoTo /D (subsubsection.22.13.2) >> +endobj +779 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +780 0 obj +<< /S /GoTo /D (subsubsection.22.13.3) >> +endobj +783 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +784 0 obj +<< /S /GoTo /D (subsection.22.14) >> +endobj +787 0 obj +(\376\377\000<\000a\000v\000r\000/\000f\000u\000s\000e\000.\000h\000>\000:\000\040\000F\000u\000s\000e\000\040\000S\000u\000p\000p\000o\000r\000t) +endobj +788 0 obj +<< /S /GoTo /D (subsection.22.15) >> +endobj +791 0 obj +(\376\377\000<\000a\000v\000r\000/\000i\000n\000t\000e\000r\000r\000u\000p\000t\000.\000h\000>\000:\000\040\000I\000n\000t\000e\000r\000r\000u\000p\000t\000s) +endobj +792 0 obj +<< /S /GoTo /D (subsubsection.22.15.1) >> +endobj +795 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +796 0 obj +<< /S /GoTo /D (subsubsection.22.15.2) >> +endobj +799 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +800 0 obj +<< /S /GoTo /D (subsection.22.16) >> +endobj +803 0 obj +(\376\377\000<\000a\000v\000r\000/\000i\000o\000.\000h\000>\000:\000\040\000A\000V\000R\000\040\000d\000e\000v\000i\000c\000e\000-\000s\000p\000e\000c\000i\000f\000i\000c\000\040\000I\000O\000\040\000d\000e\000f\000i\000n\000i\000t\000i\000o\000n\000s) +endobj +804 0 obj +<< /S /GoTo /D (subsection.22.17) >> +endobj +807 0 obj +(\376\377\000<\000a\000v\000r\000/\000l\000o\000c\000k\000.\000h\000>\000:\000\040\000L\000o\000c\000k\000b\000i\000t\000\040\000S\000u\000p\000p\000o\000r\000t) +endobj +808 0 obj +<< /S /GoTo /D (subsection.22.18) >> +endobj +811 0 obj +(\376\377\000<\000a\000v\000r\000/\000p\000g\000m\000s\000p\000a\000c\000e\000.\000h\000>\000:\000\040\000P\000r\000o\000g\000r\000a\000m\000\040\000S\000p\000a\000c\000e\000\040\000U\000t\000i\000l\000i\000t\000i\000e\000s) +endobj +812 0 obj +<< /S /GoTo /D (subsubsection.22.18.1) >> +endobj +815 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +816 0 obj +<< /S /GoTo /D (subsubsection.22.18.2) >> +endobj +819 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +820 0 obj +<< /S /GoTo /D (subsubsection.22.18.3) >> +endobj +823 0 obj +(\376\377\000T\000y\000p\000e\000d\000e\000f\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +824 0 obj +<< /S /GoTo /D (subsubsection.22.18.4) >> +endobj +827 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +828 0 obj +<< /S /GoTo /D (subsection.22.19) >> +endobj +831 0 obj +(\376\377\000<\000a\000v\000r\000/\000p\000o\000w\000e\000r\000.\000h\000>\000:\000\040\000P\000o\000w\000e\000r\000\040\000R\000e\000d\000u\000c\000t\000i\000o\000n\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t) +endobj +832 0 obj +<< /S /GoTo /D (subsection.22.20) >> +endobj +835 0 obj +(\376\377\000A\000d\000d\000i\000t\000i\000o\000n\000a\000l\000\040\000n\000o\000t\000e\000s\000\040\000f\000r\000o\000m\000\040\000<\000a\000v\000r\000/\000s\000f\000r\000\137\000d\000e\000f\000s\000.\000h\000>) +endobj +836 0 obj +<< /S /GoTo /D (subsection.22.21) >> +endobj +839 0 obj +(\376\377\000<\000a\000v\000r\000/\000s\000f\000r\000\137\000d\000e\000f\000s\000.\000h\000>\000:\000\040\000S\000p\000e\000c\000i\000a\000l\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000\040\000r\000e\000g\000i\000s\000t\000e\000r\000s) +endobj +840 0 obj +<< /S /GoTo /D (subsubsection.22.21.1) >> +endobj +843 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +844 0 obj +<< /S /GoTo /D (subsubsection.22.21.2) >> +endobj +847 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +848 0 obj +<< /S /GoTo /D (subsection.22.22) >> +endobj +851 0 obj +(\376\377\000<\000a\000v\000r\000/\000s\000l\000e\000e\000p\000.\000h\000>\000:\000\040\000P\000o\000w\000e\000r\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t\000\040\000a\000n\000d\000\040\000S\000l\000e\000e\000p\000\040\000M\000o\000d\000e\000s) +endobj +852 0 obj +<< /S /GoTo /D (subsubsection.22.22.1) >> +endobj +855 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +856 0 obj +<< /S /GoTo /D (subsubsection.22.22.2) >> +endobj +859 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +860 0 obj +<< /S /GoTo /D (subsection.22.23) >> +endobj +863 0 obj +(\376\377\000<\000a\000v\000r\000/\000v\000e\000r\000s\000i\000o\000n\000.\000h\000>\000:\000\040\000a\000v\000r\000-\000l\000i\000b\000c\000\040\000v\000e\000r\000s\000i\000o\000n\000\040\000m\000a\000c\000r\000o\000s) +endobj +864 0 obj +<< /S /GoTo /D (subsubsection.22.23.1) >> +endobj +867 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +868 0 obj +<< /S /GoTo /D (subsubsection.22.23.2) >> +endobj +871 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +872 0 obj +<< /S /GoTo /D (subsection.22.24) >> +endobj +875 0 obj +(\376\377\000<\000a\000v\000r\000/\000w\000d\000t\000.\000h\000>\000:\000\040\000W\000a\000t\000c\000h\000d\000o\000g\000\040\000t\000i\000m\000e\000r\000\040\000h\000a\000n\000d\000l\000i\000n\000g) +endobj +876 0 obj +<< /S /GoTo /D (subsubsection.22.24.1) >> +endobj +879 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +880 0 obj +<< /S /GoTo /D (subsubsection.22.24.2) >> +endobj +883 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +884 0 obj +<< /S /GoTo /D (subsection.22.25) >> +endobj +887 0 obj +(\376\377\000<\000u\000t\000i\000l\000/\000a\000t\000o\000m\000i\000c\000.\000h\000>\000\040\000A\000t\000o\000m\000i\000c\000a\000l\000l\000y\000\040\000a\000n\000d\000\040\000N\000o\000n\000-\000A\000t\000o\000m\000i\000c\000a\000l\000l\000y\000\040\000E\000x\000e\000c\000u\000t\000e\000d\000\040\000C\000o\000d\000e\000\040\000B\000l\000o\000c\000k\000s) +endobj +888 0 obj +<< /S /GoTo /D (subsubsection.22.25.1) >> +endobj +891 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +892 0 obj +<< /S /GoTo /D (subsubsection.22.25.2) >> +endobj +895 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +896 0 obj +<< /S /GoTo /D (subsection.22.26) >> +endobj +899 0 obj +(\376\377\000<\000u\000t\000i\000l\000/\000c\000r\000c\0001\0006\000.\000h\000>\000:\000\040\000C\000R\000C\000\040\000C\000o\000m\000p\000u\000t\000a\000t\000i\000o\000n\000s) +endobj +900 0 obj +<< /S /GoTo /D (subsubsection.22.26.1) >> +endobj +903 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +904 0 obj +<< /S /GoTo /D (subsubsection.22.26.2) >> +endobj +907 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +908 0 obj +<< /S /GoTo /D (subsection.22.27) >> +endobj +911 0 obj +(\376\377\000<\000u\000t\000i\000l\000/\000d\000e\000l\000a\000y\000.\000h\000>\000:\000\040\000C\000o\000n\000v\000e\000n\000i\000e\000n\000c\000e\000\040\000f\000u\000n\000c\000t\000i\000o\000n\000s\000\040\000f\000o\000r\000\040\000b\000u\000s\000y\000-\000w\000a\000i\000t\000\040\000d\000e\000l\000a\000y\000\040\000l\000o\000o\000p\000s) +endobj +912 0 obj +<< /S /GoTo /D (subsubsection.22.27.1) >> +endobj +915 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +916 0 obj +<< /S /GoTo /D (subsubsection.22.27.2) >> +endobj +919 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +920 0 obj +<< /S /GoTo /D (subsection.22.28) >> +endobj +923 0 obj +(\376\377\000<\000u\000t\000i\000l\000/\000d\000e\000l\000a\000y\000\137\000b\000a\000s\000i\000c\000.\000h\000>\000:\000\040\000B\000a\000s\000i\000c\000\040\000b\000u\000s\000y\000-\000w\000a\000i\000t\000\040\000d\000e\000l\000a\000y\000\040\000l\000o\000o\000p\000s) +endobj +924 0 obj +<< /S /GoTo /D (subsubsection.22.28.1) >> +endobj +927 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +928 0 obj +<< /S /GoTo /D (subsubsection.22.28.2) >> +endobj +931 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +932 0 obj +<< /S /GoTo /D (subsection.22.29) >> +endobj +935 0 obj +(\376\377\000<\000u\000t\000i\000l\000/\000p\000a\000r\000i\000t\000y\000.\000h\000>\000:\000\040\000P\000a\000r\000i\000t\000y\000\040\000b\000i\000t\000\040\000g\000e\000n\000e\000r\000a\000t\000i\000o\000n) +endobj +936 0 obj +<< /S /GoTo /D (subsubsection.22.29.1) >> +endobj +939 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +940 0 obj +<< /S /GoTo /D (subsubsection.22.29.2) >> +endobj +943 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +944 0 obj +<< /S /GoTo /D (subsection.22.30) >> +endobj +947 0 obj +(\376\377\000<\000u\000t\000i\000l\000/\000s\000e\000t\000b\000a\000u\000d\000.\000h\000>\000:\000\040\000H\000e\000l\000p\000e\000r\000\040\000m\000a\000c\000r\000o\000s\000\040\000f\000o\000r\000\040\000b\000a\000u\000d\000\040\000r\000a\000t\000e\000\040\000c\000a\000l\000c\000u\000l\000a\000t\000i\000o\000n\000s) +endobj +948 0 obj +<< /S /GoTo /D (subsubsection.22.30.1) >> +endobj +951 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +952 0 obj +<< /S /GoTo /D (subsubsection.22.30.2) >> +endobj +955 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +956 0 obj +<< /S /GoTo /D (subsection.22.31) >> +endobj +959 0 obj +(\376\377\000<\000u\000t\000i\000l\000/\000t\000w\000i\000.\000h\000>\000:\000\040\000T\000W\000I\000\040\000b\000i\000t\000\040\000m\000a\000s\000k\000\040\000d\000e\000f\000i\000n\000i\000t\000i\000o\000n\000s) +endobj +960 0 obj +<< /S /GoTo /D (subsubsection.22.31.1) >> +endobj +963 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +964 0 obj +<< /S /GoTo /D (subsubsection.22.31.2) >> +endobj +967 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +968 0 obj +<< /S /GoTo /D (subsection.22.32) >> +endobj +971 0 obj +(\376\377\000<\000c\000o\000m\000p\000a\000t\000/\000d\000e\000p\000r\000e\000c\000a\000t\000e\000d\000.\000h\000>\000:\000\040\000D\000e\000p\000r\000e\000c\000a\000t\000e\000d\000\040\000i\000t\000e\000m\000s) +endobj +972 0 obj +<< /S /GoTo /D (subsubsection.22.32.1) >> +endobj +975 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +976 0 obj +<< /S /GoTo /D (subsubsection.22.32.2) >> +endobj +979 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +980 0 obj +<< /S /GoTo /D (subsubsection.22.32.3) >> +endobj +983 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +984 0 obj +<< /S /GoTo /D (subsection.22.33) >> +endobj +987 0 obj +(\376\377\000<\000c\000o\000m\000p\000a\000t\000/\000i\000n\000a\0009\0000\000.\000h\000>\000:\000\040\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000w\000i\000t\000h\000\040\000I\000A\000R\000\040\000E\000W\000B\000\040\0003\000.\000x) +endobj +988 0 obj +<< /S /GoTo /D (subsection.22.34) >> +endobj +991 0 obj +(\376\377\000D\000e\000m\000o\000\040\000p\000r\000o\000j\000e\000c\000t\000s) +endobj +992 0 obj +<< /S /GoTo /D (subsubsection.22.34.1) >> +endobj +995 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +996 0 obj +<< /S /GoTo /D (subsection.22.35) >> +endobj +999 0 obj +(\376\377\000C\000o\000m\000b\000i\000n\000i\000n\000g\000\040\000C\000\040\000a\000n\000d\000\040\000a\000s\000s\000e\000m\000b\000l\000y\000\040\000s\000o\000u\000r\000c\000e\000\040\000f\000i\000l\000e\000s) +endobj +1000 0 obj +<< /S /GoTo /D (subsubsection.22.35.1) >> +endobj +1003 0 obj +(\376\377\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000s\000e\000t\000u\000p) +endobj +1004 0 obj +<< /S /GoTo /D (subsubsection.22.35.2) >> +endobj +1007 0 obj +(\376\377\000A\000\040\000c\000o\000d\000e\000\040\000w\000a\000l\000k\000t\000h\000r\000o\000u\000g\000h) +endobj +1008 0 obj +<< /S /GoTo /D (subsubsection.22.35.3) >> +endobj +1011 0 obj +(\376\377\000T\000h\000e\000\040\000s\000o\000u\000r\000c\000e\000\040\000c\000o\000d\000e) +endobj +1012 0 obj +<< /S /GoTo /D (subsection.22.36) >> +endobj +1015 0 obj +(\376\377\000A\000\040\000s\000i\000m\000p\000l\000e\000\040\000p\000r\000o\000j\000e\000c\000t) +endobj +1016 0 obj +<< /S /GoTo /D (subsubsection.22.36.1) >> +endobj +1019 0 obj +(\376\377\000T\000h\000e\000\040\000P\000r\000o\000j\000e\000c\000t) +endobj +1020 0 obj +<< /S /GoTo /D (subsubsection.22.36.2) >> +endobj +1023 0 obj +(\376\377\000T\000h\000e\000\040\000S\000o\000u\000r\000c\000e\000\040\000C\000o\000d\000e) +endobj +1024 0 obj +<< /S /GoTo /D (subsubsection.22.36.3) >> +endobj +1027 0 obj +(\376\377\000C\000o\000m\000p\000i\000l\000i\000n\000g\000\040\000a\000n\000d\000\040\000L\000i\000n\000k\000i\000n\000g) +endobj +1028 0 obj +<< /S /GoTo /D (subsubsection.22.36.4) >> +endobj +1031 0 obj +(\376\377\000E\000x\000a\000m\000i\000n\000i\000n\000g\000\040\000t\000h\000e\000\040\000O\000b\000j\000e\000c\000t\000\040\000F\000i\000l\000e) +endobj +1032 0 obj +<< /S /GoTo /D (subsubsection.22.36.5) >> +endobj +1035 0 obj +(\376\377\000L\000i\000n\000k\000e\000r\000\040\000M\000a\000p\000\040\000F\000i\000l\000e\000s) +endobj +1036 0 obj +<< /S /GoTo /D (subsubsection.22.36.6) >> +endobj +1039 0 obj +(\376\377\000G\000e\000n\000e\000r\000a\000t\000i\000n\000g\000\040\000I\000n\000t\000e\000l\000\040\000H\000e\000x\000\040\000F\000i\000l\000e\000s) +endobj +1040 0 obj +<< /S /GoTo /D (subsubsection.22.36.7) >> +endobj +1043 0 obj +(\376\377\000L\000e\000t\000t\000i\000n\000g\000\040\000M\000a\000k\000e\000\040\000B\000u\000i\000l\000d\000\040\000t\000h\000e\000\040\000P\000r\000o\000j\000e\000c\000t) +endobj +1044 0 obj +<< /S /GoTo /D (subsubsection.22.36.8) >> +endobj +1047 0 obj +(\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000\040\000t\000o\000\040\000t\000h\000e\000\040\000s\000o\000u\000r\000c\000e\000\040\000c\000o\000d\000e) +endobj +1048 0 obj +<< /S /GoTo /D (subsection.22.37) >> +endobj +1051 0 obj +(\376\377\000A\000\040\000m\000o\000r\000e\000\040\000s\000o\000p\000h\000i\000s\000t\000i\000c\000a\000t\000e\000d\000\040\000p\000r\000o\000j\000e\000c\000t) +endobj +1052 0 obj +<< /S /GoTo /D (subsubsection.22.37.1) >> +endobj +1055 0 obj +(\376\377\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000s\000e\000t\000u\000p) +endobj +1056 0 obj +<< /S /GoTo /D (subsubsection.22.37.2) >> +endobj +1059 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000a\000l\000\040\000o\000v\000e\000r\000v\000i\000e\000w) +endobj +1060 0 obj +<< /S /GoTo /D (subsubsection.22.37.3) >> +endobj +1063 0 obj +(\376\377\000A\000\040\000c\000o\000d\000e\000\040\000w\000a\000l\000k\000t\000h\000r\000o\000u\000g\000h) +endobj +1064 0 obj +<< /S /GoTo /D (subsubsection.22.37.4) >> +endobj +1067 0 obj +(\376\377\000T\000h\000e\000\040\000s\000o\000u\000r\000c\000e\000\040\000c\000o\000d\000e) +endobj +1068 0 obj +<< /S /GoTo /D (subsection.22.38) >> +endobj +1071 0 obj +(\376\377\000U\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000s\000t\000a\000n\000d\000a\000r\000d\000\040\000I\000O\000\040\000f\000a\000c\000i\000l\000i\000t\000i\000e\000s) +endobj +1072 0 obj +<< /S /GoTo /D (subsubsection.22.38.1) >> +endobj +1075 0 obj +(\376\377\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000s\000e\000t\000u\000p) +endobj +1076 0 obj +<< /S /GoTo /D (subsubsection.22.38.2) >> +endobj +1079 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000a\000l\000\040\000o\000v\000e\000r\000v\000i\000e\000w) +endobj +1080 0 obj +<< /S /GoTo /D (subsubsection.22.38.3) >> +endobj +1083 0 obj +(\376\377\000A\000\040\000c\000o\000d\000e\000\040\000w\000a\000l\000k\000t\000h\000r\000o\000u\000g\000h) +endobj +1084 0 obj +<< /S /GoTo /D (subsubsection.22.38.4) >> +endobj +1087 0 obj +(\376\377\000T\000h\000e\000\040\000s\000o\000u\000r\000c\000e\000\040\000c\000o\000d\000e) +endobj +1088 0 obj +<< /S /GoTo /D (subsection.22.39) >> +endobj +1091 0 obj +(\376\377\000E\000x\000a\000m\000p\000l\000e\000\040\000u\000s\000i\000n\000g\000\040\000t\000h\000e\000\040\000t\000w\000o\000-\000w\000i\000r\000e\000\040\000i\000n\000t\000e\000r\000f\000a\000c\000e\000\040\000\050\000T\000W\000I\000\051) +endobj +1092 0 obj +<< /S /GoTo /D (subsubsection.22.39.1) >> +endobj +1095 0 obj +(\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n\000\040\000i\000n\000t\000o\000\040\000T\000W\000I) +endobj +1096 0 obj +<< /S /GoTo /D (subsubsection.22.39.2) >> +endobj +1099 0 obj +(\376\377\000T\000h\000e\000\040\000T\000W\000I\000\040\000e\000x\000a\000m\000p\000l\000e\000\040\000p\000r\000o\000j\000e\000c\000t) +endobj +1100 0 obj +<< /S /GoTo /D (subsubsection.22.39.3) >> +endobj +1103 0 obj +(\376\377\000T\000h\000e\000\040\000S\000o\000u\000r\000c\000e\000\040\000C\000o\000d\000e) +endobj +1104 0 obj +<< /S /GoTo /D (section.23) >> +endobj +1107 0 obj +(\376\377\000D\000a\000t\000a\000\040\000S\000t\000r\000u\000c\000t\000u\000r\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1108 0 obj +<< /S /GoTo /D (subsection.23.1) >> +endobj +1111 0 obj +(\376\377\000d\000i\000v\000\137\000t\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1112 0 obj +<< /S /GoTo /D (subsubsection.23.1.1) >> +endobj +1115 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1116 0 obj +<< /S /GoTo /D (subsubsection.23.1.2) >> +endobj +1119 0 obj +(\376\377\000F\000i\000e\000l\000d\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1120 0 obj +<< /S /GoTo /D (subsection.23.2) >> +endobj +1123 0 obj +(\376\377\000l\000d\000i\000v\000\137\000t\000\040\000S\000t\000r\000u\000c\000t\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1124 0 obj +<< /S /GoTo /D (subsubsection.23.2.1) >> +endobj +1127 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1128 0 obj +<< /S /GoTo /D (subsubsection.23.2.2) >> +endobj +1131 0 obj +(\376\377\000F\000i\000e\000l\000d\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1132 0 obj +<< /S /GoTo /D (section.24) >> +endobj +1135 0 obj +(\376\377\000F\000i\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1136 0 obj +<< /S /GoTo /D (subsection.24.1) >> +endobj +1139 0 obj +(\376\377\000a\000s\000s\000e\000r\000t\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1140 0 obj +<< /S /GoTo /D (subsubsection.24.1.1) >> +endobj +1143 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1144 0 obj +<< /S /GoTo /D (subsection.24.2) >> +endobj +1147 0 obj +(\376\377\000a\000t\000o\000i\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1148 0 obj +<< /S /GoTo /D (subsubsection.24.2.1) >> +endobj +1151 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1152 0 obj +<< /S /GoTo /D (subsection.24.3) >> +endobj +1155 0 obj +(\376\377\000a\000t\000o\000l\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1156 0 obj +<< /S /GoTo /D (subsubsection.24.3.1) >> +endobj +1159 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1160 0 obj +<< /S /GoTo /D (subsection.24.4) >> +endobj +1163 0 obj +(\376\377\000a\000t\000o\000m\000i\000c\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1164 0 obj +<< /S /GoTo /D (subsubsection.24.4.1) >> +endobj +1167 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1168 0 obj +<< /S /GoTo /D (subsection.24.5) >> +endobj +1171 0 obj +(\376\377\000b\000o\000o\000t\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1172 0 obj +<< /S /GoTo /D (subsubsection.24.5.1) >> +endobj +1175 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1176 0 obj +<< /S /GoTo /D (subsubsection.24.5.2) >> +endobj +1179 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1180 0 obj +<< /S /GoTo /D (subsection.24.6) >> +endobj +1183 0 obj +(\376\377\000c\000r\000c\0001\0006\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1184 0 obj +<< /S /GoTo /D (subsubsection.24.6.1) >> +endobj +1187 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1188 0 obj +<< /S /GoTo /D (subsection.24.7) >> +endobj +1191 0 obj +(\376\377\000c\000t\000y\000p\000e\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1192 0 obj +<< /S /GoTo /D (subsubsection.24.7.1) >> +endobj +1195 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1196 0 obj +<< /S /GoTo /D (subsection.24.8) >> +endobj +1199 0 obj +(\376\377\000d\000e\000l\000a\000y\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1200 0 obj +<< /S /GoTo /D (subsubsection.24.8.1) >> +endobj +1203 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1204 0 obj +<< /S /GoTo /D (subsection.24.9) >> +endobj +1207 0 obj +(\376\377\000d\000e\000l\000a\000y\000\137\000b\000a\000s\000i\000c\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1208 0 obj +<< /S /GoTo /D (subsubsection.24.9.1) >> +endobj +1211 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1212 0 obj +<< /S /GoTo /D (subsection.24.10) >> +endobj +1215 0 obj +(\376\377\000e\000r\000r\000n\000o\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1216 0 obj +<< /S /GoTo /D (subsubsection.24.10.1) >> +endobj +1219 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1220 0 obj +<< /S /GoTo /D (subsection.24.11) >> +endobj +1223 0 obj +(\376\377\000f\000d\000e\000v\000o\000p\000e\000n\000.\000c\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1224 0 obj +<< /S /GoTo /D (subsubsection.24.11.1) >> +endobj +1227 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1228 0 obj +<< /S /GoTo /D (subsection.24.12) >> +endobj +1231 0 obj +(\376\377\000f\000f\000s\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1232 0 obj +<< /S /GoTo /D (subsubsection.24.12.1) >> +endobj +1235 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1236 0 obj +<< /S /GoTo /D (subsection.24.13) >> +endobj +1239 0 obj +(\376\377\000f\000f\000s\000l\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1240 0 obj +<< /S /GoTo /D (subsubsection.24.13.1) >> +endobj +1243 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1244 0 obj +<< /S /GoTo /D (subsection.24.14) >> +endobj +1247 0 obj +(\376\377\000f\000f\000s\000l\000l\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1248 0 obj +<< /S /GoTo /D (subsubsection.24.14.1) >> +endobj +1251 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1252 0 obj +<< /S /GoTo /D (subsection.24.15) >> +endobj +1255 0 obj +(\376\377\000f\000u\000s\000e\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1256 0 obj +<< /S /GoTo /D (subsubsection.24.15.1) >> +endobj +1259 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1260 0 obj +<< /S /GoTo /D (subsection.24.16) >> +endobj +1263 0 obj +(\376\377\000i\000n\000t\000e\000r\000r\000u\000p\000t\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1264 0 obj +<< /S /GoTo /D (subsubsection.24.16.1) >> +endobj +1267 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1268 0 obj +<< /S /GoTo /D (subsection.24.17) >> +endobj +1271 0 obj +(\376\377\000i\000n\000t\000t\000y\000p\000e\000s\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1272 0 obj +<< /S /GoTo /D (subsubsection.24.17.1) >> +endobj +1275 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1276 0 obj +<< /S /GoTo /D (subsection.24.18) >> +endobj +1279 0 obj +(\376\377\000i\000o\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1280 0 obj +<< /S /GoTo /D (subsubsection.24.18.1) >> +endobj +1283 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1284 0 obj +<< /S /GoTo /D (subsection.24.19) >> +endobj +1287 0 obj +(\376\377\000l\000o\000c\000k\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1288 0 obj +<< /S /GoTo /D (subsubsection.24.19.1) >> +endobj +1291 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1292 0 obj +<< /S /GoTo /D (subsection.24.20) >> +endobj +1295 0 obj +(\376\377\000m\000a\000t\000h\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1296 0 obj +<< /S /GoTo /D (subsubsection.24.20.1) >> +endobj +1299 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1300 0 obj +<< /S /GoTo /D (subsection.24.21) >> +endobj +1303 0 obj +(\376\377\000m\000e\000m\000c\000c\000p\000y\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1304 0 obj +<< /S /GoTo /D (subsubsection.24.21.1) >> +endobj +1307 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1308 0 obj +<< /S /GoTo /D (subsection.24.22) >> +endobj +1311 0 obj +(\376\377\000m\000e\000m\000c\000h\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1312 0 obj +<< /S /GoTo /D (subsubsection.24.22.1) >> +endobj +1315 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1316 0 obj +<< /S /GoTo /D (subsection.24.23) >> +endobj +1319 0 obj +(\376\377\000m\000e\000m\000c\000h\000r\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1320 0 obj +<< /S /GoTo /D (subsubsection.24.23.1) >> +endobj +1323 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1324 0 obj +<< /S /GoTo /D (subsection.24.24) >> +endobj +1327 0 obj +(\376\377\000m\000e\000m\000c\000m\000p\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1328 0 obj +<< /S /GoTo /D (subsubsection.24.24.1) >> +endobj +1331 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1332 0 obj +<< /S /GoTo /D (subsection.24.25) >> +endobj +1335 0 obj +(\376\377\000m\000e\000m\000c\000m\000p\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1336 0 obj +<< /S /GoTo /D (subsubsection.24.25.1) >> +endobj +1339 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1340 0 obj +<< /S /GoTo /D (subsection.24.26) >> +endobj +1343 0 obj +(\376\377\000m\000e\000m\000c\000p\000y\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1344 0 obj +<< /S /GoTo /D (subsubsection.24.26.1) >> +endobj +1347 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1348 0 obj +<< /S /GoTo /D (subsection.24.27) >> +endobj +1351 0 obj +(\376\377\000m\000e\000m\000c\000p\000y\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1352 0 obj +<< /S /GoTo /D (subsubsection.24.27.1) >> +endobj +1355 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1356 0 obj +<< /S /GoTo /D (subsection.24.28) >> +endobj +1359 0 obj +(\376\377\000m\000e\000m\000m\000e\000m\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1360 0 obj +<< /S /GoTo /D (subsubsection.24.28.1) >> +endobj +1363 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1364 0 obj +<< /S /GoTo /D (subsection.24.29) >> +endobj +1367 0 obj +(\376\377\000m\000e\000m\000m\000o\000v\000e\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1368 0 obj +<< /S /GoTo /D (subsubsection.24.29.1) >> +endobj +1371 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1372 0 obj +<< /S /GoTo /D (subsection.24.30) >> +endobj +1375 0 obj +(\376\377\000m\000e\000m\000r\000c\000h\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1376 0 obj +<< /S /GoTo /D (subsubsection.24.30.1) >> +endobj +1379 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1380 0 obj +<< /S /GoTo /D (subsection.24.31) >> +endobj +1383 0 obj +(\376\377\000m\000e\000m\000r\000c\000h\000r\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1384 0 obj +<< /S /GoTo /D (subsubsection.24.31.1) >> +endobj +1387 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1388 0 obj +<< /S /GoTo /D (subsection.24.32) >> +endobj +1391 0 obj +(\376\377\000m\000e\000m\000s\000e\000t\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1392 0 obj +<< /S /GoTo /D (subsubsection.24.32.1) >> +endobj +1395 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1396 0 obj +<< /S /GoTo /D (subsection.24.33) >> +endobj +1399 0 obj +(\376\377\000p\000a\000r\000i\000t\000y\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1400 0 obj +<< /S /GoTo /D (subsubsection.24.33.1) >> +endobj +1403 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1404 0 obj +<< /S /GoTo /D (subsection.24.34) >> +endobj +1407 0 obj +(\376\377\000p\000g\000m\000s\000p\000a\000c\000e\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1408 0 obj +<< /S /GoTo /D (subsubsection.24.34.1) >> +endobj +1411 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1412 0 obj +<< /S /GoTo /D (subsubsection.24.34.2) >> +endobj +1415 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1416 0 obj +<< /S /GoTo /D (subsection.24.35) >> +endobj +1419 0 obj +(\376\377\000p\000o\000w\000e\000r\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1420 0 obj +<< /S /GoTo /D (subsubsection.24.35.1) >> +endobj +1423 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1424 0 obj +<< /S /GoTo /D (subsubsection.24.35.2) >> +endobj +1427 0 obj +(\376\377\000D\000e\000f\000i\000n\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1428 0 obj +<< /S /GoTo /D (subsection.24.36) >> +endobj +1431 0 obj +(\376\377\000s\000e\000t\000b\000a\000u\000d\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1432 0 obj +<< /S /GoTo /D (subsubsection.24.36.1) >> +endobj +1435 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1436 0 obj +<< /S /GoTo /D (subsection.24.37) >> +endobj +1439 0 obj +(\376\377\000s\000e\000t\000j\000m\000p\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1440 0 obj +<< /S /GoTo /D (subsubsection.24.37.1) >> +endobj +1443 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1444 0 obj +<< /S /GoTo /D (subsection.24.38) >> +endobj +1447 0 obj +(\376\377\000s\000l\000e\000e\000p\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1448 0 obj +<< /S /GoTo /D (subsubsection.24.38.1) >> +endobj +1451 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1452 0 obj +<< /S /GoTo /D (subsection.24.39) >> +endobj +1455 0 obj +(\376\377\000s\000t\000d\000i\000n\000t\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1456 0 obj +<< /S /GoTo /D (subsubsection.24.39.1) >> +endobj +1459 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1460 0 obj +<< /S /GoTo /D (subsection.24.40) >> +endobj +1463 0 obj +(\376\377\000s\000t\000d\000i\000o\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1464 0 obj +<< /S /GoTo /D (subsubsection.24.40.1) >> +endobj +1467 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1468 0 obj +<< /S /GoTo /D (subsection.24.41) >> +endobj +1471 0 obj +(\376\377\000s\000t\000d\000l\000i\000b\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1472 0 obj +<< /S /GoTo /D (subsubsection.24.41.1) >> +endobj +1475 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1476 0 obj +<< /S /GoTo /D (subsection.24.42) >> +endobj +1479 0 obj +(\376\377\000s\000t\000r\000c\000a\000s\000e\000c\000m\000p\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1480 0 obj +<< /S /GoTo /D (subsubsection.24.42.1) >> +endobj +1483 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1484 0 obj +<< /S /GoTo /D (subsection.24.43) >> +endobj +1487 0 obj +(\376\377\000s\000t\000r\000c\000a\000s\000e\000c\000m\000p\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1488 0 obj +<< /S /GoTo /D (subsubsection.24.43.1) >> +endobj +1491 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1492 0 obj +<< /S /GoTo /D (subsection.24.44) >> +endobj +1495 0 obj +(\376\377\000s\000t\000r\000c\000a\000s\000e\000s\000t\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1496 0 obj +<< /S /GoTo /D (subsubsection.24.44.1) >> +endobj +1499 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1500 0 obj +<< /S /GoTo /D (subsection.24.45) >> +endobj +1503 0 obj +(\376\377\000s\000t\000r\000c\000a\000t\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1504 0 obj +<< /S /GoTo /D (subsubsection.24.45.1) >> +endobj +1507 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1508 0 obj +<< /S /GoTo /D (subsection.24.46) >> +endobj +1511 0 obj +(\376\377\000s\000t\000r\000c\000a\000t\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1512 0 obj +<< /S /GoTo /D (subsubsection.24.46.1) >> +endobj +1515 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1516 0 obj +<< /S /GoTo /D (subsection.24.47) >> +endobj +1519 0 obj +(\376\377\000s\000t\000r\000c\000h\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1520 0 obj +<< /S /GoTo /D (subsubsection.24.47.1) >> +endobj +1523 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1524 0 obj +<< /S /GoTo /D (subsection.24.48) >> +endobj +1527 0 obj +(\376\377\000s\000t\000r\000c\000h\000r\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1528 0 obj +<< /S /GoTo /D (subsubsection.24.48.1) >> +endobj +1531 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1532 0 obj +<< /S /GoTo /D (subsection.24.49) >> +endobj +1535 0 obj +(\376\377\000s\000t\000r\000c\000h\000r\000n\000u\000l\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1536 0 obj +<< /S /GoTo /D (subsubsection.24.49.1) >> +endobj +1539 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1540 0 obj +<< /S /GoTo /D (subsection.24.50) >> +endobj +1543 0 obj +(\376\377\000s\000t\000r\000c\000h\000r\000n\000u\000l\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1544 0 obj +<< /S /GoTo /D (subsubsection.24.50.1) >> +endobj +1547 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1548 0 obj +<< /S /GoTo /D (subsection.24.51) >> +endobj +1551 0 obj +(\376\377\000s\000t\000r\000c\000m\000p\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1552 0 obj +<< /S /GoTo /D (subsubsection.24.51.1) >> +endobj +1555 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1556 0 obj +<< /S /GoTo /D (subsection.24.52) >> +endobj +1559 0 obj +(\376\377\000s\000t\000r\000c\000m\000p\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1560 0 obj +<< /S /GoTo /D (subsubsection.24.52.1) >> +endobj +1563 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1564 0 obj +<< /S /GoTo /D (subsection.24.53) >> +endobj +1567 0 obj +(\376\377\000s\000t\000r\000c\000p\000y\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1568 0 obj +<< /S /GoTo /D (subsubsection.24.53.1) >> +endobj +1571 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1572 0 obj +<< /S /GoTo /D (subsection.24.54) >> +endobj +1575 0 obj +(\376\377\000s\000t\000r\000c\000p\000y\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1576 0 obj +<< /S /GoTo /D (subsubsection.24.54.1) >> +endobj +1579 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1580 0 obj +<< /S /GoTo /D (subsection.24.55) >> +endobj +1583 0 obj +(\376\377\000s\000t\000r\000c\000s\000p\000n\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1584 0 obj +<< /S /GoTo /D (subsubsection.24.55.1) >> +endobj +1587 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1588 0 obj +<< /S /GoTo /D (subsection.24.56) >> +endobj +1591 0 obj +(\376\377\000s\000t\000r\000c\000s\000p\000n\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1592 0 obj +<< /S /GoTo /D (subsubsection.24.56.1) >> +endobj +1595 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1596 0 obj +<< /S /GoTo /D (subsection.24.57) >> +endobj +1599 0 obj +(\376\377\000s\000t\000r\000d\000u\000p\000.\000c\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1600 0 obj +<< /S /GoTo /D (subsubsection.24.57.1) >> +endobj +1603 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1604 0 obj +<< /S /GoTo /D (subsection.24.58) >> +endobj +1607 0 obj +(\376\377\000s\000t\000r\000i\000n\000g\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1608 0 obj +<< /S /GoTo /D (subsubsection.24.58.1) >> +endobj +1611 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1612 0 obj +<< /S /GoTo /D (subsection.24.59) >> +endobj +1615 0 obj +(\376\377\000s\000t\000r\000l\000c\000a\000t\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1616 0 obj +<< /S /GoTo /D (subsubsection.24.59.1) >> +endobj +1619 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1620 0 obj +<< /S /GoTo /D (subsection.24.60) >> +endobj +1623 0 obj +(\376\377\000s\000t\000r\000l\000c\000a\000t\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1624 0 obj +<< /S /GoTo /D (subsubsection.24.60.1) >> +endobj +1627 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1628 0 obj +<< /S /GoTo /D (subsection.24.61) >> +endobj +1631 0 obj +(\376\377\000s\000t\000r\000l\000c\000p\000y\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1632 0 obj +<< /S /GoTo /D (subsubsection.24.61.1) >> +endobj +1635 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1636 0 obj +<< /S /GoTo /D (subsection.24.62) >> +endobj +1639 0 obj +(\376\377\000s\000t\000r\000l\000c\000p\000y\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1640 0 obj +<< /S /GoTo /D (subsubsection.24.62.1) >> +endobj +1643 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1644 0 obj +<< /S /GoTo /D (subsection.24.63) >> +endobj +1647 0 obj +(\376\377\000s\000t\000r\000l\000e\000n\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1648 0 obj +<< /S /GoTo /D (subsubsection.24.63.1) >> +endobj +1651 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1652 0 obj +<< /S /GoTo /D (subsection.24.64) >> +endobj +1655 0 obj +(\376\377\000s\000t\000r\000l\000e\000n\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1656 0 obj +<< /S /GoTo /D (subsubsection.24.64.1) >> +endobj +1659 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1660 0 obj +<< /S /GoTo /D (subsection.24.65) >> +endobj +1663 0 obj +(\376\377\000s\000t\000r\000l\000w\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1664 0 obj +<< /S /GoTo /D (subsubsection.24.65.1) >> +endobj +1667 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1668 0 obj +<< /S /GoTo /D (subsection.24.66) >> +endobj +1671 0 obj +(\376\377\000s\000t\000r\000n\000c\000a\000s\000e\000c\000m\000p\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1672 0 obj +<< /S /GoTo /D (subsubsection.24.66.1) >> +endobj +1675 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1676 0 obj +<< /S /GoTo /D (subsection.24.67) >> +endobj +1679 0 obj +(\376\377\000s\000t\000r\000n\000c\000a\000s\000e\000c\000m\000p\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1680 0 obj +<< /S /GoTo /D (subsubsection.24.67.1) >> +endobj +1683 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1684 0 obj +<< /S /GoTo /D (subsection.24.68) >> +endobj +1687 0 obj +(\376\377\000s\000t\000r\000n\000c\000a\000t\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1688 0 obj +<< /S /GoTo /D (subsubsection.24.68.1) >> +endobj +1691 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1692 0 obj +<< /S /GoTo /D (subsection.24.69) >> +endobj +1695 0 obj +(\376\377\000s\000t\000r\000n\000c\000a\000t\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1696 0 obj +<< /S /GoTo /D (subsubsection.24.69.1) >> +endobj +1699 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1700 0 obj +<< /S /GoTo /D (subsection.24.70) >> +endobj +1703 0 obj +(\376\377\000s\000t\000r\000n\000c\000m\000p\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1704 0 obj +<< /S /GoTo /D (subsubsection.24.70.1) >> +endobj +1707 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1708 0 obj +<< /S /GoTo /D (subsection.24.71) >> +endobj +1711 0 obj +(\376\377\000s\000t\000r\000n\000c\000m\000p\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1712 0 obj +<< /S /GoTo /D (subsubsection.24.71.1) >> +endobj +1715 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1716 0 obj +<< /S /GoTo /D (subsection.24.72) >> +endobj +1719 0 obj +(\376\377\000s\000t\000r\000n\000c\000p\000y\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1720 0 obj +<< /S /GoTo /D (subsubsection.24.72.1) >> +endobj +1723 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1724 0 obj +<< /S /GoTo /D (subsection.24.73) >> +endobj +1727 0 obj +(\376\377\000s\000t\000r\000n\000c\000p\000y\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1728 0 obj +<< /S /GoTo /D (subsubsection.24.73.1) >> +endobj +1731 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1732 0 obj +<< /S /GoTo /D (subsection.24.74) >> +endobj +1735 0 obj +(\376\377\000s\000t\000r\000n\000l\000e\000n\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1736 0 obj +<< /S /GoTo /D (subsubsection.24.74.1) >> +endobj +1739 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1740 0 obj +<< /S /GoTo /D (subsection.24.75) >> +endobj +1743 0 obj +(\376\377\000s\000t\000r\000n\000l\000e\000n\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1744 0 obj +<< /S /GoTo /D (subsubsection.24.75.1) >> +endobj +1747 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1748 0 obj +<< /S /GoTo /D (subsection.24.76) >> +endobj +1751 0 obj +(\376\377\000s\000t\000r\000p\000b\000r\000k\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1752 0 obj +<< /S /GoTo /D (subsubsection.24.76.1) >> +endobj +1755 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1756 0 obj +<< /S /GoTo /D (subsection.24.77) >> +endobj +1759 0 obj +(\376\377\000s\000t\000r\000p\000b\000r\000k\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1760 0 obj +<< /S /GoTo /D (subsubsection.24.77.1) >> +endobj +1763 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1764 0 obj +<< /S /GoTo /D (subsection.24.78) >> +endobj +1767 0 obj +(\376\377\000s\000t\000r\000r\000c\000h\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1768 0 obj +<< /S /GoTo /D (subsubsection.24.78.1) >> +endobj +1771 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1772 0 obj +<< /S /GoTo /D (subsection.24.79) >> +endobj +1775 0 obj +(\376\377\000s\000t\000r\000r\000c\000h\000r\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1776 0 obj +<< /S /GoTo /D (subsubsection.24.79.1) >> +endobj +1779 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1780 0 obj +<< /S /GoTo /D (subsection.24.80) >> +endobj +1783 0 obj +(\376\377\000s\000t\000r\000r\000e\000v\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1784 0 obj +<< /S /GoTo /D (subsubsection.24.80.1) >> +endobj +1787 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1788 0 obj +<< /S /GoTo /D (subsection.24.81) >> +endobj +1791 0 obj +(\376\377\000s\000t\000r\000s\000e\000p\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1792 0 obj +<< /S /GoTo /D (subsubsection.24.81.1) >> +endobj +1795 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1796 0 obj +<< /S /GoTo /D (subsection.24.82) >> +endobj +1799 0 obj +(\376\377\000s\000t\000r\000s\000e\000p\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1800 0 obj +<< /S /GoTo /D (subsubsection.24.82.1) >> +endobj +1803 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1804 0 obj +<< /S /GoTo /D (subsection.24.83) >> +endobj +1807 0 obj +(\376\377\000s\000t\000r\000s\000p\000n\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1808 0 obj +<< /S /GoTo /D (subsubsection.24.83.1) >> +endobj +1811 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1812 0 obj +<< /S /GoTo /D (subsection.24.84) >> +endobj +1815 0 obj +(\376\377\000s\000t\000r\000s\000p\000n\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1816 0 obj +<< /S /GoTo /D (subsubsection.24.84.1) >> +endobj +1819 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1820 0 obj +<< /S /GoTo /D (subsection.24.85) >> +endobj +1823 0 obj +(\376\377\000s\000t\000r\000s\000t\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1824 0 obj +<< /S /GoTo /D (subsubsection.24.85.1) >> +endobj +1827 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1828 0 obj +<< /S /GoTo /D (subsection.24.86) >> +endobj +1831 0 obj +(\376\377\000s\000t\000r\000s\000t\000r\000\137\000P\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1832 0 obj +<< /S /GoTo /D (subsubsection.24.86.1) >> +endobj +1835 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1836 0 obj +<< /S /GoTo /D (subsection.24.87) >> +endobj +1839 0 obj +(\376\377\000s\000t\000r\000t\000o\000k\000.\000c\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1840 0 obj +<< /S /GoTo /D (subsubsection.24.87.1) >> +endobj +1843 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1844 0 obj +<< /S /GoTo /D (subsection.24.88) >> +endobj +1847 0 obj +(\376\377\000s\000t\000r\000t\000o\000k\000\137\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1848 0 obj +<< /S /GoTo /D (subsubsection.24.88.1) >> +endobj +1851 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1852 0 obj +<< /S /GoTo /D (subsection.24.89) >> +endobj +1855 0 obj +(\376\377\000s\000t\000r\000u\000p\000r\000.\000S\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1856 0 obj +<< /S /GoTo /D (subsubsection.24.89.1) >> +endobj +1859 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1860 0 obj +<< /S /GoTo /D (subsection.24.90) >> +endobj +1863 0 obj +(\376\377\000t\000w\000i\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1864 0 obj +<< /S /GoTo /D (subsubsection.24.90.1) >> +endobj +1867 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1868 0 obj +<< /S /GoTo /D (subsection.24.91) >> +endobj +1871 0 obj +(\376\377\000w\000d\000t\000.\000h\000\040\000F\000i\000l\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1872 0 obj +<< /S /GoTo /D (subsubsection.24.91.1) >> +endobj +1875 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1876 0 obj +<< /S /GoTo /D [1877 0 R /Fit ] >> +endobj +1879 0 obj << +/Length 193 +/Filter /FlateDecode +>> +stream +xÚuP±jÃ@ ÝýíáI§SÎKÛ@æÛJÛ¹¤…’‚iKý÷‰s&KÉ¢§ÇÓ{"8Á¶¢ø”ªÕ«°¢WHGèÑȃJ@Qƒt€·ºk„êßq®îó£š}Ú#cÂÍÈ„dŽ#*sñ1ê< .¶þ*+¡')ò6ŸóØ}çCã$PÝOŸ¿þ¦S>ÂÐîû"¶fz»S0òœ²Ä’—Þ–„<”F—Úˆßp[˜Å9ñß;^RufACÌ +endstream +endobj +1877 0 obj << +/Type /Page +/Contents 1879 0 R +/Resources 1878 0 R +/MediaBox [0 0 612 792] +/Parent 1883 0 R +>> endobj +1880 0 obj << +/D [1877 0 R /XYZ 132.768 705.06 null] +>> endobj +1881 0 obj << +/D [1877 0 R /XYZ 133.768 667.198 null] +>> endobj +1878 0 obj << +/Font << /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1915 0 obj << +/Length 1026 +/Filter /FlateDecode +>> +stream +xÚíšKs›0Çïþá`ª'B½%!ñ¤Ó&Ó˜ô’ö€±lkCÊÃi¾}bCúÀÓé´¶/æµâÇî¥ÀXÀ˜ŒÎýÑ›+äÜæŽjü…1¶™ã§¶Ã¡áÏóâöÆ¿¼ñ§Ö¹ ASZ_üw£KôuÕ}€·®ƒ6Ô×£‡/À˜«ƒï `cîOÕ©ku*,/ŒŒéèãt:‰‰ƒvzC™0Õ½Iâ\ÄyVu¢¶ž.u7î&ÝÆ1›7Ck æ™ 5?Ý©G¢À|/g¡¾]ÝãA=*r‰:ÿ‡VÀ66bsBŒ1d¶ƒSveLÝþ:ÎÓd^„¹Lâ® +Ó¶T«éÒ,¡Ã½}¨å˪’† Ò'"iÕoKÆ‹$]ÍjG0KŠ¼ÞÌW2«·"9Kƒô¹Û†ÿh0 ¬iL‹ÇÇ$Íż~ROXˆšŠ¬kÈåø <è·™µ1H4³ÀBÀܤåï8*Ã]~(âLô‚rº¿€ØQÐq#nJG©Ëj°Hë¨oqd&I®©£ñvcA`Š´üÝHñÔëæ ›|aÕ€NÂÚy£|`X VX¯¦WZCc­&“›û® ‚ÐA3„å^ê1jõxrqѽ%æä ½ï/Pm»tÄÊ#Ïe\ä2ê%7:GŽmú£”׸Gë•h°W:êy!£¹Œ—µkN“EþT&º í "0á'v;¦Ù©I.']Þ½wÙ fÎŽÇýðà˜vQôÎkÏ{S7×q&—«|gŸçy½ÁË ]ë}|×û,¡Ü]_ô\¹Ç'„Ã=Qeô1-¥O®‹¨‰èžöarBùKÏT¹½By¯F72—ýé;CìX3ô4QMÓ·TïNI=™å©œ•#¡¢œ+êÑg% Õ¡$S›°7íqØ?ˆ ]\#º}q3€)Ò°7tAôˆ’1ùå¬Ë!Ä:IŸk´g©]SYg‚}ŸµÃÇuEIXºákþâîKÿö¨”àS¥dï i¢„"›"ô&SvpYè² 5¿mº;ûеÍûÿP9õ·ß"Ô,â` íý‹$ý—§ˆˆŸ9ƒý¬©{\¯#±q¾µÂ1yðJ„Qççô'ŠÑäõŠ°ÎôÝÔF¨KMÈ÷_×#­¨ú+Q³s­;¶{"RRÑÐi%õà<ȃŸÂS¹ð¯‚‡{ðfYöSvØaœÒ{ëöÕϸk3<äã„æ£Çæ »Ûß$¸ÜÆŽ–„zyº]mTÛ_Í +­^o$uÁ[„ß*í«þ!ôÖ¢\Èm2eP­ê¦fÛ+–3­o^òíy)v_µzäï¯þ¹ +endstream +endobj +1914 0 obj << +/Type /Page +/Contents 1915 0 R +/Resources 1913 0 R +/MediaBox [0 0 612 792] +/Parent 1883 0 R +/Annots [ 1884 0 R 1885 0 R 1886 0 R 1887 0 R 1888 0 R 1889 0 R 1890 0 R 1891 0 R 1892 0 R 1893 0 R 1894 0 R 1895 0 R 1896 0 R 1897 0 R 1898 0 R 1899 0 R 1900 0 R 1901 0 R 1902 0 R 1903 0 R 1904 0 R 1905 0 R 1906 0 R 1907 0 R 1908 0 R 1909 0 R 1910 0 R 1911 0 R ] +>> endobj +1884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 628.184 191.711 637.16] +/A << /S /GoTo /D (section.1) >> +>> endobj +1885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 610.58 221.878 619.426] +/A << /S /GoTo /D (subsection.1.1) >> +>> endobj +1886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 590.898 324.252 601.802] +/A << /S /GoTo /D (subsection.1.2) >> +>> endobj +1887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 573.273 247.91 584.177] +/A << /S /GoTo /D (subsection.1.3) >> +>> endobj +1888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 557.706 236.682 566.553] +/A << /S /GoTo /D (subsection.1.4) >> +>> endobj +1889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 530.099 234.659 539.076] +/A << /S /GoTo /D (section.2) >> +>> endobj +1890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 512.375 221.878 521.342] +/A << /S /GoTo /D (subsection.2.1) >> +>> endobj +1891 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 494.871 230.186 503.717] +/A << /S /GoTo /D (subsection.2.2) >> +>> endobj +1892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 477.246 193.106 486.093] +/A << /S /GoTo /D (subsection.2.3) >> +>> endobj +1893 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 459.622 228.253 468.469] +/A << /S /GoTo /D (subsection.2.4) >> +>> endobj +1894 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 441.998 203.208 450.844] +/A << /S /GoTo /D (subsection.2.5) >> +>> endobj +1895 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 422.316 245.857 433.22] +/A << /S /GoTo /D (subsection.2.6) >> +>> endobj +1896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 406.749 219.975 415.595] +/A << /S /GoTo /D (subsection.2.7) >> +>> endobj +1897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 387.067 258.41 397.971] +/A << /S /GoTo /D (subsection.2.8) >> +>> endobj +1898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 371.38 211.676 380.347] +/A << /S /GoTo /D (subsection.2.9) >> +>> endobj +1899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 353.876 216.119 362.722] +/A << /S /GoTo /D (subsection.2.10) >> +>> endobj +1900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 336.251 204.731 345.098] +/A << /S /GoTo /D (subsection.2.11) >> +>> endobj +1901 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 316.943 304.457 327.474] +/A << /S /GoTo /D (subsection.2.12) >> +>> endobj +1902 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 298.945 224.358 309.849] +/A << /S /GoTo /D (subsection.2.13) >> +>> endobj +1903 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 271.493 296.178 282.372] +/A << /S /GoTo /D (section.3) >> +>> endobj +1904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 255.791 221.878 264.638] +/A << /S /GoTo /D (subsection.3.1) >> +>> endobj +1905 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 238.167 277.658 247.014] +/A << /S /GoTo /D (subsection.3.2) >> +>> endobj +1906 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 218.859 259.048 229.389] +/A << /S /GoTo /D (subsection.3.3) >> +>> endobj +1907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 200.861 264.218 211.765] +/A << /S /GoTo /D (subsection.3.4) >> +>> endobj +1908 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 173.408 223.581 184.287] +/A << /S /GoTo /D (section.4) >> +>> endobj +1909 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 157.707 240.268 166.553] +/A << /S /GoTo /D (subsection.4.1) >> +>> endobj +1910 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 140.082 242.072 148.929] +/A << /S /GoTo /D (subsection.4.2) >> +>> endobj +1911 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 122.458 238.206 131.305] +/A << /S /GoTo /D (subsection.4.3) >> +>> endobj +1916 0 obj << +/D [1914 0 R /XYZ 132.768 705.06 null] +>> endobj +1918 0 obj << +/D [1914 0 R /XYZ 133.768 646.752 null] +>> endobj +1913 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1950 0 obj << +/Length 1018 +/Filter /FlateDecode +>> +stream +xÚíšKs›HÇïúá;ïGn‰âxÊÊÞˆÔœ4Q(KŒPû bY ÇÆ¥ƒ%ç @<š_wÿ»g +àÍ=àÞă¿Þ!æÉH23Ä_=ˆqę𘤓ЋgÞµ?¼Åg£x„H‚ý4 ¾Äïgñàÿ47¼s!Œ$ Þt9¸þ¼™ùó½",…÷csêÒÃÄœ +« ÞxðïXkêås{ÇÎ>p×>"̵Èc”GÓÚ>‘ „€?þ¦Œ‘f#Rj•ëe½3VÓ2ÕÙÆh÷0ï:’ùQRŽhh½¬Ž"¸s¸ËÑŒ!äCÄ£`™N³´ü=0Øa¹±·ŠÚh[Ñ~?F`áÖ$(ïpû ÊÒ—F÷Ž8aÉ}*ÒlÞ¢µÙK³z|]j9Y¨¼Þê™jÛ@;,ò±X†÷ãÀŒm ‘ˆµêz 2B¼ñˆ +^SÜs³·I™ìB»Ê(|=ÏWBWÉ´Ã!@øÖ”=&ì–îÚ‚»Â@#hýx‘•¹ž­÷Öç¶ÏƱíT ²_×®éÒjì¥õæÔ$EÙ~š¤ð$ùÑžµ‰FØò—:oÄ$ÉfõÆGUæ© +õ¿7v¦tuí*(k°$Ï„@A¤7qYX<‚$âЯÍ{¿¶k‚‡I€€ÿ=€ÔWIYtÛ^y’òó¦òU†Ù*“l"(0÷ÃE:™¶¢,Ùm_VÛ +Ôqä’ ­qO¨;ìOÝéëêvú°¦î\d©ÒÇä¾i¢ƒ©^®Òʯmäè4ÐaÐ+9g?“åj¡\ÈתىB~Š‡ûN"YS¦® +µžéP¯Š–†è•ÊSÃ:ŠA9ZN‡èô¹Õà‹l‘fêžù¢¾™˜_§É+èÄÖ†;oÄö|8tb2)ÕReö |ZáÎz†;ßöõOì1D'\›°è)°¼Ø‹lµ.[*q¹.›ƒ—•bd³Ž`PL“ìÉ)êp¡'ÕÕMŒ_jëKHï|¥ûóõŸdšëYyéñ¼XïàskéCW +Ö“zëÝ:»g9˜’“Œµþìø.»Q²T¶úT¨Yÿ…ág w{ÉðÞYèÖË?¤ÙÍž¬C/@Ï~T ›¶›ü[¦5üaç{º߬Ӆ›Ò×Çt’'ùm§Ãƒ’â­AOh,ÅŸY|_÷¶óE4]¦q&¢3Ýä½Ê¢ÊÉN<þ „™få7{Éø±³k·Oõ¸÷+)"Žû|ãྴ`‘äXÜýÒBÈ3ës•UX'àÚ +xümmו]5#õÁ+„_AQï!ìÖ×Ê•:wY¸oÝmrko©ÞÎÕnÒ˜Wþƒåæ +endstream +endobj +1949 0 obj << +/Type /Page +/Contents 1950 0 R +/Resources 1948 0 R +/MediaBox [0 0 612 792] +/Parent 1883 0 R +/Annots [ 1912 0 R 1919 0 R 1920 0 R 1921 0 R 1922 0 R 1923 0 R 1924 0 R 1925 0 R 1926 0 R 1927 0 R 1928 0 R 1929 0 R 1930 0 R 1931 0 R 1932 0 R 1933 0 R 1934 0 R 1935 0 R 1936 0 R 1937 0 R 1938 0 R 1939 0 R 1940 0 R 1941 0 R 1942 0 R 1943 0 R 1944 0 R 1945 0 R 1946 0 R ] +>> endobj +1912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 654.082 255.352 664.986] +/A << /S /GoTo /D (subsection.4.4) >> +>> endobj +1919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 638.515 248.727 647.362] +/A << /S /GoTo /D (subsection.4.5) >> +>> endobj +1920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 620.891 249.832 629.737] +/A << /S /GoTo /D (subsection.4.6) >> +>> endobj +1921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 603.266 249.832 612.113] +/A << /S /GoTo /D (subsection.4.7) >> +>> endobj +1922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 583.585 311.54 594.489] +/A << /S /GoTo /D (subsection.4.8) >> +>> endobj +1923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 565.96 275.576 576.864] +/A << /S /GoTo /D (subsection.4.9) >> +>> endobj +1924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 538.508 248.866 549.387] +/A << /S /GoTo /D (section.5) >> +>> endobj +1925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 522.806 221.878 531.653] +/A << /S /GoTo /D (subsection.5.1) >> +>> endobj +1926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 505.182 239.86 514.029] +/A << /S /GoTo /D (subsection.5.2) >> +>> endobj +1927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 485.5 372.431 496.404] +/A << /S /GoTo /D (subsection.5.3) >> +>> endobj +1928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 467.876 381.856 478.78] +/A << /S /GoTo /D (subsection.5.4) >> +>> endobj +1929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 452.189 203.815 461.156] +/A << /S /GoTo /D (subsection.5.5) >> +>> endobj +1930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 422.799 289.762 433.678] +/A << /S /GoTo /D (section.6) >> +>> endobj +1931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 406.978 221.878 415.944] +/A << /S /GoTo /D (subsection.6.1) >> +>> endobj +1932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 387.416 260.572 398.32] +/A << /S /GoTo /D (subsection.6.2) >> +>> endobj +1933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 369.791 244.283 380.695] +/A << /S /GoTo /D (subsection.6.3) >> +>> endobj +1934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 352.167 274.998 363.071] +/A << /S /GoTo /D (subsection.6.4) >> +>> endobj +1935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 326.617 268.163 335.594] +/A << /S /GoTo /D (section.7) >> +>> endobj +1936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 309.013 253.986 317.86] +/A << /S /GoTo /D (subsection.7.1) >> +>> endobj +1937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 291.389 238.754 300.235] +/A << /S /GoTo /D (subsection.7.2) >> +>> endobj +1938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 271.707 281.364 282.611] +/A << /S /GoTo /D (subsection.7.3) >> +>> endobj +1939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 256.14 208.597 264.987] +/A << /S /GoTo /D (subsection.7.4) >> +>> endobj +1940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 238.516 247.601 247.362] +/A << /S /GoTo /D (subsection.7.5) >> +>> endobj +1941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 220.891 241.822 229.738] +/A << /S /GoTo /D (subsection.7.6) >> +>> endobj +1942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 203.267 311.251 212.113] +/A << /S /GoTo /D (subsection.7.7) >> +>> endobj +1943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 185.642 195.317 194.489] +/A << /S /GoTo /D (subsection.7.8) >> +>> endobj +1944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 156.133 249.802 167.012] +/A << /S /GoTo /D (section.8) >> +>> endobj +1945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 140.431 221.878 149.278] +/A << /S /GoTo /D (subsection.8.1) >> +>> endobj +1946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 122.687 263.611 131.653] +/A << /S /GoTo /D (subsection.8.2) >> +>> endobj +1951 0 obj << +/D [1949 0 R /XYZ 132.768 705.06 null] +>> endobj +1948 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +1982 0 obj << +/Length 1416 +/Filter /FlateDecode +>> +stream +xÚåZ]s›8}÷¯`²…éÀ"êK§qšn:ýLÜö¡íìÈF±µ1ÂÐ4ýõ+ä/QèþUx¹—j¥ªSº=b%Ÿ +}Luó‚%•WícØé~7ð|†wºÙZ5hFc²1ÜÅRµ>H c Zl@JF+.¦7A(Ñ}@¨/z(ì2è½+oé}‡îG‚kÜŠ4>ˆÇŽ“¥‰F•4˜ª›21™åT^”ÛsAŒXM¶c’Íh¡çh-g‚ €±Üm®s¶3ŠsÝÎùxbþ®Å¤â…(;ÏÇä¾ ö¤=  ï%­fׄA²ÏŒoñ ÔS¼ñ "Ÿ\…ácé©xQäºwòät3§=ñ@ŒÜ÷fôÙpØYb +1qú G‰íÒOAÍ좒EV·VÞž…xOl|‹£›º ZB5„§ÌÈò²b²Ô‰öÃ[rÅÆhÉF&e½¨4÷ϘüÊ'LwN‹Z¹+uï“ +T'g§¥jA'‘¤èNãƒûS-^y+%ŸlA²í¸ì%±pb! Üñœ–&§½÷€’Tr:žw¡KÜg×Lú#ˆ5‚¯ +៲ª–b™ÇrÊEㇻ|$÷^@¥ýÝ4ÑX½(&K”~˜b°Ÿ/@ÿgÀþ¤0ºêÃŒoà†Ðt>7ÌìÐ߇ï—B«(«ú¼Ï”´èX…¬.qt7ãHÔ-£¬†ÔûM(©KãÇ Q„-Ë)QSNéÀCR|boÔßÍRÙÙ¬¨çÙ2™®¡Ç¯8·IuƒyùU7ô”]~EÑ]A'îÏ(býÏC®yÜÌÄ ²È "ûcn@«xÎd7â–«kš3Ê­WIµódÙãn…ýÂó¢þlÐåÈÍ kxÛ›LbùÃfç^s²œ¨Ì[Qaƒ–}ùfÛ2·JÉ°\åµÇݲ"¸5»ãþv×ÛŠ•ÝCÒŠM}¤£F˜ºo†z@R‘ùÜœøO/ôU"±ÍÓêørÆ„¾ªy_4g¾¢Åb¡7€í=Õ¹ÓYWnÛXg[êß \›âñWÙüúÓlÜ bÞ[9‰ûÉÉ5*Ãk©¬ÜΊÈ5K–«@&m1„VPÝíøw£½§ä'H]‹ÐBá± ÐÉkóO!+ ÙF> endobj +1947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 654.082 271.979 664.986] +/A << /S /GoTo /D (subsection.8.3) >> +>> endobj +1952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 246.216 647.362] +/A << /S /GoTo /D (subsection.8.4) >> +>> endobj +1953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 618.834 235.706 629.737] +/A << /S /GoTo /D (subsection.8.5) >> +>> endobj +1954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 593.284 203.397 602.26] +/A << /S /GoTo /D (section.9) >> +>> endobj +1955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 575.56 267.277 584.526] +/A << /S /GoTo /D (subsection.9.1) >> +>> endobj +1956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 557.935 235.715 566.902] +/A << /S /GoTo /D (subsection.9.2) >> +>> endobj +1957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 528.545 286.505 539.424] +/A << /S /GoTo /D (section.10) >> +>> endobj +1958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 512.844 221.878 521.69] +/A << /S /GoTo /D (subsection.10.1) >> +>> endobj +1959 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 493.162 209.554 504.066] +/A << /S /GoTo /D (subsection.10.2) >> +>> endobj +1960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 475.538 306.27 486.442] +/A << /S /GoTo /D (subsection.10.3) >> +>> endobj +1961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 459.971 243.745 468.817] +/A << /S /GoTo /D (subsection.10.4) >> +>> endobj +1962 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 442.346 233.772 451.193] +/A << /S /GoTo /D (subsection.10.5) >> +>> endobj +1963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 422.665 261.997 433.568] +/A << /S /GoTo /D (subsection.10.6) >> +>> endobj +1964 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 405.04 245.25 415.944] +/A << /S /GoTo /D (subsection.10.7) >> +>> endobj +1965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 377.588 270.096 388.467] +/A << /S /GoTo /D (section.11) >> +>> endobj +1966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 360.202 216.289 370.733] +/A << /S /GoTo /D (subsection.11.1) >> +>> endobj +1967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 342.204 478.476 353.108] +/A << /S /GoTo /D (subsection.11.2) >> +>> endobj +1984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 332.307 200.847 341.153] +/A << /S /GoTo /D (subsection.11.2) >> +>> endobj +1968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 312.625 397.667 323.529] +/A << /S /GoTo /D (subsection.11.3) >> +>> endobj +1969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 295.001 369.522 305.904] +/A << /S /GoTo /D (subsection.11.4) >> +>> endobj +1970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 277.376 347.814 288.28] +/A << /S /GoTo /D (subsection.11.5) >> +>> endobj +1971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 260.125 310.175 270.656] +/A << /S /GoTo /D (subsection.11.6) >> +>> endobj +1972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 244.185 284.343 253.031] +/A << /S /GoTo /D (subsection.11.7) >> +>> endobj +1973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 224.503 325.218 235.407] +/A << /S /GoTo /D (subsection.11.8) >> +>> endobj +1974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 206.879 409.282 217.783] +/A << /S /GoTo /D (subsection.11.9) >> +>> endobj +1975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 191.312 393.781 200.158] +/A << /S /GoTo /D (subsection.11.10) >> +>> endobj +1976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 171.63 478.476 182.534] +/A << /S /GoTo /D (subsection.11.11) >> +>> endobj +1985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 159.675 269.339 170.579] +/A << /S /GoTo /D (subsection.11.11) >> +>> endobj +1977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 142.05 349.04 152.954] +/A << /S /GoTo /D (subsection.11.12) >> +>> endobj +1978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 124.426 390.384 135.33] +/A << /S /GoTo /D (subsection.11.13) >> +>> endobj +1983 0 obj << +/D [1981 0 R /XYZ 132.768 705.06 null] +>> endobj +1980 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2016 0 obj << +/Length 1632 +/Filter /FlateDecode +>> +stream +xÚåZ[sÓ8~ϯ0}²gˆW_yah , ÐÝ6ì2<(±’h°­ ;½üû•,ɉãdh-”éŒdÙ–Ïùôï©ÎÌÎËÁñhðÇ 9©ŸF²Mˆ±G‰¥¡¥ÐeÎG÷äìÝèù»Ñ…7D ÂÐeî¥÷yôzð|4ø:€r2àÀµ—¡Ÿ‚ЙƒŸ“É›¯àã4q®šG òQ¨^Ì‹Áß`,Ò‰™™ñÜÚÖm ù.r¢0öµú0ð†!pÿ“ZZ*{‚z0tg¬ª©¨ô‘cMgYÑL÷Æ7º­çæÖ‰n&¼X°œŠ§£Ö@çã0R×WŸwÔl|ªÑv†û8Évc?BÁ +°äOî¡Ð½Ò^e\·¯t³X¬Hiħº­jÁÊYµB%§5ÍÍC̼wîÀ={Û+„ÉF€DÔG¢æ-t§a˵äJIrãÔ³¾CAŠîvõï‚<Ám![‹¦ØD›Ì5Ã3Ý~“YÄ>R(ø¥‘º=|áŒK¾{‚æ|Bjj+£]LI 7ºVÔ´‚E²LЪÚÂÌðaA”6½•J‚ƒÐ}¯äÙ¹w¤F—UúÎŒ–TZŠ¾.yYQù÷H¾ŸíÏ<¡;*´ê{¡K JôL_TÆ¢ta&œRÍåt”ÑB~ +ižÌZa¤Íû‹ #Œ/ŒÎíп±àzòòÑ&0q= ŽGßZÀa‹Sw0B!¿éäFH sãhʹïûc"Ž¶äj÷r±‘’/¶)q÷BŸÅvÜÇrÑ3N+ÝkP¦˜ð +뉵ÜÜUÉWµÉpÌjÝ勆ò¼´‘æF¨”ÖL.Ÿ½b2yíâ°ž‚ÛÒ‡•Â#ý¹&ׯ>·žÕIUÑbœßô°`zŸäL&'Úø3Æ“ºÍô†©´àâÆÖDFq/ÕÛD02Î !¹Ò˜ËF•EN ]‚ËŠ-ʧwâõ6âÆßWvÍÛJX†¢­ØŠ¯*ÖºbáÖÏ)6"ψª_åì͇]‚œô|Å(þÑ«Ÿî_½ Í½€Õïzn{G™~¿Ò¾ž«rÐìÈÒ¢ª*2£[!¾Ï@H DØÓçvô „  zie¶JA…X.êõzÏ濜ʷ7¶NW‚é켦.9Ÿ±‰-¤a_¼ƒäÎzŽÏ‰‡€‰[ÃCû¢]ê©VØN´:©• _šqÐó+Á}!ÄD¯¢—ÁC÷Ÿóaµ ¦ +ÍIG÷U²ZeÞÛD4$,Wâ¸Eù~‚ËkHvs¿eye5rHKåDÖ•¸–˲Vÿ§[˜ß>YÕÄ*Ë‚7ßyºaûJ?ì&ð€ÅLw{&íX8@j}Ö)Ÿ±©šÊ‡JC뜕ZÍ‚WÁ$0ýÝ<þy[Œä€ v§¹ê– +£+ð%m”Âß}w/¾¬˺JའsÀ‰†ß>¢bÊEÑ©âÓúJyÞ’MnEiÝ Šõâ¡Ñ—01Žï¼`a]1* ”®º]V:ÊeW¥Cnv£êº‰pÝ-H=—a€V)‡›ŠC¶Ù1Åf¯23^É×Ý1›=íÌÔ«òÉz³±¾ÉZ$”ܬL³d\|é§a<ÔS™$8tS€ñFq¸`õ´!užWëg¬²øÍi¹Eð• +*ˆUQ|?†ð—@cã ? $6(öÃ$6Ø ý‰ã%˳UAg·A¯J™Øò¼Ÿï^¾{¯;#/E.ç¦ê;™™D7­Å0@n›ñ-fvÏúµ• E¾¯ðÖv.ËÌ +õV.¯›“¹|ǧ7Þ>Sé³ê)J¿cqâ}ùH»xN¿.Y[p¼(|{æ%8zxg­·Ç/Ù?¬ñ;[¨S »Ù‰ +Ño‚ßqi†±ðc@5³2)ëƒ)ß áÁÄÉ +¡wXi¨Òý¨NN¾ÃNµì_¤ñë‚ô†'½3—þ^Áz <áþ¡wñ<}ú¼‡dÿ!ÔíÖ_0¤‰ã}~¿`IùiŒ“õ_R$©#³(/õ?²l6·§í£ùRwN©9 ̱x‚ðõ¯Du…0½fÿnÕ…4û{áÉ-Õ0WÑÒ9š;å×73ڭ¤ËÿWæ +endstream +endobj +2015 0 obj << +/Type /Page +/Contents 2016 0 R +/Resources 2014 0 R +/MediaBox [0 0 612 792] +/Parent 1883 0 R +/Annots [ 1979 0 R 1986 0 R 1987 0 R 1988 0 R 1989 0 R 1990 0 R 2018 0 R 1991 0 R 1992 0 R 2019 0 R 1993 0 R 1994 0 R 1995 0 R 1996 0 R 1997 0 R 1998 0 R 1999 0 R 2000 0 R 2001 0 R 2002 0 R 2003 0 R 2020 0 R 2004 0 R 2005 0 R 2006 0 R 2007 0 R 2008 0 R 2009 0 R 2010 0 R 2011 0 R 2012 0 R ] +>> endobj +1979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 654.082 344.287 664.986] +/A << /S /GoTo /D (subsection.11.14) >> +>> endobj +1986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 386.14 647.362] +/A << /S /GoTo /D (subsection.11.15) >> +>> endobj +1987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 620.891 281.792 629.737] +/A << /S /GoTo /D (subsection.11.16) >> +>> endobj +1988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 601.209 260.054 612.113] +/A << /S /GoTo /D (subsection.11.17) >> +>> endobj +1989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 585.642 341.538 594.489] +/A << /S /GoTo /D (subsection.11.18) >> +>> endobj +1990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 565.96 478.476 576.864] +/A << /S /GoTo /D (subsection.11.19) >> +>> endobj +2018 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 554.005 286.534 564.909] +/A << /S /GoTo /D (subsection.11.19) >> +>> endobj +1991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 536.381 381.597 547.285] +/A << /S /GoTo /D (subsection.11.20) >> +>> endobj +1992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 518.757 478.476 529.66] +/A << /S /GoTo /D (subsection.11.21) >> +>> endobj +2019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 506.801 355.246 517.705] +/A << /S /GoTo /D (subsection.11.21) >> +>> endobj +1993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 489.177 416.416 500.081] +/A << /S /GoTo /D (subsection.11.22) >> +>> endobj +1994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 471.553 388.042 482.457] +/A << /S /GoTo /D (subsection.11.23) >> +>> endobj +1995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 453.928 355.265 464.832] +/A << /S /GoTo /D (subsection.11.24) >> +>> endobj +1996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 436.304 419.216 447.208] +/A << /S /GoTo /D (subsection.11.25) >> +>> endobj +1997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 418.68 360.776 429.583] +/A << /S /GoTo /D (subsection.11.26) >> +>> endobj +1998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 401.055 394.09 411.959] +/A << /S /GoTo /D (subsection.11.27) >> +>> endobj +1999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 383.431 461.705 394.335] +/A << /S /GoTo /D (subsection.11.28) >> +>> endobj +2000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 365.806 341.139 376.71] +/A << /S /GoTo /D (subsection.11.29) >> +>> endobj +2001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 348.182 366.086 359.086] +/A << /S /GoTo /D (subsection.11.30) >> +>> endobj +2002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 330.558 361.543 341.462] +/A << /S /GoTo /D (subsection.11.31) >> +>> endobj +2003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 312.933 478.476 323.837] +/A << /S /GoTo /D (subsection.11.32) >> +>> endobj +2020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 300.978 269.917 311.882] +/A << /S /GoTo /D (subsection.11.32) >> +>> endobj +2004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 283.354 364.391 294.258] +/A << /S /GoTo /D (subsection.11.33) >> +>> endobj +2005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 255.901 337.582 266.78] +/A << /S /GoTo /D (section.12) >> +>> endobj +2006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 238.142 406.454 249.046] +/A << /S /GoTo /D (subsection.12.1) >> +>> endobj +2007 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 220.518 233.534 231.422] +/A << /S /GoTo /D (subsection.12.2) >> +>> endobj +2008 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 202.894 231.88 213.798] +/A << /S /GoTo /D (subsection.12.3) >> +>> endobj +2009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 185.269 304.198 196.173] +/A << /S /GoTo /D (subsection.12.4) >> +>> endobj +2010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 167.645 269.05 178.549] +/A << /S /GoTo /D (subsection.12.5) >> +>> endobj +2011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 151.958 213.061 160.924] +/A << /S /GoTo /D (subsection.12.6) >> +>> endobj +2012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 134.334 219.975 143.3] +/A << /S /GoTo /D (subsection.12.7) >> +>> endobj +2017 0 obj << +/D [2015 0 R /XYZ 132.768 705.06 null] +>> endobj +2014 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2050 0 obj << +/Length 1114 +/Filter /FlateDecode +>> +stream +xÚíYËv›HÝë+XÂBL¿ÙÅñIÎØÉHÊÌÂÉCqÌCÉŽÿ~5` DôHr$çÌÆ ÆTWݾ·ªºVhëjp6üñ'b–t%ӗɽ1v9“ÔeZ“ÀºµÏ?ÜL.o&cgˆ‘Ò~t¾LÞ.'ƒ¯¨í ®¼] ¨å'ƒÛ/À +ôÃ÷p±ÖÓò_ ý¯°|1¶Æƒ¿ rÆÊÃÊâ¨v¬ºG„~YŒraj܃ÈÎR`_]œiõÍ}–››ùT™›·ÄÔþgT {¹…ªù2”Úëv(³]m €“¾´¼†å¨DkÃ]<õu¹Ëi€“¸q”,⢖qŒÉk€äØPBPZ¬‰æ@moôîü²=à8ûà|‘4„K8ÏQDiht륹y—s/Ž›‹4P•äÿu°£4ÈDí§¢#pŒŽ>€]h ÇÄÑìɲ¸0±ŽÔ×E”« •õÖAkr`ý²?õ¢´õÊÔGo Ãψ‹2qbRá[Ðiì!$®$Ä"îRÁ+Ä°™âSÑëêæS5²¤Q{× ¨»aöõzl&_Ó.v¡©*fó(K‹¾’|n.~–Ì¢¸V¯ç `?æåßaèûmÿ£'—á(ÛÊj¤«-$-jk¬J´¸6qíùÓ(UÃb¦üè3È7ˆdßG±¯jSJN+~Ð¥‰‹Lèc+^§±P¥*÷âM쨱h¹À˜<âÊ‹m‘{–í$¯(Tr·Q ^ Nð©6,y LÐ6™´`:SŒº+T‹ãò›—ÌbÕæGO¼Ë³òaPó(ÏátKî]wï…NºhêFöP‚cCðó,çÙJ·Ö¸¡‡ìM䎃NëFèëèy—‹¾¶>Ôjª¯§Å6V= §’üèt%kI|t -Ъ#™w]¹ž—ÐdÖ2¡u“¹æŒÙv«¼Ð«¿Ñ½±?U‰êîȩɃí•<è *Mò˜{º:taé& Ê^ññÂŽh.}êdr¡–’)SŠŠ³Y¢Òù¨q ~d6×nZ7§F^~ÖQÿŠîün‘æ¯ÿÐêÇ4Øôªç¹òæ/©±*:U]ºË½ÔŸvN[OŽXßňﯼ¦³½öÚàäU6?Òï—@$~FÉgfŽ·þCš•ÎS¬‚°ÌUÝ#ÌxY]å®UÓG"[WìZÚEçÛâ„ê~]- cùB™&Dù^ÓÍn´O8$+ö̓ߙ¤p9Þç+Sý©‹¹’c±ú©KH³J¼WË£‡Æɺ‰˜LææBU»Mb.¼AøMgù PÝÝ—%%Ë×Z2s½©)3¦Qÿse2ûöª´òfÏü +endstream +endobj +2049 0 obj << +/Type /Page +/Contents 2050 0 R +/Resources 2048 0 R +/MediaBox [0 0 612 792] +/Parent 1883 0 R +/Annots [ 2013 0 R 2021 0 R 2022 0 R 2023 0 R 2024 0 R 2025 0 R 2026 0 R 2027 0 R 2028 0 R 2029 0 R 2030 0 R 2031 0 R 2032 0 R 2033 0 R 2034 0 R 2035 0 R 2036 0 R 2037 0 R 2038 0 R 2039 0 R 2040 0 R 2041 0 R 2042 0 R 2043 0 R 2044 0 R 2045 0 R 2046 0 R ] +>> endobj +2013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 654.082 269.598 664.986] +/A << /S /GoTo /D (subsection.12.8) >> +>> endobj +2021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 638.396 216.119 647.362] +/A << /S /GoTo /D (subsection.12.9) >> +>> endobj +2022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 620.771 211.676 629.737] +/A << /S /GoTo /D (subsection.12.10) >> +>> endobj +2023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 601.209 329.712 612.113] +/A << /S /GoTo /D (subsection.12.11) >> +>> endobj +2024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 583.585 395.904 594.489] +/A << /S /GoTo /D (subsection.12.12) >> +>> endobj +2025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 565.96 318.395 576.864] +/A << /S /GoTo /D (subsection.12.13) >> +>> endobj +2026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 538.508 236.881 549.387] +/A << /S /GoTo /D (section.13) >> +>> endobj +2027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 520.749 311.949 531.653] +/A << /S /GoTo /D (subsection.13.1) >> +>> endobj +2028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 503.125 355.894 514.029] +/A << /S /GoTo /D (subsubsection.13.1.1) >> +>> endobj +2029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 485.5 339.804 496.404] +/A << /S /GoTo /D (subsubsection.13.1.2) >> +>> endobj +2030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 467.876 301.707 478.78] +/A << /S /GoTo /D (subsection.13.2) >> +>> endobj +2031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 450.252 347.276 461.156] +/A << /S /GoTo /D (subsubsection.13.2.1) >> +>> endobj +2032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 432.627 456.306 443.531] +/A << /S /GoTo /D (subsubsection.13.2.2) >> +>> endobj +2033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 415.003 284.751 425.907] +/A << /S /GoTo /D (subsection.13.3) >> +>> endobj +2034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 397.378 295.72 408.282] +/A << /S /GoTo /D (subsubsection.13.3.1) >> +>> endobj +2035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 379.754 375.829 390.658] +/A << /S /GoTo /D (subsubsection.13.3.2) >> +>> endobj +2036 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 352.302 267.446 363.181] +/A << /S /GoTo /D (section.14) >> +>> endobj +2037 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 324.715 309.936 335.594] +/A << /S /GoTo /D (section.15) >> +>> endobj +2038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 306.956 318.434 317.86] +/A << /S /GoTo /D (subsection.15.1) >> +>> endobj +2039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 291.389 266.211 300.235] +/A << /S /GoTo /D (subsubsection.15.1.1) >> +>> endobj +2040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 271.707 294.584 282.611] +/A << /S /GoTo /D (subsubsection.15.1.2) >> +>> endobj +2041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 254.083 254.843 264.987] +/A << /S /GoTo /D (subsection.15.2) >> +>> endobj +2042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 236.458 291.098 247.362] +/A << /S /GoTo /D (subsubsection.15.2.1) >> +>> endobj +2043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 218.834 272.557 229.738] +/A << /S /GoTo /D (subsubsection.15.2.2) >> +>> endobj +2044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 191.381 227.646 202.26] +/A << /S /GoTo /D (section.16) >> +>> endobj +2045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 165.697 190.037 174.673] +/A << /S /GoTo /D (section.17) >> +>> endobj +2046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 136.207 217.314 147.086] +/A << /S /GoTo /D (section.18) >> +>> endobj +2051 0 obj << +/D [2049 0 R /XYZ 132.768 705.06 null] +>> endobj +2048 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2083 0 obj << +/Length 993 +/Filter /FlateDecode +>> +stream +xÚåšKsÛ6Çïú8R"x?<δ±I¦q¦µnn Kl%R%!7þöb¬ˆ´%JžIÄžø´ î¿]€"3€À»Ñ¯“Ñ›k"€†Z¸Ãä`J¡ +Í¡ÐL¦à.zûéfru3¹ÇD‚£‡lüyòat5ý3ÂÎxë‡jÄAºÝ}F`ê?©VàßM×% ÌuÅõàvôû5£ñ†ÊYcñÇÇ%$”ûña=Ž9BÑÇbº^7JŽ¢÷ùÔ|Ý 3˜w®a‚›†]ÎÚvÆ f ÄXBAXð±óƃ·j×sMÐgÀ‡‡ÆÈÝ}Šësz ¹’>Ày—‰M¼”·¶\§v]Ž±Š^T—0¤Ü(èñêÔm»oK-¹´œô5äÄÞÇuö2™kv¤v> endobj +2047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 656.12 209.215 665.096] +/A << /S /GoTo /D (section.19) >> +>> endobj +2052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 638.396 207.492 647.362] +/A << /S /GoTo /D (subsection.19.1) >> +>> endobj +2053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 610.908 240.288 619.884] +/A << /S /GoTo /D (section.20) >> +>> endobj +2054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 593.304 234.32 602.15] +/A << /S /GoTo /D (subsection.20.1) >> +>> endobj +2055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 565.697 192.607 574.673] +/A << /S /GoTo /D (section.21) >> +>> endobj +2056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 548.092 206.116 556.939] +/A << /S /GoTo /D (subsection.21.1) >> +>> endobj +2057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 520.485 250.161 529.462] +/A << /S /GoTo /D (section.22) >> +>> endobj +2058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 500.824 331.481 511.728] +/A << /S /GoTo /D (subsection.22.1) >> +>> endobj +2059 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 483.199 287.232 494.103] +/A << /S /GoTo /D (subsubsection.22.1.1) >> +>> endobj +2060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 467.632 303.85 476.479] +/A << /S /GoTo /D (subsubsection.22.1.2) >> +>> endobj +2061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 447.951 271.177 458.855] +/A << /S /GoTo /D (subsection.22.2) >> +>> endobj +2062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 430.326 287.232 441.23] +/A << /S /GoTo /D (subsubsection.22.2.1) >> +>> endobj +2063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 414.759 294.983 423.606] +/A << /S /GoTo /D (subsubsection.22.2.2) >> +>> endobj +2064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 395.078 307.959 405.981] +/A << /S /GoTo /D (subsection.22.3) >> +>> endobj +2065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 377.453 287.232 388.357] +/A << /S /GoTo /D (subsubsection.22.3.1) >> +>> endobj +2066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 361.766 303.85 370.733] +/A << /S /GoTo /D (subsubsection.22.3.2) >> +>> endobj +2067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 342.204 279.198 353.108] +/A << /S /GoTo /D (subsection.22.4) >> +>> endobj +2068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 324.58 287.232 335.484] +/A << /S /GoTo /D (subsubsection.22.4.1) >> +>> endobj +2069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 309.013 294.983 317.86] +/A << /S /GoTo /D (subsubsection.22.4.2) >> +>> endobj +2070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 289.331 332.767 300.235] +/A << /S /GoTo /D (subsection.22.5) >> +>> endobj +2071 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 271.707 287.232 282.611] +/A << /S /GoTo /D (subsubsection.22.5.1) >> +>> endobj +2072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 256.14 294.983 264.987] +/A << /S /GoTo /D (subsubsection.22.5.2) >> +>> endobj +2073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 236.458 300.821 247.362] +/A << /S /GoTo /D (subsubsection.22.5.3) >> +>> endobj +2074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 220.601 272.841 229.738] +/A << /S /GoTo /D (subsection.22.6) >> +>> endobj +2075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 201.209 287.232 212.113] +/A << /S /GoTo /D (subsubsection.22.6.1) >> +>> endobj +2076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 185.642 294.983 194.489] +/A << /S /GoTo /D (subsubsection.22.6.2) >> +>> endobj +2077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 168.018 303.85 176.865] +/A << /S /GoTo /D (subsubsection.22.6.3) >> +>> endobj +2078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 148.336 288.064 159.24] +/A << /S /GoTo /D (subsection.22.7) >> +>> endobj +2079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 130.712 287.232 141.616] +/A << /S /GoTo /D (subsubsection.22.7.1) >> +>> endobj +2084 0 obj << +/D [2082 0 R /XYZ 132.768 705.06 null] +>> endobj +2081 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2120 0 obj << +/Length 1043 +/Filter /FlateDecode +>> +stream +xÚÝZËr£FÝë+z Úý~¸R©ÊÄöÔLUƉMfã̉¶L• +BÎøïÓ¸a"QMdVÔ\µÎésî½ ,ïgïÂÙÙ@C-ì!¼˜R(…Bs(4a ¯?…—ŸÂ[? R3ê=%‰ÿ%ü8» gΰ„Þ¹C8X<Îî¾ Û/?©Vௗ¡€2;—7®Àíì·ª¦ãåË*âM=A´;A‰aùQp ån‚„@{æ!ïj›.Š$Kíd9ò.²ÅöѤEôr©œtýcà.àDyи½ëÿ>¼šFö*ædïzØ®1–ö UÞxve1þ¹j(rƒ~p#ö°•P2]Øq’ð¡-’†øãHªpî#ﶈÒ8ÊcĠ´0>æÞÒäîBè+ä=¯Íæ5ŠÉSâ[^h'/ŒCŒE“ˆÝ*½0E”¬LÆ…Ù,òdݶF…§²Fû¬ØNdP… ßÁ„Ô˜üIMå +¡Þ²/»K„:8jAÄæ¾"Š’“†BŒö2}/ËÚ­L@Å:­Lÿ»•]»ã½o¿ŠÉ*)’¦Q,O— kj‚w›”Ɇ€õÄM­™¦ŠõtMM¢á¯kS›Pu&G;FG±´U2÷™Þ¡¶öÞ¤&VŽ›mqÀÈ$’oE¼ÖÖTZÙnDµ°Tú™®¯©Åš…Ô LÍØÔŸ·xP‡Ç´Ê5%FaÁrùþ@쉄; >ûc/Ê“h¾ê£ÉO{Yh6:çácä¼áÞS²0ÁfmIIàbÿYuìXMJÊçX|Ͳ× ܱõµ2­ ÕÊêwÛ„m©Ú}·M•­"Õ=ò*jÍ×Eø°­M Ž¹Fç„žcåά>Týìß"žU]uôîSé«d^E˜?×úú¼4ûâ±ùoS'4q +endstream +endobj +2119 0 obj << +/Type /Page +/Contents 2120 0 R +/Resources 2118 0 R +/MediaBox [0 0 612 792] +/Parent 2086 0 R +/Annots [ 2080 0 R 2087 0 R 2088 0 R 2089 0 R 2090 0 R 2091 0 R 2092 0 R 2093 0 R 2094 0 R 2095 0 R 2096 0 R 2097 0 R 2098 0 R 2099 0 R 2100 0 R 2101 0 R 2102 0 R 2103 0 R 2104 0 R 2105 0 R 2106 0 R 2107 0 R 2108 0 R 2109 0 R 2110 0 R 2111 0 R 2112 0 R 2113 0 R 2114 0 R 2115 0 R 2116 0 R ] +>> endobj +2080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 656.14 303.85 664.986] +/A << /S /GoTo /D (subsubsection.22.7.2) >> +>> endobj +2087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 315.611 647.362] +/A << /S /GoTo /D (subsection.22.8) >> +>> endobj +2088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 618.834 287.232 629.737] +/A << /S /GoTo /D (subsubsection.22.8.1) >> +>> endobj +2089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 603.266 294.983 612.113] +/A << /S /GoTo /D (subsubsection.22.8.2) >> +>> endobj +2090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 583.585 300.821 594.489] +/A << /S /GoTo /D (subsubsection.22.8.3) >> +>> endobj +2091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 567.728 305.947 576.864] +/A << /S /GoTo /D (subsection.22.9) >> +>> endobj +2092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 548.336 287.232 559.24] +/A << /S /GoTo /D (subsubsection.22.9.1) >> +>> endobj +2093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 532.649 294.983 541.616] +/A << /S /GoTo /D (subsubsection.22.9.2) >> +>> endobj +2094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 515.025 303.85 523.991] +/A << /S /GoTo /D (subsubsection.22.9.3) >> +>> endobj +2095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 497.23 287.117 506.367] +/A << /S /GoTo /D (subsection.22.10) >> +>> endobj +2096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 477.839 287.232 488.743] +/A << /S /GoTo /D (subsubsection.22.10.1) >> +>> endobj +2097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 462.272 294.983 471.118] +/A << /S /GoTo /D (subsubsection.22.10.2) >> +>> endobj +2098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 442.59 300.821 453.494] +/A << /S /GoTo /D (subsubsection.22.10.3) >> +>> endobj +2099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 427.023 303.85 435.869] +/A << /S /GoTo /D (subsubsection.22.10.4) >> +>> endobj +2100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 409.279 301.618 418.245] +/A << /S /GoTo /D (subsubsection.22.10.5) >> +>> endobj +2101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 389.717 252.378 400.621] +/A << /S /GoTo /D (subsection.22.11) >> +>> endobj +2102 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 372.092 287.232 382.996] +/A << /S /GoTo /D (subsubsection.22.11.1) >> +>> endobj +2103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 356.406 294.983 365.372] +/A << /S /GoTo /D (subsubsection.22.11.2) >> +>> endobj +2104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 338.781 303.85 347.748] +/A << /S /GoTo /D (subsubsection.22.11.3) >> +>> endobj +2105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 319.219 347.371 330.123] +/A << /S /GoTo /D (subsection.22.12) >> +>> endobj +2106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 301.595 287.232 312.499] +/A << /S /GoTo /D (subsubsection.22.12.1) >> +>> endobj +2107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 285.908 294.983 294.874] +/A << /S /GoTo /D (subsubsection.22.12.2) >> +>> endobj +2108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 266.346 323.99 277.25] +/A << /S /GoTo /D (subsection.22.13) >> +>> endobj +2109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 248.722 287.232 259.626] +/A << /S /GoTo /D (subsubsection.22.13.1) >> +>> endobj +2110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 233.155 294.983 242.001] +/A << /S /GoTo /D (subsubsection.22.13.2) >> +>> endobj +2111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 215.53 303.85 224.377] +/A << /S /GoTo /D (subsubsection.22.13.3) >> +>> endobj +2112 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 195.849 286.201 206.753] +/A << /S /GoTo /D (subsection.22.14) >> +>> endobj +2113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 178.224 289.788 189.128] +/A << /S /GoTo /D (subsection.22.15) >> +>> endobj +2114 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 160.6 287.232 171.504] +/A << /S /GoTo /D (subsubsection.22.15.1) >> +>> endobj +2115 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 145.033 294.983 153.88] +/A << /S /GoTo /D (subsubsection.22.15.2) >> +>> endobj +2116 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 125.351 363.74 136.255] +/A << /S /GoTo /D (subsection.22.16) >> +>> endobj +2121 0 obj << +/D [2119 0 R /XYZ 132.768 705.06 null] +>> endobj +2118 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2155 0 obj << +/Length 1230 +/Filter /FlateDecode +>> +stream +xÚÝZÝs£6÷_Á#ߌ¯nÆwÞ ΙûE‘÷eüip5ü3@FtÐÆ«(Èœ`6¸ÿÐüùÉ€(é<¯Eg¡F/ÆÎÝà÷¬úS*ʦ•Æ[ÛC¸ÙC*Í»ØáLLXÙCŒE—ήÚaó\!j”­¥~*%¶Ô ¨²¾‡¡û”Åið7xlÐGL[éŸÛÔ{C‚ û‹Ñöå=Ý»å|žfù>;lçÞ‹\à „§rÙé ‚¹˜Ò­çu{9C!!Ø"8¦/æ‘Ç3Ï|:[Ìý@7šˆcÀ÷u´ÑoY:ÍüYe£ByÙü#â(ôbÅÅ^ì<‚¤x€ÌXŒêKûQ¬Ãrd—zdÑ<Òd÷“\ñsÆW¡û@+PØ&(Ø‚ò„8©Ì}™Ë™Nr¿.ÿx¨}ñØrRâ1ö$tWsêÉH‚O †‚–X\/“`=êv –§ DûÄ]MÆ5ª¨#NÜ©‡™û¬31·qö¦HN;ÏÞßõ®-u«Ãå†á~õª ÓíbCÕ™½9lE_2`’«š3bX(v?„aT ÈË!%inBÒº9ÉÒY@aw-&ÙWÃýE£u’m[çû vÓ4°´’ïíýœ´â¤25÷ÇèxîßÛ=<ÿn®ƒÈzÅdk¾Ê´‡˜;¹Îjé }—ô‘³ö,ÆT +¬ž>bÔó,¦ØJo³Î X‘±±Öóæ@eæ7"Þ¨6"ÓúÞO*·¾+¾[ɤa½ú X›í3•·©¸knˆûÎMq7±åf²H.&%9)ŸŠ¸fbš°9’" hç€J{ñ;Œ£‡ 4×Æ·Ê3?ÈÒdï·(³‡U¸”Ö×0é;se÷µJ£ªêFà W¡Ç#ðs˜7¯®i(»÷ÏbÅÂσÇ0––Ê£™°&¤ÆQ2­Ù‹¼ÿbªh¯ +™ñEØPÒžó¶šÞÒþòV ƒyËÞÎÛeÅg~žÎ¢ 9àBÀ_¤›x‹ @Y‰kU~¯Œ…¯Ò^Ó¸I“áîŸWßÖ!8X溒™Œ¸h ÷¢Ø¨Yì@ó’MÀµ¯{q ¨R ÀõcôŽ±sŒÌ1~$ŽY€xs¹ÉgCãèvTÚg”ÎæËÒ:µÜ•£SÛeí¥(G1^÷OÞwÒRŠò–¢BÌVq$¶†:öWm'ƒÊIcå.c%¨-;“H'v#Ú®íÚUÿ´JpŠœz¹X Ÿ½¢ˆµÇ ʾ­›qšÎk¤Ç +ïÇEÙžy°bHu*ŠžS±™*ŠRQžœÊcRñ냿x%C°îÛŠ…¾7ÑL0úÅH‰Û·9€׉Ù÷!5hÊkãa5U,iw9ªfÌq ‘›G椄W0Ô‰ÎüÜBki>~\Z¬+¿¢åÁsLΑ,ïŒmªÖ¤Ø.°S½_Ü> endobj +2117 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 654.082 298.934 664.986] +/A << /S /GoTo /D (subsection.22.17) >> +>> endobj +2122 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 351.774 647.362] +/A << /S /GoTo /D (subsection.22.18) >> +>> endobj +2123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 618.834 287.232 629.737] +/A << /S /GoTo /D (subsubsection.22.18.1) >> +>> endobj +2124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 603.147 294.983 612.113] +/A << /S /GoTo /D (subsubsection.22.18.2) >> +>> endobj +2125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 583.585 300.821 594.489] +/A << /S /GoTo /D (subsubsection.22.18.3) >> +>> endobj +2126 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 568.018 303.85 576.864] +/A << /S /GoTo /D (subsubsection.22.18.4) >> +>> endobj +2127 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 548.336 363.999 559.24] +/A << /S /GoTo /D (subsection.22.19) >> +>> endobj +2128 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 531.688 333.464 541.616] +/A << /S /GoTo /D (subsection.22.20) >> +>> endobj +2129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 513.087 349.951 523.991] +/A << /S /GoTo /D (subsection.22.21) >> +>> endobj +2130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 495.463 287.232 506.367] +/A << /S /GoTo /D (subsubsection.22.21.1) >> +>> endobj +2131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 479.896 294.983 488.743] +/A << /S /GoTo /D (subsubsection.22.21.2) >> +>> endobj +2132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 460.214 388.038 471.118] +/A << /S /GoTo /D (subsection.22.22) >> +>> endobj +2133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 442.59 287.232 453.494] +/A << /S /GoTo /D (subsubsection.22.22.1) >> +>> endobj +2134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 427.023 303.85 435.869] +/A << /S /GoTo /D (subsubsection.22.22.2) >> +>> endobj +2135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 409.108 339.441 418.245] +/A << /S /GoTo /D (subsection.22.23) >> +>> endobj +2136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 389.717 287.232 400.621] +/A << /S /GoTo /D (subsubsection.22.23.1) >> +>> endobj +2137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 374.03 294.983 382.996] +/A << /S /GoTo /D (subsubsection.22.23.2) >> +>> endobj +2138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 354.468 332.717 365.372] +/A << /S /GoTo /D (subsection.22.24) >> +>> endobj +2139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 336.844 287.232 347.748] +/A << /S /GoTo /D (subsubsection.22.24.1) >> +>> endobj +2140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 321.277 294.983 330.123] +/A << /S /GoTo /D (subsubsection.22.24.2) >> +>> endobj +2141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 301.595 463.034 312.499] +/A << /S /GoTo /D (subsection.22.25) >> +>> endobj +2142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 283.971 287.232 294.874] +/A << /S /GoTo /D (subsubsection.22.25.1) >> +>> endobj +2143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 268.403 294.983 277.25] +/A << /S /GoTo /D (subsubsection.22.25.2) >> +>> endobj +2144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 248.722 317.972 259.626] +/A << /S /GoTo /D (subsection.22.26) >> +>> endobj +2145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 231.097 287.232 242.001] +/A << /S /GoTo /D (subsubsection.22.26.1) >> +>> endobj +2146 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 215.53 303.85 224.377] +/A << /S /GoTo /D (subsubsection.22.26.2) >> +>> endobj +2147 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 195.849 433.219 206.753] +/A << /S /GoTo /D (subsection.22.27) >> +>> endobj +2148 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 178.224 287.232 189.128] +/A << /S /GoTo /D (subsubsection.22.27.1) >> +>> endobj +2149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 162.657 303.85 171.504] +/A << /S /GoTo /D (subsubsection.22.27.2) >> +>> endobj +2150 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 142.976 376.312 153.88] +/A << /S /GoTo /D (subsection.22.28) >> +>> endobj +2151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 125.351 287.232 136.255] +/A << /S /GoTo /D (subsubsection.22.28.1) >> +>> endobj +2156 0 obj << +/D [2154 0 R /XYZ 132.768 705.06 null] +>> endobj +2153 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2190 0 obj << +/Length 1173 +/Filter /FlateDecode +>> +stream +xÚåZ[s£6~÷¯àÑ~0Ñ”étfsÛd§{iâ™}H÷cÅVÃÅÜ8ÿ¾!\Çl¦±é!„øÎ÷s$ÖÔÖÇÞÙ¨wr…˜ÅmÎÔaô`AŒm‡¹ãÔfZ£‰uß?ÿúetùet7"!Ø—ËÁѧÞå¨÷Wª€+7B›jùaïþ°&êâ' ؘ»ÖSÑ5´0Q]a~c`Ýõ~ïr6z dZŽxkæªós ›Œ:6ÂTÏ!¹6RÓ µˆüLÆ‘:£ û‹PD™W4å³6O³î‡¹}{0¤ê®÷>lÌ ÕŠ\¼Ö^ÇǪWçXCè(XÈ <¿óäJ¡ü‚]Ùè^¿èkè:¶C¸é°Èdp2÷™=íÛ³†! ³!rÌ¿nÒ5NC AÿÛÒ¾¸pÒXfÚ˜ŠH$®B=$çÀW9‡ÁÂ)uçØPsõBdž ĤäªHýDΛ^Ÿqv(L}Þ‚ZPþEâfÌíÛtŒÁé8ÙØ[LEL±2wŠ˜oˆøZs‘h'…žŸÄ©¶â²1ž¶”¤Koú^à/‚—é&V˜“Ÿ‘#Ù-GnF0îºÉþrT tWŽ´µáÉ1{’RÄÌF ï+ÅÑ÷›Dz飶&Ú}²Qr®ë¾e;½A¡*-a£°ëÂe¯n•¢®ÓZ¸èç…ëÇáÜËN&bž_e´ædê"µ¶áû*øb5¨ö–ÌDXS«ãâwÐ';Açjñº>QÇõ¹š}¢îê“£VxàÎ-Ü9Ù/PU4ƒß,PÉÈã 1F©u©Ü}cÔy1¬Ë`µp’ÙL[7nµqùýLØ^ÖÊ Œß.,í†Xu´!ª3Žä+ù…±žé<‰ÿ~V_p˜Áè?æê6ª’®‡wҺܠÅ”bÆ2’ÑTs®^T奩ÇA©¥4^$~™ òĈz¹ŽùûƒB÷¢KC—k/™< TDñ’ò}S‘-æ›Ï#Ô9zm±+oj +„åžI<)aÒ Ù,‰ÓY„v›5•ÅÂh&ê²)Úx'ÎñÒÇm€X€J¥2œb-ÙÕö×]Òé$ÇÛ&9f¢ÖŠqßšdýß0k(3Ák×]E ç ¥ôhŠjß™‰ayA­ŠiS¬ê‚ßdô˜·n–£ì80Á­hC4&—K/¬”L™aÑ×q¡¹Â¾Rµf}…ì(¤TÑS!OúæCËgoþ‚A­>¤Œ¯”x+)1ÓÇòñáÍM”‰@›×"ÿÚ¼üØØì&4ba+î8%wDöÈgOóHŸ-d0ÙPØ–´†!;8P+8\ Ç­x‰ˆL*Êâ÷ßUH´õ.“S-Ãxµ‹ç3™f²²½¥^d9¢àRCJ`â®íà}~_2?Q1›;Ø­þDårÅ¿õ2BXÍ6çh¶0»&¾6ˆ>@pŠð)tõ™"pi= í›Oì^~òw2ÀNÈq9ÂøÙl¡.Ÿ§b}F½ò?ºïÕŽ +endstream +endobj +2189 0 obj << +/Type /Page +/Contents 2190 0 R +/Resources 2188 0 R +/MediaBox [0 0 612 792] +/Parent 2086 0 R +/Annots [ 2152 0 R 2157 0 R 2158 0 R 2159 0 R 2160 0 R 2161 0 R 2162 0 R 2163 0 R 2164 0 R 2165 0 R 2166 0 R 2167 0 R 2168 0 R 2169 0 R 2170 0 R 2171 0 R 2172 0 R 2173 0 R 2174 0 R 2175 0 R 2176 0 R 2177 0 R 2178 0 R 2179 0 R 2180 0 R 2181 0 R 2182 0 R 2183 0 R 2184 0 R 2185 0 R 2186 0 R ] +>> endobj +2152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 656.14 303.85 664.986] +/A << /S /GoTo /D (subsubsection.22.28.2) >> +>> endobj +2157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 321.309 647.362] +/A << /S /GoTo /D (subsection.22.29) >> +>> endobj +2158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 618.834 287.232 629.737] +/A << /S /GoTo /D (subsubsection.22.29.1) >> +>> endobj +2159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 603.147 294.983 612.113] +/A << /S /GoTo /D (subsubsection.22.29.2) >> +>> endobj +2160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 583.585 409.786 594.489] +/A << /S /GoTo /D (subsection.22.30) >> +>> endobj +2161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 565.96 287.232 576.864] +/A << /S /GoTo /D (subsubsection.22.30.1) >> +>> endobj +2162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 550.393 294.983 559.24] +/A << /S /GoTo /D (subsubsection.22.30.2) >> +>> endobj +2163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 532.479 330.146 541.616] +/A << /S /GoTo /D (subsection.22.31) >> +>> endobj +2164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 513.087 287.232 523.991] +/A << /S /GoTo /D (subsubsection.22.31.1) >> +>> endobj +2165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 497.52 294.983 506.367] +/A << /S /GoTo /D (subsubsection.22.31.2) >> +>> endobj +2166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 477.839 346.136 488.743] +/A << /S /GoTo /D (subsection.22.32) >> +>> endobj +2167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 460.214 287.232 471.118] +/A << /S /GoTo /D (subsubsection.22.32.1) >> +>> endobj +2168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 444.528 294.983 453.494] +/A << /S /GoTo /D (subsubsection.22.32.2) >> +>> endobj +2169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 426.903 303.85 435.869] +/A << /S /GoTo /D (subsubsection.22.32.3) >> +>> endobj +2170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 407.341 390.469 418.245] +/A << /S /GoTo /D (subsection.22.33) >> +>> endobj +2171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 389.717 231.003 400.621] +/A << /S /GoTo /D (subsection.22.34) >> +>> endobj +2172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 372.092 287.232 382.996] +/A << /S /GoTo /D (subsubsection.22.34.1) >> +>> endobj +2173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 354.468 330.638 365.372] +/A << /S /GoTo /D (subsection.22.35) >> +>> endobj +2174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 336.844 267.197 347.748] +/A << /S /GoTo /D (subsubsection.22.35.1) >> +>> endobj +2175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 319.219 285.748 330.123] +/A << /S /GoTo /D (subsubsection.22.35.2) >> +>> endobj +2176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 303.533 269.788 312.499] +/A << /S /GoTo /D (subsubsection.22.35.3) >> +>> endobj +2177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 283.971 239.033 294.874] +/A << /S /GoTo /D (subsection.22.36) >> +>> endobj +2178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 266.346 250.709 277.25] +/A << /S /GoTo /D (subsubsection.22.36.1) >> +>> endobj +2179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 250.779 273.673 259.626] +/A << /S /GoTo /D (subsubsection.22.36.2) >> +>> endobj +2180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 231.097 298.051 242.001] +/A << /S /GoTo /D (subsubsection.22.36.3) >> +>> endobj +2181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 213.473 309.936 224.377] +/A << /S /GoTo /D (subsubsection.22.36.4) >> +>> endobj +2182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 195.849 273.583 206.753] +/A << /S /GoTo /D (subsubsection.22.36.5) >> +>> endobj +2183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 178.224 310.325 189.128] +/A << /S /GoTo /D (subsubsection.22.36.6) >> +>> endobj +2184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 160.6 328.377 171.504] +/A << /S /GoTo /D (subsubsection.22.36.7) >> +>> endobj +2185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 145.033 319.58 153.88] +/A << /S /GoTo /D (subsubsection.22.36.8) >> +>> endobj +2186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 125.351 287.451 136.255] +/A << /S /GoTo /D (subsection.22.37) >> +>> endobj +2191 0 obj << +/D [2189 0 R /XYZ 132.768 705.06 null] +>> endobj +2188 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2224 0 obj << +/Length 920 +/Filter /FlateDecode +>> +stream +xÚíšKw“@†÷ù,ÉœûÅÚVëB‹êñP2MP• mý÷ i.¦á¸¤›ÐÀ|Ÿ›®Ö‰ù/¹lÅâ2ú<×e1©šüYÞxa·Ì½®YkÍk7˜ ž’.—žª4ª㮆nÊâ»JôšÉÿOÀ,]/\tBæÕ†¡tÀ!³ ÑÊ£u`Ђ +=<¤‚·Ø°ã$Öq‹L—Æ]U9†ÂoÉI5W¹ŽÓ­#¦×6Tñà š„’¬×î¦f¦IZ/n¿én-vû£ºV¥Ê“õFÁ¿Ãt¯\¤°Õàxýý)§™jö'j‘”éͦ¯‹IvP`Àº”êX¬™œ¥*›> endobj +2187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 654.082 267.197 664.986] +/A << /S /GoTo /D (subsubsection.22.37.1) >> +>> endobj +2192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 638.396 286.136 647.362] +/A << /S /GoTo /D (subsubsection.22.37.2) >> +>> endobj +2193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 618.834 285.748 629.737] +/A << /S /GoTo /D (subsubsection.22.37.3) >> +>> endobj +2194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 603.266 269.788 612.113] +/A << /S /GoTo /D (subsubsection.22.37.4) >> +>> endobj +2195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 583.585 297.034 594.489] +/A << /S /GoTo /D (subsection.22.38) >> +>> endobj +2196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 565.96 267.197 576.864] +/A << /S /GoTo /D (subsubsection.22.38.1) >> +>> endobj +2197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 550.393 286.136 559.24] +/A << /S /GoTo /D (subsubsection.22.38.2) >> +>> endobj +2198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 530.712 285.748 541.616] +/A << /S /GoTo /D (subsubsection.22.38.3) >> +>> endobj +2199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 515.145 269.788 523.991] +/A << /S /GoTo /D (subsubsection.22.38.4) >> +>> endobj +2200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 495.463 350.314 506.367] +/A << /S /GoTo /D (subsection.22.39) >> +>> endobj +2201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 479.776 293.05 488.743] +/A << /S /GoTo /D (subsubsection.22.39.1) >> +>> endobj +2202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 460.214 307.546 471.118] +/A << /S /GoTo /D (subsubsection.22.39.2) >> +>> endobj +2203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 444.528 273.673 453.494] +/A << /S /GoTo /D (subsubsection.22.39.3) >> +>> endobj +2204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 417.04 281.234 426.016] +/A << /S /GoTo /D (section.23) >> +>> endobj +2205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 398.355 262.016 408.282] +/A << /S /GoTo /D (subsection.23.1) >> +>> endobj +2206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 379.754 287.232 390.658] +/A << /S /GoTo /D (subsubsection.23.1.1) >> +>> endobj +2207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 364.187 288.906 373.034] +/A << /S /GoTo /D (subsubsection.23.1.2) >> +>> endobj +2208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 345.482 264.786 355.409] +/A << /S /GoTo /D (subsection.23.2) >> +>> endobj +2209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 326.881 287.232 337.785] +/A << /S /GoTo /D (subsubsection.23.2.1) >> +>> endobj +2210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 311.314 288.906 320.161] +/A << /S /GoTo /D (subsubsection.23.2.2) >> +>> endobj +2211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 283.707 233.553 292.683] +/A << /S /GoTo /D (section.24) >> +>> endobj +2212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 266.103 263.64 274.949] +/A << /S /GoTo /D (subsection.24.1) >> +>> endobj +2213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 246.421 287.232 257.325] +/A << /S /GoTo /D (subsubsection.24.1.1) >> +>> endobj +2214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 230.854 256.457 239.7] +/A << /S /GoTo /D (subsection.24.2) >> +>> endobj +2215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 211.172 287.232 222.076] +/A << /S /GoTo /D (subsubsection.24.2.1) >> +>> endobj +2216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 195.605 256.457 204.452] +/A << /S /GoTo /D (subsection.24.3) >> +>> endobj +2217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 175.923 287.232 186.827] +/A << /S /GoTo /D (subsubsection.24.3.1) >> +>> endobj +2218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 160.356 268.074 169.203] +/A << /S /GoTo /D (subsection.24.4) >> +>> endobj +2219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 140.675 287.232 151.579] +/A << /S /GoTo /D (subsubsection.24.4.1) >> +>> endobj +2220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 125.108 258.669 133.954] +/A << /S /GoTo /D (subsection.24.5) >> +>> endobj +2225 0 obj << +/D [2223 0 R /XYZ 132.768 705.06 null] +>> endobj +2222 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2259 0 obj << +/Length 710 +/Filter /FlateDecode +>> +stream +xÚíÚKo›0ð;ŸÂÇpÀó¿zÜÖVê¡ÓZnY5â¤h ÉÙšo?óRI[”iRœ $矟 XF` ¸v>Χ+‚Š›"XL)\®ä +ƒ`¦“/ßnƒËÛàÞõˆ$Ožb÷!¸q.ç·ƒMEàƉ*Ä@´v¦Ì͇7Aª$ø[|u ¨o¾ŠóWàÞùî ª5eE鲪ñ®nj¶O`˜or& ¡¬lñ!ƒØõB“¯: ã•ž›¶²|o¥ñ6‹7IÑäúR`êqÅ'Ðõ˜9çc/Ú‰‘9J©8:þ:*SzX˜lüF&¤ÎäB$ÑU&›h¿ÖI¾™ +—g‡:‡GTØ +7õš¢4Â>–‰\0åÖ^èT'‘~yY)ÐÇÔòþÌ|ÿTfG‘=÷-Þó¾u:˜6L¢Â”¶Ú“"l`˜‘˜Zº™,1Íõ*<¸Ü±¥ÎtbAɾƒb]A©¨Ÿ³pG¤8„5êiI£¼â‰NÓdc3I<°¡ˆ5"Ë5‘QÓšp¡i1×®yøùãšÑe³Õ ŒÞKà3¤Ä;ŽK÷ïz[䤔CZìàý»1tNÝÿUuµé¢M]+ ^JˆÁ»¢£«¶hü#W6°¸RÄÕè•þ« +aíw6SP\°ÁVl4ÕÖÝxa*N2óú·ßf°¨¤ÄGJm”DM)Ÿ$ßY QþùJ]%‰¾Kot²”d3%1í×+C]Ÿ dÏaN¦–*`­6Ñ/›á «ašj7šjén¤œ=_‡Ù£ÍÓûjª,ß\2¤$ÔfÁP½l‰C%¨l.[’ +R^ý ×:Ñi˜Õ(Å¢ ÷µÒjòÙ/ Œ.½Èï2ùžQ]m¯ì›´Ü ‹éëÔ¥bâ­âYUÃìP/­y:,õ1zó“ÿš*ŽÈ +endstream +endobj +2258 0 obj << +/Type /Page +/Contents 2259 0 R +/Resources 2257 0 R +/MediaBox [0 0 612 792] +/Parent 2086 0 R +/Annots [ 2221 0 R 2226 0 R 2227 0 R 2228 0 R 2229 0 R 2230 0 R 2231 0 R 2232 0 R 2233 0 R 2234 0 R 2235 0 R 2236 0 R 2237 0 R 2238 0 R 2239 0 R 2240 0 R 2241 0 R 2242 0 R 2243 0 R 2244 0 R 2245 0 R 2246 0 R 2247 0 R 2248 0 R 2249 0 R 2250 0 R 2251 0 R 2252 0 R 2253 0 R 2254 0 R 2255 0 R ] +>> endobj +2221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 654.082 287.232 664.986] +/A << /S /GoTo /D (subsubsection.24.5.1) >> +>> endobj +2226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 638.396 294.983 647.362] +/A << /S /GoTo /D (subsubsection.24.5.2) >> +>> endobj +2227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 620.891 263.083 629.737] +/A << /S /GoTo /D (subsection.24.6) >> +>> endobj +2228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 601.209 287.232 612.113] +/A << /S /GoTo /D (subsubsection.24.6.1) >> +>> endobj +2229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 583.585 262.534 594.489] +/A << /S /GoTo /D (subsection.24.7) >> +>> endobj +2230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 565.96 287.232 576.864] +/A << /S /GoTo /D (subsubsection.24.7.1) >> +>> endobj +2231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 548.336 261.887 559.24] +/A << /S /GoTo /D (subsection.24.8) >> +>> endobj +2232 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 530.712 287.232 541.616] +/A << /S /GoTo /D (subsubsection.24.8.1) >> +>> endobj +2233 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 513.087 287.989 523.991] +/A << /S /GoTo /D (subsection.24.9) >> +>> endobj +2234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 495.463 287.232 506.367] +/A << /S /GoTo /D (subsubsection.24.9.1) >> +>> endobj +2235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 479.896 261.977 488.743] +/A << /S /GoTo /D (subsection.24.10) >> +>> endobj +2236 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 460.214 287.232 471.118] +/A << /S /GoTo /D (subsubsection.24.10.1) >> +>> endobj +2237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 442.59 277.02 453.494] +/A << /S /GoTo /D (subsection.24.11) >> +>> endobj +2238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 424.965 287.232 435.869] +/A << /S /GoTo /D (subsubsection.24.11.1) >> +>> endobj +2239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 409.398 251.775 418.245] +/A << /S /GoTo /D (subsection.24.12) >> +>> endobj +2240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 389.717 287.232 400.621] +/A << /S /GoTo /D (subsubsection.24.12.1) >> +>> endobj +2241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 374.15 254.544 382.996] +/A << /S /GoTo /D (subsection.24.13) >> +>> endobj +2242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 354.468 287.232 365.372] +/A << /S /GoTo /D (subsubsection.24.13.1) >> +>> endobj +2243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 338.901 257.314 347.748] +/A << /S /GoTo /D (subsection.24.14) >> +>> endobj +2244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 319.219 287.232 330.123] +/A << /S /GoTo /D (subsubsection.24.14.1) >> +>> endobj +2245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 303.652 257.553 312.499] +/A << /S /GoTo /D (subsection.24.15) >> +>> endobj +2246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 283.971 287.232 294.874] +/A << /S /GoTo /D (subsubsection.24.15.1) >> +>> endobj +2247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 266.346 275.267 277.25] +/A << /S /GoTo /D (subsection.24.16) >> +>> endobj +2248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 248.722 287.232 259.626] +/A << /S /GoTo /D (subsubsection.24.16.1) >> +>> endobj +2249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 231.097 272.507 242.001] +/A << /S /GoTo /D (subsection.24.17) >> +>> endobj +2250 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 213.473 287.232 224.377] +/A << /S /GoTo /D (subsubsection.24.17.1) >> +>> endobj +2251 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 197.906 248.706 206.753] +/A << /S /GoTo /D (subsection.24.18) >> +>> endobj +2252 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 178.224 287.232 189.128] +/A << /S /GoTo /D (subsubsection.24.18.1) >> +>> endobj +2253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 162.538 258.111 171.504] +/A << /S /GoTo /D (subsection.24.19) >> +>> endobj +2254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 142.976 287.232 153.88] +/A << /S /GoTo /D (subsubsection.24.19.1) >> +>> endobj +2255 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 127.408 260.881 136.255] +/A << /S /GoTo /D (subsection.24.20) >> +>> endobj +2260 0 obj << +/D [2258 0 R /XYZ 132.768 705.06 null] +>> endobj +2257 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2294 0 obj << +/Length 691 +/Filter /FlateDecode +>> +stream +xÚíš]o›0†ïù¾„‹x¶¶q/·~H½è¶†»®šRê$H!a4ýú÷3qÈh¯s¤JMAŠb›€9yyŽ}0ADÐYð9 >2VÂéQ,E‚„âX(ŠÒ[t~ùz‘ž\¤ÃhÀ¤Š!|Êóè:=NÒàW@MOÑÖ•+ÂQVW×ÝšÏÁ ô¸:µ@›Si}á ƒïY›c;ª&ë/IÛ@Iq]\bÜÈb̦Æ>BÂc½å3}kZ¼nÝeU^.óÅ|ess/t5J„8psÍû*¶ì¤ÄN^ÿ[+4` +£•F¢ø4´î8,t‘eeDIø â¡èÔhek—z¬+=Ïô¶’±÷)Ô?õ‚×ôrÊõÑI?’ZNÆ6$M«ˆ{AļkˆÞ†%Ö³ä’Z,ýüQJ}p +ž£–ãAÏ‘‹£xÃQQz”t  ¸Èoä? št"’ñ —o‰ @{M¯c*:83=O.iäOþƒ’"¢QMö¹ JˆÌÇg™¼KÓ¢¤ÈÚ´ˆ(ê/í³B‹¡KñLõ$9œ HCRåŸ6RI—fE@zŠ\ÒÐ6EþS" ˆhÐg¯m²×wzé³Â—qWÖg-Žú̵“#›¹.GU¾´kýéÿgÙA¼y›àÖ'±S$›Ä.'Å]9Ê´P\â»Ùx_„>|ûUeÈ.QX#ÊBØ|ÍÌñ"»/ô|9Ú)‹HB±·KÙ´~¹ˆµ]wL=‚>;ôZ°-íl¹s׎J°Ÿ=;ÍÖ!•„¤½u(QÄú9œé¹®FËÆM †«2Þ7~›ÙJl JŽÑĶ ÒëÚ¸~ˆ‹Ê6Fuã¡Š@†ƒY~³îá湡þéy¢_ònþòoŽ|™ +endstream +endobj +2293 0 obj << +/Type /Page +/Contents 2294 0 R +/Resources 2292 0 R +/MediaBox [0 0 612 792] +/Parent 2296 0 R +/Annots [ 2256 0 R 2261 0 R 2262 0 R 2263 0 R 2264 0 R 2265 0 R 2266 0 R 2267 0 R 2268 0 R 2269 0 R 2270 0 R 2271 0 R 2272 0 R 2273 0 R 2274 0 R 2275 0 R 2276 0 R 2277 0 R 2278 0 R 2279 0 R 2280 0 R 2281 0 R 2282 0 R 2283 0 R 2284 0 R 2285 0 R 2286 0 R 2287 0 R 2288 0 R 2289 0 R 2290 0 R ] +>> endobj +2256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 654.082 287.232 664.986] +/A << /S /GoTo /D (subsubsection.24.20.1) >> +>> endobj +2261 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 279.501 647.362] +/A << /S /GoTo /D (subsection.24.21) >> +>> endobj +2262 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 618.834 287.232 629.737] +/A << /S /GoTo /D (subsubsection.24.21.1) >> +>> endobj +2263 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 603.266 273.613 612.113] +/A << /S /GoTo /D (subsection.24.22) >> +>> endobj +2264 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 583.585 287.232 594.489] +/A << /S /GoTo /D (subsubsection.24.22.1) >> +>> endobj +2265 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 566.937 283.575 576.864] +/A << /S /GoTo /D (subsection.24.23) >> +>> endobj +2266 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 548.336 287.232 559.24] +/A << /S /GoTo /D (subsubsection.24.23.1) >> +>> endobj +2267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 530.712 278.594 541.616] +/A << /S /GoTo /D (subsection.24.24) >> +>> endobj +2268 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 513.087 287.232 523.991] +/A << /S /GoTo /D (subsubsection.24.24.1) >> +>> endobj +2269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 495.463 288.009 506.367] +/A << /S /GoTo /D (subsection.24.25) >> +>> endobj +2270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 477.839 287.232 488.743] +/A << /S /GoTo /D (subsubsection.24.25.1) >> +>> endobj +2271 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 460.214 275.077 471.118] +/A << /S /GoTo /D (subsection.24.26) >> +>> endobj +2272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 442.59 287.232 453.494] +/A << /S /GoTo /D (subsubsection.24.26.1) >> +>> endobj +2273 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 424.965 285.139 435.869] +/A << /S /GoTo /D (subsection.24.27) >> +>> endobj +2274 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 407.341 287.232 418.245] +/A << /S /GoTo /D (subsubsection.24.27.1) >> +>> endobj +2275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 391.774 281.363 400.621] +/A << /S /GoTo /D (subsection.24.28) >> +>> endobj +2276 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 372.092 287.232 382.996] +/A << /S /GoTo /D (subsubsection.24.28.1) >> +>> endobj +2277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 356.406 283.277 365.372] +/A << /S /GoTo /D (subsection.24.29) >> +>> endobj +2278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 336.844 287.232 347.748] +/A << /S /GoTo /D (subsubsection.24.29.1) >> +>> endobj +2279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 321.277 276.93 330.123] +/A << /S /GoTo /D (subsection.24.30) >> +>> endobj +2280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 301.595 287.232 312.499] +/A << /S /GoTo /D (subsubsection.24.30.1) >> +>> endobj +2281 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 284.947 286.893 294.874] +/A << /S /GoTo /D (subsection.24.31) >> +>> endobj +2282 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 266.346 287.232 277.25] +/A << /S /GoTo /D (subsubsection.24.31.1) >> +>> endobj +2283 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 250.779 272.507 259.626] +/A << /S /GoTo /D (subsection.24.32) >> +>> endobj +2284 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 231.097 287.232 242.001] +/A << /S /GoTo /D (subsubsection.24.32.1) >> +>> endobj +2285 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 213.473 263.551 224.377] +/A << /S /GoTo /D (subsection.24.33) >> +>> endobj +2286 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 195.849 287.232 206.753] +/A << /S /GoTo /D (subsubsection.24.33.1) >> +>> endobj +2287 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 178.224 280.796 189.128] +/A << /S /GoTo /D (subsection.24.34) >> +>> endobj +2288 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 160.6 287.232 171.504] +/A << /S /GoTo /D (subsubsection.24.34.1) >> +>> endobj +2289 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 145.033 294.983 153.88] +/A << /S /GoTo /D (subsubsection.24.34.2) >> +>> endobj +2290 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 125.351 265.055 136.255] +/A << /S /GoTo /D (subsection.24.35) >> +>> endobj +2295 0 obj << +/D [2293 0 R /XYZ 132.768 705.06 null] +>> endobj +2292 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2330 0 obj << +/Length 684 +/Filter /FlateDecode +>> +stream +xÚíÚMoÚ0ð{>…ÉÏï/=nk+õÐm%7VM d‚Ð…°µß~†$m †£U‚“c ŽùëçÇ9)@àÚûz®ˆja›p0¥P +„æPh Â1øŸ¾Ü†—·a?è)÷ã8îÃï2ô~yØ…®ÜŠ¡FD opÀØ~y¤Z?ÛŸ.eö§xsãô½o*æ“”N‹ïÊ¢ê %†›KÁ%$”ç3$ R± Bþg“ ã¹ÛßôVQ?dñ2Ùι|ô„> zÜÞs\ÍÞ<1²ŸRAv>•m{XÚpX5R†ò!’˜"”e´^˜$¾‹PíÈ£GÔ˜½NElöW& ×c8Ë3¹²fò«;31©I"³ÿ`©ŽÌ!qÑŵ“Vea‰¶/,Ú’,!ý\<88b„‚£ÿÈ©šYÇ©n¥©œÓÜMä4ªÒ»¢Rª:T:G•ã$sP¥Žî-À=4Ö”“n;'ÖtËcè™ÓÒAÕ­©Q²á{CmG%£Â%ªy< +˜}Âá²4:ý:¥Ö)†ÛNJ7Ýö)H¥Ñpe"ûzÞ?|ëcä„2’¤©Òr=’4ÖC÷ôüø`Œ}D‚Évë¡žºhXUmÎ]è(¡Oos„TYk¬ƒT‰¿@ÊZè]ëï8Õ­4QáÔ`G“ì 9‰ŽS'ùÌiæ¼Åaz¾Jv¤ê¢QRîŠ z.œ*ËPuœê8é +§d=w ¤ÕY•$ݪY^ír¯JRñSN*oß<꣔Ôå OyàH@-©ª8RRQ¤~m“³¡µ·mÃÙºTå,o0º ô«¼gW“€p™æá¦ó; ¨ô{óxTŒ0z*Ä<>MÍ.rû—ÿ›‹ +endstream +endobj +2329 0 obj << +/Type /Page +/Contents 2330 0 R +/Resources 2328 0 R +/MediaBox [0 0 612 792] +/Parent 2296 0 R +/Annots [ 2291 0 R 2297 0 R 2298 0 R 2299 0 R 2300 0 R 2301 0 R 2302 0 R 2303 0 R 2304 0 R 2305 0 R 2306 0 R 2307 0 R 2308 0 R 2309 0 R 2310 0 R 2311 0 R 2312 0 R 2313 0 R 2314 0 R 2315 0 R 2316 0 R 2317 0 R 2318 0 R 2319 0 R 2320 0 R 2321 0 R 2322 0 R 2323 0 R 2324 0 R 2325 0 R 2326 0 R ] +>> endobj +2291 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 654.082 287.232 664.986] +/A << /S /GoTo /D (subsubsection.24.35.1) >> +>> endobj +2297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 638.515 294.983 647.362] +/A << /S /GoTo /D (subsubsection.24.35.2) >> +>> endobj +2298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 620.891 271.391 629.737] +/A << /S /GoTo /D (subsection.24.36) >> +>> endobj +2299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 601.209 287.232 612.113] +/A << /S /GoTo /D (subsubsection.24.36.1) >> +>> endobj +2300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 583.585 267.526 594.489] +/A << /S /GoTo /D (subsection.24.37) >> +>> endobj +2301 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 565.96 287.232 576.864] +/A << /S /GoTo /D (subsubsection.24.37.1) >> +>> endobj +2302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 548.336 261.429 559.24] +/A << /S /GoTo /D (subsection.24.38) >> +>> endobj +2303 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 530.712 287.232 541.616] +/A << /S /GoTo /D (subsubsection.24.38.1) >> +>> endobj +2304 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 515.025 263.102 523.991] +/A << /S /GoTo /D (subsection.24.39) >> +>> endobj +2305 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 495.463 287.232 506.367] +/A << /S /GoTo /D (subsubsection.24.39.1) >> +>> endobj +2306 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 479.896 260.333 488.743] +/A << /S /GoTo /D (subsection.24.40) >> +>> endobj +2307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 460.214 287.232 471.118] +/A << /S /GoTo /D (subsubsection.24.40.1) >> +>> endobj +2308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 444.528 262.704 453.494] +/A << /S /GoTo /D (subsection.24.41) >> +>> endobj +2309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 424.965 287.232 435.869] +/A << /S /GoTo /D (subsubsection.24.41.1) >> +>> endobj +2310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 407.341 285.777 418.245] +/A << /S /GoTo /D (subsection.24.42) >> +>> endobj +2311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 389.717 287.232 400.621] +/A << /S /GoTo /D (subsubsection.24.42.1) >> +>> endobj +2312 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 372.092 295.191 382.996] +/A << /S /GoTo /D (subsection.24.43) >> +>> endobj +2313 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 354.468 287.232 365.372] +/A << /S /GoTo /D (subsubsection.24.43.1) >> +>> endobj +2314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 338.901 278.036 347.748] +/A << /S /GoTo /D (subsection.24.44) >> +>> endobj +2315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 319.219 287.232 330.123] +/A << /S /GoTo /D (subsubsection.24.44.1) >> +>> endobj +2316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 303.652 263.092 312.499] +/A << /S /GoTo /D (subsection.24.45) >> +>> endobj +2317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 283.971 287.232 294.874] +/A << /S /GoTo /D (subsubsection.24.45.1) >> +>> endobj +2318 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 267.322 272.507 277.25] +/A << /S /GoTo /D (subsection.24.46) >> +>> endobj +2319 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 248.722 287.232 259.626] +/A << /S /GoTo /D (subsubsection.24.46.1) >> +>> endobj +2320 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 233.155 263.65 242.001] +/A << /S /GoTo /D (subsection.24.47) >> +>> endobj +2321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 213.473 287.232 224.377] +/A << /S /GoTo /D (subsubsection.24.47.1) >> +>> endobj +2322 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 196.825 273.613 206.753] +/A << /S /GoTo /D (subsection.24.48) >> +>> endobj +2323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 178.224 287.232 189.128] +/A << /S /GoTo /D (subsubsection.24.48.1) >> +>> endobj +2324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 162.538 276.93 171.504] +/A << /S /GoTo /D (subsection.24.49) >> +>> endobj +2325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 142.976 287.232 153.88] +/A << /S /GoTo /D (subsubsection.24.49.1) >> +>> endobj +2326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 126.327 286.345 136.255] +/A << /S /GoTo /D (subsection.24.50) >> +>> endobj +2331 0 obj << +/D [2329 0 R /XYZ 132.768 705.06 null] +>> endobj +2328 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2365 0 obj << +/Length 645 +/Filter /FlateDecode +>> +stream +xÚíšKs›0Çï| +ဪZI9¶M2“CÚÆÜ<™Žƒ±Ã ~;û +v«™Àô$a´¬ÿü¤]vDÐtí}Ž½OW ÆLÏåKP´À )Š§hìùv_ÞÆ£ dRrê¿f%þspßx—±÷Ë£ÆA´5›bMJÞøž ©ùñ̵B/û[ˆGæVZNÌÑÈûá‘Ú¥ÊP1¯-Þ5N’¶“’â² BbÆEå$‹° ˜ ñ¿¦ÛI–§S3åh“Ùz›­–{Ÿ›g¡q|„ÂÌùX͉Ÿ”˜«\²£ëj…BÆ°¦ +©4EoÒÐÒ°¿ÙÉbG•.WF¢ªw—ÎÒ"]&éés9åSŸ)šU3‡Ó‘4­•ÆZ8ýüPJýT)PCâˆ9ŽlÒðGë2¦ì]@€mO­5ÈV6¬¢¬ºoQ"9¤lH‰R›õ²HZ°¦NÂd[cЩûÆ$…Hà@²I#¦Okœ¼?gŠäps&ép²á¤œ²å?¾ÿ[î *¼/NêÜqâ½qÒ Ny2ÙvˆoBÓÿž'èíô¹ó}Ó& mžº§M\Ãðxâx²ICßxêUzâJ lŸj-F긲qÅN¹êQ—jH01“ ¦Cy> endobj +2327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 654.082 287.232 664.986] +/A << /S /GoTo /D (subsubsection.24.50.1) >> +>> endobj +2332 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 268.631 647.362] +/A << /S /GoTo /D (subsection.24.51) >> +>> endobj +2333 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 618.834 287.232 629.737] +/A << /S /GoTo /D (subsubsection.24.51.1) >> +>> endobj +2334 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 601.209 278.046 612.113] +/A << /S /GoTo /D (subsection.24.52) >> +>> endobj +2335 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 583.585 287.232 594.489] +/A << /S /GoTo /D (subsubsection.24.52.1) >> +>> endobj +2336 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 565.96 265.115 576.864] +/A << /S /GoTo /D (subsection.24.53) >> +>> endobj +2337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 548.336 287.232 559.24] +/A << /S /GoTo /D (subsubsection.24.53.1) >> +>> endobj +2338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 530.712 275.177 541.616] +/A << /S /GoTo /D (subsection.24.54) >> +>> endobj +2339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 513.087 287.232 523.991] +/A << /S /GoTo /D (subsubsection.24.54.1) >> +>> endobj +2340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 495.463 269.737 506.367] +/A << /S /GoTo /D (subsection.24.55) >> +>> endobj +2341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 477.839 287.232 488.743] +/A << /S /GoTo /D (subsubsection.24.55.1) >> +>> endobj +2342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 460.214 279.152 471.118] +/A << /S /GoTo /D (subsection.24.56) >> +>> endobj +2343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 442.59 287.232 453.494] +/A << /S /GoTo /D (subsubsection.24.56.1) >> +>> endobj +2344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 424.965 265.304 435.869] +/A << /S /GoTo /D (subsection.24.57) >> +>> endobj +2345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 407.341 287.232 418.245] +/A << /S /GoTo /D (subsubsection.24.57.1) >> +>> endobj +2346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 389.717 263.65 400.621] +/A << /S /GoTo /D (subsection.24.58) >> +>> endobj +2347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 372.092 287.232 382.996] +/A << /S /GoTo /D (subsubsection.24.58.1) >> +>> endobj +2348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 356.406 265.862 365.372] +/A << /S /GoTo /D (subsection.24.59) >> +>> endobj +2349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 336.844 287.232 347.748] +/A << /S /GoTo /D (subsubsection.24.59.1) >> +>> endobj +2350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 320.196 275.276 330.123] +/A << /S /GoTo /D (subsection.24.60) >> +>> endobj +2351 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 301.595 287.232 312.499] +/A << /S /GoTo /D (subsubsection.24.60.1) >> +>> endobj +2352 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 283.971 267.884 294.874] +/A << /S /GoTo /D (subsection.24.61) >> +>> endobj +2353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 266.346 287.232 277.25] +/A << /S /GoTo /D (subsubsection.24.61.1) >> +>> endobj +2354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 248.722 277.946 259.626] +/A << /S /GoTo /D (subsection.24.62) >> +>> endobj +2355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 231.097 287.232 242.001] +/A << /S /GoTo /D (subsubsection.24.62.1) >> +>> endobj +2356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 215.53 263.65 224.377] +/A << /S /GoTo /D (subsection.24.63) >> +>> endobj +2357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 195.849 287.232 206.753] +/A << /S /GoTo /D (subsubsection.24.63.1) >> +>> endobj +2358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 179.201 273.065 189.128] +/A << /S /GoTo /D (subsection.24.64) >> +>> endobj +2359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 160.6 287.232 171.504] +/A << /S /GoTo /D (subsubsection.24.64.1) >> +>> endobj +2360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 145.033 264.108 153.88] +/A << /S /GoTo /D (subsection.24.65) >> +>> endobj +2361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 125.351 287.232 136.255] +/A << /S /GoTo /D (subsubsection.24.65.1) >> +>> endobj +2366 0 obj << +/D [2364 0 R /XYZ 132.768 705.06 null] +>> endobj +2363 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2400 0 obj << +/Length 634 +/Filter /FlateDecode +>> +stream +xÚíšËrÚ0†÷~ +-í…UÝ/Y¦¹Ìd‘¶‰wL&F¦ÜjhÞ¾¢Ðj¡,2¤•daɇç_ò®³ó*ûrEÐP [T#€)…R( 4‡BcP A/ÿúí¶º¼­î‹’H­uþò\n”ÃÍ:Dr„þœ úR‰'ßTÓ.Oᤠ‹ $@ò€$Ñ+HA{!.h|Š$QÉ—ì‚®HT¨“É™v8䉼‚´,0Ê7…àAk*I@ùæ=*\1ÁDL>˜Ø¦©™‡¬o˜Fû"'YâÉ—îòô3)®mO ù@:ÛËAó3d»ÄI„Š”,nï +']ÂIrHÉóö‚tð¼›ú©)xÐKS(ÞíRò½½«œv™z‡ï­PLÛ¥ä{û@Rß»1áùs É¤˜ŠVŸTrÁ}kž:¸à+òoŠDääpjËÿþÑ +JrôgI@-©r ) ©è~€k37M½çÑb¸+«§ß{@ë¶ÂÚ£3BÏ°j¯,Ð]m´U„EÓ^ôwòÐTæåt2èFlº!/›±yË»ýÊDò +endstream +endobj +2399 0 obj << +/Type /Page +/Contents 2400 0 R +/Resources 2398 0 R +/MediaBox [0 0 612 792] +/Parent 2296 0 R +/Annots [ 2362 0 R 2367 0 R 2368 0 R 2369 0 R 2370 0 R 2371 0 R 2372 0 R 2373 0 R 2374 0 R 2375 0 R 2376 0 R 2377 0 R 2378 0 R 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R 2384 0 R 2385 0 R 2386 0 R 2387 0 R 2388 0 R 2389 0 R 2390 0 R 2391 0 R 2392 0 R 2393 0 R 2394 0 R 2395 0 R 2396 0 R ] +>> endobj +2362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 654.082 290.758 664.986] +/A << /S /GoTo /D (subsection.24.66) >> +>> endobj +2367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 636.458 287.232 647.362] +/A << /S /GoTo /D (subsubsection.24.66.1) >> +>> endobj +2368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 618.834 300.173 629.737] +/A << /S /GoTo /D (subsection.24.67) >> +>> endobj +2369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 601.209 287.232 612.113] +/A << /S /GoTo /D (subsubsection.24.67.1) >> +>> endobj +2370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 585.642 268.073 594.489] +/A << /S /GoTo /D (subsection.24.68) >> +>> endobj +2371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 565.96 287.232 576.864] +/A << /S /GoTo /D (subsubsection.24.68.1) >> +>> endobj +2372 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 549.312 277.488 559.24] +/A << /S /GoTo /D (subsection.24.69) >> +>> endobj +2373 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 530.712 287.232 541.616] +/A << /S /GoTo /D (subsubsection.24.69.1) >> +>> endobj +2374 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 513.087 273.613 523.991] +/A << /S /GoTo /D (subsection.24.70) >> +>> endobj +2375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 495.463 287.232 506.367] +/A << /S /GoTo /D (subsubsection.24.70.1) >> +>> endobj +2376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 477.839 283.027 488.743] +/A << /S /GoTo /D (subsection.24.71) >> +>> endobj +2377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 460.214 287.232 471.118] +/A << /S /GoTo /D (subsubsection.24.71.1) >> +>> endobj +2378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 442.59 270.096 453.494] +/A << /S /GoTo /D (subsection.24.72) >> +>> endobj +2379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 424.965 287.232 435.869] +/A << /S /GoTo /D (subsubsection.24.72.1) >> +>> endobj +2380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 407.341 280.158 418.245] +/A << /S /GoTo /D (subsection.24.73) >> +>> endobj +2381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 389.717 287.232 400.621] +/A << /S /GoTo /D (subsubsection.24.73.1) >> +>> endobj +2382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 374.15 268.631 382.996] +/A << /S /GoTo /D (subsection.24.74) >> +>> endobj +2383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 354.468 287.232 365.372] +/A << /S /GoTo /D (subsubsection.24.74.1) >> +>> endobj +2384 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 337.82 278.046 347.748] +/A << /S /GoTo /D (subsection.24.75) >> +>> endobj +2385 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 319.219 287.232 330.123] +/A << /S /GoTo /D (subsubsection.24.75.1) >> +>> endobj +2386 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 301.595 269.737 312.499] +/A << /S /GoTo /D (subsection.24.76) >> +>> endobj +2387 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 283.971 287.232 294.874] +/A << /S /GoTo /D (subsubsection.24.76.1) >> +>> endobj +2388 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 266.346 279.152 277.25] +/A << /S /GoTo /D (subsection.24.77) >> +>> endobj +2389 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 248.722 287.232 259.626] +/A << /S /GoTo /D (subsubsection.24.77.1) >> +>> endobj +2390 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 233.155 266.968 242.001] +/A << /S /GoTo /D (subsection.24.78) >> +>> endobj +2391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 213.473 287.232 224.377] +/A << /S /GoTo /D (subsubsection.24.78.1) >> +>> endobj +2392 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 196.825 276.93 206.753] +/A << /S /GoTo /D (subsection.24.79) >> +>> endobj +2393 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 178.224 287.232 189.128] +/A << /S /GoTo /D (subsubsection.24.79.1) >> +>> endobj +2394 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 162.657 263.302 171.504] +/A << /S /GoTo /D (subsection.24.80) >> +>> endobj +2395 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 142.976 287.232 153.88] +/A << /S /GoTo /D (subsubsection.24.80.1) >> +>> endobj +2396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 125.351 264.756 136.255] +/A << /S /GoTo /D (subsection.24.81) >> +>> endobj +2401 0 obj << +/D [2399 0 R /XYZ 132.768 705.06 null] +>> endobj +2398 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2426 0 obj << +/Length 1129 +/Filter /FlateDecode +>> +stream +xÚí™ßs£6ÇßýWð3EF$”·ë¥ws×>´‰§}ÈÜÜ`m TÈÉù¿ïêvÏ8s7sIü­ÐjY¾ú¬ Vä-½È{?ùy6™¾‹©Ç§ÐÌ&1šy”§ˆrìÍJïÆÇA§‘ÿ&ÀIêÿye{¿Uó,‘>Í>N~™Mþ™`yx#¥^±žÜ|Š¼?z"<óîëÚ# ¸b=±ö®'L"— $—.âÕo4Ηa¤Mš2“Ôæ'(ÃHgEþ¥PyU‹Òf})úBVªÚÆä<ÜË» )§> +ÂæüXÍAž8‚«„ѽëÿÕÊ ãqœx!f Qò M¬û½’½è>ÿ`Œ}tmåyJYëJ,„M!oŸFìǔ雈vT³3N{ÒŒ*ìpêš8¢ }}œÈ§cÒ$#œNß’¿œF%˜œq:†SºÃIÉ MOa‰$Ñ3Ú¡¾Y陬cdÑY§oTYòß{ôŒÓ±JcNª½EÅã9¢üõ~F±3NǤÉF8}>õÍÇbþ|ibO}×e/&ödšø@Ó¦;™¥”=û êÉHñ3RGâ‘AJÝWhõø/rLžßù7$k,ß™¬#EDZ!ë¾T'•%ø¥ •=©ÿ“ù¾2æä'ˆ$4ÖG !aðÿn-G1'»£3ù+gˆÀˆ§© ”ñ8s“Ñ0ýC£d€3¿-7Å äÁI†ž«“ávîlÈâ3¿Î•è•éPÿ.À©/d¯cØává µªzçU¶Åf-åFÜuæçu€¡2ôŸ|;8çAAÜ8 ûUÏëáÖ Ù®fö\çÖ¬_A?Böó7JP›ÿJ©îb:íó»¼iòjÚfÙlP+—ÓN¶‹BõÓüN†5H9=\—]Æ ]æzEˆ]ݳ§QÚêòâ6_§Ì‡[iÁîªRôv8·M¿™÷BY[+¨[5„îUÞ”¹,mï­ ‰Ê\níµE+«K 2ù¿QkQ!ÕLAòÖݹXÝN–…óJYÇ«×o­µ® +Ù-ÐÔÖ5`ðÂaŠáépc¨ 3 ž ʲÒ$þ„ILܳÃõ‡Ç„Î|ð›ç}UØô‡í¥Jµél½mé6àFˆrØXæ[Û®[·¶ò®««"×yõ¦ˆw«ŸîV_êH ¨céÕÝ{‘×jem½ Æ¥uZ›pÖ·jì€-m=TŠ¿_U…‹±l…s™ ­Á¶mJëÔWë®Þºéfoœ‡»\G +TͤJmÁ¨%äÂT_a…k¹« ÙnTØ ##ñ‹l/à°X45[,Ë_AùntÕvÆŠaB®†©• ¿{ò1B_=Âåbä”ÜáX™"ÎH6>VÐ uú¼°·9ÌA;[m†÷Žû$± Ž.br3Ûƒ÷”³AœúP– ݹ“a¾ÙZöI»l¿l—¢9|ä?¦™q +endstream +endobj +2425 0 obj << +/Type /Page +/Contents 2426 0 R +/Resources 2424 0 R +/MediaBox [0 0 612 792] +/Parent 2296 0 R +/Annots [ 2397 0 R 2402 0 R 2403 0 R 2404 0 R 2405 0 R 2406 0 R 2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2412 0 R 2413 0 R 2414 0 R 2415 0 R 2416 0 R 2417 0 R 2418 0 R 2419 0 R 2420 0 R 2421 0 R 2422 0 R 2423 0 R 2430 0 R ] +>> endobj +2397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 654.082 287.232 664.986] +/A << /S /GoTo /D (subsubsection.24.81.1) >> +>> endobj +2402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 636.458 274.171 647.362] +/A << /S /GoTo /D (subsection.24.82) >> +>> endobj +2403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 618.834 287.232 629.737] +/A << /S /GoTo /D (subsubsection.24.82.1) >> +>> endobj +2404 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 601.209 265.314 612.113] +/A << /S /GoTo /D (subsection.24.83) >> +>> endobj +2405 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 583.585 287.232 594.489] +/A << /S /GoTo /D (subsubsection.24.83.1) >> +>> endobj +2406 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 565.96 274.728 576.864] +/A << /S /GoTo /D (subsection.24.84) >> +>> endobj +2407 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 548.336 287.232 559.24] +/A << /S /GoTo /D (subsubsection.24.84.1) >> +>> endobj +2408 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 532.769 260.89 541.616] +/A << /S /GoTo /D (subsection.24.85) >> +>> endobj +2409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 513.087 287.232 523.991] +/A << /S /GoTo /D (subsubsection.24.85.1) >> +>> endobj +2410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 496.439 270.853 506.367] +/A << /S /GoTo /D (subsection.24.86) >> +>> endobj +2411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 477.839 287.232 488.743] +/A << /S /GoTo /D (subsubsection.24.86.1) >> +>> endobj +2412 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 462.272 263.092 471.118] +/A << /S /GoTo /D (subsection.24.87) >> +>> endobj +2413 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 442.59 287.232 453.494] +/A << /S /GoTo /D (subsubsection.24.87.1) >> +>> endobj +2414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 425.942 271.959 435.869] +/A << /S /GoTo /D (subsection.24.88) >> +>> endobj +2415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 407.341 287.232 418.245] +/A << /S /GoTo /D (subsubsection.24.88.1) >> +>> endobj +2416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 389.717 264.208 400.621] +/A << /S /GoTo /D (subsection.24.89) >> +>> endobj +2417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 372.092 287.232 382.996] +/A << /S /GoTo /D (subsubsection.24.89.1) >> +>> endobj +2418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 356.406 253.688 365.372] +/A << /S /GoTo /D (subsection.24.90) >> +>> endobj +2419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 336.844 287.232 347.748] +/A << /S /GoTo /D (subsubsection.24.90.1) >> +>> endobj +2420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.716 321.157 255.899 330.123] +/A << /S /GoTo /D (subsection.24.91) >> +>> endobj +2421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.63 301.595 287.232 312.499] +/A << /S /GoTo /D (subsubsection.24.91.1) >> +>> endobj +2422 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [132.772 196.692 403.756 206.59] +/Subtype/Link/A<> +>> endobj +2423 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [422.685 178.445 478.476 189.349] +/Subtype/Link/A<> +>> endobj +2430 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [132.772 166.49 296.159 177.394] +/Subtype/Link/A<> +>> endobj +5 0 obj << +/D [2425 0 R /XYZ 133.768 286.9 null] +>> endobj +2427 0 obj << +/D [2425 0 R /XYZ 133.768 254.972 null] +>> endobj +2428 0 obj << +/D [2425 0 R /XYZ 133.768 254.972 null] +>> endobj +9 0 obj << +/D [2425 0 R /XYZ 133.768 254.972 null] +>> endobj +2424 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2436 0 obj << +/Length 2188 +/Filter /FlateDecode +>> +stream +xÚ­ÙŽÜ6ò}¾¢‘—¨•†:[`±p&cc$Ž=³‹,ì<°%¶Zm’òdþ~ë ûrÇ»ö¥»XU,‹uJ,Ú…X¼¹úáñêúuR,ª¨*àïq³ˆÓ4Z墨ò¨¨âÅc³øÄQ² c!DðFJË~&¹ºq³Lò`Òƒ´Ý42R®§Ù2h·a¨ïÖZê’'q$Ë?ºº{¼útƒbG•Èõpõá±h€øÓBDiU.ž‰uX¤°Æ¸±_<\½»'——.“¯¢$Íù2;=-ã<øÜ5 +´Kájœæv‹p†w:܉vbB«,#$¯G…wfÜ«eœæÁ¿Þ3©!ÒgUûG*|˜nèÚ­eðycæ°g»õ ZɆe;™¬2ZE·®4¼sµø@ ¯µú4C ÷n÷+ó„âUÃËw³2áÅÄ >lN¬AEPoåÎb~¦D¶9/[>±Dç–<®˜¡ˆªªƒæ‘p÷ëdÕÍ׬—PÁ@Ç2yrÈ•i‘±5Ƨ=îûe.\@\l¦™B¸ \„k ¶¹…ÇH+È š±[W üÎ=»™ÛVÞ°ÞøÒ!ºÁ—JÚŒ†p²U^Ê7XÐÍcN +Ÿ£ãMé++ è¼•Ë6°æ¼À¾[ ªÅ"g"v½’F1a6êlŸ3€;ZËš½Ãéô¿‡Þ™÷`ì>#?Ëq”Ûãø[Ï­¹þG«§y÷w =Ju_yø¤¬¢¼Ì|XS<+è@̬9u„žåréH¡5J Ö¾AÛ¶¬U#y/9-KLÈk¡N¯b8%Í"Qþ¿û<>PœÚ4É¢4«œ·“aV¦sȯ +xkÆn¥a`­”cäG. +¸ªE¨‰ÿÁ‡ë'ûŒ=Å@3…ÃÖ"6¨Pæ©#YP¥nÌ¥4ÍU•¤ÀØè)"8yÆ·#«½ H©$Áí4 ÓØ +seïÙ H.è(dòÂÜ9·§" '3ô¯T‚^®_þ"&ñ@È•¿>Ü3ô{ÅyÆUYaÕòPîÞ^ßßÝòÈÕM\U‚—E.¾C!áíwÇŒõö¢2°j€~VTò˜Äîâ‚Q9ë–¨h§9›¹®–39ÌA1àôŠU¼$Ån«Š´¢ +–Ó ˜ê[ÃËÓlˆ¢ÙÅÖf×i.&å¹9½¶.ÇeÕ‘«„)¹>g&ÞßÝÝ1þÁ6Œ‚¸ãÙK¦â¿½}¸ÿ=ŠIyŒ‚UæÝ ÷øãr :ÿ álø6H–úb»±ƒ\âÇ߆0mÔöß®›ÇÓ:s;ÝZ;J@«åÛeíPÆjW²15@ùÜP¯?À…9àŸc}2¦º„¯µâža¤öÊÂc+r"¬lóXû'+¸£Ä1ÅQ}@´³¤ð㢜ˆ**W±Ï³ãd/ä¤8òxßbµ³ÔШÐLFçMü¿všÂÌ5Zä@Ë +Laœ¯¡ð§ÕiÔ¡·wõÜK½„øÂwÍÒ`?5áwtIš ·Òº©ÐRï…È~ª)×VZÅ ôä'°Ž #ãýX¹vd¨Rá^g¯‚aŠÏ žãé'Úe{írýºÝÜ/±œºsîß2“&m¡äaPG1‘¸q»»ßÞ£]Þþân„áî •Ôv ~T0R†yšrcÄÛÍEw?ö—8fû$p,4 £ž;l¦^ƒ2Ý°Û6:€\ZÏ;Ë\õkŽ=wô]ŠY/~­\Zéx´€]4ž\ЦŒ¹'¦uy¯—ÿ¯–y¼;r7’óè=éý€o¡÷Wn$o:SÏSÃÅj/Îë|êêüüùϋùQñ§L¿ÿµ†?ò˜‚’}Ï®Hy!M¡w4L’üç ð|˜žÌ¦©Ÿ$é\b«g­]£tsP—ëæ²^ƒÓ’›Ã¤-8ÓÈy/TFYÛ™:Qzù¸¨œÍËUPîcr„u‘Þ¨ÃTê„‘£0ñÛGÝœQëiØÁCêkiŒ EÑG˜É%ß½¦ì7æô{S Æž}z£y‡Ï +m7¨ojÕJxµŒ_íÌ[N§¿šzVQ–æ‹0+à^)Kýéó|2˪?p>YæŒEzʃƩ¢¢¬¾EHRžð\üüXÁ`–~ËÇGÿ®´JËãŽÐÆÃœÆ +r;½3ßC?ngoIW•3þ‹ÅM’ÞÄ%¯!äúðýWº?±ÀÄ~ô•nížúÇéÏè®Ï¯üJÏÊ+ +endstream +endobj +2435 0 obj << +/Type /Page +/Contents 2436 0 R +/Resources 2434 0 R +/MediaBox [0 0 612 792] +/Parent 2296 0 R +/Annots [ 2431 0 R 2432 0 R 2438 0 R 2433 0 R ] +>> endobj +2431 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [159.671 577.305 478.476 587.586] +/Subtype/Link/A<> +>> endobj +2432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.007 564.727 478.476 575.631] +/A << /S /GoTo /D (FAQ) >> +>> endobj +2438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 552.772 154.142 563.676] +/A << /S /GoTo /D (FAQ) >> +>> endobj +2433 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [150.486 486.372 439.402 496.27] +/Subtype/Link/A<> +>> endobj +2437 0 obj << +/D [2435 0 R /XYZ 132.768 705.06 null] +>> endobj +2439 0 obj << +/D [2435 0 R /XYZ 133.768 465.417 null] +>> endobj +13 0 obj << +/D [2435 0 R /XYZ 133.768 460.326 null] +>> endobj +2441 0 obj << +/D [2435 0 R /XYZ 336.177 293.296 null] +>> endobj +17 0 obj << +/D [2435 0 R /XYZ 133.768 277.048 null] +>> endobj +2434 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2445 0 obj << +/Length 377 +/Filter /FlateDecode +>> +stream +xÚ­–±nÂ0@wÅÎ÷ì‹›±j‹ÄV‘v(4Zþ¾„ +*ÄMg'ççw'‡0„¾xÌÄËqTpMÈf ‰Tê<¸`• ²)Œ¤VÅåp[Ue½)¦Ql,ʧ"ÒVî“â«ù@i IÑ{6Ï™øº¹AŸ1µ +ha²£w„iós¨(xø>¦®€’&U.a(^v¢x!Œç•ÁœM•!Û +¿c§s0Šm£ŸoVGãyde®ÇË$„X7ds#E³P’Šã®3ÜM Žzœá€G9<µ,ÏÑÏ b¬CŠ¾¿"bxpdˆÂñàÈXŽžXä¡T%q<ÜÄs0D\rK\‚" ä²'WÇ€àUJ· §)Å©’?ŸR|Pä:Ã~±.êüo4)×mÌ>¶§YeÒ.’6hìêißî b·šEÆʲn7ùa³«#Je¼\Œ;Âxß!ËŸý¼Xÿ/ù‰S® +endstream +endobj +2444 0 obj << +/Type /Page +/Contents 2445 0 R +/Resources 2443 0 R +/MediaBox [0 0 612 792] +/Parent 2447 0 R +>> endobj +2446 0 obj << +/D [2444 0 R /XYZ 132.768 705.06 null] +>> endobj +2443 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2454 0 obj << +/Length 452 +/Filter /FlateDecode +>> +stream +xÚ½–MsÓ0†ïþ{´»Z}æt¦7Z—ƒ›¸!3Í&)äß#ÇN‡24U¦'IÖêÙWÚw,!Lá*ùP$ï>K^xšâˆYXãÀx-Œ'(&0LIp–"¦·›ÕjY¯«I–KéÇ*#>ÎÆÕÏð­çTe£â:ùT$? +9èˆI£†ñ<Ž&aòP°wðk:V!”š…p›|I°Š=Áx,X£hÁh+$ëVð7)õNÇ~ sä—ëùNñ4ÓiiÔI BN,Ï„`<Å]ñ†9‹±º€Múîø4'+T(w°¡0Ê·äõl±}Ÿ‘Òé×›¿ :èᎰ=7uTe…Vü?½!_ƒßuóÛëigû›]d£bH£g“¿üd™ä›eâWñ P¾Ò‘‚~«ÍJ¹Y©"÷*u¬  X‚‹¬×ËO‹£í©xKˆ­¹Š­¹Š.™r‘×?„gï}ï„åsnýý³ÄoÙ?Kœl:qWÕ¢ªËÃ[d¹hÛâûfÿï·Õ6„ÉríH"v½ûLêtY·ƒ²<ÖÛ4˜Ýu„»m‡\þÞN«Åé–ÿé +endstream +endobj +2453 0 obj << +/Type /Page +/Contents 2454 0 R +/Resources 2452 0 R +/MediaBox [0 0 612 792] +/Parent 2447 0 R +/Annots [ 2448 0 R 2449 0 R 2450 0 R 2451 0 R ] +>> endobj +2448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.677 461.339 206.286 472.243] +/A << /S /GoTo /D (index_supp_dev_footnote_one) >> +>> endobj +2449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.677 441.414 206.286 452.318] +/A << /S /GoTo /D (index_supp_dev_footnote_one) >> +>> endobj +2450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.677 381.638 206.286 392.542] +/A << /S /GoTo /D (index_supp_dev_footnote_one) >> +>> endobj +2451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.677 262.086 206.286 272.99] +/A << /S /GoTo /D (index_supp_dev_footnote_one) >> +>> endobj +2455 0 obj << +/D [2453 0 R /XYZ 132.768 705.06 null] +>> endobj +2452 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2459 0 obj << +/Length 512 +/Filter /FlateDecode +>> +stream +xÚ½VÉnÛ0¼ë+x”bß#ÅÍ77iA6B/n²¬8¢¥®ìÔ_ZK!¹Fì(B/")ò ç ‡ 5rã| Ÿ™$†i‹ð‘ çTIM¤T$áŠ,\¤ÜóÜûmY›*Yy>à^' +w—ÆÉ/ûƒ+Ã]á=„·Î§Ðùé ö0‘$Μŕí¼%@¹Ñ䥚ءx|&÷ÎWZ¢0 }Â(E¤P”qÑþÁXã‹# _XúQU¥ùò^õñÑP üb‰§‚‹ô ÿh!|T4°ùø, :hAçž}[YQ¥‚»;|’f-æÂýþퟕ™ ¦éM×—‘3ŠÂØY5qV„¬F_{Â8‹Oa̓úM(ÙX”NN”êU=» k=[Ÿ\Í¿L!^·T…>oAq”s6Òu´ Fz¯ŽFv¡ó˜Ý®ª¼»ºþÿJõ ‚ÒŒlRŽnàÕ ¨Xr˜$!˜€Œ Ìû¹X¸üXlt—®Ÿì1°žÔ¡’*®Îï§ò%ÃÑ›Ñ?ÁËAçÉ[×h›È[îÜîQ ©Q\÷ÚP.[Ío’<ÙD_EÞ”áÓ¶Ó=n*AS ÌŸ¡nZ  ­=zL¸Å¦iD‡ÆnãqåúÏé²EXî[Èâ÷~äÇ)ÿì÷1 +endstream +endobj +2458 0 obj << +/Type /Page +/Contents 2459 0 R +/Resources 2457 0 R +/MediaBox [0 0 612 792] +/Parent 2447 0 R +>> endobj +2460 0 obj << +/D [2458 0 R /XYZ 132.768 705.06 null] +>> endobj +2457 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2463 0 obj << +/Length 475 +/Filter /FlateDecode +>> +stream +xÚ½UMoâ0½çWø˜âmnEí"UÚÃ.Ùj%¶‡)Tj€MÚþû58¬¶UK‚z;ö{ó2oä² @FÁ0 ¾|åH,µèBrG˜T£!hEËH2'“QÅ ÂqµÙ¬‹2›G1W^fSáö~–=ºB[bt›\WIð'`.ÖàdÔ‚"³<˜Ü™»ÃkTXCžöWs"¤»ÊvÀ2¾P …–`h +V@9h‚JS.”ü›sµ×qÀ‘I¬œü´´°yÊ9Ãö)˜9Jþ1¸èžöB)?r/fšJWgÅšqœ§Eéí¦e™/~s1©Â›ÿ99hehdj•½N$5U’¿§=ß³/"¦f¹¸‹«Ð`bx6*Á—Û7|Áh$|Üi=ñÏñð¬~8jaßï¥êqjxçNth†¼cÁöp”Ø';JÝK<7دû·‹à•&ËêàîÌ/¤ \ ˜ñ;P¯îv/éºð›t·Ù‘Ðaüp?­¦õà¸\?¿,²Õñ/ÿÀ^ß) +endstream +endobj +2462 0 obj << +/Type /Page +/Contents 2463 0 R +/Resources 2461 0 R +/MediaBox [0 0 612 792] +/Parent 2447 0 R +>> endobj +2464 0 obj << +/D [2462 0 R /XYZ 132.768 705.06 null] +>> endobj +2461 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2471 0 obj << +/Length 741 +/Filter /FlateDecode +>> +stream +xÚ¥VKs›0¾ó+t„™ ê ä–¦MfÒIg’xzqs,ÛL1r§É¿ï‚d׸i˜“^ßî~»+튠"èÚû8ñ>\1…œ(&sD9Ç‘Š‘J$V E“šúó ¤„ÿa³^›ºÕ³ d’øŸt@¥ÿTäº %Ü‚ÇÉ÷yâýô(Ø ˆîé¤8!å+oúHÐ oÁ<‰Ñ¯ºB\”v‚%zðî<−a²OXÌH„”Œ0ãÒþΘìylåÐ4”@?mŸW=åE ý”I•ò!Œ ‚nö~=ÙwÕFX9V"±Êo‹&×e™VÚlš¿ây>з§wà¼S+@-OŽqNÄwÐe¥^¸ôÜ÷Îü”=¾juuÌD¤rHß+üˆ•£Á|Ódœ‘sgÅ¥> endobj +2465 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.518 563.427 198.127 573.773] +/A << /S /GoTo /D (index_supp_dev_footnote_two) >> +>> endobj +2466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.692 543.501 210.301 553.847] +/A << /S /GoTo /D (index_supp_dev_footnote_three) >> +>> endobj +2467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.126 414.494 214.734 424.84] +/A << /S /GoTo /D (index_supp_dev_footnote_one) >> +>> endobj +2468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.89 139.047 281.523 149.951] +/A << /S /GoTo /D (FAQ_faq_tinyavr_c) >> +>> endobj +2472 0 obj << +/D [2470 0 R /XYZ 132.768 705.06 null] +>> endobj +2456 0 obj << +/D [2470 0 R /XYZ 133.768 207.655 null] +>> endobj +2473 0 obj << +/D [2470 0 R /XYZ 133.768 130.081 null] +>> endobj +2469 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2478 0 obj << +/Length 1213 +/Filter /FlateDecode +>> +stream +xÚ•VÛr«6}÷WðV< †¼ÙÎI2¹7vO:“æAÙV-+D|ܯïÎ¥J;yA,-ö^{邼µ‡¼ËÞdÑ;½/ ²šÅÊÃQŒ’ÔK²8H2ì- +ïÉÇÁ°?À!ŸôÃØ‘ýhä8[æýA#ÿ–å´ªi;@#?í?/®{ß½¿z~ƒ<ü†Š½¼ì==#¯€× +¢,õö-´ô¢!@±žÈ½yïײ±¢ÿˆ9 F£ÐK`Š†&æ{¡èYH7ÑÃ){hPÔSø¬1@ˆÞÆAšŒ`R‹Yl ³a8ò‰Ê†7º›øm…€¼kûMv ÈE¹dQLTæ½X™öbv96RæÕ¸£Øÿñ`F%Ë¥ÈE¥úØ—‚s*ûqì:LˆÝD6À cœØBm!Bá)Ƨ8<ë¢Qª€Š¤±_7:¸0¶AèVmì nòèãاܠ;LÝìvB*3X yœYÓ"Å‘':^V 4Ùê8‘06îûù¢á…±ËÒ8ÅßS2Ñ"x~W§ÕزE1”íkŜŽ/®†¨Q’ƒï̈Õö­i~›OLG Ó®tF¤VfTSÉ·3+E¥ùœ[ê¥dÅÚöó Û™^S³jmÿR™öÕ-ä l‰gô [E"¤¡–RIG_[£ÿŠƒh˜"˜ŽôtxvÓ£ÌÏÛ‡¶xðb%)åÓojZ˜^ëi “´`µ’l©yE‹ýû;)´Ù^XÑM1^„)+0»Ð±ï0ð7‚¨ +¦-V»<Ö.@hIUðί¾Š"od#„»´ÁR™Õo^o¹ h¨nÉ‹´"´#ýÝ™ŠÝA²õF™á(F9<°â,ËôrL»8³`˜Xç>RYÁŠnqA9/IU¼Ú|ΩV¼ý)©$'²£ª#›ŠJ’‚Q×ìiÉ4­‹ê†2µ1ËÜ*]<¢9þï¥c¼l8Ûº(' +HÖ€®©¡Í…mRv¨fMáÍ^½&à§d@µ!²°8Z×,߸ØîȺjl¥¯Åkád¼"’pËwÃv;Ù”H.,Ù-)Ií"šr¶Zu˜ýÇ¿Y¦±TMò–íľÞ2×Øpk`w á[F÷,ÿÛE¹… tSô‘â”È æžÖ{Á g¶‚3[Óï¿\ðƒÛ¼±4˜) +‘;í1® +I¬ÞäZmÅguíª?#J”%å.Æ .$«?lœÜ©’âÅE:æô'ìVG^±û€ë¼¢%îè@¢mIœ)ÃA" +Ñmc«¶>™]¬× •`ušÃ¡ÀAÖµ‹wßô‘Ñ]Â<·š ?t¸­àî´ï·^½‘°A÷…9èTþoþsÕ”»Õ'ëxuäÚ“Šî„»HW”—Ý7 ç•ÛŒß$³›îÄJùH‹4Rî•z {ÍÚ›ªv¯ûó’)i5úL´ýÄªìž + — öbsòîPqÞn3¸ƒD_¹ÛvwÙN¥(}{ÿN³ ê⹤ QÔ^Ÿ„½-,6éœS{ÆMƒÑYáԌڃÈ^Zàpm/rñg·„åÁRŠŸíÏ)ÿ¹‹'­ +endstream +endobj +2477 0 obj << +/Type /Page +/Contents 2478 0 R +/Resources 2476 0 R +/MediaBox [0 0 612 792] +/Parent 2447 0 R +>> endobj +2479 0 obj << +/D [2477 0 R /XYZ 132.768 705.06 null] +>> endobj +2474 0 obj << +/D [2477 0 R /XYZ 133.768 606.81 null] +>> endobj +2480 0 obj << +/D [2477 0 R /XYZ 133.768 553.146 null] +>> endobj +21 0 obj << +/D [2477 0 R /XYZ 133.768 548.538 null] +>> endobj +2476 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2483 0 obj << +/Length 2036 +/Filter /FlateDecode +>> +stream +xÚ½Ëv«¶vž¯ð=#|—CyøÅéˆØĦË1)à¤YmØÈ1 prò÷wKÚÂsºÚîÄH[ûýÒ–µÞkOë-nî›îqÏR­1|Â}O7Mu2žöÆÖH[z/Œ{¿*FÿÖiJØ· …Òtwˆ’\€¼÷¾®)¤`¿ï ùèpb˜ŠÕÿ=üéÆ oþ¼ÑA’ÖÓœuÕÒF½]vóëïZ/†ÃŸzšjZÓÞGÍzæPuF˜ö‚›Ÿo´¦º¦Ù›¨ÖDÓ/ÔMTà uÉkžT¤;Ö4% ûê#*p·È¶ËS ØÝZêp<á|òJòªºßJžnòäeR}^"Ì¢4ÙÓ"O"µÉÕ±ÓT ÉëAò.HIŠw }¨šÃIïVŸª–a 2ŸÄIYÉöT%4TQ‹Å©D•<)é©Ø‘Ö6É£uý²r ÖIu@ Š3„žª×d4NöÉ.bJ yíÎ#)²¤ªŠ;ô=‰å®:DUË{š¦ô#É_ÅvGó8a|ËߌT_¥*¤†ºü—-uÊé1£.Oµ‚×tÌŽÆR©¬d ªH:±V4ÚÒ÷šæøÉ×ÙœVÉŽ $q‚¢ÓD2—J\YšÇí0h—FIF +‘ ·Âèí ia;#®½AŒOÒaÛ!ÃÿŸCjƒ®ãQÇtwÊ £‹ÒùAf;D\fQEŠ$JË®>× ã|mnÓÑÿ8Nk’œÕ¨5Ï£Œ|§ûœÏ·šÆÐŒŒv1:—µ¯ Bw*yd&Æ–ÔMFF…Š/Éc@'—½|–QÙoEúÈ. +BÇŒ;\·¢vš”½Z¶$qt$;Ö†¤¤n\k@y£•åU4šm5\º^ Þ}ølûŽØIè£ï=¹sg.vw/â.mæ=¾øîbŠíÒ[ÍIíõ\"­Cß½Û„ž<úbRÌ—®+BRÚkèüòè;y>?<®\©¨îÛëÐu¬7w=[mæîz{/k+÷Á %}è ζ]è;²P¡{ñ}püÙì;wå†/-7ܻẶá^a£Ÿm?tg›•àÇÿèN—sdˆæn0[Ùîƒ3W¥ÅÒ@tÚ“³FSƒ¥½Zýuì¼çµã_:ø:pw]¾Y¹öÝÊiÛ%C7w}gÖAimg\à°‚GgæÖ;çÜnû/ƒZ¯k€’óó¸!Š´ì… ÎoÚHû·¹Ù?ÛøÎCíGˆôµýÁæ.Ýp¢ž7o¥jàøOîÌ ~Di^ÐJMà ¤ò¡=¸¤5 y$±„Þm—'ÔµOÜuèøþæ1t½5دËê|†”±µA伕¢ÞºÛÒÐMxiq]2à²öI»}ε‡rÕž?¹µÇ›œ¯ý•¸Í"уÍlÙLqÞ×ù“…Ìcƒ=nåølZªa™õ›E×´¿÷h©yÂËd4â<Ùäio CÕ‘Ÿ ×f_Ÿ*üšcÓ… Öo(FË4BÚçþ¤¥;Ênv&ŸÝ¦ü{@=TMN«b ×!Ó‘_‰ Ó«1R@ûð£G6áHŽ4- nöìn¼àoWIqÙ×Í‘òäÿGFAŸ¨cãü ⢬¡Âîdð%›è Ÿ&²”ˆ3&U@ŬÏVpÿ3õØ…:ŸpÙ³‰Žaæ„ðA‹ÓSÛ2E^ú ÂB¦Áy,±Ã´G#áš0Œ‰â2ÝŒ±REo<ð¥ØfQÎ} +$îBqÀ…ÑâM¨ÊÏ^ ŸÕF#xšš¡Ì`<% }?ûã‘Õ`˜:ºH_ z: +¶l kIl»]&a„üÍG/c8†!.Ëhž~ +h$€•ÌvDŽJ„s¡Ä³aœ€kÀÐ^Ü ÜúepÁì7M3ò(½ÐyŒïpæ—oÜ9»SmSLÇèxLñEù݌Ŋ]–ì +ÊVæu CwþBtFºx<°Ðˆ„92”’ìð½Ái*Ž!ø‹l…ÞÀyàÉ1Ùsþ à±.‘ ÷,Nô¡òÒ×Y®ÊUäÃug áÈÁâ²¼…“”ù¦nb±ãKÐUfŒD¼aF$>‹+N`Ï«[é!OLß` ƒ×<ÃxË©t€?˜ð_)¯(Ò2ß/§&ÿœDL4ˆ¸Ââ@iü…•¥e5d@?Í¢¾ÎkÖ[ÄëE ÂZ<Ø*h0oï:|ÙŸ*Â5‡ã ^x]é¹vo¬> endobj +2484 0 obj << +/D [2482 0 R /XYZ 132.768 705.06 null] +>> endobj +25 0 obj << +/D [2482 0 R /XYZ 133.768 366.95 null] +>> endobj +2485 0 obj << +/D [2482 0 R /XYZ 133.768 332.988 null] +>> endobj +2486 0 obj << +/D [2482 0 R /XYZ 133.768 332.988 null] +>> endobj +29 0 obj << +/D [2482 0 R /XYZ 133.768 332.988 null] +>> endobj +2487 0 obj << +/D [2482 0 R /XYZ 475.295 158.304 null] +>> endobj +2481 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2491 0 obj << +/Length 2721 +/Filter /FlateDecode +>> +stream +xÚ¥YA—Û¸ ¾Ï¯ð›Kä·cE%JJO“I“—}ûvÛf¶{ØìA#Ñ6YrE9“é¯/@€²ähšìëI$‚ ~¨hµ[E«wW¯ï¯^¾Õª ŸûíJHf*_©" U!V÷õê÷ ãõFDQ¼ýðv½‰Ó((Ûšï~þBæˆÖÜÿxõ×û«_ ­ÄDž‹(]U‡«ßÿˆV5 þ¸ŠBYä«GÇzXÉXNlV®þ~]()@BšÆ3-Ó,Œeú}Z‚n 'šl6Zmâ$”IAn«ªëkÓî`N’C‡ß"0ƒ%£~°fÐ7D¾öšèo{Í­Ývx\ X¸÷ck‘Ý©­ËÁt-Íü¥¨qC\ÚåCcì^×D0Ì*Š¨úSËøÒž£v35 +ò-=»íA¼LB‘gþž—|σ§¿}«#( gg€°Ôf[úø’_\r\!9j”â"T&ÁnM·A }Œ"©Ñä_ÌC£‰VÍä8²Þ3«)Òsï02ì3[ôálN·—šC†-œêa£Ýf\¿ë‰í«™n»;•;í¢7pmÇ:®v( ƒ¨÷PVŸFÉŠBcÁÃ;Ý"Ä:ßåîVÈÛÏ5ÓÉÈét $_h‰ m•¶pY–Hy[ì;;iz¡B—ã"*epÛ4‹p¿§TLIwlTŒ¶<¸@ÒõÁÔu£qÇ׈" +MÝpJh!`!$‚ynϦ"*¦–šئŒ£³’(`¡¦­šSýÌT2ôzL÷·pwÌÁüÇ!€£pB3ß#àä9!´ÜyÓ”>9a.…ZôëCG¡‚]\’yN—Yžñå—ç³ALeGç½üåæ´žQyxb6b *Xj¹C–ÅàÃí7* )æge(û5ÀÏÎÈâvT˜¤ÙåvâBÑù-Rv΃©‡ÂB‡'ç¸Oµõc.Ô Â¸žñ%YpÛÖ7tž–üF¹ðÊQlšzi2L Bšon(bg‘ä\%9ÃÆè*Gt‰‹óðÄ!2g{…ꢋqXÊx·Ü>;\FäÅâöý–åt8¨~‚VséÈ–§Ÿ˜¨/|rtaKU„J}GlGyê™( xV¢ŒCåY¿f2LŸ<ú<. CùdÏ8øÔvˆw-‘i÷b14²$ŒÇÕ[8ùŸõÒªÉÜ£)þÒT²y`H.rbÀƒL]D_Ñ×WÈx5Sa¸l4Åa¢’oøAa–åS?,HÊB™eÎbê(? +nxOSD\‹DdèBníæŠ dûø·¾’5[žÌ×ÌF( +yQÔî¡z¸Y<ò!¤Kßuâ£q) —Ô½+Û²†J—ˆÎClõX„qraö‹ WB±Ìo ÐI ÌC½®D»öÅZÀ¥DCµ±ÕÉZg„òT Ú8ý·½KíÅ¥Èáö߇5” +'W˜ ,¥£/%„.¯è•Ø;–S."OŠè[‡hãÙf∔°CLŠN®®õ…wT¸7ª×ÞÜÕ=+`;N\Ù„´ßÐ|¦­É/–G -Ećª ‹ù-d·k Ÿ3C¤Ò‰tÎQ‹ç@ÿv- Mþç?°‚ÁÁ€Ï1ë1_Bœ<óôÿÁ‰Ü©ÒÒznsŠ![4À‡š1ÓÉ4îYÀÏ£º jýŽ»G&øRÜÐ +ÈÊ•Èšb"-ódvD ë< ß뉩rWí^cú$bN“ îª~%ljÈÈË8Fïò©ásÉzßòk#¿\©Ÿº!y®†À9ÝAƒ¡½ÎÔå§Óy‹)Ÿ zJ‡Îdë gHD~Ç‚L^÷j]£u‰\,Á'Rš:ô”óÕ$k°&¡æk%î-(¾”X¨Y3÷øæ²zW ðûÜ|iüÔÃUÄã¾kôb±@3r~ÊÅWu Qž‡­^ÀÖgz"úCàŠÉHx‘˜@P¹¬8ç*¾C_¶¶ñ5[îNÒ±rÞ4ÓwŠ%—ùÂ?SŠªÌgíØ£Šú“zî)w“ãåsŽq$­¡á’’J/ø(ažZMSR5Ÿ«yž@•-ëó?Ð삨 +îèã·„ø‘¤ÁÝ?ÜЭ@H·u‰)œÌ9ãYé=3XÝ ¦ÄpÍvîù¨m7Pƒ­ÀS;žÔ˜öµžQOF[6ü蘽øæÇÆW|ËÆvÔšBxú\×ýäñ³¿&*?ñ£ Š‚Ÿ‚ ã*Ã\¶—‰g€'1Álf¤¸]Ø­ÿ·€Ñ¸¢ËtÖ…NÎ}à[õš8|»r× +ËÖÓp< xâ„ßóñ1ä\þþ9c*ȹ/«žgõ<€ ‹oj[F®–Ï£T‰rtÃe™ß]i–0*ñïórú¢©<– }fê2×›¢Y275QT?ìy˜É?óûÏÿöSa‘É|ú×//àêôAÉùF=a¼ßŸ¨ñFWÔHè#¢W±|%rêÅQÄ-…#κº”bÓ˜–ðÀÏ™oº/O€à—[þ/H;­7 +endstream +endobj +2490 0 obj << +/Type /Page +/Contents 2491 0 R +/Resources 2489 0 R +/MediaBox [0 0 612 792] +/Parent 2488 0 R +>> endobj +2492 0 obj << +/D [2490 0 R /XYZ 132.768 705.06 null] +>> endobj +33 0 obj << +/D [2490 0 R /XYZ 133.768 667.198 null] +>> endobj +2493 0 obj << +/D [2490 0 R /XYZ 277.846 490.041 null] +>> endobj +37 0 obj << +/D [2490 0 R /XYZ 133.768 473.314 null] +>> endobj +2489 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2496 0 obj << +/Length 1573 +/Filter /FlateDecode +>> +stream +xÚ¥ËrÛ6ð®¯àøDÍØ,âË·Äi<Í´i­4‡4ˆ„$$|¨GýúîbŠ¤¥Ön.ö.°Ø÷‹òã;÷‹×ëÅoÃÄɽ<ë­D‘—&™“ä±—ä³.nè­–7ïûîý¯ï—7a컯EÓ+QIÄV«È ‚å§õ»ÅëÅ_‹xûN0âx¹;E½øøÉwJ¸|çø^”gΣ&­h¤>¬œ‡Åo ¢ NÁ8õÂ(&I­0t™”¼ÞT¼C4pÿôc·Œá €HT;%%JµçtÜöêÐ+og—E[rc×[ÞD~àÞßÝÑ—¦]†±û(‰tOØXfà–ÀÓ¯Ë v9: Œ¼ À;±1„$Å#GW¢ù² |W›8šT•ÆÀ5kK§!VUhõ‘Ä2m7Ÿy¡®Û²¯¸$D4– ³Rü°a†Gu¿i‹^1ð™7èžzI¸"Ý×$&uÕ#*ÜrèZ*¯Í»àœ5%6“4Aæ²Îp!'uGÂê¾Øºò®ãS¼œ±ªYƒÌ2?µæ§®dõY§]† nÕcÞ qiÛÐÿM«öæäÀÍ™lû®0¶ÆNýcÄ|Øã“h•’¢Uæ +IÔ •¢ãmÛѹVO^-ƒ(vÿøݳndîŽ+pZ”†–\Q¨Æ0(³ëXM °ÝÓƳCÇ1ÎÙ’.XxÆGW UüÚáß›+ÌýÕ¡*ÿ¯?Ÿñs•@>IpÆÝ •¸Ó­ózXãÅö¸Lb÷z6¯iÿR³ÿ¶kkû­°éX'l{Æòc]±•±¤TŽoC/ŠžZÕ±¤¼Ð²{ÞðŽ©!ùJ³CÎ>tPùãEÕOŸF8õ WÈgÛæO o¦¢=ŸcI~ª¬»ö€éqœÅ¢ÑÈj°pü=6˜ÆVˆ-ªj˜n´RÉï‰ ˆ-ûúðB“Þy¨ØñÂjwJ®‹FQ3ÑK2Ù&M£Öéû]A’âoþÜ\3ùYØÍZ‚ºƒÈIΣÖ*»åâõTÓ³¿xä /zÉïö‡˜ÄËÓ(ÿΑå^”ÄÓú(§_¥ë}OÀ^°¢F·AFXèûÒIe÷õICÃacý¦ývÜÁ„›™üã«J +endstream +endobj +2495 0 obj << +/Type /Page +/Contents 2496 0 R +/Resources 2494 0 R +/MediaBox [0 0 612 792] +/Parent 2488 0 R +>> endobj +2497 0 obj << +/D [2495 0 R /XYZ 132.768 705.06 null] +>> endobj +2498 0 obj << +/D [2495 0 R /XYZ 455.061 544.586 null] +>> endobj +41 0 obj << +/D [2495 0 R /XYZ 133.768 530.514 null] +>> endobj +2494 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2501 0 obj << +/Length 1582 +/Filter /FlateDecode +>> +stream +xÚ­XKsÛ6¾ëWðH-|“¹5Êc&ãvÚFí%É"! - ¨$Ûÿ¾ ì‚¢d%µgr‰]`ñí{)æí=æ½_¼Þ,~ze^”<6;/Œã Ï +/+Ó +CoÓxŸü(H—«1æWË(õ¿öË8÷W­ØÖËU”—yé‡ÑòËæÃâífñï"ÑÌ g¢Â d©Ww‹O_˜×óƒÇ‚¸,¼{»µóⶆæ`ë}\ü¾`„}gäyäe€KRÄ9G';‹ÈI€ãl~¼€û¼ï Ƈx­æ8i‹$—˜;Ÿ‡< +X>E^ßÜXÁú…È߉VóþaûJîF.kÕp¹¾¹9‹!‹ÙB C“bÍážÄ[AÉ)Yò¿U EÌ2뢘’ìýz GËÍ–¹ÿZÈQ †|ì•1üWÑðù2Z¥qmÇl\‚VÊ6ZRÃ-.ëÂV‘9¨¾_†ºç· 9+üí2bþ¨'=‰$OI"ԽТ®Z£ŸÑ-„*Õª;ÂF©]¼Wúù€€ò !H5U™IÕWËUl€!ã£ãL¾ÆÇØöUÿ¸ÌR?˜PäA‘O6ˆ>*r£ŸyÉüFìŒvÀ±è€§Ž\"sPc_Ó €b*ð€Òé"²*¤ÏqD‡¯æpQeóšÅF°hœåþ#€0oçqмCªñP\fþý¿à(¸¡Âµ¬´89YÆ¢å´ñ3KÙû_ÿÄí°BH¢'iƒê8îPö®+ˆy·å fNVNX£¬°7Hn÷$>ÊcßH7›wøRÐ5†DµeJȳÕ8w 'ÁãÚaàæ@"ÈV¬õã45ŠŸ—aœúýá*‚jëC%$.Õ21Ud«„|F ºð513….døµ…àjŒ:@«;pÒä"ߣ4ö¡^MY“P›H\‰ý¡²VÒn”µ&c§F¬À‰:&˜O±ßÛ4ÜmÕ#}®\‚ÊÅ“rW¼¥=9Ã+h +€²`×ídXÌÑÁ’r*Ilm1”áÈkaê|M;I•øtÆ +pù£Þ¬I¬H"Lê\¾¶sä<7Ù4à¹tgT8€IÔ)ÙÒþq°t%i#.[ã’cǽ’V`0$(5ͶVtBW³›U-lÏÌjtÆ©ñNÅ•j%`£Ž'9o.ÚóÖµf•þóñê‹œ$Q´+é::uÍSòÛni’ÿyñ 2ÚAÆȾáb*ê”›:UÆ|ÖBtz«F}qàþ \;ÿF‚_mäì²…gÔÂ_¢µ…óÞ4É +G¿o7ó¤D)oѽ¦˜ÇÐ@—¡0Ø÷CÊM»¿Å7×æÍ2£iÉÐ/ Š²~2l«¶¡ÔÊ‘NÍ +7˜ˆ8;ƒž´ˆR°Ïƒž×âm>#¤T²ÓÌ=,}‹KÌ›Î@ª$6»8 +^-½r‹‹e¸Fp’"4Ik[b©½m€¦Ì‚¿Tÿ<¸–ë¶ÑEi1íÂ",1c섵ï«C¥ Ï Ža>yŒºYèF[³I`UHÏÇ)ÓÀ>÷¸ß{®I¤‘r­µšz°qTÚÞÚ…'M¦A;t7o‚6ßÃt¦mÃtž1…‹)£e Ž´Ä§r‹y‚†9 000»‚´~„’ÛkJ ìž6bf²TÔ|…>Ú,†ëéðŒMwi\Òxt.EÈK!&“˜œd€®ûÑUv{³¼†• ^”Ê)C°:̧±ËOLè[ŸkWÿ±(á«%~Éÿîÿ‰,(ó¸˜ÿR”Aœ¹Èç’÷•¾,à›Ãˆ/o8•ã!{ůÂWcôfÇeÕ»®ñäc(Þ¨‡Ç=——*ÿ*y«@ +endstream +endobj +2500 0 obj << +/Type /Page +/Contents 2501 0 R +/Resources 2499 0 R +/MediaBox [0 0 612 792] +/Parent 2488 0 R +>> endobj +2502 0 obj << +/D [2500 0 R /XYZ 132.768 705.06 null] +>> endobj +2503 0 obj << +/D [2500 0 R /XYZ 133.768 421.547 null] +>> endobj +45 0 obj << +/D [2500 0 R /XYZ 133.768 415.651 null] +>> endobj +2504 0 obj << +/D [2500 0 R /XYZ 457.88 237.282 null] +>> endobj +49 0 obj << +/D [2500 0 R /XYZ 133.768 222.895 null] +>> endobj +2499 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2507 0 obj << +/Length 1768 +/Filter /FlateDecode +>> +stream +xÚ•Ë’Û6ì¾_áÉ¥òL¬P¢ž{KâÍÎfš>6ÞÎt’d‰¶ÙèáJÔnü÷È–]5Ù^L!â Z̶31»½z³ºzõÎf©›F°¬63OJ7Ž’Y”†n”z³U1ûäøn<_xBçõÜ BçûåÃòf¾ð#™FŽ'ç_Vï¯nVW_y V̼‘ÏME8Ë««O_Ĭâû™pešÌž,k5“°zx°œ}¼úýJœÝMLÝ-Œ]_†t·M¥æ N¡;ÓêõÜNotSw„n6¸†ŽÙ1Ÿiš2ßeºî^"NVÌ +<- ¨DEOGX\×ç;˜1æÃ;]*•7µÉDÈÐ. ËÂ#„|ßÙ×¹'õY¿Äù©cTµ/3ƒ;)œ§V£j"mš–yvÌ<º0•!"©rÎ…èý¾Ôy6XÏí2C´CÓgõÔ…óf>€»C¶USè #í%Y ¾è¥Ænäì6¥ˆÑê…Àí/ ¢ÝC§Ú_÷YyñŪi™Q×€¬N_´MŠø=p¸^’|7¦éà8êàœ¸2HéÜë±J<'o|®ÞÒŽu¨k6æ UÈZŒ ?IøbÊ’Xˆ\Ú™†Ö}ÛlÛ¬ÂÉ+ÔÜG+w¾„tþœ{pýf¯~#¾†Nšî³>Ly´ï쥥sTyÉéÓˆ‚‡²ÉO;mÈösè,±±Šä,åIæzÄ+g­núŽ»¬-£óI-f3LÜöd”³4ì  'CìB‹nÜÑšÑò8÷BGµÚABJ…˜ozmpû,ÿšmÑìqè;¯Ñ{ˆ&«¡ÀS̱äuÓGˆ’†ëvg:FtUʪ497"Î͆¶G¥ZfѼvrå`=ðÓ5Å­!Å íŠÌd묳Ñejµ$ ÚQ\°VS~Á€E ?)ãcÍ®p +¾Å›Þf/Bã–\0mÝÿD›‹èLó_çløÅg:–£p°D½áÕðÚñG3¥KVB*\ÍJè#ªøn ‰‡’p ¹]¾¡Ã¯h¹«;½Ý™3Ür¹üqyYÙrø\ÏY*jiÛ­­;@ú,B„Å#ë? d´Í›ª‚ˆZ”ºfaÅ… ë?ÒÈÍ€Z33ø¬ ¥3â¨JªUݤm— §#÷ zhSs‰<Ù‰Ö9°Z#"°/{FeLy¸#àÔ9®«¼|µúÊ’ß4¶ÅavM$ÝÉGÂãôh¼£zÛS. Ÿ{ðØœt³Gkf<Ò+Û¢¼³u&ï!¹J¬u£ïù¸v ž‚ˆl÷ñ'MÖΡfnÕ¤õë¬R×ØÅ1ÀÑ-þ.¶ÅûOm;:#k2€‹cŒˆÄámŒ$°;ûŽ +O²hjÞ=h,„­ŽÃ'’àŠúo†òÀ°˜ìŸlx[/ÿ„˜üS#MÜXþŸ¿4†¿Y"7e2þ+#I]ñ%nU­ZÈZΦ¡„­v=Ï*'  Å×¾¼öÚùB0d•JgfßXí\Æ̃k–°æ¼^6ß[U_ªü²Ì +endstream +endobj +2506 0 obj << +/Type /Page +/Contents 2507 0 R +/Resources 2505 0 R +/MediaBox [0 0 612 792] +/Parent 2488 0 R +>> endobj +2508 0 obj << +/D [2506 0 R /XYZ 132.768 705.06 null] +>> endobj +2509 0 obj << +/D [2506 0 R /XYZ 355.286 615.701 null] +>> endobj +53 0 obj << +/D [2506 0 R /XYZ 133.768 601.031 null] +>> endobj +2510 0 obj << +/D [2506 0 R /XYZ 189.658 479.764 null] +>> endobj +57 0 obj << +/D [2506 0 R /XYZ 133.768 463.037 null] +>> endobj +2511 0 obj << +/D [2506 0 R /XYZ 233.394 361.452 null] +>> endobj +61 0 obj << +/D [2506 0 R /XYZ 133.768 344.725 null] +>> endobj +2512 0 obj << +/D [2506 0 R /XYZ 364.401 290.96 null] +>> endobj +65 0 obj << +/D [2506 0 R /XYZ 133.768 274.233 null] +>> endobj +2513 0 obj << +/D [2506 0 R /XYZ 385.571 220.469 null] +>> endobj +69 0 obj << +/D [2506 0 R /XYZ 133.768 203.742 null] +>> endobj +2505 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2517 0 obj << +/Length 2088 +/Filter /FlateDecode +>> +stream +xÚ­Û²Û¶ñ]_¡ú‰š9bI‚âÅoN]{œ‰'S[MÛIò‘„’ 2²üõÝÅ.$J‡é¤3}‹ö~¢åa-ß/¾Û.þü.É–eXfðÙî—±ažˬ܄Y/·õòç ãdµŽ£( +¶«2 Œiª£ÔÝjl¢à­¶C¯w«$ +ÆA›Îú—h¹­U\ÆÂ2†;2¸<ˆÓÕ¯ÛïÝ.¾,b$ZÆÆqXF›eÕ.~þ5ZÖ°ùý2 +EY,ÏŽ´]ŠHc<Ø,?/þ¶ˆ¦Ú1§Í&±!m>¾ÓB@õhB,@ÍM79*j$E ñ“V·'8åPåó*ŽõK%„˃ƒêT/Ó‰?Ý*Ù D!ý…¯uMˆÁÐ÷˨«çæB»ÕhÓêoj"ÅóÅ_®Yâu &Û°vW¡ÀîføŽ–{'32ôf‹MðÓ'ZÉÓ©Ñ•D7†l¢lI×'h£˜¦a\äÿçÀxé à”¤¡HKâô¦iðô&0{ü¦ÁpT„øm•lÙk3ZÚ1'ÕÑ–-+EØSoþ­ªÁÒÎp”á+Óžzm•Ç3 ºA÷|t˜ª…¼ß™¾• x Ý»¡žê®ÐÓ›‚B¾7¹ +à_«pµBBi&kÔž1㉾äÐÜ‹Y gûéVKÝ0Ë+%*ÁR°WqN!ܾ7-3Íès9ºŠ ‘¸=jöj%Ùë;¦’ôùmƒ5û ­j9‚a»ǧ´Ï÷‘ +—9ŸÌ€nÍ5Š9f)"TÎ^CÝ46¼Jž‡YÂ’ÿ0VÏšÒ*ÃÎ{Jœ”áÔ΂óÑpT͉ 38ÿ»;(»Ý %ÁO«8)Ó€zJõ¼?pº^y3 [1·©Ó˜rÆ“ä¦é†½†wÂè‚<ÝIöƒ®ÆFö´>;ðN#( +­¥¥ìj_«PLë/¨žåý6#é%òTh¨@†ÔGA§•«†€× wXÄì.|‹¿N¡08ÇCâ9S§säuØ!¹”½ò(K§×ìt'ûÙU(ÔW'Y5r×8u³ØÅ—ÈøD8Íž.!*{µneÍ;d1 ê 3„¹Aä ì‡"Cº)Ú¿IínèýÜ,eçŽñ÷y˜‘̯êÇ¢úêENÌök {brN¥Ýå.[[Óóq{4=¤•®(èd«ø(‰`ì«ûtK¹P_ÙbàLJ§H3WÁp˜Ö¤;êC•\7è‰igÁ»^©ï>¿}"ì?0¢tW“¹œ_²zcEÛ?~¦Cÿ|zêJõ.>fBº¦ð2 qì½QÐÝøõ6DÁ ñGnCQð›-ôºJýÁ>+ŠAøriq‹Â<½¦~ÉA +ۦע’Ïß*By­e@Ž˜jÇfÐÃè÷=Wß-7AÍÇf‚ò¡'GÈ­¸aBà»RºÁ 9(,Å´¢L‚ÖWÿl<= ÜŠœãk¬kA™Ÿ vV|ë +É]ÓÇú0B…+¬ –é3þÈ Ç%ÏLPJ D=!²>B†Ô@Ð÷‘¸Œ© RúÃgÝ4®ñábàÝ;……•—¯Þ3ñQiÞÄ’Îi°¥¾&_OàÞ›í]ë=zitXƒuSÉ‹Z¢ÛEAUq^5wJG‚Øí§^a¡Ñ6´ÔɆË>-Ü'wºÑƒV°žóBWûZô¢¸v§ü¤äükƒ"f²4áA$} O© ãWvöì‚v¿ŒÊú¡4M¨¹º–4Ÿ²0æ};VG¢Œ¡B‹·:q{ü]ªj§0|SAUH ßÛÙº.ù•ÀCB>-ß°‚(Ÿ-Ágµ³zpX$üxÔ—ÁIÚÀê6àäAçürffæ)ÎøÞñóÞ Qf&-öÃLÀDàãœÑu÷|‡`‚Ñù¶%a¨—hACV:iøb–3½VB÷ÔGf/’Ùáˆd§™‹Ÿî› ÿîZºIx¹ÆÌV‹«¼"N íŸ O"ÌU2öc  üœ0ÞÉ¥¼––hR‡t,éï^ú¨äúƒ”÷Õ‘E1ó™&›Ë7õ00€„k­ÄëûÉ +6zðϸ(¡á©~x\îÇaôcÿööü{1¨X³H¿^ÍNð·ü9ç7²±† r'BÎаH8‡bËZZi>|ײ1•‚0“˜F”Ë7À¾® ¨•Õ=Ï,°ô6c÷½’h™ùìyù‚ØD¾uF/£pgÕÀëUý‰žb¯×“—4Ì(8Td×¥ “R#? |TÐÚxü{ã%íƒ÷ÿn¯5|êš +ï÷|îf¡›¤`>aÌœ>tüدÇÊ ü¿;ù¿hn­+ËyÏý8žƒÅ]sÑÍÐ9?çâiº€Ç£µšœ‚Ò AlïïœïFï*¹aìz:÷iu§[7b!®…Z6\ï›qø§7±L 6hâÀ¢•{Á +_f–(ìx¬ÇlŠ=øƒ¡µ¢÷”îM×R'‡½Ê ¸ÍÝpqRjwœŠø¿J‰ýŠ›IŠQ¬jKHêž‚öØ +`äÚㆳr=#ÅÚ­ñµ®¿ÑnÂa;c÷°'® ÈÏ.$ÇØr Ò?‚ýÿüô~ÿ@¨Šú5QÐ_~þ;ûWbY„¹ø_þHô‡fa™‹búbQ†"cs½§¿ú|Ù3<åo#ÿí¥*RúÄÑëD¼Ž Z%QÄ›Ç|Í”.¢û•È}N_goÍ×ËAuwªƒÊÿ¶<Äq +endstream +endobj +2516 0 obj << +/Type /Page +/Contents 2517 0 R +/Resources 2515 0 R +/MediaBox [0 0 612 792] +/Parent 2488 0 R +/Annots [ 2514 0 R ] +>> endobj +2514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [444.384 122.874 478.476 133.404] +/A << /S /GoTo /D (mem_sections) >> +>> endobj +2518 0 obj << +/D [2516 0 R /XYZ 132.768 705.06 null] +>> endobj +2519 0 obj << +/D [2516 0 R /XYZ 278.803 645.28 null] +>> endobj +73 0 obj << +/D [2516 0 R /XYZ 133.768 628.553 null] +>> endobj +2520 0 obj << +/D [2516 0 R /XYZ 200.059 467.809 null] +>> endobj +77 0 obj << +/D [2516 0 R /XYZ 133.768 453.139 null] +>> endobj +81 0 obj << +/D [2516 0 R /XYZ 133.768 225.286 null] +>> endobj +2521 0 obj << +/D [2516 0 R /XYZ 133.768 190.617 null] +>> endobj +2522 0 obj << +/D [2516 0 R /XYZ 133.768 190.617 null] +>> endobj +85 0 obj << +/D [2516 0 R /XYZ 133.768 190.617 null] +>> endobj +2515 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2527 0 obj << +/Length 1984 +/Filter /FlateDecode +>> +stream +xÚ•KÓ£6òî_AÍ%¸*fx s›IRI%Ùìî·§$d›Œ â8¿~û%Œ¿!‡½X­VwÓê·ç ¾ÛüãeóöÛ´ª¨*`y9I–E‡¢ Š*Š* ^šà×0‹’í.‰ã8ü¾í6)CÓLõØš~»Kó2ÍÂ$ßþþòÃæ›—ÍçM¢ã YˆJ¢*΃úºùõ÷8hàð‡ Ž²ª nDz ²=&ÈØÿÙük?é¯é—¢4ËY¿¨Q£Úî²lª¾A ££s¿Åyò5ló</šñͽW׶f꫾{ή3µ·Ihìv‡Â(÷ nTõ'B¶Ž1“ÓB1tTƒä¶?£àR»¬‘‹ân:Z3m¯Z2æ¯!àFc‘‰6¨XÇ \)VÓh®jlk¼£ÿئ ªmÕ±Ó.š?uˆŠtÏŸzß9WJ³"œú®ý´MâPã> ;E>=kË{eëK;êzœ¬v··BŽWŵ7¼^”mn(NY½sÓ0;¢Ò, ŒtWÕ«³¾ê~\3ÅíÒÖþVm¦Žøó𢻑mϧeáòdVŒ ©…óßïb<¨ä᎟œ¬¹òÑQÏb ý?ÚÞl;ŽZ¾w¼?i[°¶Z‘²`yƒ–ÙB ¬Zý…ƒ&Ç é0ïH9:uÿ3Ì!¡jx:U ÷àù³§õ[§Ö°…\ùÅ}O÷E”9=hV¼Ñö£¶=]––¨î× d jp£0ÌñÎ+æ[´ÝåûL. 8Ÿ)ÒåÅÑAÒXU€FÏ2š+ˆŒ_j²¢ïÙ²VìϤ +Þ÷˜ ê–Vë†Îì01)\`ûæ¢Õð†aµM}FµڙєÐŒ^Æ\KRHŸ9ÔQ×`X‹ô¶£d> _°~²§›¾º›^öü14cJ² "Äâ¤ÙËe¢DÍ+NÔ¯0 “QšÂj[÷ɋĪ…¢ô|€Iǵ¸G«HšeQB²BukPÇÙÆ £Yí¢”<„³W‹gXÌ iç˜Ä8ºÍн1…„ÊÀR~{:**JúQA±³bwfI÷ï`ýD Æ Æ}0å×gn6>‡bÈé@ú:¡j= +—}øw§©—¹ø ¤e+MçÿM4Ki¬yK MµŸ ààŠ_Œ?¯‹6`á¹](²ºž¬kÚÝùÀOb´ñªRßž'ÎWãð.Žªªvi•^џ߽ͨfzšQKfáreçébHË8Z«p—„î"mŠ©¸z¼P Lcê‰&&ÚY þw²²;H#ËÀ™kÇéèd*"$N>Žµx%N)’Å|åDA %¬äXßo“jå•k ®HÒbk_HgE¢y¨FƦÑ2ÇW8z32дúà}=”[q­’ˆ€‰Y‰ß˜@?;ñõ +Ï’ùQRUQ–æt¿(Ë3|”|ÞÄQž¤iI$K˜=§ Þ~M‚)gŠ'Ùyé»…ø/ß0iœFEž0wF{ÿ†ù¶=Oä0¸RòL’ÄÒ;q¥Ö‚Á~z²C#Õ Fé¿y¼›p'ŽÿÂ0T…¨,³`—UÑ¡”`ýgÏ“¤âÅQ‹exùAÜ? ¨ÄÖ`î[hs\?a~euO´õ‡°þ,¸ +®þDìËüJ€ÌE^n鋶ÒBö wö}<ßaÝ›é|¼ñrXjÒÀêÚ¿÷ªëîc?ÐÑÙUQ¨î±jqK(òpud½S'‚ámÚž¦Ž1³N†W?”B ´ò¸šú^×]Š_XË×V:÷7?‘ˆ$ì›g±g¯E++w^ o­Öi‰± ûœr¦‡RLŸ„9Á7A<üðË[Ó<[Ó»½zÇd<òdØêäíU†>Æ·0ݘÆ^š±ñ…JЛ¼(;­!<óB.Mþéæ_2¾ ÐG¥©@Ìô’ÜzT[Øüòa>urÞ¨»ûû7àfLï„1ŠÛ9Þ±>¢:r»Åß]×kÆŽ¶Å’J ÁCuÏ°ƒä# `Ù bVApÀnõ/‰ÑBŽ^“™ÿû#E`¬ù ÷ÎÐ<„¡4ùg%P ¾‘dÙüïH*Gáñ“¤421õ+D)€¹‚&b& ÁþTÆVÿnª ûfÿÏŸMþO°"ªY¹ü“©„j^ˆ]¾Ó½¶ŠÿØÀB,á//>êš½Ôðø]š½KJÞ¥q,™ÑÏ,Šª©ÝBÔŠw{”qå£ùó~æ‰zyåÿ´F@ +endstream +endobj +2526 0 obj << +/Type /Page +/Contents 2527 0 R +/Resources 2525 0 R +/MediaBox [0 0 612 792] +/Parent 2530 0 R +>> endobj +2524 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (malloc-std.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2531 0 R +/BBox [0 0 415 252] +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState << +/R7 2532 0 R +>>/Font << /R8 2533 0 R>> +>> +/Length 1023 +/Filter /FlateDecode +>> +stream +xœWÛnã6}×W°OµXåP¼ hZtS h‹ÝÄ@êÂPo²]Ùiœ`›Ïï o"])yÐŒ8sÎèðâá#ã50Nÿáy³¯¾»4ìî©âµ¡Xù8ÞUBhÍZÃÀò–Yà츫>žU²Vìßʱ˟߈» +ôX·ÃãfÏ~\#»Åµeë•/ ˜P¼nYËÙz_-.øíÝï?-×WïÖÕ,ÓPui­m<0Ë=³´:+ À}‚òÃJòbio À(}:lJ&‘?þˆ¸B ÎöîËûJ‚Ê 7ÔW÷(—B¥x#k‰¡Þ#Å{´”¶zí5-Æq¼ðÿ8c‡JH¥X+ŒcÀh2S"h´¯HRv÷ªœº¤Í‰ð‹ç¦Þ#ùת8݇÷¼B`´(íˆ?öÜ" uåxI-huÔrÑ^­˜Ô—R–”9 *57u’RZ7‡ó‚:Z˜ÒNl#Oª¬® /S +3u Ò›)qPjTJ [Ræ$¤ÔÌÔIJÈ9œÔáÖ”vb+=ĺ2¼R)%[ÇÀ½™¥F¥°#J1Rjf꥔Í(œãµQÒfÄ.U”! 5x¢ãÑ@ØÚ[1+ TVP \¶gNÚad/“,&3"jfŠ¬ ù†¦£Ô=CB’"çÌ¡2Yª01cò’ÚÔMkã&RÊƵ—™1èµë¶EÓ&7C‰bM\âdöùŽJ»(/¦Ó`‡¡ÝáÖ—qýôTÄéA#–Z;ˆ­$ü¿2²!˜LMí((I‚¡4ß cDÓˆrQ7±½z¾€­hHK£ü…ç‘JBI°#–•Çˆ?4!Ë•F/P›ÏË¿Ö¿xZí?f¥©ü$òÃauýÐo¶À\THrÓœP`Jº9r£«$ñ—îø©»îw~P*LIc5Í’{okx+Ç øÕgAë&Œi\wcÀÛ}´9£Ny¦mט|Ìa„ƒ Å+‡«|Pl¢|BìeÇ…œ-éîI‚Ÿ›~?í²“vÌ81‚Û°tù ð‹‹4áº\èBÓ)-€ŠÞ½<®?µHŠÆPRN«¦‘õ¯ôîÿ–ßNœt鶜dZ³ Ž·ýˆQ§<ÕZçy3¼áô¼×Å ×`_MxYÄiÀ’ÚÁÓ¡?3•&Û_€ãåR í÷Cõ"F$¶ +endstream +endobj +2531 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172323Z) +/ModDate (D:20081204172323Z) +/Title (malloc-std.fig) +/Creator (c:\\Program Files\\GnuWin32\\bin\\fig2dev.exe Version 3.2 Patchlevel 5) +/Author (eweddington@CSOLT0054 \(CSOLT0054\)) +>> +endobj +2532 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +2533 0 obj +<< +/BaseFont /Helvetica +/Type /Font +/Encoding 2534 0 R +/Subtype /Type1 +>> +endobj +2534 0 obj +<< +/Type /Encoding +/Differences [ 45/minus] +>> +endobj +2528 0 obj << +/D [2526 0 R /XYZ 132.768 705.06 null] +>> endobj +2529 0 obj << +/D [2526 0 R /XYZ 241.993 248.39 null] +>> endobj +2525 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/XObject << /Im1 2524 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2544 0 obj << +/Length 2461 +/Filter /FlateDecode +>> +stream +xÚ¥kÛ6òûþ +;ˆUJÔà +Úz¸6H^qÍý-Ѷ.²äJTv÷~ýÍ‹’íU6)n„£!9Î{hµ:¬ÔêÍÝ?îï¾ù1ÎVEXd0ÜïW‘ÖažmWY‘†Y­î«Õû@‡ñz)¥‚·­³ý:JƒÖ4ëMœªàÓ®7:R}¼úõûŸa[Q$Ieë?îºûáþîÏ»ŽV«èâ¨(,Tº*OwïÿP« +&Z©PÛÕ-=­tK#ÜجÞÝýûN]ñ¯–øOó0Ö)óoÖ10ºŽÓÀÔÙ5–ùsGÓ2T·#S•Ý¯áNfl#Ê®ý]©ø0öÆÕ]âuHt0Ÿ¦1ž­V8}›êÿ[jLüò^@;NBLû—îùTwãÐ<­³4x›ã­\ ÖÈïàzS·n`„éeæ4–G†Ž¦¯àp€ãÀuŒàzÃþ‰?H,0NT¯ÅÛnÄ«Žƒ; ×,æºkÙÎ#  צ+ëüPYMa țάÐâØ;`ÂXûP·%mËAç8zƒ4Àh–9N‚X_,g•!RîSR8ñ·#_4Ƭ™œñâ”4áÝ»“=(„%FEŸi*–•fÞOÒT¬€ÁžM/¦Ÿœ¢!Ö3KÇûüñ²Ó üª`ˆÇÔ§v kövp ‹õÈžNè\' F}îϹš“Ä×ZŠƒûucë½íÑÌÈ1ê‘TW©‚Ñ—+ƒ{J¾7"Ñj¢(ÇÁw;žvƘS7Á§ ,r ±=&ìW45¶dŒ‰¤T¤]™³óeÙÎYˆu7‡õ~ýA*À_ßÜ­Þ•ç·œj¼ç© “ûR'÷V~†ˆD¶’OV ±šªÀ°¡p]‚‚g^ÌäÌùÜÔ¥Ty ©ñûOxP4¬l¾àe°‹9mVlÍ᫈8TÁx2•õHÆ37p´!‡/¬µz2޵é˜tñYéò(Ý5î_ðûC®ÖÁ¿:7oä”Â!BM½ë p²à +—uŽ‚b¨>Ñ&T&9‘ã`˜ã‡š';HW 0A¸cç7q†Â(šåÛ~ó#´³cÄ98YžÀ,ñøí‚ïäa~£¼?WuyÙ5¥,ÜÎëþþ%B¯1EÁ;gZNî Ó0£k¡UÄQ²qðö9À—uS»Ú·JBÅQ5œWc¬:)Óñ×Mæ3[+`j6˜XŒ/Æ‚R kzªsl»ñpd˜Sçd1½Þ‹Eò^g!]Wgé–õü&à$µ¾$ômZG^”>°í~À0û_~eaÍžl’¼sC¸I’í2aëw\“UI˜M;8 (ª-4ç7Lª"YŠSX6BÀ©)aI˜ù¼¯B(y)¾'ÞÙ„ cx(mïL-sà\àôœ ‰*}`ËQ)ƒå¹Û¢a/sX)Ô‹e*† '_\Ñš¦þïTËI¡w†ÚÏM¨½¨"Ìfçùð²ªsPIüEEÇyvCoYÃiæóRr.… +ÃdRÏÅÞÜÁôÔÝÞ»‰³(Ô·Nþ¥ë@IPLÖNµ +N曆e샀¥F FöEšºe÷ïy!Ið^âþ‡:cœÜ‘òŸ:J„0ƒµ<=$Ÿc©P%éWÉ +j:»¾{-õÌ`åÅIƒ§xx8Ö¾ÑólxÁ9Rõ%çH±<Æ“½yÍ™k4ÏÒÎ6ê÷áf%Õt‹ŒÚËBÏ‘Pˆb”F×w9…<§PS,ú¢E¬„Äð›~f¨á[PˆÊÃílüŸ‰`:»‰`)‘-ôNò\{1è,šèî¬ä, U¥Êoz» +-Š’-¶']_ÕÔ"S[MCQ…žq`^ú(ÑjnLÞI«Á¹‡ÈHGÒíÆÕ'ìƵ–§@?ôµ››¨ëJ×È”“F‡Êý…øtÕj±¥ºZgõú82_ÙÄ`Ì躄>‰r„r¼]oâµ(˜WÀ³|˜ÛLŠJ˜‘f”3¨úΦlð,“>v]³`: +·—Éñ«C›ô¦ˆÂŒTú,3ÇøÔˆSÔ5@*Q@OSÞDÍéÜXF@!K Þi{4½AžNòvÅÈÞrÇ/X8”êÜGRžˆ²ßNO‹Eå4*õ_I&äZß»*⪹8Œs£Š_ê1‚V a©xwã–¹æ‚Úêb£çb¹Xò¡ÐTUÏ9©õ»ø/¼Šq~$«ÈÃ"W‘ïuèßÁ̧~s(¡¼Î Y…aÈÀæ·æÕf#Ï6JG¯HÎß©Ç­ÂëÃte÷`zßÍvE“{ø›©]òsóÛÁF…E9 Ž!N 7ØR¼¾ÝtUdmÃsæ6TØ(Ó Œ}©FJSßñ5¦e%>Ë©¼kб %¥ÞÿB~Cų®ß d>;+»Í®ÝËÌÈË‚(ö—xw¿ujwϦD šº"²ø›IRÓåÿKOV£·—¿”l‹Pgb•oè•JÞ\TÐÉÏ"÷Ç‘Zy‹MxˆÔëX¿Ž¶ü+µ]xÁ0THõkè!…U3H²{|:ØööÊÿÕùôÒ +endstream +endobj +2543 0 obj << +/Type /Page +/Contents 2544 0 R +/Resources 2542 0 R +/MediaBox [0 0 612 792] +/Parent 2530 0 R +/Annots [ 2535 0 R 2536 0 R 2537 0 R 2548 0 R 2538 0 R 2539 0 R 2540 0 R 2541 0 R ] +>> endobj +2535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.73 400.502 478.476 411.406] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2536 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.329 376.591 381.074 387.495] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.146 364.636 478.476 375.54] +/A << /S /GoTo /D (group__avr__stdio) >> +>> endobj +2548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 352.681 203.005 363.585] +/A << /S /GoTo /D (group__avr__stdio) >> +>> endobj +2538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.696 311.146 224.442 322.05] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.864 275.281 263.61 286.185] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.412 116.1 215.74 145.166] +/A << /S /GoTo /D (mem_sections_harvard_arch) >> +>> endobj +2541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.18 116.1 429.13 145.166] +/A << /S /GoTo /D (using_tools_gcc_minusW) >> +>> endobj +2545 0 obj << +/D [2543 0 R /XYZ 132.768 705.06 null] +>> endobj +2546 0 obj << +/D [2543 0 R /XYZ 302.006 657.235 null] +>> endobj +89 0 obj << +/D [2543 0 R /XYZ 133.768 640.842 null] +>> endobj +2547 0 obj << +/D [2543 0 R /XYZ 215.67 461.857 null] +>> endobj +93 0 obj << +/D [2543 0 R /XYZ 133.768 445.464 null] +>> endobj +2549 0 obj << +/D [2543 0 R /XYZ 133.768 222.787 null] +>> endobj +2542 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2558 0 obj << +/Length 1337 +/Filter /FlateDecode +>> +stream +xÚ¥VYÛ6~÷¯ö¥°â’’(‹‹¦@›tÓ m\ô! ´¥F‡WG¼þ÷áP¶wW-PôÁÖp.Î g>’;;‡;oW?mV7wAì(¦bøl¶ŽC¶Ž'V’ÅJ8›Âùè†,ô|Á9w7ž +Ü©M³ZžHîn½@º]O‹&­ë.ÿÄ%‡Ÿ^ "銵÷yónõófõ°°/wÄÅ>‚).¼Y}üÌ„ïÎB•8£Ú8aª kçÃê·<¿ ^ +%Ë5 BIÁwû±êÚa `ç ØPZ٦Ԟʭ ü&.†^WíWOpW÷”ʧA÷D5i;¥5ic:b?–éHÜi¨Ú1ýM‘Žé+ÜúæR8‡É¢“2|O*O²Y³u¤f…ÇS¬UøaÁ¤ÊƒpÖ¨l¤úaªðоá_ZëÖÆ=vs®?VËBÅD"ŸíSăαª>T ¯Ù?e™p–¬åÿNRü[’O<0Ï—¡ré0·ƒ¦4…„³ô"î^C‚ÐÇnÂL×n™z· +ȉm bm}ô Ý®i©qÚ—­Ôúêâ†2§‚D©Óýb ? ‚¸ýHÀ­§(Øû-š)·8¶iSå¸HÜF7]$ÁPvS]?ÓÄÛ׶GG©^Ä›`¼×$;”UmM©ãôžæA&s³¨—Iß íUkÉÕ¼ PC×hh(ã˜'ÐÞ´ i ¶ÜÞ8­&4¾ÍÈÌj~ ±#víÆ“à›XTªÆÞ´îR°û©ßwƒF¤ˆ¸°cµ€­Cµkº—Öfè`ƒ¡OJsIºi Foª¼Ãé'Fi0lÚn$N¦uKT“ófÅ_p`óV••›á[™N2mö5Ž| „k : 10ÓØ@¦DDîUÙÁy]7Ó¶¶VÉ4%Ooë‹Ó°†2­ßg­ÂiceŽ¨^7érä†>j'hù_ry®¡Þ6!r2#‘s9§:íIð¬‘ÕYÑi@Ðp˜× 9kÏ+˜S‡v ¿gô««]9™UÃÃd1#ïêù©yÆI+ÌOàrª6>á–qóæ. áñ Ö\ ^A d\Ù@Òo½¿Ë!§^½Œ1"ü?ëkß/ôv86¯¾|Áóùb®ÃWxp¾Ãun„áv»={» hñ]¬¶ÿË«x~ÊÇ ûÅS>Q,Œm¼Õ­†‰ÔÅ ¬ô… ›ˆ7:'"¢à·Ax+ Ùœ' ¯þÔ<³z/\»~]eÖCv´.»ÇãN·ÏSþE¶3 +endstream +endobj +2557 0 obj << +/Type /Page +/Contents 2558 0 R +/Resources 2556 0 R +/MediaBox [0 0 612 792] +/Parent 2530 0 R +>> endobj +2554 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (malloc-x1.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2561 0 R +/BBox [0 0 626 246] +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState << +/R7 2562 0 R +>>/Font << /R8 2563 0 R>> +>> +/Length 1076 +/Filter /FlateDecode +>> +stream +xœ¥WKoG ¾ï¯˜[bÚÎûqÈ¡Eã^Ú ±ôb@XÛJÜfe×’‘ø燜×ÎŒ6…%ÅDîü¸ß3Ü'B{F(þÅßÛM÷Ë¥!_vÝSG —š’M‡ c§¹.¿4v÷·Tgi/œ[¯2j,rch%'³ÕZ°T¼—¨•!ãïsòÐÉ^‘ï>J.ÿè„‚EÎb¢7Š9æ _uŸÀüË^†5V“H ýù¼…=!Ø=d|Àß’â™DIJ,£d»F8Ü +Ë©`ðÐÎÌØMVYs!øφxO rü¹Ýß–°çø½%ËÏ](F$s='ðfœ,7ÝÛóë·«ÕfÇÇÛÕýzøoµ{¶Ï×gäÝ;²*žœ-ÿíxoˆ@J–w3Žë‡»Ê ttZ(IV€+z­VwÃó0…„ŒlïÊ%p Anv»ÊNcÆÞWRtÎìdÎêò׿ÞøWÞ/±NzË €ê Ë2™Qª`SXYfÖÆ22²²×žå«EJ3ÆY‹(l+­.p_Ý«\¸²xQMý %TÉE·*gEÉ—!s¯2Ç%1Œy0G1{ÖÍÙ¦To+,xñ¼±_Ë3–0^\1#e%O{*n^J® +9ñ¦Œ þo‚9ŠÙ3ó¶—N¸A­p€³¼áLX[”^< «h%O{ª.Ž×*ät/@ ÅZóæ¡Ö¢gæl/:pƒj›Kàïƒ8²‚A5ñ$­ä°Uy™\²æLIçAx³çÄY›N¸A•-gÇ{̙ԦäL©ÌK!&£)®LfZ”ùyCX“^űd/3V&Ón`+œDÙ‘îaº8ü–ç ®U—P¾åo¶_¿ ãõY¾Š^¿hM4wù8Õp_ZŠÉhF…¹ÈP–Õ"b³ÚCH/%GßûÓÝÒ¤Ó„n€+$¹ï~HK +·ÖÔ(^Mä¢ejURÇöªBÖ]non—è™»~/2ðj…ƒãòñÞÈY‹‰p?팯¬m?ùMµÍ5‡±Š3ƒ÷úåy½}FÃÖvÙh¿@G˜!à[F‡Øô…Ñ‹‹4Õr°×~€¤/”QŠÏó('“PÞ&ÒÛ¯%f¶`BA Åõñaqó8lïþ?EOÂÕ‡å?ñÙü;{º5ά’ªüpÀ¨ã¸‚ô˜aÎJyŒ²–xì%«YÍXæ5+Šµ#¢ƒ/*δ Fi ©yÛDæ‚ÖðjÃë~ä1*$…ctÚ}ü°ñŸRáóôIÒÉìýùù·aûÏp3®ws>øµãŸÛžýÌç cZhczÞ§±ÀEÉjV³pmØÄgo:£%ui…•¬Ýß6‰¹€5t×ä‘®÷ü§zx +endstream +endobj +2561 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172323Z) +/ModDate (D:20081204172323Z) +/Title (malloc-x1.fig) +/Creator (c:\\Program Files\\GnuWin32\\bin\\fig2dev.exe Version 3.2 Patchlevel 5) +/Author (eweddington@CSOLT0054 \(CSOLT0054\)) +>> +endobj +2562 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +2563 0 obj +<< +/BaseFont /Helvetica +/Type /Font +/Encoding 2564 0 R +/Subtype /Type1 +>> +endobj +2564 0 obj +<< +/Type /Encoding +/Differences [ 45/minus] +>> +endobj +2559 0 obj << +/D [2557 0 R /XYZ 132.768 705.06 null] +>> endobj +2560 0 obj << +/D [2557 0 R /XYZ 203.936 416.8 null] +>> endobj +2556 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R >> +/XObject << /Im2 2554 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2569 0 obj << +/Length 1837 +/Filter /FlateDecode +>> +stream +xÚ•ËŽÛ6ðî¯ÐQjE%YÚ[‹4Áh${Kƒ€–h›]½"QÙ¸_ßy¶¼qÒæ°Ðpf83œ·7A¼^ýö°zñ*Ƀ2*sø<ì!e´Í‹ /³(/EðPB¥ëˆã8¼o‡F·º³Êš¾[o’,km•i&8Y”¡(ÖÞ¬~X}^ Ðb!UDeœU»úð1j ¾ âH–EðD¬m S`x± Þ¯Þ®bgê÷¾Y”¥Y%IT¤ªø¼Š£¬9q,@"ù{ñ⾕Á˾ýFôÆËÞ,„³ëâ¥ë¶i$·2Èâ8*¥sÝ+s˜GÍŽ’wëàÄÎê±S cßýúÇC_ÖIªÑ¨]£'F©®f`²ªzü…a½Yøõ¶Œ£Vùÿ¹Ÿ‚MG9ø~“ +ˆlÉæÝï‘ùÅ+)Hnáq|úÔª¦é«O(ù“{èÂõËã4*á¯0^JÆ`¯Ì’Ð5"’)ÛLWÖêv°ŽÛöÌé¤+ëp|S„»ÞÚ¾e†~Ï8r ZiTdQ™åÎ ÈO™ÿXë‘AÒßB¾þ‚Ž„df¤â‰Ýé\õMc&Êv<>µƒ|ºÚt'-B2ÅUvÆøLóÃ’ñ‰÷ >`à<¶>cëÉÔ2kÈ zJ™…m¹„èiP•fäžü ¸úÔ©ÖTŽUóiga´ÞlÓmxo™ðdš†ù»Þ¡,0欴gÂŽÞxê1 ‰~t:«yÑq7 ç°l’\„iŤÍSk5j5éšI»ÓıˆÒ¬ü&õZ5Àß&^™DIžyþÝÉê ^ -$|8ΓӬð½¨sè§É@mñiaç~T-T§R ý'I¯ßDQË$¤FXã¡—û V³@ËÂŽz#ù ¯ÐQ–Üƾ¶tTІ'Ö ¸¶t*°%éò(è8Ž4V2NL£,•€óÄ*}_Yñàn‚¿ƒù÷8÷£ÖÅY âjN‚õgM73ôâ&)À9u=êiâÃÐC;øo.3‘\7Oqn"ñ̨7§ÐW]·’É64{Ï­¦ahŒ'!ªÊÔ˜4Msº„§ÑXÚŠ-Ø°§²F˜$"py ž|ê0…jûPR.î˜ËΧªï&¨«\@$ÆðJÏR²j6·l=ï˜ú¾¼ª¾ƾ5Ôt€²Íóú)Ë°…a ÔMÌ¢ø3+Ø0Ñ-ósTˆµ‚¦Mq$.² +úWrö>:ºxãIGµNb·Z'”ùNãÊ€ÐÂóp2„çmÄôØô‘âÚ6‚Ðb¾›ÐHÿ„NJþÙ[g‰{,7 FQÔˆdœÆóƒc49ûlæä‹]Eê(¸àNsUAqìgÌPÂ@¹på¸=OøR"t«r5°"Ô´´P5Àšã˜;§á2Y5E ÊíI\|ñr‹»£óNç×l¿¢×}ç Þó‚ÞEY^54ÎuvQ†ÀÅ”¦ŸL>Ã~½â*˜t³g +y¾4¨‘è“š2Ê1(þLzP£¢ ³¥ˆ·ã [èˆã;)¼ÃÌœ-áy¯ìNŒkûÚìOøÌ[).q#†fÀ…âÖqüžÉø.´SÊ‹Ÿ$ïÞþ6-´x Î©G'ª:¼8]éÉK9h²››§ŒSpèíB¤¹¥ÎÙT¸,ÊRÌFƒƒÖs8{3¦é‚‹þlFÊY@ZwÑÇÁay$ÄaDˆTzpg^ÎAžâóò7ž—òÌ|WTh¾ÖƒSaGZW%¼›·ÑÔo’ ¾G©OÚqyO¶\§Üã¹=¡¦¹˜á Íàá׳v¶÷¦«ü;:oª›•uäØÆÒÇ–üC6vë/<üâ´ Uǹ{d°ã\BjÏßcâ•ÂS½R­ªãB&¾¦ˆl!¿Ú¹½m9+Íü^B;d÷Ò¾žXû~v3ÌýY6â›ÿ )‹h+æÿ þ_5yTne±üWMQF2wx­; ¾6ö ^B/# åˆïy' +>A§wÐóÃÏeEÓi\Ëm¸iÌ®ò/u"û¯§ƒîž?ù_ªçê‘ +endstream +endobj +2568 0 obj << +/Type /Page +/Contents 2569 0 R +/Resources 2567 0 R +/MediaBox [0 0 612 792] +/Parent 2530 0 R +/Annots [ 2565 0 R 2566 0 R ] +>> endobj +2555 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (malloc-x2.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 2573 0 R +/BBox [0 0 575 244] +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState << +/R7 2574 0 R +>>/Font << /R8 2575 0 R>> +>> +/Length 1117 +/Filter /FlateDecode +>> +stream +xœ­W_oÛ8 ÷§ÐÛÖñé¯%=ìaÃíîåî°µöR pÛ´Ý–´×¤Øõã”d‹R< n®bR&ù#)Š”oãøŸžWÛæ·3Ën÷MXeg&bwÛ<6"Òéqµe– î`¡ulyÓD‚©N´ü²å¶y{zñvµÚö›ÍÃÕênÝÿ»Ú?õ»§‹öî[‘•“å·æã²ùÜðÖpHYÐÂ:μL»Ž9Àß­››ÓW¹fe«YçàgÒ¹õýuáðÙ1Ð'MpÆh^:Ó:É•H>›nRªuBbxô +Å;>‹?‚Y©ÁÂ6»iŒ5„¯6ͨKj®UÞl`=÷ðNpg)9²èó|d‰E„ørÊîÝö_#8©@{µL¡aä\yi£0ÈÅ´m •mW\G½¢¶Æä…´IØïmF*êå¤U>”6K'gPñ–n +²1QRJAIR<5«<ñ­°˜s浄¾ëÈ#™TsÎœ© W°äìuÌ#‰£Å9=\æN:¡ aÞú0èV«ëþ©¯&íK÷M)ÁI¬›¥¤Õ”Ì1°^’üÇ}S¦ö-ÈÇ} d9Wj‡*ãt‰ÙöÕ@æœ8S®`M5‚ŽQÇœ <¾ ×a«µÐñö)»nê2ü‹›e<> .ìħmÇøÿ¿ö#<®æþ×éx¹¾Üïs3’µe +oæËët)¿Ü}ÿÑo.Nðý" +,D×Ê õÓÝ|a@o|uöþïÿüŽë¤S* +! \m“Â8*G¦Œ–ðJÍ¿V=ÌñùGC¹…à %ˆ›‚Ÿ™eu:Ž'‡T§äq×hŒÆ œ4“Š§/ÚõóÓzwßo¦Êe„€V(„Âb +#~w¥¯\ÍÍØ +Î_eŽC*¨»â”qòâ‹¶× +Å À»©ÃfD:nÅ 5ÉY°¡Ô^Yd™¡È¸*²Ú‘)£%|„HEöZõ»àÀO—ª¡ +endstream +endobj +2573 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172324Z) +/ModDate (D:20081204172324Z) +/Title (malloc-x2.fig) +/Creator (c:\\Program Files\\GnuWin32\\bin\\fig2dev.exe Version 3.2 Patchlevel 5) +/Author (eweddington@CSOLT0054 \(CSOLT0054\)) +>> +endobj +2574 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +2575 0 obj +<< +/BaseFont /Helvetica +/Type /Font +/Encoding 2576 0 R +/Subtype /Type1 +>> +endobj +2576 0 obj +<< +/Type /Encoding +/Differences [ 45/minus] +>> +endobj +2565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.698 296.232 453.808 307.136] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.02 230.787 309.129 241.69] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2570 0 obj << +/D [2568 0 R /XYZ 132.768 705.06 null] +>> endobj +2571 0 obj << +/D [2568 0 R /XYZ 213.715 512.886 null] +>> endobj +2572 0 obj << +/D [2568 0 R /XYZ 353.961 369.876 null] +>> endobj +97 0 obj << +/D [2568 0 R /XYZ 133.768 353.772 null] +>> endobj +2567 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/XObject << /Im3 2555 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2587 0 obj << +/Length 2492 +/Filter /FlateDecode +>> +stream +xÚ•YK“㶾ϯÐ-TÕ M$Eîmóð–]NR±'•ÃÚµ…!!‰ŠÐòáñäק_ ! GIN@³Ñ¯`´9l¢Í§»?>Þ}óm’oÊ°Ì¡yÜob¥Â]^lò2 ó2Þ<Ö›ÏAº}H²(ø«9Ùþ•û?™jll7àH©,ˆËí/ßßýåñîë] ¼£MìñŠÃ2Ê6Õéîó/Ѧ†Éï7Q¨ÊbóBKO•ÂÒ7¶›Ÿîþq]­ ˜íÂDe,à¿Ž¦I¢2Ðmk+=6ÝÇ'–9Ï‚{ ÄEðs%ý0òìx4ÜÙ÷Æ´#7·/Û8ŽÏؘZ¶Xnƒ[a¢ÙË&Ù\Ù©•µ2ì_¯¾Õ›¯“Ƈ|ˆA;™ä;`¦RZÜ›?l³,PšéÕqêž%‰‚߶Iè¦ÕO­á¶›9ðºåhLÖ#Ó_š¶eªd¼Ú%B2Õlã,ø]Wcë4©vŠŒ³ŽQ<™µ3šØ‘Ê n†Êv8é4N@D{Â^,J‚Ž“÷À9uW3½7ãÔwFFd `0o«Àþ¦G½…@(w¤P\ÑY^0…É'=VGÙJv[‘ÿ yg ¥ºúž^>Īµé Ž[–ˆž±GN$>;ÜêÅ;²da8+žö’j±ÇB¨`L GSq<Î2S¬Hî,Áñû¨æG11CêpnÙˆQ0yªéP§H±a’#¸]‹ üYñ2Á6Ð +@EWÉ›'ugѵyËÏQ '²tã‹ä|"Éc§Oè‰Nr䤛Ž©¶sëdƒs TVšßÉ|¥‡™#…9Ò8¨%Güàx¢Â°‡Ú¡=VZ6*ïyzìhu¿Œ9À ×á¨QŠ³ön¶6zÕn÷†Ì90ô†æª=“T;ñ hu;ZÔ<š¾c[Ó§¬[4¸^®ÞsP“íg‘†ÕðÕuÝ Ô떑ߺCÓU†»_H2gÝëQ¨¬fˆ£K$³H<{vFìÚ=ÂÚždá,š#*".è¹ ó$õÐ3V:YšÂ$€cùšŠYgH¢`f!f,1­ŽfìQI>ó +ÑtCÛJ8¥ÇÑœÎ#g +¸óxt3Ü‚ÒQêo¾UÊKhWêþòåD9 šþg§ °LÂ]šÂ>?Æ!¯ÐÑ(|5{Ž1A)—€ø­H¶ölzIšÌ©µh#æ³QWϤ•4°ìâ"ÍEÔ¾wÔ$ 埊â|1]½rÔ8JÃ8*/Ïê;ÍohÓ7˜ÂŒ8!ÌKã|ä!VQXªò­«$Yêp70áº觹ÖI¹€%M7Lä™øµª1CÈÃrëzæ§Kˆ¯è#Íø(ÜñþöÏ~XQh-½¶726( ++ '‰xø²daŒê0WÉ¥{yùcʺØ2.´–üéØeÉ¢²°èãj¯?HÙ÷㧻Íg $y‡îsY¬òJ¬kpegÄß·‡0åP&ªúÎ=â §Ä]|é$&Ž³ð']›× ïpè)Ö[¨®ÌT’K@g"v_šñȽ³††K2éúW]‘·¸ 0ŒÒ,xmL[sàáJnWn³—R¼ï­ ½R–9¼*N§^R/P]™ PªÛ¥XMPasœ]¥—*IWÈãlüÆSÁoA$õúp‚5Ä›'Aÿ+âsö“8-æòzªÐŽ+°þqñÍÙmß÷» ‹D:ß;®G,–k j9óÔt.¯~±ª¼ØˆHZÉG,ÖOvýpŠƒCïà“ðH Ǿ¡:C˜®”;ÕÔ÷ +IâÙ½;Š\ôÁ³/¡ò¸“¹¼IÄë¡5zxý€µpîV%’Ç Âî’¥ò6R>&þ;)¿“äÜs‰ß iâ¦nj¥"Ç‹«&(C>-—æEÐÚŽ¼œVYn)ΡŲ—W¹]g=mY= ‹µf­ûú†§ÄÅ-„"Žû©«ÆYö½]­ë /˜^VÁ}ˆKèÅuÒò¢…àúÓÑTÏOzqçÂ#¡ðv5û¢»žgVør#¤‹GÎÁdÓÙép\5Ê t´TŒ¥)Á1f¦Úfx »vÇT²%¶m{/ë]ö½¡ø4û¯! +Kíá“P÷rÑ ÔZd¦¿OJ|1¿­WßÆÅc…•+gÿ¼•ñ²bj)\Ðe¾‹ßó€ëXñÕÌs€A…ÆŸ_€à¡Çô*F²à0ÒÒyºØò°zx¨¯è{*ÿ|8·U2®„€> endobj +2578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.113 481.657 213.222 492.561] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.58 428.168 205.316 439.072] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +2580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.216 404.257 429.326 415.161] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.398 380.347 340.133 391.251] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +2582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.014 249.457 356.76 260.361] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.121 231.832 214.866 242.736] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.687 219.877 224.797 230.781] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2588 0 obj << +/D [2586 0 R /XYZ 132.768 705.06 null] +>> endobj +101 0 obj << +/D [2586 0 R /XYZ 133.768 205.182 null] +>> endobj +2523 0 obj << +/D [2586 0 R /XYZ 133.768 170.514 null] +>> endobj +2585 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2595 0 obj << +/Length 1730 +/Filter /FlateDecode +>> +stream +xÚ½ÙnÛFð]_Áæ¥`±{ðtЇ9Ð ÐÄEZ8FA‘+ikŠTxÄvŠþ{gvviJfæ¥záìììÌìÜ+æm=æ½Z<»XüðRÄ^d1|.6—2HâÔ‹³(ˆ3î]”Þ¥|¹âŒ1ÿb§–+1?èÕmOà{Uôº©ar.|Á–W¯/.Ÿ¤0O¸ò c‘Wì—WÌ+aóµÇ™¥Þ!Ý{2RŽ+ïýâ—³ª²GTA’/Ž“ IåË8òU~M*>Óu©ëmg4sœ€ ›²IA®·â€‰"bòòçßÞ¼8'µR%A}CßRwÅÐu9æf”ZêM³‘ÿyÉA僈$…ÞJ$A”&$j4즩ª܀–êŠV¯Õ©¨ÏH–·ºìNGž°«|)®òuEâñ8ÇK +¼6óVü›¦ßâjâ3µ°a Ãlrž <ŒWG<“NCÚ+šºÏ5ª‹«žŽH?/ú!¯¹Ï‹®-/ íÛÁ]IovºØ9Êë%g¾%Dp× -am³mó=¹´%8mõ±iᛡåZK1¬Kr©.]D¬ïNƒ@׺kÝP[ªà#c¢Öoç|Uj ¥‘Ÿ²!€Aœí4öW,ȲlÙêlÿ¶éÕù‰ô4`Î_Æ©RN ³ `ahòÏíªÓ_ÔŒ÷#°$r„ÖÔËU(ÿ#‹Ø!o{Z5ú®u=ôºê`—Ÿ*ÁhØ›ˆÇíMÛØã9}~­õ­=™×Û¶êòŒ²)áA*ıCËFuõ÷Kžú WŠbª€#v±iZŒ¿$:(ó~ÉQ®Ðy:¯ô—œbI»C^(Ë«4Ž7 š#Fá4ÜÍ)r2ÜÊšßYj]aL:7mib,‹¨Âd¡]Û00ØÝt±0ð‚¨’y·£„5f.F‡ É®,ò¯ö +µc±ßÔö(VºÎ²kWžË’&R[eªÁ”(X ‘ùë¦ß!*îPZ-Ú>'ceUkè Q7–:Xw.Vä}eE[€áž<ŒH 3üZµÊ¡žy¯foðþÝOoŽ“}Ìa0 †æ¯Uô(§A¯Ù²:yS\W\ŃâzÏôŠ«Q6M'å*M&åÔlõ½ÁVÐØ‚‰È,—¹¥.• S€`©-K*Ÿˆ)šúd DñØJ ºÒ®ê"9Ù.EÿW«9sŸv6£C3T֚ʙË·qJ=±ÒqM»¯mP²’ Kw¦Š–Y‹».ƒÅUÛþíãòŠ–?ÒçÉï憎I‚‹R£MÊíNÓB/Æè3Û*ïwß=y:^6 2aÝDÍÊ2otíÀþHƒ¿èƒ‘m¾ôùûé¿„Áddøƒ=¹ð=4]Gšáʤn,ý^™tmƒE Ò5y­=Ù°Ù$|«:ËØ$À=„þ„™¼ÕuMž|H#ÆÀÐFé#­7„úã¾Xª÷‡Jw;´%ã S×Vª³ÕÊ?#âOˆã(H¢pljpÑS‹4|$B[¢ýl—ZÆ£i—ÜÅ Ï0 +ÒtT.¹Ç2bz˜daòìØ4ƒ™dlÛ úÒ´@e(âÆgG‡wZÛŒÉb€AâWÌáÇ,Ñ~èz’µVļù¼é”ÃßÞzÊàØmÊðggß, ÂHÌô)3º(|[…­ ! +I2’Ð¥;Zw–Ö\ÐB–Í4Àqíúh7bdn÷µûÖ'|23A¼Wû¦Å0ã4(`¥”X)‡ÎtWîë mƒ¿ òk¬lßæcÚ §±¸#Ac‘½™¥Ìí—Ýrè)VÎ!7YkÐ)ùY#ïOšÝ}¾O8ãîÄž¤+ ‹Ë‰ó©0ãK¯ÝÚ'ß»W ï’ªºiû‡ +z5á±vƒ&WÿÇtûa§Ì“#„œ²dFÝ“ ³@„÷±oÆPp yL>œK¢ñœ¶‚íë¦ÇÔ¶"w¯ Ð =ã;&„º`Ú!‚êþåhiwpš`‰¯!x¾Òë6‡4)–¥dµi„ ¾ õ&.ªf&G³þ’~¯ê¾;ñm·6BZõi€×nù-³|0 ­]~u²×‚g›ÕÝÛi[5k§}ãÞlnš<šñAÜ}eìèj6íe£5fÿë7$ò[þépÿlÄ0ÌÈtúgLš2¶W~¥jÕšq–®hU…RCÀse/Ò‡³s!ÏyJ+Á˜…Lò:å&ÒÚ¥LüÄRqü¬}ÞÜÞmU}z冭í +endstream +endobj +2594 0 obj << +/Type /Page +/Contents 2595 0 R +/Resources 2593 0 R +/MediaBox [0 0 612 792] +/Parent 2530 0 R +/Annots [ 2590 0 R 2591 0 R 2592 0 R ] +>> endobj +2590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.813 245.745 311.39 256.649] +/A << /S /GoTo /D (mem_sections_harvard_arch) >> +>> endobj +2591 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.729 202.044 249.542 231.11] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.045 190.089 268.979 200.993] +/A << /S /GoTo /D (malloc_malloc_extram) >> +>> endobj +2596 0 obj << +/D [2594 0 R /XYZ 132.768 705.06 null] +>> endobj +2597 0 obj << +/D [2594 0 R /XYZ 351.131 612.792 null] +>> endobj +105 0 obj << +/D [2594 0 R /XYZ 133.768 596.065 null] +>> endobj +2598 0 obj << +/D [2594 0 R /XYZ 133.768 440.716 null] +>> endobj +109 0 obj << +/D [2594 0 R /XYZ 133.768 436.108 null] +>> endobj +2600 0 obj << +/D [2594 0 R /XYZ 133.768 181.122 null] +>> endobj +113 0 obj << +/D [2594 0 R /XYZ 133.768 176.515 null] +>> endobj +2601 0 obj << +/D [2594 0 R /XYZ 390.861 134.706 null] +>> endobj +2593 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F41 2599 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2607 0 obj << +/Length 1549 +/Filter /FlateDecode +>> +stream +xÚ­W_Û6 ϧ0†=8@£J–íØ7ô¡Åz] ´ÅÚ`p-Š­\Œ9v&Û͵Ÿ~¤(Åqšb×a†$Z")þøO<¸ xðböl5{|¥AÎò†Õ&R²ešiž°4Áª n˜Åó…àœ‡«­ž/¢„‡Lë½™‹,lwDx¯‹¾jXD‰ÈÃHÌ?­^Íž¯fÏÈâ8á-XΓ ØÍn>ñ „Ÿ¯Îdž»uȶ +oÿªë' /l‚1­y×Ag,Šãï8ßZ™ÿÉùè÷ø½RðÆ—ˆF”ÚÅqßv]øÒ +ïoG敤ºj(%Zë¹HÂû}]Uo}h.žr²þáHžÕè àxUü³vŒTY:8CõÌ!êG ÇaaÃã‰cþ„ßg<‚l{Á$‘ˆÀ7& Ë¥°ú}+Œ'£èŽ”°$>:\Ñîvª)‰1˜Îr$²„-—Ëé%0çÊ¥tö šÚ=.àVw‚&Íxx6o ý Ôn_k¤˜C„ {€Ó1ùÒ49TÝÖ hiô˜œÊ1A™GL`q9ƒ¿÷ôµ ²4Ú'~6ÿ¡äœßɽí‚1F‹ó¿}‹±Í gE¬…0VUC5+ôRÄÓÄý´îµiT_YÇ@}4 Ÿ&á#dá°‹I%:Jâð`Àåh +? ͨ¾6´õÔ¤ø³+LµïiN¥0Õз;EŒ¬Ñ;l£(¼¹~ùçëçWDo4µ01ÖËSøè>IVÎ8†F£7ÓÖ§lïi²ñ[ðÇhª2w*wìÓƒ:ðô›½àͤïÒk›fm<¡ï‘`›W 1¤‡’HÖ¡€âÛYGݺǶ©Ôâ ycßHƒÕ½cº÷‡M;Üm‰è8eÇУžÿ‚îÀÇ\!FÁý]¬czw_7ßÝÔ¡]¡œÑóÏܹwà»³à†¬:Œå2Ì1Å‚2Ò]1k\1ƒ…M$ÂfKOß>¸²í nhi­|'IKëK8ÙµØiß+ˆGáäaQÜiŸ:¼D‡PfœKÎí£‹‡ðf¼3j7-AË9Ôù#OeÿDN¡€Êìô…œåL¦àºÑ¢Õ§ ×¼B·M“_uA“˜Á¯"y%2ZAu³ Ï ²)ÇÌÁ­uµv°W³,Ûû/wº9¿ò? +Lù +endstream +endobj +2606 0 obj << +/Type /Page +/Contents 2607 0 R +/Resources 2605 0 R +/MediaBox [0 0 612 792] +/Parent 2611 0 R +/Annots [ 2602 0 R ] +>> endobj +2602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.45 164.7 329.442 175.604] +/A << /S /GoTo /D (mem_sections_sec_dot_text) >> +>> endobj +2608 0 obj << +/D [2606 0 R /XYZ 132.768 705.06 null] +>> endobj +117 0 obj << +/D [2606 0 R /XYZ 133.768 667.198 null] +>> endobj +2609 0 obj << +/D [2606 0 R /XYZ 302.006 632.886 null] +>> endobj +121 0 obj << +/D [2606 0 R /XYZ 133.768 616.159 null] +>> endobj +2552 0 obj << +/D [2606 0 R /XYZ 133.768 355.297 null] +>> endobj +2610 0 obj << +/D [2606 0 R /XYZ 324.71 238.344 null] +>> endobj +125 0 obj << +/D [2606 0 R /XYZ 133.768 221.617 null] +>> endobj +2605 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2616 0 obj << +/Length 1271 +/Filter /FlateDecode +>> +stream +xÚÍWÝoÛ6÷_¡GYŠ’(1Öv Ú¡–¸ØC[´LÛlô‘IrÓô¯ß‘w²åÔ’Ãú`u¼;¼/ó`ðàbòb>yþZÈ@1%Ì×AÇ,“y UʤŠ‚ù*ø&LNgç<œoÍt&R2[Ûþ=®¯LÑÛ¦îà+Ž¤ …˜~ž¿ü6Ÿü=‰àD#»S< Šjòñ3V°ù6à,VypëE« N@4rŠep5ùsÂÉYþ€Ó‚e™¤Kq‚N¿ozsîA‹µr8&˜á©@«¦2½­LwwÉâÐö@¥ +m‡´hêiÂïÓ( MmMMû}Ctkëk\6kGs`d샵®WÄüŨ-±» ©éÐõ®Fö™» Üd†©D——SÁÃøGIhkGÓ°5º´ý2À£/Ý”ù²ëH«»«–Mi üª5ÜEn·¶Ø’S–s~·twxhZܸÝ´x<œH×ÛâšÎ=r>Eç‹íÎã%$â%2€xeC§»%àÚÏ_ÇãWW&"“ÞTÝô(süÆ)‹d6Èh´6ÊÀ3.\ ØÂàéýV÷(„ï Þ7]Ý”'´nZŠ+Ùí†Büòb|ô*º«Žo`ë? —…/OiºöÐAæ,WâAwmŸ„KJÌB—¥YáÚGÐ}»¦ýnÛìJZÿ`èË®º Ùºoy‘AÖ$ÁL$61:áªb”•Sy<`Oáÿã ÉÒý 2À9Ú’/ø>ëŠ]ð +iÓ®\ ú›¶M…+ŽÄg&PÅî—‚±«³$ei¢àVœEY>ò˜?µ„ü5ÍÁ_}]Þ¹¢Âe³ópg9ú¬ÅÂYþÄS¿ÈE¡’á›5nî:X­Œ/>ê~Ðr*—X Àô­uééÏ3H÷Ï»îùk«Ê¬ììT.jHñ;Â}Ý€j$­éLÿ0„„…,ŠäÁè©~¨ƒ•ƒŠË‡nð„àÐËÒ<Î&ÇO)žêÈWMÓÒˆ +oÚfÓêÊõ†8‡âHì$è‘”/}©ÃÜöªðwƒßX6A ëuqM64jå¤ ¦4ºEÖbñÝ´Í¢õ±¿Y,N m„QôH"–%bIü³¼Mò #œ)%!I!´8Eëk‡JãŽ.S¦" ¿Bïqkû-–˜#vdÆr©†ZóË©~Ž‰| šûýRìQyx醀?Þ!/0xrÈY¡†&’ﻚ:t5ØÕØ?I¸ÀrÒxŽ7nœÀ­7X|3¸€ÊŽcÏP©Nz˜Hœ5Eý¸l¥{,*ŽÀ$ ÄcÝm‰Û ½ºüõÃýÌÀ×¾Æ8Û O¼ô.¦¹k¡~Zò­èMœ[7Eœª=Tðûa¼$ÕQwÉ@å~×ß“fËŽ Pÿ þ@̲ѫ¡gDi—›¢`úဥÐóU-lúfŽ9"ÿ#„FCn¼D2*q~fK÷qB "®ëÛ]Ñ7mwÜ’_>{vlññ½cŒröèËÅÿm}Ê–B©žêÈ[˜ºÃ‡«JÛú0Œ žüÓ¦Àlü”¿lÃ_4ÉTçãÿ•¹b±¤'¾0µiõ~œÒv¾Ýáâ•)p‘ ‰ø¹ˆÏ£¿ç´Z»ÔìWÚiœ…3Hq²°¤ÉæUóíncêûWþLâ¸Ï +endstream +endobj +2615 0 obj << +/Type /Page +/Contents 2616 0 R +/Resources 2614 0 R +/MediaBox [0 0 612 792] +/Parent 2611 0 R +/Annots [ 2603 0 R 2604 0 R ] +>> endobj +2603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.81 615.218 436.852 626.122] +/A << /S /GoTo /D (mem_sections_asm_sections) >> +>> endobj +2604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [453.755 615.218 462.393 626.122] +/A << /S /GoTo /D (mem_sections_c_sections) >> +>> endobj +2617 0 obj << +/D [2615 0 R /XYZ 132.768 705.06 null] +>> endobj +2618 0 obj << +/D [2615 0 R /XYZ 133.768 112.824 null] +>> endobj +2614 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2623 0 obj << +/Length 854 +/Filter /FlateDecode +>> +stream +xÚÍVKo›@¾ó+öJ½Ý¯Í¡R›¤–r¨ÔÆ9%Q„am#ap7É¿ïÀ,l+u"UòÁÞÙÝÙÙoË|Œ, #SëÛÌúü]øDQåÃ0[.% üøÊ£¾âd–;Û¥3áŒ1{¶ÒÎDx̦÷Œ‰<ý³×i‘W0“Bp[Hçavm]ͬ߇›áËœ*æ‘xmÝ=0’Àæ5aTª<µªk"]PåÍÁŒÜX?-¶—ƒÏ#¼^@…ôÞ‹P‚E6#áRé*4ªÆ„’võê¤vTšåm¥\ª \It{™6«+£¨îÙÏiËq‘ŒÖ›?oëÎX´¨u‰ +¥®·eŽò¢,Ö¨°ŽÒüžy ~÷ŠÒmÜjÁ8¡#q”eè<Àl’ƒY)—&=¿¦¹k÷;œ½qÔÆ€%êL$g}dàDoƒBµo¢²®pV,ÌÍŠ7¯¦5^^+ñ}õ…Û'ÊdsTÎU¡ÝV§/‚ý´ Ÿ2!:ÅAª‡^Ȭ¦9Ž‰®b'i¾4^—I›AMÖ@R}Ú‘Ñ‘s;è'®GãmEþȇZÃCx@ 2OâÁÛ¼©T“¼ÛªƒfŠ5šgºOljïF½p„g/š 4Ÿ6Ù n>­tŸÇ½ÒÁ4ÖM)¼í©¼ïhx´Ÿâx?A"hÀäJp:PüA1ÕX 8lÊbYFëêNçŽ`öÖ<Á§ Îër×EYÀÅÙÙØàSîNœÝÓ"ÿǃ?ŠA§…Ÿö^(ÓB·ŒIÁ jHQÞ­˜ï¼ÆyV£aˆˆæá¤v¸­ËušGmÏ4Öâb½ÉôëFÛ‘ñ:øb¿àäñPçßãÈ[ dÖ¸#¢ùAÃUî¾õ!3ýp‚-8ß b®¢- lïýr isœOítw>âUãí™Á€9{(ó%™HzÐQÇÐPÇÛªïä7#:йòµªôê¥û˜6¾þ“O^=GM&Æ¥r'+(ù–ܱcŸª@†Cr**}“¿©Îuõä¥ËØlµEáRÇ(¸8pv.ä9q&3RK º–µ´ td`O²tn,Ì C¸,ž_–:ßuù/ä!M +endstream +endobj +2622 0 obj << +/Type /Page +/Contents 2623 0 R +/Resources 2621 0 R +/MediaBox [0 0 612 792] +/Parent 2611 0 R +/Annots [ 2612 0 R 2613 0 R ] +>> endobj +2612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.89 617.778 183.312 628.682] +/A << /S /GoTo /D (group__avr__stdlib_g137096a48cc0c731052cadfb69c39b34) >> +>> endobj +2613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [301.438 617.778 351.429 628.682] +/A << /S /GoTo /D (mem_sections_sec_dot_text) >> +>> endobj +2624 0 obj << +/D [2622 0 R /XYZ 132.768 705.06 null] +>> endobj +129 0 obj << +/D [2622 0 R /XYZ 133.768 667.198 null] +>> endobj +2619 0 obj << +/D [2622 0 R /XYZ 133.768 166.772 null] +>> endobj +133 0 obj << +/D [2622 0 R /XYZ 133.768 161.436 null] +>> endobj +2621 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2628 0 obj << +/Length 1594 +/Filter /FlateDecode +>> +stream +xÚ¥WYsÛ6~ׯà¸%g,à%1é•ÔqšLsÔVó’d4 IœòPA2±Ûéï»”(™v§íƒ `¹»ØóÊ;‡;/&Ï“G—~ì$,‰aY¬lÏ8‰Xœg‘9Ü%ÞTpÎÝ_›¼ÚxS?âîµJÛ¼®<å®?ÒRg +v<òg®zŸ¯&Ï“ß'®åŽ\#XÂ#'-'>q'ƒ¯΂dî|±¬¥„À*Œ`á\O~™p²ýtµ¾3cÉŒ‹#_¢óƒ}ù*¯Ò¢3ÖÅàÏ7ò³~”×lû±Ñ æÌfÎTÌYâ'(ÀtX^å­8?“7gç?ìt½Yåmce¹3MX‡(Ud¹7 }ÐüEùÍz=ä$ƒê®%ÎåõåÕòåÛåÓ‹‹«<âïÞ^-žÁFÍG.º_–»Òûpä}$àzàLý€E}¬ÞÔ­z|*ŇÕ2‡ÔØpA¦Qf±UF¦∑>¨°<#á;QœøÌçAÏߪ¢°u¹íVáF6*W…Ò=]¶'û¼ùQèæ$/‹¢Ne+A &Rgò eÂ;‚Ûr K¢MPžˆÜóO¥]/žøG‚¬2ܤuÕÊÜ®m dpí@hï¾fÄ0r/Í µF¶²Öö–Ðͨ*iΫu­Ki£‚°¦öE­Hàƒ +6§,×æèù‘ûÙúsŽôF©¹gÂŒû®ÁHs·”U' FI‹¼Ú·E$fP!SÈ8ÿxÜ­ pÓYR_>¿‘å®8©ÏC!ŠòÏÄ~ÜþŸëL×X¯@~ïÁL„ƒ2œÞ¨†Ú +yŽT“Fê+ØÒ³"X§ŠÑŸ· ÌÁ¿ùqÛÿ at æñófŠÇ‹Á“ 9ï'ûŶÃÍ…Jqâ"øc?x,æx‚ߊ´[› Ö4×K[¤Ú fî´ÈW¤aEoãE}s /ý©ËÆb+ô +endstream +endobj +2627 0 obj << +/Type /Page +/Contents 2628 0 R +/Resources 2626 0 R +/MediaBox [0 0 612 792] +/Parent 2611 0 R +>> endobj +2629 0 obj << +/D [2627 0 R /XYZ 132.768 705.06 null] +>> endobj +2620 0 obj << +/D [2627 0 R /XYZ 133.768 533.301 null] +>> endobj +137 0 obj << +/D [2627 0 R /XYZ 133.768 527.869 null] +>> endobj +141 0 obj << +/D [2627 0 R /XYZ 133.768 284.331 null] +>> endobj +2630 0 obj << +/D [2627 0 R /XYZ 133.768 249.662 null] +>> endobj +2631 0 obj << +/D [2627 0 R /XYZ 133.768 249.662 null] +>> endobj +145 0 obj << +/D [2627 0 R /XYZ 133.768 249.662 null] +>> endobj +2626 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2636 0 obj << +/Length 2389 +/Filter /FlateDecode +>> +stream +xÚÛŽÛ6ö}¾ÂèËÊÀX!E]ƒÝºI“MÑ´Ýd°/iÐ2g,T–\Iž£Øï¹Q–=jÒì‹I’ç~¡Õân¡¯¯þusõìU”.Š°Ha¸¹]hcÂ,Íi‘„i¡7›Å‡ £åJ+¥‚o—«(QÁíàxöSÃcÙ6ýÓ8ŠL%Ë7ß_}wsõÛ•†‹ÔBOÖa¡’E¹»úðQ-6°øýB…¦È„º[˜P5n¬ï¯þs¥Î¨UsÔ&Y™„©ÝØÁ.W&Ï·ÔIðX!a&σªað°u<éíÎñ’Ýl:×÷ÞÛÒ…ËUEÁͶèÎÙ¦gìakÚ¯8òGÙîöUí:Fºm;Ááá߶»_FI`» J8ZiE"TÛ®ÜVƒ+‡C‡4©8Øwm 4Á1± +®¦ó ®~]jF"Œê·Km’à¿ï®¾µ=Ç–‡^[ØÒ1l·Ô°„Gµ‚°wäü‡jØ2¸w{Kð9ʽìÐHv}8âeaÅŒ÷¾%iGzÞ)¡àMÛ¬úÁ6”-½à¡¶ÍÝÁÞ šˆÿ€Ó¶ÛôȹÉ’9  dD1‘à>®ÙœVia¼lÊVÊäöÇf°ÌU%VN×Ù£ðÊf€3Û‰;L9Qe +,HÖ¼’dsÛÖ½“ýƒežä`ËæºEƒ¹uküE{° +[ngüúŠ«ˆDÿ0AÓ+4(Å••­6#½k<íÙ+c¦®Ea'+>ûÓ'; ]µ> îÓ'F?óÄ\‡©Ž<¶8ÜV % ã C–†´ 0Âó NyyE<®"‡Æ¤ç6‡¤,Ñt’àã±4n«æN`ý/À™%ˆnM9TmÃÐ+k4k)ˆ‹Vv];†Áf´:û¸GÛ^Å G Ѽ@yfÜ嶭ëoyp„—ë#–ÈÊ–´°ÇK¤Á_”ŠJëÉÏØ*aÜ´ –÷îÑÁ“ÀÄ{¦5‰‚7‚8±@@s¹f8¹ˆ™Â 5CúhGQ^<¥’€­k·™1¦Â„Z¶&|·s»+Šu˜ÇÆã!õQ>JZ=¹¨ðKCÀÂQ’r¡å¨(¼FÁñ\]³–VÚÄÀivGØÎÎË㾆hçƒLäâIÔ—~Æ;»ã·n×vGžÿ¢õª¶ý&zÖ·½êV?TëävbD£»¯6è±<ôÕnö«"ØÙÐfÜîĘ́’ŸßýôúíwoçT’„Å) °cã%•Ü¹qh– Ú2‘Ðó½Ä3ÎuFôñm]‹I~áÛu¡Ú[#‰k0‘|KxüS¦ò J‹¿bfPÐÀm‚wF!Ø\ÉZÒ>ÜÄäë— ÂËÎA>ÜðŠZþ„bsö=ªÇ5•kJçm !).ø…ãã<‘Á„òNÀ¨}òOâ„e àÂÃô\× él];‰-Ë4AÿÑJç”f, HÃ<û †i>FvÞU 9S @psb‡NƒJîtTˆ&L’è\§z‘ ÅîN*Æw¯¯.HÎÂ,.FµÝwÏöw;.Ö¶rŠwæ8Hý¾Îð¨Ux²ñþØNœtëìÆ;=rY»P4© áe‰8©°ñsWb8éÁ(iâö¡¦ENT¸¸kaùÈs¶p˜ðb$ÖŰƱFéc,ez g相¬€6©šà‹ëLiYôí\|¯ ††1HbD—¸ïðwUSÔ‰À˜¨¶ÀÉèøAf! aìøÑÎŽ «[™Hœ„Ùm×¢¸uqZœr픘¹÷Éš£¹KîôùR® × ѵ¯]κP DŸ¡¿´Yž +ä æ…:/­>"ŠdŒé§ +]e“`h”Ž0HGøyý ÄX!EóŠ0^Ë)O¨Ó3 ÊäÍ,ÇtÖ \Ëô›i>Î1Þó¶zËßÄ1û¡í>!%…ÞÜ2#Ž|CìMgºþÞOið”Æò£/Õå‹J¡oÁÛÀ{‘õ”̦™^•dËB#Ðì«Æ)dñ$ñÀö¶åJQz©Éøšôüo¨Ê»^Ykx”wJª†ƒõn™ÿ¨“‰ƒN6±©eñÔEàkoWsŸYã$ÞÌVQê²|2R>½É1«S—yÇ¥/uç~ñåçÞ–à­“·ª¾X{ýà_+ÑÓ«<¶)¹„÷Õ7âÐ,ÎîêvmëÓ“Åó³:õT¯‚SBW)íïÇòX²Âº;jüR(¹ãÙîˆ'~Ðúã­>2ì^E§ò'˜É¡ÏxA8û]=*u ?"ü1øãO‚?)þdø“ãOñ¿ë3úgÿz(ò03_óǃÿ{$˜|ú‡C^„ÆûÚ5ôf.ºoE»7[ÑÂKWò$æA«ç‘y®sþŠ”’õŠ>¹Z꛺¥ÉÆæ  kÑðËöñxçšK–ÿiI·Ö +endstream +endobj +2635 0 obj << +/Type /Page +/Contents 2636 0 R +/Resources 2634 0 R +/MediaBox [0 0 612 792] +/Parent 2611 0 R +/Annots [ 2632 0 R 2633 0 R ] +>> endobj +2632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.521 481.657 226.2 492.561] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +2633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.618 440.123 341.297 451.027] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +2637 0 obj << +/D [2635 0 R /XYZ 132.768 705.06 null] +>> endobj +2638 0 obj << +/D [2635 0 R /XYZ 424.97 443.276 null] +>> endobj +149 0 obj << +/D [2635 0 R /XYZ 133.768 426.549 null] +>> endobj +2639 0 obj << +/D [2635 0 R /XYZ 202.779 224.27 null] +>> endobj +153 0 obj << +/D [2635 0 R /XYZ 133.768 207.543 null] +>> endobj +2634 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2644 0 obj << +/Length 1710 +/Filter /FlateDecode +>> +stream +xÚíXÝoÛ6Ï_¡b“Då·¤®+Ð6m¶íº40¤yP$ÙÖ"Kž,'õ†þï»Iù#µ×ØÛúBÉãýîÈãÝI,˜,8;zvqôð¥0A¥†º‹qÀ¥Œb“&Õ‘IypQ—¡Žäè„3ÆÂw}ÛUÍdt"4 ³¦pÄyÙwU9â:¼]/žf}横q}?-ñ¶ñ$l']6sïæYNkiÌx(ÌèêâÕÑ‹‹£?Ž8)ɾ¥R¦ƒ|vtyÅ‚‚_,’iÜYÖY ±rl¬ƒwG?±mK¥ â(ÖÒXDLèÀè8R;KÿbØÓcjž¡yŽæÍ 4/©á G#ÐÈÇЗ0NÒHµÃ–5ƒ&F“ IÑ„„„ŸîŠÙhÃÌ,€,€,€,$€€€ˆø6ÈÈÈÈÈæ €€H€H~H d d d d d ó$@$@$@ä³CÚH K K K + +˜§¢¢¢ô!mÌSQQQ/i£¬¬¬¬¬ažˆˆˆNi£¬¬¬¬¬ažˆˆˆ9è7ÈÈÈÈÈ怀€˜ÓVʉL"¡ã•>~‡%zÞlëyœˆ#ĎǽàD…uÖ—Híž+M­Úe稼-ÊõœcÊò¼\,Üd?­²1eˆC/ àltÄRã¤:xCAï{×ÍV°ï²ººüýê ÎöM µîH‘øƒ#âzeMïFÖ,ꇃpœ£üieO“ú·Ý4i𺜵ÝjdtN$á/ /ÖªGæmÔ*8)ÇœzoÏ:{ýâõ;”Š8Wß,Ë;¯å¸]ÒÍY©Œ$ÛÎ=šV…ß­„¢8]K{ì/Q½›øð~î¯b³)Žb•{²Ûîá|2[ IDÓ›¼‡•ÈÈ$fØ÷dmV¾– G”L‡óe„Uï&²±}˜²i sE™×Y—9?ÆD;¾Ç±íˆÇ4ÅÓðz$X8H¿.Ǹg{‚œKJ?þ½Ë­3dÕT}•ÕÕŸ¤„báñçÕßTM^/ ïÙwÏöÉží‰vÑò-›E5iÊÂåÓ¬ÛyIœ_]rvåæô/nOl´s{r6¢+Cteˆ® !œ!2R†@ÊH);¿¦þ¯©ÿÿ’ú/¦YÿíHSvÙ£êŒN”‰7yK2é³Ö]6²œ ·V5nìßؤ' lM9‘¿8Å-¤@ìË3¿1ogóÊGJMÑ­¹±¤â2qLËüf_Ê_GÊY6wÄ{ÆÄþmZ¥þŸ$eWWÃHÖïÉŒœQ2SbñltÚs‚tÒR¯Ó‹-zHè¼&C‹Ÿ:yÛueÞûˆ]Ú"(ò @qúÂJˆˆ##Ôý¢!N]¤Ú¡(H‡kÕ•‹ª(ŽÁ§þ.@lJ…ÔßÅñöb/ë°«uýºª£Õ÷L³®Ì +êù=ÙÃñÜ¿”»ª®‰Ã¤a1e¬¶™Øº’ælåÓv7¨Vhxa¥áÕ ÊÛKû&e¿ps“²))çÚ¦… Dç¾9…ö·ìÖûAª?§©•—Y·¹•¸Ç°J3¤t"²¢èì™``¾_ýÔJº*þ¼¥‘曤ë2[ÄázRªDê匌/ìQ`¢j +ûýÁÚ[¸ÉëÕ?©ÄÕ;f]IU{ÔIÉùävA´GJ1¹~¿NÈv´ðÎNÕQ¤éË}§ÜùÁ9ûÖ%ÕŽŒ¥¿•Ø—Ýd5éÖ}¨Ä_-¦+?“gu¾¬¿`|7-»Ò±ÀÉÝ&?ñ©m-å7ç-}€ íápóá¯QöÍ=p¦¼iûm÷¤ÕÍóXéõ¹æ-Ö2­SŸåý2«ë•ywÆ»ŠEøc¿Ë;ĽWñÁãí +÷ĬoÙ7o”ý½ƒµE;ó/d2Âm_gD{£÷²±oÞµä3kÁQħ#.uøë¹=-=kÓöût¦Ëè*ª,sYošuÜÂün.Ö£6asÿ¯©û¿¥¢"{ïo©4‰bùo~J ¿Ý Ué2Ùþí–¤‘²øÙVè#mZ¯ëÅtéÿ°•¹#”ë8{$ä#ž¸‘`ÌS6Ž´ÿgg¯±É8<©«k/áÚŸãiûaE÷¾É-xà +endstream +endobj +2643 0 obj << +/Type /Page +/Contents 2644 0 R +/Resources 2642 0 R +/MediaBox [0 0 612 792] +/Parent 2611 0 R +/Annots [ 2641 0 R ] +>> endobj +2641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.314 455.256 236.993 466.16] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +2645 0 obj << +/D [2643 0 R /XYZ 132.768 705.06 null] +>> endobj +2642 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2648 0 obj << +/Length 1368 +/Filter /FlateDecode +>> +stream +xÚåXKÛ6¾ûW{(¤"RHQ/¦è¡E@€´Û¬o›E •éµZ[r)y7nÑÿÞ!g(ÉŽŠMŠE/=ñ5~3óq8óî<æ½Yü¸\<gžŒdÍríq!¢<+¼L¦Q&¹·\y×~%AÈcþUß꺹 Â8e~Ù¬°ó^õºVOýûañª7‚êÛ~£°s©^øí.w$¾/+X+r8$΃›åÛÅ«åâ÷œÌã\<’,õªÝâú†y+X|ë±HÈÂ{°¢;O$ ÊÍÆ­wµøeÁNŒesƦy‹]Œ"Oý®ÝúºmpTwØ®–×z{$©z·ßª(³"÷^èÖºíÛ~sØÝ^˜~â¯[“eU©®³N3ÃUÙ—¤­Vttã4(ã0&äà…”_êÁÂù1Nc‹ØLõ-Žñ,šÛžh¦JZ:¶\jZ½+·ÆN3ý`ìnÛ.~`)s;ê5) ¸z…Ä`®ËÛ-Í œØY6cˆcÉKÂD¬€£ø3oëß "Q×¾°Dqvíó×Bxy$sÆM”á”8˜Ìð”Ûcû3àÙ÷ØìŽÆ ×õÍõ¯7ß…g,1ûó(-rÜ®sl.§hn—«•&G3ý“UsÖWÁÎÿö7&SìÆO_Ž_ +ÿÐ)ì 8 Ùïu»‡¨õ +¢Q‘”Q– ÏêÙßí>jU®>¢$O&’)Ü+9H~`LÌàÊ£b”Ù••n!Ê‚ Ê+#.1q) ¬K¥%ªFØDb˜»UU»SeWÈ3‰$9%Ùˆ} —FõJS€Z¨²Çž…ô$ \eVLØfc÷…ñ[næbË(Oš"b\ž„Æd?–N(oFeC­ ` 9ÐLïÛºéÝÆ–Ú í²–Ø{n¢‚¾™Ô*Ä8ß“ü,ŒæÁso^Õ!qH¹#N!Ì?fmȬ†i=ÎRd +äó$+À×uwºûa¤þçl¦´‡L¼;bêd­[æ>â ,ƒ5ëNòÉr¡%$ôè€c´.A–ú\š8»2^b¸§›§l7óçÊm±ÛQ[”ªl°s§šp.o+mòEgîÆf‰_µZ«ªÇÙª]¹õ[­Nˆ›h·pzkÝîÎTï]Fï8DÀ……›¡IAé:« +M?soÎLyôæÈG“Z’Çç7gš_Œvz N á‹Vÿ¡ÎŽÕðº¼4ÿÐÜÕ£7›ˆeh!¤Ã8ç^(’ˆ»lòŸ•vóy-›-ÉO­1àÁÕ'hmâÊA4„™î` ™õa¨M앦*'s 3’¶ZC‰±ô!’AoRK%c-…W}†ù¶(*Mô„˜ã %8"!?š9 gŠÉ‘f€ LoL žæ¹ÿƒÕ“Ý^U500®°@3»0Aç3P3éfðØ$Ô˜_NÈ×M#í<ñÑOÀ™W$@!3ÛKÝ ×qðP÷›ATOO‡ìö„¥^µ)µµ>‘„/‚êI¡ûÖ.$Q^ÄÞd-þØ›ºõúƽâöŠ ø"^(£$KPúO»ÂeÄc‰ ¤æïîçÏ\ &{ODâS‘9-âq-ÉãZÒ ª&˜IÕ__P| d«à!ڎ΃zù>¶þüæÝ«w“šê¼à¢+§ûóšYU[x¿ÌÇØ¿)Ÿˆ—ïÉÿ'?Ï~’Ë"ÊÅ×|»¿LÓñBFÂA|£[X8RÝ–¢ÛKUa'Á†³±xÁ ÅŒQÏ&žÖe›‚u r?ÜÖ·¤á–ÒÞËöÓŠœs“ÿ‡ucP +endstream +endobj +2647 0 obj << +/Type /Page +/Contents 2648 0 R +/Resources 2646 0 R +/MediaBox [0 0 612 792] +/Parent 2652 0 R +>> endobj +2649 0 obj << +/D [2647 0 R /XYZ 132.768 705.06 null] +>> endobj +2651 0 obj << +/D [2647 0 R /XYZ 425.402 415.499 null] +>> endobj +157 0 obj << +/D [2647 0 R /XYZ 133.768 398.772 null] +>> endobj +2646 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2657 0 obj << +/Length 1799 +/Filter /FlateDecode +>> +stream +xÚkoãDð{~Eà8"õ­×^;¾ã!¸GÒ=hƒ:ªÊq6uŽ7ØΕñߙٙuì4=ZÏÎÎîÎû1¾‹ñåè‡ùèÉ+S?á3_ƒ0ô“x6ŽSåÇi0ž/Çï=åG“‹@á]·¦.ª»É…TÂ˪%Wº­ = ”÷±Û¼n‘°¡EQÑ·]kÞÕ“`æ™»:Û0ù6Ëao–À#r6¹™ÿ4z9ý1 +€O1z|~*Ô8ߌÞ߈ñ6 ?Lgã{Kº‡x°_~‰°â”°*ñe¨HØ«ânÝ~7¹áýz5‰„÷öÍågÈÜr$~,#¢ü¥Z™ºÝUY«Ëý$VÞN©È»/Ú5@¡ô.Ÿ?G ô²Ô±˜HáíZÝ0jt¶'Úl5‘Ê[é¼¥#¦*÷Y­!°Ôy™ÕY[˜Êídí¦wW­Ý»ç 8Å2¶Y¾Öh¼Py­ñVÄÞµ!„5n¬ 4_{yÖè)‚3ï^ªÙå¹nšÕ®D.‘|»ki Y7Ÿ¼ +þ®ÓÄO£8±4Ö=nÛlQ2õÀ2Iä‹$qÄQ3Y] 1óAž¯euí­Œ2‘¾áPÔ¢mt¹BK íJ ÐÙqa}”¥Â›[áûâíËk‚Þ¼Eo˜£¶RwpW–·»¬$¸qÞÏ`â#H3®¨Z3°LLìv Iv …Aê}ÚµNc­»[—L æÀŠ#ÖºM[”%ŠÝ‰Ð{‘µYï¹)Ýs¿.ò5ŸpïÕfØŸr¨Ê´Ç÷Ö#Ú›£&¨œªõOÅЖé™z©kæÌŠ +€ŽÕžp’‘}Éž¡c ôÖ©Ÿoä'ŽwBÏFÑŸÛ²È ~½tü2Dý)èŒ4æ¬?=Ê’,x@8Ì‘=yØ%ŸÚtèÒ˜ûÚø‚˜JD€ÌHå‹4!fòuꌅ{ã6xCëwWo/_¿|M‹oèóù53‚‹àógN¼Ôâè‘ åÙÊá…ê‘ Ã³/ Ïã0:ûÂè<ÕÙ*ºð(«¡_ÍØFóµf›ï}T +9ïžÝd¿Y˜ò¨–‚{×|ÈåE€Ëâ†ßÒ˜ÿä;.]¾¾}7ܾðˆðõö—Å©Èt`!çŠÓ‡œWMOXÖ9È'ÎEŸ8§¨<ôâßa¥7†-¡lÖÄl¨lRiJ#yºWÀqìè qߢcœ¨‰*ö•έ‰Ð¤DÒ£àí]ºP½ Ë2±®Ob¨šÐõDGeòßÞV~8ëµ¥1†Ú‹å4N¸[ +_[œtÍ„˜o‘# +Êd‡ÿ](ÁIÀ«tª˜s{€ReïB2%³3,ôg[¦§1úÏã$;uõK×ú“iÚ=S6ÆíšZ/OV·ùéVh櫃!)Úª<”~v-P»ßjjÓ²…±6-DY{à–å) *›,¯ Ü*´Ô¿ !+ìÿì!w˜>Þì¡áuùøÙÊ]­É,*ð£$šå¡¦‡šr]7²!¢ô`­CÝlæì“ÑzYpÜÕºâ»v˜TÊó©ÛúmÀÛÀ‰®‘±ÄKS}‰ÃHK›®[é9ÙQÿä\Pì'Cpbƒ›ÕƒÙyô’‹}« »Ø)bxs×&`—5<¢Y¨¾ã¡èŠ3yßµB?šu^³½ÛÜÖ:[ÞâµleƒŠpät)vЩ;n݇§ƒ9F˜X pí|ÄGÒ³è 2òV»*ç¾ —ÔIY¿ƒ•õÆÙz‚@ +»iáëG¥f)ÈkóÔÚÕO@u»õ‘àƒ÷béÇ0VòÙoOÄc  ^v­A«NL §R;il˜dÉÔxE3¡> endobj +2653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [316.259 266.512 407.915 277.416] +/A << /S /GoTo /D (group__avr__pgmspace_g73084a8bbde259ffae72980354b3f027) >> +>> endobj +2654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.881 254.557 332.478 265.461] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +2658 0 obj << +/D [2656 0 R /XYZ 132.768 705.06 null] +>> endobj +2655 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2664 0 obj << +/Length 2226 +/Filter /FlateDecode +>> +stream +xÚ•XYܸ~Ÿ_¡G5à¦I”輞ÄÙÅ.àx'Ƀ½0ÔjM·bw€ü÷T±Š:zäØy"U,²V}U”ôNžôÞÞýðp÷òOöŒ0†‡GO…¡Htêi m”÷pô>ø±ˆw{%¥ôßd» öÿµSÒ/²¡ßíƒ$5‰˜Ýo?ÝýñáîŸw +N–žZœ¤„‘±—×w~“Þò¤Mê=YÖÚ #`U¸±ò~½ûË\ª†^"L"•U/ „ bOG‰HVïåËÝ^ƒr÷e©²+}ÆÇÇ¢£yÛÐøó›{Šz{e„ +RooD¤c:å?vE-"ZW c×ün±Ç<ß”  A"â4!–?]ñü¤þp.ˆLšùÃTÄàIìýЕÍéÓªbãð$&ŠsÖuhn~ÙÓØmW™ÖàúïºöÔe5½d9)”ø}K O­ey^ô|P9ÐØ´]UÕu§cÿ;B"Š N„‰Ù™Ýùå£;³+ˆ2«M*ÝgCF”Yƒâõ!ûlcŒxÐqv’kúíãÍjÕæÙP¶ÍҨȃ²f`f6™L}áî|eIƒÊ¦‘?öMHBº”n¤á’‹cÎîi7îZÅÐqâîïrª?uEvüôÔvÇ­Û† —Æq‹Ý>Rÿ÷]JŽ¹Õð¹¸8Âöt‹A +±êµí_Q$Ð"1;©Îòݘr'Œx0ÌŒt¾2É4¿´eÞ1~;Äj/05_QžR=úÞĈ„Vá:1 bÑgy¨ YY7ñ;œ3TK‡ö>a˜u†›^0*½?”Cñªµßòª 1ôœýêË 7ŒŒÿðË”³²ßŠ‚À°êÆù(¶¬*šN­ÔMÙÚX‰0Rl­¦S%;6}yj +V-Þ©Ø?ݱõ^Ë9 Sfg(KA<­±^ÃõRäYÏœ$›.:rú ÝXl8Úq™0 >àòÚnF wޤﻷ¿|z·ÃF¤iºH¦P'pAx³8›´uê;bÖðèò?ʆ˜&XE¢…±ÅI6ôñ ²ã¹ m./ˆˆA‡³§‚o‹´\'åŒ`!ˆcÞ^îÂ<”š­ÁÅÙ§ðáˆÃNùt}ðÐq¤YÆËo]àØBå5LÇ&·(ûü&‚:…(Y¤l~¹n^”ï4P‹ËÀ“9[¼}„\µöÂÿj¡ÒïK€± Q¬[Œñÿ1ÚP5©_•SÕ1†-rG91VY·!ÜHaŒ^Kß e>D;[GB¥|{þ—¼¸°ŒE Cɸì²`}3Ž¥EªÖ>šbKÿ±k16Áž9Pìèe,),Þy‹…¦EË6Œ1 éó€¹?>b3h»,¤Ù¼P\@EIN(ÐÂûQÊ ³wßè &öDè€Ù!\°Å#ÐÊNBèØ /¯DžÜ+Îå=ï ðý³²²5Å’9!Ÿ1ý3ÑŸÊáLt:“O±æ~Xûù{ÃBë¬IQ⿶àm4•AÁ+¶œ›Øï@ˌקB +ó…ÈwƒÁÀñºôè—IÊFÂF´ÑSaßLAû>¥ªmàHYRaJKKnàÎ^¸ºw•„[½UÌ7†“c‘C^L¶ÇÇrn àU°H5èžfmoßôØèNüêxÿöî¶3I4õPä¯î%ÔÜÞÞÅ™¡Ç< òä”´ØrŽs‹r†"na3–ÖóU!x‹öÈ î EOˆÀ­ä[o¬í'FEÝL‰€¹%©7p(a“ˆ«1Œû¸`SFh:¨ eÁbm,á‘òÏ°X2"’æG…™AèëtréT4ûURp/RtCXèñARÛYÊ8t-äí‘l„z%êRî €åÃhŸ*ö«jmKªSŽU ‘AHbƒ\]FÒ;ðÁÜt¤S®†: Âº‘Ïe“:6RN÷H®t‡…?É!Ý™údF \„«{"Y ‹F~E"âæíÁäì ¤‘²+rÅŠÌGÎND·².Ä–íÇùˆ ßZÀ“±»ñØ)ƒWlO¤Ùs+‘j)ë²)k4üÈÛúB)gQnÉ)“Ü µÑa!<‰.ãÀ SŽZpAR‹ú§‚‚Mäÿ€/$^Û‘Xûs;VG" +¢ehõ`¶ÌÀ †Ë£ö(}K>)ð󌥣éû-íkx'ླྀ„I3ÚWŠS4@èÃÍØѶ +QÜP·CvW¼{Å‘ë-qv*쟚¥ >«y}…˜ž$ršà‰˜&ª/: +={4Iü¢Ñ½C Tè7rÞ•c¡l ¢ éo\$hÈÜö3oV±¡«ú±â»†ÏcÙg}O;Lzdä¦Gjÿ¶Ç`°ÁØ++÷¼™ÐÑTŒ­¡ ‰_3(&w;hS÷UyȹŠM匴pè@M}ë£~«HÛèxÕ‘¡XÌÍ@[ã¢ÙýøÛ¨L¨Ó–(Š] õ PïlþÁ"<6{j„€Ã:Ƨ® +Z'üAâ#¾pqòz§ÂØÿÛ{b¨K¨3Ð.][Í|ÒØӽåÊÊfóßÊÚO};v97(UP»øºnmÃC@=u ¯VÅÚƒ8 +ÍúwÛÇ ˆ×\ö1U²IK¶Icça}SæØX‡±™^c°ÔÒØ´L¸©j@yÿúÚEX¨:hÔyìoö÷ãåÒvÔ*žÃÕqò–7ÖY©ˆn_=Ïâu6lïØ1’ô÷˜n´æ㄃âÊ~ ßçenûNtøåR•ôG­_‹ÞüÏkRÝÞÿñ—×ý|ÖÂ$aºüùœxþ±Þm8ÑZnÎ#Mî Îň%_á+•ÒW %Ïl?ìlßÎæûâ¾ýr…fåÖäÿ;õ +endstream +endobj +2663 0 obj << +/Type /Page +/Contents 2664 0 R +/Resources 2662 0 R +/MediaBox [0 0 612 792] +/Parent 2652 0 R +/Annots [ 2660 0 R ] +>> endobj +2660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [233.192 427.551 297.79 438.455] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +2665 0 obj << +/D [2663 0 R /XYZ 132.768 705.06 null] +>> endobj +2666 0 obj << +/D [2663 0 R /XYZ 351.296 430.704 null] +>> endobj +161 0 obj << +/D [2663 0 R /XYZ 133.768 413.977 null] +>> endobj +165 0 obj << +/D [2663 0 R /XYZ 133.768 270.634 null] +>> endobj +2667 0 obj << +/D [2663 0 R /XYZ 133.768 235.965 null] +>> endobj +2668 0 obj << +/D [2663 0 R /XYZ 133.768 235.965 null] +>> endobj +169 0 obj << +/D [2663 0 R /XYZ 133.768 235.965 null] +>> endobj +2662 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2672 0 obj << +/Length 2038 +/Filter /FlateDecode +>> +stream +xڥˎÜ6ò>_!ä²ÝHZ+‰zúæ<Y`íÉ€[âôVK +)Íxüõ[Å*ª¥ŽÆ#—nÖƒÅb½Å(8QðÓÍ¿înþùc’UXåðwwÄB„E^y•…ywMð~—‡ÉþGQ´û¹Û§ÑîqG»þ£îNûC’E»ñAÑ¢îσn•(.³l'¢ýïw¿ÜüpwóÇM 'FA¼8!«( êóÍûߣ â/AŠª žë9)°Æ¸± ÞÞüç&bµ£•úÑRý, +“¨ò¬‘‘ú’$szø}ÁûC—y;¨ZË–ïð¤äGëï#G¾ìºž×G¾dÓw¼Òý߆(>8Äy˜Š*8$E˜•þ›dÛ>ïól÷pGb X³û$ÚM#1Ù¢(1v$–ºŸÚ†ðƒéò’tTÄ@Ê FI«=u²Î7È€réîh|sb/¼qV@^ݵÚËÖªóxe.”t^—µnõøìîÁÁ‡›¹¿) ÂyGæIJ;^·ãC?ˆ]¢9 þZ}¬ ê±O£ÏÒ¸ºC¤ÙÇåî¤FÕ0¦§ v÷†ÞŒƒÝNFžÏs´¾ÞÇ"Ûý÷ Ag]›¾î»Ñô-èj·nÆæLŠŠ/W”»[úûe‘ì"Þ~û-À1QZÙ&yRèõ2ÇFýMa™®Ïš”‡vÖ(÷½!l£ªyq#MD{ÊJçœt~Rmî|vçrTÂðÙ¦Þcš#\õjíù­ˆ~)~³xL“ØØ n ŒgÔÊZwA åëd 5o’GŠ4¢÷„œèŒ…l+Ï~õ|>ö­®‰\jGÙdœ2L¡ä¬œÊIžºkÃBTû$ÛIÝB®)¢»Ã|K ”EǦ˜3„Fƒ³ÆHÁâBíãl÷IÏ"Ï¢Ž– h­†‘x/JAå!^y#& "Á<¢*XçV7ºØD¬nT7jt8F P3¤HY Ä`?aˆzg`ÚÃ烩óÎò¢¿;r3ŽPšjW¿˜»»7#Óe3-jíÐÊZ­ÃW2i™"n‡ÍTºï0+ÃuÌ|H@óH²¿Ù˜ÌÑWíÌvØ{ˆ +(> +ñäZ¤ùH”VD˜7ÉiìÏrœM’8Õõ©£*º•1“‹ +ÑÕP zc1¥A£Ó›?Å6'ãtxÔk×íƒ%æÍë_¿{¹E%õRþsLJʹ 4ÓÆ^‘[)»©µýº£N#¤úgÕ8¹„¢'Á–ÙsBDƾ}ýDB’—³BäD‹´"‘Þ¤P23Ž~X “zË@£lmô£VĹ IbÆ&åúz:CÒAi"¾HYD&nteñÐy)0øXW‰p1ñÔàœ@6²Jóͼ¹“‚R]qé–3‡È“˨! ¢‰Íˆx¹µ Á­ q·_†9DÞè‘Ê)îjZ‘I…X˜4I«F/ДjÔ£9œêzÃöi–©ð|Ô4ñŠS<Á1“éhºJ``ÌÖ&xÒmë5¿š]U¨×dÑÊèÄGÿFý1AÃmÖ£ +Ÿt÷à9@õƒO'{uì=̽+s4ʆ²£¡iÛ¿Ñbï°Bc×Oh.‚ÿem°ï.+æä~E€«´ÍãVB7|ÜlxWÀºÌ¿Ö»Ø'‹Ì‹ vÚc”7P#,{µ¡Èãÿ3JÊzœü¤nûÉøà‡¬¹}4£Ì»9IÙ:³$6ÄçN-¤S¦â–àõ`ƒ +Ld9²Ì¹èƒ9Ò¨à°bÕ]ÝNºœñÂäâ"æa9úF8 ŽvÝKÛ¾ž|hûÆÈç €ãAëÛ„o²³Ý™úlGuþ’eó¿bÙ,ݶl&Ȳ@'ËbUÀVÊ‘E- *`"&ƒ®X/]Šöæ;¼h_g¶²Xص,É®€œí +8Ù4Y\h"M ô@Å[\m4†°’^ØÊÀÈÊ–@ + ­fð‹°‰çy÷î݆˜¸ çö Ϊ¬Ê÷k,öÍaäÏä"Ë8YW¼÷£ë>…o©Aa±5€wQ“æÆ[ú»ÊGÀpLÀêȬsø˜}»«S)ö;ü¾Øð€õì†l¼sRðg[Âê fÙ/ÖÐI-q»œLøÖseKÈ¡<ztÑ”V£—õý††ZßOs§{4Àý4ºaÁ€Ûü|Çø ôAÁ€@S€”û–ö ¬Ü¤.Zu€Q[uRár±-ëË€£V^/|yÇu£jmÉÅIòÂÅYºò‡Aû#ûÃìæn˜zógN5&Ý_‘¾u°î÷ŒþD˜“¾2]Êd‹ú3ÌZÍP°Ë‰hG¯EÀ¼Vlã}³·­ôÊÜÔuÞ,ÉœV—¼ñ¶¢L'—.™'Â8©¸ÅQY-š¨Ý «rG_­X ôèž–|TLµø|æ¾.&ùg'\sÿº.P"‹l!Ÿ¨"xôº ûì9<éñáPÃf%ŠBPÆ ¤Š½îT›¯”8ñ5oþ©4«B”˧Ҳ‚†uþIu˜=¾ÓöÜOï&Z|¯jZ¤ôG¯ñ*. J¢ˆW.{3?Œeø0&ŠËÃ|<ñ×ô÷ý§ç“ꮯü?2ÂO +endstream +endobj +2671 0 obj << +/Type /Page +/Contents 2672 0 R +/Resources 2670 0 R +/MediaBox [0 0 612 792] +/Parent 2652 0 R +/Annots [ 2661 0 R 2669 0 R ] +>> endobj +2661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.025 626.495 448.452 637.399] +/A << /S /GoTo /D (inline_asm) >> +>> endobj +2669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.86 477.672 379.086 488.576] +/A << /S /GoTo /D (mem_sections_sec_dot_init) >> +>> endobj +2673 0 obj << +/D [2671 0 R /XYZ 132.768 705.06 null] +>> endobj +2674 0 obj << +/D [2671 0 R /XYZ 133.768 468.706 null] +>> endobj +173 0 obj << +/D [2671 0 R /XYZ 133.768 464.098 null] +>> endobj +2675 0 obj << +/D [2671 0 R /XYZ 271.81 160.509 null] +>> endobj +2670 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2679 0 obj << +/Length 1033 +/Filter /FlateDecode +>> +stream +xÚ¥V[s›8~÷¯`¦/0[d qõn:“&NêvÒ¤6Û—¬Çƒmì°Á‚p.¿~%cº›./GGßùÎ ÖÖÖ.{Ã^ÿÂrµ.áJ#”"Ïõ57p-\j·º‹¨aŒ±>|Š6il˜–ƒõ‡Â ¾ž¯‹hèíRc~î ÃÞá&°FØÑ›ÞíkKþò³† |íQªn4jsU".¦Ú¤÷­‡xŽà8ÖQÇCuþ3QNCá†ËX3-Q;ŒðŽß¢Ž§¯ò4Í ËÑ“l GQ–å,bñ¶±A½6$¯Ä«Š¸TÚ Êd§À¹ÁâþÓ‹zû£Š +õöÑ ˜ß²°¾Èêtgq±¼Ü[ˆ°­J ‡mNNHG?5!zà ±¤9þn‘æ‹{.©cá»S×à€`äÁÁ•¤&.Ï%‹Rd˜¶gë7IÇ7çna=Ma3ámUÖ&Vœ±ŽH³dß‹½„ˆì,àîprÑí[Ó®Äÿ«®¨ßeÍ^†²fßV飫ɗ†mù_|£å³ æÓø}²Mêuö¥OZrõ³<ã_¥ÕõIh­slà#¾eŠ­§W—O+Ôo¯~€hýKóÄô$gŸ dxWÁâ<^ÀÂAðÀ¢âÃŽÇO­Vbd£—ØDb³- êéfšÌÂüYAæOÏ|º> endobj +2680 0 obj << +/D [2678 0 R /XYZ 132.768 705.06 null] +>> endobj +177 0 obj << +/D [2678 0 R /XYZ 133.768 667.198 null] +>> endobj +2677 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2683 0 obj << +/Length 1451 +/Filter /FlateDecode +>> +stream +xÚ•WKsÛ8 ¾ûWhf/ÒÌJK‰zfOÙ¤í¶‡¶Ûú–f2²D[œÊ¢CQqÓ_¿A9vâílN„?<1oã1ïÝâ¯åâ·IîUQ•Ã²\{1çQ‘—^^eQ^ÅÞ²õnü<âA3Æü7?êí®A˜dÌßé .}µÑõ<͹ϓàvùañf¹¸_Äpóâ#“qT±Ìk¶‹›[æµ üైW¥··ª[§ ãÆÞûºøgÁŽýäÜ+¢ª`±õ³H"–d^žQÂ3òSM&9úy÷õí—»÷Ÿî.¯¯¿|c[^}\2 â߃0ù^éïè)Xã2ª’Š,ŒBžckaα£M¯VuO&ïîDc”¾kźžzð¤BöŸ$ý¨Œ ê&f·ÖXÈË(É +/¬¢4OÉâs#VóX1;xtÖÓH ­ Á ݳø†¼[܃xEIââKÎaHoâÛç»ÙÑnUUî…iåÌx9ÂN¸–h½¢e§m^Œ€w3ß±ßɃjÓO­p_¦D4b0Ñtû1ŽJ óÃq'ù±¤!)’ý¼M ¦–ƒ6£Uõdïý'gJé§èA +fÂV ™A©ô…þ΢tF€ÓŠ ÉüÙˆS+Ÿ±‘éjCÔ Q÷=íwW$.yëŽhꈕ8Qm‰+£œ­qÛU/ô9ßG5iÀ'úe¨]´ ÒqU¼ˆtòúHr3l!J`¡‚Â_ÓªEgþFŽFè‘Xö°ŽÛ•êeC_C½Naí…êU¨=yæÂiÆýK€³Ú²Ãð½ “ÔÔ»@:ì Bp]´¦åjîYâ)µ,g[7Z)¸CÝ^œóÐIJ£¢L\X™+£ß hå Ž:Œ¥âü—QÊ¢¢(m”8Ôåó(ñ×FéÓ„÷Ês% ô]Y8bJp`R‚1ÞOµv´¸ÆŠ{À +Ú]u7Lÿ¬œ]³lúƒÂÁ––›Î„]=´Î¶lŠt„Å5qës»úüïž>&õ÷l:$¹¿—¶Æ€iãë8­F#ÍdlJÊê‘ÒžÄÖpÝOn>9©Ú®,CÍ ¨¦>ó€˜ ݺ1“MU'ÁŽsÆÿnKá3.±!LÆCQg˜ïÿ§z3è×鋼H_›Kt!®²#ì'ÔÉH´ªäY¤vB×®;’®.wÑ©Ñ„®â•ÏZåO§Ž¸Ã€`é• Ž=Åéõj€=ú3¨î;áBE ÙEÜþᱧþ€ú†6.c¾& \› ¡vžCŽï†®GCR£æDpIr5kmwÒ‚eµ(çO°íàóó¸xÛ/ŽBrz€‰”Nâ–°(MRе:”Ç Þ µ-L;TPŸ¢UéVèÓLƒfÚL}=ç Ö©‡Ã¾£Ø ãfv.q^„qå‰ó÷=ÉÓt>5{$²6ÂQEúþþ÷OâPQ€çÐÅ1)ƒzd n6½p¼ÎŸ¯s’ö¶µ" u6Ÿa¤}SPa÷O¥ZH‡ Ú×WxmÑ +OÈÎé¡@Mi’1âì¥éh¦¼ÛÖ#I2€Ú&~Ó35’&†Ç2VÀ²Wa…‡uÎV„g½–šF‚Ò_kq?‰¡qÇ#‹:,M3éÚ‰ ³â¸•2{7+î5¼gn“ž†yâ Þg¡¥šF7óÈ-ж_·sù_àèc»p/Î9 ^ˆU"‡ÇÃzÇãjâº4f¨§Ðwzn øWXÙ{’a¾j=ílê؉ëåþÃñkZ“ÍTS'Mòì_IUFÍ?ÉüÏ”Ã(ÀË㦲Šø<Ÿ¿¢7?ÊUì²›ˆ¸ )-1»HøE\Òd¸£ÖÇ<ªÔ¶õé {¹ræ6q­~»ò¿êŒžê +endstream +endobj +2682 0 obj << +/Type /Page +/Contents 2683 0 R +/Resources 2681 0 R +/MediaBox [0 0 612 792] +/Parent 2652 0 R +>> endobj +2684 0 obj << +/D [2682 0 R /XYZ 132.768 705.06 null] +>> endobj +2681 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2690 0 obj << +/Length 2281 +/Filter /FlateDecode +>> +stream +xÚ•X[oÛ:~÷¯ð£ Ô,EJ”t°X Ûz€m±‰}è)YblJ¢«KÓôן%KŽÒ´ðƒ)rȹò›òõaÍ×ïVÿÙ­^¾j°DÁßîníKÉ"¯U2•øë]¾þä)&7[Ÿsî½ùžV§Ro¶"äÞ©Ùø±gMZÁ„ ”ô¤Ü|Þý¹z³[}]ùÀ‚¯ýÉ‘>Kx¸ÎªÕ§Ï|ÃâŸkÎd¯ï-iµ–ú¸±\߬þ·â39ù’œaÄ„ IÎÌôuÇ6ÛPúÞÿºÞl¥@L½-Mšõ&º£F)_¾•rz¢ðY+àgÏÚ½zõaljnÆY&Œ'U£7~芶ÓÍ&àÞ àï^œ}g÷yL7‚{ßp‹‘^gh%ͬìôÜ* ºÞúŠ³0R0†NÛº¯öÀu+ß3wôŸ•&ûâ†Èæ!+uKßþÚÎéËòÀAQƒèMêè3;Ôf#Bï¾ÔùA»ÉúrJ涷]Óg]ajÇTB™ù\ØF£ Ì."Šèy«Ç,HÂì/òØ©`Ô‡S•³#¦:ªàRÇ8yâ™CHeüÝW'·Ö˜Š¤ãBÌU¦ Q2cŸäÿ¬3CĈXYî°6ãßÄãab8sfwK‘:OÛ:ˆYÌýç²XMíÃ¥’Iä펅ã6üß#WkL)µdÀŠ äìÒº[* P£Pwý " Å‚³ä–;œŠæ CYÐÀâѶQÄ¢0%SAD|0ìSøùr÷”/gI:ã< ½o¾ƒ;ë´“﻾¼€ŸµÆ†#{µáW= ¼\geÚ,¯‚ +‡ÒìÓ’-yM@9è^¥E½d ˆšȲ9ºóÓÓ©,²%¥ ]w̓ó\°P&sÏLx„&r‘£û¢,i´wæÃË`1éŒó +^ ·Ó‘5üº´,~8p²1}WÔ#Å+ä¨UÖt­/8gfÁa¢h$ýyHH Î1& Ë…BBýnHìÈÌ>9FÜ+9ÑùMÕv4“Ò_ ©ÔÃbåÈ÷)â™tö´t­.ïà +*_x7_û´q›î7>÷æ9ȺÖÍèéa;íYÀ93˜Ô;]>`úÂ,H•e<ê1:2à–NÇÈÖ–ÝÑ 3Í+1½ü”E$G{M¡‡\æ«Ò¡hEh´ýº…]˜p-4Öß6ýÿ,¿ù‘Ïâ |2ÃÅ¿[4^Ù\º,|*¡t´)²FQÓ’ë9CHß™«›a5ÝCáü³dâ%Ì +Jwç…vOŸ,.“ õ…JÎ|Ó¬sYSyï?ÒÜÉ4[Ís¸6‹%åèjº"*„;Õ : +å…Ø & ª4kÌRDÚ¿±&¼½y{}ûþãíÕë×× ŽŠ¤îìш»ÏÕÆ÷}o—ðl'HžÜئV]•ÎÑ’Z%?`¾Œçº^_ýíhÜ[ŸÐS•®Ló°­0ÜsZ³;µÕî1nraÛçhš$“‹ ŸÙ¥ÂÑ’°0xTž0ª¸ß/&ðia:iç :°µûpA Ó¸fíIàƒS#q®Ã—]0mM_.=01®»Ø¾lo9 D°Pî»Rö¢,V“ Š‡puC¼ÂL g€ª™[\HôOçÆ)¡Ê§Ÿ|OñEàô+/†±˜·æp*¶QÛ¬):h˱“dh³®M Q'†Æª¦ª¤ÊV\ VRöuÑ=Lø0-…ŲïDÌäùÅóæúÍ»%ËK–Ì.S{÷¶ã+LßRk`qƒ»ºM„ÉðÚØýð‚ýIüÈ…¶` lC`–¤tN‡Í‚5v!¬YNûP0‘¨Å^‰"ÄV"Ó ;ÕÔåŠ=4É?y‡ˆ”Á¯Ê_~€X|ObÀ©ßyžëK"¡É3xœ09> endobj +2685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.267 342.483 307.421 353.387] +/A << /S /GoTo /D (group__avr__interrupts_avr_signames) >> +>> endobj +2686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.521 307.988 190.334 317.522] +/A << /S /GoTo /D (io_8h) >> +>> endobj +2687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.573 198.099 370.327 209.003] +/A << /S /GoTo /D (group__avr__sfr__notes) >> +>> endobj +2691 0 obj << +/D [2689 0 R /XYZ 132.768 705.06 null] +>> endobj +2692 0 obj << +/D [2689 0 R /XYZ 133.768 121.695 null] +>> endobj +2688 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R /F41 2599 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2702 0 obj << +/Length 2059 +/Filter /FlateDecode +>> +stream +xÚ¥XK“Û6¾ëW°|YªÊâŸÞ“3›L%©uemùä¸\ IXS¤– =3ùõÛ(JfRqrB³Ñýü@<¬¾Û®î~ˆ³ ŒÊ †í>àBDyVY™FYɃm|³(Yo8c,üŨ±î6ÝÙ¬7qÊBÙÖDtgÕË¡ë‘Ïx™„"YÜþ´ú~»úߊÃa,à³ÍyT²4¨N«YPÃäO‹DYVôˆD9.l‚w«ÿ¬˜Ó˜ýæq”çqe°“HHó7Ý HÁåG«ßV³Ùj•el’êö@szÍÃÖ ýX ºk 1×ÒaljZFáüSW£üþyÁ‚qGñÅ:¿gÁ,Ê’Ä ) ªõë„Êöæ‚Q)Òë›ï0Ær üu +w§oÒ ˆª;œe¬˜Ë™Jøry”Å.=^7¦CcÅœâ–'>)¸wÊqdí(3ZpáÝ ¼Þzï  $š!ÖhTMbº5Ú/&€Ð³œ—“4Ww4Ò­`¶êZŒb] W)ã,óöC9tqg‘þø<8àù¨e µÀ‹:A4ÜÓ(ixûúß›¿².óEWN¸ÑŸ1<ÔÍn¯×œóp[²w¬‚ ßZ +–ŒF‘‡üÞØF9o·v)$õéÜQÁ>6FKßs€¸§ªÑY7°7T*È¿D¾Ø&fîÑ+UR‹.Ô€X¹à™Âr^ææE%Ŭ˜å,œRµ¹#zóhª_ïÒ´S—pó³ åVŸ£[$2Ç1Eb`IùŒáì[qÌkPžC £|=7œS‹Úù²§¹-{Î2·Î´m’ÛÜA9r~QÉ¡:nÀ/ü!“yñ²²FçÚêv 58=mëEbl¥1ú€Ú.„ïl[Á}ù©‚ +žØ¢igl2ØÞÆo›d¶ÔÛ²(|{A^+Oj©=3„”¥ï¼Ÿ>}±}ªÕ^ŽÍ°Ðª='s´“²žvºÙLµM;I€½×=µq‘Y1îÓ„ 6²»^õ‹îF3A‘š;R‘`‘Ö-r ·å `láµìÕ —PGÅñ$¤/xo51ÜwÏt,ë Å)%éøÿŽ§3‰@ +ÑÅÜø§5öIÃë¿Ï=(%žåõ d=›S´slÓàQñ¢ø š¯M»ÅI$|vnmø0ºjÕCêFîÇ>ÏÎÌùøôÎuÚÙ¤°Ÿ½ã×ÊT½ÞÙˆ…OZ_Ö=¼y¿¸ºä°-Ìx›ú$[¨RX\SNúÇeî¸DÛôAÂÚ», MŒÖ6ÀàA¨ h Èa<Ë~p³{¿m5ö½jÝìN·Ð·ªWø.qr°?UñV!¬EŸOý¼º Þ› ‡áüêîÎtcϤ¨W5T–:É?ð.úúyní;6 ë„n4l¦¹ï»R¹Àxßê'bt½>èö%7z7Áün•µ$ð»õTºzzràìÅ›(cžÛAºÝµÛÏ4úpšÅ·`­÷‚{匞 дÞL<ä‚b’ &úʶf”rp*I/Z|¸²2|3žT¯+š¬ Õµµ÷…Ï+L1?ö~)ÒÍÒ£÷Ü+lÛO U+ƒ<.§ZÌžò“'Q’LïÑ}çðÜÑ=kUé“sûôqŠcª¸î:e0Þ½ël_WWxñ~3óØÙ­›'nòêzSï ~æÏ-¢Ï7^¥ÍX«W× —CÅ‚É(-rÚï×8No1V +%-Ú={´!…U¹½±ã5nê"tqÝÕfìOž&M¥õâqÒöv­ú¤[˜ª= ê)êR÷ø ¼ÞÃK\õC‘ß~G#<™ÅHŽžÉ}Œ´ Q”@cŽ§8ûÖ+L¡|?÷õø¢ü¦ˆ£ŒýY×ÖrpV5ð,¨Žê˜N8s.©ªëäÒ­´lôoþ*ðf%‚zW¯±w™¯t]ü—WQ.¾åOžÿs—Ee.Šù?Ç¢ŒDæJƒj±ÿz ½úÛãHÄ¿TEDBg¯bñŠô€ÍQ¶ú -°ï×"!yw•Ï·e÷ô|Píí•ÿBr‹‹ +endstream +endobj +2701 0 obj << +/Type /Page +/Contents 2702 0 R +/Resources 2700 0 R +/MediaBox [0 0 612 792] +/Parent 2693 0 R +/Annots [ 2697 0 R 2698 0 R 2699 0 R ] +>> endobj +2697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.211 491.242 288.406 502.146] +/A << /S /GoTo /D (FAQ_faq_reg_usage) >> +>> endobj +2698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.127 406.633 236.854 417.537] +/A << /S /GoTo /D (group__avr__interrupts) >> +>> endobj +2699 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [132.772 288.944 349.958 298.841] +/Subtype/Link/A<> +>> endobj +2703 0 obj << +/D [2701 0 R /XYZ 132.768 705.06 null] +>> endobj +2704 0 obj << +/D [2701 0 R /XYZ 281.991 373.921 null] +>> endobj +181 0 obj << +/D [2701 0 R /XYZ 133.768 357.194 null] +>> endobj +2700 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2709 0 obj << +/Length 1616 +/Filter /FlateDecode +>> +stream +xÚ½XK“Û6 ¾ûWèhÏD E½ÓÓv›d’iúH=½$9È×f#‰Ž$ïÆÿ¾i-¯·Ù¦3=ì$A<ˆ dém=é½^ü¸^<¥/yÃúÆ ÂP¤Iæ%y,’<ðÖ•÷a™®|Ë囶6­&úªïu³©uGÓkk?oàf2Kä2ŒWŸÖo/׋/‹TI/8ˆ\Æ^Ù,>|’^›o=)Â<óîkã…°x°öþXü¾l¯œÙ-O펥P2õ’8*ŒÉîJ‘ã9ïƒK¹ƒ^ñòë@Æ÷wf(wº§Ù`yܱ«çܺŒmiòQƲ´smEÄûU$—¿¾£IiÛ~(Ú¡æ`nŽô|• +)£oØÛkV^é².ºÑÔ‚-:6[óÒ|kÔM3òcçû™¦Òí`Ê¢žß€Ð_ßo󶶔&Ê)±ÒmÔN®Û»w w ZÜ6µ)‰ÝÃíaW ´jzoMo‡¼miÑÅ ìçUž³r4D‹•ŸDñr+Ðn/€Ò”1ãææОÄî¦;¹·¦ž=ú‡ôíJÅË¢3XòðÆ|Vñ¤kc¬éµ'ñiÄ“È…§ˆí¢ãF˽€¢®£RªVW?À<Åû1=팣¾AnÛHÜ¢MÇ'­¥m¸ŒÇnͶÀlx?¡"$ªd¹]ÅL§Ë¡ÓÅÀ4XGÄ¡Ì£òŽÙÌ@£nK{hÁ-;Š¤08K/É*Zôäè;£åÜà;DFqt[¾Š (¥ó ýbÄ‘LFÜ%ÇA^¹™C¡WjD© Â#n·4Žw€ô8Þ麆« +áàOeF>nœ‘¦Cqî XCó´×‡Êúvª0F·YÙÜó„»¯Ý +ñÕêÖt¶uáõU³Ã¸}èø`­Óµ-‹ÜÃ-»ù C›xë`Ö³“èÀªa!fj,ª°qš˜´Q° JCxhúK1›ª²‹ò˜{Û›û„µ7\mÃÌ“¡@›öB¶üŽ½¿z'&µ©H#᪶-„<Š nfØ!“-¸TtåÎ  áÐiß÷º­ÜUâ.àªè*:d÷º+ÛáME¹ÒMb4ñá¸tµ +Âxùçû‹øí÷º4x%·I4NåEL×ÝΔ;æèxíÐÞØn8´Åàr÷Z;ÐÞQ3Qé¾ìÌ*€JSÑŠC›«ÊšYWEœIbsÁæÊ–DYá‚BÖcLÛs@;à ƒsï—{Ú:ýb^:ƒDDaþûüUž4 TÀ$1×6CÞ³žBI©päY¯2ÐM íÏZ„Z£å½Ù¶”éÙÍhؘ¡Ÿ”é ñ7fB'uŒù#¢2‘ACFNÆßáäÎü7'ï£óÿøø=Ü7\ b¡Tþˆ‹¡Ê]©UÙrßÙmW4~£‹/>naÃÀ•‚[`,ª +{(¬ÞQN].C³å*©{;»…£×nl]w‚Çij «¯(½}6tž0¨ E¦(®ŽFÐý4ûÚhž4Tôrîí`es¤Q1óSD« ÍvàHM2ƒ“êˆÉßIÓÇ^VÛUȘæÜumÑ‹<£œâ½Q¬fÑLS¬Þ¼}÷Û%Ì&ðm¢F&Û]ÖÈlbys}õóÏ…J$éÈd Uî®ñÃPãK–¥ÜÓƒ¹e1Ú]÷–(º1䓳Ǒ‚"K³’=µ6˜"íY†uf»üÝôÑCc.oO^~-gÅp–%©ÈS §Ò‰ˆ>ZXüúÍNEψ‚ˆqÚ7ø_ ì‚ñ"ƆeälEÄ,*ÌÓDðm”®Ä“È M)¼±ƒtöÁAI…¯aj?¿Åá”›4Á"„»SC(±¹š@0Z}Á` ²©Ò¬‚SÔa…$Ó `#ÃLö›vÀ‡s,‚ >ÃË?ÜK ßÈù”*‚9/ˆD%Ê eÈ;gûø5Hù´ÏùÇ¢‘‡ÜIN ÊëëëKÓ•<è·6ö0ŒÙa8_~âÞa†÷‹?1ä™HÃóÃøCH f§?„d¹G¼¾Ö-v"ºšçïzw`uIDÄž|¡Â¿JJ¦\—4¶œ…«ÚÝ*L—~m6,as}þzÜêöÜå¿~·ŽÈ +endstream +endobj +2708 0 obj << +/Type /Page +/Contents 2709 0 R +/Resources 2707 0 R +/MediaBox [0 0 612 792] +/Parent 2693 0 R +>> endobj +2710 0 obj << +/D [2708 0 R /XYZ 132.768 705.06 null] +>> endobj +185 0 obj << +/D [2708 0 R /XYZ 133.768 204.505 null] +>> endobj +2676 0 obj << +/D [2708 0 R /XYZ 133.768 171.954 null] +>> endobj +2707 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2716 0 obj << +/Length 2309 +/Filter /FlateDecode +>> +stream +xÚ•]“Û6î}…'37•gÖZQ²$+7÷n’MÒ»¶·Ù»—´“¡%ÚÖ­>\ŠÚûë  ,9jæúbƒø&ƒÅ~,¸ºy&‹ÌÏø{Ø-Dùi²Y$Yì'™X<‹O^ê‹åJAàÝÝÞ.Wax²« øh¤Qµj ,Ãuºö¢dùëÇ«7W¿] øJ°#©ÂÏ‚x‘×WŸ~ ?,?Ê6‹gËZ/¢5° +ÜX->^ýû*˜¨Ì©§~ŤêÃA-WQyw?þл¥uÞÖDzRšV»–W¦V1¾ZŠ(öþ{O„û÷yçQ·¹êº¥ðZ°‚§èˆÒî–aìí”î®—«u˜y¦%QªÞª‚xd×Áª:¡Qà +ˆYÙJ6û^îAã0ˆA¡²AAÝÒ¨°×²î|Xf1²ìÜž¶"h§¤é5 ¨å‰€-#úõ±|xrâizYUÌØMY—¿—Í~NQ ¡ 8a®KSæ²¢ÕQjÓ¶°ÿæÀœ]»3ÏK¡¢c¿ÖJ¸¥˜õ¨òò— sK·ü°,›Îè>7eÛ\£„È{>”ùˆƒô¦5sªËexOè'YVr[) +Û²¡RŽkç•úIȲ¾W¹$¥ã ÿ’þ*™?N E›÷˜Ò)Gž²Ge³yÖc…¸zZŠØƒø cáÑ™ˆëuà]ªœ5ÅD +G–èE«®­b'§ì øG—ì)¨RˆþÞ0ùÀ|e}¬ÔpDÂÊ€¡;Zlù“é‹ÆÖtÿ ûœß ØX¸Rl¨®íu®ˆ„)‰5æ½f¬€ªkbk+ŒƒgÂuµ'Øå—ãž ™CF8Ó ¯QÆŸSý]{T»ž}ŒÇµÙ +‹Z=—UEÐAUGæm]xæZÉN AZj›J‹^Ʊ7Ð5}ú½ùiø½(CÓÁ÷ + ‹5ê- áOmÏ ÖTìl¢ÖeUJM˜çÒ”·¾ƒÅ(<éƒo¢l0#p;¤K”‘ÆÆJHcgL_ê,œ™ãD¦Q¸/Õ¤š¨7­†Ä²áŒí0‘=›ëS ´RpüoØùÇÖà¶dí¬šÄÎÏ€ùðE«Oz$X¶1¯9¹‰†¹f# Èhq£"`’TÊ(N°¶aLc‹Úæz."µÚ9ËA„a{¦¾¬÷Ü ïﮟØDüWU¹ÍSŠoù¡c™ÔªY×6J€ÙzzÛ1îNºÜØC¿qp ?‚–aèOAHË-§”BËí›Ò°ï>N{ `îêí»9Çý¬t]vTO£ ´áƒS4Æöl@Ú6`}!ýkm€è¢„~TnÑD=j€Döå*a=l.UGT¬Úˆ£A u_‚m8”(0×})Ä‚”Kù…åÁUæL&wÙ 4)¤Þqtð¯Ø5G­:¥é,,ø7PLa£ñ0B]Í)Îf)™Y$#3ÒšY¤c3 Öy¿23붰ƒ‚1êükjáNn÷8Subjæ“fÞèh“Íƃ<.5Ã`ž¾âb¸I¡×éÛÄÙ`Àcã°Õ´²æ‡ÿéa +ÚßãQF³§‰møª«òVÛòá_Ò¦‰#ÍŽœ+­êž»’æz˹µš­n<_B‹w,X©æ¿­bâÅp"¼È )eÔ*‡No êeǦÑ$4®bo¦¡;3N˜×ÓÔ7㫃,šï–¬æ-žk1-ž°‹ƒÂ¦m æ<¹Þˆß[C’÷æ`ë eÝ©jG J)¨ˆ#ƶﵛ$:Þ$‹‘s¥: +€‡ü¸ýÖšp5C7†#í`uàî lÏ) HRr<4v qc?‹¼7;*;Æ~³‘rZ G: P˜‘XŒÑʈ!÷!dNÇÓ0aÝ,õã‚•Ö­îÆÆf÷Üf[æ¿ÀµJp2v‚ˆêF{¥ãm3Ip6Yì=6­m@Ù»Š-¬8èÙÛ+4ÞÖævO§w¢â±pHæÚ ·v´´¹O~³³AC„Ʀšõì«Ouš-˜ÔÃNKhïט%™gm÷³® T³`Aý)>ß?iÉÍ%ö**ÞèÎ\©b¯¦Û~ì·U™Û/nÈ cêÆÙéƽ2¨¦í÷‡ù‰£;BM¶͆JO’â…AF&òÜ´lî“£ß*¼š#a§Õ…¤¼×äÆI`êàl€ŸJI¬jUÃïdâ‡ËeÈ ×rÌQ*‘ZUç9¿zýú×?ÿtÿ𷜷!ô÷?1oêÇÎKo$MI±†þ:H\=B¿}-) ü5 ÌÓžvñM½bØW¡Ç·²¼­ìNnÜÄÃôÃóÆùj·k{w‰ÄoêÙ×ã ÊHôWÞŽÝóvîŒ6ã7ã TÖ„ãñN5JKãNÓòûÃáç@Q| ^sÕ ^†ÑK± +-C¶»;¯´6ÒË(_£¥^·_N{ÇGþƒ–A‚ +endstream +endobj +2715 0 obj << +/Type /Page +/Contents 2716 0 R +/Resources 2714 0 R +/MediaBox [0 0 612 792] +/Parent 2693 0 R +/Annots [ 2711 0 R 2712 0 R 2713 0 R ] +>> endobj +2711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.303 505.568 296.207 516.472] +/A << /S /GoTo /D (assembler) >> +>> endobj +2712 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [212.163 321.811 357.618 332.092] +/Subtype/Link/A<> +>> endobj +2713 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [150.486 236.574 427.447 246.472] +/Subtype/Link/A<> +>> endobj +2717 0 obj << +/D [2715 0 R /XYZ 132.768 705.06 null] +>> endobj +2718 0 obj << +/D [2715 0 R /XYZ 133.768 227.608 null] +>> endobj +189 0 obj << +/D [2715 0 R /XYZ 133.768 223 null] +>> endobj +2714 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2721 0 obj << +/Length 2110 +/Filter /FlateDecode +>> +stream +xÚ­XYÛÈ~Ÿ_A8B#º›Ís‚ßUéÑ®ààå`d$?œWTXxè³Ý¯ 9ùÈÕΫ–„fˆÏð(OÓf;@€–e¤|и"Ù¨ÀÈØU@v™z&63cï)Û“)lÌáK½$IÎábéG‰dœQ2vzÔãJ È ÷‘ÜB»2Ü»”.Ðiàn²ËD¨R_ŨƒÍqGùEdÜ×=Ïew +ªI „‹û¡@jmÊ ”•ÔŠU“IUØHŠ2/. +Í‘¤©j¬eMÙKmjKÏQU(ek^là²e.KÉhïÆ–·d6CÅÚ^–Ås†ÆÆe ˜è¥­*IÑïÃ!²|'³C)¥Mn…ÏQ )Ò-c€1ÓþiBÒ+“}¹/ÿk8Pe=?”-EÂ0rÓÌB)4\,ýðh…T­£›©'¥5é&Úú øEÚ2[W[tËzâ´0ËßCF@Ñ»rw‰à£½ ¹œÁ…ïõl)Mšý*ö$jßPkÈ~FÈ#€cšOÞöË…w¬+(Їq&º§²ßðþkÛ_ï¤H&ÿzOÀŸÚ„âÕ9rñ_BnW"³{0x"n´ºñÍN¸ç+%½]ÓïÑ.Lì.«r½™þܽo>Ÿ `^^ù7ÊH0= +endstream +endobj +2720 0 obj << +/Type /Page +/Contents 2721 0 R +/Resources 2719 0 R +/MediaBox [0 0 612 792] +/Parent 2693 0 R +>> endobj +2722 0 obj << +/D [2720 0 R /XYZ 132.768 705.06 null] +>> endobj +2723 0 obj << +/D [2720 0 R /XYZ 133.768 667.198 null] +>> endobj +2724 0 obj << +/D [2720 0 R /XYZ 133.768 627.479 null] +>> endobj +2725 0 obj << +/D [2720 0 R /XYZ 133.768 583.069 null] +>> endobj +2726 0 obj << +/D [2720 0 R /XYZ 133.768 526.531 null] +>> endobj +2719 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2729 0 obj << +/Length 2032 +/Filter /FlateDecode +>> +stream +xÚ­YíoÛ¼ÿž¿Bð 2Pk¤¨× û-m×Þg‰1`h C–h[¨$ú‘ä¦Ù_¿#ï$K¶œÕi>$RÙ=…*'M9› ñ7U$m^ÈÏÌg×y…‹¿°·Dðk$np¸þKM zÿ·¤Øëƒ|¼çã`ËòáýýòãoËÛ»»{=ÿý·ûÅ>ÒýüY[ŒÌFfÖÜŽÇbÔõ¶he]–3×·¿Í¸oËâiø6(é v²Nª¬Ñ3×N“JÂ^I\Ø ÎU¸T%¥lœÙ\x¡½ØÊÃ"R9±ÚÕr'«LfÈ0§Ó«:I¿Î8³eK#ð‚ëè p@Ô'c§ªjÚ:É+³? ‘S˜ýf®€«EÞ´új‘g÷kµ\ËZV©$FâƒÖžö˜…ö¾¡ ´3ª'&ÔECƒžM+“LO\[­q1Á¡Ú—+íçúS²n‘ä(F¿à§&Ÿq{S±}¸Ïb»oàjPë7&+¥±A€pIjú{Rî +‰\Rµ/2Ú^4 +©ÕØØjÿXçmk€†LtÇAr!Úߘó¸q4|ªe ¾þ¥ ŠO;U·_úÈÐJðØánlÍcÇ ]Ð2ð¯§bR³Ò\È µD¢–ìó™Äïf.³Íuà +bE› ¹¦O²Üµ&}‚¾ïÚ׸þ¤ö5IÜMË#åñyÔ™CUof,K&Řs•ŽÛ§©¨Ì«ª¹®¦qßÖ0e™›@RC!ø)Uâ€÷ h fH®UQ(âqŽ1ºFh ê×yµÑ× dO™{£T†d”Šô‚qGZphòç¦MZYʪũqM³¼IVýñ +Re½ßµÍÍËRÓDÙN‹üúæfô…·q‰´^WúŸïV¦«±çTøÏŒkpö`JÁ°Új@P`!ø0 àæ²’¥ªò´ÁiB#øä›™6á‘ǼÝÒNò939>·3.|ûß÷:£ ýÛ7Q Xdßš‚é™0ЄO¬èŠ"»“8–½Ø1?s|Ðà ®p¯É(šH©7ôȧÔNÈ×P' Š+7¹`•õß CHa"i¶8)Á¦õÓ‘ÛöžØ¹çV™3òÅ£žwCæt¹ã….jöOÕÊ›ãCC¯á´«p›Èa¾;,4&t S}Ó!›äÅA¡dìŽä¶tØôÑ ð`w¯u­J¤Ð²§|º{&º‡ÁÜ”‚ŽVCjå³Èdc¾dh윢LJ+5´FZû·G 5[ìV4m2œÉ#IºÌªç©Sa+;¼+ùzy¢R»Ï\x•þÕ^®ÃƒpÔ·Lm·&Ïìøaã|5jR:N›h±µEÖ[r—"@wÞÉŠÚÿmý-äXjÍMÐíûNjÕ‘ÅÀ[ (-øt•ƒ„è&`t:ŒùdµÎ1Óù!¹‹¦:wÑurÕÇ–6˜J D¡ÔW¤V9mQY†ÄÚÔNŸÚ~½¢[–º¡}m^jgÐhš½¾MÚ7ÚӦÎvòÏ>^¨‹2™Â-Ú.óž«qdSƒ«ÉÄö¨ã:ëWŒ8ŠjlòOƒ_3ZØšÂE•]ñÝÉ4OŠ.4uÆØ–àÎù‡7"ÇÅ%ï1“X3 ¨®ÑsLÕcâ1ñw9Üó@!æ°Î8OåJ§Ú 惽W,à{9d$ø^¢éNE{Ðò»/¹ò„í‡+⟴}à9,ò/5ÁèÓÛ>Ç ©,—÷ï>,—ÏXÿe¢G¹®·þPôˆ}sêÈT7’,«eCÛØwñþ]ÿšü1ôîΣw±æèF?‰žBr÷^=Áœ O’m¹[Öró,~/>ß@øýIj¬ÙÛ¾M þÛtLæ ˪ûgCÓÂd#ÏCw±Òй=Ïã ãT†×Ac®vÐýWÖêÿb÷"éÓÐ ¥O`Çßv­Ÿî÷¨3¥(Óªž‡êR'^È_òÿ—Sf1¼|/ê(»¦,€×ôTƒÙD?ºÓ‡Á[dðl\l©w¾“)œÝ¸â†G8s#j­“[‰y]×3Úó"_¥]Î#–êû> endobj +2730 0 obj << +/D [2728 0 R /XYZ 132.768 705.06 null] +>> endobj +2731 0 obj << +/D [2728 0 R /XYZ 133.768 459.302 null] +>> endobj +193 0 obj << +/D [2728 0 R /XYZ 133.768 451.268 null] +>> endobj +2727 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2734 0 obj << +/Length 973 +/Filter /FlateDecode +>> +stream +xÚµVKÛ6¾ûWèV¨>DJô­Ý&‹äР©ÑK\‹¶ÕÚ’+ÑÉn~}‡Jkí*H[´§’3¿yp$šìšÜ.~\/^¼â*ÑD+ë]„ …*¥%Qš%ë*yŸD,3F)M_7ç‹[f\ÒÔ4*o/nÜ|{¶ô`®™©ÐËë7‹—ëÅŸ WÒ„]]Áˆ¦2Ùžï?Ò¤‚Ã7 %B—Éç`zJD¦Ì;“_¿,è„7ã- Â…DÞïì’Ét_÷ÎvžÇ‹WB\ùElP4î(šLa% &'ó°Ì×éE¹ë¬=ƽKo«xwÚK‡šé{{º;ڸܶUI¼L;x7­›^ÒÙÞµÝplœ§™d’©T’1H¢Œñºƒwm€¥Ý¡ŒT˜ +w“e&©L_»ï–R¦=šû¶¾ue ú¸w Ä™4²R>$i³q§ó¦³ûÍf&¡ª$¥êß,ˆäòï‹íÚ¯f¼€ ”ÓDÔ ”Üø8ræsðüh,Á¾Y{1²hç®T:AزŠ&ß#x¿_z‡ÜêåÖô5ƒ¢±K.ÓÏ~A¡f§sÝGŸ|SÛ®¯ÛÁù`š½íq=NÝuó‡£Koö»§ä>Ÿ&­²(åMí¸'1#à>šaeñ¯ÇÂó&ωÈ5b¾4Û°- HMp÷*¾PÚˆtÄŒÆ=ÊÊöÛ®¾³q;¼D€b ¹ÎÔM„€EÝìQßµÇcrþç›9s¦nÈñýž(–Ã[Gy6ÀÊÑÛ!›Óæ¡0©òbh~{—ÝÞÜÌd(‡ôˆ±Ë„Oº‡ÿ£Aº=.CݽòHˆÍo]ÇÖ ¶…¾èWa<cõÉ· c’YP!ø ú¹uö™Û¤åK˜Ùà\êÛÆû¬=9¦óôÔúÎgfÉ9smVOB)½RYg Ù+4«›]ÛŒ Ùõǃ„˜0¤×`†n¸Ë,9M?uÑÜ4x|gû Ÿ±¤ãìx’Ðýv‹ÊÉ4s$sN>À™k’ç㹟©-h\dúbuhë™Ñ•^¨Ñ‰«Ž«¹¾a¤|¼FO.Dˆê9$çD?¶ØÃÿDTÑòïŧ ÐóŒÁÿàóå?bœqø–©BLy'تtÒó³4:_ü“ÿ™áÿK]ˆòú?¦ÔD¨Ø\·¶Qçl¬ÃœY.¨üdcƒæ(]q±b%®8¥QÛù©àŸI˜Ó~¯Civ¬ï"‚Ÿy²½ØÛæiÈÞã +endstream +endobj +2733 0 obj << +/Type /Page +/Contents 2734 0 R +/Resources 2732 0 R +/MediaBox [0 0 612 792] +/Parent 2737 0 R +>> endobj +2735 0 obj << +/D [2733 0 R /XYZ 132.768 705.06 null] +>> endobj +2736 0 obj << +/D [2733 0 R /XYZ 178.331 621.37 null] +>> endobj +197 0 obj << +/D [2733 0 R /XYZ 133.768 606.7 null] +>> endobj +2732 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2740 0 obj << +/Length 2835 +/Filter /FlateDecode +>> +stream +xÚµ[m“Û¶þ~¿Bã/¡f|0Þ z¦±Ú±ëÔŽ}é´Mó'ñ,Nt¢BJ9_~}/Ä'ŠMôÃ@¸û`÷vxöe†go.^^]<{Må,C™„Ÿ«›a ¥RÍd&ÌÈìj9û%I›_Œqòv³Ýïæ—Tà$ß,máÃ~ç+?l‹þÑ@óŒH–p<ÿõêÝÅß®.~¿  ÏH ‚  ‹Ùâöâ—_ñl ÿ|7ÈejvgšÞ·¦D¿¸ž}¾øé;Ü=¤DY–Ö’i!‚#Åùh¨…p2z È1" C +…8s|Umš]—›Ý¡9(‡†`†Ê)ÈŠv•ÿÜÎS7s*’ª>ÄÀ$Ý, +&3„IÖÅð)ß|)õò4Eô[ìÞC!¹˜HNÖí?î#—§©í>à÷:½ßCŸËÛíº°žßoa`Úb]̉H¾”Í®¨›*D€å©ª‰´@v•DÙqfŒFÑà A‡eœÁ ¢ ¡Ð–œ&†ÆE¹µÆõ1¦«ô¼U¾ÌÇŠm3ÒQ^€ôKcZißÛæå a¦Ãõ| áÞÏ¥HžZŒ'ÊXí=!2†xÊ£Ad)ÂÒ…Óâ8bèlÉÐÑùñØdáæ’áÙ!¬–X_ÝÔpÞ41Æ!5´ šNÌ4„"ˆÐ8™†P¥Ø…×ߨA§§F¨óó._üv"¤ P#,O¬?<ÿüñýq2ŒVÜC…QFéD2HÂÒ8dH)bÂÅÎz€ tz2„:_l´ÓïG1 Ï€NÿñùQc<ˆ6€ ø›È!!ð±8lØZb`áCŸgB«ïjžâ¤¸ÝVu^ãB4ž -šwûh}=n”ð‰ng‘áísW‚§°viû݀秫ôŽU~Þ‹2_.=;+ qÖ +#\ÏŒnMùÓv)*}Iµ%6@ž±ˆz¸ÃFï‚õp‡d(‘² À˘rÙÕy"èôì už‘hÚÒ¿¨œçJ× Fõ±À5MŸa 8TFãèaÈbjŠSx#RŠA çQ~y~œ!tz†„:ÏfÈ¿œgH× C2`ˆfÈh= $›˜vðL Ìã,Vy¦dÖ'H •-AB•góã?Çù[Ë®9èÁÈsˆ.ƒôã<;¹½~=E2‹ÃéR»üf€ÓUzv„*_¯«|Wn¾+V[\ècš¼ïƳb:$OŠFÇ“ŒÑ:{ Nn£ŸÁ¡S$F‚ÊShF݈x;À€é*=B•òòºÜµîoÊ]©ÆþÐó„Û×ó‡™6úÕ3ˆ2¹'JˆüÑ‚V?: ‡6âä¦ú´aá4ÊÉ ç’ÄÅÙw´™®ÒÓ&TÐfcé1Iþÿ`Ïôxö„¸¾tø30댅ÐCøUéÄN ´ˆx¨@ ;/ü}€?tz…:ßÄ87âDÀâ¹b¡Ç]?ZeïA† ÏO8Γ"Žï …vÔöýý€ï#èô¾u~‹ï#`ñ¾± ûÑ*{|2ˆ”Ó|Ïô!‰³¥Á1F"s+øõqßÇÐé}ê|_éq7òŒp¼ûC8ÛâD%Äx‡„`™DŠLÌ#˜âHŠ8'ëL)D¹ Š?"‚Ζê!“(ÇÏ 1`µÄèÀzÄ *x1C/@÷-˜>ðÁqö-X*j¿züÇ/"èô¼u~CˆÅ“!Äry|Wb¼Îç§'÷ÎÏp¾€NÄI˜dH0·ÿ0àûé*½ëC•ßâúéP¼çC(íÑiOC(?N…±z˜ Nn’ŸÁžB€‹³ÁÍuo»™8@…:=BßÂ…X<B,³Àh•=¾ç'·¿Oûžf´¦'€€"EOï10¦PÛõŸŽ»>†Jïú@¥Þ~óê•Vüì5t:h-ÍW¬îDû¯¶EG^ŠRžµ þb‰ÃE_ͳy|aö#.õÚžw¿î¼-n«ö¤>_.ë¢iìÃu®¿ïÙƨ6í!‹ù©üžúá‡@wånÕ'bY6Ûu¾(n‹ÍçöxcpuŠˆ–«ZI'¦+B,>µ{ÞvÍ0j?ƒû4@Õé[¦†ã3•…L}ûh­ÃÙGiCÔ™ÞùvV ;ùèsÔãyòh=¼K9RrÔ^JiZa’ êìwµÒ– 'M±.»ÒŒhx¬nà—fÉ®ýÿ¶®ìGÌ„"w•Å<.‹ma.ü˜7^¬Í½¡ðëÿ×z¯±ïTN~gqü´oÖ¸[•‹4V"¹Ý7‡’ÉuakòÅ¢Øîòksóꇠު…ŠsÂDòÏO¶ºÔsömßuûUÑ~¿¦¥ÕNìÞ^¢z.CóKN¤³Ô½²Õí¶\÷oú.«¢Ù|7'*ÀŒðd±*ôG“º˜·ŸÌé‡u¹)tI‹éšûj_»†MSÜ^k VDµ,ŠÀ4y¹wbË}¹lÜ+ƺ¤-ñH±1Š•^PzŒ=7ûÜÚTÐZ° ºãºÂ˜ìëV 0$@’$M~p›»ãõœcý.K³¤¼±@–•Ñè†nîm­µwu¥êtÝÆÆÉ€V›‡ö=W¼C€air›ßÛBu›ÝÚ<Éd››PõN™.jÓÚ’!þ5ΆöN"¾2Ì’›¥N•qcG Ø×Má*Ý»iðn¯ËõÄQ’ÜÌ DáÒ=™èiJMu«íBaðÔ÷Û]¹°Õ•»gʵý5Ñw“;E]Wu£¹BiòZ;£mg]—ë«BÚªÌyþc=ºc>=©ê²ƒ(âuæ +-¹ÜX]nfP¦óAßã'Ë'gyÀ~Øt€É¤‚Rm•®r;å¦X3Ø9JU7˜ ÄEðN& LÏæ`îcÓVF ãô”~òãiÜPÖ%ÅÃQ¬üÔiKþ›„G³¯=4cSÅ`/+Ÿ5èG¬tjb‡?Ì0šþ¬P–>Ê‘‹µí·J®ç0—›‹Ú*Õo›Êv#ŠèÁ’¯÷:¥à”%ïs»~ƒÖ•k}çDµ=PZ¸ª•ööÁ&]©G« Q[ïÊëûkÝMlcx€Fö<¤½èÝ{q> endobj +2741 0 obj << +/D [2739 0 R /XYZ 132.768 705.06 null] +>> endobj +2738 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2744 0 obj << +/Length 2841 +/Filter /FlateDecode +>> +stream +xÚ­œKoëÆÇ÷þZµjOçMò]4I8ÀEУY$YèAÛdJ¥ë8Ÿ¾‡ÎñÐ&Gfç, š¯ó?üÏä<¨á³‡Ÿ}õÍÝÕßÿ-í¬`……ÅÝýL(Å2›Ïla˜-Äìn3ûež1µ¸œóùm½?7Òðù²Þ¸~<qãûò;8¼V͵Xüv÷ÃÕ¿î®~¿ Ég"¬àf¶~ºúå7>ÛÀÎfœ©"Ÿ=Ÿ}š) ‡ŠöÄí짫ÿ\ñ^Þ|(o“1©ŒËû¸sYË.ç¦)ŸVÛòàV×»MÉÚ!èȘ•Úxw>AfóûÝv»[H3®ê‡v“—ÀímݾÆíYn·nû?B™ù¿t›QX}ªË§]]­wìócµ~t{åï§êÐÅÞuN^êg·}¢`›ñWØ&ªTçn—ÇrÓ®X¸®úxXVõ±a‹“ñù7åzyjºCw÷î(<·zÚZ9·'7îlwئü•sYWÇ +vt'Ônùu!̼<4°Ç«˜ºK}k)ä|y(ë¿.D>?ºu«ÖÝÿe½;=GZÖç£[ŽÞò%ôÐýËû‡dná²…VUw‡4åÛûw­·å²;ü\úgÇÙø d +Í2@v ÔR´ArÉL‹G»¢t!žš3¡5„²Lxë>w˜¿O_rɬ¢–CU÷½§4Á2¤TÉsû/RÉ¡¬ ¥R3•çï‡U¤~J Š”†ª·×ÛåªÜFX¬<À*AöÈêÏš¬²ë‡Ló°&x†°B Ëe"¬à„Ö9 ¬B2®º^´UÛ×1 ++*ªƩ“50%È1í»uŒPJ Š”†ª© –!¥CÆc\¦T**š„R]Ìv·éz5^1¥ÐôŒ†š·±öÓtÑ÷R$î!훩–RˆzFCÑMϳ<žº0,/L"ž9ADgž1%3ßý4Žgº&ÒjF:¢&K°™ž5¢ÙsjA3]Éì;oØ'Ø…tB£E"P|*ÏhðÌ4+2åM¯ŽRˆ"Ÿ¡èÅîÒéʘdœö-«" ¨"©¡ê`Wˆ§4Á.Äbˆ<±«T›j&ŠS ŠÂ{ޔ㜨"§¡êeN'+pJ=rf¿)#CPªÈiß³QJÌBJ “J1Õà–Íh:IµáLÚnü­Üî#/{U¤4T=^ÿ!t²ê¡™#¡=¿v±Ú(*ª^|ç'X†œBŒä“ÒPQ¡"Õ*c…èFÞªzRM„4Ôm¦"¨“•@%ÈAí;{”¨"¨}ÏFM0 …B&ö“j "Íب–†Óµ‡º§=£šÈh¨é-#ŒNV`” {d´ïX¤GŸB}ïÙjœÔËTˆ‘e‰#£šg'HHŠIn¼ï‘þ'QD5ŒNWÀ” sÄ´oW¤/ŸB1 U¦ñþüÛUˆ¡Eâ©* K3Dª9g¹é†ßbÕS +QD5VO§«¾G•"sDµgW³G•BQ UÇßú)fy@ÛÜ&ö•ª\C-…ftTå9ÓEæ§õ€öD#íûéšxäíñìåý´k?|þA”@Ù#úƱx *Å6bd"qdTeª*4ݦ*³çeèýøç{ÊHk¨|±Ojºò³Ù#³=ßN±G**òú!Ï<¯ –!¯C™Ä&¿²ê,4£PÊ‚Z×)W»ßHŒÓJ ‹´º1L'K`J6b¤ë–¢ÐDH{V]`4Á/dbpžØ{ªt•D`ZYoúx;Š@ñ 5£Í¨É¢€¦ç|ö¼:E>5!E@CÑÛÿ¿W'„°&qœT)Õš>Ó¶yÞ ¿íwûq: DÏP4öøœ¬9@'AÞˆgϬSóá“@½`—Ç3Á-äbÈ"q€TIlÑ *iY&ýëc·ç“@ùì‰Føœ¬9À'AÞÈgß¬Ø ž@ñ¼à–Ç3Á,ÄSJVèÄNR%8Ërš‘Q¨¬ëk"_=Sˆ"ž¡èå¦ÒdåH ²GHßXù΄B) ecß™¤ø…œB “ØA*‹ª%DuP€Ké=¯ƒRˆ"¦¡hôcÒéªï¥È}cWd\”B½hX‡hŠ_Ñ6†T‰#£2·P3¡•yÁ¬ÿšLïv¢PõöT/þjtºò¨Ù{PßxyáS¨zN{ª±GiŠ]ÈinXž'v‘Ê Ž4㢮 ^&èùø;ŸB9 U/~g2]y€S‚ì‘Ó7žEFG)dÔ™æaMð a…F¦¾ø­€š +Mÿ¨´¶uƒnM9>ðD!Š¬†¢›¥“5(%È)í™é|¢EFCÑ2Òû”âò 1D–80*ÛcKšQi€>žyËÇ¿‡¢E>CÑU¬í4]u€P‚̑о]±Ç(*"ªž?/‰aš`bª¡ db/)Tn¡–B3,*a)M×לV㘈"¦¡èÅfþtåT ²GTßXiæSÈ"«¡l´nšàr +1´M•íϱMo©”ë:âšç…àóåx‡>….¢úªCt²â¢ 1·”= !ˆ!ĤÊñ%¥àLûR¾ 'G´j¾~\–ëcyhgF´zþ´|q;V¥Û°?”û²Þœgfl7¿¸ÍK·ÚTõöìBõBC¨Ý¦jg^„ª¥1s¶¸±†·úÁ mo§+|®Ž;œŸÓ-‚0nþÁ}¹®î_ºù ËåæfWo_‚YëM;k¤Ä?ã©Ýü‡ËCùi|:BW#ïYÑ6,¬"™Päœù‚{½–÷ ¸9OýI¡­`;«C¨ýSkùY||^½éÚ1„MŸF1~i ÇŠ‹ÏLasfŠŽÍD|O—DÛCÉŸÕ±ôxëÂãÝΨªóù©9-·~שiïÐv³›±6µ³¹Leº f»}½_F‹uê¥ ”*Ôs“زh‹$#šþàÒºNª¿EŠ•@Ë5ÔüÒ>µžÛÂíÃx!LNd  †IiEÈœ)MSq +Žó³xü%R +šX +¡æ÷QXÕñÕ/Ÿ­ŸÔ¶+›îÆ +§ÂíÝAíÍ9Zn“S(7ˆ!¦ý”ÎO2ý>X‘³i¿#ñïÛþ;kð®T¶{¤|_Öíl¿Þ¨v2åvy÷xrÿ|W®Ý?Ú-ÿ$Õ'‘»5Éy÷ß};µwyÙ®|=,T6¿ÙV«.ª{Ó·ûãå¡t?äó× Eð?%òg +endstream +endobj +2743 0 obj << +/Type /Page +/Contents 2744 0 R +/Resources 2742 0 R +/MediaBox [0 0 612 792] +/Parent 2737 0 R +>> endobj +2745 0 obj << +/D [2743 0 R /XYZ 132.768 705.06 null] +>> endobj +2742 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2749 0 obj << +/Length 2410 +/Filter /FlateDecode +>> +stream +xÚ­Y_oã¸ϧ0ÜUb$J”µEQ$·ÝíÞCÝKŠÝC Û´-œ,úDysé§ïü£,9J[ô!9œ‡Ãù éh¶›E³÷Ww÷W?¼Kô¬ Ÿûí,V*Ìõr¦‹,ÔE<»ßÌ>y¨æ‹8Š¢àCs\}þ%šm`ð§Yªb9{$ÖÃL¥À£`=ûùêŸWÑÈîhÊî,•±ÝÞ2¥³Àö–)‡“븵2<þØVYئ~b:-º½aÊÜ7ó8 ~?¶Æ¹Ê6<S-=W] +Wýuž@¯>™ô +¬dƒ 2±öq_­÷À©–ÁÁ” Zª +˜¾ì˜È†@c°`ù€¾’q™¦Ú09”¯Í¶ã!Wm¼Î-KXÕ®9˜¦sá|‘åYðÛMÛË–%Kq6Ööp¬jÓbOU]3½±Â¹Þ›õ¯Ü¬¶#a=X’ËVtZákMélS®j¡wOGÜÚöÂŽ_+ +N–ž0¦êhû0jOÎH,WBaMåΙÊ—Dã®kOkÿxÍy¨ÑìH®†ëÉ\Ï ¶ŠàÉž˜´;A ÑÌÀ]u4¼Äun8!t`ÐîXg1RŠvr|{mñªØxh¸ò`xPl™ò{Oç°66]k9Û@³t‚þŠñ·Ž‰®+;š 9WÏÃWüÇ ŒytžDÉÙÐãQ +Ôw:m+*sÞ¯šºjÌ”ÉÃMÅ­íÆ£ôÙQàƒVÖ^ù€ ÷,®±õ wQäÞ¡ýVôyGx¿u¶U7Vy´p\8"qNË_§I«a´H7a† AwSíHkó‹Dök‹áVVM'¢] ’`rªÒà_ÚÏt4üéL]»gÚúÃYˆ±@EcÇ|5ö·”ùv•ëüi(9„†Ç¦Yt{nÉæßpB§íØnè=Vžë?¦µ¸qü7›óHÃ_μåáX›7+ü÷‡wJÍò°È£1ìOÒ0‹5‡ùBˆ}µ5þÚ|‰²èÚ=–G&]sã ®ÿÒ +¿bÞ†F<扦XðïÏháH¡AyE«÷{Za +y¸ƒ €C…y—)’;Óeàçà4éìa 7Õ +Oä)G‘<ýåbE‘z0h+Iœ0ØÀþn†ƒ`µøþÇsÀ‘õàγõ*ÉÂA‹£(=ChšHA£÷lÚ×#Ž~*E й˜%±ˆI4_$#Hdp?I}2ú~"-Cµì³ÕJq"¿‰b0*.pfFK5N_â=D³Á]gB ¤î=ômm]séqn\LؘÛÓç‘Ó£Äý7!\üÂaYÁøvó]|M™€ëK¬Òÿu”Æg: cÏE˜êT2¼Å¥’h|#ÄÉ”‚ˆe%Lz ý~¢¢‰t,ñaÀÿðó»O>>ܾ}û ûX&z€‹®‡úy{ú i˜/“‘]/A3\u \2èÄó +™ß¥/vRñÝ¿=&é3¨Êˆã/VÅÌ°míA¤ùƒËâ!>,4¥i†3 “ÊÆSè~ +¬¹;/'ý ³¨ +È=¤šf§ŒR¶<(\C´A2U"öDÉ÷%fZ†f`j.”ø©òK¸NýÝ-=ãNêq'¥%/¦!`”ÞMIê“`zö´‡~‚îÐ~è^ØŸàÝ«Û8žùŸŒ°ÛË™Ît†Iºƒ‹b8µ¹pt§rßõpIº6­.‚MS¢uÜšNŠ±‚䕯'Ŭˆ'“¢¾HŠ`¡·NúÅœç¦a(Ë||Antçl§:„“7J¦ÎÔfMïTÙñ„½Sp`ƒË$àñ›‹ÄÁkÊBámBÞO€ª1å/ögU0tž¨üêáõC£‚5ý ¥&w𮤗ŒLÊV¼ÜH¥~äKÚôe¦¿" OÈso_íö/m‚+ÜY=u"OÕ?òñ'ÖRýgýÿàä`¿2õá¡;Z³{xðèpë¯C¯Â‹8ð¬ 伆;Ô¥¯LúLúÎK,zÉŽPjú¦÷2HE/òÿϘ#NWQJQþiGá«]‘'¬Z¦rÐñäÊÐ( 4:K‰"ÏBöÕÓÀofj¸ÐeÊó‚«ÓHõ‡ æz”¹kœmôê›TTiª"'ÿƒEëѬ+*Çý¬º¤Šø\år ã#r»“×äOï¯fŸIöv˜3¸ËnÌ(è…Í™µø‰âàßó˜0§_—M_eûY¹ðÖ—ØE^·Çiò®EÐ"  [ç¸)·“ÇU¥b0³;! 7¦?áþ¥,C$¥»6™\3QÇI˜%¹ß§Ûé䯖žAž/#C‡Eª=ÏÝ)á{Ù¥Ž(T=ÆÀÙžP’DaZ¨o1Nù„ž’—êõˆS©l_ñUoÍé8 °ëY9Äp€Ù²5[ÿ´åsrÇ5ƒ”í£Ë‘–ç\;Š]yïZYÿÂ…HÛß $Y˶gñÁ›Ìð}YÐmÿˆ9u¯˜FD +7 *ùC¨˜üé¦X†¹ú–nüM°¥9DÏà›e*Ÿ(ß›¯¼þ1Þ?ÏßïOÜxkÖÜHé¢7‰z/¹·iÑ.ù7É’Þ+ڹʃE]­ÖÞ'¢Òþþ´3Íå’ÿ C +Y +endstream +endobj +2748 0 obj << +/Type /Page +/Contents 2749 0 R +/Resources 2747 0 R +/MediaBox [0 0 612 792] +/Parent 2737 0 R +/Annots [ 2746 0 R ] +>> endobj +2746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.666 157.634 313.545 168.538] +/A << /S /GoTo /D (inline_asm_asm_code) >> +>> endobj +2750 0 obj << +/D [2748 0 R /XYZ 132.768 705.06 null] +>> endobj +2747 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2753 0 obj << +/Length 1541 +/Filter /FlateDecode +>> +stream +xÚíXKoã6¾ûW +Èh¬ò¡gŠ6Ùv‘½,Šú´²LÛB%ÑådÝ_ß!‡”dGÞ4í©@/æ΃œùfdâm=â½›Ý.g?üÂb/ ²†åÆ£œIœzqqF½åÚûä'Ÿ/(!Ä¿oö‡n¾`ñófćC×/~Ø‹6°g4æ~Èç_–ïg?/gÌ(¨$© AF"¯¨gŸ¾o ›ï=ð,õž kíñX©>Xy¿Í~k÷ùhüàÜK‚,!ôÄ( Ð\ÕóE n<Ê*ïÊJ|&¹ªå#®>Ò€²h0ŸN™OBâ±ùÿÔ,% +i€° +/€&Y@9=½„>@g ûz”y> ×W_;œ¡fùÁ±sŒý…0ÎG¸ +;•æøä“8ÈÒáo§˜Êræx®µ¸dÐ=aäs=ú!’´Wsw!ŽXÜ›2y=N„ª"\k3{›¶ÄÅ®Žjª¬uiSÚàXœwvÝö„Üt¢A²E!”ÊÛ#Î;+ªÈ•=„~kâ¸7”}­Ù +q5.¿ÅHØ…’¹ªÄú…O•Š çÒŽZŒ{£Ûn^¼É+œì[ É]ã¤ÎHäm©’O»²²äA#œ=&þ4&èÉ Ø™eŸ—­‚ŒÒÌ «æ2x¡‰µ0X¡¦‡ ç¾Òá•…üJŒÊ¾k]x<ä´ô}>X›ët'Êu#×'P„øvéƒ÷ã„öÊYæ´¡-'7-7Õëº7¤™¾ °!MN£ù"ІÄuX¬Z¸œÍ£ € ,zQ¤}¡s“8`Qx†ÓHñ/-¤—À§G ‰þ&ä§Ýšœã©iÉ‘ÂƳU¥4ý$¬88Lü͜§oYáúúК´Ð´E¶ÔUÍ#ÎT—oíâo2pöÁ…] ¡³°S/cÌÿSÖ$ÁÌ…&¬Ã×–z¨ðMº³4ÀüÞõTÐQ°(=ë(F]ž KHã“ÿÞdið×üwãþk‚Î!áéø?š4 ¸kë߉ ¿sõL68.w6.ÞŠ‰Jn¿¡)Î!–Úè{–Ö¥Ü|N¶sÈ«EU®¬„ÕÑŠ”_[Ñœ»ütžÈ; +endstream +endobj +2752 0 obj << +/Type /Page +/Contents 2753 0 R +/Resources 2751 0 R +/MediaBox [0 0 612 792] +/Parent 2737 0 R +>> endobj +2754 0 obj << +/D [2752 0 R /XYZ 132.768 705.06 null] +>> endobj +2755 0 obj << +/D [2752 0 R /XYZ 193.533 119.253 null] +>> endobj +2751 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2758 0 obj << +/Length 1595 +/Filter /FlateDecode +>> +stream +xÚ¥XëÛ6 ÿž¿Â8`€ \<ÉÙ¾}êÚ½úaðúÀA¶u‰1ÛÊüèõþû‘¢”sR·M±/E‘IQÔÏaÞÞcÞ/›w›ïŽ„W„…€a÷àñ83‘{¢HCQpoW{oý,L‚-gŒù/[]œù¥Æ`eqÆý$ Þï^o~ÚmþÝp0Ë<¾0ÃÂ¥^ÕmÞ¾g^ ‹¯=ÆEî=Ñ΋å¨ØzmþÜ° ß8XHÓè̹4 £8ý¢sਲ਼EhÌÛFI'é½€â¨ðÇINªF:÷ƒ +¢ÔÿÐèylŸ‘ú·°þtP$ÑÊq"½£&âéâ Ù6Ž—"Œã¶7Ûʱ[ñ-âaÄ„“1.uªŸÌî¹Û½ðÛf¼Ø³‚˜1^+ÙÉ'â—ÆoËó,Lã“F²¯»f‚˜A'h›¾jçºé÷ Y0»•nuO䨎j“‚4õÃ`›ÅÜÿUcª)aO}5 óÑÒ|Ò3r°fçñ´°@oAQ¨øxhªƒñ;}xH"ö{=Q*Õu”ã¨ì²Äs‘¯Ñå¾6™)¸uÕ•“œ4Mÿ ‡ÎòLô@Tº;6-ÄDFK=ON¢!²½£¿ôôA·-%‡"e‰oý(»c«ˆñØ´-R©_kâÈÞŽOE4Í` +6L²ØÿmºàdCÜï‰Ì·ec¥> ²í–GÝôXé+›L@@%VO’=3%xdmhdib€å¦§Ý[Æ^c²³¢›”0X.¥Áh€¹a>Ò…[nØ_{#Mždakx ‹ ¡ÊN¦Ã L™À 0Þ¡ ÝÜN ­»ÛÕû¡tosœ&©ÿ»žÔ-m?¤½növ³»€ó¨Îì»\™+°’âRUÒèD©½cHœ}BÆâÌpŠÅ:ZMci—F¸ŽN«TPÁ'“6…VOºÕãÑÕ¡é֮˺Ñ4­,,2Æ]¯LCVˆç¦µÐb?èVNp-Þ±”™(yò¨ð¶E˜éMÕ67Á¶À–|óŽÇI?ÓË +Š&V´­Éî%·D}'Ù v‚/(»} y'mÐ⊠ñøì6·Kå«6յݭ¨ßÑ~7ê†Ìáq`à«HÚ¸G­üÓT£îŸyê ïç‰í\¹=75œuÍþ0yt=W—ÕyÑÈÈB­î®© çí²Œ 0Vòòi ¼YÉÇò°WŒ¸s}s»*eÀ®dë”ÙeÎþÀ¦ hÝr|"jÔ-´#|qfî#Œ2ˆÌµe¾njbÙG™’óå;·†rŠ4v¯¿uý!°0'™ŸµHä'/:ùBë35 &g–1UÕÈÖrU·¥ÚŠ *.Î[ÖQrx¢sÿJ‚†;aœûû©;Þj¿‰ÈÃ(Iœl ½„Eý©“=]Ôà©d ò¸¢ð¶<ÊÍ3A¥—}KKÎ:ó+š‚+ßEÐ×·²ä²•-¬|­¥¥ŸmiçF®r€ZÛUß}¡[}®·ýïæUË泟·Â@v@â¦|€k®Œƒjµt¼ƒ“=+b³Ö0›¬dÓÙ½š‰4à"Žƒ,þ 8 }ÞÔníÁG DÀ‹0%B»Rãv„– ®a?µ˜Î Už;Ô,;Ž¦°Ì&ô Dé,ȶUµÃ…4>[U…-ËÙ~ÏÝ~Ï8aÅ{‚ë,òëf4°f¨‘à —"ëIäS2Øm¡hvNŸñj7VÆ¡àÈ‚¢—Æl:‘–Í# +Š¹túï §Û/!$ NBÒ~Å!¯š‡@—ÓlúiÂýùlW@¾'êÑ*ÒÇR'܉†Ï +‹>‘b¥²Ì56*iðžØRXƒäTµ™xÓ89{Z`.iÀúÑØÂ|Gy¼–[e ÊÚy¾L0U uB´)ô8ǯçAEgdiõkú{kýÔÁª=e^#„¤4´º2//—è—¾1Λýê¿ Efñ·ü·àþSðZÀGñâ/…¼cט~Q=~íº'É<ø0î3¯TEDBgwQ|ÇsšA·µÔF£3~'AœùÛ¶)«óçî•þø´‡b»ù?Ú¨†X +endstream +endobj +2757 0 obj << +/Type /Page +/Contents 2758 0 R +/Resources 2756 0 R +/MediaBox [0 0 612 792] +/Parent 2737 0 R +>> endobj +2759 0 obj << +/D [2757 0 R /XYZ 132.768 705.06 null] +>> endobj +201 0 obj << +/D [2757 0 R /XYZ 133.768 667.198 null] +>> endobj +2756 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2762 0 obj << +/Length 1639 +/Filter /FlateDecode +>> +stream +xÚµX_Û6 ϧ0ts†Æ“üßWì¡ë¶¢}°5om8¶’µ­ÌVîšûî#EÉq2ww·v/‘DRE‘?2fÎÎaÎËÙ«Ù÷¿ø±“yY Ãjëð ð’8uâ,òâŒ;«Òyë&^¸XrƘû¢–›gîFtýbé'AÂÝ0Z¼_½žý¼šý1ã –9|¤†{‹œ¢™½}Ïœ˜¯æYêÜiÑÆ B帱vÞÌ~›1cÛõ¨m 'ñ²„ñ [£Äóƒˆlýqxæq?s–™Æ!1ŽU«ÒµZ,c¸GÿL‹1’0[ó¾!î­¬sUÕâ‹ØY]z¡n^µ$ü„=¥Ézýæ÷Ÿ_®×sXâzþŽa‹?j>qÚ¼¨+åAú/²ö°º´g¨æ°îÄn½6§>É9h ýXµÅ?´Üg¬5 WÃqO§”<ÈyT—®²w`s=¹×Œ’ŸÿðMG;\|¢~øÄyVZŒdª¤—ÏŠÌg#nv¡ñ/ä@Æ°QÆÀ™~àñ !‘_åÂÜ»ÅâÚ8¿]ðÈ݉Hj_µ;šöB4=M Ùu¢Pà NÜÍÂg.ú +Y•ûöÛO]³ìD^קE¹Þb¥™»Ú âä}/šM-:«º4ŒF–Õ;Æ|Ñ[S„õ‡4Ì%oÑ輫rС òA2WtuHÀóÕ£ØóÁ5Œök'Üãs/àñ #! õñÌU-O¬åA¦6‡ÊÎÜ»ª®‰ÞJE$ð‘ܵÕ'a4ì«ž$ò¶$R“ŸˆòaJˆ‘+8T?j’xQʧ.\Q+]LlóîD ¹¥Q프YGÓN à®ê "Þ‰¥ÊȵµQQJíx”Œ. «;4Yv̪Rû«3ï: ±óÙ'ƒà{±è@~ÒvœŒÃÏ"È Ë´¬ÄG CŸI/HúÐÉ]—7DÓ^ÆÉ>Ç“( ËYyuúÙË€sÁt? +F¦GÙ#Gù‘ï–U9är‡2W‚xÖF4“çµ,ÐeK"[ÙYTÕTŸF,Ȫ^¶øˆ¨_]%HLÆšwêõéÌf4NOòH“"oiRJ«vî­H/ ¯¿Ñôºâ]•;æÅaü¹BÝ[èÂǺèK ]øˆB}B~A¡‹¾F¡ ¿¸ÐE*táà +Ý´nJùÿW + BüÐí¢¨òš´É€ƒšUµšXq¡ìîQîkr®.¢ \Óò¥ÙI0åkPZNÁNµElfc¬gÉ€ȰȨ˜2÷•"2ØYh4q‚gvæH–Dµà¤Ñ ˜ãÛ*‰w·¯Š=Ñ>S¡ Ù*Au”qP£µûnq„&¢UºÞ}/0™¡+JÒr\¯ˆ±pºÑ¢™5¢GEÍ +ˆ˜[úíÐÑÛèhDžë" 4(–“V»^<%Ì»èŒFºÏ <*œ’¨e^ꪫ|·ÿYPÍ·ŠJþjì‰ûÆŽWÆì]©¯ÔQ¿rõ“‡ä(8ÒC ƒÔà¬^ÖGª¸—ŠÁ±.­ q—¤±E=<ñ!§6Èê+En¦"4£ªõ–ît‹ÅÑ`ö©ï l¡ÀCSîùY 'Ã3sðwšzIê;#2˳‰Ü_¦±Ç’ô*Óìi7åº_Õ=¥©íȺìú(ü0†6‘äøE›tòai{I7§‰6Õ÷S/ÊЧú¾•ôY÷y»£Ãø¹ÙÔªH?M<¹|9 XSáM«p·í8ò‰z쇰nͤW:ïß{n·&cýÍÙ ‡Ô†Àh0§Ô³À»´B›möèðÅÉù ®: cŸ]Ó«–4PFi ÐܘíØ'ÔÑãl#ì¨ój"ìMÀ`+ægþð&i !g.Zn$Ù¿ 8ÓàLrT#Ø8Èp¥ÁSÙ¸™é0« w´ž¤,:"^ˆY<šìe÷¢¡žÙâR¦½lÚî‰.\·Ü¡û|‘„&Å«’ÎzvÕ9z0v4¾£nÄ;Cßvð²²™ôò^£F’i†Ç½lw…¤ÊL~ëÉR/ ó¥Ç~}Š®‚tüE'ͼÀ6/!ì»\Ù‘óW{Ójÿ$ +š„4pvã7<¥<•™mÑqÒ\)×^ìAâ.ëjc4lNF¥üxÚ‰öúÊÛ`ð¤ +endstream +endobj +2761 0 obj << +/Type /Page +/Contents 2762 0 R +/Resources 2760 0 R +/MediaBox [0 0 612 792] +/Parent 2765 0 R +>> endobj +2763 0 obj << +/D [2761 0 R /XYZ 132.768 705.06 null] +>> endobj +2764 0 obj << +/D [2761 0 R /XYZ 246.116 119.253 null] +>> endobj +2760 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2769 0 obj << +/Length 1981 +/Filter /FlateDecode +>> +stream +xÚÍXÝ۸߿ÂØâ¹X3¤Hê#EPl/Mº‡´E_ûp9´LÛêéÃÑG6‹þóáPZiO‡Ûô^ú`“’3CÎÌo†â«ÓŠ¯Þ^ýi{õâM­R–FÐl+!%‹£d¥šE©Xm«‚˜éõFp΃۶µå¾°ÍzjüÕdÍZ$AÝÂX†i¨hýãö»«?o¯>] ÁWbÂS°”ëUV^ýð#_`ò»g2MV÷ni¹’ +– +ÜX¬>\ýãŠ?QT­Ã™¦:f¡ÔÏ×ô^|rh¾Ú„ŠI•“» +ö¤*¨›ƒÛÝ®¦¶±}k±«ƒ‡º÷“f" +†…©N½9Y]LÓµ7ëä:È;¢å-µÀëØÄnp°9+¿»;ÛrBm ¡C Út¤¶©°$”Á¥G9á¸Hyåø-¯²¢?X"£¨Â¶ ÕÁíZHüó=-|—ï3Z•Õ¥m‰xŸwg""ì×!ú*óÔúø(ù»IpÎiV£¾ð:îíÒŽuïÁГZàDCÞج«›2 ”&1S¡ntŸ›Ã1nìH³XkÞj|ßæՉ䴽Sש0\ üUÑ 4Ô¹4õ¡Ïü¸§KŽn€'Û-™ˆ£ùïׂ¦©@šs ++“aä*À­p¤a%2øÈHx#Ø– 4qÛõp½“=zPä@†}m×äYG´Û¿}¸¹Y¸-£`»NxP/ºZù3þÕ9råÔ5ª "Œ¢e¦¢Î}“wvÁN‚K©ñòw;Ó–»Ý‚‘”bIëòªí¬ñ‚ÁÅ~ÎX…LG£ýÛreÈáøÉ3z4’öÖz•:÷M›º\rvwªÂdîíd~‘×äMì¼ ¼‚iÚ¿tEÅP ­ƒi¸ ‘~8?ã©ù»ƒ=æ˜N#( +Šº¾ìú +n·Ï»]Þî²Âšæ#×üR7Ý ¡/ÐEaõG!•³—LX¨oÊT¤æÐåØ΀ÂQãz'S.œxk_¿Û}óê%­¾öM»Ï3ê~Ão|G “ȧ¿(2šr†¢‰Ët¦ßuóïòB;QlIù/+ãõxᦖB˜·ÀüüïÝD +«VrUÓ¾ºï æ ¢DC(q¹°Ð2 §»IÚ& ꟙòõÜ]?ÞæîÛ÷»»¿ïn_¿~?Ø m…¿›‰z³;ž2lë„ZN„“OP ÀSë!Qº"“`å«*`R¹¡®?÷i‰ú{›™ÒÓ=^ÓâºöY4R=“_È¢(·¾tyíÊ Ôå¤aí­KTØù¾Ê¿l&Ï\Üv…Ÿ†L`„ŒiS%©Cm_$ +_à^² +$@ºÍå•ÇL|5'ÿ{ÿöêi¢ý ?ë÷JHƒ;‚c¹âºXÚ¹vòØ ‡²˜6åÃW-6ø¿9öœ·/e HrÈ­ßר?ÙHt S^ +Op…óð|HÑz^@úO¾—SbzV²à>KÄ¿!Kü†Ô°Äÿš ~=ˆýõ×€¾Z}õ<ÐWË ¯þßAöqaD} %û€úòþã· º~O½7ðƸÆ×üQ¦ÅðÖÏi§#ÝçEA=¬“Ö"€ÒÎ@K­‡)1‹GRéæ8AˆÌ°ÑQ_™“'„€ÊõhíÊfŸGïí™ LPî‘2AÝeo©5Yf/Ù~ìò!®,Œûòr"„Yà9kÒRå€ÉÝ(Qš¶ÒËòQ¬˜|ÁyCÄo©iÑK_¼q<òguÕPÒƒƈÞãÀ#9]¶ñ9ÄêÁ ›UÊÜãù+àf|õá3ô` ó€žÚçU—ì:¢–íèµó˜ýkÊD8vÜ.¢aVuXØ7?¾:çˆäø&sqHs=;ãâǽ4a±üšO{Ã'½.I&Ó/zIÊä ò[pâf¨l¸{a»=÷Ôym3ê(jÊ—"¡Tñ¾wÄHÊã¢YË8Øô™ “¿Š×õ—‡“­žù¿·0]& +endstream +endobj +2768 0 obj << +/Type /Page +/Contents 2769 0 R +/Resources 2767 0 R +/MediaBox [0 0 612 792] +/Parent 2765 0 R +/Annots [ 2766 0 R ] +>> endobj +2766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 355.998 309.448 366.902] +/A << /S /GoTo /D (FAQ_faq_asmstabs) >> +>> endobj +2770 0 obj << +/D [2768 0 R /XYZ 132.768 705.06 null] +>> endobj +205 0 obj << +/D [2768 0 R /XYZ 133.768 667.198 null] +>> endobj +2771 0 obj << +/D [2768 0 R /XYZ 133.768 256.964 null] +>> endobj +209 0 obj << +/D [2768 0 R /XYZ 133.768 252.356 null] +>> endobj +2767 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2776 0 obj << +/Length 1623 +/Filter /FlateDecode +>> +stream +xÚ­koÛ6ð»… ƒŒÅšHê™"’tM[ Ý–¦†¶d‰v„êáŠRRoèß´eÇA³a_ÌãñŽ÷à½dßY:¾s99¿žüô’GNê¥,× ‡ áÅQâDièE)s® çƒ{ñtÆ|ßw/¦3úîÛ¬–ŠÀ÷J• ­gJÉz^ÉŽ¶m!;ŠyàñôÓõ›ÉÏד/øId^ê‡N^O>|òß8¾'ÒĹפµ# eÈX9ï&¿Oü±B8±—Æ>ÓfÄÜóyèDaìq’G¿Ü{vzr4E`ÌÑG&‚ú#Ô îš¥^†¼nïˆðÙ™l!þæðóù†ù|—ù PÔ‘_G+FÍËû}%Ùí›w$J#ô‰2 ™‘ÿM{ª¤Cuúýaøè‡~Þô°°r,}7¢®8)d•­oòvxxŸ‘èç?‰ÇÃxGÚ7<ôñGéü<‚pæDr} fó$qWC·j•Ù´ \S·¿-aC“÷eÛÐÎbû–è´¢µ¹°k—]VÓFNYè~Å™öžÔ¦Œµ’yùÑ÷¹NX@4C=‡,5v3H¿0"½QC0·.«ªT2o›BfPe³$0ÃÅwµ7ȪmWÞt&‚ŒGܲjçYE0‹h—=±ßMyèf]™AÅ £Ñ»-ÕïhižÔê3¬:"LÉ3\üöž€¼jóÏ.:ùeMŽ.ZÊò½’]ÿE‰ºÜ•:H„‰v PúÊš‚­“†n³)G3Ðû„™Ki.Wò âs¹h;$æÜÍ3p±öl("gn×ÂC6†¨í¹Áà3vZÄ–µDŸƒògŠP…TyWε!°ÕÆ~,ÀTy»¥)ÁW—çiOebbS]õ[tˆÓ³™›ö-Û¨•P¶Id´Àƒ` ¸ûìˆÑÑëm[;\½¬Wm—uë1g5€ÉVØ‹¸Qà¬iA5l=q‚ + “ÈèÀ*˜=Eb“~[ÚNöC׌‰µì™HMˆ“€ªjñð^¿%òrèEGá fÆŽ¡´ídfü²èÚÚ¸æ~Ê|×8N y.•¢ 6áˆxpž¹1+Š(¤òvØ®{=kYàñØ CÙô,ºé©€–Í=ÖPD&‡‚©¤kK=ÆÓ"º{+h7Týódª&’»¶Êú²’Û:¾½:Ùí:õ¶3~·U…ûLжñögL›¤q?núëã½çtÜbÈžG|b9^nÞ½¼ºyýëÍÙ‹W¸·.}¤áÔØ6Mäî{vvà¾íDÄÞP8ó½4 „æò·m/Oö™Æ­%0«¬ÄóCÓMÐCõȨlè®VUiÉùÚæ?ÖgU9Ï=Óp#‡ò…kÝ ûc@‡<_¤ÿ×Àz¸µžŒˆsTR„Pi˜ƒx—˜ ‡¶L0°&Q¼Tœþ¸š]^\¸<<§–ÎN¸ú½\J­ëy[•9ácè±P¶ðXtGèq¡3GÚptA[ln:>x3xç²”m$˜€Þ[` ÒØýsÊ° æ Ã^Ã8‹5a3ZŠrZ,d'us²F†‡Ôå˜írÈ5–ɵL:˜›kí4‡Ù¡Zªu°-î7eS{*Ü4±½7‹cH‹Í[`áyø^Ü÷.,ê3hR`ÒÉSêê,½$妺šÔU.ŒLÌÖªE³t¹£€ h‚Ùs¤çš£mU:¥EDIƒÊó§L¥4aò­â´-ÕwCÞ›S3lâc׫’òÑ-­Ô]·tÜ„&ñл"ÖÌav™iΚ+k:ÐÑGoHÚ +èguöSMš­’’¶Mµ&ÈQhfâ^v=%‚æë§0¼ö˜A¸ÝÉ œn‡-Ϻ<°ÃÂZB-­0wÒ~w:ä ç/ìlþ¨³VãN6ÜÚ”ó…ûŠf ¹mõ݆²cšûít<ûI¨š¾%`7bn¥¸HƒC3vå²Tà̽Éáà‡| +…_ü›Ïxû/D)"’ñ¿Iê ÛÍ.e#!~lñnMñ¾¾x_¥´0ÿ„‹–ÐŽû¾tj»M‹ ±Åˆ˜ZÌnzÑ~]/e³oò?`]‹ +endstream +endobj +2775 0 obj << +/Type /Page +/Contents 2776 0 R +/Resources 2774 0 R +/MediaBox [0 0 612 792] +/Parent 2765 0 R +/Annots [ 2773 0 R ] +>> endobj +2773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.125 487.345 428.995 498.249] +/A << /S /GoTo /D (inline_asm_clobbers) >> +>> endobj +2777 0 obj << +/D [2775 0 R /XYZ 132.768 705.06 null] +>> endobj +2778 0 obj << +/D [2775 0 R /XYZ 133.768 277.156 null] +>> endobj +213 0 obj << +/D [2775 0 R /XYZ 133.768 271.872 null] +>> endobj +2774 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2782 0 obj << +/Length 1886 +/Filter /FlateDecode +>> +stream +xÚ•M—ã¶íî_¡æRù½•Fõ¹9äíN²›M÷’ÆmI‰–Õ‘E—¢vÖÍË@@Û£ömNAñME^ëEÞûÍÛÝæî]œyeXfðÙí=!e˜g…—•i˜•ÂÛ5ÞÏ~Û@DQäì†ÇqÄE%~RlÝý°ùn·ùÏF¿ÈçEXF©W7?ÿy lþàE¡, ïÉ‘=™©Àƒ½÷ÓæÇMt¥T´¦Tš‡±LI©m“Èïìu¸{'å}‡‘(€™#|óÏ¿ïïï‰îŠo’„2ÝYOp³4òëj `<©ºÛŸiaŠ€id@ïé[]PÿEqMk£¶"õÛn´Ê¼v–šo8ÚyXæ‘@u‚, e*<8FeFZ}Ò]³ 2°ý½žûK”Fˆ‚¯@žÀ'(Ã$c£üæp¢ E\ÒFBF‘"ÄjÆ®3®ãk1Uã¥}eäW(íëYœ(¸;¶añ¨jæÑ(D¿TÉ'ÝW¶ë•c_÷,ïVÎ…ö‹˜£6+b‚Ë ³°ßWü LãmãÔ¯LWNLÅŽIS?\S). µ¾(àãlI §„³Ÿ„ó c iS6à -ÈÎc}<õʪþLk£Fe>al+BÞ,€‘E¤Ï)@º2Ïüû›ƒúd»c÷_çw¬Öíëq¦«ì͉ÙDÁ•ª³ÝÊr¶3@tx˨½2j¨®°†¤]Ï´èõЂ6PaÀaRìŽ]\ÉaŽÕù–s5¢Ë&iî¿Xð Úa´­¨Þá•Ó‚Õ€ïÕø…ãU?êISÃÛ‡ù슀™Æªe.µÀC²«-S?a %Q‹@ÊɨF¡/]™xÁ–)tæÊ=¨˜fåM´Âj¼G¹ü,/»¶ëH¨nàt3€ž¶êÒy›¥.‘ò9g² £ºù„(ŒÏÜÌÄ€vŽA`¿¦ÂÊ¥šÉtCËMêA­”©°Z,EOäaó¡(®Ì}mŠ˜Œ< ((¼ƒó À™?TGF9½SÑr? \“laÀŠB8' \§­¶ç³iTÝW¤ }Pu…]låŠK—»°'¬8âÀ7Ôµ:ÙçÞø?ªÛè¹ü¿,Iq&q2Ó<¢ƒÎÎ×`4’Ð 7]x¶­8T;Ä|Y¯Iâ¦ÙªÏàúª9–n¼U__õݹ=àºØý›÷ÿøøf÷Ýsûÿ͘ö.˜$³»Ë­^Z³€,^Œ9ë4Ï7Âd¦‘¸*ôŽmTeYÖE×ÃåE×Y+͇ªù¸Ý +ÿ T ¼Ï¡ÅÆ]L´¢o +^¹40nq°E¡;¦LÈ$³o'Óu³Ã˜—ðÀòcKcÃN%æ ~x¨È´ÑS{ UÓõ4Ž.ÈpùˆßnÏñ 6â™V®ÎB’åjaÊ@[×3Ùzñ‡Š8U=ÔUQˆŒÆ“<}–Ôh ¦RfH)D Røµ3µ“‚q# (~a YÅetÆmãˆûi×S»A445§M÷Þ ýmsãñ›‹¬=½¾»UÂv˜BmÚ;íŒÖèz¼»ÊOr3z(‹™o\Jâ4»÷{MŠSÐô};u}s5ƒìLeÎkñƒ +CTãP0ëƒ5[Qøº™.z-ˆøv?xuÖU`Q¦\µÔ‰ÐFMc‰‚Ékç$]eGÔœ;#mÐ|sÅ’µ!¬F§³çi»V¶¾Ázû»­„l6t8u‚”õdŸÏ®ß©­®„ßjjsÐ?÷F ©E(h/ÿVµ%¬åf΃ÜÚUïÏöõbx¥PÅ'ç& £¦d}Ç¥žNk‚ÒSÍŒ€ỖBÃïPÁ¬¶¦ø¥ ªjP2¼NwÅ{‰=`ø×-½Ë`-á[5gÚrò5—G„Y>ìj̧Ð=EØ_HÈ=M@„^ç“nZ‘®¼à«væóÕÔ¸$[¹I«]ö'`˜åu oí„_Wq¥ã,¡¡)&óíQ ö…™Èé) ÀÈYÎs†‰›yº`B2˜ í™6\wü~²“aböþê|ôàfÇÔ?0ž•²t`uÐj" #vjÄ2–à+š]S‰N<¶¦ÐÕÇÚtî.V€‡ª~l¡R;ÅS4Ä^›cµ¼Ø^ n +ß» Ë 6ðømxbq"Ê9Ÿp÷d*ÈÌë&.r~¯Ô¤›@0YáNV–Ët„Íb’k”7w\,R³”Ûá+[†fž·žCÖº¬œ«ÿ]ÊÞ¦æ¯Ëü (ƒÑH—[Š2”ókú=͸Š«í> endobj +2779 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [132.772 299.329 314.092 309.227] +/Subtype/Link/A<> +>> endobj +2783 0 obj << +/D [2781 0 R /XYZ 132.768 705.06 null] +>> endobj +2784 0 obj << +/D [2781 0 R /XYZ 190.057 384.307 null] +>> endobj +217 0 obj << +/D [2781 0 R /XYZ 133.768 369.582 null] +>> endobj +221 0 obj << +/D [2781 0 R /XYZ 133.768 284.635 null] +>> endobj +2785 0 obj << +/D [2781 0 R /XYZ 133.768 249.343 null] +>> endobj +2786 0 obj << +/D [2781 0 R /XYZ 133.768 249.343 null] +>> endobj +225 0 obj << +/D [2781 0 R /XYZ 133.768 249.343 null] +>> endobj +2787 0 obj << +/D [2781 0 R /XYZ 209.055 136.559 null] +>> endobj +2780 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2795 0 obj << +/Length 2562 +/Filter /FlateDecode +>> +stream +xÚ¥YI—㸠¾×¯pæù½*G«%õ­—š^^'ýRíÌ:smÚVJ‹£ej*¿>X%Ê%÷d^NA$Aü@¹‹ãÂ]¼¿y³¹ùËþz‘®Ò5|6‡…«x,Öi´Z§Þb³_|s’•¿¼ó\×u>ÔKÏuž–w~ä:ÝÉ0ñ9¯‘onÿ¼Œ#§n[hz¡Ÿ8aºüeóéæ~sóïfvž5“·JÝh±+o¾ýâ.öÐùiᮂ4Y<‘h¹Bõp`±øzó÷÷bùhˆ"²þ(^ùAôÿ®V 3¸–ÜÅ®‚0eÕÒá§Î®.ÏyAW[-÷eüióêXˆø)?žî áGίK/rLÁ‹¬:öÙQ¤þéº~1Бû–IºÅ1¡s¨æÔô[Vž Ò3óª«q¸r6¯‡ã¢€®·ÿ2»Žé²Þ÷Êçe¬–wAâËŽ[ØV#©È-ö21´wY…DàÔUñ̬'”ÃJ+ïN×&n¹KçšÙa)‡Y ´še9¸R˜è‹j…îQ+4²Æ\x@[ft‹p_å +dÝ…hqá,º'Ñ›Z KWk?OY&®ó|Îw0Óór9pzïuàëÆ<öØ_*³j?tø\÷Ì{Ê‹‚©ölvùá™™ðL‡ÄÚ©ÌPc#=˜x€´aÛÐk^ý)C¡(p¶ÆTLvß¼î[<à òÕïÅ PŠWìOfü)r´7Ž¢•gÛdMnZÜaŒ®»+ú=8è å¿v 5kDñÛ9ÇøLªÈÎà a´¿MÓéB»Ë¸ÙJ“å6rpyôUzô'/6 ÃIÐÀJåd z¤3 Ǿ°.¸LP"^úûÚKׇÎ4äŽ`›q@#úÄMèäêm¶å3 áD'ÇÂþ„žÊ}µ7˜*3»âÆ`ŽjgÚp!‘缆ë`ìÀfèä-³MÛšªË) ¨#ãÏ¡¯v]NáR&ªNXö:hÄ• ²¹UŽÚ1JQûí°LU5­Y°9Ù‰P™u»ÓEjà5Û±Ù·„M}Ú|&Hqxø§ÇZ9MÝOC·jc.Wˆæ×Í”†®Cüˆ× |]§­cbHdŒG8g:¶ZÖ>"_í”#GLÏ‘@‡@nR‡º'G^^©”abØ žt˜8<&%¤ß^Œ¢U,=gð•IKN{ç¤ïë)ãÙ#ošÔ}=VY2ÄË«ÉpÌ À.NKð锳³XË°ÝÊGßKõ.ëÌ~…YÃ/B÷ÒÐ9gMÇ”ròò\7»W ›È4ØaïLÛ:¦âïæÃ=÷Û|| :p¾¼ùtÿvÃü¿~y÷Ï÷à9‘ úºA¸Ÿ¬ ú´AúŽ[ +=˜Ò”ÛÑq}M’(iŸ è{„ø„ûæIUuw¢«Ù¶î;ÆëüíÜ}¨È4U†‡Ç3‡Klá½"qq D¥\sRéö¹ÜÖk¨²’± _§mOfVÖ²€eà’8^–h”ÁÕŒy¯Ã“ÿ”0• §~‰fQËÏìþép“ ™)A3EŸWÎ4µ¤Ö%@—º«A“^Ä´ bL:D……’›g=ôT.H$æƒg_WbÄ]÷ݹïÚ ãÑzÉPö|.£á­þO + ˜$W^’hiÌ–rK¼3m~”›#Óbƒ‘Éï–ØÝÑjž¢Cÿzp{Ÿ²¥ïŠ}Z¢›:ÕhÂÕÁ”]Lã¸FFYÀÎtž €‚ëõãÞØÐîA >»Û x¾ÞØ‹)Ÿ¡†?ÎA¼'A*¾ &dÁLM¹g0òu¦u¾^>öxUùR\$5“[sÞ%\O%”Ø”Lè.€úŒó6öLq&2uX§9_¨ÚÕ{¡Úü?Bé|ʼÊ˾å+æòý?W"Õ öò…"ì€&ç´à)4ð"9Éç î$T½õ˜^n­ä® ¾Rñ¡¾&ïŒ2 ¶R °Ï¬4Ò­Å i5·¶%–3cÕ#E³q TíT°0 Èž9nÖV´æ» ¡ègÐoßöVµªZO"kíìóÆ*eºÙòi4+f¡ƒàÌšSå" ‡¼”IÆ@ã "Ê´üëO³u¦ÄQ¢a€DÁ¹‰Ñ2 væ¬Á<2^¢P ˆ†íÃÀ9½GS™FlƒÃØ/¸±ËZ#jŸÆ¡˜2æð 싽u}Q>±“©èôæ+yµÏõ§¸ý¬WãË›ouÅŒ˜ä8¸ªT¡Ä"—æ³@q„®éê°Ëò/!/-îT§<b§"OËH¤r™n_›¶úóû¸£”ZUZˆ.f¼ ê«–¼?•pÀz´ ¥nª5$Pý}>Iœq¥uÃ\ëé–žíø½®9ÊÃÝÃû›Å7J˜ˆJêâª÷Y–ŸæPÂã›÷º +˜ìÐsEÝ;IÌEn¡.Dµ|µ\\ãVûÖ\›óE}ðõ3å÷0ȳ¦L* üÐ:]ä9 å=Ÿ‹jä÷ø¾vÝ(ò*ìã>ˆ¼ŽÕ¬ö$qóGf ¿kx¤p—ÓõBî<ÈÂ(GC…©£ ´´ÞSÂTc(qË!¤• ™÷¸Œ`s"ØêVIM)vD‹fª®ÂÔzÅ4ͬ!ÈÃôwƒœ^AÍ®&Hï–4y𵆕 ‚cA<ÃK&g(ë™ò"CÅTxMC½ÑôgðÕ4¿æ;™ü`)½úè+êǯúŒÊE³LÝÌ»¢¼éë 6ó=-®ˆ“#L‰àˆ9㟇 +ʾ DÒL!CÙ>Ô×^ÎÚ©Ž LÅv]?Š4>WÏxR_5¦­ 6½v†ö»µå€>0Ãe‡ÑÒ!y.Ò à1Æ@ŠÑo8y‚Áܯ/féöÊë3ƒ9q<Ähï«ÙwPªoZA9o¨\ž–f‰§Nxjí µV”: +ùq*hLH#ó$æøÑ¥#®åWðî0öP ©€q.²C,N+œFéѱùÓÒó<"Žî¤Çîl[ˆ89õOtê[æœÄ¶±O;C–¼Ë„îÈNávöGlʶI¸ +f¼KvHmÅj + ÈÔEÉ 8Œ‰Å‘œ2Z¦QŒ–á’Ø¿¼éíQà–»GaétÓß$ãº2n*2¤:kf“¯_fH_µ{´™[f)˜ß«ô™ÂŸ  O&ÆûCÊô¬”é»Ö› Ú-ž‹½ÛKáIí«dö_š¬âàüíÓ¿|ëU‰ý“/IWÁZìôž h§¶ +û6§^+ñ!<÷•¼ònù®+ùºÑ’_še;w(DÃVpü»ú·g@À—[þ/Î+ +endstream +endobj +2794 0 obj << +/Type /Page +/Contents 2795 0 R +/Resources 2793 0 R +/MediaBox [0 0 612 792] +/Parent 2765 0 R +/Annots [ 2788 0 R 2789 0 R 2790 0 R 2791 0 R 2792 0 R ] +>> endobj +2788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.905 232.016 320.651 242.92] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [339.203 232.016 363.312 242.92] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 220.061 168.518 230.965] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +2791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.303 220.061 312.412 230.965] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.637 220.061 444.746 230.965] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +2796 0 obj << +/D [2794 0 R /XYZ 132.768 705.06 null] +>> endobj +229 0 obj << +/D [2794 0 R /XYZ 133.768 667.198 null] +>> endobj +2797 0 obj << +/D [2794 0 R /XYZ 285.966 412.641 null] +>> endobj +233 0 obj << +/D [2794 0 R /XYZ 133.768 395.914 null] +>> endobj +2793 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2800 0 obj << +/Length 2056 +/Filter /FlateDecode +>> +stream +xÚ½ÙŽä¶ñ}¾¢3OjÀÍP$u- v/lÄâm'l?°Õœ9j©WR{vòõ©bu­Ök¿ø‰W±î‹”»Çܽ¾ûâx÷ׯTº+D‘Âp|ØÅZ‹,Íwi‘ˆ´ˆwÇóîÇ(fˆ¥”Ñߺ}œGÎUó¸?¨DF–†T§Îv/°Ð±TQ"÷?¿¹ûûñîí] ¤ä.ž¡ŽE!“]y¹ûñg¹;Ãá7;)t‘ïž=èe§ €Æx±Þ½¹ûç\ð+·øM2¡tBü>Üšr¨Ú¸Éetr8ÆQß^ÜðTíãÈó;Ó¦êiìÜÛ[Õ¹3­Ú.:Ú¹õ®£ÙÐÒXÚº& ŠéµÝy ×Vˆ¾~óý'4««ÿîc9TyˆA; ruÝ“½"o‰Ž,âOЩ†ÊÖÕÿ,Ëg3‰qåù† ‘ƒ;ýíÔ¿ôƒ» ÑÄD V¶p  /R,\cOµë·XeR^2šx}À8žü$¥êú×Ú–N &ï„J¡I±6"γ?ì|„lî€K¡MA¸ŽÈŠ–”Ž7*T©–:ºvícg/t†¾€#Z<Á#Õzîs*Ij¹Gj» ±EŸd"½Qï½íJpC•D¿îã$rÝ=ÇĈmÎK&ÚÛ¸ÅÌAˆ×ßý@“/ªæ6T5ÙåCð$&YyR×þâÊAìIn@¿‰g’Ãâ¹B_ÖFÅ÷J2tvr®áݪz %Éwˆ/Øù|ë$ú×÷´¬7Û£cxà5<#©…ƒ¥$Ac/›ÖP…õÆøµ;lD'"OÓ&HU)X)΀N&Reæ>¢Òè—öD“öÆ!œÌ½Ì8éμbaì«Ëµv¯ö“ªÈ>>‚p ÌÇ}ÙÑØ€ cbN¨=¡­ù¥=ß0äyƒ…înÄ`Q/x|¡úßÊëØç•7LÊÎM¼5âÙ3þŽ–dì¥.Ê_á %¾!塳é|R(Z0ܶ,òK{Û’$°¢Mh*•M²)/›Tµ#ܸ¾Ü|ŠñëºE‰Ÿimévu%V¼XÒÖՃ밖*rDÏ~6¯Œ.E +‰DNî¸áf*I6 +0B•×Áû(µqòQŒZäàð tµÝ@¾«! )µŒï|ld˜ÜšêíçþªŸy?›À²…éÀ2(ÚÇOÈ"hÒØD_óéÅ’í™lÅÛÎö•÷@]Íhmi@ “é©ÀˆÌdQ{NçjàÓÇ‹bg„ÄÆþ’Lfñ¡8h!7ڛϑà->G¾ÏqœBòãßÁqn{BäœHêÄ|\;‡ÚçƒòL{'f똼‡Š­u¢T¡’)ÍZ¨b•æÙù‹l•ÁqÇ’w“­i‹B{pMOõ¶Ð7p Ë‚ÃvÖuëeòmÒ4ã- +Z ëÃÎÖãñeIýcÑp£–„Ö &Oc„Ï[)CÀJß‚¤t¦ÙéeuchÛº|²Uó ·|å™Ï©Zá¬w8sÑ6¾¢Œêª«>HQ)ô"‰O!^²ïÚÊÃêÒ¢…È¡mäPßÔ¬6aÓ¸P öž}èF{wèÑžÃÌRh(HB?ô|ÛÒ%NŽ®Ã[tâ=ŽNƒcú65'ÿûÈeaï·*wP墬y¾pA.ËPŽ³Ø€º2‘„6ð.—íåBÌx;7kÇÀ„d«®f‡:Ñ|puŠJ ¶ìí‹hi¬xé ¼ç!áJ7Ǿ„ Ã½ë*YaU*r“.#¸CæRÌþQpq æ`Ð&¾l,å¶2´y_)¶øþs´5óQ3¡Ï€½I3)56¸9¶&sÈ•´Á%ÈÇKy?'ß5³Š8ž>:-Ýo +—È K'fŒ3I†/8–ŒIúÉ$î¶4>w•l|k¶øa +X3ïi®‡ ~0Jä…YJ½RÖ~†j­£ÛõL§VÔy ò¯=Üißx¿ðöjë *Ì‚È8§üÀzáÝ˵íÛ Lˆ*Fðäê+o­‹g„y¯K5cÊg!#=ócYz¼86Îûå…s@øßFFbIóy`Áw`›é8MØ.@SžG€u}ù h-ÅŽÉàñÖízK`›ãæ6s£è¯zJúÅÁ“9«Ÿ¡­ò@°a5[ÿiÑ‹-„ß~Uy÷5Šë˜ #°óoÔ|ÕL¯V<=c6£®¢×.ÿ‡ÀAÙ6ƒõ_ˆŒö¾å6x 8:î! :àš’…{Ïøª)ëÛÙkßÍ[ï]Wº¾§&Ƥ3cÿè¢Ûœ–` ¯r†°ªUšD‚Ú¹ÿìc`»z<ç®f+Ï0Ù›­kæò~õÀóôlÃ$öÌ秔4…F‹ä8H—Ðsq¦žE[%jp–|‰€üéd¯×º*ýÙo4oB+7¶&þO'㟊_‘V­çÅÿX+ØÐŽÿqØNx7¾,t"Ô”Ã?ôdÌÂùz™6W xýGþVÃp +}Îçªy!tÊ6}í×MÏKùŽO7š|éJšbùJéWqN+%eÚ3Û @ëSH·×YtÓ–ËÖüËöÝË£kÖ"ÿ´~äT +endstream +endobj +2799 0 obj << +/Type /Page +/Contents 2800 0 R +/Resources 2798 0 R +/MediaBox [0 0 612 792] +/Parent 2765 0 R +>> endobj +2801 0 obj << +/D [2799 0 R /XYZ 132.768 705.06 null] +>> endobj +2802 0 obj << +/D [2799 0 R /XYZ 232.836 633.325 null] +>> endobj +237 0 obj << +/D [2799 0 R /XYZ 133.768 616.598 null] +>> endobj +2803 0 obj << +/D [2799 0 R /XYZ 419.664 158.666 null] +>> endobj +2798 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2809 0 obj << +/Length 1473 +/Filter /FlateDecode +>> +stream +xÚWKÛ6¾ûW¨7ˆURoíqóX$ +qÐC´DÛÄJ”—¢²I}‡R²\o³ÉEœ’Ãá7ŽHpHp·ºÝ®~çAU9 Û}@“$*ò2È«,Ê+l›àSXFÙzC !áÇAÈÃzg$d8¼;ÅÔw`Ò”æaF×_¶ïV¯·«‡…3H@ÏtÒ¨"YPw«O_HÐÀ什DIUvi$),¥fc|Xý¹"†RÐeñÂÒ¬ˆâ${¾¥`è"g—&X%i…J¶ë’„=l*Óp¸!2«øÖ)ɳðHªd^¡u'ə*ZÂVõ¦½rÓ¼5îLòpß·m¿Ž³ð÷'Å—,Šˆ’øG—L¬cí1à ÚÚzG)FŽÂS¥ý~±,Ÿà·³Ÿ ‰[.YÇý*¦/Ô.à‚‰GѶg3ˆJ€k ‚b߬iö +#ˆæëN-±Ç„DÃ͹~´ˆQUêC.‹H•{Ⱥ'Ⲉ²²ÀEúhaƒSÜ5&“NÌúxÝ»Ñ"ÄŒ03b?e¤;Tuû±Ga<²Ó‰ËaiÛŽ_ØØ1}¼b­u;6¼ñœÏ昄_•ùn`yY/‚ ´ˆò8EÞ^ñ‹?ÔƒØËiò§ŸE ð6¹<²&³~µM{‚ôÓû¿÷­~Ž¹ü—VÍÎoûþ©½QvÇšµ-o~%,AÍlüs\¿ÐBõ¸†ú…4ÞT”ÏQ?÷¹Û6¸XÝ©WšIíµqyáÙZq(YnµþíZ4ØJ˜”t¥áʤŒÃ3e‚Wƒ5gFZb(W€%ÇÏR{SÙ°gÊ-_î§sX9“øÂg%è/“EÜT߯F±õ>ŒûQÖZØØ…çÖÂe¤ýhãH“ãjÐ8ïJ"ˆ!Ç@[Ž±ó°‹› ’»ÝŠï¹â²¶.ŽQ\è‚VØì¥ÙŒe³°>Ÿ èuO(ƒˆˆCÖgÑ ˆ 0(ÆѺärÃCÕ¢ìîåK¹ÒcÈF(^ëÞ–ÝæÎÀœ1ëW|&¹ò¦%q¥Éô,oÞ_{ÔÐ_n (¢ø¤$©ikÒ¥C§½¨Í6ÐPÎ\˜[llœx-Œƒxs½†N^XI@ìxåN1)£’dÿÿP/î„^„P Ðl9_ºû|à—uüîHÜ +9jѾ¼Ë‘µ…ªëÕd3!<…/Ƚ|Jïe)4®k‹»åOª?(ÖEîZ¹í:Òù¦À<) èy8º^¢?qÕÉ­Ÿ;®#në Y}‘Á²×¾™ƒ€‡ƒ7ÑÒòØ«¾{¢ï…µ%ÞWMá/­H~æÇÔÿæÐ:%åùÿhYEIî`¸ãbF{3}Dm®wyÅk$R(¹‰“Z"â(üs‹gŠ‰ZÃOŒm€€šWý·ïh’.®ü/@/ +endstream +endobj +2808 0 obj << +/Type /Page +/Contents 2809 0 R +/Resources 2807 0 R +/MediaBox [0 0 612 792] +/Parent 2812 0 R +>> endobj +2810 0 obj << +/D [2808 0 R /XYZ 132.768 705.06 null] +>> endobj +241 0 obj << +/D [2808 0 R /XYZ 133.768 667.198 null] +>> endobj +245 0 obj << +/D [2808 0 R /XYZ 133.768 274.032 null] +>> endobj +2811 0 obj << +/D [2808 0 R /XYZ 133.768 242.103 null] +>> endobj +2807 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2815 0 obj << +/Length 1017 +/Filter /FlateDecode +>> +stream +xÚVËrÛ: Ýû+´”g*–=»K¦iw½×»¤ …¢NlÑÑ#‰ï×_€ 2RÆéL»HD$€sp‹GûˆGß6×»Íǯ2*Våðص‘PŠyåUÆòJD»&º‰+&¶‰àœÇWÛDf¶YD8=!„IákBlG*«é1Œµ~`ëàIàQ,+‹ß7ÿ³m±€ÖôÐ) ¡b³ï#Z<ó¨‰{ƒ kw<ÙƒéɬëŽû²Ôôì¾³·œKز4‹Ä:„µ!Žv™þgÞ“v ‘eºî³ê åGfT0\ÁTŠø+:½H^·‘@–Üãz¿—p¤Ý0öæÝ^–Yú!d`(TølÇ{ZÕ[Éã§ÿ'{­/uX±”å^e(äq²=)#+Åiqw Žųøª}#À<öu7ØÀ¾» Õ7I½1e’©† FÏ7¥0Ú_k\ ^–«Jsª4”?C „ĔȦZ%*ebÖà_Q +¿oÜÇWiEq¯¶Eº†*&ƒ¿Ððô¸_Ñ,—)…Ù! JT%©.´ÌÕÐFBïR#ד5è{&ë&¹OV?lQè˜Në<ØÛL”ñõ™ö7¦Åíõtiã²'íÒ¤ðeª…•LIŠžR¥”‚ Ž?1þhrÄéšœzwpûÉ zP•¬Ìå|À°l¬Zñø{G‰ïú:ÀC)^gXÅL±òõ¸i þúÁv{&9&SkÅÁDu({дÖnÂa‚wàèšé€·=žm0Öô:ƒÇphxoGÜÌîŒ8+\9àÚ48?Š"¾vxqÏ>ßtá¼Ðíl§mãg Ê°] œÞg‚<;7ÒB×Ó`V³~Fòq®y=÷/~^@› +õ'óQΪB•Ë¢²b* ¾™ÎôõèçÞßcw?Ñâ³ ×0¥‡àŸ¤ú$Jz“œ‡•ÿ ðƒÙÃÄëÔoUDí­wçÒ½œ÷¦{ ù‚ ~* +endstream +endobj +2814 0 obj << +/Type /Page +/Contents 2815 0 R +/Resources 2813 0 R +/MediaBox [0 0 612 792] +/Parent 2812 0 R +/Annots [ 2804 0 R 2805 0 R 2806 0 R ] +>> endobj +2804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.764 642.127 296.317 653.031] +/A << /S /GoTo /D (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) >> +>> endobj +2805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.26 642.127 397.899 653.031] +/A << /S /GoTo /D (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) >> +>> endobj +2806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.243 590.63 346.988 601.534] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +2816 0 obj << +/D [2814 0 R /XYZ 132.768 705.06 null] +>> endobj +2817 0 obj << +/D [2814 0 R /XYZ 133.768 557.753 null] +>> endobj +249 0 obj << +/D [2814 0 R /XYZ 133.768 553.145 null] +>> endobj +2813 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2823 0 obj << +/Length 2239 +/Filter /FlateDecode +>> +stream +xÚ½œ[oÛÆ€ßý+ l ÞîýÒ·ž¶)Pô<Ô}JƒE–[¡²•JjÚôן‘ÈÝÌZ»¼øÈ„˜å7#~³Ë!%¾øuÁß_ýëþêË7Ò. ^îB)æ¬_Ø`˜ bqÿ°x{˜¸½œó›¯oï¤á7ë¿š?vÍëvó~Õ¾õçóê¸Ù=l ­ÍQ·ïî¸úîþê+‡å #Xàf±zºzûŽ/àÍœ©àw}Z( »ŠÓÜ.~ºúÏoÙ ƒYËBcË §AŒcJuqÈ—¶º"æбà¸8çPs‘¼:ÝäðM›—Ë\H.™U–Ü3Ï]~àŸŸ7ÇCá¨N0hë¼òÃ~} 'ÌÍǽ¼<´Rp¾Cqh¥-JVm.­!EV|ÌZhæ‚)[ i’ÿÇ‘ ': !”x¢KÏŒVÝ° +y +xéL7ðE[-–Çݦ©¿pï…TÚ\ߢ~ê ¤s£¼Ù.¿5,ï?×g `¨»&½ç]~:.W¿Wv1Í.ÿþæçf‡Õv·ú½Ë%Š8¢L8/?'Ô˘Ë‘Èº0¦Ã?Ü$ Æuþ3®óå>‰H‘LÌ 4‚Ðcr¦C]ÞÑ´{Oïƒ4“ì5!0g½R0#B²w;Î^ +”d/F™Ù^’8¢½8!‘¾°1â\”RÔý¥NþfÀ ÝS`$ƒ‡` É›¨;<ž÷ÒáÓÆȉ;Ÿc qØÉœtMôÇÝá¸_£ä±“Ư É;¼nö²í+ïV€8ªžÏ­:E­êYp–¢iGpW“]¸ÒÌ£„êÐ:êžCsD }36Gô}Ç Ü #ëÊF.(c¸‰kn£%ÖÑoaLe°ñCŒæ…ò‡nå “òynå)âˆÊã8`P‹ònlm­©lé´µÜw(O”Ï Æs«V}΀$ç‡ ÊžÖª.ýhæ‚ôZœÅf½PL9Cc½2ðªšð7Çݯ,ÏÆ7NÍï™Ü 0“ésnÓ)∦ã8„áXt^9Suqvr0 +â¤yF¬ðjDéÉ 0’äC0%®kZ \0ÆSçuí53ž¦—f¸eÊ´MŒí¥á?NPœ‚3)Ž9gVœ$Ž¨8ŽCJ¤8lTÎÔP€WÂéºâÄIñŒ˜cbλ§ÀHŠÁ”¸fn/*>øRñÓÊOl¸ic jš†Û)6cÚ.ÇÓr g;’¼Û`Œhp†1·Áq´gqƒæØ3×Û!0p8æèò6z&ÀˆÂ’7çëþŽæ-ø c˜0±Ù¦eïÍááþj`m×b¿~!ðéßÇ[Éov›‡S^¾|£ñmÃ<Ÿ¿p®šò.ß ìÚîcogýžê@dª8ȹ«E±:à8ÎËIÔŸÓµ‰ +Ö…™Šw´ç(˜SȘ¹FÌAÉž +AÀ‘*Ä Ž!©“ž×kÄhâB€1&^¦ÃÞLršæœpR¸6ö?»ýñsæŠ ÷ÃæŸõîñüö)­Ñööuõô¡Ó{ +ôä=FŸÙ{’8¢÷8!ñ¹+„ªy¯|éäåAt¬í)¨“ù˜:´¨ö¾gmO‘ÄÏ’Ç9êÑùàÇäNXÛ±<Ï|©þi œ(¿fAÓ£SA0áÛÞÇáÃ~ó||üïÓ湧\ñp½?]èwOÀÏxç6ž"ŽÖø,!nËÃäU9kMéšTxÝq-@…Ï¡96>ôOÀÁá-¾gGåL« ?¹ <ŒŸîDáAV+iZvÊJØOdÂg²Ÿÿnü.ôìúe'`M²cÖ¹e§ˆ#ÊŽã?í%Œ­­MMyŠ¼Cvè${m²5‰î[ØS€$Û3ð=8åý¨ìÙ1¿f.èch9±}§„`^Ñ´ïŒiBÈç÷Ó…ü±w†_§žõ[O€œ¬ÇÈs[OG´ÇÈz%«OÖÙÒ½ciº¶¡€NÖgÐ?!$ƒë¹)G’¬ÏA4nÙ‡ê%Q9{@^·~4sÁzê‰M?é㊦éù:«ÔXX-Ÿ›EýeÂЃ³µ©¿Íâ«Mg ÀOãÏ\HâˆÇS(¾%¯euæ2ÅÇíT¨W +èT2h…oQ©{*HªÃ@eOêzKo<óe^²©wí¤ÑLjšžžt–ÁÚ€‹å{®ëû|' ¾g´sûNGë{‡Ù#8¾ú´XóÃKß;ºxÐÑ÷Úñìâ$ôùN}2({R™ºï£™ ¾Ã\OìãIi˜64}<ˆI©2á+³ý‡\¼^í¶»}q¢¿þâíòîŸw׃¹¥ˆ!•ÃÜe€"ŽXpƒË€wÅ[Q®ã‘[ +èT2è±e€$•a ƒ²çDýr€•±çwÜwxñϪ«ÿWÝwî)£æãÜšSÄÑjžÅ!ŒË.ñMõk ²¼híÒœ:jžCk‡[ûÊö´ö)@¢æ/@ŒÍ½·c²\ýFÞxä‚å0†u{|>Lîhz|ÂræµC–o]â¿ú0è볨IvŒ:·ìqDÙqßóÕŽ´,Þvæ]ÏßS 'Õ1²Ï~gÂöÍçIô ?¢c«èHQÈœ“õ¯ØŒ.h®à”õ4¿ñ> endobj +2824 0 obj << +/D [2822 0 R /XYZ 132.768 705.06 null] +>> endobj +2826 0 obj << +/D [2822 0 R /XYZ 133.768 138.68 null] +>> endobj +2821 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F46 2825 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2829 0 obj << +/Length 2090 +/Filter /FlateDecode +>> +stream +xÚ­œKoã6…÷ù^Ú@‡åãò5»¾]MWm1Pl91êØSÛifþ}¯,ŠC7†w¿ï9Òù$’×røì~Æg?Ý|{{óõÒÌ<óon×3¡³ÆÍŒ×Ìx1»]Íþ˜{&ïç|þKszX¼“šÏ×O»åi³ß>°r®añ×íÏ7?ÜÞüs#°<Ÿ‰¤œ`žëÙòñæ¿øl…/þ<ãLy7{>¿õq¦ß*ºng¿ÝüzÃÿçQ`­å…Im™TúU&Ñ–áɦòg +|ÿùÛ‡vñNávœš»íù®š/÷»S³Ùà Ã;vOwí¡Ë~Ý?÷Ëw¿÷w–ÛýòïáûP§Ù.Ÿ¶Í)|¾éowý{ž7ëäåûÍBêù¿ ¡çí®óß9î÷Bï¸9,„›ß?=¶»ÓŸ\ó#þ]Þ÷[#ñåGôßß;´Íq¾oÏ®»çšþænsß?¿Ú¬;Ñu{hwËPá®==·m(òÍÂÂü߃ìßÞìVOCÿhs /÷šÃêy!8nǶãñi{Ú|Ün–M·7Ø4EÚczJ(º,â»"Î2—+Áj¡ÂÈ1œ ´#˜r¶ßˆ‡0_¸—à ûõÂRÓN^ +ƒ{–Ÿ#y¡¬Œd²2žqáÇ•GŽ{°xd–ïë‘ȱ‚á¢2r«€)Þ|,t‹{B©~|øЬVǵêÏ6Ý1(ð„_õñ j]wLf˜ p©H ¡2<¨F".T¹›f¡Xt„¬!ÁVÒ`ã^ÑÐ` †ìðLVE³HCêLY¡@5Òª +•¡¡Xt„†nò5^AƒæÌ*OCî{Õ=ÕÓ°êð*"ÜE"Rw`L†ÕHÄ¥ªž&¢Xt„¬Q=?P‡8Màû¬ Óµåþø„Ψ’âJü^bü©0à2ùÈÆüSYiœŸ Xu¬!œ©$@Ò$ Ò3#\ àxž‹@à%z;¶^‹ÈFRYi=Ÿ& Xu„©™Ë×xBuçfn›–l§¦˜/‘€Ô XÁ3ÈFRY)­˜& Xu„¬ÖW€#µ’@Cæ…øB€|û|€ÀV„!µ¥¥ÍÁ@ aHe¥Óv†bÕ°†ºpÇ0AxÉ´+èe»Ùþ€ÂÊÀ…aítþªCþ×UCüå¢/ãïjX[Ù>‹‹aiâwœI!þtBøªô œÄôS'J9‘‰Ÿ@6ÆŸÊ +“Y”«Žä5@¸Êü àðEÓ0c™Ó1þ‡Âü œÄü'xLfÚ‡ª1þDUz;½(IkpS¹"Dç~­ø°n»Æþ§…Ô›‰ù§fÀòÌz@5柪J›;üKEGòÇÕ'åq¸¢éª ½Òõjóø%üóÜ/ÌÏ \á€ÀU!u%Dn P \U8(k(]Ù7‰~8M[gÖ…>韜«ýþPx& p HÝ—YP¨F®ª‹Ž€5p7W ÷M¯g% †ï®×ͧ7¯ )\ERWÊg@  \ˆfÅš#` •Íà1š1pø“iƒ°”W‘ƒÔ•Ê|yD!9¸&:pP¬9ÂÖ¾²Q¬|—!ÍÜPyT“nà`¿zóÜ€ÂÕÀÁ…+¡2‹ +Õ„몄rÑ—$(‡ ²a¬Ðu4 c\Š3eà +y}˜X'ø|ER_*Ó-¢(\ˆšiŠ5GHÀÚU6 ”ÁŽ¢iŸw‚ ­Ò‡…žþ¸?½y| pYH œžgh 4\Èr;}}A¹êX£»¼°Ž­pP£ÁAfLèœnWùƒ¹C½­ÈBj rCD½fášæ€A©äÝ»Ê.‚­¤i!+¦DX9o÷÷eëF +'1ùÔ Î¬sÙÈÆðSY)Ôôõ‡åª#ùc -+{J:ÆhZÈJáûLŒ_ðB¬D+>ÓB¤Pù'ªRšéÆA¹èHüXCØʲæìœ$~á™áaóq°~ãÌÀRÄ µ*så)…jÄàBUN•P.:‚ÐÌÕ.¸ÂA‹¦•¬8nškåûîBÃç·Ï ŒERc^ú ²†TVs˜î"•«ŽÐ€5ÀTvdw-½ é'KÌùÐK=ìŸv«²AÂË@À…¡3Ýd +Õ€ëª!ÿrÑ—ùw5„¨ì&KëP„fi dB õø¢‰x-}'1ýÔ‰RéPÈÆøSYa2ǹêHþXÃêÊ.²ì®•ç4]diñvø¹æ_x]…•@j> endobj +2830 0 obj << +/D [2828 0 R /XYZ 132.768 705.06 null] +>> endobj +253 0 obj << +/D [2828 0 R /XYZ 133.768 667.198 null] +>> endobj +2827 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2834 0 obj << +/Length 2023 +/Filter /FlateDecode +>> +stream +xÚ­XK“㶾ϯPU.T•Å>§WÙ»Ùͺ*^gFN¶ I,ó¡ÔŒõïÓ/>¤•“8åÀn tý¡Aµ:¬ÔêÃÃ7Û‡7ïƒx•ùY Ív¿ÒÆøIœ®â,òãL¯¶ÅêGO«õ&ˆ”÷ý:P^Û es`Áûn­S¯­ùëã×OÜZn¿^ë0òþ!Òoß®7:tæEÑúçí·Ù>üëAÃNÔJ/VÖ~¦¢U^?üø³Z üv¥|“¥«WZ¯LC5N¬VÏP7ÇÑ¡oÂ8¸:O”ø‰æóh¥þˆÁ1xIØtÑ’jµ À¡A:.ækYîc3°ýâœeÛÈlµð?NÆÝg<••ëÖQäM”xßÏâÏ-¬µwc$žðº;;\íuäýjs×íì¾³ý×£ÃIiæ GÇ+g™òÊ^2ÒÕ;Wüê/ýàj8B¤Þ{\GãxùúT¹/ÐÒb·Ų̈įçœi»âÚÏ1o´:ìªË†æŒòŠA±×´èðNry¹¿°ÔrÓ‹]±§í¸pye;v8È9$ÿI© ™s®ëΧÕÏ®{)sǺ§ö|ÃGÂ{dZŸŸzDæ dï»8¨1’2éh‘W^ÐŽ%·ŽÉâ‹L¡¼Â‹íãwGa8”¥®ÇH¢¾­Ý4ë.*ÊüÈuîwš¶Ù,< ’Eôà+oˆÐRïO&?B6¹=Œ ÿhOaÖ ³û¼+wNt¼1TÔn8¶…ˆ96“¬Ähˆ˜ +íœz0ÄŠ˜ÖÓ¢ô +Ô Ø¡ƒÏe5ÜÛk9Àñ +±Ffr”Ì9‡b"šy\è}øî‡QÓVpTb@Å 3o ù &Pÿ];¸Ñ”Äù eµ½p‡€Ž:Èñ»lÄÁàÔ;Ús/*H¢°ü߸vLèë4™®@®''øùï÷ÍÇO°?xGg r’ÁPAEù +ÀÉÀ^MYšKÔ3ôAOù‰:[U,aßšk(³ª±5Û5Œ”íÊ%“ri”¿O¶ÃøÿFîæg pV¢ç `äé$”K=3⊣ʦ›ª8ÛŠe£pàäT0AÇYJ2ÐÏ«‚á<9œø£jˆ&Ëï¿lòê̼ af‡Þ°Èv†›*Èt™ZÊD¦kÊíïz|33ü3bøGªÇÆ:jlß¼7f•øY¢4b%ô“4¼D¾Êe’]c%¡¼/˶Öq濺2wSbn"?IR°•Y(v0o'-qªS¨øÀa©¯î„U +d˜ ôø"„N;S,ʘ ÃñƒNoké]c““á‡Jò´MZfÖqºÓ’›Ö)¸G‘ïD|Áq°`aÛãì&úMtnJühL굡Óö-‹Ž\fŸa•”Ü ›’dsrƒ‚ó ‘AØFÑmÅ*óþÚ¢åW7SS·•G·S$ùŽ»Ê7÷Øyý,moL¬¨Êdñ&´T½<ÄŠÂrd^3qÄHŒL‡Æ¸O K2Èœeå›”Èý‡^®Ü)Zþ+¢\ÆnS×ùùÏ<.Ô‹q&òÓ8†á4l>âçÔÅ~–¦ãHÞ´w +c:¯\(c¹Xàºê¢mœ¨n¥< ½¿Ù_øŽc‹µ6 s`ƒ(ß—ö,ZF^øi^Ÿw®ÌmSIÏrƒÎ«„m&æœÐÅýýH;pË +ÂÇ’;#ÆÀïæ¢ø.Ù—îMÙþ¯\7güÿ\´%ßÇt=0ëP™^_AV³Žë`z œ,ƒ#e#¾” à˸;Èùé³­G„Ó®:ùÔ7û¿ZÉ(?ÒÑ8ë«;ЄâJÔ49Š°÷†)3FæÃsõÜ +ñá [9¼ƒ«Ú2·?sùÐn„âÂÔá©Å]‰t¤á½A/"ìà‹[Y@)ªQòO$ຠÐ(,€Æ¡*¥KFc‰­Çg uæm“ ¼ìoži\SÜ…q±+©±/aÄât;s-8§Äàx†R¨–ÏÃP{¿4sÒ†ãåN%¼/ÁçÚëDM\Š=®FBD]מÇ«é‹Ì 5O¸È\4±k×:ªÇÇ[x|*ŠÑ—œÎXþPé²w¥À TèMYP,¼í㜛‚ +øO<}Ú¤2“/áuŽ§ŒvcYO‹/kz$üà¡•­¬†üwçBr™ºyΡ„ð íÌŠbR´׸®Ìeò¸ßlt*Þ“#ÜPÊü›)ùáõÛ—ãâø:šÆ‰åsh™çwÿ§eÀVæ÷üMÿ¢Áõ”˜tù-Í|‹{>à!é¿„\ Üngî¼s9wBn´z Ì£Nù òMzô.ž®Šz·6‰·©ÊXØÉ]ñ®ýõ¾½=ò¿"újç +endstream +endobj +2833 0 obj << +/Type /Page +/Contents 2834 0 R +/Resources 2832 0 R +/MediaBox [0 0 612 792] +/Parent 2812 0 R +/Annots [ 2831 0 R ] +>> endobj +2831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.024 194.519 290.532 223.584] +/A << /S /GoTo /D (io_8h) >> +>> endobj +2835 0 obj << +/D [2833 0 R /XYZ 132.768 705.06 null] +>> endobj +257 0 obj << +/D [2833 0 R /XYZ 133.768 667.198 null] +>> endobj +2836 0 obj << +/D [2833 0 R /XYZ 133.768 644.012 null] +>> endobj +2837 0 obj << +/D [2833 0 R /XYZ 133.768 644.012 null] +>> endobj +261 0 obj << +/D [2833 0 R /XYZ 133.768 644.012 null] +>> endobj +2838 0 obj << +/D [2833 0 R /XYZ 204.891 489.692 null] +>> endobj +265 0 obj << +/D [2833 0 R /XYZ 133.768 475.022 null] +>> endobj +2832 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F41 2599 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2842 0 obj << +/Length 1437 +/Filter /FlateDecode +>> +stream +xÚµÙŽÛ6ðÝ_! /2suAZ Ùu€Ý5Ò‡$0h‰k •DG¢vcý÷Î#Yòz‘mŸHÍ ç¾äX[˱^Ïž¯f¯¼ÈJYÁ±º±\ßgq”XQ²(u­Un}²]‡ùó…ë8Ž½¬•hšn¯æ /tìkÑÌ]Ǿ-2aW²SE-ZóõÙ åõU § "?í0šY½™½\;Î\бܑT—¥NheÕìÓÇÊùÆáibÝiÒÊò uñai]Ï~Ÿ9Sœs¦„1óüИ¢ä|áû‘Ík©v ¼þØ72m+éSöo¡}W¨dÀ;>÷ÐÔzKdÄ*Ûñz+Ì]̽о»¡-šƒ}v¯Ó'E•]NB@­õë;ó±|nÓ.ø$$õw‚稵q.2fYÌ"/0d+Íœýlî‚„WæKIY‚¶EŸ­še0æä98ELaF? h×7ž)¯yÕ?—7ÒÐn4í¶h![ˆ†×¹a3}wÆHÃÅMíM¡ÐMìÙéçpÕÚ’¨’±Î¹âíNÅæ‹tX‘A€ªøÁ¼Ø •ñÈE›5b/ê̸… u'Dmð(l¬id4›i‚BÆá•tÆ+ꌧÖ/ËgWtyoÎû%.¼ç1¼=Ú‹_¯//¿ËIçˆ.tãfËLñÿe9ã*1^Àü 5bžá«4´+Q«BÖ"7Ÿ|#Ñ“¦rƒÏˆ ä¥9J(³Žo x­À3¼É‰¸U Vay˜G¡M°\ +’Ån.í^dÅÍ„Œ8KÅ;´ÓÆ‹<åxæ"+y£û~šE>ÀÑßõaNð3·ß ÁÐ<”—JÉ +S¶Oמuο4ÌM™ë¥æ†S&sÓ +c"zý÷±¾c,ëŠø±¹d7ñòÿád*E`†Žøp¹|·rµOÞ'ÿÒ´²®í³‹ú®6äÈ$F!ðêí8#ÈsXàù=MųFKÙ;XWë}3s[í +Rbô¸_;35'-ù~Ïý¡€,Ò”%I8 Ë£a9Àt{Êo›‹!­Ùîׇ}¦ãáFà…«Ð!õT¼Üb³€&&;¢•ŽÁcÁÂ#¼ÎE¼ô£8 Í(s-ê¼Ðm­È;l7/Wáï5ƒ‹¹:©ŒªkU?VÉSº­Á®fœÛáh #–öi𔢂;g³¥åóŠâ2Ê/ÃÉv“€ž b–xnÿâ\ŒeÒ°^“ |áy.óÜ@gEäÑx~'ÕINn» ¬ÅàÔ„9¡7N7Á¥Dêq㸻§q×xsŽ·¬È”*‚wœohWŠiÎIŽ4芫lw}&úÍ)JhÐ’’˜h…½P†37*WÀµÅ¶.0‰2^«ò`Ð;QîOÞîe£hV'6ßïË"㸓ÙM#«szs°o$÷šØÙu giŒQÕK—?,]Áqé‚•¢-²“ë»Õ …îe´ŠvÕ¦¯©~ÌS)‘BS¤Ãi홦{ò‹±^‹šoJqœ¹í0V10Y¯ó¢ýÅfE.·ëÅ9OÃŽ!ÔxV¹öç1… +ðæ×±ÿû…ûÉø—1I™ß¹×¢ W‚ÖpY÷ãÚÑ AÎ Ìá:O<ÿ‰›˜/ÏqèvƒQ6}ˆ°K6s?¶e±!ZÊ^Èo‡­¨OMþõI¥ +endstream +endobj +2841 0 obj << +/Type /Page +/Contents 2842 0 R +/Resources 2840 0 R +/MediaBox [0 0 612 792] +/Parent 2812 0 R +/Annots [ 2839 0 R ] +>> endobj +2839 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.421 270.615 347.234 281.519] +/A << /S /GoTo /D (io_8h) >> +>> endobj +2843 0 obj << +/D [2841 0 R /XYZ 132.768 705.06 null] +>> endobj +2844 0 obj << +/D [2841 0 R /XYZ 463.19 603.745 null] +>> endobj +269 0 obj << +/D [2841 0 R /XYZ 133.768 587.203 null] +>> endobj +2845 0 obj << +/D [2841 0 R /XYZ 133.768 198.149 null] +>> endobj +273 0 obj << +/D [2841 0 R /XYZ 133.768 192.699 null] +>> endobj +2840 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2854 0 obj << +/Length 1773 +/Filter /FlateDecode +>> +stream +xÚÍXYsÛ6~ׯÐL_¤™ÁAðȤ™q.7™¦Mm5yH2˜„%N(R!©8þ÷ÝÅA‰4*éKý`‹°Ç·D§ë)žOž.'_òpš$„ÏòzÊ„ QOÃD’0aÓe6ý0c”Èù‚QJg/ Õlæ .éìÝ<á3UçêªÐ D3Í?-_O^,'_& î Svt&# •Ót;ùð‰N3X|=¥D$ñôÆ°n§"V†‹éåä¯ í JÇ•áBZA—Ýh+]^¶u^6yj§×û2móªlì4­¶»¼p¬me¿ÍN§ùGJ¹Ûs6gBÎÞ]ØYµK«L»ý©¤—/^=°³g¿ûÑûç°Ä_°ˆ„<è„«ñÆ(«™œé/û|Îåì+þS….[Ë°Ui]5–§Ý¨v°mßèÌ’òÒRŽdêù³g,}SáÉ7Ú^ÂàÆÚ²´Ó[˦¼deÕZJQ¥ª…[¼"à:é¬lîe•3[^®‹Îêi±Ï´7å…îÛÂq—Ñ0ByÍ(œmTcd‘S¯„.ÎÁÿBù?–DˆÍyÎÑ%h{·Ýâfš€Ì…ßt]ÕÈ<8˜sÂ%ó<«•.à+À“®ëý®mŽ/‚’K¸ ñ›ÁŒG$evšR ‹;ùÒâ$¥‚ ÊzNWŽ%DÐà \–7? `DÒÈï& ] HyZµ¢ˆÍªkürĆ!=qÙ€ ‰[† +h2WAÔéÄ$%1z:=Ñ("QÐ\}­T!›‘“1¯{ŸŒ¨Ù;Ñ¢¤`„‰¤ÐAb1Œ„°`ˆ-c„ÓÀ'qúëo²vUƒ1ÛS€Qr7) +±+TêÄ÷ܵØ9Hâ"nT›n²j}÷Ú!hDd %F8øí·‘$P hm^P=òÆ~~ÂÙͦ*ÜÊûy ÇŠf)Ë9?ßb>ÃéÙÛW~/§.Ÿæ‚Ûž…ö0|Ópfœ†›d‘1UŽóJ÷’_èãj_f>ÙàKH’DÒ[åñi^¿bð»E{×H¨~·cSê­_¸ 2* zÐ$9½Øß½ ¬Ä"‚¤«u`D)fh^ ¯Êõ^­ñfÎÀ™]2©P\óu‰iɘ¿ ù7U[oÖ™%¨:Ýä­NÛ½ ðîê*ÕMSÕ;?ÇŒ„+Þ©rÍXÛêmUcý %”~ˆ’†à¦„Gr¨F[­LÇvUØŒl}A}ý®ójïØ˪\4-$~#6òZ¥oýq•ýf«déÏ럶ÛB}áá»Lµ®CØæ]›â+µÉD8x[WëZmíä7€khŒ»ïm_^¹Fš¦× tÊgÔÕöFíÊ/øV+Óiaw8Æk}PЋ?"õ£^p‚Â*‚¤Ì”SÅÜ3„²åܵuHMhÛ[4à‡Ovö«ýøAúŸAÌ„ÃJ€š¤Ò·Ô»9T¾rg-4¨W˜¬ö­góæQ€ð£l9pb£¶n¤¯‘ébágíq V+eÄÑV+W(„Ù‚2VŠŽŸ I¢(6WqîrÂU«}¯~±˜`2‚Å…{.õPùθ7¦•ED¨r¯ +×çWŽ éPÄ­ÂîßY÷ªÚ·'úÅ×Ȧ,pNw¦³…¦Æÿ‹"¿r0úìë!•r”Xô¬GË\—©»Ðv}é;uÿMÀ“üNÏZéºttõc¬7»õÖ¤@²yâc?!A(k»£#´ïðÝ°·ž¿yñf4àî% Dœ•øyL™ÚÐd@‡89à<Pa“×·$µÆ®µ•ûúÝÏ ©çKí¹¸ »VÍÅÕH®f*ÄQÃݳ)O•<‰ ¼šeÍ*! µž—µnìÌ·8”«=‚î¹v·Áçµ€dñû˜®¾×ÌÄ‚„qøÍÌB&Ò•iÔ'Ÿ³Y§¤¶hãª2O!/XS Nd84•n7U6=W‘áQû3ÕéÒh{ÒXb[aÅøGefÌ®TúÙQázaJ”™aИw$5Ï~GE5G^w1'Lv]!…W¬œƒ{ûG¼r ~$‰ÙÇ=¬þag¤÷]LæÇßtž·‰ˆFÞtÿ#d1 ØYå$ “ƒoÃ0îú%o 3#Èæ+¦­AâÁ( IoûÁ#Ý´’ýœ7úËÄy$~äw3ÿÃ^5@ÄÇ¿—Å >_ŸëR×ö%n~ár€^növð\»¢Ø£¸xÄb;㔺‘éB|ü(Ó·Ôs—Å+×g>¯¾Ý®u9Tù¥#— +endstream +endobj +2853 0 obj << +/Type /Page +/Contents 2854 0 R +/Resources 2852 0 R +/MediaBox [0 0 612 792] +/Parent 2857 0 R +/Annots [ 2846 0 R 2847 0 R 2848 0 R 2849 0 R 2850 0 R 2851 0 R ] +>> endobj +2846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.109 607.501 249.99 617.782] +/A << /S /GoTo /D (group__avr__interrupts_gad5ebd34cb344c26ac87594f79b06b73) >> +>> endobj +2847 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.595 607.501 478.476 617.782] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +2848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.668 565.344 313.414 576.248] +/A << /S /GoTo /D (group__avr__watchdog_g9e52c54d10b6a6a7ce04aaaa4abea51f) >> +>> endobj +2849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.496 542.803 232.287 552.337] +/A << /S /GoTo /D (wdt_8h) >> +>> endobj +2850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.617 179.062 377.296 189.966] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +2851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.521 128.055 226.2 138.959] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +2855 0 obj << +/D [2853 0 R /XYZ 132.768 705.06 null] +>> endobj +2856 0 obj << +/D [2853 0 R /XYZ 241.53 544.586 null] +>> endobj +277 0 obj << +/D [2853 0 R /XYZ 133.768 529.317 null] +>> endobj +2852 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2864 0 obj << +/Length 1455 +/Filter /FlateDecode +>> +stream +xÚWKoÛ8¾ûWÝ‹ Ô %Y¯{ȺM6E[ì&n/iaÐ ÑÕè&Æbÿû9C[¶•íã`p4çù Í{‡;Wƒ?¦ƒ³K?rR–F°L—Ž,Ž'JC¥ž3Íœ;×ã,Ž<ιû¡®F7Rmš¡ºU^ÝG~ÈÝRäÕgrøyÀñ¼ÄwÃdøeúvðf:ø:ðà:îxõKyè,ÊÁÝîd°ùÖá,Hçш–N0QO,œÛÁß~`3ï³9Œ™„hót% ¦$c7oqE[¥—À}zÜ[ä)Ú[4R(Ù‘»¥T«:Ã3V,“Ÿ9÷+ü6ôCW4¹˜’nË+\ÿjêûF”øñ^–u³%M+¡vB¤À»‘a ɃE]–µVâ¥î\ªG)éC­ô­>w•q F.ˆ¯óB6-~êl\_Üà‡¨2$.†^ºŸˆ}5™è„1üšXÇA³@ÖJŠL6V!÷ i-0¦k Ñk;˜ØJ, +T®òºjÏMIØTÚõì2œ˜¥1÷t>A—ï³€“®ßòåpq­i™W2ÓžÍfדÉŧ›Ù +NoŸáj¼ÖÄ„ +Œµ3eãhLªQ%Ê]¾»¸ýsöúÍäÝÅÍ}ÉÓ^÷l¶,D»Â§®&k¤¬2°³çŠ^ë¯>|œôÙüçÒè'k»PªÉç%Í•MXC]–²D+Ì¡ãw^µœNјÅid›ÍôXCf©¶Ê×k©ˆ½’‹YÖ XÇQ‚ÃÓäµù²rÇb]¸}°Ì°ÍI7Š¾-Å¢©Ñ5¨¾½k~Ì’XÃŽ‘z&¾§Iy¡=F ’¦îc^šJÀ¨E! &[ ¯‹¸a`vö°ÌlÀƦը«y~ÄÆItÒz ø®XCŠ× [cc@ÏE+‰4ëî`'¨†m\ÊäXŸ•ˆû@n@ ÀGÀÇpIÑ¶Þ ð´)²½p_&r…HQäúáF[ÿX@&þ!`œä,¯¶B¹Í„w_ðëw\c:§¯(©‘ƒ¶ùZûˆÔĉ’ð—¦ásÍŒSjža‚ nÀÒÖÈéPŽ"±9I\*0£ÑfìMXnª…F\üÊi…F{IŠ¹É©¾¸®d_tö¯€öl6™)Ñ>`ˆ¿ÕyF Ÿ4çÐùÇð¼”y~z|$ Æ`t„èô¿?€VÝ€×ÖOrX~Ýäº)±3 Y©Ãv&(|½ôÉiÔÃNÔ;ž¼)Gœ¥{x/°0ŽñÀ‡ZÉóãCº^Æ®[QŸ¹•ò(Y8€øظ꽨6¢ &¨‰ è)mYŠ}kØõò a.L¬‡ð‚x·ÖïLÖÒ5‚q§,‚  ²Ð| @bU«íZ"צù‡-®·tCêFb£1ZsõÃUs ´jÆBÐÅ;ÄÐÛ&0æ‚7š-Ô¨÷‘¶wQ{í¼n»–‹|¹%&âhDœ“74(@®^ÒA㸦^ØŠ}¡§†—˜©ñ÷:/êÞ;ú_š•Nga´qSU¶D„:*¼˜˜dQ·FNÐÖbcUk,xì{+ðqb§¾é´Søñ–î¬wÌø~Êü$941 šwõâa‡í7ò>o•~é¶çcžXñÁp¶( +t®Å]ìMkLIÀF ç^V²1l(<˜|Ö³¿lê©Æ I«y—'ÃË*dÏ·ö6û¢9ýdmÕº6!hò•„·HÑØ{¶øðhH¤ÝVJ<¢Mï¿RxÃÅÁÏü'µÿŸ#@õ éþMRXp¼2S2;DœéjƒÄk¹@bŒ‹ÇÏýàÜKðË眨¥ž-Wa†T3 bwTäsÒ`BªUÖO[HÔ±Ëÿéi¬ +endstream +endobj +2863 0 obj << +/Type /Page +/Contents 2864 0 R +/Resources 2862 0 R +/MediaBox [0 0 612 792] +/Parent 2857 0 R +>> endobj +2865 0 obj << +/D [2863 0 R /XYZ 132.768 705.06 null] +>> endobj +2866 0 obj << +/D [2863 0 R /XYZ 133.768 472.334 null] +>> endobj +281 0 obj << +/D [2863 0 R /XYZ 133.768 465.437 null] +>> endobj +2867 0 obj << +/D [2863 0 R /XYZ 365.547 189.242 null] +>> endobj +285 0 obj << +/D [2863 0 R /XYZ 133.768 173.017 null] +>> endobj +2862 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2885 0 obj << +/Length 1530 +/Filter /FlateDecode +>> +stream +xÚ­X[—Ó6~ϯðÙ>`ˆ+ù–xûÐÂnÙ.§´<g+‰Š-ÉÞ%üúŽ¬Q›À ”—X#Æsùæâoåïjôh6úùq”yy˜gð˜-=Çá$›zYž†YN½Yé½ñ) ÆQJüÇ* SŸ}h™hª­Ý{¨ß”ø¬´ä³–é†K¡$4Ëü4ÞÍžŒ~Ÿ>Œ(¼”xôà%4ÌIê-êÑ›wÄ+áð‰GÂ8ŸzwkíÅ °Rs±ò^Œžj>|v–ı7 ó ¡=KÒIÅ©µäæF±Õm¡‚qFPBÞpÁKÞʪhxÅ,Õ +ÍWÂØe(.iÉ«†)VÎxÍ^p±`²®Û¦0F[Žßhò‹±«·†×L}õÜRW>¿qÞaˆÕP 0Òäöå€O®¦Žp±vÈ]ÈVì˜ +]¿%)9S1"¥__t`ávÃEhÉRÿAßqz-Û +3zÎ윮ù¼BªA+-*a¡"g¶’Ff“¦n×ÅâÎT‹¢{iØóΠI˜çYçš,‰­ÚɆ/šI§P, ˜Ó¤xçÒ(%¾ÅOƒƒ5S·&_˜=QÄ>»D34µŒ…¶4`R#k¡˜=³K»ÅMDçÇŽžo-‡E2l (›ÎF: +gõFªBmáYuiíðÐ!Z`T¬³cŸ˜ÂˆØŒ­Zù'”.VÁ8Φ=ùÚlå>×ö¨s—åj&JcpÇ!ìÁÿ†üÛãðÝýZš·Xã[l6 U8¦ïRÉìÊ&èPX,¤h”¬,Ñ¥<´™ƒStwB:TO(”I¾XÛӺغ…m[îR‰«La17tW©4xô%þKŒ€ç#êba–ÅõûÓ2óhÆIu(‡º3¡‰7Žó0Ê£}»¥„|c¿ÝIïÔ‰\ÖCrD¹“î$¹©`Iê?³r®!À¿šZQ˜¤ hd”wÃA}3Í]­°Ë?¿yoÆ)¼í)ê¾Qr¥ŠÚÕI¦Å=c Vƒ´•àŸXØØ€x±+=í¦,gÿ, —®B˜T»qreÛ˜{¬wñ3.Âjhѵ½bøŽ³ügº pŠA÷µ­×ÕË0 Ϲ»lÅ K@V|‡I#Rsaʺ)ég')Ÿ¨ü›ýB¾aª.ÄÐæÜÕš/FÂÝ-œÉû\þõ$“ÿ£q-K¾DeŸ^¼¼ÀNìœûúræ¶X¡ªíi¥'jôz×ÐÜ\-`8*Ü”ûÓ=¤n +ð:ÛM¶ƒ^âZãqŽþ›ÃðË îß >ÅâéáÓ<Œ3Ç•]_wås¶níâ’-ì"Á"BΣøœN-‚«®ðï§v RñÄW|ŽæX™.åÇ- ¢=ÓÁäÿTëe~ +endstream +endobj +2884 0 obj << +/Type /Page +/Contents 2885 0 R +/Resources 2883 0 R +/MediaBox [0 0 612 792] +/Parent 2857 0 R +/Annots [ 2868 0 R 2869 0 R 2870 0 R 2871 0 R 2872 0 R 2873 0 R 2874 0 R 2875 0 R 2876 0 R 2877 0 R 2898 0 R 2878 0 R 2879 0 R ] +>> endobj +2868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 347.208 465.252 358.112] +/A << /S /GoTo /D (FAQ_faq_volatile) >> +>> endobj +2869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 327.285 384.715 338.189] +/A << /S /GoTo /D (FAQ_faq_libm) >> +>> endobj +2870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 307.362 356.571 318.266] +/A << /S /GoTo /D (FAQ_faq_regbind) >> +>> endobj +2871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 287.439 334.863 298.343] +/A << /S /GoTo /D (FAQ_faq_startup) >> +>> endobj +2872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 267.89 297.224 278.42] +/A << /S /GoTo /D (FAQ_faq_use_bv) >> +>> endobj +2873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 249.65 271.391 258.497] +/A << /S /GoTo /D (FAQ_faq_cplusplus) >> +>> endobj +2874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 227.67 312.267 238.574] +/A << /S /GoTo /D (FAQ_faq_varinit) >> +>> endobj +2875 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 207.747 396.331 218.651] +/A << /S /GoTo /D (FAQ_faq_16bitio) >> +>> endobj +2876 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 189.762 380.83 198.728] +/A << /S /GoTo /D (FAQ_faq_asmconst) >> +>> endobj +2877 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 167.901 478.476 178.805] +/A << /S /GoTo /D (FAQ_faq_gdboptimize) >> +>> endobj +2898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 155.946 227.885 166.85] +/A << /S /GoTo /D (FAQ_faq_gdboptimize) >> +>> endobj +2878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 136.023 336.088 146.927] +/A << /S /GoTo /D (FAQ_faq_asmstabs) >> +>> endobj +2879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 116.1 377.433 127.004] +/A << /S /GoTo /D (FAQ_faq_port_pass) >> +>> endobj +2886 0 obj << +/D [2884 0 R /XYZ 132.768 705.06 null] +>> endobj +289 0 obj << +/D [2884 0 R /XYZ 133.768 426.084 null] +>> endobj +2442 0 obj << +/D [2884 0 R /XYZ 133.768 391.415 null] +>> endobj +2887 0 obj << +/D [2884 0 R /XYZ 133.768 391.415 null] +>> endobj +293 0 obj << +/D [2884 0 R /XYZ 133.768 391.415 null] +>> endobj +2888 0 obj << +/D [2884 0 R /XYZ 133.768 364.22 null] +>> endobj +2889 0 obj << +/D [2884 0 R /XYZ 133.768 344.221 null] +>> endobj +2890 0 obj << +/D [2884 0 R /XYZ 133.768 324.298 null] +>> endobj +2891 0 obj << +/D [2884 0 R /XYZ 133.768 304.375 null] +>> endobj +2892 0 obj << +/D [2884 0 R /XYZ 133.768 284.451 null] +>> endobj +2893 0 obj << +/D [2884 0 R /XYZ 133.768 264.902 null] +>> endobj +2894 0 obj << +/D [2884 0 R /XYZ 133.768 246.663 null] +>> endobj +2895 0 obj << +/D [2884 0 R /XYZ 133.768 224.682 null] +>> endobj +2896 0 obj << +/D [2884 0 R /XYZ 133.768 204.759 null] +>> endobj +2897 0 obj << +/D [2884 0 R /XYZ 133.768 186.774 null] +>> endobj +2899 0 obj << +/D [2884 0 R /XYZ 133.768 152.958 null] +>> endobj +2900 0 obj << +/D [2884 0 R /XYZ 133.768 133.035 null] +>> endobj +2883 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2931 0 obj << +/Length 1389 +/Filter /FlateDecode +>> +stream +xÚ­X[œ6~Ÿ_Aö¥ jî—h›4ÛDŠÒn¦M¤M<àa¬Lm&“ɯï1¶˜lv7’¯ŸÏùÎÅFVe!ëjõëzõËË ±r/O Xo-? ½4ɬ$O=?‡¦Òº±}ß ×GÙoŽŽÄÈî¸ãg6«8nTCɈhêÕÏÐI +Vµô+QMXŸêœâM­;ö]‰{RªŸíw´Õ3tIÛžp¾ïzçÓú5ÀvNkh +ƾ§-,¢¥v‚äÀÕoëÕ?+Æ#Ë?+ó½(Ž­¢YÝ|BV °¤æ™u†6VÁP_N¬­w«?WHË +Íd†¦2‹@>‘•Ä©„±Yè (N³% ^i<×W+ëÆA ïwØ8~lWTÀq…7BFB­€~§»ž«¢`MGkŸm«ÊAl€80ð¢…ð~gNÛ£cU¾ÒØ÷sMaα†Ç¶ª=§m%NkÒ“úh4«Êk'BöÛ7 ¡ÇÞ³Qª2û ˆºÅµFq¹A²X·´Ø©ÅÝ·ªüˆPˆ«o0}gcc‡éÐ'5+ÀâŒJJ2GƒG Á)#C<\–œ±PDÙB¤ÒŸ„Ahÿ%)pyí$È^«*TY‘–p ^ÉÿÈnY+|O7òqKÇ÷}{Ý(#rbûA¦ºn¥Ï!¤Ó  p2•\ DöŒ÷ªã帱t4 ì¬Yy}¬so8S‹·Oî‹;®2N¾˜?pŽã\‹¸ÖtmtÇÅ–1Ïó6˜_ÜarÄx—}wæ7Þ}Ÿïšvº'Þ0Š†x k±ÚQ65ûS?҃ȱ™»¡½jbÝ vÖªß~ð“r ˜‹Pm0ö@™Žgü¿µdÎq?QÛ ë´ÝÔ5a!H³©Ïî¡ßÀŒ‡*_E?º$­lÒ0~4Þ¶4±fÏb)“äÿ¢5X êþyj4 .&ØÖfŸe N•'XAÍ*Z˜ è/:Gðó¹ç°áBÉõ2z‡èG¤ò„ooflÛÔuB ÒÏé2uâƒÅ,u¸4DJ|Qb1ʽPÜ„ªtvLç…A”*^ª®÷;O^³¯`Äàä¡[a†ŠNAJóWêvÁT¹¡Õ3¹L>Y&љͰÏñ2E“W·L‹l%ã·÷I%ÂàÞA­£ývÐZ]‹éUî•ÇŽ´wØ:'`EK’˜#^ +ÔyíuoX|y~–ÝýRgg/y:y)€ÞÉKãÛÃc´bUœ=ÀÜÓctäý^ 'µƒ6@dYš‚C/Ò1ó›ÆÉé£L9»Î»fˆØa”«ÞB3œ’Ÿu=mèW0_¸Åü|–Aš(Ë:cì:±˜¯±eu­,t\ŸµäéLw¾iä™—†÷yÑ0¯>‰—§a6}õÉr/L4õ®Ô½Ë“¯w{UyAtHŒt怞áS?SBº6øhÆǸ>œ;aj»5Ýóìäûr„ëÞù‘ÿùE‡Ç +endstream +endobj +2930 0 obj << +/Type /Page +/Contents 2931 0 R +/Resources 2929 0 R +/MediaBox [0 0 612 792] +/Parent 2857 0 R +/Annots [ 2880 0 R 2881 0 R 2882 0 R 2912 0 R 2913 0 R 2914 0 R 2939 0 R 2915 0 R 2916 0 R 2942 0 R 2917 0 R 2918 0 R 2919 0 R 2920 0 R 2921 0 R 2922 0 R 2923 0 R 2924 0 R 2925 0 R 2926 0 R 2927 0 R 2954 0 R 2928 0 R ] +>> endobj +2880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 654.082 331.336 664.986] +/A << /S /GoTo /D (FAQ_faq_reg_usage) >> +>> endobj +2881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 634.157 373.189 645.061] +/A << /S /GoTo /D (FAQ_faq_rom_array) >> +>> endobj +2882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 616.289 268.841 625.136] +/A << /S /GoTo /D (FAQ_faq_ext_ram) >> +>> endobj +2912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 594.306 247.103 605.21] +/A << /S /GoTo /D (FAQ_faq_optflags) >> +>> endobj +2913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 576.438 328.586 585.285] +/A << /S /GoTo /D (FAQ_faq_reloc_code) >> +>> endobj +2914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 554.456 478.476 565.36] +/A << /S /GoTo /D (FAQ_faq_fuses) >> +>> endobj +2939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 542.501 237.319 553.405] +/A << /S /GoTo /D (FAQ_faq_fuses) >> +>> endobj +2915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 522.575 368.646 533.479] +/A << /S /GoTo /D (FAQ_faq_flashstrings) >> +>> endobj +2916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 502.65 478.476 513.554] +/A << /S /GoTo /D (FAQ_faq_intpromote) >> +>> endobj +2942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 490.695 302.733 501.599] +/A << /S /GoTo /D (FAQ_faq_intpromote) >> +>> endobj +2917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 470.77 403.465 481.674] +/A << /S /GoTo /D (FAQ_faq_ramoverlap) >> +>> endobj +2918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 450.844 375.091 461.748] +/A << /S /GoTo /D (FAQ_faq_tinyavr_c) >> +>> endobj +2919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 430.919 342.314 441.823] +/A << /S /GoTo /D (FAQ_faq_clockskew) >> +>> endobj +2920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 410.994 406.264 421.898] +/A << /S /GoTo /D (FAQ_faq_intbits) >> +>> endobj +2921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 391.069 347.824 401.973] +/A << /S /GoTo /D (FAQ_faq_fuselow) >> +>> endobj +2922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 371.143 381.138 382.047] +/A << /S /GoTo /D (FAQ_faq_asmops) >> +>> endobj +2923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 351.218 448.754 362.122] +/A << /S /GoTo /D (FAQ_faq_spman) >> +>> endobj +2924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 331.293 328.187 342.197] +/A << /S /GoTo /D (FAQ_faq_linkerscripts) >> +>> endobj +2925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 311.367 353.134 322.271] +/A << /S /GoTo /D (FAQ_faq_binarydata) >> +>> endobj +2926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 291.442 348.591 302.346] +/A << /S /GoTo /D (FAQ_faq_softreset) >> +>> endobj +2927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 271.517 478.476 282.421] +/A << /S /GoTo /D (FAQ_faq_math) >> +>> endobj +2954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 261.619 220.991 270.466] +/A << /S /GoTo /D (FAQ_faq_math) >> +>> endobj +2928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 239.636 351.44 250.54] +/A << /S /GoTo /D (FAQ_faq_reentrant) >> +>> endobj +2932 0 obj << +/D [2930 0 R /XYZ 132.768 705.06 null] +>> endobj +2933 0 obj << +/D [2930 0 R /XYZ 133.768 667.198 null] +>> endobj +2934 0 obj << +/D [2930 0 R /XYZ 133.768 651.093 null] +>> endobj +2935 0 obj << +/D [2930 0 R /XYZ 133.768 631.168 null] +>> endobj +2936 0 obj << +/D [2930 0 R /XYZ 133.768 613.3 null] +>> endobj +2937 0 obj << +/D [2930 0 R /XYZ 133.768 591.318 null] +>> endobj +2938 0 obj << +/D [2930 0 R /XYZ 133.768 573.45 null] +>> endobj +2940 0 obj << +/D [2930 0 R /XYZ 133.768 539.512 null] +>> endobj +2941 0 obj << +/D [2930 0 R /XYZ 133.768 519.587 null] +>> endobj +2943 0 obj << +/D [2930 0 R /XYZ 133.768 487.706 null] +>> endobj +2944 0 obj << +/D [2930 0 R /XYZ 133.768 467.781 null] +>> endobj +2945 0 obj << +/D [2930 0 R /XYZ 133.768 447.856 null] +>> endobj +2946 0 obj << +/D [2930 0 R /XYZ 133.768 427.93 null] +>> endobj +2947 0 obj << +/D [2930 0 R /XYZ 133.768 408.005 null] +>> endobj +2948 0 obj << +/D [2930 0 R /XYZ 133.768 388.08 null] +>> endobj +2949 0 obj << +/D [2930 0 R /XYZ 133.768 368.155 null] +>> endobj +2950 0 obj << +/D [2930 0 R /XYZ 133.768 348.229 null] +>> endobj +2951 0 obj << +/D [2930 0 R /XYZ 133.768 328.304 null] +>> endobj +2952 0 obj << +/D [2930 0 R /XYZ 133.768 308.379 null] +>> endobj +2953 0 obj << +/D [2930 0 R /XYZ 133.768 288.453 null] +>> endobj +2955 0 obj << +/D [2930 0 R /XYZ 133.768 258.63 null] +>> endobj +2901 0 obj << +/D [2930 0 R /XYZ 133.768 230.67 null] +>> endobj +297 0 obj << +/D [2930 0 R /XYZ 133.768 226.062 null] +>> endobj +2929 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2979 0 obj << +/Length 1961 +/Filter /FlateDecode +>> +stream +xÚÍX[¯Û6~÷¯Γ Ä,/º¦{A»m³)Pmü–-Ѷ6²äJòq¼Eÿ{‡œ‘L9Jƒ>í>œ#^†Ãá\¾™1^­¾Ü®>ûF&AÎò>Û} ”bi’I³$Á¶ Þ†B0µÞÎyøz½‘1fÀÁÓ¥)ÍOœËÆ”¸Ò­Eš½ÁoS\ZÆØŽ÷k‡mG“KS UÛô8­«wkÁC:õÔWÍO<æð'àp%Q˜ˆõÏÛoW_oW¿®<ƒÂ[°œÇAqZ½ý™%l~p¦ò,¸:ÒS " ö`¼Yý°â¤‹Ç¯ÓRAÊò”‹™nâ”I£n.U3d¿€6ÐξևϭtÀa“3‰àéþ*}ýæGû¶7ß÷õ/Ϧì#‘ÏoŽ:g10ðùXþHñwü¼mã‘óßÿD •1§ÁFd,—9î]Um©Ê»‰®ââ9.ÉìÒñ‚¿y·qÏÛ6£$2eq–"áp´Æ—QX´§3ÕáìZÕkÖ8nçªÐu}é. +Ó÷x˜ÌwçˆÅ±=Üõ÷¡2aBå#QÛŒl[ðÞv˜‡º)iícß >t ï¾kO¸{­¬ ‘—nˆy3˜®»œ‡™½HÞd¬cƒ÷!ñ‘Àu®»ÒSö#^ãwG[¥)jÝ ?¢ôKÅÐù€› ‘ŒÏɃžÛZØ,ã§s‹9!¾ÔÅ»IJÀ&î@ÙàÇW«à­ÛÿfFákPÒxà5¤+ëTïg‚[è¢k“µ'é^1Þûÿ’?Œ« ˆ9éµuŒDëƒ@:sÚ%BJ7¦x‘á \ÑÀ? ©¸å ãNSÁùÎààî–\Ò yÕfÈ—¬þí#–z€‰”¥ÑtÆ +ÆŽ3S=Ü¡b–Aö!ú,¨fÆB@å½ó8¦ˆÕ ÜÝÖ0±…ŠÃDü`ÅcGï,Q›9vN\¦žÉ°/œÇHÀYp ô!vCaÅœ¥sHc´ÛýÙÕþF‹GÚÝ_¬Fì> 9c²xô‘»¢þ“З±4Í<7”5Ýéb9Ww!z ++ Í.(C(9Oš©¾u•KN>a ›X¸³°žBih HkH¶Dôªò)m`È-@”ôýN;×ñïnwÿæÇø¾~œÄœÊ‚ÈKèÇ?.´±<›tË–¢Bvb‡Oý7º–¹ûE·ŽxH +[*÷€Ší ujRAöÙ~½TkêâdrÜڔ竩+ñíÖú@ƒCòã4Ü­¥­p±FH¦$ëÈ] Z"¬Gu18ì‹LyåȪ퉙Zɨ蘵ð)v½ê—š€Òœ;S¼R±²‹Î»DüžöÙrîGáÿ°¨;ƒµ¯s¬q`Ò%jUSÎ@èÙ5“~Ó3Un~Ý~¨@1Ý??^jGô»É–T1¨›‡–©mhd»¶¿Ò)Ñk;ƒ:%èØ®½°3èCi:×f"ÒýɆÝS§žlL|þ‘xÍÔREèÀ›:›þH`꽬×ûå]zZèäˆåÐyï»t\ÔÄuÖÓûšYüY/UåG½ñ‡ÍT ¼÷ãjü¹ê•iLwŠ–ì·=^pð•)páGð—R½Î$çÙB§ðtk¨L7RÄaGþøUûþv0Íã“ÿš;nl +endstream +endobj +2978 0 obj << +/Type /Page +/Contents 2979 0 R +/Resources 2977 0 R +/MediaBox [0 0 612 792] +/Parent 2857 0 R +/Annots [ 2974 0 R 2975 0 R 2976 0 R ] +>> endobj +2974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 441.541 196.262 450.364] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +2975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.311 382.992 452.169 393.178] +/A << /S /GoTo /D (math_8h) >> +>> endobj +2976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 234.49 196.262 243.313] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +2980 0 obj << +/D [2978 0 R /XYZ 132.768 705.06 null] +>> endobj +2902 0 obj << +/D [2978 0 R /XYZ 199.729 443.964 null] +>> endobj +301 0 obj << +/D [2978 0 R /XYZ 133.768 427.967 null] +>> endobj +2903 0 obj << +/D [2978 0 R /XYZ 199.729 236.913 null] +>> endobj +305 0 obj << +/D [2978 0 R /XYZ 133.768 220.916 null] +>> endobj +2977 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F11 2085 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2990 0 obj << +/Length 2134 +/Filter /FlateDecode +>> +stream +xÚ½XÝ“Û¸ ÷_á¹¾È3k(ê3×i»ÙMr¹™¤s»¾æ!½ñÐm«‘%%Å»7ýã  ¿VÍÌ=´O„@AàPÁt3 ¦ï&¯“ï߆É4÷ó†Åz*¤ôÓ$›&yì'¹˜.ÊégO?žÍEÞíLÞa6ãÀë[wmY­Ÿ‰þp÷ËÝ‘­¡ñÓý±´2õó_a¯PÄ¡—„³_?MÞ,&¿MLÅ™ÂσxZì&Ÿ ¦%Lþ4 |™gÓƒÝMe¢ÖÓÇÉÏ“àâTÁØ©âÔeL§zÐ3{›ªëµéfs™džÉhì·¦6[fŠ˜ˆB5H¤ÞJcètIÔÏŠ„23‘y›a§›ž8{ÕuU³¡Õ³S i«¢Ýí«Zóêªqš:®ãÌÁùyÌ&ïÀ°]fä_ë·Gê\{‡¬XšæVºrbhZŽ´½ÃUÖµÖä‘÷~M«ûmÕѼ›¶ç…[íVvÚ±¬ÛÚ¡3ž`4}e˜Vû}]ª¯Ú憃j«;ž4—7„¬¢ê’ÈKÑ- µvw¾8_ga ¾¨ÔªÖ¼•âñ ëÚ?œúI‘Áožz£wšÏ’\1‚Ø;˜ªçÕŠÖu;aÎ)ØŽ°Ö$uØVÅv së¶ýÒ¹”%ˆr([u¯.¢ÕöB.’$Œý gùá°>@ðÝà‘|2jç?µg~æ$ü'BMrV_Í÷Uëoÿbeeæ‡qz¹ÀïtA±† | @qózúîæo{ÓnVTµ=uYÑ +#’›åëàu>>¼¡»Aþ¿i8N}²S¼SîG » +I>¾}X¾ÿûòöþþ—Ø€ÆE7 ‚ÂdÌ~ç ±t囑ŒLýØa€Ã7¸œ0ôªÑ8„Ê^5I¡ä:sFwCÝcˆdaøy~L«¼ËŸÌ²c²r™½[ÐbHEWÇö44>·OãmÀîl&¦Žàv¨}¥ jaæ"ÎAÝe\"ÚÈ+FR‡ÊÆyH5Ǫ鴱Ŋ¾Üx Jn0EFgIv4šÅLµÙöDªµí ,Úr2ŽR[«,Ý=–Nx˜DŒ½]aª}Õ|@wýv+TÜÙÑh ÃØ &±ŸGGh³ÀbÉÅÑ#Wœû©Œœg[„ñÌn²u¤Ñ—õª<7º/| zßcìÇIÆUó¼˜Hl$Jê'š^m,+á[Ž9,rgš%¤ ¾ˆ Nel °×ûâÇË0HŽÁt¶ÑoK5£ý(úá_Cg/'ö°ÓÛ­èbMDÙÊ åÏôåê%]¯L?ìñà9 b7íqšŒ˜†æ^Aâãõ.—¿kÓ.Þ,—#7F~˜“ùY÷¦£ºS§‹s³ò€ \2s·¡¡Ôq·ÑíUÁÁQ¹fÙ:´;öÕúTO8´êsµŒ^ ÜBŽ¶‰GvQ–Qƒ=^IŸ¶ÇÎR2¾m•§gαCÞEŠâf6E;šäÂbŽ!ž§UòBÛ,Îø!‡¢]»csÎîù{=ë¾ ˆF|¼ö=„ï¨$‚Æ°'žõËfÇ´ÇZ+ìÍIÉ(¦‡ç˜¾\R½Œƒ(ö#éÄ”ÓÛ³âR¯íÍAí %k=húÄd°U ?lÞâêP²qçz|¸ýÀˆždÐí]…¼Œ…·v1bfàæ4¥¨ÃY£à%Ä_6wa$w#UZpüZX}qj\ðëv&„ð;zÛÌà "4µÒ…:+Ò€©Q½¢œC’“!ª,Gü}óOõÍ|QÂ7ÁShÓG|/DâÐD°÷’Z@¸Â~ÜŠg]¯ÃeÄap¹ÄÞ8c°Ót‘;oq•ý!ÝÓGJ×Ѽs)ÏÿG#ðùg¯á[5”ÿÀð€ô£++/=óöâŒFIþ`‘ª»–8ŠM¡ü›á³Úík^Yù ³¼+ :”8FÊYÕ/ߎÎâmÏ +¹&Y'^¬v­FœÕ#ëÛvÈÓk˜¾,^Úÿ#˜±7zñIìDÔ%‘·¯xKâA¶Ä= °mk iÂþÉH\“ ª„´úL<¤YÝtÐ×kNÉŽì㿃ѫÁÔ*éøe+ °«ª6Z•\~ +ÀFÃåâêé>ÏRX.ÿOø#côOežA¯õGþSº¿® Gfçÿ'3xyº·È;ÝhsúYã€b±ˆ¸× "xÊW"£¯0˜²]×›*‹­f&So^W+ÞaÅ¿oŸž7º¹>òë@½ë +endstream +endobj +2989 0 obj << +/Type /Page +/Contents 2990 0 R +/Resources 2988 0 R +/MediaBox [0 0 612 792] +/Parent 2857 0 R +/Annots [ 2982 0 R 2983 0 R 2984 0 R 2985 0 R 2986 0 R ] +>> endobj +2982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.649 585.025 290.27 593.872] +/A << /S /GoTo /D (inline_asm_c_names_in_asm) >> +>> endobj +2983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 566.074 196.262 574.897] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +2984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [316.074 208.474 389.43 219.378] +/A << /S /GoTo /D (mem_sections) >> +>> endobj +2985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.317 196.519 283.46 207.423] +/A << /S /GoTo /D (mem_sections_c_sections) >> +>> endobj +2986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 155.714 196.262 164.537] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +2991 0 obj << +/D [2989 0 R /XYZ 132.768 705.06 null] +>> endobj +2904 0 obj << +/D [2989 0 R /XYZ 199.729 568.497 null] +>> endobj +309 0 obj << +/D [2989 0 R /XYZ 133.768 552.5 null] +>> endobj +2905 0 obj << +/D [2989 0 R /XYZ 199.729 158.137 null] +>> endobj +2988 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +2996 0 obj << +/Length 2303 +/Filter /FlateDecode +>> +stream +xÚµËnãFòî¯æ +qÉn>½É.Æv2™7ccr˜ -ª%q‡"•&9¶€ýø­êª¦H…’È~UW×ûÁ`±[‹·W7Wû^$‹ÜÏ·‹PJ?M²E’Ç~’‡‹ÇÍ⣆~²\…Ax¿ìU·\‰8ðÊ–FUU4éönëß7>q_Hm×o· ¾nú- eæ%rùëãWß=^ývIÁ"‘úy/ŠÃÕÇ_ƒÅ\¾Ì³Å“=,d !^¬W?_|áy‹ cqê ÿßvàé`$Ò`±‘/£œÞüe¯ëåJÊÔ;j³mÌ¡¬w´®š¥ˆ½§U¥qü² cOWx”y€úØwö´ ¯1Ÿ_Ã2ν§}YìéÉÄQÑ@̉PºîŒªø馬]ÉÔÊÂ4ES¯$š„GDw¦©*m€Ó$öŽ¦Ùu@Â_ãNî•(º$"ÑÄo}ÙišÍáÐÔ4ïHÆ0SŒI™®,úJ1æuÉçµÖÆÕ5„{ Šò4Í[Íp _,*­ŒÞÌ‘nù©×6M³w÷4Ú•mœÅ±ç/Wq‚‚ÊŠ!»=O6¤’²°ëÄÛ4Eª®l?HÑ})7º¥C­õ² U­î´>+d|Mä¨zxL™²é[Ú¹ð ¹yt†Efp3Ó¢i‰§ê "4ú9˜Ù±§½{µøhÞ,C{Þø™ÛU{ÔEù)D1~.ܬKä¿eÜä{ŒÑ €ÔE÷§-JÜƉ%IS°5ÅmPbb7eaíöÁ^ÛNÕå8µv…ÛÖEÔ‰®X¯À«`S`" +÷àþ2 +œ§tt¨è qL{B´kë Yìa0èÛ"ʼn6žJ5Í ë“u…lª"!jÔZøܲƒªç%»Ì +Åo¬ùHµm¹«‘;\mJ‚šæDÅlÚ"Næ¼@ÊÀû‚Ñ(”:<t¦®´šCŒ,å—i“œ6Ib--ÀMéØ©Ãnòᓦ˜›XÉj&eÇ#v†!USÌ•rœÆB?• €Z‡›wCØþ}|–Âaæ`K0(Óh{üJ 8:·“—öo·@)uÓѼoõ¶'«€Õš/Ô†gŠï°®¥<ëšO¬ñ‹Èõ +R]GSÞ‘ÓrÞ:Vª‘9¥~"ì­] +Cˆš´`ÜêøH…n[:V´5θ¶úÄsçö^Ë#?¸1ðóšÒOßòÁ˱èB‡"“¾ˆb§˜qîÇ›KmJ?Hswé  ©‘LV2L|).$x¿ÅP Ù±éMki¬eÜ-ÇJã<ì5öFÎUîØGhÓmý§G­ã²q‚¦$I8l÷嶣=äÍ¥ò¢MSë9«_£iå™Ë)æÙcI)¶Á)ÀeO.B†DÖB”>åpÕF·õWËpÐ`¶iõä>-L_¯ÐÙéÞQתêNìˆÓ:Ò² ½=#ØB½@Ë›9·=«R·×]žu +–úy„®‚Šý O&– )†&P¼}ûyùÍ74Êéiðd/Ôg©g)aÿ£À€m¹Fe¡¦ ë§Í¶ÃêŽv?£ôu{ÍÕ-Öºë¬Î`n´Ú¨u5ï¯n>¼r%'¤uFjÓ"N^q°ùÝ+¦¸dz +Õ2¼Ñ¬ˆÌr·ç«ªýL“SÓû¤ÚëÕ(h&S¡Yò""ï»g…®r=#Þ(öó|ðâ¢j +xEF`.`R†¦‚ÈžhB´ÀøI3[¯Á8º‹úŸ û2ó³ uÝ>š´8`Xp‹ažgH€sBø–^ ÖA:£OÎÝΖ‰pvË e:Î)[­DøI,§ÖÞJ™ëDÕ¡Û ‘¼ÄW’øQ6Èðöþ§9¾$ˆðØJ W#¶ðm`+ò\È#ìÛ‚š¦ 'Њ敭åEúW9ÓÄÓáõÛÇ[1C¡ $¿ ÑÒ‡öï'v*mžûQ”]DtTZñ ”@/–ˆA»ÿºKg蘚ȹÝSìK¤gÿÏÄ®´~AÄŒCÌãíí{Á±‰i¨Y›áþë6@N“õÿÝÅ@Â>xw÷þn)°8\±|ŽˆºkoTÁqŠƒ—»8ÿ~™FÐ:@Ñø3]xWol5ù|ÑxþBF-9/#?̲¡O¹¿u‚~ç¢.G«Û¯¿f Ôa:˜;˜?Ñߨ;¬Îd.¼“Æî!aÇ-›}alûã±1í`‰Ò„J»ç–ïBÙ@³sþÅÕ^1†µ¶Ý¾¨±\ÛõÆ¡Cg›ÉŒŒ 1 ¹ý )´(»×Ôc1‚T¾8G‰$”|½)4ⳕÍC°Ðõ†2XB Ž~Q0>¿8i:k8»¥ñ©´¥9ÌTß5àðåì‚ÂõB¦¤¶Ì•Í¸w®R`µ5M ùrC+jƒlåk[2¨öv:wHÈÒbƒØT Kào*H©58ú‹âJ bŸàyYþœYA²ÕÆ%kÉÄ¡|)ÊÎ2k³kE*C¸Ó…mb;óÐÏεªúbV‘t™B.—³h 1-^.^lÆÝk£¿BQÙª2jo T·Ö`YÛf ?ÛnòÏŠßÅsðÖs¨®ÊuÛmæ©Î|€<“Bèm9£Ì†Wç—sDj”91»@ãä"Ö=d"¹Jý["S«4ý†r6§Ó’Þ'jéÀQÌ EW†Ž¶Èá$kÐ&–…kÿª©_þ§3Ž\\ÿ e¡ûíX¸˜çÌÌÅ.ÅÞšQåÉõ#dài½€&'’ù4¢á]þ£‰!ÌÞ¯éUÓ·ƒ‡ Õ¶:”iJÍNêÔ•º £+EÀFJL±r«I0Œ®¨ hR…ÎÆ–§U+¶ òØ…rùÚÀ(O–CsYVC¹> endobj +2987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [308.063 593.868 450.642 604.772] +/A << /S /GoTo /D (group__avr__io) >> +>> endobj +2992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.017 516.467 447.897 527.371] +/A << /S /GoTo /D (group__avr__sfr_g11643f271076024c395a93800b3d9546) >> +>> endobj +2993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 307.342 196.262 316.165] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +2997 0 obj << +/D [2995 0 R /XYZ 132.768 705.06 null] +>> endobj +313 0 obj << +/D [2995 0 R /XYZ 133.768 667.198 null] +>> endobj +2906 0 obj << +/D [2995 0 R /XYZ 199.729 309.765 null] +>> endobj +317 0 obj << +/D [2995 0 R /XYZ 133.768 293.768 null] +>> endobj +2994 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3007 0 obj << +/Length 2587 +/Filter /FlateDecode +>> +stream +xÚµYK“Û6¾Ï¯Påbª2bH|å²å8±+©<*žÙä`§\ IL(B!©™Q¶ö¿o¿@QÚ©ö"4^ t£ûën*XlÁâÍÍW÷7_¼Ž’Eîç 4÷›E¨”Ÿ&Ù"Éc?ÉÃÅ}µxç…¡Ÿ-WaÞÝΛª}1,WQxßrS·õPMý—á~Ñ4LìOÜ>,Cíêbݘþ_ÀKë8ò½üíþ»›oîoþ¼ áBÁ"œ\ ôó ^”û›w¿‹ +&¿[¾Ê³Å#-Ý/”†¥!nlw7?ß"Up!]0•.ü(HIœú‘ŠYº÷QÓ=ܾŻU ¢Þï@fž=˜®l×ãª/^+5ᘤ¾JØF¬ZóÈk.NB? Æ5E[Íð S?Ž3·¦2Ì +•ûÊGVÜ°µ¹WïÙ›v0Õ-Œ¨Ø+†ÁìCÝnyÅ`y˱72°3{ô*ó5جôÓ,ù´9ÜÙ=ò rÏn ¡I 8Ї¦F‰°W·es¬d +Ï“ç ô^8Jï…Ä«Ï?穾ؘ[$S¯±£<ñ µ)œd«¡sðxË#kaú؇ƒ!ãZˆ\SMÕ-l˜ÊåZ²ÄÔÏÓ DÓ ŠTú‘ì4ô<ËUZøìÕgLü‡®ùïŒå®_ðY‰ªÝÃÒSMž²4ÝÖÓœ>ú˜·<2XûwÏú7^þÍSiÀ=l ·P‰Ÿ‚} +|]ÛG¡tpæ<°¬aãýÓ"Ú¡™'Ú[Ÿx°2‚Âc#ÜÉG ÅW¾~9±H6’$ò6ÏnIø$žLò]ÀËzhdLŒÙ[!UB;»–ç"´ç(ö6Ü9öÏ*Šr?Ô¡ƒžÕ¦µ+s}æÁÝŽ++„c¢T|DŠºAüÀžev iDÞk©¨/ÞU÷(¼Šƒä‚p –cÍ „=!"eh +F3Ør Mhn#49ë›QT¦ý(TNO>lŸž>4õ¸ÔÃéCÿ{0£­l5wù È‘Ò~_ÂÓ+PÏÐKŠGl[ñšÊœgø^‘=L|GçرT©7cÂØ×Á¸n´~âÿvwëÂ>"¿t·];MÙá[ +¤¹"õ“H3Û_wA+ïÐÙmWì÷ÌFk1wÍ®m(J³bš……Uݱê½YõË<­‡üøÐWÀ2œ#bÏ šš­…{ûºìliÛÕÜûmÀ2ÑâT¤9tgááÇÈ¥Œ± +>¦•®å¶XF˜ Á­iFÄGB„–tLüêJ¸öLSâí•„â·“¤,¾NÓˆç>‘¬ ÒMë *N&ºÀæÄ°SÚN\ojt82ìŠÁͱð@®…ÞÅ1:lËÔæØ–x¸œ&wBU\j_ ½,dq<” 1<$e”„À €A»í™v—ÀµE_#þ©(òŠJn)U¸-ª»C¨–={ ¦Å³¤n<ªÞË¡’½]«XŒÖ¤ÚÛ›½íð©òøm{‰YÑ t AÂþHIì©Ûþ`œz` ãüÐ0°5-f¡¤V/úÞìׄ›8[ÚÊÌÝ #,#ºx¯™A,ùA2:üên´¯õ˜ÂN0]0›¢0õ{cöýœµÑudìþxÎ9ùXʼnÙ%V|U”L÷†+…n+%Ã[ +æ8ÿz ªy¹Œcïg©OáÉm¯B¿çO¬®OåAõ‘%êÿTö<×+œi_éœO|#ªrA:$ú<¡dúñÀ1”uC@l)–3k-¹¸b¯ÌÕä¶ÂØ-dÝI†w²áÕx~[{¯ Ó¹òÙâ¡[mËrFP­á]ÇøVYJ‰ŽèL­OÜBÈ.Ù`—&©mg ø dñD±OGI–'„Ã>Ê«™F7³ü„ñÀ¢{wíü‘ƒ—Üû©îø˜þÚ¦Ð|F·_ÜêaÇ÷ê 9·dmrY-õKY]>jÅÁl¯”e< +˱+x$¦u„ܘÈpF“¼kÃÛ\`ÛIèŽæ˜¯%ν¤›¶cb_”€µF†w¦sY¤cT”A¥˜õÀÄkÏ®uy¥K7«Z¢Z×ií~¼ÁÈc¶Ü[.dÁ%T7†æLÕ˜0A×FB‚dˆB%üË[†Ô +à­d7¥à0ÁÛШ܇Á¾C¶xpÌj8„ïµ7Râ!ѺN(¡î;á;A,žÓ]gÁÍÿþþ{)ryš×íUú7¢X‚²–ü+Zî°èâ²ÓS?ðÇ;!ðÊ^’P±×XV:†$ ÃÐ3%ÄN Zj(qØÉÃOÀFŠµ®Ì6ÔªIIƒ+*Û¾À§˜ÛN²'Nñè –gÌŸHa¨¯·2ø‘P]´.8󌱆íÇ܃±uèêíNòƒÇ“«y©)ê3Û1ØIŽ!:mÚœ%ë`ªØ°µsH£Æ¢qÓp¿î¯aŠÆG¤TJóõ”~ ø£f\qîq~µI1蜘AgJÛUý—žâ"RϘÚÌí¬Ÿ@‚ûºÇš º<Îv‘”Ã÷2KÅ*3K¡ü­q+OŒo•8d@Öëß ˜‘f©™níÌ.ô«¢ßÍÝWR>€^ a@ÆýÓfü°ÑõæÖ¥Bc6Vû}™ïCJ~þV@WLóó©Î¨óƒÑO?`'c O—ží‘û%/uIZÏ]Ú3 ¥ "VÏìð–|œD<ó³,¿TD/ã´$TJ§çÛáèx;œÁøÓ3)«ÏÒgFâêää¸Q;å{.{p¸¤@‚œ e +ç•É…иä,ôyáÌ«ŽOç|Ú}º™ø½Ìlí¹¸»*¶.ò}^à_øËìÿ.yæ§êŸüëâþCJ ˆSÙô?¤,÷U"¢½9—¯üyˆ[¨†™øÚ”LhnÂàËH}fÜ‹‚@(JmçµJ²VM½k)¾¾¶O'Hé®EþW»° +endstream +endobj +3006 0 obj << +/Type /Page +/Contents 3007 0 R +/Resources 3005 0 R +/MediaBox [0 0 612 792] +/Parent 2998 0 R +/Annots [ 3001 0 R 3002 0 R 3009 0 R 3003 0 R 3004 0 R ] +>> endobj +3001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 365.708 196.262 374.531] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [435.358 294.81 478.476 305.714] +/A << /S /GoTo /D (mem_sections_sec_dot_init) >> +>> endobj +3009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 282.855 168.528 293.759] +/A << /S /GoTo /D (mem_sections_sec_dot_init) >> +>> endobj +3003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.086 205.455 184.301 216.359] +/A << /S /GoTo /D (mem_sections_sec_dot_bss) >> +>> endobj +3004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.363 163.92 447.444 174.824] +/A << /S /GoTo /D (mem_sections_sec_dot_data) >> +>> endobj +3008 0 obj << +/D [3006 0 R /XYZ 132.768 705.06 null] +>> endobj +2907 0 obj << +/D [3006 0 R /XYZ 199.729 368.131 null] +>> endobj +321 0 obj << +/D [3006 0 R /XYZ 133.768 352.458 null] +>> endobj +3005 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3016 0 obj << +/Length 2290 +/Filter /FlateDecode +>> +stream +xÚÅX[äÄ~Ÿ_Ñâ…´4r¿ì +Á°ŒiY˜i}XªNª»sÈ¥7—þ<¾U:éÍpà‰§¸ª\U¶ËþlÇYVÎêöêëíÕßzÑ*µÓ>ÛýÊõ};Ž’U”†v”º«m¾ú`¹®®7®ã8ÖûãÚ ­çõÆ +oøÛ5•fÊ6»¢gº/*Ý2Ù®ÝÄÒ‡¢ëuÛ÷ ‡ ÚìjUwÔùÖ›0Œ"+ +×?o¿»z³½úxå‚ÌÎÊÈr9á*«®>üì¬rXünåØ~š¬žˆµZù°º¸±\=\ýxåÌw–cÛóCVüûfí…ÖÓzã{UìùËÚú°pj›C«ªµk‘¦8õÙÓÚu,U÷3÷ +õ+.håÍ°+Ÿå¸¡ÕŸ óQrÎ#^¬ÚBíJ-GµZ•f™ Å­šmð©B‘^!OœŒbÒ ëUÛ§ëõ&p]4çi•çP5‹ºè U¿“j0ñ¿¡“³¦î¬×§p;M7²Ô`¢-Ç~s/éŠ\_/IŠ;Ø­üı؄à+<ìN*Óöz“û¥æKûcÑ-ò7ûÉ>&ÕéTZØéIàûX€!ĤÈSOD8•ªß7mÅWÝð$Ü· {QJ]éº×¨eâ‚ȸà0ýçë0´èZϺñ2ת›~$ŠLã+3ÙæKE1s ãøRÙ±¨YX-Fo‚=?Ütr㓘XФ ÒNmºl+øþä8>Äî×c½{˃®oZuöŒœˆL<¢ÍtûÌ£8Å~(åhaUrNÚ3YYÛ µMY’‚áL¥ðSé#–þ«µë‡Öïíq1¶#/àÅD#|¦š¿]ëV•×8J. +ºc3”9ÓMOƒª†_òÈßÀo²¢7kç˜mˆ ø%—Ÿpð€ï,³&÷ÖM½Yzˆ´†4aêœ7Ž¦ÑjãyvD¢zýêrÓ Ø@@¸(±Ðç=÷:aâؼ`W45Š‡a¼ç•Û›&T«y¥6pˆ³ð ­œ¡ëf8™£ çrÝëLÖ9T=B¹¾ ñ’€ñYà +B=¦_²Î府‹‡‹Ä'¯ 75Ü×ð×™ù°wÜÐ - —ÆÖC_”äOnj5ÀÝ2SÖT'ˆ»v*Ä@à Bz/ˆ8o„È3Í rañûh˜bÓ ÑnÍÄ Ï’×¹jsž< ª…´£É6°:rÚËáK&¹·0¹Yí%Ÿ÷’á[]JÎÇ°&Þž\•œ-¶ÓØqÉC! c7ÀE=>þk•ý:ÇžŠi¼=H>¿¿½Z} õo×qA ù#o¸«s~Ñ™‡Ã™æòhÅŠxx;¨å¶c²÷¿R¶›œ¤òÛRStkp ¾yª@®ököV”Ppz”è»w¼§%³œEƒ¥¡“c”««`7‚3ÎNwðÌONèd€Ê|omß¼ýWB_ÈÒ¬žõU_é’É\õ¨¸îá0§|Aïì‘<ÄÔAß¾À¬*Ë4…ZìÛÆ[.ö\w§¢×|{JiŒ5‚ KÂSæÃÔï@Í¥O %A'´6/. yñ ÏYw{2- ^hõÇ¡h)ÓÃÆ^ŽƒËMn‡QÕ Ü erÚQnBk– çv ™àùTd´1 +-{ßM+—b´ÎÊ!'¿K'†KÅÞ©1LdCÛ2¾ã*úÔY3ÔlF˜š¦¥ô;:;²ïOÙóÛcŒ$ÚÞ|¿®hÆe§TqS½&#ú ªîøgŠú4ˆø™:õP “ETbÛ‰Ò¹aæâûnð’ø~4•þîæ~Ax€¯6ýSá}G*iä©%EAÌ+!M¾â_¾fèIKœÄ Â>æ—¡ýAr{ŒÒ¼û;*½]ÐÉõí(N§JÙ|ï½Þ£2tÀ:.ôIÁ¼.ã— ‰Y <„rš ¥¬ppÒ‡Øʱfá#%Ÿ9Ö!Üræ ©Ú ¨Òþ’ƒnä¡×.NÂëÈ÷GM¥«'ïÇmNˆµ9U§¾TÍqH\>Yhj¤—qËSû¶©.Ž¨TanÅf%3¥·dù$œŽûÈ0ô/‘cªœ©ÓñÒÔz*ejæäŠ>;‚ìípêyØ‚{B¿$1Da+‡TÜE-ÐKg+ç½S¬—šR`#QÀA]ó…òçBùÔwr9Ð3_Æ<­•ÍnÇ:ûƪg“û—0›Ñ?§ïéãµ MGQo¨ƒfÀå\_wŠ +ÃKo<*ááf™ÜnJ±èûeG>ÿÏ£½òBÃi®•"šròh Jçü@§nuX¤u'«¦:}yßµT‡cÊ%„ä1ì4Ÿ&fZaH{¶TÈ]<÷ÝÃ=‚UóŽJshk[©¾Ÿ(ìp2×´¿v“²Üióû¡ÎL½ì¦R/›)çu¿VdN:…É!ݬsÀFŠû%Í‹{yA“°nDv‚¦û?åä%æ/W½G,“àôâ©ñŸ*í¥ç:@~5ñ&˜/‘ÓCÉ®kȲÝ`*N/´ÌýXœ|rúß}ú¬,^|úØ1 öB3cøËýä:`æ*ßQÛj`?¦À뇎iJ%Qz^<\P¢Š™_Áþ…˜ÞiH[²EÞQJV ZåøÅzyôˆ…fš-ðbèxá}¯'Æqt«ó‘YNÛ7eÉÝøÈÉȨðwOdMn(%>»“ ˆä|þ«áü÷Š…sCÇÍ‹ÊŸàlåF¿ŒvjQ`ê0•ÿBÞîâ³=6EnžÎpŠ]þ 9(&½0ž§'pø&‚–­kõáõÂîQâzTåÈä&vêI—…»™ãKþ<Ü¿¹}½ öÄK_Ï ²øË9MìØÿ'?œÍö,ê'ÓÍIjûF§[úU5f “W¶Ç‰otÆD ã¼òüWnÂ#Ïq„Ú£G˜:KQqÕ®ýØÚ”ÅNNØIüMóÛóA×—*ÿ /Í_™ +endstream +endobj +3015 0 obj << +/Type /Page +/Contents 3016 0 R +/Resources 3014 0 R +/MediaBox [0 0 612 792] +/Parent 2998 0 R +/Annots [ 3010 0 R 3011 0 R 3012 0 R 3013 0 R ] +>> endobj +3010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 462.052 196.262 470.874] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 260.092 156.901 270.996] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +3012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 218.557 151.362 229.461] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +3013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.132 218.557 188.828 229.461] +/A << /S /GoTo /D (group__avr__interrupts_gad5ebd34cb344c26ac87594f79b06b73) >> +>> endobj +3017 0 obj << +/D [3015 0 R /XYZ 132.768 705.06 null] +>> endobj +2908 0 obj << +/D [3015 0 R /XYZ 199.729 464.474 null] +>> endobj +325 0 obj << +/D [3015 0 R /XYZ 133.768 448.63 null] +>> endobj +3014 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3024 0 obj << +/Length 1887 +/Filter /FlateDecode +>> +stream +xÚÍXÝoã6Ï_!äp8ˆTRÔgÚâÐý¼íC·M ôa¯XÈc«k‹.%'›ú¿w†3´åTÛnïáp ©áp†œÏ-‚u ‚×Ï–_¼Jò Š«†å] •Š‹¼ ò*‹óJË6xJK±ˆ¤"ü—YH>,¢$akh|CÃaÐ4©iø[«ÿ-DÒë,`&bcúa¬û‘¾ºžwøqØÑxF½ÓýøÏE”çR…y¾øiùíÅËåÅ/N/99­Œ+‘ÍîâÝO"hañÛ@Ī*ƒǺ T +¬7nƒÛ‹.ÄÔJE\B:I,’,ȳ"NTF&¸¯·p¸ÿ×4,Ÿ·”_â‰@JTÅižãíÍË×gœƒÕë#£,ã*©ˆÓêñ`{bñÄ©2N²‚D²î_qü$&‡YI«Œ=ô¬n>ÝFãÌDö±k6ÔÍë‹à[µ(Òð›E–…?°ïúV/d~ä}d³Ú<ÿWY–°^•Æ2Íþ/"ÃÛå¿h—4V)Ûø–ñhlÛiV7nºáúìÒ~|$³ÌI¤;‡ó™ÙÖc·…‹dârXuDey%>ŠâËKX ™9#ú.!?nºf³ˆ”@ãý0Ä‹(ÍJXÒ=­ÐªÊ ãFÓd¨wš–àBýšˆ+4ëa$ºÕûmÝèÉ>¤Ömkõ0ÕÜñêB†^ðÞØ‘¥=Ò–nŽìB‚.°«Ëvîá0W4Ývð6ú¿4¶ü,kÿöfùì3ÍÍ¡°ÖãYL6f·ïP‰áˆÓÖ{Mጓ")!Äì^¾$¾H&bÄœ×MS«9tV·—3G””š\z‰ñŒÎHɳR‚é‹8O¸Ú¸ûÏ„º(eååuèå$Å‹ª$ ÷VÓ]µ%:'cGWGJ×7ÛC‹™‚:¦RÌÁdoM±c,­{Ýt(¢¡eœn5ï…ˆz*l¾@ýîÂt‡³P«ïí‰7g‘ôäîi—ÉÄ–Q–CÅC¨”¼¯TAûH”½YÀ±yBèª,ç{ªô‰¥`×C·ÝÒRoF"æàÒhT—~=½îÛ7&¹Š3yŒOù/©â²,=×·†TÆI"Ù"\Ž:7]sIƒ4þ½JØ•‰ÔËÂú4§PÅ•”'…>Cšíëa8ÖMãSÚ×tXÛ­ÐFÐUÀÞ +ÒþmÏ‹®¤¡­§[k,O÷øÏt“j̺¬a\ì?³jDy§2û+…úïâÊWlQ\Òôš†Ë7ü;Þß¾ºyÿæíûo^¼¸Áoç2¬5øw},:ÓhœªHÄU•SWÅß™Q_ÿQL(¤C Âw‰WØ£1á‘…ÏqÈÑRk[ït—LC[ƒK˜ƒ®àXF +V¥¶¶-‘ŸqÕ41{ Ûh™£Š†˜XVÖ+ƒÇ¹Ç,žZ×aÛÎuˆ•k)iH@c}Ç•ØW3! Þ¬T1“$2¹ |y®Ÿç²Í¡CføúäSÉÒä'SæÄÉ8-Ž + ôý\1§‹ŸêOZ¨pI] =v»î?® €E¸  qkß/‘ÞÔ–7Œ†(£­û!¢J óÂöÌÈwÆîžæRןRŽÀ¨-§æí³7ž *סÁòuLéÃΡ‰³LwQÒ·,¼Þn¹tºÏ;¬>žÁ¬Ø¹ +ðàúùŸ#×ô„\%#×7(jT¦`ég%]Iß?'ÞÝì¶Ìøóa·§Ym²„à‡ŠïølÃ27y } ¾Š$”Ú´¤S@–í÷;³ õ†»G_“ý 8FûßÛ…*ÂhÝ®æqäõNq1KÄtÔßèˆ +iàÊBÝÈøtep†4c–€‚y5›3 8ÛgCôöS “{—Ut´§Ã¼šð,Ÿ±ë1Ôÿ\µào xÝë?MVŸÑ*ø|LÏ3ìzR%Rá'=L:wÅ<¢ÀR0BÂúPCÂŒZ»6RæÜ.ì#ñ™»ÑÅ`QùzÅ*hf= ¤ð#>^¤´¯Öäž@3mg¤¾fùÂ8Nà‰k[î´2”šÃxª3nÌs€cÙ‡W§é1´Úlb¶v)â¼x‚ç—Î*ÅÐÓdÃ`‰Z­J¡·÷äp°mKâ#ÃÈA„S«kk‘¹%QÓý P«9ë³?%U½Ô_ù!Éÿ†–CŸSåô7´²Š•ÿ çµî`y íŸ˜Ë ?F_è†&) R\'ê ºû‚‡%Ïœ{}£Vÿm·b +n/ÌÇǵîŸ^ù7èoÇ +endstream +endobj +3023 0 obj << +/Type /Page +/Contents 3024 0 R +/Resources 3022 0 R +/MediaBox [0 0 612 792] +/Parent 2998 0 R +/Annots [ 3019 0 R 3020 0 R 3021 0 R ] +>> endobj +3019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 589.603 196.262 598.426] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 384.421 182.585 395.325] +/A << /S /GoTo /D (io_8h) >> +>> endobj +3021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 254.717 196.262 263.539] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3025 0 obj << +/D [3023 0 R /XYZ 132.768 705.06 null] +>> endobj +2909 0 obj << +/D [3023 0 R /XYZ 199.729 592.026 null] +>> endobj +329 0 obj << +/D [3023 0 R /XYZ 133.768 576.072 null] +>> endobj +2910 0 obj << +/D [3023 0 R /XYZ 199.729 257.139 null] +>> endobj +333 0 obj << +/D [3023 0 R /XYZ 133.768 241.185 null] +>> endobj +3022 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F14 2650 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3029 0 obj << +/Length 2714 +/Filter /FlateDecode +>> +stream +xÚÅY[³Û¶~?¿B 5>b‚IÏt:±»ÉLk'><8y HJbL*/>>ýõÝ(R¦Ýö©/°Å^¾Ý…‚Íql^ß½x¸ûöUh6™Ÿh¥µŸ˜tc²Ø7™Ú<”›÷žR¾ +·;÷W»U÷¸Ý…qà•–Û¹º¼¨¸›·Òö}uÞ7UÇÃß‚ ldIí–lÃØûØmuâíŽåþ/pÒIê™dûûÃOw?<ÜýóN»ÁFÍØS~Ä›â|÷þ÷`SÂäO›À×Yºy¤¥çŽ`©Â›Í»»Ÿï‚ѵ;ljê˜ï|Î?àE‘×4õêÛ̻ؾ¯÷PËÔ±ß*^™Ámhª¯Ûc#¤}—·ÅI6jû¡‹¡¶-¶ãU…mËéyÃ3öRu9z»‹@F/x +\„äg±0;Ûµ‡Uì¤èضyÂ^laüHÐæÜô'Û Ü…#Žw™3è §Šwòn«RïXÉâ·/¹ý-ˆƒÑnugÇã‰ÏLÄŸ>¢0mW +{‡Îž×.ÂG¥Æ+Æ®«Úo_ ÊÇAâýx`bÎÍU¸æV¸ J¡µ²É^vûªä^YwU1€xLìÝ)3³óíùR³Ù¨­*⺠ó¾åzp—ÔËAmÉ}²h÷OÜÂÆûºëÀ!› PûõEÖ/î¡‘¼OÄ Œëá$‡pÓU  ¹i–©ŒgÙuƒûJë™Íkeü(àÄ÷¬§U ϵŸ)·u@wßé]-ú¢ Þ³c?žjÒ vë¦áŠ’{¶uXQÎ ‹­È²·¿l£À{ó7â›PÎþ´Ì" +Cp½7µWP.P2ÏÐV@·—¡>ÿ+ÃDÝs;œò—|Ä/ó®ÎÙÙanìó£ìë–w\¹.ºÐ hù&ïª\Ž<0¥°ÀÜšû¤»X,&âS Í‹aÌòb˜EóE<ˆ´÷ÎÊYÈÃÖ3q¾¼çéK ]Ê-Ór`BǺØÜ`Bxáa/KZgÂ^måB½=“”wÛÉ*B°ç‹Oy}î–ÜŒr"ü‚©}åd½Ï"˜¼[he ÚIö32H]T7jæÕ+Ìc˜êzŽðVž©bÍÀLkyÜXÍŽi^:[b:˜.¥‘a|™<·åÃIà3u†ôUú]‹\»KC²ýTä^IæõD0! x÷뉎êÐ=±F±o¹å/ósMžŠ'éÜð>üeB•úQ2¡Lþ±Ã¿4‘òÓH»u÷µî´²îÁjŸH°0·›¡(4E*‘+q¦ m¾ôk?pï¸EÖñr‰%L^¥Å7  "Ýê˜å¢ÑÑÂEàT—L‚ƒúŠ»¢uXÅŸ¯ !O=A¬fC‡Î^>Æ®­dWËðà´‘#Êj§GpÄ£¿¦uHÓàËÇ™yuˆŸÀ†ŽSqN ¸þõ =’Œw®§gó¦·Ü;‰8êà2RN±°7‡`\âÎ/˜§#hz+·["‘s"ìq„›’‡þ5] B·”e{!Ø=UÛõ ñè0SËÊóØß|›Tåí¹¨òÚÕ)‡ ´ÝÚ®ÚÖAÆÚÆN•÷5B:OœtaŸE¹:Rï’x-â>f@²ÇÙÓ´m_ÑÕÂÈ{²#ó-+ïV „˜Ø¿ò ƒ¦b-Þ*@<éÆÐ}ª¾œB¼Kç?·IòñÄÏ’@¡ßøÙ‹¼‡ä”êŽ3üî(©þ/¯ï6ïiþÕ6‰¼ï¶qìý,åF[24ÉwœØÞîX³a„r®Ž|•&ÿ—bæs¬~ÂÈ×QÆü\!xì¯ÌqéNM짙ÉÝqeoù‰žðvaOÔ%Æ•}3?Ô¥‹b ¥#P_èÖIe;«K +¯0l¦xÑŽç½;>o¾9U#ôVYä‡Q²ô˜ÉÀBF5(DÎàÐ%7•&T÷’ǘäÒþD{öŒRU™Aõ<#Ž ä ¨ÒÑ*&MÂ;CGË”÷JbuÏ+Üçh*í7X k>³ÄÅЄN F]Tw10)aË0!yjª¡"AË„ ùLî…˜óP*Ε œ€Sp…k5Õ7~¬ÌÌrÎ(PN÷ƒÈTv›î¯ ¢`2õP鉴‰3ï’BmØ·hÆ’48}˜i&A\•—2e$Íä‚ëpw¥[Õaçê;é+YÖÀÓ(@ü¨„ … 2&¼Æ8N/2_ëxyó9OÙ—Ú…l„_$箽b{;v+¸”m9‹H}Ž¾îü!h(Š¿îý±¯ó¹÷ÓÁP9b5†”¶æ1TòE!Ã]7Í/²<Æh—PÝb!ùËJQF‰T˜04Bë)èr¡”Î]ɹ¬œã,mpîNKý8÷˜'9¡•)—à§àŒýüÈDꉄ€Ë‰dz²øÒƒ„6)! ˜Æ¥«.…J¢·¢ ÙVùß ÄL§æÊ7©èɃ-¶LÚË7ƒ¥´Æ¤23¹Kv#«/A PA{¤›WèEÇjœ b5‡$Ñ7RH½Ðít³uSOOd0*ó!—ƒž. +ŒÐÚ¢`Xá +\[¸½•¾¾Ü(AC ¹0SR%8—Á%c;c–æLž\€Sßk}ss#ƒ/öRfÃ,ºÈÆ »ZίÅö–äIþQ÷¾ ?à%½Ë2ܳ‡ ÷s¯B ¼þû?xƒ•”ƒcø:í‡Z]ápßÿÇJËwûA-ý÷¨ü ú<_$Y®¥ã¯¹]æÇ>a›LÂàŸÙ!ÅÂl}û»ó¹ÿœçꘫ0¢ã•G–Ûƒµþ¬»v“;4ñc—Üq2‡òh‰™ãÐLÖ…T:ö§AMÁ¿›ž5›¿”=&¨ÅD¥v¨$z~ö²UÍ>£Y€ˆë¢æ3a¼—á‰Ì#¦¤’;âYîSF^òÒˆÊp¢ùïî¹cå N˜—‡±®<jå'ñHvŸÄJ„¼t\'Þ>MîŠËZr¡ÐQ–Ì_=£*cÌE£I„ÀgæÐ'Ì°ÝWnŒh9ÍÀbN툲GwŽ™Å5¾â0ô¦“c‰îÂ4Æ‚1@Füg€ƒÙ4¾» xÊëmÒÊú/i# ”^ó·Ý¯ùý—¹…!‰£Yv©È{ U^_‰áÖF§Ë”u˜ýÙaÀ#ºjþØ üÌÿ"Š 'J²E°’NPRL<³NøM§–Þ\’\Mïî ŒøÈ/ä9 ÒC?°4¾°°ú{¸çËBa£Ópí/³ F^f©'Ù„/~iê™ÌÉ&/•/ݧÈôñQŽßŠa‹kRÏ/'Øã?Pf…AèýWýówõ¶‡±¯ú›0r­ÅgùÙ„Ý«ÿ¨e)TŽÿËÿiî¿CAìiö?Z +R7Âýk³Ý›?·§‘;ßWw"nTð<ÔÏUÊ£0¤Go¶û¼È†_vØKªú½ýô©Âí•ÿ ’©Z +endstream +endobj +3028 0 obj << +/Type /Page +/Contents 3029 0 R +/Resources 3027 0 R +/MediaBox [0 0 612 792] +/Parent 2998 0 R +/Annots [ 3026 0 R ] +>> endobj +3026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 446.522 196.262 455.345] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3030 0 obj << +/D [3028 0 R /XYZ 132.768 705.06 null] +>> endobj +2772 0 obj << +/D [3028 0 R /XYZ 199.729 448.945 null] +>> endobj +337 0 obj << +/D [3028 0 R /XYZ 133.768 432.948 null] +>> endobj +3027 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3034 0 obj << +/Length 1574 +/Filter /FlateDecode +>> +stream +xÚÍXmÛ6 þž_a ê`gW~·o(†vëËŠb]ÛÛ¡-ÇV·¶•ÚNï‚aÿ}¤H;vÎ×¢ßö%¢,’")ò¡al a<[<^-m[¢Òš^ñŠj:^é9z‘&­d'švj²º9ÔYW¨ú祆~b†ñòÃêÅâÉjñyá€ÂpF;v"#«ï>#‡Å†°½$6®5kex>°:(Xo¯‚à ¾׎"×CÐäùŽßU'/µ!½ H‰±T Û "pIæjé@ØÔaiy®cf$Ò²UDZ‰*<õ¼‘¦Èµ…ãÁZ‰õgzamÛ.]·Ä;Ù5Œí¶cÞ¶¨3Iª»™ªöE‰±ÆÙuQ–lEžO8]S.À¼éštÆ&'pm7öûî[÷gŒq1ec6ªAÃòßöbŒ VÒêQlZv"œoÀÙÛqäÑê“›´Ú—g?L‹ì$îšØAˆâlÂâ÷ u mŸüµzóèïW¬Þ>üˆžãg«ª²Ãô«ä6uܘ?ÞÐÙ,«5Ä˺.º•í÷?h3…a%¶“ Ò/µÍ2Ö€ÕŸ”þrÿ2SϬhÜ(eÈ·3QµzGñy¤S«¥†¼ä2Ú¥]Oñ§\®—®0Ûm_kU±Ý1×V2‘©z™˜Óìz'¹Že %ZÔ[˜Aöµ[ÈŒµ«M/Ÿß2a—¶}ØƧŽJ\Œ®­ReiIÓ2]KMºæZBÚÈ œÄ}:#KÑÑØ‘uH¥Ÿ”dK‚Ý®hÏ´y„;$E\5à}ÒÆ# [$—n ¸zê…Á©±/œé~/ÓF#[È‚ßð/XI’¾¬%Å3¤xÊÜÆj‹ÍÕîТŸAÜŸò¶Qû&29ÕÎÊáG9/‘ß@Ñ1’Ù0-Î,Suyœs1Èr#19”È¡0¶´Ä9aFeeÊIL)‹Ñ‹NøÎE`sÓ÷œkŠ¬£€!Äèæ÷º`7¶D› #Y3c3Ùô×|I6{ÎÉf¤!máÄÉÇQ”´ø%¥¡>Tk@ë…ÉzßÈ d +D«ô¸“h(*›ÛoÆ\½§1Òza¿«/L’$Pûe©t ± ‘e}œÈDf);옄“vø¶ мžØŽŒËZcÊ;¥Ù§k,¥´Éi¡é=×ÖŦšÝÖ76ÏSö´‚œ 8>¶óêÇ¥Œv=í(×õAò gåqWbÌ˺‘ŸÙ7çÌ·Fv‡¦æËP£*¢(%9#Y¥À$O­ì›(ÜçÁíh°¬ÛG#ÃøÞJ›ø–“ƒ;¥êÝYßuTˆ°ÓCëúxbk˜dß`<$79;«½Ú9ugAžxf«Iœ­ÆÑzô ùp.ye7´‚Î no±u\ø H`…»f˯¼7ÏÆ;½þtùæ£e˜¯ùYçô\™€&ÁЪ¨¸Œrð`Œ£äó´½Ý,‰á䳿àu"ôð-Oð#Müéö=…úÙ—rÏSï{ÞÉý»8„3ôâñßЧ½þ´ŸÉZ6i×?Ç .·Dü*3"|qéz—xzæ +ÁÔ{œê[ŸnxÍ. VY¬YÞˆ´JusÜB'> endobj +3031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 175.058 196.262 183.881] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3035 0 obj << +/D [3033 0 R /XYZ 132.768 705.06 null] +>> endobj +2911 0 obj << +/D [3033 0 R /XYZ 199.729 177.481 null] +>> endobj +341 0 obj << +/D [3033 0 R /XYZ 133.768 161.792 null] +>> endobj +3032 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3038 0 obj << +/Length 1646 +/Filter /FlateDecode +>> +stream +xÚ­XÛŽÛ6}÷W(ÐÊE¬ð"QÒ¦$H›ËCÓ6ú Y¢×Jdq+Éë]´ý÷9¤LÛÚ\Ú>‘g†‡£9c“à* Á³Ù“åìáLy” –ë€r¥" DžD"§Á² +Þ„”F”Ï”>WsJÂý|ÁV +Ç8\}³¢µ¯ìŽê»ã4Ü‘®ØÊAv¸ÔÑîz×–C­Úïç !â<ùüíòåì‡åì…€zÓ('IPngoÞ’ ‚Í—‰xž{£º x ªTl‚׳_fÄÂp:X8Ò(O =‚%I#Æ„勺-›]%!8曺†»kÙG›ït”`i‘G±ˆ'•‹›îa­êé^¤rHÄ"õE%×uk¯<â³-ÊNiHÌmÆÐG¤ÜÖAêBÐ;Nßzß'Àââ­[þº:Í–ä¾l‰?!c~õëò‰} r[Úø£ÏO‹/í$É™Ó` |÷ű&Gç}`:9ì:Os1ñ©˜…òJ¼ò +Y%YŠ*Ë <-c)˜#¬ë\¸ª‡«}Ý48»’­ìŠÁQ«w=/Ue¤Y¸ßÔå…uc«¬–œ³$¼™Ó$”ÖvÙ¨Þš3•W»ÛÃñyÈÙV²ŠFL Ð&‰’C²¼›ÓPu¸ºîÔª‘[½È¢«{ÙãÆ~c|ƒtp'½ë‚¸¶ŠeÑ4Úç‚å"üíüT©¶×P :÷Ò96h!3LÅ\ë ŠÌ!+ò°(‡hß¡ÜÒ˜pÞ`r£¡+šD}µ>ì›G²ð84N"’ pkÜ™üšÈ΢DP§ÕIý0Wu\ÆuŠíúZ2z ”zî*eIRgãÅOnh –9•ºí‡ngðÖÙ iÏRn¤²¨lmqÄcvŒ™¹1Ë 6Ë-ù³òà®øÕ V2ªxWU?nöÀÚ¡È<¦–èÆ~C°·ïêAúrlX`«¶§¬Ãv:‘ óŸö½îË^Sè]çh°²Rï0/yFMÞíþ_røœ–þˆ\§lä[aeòA~H’ãBž%S…œÆ§ô ù„Ù?ð~HÄëPáÌæÄš%f“Ѭ¦ ß,™ 6»uÒòC¬³ÎŽqò¯•<‹Rþ9¬¸ÿ•dÏü?P²<â‰gÇç2k¹Ùáä©,qã@Éãš„õ +±³µ®.] S`»9OÃES¯¬…•­OOÕí$úé•ÿGÝ +endstream +endobj +3037 0 obj << +/Type /Page +/Contents 3038 0 R +/Resources 3036 0 R +/MediaBox [0 0 612 792] +/Parent 3040 0 R +>> endobj +3039 0 obj << +/D [3037 0 R /XYZ 132.768 705.06 null] +>> endobj +3036 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3045 0 obj << +/Length 2275 +/Filter /FlateDecode +>> +stream +xÚ•XK“㶾ϯÐ-RjÅøæ¸R)oœÙØqyãÝÉ!^»¶(’¡…ÑÈIþ{ºÑ Š”˜Ø¹H`£Ñhôëk@,v ±xw÷öéîþÑ™—Åð÷´]È ð’8]ÄYäÅ™\<•‹OK)=¬ÖR±ü“YI±<­Ö~$–¥¡ÿ¯é-òš'ÞóŒi:žqnI“T§úìÌdvÛ×E§MýûÕ:ŽÃl™ˆÕOOßÜýñéîwN r¤±ô2-ŠÃݧŸÄ¢„Éo ²tq²¬‡E«Ä…ÕâãÝ÷wbb1g†(ñü "3üm%áè¦_­ƒØ_xÆ –E¥ò¦:µUŠÝ>ïPÙûÇ  ¾—ˆ ¶µ"Å«AJ|‚Ì “бé–÷4M£ŠŽ6 ¬½UIS[Ó¸Yƒ¼,Õ¶Äj¶W³Ú° ðŒ‡ +,Ö2ô=™0KF|èoyÖõü‘Ä˼£+¥nQ‡Ã¦B=b6 i\˜ÒòE¤ÝdåÆ”g^±½šr^Ÿ©¿<1ÙÖÆ´‚l fšèL’FñC_šCO×¥²êbü©t;Ð 1ÝR3ùeíI¹µ‚ååƒ D@îß:;ñ²DHt"¨å^*bRëÅèÒ© îYÛVuŸ7ºk?£¶ŸÙÅðl?ŠH¼˜ +ô¨QzP ýL§–ñ¾õDyHÂ~kgB/IýňŒ^~3•`?yû ›H€,ö¨eµã•ÿ´S™a¬õ6}€Š‚ŒmA²„Ä,E¡æëCÃ&¼m㇃$ØA +/²y£‹Î´ö_¿»hû…‹U/“©F¹Ó(ÄŸ:*›$¤ëóÃØ|Öm1Hˆ‰Ëß°Ê®‰„Æ÷g¼¹U7Z,£íXÆW6YÌ˪ü{d“±x¨ÁN¾HIJ±üFu3•dÍBüØ󳄤|g:](ñy7ñ¼qƒ¢€r›Ú\Wõ_xfª^šš¸jöíW3j‚CÃ0v,y]Ή‰½4IÏǧ_£ë¶kz[Z.r~yk™x±ÏÖ~š×2ÒKŒÂñvC0k(äÀ4…³Cß²6lº—•Áä2z +y¾›Öå s8;Ë8Ùm°Œ!Ã9¾'Îb;¶âg¤\˜r«×àïzW4Ùi’jy¶ ¼€' + íT8¥ˆ>îbhž[y˜£$°$æ>5Ææ8Ѓ™L7£½M÷t€ÀÑ¡ëÝ8¬Ñ })ØbŒLÀWÃ}š, (¬ €œilA¶.ÿ«£±K£Úú7+ ö`Iy‡mu(–oæ›w»GסÓøó¬UU^zœfèÍ1?ɉ3ÉóQ)ÆAzfz^¸ÑŸïn/%þ¥§ÝwÝñáþþ•WƒÅëÞ3Íî>oŠ½~Q÷ûîPÝç/ͺқb]ª—{À‚`-äý¡ÝV„¡‡,ÿ«E_ó†oÑûÊèYÍ@k¹qW Û6šæ9oL__U p’A^E0Rò­µm|â`?©†ø¦´Q¶šÀ¶2¯®aB‚扜þ\CK8$wÚ‡+À×å;;}Ð?süYn›8Ú¨¹Æ§)÷,­ñ´å ]ÿ4jéˆáhlí:G˜Í“)QNKËKUTP`Ëiº™»õø\/W‘á=ç÷ÃÄKýáîà ek®4w/DtMCON¾QìMPa.>¸æÞ<Îr†îáÖÝWaaáÞÊF/ã{ˆ;ÇäÝkœLoóây¸ëRdc65;~ÁýðînñÉÎ?®à|_®¢hù=«X— |㌙ӫïìƒpwÙàÿyv¯ápIàæ> endobj +3041 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [149.051 187.837 569.474 198.118] +/Subtype/Link/A<> +>> endobj +3042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 116.83 196.262 125.653] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3046 0 obj << +/D [3044 0 R /XYZ 132.768 705.06 null] +>> endobj +2705 0 obj << +/D [3044 0 R /XYZ 199.729 119.253 null] +>> endobj +3043 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3050 0 obj << +/Length 2334 +/Filter /FlateDecode +>> +stream +xÚ½Ùnä¸ñÝ_ÑjÀÒðÐAú%˜x2ƒÝ $1,<~P«ÙmaÔR¯Žñx¿>U,RG[^ï,’¼4É"Y¬ûP³ÍqÃ6Ÿ®þ|wõî£H7:Ò) w‡ —2ÊRµIu¥šoîö›û€óˆÇÛ3Æ‚?æý6 Ú-W9–]oÚŽ@9Áh1tfO³Ý3ý£Ûº¥¡hNç²2íŸ7ÏRd|ûp÷ãÕ_î®~¹â@!ÛðE<Ò,Ù§«û¶ÙÃæI­6Oöèi#c8Êñbµù×Õ?®Ø›À‡N±à3É"!“ÿŸÈ§ +HbsɧQ,õ&q$cM}"¹¼3×–ŠbàÑáyŸ»÷ŸÏ¦»Á‹ï>J9;Ï6!O"Ó…âø°‡„ˆ4b\z¬%²Ìy hØ•}w½‚YÆ‘Ò#)eݯ!f“é%bž¾YG*ÓþVÕÔÇßM³o£Vß…Ù²8ýiüÛo$ühdúP5ùšh$XæÈc^ïW…’ÅQ̨К1Ý7î2kU¤³ñݼ‹”\X‘àˆäâLŸYÂúDz#¸­ 㤩«g:Ø çsÓöhì¸ñ™1 Ì”(\ŸÔºšö”÷€˜_@(ÚCï:"mÁ‡%P€S‘9hG BÀÃP}ÙÔ´7¢³û¶œM»wàý¾5]g@+!¸QÐ7^UÍÖOtÉ+I¯*Î÷ǹPµd3GpJŸÛæØæ'àO‹àdNM‹bÒ<èÎya÷hf2 î¾&›ÁãùŠzy†&…WXxÕš^µ[îXs&© V”SgŒ‹:Û£‹¡ÿütµ¹·$üÝ^pt€žhBÚ†É-iˆCô¿04Ã@*àV°àk‹¿á±(1 +ã°•#\8å_P;fs†ö¿;ÙV„”|¦`.HÊм§Ø Ï[/HÝ8À̈-†ç—üTå® ÃÎA¤®ÅR"_˦Ê{c­0±¡†®‡Ky»wPÔÉ +Ë*‰{-ez-'©œ†nU,˜±ü™¡G-ó0V&ïÜ”¼*±s¶)´ +~pÛ§üÙí;-ôƯøc…cY;ü4†~hP q! Ö &ZZGHI+Y”¨ìä¹[ðàpJº+é¥Þr¶"»v‡$ [É‘õ›1.óâßP’eV’QÈ(rŠ|~&0¾UÛC6)ÇJ?o9¦aEÉ\‰H¥czA=¼¤ŽC +I¹?œÓ à´'zöÐS9šQI–f}§:¬U`"JD¼TP7ìÚf€n: 5ð€²¥ˆK4iÇóS(òšU³ÛaH@(Á(ži§9Ðѳ6(ÒX$Uå¯Ú¸›­ ×Bmw†ˆUbš³º´ÒÆIG^K¡«²Ú›„éú¦øÿÄôðYë,xËEØòѤþ.Të&¨.MP­˜ šL0Uò`T-lÝÒ°T-Þ6$Sëö6ÙÙP/õ“Œud}4{û” Þ†gíñÅTŠÀhiR쌇l¡X{¥vlŠ= 3kÁÀ€ÓÖ 1¤4IÉfÔ&1`ú4ƒeŠ¶:û™N¹ƒîY•¾ÚGHÞ¹‘6P ‚¸ËG¤àŽCF\¡Ø©MĤ6œéÀÖ;¤R|q9Õq‚àÚP¹äPx¤IaéÅ°Ú ÍÖü2”Æ e ·ë½?b]Ð8`ãžšéÿÝämZZ¬9&a‚²¡h€_Ë!®ÐùU;°PŒó"ÀljäçsU·m“ Œ]Ù¹«YpýDå”ðU =?Õ&P]u«VڕǺû³ÓE,¡Žî88yäœÛªð¿B>–ßÞŠÌGŒß™¯~š‰Ò³3…‹ycjÃÅ‚oow0E»s/OÕ,šCo5´huGЈoc•€rÚsÓ¹þÓ¶³šeKµ ŒBEHCoNP“嶀Vra+Û˜@SÌS—u`߆D5fëŽvק<¤(…)4½»„¶ø¿æÜÌ:k;ø%ć}囕 #zz,‹Gò㹧¸áZž—i>•›:ÍW³¼ÊÔ¼–CœS¸AÅx‚>}¢¬‹T4'Ý›ˆ°¤:% ·r˜žJ&þ‘ûÃÃi¨î»ûááa…¢,‰¸SsÖõí`?>ØJ"•cˆÑ¡ªÇ§KoàZ¨Ë¢¤*Û†r²o[~Ó2,œ˜~˜ÂnaÈ®–Ñ!TíÂÄêΣÑQákHfT\O -´…”yå–¥£5ä®Õ}yçJòÒ¥ +rg—Ëê¦Ñ£I§‹,:~ëüÃYtú„ñÒL5¦ *Îk«´ßÊŸîûöûYòw{èZÝY…T™ƒë˜éó4Êåñ±·_˜ Èf›iÐ*×g¿·ô!¾—/¹ÏW)¼Šïµ=~(ýÚ~l¿W”0/£Âz8ùŒh›øEÑ…®Êlöû°+õ§$¹pCWú¢ _2Ž>¶£¯}D–‘Ï8¬ËŒ9†ØÁ:×I@Ñ‚¿^σ02(òv³ïªÎÅ™¥.~سþ‹Ÿ[Ÿò/Êa¾3ýˆÓœØ–0® + Ô,â6_ŸÖ¿§kAĽP;n¡2HøÅw“ñïSC(|aU€Ã.ýhõ­¢L~Ï¿$þß‘4Ò™Tó?G”ŽdêˆúdjÓN¥w½»Ç&Œ+-c8»ò†+Z ÆÜ쀚«nk¼íVfãg·Yµú¡ùö|4õ%ËÿCØŒ +endstream +endobj +3049 0 obj << +/Type /Page +/Contents 3050 0 R +/Resources 3048 0 R +/MediaBox [0 0 612 792] +/Parent 3040 0 R +/Annots [ 3047 0 R 3052 0 R ] +>> endobj +3047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.788 577.927 478.476 588.831] +/A << /S /GoTo /D (using_tools_using_avr_gcc) >> +>> endobj +3052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 565.972 227.442 576.876] +/A << /S /GoTo /D (using_tools_using_avr_gcc) >> +>> endobj +3051 0 obj << +/D [3049 0 R /XYZ 132.768 705.06 null] +>> endobj +345 0 obj << +/D [3049 0 R /XYZ 133.768 667.198 null] +>> endobj +3048 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3057 0 obj << +/Length 1611 +/Filter /FlateDecode +>> +stream +xÚÅXYoÜ6~ß_¡º•‹&Ev$Mì&€‘Ä5Ç(´wWµŽ­;n‘ÿÞµ—• -Ðö‰93œó›ÙåÖÒâÖÅìùõìäÜ ­„%!,× KHÉ¢0¶Â$`a"¬ëܺ±…`"p\Á9·jÁíÇõnç ­¯hY=mÒÚ¬m›>Ò¶YÐÚõmQ/;úÈšj]ª^•†¨0|WŽäö›Ë7’~hGžs{ýzöòzöÛL€âÜ;Š +–ðÀʪÙÍ-·r¸|mq&“ØzФ•%} ÈXZ?ÏÞÍøžõ|Êú bž ÈúWFó¾1ÖV`žìG' ìcs·j:5nÓ~ôNý#bÛ|~àÜýÓâuÚu*7ªGjtUšÝ14ÔuEÄBÏ'•®T?´Hyö½ãvZª;u\øvì΋žî +CÓz>m>ð€×M?ž_Áp„6#ŠmNñ§À¯)"{XÓißÐ*=Z­;äó\à}Ê7Úq Œ‹CPO +i¤Hák)xÒŠ¥0Ç ùŒiú¸‰·. ;í^Üü®Úæ¤+–µ«0b{UçèndB F„‡oÏéD7YZ–À6¡øb¨³¾Ð‘óÉ»Hur.åNVɘ%pÀ‰e¨Q!Ô"‹²UÚË^"Æœ ‘Œ,EGò«Fç ìÔMÆŒÊ +U÷t™WO<‡LêìײþÂãaÌDè . ÿuèú ážÇ‚­mYÙ’dÙ„`_°ØßcêQv»RFPÄÒø6¤ûg-Ïr¨À@t—”uÜ'·CÚ‚ç;:y(úÑP2´E:/¤;‚è¤,ºÞ0bÌÖIý‚®TŸ1]®—ø¦PQFYý¦báPÇV]¨ÇSù‘Öù„ÓDÈâ(Ú8m: +^È|.öR0a? –&^ü +ã§Áº‰PvÒRGb]lJXœX`-hnâóñ}Ø5@úé¡€½·b@`“l]s½RºL#ì&ÐRÒŽ>ê†ÖnÈV´KKÈY +~ÎÕ¢9=hI.\.gd’€©Y9ä ÝS æ)sÚ¬Ó>[)óÚ‹š±l™e®ŸÌcÜþq¥²;r÷c3´¯K̈ +²Íœwüm†¾¨Uw<¶Ã‘2×e4Â|eN³¬iQçR·¶‰(‚ЈÀ>Àg±0j>OG¥(fÔÛ¥i‘W3ëFߟ;‘o?s‚À~g6äΤ½ i £Oiìáëàé3.äÿ=©t׃ãi×+:nӊλ¾iumÐ;æ:íŒx4‘!†èP"ªšÎ4s4î¾h†nÊ ÔMÂC96m«²Þ@ªÎ{Ò€Òv/oFCìÃÉV±¶eAÑãXô5U¿¢ômzßž¬—U·N3ÅVßo”…vì™|y{qùË["×ѾñnéëíÕ›‹Ë——ôñ-h €aØÝ„ù¡1ùè¼iŽ6øF¡£çi{D-n‚íÓÙ”JÖú¹*ÅüǺô¾)ríħ¯|V/ÝY´„ù°¸‘ÞíÙ7Ä;[?Ž^À§€øx×'âÞã5ŒCÒò³§†š'>}¦pCŠm7¨å8×uCÙÓóW=±âæAÏÖÚ°®}´)ü‚9|X® wý0±ßj¹¥V˜˜Èó¨f×sÃîcý¨‰)©> endobj +3054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 511.764 196.262 520.587] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3058 0 obj << +/D [3056 0 R /XYZ 132.768 705.06 null] +>> endobj +2956 0 obj << +/D [3056 0 R /XYZ 199.729 514.187 null] +>> endobj +349 0 obj << +/D [3056 0 R /XYZ 133.768 498.365 null] +>> endobj +3055 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3061 0 obj << +/Length 1473 +/Filter /FlateDecode +>> +stream +xÚ¥XíÓ6ÿÞ¿"ŸP#¨ç—ÄI44ÄŽ ±~AÇ ¹‰{Íh›’¤Ü±iÿûÛݦ 'lÇO~ÏûKJ£›ˆF/&Ïæ“.¹Œ +RHXæˈ A2™G²H‰,X4¯¢«)c„¥ñŒQJ§¿41£ÓÛxÆS:­·þê–ݾwµÅµmÕg·m–níú¶ÞÞtîP6›ÝZ÷zD5¾÷&túû«§ñ,‰œf"¾ž¿œü<Ÿ|œ0œFìHPF +šFåfruM£ +._F”ˆ"n-é& 2óâ:úsòÇ„k/D”‘"£l }š.R§ý?†yÄ +ÂxÍ +’ÈÄ]”+ÕÆ3 FYì—W‚_?¶”ÔáÛ¯_¼zÿÚQí÷Ro{w[‡[–“XÙëÞ”»Ïï_¿£)}°{äHX»^Õ×xîê¿u³4$–l˜ùÌð@jØ‘£t­î÷íÖQG0;¶¢þkn ’èQ$—DRéH~kšàøx&(ŸªÞ¬bÚ¯´{PÕê:½Y˜H0L¸ (ZÝí×}@héQÞQÊ×Hv‹k§µp̸F³­;wiâÍœA¨n…t]p„Vê ·/W6 }øøõ$†ŒÞ a õ¦öKgÃ'Vˆ-Ø*;Û‘Ë H³¹F£SX͆Ü6m…—ô€q8DõÄ +z—¨b>Y¨öËJ)/B¹dnÍøA$ž˜Ý3Õ’ûx¢ež,›æœ§W[žhy¹®ž—MC\ü‚ñë%°Aœ9X`9霒„'`x—ÐXÛ”¯…UÕºsÛ(/„˜±ŒHŽ:€M¿—™ºŸ:É%Ç9;Á‰ÈŠod'ÑwøÒ@›ùJo‡E~£üÎ$­í 7ýªî¾)Ù|-:θï/™Öõé ˆ3êJb@Ñ%æÁصœ#<ìF’1ã$Ë;€”D1RÁ³$H‚Ù—VÒíµ‰ê(ôîùOñ,9JlÎò1áBíÉ0E/\·(¸"à^^žà¦é˜¼ùiúk_ÖU”¦–òØ1aCMIéW@Ù”A阤¥-}õeºi>Ý $Á?£v ¥'Ç2WÈàäú…Þq6”MŒ¹=HsGVyÛR­×xI2à–kzWð‘Ä”7ésÔ6Æ$Á¬2ý3ÐwU…]/†Í®©E·Ž oNn+ÝÕ­®Ü­÷ÜŲm6'´oâÄ zˆ¤ÐÆÏ Ï3½§R "•jëåR¾&ÁP(ù°©·:féô¦î¬6v„Uu§é”„à¨HέØLN?Å<ªõÞ33¬œK&$ÍdgDbW»À”";Ž<$ï$š)HŽu \TÍLT¹ƒU.U ctS©…[6-¬P¾[3²Ûfoƒ´ ý²Ó=rÓ÷è0 íg/ “0}`.à¤;#ŠÈœ®L9inXÙ…gj 7j;ÎÁ­ŸÁà‘Qb_¢–ð¤ŽÙ´ /ë +±øT·¾U%΀ðYÉéÖ¹1Ÿô ÇÈô„–œ*eøS1 +ç_C1 ·_.I†NÛú Ê$|4"u7âóœ$bÐMù +ÚÁíɨkØ VSó¬î²ß™óm ­rëöÆn@ÏBʼnïº^•\Œ/[µÁFkL!0Ðlãm|F‚·˜>ãÍa5¿üG_… +>(ó„p™y}s1Mé|²1µMWä[†g ‘&ÇÇ{¿xFº}µ,½b¡½œwû·¡dÛ‹)êç½!½;S_ÁÜä —L1úM\ä$ÿç‹Øÿ Á–"?þÎ ¨šh•z«[åÕ|Ñãô6_íÝæ¹.Ý&q £\\À°aO îl 7LÊ>µ1äól]/a?ß@i9Qù?\aþg +endstream +endobj +3060 0 obj << +/Type /Page +/Contents 3061 0 R +/Resources 3059 0 R +/MediaBox [0 0 612 792] +/Parent 3040 0 R +>> endobj +3062 0 obj << +/D [3060 0 R /XYZ 132.768 705.06 null] +>> endobj +3059 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3073 0 obj << +/Length 2728 +/Filter /FlateDecode +>> +stream +xÚ­YYÜ6~Ÿ_ÑjØ­ˆºå<>’¬8»Ï&8ÁB-±»«%™R{<ùõ[uôh ìbŸXâQ$«¾:Xò6Ç·ùñæÕÝÍ7?øñ&s³š»ÃF›Äé&Î"7ÎÔæ®Ü|p”rU¼Ý)Ï󜿵[å9÷ÛyÎÐr{é5úË ÍVEN“×ÜsûòÝw°4ãØIÂíŸw?Ý|wóéFÁ¼šm¨ÜÌ‹6Åùæßަ„ÁŸ6ždé枦ž7AS.¬7ïo~¹ñæ·‚Mâf‰§è03üM%®D|‹4~;pÚZOA‹Ä¹ýŒ7 +4~øœGŸâqa‹]æ†q(\RË…VC›ÅÂ%/«Ç\¼/8/ôü–{Ôœ«=[>r-xVé WSäu-ƒî3?Üî’3ïKNB5z35ïN¼ó7JÞãîTõ¬“ûªíüáy>¨ª~àÏ¢íP»ò5œD«·ÛÐsþþŽ?úÁT͑骱çÖmaU¿ßúÃÖœ ‚N jšNéƒîÃÐYÐ÷0÷ñU¨VÉ—„ì•$Ñf£±/ªùu«”rrSåûZ¯lD°›eÔ­l•º¾?žæ/òð2ƒ.á:p‡|À6v~0¨¸—d +­Ñy *÷ÀASòÌ.ï{»zh„døë¾NÒO‚ƒÉyYÝ ·öÀ­!ÍÀýþLÑÞ$@yû 0H +á‹-¬ÚsýIΠÁ­J¢{ø÷?V¤$ ¦l8ér Dz@MÒƒÏU¾ªãÄ ÒQ|g}~JÁaâz“ ÊÀ÷Ò_ÄÀ‡Ñç¼jzišv¨ +M„WÈÇ“‹ü «DE¡ªhyË{„K{©Ë1 SmR¯þÒWH*ÚR¨Ck˜È‹ŒD¤x  $r½ æ¹1ùþ}p#¾Éªi¯Iýî¸j +);äújér^åÅÇ9¤o8¨™£D·Ûo6hü‡m:/·Qäü ÞZ<É:ŽeÔ¤\–Û^‚ÐUiúŠÈÅ;ø¡€åÓ¿mSX\׈öL¡N "<ÈãaÛ´Ü^š +]ügÜD›·Áî¼éïÈH2u8ñâÐùtÑýØVmó-…G§xN©;Ý”²GÛp{Ï&L,ä,<¸^lŤàš¤ÄqÛÑ-Y)íõ(­rèÈ9.”ÝWYH9(Ϻï,töpþÇL<7ùþöû¹ûž›ÆskôÞóÑ©n0”‰…ÂwÕp‹»>Þ,óÝH¥–Ó»×ÿ|}»ÿtšeHŒÇªg§¼­Qú´M+w£;‚;ÓÃò­)­Áû*†ä,{ŒvAâË=˜fbç\Ô>«5L“< ²ó r'‘ó† Á>¦8æÁ ˆUa·’í÷òj½…žO1zšx懌á]Wƒ²ŸÜQê!¯êžœ¿rÃÁ‡æ2ìe¹d=…že­®ï Cã½t…Ú̶­«(ƒ5u_áý_ï^ß¾\Ówàzþˆ/¹÷#Ï 0qŠœ^­!5sÓtDJ. ¿AçŒ4KÌZ¾Á&z¦0«xM'Gü$^ç?WÇÓ ÜQž +OƒA÷x1º D`•·ú@ÊQŒaœ-&ƒ~<†·ÁUd*ó!ïOZWáF´¾êÞÐ%Ö#¥×Š…!2db·—XDËZ¢kÀ7û ìሲCkôÕŸW’â +Oγ^ówgÚ£ÉÏkÞýLÒ +³ØÑ.êÒOe½òåÁä¤_èÞ÷=S=Cþ¬›½v¢WÀVò-53hdéí“°«Ç ":0ªHjJÌ–6‘y—Î2ÖkF»”»Ÿã¾HÏÉ­zunj™P^$_M»Ãa'Ï\ŒOnªÂƒW±Í.C9­èÛ‰5N±\EÝíá‰Ä"y-TÏ=’Š€ò\Üõw5ûÌ`2ìþjŠãHàÓD8¶¼èÜ–Õái6Q"[áù\æÍí%©~w-<ZÔÊõrÌÑq÷…©:tœÆ£ÄŒš%-gHIäAÏVÔU£e +½¤ Å§Ø»¯9»ö)»¤|Vn3ÛI’Z˜sÊ»Á.È÷íeX»Å7|ý Ïo›þ:om¾ž2†ósWKJroàyaóãJÚ׫¹âè˜"ûÐ'3¶‘ÐÐ؈¢|ÁÙúIpÑ2œ¶@ÿ`š ] p¸¿ È®¿Î®¬úâûcãÀQéhÜÔG©+¨:ö+£O…^ö©@|ž¹å™2®¼°g½0ä  ír¯™K£_óbyã¼À;P ò¬[ÂZ`{é…Q 7ã̾¨ZÀºG®t|YÎÁ/^¤a˜l刓Î×*;;í‘óFwŠŽ#Ã3kÃÙwÉ=blOy±ìë:¦!z,qÞÌ1¯Ùe¦øq=âØR´:öB†àIu†ð±Ck䞶³¶AërËÝè5MýéRÎÌ#ÉÙÑ!á ø¾2rb²ÃxLÊÄñ™¯"~æÜc‹Ä¡2L +fOîÇJ@™9ÌLÕøÉéÍõù'ÜʳkÕZ¨šÙ›"„”¥Bà¤JpÄ2M!2Và(x¯ÔP¦…‹ZnÙŠ&.>˜*dAf‘ZC‚œ‘kSµKÖS*°r;ÌNò#½ R‡õÞ ü6ÝW¥ É )÷™q¸|ÍÍXD /(Ʊ0 +£´ÃÉ´—ã‰'äkEÅ$œ—7ÀƒKéQ…Oæ²?+Ö¯ÿÈNYD_J$ÁAþª®u.‘`fàÿ À‰r ø"C‹¦¦ GDÝ\D|Î=˜*a;/À'½È í¹¼ŠùoQéfXîRJì­ ‘á˜zìVó ÁY *²yK\§YÐ#ïÔeŽ%³ùí8[¾ƒlŽÙ™My®êX¾ï»a’Œ ?`fß$X³ ço/ä”+ã +á^ç绎'“b²çb•g!¿pŒéø¡8i…ÎFc%*7d¹øîãÈ‹+ò³Pd»”ªãÚw¶ Yoh­º(UÉdûV¹^]{™lëÒë £¡´s)ÓÍkj _ÂåZáSìeÉ­lµ$1M+Ï¢éU{Å¿êÜÞJÍœ«ä±°òÑ=ct€×¼–Z9áZ¾šôÙÚ8œ‘êlÈ©áö +ÐC–¨·2ç¨xL×T–W³Òá’–ØWm9§çiÈ×€Ž¾æü”¬+E(å S3Ÿóaásîç@hcèm…ÄDd×"Zz¹UFÿzËãÓcCöÕST’ý:3ïÖa+`ÓKy¦ÿ©DÏ>Æ|Ëdð~ì´±?‡l¥¢•»HVÿçe©›ÿÍß<û/2v³$Hçÿ"ÓÌ ì²I¥ƒ-×ÙKÜ.L¼Ñ!7Ê{á/TÊ_¾ç EH“s¡Ù‰ÉÊ^8ìåÞoÚ/€¤ë+ÿ+êŒw +endstream +endobj +3072 0 obj << +/Type /Page +/Contents 3073 0 R +/Resources 3071 0 R +/MediaBox [0 0 612 792] +/Parent 3040 0 R +/Annots [ 3063 0 R 3064 0 R 3065 0 R 3066 0 R 3067 0 R 3068 0 R 3069 0 R ] +>> endobj +3063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 519.558 196.262 528.381] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [307.073 341.356 387.906 352.26] +/A << /S /GoTo /D (mem_sections_sec_dot_init) >> +>> endobj +3065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [287.547 329.401 463.821 340.305] +/A << /S /GoTo /D (FAQ_faq_startup) >> +>> endobj +3066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.06 305.491 314.748 316.395] +/A << /S /GoTo /D (mem_sections_c_sections) >> +>> endobj +3067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.204 287.867 247.949 298.77] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +3068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.89 287.867 336.397 298.77] +/A << /S /GoTo /D (malloc_malloc_where) >> +>> endobj +3069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.225 263.956 241.97 274.86] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +3074 0 obj << +/D [3072 0 R /XYZ 132.768 705.06 null] +>> endobj +2957 0 obj << +/D [3072 0 R /XYZ 199.729 521.981 null] +>> endobj +353 0 obj << +/D [3072 0 R /XYZ 133.768 505.984 null] +>> endobj +3071 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3084 0 obj << +/Length 2284 +/Filter /FlateDecode +>> +stream +xÚÅYßÛ6~ß¿BØ<œ Ô:JÔϼô’Kï!èÅ@Ò" $ÚV#K®Dg³ýëo†CÊ’-ûv»néáhf8ü8"?1gã0çýÝÛÕÝßß±“yY Íjíøœ{Iœ:qyqæ;«Òùìú¾ç'‹¥ÏsÙVÅv± "æ.?Rû+c\l¨¯Zj½üô|$n-~[ýt÷ÏÕÝw>øeŽ?òã{‹œbw÷ù7æ”0ø“Ã<ž¥ÎƒVÝ9<U¬Ow?ß±IðÌI¼,aþ$ø(ñQðoEñuˆ ã º‰ä?ïïœÏzüÝ" Ý7‹(r¦>4¥\ø‘ûÝøïéGwh¨ÓšV˜öÍÂ÷}wµÓ[z³ˆ\á©1ÚRûû¡Ü› tä0/cvmÜ·»}UÓZŽõë*ïD÷H?*ÕËz=—æCo`À`1Œ‹N6è$9GskyÄj(‰¥€F×m]·¨ð0XU"¯%Y««^/Jjó²Nö‡Z‘¡ìhȤtzg‡ºÒƒ=Dç™N¶¢k‘ÔüûíT¥WD×ÓL¹¶‚ ¢$qW‹„¹Ú?¼ò©…M_^†6jü6~eƒÿºdBg…S1°Áˆ¦]97E»„—½2gSìöܺP{¸štr¸¯0)𘞎î Xš‚–…T¥µ}˜”U¥¨Aù˜BæÃhÕ™q],Pˆ©íÁ¨nÅt¢1MTécÞ>Xjû§½)!ŒZ6—R®w¼4Õ¢j!Üà§ÐxÆG¦;<¤h~Ùêé'zo‰Ž  ? ´Ð!ÐrS;à]†óÆrà–£Á~Ûê’ú¹QkZR²)Œ¢ _È­8ß·Uc4ìÂTÆS¸h|³Ì]ÛCÌj=äEK‡â„? ^|Åß´°dGïf ¼jtùà>Ó‹X5$o»RvF×<£Ý™Ñƒ:±Äôd-ö€ºQHº2Ï̤Ò럸P‡ªNêocÖH|,ñ:‹ ÉŠ)çÉY-ÑI-íi-Ãu‹ €4%Š²´æE®ç…ÝÀ‹h« + +£§3˜¼W¼ËçÎÇ^ÆÃçœ;§F24â^\=¼2']ߘ˜9o‡ÌóÃÐ ƒÔã±9:~glfÛÒÙ±?Ÿ]àg^’Å·,"8Wói`Ÿè,2z{J~Wçpé}}ƒ@8Ì<…óý$`5ÀõÑád'æ ½WþL`pßá¼~‹À2¬]Ù_ ,8,LàÎò 5m0!¾ ÚŒyaâ_Ãl¼q‚ضYè±(µ×~·7ð:wì5N³ô +Joàv€éØmƸ¹íqÔ_Aã-°p€y¥výeÌ=Ûû èÀF/OSÏ÷“›€S›°Ð‚.¸ º[xµ ›xáï2ènáÖ‚nâ6K‚'î&ÐM`þ'èžïýt×ù &ÁÜ‹žƒÉ@Ycf‡kFÄVÄ—D“‹]ad¹Tï윇TPJùÖ]AŒPD‹1 Gcÿ~ Þ'Ò´4HÙÔÆ^e;d–ª*¾"µ÷À¾%3JÐÚ¨n«þ +9‹<¥a;Q5Ó»L/jåYB㔜ø„,I–Ié8B–'H¢ˆYJZëÆ<ƒåˆÓ#asŽ›Ý™§ë^ˆb£ûyb¯Ûàq×]Ï’Ù pŸÃ­ãžTð"nùv¼#@!›òíÇKz̧—t¤ ÃÔýØhNFÅ~_WÄçô$1„ +ô¢³cëÆ$MY%i¬‹ÞˆÖÚÏýØË® â 6L+Z>—r8SðÀêxƒÆñ3Ó2æ^šLÙéÿçW¦Ô|eúW‹ᬖ†Õû@þâ#k¤àΈwûùI _¦‚ïÄÀ0$cèѾ§)ûÙ…G¡eZCãˆs>Pr(Íl¯‰+* {4W¸_ÀšØIc±GŠÞwÏ?_¸È/Ǿ»ÂÚ ŸªL *ÛÆ„AõeÂÄ* uïJuUŽõè äë‰3Ûj܃iŠ0aÒûqA3l]šÈ±RÄ™É5*M²eLÂ~¶nZÒÊg¿5ìkQ H\+Ë)$”NÕªÇý )%œç£á`~}ŒõuÛòÄÚT“ð8Q8Î7Íw¼þ³\c–zp$zöû9vb> endobj +3070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 654.813 196.262 663.635] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.84 571.636 478.476 582.54] +/A << /S /GoTo /D (using_tools_gcc_optO) >> +>> endobj +3086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 559.68 151.372 570.584] +/A << /S /GoTo /D (using_tools_gcc_optO) >> +>> endobj +3076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.274 518.146 400.827 529.05] +/A << /S /GoTo /D (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) >> +>> endobj +3077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.334 506.191 198.079 517.095] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +3078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.1 494.235 211.864 505.139] +/A << /S /GoTo /D (group__avr__string_g7fd4936b86eb6b87e98587044c562715) >> +>> endobj +3079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 264.099 196.262 272.922] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [299.606 204.833 359.705 215.737] +/A << /S /GoTo /D (mem_sections) >> +>> endobj +3085 0 obj << +/D [3083 0 R /XYZ 132.768 705.06 null] +>> endobj +2958 0 obj << +/D [3083 0 R /XYZ 199.729 657.235 null] +>> endobj +357 0 obj << +/D [3083 0 R /XYZ 133.768 641.238 null] +>> endobj +2959 0 obj << +/D [3083 0 R /XYZ 199.729 266.522 null] +>> endobj +361 0 obj << +/D [3083 0 R /XYZ 133.768 250.525 null] +>> endobj +3082 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3095 0 obj << +/Length 2230 +/Filter /FlateDecode +>> +stream +xÚÅXÛŽ7}×Whý’0êíûÅ‹`1‰íÙ5àd3Ö®ìÀ º)‰HwSÛg¿>U¬b_4yZ`4$‹Åb±xxXlo}\{ë»Õ»Õ_ßÉ:wóŠÝa퇡›&Ù:ÉS×ÏAT®?:¾õÍÖ÷<Ïy÷¸Ù±çü{“xÎíý&òœITGåQ6²½jŽÔntÓIøûËfú“ÛM;»Z…d$úmýRžÙPÑŠîfxà¿6çè¶ßüº{ ÞoÁ«,ºü WFª©Ü³¶Å"lä6Žã™3C½æ¤ÀÛÊÎ-¶iÂ.2“ñeN£L >ª¦·qB2îÍábÚ*s¸c<ûâ§n°‡?ˆâ·Oß„È›Me¡ÿlJãâ×K|Øi“5Å"àyÃÈõãð:¡‡YzAèa–ÐÞAϜб=#ô4°’KBG͉Ðq{ÂÌÍbÑP©`›F°‰ûI_w…ª*Ñë–丷T£-"ë’”iOP$ð+g³c437‚¤aÑBÀô2ˆØx>ùÏšÊvhH¢ ÿv˜9è(žœÀó…°®®—¢$]Íc¢ =Eûô_!K‡!ݬW€`A›f@ì5¿ŽCÓèü.m³WU aPAˆ¶ЀŒHÖgnð¤)à²d]ƒ´Ó± ƒb DÍ¢U0¸~ÅEÅ—D¯jп±€$¶±9pd(3s`8õЀÉñ˜@¶µÛ—'ýÍíA2|YÕ\G›Ø!rÅ.„RGUÂÖz;°„µKÔH6µ¡m:+T\›#Ûj½pd“Îö90νôB"3$mˆÆ^Uª$Q­K øˆ¢Üf^(”¢é,_ +æØŽ jg¸F2f¨ä0TÕ£Mõp±7WÓQ•„´³Pž!KQÅP L’ÀΛpIÕb[ïïoß±¼£!œ“ÐŽ®4ñÁä(¦¼A¶‹2ç½j +6t~ÅÑWߘ§Š¥WH‘zÊ j\€rrÄÕ¾€y&‰!P6­Z¸¢J\|ÇVÔÔà|”»^+²xôTChñP…zšõ»o¬ ÒZЈ”!d¨©’+%èêGIhÔp¶‰ÿ b)âÊCñ04Å<ů8óÆG“æd®¿“´hrù³0¦{ áµ³0ÚJHâ(4ÏΟßQO§'Cw‘ýóç˜Ë½B}MÌqOî©Þg¸åÔL°NdE2È 2AXPŽ‚D“‹‘lÜP'@ŒŸijð‚Ä5€R+¢JÙP†9›¶ã¾†Nô?ù䀦åÝH¾ŠöH4ƒ}í1>_”:û&֭܃ç_—ÄtSA¦ÚOןâטto°¹#?²Hm1» +ùôº»úU5ÏðkÞŸø¦j¿P'À‘a6ÿvšåæCž Ù}¡°`ìúv§*¯dA•ˆ +ß{„/}þìx׈ÁZ»|<­íž·ÛJíÙžÃûJ}<ÊærÉ¿åÕ— +endstream +endobj +3094 0 obj << +/Type /Page +/Contents 3095 0 R +/Resources 3093 0 R +/MediaBox [0 0 612 792] +/Parent 3087 0 R +/Annots [ 3081 0 R 3091 0 R 3092 0 R ] +>> endobj +3081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.48 614.727 410.827 625.631] +/A << /S /GoTo /D (using_tools_gcc_minusW) >> +>> endobj +3091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 533.568 196.262 542.39] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 223.153 196.262 231.976] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3096 0 obj << +/D [3094 0 R /XYZ 132.768 705.06 null] +>> endobj +2960 0 obj << +/D [3094 0 R /XYZ 199.729 535.99 null] +>> endobj +365 0 obj << +/D [3094 0 R /XYZ 133.768 520.027 null] +>> endobj +2961 0 obj << +/D [3094 0 R /XYZ 199.729 225.576 null] +>> endobj +369 0 obj << +/D [3094 0 R /XYZ 133.768 209.613 null] +>> endobj +3093 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3102 0 obj << +/Length 1900 +/Filter /FlateDecode +>> +stream +xÚ•]“Û¶ñ]¿‚s}ÙX0HðÓnÚqâØM¦n.²®}°3H„$N(B!È;_;ùïÝÅ‚:JÇk¯wX.vû…¸·ó¸÷~öíröò]”z+RX–[/‚eiî¥EÂÒ"ô–¥÷ÉCñ`rÎýîƒ0ñïƒy”p¿Ô´Êº&àà6®¶A”øZ3ÆÖ²½"¤éÚªÙúP²# ?ÒÚío>ü%˜gYúYü²üqöýröÛ,•¹ŽT YÁos˜}ú…{%lþèq&ŠÜ»³¤OÄ@"cí}œý<ãgvó)»“ŒE"!»—{TR„Ü¿ àŸ¼ÒÄ°M6θM–\Wj%øCð¿«Ð3ˆ^+Z%-·èYW¥Ã¶A˜û»þ wb§ÝÎøœïhÙöͦ«tCgt'-’~9ªMg†ÃÀ{/ß 1²”{sˆg‘87º1ÀžBh7{PÃ2„ñˆ!MX–ÄÀgé?s.ˆèÌ‹³h [ÃØ›g‚E@93–F1‘ý´…€Tè[£Ð¯\€5•!ô°î´õ-‚è\)¦ÃŒ)"ô)bkÝ `Ì$FàM$Ê vçRiñ~æ}²"®[½kåÁñåF9ÐEá›®‚àVÊ8Q”K`ˆSÝzûÒ¿Õí5F9æÖ"\Ke6mµVú{ÉpG{¦ßì ²‘‘6Gv’È7²!”M)Xã~‹ÿ”;I÷wAèk1rÒ8á‹þý„ÞÁ¯¿’ó3R2@á o‘ Œ²Üú<#%£,:ÕîÔz#;Ô7ª†'ðÃéà( !Mßµnvp ÅIBjÆbÏj1ÎXÒ88Q%¬¡’²ËJÊ'+©ˆCÒ?³Äÿ($™Ÿ +iÞÝ)@®ÅL±oªf£ð&EâÿcA[½QÆè–6¥JC•¦ØÙós?Póà°¹ÂîED NíÉAÍÏ å'sþvýašˆÃÍ‘ 46pˆÜ ntœl†³é~`TMË}o0פ•:ÊVÚjŠ†ºq2dë$ ™rd'/X\\šio²BþØŽ _ñÐt_5VI€@IÝcÿšÇ@øáÔ‡qÏ6˧5Pʶ¤¯ïh©«u+Û{"2ͳ—AÄ]YFýÖWTj6Ë!©ÍTÆ:>¤©j¹®‘[¤þÝ^Y'@ +èÆᬖ°’–°s*O@Ž«ÇÊ6¤[;% •Û|(a@>´üºnGtîP4|>e‰ó†ˆ¨=ˆH¸d„<ë + ÁÐdoÆ]Ø”µ£Ç¾ ^ÖÁÔÌ“(óß¡wmU´<k5ÒaÂß꺦H—8PS\1Ñ{c½’Ð5k…‚]'ÂQÇ~»!I­1fýnGÎÇ1 Ò_î”&Ÿa¢q¡µc6'‘ݾÕýnï.ZnÐýoAÊýe߯În¦aµu›±"ã¡¢„ñÂÙòè%u_*j]‚À¦cØþσåPGi¾Œ½‚³<}Ž:²,ÛS&Ìñ!GgJ=•`£Ô|=¥÷ݾªÕCŽó(U«d¹Zßw +·Q•¯¿Fe†¿g¦çf”˜aÁBPa¬éïϯ¿ƒ¬lˆÑéÏ-8ÇZÁä^uC~<™œÉtrU "`"©þå{‰Ï9+°¢˜‰ÔEèïºS¯.™Îž±9¼wmTyÏ·øvL +œOñ¶ ‘£Á›ïÁÜHazûj‡ >úâf¹³ŸxÆx|z®®'æ½0†b‰Çó +>0·á«‘‡·#X©Ë „î©}þESºy`);Ê(diþhžµ]*FGâaãÓ›2uïƒÔÎ{êØѶ$ÔÕ‘^…sã„©p3Ô©páb@{mœ ·@JoÜžÄÜίЋÙhHÀ¡àF¯M ä¦Õ쀇Ëؼ:àÉÃ’> endobj +3097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.225 624.503 468.538 635.407] +/A << /S /GoTo /D (group__avr__pgmspace) >> +>> endobj +3098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 163.336 182.924 173.867] +/A << /S /GoTo /D (group__avr__pgmspace_g05ca900ebf7cd121be73c654d9ccb3eb) >> +>> endobj +3099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 136.106 196.262 144.929] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3103 0 obj << +/D [3101 0 R /XYZ 132.768 705.06 null] +>> endobj +2962 0 obj << +/D [3101 0 R /XYZ 199.729 138.529 null] +>> endobj +3100 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3113 0 obj << +/Length 2214 +/Filter /FlateDecode +>> +stream +xÚµXÝã¶ß¿ÂÍC+k®(ê󊢸k²—ÉCn·(Š»  %ÚVŽ$¯Ï}ÈßžÎP–}Úm ¤~°†Cjf8œå/¶ ñþæÝãÍÝ}/2‘ÅðxÜ,¤R"‰ÓEœ%BfÀ*=)E —+éû¾÷ÝRFÞi¹ +"ß+ZÓ5ì y[ïËÊt#膞éj]D¶{Óé¡l'EóÄ¡w’aí±ìÍò§Ç¿Í+°%‹Ø.z»íxeÙ -k¢‡Œ_ÔTòS÷½©×Õé/°=•¦™—¤¨éæ›Ç›Ÿo$(ôòì”TŠ0Šy}óñ'QÀ$Ø$T–.Žvi½P!,•øbµx¸ùñÆ¿ò´5? +.\%"PÑk®N”su²«5qõyDk¬«é\ äÔVŠæ ëjô®JE +»Gˆ,LÈçý‰#ƒFðˆ?‰½•3 … +32àÝh@6ŠÀaY©ÀtSè® î_‰y,«Šú0´5¼—ëª:Ñä¾këv04-»‰†¦`ùvG®Õ7ÜÎâqWæ;Þ(;ç“ùk—&f³” åP À–ÎYc|÷W>Z¾÷Üáÿj›çbÔ˜ˆ8Iãã2c—+HïˆÂÛî‰FºkMAô°CsT`ó‰Y§½Éu?ô4Äó¡•<ïp C•‚Myu(ÊfK³U9ÀtE³ä”^˜¼ÒÓ€‘5u‡öX"ž—Aäéêà2ܾiÓŸÃiÍãtôÐ$¦À¶K°øÇs}­O—rL{.ùðÑÑõ¾í dXìqgØóyetg7;‰jPÿÆÖ—Ëîyw¯Ô"YâK _°'ˆ„ïŠæ³†Š!ÿgzþRëþéOÛ îì’XDRÁ> †ð6þh'2ÅÑbÂ>v-š…rŽúô;»( +Dì3o‡"IƒéÛwsÙ&¡T…1¼$"JçEë³tšø©÷UÓ_!™5€&0ÊI¶ §]Ï]eà+ô“¯ü ‘„“5”©Ë[  ÐZÒzNW`ÎÆ1hùc•À©LLÝ©³)x3¦±SåQ¦Ü°Pð 0à£1íû„igÌÞº+)œåeÄ»¸i|£é·úœ–.p7í˜.mÆC8âß$.ñ M_nS'ßéσ#Ö¹ëRä$hÞéüiÌ`²Ûf·åþùáýÍ⣿_Bëy»Œ"ïGzỦ0Øå>_ìd +V{Ñ2A¯ +…LÓs³ ¸Y~Ûâq—«ª`õ©0ƒÉâ}xûµ©ÛîD´ÆJ‰Ä³-Ð]©×ØBñ]+ϲMWé=-ÛwK™zízõbìLÝÿ×ÍíŸK‰¥û¾P¡—Û8QÊë¡@ÙZtw˜‹ê$ƒÔ—.^õs·jꥠSf[Ö²øS{èHc{ö‡¸ß|Ïy“Ÿ|?¨ ¾z qK^~,‡q0@gò.Ž¡$N÷ª™1O†"HÇ]´{ìì˜*±Cy•e—ò²ßº,r¥Â÷z(èWùÒŸêu[qOhµéFðr¾= 9ÃܱA¡Lˬö;½6Œ*Ðm³úû¶ÅÆ ¿Á¢‰õZ ÈÂ祩PþX³þeÈ×5 ¢nt6ä”zï0½ú+Ux˜–è¢èLÏKuàÓæ½£y]ÉK ðð‹UÕæÚº‡à?{FR€Z³ËâÝS% :J,ˆ¥Pºþ +ãÐZ¨³¦kèŒT£=ÍøŸSÄ·°¸O…ôݺï¿T9 + Ä-¡ŸÂ9Δ=t “Â؃jh+° +‡¢€ÛnPô¦7ƒ <‰² [&F­J8öp!díj(k'¬)€å¿£Ð¼-®g k¥ôÖ¼¹o­«o¹HFú ¤‰èl`œhßbŒÖ^Á¾Êö\M'c]V±WŽAƒ²9ëv§vVø±$hÁãîÐß¾‚¥×ÙLÛòM!€Þ7™-zPÍÒè?etrÀ"®26iaugÎÒ>là#Eø1a—à Á I…;–¡uÉw,ÛVZJ?,W)²ßWP>8(Ü­÷Ū,¶ÅDÖÝWMÓ†aä®#¸Þ期y[|bdXH…3¶Û ±3 Ó%à€Â¼nÂò°yÁélàÊâ 6O¤Ð]3‘Pœ]—9cwnÎÓ«”ƒ¾7V®ÑmO°­c^?Lä¾í Ï2caïGØÿº‹…c~q#sY«k¸€ ”ådçL¦Ò`~>”-¡0¢¦+©)Û÷/¢pRT^sMBdÓÕeãäpÑ +öVB#OÌ•Ž{Ì6«ÔWA/ hq¨‚A¹¡™‚å`n~èúcÿW[œaENÕ(M+7‡&g£‘iï >% `¦­h–à¯áž˜EÆŸµY dì°ÅuÈ8©¢<†'»ɳ‹qdß 6A(¶4!Í›ƒ˜œ ±T1¢²Ý)Íꨱ5 ‚p§…?lد1(¡-f-?_˜.J›J¦S8g{"bq!_W3å. ‡ÓK"‹ ;@†¦GÞÖµ!ßQR(ŠÚ~¾ÎÅ®äå®$CB§@³”ÁT}AZeÈÒàrË'·»NIoÓéÚ¯‡¶GS˜ec€55_ãcHú8Á:ñÁ9:WyÔÃÑ¡‚it Ðù¢Ä=Üî´ÚˆË&5Ì âPdûØ)‰8ìy‚ãÛçtÇ5”<çM±¶#‘£¦§¦Åô;^ £‹÷5íàjy{¨ŠËo!éÁ¡bþR7ýžò»ÔŒÙo¬Y*õ¿|au_Vẑ¨túarCż›÷“P 4ßÈžñµáò×9ÿM ÞHþéÇ”€m7~¨‹ÄÂ}eU•k–àn_·ŸO[2Ó-ÿ +®Lª +endstream +endobj +3112 0 obj << +/Type /Page +/Contents 3113 0 R +/Resources 3111 0 R +/MediaBox [0 0 612 792] +/Parent 3087 0 R +/Annots [ 3106 0 R 3107 0 R 3108 0 R 3109 0 R 3110 0 R ] +>> endobj +3106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 440.035 196.262 448.858] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.173 277.465 236.918 288.369] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +3108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.914 277.465 422.678 288.369] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +3109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.578 265.51 448.016 276.414] +/A << /S /GoTo /D (malloc) >> +>> endobj +3110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 159.26 196.262 168.083] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3114 0 obj << +/D [3112 0 R /XYZ 132.768 705.06 null] +>> endobj +373 0 obj << +/D [3112 0 R /XYZ 133.768 667.198 null] +>> endobj +2963 0 obj << +/D [3112 0 R /XYZ 199.729 442.458 null] +>> endobj +377 0 obj << +/D [3112 0 R /XYZ 133.768 426.461 null] +>> endobj +2475 0 obj << +/D [3112 0 R /XYZ 199.729 161.683 null] +>> endobj +3111 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3121 0 obj << +/Length 2316 +/Filter /FlateDecode +>> +stream +xÚÅXY“Û6~Ÿ_¡òK¨ªˆÃû˜—-'^{]çðLÖ©ròQ„’`@Ðcí¯ßntƒ’ÆÜë)€ÆÙ××ÝŒV‡U´zsóÍÃÍíë¤XÕa]@ó°_Åi–Eµ*ê<,êxõ°[} â8LÒõ&Ž¢(x;®7IÊRkÖqHѶ'¦wƒGµm%­¦vp õÁˆŽ'Ž¼âåºÎƒ«úÓ/¿ð=µßþi½)“º +ÊzýÛÃw7~¸ùý&†—G«øâ¥qXGùªén>þ­v0ùÝ* +ÓºZ=¹¥Ý*Í`iŒÛÕýÍO7Ñ3ö¿:Ï“+þóxÎÿpþmxbt¡¡hµI²0ÍjzÛ‡£rW%u0êÎ÷:±Žƒ¶¥ÑËuœæÁßß4†WõyHª`§Œl¬ã7Oà•;n™Lï…ÕßÒ¸ÑÝWÞ¤úFžÆypâ³õù2`ŸOâ¦çÅ:‰‚O¸·Gq ¨yÿòÝf+F÷ +ŽV4Ôý5Ê#Ñ{:ñ Šq…¸‚Ž\'9ŸÜåËËྕ7"áüøkÅ1)ÎV#Í^¨×öŽÏ§uâ´ÄS~VÓˆ[²‚…”ƒì¥íf˜ Ê³Æ î F+ÍHëÄHS‚†ô^·thE#;Ù[šñ +€î…p§ar'†Á‰ˆª‡§-=ØåNXA½NvÚ°qûê>œw—a‘ðîoÌ„oHË$xRû7u8Ú­GOF[^Âs­;ñs#ÛÖ±’–q°“ccÔ`áZ£÷Ô5ªô‰([lwÜÚ£AmY„gïæ°aï¤é×,ëé uC\>){¤žð>¬ÛGïðšó¨ žä–]\ä*Ä'„žÇ•ïý&M¯Ý؉.c?°v¸»½mY\a/í­ødn_:`xùɼišðh»–Ï'sÐP†uÅ—gzuËÑ6|Ž90‚¾s³úèæ_¯Ë `"σŸhÃÛ~GŠ¹ºÎ ‘®@îM³0®Ê3\f —Ž‚åæÅegÁ½hZí_8>¢É'¶>iäî…7ÁqA¸ÿ¾µ_!xC•:ýAóØ“áô4ŒF®È¶H–w÷›W?ÜSŸå<å×(JZ^9žÀQ»m® +îÙÿ.úOÛÞNô£X´KÝ#(§i†œ`ᣟZa”eºs hjFÙè~7Ò`¯ u:þ?Õ®N£×x!Å*µÝž”™< &ÐúéÙùµ¨Ú…G3$Qð‚—fZ5Š0þ„Ug|F5×Ø?¬3ŒõgDaÚ6HsÃHkŒž81 D#y¡™Œ!@DªòÏ |±®'Ûæ… ³Í²ð,AƒOG@Ê÷®N<ÊçMŠ0/c¿lëú®³˜ð-ºC™#Ó0®Â óJ_{£Ÿ§VûÉNF¾¸VŒ¸ì°)oÌ”°Ït0D£lÔœ¢½Gœ7!Ó캭(ög;@y¦‰w¢Ø½K:l' Û7Júeóå ¶H9†é9ÅVOö9œÎšYŒÍ÷ºpòï/!jö_aB겇Ô'()Ø DK…À£Yþ™G;—ŽdÁ-Ñ4ø¦w…ó ý€ˆßKÅ1¦~îÕçæǽæhü—_ßSÏ%~“¿x}Ï‘sò—GœMÀ«”$8vò!ˆÑ>¬+P§ya@JyYbo]ê‚`O¹#Ah•‘a‡øÁÌ#.YO,+‚Ùʃ2õ·rð¯±rø 0cÙºŸ;˜zYÄÿÍ‘Ò°ŽçE (w‚ Ÿ5I{bÏ©“°(“kY«HÛE¥Ê¯j69x†¸$ Þîiæ¤'ê¿i—´Ú!€@¹Æ©"{3Y^#–˜‹ò0¯ª+æ6¤ M+7±‹Îù%à €^t‘gÃgÿÅÑ84×q–]cåE}`NàFΊÁJ }º»E¥Oªµ‹6óA0’CZ'-0w½«œ",;24£{ÌÓGZLˆéº\RyøàÂO‹¦Ô8t`ì.¡")9Ã’Fi˜¼5‘”Ê¡ …ZrµÆåâU;b2 õÁk¦ª=µdñ09ƒÏ·ÎiP9±ÃîN]æàXiM3ÝÔ©G|¥¾>BÒ¥HùHpiŸÜ-1W¢¡f饞¹¯ [¿&ä#¡ÃìȈH+üJgJÐ"ÖTyAØ180Ã5‰á Ò·Èxh™ÕniäßjWQ@o1Ù@t9W´jB)âÜ.Z#¨b-?YPãeD¨ÅŒ§¾9‚Ñ©JÚDRM£k!2…4ݽ‘¿O0íRNØEeÎàþ…dãKÝ£Ó°"¼Ë~Yd|u’ÏÕ‰/”kÄ:÷)‡k:ÑŸ8ÄT5–ÌÒ˜i°~A”ŠÃH„+Ú½#‚ûh›ž SgÛ jšV$’N¢iV`›ð;«øKeÎƯ¼,v~'÷á©È¿§e úT’¦WÏM©À ºåι$úr51Gý­²~ ¶™ÏïaÍgë0¸üxá(Å/ ;àÖ·åï )ÏÉ‹“ —/Êñªbo…Yf'‡xêrsèuÒÒœ“=æ˜@eNx8ZL4ŧðƒ2ØOZöÕëÊ" Éô=èQQ +3ûr¯óÑ•Þ‚úÈðÌ°`âéb hɱ”1 &®ÖÕgﯵÈ"¼•ÃZQµúÂ@LVw H¸o€s¹à¿Wá=™‘3qWÙë @ÄÒåâù¥®  t.+¦i§ hÿ1öʃ¿ïÖÿ¤ÿÏ×]ÿU·äI«ËºU¦+ñûGõÑÅW‡ãDW²¡NFMÝ%é]\Ñ(‰"î¹èæsUá ìÁ7­Úò [þzöJ>À ž±ü//0,® +endstream +endobj +3120 0 obj << +/Type /Page +/Contents 3121 0 R +/Resources 3119 0 R +/MediaBox [0 0 612 792] +/Parent 3087 0 R +/Annots [ 3116 0 R 3117 0 R 3118 0 R ] +>> endobj +3116 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [132.772 547.286 379.846 557.184] +/Subtype/Link/A<> +>> endobj +3117 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 529.77 196.262 538.592] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3118 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 227.694 196.262 236.517] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3122 0 obj << +/D [3120 0 R /XYZ 132.768 705.06 null] +>> endobj +381 0 obj << +/D [3120 0 R /XYZ 133.768 667.198 null] +>> endobj +2964 0 obj << +/D [3120 0 R /XYZ 199.729 532.192 null] +>> endobj +385 0 obj << +/D [3120 0 R /XYZ 133.768 516.196 null] +>> endobj +2965 0 obj << +/D [3120 0 R /XYZ 199.729 230.117 null] +>> endobj +389 0 obj << +/D [3120 0 R /XYZ 133.768 214.12 null] +>> endobj +3119 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3129 0 obj << +/Length 2273 +/Filter /FlateDecode +>> +stream +xÚÅ[¯Û¶ùýü +¯/“‡X¡îR†¡hÖœ,†´‰›>¤Á@K<¶YrI©§Øßw£lŸ()¶‡íE"?’ßýFªÕ~¥V/ožoožÞÆùª +«~Û»U”$a‘—«¼Ê¼ŠVÛfõ>ˆ¢0Î×›H)ütXGYð°ÞÄ™ +zgÁ¯ëH†!_ì:*ƒaoõñhš¯z79ãx8dç®y@Çu7 \}½ÞTU”¥ZØ~wób{óËMìªUtÁ^V*[ÕÇ›÷ÔªÅïV*LªruO[«$…­ìVoo~¸QW2«%™³"Œ“Œe®u×µý~½ITÎL'ªû¦3–¡zd ì|£Xn8š±=¢¬¸ð³Ê” ×›´¨‚=þKPÅ`¯pæÁïß~øæÍ:WÁD|t÷À‹ÖèFØB ;i;¶õÔi‹ +¡6` *ÆÚ6÷¤R+…?˜lߺ9g#hQþ}Ûu<ê{IfËžN¦ç±îÉäŒTÖï~õd‡Ú8GL^¸ížNc8³Y„yœ2›·v8¾´’iyÅù×Y8ÞpoîôkkÐóî×y,’_‚è·S×Ö¤?€hp¡ç]¤w€‘ND +Ø%“‚ݸ‘7‰äž(„¾,c’'^F®‘géxK©ÖúaD·á 3\›s™ä)9 .þÀö§W²‚Dî(øjƒ®VEÈ›5¼Lbq’ã¿cŒ8†iÓÖz¤ÄSÒü)_¿Àä¾Ñ9ba AÄvèÁ“œ~”ÕÒ7î ?RñÁ—…ô8ç˜õæÀ–AÍЛ%¿×Ó85dWrTH.!¥äWúÛ@t…:U˜ŒÒ( +ZÈS dý~ðL®<¾´gQÍö䉇ƒQNîd´äTAÿÛ{}ê(zá{Âhõ’ÕÜD$ËÜçyœd§X¹d¦ïò)„À>iàä=gNø€N=2Ÿ ¯ >_1‹¨ÀŠ¹À.†c’D^&c{•ăöf3Úv¿7Ìì3£Ñ¡³˜r'BkF³rÐ,aÚ>0˜´8Óàïä,8m;Èñ…:ñû…9-®FÊ +Á±ø#À w£?rEÙ¸šRÕÊ‹¬ +@òkF&{Û²êq¢y­öèá ‹¼ ‘ÄRMà†­„zìZÌ)ÈR’z–`ÁN¡YÁÑ á?´3Q˜jAõ³R±uX.ã|nÊOIÉ©Û¡¦Pkk[#”5ÿ<íGû–¹³¢^…XÈgÚ·ž»ÜfðÍëY™ØñïB.å©ŒƒG‹¬<½M.[ì8ªÂ<Ï€An4É¡hÛUW'aTÅ~ק]ÕÜEMâ‚éâ°ÌŠë,E•!Ρ'ºI Y †ÐöxêÌ3°c£pPÉE>XÔü;Ë“ˆÏ“|0%3å¹/˜ŽW®²gXÙ:#ªH.e,ÊPÅ‘òõÛ%E¨0+ý–¶w£¨ð>¹«2ÌUô8K4\VˆCü;þûúŒ‰›` +ÃT…üFá™_¶s‡µ§ 4‚Ì-êá¡)¬¹d&¦ê€óÞ,wa¤æ¢€\l!³b#T°« Ýwsšöîaƒnixµ¦^çß@ºö\#ËT©G†ˆJpš4õZ~ûüÕ²!òªX°„¤XÄj«…Mú(¨át<¢Æ–À›ó©2LÒG櫇~´æu¸^^_ƒ¸JFW–I¢”(ÑU¬bÀ-sÌÒAþÍ>Å?Jú€ƒ³:Ñ=B';e)p„JÕ2þüM ‰|:N"NÇì…„Þ‚)*pw}9$¢PUég,ÁøÙ‘44… Ò]…ãNßnàm£t{Q1³ßË’mÝG†àý‹PI«@&Œ@ô<¾Ö€ÕäPtÁ–ÍœÃ稃ѱÝd¨ëºmàã¯ñ§¸øæzŠÙe(Â,„±åÁÛ!¨ˆžï ¦òîO þ‰ÀÿÉ2EX^@ëp2ŽÃ4*$·¾º}=¸RÁ¿þÂÿ<Gíøëw + ñg†>%²øž’¢’¤Òâ…0ËÓÕøÞÂô´–$aZ¤ ‡Ò°(ãËCO¼d¥p-§a¥Jé÷Ðñ¤²M…ÿµàŸ“Ûór₉çºþ8—JæŸwì^ÞyÞ¼¼Y½§õÛu‘ß`7ÿxÕ7Ü—]q8C!›¯Ø¾±ÐÅוþ^²>5 ++¿2=×î|×xÂÍL"÷O8yðωœK*(ChæœR=J-4¢ü›^¼øþ ^J^ÿ}F§1BâÔ +²–ᣩ½obèÍÉ ½vŒÕîQyæ_¼ñáLsgmºÎñðú‚r/'¤tΤ)¾”HÒ}œ|ùÒ@ªD8uð‰’d—宑b†ˆÖp¨;Þ–|¬- rÝÂQQÁ_!c¥þ°uæÂFôè5S÷nÁ#Qï0y4Lâ!Ú}â2³œä2árì\ötÿóØÉαS̱#¯: +ðGi¼{³!×ƾö²:sÜuþÍq€.Fƒ hŠ.ã[i|ºíðã ‘“VÒ£óeé¿wfj†Ípòûæ1'KZ˜‹ÏÐlÉòììŸØs0gR^>7—U˜ä¢Û—¦Gž¼; rGÙ&|kD©©8©z'Ï¢’g±R2ºCEöR«vÁ¦kw‚a'ïÛá·‡½é‹üoàSI +endstream +endobj +3128 0 obj << +/Type /Page +/Contents 3129 0 R +/Resources 3127 0 R +/MediaBox [0 0 612 792] +/Parent 3087 0 R +/Annots [ 3123 0 R 3124 0 R 3125 0 R ] +>> endobj +3123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 274.473 196.262 283.296] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 174.884 196.262 183.707] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.649 116.1 254.016 127.004] +/A << /S /GoTo /D (assembler_ass_pseudoops) >> +>> endobj +3130 0 obj << +/D [3128 0 R /XYZ 132.768 705.06 null] +>> endobj +2966 0 obj << +/D [3128 0 R /XYZ 199.729 276.896 null] +>> endobj +393 0 obj << +/D [3128 0 R /XYZ 133.768 261.381 null] +>> endobj +2967 0 obj << +/D [3128 0 R /XYZ 199.729 177.307 null] +>> endobj +397 0 obj << +/D [3128 0 R /XYZ 133.768 161.792 null] +>> endobj +3127 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3135 0 obj << +/Length 1960 +/Filter /FlateDecode +>> +stream +xÚÅ]ã4ð½¿"o¤h›sì|®„Ð!¸ãÐ Á±pªÒÄm#Ò¤ç$t—_ÏŒg’&݈^xÊx<Ï—ç#Â98Ây½úêaõâ•ŒœÔK#ø<ì_)/Ž'JC/J}ç¡p>¸¾ïÉd½ñ…îûãÚݧõF†ÂÍÌÚO\M‹²î´1ý¹ka¤.ímtí*] 4ôíŽ|è´öݲ(*^6{ú^LÙ•õaJ Û.Ë'ܹ±×}¹¶B%þú·‡ïVß<¬>®|ÐL8þDßKEèä§Õ‡ß„SÀæwŽðTš8KzrT¤>¬œŸV?®ÄÌ<‰½4þÌG÷OÖ7`ü4 %Þ.œ +(ABG%^†ÎÆW^$$×’›H1‰´ÍpTž +R:úþ¨1B|ðµî8`ÑŸyÎrMà¾1TMžUþ±–!(_¢f-¡Ë.áò9†î–Ñ€Lܼ9ËJ3ǃ®µÉºEÞ|¶*‡xsIsp¹†$ïŽe{?óâð}ñJ©IÁ9z"èÜ Ë,ðâDCKæ÷¹Å§^…Î}6MÕz}¿ÞDàö½ÉNšÀ¶üS!…=æûÀ0JÒE4Ý¿Áçøðõ‚h¸ªoÄÚ@˜±Ê¸<ßO§û|ƒŠOßm·?ý°}»Ý.°¹’¥Dö휌¹µ»òråÇz.sÚn»Óykôa»EŽï¾y½È1¯Ê&Mß \H–»eí¦tö†»ÉµŸäûÖò%«âCa<ãþ£‚nÐuAÀ¯"6,| O¡!à Bù§¡qûj}™z¾AÇ^8d¢7>÷È5:+Z9ÃÇnÞ£k&SC4¤ZÐË­z/3LÜBçFŸàs+ùüî醻ÑûÒPy‰ÜìÔôÃUTJð¼ä»å'‹ÉF%±[”-ç \]3&HHi3ß°¹³ + DÉ€cy8tÎLGMšW¢dÐÜR±æpíþó –¥…S¶–,)ô¶.‚suQ < ©XÐ1 Î?ÊÈ‹ãt Â@¹ËüH7\ʪ"H£_誺볪z"¼ +-g¥×h{Öž»À'‚f§mºÇ‹¸ÙÅžñ\ý†Œ¯1Œï¸÷¨¹§øUY³hÜ:ØÔ=m3ª¹pQ²^š¶#ÝóÒ…ÅÚý{‘d^vª|6±r˜–±‡*«sÍ‘eoôgÈ©¥Ý ?Ð!Q5 ÑÝ…l¢qÛ®1Xüž;WŠÐ âèSÞ…jlûKÄoŠ –Œ…ü9÷Py*–#óÞ.ð¤pˆi5LçªÌËÎ:hl^Ó®A‰¡G¹µ „¶)•|³ "äcȯãÛ*;  ôB,ÎコŠDïµ´¶‘fM+/71mÃoìC¤}dÌ–Þtê%iò¯¼><äM6]A÷é«Ðýå­Ž™).ØÓdfÚQtaÞÓC:ôAÖE¥³¶³õd.|MG;B—uÛ™>ïJÛÁvÛQV½ x“Ì+/éÜ*³†U¥Cr.@ùnÛš2+öÁ3®Y°Ý}$ÕßG5…MWò͇>3HcÛdbo¿;¾îÆVLeµ³ÐD«­öíÌÔÔÓ¤Š¬*P‰ûpì±)Á9îëSÙuD,!Ú?öºÎ‡­ºíu,fÖœÒÚ1ùô^ }²}J€ÇÆzZ~¢iùÁ‰­¬ËSâÄYž=-Äv²ßÑ‚7yÅC»ÀwO·¹¸äìÝœ± ‡òF‡ÍÚh›ƒÿK?9Ûäu]b¥ÀG÷MW”û=Õ\ %Ò¼a¸8妇. Sb>F½2 ;(£ 8§‘ï³!¼mz“ë²Ð÷Kõî=õ*†æ¦Ö ìéKo«ÙXÍÔ@RãJO},JþfùÐjàªoíèÐghm[âŠi‘¨™­l¸€«‡³æŒaÄau('MÍ<\«b^ê9¸^bVO]ïCˆQÄ‘Û¸ »bæÒ{›[ûª{~rdjžïYNjr +®k”`ì8 £qæ4PµÜ˜Q8(]cëc @€º +HRE^'^&5ìÖ8”wˆ~0M¶ByA’N‹çB¸BLÆl[4 |RŸàÛQ…i`^È:–3o¸ø4†õ°VùÙ¢³ØÍÑ5WC¨Ñì 9z‚:Lò‰Læ™’ò?Ž›š†ºp(É©|ä1æZ2qz¡ =ë2bjž›2ʳ06eÛCP’¢°ÞãŽï…Ç©‰§'>Œ&a”9¿d³r.ÄÊDj1“zÒ‡R –ZŒR‹‰Ôÿ_&‹¿ ÓÄ‹Õ¿ùI8ü;@•L&©§†Aþ5ÿK*æ–ÒNÀ×:'  /÷ZI!ÚcÎjÌÔ1™µŠÝMUî˜ÃŽ+Ï×ÍãÓ2ÛÊkàŸ +endstream +endobj +3134 0 obj << +/Type /Page +/Contents 3135 0 R +/Resources 3133 0 R +/MediaBox [0 0 612 792] +/Parent 3137 0 R +/Annots [ 3126 0 R 3131 0 R 3132 0 R ] +>> endobj +3126 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 654.813 196.262 663.635] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 282.69 196.262 291.513] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 123.46 196.262 132.283] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3136 0 obj << +/D [3134 0 R /XYZ 132.768 705.06 null] +>> endobj +2968 0 obj << +/D [3134 0 R /XYZ 199.729 657.235 null] +>> endobj +401 0 obj << +/D [3134 0 R /XYZ 133.768 641.238 null] +>> endobj +2969 0 obj << +/D [3134 0 R /XYZ 199.729 285.113 null] +>> endobj +405 0 obj << +/D [3134 0 R /XYZ 133.768 269.116 null] +>> endobj +2970 0 obj << +/D [3134 0 R /XYZ 199.729 125.883 null] +>> endobj +3133 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3140 0 obj << +/Length 2010 +/Filter /FlateDecode +>> +stream +xÚíYm“Û¶þ~¿‚ã:cªsD€àË5I=~‰cO»îõCÇñÜP$±¡È Iù¬L~|w±Eê¤Vê8M;Ó6 €}v¡ ½¥z/.ž\_|ù­ˆ½Œe1 × KÉ’8õâL±8ãÞõÜ{ïsÎd8 x†þwõ„‡þÝ$*ô»šÆ|>· Mn7L‹*o¶Dë|©ÇçÊ¢ú¯Ó ÍëMw»éþ8 2‘%~*&®_]<¿¾ø邃¼¡Çòq–…Ê›­/Þ½9||å…Lf©wg¶®=ÁVŽKï/¾÷”­2¥ÄHk•0!Õo¤5( ‚…o„^ "&£Œ$º^™›„ÿâû¿1¸Êœ–rp:NX)¸ÄÎ?6A9?ÀD¦L&±Û6Ë«ªîèöU^ÍKËr§“ðçy—[ªhô¬+·“XùlH£©„òï4þÿqÂÊ…þ%èVºÑ&Jù--Ø‹fõ:@Ù<°w̸à@ÿT·yUÔ2`ƺ$j–—¥žÐÿÓ·Dü†¢´›ŠªçŠÆ—piIäwÄÛ^WçóáyvÀò±›é¶íq®µŸÑ{Žz²\^&òŒS"±¬ó’(L#ó©¦q•ODhK–;T·†t%.ƒD“y»¢É;,uo^»/*l‹uQæÍANEµ¤9AþHÌ·tÓ‹×Ï_÷j Œ—w]SLñ–AJaǧ4ôÆCïÔs Âp„†ØiôpÕ@Â×충—k½&€pÈs G=»ÄŠx‰}A]•ÛKŠ‘ÿ@ ø¾¦òƒmòŽ(ˆjî—nµh‰šÕ›rN¤q¢BgUZàçÈ×U§@¡rK›îŠFÛý®/ˆ)+•ÿ:§JI•Å”ÏÂŒ>Þ­t5jùî£ Ôãô_ƒàvRŒX¯Í ]êËW„3ˆ¡ï„„X.±¥ÆeۇŲ˜mó®J<ŽX /³ë tÅ‚+!çv3mõO°©Àtaæ6hFÔ•EI4ež£n0‹˜ŠÆ‰±×±!ÎöXO 72Ý(ìL#è{4}õÂÉØy´¶hrˆljq?ÅPòèÅ„Ë°ÐlJív™ ¥ #™9ww´˜ÓÖ}²7 ÙuVÓæÁh[¸p0ˆ°ÐBÉvì8ï*¥Ò~S¸ßàÞoÏ‚›…ßß> endobj +3141 0 obj << +/D [3139 0 R /XYZ 132.768 705.06 null] +>> endobj +409 0 obj << +/D [3139 0 R /XYZ 133.768 667.198 null] +>> endobj +3138 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3145 0 obj << +/Length 1818 +/Filter /FlateDecode +>> +stream +xÚÅkÛÆñ»~ãôUXë}ðiišú‘p¯qÔæƒcxâžÄFâ^IÊgµÈïÌάDé$ÃäÃÝîÎkç½CÉhÉèÕäÛùäÉKE¥(3Xæ·‘2FäYee*²REó:z+%ŒšÎ””2þÎM•Œï§3ʸv´~OËín§:]·!@EKïn‡ûª›ª"¶¡}o:º[Z‡ãÿ:UIÿëÍ_ðV•eqa¦ïæ?L^Ì'ÿ™(Ð]Fj¤«¥L£ÅfòöŒj@þIaÊ"º÷¤›È$@ªqý4ùq"Ç0&ÊE™Kåk!uei.´IÉúE¦ò+ø^ÈÀ þü?ƒV iVŠ$Kˆø»X9¢{d? ¶ké°pm?ðvUuF¢¼4§gàí’/þ³Ç$"/t4ãÍÞ¾# ÿxsõêõ‹×ÏXàקrK)Š´üT±båq3ma´"ËÒßÑ²ä¼ +ÉA…kÛÖ­{`žR $ÿTÙ{óÒ«ÿˆÀ]÷Ííu¿Û€1KJ‘hsA¨¹6Hô¢È.†íËÚÞ6­=½­PBƒ¸O Z@"Pþ5퀘ƒÄ\‰Ü¨Ï’ˆ>ñ™}É'E&d^|^¨¡¿ÉQyÏ44‹\B¾è\È¢$òo«Å¯Üœï3Ô`º%wš7¯&Ñ[9ÍèNiÿÈ­¯­íT¥ñ棾2ßžA†Š2M5^êJ–ùßXƒo½_bú“°SæžGåñ¢j]Û,ª5 Pô¬v„QCÒ€-^;OÜY¢êX3@zÍ4„[@3ƒšÑ©éíè¼í™ŒéƒÃbU»%£ší04"teïùŒÌyÑV7kä̓;ry*Q^mÝ u¿rÝ`±J·åØ54íò1žäh ¾dP¼«ÚùEJÝ6ƒõL)Ä|v¤7Woë†H¦ð­»Ó™­ç!¤'6 ¤Y¯÷qo91I±O†»Î-lß»§å"ÓÉ(ŒÎ€½ê]‹û4¾_MÓxGpЭ'(­µ·¶ëÈÙˆpXïñ:Iþ½ÝÜy“~!Iû«¼¦ˆ#®Å&2?™$\Œ«j Ž{o%Áì9»ÈhÎÄžö|s±OÁÇ'ðÎWø²éáM`r1înìH"3º½€¦£í¯­Ã¾o½y mØë´]3'P6w^Y Pjä½BÓU$]aÔÜÈ{Å:Ãnm«©–LÀ‚ŽPÓîi–QF{Þ7nËDýPa*ŸóþªY¬(ã|Yú´­íªõzGGÈñ£¾¶t®f†ÚV‡NzÔ«Æyú7hÉ2þçüû«¿q¦³¥£˜<ñÕºö%^”ûˆ£ZEˆ*"VGBU  Nê ¡gUÝô˜ù5!°bp­écå›@ξDÑŽÕÙ=%îŒU=r c…syPxß4¨7ä仜ÞØeå¾äx³£ÕbÜs|¤ ú@!CÕï¦Yóu˜ƒ(ú#œÞ‡g²€[ä>VŒN²±¯ZÝÞÈ„[Â0cò™‘e|ÅZŸ{÷üÈ'I^_ØA'jÊï¸ÅÖÌô’áBâ*²~‡’LB’HŒÁ÷˜ºúœðÁ@ÜÒrx¬¦,•æ<ÎÙ/Ðé(kLÂYã·c˜ä(­aÃ×ÝnÛÅи6°Øš5÷OÐÝ°´ª®!*>ƒÇ¡ô² o±‰Eï˜Á½†p…KáGCa!~º„âØv”{^ì†íA®öÏ!ÔÞ…‚åo*|-ý¤©è+Ì‹`58HÜ^§£ŸÉG[u¡ýØÖm—«0RqãÂ$fû“&ßЪ·‡öuîm !8û¬~g;ÿj(~Ì É݆!4MV›»5Ð'´ /Àà9,óV´lªEçV-mn‚4PKΓ1ù~xIómäŒÛ¼­O†Ý°ž|IÓ8™–úzA ¯½:!5 ³øM¢L2þ.gÍq¦Viv†€£ò?ÀgzŒW¥Pp÷X +è|M•Ž·þü|~u­Ò×?áõÏ€__.F–gÏHU%õe]QS\–õÛü쌮¿‘£àý%meøÅâÌà?ú5™ò¸×ÊãÎRúúî·þu‡SÅPn»žZ©x¾¡‘¦ÆJé"T02¬}¹á®®‰…JÛUÉ=ªŒwn˪P]Œq¾uŸÉÙCƒWèù9tèà 2ªl4ÕŠ¥x|‰–ÞÀ…V~V¿_¾òSß`y¶süi2_mióÜ.h“ТäSmžª‚NP.¼ãoáà}œC»©ÉãÙº¹a 7ÜšŸ»»%eÅØäÿ›ÁGÆ +endstream +endobj +3144 0 obj << +/Type /Page +/Contents 3145 0 R +/Resources 3143 0 R +/MediaBox [0 0 612 792] +/Parent 3137 0 R +/Annots [ 3142 0 R ] +>> endobj +3142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 589.865 196.262 598.688] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3146 0 obj << +/D [3144 0 R /XYZ 132.768 705.06 null] +>> endobj +2971 0 obj << +/D [3144 0 R /XYZ 199.729 592.288 null] +>> endobj +413 0 obj << +/D [3144 0 R /XYZ 133.768 576.381 null] +>> endobj +3143 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3152 0 obj << +/Length 1944 +/Filter /FlateDecode +>> +stream +xÚ½XÝÛ¸÷_aì“ ¬µ¢¨Ï Š"Ùk‚-—l¹ÃB–i›]It%*›½Ãýïá my£m{/}Øåp†r†¿ù£å~-ß-ÞÜ-nÞÆÙ² Ë †»ÝRHæY±ÌÊ<%°¶ËÏ¡ŒWkEQð~µŽÓ(¨ZÇAw{"Š"i*{šî,‘meáj-E|:¬D<_4Úƒ"¢6íQ7jëg[æ†ÆÞÿñRÏÏwSÖpÅ2åënb½íÓsEá+=®@‰é@],c)ƒ"A]‹?Ý-þµ 2ZŠ³7 +&iº¬ÛÅ矣å„pj(Ëbùè–¶K™ÀR›åÇÅ‹hêb)—yX摸pqš‡±LéÎ_Œ£3pðãÖÞëNÛŸ¢4B.Œ‚$÷÷•µ½ÞŒVÝߣÿºêA¹5ÿeÝ j«M‡äUˆúå•ß…¯NŽ,Â2.éRaαon蜷cçtÒì}{lT«:[9ï+Ã$Kþ''Ø'¿:ž(C'O5ýõöo?ª?нšÙÇlõPmÅ^˜7³Wvì;­gŽû %'ÑäAEœ„iÂKÞTõCÙ8~ú=éûÅò³“¿]åIðz•¦Á´á}Ø(å}ô>›-¸Ó˜Ïød²|!2Å·‘)^ŽLqŽÌx™âydŠ"S`d¢ßd k!Ã2)èrß«Ûû;ÃÓûþœ£Öþ0x™°'þ±¸cÄp.ƒªG…‰WœFwäàꎘd]B ʯÛôUÿDì]oZb¿^ ™ÿ°þ‹Þ܆$}w{KÂC5ð±$8ëpgT–OåUãnœæ-ÆëÎô°@—ï%òà/½{6XaŽªwq6\#N‚Í*†'g©öã@#9™£Õ­þŽ"ðO’€ðf^Óúªã•.ÿž4çÁ^uxÅÀKÏ%b|WÔ•ž$ÊÒ)e¢±Ùk£XÔÕ¦ï!M¡{KÜðþ(©«ŽvªãQuÄT«8 ¾ ®<çñà©'Änp8@ŽsNØ1*‘?ñùÌÓøˆÉb vœÿžX€²ðRΣ@´àĪßÒì–, Ð?0œßÄîúHŒøç88™€è!Xó&0§KÎÜž¯ auÆÍ9³çasûä<(󌮀Æ QšE,2ÏQ-J“æq ¹©‹¸¹ö +Ì ˆìÍ÷Gál¯,³Õ±©j„)Î6OsFÀ¯ë) Á<÷(àÚMÃI†°ŒM§˜co¶c}ÊEcÍ>ÚªiTNM—®âã?*õ}!\:.b² çW#$zx²¸s·N¯vªW]­h¥5Po¯HD‘‰Äc0mô&FÞqXö•íêYù¸TÓšž÷l•­tÃê°vãx0Lsn¶ÜyœÿºgMÛ^\‡óEsŠ¶ÿwÑLÎ5SrÍüDÉÑ íÞÑ ¾êÁW"Žêõ¹†ö+È{ +Ú¾ò].be®^E—•êÃd˜ÅÅ/OƒVUîI¾¢ÚèFÛ'šÐsÂÊŠæG­j^gv$ñÚz87¬½FTo‰7èvl 1)3WŽ1;*ÅhbîÒxœfOÀ±‡^UÛ{ h-çzB'4´¼Wk`Cê9YBj1ò SjKœœŸÛ—ÜY‹g•õÚVÃà Iš“n“P?†§ÁªrNSý‘e ˜@RãÝúñhZô+ŠªîÙžòJ°½Aº¥4À™Gã¢`ΙÎ[³ åÎ¥ÕÌ?¡Ì²S•Ý’ ãÎEÏ›¹ìè¤ûº&ÂÝ-C§3Îàm2ðß›Ñ^Ó­Mç7¦åS@8RvÏ2Žeír3jíæì©°l}éñÿ6à W] mÅè±Ñµ¶îHà®…—líò2 +ø.Óý%¦Žø®ˆ#q…Œz¦LM…„ô@|r`s={u_ý·çê—.Rˆ¢Þ 8“.,)(fâÁ;ƒëðÃŘ¥T͸%ÐÁª÷7?¬w^ÚCÂQý@_q(×¼ž¹þÔdeÜ-a{éǪ« m, °Ôr÷kº Í£…ܘ!Û3)zPè,ž¶Î@ Uë)è,@ÏóÊ·€«D¹ßX@û©[×'–ö]…Þp9‡ºŸ"÷-4P;aj¯zÞ{à§A1ï(N]’ÛÌ<<Ï’q/¼6[>ûÏnÀgxÖEe0ÛÃmäã²'5@ršï©^£öéwEᆔ7Ÿ­Œ¦˜G6õî¸ÒÐèòyQž@ÓGíUúO'V»#µzzLÁ!Ž¢l@:ìAwž«^N`Tääô‡£8c‘Ârï«™BnI¥ðk:4HÊÀXzLO€(¡« Vg )#9¦J']ºÅaò­{¿›ý +ÔpT ,7mëjòÏP•ÎrúþO’0O²K£µ /úŒÙ߈Ê"Ìåïù…Èÿø–A$‹é/CEJÿ#Æ»s p <÷"w‡‘ˆïUMDBƒˆ¾‹åw¢ YELíT¾•+#ýJæ>m»׸SþÞ|}‚ÌùÜäÒUN +endstream +endobj +3151 0 obj << +/Type /Page +/Contents 3152 0 R +/Resources 3150 0 R +/MediaBox [0 0 612 792] +/Parent 3137 0 R +/Annots [ 3147 0 R 3148 0 R 3149 0 R ] +>> endobj +3147 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 526.159 196.262 534.982] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3148 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.961 358.468 379.492 369.372] +/A << /S /GoTo /D (FAQ_faq_libm) >> +>> endobj +3149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 329.619 196.262 338.442] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3153 0 obj << +/D [3151 0 R /XYZ 132.768 705.06 null] +>> endobj +2972 0 obj << +/D [3151 0 R /XYZ 199.729 528.582 null] +>> endobj +417 0 obj << +/D [3151 0 R /XYZ 133.768 513.133 null] +>> endobj +2973 0 obj << +/D [3151 0 R /XYZ 199.729 332.042 null] +>> endobj +421 0 obj << +/D [3151 0 R /XYZ 133.768 316.593 null] +>> endobj +3150 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3226 0 obj << +/Length 328 +/Filter /FlateDecode +>> +stream +xÚ•’1oƒ0…wÿŠaÀ=ã`ì,•¢´‘²UEêe `*Ö’üû’بi•¥Ó{'ŸOï;a+²HÈÃs(@Q%FI +`œÓXH*¢B1HrØxŒQÎý€!¢÷V¦½„zU_¤uÝÙJŸªÎ ¥nœ3U_5{[ŸIOë¦7iã:³6×~ rOFþ6Y“§„|6¦C`7iUAv ›-B>®)W†këølle—‹5¼’‚¿ñbÓGq¡ëÖ#o°Á*G•ZéÓ]­­m «uµ3©9;ŽŸ= U_Z÷Þ؉Í4²;êŽ^!§pwa•¤1ÿêôŠ‚ª˜Ë[D©(Žp¥mÒ^çŽÃÅJÊ£5KY3³Âpò9“¶ ++.P­™ö3_Æ籌qvn-ËötÞáò7ø—j +endstream +endobj +3225 0 obj << +/Type /Page +/Contents 3226 0 R +/Resources 3224 0 R +/MediaBox [0 0 612 792] +/Parent 3137 0 R +>> endobj +3227 0 obj << +/D [3225 0 R /XYZ 132.768 705.06 null] +>> endobj +3224 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3230 0 obj << +/Length 2735 +/Filter /FlateDecode +>> +stream +xÚí\[s£8~ϯð£]+ˆ›¡_¶zÒ—Êìô$ÛÉìTmÏTŠ`aSÁ‹ éüû= ²¹d§jkzÚi£Ã9GçûÎEÊh³ÍL›}¾øéáâê“nÏ\äÚð×C0ÆV¶3³] Ù.ž=¬gßæ#ÃX,±¦ióß·^¶Xê–6߇YàEe?‘!å_¼lIÌ?¥aÆöCºÀÎœ8K½˜?é'kò·ÅÒµ5cîØ‹?~¾øøpñï Úi3\Ó#W³fþîâÛŸÚl _þ<Óá:³—òÑÝÌ0áQ\,Œf÷ÿ¸Ð¸‰a¶\×í#¬)Ä-„˜:r¥m¦Ã³˜‹¸ÚÔ6Í™m9È4¸« ŸR/}åî÷;E7áypÆ*è–‰,Goªðµ¹G7”æäX Æ·›ÆZ¶‹4ì‚(™+›iñûbeÍ“ô»W†M’Çë«÷QFà'k{Y¸ÀÚü¹øD7sµBú€=’Ä +ˆ°Ç†Šf#[·Ôjrl»ŠÝb}ºá‚¾ + j²è1L„u9 vmý‡fið—n(€ï.ù?´EϾ1tÂÒd'],¾ÞVÛP…_݆ß(ᔲ‰’'/bŸŸº5÷ÒÐ{ŠÄ×YRh oY?¹–Å–/c‚ìÙ34ó2Â>†q¤;ˆœ$FŠpžÀ¬*ž[fq•öÄ…Yi…5‰)ÏE¬“”‚Æô]÷î˜íÞcÚ{ë[/d1Ð-uC­·Û$X&xpØ,]G–©ÖÃ1í Ášå®c9ÌY4K³d(ÚÊÅјÅyt>V{;¥ª  šm‰³…’WŸ £&²|$Mã„=ÖD“ŽŒ• O—Oè9p²åö÷¬‚së~”p.9þwN +IE²$*!·(«JÏUˆªdN‘=¾#»ºÛš+Xw +U´[÷ѧƪ‰:ƒÛ¡ò¿Á‡–’oÁ‡U“._{y`ÎfðÝÞWé¨(WŸÃ5YË(™G{ ¦Š[ÃØ'J;ÅKB¾‘QÈÊüèU|É: ^+“Z8‘6CðØñúR]!Ìy¼y!ÃpG¹D¿ZbÚCˆÜp äè\Áš¤Ì¿'ñP:õ£„ö ÔþvjÞ’PÕµ‘*mT|8,yÈ»*ÁS-²aôÿò<†lUŒ*ì&<)t(ûGèÕˆ·Sp¶k>}øøÏÇû¿Ý=.e&Ü?|ýøþ‹2ÊÚK~…(81YPà”ðF¼šHb9!WsÌ!ø»Üæò¯²D³õx,?1†.hŠ¬{Gø¹L×úã÷8?2,cl~À²0VkbBçªãN"Ù@7‹ãDB$þÝ#k^±YçúàªoÿCÓ I‡k"ø¸z†ù—×OI’u6JcO ÆmÁݳô)ü#²KÃ?ïË1„¨­o®nÅø¢(26!…²ƒªÀz‰ÐÐë¿—.Ï$Î>Ì_›…Hè¦*REÙÙû;”ƒ +œöv³§ ÃÀ#qjhh圣╋ Pú$N5ŒVð7+q7RêÅñ†Õ¤l¢–žÆÔ¶T˜ªÛr¦d‰áëû/wÿR`m +}+¬Õõ½Ï¼ôp Z"¬üôùúš}B»ìÔ¸Ùùxy–‡d¥¹–zEºbG¢IÖÍýWÊ‘C¥]~œdÛJÑ O!ݦÍ÷Ç„´<¾V¤è²h·•e•æûŒJëûdWAVìëÎ{•ù¤éÞzJRf²LzÍë<­tòPªXôCzúBa£ümIe!t½%bÊRïK%+׉ŸïHœÕªÎ'ðAðÑ`…Ò|wðgäuB䞺-¶ä%¤ä²9®ñ¸Äi“Í/ß Œ?“ÌÙVÕ¼pÒÙôÞÙÇô2,ÇÇîK¼ª±ô'ÒštÃЧ›k˜=ì!г``sÎצÝ}®<îžOiÁ†í×eû<£C-„¥öI“Ù­S¤³ÚF•·8ç ØÛÐÖÕßz©çwd5?ÉÅM0>ð~ºùåãé³7š­“<“¾G¶U} HžÓø§JŸ5ÿTç‡Ä" Mâj ÝàÉü#:x‘žØÁ!QºÖ:v-ß“<wû$ͼ8»LÝ‘H%ÓãúË´}V“Tõ2wbr¸€ø! †lSÖà—ùëS± ¼q¨EÄiª'M€Ù!WBtb¸Éq®=Mt ÑÑ<$L‰ÇéO¥Èó8‡<Óéê’.A*b`•×®áÕÖƒ(±Ø¥L~¨PQ@k´®°VÕ]²÷I%ÅhçEðÀÓkýøC1§*n4vLªZ/yÙ†þVpìöÑëQ¯Í)¡½P¨Æ‰+ò^ÅGWJâµRóKwA4„­K"b pÃÈ¢H7Á)uYA?eà5Ñ;ÙSØ΂_0úÆéñ<™"Áˆ*è]Cõßé¯C‹(«³ˆªz®n×Å‘ñR’¦=Ô_=€êÊtæôÓ)Ú–¥èîð†Cø6lèùì~™¯3‚ûÛ$‰àBÈJsÇF°Åîæ½QºtñkC’¹}`I «iŸØïm˜"öfHbÿòÜaàe«òÍc0‹·¹ÅÙP±ÈkŸ3D#l‹ò„fë0>y…]  œY°áÌžÄV©Örq±â}½‘¡„¸j!g ÏÔ-äjÆ[µ×ÅþYü 3(Ð7ze”¾›Ý ܇´qû¿ç„°õÛCÛñ1:)ñ‰!ä¼Á|g¶ë(’lgBÊÆš>Íïø»§î]¶E‰ßJ·‹ŒëÔÿOŽ‹ ›ûá3‰Ë[ÂkQ=°¿¶9ûðøüFû kïtãvØOº¦ñO%pEÐzå%Óta¬æË(|ò›'’¯·9ì?òÈEú +endstream +endobj +3229 0 obj << +/Type /Page +/Contents 3230 0 R +/Resources 3228 0 R +/MediaBox [0 0 612 792] +/Parent 3137 0 R +/Annots [ 3154 0 R 3155 0 R 3156 0 R 3157 0 R 3158 0 R 3159 0 R 3160 0 R 3161 0 R 3162 0 R 3163 0 R 3164 0 R 3165 0 R 3166 0 R 3167 0 R 3168 0 R 3169 0 R 3170 0 R 3171 0 R 3172 0 R 3173 0 R 3174 0 R 3175 0 R 3176 0 R 3232 0 R 3177 0 R 3178 0 R 3179 0 R 3180 0 R 3181 0 R 3182 0 R 3183 0 R 3184 0 R 3185 0 R 3186 0 R 3187 0 R 3188 0 R 3189 0 R 3190 0 R 3191 0 R 3192 0 R 3193 0 R 3194 0 R 3195 0 R 3196 0 R 3197 0 R 3198 0 R 3199 0 R 3200 0 R 3201 0 R 3202 0 R 3203 0 R 3204 0 R 3205 0 R 3206 0 R 3207 0 R 3208 0 R 3209 0 R 3210 0 R 3211 0 R 3212 0 R 3213 0 R 3214 0 R 3215 0 R 3216 0 R 3217 0 R 3218 0 R 3219 0 R 3220 0 R 3221 0 R 3222 0 R 3223 0 R ] +>> endobj +3154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 629.539 165.479 643.487] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +3155 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 629.539 207.531 643.487] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +3156 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.937 619.387 441.567 629.918] +/A << /S /GoTo /D (group__avr__stdlib_gf5085001be836a0f2a5d3269a7c9fd04) >> +>> endobj +3157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 605.629 415.385 617.963] +/A << /S /GoTo /D (group__avr__stdlib_ga99a0733f06d2b9960a1401c2721af1e) >> +>> endobj +3158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 593.275 170.47 607.223] +/A << /S /GoTo /D (group__avr__stdlib_g5ee4d110a3bb55d2eadda05e3ebedf8a) >> +>> endobj +3159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.459 593.275 202.569 607.223] +/A << /S /GoTo /D (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) >> +>> endobj +3160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.558 593.275 239.65 607.223] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +3161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.979 583.123 427.569 593.654] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +3162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 571.168 453.403 581.699] +/A << /S /GoTo /D (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) >> +>> endobj +3163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 510.994 174.894 523.138] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +3164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.882 510.994 213.618 523.138] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +3165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 497.235 171.566 509.569] +/A << /S /GoTo /D (group__avr__stdlib_g51ac965dacbc9daf922f469bdcfe00c2) >> +>> endobj +3166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.555 497.235 198.664 509.569] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +3167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 499.039 386.613 509.569] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +3168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 487.084 453.403 497.614] +/A << /S /GoTo /D (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) >> +>> endobj +3169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 389.24 184.398 403.188] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +3170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.387 389.24 219.805 403.188] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +3171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.443 389.24 307.861 403.188] +/A << /S /GoTo /D (group__avr__stdlib_g51ac965dacbc9daf922f469bdcfe00c2) >> +>> endobj +3172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.236 389.24 349.345 403.188] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +3173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 379.089 386.613 389.619] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +3174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 367.133 453.403 377.664] +/A << /S /GoTo /D (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) >> +>> endobj +3175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 330.894 451.659 341.798] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +3176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 319.915 472.1 329.843] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +3232 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 307.358 417.059 317.888] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +3177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.248 295.029 425.666 305.933] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +3178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.9 283.447 409.009 293.978] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +3179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 257.734 413.273 270.067] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +3180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 235.228 386.613 245.758] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +3181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 223.273 453.403 233.803] +/A << /S /GoTo /D (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) >> +>> endobj +3182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.227 55.502 406.817 66.032] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +3183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 43.547 453.403 54.077] +/A << /S /GoTo /D (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) >> +>> endobj +3184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 18.864 169.912 31.382] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +3185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.901 18.864 214.186 31.382] +/A << /S /GoTo /D (group__avr__stdio_g418e63921ed6259e873cd21b6c5c8e6e) >> +>> endobj +3186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 6.909 174.894 17.813] +/A << /S /GoTo /D (group__avr__stdio_g0b15be24dd9db93355e1f62937fdfd9a) >> +>> endobj +3187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -6.476 164.383 5.858] +/A << /S /GoTo /D (group__avr__stdio_g33f7bd99d40bf6f68a00d5507d65363d) >> +>> endobj +3188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.372 -6.476 203.128 5.858] +/A << /S /GoTo /D (group__avr__stdio_gb4de83c560c79bf880fa39b997d61610) >> +>> endobj +3189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 -52.867 402.663 -41.963] +/A << /S /GoTo /D (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) >> +>> endobj +3190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [405.652 -52.867 450.812 -41.963] +/A << /S /GoTo /D (group__avr__stdio_g2b829d696b17dedbf181cd5dc4d7a31d) >> +>> endobj +3191 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 -64.822 407.644 -53.918] +/A << /S /GoTo /D (group__avr__stdio_g77070c245d4ca4f7ec7d7144260fb875) >> +>> endobj +3192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.633 -64.822 460.774 -53.918] +/A << /S /GoTo /D (group__avr__stdio_g53ff61856759709eeceae10aaa10a0a3) >> +>> endobj +3193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 -76.777 407.644 -65.873] +/A << /S /GoTo /D (group__avr__stdio_gaeb1bbe21a1b9b50b207ab059a67993f) >> +>> endobj +3194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.633 -76.777 460.774 -65.873] +/A << /S /GoTo /D (group__avr__stdio_gf47f5141509d1e434f9da2b27287a707) >> +>> endobj +3195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 -88.732 412.625 -77.828] +/A << /S /GoTo /D (group__avr__stdio_gc92e8c42a044c8f50aad5c2c69e638e0) >> +>> endobj +3196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 -100.687 423.146 -89.783] +/A << /S /GoTo /D (group__avr__stdio_g2071feb5c92bf50a6bd508a07ead9515) >> +>> endobj +3197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.03 -136.553 462.448 -125.649] +/A << /S /GoTo /D (group__avr__stdio_gdd5777719a41713629a62b68c239a774) >> +>> endobj +3198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -184.772 173.23 -172.254] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +3199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.219 -184.772 220.821 -172.254] +/A << /S /GoTo /D (group__avr__stdio_g36173b4a8551b61811089198beec69d9) >> +>> endobj +3200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -196.727 178.211 -185.823] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +3201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.2 -196.727 230.784 -185.823] +/A << /S /GoTo /D (group__avr__stdio_g55b25ecbfd3811ea4495d1f235e2e186) >> +>> endobj +3202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -210.112 167.701 -197.778] +/A << /S /GoTo /D (group__avr__stdio_g19c2bbe9ce4af9f0a7e3448387004fd3) >> +>> endobj +3203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 -210.112 209.763 -197.778] +/A << /S /GoTo /D (group__avr__stdio_g3d25813cb225ca410518a3f48eb00caa) >> +>> endobj +3204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -258.331 170.46 -244.384] +/A << /S /GoTo /D (group__avr__assert_g0041af519e0e7d47c9bcc83760c4669e) >> +>> endobj +3205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.586 -268.857 287.667 -257.953] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +3206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.586 -282.242 287.667 -269.908] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +3207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.989 -258.331 459.071 -244.384] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +3208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -294.595 178.191 -280.648] +/A << /S /GoTo /D (group__avr__stdio_gaa6d255675688c736c99ebd32f2a7214) >> +>> endobj +3209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -330.859 177.095 -316.912] +/A << /S /GoTo /D (group__avr__stdio_gc0484b3e3a4d8361d91c3322440f9195) >> +>> endobj +3210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.084 -330.859 204.761 -316.912] +/A << /S /GoTo /D (group__avr__stdio_gf577dcba9afe50a9d068d0b69ac85d2f) >> +>> endobj +3211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -365.693 167.691 -353.176] +/A << /S /GoTo /D (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35) >> +>> endobj +3212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.68 -365.693 205.867 -353.176] +/A << /S /GoTo /D (group__avr__stdio_gb4f9b130166e5811519513d6178c1ae3) >> +>> endobj +3213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.856 -365.693 236.851 -353.176] +/A << /S /GoTo /D (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) >> +>> endobj +3214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -377.275 168.797 -366.745] +/A << /S /GoTo /D (group__avr__stdio_g3f0edc16dcabb5344d59d42cf7682102) >> +>> endobj +3215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.785 -377.275 211.954 -366.745] +/A << /S /GoTo /D (group__avr__stdio_g0fb7fd70cd7618f27d8219c97e61bcf3) >> +>> endobj +3216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -389.23 172.114 -378.7] +/A << /S /GoTo /D (group__avr__stdio_g0beb4fd9ff6833a364e3ce60370de058) >> +>> endobj +3217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.103 -389.23 218.589 -378.7] +/A << /S /GoTo /D (group__avr__stdio_g7aec94e711ad64724076666586a26839) >> +>> endobj +3218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -401.185 173.778 -390.655] +/A << /S /GoTo /D (group__avr__stdio_g8bd4b760f67791a54e73111734caa82f) >> +>> endobj +3219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.767 -401.185 214.714 -390.655] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +3220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [139.148 -414.944 187.616 -402.61] +/A << /S /GoTo /D (group__avr__stdio_g6c6b5b881ce8f4739777ff3a615e988a) >> +>> endobj +3221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.605 -414.944 219.695 -402.61] +/A << /S /GoTo /D (group__avr__stdio_g54fa47156a34c1659a29ed96e46e3518) >> +>> endobj +3222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.173 -401.559 446.697 -390.655] +/A << /S /GoTo /D (group__avr__stdio_g5507d0e1bbfd387fbb2ffcfd8f5dca6f) >> +>> endobj +3223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.023 -413.141 412.068 -402.61] +/A << /S /GoTo /D (group__avr__stdio_geca11dc4b3757ed4ff2f2a4950eba117) >> +>> endobj +3231 0 obj << +/D [3229 0 R /XYZ 132.768 705.06 null] +>> endobj +3228 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3284 0 obj << +/Length 2200 +/Filter /FlateDecode +>> +stream +xÚ­ÉŽã¶òÞ_áѱšµ6Ãô›%=È:q^ò0ÉA–è¶0²ähénÿý«beI­ [d±ÈÚR¬îWbõáêv{uýÞ W‰›„ðÙîWR)7 +ãU˜n˜ÈÕ6_}v¤·Þxpnû¢Ì‹êžfi•Óà®j»´,‡…î iðáû_h°]'žS×%ÍþsH‹j½R£õÛWï¶W^I`J¬äˆ é&"XeǫψU‹WÂUI¼z4¨Ç•òUâÆrõóÕOWb,™ô—$ "×SIö»ÊþІï‰\*8Ð ßu_­ƒÀiA +_9UÝÑ +uÚàD¬4Á×R8u_æ4Õk/pÖ2pt3BH+>¢«i^󑇴I³Î"Õ©g̶8öe—VºîÛòL°}Siÿ±n4Š±Ú0ç  XØîVdâÓ˜ªÑiní‰ ž‰³ó: œ×´°[{Â1 q[Þ¬«®)tË»†UVö¹æC÷uCƒ¬>žJÝéJ·­kx†ËÐó‰»7̛ޣ²`|,Jö›S8¦¹e¿¦ïäYë“e±0LI§Kw%£ö§é–<í,Ãû‰ü4©ŒÉ£mûgræE›Õ¸ƒíj%­t#Ý «:ï3»ƒŸEn ‰~fUÁÈ·iöeࣃ¢¹çøøôájõÙ¬¿_G¾ó½ò'‹ àç‰÷Q4À™–l¸’¾«üÐcº*qe\â\ +ñ/ú󰲯B"»5öR*@¿?¯WÊwÚCmlÀk<£ ZqÈ5 Œ3NqP§àÀ*9@Ì™ußdš‰Õ¹f„ÔBŒ®¥Ã(ù(pËú´Y²ìQ›(èjí ç¡hêê䬲0—„£ÿû‰f§¦Î $ꦥyß²zG;X½(v]¶ºs;àk{Ð c¤vÐQæ¡É‘Õ?g¹ÕYWÔU‹ñÙ ±¼ÆηEÕ?™Ué¼o´¾ýùíkZa_ˆ¸khÛ/Uñ´) +B^=é&íX’ØiÏm§-Ÿ8œ‘VtʘÅpÂâ,‰üŠ +.ªœcäÓFºÁ§}W„‰õiWþ3¯î!„˜Þ  µf-cç¢‹Ñ ? í ŽÑX?íø°9ä8L²É  ³Rôä‡ü“pŒÌ¸v¬ÛŽ@õž œ‚d‚ EkA<'±8.@g{Š‘WYb>›äPj*ÇØ®û¶¹.ë,-d}H(‘­™yÑ€%ëÆÔðÛ8@á@ «eCdah˜öå(‘¨Q .!ƒHVhXhõ *eÇhç£ÒÙ¥-WDækÆ/ÁœˆœÕ Qci"±ýi²ÓIL~@ÉLJ¬qÑ0ÿXÃV·xZE9|¦Qü"nDÌ5z>4 Z•Æ¡EE&^èÜ홡E£m”ˆÝ0ð_²ÝK” …ÏÍ…"þË ŽL÷˜CÕ¦h;Т¯Bç\÷„éÛô?8ΠË@#á¸èè»Ó{ìVÌ!]s6 +C8©kµ!>fE”®”²åÚ¨ô@"úßZš¶‹¨qÀQ¥¡8?WTÂbßÊÚÔ Ós}@¥ò¼ÁPi†ÙšŽ¥"¤¦la*ÐÌÚa¤(?y]}…Y¤#8½q‚X@î v…ô¦ +¸P—L]ƒ3«À³$¥“aχƒ´® )JÚ™Ž ‚ñÏ&áò¡>2‰I43%“¨p‘tÞ±éûp]Wmßh‹Ë˜ñí)PŸŒ šJò&ff¡]Ä›NßÚX€kÕ£æïp5ëÛ%'Ðû$C-yõã§wïï~[0«7’Á¬tC“8íÃ,èñ€edr—ÆYÉL)øÍͱ=ð=÷_Ò¹¨ºÍ*v#5k FA6¦,*Bh8ØÏè’‰£Ô~åÙ5ë´)èBj#÷ŽÄbCJH,îäÙz©¨¦7[«ÈÑËBGÑÕq mžl.| $g­šŠðá ¦V©sà&!2ÁÁ’C¡ÕY¢˜ø/$¼üÅÞ¼v½œ|¦½Äk:z qìñö…£‰ë<'B'³\w½[|ÿ¡/¿°ˆ¥…i64"}`-ö­xév}9ó‡—\T¹‰uJ˜ùÞð[æ—¿•6¾4íÈbvº ^ø¿™Iý7²ó<Ð]|N0=ÿ“G`û¬ &‰ 5=þ‚±•å烮ð‘bx·ãdžíËÇ[ÑÀ§7žº‘1ÍaǯŠoë§ó½®æ"ÿ*P7 +endstream +endobj +3283 0 obj << +/Type /Page +/Contents 3284 0 R +/Resources 3282 0 R +/MediaBox [0 0 612 792] +/Parent 3289 0 R +/Annots [ 3281 0 R ] +>> endobj +3281 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [159.336 595.653 196.262 604.476] +/A << /S /GoTo /D (FAQ_faq_index) >> +>> endobj +3285 0 obj << +/D [3283 0 R /XYZ 132.768 705.06 null] +>> endobj +425 0 obj << +/D [3283 0 R /XYZ 133.768 581.076 null] +>> endobj +3286 0 obj << +/D [3283 0 R /XYZ 133.768 545.677 null] +>> endobj +3287 0 obj << +/D [3283 0 R /XYZ 218.619 495.099 null] +>> endobj +429 0 obj << +/D [3283 0 R /XYZ 133.768 480.547 null] +>> endobj +3288 0 obj << +/D [3283 0 R /XYZ 133.768 231.147 null] +>> endobj +3282 0 obj << +/Font << /F26 1917 0 R /F14 2650 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3306 0 obj << +/Length 983 +/Filter /FlateDecode +>> +stream +xÚÍW[oÛ6~÷¯à£Ô4o¢¤¼5u´:,u6mh™–ÔÊ¢«K²üû‰”cÙA²$3Ð'ñòûGŠ t19_Lfï˜D1Ž% ‹5¢œãPFHÆ–1E‹úâQ†™?¥„ïRÿlóʧ‘§Wþ”Ä[ø1óŒ)jø,”^ùß&o“Ÿ +j¢{°Ç$@ÉfòåA+Xü€æq„nú­Äl¥ÝÁ}šü9!ÎVò€Í ‡!CRÖæ¿}x +, ¼2/Ó³Þ¦È>@Ñ”ÂLØãï×àÞ­i;{™òñ®;<ÝaÍÞq¾!BLXàýé7oì–±Yć-µn¬†ÆXªì°o› ¬µ+¦Étå6e°|¬•†#˜êºš¦Irn!0…¹}y¹s®²Êué ð.¯L¹Ñeóª› Ak^Û7yQt°hÊHnÄ-z­Dµµ¶å6[!1åWBXÚVn¢Nª|Û¸]ÆŽkŸOåö§¤÷n¹W ãR×Jã&É£]ýÆ%Dˆ`œ@VÃX€YU³_vPîŽÑ XJia>šFÿ§b‹0 ˜+¶·Ûºå·=ÆqÐ ÕìvUºÐªÚÔFªªsSÚ ³¶£VI6žÙ¡5][c9‰lÆYï; Á p LžÆ…FbÁã>ž\Äõ+cÁCYˆ°^q9¼øxeÕçeÛä;m–†~ AúmrP.< +p(ydM³=›ÍjèD׸ҫL581›ÙÒÏF6Y’«RÇv—Gž øÜ%¼¬È°jºlŒìˆ¦Ö¯)“XþœPØ’¾ó@$8-[lªô—wöµOEàýui“ÿ{¾Lžê;'^]«²TÙ.ÛÊ|×ISÏ:Š-ÿ™!„ä¨Ï böw}öǶCPÅ==vlÀ~W}ö)Ðm·I ô]Za¥}8ª(ÌÖN‚ïi¥6µýZ›Ê +sîb~w2‡v±7y“™¶±–QúÓpPÏø¬»S@êïºn‡¥š)"o»»«Ð®l”@qw‘ñÕc—÷o†¥ÓÙŽ%­é À½7fö;æyiίæo_H:C핦¼¯üVíJŸ¬!m¼ªUê¢Ù]tõ©Èk~þÂ>fîtµ> endobj +3290 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 509.073 368.887 518.971] +/Subtype/Link/A<> +>> endobj +3291 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 494.764 204.502 503.611] +/A << /S /GoTo /D (install_tools_install_avr_binutils) >> +>> endobj +3292 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 450.983 273.245 460.881] +/Subtype/Link/A<> +>> endobj +3293 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 436.674 204.502 445.521] +/A << /S /GoTo /D (install_tools_install_avr_gcc) >> +>> endobj +3294 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 392.893 410.73 402.791] +/Subtype/Link/A<> +>> endobj +3295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 378.584 204.502 387.431] +/A << /S /GoTo /D (install_tools_install_avr_libc) >> +>> endobj +3296 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 264.489 422.685 274.386] +/Subtype/Link/A<> +>> endobj +3297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 250.18 204.502 259.027] +/A << /S /GoTo /D (install_tools_install_avrprog) >> +>> endobj +3298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 232.379 210.301 243.014] +/A << /S /GoTo /D (using_avrprog) >> +>> endobj +3299 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 190.655 338.999 200.553] +/Subtype/Link/A<> +>> endobj +3300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 176.346 204.502 185.193] +/A << /S /GoTo /D (install_tools_install_gdb) >> +>> endobj +3301 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 132.565 410.73 142.463] +/Subtype/Link/A<> +>> endobj +3302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 118.257 204.502 127.103] +/A << /S /GoTo /D (install_tools_install_simulavr) >> +>> endobj +3307 0 obj << +/D [3305 0 R /XYZ 132.768 705.06 null] +>> endobj +3308 0 obj << +/D [3305 0 R /XYZ 133.768 574.57 null] +>> endobj +433 0 obj << +/D [3305 0 R /XYZ 133.768 569.156 null] +>> endobj +3309 0 obj << +/D [3305 0 R /XYZ 133.768 370.602 null] +>> endobj +437 0 obj << +/D [3305 0 R /XYZ 133.768 365.187 null] +>> endobj +3304 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3320 0 obj << +/Length 2238 +/Filter /FlateDecode +>> +stream +xÚµXÛŽä¶}Ÿ¯Ðƒ¨‡uؼÞõbÄIÆ“ àõƒZbw3«–d]fvùøT±Hu«G³±äIY,V‹§ɽ½Ç½wW¯ï¯®¿ /gyŸû'¤di’yI³$Þ}åýä‹E›@pÎýw?üm„1÷_ëfu=ÐßnÆ~ÛÓÏxPÔøf#¢Øÿûí.úàþ^ +Iségùæçûï¯ÞÞ_ýr%À î‰3Ëyì•Ç«Ÿ~æ^ƒß{œÉ<óèÑ“ˆ +œX{?^ýõŠ[¯øÂ;~î]ÌYÈS/‰Sʘ¼{†±±ÃÍ»IÆ"°‡“°ui“‡~qwûí[;‘¬ÿà¹ÖA‰”gJ¸ˆ((2jãØÝ\_E¯KņvêKµkû½b¯æP\ú½ ÐÝ»K¯.tß6ÃXÔu1ê¶yî—€°Æqˆó‚0‚§^!Ï£ðÿ´×`Ás{aeå´â=¨ ¡E"f`Sì¾u<×&c§Â vEù¡ØƒM2Jý®o7"öt¥ìI|ˆ »±§nÑÇ Vø}@yeepE=j7·QªR é†ú¶›û“®+Ýìi¤h*:ZëqÄb‘À™È“™î&Ü!œ¦‰ßnÿ¥ÊÛ©ÿžó°V5Yæÿ¹)õkÚWU½‚ÿLúO44[5›ˆƒ›}ÛU3Rç£F_±u(ÐJrT À¦I»iðW ƒ:nkÕ»ùÒâ÷<æýE^K&Å|8Š‡>(^Ø£,™7T ðAÂ’µn>`¢Àš„¼yi•œÅ<<_¦®~Ë2´) ¿ÖÛŽúÿ™å’”åY¾ðª_[.g2Ng±¦ZQ%R–¥‹õEV¬¨‹s–¦ ë!!à@£µÂ/ªJÛœ +sˆ Ú¢„¦àG‡a +äìižÚ‚´?¶­9ÀÐ÷xÐåš +“âãØ¥«Š± ¡]ß©oNNèµÉI/„ð”eÙÂiPQ¶ÝÓŠ×IÌÒ8ºÜ3p¡ÒÃ`2r#üÙkÁªEbBÂÂÉg3±MfR[7¬G‚C;¸j¶èK“èÂìj:v/™-/͆”¢TƒU†±×Ý PlF‡ù[ã«H3€ô÷BZ{%Å `æÙEŠI8¯±øX$´ßÒ 4f»€üo­\{ì4¢`ЫYd°B.ï ‰ê:­f+¤íJ]]@5´°™2a`3eI‘Åo¬›º-¬&nlL Bÿ……TW©m£{sQ[]i„€Â©O¹p +BåÂp¡n§æ“îBú JÛi+SðåƒêØá¯?¶ýdåþM,ˆ¦ñqgç;Í^,×)«—TŽ¦œåyb ©-­?´£º¹œÄ—Ujg[p§Ì.Pö»:K3(dsò|¹’‡)K£YÀÚ¼¢',‹æsöõJž + iràG=.6–Š-`:ÚÝ…ÄLð‡àÕY©ÊfZ±Hˆ%–Þî.f¶Û±ÐKà‚>ûOxÄÝ!èÀUužm® ´sÿÉ‚„IÖA­P<,ž©ÌÞ¤ÛZÝÉ î$N irÇÂð\/Ä;æs¼]?×köeÆ4 äPµ „°Ûè bŹ¯úNÃÌä‰~ +úìÛ¶²R•²}xîñ[¶ h?!æ˜9•=aÍ +%Ì3ž¨Þç9!\`NZ6LÛJ÷€ºmo-¬Y…u§iG[p'ÉE™5ÒÀ.ÛºžFE?Ä'¡á GÆ™MÜÅ°ËŠþNT/‘ˆ0o_C½h>…7õÁØöÌ®ró¶O'µÏãՓŹüq +œè¢ÊTçT¸íà˜±ßšÇljB­  :ýwà;\¹:œåá½9퉄ÒBDÿB(½ª£~Œ ~MÁï"ñP”ꌜ9œp°¦~a•ŒrXŽô…³Þªm¬¸%fí©ëê'"öÐ÷ `aòòaÁ«Ï²É× +•¢šÝI°~§í+¥Ârâ¬C `tš ÛRM±u t~q3w€`èT©1:¥Å’ ˯Ûû LØês™Œ]Ÿ §ÚVîôǯ¾øËÝÛïnÿéz¡H_ý +·Þö D“ƒf5}]6œa6$3a66`wþ€áñ¶Ü=ÑØz¼‘æ|>:ÖÎ5¬ÄZ7‡›Bàž¤EÖ,AÔ›tÖ!ähÍ|£~©—í +DÂY_Pßëiè¯ë¶,ê5†*?]†ZÁÅhì?X°fÀ¶‚Ø¥ƒ´€ ’¹ó‚Ù-c7‘ÙÙnú]­dPRç´=™y½uâ S3É’l.h¯lár†bé1e­¥ÔÔê ÊÔ¤ËÎÒÆðE–Ñê#s–œnXÈe䫱dX×!\ú?jº¬Ë†ˆ: ½Eo‡ËCÑìÝ­†ûÑÒQ|méÕ/€T×$vüúÖhm™5¦©êû³ÓmQ¥›fPÇ%׶}gu +§ZƒÆÊŽí^éAÅ”KŸ¸¥èÖðÔZ´Ã”®KŸÅ1œSÇTÀ4öû OWÄS_Ô³W dôhoøÔ[·vù ~ÀÉ(AP +n¾æVNO¥FÕÙÍ"…-þY èâfì‰"ß¾¨@™,tMa—‘ôÍý†éiÆôth¥}Šüá jÓÏ\Î)T¦ÛÒˆ¾ wð6™XoAÀžCY>æàXÙ+ˆCEÃÃYíî.<{‰<óèOÅ€¸Z­c\Ît ó!.C EÉ…~9 £y+ÀaˆÜ$+û×Ò×>UA î#^†±¢Ân~3:­&ß@Y×êfÄ4,ã0]E¡q^¥Í4E{eM]xÖõ-Þ­ÿî±YÌ^}©VšÊßòNí^ÝX^fç¯î€1Òq¢w6Á³·'ôþ`/$o”­Ó}¿ åÈè/ä<[y®-Lvô™úA­·VÃÖžï7íǧ½j.]þ9=&à +endstream +endobj +3319 0 obj << +/Type /Page +/Contents 3320 0 R +/Resources 3318 0 R +/MediaBox [0 0 612 792] +/Parent 3289 0 R +/Annots [ 3303 0 R 3317 0 R ] +>> endobj +3303 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 639.037 344.976 648.935] +/Subtype/Link/A<> +>> endobj +3317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 624.804 204.502 633.65] +/A << /S /GoTo /D (install_tools_install_avarice) >> +>> endobj +3321 0 obj << +/D [3319 0 R /XYZ 132.768 705.06 null] +>> endobj +3310 0 obj << +/D [3319 0 R /XYZ 133.768 617.198 null] +>> endobj +441 0 obj << +/D [3319 0 R /XYZ 133.768 611.475 null] +>> endobj +3318 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3334 0 obj << +/Length 1931 +/Filter /FlateDecode +>> +stream +xÚåÛŽÛ6öÝ_¡‡‘0MŠºM6—iºhÑMÝî.Ò>Èm«‘%¯$3A?~Ïá!ekF“N‹E_úb‘‡ç~£¹³u¸s½øjµX¾b'cY Ëjã)Y§NœE,΄³*w®Xäù‚sî^¿xáùAÄÝDnÛÑÇ°S|é‰0rzk¶óÎÜݪ¾¹LR7ãÞ/«o¯V‹ÿ.ˆÀqÁR°ŒGN±_¼û…;%~ãp&³Ô9iÔ½#C@x±v~XüsÁüú,I'Ž’ IŸïÚA=Ó‚Ø‹p‹_ÞJãã€î|õÃKÏ—©t½êzC·ßµÇº¤íhÒî°ËÚÓfÁ­C×þªŠá‰EnŒ—¯¥¼ä—–„)ˆ¢y}›¿W›ªV„9‘,,…EYŒ(×ßý8C7Œ™L"‹½²3$ƒ„%r$Ùß6Cþ!žãYÂÂ,K€k¢˜0V»ª'ÿîUÞðu§”6~i”ü–€F©ÒDEKëÚ µªË;14´mmn¯o-ÁªÙÎèD‰‰-Ùö! 3–¦£un’GL + JJÆ£Û› 0FÈQØ+ÚýœRš¯”¯o½8rŸÂ¨rÛÁÁÜíat*/o ¹–¨UM?äu=òØ3m<²„ØTQýÌy`Ùå´”ªª&ª¶ÑZp㚈ħÐC‹U}óÄ©k>[ÌÖSc]`í +üLçEÑ›áé¸ÿ3W‹j7¶iÀ²@ZÃvm;ÌY?f!}ŒTßO#álŠ4‹ö+/EÑ/q¦i{N_+aY|€#›ŒÉ D€E©ñígžsNY !Ëö¾È|ÿñH£}#Řõ ëµaé`—cDßx"ríP€m—ï{ÚÞtíž uÕ‡JG`´—à°jÀ@3A‚rÉΟ}ÿöÕë7ÿ^©Mâˆ%‘<‡>„}è¾lmpP&ˆˆ )¦Y¾Ú(T»ÉWdy,ÙÝÖÔî·× ç>ï-â9¦¾÷²;‚îêë‰ßÌÕx!¬êÚf¯sÿ-šwU¾®MAX+ÆÀÛ+Á§ê9¡Ã_[ìn¿ì>gYƒ³ ýóÍa…~θp[Ý1q‹*¯i¢ë1g-’^ÏÎÏxàî«ín ƒ:/ÞÔ‡¶3Ûè tªÐæBì+uǽ,Ƈ¥Bin*È8,42‘€îg2qùPìLMÍÀͼ,{ÚÛk{#4’׃'ÜÛƒ2XEÞ°Vt¼RÒV>R—ïXè‹;á|§„í†áðl¹éÄ)QÆ–EÛlª­Žc-°è`nÿðÜ´d» šA=xŽÔÌŽj°»ùuÞlùVõÏ‹§ÅÕþ,d¨¹BÚ + Ô }¿¬z}µÁ¶AÄìV]­ûþ`wOÕ°óËSÞm¿ä¢ûуù#óRbÒÂÌm@ +Bór(Öf@ÐgªÞÐ^ßîí•fT­Û¼¤¡Ú+˜K#˜Fô|Œøºõàa^ªÃXw:Í“bŽÔîÆžaõ¾Ÿ–wZFWÄ'Txg\¼Ã ŠdcMý|.Ç/_t&Fg…‚¥á8 }ñ¡‘Ó˜:3OØEb¤„UwfvD/Ri¯®æô –¿§^öWª¥ˆ¥™˜úèà >¢±JÚÎŒºvû1<›¾¬ûBH&±[mèP‡å8 ëÛôNŃ˜‘˜!Ì0¹‰&D8ß1¼¡ŒPã-”pî­¦Û¢.Þö=1Ò¤Ùø<³†DlÝ0÷I¼ÇºÙŸt_åðb¬5=`Äíï¿åËÊèØ´ÃDp£ÚÕ›3µØ¼0”ºF"Œ¥Ž ê‰Õ_ME},õ +¾° ôÂ^Öc4çÙ6€zU %ÝÀSûxCÎÕGeùî«A¿¾ {Pyfîý5ÀRsÿÝEwÞ „¤W="†}2hž pz~2À=à||2Àæì“!ú»= :<æµ`×Ù¿,3ÈùGþ°´PÆ0Jáƒóü‡k +CºíËתQ]>¨±(кÚ x© +BZÈg"¥¯€ótæÁ’kÇvG…búOÐËöÃíV5ÕAåÿo½ž +endstream +endobj +3333 0 obj << +/Type /Page +/Contents 3334 0 R +/Resources 3332 0 R +/MediaBox [0 0 612 792] +/Parent 3289 0 R +/Annots [ 3323 0 R 3324 0 R 3325 0 R 3326 0 R 3327 0 R 3328 0 R ] +>> endobj +3323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.116 536.524 229.409 547.428] +/A << /S /GoTo /D (install_tools_path) >> +>> endobj +3324 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [150.486 474.046 660.573 483.944] +/Subtype/Link/A<> +>> endobj +3325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.892 397.411 269.423 428.38] +/A << /S /GoTo /D (install_tools_install_avr_binutils) >> +>> endobj +3326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.752 397.411 398.252 428.38] +/A << /S /GoTo /D (install_tools_path) >> +>> endobj +3327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.587 362.38 389.477 373.284] +/A << /S /GoTo /D (install_tools_install_avr_binutils) >> +>> endobj +3328 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [150.486 118.257 630.685 128.154] +/Subtype/Link/A<> +>> endobj +3335 0 obj << +/D [3333 0 R /XYZ 132.768 705.06 null] +>> endobj +3311 0 obj << +/D [3333 0 R /XYZ 133.768 469.59 null] +>> endobj +445 0 obj << +/D [3333 0 R /XYZ 133.768 461.284 null] +>> endobj +3312 0 obj << +/D [3333 0 R /XYZ 133.768 113.801 null] +>> endobj +3332 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3338 0 obj << +/Length 1323 +/Filter /FlateDecode +>> +stream +xÚ¥WÛŽÛ6}÷WH$`Å¥îRÐh°Ùm‚ô¶qši€Èm³‘E…’öôã;ÔP¶¤•w·Í‹9"9Ï™¡©±1¨q±x±\œž»¡‘$„a¹6Ï#Qa0qŒen|0—„–íPJÍ,ÇÌß/-Û ¨ù†¯2ÂÀóÍı>._/^._X§†3°æ„F¶[|øH_”xIl\w[w†çÃVG)ÆÛÅo : Ñ AàŽb "âzÁcbT‘õ''¶)I’а]O„ÆÞ[a`¦Òr³äåæÙTŸ3C܆íÀL¢úŸ–ãPS´Jmâ ¼PHÅ»¶nô¦¡I×'Iö›xY7iQèTZåFç÷òba|°½$4SË¥æ•T¿öŠ—mËz5:9nÂ÷Ü‘‰M–M´ÑK™[°K?[pD†_u+µt+Zy UÚlq/¯µ6kæ|URTL·jÍ°}HI¬ÒÜÁ³bk¡«[ÖI‚ËÂïáa +@¹ú]À¼Ÿ ñŸEÃuï1¡ +–JçÕÚ²êª,(Á1·†ÂÃ%±jR^²¿š­ž.Ò†:¥iè¸c-Å¥ìª>)ô{?®yÍt×c#Ьl˃Ósž78äVˆ¦ndZÍÀ3‰'=<ëLòªÁ¬o¤­÷—Á8ø”(‹5ŽÝÑ;pË‹?w¬ÙŠ¼Æœ)ë+–÷æ a¹y­èI‘„òàî"Äš¾K+G³æ;3–ñÅ‹€šÔÑÀоf<µìŠÏ¦-¿ò +e;Ã1½’Yû»+&k.ÊïI“J²ùŠËÿàS(ܬµzwBp“?ôG^²ü˜å¡N0Ò!§™(×|Ó‘µ³oW’­ùÍó§¿^¾<õG?»Rézþ©ßO6-«ëOýêVÔÍsð{<8(ìxÝj' +۴ă¦ç§¿P(îѤ¸Ÿ½;{ù貧´ÃˆU£°b¬D©²é  ²b™¯y™#Fõö¿h@¯xŠ?ñòâ=ŠBâ˜)ªÞn@v:@l7ò¡g•í ®#`Ax+ŠTòš@Ñ #ó—ŽQ:ÉCâ¾+ù ‚º¾­¶ÓLª·¢-ö4Ò”\E +Ñi4š3ê`ý ™ib¶Ažü1éÒΖÌÛœÍÔ /"a¸¯\GU¥½£;eá\2öâíÙ! zx*•è?C¢Í›½ï*è!XMÄÄÇZº ÜiòG8oësŒ˜ÿdÌÉÓ¶–§]ħ9»bÅizÈÊ„0Oî¡ÄƒÀ†Gý`{Øè*m j@6©Î<êc†ÔTÎ֪ϧmÑàD!²F[·`â•$ûÒrÉj\’Ð@P‚.¾ãµ*N +¼~DÍ1é¬CLת¤åS|ŸLñ m«ÔÄíoÎQƒLw8+J¼ag‚šO³ +ʃ p+b}ovWêÅ”€ÜÌuH7¡ÄñÜÃUÅ·}EÛÀÛýöÑir<3Ϙn_sLz¡êïá%3éXûu Ýxh®G)ßÖì€ý™£¹P`ãýÑ}âÁæß9Ô\K{Çm¶}›Ü(!T¿¼h>¦‘*&}K Žõѱá{ºÛçœkbõ·=é„óæg6Ž’‡›óý õþf|´¶Ìþ[K Xxÿå¿Zÿ-„›õâá_´8!^î+™L›þ1×Ãw¹mQ8c +>}æzÏœ¿\Jµ´VrÿrS]Çò¢þ±Üu8]ñÏÄÍíÚõäÈÿyHÇ4 +endstream +endobj +3337 0 obj << +/Type /Page +/Contents 3338 0 R +/Resources 3336 0 R +/MediaBox [0 0 612 792] +/Parent 3289 0 R +/Annots [ 3329 0 R 3330 0 R 3331 0 R ] +>> endobj +3329 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [223.769 613.729 271.301 644.698] +/A << /S /GoTo /D (install_tools_install_avr_binutils) >> +>> endobj +3330 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.107 613.729 307.569 644.698] +/A << /S /GoTo /D (install_tools_install_avr_gcc) >> +>> endobj +3331 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.026 613.729 440.777 644.698] +/A << /S /GoTo /D (install_tools_path) >> +>> endobj +3339 0 obj << +/D [3337 0 R /XYZ 132.768 705.06 null] +>> endobj +449 0 obj << +/D [3337 0 R /XYZ 133.768 667.198 null] +>> endobj +3313 0 obj << +/D [3337 0 R /XYZ 133.768 447.719 null] +>> endobj +453 0 obj << +/D [3337 0 R /XYZ 133.768 443.111 null] +>> endobj +3315 0 obj << +/D [3337 0 R /XYZ 133.768 125.798 null] +>> endobj +3336 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3347 0 obj << +/Length 1228 +/Filter /FlateDecode +>> +stream +xÚÍWKoÜ6¾ï¯Ð!@% bH½i4šÆ1œCÐ:‹¢…›%qµªõØJZÇkôÇw¨¡v¥µ¼¶Û¢ÈE| ¿á g¾¡¨‘Ô¸X¼].^¿wƒ@³\ÌuIDFÀ}pf,SãÚd‰,›QJÍ‹wo-Ûñ©¹²߬tk‰,æùæ/WzZ4£f&;SÏuMîXŸ—çËÅŸ G ©d„SßHÊÅõgj¤°øÁ Äå‘ñ¥- ×Q¦6ƧÅÏ zdßw&†ø!q\ÿ?3ŽªèÈeÔ°¸G{`Q´5ö¶­lø=‚뎀¸¡ @=@RW«<Û6rF—'âƒd»k;Y~‹Ðƒ²N·±å€æ¼Hõi*ÝÉ«¶EqÖ_ÄàÀ¡íR¦ÔÙÌuH8`¡O(Pí+ËÀƒñ¶ºÏ7ìÛ,íïneÓæuõ=¿‘ø^‹ü…òeß¹[é­ê$Ê‹œx?Q‘¤3¨cqo"^Þ¤¹¯ã?lqÛ< =#8%äõáFðÀö¦‘«üîÍ«Ÿ®Îß_þ:Ì‚e!oNª-ÅÖ<;Þ3ŽAþÀµF„ú.kp!Tvõ:Œ›BÙ©f6…¨ª¼ÊpTW¸¼mÕÔà fŒçÅà®m&†=F"o/Ñ뺡Öj¾ä`u¯hÓÔ±ˆ‹žW (ªG*È•Ìà¦~Ræ^6_1K“iŠ¹ºX€Ñ#ŒÃ%t +åå¶*Un›‰ãŒk8SÄð®ãVE!¢É9þJ”G÷ÒúöÎé'+)Ó»u¥ë¶`P«§z“¡m¶•kÐqÓÈ‚@oQ´ ´¥Bnlz,’åTY¥D_Ó„AmB°x†íz„EážA¹fÐOÊu{ž|’q÷@«ÏgH‘ȾJ†ô}ÂœP3d8Iç¬gÈ)AbÀArLY2»Iz³Löù dJï¹Lé¿”)O3ßiÖü¿xÑÁ=¿Y ’CÑÄ“YæÙºÃ(Â`‚Ùµfæ›gDÑH‘îp Ï-ÓÇéD¡ "Ϋm—í§c>Áù”c’䘑ú“U'1Å(òx$2óZ¦˜{†]F^¥Ü‘—Æ/®N¶Zˆ?kDÙN³´’óhß„Áužo›D>ƒÓ¢=§1ªIMó™ÅS\]þxþ¬@SÔðŸWà%’¼ÃáÝ*ÀRNà k²žÃŽØlŠ<ú¨zó£‚d13‘6#>®õ¯\­‹ê¤ï›Ä²=¨£PçtTwÕ(­«oT鞸äP!dŠÌ±#*uÑ»nÝ?"z‘µèp­îi7¤ƒBíZ\Õ5·ÈFãE,ÆRV¸VjœÏK°BQ¸”U×ΰç|Œ² ¿SêÜõÛ!Æð8ã¸C¯B§‘…-ÆÛ!ÀœøCÑÔU¼ÌtT½´üAåþ×Yþ( "oöa®ü‰Ûþôoªßü;þðKö&ÎþœÂÞ¶/ø5~Ið¼\F¤'î`Ä…¬d#:©]_kr[®·Øy'ìx:èè™ãž±G¥ÑÌO¬P0 +žÕÈÞxÝ; Yßí2Èš#“ÿÊ6ùW +endstream +endobj +3346 0 obj << +/Type /Page +/Contents 3347 0 R +/Resources 3345 0 R +/MediaBox [0 0 612 792] +/Parent 3289 0 R +/Annots [ 3340 0 R 3341 0 R 3342 0 R 3343 0 R 3344 0 R ] +>> endobj +3340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 493.302 187.148 504.206] +/A << /S /GoTo /D (install_tools_install_simulavr) >> +>> endobj +3341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.05 493.302 230.356 504.206] +/A << /S /GoTo /D (install_tools_install_avarice) >> +>> endobj +3342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.5 298.335 366.031 327.4] +/A << /S /GoTo /D (install_tools_install_avr_binutils) >> +>> endobj +3343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.503 298.335 400.965 327.4] +/A << /S /GoTo /D (install_tools_install_avr_gcc) >> +>> endobj +3344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.113 298.335 451.69 327.4] +/A << /S /GoTo /D (install_tools_install_avr_libc) >> +>> endobj +3348 0 obj << +/D [3346 0 R /XYZ 132.768 705.06 null] +>> endobj +457 0 obj << +/D [3346 0 R /XYZ 133.768 667.198 null] +>> endobj +3316 0 obj << +/D [3346 0 R /XYZ 133.768 474.438 null] +>> endobj +461 0 obj << +/D [3346 0 R /XYZ 133.768 469.83 null] +>> endobj +3322 0 obj << +/D [3346 0 R /XYZ 133.768 277.413 null] +>> endobj +465 0 obj << +/D [3346 0 R /XYZ 133.768 272.805 null] +>> endobj +3345 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3351 0 obj << +/Length 2420 +/Filter /FlateDecode +>> +stream +xÚµÙrä6îÝ_Ñ©ZuÕ´F"uNMR5w&å$³vïΦ’TJ-±ÝŒu8’zìþûPG[Î&û$A\@Ê[ݬ¼Õ‡‹×Û‹çïE´JÝ4‚Ïv¿ò¥tã(YEièF©¿Ú«Ÿ_¸¾¿Þøžç9¯º,t}³ÞˆÐs²º àcÝõYYǺP-Ÿ×~âèºhÖ¾çÜwÀGÊD:©\ÿºýîâÝöâ ¤ñVþdwßM½p•W?ÿê­ +˜ünå¹2MV÷†´ZÉH}\X®®/þyáMU’r»iìù3•ÂØ2$•¾Zo"Ð&/èÛì~ßd_Z”¸lR7ˆ‚¡ë>Ï›z¯oŽ­"Ìfsת½~øú«OWïÞüÏtí|“*»UOs6³ÒdCc«Î™{6ž›¦Ñj#<7".?4½zq¾Ä›z4;­6ðñBAk^­}:ÿ^û¾ïdWß¼[od9ÇNuõEÀë÷o (õ®ÍÚbgß´„Íò\uq:¿¬Eèd­nŽÌg§k^9¿xž(ÕÀ ÊúÎ]obˆŸ@pÁÑÚÈç‡lÂ*ƒå"öZ©‚ ¾á¯[$H\D‹pr"º¼Õw=Á÷eÑ–×–­eªÛÌNTÑÜÑÀ(¶ ¾]’w‘^ìÜcà7í-¨$¾³=èŽ&ì÷ØÁï'M­Ú1F×ëÀCã—[26`ÉGÌ”F„UáRßâîÊ®±[þâ…Þ•º+³Ü„æó÷p”Ƙ9Sä%‘À©Ib7R 4‡¢ýí.ë ¬‚ØM„¥û†fñ™ºq(-Á½&ÝÖº¾ òO-ÁÑð-£Ý¾p »IßMÒA“ȵ©é{jŽ-í׺^Uà5‘Jçicù~àúadyþOcA|ý¶1ñŒ#Ȭll>ÐOØQHwÔnÉŽ¾çŠàÌŽ}ÉŽ°Õ,ˆà‡h"#Z0[Ø'„<ì’«O¶@l50ž—Æü4KÏ?ÏI°‚ðÁŽóÔùæÓ§÷—¯>\½ùøÒÙ74uù–g._¢E'3-W›ÌJQ.8æ¡Pqòÿ¨yÍÛ‰À•f»É©Ï[¤Â–„a‚¼™âYhÊüéšðvk˜ùŒÉÂl ÉË-ηê£nUG$Uc!àÕ© ¥õ4³Sye€¥ Ztž š=¤Ÿe1ÈÒÈû4¢:Àskø P""glîÚæ¦Íªn@W*¿¬ýÐQ]Ô2mš›„ p¡:}SÞ ²R²N§=Ö5[1­8}>ýx Qa@EÙV·M]©º'dw̼ £ï¿jýÀrVà\êúø€I>XôB©]1T7ý’¸uÖk\@Z£‚æä¶ Ž¿è‚2Kcb‘¾gB»óØ3ßRý Ҙ줉ÓSm",ìó»ÊûŽ¦2ôUt]f»’—ö‡¬ÈG±p‰eøׄ9 ¼†©óæts¯kK¹è·ïuýáóóﯺ{JXÃÂËÈã \VxuŸÝ˜Î%âÉ“…î–æMM†é]Ó€u$Gq=Ñ©[’ Ã%Ø?í‰FySÝ•ªW4²¡/… É€ÁùÃƦ𒆾ñ¡af…}yWmL—uª°Kñ,.„¶©€DBYƒTãNÒ·u°•`Tê¾/™Æ!ÀÕÍãõUSh,¢9nScC'½Àù–ÔRc(·hˆg¸& Ë÷Ç:Ç…ìwšIÍÅд+°fâ—‚0ÆcÒ¶ª`OIIPðÍèóöòÒ’¢åÍbfk:7l˜©‰Ž)Óìî®Ô¤èF‰íÞ¦|Y7,_°üŽÛDH‹ºë[M^íÉc\°ÆlG.£@=Ù™“F•úXAGqºëŽŠT½Ÿõ§bpD¡ »²…®ö´$°BS?€¬È0Tã#ÛfGÒA‰©0YùIuŸ(IV +M$6ñ Öa¼0ÿýÒ%Ôó­µ'ð»<ûóäÁçÓdI>¨Ú„u àã–ñù›g_Âq—‚IG¯˜`‡{ìŸ{âqÇmN¯ÊêÅ“É A“ +ˆ£¡®™U2¸¶qᑶðÈ1ˆ}½v•9ˆá„5u9¦'d9=}دú^›{•|²Jfl> endobj +3352 0 obj << +/D [3350 0 R /XYZ 132.768 705.06 null] +>> endobj +3353 0 obj << +/D [3350 0 R /XYZ 133.768 513.965 null] +>> endobj +469 0 obj << +/D [3350 0 R /XYZ 133.768 506.126 null] +>> endobj +3354 0 obj << +/D [3350 0 R /XYZ 245.588 189.035 null] +>> endobj +473 0 obj << +/D [3350 0 R /XYZ 133.768 175.074 null] +>> endobj +3349 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3360 0 obj << +/Length 1404 +/Filter /FlateDecode +>> +stream +xÚ½X[oÛ6~÷¯ü2i˜h^D]ŒmÚ´E;èÙЃlѶYt$ªŽÿý/j,ÇÍ’´Ý‹Ež;¿C{+{¯FÏf£ÉK{ÊbøÌ–a %qêÅGqF¼Yá}ð E„!Áû³ £¾”U„”cÿ½¸îÊ& ©/ +KY”û²±“g]Ye½²3µvÐ Y¬ó²>±íR ,ëBû;PÇ0È¢àÓìÍèÅlt="`?öȽe˜{‹ÍèÃ'ì°øÆÈe©·3¬EÀJôÆÊ»ý9ƒ àSAà ¢ŒÛ lD­œÓyãüØä…@ƨ^˜Gb±Ì i‚xšØ­)宣 §(mØ2¿-ëW—“·_è-“—`ñ-'öBÂQYÖ_PŒ+¯ý +;Ø– $Êzk¥¶Óɤ»º’yÑ¢VvÍB,e³¨j²„í&ÆŽ#‚"$nÄY׊B­Ð ­¸@Èy²idó[ÛmE3EÞª#‡n ÑÉ’Þ¢ßï N¨+1¢ h”‰h|¼é0ƒzÄzñï:ÅKybcÄÜïý +÷oôpºí@ýpî·n*uyîúÅ¢lÄBÉfïæ1ÇK]¼ff¥æ›m%¦&`ØÅ*¶ö<ŸºÌF‹#˜;‹kË0p)BYJEr!T·ÕäÞðÑ1ž êæQÑ{ß¹z_ðîÍŸ‘ödý¢‚X[Æç.ºpÝY¬Ý ¬[•WÕø³åy×4€ c;Ýæ‹«|u„?P½ÚoÉå Ó d–/»ª:‚¦ ¦ñ7`Ók«ÂÕ@THFk€¸†¯`ùàµmàkyˆZC£Îz¶ûЈ±TDC#Aä,ý8:KÝÖò®r©lMZKY·?²xžåj±¶ +?bL+—°]Ùç3o¯¦Ã‚IQ' 1EØHùyÈa5PD±[×'ê/ñ÷²Óƒ´kKRÒR²VeÝ KÝ•ª__ Ë°•Ð> ÉÕôÙØ.¼kDÛÚ•ñ~lÌ.³xoáŠFƒùñyè#ƒÙ#üÓÑ2þéÁ:(ö?»&r ”‡gRg&œ@öã#ÛÞ.>Äfþ@“/×B_XXùek¿`}cGÎX³èN7ñs]&è@ž)¸»í%Ôö;^Lí‘s\ºêTÊN ràŒ¼î¤­iVÿáóÓSDSD™K¥®5É4iMÚKPÒÎó¢°„ìjeis¸‚‡íÑÖÞñ¡K;Ÿrþ{&ý¡Qx­ï<wç[Š²ÝVùÞNZ©#@²"Ѷ€Ø­¥ËÚ~ÍY4Œ‹Fˆú0ÇšêÖË#ñq/ÚM©?~wç4º`äµ>*{ëñ•FBq@PîxÝb„ž!ÛÓúÏØ âúU©ñÝhFÂä[Úà‹¢tн8u•£)â˜ßå⣻é6í¾=%º#–Ü'„ÀË-âÑ£LAó\¸~†IŒ2°ç°ÿ<_çõÊ¥¨*kÑwŽ[ÀÊøüGD4 ›ÍmÜ¡ù'(Kt!CoN\©!W îÇÐJ¸ðÄð}ñ×ë‹™67Ÿ•½„èÙJê2Ò#´FéÅSõ²G ’kd+ùd³±±Jˆ}Io„0ÂZYÞ\Á˜e¾†\CTkc­ Nüsißß@uëÑ—®´E;K4oNËè´ä•y€›ëÊÞmµìFšÛ7Ï ¼©] {òлb¨¥:ú/ÀxoïAz÷ð°ž|ëg)JØc^úýßPÁ \Ý^øi¡u6¾µhrÕÿ!ݳg¶vþ\,\ùÚÁSʦ$µ3Šqz⟌\O>7Kü°*çNÂÜÕ¹¼Ù¯D}ìò¿ÙÁHë +endstream +endobj +3359 0 obj << +/Type /Page +/Contents 3360 0 R +/Resources 3358 0 R +/MediaBox [0 0 612 792] +/Parent 3355 0 R +/Annots [ 3356 0 R 3362 0 R 3357 0 R ] +>> endobj +3356 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [165.427 611.178 478.476 621.075] +/Subtype/Link/A<> +>> endobj +3362 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [157.679 599.223 267.268 609.12] +/Subtype/Link/A<> +>> endobj +3357 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [165.427 460.054 502.165 469.952] +/Subtype/Link/A<> +>> endobj +3361 0 obj << +/D [3359 0 R /XYZ 132.768 705.06 null] +>> endobj +3358 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3369 0 obj << +/Length 1240 +/Filter /FlateDecode +>> +stream +xÚíXmoÛ6þî_!ô“L4II”ìëÒi‘¢k¼uC[ ²MÛDõâRtï×ï(’®œ8N“fXô‹EîŽÇ»{xwÆÞÜÃÞÉàéh0|N™—£œÁc4óH¡”eËÄrâ¦Þ;ŸPDhŒ±? +rê7MÙ!M°ÿ†Z ÌçSC™4ñi^ž®D9õܼ©7 §d²(D½Gì­V(êiì¯a+Æ`‘'Á‡Ñ‹Á³ÑàÓ€€ýØ#={ ÊqâMªÁ»Ø›ÂÇFQžy뎵ò¢X‰,½óÁ¯l€8ƒ¢4¥c )Š3^5Šu†8AÂ}© ¶ñBxà„™‘>xDô§\ê%ó›™!)óù5àõR9²äöƒh ITËFª¢V(ÌüÓºUEY¦³ó?Ï Û1×®¼ÐÊxÙ,Ý~ +üýQXíc>k$ק€„|—0cê6FÅJ5Z¦E;‡nDÓÄ iŠ’,5Bï)M®º¤ïÈ Å#l˜¥z‹ãîÄ:ÈÎÒ~vtÖj‚á­hl²„Ù5«;ƒ6 žä³YìP¤ô*rfÂæ´{ÖœO]V«Æ<ÇžNjë$ýz!õoXŠñÄ*°fž‰úä­> :äœÐ˜’å1¹ÑrÈÜ,ÿÞrL|ôÜê%HEQO*Eiœ;©…RË£ápÚ¬ë²)¦-j›•œè¼˜sTs5¬·ëaÕnÚãÑË°s9â—ü§UËÿ +»Ô ÂÐú¾S[ )ùƒ¨—u±> endobj +3363 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 562.351 478.476 572.249] +/Subtype/Link/A<> +>> endobj +3371 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [179.597 550.396 271.253 560.294] +/Subtype/Link/A<> +>> endobj +3364 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 469.01 478.476 478.908] +/Subtype/Link/A<> +>> endobj +3372 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [179.597 457.055 271.253 466.953] +/Subtype/Link/A<> +>> endobj +3365 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 375.67 478.476 385.568] +/Subtype/Link/A<> +>> endobj +3373 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [179.597 363.715 271.253 373.613] +/Subtype/Link/A<> +>> endobj +3366 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 153.258 296.934 163.156] +/Subtype/Link/A<> +>> endobj +3370 0 obj << +/D [3368 0 R /XYZ 132.768 705.06 null] +>> endobj +3367 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3382 0 obj << +/Length 1154 +/Filter /FlateDecode +>> +stream +xÚÍXßs›F~×_ÁS=pÜOà´Êç—"Ý\Å©ªv°Òf­FºQöÙ-¨…* —%(1rýå¢ö‹*‰ _—I±L»qÙéú¦Žëû];]º Ot›Ð[oY…ùcŽ]ô &Çc€Ñ(€Ð@X¸]ÊW{õ¡·f½]\ž}(¦ ]ž_=tÛ-bA<äG$üÏ1!Ä…L몫_Š¢wÙð ßï +tÏŸ;M[ú·N/½·åº™¢Šµ›•7ÍüÄ÷W«šÍ§5ªêÌ?ä’‰„ ýô7C" a”8"‘[Û·Hj=oNLݘx@H +FjH€¤ #S…ž·ÒMîA1þ²ác¥kR´Ÿ©Äw0UkiˆªøqTµ¶7ÌUâH®Ú˜}5²²eÊI°a+NÂŽ­ÌkÃVæ¹ÅVF¡ãóeˆ­Ìû–­Œîš­¬oˆ§6Tà{]Òú­ßãïmuwŸ©òÅŠ (Ò›¡ +í²h +<ñýÄt¶Zû-§z¦›Zû©ÍðAÞ3ý"íQŽQ ÏÔþÝy[™jUUÜдb]¸/‹¹ª¹<½xyÈaDC„Ÿtû½žÕÕ ØSvíµÎ?|º2u«KFí›y]ý­{¸ìxƒ,žÃY¹\§hQ-ëDMá°U¨T?\Ç™Z ¼™‡`H UùDr¢vøøã÷ÿÆá5Æ4£@ßD¸ß^Ž¦Ck…Kã/n’¼P&þof¨º%‰WBk‡Ð3Ù1Etž!CœñçcØ$Ÿé´ñVêÆ»Qu¡K”*@ ÏA~¤L"‚ÙÓ€É%üŸ§Oå?zn.¬»5î¦Á +Ÿ | +eåî¦Â7O¯Ñ¬Ýæ@¸¨ÅÚ]»ãV¥½Ã¼ØÍÉßXÈÀ¨šÚ÷PÐöM’W:Q/[ú}û‹@ýõ +÷–ðÇí fú¶QwßY€… †±9ø»DF(dßó³¤ÿSŽEÛŠ"‰Xß~Ÿ«RÕqÓ7•}Ž'ù²kõTbÞŸ'”¨Û +Œ£ûkÜb·³Ðõ !í,ÜÜïï!äÿ +‡„ +endstream +endobj +3381 0 obj << +/Type /Page +/Contents 3382 0 R +/Resources 3380 0 R +/MediaBox [0 0 612 792] +/Parent 3355 0 R +/Annots [ 3374 0 R 3375 0 R 3376 0 R 3377 0 R 3378 0 R ] +>> endobj +3374 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 521.445 308.889 531.343] +/Subtype/Link/A<> +>> endobj +3375 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 355.551 412.28 365.448] +/Subtype/Link/A<> +>> endobj +3376 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [308.311 275.319 579.294 286.222] +/Subtype/Link/A<> +>> endobj +3377 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [260.779 195.709 501.875 206.613] +/Subtype/Link/A<> +>> endobj +3378 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 116.722 296.934 126.62] +/Subtype/Link/A<> +>> endobj +3383 0 obj << +/D [3381 0 R /XYZ 132.768 705.06 null] +>> endobj +3380 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F11 2085 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3386 0 obj << +/Length 1437 +/Filter /FlateDecode +>> +stream +xÚ½X[oÛ6~÷¯ÐC1ÈCEó¢k°H“4m·tìµ’"%Æ&*‹ž$Ç °¿C‘´-;vº´Ý‹uDžûùxeìLì\ô^ŽzƒW4t”„ðÝ:„1…±& +âŒrçÊ%Ö÷ÆØ}¹E.ÊIߣv›)×ĨŸPWÊ"›¦¢ÔK·}¸²Ò/û$vE™Ë>Áî²e~ÌB7‰úŸFo{ç£Þß=.a‡l¸@P‚'›õ®>a'‡Í·F,‰eË:s˜¬D ΰ÷G›¸ðþø"ŒBæ„A„( tx×”†­V dð†Œ¢l´ÌgR…µ, ™æ:´´4„(ë&- +ÔÑåx |ŽCÇ£!d4Z™ ¶Mnº#2`L¾Ñzµ‘‹©¬›:«Ä¼éÚ!­ 3ÌùOˆìCŸâòªÒT0†TòÒÓò PïO&hÉ_ §.ýgÇR¿‚cRŠüÄJM›f~4,—K”Õh)ê ñ|1PºÀ˜ßAs„|H†¼Æ k®ýÊ'*¿ƒC°Åa`ù_LIb“!ÿ€ÛÓ*´ßþ›rë ×‹q.*ž5²º×+òv‹Å8–Žžë•LÎÕ¹7“z)JF¡j}¸_Ô‘l¤åØÜ{Òr®¼ÚÕ7}¦½SÄèüò½¦ÚL¶Kv…—}»w¢’北FòNU ­D:.À)·6ú¤FR'Ý”0DÖxËŽÀ¤B±åJ|”Ä+††Ïæ†g³FÔoC7LªÉŸº±ÖSY™(®1¦÷”.Èœ¯::4 Ó4´/éÌ”á®M{Û’†ö>µÞ›òb^w«•ö©’) 6ß>œ]j’W•¬ŒD¾¨V£c¬Ì0A«4h‡h‹]2ÁÔÛG˜F?líf·¶4…ÖæIÛ{ÃصÀ¼Ö ­~xjÛ@¼W¶OÚF:z­—,¦de0¥;˜jW T‹"×ôØ®Íy&Tá¸ÙXÔ:\mRT+ѪÊñ6¡íwªæº®Œ&ðà1xµo:ðCShż*lE¥E-5¿*¾^k¡¦öºµWL¦öj×Ö^ѶöŠe§ö+Ï GS^Û†£1¬Èu<OYj +<¶Ì6cY¢<ͦšš%J¾¶¡šÎÜj M ©¶F +Ým›ÓÏËá_íEBä³Ät¨ø #ÿ¥((êï<âŸsãt-UÆmwÎ 5O³ôó„o šyÚØì¥&%Ïx]§0ÂÀýú ôŸOe© +:YTÛ~­PÔ­GjzÍÖ”Z4µ°q‡ÓÑTœÿØñÚŽ'eªÓ8žw’UΫ£.àjF-z£ØœöŸ¿vQD1ݸzm¹Ö¹]ŠÏ£~GGb}ŒÖC9[4ªy™öÙ±I’½$ÜI ?¦/HID +d×õÁ¢®…ÌÒb0åÖå`]‘$"è#ú¾M“õì°–¯omqù}teGƒLÕë~w®§¨üf‰Í¯—õ¡Ü…MHáªÌ:°9¤w'˜»7áþà§Ö³)³–…ïˆ2§1¢0z=¢ìÄœ¾úíäbxìÝÜü9<¿¹|óîâãÍÉééùp· +·˜kÂ|;Œ˜¦ 4x–V0«î8$mÉòVèn +‘šhI¢çÍ+~+¾?3©ÏÕE!ÜoÊóš´šðæ8½ÛøҜ‹Zz¯T3ñ JÓŠ1—Ùc*Ó&7½€”*¯‡í,E3õ&³ùñº+> endobj +3379 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [187.345 591.039 370.436 600.937] +/Subtype/Link/A<> +>> endobj +3387 0 obj << +/D [3385 0 R /XYZ 132.768 705.06 null] +>> endobj +3388 0 obj << +/D [3385 0 R /XYZ 133.768 512.518 null] +>> endobj +477 0 obj << +/D [3385 0 R /XYZ 133.768 507.181 null] +>> endobj +3384 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3391 0 obj << +/Length 1088 +/Filter /FlateDecode +>> +stream +xÚÍW[o›H~÷¯à!ZÁ¶3ž ­+¥NšnÕt/önš*"0Æ(\.u"íïÁ3¾ÇqÝ6Úss¾9÷ù†±AŒóÎëa§û† ÃǾ€ÇpdPα+5†‘ñѤ Sn!J1_×I%Yl!æ³K% -Ÿ™yž†ã ÉÔ«‘Å3/ÔâÒ¢ž™dQnQbÎJ³=.Lß³> ßuΆÏ +&ƒ®™@±O#œt>~"F¾3æ¾gÌæŸN nç´QLAç¯Ñ~‘Çýs ÜŽ‹w”{WŒ‰¹ 5Ð!k:ÄáùÇÁmã‚ÜPX)rn¸Øw m¹‡™# D]LÀ¡¹þ$¸… ˆd¦JW-%YY-_ëZýÍ^ýB•ôŸzTRcÝ$Y]%i‰xœæqÛŸõ 좾˜ ã!«Á´{•[Èyë:ˆò°žÈ¬ +ª$×uæá|…7à Ä!—D‡ Ø*Î.Ó=lC µçýþ&$…‚q@¤Øqè~ý1•Úè2¯‹Pûæ‘–¦AÜ.\ ²hñ¶ +Çú]©ž™ eYŽ%ïL†2ѦßÄ6÷óìŠ×EÛ®‹³iWµ\ôe 3•2¬òB'1¯«2Yø™Zí½=U!åÏun +µÕŸÍ|9±(¥æðíËM‡ò"’Åñf)xXwÞyžï*¬_[»ÂÜhïÊ0#ºn~k¾n™æb×ö—=Ü-·™Ô1ï”%Z†ÖUp“ÊRÁlìå‚H—8¯vù.Œ+ +ŽhÕ­Ž¬™ÎÔÿݺ,ºM×¥]˜ ­®[dä[ñv#y{"ý{&pþ̾K§9<î†M¾îãY’ùh±=ëh9ó7›òaÙ†=Ê7ÊfîgÚ½I ^bÿ ÑsàqØóþä|ÐC§××ÿ ή/~ÿp~y}ÒïŸ ÀmW”Û : B6la+EŒ»q¢£/²(ápé†y6JÔëZÔÇ”ùJU2M 9JîzG:öõ–Öæ^UA˪w¤žÛ?^¢Ë¬é|”©X±,{áËðÅ‹'v˜%ÕE³ ±ýà¡^9C…Œ“²*î{—Ivòïß訩 JùÄnQRÎA²´|b·¹]ñdÚ[M•}<™LGÅ“*m—€<ìiwšÜ”åt'êãdéŽñ[H ZÖÌ“ŒI¸˜ÛÞw1¦ç¢{øýì$QP` Ó&z¥ˆo‡ï•ÔfŽðjTä“Ö÷K"2‡Œ´Ô-å+]š®Û5vúô˜©8€™ÍÕçKaq×lJ5|~šÚäùÂ;ƒªE&+(…ŸG3g¤™[ï­¾‡]þ-·ÖÅ-µ©6î­ßÂ=óÅ<;—™,‚Jê¨.êw8®•p*C%ØêAÉ1ãÇÔS+8I½-×ò…ª¨ï§ùÝ},³¶Ë_ä©ë% +endstream +endobj +3390 0 obj << +/Type /Page +/Contents 3391 0 R +/Resources 3389 0 R +/MediaBox [0 0 612 792] +/Parent 3355 0 R +>> endobj +3392 0 obj << +/D [3390 0 R /XYZ 132.768 705.06 null] +>> endobj +3389 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3395 0 obj << +/Length 1094 +/Filter /FlateDecode +>> +stream +xÚÝX[oÛ6~÷¯ÐC1HÃDó¢ ¬–¥ÍP k·zëCÛY¢m!²äJrœûñ=)'r|‘Ýy{±(ùðãùxn<ÄÖÔÂÖõàr4¾¡%à1šX„1Ü +„A¬Qb}² E„9.ÁÛ—Ë4KÒ|ê¸ÔÇv=“z0rµ‹"‹gQšëO‡úvQê—ávš'…C°½ªÌã,°…p¾ŒÞ^_TÂy¢AûV<|ú‚­þ|kaÄ·VèÜbˆ51³> þ`à wøá§ü¸@0 +|aæiz?6:´safQD±¡?\Vå0+â(Ž\GØÕÒ. P+¾Ž¸9lßêT_¬P†oàûãŽ<ÃüYIol[ˆBOÀìFà&½9!¶¥C|û^Û׌áGÆË:g²Ò0µB’5Ϋ µ:+º"D#g%’æUe™f¤¥Œë¢|Ø¢w@'¬£÷>Ü-VáÑÐ;+›«âþa*ócìÁ}Ô×SˆFºÇÓw = ü.ë÷—7Géï!,¼¾â88…@_ |ƘNi"Uâ»ÛÅc[XxÈc=£R±GÏêG׳¢ª«¸Lõ1¶ +p_[@Ea$8.×ÅÃX)ñ0]¥ù³Û¨c.åÈ*BmJƒ}zé% ƒ_‹¼±ç²”9sƒ¡r¦‰Å À}Å(F\C a\ä“´p(žŸ ó˜E"T¨dí¦ +¹®Ú÷—Ñ]¹!‹µ˜ßŠ-J9Iï_¾0Ù òÖö k\™+›¹I@NÒª‘¼“e•¹LvÏÙŸÕó¬Ç +Fz‘LúCÏ£¼2HÁN<Ý•!|:°BÕÑƬ½ËÐW?-ð~ÔÒXöÅ"Šo£©t×GY1Ýë¡Aˆ˜ÇOá)zݪÓÔÉî9nöMTƒuET/=Ø*ˆƒD=XÊÌ÷Í— ÕƒNGpÄ̧æØ©Ne5¸ª~+&úÙ^ Q+´œË¼n¤Ñ^uÛÔ©‰ã¦PYê®É—§dI£ùB¥PýW±!R CÍ”“uù­…;˜º”²?3zZJtxƒò7ö z +endstream +endobj +3394 0 obj << +/Type /Page +/Contents 3395 0 R +/Resources 3393 0 R +/MediaBox [0 0 612 792] +/Parent 3397 0 R +>> endobj +3396 0 obj << +/D [3394 0 R /XYZ 132.768 705.06 null] +>> endobj +3393 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3400 0 obj << +/Length 1176 +/Filter /FlateDecode +>> +stream +xÚÕXÛnã6}÷WAЕŠŠ&E]ƒfÜ›EÒ¦°û°Y²DË„eÉ+Éqôã;4)Çr|‰ô¡€‘çvfÈ9Ö kW­Ón«}i¹Z€ݾF(Ežëknà 7 Z7Ö¾ëÄB„&Á맞Æ-A™M©«ƒJãG÷Kë¢ÛúÙ"àÖÈ‚ØÑ¢Qëû¬Åðò‹† |m:[:Ò¨ K‰LµNëïVáF€x1@?@0rajËø~ùPË´/Aá‹€QÍBVhü.V/iõg =[À³² +ÓTó‚EU^¡µØçmzÛ=€¶éi#w ³aà Ç +¤Ô½e¹ËRøU|ÊD‡UÒí4Šç*•y_>oxïkçTŽ,ŒYQÊI˜ÅJŽ÷Š°à¬l˜|1M)Äx˾F}d9.¸ë¾ô€=óœp¡ÖÎîî.oN®:Çæ5BmøúIÙ3§<£–³G1P1勇Gð¼nó,J'1;^€e3@¶ë¬0ðêí×êoÎký7»é‡i;‰¢ƒÙ¶=h¦å#ϳ÷HöYžÝcl%“‚í›-ÔŽò¬Ïg*f!ßjÏP!"P‚‹È›æ¸`}þt|¨vì%©&–¦‡U«¶KÌM”Ï¥piIh¶u6›bYØK™çÑ 1/g+U²X¼^F)·>ÿBä‚ä£b +®Ãq Ä™sQš'ÓîzˆÚþ;Ò~Å!¼wÎGáPyoåsv؉Áüä“7D-Tm ø#êÜ°±þhGgE}ÀñLµ.–‰~¦²ºy…†E »\þ©Í"gb˜ª7U^·8Ë}oZ®1ƒ6Æ*ýÞÿü>g)«”Á€<×ÞEΟ›ÇùAÖ¸¬émòRËÐO¼¬–‚ÕL +ÝÛ‡r²\UU‡çl‚ćmä×á]g%OUûêü´©™SpPLÅÖÀý5f*Â2ŸÑ¨Øp˜°¥n7«h þS ÏXÄÊ2L\Gÿo“½x~7ýê‰Ä +¢¶\Ô«Ò–Oª’×qÖ¥1'v«á¨ +ÆÞ}¹ÄòÄ „èÝ?~kÆ“À@Žš•à#×õÀ.0'Jv¢wÖéÝ-v ¯.óÅ’Ÿ0Ѥí¡\Á÷<’ Á÷Öar!``¯ä©¯]oOÊ¢-˜[úŠ*.&d»>² ï}š¬5Ôu?-#8A§[tÔŽD¾ž`cû¨|wý¯ ïaŽÊž¢ÞæùÃÃ×ÎÅÃíõŸWßNÎÎ.:¸ZëÉTMª?™_Å£Oéîðˆü‘ ø¶jïÊVçÌ° +‹„UÇáã6Z;åÕÀLFãã—»EõLb4î[Ev%´ëi—Ýv7]ym€§Ñ].íõW¨Jú‹_!à®Nk?¯XÆŠ°bª§ÕWÓî`"ç,’[>>²èñå +Ê_ñY"Hõt.]JCOuÆóüé9aÙrÈÿäs;† +endstream +endobj +3399 0 obj << +/Type /Page +/Contents 3400 0 R +/Resources 3398 0 R +/MediaBox [0 0 612 792] +/Parent 3397 0 R +>> endobj +3401 0 obj << +/D [3399 0 R /XYZ 132.768 705.06 null] +>> endobj +3398 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3404 0 obj << +/Length 930 +/Filter /FlateDecode +>> +stream +xÚíWQoÛ6~÷¯àC1HÃDóH‰”‚­À’vÝŠ íu{hú Ë´#DSYž`?~Çv-Õ5R§t/Ò‰âï#ïî;22'Œ<æ£ñO\’Œf_ùŒ€TÉ”È,¡2’OÉ›8FÀ NWU=­šyñ„Ý¥vBf<0¦./‹ªqC³'iÝÇŸ!¤AÕLM,X/ÑX,„ €Aø6>zšÞ}bv|š±„”‹Ñ›·ŒLñçs¨ÈR²¾›º "Æ©`kr>ú}Ä<0öq€ŠQ)ˆLå"qø.8—wnlÔP‡íèXIà»É¿Wƒî)¼W‚(š)VQ¤”'’D h,b§¿(®pÏ$neQ×N¨še·ýà¿'ýí^öó]åU1ב5Ak3?äs$S*cN"¡(Køh2TÚÝœ”Ƹïèù+]švÚ›O$IHÄñ éÛ÷âZûøXšU[úð)ÍÔK#=äfä,FÐ,>‡3Ó\0Æç«Ö/Z4S'LBÎá~¼„yg®`fƒ?ûÑt­þ²Pεwñ¥MÀCòŸ¿sc›LÄSÔíIÿ 1:¤ÂuS +±Žo«b^ Wå”3?û{;{àš¢*ζ‰R]塲™Ipã<ñ2>t¹êŠI­—ÎLo-…"lí<>æ™Ât")$ûp|èùxµlǵ)‹z<Á-êMÞžšC(‡íÁŽ½‡YÚxvÐÊ}á-°<¯?´òd\ÚÓº¯«æ“Ž¢mm´á3­Z]v¦½Ý4’ÓD/hÙýÌ01IdŸØ§&<°ÌIt\šfV¹Je9àDlÈ(ðÌž@,}`DÑu«gÕÍü¦áv ´˜Sˆ7 +U338kWclÇö«m×Y`ÁháÐÁµîAk[¨û¸­w6RQ§ÈBvÿ&‡'_„Ç5-M(KÁS·¼Ó÷¬´ÃF¦^zâÒµ±ýÖº_ùÏî—8\" ®h’ª#:¤™8 þ°ŒS¼úåìé×Ü"lvºV(Ǽ«nYmüþŠ{øÏö ÷¦æ{6 ŸÒƒ|žîãV>.úíav•iúÉùk5y}~êäK]`, ®&mÑV. +·Kî½Áf)UâSû*‚T"ݽ§Hu~¦Ýöm ä—+'<Ñ¥b÷vÂÅ ¤î‹3–öã¯6*ˆ¢·0ñ…쉹¹ëfùjfÑŸ +endstream +endobj +3403 0 obj << +/Type /Page +/Contents 3404 0 R +/Resources 3402 0 R +/MediaBox [0 0 612 792] +/Parent 3397 0 R +>> endobj +3405 0 obj << +/D [3403 0 R /XYZ 132.768 705.06 null] +>> endobj +3402 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3408 0 obj << +/Length 1228 +/Filter /FlateDecode +>> +stream +xÚµW[oÛ6~÷¯‚`†’æE×`-Ð%k¶"ë²ÅÝKS ²D;DdÉÓÅM€ýøŠ”c)®íxÝ‹xHñÜyøknërôãd4~Ç|+‘ÃdfQÎqà‡–yب5I­O6åb±?V2Ÿk²¾š¸üðѬEVÉ !6%Ìù–y’5©P¾~a×w·¨ø¦ +¶øpu¡5œ PPËD¯¢«—ëƒéxž'mκØNrCÌhd!`ʵM·ŒùC²Á£(?ÚÍçE~K›7¥èñ<ñöÉAç[ˆz˜¾ñø4.“;¹ÊɤÈg²•×šK¹»%3-K1“¯OeñÉ2`ÝÎàu i\Ç°k“cœÉ5‹82ÁÒU2ŸC.µ¶S{óÕþÑC-L âU\ª\¯Cƒ³b~xZéyý5¾w(±_žTƒE|ߟeš0±Ð“ýÎ* ÛüÜ4ù!ö]f!¸„X¬ýôv'„‡Ÿ7rÑdoêzöŸô¸, +šç[ö½ðˆþ¶¹¾F«¢)s·&Ej¨eœÜÇswfRKDÔÅ.wÿc¶ZáêiÑÔ•ì /f¼Øî_]ŠÿÙ¹QkU×NÄlH#¥öäçW}‡Š2åY?·plüûØçæú~ €j¨•aFL1ý vL pÕ¼Ÿ8ª êÙÚCÃG$MO3Qi1=]t-çÍÎóàmKG[Ù0éÿã¦()’8xô7¯3¢ä/·[Ò>ËLP‘òÕD±µ¾–ú§þy^|†CÊ{yÙ%÷™3ÃÃO‰“ûjûHðÝÕ€œl©ÁîLÊ¢*ŠØîÄÞ‡ñ²Re…jQÕÕ>éf¯éšDŠ¾Ú xûºR0¯Ê@´`î†Çw^G#´?DhtR¯Þ„êA˜Ÿ´,ÓYO:Z/ öö´´Á„ºá®ÏÚh†&!m>=p¨z·ðÂy^ˤÍLÔ¡ÃäNªw l=ú-N´ºkëG­TÍb·€ ë-F¨5Â_@'®š T-E"UÝ&zG¬j#µckŒÍ›´ÍjEÙŒŽ<ûCQ. šŽïÙ¯º˜Ö¥µ¼eç̵ç"¥zV¨ õf!rUçE®—”j5CeXÌóO‘ÒŒ3uèbY‚ÆvžÅ¥CC®§mw¡ˆE,Aº„²2ü¹2œË§ sBqøÔŒÕâ¡í’Ÿgu;{®© †B$8u^,T³Ž2Pj©¼«L_Ó5@…—™1n³UH˜œõ×ÖG„7qÖµnþmë£8 +qÀ_ò$îÞî€ 7ßîa„yw]ªLÆug}a,Ü5š¸‰&\=PrÆø õŒb¨™Ã> endobj +3409 0 obj << +/D [3407 0 R /XYZ 132.768 705.06 null] +>> endobj +481 0 obj << +/D [3407 0 R /XYZ 133.768 194.701 null] +>> endobj +3410 0 obj << +/D [3407 0 R /XYZ 133.768 157.875 null] +>> endobj +3053 0 obj << +/D [3407 0 R /XYZ 418.677 119.253 null] +>> endobj +3406 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3414 0 obj << +/Length 2311 +/Filter /FlateDecode +>> +stream +xÚÝ[ksÛ6ýî_¡É—P³‚ÁGg»3Žâ&ÍZŽ×qºmS†¢h‹SŠÔ’T\ï¯ß‹)P¢Uɤ›™ýb‚xïÅÅ9HáÁÝÞ¼¹>yýu>ò¸\ßcÈu¼ãsäødp=|±Cd8"cë㪌³´Ž(ÇÖír+ËÕM¹ˆTa¬.a¶\ÅI¤[Ñõk>d®5º C°ÆmÊ,‚ÙðæúÃÉÙõÉNÄ„Ĉ óA¸<ùrƒshü0ÀˆùÞà^v]˜ ]‰x0|:ù× Þ œÓÆȸ‹(ãÏ62ÎVNñ`DmÄlã³ö: ÂEœF£b…ñoÓPYÍþ<šÓ!±¹õÓ•öˆ÷x­¡Öm–$™0v§wªjÙ5 Vkyfwiüßh.î™5{Põeåa¬.fŠÀmž¥e”ÎÑpĈcý˜ŠEjzTÁ| —ðõ¬2WW†ŠU­ò,ŒŠB&š ò<+TkœÎã0(eXÐWVÔÓ`&˜%‘î;‹t†·^A£ûÜÜÇIÒï<ÙJÅsÑ PGåéæˆÉ9’÷A:ßn˜NE µ~ÃË1›¶¾Š0ƒd­o t"ªx¿ˆRUR™VÓ ··2léK]ëZ†PùxÖ]TÂÌØÐMŧj¢h 2²~¦»Vy˜«Û PÍ÷‘êH«X¡´.Tœ~5F¨+JÈJ맓H²iH¸%ÚÒ]ºöüFøŽ +_älÝ p”:;‚’2ÏP€G}_gCŠ­u©nÒLîãr¡Iíù[‡¾äâT-*â ›ùÀ-qÏÕAPʽ^ÿÀ˜AEÙ°è`Õy´\†ëïa™¹D0Ž<Ç©ºr5 Eq…åZVD-L9¹.kÆ4Vì«V«¹. lìºv)¢Ä‚kÛE©ž“Ô†rçQZ&Êãï©bZªS›‡•Ñ¨¨ª¢Ç76ÊȾ €¸ØAn½þ÷oÃ6\a×Ýgë­FÛPû™-bcDl{`{9SY;5Ò’ßA„ؽ¸§¦öó†û‰Z«vÛœõæŒù»®ßFE˜ÇriñïA²¨ã?Á \y®× DmH9ÐNY? ráA}8 ÄÂö5'{ðÓƒç?†gc;½¿ŸN¿'fÕ§ÉôãÅ9¬ÎØúe:5ZèôÍ/×gÓ˱Üü`øBoö°—ÄU 4âÿ/WÕ*9¾ü\-—yôJŸÁÒj Š"ZÎê#_±^­²¼ÜÜ£cnØàÔîÜŽ6$p9%aL½ßõþ­‘K÷ ·×5rM׻ХÚK‚*€ša¾'½8|ñ8H×+ýZ©«§.ÿ|£1|«®WC^q&û {ô(Zà6ˆÛ ±ÝLHÀÚaâôXÞƒ1m–kT›=Ðí!ˆºf-ÐåFÝ{]:›N>!ÈŸþ]ƒ˜Ü´ö;¿œüÜÞçXô’÷Šæ˜÷ñ`û ÿ²÷Ë­óüK¨&Ú<¿~ùÛî§E™¯Cq éYG祅6ÓvGju´!¹E}8ÄÑ~¸6iõBs‹íaT®kF™®wÅŒªÉÙ»Óÿ¼B&—ÓñéùyÝÏîB£^R\ÑÈèÛ qš(¯ÀïØOFÿÑÃiA.Ø°Ö ýmHô1ìõƒ~Š‘çó&ú÷â{ð]ÃßôݲƒÿVØ_N.N›hß4ŸÁ‚»Ýz,zIxÅsÔ‡p>}É?:îÀ‚ ‚ýn ïhC‚Û2Î^@=Äíæ›+«ŽSlßqª‡ jô›A´ Ÿ÷ºúËY/3W±ÇÌÚ79=ÃÞtt‚Z(6\ît£iG‚¦Ì§p`&½Ð” Öy^ƒ¦öãäìÃuEΆë]rÚFÕÙÅûÓ‹ñÙÛ?ãgwÞ¶>Ÿ÷BÍ~fKS³‘³gé"HÃhþW|48~»à6lL;¨« I Æd÷ó•Ÿy yÌnˆï!P®k™®w tØæv(µþº­ï(ØË|W4³~ûßÌŽO À¶»ý³¤« ÉEÇ…£ºÝ]‚ìæ^Æ÷¼gõáºæ¢áº…Š{_³6üvŒêôª×lý¹ã›`?ˆ¨ØjÌËAd}ú›àñq·0 +l8>ïÆÊŽ6$+9‡W€~H 3A¨Û`¥³;»‡P“Ó a—ÎÿïFùœ´fGÒºHU¬6'ôZSî<™ÖÇÆÝÂH0Áìnê–ãm´ä¯²Å(ÂT¯Šâ[2‘ÒÊéwru}7ÖRHÑZ™ë Õ 1ç²ýsšIñ¢ÆA¢jWA.6š¤m“¤aR¯_‡ ±ÖìŸošë§?Ί,‰ÊµÅøFË QÚ«mV¬…OwQåZ±hæ¡–wÖÿß‘N¡¶/²R<è +Éd Ôm®S)ï NK Nið” ÌÔ©ìAÙ?L©ÆŸ ãñÄm#ǃèÒ¬% ê!Œ#㙌?ë$<¬Z5k°ï×csã1À@˜¬ç:+ƒÃè@¶”’J’iK 'Ú2!f0<—V¦ÿ®%‚«ù&íÕŽ8ÐEî&œàkþ:ÎÐbKMØð"4w´Ýý£e„âØÈò UZGý^`2ËwÜ„zL±î°éÌÂa<×í÷‹XÒŠs¥ÏŒÃè僑ª³”€ÆJ1,³è+ýKC¯Y½âQHyL[ GçÔV*„¢µ#d#¨x†€š¹|[@-ª¤AQ Q´•^ZÔ…=¤¸]§ó(/Ê,›«û™®×\…† G$»ö*Õ˪¸KgT´ªyÑR¨™=+¸‚MñUÜû½Ð{_«,+!®èÛt­+M]¢4‘K¹kÚÕ÷[¨+*…z¨öÒÐP·èv‹‡å,Kª¥2L [zœ=lÁÝÁçˆx¬1ß-»skT({k­ZSßC.;æ§ÕO ä»Ì37RÏGÌÑ“ò®¹Ìgz¿¹^¬Uám¤ÿúµŸàï(ûŽè× Š±×òó'I< ›É{›ýñ»Ëöÿpo‡ +endstream +endobj +3413 0 obj << +/Type /Page +/Contents 3414 0 R +/Resources 3412 0 R +/MediaBox [0 0 612 792] +/Parent 3397 0 R +/Annots [ 3411 0 R ] +>> endobj +3411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.093 212.543 220.906 222.077] +/A << /S /GoTo /D (io_8h) >> +>> endobj +3415 0 obj << +/D [3413 0 R /XYZ 132.768 705.06 null] +>> endobj +485 0 obj << +/D [3413 0 R /XYZ 133.768 667.198 null] +>> endobj +3416 0 obj << +/D [3413 0 R /XYZ 133.768 648.084 null] +>> endobj +489 0 obj << +/D [3413 0 R /XYZ 133.768 648.084 null] +>> endobj +3417 0 obj << +/D [3413 0 R /XYZ 133.768 503.386 null] +>> endobj +3418 0 obj << +/D [3413 0 R /XYZ 133.768 128.329 null] +>> endobj +3412 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3421 0 obj << +/Length 2649 +/Filter /FlateDecode +>> +stream +xÚµOs¹Åïú +ÌÆ{'¢4˜˜V(yû?ˆ„YÄá턉Àæ°ëÎ4–Ã$ëÃ.hx„6n9LÏ·Ÿn÷»íþÛãîôSÕ&ˆiâ±×v2´îyñj9Ô÷7w{iw£&aåö7ÛLJS[kµ°Áý¾£Ö "j$€¬zr<Á‘ŒQ/Ÿ!ü“Jø'U< ÖžÆy?ɯJK¹ƒs§¶~ûöù•2îòÌo”º¼žäË9ÊÛ·NÃi:(€†œ<‘'ªHJG€Añe´p:ž ƒuªqÞïoﯔ»ü®Ô:S æ…©Úý”©c«á@"@#XMÄŠ*’°R^¸y°ÒŽ±=+ëŒUã|ÄJ¯cÅ`^°ªÝ¬4ŠÕp  aâDÄŠ*’°’>e˃• "ju6V Ö«Æùˆ•[ÇŠÁ¼`U»#X9«á@"@CjQE™±r0Û`¬Lž¬çRÅà|€ª5.Pé¸ +ƒwfª1_gJGŒ©á<§4Ì>*Rd‘„T˜ &âóqb°Î85Î Oá‰Á¹ðT[¯ep †ÓtX OœïQ5Nó>yσ“õB:}6N Ö§ÆyÁÉ"818œjëœ,ŽÓpš + ¡} òDI@˜û*Í”1ÂOÓÙ@1Xg çcM¾¾~Àa^˜ªÝ‘¢]?Ô!BC8Eì¿EV*ˆà˜fzZ cÝÙX1Xg¬ç#V~+ó‚UíŽ`åQ¬†uˆ çˆËRd‘„•„é¯äéÊ8u6V Ö«Æy>ýY«ì:S Î…©Úº{ú›£ @ §é°Z»2d‘(;(xº2vò›x.PÖ Zç(¤<çpÎ@5Ö+@áåùxšSì¤EtÄúœ,’€Šjžå(­ÐÑž ƒuªq>µ>Bq8 jë5 ÐjúÇV®gŠÃ¹0V[Ÿ2ý¿B”±á4<@CFbC†,’S0ÖL§@­…SžÂCšÌXæøedÈ`^0«Ý‘/»àSÁá@H@#—@©‰3éA‹g©Ê*)”×ÎÒdΚ0g7ë 1¸Ðj{ ´ç(iÉ:”€† ÄU,²ÈÌš™`άyš8f +"ÊH`#͵6Ìqûn ‡}†­ñG–àŸø‚Ìx¤SPf ©‰Y$ÑT<½€¹…6†4™¶&Ì‘¶õ¹%‡ya­vGXCç—ã:€†÷ÄvY$‘æa¾­xÖ¾L0É@CšLZæHÚú´“üV»#¤¡3Ïñ@H@Ã(âºY$‘æT<} ã¥6PHcH“IkÂT-ìõÙ'‡{A­¶ÇzØè tR–ÔèY2cM”#dH‘F¶.ˆÕÞcx‰6§Ä™$±×DI„É…O¯ÉÀvÆ +c i2eM˜#eXÆà^@«íО(Іu0 g‰m(²ÈÌšžüÏršž¢˜¥ Å‘æÀZæÈÚú¥‹æµÆA ½vq<Ð)$³†šˆKid‘DZ4Bžf”Ž^xMYJãH“IkÂÒâzÆa^H«Ý×I‹h…6¨IÔ‚Úõ¤j$΂„r‚§5»é@iFq¤Éœ5aŽœ­×hæ…³Úá ­ÒÆu ‰­(²H"ÍÁ$ÜðÌ´‡í¥Å‘&“Ö„9’†ÔiîµÚA ¯ÓÆu0 eˆ id‘ÄšuPPð4¢´„ó”Õ Ž4™µ&Ì‘5¤Nc0/¨Õîjx6¨ h„@lD‘Eió~š§5ó¢UÛˆ2V Ö«Æy·›ãÇ+wyãåz?#@A«NpŠV›Åk8T‡ аšØ}"‹$¼´L·0ÑÚŠèÂÙtÑ3\ñÞšo_߇ÔatçBUm}J•5¯^þQPžFÓtH ˆked‘„Ó|‘ŸbâIiád»VfòyѨÃyÑ`çE†4™±&L=€)lcPP« ˜zbÕ4‚"¶™È"3qjòP2ð´™´”B9pa2pu–ئ×ïŸÊá\H«¬×Æ4Þ?u<Í)³†ñÄ ²HBl¾.Pò,•©D˜ü +c¹Ø×c iŒµaö“Èâú+8œ3cuïú€,¢w­OÓÁ4¨=&ªF",((#xZL*8Ÿ…0†4™°&ÌB˜òb Ö±Ú{1È‚26§ÃhxGl.‘Eeó5„’§¹¤¼2NÊÒdÊš0Çë|XÁ½€VÛ#×ø€²6œ¨ƒ hêSÈ"‰5„²< dÊIŒ;wbÉaÁjœ÷Áor¿qãÂTí|ÊTð/~¯ññ0¬O€†U$ád,” <]$e¢0±]³N ֧ƹžD"}pÿBUCâ­ðñL.@ÃQŸ@IpiØ+¦ç#(í…üáù\ ֮ƹ…ëË:]  +]u‚'èúŠ×p¨ ¡ÇqÐyºÐáQEÓSeþø ¢üä¥ù6®ó-ŠŽO^Šprõ‡qý·Ýýîñf¿{¿”K÷Ëëõ§oË›?í¶Ë»¼(ù³6?«¸üÓôØyPSý(¦Ï·ï +ï¾$þóýãî>}öyáüŒŸgã +endstream +endobj +3420 0 obj << +/Type /Page +/Contents 3421 0 R +/Resources 3419 0 R +/MediaBox [0 0 612 792] +/Parent 3397 0 R +>> endobj +3422 0 obj << +/D [3420 0 R /XYZ 132.768 705.06 null] +>> endobj +3419 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3425 0 obj << +/Length 2592 +/Filter /FlateDecode +>> +stream +xÚµOs7Åïú“†o¹”fûðxøâévxóâð²{¸ûôáãþøÓ›ù£_/•Û>{¿ÛšÑRm7—?_wñÍõÅ/dâ‘elâf³»»øég¾y?ünÙšüæ·ðÑ»ÒðQ1ÿâÇÍÿºàÇ ËĬgÆ©µ†y®ZbÒi&øŸbˆ›EŒbVO-ø8lº1GÃ0ñ|˜Àe k“ʆéêqwûái¿{úü¸?ß«R96M4öRÃFºÒýÕ‹C}sW±W‘¤qWbbšŸÚßìÎmµ–L;óøVF4¼öÈÑ×þ°4Íèkä?l?üqøÓ'pŽŸ?Áp ³}i¶7~yà ÜÓÀgöoÞ\] +e¶¯ÿ=¿b{Çyó¦Äp¢ + ¡Û³ +V$p%'¦ˆ°R’MÒus…wŽXÆWF˜e´ðYy‚6Z¨I×h¨ + !´@Â… p Ë&oiè’<륋À:âU8—x©^ _y„¾T›¯áT6@Ãy‡ +ãšY¥hãžI1uF`+œ ÀFÿ„W WûÐ8œ©Âhh…]pcEf¸Ì$™t4 nçEÞÚ^¸(¬p•Î%\Ÿé¢é*¬Ðõ} ¯ñPçdÌÜãèÂj¸ì(ihàòŠ!»á"°ŽpÎ\·_æS÷›eÂR$Âòm¾}~xÕäl8Z…ÐpÒ"AÊÒ¬1ICšL˜îSG +ëHZáü4ñO¿Ý‰e¸Œ\¹ó9\ÿþ?¯D§á0@Cµ5:pŠœ œD Oƒ“ñÌsÓuÄ©p>à$—q"0N8åÎ 8É&NÃa*$€'¬HÀ ¶Ê[š„Ñ–i#ºq"°Ž8ÎGœÞ.óDàœxÊ­—xzÞj8M…Ð°Ö ÂŠ œ* A”ÒŒOÝ- +ëTá|J-óD`œxÊxRMœ†ÃTH %%,´HÀIx8ú;œ¤`Nënœ¬#N…ó§ÆüDàœxÊ­—xjÏOÃi*,ا{Þ‡ @ñÕ^`?P|‚_,x2 žœ#O¹ññp'ì2OΉ§Ìzép'l“§á4@Ãrd-2ó¤'ÇœôäW¶—'ç#N¥ñqzjðDàq*¬—¦§6OÃiÎI˜%$rõ„Õ0yš†öšY¯ºi"°Ž8΀Óîæ^-ŸÝQ8'œrëN/®þ¡š§wãi*(xÎü„lРEPó«¦)>i'™’݇; +ëTá|Êêe œP¹õPV7NSaa~ÕȦ Z$e,Sž¦)£ |Ï™n ¬#P…3õù×·V7xÖ‰¨Ü»FÔ?<‡,M¤†ãTh á‘%(´H@ +Æ„+¢%”vÌJÙuDªpŽH¹e¤¬R¹÷"R®‰Ôpœ + Z1¯=´H@J XС´2LZßuDªpλ{­µ9â*Ðì뭬Ї3U¸ í‘´H€ öŽ’4-%›„À:ÂU8—p-7ö($ºò+t5|ã¡*d€†ÈZ$àÅ-¬h:2Zpf¬èÆ‹À:âU8—x5N $¼ò+xµÏ‡CUÈ ç°¬ÈŒ—šà ™æ„~‰Iîzé"p>ÂU—p-wiü#[E€¶šÍšáLçTÌZ"{5h‘€–—°\ éÕ(o˜7ÝÕ+ +ëWá\Â¥—¯Ø£HðÊ#¬à¥›—짪°Ü"«Yh‘˜…}%hz7Ê)Ö]z 0Žxe¾%\Ë—²SØ'¶þô_!«yûx¤ + á²‰ƒ `ÇŒ¡©j)+˜ÐÝ] +ëˆVá|Wcæ"HèÊ#¬ñÕž¹†SUØ l=«ðšo|ã4m¥Asê®pQXG¼ +ç¯åû$($ºò+t5o”U48ÇÒ… x) Ë¢5½²L÷_Ó@añ*œOðjÌ^ _y„5¾Ú³×pª + a ²éƒ €IÎôDSñRR3îûW^ְ¹lZæ‹ @â+O°Â×ÔÄk8T… в„ xq‹š‚Ï9Õ]ñ¢°ŽxÎ'x5æ/‚‰¯<Â_íùk8U… ûX#k^h‘09X7дƒ€v¦\w;ˆÂúXé\¶v·EŒHY‘c…²žÛ½Æ³c2k˜ ÙB‹Ö¼‚5MLzǸìîQXGÖ +眵ƅ\þ ²<@²öå\ã™*\øyó½!´H€Ë X@Ðô†f7Û]¼§pŽlåÆ%ZËÅ{ +ÿÄV`­fñ~Á«1{$H|åÖøjO_é*l(żDVÀÐ"0)˜µ4 ") “¦»Fa+œOãË€$H€åÖãMÀ†SUØ À¯ù¦:AS“B²‰w7ˆ(¬#^…ó)^ Œ Bâ+Ï°ÊW{ŽU4„@6‰Ð"3bb²ó΢AŒsftw ŒÂ:"V8—ˆ5šD ay„ÂÚM¢ñTçlÌÎ" _h‘Ø|ë§i º _ÖGÀJç°å&E€ÈW‘`…¯f“h‚‘Ÿ˜²ÇúàËýýþñæiÿîð„š‡ûÃëõíçÛ¯÷»Ã}xü+©¾þðœ¨ûÊòG}üðö¨ðö÷£äÃÿ~¿¿{>n/ŒÀ<è9# +endstream +endobj +3424 0 obj << +/Type /Page +/Contents 3425 0 R +/Resources 3423 0 R +/MediaBox [0 0 612 792] +/Parent 3427 0 R +>> endobj +3426 0 obj << +/D [3424 0 R /XYZ 132.768 705.06 null] +>> endobj +3423 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3430 0 obj << +/Length 2221 +/Filter /FlateDecode +>> +stream +xÚåœËr7†÷z +îBV`Ü/ÞÉÇU™òd’ÈÙ8.MѲj,ÊCQ‰óösúh¢Ánãd•!v÷þ¾F8èâfA¯Î^\=ûžë…#NÃÇÕÇ‚mÚ)¢[\]/Þ.™ luÎ(¥Ë¿nïw«s®èò㊫åý¾ûãðiÛ.»ÍýÝ—ÛÏÛþèº9õ÷ýJ˜åùÍfjJr±dT¯Þ]ýpöòêìg <Ñ‹<0â¨ZlîÎÞ¾£‹k8øÂáìâöÔ»…p*k.ü¼øåì§3ÚßX$¦-QF,´VÄRQãFFŸÄþÓˆ(A´t%8n]©^£k&7Dq ¡•!\¨®™.ö›O·‡íæð¸ß×*†8‡žK¸I“F}ù¦kêÝú.^D'º`ŽH: ¿ÞìïÃJɉ4êâfZ4¬´•­/rðþýÅŠ µüõç¦ÀØòêõËW‚¿fï߈˜í&ChȲƄN¥V¤ÅŠ;"¨œ8n&cUÙS•N±z”ãXÕTÅÆ°z#‹XÍu“$˜d•TÕŠ´T1MœÕ8XqÚ›ŠBhÏUyÀ•ç +ÁA+¶0 +–.‚5ÛN +Ð0ÖT’U+Ò’E%ÑBàE-áÌM& !´'+‰“%i,¬ØÁ1X©£"^³MeÈ )jÇص" ^Êq Î[ÁTÈj=/ŒÐ=^iä/=þ:ĈïéJ éÒÅ—â|OÇ\4ÔÖ±U«Ñ¢e ž¸ÂAË +¢ŸŒBhV9E‹Ž³…` °;8Á-Â5ÛT Ð0\WÒU+Ò⥠ˆq¼ #LMž b„öx%‘S¼ +]‚€Wìà^å¾k¶©  !ÊðªiñR0of/e‰¥j2^¡=^Iä^_ÆùBpøŠ-œâë?EÀf»Ê°”¹JÀjEZÀ஬ÆY‰PR©ØdÀB{À’È)`jœ/¯ØÁ ¾T¯Ù¦2d€†Öª¯Z‘/iÆpð’P7y¡ #´Ç+‰<À«0üBpøŠ-œâ«<þší*ÃhV¹äU-ÒÆ,Œ `œ#ådÀB{À’È)`nœ/¯ØÁ ¾\¯Ù¦2d0¨aU;y¬iñ¢'3ˆÓñ¢.œLBdOWxW¡÷B0芜‚«ÜyÍ6•44­ÌU‹4tI'`Ѐ—t†P1yÕ !rWøàäG‰BêJ¢åä¿JÍ6rÜþ¯aÕj´Y㜔´’h;Hù<óÖý\à­xWÀ +Áç*1÷ZŒÛqÄ ÆbÅ^ q›m*ʥĺÊTPµHK\ó)qV¼¤áDpWC‚O\bf@Üø{ÃA@.¶p +¹â‹r¾« .ͧ¬ÌU‹´Ì)M„ÅÉIßUÂÏ\bfÀÜøOs0æb §˜+þDg¾« . ÁlåÊXµHË´H£3iˆæ¼†97ž¹ÄÌ€¹Âr,†…]ìátåõØù¶2ÀHA¬¨Ì'U‹´Ô ƒœ3)áÚÖP‡àÆS—˜98ºYïŠ#9„ж8vf¶@//þ}j 7ÛNж2­T-ÒR#8NZIrN“5”!¸ñ”%f€²Ç‡вã?îÁˆ0‹ƒç0{óË‹ÆL‘³Ù~2ˆ€ã•ËgÕ"-gTÃØ'»$%J³ÎÜxÎ333ÎBìÀY|œ3Säl¶Ÿ " aLí"H­HÙp0UÇ™’ÂE„Ó4ˤǙBˆÜ#•Ž‡e\éñé'‚ÏUâ 8(k•èšmꘋFBòÊSµH —å0zÀI1 «ˆUb2]¡=^Iä^ã3M ¯ØÂ)¾Š3Íù®2l€Õ•+jÕ"-`êŠá$™„$]Ûøÿ¨¸€‚ Zäáð5Éî¬Å8iiOŽ9K]ˆ"h³Me Ã*óMÕ"-hÊ¥p–Ñ„f„I=ŠZ!ù„aã–¸ÂVèÖ,Øb'q+÷k³meHÚ¥ŒZ¶æ_þ(NfJHÐt|¶Ò+Á†‡-q‘ÀÃíR׆à!Л(Ó¦Nôn³}eP Jky«i†H³¡‰üXc*p65[Ÿçx|Øæ«þ¨šU¦šu¦šU¦Ùþ†UžÅìWÞÂbÎW~Ç®&Ù"lÜ¡Z3ìþN_mwÛýú°½î;ӺúôØþ¹Ýô½W}ÎÅsf»¿8¥6³ÁW¼…×ç۽‡?{Éû¯ÞlwÃ[þ?ÊÝ:Ý +endstream +endobj +3429 0 obj << +/Type /Page +/Contents 3430 0 R +/Resources 3428 0 R +/MediaBox [0 0 612 792] +/Parent 3427 0 R +>> endobj +3431 0 obj << +/D [3429 0 R /XYZ 132.768 705.06 null] +>> endobj +3428 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3434 0 obj << +/Length 1903 +/Filter /FlateDecode +>> +stream +xÚ­XK“Ü6¾Ï¯ÐQ]eiø%*‡T­ãG­SëÉÚÊÁNM©ÕœneõèP’Ç_¿ Aª¥¶üÈ®OI@|$¼¼yº½¹}ÁÒ ó†íC@9³Ti.â4§Áv¼ )é&¢„ðî4T]Ûo"&Hø°a"ì4N†£Bâ'Ê®9Uµr»…aý 7< £CY‚4‘0R’m~ß¾ºy¾½ùó†‚N$ 3hœ”ÍÍ»ßI°‡ÍW‰y.ƒGËÚ<VjÖÁۛ߅adÍ0‘ÅŒ 4ìNb ‡±W½Ñ¤D4‹S– §fâ p$)P‰¥P|ZcE'Šx>šû5*=ÅÉDÑI^:Í&JN»)Ó.NP1Ý–Lk Ÿ·\)œÕšZmÁZMéDOåžžÈ<‘zBx"ñ÷ÄE¶'ˆ}bÿ4Mã„çAÄRPÉEØ{ÆÄ‚ëöç³×“qoG9jªv†ýêÁj˜Ì‰FæôýØ(d^ˆäY̽D·"ŽAØsæy†n Ʊhq”Ñ®1jCEx€ "Œ!Ê)KÃ×ÝàÎ ÇbðTÕ»Cv¤aÛ¹-­Šº>#ݧS§µwwŸW ‰ReË7.>訮våŠYIKF½Yî‘úGcŠ»±Þ#ÝvºA•pæXvj‚ÌL唄[Ÿöêaób¬såRÆÐM‡ )úÏ2]ü×ÇË ñ1—ìÿŠš¶‹Ì Z§¡ÿÆðy©Z¥‹Aõ%‡¤¶7zËÄ=¥];íÁ3`¢Šò?Èzê쵸þX àZwt_õÅ®®ÚN/Ú?ðßkïùT„K(§.(Íuë \Ïbˆƒ+“f&LòìfÕöƒ €”òðé9g}“íÓðrÌJé‘.M·eˆÂq´!Á]GaVºS´xÕ_ký?\RZu¹<®ØÏsÛwx6SfÀ ’‡¿•Õ `8êuâæ-ᥬI2ìÕŸ£jK´…c}ܦ SÛìä"çSÑK¡[³cfÓèðÀ­kUí— _Yß1Á&ß1'Êc?ú6Ž…è÷û᲌K„)dFœñp}]Ô\Ý™UÛÒXpÓ†ªëB»ûºµ~ãê±>ÿ +2f”~ú + ›¤ŽÊÚÈÓ°Á´‹O\8¹@‹ØW{—\f€~oÔNfÝ”I.Ø©÷îŒ+Ÿ¤‘qKWÉÐ`é3P$R^þ^\ê+ÈϤï63‰…“eT“¬\îö\ + 0¤ÒŽ.ö{‘‡,&ÿ¤˜eùÅŠ›;œAöõeËi¸0h‘ÜޘϮ»]¾»þ^·úÃ0—ð]ów~úÿŸæ2.ç¿ %”ýôêÀÞwv8n#ÏT‰Dâ¾tÈŒÿ@]‡Ç‘+¿Kç?Dí,®g|Ö}> endobj +3435 0 obj << +/D [3433 0 R /XYZ 132.768 705.06 null] +>> endobj +3432 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3441 0 obj << +/Length 1681 +/Filter /FlateDecode +>> +stream +xÚ½XK“œ6¾Ï¯ öÄTíÈzðô͉³®¸RqlO’ÃÚ43TaY¯}ZjÁ‹w—+—AˆV¿ûëÖPçäPçÕæ‡ýæÙ œ˜Ä<öG‡ A r‚Ø'AÌœ}æܺL¶Ý1J©û¦îrUµÛ÷©{ÜrßU ¾tg‰‹ñ‘ª²Î i¿&šôïf+BwwJSàæ{\¸ŒFÛû×›Ÿö›O:Q‡Mt`$¦¾“–›ÛÔÉàãk‡GÎ!-á)Ó çýæí†ZÃèÌ@:5Ч„ÓÐ üpá£8÷ùg7BLEÄ}(ïʦ+4õ‚óŽ{ nÏ°i_öe½Ý‰0@÷èE^u²©’ßÐK‰v*n4²í‹Î~LŠBf¸¾z· ¨»ÿåjä¢F¥¬ºvØ_ˆ;ÉJ6Il@c0aÇÀ©¾µ;i[YÆ ¥*“Ž1êþÞjÁ&ÈC€3yØrêö§S^ƨRUøÕQ%3:, žˆ­?Ø7yºÍ¿È']ͦ¾æAlS1ˆÜ$ËÀŸí5¼…ÂÕÌì2©2$m¤v¾IÎ-ó]{.Um‡ßÕwd’žq§íÀ›Úãø¡?\û ] »µØè ?ÿ¿x|S8´ÈW6ïP±Bu3ŒC×µÏ+°­´µ` E¡´™J,„öÚ.“M³¢”ðI±ÁLmÆg'8aüu„[°{/ ™ŽÁÁJ*ÖÐMYT|¨5Þ^Œì÷HUQ(vw£ù3þ#§¬ÍK™ŸÎ.rîÏV•rp#Œl»Ñ‡æùbË„ïþñßúV6í÷N76Z³~‚™nIªµìDŠÏ³G·™2ÿ2äBÀÜB^Š´X$ôI±KBì„ÇÝŸ«´‘I«cð¥Ë(zŒeHüp$È[Ô´” ‚ƒu>l)4GZÕ +4!¡zÂ^är4ø±c"&<æs¡`ðŒð—•Â眷 µÃ/Ð^@áCžsoz3·Ç±ƒÀ"“Ç- P‚m ŽçÇQÀÃòä"$‚³eR,z0á£Û0Áç²kÈ_€R’vë¢1†sŸ“€²¹ám-ÓÜ”M̪åG$ò'Z­Õ*§$ŒÅ,œÀr',M8õ³o*+Ï>Á“+Ba~‰Âø"”?)t++¿;'V|ÒH\TÊîHŸë¤PEÌ‘˜¡±mꪳ]^º‹ÅHM2ö¦ÜøUucŽZ˜¤éÖÜË &–Šµ¨‡$£¥&ñ<Ä9d ]µ6cŒ§lªUE^É1[qóªÍ˺W¸}ì«Ô¸Ëd uo´OtDµíá ü™í¤Ù2Ý’»ktW.*ª;›ˆ`´­W•nPEqo)Híò®7]Þ|w|­a™7le½ýf2*ævJ0,3»‚Ub!4…°˜ Te¢0­Ý’h´Dø¨³Ö¤‰&¬ê.ïÎk=Ö÷L~4ž¹”ñI¹<ä‘{#—c#«¤”»FžòzÔZ 2 +˜‡“,á,àIkžª¾È,Ä”x±?wÌç¡-=ÄŠ¡—IÕÛšf š$Ùjö¿ªCgÛŠuÌó¼Ç‘Î#ž,¡Î¶-]~êíø ?Iså×f08â“2c_+3>|À¬@»ˆYû¼Yu‡¾Z…+[ç!‚œ™Mô-B™«Þq .p±@+½…¥¢W€á—VY¦8¥hŽw¦§öè±Q%®Ò6äe¦çmÛ›8BÉ@ÓNå¬zøpÙ±uÆp82ªµ$s¹z'“µ¬2û‚'ùX‡ZtRÜ· æMY·SÌš¤y¬.!˜µlôh;¤àÝYV—é<8΀¨OûªÑ· ² ¾¶s[Õ̘&ׄ-d«Iü^Z.ãᦎC¾m7'{í~3à-’Öu£jà<Œï7ÛPC( +o‡Šêšûùøx;¿˜PÙoLŸ:mµºÙhëÊ `˜“²éýçû©&×+£$§ƒË-Lߣ&³ýDÂb„…f ƒ t]úñ7©U<©t¿tò>Ôk©ŽÃ[ÜÇ~Ó!ËÖ‰³•«F§”¯xÔµé8{¢Úå#Ìpz2™\®¡ßýÞ=ÍHWÿIŠ©Åùiøc, q(¢écQLDàÏ︃ÿlQïÏ=.^J{‰óðÁès.ž³ß8¥ÑÊÿhÓÊŠü`9,’¼TŸïå–&ÿ‹µF +endstream +endobj +3440 0 obj << +/Type /Page +/Contents 3441 0 R +/Resources 3439 0 R +/MediaBox [0 0 612 792] +/Parent 3427 0 R +/Annots [ 3436 0 R ] +>> endobj +3436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.854 217.37 274.31 228.274] +/A << /S /GoTo /D (FAQ_faq_gdboptimize) >> +>> endobj +3442 0 obj << +/D [3440 0 R /XYZ 132.768 705.06 null] +>> endobj +3443 0 obj << +/D [3440 0 R /XYZ 345.463 497.472 null] +>> endobj +493 0 obj << +/D [3440 0 R /XYZ 133.768 480.82 null] +>> endobj +3088 0 obj << +/D [3440 0 R /XYZ 133.768 404.132 null] +>> endobj +2553 0 obj << +/D [3440 0 R /XYZ 133.768 162.01 null] +>> endobj +3439 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3447 0 obj << +/Length 1750 +/Filter /FlateDecode +>> +stream +xÚµÙŽœ8ð}¾åeiiš "íCîÝHÑ™Õ>$Qäw·ÀŽ™íýú­rÙ =éD“Uòv¹ÊuÀ‚]À‚—O®.¾HDPF¥€×Õ6ˆ9rQ¢Ì"QÆÁU¼ c%«uÌ ;ŒÚtÃjd,Ü®’,4=mƽ¢…Õnåà‘®ûÏõÂXð2 cV®Þ_½ºx~uñé"aX/˜ÇQɲ j/Þ¾gA ‡¯ñ²n,jðPc$l‚7\°Ø9² ªvã¬3Cá¹ÞÕ›UÊÂȪëÅ b¥¼ ÖIeENB½K’ìëá ΚQ +z0B^o·½RÃ(»…²;z¯“Œ˜Ÿ²x< S‹b„„W>XÞó€ŽT‡"_ëÞt­êF‡?Ðû`= ”äq€<¥—½Döu´Z§q^íµ£§Þ† Ð3[wã4´q…âƒbëüž9‘Kt3j07Ïóp;u• >ܾc÷fÚíq_Xiâ,<Ò©u.†Q7 -Ñ_øöè2$Û8‚C¯jaËË'y¥IîmÿáÆûpÆî‚GO=êh¬nkÎ3ÀˆOU´äe5N¥Ì’YM:éd«@Ól*â"üutÍ`hÕÊ«˜…j ­»2 +Ó´MB{q„n¤5) ÝìÁÓŸ«ËY©ð:´€ÖF9ΚG?Ñ }ÏÁᵪÙ[kÃîF{ZÉ3|s¸G”žíµÑõvÎù­l½Âà¢+ÇãA96{]9>KûÀv0­ÃT7¸¥î¼LD¢«ÞT¦{Ó ­c1ÎN•ü,O8Ѩ½¢%yòphtåÊ  >É'°n•ì î¶SÓ rè Æòµ®==½fma}‰$›É³2ôÖãp’Mâ ’&%·)„º'P[38h%5\žqOgPsÓ{†/¢¼˜ËÕ :Át?­ ˆeê©œ ^=<…üÅl¶tòèR ~1Hw³ îQµKPŸ¥`q[tJ—"äº,2–ÜÉ=W“ÒbQ“ÒÈ…N×ê¥ïwê°%X'!fm:Ep[öÓÂDX@–­À‹”p‰KéK°%°M%]·3¥ðcG:Û’–º’ÅmPÀ¶RýHS½pXjOmÈÚÈQ tV«¡êõ†j w¦.\°¨ä¢ˆÃçwX9e™ ç£í•F²3RÏ…ŒZ6ø~ç:ýŸÐß1¤áØ7ê$Žn›$bŠìœ²^¡u7+OíÄP[½õî*9ÙDÏ3¯ XVG;ºmU­a,Ò3 +A‡hde{^é]W€³)dfã ðq_×Zî°ø!Ülï ’—¹6XE¶^žéGi±$»÷,PðHsÍtlôè[SbG©]ɘv–i0]~‚Ó/º1¾îV{¯§ú©[C¦©ï? MÝ wª×Õ^ö÷^»~i™ù*D›©ûÞ|ÇX¢ê3N)D”°¹:~g"">û–ããXÈ´³wdYˆéÇŠðo¬sgž‘Î]±ƒ•±c9:6‹Ijµµ¾›OåËbœDY–žö IN™¥@gÏRü0mô¸Õª©‡ÿá% ¥ÙK8[/iç&Ëõh·Û;»[d’- ÷=9ú‚Ùf—·_7·Tý¤¤ãyAûåÃ[õP«â Šs< ? `Ð#‹ÏÏ =ˆÏRÀâ,— MÖŠFYõªS…%îitÙlÆ£#ãn×µ»®”½!$®/»|K{;­†¢õÊF÷Ý#:DBY¨ƒ Ô–Mõ<ñ5Ý]nÝð#c¢Rþ2ûa9ž}'$ã£Ñ„ëÄÌ`½øÈȲª¼v—·…Ò3¶FÉKìR:´Z†‘;thô ankâæqæ’(ÚÈ·*ÿLØÁÎF’ D È¼dEÄ÷W±ßïX;„à×µŒUÕâ;îíÁlO°ÈÏ’hD³tO'00gZðvöИ˜ iOQ:=R±4~&Bá‡ÉI>!ÕMRŠ­«qrâj¸·V(gkÀ‚XM¯ÇcmŒÝ+¢çθ»+¥gP!ŠlFB‹qʪS²°bò¶éeÙdÎõÇ- :7ZÝf³¡^=HÙ€ÇÔ’ê‚é’MŠ´ÈWßjWôÙÃDÞæŶªý|Æ âÈO¢`ä%ærðùÁW>ÍÅgØDFÓ û›šï(T¥îÁmЇ¡Ò¬F.=¬½öø«jÐÓ3£”Ï\iÂК†‚¾y° Vc‘Ç)JTHS¥àCÇÏm§~Ä¥*~^«“$fHe§ Ê˜ÀDÔwõûÔ¶?Ò¯lòjÈm¹Ùz•:èSM‚àÌØUÒÍzâþÜZÔÒ¢–yg»l…}ÙIøB¿?³ášG¸;ä2ýСAÎÖ6³Ÿ&ý(˜Æê|fPæò#ÖÈt.=ž4è~‡—QýIžkð÷Á¤-zز9ï¸PÙ #? +O>£(%Šâ‚Hve;h"Ls¤°êBdTª‘ÐÖk(W­ÊÆôPb6õ žøIÊÉüýAÆôÿ‰Åë=›ÁnÇ‚‡Žøù7‘ +8iRDúp«±RCú‚Oëu%u?Vž‡O’Óî6—úäÁì)Ÿù5þY¯L‚ôø?TšùAM»ÒbZ!WÛ&/UN“ΞŠà)·Í¶`,ùwüí*×VÂÚ~Y½l¿ì¡—:½òÿï® À +endstream +endobj +3453 0 obj << +/Type /Page +/Contents 3454 0 R +/Resources 3452 0 R +/MediaBox [0 0 612 792] +/Parent 3427 0 R +/Annots [ 3444 0 R ] +>> endobj +3444 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [328.355 654.082 359.817 664.986] +/A << /S /GoTo /D (using_tools_using_avr_gcc) >> +>> endobj +3455 0 obj << +/D [3453 0 R /XYZ 132.768 705.06 null] +>> endobj +3456 0 obj << +/D [3453 0 R /XYZ 217.374 119.253 null] +>> endobj +3452 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3459 0 obj << +/Length 1812 +/Filter /FlateDecode +>> +stream +xÚ­XK“Û6¾ëWð°©*ÄàÁ§«rÈN²®M¹²µölr°s HHb…"><3ÿ~»ÑEÊ´Ç)ç"€G¿¿nˆÇ€¯7ÿ|ØÜýK&AÎò†‡C ”bi’I³$ÁC¼ß +ÅÔ.œóí½i‡n'²­išº=îBóípÒ4Ò;Á·º£ïb'ãíÇn§ÒmØTpE&¢x+„Øýþðó槇͟‚ð@Ì –ó8(Ï›÷¿ó ‚ÅŸÎTžvë9Plx° Þmþ»á/k§LªxÒF2éôùé©8_Ý“¼”×xáû^Ÿ÷×Å\†Ú´nã+¯=d<žnÌqOCiΗï¥A@>¡Œ˜Šrí­>K䨄€{Šg Qpa×Ê¢%ê^ÓèeÃÅCgÎþ2M¤{úž„²_°¯tëN=ºÖJ«ÔRZÞ‰!Ãߊ•$gqŒÎ±{>ð˜÷Z[“£»£óøÛ×›à}(µ-öf' PðÇo%—Ò â;0d’l{ƒ£ÜÖíΞ3]e½ÓÁÐX·e3Všö‘#€zOCoÆ®t¤Òø]uëOû箇Ϧî +vb‚ßHÏ…E>p.½b93™NF9Ú~X1^$X)¿ÕŽ“íãI£Âq윶îœT2Á£9‹rÍ;9Ë²ì† ØN5Áxt¹ÏâDÆ~‹¶ +AwĆNöšì"âI–†!"_-<ëG«EÊò” Ÿ1ãyJçþ± ÈÒâcË’>B?þ‡FR•HæJrSÒïÂâÔôßÞêÈ4eqæ˜þ5Šä^‘ ðæQ +·i*@v`—(D>aǽ»©Ó—ΔºïÍìh×è“B“7žD¹ÏåU–whÍ~“šN ™mºÕ]1à ™o߀ގ4H­ôyŒÇ#¹–ëö`ºs8C„ƒq›k+¡òÙb—–Q$'t‚B¨.Dø7ÆFò±ñä½wÂÇz8…ååòÙ@Áé»YÌ„Ç~(öýËáò‹±ÖMrØ8³VƒñmýD³þ¹ôƒ'Éfo¼› µzV„8cÝŸðä×кކžH×.º¬ÏÓÎbq`nrgº¶8c5È[À,4£‘§Û~´eO?ÑÚGóñr°‘hj”è[I`þñÚßÝ4tå¹ ¶`Á)™× ø*ÆÁ`Ä•EÓ<¯ +8s<¯¡«’,R‰µ/øþS_ +ˆ¨Xæ3@T2Ä­[.¥«…vÊzQ36ÕµÞÒ‚«±rrΫºÓåQ6%!®“x©àÔ8Ü´h÷Ö¸Îc©ýªL«ÑêÌé—t©tÁª"&|°þ]­œçôÙV1áX½Ó ØÀ7L·WûvæÅöè·«[@ÎÎN);GCáx.JÈÚ´@W”´qÖ6IÂ3œPRH7• € 3OxÄ}æ°p2dÝWt•[¾¬ñ¬g<×ÇÓ@Ó½32Þ‰#´  NïVçêvBÅÛ_ßÒÀd׳ew$ü| G¤Œ»n’%cQ25aãÒiÑ5“ü|†Ÿº&T ˹äýÆ”¶ÔÄIJvŠ¡k+:p‡‡r¸ÚÔû®èžéYTk]S”³« pdMXÈ#¥>vq‘,N§$gkmëRiƒ$J¨£cï䮧¡ðši投c×évp]¢`\¤KøÛÙ± +ÑJ¢Ÿ÷¦éñC¹¶ÉõÀ ‡\ü€öDÒd:»îNôÍì/+ƒ m§´~)ç‘@µg¥iWc¶‡â×FØah¤þ nl½‘€÷QÁ/Px'¶]­Ý1â³e}³Wiíî˜òÅF‚?äê‚»«ö\5˜# ­a/¿Oîƾ»k $›;hî¦ø¹ñ;g @¥s<nÅSW¸O|©uÏ%ð €ïÞ":ìÔ¨Û>žì£ NìÝÊÕFHYü;®7õ2}a Ï+Ê&‚‰)^Ã7kªE,Š¦²¸x¿¢)]‚È4zèêRêJ_kÁJRJ9O& _ËÙvFóB3RLUì +q¡È(_ò[@îÍ‹ gÓã+AªQ¡¢qå A¯žô2žjþp*L(Ü!CÌæÚÿÑé?G(_ô<<X.Õ_÷À­iá àù-–­ô€kżQÊ29=x ܾ׈O—µ?BBx¾¦2[Êò£Æ,h}SDñ1{ozºw…}3‘Ë%û®ŠÓ)æ{$ {3~ ø/(!9“rz‚ûtž"ý#ú¾hF½ôÃêß`yÆRõWþó~%ð\RÙüϯ,g*qóÚ½«e2>œFšü¨KšD4þJªW"£/Éy¶öGÙ¼5¬÷åºt¥yz†Gè­ÊÿXöBÀ +endstream +endobj +3458 0 obj << +/Type /Page +/Contents 3459 0 R +/Resources 3457 0 R +/MediaBox [0 0 612 792] +/Parent 3463 0 R +/Annots [ 3451 0 R ] +>> endobj +3451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.98 617.778 197.465 628.682] +/A << /S /GoTo /D (using_tools_gcc_minusW) >> +>> endobj +3460 0 obj << +/D [3458 0 R /XYZ 132.768 705.06 null] +>> endobj +505 0 obj << +/D [3458 0 R /XYZ 133.768 667.198 null] +>> endobj +3461 0 obj << +/D [3458 0 R /XYZ 289.533 431.878 null] +>> endobj +509 0 obj << +/D [3458 0 R /XYZ 133.768 415.151 null] +>> endobj +3462 0 obj << +/D [3458 0 R /XYZ 133.768 388.539 null] +>> endobj +513 0 obj << +/D [3458 0 R /XYZ 133.768 388.539 null] +>> endobj +3457 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3468 0 obj << +/Length 1698 +/Filter /FlateDecode +>> +stream +xÚ¥XÝ“›6¿¿‚·â™X§$ 3}h’&3é4Mœö!ÉΦÁà"¸;ÿ÷ÝÕ +Û8\ç.÷BZ­~û½‚›€ï®^­®®ßJ¤,5ðZÝB)›$0©f&Áª>‡B1µX +Îyøºmún!’°­ëªÙ,–Ró°ß–4€©o Áò£ïl!uxÛ-T.ëX$"Ò¡rñuõÛÕ¯««¯á8;X°”ë ß]}þʃ 8SiÜ9Ò] " ¸±>^ýyŽ4|"?—Js&y3©4IõEJípŒû®ß*u¶)aàáD¼üI/Ø.eXcxÇL'1Q¾ïª¦ÅŸÕÊ.Û{½µÄtzlÄW㹶/Ú¡Ÿ9[i–3’±‰ Ø +T¤¦Àž(/€$pçî!S–$G"ä ç².çt£#§úùº1êæÿŽ J=¤4f"ž£¼+oë ýL¸T±@©ñ•w­µ4FeW6yIŸ}¶®ÝP¢hjëלnpà¥öcͫƳÍl9ãQИdÆ´S?U^V[cß•¶lz8O¼X,#.öóçÜŒ¨™L ø"´ÖÏsç”E2~ŽÁl™÷UÛ,mŸuýœg¥Ì˜èuDÝd»òçÖ¥¯Íœµ…ˆ˜ŽÅ×Gw‚óaÏfæ8-—sÇÍ´2=Òfcü¬m[½O¼YQ€yìÌIqÌâ(w?, äøÙwúSÆÑ–?n€ÕzÞÔîgðθN•AP‘ó‰TþP*_YŸÍ`‰K"õ,PV"Âb~K_Þ÷OÁr Áë=sÇ÷± JOa“g~4ÌÔb–ž2è‹.ê1œT:M*Š¥âÄÄaa¾g&4‹ã#åI)Sn†E\\D€Y%Rßð(ß7éLˆ§=žàZ˜…ÐaYFFÂ)é³bcûTÿ6ïª}ÿp±$¸Ë§c-˜pÉÍ|0æÇØÌ "˜ÄP92I<)ݸ@Ü@{PöA{û:Ë]‡ˆ´~“ ¨›°'êž&¦\bÏ…A¯hD¾)— Ü> endobj +3464 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.008 250.999 248.796 261.903] +/A << /S /GoTo /D (mem_sections) >> +>> endobj +3469 0 obj << +/D [3467 0 R /XYZ 132.768 705.06 null] +>> endobj +3470 0 obj << +/D [3467 0 R /XYZ 345.153 254.152 null] +>> endobj +517 0 obj << +/D [3467 0 R /XYZ 133.768 237.425 null] +>> endobj +3466 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3476 0 obj << +/Length 2774 +/Filter /FlateDecode +>> +stream +xÚ­YYÛF~Ÿ_¡‡–,¦›ÍæaÀŽ½6Ø»H<@œ hQ-‰0EÊ$åñüûÔÅC2'F€}Q«ï:¿j©Õa¥Voï~¼¿ûáM”¬ò0O ¹ß¯´1ašd«$·a’ëÕýnõ1Ð&4ëVJ¯šºo×: šª*ëÃzYôGÏ°>­µ +|ËßnÙàK»6i°©v°D¦chmÖÜÿ|÷Ÿû»Ïw¢Vz¶±seWÅéîãjµƒÎŸW*4y¶z ¡§•‰a¨Æ‰ÕêÃÝ/wj~c–ncÓ02–oS•Û"tx¸»š6Y˜š–¢aeUÁ-²,pÞéÜcǼ­ç¶[ëÀ»¶8ú3öMËÄ¥n}×T_ÖÚCgë÷¾õuáe•‡£¯™bq%Â, JÚõ®ía8öj#'Ýh••k]:ÖGËb¹ ^ñwÑœÎeE+Â×¾úzÇ_¿+«Êp½‰cøðÙzc”ÅZÿïµµAÇ }#˜ézn+ï:!›Z6.OçªäÓÞ¨$ýÚÔRÞTÅ‚&"fɨ‰æÜ—M ÕÏäú: +c“_ß_Œ0 +NHø)‹Ž ðÖµ ‡É“0™4ãNO†I³aXíýNVînÉ,•ý®^”}õÈ}­ÿ|ñ]O&Ÿ¬¦o¢mê4šärZ8ˆNÃfÉКÑiðÁËÅ]Õ5" eC­Óo„nÇþÖÄñ~}{·úHÞêÁµÙqËúƳ߬Ó8x‰ñ‹,Â>7L•‹»²žE…² é< +’†I$²ŽUÀžQ£n]ÒJlæGyðÞ± ü®TT¡¯˜ç‘0Ã=nåAÁä£.Oî“_2¬4Ì"; *ÚfÉF³0Óàw¯ßýôã‡%«ÈÃt² +4<ŸÜŸå¬­+>1ÙìvJ!²™™Ò—tnÁòaº««‡0%¡RÙµšÏMוÛjÉÜMÚñ^›wK›ñBÓfo´¸ j bÑõ‘Ý› ÆuR£Åc?zrÜù aÆK? Û£ça¯ø{ +Nòu‚û$4¡ç{ÆY'öúš:ó„"¦„¾t}I€¶vÅ۲Ɔ‘ló'™[`:ƒðEq/›f?i:•O¶ñæÝË·KÆÇaš‚¤ Ë‚ ïäœ sº¾ieÏ£._8²y«›?ŠåºŸk%R,ßh/¯˜?“/õ’î€?ê¸[™rvû]÷Í&:Ø]Z5mÈ~HÞ=;æ¨csÌZ2OÜÓÁ€¹+÷ˆ $/Q$!ì“ó5í ®•¹b +:!ÐwÉäpp=L—qsa=[:æÄ‚4“üPR OÞKÃ^—^8Òòê@PöD‚y!£±ÚãÕ"«E3`À–M€&HÏ &0ãP5[´\Úàñ´mªîêÉÏ)#Ìj%Jw=ƒ ¿8®Ÿ"3S禬ûë óêξ(щ +ÄÉ .±è_Æ:î,\Íâd4$ xãÄ\9 áè™á\äʾ‘3@šÌ>ôMd!î¸ùm)€n†Q·Þ${k Îdl"@?ÿ›D‰£Ý¶A±ŠÎ®Ó!FÀ8`í(ãim¤ã E¸øùR¶¾c+QsZC5"¹•¶nxPwv…—ÕÊzÎÄeŸðÅ G³kX@~ל„‚,ÅÈf@SËKþ™2TUò”¥ +ˆ<Ï'½wç¥4„q4¦Å¦]Ê÷õ”Ìv~®²ˆu˜Åæ:£á9 ËRHiB•Þ䘖Už˜‚Gc“².0¢$Á,‚] ,'Ø]öGB,£Ay<¹ ò¶Âhý×û(;Ê(8…ƒãÍA˜n1&<øªBX¨"@l *F¢Xð™TîQûf@v†¡’k0?°³Eñ­'B;8[aH&ƒÁ”ɢљáTLp]t°ošp ôÀQ:¦ÌzX¶|I’kñÅÈ‹Kï¶t?,a8†Q1U'ç¶Ù] +/l)^м‰:%RÄUª›êmw5€A×mÆJŽûªr(9O5˜ Ä.ˆåÆWQ,p†çWñdhi*€ÿTi™ +1Må¢õ9Bmî¾´›CQðÇæÒ6Üâò &4bþV=C×{!›Î¸›®6MYR6Ky÷—UïÛŒžŠ}Rňæ#(÷7dTHÆ-¨å†lÿØT;Š1ÀÒ;sÎä ø…2ηƒgQß3žÂe!±IÇñ7`%™—–¼ Ù[nY^Ä$Ø}:üb¶jÄÂýl¨'£ãºÂXyƒ’úèê?ÀY~#1vØýº¤ÇŽ9Þ笼ì¦9l+QNÿ =]fÂÂdxÏÇsYÐÛ.}"Iæ ´< +  îé5€пT®dƒÁ™á­ÁÈ[´®8–³x" o8`\³†MÑ8HÐi*bÿ!ˆa Í%é QÞ Jîf¿ÿ> á‡2¬a®Þ€•H|ÀΓ<’ÿØðÌXÌâse'—HÆ"TÙÑ;$³`ï﫾~¦ãσÓZâúnö´?“%Ý@î95—ºgšÍÞŒç@RÎ#15°£”,f÷ô¾‹ÔÎãG'kÕc7Û¦ïé"¸ÔxþÙ®cëqñ¯ÇÿUû'<Ÿ&`&›ÿá˜å¡ID&o}í[×pƒ}Ý/L¼ö17Z=Ìsñ`X¡HÍÒ?«åVVØÊß7¯›¯_ß^ù/8©Ï¸ +endstream +endobj +3475 0 obj << +/Type /Page +/Contents 3476 0 R +/Resources 3474 0 R +/MediaBox [0 0 612 792] +/Parent 3463 0 R +/Annots [ 3465 0 R 3471 0 R 3472 0 R 3473 0 R ] +>> endobj +3465 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.437 618.217 215.94 629.121] +/A << /S /GoTo /D (FAQ_faq_libm) >> +>> endobj +3471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.754 499.282 240.238 510.186] +/A << /S /GoTo /D (using_tools_gcc_minusW) >> +>> endobj +3472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [243.938 310.229 294.312 321.133] +/A << /S /GoTo /D (mem_sections_sec_dot_data) >> +>> endobj +3473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.056 250.453 269.869 261.357] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +3477 0 obj << +/D [3475 0 R /XYZ 132.768 705.06 null] +>> endobj +3474 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3481 0 obj << +/Length 1958 +/Filter /FlateDecode +>> +stream +xÚXY“Û8~ï_ášy¹*V“ÔÝUSµÉ&smͱIϼdò Kt›^éöþúP–ítvº ‚ ‰ã@Kl6bóýÍ«û›ÛïT¼Éü,†áþ°‘Aà'qº‰³È3¹¹/7ï=nw*Þï½iˆŽšˆ|«"ïSWŽ%3NÝV¦^ûÐåõv'³,Pž„>Üÿtóæþæ_7n9»Iú™ˆ6E}óþƒØ”°øÓFøA–n­h½ B•¸±Ú¼»ùçX¨/ÖÔ_©ÿöåÏÛ]Þ¡íˆÈq½SÞ ¦«œÙ`c +íowQ”y?$hz°V#ÑéþÔ6½Ù›Ê gⵇ…Pèå§SeŠ|0mÃ+-ºéÇN_¤Á7`ÏN‚#"Ö¹òâ#J(¯l5_ß´±º5}¤Y;2Ûi°oǦì_À$[{Z|ÔUE”ã8uò®Ë›MLö‘rf¨‹*ÎuQ¤h«Ê”«<šáHˆø„ºæÉ÷•MUµä˜žuîà³?_¬hë“©tG³?E$z]̶úe>ä|lS2oß÷ )}TÌ"\†~Æ +1z™¯²àn)Äÿn„´ƒâUí„Ÿeñf§b?‰ø¢_ÚAß]oZ€7”ƒS_DŠöÜ ›ÉFÓäq+… #9¨:³ß*áƒ.—n|nçM¯µ£Þ³”Š7Žúh ”Ÿ& +–¬6û¾üüÛZû–¿²%S¾$ðÆ6àŽ$ò…J(±³¦$:[LÎFÆ©ã2‚“ÉfZáTmǾ:¯T¡ù³£ðLe¥.·4y­WN,Ž˜¼p¾‚h:ÿµ¦œ|ûK\&ÌÏä4qb£H,ˆz9ÔºâPÍ©¿>ðå6 áœwÃXš–q½ˆÕN&ŸìGiÂ*³;) æ +C E™Ì°0âpÑQM:ÛI½…PXPf F©u$2IG<©ê[:k¯‰ÃÊ4ËÛ ÜÖåPí¶*†t“¡Ç[ê¶dÊÂÎn- ÕroÆpyqÐ  nÏ‘†óz¢í“Èc+•“ÇoßÚ†Âв>…Da;2¢Áó¦£ò¢Ð=‹T¶Äàçi×Z\9È k*‹\b2¬`ÑÁÊÇvÎCªt¸VçäÚh–wÀ6M?t£ë&°jóíL‹˜YÈÜ!S^­(ÉáM8¼*K9¼É¤(9á §óàFÜÈã \tºÈ¼#=nôE¤£ÍuC<ŽGûÁ%–;By+¢÷ºÈ1´k8o0âã4à¶í&ÀÆ®!Š£«Té ƒ˜; +\6QG9“´},-NšÂ€ËîØŒÊRDåu¾ÕóTƒ`M7ƒéV™¢È¯$*1Ÿ÷‰8ð¼}ij Búi8Éqiúü¸Ì—Aì¤vkÁÓ+ '‘ö„À›=ήš˜JýH¦¶›Å*ú‚./íEÛwÜU-œçíx*ýVŽŠ¼í¹ç~е9)¼ûm +[i³%¯¸3›á‹›úT±³ËöêŽô‚0D`ù⻼–ÀìÄÏ!­Ùll‡àpáú`å°(i¼ûîÖj|[êOººy±ùa.vÖùGM”3âsŠå{áצ°E0q[tùbCI”|†À!e™Lfï:š`±lm“–‰kHêÀNÈg ÛýçËþÑu%œÍú<ìáM¥ËŽÐŸtaPŠË¡GÏ·ÐE0Äß57ÚЫLƒ}-P4B'HPÃÖ„ç€ýbÑÏÙWÞS*€È§Î-X¦Á‚§ÿEð;8RKx‡=õ»Æ©5µ½ÀmÔ²@\šþà²Õâ‹À)Vaé‚n'»*sÜJM㡲W[–qð¼Øm‹Yêg*[@êŽ$_â³ ¾)&L›ú¢ù·æ±Cžg"Ñ1v òi¸$÷¿þù»_Ï®ìÍC“ö§;N¿¥A> endobj +3478 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [333.358 546.073 425.014 575.139] +/Subtype/Link/A<> +>> endobj +3482 0 obj << +/D [3480 0 R /XYZ 132.768 705.06 null] +>> endobj +521 0 obj << +/D [3480 0 R /XYZ 133.768 615.477 null] +>> endobj +3314 0 obj << +/D [3480 0 R /XYZ 133.768 580.808 null] +>> endobj +3479 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3485 0 obj << +/Length 1579 +/Filter /FlateDecode +>> +stream +xÚ•ËŽÛ6ðî¯ÐÃJ@Ì%Q·é ’´Mœ\Ò´½&¢‡£Ç:î×wÈ!½²$§éÅ ‡ó~Y¾sïøÎëÕ‹Íêú÷ v8á1<6[‡†!IâÔ‰9#1§Î¦p>»4òÖóݬïìwÌ ˜ûÐCaûÖ£©ÛÜ·Yå­)çaàRʼ/›7«W›Õ·ɾCG’(á>sòjõù‹ïpøÆñIÈSç I+'Œ€”ª‹¥óaõ×Ê«†NBxâÓ3õYB‚¡úªwã­cßwD+·Gmˆz%„(݀ߚ“(Ž–®Ð„ùÝ{Ñ!Ølñ¹-³n7b-EaÒ”ð€ŸqD¢©ïovYýÑÇfÐÊ@LüQL€S–&Èi®×D`ù(p)Iƒh5Ízƒ† #FhÂ-q³ïeS{ë0dn)ún;\àI`/X[.0N-Ý׺QÙq@Öý.ë:õŒÜ¬ˆhö¢Ízýj”Éj¤{îQJÝ ÷?X{À· D±Hf"ïäüú)xIB ‚(:™DÌí<êîE.ÿöý@tˆÃTB°Hå²ÌÍ»,ð™ÕRZŽUÖç;aN‡=>²ß!d²C•2#‚Èí²Jœ’EÙ£JrH¹+ë…X”¤,ý‰X]Zº+)ó5Û¼©•îåtíl@*L), ?—œ¦„…'É×C×^—Mž•×¢Ï¯/+BCJ˜ÊMâ·'9âÅhân¼j +Ñ¥ìzŒrB=G“(?(¯f¥v Ü}ÖöÝ€“ÔíTp·Guj7Ïà1yÌÐõÃ’¾ Ar^ e¬´\dÉBBýGžâÏxVq ¾¬»¾òŲ‹c°ŸªºE–®oŒ_D»mÚ +}‘ò€DÀrV5k(ÀNe%OÜ;÷ ¼ou'¯ 6Nêüº xŒå4YY50{Ô‡Š‡ŸìhÎk‘‹®ËÚ#^»Àþ¬ŒfX(³Ìì¹±%°¶˜6æs’r~nv%ª¼3÷ ÎÔÃN–K&ǘüØô%š\e²&;ñ}Áê8%Ðwì…§z­“†tÏÉz?ôbË Æ’Ð' é5MH°ÇYÃ+u_½úó½ùîoÕ;ÇÜtK>ž¤¤Í+! w«¥Ä‚šMO³UU·Ði¾\­ª9þtÚF Œyzj¥ÆõÐb×›Æ6T%xèNÁë¡Ðó^êÁäQ暃ª)Ä“ ñrÿTq†1|R¸_êv‰¢I·»Ñ+ ]Ýìs²¿)‰“:#>7ãðôÉÙ +u¶á ¦/r‹»ßóOïÍ&p*+XÖ²—0NþQY¨åÔh!rGUë³<ûÞ^ÄÎ Æuÿ¹C¾Iìä}õCk^Çÿ +N}zÙŠÛ¥ÅR—˜ºõì +¼©ª“ …ìö¥nÅZ}|è{¶Å>èy:—lxu7?Øio‘ųÜÞ.ÞŸp†T6b8aqt.ª*8MÖ81ºßa»ÄuzvúŽûãÞjù4+ŠÖÂïÖ/ÔB» y««v,´ÍŒa€ÄÌ-;´²ç +ÔXßxñôGúÞÑÜ>þ1¨wKv˜¹>Vå´Œ2Bí¦±é s› iÕÒ:r1fÖ¼ &éÿ™æš©½mÒ1ÇÞæu>´ÐÎM¾â%¬>e.° ÚŠz>ÄŒLn³ÃB½Ì¨—œþô.> endobj +3486 0 obj << +/D [3484 0 R /XYZ 132.768 705.06 null] +>> endobj +3483 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3489 0 obj << +/Length 1543 +/Filter /FlateDecode +>> +stream +xÚµ]Û6ì=¿ÂÐse+²ã¾ÝvmÑb7l½ ÃÐöA±u±WÛÊüÑ4ÿ~”H9ŽÏlv'Š¢(~“óóÞ®~Ú­^¾‰b/ Ò–Ý£r$ñÖ‹SÄièírï“ŠõM$˜ÿAUJv +7¿õ^µesÀ­lrîU_è\Wúp^ß„"Ž? ãõ—ÝûÕëÝêïU/3/œ¼)^V¯>}a^‡ï=ðtë,iíñ †æbå=¬~_±™øá&à›8º’_$AÄÅEþ±P¤Æ@F!ì Ì»‰À^ÑÖñÂ%î×€óUÛ•ºY|ï!+T­Æ..0…ÒËã½ÜW /tć=ÏçnmB¿snGas*«Ê@‘/+àìŸÌ?yîð´ëˆùßÖ¡ð‰^âR—nl¬‚÷…ì‘[Idƒ«ZG‚5W÷„ðƒõ g‰¿+Ü¥²>V¥²Ú}Ð ¨½ 6þY~Wè¡Ê¹W¸:{ ¿×ˆŽ‡Vætìi+Ý q(äèÁ¯‰SA·«rßÊöŒ›SÙ³óNÖÕò/0Ó‚vb4¤‘¤Ãa«‡7J¶î I80,ÈyÆÍLDáßþöŽÍ\˜¬ÍAåÆê õÎ]ÑMuž\›?žšŸs6ZóÐZÝàjk`ƒéס¯”DOhé[ÙdâeK—÷FÎဟ‹¾[™;"kr˜x‚@FÚN×Ä"+Ûl¨á¥&SÝ‹E»çyÙƒge…Ùô84îËþŒ¨ÏL0ŒyL*À—»Ýp<궧›è6†1Ħ1ÄüýÌp ƒQ’$ˆ£ Jòθ,Jü±Qbw×ÁÅ—ì‚ÃBvˆ$¾€À'%á]ÞØ … +ÜèT«þÊVåOÞ¢+šd:d"ŒÕ¬¸/›¡/+añ“K®",õþCÕãEhìx}{wÿ‘ÆÛáËfFØëc5©ç GÖkÌB’|zëvráü°$þ/å>#ê¡ÍÔÌ¡§¢Ì +g&®p¶ –k9‚0“ZQ-¿S†ç7SfU¥µjú*옷þ5EDÂuôðImØšˆ$nó©MG9L:A·²1Ä©Š›ž÷“â(@äÊ!ë\D¢’ãŠé¿à jG×I"¦J¦—~“²™’éDI8´J¦Ø¦RöŒ’éDI ²J¦ J¦ Ûœé<úq@–D.éWk2‘ƒE—úˆ±µ`’ÍÔ$VGÙÛ0pV5ÒIÕH)©·Ö$°]6 Œ&¸¤õ‰IÇp¨DEŽ^s%~Ê-ƒ~¶ÐSl™JÂ1ï<êÒŠ•8Sé›Lœ÷G57¶¿Ãš2bBû\5º'~#ãQÔ 7y<¶Zf…©ýKmäÊO³Irtn.{wv<ª&WŽ@Ïg#Ç…b”£‡B¥tkçB‡8ƒj®ÐÔË‹Ñt‹ÓŸ˜W:ÀXV›Í33À¸ð­CJ7KÂpRuÚAó©òÉH7ÑpD&3/&3;zBâöê6Œ] žybÊë1ÄØ—‚_;“bÿXôÝi4îž0ÂßýýÝÝbÉzÐ/æ¬ ¸äö1®¯ž­´þJPùÕö ÷@Ù½²_XîËÈ­/ßpî%Aš°Ðu°”ò ¾+DŒq¶Ä3& Ä6Aú?ŠÒ5gš—­º™Ä~<×d2¶˜ÞÜÐÄŠÛ1Ý6³V® ~̘"_€­3]w³°cf©W ÌÌXK±ð?˜0¹˜0m¸}惑o‚Ðf€èêƒqœ*aRÙØIÅîìlòïš?·ùŽQl Ç6)9i†P§2:¦’aÈpØçTÃ0>#óQÑÓuë8FÙ[88ñ§1m?[¸+‚†4“ôâ~±é—èç®îiòV®‚ЋºàÊ/‹?"¤Û áÿå'÷ÓA ŽåÛé/Û4à1 ÷V5ª…ü'i\vîŠ;Eãã—½Šø«p‹; +‚.Ÿ Æ`íš'þM5 Nõ;ýý|€/ã™Êÿ5Àšø +endstream +endobj +3488 0 obj << +/Type /Page +/Contents 3489 0 R +/Resources 3487 0 R +/MediaBox [0 0 612 792] +/Parent 3463 0 R +>> endobj +3490 0 obj << +/D [3488 0 R /XYZ 132.768 705.06 null] +>> endobj +525 0 obj << +/D [3488 0 R /XYZ 133.768 667.198 null] +>> endobj +3491 0 obj << +/D [3488 0 R /XYZ 133.768 644.012 null] +>> endobj +3492 0 obj << +/D [3488 0 R /XYZ 133.768 644.012 null] +>> endobj +529 0 obj << +/D [3488 0 R /XYZ 133.768 644.012 null] +>> endobj +3493 0 obj << +/D [3488 0 R /XYZ 133.768 618.156 null] +>> endobj +533 0 obj << +/D [3488 0 R /XYZ 133.768 618.156 null] +>> endobj +3494 0 obj << +/D [3488 0 R /XYZ 309.847 489.254 null] +>> endobj +537 0 obj << +/D [3488 0 R /XYZ 133.768 472.526 null] +>> endobj +3495 0 obj << +/D [3488 0 R /XYZ 133.768 202.615 null] +>> endobj +541 0 obj << +/D [3488 0 R /XYZ 133.768 198.008 null] +>> endobj +3487 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3498 0 obj << +/Length 1659 +/Filter /FlateDecode +>> +stream +xÚÝXYoÜ6~÷¯òb-P±¤¨Ó( +8GÓEÐ&Ûö! ®D{ÕhÅ­¤µãß!‡ÒJZ­½î }¯ÑpŽofHRçÚ¡Î˳§Ë³¯¿ó#'%iÍòÊaœ“8Jœ( I”2g™;ï]á1J©ûV–R4Eu½ðüº— „î/oqôC±Ê Ç¢˜»ŒÅ‹Ë×g/–gœ1Ø:lÀ‘”†N¶9{ÿ:9,¾v(áiâÜÒà eúÇÒywöÓµ"Ó{D÷IûN' èoT+/Œ Ýðþ•À6Ž }üçU…êÜ®E‹½+U–já‡îmóÎ¼Ò sEÓì6§îÔ;Ÿ*¤ÅÑz8h¶»Æþ”Ý4–S•ßCŸ­eöiÁ¨«vV¤Í®l‹m)µn —ÇÀ¢a„ +4jWgzƒ4rÛZÊ»E…­ÐMèj/––*/j™µª¾ÃámÑ®q'¬Å§î ú\s\Ë ö²R­V²ÆÙ{ +(êEºdáA쾺Âym ¡´!J›«ê|ÁWo—DCëÁh=k@›Û¶]Æ  涵Z‰Uy‡£Ô(óÿ•Äv#>¡JЯ ª`¤jl³]Ûj’™Wµ¨À' Ñ‹z,HŽxd!߇a6ˆžÕZ)Ú>ŽÄ Ôò·Ì‡p9ü€ð E¶Ëµœ"´çÙ´rkÙ¡,kûG+  d5AZ01’Äô‹ªsSóI‚Ê~Lx‡BFÆ4ï½PënlبÉVWµlìN=‚µd€àŽ@m&†úþÅåóÉ>ÚU)I¸fVŒŸ·¹h» :#¾yñë;ìýF©_ÚY ØÛÊ*ïÍk1ƒƒj·Á@ÐÚt‘œ©Í¦h'æ +nŒˆ¶ã tH’Ô¦­gkQ]ï0¢îÀa˜ê¨ÍìÆe­¿^ ©×C¼@Ò&Eè)òýfR€V€“%(EÓ~ìT;dD$ˆÃŽøÛ‡¸]ê?BŸ ˜¼Öóˆã³ˆ{'Û Ü0´¼­*ªnI\wø i#ûô3uj•.á';u#~‡œvÈÇçÄîÕžQâóžFöŒ4IâøtaŠê˜0ÉC¢ô8Y¦j‹å˜Ša y> …Òyr½uO\“`ö€VÉI&æ'ìãFIš°ݼ#&BÓ ó|‚xqÂüÄBÞ–·`>××ò0É"ëã©oÆ_Þêt¿Å ‚ð „Æôe ’Lʬs¼úé( ”ùÿ¯tôØ2rXAR$Á8ž’ÿb2bçX:ŠR‹5èlEkîRñ /éu…mJÇã\VÊd“XãÕ¿` Ž|JmïJGíÏ¡¶2ÑÊãLñ\}¾»–ÕTå?%ˆê +endstream +endobj +3497 0 obj << +/Type /Page +/Contents 3498 0 R +/Resources 3496 0 R +/MediaBox [0 0 612 792] +/Parent 3513 0 R +>> endobj +3499 0 obj << +/D [3497 0 R /XYZ 132.768 705.06 null] +>> endobj +3500 0 obj << +/D [3497 0 R /XYZ 133.768 596.585 null] +>> endobj +545 0 obj << +/D [3497 0 R /XYZ 133.768 591.788 null] +>> endobj +3501 0 obj << +/D [3497 0 R /XYZ 133.768 536.295 null] +>> endobj +3502 0 obj << +/D [3497 0 R /XYZ 133.768 518.52 null] +>> endobj +3503 0 obj << +/D [3497 0 R /XYZ 133.768 469.757 null] +>> endobj +3504 0 obj << +/D [3497 0 R /XYZ 133.768 433.054 null] +>> endobj +3505 0 obj << +/D [3497 0 R /XYZ 133.768 397.327 null] +>> endobj +3506 0 obj << +/D [3497 0 R /XYZ 133.768 349.646 null] +>> endobj +3507 0 obj << +/D [3497 0 R /XYZ 133.768 313.919 null] +>> endobj +3508 0 obj << +/D [3497 0 R /XYZ 133.768 278.192 null] +>> endobj +3509 0 obj << +/D [3497 0 R /XYZ 133.768 218.555 null] +>> endobj +3510 0 obj << +/D [3497 0 R /XYZ 133.768 198.723 null] +>> endobj +3511 0 obj << +/D [3497 0 R /XYZ 133.768 166.935 null] +>> endobj +3512 0 obj << +/D [3497 0 R /XYZ 133.768 147.102 null] +>> endobj +3496 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3517 0 obj << +/Length 1414 +/Filter /FlateDecode +>> +stream +xÚÝX[œ6~Ÿ_ò²Œ\ÛŒ¹¬ªJ›d›*J¢6™¦IyÀ3Ð<1íþû°a€ewÙ6êC_ƒí3ß9ç;[ [/W϶«~¦ž¢ÐƒÇvo×E¾X^Èk[mÂ];cl¿™àeZÖeؾX“ ³?¼Óo¯Ó]#âù®MH°þ¼}µºÜ®¾®ü¶È@:A!fV”¯>~ÆV “¯,ŒÜ0°®Û¥¹ån`)i6fÖûÕo+l ã{ SäûÔò<än4ô·²ç-n#ìÂÃ]üåÀ3ª÷<ÿð^ëSñC©G±ÔÏBVzÀ³L®)³¯ÍÊDèA]šÜëçQ¨TÆFÌ'ÌðZûØ>ƒ!A °‰ñÐÆr@²“z¼áW½ý¹~¨5 ìÖ3ˆªˆ-‡n» µ° ½§¬ø.3`•ÙÛ¾\§Yft(²=Ú‰ÎE§_1B°S¼ˆ’§+í•Ì'Š¾[üryñ¢5@ƒ”ö¨QvÛ-ÝËÎȽ¾e%Žf™È:‹Çð*~µ&ØÛuÒò›iÇä°EÖ§>bo¬Æk>:L»¡ý/ƒ¦Vb¢i)ku•0£Y݆ëFŒT'€'«¥åØØ'+J¥DT mß*¢ñ»`P†Bg½ÉëcÌ+#ÁQ5(¶¿©æ×É ~M ˆ¼ Z!¦AùVÞ3ν̂œÿ)ÕŒê"ºq»U?Ý!&è|™±Aa@ÒKÈÓâ. &éõq´ÏÆ,€”á!¨B`[Ç]:K•ßvï]xäÑ?˜—okÂl¡Ê´ótZtŽ.>aL@/Ä#ã²"î&ó<5$èž•ìãl‚¡º@%TjŠZ*)3=%\C¤Sì"ëk*‘‹¢*õ’´˜H|ÁÿæR4êÐ:¤QcDg¨ÌÓÀokæôËúm–»ây‹ƒx-]–Æ´ËŒÕ)ñOw’æ¬O¾¸#ŽÝ‹ØH}¢ë®ˆ´Â^¸8h«$-¿¨a ž°K‡ z2õOÚ;r[—¼¿íë´Jº2[Ä}y¦¨óP˼4ãÓiŠ¬æ3ô ø”±Ð†f(2KÜB\C}_ê—Œ—Õ}~ñÐÆg‹ýrþD#mtnÀTñtÒYª‡C1A”H›ì±4ËîÐ'„ÔL¡Ï4ø0?MÞ,Ïž©ž0§xlt®Ó®¯(o áÈ»â9¦Ë‰¤;Ó$©º(z‘;)«²Rüx‹y§„~o~ögAÿ*Ô^*€ä†^Óɸ¡oŸå}+Ò¼ÆÐ5@]éOí¿7ƒáJÏ4-Í÷&ô—("†ëøv›4H3¡›Âfi¤D«yóµ±Û­4mðÚ®vÐ1ß›¶MvfÕÞ®°áa>/è|*~Xž9=hF¡Ø,î2þU»>Ôîå}×=íÎãÈ{s0b~¸¼ë2Þ¶]3­×8XÂ;*I&y> endobj +3518 0 obj << +/D [3516 0 R /XYZ 132.768 705.06 null] +>> endobj +3519 0 obj << +/D [3516 0 R /XYZ 133.768 630.162 null] +>> endobj +549 0 obj << +/D [3516 0 R /XYZ 133.768 625.554 null] +>> endobj +3520 0 obj << +/D [3516 0 R /XYZ 133.768 554.31 null] +>> endobj +3521 0 obj << +/D [3516 0 R /XYZ 133.768 518.444 null] +>> endobj +3522 0 obj << +/D [3516 0 R /XYZ 133.768 498.519 null] +>> endobj +3523 0 obj << +/D [3516 0 R /XYZ 133.768 468.696 null] +>> endobj +3524 0 obj << +/D [3516 0 R /XYZ 133.768 431.749 null] +>> endobj +3525 0 obj << +/D [3516 0 R /XYZ 133.768 383.929 null] +>> endobj +3526 0 obj << +/D [3516 0 R /XYZ 133.768 363.027 null] +>> endobj +3527 0 obj << +/D [3516 0 R /XYZ 133.768 333.204 null] +>> endobj +3528 0 obj << +/D [3516 0 R /XYZ 133.768 295.281 null] +>> endobj +3529 0 obj << +/D [3516 0 R /XYZ 133.768 275.356 null] +>> endobj +3530 0 obj << +/D [3516 0 R /XYZ 133.768 239.49 null] +>> endobj +3531 0 obj << +/D [3516 0 R /XYZ 133.768 219.565 null] +>> endobj +3515 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3536 0 obj << +/Length 1016 +/Filter /FlateDecode +>> +stream +xÚ¥VKsÛ6¾ëWðp&Bðàô)©ÝxšN:“TmŽ Q¬HBI+ίïâAE’ÝL;=a±»ØÇ·@’¨ŽHt»øiµxõ–eQ‹ –Õ&¢œã<QV¤8+h´ª¢;D³xÉR‚Þ”»^Ç” C«ªºSý8€,G”ñýêÝâçÕâË‚BpÑ“`$ÊnqwO¢ +Œï"‚y!¢ƒsí"ž€+µÛè÷Ň þÓz™‚§ ÎSjS|Y,xθs9•q>¯~é’èFCÊO‚/çèË“ð3r‚Ë(Γ"âœA2î1{ÛÔ“Q·ä*^r€í£j•‚r4J9È.[s¡ æIÆlø%e9.”“\$ìûL(!ÏÂ^ÔH¢¥Â3zµm`t\ä¨ÒådÙ€¢ £k£‚M×jÜ*Ô[å…V®µ¼‹ÞxœM&¦Õ!@mô´÷–Ùq¯ô¾U8^挡OqBP3nõ4Úl͈“¦¾fÈè°Kjúª‰YŠšj’íðÂj ¤6V·Ñf^zÍ!ø,>zj«þ…-hôÖ­ŒA1MQð“Þ0*cšÏ„°òe€òôŠ0šb +"ñem\~– S…HfÇA>‹mޥѺ¼Ê‚mU•rm¹’Z½÷Æ71å)úó£î[‚ =‡foô_ªìyö)šÉ¶õ‚¶‘3ù¶²ß AÖWg<Œh†^@¦y ÌgÆÒs¯; #"ÙˆA·××^XÅ9$—AÆÐaÛ”[o*«©T•ßI¿ø^ͣߕr/×méÁë:ž¶Ö0# "Œ?Äï^'öŸ¢%;ù­ékß}?ukËiÑƯûVŽ§ ɾ +z£K5 @w|ŽÅ2dqˆ¥?FìFõöî¥i†®á6;GNÛÔƒUçè.óÏÐîøZý +O¥ Dm›µ‘þ)?#0x™Ñ¾ÁvSê*¹Ÿ¼sð "GzÁø7~{ÓŸ¾uIŠSQÌÎç}ö§ 8çÿå—`þYÉ€\œþ¬ˆó, u«zeä¨BǺ÷ëj;yáF•á£ìJ®¿¢Âï!ArßéÐ71ÏÑ° Ö!¤þúX«þ²å¿nËL +endstream +endobj +3535 0 obj << +/Type /Page +/Contents 3536 0 R +/Resources 3534 0 R +/MediaBox [0 0 612 792] +/Parent 3513 0 R +/Annots [ 3532 0 R 3533 0 R ] +>> endobj +3514 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (releases.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 3540 0 R +/BBox [0 0 430 372] +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState << +/R7 3541 0 R +>>/Font << /R9 3542 0 R/R8 3543 0 R>> +>> +/Length 1287 +/Filter /FlateDecode +>> +stream +xœ­XÛn7}߯à[Ó¢y¿E Ú‡¾ÄÇ@VÛ…d7¶áþ~Ïð²»\Q@”6 9Ú™3Ãá3«¯LpÉý•Ïía¸ºöìöyø:¦½ì0Ѓý`´˜ éÑ~¸‚÷\ÇÀ¤×š+hàœÆÓ(M¹K@OŠ¡÷Eˆê>‚f¿ä%Wß²‡ÁpËþK! výl B2µ‚›C%!‹¿‡P¼í„8wÔ Ã–/¬ì‡òåíQ—vq‡è¿u ” Š¦AöÄUH™Wø¢‹“~ ‘°17üãNH5jãi¹Õ¨¸(Ú'L[qæÒ͉0ŒtÝ0° —¦üŽ¬«h">RÖ%HT(›ß>ã&ëÐo²>Ã)6•*zŠ­ðY‡šdZ¨YÖUGYžÂZÒžp뺲|1Jʲ46¾IÞC–HŸÌPêH’ ÜÇ +”aÛ!ËN[²È2\Âl4·(ËÌKÒv à²Œx"âc‚ZÈɼðn‡,“¿}•s £9…˜yIÚž[=š)cóm‘‘:g3¶rÖ:FtíéXªmÆ×ÖJZåaTWSÌhÉ:ŽŒ—G¹:.@t~î¤o; áÆS—(k#ŠF„ñ´ééY“?$0u–bà›³6¤%ì8“Öuœ9üQ¢srH]Ú¢3ËKÏ6±¶ìIªKDÝÍŠXÑŒkÌ]j€ÚúÒ ­¨…·ðÜ0u¼àRíyAÒ.CtNÒÐ' ÿ5p6È +endstream +endobj +3540 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172325Z) +/ModDate (D:20081204172325Z) +/Title (releases.fig) +/Creator (c:\\Program Files\\GnuWin32\\bin\\fig2dev.exe Version 3.2 Patchlevel 5) +/Author (eweddington@CSOLT0054 \(CSOLT0054\)) +>> +endobj +3541 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +3542 0 obj +<< +/BaseFont /Times-Roman +/Type /Font +/Subtype /Type1 +>> +endobj +3543 0 obj +<< +/BaseFont /Courier +/Type /Font +/Encoding 3544 0 R +/Subtype /Type1 +>> +endobj +3544 0 obj +<< +/Type /Encoding +/Differences [ 45/minus] +>> +endobj +3532 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [242.685 164.986 340.319 175.89] +/Subtype/Link/A<> +>> endobj +3533 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [342.331 128.055 457.898 138.959] +/Subtype/Link/A<> +>> endobj +3537 0 obj << +/D [3535 0 R /XYZ 132.768 705.06 null] +>> endobj +3538 0 obj << +/D [3535 0 R /XYZ 301.091 344.789 null] +>> endobj +553 0 obj << +/D [3535 0 R /XYZ 133.768 305.493 null] +>> endobj +3539 0 obj << +/D [3535 0 R /XYZ 133.768 268.667 null] +>> endobj +3534 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/XObject << /Im4 3514 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3560 0 obj << +/Length 2105 +/Filter /FlateDecode +>> +stream +xÚX[w›F~÷¯àä ­Yî¤/qêØuêÖ­¬´IŽ‚µD¬ +(júë;³3`ݬ(}°5»ìe.ß|3àXs˱®ÏÞLÏίÜÐJDÂÏôÑ’ž'¢0¶Â$a"­in}°e4»cOG‰kë\Óè¶h;¢Èqmé:£OÓwgo§gŸI8Û±äÆYR$N`eÕÙ‡OŽ•ÃÃw–#¼$¶Öfiey>,•¸±´îÏ~?sXAgKQgSÑÀ®Ya × HÑ®=ú}Ö‡qà8öûF·¤ôoeÚ­¢Á£nHÈÕÈ ì/#تÔË¢žÓ|·à•#éö-=oÒªR¼½Óº|‰÷î8Óuc‘È41Ú­ŠvÉ«¶,‰Däzý"±­ÿØõCú.8ë¨ï4¨$cۨ؎@¹UÝf ûöÞCúlõÒÏà\ÏÛP)rEâG½JÁ©ó×WRoî/ÅÝäzëê]k_È`Øû‰4aOûvšçìÝÀNË’vs°åf7*•ª;¼ÙË0¡‚À +8ö ²ç!B}ŸÏ… Ö'{`'noɢ떯ÎÏ×ëµx„ãfm.t3?ê +Àâ›®€ë—ºéZÖΡɴÎI Gá²FÉZˆµˆ½hÛÚ/E¾ÒYÚY»ƒm|JJ¢¡Íœ“sb@Cà¯ô€ë¿TÖí k’±ð!« Ýãx|Ói g‡¡}©HŠN÷(t†ì‡¿†¿…®”ÈtuÌñ‰+¼§´ûD×’C@“ɾŸºa(¢h]jv4ù*WØ‹ >Ct§7:-;ÕÔÀ8O7’2€Ðý;Á£RxèÚÍHŸÄp©=7&$¡`ìE!Óu׳‘ \бµ‡Ñ€«s­0Ó@i]ïƬò‰Y«Ú NV- Í\ÓsWH¶(8D‘±+Oövl¾4#/²þžDøÛNy&®‡ »†Ãì´í±Ma/ôª-¿Ò\ ¤òZÅñh'úxÚÒЫžBT°øY—Vœ”4o›"—EðwìØÊ0fÁ0s'gØ Áj=œó:kµH»J•ßÊ#xB&þF"¡,ª´œµ!"œ`ªÙƒµçB‚Èíþ‰Ž,j¸oß¡¾+d<°L³Ïé±”D òP¶Xµ4U¥ŸI3ËëúE½R¼º¨€á0 )æ¼Û 5‰ú⥪ ¬Æ–ò­^5ÙÁÖ«P¶§Ð0Ŭû‚øI‹2•ª_E¿hÂp„TiÚÿO¶“—nìÙ¿ªÖ`_—9M÷ž½nŠŽêÌRÝA7ż¨Ó’F¤sƒÿÇ}Q…éžè d9f|ØŸmQƆÎcå7])G4a‚zäzø¡çC×®¸…éŸÆxE·(Z’z]˜ö`! kž öp£{¼2šk°2¢ζ ß_'¿Õ¸M +ú꽘„ö… ß‰îпIßÀÔ‚¢C1„ñL©š¤”V–ºž»¢â£úU¼_?öóò†Ù¾ƒ Šûnç +w Ï=(ºñ‘›¼ß³ìprÇîP¢_o·¡c" ôÜ¿7’Ðp¤}ùæPa"ˆ7®Û?ÅI,w´Ç×tróãÛC€C¤wò‰Çª¸ò)ßèC!£x³%Ø{™€—%)ýÓ0yaÚó8îy"¶—J/K–× MB¶jÈ-SSaØng«†™Øûœ)îñÜ·F0Ó®fUÑu*ï‡ó¹jÇÏÑ v)-Ãg™vÙBq½§Ž›bÓøp«Ü(Ó~C~yÀä{¥öÀo"ï§?ÝMîiâ£ã¸e®I•ÍåÄî ²ÞS h…¡¦ÿKåFy Ù2mѳa`RáHAéßm@0UƒÙbâSÓµµªÕõCë})í›GzTë™Î¿ó#;Y‰µz.TvV¦îå ªÞWÕº#a¦è—ÂÞ˜Ç@Iºï“Ñ¡€ âZùTË·gwšyšÄVsìyŽý3>TŠ§»…ny{ŠäÎáQW@µ —Æ}PMŽJ_x>F[HS^ÑHatþÉÔ²£1°+ÀÏx…{|`*ÇßRe¶ÍG€…Ð?—nŒÎI¤ððpÿÛ/“·×8tì¢åßš~»Ž}s~GB í£âÍij¶5cðŒìÜÚ×.¦dÂàEQ¿8bè#^èU÷ElVÚ®Ye†•èá˜~Ú¢6 #·f±‰•™*uš›ë@^¤¼3¥Uet¨òþ˜aÀÝ®È8áàùŒïHëCCKv¥u_M—Ð'ÿš7=q:¬c†õ¥¢·!•õÉúýà.ÊãȾ¿¹þ³õâö$\Ã{ûS3pÉ9ÇÌcZìnƒÞãâ!¼Oâ´ªoïkÅo¼Ä¹b¦xÿ­knî'ÇÏo;•æâ˜+Çl*Ôrÿt‡ÂÝ·7÷§ø3qà­vhœ®0%é;ŠÜ0>$ã_ß’«PÈ5&Øj!/T¹»âèîê}—;IJ DÌ\"ŽÝ]®¨sµã®ƒŸ¢“XDÞ÷|ˆî¿‡"‰¼xó yœ/äû¯4ØOY ÓÅŠ„K•‘àÓt^¹Þ+Ì$¹ŽÃÒ#z´ÿp×vÀO!%vÑÔÎðËâ¥þçë\Õ»&ÿ“×æ# +endstream +endobj +3559 0 obj << +/Type /Page +/Contents 3560 0 R +/Resources 3558 0 R +/MediaBox [0 0 612 792] +/Parent 3513 0 R +/Annots [ 3545 0 R 3546 0 R 3547 0 R 3548 0 R 3549 0 R 3550 0 R 3551 0 R 3562 0 R 3552 0 R 3553 0 R 3554 0 R 3555 0 R 3556 0 R ] +>> endobj +3545 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [222.158 628.463 325.769 639.367] +/Subtype/Link/A<> +>> endobj +3546 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [249.57 616.508 383.07 627.412] +/Subtype/Link/A<> +>> endobj +3547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.909 604.552 310.195 615.456] +/A << /S /GoTo /D (group__demo__project) >> +>> endobj +3548 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [212.12 578.933 303.776 589.947] +/Subtype/Link/A<> +>> endobj +3549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.301 566.978 327.511 577.991] +/A << /S /GoTo /D (using_avrprog) >> +>> endobj +3550 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [237.316 529.403 388.748 540.307] +/Subtype/Link/A<> +>> endobj +3551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [454.346 467.918 478.476 478.822] +/A << /S /GoTo /D (group__demo__project) >> +>> endobj +3562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 455.963 187.337 466.867] +/A << /S /GoTo /D (group__demo__project) >> +>> endobj +3552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.317 264.544 203.247 275.423] +/A << /S /GoTo /D (group__avr__boot) >> +>> endobj +3553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 163.707 204.044 172.683] +/A << /S /GoTo /D (group__avr__interrupts_g67cd0dea412157775c2f2a3ffe9fb8ff) >> +>> endobj +3554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.182 162.043 299.984 172.683] +/A << /S /GoTo /D (group__avr__interrupts_g67cd0dea412157775c2f2a3ffe9fb8ff) >> +>> endobj +3555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.933 162.043 396.063 172.683] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +3556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 128.932 218.081 139.068] +/A << /S /GoTo /D (group__avr__interrupts_gde46eb4e42cc9d56c19b1f91448f1b76) >> +>> endobj +3561 0 obj << +/D [3559 0 R /XYZ 132.768 705.06 null] +>> endobj +557 0 obj << +/D [3559 0 R /XYZ 133.768 316.943 null] +>> endobj +3563 0 obj << +/D [3559 0 R /XYZ 133.768 285.015 null] +>> endobj +3564 0 obj << +/D [3559 0 R /XYZ 133.768 285.015 null] +>> endobj +561 0 obj << +/D [3559 0 R /XYZ 133.768 214.203 null] +>> endobj +3565 0 obj << +/D [3559 0 R /XYZ 133.768 179.535 null] +>> endobj +3566 0 obj << +/D [3559 0 R /XYZ 133.768 179.535 null] +>> endobj +3567 0 obj << +/D [3559 0 R /XYZ 133.768 155.044 null] +>> endobj +3558 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3593 0 obj << +/Length 767 +/Filter /FlateDecode +>> +stream +xÚµVMOÜ0½çWä˜ÖõWüªJm¡¤ÒÒB(›5»i³É61þ}'k§@µ»` .±£Ì¼yÏ“Žç1Ž£yôæ±FZÀ’_Å„1$…Š…ÎÐ$ÎgñyBt:¡N¾´³ëÚ¸ýQ33·ÃVJ™JÒ‹ü8:È£ßh“PiœÅå2:¿Àñ >Ç1­â?kÓeÌ8˜’Á±ŽÏ¢ïöüðÓ<3‰(ËÏúõš‰£ÐÍ=—ÓÃ(>_ó¶ÕÒt—¦)¦µ¹¬ë­ÇWxL˜@„‰çðÐæÖš.%YÒõóãÈçÇ9:ÉNOS†“ßòWQ5«gÜ^ÛÕ+¾Ñé‹í§Õ‹-·`®‹…pĸ Cµ Ð!îë™`¼© Í9CÍfÙèL¡ð¨yäÞ{'ü <Ÿ!¼v>ŸMç£T½[ ·ÔUoÝ®½òêÚm–|o‹@èºGDrˆ ¬‰çùöŸ–{;‰$W°6€HmY …³{„Ç(Ò[oøn ’ öÒ #8y¿´^i¿*ÊQtãV»¿Ù¢üµ=µ„«ŒBS•;˜ÿ8O¸Bœ±ÐCè{ÓÙ­‡@ƒa¿*æMÛÛªìwü»„¨ ª`4T`iïVf³> wNªïã¢èŠrèíëL~]™®°UÛìPK„RÔê0µQB½ZùLµ¦swN»Y1AB’PÅgw½5K'÷`ÀWIÛíJ.Æ’ËH˜\ ýI&îÕ!½ýFµœ ©Y¨Ú£Æšù˜Ý<•<î­l›”ãä&3ÓõO$g ’ÎhÐ) ÓŒ<„eaÛ~p"dè|8˜» K cça9†™R„¶éÞØŸËÕf)LCž´ÍdhÔþž™·¶Ý‘FÍ5¤1Ûü3oœwµB’…L»ãt+–L=œn•FLŒÃ­i†Vcfþ¾ôwJ¾¸v›}Sº w Á{”íåÞ (ýî*…êl»ñ†—›.e2™ÔÕÔ#Lï> endobj +3557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 654.959 238.544 665.096] +/A << /S /GoTo /D (group__deprecated__items_g46f0b87ccc2ab63dea1ff28207270b82) >> +>> endobj +3572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 618.822 250.021 628.959] +/A << /S /GoTo /D (group__deprecated__items_g9a3fe82a7199e9e84f7be6a5f23127bc) >> +>> endobj +3573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 583.847 224.418 592.823] +/A << /S /GoTo /D (group__deprecated__items_ga0b2d3a87492967c01615f32f30d06d5) >> +>> endobj +3574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 545.807 179.895 556.686] +/A << /S /GoTo /D (group__deprecated__items_g5cfa4750a0633c34c7a361d8fd62c042) >> +>> endobj +3575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 509.671 185.424 520.55] +/A << /S /GoTo /D (group__deprecated__items_gab324bd721e821e275f00c3478e240c9) >> +>> endobj +3576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 475.437 179.895 484.413] +/A << /S /GoTo /D (group__deprecated__items_gd6488a48837d179b1833e2f48dac9665) >> +>> endobj +3577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 439.3 185.424 448.277] +/A << /S /GoTo /D (group__deprecated__items_g3a3b4c1ddf0c05701f933d70de330f08) >> +>> endobj +3578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 403.164 178.231 412.14] +/A << /S /GoTo /D (group__deprecated__items_g014ef751e83f97569c06f3cdd888f3f7) >> +>> endobj +3579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.054 367.027 178.779 376.004] +/A << /S /GoTo /D (group__deprecated__items_g08ee265dc07048dbb5a8b6c84551d520) >> +>> endobj +3580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 251.786 478.476 260.643] +/A << /S /GoTo /D (subsection.22.1) >> +>> endobj +3581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 229.748 478.476 238.725] +/A << /S /GoTo /D (subsection.22.2) >> +>> endobj +3582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 207.831 478.476 216.807] +/A << /S /GoTo /D (subsection.22.3) >> +>> endobj +3583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 185.913 478.476 194.889] +/A << /S /GoTo /D (subsection.22.4) >> +>> endobj +3584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 163.995 478.476 172.971] +/A << /S /GoTo /D (subsection.22.5) >> +>> endobj +3585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 142.197 478.476 151.053] +/A << /S /GoTo /D (subsection.22.6) >> +>> endobj +3586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 120.159 478.476 129.136] +/A << /S /GoTo /D (subsection.22.7) >> +>> endobj +3594 0 obj << +/D [3592 0 R /XYZ 132.768 705.06 null] +>> endobj +3595 0 obj << +/D [3592 0 R /XYZ 133.768 667.198 null] +>> endobj +3596 0 obj << +/D [3592 0 R /XYZ 133.768 646.699 null] +>> endobj +3597 0 obj << +/D [3592 0 R /XYZ 133.768 610.563 null] +>> endobj +3598 0 obj << +/D [3592 0 R /XYZ 133.768 575.587 null] +>> endobj +3599 0 obj << +/D [3592 0 R /XYZ 133.768 537.547 null] +>> endobj +3600 0 obj << +/D [3592 0 R /XYZ 133.768 501.411 null] +>> endobj +3601 0 obj << +/D [3592 0 R /XYZ 133.768 467.177 null] +>> endobj +3602 0 obj << +/D [3592 0 R /XYZ 133.768 431.041 null] +>> endobj +3603 0 obj << +/D [3592 0 R /XYZ 133.768 394.904 null] +>> endobj +565 0 obj << +/D [3592 0 R /XYZ 133.768 352.46 null] +>> endobj +569 0 obj << +/D [3592 0 R /XYZ 133.768 318.494 null] +>> endobj +3591 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3637 0 obj << +/Length 1420 +/Filter /FlateDecode +>> +stream +xÚ­YÛ’›F}×WðÏ—+U¾¬»²¶³«ÄŽË…`VKàõþ}z¸l$±â'@;ÛÌ9Ý}º{ÀÞÆÃޛŋÕâÉk*=´„ËêÆ#Œ¡P*Oj¤&Þ*ñ>ûD#, ÆØ¿,’&3U°¤R(æJƒ/«w‹‹Õâï›Ø#{6ÒXxñvñù öøã;#¦•w×.ÝzŒÃRbÿ1ó®¿/p¿±ãk»QX··Q"Í©'Eˆ(ÝFŸÙÍ! +QÈiTu’æ5ºíÖd1õ°ð—–ô°ài°dû×u”'Ñ.BößæµÙ˜]÷° +Bîß—@–e¨£f·é9ºz³ð>/‰ÄLøD°~É8ø£.¹RÂ[R —„È‹QàT!AØÿþ¡»ÞDqš¥u: :¤šûD +7ÐaÒcVçcÎÒuÀ±?îq‚8D#ð7&7»(ëð6õãp5“Ô'ÊÑÇi¦ñîÒ|៊ðP…F'R†ÔŽþTˆ*î0 +¨ð¿ïž¬‹b<‰­œé +ñ˜ËŠ(2÷º)ËbWwœábªñ)QÁf2`L¹ ˆò‹í(B"Åuµ:âáââãUÀ°ÿᲃ~ )žÙˆ:\€}J¸ò¤–ÏE~ÓTfÜ÷aíœÎ¯ÁÜ¡×'2™c`Ý"¡´£Z`¡X™Ý®)Ç£]rD©võòÛÁæTD+®”O)vó«F!3ýz¢:hIwÑz.ü?¯:Ï&Æjâ÷46˪4qúÆ4>,\‰±?æèE>Å ‘Dû”3W­#³µ.+âo§â] +Wb~kë´>7â&ñÜ-½Àñ™·Ül«2ŠÇS\BUÔÎ=ÚÇN)7»hÛã¶/pPwC Á-íE\ÏÍ…²`ßwP é/æ#Ž‰3Åþƒñ–+“4± ûîñ2Ê£Ùš|*,*A¥›:H8ožV7»¯‰¹©Æ¹P0«¸ÊàµU‚¡»iò=Úx1›´¡œ èd†éÆ€ch]ÊÝó$iµfØ@^ÔíTe÷Òö 0”©}úì1§ŸMž:doîÆDÈqö04Pé&ˆŒp$ôÜ Ê û—D·áOHŠ½,hŸ¡ê¥Ã¾»_S$S²¡B=¡tS #‰œ[)¾[±V㞆èqžózã ý% S}ÙÜ{U÷Ã6Š»°Ê¦ˆ¥D¹51:·šÜ%'挴rž>RøQß&Ŧƒ]§Û!dÎh–9³zºÉ&´ò\1GÙ´s铨.¶i< +ì±D!Q>,xÞZŠ²ìþ(Þùòø?LÜÔ¦_ñ²¤»{a;™©ðÀ°ˆ†Ü5:´p-³-;]¼ÆDŽŒ§Ü¹¦¼¼z9 Þ–M=ÖMJ,az +5f\.σ¬ '&‹îƒðDGÁCD4s† +ÀAÈS“ÕPR‡ªf3²èsem·©î—wÑЋv{ko³¢('XãD@OªˆiÔ¶s9ûºŽª™rPlçkî'PA0µŠ¢¨[k +÷BÍ!£Œvi}:‚ '3ZR[eZ»! ›ö ­íÊ&θ=yq<\ƒ1ã3;ÑC*S¯£&9ÕHqgô¿š¬*È^ IxmßFuŸb ºq“=¦23›/Žº +ÏŠ‘ú.äžÐy^]}z{Û¨úæ6³s)F•t+»@@È ˆAö£4£;œ31¸j> endobj +3587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 656.12 478.476 665.096] +/A << /S /GoTo /D (subsection.22.8) >> +>> endobj +3588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 634.202 478.476 643.178] +/A << /S /GoTo /D (subsection.22.9) >> +>> endobj +3589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 612.284 478.476 621.26] +/A << /S /GoTo /D (subsection.22.10) >> +>> endobj +3590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 590.366 478.476 599.342] +/A << /S /GoTo /D (subsection.22.11) >> +>> endobj +3613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 568.448 478.476 577.425] +/A << /S /GoTo /D (subsection.22.12) >> +>> endobj +3614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 546.65 478.476 555.507] +/A << /S /GoTo /D (subsection.22.13) >> +>> endobj +3615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 524.732 478.476 533.589] +/A << /S /GoTo /D (subsection.22.14) >> +>> endobj +3616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 502.695 478.476 511.671] +/A << /S /GoTo /D (subsection.22.15) >> +>> endobj +3617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 480.777 478.476 489.753] +/A << /S /GoTo /D (subsection.22.16) >> +>> endobj +3618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 458.979 478.476 467.836] +/A << /S /GoTo /D (subsection.22.17) >> +>> endobj +3619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 437.061 478.476 445.918] +/A << /S /GoTo /D (subsection.22.18) >> +>> endobj +3620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 415.024 478.476 424] +/A << /S /GoTo /D (subsection.22.19) >> +>> endobj +3621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 393.106 478.476 402.082] +/A << /S /GoTo /D (subsection.22.21) >> +>> endobj +3622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 371.188 478.476 380.164] +/A << /S /GoTo /D (subsection.22.20) >> +>> endobj +3623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 349.27 478.476 358.247] +/A << /S /GoTo /D (subsection.22.22) >> +>> endobj +3624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 327.352 478.476 336.329] +/A << /S /GoTo /D (subsection.22.23) >> +>> endobj +3625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 305.435 478.476 314.411] +/A << /S /GoTo /D (subsection.22.24) >> +>> endobj +3626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 283.636 478.476 292.493] +/A << /S /GoTo /D (subsection.22.25) >> +>> endobj +3627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 261.719 478.476 270.575] +/A << /S /GoTo /D (subsection.22.26) >> +>> endobj +3628 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 239.681 478.476 248.657] +/A << /S /GoTo /D (subsection.22.27) >> +>> endobj +3629 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 217.763 478.476 226.74] +/A << /S /GoTo /D (subsection.22.28) >> +>> endobj +3630 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 195.846 478.476 204.822] +/A << /S /GoTo /D (subsection.22.29) >> +>> endobj +3631 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 173.928 478.476 182.904] +/A << /S /GoTo /D (subsection.22.30) >> +>> endobj +3632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 152.01 478.476 160.986] +/A << /S /GoTo /D (subsection.22.31) >> +>> endobj +3633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 130.092 478.476 139.068] +/A << /S /GoTo /D (subsection.22.32) >> +>> endobj +3638 0 obj << +/D [3636 0 R /XYZ 132.768 705.06 null] +>> endobj +3635 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3667 0 obj << +/Length 846 +/Filter /FlateDecode +>> +stream +xÚ½VKoÛ0 ¾ûWèè¬éeK +†ÛúX‹ÃÚ =tÅà8j£ÁÌVÖößO¶ä4I“4é†D'?’I;€Àiða¼9! P&öÝL)䉉Œa"1MÀuHÐ "1 +R“:éÒÔóÌÌë¡r?•õ`E’Ä"Ä„nFçÁñ(ø`‹…^²¡D1ÈŠàú‰ýó H¥÷j(³ª¸½˜ƒËàk€¼Ãëg€Õ[ +€q(IÌ!¡± àmëÌZ¤r&¬‘N!«ŠYjÞè2•NöŠÙ$†±d½ú»-öd¯0D£ðcgVu®Í£KÓ½6SŸ°÷N8¾úà +º¬¹tÕw>o§¸ŽDÌXH$ó›ó"!²¼EÄæsçÍ‘**‡0ë«~ªÌ4Û¡HÌ} 3ˆ9õPÂAوǺÔåÃû莴œx¡iT1Î}.šÊUPæKè;B$W;Ôqn‹w;†V}zïÑt1ËÕ³<ìHÅXZ4ù´¢ZnŽ¦šMuct–59ÀÌ…!Ňü­Y`¦½Æ’Öüì‹;oÓ¬­M½3é‰ 8¤¾£÷õáø!}J÷|ƒCæ~`;¤Šîõr¢tiTm½ZTDŒFWgöÀ;Ä$‘!¥hÅÁ®=m‰R–¶?#"¬ÌAD%$’>M6ŒÐ^£­oyl£ŒãÎf³DôÖ Þm¯ñVÐÒàh´nJg䓪=lÚ ‹œMVoÕZ\+ãZ«[¯®š¬Ö3£«²nao=ŸëïAÛãl•Ú‰n™ûýì™ÜÔBvÛ¹Fw×kÕ”„‰±˜Éîrè#[)‡ž¾Ê=†Ï/¶=ãÚ³éIÎÛëTyFÓ<÷ÔVÙ¼Påbšô£ó¿C;ÑkãÞÌx„?çåðZHM¥áå^u´µÇ_‹ÇxùÁ{Š¯ÐÙ^µ¯ýˆãªÚ“A!È?ÀËÜ«“ý@YÌCÊØß‚šÇ™ÚP²­€7Z) ]„ØgûÅ;’S±¼x iâ×ÖSUªúic¨JwŽ¦s¿«Ì Ì bá¾B^º8´ûˆŸ-öãw= <Œr=öÆ~%;ªïT¹º ù#×ÆP +endstream +endobj +3666 0 obj << +/Type /Page +/Contents 3667 0 R +/Resources 3665 0 R +/MediaBox [0 0 612 792] +/Parent 3669 0 R +/Annots [ 3634 0 R 3639 0 R 3640 0 R 3641 0 R 3642 0 R 3643 0 R 3644 0 R 3645 0 R 3646 0 R 3647 0 R 3648 0 R 3649 0 R 3650 0 R 3651 0 R 3652 0 R 3653 0 R 3654 0 R 3655 0 R 3656 0 R 3657 0 R 3658 0 R 3659 0 R 3660 0 R 3661 0 R 3662 0 R ] +>> endobj +3634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 656.12 478.476 665.096] +/A << /S /GoTo /D (subsection.22.33) >> +>> endobj +3639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 634.202 478.476 643.178] +/A << /S /GoTo /D (subsection.22.34) >> +>> endobj +3640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 612.284 478.476 621.26] +/A << /S /GoTo /D (subsection.22.35) >> +>> endobj +3641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 590.366 478.476 599.342] +/A << /S /GoTo /D (subsection.22.36) >> +>> endobj +3642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 568.448 478.476 577.425] +/A << /S /GoTo /D (subsection.22.37) >> +>> endobj +3643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 546.531 478.476 555.507] +/A << /S /GoTo /D (subsection.22.38) >> +>> endobj +3644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 524.613 478.476 533.589] +/A << /S /GoTo /D (subsection.22.39) >> +>> endobj +3645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 407.964 170.427 418.101] +/A << /S /GoTo /D (structdiv__t) >> +>> endobj +3646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 409.125 478.476 418.101] +/A << /S /GoTo /D (subsection.23.1) >> +>> endobj +3647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 386.046 173.197 396.183] +/A << /S /GoTo /D (structldiv__t) >> +>> endobj +3648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 387.207 478.476 396.183] +/A << /S /GoTo /D (subsection.23.2) >> +>> endobj +3649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 271.719 181.864 280.695] +/A << /S /GoTo /D (assert_8h) >> +>> endobj +3650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 271.719 478.476 280.695] +/A << /S /GoTo /D (subsection.24.1) >> +>> endobj +3651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 249.801 173.017 258.777] +/A << /S /GoTo /D (atoi_8S) >> +>> endobj +3652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 249.801 478.476 258.777] +/A << /S /GoTo /D (subsection.24.2) >> +>> endobj +3653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 227.883 173.017 236.859] +/A << /S /GoTo /D (atol_8S) >> +>> endobj +3654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 227.883 478.476 236.859] +/A << /S /GoTo /D (subsection.24.3) >> +>> endobj +3655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 205.965 185.74 214.941] +/A << /S /GoTo /D (atomic_8h) >> +>> endobj +3656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 205.965 478.476 214.941] +/A << /S /GoTo /D (subsection.24.4) >> +>> endobj +3657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 184.047 175.787 193.024] +/A << /S /GoTo /D (boot_8h) >> +>> endobj +3658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 184.047 478.476 193.024] +/A << /S /GoTo /D (subsection.24.5) >> +>> endobj +3659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 162.13 180.021 171.106] +/A << /S /GoTo /D (crc16_8h) >> +>> endobj +3660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 162.13 478.476 171.106] +/A << /S /GoTo /D (subsection.24.6) >> +>> endobj +3661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 138.309 179.652 149.188] +/A << /S /GoTo /D (ctype_8h) >> +>> endobj +3662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 140.212 478.476 149.188] +/A << /S /GoTo /D (subsection.24.7) >> +>> endobj +3668 0 obj << +/D [3666 0 R /XYZ 132.768 705.06 null] +>> endobj +573 0 obj << +/D [3666 0 R /XYZ 133.768 508.015 null] +>> endobj +577 0 obj << +/D [3666 0 R /XYZ 133.768 475.952 null] +>> endobj +581 0 obj << +/D [3666 0 R /XYZ 133.768 371.351 null] +>> endobj +585 0 obj << +/D [3666 0 R /XYZ 133.768 338.546 null] +>> endobj +3665 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3731 0 obj << +/Length 568 +/Filter /FlateDecode +>> +stream +xÚ­—ËnÛ0E÷ú +.©…Yß̲h è¢m´3‚À–骇+Éiý÷¥,pÚ¥ †„é9¼æåhDÑQt—|Ì’·L!K¬ò!Û"àœhe²’( (Û %f@ ]¥ß +—.˜¤øË¡íüHiÆ00‘>f÷Éç,ù™€OM\¥b©Dy™,)Úø/ï%Üôë²´D\ø¥Ðÿ°@É·„Žûû7ö‰›ÝHøþ¦¡‰ )© ãrP°qÅêœjŠÉþ²Ñ÷¢å‚©8æBþµô{ñqáÿ* ú +ú´^µ‡<+ Ss°fÀº¦IAâªÓêÏ!t»q=ô9Šë£«HÀÖ¬g«¹ìmKpVƒŠƒ+Âx‚›H¼@ (:8úv{j]w,1ÎïPuÞ³§cU†é8Ðî|tmSsð¼ö¶™­¯tež‡ªr;”6Þ8’GÀî}…¥XÍ!öék +ª—õå. +¸<† 3sˆúš8Eª¼Ô„(R'J3Ѩ“NöRçc€ý'Œ(e$©eÝ·—>Á…¡qLå/­Á“î®26’ìö$Wké˜[×…9ZXù.ñÍæÞ¢ù”Öþ¥aWÄú§êõ+‡±„«±_¿s•kVÛ ïu5ÄlŸ\> Ä€Þ0~f˜1JÇÑ6e×Í0Yõ“ç&å/ŠÃzÌ°>)ëßç«^I÷’ÿûèÈd +endstream +endobj +3730 0 obj << +/Type /Page +/Contents 3731 0 R +/Resources 3729 0 R +/MediaBox [0 0 612 792] +/Parent 3669 0 R +/Annots [ 3663 0 R 3664 0 R 3679 0 R 3680 0 R 3681 0 R 3682 0 R 3683 0 R 3684 0 R 3685 0 R 3686 0 R 3687 0 R 3688 0 R 3689 0 R 3690 0 R 3691 0 R 3692 0 R 3693 0 R 3694 0 R 3695 0 R 3696 0 R 3697 0 R 3698 0 R 3699 0 R 3700 0 R 3701 0 R 3702 0 R 3703 0 R 3704 0 R 3705 0 R 3706 0 R 3707 0 R 3708 0 R 3709 0 R 3710 0 R 3711 0 R 3712 0 R 3713 0 R 3714 0 R 3715 0 R 3716 0 R 3717 0 R 3718 0 R 3719 0 R 3720 0 R 3721 0 R 3722 0 R 3723 0 R 3724 0 R 3725 0 R 3726 0 R ] +>> endobj +3663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 654.217 178.965 665.096] +/A << /S /GoTo /D (delay_8h) >> +>> endobj +3664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 656.12 478.476 665.096] +/A << /S /GoTo /D (subsection.24.8) >> +>> endobj +3679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 632.299 206.232 643.178] +/A << /S /GoTo /D (delay__basic_8h) >> +>> endobj +3680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 634.202 478.476 643.178] +/A << /S /GoTo /D (subsection.24.9) >> +>> endobj +3681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 612.284 180.609 621.26] +/A << /S /GoTo /D (errno_8h) >> +>> endobj +3682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 612.284 478.476 621.26] +/A << /S /GoTo /D (subsection.24.10) >> +>> endobj +3683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 588.463 194.347 599.342] +/A << /S /GoTo /D (fdevopen_8c) >> +>> endobj +3684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 590.366 478.476 599.342] +/A << /S /GoTo /D (subsection.24.11) >> +>> endobj +3685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 568.448 167.478 577.425] +/A << /S /GoTo /D (ffs_8S) >> +>> endobj +3686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 568.448 478.476 577.425] +/A << /S /GoTo /D (subsection.24.12) >> +>> endobj +3687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 546.531 170.248 555.507] +/A << /S /GoTo /D (ffsl_8S) >> +>> endobj +3688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 546.531 478.476 555.507] +/A << /S /GoTo /D (subsection.24.13) >> +>> endobj +3689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 524.613 173.017 533.589] +/A << /S /GoTo /D (ffsll_8S) >> +>> endobj +3690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 524.613 478.476 533.589] +/A << /S /GoTo /D (subsection.24.14) >> +>> endobj +3691 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 502.695 174.123 511.671] +/A << /S /GoTo /D (fuse_8h) >> +>> endobj +3692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 502.695 478.476 511.671] +/A << /S /GoTo /D (subsection.24.15) >> +>> endobj +3693 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 478.874 196.26 489.753] +/A << /S /GoTo /D (interrupt_8h) >> +>> endobj +3694 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 480.777 478.476 489.753] +/A << /S /GoTo /D (subsection.24.16) >> +>> endobj +3695 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 456.956 190.731 467.836] +/A << /S /GoTo /D (inttypes_8h) >> +>> endobj +3696 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 458.859 478.476 467.836] +/A << /S /GoTo /D (subsection.24.17) >> +>> endobj +3697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 436.942 164.718 445.918] +/A << /S /GoTo /D (io_8h) >> +>> endobj +3698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 436.942 478.476 445.918] +/A << /S /GoTo /D (subsection.24.18) >> +>> endobj +3699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 415.024 174.681 424] +/A << /S /GoTo /D (lock_8h) >> +>> endobj +3700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 415.024 478.476 424] +/A << /S /GoTo /D (subsection.24.19) >> +>> endobj +3701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 393.106 179.104 402.082] +/A << /S /GoTo /D (math_8h) >> +>> endobj +3702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 393.106 478.476 402.082] +/A << /S /GoTo /D (subsection.24.20) >> +>> endobj +3703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 369.285 196.659 380.164] +/A << /S /GoTo /D (memccpy_8S) >> +>> endobj +3704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 371.188 478.476 380.164] +/A << /S /GoTo /D (subsection.24.21) >> +>> endobj +3705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 349.27 191.378 358.247] +/A << /S /GoTo /D (memchr_8S) >> +>> endobj +3706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 349.27 478.476 358.247] +/A << /S /GoTo /D (subsection.24.22) >> +>> endobj +3707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 326.192 202.347 336.329] +/A << /S /GoTo /D (memchr__P_8S) >> +>> endobj +3708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 327.352 478.476 336.329] +/A << /S /GoTo /D (subsection.24.23) >> +>> endobj +3709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 303.532 196.25 314.411] +/A << /S /GoTo /D (memcmp_8S) >> +>> endobj +3710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 305.435 478.476 314.411] +/A << /S /GoTo /D (subsection.24.24) >> +>> endobj +3711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 281.614 206.223 292.493] +/A << /S /GoTo /D (memcmp__P_8S) >> +>> endobj +3712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 283.517 478.476 292.493] +/A << /S /GoTo /D (subsection.24.25) >> +>> endobj +3713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 259.696 192.235 270.575] +/A << /S /GoTo /D (memcpy_8S) >> +>> endobj +3714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 261.599 478.476 270.575] +/A << /S /GoTo /D (subsection.24.26) >> +>> endobj +3715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 237.778 202.905 248.657] +/A << /S /GoTo /D (memcpy__P_8S) >> +>> endobj +3716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 239.681 478.476 248.657] +/A << /S /GoTo /D (subsection.24.27) >> +>> endobj +3717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 217.763 199.01 226.74] +/A << /S /GoTo /D (memmem_8S) >> +>> endobj +3718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 217.763 478.476 226.74] +/A << /S /GoTo /D (subsection.24.28) >> +>> endobj +3719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 195.846 200.474 204.822] +/A << /S /GoTo /D (memmove_8S) >> +>> endobj +3720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 195.846 478.476 204.822] +/A << /S /GoTo /D (subsection.24.29) >> +>> endobj +3721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 173.928 195.622 182.904] +/A << /S /GoTo /D (memrchr_8S) >> +>> endobj +3722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 173.928 478.476 182.904] +/A << /S /GoTo /D (subsection.24.30) >> +>> endobj +3723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 150.849 206.591 160.986] +/A << /S /GoTo /D (memrchr__P_8S) >> +>> endobj +3724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 152.01 478.476 160.986] +/A << /S /GoTo /D (subsection.24.31) >> +>> endobj +3725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 130.092 189.605 139.068] +/A << /S /GoTo /D (memset_8S) >> +>> endobj +3726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 130.092 478.476 139.068] +/A << /S /GoTo /D (subsection.24.32) >> +>> endobj +3732 0 obj << +/D [3730 0 R /XYZ 132.768 705.06 null] +>> endobj +3729 0 obj << +/Font << /F26 1917 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3808 0 obj << +/Length 558 +/Filter /FlateDecode +>> +stream +xÚ­—MoÛ0 †ïþ:Ú‡hÔ'¥‡­Š¶Õ· [M<$Žç8ëòï§ÄÞÐu-&Ï:‘‚e>¤üÒ¬ ›ämž¼¹æšXjµ7ùaBPÔ†h«¨¶ŒäY¦œQ–-¤×õÖe ® ýPzïiäO¾%̇ž„bÔ‚"å.YÞ©üÃ[TXC/[wDH¿•_Ü’»äSc~Ûsàn=>¿XDj%'Z!åB ´EW÷§ !¥›K¦¯G$Ë7\@*”x¶õ_Éx»ðgeŽÔõîÐ¥ bj%­gÊÿeš‘¹Ï¤®ó&¸Z¦R¡ùLòÁõ«âX!Q +ôH1ùu׆1ˆ[ç€Fkˆ쫺éÈ‚kO”3U{&îÀxÎ/q[¯2*WÉ™§ÚÙTß"&-‹ƒ+½†îBZ˜×ò¨ä/3æ;6(ŒÇMàâB ^£9x|†ïƒ¨FH³è~ʉ£*"|3á´ G=©n†&rÝ*mŽÛ0uö>©Õ ÄìõÀ? ¢…¨Ô)%ûöŽ)¸v¸oIY•> endobj +3727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 654.217 182.283 665.096] +/A << /S /GoTo /D (parity_8h) >> +>> endobj +3728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 656.12 478.476 665.096] +/A << /S /GoTo /D (subsection.24.33) >> +>> endobj +3756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 632.299 199.03 643.178] +/A << /S /GoTo /D (pgmspace_8h) >> +>> endobj +3757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 634.202 478.476 643.178] +/A << /S /GoTo /D (subsection.24.34) >> +>> endobj +3758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 610.381 182.432 621.26] +/A << /S /GoTo /D (power_8h) >> +>> endobj +3759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 612.284 478.476 621.26] +/A << /S /GoTo /D (subsection.24.35) >> +>> endobj +3760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 590.366 190.183 599.342] +/A << /S /GoTo /D (setbaud_8h) >> +>> endobj +3761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 590.366 478.476 599.342] +/A << /S /GoTo /D (subsection.24.36) >> +>> endobj +3762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 566.545 185.739 577.425] +/A << /S /GoTo /D (setjmp_8h) >> +>> endobj +3763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 568.448 478.476 577.425] +/A << /S /GoTo /D (subsection.24.37) >> +>> endobj +3764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 544.628 177.998 555.507] +/A << /S /GoTo /D (sleep_8h) >> +>> endobj +3765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 546.531 478.476 555.507] +/A << /S /GoTo /D (subsection.24.38) >> +>> endobj +3766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 524.613 181.326 533.589] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +3767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 524.613 478.476 533.589] +/A << /S /GoTo /D (subsection.24.39) >> +>> endobj +3768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 502.695 177.451 511.671] +/A << /S /GoTo /D (stdio_8h) >> +>> endobj +3769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 502.695 478.476 511.671] +/A << /S /GoTo /D (subsection.24.40) >> +>> endobj +3770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 480.777 180.379 489.753] +/A << /S /GoTo /D (stdlib_8h) >> +>> endobj +3771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 480.777 478.476 489.753] +/A << /S /GoTo /D (subsection.24.41) >> +>> endobj +3772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 456.956 204.369 467.836] +/A << /S /GoTo /D (strcasecmp_8S) >> +>> endobj +3773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 458.859 478.476 467.836] +/A << /S /GoTo /D (subsection.24.42) >> +>> endobj +3774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 435.039 214.342 445.918] +/A << /S /GoTo /D (strcasecmp__P_8S) >> +>> endobj +3775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 436.942 478.476 445.918] +/A << /S /GoTo /D (subsection.24.43) >> +>> endobj +3776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 415.024 196.728 424] +/A << /S /GoTo /D (strcasestr_8S) >> +>> endobj +3777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 415.024 478.476 424] +/A << /S /GoTo /D (subsection.24.44) >> +>> endobj +3778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 393.106 181.127 402.082] +/A << /S /GoTo /D (strcat_8S) >> +>> endobj +3779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 393.106 478.476 402.082] +/A << /S /GoTo /D (subsection.24.45) >> +>> endobj +3780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 370.027 191.099 380.164] +/A << /S /GoTo /D (strcat__P_8S) >> +>> endobj +3781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 371.188 478.476 380.164] +/A << /S /GoTo /D (subsection.24.46) >> +>> endobj +3782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 349.27 181.794 358.247] +/A << /S /GoTo /D (strchr_8S) >> +>> endobj +3783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 349.27 478.476 358.247] +/A << /S /GoTo /D (subsection.24.47) >> +>> endobj +3784 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 326.192 192.763 336.329] +/A << /S /GoTo /D (strchr__P_8S) >> +>> endobj +3785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 327.352 478.476 336.329] +/A << /S /GoTo /D (subsection.24.48) >> +>> endobj +3786 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 305.435 196.489 314.411] +/A << /S /GoTo /D (strchrnul_8S) >> +>> endobj +3787 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 305.435 478.476 314.411] +/A << /S /GoTo /D (subsection.24.49) >> +>> endobj +3788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 282.356 206.462 292.493] +/A << /S /GoTo /D (strchrnul__P_8S) >> +>> endobj +3789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 283.517 478.476 292.493] +/A << /S /GoTo /D (subsection.24.50) >> +>> endobj +3790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 259.696 186.666 270.575] +/A << /S /GoTo /D (strcmp_8S) >> +>> endobj +3791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 261.599 478.476 270.575] +/A << /S /GoTo /D (subsection.24.51) >> +>> endobj +3792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 237.778 196.639 248.657] +/A << /S /GoTo /D (strcmp__P_8S) >> +>> endobj +3793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 239.681 478.476 248.657] +/A << /S /GoTo /D (subsection.24.52) >> +>> endobj +3794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 215.861 182.651 226.74] +/A << /S /GoTo /D (strcpy_8S) >> +>> endobj +3795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 217.763 478.476 226.74] +/A << /S /GoTo /D (subsection.24.53) >> +>> endobj +3796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 193.943 193.321 204.822] +/A << /S /GoTo /D (strcpy__P_8S) >> +>> endobj +3797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 195.846 478.476 204.822] +/A << /S /GoTo /D (subsection.24.54) >> +>> endobj +3798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 172.025 187.782 182.904] +/A << /S /GoTo /D (strcspn_8S) >> +>> endobj +3799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 173.928 478.476 182.904] +/A << /S /GoTo /D (subsection.24.55) >> +>> endobj +3800 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 150.107 197.754 160.986] +/A << /S /GoTo /D (strcspn__P_8S) >> +>> endobj +3801 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 152.01 478.476 160.986] +/A << /S /GoTo /D (subsection.24.56) >> +>> endobj +3802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 128.189 184.086 139.068] +/A << /S /GoTo /D (strdup_8c) >> +>> endobj +3803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 130.092 478.476 139.068] +/A << /S /GoTo /D (subsection.24.57) >> +>> endobj +3809 0 obj << +/D [3807 0 R /XYZ 132.768 705.06 null] +>> endobj +3806 0 obj << +/Font << /F26 1917 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3886 0 obj << +/Length 524 +/Filter /FlateDecode +>> +stream +xÚ­—ÁnÛ0 †ï~ +åƒ5J´D©Çakb‡mõ-(†Äq“`‰“9Y»¼ýäÚ’µE¥U'J°ÌO¿HÑ&°v•½¯²w—Ê0'œñ¦ºcQ±Ì8-Œ“¬š³ WRȼÀ/Wë&/”þiµ?ø‘!¥¸T&¿­®³Uö#“Þ50yâJ +šÕ›lr lî^3è,{x\ºaXú¥²qÍn²/Œû{j{ÇÝb$|}VAI•ŠMB¡ìݪ]äRs±|ÜéËÙ¤PVYÑ🥯mÆÛŸ•“ô—º®§q‚¦Hæ‘ö ùís.%ð 2AéR‘wÇœB±ÖQ:lŒ`c•IDnڰࢢdĨØâÛ¤ž$òC—û +†õ,Óèí¯l[O÷M½Ù¡u©Ëôè˜3/KIwV@ˆ,¥ÅFÝ)²‰m F›&M´¸H…’S= –iÑQµI™â¡e”Ò&Yd-õ)®S‰¾›ußÃDkÀ´Ø¸HƒJC÷xËëeÄW„,ê´ì¸p¿í†Ñ9½éSî>ø~û?†D¥eßì¿ÙÒ$#Fý£(ùr˜Ÿí(œ„1ýÄŸ.ÁGhOûëš±I¸jÚ¦›šùÐàlÛÁVËŸÃàCSƒr0.^H;ÌÀ8ºË•æÛn˜LûÉ}—#ñb½šfÇÑåö×qÑ´gÒ½äßnè +endstream +endobj +3885 0 obj << +/Type /Page +/Contents 3886 0 R +/Resources 3884 0 R +/MediaBox [0 0 612 792] +/Parent 3669 0 R +/Annots [ 3804 0 R 3805 0 R 3834 0 R 3835 0 R 3836 0 R 3837 0 R 3838 0 R 3839 0 R 3840 0 R 3841 0 R 3842 0 R 3843 0 R 3844 0 R 3845 0 R 3846 0 R 3847 0 R 3848 0 R 3849 0 R 3850 0 R 3851 0 R 3852 0 R 3853 0 R 3854 0 R 3855 0 R 3856 0 R 3857 0 R 3858 0 R 3859 0 R 3860 0 R 3861 0 R 3862 0 R 3863 0 R 3864 0 R 3865 0 R 3866 0 R 3867 0 R 3868 0 R 3869 0 R 3870 0 R 3871 0 R 3872 0 R 3873 0 R 3874 0 R 3875 0 R 3876 0 R 3877 0 R 3878 0 R 3879 0 R 3880 0 R 3881 0 R ] +>> endobj +3804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 654.217 181.725 665.096] +/A << /S /GoTo /D (string_8h) >> +>> endobj +3805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 656.12 478.476 665.096] +/A << /S /GoTo /D (subsection.24.58) >> +>> endobj +3834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 634.202 184.076 643.178] +/A << /S /GoTo /D (strlcat_8S) >> +>> endobj +3835 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 634.202 478.476 643.178] +/A << /S /GoTo /D (subsection.24.59) >> +>> endobj +3836 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 611.123 194.048 621.26] +/A << /S /GoTo /D (strlcat__P_8S) >> +>> endobj +3837 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 612.284 478.476 621.26] +/A << /S /GoTo /D (subsection.24.60) >> +>> endobj +3838 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 588.463 185.6 599.342] +/A << /S /GoTo /D (strlcpy_8S) >> +>> endobj +3839 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 590.366 478.476 599.342] +/A << /S /GoTo /D (subsection.24.61) >> +>> endobj +3840 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 566.545 196.27 577.425] +/A << /S /GoTo /D (strlcpy__P_8S) >> +>> endobj +3841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 568.448 478.476 577.425] +/A << /S /GoTo /D (subsection.24.62) >> +>> endobj +3842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 546.531 181.316 555.507] +/A << /S /GoTo /D (strlen_8S) >> +>> endobj +3843 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 546.531 478.476 555.507] +/A << /S /GoTo /D (subsection.24.63) >> +>> endobj +3844 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 523.452 191.289 533.589] +/A << /S /GoTo /D (strlen__P_8S) >> +>> endobj +3845 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 524.613 478.476 533.589] +/A << /S /GoTo /D (subsection.24.64) >> +>> endobj +3846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 502.695 181.973 511.671] +/A << /S /GoTo /D (strlwr_8S) >> +>> endobj +3847 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 502.695 478.476 511.671] +/A << /S /GoTo /D (subsection.24.65) >> +>> endobj +3848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 478.874 209.938 489.753] +/A << /S /GoTo /D (strncasecmp_8S) >> +>> endobj +3849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 480.777 478.476 489.753] +/A << /S /GoTo /D (subsection.24.66) >> +>> endobj +3850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 456.956 219.911 467.836] +/A << /S /GoTo /D (strncasecmp__P_8S) >> +>> endobj +3851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 458.859 478.476 467.836] +/A << /S /GoTo /D (subsection.24.67) >> +>> endobj +3852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 436.942 186.696 445.918] +/A << /S /GoTo /D (strncat_8S) >> +>> endobj +3853 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 436.942 478.476 445.918] +/A << /S /GoTo /D (subsection.24.68) >> +>> endobj +3854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 413.863 196.668 424] +/A << /S /GoTo /D (strncat__P_8S) >> +>> endobj +3855 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 415.024 478.476 424] +/A << /S /GoTo /D (subsection.24.69) >> +>> endobj +3856 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 391.203 192.235 402.082] +/A << /S /GoTo /D (strncmp_8S) >> +>> endobj +3857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 393.106 478.476 402.082] +/A << /S /GoTo /D (subsection.24.70) >> +>> endobj +3858 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 369.285 202.208 380.164] +/A << /S /GoTo /D (strncmp__P_8S) >> +>> endobj +3859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 371.188 478.476 380.164] +/A << /S /GoTo /D (subsection.24.71) >> +>> endobj +3860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 347.367 188.22 358.247] +/A << /S /GoTo /D (strncpy_8S) >> +>> endobj +3861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 349.27 478.476 358.247] +/A << /S /GoTo /D (subsection.24.72) >> +>> endobj +3862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 325.45 198.89 336.329] +/A << /S /GoTo /D (strncpy__P_8S) >> +>> endobj +3863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 327.352 478.476 336.329] +/A << /S /GoTo /D (subsection.24.73) >> +>> endobj +3864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 305.435 186.706 314.411] +/A << /S /GoTo /D (strnlen_8S) >> +>> endobj +3865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 305.435 478.476 314.411] +/A << /S /GoTo /D (subsection.24.74) >> +>> endobj +3866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 282.356 196.678 292.493] +/A << /S /GoTo /D (strnlen__P_8S) >> +>> endobj +3867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 283.517 478.476 292.493] +/A << /S /GoTo /D (subsection.24.75) >> +>> endobj +3868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 259.696 189.525 270.575] +/A << /S /GoTo /D (strpbrk_8S) >> +>> endobj +3869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 261.599 478.476 270.575] +/A << /S /GoTo /D (subsection.24.76) >> +>> endobj +3870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 237.778 199.498 248.657] +/A << /S /GoTo /D (strpbrk__P_8S) >> +>> endobj +3871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 239.681 478.476 248.657] +/A << /S /GoTo /D (subsection.24.77) >> +>> endobj +3872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 217.763 186.218 226.74] +/A << /S /GoTo /D (strrchr_8S) >> +>> endobj +3873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 217.763 478.476 226.74] +/A << /S /GoTo /D (subsection.24.78) >> +>> endobj +3874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 194.685 197.186 204.822] +/A << /S /GoTo /D (strrchr__P_8S) >> +>> endobj +3875 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 195.846 478.476 204.822] +/A << /S /GoTo /D (subsection.24.79) >> +>> endobj +3876 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 173.928 181.386 182.904] +/A << /S /GoTo /D (strrev_8S) >> +>> endobj +3877 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 173.928 478.476 182.904] +/A << /S /GoTo /D (subsection.24.80) >> +>> endobj +3878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 150.107 182.422 160.986] +/A << /S /GoTo /D (strsep_8S) >> +>> endobj +3879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 152.01 478.476 160.986] +/A << /S /GoTo /D (subsection.24.81) >> +>> endobj +3880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 128.189 192.394 139.068] +/A << /S /GoTo /D (strsep__P_8S) >> +>> endobj +3881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 130.092 478.476 139.068] +/A << /S /GoTo /D (subsection.24.82) >> +>> endobj +3887 0 obj << +/D [3885 0 R /XYZ 132.768 705.06 null] +>> endobj +3884 0 obj << +/Font << /F26 1917 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3936 0 obj << +/Length 1282 +/Filter /FlateDecode +>> +stream +xÚ­W[oÛ6~÷¯Ð£ Ô,/")À]‹°µ~K +C–h›ˆ-yºÄË~ýEÒ–§qм˜yx.ßùÎ!£u„£Ï“ßæ“÷Ÿ¨ˆR†ù*"Œ!)ÒH(Ž„"ѼˆncJ§3ÊqügUt[í櫼Ûé²ÍZS•°D„1¡rú}þeòû|òÏ„€ ‘J‚æQ¾›Ü~ÇQ›_"Œ˜J£C/º‹X¢ÄÜFß&O°÷óéh×koáëÅH‰TB#Á%¢Œ»Hš¶nö%úÖ{ù¼¶èvFS‚“˜I1}É ¤ˆZ\ü5%ÇW–³Ÿ1œž ·õ”à+ͦœ©73ûªx–¾á¶ºGù5¡2úv¯ÀX2IÁ°üyÃÝþ5©%‰ú³žÊ]k¶ïÛƒA›kB•„¿A¨‡¢½Êœ"ƒ¹ôL´ï$A,Ô¶„̉L¢Sˆ*vjn€äºètªÀ1Î{UÖMè54 Jqb°=c¥R‚t/õË%M +hŠ^"Ûn«°fŸå~jJ7¶›°×fùýQí©“ÎF‚@ÀIu +BvÈ}Ômf¶ºðØé&¯Í> ×C'}þÔ•¹ÝjÆ™ÂÃÞ-PÂœ£HðŽR~vÒÎÁøÔâ¸2…sœ$54E‰<"v‡1ó +Æ ™—pŒž§dlÙz‡9nÌzѺÀ û«äˆœ"–Zîr* øy†dz Ðc <ƒÀˆ“'0Œü»ó8JGJ>8ÅRJ„c€ ÊÁo…ÅɃ#BCÔ¡:JS ‰õi?Ò·?À†Z™@4I.ê¥ÞÇ\>¶ºq‘U«kk¢Ÿ®êl§ÏOÅr@L×SÎcÔçj& ñ¡ølÏ7ÆZNÓ¸Õ»}Ugõ£û ¤2Y×V;ȽUì¥VµîK ¦‡.¼óÀîžØc l²ÖÍzÏŠgxß_Ò§Û&:¤æŒê ¥Ö³ÀA×n\DmW—Öa PTn4­_B2c°ða*“ø¡¶å:ÛšeîÄ +(LKÔlô||µ^Uæ†]–×Õ;;瀛É7ÞÏ`°ÎÊf +üz"ñ®Œc6åÖ”Ú×cC>bhöêÄÇeg¶­)O]·;‚‘TÇ“!•€§ ÐRÌ(W¶Ä³¼µ_ħخ·N€ÄyUø™Înyg!|¯»Î\ßµµF©MøtzÖðØLÁ€ŸöŒLb”m³ì¯HXïa‚õ6»·~…UÇÇ$Ί¢ÖMãVûz±²¾ø1F›Åâªö•ÛÎ7Y¹öš£`q©7™eσ©:/¿|¼”"ˆùÞ”kWšÓnÜÌ7´Â¬¦<Ð5´W·tì«Qøú=A ZîÛœêö}ø«†*˜Âc§ln^x¨ŒÓžÂŸð/;¸–†ØçYׄ;hž•õáÁþèÚÞ@•MÁÁþÎ ìëj Ö}Œ3Í}½ÂØ•¡c空øŸSÄì5ÿ8ÃÿH¸×$K‡ÿˆS…Xx‹|Ö¥®=\68kÌ7]xån’¸àÊnHê¾(Æ~Ö±ª=áú#“Çþh¡x ï׺‡ü?þ˜Í) +endstream +endobj +3935 0 obj << +/Type /Page +/Contents 3936 0 R +/Resources 3934 0 R +/MediaBox [0 0 612 792] +/Parent 3669 0 R +/Annots [ 3882 0 R 3883 0 R 3913 0 R 3914 0 R 3915 0 R 3916 0 R 3917 0 R 3918 0 R 3919 0 R 3920 0 R 3921 0 R 3922 0 R 3923 0 R 3924 0 R 3925 0 R 3926 0 R 3927 0 R 3928 0 R 3929 0 R 3930 0 R 3931 0 R 3932 0 R ] +>> endobj +3882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 654.217 183.538 665.096] +/A << /S /GoTo /D (strspn_8S) >> +>> endobj +3883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 656.12 478.476 665.096] +/A << /S /GoTo /D (subsection.24.83) >> +>> endobj +3913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 632.299 193.51 643.178] +/A << /S /GoTo /D (strspn__P_8S) >> +>> endobj +3914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 634.202 478.476 643.178] +/A << /S /GoTo /D (subsection.24.84) >> +>> endobj +3915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 612.284 179.204 621.26] +/A << /S /GoTo /D (strstr_8S) >> +>> endobj +3916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 612.284 478.476 621.26] +/A << /S /GoTo /D (subsection.24.85) >> +>> endobj +3917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 589.206 190.173 599.342] +/A << /S /GoTo /D (strstr__P_8S) >> +>> endobj +3918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 590.366 478.476 599.342] +/A << /S /GoTo /D (subsection.24.86) >> +>> endobj +3919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 568.448 181.306 577.425] +/A << /S /GoTo /D (strtok_8c) >> +>> endobj +3920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 568.448 478.476 577.425] +/A << /S /GoTo /D (subsection.24.87) >> +>> endobj +3921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 545.37 190.83 555.507] +/A << /S /GoTo /D (strtok__r_8S) >> +>> endobj +3922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 546.531 478.476 555.507] +/A << /S /GoTo /D (subsection.24.88) >> +>> endobj +3923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 522.71 183.089 533.589] +/A << /S /GoTo /D (strupr_8S) >> +>> endobj +3924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 524.613 478.476 533.589] +/A << /S /GoTo /D (subsection.24.89) >> +>> endobj +3925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 502.695 187.413 511.671] +/A << /S /GoTo /D (util_2twi_8h) >> +>> endobj +3926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 502.695 478.476 511.671] +/A << /S /GoTo /D (subsection.24.90) >> +>> endobj +3927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [146.945 480.777 173.017 489.753] +/A << /S /GoTo /D (wdt_8h) >> +>> endobj +3928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 480.777 478.476 489.753] +/A << /S /GoTo /D (subsection.24.91) >> +>> endobj +3929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 338.529 210.939 349.059] +/A << /S /GoTo /D (group__alloca_gbdd78c9d072e9d390bed0e8b79087a85) >> +>> endobj +3930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.132 246.363 464.55 257.267] +/A << /S /GoTo /D (group__alloca_gbdd78c9d072e9d390bed0e8b79087a85) >> +>> endobj +3931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.974 234.781 319.392 245.312] +/A << /S /GoTo /D (group__alloca_gbdd78c9d072e9d390bed0e8b79087a85) >> +>> endobj +3932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 154.841 182.904 183.907] +/A << /S /GoTo /D (group__alloca_gbdd78c9d072e9d390bed0e8b79087a85) >> +>> endobj +3937 0 obj << +/D [3935 0 R /XYZ 132.768 705.06 null] +>> endobj +589 0 obj << +/D [3935 0 R /XYZ 133.768 466.082 null] +>> endobj +3938 0 obj << +/D [3935 0 R /XYZ 133.768 432.116 null] +>> endobj +593 0 obj << +/D [3935 0 R /XYZ 133.768 432.116 null] +>> endobj +597 0 obj << +/D [3935 0 R /XYZ 133.768 403.52 null] +>> endobj +3940 0 obj << +/D [3935 0 R /XYZ 133.768 357.129 null] +>> endobj +601 0 obj << +/D [3935 0 R /XYZ 133.768 324.955 null] +>> endobj +3941 0 obj << +/D [3935 0 R /XYZ 133.768 302.27 null] +>> endobj +3942 0 obj << +/D [3935 0 R /XYZ 133.768 302.27 null] +>> endobj +3934 0 obj << +/Font << /F26 1917 0 R /F52 3939 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R /F36 2440 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3961 0 obj << +/Length 1424 +/Filter /FlateDecode +>> +stream +xÚ•WYoÛ8~÷¯Ð¨X:ƒbNƒíÃb7q±MÈ2í%/%·õ¿ß²|¥éƒ!Šçøæ›1 Ö î&ç“wŸx¤Há1_L’¥y I Ì—Á×s§ßæŸß}bl$Ë3"Š¡÷VâH[F²x(»Nêž<_Ð$8)`åÿ¸¢©ð7ÓH0ÎT¹nÚ®WU7X‘'yÈxŽ‡'·óÉò4`#Ÿ)hT›É×o4XÂÇÏ5>ü0¢›@Ä Êð`ÙÇj×T½jûVÁÍdÈcèGÇ"Icq‰˜° +ØE ‚›²Òíï 7!´p~zúððp{?úòpûô0ŸÝÞß¿´ ‰F xZøÛlÂ+ZvÞ9r¨?*ŽxãG“¯4“1“Œ|<º%ÎHÎÏåˆÅ)9˜1˜m ,¨?îíæ(õ€@Ž@ÃL^'x8S.ZÝ_åwp°€ÕÂE©€€Šø‰G¸ê[ÇeÝ_ +¹@‡P lV8E³E/uº”Ä¢€„s’¦îà#çÉ©3 ÐÝË_t=“¼!FI"KüÜj¨pÁÇì”Ô½Ic_ ©óÔ–ÔÛÊôÅÒÓ:Æá¬!ZÂÁ‹‘µÆ:° Ûì±u"J +¨&¬ª„9¶ýÛ@F—ÙKÝÝ\©MHíùl‘š«E1y)U1¤C;¾=œ± q°é¥ž“$´]"J!ªP.'íè…T +‘Œ‚s à(a)Ép'ÞlH6ñÜ„k…]ã;æ]6vëvú‘cé•ÝP½{:…¶4ëNšæ.Àr2t„§·º­@ípôkCš6ªA26åŸÂ\µÕ? ö}èøb(<hÕ÷è¹ 8lv=ðŠ¶kã.lÉÂb˜Ë®—ŒøÀeÞËo/yô¡^I¸îsߊ¼ÛÃø0p +Äl ø½8Küé:ÕiÊLóÍIï0)^ç+˜á¥yØÁÉ4ÁÖ÷?hÙÏ`ø±‰É+ Ìã_A˜ÇépgŒhÆxÁžakØÐrÓ¢ó6šKû±ìíǪÝl•†`³Wwf±·OÇ36ä ñ×ìö#ÂøËÝÔYæÔù»]s?M¬á&²&.Ê‹½ÿ÷qžLg‘›+Ûía¤ˆf‡ë1ä(ÿšÀ7âwþ˜ù?b)Ì!"ÿsÍ "|w¹;ž†¼óçÒ+»ˆíƒÑ.nXnß8¥neàÞj?'#äõTda£duªYûsCØ©Ëÿ5Öß’ +endstream +endobj +3960 0 obj << +/Type /Page +/Contents 3961 0 R +/Resources 3959 0 R +/MediaBox [0 0 612 792] +/Parent 3669 0 R +/Annots [ 3933 0 R 3952 0 R 3953 0 R 3954 0 R 3955 0 R 3956 0 R 3957 0 R 3958 0 R ] +>> endobj +3933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.717 637.226 225.135 668.194] +/A << /S /GoTo /D (group__alloca_gbdd78c9d072e9d390bed0e8b79087a85) >> +>> endobj +3952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.624 435.026 272.437 445.93] +/A << /S /GoTo /D (assert_8h) >> +>> endobj +3953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.833 435.026 422.933 445.93] +/A << /S /GoTo /D (group__avr__stdlib_g63e28bec3592384b44606f011634c5a8) >> +>> endobj +3954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 368.211 214.176 379.115] +/A << /S /GoTo /D (group__avr__assert_g0041af519e0e7d47c9bcc83760c4669e) >> +>> endobj +3955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.6 240.513 182.912 251.417] +/A << /S /GoTo /D (group__avr__assert_g0041af519e0e7d47c9bcc83760c4669e) >> +>> endobj +3956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.69 228.558 440.791 239.462] +/A << /S /GoTo /D (group__avr__stdlib_g63e28bec3592384b44606f011634c5a8) >> +>> endobj +3957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.122 198.978 262.434 209.882] +/A << /S /GoTo /D (group__avr__assert_g0041af519e0e7d47c9bcc83760c4669e) >> +>> endobj +3958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.709 181.354 182.021 192.258] +/A << /S /GoTo /D (group__avr__assert_g0041af519e0e7d47c9bcc83760c4669e) >> +>> endobj +3962 0 obj << +/D [3960 0 R /XYZ 132.768 705.06 null] +>> endobj +3963 0 obj << +/D [3960 0 R /XYZ 133.768 628.259 null] +>> endobj +605 0 obj << +/D [3960 0 R /XYZ 133.768 623.652 null] +>> endobj +609 0 obj << +/D [3960 0 R /XYZ 133.768 597.04 null] +>> endobj +3964 0 obj << +/D [3960 0 R /XYZ 133.768 387.185 null] +>> endobj +613 0 obj << +/D [3960 0 R /XYZ 133.768 354.637 null] +>> endobj +3264 0 obj << +/D [3960 0 R /XYZ 133.768 332.325 null] +>> endobj +3965 0 obj << +/D [3960 0 R /XYZ 133.768 332.325 null] +>> endobj +3966 0 obj << +/D [3960 0 R /XYZ 336.218 172.552 null] +>> endobj +3959 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +3990 0 obj << +/Length 1287 +/Filter /FlateDecode +>> +stream +xÚÅXKoÜ6¾ï¯Ѓµ@–&EQ”Œ ‡Öµ‘\‚¶{³ƒ@«åî2ÑJŠqÜ_ßáK–öaÇ}@¯ÑÇ3Cr†ØÛzØ»ý²œ]Þ‘— $‚b¹ñ¥ˆG±% E ñ–kïÎDç—ï/oÈÑ$ -ôÖHŒÐ8âa/µ•@»@#N˜“ûù Pâ®æ J°ÿë.­Ó¬õ|0ì¨D¶²,šù‚0ÆBŸ‰‚šý¶œ}ø{d°@‚̼l?»ûˆ½5 ¾÷°^ЃÝ{4Q¢~̽?g¿ÏðÖ 0ŒÔÆ8 +(;T „i€bÎõ6IÁì¤â "3~¬¹sP/ªîXõ‹˜£$ ½E" +Fè—†(cì_‹6•¹X°kÑdµ¬œEÃ4<ÆYîD#Ì›®È¬ùT(mÊzoßæóÓZ–-ÆÖí”™[Xƒ´éÉ\yyC)8SÂ1QlBÄãa&–ÑO²Èòn ¤"XÚ[«ûS>¹°S‚hÄÍߊÍò´iä=ÆA¦ÙšÞzNb¿ìZYˆæ‡UDA©f¯"ÕÈžfÖ̓™Ñ|Á(S`sÂüG#T‹¶« Uý¶îì,¥…ØÌÁSÒÜMÞ´iÛÙ™×b¡ˆ+ªÆÓ ÕJkYla•Iì?ìD»ÓŠH¸5Ó; ©ú+`©†ÚÒ–F–÷Ë5Ý–NÞ˜AYÈǽüÅœ]#ö¤‡1ãÈn-gNý{Ì°DÂ9Ž:,ê­=5þ¸yw c_6k¹•­†Œ¼ DQkcP^UMnlÙÚ¡T;¶ۋ¢µCz$ôÓÂZIuçÏ̾°È»²ÛîlgrñFÕ_»o#Õ?߈P,Ñ)k½Ûw4úƒŠ,ª®µU»¯ŠÒv¤Öw»¢‘ÛÂíueÍá’o¬|žÛÙÏâ0fU›Áú q7Þ¼‰PHØÀžXËÝ;T>Ãjíyš¥¥yÑí CÚ +»âOŸ²c+Óà? QíÒÉI4™”S“XåiñejYÑÖùÔ$ôÉ25‰mV»©Iä¥:Oàš˜˜HU? MGB˜S“hª4S“èªjzŸøþê}z9º í¹Ð.ÈPÝ«p%ŠúŸæÖMàžMsùW…&*zÜ›P„ÅÞÂ¥U.L«¿Õ-ˆ¹Ìc¥$Gn ÛdÊ@¨I)סæ3ŠTñž¾~ÎFRÛ‡ +'—,i­xEÜÒ‡ÊNn!\nMcËSd¢à2 Û–ý‘s–š¨X¿„£]ô9Œa¢Í>Òð¦t‘˜ê‰'"Ø´q›¼¤ ¸ä¿åþÏ(ÌÚ­<0úÔD^}°ýÈ‘¢³ôÀfé7£°ûºÌ´K¥Ãíu”á}ŽßSpáóˆœy™`Ãw$‚µï@üióŽÌ`ex´2 ÅBH´ GQÀÜi)²/JÒ!QU«ª(ÏÖ¥Š­¤¨e¦z¢AÚ ©!œ „ræ¿k¸´8âkgó&½tV¦ú!ÑÔ´(>~E ðpHÛ ^Uf"áð‹ N‰ûéóçÀpxƈp>>íi§Æ>£¬ˆ!ÎB‡?ÞÀ'ŸÁ’½æÌ=~E(á4¾}Å xž¥{+ +õ@ãçuË]ç‰2S MAðU@¯HlZƱË탄>¸´qê9\.‹\®,ÂêÑyô÷Ç­(—ü7Ì´!x +endstream +endobj +3989 0 obj << +/Type /Page +/Contents 3990 0 R +/Resources 3988 0 R +/MediaBox [0 0 612 792] +/Parent 3997 0 R +/Annots [ 3968 0 R 3969 0 R 3970 0 R 3971 0 R 3972 0 R 3973 0 R 3974 0 R 3975 0 R 3976 0 R 3977 0 R 3978 0 R 3979 0 R 3980 0 R 3981 0 R 3982 0 R 3983 0 R 3984 0 R 3985 0 R 3986 0 R 3987 0 R ] +>> endobj +3968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.114 505.258 212.658 516.162] +/A << /S /GoTo /D (group__ctype_g49b21b266576c2490dab1e8f897c801a) >> +>> endobj +3969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 471.76 204.233 482.29] +/A << /S /GoTo /D (group__ctype_ge62f8f9e20430c822d07697b277c5de7) >> +>> endobj +3970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 459.355 200.906 470.258] +/A << /S /GoTo /D (group__ctype_g66e77eea7376ce0c1e00223f45d0aba9) >> +>> endobj +3971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 447.696 197.588 458.226] +/A << /S /GoTo /D (group__ctype_g41f2d44607ddcc15266bd63cb8e563c4) >> +>> endobj +3972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 435.664 201.464 446.195] +/A << /S /GoTo /D (group__ctype_gd1a49aed816573f1b5787176f5ec701e) >> +>> endobj +3973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 423.632 197.588 434.163] +/A << /S /GoTo /D (group__ctype_g659606df93739b0193c9e98df2953ae0) >> +>> endobj +3974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 411.227 197.598 422.131] +/A << /S /GoTo /D (group__ctype_g49b21b266576c2490dab1e8f897c801a) >> +>> endobj +3975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 399.195 202.012 410.099] +/A << /S /GoTo /D (group__ctype_ge89269f754744bbd5486788d06e0c7c9) >> +>> endobj +3976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 387.536 201.763 398.067] +/A << /S /GoTo /D (group__ctype_ge293e218972b626f6304aecbae044ef6) >> +>> endobj +3977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 375.131 198.146 386.035] +/A << /S /GoTo /D (group__ctype_ga2ded03e3a0d8f5ef2a8df3e834e916d) >> +>> endobj +3978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 363.099 201.464 374.003] +/A << /S /GoTo /D (group__ctype_ga46e128f7550afb4f2cda133594cb4b6) >> +>> endobj +3979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 351.067 201.454 361.971] +/A << /S /GoTo /D (group__ctype_g16e58710aba8108549a1a3c33691b24e) >> +>> endobj +3980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 339.035 202.012 349.939] +/A << /S /GoTo /D (group__ctype_g125dbbabac1caef46a0c6dad060a79d1) >> +>> endobj +3981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 327.003 202.58 337.907] +/A << /S /GoTo /D (group__ctype_g04826722a22243889683efde883e8ab3) >> +>> endobj +3982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.053 271.286 442.692 282.19] +/A << /S /GoTo /D (group__ctype_g21d5ec3792b2704ecca5778b758dd91f) >> +>> endobj +3983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.37 259.331 280.184 270.235] +/A << /S /GoTo /D (group__ctype_g9ba1fce7148e9b63ca6296e02c79bedd) >> +>> endobj +3984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.9 259.331 336.963 270.235] +/A << /S /GoTo /D (group__ctype_g924ed052807e23cfa160d5f171cf5e2a) >> +>> endobj +3985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 225.833 198.694 236.363] +/A << /S /GoTo /D (group__ctype_g21d5ec3792b2704ecca5778b758dd91f) >> +>> endobj +3986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 213.801 202.869 224.331] +/A << /S /GoTo /D (group__ctype_g9ba1fce7148e9b63ca6296e02c79bedd) >> +>> endobj +3987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 201.396 203.118 212.299] +/A << /S /GoTo /D (group__ctype_g924ed052807e23cfa160d5f171cf5e2a) >> +>> endobj +3991 0 obj << +/D [3989 0 R /XYZ 132.768 705.06 null] +>> endobj +617 0 obj << +/D [3989 0 R /XYZ 133.768 667.198 null] +>> endobj +621 0 obj << +/D [3989 0 R /XYZ 133.768 648.084 null] +>> endobj +3992 0 obj << +/D [3989 0 R /XYZ 133.768 549.827 null] +>> endobj +3993 0 obj << +/D [3989 0 R /XYZ 133.768 291.944 null] +>> endobj +625 0 obj << +/D [3989 0 R /XYZ 133.768 188.649 null] +>> endobj +3994 0 obj << +/D [3989 0 R /XYZ 133.768 166.337 null] +>> endobj +3995 0 obj << +/D [3989 0 R /XYZ 133.768 166.337 null] +>> endobj +3996 0 obj << +/D [3989 0 R /XYZ 205.101 119.253 null] +>> endobj +3988 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F52 3939 0 R /F20 1882 0 R /F33 2429 0 R /F55 3943 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4014 0 obj << +/Length 1173 +/Filter /FlateDecode +>> +stream +xÚ­WKoÛ8¾ûWè¨X>DR +ŠvÓM‘^‹úÖ…Ì0[…r%:iúëw(JŽ+±»õERÃy|3Cq´Špônö×böú’Š(G¹€aqÆY$rŽDN¢Åuô1¦±ùçÅû×—„Œx©D,Ï@PÇô&pìH“H¦[åÖ•‚F’ðïgåÃù¦­êû‘ìg IžòÑâIÏ’0ŠH¾j6êVs8Ôe©p¼M75!-6:L]Y¸Àò cêzqP=ü×á÷Ÿ.®®Âš• ì‡!H‘ 'ºör„1;mv«ªÍµ±«ÿ•OÀ²±ê0,ˆì4™!B³2Ý  aɘîܺ:£Ê@†&Ƕv½˜0 #aô¥ÝÜêÆ÷–»â)ëÙÇwtὄ/tÃœž_x%±¬Ç—ïâË øz@s:éíó [¯[h§EÊãK€½k~ó˜ùvDÊØêŒÕ/kâ1)iÚvv¬DMcŠU¯¡ÑnÓØ—µe)’’íW3ÖVÖù ýEQ¾¡zQ™ÌÑÈðCºÜXWaûÝùÑ ¼ÊÆj}L*dwhì„ö9[$-?Ú–»³m³°}O>©ó g¿ò ÒåªhôÎrð¦÷â¶þeße©ïdmå&oµ +D‚Ï);'Y˜QŒ{êÆ'áãMèªÍœÉ¡®ºN»¿ÞÖ?VÚ>uù?30ö +endstream +endobj +4013 0 obj << +/Type /Page +/Contents 4014 0 R +/Resources 4012 0 R +/MediaBox [0 0 612 792] +/Parent 3997 0 R +>> endobj +4015 0 obj << +/D [4013 0 R /XYZ 132.768 705.06 null] +>> endobj +4016 0 obj << +/D [4013 0 R /XYZ 133.768 667.198 null] +>> endobj +3999 0 obj << +/D [4013 0 R /XYZ 205.101 627.656 null] +>> endobj +4017 0 obj << +/D [4013 0 R /XYZ 133.768 611.99 null] +>> endobj +4000 0 obj << +/D [4013 0 R /XYZ 474.443 577.837 null] +>> endobj +4018 0 obj << +/D [4013 0 R /XYZ 133.768 561.11 null] +>> endobj +4001 0 obj << +/D [4013 0 R /XYZ 347.973 528.018 null] +>> endobj +4019 0 obj << +/D [4013 0 R /XYZ 133.768 511.291 null] +>> endobj +3998 0 obj << +/D [4013 0 R /XYZ 258.858 478.199 null] +>> endobj +4020 0 obj << +/D [4013 0 R /XYZ 133.768 463.529 null] +>> endobj +4002 0 obj << +/D [4013 0 R /XYZ 265.523 428.38 null] +>> endobj +4021 0 obj << +/D [4013 0 R /XYZ 133.768 411.653 null] +>> endobj +4003 0 obj << +/D [4013 0 R /XYZ 329.373 378.561 null] +>> endobj +4022 0 obj << +/D [4013 0 R /XYZ 133.768 361.834 null] +>> endobj +4004 0 obj << +/D [4013 0 R /XYZ 273.334 328.742 null] +>> endobj +4023 0 obj << +/D [4013 0 R /XYZ 133.768 314.072 null] +>> endobj +4005 0 obj << +/D [4013 0 R /XYZ 341.159 278.923 null] +>> endobj +4024 0 obj << +/D [4013 0 R /XYZ 133.768 262.195 null] +>> endobj +4006 0 obj << +/D [4013 0 R /XYZ 474.454 229.104 null] +>> endobj +4025 0 obj << +/D [4013 0 R /XYZ 133.768 212.376 null] +>> endobj +4007 0 obj << +/D [4013 0 R /XYZ 162.58 155.374 null] +>> endobj +4012 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4030 0 obj << +/Length 1549 +/Filter /FlateDecode +>> +stream +xÚÅXK›H¾ûW íKq§_ÐÍ(Š”·i»ciIaÜ6(¼€gÆÿ~«©†gfµ#í ªººººê«PoïQïÓâízñò#½ˆD!<Ö; AT¨½0 +H1o½õ¾úœ¹ü¾þòò#cY®ˆˆ4(j…^¡ÄH›"Jö¦ª–,ð‹’¤3Ê#¡bìë Ê¢Nàj¹Œú×çº1‡åŠÔÿ`õk¿¬êåŠé0Ò>ÌêY|X/þ^XÝÔcƒ2ÑÀK‹¯ß©·…Å/motÛŠ™±z+÷Œ&÷ï}·ÍöYóøÅAC¨Ÿçâ!Q¼ps¸›KéÇH§Æ‚ô.Þš$;,™çÈo ¯_X"ô3bÚ +ƒÛËÊQ$R)”D*@*DJ!¥‘ŠŠ‘Ú • µEÊèÎ{ƒÔ[¤Þ!õ©H}\jz)nR6 ›œ†­)ã:ɲG£F5‘Z¦jjÜ(Ä°ˆD`>ï´'3ª#¨j½@SB•°Þ¶µÚXlÚ×SQgûÂl-Åý$+äß,9'?$›4v¾QÊÁ¤öÜSvë5¼¹~÷ù3ò¬²8±ÙÔ’µiT’ +s¶öBH4ÑÂ"êSàb“ä&®²bï’º´L³}º*«mWKÀþº t_ª&î_QEP8Tw§ú¯eWÂÒ '\M·½Ç4ÔC°,º·ìw¨°õ (åMyÌ­qJû·Yž#wã8§"Ç%Ôm'žíðy.ON¢-8ÀiÒ¬FÖîT$MV6á"î¯Ý‚ꦧ%cœ´N¥cwÆIbŠÆ†÷¾¸¹JˆÁ³oU\lK×[ú Õsydaª„LBújœNÁÃtÊKëƒÛ§uœgêJ2—RÁ…”ÃËUý‡y¦ÈðWy¥à¾€w…{Cúô÷¶íå…óúŸÇ²®³Mnf½¬%¡ÖËm¯‘c/‡½üÄ@ƒ~¦V‘€ÉÿÕÃ;?É»˜|ì^h ZM'?C´RG¿”b\œý&ê4¡÷¯U÷ëéo:¡P÷¡Cd7ÂnÞ›&Îò®"¼7uReǶº Ëá}Y„`))ʬzI”¶ÊÑFå¿eE’Ÿ¶æ´¿‚ûÛ»¿žÃM·[‘ sûuy°¢/r8B¼‘‚—<ÛTquFz ŠõËû¼Ü´ŒèzW•Å€€Äqª †ÓzQΘ ‘ç¬ï ·©qµƒ# ûÚ‰ +Xe’œlÁ„AIBÝ6ØÞ84i¡]=»”¢<´>ü,p•u´ÎñÕÞ ôºx\þìè`7ˆßè “r +?zI£ËªcUZLßd[ãÒº>6ež%HñÁLÇë.åÉ­tî² [‚¢_woH‚¶{w(þíÛ…eâ@ëõ'A…½Ûz¨q=†p"¿mÚ°R” 2êxgÕÖ.à`ïF r`Än=­ Œã[d¶Þîá”7Ùª‰ëŸH×m-hÁ&`(ÆI +l|Üú¡ÛcÀ]0'l37@X²E0“[äµ…“á8wš]¨Qš +xçtÄY6¦¹5Æ©Ä4lu·Ã ¼Ý¦Y’â^ÈÖ¹–G!alàû²š«Nl<ÖÖŠHui…Î`9ÛáÍ}à²ÂÌÏXHäý‡ö¥àC³Óº‡ø]„?ïðˆÂœ¶hprh§¨b?(…OÝ€?qƒDÝžÜH¹yë‹æ$å#Ï4Ù¡k†}ï­L Âw7=ÚÚts`RV•IšI÷ÛÇ¡·+pÏqúÎþwˆ Å¿ùëÐým¡ß@áüm€®&º1þ“)L÷Æ”î;~žº–æÊ’Ä£W\\1§Ô½ílêö,qS-…òWÐiœ†ÍÙ©,ïÎ{SL¯üRƒê +endstream +endobj +4029 0 obj << +/Type /Page +/Contents 4030 0 R +/Resources 4028 0 R +/MediaBox [0 0 612 792] +/Parent 3997 0 R +/Annots [ 4026 0 R ] +>> endobj +4026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.234 225.812 202.07 236.716] +/A << /S /GoTo /D (errno_8h) >> +>> endobj +4031 0 obj << +/D [4029 0 R /XYZ 132.768 705.06 null] +>> endobj +4032 0 obj << +/D [4029 0 R /XYZ 133.768 667.198 null] +>> endobj +4008 0 obj << +/D [4029 0 R /XYZ 259.416 639.611 null] +>> endobj +4033 0 obj << +/D [4029 0 R /XYZ 133.768 622.884 null] +>> endobj +4009 0 obj << +/D [4029 0 R /XYZ 133.768 577.837 null] +>> endobj +4034 0 obj << +/D [4029 0 R /XYZ 133.768 563.266 null] +>> endobj +4010 0 obj << +/D [4029 0 R /XYZ 133.768 448.441 null] +>> endobj +4035 0 obj << +/D [4029 0 R /XYZ 133.768 433.871 null] +>> endobj +4011 0 obj << +/D [4029 0 R /XYZ 321.891 398.721 null] +>> endobj +4036 0 obj << +/D [4029 0 R /XYZ 133.768 381.994 null] +>> endobj +4037 0 obj << +/D [4029 0 R /XYZ 325.228 348.902 null] +>> endobj +629 0 obj << +/D [4029 0 R /XYZ 133.768 332.175 null] +>> endobj +633 0 obj << +/D [4029 0 R /XYZ 133.768 305.564 null] +>> endobj +4028 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4050 0 obj << +/Length 1613 +/Filter /FlateDecode +>> +stream +xÚ­XmÛ6 þž_a\1À.ª^,¿\‹í®-®ÅÖíšomQøl%ñàØ™íÜË¿%J‰8w·a_bŠ¢(Š|HQ¡ÞÒ£ÞÇÉ»ùäåz IBøÌ‚Daì…‰$a¼yî}ó9'rúcþéåÆz²<""‰A‘zm‰‚@QuÝÃFµd5¢+`$J„}sBWâ.¦3Á¨Uuj©šéŒKêϧQàÃ8ÊêjPÿv +bªi‹ºj§3&8 |øÕú'ïç“¿' TRõÎHB¥—­'ß~P/‡ÉO5½3¢kO ÊôÂÒû:ùsBŸö¦Œm¿Tß)å•jn1¬¤ý•! DâÍÀõ<´aøι¬ñ¾Í$¥þ‹Üj´“ú8ÍÒžëÚˆi¼¿üòÛárÍbÈ¥ÞŒAÀ!pÿË®×oÿø~tß`$Ê3wpÁH,öø ‡ðQØ×¹Ã|YgÛµªº´ƒk}Ú|Xé­%Ì®Þ[½÷IÏ QЮˆHÈ]äêuZT(¯š¦n¦RúdätÌþÝ m@ }2fE€Ú®Ój©NÁ¾Rrg… ±[·Ïb˜î‰ Nâ(:NãžHB¤Ä‰<j“”0ÉŽù”¶ÿ–ÉcÀ¡ r,>Š¾ÜÅþRuiQªÜ"GµYSlnvèÜ'¤Pt’ˆ2S HsPa•Vù‹¢ÊÊmf† ýõÞ/oF‚8s +$‘¡U0_­6&ðW*Íñô¯±Q*¤íFJøÝʲՔIÿ>ͺÙ]‘w+'ÛþÒ)²0+:,~šµhêõX%)tXÊGRÚ¸äDuo» @Lô|8,ò ñôT‘?×6K?­r“Ø3‘åI¡6XB!tE§ª¼Å¸‚“ÖHÝèê§yn¼–8^h,¥YQWÙu›¦Öªn‹Ü!äæa§‰b½)Õ®ÚWnúÉùë¶i@ |˜†R@v½àbo«½ŽçþCzÐÝiÃj”î’½øi6”íVi‡Ì¬Þ–9’«)P…Œ3àL·ª[…äñ~­“1¨ +Q¡‰¬Û䬒]¡Pù˜‰wEi Ñ­,eÑv®ì¬T£FkË\;* ±%*ÕTëW…Æ´æ‚[+0â)#¾N³¦n­’Ö-K;ðBĘªÁTÅGlTcî¾–`Ûöþ>ÕP¿xNÅ ïãúI#âç´P=1I¸í—¶0ÿìP¸]ƒÓoÓò•“LHÊ]‹*¸,ëjy(g3Š2²zïÈ3“rZÉJÝC‡–k}khÜÚ9ȾE8Òù¥¿¿œá÷ë«ûØìMyCÎÎQ¨sû=µ—=ÔÉ­rxãúŒ|g"¨`ƒãƒ:ƒÏ:uð_uØ’“ŠáÓæƒF}jûvÛ´®É‚©ÚN­ô¶ŸJ³LwÇÅ‚ xüѳÿƒÏ½¡á â2zÞ+Z/W‹Ç3Äk÷ÓÂ?mǵ隣UøýúƒHü›¿ Ü_!d¼z=Ä .ÞU¥ó×]4µ}ÊÎW[÷$ÊðÃè,Ƨ4‰lª·ÍTDþ îýlØ;_Ö÷K5|aÁ‘ÿ½œz +endstream +endobj +4049 0 obj << +/Type /Page +/Contents 4050 0 R +/Resources 4048 0 R +/MediaBox [0 0 612 792] +/Parent 3997 0 R +/Annots [ 4027 0 R 4038 0 R 4039 0 R 4040 0 R 4058 0 R 4041 0 R 4042 0 R 4043 0 R 4044 0 R 4045 0 R ] +>> endobj +4027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 633.878 220.822 642.725] +/A << /S /GoTo /D (group__avr__errno_g5fe247e079b591a68e0fdbf7caec5b70) >> +>> endobj +4038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 621.33 231.89 630.177] +/A << /S /GoTo /D (group__avr__errno_ga1591a4f3a86360108de5b9ba34980ca) >> +>> endobj +4039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.498 390.412 451.311 401.316] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +4040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.367 336.922 478.476 347.826] +/A << /S /GoTo /D (group__avr__stdio) >> +>> endobj +4058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 324.967 222.259 335.871] +/A << /S /GoTo /D (group__avr__stdio) >> +>> endobj +4041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.521 271.477 172.132 282.381] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +4042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.66 259.522 193.424 270.426] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +4043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.712 259.522 234.36 270.426] +/A << /S /GoTo /D (group__avr__stdio_g3f0edc16dcabb5344d59d42cf7682102) >> +>> endobj +4044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 116.1 220.273 127.004] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +4045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 116.1 268.044 127.004] +/A << /S /GoTo /D (group__avr__inttypes_g5082b177b7d7b2039652c26a72b96d18) >> +>> endobj +4051 0 obj << +/D [4049 0 R /XYZ 132.768 705.06 null] +>> endobj +4052 0 obj << +/D [4049 0 R /XYZ 133.768 650.391 null] +>> endobj +637 0 obj << +/D [4049 0 R /XYZ 133.768 608.12 null] +>> endobj +4053 0 obj << +/D [4049 0 R /XYZ 133.768 583.751 null] +>> endobj +4054 0 obj << +/D [4049 0 R /XYZ 133.768 583.751 null] +>> endobj +4055 0 obj << +/D [4049 0 R /XYZ 192.747 548.621 null] +>> endobj +4056 0 obj << +/D [4049 0 R /XYZ 133.768 534.315 null] +>> endobj +4057 0 obj << +/D [4049 0 R /XYZ 189.19 499.166 null] +>> endobj +641 0 obj << +/D [4049 0 R /XYZ 133.768 482.802 null] +>> endobj +645 0 obj << +/D [4049 0 R /XYZ 133.768 456.19 null] +>> endobj +4059 0 obj << +/D [4049 0 R /XYZ 133.768 132.767 null] +>> endobj +4048 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4104 0 obj << +/Length 819 +/Filter /FlateDecode +>> +stream +xÚÅX[oÚ0~ϯ°¶—D]\_rs5MêzU«u¤¶B)14$,„þýl*‚’tH¸¼`'>>ßù¾sl¢ƒÀ pcü Ókâ™'†p0¥Ð÷à1z ƒ0&!еžÃÛÓkŒ·l‰) „£µÑweQñæCßy7HÒ¢XÍø¾Öør0ôݘþhðÅ6g–M12;iÁÇ<·lâ"3´|Çêi˜¥–ƒÌ7K˜ñ|ždéܲ1%È1Gé߸ +?.À[Ä1dÈéñøŒ@,oZý»6êS,7N@Ïøm RMTQm«ê"H<ׇ„ºŠÃ!kUß÷GÛEÈ”"Å|T.ÉØòqdwm$é-„š” ŠŠƒVëÁHJå³"ßÙ¶#´=èPlJ fŽ +v s f6WòŽ,âšY©ü,þGj¥±šÌ‡Q:ªO£¢\šñaò„‰)3½­6q Ù^C_[¸„bļ89ù&rˆY¼ò9W/£¼œdéd%gXÛp²ˆy¬Þ'#5½ðòbp׹ûsY ]ùû«WÎÕs^ªöcó…² F’Ú2f%¥âz*J —¤ãšÒ2RŸUŽIM¦v4h99[y«â0ˆˆ³{„ÂjíÙ>‚Ž'”w¡»IzS…~ÝÈÓ^£ÝNìî— _â/Õ×RK"´$ý»:ï…ûãƒ_Ë›èxøI=n¢[ô¤EôD;évѵ“±w¤j[«¾':9x­‹~Ò¬¿àÚt×Ö>Ð];ý˜’ZàÉ'ÝíûÂþv?šIò'Õüñà?’^ÿ-ÿvë ëþO¿> endobj +4046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 654.082 225.255 664.986] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +4047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 654.082 278.006 664.986] +/A << /S /GoTo /D (group__avr__inttypes_g72b6692e3f3123903c1a0d9a960c59b1) >> +>> endobj +4062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.899 585.583 213.915 596.487] +/A << /S /GoTo /D (inttypes_8h) >> +>> endobj +4063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 562.046 216.956 570.893] +/A << /S /GoTo /D (group__avr__inttypes_ge53c45f590033ad1f2f517faf3ab2f1b) >> +>> endobj +4064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 549.095 247.95 557.941] +/A << /S /GoTo /D (group__avr__inttypes_g404fd01f0b890cb8fac8641aaa704b57) >> +>> endobj +4065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 536.143 240.577 544.99] +/A << /S /GoTo /D (group__avr__inttypes_g943961b7e7e564388dd743593db5bbbb) >> +>> endobj +4066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 523.192 214.744 532.038] +/A << /S /GoTo /D (group__avr__inttypes_gdbe02b78cca747b2fe1a8f7fc5f5cd47) >> +>> endobj +4067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 510.24 245.738 519.087] +/A << /S /GoTo /D (group__avr__inttypes_g526151b1725956030b501d9dd506f2e1) >> +>> endobj +4068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 497.289 238.365 506.136] +/A << /S /GoTo /D (group__avr__inttypes_g64fb4e44c3ff09179fc445979b7fdad1) >> +>> endobj +4069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 484.338 221.937 493.184] +/A << /S /GoTo /D (group__avr__inttypes_g087e50fe0283aacc71d7138d13e91939) >> +>> endobj +4070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 471.386 252.931 480.233] +/A << /S /GoTo /D (group__avr__inttypes_ge90ab00cb4417081dc68e9fd6c0e129a) >> +>> endobj +4071 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 458.435 245.559 467.281] +/A << /S /GoTo /D (group__avr__inttypes_g58cdfb02574b8c23d964a6e88a268782) >> +>> endobj +4072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 445.483 219.726 454.33] +/A << /S /GoTo /D (group__avr__inttypes_g655e9b358e0371a4bf5ff21cc08273e3) >> +>> endobj +4073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 432.532 250.719 441.378] +/A << /S /GoTo /D (group__avr__inttypes_g96945864cb2d1f7de861ccaf639af02e) >> +>> endobj +4074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 419.58 243.347 428.427] +/A << /S /GoTo /D (group__avr__inttypes_gc273fb2a05215962fbeae76abaaf0131) >> +>> endobj +4075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 406.629 221.937 415.476] +/A << /S /GoTo /D (group__avr__inttypes_g6d94d1417e1b35c53aee6306590de72b) >> +>> endobj +4076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 393.678 252.931 402.524] +/A << /S /GoTo /D (group__avr__inttypes_gd36a6b276bd808d713cc5603ba008c58) >> +>> endobj +4077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 380.726 245.559 389.573] +/A << /S /GoTo /D (group__avr__inttypes_gef5a98227a6af5fde95353ed303cfd1e) >> +>> endobj +4078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 367.775 219.726 376.621] +/A << /S /GoTo /D (group__avr__inttypes_ge212e57631ec729f70e0cc42e51dd91e) >> +>> endobj +4079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 354.823 250.719 363.67] +/A << /S /GoTo /D (group__avr__inttypes_gd7a1bae7ca12c7b5415fae1b3f258207) >> +>> endobj +4080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 341.872 243.347 350.718] +/A << /S /GoTo /D (group__avr__inttypes_g192a69a2e6e63ed8393d306b4078d63f) >> +>> endobj +4081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 328.92 230.246 337.767] +/A << /S /GoTo /D (group__avr__inttypes_g7c8a9ccd40bd2053ca588d1b15e76a30) >> +>> endobj +4082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 315.969 228.034 324.816] +/A << /S /GoTo /D (group__avr__inttypes_gc2d52bf83b783f530f02fa2eeabe703a) >> +>> endobj +4083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 303.017 216.956 311.864] +/A << /S /GoTo /D (group__avr__inttypes_gd12493b9063f7b2630b90b7f9a7f3301) >> +>> endobj +4084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 290.066 247.95 298.913] +/A << /S /GoTo /D (group__avr__inttypes_ga5b3ca8091f4ed7d43f5eb971ce11114) >> +>> endobj +4085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 277.115 240.577 285.961] +/A << /S /GoTo /D (group__avr__inttypes_g37f93445f1795033c9ba577661da6a91) >> +>> endobj +4086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 264.163 216.956 273.01] +/A << /S /GoTo /D (group__avr__inttypes_g8673208d2d48018fcce020ef59f8ec4f) >> +>> endobj +4087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 251.212 247.95 260.058] +/A << /S /GoTo /D (group__avr__inttypes_g74cb15b101649124009c010a9055e885) >> +>> endobj +4088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 238.26 240.577 247.107] +/A << /S /GoTo /D (group__avr__inttypes_g0b0c7ad693c391e3e353e8f2d1df2ec3) >> +>> endobj +4089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 225.309 216.956 234.156] +/A << /S /GoTo /D (group__avr__inttypes_gdac1acc1d24060aeee7791a99d1a3a8c) >> +>> endobj +4090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 212.357 247.95 221.204] +/A << /S /GoTo /D (group__avr__inttypes_g45d80a42b6cd25f3ed57b0e800e6e398) >> +>> endobj +4091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 199.406 240.577 208.253] +/A << /S /GoTo /D (group__avr__inttypes_ge7e1780719eb0e4b2826a0da06255780) >> +>> endobj +4092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 186.455 219.168 195.301] +/A << /S /GoTo /D (group__avr__inttypes_g4e9b835c85ffa875e8304e2b852b4c86) >> +>> endobj +4093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 173.503 250.161 182.35] +/A << /S /GoTo /D (group__avr__inttypes_g70aa3faf72084587fb18d03aa033a212) >> +>> endobj +4094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 160.552 242.789 169.398] +/A << /S /GoTo /D (group__avr__inttypes_gb153efc9e6547ca56f42de767cde2595) >> +>> endobj +4095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 147.6 221.937 156.447] +/A << /S /GoTo /D (group__avr__inttypes_g55494a16151668ea78e0b808ef38c8c1) >> +>> endobj +4096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 134.649 252.931 143.496] +/A << /S /GoTo /D (group__avr__inttypes_g1ecbd31333b358c22423a541fffbd122) >> +>> endobj +4097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 121.697 245.559 130.544] +/A << /S /GoTo /D (group__avr__inttypes_g3eda49c829de683e701eaed3cbaf0e73) >> +>> endobj +4105 0 obj << +/D [4103 0 R /XYZ 132.768 705.06 null] +>> endobj +4106 0 obj << +/D [4103 0 R /XYZ 133.768 616.294 null] +>> endobj +4102 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4189 0 obj << +/Length 626 +/Filter /FlateDecode +>> +stream +xÚŘMoâ0†ïù{IqÇvÇhµÒ~”ªUµêBH´‡–¤4Mv)táßo¾¨ád‘2ä;žÌ3óbÆÖ™ WÆ·À¸p(ª¼ì<&•žO<åRO1„dbrN]ë!¸¹0¶cË%ÊÏFŸK‹=o’Jçà N–ËÍïè¾ñå0*•Øš~ÑøR[ƒ¾e æu²ŒfѲ¹ f`IÇÌålš&–滕™E‹·8MÞ,› ŽÉ„“û7.ãÁ2—@ØNâŒ*pÉôÕ˜< ³ÅE¢ ÓW"œÌ”åÎÉÈøe@¥&ì© +»ªº@9Hâ¹’rá–9Üs^¨úñ™Ø.€ù)ŒîxU‹yt‹Yæ°0˼^¯˜wè _é­zû¯ØŒSTkàÛ˯£ 3ú ÿ¥; `­¯ÑÁuºãÓtG`¬ÑÁuºkè¬5xƒìèÙ§‚ÏStr¡{wø­òE°Ò‘ÏTâ»Ã7I_äuä3Uùñ¬õ*ßYþcùLu¾;|“ôø¥þ.CçK‡ÇOûÿy=|…_ëáktøXãÂG߆š{EˆYhrnÝ¥*ìagÝp«B Ö€ctpîøôÝÑuÅËÕž.çÛñEëÈgÚó'âYë{¾³üCÍs¬ü·/¾£ÃSMI±%OëÊ,>½¡Ì¢ðŸ½É£=XåS)NéÀnûØURø»}l_QáU ׫(‰Ë(,;ÄiRõ_VåàG4-Nù`Ðç¢ÏürƪѳÅ]3­ºÎùä}a iÚóø©òð´©\¦ëÍ,JSþ€)þ +endstream +endobj +4188 0 obj << +/Type /Page +/Contents 4189 0 R +/Resources 4187 0 R +/MediaBox [0 0 612 792] +/Parent 3997 0 R +/Annots [ 4098 0 R 4099 0 R 4100 0 R 4101 0 R 4144 0 R 4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R 4150 0 R 4151 0 R 4152 0 R 4153 0 R 4154 0 R 4155 0 R 4156 0 R 4157 0 R 4158 0 R 4159 0 R 4160 0 R 4161 0 R 4162 0 R 4163 0 R 4164 0 R 4165 0 R 4166 0 R 4167 0 R 4168 0 R 4169 0 R 4170 0 R 4171 0 R 4172 0 R 4173 0 R 4174 0 R 4175 0 R 4176 0 R 4177 0 R 4178 0 R 4179 0 R 4180 0 R 4181 0 R 4182 0 R ] +>> endobj +4098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 656.14 221.937 664.986] +/A << /S /GoTo /D (group__avr__inttypes_g86bc00ee87e8e40787e0681fc34c576a) >> +>> endobj +4099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 643.33 252.931 652.177] +/A << /S /GoTo /D (group__avr__inttypes_ga3ba696eef7c107c76c26eea76dcb4b4) >> +>> endobj +4100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 630.521 245.559 639.368] +/A << /S /GoTo /D (group__avr__inttypes_ga82e218a186691ebf7149b36746c12e7) >> +>> endobj +4101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 617.712 221.937 626.559] +/A << /S /GoTo /D (group__avr__inttypes_g70f5e38b517f714518c970a4da37bef1) >> +>> endobj +4144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 604.903 252.931 613.75] +/A << /S /GoTo /D (group__avr__inttypes_gd00e2a12b813425800cad731f61497ae) >> +>> endobj +4145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 592.094 245.559 600.941] +/A << /S /GoTo /D (group__avr__inttypes_g6f66e34285ab57a86aeb2f0f4895417d) >> +>> endobj +4146 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 579.285 224.149 588.132] +/A << /S /GoTo /D (group__avr__inttypes_g570ca9af5087023f75fc8a1a602d26ab) >> +>> endobj +4147 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 566.476 255.143 575.322] +/A << /S /GoTo /D (group__avr__inttypes_gfa4303b077ae4c6c58686178e4b90d18) >> +>> endobj +4148 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 553.667 247.77 562.513] +/A << /S /GoTo /D (group__avr__inttypes_g785eabe6337a2fa85874ae99300abb66) >> +>> endobj +4149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 540.858 221.937 549.704] +/A << /S /GoTo /D (group__avr__inttypes_g7276f64276fd7223ca6f4cca0444239a) >> +>> endobj +4150 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 528.048 252.931 536.895] +/A << /S /GoTo /D (group__avr__inttypes_g1e5c50a1ca71da7ff8c4f3f007411be8) >> +>> endobj +4151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 515.239 245.559 524.086] +/A << /S /GoTo /D (group__avr__inttypes_g6ac7e3111d008785ddf3b29dcd088732) >> +>> endobj +4152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 502.43 221.937 511.277] +/A << /S /GoTo /D (group__avr__inttypes_gaf2af4a10f0bd308e9c349c8382382be) >> +>> endobj +4153 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 489.621 252.931 498.468] +/A << /S /GoTo /D (group__avr__inttypes_gab353a2898377162c1829f1a9708352e) >> +>> endobj +4154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 476.812 245.559 485.659] +/A << /S /GoTo /D (group__avr__inttypes_gccc383115328197264988682edfcb72c) >> +>> endobj +4155 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 464.003 221.937 472.85] +/A << /S /GoTo /D (group__avr__inttypes_g80ca66bcc9e366733f02c90ed4b0838c) >> +>> endobj +4156 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 451.194 252.931 460.04] +/A << /S /GoTo /D (group__avr__inttypes_g1d766603a3524c9e03effbbece9c2118) >> +>> endobj +4157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 438.385 245.559 447.231] +/A << /S /GoTo /D (group__avr__inttypes_g22caa684d44725e1e6e638983380f68e) >> +>> endobj +4158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 425.576 224.149 434.422] +/A << /S /GoTo /D (group__avr__inttypes_g32b0c8a04aae5d4454d15e6cbe109f64) >> +>> endobj +4159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 412.766 255.143 421.613] +/A << /S /GoTo /D (group__avr__inttypes_gaf100a10f9cd73d46294fd0e8db5246d) >> +>> endobj +4160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 399.957 247.77 408.804] +/A << /S /GoTo /D (group__avr__inttypes_gce7057a6fa96ac7e2a05946ee96cf2d9) >> +>> endobj +4161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 387.148 230.246 395.995] +/A << /S /GoTo /D (group__avr__inttypes_g1468793ce960b477922ef92b36a6c802) >> +>> endobj +4162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 374.339 230.246 383.186] +/A << /S /GoTo /D (group__avr__inttypes_ga1ca3a85113e897b5cf7ed6b92d74de2) >> +>> endobj +4163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 361.53 230.246 370.377] +/A << /S /GoTo /D (group__avr__inttypes_g9c3c25e6145e629e4c9fabddc6061c30) >> +>> endobj +4164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 348.721 232.458 357.568] +/A << /S /GoTo /D (group__avr__inttypes_g65d9856517198cfc21558c0d6df64207) >> +>> endobj +4165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 335.912 225.813 344.758] +/A << /S /GoTo /D (group__avr__inttypes_g35974d44b5dcebcb222b8e2c1384241d) >> +>> endobj +4166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 323.103 256.807 331.949] +/A << /S /GoTo /D (group__avr__inttypes_g10db5de9c84ccfa6dc0e487dd72051f3) >> +>> endobj +4167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 310.294 249.434 319.14] +/A << /S /GoTo /D (group__avr__inttypes_g09c9f36f654aa50a548d7820421cdc57) >> +>> endobj +4168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 297.485 223.601 306.331] +/A << /S /GoTo /D (group__avr__inttypes_g7b8508989273ad152f9b3b7cd4db6eee) >> +>> endobj +4169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 284.675 254.595 293.522] +/A << /S /GoTo /D (group__avr__inttypes_g14ec2649667b53ff91a1103c02975837) >> +>> endobj +4170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 271.866 247.222 280.713] +/A << /S /GoTo /D (group__avr__inttypes_gad333b5bea32321b312a3b4967ff357f) >> +>> endobj +4171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 259.057 225.813 267.904] +/A << /S /GoTo /D (group__avr__inttypes_g2b7ab77ff6ede9c3c285b714496f77e2) >> +>> endobj +4172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 246.248 256.807 255.095] +/A << /S /GoTo /D (group__avr__inttypes_ge36c293972a5b770349d74f2c0cfa52f) >> +>> endobj +4173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 233.439 249.434 242.286] +/A << /S /GoTo /D (group__avr__inttypes_gdd733be35bef9dcef225edc99ade9e33) >> +>> endobj +4174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 220.63 223.601 229.477] +/A << /S /GoTo /D (group__avr__inttypes_g52cfc41a1e5ad73788faebbfeb9c14b0) >> +>> endobj +4175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 207.821 254.595 216.667] +/A << /S /GoTo /D (group__avr__inttypes_g39be8ffb41be80bc951e955f111e4121) >> +>> endobj +4176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 195.012 247.222 203.858] +/A << /S /GoTo /D (group__avr__inttypes_g4739f89fa519cd77097677bf33320091) >> +>> endobj +4177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 182.203 234.122 191.049] +/A << /S /GoTo /D (group__avr__inttypes_gbf657ee6bd4b009b5b072840a3d7364f) >> +>> endobj +4178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 169.393 231.91 178.24] +/A << /S /GoTo /D (group__avr__inttypes_g9c632ab51b24b93cc315b27a883be9eb) >> +>> endobj +4179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 156.584 225.813 165.431] +/A << /S /GoTo /D (group__avr__inttypes_g9bc6b517c0117327e832824ff2d6a6b5) >> +>> endobj +4180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 143.775 256.807 152.622] +/A << /S /GoTo /D (group__avr__inttypes_g5b05c70b4807922992a9ca529361b44d) >> +>> endobj +4181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 130.966 249.434 139.813] +/A << /S /GoTo /D (group__avr__inttypes_g021e130b06fc46198c71dca0fdf89788) >> +>> endobj +4182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 118.157 225.813 127.004] +/A << /S /GoTo /D (group__avr__inttypes_g37bbde0e3f124b7f482d54adb13b0248) >> +>> endobj +4190 0 obj << +/D [4188 0 R /XYZ 132.768 705.06 null] +>> endobj +4187 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4249 0 obj << +/Length 675 +/Filter /FlateDecode +>> +stream +xÚÅW_o›0çSXÙ <àžm08š&mkSµš¦.å­­ª48i¤:ùö3`Ò$‚¦QCûŸï÷'Çå hŠ?ãd@9XpõLa {ÜG\¸˜ ‚‚ݘ”b׺ .O„lÄR3á«DeÐ×*b+›‡=g0‹Òtõ$—ø±!—C°'Xú­%—¨ú–͘Q*§2±lê‚Xžc*€êiG–æ³¥Âd²œÅÑÒ² £à˜„•jŒ³Àøk•ÙN°ÆÍ Pm^"(…þ+Cˆ9*”çèÚøc€v¶\…MW]À<Ä]SæVn)­xÔçÐí˜_By @#©7 vÉTÓ–a…À럿³_g߯Âw³Û½¬·ý5 ›P,\r4ôAaøáè±ä-Ày×Êó×|ï}ïy׾nj6Ï㮥ǥñ‡ÂOxíü§µ!wþ²e¯ZÿqÍæÓämÈ¿où«Ö\¿ù4â«`Ø]lí6ÁãW^;xÖ~¼Ÿ¾\ÿûíLI6áØaÙŒb"œ—ù S5þ€?­±ËD§ñ8[È(¥jB*ò¨ƒ™šµ6Îb¢O¿P/_ /BÅ£*„°§ mŽ>…%æT=¡Ï£yuâ)Q3á¤ZOâd1J×ëj¡¶ ¿OtB“µÆ–ªxu¹vB“Ñh²vš~—^úptÚ9,zþèìý¤ÝGË}ànÑv÷Ó~c%8ï彧$¶yóý¼ßTïf­kdÝp/IÂÇ;äŠT_49ó7/š¾ÀŒk/Îe$“Q*Ê–jHÕÅî1ÓÍJŽ«…S}èSÖ'Ú + W‹ºf-nT<<'óL{>{ÐVuÿËWSíJþûx— +endstream +endobj +4248 0 obj << +/Type /Page +/Contents 4249 0 R +/Resources 4247 0 R +/MediaBox [0 0 612 792] +/Parent 4257 0 R +/Annots [ 4183 0 R 4184 0 R 4185 0 R 4186 0 R 4234 0 R 4235 0 R 4236 0 R 4237 0 R 4238 0 R 4239 0 R 4240 0 R 4241 0 R 4242 0 R 4243 0 R 4244 0 R 4245 0 R 4246 0 R ] +>> endobj +4183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 656.14 256.807 664.986] +/A << /S /GoTo /D (group__avr__inttypes_g7a78b92618044bb2d798b57fc6a2e439) >> +>> endobj +4184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 643.188 249.434 652.035] +/A << /S /GoTo /D (group__avr__inttypes_g7cf58abc57bb03d809e6fc41c2a40c33) >> +>> endobj +4185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 630.237 225.813 639.083] +/A << /S /GoTo /D (group__avr__inttypes_g12dbc2ac6a36b893ef1c25c357f90a9f) >> +>> endobj +4186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 617.285 256.807 626.132] +/A << /S /GoTo /D (group__avr__inttypes_g24647dd309d4138846376a51a6098304) >> +>> endobj +4234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 604.334 249.434 613.18] +/A << /S /GoTo /D (group__avr__inttypes_g8b67140c216180e4e5d18003038ee689) >> +>> endobj +4235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 591.382 225.813 600.229] +/A << /S /GoTo /D (group__avr__inttypes_gb561c947d62a3c7cd396d4aeef553f3c) >> +>> endobj +4236 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 578.431 256.807 587.278] +/A << /S /GoTo /D (group__avr__inttypes_g6b324310e03b8ecbe6888a52b7d8581d) >> +>> endobj +4237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 565.48 249.434 574.326] +/A << /S /GoTo /D (group__avr__inttypes_ge40f8b90cb75998e70910e7b377288a8) >> +>> endobj +4238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 552.528 225.813 561.375] +/A << /S /GoTo /D (group__avr__inttypes_gbd19a83130f8d1bd2f77b765ad804f75) >> +>> endobj +4239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 539.577 256.807 548.423] +/A << /S /GoTo /D (group__avr__inttypes_ge30d5cc7dbc15051e21b72229a2487f7) >> +>> endobj +4240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 526.625 249.434 535.472] +/A << /S /GoTo /D (group__avr__inttypes_g4ce14b7ebee0cfd5c4c935cf79a9a504) >> +>> endobj +4241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 513.674 225.813 522.52] +/A << /S /GoTo /D (group__avr__inttypes_g4c5370556f793ac7b2c3abe896dba8e2) >> +>> endobj +4242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 500.722 256.807 509.569] +/A << /S /GoTo /D (group__avr__inttypes_gbd82b99090a28a84541959ac7ab14ad9) >> +>> endobj +4243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 487.771 249.434 496.618] +/A << /S /GoTo /D (group__avr__inttypes_gc45f394be3c199938a85a631711ce22e) >> +>> endobj +4244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 474.82 234.122 483.666] +/A << /S /GoTo /D (group__avr__inttypes_g4a30d36e06018d8e13046079098905a0) >> +>> endobj +4245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 461.868 234.122 470.715] +/A << /S /GoTo /D (group__avr__inttypes_gb7dbf5d0ea41679dface5855896e4273) >> +>> endobj +4246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 448.917 234.122 457.763] +/A << /S /GoTo /D (group__avr__inttypes_ga58d290d968643862aec7a8a56e1c8e9) >> +>> endobj +4250 0 obj << +/D [4248 0 R /XYZ 132.768 705.06 null] +>> endobj +649 0 obj << +/D [4248 0 R /XYZ 133.768 435.343 null] +>> endobj +4115 0 obj << +/D [4248 0 R /XYZ 133.768 410.974 null] +>> endobj +4251 0 obj << +/D [4248 0 R /XYZ 133.768 410.974 null] +>> endobj +4121 0 obj << +/D [4248 0 R /XYZ 266.31 375.844 null] +>> endobj +4252 0 obj << +/D [4248 0 R /XYZ 133.768 359.117 null] +>> endobj +4109 0 obj << +/D [4248 0 R /XYZ 266.31 326.025 null] +>> endobj +4253 0 obj << +/D [4248 0 R /XYZ 133.768 309.298 null] +>> endobj +4117 0 obj << +/D [4248 0 R /XYZ 261.328 276.206 null] +>> endobj +4254 0 obj << +/D [4248 0 R /XYZ 133.768 259.479 null] +>> endobj +4123 0 obj << +/D [4248 0 R /XYZ 285.577 226.387 null] +>> endobj +4255 0 obj << +/D [4248 0 R /XYZ 133.768 209.66 null] +>> endobj +4111 0 obj << +/D [4248 0 R /XYZ 285.577 176.568 null] +>> endobj +4256 0 obj << +/D [4248 0 R /XYZ 133.768 159.841 null] +>> endobj +4116 0 obj << +/D [4248 0 R /XYZ 280.596 126.749 null] +>> endobj +4247 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4277 0 obj << +/Length 537 +/Filter /FlateDecode +>> +stream +xÚ½–AoÚ0ÇïùVw±¸ïÙ‰£iÒ¦•ªÕ]›[W!J …¬ß¾‡Í!=å9yùûç^ü dJ€\ß’àr 1Ü(wI&¥äZÅD™ˆ+ƒ$IÉ#‚Gì)¹½ ä +Í¥‰Ð6é³Ï8RÓ\‡uB–—åziWüå„Vˆ\¹KýÒ ev }Ö“ô&/íÔ¬'"  Ó!uøÑx‘³è+si¶Xe‹|Åz(„¥ÚèWIð;@' ŽÜ@DÆóàñ HêÞØ.ôï6uNdèRqóâŒ<?8ïf¤¹ÑÞM.¸v8@?¥ö€È+î»û›ôÇÕׇ•¿q‘^TnÀ2j®Dè5S;Î棙cY8«'>ž,Šù¨¬c¸ÇÙ­JTÃò„ÕN\ +Žæ8>,E<ëXŠÄæ qܽÃq \„fÞ»ä~?@Õï²,Ú°b#kVWnö_ÝÌ–aDëßø=¬­êE3ê¾f;cmU±(›Yã®]mU«a3耠‡;XgÄÃÉf{o»‘atžý +£†oW!ê<|üa¾·*™æŽ—w¼î¸º^ݸOL̵ls صÅ–ñaû —ª2ãÚ涕6õPî”â//|ðÝŽ}ú B_È>VŸTTÑ„‰ˆî–6Ú ^ &5íͲçJáy]I.þ­§6ÿÉoÈÊu +endstream +endobj +4276 0 obj << +/Type /Page +/Contents 4277 0 R +/Resources 4275 0 R +/MediaBox [0 0 612 792] +/Parent 4257 0 R +>> endobj +4278 0 obj << +/D [4276 0 R /XYZ 132.768 705.06 null] +>> endobj +4279 0 obj << +/D [4276 0 R /XYZ 133.768 667.198 null] +>> endobj +4122 0 obj << +/D [4276 0 R /XYZ 289.552 639.611 null] +>> endobj +4280 0 obj << +/D [4276 0 R /XYZ 133.768 622.884 null] +>> endobj +4110 0 obj << +/D [4276 0 R /XYZ 289.552 589.792 null] +>> endobj +4281 0 obj << +/D [4276 0 R /XYZ 133.768 573.065 null] +>> endobj +4127 0 obj << +/D [4276 0 R /XYZ 284.571 539.973 null] +>> endobj +4282 0 obj << +/D [4276 0 R /XYZ 133.768 523.246 null] +>> endobj +4118 0 obj << +/D [4276 0 R /XYZ 267.415 490.154 null] +>> endobj +4283 0 obj << +/D [4276 0 R /XYZ 133.768 473.427 null] +>> endobj +4124 0 obj << +/D [4276 0 R /XYZ 262.285 440.335 null] +>> endobj +4284 0 obj << +/D [4276 0 R /XYZ 133.768 423.608 null] +>> endobj +4112 0 obj << +/D [4276 0 R /XYZ 262.285 390.516 null] +>> endobj +4285 0 obj << +/D [4276 0 R /XYZ 133.768 373.789 null] +>> endobj +4120 0 obj << +/D [4276 0 R /XYZ 257.304 340.697 null] +>> endobj +4286 0 obj << +/D [4276 0 R /XYZ 133.768 323.97 null] +>> endobj +4126 0 obj << +/D [4276 0 R /XYZ 281.553 290.878 null] +>> endobj +4287 0 obj << +/D [4276 0 R /XYZ 133.768 274.151 null] +>> endobj +4114 0 obj << +/D [4276 0 R /XYZ 281.553 241.059 null] +>> endobj +4288 0 obj << +/D [4276 0 R /XYZ 133.768 224.332 null] +>> endobj +4119 0 obj << +/D [4276 0 R /XYZ 276.571 191.24 null] +>> endobj +4289 0 obj << +/D [4276 0 R /XYZ 133.768 174.513 null] +>> endobj +4125 0 obj << +/D [4276 0 R /XYZ 285.527 141.421 null] +>> endobj +4275 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4292 0 obj << +/Length 539 +/Filter /FlateDecode +>> +stream +xÚ½–Ïo›0ÇïüVw±qŸm𨚴iMÕj‡®åÖUQš8)ŒÐnùïç`BÒ*(å@O<ãÇãã/_ü h]ßãà|Ä%2ÔHw‰çˆ A•ÔHšˆJÃPãM5EUØ$$YYnVvMŸÔ +UFìR¿¶Ô2»„!ø:+íÂdÀ#À1Q!v/ð£iž‘ð+qi¶X'y¶&&8„˜ µ­\ÆÁŸ€¹’€ØÁÂ5¡é2xx4s“7ª…þ­R—H„.•mLÑ}ð+€ÓjFŠríÕ¤œ2íx™Ùß<«ÁoﮓŸ—ßîcÁý³49«õ€ƒÚ€LQÉÃF]KX„9V…»5÷ñ> endobj +4293 0 obj << +/D [4291 0 R /XYZ 132.768 705.06 null] +>> endobj +4294 0 obj << +/D [4291 0 R /XYZ 133.768 667.198 null] +>> endobj +4113 0 obj << +/D [4291 0 R /XYZ 285.527 639.611 null] +>> endobj +4295 0 obj << +/D [4291 0 R /XYZ 133.768 622.884 null] +>> endobj +4128 0 obj << +/D [4291 0 R /XYZ 280.546 589.792 null] +>> endobj +4296 0 obj << +/D [4291 0 R /XYZ 133.768 573.065 null] +>> endobj +4141 0 obj << +/D [4291 0 R /XYZ 263.391 539.973 null] +>> endobj +4297 0 obj << +/D [4291 0 R /XYZ 133.768 523.246 null] +>> endobj +4200 0 obj << +/D [4291 0 R /XYZ 259.117 490.154 null] +>> endobj +4298 0 obj << +/D [4291 0 R /XYZ 133.768 473.427 null] +>> endobj +4129 0 obj << +/D [4291 0 R /XYZ 259.117 440.335 null] +>> endobj +4299 0 obj << +/D [4291 0 R /XYZ 133.768 423.608 null] +>> endobj +4143 0 obj << +/D [4291 0 R /XYZ 254.136 390.516 null] +>> endobj +4300 0 obj << +/D [4291 0 R /XYZ 133.768 373.789 null] +>> endobj +4202 0 obj << +/D [4291 0 R /XYZ 278.384 340.697 null] +>> endobj +4301 0 obj << +/D [4291 0 R /XYZ 133.768 323.97 null] +>> endobj +4131 0 obj << +/D [4291 0 R /XYZ 278.384 290.878 null] +>> endobj +4302 0 obj << +/D [4291 0 R /XYZ 133.768 274.151 null] +>> endobj +4142 0 obj << +/D [4291 0 R /XYZ 273.403 241.059 null] +>> endobj +4303 0 obj << +/D [4291 0 R /XYZ 133.768 224.332 null] +>> endobj +4201 0 obj << +/D [4291 0 R /XYZ 282.359 191.24 null] +>> endobj +4304 0 obj << +/D [4291 0 R /XYZ 133.768 174.513 null] +>> endobj +4130 0 obj << +/D [4291 0 R /XYZ 282.359 141.421 null] +>> endobj +4290 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4307 0 obj << +/Length 536 +/Filter /FlateDecode +>> +stream +xÚ½–Qo›0…ßùVû¸×6`;š&mZSµÚC×òÖUQ +&D #¤[þý &i:QK£O\Ë'‡Ï'×6€Еó5v.¦4BËH?â Æ0Šdˆ#IPœ¢—RzñÍÅ”#-å˜I¡ZÑ'£xãÆ1‚eQ×»µÚàç^Á\²½ôs—Ü &žÏ¸×E­ªò|‚{> endobj +4308 0 obj << +/D [4306 0 R /XYZ 132.768 705.06 null] +>> endobj +4309 0 obj << +/D [4306 0 R /XYZ 133.768 667.198 null] +>> endobj +4212 0 obj << +/D [4306 0 R /XYZ 277.378 639.611 null] +>> endobj +4310 0 obj << +/D [4306 0 R /XYZ 133.768 622.884 null] +>> endobj +4191 0 obj << +/D [4306 0 R /XYZ 260.223 589.792 null] +>> endobj +4311 0 obj << +/D [4306 0 R /XYZ 133.768 573.065 null] +>> endobj +4203 0 obj << +/D [4306 0 R /XYZ 271.291 539.973 null] +>> endobj +4312 0 obj << +/D [4306 0 R /XYZ 133.768 523.246 null] +>> endobj +4132 0 obj << +/D [4306 0 R /XYZ 271.291 490.154 null] +>> endobj +4313 0 obj << +/D [4306 0 R /XYZ 133.768 473.427 null] +>> endobj +4193 0 obj << +/D [4306 0 R /XYZ 266.31 440.335 null] +>> endobj +4314 0 obj << +/D [4306 0 R /XYZ 133.768 423.608 null] +>> endobj +4205 0 obj << +/D [4306 0 R /XYZ 290.559 390.516 null] +>> endobj +4315 0 obj << +/D [4306 0 R /XYZ 133.768 373.789 null] +>> endobj +4134 0 obj << +/D [4306 0 R /XYZ 290.559 340.697 null] +>> endobj +4316 0 obj << +/D [4306 0 R /XYZ 133.768 323.97 null] +>> endobj +4192 0 obj << +/D [4306 0 R /XYZ 285.577 290.878 null] +>> endobj +4317 0 obj << +/D [4306 0 R /XYZ 133.768 274.151 null] +>> endobj +4204 0 obj << +/D [4306 0 R /XYZ 294.533 241.059 null] +>> endobj +4318 0 obj << +/D [4306 0 R /XYZ 133.768 224.332 null] +>> endobj +4133 0 obj << +/D [4306 0 R /XYZ 294.533 191.24 null] +>> endobj +4319 0 obj << +/D [4306 0 R /XYZ 133.768 174.513 null] +>> endobj +4213 0 obj << +/D [4306 0 R /XYZ 289.552 141.421 null] +>> endobj +4305 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4322 0 obj << +/Length 541 +/Filter /FlateDecode +>> +stream +xÚÅ–]oÚ0†ïó+¬öƾÀ=þˆ£iÒ¦ª½êÚ\Tj«* æC‚ÀBèàß×àXKÄ2©p•cåøÍs^äê#@—Á÷8¸èp… 5Ê=âbBP­"¤LH•a(î¢Ì9 ÉS|}Ñal'—k*Lä„ÖI_|Æ_jšjY% ³¢XNíŒöhIFµ›Ô¯5Zf“Ð&-Á_e…íÛœ´x8&Zb÷?J'‘€_‰K³ùl8Éf¤Å‰™0+ýàgü˜“Äv +gÔ@ˆÒqðð¨ë^^#Xúg:FBºT¶š8BwÁ¯»jÊE¸u“r*Áñ>ïÚGž•à7·Wó›øv;`ªtv”µ˜¦ŠK¯ÙµépœŒü¤iî¬îù¸7ÉÇIQÅ>˜»÷Ó".öØ섧̼ƒeµ°÷ŽoŸÝŸO§6O“Y9` ñ"iÎÏT|^‹¿¨ðÿ€,^Qo·à%ïè¨~ Þ„_Öû½åÿ\Û‡õ†G§ØÞQxUïvt”Í݈V×[Ý!ð·»ø4WÊsoõ³Hf ÏjTïþ‡z>wþ³sxANtéT5:Ì!^‘cÝB*¨º…½Ý‡‰¨MzMÏ¡¨Ñ"Úí9"C…*¹´™Í“Âv=˜k|Ç4˜ûà‡M} ýƒA›‹6+/PF=ÂC¼)/Y ^s"4n†/¥Â˲”œ,–}›½/ù 3îš© +endstream +endobj +4321 0 obj << +/Type /Page +/Contents 4322 0 R +/Resources 4320 0 R +/MediaBox [0 0 612 792] +/Parent 4257 0 R +>> endobj +4323 0 obj << +/D [4321 0 R /XYZ 132.768 705.06 null] +>> endobj +4324 0 obj << +/D [4321 0 R /XYZ 133.768 667.198 null] +>> endobj +4197 0 obj << +/D [4321 0 R /XYZ 272.397 639.611 null] +>> endobj +4325 0 obj << +/D [4321 0 R /XYZ 133.768 622.884 null] +>> endobj +4194 0 obj << +/D [4321 0 R /XYZ 332.272 589.792 null] +>> endobj +4326 0 obj << +/D [4321 0 R /XYZ 133.768 573.065 null] +>> endobj +4209 0 obj << +/D [4321 0 R /XYZ 289.951 539.973 null] +>> endobj +4327 0 obj << +/D [4321 0 R /XYZ 133.768 523.246 null] +>> endobj +4206 0 obj << +/D [4321 0 R /XYZ 332.272 490.154 null] +>> endobj +4328 0 obj << +/D [4321 0 R /XYZ 133.768 473.427 null] +>> endobj +4138 0 obj << +/D [4321 0 R /XYZ 289.951 440.335 null] +>> endobj +4329 0 obj << +/D [4321 0 R /XYZ 133.768 423.608 null] +>> endobj +4135 0 obj << +/D [4321 0 R /XYZ 327.291 390.516 null] +>> endobj +4330 0 obj << +/D [4321 0 R /XYZ 133.768 373.789 null] +>> endobj +4199 0 obj << +/D [4321 0 R /XYZ 284.97 340.697 null] +>> endobj +4331 0 obj << +/D [4321 0 R /XYZ 133.768 323.97 null] +>> endobj +4196 0 obj << +/D [4321 0 R /XYZ 351.539 290.878 null] +>> endobj +4332 0 obj << +/D [4321 0 R /XYZ 133.768 274.151 null] +>> endobj +4211 0 obj << +/D [4321 0 R /XYZ 309.219 241.059 null] +>> endobj +4333 0 obj << +/D [4321 0 R /XYZ 133.768 224.332 null] +>> endobj +4208 0 obj << +/D [4321 0 R /XYZ 351.539 191.24 null] +>> endobj +4334 0 obj << +/D [4321 0 R /XYZ 133.768 174.513 null] +>> endobj +4140 0 obj << +/D [4321 0 R /XYZ 309.219 141.421 null] +>> endobj +4320 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4337 0 obj << +/Length 565 +/Filter /FlateDecode +>> +stream +xÚÅVÛn£0}ç+¬öÅ<ÄÛ`ãhµÒ^šªÕjÕmx¨Ô­* +ÎEJHH›üý:1¹*4a¥McçÌaÌê"@7Î×йj1QϢœ)$”O„¢(LÐfŒøîsxwÕ¢t#—IÂU`€IŸlÆš$Ò[%ôÓ¢˜uNz{°àЕ6/°«x”ºà7פé,ïÒÜmPÎÀÃÔƒ9¾s:j Ñ á”(ðQ> endobj +4338 0 obj << +/D [4336 0 R /XYZ 132.768 705.06 null] +>> endobj +4339 0 obj << +/D [4336 0 R /XYZ 133.768 667.198 null] +>> endobj +4137 0 obj << +/D [4336 0 R /XYZ 346.558 639.611 null] +>> endobj +4340 0 obj << +/D [4336 0 R /XYZ 133.768 622.884 null] +>> endobj +4198 0 obj << +/D [4336 0 R /XYZ 304.237 589.792 null] +>> endobj +4341 0 obj << +/D [4336 0 R /XYZ 133.768 573.065 null] +>> endobj +4195 0 obj << +/D [4336 0 R /XYZ 355.514 539.973 null] +>> endobj +4342 0 obj << +/D [4336 0 R /XYZ 133.768 523.246 null] +>> endobj +4210 0 obj << +/D [4336 0 R /XYZ 313.193 490.154 null] +>> endobj +4343 0 obj << +/D [4336 0 R /XYZ 133.768 473.427 null] +>> endobj +4207 0 obj << +/D [4336 0 R /XYZ 355.514 440.335 null] +>> endobj +4344 0 obj << +/D [4336 0 R /XYZ 133.768 423.608 null] +>> endobj +4139 0 obj << +/D [4336 0 R /XYZ 313.193 390.516 null] +>> endobj +4345 0 obj << +/D [4336 0 R /XYZ 133.768 373.789 null] +>> endobj +4136 0 obj << +/D [4336 0 R /XYZ 350.533 340.697 null] +>> endobj +4346 0 obj << +/D [4336 0 R /XYZ 133.768 323.97 null] +>> endobj +4215 0 obj << +/D [4336 0 R /XYZ 308.212 290.878 null] +>> endobj +4347 0 obj << +/D [4336 0 R /XYZ 133.768 274.151 null] +>> endobj +4214 0 obj << +/D [4336 0 R /XYZ 333.378 241.059 null] +>> endobj +4348 0 obj << +/D [4336 0 R /XYZ 133.768 224.332 null] +>> endobj +4216 0 obj << +/D [4336 0 R /XYZ 291.057 191.24 null] +>> endobj +4349 0 obj << +/D [4336 0 R /XYZ 133.768 174.513 null] +>> endobj +4222 0 obj << +/D [4336 0 R /XYZ 265.194 141.421 null] +>> endobj +4335 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4352 0 obj << +/Length 542 +/Filter /FlateDecode +>> +stream +xÚ½–]o›0†ïùVwc_àÛ`ãhš´¦Z5MÛÂ]WUœ)!aÝòïgbB’.(¥»âX¿<çÅ:>€fÐ¥÷.öÎÇ\"Mµ´xŠ˜TÉIR©Š3t9§!¹‰¯ÎÇŒíårE…Ž¬Ð&éµË8PSTmB^TÕúÁ¬èý­€Q¥Å6õM‡–Þ&Œˆ/àEef¦$>ÇDØ~À­ÒeAÀĦ™r•/‹ñ™à`°Zß»ˆ½³’€Ø^áŒjQºð®oeöå‚M¡¿6© $›Êês4ñ¾zpÚÍPQ.›”SÉ-àW™ùÀ‹|òþs&¸‹ÏæÙYcìÉò™²ÌLš/’¹Û²J“bêÂé²\$U»ÀþÁo«#[UÁ)ÓO0E7æ˜hÀo'1“ î´·Óú&«ŠÉ>ØÁiìa]n¹ûÙvsºÜë¹ém´<<°Ëâ~«nâ/ñ·ÝÂZýÏyª²jÔ‰š·!†­3S˜2O}K` qÛ4ŸÜï8ènâÝI¹×yPÐüW‡šüeÝN±Ó%ü?÷_ÖùT÷}˜v¾Áùº`{½tD•è3,l‡IµÑþi*dãÉeŸT&sPv–q#ÎýO|0© ÷`0âbÄ"·âM4%<ÄÛÒ’zñX¡°?Ïï…»u#¹ü½¶®=-ù’¸­ +endstream +endobj +4351 0 obj << +/Type /Page +/Contents 4352 0 R +/Resources 4350 0 R +/MediaBox [0 0 612 792] +/Parent 4365 0 R +>> endobj +4353 0 obj << +/D [4351 0 R /XYZ 132.768 705.06 null] +>> endobj +4354 0 obj << +/D [4351 0 R /XYZ 133.768 667.198 null] +>> endobj +4218 0 obj << +/D [4351 0 R /XYZ 265.194 639.611 null] +>> endobj +4355 0 obj << +/D [4351 0 R /XYZ 133.768 623.86 null] +>> endobj +4224 0 obj << +/D [4351 0 R /XYZ 284.461 589.792 null] +>> endobj +4356 0 obj << +/D [4351 0 R /XYZ 133.768 574.041 null] +>> endobj +4217 0 obj << +/D [4351 0 R /XYZ 284.461 539.973 null] +>> endobj +4357 0 obj << +/D [4351 0 R /XYZ 133.768 524.222 null] +>> endobj +4223 0 obj << +/D [4351 0 R /XYZ 288.436 490.154 null] +>> endobj +4358 0 obj << +/D [4351 0 R /XYZ 133.768 474.403 null] +>> endobj +4228 0 obj << +/D [4351 0 R /XYZ 288.436 440.335 null] +>> endobj +4359 0 obj << +/D [4351 0 R /XYZ 133.768 424.584 null] +>> endobj +4219 0 obj << +/D [4351 0 R /XYZ 266.3 390.516 null] +>> endobj +4360 0 obj << +/D [4351 0 R /XYZ 133.768 373.789 null] +>> endobj +4225 0 obj << +/D [4351 0 R /XYZ 293.807 340.697 null] +>> endobj +4361 0 obj << +/D [4351 0 R /XYZ 133.768 323.97 null] +>> endobj +4221 0 obj << +/D [4351 0 R /XYZ 293.807 290.878 null] +>> endobj +4362 0 obj << +/D [4351 0 R /XYZ 133.768 274.151 null] +>> endobj +4227 0 obj << +/D [4351 0 R /XYZ 313.074 241.059 null] +>> endobj +4363 0 obj << +/D [4351 0 R /XYZ 133.768 224.332 null] +>> endobj +4220 0 obj << +/D [4351 0 R /XYZ 313.074 191.24 null] +>> endobj +4364 0 obj << +/D [4351 0 R /XYZ 133.768 174.513 null] +>> endobj +4226 0 obj << +/D [4351 0 R /XYZ 317.049 141.421 null] +>> endobj +4350 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4368 0 obj << +/Length 559 +/Filter /FlateDecode +>> +stream +xÚµ–Mo›@†ïüŠUzalfwa?¬ªR?â¨QUµ5·4²^;H6¤§ñ¿ïšÅØŒlœ˜…áå™—e@ èÖû{×c&&ZØCõC‡–Þ'ŒpÀ)ø_óÊ,L‰cúön•9ÁÁ6Í”ë¬È×8 œAèÓíô½›ØûãQ+ ˆN‰†¥+ïþÐÌ^¼CPú·N]!ÚTº»q‰&ÞOλIÂxtp“0"¹åÿÝÌü`y>ùü=ûvóqsæN\-³«Æ8ÒPI êÂä¦ÌÒÀºl0üÖ–ušäs΋r•Tmì{Ãti’uÅÙ´:á»}g„ê7ôa7ýø×aAÅ°ìÏUÙ;êÄ.,©ó»¸Àî"­’åeKIEHÑ yØPöÛ²›rŒ5øv iét¾û´í¾íç­:O=¨Ç-v?³u7vÝ,uºn½lVp†wXû÷3E»ûYqI?ë‰Û¯…)ÖIºiwÁæSg&ÍVƒ51Õ=Þ6‡—?çþÅ·ƒùä ×ÊŽà>c~?ÞÑ’«ãñ®4á¢)ÿv7Ë’ÊÌý q?'O|1© Bw 0b|D•[1€&šcùûª’Ýâ¥Ä\úÁ2{l·dñºµ#ômÉÿZm +endstream +endobj +4367 0 obj << +/Type /Page +/Contents 4368 0 R +/Resources 4366 0 R +/MediaBox [0 0 612 792] +/Parent 4365 0 R +>> endobj +4369 0 obj << +/D [4367 0 R /XYZ 132.768 705.06 null] +>> endobj +4370 0 obj << +/D [4367 0 R /XYZ 133.768 667.198 null] +>> endobj +4229 0 obj << +/D [4367 0 R /XYZ 317.049 639.611 null] +>> endobj +4371 0 obj << +/D [4367 0 R /XYZ 133.768 622.884 null] +>> endobj +4230 0 obj << +/D [4367 0 R /XYZ 294.912 589.792 null] +>> endobj +4372 0 obj << +/D [4367 0 R /XYZ 133.768 573.065 null] +>> endobj +4263 0 obj << +/D [4367 0 R /XYZ 258.001 539.973 null] +>> endobj +4373 0 obj << +/D [4367 0 R /XYZ 133.768 524.222 null] +>> endobj +4232 0 obj << +/D [4367 0 R /XYZ 258.001 490.154 null] +>> endobj +4374 0 obj << +/D [4367 0 R /XYZ 133.768 474.403 null] +>> endobj +4265 0 obj << +/D [4367 0 R /XYZ 277.269 440.335 null] +>> endobj +4375 0 obj << +/D [4367 0 R /XYZ 133.768 424.584 null] +>> endobj +4231 0 obj << +/D [4367 0 R /XYZ 277.269 390.516 null] +>> endobj +4376 0 obj << +/D [4367 0 R /XYZ 133.768 374.765 null] +>> endobj +4264 0 obj << +/D [4367 0 R /XYZ 281.244 340.697 null] +>> endobj +4377 0 obj << +/D [4367 0 R /XYZ 133.768 324.946 null] +>> endobj +4272 0 obj << +/D [4367 0 R /XYZ 281.244 290.878 null] +>> endobj +4378 0 obj << +/D [4367 0 R /XYZ 133.768 275.127 null] +>> endobj +4233 0 obj << +/D [4367 0 R /XYZ 259.107 241.059 null] +>> endobj +4379 0 obj << +/D [4367 0 R /XYZ 133.768 224.332 null] +>> endobj +4266 0 obj << +/D [4367 0 R /XYZ 270.175 191.24 null] +>> endobj +4380 0 obj << +/D [4367 0 R /XYZ 133.768 175.489 null] +>> endobj +4259 0 obj << +/D [4367 0 R /XYZ 270.175 141.421 null] +>> endobj +4366 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4383 0 obj << +/Length 537 +/Filter /FlateDecode +>> +stream +xÚ½–]oÚ0†ïó+¬îƾÀ=þˆ£iÒ>Jµjš¶‘»®ªRâ„.„þý _Kµô*ÇÉñ›ç¼±N !t|ˆƒËWÈP£Ü%΂j!eBª CqŠn1ç4$wñÍe±ƒ\®©0‘Ú$½õGjšj¹Kçe¹z´s::¡%ÕFlSßÕh™mB—tü9/íФÃCÀ1Ñ»øÕ`– ø‰¸4[Ìdz|N:Lp˜I±Ö®âàWÀœ$ vP8£B4˜·w€R÷ðÁ¦Ðß›Ô)Ò¥²õÆ êß8ïf¨)áÞMÊi$à7©ý Àó +¼ÿñë¢G à÷ý˜)ïbqQ9ê€:LSÅ¥×Mí`o›™Õ#‹ìÎìÿüXMXM-ërw–ÿ`ìÈâeÒ˜·Ñi0P»?­ò6: +†ÕóþÕàZÅ~Y£3ü<ÿ+ùþ²†gD}Ç ¯]øæÏÈ3ä¯åûQÜýèO&¢Z4¶ã‚¢F‹èp\ˆ ªräÚæ¶HJ›z*7Õøag´ðÁ';ðô].º,ò+PEá!ÞÖ–¬Ow&ã‡JáaUIΖ«¡ÍŸ—ü$Ž„÷ +endstream +endobj +4382 0 obj << +/Type /Page +/Contents 4383 0 R +/Resources 4381 0 R +/MediaBox [0 0 612 792] +/Parent 4365 0 R +>> endobj +4384 0 obj << +/D [4382 0 R /XYZ 132.768 705.06 null] +>> endobj +4385 0 obj << +/D [4382 0 R /XYZ 133.768 667.198 null] +>> endobj +4268 0 obj << +/D [4382 0 R /XYZ 289.443 639.611 null] +>> endobj +4386 0 obj << +/D [4382 0 R /XYZ 133.768 623.86 null] +>> endobj +4258 0 obj << +/D [4382 0 R /XYZ 289.443 589.792 null] +>> endobj +4387 0 obj << +/D [4382 0 R /XYZ 133.768 574.041 null] +>> endobj +4267 0 obj << +/D [4382 0 R /XYZ 293.418 539.973 null] +>> endobj +4388 0 obj << +/D [4382 0 R /XYZ 133.768 524.222 null] +>> endobj +4273 0 obj << +/D [4382 0 R /XYZ 293.418 490.154 null] +>> endobj +4389 0 obj << +/D [4382 0 R /XYZ 133.768 474.403 null] +>> endobj +4260 0 obj << +/D [4382 0 R /XYZ 271.281 440.335 null] +>> endobj +4390 0 obj << +/D [4382 0 R /XYZ 133.768 423.608 null] +>> endobj +4269 0 obj << +/D [4382 0 R /XYZ 288.835 390.516 null] +>> endobj +4391 0 obj << +/D [4382 0 R /XYZ 133.768 374.765 null] +>> endobj +4262 0 obj << +/D [4382 0 R /XYZ 288.835 340.697 null] +>> endobj +4392 0 obj << +/D [4382 0 R /XYZ 133.768 324.946 null] +>> endobj +4271 0 obj << +/D [4382 0 R /XYZ 308.103 290.878 null] +>> endobj +4393 0 obj << +/D [4382 0 R /XYZ 133.768 275.127 null] +>> endobj +4261 0 obj << +/D [4382 0 R /XYZ 308.103 241.059 null] +>> endobj +4394 0 obj << +/D [4382 0 R /XYZ 133.768 225.308 null] +>> endobj +4270 0 obj << +/D [4382 0 R /XYZ 312.078 191.24 null] +>> endobj +4395 0 obj << +/D [4382 0 R /XYZ 133.768 175.489 null] +>> endobj +4274 0 obj << +/D [4382 0 R /XYZ 312.078 141.421 null] +>> endobj +4381 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4410 0 obj << +/Length 1368 +/Filter /FlateDecode +>> +stream +xÚ½W[o›H~÷¯@í Hõdî0QµRÛlªtÕ¨Iü²J*‹ÀØfC +¸÷×ïf Ø!IÛM÷ÅÌŒÏ9|ç›s{K{ï'og“ƒc*=…”„ÇláÆP(#O*¤"Þ,õ.}J‘ >Ï>2¥!b*C­Ðk+±c-D!ïÖq³B«; #"ÃNì·ì¨Nà0˜2‚ý`NƒÍ,©ƒ)Q<Ä>áÜ(O~ŸM¾LÈc <"Haá%ëÉågì¥ðç·|kE×ã JŒbî]LÎ&øišDˆ(=MQ¤àÁû/S}…1-t0¥ûïNo?ÍÎï6Ä‘JñÀ2ö¦$D’rks¥"üÛ8ÕI¶Žs«\'q±°ËEYýÚ.6YÑÜ4Õ¼¡ì3Šˆbfð,¹¿½Ñ©vÖÊd³ÖE,—…1fÔ)G nc Žˆ3Ð •£ó¦ßÌqÀÅ ‘=ây- öÚ-Kí<4/r«Uç>b«2wz±}Ü”Æ@5zD*-º{CX#€ä$·ÿx;B-À‡MDÇFtŒ¢ÍG›'iSü?4c!äÎ41õOÒOj‰Š@‘s Š#…ûU¤Ò@f†÷ËÌ@D!r‡nXgö,IDï—™=;ü‘:3rç€HÚ¬¸»q٧đnâ,ïnèH×I•ÝtéÔW˜îypÌT;bb¬sšp¢E"²Æ_fE’oR¸V Ö_[gÇ.dÚ)‡HtÏVYí._CIqQbŠTîâêLWÚI]Çu–ØåzXnÛ8*‹º‰‹Æm㹸؉ñ¯F;îó†‘R†6†„¢ÝiÙèúð^v|3ù%”‰#„…Ó¾¢Tìèz—S´á.ý²r‡~SÚ£8It]Û5xgÿìñÛóTç ’ÚÝ +nÕ‡ó+¯ÌYägU̜ƦÞÄy¾u¯ÈëÒþ]é/›¬7L9—Æ6­qšfæýΤsžÛU¼ à'âíÞ‚nE®«¸ÚÚ0€ä%Ç(ì£äÖ(‰&P$e'†ÀªŠü íÌ;/†o¬t7àeÜ4Újé:îy˽:6 åM „fµ —X”ƒ[òwÅܪ€k°P%¿]“§˜ïÍlÓÒ>‹²1 ¸±8«µ=³=5Ñ7ù6~G©Ÿ¬âb©­ãþ}Ž©$+Ö±§«ª(Ç8†B¦ú2õ5 @l•MÛ@˜RpZ.¤‹…ë\Ã]ˆ0‚ÔÕ•†o€0eïq“—•UÖlíq¹°§&WíIÜi¸ÌN­À·¬å ÎÛwã×Ã1 +?Î?ì«›s˜j8*‘ +£,⃳]iCŒúè3¡¹8;$Ìbt AœpJ˜”… +ya"£(GEžÕiÀ„ÿæt Ñ|n&Ë›¬˜qq…~ñ~ɯäéäôøäôdöçÓ²ba u€îÍl.¢ÚPtuÜ—’ï Eñ¸Si¹L~Ü£¤¬Çœ1غsîö§¹ý 3}Æ×ÿ y,ë2ýN¯Üø²sºý¥L¸ÅO¡³ó5ßiÒ:^?=C°‘þÁáã‚t2ó9Œ‘Õ=G?}U„Bö#¾Ý¯„I”EÃ^ÜYíïu¡«v°mÀÿÙjÓ »nvtRvH"»£»ÕÂtÂîÛ56›¯UÀB +ÓJ²ÛPŽÊÛíRû.ÿ ÄL“ +endstream +endobj +4409 0 obj << +/Type /Page +/Contents 4410 0 R +/Resources 4408 0 R +/MediaBox [0 0 612 792] +/Parent 4365 0 R +/Annots [ 4396 0 R 4397 0 R 4398 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R 4403 0 R 4404 0 R ] +>> endobj +4396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.738 350.89 475.985 361.794] +/A << /S /GoTo /D (FAQ_faq_libm) >> +>> endobj +4397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 257.156 214.186 267.083] +/A << /S /GoTo /D (group__avr__math_ge71449b1cc6e6250b91f539153a7a0d3) >> +>> endobj +4398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 243.602 235.178 254.132] +/A << /S /GoTo /D (group__avr__math_g66b3ab30f1332874326ed93969e496e0) >> +>> endobj +4399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 230.65 212.722 241.181] +/A << /S /GoTo /D (group__avr__math_g8abfcc76130f3f991d124dd22d7e69bc) >> +>> endobj +4400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 217.699 234.65 228.229] +/A << /S /GoTo /D (group__avr__math_g956e2723d559858d08644ac99146e910) >> +>> endobj +4401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 162.839 202.56 173.369] +/A << /S /GoTo /D (group__avr__math_g542f5e42e0d3b5df63de0e34ec06bb40) >> +>> endobj +4402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 149.888 205.778 160.418] +/A << /S /GoTo /D (group__avr__math_g0838a00d86d5e920c80aa7c7532a5559) >> +>> endobj +4403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 136.563 210.311 147.467] +/A << /S /GoTo /D (group__avr__math_gefa8edb8c13adf7fb4b6b7dbe7261a24) >> +>> endobj +4404 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 123.611 210.311 134.515] +/A << /S /GoTo /D (group__avr__math_g85861fee92c0904e9bb7a9875ee77579) >> +>> endobj +4411 0 obj << +/D [4409 0 R /XYZ 132.768 705.06 null] +>> endobj +4412 0 obj << +/D [4409 0 R /XYZ 133.768 667.198 null] +>> endobj +653 0 obj << +/D [4409 0 R /XYZ 133.768 622.884 null] +>> endobj +4061 0 obj << +/D [4409 0 R /XYZ 133.768 598.669 null] +>> endobj +4413 0 obj << +/D [4409 0 R /XYZ 133.768 598.669 null] +>> endobj +4108 0 obj << +/D [4409 0 R /XYZ 342.532 565.443 null] +>> endobj +4414 0 obj << +/D [4409 0 R /XYZ 133.768 548.716 null] +>> endobj +4415 0 obj << +/D [4409 0 R /XYZ 354.985 515.624 null] +>> endobj +657 0 obj << +/D [4409 0 R /XYZ 133.768 498.897 null] +>> endobj +661 0 obj << +/D [4409 0 R /XYZ 133.768 474.393 null] +>> endobj +4416 0 obj << +/D [4409 0 R /XYZ 133.768 275.153 null] +>> endobj +4417 0 obj << +/D [4409 0 R /XYZ 133.768 181.439 null] +>> endobj +4408 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4458 0 obj << +/Length 816 +/Filter /FlateDecode +>> +stream +xÚ͘Ýo›0ÀßóWXÚ HÃõ\M{˜ºV©Ôi¼Lm‘@$bRBÖdýl0)d‰š¶Éæ'0¹»üî|>Û‡À pÕûöÎ.‰8äž|„c€)…¾3èq ÂÜZ„@Ͼ¯Ï.1nÉRHC•Ð‡Z¢c͇¾»˜EåNwØ¡bÏoÄ>î±ÃsÛ¡Y7Ò\"m¦£…í`îúÈÂ.SʽÏa¥<¸å†10šõnïˆå×UºŸ.]ˆ#d63E*Æfh—Q‘œšdQªûHg¦ŸÙ%綼ʬéDüŸ<:訧3ƒéfÑ›àöVÓߧÆ^™ÔTZØÔZ¦fÜN‹¥ºÆ¶kÊõVÞˆHËÄ„øLmf­çyinžùRħU–‹É3gc8ž2ìPŒ­Vƒ=èÊœväË+ø¦‰í`$1.’*Gµ¥‹|´œ%B%y^•å q!uy[b­ý.î¨÷¿\ö¿ôß ÖÐ&ÈZ¦Y™Š§„®4éÒçáÂiÒåªU(m©0 +=Ó$§;¬b 9cìLôΞ) O_Ò1mÊä¾Jǧ†rÀ!õtƒô*I•I\;%ç½z†Ó¥Î‰D×;·~`tNè9êAH¿Õ> endobj +4405 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 654.456 200.906 664.986] +/A << /S /GoTo /D (group__avr__math_g46e799ece7e1dd323d22cdb53c81cd73) >> +>> endobj +4406 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 641.144 204.224 652.048] +/A << /S /GoTo /D (group__avr__math_gdd1e40e370b2165c186f72ec631b1853) >> +>> endobj +4407 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 628.58 201.454 639.11] +/A << /S /GoTo /D (group__avr__math_ga2c2303658b8b2555bc97cce3f806bda) >> +>> endobj +4426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 615.642 208.099 626.172] +/A << /S /GoTo /D (group__avr__math_g0f0bf9ac2651b80846a9d9d89bd4cb85) >> +>> endobj +4427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 602.703 203.666 613.234] +/A << /S /GoTo /D (group__avr__math_g61470611f23ceef5d3e9cf63d84cd8a7) >> +>> endobj +4428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 589.392 210.152 600.296] +/A << /S /GoTo /D (group__avr__math_g89f0cb053e3cdb0c9c952ef040087c80) >> +>> endobj +4429 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 576.454 211.268 587.358] +/A << /S /GoTo /D (group__avr__math_g91643e944a94341bd2a3ed1d3ffbae4f) >> +>> endobj +4430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 563.516 203.517 574.419] +/A << /S /GoTo /D (group__avr__math_g4ea549372745dda4018ab4b5a94483a6) >> +>> endobj +4431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 550.951 207.541 561.481] +/A << /S /GoTo /D (group__avr__math_g2ec1caf3ba3b1ba62eccb3eddf029438) >> +>> endobj +4432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 538.013 205.888 548.543] +/A << /S /GoTo /D (group__avr__math_gae45da8f56ba936dc8624157d1770faa) >> +>> endobj +4433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 525.075 206.436 535.605] +/A << /S /GoTo /D (group__avr__math_gf4b72825a245b794090135251f0ead22) >> +>> endobj +4434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 512.137 206.983 522.667] +/A << /S /GoTo /D (group__avr__math_ge9c5790d8a29cbee8f54f8eb522decbc) >> +>> endobj +4435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 499.199 205.33 509.729] +/A << /S /GoTo /D (group__avr__math_g98384ad60834911ec93ac5ae1af4cf0a) >> +>> endobj +4436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 486.261 205.878 496.791] +/A << /S /GoTo /D (group__avr__math_g3abd1a0b68d157914a0ee01acaedfe5e) >> +>> endobj +4437 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 472.949 210.859 483.853] +/A << /S /GoTo /D (group__avr__math_g054230cd7e4c12958dbfac75ab6886e5) >> +>> endobj +4438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 460.011 202.012 470.915] +/A << /S /GoTo /D (group__avr__math_g7f7d556ab6b6235777a179647c152126) >> +>> endobj +4439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 447.073 211.975 457.977] +/A << /S /GoTo /D (group__avr__math_g3630cb8cef4560cf0d92e82ae05b03f0) >> +>> endobj +4440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 434.134 206.187 445.038] +/A << /S /GoTo /D (group__avr__math_g41b41c307b8f96760e9c0c17180b241b) >> +>> endobj +4441 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 421.57 193.713 432.1] +/A << /S /GoTo /D (group__avr__math_g468be9ed380771eca5a18e812b2470d4) >> +>> endobj +4442 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 408.632 190.395 419.162] +/A << /S /GoTo /D (group__avr__math_g18a7409e0b2341afaa41993960961772) >> +>> endobj +4443 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 395.32 215.282 406.224] +/A << /S /GoTo /D (group__avr__math_gd11825ff1d6095a08b193c564d524aef) >> +>> endobj +4444 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.809 382.382 248.677 393.286] +/A << /S /GoTo /D (group__avr__math_gaebf29a8e50e6d8f88b6caf697021c86) >> +>> endobj +4445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 369.444 208.099 380.348] +/A << /S /GoTo /D (group__avr__math_g63fcb86a13cf17110582fd6560fb09dd) >> +>> endobj +4446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 356.506 204.772 367.41] +/A << /S /GoTo /D (group__avr__math_gf7fbeddc2e7721682e69f59be04ae9d5) >> +>> endobj +4447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 343.568 209.753 354.472] +/A << /S /GoTo /D (group__avr__math_gfd8ab12e9d230e8213ac0c8b77c306d9) >> +>> endobj +4448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 330.63 208.099 341.534] +/A << /S /GoTo /D (group__avr__math_g577eee92b9969942de4d8d134d37c7b8) >> +>> endobj +4449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 317.692 199.81 328.595] +/A << /S /GoTo /D (group__avr__math_g36894d73110fda52c84dfc050f1004bb) >> +>> endobj +4450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 305.127 209.753 315.657] +/A << /S /GoTo /D (group__avr__math_g1883497d16352bd92875499f1b39a4b6) >> +>> endobj +4451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.211 292.189 223.331 302.719] +/A << /S /GoTo /D (group__avr__math_gfb997a6a8d6dd0498238098826998aa0) >> +>> endobj +4452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 278.877 211.925 289.781] +/A << /S /GoTo /D (group__avr__math_g711412ca8746712e0f19508118bf5154) >> +>> endobj +4453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 266.313 212.523 276.843] +/A << /S /GoTo /D (group__avr__math_g6eb04604d801054c5a2afe195d1dd75d) >> +>> endobj +4454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 253.001 205.888 263.905] +/A << /S /GoTo /D (group__avr__math_ga759c9a1684b0cf2c4c5d133771192ce) >> +>> endobj +4455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 240.063 196.483 250.967] +/A << /S /GoTo /D (group__avr__math_g9b995838b7bdd4886549dd7e308d0619) >> +>> endobj +4459 0 obj << +/D [4457 0 R /XYZ 132.768 705.06 null] +>> endobj +665 0 obj << +/D [4457 0 R /XYZ 133.768 226.501 null] +>> endobj +4421 0 obj << +/D [4457 0 R /XYZ 133.768 204.189 null] +>> endobj +4460 0 obj << +/D [4457 0 R /XYZ 133.768 204.189 null] +>> endobj +4418 0 obj << +/D [4457 0 R /XYZ 218.201 169.06 null] +>> endobj +4461 0 obj << +/D [4457 0 R /XYZ 133.768 154.402 null] +>> endobj +4419 0 obj << +/D [4457 0 R /XYZ 204.981 119.253 null] +>> endobj +4456 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4504 0 obj << +/Length 1490 +/Filter /FlateDecode +>> +stream +xÚ­˜ÝoÛ6ÀßýWÝ‹ŒÅ ¿?Ša@‡­ +,@[¿¥A ØŠ#Ì–\In“ýõ;~)’-/v‘ëHžÇã§q²JpòaòÇ|rùžÊÄ #á1¿OcHIH#4$™/“ë”R$§7ó—ï ééR…˜Ñ`È)ýæ5ÖR¼SØdíz±Ã0"REµßØ1QáítÆNÿs9Ø,ÍtF W8%ܹ9ùk>ù6! Ò[A‹d±™\ßàd ƒìVðénÆA•Ø?®“/“Oür˜„B”‰ç0!Š¸ƒ1NYæ_1¦e>QþÞ~ùôyÊq:§¾ƒ N8%LHÊÃF`®5&RkB€{3âdF’”û¹æÁlóm—ÕA®«ªõRuïŸDL1ŠˆºÍÇݾšRœ¾»òÛÛ;ÛÜë¶(oˬüŠ~ó~ÉË._M™è,-ª²i³²=Õ¿Ô÷»rÑUé­üY-v›¼l3×–ì)G héý‘ðïeµ»[‡…e‹ªñ’]DqÎÑßiª‘Q2Âw{û8â1áÈpuŽ„cF/C÷Ñ"ëY­WÚÏ&ÉõŒRâÜ´F£”aüþ9 Ô†u³Ýµ¹]Œµ¶uQ.Šm¶öÍïS*Òl½ËýŸ,}õ¬^xæ.Êg-·&&)€Â’Ôatð0:œtDp|a+æq²:owu™/Ýöͨ†¤Â N«ôüeD¦EcŸ*-Jßv~ÛŽ:+WAç_€ÀXº-nâà²Èʦؤï¼Ú²ÚdÞŒJóº®jß]-»ºñò½ïT•)ÑéÊÆJ{Þö] ºH¿€à˜…ízF.¼ô+¹ù?úù€`:FpS”'¬Ö¯0EÈõ‹S6¹y”`ï ­ÁÐòH‚Ð'š}‚¡éî«{‚Aüz1~1¼ZÄ™ür.¿`wŸ_/3r”_ª±ã×=Kÿô^ƒ1Ñ“mqI-)Z¥V¼‰*‘b4¼ó‘b+Š­)¶ò}ìÜ£Øv9ŠƒC}xƒ÷m|Õü ŃÞeñÅð8‰bƒ㯃1l¨Òç$bìý<Š1Œ÷0ƃDŒãƒÐØ3‡DÜW÷Ûú²íÔÆH†$ù™$SÃÉ`÷0Kzd@dA†FYô@>•~„z +<Œ#AzÇüi¦»à\Ø÷D7Û¡I¦‘¯‚#Å cΪ ¤_úñÂ`VA½_Èø¦¦Uè2 >%éCè µì!é5GÔQ©úQwÊ—~îqD™DXêÞ.PFÒ¤ñ•ÇÞ¶ˆAÅ=’¢ÀtS¬J·FÕ9WµÑõaꥶòC˼ÍëM¨uºø¨Šë%ÀÜîÅ#NçOŒWíbç + 9j—}™ ¸>…‰mªúßÊí)ûn‡ó0w16·ÆˆÀv±X8˜‡fàkPÀÛû´<²8°ª3×ݯ\eáöÂÓðü7¯+4ØÉÑ«' ²s.žâ…“DF1Ý¿pÒ1|ÿ—y ‰)$x)2Ø…Û‘<œX.œð[ÊÞ®†0ҽ݇¸¤ÌmJ=e*­‹»`áî)^¸<>Á[ÉÿÅ›5 +endstream +endobj +4503 0 obj << +/Type /Page +/Contents 4504 0 R +/Resources 4502 0 R +/MediaBox [0 0 612 792] +/Parent 4365 0 R +/Annots [ 4495 0 R 4496 0 R 4497 0 R 4498 0 R 4499 0 R 4500 0 R ] +>> endobj +4495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.463 512.471 176.794 523.375] +/A << /S /GoTo /D (group__avr__math_ge9c5790d8a29cbee8f54f8eb522decbc) >> +>> endobj +4496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.203 438.741 175.88 449.645] +/A << /S /GoTo /D (group__avr__math_g98384ad60834911ec93ac5ae1af4cf0a) >> +>> endobj +4497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.256 365.012 175.481 375.916] +/A << /S /GoTo /D (group__avr__math_g3abd1a0b68d157914a0ee01acaedfe5e) >> +>> endobj +4498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.512 303.238 180.719 314.142] +/A << /S /GoTo /D (group__avr__math_g054230cd7e4c12958dbfac75ab6886e5) >> +>> endobj +4499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.151 229.508 175.164 240.412] +/A << /S /GoTo /D (group__avr__math_g61470611f23ceef5d3e9cf63d84cd8a7) >> +>> endobj +4500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.615 167.734 195.118 178.638] +/A << /S /GoTo /D (group__avr__math_gaebf29a8e50e6d8f88b6caf697021c86) >> +>> endobj +4505 0 obj << +/D [4503 0 R /XYZ 132.768 705.06 null] +>> endobj +4506 0 obj << +/D [4503 0 R /XYZ 133.768 667.198 null] +>> endobj +4420 0 obj << +/D [4503 0 R /XYZ 220.134 639.611 null] +>> endobj +4507 0 obj << +/D [4503 0 R /XYZ 133.768 622.884 null] +>> endobj +669 0 obj << +/D [4503 0 R /XYZ 133.768 575.122 null] +>> endobj +4473 0 obj << +/D [4503 0 R /XYZ 133.768 550.753 null] +>> endobj +4508 0 obj << +/D [4503 0 R /XYZ 133.768 550.753 null] +>> endobj +4474 0 obj << +/D [4503 0 R /XYZ 194.48 491.713 null] +>> endobj +4509 0 obj << +/D [4503 0 R /XYZ 133.768 474.986 null] +>> endobj +4475 0 obj << +/D [4503 0 R /XYZ 209.145 417.984 null] +>> endobj +4510 0 obj << +/D [4503 0 R /XYZ 133.768 401.257 null] +>> endobj +4476 0 obj << +/D [4503 0 R /XYZ 299.027 356.21 null] +>> endobj +4511 0 obj << +/D [4503 0 R /XYZ 133.768 339.483 null] +>> endobj +4466 0 obj << +/D [4503 0 R /XYZ 289.144 282.481 null] +>> endobj +4512 0 obj << +/D [4503 0 R /XYZ 133.768 265.753 null] +>> endobj +4483 0 obj << +/D [4503 0 R /XYZ 285.299 220.706 null] +>> endobj +4513 0 obj << +/D [4503 0 R /XYZ 133.768 203.979 null] +>> endobj +4422 0 obj << +/D [4503 0 R /XYZ 220.114 158.932 null] +>> endobj +4502 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F55 3943 0 R /F36 2440 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4525 0 obj << +/Length 1517 +/Filter /FlateDecode +>> +stream +xÚåXË®Û6Ýû+´”шáC|EE› Z ­wiȶl °$GäÞ~}G$eKm˽7@Ñn,JŽ9sæqHl¼™ý¸˜½|ME ‘ðXlÂ’BBs$4 ëà}H)ó‹w/_2¥1­@‘úÞJŒ´I$ã£@ž4;´óèa!{±.èѽÀ«yÄu)èÌVõ<":–8$±ìÏ~^Ì>ÍÈ〠,"Hc¬òÙû8XÃä» ¾Ñ<`1ˆ’ná>øcöÛ ßv—ˆ2~r‚ï°Œq¸.Ûå>G”ãpUÖvð'æØM39j¥ i÷†~üøàñ‰‘Ž2 8!<ŠSH3‰­ðbgþufSm‡~3 Þ÷Ûì6Ø+=:ÀMoÚbÕdeaM©Ò¦­ +g`q´4+ܸÜØ­±Ñþ¹FÂc#ÛÑ˼°Úò4©Û*]Û·¬ßE²Î’¢FOí1Â\£ˆè1JÊÒnLqö<0Å`©ü0힊ÓnÎÃÇCZ-Ë}¶šŤ÷`çÅ…RÀE)/.ÚƒKúp˜ ”,®žŒ¦wÂ’Î OEÆ©)‹´h²do?~žS&ûö:<Q­ŸÑP¹‚=øl’å¤òE3ÆúyRˆqv'@›9ô Øët„Ve~h›ô"ÐQîáû%l¬PïÌJhSÅ6:”YÑدE›/ÓÊ"Ãq*Ÿ "#Éü ˆë,Ÿ"d%÷€õ›Ÿþìk•Ðª$”ÓG¿F¦Ä­° Ú/ôø;ÂBjcùÅèæO!o}Òz:¡Ðsãßyè´v2 #ûèìãÜ45%B|Á œtD8bZ†oýý)~+饉'SVÞÍ#,Õ× œ«C5Æ eÙìì(©R;ø5ùõÅqd™ñ@O’ü¡æ..­OÓµ/’±?„©'„Mª™m}ƒ(¾XŠ8F\ÜsLÆýV/…“|vÝ‚c¯è^L!êû¤šnÓº™›EP`LÿØV]çèDÕɬHëÚŠ6»Äéî\Ö=ÓO­]“¥¯6`êz +wãƒÜ1w=-²!À ý è6„öC øM"‚Å‘¬$ÅÚÇD@&¾ADF>í"âö­Û{RØݺÖØæÐ|BøFÂÆQ©€2;sí˜Ë0ŒÞ¤ŽSœTöM¨_wb0ærê­‹uÇΖöÝ­JÏÿÔÒ%¯ÞÉ)½)Òß—ü¯È='ÆòËç=::ï‘ቜö@ g²!@\Lž2¾^Ï@ˆÆ·2D }BàB†¤ô½Bb•Ôflý<œÉ‰¥Ãù#>/þÿÜÞÜ(×Û‡bSøûvüïZûÐD~ã;ë·#à‡k7#þÛ*?7¯Ò<É€‰T×®«˜†f0ºM4Â/íÃ×L Néèæã¸Oﵿ6<íŽKÿþ²òP_\ö+˜põ&-:®ÙXzŽ³ØµvðSê.Ucû øe¯ˆ²oc7Út£?²&ÝËçjÎdí³¥Ó°|t*ˇÇmZœ›ü7Ñ\R‡ +endstream +endobj +4524 0 obj << +/Type /Page +/Contents 4525 0 R +/Resources 4523 0 R +/MediaBox [0 0 612 792] +/Parent 4537 0 R +/Annots [ 4501 0 R 4514 0 R 4515 0 R 4516 0 R 4517 0 R 4518 0 R 4519 0 R 4520 0 R 4521 0 R 4522 0 R ] +>> endobj +4501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 636.832 172.662 647.362] +/A << /S /GoTo /D (group__avr__math_g542f5e42e0d3b5df63de0e34ec06bb40) >> +>> endobj +4514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 586.639 177.643 597.543] +/A << /S /GoTo /D (group__avr__math_g2ec1caf3ba3b1ba62eccb3eddf029438) >> +>> endobj +4515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 536.82 173.619 547.724] +/A << /S /GoTo /D (group__avr__math_g4ea549372745dda4018ab4b5a94483a6) >> +>> endobj +4516 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 487.001 175.88 497.905] +/A << /S /GoTo /D (group__avr__math_g0838a00d86d5e920c80aa7c7532a5559) >> +>> endobj +4517 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.043 437.301 178.49 448.086] +/A << /S /GoTo /D (group__avr__math_g63fcb86a13cf17110582fd6560fb09dd) >> +>> endobj +4518 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.993 375.408 179.44 386.311] +/A << /S /GoTo /D (group__avr__math_g0f0bf9ac2651b80846a9d9d89bd4cb85) >> +>> endobj +4519 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.052 313.633 175.171 324.537] +/A << /S /GoTo /D (group__avr__math_gf7fbeddc2e7721682e69f59be04ae9d5) >> +>> endobj +4520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.917 239.904 180.018 250.808] +/A << /S /GoTo /D (group__avr__math_gfd8ab12e9d230e8213ac0c8b77c306d9) >> +>> endobj +4521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.769 178.13 178.215 189.034] +/A << /S /GoTo /D (group__avr__math_g577eee92b9969942de4d8d134d37c7b8) >> +>> endobj +4522 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.45 116.356 216.109 127.259] +/A << /S /GoTo /D (group__avr__math_gefa8edb8c13adf7fb4b6b7dbe7261a24) >> +>> endobj +4526 0 obj << +/D [4524 0 R /XYZ 132.768 705.06 null] +>> endobj +4527 0 obj << +/D [4524 0 R /XYZ 133.768 667.198 null] +>> endobj +4470 0 obj << +/D [4524 0 R /XYZ 398.065 639.611 null] +>> endobj +4528 0 obj << +/D [4524 0 R /XYZ 133.768 623.257 null] +>> endobj +4469 0 obj << +/D [4524 0 R /XYZ 363.435 589.792 null] +>> endobj +4529 0 obj << +/D [4524 0 R /XYZ 133.768 573.065 null] +>> endobj +4423 0 obj << +/D [4524 0 R /XYZ 359.062 539.973 null] +>> endobj +4530 0 obj << +/D [4524 0 R /XYZ 133.768 523.246 null] +>> endobj +4484 0 obj << +/D [4524 0 R /XYZ 455.29 490.154 null] +>> endobj +4531 0 obj << +/D [4524 0 R /XYZ 133.768 473.427 null] +>> endobj +4465 0 obj << +/D [4524 0 R /XYZ 172.543 428.38 null] +>> endobj +4532 0 obj << +/D [4524 0 R /XYZ 133.768 413.71 null] +>> endobj +4485 0 obj << +/D [4524 0 R /XYZ 276.043 366.605 null] +>> endobj +4533 0 obj << +/D [4524 0 R /XYZ 133.768 349.878 null] +>> endobj +4486 0 obj << +/D [4524 0 R /XYZ 334.952 292.876 null] +>> endobj +4534 0 obj << +/D [4524 0 R /XYZ 133.768 276.149 null] +>> endobj +4487 0 obj << +/D [4524 0 R /XYZ 472.973 231.102 null] +>> endobj +4535 0 obj << +/D [4524 0 R /XYZ 133.768 214.375 null] +>> endobj +4424 0 obj << +/D [4524 0 R /XYZ 463.838 169.328 null] +>> endobj +4536 0 obj << +/D [4524 0 R /XYZ 133.768 152.601 null] +>> endobj +4467 0 obj << +/D [4524 0 R /XYZ 414.931 119.509 null] +>> endobj +4523 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4550 0 obj << +/Length 2155 +/Filter /FlateDecode +>> +stream +xÚ­YKã6¾ûW9ÉȈÇ(ŠÅÙ  lÒ{ê j›íÖÆ–<’<3_¿E©‡-·ìIN’¨YUKt¹]Òå»Å¿îoäéRÂåþiÉ„ *Í–©–$Õly¿Y>Dœ“tõáþç·?26åŠÁDNè(1šM•tû¼}&ÏóJXª‚Ø?/Ì£ƒÀÝ*ŒF¿Àtæ,ÖÍ*f:Q4bIf?^üû~ñiÁ@ž.ÙÀ"F4•Ëõ~ñð.7ðòç%u|q¢û¥H@”ÙwËßÿYÐy7IE¸½›ˆ L>”ÒhSwfsI£§zŲÈ|=àãïTRÿÚY+åhòŒpÊ‚½?~p KˆN’ ófKX±([ïßd'FdÖ¹ïwJÅÄ¢Š$Š÷K¬ªç«rM„èg’ÌËÐLÌ,(ÒeÌIy‚Â÷ÏÎÔ¥Þúèüún±|ˆ¹’à!³b2úz°¾ Sw!BÇrÝU¹rOµÉÿhð>Ç‹µ®P”ÛøPYw¸Ñò¸45ÞÃ`5ú¤¬ê}¾+þ4›•W$¬‘—›pceb0OKs˜Í©½­ó†öP­¸Œ¾¸åà±zÂ+'ÛŸZ|nÚª6 Þñ¦›-|]”½„ó4x€L&;tÑ…ƒS’ðN¦züŸY·AS»ÞƯPáõñÅ/4 {³:VœFBFËeDö@"Îg`xJhÊ="¼ë~zšZ‰h‘#¸Ì¥X'SX +æ‚  &Þ{,àC@ƒ•A4$ÔnؽÁ»° _ÌcSð!6á“ڴǺôÊa€áæ³ÅF¾;NE“+i.ØõyÂrI´Rƒ-ouoŽëç°HÞNL *ˆPbŒÛ©é5¡´[ÿ9ÝM¬caÈÞÛ²hƒ£˜öê,ÃÖÔÞ<üâ½åo,賈9Ÿ¹ÑªFù?M]¹·Êm±s$pƉÔ| ¶’NÆ|:æ»fʵéëЬém±7ÞxŽJ×yÑØâ,®Ó\¥Dr>v+:MYàܲ„Úz~7‰~7ÅB²éÃ$ቚõí½åvNÚE‚§*z¬Z ¦TD‡¼ný{—Á`¨³ òÖq×â}^|kgyU?@·Tü[,«×Èñö5,¨ëàþQÆ;¼ÏŸv¸«Ïs;„žž°Žj’]‘¸4MƒLî“á¯XhN*}-)s’¤ß„¢¡i'2IF”ÍÀf<ý{_µæîô£‘að ƒd„JʽµKdYTì;³7e›cr´cSï‹Ö äx±òo]]ªýÛ¡”Š6E õ«°›ë³ ˜Á·­ÿ´ù£8ŒfµÎ2à¥] O}ÚÀÈW%(I&H­Z +U,Œé1ÙË&ÈÞ³ðåPµW‘=íhéídïâ”6‚r_^¦gY:Ëä(X ÔqT·_er‚'`>Zi+Y™¾X +å+ @%ÓΘæSí¦íÜ4"º@Êyïʞ莳/X4âÖNŸïñÒ9k4obÁ¢n›÷å‚O-–úRS +v (®XWáfgÊ­MÊöÞfbë®î¥ótìó Ð|¡OêDÁ”ÇÆâ’y.Ê+Ác]lŸ[ië"/·;/÷¥peÆ›bãRQ÷1 +M„*S„Ñt6ÊžINW~I2qŽ_z¿6ËÍ°ÜÂYóì ÙM›—kƒÃÁ‚î5rBôžH`Q5öžEÚ„~@§Ø\ª‡ÙØ@½óI$ɨ¾ÅFO¡X +µªÚ#sB À$¹mQZ4Yÿm0ãÁx‹ÀÑÁ†ƒñ¢lZ“o𕃕68€IÖ/„ú¸ËñN–@óÆS{È\ýë¯=WèHƒ©kž4éêú©+Ü5ÀÙwñ¥DŽÃ¡æØ72:–S;"ïøŠ{|†§È£ $»† ©(‚ S·„i¤?lY[ +°R™Q<& §ê“Ûq¬C‡Á¶ª™*TÔž´€ ¥ã¥}‰jl ^w'Í0yG§®(VTú–bÕ§ÁñÑ•‘ŒwyàUû0Uƒ˜‚rFå-Ý– ̺Hè˜ÙX28²±s¤îY"1±cýé טä¹@GivELäˆç²ž×Þ­,©õ´Æ»£—À‡±¢ CEé?{YÁvñ›ÒÖíT°1ÍéfˆÉûüýk0·µ8õ0@§(Ÿ®A ˜›ÝÖϺDH˜°gdyNHb¦á¼ +åÔ¾„ ++Ðá€i1œbí®mX+w ½íÑ2ÛÉÄ‘–³0bÔÉ°3ª¦3\§ÀIœ!ÆI÷Ú« áü<µWç5(± ä")‚ Ÿ¦ôiìT¹áÆbàlij[9®O]œc®ÌËk0lÈ6fÿÌ¥„)}ž€Ü‘ys<ÍPí‹™¦és<°~ô„mXksYJ¨˜/zªEmPh`6¿pŽ "ÎcqªÚm®oŸë$û+íóÑ|ãöùÇ:ãÀ=‹%mû7œ§¼áó½‰A)ƒ' lmqØ¡¿uÇm=Ýqì4øÍ{Ò‘¾¢¿ŽÖW×éo³­ß*ÃÖù°6£ZS‹ %®èÒ¨“^ ³0°/ì›æ¯µý\H ˜Á+ 1l}Nö$ Xêlzûˆ©íSm¯Ê›Ixö·äÍÄöù­€¨¶ +e£®ÖlF G†ý±3Ù”'<¡o9ç;k“!5YqË?ÈðïP© Rþ=fpjH}ygJSçÝÏœàŸûç#Þü`<ïOðÂèw¶yåM©¿{²ð­ê4lé¯WBEñ®x\3ÄÕ×—­)OMþ?_Úvì +endstream +endobj +4549 0 obj << +/Type /Page +/Contents 4550 0 R +/Resources 4548 0 R +/MediaBox [0 0 612 792] +/Parent 4537 0 R +/Annots [ 4538 0 R 4539 0 R 4540 0 R 4541 0 R 4542 0 R 4543 0 R 4544 0 R 4545 0 R 4546 0 R 4547 0 R ] +>> endobj +4538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.004 636.458 180.503 647.362] +/A << /S /GoTo /D (group__avr__math_g89f0cb053e3cdb0c9c952ef040087c80) >> +>> endobj +4539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.773 606.878 326.272 617.782] +/A << /S /GoTo /D (group__avr__math_g89f0cb053e3cdb0c9c952ef040087c80) >> +>> endobj +4540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.455 571.013 211.955 581.917] +/A << /S /GoTo /D (group__avr__math_g89f0cb053e3cdb0c9c952ef040087c80) >> +>> endobj +4541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.494 463.311 182.767 474.215] +/A << /S /GoTo /D (group__avr__math_g711412ca8746712e0f19508118bf5154) >> +>> endobj +4542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.393 366.311 186.148 377.214] +/A << /S /GoTo /D (group__avr__math_gfb997a6a8d6dd0498238098826998aa0) >> +>> endobj +4543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.312 305.175 211.653 316.079] +/A << /S /GoTo /D (group__avr__math_g18a7409e0b2341afaa41993960961772) >> +>> endobj +4544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.796 244.04 216.455 254.944] +/A << /S /GoTo /D (group__avr__math_g468be9ed380771eca5a18e812b2470d4) >> +>> endobj +4545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 182.904 181.37 193.808] +/A << /S /GoTo /D (group__avr__math_g91643e944a94341bd2a3ed1d3ffbae4f) >> +>> endobj +4546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 165.28 181.37 176.184] +/A << /S /GoTo /D (group__avr__math_g91643e944a94341bd2a3ed1d3ffbae4f) >> +>> endobj +4547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 116.1 172.114 127.004] +/A << /S /GoTo /D (group__avr__math_g7f7d556ab6b6235777a179647c152126) >> +>> endobj +4551 0 obj << +/D [4549 0 R /XYZ 132.768 705.06 null] +>> endobj +4552 0 obj << +/D [4549 0 R /XYZ 133.768 667.198 null] +>> endobj +4491 0 obj << +/D [4549 0 R /XYZ 133.768 513.488 null] +>> endobj +4553 0 obj << +/D [4549 0 R /XYZ 133.768 499.556 null] +>> endobj +4490 0 obj << +/D [4549 0 R /XYZ 205.479 418.644 null] +>> endobj +4554 0 obj << +/D [4549 0 R /XYZ 133.768 402.556 null] +>> endobj +4481 0 obj << +/D [4549 0 R /XYZ 189.658 357.508 null] +>> endobj +4555 0 obj << +/D [4549 0 R /XYZ 133.768 343.477 null] +>> endobj +4480 0 obj << +/D [4549 0 R /XYZ 235.556 296.373 null] +>> endobj +4556 0 obj << +/D [4549 0 R /XYZ 133.768 280.285 null] +>> endobj +4468 0 obj << +/D [4549 0 R /XYZ 214.883 235.238 null] +>> endobj +4557 0 obj << +/D [4549 0 R /XYZ 133.768 219.149 null] +>> endobj +4477 0 obj << +/D [4549 0 R /XYZ 453.945 168.433 null] +>> endobj +4558 0 obj << +/D [4549 0 R /XYZ 133.768 152.345 null] +>> endobj +4478 0 obj << +/D [4549 0 R /XYZ 396.192 119.253 null] +>> endobj +4548 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F14 2650 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4569 0 obj << +/Length 1591 +/Filter /FlateDecode +>> +stream +xÚíXKÛ6¾ûWè(1çH-ŠŠ4A‚&ESß’`!¯e[-¹’ÜÝͯïCÉ¢#¯½@E÷°¢Éá¼ç’4ZG4z3ùi>yùš'QJÒ>óUÄ„ :1Q’*’¤,š/£O1ç$™~™¿{ùš±-×D¤9¢"উ–=Á.k7d3ÂGPÂÝ‘ýx†OÚÜLg‚Ñø=°Ëgq×Lg,•šÆL¦vóäçùäÏ z±EŒ¤TEw»É§/4ZÂ⻈: îé.H™Ý¸~Ÿü6¡—ݤ4áBÝDáô¡”ÆËê°ØæÓW4ÞVkFqø™*ê—œ¥JŒ ¨Ä:[ooFÜÁ$I¥èh€óDt@4cJ!$ 4I¸DâùÆI oêµwÒÇ7“èÓQQ«bǶ÷‚'XÊ»¶¨J4¦ÎÛC]6øÒ[;UqVíf‡3Õ +¿Y=e&^vyÙ¢ÒbhZ~gþÐ2–@ “Ž¦­ó"k¼tFɈÓf\¤„IÍ',=‰™ò1ÛVåÚÛP âイ©¼"bòbÄ ø©0ωW¨èÙˆÁ b\Æuu(—͈ï5„2}Ñ÷‰RïAežÕyÓ¢$P+Ÿ2¯óz*iüfEù…óòpç&Û®î§P×Ù#NÜA<d4*¸$‰æ0€šV>”ùHþ²óé‡ +¸‰eQçÎ0„rØù&k=yƒßEÕnpĈ²ƒ$ÎÊ%Îpœ±‚à_¶=ä~Øg_îÉ;͹:ßt‚úÀX£hh£‘&nŠ]±Í¬þR#;˜ "îf:V/ðçbÊi|hñGá¿Ëbe•^åuƒìŠÚÇ}Ž#W¦V€+k¤ê-Å%t…eÛíFeæg*ëtŒDý™RQY÷•ÉÀJ¨°}Õ4Ô ò÷´‚)Z… ­ ÚcðÑ*j%•ÍÍéÞ o ;ȆWüXX3®õ bÚt õIöè#l S¿]U‘„¤9‚ó™*Ò„é¾1:'ÿ²jQ‡ ƒëxY´^Ëò°[ &à`¯‘s8|Ï8Ü­aQ5/|å(pga®µ›.užm‹oÙøŽ‹7ÀÏΘ_~ýðæöýÛ#V+趬omôòK Å?,—gZ®U4“âJ‡ žŒ€¸m76¾Wõ^hêÆü#H.ÁÍ‚{$WW!y +ÚZMÏC¹  <}ÊA¬Òâ2”û"UÚ²By: +åb€2@ï•qä'`nŽ`žBr3w‹˜“b +À 'Wuµ³x©ãoy]Ù‘qÑ+ʦͳ%.Y¸² m…¿òvÐ+oWÃÆ`—æx`–¦f»ãèfGÝà·‡b/òl,-ñ¡fŸ:žaˆw'T½zæCÀ“©vå;€ Eg\Örô$v®±—P95òPÉ’ÀسýˆQ6¤U›?ÿÚÐáo±Ûos›Jn¾{¿|_mÑDøÅÃÌ1òõT©ø x‚hé±Ó„ØiF°s_ÙÞqå9W<ë‰i=Ž!zÞÞ>Žs&¹‹”‘Ž•¼ãézÒåFó’)ûŠÄ¯x¡Ò§/T½‡)ûª‡à®!ú{gҳΠôõ3µ÷‘ç¼}vož`‰føæiRh\ÊÞäe^g=€uU0ßpð*¿Ãìžæn¸¸aqJýÈnÝAÉžEÝy½ž +϶Åâ.¬ WÕÃã:/OMþ«û§; +endstream +endobj +4568 0 obj << +/Type /Page +/Contents 4569 0 R +/Resources 4567 0 R +/MediaBox [0 0 612 792] +/Parent 4537 0 R +/Annots [ 4559 0 R 4560 0 R 4561 0 R 4562 0 R 4563 0 R 4564 0 R 4565 0 R ] +>> endobj +4559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 636.458 182.077 647.362] +/A << /S /GoTo /D (group__avr__math_g3630cb8cef4560cf0d92e82ae05b03f0) >> +>> endobj +4560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.504 586.639 175.739 597.543] +/A << /S /GoTo /D (group__avr__math_g9b995838b7bdd4886549dd7e308d0619) >> +>> endobj +4561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.542 435.335 185.181 446.239] +/A << /S /GoTo /D (group__avr__math_ga759c9a1684b0cf2c4c5d133771192ce) >> +>> endobj +4562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.605 423.38 478.476 434.284] +/A << /S /GoTo /D (group__avr__math_g6eb04604d801054c5a2afe195d1dd75d) >> +>> endobj +4563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.612 295.987 180.27 306.89] +/A << /S /GoTo /D (group__avr__math_g85861fee92c0904e9bb7a9875ee77579) >> +>> endobj +4564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 254.452 180.413 265.356] +/A << /S /GoTo /D (group__avr__math_g85861fee92c0904e9bb7a9875ee77579) >> +>> endobj +4565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.45 150.969 211.985 161.873] +/A << /S /GoTo /D (group__avr__math_g41b41c307b8f96760e9c0c17180b241b) >> +>> endobj +4570 0 obj << +/D [4568 0 R /XYZ 132.768 705.06 null] +>> endobj +4571 0 obj << +/D [4568 0 R /XYZ 133.768 667.198 null] +>> endobj +4494 0 obj << +/D [4568 0 R /XYZ 418.887 639.611 null] +>> endobj +4572 0 obj << +/D [4568 0 R /XYZ 133.768 622.884 null] +>> endobj +4493 0 obj << +/D [4568 0 R /XYZ 133.768 486.524 null] +>> endobj +4573 0 obj << +/D [4568 0 R /XYZ 133.768 471.954 null] +>> endobj +4425 0 obj << +/D [4568 0 R /XYZ 133.768 347.175 null] +>> endobj +4574 0 obj << +/D [4568 0 R /XYZ 133.768 332.605 null] +>> endobj +4479 0 obj << +/D [4568 0 R /XYZ 133.768 201.784 null] +>> endobj +4575 0 obj << +/D [4568 0 R /XYZ 133.768 187.214 null] +>> endobj +4492 0 obj << +/D [4568 0 R /XYZ 393.552 154.122 null] +>> endobj +4567 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4585 0 obj << +/Length 1458 +/Filter /FlateDecode +>> +stream +xÚ­XßoÛ6~÷_¡·I@Ìò7¥`ØÃÖ´huXç·¬hi›¶ÈR*ÉM³¿~G‘’­„Id$O"¥ãñî¾ãwGáháèýì÷ÅìÍ;*£ e‹MDCJ¦‘Ì’‰ëè:¦ÉäËâã›w„œÈR…X–‚¢NèW'1Ò¦âƒÀ^·;´ èa©z±ßÑ“õ—Éœÿ ê èÌWM2'W8&Ûų«ÅìûŒ€<ŽÈ‰GeXD«ýìú ŽÖðñc„;n;Ñ}Ä8ˆ»°ˆþ™ý=ÃχI(D™8† 1D3°c¯«Ã²0Éœ +× IãêP®Ýô_,°ÿÜy+Ä©rN`ƒ¿_¿þ „„p”qÞË€>â…ð‰Ðœ‰xÊ` ¤Ü /vÝ®3Ÿzëõùý,ºvÆZC­‰½Ú!‰7‡rÕæU™Å·=ÙH ‰dÀ‘S‰X™¶r:Û¤Ûª4º6MëÞæek"â­©Žã ÷v™PZ'ïé>ìt±¹M Wô{±Òiœœ¶zú`„ˆQ$T +Há1ÝÔÕÞ­ýÏÔÕ¼¼lZ£=šÕÆ=67 ñ»­)¸c#\bÿådàf•]s륽Wùþ¦jšr°¹— sŒ²LF°I8<7ŸM{¨­ö²¹¼¿v„I +ç‘",Ø1iæTú›µ›ü°öéâ`¬íœÅ64H3”v§ê©,PÙËt®‚z]ºç¨ZîMU÷_ L´Ì[sØ9KKÕ„Å°sÛ˜bãu{+jµÒ¬Ÿô8 §gúèÔ°SÐÉlœ„Ÿô§°º {uCꕽ”ÃñÖG1â” °‡{pþ!ÍÁk™©hÎ)"BXaÏ‚€ÓÔäÛr™·SÐVJ_…Á4*åÈïM}Œ­È‘íÌE©qíeU:ΰ“á ¸i¾qÏŽ)ß«PŽAÜUôÙ$Ç°ì´· ò:\s£‹î•i‘£@*Ué³OöÑr¹ÀâþYV­x¢zoÜ+íe¾…Ž£-F㨰å€=h*FÚ( t‚þå±4+}h¼®®®ÜH î¡BÃPnüMås¬. +GµÞúžì™çtÊ}•  r^Ž¨ ªãI{¦TñªÚßè:oº:)ÓøP2¹L 4@âŸ9¡§>»-E¥ñ¦+dEcl(9)‰vßãɃ%6©­!6±½–Û¼(ÜÈå±[¦Ý«>}„ÖD©±÷'E`J=bHdÔQ՚ɅˆŽÓ±+„…Ù›²Õ'½Hí„x¹Í‘€|ÇÐÓP¯ª?÷m†Ó¤ ´yM^Nä·4}-zKÖ½‰‰ý]c«æcݾßÝFtèl@…šŸ@çÇS$Ò稊CR‹{lots¨Íºï¼zë² c$)dä$ôopƒDÃ í¦ =>'¯Ó†C8˜dçô{)N»DÄw7¦^VE¾š4M’ðs  ÂB C˜faXX–ïõ¤æô¥‚¼,p¼3q.,`çKaR—®¥€€¿Žwƒ>¸:ô÷«ª}0Ê8bà’OÃÅ-ÕÊ0\<XhoµfÒ•–ýøu(Odˆrú´qðŸÐF÷){ØB—ÚÆGfÔŤJ]Á, I!®èÙÀ=Z_‰m-8½ñ½¬ÂŽSy]™¦O_ŸKST® +Ü~ÿð‰Òêr­kÏèkã/l öù’›ŽóPò°ÕÓJn†ã¯ÃJ÷Ÿàœ*`æKITlMùØRÈÉ9)5¹ê®AÍPìœ_ký/5èö´û'¿ÔR¸K¬ß›ÒÔºííêóØÜà­ñ5û†_RvIR7£ûÑÆÒk÷Ë&ºãÚ:a*žùÒkXú_Do«Ÿw[SÞwùÖè( +endstream +endobj +4584 0 obj << +/Type /Page +/Contents 4585 0 R +/Resources 4583 0 R +/MediaBox [0 0 612 792] +/Parent 4537 0 R +/Annots [ 4566 0 R 4576 0 R 4577 0 R 4578 0 R 4579 0 R 4580 0 R 4581 0 R ] +>> endobj +4566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.758 636.458 182.628 647.362] +/A << /S /GoTo /D (group__avr__math_g6eb04604d801054c5a2afe195d1dd75d) >> +>> endobj +4576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.392 509.065 187.148 519.968] +/A << /S /GoTo /D (group__avr__math_g36894d73110fda52c84dfc050f1004bb) >> +>> endobj +4577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 372.147 171.008 382.677] +/A << /S /GoTo /D (group__avr__math_g46e799ece7e1dd323d22cdb53c81cd73) >> +>> endobj +4578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 321.954 175.99 332.858] +/A << /S /GoTo /D (group__avr__math_gae45da8f56ba936dc8624157d1770faa) >> +>> endobj +4579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 272.135 174.326 283.039] +/A << /S /GoTo /D (group__avr__math_gdd1e40e370b2165c186f72ec631b1853) >> +>> endobj +4580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.45 222.316 221.08 233.22] +/A << /S /GoTo /D (group__avr__math_gd11825ff1d6095a08b193c564d524aef) >> +>> endobj +4581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 118.833 171.556 129.737] +/A << /S /GoTo /D (group__avr__math_ga2c2303658b8b2555bc97cce3f806bda) >> +>> endobj +4586 0 obj << +/D [4584 0 R /XYZ 132.768 705.06 null] +>> endobj +4587 0 obj << +/D [4584 0 R /XYZ 133.768 667.198 null] +>> endobj +4488 0 obj << +/D [4584 0 R /XYZ 133.768 560.597 null] +>> endobj +4588 0 obj << +/D [4584 0 R /XYZ 133.768 546.027 null] +>> endobj +4462 0 obj << +/D [4584 0 R /XYZ 133.768 422.589 null] +>> endobj +4589 0 obj << +/D [4584 0 R /XYZ 133.768 408.018 null] +>> endobj +4471 0 obj << +/D [4584 0 R /XYZ 387.006 374.926 null] +>> endobj +4590 0 obj << +/D [4584 0 R /XYZ 133.768 358.573 null] +>> endobj +4463 0 obj << +/D [4584 0 R /XYZ 352.377 325.107 null] +>> endobj +4591 0 obj << +/D [4584 0 R /XYZ 133.768 308.38 null] +>> endobj +4482 0 obj << +/D [4584 0 R /XYZ 388.063 275.288 null] +>> endobj +4592 0 obj << +/D [4584 0 R /XYZ 133.768 258.561 null] +>> endobj +4464 0 obj << +/D [4584 0 R /XYZ 133.768 169.648 null] +>> endobj +4593 0 obj << +/D [4584 0 R /XYZ 133.768 155.078 null] +>> endobj +4472 0 obj << +/D [4584 0 R /XYZ 400.834 121.986 null] +>> endobj +4583 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4606 0 obj << +/Length 1620 +/Filter /FlateDecode +>> +stream +xÚ­XKÛ6¾ûWèEb†¤¨×6HÑæÕä´‰‹Hƒ@¶h[©,º”´›EÑÿÞ!‡’%¯v7 ä`hD‡óüfdêí<ê½Zü²Z<~Éc/#Y ÕÖcaH’8õâ,"qƼUá}ô9'IðiõæñKÆF¼pûÛ®Þ´¥ªÑ-ÛN×3qïlÝ‘}”z­ªr3˜¿“u‹/j‹ú†c£8ãD~Ór:µ\°¸ç!3¾YrY¥Þ2ä„fÉ42É\d4˜ôM¡II¦ß'4!ISþÐÐEÕÕE3ãižNÓøOÇP,IÏcJlâZæZ6.žeÝÊ€EþNj·«ÜN•ë€¥§Òé–¯Uu­vðÈÏ«NžÊ V£ˆ£·xF’,„ˆ +ˆè96Óˆ‚ž&ÉMp±d„ +Ì¢ÓT–„Å3ðt&K|>Íä) -”\rAB1²Š0—£Ïe›—•,PÌsÙlty´á½-:•óa_ÚìŽ#1 žá£‚Bìò[ÜçÍ[¡e^À¥˜6á8#"A¢lðíÈ®±&P}ÑÉ»mÞÊÔý##<óË/Ùä5ª®®‘Z»û»ÆZlTRøüÒŽ†>^è°'Ld³‘À»rð>OÁ¾µ¬ ™Ùd3KÖ6C4ùÁQ¦ŠlŒl)Yî¾xH°Œ„ð_׸¬ta’×ÊQøD… U”ZnZc‚aí÷sHÿ}ÈÜT÷Ñ®‰—Õ=FÝû»ÁMaêª,Œ„‰Y…~U®u®¯qí¨•©µË² ®´w‡aÀ$¿ 9Ì y]Ü-¢RõîNb0¢!·‹Š9»Wq—6tô{Ô☦Mf™µí*¤·J#Qȼ*ëyþä'ó÷ø"µVºA.£% ÒiÝ[·!ë  ,¬ÉÁÀG¥ ´]-¡áyiÙ9ÎgHÓ­¯Û²–C‹D Ä}§ó™xŽ(”dY @(¹¾÷Vµòbrè¦OÏ?…ÈÔ¡ãN y{çawça¸/P`ã!ÿ;ø´`½Å ¾ís] Õw"èmR¾Ôn} 9 ~Ä 1÷_o<Õ4årÎõÐí9g÷Ý©‚ˆÖy[ž‚†Í^u•äµ[3€E¾Sº&ÜAcb2³iM©Sß ¤ÙÙ›ªÁÝ€4.[‡ÀÊ®RkÛs`Mc;.›Ö6^XÁ«Ë¬u"Œ¼kæ€s¿bã ¼Šû0Úœú³Þ<ä5à½Eu㤲.&‰<ÖÃjÂ0Vý§3ÙyŠ¸ŸL@¶'„ +w÷KsÔVvÊ­¼”¹ðð4‹Å©§Â^Q6›ÒÂNL°‹sé-ÎHïA.ÿñYtMRe3RâmÏöùãW%¸6? §0Ú¯kÕÏÅe^oPgîÿ¦F¢ï—=ë$;mlζÑØ5Œo¼}ý'R/ê@@XJ[›f=;w ’„ÃÈèêeí¢ü!È8 ã–~Wnúb¥þûv„{®1€®NN¿Né_óñºV=ÒÁ$’,¡ÌjcÏìÈEnzþ¡¬7UgŠ"†ÙéI?×=r†wîÆ#Øù¼î¶È*ëËç˜Jóµb   e"{©ÊbÜÆ3"b§Â¿vÍ*—↳­ÜžÎ£b§w¸Þˆ{¨HBÊP(*gµmYHš}töè¬úßœ¹W82öjÝP(š(dfÍx"tPèä.€ð„ò2YhÞ+¥œápÙf$LEUƒäV©¡¶ìB£²? µ<·l¤D4¶ì›mîE-›ÍG~ÈÌÙ2h¡áCþgèÿ_€o®¾0Gÿ/¤ {ë^ÉZj¨]qõßy«}×"¸ÏXF/xxÁR|ã”:jkjRévMê Lü%Ì™›ie?W_¯á»ýÜäÿ¯½‹¥ +endstream +endobj +4605 0 obj << +/Type /Page +/Contents 4606 0 R +/Resources 4604 0 R +/MediaBox [0 0 612 792] +/Parent 4537 0 R +/Annots [ 4582 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4611 0 R 4603 0 R ] +>> endobj +4582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 636.458 176.538 647.362] +/A << /S /GoTo /D (group__avr__math_gf4b72825a245b794090135251f0ead22) >> +>> endobj +4594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 586.736 179.855 597.64] +/A << /S /GoTo /D (group__avr__math_g1883497d16352bd92875499f1b39a4b6) >> +>> endobj +4595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.59 480.038 316.787 490.942] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.23 480.038 378.073 490.942] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.367 480.038 460.565 490.942] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 468.083 174.615 478.987] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 412.969 185.683 442.035] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.074 412.969 244.916 442.035] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 389.059 192.328 399.963] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.345 389.059 478.476 399.963] +/A << /S /GoTo /D (FAQ_faq_regbind) >> +>> endobj +4611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 377.104 304.805 388.007] +/A << /S /GoTo /D (FAQ_faq_regbind) >> +>> endobj +4603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.621 350.059 301.819 360.963] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4607 0 obj << +/D [4605 0 R /XYZ 132.768 705.06 null] +>> endobj +4608 0 obj << +/D [4605 0 R /XYZ 133.768 667.198 null] +>> endobj +4489 0 obj << +/D [4605 0 R /XYZ 366.205 639.611 null] +>> endobj +4609 0 obj << +/D [4605 0 R /XYZ 133.768 622.981 null] +>> endobj +4610 0 obj << +/D [4605 0 R /XYZ 465.88 589.89 null] +>> endobj +673 0 obj << +/D [4605 0 R /XYZ 133.768 573.26 null] +>> endobj +677 0 obj << +/D [4605 0 R /XYZ 133.768 546.648 null] +>> endobj +4604 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F36 2440 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4629 0 obj << +/Length 1308 +/Filter /FlateDecode +>> +stream +xÚµWYÛ6~÷¯Ð ˆ¢Žm E$›vãöe²MÛJlj«c7AÑÿÞá%KZÙ»Û¢/6E‡s|ßpˆ½­‡½w³_æ³çoiìe(‹áo¾ñc(‰S/Î8Š3âÍ×ÞµO)J‚/óÏßÒ“¥ bY +Š´Ð #1Ж $êjÑ|=Ü Ý„&£S'øò„¦Ì \!#Ø¿,e¸/Wù>)Çþ¶lÊ $)‰#Ÿpª”ÌÞÌgÎìÃéùFP†¹·:Ì®¿`o ‹<¬}¹Ó¢E JÔƽ÷iöÛ ÷Ƙ“%˜è€qŠÒ,ñbž ʸ1ð/u¸G2Dhê…ŠâÈ, „‚0ÆØ_îóݳɡ)A¥{àÊhfö³üs,ª +þˆS§J‡˜¸R†©TÈ ¦ï|WØìlm”4ÉÓù­úî×h²Iƒ×‰À:h¬x2h´\›Öu‚¶Ç}l‹E3”Æô‰-Ö©–ˆÄðj£–èSËç:§ÒÆCÞÌýO½Q3ù2Ì ¥ì)ïB÷€ŽÁè zè4CÌ=`Þ )ª¼qÔv¨˜ïZÛe‹•D¶èá Ê.Hj¾(Æv´Q(rË5¤ôî‹åjX6^—ßl…»ü` ák +endstream +endobj +4628 0 obj << +/Type /Page +/Contents 4629 0 R +/Resources 4627 0 R +/MediaBox [0 0 612 792] +/Parent 4537 0 R +/Annots [ 4614 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R ] +>> endobj +4614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 532.971 199.252 543.875] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 520.02 212.891 530.924] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 393.168 174.615 404.072] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.716 393.168 414.914 404.072] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.001 381.213 313.844 392.117] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.727 369.258 304.924 380.162] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 325.556 192.328 354.622] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.221 325.556 374.064 354.622] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.859 269.9 379.056 298.966] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.509 253.96 333.706 264.864] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4630 0 obj << +/D [4628 0 R /XYZ 132.768 705.06 null] +>> endobj +4631 0 obj << +/D [4628 0 R /XYZ 133.768 551.945 null] +>> endobj +681 0 obj << +/D [4628 0 R /XYZ 133.768 506.446 null] +>> endobj +4613 0 obj << +/D [4628 0 R /XYZ 133.768 484.134 null] +>> endobj +4632 0 obj << +/D [4628 0 R /XYZ 133.768 484.134 null] +>> endobj +4612 0 obj << +/D [4628 0 R /XYZ 133.768 203.349 null] +>> endobj +4633 0 obj << +/D [4628 0 R /XYZ 133.768 188.779 null] +>> endobj +4627 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F55 3943 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4650 0 obj << +/Length 1330 +/Filter /FlateDecode +>> +stream +xÚ½XKÛ6¾ûWèE"†¤D=AmHAš¸½ì.²E[JeÉ¥¨l6¿¾Ã—Wòcãݦ="ÅápæûæA{k{og¿ÎgÏßÐÄËQžÀc¾òH¡4ɼ$g(ɉ7/½KŸR”×ó÷Ïß2’¥)Šò i¡Fb¢-Ei¼èeY·UG4EEÙNðå M¹¸ˆ`ÿ³,Ú²eR†ýw­äk.Ìd¤±·å}’8Å™OX¤´Î^ÏgÏ(Â9KPŽ™·ÜÌ.¯±WÂâ{kçnµèÆ‹b%jcã}žý>ÃA£H¬­ÆOS| S–"1‹—_6Û+Ì0üˆ¶Íéô.CJ¿/Šý¯a¾òƒ’Ô—Ìš,–™á²Ç•Ð7ùœ·A [jѵÞJ³©n žÑ„ç,GIš8DonÀ˜…ÅO™ÁqäÄV0‡6…ÔPƒú¡·6-î¬ûˆXš®]ŸvÙG %Ïý9¸+^H)Äs/$@s¨Y¿â‘ßæÅmÝ4f´àæY8Êü¢©K°ÙÆJ½2Oƒ' VC»”u×ZMU½¬ì)EÓÀ®ÓŽÌ¨ Áå ÚMÖö"<Ä(ÏðB]»û1€0/D±áw1Ù~¯À ¨hÂŒî“;>{Â2C1MË„8¶. W©ûÝJ=#_BNÙhŠFû8î¢N»Y «#ÑÇ0Üå¹…Y鯺¦ìí•=Ór­ÞÕ-DÞ¦0 éµÁí”U!MÀš 6 —¿‡‰¡¹m§ñ"x/;ÁˇyŠ1JhDEˆåâOŠ`ŒíKûA³_ùz8žT6Ož`óP1}¿V·k3-kÁ—²¹ æ? „A.´¥Yk»6üÎEgf· tLÅJt›S€-à‰1ýá× ½V> endobj +4624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 654.082 167.97 664.986] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.674 654.082 457.517 664.986] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.469 642.127 410.667 653.031] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 544.826 185.683 573.892] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +4635 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 532.871 192.328 543.775] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +4636 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [238.186 313.172 263.431 324.076] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +4637 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.149 300.22 278.375 311.124] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +4638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.561 287.269 261.787 298.173] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +4639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.524 274.317 276.731 285.221] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +4640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.765 261.366 281.991 272.27] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +4641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.728 248.415 296.935 259.318] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +4642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.969 235.463 302.195 246.367] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +4643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.932 222.512 317.139 233.416] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +4644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 140.373 220.273 151.277] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +4645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 140.373 252.104 151.277] +/A << /S /GoTo /D (group__avr__stdint_g9d283932a52e505ae3b2a4f902e8b53c) >> +>> endobj +4646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 127.422 225.255 138.326] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +4647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 127.422 262.066 138.326] +/A << /S /GoTo /D (group__avr__stdint_g2c8c1b9f53772a86b0827ce7399b68aa) >> +>> endobj +4651 0 obj << +/D [4649 0 R /XYZ 132.768 705.06 null] +>> endobj +4652 0 obj << +/D [4649 0 R /XYZ 133.768 523.905 null] +>> endobj +685 0 obj << +/D [4649 0 R /XYZ 133.768 519.297 null] +>> endobj +689 0 obj << +/D [4649 0 R /XYZ 133.768 492.686 null] +>> endobj +4653 0 obj << +/D [4649 0 R /XYZ 133.768 357.521 null] +>> endobj +4654 0 obj << +/D [4649 0 R /XYZ 133.768 184.723 null] +>> endobj +4648 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F36 2440 0 R /F55 3943 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4709 0 obj << +/Length 1009 +/Filter /FlateDecode +>> +stream +xÚÝXYoã6~÷¯Ð ©¸²zhõplä0^CÎÞnëa9’߆ƒ«÷@w ϼ·çzXŽä¹áàê=ÐÈsŽµ·çzXŽä¹áàê·Ñm¥mSå;V‹X +H¯ l댙ª š??ÑM +¯Ë:L’µ˜Ì VòÚXþw _Yx¢90¼Iû +ÝÉfþá?$ù+x'›ÿ‡ü àlxàBp]ÈÓiȳïÏ&ÿÀð ¼›`ËÒ#ZÆ‹,¬Dg q§8pŠ° +Åh®Â§„ŠI>ço[/誠%Íþ•fœ-&ÏM Kê×ÍŽJnŠÚâ5‡Ç.I¶¼Ïl +Ë,/˜òUžE›:ÄÍQe&—®©³öê,”êòb}ü´W§áëiÆï.°!qû%NãJþX4'ßýøÙPŸ¦m¹zœ®š²dqœg¥X,—yD|ì°(ç3*vXø”r˜†³"— yÆv8ùË’fbm:½ .ÇÓ/“›I05ûbñæ° >þÆŸ_ï¤1Òf¥6RÿVó¼ = ÄN–]Ø;½ŒžóØòF§)Ñno´Î¨Û1ñƒvúm‘l)eEœÍ’:bFtÂÍD¶‡}-¿lNàÝÀœÜÞôæâïm|¾ºóîúÀŠ³—îÉmŸîGhCs®Y2Å ±-Ô Öý{>ḦÓñ×Ûñ…Ò¾ ~ïB V;اá&€Ò.°\¬hð½y&m¿ß1¾·Áå{À%û´·T[˾K¼v[Ëóqä—wM3Z°\®’}&›oËZ .éL , žcrŽ<1ÃzêjÃJ”*!Ÿ<qu3‰Ÿ¤„'y ºÌ_× šm›ü'¢ÿ† +endstream +endobj +4708 0 obj << +/Type /Page +/Contents 4709 0 R +/Resources 4707 0 R +/MediaBox [0 0 612 792] +/Parent 4655 0 R +/Annots [ 4664 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R 4670 0 R 4671 0 R 4672 0 R 4673 0 R 4674 0 R 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R 4696 0 R 4697 0 R 4698 0 R 4699 0 R 4700 0 R 4701 0 R 4702 0 R 4703 0 R ] +>> endobj +4664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 604.414 215.292 615.318] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +4665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.79 604.414 264.278 615.318] +/A << /S /GoTo /D (group__avr__stdint_gadfd725efbf565422ab13db91ccca53c) >> +>> endobj +4666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 591.532 220.273 602.436] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +4667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 591.532 274.24 602.436] +/A << /S /GoTo /D (group__avr__stdint_gc76e2383debd5a3b100514044828961a) >> +>> endobj +4668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 578.649 220.273 589.553] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +4669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 578.649 274.24 589.553] +/A << /S /GoTo /D (group__avr__stdint_g17f379713bed2a28ac431760401253cd) >> +>> endobj +4670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 565.767 225.255 576.671] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +4671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 565.767 284.203 576.671] +/A << /S /GoTo /D (group__avr__stdint_g4f3f6e6631cb4aaeadf1c59ff597b2fb) >> +>> endobj +4672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 552.884 220.273 563.788] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +4673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 552.884 274.24 563.788] +/A << /S /GoTo /D (group__avr__stdint_g2676b57a778795e5d0598970f1407f38) >> +>> endobj +4674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 540.002 225.255 550.906] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +4675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 540.002 284.203 550.906] +/A << /S /GoTo /D (group__avr__stdint_gc0af81082969e5e3f4d939b1de7002ac) >> +>> endobj +4676 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 527.119 220.273 538.023] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +4677 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 527.119 274.24 538.023] +/A << /S /GoTo /D (group__avr__stdint_g2073b30b3170d509bc756bf5c7862caf) >> +>> endobj +4678 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 514.237 225.255 525.141] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +4679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 514.237 284.203 525.141] +/A << /S /GoTo /D (group__avr__stdint_gb604f73dd823867b43702ae88b4f4445) >> +>> endobj +4680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 432.436 215.292 443.34] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +4681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.79 432.436 260.303 443.34] +/A << /S /GoTo /D (group__avr__stdint_g880ed9ceb8621521452c81d03bd08cfb) >> +>> endobj +4682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 419.554 220.273 430.458] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +4683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 419.554 270.265 430.458] +/A << /S /GoTo /D (group__avr__stdint_gd0fca8b15c218d2c687f8c373a71d228) >> +>> endobj +4684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 406.671 220.273 417.575] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +4685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 406.671 270.265 417.575] +/A << /S /GoTo /D (group__avr__stdint_g9b7386d4af0e20ee32296d9a158c9f3a) >> +>> endobj +4686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 393.789 225.255 404.693] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +4687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 393.789 280.228 404.693] +/A << /S /GoTo /D (group__avr__stdint_g6ed085329b153773ff76afa0702cf897) >> +>> endobj +4688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 380.906 220.273 391.81] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +4689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 380.906 270.265 391.81] +/A << /S /GoTo /D (group__avr__stdint_g920d4b149da0252281b6762375fb644a) >> +>> endobj +4690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 368.024 225.255 378.928] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +4691 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 368.024 280.228 378.928] +/A << /S /GoTo /D (group__avr__stdint_g8f075c759c74e109e8184306c663809d) >> +>> endobj +4692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 355.141 220.273 366.045] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +4693 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 355.141 270.265 366.045] +/A << /S /GoTo /D (group__avr__stdint_gfd072b9a94c14417246175f6442422ae) >> +>> endobj +4694 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 342.259 225.255 353.163] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +4695 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 342.259 280.228 353.163] +/A << /S /GoTo /D (group__avr__stdint_g6fd055dddb7d91fab0635146851af8d5) >> +>> endobj +4696 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 248.503 220.273 259.407] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +4697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.772 248.503 258.191 259.407] +/A << /S /GoTo /D (group__avr__stdint_g036cd61bb4b30bb510b9538af4cebd1d) >> +>> endobj +4698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 235.62 225.255 246.524] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +4699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.753 235.62 268.153 246.524] +/A << /S /GoTo /D (group__avr__stdint_g2ba5f6c0633401558d277b2c0e4f758d) >> +>> endobj +4700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.178 168.951 284.789 178.087] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +4701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 142.841 241.295 152.769] +/A << /S /GoTo /D (group__avr__stdint_gaf7f29f45f1a513b4748a4e5014ddf6a) >> +>> endobj +4702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 129.356 237.419 139.886] +/A << /S /GoTo /D (group__avr__stdint_gadcf2a81af243df333b31efa6461ab8e) >> +>> endobj +4703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 116.473 248.488 127.004] +/A << /S /GoTo /D (group__avr__stdint_geb4e270a084ee26fe73e799861bd0252) >> +>> endobj +4710 0 obj << +/D [4708 0 R /XYZ 132.768 705.06 null] +>> endobj +4711 0 obj << +/D [4708 0 R /XYZ 133.768 648.488 null] +>> endobj +4712 0 obj << +/D [4708 0 R /XYZ 133.768 476.51 null] +>> endobj +4713 0 obj << +/D [4708 0 R /XYZ 133.768 304.532 null] +>> endobj +4714 0 obj << +/D [4708 0 R /XYZ 133.768 197.894 null] +>> endobj +4707 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4771 0 obj << +/Length 802 +/Filter /FlateDecode +>> +stream +xÚÍX]o›0}çWXÚ hÃõ`ˆ¦I]×V­X§- Mj«(-$EjȖеù÷3ؤâ¤Cõ…¯{}sîñ‰l¦Sís œxÐsø-˜L)dŽ φŽ‡AKè×ÁùÁ Æ•\ õ\^¨Hú(2jÕdÖ:a™EIšÁ»†J”@ê®?)*yeÂÀ0)Fú0§Ñx&±‘~–fñ4^ˆ—À`–¾ú/ [ ¹:¶í¼ªvh¿5Ì !€+Íbè!ÜδËk"<¨hî±HjñTœ¼Cí»†$ƒ¨Æ$ª2i#HŽÍ ¡¶@~EˆÀQŽ—¦þ.Š¯"i,ƒ9ºÅTÂüQ¤=^Ø}=ü¹Y#¢'61ˆ­ËK-èÙ¸KgM0®Ìg Å7SÜ0áf`¤`áV‚rd£ÑÑ·‹£Cc¬ù‡õˆcXb䵪bçZñ.%ÈÑP)ST“©ÅH™CBQò½ì>|Ù¾I, -‹v==”¼R% ¿géäضKG¢¯IÇ߇vÔ´©´#Fô¡C<þþÔãXíÕóÚ‹ï÷9™²‰í2“mÖe¶Eg¸3© VéLŒèEg/„æ?—¯y03躘ܯ±'-ÍOfI¶ƒçqŸ%i2{˜™I”݉OIÕž³Âš«íoš§-êñ_$Ðq:óΑ|8 \÷<£!Öùú·FѬNb3ÖýZ·ƒŒp¯l¨M[áè=âPNKS°¯yQî—µ%*ü²ó…ü‡rfš‚ݯڻ ÷ˈÚDÓ“BÔF«pá¾þ3jBêž»ik¥Ù®f©]m2^fñ2{Ûw’ï|Û»éH£ëðo»“’½y]‰¤µÝ‘^ ´r¼&¨½éuÏKkßý@ie}¤û)jï~Ýóò ° +å{ànZ[ÏÆ3QÏ…Œþˉhy–ìð-(u«gÉ®iép§q/ÆY,mç©<¯½{_â[ñ`Éí(:À®x#ɧâa.½vœ¿üY”éæ}r#+ܬdÉùÓj§›-ÿ»r6¹ +endstream +endobj +4770 0 obj << +/Type /Page +/Contents 4771 0 R +/Resources 4769 0 R +/MediaBox [0 0 612 792] +/Parent 4655 0 R +/Annots [ 4704 0 R 4705 0 R 4706 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R 4756 0 R 4757 0 R 4758 0 R 4759 0 R 4760 0 R 4761 0 R 4762 0 R 4763 0 R 4764 0 R 4765 0 R ] +>> endobj +4704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 655.059 246.276 664.986] +/A << /S /GoTo /D (group__avr__stdint_gc58f2c111cc9989c86db2a7dc4fd84ca) >> +>> endobj +4705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 641.504 242.401 652.035] +/A << /S /GoTo /D (group__avr__stdint_gd4e9955955b27624963643eac448118a) >> +>> endobj +4706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 628.553 253.469 639.083] +/A << /S /GoTo /D (group__avr__stdint_g3ea490c9b3617d4479bd80ef93cd5602) >> +>> endobj +4736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 616.204 246.276 626.132] +/A << /S /GoTo /D (group__avr__stdint_g181807730d4a375f848ba139813ce04f) >> +>> endobj +4737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 602.65 242.401 613.18] +/A << /S /GoTo /D (group__avr__stdint_g688eb21a22db27c2b2bd5836943cdcbe) >> +>> endobj +4738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 589.699 253.469 600.229] +/A << /S /GoTo /D (group__avr__stdint_gb5eb23180f7cc12b7d6c04a8ec067fdd) >> +>> endobj +4739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 577.35 246.276 587.278] +/A << /S /GoTo /D (group__avr__stdint_gd0d744f05898e32d01f73f8af3cd2071) >> +>> endobj +4740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 563.796 242.401 574.326] +/A << /S /GoTo /D (group__avr__stdint_gb21f12f372f67b8ff0aa3432336ede67) >> +>> endobj +4741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 550.844 253.469 561.375] +/A << /S /GoTo /D (group__avr__stdint_g30654b4b67d97c42ca3f9b6052dda916) >> +>> endobj +4742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 496.587 277.27 506.515] +/A << /S /GoTo /D (group__avr__stdint_ga05109908fb2770f632d2b646b9f85bf) >> +>> endobj +4743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 483.636 273.394 493.564] +/A << /S /GoTo /D (group__avr__stdint_g3e986cad833f63f420962ff60eda87e5) >> +>> endobj +4744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 470.685 284.463 480.612] +/A << /S /GoTo /D (group__avr__stdint_g2a80bde77ee1698d0f42f334adad4f2b) >> +>> endobj +4745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 457.733 282.251 467.661] +/A << /S /GoTo /D (group__avr__stdint_g7eb2a8e2a1c65d6c9ad0f86154890baa) >> +>> endobj +4746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 444.782 278.376 454.709] +/A << /S /GoTo /D (group__avr__stdint_g1f91bfd5820c2f27af3d260fc75813e1) >> +>> endobj +4747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 431.83 289.444 441.758] +/A << /S /GoTo /D (group__avr__stdint_g6ef6a1a518bbf516ca8b0180b11c358f) >> +>> endobj +4748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 418.879 282.251 428.807] +/A << /S /GoTo /D (group__avr__stdint_g5618711a0a54f722190a3a1219e278c2) >> +>> endobj +4749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 405.927 278.376 415.855] +/A << /S /GoTo /D (group__avr__stdint_g2360a536116dd734820a6b5b3d560ce7) >> +>> endobj +4750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 392.976 289.444 402.904] +/A << /S /GoTo /D (group__avr__stdint_g70cad8bacc9a6db301e1cdc86cc8d571) >> +>> endobj +4751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 380.025 282.251 389.952] +/A << /S /GoTo /D (group__avr__stdint_g35d0f98a2e507fd1be779d49da92724e) >> +>> endobj +4752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 367.073 278.376 377.001] +/A << /S /GoTo /D (group__avr__stdint_gc12b4f6966b57ad82feb683b284b4060) >> +>> endobj +4753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 354.122 289.444 364.049] +/A << /S /GoTo /D (group__avr__stdint_gab530113fa96e280e49c3c138b0f917d) >> +>> endobj +4754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 299.262 269.897 309.19] +/A << /S /GoTo /D (group__avr__stdint_gcbcdb3bee0f5f904da5df8de69a80ca3) >> +>> endobj +4755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 286.311 266.022 296.238] +/A << /S /GoTo /D (group__avr__stdint_gad8fb982cb19143efd5ee9a1a7a89390) >> +>> endobj +4756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 273.359 277.09 283.287] +/A << /S /GoTo /D (group__avr__stdint_g2c6f97ea2d76d0cf6260c84046cdb44e) >> +>> endobj +4757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 260.408 274.879 270.335] +/A << /S /GoTo /D (group__avr__stdint_g2fd35d0ea091e04caec504ff0042cf00) >> +>> endobj +4758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 247.456 271.003 257.384] +/A << /S /GoTo /D (group__avr__stdint_g169460a4e2a79138723d68d99372d958) >> +>> endobj +4759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 234.505 282.072 244.433] +/A << /S /GoTo /D (group__avr__stdint_ged28ca63d9b222f6f1377358fe73a183) >> +>> endobj +4760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 221.553 274.879 231.481] +/A << /S /GoTo /D (group__avr__stdint_gc96fa0f41b19e89f109e4f9913ca6635) >> +>> endobj +4761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 208.602 271.003 218.53] +/A << /S /GoTo /D (group__avr__stdint_gd93df1652ed0635513d5efe4f1219926) >> +>> endobj +4762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 195.651 282.072 205.578] +/A << /S /GoTo /D (group__avr__stdint_gd51246a178143208b2db3315efd21c45) >> +>> endobj +4763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 182.699 274.879 192.627] +/A << /S /GoTo /D (group__avr__stdint_g13c95cf9c209d8daacb36cbf0d5ba275) >> +>> endobj +4764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 169.748 271.003 179.675] +/A << /S /GoTo /D (group__avr__stdint_g50f0fdcb00ea2500cec0f3d6d45c36f3) >> +>> endobj +4765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 156.796 282.072 166.724] +/A << /S /GoTo /D (group__avr__stdint_geb74410af7781bc84b5f64ae7a8f4a17) >> +>> endobj +4772 0 obj << +/D [4770 0 R /XYZ 132.768 705.06 null] +>> endobj +4773 0 obj << +/D [4770 0 R /XYZ 133.768 512.682 null] +>> endobj +4774 0 obj << +/D [4770 0 R /XYZ 133.768 315.357 null] +>> endobj +4769 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4832 0 obj << +/Length 1049 +/Filter /FlateDecode +>> +stream +xÚåX[o›H~÷¯@ÚP—é\¸F«JY§‰\ÙI7ÆÒj“ÊÂÛ¬lH7Í¿ïfÀ†`7­pªÕ>ØÌåpøÎwÎ|3€•¥‚•«ÞŸ^ïí%µ¹\¼…BC¶å(–k"Ë%Š(w*¥ÈÑ>yÞ^²gKmÄ\F‹š7ÙFeåAçhÕâ‰QÄœÊðÝOnip¦éŒ`uœûq০S«ƒ8—a*:žfêÓC˜i:1lì¨Ä´¸×Þ{¯÷¹GÀVÈ^°¹ØTæ›ÞÝ'¬0ùAÁEp…éFa˜~ãZ÷þêáï3hÚˆ2S F›(϶d!®Ñ>à\€å͹ÿàÏÖaÝx•¬½¥œýÎsÑ~H¸Ÿ4+¢+Q$¼ÉBsòhYÑ=¥fíåN71V Â{ŒiÊIÎSº”„ÝfÛ×ÞGïv::ÿ»éDÎëù$VtB‘k’N! ®@hNv arœ†I‡FèeV ø‰{¤N–©F5ôó0ËõÇ(ÈWëçÕkB;R–q¸h§Ö‡pú8BäÆÃÏÖ@’¯ÊL·§½‘m‘ˆd.ûoÞhºiØj´yX‡›0Îý> endobj +4766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 632.394 254.585 642.321] +/A << /S /GoTo /D (group__avr__stdint_g9e5742f2bae4a5283431a3c03499e3a9) >> +>> endobj +4767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 619.442 250.709 629.37] +/A << /S /GoTo /D (group__avr__stdint_g2aaa6d3aa1d7d1e0e326955aa24db752) >> +>> endobj +4768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 606.491 261.778 616.418] +/A << /S /GoTo /D (group__avr__stdint_gb2355300ea19395357e62d780f4dd073) >> +>> endobj +4808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 551.631 259.556 561.559] +/A << /S /GoTo /D (group__avr__stdint_g022b9b0a3564d786244a4631847c37a3) >> +>> endobj +4809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 538.68 255.681 548.607] +/A << /S /GoTo /D (group__avr__stdint_g2b0a3edfc672154f606dc3ad26277b61) >> +>> endobj +4810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 525.728 266.749 535.656] +/A << /S /GoTo /D (group__avr__stdint_ga54fd5210434219e9027bfa0f0e325c8) >> +>> endobj +4811 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.178 458.02 284.789 467.157] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +4812 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 431.635 259.576 441.562] +/A << /S /GoTo /D (group__avr__stdint_gdd2ef7bffac19cfdd1f4b5495409672f) >> +>> endobj +4813 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 418.683 255.7 428.611] +/A << /S /GoTo /D (group__avr__stdint_gd9b88ba2fb858f98b50b38e49875d90e) >> +>> endobj +4814 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 405.732 278.754 415.66] +/A << /S /GoTo /D (group__avr__stdint_g1f5fe9445d0ad0bee21bab1de4cc3e58) >> +>> endobj +4815 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 392.78 274.878 402.708] +/A << /S /GoTo /D (group__avr__stdint_g21e605b9ac3a03b6de93cdf5a69e129f) >> +>> endobj +4816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 379.226 240.747 389.757] +/A << /S /GoTo /D (group__avr__stdint_g3c75bb398badb69c7577b21486f9963f) >> +>> endobj +4817 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.178 312.121 284.789 321.258] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +4818 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 255.553 224.697 266.084] +/A << /S /GoTo /D (group__avr__stdint_gcc666d136a198406538bafb8288f9c1b) >> +>> endobj +4819 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.795 255.553 285.04 266.084] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +4820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 242.602 231.89 253.132] +/A << /S /GoTo /D (group__avr__stdint_gcb579905e23358f9a5035b075c57ffcd) >> +>> endobj +4821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.988 242.602 297.214 253.132] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +4822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 229.651 229.678 240.181] +/A << /S /GoTo /D (group__avr__stdint_g1e6d0a954851b2f07b54a2178dc6eb40) >> +>> endobj +4823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 216.699 236.871 227.229] +/A << /S /GoTo /D (group__avr__stdint_gb93c67f535ddedd6e88a9a8030b333f1) >> +>> endobj +4824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 203.748 229.678 214.278] +/A << /S /GoTo /D (group__avr__stdint_g1ddf83530d986214005d1e766f036b28) >> +>> endobj +4825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 190.796 236.871 201.327] +/A << /S /GoTo /D (group__avr__stdint_gd76f76a71e9ffc13963ee895d1828b2c) >> +>> endobj +4826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 177.845 229.678 188.375] +/A << /S /GoTo /D (group__avr__stdint_gab7df05e4698e14dbef512294ff39203) >> +>> endobj +4827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 164.893 236.871 175.424] +/A << /S /GoTo /D (group__avr__stdint_ge770776c04e6d959364d2612ddfce99d) >> +>> endobj +4828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 151.942 242.958 162.472] +/A << /S /GoTo /D (group__avr__stdint_gefea1274b2789b420969856ac1a8f19e) >> +>> endobj +4829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 138.99 250.151 149.521] +/A << /S /GoTo /D (group__avr__stdint_g97a030e600e111b2b5981b4c39265ab6) >> +>> endobj +4833 0 obj << +/D [4831 0 R /XYZ 132.768 705.06 null] +>> endobj +4834 0 obj << +/D [4831 0 R /XYZ 133.768 648.488 null] +>> endobj +4835 0 obj << +/D [4831 0 R /XYZ 133.768 567.726 null] +>> endobj +4836 0 obj << +/D [4831 0 R /XYZ 133.768 486.963 null] +>> endobj +4837 0 obj << +/D [4831 0 R /XYZ 133.768 341.064 null] +>> endobj +4830 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4861 0 obj << +/Length 680 +/Filter /FlateDecode +>> +stream +xÚ½–mo›0Çßó),í HÃõƦš&uíZµÊ:MåŤ¶ŠhpÒHº„ní·ß!ƒ(‡vAŠÀöù|¿»àš ‚.¬/¡utÎ|àÀ‡[8F”s,}…ü@`? (ŒÑ­ÍVÎ}xutNiÖIÌŽJ£OÆ¢åMbé- yÓw„°T›PϲÑóL§y”O³´ˆüºÌÃx{1­vˆ[Û/¯CêOïˆ ¿HJ”<ú fu9U¥”4…c¨Ä>óÌ1m·‘¹²tYÎÍ(›{™5OPP8=_S0ðÎ!«R¶ XÄ·“ŸfH^äx<Þrͪì‰^T>e‹i>u˜(À…­ë$ÀD™ƒ–¶c7 õìc–ÄxkÞËsym†EqÜF×ÜhY«¤‹Y”$KL8è&P”Öë¤å¬S‚Ãáé÷ëÓ'vØ2ùhÖÛe`_yBd}òô[€¢pEžÅ5è‰[¼“FK€ÝªÖ†ò{¡V5Ú­5º©DâEúf\Ù‰ë{û‹tËì«Rm{•ª>Â5*­¯Á!äZ’¼¥~A/ݪ\›ÄK¹øR݃·ýR¥¤Xu굘.~€æk¾÷ÿ÷¥ªvøäSÚÃ×Rë>øª»XË–nm‹(,ù. bÝú®š¡ +0÷«¿Û…Nõ<ÊuÕÃfUPáãsÕê‘yð*m“cÆ©2#FHõ4.ˆ³y]Ç"s‡KÛM¦•‡‡×ºß|yètù/xJðO +endstream +endobj +4860 0 obj << +/Type /Page +/Contents 4861 0 R +/Resources 4859 0 R +/MediaBox [0 0 612 792] +/Parent 4655 0 R +>> endobj +4862 0 obj << +/D [4860 0 R /XYZ 132.768 705.06 null] +>> endobj +693 0 obj << +/D [4860 0 R /XYZ 133.768 667.198 null] +>> endobj +4851 0 obj << +/D [4860 0 R /XYZ 133.768 650.391 null] +>> endobj +4863 0 obj << +/D [4860 0 R /XYZ 133.768 650.391 null] +>> endobj +4775 0 obj << +/D [4860 0 R /XYZ 264.377 615.262 null] +>> endobj +4864 0 obj << +/D [4860 0 R /XYZ 133.768 598.753 null] +>> endobj +4776 0 obj << +/D [4860 0 R /XYZ 302.335 565.661 null] +>> endobj +4865 0 obj << +/D [4860 0 R /XYZ 133.768 549.152 null] +>> endobj +4853 0 obj << +/D [4860 0 R /XYZ 310.613 516.06 null] +>> endobj +4866 0 obj << +/D [4860 0 R /XYZ 133.768 499.551 null] +>> endobj +4778 0 obj << +/D [4860 0 R /XYZ 264.377 466.459 null] +>> endobj +4867 0 obj << +/D [4860 0 R /XYZ 133.768 449.95 null] +>> endobj +4779 0 obj << +/D [4860 0 R /XYZ 302.335 416.858 null] +>> endobj +4868 0 obj << +/D [4860 0 R /XYZ 133.768 400.349 null] +>> endobj +4855 0 obj << +/D [4860 0 R /XYZ 310.613 367.257 null] +>> endobj +4869 0 obj << +/D [4860 0 R /XYZ 133.768 350.748 null] +>> endobj +4781 0 obj << +/D [4860 0 R /XYZ 264.377 317.656 null] +>> endobj +4870 0 obj << +/D [4860 0 R /XYZ 133.768 301.147 null] +>> endobj +4782 0 obj << +/D [4860 0 R /XYZ 302.335 268.056 null] +>> endobj +4871 0 obj << +/D [4860 0 R /XYZ 133.768 251.547 null] +>> endobj +4849 0 obj << +/D [4860 0 R /XYZ 310.613 218.455 null] +>> endobj +4872 0 obj << +/D [4860 0 R /XYZ 133.768 201.946 null] +>> endobj +4733 0 obj << +/D [4860 0 R /XYZ 259.396 168.854 null] +>> endobj +4873 0 obj << +/D [4860 0 R /XYZ 133.768 152.345 null] +>> endobj +4734 0 obj << +/D [4860 0 R /XYZ 297.353 119.253 null] +>> endobj +4859 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4876 0 obj << +/Length 579 +/Filter /FlateDecode +>> +stream +xÚÅ–ßkÛ0ÇßýWö"?X=I–%…1èXSZ¶Âˆm n¬üÇé·[ÿûʱ’:%Á).ΓtçÓ>÷ Ñš @—Þ÷Ø;ë³i¢#»ÄcD9'2R(Ò‚Dš¢8E·˜1¢üûøú¬Oi-–Iµ²‰ÖA_«ˆl’Èp°*ÒY^éžLœ®¶ßdÒ›€žp +xP$yš,S?`ðU^˜‰YVFìË¿<š•ÐP‚ÂT¬ ¼‹ØûëQ›­ÁR¢A ÑÜ»½”Ú×ÖpÿÖ¡sÄCJ˃x¿=hî „qñÖAÂeö>€¿¤æ€åÆÝý&VÃ_W7•u‚Êuþ§rÕBí'꺵š€*IÄB×éy’efUT‡l*ðÄ8)f>ø¹´]åçÒ‘dOÎLòjµB©¡;?Ú8§‹,%{´±Õ­€T¿cåY‡}_>Ä4zC´~g6òeÉÒ§ +O¶ˆ‹Õì#lño?ɪ°[R†ÇQn´u”ÖìFÅO$ͤœíèéÌõ´[RFÇQÖôtfÇz¶'•Í¤Q¸£§3;ÔÓVlI©Ž£¬ééÌŽõlOª›IÕŽœªk5Û>) ŽB¬i©N!ekLzóçÅ)ŸÍÌ|ÆKÂØ|'{0·³ßÞYR+"ùG&ÉÍ-¹ªOJ¹Ö]šÜ,“¸awá.OŸªÍ3ª6¡›¡Çx¯ü÷+-àvã|á¦ädÝ–¥Ï%²ÙƒËððâR.þ¿LLþùYý +endstream +endobj +4875 0 obj << +/Type /Page +/Contents 4876 0 R +/Resources 4874 0 R +/MediaBox [0 0 612 792] +/Parent 4655 0 R +>> endobj +4877 0 obj << +/D [4875 0 R /XYZ 132.768 705.06 null] +>> endobj +4878 0 obj << +/D [4875 0 R /XYZ 133.768 667.198 null] +>> endobj +4799 0 obj << +/D [4875 0 R /XYZ 305.632 639.611 null] +>> endobj +4879 0 obj << +/D [4875 0 R /XYZ 133.768 622.884 null] +>> endobj +4800 0 obj << +/D [4875 0 R /XYZ 321.602 589.792 null] +>> endobj +4880 0 obj << +/D [4875 0 R /XYZ 133.768 573.065 null] +>> endobj +4802 0 obj << +/D [4875 0 R /XYZ 329.881 539.973 null] +>> endobj +4881 0 obj << +/D [4875 0 R /XYZ 133.768 523.246 null] +>> endobj +4803 0 obj << +/D [4875 0 R /XYZ 321.602 490.154 null] +>> endobj +4882 0 obj << +/D [4875 0 R /XYZ 133.768 473.427 null] +>> endobj +4805 0 obj << +/D [4875 0 R /XYZ 329.881 440.335 null] +>> endobj +4883 0 obj << +/D [4875 0 R /XYZ 133.768 423.608 null] +>> endobj +4806 0 obj << +/D [4875 0 R /XYZ 321.602 390.516 null] +>> endobj +4884 0 obj << +/D [4875 0 R /XYZ 133.768 373.789 null] +>> endobj +4796 0 obj << +/D [4875 0 R /XYZ 329.881 340.697 null] +>> endobj +4885 0 obj << +/D [4875 0 R /XYZ 133.768 323.97 null] +>> endobj +4797 0 obj << +/D [4875 0 R /XYZ 316.621 290.878 null] +>> endobj +4886 0 obj << +/D [4875 0 R /XYZ 133.768 274.151 null] +>> endobj +4787 0 obj << +/D [4875 0 R /XYZ 324.9 241.059 null] +>> endobj +4887 0 obj << +/D [4875 0 R /XYZ 133.768 224.332 null] +>> endobj +4788 0 obj << +/D [4875 0 R /XYZ 325.577 191.24 null] +>> endobj +4888 0 obj << +/D [4875 0 R /XYZ 133.768 174.513 null] +>> endobj +4790 0 obj << +/D [4875 0 R /XYZ 333.856 141.421 null] +>> endobj +4874 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4891 0 obj << +/Length 611 +/Filter /FlateDecode +>> +stream +xÚÅ–[o›0Çßù–öÒâúØŽ¦IYÖV­²ì&µUD¹H: ]óígb‡A•„LLäÉ>øøœó;Ékã“g\\(\¹xs€)…ÌåÀt^îLB ·¼Û‹+Œ+¾„A*¸ ´uú ö¦£ËÁÄ£dúeð³ü¨MÕTI‚@3è[…üÔÂÜ\„Y®î>%Ù*_YÄ1_,ì˜:ÍKñÁžµéÇj•ªL£ÐÏr™NߟíΖIÀ=zȤhX¼á³Oà»×ø¤ÙÈ—­ý(*ádTÉ´°$Ë9F×®i¨Í®4”éZò¹'ðU4Ôf—¶gd Œ¼&!ïTAÞŽ7ÃUôãË×P”:M‡÷ÈA²´­AXO§Ã¯ãáÀŽéÕ\Þ«óÑhëÛ؉zR_£$q&G,™«5—¿ ~í¿JðS!): +y–F´‘ŽâãTçzWþ9HöÍûQÓ »éõ”§m©èqªŠ^Ugz%+‡³½ÃžàÑõv#ž £¼:âq©«vÆaêç¡žF]”·|V›ÏáLmlµ`Ô'´¹²Bz7/˜“t÷¸I-ÊÌ^´zÔ7:dòºY„ñ[ä?¯jìÎ +endstream +endobj +4890 0 obj << +/Type /Page +/Contents 4891 0 R +/Resources 4889 0 R +/MediaBox [0 0 612 792] +/Parent 4904 0 R +>> endobj +4892 0 obj << +/D [4890 0 R /XYZ 132.768 705.06 null] +>> endobj +4893 0 obj << +/D [4890 0 R /XYZ 133.768 667.198 null] +>> endobj +4791 0 obj << +/D [4890 0 R /XYZ 325.577 639.611 null] +>> endobj +4894 0 obj << +/D [4890 0 R /XYZ 133.768 622.884 null] +>> endobj +4793 0 obj << +/D [4890 0 R /XYZ 333.856 589.792 null] +>> endobj +4895 0 obj << +/D [4890 0 R /XYZ 133.768 573.065 null] +>> endobj +4794 0 obj << +/D [4890 0 R /XYZ 325.577 539.973 null] +>> endobj +4896 0 obj << +/D [4890 0 R /XYZ 133.768 523.246 null] +>> endobj +4784 0 obj << +/D [4890 0 R /XYZ 333.856 490.154 null] +>> endobj +4897 0 obj << +/D [4890 0 R /XYZ 133.768 473.427 null] +>> endobj +4785 0 obj << +/D [4890 0 R /XYZ 320.596 440.335 null] +>> endobj +4898 0 obj << +/D [4890 0 R /XYZ 133.768 423.608 null] +>> endobj +4857 0 obj << +/D [4890 0 R /XYZ 328.875 390.516 null] +>> endobj +4899 0 obj << +/D [4890 0 R /XYZ 133.768 373.789 null] +>> endobj +4841 0 obj << +/D [4890 0 R /XYZ 271.57 340.697 null] +>> endobj +4900 0 obj << +/D [4890 0 R /XYZ 133.768 323.97 null] +>> endobj +4842 0 obj << +/D [4890 0 R /XYZ 309.527 290.878 null] +>> endobj +4901 0 obj << +/D [4890 0 R /XYZ 133.768 274.151 null] +>> endobj +4838 0 obj << +/D [4890 0 R /XYZ 317.806 241.059 null] +>> endobj +4902 0 obj << +/D [4890 0 R /XYZ 133.768 224.332 null] +>> endobj +4839 0 obj << +/D [4890 0 R /XYZ 303.44 191.24 null] +>> endobj +4903 0 obj << +/D [4890 0 R /XYZ 133.768 174.513 null] +>> endobj +4844 0 obj << +/D [4890 0 R /XYZ 311.719 141.421 null] +>> endobj +4889 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4907 0 obj << +/Length 814 +/Filter /FlateDecode +>> +stream +xÚ½–mOÛ0Çß÷SDÚ›DPãçØhšÄ +EE¶¤i€ªÐ¤¥R›°6°±O¿Kì>®YZÊö"Š\Î÷»ûÇ>ìôìœÖ>µƒ&•ŽFZÂ-è9„1äKåH-ÔÄ "çÆ¥)ï.8;h²`K}Ä´G…Ñ{c±äÍG>ŸL²hdèa'FS3Ã%žôÔàЫ3‚Ý«,L¢pyu*°ÛJ²¸Í$ð|î¾<ƯN¸•K$νÖN‚Ú÷GØ! °i,œî¨vs‡^ž9¸€ûQ˜ŽÆÁ”ä«Úç®Î ðebžAâÁ»ï¢øcšÄ&ÜOÁ—ãV³Ù9?úja."‹©I^X;uâ#I¹q= ÇQn?ždæÛÇt2Èî³G„k—x΄Ã'; ­m6Ž½üU¯c?<¤Ã­)¬õÂt™LTµ.–È`ZNf“6…Ãá <MߊÿO'×Ó]µN;Gž 7(Áåy«±TBUQAñœ ú0KGƒîŽˆþæˆ µT¥äoTÊ0É2§*ãüv2/Þ-¸Ói\^4 {>Ÿý“ûÆæ’üzÅ?Zù+ÞO¯Ç»6Ñ7rÈ6./‚/^¯²ÎLY«9—×´TÝ4™ÀNm¹Òž¹g°;›Ñœ +Z¶©R9þ+âö5´_:Ú4’|zÞÀ*lí™Ä}:µ¡×Æãž¹‘²ŒÕ©ò!´b XH²’«þtNÊóÇèë%ҮЈØQ#Ûæ¡22JÑ#nYÈ$T"c²ŸÛr™(XjÞ¸”èD!¢ø\'mãsÏ,OJóV§# +ƒj{¡ ÛE(¬\(’ï ”ö?ÞM ¸l㓯éÉ$ãSÊB'’‰2“}ûM™N4GZÐ +‚& Bi¯{¹-ÄŽ%¢‚AŽ [öo"gså ,Qάõ]ÛJk…|¶M#=m %Ò>S‹ ´ÒÐwYÌÓ8‰ÇaÛ^?µAOfpwÍ€ÛíRvH”™QŒí¨hÓñTQyë1ö˜ïÖ‡ƒ{ëáþźL¾ôãdù7±»0S +endstream +endobj +4906 0 obj << +/Type /Page +/Contents 4907 0 R +/Resources 4905 0 R +/MediaBox [0 0 612 792] +/Parent 4904 0 R +>> endobj +4908 0 obj << +/D [4906 0 R /XYZ 132.768 705.06 null] +>> endobj +4909 0 obj << +/D [4906 0 R /XYZ 133.768 667.198 null] +>> endobj +4845 0 obj << +/D [4906 0 R /XYZ 302.075 639.611 null] +>> endobj +4910 0 obj << +/D [4906 0 R /XYZ 133.768 623.058 null] +>> endobj +4846 0 obj << +/D [4906 0 R /XYZ 310.354 589.966 null] +>> endobj +4911 0 obj << +/D [4906 0 R /XYZ 133.768 573.413 null] +>> endobj +4847 0 obj << +/D [4906 0 R /XYZ 320.596 540.321 null] +>> endobj +4912 0 obj << +/D [4906 0 R /XYZ 133.768 523.769 null] +>> endobj +4848 0 obj << +/D [4906 0 R /XYZ 328.875 490.677 null] +>> endobj +4913 0 obj << +/D [4906 0 R /XYZ 133.768 474.124 null] +>> endobj +4852 0 obj << +/D [4906 0 R /XYZ 258.718 441.032 null] +>> endobj +4914 0 obj << +/D [4906 0 R /XYZ 133.768 424.479 null] +>> endobj +4777 0 obj << +/D [4906 0 R /XYZ 269.359 391.387 null] +>> endobj +4915 0 obj << +/D [4906 0 R /XYZ 133.768 374.834 null] +>> endobj +4854 0 obj << +/D [4906 0 R /XYZ 273.672 341.742 null] +>> endobj +4916 0 obj << +/D [4906 0 R /XYZ 133.768 325.189 null] +>> endobj +4780 0 obj << +/D [4906 0 R /XYZ 269.359 292.097 null] +>> endobj +4917 0 obj << +/D [4906 0 R /XYZ 133.768 275.545 null] +>> endobj +4856 0 obj << +/D [4906 0 R /XYZ 273.672 230.498 null] +>> endobj +4918 0 obj << +/D [4906 0 R /XYZ 133.768 213.945 null] +>> endobj +4783 0 obj << +/D [4906 0 R /XYZ 269.359 180.853 null] +>> endobj +4919 0 obj << +/D [4906 0 R /XYZ 133.768 164.3 null] +>> endobj +4850 0 obj << +/D [4906 0 R /XYZ 273.672 119.253 null] +>> endobj +4905 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4922 0 obj << +/Length 649 +/Filter /FlateDecode +>> +stream +xÚ½–koÚ0†¿çWXÚ—D®/ñ M“+U+Öi"H“Ú +¥$@%VþýœØ\‚ ¡Êà²O|òâçµOtnœ¯sÕ"(¨¸‚À”BÁ%àŠA®0"ðà¥÷Ü]µ0ÞÉ%R%µPžôÙdÔþ&ažF/I +G”(Tn¿QR넺W£¹4L¢py5Â{›¤ñ0ž™ ð„ï®~Çs¯†}¤‹9ÎTëÀùã`-„ÞÅP!úçá H/Þ”ÃýÍS'€ú:g/ŽAÇùé r™€„²­ƒ@Ÿéý „ÜQüˆIb³Ýîí} {ÍGÄÐÒÓdáx¡×6«Ùãì·ÐöÉ^º]èõš?î› O17(¼ûÉÊf©yº1ílßl°¸ŸÐ ýi2ק&š̘j_ÍÌnèÀqiu}¦Xíáó·ð¿7~my÷ÑÖ»dö"ù»W’+ÈÅæ&é?¡/“/È:‡täG3àîÃjDˆYѶq8ó°t‡ñÜš´ôËÀ™2¶®ŸŽ¦ãžîž8î^¯å)ä6:æ[³—žÿ{@zƒüžÍS-^Iž€DIÉÆçAÒâ‘Ô HÜ/"ÙøŸGyÚ×—ª¢qü?Jˆ‘2˜‹ÔOS¹x-ƒ¹Håä0ÕËÆ/ƒ¹@Íä(• æ¶EoùhãRÚŸ´ÛgîN&á«éO6 ÛÁPI(è{Ú¿uÛÇ¡Tî¶}RAÊ­}7qÏÂ4¶êÔšŒfò-o{T'´Ž¥‰Bv6Èx:[Óë`9ó¨pkã—g«ð¼²’Ó×Õ0Nö‘ÿ¿ë™ +endstream +endobj +4921 0 obj << +/Type /Page +/Contents 4922 0 R +/Resources 4920 0 R +/MediaBox [0 0 612 792] +/Parent 4904 0 R +>> endobj +4923 0 obj << +/D [4921 0 R /XYZ 132.768 705.06 null] +>> endobj +4924 0 obj << +/D [4921 0 R /XYZ 133.768 667.198 null] +>> endobj +4735 0 obj << +/D [4921 0 R /XYZ 264.377 639.611 null] +>> endobj +4925 0 obj << +/D [4921 0 R /XYZ 133.768 622.884 null] +>> endobj +4801 0 obj << +/D [4921 0 R /XYZ 268.691 589.792 null] +>> endobj +4926 0 obj << +/D [4921 0 R /XYZ 133.768 573.065 null] +>> endobj +4804 0 obj << +/D [4921 0 R /XYZ 292.94 539.973 null] +>> endobj +4927 0 obj << +/D [4921 0 R /XYZ 133.768 523.246 null] +>> endobj +4807 0 obj << +/D [4921 0 R /XYZ 292.94 490.154 null] +>> endobj +4928 0 obj << +/D [4921 0 R /XYZ 133.768 473.427 null] +>> endobj +4798 0 obj << +/D [4921 0 R /XYZ 292.94 440.335 null] +>> endobj +4929 0 obj << +/D [4921 0 R /XYZ 133.768 423.608 null] +>> endobj +4789 0 obj << +/D [4921 0 R /XYZ 287.959 390.516 null] +>> endobj +4930 0 obj << +/D [4921 0 R /XYZ 133.768 373.789 null] +>> endobj +4792 0 obj << +/D [4921 0 R /XYZ 296.915 340.697 null] +>> endobj +4931 0 obj << +/D [4921 0 R /XYZ 133.768 323.97 null] +>> endobj +4795 0 obj << +/D [4921 0 R /XYZ 296.915 290.878 null] +>> endobj +4932 0 obj << +/D [4921 0 R /XYZ 133.768 274.151 null] +>> endobj +4786 0 obj << +/D [4921 0 R /XYZ 296.915 241.059 null] +>> endobj +4933 0 obj << +/D [4921 0 R /XYZ 133.768 224.332 null] +>> endobj +4858 0 obj << +/D [4921 0 R /XYZ 291.934 191.24 null] +>> endobj +4934 0 obj << +/D [4921 0 R /XYZ 133.768 174.513 null] +>> endobj +4843 0 obj << +/D [4921 0 R /XYZ 276.552 141.421 null] +>> endobj +4920 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4937 0 obj << +/Length 724 +/Filter /FlateDecode +>> +stream +xÚåV[o›0}çWXÚ <àú6DÓ¤M[«VZÕ­LšÔU' ÈÀéåßÏ€!!%#íú¶„1ßw|Îw±À pf| +Œ“S€}¦^Á`J!g`¾ ™Aƒ“èY·ÁÅÉ)Æ;¶„Cê{ +¨1zßZ Ð8äNoPÉ8Í%LF(Ôë ?@ò;ƒ™eSŒÌkæqXÆ–M\džçR,EÙ~w̧µ¨,;y&f¤F5¾Æo+ ðŽX }ä‚heÜÜ"«Ÿ5âÓ Ž2ŵc®ošŽ Ë!¡î6‚@—)>!ó],~!DrÑÒýq~|ýøóN=Û æ4ßm,ÐÎ +ؘCFœ; K {æRT²u¾·ˆk†ÙFƒ‡yûÞ¨è¯ÂÇ;muóI‘Åp$äj•DùP?,á*ø>”€Ù„÷åÖ²ü' TóïJ$‹äsmV"—¡L‹¼«Ý‰©*¼wˆ5€Üu®Òe.t%*’ý@E@N§3{žÊçHõÓå ˆ‘)bY‘/ŸS¤äŠ”¼Žâ ô}ð 8NV5…œ®'æLíûwµ ï3•v}WS¿,¤˜í;í.Ž=µ5(D.i}‚$­¶Kjöz&/4³Ð"]¥§Y8Ï´ÝC"tYËDOEÅjfÝæV¬› +mÆöJÅ.ê*¾ +{!"9– :`;*M>¤hXIÎTš¢$,ûœxÇÔ÷åãŽñ꺬û¸[„ÕTßé:YXêQÖý¾3ÚÆ©LtÆôL&Âγö­ÔUÇ a„4½8r\w¾J^#„Òôé@ÈqûB˜³'älöžþè…ÇW"èK®;Ý5‡AŸ×§Îöšã©Ýƒéä‰\”¡ìÒÕÑ’>aEÔt†0š:ÃZAH)EÙÎ5ïK‹rÓÎÒ¹F˜?u‡öãÓRäû’ÿÜͳ4 +endstream +endobj +4936 0 obj << +/Type /Page +/Contents 4937 0 R +/Resources 4935 0 R +/MediaBox [0 0 612 792] +/Parent 4904 0 R +>> endobj +4938 0 obj << +/D [4936 0 R /XYZ 132.768 705.06 null] +>> endobj +4939 0 obj << +/D [4936 0 R /XYZ 133.768 667.198 null] +>> endobj +4840 0 obj << +/D [4936 0 R /XYZ 280.865 639.611 null] +>> endobj +4940 0 obj << +/D [4936 0 R /XYZ 133.768 623.041 null] +>> endobj +697 0 obj << +/D [4936 0 R /XYZ 133.768 573.38 null] +>> endobj +4658 0 obj << +/D [4936 0 R /XYZ 133.768 549.165 null] +>> endobj +4941 0 obj << +/D [4936 0 R /XYZ 133.768 549.165 null] +>> endobj +4060 0 obj << +/D [4936 0 R /XYZ 211.297 515.939 null] +>> endobj +4942 0 obj << +/D [4936 0 R /XYZ 133.768 499.369 null] +>> endobj +4660 0 obj << +/D [4936 0 R /XYZ 211.297 466.277 null] +>> endobj +4943 0 obj << +/D [4936 0 R /XYZ 133.768 449.707 null] +>> endobj +4656 0 obj << +/D [4936 0 R /XYZ 133.768 366.179 null] +>> endobj +4944 0 obj << +/D [4936 0 R /XYZ 133.768 351.766 null] +>> endobj +4725 0 obj << +/D [4936 0 R /XYZ 206.316 318.674 null] +>> endobj +4945 0 obj << +/D [4936 0 R /XYZ 133.768 302.104 null] +>> endobj +4727 0 obj << +/D [4936 0 R /XYZ 286.194 269.013 null] +>> endobj +4946 0 obj << +/D [4936 0 R /XYZ 133.768 252.443 null] +>> endobj +4729 0 obj << +/D [4936 0 R /XYZ 286.194 219.351 null] +>> endobj +4947 0 obj << +/D [4936 0 R /XYZ 133.768 202.781 null] +>> endobj +4723 0 obj << +/D [4936 0 R /XYZ 133.768 119.253 null] +>> endobj +4935 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4950 0 obj << +/Length 662 +/Filter /FlateDecode +>> +stream +xÚµ–Mo£0†ïü +á€ë±ÁØÑj«ÝVÛÃJ«r«ªŠ’ È‚ûõï×`CiJ6¤Úžâ 3ãgÆžW&hƒºr¾ÅÎÅ%åHbÉõO¼FÀŽ¸@\†˜K@qŠn]J±ðîâë‹K€‘/0“B'Ꜿ7Ù"ƒC£Ò¼Tx;‘‰QÌÄàøõH&Ù;,<ŸqoTR¦Iz> ‰û³TÙ&«ÍŸØ‹÷eŸ5žAD„ œµY±óLj  X’­vÎíA©þxHWÜSçºC,ЮÐèÆùíÓ #LYøÚAÌt} „¸J£¥Ùڰꦈ{5¬ï×IÓLÈ(5A>D˜ÓÀ$]{º Ú9klt“oÊ,2™ÅS®¶f•XK‘%}„0?Ë\5x¢ëzC}4 ßV!T|\F·Kg:YÈùÜÀ?ä9£ïÈ;Ó'3ú!r8B΃wäéÈyp@> ÁA >ÁRräS†õ˜í~U*[ñ@èùÒˆ“š˜x›7f˶j‹j-ee©÷Ñ£¡›äE²,¬ßÓ6+mìÖšVÕnŸ½BT{•WÖÅßµ3øvƒÜ~Ó½Ö¹×ÙJMVÛÒä?83:gÚ»‹Ï9±M7°9Wm—<Ïa.’Úánþ-QïÎð Ú`ŽíU=‡öf·¯t\YÚ«“¨|¸]ífg0†SŒåd/zö“´À}}²SÉÎÄã§ñŠªÜL€ÎIFÿhtèäyêȃ“ȃM>)¤–3v΃¢Hp,#&Æ !1ë¥å*+³:Q=L/`ñöÁ,¾g+³°Z dAÙ¬PB쪵ªÆ/tkE®_äK›aùbSVÏ/-¦%ÿæ€’Õ +endstream +endobj +4949 0 obj << +/Type /Page +/Contents 4950 0 R +/Resources 4948 0 R +/MediaBox [0 0 612 792] +/Parent 4904 0 R +>> endobj +4951 0 obj << +/D [4949 0 R /XYZ 132.768 705.06 null] +>> endobj +4952 0 obj << +/D [4949 0 R /XYZ 133.768 667.198 null] +>> endobj +4717 0 obj << +/D [4949 0 R /XYZ 281.213 639.611 null] +>> endobj +4953 0 obj << +/D [4949 0 R /XYZ 133.768 622.884 null] +>> endobj +4719 0 obj << +/D [4949 0 R /XYZ 258.349 589.792 null] +>> endobj +4954 0 obj << +/D [4949 0 R /XYZ 133.768 573.065 null] +>> endobj +4721 0 obj << +/D [4949 0 R /XYZ 258.349 539.973 null] +>> endobj +4955 0 obj << +/D [4949 0 R /XYZ 133.768 523.246 null] +>> endobj +4715 0 obj << +/D [4949 0 R /XYZ 133.768 438.318 null] +>> endobj +4956 0 obj << +/D [4949 0 R /XYZ 133.768 423.748 null] +>> endobj +4731 0 obj << +/D [4949 0 R /XYZ 253.368 390.656 null] +>> endobj +4957 0 obj << +/D [4949 0 R /XYZ 133.768 373.929 null] +>> endobj +4662 0 obj << +/D [4949 0 R /XYZ 245.249 340.837 null] +>> endobj +4958 0 obj << +/D [4949 0 R /XYZ 133.768 324.11 null] +>> endobj +4659 0 obj << +/D [4949 0 R /XYZ 264.148 291.018 null] +>> endobj +4959 0 obj << +/D [4949 0 R /XYZ 133.768 274.291 null] +>> endobj +4107 0 obj << +/D [4949 0 R /XYZ 221.26 241.199 null] +>> endobj +4960 0 obj << +/D [4949 0 R /XYZ 133.768 224.472 null] +>> endobj +4661 0 obj << +/D [4949 0 R /XYZ 221.26 191.38 null] +>> endobj +4961 0 obj << +/D [4949 0 R /XYZ 133.768 174.653 null] +>> endobj +4948 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4964 0 obj << +/Length 625 +/Filter /FlateDecode +>> +stream +xÚíVM›0½ó+|„^€±£ª‡ªÝU÷P©Zn«UD‚Hƒ³Ûý÷`“%ÒÒ"UêÉÆ̼yÏÏ™ %"èÎû”z7·L …•€!] Ê9N„DBÅX(ŠÒ=úŒa<¥÷7·”öbY‚¹’Ô}°Gh N¢C@cò²2¸@â syüxIu“ ä”ø&«òl›!‹‰ÿµ2z©·ö# ’ÈÝè&i”éSíQ½/©÷ãD퉥X‘Í×ÞãA9ü¼G¤÷Ò†® ”îWèÁûî·ƒä7;Ép’0$ ñÈ2ÿV=i‰t‰EúYÊ 3›“ecUPdgÝJU;ÉFüç€Å~V®²ÙÊŽºr¹…[š×ëM¹ê6ªÞ˜²v!áü‘ÇJ÷O/öØ =7xÀ‚?4BaD0ñÛ©ÁS@¤„Xö9à´x»ª)—•vÞÍ‹ÌñÙí)L«ÑßÒVÌ¡ËpVš!¬}™!ŽŽP³Sƒì€Sóö5]d]ú#³Eg¢u3ÈÀœ7¥)œyne¥³.‡ +;‚Èf¼FΩáìDM»t5œ]¤†žS#¢5íÒuÔ@+9VÓ¿ÌGׂ`¥ +Ç"tþv€w>²s>ÊåÕ\”I>²]´…Æõ‹+¶‡hd{h+ëWlñÈvÐV×þ_ÿ ¯ÿþàƒJþ7Ï©îù$°J¸ì?D¥Â¼{QÜéJo3ÓÙÕÑN‹|Ös;qQ2a|B"Fˆ›µRêíaãbÿyðÄWåÌ!Ì^dýóu [øNò/°ÇÔW +endstream +endobj +4963 0 obj << +/Type /Page +/Contents 4964 0 R +/Resources 4962 0 R +/MediaBox [0 0 612 792] +/Parent 4904 0 R +>> endobj +4965 0 obj << +/D [4963 0 R /XYZ 132.768 705.06 null] +>> endobj +4657 0 obj << +/D [4963 0 R /XYZ 133.768 632.155 null] +>> endobj +4966 0 obj << +/D [4963 0 R /XYZ 133.768 617.584 null] +>> endobj +4726 0 obj << +/D [4963 0 R /XYZ 216.278 584.492 null] +>> endobj +4967 0 obj << +/D [4963 0 R /XYZ 133.768 567.765 null] +>> endobj +4728 0 obj << +/D [4963 0 R /XYZ 296.157 534.673 null] +>> endobj +4968 0 obj << +/D [4963 0 R /XYZ 133.768 517.946 null] +>> endobj +4730 0 obj << +/D [4963 0 R /XYZ 296.157 484.854 null] +>> endobj +4969 0 obj << +/D [4963 0 R /XYZ 133.768 468.127 null] +>> endobj +4724 0 obj << +/D [4963 0 R /XYZ 133.768 383.199 null] +>> endobj +4970 0 obj << +/D [4963 0 R /XYZ 133.768 368.629 null] +>> endobj +4718 0 obj << +/D [4963 0 R /XYZ 291.176 335.537 null] +>> endobj +4971 0 obj << +/D [4963 0 R /XYZ 133.768 318.81 null] +>> endobj +4720 0 obj << +/D [4963 0 R /XYZ 268.312 285.718 null] +>> endobj +4972 0 obj << +/D [4963 0 R /XYZ 133.768 268.991 null] +>> endobj +4722 0 obj << +/D [4963 0 R /XYZ 268.312 235.899 null] +>> endobj +4973 0 obj << +/D [4963 0 R /XYZ 133.768 219.172 null] +>> endobj +4716 0 obj << +/D [4963 0 R /XYZ 133.768 134.244 null] +>> endobj +4962 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +4982 0 obj << +/Length 2216 +/Filter /FlateDecode +>> +stream +xÚ•XÝ“ÛÆ ¿¿BMJÍœhî’\’žLgÒºv‡&­¯Ó'“¡ÈÕ‰ŠT¹¤Ïê_|­DÝQµó¢ý‚,ø`´z\E«wwy¸{õV›U†‡ÝJÅq˜™|eŠ44…Z=Ô«Öa±þùáûWo•šÑê,Œ‹Ñ·LqÅ- ³äLàƺéÃý£þ­j8ü~ѽžˆô°Š UøÇvõáîŸwÑ——f¡ŽÓ³ñò0µ}¢( +ÆÓÑÖvÇÚNM7æ¿Œ—Å/­-m±¢ûhµQYhtÂŒ§Î5•ûÃyòÔŒ{ž•²C,yšó°mF.˜$Ä:Œt|­zvKu“Ìu?”Ÿ¿Fï¶Ö*­WêÆEʵŽ‚OkeÓ–ÛÖþó[+3×ø8_£ñ¿¯<öðO;ð¢êÇrl@;^£À‹ž +œ+MµW4 #ež‡ÏÈà2y–½Œ©I*pØ¥ zÆ* µJ_FÕ-V_V/a“§aéÕF'a qz¾a¨äÞØÑ[ðuÕÐǦï(2}DùñÕÛ8†/²H!û$Ìrd®Â<Í™ù›®j§Œn€û·b…%äØÈ¿ç^ò¾ÉûzªH Ð* ÆGŒ{ËsK±DúÒsÇQ` 'Þ¤ûÆñ¿~Š"Í>b‚ÚVVNDœ§\«`Qâž…¤nP$ø¦HÙðS²,†<­p¤È‡HáIs8¶ö`Áo‘·Â(cíÁÐ3íŸÖg‡(? ›¶ÙV ÷L²Œ*t!°,²àÍ$ÂȤ‡ltå8±&QÐïžN]m‡öÔt¼ÞÃýŸèƃ½—û¦E%éõ}û®=w  qÐ6‡†î‡{nÚ:;òEÒÞÜÀ¸Æ‰Æ‹•èN +ТâÈÞu½H­Æ©lyî_—è<“’_+µ&ïo/ðí^ü€ü0‘ "%ø9P}j*qLïUÙ1éVŽvØõÃÔu|€0±g7ìŸÖ0¿ë¼ø ™OOn´‡û+Õ½‡á“Åq”ÇcÛT%_%ŽÁ&ÖÖŽÏðñq<ýZ¡ÒµeÛõÓãžk‚ùG¹í§‘i@B3xg!kDV?Ôv¸–u(E‡±7”>à»ò ÓÛ“Àõ^6Ü2ê#£+<óŸåöúˆ•ÑxÙ±¬d«ê;7%¤ ‡o«bxÛƒœí¦Ž°§Þ'þç¾t|Öõ#O¶Öv|vÀpT +IÙ¶LñS”Fm#† #¶`Œ‡XBð%hsÆ€ãÚï Îaª<Üt 7ÓÛÁÁ½œ—Šb^Ù‹¿#ŸñípÖÚÝÈ3p¸ˆÿM +üƒ€¹‚º­uhÉXÈÂ#X£ÁDÂbǨa ‚]¯£9Îfa* {nßOmÍs +©ØEý1?FÉ «© ëÈøkÌ6GØ®^âe Ú5ç Q¾ÈI‡úR\³§ÀS­\€FïhNÀT˜*­¯]¢lǽ„'˜}r€l>¸(뫦$ÇÃ5×—8;B›TBéȦ<CØ"¨(œ°ôâœL ѼŸ¯¿ù»mÛ~€è-ú¡­ÿð Ц9‚ÌãPÐ%rÃÙ·šI­´ÍÀëœJ6P|ê3<í›j/g%8’ãmÌ‚G°¢‚Ã1â!Al[roؘŽK—è’欯ð²ÝÈsŽEJNÂŒðü?òà»Öõ÷‚u{Rù$,¡&¨¸ˆp²ª'9'=•5ôÉÅsáTÏÂkR¸ ü& 0¹Ð… fÓ’Îy/ †©ÛŒ  ŽÂ¢À¤qðŸ½íæAÌôÇÞ¹†3^ )ü¨Æ37ÒÙ$±mfÈÚñV×w‹éÕã8‚^.A/…tc‡CC5mËç>®L\õ¾:LÕÞ÷mÎùžHÒ\C¶zijÜÑú²ÑDš’Ú§µæÿ·mÒR§®1ê;ÉI +EÁÈŽ ºn?ðBxà yóì“Ãz#‚P³è]XZ{»Ô^A™fg|߉LNì8¥\ +#X«GáO¼”p?ÔÓùL'®™óµKž±ŽYÏTçÏ“/žAž®­¼,ºe"%*žyriVðûÁð(þõînõ‘¹ïõÑ[Éýæ­ Ñè3Ôh®'I°—²·å0ò”SëËÙ%Ÿ.Ï  xÇ0>ðZ<…êå<ø`Eª”÷ ¥¯¦Kš]®FnšUéͪ Â¥5—<Ô—vNëK»‰uE’`YÏ„®<ÈŒjZÊ!Ðt¢¬|[¥T‚±¸U/0@•|)Éo<Ýí7ŸaÁ9ÕÅ—’¦ž’z-’ø61Õ¾wXœáæw?¾_Ša(‚u’]:]au)¤y5Øòà -l¢¯>ct RtæùYÈýŸ$Lµš±Á^b¡XJÃܘ ª˜—«/Áçí0,qÌÂì\}aj ü‰c¦`•«çšµB5Š6y°Åø®GJG€>ÉW„}>ûáä¯"Tìþg}ê›þóéÑvϯüÖ +>c +endstream +endobj +4981 0 obj << +/Type /Page +/Contents 4982 0 R +/Resources 4980 0 R +/MediaBox [0 0 612 792] +/Parent 4990 0 R +/Annots [ 4974 0 R 4975 0 R 4976 0 R ] +>> endobj +4974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.208 207.898 350.271 218.802] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +4975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [144.007 183.988 183.07 194.892] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +4976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.273 183.988 413.22 194.892] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +4983 0 obj << +/D [4981 0 R /XYZ 132.768 705.06 null] +>> endobj +4984 0 obj << +/D [4981 0 R /XYZ 133.768 667.198 null] +>> endobj +4732 0 obj << +/D [4981 0 R /XYZ 263.331 639.611 null] +>> endobj +4985 0 obj << +/D [4981 0 R /XYZ 133.768 623.056 null] +>> endobj +4663 0 obj << +/D [4981 0 R /XYZ 255.212 589.964 null] +>> endobj +4986 0 obj << +/D [4981 0 R /XYZ 133.768 573.409 null] +>> endobj +2551 0 obj << +/D [4981 0 R /XYZ 277.747 540.317 null] +>> endobj +701 0 obj << +/D [4981 0 R /XYZ 133.768 523.761 null] +>> endobj +705 0 obj << +/D [4981 0 R /XYZ 133.768 499.258 null] +>> endobj +4987 0 obj << +/D [4981 0 R /XYZ 133.768 445.44 null] +>> endobj +4988 0 obj << +/D [4981 0 R /XYZ 133.768 238.474 null] +>> endobj +4989 0 obj << +/D [4981 0 R /XYZ 133.768 158.631 null] +>> endobj +4980 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5007 0 obj << +/Length 2908 +/Filter /FlateDecode +>> +stream +xÚZ[oÛ¸~ϯ0rŽ Ī(‰º‹º»í¢‹ö´'Éyê. +F¦c¢²ä¥¦ý÷;Ãʲ+7éyHD‘#^æúÍÐÑâ~-~¿øåöâÙ«8[”a™Áãv³IæY±ÈJf¥XÜ®‚8Ëå_·<{%Ä„6Îä,`"GôQÍ–‡y:Ø~mÚp;7QJ‘xºŸÏLTz‚çËU"¢à¦WÍZuëå*–Qðú=7ª2µé¶Ë•e–"ËpÆ‹—·_˜$ZˆÉ9EXFrQí.>ü-Ö0øÇ"rçzp¤»E’©ÀëÅÍÅ/¢#æEsÌ“y'’mšJÃÞÒ2跺㦱ôlZÿìMÛP»ÝÐóòÏ(Šk}‰oEð°U½mõ2–Áç¥îxRžA-ã(øÜáÿUmG×Ü MåVuüN’ÉI’H„E6ŠnÓîuóg$#ø,žéÁWž~%€’OÞÃŽAT2ªv¨×Ô¼ÓøL‚ÁjîÁàSYÛVFõš_éaûN«}ã)m»c¢5ñÃT:\®2‘¸É­ÀIÒÝ=‹üú÷‹Å70›¿LH…=‡î„nª×íµZ“¼@>"-ÐqÊÙOÙ +FÇ#W×úó)cǽœp8‹CQŽ&B’L‚}×¢*|6kdfœÆ¬ É”™Ø­¨×3ÛD98é'}cʼnÝÙOˆ/VeBs¤ÑzÛ+y‰òh›Ô¡è12ïˆÚêf}DVmU§ª>G”ŽÄ®´9ØģߵݵýT&MÊàÖtF¶ŽËYDöϵÙàJ ozà-íîtÿ 5¾H°Zà9låKIƒÊ—w¦QÝWî&Qð +¦±Ä¤?±cØe»üu< ùÏtªVIærÔ«9ƒNò8%81áœl’2 ²c€LzjoÕªë¯Ì“YòÀŒè™S¤08<*Ì¿—Rvfg"ÍÂ(ÉýÞöCÿGMó1xýAˆ_oήNïþ{0vgNK ³R]gÔ=k´È1eÇŠÐé~èðˆIáÌŒâ2L‹äÉèfÎ&Ã2Ù@nôDkíÐ`/" ¾òŒ}gš{¢b!"‰qÁ«Šak^PÍà×ëÕ›W^=GñÝiâœ{Š ÑÈF×x9ã~|ç9ï+N¼ï73Ož¡¹œñŒ" Ótô¢„Àž*ÓC´ÌdrˆÁ|"9¶¡WHŒØ$-NDÛdHLz·Ž$˜tȵ´ÀV×Ô}Öu}sÓP¦ÿ…/³ÔIú€Kã÷–ö£¨ÇƒMìÚø³A×µ‰ÂBT†": ¶O“”œ õš’Ž}½‡ºwúˆ¯cv€4-õÝ1©ª¢$ƒg«,Ãø”1AƒFÛ‹bÔ 0ï<̓7æÓ’PòÆ¢„Ò$>lt”®NÂî§Jhê"?I6~DNI˜rjŸŠI/'l*z2,IrÂÆCg˜ËøB"‘r‰ô"ÆT$'ÓQÂ&Q$N༩c¿6ŠIºÁ'Âó«‰e2Lâ©À~Ìa Ù¨ôdèî’ÌñogŒ“0ÄdFÝuçfÌ&: 2‡ÁºÉóÀ ·l¡xä3µPO”¥—uÛ0Áƒé·ô ÖMƒæÁ^"‹ÂT¦'¼j8ÍCñ¸œ w8‹“6§g”²uš ì¡N’Æ“¼§1DÏ¡z Üô1u”ÿiû1 t®ŸÒAëóÊ¢ +Ê'T'™”O#šµ±¨"ƒ±[uWã×ylº“Ñ< ´ª¶Ô×bÁ‚¶¸@ø4XA#b×ñWŽ/Gmªºµú)v#£PB‰‹ª°¶h™ÃØá3ièb.B¯ªmË®-Aó=QuÍùc5 .“‚ØçvȸÌÍ ‡|$ÁvñÌfØ|ONðròd¼LPNrÚ—ûÖZCâÊ$gwð4Ü¡Ökƒù—ª‰ÜI7²V½:þH ñ튀Û`ÏËÓ\y„ˆ?8í9¸ ++Ñ&yswªú´šÃ!T^ójY‰8¸×Üã3KK¯•K âÍ-Nòxú!Ç5˜…Ù}Ìh=vT\Óõþ±£"ûÀƒ(ÜÃbÜï»vßaÈð7élÄÒŸCa¾vE=Š¸a'y3§¤˜Vl¤ðe=l:ÿ!—õ°Eùx UšöÀÓyD~9*ªÌùŽÿ¡3xq½„ÔæÖrñ‡¢Y$Ù·ºÃ]‘3uÌÑhj¸½#­cö8)cc"e$ðUJ¡Ø®÷ô†.¶sZŽdàO{ž{,üà ú';›ya)œ©j]tb1Êeçül!x[z1Èó"E\‘(»¥ÎëeïÞÎaÑ$ Bx?öÂy”Bú2æ7åÞPp¨LÓoæ‚ dñш)æã)¸“8ñ¡ËÙÌòøàwƹBØäÔú +”ËŽñC,!Zg'AÑqCï¨V"'6¹JšKÓ‡Î>ÇÔ„õÉ'aèµsú +Ÿ>šccãÅ"òC>ýdò…ûàÙ5Oè”]p&Œ” õß\¿x{5k­–r§M²*ÇE¯ß¤z„ pˆö‰¹ÚଠÁçê¹üøþ’ˆü¹J_!ƒ¾ñ\Ó<¯à«‚2:=WÉ%> Ô‡%˹²iÃf_5>¨,¼\£9¿{ÒÛ­§‹#§ê$ +HªF|öþæöz¡ga’LJg‘O¾$ñkZÁœ¯Ñ]FIÈâÊôôV+:w«ÅåÚgûûÝ«JÏ^peq˜Eòô‚+úÞW”ï»ö¾óåúœœ­ §|øØMöþÚk&ظÓhI X›|lÁ¸¹¡È€ÕÓªV¬2Q‘ÖH¯5ö îízhš-–tˆÍÌ©1Ãø3Áèwà\Ûê)N¤"ÌË‘—¿|¥ך¼ ¤*WßY*O­ï¹YÇŠòw6Ÿ»%–ÏퟱKS¹èJĈqÍ€udhí¦§Kw£…ÔW’¨×ð(Y"ŒÖfgz?ª©Ê`º¶ÙQ(qÒ +šnöz¾,°Tö—óþ ì')¦—òE N“5ðwÝ C¼Úy¾@>OßtE”"z'ÏEÁ÷QÄ­ !6_MG­è–Æ»‹;vº¬¹¿µ_¾ÞëæôÈÿ÷Ç›û +endstream +endobj +5006 0 obj << +/Type /Page +/Contents 5007 0 R +/Resources 5005 0 R +/MediaBox [0 0 612 792] +/Parent 4990 0 R +/Annots [ 4977 0 R 4978 0 R 4979 0 R 4991 0 R 4992 0 R 4993 0 R 4994 0 R 4995 0 R 4996 0 R 4997 0 R 4998 0 R 4999 0 R 5010 0 R 5000 0 R 5001 0 R 5002 0 R 5003 0 R 5004 0 R ] +>> endobj +4977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.686 642.501 419.325 653.031] +/A << /S /GoTo /D (group__avr__stdio_stdio_note1) >> +>> endobj +4978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.394 630.172 230.163 641.076] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +4979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.189 570.77 194.809 581.3] +/A << /S /GoTo /D (group__avr__stdio_stdio_note2) >> +>> endobj +4991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.51 552.772 290.76 563.676] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +4992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.138 552.772 419.774 563.676] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +4993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.313 469.702 339.082 480.606] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +4994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 445.792 194.54 456.696] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +4995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.368 409.926 371.181 420.83] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +4996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.694 397.971 294.314 408.875] +/A << /S /GoTo /D (group__avr__stdio_stdio_note3) >> +>> endobj +4997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.486 380.347 432.178 391.251] +/A << /S /GoTo /D (group__avr__stdio_g793fcb8f10b6b8746d4186012929ddf1) >> +>> endobj +4998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.9 368.392 445.698 379.296] +/A << /S /GoTo /D (group__avr__stdio_gc04f5faa8e86a4ce4ae084d85386af40) >> +>> endobj +4999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.037 264.746 478.476 275.65] +/A << /S /GoTo /D (group__avr__pgmspace) >> +>> endobj +5010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 252.79 166.873 263.694] +/A << /S /GoTo /D (group__avr__pgmspace) >> +>> endobj +5000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.75 220.875 266.601 231.889] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.795 220.875 366.045 231.889] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.633 220.875 436.378 231.889] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.378 196.965 321.124 207.869] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.198 179.341 261.834 190.245] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5008 0 obj << +/D [5006 0 R /XYZ 132.768 705.06 null] +>> endobj +5009 0 obj << +/D [5006 0 R /XYZ 133.768 321.289 null] +>> endobj +5011 0 obj << +/D [5006 0 R /XYZ 133.768 253.787 null] +>> endobj +5012 0 obj << +/D [5006 0 R /XYZ 133.768 239.496 null] +>> endobj +5013 0 obj << +/D [5006 0 R /XYZ 133.768 154.091 null] +>> endobj +5005 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5028 0 obj << +/Length 1783 +/Filter /FlateDecode +>> +stream +xÚ•XÝ“Û4Ï_ax ÓÉŽí¸|Ìz-í”w9xh™Œb+QÇþèõÊ𿳫];uŽé“6ÚÕj?ZG87ŽpžÍ¾_ϾzêGNâ%,ë#ƒÀ‹£•%¡%ÒYgÎk×÷½dþÇúÅWO¥Èú±$+Pd…¾!‰‘¶Ø‹—½@Ýd¦ôöSŠV^(ƒNî»3Š’NàÑ|Há^5ªÈT•Í~(Üç?ÓºS©ÉMct=_È0‰bWF1jœ]¬gÍ$(Žø)½D„Nz˜½þC80_8ÂúukEN°Q‰sçjöëL ƒ`[ iƒúÞ*‰h öƲs[5&/"!\S4D´ªj6ǶI÷ªz#B+qÒ‡´>}þòÍvdyI9 V…¤óKËYzñÊwÛuSiu}òk+°+ ¦¯ð?ùØ {‹¥wŸ²eû¾eö“‹ß6Wëë_6WëË‹Ç?¡­CÛÙØW×/_>$k“ÈQè,o±Y›šß/Ÿ¯/†vòç,Ä¡¤ •K’ø”øùK/€4MÇ/˜Žç'ž”ÑÈ™¿-+ñB0ed´ÙÑÅÖŽ"‡ñÁ,‹½b>}?öDõ€}ù(¯lV^–ÇM[4&ßlM³1õ¦Ö jºþáêò1ë¹~r9ˆý8¢À¥> ñ-•nÚª ñ±-¬êŸîä(<ã<²Âƒ2Zù®4Yž±aŸ†,ì‚Ÿ7<Ϋ‰šþ¢«ô)عCŸÿ¨ó¼äÀÝ–Už}f³øù誡‡Ÿ@71@7èjÍó®×{¶\ +WÏeè¾W‡c®qCºm­™Õì5 £róAW$³+«ƒ…=»ê†ïòÙÌymL6w—„åX¸Rp«nöªøïú.€£!›¾k‹´1e±ÈÍÛ¹DÎb!;Ós?tßaɶÇM_íSƸ æë’V•çDdªQDõ¡PhííÕñ¨‹šE[Èò Ñ?°º +iѽÞØ‹|NÙsèì Ž¸ kúÑÝ2—îѦ!êÝVwôCUšˆ¢Ä5„f-n0˜vOëLgàÕRÄ6žk>—b˜‘ØòùLƒ %ª¾£+Cw˲o„ð«ºe#"óSˆù믨`8¨TÏ ˆôyIó²Ö÷%$ð]x‹û +¢æ~|¹ýS§ Ѧ©u¾óÀữJÚL)µxæÿì¼Ç¾“ʬ÷e›ƒ¡2 mTq5uÝjÞƒ®!쬙ÏióüÄwß›œ]`Ïg5Þ<ºßzßÙB+<‡\×5W@±5´}k0&t7€ÀTïaÍøÒwÛ"ÓXºæËài§+]¤šø÷ø»JŸµù”oÐÛìÛšT’M¤Ý¦¸ ‚€ª¿Ö®v,z€p–)mʬÍY r9å)D 8s“Ún÷&fG8øžìpõUÙzŽ> endobj +5019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.295 391.875 412.752 402.779] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +5020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.63 379.92 270.265 390.824] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.773 350.34 255.31 361.244] +/A << /S /GoTo /D (group__avr__stdio_ga1226b8f734a1b5148d931ae2908c45d) >> +>> endobj +5022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.058 350.34 478.476 361.244] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +5023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [326.644 338.385 359.062 349.289] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +5024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.731 326.804 258.84 337.334] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +5025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.816 131.161 460.584 142.065] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5029 0 obj << +/D [5027 0 R /XYZ 132.768 705.06 null] +>> endobj +5030 0 obj << +/D [5027 0 R /XYZ 133.768 300.901 null] +>> endobj +5014 0 obj << +/D [5027 0 R /XYZ 133.768 300.901 null] +>> endobj +5015 0 obj << +/D [5027 0 R /XYZ 133.768 199.769 null] +>> endobj +5026 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5056 0 obj << +/Length 1618 +/Filter /FlateDecode +>> +stream +xÚÅX]oÛ6}÷¯Ð°‡ÊCÍ’ÔwºØ§h±­›ã®’B %ÚÖ*Kž>’Eÿû.y)GvlâõÁ&E^Þ{xxxI‰Z ‹Z/?MÏ.¸oE$ò¡˜Î-æ8$ðCË<âGÌš¦Ö•Í9‰†ï§¯Ÿ]0Ö³åq¢i£ïÑbË[@wcP7iV’å>G!ñ˜ÓÙýpÀQÔœ G£öe#ŠTTépÄ=j¿zƒå\$Yž5™¬‡#æE~`3?TãéàŸ'Ôb½y2QÏJVƒ«÷ÔJ¡óµEõ¼nµéÊr\0ej`n]þPCÞn©ÉtÀ”i2=NÂ(°|/ Üñ}V4 + EÄõ]lmEÕÄë¶I–¢º¦UåpäSj'O±¼xõËXdÜ%Ä1€iœ~§{\„ŽÕk®›JŠøcºÄxDó1²±ù¤»"â” IÄ#tŽ5¬¾xå“kæ¸Å“c3úÈ|ôˆJxŽXzc ’¼,×q[4Yϲ&Î긖üöçËɆ†·ç“ñ½—m¡Ïà4Ôm™(•lÚª@ú‹qõYK¦[Ú5Ž8%Œ{ÖÈQ+ÁqÄoe#Q‚ÎÙî`Úßa!¨I3M=3tºÌ@­NÙÙjË•,Ñd%€t"j/…éœIY`-Y–uWŸÉD´µDÛf)EY7X+çص <øeÅ;„q ò "¢l¯SªŠë)_E¥²³ü[ê•ÈsYáC³Ôžü.º·‰î™èPnG‡†y›ç8*)×z·öÍ¥H–&”–0Ù‡ï¯!ƒ5”RFØëª2ϾÉRÄ‹¸ž¢*wiUm»Áåž=—UÝõH¬$¥ט'ãƺÔÇæ÷wžžµo¨-ÌC*IªêÌnJl›I,aóaL +[Ëy§³vYAŽƒi¢ÐTF«&µM^bêåWЩø]þ\W°sµ±º |H«äÖ ËŠº‘"5˜æ˜¥·âŒxè‘(ô·—i~ou‡¼˜½Léìn@ì±MèZ 9µoÔò*¥pX®æn­—™sù-«à–;À¦2n´«³"‘h†N*õ?Z$ öR¦ËËJŽLº4(¶¦S—•rí8hï¸öZÔ5Ö„Ò´ê‚äÍB{Ñ*Í™>¥Õu£Ä&ªL¤Y‚=ó¶H”.k4PUÍZ†ªt–|À6E¢èìÖkÈ©1.±Qa1ºØÝ.àoF¾+‰e%£‹ ÖUi_5ÍËÊTz à•§k⃢[â“ÀâšRþQ/OŠ E»šIãJÏʵ¨ÄJªXjÕÕb&ghO3unßíE®&ÇxG4SÉ®ÉøÄö\¢·gwØ¢¶þadG®ÌsIé»w?)öhÑá„ ÁXÝfz!‚Èëcôå‰}u¹’ا)Fj’³2h²•${.:p´€æ<ЄeÝ9~.Á…¬,>q<-•3HèûºZÂ_&ìž(sA8Î |ÂÜà‹ì¸[ìì™7 CâSv2¡´ë'òE­À[‹©-dW«n!ž#§–v|q>þ3¾OßþOÆ?žïÛdq|99?åæîƒx7y5@ñnò¿Q1ô<ûÝá¤gÙզω³Þß{¤Éõ7c g´O™¾G O@ñx2ùzYÔ@8’Èù©O‘Þ +_NAî¿îÛ›_s;nH’ÃU{ºS#PŸPöÅãäiwÿÚMÜs5èˆÑ WÔ|ñ9€ø(D¼^šOÐÐ>°¨Lt;ïw{Pé+ñH{¿qF! œÿò…³û,ì“(pÂþgá0"N÷nñR²4`õ› ”Óe‹•s™`ÅÅ‚Ñ3Ÿ8¥¦¦¿¾è×Nxz¿UC'°Gy63ôËœrY~¼[ÈbwÊÿ¶–Ž° +endstream +endobj +5055 0 obj << +/Type /Page +/Contents 5056 0 R +/Resources 5054 0 R +/MediaBox [0 0 612 792] +/Parent 4990 0 R +/Annots [ 5032 0 R 5033 0 R 5034 0 R 5035 0 R 5036 0 R 5037 0 R 5038 0 R 5039 0 R 5040 0 R 5041 0 R 5042 0 R 5043 0 R 5044 0 R 5045 0 R 5046 0 R 5047 0 R 5048 0 R 5049 0 R 5050 0 R 5051 0 R ] +>> endobj +5032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.161 480.652 434.975 491.556] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +5033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 378.948 212.523 388.876] +/A << /S /GoTo /D (group__avr__stdio_g3e8cefeee58f762ff50bcef35fa12eec) >> +>> endobj +5034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 365.394 210.869 375.924] +/A << /S /GoTo /D (group__avr__stdio_gaca70138f0cb63ddb026921afc635179) >> +>> endobj +5035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 352.443 215.85 362.973] +/A << /S /GoTo /D (group__avr__stdio_g0c0ef221f95f64e8632451312fd18cc8) >> +>> endobj +5036 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 339.491 214.176 350.022] +/A << /S /GoTo /D (group__avr__stdio_g5ce35bd5ba5021fd3b2e951e8f497656) >> +>> endobj +5037 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 326.54 210.311 337.07] +/A << /S /GoTo /D (group__avr__stdio_g59adc4c82490d23754cd39c2fb99b0da) >> +>> endobj +5038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 313.588 251.556 324.119] +/A << /S /GoTo /D (group__avr__stdio_g793fcb8f10b6b8746d4186012929ddf1) >> +>> endobj +5039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 300.263 252.662 311.167] +/A << /S /GoTo /D (group__avr__stdio_gc04f5faa8e86a4ce4ae084d85386af40) >> +>> endobj +5040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 287.312 266.5 298.216] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 275.337 290.012 285.264] +/A << /S /GoTo /D (group__avr__stdio_g79826a1c733e4f67843256d34ad64352) >> +>> endobj +5042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 262.385 294.435 272.313] +/A << /S /GoTo /D (group__avr__stdio_g822a791a1c06a12b95c14ace75b48ad2) >> +>> endobj +5043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 248.124 278.395 260.079] +/A << /S /GoTo /D (group__avr__stdio_g93db55caeeaf13488a635f8896a6bdf3) >> +>> endobj +5044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 235.88 246.844 246.41] +/A << /S /GoTo /D (group__avr__stdio_g132917c782a0ba854c3ae9abe57c3b12) >> +>> endobj +5045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 222.928 246.286 233.459] +/A << /S /GoTo /D (group__avr__stdio_g280c47b9edff2751b8dbb9a715dc44c5) >> +>> endobj +5046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 209.603 298.321 220.507] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +5047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 197.026 234.4 207.556] +/A << /S /GoTo /D (group__avr__stdio_ga1226b8f734a1b5148d931ae2908c45d) >> +>> endobj +5048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 183.701 208.647 194.604] +/A << /S /GoTo /D (group__avr__stdio_g247111653f3e91bf2cb4930d590d8201) >> +>> endobj +5049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 170.749 221.369 181.653] +/A << /S /GoTo /D (group__avr__stdio_g61e2590ae5f2f2e351365640d2ac755a) >> +>> endobj +5050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 157.798 208.089 168.702] +/A << /S /GoTo /D (group__avr__stdio_gcff255b3a0079ebb1516e8a4eb23a6fb) >> +>> endobj +5051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 144.846 220.811 155.75] +/A << /S /GoTo /D (group__avr__stdio_gc0484b3e3a4d8361d91c3322440f9195) >> +>> endobj +5057 0 obj << +/D [5055 0 R /XYZ 132.768 705.06 null] +>> endobj +5016 0 obj << +/D [5055 0 R /XYZ 133.768 561.215 null] +>> endobj +5058 0 obj << +/D [5055 0 R /XYZ 133.768 396.946 null] +>> endobj +5054 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5113 0 obj << +/Length 1475 +/Filter /FlateDecode +>> +stream +xÚÝZ[oÚH~çWø¤åtî—jµ«mªV+í¥¼%"`¤X év}Ï`C!±ÁcŸ´Ù>Ù 3ã9ßœëw†%7 KÞv~t^]“xðƒiÂ¥k\b¼ãy2˜$—]!À÷>Þ¿ºàü`¬° ½Ã…¶ƒ~ÎG­fÁªý€l=™-à¶l!šËݸ_*ò»¯{}ÉY÷Ãz4ŸŒV“^_hÖ}÷GþœŽÆ³»Ùz–f½>×ÞØ.7ÛÍwÞ :ÿt8.Â~ 'Ït2¾ï\~dÉ|Ÿ°­\Ÿ¶Cï©p(ï’¿:ì^Ïól»‰ÝdœÉgPÒ'}DZh•O¼BÍI.ûš±îl¾.þYÝý½°…`|·ÈÒÇSÃ/WL³‹w¿¿)Î@"¬@û=ÄWŒÉâ·©À;±3fëU:ºÇEùñÇúÖƒv<és­¥y˜.W8h)ã ”j"ÏO¹"ñÈÖÅëíhUö Æð¸OLï×Åú=¡»£áÝl÷•áp´,Á’[ ÎxZ0‡F‰fb®!+o§ˆûD8évpò¶¦¶Ü¬ÇUP†ÙÅVÆÅ.+ÐåL¢ìDÆÇ™£Âœ¶½ó‡êq®Á¡@‰hÞ‚6’èìÎYÂyá±qF&]88æ$‘¥·>¹ëç6GdU42ggd.Ôbv#u¤ñÕöjó kÉTD)pVY@vÖ*<µ¥Md0 GLÔBLkÌæ ‘‚Í›i˜Ïm3¼²ÙépoCóÚ(rfÁHC¦xXhN¦xó¦šç0O¶Ílµ’š +IÁ 0©‰¼|öÍòù ¸"r”Ç åÁiK¤ÙwÐÇç‹Q@¬v­¥RÇfÒ p_™„nÖ1è +Æ@QEŸ‡ÆnÓcÀæþ{ ý¼n@pŒ[²j® Ó` ˆZ‰ò7`êÅrËÀ9"“oJ(`nz‘„BjŽƒbŽ8ÈZgÁiGƒ×S¬{šˆPXÊ&‡R¢H#¨Ô ñjW«£Ò{þÒ1ÓM“ˆh§bÎÓñr•±6RT¬MK=´†%kK]èzÔED+%SJw§ŸV³õÚ^)u(Yˆ¡‘u³I™–s ÌÅI·Ü+¹òrîÇPrüëÉ*ä÷éýõöUIjbrì#ã? Iú’aµ)B„°Ö»þQ…Ñ`nÈüòMZMèV% ¬PDÀj°Œ¨:ÜÌOICOûÃF^[ÇâU“¯°bဳ'— ñh”Ý«[8ë,2“üm¢Èì…u@ÞcÎaɘÁ8Q/ï{NÜ›ÀŽ8øøn^™³À`¤‰ÓÞú ÄzR%Ì Gí°.ŒåH–Gzt\—¨Ò£‚­pԧ̻è0Ò˜·0$«iÞ‡Uƒ<¾KG«tµŠ-1KhªT6]Ä–˜©STdÑ PõЦx*‹Øs±”#‹—!úS±©Ól<šGß4`À…ÿZã³–¤XÆ_4``”ÿîm8 ÂR•=4ý:WöEbYÁ±L4-•Ÿm¦€xlƸÿ1Å@xAÕš;¥g5ÊkLÔ Y×ÑPŠˆ¨<£ u$,F]+ŸœäÈ:X-Ï-Gú¹}"B¨Ñ]¶¬­È¤Št]×!_ÝLk[:æZ¼Öõ§zîÑâ)Q÷A„º!Ò5BPÒùJ Œ‘õ‹‚Ú‡-m²ÛøXè¨æã© XÈz-ÆŠÍHtl¾-™2IyA·Lç'X§ð(Ù…}´¨> endobj +5052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 632.202 196.473 642.732] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +5053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 619.288 203.118 630.192] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 606.747 213.638 617.651] +/A << /S /GoTo /D (group__avr__stdio_g55b25ecbfd3811ea4495d1f235e2e186) >> +>> endobj +5073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 594.207 193.155 605.111] +/A << /S /GoTo /D (group__avr__stdio_gf3387285b3eb0ce4e0e7ca3ccaed9014) >> +>> endobj +5074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 581.667 194.819 592.571] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +5075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 569.126 205.339 580.03] +/A << /S /GoTo /D (group__avr__stdio_g418e63921ed6259e873cd21b6c5c8e6e) >> +>> endobj +5076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 556.586 199.8 567.49] +/A << /S /GoTo /D (group__avr__stdio_g0b15be24dd9db93355e1f62937fdfd9a) >> +>> endobj +5077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 544.045 198.694 554.949] +/A << /S /GoTo /D (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) >> +>> endobj +5078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 531.505 209.215 542.409] +/A << /S /GoTo /D (group__avr__stdio_g2b829d696b17dedbf181cd5dc4d7a31d) >> +>> endobj +5079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 518.965 203.676 529.869] +/A << /S /GoTo /D (group__avr__stdio_g77070c245d4ca4f7ec7d7144260fb875) >> +>> endobj +5080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 506.424 214.196 517.328] +/A << /S /GoTo /D (group__avr__stdio_g53ff61856759709eeceae10aaa10a0a3) >> +>> endobj +5081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 493.884 203.676 504.788] +/A << /S /GoTo /D (group__avr__stdio_gaeb1bbe21a1b9b50b207ab059a67993f) >> +>> endobj +5082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 481.343 214.196 492.247] +/A << /S /GoTo /D (group__avr__stdio_gf47f5141509d1e434f9da2b27287a707) >> +>> endobj +5083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 468.803 208.657 479.707] +/A << /S /GoTo /D (group__avr__stdio_gc92e8c42a044c8f50aad5c2c69e638e0) >> +>> endobj +5084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 456.262 219.177 467.166] +/A << /S /GoTo /D (group__avr__stdio_g2071feb5c92bf50a6bd508a07ead9515) >> +>> endobj +5085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 443.722 198.136 454.626] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +5086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 431.182 208.657 442.086] +/A << /S /GoTo /D (group__avr__stdio_g36173b4a8551b61811089198beec69d9) >> +>> endobj +5087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 418.641 192.607 429.545] +/A << /S /GoTo /D (group__avr__stdio_g19c2bbe9ce4af9f0a7e3448387004fd3) >> +>> endobj +5088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 406.101 203.128 417.005] +/A << /S /GoTo /D (group__avr__stdio_g3d25813cb225ca410518a3f48eb00caa) >> +>> endobj +5089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 393.56 189.29 404.464] +/A << /S /GoTo /D (group__avr__stdio_g33f7bd99d40bf6f68a00d5507d65363d) >> +>> endobj +5090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 381.02 199.81 391.924] +/A << /S /GoTo /D (group__avr__stdio_gb4de83c560c79bf880fa39b997d61610) >> +>> endobj +5091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.35 368.48 211.133 379.384] +/A << /S /GoTo /D (group__avr__stdio_gdd5777719a41713629a62b68c239a774) >> +>> endobj +5092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 343.984 192.597 354.888] +/A << /S /GoTo /D (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35) >> +>> endobj +5093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 331.444 199.242 342.348] +/A << /S /GoTo /D (group__avr__stdio_gb4f9b130166e5811519513d6178c1ae3) >> +>> endobj +5094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 318.903 206.147 329.807] +/A << /S /GoTo /D (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) >> +>> endobj +5095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 306.363 202.829 317.267] +/A << /S /GoTo /D (group__avr__stdio_gf577dcba9afe50a9d068d0b69ac85d2f) >> +>> endobj +5096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 293.822 205.867 304.726] +/A << /S /GoTo /D (group__avr__stdio_g54fa47156a34c1659a29ed96e46e3518) >> +>> endobj +5097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 281.656 210.092 292.186] +/A << /S /GoTo /D (group__avr__stdio_gaa6d255675688c736c99ebd32f2a7214) >> +>> endobj +5098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 269.115 188.722 279.645] +/A << /S /GoTo /D (group__avr__stdio_g47b00053272d6443c9befdb1304002cb) >> +>> endobj +5099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 256.575 195.357 267.105] +/A << /S /GoTo /D (group__avr__stdio_ga89248dd55efb5f59a96e82976c97758) >> +>> endobj +5100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 243.661 202.002 254.565] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +5101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 231.12 212.522 242.024] +/A << /S /GoTo /D (group__avr__stdio_g6c6b5b881ce8f4739777ff3a615e988a) >> +>> endobj +5102 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 218.953 197.021 229.484] +/A << /S /GoTo /D (group__avr__stdio_g0beb4fd9ff6833a364e3ce60370de058) >> +>> endobj +5103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 206.413 207.541 216.943] +/A << /S /GoTo /D (group__avr__stdio_g7aec94e711ad64724076666586a26839) >> +>> endobj +5104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 193.873 193.703 204.403] +/A << /S /GoTo /D (group__avr__stdio_g3f0edc16dcabb5344d59d42cf7682102) >> +>> endobj +5105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 181.332 204.224 191.863] +/A << /S /GoTo /D (group__avr__stdio_g0fb7fd70cd7618f27d8219c97e61bcf3) >> +>> endobj +5106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 168.418 198.684 179.322] +/A << /S /GoTo /D (group__avr__stdio_g8bd4b760f67791a54e73111734caa82f) >> +>> endobj +5107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 156.251 197.579 166.782] +/A << /S /GoTo /D (group__avr__stdio_g5507d0e1bbfd387fbb2ffcfd8f5dca6f) >> +>> endobj +5108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 143.711 208.099 154.241] +/A << /S /GoTo /D (group__avr__stdio_geca11dc4b3757ed4ff2f2a4950eba117) >> +>> endobj +5109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 131.171 195.128 141.701] +/A << /S /GoTo /D (group__avr__stdio_gdb974f28765a31026ee6bf71d5175951) >> +>> endobj +5110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.672 118.257 227.287 129.16] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5114 0 obj << +/D [5112 0 R /XYZ 132.768 705.06 null] +>> endobj +5115 0 obj << +/D [5112 0 R /XYZ 133.768 650.391 null] +>> endobj +5111 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5127 0 obj << +/Length 1362 +/Filter /FlateDecode +>> +stream +xÚÕWÛŽÛ6}÷W¨éC% RHêÒîn°A´^7û-ѶYr))ÛýûÉ¡,g½—¤E¾X$=Îœ™9gãçõìçÅìÅKœ<Èø,Ö à M2'Éã É©³(÷.cAî}\¼yqAéD–¥A˜g H ýh$Ž´¥A]_Vm°=¥( bZ¹ŸîQ”[—žRâ^õ¼)¹,=ŸÅĽ|k¾k^TuÕW¢ó|çIêÒ”(³óÅìÏ%Ä¡?i“Ø)v³÷‰SŸo¢ýºÑ¢;'Œ@”ªµs5û}F/NÆðÆBÜ3ñÖcëY[ ;Ñô¼¯ÚFÙz}!ø:ÙPÜý}y´}yqvþnyþöÂL?˜ø ~)H&¦bš ‹Œâ¹èÙ˜}E[¢Âu+Í€ã_¢)ýví«Cka¥›²Òöêi9ȪÙàXx,v?WŠJÁËÀº¥OGH^FÜÖ­PxèF²BÕýÿÚˆíšâpt»Öa5ñ” ìüõÌyo¤Ñì^4 +‹ÎD°&8‘o`p¸çÑQ؃q˜Ï'q Ä!þº8Hi—þþÑÿ ÿ£ +‡ð¿:_üñÛr~þê W—Wó³{,|¸8¬áË¢³_v=¹»Çz}ÔMÕo[{¨ì'»=Á5/ŒÝëCŽ›FS6%@i1³lùé„ LÓ +€žëùĵGÀò‰‚”ý«½¸‘U/¾ ¸øqà®ç—‹ó1)®çÿuR|»sÉiçŽ)B5ax¿jÓ]>bbÙT(EQs©®N–Y€Ágå9¯a×¹"„ŒºJJMcš@`¶ºn“U; Xw¸±3¼±³«t¨³1Ëïð< ýåæŽôÑfŸª2òÄüªïTeµ±Ìqí\Ã#åbÜ•ªg˜S(Öµ;¢7&<°²¼ÛE‘­âét›žÎ>U TUBQ·˜–ÀÃwÝb«, a뎲5õB¯Fî°7K€*üÞšI]­$—8ÌlYTcòP+¬<ên¶8SWšVÔumQñ^奚늼[',±C›ª*û„;adIbÅ ÏbHËÞäd’€’ì8ªÝ¶j[¤wÁëÚJµ>aNšäP‘÷[“I<¶Ä¶›ÖœR·ÍFH\¢ås5É\H¯mo-‚4E«zÀo‹c¾ß×UÁ1›32*ß´ªÕÐîR +σ,ÅÑ0ÅÚÕ'Q`zCшzm:‚˜gÑ1å©Üüŵ—Ä®!o·¦f¨ÍD5´ÍŠf:H”0N1@vJÍæ¹YX©¾fèïhD€aXl9DÁŒMMS ;`J\û¬ò\ȹVLKõ%9Œ˜-ð$˜ÔÜã•œ=RÉÐá-‡’÷\!‘P„g®7z¸hNüw¢ùrfÙø–ûºx”°Çž"Ÿ/i˜|ѽn-ãÑÓ7¬0„ +U”àæ³oÕÅ‹´MSèx¥MXƒ +²¬²’íîHÑÅå¯ØI`¾ZÖIu'_›yî|Í[Ó¾1“ OÃlúÆÌò L0ʯE#¤á9mÞ‹í€ïLQ˜Ad>”¼dáKš™#Gk…ßøöÐ`J/L]5¬níÓõ¯Ûh¾tùoér +endstream +endobj +5126 0 obj << +/Type /Page +/Contents 5127 0 R +/Resources 5125 0 R +/MediaBox [0 0 612 792] +/Parent 4990 0 R +/Annots [ 5120 0 R 5121 0 R 5122 0 R 5123 0 R 5124 0 R ] +>> endobj +5120 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.238 594.484 309.488 605.388] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5121 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.238 527.041 309.488 537.945] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5122 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 477.222 216.408 488.126] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 427.403 216.408 438.307] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 377.584 216.408 388.488] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5128 0 obj << +/D [5126 0 R /XYZ 132.768 705.06 null] +>> endobj +709 0 obj << +/D [5126 0 R /XYZ 133.768 667.198 null] +>> endobj +5068 0 obj << +/D [5126 0 R /XYZ 133.768 650.391 null] +>> endobj +5129 0 obj << +/D [5126 0 R /XYZ 133.768 650.391 null] +>> endobj +5067 0 obj << +/D [5126 0 R /XYZ 314.071 597.638 null] +>> endobj +5130 0 obj << +/D [5126 0 R /XYZ 133.768 580.91 null] +>> endobj +5064 0 obj << +/D [5126 0 R /XYZ 314.071 530.194 null] +>> endobj +5131 0 obj << +/D [5126 0 R /XYZ 133.768 513.467 null] +>> endobj +5066 0 obj << +/D [5126 0 R /XYZ 282.927 480.375 null] +>> endobj +5132 0 obj << +/D [5126 0 R /XYZ 133.768 463.648 null] +>> endobj +5065 0 obj << +/D [5126 0 R /XYZ 306.17 430.556 null] +>> endobj +5133 0 obj << +/D [5126 0 R /XYZ 133.768 413.829 null] +>> endobj +5063 0 obj << +/D [5126 0 R /XYZ 286.255 380.737 null] +>> endobj +5134 0 obj << +/D [5126 0 R /XYZ 133.768 364.01 null] +>> endobj +5031 0 obj << +/D [5126 0 R /XYZ 360.017 307.008 null] +>> endobj +5135 0 obj << +/D [5126 0 R /XYZ 133.768 290.28 null] +>> endobj +5018 0 obj << +/D [5126 0 R /XYZ 183.242 203.699 null] +>> endobj +5136 0 obj << +/D [5126 0 R /XYZ 133.768 186.972 null] +>> endobj +5017 0 obj << +/D [5126 0 R /XYZ 446.891 153.88 null] +>> endobj +5125 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5148 0 obj << +/Length 1815 +/Filter /FlateDecode +>> +stream +xÚ¥XYÛ6~÷¯pÓX+¤JJ E6ÁmÓfÝæ! Ú¦m%²äèÈf[ô¿w†CêðÊÛlû$r8g¾9(6ÝMÙôùäÇÅäñ3OL7ðYl§Ü÷ÝHÄS‘„®Høt±™¾q<ÏMfï/?ã¼ÇëE®ŸÄ H3}Ki‘-CUoÒÂÝ ŠÝû–ïû3‚Ëðd6÷9s®k™od¹™Í½9W/黕ë4KëTU³99<â(qr¹˜|œp¦¼wOî&,œ®“7ïØt‹/¦LßëF³¦~¬7fÓëÉoöïÆ #×óÃÎx.pÎcÎ×õ–1/W .÷íFÍxè|ZVª^6YË·,dU]Îxì(y¸˜Íƒ€; P9íØø œ¿h:d×ldà oà tã(²üjÄÂÜsYÜrhMè€ïèÓ|_O8ÓôfŸf +ÏfÝ‘ëÉgD0 `¸a”ÜÅ>­ÈO¹. ¦y¥ÊÚÐ%}ŽEš×ª¤Im›ÊR¬ó¶Z–e6„gW?]Ò¬¢q±z¯Öµ‹zÕ矱‡züM(‹O#XYb®ë¿Ë›m&wc1»^×"ö½|ÓÁÀ¦ši ëÁÖ,ï ÁÄW£sÌ—½Nú„§}òœ® +÷$‰ÿõ««Å¥Î‰£û/Ê›…¡óz–xŽaÚZ.ȤùÐÕ–i­Ì˜–½üX/;ö¥ym˜JUÕz>ˆaš±”¼5AA¸ŠÓzê¤ØÌ™›b!D\˜nù—¢VON7 àÃËŽ]zv¢ raU¥»Ü[ ôlï „ª{?éfBÃ{“fV†Rì@X…ö÷ö>¬ŠÿP{OSÏ‚E„}-E_Kšp¡i„Œ²0ÇöA7P ÞVÇ#¬š(lùM/¬­ì*ܸöfYײý7÷C…×#³j´ oò Õ¶ó½É«&ï:£^ñ½I!4µ}"eY±~HÇ‚±AN›Ч„ñ°oñÎtçýR³6g/—È“e‹“¦@ï¿›,<Ì>mvÅŠêûœlêû˜ÀäÇF‘ÎmJey0o"“Ýe³$ÒdY4ù†è+UßèJ9m»×¢©¬| !œ]½¤DbVsû溯¾ë¹?nV¨'ÚuËåÉ뜚ųËçû¾ _&£Äô`wýo}LB]][¹G¸"iÝcúmªC#6õæ’¦¶˜ÐeU?꟭‡éá˜)Ì3ºå!v„ñ`¿5,4Sõ­Ù5ÔäôÈsExò”Å.ã  UöžÒˆ,­9Çe.8wža&ÆÞ Ÿl>Âý(׊†kp9<Ú!µcËæGÂ<.îÔIæ]×)?•ó,]™7ˆ°SìºS-²¦Ã4ªAé÷ºYòMŽ°Ž¬ˆ„Õé®Ѐ² ­ÀÛs¾MÜ8n» «ÎèO°ʈÿ_`ö×—p“Èû¿¾âÄõ…ñás•c#lß!…yk,ö žª5 úpöÄóŸð˜fcf¤ÛÎîmu¥œù‘CƧvóÖˆ,>ßîT~zåLhRt +endstream +endobj +5147 0 obj << +/Type /Page +/Contents 5148 0 R +/Resources 5146 0 R +/MediaBox [0 0 612 792] +/Parent 5155 0 R +/Annots [ 5137 0 R 5138 0 R 5139 0 R 5140 0 R 5141 0 R 5142 0 R 5143 0 R 5144 0 R ] +>> endobj +5137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [147.437 594.923 192.687 605.827] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.277 527.48 322.913 538.384] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.109 497.9 440.744 508.804] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.735 418.502 475.985 429.406] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.735 388.922 475.985 399.826] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.35 303.686 475.985 332.752] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.661 279.776 303.022 290.68] +/A << /S /GoTo /D (group__avr__stdio_stdio_without_malloc) >> +>> endobj +5144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.662 146.265 193.205 157.169] +/A << /S /GoTo /D (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35) >> +>> endobj +5149 0 obj << +/D [5147 0 R /XYZ 132.768 705.06 null] +>> endobj +5150 0 obj << +/D [5147 0 R /XYZ 133.768 667.198 null] +>> endobj +3245 0 obj << +/D [5147 0 R /XYZ 232.966 598.076 null] +>> endobj +5151 0 obj << +/D [5147 0 R /XYZ 133.768 581.349 null] +>> endobj +3244 0 obj << +/D [5147 0 R /XYZ 445.327 501.053 null] +>> endobj +5152 0 obj << +/D [5147 0 R /XYZ 133.768 484.326 null] +>> endobj +5059 0 obj << +/D [5147 0 R /XYZ 133.768 270.809 null] +>> endobj +5153 0 obj << +/D [5147 0 R /XYZ 133.768 256.239 null] +>> endobj +5071 0 obj << +/D [5147 0 R /XYZ 176.428 211.192 null] +>> endobj +5154 0 obj << +/D [5147 0 R /XYZ 133.768 196.522 null] +>> endobj +3266 0 obj << +/D [5147 0 R /XYZ 133.768 137.463 null] +>> endobj +5146 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5162 0 obj << +/Length 1644 +/Filter /FlateDecode +>> +stream +xÚ½XKoÜ6¾ï¯ÒCµ@Äð!‰RPôÐ6(š¸'Çd‰»«V+mõ°ãß’ÒJkÚ^çГ†Ôp8oõ¶õÞ¯~¹\½¹à±—’4†ÇåÆcB'^œF$N™wYxW>ç$]__~|sÁØŒ—K"Òi¦Ÿ ÇBš$2œº¾(²s JHÄÄÈ÷ó#‚Ò‘áí:ŒúŸû¬.²¶X<¢þ‡?Ìs“åeUö¥êÖ‹ÒXúLr”¸zw¹úwÅ@õØÌNFRyù~uuM½^~ô¨¶ëN³î=+Õ÷yõçŠ>ï¼H.¢£ó',}(¥þ…úB)¯•Ñw«ú|—µ_hDo×`US@3k ¾ÅWè»ZïßÐÙ­Ô ˜$1Í}—;”ÌŸåmcø…˜ñ‡!‘|r¦½ß!øè1*­ÊŠÎÎÌey¯Z\JÓ6{Çm i8Ç@í¸‹§$I&¤˜¦þ'Õmm.»]óÈϪA:Ô…!TÛ6VƒlVe½Eù^Ài¢0ˆpdƒQvƱe¡ê¾Ì³Ê,{í§•F»µùô~å]-ã0†`Öö!^!&bžž` rcà0é_¿æ¯×A _¿v}»Fó²ý KFÜzÀx&>dú8>"ðW<Ưt,†ò0…uèTa„‚'žPÿÆ^’™å« b;ëúWó»5Yî•ÚC8²¾ljÃ~Wö»ÅùÍPçø:ƒÔ¾·ç „ µä$Ž–¶Á¡|2¸ø~òª;¸AL¹±f‘8ÃÝ!Ë•!ó¦ÿgeÝw!™?Â{áR&©-!Z¹ì¶ ªòÆå×P’„OŒ£ÌÞ܆èaâÿ=tv'«í³*³Î›¦uhr’ÐIî汨ž¤áC`ÃŒpÐ0€òÀNà?o[â¸OÂêC3ôÏ9š=d!ç8~´Î q¬Pª.l‘8¸‡²cŠŒg\®LHOE¶w©Ç(á!›UF°Ü!HD$‰ã'c©$©­8á2$Ò¸ +§¡MÊææŠ_ŸçùÏ=tƒ½9]¨®/ke»ð¦±BDz $˜Î'¦iÿUWª³þí*/Q+HÕêÞìe]WnAÜë'êô‰y +Ý–óïq$ø Z6È/Jä‡+ƒHÌæ— ÿ—$$ l»f¨ +ÓÍ T $S$a+«›~§û',:íTÌxÆü^cv[Õ •=Öl–ÇÜUíÔ;LƧœÞê¶9¨ÚYïNl‰9‘ÑdË‹Žñ7³(¸ºàsá+¬”ßU™—½*çSP ‡¶žXÕð‰Å#¦Yóªé°…ÎzhöÿÛ²:Ð<9'84™2]ÏUe«ñ2=€wz3ƒYÕ5v¤ˆ@€`a8j¬\JAÆáy¨Œf:1gŠÃÍ OÝSEòhŽ—õiŠÓëó¦„)Åe žÉzCÝ•Ue(Óßã©óÇ>öýÄ;%4«ú0ØcÝLØÍý(ÔJèpÐe`”46ûîôú¢©ÄYÇ.û쌔v¾ÖŸéÁÅ´XWÍ&)›Dëä‰8Ž?™®¶(¶d@[áÒ1S…‚ùhF‹Í£Ù¡8AΡ}¸o¦¤p¨6ÔU÷†wèìû|v³4]ôõ—d7Œ÷ñ”3&²¨É2Z“w•7àÐhs‹„8wÆw52ÃâDyú(ÊMñXÀœ½æ¡qbEZ3_#éð´HJ#=äé°6 ÎÐÝL †:ð¨ãË%Ôagõ™ +|u|á‚zô¿B}1u±øu\Lf=Bi;È#Õ–½=9bé—`=‰ ¥ñwaÍûƒ­bÌV1ϬtƒÂ·Ðf_;aSzzÚσ½kðóÕÕÇHÑÆžŸ©§•‡‰$l]Xàu~kòáø f1†]>Lçg ³§Ç?vN®”ÁÎb¤¼øðû;û¯'œG‘Ãgy, +Ã~œÿï å4yèoÜ#‚ç† +°S$óîéðàW)Ojö¯Zk3VŽ_³©Õü`À½ºšM€p¯ÔhÙÖN±kXd|Qö|.º?Y`Øù¿*Mˆ/ù[5þ¥‚Š ÁS³¿T D4¶Øx)Ûfý8Ƹ¸Ü  *7DhŒ¾åâ-N¸â”ZjƒcÚäB=³µk!}ó¹«woîGÌ}»ßªúÔäÿ2¡)w +endstream +endobj +5161 0 obj << +/Type /Page +/Contents 5162 0 R +/Resources 5160 0 R +/MediaBox [0 0 612 792] +/Parent 5155 0 R +/Annots [ 5145 0 R 5156 0 R 5157 0 R 5158 0 R 5159 0 R ] +>> endobj +5145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.95 624.503 217.493 635.407] +/A << /S /GoTo /D (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35) >> +>> endobj +5156 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.594 562.729 193.695 573.632] +/A << /S /GoTo /D (group__avr__stdio_gf3387285b3eb0ce4e0e7ca3ccaed9014) >> +>> endobj +5157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.354 433.511 456.122 444.415] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.573 330.202 394.341 341.106] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.778 238.848 380.547 249.752] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5163 0 obj << +/D [5161 0 R /XYZ 132.768 705.06 null] +>> endobj +5164 0 obj << +/D [5161 0 R /XYZ 133.768 667.198 null] +>> endobj +5069 0 obj << +/D [5161 0 R /XYZ 222.076 627.656 null] +>> endobj +5165 0 obj << +/D [5161 0 R /XYZ 133.768 610.929 null] +>> endobj +5070 0 obj << +/D [5161 0 R /XYZ 133.768 553.926 null] +>> endobj +5166 0 obj << +/D [5161 0 R /XYZ 133.768 539.356 null] +>> endobj +5062 0 obj << +/D [5161 0 R /XYZ 347.247 504.107 null] +>> endobj +5167 0 obj << +/D [5161 0 R /XYZ 133.768 488.003 null] +>> endobj +5060 0 obj << +/D [5161 0 R /XYZ 201.494 412.754 null] +>> endobj +5168 0 obj << +/D [5161 0 R /XYZ 133.768 396.4 null] +>> endobj +5061 0 obj << +/D [5161 0 R /XYZ 169.235 321.4 null] +>> endobj +5169 0 obj << +/D [5161 0 R /XYZ 133.768 306.675 null] +>> endobj +713 0 obj << +/D [5161 0 R /XYZ 133.768 214.036 null] +>> endobj +3265 0 obj << +/D [5161 0 R /XYZ 133.768 191.007 null] +>> endobj +5170 0 obj << +/D [5161 0 R /XYZ 133.768 191.007 null] +>> endobj +3243 0 obj << +/D [5161 0 R /XYZ 329.314 155.878 null] +>> endobj +5160 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5184 0 obj << +/Length 2563 +/Filter /FlateDecode +>> +stream +xÚµYëoã6ÿž¿Âe fERÏEQ wI[\›í®{÷a[ŠDÇBmѧGÓÜ_3R¯ÈθûbÒÔhÈyýf8òWO+õþêoÛ«oîD´JYÁ°Ý­¸”,Ž’U”†,Jùj[¬¾xB°týÛö‡oî8ÑŠ˜É4F†è[¢˜p‹YôM[”ší—%,äÒÑ}w†QêÞ­7’ûÞç6«Š¬.ÖúÞ‡{wY^ʶTÍzÃÃ4Š=Käxu»½ú÷&þŠää,õÃU~¼úò›¿*àá+ßÈõlH+)Ç«ÏW?_ùo+/Œ™á <&™€ãø¾ï•Ukšt£hþ«úwþqkuŒyrÎzþêû’hÂp¢ Žæá¡ik•´(cÉt`rKäˆ@kKAÞ rñv_6öÜ]•·¥®èŸ¢!6RŽØ$‚ÅÃ^“#w“!K¢È‘]S°+MŠ²É½¡÷ÜÌžíººÝ«zjýVÏ©j}¤YÙ2ÜÄâ ‹ÀäùþµWF¢Äëš²z2CžR?Y—ùôþjõHRoW(<Òká{ú¤*4ŸÓfï†6±'J½FµÝ‰v€cÛ5£:‚#ÓZ¯Ý›—Oatio2YâUJª þ¥S×)/µGL@WJù¨$–†éÆž×ø®ª«ì@ÿjÕè®Î•3 *ÏZU°žÇH¿vëMâ…ëf¾Ïš<*´‚y¬Zš Ò¢€¿e$ufy0º¶apN?ø‚®/3¼»¹ýçÃçÛí/6ÅØÐþ¼ýtûýgvpÎÜ5ê’ýáØoØõß´*;£` +yWתj/Î*k€ÊgüÉ^g¸¶«+ûÇh§m45]fmðlF`gÉ™ ã ÀI pgp, +Y˜¯ló# C½pŒ2NQ6ü‡…]”‰ ~c—€¥‰£ 2Ë÷Y½N…³Ú)B€+þìùk 6°ñ{T?uí9#cHÉãŒà`„€GõdòŽLÆéÿZÔ'µ(ª`<ÞÊK"…?BZ·/ç%·š9—?²\UŸ})ögI‹KLÜýIvspŸ)€Ôôu‹K/qÊü8~2áÆšf8 ®¹GPˆM ö¹g±¡Ìý†”g§J iÞvÊøþœ¾<žFìŒtƒk˜ì!úq|TKøvªµ‰ÀÒd ©âñG›Âp!;en˜3j¤G "»îp{DF"xã¤M±|4-Z~ ¦…Ä©-{Rǘ5§Y8­Ë(2¢Ì‡#Aæ¤MÞ'•5º²Ïˆ7L2NºiÊǃ²O d–ŸÖFØj6©òCWØgí>kiV©’ +ZV ~6K°Œ½Kø,½/Vœ—9J –Ñë0{Å°wW€;žxOÝû š?Ðä6áS>ÆÙØ®ÝA:dm«Ž§ô¤ +PÛ†¡3ΟAK11g"‘ScVÈŠwSØ]·tNXËZZƒŠsÏè¦7Ò@ªìv +€\"/ûw‹—*;–9‘ÕQ×/ö…Æ2%À›`ü̸>níyTÓÂbÙìµY­LÔ=Ÿ÷ʳ5‘ç|D„L 9bbQÐœß[t@@ä:Ä™°ñ€‹S3Â6²D2ÄOOŸºh3kÆ`4«ËÖ¾Dvð +ƒÀ˜`dD, ùT£Óq鲦1ŒyàeK÷‡jù¦ô>pwWŒ½©œ‘y›ýŽÑ«ˆ}kªMÆ^ß\“¤ D_©›ÖRÒ€u¬Q$2³|œ +p7m9éÓ„I8 ñ—ÑeQhsCñC[]äQ¹¦Eƒ•¸ÔÛÐj1a_Ó´gb…Ç)A±ñi©ÜͶÒ]‹*5sª ËgÚ ÎÜ_«loo>ÜH[¾wÿñö§‡¿ßÿø{[߯9çÞö "6‰Ä™‚ +ú÷¨@pË™®¸6/;ÚÌðí›Íä9÷Ih$ÿôÛxüðéç»gŸ|2%½0Å»«7øàÚjLÑöá¥ö¯!øÊ@>r&½ú±I 8æ{Ý(»³møVå@ÿ˜å¿Sö« ›ÿ¾YþËõñ”µ¶+®gï`‘½§Öø»9”9=§Ë{ÝØ[`èqüðdè«‚Vȼxc“‘mŸásá Ê48`NØG÷¿ÈöK`ô¸Ø‡¬esrHàfúO4?–Ûð˜{Pùy™ëÕ¿Œp—ÄÓæbºÛ +L°_e—4åñ¨Š—ÚÜÖÕ“%·)EÁÏK_4r] ð+âžÝA:÷Q®o‡»¨·×–B-5ÅBc¬62‚"*˜´ÆƒWßþ”Þ½ýåχR"Hÿ¯ßþz7^ü8ŠU¨ü+ŸFÝ'ш¥1"ÜðI4=DÖOÞC®³ÖåOײÝî;šÜ¨œ& Ü'ä;žÐ?áûvfú;ÎH™ Õz  eãÁädûäFÿùò¤ª¹ÈÿÉå: +endstream +endobj +5183 0 obj << +/Type /Page +/Contents 5184 0 R +/Resources 5182 0 R +/MediaBox [0 0 612 792] +/Parent 5155 0 R +/Annots [ 5171 0 R 5172 0 R 5173 0 R 5174 0 R 5187 0 R 5175 0 R 5176 0 R 5177 0 R 5178 0 R 5179 0 R 5180 0 R ] +>> endobj +5171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.301 618.834 228.551 629.737] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.745 618.834 376.163 629.737] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +5173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.013 589.254 387.648 600.158] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +5174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.745 589.254 478.476 600.158] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +5187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 577.672 181.808 588.203] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +5175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.567 577.672 252.104 588.203] +/A << /S /GoTo /D (group__avr__stdio_ga1226b8f734a1b5148d931ae2908c45d) >> +>> endobj +5176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 249.53 178.022 260.434] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.805 249.53 230.223 260.434] +/A << /S /GoTo /D (group__avr__stdlib_g51ac965dacbc9daf922f469bdcfe00c2) >> +>> endobj +5178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.03 249.53 305.776 260.434] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.234 188.63 187.076 199.534] +/A << /S /GoTo /D (stdio_8h) >> +>> endobj +5180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.2 188.63 343.45 199.534] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +5185 0 obj << +/D [5183 0 R /XYZ 132.768 705.06 null] +>> endobj +5186 0 obj << +/D [5183 0 R /XYZ 133.768 667.198 null] +>> endobj +3242 0 obj << +/D [5183 0 R /XYZ 304.586 562.828 null] +>> endobj +5188 0 obj << +/D [5183 0 R /XYZ 133.768 546.938 null] +>> endobj +5117 0 obj << +/D [5183 0 R /XYZ 133.768 150.51 null] +>> endobj +5189 0 obj << +/D [5183 0 R /XYZ 133.768 136.778 null] +>> endobj +5182 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5198 0 obj << +/Length 1981 +/Filter /FlateDecode +>> +stream +xÚÝYI¯Û6¾ûWè(5Ã]bPôP4/H4móÚKZ<È6m °%WK^_}‡‹ËtlE=")j†3óÍÂ1Ž¶ŽÞξœ½z 2RHIxý‰£5¼ü1ÂV®g»õ1[‰ùp}œý2Ã'ÊÃ!å‰Q&Üiç ŽuÝÀñ0‰›v]¬åfñÆto—h c–mÝërã´Àؘ>fH 2(´ÒÙÁkk|&P*e· EÅãÇ]^;Úc>«¬ð ‹ý‹;ÆÒŸpµ×Y¥×n²|qÏÌíYeû½¨´ÊuZ­¶^½¿¾EŸFTªê,0üˆßíThOwnía +¥$‰œ#†ïQˆ`WŒqœ·8PŸ“4.+77œÞ½ãÆÇ +$ ¥´GšQ„Û%Ä ØxB»=OO'j“%H²t æ„›Ø@˜"f\ØNÏA'v €H2Háã R†d*oÂaÁ¸ŽÇ„Âáç°£¥?Ø€³è_fÝg FŽ/a¡§r/ˆB@¿`%N° Ï°`äiëÝ H €„{€pe"¯Â€K˜¤Üm~Ø›³žÛ–ò1²n¶-ìˆ#Ù)oo*c÷L¬í`Z´Öv0*ºÊš¼,ÜôX•s"âÏùÚZ¾ØXd«ºl«•^¬Êµv «òp„O—&î¾xjARÄßÀ”AÔð\Ð !và b·9:6ƆçmœŽ{}ÐEÓË ¨­*Xéà¹.µÇqQz€pÒƒGha„è°<§8n7s*LÈÈ‹mn8ˆ³ä g[ݬ®ƒ §€ ¯n D¦gö7z—$Þ´ÅÊjósðI„ž¼09Š¸êO ']׎²”„İ˪lÕèÊó«ÊC€$Ý„ªûóã<~×8Ò•nÚª¨Û¦pàϱEŸä&1r)@-I“Žø›!m2*P’(Léi}DA૵M“9,=Ï!Î:Ü›÷«²-àTΙ”ËUÌÔmðß¼ZY¯¸˜yÓÁzU¶M^Þ/‡XصÑåæBxí_ùÞœ$La⟇¶Ë_]–hë.E@&pš×pèm›w!y©›g­½7/ËÆ/×yÓZ7¯owÊÔ;¥1yÀù$Ø«sߛԕ#ß3˜¯§¾@—'à_änŸ%ŒxÚG«ð!æœ%ÀTæÿèE>,'/'¨U)_56Q ©œ%§±éWˆ!ÆOÓ8³ž­âCY7¡%–C:6€d‡ã…{„8 +аâÝ'˗Ʀ `u!.qðvÎïŒK&Ê$,ÿÎ÷^÷(´É5Ï{ðZ'ØIpLG!&.D,\'i‚p8ñ7>€m ЃÌZ7e¥ÝÐÆ@3èÙÔfNm¼:Ùpš ÝÚ±äiOÕ¸¯Ýø*N˜Dr| h ljÞ!r Áâߊ½®kG9ógòÏ ;uX PÁ‘àìT§aÜôy—ï}ì1©"Í7“ŠŽ«~wÞª»>ù}@ôYÓSλД…TPDüôÛû€Œ{ÓLƒí…èJ5ª(\²Ooï6ó'Ì*È<½‚8á^ìú  ™ îd6¯ú$og}ž48éûŽþÚ jô ýž@Ï“õ÷3^C&IávŸa’û­v&­ûËãÄZÄ,€¯:<ÂZ[#^L\fû——C`Jâ bõœ×ÚóÏy‡ýÊó-ýÓz '=„Ì¢…µ—çDøeE£r“ÂoÍeê¬À<ÓfsÃ=F"ÊþÓSMòÇ +²²?Õ…”hJG‘Üw†Í¡ %0Hë˜ ¸B!t!©“ë¹R*Iu2cê‹u²@œ÷Âvv:繄’>%úkIíÉÃ0k|¸Mc¨ìŽmã^¹;ô´X…üχÙí—}‘Èø£Ö\gÕRªgòÙ‹t©3m¦6q‡M×ËXë&Ë÷w”v_ð‡§Ÿ¯{УéÿÊ#þ Wý!ºVNüá÷9\“â¬Ê³Î.\ǧ :ñ’[ $ ž •n³ËšþnQ_NÈô=zƒ&/çãqa0p©t¯;F¹¯ŽU¹­2ßR8èCYÙÞF¸[%)J„ +£šœ£º·µ¿éúŠ!(>=­Œ G,½§ò—_·+¡À¬$Ø•é•®D:¤7§¯pWB ½P¸Ž×ŽrÓ±ðå×ÜTœ6‰ù¢—"Ä6ðÑmIàfW¶Û£¾ÍM-ýÙ4›\a™ºº^$qórÔ¡îm +'îaÞþ¼ˆ>u\'T0E€‚‡öÍí`ÆLKÅÕ4Œ ”LŠî¡Ï2®«Ïú,&6„4 †—êJ›Åz&”Ñõ•kÝ·ñ¦íñ¡K2Ž%Á¿xTŠvÏ<Ý¿b© =úc'7–^/oua:¦Ý…¡ëP>îZ7øA{ÏæîAðkÊ^“ÔÍ(Æ~d¯aX™ÅQ5gI¼ØçËÕiÃý‡òï—­.¦"ÿ Ød +endstream +endobj +5197 0 obj << +/Type /Page +/Contents 5198 0 R +/Resources 5196 0 R +/MediaBox [0 0 612 792] +/Parent 5155 0 R +/Annots [ 5181 0 R 5190 0 R 5191 0 R 5192 0 R 5193 0 R 5194 0 R 5195 0 R ] +>> endobj +5181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.942 654.082 475.985 664.986] +/A << /S /GoTo /D (group__avr__stdio_gaa6d255675688c736c99ebd32f2a7214) >> +>> endobj +5190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.696 592.308 460.739 603.212] +/A << /S /GoTo /D (group__avr__stdio_gaa6d255675688c736c99ebd32f2a7214) >> +>> endobj +5191 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.635 451.509 436.302 462.039] +/A << /S /GoTo /D (group__avr__stdio_g47b00053272d6443c9befdb1304002cb) >> +>> endobj +5192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [447.173 451.509 478.476 462.039] +/A << /S /GoTo /D (group__avr__stdio_ga89248dd55efb5f59a96e82976c97758) >> +>> endobj +5193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [284.114 335.871 315.416 346.775] +/A << /S /GoTo /D (group__avr__stdio_ga89248dd55efb5f59a96e82976c97758) >> +>> endobj +5194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.707 274.097 478.476 285.001] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 212.323 230.615 223.227] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +5199 0 obj << +/D [5197 0 R /XYZ 132.768 705.06 null] +>> endobj +5118 0 obj << +/D [5197 0 R /XYZ 133.768 645.28 null] +>> endobj +5200 0 obj << +/D [5197 0 R /XYZ 133.768 630.71 null] +>> endobj +5119 0 obj << +/D [5197 0 R /XYZ 465.322 595.461 null] +>> endobj +5201 0 obj << +/D [5197 0 R /XYZ 133.768 578.734 null] +>> endobj +3268 0 obj << +/D [5197 0 R /XYZ 366.743 516.063 null] +>> endobj +5202 0 obj << +/D [5197 0 R /XYZ 133.768 499.335 null] +>> endobj +3270 0 obj << +/D [5197 0 R /XYZ 344.416 442.333 null] +>> endobj +5203 0 obj << +/D [5197 0 R /XYZ 133.768 425.606 null] +>> endobj +3258 0 obj << +/D [5197 0 R /XYZ 184.438 327.069 null] +>> endobj +5204 0 obj << +/D [5197 0 R /XYZ 133.768 312.399 null] +>> endobj +3259 0 obj << +/D [5197 0 R /XYZ 179.466 265.295 null] +>> endobj +5205 0 obj << +/D [5197 0 R /XYZ 133.768 250.625 null] +>> endobj +5116 0 obj << +/D [5197 0 R /XYZ 453.925 215.476 null] +>> endobj +5206 0 obj << +/D [5197 0 R /XYZ 133.768 198.749 null] +>> endobj +3262 0 obj << +/D [5197 0 R /XYZ 354.937 153.702 null] +>> endobj +5196 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5216 0 obj << +/Length 1857 +/Filter /FlateDecode +>> +stream +xÚÕYYÛ6~÷¯Ð[e fyK +Š>M‚zdÑ>$ÁB–¨µ +[rud»ýõ’%—Z¯Ó¦Ç)y<ä gæû†ÂÁ]€ƒW«¯nVŸ¿¤2HP"a¸)ŠdÈD ™à&Þ†”¢dýþæ›Ï_2‘¥bI ŠŒÐVb¦-BÚ./k´ó)Š‘ lûrAQ2<_oÁá›.­ò´É×*pøú;;iVîË®TízCD"£DBk\½¸Yýº" db'A AvX½}ƒ~ü&ÀÆ®{#zQ¢ÿ¸Þ¬~XáË΢Lœœ‡"öƒ1˪s;=ö]k§ï°ÀY]µî—l—6ÎM|¦^ Féà†w3+%ÄÌU<enoÛ®ñø“bÄãÑãÏÖ;{ùúÛžeÁ(JÄÕ«ªôàY˜EH²ø¤L'„'BÊ ’˜â”[៛²SÖAÝÎM`²º³óc ®U.ºÚŽÛ«Ÿ±©#Á|œ$§Àl<›Ð.¢£‹}SÃf:Y‚hB'*OöOµÂÆRbHK€¹’-ž[û£êú¦rñíPWn}–©ÖýI`'/¾{9SMS7k!ì2gƒ £ˆ$gQʼQzûýUqÊ%$Ðÿ?L“‹a*(’™ÜOkBH˜6e:¸°.Lý±…§¹sèÇW«àíÉÅÚµÃ:c‰q÷;Õ(OÌ%J}BóA¦Qm™+9¥‹“cSß5àópP‡ºyXKÔl‰Ò<ÜO[þ®nµñ1‹fMâP¥¹}Ôf~XCõ®ËÜ:”™Ä¿tŠñ .noþØ!HÄÉ4vb9ììÏ*G —“ÈAŸRÃòc•VàÜ­G+‡3Âó­ŠÅ0ç ]ç -3ŒÁ:L‡+`žžJ%çè.#y1¬”Í1”®4÷D+øǣ©/ð<&ƒT½ýEe]ûÌWp9DÊ©†ŸÎ ϧ"¾}ètì3É ³8š%~Mí+èET^YÏFbÀ‚IjaJ¯¶]SöÅšŠ°P}7•‘¬ ®6̈¹˜ÜÑ›îD—v†/î¥_wxª'UØš rS¶ìhÏÀ>8è)úýþÁ¾ÇäϬ%Ò¡ Àƒ|ÇO% þ„ó§ÑXÆûjo€N/”Vv,+¨—vjÎb¨€˜>óQe}c(OB4£ªòM]l uè^ÙW÷º"¥íð{V÷P» ¨W9Z®Ýš„ª.K7(Óè¼\üA 06<¦âм…ÙÖl7ûv°ÉÐó²í€õekøµFwãé_u÷JU#yje wÔ€=â ðþ_àó’/þÄÚ,­Š]X(cG8ÿ4píxÂe¢"¸(ºnÅ¡óK†âÓò” „¼-ÎDd±ÜJè0h2¯·7† SÀÚ¾Êôz²L%rL>wHžì‹§Äø¨š¢n­ÓÓ´³ M‚«)³5Àòpø¡¶ãUOó´Kµ¥Ðácù3ƒvÒ3öF©Çi×ë…LjWajLrե徽‚HKbL™ôRjÐÚaþI®)5N€þI“#â(Jâ¿LÇ/†EߎMgêk/±„smôÊrw9mc?Š•¶„÷EbtÎÊE÷C3-çM]>ÆÎìš‹Q!N÷tvN¢Gˆ4DcÌŸÆΣUú(;Ï´.ä.pŠbzƱÿ‘f” ‘î»2ñT[øe&Í­dOaâ@Ù%¹ÄÄ%’±8câ4J&N¡å6ãA. ¯”< Ä €ˆK‡ŒQ¬O€6&ÂaE½¸}­)®~Óyå¬Éà d–8£à¥k¤,hãpùäeñè/ûöNÏÐ-däü¼Ån‡¸p»‡ÉÀÞ)çÖ4x7²wý0gïú®ªžÙ'MàN–<¤{JØ°Sã4x­]x³¥¾³Ä¶9cðt\ÔËà¯ÞØ•»`ƒcž»©e´¹S³[Z¿VÎaëìï¿òZJvsÅv†toÊC¹OÍñ3—JKm mÖr× òšˆð·LÝAu»´³ªK7Þ—û½Õ@S“Sú¡²ãâM©¦zI"§Ÿ*_ÁHPO‹¹ ¡ÜÙ·sËu 3 žðT)ÝcßÃ å‚ +N&ŽÙy=¸ÔùALW †>7˜Î, UÝÙW¦ï"úò·¶Ý$q0M†«h2\ECÑ$ +_»š +q’"a–î÷ªùLßʺŸÕ}Ë­þlñàÄk;лûPænUÕýݼÅïqê&½SóÛï]½ÏÏnÌu§Y§š±v¥×dWrNk`uW\÷#žãÙ‘[Žéàýj”Ä(b×|3¾M‹ o'ߊbp«tN~¥*“Hùüÿf×ÛÉ×*³n‚ŸSö\W<ýD1v3sÑ4´.©~øЬYnöå6!ʪ¬{¸SÕ¹Éå㸠+endstream +endobj +5215 0 obj << +/Type /Page +/Contents 5216 0 R +/Resources 5214 0 R +/MediaBox [0 0 612 792] +/Parent 5155 0 R +/Annots [ 5207 0 R 5208 0 R 5209 0 R 5210 0 R 5211 0 R 5212 0 R ] +>> endobj +5207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 569.014 203.377 579.918] +/A << /S /GoTo /D (group__avr__stdio_g19c2bbe9ce4af9f0a7e3448387004fd3) >> +>> endobj +5208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [294.227 465.706 318.894 476.61] +/A << /S /GoTo /D (group__avr__stdio_g47b00053272d6443c9befdb1304002cb) >> +>> endobj +5209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.247 465.706 367.549 476.61] +/A << /S /GoTo /D (group__avr__stdio_ga89248dd55efb5f59a96e82976c97758) >> +>> endobj +5210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.649 386.681 187.596 397.211] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +5211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 336.488 207.79 347.392] +/A << /S /GoTo /D (group__avr__stdio_g0beb4fd9ff6833a364e3ce60370de058) >> +>> endobj +5212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.707 183.36 202.702 194.264] +/A << /S /GoTo /D (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) >> +>> endobj +5217 0 obj << +/D [5215 0 R /XYZ 132.768 705.06 null] +>> endobj +5218 0 obj << +/D [5215 0 R /XYZ 133.768 667.198 null] +>> endobj +3263 0 obj << +/D [5215 0 R /XYZ 294.574 621.987 null] +>> endobj +5219 0 obj << +/D [5215 0 R /XYZ 133.768 607.317 null] +>> endobj +3278 0 obj << +/D [5215 0 R /XYZ 366.902 572.168 null] +>> endobj +5220 0 obj << +/D [5215 0 R /XYZ 133.768 555.44 null] +>> endobj +3273 0 obj << +/D [5215 0 R /XYZ 256.846 456.904 null] +>> endobj +5221 0 obj << +/D [5215 0 R /XYZ 133.768 442.234 null] +>> endobj +3274 0 obj << +/D [5215 0 R /XYZ 234.788 389.46 null] +>> endobj +5222 0 obj << +/D [5215 0 R /XYZ 133.768 373.107 null] +>> endobj +3257 0 obj << +/D [5215 0 R /XYZ 370.508 339.641 null] +>> endobj +5223 0 obj << +/D [5215 0 R /XYZ 133.768 322.914 null] +>> endobj +3267 0 obj << +/D [5215 0 R /XYZ 170.879 236.332 null] +>> endobj +5224 0 obj << +/D [5215 0 R /XYZ 133.768 221.662 null] +>> endobj +3115 0 obj << +/D [5215 0 R /XYZ 275.734 162.603 null] +>> endobj +5225 0 obj << +/D [5215 0 R /XYZ 133.768 145.876 null] +>> endobj +5214 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5236 0 obj << +/Length 1491 +/Filter /FlateDecode +>> +stream +xÚíY[›F~÷¯à¤z2÷KTõ¡j5ŠzIÜö!‰V¬¯QmØÞmúë{`cvØ5Í¥IÔ gÎå;ßœãà*ÀÁÓÅ·«Å£'T —Õ& Œ!%u @Ò`•¯BJ‘‰Þ¬ž=zBÈ@–*ÄŒEÐ×NâD›BŠ÷e•¤9Úúi$ëä¾™Pd:ÇÑ’¾¬â,‰‹$ZRÃ~r×M¼Nwi•Ú2Za¤ +‰’µÆÅ÷«ÅŸ Jp@~d°ÖûÅ«78Hàå³7~Ý6¢û€q%õ‡»àåâ—> öO(D™pÖ®¶6ZJ#ÃÍ![Wiž9÷|()ªÀu‘fÕ¦ÂP?§H㣘-6y±/[ípW•Mê¡ +óCu}¨Ü«*wײ*l¼÷LO¤AD²A¢lQxægi);1–Ü„/­mâë[\µ~ñt1š¦Îâì% ‹6>7çïk,0üH«ËÅxdĉJÕ.»œ'¶ŠÓ]‰<ÀY¶Ÿ,EĈ#žCƒã¦wŠœ%?»QmÑ:ÏÊöåz·A!|CÍpFx“®œÆã,…-Ó¤›(Í:äWÔH3ØÛ}^¼¤½È"B"¥‰Zä´U9 V c>Và©V Í…€0§ ø½H+ÛE®½†ó:mKÁ5ÏÔ×Ë·>Ž+°1ƒœxŒ€© £Çp È’ nšŠ½· ³á-<°ÇxÆëÊÇ +°Ìcˆ1`= Í)ÖGÖó@%0êƒÂ\Ža+öÁ ÂTÿk†^õžz™ }»µ…õ¤Æp$‰¸+§5þîÕLÂLûSÈÆ),×q¶™W΀"õY-HËS¬:¸§™ Iu,ô&Ržª¢ˆ)}·—i”{—Φ•iÞù¾g¡‰fæ’»Î̃´Ö'U,)4B«SŸ§û›Å7›ÆÉû€~N«‚ýØã^ìÍå ÄúÞzL>N—Â~~Gz07“$d +œÑh¼2ˆO­#â²v§pDÂDú!iœÊ™Ë‡Ç@ÉgöY +°§Lÿ¶•Ga½ì¨1óiPpt¤ña@C¡>/> endobj +5213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 642.75 194.54 653.031] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 592.308 224.637 603.212] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +5227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 492.67 200.059 503.574] +/A << /S /GoTo /D (group__avr__stdio_g33f7bd99d40bf6f68a00d5507d65363d) >> +>> endobj +5228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.649 425.6 187.596 436.131] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +5229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 375.408 204.472 386.311] +/A << /S /GoTo /D (group__avr__stdio_g3f0edc16dcabb5344d59d42cf7682102) >> +>> endobj +5230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [154.327 325.589 210.118 336.492] +/A << /S /GoTo /D (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) >> +>> endobj +5231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 234.235 236.592 245.139] +/A << /S /GoTo /D (group__avr__stdio_g77070c245d4ca4f7ec7d7144260fb875) >> +>> endobj +5232 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 184.416 224.637 195.32] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +5233 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 134.597 230.615 145.501] +/A << /S /GoTo /D (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) >> +>> endobj +5237 0 obj << +/D [5235 0 R /XYZ 132.768 705.06 null] +>> endobj +3246 0 obj << +/D [5235 0 R /XYZ 241.733 645.28 null] +>> endobj +5238 0 obj << +/D [5235 0 R /XYZ 133.768 629.176 null] +>> endobj +3248 0 obj << +/D [5235 0 R /XYZ 447.947 595.461 null] +>> endobj +5239 0 obj << +/D [5235 0 R /XYZ 133.768 578.734 null] +>> endobj +3249 0 obj << +/D [5235 0 R /XYZ 458.398 545.642 null] +>> endobj +5240 0 obj << +/D [5235 0 R /XYZ 133.768 528.915 null] +>> endobj +3271 0 obj << +/D [5235 0 R /XYZ 363.585 495.823 null] +>> endobj +5241 0 obj << +/D [5235 0 R /XYZ 133.768 479.096 null] +>> endobj +3272 0 obj << +/D [5235 0 R /XYZ 234.788 428.38 null] +>> endobj +5242 0 obj << +/D [5235 0 R /XYZ 133.768 412.026 null] +>> endobj +3251 0 obj << +/D [5235 0 R /XYZ 367.998 378.561 null] +>> endobj +5243 0 obj << +/D [5235 0 R /XYZ 133.768 361.834 null] +>> endobj +3252 0 obj << +/D [5235 0 R /XYZ 193.295 287.207 null] +>> endobj +5244 0 obj << +/D [5235 0 R /XYZ 133.768 270.48 null] +>> endobj +2819 0 obj << +/D [5235 0 R /XYZ 459.903 237.388 null] +>> endobj +5245 0 obj << +/D [5235 0 R /XYZ 133.768 220.661 null] +>> endobj +3250 0 obj << +/D [5235 0 R /XYZ 413.935 187.569 null] +>> endobj +5246 0 obj << +/D [5235 0 R /XYZ 133.768 170.842 null] +>> endobj +3279 0 obj << +/D [5235 0 R /XYZ 453.925 137.75 null] +>> endobj +5234 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5253 0 obj << +/Length 2498 +/Filter /FlateDecode +>> +stream +xÚÅYëÛ¸ÿ¾…qÅ¡2óøI)- +ô‘ r(pm³(‚æ©V–×BmɧG6é_ß©‡-ï&ÀúI9$ç=¿‘øêaÅW¯oþtwóÝ­4«”¥w»•PŠY“¬Lª™IÅên»zIÉÒõOwßw+Ä„VZ¦ÒrD¿'ŠÙi–Ùx h»mY³ýÒA ÓBº?\9( /×%xô¶ËªmÖlשyôæzî²¼<”]Y´ëЩ±‘°O¼yuwóó€CøJLä,åz•oÞÿÄW[Xü~Å\Žô¸R1 +ÜxX½½ùû ^yÚ2©ô¨<¦˜LÎyTVqÚ¶yVíhü#×<¯«Ö/åû¬ñzŠg秠ôð#犨´žé*¶2Ð|øp¿–<êw J•Š>P¾Xo4°÷<Z±TÛ¯cbwì–HÆëŸ9„1¶èТð4|B³‘–³4•«°ÌȘˆïöˆ)u´ë«¼+ëŠv*5UØxp`2Øå*a‚d§¢ÙÕͱõ§Ã0ëºÝTÆ`ýSߪ¥âQSdÛ²z ºŽØñ4·ÍºÌŸÒÔGZîÛÁ®¸Z8;­6àÌÒ& '8µöþwªÁã +%]MÏûÏKÒjÆí†÷ý’¨ ÁT 4Œ®µŠqn¼zýµo‹ÂE…[óàãî¯oVï wNèùÁnChyб»-º¬<´KÀW%™HãY´)¾mþöUñ¦9KDü‹Æ›ø?ÇÛ”_1âɸs—øçZeM™£Ô»§}¤}ÖEú–"†Ù‚K n!ÉŒj™r+9‹¥ËT3YVô<5õC“éåXëæóÚèhI=e1†Ê¹è–âÜ-ûê¡èòÑ)qáÒ,‚§L'éhß|áf3•˜3÷º}ó×W >…JŠ¯,$ ˜tpy±«äY—à’©¹C` +¾n¡½v®Ú_Ÿ¼×"ªÑT0qêÛ=Ö~ÜN¹YYÞÍ’‹@qÐzò|wHïrêò˜:Ö1¤°5œ]4”]ñ¾šxȪµg¿-ª°ŠL81ÜÛ}–ÿ‡Fȹˆ:”Ò©° 3ÖÌÓ¸“Eqêƒâqä-⦇4 ÈN.¦y!!ÏK1ñ÷Ѭ³ª¦Yb̘ê7±©jâNÏÛ ‰w:vëåáà™ð;š¢ëÔ i ·&v.$ðëC™Â¿¿o‹Ÿû" LŸ8|`’…‘ÔIAõˆÏ ýŸû¦#.d_„ý‡³« æ؇½$î5ó—ÝûuÝÏ‘Ý‘¡¸>ÉÔ¹¾’Ϲ¾#nqô¤Ý–^ˆ ™Šóç0öœQ¶üFÍ=¼…kho]Š!¢©dˆ¡W?Ü.§Y9”;r¥ÈR—¾.º×€¥2/#¼îÖû l”Ì¿£yOo€]@CÙ¡ÛçëjÏZ$ÑC,BšGF*™4òéT`Ô7§Ú…ÓÁU³C»p®v`VËÚqÀj +ÆgŒŠpZ“‰Ä)çZ£ˆs¸ÉëÉ{xµ]ôK»šâ˜…‚®µÏÀ·OA®yƒ£äymû¸;A)í&-Εj$$ˆ“š_¥}ÌJ~ù¶Æ]ÿÑYäál—Ê;p¬Õ¤ºg§¥òC©/«ìÌÓ 1ŽçÙo0¥˺£ÄeKîS@å$Mv Yr)×Z¦e\ž~ xAO?¶ìWy€ÖIò!4è–cé’3&›ÝR |()o:¿ÞwP ["‚¿õ&5 qØ,³Ô‹¼²x쪯×ChðѾں°·Îµº¦F=YA[*+ðJÝM ÀƧ¬m]"šr©ó&aV?[Ï{±‚Ó¨­…$¦ÞYÏò©jÜ»«T@ãÌâS +”{“œõŽYJ^àóI;«œt6€úûP?gYÖÍŒ~?/ ˳^ã)·ç†~j¨›*”?TýñÞ!E&Ź!Û{âǦ„¾¾ò; €7é—!-=IJËåB‹"rýLLŽù¯ô æYëe«CéåñøYéuX'5Pó`@k‡ûb{¢ÇêärFªC}XÁhŸNEEëåîŠvT*¿$î1ÀÕ½s?8¿ª;:ü¾(<ÓP% mÃø±ìöž9°Sáô‡éf&2â檻ŠÒ ªÔÇ8qŒcT>óúxª]„à›óxþ·hj?ÓÐ:Gâ¶l +ì\ xdµ/¡Th¢Ù–U & Ó$™ñwÐR‚Hq '=õ©ÈK¨µ2wè¦}Av"Fgò²(cî‹ÂÀ5N5EÛ¨¤Ô´Ãäðóž2.¼‘-pÝ}T‚²ÎÌúŒxžÀ¨äØèݯÒ%Y‚ëLø=“ ¶bï†,rüÆcÛçÎY©OsÏ+µTÁ¹ñ¿]„¥\ØKXJñ‹A@e®žÉF·{°‰lhºÒ¼†˜oOuZ6…žE:dh tžŸO²º³Ž5Šî{^‡˜4á+&P-9 ê¤PZEœ\´¨*(6Œ'ö)UÍ‚Àáì$°@£>jŒÉGràÓX濯Jm ¡ëóüáQµs¡¼x9oÖ„a1€;¨·Lg¤4)õyK‡0ñ_ä¤ØMúæÓ;©ön?Eñç¼:ŒÍUöÐÎ98G§ôµkãð¤ø1g{fj%»{ýfÑÿl:”%òµDÍÚ1xm÷uØÒØõÒÉyŸI_R`ÙxºrÏo²X¾Ê:æão°4ñ$ºÅ½N_°£ESmý³ôÏÖ?³àÌÄñÌ=Æw²à’nsÌCÁšú:oë+LV5= ÿQ>ï\î0q+íºv‹ÜBA øÀ»¥áCûvïhúŠ!A¢ÄàÕ&ˆ£}©¢òz.Ozý›ú-Í¢¾ˆ œ}çgw„ž},¿ó]î%[>»ïÙ@¥íù_¡’PÐÿ˜¦9êkþ—†ÿ¤ÐYÀ¥“ÿ¤IÊ”ñª~ ЭɆUáßݾ§Á_ +ÿ•<¦‡à/¥z)z“œ'áÛ‡ÔCö̼jÖL›CyŸ?¿èÈúÓ燢:ùÛàZ +endstream +endobj +5252 0 obj << +/Type /Page +/Contents 5253 0 R +/Resources 5251 0 R +/MediaBox [0 0 612 792] +/Parent 5259 0 R +/Annots [ 5247 0 R 5248 0 R 5249 0 R 5250 0 R ] +>> endobj +5247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.649 607.252 187.596 617.782] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +5248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 557.059 208.348 567.963] +/A << /S /GoTo /D (group__avr__stdio_g5507d0e1bbfd387fbb2ffcfd8f5dca6f) >> +>> endobj +5249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.408 507.24 185.596 518.144] +/A << /S /GoTo /D (group__avr__stdio_gb4f9b130166e5811519513d6178c1ae3) >> +>> endobj +5250 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.572 448.081 185.76 458.985] +/A << /S /GoTo /D (group__avr__stdio_gb4f9b130166e5811519513d6178c1ae3) >> +>> endobj +5254 0 obj << +/D [5252 0 R /XYZ 132.768 705.06 null] +>> endobj +5255 0 obj << +/D [5252 0 R /XYZ 133.768 667.198 null] +>> endobj +3280 0 obj << +/D [5252 0 R /XYZ 234.788 610.031 null] +>> endobj +5256 0 obj << +/D [5252 0 R /XYZ 133.768 593.678 null] +>> endobj +3269 0 obj << +/D [5252 0 R /XYZ 371.066 560.212 null] +>> endobj +5257 0 obj << +/D [5252 0 R /XYZ 133.768 543.485 null] +>> endobj +3260 0 obj << +/D [5252 0 R /XYZ 324.909 427.324 null] +>> endobj +5258 0 obj << +/D [5252 0 R /XYZ 133.768 410.597 null] +>> endobj +5251 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5262 0 obj << +/Length 2581 +/Filter /FlateDecode +>> +stream +xÚµYëã¶ÿ¾…±A9ë(RÔãR¸<.HP4(²½ä×’m5²åèq»Û¿¾3œ¡67wצ_LŠ’Ãyþ†«ýJ¬¾»ùêîæ噬ò0O ¹Û­"¥Â4ÉVI®Ã$VwÅê] e˜¯¹ûáå›(šÑÊ4TyY¢?Åb·4L㑠닪 ¾²PGÊÑýå™rGðj½Q‘~êÍ©0m±ÞH-‚ï¤vg¶U]õUÙ­7‘Γ4ˆÒ w¼ùöîæ·›6«hvÏ(Ì…^m7ï~«&X {¯Kz\©H#\X¯~ºùû`á‰ç…˜Š0Q«D§¡Tš˜þYÊIJᖽ|£Ôl öF˜da¦RGð³ÐâßeÛ@Á½³4ø'|QïlŠ¢:íÃõ&–Qðfé iiÊÔ5u¶Íi­òà=N–mW­£ 9u/`2OƒþPNT±pT}YÐðûµÔ°ÕÀTU7 $ÀùjCÌn"®fÀ^•òîØ©Ë]½,x¨úá:ê¶([·ÆðêûÚœ~íànI.ƒïw4h¨9·å¶ê*:(³|áð¾B~é¼Ët ±üŠ%«§áX¶Õ– j)ÚÇQÅ êWÜ6ÜãÜ‚ÁRç-*ŽIÜÐnc¡Ìž7è¸ÝŸš¶, ZX݆L¬>ÌãÿÂè6~£‹F¿{zÖÁ©DQì×`ýL´4 Ì˲.èã¡*PÎ2KøR_‚Ð…t–ø L/ L³é o¨½çÕd@8bŠ ݸ6uFÌ/4K'ÇbÆ'|Ü7F’§u¢ƒYLƒ;Gèc1Ž,Ƭ'hÙlßJìô kÚjèiŒ Оm úÅ bvô€(w i[)i€ý†Ø¬¡G»òÞÂú\OGª§64Óàåø†mU`èÄaCD‚¾ª}Þ7îÓ–>ïYøÛ`± ƒ\Xìçx>w&¦Ew6Ûr +Š¯©±Ò nwh2Ï„í(í˸͎jMW]šyŠâ¾ä zn›bØ–nÓ'µ>ÑtàÇeññqÅÆmt¼ÒÿÕù¿ð8ê|îü*QöØ‹ƒ#xõL½†tü€?æ©#:”-ÎkcECc$]»††œ-é(GKü4#Œä¬__ W¹fH á5 ð –絡۰L5øŽZ2vKÓòÔÐ]ÆáDŒPeÉjˆHgé(~½${·Ñ8B=çàtçØÙÁjºŽøSEµ¯zêv} ¹œhº3ížì7Î>bö>UÇáHßShËs +ÁtFéR¸€“ 5ô!ÌÇ€…¦:x¨€YÀS&¦£ñ]‰¤Dl¦5Ût@Ó·`†â üá‡å¬]å*¨z¢|¨¦àì=ŸæÂ*­è^ßBíÙL!)ôfc¢‘£‹Kë^‡$d zXã—K6”XŽåi\͹úVع/K>oú\’œ¸ìjI Xzß-F00iQ §Å¥Ñ9¥ÃJýa›S*Ûœšá%”?ØGÅT¤)耻yáŽZÃ+5õ1£¤ÐÖuC¦`'(Ú5ÞÃÉÆ//q¥BKVE©5[©f ãܺÎ=¤VŒ•@²Çª³}A£ãª:ÄOGÝ›_1pY ¹áaL–|þÝÁÑÎÕÛMLyÔx¬Ø!e–Í’Ef)3vñŽÆÈ<²ÀœÏ¥aºÙ(2(·P2ÏbB;pûÈ-AKXù–šëˆØ¹øˆçX7Ì:ÞÈ:OŽ‰s·øµáXÉ–{•ô.ËíÚæ¸ ²£Æ„½¤M;‹¼3óº²óÂÒ83“禗®"(U¡ûhg‘Y<Ùë5‹:y Ô~à,ÆjÍ{My$Ç[>´G]žö¦!õ6EeãC‹·jEC7=MÛùˆ0ÍF#¼dÛö¿/Ÿ,”°óüxpÂò·ÃšMðdäÖ×g‚ˆ³4þ4‰-]1.”øؼuq\Álz‡Øæ–>¯¥û§sy¶žÁÛ—á ¢p]1ÄCvÃXåKdwçynˉ-#ǬøÇÒœ v#¾|µïè+A]è‡r)‹¾¨šáñ­GC*ˉ™½N„~Žª ”8Œ„ƒ Ž¶nz¦";SOÇR- îæ…3žú‡QêHæ*"sØ +žy\[á»&ª4¦Ò‚N,’`8¹í¤Ùöl¤š.ô a"‚Ì,tÞ’ÄT•OÓ›žê”8OH HR—=£g º5÷Û¢ÜÝò6-Ó` B½÷2x¤ž\ˆo.1ã ù–o_õõ7ß¾¹EuÄtvè8ìíÈ*†uüö¦^›3بÔdJ¡-ζ»Ÿp‘}rá™ t…DýYpxÊóJ2B”8"_‡vDWÐçh=ªX±GHëKüˆ ù[B~§ù˜'Ÿ(h1p¶%Ÿ2+ƒ&ðb±­k<Âvñw|2Òüd4c\·èñÅzüŽóéÅÀïÅŠ³7[‰ äøSÄzŽ±þ}Sü¼ÏóbfY6=] å9, ÅôqNDNÒ‚v×áÓð°áïÉK¥À‚¦§·Ê (E)‹9DŽAÏPD“ªa›®:Vµië'ŠEõtv|Ìøvà•J*ÆËüé³GÏ}¥cOöxs„}Iág*ø,šKenѹþ´½õj[Mü<«íÙþì÷’iþŒ"?æ*ÿÓ¯â7^˜öâµF#“·“¶õ JðÁž,X8.B#PÎà r58\y¨{¬M‡ÅpÙè¢.½"Î…Z¬8O´Oú+Ÿôƒ> 0oòÉ[äÙã”JÕ×N¹ÈažÉq§gØÉžQvÊ^ -eK@E¤g¡š—QWjß²°97è³íŒ&eçƶmÍ-³†&…P…’„ÉåÿN„•¢—U{¸º}¯R„þ°µoÝî¹^[7:΃¯çïY@@õ¬]Iïï#[v—–ÇØ"ht8Ó ; ù¸_K˜èi°€7Cœ¶õP0?l¶ØÀNe ÑôTIÃøßþñWšb“›¤ä6-œ?‚¨Œ1ŸV[ó_žš9Ò{¸ÊÆj4]ïÿ©9X„ú”SÝ¿§I˜§*›ÿ ~«Åwå©„‚î2OÞê|Sò¿u15‘x%Õ«(£/)÷v˜¥Ý«º±x£]«4ØÔÕ=ï`ðqËæñi_^]ù?,Ãä½ +endstream +endobj +5261 0 obj << +/Type /Page +/Contents 5262 0 R +/Resources 5260 0 R +/MediaBox [0 0 612 792] +/Parent 5259 0 R +>> endobj +5263 0 obj << +/D [5261 0 R /XYZ 132.768 705.06 null] +>> endobj +5260 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5270 0 obj << +/Length 2634 +/Filter /FlateDecode +>> +stream +xÚ­Ymܸ þ¾¿b"ˆØqôâפ(â’à½;4»E?l‚Â;ÖÌõØ¿doóëKŠ”Çöz²i›/#™¢(‰"’±Ú¯ÄêýÅ_¯/^¾SÑ*õÓšëÝJjíÇQ²ŠÒÐR¹ºÎW7žR~ºþtýËËwRŽxUìë4A–éÏÄ1‘ûq00´]^ÔþÝ’ Ä¥v|9#(u ¯Ö-…wÕeUž5ùz£Báýü;µ»l[”EW˜v½‘aÅžŒíæ/Þ^_|¾ D¬äèœÒOE¸Ú.n>‰Uƒ¿¬„=×½e=¬t¬'–««‹¿_ˆ‰òÄXyaâGq¸ŠÂØW:¤Ývwv–Ä^ÕnMƒýÄkf[|B™œ³ÆÐÈ}St©üõ&PÊûyGÔŒ¸Ž Lk‹º"j±–^KÝ}±V¡÷e-CÏT—@KaÁÚ-\–ĵ½ËšlÛÑ.`ÀÀò 8ÎF‚BÞò-îV‡åZSu¯áK+¯Ø•¤ôd7@/Zj«º£ñÑ!qG*öê†Fë¾1íÆÊÍ*æ”×_¹WïfCYÓdë(ô.—N@l`Äf»‡¾í¨·­«.+*æ ¶q(ª¬+ª=~ûÇߘ{PZz¾5%g«Mâ`E™úÚ®ýQ©pÂõòÖ#+¡)lËÏÙØÅ”!•Žá 1L$¤~,¢ï–`•ª‘ei{¿ÕDÍšµóépÑHÑ?hi¶©¦39ϼ&Ý"ÃáXšÎ,±³Y}°‚m¶±WµQ‘%Éì˜_ðòÂ{öüù³oi;þ´mÞ.(K ?Ö¸ØÓ%‰òòº¿-m_Ï”„£¸Kl›º¯rtbü<"þGªãIµ[cW7‡¬[¸á oj¢£g7›O¹Ÿç¹ù¨"™çÏ–n>òÓ`¸úû;ƒ¸¢Áõ:×ìÞ‘TW<–û¢£±[{:Máq¸ÁCVnŽuQ19_(/:½PtkiR +vH\ @ˆDôklíZž±&ÛmEd“8Õ|î³’ÅÕ±#8zØ),^-3,!)%ôEÛ`é  õêF»ìßk=¦¢ÏŒÉÑk\ Ò²‘æÂ1DŽÅ|5MÍ+ H#é‘ŽÃð,ì7;MÖ´à“Q{o*6¢qÐ C_žÂï’éCO @²äÀx¨¾5íD“ʯçmÍìVŠØ¤r"_¼}±äpÒƒç£E“¡y’lKÅx¯/Ì’`û©Ö#Á’E²©€f›:ï·Æáò“$^ŠqâÔÃGp’ªCäKCF¾8Œ7X%ØÅ=þd-Ñ8Ì´4§³ƒ5 ‘¹c`M9°"‡[ú Æò¬ìù³` l5*!‡žÙ¾Fh*ÄŽ\»wK7Bä‰&XªÃhÀR tŠ¥8j½F,E"ÁP°Ç톃ßRŒ" ³²²6¼»É}Ÿ…`Yàp‹½¹Eß%Ø%Àõ»pILôM @gÀ>è[ìƒvÀ>è;ìÏ™BD(_ª™éŽ³»8f³If"©«¹%K›&”q2ŽÕ¨Fköœ„žuZè*!èäÑ¥í¤Jk ¤JH•NÉ%´K÷``¼¤æÈlðe±-ºòÆœ›h΀4Wœ9VnÀÁé‚WÙóŸ2ÅÁâðÃIÄaqÉ_L-MæÒNo­Š·£IôႯuÜîG;ìþý²Ã*9sXŒøÎaU2wX Ä’kÂëw0Üv¥Y +qà'Á€#‹qI2²z1Ð@ ¶mž1fY ì$4ôîÿßÊÛ3"N°ùûxÿÔ>¦Š_C²ãRë$\˜AºM‹Ñ‹JpKÂi9ŽêµöelçTºT‰!w±¯+¬ @fW ¹t NBžL¿T(Ç_5 ±O…2t&ïk¢YØ€–Ë?99!Ž³Hê¦C-Is^Œ‰Ò–>Ú»:cÑZh(iÔ·ì\ñtÁŒ‰ `|v[nåT-SÁíp:³ð”]S˜Ù*è‘SºòœQÚÒ´ÜëÖÒãš;ö6Á¸DÇ¥y<”æ§aT” *ç+ðÑX*ïz­!ÔgEÉ•6ÝÆüvs¨ñt ¾>íø‚wâpO f ßi=7‡Æ´}Ù±±dKXÿ¸; /ùM¡Ø9´ž¦[»º,k´Ï{ÃïS·ß~4ì_-crÊV®ŠCQfÖ»)­Â§!ΙæIxì'u¸½3’Õë ·²¯QïÖ;^ɽ‹‘–¥ç^¥¬70©sd´¹h¸—ix «÷Mv`4Œ1ß›šåìªá«À¨ð}å÷_©V@bÛ5ÃäîÉøëiðáͯã >ãoà§"¶OàšÒ‡ŠÞUl2í6kí}e-Ò-s,Õ†Ž]ÀÊîAÆú°·`˜%‘,J—9}Üywçd÷$R§¦¯¶™{WaÜ-ñ¼)¶q¯‘ç ÷ì'œÑ +Ò +gÞ€ƒ+ŒÃNí- é e,øt(bµø„Ö#Ï1‘\éL%£òÁ +­iÄ=õ-¸úðF¸ür%ø §”0ö#8Ÿ©¶v¶ ’ÐÙÑ3+ø.†éÒ þÕe]9™yÈl p·oÈ0BH ·õÁ}ìlyY4„>¡Wrjf.IRw׳t‡9\¢BÑ åp‘Õ£Î0sø‚?uß´T+×;F|%oöü\þèÆÎû²;‚½w;të5´º±2¶YE‹Üò{AkJvc¤ö­õ0ûPTT44TQôªÁ‰ +²å†ŽŽv÷Äî6KçbËh¡îÊP hÐxMÚY'RFׄŸ;ð®ÎF¢{ Òáp*ª¸æewO;d–3“[.=ÞPu(*鯄ƒÁÌR)';«•è'/ÍÖk-ÉrF¦ +aÁV”ÆÙÈ…‹QôÃ)#¥R=í6Èl·YkgT‹÷ÓYÕí-6D1ÕþØÀ8:“×,Ãý郞+ïÑwÄÁŽÎE5%Ì!…ÿÓbX‹N)|–çEç”ì†ÝXÓÇŽý0ú§‡B„€]ó¤o°’Åg8Á»oÝG(à0­y4¦(‡²ö ‹3×mÝ@fkdk½6“ÒBžì›Blö°øËIʼn@)õZ4ŠêC…õlîJ!À£ÉÌæ÷Ò\"Hs ÂïçÞ´ü…S¯FSš…cßpaÿ¬(Êå·TF™Wx¯&„I®ûi,$Wn:Àˆ¯¡¦åˆ¿ùgy¹é/טÁÑ7%}ýëPT ¶S K`Á*8Æð!&•}NZOã¸ô)X +}-ñØk +芆þÀ ôh#ƒæzH¡œj)Uº«ûÒåÃ|±Ü™*zñÚ4ñcýßüKëþÚŽà¦ÀuGmC‰¬#Þç{S™ÆÕ{˜‰S{}×Sç'³¥N@¯”~%úààž ¯”§a†ˆ…i³ÖPU•ÅívZüTÿñ°7ÕüÈÿÂk4¨ +endstream +endobj +5269 0 obj << +/Type /Page +/Contents 5270 0 R +/Resources 5268 0 R +/MediaBox [0 0 612 792] +/Parent 5259 0 R +/Annots [ 5264 0 R 5265 0 R 5272 0 R 5266 0 R 5267 0 R 5273 0 R ] +>> endobj +5264 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.627 249.974 256.69 260.878] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5265 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [464.867 249.974 478.476 260.878] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 238.019 163.536 248.923] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5266 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.376 226.064 270.439 236.967] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [441.066 190.198 478.476 201.102] +/A << /S /GoTo /D (using_tools_gcc_minusW) >> +>> endobj +5273 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 178.243 164.104 189.147] +/A << /S /GoTo /D (using_tools_gcc_minusW) >> +>> endobj +5271 0 obj << +/D [5269 0 R /XYZ 132.768 705.06 null] +>> endobj +5268 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5278 0 obj << +/Length 2430 +/Filter /FlateDecode +>> +stream +xÚ¥Ymܶþ~¿b ¨ð*|)éZ´hœ8H4n}h>ØÁÕË®pZi#ií\~}‡’zYÝ~8ˆš¥†Ã™gžòÈæ°!›ïn¾¾»ùê“›4L%<îÊ å<Œe²‘©eJ7wùæmÀX˜n½ûá«W”Næ²8äiŠÌ¤¿áŒ™¶8Œ#?¡òª kŠ’PPîæýýE©›p»ÝqJ‚7ƒjrÕåÛ$øþg|–*«êj¨Š~»£"•q@¢5Þ|{wóÛ %dC'û¤aJÄ&;ݼý•lrøñ‡ 1ûúh¦ž6<‚©TXoÞÜüû†Xç-ŸÆ™œƒ­iL¨qf”„”Šqȸ@ëw¿Ô/v—ÊsW5C¹ÝIB‚]oïËzp’“±Úi_8ö‚a›‹À¸UÿXªA UÛô·³'JÈD g!¸t%!u¼cLÌ¾Ý¼Ý °çîX ƒûs‘Uïa…õüÇ*Ž8„€ààÜÁ¤ Á×LÙÁÞ*Q>OmoGLˆðÉ ;c3²þW;b«ìé­¾ÚR´ ,"ì”·àÓæ°;·"”f°3x|Ð3‹No´¿HT%Îxh/8¨«æ^håp«.µÕâÖ8U DîíP>×jç•ÖLÜî`!ü08 #©w _Xïˆ ðG; ÀN–ÆÁ`â™$AÿpÚ·5Žÿ±ÝEŒCDk+ØÛIíe8_t¤’Ø„y{Ù×v‚ê¶4 —SÑ (qJb¯¤¿¯ÎEn¢ ÆÌŒ~ÓÂÈUã5&帠Ôß×í–‰à#¾ZÅ0jÚg›@uª?ê% “8êŸfÎׂ™—µ=Ú Afp^çk&{¬.3¾8+'jñYåðu8l9‡ ùKï'PµçÁgŽÝ¬ióÛîߪÆ-^õ.ÇúbžA›ƒ‡Óˆ>Ÿß†wÁfLéˆ÷hÉ{–Y œ2OòuÑ´ó8 áÔæHæ4 ´¥Z^š¶3`¡ñËõÂ\ OùÙv½6˜GoÞƒf¥9wí …k&:<++(2$rÊtª¯lÈ}ô‡ÂR* YLçù ¶‰Á)4Ø~WÙP?l¥098 ^W¨ºúCqÏÛÂþ„ ×>ÙýrÍå´×î5°)×È¡¶N"¸²' ’±HpöK ivŽb‹¤§ôµN[NcäµA iì½ à^Eaü +Qd(â8Æ,ÖâSíÛάoóYËK4?·©ÞYWÙ‘ñý–ÎýZfÜo*Þ³¸ú´ç¢SÃê6™£Ûë¶9XFУë- &„­ù*”$!œ~J,LÑæœÙª®R†°µÄ’œš2ÏIÑÖ¯Žûì‹ Êþ ú¡èªþÞvrÑn”„ñ$?_KÓ9àü´rxë¦F‘Û<ƒ„´á &ÉÒ°…Ã,gáJ—¹ãi(9ƒ ën!›ß‡œC?I1Ä`ô¸BûþõÈð¯¾ÿñÛ·P  ×~DM›Ü(öxÿ¾`ë§3A™ä>c×:ÔБôž(YÎŒ\ž åiX1€q@+]ðÁ”×÷uÕ+zÁfÁÓQ±:¯è¥0dbÊ®+è,~0e üÀlüw à ܅çѦi™©Ìt„产…%’AP½C‡£kj/½ãnµÆ †ÔàèàY]#aÄ¢ñà&ŠÝ*]ÑW¹[ȵP耛‹âÔv¦Þ¬‚Êr5ÆÎ:s´G×hï¡‹/Ÿ‡:€#bŸ³Gå]ÆâÏ=ù ÖaNæ<þ?`¾ +r=âÏaœ%wSŒÛ~ö¤†Á½ªÆP™9ßùn¢¼4ÙØJ8©'Àc¡º1Iüokù(!!}˜LüWÀ‰ÞMØeŸ*htf+8›z×01 +ÓRèZô½„€B“]¹n¿AöO©.9ŠJhålVÍL%Ô𠤶<FXÍ „ÃÇdZ=¤É¬è{tmŠ)¥mÀWÓ~«”AÞe]µ/ì—û‡5‹àð/ñt¢SH7ê™T’§ÁË«Ã¥ë1YÜf½Ðiúeôí¾‡v»XœK<ÎàïSanÞ`ýJ­lKà‘û=ÂÉcwáÖÜ/w +i”Õ8¶lw½rÌC)ä3þa’xÄäk•€\ô®…ƒë3¼í.82e»¯ÿlôÄè §‰ãâÛÅæ/ºip»I +<°è³öµ¥×ý—Œ4¬ôcÍ-_BÓÁsP÷…+'ÆSÆ`ߌuæJÂþ.†3DŽ/uQWµNS£ã°…±jÕüYWºÚf¬N=ßH(*¿AŠû³ÊÌ01i£Eö“1¶fž­dZn{w»P¨ÐÉ(ÿøi äjPkt]¤ª&«/9FŒ0h*›BS®>Q(“- oAY‡ÃlJAðn3³Cj0ª†¾¨ËP? +^#oøE*û¥é= êô‹ö­JVŒ¶™Iõ®àL¢ðÅw¸>Q@8m šeúxá΃Æò(o;Ÿø]À•¼š£€¾ÎÍÂ'ˆš|×–; ÃÚà5¯GI ãQºäAMZѧ³œ^óZ怞œ>¯?ùkÕ‹8{Ër_Ý%ŒÊ½£,¦ð"Ó` +Ù²ôGõ~€ê8é·‘fÃEÕ-:^jMèíåc¶)·tW]›_²ñ*Õݤúu=×ês"B>·¾|ž‹M£ðº´î]Dñ¶©_\Ô–m=^º=Þ @ëÈÇæùYngYM$"”è›’øéìZë6E8bë‘ã¦>-·:y•)^)…›‘¹ý&¸P„]Ô í ¡ úc{©óé•£ ÎE§“²pâ-ƒÀ\§\/5°oÄ9˜°yBùÖ­Wõ¼‚’ÖåEþ×iú_—óë~`Öä̺©Ù­dbÇOVyk§ïŽFQê¤ÅÝ“qE/ÅWPŸYg-ÁÅÓ×X2^sìM1W[ÜXÇ–c$]˜`®û ™êÏV¯ ¡%!Ì7CÎþ÷fýöPÈ0J§½?锩<¾½c"ZV^Õ¬­œ†2’Ÿ{W9ÒêÿÃR}&üœÿ†¹!JÝÞ%Ó!BÄ¥ýwEcnÊ,ìÜÑäîxÁÁ7E†ƒ”Ü2~Kû¿!Bì¨Ô”äÊ”Ò/L=ÙÕÕÞjØÛƒÇ7íYnù÷CUI +endstream +endobj +5277 0 obj << +/Type /Page +/Contents 5278 0 R +/Resources 5276 0 R +/MediaBox [0 0 612 792] +/Parent 5259 0 R +/Annots [ 5274 0 R 5275 0 R ] +>> endobj +5274 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.403 555.654 211.466 566.558] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 388.276 236.592 399.18] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5279 0 obj << +/D [5277 0 R /XYZ 132.768 705.06 null] +>> endobj +3261 0 obj << +/D [5277 0 R /XYZ 133.768 439.091 null] +>> endobj +5280 0 obj << +/D [5277 0 R /XYZ 133.768 424.521 null] +>> endobj +3276 0 obj << +/D [5277 0 R /XYZ 459.903 391.429 null] +>> endobj +5281 0 obj << +/D [5277 0 R /XYZ 133.768 374.702 null] +>> endobj +5276 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5284 0 obj << +/Length 2211 +/Filter /FlateDecode +>> +stream +xÚÕY_Û¸ßOá—2ëøG¤Ä\ч¢Ip‡^Åí$÷À•µk¡²äHòm¶Ÿ¾3Š’mz“lúÐ>‘‡Ã™9Ù[=¬ØêÝÍ_oo¾{+ôʤFCs{¿âR¦¹.VÚ¨T¾ºÝ®Þ'B¤fýûíß½å|A+òTš9¢?Å ·<ͳ@0ŒÛºKw1FEª¸œèþr…‘™^¯7’³ä—Ѷ[ÛoסXòÃÏÔÞÛ²nê±®†õ†+£ó„9Þ¼¹½ùxà [ñ…ž<5L­ÊýÍûßÙj “?®˜ÓëÑ‘îW2RŽ ›Õ/7ÿ¼aW¤ÞV÷kxí±ñ÷ìølï Çáëá|^Ÿ:|Ï>1KÓ»xÎ :ÑÿOŸè';–»j’‡ˆSªÞ6±W¥H ÿ˜ùü@)•¤Ñ•Åm¦¶íÆ“í/¡;-M– +£ük©_Ë6æÿYÊ3qK¯k»ú:Û4O4ê‡m +û“ëqƒ…³ù,• ò"8ÕÒižìƒÿ|牭¿}$Ú¥û®úpe/+cÎû±/LÎqÖI«ü3QÉs8×ѸCA`{³T™ƒÛ%Ì8ž`Æþ)²ÓÞ?Û‘EÂù¡…!‹=÷Øà^ª(Š’÷«£<ç¡ ù)õYœÍáµ±Û‰„Ú;;T4ǵŸ¹÷íè)ˆUÝzõ¸‹¤'‚A\>GìSLj 5HÝõ6 ºžÓö[Œ‹€h2[OAŸ<裓âBŠ0 !9ƒx©¡È‹kfÅŠ°/‹HÁËœ™€`¢€Ô¢ÝW”[’Pä&ጾth>ÖC…n˨äço#R,_F¤ôO Ît=„‡nâîGAÏãFAî’÷[~ëåkpªí¹)’Y½Ü»¨%fó±Î–˜‘Ãõ+GÆeç. QoxÙÒ¥]D¸Þð2riñ8¸ˆžÐR˜à)Ž­wtcrpnEö³|Aâõ°Çÿã§D¿ì) GñLî–ó4Ÿ=Ï9ê\ð”+õ °ŠÆ:rŸ…&Ô±]¢IQ@çv„¦ èãÇSôE>Õ'ô}ÍêéÖãç;OìÑ' ¿éÿ_ÿ>¾æ𠟳gÀ7‹Œu3奰¢=îï<ðfÞœo¢ÀÃÒ»* ®ù)â>Ìüàó´ ö}òÅjG&-ŠâÖ…NнOvÉW5%ýQ••w(ž;g•šüªºXadÙ·DŒC<§0:’°H:J™ ÕÇcÕ–îùIwO_Û®Ý@Ú:V›á`ir™zãµÂ oçg× +F‹Û!§k½;¿G°g”ìŠ=W"Ê Â)©?W’”©9 [ŒôaK1É Û÷XEÁ®—± ÛÆWìü°j»ãÃûTpëKŸycË'ܬNW­R•)K¹z!®ð8Uý¾nCíé¼N á×ë¿þ=¦9ÜÞ¹®u‘B2æónØÌ—EP¬Ø¸ÜÛõ»Ã@ÖO»{àgýe€®«5,¨B fL*‚£öfëŠZÇ}Hã©Ü‚WnyåûX'©æº”÷/]Yûa^Ûã;‹ÕB ôQù…å€s@ËáÃÍ–ƒÑrð«¯᧲;¢ÃpÝEà‹TX¾9)ñ ‘+š|O|w)r6-$ ‚SîÚ:ÌIÖó$À¹~KÍlZù•Ú©†§’µiÍ{ez¿ëô˜˜ G0!êûkvø•JV(¦³ ðT]ä +ÆAÖvÞwdi!ÎìéyëÉà¼ÿ¬õdó¿-*±¸2mµ¥rÖFò|ª\IH5Ž.Ôšá_õ>’I™©/h‰`Aèn'w*ÂXÀ‚ÜgJ\À[`¥è,Ô¹]` ¾âåwc3c63Fò*dD>Gòe4ºP‡¦.ëñbmÝÎ%Ä©¨¸·gýíf +œ¾æ§Ûô§Rë(‹åŸÊ¤R{ÅßUmÕ[W~uÎÀËw»;RçoUIÌWÙk!_ó‚F‚1ß»G¿2H­s2ýìMSßywOže÷éé¡jÏUþMªen +endstream +endobj +5283 0 obj << +/Type /Page +/Contents 5284 0 R +/Resources 5282 0 R +/MediaBox [0 0 612 792] +/Parent 5259 0 R +>> endobj +5285 0 obj << +/D [5283 0 R /XYZ 132.768 705.06 null] +>> endobj +5282 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5289 0 obj << +/Length 3008 +/Filter /FlateDecode +>> +stream +xÚµZYãÆ~Ÿ_¡—0¢I6›Ç:`Ã^cÄFâ dvPdK"L‘2O~}êj^ÃIÖòÄ>ª»«ªëúZòvç·ûîî뇻/ÞÑ.uÓ>§¯”GÉ.Jµ¥þî¡Ø=:Aà¦û§‡ï¿xïû3Ú vUšÀFDô{¦Xì»q8t}Q6îek£ÄÕ¾²txc£Ô¼Û”ï9?õY]dm±?Ús>üÈßS–—UÙ—¦Û|F±ã'îx÷íÃÝ/w>lâíü™œ¾›zz—_]“ßï<’ë™H¯;© «ÝOw¾óDyÞB‰Þ\‰Ús/ÞE:v¥™ëA ‰»n÷xОç<ß‘çü)ëó 2Œ?uS›ë­á^g~Lî5'üúN~ÉÚ,ïM+KOmsåVÒîfòò£ç¦°;õóMà¼<7·¦¿]↠˜ƒŠÑÂûtÈ—° ˆeo?rj³÷µó+îß[SÖ@ÅSסë¹u4ª¿=íáEa»nz; Ã>·3þܲ¶/ó¡Ê„<áKäÀçK“!Y.g}§FçÁîñ…¿ã‚OsÎ#æühúgcMÈh47;t„µ?ï!œÑ±0ðˆŸ™_ó(Ù55ø“WMgÞØáIHVæº? ÉŠb<µâ› c×áBR"ü„ª55ÅÚBàÂÏ$XN Ã-«㬵N Æ£uBG*ˆQÃ÷\-ÌŒ Wô««Œ,mÎÃvLƒ¬HÅ…½_hPÄl‚ O”_3“C¦£Ðyò’áeYwPÇåæ~« ˆ#×óǺïqû5´rîháÜ‹}fÎ-TOÞ!=—½­§dùJFÌ;>ä€ÛÍ€eQ«ü;Žógžõ Ë©Ü—<ã>’ðC’K)Xlµ +dH¤SQàÛT´œ÷üF,âc•"#7¦bÀ‘ ãí€v‚ƒÍ€f®uâüÐô²ª¿d=Ï6Qdg™#M);äMA.Ž +mGÁ)Le‹Ÿ8gÓÙ5†—€ ½™Ï!üwÆ]‚ƒ-ó7ÒáeåG¼Dìâ¶v£8°¢‰Ñ€õM¥ŒÃsx¥™ßZ¤+x*®Ø #@iú³¹)k‘ Ñ_{ø‚aã‰'äìc Ô7³EâÛ„æÏ¡®Ÿ$ó-â€á£¤e?©V^‘1d–BgAêHb+ɧ¦,þzuÙHÃÿå¶ëMýúáPÇü˜3.Xª5?ðè‚#Ç{×,T‚õp=2$L•ÂØ"b¿©»áJVác@dü„á-“Å„IåÌÞk?F XÖ·A0!óŠ` rÚ[  ¾žͱn8Þ‡  #å²f 9û†Ÿ}ƒRHMvÛo¨ŠÚT©YˆR]egóŒv£ ]fmT{T±!æ÷:ÞÜË|Å?«z¥¬Ê³š$|'ðÇ}ŽÄdË\”Bʆº£¡b|Þ/vÃÉu‘&;»ÇF0¢¡z S@rê†:Ç‚”ÀfÓm½BlÖØÀ"K±jöæ*˳®+Ïý0y„ã êËd×£=Ø`8{¶ûBÌßL%·¶¡¢ ,¸Ðôé…AŒ‹Kª,±DƒÝ¤2d:Èó•2Ħ¹¢îyŽ¼Hñ-+¬ü ³ƒÂ »LY ­Áüî…Îßawž+ë¢Ì³ž"7‘õr,ˆ_™7ò#Öƒ +ª*”³=f9ê[½béµ ý²ÊŽÔ|‡Ð À ™ôµ!v¼ðyÜÝÞ“ò^ÿrV«ê…é$‡ÆŒq¤d!=8Pù³UЖr0売°Ï9#æ/=¶àð"0{rv|ϱï:µ})º]2€e¾^MïGÓ‹Ò–÷‡¡›N/_ÅfØM½±:{­³ÙÃ2eÙק—*7Ye¥o|¿ýÔ¤Ó¢‚ª½‹Ÿ#~€QÒ|­ajfo<×äùÐÊ.œˆf83Š7+!*AÁ¼XûxZ7?ßöŠCs:`¥VYLL¼/!1¯"Qê|À€EJÍ_Ó¶TB“¾@²Ü•§DZÉH)7Ë7 ¹dB{¤4rj2A_¸r K±'àâ&ÞòŠ¹’z°Éóâòi áP½U¦·‘Úf{îx&¤ @Îü×&ø Æ—8Tür¡äE4±YÛüÑâ.oË# ÝìÈAèä-£•=^E –—)†Fó31;4ôŠz äúô ‚†@`m‹z+…¨*¯¥è,b0_ åS•‚‘4·O$΄-&Þ²h ¥‡“ Æ)ÇÞ¦Ró@`|à‰–z°Vâ7Xxë#ø¢¹Ø¥*´·/›¯ÒÚƒ±Âá韧ªw³­X˜;‰æP þ+|‡!ÇT~ꆀçWo"èÈZ¢ya®elk±hº&h–œl°É¥ 4¦+‹4 V ܸ ÝËãƒÛƒËøÙE;‘ÖJ #ã]# @qtè<ìã”Ñ7nPoâ0Ĥ*EÝŸÛìÊo7Ùy×Yw=O +šKW—ˆ#ã%â[#Æ DäCgV OMU5T…ð»=‚I»e®¤:î¦VÉ´ü-æ]žÍ»TX@¨EcÏ1ˆ¿©ÀWj³ÃߪûÃpÿéD–,àPfc®Ös÷ÃZ/åý¾B­“u´7—¡V'6¼‡)cð3–mS_¡nêì΄Ö1:´²¢/Ï—ž›|†æ_A0‘óAƲ¢ÇPZÔ¼ù”€Ï6P2÷mikU¡Š-&’nú…§kCo8±õ [z7>àEì×›C‡FG·üÝãÂÝ(áõø"†\c¨8šŽÙ[ýˆ¶Šr¡Ôp‚´¼kÕuøB¯7žÀÁ‚®eý!èžÏ“¸Z4#8 Zü•µ“p‚“ɳl8{b÷‚èÕO¤+ßôÚÜú)C—õ„‰¨AÞÆyúÿæ_W> endobj +5286 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.864 456.101 372.628 467.005] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +5290 0 obj << +/D [5288 0 R /XYZ 132.768 705.06 null] +>> endobj +3277 0 obj << +/D [5288 0 R /XYZ 133.768 119.253 null] +>> endobj +5287 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F13 5291 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5303 0 obj << +/Length 1651 +/Filter /FlateDecode +>> +stream +xÚÝYYÛ6~÷¯Ð¨ž"y(r EP´É¶/I°mÚbK[IÎ6ýõŠº¬¥-k Ç“®Ñp8ó}sH8Ø8x=ûáföät‡›M@C2RA¤Š4 nÖÁûRDðüãÍOO^Òf1©AS%õÌIœ¨“HòV (×ûd9ç8D;Ÿ6‚8'ðó1mOç FpøÚ¤&÷ó8<–É>)SÌD +&B¢˜Õ3{y3ûcfuã€ôöHÆ"Xfï?â`  +0bZ÷•è!`D‰}q¼›ý:ÃãŽQ&ZÇiÄ`Æ8LÒÒúyS¬âtsû‹»ü€~õã›—µWø‰^Ž¸Í®?`Ìœ”'žá’62··E™›øàñ “(bªü~¾`Õ*K‹Ú®Õ.Î=F†´PÓlØJ”¡áòŸçÆøvŸ¥G+X,˜îÔÆw­NiÏG‚ÔB¸'´`ªuØ@åNø÷9!$Œó$nb“m*È8¬äÛ4o_Ï‚÷ýØÙ˜5+µ¸¨EŽE’n¶ØYÂXß\P×-Ô;OõÍ¥q0²åNÞªLRw¼Ë³ma®.æå_æ‘‘ÇA ìÒDX' ¢ðŒÀóV+78Ç!B€)%ÿuŒP›Ó„<ÅÈÍÎÀÞµ7ÇtU&YꉩàHHÙ¨oøpΑT¬‘»3ù&ËE­Nã²4kw™Ë»céÎËÌûÌ>Å׈HÖ˵ðºg}&Š¢ž{ŽÂ2þäÐ+ÄöÇ©°´XXàÅ!1ZîŽDŸx¹75Êó9Qáöx0 „ªP¹gE Û^9§!–Ã5\¸ÐÔ&¼3æ«´V2àwgâÚ”q²/| Â5uø)uäêTÉas0Râ›1“éÜQ×p'åÕH(u ÇÊ.r‡!ÒfºÚä*„•ô0Ç*ï1.“ÔÇ>ɳƒ;;OuÈu’Ô—5RªŸ˜(Us`ØæTìpä‘€Fäù&”¹TŠŒáW3f´¾M!Ì Ö¨>awiSmìeÅ™3Dh5Þ†hÝÃsáƒ3Ðä¤ Š ‹ä/sëeˆ@BËNcêÓ2˜4ÖÔ·»:×WEˆQ9mCW2ß0Â|ˆ‡jmöòÞž±Ñ¶ŠÛž™Ìþ0TÂo’OvñsP0Ôñïsq!cI)úÕŒˆp9§v°ž§€³¢4ñÚ]dwŒ‹âxHæ$„NŠ„[_NÀPïDë³q`l—¶õÙj^šÓ•’¢JÓ¤¬ï[”Ufò0­_¾­~XîâÔ[Úâ-©7Ç%ãuŠ‰œ¤E]¼*M^tõ(IWûãºí%Ë]]ÁˈÜÞþù·7]ͪTT‘¨nÝ'ûzÜZÖïÐíTp¡É]¶*3Ïf¨TFÉ%Ç +¤e xÔõJ z÷·¦<æ)lŽcívÂséñ°4¹»iÃ`}OXðtéžÜ[˜fÇýÚ=ØÅÚqánøûÆywÂ8;À.§LÚ%áôú,)DyÛÀ9n¹1Øç§`Èjºû°qaf¾!¸[%7E²6ÅWÌÆf2À†3?lð ÇçÚ +£–žøåæÊLøh#ÿùã!Ne„€*'IbgQ$:Mè,"DU»…¶¥¨ ; Zl;\ôÛþÑ¡¸í ÛÜ—ö6Ô ë Ný0%ç`ÚÿÄx6³R˜üŸõ1óï8Té(T•¬Ú–Ç~\ÉÆ’1 ³‘|T2æÿT2v uÙª‰d‘­oˆÀ´7üb=qhJ”AôD4¼ÊÏÿƒè³môÃu⺟k(5U͆ñ‚ëÞæPÃàÕHÝôÐ/L±Ê“»æÃIô.øF‹<€½ #’0Ò-`žR¢vÝw®ã‡,ögÎh÷üD÷ÿˆ¶˜òw¤ù+yJBèýQ¤¢:e9gµSBVƒäfwl¶¼r'Ü~JÙS¢ÜŸ>ÛØ„Û¤ÑØ^|ÎçL† Ø_­aù¥V™ýùekÒá–ÿ럓 +endstream +endobj +5302 0 obj << +/Type /Page +/Contents 5303 0 R +/Resources 5301 0 R +/MediaBox [0 0 612 792] +/Parent 5313 0 R +/Annots [ 5292 0 R 5293 0 R 5294 0 R 5295 0 R 5296 0 R 5297 0 R 5298 0 R 5299 0 R 5300 0 R ] +>> endobj +5292 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 636.458 212.771 647.362] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +5293 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.506 574.684 266.569 585.588] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5294 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.649 557.059 188.712 567.963] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +5295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.417 495.285 246.365 506.189] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +5296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.649 478.034 187.596 488.565] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +5297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.941 415.887 215.71 426.79] +/A << /S /GoTo /D (group__avr__stdio_gaeb1bbe21a1b9b50b207ab059a67993f) >> +>> endobj +5298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 312.578 242.57 323.482] +/A << /S /GoTo /D (group__avr__stdio_gc92e8c42a044c8f50aad5c2c69e638e0) >> +>> endobj +5299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [153.424 262.759 209.215 273.663] +/A << /S /GoTo /D (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) >> +>> endobj +5300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.824 212.94 236.592 223.843] +/A << /S /GoTo /D (group__avr__stdio_gaeb1bbe21a1b9b50b207ab059a67993f) >> +>> endobj +5304 0 obj << +/D [5302 0 R /XYZ 132.768 705.06 null] +>> endobj +5305 0 obj << +/D [5302 0 R /XYZ 133.768 667.198 null] +>> endobj +3247 0 obj << +/D [5302 0 R /XYZ 375.49 639.611 null] +>> endobj +5306 0 obj << +/D [5302 0 R /XYZ 133.768 622.884 null] +>> endobj +3275 0 obj << +/D [5302 0 R /XYZ 235.904 560.212 null] +>> endobj +5307 0 obj << +/D [5302 0 R /XYZ 133.768 543.485 null] +>> endobj +3255 0 obj << +/D [5302 0 R /XYZ 234.788 480.814 null] +>> endobj +5308 0 obj << +/D [5302 0 R /XYZ 133.768 464.46 null] +>> endobj +3256 0 obj << +/D [5302 0 R /XYZ 193.295 377.505 null] +>> endobj +5309 0 obj << +/D [5302 0 R /XYZ 133.768 360.778 null] +>> endobj +3253 0 obj << +/D [5302 0 R /XYZ 465.88 315.731 null] +>> endobj +5310 0 obj << +/D [5302 0 R /XYZ 133.768 299.004 null] +>> endobj +3254 0 obj << +/D [5302 0 R /XYZ 420.132 265.912 null] +>> endobj +5311 0 obj << +/D [5302 0 R /XYZ 133.768 249.185 null] +>> endobj +5312 0 obj << +/D [5302 0 R /XYZ 462.991 216.093 null] +>> endobj +717 0 obj << +/D [5302 0 R /XYZ 133.768 199.366 null] +>> endobj +721 0 obj << +/D [5302 0 R /XYZ 133.768 174.862 null] +>> endobj +5301 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5334 0 obj << +/Length 1413 +/Filter /FlateDecode +>> +stream +xÚÍXÛnÛ8}÷WØ ˆY^%2X,MÚ¢Eo»{A[Š¤ØÂÊ’+Émò÷;)ÇrdÇN[tó“âpfxf8<$vfvž~ŸŽž<£¾£òágzíÆPàKÇWùŠ8ÓÄùàRŠö>M_>yFȆ0£ˆ +4µR¿‰žº|-P7Iž]y»h>¤ ÎI'üÛCÚN½1#Ø}žiåÞ˜ +쮚,Ïš,­½1 .‘\ë=Ž>´nì5¤°pâÅèÃ'ì$0øÒÁˆ)é|mEã JôÄÜ™Œþápx8 Ê„ñq:ÏÀ*¥ûcš§¦¤qU©©Ë…ý~ÕYlšçægÅUÙÊ)7*óñzUÄMVv~TwZµ"µRW·æ·™[í/&o­ÁTEUr¢‘ÕŒ À ¬ÇË|U,­_Ð:ó@ùçå¸^¦q¦­Äf õˆpoš´¨µ;h b ’„(«ý"j"3uÒT«¸YU‘. ¡cÔa» ¬8SÎ’Ð÷¹Ñó‘RÑ›ã| >·Zíˆu5³1¿le´å$ó¨p¿„MOÁZ‘ƃôÛ-åæ¶ w ÜêMYŒ»8À>b3”"“õŒ›€ÂÐ9ŒÓ\ç:R±¡ñ<ªìfå*¨„’À»½9Áv`±e:@< Ý´¼)£m›ÝZ󲘙5eEcaøEãå'¦¿Ã5‚ñ¦‘η-G8Rr-†õÉ=cU”d7-´=Ç„„™MòóÐ[íAo[rfjÁc¤)î€ y‚>Aâa~0†ßp†(¢~\>Jk +«[í2öV­ +ªN¹Ø +¬»e–Ü÷ÎNÁ~'êý^ì + à–¦{|ûNà„ÕŽ $0)ùq 7ƒ±g>’¾ÿówR¶g#»a$F˜ÔÛ/PÝ$õK‰_:Zµ?/.ÏÞ\¼}¾>û{|<3©þ[‚s^š'ñà¬O+M¯¶ÎwÛÕp–•é$åê*·” p…™³Õ"-š51Ã}bF9b@§-ßh`&óðŨéZim?n˜Õ] ¯¦Q”­,‡L£F§½þšk¦‘¤×ÚÊ­ù×€*ªn=hžçÛÌH8‚»”éE‹`¢M~+Àw¯tY5›®ðÖÍvÇTH–óúfâ"‚aø—Åí=‚ù'}äa¾soq€{š¹aêNJmBº_çiÑ+þÍÚ +Cס-—98¤QשÍh·†-_ˆÀH¬7Ë8_ 8 OTÐÉ”ËÆäX) \Ö2 Q¸úô®MiòéÊæÕú&}†yÇ)Š?®)D‰8¾I€uÓ’¦nžn›e>ikQ·I˜O{åˆÁ k×ùMôÍŽφ´Î»A[l-´¾„á²Jã6eqOˆ¬ÝÐLS"°~HÂP{ÍêÒ&÷åa…m÷a õ˜0.û1¸¾&û1€~/B¹k `Ì¢ÕJ}Í’f®eü\[R¦bg0ጤP}H éàù‹8W‡¿%S}'~;™^†g¯¼€»ypbéK8î?“pòâù›áC?Žõï×»Wï÷úAÅ ÷ãý»wO/ÏÏ&OwøÁ> endobj +5314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.306 588.244 204.532 598.171] +/A << /S /GoTo /D (structdiv__t) >> +>> endobj +5315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.306 575.292 207.302 585.22] +/A << /S /GoTo /D (structldiv__t) >> +>> endobj +5316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 519.456 201.723 530.36] +/A << /S /GoTo /D (group__avr__stdlib_g1d4c7b84110553544081a69a0fc49c52) >> +>> endobj +5317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 506.505 203.935 517.409] +/A << /S /GoTo /D (group__avr__stdlib_g5816f25bd0f45787cc16bebf6a735d8a) >> +>> endobj +5318 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 493.554 206.704 504.457] +/A << /S /GoTo /D (group__avr__stdlib_g66e31b615d9ef1a19c452d64d7250112) >> +>> endobj +5319 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 480.602 210.311 491.506] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +5320 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 467.651 213.987 478.555] +/A << /S /GoTo /D (group__avr__stdlib_g4fca27496ca29c0a723d197696641eff) >> +>> endobj +5321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 454.699 218.61 465.603] +/A << /S /GoTo /D (group__avr__stdlib_ga99a0733f06d2b9960a1401c2721af1e) >> +>> endobj +5322 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 442.121 201.723 452.652] +/A << /S /GoTo /D (group__avr__stdlib_g4f6b3dd51c1f8519d5b8fce1dbf7a665) >> +>> endobj +5323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 429.773 263.989 439.7] +/A << /S /GoTo /D (group__avr__stdlib_g3bd31f0d9a9127548b734e7ca03cc6df) >> +>> endobj +5324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.009 322.748 216.119 333.652] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +5325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.537 297.841 214.542 308.745] +/A << /S /GoTo /D (group__avr__stdlib_g060c998e77fb5fc0d3168b3ce8771d42) >> +>> endobj +5326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 273.911 302.894 283.838] +/A << /S /GoTo /D (group__avr__stdlib_g815d0d26e215d9b78af1cb2288d22361) >> +>> endobj +5327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 260.959 287.621 270.887] +/A << /S /GoTo /D (group__avr__stdlib_g268774f80047812307365f3113109767) >> +>> endobj +5328 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 248.008 291.506 257.936] +/A << /S /GoTo /D (group__avr__stdlib_g125348f1e1fed1793426f4c4dc6fb2f7) >> +>> endobj +5329 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 193.148 247.94 203.076] +/A << /S /GoTo /D (group__avr__stdlib_g690f251553b39fd4f31894826141b61a) >> +>> endobj +5330 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.357 137.312 274.221 148.216] +/A << /S /GoTo /D (group__avr__stdlib_gd37588b5e19ccf152d3e4447098402e2) >> +>> endobj +5335 0 obj << +/D [5333 0 R /XYZ 132.768 705.06 null] +>> endobj +5336 0 obj << +/D [5333 0 R /XYZ 133.768 606.241 null] +>> endobj +5337 0 obj << +/D [5333 0 R /XYZ 133.768 536.816 null] +>> endobj +5338 0 obj << +/D [5333 0 R /XYZ 133.768 391.008 null] +>> endobj +5339 0 obj << +/D [5333 0 R /XYZ 133.768 211.146 null] +>> endobj +5340 0 obj << +/D [5333 0 R /XYZ 133.768 154.383 null] +>> endobj +5332 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5384 0 obj << +/Length 1415 +/Filter /FlateDecode +>> +stream +xÚåY[o£F~÷¯@ÛÖ³s&ª*e»IÔU6Ù&N«*Y!l°Š! x›ô×÷ lCœl+õ‰ËÌ9sÎw®3ƒµ™†µ³ÁûÑàÝ)55‰¤ ÑT#Œ!Ë´5S +dJ¢<íV§l|}|wJHm2£ˆY8å³~,fl°³ÅWÒÌ ƒ±Á±ŽæmÜâœT“ÚÇíÈ2‚õ3?ò74†T`}™a~j ‰%˜Ð‰-ŸÁÉhðu xcÔt$Hb¡MƒÛ/Xó`𣆓¶öW>u¡1S‰" µëÁ¯¼8a!ÊD!ãé2šdA¥¹1Pâ:¥‰8“ÚP6Í’ðŽR±A£ÝÆú7ƒb=¼rLi“ÌJµ®òY +w'Y“\ Üa+ðN +ÔçØ „è£Ñ•sqyu2º¹ºpœMz¬ ERÝòQ¶O´t›`Š¶”'È…{ŽaÍvKî!§Þ/ín$ðq^³5µÁ…yåÂw³-Â6|Ī“SßM&ó'JXV®ÄüM! Ÿ;$±1–hJÒX–#i¯"Òqþ4 à|ƒýÑ0…þ±¹Þm=‹"›ÓëÑõzc7õËEÒàoß)Wqœhá/Æ›#À ¬Íáq-DÅEMx[X\L!Ô"çˆZ¬Ÿx“xqï&ÊMê°‹ 1˜ö½½{n#í>ìKñž>¤ØDDŠ=ßd*¼À Bÿædû§+Êé2C´\¬mYýôü(^Ôó™›.GQ¾Á‚÷"öæÓ?±lÕ1ì©d¸GËzòY«YÿÛQÏôYzv®0Ìâú×´¥Â¨z…iË’”ôË:eàX¬²€Zi6GÄ*ä·j ªðu¦‘Óª‰ã ‹¤bq¨ÏUV1 ©Ö¡ßˆqh^¨T¥Y’Åá6©e„ÉÜMÚ’H_´£û,Q-ÚÛœ†&g#máž¿­¹û‘·É¿ÅÊÎ-ˆ“!*Ín˜.£4˜E¾W‹ý/€˜p‚„i¿Ƥ#Æì ŒU¶·8ëÖÞìGÕ=Ìk)6í‡hÚÞÍ~¾¹:iv²CiÅØKõ³Y<_U[ fËWTv3Vÿ¦u»ºyó÷d*uš¹Ù2}•]Æî›?íãº4ØÜZùÜ Ãx²MÇU+Z¨ _íJ~:>?¿üù‰M˜@’‹—4Ê4ñý}»½¨L™oX{9$––ôRmÌÿ¶›ô°]ä‡ÕÎà%ú/#ø;!ر¼ ý»³ÍRs Œ’Á&±cÂòâå8ô;”wï€êŽ!F ƒöÚ~êÞÖ'AJÒ±®uJÛôè Œ3Þº6Õ0”lbvó‹½%;q#¯ÓáØëlŸr¿Ü%Ãf[¯¨¾ï=ûPª,NÒM¨ªlÚ<ß"Éž§(ÙC¥TãHu¨ÎTì¦EDò‚à7CRÝMü÷ÅŽU×gHÛñqœ¢-€Gb[ŸQcßßÏ [âJÁüÀ°’uî»÷ªK²vYUáVÇÍÕ÷“ØoDGÓ1 Pa"JǵK +D È ë(<˜F~á¯âÉráGБqn5e$ʃ®¥NŒHIþƒ·I?R¿¼†Êu|®ðwƒ@œC=ƒ¹\;׿œ]3ñ&->¯|ÂB&-ø}°>ʺ.Ëu²¹[eU7*^Æå훦ëœP,ÁXÝß)‡7+@§¡;K[$Ù¼³ÉâÝNïe1ÔPUÄñÓÌs«£Ö¨Ù[¬³²Ïv€?Ÿß4¥ÿ3@W?Zo­¤ -IŸ;«ê®ÊDÒ‚lZ»«²%bUj,îѲ +‘¸Dk4_–ò'Å /QvDìâ‹b\¾M•â¤øpó#ÉÄ`–> ƒqÉaüXEåÃãÌš*ÿ(ÄË +endstream +endobj +5383 0 obj << +/Type /Page +/Contents 5384 0 R +/Resources 5382 0 R +/MediaBox [0 0 612 792] +/Parent 5313 0 R +/Annots [ 5331 0 R 5353 0 R 5354 0 R 5355 0 R 5356 0 R 5357 0 R 5358 0 R 5359 0 R 5360 0 R 5361 0 R 5362 0 R 5363 0 R 5364 0 R 5365 0 R 5366 0 R 5367 0 R 5368 0 R 5369 0 R 5370 0 R 5371 0 R 5372 0 R 5373 0 R 5374 0 R 5375 0 R 5376 0 R 5377 0 R 5378 0 R 5379 0 R 5380 0 R ] +>> endobj +5331 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 631.791 200.149 642.321] +/A << /S /GoTo /D (group__avr__stdlib_g63e28bec3592384b44606f011634c5a8) >> +>> endobj +5353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 618.839 185.962 629.37] +/A << /S /GoTo /D (group__avr__stdlib_gdb8c83badc195efc1229799391fececc) >> +>> endobj +5354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 605.514 195.925 616.418] +/A << /S /GoTo /D (group__avr__stdlib_ge017047d6d0a688ccb622ff062dcd230) >> +>> endobj +5355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.699 592.563 218.117 603.467] +/A << /S /GoTo /D (group__avr__stdlib_g885c1ccefb716ff16ab73a57003140be) >> +>> endobj +5356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 568.03 179.905 578.56] +/A << /S /GoTo /D (structdiv__t) >> +>> endobj +5357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.403 568.03 194.879 578.56] +/A << /S /GoTo /D (group__avr__stdlib_g7486ea9a8a90ac6b93bed37d08ebbd9e) >> +>> endobj +5358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 554.705 182.675 565.609] +/A << /S /GoTo /D (structldiv__t) >> +>> endobj +5359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.173 554.705 200.418 565.609] +/A << /S /GoTo /D (group__avr__stdlib_g5b688b463f9faaa82f31ac7587e06849) >> +>> endobj +5360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.92 541.754 200.838 552.657] +/A << /S /GoTo /D (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) >> +>> endobj +5361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.604 541.754 461.468 552.657] +/A << /S /GoTo /D (group__avr__stdlib_gd37588b5e19ccf152d3e4447098402e2) >> +>> endobj +5362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 516.847 200.358 527.751] +/A << /S /GoTo /D (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) >> +>> endobj +5363 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.348 503.896 243.805 514.799] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +5364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 490.944 194.819 501.848] +/A << /S /GoTo /D (group__avr__stdlib_g764de49bd918caf24ce1caf3a10b3823) >> +>> endobj +5365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 478.366 187.626 488.897] +/A << /S /GoTo /D (group__avr__stdlib_g3a1fe00c1327bbabc76688a7a1d73370) >> +>> endobj +5366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 465.415 194.471 475.945] +/A << /S /GoTo /D (group__avr__stdlib_g137096a48cc0c731052cadfb69c39b34) >> +>> endobj +5367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 452.463 214.266 462.994] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 439.138 195.158 450.042] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +5369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 426.561 210.939 437.091] +/A << /S /GoTo /D (group__avr__stdlib_g51ac965dacbc9daf922f469bdcfe00c2) >> +>> endobj +5370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 413.235 214.256 424.139] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +5371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 400.284 211.975 411.188] +/A << /S /GoTo /D (group__avr__stdlib_g5ee4d110a3bb55d2eadda05e3ebedf8a) >> +>> endobj +5372 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 387.333 204.772 398.237] +/A << /S /GoTo /D (group__avr__stdlib_g689c9d3c4c04463aa31d329937789d06) >> +>> endobj +5373 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 374.755 190.386 385.285] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +5374 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 361.43 201.255 372.334] +/A << /S /GoTo /D (group__avr__stdlib_gcceff9dc95bb3c5562dc9e61fc3d9075) >> +>> endobj +5375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 348.478 198.685 359.382] +/A << /S /GoTo /D (group__avr__stdlib_gf5085001be836a0f2a5d3269a7c9fd04) >> +>> endobj +5376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 293.619 255.511 304.523] +/A << /S /GoTo /D (group__avr__stdlib_gffadd67736fd340e893fb22c207de597) >> +>> endobj +5377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 280.667 269.787 291.571] +/A << /S /GoTo /D (group__avr__stdlib_g9310042b3956282440c091d20cb98c5f) >> +>> endobj +5378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 267.716 267.018 278.62] +/A << /S /GoTo /D (group__avr__stdlib_g4d7b1bf0f75d529cc75229a266132115) >> +>> endobj +5379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.828 193.548 334.573 204.452] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +5380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.828 143.729 334.573 154.633] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +5385 0 obj << +/D [5383 0 R /XYZ 132.768 705.06 null] +>> endobj +5386 0 obj << +/D [5383 0 R /XYZ 133.768 650.391 null] +>> endobj +5387 0 obj << +/D [5383 0 R /XYZ 133.768 312.593 null] +>> endobj +725 0 obj << +/D [5383 0 R /XYZ 133.768 254.142 null] +>> endobj +5348 0 obj << +/D [5383 0 R /XYZ 133.768 231.83 null] +>> endobj +5388 0 obj << +/D [5383 0 R /XYZ 133.768 231.83 null] +>> endobj +5349 0 obj << +/D [5383 0 R /XYZ 339.156 196.701 null] +>> endobj +5389 0 obj << +/D [5383 0 R /XYZ 133.768 179.974 null] +>> endobj +5350 0 obj << +/D [5383 0 R /XYZ 339.156 146.882 null] +>> endobj +5382 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5413 0 obj << +/Length 1384 +/Filter /FlateDecode +>> +stream +xÚÍWÙŽÛ6}÷Wè‹Ô ­Ó¢À$O K'nQ`²LÛ dÉ¡¤&Ó¯ïåæ‘yy:£±—¡,†¿ùÚ#Œ¡$N½8‹Pœo¾òn}JÁÁÇùë§3BzÂŒ"–d IKýl$ꔄ¦]•b„ØGÛ1m…!q¿œÓvLÁþ5¯¸ÌË`J#ìw­(E+xLI±È'i¬ôL®æ“Ï¥{¤#AŽ¼b7¹ýˆ½,¾ö0bYê}Ñ¢;… JÔÆÒû0ùu‚Ï%ˆ²¨”ÀŒ±ÿÊÿ‰1­¸q÷Å< ©ÿîÃüfñÛû÷W7Ï/?\™ü‡Ü3‚=ˆ Å44ꟉֈÿÐÈÏËÎêm·¹](òÊ<,íÒ>o¾2Ï¢2&ëÇA +YìP^—ù¦ñdxôm­Q6ðÊÅùæzâÝjK«¶nZ ±G~Ä +(a;9ë)‰"”’È›‚)’ŽzsùöÅâÍåÄd6›‡ñ¥Ølyc«ºÝ’˳8n4íZåòîad^­¾'z<vt:ìwoŽŸýŸ‚¯wÿ:|—Dó ý»=_ñµM£ºèv¼jóVÔšÒj? ƒbÑ߈ÕÐöw‹ªU®Ù‚ö¼ÈbD³Çp6Z“„:™Å¢¨wû\.ÖÕBi%JsQWÍ!O¡bÕb5bŒÅ 9c-DYz°ö£=žGé€?Rß“1‡uÄŸ)M1xiô\Ç-uÚ•uWíáM!n¿×òa¶|njÙž"‹ ùSç"Vê +ª³‘Ï+Á«‚?šY®šÌ>?’VáVôõö| q˜G[<êQVηü4JŒ0£ýJ @{ø+ñ"ïÕÍÖª–;Õ2•Ü^Ö™ïÌRËåNTùý>(ìZª.ŠNQÙ: ³ üY‘Ëûœgá÷ðžÕI¼a½G|zÔû¤*®JÆPšªºw"}E‚—=ô »‘˜ÃP¢ñ4 ê¦òha•++T›3îAbôÁ )„‡ãÈÔÍfIïÖ ÚãT…xÊ0ŒA!ÖcÉ÷’7®£CÉî5ÌWöÔ…¥[kuºsWó´M=Ó–¥ +³í}¾AÎ'Ƙ˜¡(™ v!œ%î&+ÛZô*Ph1¶ü³¤ó2ŒR5"ÁmÒñä‰Y@к÷]±>çŸÎŒÞX3H}ö=÷UwO!–öï©i†Xl]¸Îó®žÎ·„xaBóGðe$5ocû¤ÛœÈr ¿ XâOáÚ_î +v¸úz׈ãÿ!( +endstream +endobj +5412 0 obj << +/Type /Page +/Contents 5413 0 R +/Resources 5411 0 R +/MediaBox [0 0 612 792] +/Parent 5313 0 R +/Annots [ 5381 0 R 5402 0 R 5403 0 R 5404 0 R 5405 0 R 5406 0 R 5407 0 R 5408 0 R 5409 0 R ] +>> endobj +5381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.828 636.458 334.573 647.362] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +5402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.499 586.639 324.83 597.543] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +5403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [298.499 536.82 337.562 547.724] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +5404 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.188 462.652 284.741 473.556] +/A << /S /GoTo /D (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) >> +>> endobj +5405 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.379 388.484 180.48 399.387] +/A << /S /GoTo /D (group__avr__stdlib_g63e28bec3592384b44606f011634c5a8) >> +>> endobj +5406 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 314.754 172.662 325.658] +/A << /S /GoTo /D (group__avr__stdlib_gdb8c83badc195efc1229799391fececc) >> +>> endobj +5407 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 273.045 190.376 302.111] +/A << /S /GoTo /D (group__avr__stdlib_gdb8c83badc195efc1229799391fececc) >> +>> endobj +5408 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.75 273.045 232.428 302.111] +/A << /S /GoTo /D (group__avr__stdlib_ge017047d6d0a688ccb622ff062dcd230) >> +>> endobj +5409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.464 215.256 174.583 226.16] +/A << /S /GoTo /D (group__avr__stdlib_g689c9d3c4c04463aa31d329937789d06) >> +>> endobj +5414 0 obj << +/D [5412 0 R /XYZ 132.768 705.06 null] +>> endobj +5415 0 obj << +/D [5412 0 R /XYZ 133.768 667.198 null] +>> endobj +5351 0 obj << +/D [5412 0 R /XYZ 339.156 639.611 null] +>> endobj +5416 0 obj << +/D [5412 0 R /XYZ 133.768 622.884 null] +>> endobj +5346 0 obj << +/D [5412 0 R /XYZ 329.413 589.792 null] +>> endobj +5417 0 obj << +/D [5412 0 R /XYZ 133.768 573.065 null] +>> endobj +729 0 obj << +/D [5412 0 R /XYZ 133.768 523.246 null] +>> endobj +5352 0 obj << +/D [5412 0 R /XYZ 133.768 499.031 null] +>> endobj +5418 0 obj << +/D [5412 0 R /XYZ 133.768 499.031 null] +>> endobj +733 0 obj << +/D [5412 0 R /XYZ 133.768 449.078 null] +>> endobj +3967 0 obj << +/D [5412 0 R /XYZ 133.768 426.766 null] +>> endobj +5419 0 obj << +/D [5412 0 R /XYZ 133.768 426.766 null] +>> endobj +5390 0 obj << +/D [5412 0 R /XYZ 474.451 367.726 null] +>> endobj +5420 0 obj << +/D [5412 0 R /XYZ 133.768 350.999 null] +>> endobj +5397 0 obj << +/D [5412 0 R /XYZ 133.768 266.071 null] +>> endobj +5421 0 obj << +/D [5412 0 R /XYZ 133.768 251.501 null] +>> endobj +5396 0 obj << +/D [5412 0 R /XYZ 133.768 152.543 null] +>> endobj +5411 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F55 3943 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5430 0 obj << +/Length 2147 +/Filter /FlateDecode +>> +stream +xÚíYKoä6¾÷¯Ð±;p3|Kœ,ØÍc0A`ç4 µšv+–%¤Çùõ[dQ”Ô–ÝãÉa±'Rd±X¬ÇWEŠ&7 MÞ®þ}¹úü®CŒ†æò:aBTg‰6ŠhÃ’Ë}ò~Í9atóËå·ŸÃØ„Xp"Rœ<Õ?bÆ.%©Œ]¿¯ÊÝFÒ59,qcDJ6ÿó·7›­`týÖֶ͖ͫ+º>öeUö¥í6[–*¡Ö,KŸÕ×—«+Ç›&lrFF UIq·zÿ Mö0ùmB‰0YòàIï!”¹…Uòãê?+z^q*%\¨‰âˆ$ä¡”®ËºGAó¾)±÷3U´hê.L‡¼ º‘SîÜ4ÃÙ¦T •R3ýÈ”Gm/(P,U#Å Ðl™d„ hS¢¹DÚ/›ÚÙíㆩµm‡C`ÓõmYß`¿oÂT-غ57¶Ý(µ&n?ØÆûò`½Ð8íM°ÒoWÉû-7Ê+Ë©iâÌÑäúX}Ù¸]\si»§éa?]Öà#Þe`ô¾iÇ…Íõ i<›§t§Ùã„?( îQ…BLTÈ&ʘSKLµœâ¯#39Ó–SÔVPEu£*Ä­½omgë>wrŒ‚wAßpò¾Íg¾S] ­—6%&¥Ì‰"Á³x 5:ºaœ¶A}S¹îb³Õ4xlpÓÜšH°ä–Aܯÿì3?eˆÒ2™Œ;vßÿôÝw£nà‹Ed T +2¥DeiPÒ¡ìÜaõÄØ”µol¯›> ÙÞ=6N¡Á\Ø4®ÖHçê©ù˜2DŠH¶mëfAJx:R¡pjB»H®oœ»¸¼Þã´÷,76Äæãp±¦½ œ•ÅÞ‡cYÜVBûn Ð!E0s‚†* aÕ °^½ +…¯Ëþ&8„´d±Oü"0ªOF¡Qmhͧ¨èæ'¢é*ºQtHMGTt…fg¤Ã ‘2 ¢§h°]DEfÔ¨—PÑA†š¢¢c敆p° õ<¦Šôšý;ðñ (¦ÿ>ƒ.b¢úc˜h(Éôÿ!ñu€Äžm¹_À<­ˆ4ò)äÍØ»²"V‰»Î‚C² ôZ4j +®Ê6Ë2¨ÅÕ|mvuu»tm¤âDÕ˜%Ó|]@9ÎÖ5tP$õ’Hà\Ê׉´Ë;»$OF8—3y@„òw{Õ/ðIGÅ_]m 0œ`'®^µ[Ê4@+õdGÆ~~G¸J¨É1áÒ1$\_N™bÙF¾&™>ã@À2cÓ”x’_2è«×𿈠ü)ì)á)ûöüiFŸiW‘Œf£r‹æî~(2漨/ºÏ”<…¸äêWIS Íâð\òv$#¤»/¤w@&iæ¯Wn4oÛü»¤`;Ó„êèISï|’‡v±b0„Y4Õ$˜é\&W)'5çëë¦E¾96ƒ¼~ËCއѼGâ°Åžÿµ²ng$ãfŽ·§"ƒ«­J”ËCÈ >Ú}Ï_G¡µyqˆIk7$°a¶oðååñîmwgÊmÈ[Ë÷U¦ ci¬ÌF¸y^Ñ$]ÁY4{êþ[.´/· ëðË ,‚KqÝ×u‡æXí±¿ «ËÛ¼+l½ÇšÚ‘BmêšvïÕᨊ¾"•¯¼ÇÍœ,>Î9]oc±=­#;_=ñé[‚à®(¹¶­­ ïü™ ?ÞW£g2 4Àž±ÀÃ+,€Å©M †ÔÙyŽ +ˆHÖ6Ǿ¬-Jêã NàËãßÀúá Þ‘aæ;u`%f°® ¶·3=aEqs¼C» +€ˆ!Æ¡ëã»~™†¸‚[ÇÚ óˆ1ÐäP ÆeÚCœoÑG§àüp‡()õâ×`D;–ÞF +Çvjì¡~Þ&÷ÇÖ1 +ÏVnÌ‚9Y%Þ+Ü\e»{°]íùƒn?ý• ÖôSk=0pÓÚ¼V»58ü»m+¯ÃJ¯!˜kf¢†0¤Üöº9Öû‹áæã½/]éŒFÅ:ôb~ݸÀññ@S"a¬iç ãÁx<Øs8LöŸþ̹<ÉM6{ú3ÁšþÅσ¿Coq ßÚ Î…žø̯0ƒofx ̱PŸ‚1TËÈ©>VÕ’…âîB§hrhë[¿}˜ê°õhÐP“¾óä:†%®ñBj‹yô^é¤4cpê1i‡Ýââ~žCŽõ$‹¼t§‘ó;Mú‰wšs%ã지\SŒ·¶gkh¥¡:OÇ2¯¶Õb BæËþÒÂüÙÊ‘)Â26óù—;D×Òû‰†Íc•69§ ÃÆ{zeœ¦l¹D”†¤£žKýs®PŽ€ƒÂ=|ýnìËÂc eÞÐ:+•øj³ۧɓJBMÔê·ðbÄŸH7‚ŒG©Ž]Øñ4‘J¢ÌS­ÍüâÙÀ­àä27ú㉼@bÎkLÒX,åÝ€Œcò àŠÙ¹°÷ý)ŠOØ?}®x(«jÉE89î2 ™)pñ7˜û­xÍO°áç8E*²éϯÌ¡ƒöðÇ\”¿ YâòpÄÎW6„±Ä†Ñ7\¼a~qJCïÚ¥³!å>·µ(ý¶U¹+bQ‹,›ßol}zäÿÏd@… +endstream +endobj +5429 0 obj << +/Type /Page +/Contents 5430 0 R +/Resources 5428 0 R +/MediaBox [0 0 612 792] +/Parent 5313 0 R +/Annots [ 5410 0 R 5422 0 R 5423 0 R 5424 0 R 5425 0 R ] +>> endobj +5410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.198 618.834 174.769 629.737] +/A << /S /GoTo /D (group__avr__stdlib_g3a1fe00c1327bbabc76688a7a1d73370) >> +>> endobj +5422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.851 474.796 175.423 485.7] +/A << /S /GoTo /D (group__avr__stdlib_g764de49bd918caf24ce1caf3a10b3823) >> +>> endobj +5423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.32 336.429 191.374 347.332] +/A << /S /GoTo /D (group__avr__stdlib_g885c1ccefb716ff16ab73a57003140be) >> +>> endobj +5424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.238 229.449 190.291 240.353] +/A << /S /GoTo /D (group__avr__stdlib_g885c1ccefb716ff16ab73a57003140be) >> +>> endobj +5425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.161 155.719 426.974 166.623] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5431 0 obj << +/D [5429 0 R /XYZ 132.768 705.06 null] +>> endobj +5432 0 obj << +/D [5429 0 R /XYZ 133.768 667.198 null] +>> endobj +5395 0 obj << +/D [5429 0 R /XYZ 457.9 545.393 null] +>> endobj +5433 0 obj << +/D [5429 0 R /XYZ 133.768 528.666 null] +>> endobj +5392 0 obj << +/D [5429 0 R /XYZ 457.9 401.356 null] +>> endobj +5434 0 obj << +/D [5429 0 R /XYZ 133.768 384.629 null] +>> endobj +3241 0 obj << +/D [5429 0 R /XYZ 230.106 208.692 null] +>> endobj +5435 0 obj << +/D [5429 0 R /XYZ 133.768 191.964 null] +>> endobj +5393 0 obj << +/D [5429 0 R /XYZ 435.614 146.917 null] +>> endobj +5428 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5443 0 obj << +/Length 2609 +/Filter /FlateDecode +>> +stream +xÚÍY[Û¸~Ÿ_aä%2°Vx©´(M²A‹6ÍÌ¢(²Á@¶h +Yrt™$ýõ=‡¤®–g2èCû$Š<:<<÷"«ÃŠ¬Þ]ý|sõâ­â0Žàq³_QÎCéUË0Šéê&]} + )Y¾ùõÅ/”Žˆ9 ¹Š“¥ú³£˜°S¡=Aݤy¶] „wKÜh(íˆÿò·—ë §$xg +S%ùzÃ$ Ú&˳&3õzC•ä2 Z#Ÿ«·7W_®7YÑÑi¹Ú¯>}&«]‘ÇzõÕ’W\)ÅóÕõÕ߯È㊓*d\ŽŠPƒ<„ ÍÖ òýmãÄõ¯îå"IV4îØRŽY +ª»ƒßÞíqA;L‡*fÕOë„—92J SS”K,¹ +#Þo RODFD³Pp gÂßÜ«y§òêàuÿñÝÕê.ÆÃ3Üã±;ƽz-‰öm±k²²XÛvåñÔ6h[\k€¿¾G6IÞ'çcÍIJu½½u| +…±ê½/)Rǽ2M[ó=¿´%x¨ÖNˆ7ÈyµaT†’¢FÀäw†c’©©ÐÚ ì‚O$îµnªv;7[$G“^PßüˆT‡šŠNð4CïërvNˆYAxGÞÜ%“`W X;š¯è™e'kãf渦ÁÖTõLÌ3µÓ0Òý&¨­³(LŽ5~ÎiÃYr šh²2Kï‹y¿i¸àÎO\CÏb4ö1º»K*ŸÄèÛ(‚|8Dá ü5pí](mJ°êü†1àiÙns³‘‘‹†ˆ¼‡”¶â +Ú⑾(0¤S=¸þ ñdۉķ·õž”‡zÈ~϶¨³CaRw²A‚ sÅC¸Ÿ*³[:d(:ÛÀ‡g$$pŽ‰t›cÞ¼°9¸ PjØ–ˆ&Ëqš@”u)NþPŠãÞÌåÇ&)Žcby¼_S˜ª©Ý¬O;,ðÞc'‡´g—NI][sÀä–óHb\ƒä½5ÿ"Óº@DokˆûÒqL +·Ë«ë×ïß»©Êœ†t'c0a<³äÇÄEºË40úšåX®£2‰›©›²²æ„qksäBNùõà«õR +‡ ®‡øßðHZY¾»$Ïmò…qV»geêS žl•Šû²r’ªmpŸ¥YqðB¶{T9øÛÙÜoNT÷³£Ãy’ƒqþ¹h ˜ˆ'Æn&T(4›ÖÙ×—©¾•rg„gZ(ˆÒ®äÀŒu'ÀiI³¨kh8d’Ï>m>§aš¦æˆç4}¶ ®†d>xÎ×;S™~·n؉„"ÒÀO¦Ù!kÜpk@"ã] +Â> MôêA©ÙeÇ$ßœÊÌaaÓ@²kÐÄøêk²¾â¿íV˽烛×þ‹½ÿÈóÌü’ùÒb‡iÙ•3¶˜Ô2«ös=/~äÄå¿IÐñ0¦½cÿɵµHÈbâƒaûju Ï›ª„”É¡pX®cÚ)*u§œé¿KN'“T5D‰à$x¿_ÊÐ_În’ÓQ¦'U‚îéxC‚Z²¡D?ìCṹȘOJˆeé2žeëк$Û•ÞÑ• ‰š58`µªLÛÙE,8Fù7ÈY0ÁéÈ'¸ÙÎDú l'—|¯Õ¨ÍCÆ}›/.Àÿ˜ÖÎÿ†­£q½ÁùÌspþ‡'! ±Šùo&—´¾{®çˆA é øŒg—Be–!óH«¿Qe^ôçIŸü€7“¡qÞL½2pÙ±ã¾úm­Dð5e$xŠ”Á?¯o¯ß¿û«ûÆ:2œ#3ÔŸcRŸkZ5£°„W_fë N9Ц>ÿC¢Ï<¥tZíž›ÄW-x9•uæ‹0¼¹úÖO[f ‡›u)²{{ŽêÌ¢J¡s’üT‘™Jï<‹OTúá·ß{*æU4^…*¶*„‰SÞÖŽ{A7ç•£­gí Gàò 莔{¯OTä¬v'N‰|ƒÙ™ÈÕs¯oHÔfª³iíÀà ¢5Yß â[G'·i¾“ïÌfMe×7ÃÆè%Ky?‚Œ.kNÔƒH‹A<+É<ÔS¨EÉÃXK|Tô°z&ñlaΊÄ#@+C¨Z’‹uDâ"êˆC`Ü×,mî–.V0ÛÍù ê #!†:˜ÄA±PÜ&¾|p‹ª¡ùôELaáwüŠ„¶T±§ ÈK( P0ü)(‹ÑÎöQŒPcK(‹Qßd ¿eÁxŒ²àµGY0¾ˆ²˜~eQÎf( 8Z”ÏeÁpŽ²åP–ÇWZuiPû3=¾‚ñe|¥BªøSð•]ºöC;|-§ÍBÚC,Øn +±t±`e±PÎ ‹‡TÒÿÄ’—!‡Rdá+±ìŒ_q¾¤ô j¹dì b-u=`÷Q>ÅG±ïûp¯cVdÇöèöCÕ™˜~v†Ž3F¡ÿº»¶3ae'¬º¸ì¾Yº¿¨ÚSãc=©|4òrëUcÿÞÖ T§4œxàâŸæX‡OøÏÜý_ÆŸ’Ð6þ/khÈ#/£û÷Ýg•.QÝܵnðÊŠ÷ ä%ã/©voÐø‘5J—ak˜j Ѱɳ­ç°õ‡~S~û~0ÅüÈÿ#"", +endstream +endobj +5442 0 obj << +/Type /Page +/Contents 5443 0 R +/Resources 5441 0 R +/MediaBox [0 0 612 792] +/Parent 5313 0 R +/Annots [ 5426 0 R 5427 0 R 5436 0 R 5437 0 R 5438 0 R 5439 0 R 5440 0 R ] +>> endobj +5426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.437 636.458 172.548 647.362] +/A << /S /GoTo /D (group__avr__stdlib_g7486ea9a8a90ac6b93bed37d08ebbd9e) >> +>> endobj +5427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.586 625.125 283.466 635.407] +/A << /S /GoTo /D (structdiv__t) >> +>> endobj +5436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.379 550.773 187.124 561.677] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +5437 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 372.679 186.5 383.583] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +5438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.464 310.905 186.103 321.809] +/A << /S /GoTo /D (group__avr__stdlib_g060c998e77fb5fc0d3168b3ce8771d42) >> +>> endobj +5439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 215.881 185.394 226.785] +/A << /S /GoTo /D (group__avr__stdlib_g060c998e77fb5fc0d3168b3ce8771d42) >> +>> endobj +5440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.842 166.062 175.264 176.965] +/A << /S /GoTo /D (group__avr__stdlib_g137096a48cc0c731052cadfb69c39b34) >> +>> endobj +5444 0 obj << +/D [5442 0 R /XYZ 132.768 705.06 null] +>> endobj +5445 0 obj << +/D [5442 0 R /XYZ 133.768 667.198 null] +>> endobj +2820 0 obj << +/D [5442 0 R /XYZ 157.28 615.701 null] +>> endobj +5446 0 obj << +/D [5442 0 R /XYZ 133.768 600.976 null] +>> endobj +5347 0 obj << +/D [5442 0 R /XYZ 402.1 375.832 null] +>> endobj +5447 0 obj << +/D [5442 0 R /XYZ 133.768 359.105 null] +>> endobj +2625 0 obj << +/D [5442 0 R /XYZ 400.994 219.034 null] +>> endobj +5448 0 obj << +/D [5442 0 R /XYZ 133.768 202.307 null] +>> endobj +5441 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5459 0 obj << +/Length 2120 +/Filter /FlateDecode +>> +stream +xÚ­YÛŽÜ6}Ÿ¯Ð›ÕpšoºÁ»Þµ1A › öÁ j5»›XµÔÖÅãÉקÈ"uõŒ½›—‘DV“ŪS§ª8Qp ¢àÃÍ?înÞ¼gq‘,†ÇÝ! œ“$Nƒ8“$Îhp·>†Œm~¿ûáÍ{J'Âœžd°’•ú%fË%$ƒ@ÛíK½Ûˆ($§µÕ(‚z´´ÚÛÍ–Ó(ü *ÕäåfËdö.u§U»ÙÒDrÒ43ëÜüëîæÓY; +è䌔d‘ ŠóÍÇߣ`“?áYì·‰2¢jZs~ÁCMX_r +îR(:Èà§"ó¢òâ„o;ÝáË¥ì[|s¿æ£8z^cŠ:M5`¬‚n#eèj‚_Û¡Þt$]æ¶H8ܹx^È6êS¯‡JñûÙÓ|ŒAaJÜ…#­4˜ñù8u1AC}bðŸM 4Ý°V ÷W…l6ZàöàÒÒI]WÌW7]]OÎåê `kÝþwvúµ¥1ŒÕföÁœ¸à2\o¸(ĬeØÖ–S"B½DDýu¾éÑwf°Ã*y…Pèç§ÕÀÔPÐù¤#÷ç-.¾Ë[C‚CÌ´Á¢Ùçœ?ºi…9~VýygNS݃RÎ3wP™’,Mæ<>R`ŒR<9¹ ¬8†ì¹G¡þ‚OËðä1 9–ñ•ê*óI6~Æ’%ÓúÖ,}lTŽ +@ +Þа™€Î|ØlåúAüÚë£ Z£ø¡[%{€w +õá‚X_e¯®•ß«÷´ð\ªn}·F‡ÂåU¾¶ €1 VPHÀ©©Ô§Åš£ 5ø¨¡‘/ ]Ëé*«¹Z븙Nôùw³ˆ +é[OÇêZ/ %”Iƒjµ®¼^I•ž«$mKUMzšFAƒUµ ³_jSPº ¿ämë{û¼]ÃdÆ¡?/Ucójæ 9BIG£k”pTY{r/ó];¶@vüiÿ@iLÒhÒèµ~„‘„³{yè~$ßÒË;-¿ÞE}¾ôZzÖ¨KŸá¯wŸõ2Œ&š6+µ íÜH“úÿ«AY.)V¡ò©BÙWšô‹š8ýK\â¼7³ÔªÍ}V;7ý±(Ö!í’¡ˆ—ˆ–Ñ{mn¬>ß»ÖÓ¿ŒmÛ‹Û²Ö|SaÓE·}eIe|²â^UõÚšB€¿xûÅ ø úúʤ=¿áÏ«.ÊâiÔdr5ð…qBcœ¬eQx2îÍô¨³ˆI2^c€]FÚÌb¿¥ ?õuçºAørÂ1û[/°Hl?)ι¶M.ø››¦ž3ñÞÕÝ€‰°ÊÏ꺟܂¥$‡ V5{&9$ï'®?ÌÕpî åÁƒ½^Å)Ï4byOÂÍ#”OíBí'ƒ¹›–‹vÄq­dˆ ”_SG¬¸5ž~:]Q0˜dõV>ƒâßr'ïÿ‰aÚržNïâS`\Oø‚Î'VŸîN®ÿ§*ðEø:ä-ãoiŠ_,ŠÜ›-ÐýuinC§Ùð$Ü–zçVØ=º%ë/GU-ü'°Hþ +endstream +endobj +5458 0 obj << +/Type /Page +/Contents 5459 0 R +/Resources 5457 0 R +/MediaBox [0 0 612 792] +/Parent 5465 0 R +/Annots [ 5449 0 R 5450 0 R 5451 0 R 5452 0 R 5453 0 R 5454 0 R 5455 0 R 5456 0 R ] +>> endobj +5449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.93 604.263 175.039 615.167] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +5450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.228 524.865 210.799 535.769] +/A << /S /GoTo /D (group__avr__stdlib_g4f6b3dd51c1f8519d5b8fce1dbf7a665) >> +>> endobj +5451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 291.04 174.326 301.943] +/A << /S /GoTo /D (group__avr__stdlib_g4f6b3dd51c1f8519d5b8fce1dbf7a665) >> +>> endobj +5452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 241.22 175.432 252.124] +/A << /S /GoTo /D (group__avr__stdlib_ge017047d6d0a688ccb622ff062dcd230) >> +>> endobj +5453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 199.512 190.376 228.577] +/A << /S /GoTo /D (group__avr__stdlib_gdb8c83badc195efc1229799391fececc) >> +>> endobj +5454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.75 199.512 232.428 228.577] +/A << /S /GoTo /D (group__avr__stdlib_ge017047d6d0a688ccb622ff062dcd230) >> +>> endobj +5455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.206 141.722 175.087 152.626] +/A << /S /GoTo /D (group__avr__stdlib_g5b688b463f9faaa82f31ac7587e06849) >> +>> endobj +5456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.637 129.767 289.495 140.671] +/A << /S /GoTo /D (structldiv__t) >> +>> endobj +5460 0 obj << +/D [5458 0 R /XYZ 132.768 705.06 null] +>> endobj +2577 0 obj << +/D [5458 0 R /XYZ 437.895 657.235 null] +>> endobj +5461 0 obj << +/D [5458 0 R /XYZ 133.768 640.508 null] +>> endobj +5345 0 obj << +/D [5458 0 R /XYZ 383.091 595.461 null] +>> endobj +5462 0 obj << +/D [5458 0 R /XYZ 133.768 579.357 null] +>> endobj +5391 0 obj << +/D [5458 0 R /XYZ 338.449 294.193 null] +>> endobj +5463 0 obj << +/D [5458 0 R /XYZ 133.768 277.465 null] +>> endobj +5394 0 obj << +/D [5458 0 R /XYZ 133.768 192.538 null] +>> endobj +5464 0 obj << +/D [5458 0 R /XYZ 133.768 177.967 null] +>> endobj +5341 0 obj << +/D [5458 0 R /XYZ 200.558 120.965 null] +>> endobj +5457 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5476 0 obj << +/Length 2333 +/Filter /FlateDecode +>> +stream +xÚYÝÛ6ß¿Âo±q1+R"%E»Þ%HQ¸Ë÷†,s½ºÊ’#ÉÙlÿú›á¥p½Ù>‰ãá|þ8CG«ã*Z½»ùÇíÍwo…Zå,Wð¹½[ñ8f©ÊV*—Lå|u{X}\ Áx´ùýö§ïÞrîÇ‚Åiœ Õ÷D1c—²4 úáPWûM­Ù}ˆgIÂñÏq{³ÙÆž«AìŒERxÇùúT5Õ q'}õ§YÎÖí­ Žn¿€ÓÆ,wa§‰Œe\^Ó°GŽ^=è³n=q7‘ãWÞ·U¹ák;uâðwË4]¿E¯'‚¼&M¾§s­_;oe€ßÙÜ[ò‰¸=„Ffh"%kASLà}ÕÝ#¦ñk¼µ’õc{¡ÝF› FV-}ûËù\?Ò¸ ÏÂffí¡îéK49&µnŽ´ÏIgøfæjy7ooðw<"*ú–X*ïîÁä¾A*3ù}Ì,5·HQºëÑ MÅ4˜B\¦‰t¤¡)å tQÞ—}5ÐÒ¹¾ô4=’£KŒãHê¸4[ÔÖ˜¬€´ÛH‰©Õįý¸ïp®?žM`oC%³¨?]ªNϯ“EœŒÎÁÉÒ†¬z=cmòù ûßï0dû›r7Ÿ¼ýþÎZâ^?-F3]r­§×k›06¨ú?fÚ‡X<Òe…‘ÖâîêÀlªAá ×\õièNîÍÝD$WQ}0€+ò]bÓ2„,’ñ1ŽýúÁ7ÔqY:VAEOÌ÷E€°M"î+ H<çT<ÚmM M›ËiZÓÖð uCûÂ**3–gé2ùP@,‚Qʯ4·Ù¥\®"ºœékоpµÀ%&:7`™¶Šo0£ žëc§ ÊN…YVª64áfužX8Ú†pt Ù¡:šÌEÁï† êCxgPQæs“¼Ê_…+ŽDŒá”…{½ˆçZáÓØtż*B§@0æS‰ë"4’ÂVu‹<ò Áe ´M”è/ØÂkNEÖ:n`g¨€|þz–Q!—ÞűYBS*,¼õáÉôé’Mv­ä”^ájqo¸tM¿0û¹ÅzÓ&ý¹è{m•/úPLæ1ãâ…uÍWà˜çÐi_ %åù²ûJm÷fª¡ Sõ’ a°-§ |j\´”<öú ,ŽÝWE¡z®oá +¬¥Òx5V™•õ)¿Æ*õüŠô†’=è/h°`ì—¡… KG§î‘—amJ8ð¤O- ÿ­R±¬¿®TâèÞ¢ªM‘§¦0‚å_~ýùg»9“±šcÌ,Z]FR`/“HNu² ùb¸žO×¥FŠC;šÙ‡\1‘Aß´C¢$K"1µ^ÕPµ)½gùè”±8B†Ÿu®êÎŽŒ§Ø™T>µzÉʶóh¿bß^^fz·é±õ ÁMëƒù Z¨bBŸƒÐÛ!@ˆž@‚l‰[%㧾5ݾ­h¯À‡»GHñìÇW/ïvX;„>cbÂ=,.uNAuTä=á4àÇ}€kzFÙ_åz ›ÒÓÝ®lOç¢Û¹v>S ÷"»îšà¹P†ªDM称:¹LŸCE€XÅ/¼êŒ×¿ý®sÐà®ãöPa_ïÒ +Ä*¤ÞRéiѸv²—¹‹gèÊ?p=ˆ0×óë²#‡çœ@ü…¢±ß®Ãâ‡m¸TŒYÎGËûáÍ(ÏÆJªÝÿO—õxÊVƒp€E&’™*’ÛÖ¾¶¤6´½Ÿ ID«ÑâIBà•H€¬€ør±^Î.)TÑ{ü‰£Ì>Ñ[zÃÀƒPJüR#Š{¤'­š¸@ú³.§ˆ€ \¦òO²çnÏk‚A_0ösáƶ_6Õøªf g½mÄB[FEgÄðpRW }‹¾„2’ºa<¦;ŒÇŸ•%ÌÆrCbò>”ÉUoÒ¨½$‚Ý¥]ì{¢†Í&X2=ùÌÐbP+åᔩ‘)¸¼>ݬèmZS›9YÓº:vz/hŸ vW~„$«ð¥-æyèX¤sk ¿ ÃÙéÒc‰Ì^á´ZØïüQjÝ÷4‚º¤Aíc±M»«­]kíÆŽÎý†F¦ð=£¦G/!•³€2ïš&¾i…SaÀö„A¥²–T¶eQæI,éu>õ#íX¤5’Ù¨‘ádÖR «ÊÓÈÈY4¡=Økí0v þS”g,_ò?‘û0,3ÿÿ¡,gГ ôßÕà®wÓÜÞÛW•jÛ_$®›|#â7XÄàLD‘™gw³ÆŒÝ&N×ÛºÚ—®®³,Û/GÝ,Uþ?iï ð +endstream +endobj +5475 0 obj << +/Type /Page +/Contents 5476 0 R +/Resources 5474 0 R +/MediaBox [0 0 612 792] +/Parent 5465 0 R +/Annots [ 5466 0 R 5467 0 R 5468 0 R 5469 0 R 5470 0 R 5471 0 R 5472 0 R 5473 0 R ] +>> endobj +5466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.041 618.834 210.612 629.737] +/A << /S /GoTo /D (group__avr__stdlib_g1d4c7b84110553544081a69a0fc49c52) >> +>> endobj +5467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 383.006 174.326 393.91] +/A << /S /GoTo /D (group__avr__stdlib_g1d4c7b84110553544081a69a0fc49c52) >> +>> endobj +5468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.927 333.187 187.673 344.091] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.917 333.187 416.663 344.091] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.064 303.607 207.81 314.511] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.751 285.983 281.672 296.887] +/A << /S /GoTo /D (malloc) >> +>> endobj +5472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 224.209 179.307 235.113] +/A << /S /GoTo /D (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) >> +>> endobj +5473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.36 206.584 179.913 217.488] +/A << /S /GoTo /D (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) >> +>> endobj +5477 0 obj << +/D [5475 0 R /XYZ 132.768 705.06 null] +>> endobj +5478 0 obj << +/D [5475 0 R /XYZ 133.768 667.198 null] +>> endobj +2550 0 obj << +/D [5475 0 R /XYZ 338.449 386.159 null] +>> endobj +5479 0 obj << +/D [5475 0 R /XYZ 133.768 369.432 null] +>> endobj +2818 0 obj << +/D [5475 0 R /XYZ 393.9 289.136 null] +>> endobj +5480 0 obj << +/D [5475 0 R /XYZ 133.768 272.409 null] +>> endobj +3233 0 obj << +/D [5475 0 R /XYZ 181.678 132.337 null] +>> endobj +5474 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5500 0 obj << +/Length 2139 +/Filter /FlateDecode +>> +stream +xÚåY[¯ã¶~÷¯ð£ ¬^t]’n³Ø IѬ[زÍc %G’÷ìé¯ï3”(ÙÎAѼ䉷ÑpîüHñåaÉ—ïßn_}'ãeƲšÍãR(Å’8]ÆYÄâL,7ûå§@J&øê×Í÷_}'„G¬$SIœ,Õ_bÄ.aIشݾ,¶«ì8ÇM°0Žøë{ÜÞ®ÖJð཮t“—«µŒxp銲è +Ý®Ö"‰TˆL>‹¿m¿- o¾žŽ‚eã‰P7ã¿wËd+™1)§yp•«q2³æ\Kˆ·(¥`‰~O°È,hoF‹Lýh1äº3f…ù;Y7+‘‡ËICtÏx0‚2‘†½48â¥N2f"MQN¬ÑG°™ýÊN=Ö Nå8®ôJFÁ““®[ °Ñ³¶h$‘¤,Jä8ô\D+ÈÑêrÚÚ`6ˆIÛn5¶î. %;û|ݶ–úºi¶Z‡17þi‰·ž¶Î›~ϳλ|[ê~WÛîò²,ªÃ5&ÙuÛÏúOEwœdF›Ÿ\O»ôùlÌ—ÍúöjÓ‡G¤ªê«ßá° ä<7µ)Ÿ‹½Þ¿™lï"H­AlçÒÕ§¼+Œž‡}ÜNƒ"ùìÖ5É(Æ>˜@O3[Ë"Ç`‚1qMS’¦þŠMÛeóÆŠŸÙå–|`XŸá¨ê4r„z™+r%áÊ¥Aájœ*œ¥}¡ó“¯51%ãàca¤Æ’( 5)´F%dp© ð•Ï&ˆ`,ÀF‡º=O¸œ— ”Æg¢mm`•’ëmÑá,¸`w)s«$诤©ûEë‡rœ*ë–̹ѻb=w´À”™PÏ‚Z_-¸#ªŒñÞ6˜Õ³1ÿòðIÿ–˜0òŠÚ²ÓM…®ƒ!Ô@ìØH‚Ö÷3 »cNP.òÂM?^Ê{΂¦oõGU_"žu +g8{ˆ˜€ +Éç@ÅC3ÀŠKÕ‡þÜ+k¬pÚ„~yŽ!B’x8N¸B*pƒä„I&=<ìº/3ÒÉTâL3Ñ»™‚RëÆ¿VÂI g"KYÌq½¶ªÛ G)çCÙvucÃP(1]MÀå QØ‚ßÄn³’Î…µ0„Â8¦&8øYœ +„QÂç"#¿ Å¨'Ìâ\u"ôqîß¼‚tcÉKÿ¹‘n(çÉ+"F¥!Ðõ1$CÈÀÍ–À®™/\çØML¡¾ vAê,ôÁ®a•'u É`O"»-6=ØE2»fD!·–\°4LÇUdÐFz˜kæšvKÀe€¹vö̵Ôw`.@’ÍŠ<˜k†ˆêìžÌv‚‚; ¡ìGÿïh7òЮJíªþ–=rÂТ]h§h7tÛ«t"`ˆv1 Ú¥}ÜN¤ˆÂ«ûË­k’QÜ*æᤘË+Åüõè"tÁŇ.¤t!Ænƒ 2ÊõRÙ½³E¥㩬‡8«qr/lT¸Ð»{^˜õÉÑ „=¼0ËZx¡("ˆ˜‰µç€ìä Ñ 5[Ë5äU½{ Sfvˆ"Æcõº`>wÍ\0 ¥½Ç Dæ ø~èfXš·ÅH < áÓe<¾›!pL”x ÚRnÐL×S"ò}tMYâéíîH ˆ)B«4ö°R9@4 "®ž¥•ÀåB8Ÿ 2•Ppz[ ÖŸÜ eÜ—'^¿¯;e_r‡Ë(\Гé=µ÷ÆäE+ÂÑ;HÖ*SÁS’„NZc¨Ÿ´`î\´Ùàœ•.qÏ©01Üp¨ÑKNÝŒ +Ê ¢`Í>·èN»}ñhÔ|Ôž®3‡1j®b¬½•}Tôvíîu¦ãÆŽüƒ[ß™Èkl5¯VäEB*ÃLÝL˜Î1O +íx|&ǶÌ<Í{L6èfì lA©ÛÖfŒœø%ø¯Äõ¢¨,FÀ!Š¯‚(Q65²‹$»H'ºrJIÏ$oȃ˜íFí.oiÿ™xúˉmepÌ÷WÞýé” ˆpi>ÿÂhÖ¡Íw;}v°1¡¸‚öœ·íL›ÇÞ-ñp/Éi£ŸþùÃohï +Û§c±;b×ZâÆ_™ìn5ü +ûB”[sƒÐê´«çâÄ]#çöëÂÆãÛçéÖöMÌþ/ËR87^ó·Ìý%‹Y–¨ÔÿK–fLÅä~üƒ×9 é0ÃæxÁÎ;M‡sH϶ü­ToEŠ#É9õl½*Ž ÙfY¸ì²_ˆßÕ_žºšªü_Mõ\ +endstream +endobj +5499 0 obj << +/Type /Page +/Contents 5500 0 R +/Resources 5498 0 R +/MediaBox [0 0 612 792] +/Parent 5465 0 R +/Annots [ 5481 0 R 5482 0 R 5483 0 R 5484 0 R 5485 0 R 5486 0 R 5487 0 R 5488 0 R 5489 0 R 5490 0 R 5491 0 R 5492 0 R 5493 0 R 5494 0 R 5495 0 R 5496 0 R ] +>> endobj +5481 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.922 636.458 177.253 647.362] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +5482 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.383 624.503 349.595 635.407] +/A << /S /GoTo /D (stdlib_8h) >> +>> endobj +5483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.542 606.878 180.748 617.782] +/A << /S /GoTo /D (group__avr__stdlib_gcceff9dc95bb3c5562dc9e61fc3d9075) >> +>> endobj +5484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.766 594.923 302.097 605.827] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +5485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 583.342 162.979 593.872] +/A << /S /GoTo /D (group__avr__stdlib_gcceff9dc95bb3c5562dc9e61fc3d9075) >> +>> endobj +5486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.782 523.809 221.595 534.713] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +5487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.553 462.035 202.884 472.939] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +5488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.497 400.261 189.561 411.164] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +5489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.81 388.305 369.022 399.209] +/A << /S /GoTo /D (stdlib_8h) >> +>> endobj +5490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.048 370.681 194.986 381.585] +/A << /S /GoTo /D (group__avr__stdlib_g4fca27496ca29c0a723d197696641eff) >> +>> endobj +5491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.646 358.726 332.977 369.63] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +5492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [162.381 346.771 205.319 357.675] +/A << /S /GoTo /D (group__avr__stdlib_g4fca27496ca29c0a723d197696641eff) >> +>> endobj +5493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.595 279.327 213.658 290.231] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +5494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.598 217.553 186.333 228.457] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +5495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [346.556 134.484 382.292 145.388] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +5496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 122.902 168.518 133.432] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5501 0 obj << +/D [5499 0 R /XYZ 132.768 705.06 null] +>> endobj +5502 0 obj << +/D [5499 0 R /XYZ 133.768 667.198 null] +>> endobj +3235 0 obj << +/D [5499 0 R /XYZ 133.768 515.007 null] +>> endobj +5503 0 obj << +/D [5499 0 R /XYZ 133.768 500.437 null] +>> endobj +3234 0 obj << +/D [5499 0 R /XYZ 412.45 453.233 null] +>> endobj +5504 0 obj << +/D [5499 0 R /XYZ 133.768 436.506 null] +>> endobj +3236 0 obj << +/D [5499 0 R /XYZ 474.431 332.299 null] +>> endobj +5505 0 obj << +/D [5499 0 R /XYZ 133.768 315.572 null] +>> endobj +2589 0 obj << +/D [5499 0 R /XYZ 412.45 270.525 null] +>> endobj +5506 0 obj << +/D [5499 0 R /XYZ 133.768 253.798 null] +>> endobj +5498 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5515 0 obj << +/Length 2469 +/Filter /FlateDecode +>> +stream +xÚ½Y[Û6~Ÿ_aôedì˜åE$¥ìb.šSÁ¶}Xd‹@¶eP[r%9“é¯ßsx¨kè™LÑ݃yxûÎÇs¡ùb¿à‹·Wÿ¸»úö4‹”¥Š»ÝB(ŬI&Õ̤bq·]|ˆ¤d‚/¹ûáÛ7BŒ„•dʦ0““úIL¦³Ìƽ@ÓnÅzóˆÝ‡f,ŽE'ü÷çf{µ\)Á£·y™×Ùa¹’šGç¶8m‘7Ë•°ZéH¤ç¹z}wõÛÎÍbtFÁR®›ãÕ‡_øb ?,8Si²xp¢Ç…ŠATàÀÃâ端ø8N[&•¦=Þî`_pÞö>§J™/¥Žè㘫ú‘ꛬ,«ê*Ö^8;ªMÖæÛwÚ|½÷§øéíÕâÈɨÎä¸æð^˜6êD8ˆ´çºlhÞ÷ÿz÷îÆ/QnÇ;„Åë|)t´/ªÒK´¤¥&Š×Ìš?µµ×Ö‘U'µ€³ö<¯,:/TÜy¡ÜÜgå>ß²€æ9ÎÆDªG„d1“1(šs}ZªbK55 ªʹlŠ}™û–¢ô'‚ÔjKcÛèãÇ&‡_nDZfŒéÄ:¸ç' Ü¡ â2&á6ùy[­poÕÑCp>®óšê{Gä¶òŸ¸~QîÿÚ=ÁÀY/ z  ú2 Ý¦¿„ôP•û¦Ö²ÄÊ? SÉ5Ó*ù?cZÿ TGu[×Ïö¦­ÛjÄÒMU6mü…ñO#˜RñWÔ-‹ÌËájN¬¼eÂèNlæW•),:^óºB²X÷›ËËmxii˜¶ÏêZÇ ¬ÇT×w÷Oè üGô’T vçrÓ:Ó†ò€8:£Ohðòºm¨ÕYB.Jp%èY°õTÕ~ ôT»±(­ ¼¢ÎSo†“¨¨\?z+j&O3Ç]ÁLIL"@3¥ABLmë˜^u~ªó&/Û ÷íÈŠôt€êPØŒœÉÿ|Ê7~ß2ÚUõ‘jtVÙUg…zÑP™•^ø„‹f2:ξup#.ˆIz^ÿå:t~ÁŒJ'Œ¡µj*EÙ-ƒ6éÉmÌbÕ‡׫¯\14ˆ§ˆï*ð¼Î¥;ä¸@M»2ÃÌoç¼ÜäÔèÀ„r[ì Ç7ló˜i°²Í€{ãn"’oŠcvX9zQ^Ø tV#‹o0R0ÛªWõhŸÃ2Mf»Æ–µë±N‘øíQ•@ ¶\ÁÅŽ¾ tÑ ´\EƒçÁ~<#–0U@ãZ²Äôè^¿¾3>I{™ªÌg“ƒË¸ÎCÓÕÓÁrÝP¸89:é•Kb§x9<4'< ˆ_Dl×î=‹'¡³ë@ªÎpÆP§›·sA;Üd;*‰Ó+ëmà»<Û:f ÜÃ}Ñæ«æ”m†ŠÑt¡•Ü‘ÏéGgu×økq:ù°+d"žô‘OÛ\BosÉ,uèx_3KÜ¡õ ±ËçÜãYìz­€àãÒè(ˆ„Ý_Z[ðÄ2èøÔÙ%¼7HμéÄEª.ƒ'ã=1¨M¨X*Æ„é2*ÈQ Ó–4’™…Êp¹iÌníD ásã¬È"ºiÛSˆGäÌmLÑoz]£!€¢ç™ê\Š2Rï.¯‘ÑßšHˆ‹ÌóÊ0à÷à‘¦WRBhÛ)M1ÏRÒ‚¢°L‚'Â~§Pè?å5z8̬À®Ûè÷¼®ÆÖóÔÁ(J“°™°‡–žšÔ^…' Xž<ïßù`íºõ;Ìq­¢' Å8Ÿ™¬? Èµùƒz€Âíìi7 ˆº†°‚ZǘÁçƒK1·­Í€¶ÔS¡Þ¼ò0Ú$Š×õ%EY hM£É.)¾*ðÞ Ü¾sûþöîßSjð:vzõù„° +Ú¹l³ê´ ™´Éü.ÕÞ@Çt©]Ié¿ñ +69[?tÀA;zCmH»€ï‹fú¨ñõOß½û:p•¸ztœ²¿Ë°›"ä¡cÄèé˜×uY]°“I2PÐIýkÇèL›%„7ž“3zñ~@®Bÿ>0°Âyb…{Ü)·:`]ß±ÉÔFþ"ˆ#¤§VɯrHY.Å R˜—ùeÂÁ¦”ʧ–ñ,µ´>µt9øà’/J,Q<~Qbùñã…Ô’y!“ÿAj©†¥/&— +\ò$äÃÅÃ>æë$æ\gM:NÂÀã<—¯BdɬU/ˆ”2^QóUå«J‡òU![KÓQÒ .\ma5Üî%wd™Ôf”nºù2*ˆd¸—þ*ÃÝ×&ñ¹¤2a׋;jü¥‡p[Á½˜%®¥3ài7# šz št&%ö.L³—Ô‡š»¡^ˆˆ7÷Ôz<;ÒÇÝs*ÈåíCÞ ’Ôçß?“Hj(Ê ø–Ñ"7ÔïýÑd/žåY $ÑE—&Œü~ò`¬JÀq5¨êÇì‘*kÿ[ÒçCÑÞSÍeÜ<†(~]´uV{ùìX)=T>ÙT”&ø5(WÀªse Õ·9„ŽàAÉÍ),\ .ôM3Í2½íÆÙ/=—Qâ.ÁM̲"î³OèÉè³Ü34õ‰WÈfùÌëDWâéTÒzkŸyÏ‚NœaŽk†Dcò8¶ÀôÛÙ•ÉŒš¥ƒÝwNNë÷|ƒa€Â_slñ<¡Ë¤Käì…Ý‘G÷<…l·œX½Í©9 =Œ$̦ý­ÿ†þ&ê´·…§tÍågÜŸýM2þQ íb¡Ñ¿ú,zèÌp)ödïŸh- “ÕÝo«iëpZ®™šÚCgl71+´´Ù¯U84à3óÍ‚“RÖ?¯x–Bç¹<äM7þÞOXÒãGKÍ£¬ ?‹`ü ®UžœøW½TH+<,¶·iCd:¬ÕŽ×ÄPÊ°Ø̧ÆÇÆ(ÈG.ÉT›–Î|Ù4I¸ïu~Ì +Œ¾èÓÅ®P¶]ÿ¬‰¨¬‚)=Ž©¨Ì¨ðQ ÔÆÆML9Y#ŽªµK +Šêì8feÙ?}I“ÕéÔ]™eÊÜ_kÝ-R¨s.kç!ÔT‘Ð×!®<ƒ ôÿÍ9Gˆ…ß­û&p/6~D9[iî±  ʆŒâvÔì×ËÖ£ˆš¿¡èÚ>® ãüoRlˆG^ðÏf÷W°\%ã4ˆÒŒ§ýÛÚ?ÐtÙæÝý™*ßçªÄTþJªWÂSNrîk;Ĥ{<Ë@õ€\ŠõfúTö}õùqŸ—ó#ÿÉL½Š +endstream +endobj +5514 0 obj << +/Type /Page +/Contents 5515 0 R +/Resources 5513 0 R +/MediaBox [0 0 612 792] +/Parent 5465 0 R +/Annots [ 5497 0 R 5507 0 R 5508 0 R 5509 0 R 5510 0 R 5511 0 R 5512 0 R 5521 0 R ] +>> endobj +5497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [292.304 654.082 328.039 664.986] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +5507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.742 592.308 348.073 603.212] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +5508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.742 542.489 360.805 553.393] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +5509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.044 492.67 183.366 503.574] +/A << /S /GoTo /D (group__avr__stdlib_g5ee4d110a3bb55d2eadda05e3ebedf8a) >> +>> endobj +5510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 391.976 182.077 402.88] +/A << /S /GoTo /D (group__avr__stdlib_g5ee4d110a3bb55d2eadda05e3ebedf8a) >> +>> endobj +5511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.61 241.463 180.72 252.367] +/A << /S /GoTo /D (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) >> +>> endobj +5512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [462.645 199.929 478.476 210.833] +/A << /S /GoTo /D (group__ctype_g16e58710aba8108549a1a3c33691b24e) >> +>> endobj +5521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 187.974 159.651 198.877] +/A << /S /GoTo /D (group__ctype_g16e58710aba8108549a1a3c33691b24e) >> +>> endobj +5516 0 obj << +/D [5514 0 R /XYZ 132.768 705.06 null] +>> endobj +5398 0 obj << +/D [5514 0 R /XYZ 217.653 645.28 null] +>> endobj +5517 0 obj << +/D [5514 0 R /XYZ 133.768 628.553 null] +>> endobj +5344 0 obj << +/D [5514 0 R /XYZ 352.656 595.461 null] +>> endobj +5518 0 obj << +/D [5514 0 R /XYZ 133.768 578.734 null] +>> endobj +3237 0 obj << +/D [5514 0 R /XYZ 365.388 545.642 null] +>> endobj +5519 0 obj << +/D [5514 0 R /XYZ 133.768 528.915 null] +>> endobj +3238 0 obj << +/D [5514 0 R /XYZ 431.54 294.436 null] +>> endobj +5520 0 obj << +/D [5514 0 R /XYZ 133.768 278.426 null] +>> endobj +5513 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F55 3943 0 R /F14 2650 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5536 0 obj << +/Length 2816 +/Filter /FlateDecode +>> +stream +xÚíZQÛ¸~ß_aÜKltÍ#E‘”Ò¢@îzä¦èÝP4wXhmí®PYr%9›ô×w†CJ”—¶ }ËËš")’3œùfæÓòÅÂ/^_}wsõí‰^ä,×ðss¿R2£³…ÎÓ¹XÜlï—IÂ_ý~óÓ·? +L– “&‡•ì¬?ÑŒÙr†™tœÐÛºº[¥|Éc« –¦ÂOþó¥Õ^®ÖRðåë²)»¢^­Å—‡¡ª«¡*ûÕZ%ÕRä×¹úáæêßW¸6_ˆ@FÁr®›ÝÕûßùb ƒ?-8“y¶x²Sw ™ÂT/Ö‹_®þ~ÅgŠã1Å)éèŒu9 eG’HÌf©ô¢¼xõÂI®˜ÀQxâçT ˆ(³eY °¤mö{jšeëºêv•¨å“Ÿ±)ú’Z]¹ïʾl†žž¿ŽœK8X2^‹ï.ìÙÂâpÉE³¥ž¾¥ßû¶í® xÖ,u­ÜrêzÙbÊâ,áéx¦ž8Sš¤ÏÎT5dR±ß¸´yÊ™Npo¿)½òæ>¦\u´¸²Ùî‡.²¹Ì™ÖãEd&–M;PãݯoßZ©¯Èüºg‡?¿¾Z¼‡)<£ÚÈý!GK³3Ìh»Ò­ @b»…N×ÛÞ¯ìZãèoœ']ïæWò£¨«-un‹®Ø …Ú7ayeȶVœñ,Ÿ_,-#êJYž%—µ¥X¦•ŸÆVëT'¨þµäV¶®¤æ“kqP%õl«‡ +Í ÛÅà~ëú‘@.éãß+¡– È|Nõ"uª_¡ºNhŸÚç^ûÐh;8NƒÐƒgtª=øÁ˜9¡áe©qºÔ¤€&®¥D31!„¿šÙrùç«[êÆã¡°7‡]UÂÍßGn>£ñŸ¹ò.Ή’„þ‘$©õˆ¯KÐЄ?‘c)–›lÜñÒ‘x ,DÊDfü”»U‚‘#²Ì3“¥¢Nh[òòMdŒç&ÐÃó…2–sIzsIúä ¤oºŽ®]ƒöäÖÆ ¦sÎŒ9‚iÄUtMÄUpŸcŸV‹žF¨™p—Ï÷†6‰»&Æ´ó¨h#Ê¡Ù •æ“==X7¥À×êÁEÉ{êÀßýø¦uÐh£‡Õ\ü:4µ×`5º9¾lEnõ–FÍ@Ìi= +|„š„Q¨"E1[¥Ë·vûs´²Þ +wƒàˆñÅçG¦ñ; L¹+© »»r‹B)½ä4\zj’ÖÊíÑ^Eã?¼‹‰i•0›ªå²Ýl]K9Œ´I˜wž®)#¾“05åC`վċ…ð1´gL &þðó«w¯xfBð&e)0…®z£‚nR„—CtŠd¹©‹Ý¾Ü’Ç®YÊó9Æm<¹H&X|û·w¯oÿúæ]DvˆÀRŒˆÖvñµ¦Dœ–zõÈR©a:\“§‚ƒìKxŠ›õ'2¾ç8H•3X¶ÂDžõKY’AÞÍ9ºN_=€Ma^‘BNŠ!3E}¨©,™2e“‘à%œäEÂ˜Û 7Å(×ímˆÂÓ'†‰$ ÄϤ>µ¯Lyûg[ Èûs9í=ƒÿpwÈx•”G»WÍY´+ =NçŽu{{‡é|D®Œ%SòëÁòèê×na°ú Nsc'A¦þOsl²EAš;çJ³)^@g4©ˆÓ}ŸN)ä8ghi½Âa²>|"ëÃÖè¾6 Ê­ðþÌkïÀÚ¤>Êvç8 kP +£–Û¶)©Ul6m·%ÉàÑžÀ”ĆŽ‡À»Ü"x—.ýzz¬6Ô»; ?ØñÒÿO¥)¡u ´àYjw¢fSú`“ë2SÀá.8¸RÁFq€ÊÑ!ÊÁ#g³à(QŽŠí]ñ‰°@¡z´um¶è+:7¿Øµ‡f ¶­cð¥Çjð{ì‹k¢!=µ·%”.»Špwýt&Õçˆ×}4.ãê' œœ Ì̼­}qÊçîgG +zìAuI]í=41ðT3=ð‹?œ(gùEÄ—Aª¸¾¸ +ú~’ëx­+!„èñXÒÌV„ü3Ëfa¤ýOÙµ¤kaÐ#4š¶ÐÎÄxî턼LI[ZÌnÁO¢-V µNV½-©»ˆå`宅oøÇoâX¡&€Þw%Æñ|Æ{’ö›6‡Ý¥O ó©ªkjݹѮ,Ü –Á¢X`Lè?bnßR4PÁVäâFÑé1;P\3Áö´ñKiíR È;‹a†i…뜦¡ÕnÁuwEí U›)oÕ>o…™õÈu…?>FK@kˆW“Æk Ãr9K(Œpš1#¬ÁöŽ‡Â½†pÏŽ²ô8Ò…b«©¦Èè¥n7É|RŽ×µ+*›”ÛGÄüü¸G/l£Îñ÷(‚¡·ÛwZúµ–‡Q{)ʤs"À®ÚmÙÞÙŒºj} ŒvEÓxâb&–{Øï b3M´Gf<Ë£C–GÏ ñp„X)ãY) …Ï3FHÃB#¼3íw2Ç1 ÇÐ`Y¼ÔQü NJiROÍâ.('°ËXr-ç­`ÒIÒT@ži’K¬©`r*ÿ+wÏšbÛ±¦¸yëºÖÉZ±’›ø|‚5ÍÓFgM!§SPK9ÿŒ=Û&öTyöcsK¿Ž=¥J;N” +Àp•çÿC¦T€ƒqPùÌ»NQ¥ÜÈÏ¡J弎“©rV K\iª.e¤4ÅÑuÐvf¥²îÑ&áèäF©Š¥©šù͉¥in£òÿ‘,•°¶F7#YŠ±çɵ‘ÐãÉRìCÔÀ>"K1}9Yš}±0|Ô½;í;Q¥Ø&˜†Uª¾R¥_©Ò¯Té ÇÌäEÇ„)A™ž´´ÇOŠ™gÁìG›f Ѧá`”€„þÖ'.I.ÐSü[{o +ú©!£ž—eÚ;²-+¡&®šCOML¹ìçžÜ‡ñ©íà +tHòáDª"=Às5ÊÔq7ñ¹ôl©ðòøÐxá( +Vn]Š~‘EŽS®X[¤‰û0Òu1 þ+ðÆr +g~ÑR,cðè¿z6ñšž1/yîJGrŸaqƒ¨œý‹«øyÆ£,.â4qÍIÎOä|"É'dN’s"Éùx¾‰!¢N$âCÕš;>ôÇh0mÏÃÆÑ?=¤fD)0ᶘª €éR¾±'²Š‚'‰UùÁs6N/MPÓ©Ó$ïÈ ÜìL€ÛÛ>²¥€P&³£-ãB@~¯²|Z®+¶ÕÇÛ +ó”¸Ä‰JFÊ9Ú~?/}>îþÅä´ÊÉÙËn4fz1Dv +Ý)Å÷}–’µ6pÒŸYþœ‚K0Ñ£Ï$ùRwº®ÝÅÒ <ÑL“M›;µVa«W¿|ÿæ‹£™ýF1 c•â™›á‘²ÚÔ³4Ð"–&¥$tKmú&)XTÎÌôá©}x ó'L!ÒeÁºH¦­¦ m‘¤öSJ ê½³< ¤Ù÷­›±ïÕ+Gã!÷ŽuZ1ÉgeC²©ÊfðöÓvÅCé¯*"ÎXÐ}—å M'úRyÆ.¾àߣüÿ“iÄ™,ü·¨ €B;Éè_¶ïC˜!ɦÆ_Ê 5RWó—‰|)û“pîZ÷hŸžÓ.l%Ó­ D­ëêέ`)Z\²ýøé¡lŽEþ/v²ã +endstream +endobj +5535 0 obj << +/Type /Page +/Contents 5536 0 R +/Resources 5534 0 R +/MediaBox [0 0 612 792] +/Parent 5465 0 R +/Annots [ 5522 0 R 5523 0 R 5524 0 R 5525 0 R 5526 0 R 5527 0 R 5539 0 R 5528 0 R 5529 0 R 5530 0 R 5531 0 R 5532 0 R 5533 0 R ] +>> endobj +5522 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.67 624.876 271.78 635.407] +/A << /S /GoTo /D (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) >> +>> endobj +5523 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.346 612.548 367.456 623.452] +/A << /S /GoTo /D (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) >> +>> endobj +5524 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.629 571.386 179.739 581.917] +/A << /S /GoTo /D (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) >> +>> endobj +5525 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.492 547.103 314.882 558.006] +/A << /S /GoTo /D (group__avr__errno) >> +>> endobj +5526 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.744 473.373 184.835 484.277] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +5527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [462.645 431.838 478.476 442.742] +/A << /S /GoTo /D (group__ctype_g16e58710aba8108549a1a3c33691b24e) >> +>> endobj +5539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 419.883 159.651 430.787] +/A << /S /GoTo /D (group__ctype_g16e58710aba8108549a1a3c33691b24e) >> +>> endobj +5528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [240.891 313.277 274.983 323.807] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +5529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [334.874 300.948 368.965 311.852] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +5530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.083 259.787 185.174 270.318] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +5531 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [329.665 235.503 363.757 246.407] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +5532 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.087 223.548 240.477 234.452] +/A << /S /GoTo /D (group__avr__errno) >> +>> endobj +5533 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.442 156.105 214.994 167.009] +/A << /S /GoTo /D (group__avr__stdlib_g66e31b615d9ef1a19c452d64d7250112) >> +>> endobj +5537 0 obj << +/D [5535 0 R /XYZ 132.768 705.06 null] +>> endobj +3239 0 obj << +/D [5535 0 R /XYZ 310.585 538.3 null] +>> endobj +5538 0 obj << +/D [5535 0 R /XYZ 133.768 521.573 null] +>> endobj +5343 0 obj << +/D [5535 0 R /XYZ 450.08 226.701 null] +>> endobj +5540 0 obj << +/D [5535 0 R /XYZ 133.768 209.974 null] +>> endobj +5534 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5548 0 obj << +/Length 1712 +/Filter /FlateDecode +>> +stream +xÚíËnÛFð®¯à-möMÒ( +´I$‡mÜö%­$¢©òaÇýúÎî,)’¦(ÈÅ;Ü÷C¦Á> Á›ÅO—‹¯¹’hX.w‚D:t¢ˆNXp¹ >„œF—Ÿ.ß½xÍØYp"¢(9¬ïcD."‘ìêf›g륤!9ÌQcDJÖ!ÿð%jË•`4|c +S¥ùrÅ Û&˳&3õrÅ"%TÈié,~¾\ü½°´iÀ22’PlŽ‹Ÿh°…Ãw%"‰ƒ‡z „Tf/æÁûů êGP 'QÄ­’Èë/ec.#ÝE¸E‡·bx&XÁBÇ;—BÅ<GØyºª¬þ ¡ô~R¥eôÚþ1•uÆÒžÞXˆBH­àÁ+GÈäKyÈÕþZÙ )ò%Á„[çKv§EcÚM+Ñ|æa}jGËÞHËqÔ§§´Fâë´¶9C +ÎCfÓ¾sLoý±Á?‹ö¸¶RãQscLçÜ ªb’€„#8çpNPÊæŽäiBë0-¶ˆÔžpu V¡ÁµµÒÖ¸3P’ÄŒ?BŠ÷*p)Hï+“ºHµ 4‡´ÀmFmx'>ììNy¶Á¯m¶ÏÏõ®™- àÛ1”©d¬gɳÞ8%’ËŽ7“ +-0ræÜ4ó¯ið®sV|–νž˜ˆ^O{R®ÁŸj®ÎÃÎõjï«ûooÁìò¦L­mõ†êvm±iœ_»H2M[õD˜S ‰¶‹£SZ×6»p«çÌœÄÐ*©‡J¬"Iä›æN%¡±°õ°D z0"‰ ÐÛPŸÀgJOĈŽØLå7R2êuÜ‚–P¤q¹q9¨hð:¸Æàz}Dÿêê²íÝG,Ç¢·6¸ªºŸkž€Þezüêé««zæIDÄ“'çe€Ò«âäLn‘zÜ•*5Ð'zÒ´’óXE™wP9—@ï6ÞÛîèÙ…î¾ó´¦%u¬§¤¯_ƒW°O„R×{óýAXíC1çãÜ×Ô£Â.‡lC ³ Ç׶°¤yÛ±T•Ç™(á\ãÜÉŸÝg’n˜îÝ^*}»Pàúãû—oßv]Á©2+L\ÃPÂԤƛ¢I}¤ëئÐ!ŸÅt‚Y vjèSœx·Åv¾‘1‰ö„(wù-t7]ð«ò°V¦>• Üuî‘°©ÎN–ïl‹-“eë; +ßdý$–Pcô¤•¶ò¤{Ó¹ÙŒ4<œÊ§¥¬{{%C”Æ`ÁÂߦŸ§L?êÛôÓO?ROËìœg©ÜÌ{ —ÑÌÃeägÇ«íSG8ø‰Î<™?óÀ3ýíÝ÷¸ý ÑGšŸylú¾3ó0ÚÏ<ç´>šyl âgÏýÕyæÔƒ~æsˆÜÓþ?~ÄDí·çÛˆóµF˜áý”£ÿ§SŽzÄ”#þ›)ç+ 9 +´©¿Ô1D_rôiÝ#‡CŽòÎË„CÊR쉀Wå¦=ö½œÏÁ†¢.iy„=<$iMtò”éêÊ&¦rsu0éé +ú‚{l2u¼HB;±(Rš5ÙÁ±^)(­çªi §›±Õ'ÚìOß0¦Fâ)?|w?tk0,LXƒÿÄ0ºi/þßtÞÓ9ÝåÁgòWfƒ€Ä…Ñ ..XŒ_œR¹Ô^V]Ò‡ëj)¢p•gkOa}Û¹ÄçÛ½)¦"ÿ ´ª*î +endstream +endobj +5547 0 obj << +/Type /Page +/Contents 5548 0 R +/Resources 5546 0 R +/MediaBox [0 0 612 792] +/Parent 5465 0 R +/Annots [ 5541 0 R 5542 0 R 5543 0 R 5544 0 R 5545 0 R ] +>> endobj +5541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 478.639 179.307 489.543] +/A << /S /GoTo /D (group__avr__stdlib_g66e31b615d9ef1a19c452d64d7250112) >> +>> endobj +5542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.934 411.196 211.717 422.1] +/A << /S /GoTo /D (group__avr__stdlib_g5816f25bd0f45787cc16bebf6a735d8a) >> +>> endobj +5543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 192.992 176.538 203.896] +/A << /S /GoTo /D (group__avr__stdlib_g5816f25bd0f45787cc16bebf6a735d8a) >> +>> endobj +5544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 119.885 182.585 129.728] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.083 119.885 214.406 129.728] +/A << /S /GoTo /D (malloc_malloc_tunables) >> +>> endobj +5549 0 obj << +/D [5547 0 R /XYZ 132.768 705.06 null] +>> endobj +5342 0 obj << +/D [5547 0 R /XYZ 343.43 481.792 null] +>> endobj +5550 0 obj << +/D [5547 0 R /XYZ 133.768 465.065 null] +>> endobj +737 0 obj << +/D [5547 0 R /XYZ 133.768 179.418 null] +>> endobj +5401 0 obj << +/D [5547 0 R /XYZ 133.768 157.107 null] +>> endobj +5551 0 obj << +/D [5547 0 R /XYZ 133.768 157.107 null] +>> endobj +5400 0 obj << +/D [5547 0 R /XYZ 218.988 121.977 null] +>> endobj +5546 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5579 0 obj << +/Length 1343 +/Filter /FlateDecode +>> +stream +xÚÕY[oÚH~çWXê He2÷KTUÚUšh«ªê&ä©©¬56k›¤Ù_¿g<61nÝ°RSßÎ|œï;—™±±7ö°wÕú½×:»¤Ò3ÈH8ôFa )©=i’†x½¡÷½M)"¤ó£÷ùì’š1£ˆ)H…Õg±§â ƒ,OÃxÜ!¢&ëÑ”–•ñÇ×ÐÎ;]Fpû¦Í:]J(mb„ØúÔkýÝ"`‹=R#EÁÂL[ß`o?{1£½ÇÂtê1¦ÄŒ¼›ÖŸ-üºRB!ÊijR D;]‚1n&~ZRåµ±R‚¸‘;ŒÙZ²\ÑʦߟúQ” ú“ÀŸõ³ÜOó‚¦ã—ŽK¢×Wà%c5”®âˆHêu‰B’r‡æ°î°ÀðGJ Çs Å5@z‘…_ù<öï£` n£5|ºåÈ.Ä¢´¬+õÊ‚~Áø™ó4„HÃx;ÎøÍØÈ/!è2]€V+…V5k¦‘bµ’j&”â›K©gã|µ–xbC1­‰ž‘ˆcíu)dS£ƒH»‹ ÷Ã(ºè]Ù gy˜Ä Éݱˆ™BFabñ9Ô>ˆE èP¢¿ ãA4®ôŽ2šTdêaêVÕֽIà<)µ*ÎGóx`]ÊÜå,HGI:]µKà‰_3Åñëí—/î,ÒiûyÅ×ÎÐÙ¦ˆ#ÁMè­•†_“<8oªs#d´FØÎŽùc¿‰i;/(ÂI¶h‚˜µŸ’¹»ë§åãG[>Iú—£7 +:`šY8 âÜÝ cwœ¥É8õ§%ôÌÎÚ•f~6±•ôÞö\Rýk?†QäÆÄA¡Šõ0±ÔŠŠ,2Ïù?Ï,"5%VÓnÖc—Ã"‘î D°|¡ ,Í&„s¤¡=7J +ošNüÅí‡ôl6ž”×NQ’"ù\47`êzUAê~[è tnJ=áô6£0ƒl«öI9FRóåþy@@hÜ€hf”.3€ÞËrॢñ³Ð±pûÝ°DÜ 2˜½ùòò¦éµMŸU‹mz_ùPwþrè#9ÆùËn:T´GM½‹GÖû0^L=ÖÒVfŒ"•)¤29Ž+Ñ&_¢¤êE[8CäÌÞìä×+"=ØšKÂášÕ°üaÍ%ÒëöÒªiLƒ™m~O›ˆ½à‚äˆ?×rm•Vÿ=ŽŒ&•Í{'ÌRºL¤à¹FïÑ,ÏÜjiUþ.°žìt¢0I7`;±4ÌšK¬2}똿z½ëþ·ÛëOý~SDh9Æ.yŽRbV…éì0VH~z)¹»¶°b’ŸN‚îß%0Ât›ÐýC¢ö€¡7ؾ¶]VÿÊÿ[ld´Ø;iwŠ†’H1rX4¶+XY#MO§@¦‰Ýl>Øÿ‚}ª6fJ¾}ãÚ¾J$Ì8†žL™¤‡O¡QcöÐè )T" +ȧ’ÅYB"å±”[VÈÀ†‘±#í)`=ð³`»uƆW“„p¤öª¥×±¡L 3»t]rMQ¤Év»Á?H³Ú;¶=Ó¬ ö‚–3ùŒAŠl9kýò l¬õMÒ(XʱSR½¡.ÇȾ.=‰ŸÞŠ )È~»¹]²t¢‹ yk½âyt@Gàˆiö‹%[ûÑÌh˜¡vùdV}*“È(¦ëŸÊ`©ÎªwxWAl_±W¯Ï«ì½É¼ú~0p'Ü>§ìœhwE1.ÏŠWWIê.|{ñv˜jw£ð¾D¸*!“ŸOã nRþHSÏ@ +endstream +endobj +5578 0 obj << +/Type /Page +/Contents 5579 0 R +/Resources 5577 0 R +/MediaBox [0 0 612 792] +/Parent 5586 0 R +/Annots [ 5552 0 R 5553 0 R 5554 0 R 5555 0 R 5556 0 R 5557 0 R 5558 0 R 5559 0 R 5560 0 R 5561 0 R 5562 0 R 5563 0 R 5564 0 R 5565 0 R 5566 0 R 5567 0 R 5568 0 R 5569 0 R 5570 0 R 5571 0 R 5572 0 R 5573 0 R ] +>> endobj +5552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 637.519 182.585 647.362] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.083 637.519 214.406 647.362] +/A << /S /GoTo /D (malloc_malloc_tunables) >> +>> endobj +5554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 587.7 182.585 597.543] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.083 587.7 214.406 597.543] +/A << /S /GoTo /D (malloc_malloc_tunables) >> +>> endobj +5556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [295.354 423.001 475.985 433.904] +/A << /S /GoTo /D (group__avr__pgmspace) >> +>> endobj +5557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 368.514 213.091 379.045] +/A << /S /GoTo /D (group__avr__string_gedb0e7bb7333d6122472acddb5df20ac) >> +>> endobj +5558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 313.655 182.944 324.185] +/A << /S /GoTo /D (group__avr__string_gb978764fd2814cd14f9f1a3620aa4ca2) >> +>> endobj +5559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 300.33 185.713 311.234] +/A << /S /GoTo /D (group__avr__string_gcc4734579c84c1b33a9ba9433f2063e4) >> +>> endobj +5560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 287.378 188.483 298.282] +/A << /S /GoTo /D (group__avr__string_gd9ad8d36c2a662f6f3ff420fb0f25826) >> +>> endobj +5561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 274.427 225.783 285.331] +/A << /S /GoTo /D (group__avr__string_g8f2913a691990ae107e9687b8949b553) >> +>> endobj +5562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 261.849 219.795 272.379] +/A << /S /GoTo /D (group__avr__string_g8d270897496bfff9daf51edd64d712d0) >> +>> endobj +5563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 248.524 209.763 259.428] +/A << /S /GoTo /D (group__avr__string_g4cd54dc9109f0d3da49d9c35e6441b61) >> +>> endobj +5564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 235.573 221.36 246.477] +/A << /S /GoTo /D (group__avr__string_g5f60008005ea7557430149926cf583d7) >> +>> endobj +5565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 222.995 226.998 233.525] +/A << /S /GoTo /D (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc) >> +>> endobj +5566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 210.043 228.911 220.574] +/A << /S /GoTo /D (group__avr__string_g8efa99bafd35937d045832774bf57486) >> +>> endobj +5567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 197.092 223.113 207.622] +/A << /S /GoTo /D (group__avr__string_g9ce73bf9cc6fe7fc3dc88b3dce7ed33f) >> +>> endobj +5568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 184.141 218.141 194.671] +/A << /S /GoTo /D (group__avr__string_g8f49550cc1e16fff2d707f91667eb80c) >> +>> endobj +5569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 170.815 216.946 181.719] +/A << /S /GoTo /D (group__avr__string_gea3f5ad280b6d689b5f9937ef6f0d805) >> +>> endobj +5570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 158.238 223.85 168.768] +/A << /S /GoTo /D (group__avr__string_ge240697c78aee7b9c47cb2c9452526ea) >> +>> endobj +5571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 145.286 208.358 155.817] +/A << /S /GoTo /D (group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) >> +>> endobj +5572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 132.335 209.464 142.865] +/A << /S /GoTo /D (group__avr__string_g4a03589020c79fa0b93673634bef711b) >> +>> endobj +5573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 119.383 222.196 129.914] +/A << /S /GoTo /D (group__avr__string_g5f625e090454a8cfbbfaafba26b5bf3b) >> +>> endobj +5580 0 obj << +/D [5578 0 R /XYZ 132.768 705.06 null] +>> endobj +5581 0 obj << +/D [5578 0 R /XYZ 133.768 667.198 null] +>> endobj +5399 0 obj << +/D [5578 0 R /XYZ 218.988 639.611 null] +>> endobj +5582 0 obj << +/D [5578 0 R /XYZ 133.768 623.945 null] +>> endobj +5583 0 obj << +/D [5578 0 R /XYZ 222.077 589.792 null] +>> endobj +741 0 obj << +/D [5578 0 R /XYZ 133.768 574.126 null] +>> endobj +745 0 obj << +/D [5578 0 R /XYZ 133.768 546.453 null] +>> endobj +5584 0 obj << +/D [5578 0 R /XYZ 133.768 387.115 null] +>> endobj +5585 0 obj << +/D [5578 0 R /XYZ 133.768 332.255 null] +>> endobj +5577 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F33 2429 0 R /F20 1882 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5628 0 obj << +/Length 1614 +/Filter /FlateDecode +>> +stream +xÚÕZÝ›8Ï_t/Dj\`cV§“zj·RŸî¶¹§¶ŠXp®r@v»÷×ß›„äÈ6Û–>ùk<Ïü<36`gå`çíä÷ùäå5N€Å|éÆ/¤#ŽD@œyì|p)E„L?Íß½¼&¤EÌ(b~œjª_ Å;ùÞž ¬Š$[M wѺ››/ECüÛ׸]MgŒ`÷}Í´œÎ(¡˜»$zâäÍ|òÏ„-vHkS˜;Ñfòávb|ç`ÄéÜפ‡y@JôÄÔy?ùs‚­¦ð‘Æp[c#Š}GpQÆp)åµÍ<çÃŒcì&Ye»µ\ÅÊ +xSPŽµŽ¢Íötªùˆ9Žò¬¬¦u3Z‡…U¢×’&ð¬ÑÑGŒ™Õc[d’44/,¿¯²ö$",ÂD&†åbñjJqçó›ÅݼY,Ž·8#ð&<¨P$©|\‹g¤ öNìÐõ‰Ì>ò|Úi´°ÎáŒz80}4O¿—æO4 Èf>±ö×p™ü«= Zn³§cg Ù×bQöÖš€ÃîûøêoUCp+A«l°wø Ÿ!yàÖ½%éñ×S=1–Fa5ð(‚M‚À‰´¬Ín;Ï%E8àϬ³'¹0)jü³è̓ þÌzS—¸3ÌÃÞ· +Ò ÉGáiR ®ûbh€”ˆKˆ‹é°º ñx¿ Ö'ÙÊ¢°Te\„èÀ?ÚCÓ]>äÖº²áŸƒ …¼þgq\êÈ{麆/Â/¦ˆ{ÞH×'X`$<1?)úr ÿç±DŒÓg¾Ùeá×Èï6ÂãÛö¶ø|AÚï#üð =p£Hm‡]À Äã°E­‹ lªò ~bÄ@ðr*ú¥PßZajJ¹{74‘ô‘”¾†H ÷T¨)Õvx&-Ž3é3ZÐ5ö£ž›|Äúäžâ²×&, >Ð}ÛצáÎΗ(À#mu¯Éa/Ï^ú”[¸€dn{c0@•î7ž–öÓºw±Ë H,Ê] }ààbŠ ¨_<ÊÂ]ƒ Ž ]6ƒôKãH¿vÛââ@Ú¶'_&gúñOHæÌEÊÃwSD§0 +»­`š)c˜×y´Û¨¬ +«$¯£¬0³0/8šŒˆþK|4q}ý^ïìKK¢¶ÔXG $¨ý 9_'¥™¸ £"ŸZÍ¿ØöWkuè-<ê%R6Í2Ye‰&ˆÂvÒy›4ãªjrÒ®I¶ÝÙ±;ô…éN¡fßµ¤Þ‘¤’í%•Ômºîô×cU<˜V™L‰»IR°mÝ®r[֋´å.‹ýžÉ,€|©åY–z«ÿG¸!QzÝ/:ZÆÕ:¬ÌZ‰í±™¬ÙYX©²¶‘HwUÛÜÌ0¯\õö!wàÖPQ¾Ù&©šUÉFé3Ì·ÔÛbÂ,e¹Îwi¬ë¾›géƒé½U¦ ·Û4Q±iÔ²6W3Rûœ0³,Íþ¶…*KPWi:ï× +ôkAqï“4Õ5ì*ÞEÊôÖkBš¡ÖBÐ úPéMgÌ£î+-jdN@=š/ÍœÊ`z ìùâYõ 1ˆ^¶P†.ËÏ(¸‘‡Q¡%?QÑèR³©+…"0_¬âZ~Ï ³Ø m’ÕzOUîRËT‚zS¬w+eÂM¾k$€=·¥”±=8+•©£#`ž: Œí†)G˜Ùß6nTµ+´²²òêtîÑ Õß…%Âœ6‡P=rf¹w?&ð÷vÒB‹QÛ æhBe›—‰5<׆oœPÝ88! îrB@eœTŒÂÚ Y®H¸×¯tyy%7ó”Øz¯¥)³|ïð¬Û4p3®™_RæÏ;ç8Oœfã™[*AqÆ[y6ÌxíHÁlœ¸n|Þ0Ãöa&iÄ[.ËC°ÏÐ/¯Aw­äòµÃ‹å]˜vH yñ½Žð‰Ã§‡°tF-ËÑžF¶ö€ïüÓ(€#ņügÔü‰wTrÈÖŸX2@LXľm|©•v¾ÞYk«ÈT<‹!|EÙ‘¦E1¶µ:â5ëÈUL!LÌÒäÖr¸}hôåauò. [þ¯KÞ +endstream +endobj +5627 0 obj << +/Type /Page +/Contents 5628 0 R +/Resources 5626 0 R +/MediaBox [0 0 612 792] +/Parent 5586 0 R +/Annots [ 5574 0 R 5575 0 R 5576 0 R 5604 0 R 5605 0 R 5606 0 R 5607 0 R 5608 0 R 5609 0 R 5610 0 R 5611 0 R 5612 0 R 5613 0 R 5614 0 R 5615 0 R 5616 0 R 5617 0 R 5618 0 R 5619 0 R 5620 0 R 5621 0 R 5622 0 R 5623 0 R 5624 0 R ] +>> endobj +5574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 654.082 199.8 664.986] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +5575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 641.254 211.028 652.158] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +5576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 628.427 213.628 639.33] +/A << /S /GoTo /D (group__avr__string_g53e212c1732d63bc80f649e542aff120) >> +>> endobj +5604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 615.599 211.686 626.503] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +5605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 603.144 209.752 613.675] +/A << /S /GoTo /D (group__avr__string_g63e609bfa0d354dcd7e35b297c2e6fdd) >> +>> endobj +5606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 589.943 212.423 600.847] +/A << /S /GoTo /D (group__avr__string_g64bc119cf084d1ecfd95098994597f12) >> +>> endobj +5607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 577.489 207.541 588.019] +/A << /S /GoTo /D (group__avr__string_g7fd4936b86eb6b87e98587044c562715) >> +>> endobj +5608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 564.661 209.922 575.191] +/A << /S /GoTo /D (group__avr__string_g119342b34031ba4ee28f4e38a22c5f0d) >> +>> endobj +5609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 551.459 221.927 562.363] +/A << /S /GoTo /D (group__avr__string_g60b6f90e97d0574c5f5725d9db15cd9d) >> +>> endobj +5610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 539.005 213.339 549.536] +/A << /S /GoTo /D (group__avr__string_gfa4a8701698b766f40180c735726cfe7) >> +>> endobj +5611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 525.804 204.781 536.708] +/A << /S /GoTo /D (group__avr__string_g36cc0ab27fbcc70615214170ae79fbf7) >> +>> endobj +5612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 512.976 216.01 523.88] +/A << /S /GoTo /D (group__avr__string_g81577c743915e4fb8759ef9081f10838) >> +>> endobj +5613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 500.522 212.522 511.052] +/A << /S /GoTo /D (group__avr__string_g3d3e512a095039a7e2f86859537d761b) >> +>> endobj +5614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 487.32 215.003 498.224] +/A << /S /GoTo /D (group__avr__string_g386481b53df5f2437a1da78b400b6440) >> +>> endobj +5615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 474.866 212.782 485.396] +/A << /S /GoTo /D (group__avr__string_g84c8b3489ec089d8be4c30f42104828b) >> +>> endobj +5616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 462.038 209.215 472.568] +/A << /S /GoTo /D (group__avr__string_gcfdb3ab0c1f988f86d04d706d8e0ce3f) >> +>> endobj +5617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 448.837 210.022 459.741] +/A << /S /GoTo /D (group__avr__string_gff88adec2ad0446259766197ec3863de) >> +>> endobj +5618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 436.009 209.205 446.913] +/A << /S /GoTo /D (group__avr__string_gcbc51d76d5f8f4cacf27238494d866d8) >> +>> endobj +5619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 423.554 206.704 434.085] +/A << /S /GoTo /D (group__avr__string_g6a441da9211eb85881d99c60b1003552) >> +>> endobj +5620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 410.727 209.474 421.257] +/A << /S /GoTo /D (group__avr__string_g6ace85338eafe22a0ff52c00eb9779b8) >> +>> endobj +5621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 397.899 217.773 408.429] +/A << /S /GoTo /D (group__avr__string_gc0dbc25e8b202114031a4aa2a7c5177b) >> +>> endobj +5622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 384.697 210.022 395.601] +/A << /S /GoTo /D (group__avr__string_ga50fa5cd42285f7c3980a3b0eafe77b5) >> +>> endobj +5623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.912 293.016 321.801 303.92] +/A << /S /GoTo /D (group__avr__string_gb978764fd2814cd14f9f1a3620aa4ca2) >> +>> endobj +5624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.944 202.112 199.17 231.178] +/A << /S /GoTo /D (group__avr__string_gedb0e7bb7333d6122472acddb5df20ac) >> +>> endobj +5629 0 obj << +/D [5627 0 R /XYZ 132.768 705.06 null] +>> endobj +749 0 obj << +/D [5627 0 R /XYZ 133.768 371.234 null] +>> endobj +5587 0 obj << +/D [5627 0 R /XYZ 133.768 348.923 null] +>> endobj +5630 0 obj << +/D [5627 0 R /XYZ 133.768 348.923 null] +>> endobj +753 0 obj << +/D [5627 0 R /XYZ 133.768 176.694 null] +>> endobj +5588 0 obj << +/D [5627 0 R /XYZ 133.768 154.382 null] +>> endobj +5631 0 obj << +/D [5627 0 R /XYZ 133.768 154.382 null] +>> endobj +5626 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5662 0 obj << +/Length 1390 +/Filter /FlateDecode +>> +stream +xÚíXKoã6¾ûWè(5—½=´ÛX,èÆ=e"S¶[r%9»é¯ß>dIQœ¤h€z0D‡Ã™o^¤©·ñ¨wµøuµxwÉcOÃgUxL’Ä©ˈĒy«µwãsN ¾®>¼»dlÀ,8‰IšëgÃ1—$ìÚ®)«MÀ"Ÿlç¥%iì˜yNÚE°Œú×Zh,9ã4ò™Lpãâ÷Õâ¯^ê±QŒHyù~qó•zkXüàQ"dê}Ó¬{O„ÀÊpãλ^ü± )z1Ð;á^ƒ$å>«îØ ¥U{¡õqûa3nNá4o q³uµUvªÞl¬ Ÿ¯Þ X,ý"à‘_´_hDáÇFâ‘…S¿8VyWÖU 74¨LáRâ5õP·¥år]ªYÂJyÓv†ŠgíTæ¦m¹©JdȳªÓ:è-w¥[W¡”ÕI*¨ *.¸ Š©ßp`ݬÁyõïÑ®l÷“™ÕùRó) ó­jó…³Z3Êep*11j’ÕY¯uîeXáVÔ œ12õÜÐíKë:yA©íùTwêµî¾Ä(ÑÆÆÒW8ù~hTÛ‚¨UœxYg–©@Êa±3v ¹sÔý¡Ü)CìʽB(¡¹Ëµ²g[LB+ùL¨!ïíååõ4¾pã>Ë›zäÑÈXS‚^*[“™ä]2H_z˪I” * „KF)ŒuIQ´;3Ò±WƒÊZ$4€“2Âû‚p{{ŸífÆ3Dâ¸\ÊL<³d\'Z͘[s®³½¤¬=ƒê{6)}Ô…‹ê¬rÁ°Ôß÷Ê^Û@ï.ˆÁø9@z(=LFc(Å”S,{Ás¨ò¤œýK°†1DGja ÿc°þ#€C ð½®^åÚ¶²p°3NˆL£6TÌv³Ú†åÙ«}žNn:'=&i$Kyq$}­  >Ö€ÅP‡`Uº´¸‚ü¤ +ô¼˜½F…¶Éç4L“p¢Fîciœ‘(í­žÉYqmù·º“ˆ·‚H8îªæ%&‚?å*z(Å8Ê« õ)8¸nú–•‘¾|¶œíýœ'6L´Ø§ú?çé ÿ㦼>” +› ¬èþ‰‚jÝK¸n/–Ф»‡Îð'~ÑÔûÀm 4ÀPÑ­FLݳ-çzýÈx3¨´ÜvõáPº„ü¶U6‘;×ÉómÖdy§šÑ]aܾ‹úX­Ï7mJ¤ŒÇMû­®j<¤/rW8¼®á¬¿®ñù™¡jH +m™ŠÀ1HE˜µ Xk†&zapŠ^˜˜è…+™0Ô;ÜÑc[ý`dRzmyk'Ælb`šŠér)×Eé2ßA"vï 9Ì8©U5›õ©@Ùg]¾ 0ë”®;ð"1ª‡IuiïZðž€ÇEÀüMåz•ÆS+°Ø·“šPT“!ð/®ßÑ¿´SùL¸9zh§Ã‡6LÀÍÈÑWn¤!àú«_Ù°ª‘×}ÉÆ38B?㺩½HÁÚë¶Î`:éëZM+rçÇ扊¼)Ñí÷£ªÎÜWzógÿ^‘±xÍŸ+îÏx"$"þý”J"œ‡¯T…±¡l;qÏóÕöhïUn¡}·Ó ..XjfœR;Òo‰SMAƒ›@$þrWÞY wÖà÷õ÷‡©rC“:½l +endstream +endobj +5661 0 obj << +/Type /Page +/Contents 5662 0 R +/Resources 5660 0 R +/MediaBox [0 0 612 792] +/Parent 5586 0 R +/Annots [ 5625 0 R 5652 0 R 5653 0 R 5654 0 R 5655 0 R 5656 0 R 5657 0 R 5658 0 R ] +>> endobj +5625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.16 639.128 188.049 668.194] +/A << /S /GoTo /D (group__avr__string_gb978764fd2814cd14f9f1a3620aa4ca2) >> +>> endobj +5652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.313 583.472 450.904 612.538] +/A << /S /GoTo /D (group__avr__string_gedb0e7bb7333d6122472acddb5df20ac) >> +>> endobj +5653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.189 511.735 187.078 522.639] +/A << /S /GoTo /D (group__avr__string_gb978764fd2814cd14f9f1a3620aa4ca2) >> +>> endobj +5654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.189 461.916 187.078 472.82] +/A << /S /GoTo /D (group__avr__string_gb978764fd2814cd14f9f1a3620aa4ca2) >> +>> endobj +5655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.53 394.473 197.792 405.377] +/A << /S /GoTo /D (group__avr__string_g8f2913a691990ae107e9687b8949b553) >> +>> endobj +5656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.37 338.816 215.632 367.882] +/A << /S /GoTo /D (group__avr__string_g8f2913a691990ae107e9687b8949b553) >> +>> endobj +5657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.183 249.455 192.458 260.359] +/A << /S /GoTo /D (group__avr__string_g8d270897496bfff9daf51edd64d712d0) >> +>> endobj +5658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.856 181.843 211.131 210.909] +/A << /S /GoTo /D (group__avr__string_g8d270897496bfff9daf51edd64d712d0) >> +>> endobj +5663 0 obj << +/D [5661 0 R /XYZ 132.768 705.06 null] +>> endobj +5589 0 obj << +/D [5661 0 R /XYZ 133.768 564.608 null] +>> endobj +5664 0 obj << +/D [5661 0 R /XYZ 133.768 550.037 null] +>> endobj +5590 0 obj << +/D [5661 0 R /XYZ 133.768 512.731 null] +>> endobj +5665 0 obj << +/D [5661 0 R /XYZ 133.768 498.161 null] +>> endobj +5591 0 obj << +/D [5661 0 R /XYZ 133.768 462.912 null] +>> endobj +5666 0 obj << +/D [5661 0 R /XYZ 133.768 448.342 null] +>> endobj +5592 0 obj << +/D [5661 0 R /XYZ 133.768 319.952 null] +>> endobj +5667 0 obj << +/D [5661 0 R /XYZ 133.768 305.382 null] +>> endobj +5593 0 obj << +/D [5661 0 R /XYZ 133.768 160.922 null] +>> endobj +5660 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F55 3943 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5677 0 obj << +/Length 1590 +/Filter /FlateDecode +>> +stream +xÚÍËŽÛ6ðî¯ÐÑÖ ¢D-ŠÒ6‹A€$zØ…,˶[t$9­óõrHYòʯK[@€†Ãáp^Ϋ€O£×³Ñ«7< +’Dð›-&‰#D‰$Q‚Ù"xsN›|½}õ†±±àDÄ p²T?!E]Lâ°%¨›ª(W&Çd=Ì-V‘'þù·ÇÉT0:þd™Ö“)gœÊ1K”Y8úm6ú6b@KÖQŠ‘„Ê ÛŽž¿Ò`“oJD¢‚¿,é6!2³p|}Ñë–’1áBv,E‰&SF)e’I:ÞæÛl»Cø •4Óeí¦¾O@ ],œIÂî’ŽÆ_(H$eÏ*aÜÒÔlÀnŠ({Š‡ÉT‚d· Á'»K~£uñ#ÿ³`gì*…§ÞäåCr‰Ža¤W›vˆ¦\+S“þ–ø½Ý¥UÞºEW„™ÖÄð¾½%³unƒ +£©Z¹°úø4 +ž!¹ó®ñ«¥ G±Ü—YSèrbGÊPã¨öûòÊxÅ Œâ˜O©—æÏŽ+¼ü¶ò#Q€¨ráü¨œ³º£@Em%4ˆ¢Æÿ.¯–ºÚæ îks‚,ëbUú‰lViX’UÑ–­!N<8¥$I"ðä8ÔVœy³¯L~(ëÇÓµ]Ç2g4Q„J~ƒ‹Žðœ‹x˜t\dè+#Ki¬S©·JÙäF¾Uî”Ýäµ#iÖiù€ÈüÛ>Ý ØèœÖnÁ +œÔøÕf NÿÈ+ÝsË'…q8—Îá<ê„`1DëCp6DeCÆEã¥Þ— F„!èVïrÐuóß>ùæ0‰äØM7ÚqÍý6µcâ”<Éñ6m²µÅI«¤ÁÍó!]†T·PîÓ¢S ë¦j6²–øwÁ|6²\xt#ë½nò›CJàš×F.ë}å £³Å4ºE­6Ýo„‹ÿ©ù©1‹p8/Üüwcx8né|ã÷(Ê̽G`›Xå-ßLWx®»eíæ–C6Gföà:+{³Ÿ=¾Õ)f±Ï}0»'Åñ»ýð‡ ³Ï8d’›\’Õ™­m^ +£îa…b§n1ÝÂQUÛÜÖ`k{Á-›f­÷«5®1GÌ¡©ÐåæàVâ=P:×ûé!L‚F 0×€Ùm(¨0Ì}Jíç™DÙ8/Ì¡ëtybrp¸Í-Ã…= ¡îª_ƒÄ®¹p½G1I”|y½ŸT]ëݤÑÝáXÇ\bÎI(¢{j‡˜vè²=Ö}÷×/÷PU6\o°8ü/*(Oi|ZÁìŒÆ¾l®dî/dx¢Ð½–ùÙ›2éÝ”°&ӻ¦h˜Á´ HŸ¶\Vz‹³­Œ€52"ÖXÜ¢l°£Ž,iÉ” ŽËEÌ‹bΡS‡Ãì`rœÉ?xñU›tG°“ø\_/!¶¥g-d +…åÉåvF¶…>#Ñÿ¬rº/²Ú±z:FèN›ò©ê'¶Ö«3[ÜÏlê†Ì¦ˆPâjfSq'±ÁgB­ß %·IB"„¼š_ŽÛœíÏ¢Nr‰.&IXw’ËGk=qÂò6•dH¤÷¨tKÇwQ%ÓÓP†ýKTãçT ¯%N>6ûÉ[Ú8ª\ œmãhÜmã€ÞT¬åÂÔÆÔU‚[7iÕ Îã€rsq§|¬Î²=”s¶ò¤®÷s÷fb5¢÷Zb.ÂNèvI(k/Nâ–„§Æ^5ë}x ÛtÃmh#‘¶ÏEy%ù l'$RìÅ)éi’0”m|£0,¸P„©¡sÒ\¤ÝõrÖå`.Êâ'ï +y5¢0js®¤øks®Ð¢NØX;І̱Ÿ-ÊÒÖ´eÃPª#M†¦ÍS¶Í{iî“ +øýçwï®Êé-y øÞ#D{qÛ&Ö]׿/¤`²WÌî W·‹éÁN¾ÕöÝcu9|Ñ:ƒ±6øZ™@̈{Þ*ýeD’X¨î¥JˆˆœgžòÒ<ÐøÎÏë6[»Nñ×> endobj +5659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.372 618.834 197.08 629.737] +/A << /S /GoTo /D (group__avr__string_g4cd54dc9109f0d3da49d9c35e6441b61) >> +>> endobj +5668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.464 563.177 214.172 592.243] +/A << /S /GoTo /D (group__avr__string_g4cd54dc9109f0d3da49d9c35e6441b61) >> +>> endobj +5669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.237 348.645 194.076 359.549] +/A << /S /GoTo /D (group__avr__string_g5f60008005ea7557430149926cf583d7) >> +>> endobj +5670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.413 336.689 347.804 347.593] +/A << /S /GoTo /D (group__avr__string_g8efa99bafd35937d045832774bf57486) >> +>> endobj +5671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 292.988 211.307 322.054] +/A << /S /GoTo /D (group__avr__string_g5f60008005ea7557430149926cf583d7) >> +>> endobj +5672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.328 221.251 199.805 232.155] +/A << /S /GoTo /D (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc) >> +>> endobj +5673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.545 165.595 218.023 194.66] +/A << /S /GoTo /D (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc) >> +>> endobj +5678 0 obj << +/D [5676 0 R /XYZ 132.768 705.06 null] +>> endobj +5679 0 obj << +/D [5676 0 R /XYZ 133.768 667.198 null] +>> endobj +5594 0 obj << +/D [5676 0 R /XYZ 133.768 417.084 null] +>> endobj +5680 0 obj << +/D [5676 0 R /XYZ 133.768 402.514 null] +>> endobj +5595 0 obj << +/D [5676 0 R /XYZ 133.768 284.022 null] +>> endobj +5681 0 obj << +/D [5676 0 R /XYZ 133.768 269.451 null] +>> endobj +5596 0 obj << +/D [5676 0 R /XYZ 133.768 144.673 null] +>> endobj +5675 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5695 0 obj << +/Length 1652 +/Filter /FlateDecode +>> +stream +xÚ½X[¯Ó8~﯈xj%j|‰íähµÒ.» ­Ê‹Viê¶mR’8üú±49Mo,ðÇÛsýæsh° +hp?ú}6zö‚« &±‚Çl0!ˆVQ bITÌ‚Ù"x7æœ06y?{ùìcaÁ‰Ð1ìd¥~q½í4Ña+PÕe–¯&LŽÉzx7©Fø×K»ÝM¦‚Ññ»i5™rÆ©³8Æ…£?g£#²4`£‰© ÒíèÝ{,àãË€GÁg+º D¢ n‚7£¿Gô²§¤&\ÈŽ§ˆ ñdÊ(¥ãOP±ÈÞÜ°³^iG²±æJÅ Å¡æÌÖl·nhw5`²¤°PÒs§ÀPëãS¤É9íMy¤Iy7eš(:áçÅ-~pÖCdŠÒ“Ò$÷}{KfkcSÓåd¹òÉùú~¼›ò6ñ•èL96ÙF§6½èrŸ§uVäû–»ÌTnŒ–ÚÁü¡vsl¼,‹í¤9Â):EÝýmuqN 3ã`”’TËýPùéÄÏu¬+7ÉŽôL{œ)%q¬Àý’°ÈôÚÔû—çÕÝãµÝ˜±ŠtŒ gù5Þ—×{_ö¼o%*•{S÷ØY^›Ò½X¯ÊŽÿ[ +Y¢¡d¦!#Šñ>’0zJ4‡¡¾JÀÑ8]—¹®œc +(ý r¯ ìÆ‘Q üŸ’Í÷A‡ð» ƒf„Fü†R¡²þߟJ2ÊN’ႬrÏMöÁƒ?ÊÔWœsöÕ*†!ù¿¤fW»óêuâG™V&ÔÌ1^¥y’~˜ö`Á7ÃϨiR.°4"Ý Œj‹00ù Šåá‹u²ÝHPh±‡œ;„« y·ájÐötµè²µÏùÃÀ9%TgíéS2(“<²aY”g-GOM9€Šð¾Ã@.„°¼cv¿ÉæéSW‘÷¯Þº‹Pmò +¢FŽÂz +EC1ñí(*®Iì(¼˜Ø ÒIlxkÑSDÑçZôÄŒ˜}bÒØ#’:]#‘´K0Ðn¾(Bʵ\höêí_ EX´‘Ï–‡m°FGã~°ÒuR&i ò‹ÂøD‹4Ýû¯™ïuÓ)WÙ„7­&?C"ζ +ö¨U°+[…º±UT¦¾ŠlÊÚUôƒÈæOm ߇8Â]B0å[ƒO›ÙfsïÏY½îÛ‹“Üû“üvN)Xì£w²tÊä!h|³©Ü‹+9?["7À–aâ¬ÇX"öuVD­q8é$ŽZ(¶²…{±&ŽÚH뛶zŽ½ÓÐ(ªds=¯Ô?…Wž‰Àÿ “õ)Ö} Û| !ÜCHÖ8.í–(&•I·»A²ˆH8€Lô2uSd +G$’úôÍóÄé [Þtñ­ø¥ÃO:^qëúób»ƒhøXYFP´.õ¿,°3¬òÂþqÆ€›¿¡ÐiŒ›ú,vê;¼¥NÅʽùÚí(ë÷µÊ´V@Á˜EG±ëŒ$T´Hžä‹!vQPò( +½mr@ð°ã¹ƒöhxÁ”×’š-ú¨rÀ’¦W×Á‰ø±¨!\Ž\ +gØ g9ðSâ'8PÇ•åST^¸½¥ý8ÈÇ=´N7[ø¹Â/X¤86æ× ôWSbÂÄÙÓqŒ\’Bq)U"ÅZV¹Ý–Å>_€B!À¾jgÀÞ WHq±ÙÀEäa¢Â±•pìWÍ{z[aämÅm!Ë#ýBkkgáÁf¿vÀ¦i¨€†}?\‘¾Hð•ÿé§b‹dà}“§ÆMØk„ò m'Ê…ñoûÊ^eTì¯0'ºP +íŽÃ‹ž + —!\ûåù†DŠ½ÙÑn›guæøþSƒn²}ßíçþ±£ÏCz„1Ücøe°P°ðÍr(†p-R\_²* UÏ*Ï@2ˆ‹ F§)Ï=ª> endobj +5674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.656 618.834 201.047 629.737] +/A << /S /GoTo /D (group__avr__string_g8efa99bafd35937d045832774bf57486) >> +>> endobj +5682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 563.64 218.859 592.705] +/A << /S /GoTo /D (group__avr__string_g8efa99bafd35937d045832774bf57486) >> +>> endobj +5683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.708 504.404 196.3 515.308] +/A << /S /GoTo /D (group__avr__string_g9ce73bf9cc6fe7fc3dc88b3dce7ed33f) >> +>> endobj +5684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.397 504.404 319.671 515.308] +/A << /S /GoTo /D (group__avr__string_g8d270897496bfff9daf51edd64d712d0) >> +>> endobj +5685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.805 437.628 214.397 466.694] +/A << /S /GoTo /D (group__avr__string_g9ce73bf9cc6fe7fc3dc88b3dce7ed33f) >> +>> endobj +5686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.44 348.813 191.06 359.717] +/A << /S /GoTo /D (group__avr__string_g8f49550cc1e16fff2d707f91667eb80c) >> +>> endobj +5687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 293.619 208.089 322.685] +/A << /S /GoTo /D (group__avr__string_g8f49550cc1e16fff2d707f91667eb80c) >> +>> endobj +5688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.344 216.759 204.234 227.663] +/A << /S /GoTo /D (group__avr__string_gea3f5ad280b6d689b5f9937ef6f0d805) >> +>> endobj +5689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.461 163.622 222.351 192.688] +/A << /S /GoTo /D (group__avr__string_gea3f5ad280b6d689b5f9937ef6f0d805) >> +>> endobj +5690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [327.891 139.712 380.782 150.616] +/A << /S /GoTo /D (group__avr__string_gea3f5ad280b6d689b5f9937ef6f0d805) >> +>> endobj +5696 0 obj << +/D [5694 0 R /XYZ 132.768 705.06 null] +>> endobj +5697 0 obj << +/D [5694 0 R /XYZ 133.768 667.198 null] +>> endobj +5597 0 obj << +/D [5694 0 R /XYZ 133.768 555.136 null] +>> endobj +5698 0 obj << +/D [5694 0 R /XYZ 133.768 540.649 null] +>> endobj +5598 0 obj << +/D [5694 0 R /XYZ 133.768 417.169 null] +>> endobj +5699 0 obj << +/D [5694 0 R /XYZ 133.768 402.682 null] +>> endobj +5599 0 obj << +/D [5694 0 R /XYZ 133.768 285.115 null] +>> endobj +5700 0 obj << +/D [5694 0 R /XYZ 133.768 270.628 null] +>> endobj +5600 0 obj << +/D [5694 0 R /XYZ 133.768 119.253 null] +>> endobj +5693 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5711 0 obj << +/Length 1842 +/Filter /FlateDecode +>> +stream +xÚ½YKsÛ6¾ëWpr 5µ<ôtzè#n3™Ì4qNi4EIœH¤KQvÜ_ß]$A™²¤LœƒM< ìëÛDƒe@ƒ«É¯×“W¯¹ +’(ø\/&‰•T"‰JXp=>…œƦŸ¯ß¼z͘G,8qœ ÕÏ–bÀ.&qÔl›º(—S&C²çkÕÿrŒÛåt& ?¦ÛéŒ3NeÈ)Å…“?®'ÿNÐÒ€yB1’Pd›É§Ï4˜Ã䛀‘èàÞn)Ã…ëàÃäï =®).¤§)"Ó£”†Ù*­¬‘/ID˜â­(ÿP*FÅbî)oÊt˜¥Û›3.)¬“4«Êmc»öJ™m%åÁ­ØÈa4Ñ2n).¦3‰ÂÝ[ +’ôËNڜۤnH=šWŒð$ f,&ŠG–øz•°ŽP/G¼¿šŸf<Ò¨W§SÔfË»³»¡ŠÃŮ̚¢*§f ÈÁË9úL5°C7Z}Àh•e»ºÎËÌMV ûuÔq¸Ýݸx0¢á‰ÂUD4H°¯_\‘ˆwZ+Ê}ö‡xKJècK8CÈÎaR3r9åÚY§Ü” ìÚïºø2… |Bç‚Fx¸ÃúFç,_³ü¶™šEÍ*mÜfíwYVuîvF#ZBT5Ž¤ëÛUz“7EfûÛ‡ÍMµn\ZâmžÖÙ +Ue†•ñb8Ê@P«VpóÎjÄ¢Êpµ.n² ;õî£mØÓ7y¹¯!ÄÜóï%I¢À…P#a÷|Ÿ7»¹”ÛËýµsi,8®†('8½Ðì§GªÞé±WãyJTŸ¦ajÇn«¢lòÚvšÊ}QYظ1JXeiõ CÆ6>M§PP`ÄDXÕ#>»gwß¾ñ[8"ºüQàN2r;A£8Ó5 ß²jlcQíÊ9˜Uqþµ9¾NÄÓQ)I¤»ð2êqûíÀ7u§ñŽR¹£þ—׎h—ËfuauÝXk"®)¢Ù^ zÈn×éñé• =;ð÷ýª‰( 4áRíå¼èÙr^ã廉†bž•åæàþ#`ÊË–Ï™çêllwÐeÍt‚©£a¦û­*AQy ö¨Í=Bqå€Ë–I¤C7\)OÊ‘ÜÂEs8?òA~äaz{›»ü(Ú”ÄÄ-;ãûØÆ°0ߖʘÅ,ôÉ*D’;ü—×÷uÑôëÛu/G¬"(TŒ½G—#ºŒH¢YK@_Z^ÆÈœ†3—ûÀ*1 Ë îÒÌçhðÀÜA €ðvÄd}@¡0Cð$LíœDêÒR¥s£+ääåõ¦CZ)a|L8Nñûzù4ဠ+—NYhÎ/¡ÇÌǘù-Ìu55ô7éƒ="¥ÑgPQªx¨ßBëôÖåC+­¤}uöí\Ò¶7»vt•¢æ-#—JËj·\¹5·iæ†1UYC-°[7äG$Z~JäXŸŠc¿­òì§K²FØjTèN‘¾RQÕ£(Áƒ/£¸|._uk‰5œG}oDu€ +áÆ jw¿¼K×ßÐ ™ aöm•uØl‚0ë¬Z”¾õ† }ÊEF0— âƒõóAéûz¦R;Ö×sÐi*×4E4º;.òï88iêÆ{ê^ÊÇõˆ€ LÂÄcmÓ¡Eh¤½KŽÅc!‚*ÑÝ|DÐcg„xL!ö®>p¿µÚòϼÆí¾è„|Q¸ÉSÀ8wóÐänxf‡à˜ÛÜŽ´æpÄóÊ›‚lú®¿¸^Ѭ,Á}1w{Ä-f¸ÙØå¥;àö4h¤„kõ¼Ð(ÔQ +Ï_•ï¯ÐIí§÷Wè˜ +[µÎ +MÚd«|n;^ÄawôžÁ¡À–}…øž!ùðžávµÞI!YrÀ.ÞÂ[[›df.çbµzF¬F«ïÖg=4A ÎÎ{i9\²bù x=þøF"Žƒ5%šêsÞDìÜ4t0¹ å'wXb¬£ÇIú žâî¿à +ûB‚3ÅØý•Ó„()öõEïlBtÉÍ7vNŠÒ “:Qʱ§¥„ĉ޷­Ïp;Öžm¹HÚ:™º}¼K,XGã3«páäà¤ÊlãÜ× £-©š=¢¼-P«Ñ+¿„HÓ牄5Y +ü»ê4-ÇŸá„<4p©d¬ÏF](~'.„ ŽS ++~BÀ¨Á=z}5¬L‰‚ŸÞæÊÝU{ „FùØéA7¢Æ4Ê¥ÌÃÜžzûûþ¹A°'ýI“Hi²hArr1΀¤ýkÔO ßu>z Œ‰æÌg¹EõØl´ØâôlÕÙoô÷–ÜDœókKû+‹‚ Úÿ•E'D(g‘«¼Ì!ÄòVÓ®x¾^ílã÷<³È~½äâ’iÛ㔺ÖbÊC˜Ëtîê)àРëµ´cY}}XZíú"ÿòd½‡ +endstream +endobj +5710 0 obj << +/Type /Page +/Contents 5711 0 R +/Resources 5709 0 R +/MediaBox [0 0 612 792] +/Parent 5586 0 R +/Annots [ 5691 0 R 5692 0 R 5701 0 R 5702 0 R 5703 0 R 5704 0 R 5705 0 R 5706 0 R 5707 0 R 5708 0 R ] +>> endobj +5691 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.731 636.458 196.428 647.362] +/A << /S /GoTo /D (group__avr__string_ge240697c78aee7b9c47cb2c9452526ea) >> +>> endobj +5692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.083 624.503 209.636 635.407] +/A << /S /GoTo /D (group__avr__string_g6a441da9211eb85881d99c60b1003552) >> +>> endobj +5701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.772 572.152 215.47 601.218] +/A << /S /GoTo /D (group__avr__string_ge240697c78aee7b9c47cb2c9452526ea) >> +>> endobj +5702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.677 474.403 180.883 486.359] +/A << /S /GoTo /D (group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) >> +>> endobj +5703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 410.432 198.674 439.497] +/A << /S /GoTo /D (group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) >> +>> endobj +5704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.378 336.927 182.69 347.831] +/A << /S /GoTo /D (group__avr__string_g4a03589020c79fa0b93673634bef711b) >> +>> endobj +5705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.594 257.054 200.906 286.12] +/A << /S /GoTo /D (group__avr__string_g4a03589020c79fa0b93673634bef711b) >> +>> endobj +5706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.621 189.219 194.665 200.123] +/A << /S /GoTo /D (group__avr__string_g5f625e090454a8cfbbfaafba26b5bf3b) >> +>> endobj +5707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.794 189.219 288.106 200.123] +/A << /S /GoTo /D (group__avr__string_g4a03589020c79fa0b93673634bef711b) >> +>> endobj +5708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.588 136.868 212.632 165.934] +/A << /S /GoTo /D (group__avr__string_g5f625e090454a8cfbbfaafba26b5bf3b) >> +>> endobj +5712 0 obj << +/D [5710 0 R /XYZ 132.768 705.06 null] +>> endobj +5713 0 obj << +/D [5710 0 R /XYZ 133.768 667.198 null] +>> endobj +5601 0 obj << +/D [5710 0 R /XYZ 133.768 544.584 null] +>> endobj +5714 0 obj << +/D [5710 0 R /XYZ 133.768 530.609 null] +>> endobj +5602 0 obj << +/D [5710 0 R /XYZ 133.768 404.771 null] +>> endobj +5715 0 obj << +/D [5710 0 R /XYZ 133.768 390.796 null] +>> endobj +5603 0 obj << +/D [5710 0 R /XYZ 133.768 241.496 null] +>> endobj +5716 0 obj << +/D [5710 0 R /XYZ 133.768 227.521 null] +>> endobj +3089 0 obj << +/D [5710 0 R /XYZ 133.768 119.253 null] +>> endobj +5709 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5731 0 obj << +/Length 1845 +/Filter /FlateDecode +>> +stream +xÚ½XKÛ6¾ûW½Äb†QE¶i‚æТ‰oIPÈ2×V£Wd©›Í¯ï IÉ’WkÇMÓ‹M‘CrÞß ©·ó¨÷rñÓzñì=ETë[ A¢0öB%I¨˜·Þzo—œÆü÷ëWÏ^06"œˆHÁI†ê{K19."Q0Ú&+w>“K²Ÿ?-ŠÃžø‡K§Ýø+Áèò9ôà¯8ãT.95Œ.~Y/>.ÐR„bDQé¥Åâí{êmañ•G‰P±wgH O@Êpcî½Yü± —5%#Â…iŠÂ"Å(¥Ë¬l5IQxŸÅË´¨í÷;*iZ•·œî“Æé$_Ä$`¢—ù¥ÂRI9ÑKñAËlFs1‰å Ú§þJk—o—‚(_u9¿t9ÈÝ3HG4+P!¡<òV,"!,ñÏUQ'¶L¶w>ػԉf'x=ÙµÞkãÖøÍÎyÁë— ïm¿ì€è¹ìì(n»2m³ªtê±lû3 YÑ„Û¼.”ÌC'f&A0$åvî˜ÄQô@Ñ“cÀ½åp ™vb£oÅÀ}•ÝòZ·]ƒZnNwO.Š!H@é1¡R|Ò.(]p1R:Ò7ÈKy°‰›„pÒÈßN7¾Ù“ëƒ#i÷I ž-¾Ô»$w³•›«;±ktÒö»qþ¬›jð%«F#Vv;c +iï¼=%ètœ 9àTUWn ; +¤;Ô¤õ¹\þéüÞåÒ-·•Ý²ÑÈžêÅô(摨HÚtï挘£GqÝÞqxË«\k%á²Æ0 “8ˆ§ŠÃìvÐeŠÑ"䲺µÿ6|p¢Ùjæ«;è­mîÏD/¬_ˆ^…Û«’ÖŽfÍÈÁ™Š/E&WKâqè5æØ2k3t5ÃW·q×ËûðJXá$PáTW_ ñ§C`Ù/ºœb‰ Òb@f0ºÇó]6Û¸÷u<{uR~7——ó»61=ÈG”“˜ƒ ˆ.œÀiìàô f!T'Õè×÷#8~BƒèÜjÖ‡ @§Çúå[¢p“Î]ÊŒ‚Ë8 v á)×uNWÉñ®G`3ÃöÈG¨F€£¦ê 1WLq™ˆÃq]!²©§Za}N!Rá§êš¬í£òÚ\Y§û2ƒJpö5"ȧó¨¯ꣾþ<é£uyU#B¦®k¤gøЃÉ‡àWUþ ºƒ@7á±TÄeD˜ ®i‹cÛ¡ZÁXŽ“lH“<írè/Lˆô¥=, ~c“Æ‹Ç¢f¶+´y'±äsJ^tj:}d`ÌÞí³Ô]o*ÜC{°€3DE'­ +Ü5Ø~- D;×·ica®gP]Š»‰ýÆlBׇ_Ø¢ããbÿO‡Î¥¼hL@LŽA,è +8ëŠ ~×ôÁâT™Ø8Ù·iìòÔ)ä#N!8%”Ÿó‰•#™&uçŠ-íÓ’êm 3†/åŠ0\qh6cpªÆ=þ|në4sϨà4÷™wËÊá„·I¯†Ü;‚ĺ6 $aTL…­“¦ºõ¨j?›‹Å4sú :°mwÕchL‰äÑò]Ê ,Š¡Ow Ô)óyWçYšôH÷µmåN¶@tÒ}’çUjó-~ºð¡˜oîݪ©ßa0tJ=Úô 0›µöß6tÔ;áÞí¶V_»Lo$ìéì«Ø±š¾ˆNÜ“f—ç'éÔ—§åûì[½‚&®y©ï_èCHð—£úü9tœ¿Ô¥n’¶/xúZz½ïìà¹Ní °ŒÞpqƒïøÅ)û +ˆKóØf={–ÆÑr•gwÂÆÊóêÓýÎ>ÛŒEþ”§XË +endstream +endobj +5730 0 obj << +/Type /Page +/Contents 5731 0 R +/Resources 5729 0 R +/MediaBox [0 0 612 792] +/Parent 5737 0 R +/Annots [ 5717 0 R 5718 0 R 5719 0 R 5720 0 R 5721 0 R 5722 0 R 5723 0 R 5724 0 R 5725 0 R ] +>> endobj +5717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 618.834 186.5 629.737] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +5718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.203 577.542 204.948 606.608] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +5719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.887 553.632 333.633 564.536] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +5720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.058 467.115 184.934 478.019] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +5721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 401.913 201.344 430.979] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +5722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [261.944 360.622 294.821 389.688] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +5723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.097 279.774 187.949 290.678] +/A << /S /GoTo /D (group__avr__string_g53e212c1732d63bc80f649e542aff120) >> +>> endobj +5724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.514 226.527 205.366 255.593] +/A << /S /GoTo /D (group__avr__string_g53e212c1732d63bc80f649e542aff120) >> +>> endobj +5725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.269 128.055 184.803 138.959] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +5732 0 obj << +/D [5730 0 R /XYZ 132.768 705.06 null] +>> endobj +5733 0 obj << +/D [5730 0 R /XYZ 133.768 667.198 null] +>> endobj +5632 0 obj << +/D [5730 0 R /XYZ 133.768 535.838 null] +>> endobj +5734 0 obj << +/D [5730 0 R /XYZ 133.768 521.701 null] +>> endobj +5633 0 obj << +/D [5730 0 R /XYZ 133.768 330.155 null] +>> endobj +5735 0 obj << +/D [5730 0 R /XYZ 133.768 316.019 null] +>> endobj +5634 0 obj << +/D [5730 0 R /XYZ 133.768 196.061 null] +>> endobj +5736 0 obj << +/D [5730 0 R /XYZ 133.768 181.924 null] +>> endobj +5729 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5749 0 obj << +/Length 1532 +/Filter /FlateDecode +>> +stream +xÚÍXYÛ6~÷¯Pž"¡ÃCÔ±h +äh ÒM\ô! +­,¯…È’«#éî¯ï I]ŽdoŠ´Íƒ¡9g>~3µ®-j]®ž¬WŸsߊHäÃc½µ˜$ðCË$ñ#f­7Ö;›s˜óaýòásÆFÊ‚D`Iiý¨5&æx½BÝTYqí0i“ݼµ ô;åŸÎY»p\Á¨ýV­—3N¥Í)Ç…«Ÿ×«?W t©ÅF‡b$¢ÒJö«w¨µÉ—%" +­ÏJuo T.Ì­·«_WÔDŠžˆøpË÷Á’ð´s¿;¾´ã +ÏZ€{ʧΠc!ìh¹ F¤ÔË×»Ô¬@÷«ksŽ7—+ëëÁ1!”›öðžJ +?6±®4<{ÛI“•…£ô“8ÏëS&={*e²lRÚMé(M¥7©6ÝìR=¼O÷eu£·eu4 îæ®Ú i0ë26XCãžN)žÞå’ÚmVZÊjý¬ÒúPuv•µ‘ª4Et©—¦³Ðù„ò•yb,Ps1¹…XØä8›c8¸&œŸútoÒ¦ÕX¨ï„„PÉ3H@ øV¡/E­_bý8”YÑ`¨ñ³¬žC½¢nóÆa¶ +¯Ù³—7iÝÇ hd¿ØžvõÂŽðÄEQ6:_Üð--Êöz§åº)«øú }òµ›N'útüPãs–çú0vZ~ýÛ«Ww‚ÿMhá fÄ ìº­Œ¤’å…v²K“fhgæ:oQþäpØ8oÍT¹ÕËš“èÂN£ 4Fèù³?:p“¿ôw7ƒ›3D0˜Ã ïbsïë6IÒtä¡é ˜@céÞß›©!.ƒ*Â<Ë"þ¡ÀA8s\F)ì—ݦ4=Œò$6/Šd)ÔõË;*Böõé=¥BkÁÙÆ5̃bat6u3ã"¸‚’Ñyà¸Õ€a0”7*® à­@%<«Qƒã(ÓÞyfP½Ì(Ú6:½T=à&þ`:3>jìÂöÛVñÞ>ºbvcLh†D½CœÌÞ¦<Ý¢ ZPn?F}•ºTGJ€\¦Uqe ÖS†ö`æ*Õ#IyÈÒMg+ÇP¨lÄ7µVDNÔª`fŸaÖÌŒ‰_Z×ý¾s xÞqCI—ZÀGêÌ®P0#aŽî÷Ež¸/äc ãpŠ°)‰"_6÷ø¿[¹9“¯,–æÙô¥§†ó¸Õz¥óƒ~üòⵚÊnVÄH=+²&‹s­7‰Ë#UÄ»ÍLјKp„/Ž[õ³yâTý_˜v~ÚE¼ÚU‹÷¦'ÿ2IÚªBÀcñèˆÅù‹nîÀâ’Èý¿,|·,ÎÎÓ8'.á„ŒŸ–$ +ýxÌÞ³ä=è É5{£ º 9ê?aL±7 +ª§AmEšJ-»PCó¥ˆç4ñ™9$>¾kâCéÊRÄÄ Ý³;“Sþ“¯a ƈì1øõl(©© > endobj +5726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.008 637.226 203.542 668.194] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +5727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.108 637.226 300.853 668.194] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.896 625.27 435.005 636.174] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +5738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.793 585.602 203.327 614.668] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +5739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.73 585.602 478.476 614.668] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +5740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.541 573.647 366.075 584.551] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +5741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [318.036 532.076 351.57 563.045] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +5742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.522 447.474 339.709 458.378] +/A << /S /GoTo /D (group__avr__string_gfa4a8701698b766f40180c735726cfe7) >> +>> endobj +5743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.124 384.642 201.099 413.334] +/A << /S /GoTo /D (group__avr__string_g63e609bfa0d354dcd7e35b297c2e6fdd) >> +>> endobj +5744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 248.417 204.114 277.482] +/A << /S /GoTo /D (group__avr__string_g64bc119cf084d1ecfd95098994597f12) >> +>> endobj +5745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.842 175.77 181.606 186.674] +/A << /S /GoTo /D (group__avr__string_g7fd4936b86eb6b87e98587044c562715) >> +>> endobj +5746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 124.186 199.232 152.878] +/A << /S /GoTo /D (group__avr__string_g7fd4936b86eb6b87e98587044c562715) >> +>> endobj +5750 0 obj << +/D [5748 0 R /XYZ 132.768 705.06 null] +>> endobj +5635 0 obj << +/D [5748 0 R /XYZ 133.768 515.187 null] +>> endobj +5751 0 obj << +/D [5748 0 R /XYZ 133.768 501.343 null] +>> endobj +5636 0 obj << +/D [5748 0 R /XYZ 133.768 368.098 null] +>> endobj +5752 0 obj << +/D [5748 0 R /XYZ 133.768 354.253 null] +>> endobj +3090 0 obj << +/D [5748 0 R /XYZ 133.768 243.483 null] +>> endobj +5753 0 obj << +/D [5748 0 R /XYZ 133.768 229.639 null] +>> endobj +5637 0 obj << +/D [5748 0 R /XYZ 133.768 119.253 null] +>> endobj +5747 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5768 0 obj << +/Length 1655 +/Filter /FlateDecode +>> +stream +xÚÅXKÛ6¾ûW9É@Íð!Jä¢(> ‡M|ê6(d[¶Ø’#ÉÝl~}gHJ¦lù±Û$=’èáp?Ϋ€oF?OG/_ó8ÐDÇð˜.&IbÄZ’X³`ºîCÎ cãÓ·/_3æ ND¢A“‘úÑJôÔ%$‰:º©òb5f2$ëam‰Š[៮i»O£á£´O8ãT†œ +œ8úm:ú4b Kæ9ň¦2˜oG÷i°€?ß”­‚#º D¢ 'n‚£?Fôz¤dB¸^¤ˆ <O¥4œ¯ÓÊùùžD„żuå/j­>q7J¸¼ÍCnJ +ò’žQ,‰Á¨ÅRžU<°² *‘%Ò%ŸSOf¢˜Ä KHÌ#+üKYŒ#þƒYΪÆڛڇ˿yoJûÜ”c.ÇÌy6OëŒàb°xOït™¼Ú„V+—Ù÷oFÁ=¤^˜øŒF§µ¹ËŸ‘ŠÂ徘79Øhæ<ä›}›Ÿ˜ ƒh6Ìé̆!c6<}³qº1{µ +ß›G' &ûÝÎtÊ7»u:Ëš|Þ¹ à”±u³›Î›¬ªm\î_Ù'!õ~t‘­2¸¾Ù þ^o)+{¤Ü…ÞŠÒel–u¢Å +•ù±<Ë„­ã¼"š kÿû¬ÙWhKQßÏõAÄì6p]*ù-™¶0º–iò2 _ÚSÔ=8îʼhZàµx´I +¨a2°g® ìʼn€ç1HG°b§Ç„1ßî¼}]usÈÓÀg #±’OÚãlÀ`E”LZ‰ÆI×WV‚чi7-Îo\¼Î¿d7êi¥h¥7Y1 Áé!ø5Î4‚CFsÖv×m¤æ±UúÙv°ÉWEy °S¦’·à72JÛ´ŸpÔ0|åµ}Öù6ߤ•ýÐ^[éòByñ0C,~žg»Æ­æž¥%³ab䬰»$BÄR^Õ.gBx¡n M'Íϧ$‚,ÐaÒ+—zñ€“êØ=R±ë:‘ËÜ¥BAÿ„Ácß–¼oH¾ ÚK>NêØ ÿJÝ ’¹B +ÃMV;‘X2+àˆÊ>íÓ-ÝXé&¬ª,5ØÎéD.q_² +7C¤Â|(\–$—ÓA’=Æ´¬¬F#uFPc$TnýcÑ.ß³ÇÆÂÔ诲ri‚l]p,Ë}±0Ø×Üz—A°ñ@·l˜¥ÝÊ ð4'"ˆÛ([í&ÊNC¯Iÿ,ߦÍ|‚”›Ð3ÍŒ6¦½à`›‚£hºô ›^BtŽvf +Ý`±hû‰¶ï@XÞÞeEߥ˺œªÿÞbÁÉ»ß4]Eí_tá¸ÔdPQr¶Ëzb‡…ûZñ¯ÒaÅÏ#õU:¬øÿ ¨¨;¦”+Ö³ï|ŠK]ˆô/| à•Òɘ…†Qàû"£Ø…®4Qœök¬ò²»òš¨ÃýðØÅ|Hšº÷mY7í‚Ç|R ßåX¢ˆG»‹öâ‚ßD/ÐacþméE%WS§b?u0á@/ð‘šÁ¸ßá®:WIWë¸íp‚ép¬tºÜü»NÝj¦ëˆz¾´’&¼ ×u3fvf_ù giÛ•Ëü®½¨í³ëJÀ¾K]‰––KA×Ì-Ùúû~[¡¸m@Ü)«þuß!†§Ób;ƒ—ëЦ$â)Wëí•z 50Ô Þ•ºÒDÄÎÄ7Y‘UiwÿÖž6ÓõÞ¾üš¹[ÍÈ>½ãâŽ)ûÅ)uo˱ë|íñ„a­Æ" '›|æ4ÌÊòóãÊR ïò¿Ã9ô +endstream +endobj +5767 0 obj << +/Type /Page +/Contents 5768 0 R +/Resources 5766 0 R +/MediaBox [0 0 612 792] +/Parent 5737 0 R +/Annots [ 5754 0 R 5755 0 R 5756 0 R 5757 0 R 5758 0 R 5759 0 R 5760 0 R 5761 0 R 5762 0 R 5763 0 R 5764 0 R 5765 0 R ] +>> endobj +5754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.389 618.834 182.159 629.737] +/A << /S /GoTo /D (group__avr__string_g119342b34031ba4ee28f4e38a22c5f0d) >> +>> endobj +5755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 566.912 200.238 595.978] +/A << /S /GoTo /D (group__avr__string_g119342b34031ba4ee28f4e38a22c5f0d) >> +>> endobj +5756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.655 493.914 208.528 504.818] +/A << /S /GoTo /D (group__avr__string_g60b6f90e97d0574c5f5725d9db15cd9d) >> +>> endobj +5757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [293.768 493.914 346.659 504.818] +/A << /S /GoTo /D (group__avr__string_gea3f5ad280b6d689b5f9937ef6f0d805) >> +>> endobj +5758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.062 443.996 226.934 473.062] +/A << /S /GoTo /D (group__avr__string_g60b6f90e97d0574c5f5725d9db15cd9d) >> +>> endobj +5759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.604 420.085 478.476 430.989] +/A << /S /GoTo /D (group__avr__string_g60b6f90e97d0574c5f5725d9db15cd9d) >> +>> endobj +5760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.769 323.177 185.957 334.081] +/A << /S /GoTo /D (group__avr__string_gfa4a8701698b766f40180c735726cfe7) >> +>> endobj +5761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.767 323.177 301.973 334.081] +/A << /S /GoTo /D (group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) >> +>> endobj +5762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 271.256 203.656 300.322] +/A << /S /GoTo /D (group__avr__string_gfa4a8701698b766f40180c735726cfe7) >> +>> endobj +5763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.387 198.258 191.114 209.162] +/A << /S /GoTo /D (group__avr__string_g36cc0ab27fbcc70615214170ae79fbf7) >> +>> endobj +5764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.016 198.258 310.761 209.162] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +5765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.834 148.394 209.56 177.46] +/A << /S /GoTo /D (group__avr__string_g36cc0ab27fbcc70615214170ae79fbf7) >> +>> endobj +5769 0 obj << +/D [5767 0 R /XYZ 132.768 705.06 null] +>> endobj +5770 0 obj << +/D [5767 0 R /XYZ 133.768 667.198 null] +>> endobj +5638 0 obj << +/D [5767 0 R /XYZ 133.768 561.682 null] +>> endobj +5771 0 obj << +/D [5767 0 R /XYZ 133.768 547.784 null] +>> endobj +5639 0 obj << +/D [5767 0 R /XYZ 133.768 392.947 null] +>> endobj +5772 0 obj << +/D [5767 0 R /XYZ 133.768 379.049 null] +>> endobj +5640 0 obj << +/D [5767 0 R /XYZ 133.768 266.025 null] +>> endobj +5773 0 obj << +/D [5767 0 R /XYZ 133.768 252.127 null] +>> endobj +5641 0 obj << +/D [5767 0 R /XYZ 133.768 119.253 null] +>> endobj +5766 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5783 0 obj << +/Length 1827 +/Filter /FlateDecode +>> +stream +xÚÕXKÛ6¾ûW½ÄF#†QEÑC›&mhâžÒ ey-Ä–\IÎfóë;CŽ$Ê+Çë ÐçùÍPÜ»õ¸÷röÓröì… ½„%! Ë'”bQ{a¢Y˜o¹öÞÍ¥dB,Þ/_={!„C¬$SQœ Õ–bÄ.bQÐ4m]”· ¡çl;Í-ŠÃŽøÇKÜn¾|þÖ0m¾’ë¹äœý²œý3@Ë=á(%Xµ—ígïÞso _yœ©$öî éÞS +<¸óÞÎþ˜ñË–Ò“J;–bŠÉxá Îù<Û¦5鸚L„²Så/ÎÕ¤ºA$ã¡åÊìpºj‡4?Ã]',áCîZŸã¾Î›vB20Ñ<]ø5ªJ 5"œ»^±DG×\ßÔÙÔí`Ì(8¹¾)>ç· ÑZuÔ»¼œæ)Ç욢Zr‡È—qÀ }±P–öçê°€h#Û§v°ÍðÑ/·¹‰C€õ-Eâ›—3ïÄ­À³àKÃ=ÙÉÒ‘mŽeÖU¹0«¢±cSì‹ØÞ,ÚêâM_¾M«d8Ï1À>eù¡%ÆÛ”feE“}Uç6ïà# EÃê¾ÍI¼jCbZ·Û@æéÐÚ&E2J‡"_³…ð,vlžâ~¡óµbŸGs=Ä4ÊÄ‘µ:,œhÕ-¢Ë^Ø-û• ˜)`D÷¤HÝØuAÚá–à XÚ˜[QeÇÕ=ÑZä’Ü€ÑDŠe¶;® 3 ê9M¥ú/O¦B†ÇL…}+QNx%`IÜ{Ž?±¼zïÊËjBM!‘ó´/( ÍÀ¬X ewÖ•#uÑ6Ñàs¨ª>4FkÐY1e‚ÃQ¾*w]ÉnOâc¨ 6X†Ôé}㳈‹%ÁœÔó&Œê¾ +Àê¾êHàÐ÷F­o‹„¾ 'RaáDjèFª¥2£)Œl †ïTE`VÐ ª5¡êjÙ+é\U÷;t¬gdkœë8•ÕTÀNÅ!¸v®GEáÈ™ä:ꮂ!Ô_Ý÷^ž„u+.Ô4¬+þUÞ éªþpMMÀVW‹«J„$ŠÅÑ·x'¤™éN +€¶æêbý5ƒ¸»¢S‰FË¢UÏõ H2ä®vU–š&ÒpÒG.ª,;Öu^fô±(O¨‡`ôPÊU6X¨ÂS‡ð‘Õ’ÞhXv%ä*¢ °9¹Ð y§RK¦u8îÜ‹ò$}¨¿y(£æŒ'Ó~såT^Z}ä|(ãQ„”ÁGJõ˜ž1I.ùI\…Õ€«°Hí0ô‹°0È‘to ˜dàd£`§(§®"+ñ%‡ÇÆID@˜ ìöi›ms©*éZp¾õqýTá× +§N@Pž-Œ¨ô•~ÆR¡, +Í‚áŸÃï¾~=ÁÒ]$=r˜ +£¸}‚ Í1Ûž¨@4v{SK|v*®¨`¦Ûن¤™[çs^ã-1ƒÑ¾a‚€WÀ[ÊÔ X§DÚáÖDhúÀ(¡äÁÿX!½y£ÎI8©í¸ªL‹Œ ÒãùmǶ&Â|hï¡6fCr`”t/؉Û½gOm°1$í9Ûj‹QÆž&*ý~š.|â+>c—l[_UøÞ‚¯ô‚”Ÿà&Óqÿûòcº»ÈîlGéXëØkSu&Ÿ¢|Ô ç<*¬5˜ø,£×³rÑ0°/墡"4 ºb»Ôø ¶Üòˆ_LƸ¤®‚°üˆ­xº³D Ðn'Y¸Oò®u;ýEó«mU¡,~×ßônó}žZˆ‡oø#‰¶}»wš9ÉÐsñº²Û.`ãÛµÊtk¸²?O€à0ÄîÀ+!‹ ßüçšÐg€éqùœüž@T×üÿîþ{CíTìþ÷Žx’ /ó2¯Ó¾Cîþ~,·G;yžÓë)°ƒà7R݈خ$ç4Û «®]7ï«z¡¢¹¿+VÙ¸ë~^}º¿µÿ\•ÿ·—;n +endstream +endobj +5782 0 obj << +/Type /Page +/Contents 5783 0 R +/Resources 5781 0 R +/MediaBox [0 0 612 792] +/Parent 5737 0 R +/Annots [ 5774 0 R 5775 0 R 5776 0 R 5777 0 R 5778 0 R 5779 0 R ] +>> endobj +5774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.362 618.834 189.219 629.737] +/A << /S /GoTo /D (group__avr__string_g81577c743915e4fb8759ef9081f10838) >> +>> endobj +5775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.992 618.834 310.869 629.737] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +5776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 524.956 206.326 554.022] +/A << /S /GoTo /D (group__avr__string_g81577c743915e4fb8759ef9081f10838) >> +>> endobj +5777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.206 319.338 187.058 330.241] +/A << /S /GoTo /D (group__avr__string_g386481b53df5f2437a1da78b400b6440) >> +>> endobj +5778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.956 266.995 205.807 296.061] +/A << /S /GoTo /D (group__avr__string_g386481b53df5f2437a1da78b400b6440) >> +>> endobj +5779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.649 157.634 185.279 168.538] +/A << /S /GoTo /D (group__avr__string_g84c8b3489ec089d8be4c30f42104828b) >> +>> endobj +5784 0 obj << +/D [5782 0 R /XYZ 132.768 705.06 null] +>> endobj +5785 0 obj << +/D [5782 0 R /XYZ 133.768 667.198 null] +>> endobj +5642 0 obj << +/D [5782 0 R /XYZ 133.768 519.304 null] +>> endobj +5786 0 obj << +/D [5782 0 R /XYZ 133.768 505.331 null] +>> endobj +5643 0 obj << +/D [5782 0 R /XYZ 133.768 369.222 null] +>> endobj +5787 0 obj << +/D [5782 0 R /XYZ 133.768 355.249 null] +>> endobj +5644 0 obj << +/D [5782 0 R /XYZ 133.768 227.48 null] +>> endobj +5788 0 obj << +/D [5782 0 R /XYZ 133.768 213.506 null] +>> endobj +5781 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5800 0 obj << +/Length 1680 +/Filter /FlateDecode +>> +stream +xÚµXÛŽÛ6}÷Wè-6P3¼‹ZZ¤ E›lŸ’ ÐÊôZ­M¹’œÍæë;¼H¦ly×nw^ÄËpæÌÌ!qr›àäÍä§ëÉË×T&Ê$×Ë„0†R©™ $3’\/’SJ!³Ï×o_¾&$Ì(bi+¹QßûƒåR”ò~@ÓÖ¥¹1E«ñÕR%»Á?<¶ÚÕlΞ~p‹6³9%‹)|vâäçëÉ?cqB¢C”a‘›ÉÇÏ8YÀÏ· F,SɺI‡¡ÄN\'&¿OpÐ~@c wJ)a%ƽpïu»«íIMsåäéæÃdOV°[2‡ ê§^¯t˜aE¯oÃÞ¿™$áÄ©Uc]¬êOX`øÈ`ù0d¹3E[VfæZµÆ4¾‘ûb[•¦Õµo´U(akWÙä32m‹•^øv±Êë¼èÇW¡üõwï|­\îWy@–9] éÏͧOËÆ—¦j}eYíÌX|NÀæ„'siGÄ£³9Á»å x Žˆ¤^>aÌF1ÅS!¬¦¦Úšî‹—ÍêùÄÂ"vd!Nn0"C*ûEDð´Næ„ €0s +‘´GÙŒZ9AX]7ÚË›ûÂ;ê­a§‰3æÖ~éS sFëAf[õP–`a‡([©êEgýjyð/5ö“0Ê2™Àp$!<«ýw 7‹¬Ð»™;pupð‡³ÛÒÇ•s ×Å‘Ê.òö ÓèíãžÂ¬{ÂYE\°~ñíÈö +)8VñÝl.ìq*Ó„PrZ€l?íW]èu¹Ùt Éñ1¥#¢ÔÐñ~³VÌÇ=5DFÓƒ¤ú{éM›fèÃü¬,!ƒaN' 9Hrº®Š¼Õ (”1røÞd/¤­×z©km +Ÿäôæ~Dá”0;Ö8cÑ(Ž2EŽÌ=ð^›FDdo+^/,KkkzÛ¨ŠbW;ÁB{é4¶€ ²’‚-rcq#)ä7NÝ~è§?–Ÿà q’a&>ð!»o[oJ“·^ÇðçňJ oŸnÌÈ>uâ‡s@pÛåfáÿÕz»Î ­Ý¹Û 0fÁK‡ +»+Û@3U·i6*",rˆv΄ƒ³[ÔÁЇTØÉEC(Ûî·qókë»cZaåZ†jÖMPÞ"eß0#ØâØ®TA¸¤}¼pDçø,‚ +!{l:å1N¥dH€?R!¬3EÀ¯¾§ZúŽðglýΆ€¼ñ#j[F¬¨<ò3ªÚù" *͘/b2ªÎðEz/‚éRL¦?¿ó'J™ÞlÛ{¨p/˜õN½^€ÓrèB:L©Œ@ƒ`ª¤­Èw>ÏQbC‹+[§‰Ê7òÅ_€YÓúVlahö¶¡ŒRஹ kénB«aÀÁEµÙæ!Ó`[éÓÚ i]>¿?HÞƒôïùA7vÔP"UO49⼿Ju)eÌa CBd9ìC4¨Qî‰ZyÞË¥9Åã4ã÷w!ø•û¾ý]úÜ]:ƒ? +`®åm ×!“¯}ÇKÈòõ®û¿ó8IPO“üdìp„OÝ#,Ÿ`C¸e¨>ì•Mi$CL°!øKS¶e¾^ßlùŽgìòèù !ÀÎ1ý>–F¦H`yŽ4{Mk)‘`³VÌšfÝ”ßôŸmÏìš­‰Èñ£4;xnö¤WÊgäÈyQèm;F’eÌN’d!!U¦1Û,hõ4³Uf 9?_»µ%·3÷7GàÚÜZNc;]&Y÷Suðö½¿¨m\Ò±ÓIC*ß{O3rä Ó£ìnU« #§lÚàoTq$™úì]Öz}?¼'îÓÝ0­ Ë$RTŽmÀR…KƱœôàâÎú¿oäì«Kö˜ÕaDduhí½ìx6ôšÝæÆEz¨;“C«Ð¶Ë°B˜D#(X9PðËkü€(ŒCA¤GP¤ƒ‚m€™5¸íöÒ’iÉtYW›±‹‰€ÍÅy63ŒäÔ³q»øðZßt]yÉÊ°¿}Ãó Åܽ† ¹œ=ÌB×ëÉžGòºâyì-hô-7 ±K^r»—[‰²|+zëV *~£®ó¶“·{Û¹^í|å•.|…û‚à+Ê®ˆò-Šq¨--I¨êî´ö §ž±t:_—7Å-¾ª¾ÞßjsxäD›Ô. +endstream +endobj +5799 0 obj << +/Type /Page +/Contents 5800 0 R +/Resources 5798 0 R +/MediaBox [0 0 612 792] +/Parent 5737 0 R +/Annots [ 5780 0 R 5789 0 R 5790 0 R 5791 0 R 5792 0 R 5793 0 R 5794 0 R 5795 0 R ] +>> endobj +5780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.135 639.128 203.765 668.194] +/A << /S /GoTo /D (group__avr__string_g84c8b3489ec089d8be4c30f42104828b) >> +>> endobj +5789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.755 549.767 181.818 560.671] +/A << /S /GoTo /D (group__avr__string_gcfdb3ab0c1f988f86d04d706d8e0ce3f) >> +>> endobj +5790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 506.066 199.531 535.132] +/A << /S /GoTo /D (group__avr__string_gcfdb3ab0c1f988f86d04d706d8e0ce3f) >> +>> endobj +5791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.413 428.66 183.283 439.564] +/A << /S /GoTo /D (group__avr__string_gff88adec2ad0446259766197ec3863de) >> +>> endobj +5792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.809 324.849 201.679 353.915] +/A << /S /GoTo /D (group__avr__string_gff88adec2ad0446259766197ec3863de) >> +>> endobj +5793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.871 312.894 244.741 323.798] +/A << /S /GoTo /D (group__avr__string_gff88adec2ad0446259766197ec3863de) >> +>> endobj +5794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.438 253.112 183.866 264.016] +/A << /S /GoTo /D (group__avr__string_gcbc51d76d5f8f4cacf27238494d866d8) >> +>> endobj +5795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.592 197.455 202.02 226.521] +/A << /S /GoTo /D (group__avr__string_gcbc51d76d5f8f4cacf27238494d866d8) >> +>> endobj +5801 0 obj << +/D [5799 0 R /XYZ 132.768 705.06 null] +>> endobj +5645 0 obj << +/D [5799 0 R /XYZ 133.768 620.264 null] +>> endobj +5802 0 obj << +/D [5799 0 R /XYZ 133.768 605.694 null] +>> endobj +5646 0 obj << +/D [5799 0 R /XYZ 133.768 497.099 null] +>> endobj +5803 0 obj << +/D [5799 0 R /XYZ 133.768 482.529 null] +>> endobj +5647 0 obj << +/D [5799 0 R /XYZ 133.768 303.927 null] +>> endobj +5804 0 obj << +/D [5799 0 R /XYZ 133.768 289.357 null] +>> endobj +5648 0 obj << +/D [5799 0 R /XYZ 133.768 164.579 null] +>> endobj +5798 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5812 0 obj << +/Length 1896 +/Filter /FlateDecode +>> +stream +xÚÅYÝÛ6÷_¡·Ê@Íò›RPôápM"È]›íS.´¶¼6jK­$w“ûëo†CêÖ×YàÒH‡3œápæG™' O^-þq·øIÎr ÍÝ6J1g³Äæ†Ù\$w›ä}*%bùáî§ï^ +1bV’)—ƒ$Ïõ=qLÄ9ætÏÐv;zX +“²Ý¼4—ÙÈüÃ-i/–+%xúÎ m—+)$7©ä.~¼[ü±ÀË12J°œ›d}\¼ÿÀ“ Lþ”p¦ò,yô¬ÇDi`¸ð¼[ü¼à·=e“ÊŒ<ÅSf¹œót½+š`«[¢™°2šòÎÕ¬¹ÚÉ‘óàfü†¯ëªíhxM‡aFÚKÆ\Õ!fv‘±Ì¸ÈñíreЪ›Êbù°ì‹”Ë+ÊG&˜¸A>âYI<3§“•pÌJMÌoêuÑ•´Ç‚šötO!ÈP +H,¸Û•>r(dš‡;¿¼Z$ïWReáÐ÷q#}tx—nOÕºÛ×ÕÒóƒÑ²Ú`dÂT·+jãƒz½>5MY­K⪷DÜnØ2Ù­ÔÈn©-³™ºðßØ7B3%{ï«sñ×dëœ9yÑp—à4 ƒÛÈmtb²­°9 .F6KL]Ù÷UÑ¡N"ßÌEŽ€[ÞŸy5£Y³<‘3Äa± m8ó&~UÇH­¿uÃ&Gwp+¸ÍN* *&³p«)»Sƒy«j_œ/ž¸$ƒÜ&gŒùQ¥¸¸UÈ1DŽÜKÕâÀ6Ò~¯÷XNƒ®-2vîKÜúþª¼ß‘„q6áéãì[̪*­›™ P\2žõ—úí¯oÞÌ]ÇÈ69ú½×¨¢F5Šl\î["ûÓÂζ>UpT+móôõvf7BæLñüVøçC†ñn +zÈKŠ<¨ÒñVê°Õÿ–M`:”ÕC·ó®±ƒý¹ø€F«CàÄÚó%Cf»~ÁìpÁ.³ãÊä,ƒîJ£4}V‚ìW(A]ýÛ¨]MýB>+óÏ(V,sö/¨:›ò°?ÎèÇô•ë›•ŽQJ3-$ÿÆëV4m2e[¬?!È|ŸÈ:pgΔU;­Nfê{%\ +Yl Wåã"³b ¶D"ùžk$¼™ûÌägúŠ„ ÖÅáôR{Íí®>6DßKÉÓ?ÑØr¢³ûÚwD³F-ÉÒ‡Ó±¬:Ø—•"}‰¡üãXm”ß +2zPä3õ0K~€©Á  Ž5Ðt[†)o!´˜ÈͽކU4ì6·÷’Š;°=î»ö4! EQµÇ”¬9F¯ôÛÛ·“Ù z(]4Ùj´ l›}וñGu*ª›+£à_&Ý3ë(ˆ¬6SbmñINfœe<›úÁG°–!εH+_p>uD[“Þ: ·£óÛi[ž IN$‰›^UPI±é±‡£€F¾Áû‘‰\ }ºîžëX|žœj(T÷á²n bI“nËÆ’hÐ)‹õ.ä!ØÒÓx‚³<‡ -Ërýµá¹'ø¤æù œàc8ÁC¡ŒY V gBÓñ†øaVylà{»2¨ª‚¤cÝ”s÷iÈPg.@§¼\å½Ľ­»rêÞK§ÝvøÓþ”ÖQ@Û,}û/¼ìwKOlJˆš¦ðIMY™¾DŸùðÎ⌇†á¦·t4ÀæÖÅÄa'ï ˜oËk±pþPpÎMËøÇU¸ÒarŠ[f >÷–c¹ROâe˜Õ.à“ó'²û:øäcs¡X /có,ˆ2z(Mqñwãs¾y­˜ÕXéÅB2mzÆCA¥ûüó¼,ó›Os% ¼æôÓiŒ‹n"}qØÊC"Gïtô ß¼cü£¸ åbú"w±Æ(Â?AÜHQ„ 83… £÷´ïa;!aÙY$s7ARðƒ°ÛïAˆó=ˆ˜¨Ù%ø •ù5µaaò‘£OòÒ·›v.\U³ æ)³Ù0Kƒñ(À0²Íà ˜¸P7 ƒŒdÒêçÁ éaÐ »¯‰8ðÃ6~íø P›©;FàÅ {Co SH¦i¸ð\FÊX˜ŠQêÃz!1Jñßb2Ü© ‚%}Æ)"#ò´ûÙê|Ž‡lÄkVE<$ÂC+¥å O¤ò%©î©ôÔú ápð_é6añ|Úyî?ï]V>É–fȃñ´‚3`7¯Ã^Ž'Ú•" g#lµˆH¡÷¸ÛâÉr/é|ê Ì6}Æžw´¾OhŒ>PO«Ò¾|’cÃÏ0êíß$Í ¸—~2ÅZ$¿.2•zðÃU,¥ÇŸºpEMqPP3ÜC-Â3 t¦ï…qÚÒ„M±%lŠ ›â éÿMgÿzÈÁcê9<Ä?,ËÊÆ8dPÆmØ׫²*›pƒ0\BØÜíNÔùg¹¦Ž¦FðR½$ç¡çïv|Þ8ø³YBÍZö÷AÂýç ²þôù^Äc“ÿÛÝ’Ç +endstream +endobj +5811 0 obj << +/Type /Page +/Contents 5812 0 R +/Resources 5810 0 R +/MediaBox [0 0 612 792] +/Parent 5737 0 R +/Annots [ 5796 0 R 5797 0 R 5805 0 R 5806 0 R 5807 0 R 5816 0 R 5808 0 R 5809 0 R ] +>> endobj +5796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.631 618.834 179.183 629.737] +/A << /S /GoTo /D (group__avr__string_g6a441da9211eb85881d99c60b1003552) >> +>> endobj +5797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.975 564.541 197.527 593.606] +/A << /S /GoTo /D (group__avr__string_g6a441da9211eb85881d99c60b1003552) >> +>> endobj +5805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.964 377.46 200.286 406.525] +/A << /S /GoTo /D (group__avr__string_g6ace85338eafe22a0ff52c00eb9779b8) >> +>> endobj +5806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 325.931 181.808 354.624] +/A << /S /GoTo /D (group__avr__string_g6ace85338eafe22a0ff52c00eb9779b8) >> +>> endobj +5807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.663 325.931 478.476 354.624] +/A << /S /GoTo /D (group__avr__string_gc0dbc25e8b202114031a4aa2a7c5177b) >> +>> endobj +5816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 314.664 170.411 324.123] +/A << /S /GoTo /D (group__avr__string_gc0dbc25e8b202114031a4aa2a7c5177b) >> +>> endobj +5808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.386 178.424 391.708 189.328] +/A << /S /GoTo /D (group__avr__string_g6ace85338eafe22a0ff52c00eb9779b8) >> +>> endobj +5809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.371 136.42 207.992 165.485] +/A << /S /GoTo /D (group__avr__string_gc0dbc25e8b202114031a4aa2a7c5177b) >> +>> endobj +5813 0 obj << +/D [5811 0 R /XYZ 132.768 705.06 null] +>> endobj +5814 0 obj << +/D [5811 0 R /XYZ 133.768 667.198 null] +>> endobj +5649 0 obj << +/D [5811 0 R /XYZ 133.768 535.364 null] +>> endobj +5815 0 obj << +/D [5811 0 R /XYZ 133.768 521.099 null] +>> endobj +5650 0 obj << +/D [5811 0 R /XYZ 133.768 307.395 null] +>> endobj +5817 0 obj << +/D [5811 0 R /XYZ 133.768 293.13 null] +>> endobj +5651 0 obj << +/D [5811 0 R /XYZ 133.768 119.253 null] +>> endobj +5810 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5823 0 obj << +/Length 1750 +/Filter /FlateDecode +>> +stream +xÚXYoÛ8~÷¯º/ò"fDRÔ‘- +ôJÐ=6ñîKZ´,ÛB%Ñ+ÉIÓýó;ÃÃ’4é>‰Ž†s~3Rà-½À»½šŽNÏYä¥$à1]x”sG‰¥‚D)õ¦sïÚgŒP6þ:}zN這3Âã$i®ç†cG\LâpË ÇLø·ÍéL©Ž¬ŽÈ án!û‹Çä'œþ+W*9Ï›ñ„‰À¿Ú¬×ªéÌ毮(‹®ÈÛñ„R„> b”;z;ý3¢ *ðèÀjJÒ@xY5ºþxs8|‰w§Y+£’_,½«ÑŸ£àqWŠ˜0.zWR O@¡ ül%ëŠphhHhÄœ¥_‚€õFoyÚ®Ù¬­ ¾"x@°Iœ„‡‚Áï >r3'I,z!‚Zž`À3¡!„+°ˆIÄBÃüZÕã0ðoÇTø¹‹’40¡¨—fÝ)ó„`ºÀf²Í ^ïÈœ®rSÌfi£zy1ò®'ŒrëôŠÓu7ÍÁüŦκtÓüwEYŽ5=;PŽ¥9Ûª $­.Ðœº@2êNXûŸêòÞòªš±TX wCfs ËõJÎò®È¶¦BRŠÈ˜ŠQ•Y—7­ñɵu!¦~|µmrë´]ò¹eü¨êÉà*û'ܺVµ²‘šå[Öz‰Â†¾ÜK’I@Ò4ò€ŸDPµZÿ˼Û4¨KÝží¿;Lš@•é {B”yÀ‰2rôQÆ]ƒºÔ-n(ÆikUÔ7TýÄ áâÀ™cw1$86Œ"­¦–¸#ªh{QðZXhee+­ï»•´._˶śp]Ô¶RŠ:Ë£](ÈÛƒù­>»@¼? `¾qÕp0™ŽSæ+Häãþ˜§Ï-–¦Üô +\r‹Hüåü ZK ƒ†ÖV3¾D[p>ÇæXdúc8ÉèÀi±ºf²|ÝÙHJýi¥é˱ðežR–àès¿¹¹úüáfr d/ß^à<"ì\™~7êÿÝé'³h×ë'px n1+-“1pðdÈ +âa¦á?+êgf%ë¹9¦6¥5Nlì[C™ÙÃYóÀ¬†Ù°rÓŠË¢*:WžˆÕ'NŒŽ2µ)结­tóS…™%ëÎMWHû¡¬Ÿ—î‘äzùùDZÝ6qùÖà*:í1uX¨Ò‚åg,À¢­+säfÉû5v ûAÕ«pL½[Acò¤é†„Thcƒ4::±fÂýy»7Þˆ‡'!²OˆÖËJgéàp]ʬ÷oU17Ühßmb7kí$c¡màZÎn:CÁ³³Äƒäƃ11ˆ'<µü®Oð«æØž<Û,ÜW¸‡ÁŒÉÓËÿÕGz`Kv Ä iä4)þØ ÃÑß)ä ÿ•ŸîgEqäÉðgE’î4¼Èkü¢päätµqƒ°ýn ̓gŒŸÑÄìXØÕsÑõ^û0æ±?)‹™•0»·"Õ÷ûe^ï›üØMΊ +endstream +endobj +5822 0 obj << +/Type /Page +/Contents 5823 0 R +/Resources 5821 0 R +/MediaBox [0 0 612 792] +/Parent 5826 0 R +/Annots [ 5818 0 R 5819 0 R 5820 0 R ] +>> endobj +5818 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.381 618.834 182.251 629.737] +/A << /S /GoTo /D (group__avr__string_ga50fa5cd42285f7c3980a3b0eafe77b5) >> +>> endobj +5819 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.985 563.177 200.855 592.243] +/A << /S /GoTo /D (group__avr__string_ga50fa5cd42285f7c3980a3b0eafe77b5) >> +>> endobj +5820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 289.062 154.999 298.038] +/A << /S /GoTo /D (todo__todo000001) >> +>> endobj +5824 0 obj << +/D [5822 0 R /XYZ 132.768 705.06 null] +>> endobj +5825 0 obj << +/D [5822 0 R /XYZ 133.768 667.198 null] +>> endobj +3569 0 obj << +/D [5822 0 R /XYZ 133.768 542.255 null] +>> endobj +757 0 obj << +/D [5822 0 R /XYZ 133.768 537.648 null] +>> endobj +761 0 obj << +/D [5822 0 R /XYZ 133.768 511.036 null] +>> endobj +5821 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5849 0 obj << +/Length 1301 +/Filter /FlateDecode +>> +stream +xÚ½XkoÛ6ýî_!t@`/CRï4׊›®‰»Ø]†%!Û´£V–U˜ç¢ejÌ#ªÓx±èZ&i=H.d+µ,ÕêrK›mIÛaæLœrÊ_‹&p\¬Uº‡‹Éî®à_·mà±ýS@zÝ=,é(l±Ëö¿ñà +~ +¢uåœlk™Žu—^&amÊEâ‘Ôÿ&c/E¤×°ýc»(—i˜×ŠR7`E`ýa-Džt7²p™ãïî'ìØ.eåyRY¦XˆcVÇxñRE‡„ÕâmÓ`Y½¶Õ W[c´KÝb¸~Kò%/ƒéTÖÃóÂŒ×Ïv¯×2asð¾×2¬æQÇ?'}ÿÍà¤wvÓ)·&$Èó4¶0ÓuN EX.\‹Qu¾Ãuñ~Å9U¿Mçœc < ?IHëMºVÒӦϵ²J¼„ðòÀ—X^Ì +ù˜-› Mu8ù,W¶º>¸8dHƒÃÒíx×Ç…ÛÈiÿÅÇ2@'~=mLü€†%{èÑì!ŒQ}cyL¹“?6ð&¢oç°òòÑP³B€©ˆ¾‚¬YŒ£$Ñe±BXÐfŒ±ƒ %·ÐýD»lG»O/Ò0Û$úgZtí<»Æà“‰ c·Lð"ƒd«-cçVÄÌÃNùæ1ò¦wzÚ;#Gýö³^ÍIüY—ZxõÏŠlß~ï¿hBVÁ“e‹}×ñÒVÆÉ÷Ëë0â‡9xˉ²}î¥ëú"ªã9þØ÷IûdЯ+ŽüÆœð¹ Þüq?”aÇÿ{àŸuüÎéÁ/AÏÛ“îÛâ1^dóGÉè ™,2J†až‘)­0§4Ë^&…Ó8È)C´bg¹-ˆnÁ©½\ñ\à?sµ¢n§ØG«c¸ÕÛ)׆:àvi̾ósþá«ãåàz!:t$LÑ ¸}äŠì›L>MøíT"ïäUUËpšz¥‡áJºL¾­¦4¾ò³»P +endstream +endobj +5848 0 obj << +/Type /Page +/Contents 5849 0 R +/Resources 5847 0 R +/MediaBox [0 0 612 792] +/Parent 5826 0 R +/Annots [ 5827 0 R 5828 0 R 5829 0 R 5830 0 R 5831 0 R 5832 0 R 5833 0 R 5834 0 R 5835 0 R 5836 0 R 5837 0 R 5838 0 R 5839 0 R 5840 0 R 5841 0 R 5842 0 R 5843 0 R 5844 0 R ] +>> endobj +5827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 287.267 305.304 297.798] +/A << /S /GoTo /D (group__avr__boot_g8a60eb0985d40ff71c42bb18f0f5789e) >> +>> endobj +5828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 273.609 301.07 285.564] +/A << /S /GoTo /D (group__avr__boot_g072040fce54f112355cb9ebf9ce41dd7) >> +>> endobj +5829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.01 273.609 413.236 285.564] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.169 260.991 312.961 271.895] +/A << /S /GoTo /D (group__avr__boot_gf1e01d09c839793a6c0c990b1c5ae8b3) >> +>> endobj +5831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.884 260.991 459.111 271.895] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5832 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 236.084 281.712 246.988] +/A << /S /GoTo /D (group__avr__boot_gcd6843d51a4fa7d68f3c4bc5aa393a3e) >> +>> endobj +5833 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.017 236.084 393.243 246.988] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.276 223.133 255.268 234.037] +/A << /S /GoTo /D (group__avr__boot_gaba5a29359af671a37bccaa6a77bca7c) >> +>> endobj +5835 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.902 223.133 366.128 234.037] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5836 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 210.182 254.395 221.085] +/A << /S /GoTo /D (group__avr__boot_ge50dc01180110f30093a92fe64fe1565) >> +>> endobj +5837 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.7 210.182 365.926 221.085] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5838 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 197.23 276.433 208.134] +/A << /S /GoTo /D (group__avr__boot_g24900c15109e8b419736d4b81b093fb8) >> +>> endobj +5839 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 184.652 294.086 195.183] +/A << /S /GoTo /D (group__avr__boot_gc68c37ecf2354ba2af6e08379d65899f) >> +>> endobj +5840 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 171.701 269.529 182.231] +/A << /S /GoTo /D (group__avr__boot_ge12d288a22cfbfa9d0cde12b1a779bfe) >> +>> endobj +5841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 158.749 324.871 169.28] +/A << /S /GoTo /D (group__avr__boot_gf08aabaebbd69da659357f402d4d28ce) >> +>> endobj +5842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 145.798 296.647 156.328] +/A << /S /GoTo /D (group__avr__boot_g44e70c9662e7ac06484144c15bc69aea) >> +>> endobj +5843 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 132.473 289.453 143.377] +/A << /S /GoTo /D (group__avr__boot_gd2cbdea59ffec2e77ee2e63106459797) >> +>> endobj +5844 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 119.522 290.001 130.425] +/A << /S /GoTo /D (group__avr__boot_gf375d2543ba38dc56697b4f4bc37a717) >> +>> endobj +5850 0 obj << +/D [5848 0 R /XYZ 132.768 705.06 null] +>> endobj +5851 0 obj << +/D [5848 0 R /XYZ 133.768 305.868 null] +>> endobj +5847 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5875 0 obj << +/Length 1270 +/Filter /FlateDecode +>> +stream +xÚ½XmoÛ6þî_!`À*3CR¢^²aÀ¼¼ E6t×/I!Ð2m ‘DW’ëd¿~ÇÙ’í¤M‘æ“ørw|îî9mì,ì\Æ“ÁÉ œÅ|&s‡x +ƒÈ b†‚˜8“™sãRŠ~š¼;¹ ¤#ìQä…1XÒR¿‰ž¹…þV€)s¿T'S)´›U¢®1˜ñ†Ã*1³$Ù·”²*xþ„bïìŒE1#/쎨x-žðæ¸ ZëЃÇaÓ†½©²æù°µÖs`¿`´«Í&%ŸæGaà݉o·4Â\¦wÉ4kê¤Í1[´=ÕCÑW¡„-«šÏÅ3ªóõŠìkÈ^¹x¾Î)ŠGá¼JXzü}Ê©÷šåˆÈ÷bg}šÄ~§—# +í¨³“>ûL¦ëB” o2Y*ƒÊ7ê#znW«¾ó ºkð ^IV6¢ªÖ«fwŸh5M’ë÷%Î/õZèþÜÙ[ƒb”(-’ŒZú2³­süQ‰·çJ¨ã|·ë*¥Ô*ý¹éñ2››o³´nƒ)»ÓB¶ÓÚ| #fèHˆ± .ëLJÆÇg‘û-w“üækìÐi#Út]‹fÏÕéÞ[I´;`õX¶Ï&Œâ8€<ÄbËõ÷CxñŠWŸöÔwf q×PÏ'ÈM„p[1BÙ1žíCèºçä¿}þýa€¼¶.H›ØÍ2K—f¨Þ†ftÕñújëõXhB$Í"ýt 9öu]„82Pþ–8} +ù¯ß–p  7šg0J%ðoH˜{ߨ¶@|x1ë7CÆ03ƒ(½1£M/?³&ì +\¥h-KóÕV˜ûŸ¨ìÂõçùZ ˜Ç†oEózH\Ù"ãöHYæf4¾ßß«Êé6’)/-¥,éV•\G +1³ë-+Û +KeQðÒT˜®Û¨‡ˆE¡1¡â"Uþ¨ïš ñb• (Wag–Õ<Ï¥òocV õa`ªYY7Õ:Õwœ^˜W²0#¾¬\XM¹gÁ’ F[2Á¸…¬Ž…¤í!rÂ}àñziûþƒ\[Ϊ +ë܆h]‹ý<­,G¹]ª×éò±¢ó<ø±‡˜húÅÀYh”!Ûˆyc·±¹ŸÇwH9!íMû듵AUm0]ÌÿþÒ¸ÊîT8TâØ:Aº3n/,5Ô@Uõ€ò5IRË6I ×&I­ÚŠ‡UUñVG–©Uçí·l Línš ^iò*4‹!ÔNVö܆—©hHKtnY¾ÌV¶£è_9û—•-g݈löוAaÊÝÞµÞ^è»k<ù¼›ýÙC +¼çüèmÿ7€a^Ôýß Š‘Xþ_ŠÀ6mÙ·•0YZΟ‰Ô |ó!ø”z§$23Š±ÍU9˪¥þaè…î(Ϧi?Ògòþa!Ê}—ÿ°#Pf +endstream +endobj +5874 0 obj << +/Type /Page +/Contents 5875 0 R +/Resources 5873 0 R +/MediaBox [0 0 612 792] +/Parent 5826 0 R +/Annots [ 5845 0 R 5846 0 R 5865 0 R 5866 0 R 5867 0 R 5868 0 R 5869 0 R 5870 0 R 5871 0 R 5872 0 R ] +>> endobj +5845 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 654.082 249.055 664.986] +/A << /S /GoTo /D (group__avr__boot_g61add108c778273ff68233d044c3acca) >> +>> endobj +5846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 641.131 258.44 652.035] +/A << /S /GoTo /D (group__avr__boot_g7249d12e06789cd306583abf7def8176) >> +>> endobj +5865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 628.179 258.45 639.083] +/A << /S /GoTo /D (group__avr__boot_g013d6d8c679ebdbc0e5fac179c38c9aa) >> +>> endobj +5866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 615.602 262.874 626.132] +/A << /S /GoTo /D (group__avr__boot_g8d2baaca2991318e0b06fdf9a5264923) >> +>> endobj +5867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 602.65 266.769 613.18] +/A << /S /GoTo /D (group__avr__boot_gdaa352690ac1c82c535da9d8faf77590) >> +>> endobj +5868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 589.325 270.076 600.229] +/A << /S /GoTo /D (group__avr__boot_g3f549e2ef9ca0f119a7070064c4dc372) >> +>> endobj +5869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 576.374 279.461 587.278] +/A << /S /GoTo /D (group__avr__boot_g5c345350a2fb349619b859dcf0dc0466) >> +>> endobj +5870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 563.422 279.471 574.326] +/A << /S /GoTo /D (group__avr__boot_g107ad4c789e5c498062947d394ed98d5) >> +>> endobj +5871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 550.844 283.894 561.375] +/A << /S /GoTo /D (group__avr__boot_geb0dba1dd9d338516a94c0bd8a8db78a) >> +>> endobj +5872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 537.893 287.789 548.423] +/A << /S /GoTo /D (group__avr__boot_gc80bd4f863ff7645204adb0eda3556ea) >> +>> endobj +5876 0 obj << +/D [5874 0 R /XYZ 132.768 705.06 null] +>> endobj +765 0 obj << +/D [5874 0 R /XYZ 133.768 524.319 null] +>> endobj +5855 0 obj << +/D [5874 0 R /XYZ 133.768 501.634 null] +>> endobj +5877 0 obj << +/D [5874 0 R /XYZ 133.768 501.634 null] +>> endobj +5878 0 obj << +/D [5874 0 R /XYZ 289.881 454.549 null] +>> endobj +5879 0 obj << +/D [5874 0 R /XYZ 133.768 437.822 null] +>> endobj +5880 0 obj << +/D [5874 0 R /XYZ 133.768 165.11 null] +>> endobj +5873 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F55 3943 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5892 0 obj << +/Length 1324 +/Filter /FlateDecode +>> +stream +xÚµWëoÛ6ÿî¿BðP@"†=³°,NÚniºØ݆¥¡X´-T–<‰ÎEÿ÷EÊ‘üHÛûˆ”»ûÝ…­¹…­‹Áédp|N+FqÉÌ"Œ¡0ˆ¬ öQk’Z76¥ˆPçÃäõñ9!aF c°ÔHý %zæBzÄ¡¾}Wß–¥D‹=ö<8Û÷[ñŸ¾dïÄqÁö)˜ËË$•ãRÛãõjUVRoÞÉ,Ïd&jÇ%„`Ϧ+»ƒÑdðÏ€€)l‘Ž×ÅØ·¦ËÁÍl¥ðãk #GÖ}#º´˜I”bn¿ð—C釈2¿Jq<cû»T¼Ç˜BÃU¡áy9ýÈo3YóZH^'3ññæ-lˆrŽuIˆêiÓ81µ“|-N[`íóøœ1ˆ_b¢Ð2ÅÈ b­œ–ŽžOúñž0¯9ƒÄ€7¶ÜD Æzµä·ëú‘ß'™TðªïÁ)uÕ±Ö4…XUå=ïÑëžØ‹ŠA¹0öÎw»ø ŠÏZù~‘åâÉnà +YÄ,ª8QØiÝq²T™ò°Ô&ÊŠ?ÕÜéúb`Ý4¿ïbn½íeÇH ‡øöÃT¬¤¶~ï±!BµÚ{VVú½Ž AP¤z¹Ð‹r%ªDfeQë½,õsZ.W¹bÃ`¹ßÆV€qÃ>)³b®7raÞ*' ;ÚS•`’ÄÚç¸÷%ŽÏÖµÐá™ëð$iZ9$²Eýÿ°\Á¹x¢¨!Lœ«Ÿ¬èéͱë¬7¼ã¼õ:—@7J£Ã¼å<©—œ·JweÙÉ…zC >\' +ô6HÝ6¨¨g˜§™6^1|¤W/˜Ò(Ô?9„s°wøœ®>1ú¸¯Nž)Ëa­øÙÚj¿ ß ž+Þ6Z-ø¿·´ƒÃØO´ÆðÇjøTÄmbòðÝïëg]õñù5¿]òŸÏήµ½ñÛK~=ºPÕß‘¢t/ã1òR/ª]DêÏpGés~zu5á¿]ýò+?}5óñhbì†ÏixÙ1©Š¤-í¹»pZG+<µÐ)W+rµª„\W…0Ie¤6ãÙ«…1¬³i’ë_îÔ½T”fµ3$”…€oŒïµmNĽÁj® +K‘õg§e‰_•Eº³O¤mÃÜ›·z‘C0üçÀ±¥H÷aEÈ@fYw÷°?ŒýÝa̘éi¼Jæ‚ÃÝ¡û¦° ¡¶·D¹»ï>Q”Õ2É óÝ"ïŽö‘²º1ÀÊ’za܇³ÛßÙ†´IÖFÚTÖ×ñ’ Léçe[Ž %&sRô©¢ç•©¯¢”=åæòWVé3.íýz‰#û–o—ö›%€û‹ºß,Q ×¹¶7ˆB]+…ÁS&‹µ^œ‰©^xúAð e'$Ò;Š±YÍT™µ$7ß‚ m7Ïn§mØŒÉòáq.Šm—ÿzHª© +endstream +endobj +5891 0 obj << +/Type /Page +/Contents 5892 0 R +/Resources 5890 0 R +/MediaBox [0 0 612 792] +/Parent 5826 0 R +/Annots [ 5889 0 R ] +>> endobj +5889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.992 555.171 251.896 566.075] +/A << /S /GoTo /D (group__avr__boot_gdaa352690ac1c82c535da9d8faf77590) >> +>> endobj +5893 0 obj << +/D [5891 0 R /XYZ 132.768 705.06 null] +>> endobj +5894 0 obj << +/D [5891 0 R /XYZ 133.768 667.198 null] +>> endobj +5863 0 obj << +/D [5891 0 R /XYZ 245.05 546.369 null] +>> endobj +5895 0 obj << +/D [5891 0 R /XYZ 133.768 530.475 null] +>> endobj +5882 0 obj << +/D [5891 0 R /XYZ 133.768 224.603 null] +>> endobj +5896 0 obj << +/D [5891 0 R /XYZ 133.768 210.866 null] +>> endobj +5886 0 obj << +/D [5891 0 R /XYZ 133.768 119.253 null] +>> endobj +5890 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5901 0 obj << +/Length 1213 +/Filter /FlateDecode +>> +stream +xÚ½WYoã6~÷¯PÑ ¨¢Ž´(РÍ‹¶@7îö!»0›¶È’+Ñë Šþ÷ÎTtDÙìQì‹É!çžá|õvõ^,®–‹‹k{ÉbX–[ A’8õâL’8cÞrãÝúœƃ·Ë—׌ ˜'"É@“áúÁrŒÔ%$‰ò€Kÿ]sqWךìgôE`[ÊŽýÇçô]¡`Ô¿ueoT„\Rÿæt<ֶğº( ]¨6c4ò9c¨wñËrñ÷‚*ê±AÔŒdTzëÃâö-õ6pùÒ£Dd©w6¬O “ KïfñÇ‚>ŸJ™.ä •„“ü¡”úßnÔJy¥¬»˜šÕ1ß©•jòV­Ú| ÷’æ›M°ÔWm ¤‰¬†,!1¬æ×AÆý¼<©K_çW·^\ éËÊÐ9æ‚ê„7uÆàÎ?vyÃDdl° Üͼ0#QìX‹íñ°º;µ÷«s^ht½úbéPœZI»RǦ~BNÒ¹¡Å>)ÎE——ÔAG¶Ã¡ï΃­ìy_”5´K) +ˆ9’$Éœ7ù« ?o]Š±wšk¢W/Þ-ÜGS‡»8Gu1¬ÂW“þûµ:b¿‚h¡­‰s 9jíñ¶nì¹Í¡s£ÚØ[¨†=©`PuåÄtmÏ×õáX*­úÚ\Æ.» +”»öCw‹jg ½w§ ™yŒ H0’&|ÜÚÉãÖfR¤ƒ¬àqYNúú;xÍ ËüM®s“-”JüÕj*· +Ga¸ÒVusÈgtb*gk<|D×EYN¢¿›Œ­0^òæ¾OŽc 8õO[rÛŽÙÖMbŸQ‘·{K¸¾µÄ¹ÐûÞMw†Õ¯› µÌ$ý!%Y›wœÊÄúÿ{­'ï/KazAÌ)¡ÒÕm‰‘ +!{·(ÜšÛåî^¹HÊ8ê…­ó3’}, {Ÿ¿¯_!ùç¦ÐªªÂþ5ë^ÍÕ|šq[«qo©ØÏõèR…í–ENEwmC3~€”i<Ÿ³sì6˜™o`˜ÈØ¿©Ö¢Z7ê *§÷¾>5sþ÷}f ×ÔçŽTú¬Te‰u^–¦™³Ô½z8lU·ãVÒõÑe’‰Û¢²—î¦Ï R[|4¼xl+ƒ¬¿Þ\Ùëz;70ìË`IgŦäx‚UÔÆi ÌðÁÕòÇ~YcÏæmÀ¹‹&7çiÏõ›±÷`}(ÿ‘öâž_ìöêC‰Ÿj8yaD &£-}µÝ„šm¨ Íh}u—ŸàÑg"¸œ"ø¶è¿ÍJ<È +èI£'A<ú—CœÄñ~®æPy‡(ŽtáÖŠ#iÐÀð;œÙ÷Œ‡Åq3Dq¤Í„uÅåc·þ~1Žg›fñÇÍОû{ŠŒcè6¬Ÿ€ÜסÖÿ¯Í ™Âu/¢÷¹û®Xו΋ªúWëÑŸ‡¢sÀ…tߥcÌU¢rÿŠªZ„ÐðTH³Mø(>å“©ûTŠa–‰tø©”fDt3ã…ªð(çOíbXîOvó³ZÛMdF/¹¸d©¥8¥ng +Üý sŸ ü± Ëânݥͩ¬ßßïN&!ÿ![ãÑ +endstream +endobj +5900 0 obj << +/Type /Page +/Contents 5901 0 R +/Resources 5899 0 R +/MediaBox [0 0 612 792] +/Parent 5826 0 R +/Annots [ 5897 0 R 5898 0 R ] +>> endobj +5897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.058 549.502 243.634 560.405] +/A << /S /GoTo /D (group__avr__boot_g7249d12e06789cd306583abf7def8176) >> +>> endobj +5898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.622 241.742 235.814 252.646] +/A << /S /GoTo /D (group__avr__boot_g61add108c778273ff68233d044c3acca) >> +>> endobj +5902 0 obj << +/D [5900 0 R /XYZ 132.768 705.06 null] +>> endobj +5903 0 obj << +/D [5900 0 R /XYZ 133.768 667.198 null] +>> endobj +5881 0 obj << +/D [5900 0 R /XYZ 232.019 540.699 null] +>> endobj +5904 0 obj << +/D [5900 0 R /XYZ 133.768 524.295 null] +>> endobj +5885 0 obj << +/D [5900 0 R /XYZ 133.768 381.249 null] +>> endobj +5905 0 obj << +/D [5900 0 R /XYZ 133.768 367.001 null] +>> endobj +5883 0 obj << +/D [5900 0 R /XYZ 227.058 232.94 null] +>> endobj +5906 0 obj << +/D [5900 0 R /XYZ 133.768 216.536 null] +>> endobj +5887 0 obj << +/D [5900 0 R /XYZ 133.768 119.253 null] +>> endobj +5899 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5911 0 obj << +/Length 1082 +/Filter /FlateDecode +>> +stream +xÚåWÛnã6}×W.ZH@¥ð"ê’v lš °€»­ín€f„lѶPYòJò:Á¢ÿÞ¡H9’oi€¢/}1ErfxfxxH#sa"óθš·Ä7#7ò¡™ÌML©ø¡éGÌõ#lNóÁ"ÄÅÄþ4ywq‹qǘ—Dj¬~T½px;ƒØ&ÌúR^L‹¢v—Gây°6c­ùO/Å»´Š‘uá²"NDi;„!k¼Y¯‹²Vßë4KëTT¶ƒ1FžET&ÆÍÄøl`…LÜÉ»bæle<|Bf“ïLäÒ(4·éʤ$–Ž™96~3ÐË¥dK(ë”Ò…€BÖ7‰øˆÉ…Â+kÃ×ñBðm™Ö‚Wñ抓¤´qh‰ª‚.–)À²\Ÿx*ô;"VœmÄe“` ¬m/n)…úEÂ8æ¢ÈWÎIa;>Àùªš˜zÍ8¼‘éD®çëˆÕzŧ›ê‰oã´–%ª 'vÝ‘òÔ…X—Å ?†ŽøuW|.Š†¨«¢+"c ÞÚN»Fð—òÝ.Ó¬µ%…D”5 +\Êy¯ä.yÔŠ+]bIžr¡Y4º3̘÷ö·yöö¥1¥–°1³gb]«ÐiÓzÖÖjC*5ä6b¨²”Û-ŸÚYÀ‚]aä|Ðìçã_‡|ts§Ç¾ëÌmÒ¼¹¤ æW”µÓKIæç÷Ãáû_øÛñ•´=½»Íñi}–bö§Ê7ï`d3fÝß«N%f²ÂÚ´ÒçVgdûÌzM©È•y<Íž ÔLr~júÅ$oûýìDœ8÷òH8÷ê|ÉÑ•XåS/å×$FÿQb;};5ö¿µÃ=lÜüÿBÇÿ¼ŽÌ:óžŽA¨žŽA¿«_Ié—´kõK.ßèÌ*ý‚‘ž~A¿Ñ/08ª_ìP¿œ‡Ö;¿+H_2û…“ºa{g]¥‹<®7ê†æÓ'¸¸¢no¨÷ÂÖ›¨ÔO<Ö"¯ ^œË¯’«¤KÂ3Žö¸#Uû¼V¼á\Bľê½y&Sk¦t— ”ž¡µÖè68\Ï›¬>y4$Q­8o¾ÔäÓ_Lâ’\ï¼D.ƒ¸ÝðƒJÒP}‹¿×DÚçò§À*žwz•A&éÙx!íþÇ@µƒ~”£X½ÝkµñxSž‹ÜH_‚Gu†õýÓ®ûøvć7CþöúzÔ»=Û{ðz]P;v}ÿF¡Ð×¼~ÛW¯4¥a÷ÕF.m¡ß‰\k‘¨#ÓÞ“åF}\‹™úðTƒÑ%¡—8T=€¯¿æòD¡Ÿùúß„ o'K§:ÂTßX×ÅãÓBäû)ÿ «Bç +endstream +endobj +5910 0 obj << +/Type /Page +/Contents 5911 0 R +/Resources 5909 0 R +/MediaBox [0 0 612 792] +/Parent 5826 0 R +/Annots [ 5907 0 R 5908 0 R ] +>> endobj +5907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.057 545.917 243.642 556.82] +/A << /S /GoTo /D (group__avr__boot_g013d6d8c679ebdbc0e5fac179c38c9aa) >> +>> endobj +5908 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.7 282.008 248.71 292.912] +/A << /S /GoTo /D (group__avr__boot_g8d2baaca2991318e0b06fdf9a5264923) >> +>> endobj +5912 0 obj << +/D [5910 0 R /XYZ 132.768 705.06 null] +>> endobj +5913 0 obj << +/D [5910 0 R /XYZ 133.768 667.198 null] +>> endobj +5856 0 obj << +/D [5910 0 R /XYZ 232.029 537.114 null] +>> endobj +5914 0 obj << +/D [5910 0 R /XYZ 133.768 520.387 null] +>> endobj +5884 0 obj << +/D [5910 0 R /XYZ 275.755 475.34 null] +>> endobj +5915 0 obj << +/D [5910 0 R /XYZ 133.768 458.613 null] +>> endobj +5888 0 obj << +/D [5910 0 R /XYZ 324.72 425.521 null] +>> endobj +5916 0 obj << +/D [5910 0 R /XYZ 133.768 408.794 null] +>> endobj +5864 0 obj << +/D [5910 0 R /XYZ 283.127 273.206 null] +>> endobj +5917 0 obj << +/D [5910 0 R /XYZ 133.768 256.478 null] +>> endobj +5909 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5920 0 obj << +/Length 1388 +/Filter /FlateDecode +>> +stream +xÚ½W[oÛ6~÷¯2 €JåE×lÐ4N¢MºØY´…@KL¬U–<‰jâ ýï;)KVÜ4Å€=Ø¢ÈÃsùÎUȸ5q:9šO^œ߈œÈ‡ÇüÆÀ”:~ä9~„yj|0 q0±>Íß¼8Áx@L‰Cƒ8µT¿(Šv¸[fÏüR½X”¥p–{ø¹ Ûó:ò_¿Çïв)Fæ°ËK–òʲ‰‡ÌY³^—•P/W"Ë3‘ñÚ²1ÆÈ5 ¦’ïd:Ÿü5ÁÀ +x`5v"äÉjòá2R8|c ‡F¡q×’® *•ÄòbnÌ&¿MÐJJAÃ(@¸…2ÄŽF†ï¡žÒù :°l!ó#òü5Y!ÂXÀ«ƒ8>º¸˜Ç³³ÓË‹ëørúêXž=ýCy SWê2íÈq}W³ý{À6ŽYšVØW<±ëïÙ8g†ê¶VJþ xá7%ÄqÅë&@‡£MlB¨ÐŽ_%ËV¾ò!øø’ é%g©tdhŠ%—‹Àœe·MÅÕþe)çN½,6BS1¡˜èÃø%"tr¯ë=Z¸Ø {:Dz=LÍ {fY)Iu¹Ò’Þ½¾ÒnÖ¼WPê¶Y­Žoš"YY(š„èÀ+}X@Py–×¥ŠÌŠ‹*ãmJH©\í¶ÈÅ¡ÍQV»†žªý²N²h]Þª.×:ò5/R°ÂÙS˜$Ðv ÛEî² ­›üy42·~JùG„HÁe¸S¸^¯â…EÙÔ]°:V¹<{ÿªÀ©ÚzÖŸ +G|ô{Oko]?»é¹”ðêèíôñĆËë%O>+Ó³›‘¿@>)jQ5I~™F²3Éò=s` RGc¨ü‡PµìÆPÅw,=^*Êþùz·Ìr.·¿‰íÓŒ¿¶Bˆ†Lw‘–ëÿAðŸ„=àx^UÍZÄiV³…²W7ÃF^}öR=û¸Ù%¢ÇB¹WÔw|ºmËEßëÌ: A‡³Çz“CCW#¯•8V6}mmücˆº#DÃ=ùGñ>Dy± ¨GÇyøB¡pgüŸ{#íx¡ ^*éã$¶»n8T¹¡gž†'ÚErZüg Ç¡=’ºž ‹å"sþ¶}¼:ž^ƳéëùÙŹ6E)ŸŠy’·Å^n2õôqxkÇ T-¢Ê–=Üv> endobj +5921 0 obj << +/D [5919 0 R /XYZ 132.768 705.06 null] +>> endobj +5857 0 obj << +/D [5919 0 R /XYZ 133.768 510.375 null] +>> endobj +5922 0 obj << +/D [5919 0 R /XYZ 133.768 495.805 null] +>> endobj +5858 0 obj << +/D [5919 0 R /XYZ 285.179 450.758 null] +>> endobj +5923 0 obj << +/D [5919 0 R /XYZ 133.768 434.03 null] +>> endobj +5854 0 obj << +/D [5919 0 R /XYZ 294.344 400.939 null] +>> endobj +5924 0 obj << +/D [5919 0 R /XYZ 133.768 384.211 null] +>> endobj +5853 0 obj << +/D [5919 0 R /XYZ 243.675 339.164 null] +>> endobj +5925 0 obj << +/D [5919 0 R /XYZ 133.768 322.437 null] +>> endobj +5852 0 obj << +/D [5919 0 R /XYZ 240.905 277.39 null] +>> endobj +5926 0 obj << +/D [5919 0 R /XYZ 133.768 260.663 null] +>> endobj +5861 0 obj << +/D [5919 0 R /XYZ 287.65 191.706 null] +>> endobj +5927 0 obj << +/D [5919 0 R /XYZ 133.768 175.352 null] +>> endobj +5862 0 obj << +/D [5919 0 R /XYZ 411.982 141.887 null] +>> endobj +5918 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5938 0 obj << +/Length 1788 +/Filter /FlateDecode +>> +stream +xÚµkÓ8ð{E$¾¤õÚqžˆCZ`wo9^·[î>ªÒÄm#Ò¤$Ðûõ7ãqúÚð8Áiµòx23ž·ÇåÎÒáÎÕèñttvé…NÂ’–éÂR²(Œ0 X˜gš;o]ÏcBŽßOŸ] +q@,=&£$ª‡Dq$.b‘¿#HÇ^à~jΔÚ4c»õš­¤!‹ý°gzô=©Æ)¸{qñúf,¹ûêÅxâÜ]¥U^Õr<Ò"×>J]LGG˜¹#¬,á“­Goßs'‡ÏÎd;Ÿ éÚ‘> +d,ÛÑŸ#þ}ód°w¡ÇàO€Bœs÷^®ÞqîUŠÔ½º˜Î~¿¾ú}vùæöböøzzKøw<àü 0H€„õ?8;±Ðó­ó¼QmK̺¦µQin1+{ÞªX®Zt­ÅÍ ÝÞ'°kë ¶®õ¬¬³3¤œ!Ñl©ô@X@È‘œšì}Ýä篞ü1d­øµÖ¢úÿ¯ò[6Žúû«‘å¿ÚV,³Ï¿&¸ê"¼ÞrŸ‰8ºÓàûŒYw›ÂIÂ÷¿ßŽå†1Ï@[8‘üh_¸Û‰ðæÅÎÄ󙄳·“õUûTé´(•õùSÕfM±ÑE]™ÞÒ÷„~=»”šUqò}ÅHà +ý^Qee—CŒBþ0µ~@<H‰I/"bAˆéª0Iá»+HÕ ,]LÂRœ«¬L!wˆÊ&Št‹J«f1¥™²ßjúÔÖk‹i‹õ¦—Só&m¶ô¡©;]T$ºB§óÒ2-j«8{‚f˜\6q"mgöâÀª‡nžê”P&d¾ 쳺¯WÆë°-*b°œ{>2pÿº¡ÝºÈšYšº,UÓ²ñÄ!¸ÉRƒÖ +Döq;Õ*Ì‚æ¹ K´s”šÓçu[ì‘/áÄŒ?ßlÊ"3§´D¥W©&ÎF}ìŠæ¹é6z²S;ÒëÈ/Òƒ£2jRR䧪¶C¹gŽCle¿êbm¿}.Ê’póc´oµq3à›ßnŠª¬ëMKè=ã +*—»ŸÆ"pÕ±¹Ú@qÛ#3B2âV4T@Ôª*Ú†UÔi¥r–$!Ô )}¡¾¬µzpÊtX<"† T‰Çv<çh‹ ·^Ðjr +l¬gŸ›BÛý¢«²>’°ÅòjZM›uúµ”äÿ#a‡Ã}ÑîÙZÚšÖ¹eI³ÁÂÁ€«Ì Ý[hHãQFfŒÊl ÈRÓû,k¬6Ç™2ÝZÊbAkJKo,€õF5TDØs«MìµQU%|HGL² ôE ÉoÈ#7=.À´«º+s’»wfLõE¹€#÷ÁÞ˜ç¹K»Ò}F‘Ç©®YÚñîæjä¼%ÓTgƒ>-Ú™ ^ÈýU¼Ë!䇟+èi¨À©Öj Mßø÷–ÀÖn2Ý«¾>{ÅzÜi Ncᶴ9Ì)dí¨jKM%YØ]Wÿ‡ +êöâùå뛫‹—PG~B… ëíëOn±)ú1èŸAKoéÃ?ª©ÝŽOkBQþ ´N+0 ÜŽÃÀ½o.Hȶî´õB“r˜2ˆÎ5è\lÜíÉ„rY¦­>çØBº¦g²!ös£•á5ƒŒÏ½†[èÁÅbKðõ+ZÁ‘à¯eͬ1Cï™Ó)LHa|À‡j߃|;WÁ:·Ÿ+0«QГš´Òè3º× +ÃÆ}@ml'^ìÔ‚[R(ÒÜR@†4¯õ +ÕÆn¢a^IK0»+ƒ¶xoó¾hËGÎF*½áàX}"¸Ê:,@„v7ÀP43QDÂZeÔð–‹bXƒ2ñÝù–°yÑÂ@·{tpµÙcú:B˜®/[º—Ä‹q8+Ìéc{Mº{ÿâ¶n2ûzŒ¶àºÙ9X³lÒõz7 ã]·Bxm +ߎýv¿>¿!®'´@qm »Í‹²Ð[Bõï€ö›WRÈ|™À=æ±0´Æ½ó¼à´G/‹¯vº?ƒnùfz"À ØF!CB¨æO˜÷ii:žá´=Ò8i6ߢ§‚âŒÿ_=Öí ÊñLŸ +>Û +à L¬»é ‘ã­Ï’XìiÑ«°UûGT¡dÇ00ž$'‰5àsÎ?îÞ“˜ùð¤‡H?(L¼‡Ešô±BÚÞû—£¥Ù#³ÉNAÄ ÍÆ°çÀè­þ¶Z?ÌÞ4"þ™`ÞñðàÏ2 Llò¿ü(Óÿ›KƇ?ÆÄ “}…]© +ç›þWÛùsºêúg]F€O‹à<ù@Ä´ó8·ÐcPÛQÖ>cÇ2r'ðP²æ¶<­¿l—ª:5ù_ª  +endstream +endobj +5937 0 obj << +/Type /Page +/Contents 5938 0 R +/Resources 5936 0 R +/MediaBox [0 0 612 792] +/Parent 5928 0 R +/Annots [ 5929 0 R 5944 0 R 5930 0 R 5931 0 R 5932 0 R 5946 0 R 5933 0 R 5934 0 R ] +>> endobj +5929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [438.307 313.406 478.476 324.31] +/A << /S /GoTo /D (group__avr__eeprom_g7ccd65b76bb9ed5ee03855779bae28de) >> +>> endobj +5944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 301.45 192.866 312.354] +/A << /S /GoTo /D (group__avr__eeprom_g7ccd65b76bb9ed5ee03855779bae28de) >> +>> endobj +5930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.674 162.905 230.641 173.809] +/A << /S /GoTo /D (group__avr__eeprom_ge63647a896a731935077dbeb0a1b52ef) >> +>> endobj +5931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.898 162.905 399.124 173.809] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [447.701 162.905 478.476 173.809] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 151.323 162.441 161.853] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 137.998 228.015 148.902] +/A << /S /GoTo /D (group__avr__eeprom_g98c859a256541fe119e47ac4fdfd1ebd) >> +>> endobj +5934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.404 137.998 436.631 148.902] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5939 0 obj << +/D [5937 0 R /XYZ 132.768 705.06 null] +>> endobj +5940 0 obj << +/D [5937 0 R /XYZ 133.768 667.198 null] +>> endobj +5860 0 obj << +/D [5937 0 R /XYZ 393.88 639.611 null] +>> endobj +5941 0 obj << +/D [5937 0 R /XYZ 133.768 622.884 null] +>> endobj +5859 0 obj << +/D [5937 0 R /XYZ 374.234 589.792 null] +>> endobj +5942 0 obj << +/D [5937 0 R /XYZ 133.768 573.065 null] +>> endobj +5943 0 obj << +/D [5937 0 R /XYZ 393.352 539.973 null] +>> endobj +769 0 obj << +/D [5937 0 R /XYZ 133.768 523.246 null] +>> endobj +773 0 obj << +/D [5937 0 R /XYZ 133.768 496.634 null] +>> endobj +5945 0 obj << +/D [5937 0 R /XYZ 133.768 179.976 null] +>> endobj +5936 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5974 0 obj << +/Length 1393 +/Filter /FlateDecode +>> +stream +xÚÅXms£6þî_A¯_`&(zA¼dÚΤ='Ó›¦M]ßôCrÃ`Cl¦r€“K;ýï•dÚLúÁ#À»«ÝçY­¤…ÚJƒÚõäûùäü +Ûš<› ó ÛÕlÛCÚ<ÔîtŒ"Ƨù‡ó+„jÂâxÌR%õh˜s€cíSý)?¢ÇÜ@®žmÀºÃ*µkÙJé»SV/ “ ¨O§·3ƒ@ý—ÃÄêë “8]&"utŒ(·4™Î'Ÿ'ˆ)C Õ¢EÀƒT[n&wŸ ²??hÏÕž+ÑF,&Š¸b¢ý6ùuOCH€ ^¾î!ÄiTTN(e¦ ëš6°ˆ§™ oˆl¡x1mèhw&…Pÿ:”åŸ<œ|%ãšUb†éôfzÓÖçø~P–y¼00Ô·eäû÷Bþ+¢eg)|8UÙæ{Aê×45±,€øU¼ÓùqáçQ¾´,éÒÅ·pAàR¼øÏK® .{}©´ÂLŒý-ÆçuœDâ‘ ~Õ +L)«`ZdªD ØH.«mZójT”A/ ÓBˆK!¤Ïç3ÿöãlêûê{œ²UÄÒ£5.·ÓÒõ› õÛ +bŽ„¿x)£¶sÜ GhÉ‚-ÇÏËʉUƒÄ[Œ&b+œÊÅÈò@–³xð\¤ÊŠï?¦«%Àb¥gPÂ)|=ˆ;ñõ „/×çq"{ÀÜjà*³¸Ý±pÓ=Ü®¼ÜdÜ6Š{·õ'^;³8ì™k5ª@’-ÿ8œF”º¹VäYÀ%"ÇûÈâ> endobj +5935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 632.066 227.467 642.97] +/A << /S /GoTo /D (group__avr__eeprom_g79a42ec6c6c8bbbe6e34ed57a52aac59) >> +>> endobj +5950 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 619.764 260.104 630.668] +/A << /S /GoTo /D (group__avr__eeprom_g7ccd65b76bb9ed5ee03855779bae28de) >> +>> endobj +5951 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 607.462 267.008 618.365] +/A << /S /GoTo /D (group__avr__eeprom_g44c64ebb425fcb34b8d4dc19c4079869) >> +>> endobj +5952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [309.066 553.835 339.292 564.739] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.453 553.835 417.587 564.739] +/A << /S /GoTo /D (group__avr__eeprom_gefdcb4f20942b263a3c36e776906f2f5) >> +>> endobj +5954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [448.249 553.835 478.476 564.739] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [323.579 529.577 358.786 540.481] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +5956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.785 529.577 445.137 540.481] +/A << /S /GoTo /D (group__avr__eeprom_g55c2be6e18755d37cf348122c9178e2d) >> +>> endobj +5957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 517.622 192.886 528.526] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +5958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.59 505.32 355.798 516.224] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +5959 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.8 505.32 446.133 516.224] +/A << /S /GoTo /D (group__avr__eeprom_gdb05445628302b2099c9547b6940ce62) >> +>> endobj +5960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 493.365 192.886 504.269] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +5961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.989 481.062 335.104 491.966] +/A << /S /GoTo /D (group__avr__eeprom_ge272eeee87e7591ee48b0f9abc62c98a) >> +>> endobj +5962 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.315 456.805 325.777 467.709] +/A << /S /GoTo /D (group__avr__eeprom_g7ddb40e18489f6112d84c8760814f61f) >> +>> endobj +5963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [329.592 456.805 359.819 467.709] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5964 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.223 456.805 415.45 467.709] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +5965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.315 444.502 328.995 455.406] +/A << /S /GoTo /D (group__avr__eeprom_gaf8e2ad1d7f06bf150a4f6d21ed768af) >> +>> endobj +5966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [332.81 444.502 368.018 455.406] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +5967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.423 444.502 428.63 455.406] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +5968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.315 432.2 333.976 443.104] +/A << /S /GoTo /D (group__avr__eeprom_gb3f2cb6bb7ae4927d18415ddd45cb2cc) >> +>> endobj +5969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.792 432.2 372.999 443.104] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +5970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.404 432.2 433.612 443.104] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +5971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.779 419.898 337.222 430.802] +/A << /S /GoTo /D (group__avr__eeprom_gf5915f666c50aafd5dcf48c8b3442f28) >> +>> endobj +5975 0 obj << +/D [5973 0 R /XYZ 132.768 705.06 null] +>> endobj +5976 0 obj << +/D [5973 0 R /XYZ 133.768 650.391 null] +>> endobj +5977 0 obj << +/D [5973 0 R /XYZ 133.768 572.16 null] +>> endobj +777 0 obj << +/D [5973 0 R /XYZ 133.768 395.326 null] +>> endobj +5949 0 obj << +/D [5973 0 R /XYZ 133.768 372.641 null] +>> endobj +5978 0 obj << +/D [5973 0 R /XYZ 133.768 372.641 null] +>> endobj +5948 0 obj << +/D [5973 0 R /XYZ 380.212 325.556 null] +>> endobj +5979 0 obj << +/D [5973 0 R /XYZ 133.768 309.413 null] +>> endobj +5980 0 obj << +/D [5973 0 R /XYZ 370.807 264.366 null] +>> endobj +5981 0 obj << +/D [5973 0 R /XYZ 133.768 248.223 null] +>> endobj +5982 0 obj << +/D [5973 0 R /XYZ 463.03 215.131 null] +>> endobj +5983 0 obj << +/D [5973 0 R /XYZ 133.768 198.988 null] +>> endobj +5947 0 obj << +/D [5973 0 R /XYZ 133.768 119.253 null] +>> endobj +5972 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +5995 0 obj << +/Length 1432 +/Filter /FlateDecode +>> +stream +xÚÝXmoÛ6þî_!`_d`bøþ :,)P k—z؇40KN„ÚR&ËͲ_¿£DY”M×N:Å>­ãñx÷HƒqØ7NÃ.¢XÐv*iMÈí³q$Ûge j_eÕ¾ÌÚì"ûØË=Vyí¶V>dÕ¬ÎËâÇvŒ‡Ëe!N™ðb‹$ã¾™sá妘[½­ž_Ëùf•u³”U»O(G âOFÄM_[ѹ§Ó¼°dÓ©HÇ€¨2OÛ¯^pºÈLo—åüS+lƒ´Ð™{;¡‚ù,¨;* áIiDëd¦Ót]œB z« ü)%‰çe¡_°Bù1#Æ œt¢3f]ÍCÆX*Ïašÿ“Më€jË ám°h$ L{[ÜŸ]2æ ¤)é„®Û(Þ8m>Ò |#¬A’¤¢£É,@×űêÂ-çÛ$¢FìÛ=à”BœmenŸêÌQfQ•«0©fiZeëu`AB1¢\÷+®«1Sñ<°. ›Š­d]¶ª?\½zÐË!iHB"̦.'$&Õ0PŽ˜lÈ-ºË-J`©Wc#âÉäjúþ«‹†bÍßå`¼É‹ZOëvdÜ“Í(ö«%\‹zGs®ž} +@µ2L¡„RÑÞK!˜rd8?¦ô˜J…ˆâ‡`Zv¢Ýþ‹QE•ú æ!„ãÁÆde‚ˆ8}¶}©E(úíß}ôíØFQ~; +…?µÅí±IpU:¼Ü¡¢ñÅVã>€ÓZ²o „“òø‡~Œ&·¹ÛcZnn—îÿ­kš‘uÆ2¯ëîkV¤ù¬hL|1†(Ä^õ…ìÅ¢Z"EY°´#¾ƒ!MqCz'ƒX1q"-†ì(„¡ |ÄAø4Êþgð!²‡Ï7€ ‡°ª¯G tÒä@3¸í¨;ÄP=„†÷ýœyÐhúÔ®™³ß|ø}2H~J¿˜ŸÖJ)ýÅ¥ $sý²fîÄÎò»kæ(’R áýgÈ8µ›S`”|a7×5XϨºX^éѦkÐÇ5< P \%Nk ÷{8ÿ48d–¤ˆC(˜D¤«ç¿•uöÜCä例DC­»æ,æ"Q¥Y5¿µ@„|}O jìY!XÝÔnu3CôÁáÔ¯nðu}Ãι™ÑÁð@ƒL•D룥ÍPù\¾Ó™k5I¥w‹Ö!ÐÁ‘ŽügJŽAîhÿ(Cîæß+·Ù1x5jš&â£Ý…¨DF1í_ˆjƒ˜t1}öZ0Ûö§ísr¿q×yÙ¼}á®oÅç”ÝŽ(ÆîmaoûëÈæ‚ÙÆd™ßλ$ÑÝþýt—»[þ¢L¢š +endstream +endobj +5994 0 obj << +/Type /Page +/Contents 5995 0 R +/Resources 5993 0 R +/MediaBox [0 0 612 792] +/Parent 5928 0 R +/Annots [ 5992 0 R ] +>> endobj +5992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.759 244.002 429.636 273.068] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +5996 0 obj << +/D [5994 0 R /XYZ 132.768 705.06 null] +>> endobj +5997 0 obj << +/D [5994 0 R /XYZ 133.768 667.198 null] +>> endobj +781 0 obj << +/D [5994 0 R /XYZ 133.768 600.619 null] +>> endobj +5987 0 obj << +/D [5994 0 R /XYZ 133.768 578.308 null] +>> endobj +5998 0 obj << +/D [5994 0 R /XYZ 133.768 578.308 null] +>> endobj +5984 0 obj << +/D [5994 0 R /XYZ 429.318 531.223 null] +>> endobj +5999 0 obj << +/D [5994 0 R /XYZ 133.768 515.057 null] +>> endobj +5986 0 obj << +/D [5994 0 R /XYZ 310.504 470.01 null] +>> endobj +6000 0 obj << +/D [5994 0 R /XYZ 133.768 453.844 null] +>> endobj +5985 0 obj << +/D [5994 0 R /XYZ 426.07 408.797 null] +>> endobj +6001 0 obj << +/D [5994 0 R /XYZ 133.768 392.75 null] +>> endobj +5991 0 obj << +/D [5994 0 R /XYZ 396.461 347.584 null] +>> endobj +6002 0 obj << +/D [5994 0 R /XYZ 133.768 331.537 null] +>> endobj +5988 0 obj << +/D [5994 0 R /XYZ 133.768 239.522 null] +>> endobj +6003 0 obj << +/D [5994 0 R /XYZ 133.768 225.513 null] +>> endobj +5990 0 obj << +/D [5994 0 R /XYZ 325.169 180.466 null] +>> endobj +6004 0 obj << +/D [5994 0 R /XYZ 133.768 164.3 null] +>> endobj +5989 0 obj << +/D [5994 0 R /XYZ 384.287 119.253 null] +>> endobj +5993 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6009 0 obj << +/Length 2041 +/Filter /FlateDecode +>> +stream +xÚXmÛ6þ¾¿Âè'X+|Ñkp= ×î).HšÝ»Ã]´Ä] •%W’³õýúÎpF²ä•³H?‰‡3ç‹Ç…X¼¹úÇýÕ«[-R?àsÿ°Zûq”,¢4ô£T.îóÅ'O)_ËÏ÷?¿º•rĬ•¯ã$9®¿ÇD\ìÇÁÀ`–*ô¾4¯­õ·3òå 8“Ùÿþ’¼×Ë•–»qË• +…wwØïë¦[®dÆ‘§dŒ"®nî¯~¿B±b!GJ?á"Û]}ú,9,þ¼¾N“Å“cÝ-t¬7–‹»«_®Ä˨…±¯txBMûÚO@!„×v¦+2Ð9L½õº¨Ê¢²ë5Í¿,ÁºÈa ÏÚ}³”‰WïÖOMÑÙõ“[nrbþU„âPTŒÖ£Œ”Qqà‡É€Ò¯Bhâ +ÃWâ‡Qϲ^ïg°–ŸAÏs½\űö¦çN$®TšÀýéÅJ´aØËþbʃ‘Þ#OJ†’X´« ýD LŸÁÏ,KŒÏ†«JnÞT@üÿAìÈ3 }騱6!X'DÆZOÒ/´êùºšßÜ|ø¸ „÷þŸ—çmÛ™s’Зò9ðâ"ðþÁªœ½2I},VàxZ©ga +\#nø Üdz8±¤¾Á×u*1~8¨gÃ#ó«3÷€ Á­”%œ‰ÞVEF~Ⱥ¢®ÎŒa~šFà|(¥í÷[<_½&2ô~øð–H¦,k´û©å9}€±!Nw×@i÷6+Ž4éz‰ƒÄÖv]Q=²˜‡º9ãtû!*UÆ,¥½¤ÕÜ:ð‹Ìž¶Ó-+)¶"¾§˜àú½¬Þí È'4Å3Ão…àþWk:×d5™£çÔ`%þ¶r~cÐßTœ²+À`p…8=¹Œw‡¶£Qn‘^1LÁí¿înÖïnÞ½ÿ¸ŒBï¿ë»·ÿ»á­&kj²‡ãÐ岑¸Ù\Ú#7V ŠpyÃâÓÃF£Í±ë¯¦Ûš®¿$,EÛõIì«wpj¦¹Šúƒ/Ø%]˜$Áqo91­×¨Ìº»¦˜u6¦bd£Û`˜lhÚv 4c‡5P)7Y°0›²±)% [æ-q8cRÑ¿±°98]¿CVR!ì“÷æøWq~ç?€ç³à-¶Z]Ø«µô¾ÿž8$M Éõn@BË‘¥® /:Š¡O_q‘aƒ>:ˆ§? ªùhlÂ`»ôö¼ãPµÅã·Ì¶†ÄAcT\"ÒÎäPè&Q܃$ÓN¹ 6ô—ŽÏx\òQ,K D Û¶Åã–iîÚ`3º'-~»Iãû /Þ¬¸û µ§Öx0 IÔd»;k,G…Sƒp?Û¡ã„lÃMÜõÙ +z^gZ¶\n°˜Ú›mL“ygj<2gþµˆéã;C¥Cd ÈÀQÎsÓØù+LÒÉ_#èüØ_ÈS}<´=qM–Ó4æH$Æe%Uè'Ó‹ž„žöE·= å¶ø¿¦€a‰ÏrÉÀuo»Y°1Æ®ßÄ~—*hUØÊ=ÚbNèÇqä„‚ÌkZ¡²1M©05LÆ”KïÍ?ò¼ëšbƒMÆ¡cÙô ìyA ¨lõnU™ó~ž½ _hCÇÛñÙð»‹Æ%ñã’èd\JÆÝ]ÓJáñ´ZD}%s Y ÑÔÝ‘ÞdMa6ôL¡T…xâ4>Š—Ws€*öK’Gô>ƒæÔ! I’ÀÄL‰)“G*ã&,'øå«óiFïufé%;=eÄ'Ë¥_ N«zÎkÚ¢<^êµNå+7™¶Y³8ÓºÛoù¿Ùÿ׌ü4ÖÉø¿f‚Í+kùÆV¶1]½gÝo4øÉf4è#Åk¥_Ë„fJ= XuÓÿŸsœ–:öVe±É¦eý§ú㣭ÎMþ ÓÅ~ +endstream +endobj +6008 0 obj << +/Type /Page +/Contents 6009 0 R +/Resources 6007 0 R +/MediaBox [0 0 612 792] +/Parent 5928 0 R +/Annots [ 6005 0 R 6006 0 R ] +>> endobj +6005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [276.017 432.646 308.525 443.55] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [325.254 422.458 366.609 431.595] +/A << /S /GoTo /D (fuse_8h) >> +>> endobj +6010 0 obj << +/D [6008 0 R /XYZ 132.768 705.06 null] +>> endobj +6011 0 obj << +/D [6008 0 R /XYZ 133.768 667.198 null] +>> endobj +6012 0 obj << +/D [6008 0 R /XYZ 331.475 627.656 null] +>> endobj +785 0 obj << +/D [6008 0 R /XYZ 133.768 611.914 null] +>> endobj +6007 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F33 2429 0 R /F20 1882 0 R /F36 2440 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6015 0 obj << +/Length 1711 +/Filter /FlateDecode +>> +stream +xÚÅkoÛ6ð»…€›Ä*)ê™uÒÕiS¤IW;Ö®(›¶…ÊR&ÉM²aûí»ãQ¯Dɶ~™¿ðx<ï}'3kc1ëÅäÙbòäØ ­ÄMBXk‹ áFal…Ià† ·+ëƒíy.÷‹WOŽ9ï ÏQœ4ÕS¢°‹ÜÈo ¤ãö—òÉz_)w;ÂÏ÷\oòÿ‰ß¡3œÙÇÀΙz³çû««¢¬)‚(´=#‹Él1ùm‚l™Å{ +r7aµÜM>|dÖ +_YÌIl]kÒ%| åx1³æ“Ÿ'ÌX=b=Ï"Ï +Cà$|ó¬¨Õ¡¤¹·XÿV ÏXSXXàÑ“5hºIXXb¯”6]ºTÓêJ-Ó_ó–Dqòäœh¶J®TIH<Ï”ÁËŠW¥áRì«ì¶aŒ¤¹ZÉñÅ|özöú€võVåD†ø)ªâO9.IN Š8²S|$Ží¼¨ Qª–·ëL}ONp"‰ò!€‚t Õ è[/Ís÷t‚ÃN§¾À ŒšÌ(\Œ~é='P++)À@äÑþò­©¹~ß™\n>Ší#‡‹À~÷–v–´'ÕhU‹zª!^«€¤¥R5š/Š.ôN.ËÂ\¹Þ¦Ú¤ë[Ú€¢†ç²ÞËlÌ.kD‚ÇöeZW¡£ L!øf¥Öir„Œu‚£Ì1}zö#DèظÓú­ê.04sßûŠN"èŽNE/ômx˜[.K%kLIÜHZtô]õ™ uYìÆh„ïw—PÅ‚ÀF—ž}b.§†©©±¡?’ßúÜH¢Cu4¾(~Ñ+m6â¦+ ´×Y¢}göíT°S»¢¼%øò¶VTñ…3%b‘½,v—Ú‘¸¡ÈÀ°ˆê$Bm FÂb£€¸lv´ö·’–ëm‘Ýg êþÚ-®}ÞÔé6b¦£³ç¤bq¥JYƒ5ÀÚ&‘²ô³éfìQ_ܹ:¦ŸŸ/æïEù·½`§~ÿ É‚»øù›“ÙÙ}ô«ÅÑ‹ÙY“$wÂ|ÚÊv¿3>칬‘x×sYDâFUAئTtÐy–™v‡X¨øÅP|Uskö•ûÌP ‚“5Á ÊiâsÄèH%6ý ]¶a½×q²‚¶~ªMö|vìD>Ô>ÈÆ‹S'ñ œ×û=¶ÔW4[½œÈùš64T#D)£ßy©ßÍÒÑǽ$¦Bă +›ÄÆ" 9°¼L7[‚Ì8Pór ìÙÃþ«GrZg7£Sl­òUSú»¯‰®V0]-BÏï†s_˜@… øü­ö/Ÿæ'ïg#_5œûðÕâßý¬ÔmøðaC!ÐÜ©¾àTðIÊ4¡ŒpÊHÙ `züÀ\ï=ÀË øâñcÿác~öjæ&I¨Ke˜ 9zsB—/*¹15£ñæ±n8ùPØ<Óõßìë:Í7¦»e¦ÿé©JIÍK¯õô¾c”¬n1<ÍÈuQµ¬~J’ïPUC¸RUºÉeÝ$BŠ³ ÌÒßa–ûúi(Í—Ù~eÆ¡§¾þÓÂÝþغ0v¸Ó}šáÍyõÝôÓÄt`\ïfÅusM/m9<º8]Œ°r·ºÚô®üm Y£‹ºiŠQOºÙ}…¦}Cµþü~à¦Ñ¿=˜ÅùÓ£ù“#§Š¸ÿQœ¸¢‘û…Êqêhb§0ßՋ힀çjI€O g‡ž8ä1í h¦›äôÿEŽˆìi–^.›²lX7·(wTþt µ… +endstream +endobj +6014 0 obj << +/Type /Page +/Contents 6015 0 R +/Resources 6013 0 R +/MediaBox [0 0 612 792] +/Parent 5928 0 R +>> endobj +6016 0 obj << +/D [6014 0 R /XYZ 132.768 705.06 null] +>> endobj +6013 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6020 0 obj << +/Length 1468 +/Filter /FlateDecode +>> +stream +xÚÝkoÛ6ð»…ƒŒÆ õ–Ò®@º:Y‹ éwÀÖlÑ61=<=š¶Ãþûîx¤ ÙîÖ~Ù€}x¼—ŽÇ{‘[‹[W“g‹ÉÙ¥Z KBXkËñ<…±& ÇZdÖÛu™ãOß-^ž]:΀Ùs™% Iq=!Ž‘ºˆE~ÏNÝÀ~_Ÿ­»F°í}¾Ë8üS³?ý'}çÓ™çpûÔMgnÀí»n·«êv:s¢ +m×IPÅd¾˜ü>AµÜrtXÂkULÞ¼ãVÄ—g^[Šµ°<XÌ­»É>ôšç1IÄåµÀeqY¡FÚk²KBÎí"•å[ð÷•Ì`uÐ(P4K˜Äû‡Â9 sܘ>jÑvuIzøcÅ5²iù?µ¯øÀWÄ—XàÇ11ÞÖSŸÛ§ä¯®‘å†Àv«}ø/)­eºÌ5&“µXµùGÚɲiEšÑ¦ZïI_¾¾›ßX¤«º:U`gÖ}ï;=å~eç7²\å]&èäORY±íSã;'f È(Þû{Œ¨{ímÚ8mÛZ.»VÜßãà×Àid¥}Šˆ†'x5æ#âw_sS,¯Œ˜Z®Ñ÷Ïç—¯¯§GT±­ÜlG"h’zv{»¸û•ö[Zç0Ÿß]ü¾,ü/ÍmÔ Œ_?°?V!¾ ̪*v2§ô€­,iýþÑ#Ì?2"À™–eÕL•ôPB&Ü”i‹®$E­LsùIÔ !šŠ$z}E×hmYuþo¤ÎÙ¯ø½øV +ÎÎhUÉp¨ë¿‰ï±e*écnþw§éÓáó?TXá„jÆS'°E }Ôu1f1ú=ס4@\JKÙKbsTÍGÜ +Ú9×Ò¶1:Ò–ØT<+Y±¯ˆ‘–½r}˜B ïÿGÊÍêRB‘bÙéâÕ‹Þ×ÐÂí¦]]íD ]* lÖ3D,tµƒž¡¦À³›Ný,ðé'€1¹r8D1‹Ýh4àLhŒ¨7zžø óqäuœQâÁÌÃm}£dÞ¥8 œpôª…úa¯×ؾ-&ÍsÂ(ªJR2ñ–s·”Øô¢­«zÄä¡W±/ ŠêÅ›3/HÆW X¹k~!Ú¦´lòj™æÇ +Ä´Z¶i«Ú ¶ ®4§m +†ùa†ÉæsÊ %m°Üª€üBBxC&¤P"`ebjýoŠæ¸×S:%÷(½D¡ÚÖöZvØÉ‘uy‡ÞÀ½, +‘Ihj„B„Q4uìíH¨»—ÄV1;ìòSJƉóÅV÷ ¶îÛQ?òàF–£ÚóëKêix‰¹F>H („Tˆ)Á¶!`tBدëªØÓ©­ò÷‡Ã>«üY(GŽw{s WÁí_¦P½ ›g®ëéëw]ß.DZ6„¤zƒHꟀ‚~L˜›[u„MÍ<2ߥ:@ÊÌö v=r¬ë®\éDBÆ´ÌŒ¬8b¥*³ÃÑZÿöÚÅÑÀRÏÑ»®5㶲n8cÓu`.À>Z?>Oú|ôù~¼!ÏŽ”L¬òT…µÂ–„m=- NÄnS-ݪz®±9<Ô…”hݬ Ù›Óc—þ°•«-VžØ\0TÓP)ͪ) GÔÔ~2¢èª›ª–Ø'²Ø墀<ƒHS)s­Ý‹Cõ eÚ€‹À²NkÕC4_Sõ?fóá ®*èôÜ“«Ö\r»%(5.(1ÐfeZˆìðÑÅFmâèÛ5‰Yä}ÍËÕ¼óC½xøÎæ™IãJ”¢Ö£*>îJZÛŽ€çbE€O‹ÃÏ]ï܉içr®¡5žï‚N­ýS/²gà^­a©_“Ï«7¢Ü?ò_¨õ3N +endstream +endobj +6019 0 obj << +/Type /Page +/Contents 6020 0 R +/Resources 6018 0 R +/MediaBox [0 0 612 792] +/Parent 6022 0 R +/Annots [ 6017 0 R ] +>> endobj +6017 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.347 235.035 251.855 245.939] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6021 0 obj << +/D [6019 0 R /XYZ 132.768 705.06 null] +>> endobj +6018 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6028 0 obj << +/Length 2397 +/Filter /FlateDecode +>> +stream +xÚ•kÛ6òûþ +‹ ÄŠ$êa½6IläzÙŇ´XÐm«‘DEeëþú›áŒdÉ« èÃápÈyp +V‡U°úpóæáæÕû(]å~žÂð°_…BøYº]¥yâ§y¸z(W_¼(òÃdýûÃ/¯Þ‡á„XD¾Èràä¨~"Š»ÌÏâ‘@®£Äûf^U­UÆô'똦±EÛaÏ?Äôõz#ÂÀ»xvëM˜¦i—pïÍÏ7ÿ» Ù4ªä«Ò¦öôíE=%±.¥•K÷œÜn'‚Ø]F ݵ.•¬ û—2ºÃ#3áÝk"¨,­UÌá[er{”–Ì.AÝ­COÑ„µâ ã&w‰^¹bôøu˜xª%â§Ê &©“®›‚†îö„B+«3ÍèØ$óZmñ¸m„-áœÁ‘Š Ž3¸ƒÉ,`'‘_ŒÂ'éˉtÕUVnÞ)kÁ¾ Ûa1óӈߠ·%±×õ†!ç20!¬^92°iš¢ÿ=|1 Naä'I4<ýÒ©ã[U(ÓGeþ &…Ç%äØ;‡ñ¬{CP¡›SU«qÒȶ¤I]µ ^5 .Û`ñ+M'ú&Œ!‚dÛ¹zFv\Ø!ä4 ã\ nåÈ@¡Q…¥II®„²ºy§jXSÌw<àï²½{õ/Þ dÉr\Ùãé£RQ÷¥{š0{rî†ÐÙŹ ÁBX£Äñ-´JQËs÷ c©‰ŠjÄ £jÑ·JZÞy›<È?ã¡ÏÆ-Ó<†ÿ7Ú!ÑÇ—®=˜þòKüìòÏïñ‘ó퀟…|i!Ïíz« ’?L²(Äo©$F‰¸îÍ9Ëd_ug6štJ5¹fƆ«1œ¥³¨‹C(¡™¤¡®¬­™9ìî¼NϽÜÛ¡¡{ÞM?‡D:xÛ³Ûà_š«S9QÒ?!´’Øñq7¹"Lo½ó‰â–ÿ"Us‚1 Íð3k’ã¦?ž–‹GÜxwÿ™­>/7qq•Œ´Px@h_löN +Eü h¤ùJ‡±h’À°6Ð8uO˜’ʘé^›+VÝI•û‡ÊÇt ЀÉo&—¶TMéš[> endobj +6023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.87 564.727 298.378 575.631] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.362 365.357 243.815 376.261] +/A << /S /GoTo /D (acks) >> +>> endobj +6025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.528 148.783 425.657 159.687] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6029 0 obj << +/D [6027 0 R /XYZ 132.768 705.06 null] +>> endobj +2706 0 obj << +/D [6027 0 R /XYZ 133.768 471.505 null] +>> endobj +789 0 obj << +/D [6027 0 R /XYZ 133.768 456.935 null] +>> endobj +793 0 obj << +/D [6027 0 R /XYZ 133.768 430.323 null] +>> endobj +6030 0 obj << +/D [6027 0 R /XYZ 133.768 351.783 null] +>> endobj +6026 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6038 0 obj << +/Length 2130 +/Filter /FlateDecode +>> +stream +xÚ¥kÛ6ò»…~‘XKê­ 8 ol{—¢·H‘,ѯ²äè‘í¢èï g(KŽ¶×»û$ržä¼)±>®ÅúÍêùnuóÚ‹Ö©›FðÙÖÒ÷Ý8JÖQºQ*×»býÁñ­$‹µœ\Oº©×ùiõá±.ùÍZ¸~š¬ï éií@*‘±Z¿[}¿l³ë¯±¡ïéÒXÈ™ ÃØõüÎù•®ój(Ôf á|Íí`® â¶2qS/%–Ûww?‹P<{ùâãg•÷°––,uƒ( ªß L¦®>ƒ`77¤kèTK«¼±úKÕ*÷2²Ä?ØæbbsÐéÅn˜ÄDr§(Ôó}§ßH§áe©pá9y™{K 62t~;W™®u}4>!g´GöÊÝ›Õúƒa̺Nö•e=·Í±ÍN§ Ùœ© Óe5éUÕY¯›š‘ûfè o,¾ñ„³í q²ÁÐ@ +§]«Žv÷­î{UÓ¦k*U=ÐZ3lzjØ‚úã•»» ²F¦¬òEÖçå6«*ˆâ0rƈÀ-äÊ"<×üÒ#²R$¾ÍƒÛ‰@S ïP³1€_‹â›<ÚŽPhWhÍ(Ugp·‚Ã…µÎ —Õ¨À“NÝà×sJ€s ÐÈÁoÝõpSU<½Ÿ:÷¥ÎK¢º0–®ÐyÖ+fˈdnŽ˜ÌÑV‰‰;$*ÔM– UÏÌ9ÅŸcÁé=Æn;­êz?‰8ŒÙ‚Kç¼ß?Ð÷ßÃéŒ!IÔ,`äšHúŒ. ‚AÝÍ6€sü´‘pÆf ’ÜÄ.°5HK m« e¥¢ùÐ*ï†ó¹zàŒoÙ»õRHŒ¡æ‹{©ïÔÙ‰ÜgêÔ¤Žzn:ÆÏóg/¡Þ˜B³lQâFQliÙs¨©+›¡*HÏ^¬P? áÕŠÁ÷º/ÿ"ë -p³4YǺ†¼Dú± ×]iKX Ý0ç~ÅK[;Ï7~èðí؈HL`" ‡ŸÙÕ„Í*(lÚ膕@üxqêÇI¼ÁÁ|8ã®d­UÖSæÓÐõÝ3jr±#äúKUáZCµ{Zuò¬S ýSÊØÁ¬)/XþÊ¿×}Z,ôéÑ-W +¡Ë‰8¼nسR% Žâ5—Õºéí…Lg,Ü/à¢qÖ`¡iA P…¼ÐiôÿvØIì_7Ùð±&ü¯M6œ7Ù¥æÀ²ßªŽJ·ô.¥»[°oVãÈdByžm$Dþw¸“P“ÛâÞDkËø¼R™©ÿ°î-Ó±jöYÅJ! ؤéñckä·ŸíÉèûîîÕÒ´WÔ^·|®Y…‚DÂ8Rè+p%*£°3i$Ó…à/*({»rèž¾nÚç#ì½ÆΊ«V2Í* +ÝQG3N¹¥Ö`l‚ŽÛzºîuEËe껺Ç#úꟉƒ9ÃÝ«Ý-­°+¶ƒmSÀ€ìˬgtÇBO8ƒ´ÁV`Å-œ;o =qûMLõô½Ô9gmOæ@n› ‘Ö—Ö$ +5ÇéLD°2¼™³pËf09dèÈþˆ¢NjœY/_c N|pÖ–†Üb7ká¨-á..ÆV ç5 +mK†#Y×Ô%©˜àøœí&!ÊŠÆBû¥cÂPˆ¥> +Ó‹b?ŠœSƒ%Þâ™Maua0¤!÷sC×y…êtk\a£(© ëfh7p˜ÿ`vÍI± ÖdNM½4#´êÓÀŠbIé ߦ-LÄÀ'üžÛ©(Ôcº›æ®{sÇŒllN’úBme_Ò÷Ú•þÕLµù¯öìnAR_óéf"¤ç‚÷Šö’Ôé9ÆþS¦áåy÷êvÎÄÎ.ΠѹÍ8¬^¹Aèj3°×vž½D~8 ;ó…Ê«¬EŒâgÄ#ôÐTUc<;rÐ(÷ðôïÌËb>(óÔûþý{3ò>¡i'à·ß=ÿçw/¾ýË!8uC~§3°ëº4ïMPáßþ•toÇä«×©¹v¨µ‡]À2Œg¯ °íÀUüñ@2Ú~Fƒf•.:õšÁŽƒ§AÓp*ø_/~`ÈÃYYù4À˜ qü0v‰á*þõ?~MþŽ™Œ3!ÆÎÞD8òN¼ø33MÜØÿo~eÚß¾DˆŸLY&©ë[ß½™ÔŒrŽn¾iñRå´è#ÅSÏ*Úy0ùsðâ]iþ¼ª°­ô>ŸgÅËæ·‡£ª¯¯ü'ÌÖ +endstream +endobj +6037 0 obj << +/Type /Page +/Contents 6038 0 R +/Resources 6036 0 R +/MediaBox [0 0 612 792] +/Parent 6022 0 R +/Annots [ 6031 0 R 6032 0 R 6033 0 R 6034 0 R ] +>> endobj +6031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.637 579.173 356.022 590.077] +/A << /S /GoTo /D (assembler_ass_isr) >> +>> endobj +6032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.302 499.531 420.432 510.061] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.561 475.247 316.628 486.151] +/A << /S /GoTo /D (interrupt_8h) >> +>> endobj +6034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [145.232 251.082 164.928 261.986] +/A << /S /GoTo /D (group__avr__interrupts_gad5ebd34cb344c26ac87594f79b06b73) >> +>> endobj +6039 0 obj << +/D [6037 0 R /XYZ 132.768 705.06 null] +>> endobj +6040 0 obj << +/D [6037 0 R /XYZ 133.768 553.644 null] +>> endobj +6041 0 obj << +/D [6037 0 R /XYZ 133.768 390.534 null] +>> endobj +6042 0 obj << +/D [6037 0 R /XYZ 133.768 216.213 null] +>> endobj +6036 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6051 0 obj << +/Length 1888 +/Filter /FlateDecode +>> +stream +xÚ½ÙŽÛ6ðÝ_¡·Ê@¬©ÃÒ¶(°Ýdƒ-Ú&ͺER´ÌµÕꪎMEÿ½3œ¡-9ÊÑ>ôÁÐœ›sѾ³w|çùâ»ÍââFÆNê¥1|6÷Žo'NœF^œ +g³s^»Rz"Zþ¶ùþâFˆr ½`'ƒõ aLØ­½uxDPK¹íE^õºm‡¦÷3LãГ2±4ß~Žéårß½µ<»åJÄq,@i‰´‹g›ÅŸ è¾#Fæ /õ#'+¯ó~ïø^&Î;ƒZ:A¨ çnñóÂÿ¼Ï¢µ'ƒˆôÚ,סûn ªÕË•Œc÷aõuÛÑFwPm^íq¹ýAó®*Êêfëý±4’„±µÿ¶bºúH—·ÙPv½ª2Ý=Á½ôÄ^e}^W¬AϪm5+¡þ0JV(ÖYYI+Ίخ¡©Ab®ÝÞZ‡‹]~·{¯[]õ´•®×e¾?ð +ÄoV—M¡{]<2ɨól)\UÐNÇü/ÁaçH[Z}ý©¢h' ú¾{_·/ p{÷Š2a(v´ìcÅß—™ö–«0JÝ›¥ˆ\ËAãâ½BÉO0ð·É«UvPÕ}˜¦S«BµmnâÞ\µQ§­KÖ‡=8£ý™?e’ê™"˜‘Ê2 Ý¢ÞçxK¸èDÜéò}…îCDUÑWPù#»þ Ê;"Ì«ntµ;¢¦„¬™aÖ–9*4§û?òU….Ð烹ÿ‘g耴Á||A{ï`/c3ÚA5 “ÞÁmÄ~êÞÙ¤Á³1G 9q¤c“@©ŠP¶z¢pÌ…)3˜w^‚¡£ÌŒ(h°ŽPi÷\I^=_8¯ ÓÛ«n¯î^Ü åÆ" ‚ÁhªïÛ|»”À¼×̺>‰°¬(UÖÖ—6ö{qPÓµ/°€)2òü”M¨ÄËëÛŸ6þÛð†Õ1S/ŒCBüËì¥^fŸ/Ïó¼ì‹ t¿ï^—"„ºãBWؽúbˆø¬>ñ÷ñ/•é‡Š £øâuæÞ3Ëð÷õÄOgÅyå{)8g%C/bc~ª{}yN3)± T~£žI.ç™x7&]à[ñímëÝãGîS¹êlL!ìL€OäÚ‹’õI)ÀÂ&¦Ÿ =@ý’д{­úÁ¨L[ýç·º#aϯ¯ €®Kç˜=¸¡¶5æ%m¡ :–Xq«Q}FY Âm;¬¼3iVßZ˜°L¨à¡'¼÷¨´GMüNk: ꮆV†%žª9žY.Ÿv óQ×`SÂD#†¦M  XÒ5iÊVž¦ÁQèŽ!]˜¦±_FÀ¸ç¡2@ [ÌqßÆMÕÈÆ*U– lòB·´9½óf¦%Ðæ4‘²ÖÏʦÇp…Ö5*Ÿx£p„KxÈ3Mç°L 9öyÑ23ˆ„‰LƤQ6Î>C$ìYÉãÂÇ»šÂ3€ë9eŒ°‰ÿ+m<¢_‘Á#-¨ê#dß-¯÷y¤ëù[~‚iN[•`]]?å¶ÓYÆNU0 ]=.a˜B“ÃØ 0ˆ­­š"#Q„SŸ„.4‹ý^›Yy—†ê+¼Þ‚è +Ý÷¤.u¤¶\¿[‘{õsÁšDì&€0=lÃrûHß¾7Æ S@ÍèŽ µÂFnfÒ•Û"¯½X†¶–š,‘§Ð—<¤!0±hcË_’!tóNŸ§.Â5w+qþbÜ®.ÌœidTj[èsÉ,Àw›¡mêN´†{Ý÷“3³êÛº8æfmsÜ’u…ÖÍÛ|o‹Ò¬‡® õ‚{k‹ Ijân7àUá*Ü…nc3“Ɠø=….󬃟¬©ˆûìÇ—›_ßΖChËÏ^½Z†¾ûËËͧ¡ÿ<Ûp’Ã2®ž^G/Äÿ6Xcó\u>Îãý£ª`È6"xQ`¬ø²ÂëÂ%¤òl5ð|'õ±éYˆÐy=ƒ˜Dxh[ +Dÿjóv«z˜¸ Dt½4b–3¹{3í˵t5p1¸° +(ê×’óšoá„ß‚¸‡%Þ[KÕôyiÞkŽúÀý½Þbi]''©Š>åÑmˆ7r›=µ3Í’¸ƒ‡hkûoE/ÏȘâì~»ZÐÐœq!x@† ›Mô•yzX(`EóÀP|zñH¯õðˆtlk–†YâSºe˜€b~ä+»×érkŒ3’vL”ÏNqè쪿(zÉÐdhÙÐsŽv}YhÊ8Ü}â%ámQn󊋪p¯éC—ŒÀIK_m¦Çbºkàð1lè;î.3á`ëô¡Æó»éuËÞ^¼bhÔý½‰6³ÿA¥P]‚ó”ýç)†$ãž’r’Mx~Ê^ÓyxFݞꌀ>¿”Á¥Hh%}Ÿ!óÿCÍŒÿº[kwUä[æ°å|xZ¿ÜÓx36ù®P^ +endstream +endobj +6050 0 obj << +/Type /Page +/Contents 6051 0 R +/Resources 6049 0 R +/MediaBox [0 0 612 792] +/Parent 6022 0 R +/Annots [ 6035 0 R 6043 0 R 6044 0 R 6045 0 R 6055 0 R 6046 0 R ] +>> endobj +6035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.791 594.306 299.964 605.21] +/A << /S /GoTo /D (group__avr__interrupts_ga87c0c624b62f40a17539be6946c3e26) >> +>> endobj +6043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.573 442.243 256.746 453.147] +/A << /S /GoTo /D (group__avr__interrupts_ga87c0c624b62f40a17539be6946c3e26) >> +>> endobj +6044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.889 430.288 372.329 441.192] +/A << /S /GoTo /D (group__avr__interrupts_gde46eb4e42cc9d56c19b1f91448f1b76) >> +>> endobj +6045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.421 303.069 478.476 313.973] +/A << /S /GoTo /D (group__avr__interrupts_g751c22101f7e8f2fbe792c64a81f8dba) >> +>> endobj +6055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 291.487 195.795 302.018] +/A << /S /GoTo /D (group__avr__interrupts_g751c22101f7e8f2fbe792c64a81f8dba) >> +>> endobj +6046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.284 137.74 416.346 148.644] +/A << /S /GoTo /D (group__asmdemo) >> +>> endobj +6052 0 obj << +/D [6050 0 R /XYZ 132.768 705.06 null] +>> endobj +6053 0 obj << +/D [6050 0 R /XYZ 133.768 667.198 null] +>> endobj +6054 0 obj << +/D [6050 0 R /XYZ 133.768 404.759 null] +>> endobj +6056 0 obj << +/D [6050 0 R /XYZ 133.768 209.851 null] +>> endobj +6049 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6065 0 obj << +/Length 2514 +/Filter /FlateDecode +>> +stream +xÚµkoÛ8ò{~…±_Nj–=»wôîmÛ»$[Ð]´ÌXÚÊ¢W¦¹Ýûï7ád+Q²(ÐÚp8$‡ÃyÌ»_¼>{vyöø•ŒËb.¯B)–Äé"Î"gbq¹]| ¤d"ZþrùÃãWBœlV’©$Jn×_iÇ„\Â’pÜ —2 +>7˺3MÓ:VÌC&e:œùûŸ}²\)Áƒ7Ív¹q `ZáÙ³——g¿ ØÎâäy‚e½ Ô“È8¸8ù¦ÙpsšÒ͈Ñ5­nhÖj´ò’-¡Ê+:@Œ‚<€Ün ­íí¶DÉ8Õâ™äJE†om£¹ÆÄìhpë +]¿4ÎSà¹mÛï2pGæ¡&q‡³LŒ‘p½þiìº1»õzÆ ’…©í ÂàpôMK—lŒwµ8à4䶯¶Ã"×6¡’Á—IG± q±‰u £R²„ |6ˆ\FŒg^äÞ­/ß¼}y.Öï?¼Z69ê+GƸòÃÇ`ºx:caì_ô»Ãe,ŠC‡„ÿçûóËgDâ¿Ñ¸~öïqNð=¤$ ¸Çi­1m_a¢Â t/ž½!àº(ó‚@Š¹h€¾º~ý4ì»\žúß÷¤»,ÿw&¯r ,LdžÎóÂZ|eæƒ/Ÿ]VÉ;Û@ê•YvL½·×qžµÞÃ+îÚ£ÈRðÞd0ÈË~9%çRÉ Û:;FÛþp¨n|Ôãó'VH‰äĨè!´7û­ÚÁ´h¼²Ue±N¹m´Ó›Ê›9úoÂbŽ<7ŽXh€Ï¾i aHA|ç\ÌÒd ÑH_™ÆexÜÞv7•iiù†á`¤¡ ?ÏJ2ðžø…BnÑË” Þמ8¸§M}K‚¿%I#ಠÁN7Þy +o8“dLŽQæâÍëõ=If .àNR$'²ta .pŠƒk5 © P»ªÐ½Ç ¶ù:e§caƒ«ºÙ”]£›²òÔFÓàdmÞ¸bro·¦Í¡ ¸]¯È‰ÍÁô(]¬~\µT+…öÀƸkO)ÙÚq…Uåxœ.+4!B;…·â(üNÊU¹Éiµ?xÒvN‡^D-e°RÁ$û2k¥G§‚tì ™k;% ÁBÆQ£é4¡Z“[WÓ!ìß ó0O¥9Rô!å£ùÁI'É™gê-”Xdó:™ŠC䇶°MGà¡htëWë @I€SpN†àó+"\Iš¬Ššì]iÆT8f.‡Ì9EÆÒtÜvGÒ:*âøÔ{ž¤øñIë”./\}¡øP¹óé³I–ök¿Õ[¼{Œ¢(§†`îÖu§ÛÂ%jÐÝ°Ýø-”plj›Î) +j!\/sWöF®6 òGÄt- Ÿv{S .üûíÃv.!bÊzDñŒì×ڃΩjŽ€™C3O×U‰€Õž~_oÁrsëÌÖ=Q@­Ø\(´õJW‡ÊÀ½iÊœ2/t'Тù¶±‡ƒÙº@ ƒŸ†ŽD n^лȎÏø2g/cù§öÙ7JÇŒXúÛÑàßÖ_‰¹js(›“¦ÎWaQ̤ˆn•Ä`QzSVe‡‘)‹ˆD6HÅÏqÇ‚´%ì\4¥&$TxÌÓ¥€ÆëÃù€Æ.¡¾5%G¿-÷@ÈŸÀOV÷‡¹šªùÓØT +JmÎàeîz)G⸆! + ÚïÜSɉàây tœÒo®œq\EºPÓ«¾ë¿Ò–ÏDC 5I€-=QJÛͽ¨Á;¡Eq­U¾ê­ ]Ó”û+I;­qol+¨ÿ¡°Å73ßC3úäö¡IÝ•²DO)ã‘*Hüá0¡"nPÔ¥Â×¥w˜ ÁðD}=s36 $dò5&<Ä€»´2HÐêk~™dƒ¬Tzú‹¶)Ãg¡×>fú²cè!›ðÂ䄾¡äO¤z"RšY¦3âõ?é,U2ö€um>’´_nvÔØï üTÄË6 +endstream +endobj +6064 0 obj << +/Type /Page +/Contents 6065 0 R +/Resources 6063 0 R +/MediaBox [0 0 612 792] +/Parent 6022 0 R +/Annots [ 6047 0 R 6048 0 R 6060 0 R 6061 0 R 6062 0 R ] +>> endobj +6047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.69 630.172 256.819 641.076] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [308.627 618.217 330.535 629.121] +/A << /S /GoTo /D (group__avr__interrupts_g3b991e8168db8fc866e31f9a6d10533b) >> +>> endobj +6060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.436 259.121 192.565 288.187] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.337 247.166 369.466 258.07] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.016 211.3 289.146 222.204] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6066 0 obj << +/D [6064 0 R /XYZ 132.768 705.06 null] +>> endobj +6067 0 obj << +/D [6064 0 R /XYZ 133.768 507.103 null] +>> endobj +2694 0 obj << +/D [6064 0 R /XYZ 133.768 190.752 null] +>> endobj +6068 0 obj << +/D [6064 0 R /XYZ 133.768 190.752 null] +>> endobj +6063 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6072 0 obj << +/Length 1531 +/Filter /FlateDecode +>> +stream +xÚ­ZÛnÛ8}÷WèÑj–CoÁb6Ý-¶M·qwŠ"p55à8Y7m·¿¤n-R—XO †Ãá™á‘:MnšœÍž/gO_2™b¤ý³ü’çDIH#ˆ4,¯“sƈôÓòõÓ— gÎWÆFʽ~+<¼pŠ(¬V)ó»§ëíC¶Û}¿ _A%Æt5ç÷¾ 'é‚¿ªb~K ¥ ÝÜÙËÙ¿3°î4Fz@ ÉÕíìã'š\ÛÁ× %Üèägîz›p´®à&n’‹Ù_3ZÖ,ÌB¦²; ²Ž5} ãbXá+ˆu×Ä0Sƨö_£(äû”b"…"Œ‹¢Æ§@é<»z¸Û¥ &è|»ºÍÅ5HLƒQJ¤V>Œó͵Ý\¥Ìü‡Tâ±(l¸…!(±p ƒcB*ø4è$XT>¸Ù·«Ýúþa}·m/ΙÝ]c&YœsJ˜’þêϵîï7ë«ÕçMVlÒg«vì:KÁ’o}( *M@‹G  ô1 +Ý1úÁR\ón Œ)Û©Ú« u2ׄ[juzqzùÃUÂ6O´'Y¾îàæò¯Î.-„xwN³tÙž‰§ D9?µý‰t^a÷­l× +ÞÝÞo²‡,ÞÉ“­[ÙCšÀ|ièãœ?±Œç¶÷VÄÒŠÆ·â“@&{-¸°ó$7¸·¾ûç éMËs;QNä±=‘»‰¨•otÁìNx+ôA;‰+½·>{ L¬œu¢²ÒVja4«Œ·ù³á&óPsËEQúŽø.·ºX@C.Òm!UãxŽnC5S᱂‚`:RWƒ’’¦èÅp,S¯ÀC.Ûâùå; E=–ÂÜc5,òa NtX2γ,­¥÷N`‚qÌЬ ÍÛ>eM¨_pÔ^å  "5´gT1ŽÁ¹EÄø*yG Œ.“çlBë äRùÔŠPEë^žéaÉ {”H!‚‹äC2XêOK ›/‰ùOZd$Ãu³P8„Ð0!îõ„ŽžÃž–‰ãznPPöpc’Wcë­üÜ··ŠX¦Xû»Žp×àƒ8L†íÈ?¸]R­…±« ë¨9j¥Z“#vóÛV/æRcˆ­ …·S†ðt½¹éb:4NÐÏmª°¹ûÀ·>ó™Í Kn•ñ[÷#nRík· "4÷ztww·Þ…ýŠºº#P ¬¬òÛ”ÛçÁŸçg—¡Ìéù›w—´ÿn?¼êjß„çnö1\ŽÏÏÞWä¶]uþžÆ_&AX¼xõÛ®6w7ö±ª ¸û}ìýj·ªßñiüò?Äêîïa<¸%{<*nÉ-Ä™5f›.ê8b$'–2Ä>‚&!7@³nfaƒY0€Y૘åákQ ;©ÔšbA-¿‚]Ü· ƒ[`¬¸åƒœ˜\£qx¡ŠñãÈulœ\ÂMar)F€ŠáÇ@® ðÕäjâyn±rM±$—WÁ±ë ×kry '&×hœ^Ø’²#ÉulG.fï•ÈEO6¹s/»#J©áGW/·&W“« oäÉçÖ4KryqrEY5 ºšV¼–Úɤj©-£Äb®v*Œªñ1§N/TbPÓVMb” ŒC5DW{ÅúÆÆöx.£ÒÊ¥ÆWãƒc6k/5:µ£ò¢äa‘G Uóò©¸Hiòá03PèÕ½Éä +a,¨æa—àJã‚k¡ü]ÁÉ5QÁµa½µP‡uZCÉCÕ- F<jà@ñÐ)tRú‚“d¹UxVÍúD¨R¿BÓü…,$`‰I¬G<þÛ „q1æ¢ÿ þn+>æÛŽêWvi#®›ßÁhCxU§³l›Ù£0». +t·-þ.¿~/þy‘]ÿ`ù–GO?]^K)ÕæËbR®æ‹Íúsáó¯2äÝ¿n²â‹‚*_» ÿ’7ÎÞ +endstream +endobj +6071 0 obj << +/Type /Page +/Contents 6072 0 R +/Resources 6070 0 R +/MediaBox [0 0 612 792] +/Parent 6022 0 R +>> endobj +6073 0 obj << +/D [6071 0 R /XYZ 132.768 705.06 null] +>> endobj +6070 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6076 0 obj << +/Length 1687 +/Filter /FlateDecode +>> +stream +xÚíZ_oÛ8 ϧð£ \4Qÿ5è¶lëk{i¶»Ã0YëuÒ´K³Ýúí²ìÄN$'n|o÷Ô–¤¨)R$UÓä:¡É›Á‹ÉàÙk¦K¬Â“/ pN´2‰²’( Éä*ù˜2F@fŸ&¿?{ PæŒpmQS!õ«—h¨ÓD‹•À4c2ý±xv3_æ‹Å÷û%ùPªaÌTk~Û¥ôy6ä@ÓãJçC6¥ èò`4|ŠÓjæ±T&—·ƒŸhr…ÌßJ¸5É?…èmŠ‚[8KÎ hé³€2„LU».A¨•®þuX§%,‡6%(nˆe¶ÔQ¿&VS(Î_PB$Jj¸ô>þ¥i~¹¼[dC&i:ŸÞæçZA$ôƒQJ”ÑM§³+<\­mú•xªZ"”ðbapLJB%ïDÕ÷*¸\ÜÜ/oîæÛ›s†§km/›sN Óª¹û‘K­ûûÙÍåôó,÷‡ôÅѪ»Ê3À仹 ¸FhCÀÈ'  ıÚuìd‰AhÛ„ +‚éYw 27„cfy7d\¦GÃ@ؼ<}wvñÃy +Ü}@[wÚùñ›(¬Ì²ôh|”@:ÉÀ¤§ãx€÷‚° ð†ïæÓÙÝ5& ±¾¼» ½Ÿ.¦eR† p«h óαôн¿ LŽQ¿¦2¼  +Û r¤nÛ±–Ķ6!x@REC›ÜÔf$H·NJY£fÉ7·EÆ^g2‚jÙ§„ÁZ êF¾¨øÌóEp1o_äN bÅ£<Ó丘…P}Eé-£MH_é²wy3wìG€KVBÎ &Ät¾E—ayYÑãY‰áy]-ÍÜÍ#3‹m.ü½c°­-…ÙÃ>æâVj½µ8B71y¹uçv&+"5°@¨}ÎÎ(ˆ—±îwÌvs:Þ€õt+)j!0By»1 /B+v–BépáB_WŽNŽ'{Ի÷¯Ê]c{WîB°äŸLFãq&húþl-•®l¾ÐmzÆÍxáO\·°˜Î¾ä¡F‹àý,_ºv‹cMl6£eàŽ‹Özx¸ U9lØ°*.h ÷ «0¤·ø&Q‰–´ê +5ÄÒö¢Äež!ö¶Ý¡ ´ÝiE1«>d4:+"÷ô]0´Ç££WÖø¿wg^W©W‡ë4cÐåô ˜MC5Á)v,Žfsw{·Ó©Ÿ­ò©î³@ÍgÊ!–TQîtÀ™r¨—(mÒ;²ÞàÈgvOb ¬¦ºGã}3¡ U"40œÑXLN«€ù«{œO¯ãÅ¥U24`lÎOOœŽÄötTA@cóKÁ¦66ûì3¾”CJÄ6áž/"³Ï>“˜„⛘ø~êÙÇ’Ò_Ʋàl¢ó&=6„5f÷àft?±(ÍÿŸXºL,uû®w*ä¡­ÕÁJ\Å` ‰àrÇø¥pF³zgÍàˆ^÷Vëþ)¶;+I/تZÒÀößÕ’~0ûj²áÎNÕ¤U=iYU€³?ßT½š hÐZJÖSÒ©gƒ¨Äž•ƒ:tZ„^·üvQž8+¨û>ã×:Óa^¥j¨!¸›2ÍZÊ¡uµˆêð› ]ífkU¹^èä¾QºgY¦Y„¹Ú¨v< ‘NfqæÌ6¼›¥­Ì.‡ÅÙÛ/œ6P® ®Rb÷âu2H‰Ö§]%düi™t?k”pn³AÏ F™¦cйlQÁÇnáY*¸IsÕoÈJ8Ìܪp^¶2¡ÉÜÚMníƤ*‚\„¬‘ Q&޲뺃… Ö+ØàÁÕ%LXÂñt°ÔÛ¸§¹¥†­¯Ô÷ç/|“-mP k½µÝ:ft‘šõÑÁÓUë¿VPF ½ù¤UPU¼ñzBMÛîšœÆåa­×ÁJ\ëÍ¢ºó¿—CJ”€Œþš\ŸLèÓº®>`UMWV¬éj< ÓxkÕ 0ßY5Ýõs™/æÓF#SëOSBïù·ïùÃÒ‡-7_} ­z¯ÔÐVK¡Æ ›–ãÓ,⧦KZÄ¿Ó±»¦¬ÍO~ª/ú›úçQÆ^ÝAoòy¾˜.ó+ï¡»¹ÿ9ùúÝÿò*¿ô¿ÿèsÆŸƒña`›À÷å·R×épvó¹Ôðù±Ty÷óñ:÷šTöâü ~DD +endstream +endobj +6075 0 obj << +/Type /Page +/Contents 6076 0 R +/Resources 6074 0 R +/MediaBox [0 0 612 792] +/Parent 6078 0 R +>> endobj +6077 0 obj << +/D [6075 0 R /XYZ 132.768 705.06 null] +>> endobj +6074 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6081 0 obj << +/Length 1366 +/Filter /FlateDecode +>> +stream +xÚíYÝOÛHÏ_áÇXº,;û½èt\)¥R{„ÞCUU!¸4RWþû›õÚ±ï:M_N}"ÌÇofvg×ó³irÐäxp8ì½f*±Ä*ü3þ’çD+“(+‰²Œ¯’CÆÈôÓøíÞk€š1g„k‹H¹ÕïÞ¢§‰+ƒIÊäðé~o¶Xf÷÷wKò5ªaÌ”>lÝOGèð¤Ä|HG ”LZ9ßÁÑxðmhN¨•ÄR™Lo?Ñä +•oJ¸5É¿¹éMš‚sœ'烿´X³¦LU7– +Ô +k÷Öa …åЂæ†Xf Œrÿ5±šB¾ÿ‚"QRÆ¥_ã)P:̦ËÛûtÄ$.&7Y`q­ v’£”(£›iü5¿ÂÍÕÚŸ0¡"ÌáF–%¼Y89&%¡’ï&;˜U3¹WÙÃô~v·œÝ.ÚÁ9Ãݵv'Á9§„iÕŒ~àŽÖÝÝ|6\Î3¿I_œ¬Ü±«,<|³i`i„6Œ|Av>’@7ÆæFæŠkUw"Ì 1Ö__'êdnÇ£•¯ÓÉû1ýüä–»'ÚÁ;‰¿jázüó“ãÏ£@Ïb^Ggg© Ã‹Ó1wïn2+Ú·žØÑw¼?“9v SÕmH•ÆÛ{'Ù­ú»žÞA +ñ¥ç€ëú^›º’2<— +Û2”¶K¨[pB4!@4Ðä:š!4”Š6š‘ »s3’£ÅHq+*éé?ï¨Î4œÉ!:ÊuG¾æ(ÚŽÜ9 +£›B&T3¦¸6•ìσ÷ÀL@ÊYgVh¡ÜúYÃJáM~™]§r8Êã:.šeÓPœæR‡4d¢ÜR-‚:訠aÈ +ÃÿKe +CÔ‹RϽ>Eö¬FÉU1ZÓX(S)„±}«²+(Ú Îü±ëx¿º8sÇAØ0ˆ¤Ê2Ã>qV­ªÎBúu³í[¥ÕÊi%‚6o>®©S¬2ô©¹ êú椨ª3ÚyÜ*ßV<ÙŠ‡}—¤Ô*Ün¨§Þ@öl54¤'ÈÄÏOëÂîKqñFN»1¯ +Ó¯á²URƒä*\Útë±=xÁQ_QdмA(&íWZBþ´°Á^®nYÜÈàÒ‰ÀA•ñv¨a‹\¾àÞ ±áXpGmËÙÂ9æR'c/˜¥ÛlÌàSêÇ^Mü0ˆ£t ý»¢îr¨! ìFJÇ%‚j¾¢N°™Òí$~Iéñ[”N(Ä)Ýn2ó”®‘XJW¤z–}{Ì–¾C!Îïv’jÉ﹘Ü#ã¿Ù/Fö“™ ÒÏÆb:³Í âùQþWší˜‹g ŒBhtô¬€ ©·˜kt€Ê_äfMÕƒ»øsèÎ,ïÎ#Ú­¶%ŸÔ#¸ˆOàÆlÀE€ù—V,>2| _E~Rðàb8‘d±M§Õ&õøK†ú|~ÉÏçý¶ªÖ‘›ÊÈh I{ÍÀægŒ¤ò5’¾àñßž&tƒ¬O“ñ/oÖœ ¶øˆW~NQnô0õžÆ^®ñq¶Èî'ËìÊ/ÐíÂÿ}ô?^eSÿC#Ýg|Œÿ§DøS|ýL¹Žæ³Ëáò¹€¼ýþ|ùOGe½¸ ÿ¼‰ +endstream +endobj +6080 0 obj << +/Type /Page +/Contents 6081 0 R +/Resources 6079 0 R +/MediaBox [0 0 612 792] +/Parent 6078 0 R +>> endobj +6082 0 obj << +/D [6080 0 R /XYZ 132.768 705.06 null] +>> endobj +6079 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6085 0 obj << +/Length 1551 +/Filter /FlateDecode +>> +stream +xÚíš[o9Çßó)æqFjŒïF«• +”R´[º4°¡Ð©MKHYøö{<7ÆÄ3™d¼«]©O©|9þÛ>çwNÓäcB“ãÉ£ÙäÁS¦K¬ÂÙ‡8'Z™DYI”…dv™¼I# ³·³çž´sF¸¶h©õK9Â3§‰Í€yÆdúuõ`±\ç«ÕÝíš| +U‚0fê9¿n3ú0›r éImóK6¥ híæNŽf“ÏÀá4Öö€X*“‹ëÉ›·4¹ÄÎç %Üšä¯bèuÂ7ñ*9Ÿü1¡Õ™Œ¡dªúm ¢@5¶âÛ°ÎŽ°úŒàpC,³•úþ5±šBqÿ‚"QRÆeyƯ3 4Í/Ö7«lÊ$M—ó븶úÆ.ó 0ø£Ú0ru?’@¿íŽ,cù!ŒÊýs¢!Oæ†p ­âœNNgìÝWwè=eýÆ…Û럟¿›|u½|™ š¾:›±nr߶°£oÈÏåü +½…©4 H}™¾Ë¿¬K·bݾEjãìm­‡¤3KÏþüdSƒBÚm,Э4ž38)íµrhTÂ3&=c×E }Ìd:êÔiÁB}År}â¬híݯР¦/ƒ»EÝ e¿ÎeÃ6Sœ„’6ØÅ{úž½~4l‚º}p:wä]F‚ô;3ËÒi`SÞ$î&Ggš´ì—á ¢¯†wøL/šIEê gŠURðÀß™¢òàïä^˜‹LrrPÔar‡}€z†…Ç)8Wö#Æ^?*ür*õZ ë c7íÌYanW=Ž^ŒQB”Xó[UwÊÜr›9ÓQVŒ+ Gq‰W`öÖÚôoGã´²-ïJÄ(Ûä7¾=ïÆX¾N»ÞòƒÒ.ïN»Q„•Y×ÓµgÖåÝY7†Ò:ézRÿ_IWPÛ™tÃ};'ªî„[$«Ž|[ä•Aû(rÌ´;«—™%¼J™X†ì¥J&T¿d~åüŠ(øÝÝÛ7ÁélHmÇÑw´G_®-ÁƒêßR„I¶•¾ f-eƒ9±¾1–¯éë-¿A_ ¯è¦oa%}=]è+ôÝô¡´¦¯'õ_&§=_UÚÅØ(îJš-åµV^Ë®¼å5e:€DlVÿm&î8ãºü/Ï(&Ž6R0:¹f¿¢4ð‘˜aùš‰Þòƒ˜({˜CXÉDOמL”=LŒ ´f¢'õž‰÷LÊÄ}0€3´ÁÆÖ‰£8&2,6M¤:‘SID«NTÛ™cù†‰íå1Qu31Š°Š‰m]{2Qu31†Ò†‰m©÷L¼gâ@&î8s6ÔØ:q´ÇDpUo¤:‘á7/Óªõv&ÆX¾f¢·ü &ên&FV2ÑÓµ'u7c(­™èI½gâ=2qwÜĸ¯½cëÄÑF +&JœaTÿn˜Á±•‰à¾y5uâ‹wg'§ç°AAEOÃ"J¹OÕü½çñ³ÃÓã£ZÆÐ[ÒÒ“»'-i-#(­iéI­be½XºËýàÇPÓÎ:Úe¸õEÝÎ{  Úô’qQ7ÖHu ˆìÿ!vxÔ N¸âåÍüöøÉ€ˆ‹°zqíÕ]X¡‚žØ‰±r;?mSX™ž¯ç«uñ·Jo>‚çé*øô¯‰™ +›˜iK =±°EÂÓá77¶yPaŒ´C_åX—¦%ØŽÎf¡ö‰íRÃ}biOï|²àCÜÊ]‚¯ûI®5Dó]^÷Öï,Þ47í—ÐÆâEWpœ/óÕ|_–Œ»Y–Ÿ³OwåOò‹ú7¢âèCÆ‚©ËQjO3«gÑ×éôjñ¾²ðþ{eòæÛ÷yù¦´Þ/ÞÁßc…õÎ +endstream +endobj +6084 0 obj << +/Type /Page +/Contents 6085 0 R +/Resources 6083 0 R +/MediaBox [0 0 612 792] +/Parent 6078 0 R +>> endobj +6086 0 obj << +/D [6084 0 R /XYZ 132.768 705.06 null] +>> endobj +6083 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6089 0 obj << +/Length 1893 +/Filter /FlateDecode +>> +stream +xÚí[ÛnÛ8}÷WèÑj–÷K±X qÝ6‹lšMÜ‹¢ÒDM äV×i7¿CQ’%›¢äŠ»@Ÿê’ÔðÌpÎÌ¡­àä:ÁÉëÑþ|ôü•‰AFÂ?óÏ a )©i’†$ó«äØRDDúqþÇóW„Ô3Š˜2`)_õ›[Ñ0§âÕ‚‹”Šñ÷åóÅÝ*[.Vè‹Ç¨äˆR]>ó{—Ñé„<>(m~K'DJI´¶ÏŽfóÑ×å8!5÷2X$—·£qr“$1£“ùÒÛ„qXJìƒ7Ééè¯.bæ1± ÛâHYÙŠoÃX°Â02Ë52Ô6ÊóWÈ(LòóçÎ)¢L¸Ÿ¥ãqv¹º_¦*ðøîâ6ó×p$Hc$µjÂx{s‡«”@@æ&qÉÝ2?8*‚ÅA'  j‚{™}»\.V‹û»íÍ…Ó5&ÊæŒaD•lî¾g©õðp³¸¼øt“¹CúlÇÊ»ÊRä[\zBÕFD‹Ÿ@çÉc. Ûè‘ÈT"ŒéÎa¾Df1`V¦Ã·)ã÷‡³³ÙáùÄ“;oÏŽNÏ¿ÛhA‚µ'yˆU’×!ž¼¶ cç"±¹·ùòcécËt€›tb„‚âúð¸òD R=O®ãûåÊ}Úä~ÜUî×籠ñ|µ¸³˜Ÿ|e¿Êð1x2œ +¤1Xî‡Éi‚%’JÄ¡‰]½ÜÚŽòìä`Þƒ0T<¨c°<˜î5Y*êøf'¯ +>“[bà+ØR‡ÐlÆ6ž[‹ÛléêâÂ$Ô"@¬ˆQÇXÃ`K¨~æ(ZeÔ3(y€@;cõä>Øàj¨^jĈC³bºÃ‰‘6ª“@Â$E!˜§GsÜÍžJö4]ÄÛã¦oöŽ^Ïp;g¢ rœiFeaû…¤ãé—‹»k«R@¦çÂ=¥xìƒj½KГìëcö­øn'S ì%™à †Üæ:ê:ã "-{Œ¡Þ9š;Οy<ö-×åò‰"~ƒæ4Uþ9Ïf¢m3F-nîÅ s88¹‹WŒ®½‚ìõ®°^)Ó2‡û:d*\pwÜ»æÍÙþÆt +^ú2²öÇÒVÖÇ&_»G `zV€Rîç,ÄùÙ¯­¤d ó¼œÏE¸÷Ù@µˆ®f‚û1÷†a¯¿ýœÑ¹ Úî vó^T÷tV’¼³q_®R!ñÆìÖq‹­ã†§HŽjoñuü0cÞøñ]·±µEŽ‰I~"ZoŠ`ÂÇQ.âì]ŽV°­wJÛ”oL´ñ¤²d0šoÒn\lí,üë©èá.yôZϼ;ÝwuzkXÓÀ9¸©VyÁãfs\Ðäk$W›Ò*•íÚj÷Öµ-‹¬ ¢É0m5؈ÕVŒPh]î0Š\ƒºÄ·÷=!kâŠt‹«(JuÕ@Э®7’8°œ¼jÆ%–¼"íò* +øR_5ÐÿÒW¿ôÕ/}õÿÒW€Ã¿M¡°¸7œê—\k $¸ +kª–5ÕSuY® ãKŠI¯Vª=Ð&%Š­…AC)1n¼J‰m‰¼6†Õ‹¦íRã'Êø¶L°F¨2ôÆ`#VkP&ƒÝQ)°Ò%5ˆ Q“´[jÄP*¯Òu¥AÛ•FTNh4£Ò_hˆ Ð íB#öRg4À·ö]ªºú.ø©Â­¶oÇÌ«•éj§Ð[‚¯_=sÍÍ{vÝ«eRïä•k^Rˆ–ÞS²­]Õžê! \ cF¶v°öIÒœìwëÏ“ƒëÖNÖ2Yo^tÝšzxXojœ˜Žï8Ñ­}ŒKÒ·-ñÀÏf»“q»Ð[$l£»[ 6b»1àVao˜BZèÎnA©AŒ×šën1ö/›E}ÿî[)kïQ@¹^шI¬;)ko1 —­¢Ž½½SpÖÙ)8és­â½®U~cEe÷ƒÙº—ü÷46õHà@ Úý”·Ë1pâX«Aƒä5HBž‘ŽßQ©†ÞYƒˆ!ëzêQƒ"ì_Ö ÆþÝ‚Õ—#ùSy @íŒØS)"x]VŠ†×›_V3ûýûDÉ­ §¹`Pë¶\¥~1ûök-I€,‚Uå9Ø dàÏôƒädá­£¼çgD -Èr:ÅþLÝ;îC¢¸*Õqåta{w2 0%,×Ê·¢•¿\«ÇÓ‹‡Õã2ó ›¹¨Ý­ý:¾Š…u€Õ·Çïÿd›¿¾ÀõŒ…H´3NOþƒ ¥‡vœ¡FrAĤŒÃ!NÁ$¯qh6õªÎn U¨ÊO brvôò|ú÷ô0D¡¸ +mÆÊ¥àìîÊ}˜>]Þd® RQ¥Ž$6Uv…éIr0Mp—$o#´¢b»¼Ü_¾f-!lL×ÿBC'-‹Ûëì.[^¬²âìÊ×_ç_݇—Ù¥ûÀ‹Òð Ê^]|Û…±ö¼™]üUDÊÔxr³øTXøôT˜¼ÿçé:so–þÂü 51Ö0 +endstream +endobj +6088 0 obj << +/Type /Page +/Contents 6089 0 R +/Resources 6087 0 R +/MediaBox [0 0 612 792] +/Parent 6078 0 R +>> endobj +6090 0 obj << +/D [6088 0 R /XYZ 132.768 705.06 null] +>> endobj +6087 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6093 0 obj << +/Length 1898 +/Filter /FlateDecode +>> +stream +xÚ­ZÛnÛ8}÷WèQj†÷K±XÀqÜ6EÓz§‹¢(×QS¾d]§»ùû%EI–lR–#>Åáex8œ3œ# FŒÞöÎ'½³7˜G +(®ÿL~Dˆ ¸Œ¸b€+M1ƱäÛäýÙ„*ƒ D(m)õ‡Q3'€ å€i‚Yü{s6_mÓÍæéq ~:Œr +0–Åœ?}ô ‚ñeaóWÒGœs¤A+3·7šôþé!=F¨²=dÑlÙûú F÷ºó}Q2ú7ºŒÕC‘™¸ˆnzõ`î3‡1 òf[pÄK[ám(cCP5ÑÃ%PXå6Šó@ ˆ²ó§ J#ÎÀ„YN„q:Û®7I3¯¦ËÔá\ECA``—¢ãÓâ^®*þ­åx4 +m®¯åÔsƒÃŒÈHtiTupé¯Ùfþ¸¯W‡‹¬OW© ‹¼¾úÀPëñq1ŸM¿/R{H?L[qb÷i‚4ùæ3‡k¨IötŽ8¦  f-s!>ÙMÐÈD¢™•¹i|3Dw}GÌ ãÉÝoã"UþÈ€«Œì*®›Ë·wØn¯G !VÒûÞʲ©Œ‡ÓÇíÓ&u Y¯­¶ Q_õU€ƒ!Oÿ}E^Ù@¯¶aGjˆÿ“q:â3 !éxt5’‘rÀ C"3Nßô;†õXÍóÐq +@UR¨ŠÊM¡ÖèãÅÝðËðC‰BËI´ï-…£Õ½ý1|ž-Òº@RÒ¥ +%4]NÆéˆtmƒŠ®µSW#†.L +@¨B¦à •€;Ü9!p„©áÊ ƒ_vçeérà­wN|‰j“ètœ‡ñol *»‘¨³‘ŒD\‚@u“z"¦½ôÊ ª$P”›@íoœ¸ríûê´ '’*U$¡©r*LGs$F™ÒÕˆa +ÑaNiÞ Æ–“G¹Â!PªÐãË»›ÉðøÍBÉŒÍ Ãúa–΃¿¶rº™Oú¡XÆ“„°x3]ýú‘ºž ×ËÇEºm F˜%5ª8Ë¿Á„n R% ¥ˆf­TÕZÍØÃÔFÐCk’!vhM2Â^9RW¢ˆë‰Œ(Zo>o„aøîžHέhœ!‰b¿ 5">",M~á¢ÖJ°£‘ÓTËìÉÉCÂâ)‚ ØÕ—-çí£ã¬µtu¼ñÒ@ʾź›ÝÈöSç\Ür3ÜlF)'`ΚúNÛ‹,†÷rTæ|±p÷9óî);]¿ã&~ÇÌÚíH„&ˆöt–û­ÄYmˆuZ|\ù_;í¨Ž@ÏD›gçV§µ“XÑÆ0ô©ÇÝÆR>©ÖNjeÚÄke‡¦ªe+jòv;«H6]½Rfë#N O§µÓZ™bÈ«èTÖM½:­•Ö:º™LNùvC[J-)e£ÕTáhÅS+.Yå}VauTßý¬ÂJ§v‘¶c?£¢YGyFT¤SK¥eøʹCþðÝv]ê‡vP?,ˆúyÁerXµ#œu|ÍÐÙHVú¤/sDý †ÄºyryÝoŽ?]Mý9hQúWT>5p¦òqaût;ßNœQ ûz EQȶ&ª»Ó¼ª˜/ÓÍÙpýd>eõ¼¯˜šÊIjœWÓíì§3üýuRìE™T¿÷ø™R‰P²k׉meÛ3%·¦o÷ø¥Ò‡i6 ƒÿŽ(‚ +endstream +endobj +6092 0 obj << +/Type /Page +/Contents 6093 0 R +/Resources 6091 0 R +/MediaBox [0 0 612 792] +/Parent 6078 0 R +>> endobj +6094 0 obj << +/D [6092 0 R /XYZ 132.768 705.06 null] +>> endobj +6091 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6097 0 obj << +/Length 2006 +/Filter /FlateDecode +>> +stream +xÚå›ÛnÛ8†ïýº´€†áYd±XÀI“6ŦɦNzÑ- +7q[9­ë´›·ß¡Nå‘,EÜÅ^9áaôsÈ3¤-}‰hôr´7írYb5|L?GL’hi«ˆ¶,š^EïÇœ¦âÓ×»‡ŒU NDbÁRÚê·¬…g.!‰,Ìb®Æß—»‹ÛÕ|¹|¸_‘¯ˆQ- ç¦èóû6£ÏãÁèø¨°ù-ÞaZk6悺¾£ƒéèïƒæ4b•á1b©Š.oFï?Ðè +*_G”k¢iÓ›HHhÊ\ÇëèíèÏÍ}†ÉT·Û’D3]Ú +oÃ:Р+Öfšb¹ÍmóŸ›P–滑Ii•.Tæ㋘Q:ž_®î–ñWt|;»™#ε’(D§”h“ø2N®¯`r“ÄŽ¿ƒ \¨s;–H-³f¸8®¡J„Q§¨òŽ˜»\.îW‹»Û͇ ³km‡ A O´ÿô‰Cëþþzq9ût=Ï&é³++fìj3€oq‰¸F&†0£ž YÇRÖn£ÃBfš(aÚ…pÒsŲ€v@Vê¦éÑ1ý¸ƒ¬™ý“ãÓ½ß`Y5/íÂÊ¥]ööè%ªëä|zz>õ«ÔZrlùxrv@÷ZÖ{Éùz÷\ 5^ÜÌ—»ûwnóżzws?[Âr4 óx¶ºüŠŒc¯—ÚK\ªâ'1cl<]-nÝŒ?2ñ ¢ˆëò˜¡JŽ¥8wu\"u\¦ÝxÝœ„òMgÔ×Ù‘Yï¬ðrÞPnT нý‡ 6„°£ÛP#nWP6¼þ{'º)P 8Ëʦpƒk/Q·n ”•»BUY㮊=8;üãÄQøŽ6ãBZN¿ç³:ý“™9nù¥âΣͨÐY’^ú?!½·û6u&(cÃ@l$=Iˆ1"éÊÂ'pUÎðX:9nþ!tœ{ºçGo=ˆ;?;`-‡–Qîû«N9ÃäÍîWË<ç<Èœx»j!=€ØuOm£&ìÊlÁ«·f °¡È×P#)_ÒÂL° éµJ(1Ê6ñ%k¹jȈ+!«Š–b³I ~!$çøyîlůOŽ=iÁ1€øǪz GX¾(ŽH¹ij¯:„Ü'…ÐÞŽ@ð”†À< d|¨‘”qSbmÆ%'T'ïp„!¬ä»*l ß-Gè ’s¾=Wã»å B|ÉwUý/ÇwoG h‚¡ò0)Û°ümæ$¬˜€©U¶‡„H+é®JëznË’ChË1ö¼Öã^gáBKd«J9d{;á l$ÉÐ<ÔˆÃVF´”A°•lJSb{pFlC(+¨õ”u:ضÜ^–!ëéš¼Øw¤Ô]ocIó}mù-ÿò¦®Bðõ|5o&6„΂X_h "͵MF³f¾úËÞDÃÙR ãk°Ç—°²Õ>£`äl;_ <7ãÕÿ\B]ÉXEÝÀoŽZŽµAçðUÝY„Ë–›ã¡‡ÚÒK+Ús¸nÒ/S¿Äj»~¦€3.–oû½; S§?†UZ æR(ô8¥¥õ;vºIµÔ]ÕÖbª¥R´|]ÙwØŒMΆֽ~à×übš5$}Þq+Þ6Ò°[ S}ÐX"Šy{9¿/g«ùU榻Ûìsúõ!ûãÅü2ûCfŒ>çâ93ÙZ ò‚Rþr`,’ñÎõâSnáÓcnòîŸÇ/óìͪb¼0ÿdDv +endstream +endobj +6096 0 obj << +/Type /Page +/Contents 6097 0 R +/Resources 6095 0 R +/MediaBox [0 0 612 792] +/Parent 6078 0 R +>> endobj +6098 0 obj << +/D [6096 0 R /XYZ 132.768 705.06 null] +>> endobj +6095 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6101 0 obj << +/Length 1649 +/Filter /FlateDecode +>> +stream +xÚ­ZÛn9}Ÿ¯èÇn)ã¸|7Z­”@A dÉX„B2ÀH¹í0åï×n÷uÚv{H?MR.—O•}ÜuZ³¯Ξϳýc"2´0?‹/PŠ¤P™Ð Ùâ*û‚€/÷:Δ *µ‰Tzýá/ã|y¹¹[sÂq~{q³ôW3Äac$”ìÃxs}e6WJÿ0€*<… 7׈ æÜüàçs: :Uܳå÷Ëõê~³º».N‰Ù]­'YœRŒˆýÕ,µîï¯W—Ÿ¯—n“¾X[½cWË ùV—žÒ0©(þè<ç˜qñ ™„1Ù¹LØw©BÔ0«,ÓâäÕÑ[üiî95o +S¥ócüé‡-”9[áó=ºæ|wÑ<@;z{ü×›‚òü=Žœî)°U§»W8»ðêf¹Þz÷`¯ZìÃéJ·þczgßÏ&Ú0¡‹ô €|¡ñ™yнb΀ôŒÄgd[ÆB“Ü·›Õ­Íñ!{ŽW•cz휲‡^„#…é#Ÿ5 b9J%6¬‘lì±äŒŒ“Ô¦m:‰ Iy¤ã]CÒ.ºIùÎ$\ÅÒ^å¢,廳t¤ M»P[ò)³!ЖM%%)-­Lw¬ŒÛóäÔõ¨æõ¢+FSøž‡ä]j<æ‚jÖZOß¿" ¢0¬Ë¡™È·'Ò­‰l8‘Ú‰LɾÑc¢¿Â0“¨T­íéÁk Êc¥$ŠÊx[?­š ò¦ì'¾<¿LÃcv¹ ʾ#;-­6`Ÿ‹°[ˆ%óŽA$ƒž£½¹˜ÿëÁr3ÎêqêÆý«ðÄlo’‘‡–R­“ÐÞ0:5+Ý„ ¾ ÄÑÂ?FÓò¢ÄÒiŽ£ƒ5”„(ik#Z.ô<´­›ŒáÔ„4n+'óú¼8?Üõi¬Í@ow¥ññþØ`=>XÏÌq÷(þó&˜vãÜ»âVÉ‚[£¢üqwjˆ@î>MÙÕVÏZ?K$‚úî +¦“‰g#ŽÜDáäËÍÞÅÆÿ ᢤŽ÷ø™AH%M{…r&½5ó0ÐÃÓ`fƽ¼”÷®öâ¼0»—”wºÚn–!–WãTvÚŒ ì¼´ÓAîº~ό裨vbåÀz8ÛÈê–ª”›Áe§ywvX=›¶Í*þ ·‰’åÕËô¶=ÞnÁd_ÊTÖˆù®p(B¨ÐH‰G*™G)• ÇHR>ÉÛ*(´+dÀ«žœ. AÆL­V1=hVÅœ¼>}·¢{÷ö"f +`NÁôK¶­`Àïâ~ó°®Þr¹"Þn"*f°µˆé¡í¿kˆfgž£nbpúÈ·Ìbù„š¬Ôý‰4„Pã„©Þ² ÃÚ#9ΗI 5„éB †¥fdcz5ÛfŒÞŽ„™lØ.ZÀßêÀ|²ŸÒ¸Po~/ZÝŒnËþhÚ +ü¡|·¢~D½û'Òñm1T½SøŒ)u§ð‰…?0 +–Ø¿– +_² Â±]TŸSøÁ6\Ûäo“Ëæ)M›—¯+¼2µøá±Ýré¨{ !u?WDÆ}šŒνó®Ôôiò¢˜„3=¢ðçk¼ƒtíª}s÷à Ü&EŠÞgiz“À«™ŽvïiÉ)ù À,kª½;S +ö”¬œx©ò˜$‡TIî^†ÞÀu{èõ]¢&/%˜à<$×Þàþ´„sç¼Í(ðʤîÆû•yâ±s~bN+Ê™ÆqÙž(ÊÛ½‹¹7…ùœ(“ (Ÿ€Ý6+2&B“,ŸDÀþF3쥤•Þ¥—B¢•»|R L¿EU÷Ë¥­ëô|y»\_l–W®@w·îwñíÁýñlyéþ`îðBŸ€rÿ™FXy>%¨>ã)¨Ìç׫ÏU„Ï¿ªwÿýúºtß@ÔùšMøX±ü\ +endstream +endobj +6100 0 obj << +/Type /Page +/Contents 6101 0 R +/Resources 6099 0 R +/MediaBox [0 0 612 792] +/Parent 6103 0 R +>> endobj +6102 0 obj << +/D [6100 0 R /XYZ 132.768 705.06 null] +>> endobj +6099 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6106 0 obj << +/Length 1278 +/Filter /FlateDecode +>> +stream +xÚµYÛnÛ8}÷WèQb†äð,°Ó4ml²“}(ŠÂqÔÄ@lg]'Ýüýu³dS²\«O¶93‡gfxHÊ¢ÁC@ƒóÞpÔ;~ÏU`‰Uø1ú0¢• ”•DYŒîƒ/!ç„ÉèëèÓñ{ÆJÎÀ h‹H‰×©GN- +‡qÄeøº<žÎWñrùò¼"P%ç&ùsèIÔFÃ9æ¨Ï”R,äÀ]lïlÔû·ÇЬ”#–Ê`2ë}ùJƒ{4~ +(k‚Ÿ‰ë,®Ì>×½¿{4«™ )SÕŒ%ˆbªÀêÃ: ô°Àš@ÐÝËm†‘÷_«)Kú/(aBJjÂA¦5¾¥apÒz~~šNÆwOqÚ¤ïn,ïØ}1ßtâ)І0#g IX3F‹…Ì‘`š‰pƒ¢R&ê[È€~¨¬¤L£gŸÙ·¾gÕœ^\E–‡ƒo¯®P¸¶ê×wìŠõ]fwýñÜKíòftu3ªš²¾Ÿ^f´?Ÿ±Aâï‚r¶è+õŒ@†ÓY¼<>]¼¸˜ù*»˜=—¸( ½¯&žD|ì ÕtÀ¾PM™þ bŒ…£ÕtîzþÆUƒ6öæàÑbØŠCAœÀ¤qg¨êF`Ô¢*D w‹« f…¸ÊÌ×°^\PÎÄU©ewâÖ‹« ö…¸Êô÷×þ¶uá0¤Ð‡‰ë`D\H):—4”hÎw‹ —*k¡®¨åêªPû}GW'”SuU‹¹—ºÜªPW: š ©Â4’¥×4¨ho †–ò@ +âTŸÐìÈÂÀnIƒV*jy ì„^!¥½ß§¤n(gR*´³sªáØ ùB^%öku ÁÄ>`j½< +騰¥Q#™<ò¤Yöôè+TÛzôêŸ ÎÔ‘7õ’Ëåf lŠí@pÂèê ª:Ã. + ƒ@›õØéà/Ægx#+ôP®~Öð|p–<Š>D23 +õ67]-˪£¸JF£>åZHµðÚXCGîP8þÎ Ñ.r;¤vÿ,²e6JÉhMë¦2k'e½0¶mV¶€b |žÊÂoƒvywrÖ"i£1gØ&!àëÚ¨µ*ÖÕÍÖØhÛ„,]WN+áõùp;Ü0»Ú·Á—ÂÄ:Ã|ÝM%¥¸×$«¶­ùäÖ|C“så_oJØÔ.½3n”¬¶5¦Q?éžZ' t?mÓ³®.Z¿& +|{…0-“iÎF Ú°pC[onn/Fÿ4\ªD:Þå‡FÖV4ë-€¼5Ûå¡„ðè´63twPÜ¿{}¸°yáÀå¶Þ¶‹‡I¼7$–»‰¤EÔnÇ»º8 l…ä±K?y„I#¤.Ýn®‡Ùi±9lšKÈN6Ca7Ç›o裄 åå L2Úðìý «í¿ÑBìsã¯bñéöy3“ÿG®ð¢¦üËXyÎãy¼¯âû´@‹yú9z|I¿¼‹'é‘~0zÂá„™ô^Õçoõì•V:ì?Mï2„»· rñßÛCœ¾ÈóÅ&ü¾Ù— +endstream +endobj +6105 0 obj << +/Type /Page +/Contents 6106 0 R +/Resources 6104 0 R +/MediaBox [0 0 612 792] +/Parent 6103 0 R +>> endobj +6107 0 obj << +/D [6105 0 R /XYZ 132.768 705.06 null] +>> endobj +6104 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6110 0 obj << +/Length 1495 +/Filter /FlateDecode +>> +stream +xÚ­ZÛnÛ8}÷WèQj†Ãá5X,çÒ šM¶qÚ‡nQ¸ŽÛHâ¬ë¶Û¿ß¡dY’EÉr­''œáðpÈs84Í£/žFãÁхБcNÓÇøsˆÌhi§˜vï¢÷± Tòaüêè äŒ‚¡q)õú#ó¨„3ÌÈÃ$*þ±<š?®fËå÷§ûª%Âæ}þÜô8"ðøeó[2­5ÄÑ÷œÿ€Üy¥és\EÓ‡Áû<º#㫈3t6ú™º>D(É|Çûèfð÷€¯sF¹n%™½‰Õ çc‡Ch Bî–9áÖ1òõ7ÌéúKÎ@ÊH+ê,Çoà<žMW‹e2ŠÇ“‡Y ¹N2½Àœ3mMÆÕý-®1.þA€Öx…:&µÌÜÂà„RŒ+ìBUw6û6]ΟVóÅc}p´ºÎõ28"gÂèêè'žZOO÷óéäÓý,[¤Ï¾-_±»YD¾ù4i,«~]`KÅ =Æî,¹e®ˆ@Ma°’'ÚÉHÁˆZižÆ//ÏßÀÇa`Ûœ^]^>þði¢Õ¸»{Á¶ÙÞel7/Ÿ]ÝŽ¯oÇU“*0'NÄ'oÎaÔ¼çûÁ¼Þô•t&¨âùÃlytºøîB‰]<¿¶L,w“éqWïïóâ-Xë’[ä.þä=lÖC™R}p{3ZŸÛͶý¸ô…5©J·ÝÞ^9–¾«(0i«n®î£²ª—÷>ˆÃ®º‡Æð7T@× lŸŒÒÌP‘½ë‚ 9¶Nuº œî¾ ô-¿T x?8m¾ô9»T“¹×õÀÐôzšHó¡ðù…¡‚¾^ mj%q­ÑÙê±4$4 +~zôCXïÓ3§ã©ÂÛN•Í©Ópªt<ï³óg(A¤Q'gHÕÊ({QÆýwP]Ôè.ÉÊÔñà ©4 +ÁPîøGÐYàäNiô£4+cIfÎ:(cÈre,#« £jFYF~Ö"Œ} ΄±’ÊV]T]tq=³]ì{®‹eðÁ +«Ä·j0PÕÂŽQhäß+äUÊÁA<…C¦¤ë‡‹ ¨~³È¸›‹} Ûp±Œì02ÂI3{¼&c%—{±Ñoè ÃÌëè†ye¤Å—Ž·9ÿ &†)—½Þ…·?Ú:Y| T‡îÐ)ߌ<{¿¯„øFµSBïäÛUBù~{8׺œstœK¡¿¹x}å÷ø;h!WØ2rU×…\WYê–ÿpŽ ÿjõ³…\=ÍÉUAZ&4ðH´T‘û p€bpû ùYÚYfpŸîü­QS¢Ð– `Ã|±žÏgËÉjv—ehñ˜}Ž¿~Ïþ8›M³?döüXà1Øì?Ú¿6ð<¹þi@‚&ÞÏ?­#|úµ¹øï×—Yö®šÏ—Öàêi,Ï +endstream +endobj +6109 0 obj << +/Type /Page +/Contents 6110 0 R +/Resources 6108 0 R +/MediaBox [0 0 612 792] +/Parent 6103 0 R +>> endobj +6111 0 obj << +/D [6109 0 R /XYZ 132.768 705.06 null] +>> endobj +6108 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6114 0 obj << +/Length 1541 +/Filter /FlateDecode +>> +stream +xÚåZKo7¾ëWìQ T4‡¾‚¢€åØy ®ÝXIi(²’°-W‘“æßw¸«•¹¹ZE›öЃ!›3~œ~CŽÅ³OÏžô†£ÞÁ‰Ð™cNÓÇècR2£m¦bÚA6ºÌÞö…` òw£ç'²LG– +­_Kš9à ®ƹPý¯‹ƒÙÍrºXÜÝ.ÙçˆQL[Íùm›ÑGù@ï?«l~É µ†¾èçöŽG½¿z@ê<ƒ`{ÀWÙäº÷öÏ.Iø<ãL:›}+T¯3‰¤ +~âUvÑû£ÇW>‹#È\7ÛB¦A¯muoÃy¤á$4!uËœp+Uü s†Cä 3­ R•>~çýéd9_ä¡xÿf|=8×!SÐ Á9ÓÖÔaœ]]Rpqý¯h…‡P¹c¨±T‹ƒJ1®d7è4ª:¸ÇÓ/“Åìv9›ßl..E×¹N—’3at}õC´no¯f“ñ‡«i¤~¬ŠØå4:|³IÄ5h,«~]$Q1h¶±=‘I›Y…Í@jÆ©ù‰Ç2YZ&éh~=;=~ ï‘´9ËÉM¯OÞõŽ¢ÜJæw'èÖ ¢»xö¤ÚñË“g¹Tý7NïnÀ­ò»æ9¿òìzº88šßy²…ÐÒy‹?9—sŸ~ßÒg¡¤ëÃB=Ì ?rüBH)!Îä¿ûQDÀb]mÔën›Ö¬µiÍ*©jÖÔkçoNhš¨¤Ãúð°iÈøD9ܶ¢w† Ñûå"cЈàèðw–¦ mj£RD56 º.héS®úcàA“Ë%ex^Œ6€õ½ï€€¬e9ôIŒ•J9F犖›Ñ~3ÎEkÕ$Ûm/¶Rˆt>¾ÂÄe‘Å’{*¢›vœ2í8)T»‘"÷IdDB¸Þog5»Ûž¼{ÐÅWs¼Q¸K¤¤xúzèQ‹¨ð>Ž¡FNk" fê‚’¬Ðñ¨P=.å*²* y;ø]cðIÎÓѷ킱bÒø1/ 5%´;ž²¤•Š¢éè"õY­‚SxE¦¢CܵRPqfƒv;J§S•„ÐǸËy÷„cx*%í¢é„mCõ”tó8ô”yŸ}ËÙ×ù^–^@ùP $Ȇ-UjE¸ßÒõü² p·a+Iú”®¶SÍ°å e‚ «‹aQL6‡­h¬â~¢°¦(º‡ãº±p“ŽF?U„õ¾ÕégÁ\Ô6ßÞýÉ{)Lk×¼¥™±ÛßÒ³‚·…x£„£³ÓsŸ%‡-^À«5x‹êUýjtþj}w¬a¿<‡ oŽ. —OŽºC>9D̵óëÛñ‚ž¼–€žŽ—“ÏÑ~†t¾z…ÔÐÿêŽPØPxBi ìAEÐÕ~K6~±‰ÚHõÃÊ4PÂÄWÝû3N¸ªÂÝ9%#TI6ÐìI·{ÚðlKÞghe7l+i5Ti¶ hk¸i»€¶fÚZ²aZµÉ´Ã4ÓvyÅ´5g62-¶aZµ•i»¿fÚý¿Ç´ø³™Vý<¦Åÿ”iUÇLÛÍÕv÷”ÜdIoƒ~ö£Ú½x®KžÙrOwå¹ÙFµÂrr«{ív¢íWų!®=/´i–íoI²57ît›õi¼æØ8Ÿv³¢ÓçF¿Û +±ÑØ®V ᆛPÕ6áñ<"ª,ÄáøÞp«>AÑ FëR _´6*‚ú´¼U>Ûpɶ¯‘<Ùö æµ`è <@pÉþ.jÞÜß g·ºƒû;mÉ™ªËZ¡²á‹vkÃM²ƒLoµ½²³+ô–Îî€^tÑ¢WŸÝêžà]£´L¶aI(’×`b«Òêx½Ö›±) ít­Ü™n6«œ7!v*ré/]8ËŒÜåûÕÒ5±Ÿ´áw]•¬¼ødz3]Œ—ÓËÒIó›òsôù®üåñtRþ‚åðGB>[þEeÊFþù¾úâK.Mp5û°²ðáûÊäüïå·ªýRþ6ÓÏÞ +endstream +endobj +6113 0 obj << +/Type /Page +/Contents 6114 0 R +/Resources 6112 0 R +/MediaBox [0 0 612 792] +/Parent 6103 0 R +>> endobj +6115 0 obj << +/D [6113 0 R /XYZ 132.768 705.06 null] +>> endobj +6112 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6118 0 obj << +/Length 1720 +/Filter /FlateDecode +>> +stream +xÚí[ÛnÛ8}÷WèÑj†Ã;‹ÅŽ›)¶M¶qºÝ¢p·5ÄY¯Ónÿ~G׈1u«Øò”„ Ï çĈFŸ"=ÎGÇLE–X…?æ#àœhe"e%Q¢ùeôvÌ¿›¿88¨sF¸¶è)µú-³pÜi¢Ei°ˆ™Ù¬ov«íöîvG>{œ*A3Å5¿·9}O8ÐñIáóßxJ)3žBÍGÿŒÍi•ð€X*£åõèí;]â䋈nMô55½Ž¸@SH.¼ŠÎGŽhž33„LU³/A¨ÒWx6ñ–C“47Ä2›û(ö_«)¤û/(!"%5Á f9~¥ãÕr·ÙÆ&éøfq½ò$× +"! F)QF»0N¯.qsµ¶ã/(ǃ(ÐÝÄ¡DfæǤ$Tò0è *ܳտËíúv·ÞÜì/ÎA眦•»ú4¡ÖííÕz¹øpµÊ6éc2VìØå*$ßzéIІ€‘ßÎSÇBhöÑ^ÈBc!éG8i¢¾Bæ†pdVš¦ùÉË£×ìýÄS5§1féÍñû/Iž°´jË;¸²¼«àÎOž7 ;z}üÇiÌåø/V_ÜA°åÅíä-Yx}½ÚÌ6w‰Ò2Î,uÛ¿)囤ö¾Ö!Ð’U¤ÓÆsKÏ…àâI<1ŒUäòáàlú +˜y≨jÂ^§q'îcO_)áŽ_§DûËñ(w¼JÇkÕ0Y~T ÿ¤8KGÑÆ‚w!Õ€Þ±ƒd†“΋bžeó^ªk4*K±öÏ•±h`^ SXt É¢+.ü‹Ùr1î…“njåâزñĤs Or$µòç3™ÍKïz’v‹+±,Á3|œ¯I§(’´V¨×¯¥Í³}vH܃.}••RË‹zçd·ªCCšUMm+aÓi?Ûq[Rž +ë+Ü\Zêf}UÝ@¡d!%¥7Ÿé”ò.â^µWb¯”H·š³šrFõÉ ¤_› [DLªÄ“‚ùgáÁlìx3¹¯ã׬ª…ôn½×G +á•x¼×K/Î1#:V‡Uãm”ÐO²fÍUõ[ÿÛè~Ç–øà†=¾ v’¶}  7²9©ˆÆΩ­íJ)t¥íãï}:›žÍ;ô|=Ÿƒ,éùN^]ÌkÁ]¼>â _`YÃçfìaÃÇ}ð·»»mþ´q”%ñf×Ðô[4}Ú½Vn”ÞïÞ&÷î홶º­;ÃíõŠëvsÉþFº³T§;FJLû+q¡ßÚ+†L·ˆ¡ #†½ËË£cèÌÀw9ƒ$bÈ +’&ˆBv ¨Ã|Gg§/Ï’Ýž¶+bx¥"VáÕ>_Ìke²€R9­×Ê s­tÚ¨•Ej7×·‹D+ }¹Ø-?{ P«!À—ÚYEF;ÅOÒNùS´Sü8픡µ3L#Ù¿¼öe} ÓÍARͤœPA4“KN@«öÅç°ƒ^€Vè¥mO/e½^Š}½> endobj +6119 0 obj << +/D [6117 0 R /XYZ 132.768 705.06 null] +>> endobj +6116 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6122 0 obj << +/Length 2125 +/Filter /FlateDecode +>> +stream +xÚÕœmoÛ6ÇßçSø¥,,Ÿ)Ã;q:m“9NÛ¡ +7q[‰“9N»~ûõ©¦dɼ¾È+;"uüóx?݉’CŸtðâ`4;xvÂõÀ«ácöiÀ„ F'mÑ– fWƒ÷ç„©øŸÙÏN«tœcÁRÚë׬GÍœ!F–æ1WÑ×õ³åj³X¯î6ä‹Ç¨–„ó¤8ç·]FŸÇ‡‚ÑhRؼ™ÖšE\hwîÁxvðïƒîtÀ*ÓcÄR5¸¼9xÿ\AãJ„MßÒ®7!¡+s'^Îþ< ¹Ï<Æ@2Õí¶$ÑL—¶ðmXgzXÁÚŒ@÷„XnsÅúb eéúKJ˜”­ áBe>~3J£ÅåævrE£Õüfáq®•D1œR¢S—qz}‹kŒ¾‚ \¨s‡–H-³n~q\)B•ÀQ§¨ª‹;^Ü_®—w›åíj{pÁau­E\J¸Ñõч­»»ëååüãõ"[¤OîX±bW‹˜|ËKk¤IKÔêEv{ûƒaĆ¢hÑ+TBø®ëƒ‹­2»ó3$ÂTñÈåíd7›(×pV‡wpò·“éØ›nÏÇÓÉðe3—8ºr0«²øá·¥K¡Šòè|±^ί³ï“•O&€ûÉ=>žû…h¢h-Ù¬ŠÍÁ°ôhøÈr¸hS;*¸ç –Ýv»2“Œš’åYzúX棔én¨3-À†ÆÛ–”£îë‘N±r²«Ò|kU;Å ˜¨Äkîq@#üþþfÔmf’jçA-|î‘1¡¤÷JÛm¡Òe’®:ÝnRBµ´–º­“H+åLÚ¤½ƒÔÏê°@YŠa‚ëÖF’ñ;Ç%™ÆF€Ûãºf”ô#,ÆPÿ¬´¬tÒÖ²eb›åÊõüž®…ÔÉ#ôç#pŠñÖ-SHûhiê™8?ª›Sð×¼íüéŒÐÐú9ØHš…9¸†)”›d¡¸¨¨ßŸ¾{«ÔݹAT‘šk¢šêæLlKRÆ”å亓\±¼ž¯îo–÷÷ù;Q?H;¾]- F•–Ñh¹q)›=ÖØžð>¹žÎBšgå;-yazE¯Í/§*ÑÓI[êÚþ<8€ Î_0 6’2åB ¦8‡~¬Óñ«³Ù_{B… ª„ªªÊA5{7jÃc蟚?ñ2¬âÑè!}ŸïÓÂ÷Êãøænó=ÖÊe!©LÆ„]4Ùìb‰vg a®%KÕÉvf©·`CòÀDZÁFKî4ó8–[ÈÊ6þvKÈúÓXÓhF?Lß톼ªš¼¦LU—í+6§ã£7Í(¢ÎPlvgZSÁ½Õô¿†½ÜëŦå¶CcPM¤¯zm!©¿Žmœ -ŸwII’‚Pó¼“kIj|!9Û—$y%IUyû“4›_Ÿ· „¡8G©ÑŸé&ÜdÏöD Ac‰RUd_”zëðP 9 }E(ÔF +“„KœçŠ\hB™Ú‘EÌOÇ»·61–(UîÒqÚ£Ø%QËëB(ês¬½ T1*¢ãùfî™Ï4‹êå=T{ù+iéØŒ‚泪辘õÖáAlP¸7lÄ3"RáìMpjçb;ØÞµ†¼³ª¼.˜±=j?Á9Yî ¬ý04–$UEö$©¿Žmœ ®w$‚¤$)M´ÆÙ‘`à!)˜/$÷­ý0ä$ÕäíOÒŽÚEq†R³?k? J5‘}Qê­ÃCØpSC)ÔHŠ7$18LZ¸¯³;c²Wõ‡!°„©*p˜zT(ês°½‹\ýah.A«Šî ZoFÀ†6½¶šòobDŸÿPüŽ[ƒ_DRýO ‰%¢§‹Õb=ß,®²Õ¹]eŸ³/Ù—ãÅeöEfŒ>çâ9KòÇ"”&žŸ~çÿv!&:¼^~Ì-|üž›¼ýïûçEö›õb¾°ÿV$R" +endstream +endobj +6121 0 obj << +/Type /Page +/Contents 6122 0 R +/Resources 6120 0 R +/MediaBox [0 0 612 792] +/Parent 6103 0 R +>> endobj +6123 0 obj << +/D [6121 0 R /XYZ 132.768 705.06 null] +>> endobj +6120 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6126 0 obj << +/Length 1809 +/Filter /FlateDecode +>> +stream +xÚí[[oÔ8~Ÿ_‘ÇDbŒïF«•J[<ìe: $„ªÒP©·- ÿ~ã$$'qÓ݇}š_>¾|çŸLhö1£ÙóÅÓõâñ3¦2K¬Âõ‡ 8'Z™LYI”…l}–½Í# ‹wë—Ÿ´sF¸¶ˆT¶úÅ·èÀi¢EÓà¤`2ÿzûøüj»¹½ýr³%Ÿ JÆLÝç×1Ð'Å’Í_Ô˜Ÿ‹%(¥ g\»¾‹Ãõâ¯`sšAkz@,•Ùéåâí;šaåËŒnMöwÙô2㛂ëx‘-þ\ÐjÍ`H™ªa,A¨+=†uØÂrÁæ†Xf+Œzÿ5±šB¹ÿ‚"SRÆ¥_ã×PšoN·×·Å’Iš_\n‹k‘„£”(£»4~¿8ÃÍÕÚæ_‘PÅY ÜÒ¡„o&Ǥ$Tò4ì «.¹ƒÍçÓÛó›íùõÕîàœáîZ›dpÎ)aZuGßsÒº¹¹8?=y±ñ›ôÁ•Õ;v¶)Åw~X¡ #ïÁ.pŽ…$0Œq©&Tóa"\#Mg™hè sC8*«\¦W… ùÞªP4_¯Þ/Çç«[(<[ýç;»æ|·Ù½x~Üa¢·:Ü=pºSp«NwßÂZ䊥à2_}óŸû×—!®7›íf@ È6jh³Ý+ _[zÄ8pä +%Ð.å¾TØV© fÑnÁhX*vÑŒÙA“wÑŒäÒõcªA», G¡Šüc!ó åhL6¸—¥Š}¥âd[ ‘ÍOÞƒ€æ©"F‹™p.ˆ3Rb@§1(Q*vc}ÇnÈH»‘‚\c7Zä†ÍFÕh½Úûí¨ßn$áVÙžu«Í†âùú›ÿ¼k6d”ÙHÁµ1-²‰¬†Lj5Äϵò~Vcúì +Þa(0ó¬ÆlÒjàa*‰Ñ¨myÀj„ü㫃Õáñ¸Ý˜O¯6zQáÆAÙÀÂrüÚoCðô&¤wñ®Çu~p²=ñßVþÀ†ˆŸÆ ¡}/o¶ßìÉ|Þµ9éÿ? +‰·'S· ` ‚+˜iNæ‚”æ„B 68†áªãö„q"¹®”pTÉ€]üêÍ~„1I@®±&mrΚ„Xõ‘ŽºÎ$a[Ù”ðJº£mµq7™]Å" 6Æ£Í0$56  É<‡1¤²34Ä)H0I”óђhDSÀs¯…ŒTи€Rp«ÔáÖ+ –ÿ»†’öêYË™JA°ÖP‡aãäö÷~f&SºSÊY P‰¸ÙCj«Ãuâ²›àVõ,ã\'6l 4°` ‹u†…‡±uï˜Iqæ¢al°Î–u&Pç­Ý­°,ÕN7”f6ç†Òœëh·ßÎXrg,Ü׉ÃJp•ÁјTwzFL ;•ˆÊ—ñÇÑ`J÷,Ø"bžJ´zÊðê‰~72]Š»Àa)繑٠Îp«ˆQ,I &/š<*¤YÇÄa)¸5n¤ÅmÇ‹ˆ(Ï7’J¶ò!Á…tÇ•rá2C»ÜÇ]H +~ iœ…M§±{ò†R|ž|fƒ”òÁPÎÀHL‰§íø¨|¸±Äp©Ÿù$àV˧íW?ýQX¤„R0öêY̹J@°ÖP‡aš0L> endobj +6127 0 obj << +/D [6125 0 R /XYZ 132.768 705.06 null] +>> endobj +6124 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6131 0 obj << +/Length 1794 +/Filter /FlateDecode +>> +stream +xÚÕ›koÛ6†¿ûWè£$,ï,†i’-°®sœn@Qn¢¶r›ëfÍ¿ßÑu’MÝL[>Å©£—‡|^Ýhô%¢Ñ«Ù‹ÅìÙK¦"K¬Â?‹ÏpN´2‘²’( Ñâ*ú3F@&ož½htæŒpm1RÞ맢G+œ&ZÔ– “ñÃúÙêv“®×ßï7ä«#¨„1SíóóPÐçÉ!¿®b~KA)1ã&Ûwvº˜ý9ìN#h ˆ¥2º¼™}øH£+l|Q­‰þÊ»ÞD\`WÈv¼ŽÎf¿Íh™3G0”LU,A¨:Vø6‹=,‡¾ ØÝËl£šM¬¦Ï¿ „ˆ”Ô„qYäø}”Æéåæn2IãÛåMêH®DBŒR¢ŒnËøõú +'Wk?  RªÀp‡–%ŠnnqLJB%£Nªj‹;I¿]®W÷›ÕÝíîÁ9ÃÙµ6ÈÁ9§„iÕ>úQ†Öýýõêrùé:-&és¶­š±«4„ouéHІ€‘{¨s¬c! ôDZAÉM¿fpƒh¥‰º2Ç~HVž¦ó³£y¢h¼€‹CÇÊYüq|ñå —V÷ò ®^ÞMqg¯_9Uu‰.§~1?z{Ö³ÞCÈ-×»;•¸Â(ñâ‡CüñÝÍýuºI{˜ °f¢©ð(€xq“¯ü/‰Œ— XÏ꟬ñú1çÖóTà$CHâò8g½£ÑÏpj!jqá‹‘ B[MPS['A‰ ±DA—¹“é Q5DM…%D–½f2™J·¶ræبÄc"ó@µp7ŠwùVìcñŒ¿Ûeë8²ë8JPŒ¡ñߪ-›E}¤¢½CŒ “* ä`îVØjM,‹]˱±Îpiœ¶6ØOíU—1Áî Ëè&õüìÚg¾U¶¶Ö3Å~ÌhÜQXa··«=y%ôAQÁ´·ªn#ŸÎ®g1~Fî$3rÌ +žÒl#—s\Qq~2?6òÚ*#ohÛ±q9hãåž'yŠ-Ž?;-=ˆöÂÒiÍXdRÇ'ËÍÒ1–yÛê^¶ëûôæ~óØíð!ôVßÆße¿¿k«‡ì—€»`kXy¾»ü½°lïðw:z4Ù¼ +Õq˜ÒÿQg§ýLÓò¥ÐŽïîá6|ù/¾ð0|Ä𧣱ëÕY ?¿÷‘Û=—è¬:È¥¯Èî¹åLÌéœóu{m•Ý·´ ^ù2çù`~zü¾ÇàC¨- ¾#‘™¥Xmâù~5{•£·þçå/í°¿„'çÂÆà`<ö ’CLÑL†û ËGA<æâ;„¶⦶=!¸ò"·¤ØIÏ+ïkŠ› +Ÿ"Å“sácHæù4Å;HF1×8Cœ¡˜[KòM#(wíB]ÅqKÝžO¸ô +"½`º#¯xb–t÷Ú«ÉzêµWÁã-ÅOñé¹ØÅ3‹¡¹çÝï 9ãÂ"Ÿ†qM‰ÅËöZä{—Û!´Õ„7µ Î÷(·ƒ¨-¡v'Ò³Ü!°†¸©ð)B<9þ„!V0Oˆ}ƒä3ÜCØ0 †×ðzÄcÊíÚjˆ›Úö„x Ü"·¤ØIÏr;„Àšâ¦Â§Hñä\8Ä =!öŒ‘1Ì,)ÃÜ÷âÀ grÃãŠíêjŠ›êö¤xB±DzI´;¯‹í‚k›ŠŸ áÓs±KgƒKÏÛbÞArÆ%ÎFÿX¸&3D83ˆ%ß¾•ÓQix§Ë_YEwKÙ ÝÝu60›=Ü1¸öƼÕrÑ_œ_aîÄ'ZÄù +—lßêÜ_aÅ|K¢ëÑYöHKJçs·¼I9›x{·77ÄΛ¦‡ë‰£u‰€z>°ò’Q Va5pÓO*¢‘ŽA®…Â9Ü®/ðjÙÊ Ö!¤Õ`7¥u¾¡ÐoEC`ËÉ`a‰¶3÷Ýh˱h‡ÐXÃÝY? ~÷û/ž¦ùз1Ç6ù¤_™ú{ã݇–#Èü¬®YGã”÷­8>œí;œ¥Sžö 3ðÞ…ùàÜïm(aé¸aÉe÷ë}Æ ¼Ü‡“0v<õ•ÙjÚ¬n³¶G†¥a·?O_²»æ +V ž2¼ƒä-Š +±w4Bc¥ÌŒE¨aŒÝz›>„¶Ê¢[Úö«½òÛ#®Å…kùò7W‚Œµ0k÷4Tf­¨Ù÷þJ•Y·DþO+±éãu@Š1Ô)vLf Ñ|ÊwiÕB +óÏMó>L?¯–æ«ô6]/7éUá†w·ÅßÅ×ïÅ“ô²ø!Š?@Ÿ3þLñf•ô%\LJ׫Oe„OeÈ»_Òâk¨j¼8`j7° +endstream +endobj +6130 0 obj << +/Type /Page +/Contents 6131 0 R +/Resources 6129 0 R +/MediaBox [0 0 612 792] +/Parent 6128 0 R +>> endobj +6132 0 obj << +/D [6130 0 R /XYZ 132.768 705.06 null] +>> endobj +6129 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6135 0 obj << +/Length 1985 +/Filter /FlateDecode +>> +stream +xÚí[Yo7~ׯØÇ] bxAQÀ‰8hêÔ’i(¶â°-WQÿû÷Ò®Dî¡ePè“ì%9üÈá÷Íh–ÂÑM„£“Ñóéèé1•‘AFÂÇôSDCJêH¤!Ñô:zSŠˆHÞO_==&¤Ò™QÄ”Ki¯_²5s +)^v˜%TÄßVO÷ëùjõõa>;ŒJŽ(ÕŘ_ÛŒ>KÆŒàø´°ù%)%‰)3vìèh:ú{D ;ŽHey,¢«»Ñ»÷8º†ÆWFÌèè{Úõ.bº;ð6šŒþá|ÏÆ2–Ͷ8’D–¶ÂÛ0Öô0Œ4îjr…ÿ2 +“Ôÿ#Ây$…B”‰l/‚q<¿Z/Wɘ +ßÏîæŽÍ5 ÅI­ê0În¯Á¹J™øÊñ +076ˆKžusƒ£B ,Xt’ª:¸Ãù—«Õâa½XÞïNÎ(xט “3†U²>û¥ÖÃÃíâjöñvž9é“}Vxìzž ßâʱ5\iD´ØãsH³öƒ,ŒB›f \!N¨nvd¦f¥Ût198O$Ž§¦~;ÎÎ7»Kp°¼‡;´òpW¡MNOœˆ6k­¹ß§ç¿Ož8†Ys Çqëh?U‚¬5§ŠÓ ‰âñ8ŸëxúñŠË»‡ÛùzîgTŒ%£ª BH<5øÍÛ× @j Qõu<#.OäîRÞ$"ž©ß¤Á„2ÊуѶ¼ì°ëÖÝÞZ0¦† w´n&3»w[×O2¹qMRoZ/îmÛ#e„ù%©¿{w%ÉÚàdXxj#U5J7¼y-J@Ò![UMŒ„QÈáùчv] ®Ðµ¸ýtí0•®ì¤$†Å–mÄø­U¥ngpƒÄ…Xv&qn—À™ÇXŇ³õÌû<ãÇâ $¯;ŽîÖ ro!w5À?Uî`¬€\¤Y ¹"N%¬N ]¦6Ä.€rí4'pcc ‡rå“;æÜ,D;5”Qcg6‚xûèùFýÇ@8GHð7vHn¡tqöz.(‚Êæ€Âîáº4Ð@˜’Ì\ ú¢KuœÏgÃNoš9BØ F Œ;CØÀÃS,H:-GÀÔBåNê}–€R\ÿv–0¿Ý/Õ» IUØinܺ?t—‡Ž­MÍBÁY¶C«¿0fKû]î»?.„SÆ…*—f7¤’ÐØšKšn[Dôº!ƒ5®¦ú€Ç-ÏVë ÿðéz—UEÞ3ȶw¢LÒ»¬ôÝ›†gÚß?ïÀvÅÌÚŠSÄÁFRE´•ÝRé ðmb@›"r)‘AÌäØ©.íšX¡yU`$/ºLò¶vmÅ €¥P¼*˜mVØä•q¶yžšxüÈÙ…m£ÜÑFy:Œn›ã¼A+ŠNÚJí îçÔó\‹½Ø,¸õ€û´$ :ÑÛ-Šƒ ¥é@jÄêƒU±¶Š(*h»N0x&ôF(&Ù—Ó†oÁ­r_)U|MzQÃí‹ Ør±ØÚ:ŸDÅ“õlµ¶êøÅòþzáÂÚ\Ž±Ô*Æÿ³¦ÿjÖD0ñe®µVó¦¢îˆU¯F"Ua¯ŸOØûseW“­  +û`#©° ƒ0æ½_Ĺ„)‚® û M­Ðô´š[¦éÛ»–ÈLÓý‚`þB°kv¸Ó@„ÞgXh¤ñÀÚÐ`#)˜ARÉ0Dr¿ö«ü„UR ÊÉÞ! å ¨oWN€f%À(‰PÁ±Íî !žçš7ð¦7dÇ‘\©¼j$å ÁHk¤‚ÀEÎVê· ¡å¾¾xyxv²g °äPàÎ+8Ñ xγéé룳‹&†…ž3¬¾±dzõÕçëå äƈOm¹cq7w­fùµ) €X²¯ŠñgÒ¯7fsˆ=CÃÖP#–~T2Dd˜W 3©o~J§?ñ•FØ%)«°‘2½ãÈÁúÎÆð¾Õà ‹Ï‰]s™—Ø+—#{ÔC .y^…Ü«ôÞÅ.騤À›¥÷ÁF,s D_EÛÒÊfí'>7Ìm%`Ù VgÏ)ÒÄ {:FûÖ f]¹j›Ú;h¦q©¼íçVĹª‡ßdñ×¨æ› "Î +ZõF m»Û×­Ðöòò¹-}×M Žíû .\Üà&Lpß-À1(ö\Îèt£$µAɦŽ—xnß™äu6œµs÷öãÎŽ"[åÂÚ4p^pÚîšIWßlŽƒàîãÐÖCrÞÇM2ÍýÖîëT//ð^z]νg¶ +•¼g¡R{ •ÜS¨¤¢Ë뮬2n¸»‚ -Ì]¬Ži»ï£³B™ ñ/&ω¤®Çš6àÎR­ì 2Ül?— ›œö‘\Õó÷üiCÑiµÜßÖˆ ¿=ïaÄÿË£Qó‚íá?‡˜®þ`IÄ +GÌïç«Ùz~íòò>ûœ~þšýq8¿ÊþàÙÁÏ({Ftö„wíøEþ륄©x|»ø˜[øø˜›\þx¼™gõ‚'ÿO £6 +endstream +endobj +6134 0 obj << +/Type /Page +/Contents 6135 0 R +/Resources 6133 0 R +/MediaBox [0 0 612 792] +/Parent 6128 0 R +>> endobj +6136 0 obj << +/D [6134 0 R /XYZ 132.768 705.06 null] +>> endobj +6133 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6152 0 obj << +/Length 1124 +/Filter /FlateDecode +>> +stream +xÚ½WÙnÛ8}÷Wè‹ Œ.¢– (L¸M“Nâ> Ò eÚF–2ZšæïçrslUIÓ›yy7žKboéaï|p<œÑÐKPB3Yx„1…±&… ñ&sïÖ§>ü:ypFÈ–0£ˆE hÒRoÄŽºEÁF@ )÷¿UYÑȪjï´êQˆÒØ­y÷3¥‡Ã#Ø;õpDÂ0$> °Z;8 þÇÙ + s/]n¿bo“ï=ŒX{÷Ztí±D‰Z˜{7ƒ¿øç9㢌¿Îór&òáˆrì¯E‘ݵ¹h²²0#å´ÍJšÎ&'æ÷ ÆL,mìxËöF4@ â×V&nýrË\¿.3U;@>9wK:þŒM3Ëš'®Ñ´V[%‡„ûˬ»Î&Ç7קçФ·Á¥Ï#! +XapÄ“À„ñ…R¾+u;âûo漧…´“j «¥ÝËk-¦}‘Ygµv@߇ìŠN÷b6ÍŸ5ÛAÉÈUC\àEZ Iì—6“ U"¥Mâ}•5Y±ìÝÔ•(æ¹Ëö¢-R…­zÇr6y§( ù^0¾¹îKÀ7…™6G€ý?Œ¢iªl6¤ØoYÿî­¹Ÿ_÷.žwði?È^ü8ýøiò÷t|99½¾VÉøüiò¢ûÚ²éÑÅøèæÅ×Ð¥l¦¯—·J6¿XÒû±{¬As¢²ä‚íÖÔÓ5m‹JUEä_¿6§ÇW~ØÑñQuyõsdæôN}8=y-ƒºj®ÎúPùl‰¼2š`! +ÔƒS'Î'mû¤LÛµ„ÛZ³PØåv1"vùcLÒøÒøH?B’1 VI„‰ò3@QLõ-“Èz“iÞÎAofÞŠ]*÷®‡­Œœ–ñ8r”ÅnÉH¼Pÿn>zø~•¥«Ždž‰Úpî7¥œn%}:— ¤hóFŸ_¡c,AG?tÕÿw3:wVeaæEaFì-§!¬‘»ú„WR9FaUÖ¬L¯(M+Ò´\ßÐÿ`nqس:îþ;,&./0·¦3“¦mMÌJk^:U&U„OÃ×Xí?> endobj +6137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 604.512 202.56 615.043] +/A << /S /GoTo /D (group__avr__interrupts_gad5ebd34cb344c26ac87594f79b06b73) >> +>> endobj +6138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 591.561 201.454 602.091] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +6139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 536.701 206.993 547.232] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 523.75 227.666 534.28] +/A << /S /GoTo /D (group__avr__interrupts_g67cd0dea412157775c2f2a3ffe9fb8ff) >> +>> endobj +6141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 510.798 284.632 521.329] +/A << /S /GoTo /D (group__avr__interrupts_g751c22101f7e8f2fbe792c64a81f8dba) >> +>> endobj +6142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 497.473 241.305 508.377] +/A << /S /GoTo /D (group__avr__interrupts_gde46eb4e42cc9d56c19b1f91448f1b76) >> +>> endobj +6143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 484.895 204.772 495.426] +/A << /S /GoTo /D (group__avr__interrupts_g3b991e8168db8fc866e31f9a6d10533b) >> +>> endobj +6144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 472.547 249.105 482.474] +/A << /S /GoTo /D (group__avr__interrupts_g1f6459a85cda682b2163a20af03ac744) >> +>> endobj +6145 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 417.687 245.738 427.615] +/A << /S /GoTo /D (group__avr__interrupts_g5fc50a0507a58e16aca4c70345ddac6a) >> +>> endobj +6146 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 404.736 260.124 414.663] +/A << /S /GoTo /D (group__avr__interrupts_g44569cb914d2aaf8fbb436f8f7c4ca68) >> +>> endobj +6147 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 391.784 246.485 401.712] +/A << /S /GoTo /D (group__avr__interrupts_g8b4c7e44627db0a60d676213add42d64) >> +>> endobj +6148 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 377.856 254.037 388.76] +/A << /S /GoTo /D (group__avr__interrupts_ga87c0c624b62f40a17539be6946c3e26) >> +>> endobj +6149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.218 256.674 451.348 267.578] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6153 0 obj << +/D [6151 0 R /XYZ 132.768 705.06 null] +>> endobj +6154 0 obj << +/D [6151 0 R /XYZ 133.768 648.488 null] +>> endobj +6155 0 obj << +/D [6151 0 R /XYZ 133.768 553.399 null] +>> endobj +6156 0 obj << +/D [6151 0 R /XYZ 133.768 435.685 null] +>> endobj +797 0 obj << +/D [6151 0 R /XYZ 133.768 364.282 null] +>> endobj +6157 0 obj << +/D [6151 0 R /XYZ 133.768 341.971 null] +>> endobj +6158 0 obj << +/D [6151 0 R /XYZ 133.768 341.971 null] +>> endobj +2859 0 obj << +/D [6151 0 R /XYZ 426.976 247.872 null] +>> endobj +6159 0 obj << +/D [6151 0 R /XYZ 133.768 231.145 null] +>> endobj +6058 0 obj << +/D [6151 0 R /XYZ 442.776 151.039 null] +>> endobj +6150 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6168 0 obj << +/Length 1560 +/Filter /FlateDecode +>> +stream +xÚÍXÝoÛ6÷_! /3”dIVV Hó…¤Mӥ-Z¦mm²¨RRÒü÷;òH[RT}Ú^Ì#y<ÞÇïŽ'SgãPçjòf19¾ b'%i ÃbíøaH’xîÄiDâÔw+ç³ļ¯‹›ãKßï0‡ “$i®×ÈÑ—d¶g`^¹ò8/.e[5d;"4ž‘ ˜Û3¿ÿLè‰7 }ê^[™µ7õã8öÝ`櫳“‹ÅäÛÄvêøó|’ÒÈÉv“Ï_©³‚͇’0;Ošuç„3`õÕÁÂù8ùcBî³(!Au|FÀA ¥Ô}µâ_( JîMƒˆº·=\¿_\Üß{!u?}X|¡}ôÀž5B õ·÷Úñø2 ÁiB}uùŒ$óÀ™„¦1^ý*/³¢]ÁM1\üšõ]n=J;L­”„Dó¥œ}Á¡a»¬Ä‘ïªæɽPœnY¹*¸Äɺ-³&%ñ¦Élî.¶¹–¹OyQ K)ÌÁ /¹d ß_äG®¹¢’¢¤…Tšƒ¦>/2~æUŽ¾ïfB­(P sP¢,ž‘’¼ie‰ôZŠRÍÖœ½þxO:8¢¦™C õ%F„1gK±2×°Ú +ÛG4GÕúÐÈ×`°&žEKðþ‹ïlWüäWaBÚÜéùÙÃ#NÁí·‘\³È˜)8'}hÏÆ¡ þëCÙK÷È›FÀÊšFæK/ nÛðú?Ç8T )Vm¦@йy@“.²ÕòÙjr·âT–¸k.óŒãDŠ¶ÉK®-Õš-3|²-͵Oy³ÅÝM!–¬è¡Åœw +œFI™79+¦5„òš- ¾ÂÙÒ®òµŠk ƒ)sP¥À±\«+žå*¤|Eöº$$f¨ËB¥J$/«5©7箨”›Xa–UFj¢h´+“SN±.ù–))¹hå€_òÔgeƒS[,VxS^mˆõAèH¶u‹Ô¢`¹·pC‰…{C«ÔÚŽ=#±4LmÍu‰‰1Oõ9ê¼ÜXQ,ÿ0ôû»¼ËFÕ­y¥ÌQβíHÀúá1gÿô|U~ŠL¢Ù {ôšŠRE*[Þ¼»;{{„jþþîÅŠFîéÛ‹ss‚ƒy«U¹1¯ëýÕÄù¼?3³ëôÝõéÇ»KS "×”ž^6‚ UàÀ>bmy™èaJ ¦¶?صµ +yl"£Ðõ;Ž5bÔV~ º©UPÇøK¶ÓpÐG˜aÒŽDnènÐéjº¶§öÒ+&›Àî9¡Q`_¾ÜXc] d&9Û¿ÌØ#¡SEn3±Ó5Üe°ˆ~Sˆ_ud›–ïpã¡_Ä'ÑöcñQZÀWE£½#p’é¾:Ó!ƒiÅámV­¼š BêÄÖl‚w«›hZ” +¿Ä]ªÓ®w 8X +Ð6un1¡G¦‰ia±bnn?ßÃÁBeš ÕëL%l˜{Cˆ˜p+ˆDö¨‚ê8ÅuÃ1^G!“ì¸T¦Ûô(u¾=Ü€ºG“@ñ~¶˜Ò@9Ôt|EaC• l0`,\$‡(íx¹zbôƒ8ÅÃ_ù¶ŸÁ1¼á¼û= ÂŽ³€RC­•Ûö5ÿGðÂÄù2ë÷¼çâû34‰C“ÿˆa\ä +endstream +endobj +6167 0 obj << +/Type /Page +/Contents 6168 0 R +/Resources 6166 0 R +/MediaBox [0 0 612 792] +/Parent 6128 0 R +/Annots [ 6163 0 R 6172 0 R 6164 0 R 6165 0 R ] +>> endobj +6163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [452.683 387.155 478.476 397.341] +/A << /S /GoTo /D (group__avr__interrupts_ga87c0c624b62f40a17539be6946c3e26) >> +>> endobj +6172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 374.856 199.91 385.386] +/A << /S /GoTo /D (group__avr__interrupts_ga87c0c624b62f40a17539be6946c3e26) >> +>> endobj +6164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.22 248.443 213.349 258.973] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 142.988 182.276 153.867] +/A << /S /GoTo /D (deprecated__deprecated000002) >> +>> endobj +6169 0 obj << +/D [6167 0 R /XYZ 132.768 705.06 null] +>> endobj +6170 0 obj << +/D [6167 0 R /XYZ 133.768 667.198 null] +>> endobj +3018 0 obj << +/D [6167 0 R /XYZ 133.768 544.535 null] +>> endobj +6171 0 obj << +/D [6167 0 R /XYZ 133.768 529.964 null] +>> endobj +3571 0 obj << +/D [6167 0 R /XYZ 181.688 348.056 null] +>> endobj +6173 0 obj << +/D [6167 0 R /XYZ 133.768 331.329 null] +>> endobj +6166 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6177 0 obj << +/Length 1203 +/Filter /FlateDecode +>> +stream +xÚÕW[oÛ6~÷¯Ð ¨^tM»I›i‹fK¼½¤EÀHŒML–ÓMY¯*… ¼”»P¶ÝÙñà%%Y!ÐËtn£ÍS- +º³cÖºùÃÅY¡¾oq”MÛÏ•ÙìzŽR·T¥¶é£}Þ­ý¾áÈ:±Yãl)\(ˆ7J’DPׂÁÇ Ò°lKÙë»ZmZ +PO<*u?ÇZO^½B® +²©P˜%{/LÚ¦^G©=pp—‘”{ØüÖùÎõ‡õÒ÷FßEœ†«Þ/êf0Rlü¾§ìðØû½=Xm²4-98ˆ ‰&{X˾ŒµÓw—¯ÞþW0!ŠþH]Tªéu)k ˜ËáFië–rŸ:(|÷@j“ýJ‚ù®%@cá¤nïÐ9õQ:F¡ ÝkY×kœVº“¢êŠP©o+Šð$b" ¿ÂÙ\šêÑ^ô †sÕàš²Çëf¶çÀß +k +9¶«ÕØ}ÐZTëڂêm¥ï×[^,øìB×pX¤æ_Fê{ÂÉÛ³×ßZm~".åرt|Qá1j%‹Q;.M[·³•ÂYkpTÐO¯Ml+è„•!¿Z‹U§¼­]Ý=Ò¨nÙ6£9§¸¿ºCeìÃH±…öŠ4u-Ài®eVŠX8ן;¡ –ÌaÍ®ø-Ix}u6A€hz¦; ‰˜†dQÄ¡ìpùQÕ5n4ËZ–Þ!(}GíëÄÌü3åj2ÚÏĨ^Ûâgß¿àÆ#u†j óϺé9N \7Èü‡½6ÅW®ÍåwCñÈáYhVcÞ|ÃæY8Ûðsn›PÜ¢è|—™3h¬#fËíÀçøÁ›®n¬P†²9ófêdÙk÷Ç»ñ¢±oPü[µ´Õ*iêõ¶*—mço§5°©:<ùŠ}I`Õ}ï@¡šneüâ’^¸š€0H©ÀŸ#|X¬T-ׇâµ,àšß¨Î1ÒÜ;²„ƒ?EN2ño~ †_¨$òíß¼ bxOT£ŒÜ„Ôú 3¯Px­JÿÃÑc.ŽYŽ3øÈyéÞvkHÒÿOE" ǵ¾ó\ϬËöÓzŸÝ½”ÿ/=•õ +endstream +endobj +6176 0 obj << +/Type /Page +/Contents 6177 0 R +/Resources 6175 0 R +/MediaBox [0 0 612 792] +/Parent 6128 0 R +/Annots [ 6174 0 R ] +>> endobj +6174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 240.781 154.68 251.685] +/A << /S /GoTo /D (group__avr__interrupts_g3b991e8168db8fc866e31f9a6d10533b) >> +>> endobj +6178 0 obj << +/D [6176 0 R /XYZ 132.768 705.06 null] +>> endobj +6057 0 obj << +/D [6176 0 R /XYZ 133.768 575.394 null] +>> endobj +6179 0 obj << +/D [6176 0 R /XYZ 133.768 560.967 null] +>> endobj +6160 0 obj << +/D [6176 0 R /XYZ 384.654 463.717 null] +>> endobj +6180 0 obj << +/D [6176 0 R /XYZ 133.768 447.132 null] +>> endobj +6162 0 obj << +/D [6176 0 R /XYZ 384.654 350.991 null] +>> endobj +6181 0 obj << +/D [6176 0 R /XYZ 133.768 334.406 null] +>> endobj +6161 0 obj << +/D [6176 0 R /XYZ 384.654 226.31 null] +>> endobj +6182 0 obj << +/D [6176 0 R /XYZ 133.768 209.725 null] +>> endobj +6175 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6189 0 obj << +/Length 1610 +/Filter /FlateDecode +>> +stream +xÚÍXmÛ6 þž_a _`öY’_‹n@‡k×v—ºbPl]l4±3YiÚ?R/Ž¸oØ€­ÀÕ²DÑâÇ™ÈÛx‘w³øyµ¸zNS¯‹«0fiî¥E¦ñV•÷Ö§4$éòÝêÅÕsBFÂŒ†,+@“–zb$&ê²0‹¾¤‰ÿA^5]XÏkKóÌ ÿô5m—#‘ÿtIâÄÿínÐ$ò+±$ð¦A¿eóGÑÒ,ÝþâDp²mTÓµý2(²‚ú4fø¹Å³Õâ¯/DAAÂ"J¼r·xû.ò*X|áE!+rï¨Ew‹A”àÆ­w¿øuMðæðM²²Ä˜²ª8 -rÇ?™ÁZ˜ç¡•©Î7Q—Ή€ºÁ.š!q›çèp˜Å‘Fë?p=wýýíÍkŒ”§¯ôýZªNþç\¸m•ìªC‰t`´0™’Ù8ÓÁt éf‹w®pÃ%Useæ塵ZLÁÑÇ:­TƒÕ—á.WMÌe;$kõ¥ü2rí¯z¸Ä7¾xƒ2$sëÿ=ZÇ·s—dxæ-¬åÆ–Šw7çut…E‘ä,¤qfN}-öæÎ+9¦ëyïO«ÅÊJ0½8ÈuwV„@…hUÉ{{¢ &ðW³IÈJ¹¡ÕUãцFWA‚×5囯}Ðý²~(UÇ!e¢žj°À·‰!²â0*’‹¦¤FÒ,s@ã¢ë‰ ñçÛŽ3}EHirÙw|Nß¿Óx|CìÐx$’ˆ€Åù磿û†°Ÿ´1lŇc<&Y[ýVJ-‰_Û¾—Ý^6ºûÀw4 ŸgNé¢\ïw›+Ó@_ᲇ>·›ÖZ™;aË”Ø^U±½´ÙÛÉì´ó4uÞ +v»òðã :àöbè6í•$^[fæ¾Á™òDYC(dEê0$¦Âˆ ÞÀ º£U£@*“Þà‚€£±ôüÆÃÂ1&º+b±«a‚ïG€ãŠuÓeëL" “ÍOfP™vâš5Vjœ¶X2Æîwø7£Š"¯¡Ù^Þ¦ñ³˜Š¦dºcÝ”µ1z¨‹ÁÞvÚÁâòÚBaYZ™ÙªqÌ›",áÆ5%80Irÿ¾Ã;‚Aµ)uØnš^÷= ‹E¸?z³ˆ4ЗŒµs°òÄZ'N=$¾ØÝ[9)ÜÊPaë×ÆžFKáíÓ´“\0ûD÷ûž Ü;)pœåãò"d©æF´Bò¡upѪ>˜Áµ°),6=¦ì1ÉÍ";z@ã;éê6n—,ó!€ÖVƒ®.Qe÷ñÓF\˜ü7Ç»¼™ +endstream +endobj +6188 0 obj << +/Type /Page +/Contents 6189 0 R +/Resources 6187 0 R +/MediaBox [0 0 612 792] +/Parent 6194 0 R +/Annots [ 6183 0 R 6184 0 R 6185 0 R ] +>> endobj +6183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 255.083 182.276 265.962] +/A << /S /GoTo /D (deprecated__deprecated000001) >> +>> endobj +6184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.144 235.367 240.946 265.962] +/A << /S /GoTo /D (group__avr__interrupts_g67cd0dea412157775c2f2a3ffe9fb8ff) >> +>> endobj +6185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [312.895 235.367 337.025 265.962] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +6190 0 obj << +/D [6188 0 R /XYZ 132.768 705.06 null] +>> endobj +6069 0 obj << +/D [6188 0 R /XYZ 384.654 615.701 null] +>> endobj +6191 0 obj << +/D [6188 0 R /XYZ 133.768 599.066 null] +>> endobj +2858 0 obj << +/D [6188 0 R /XYZ 175.562 490.405 null] +>> endobj +6192 0 obj << +/D [6188 0 R /XYZ 133.768 475.827 null] +>> endobj +3570 0 obj << +/D [6188 0 R /XYZ 404.311 394.689 null] +>> endobj +6193 0 obj << +/D [6188 0 R /XYZ 133.768 378.054 null] +>> endobj +2999 0 obj << +/D [6188 0 R /XYZ 133.768 228.803 null] +>> endobj +801 0 obj << +/D [6188 0 R /XYZ 133.768 221.885 null] +>> endobj +6187 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F52 3939 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6199 0 obj << +/Length 1504 +/Filter /FlateDecode +>> +stream +xÚ­XÝ›8Ï_t/ 5®m> «ªÒžšÝë©_×äátmUpt§@ºÝûëoÌ,Ùí®ú’Œíñx>~3C­­E­ëÙï«Ùó+X‰ø[m,æºD¡D> "f­Rë“Í9aÂù²úóùc=f—WD ©ázq‚¯cˆîÛßËç¹Jþ%» y'Á‰ýåCò.œ¹Ë¨ýÄ­³Ú™sŸÚËãá J°€…Í=OK™-V³o3©Åz62QßJö³O_¨•ÂâŸ%nZ7 ëÞr=`ezcn-gÍhßqÝ;¡¾ Üõ.qݳ.w$j¿WŤC#Âec‡ÐsÒžC"fßì²ddàÚYeþ‹$?¦2mGgE.‰s†þ*·Æq¯g“)4¤óÔ8Ä‚„üA‹Â‘Ek‡SûX£ö{UJmð¿ÞIMxv*ë8Ë+-ÕšCì‰çGÖœA˜}p¶D¤lJµGªÙ®‰RV™ÔYƒS‡ù¶™7ÞÃÁgJy.Isá‚ÜCáïT-[‘qÝR:§HǹȽÑ?ñm58¥)µQy®´F7Y±íKª.Ž>9"$H$(kpÆÁ Ü'4¨çoA¥ö ·jS~Må¦"»—­eñïìe‡¬oðÏnhaþ“ò¿Ë²Ê:þFæU‚ø¡±j)åYÐS5 Þé÷eU¬Á7pÑDöø }÷§3J…½¸e€…9§®½9€=Uਔ€Û¬ªÁƒ@[Ÿ€Á\”ȹW¥Dª…3ˆ×JgŒf5h„ÉŒSiöõ<¨^îί»¢Á9³ãæpE*õÎ"ÓºV¸¦Q/!haâõ{œè[+•¬q).Œ`Ø”•-ûD –w½çGiŽ+œ×Û2­hÛ&¦Îú-É´S½Àèçùöe½—9’©JŽ{YÔ±¶‡@¡Q›È°j\{¢`¯¶¤H²æ|Xnñ³æ€Íñ¨Ñ¿h¼ôL¯»RÈ!OöuMöd©Þ—4ÀÐÀÃT† +JXíÛB±•¦Ò¤ÙFËÝÈvã¨Õ²5¸šæJQŸ,‘ÕdY»ÌÅ]Ñ»F¸DÀ4ºfº0$¸Ðžä±’ñ:7|ˆÝF £<j3JX ¦šx£Ú|Êu:’ˆ‰: 3ìÝí£Œ²‡†aWYçù­øú"z¨*ïã¤TÆÛè¿K™‹uSƒÜQû̹?º;ÍO³»?^¾]¼{5Qg´ >‰LìV­Ây\Õ-æÉ.;àÄÓ²pRsŽgêzµ^y”š?JÏ°ÓSDöAUU† [EaºÇØ`$ì.Z˜o®Ù°3DƒMgsìf­Ç#¿›äÒ.ôk(úy‚æð0<âL¡j$â842B»©‡?ô* ôÁ©+½væ°°;ìŽìȉ”€ž{‘›,Ï[\” ¡Š”]çRtÐüj@,øa»X|ø¨ëêûŸlðý®Þ\.ÿx¢ŠëÛ¶ÿ3ʵݨx\Á–’‡RmËØ4¢Õ!Nä¯vøòÃÛ¯áÙ—ŽïÛ׋åëw‚¢ #( +žz‡ÔZ©:W¦§p»ãóKãMøÆ`Ñ4¬.š ƒC¼•Uö_·äÓÆAýWÁCa˜š0mXá +I‘Òé4t}ÞÝóH}éÉÖsJ<ÞµoÐÖÖå1Á†` xúPžŽ¯t0:¤¯é¾AjœÚɤ{@£“xÓ:s½Âš»aíÍÓ{àWÛ ¡­õï¾ð{,ЉSï¾'þP¢ÏàØ»Oüsï{ãßãò9£<ÃõËI²¶¡­›b§R îäûiòSAÂCü1 +Ú/+<ÄÜ°ÿ ŒˆÛ>“®e!˸n`ÝëÑV»#¯d‚„‡Œ^p÷‚…8┪i锩à&´Kó<['mm2"ÕÛ­š&ÿ6ȇI +endstream +endobj +6198 0 obj << +/Type /Page +/Contents 6199 0 R +/Resources 6197 0 R +/MediaBox [0 0 612 792] +/Parent 6194 0 R +/Annots [ 6186 0 R 6195 0 R 6196 0 R ] +>> endobj +6186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [321.662 654.8 371.475 664.986] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [149.184 543.426 327.342 554.33] +/A << /S /GoTo /D (group__avr__sfr) >> +>> endobj +6196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [164.592 474.369 183.731 483.216] +/A << /S /GoTo /D (group__avr__interrupts_avr_signames) >> +>> endobj +6200 0 obj << +/D [6198 0 R /XYZ 132.768 705.06 null] +>> endobj +6201 0 obj << +/D [6198 0 R /XYZ 133.768 187.001 null] +>> endobj +805 0 obj << +/D [6198 0 R /XYZ 133.768 182.393 null] +>> endobj +6197 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6207 0 obj << +/Length 2007 +/Filter /FlateDecode +>> +stream +xÚÕXÝoÜ6 ¿¿â€½ø€Ä‘,À¤MŠti“5‡¡@[d>[ÉõÙ7Û×ôþû‘"ýuq×ëÃö$‰¢(ñGŠ¤$æs19;[ÎN.Ù‘Íò~.•²?œû‘gû‘œ/Óù{Ëql,>._\H9`VŽ­‚$®Ÿ‰c$.°·cˆŽg}®Nò2ùd¯'乎í÷ì¿|K޳ű’ºq«¬Y;ž°nwÛmYÁ@ú2ô-ÇõPÊì|9ûs&a¡˜ËŽÒŽ„7O6³÷Å<…ÉWsa«(œ?ÖÍ\¹À*qa>¿ý6#àÄp^`;Ê£.×Îzýqpzs‰׊ó¼DLkšˆ©ÙÕº"†¦$J½ÕIv¿§AÓ +Í{¡®Uë¦ÉŠ–t_V#f—D|ÂIø ©<ë÷·¨t, jc©,µŽŠ¬f!-#=kO„¸23¡•”›m–þDÇm=ϲa á£ö5K莊‹ú£âè1ËsbZ±Ðm':%ZV-¦¡Ñ"Î[9I“•Å”f¸ƒQ;çWÔ)wÍvÇ΂päúˆñ}ƒ°cú´;Éí;.I¾©Ê‡*ÞlŒÎ*rÀFeŽ¨GÊJâ‚iñ§x¦&rœ~F<㢉41”÷4EæBoK f¹‰rfVoV:Mšæ]`ñPwŸNhTU‘Û«ç*a­öD4füÒT1Ø4iX ð´uVSï`sðÒ"¥Nª!P¼[”Ý·‹5uX †£ÐšW?†v¥§ŒµeHÉæ^g åvSìaìÏعÈãzÍüEJÜçç7o®°®_ÓÄFoÊ*ÓµñGü1«yE^—´dxÍÌÔkØ>?t$B—ݬ¤6)ÁÆ­ïÅƯ‡N8‚ ˆÑz ƒUfÌØÞÖI—\.Bðk`„;·37:´)túð=GÔËŠ$ߥæ§áXºÒ†mGñ}F!´zàXúöåa < ùC~VRÀïèa&¶'½ÃÈ?Ù¡pZ†µŽSã"pöþƒc?®³dÝ*Ⱥí*îÅ»¦Dô°ÌÞy,ÃÈv„< ô7d ÝÈiFq1Ý™“—'×ÔéN}s"¸^š†äž,iåе]áþ”ûÄúUœ¡ëüÌRØŽô[ÂÖ\Ÿ¨ ç I ª°²Í#Fº’ "þš°u ;a4NàÝ€Cƒ¯‡A1E¢®ö†ÌM7w#ÑuWûñõ€äqp«ºLF±›C}èŒ8vùxD[ù|²Q)ú`ý%^îÂò.êÆÆñ ú°OˆO ¢ô7ñž:©FrÁäÝ–Z£)´ªåNª²æ©uÜP"ÄHS™ÄƒôG¢CòVÊDÌ1ØöAG˜º'B¹ISY¯[¶©MLŠ"ryO>qwwuýü×»³ËåíÝù»ËÛ%’!—ójÕNº{QÇÀ™Bsn굧o ¼TçEQåèÒF\K®¡šÒS¦ºs°¶:ñoèõ¶âhm +,F¦nÁêNƒÎ£µI)éìú³Õr€–èð‚ÜDÙJñRA‹—Rm6Tƒ­aÝÙÕ™ 2C´UÉ ˆI¯âe#§Š‰o¹g)FÅ¥æ?¦üA`Ê ¦÷¿S ç ˜§77W—Ï!ÌJi-/¯ßÜ-PÝž]®8.5E$´ƒ3á@6½ö$80ˆN8ß÷¨½ïØ™¸ï@68BKY kžAÙ”K`ÀF£Ó3†Öév›CIÀE̘rªßâ–_fðAx¢­1"Ñ&Ì ¶LÛ‚ïÀÌï^Ÿ¿JqÁH³ú«q=EÅÀÃBeQòË)Ýž8ÔP$B.^Á0Æ uñT4Tã.€iàBÒ0üƒ´®\ì·P–Æâtò›äàIueW°@ªô¶‚\R4D§¿œ0ñÍPtV‰“µ130?8wR³Zwz£ÕÝS»ök6qýÉžRච¾6âͶûÓéâîÕÙÝëëçwŠs*‚Ä!ºžÌ¢qýlôèJÁã+ +àшϥȖ˜O…ÃOÛ0‚w Ÿò¥.ðt­#´_5ËõŽ:/t2ªÏ¤xæ¨g2¤Ø8lóŒÓ»&}/ FçÙŠ%¬ømû¢ü²ÐÅ¡ÊÈtª +endstream +endobj +6206 0 obj << +/Type /Page +/Contents 6207 0 R +/Resources 6205 0 R +/MediaBox [0 0 612 792] +/Parent 6194 0 R +/Annots [ 6203 0 R 6204 0 R ] +>> endobj +6203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [281.656 559.058 314.163 569.962] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [324.924 548.87 366.837 558.006] +/A << /S /GoTo /D (lock_8h) >> +>> endobj +6208 0 obj << +/D [6206 0 R /XYZ 132.768 705.06 null] +>> endobj +6205 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6213 0 obj << +/Length 1436 +/Filter /FlateDecode +>> +stream +xÚ½WëoÛ6ÿî¿Bè€Aj…¤Þ]W iK—,]ãÚ eÆ*KžMƒaÿûîx”-¹J×aÀ><<ò¼;1km1ëbr2Ÿ‹ÀŠ8€a~gq×u ²‚Øw‚˜[ó•õÎÂááôÃüÕÑ9ç=°+7ŒA’F='Ä@\è„Þ §Â·?UGy™|tÒyžp‚=üÅ?É{6¹œÙW n™5Ó™ð™}Ûn·eð(°… ”ÉÙ|òÇ„ÃFfñžŽÜ‰™o%›É»ÌZÁâ+‹9nY÷º±\ 7æÖíä× 3†;µ!]kCú‰âÐ +üЮO7~Ï|vu²¸¾9=[¸ÓYÀ˜ý= 'W'Œø@|Ä83;\ÄÖLóƒžÍ'¤Vµ6ú½¹@¯²¯¸ Ý°Sãп@ŠCwôååF;¹y]‚@øJ½gLª†)á@ÍÝȤ2€&• ­mÅ!*²•FÚìdÜMÁ¹²Í 2ß¹¯¡$óVA ˆØ·¯n^þ|r9¿]Ìð–Ö Œ°löñOÏΧ¡gO}ß~{5…=§˜¹O³$%2«iì4XÑ´)i\*ÙçóóiÄlGŸÆà8O˜sn \¸_“j"€#¹ëÛ¿½!öJéw%VoU’áq ¡W²‘uªTCËweEüMY©NB#³¼¦‰\–mC8°6´Q`³š–e±Ú_¬»xÏ@Ú²Y.—¹QvS® U«¦ÉŠu=TÛ£ÝÇ€ñ";)‹©‡bÀ«ªÈTj +/$÷?%ºëúìú)­h£·ot`KÖ4½xùÒÌ›¦Ê–x׶1²µzؤ­›r3+ä„hZ«¤Éà¢Z«òŽÆ'íɨOQ¹€?¢\ ìÍ”Û~Á>ŸÒ6­ Œ}aj^^HrYéÂ$1ÉU†žÐ‚<{±À+š‰¾7ŠyØŽº³-êlM‡…`’TVDÝgMJ”P$M +¬þ]aº| ÑxΡÙ<ÕªÕ¿¬‘™ç%2ïëƒÃT1ꓶVÕðµ)YgùÃ.ôÌbj‚1ï§}|3ÎA*Žsâ8€äé9œÇtâ/eùã`S?½ñ’?Ü2‚„+hÏ%Ý‹8úÈ‹Xï-ÏúÏ—G7„I•\¡jÈÄu4Ò)8¶•‘R¶5ê‹‹=ó#dÿ`plPŒ™Ð ð‘Ó«ÂW_” 1*µ +îó!ŽQðˆ2¸¤•Ah§ 2;eÖÊ à@™‘[öTsYÔ+8Õº pfÔ.©ÄP/òÙ´U¥Šæà.¦~~,(F‹ñ<P²â µYèÌ‚4™ÅÊLý=¿_Ÿ]wâ;ƒ×_^ˆÐ‡±Àôdǯ/IÈÛZ®è³Ïr³ÍÕ×BÚ<znBúu«³:‰€W;ÌŠMÚÕĦ\+ТVJx¤ÃG´?yØuí‹ëø1ÿwY‘ä-–ìžKèJ²ÒI_ì\A¼‹Øiè7Tü‘†ê‹F‹ßÃF뇱£²¢!ðFfñ©ÌV][†àØñSöþÔ<­\D &Ì+Õ´UAr3ëÃÌþ¿FÚªa«ð¦ú_̼¯ˆ¥ª•žŽ¦‚Åb±@ûà·«©_L=E»u_ç»C“y_¶ÇÿÁ›;3ÿkŸúùÔû6ŸúßêS㘟(ûPÐM…N­³5{Piˆ”¥…]´›%Á¸~¤ÈKLë†$µ{´{([³W鬋‹%--wÂaï½î¸»óH87PºLµ…ë$4’ᡩߪ +2.´BÃÄ6úCvsÿÍ_X÷Û@ÔÃÿGï·5Š·óÂ…*T%›.ywíÞ> endobj +6209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.521 628.026 182.433 638.93] +/A << /S /GoTo /D (lock_8h) >> +>> endobj +6214 0 obj << +/D [6212 0 R /XYZ 132.768 705.06 null] +>> endobj +6211 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6223 0 obj << +/Length 2331 +/Filter /FlateDecode +>> +stream +xÚÍ]ܶñý~Å"A-p+“¢>4€íØÆ¥®íæ®E’®ÄÝe¬­>îzùõ™áZI§Cê>õIÃáp8œoRlsÜ°Íû«×wW/Þñ&ó³>w‡ ÂOâtg‘g|sWl~ö‚Àçéö×»_¼ã|B,_$p2TßÅŒ]â'áH ·AäÝ·/ÎǪ;Ë\ù§žqìgYê–|ÿg<_nw‚3ïs»å©×[YmwAļ[Ü€ÀöºÔ½VÝvÇYœ2/d{õöîêßW8± Ÿœû‹6yuõó¯lSÀäæ éÁV)Ç…åæöêWl¦M¶¦Í(ñ‘ȯQ® ñº¡5Pêõ at—C¡V´’?5;^4}Er·G{€ŸÞ/w_*Ÿ¡òuCj¥^Ú”ù–úŸŠùìBád?ªž#Ë’0ÍÁžîd\¨_ j°ESw4whZš‰^}¾ñiîΡ>|zó·×7w·(ËfÇÁY_°SdUZɼmÈì&hmÁ9Û`e³—%¡îÑ e«å¾T4Û74ÓõMëP'E¸²É¿ìuo™Ë^‚taÆA:Ý=ÇÏÍÈ®ÓÇZã.x6]÷Hp¯A65¯Ôõ—-¬Q-Mv*G­ÁÞP½2|i†…%…êtkö +¦RNÀr0:J]UªÐ²Wå#h»«åµ8ÒšÐhDYêß%IåH?, Y/ <eAP¸S^Û/Yfß~xG4`i‘z §)i@>†kQiˆ™ 'mS-ØZY ;·bÈF•ªûµƒ~úøÌÀ¼myyÆ1…5}„^¥$y²€ýdOÈÇf T.kÂ|ü´ ™wGXi‡ðL| ¤`Bfn‡…À ½Á÷0ÔùI¡'ë­]5Y­ŒQJœí ãmT PÝôìmö<¡k#]dc²ÎÆŽž:õ‰pêÃáÅ £À„Î*/¥qi™sGÜíÎ/iÁŒl +Àõ'iôC J% ]i0Ô…j»½»^ÓÖÃIç'Ôgt±q8Ú8ò´ûvô>ª½ßòÈ3â­Íl‘Ël‘÷®Î¥BO3QóÍ5 3üI.³ƒ%.õ¾•íã6ŽþÚ >6meêd²¡¾ØËä>¬W49‘¥£9Sô0–%!àGí˜ý®Ú¦Ãr“¦Þ­¥4õ$¤øÄ÷ºw䈴ìg÷nÍG¥)³,xMqM5hn]¤!¿Eh¦PÁ’±§¡ws Z?ÒŠq#ˆŠë±ÈYÆTîE5£J>+Iˆ#¬úµ ØŠÛÜÍ]0dtªïÁ¬(Yƒ˜T"sn ,ì± ›‘IºÜÔ’Öq3ŠÑ¹ånÓ±aFß¡nUÞàáI}ísÕ»ƒ´ܦ5BךFöTð=QÿhÛ™“vU•¥FQÌî<ð£(pba cNð´© ?È’bÞ’GbOyT@ySu©ÆAEê„´My#ê²lÒSQ#B[Ÿ¤sÝŒì„Iµ"È |çj.½#ÅôßÓ`j-wª„9eùŽ|-Û›Ÿì(fö‹Ð›'S²Í}¦öãøQ‡r!X¹pð òE˜ýÜ8fl}k½„û"ž+N<³ÁÅ3§¢…ÀfèiÒ(1P&{¨É¡ñÒ‚X;¹ÖqcûŠx]/M3„gDî 7t&§Óƺs;“¯­„(zÞË™Ò.Ê’%Œ;e>t¦°&\Š\v½owÍþ·b¨ÎÛ] Ý뮳ßßèkÏ„àwFl„R—ë6 à;·‡}ž¦Ož€jB-R?¢§o`ÇÂ?{˜sMéþäU`Á5úŸžž>1ì¸Hü½+M\Îìs|F}ý z *³ÁõƒêòVŸ|Ù8h˪ô[diCç{çH=KzÑßZ6„<¥É´OâÙU†&ã&±»…T5ÅPZb(†”Ç ƒÀW‹^µT˜seP÷›P«C‹¬Ûá\ôvu*™Kx1J²faæu‹þÂ"f*Gw¢¹JUMûhNcó"1^`qIÓ>9ÌMm)[L¯t·êûqRw½`ÜKãyxa]9À¬–Ã2ÛEãíi8Ÿ›Ö4>F +Ë™*¬˜eéÀ„uúŸÿ¾VY™c¸5íæ'é˜`ß>Ã'öC6>AéºëÛï/²û"” v³Ðd¨ØEÒǦ_¤·åSê'×ú,£·¢ÚE¦þ*n›<Àc¾7ˆ¾‡^ëÎ=M™…ù™ëâ]:p +{ +¸–í1'<Êö@f«­ÁRvïÖÌj¯‡Y†ÜAöÒÐÍ«ŸxsM_ãXð­$µ%4BóSÿy>—pEp± ˜½ê”©ã0(àâŽtP->_¸±7jWT²ÓphÌ 'r7Ò GDööÈq!ÔB58ÙŸšáx¢iŒº÷oÞÐDѨ9£eoƒDp³+iîâî‚nÌ+BWÐíë³kidQ´”40ZÎ6ã`O£z ôÕ[Þ ‚,°}Æc ‚ö‹Õx0Ú .¤}kvDÛ÷€éZÔK©è Ç{Ù™¼•Ù·-øB–Â[6{dîNjøËzõVQÈÖàiŽŽð™ëÍÞ•]?Û ÍÛ:AÁyòdÿl³E¬>ÔCÛÆãø¿nÛlE¾µZƾkêFÄêÃ|)A|ͳ¼û¹CÕéô9>Í u´Ú~¯j¸)õN‘m‘ïNƒ+ì9!}8{ˆ—Ðû˜QÀ˜…L$6­{`1MÍV$Þ®Ô{Ë›AòùÏãQÕË#ÿ;3¥Ÿ +endstream +endobj +6222 0 obj << +/Type /Page +/Contents 6223 0 R +/Resources 6221 0 R +/MediaBox [0 0 612 792] +/Parent 6194 0 R +/Annots [ 6210 0 R 6215 0 R 6216 0 R ] +>> endobj +6210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.331 654.082 246.839 664.986] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.87 416.212 298.378 427.116] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.345 116.703 368.093 127.607] +/A << /S /GoTo /D (group__avr__string) >> +>> endobj +6224 0 obj << +/D [6222 0 R /XYZ 132.768 705.06 null] +>> endobj +3104 0 obj << +/D [6222 0 R /XYZ 133.768 353.5 null] +>> endobj +809 0 obj << +/D [6222 0 R /XYZ 133.768 348.892 null] +>> endobj +813 0 obj << +/D [6222 0 R /XYZ 133.768 321.351 null] +>> endobj +6221 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6264 0 obj << +/Length 1719 +/Filter /FlateDecode +>> +stream +xÚÝYÝoÛ6÷_!`/P«üÐg1 hÑ6ëº`]êí¥- Ù¢m¡¶èRRSÿ÷;ò(GŽåÄNÜnØC¢ãñxºûÝI‹8s‡8ƒ£ÁÓ×,rR?à1š9”s?Ž'JC?J©3Ê.c>M¼O£ßž¾¦´#Ì™Ïã4©ŸQbG]ìÇÁV óXè~UO×óUµÎ¦Â_ôèŒ"?M“vÉ/÷é|æ 9%î;åÑÄ•s•­¼! ‰û^¿É¿êbYÔ…¨¼!%QB\g¯Fƒ/ +šˆC;ŽS?%¡3] >|"N“¿9Äç`Óµ]9<Qª.÷ƒ?dMÒE3¤~0' +cŸñM~3Óv1w-«ª˜,Å=ä‘¿‘Bj*˪ÎÊê „=êV8,Jª‰¥Ôø^ »8 +Pîí geŽDS ã>ú­æ€«‹ó ›¯ÆJdùx²©Åx¨…AbH˜ÐúPŠL}$!?j•! ‚3æJuøz~ûŠk¢'U>¾OcPÀ7£®œ©Þx0Óï8“½½hl¸çM,ænU”&1,t`cp­ÂñJ*;#f:” aÓB˜ø³^d–2ïË6^º:yâĦ y˜f%¤ÿIyóFÌÍY¯M¾oû|›4CE.¤^è~ÓÿÄ´Á\~ Iš ßFaâ>×/Ò¼YSNë²—¢åšÊ”]U5[QgŽ×E½°¢XúœwꉡÏÞÿø•Ùé`иÈVDy :ðšŠ>ÁEÕŠµD-%«­Éz$o–TVrXk†nEš?Ãv}Û‡‰”õRêÐé† +ŽÈŸ9ºUL…À.£)Ûs™NÕÌŠ›žfçÔj´e,hkÐïi:Œ8Dm1•¢3@vz"šÐÊèŠÂc•ìî-R}Æs nø¤Ý€ªŠºÉ´N¿ç˜4¤pP¢û—OS«í¥Ðù\Ý­éö©%òžj{ü(² ?‚¥··³÷§Üj¼ëHç3ÄîâòÕåÞ¦ÓãñsRêŽFWãŽèx¼+¬ãÍz›Þ®n-wõÎ]™­ÛˆØœ˜Dôö<1Œé"SötAŒSŸ‡ÛŒÐͼgó ü4¡72!Ý°~Ò$ð¡­[ØY@Ø=)éCX$Yž+QUãj!U}Ïx ûJ‹ÑÁ÷¸ ô7ëÍ´Wû¾ïgŒ<œÃ?õ\k0®o—ž&?ˆn%ΰÕwž´ q¡ü!Qþ¿Äˆ%ô"]Û2«OÊ¡ÄVO»ø|Ut¾cÑ¡ß¡±Ø‹Ñ]è,e9ﶖWG÷ÎîG¥Õ~¸µœ!)xH{ZËi¾kèü‰ÝPxxå†çÌ©A“.FùÃ@2J,Hù¥ÇgOãýörDÖ’:\ü{q°%ò0t7ÿ}¹¸ÄßÀn_¨ðÂr·óJÎÇíå¥sܽÅÔgIzûsèæ8låÏ%íäßæÒõæåã¼ýªГE~§Ç1õ)\²öïm»—ë$öÃ8²·ë…G^¸›µÈÅìlìõaÖm8p©>ÙùS kÇ“<°d/éN­Ž+š²*æ¥ÈgSs6£î|ì°ÉÞûs{ô´ÏÞ¯ZiâÇü”oZí—ÁÈOcžt¿ &©ÏÛ¤½¥PYÝ‚/í/T£EƒÄK1E"À%ÏF1B,e¾H8û™Pÿ^?\«a²±*å·Í\”;®ƒËÿ–:. +endstream +endobj +6263 0 obj << +/Type /Page +/Contents 6264 0 R +/Resources 6262 0 R +/MediaBox [0 0 612 792] +/Parent 6194 0 R +/Annots [ 6217 0 R 6266 0 R 6218 0 R 6219 0 R 6220 0 R 6267 0 R 6225 0 R 6226 0 R 6227 0 R 6228 0 R 6229 0 R 6230 0 R 6269 0 R 6231 0 R 6232 0 R 6270 0 R 6233 0 R 6234 0 R 6235 0 R 6236 0 R 6237 0 R 6238 0 R 6271 0 R 6239 0 R 6240 0 R 6272 0 R 6241 0 R 6242 0 R 6243 0 R 6244 0 R 6245 0 R 6246 0 R 6247 0 R 6248 0 R 6249 0 R 6250 0 R 6251 0 R 6252 0 R 6253 0 R 6254 0 R 6255 0 R ] +>> endobj +6217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.207 654.082 478.476 664.986] +/A << /S /GoTo /D (group__avr__pgmspace_g88d7dd4863f87530e1a34ece430a587c) >> +>> endobj +6266 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 642.127 176.259 653.031] +/A << /S /GoTo /D (group__avr__pgmspace_g88d7dd4863f87530e1a34ece430a587c) >> +>> endobj +6218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.979 642.127 284.928 653.031] +/A << /S /GoTo /D (group__avr__pgmspace_gf51eeaa847dd2668d2a66b70ecfb7398) >> +>> endobj +6219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [329.079 642.127 415.624 653.031] +/A << /S /GoTo /D (group__avr__pgmspace_g0d4d7f6231716747c52b969d4febdeed) >> +>> endobj +6220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.344 642.127 478.476 653.031] +/A << /S /GoTo /D (group__avr__pgmspace_gd7082c45c2c96f015c76eff1ad00a99a) >> +>> endobj +6267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 630.172 195.427 641.076] +/A << /S /GoTo /D (group__avr__pgmspace_gd7082c45c2c96f015c76eff1ad00a99a) >> +>> endobj +6225 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 480.647 241.464 490.575] +/A << /S /GoTo /D (group__avr__pgmspace_g75acaba9e781937468d0911423bc0c35) >> +>> endobj +6226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 467.093 215.302 477.623] +/A << /S /GoTo /D (group__avr__pgmspace_g05ca900ebf7cd121be73c654d9ccb3eb) >> +>> endobj +6227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 453.768 275.596 464.672] +/A << /S /GoTo /D (group__avr__pgmspace_g88d7dd4863f87530e1a34ece430a587c) >> +>> endobj +6228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.594 453.768 409.801 464.672] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.276 440.817 298.591 451.721] +/A << /S /GoTo /D (group__avr__pgmspace_gf51eeaa847dd2668d2a66b70ecfb7398) >> +>> endobj +6230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 440.817 478.476 451.721] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 429.235 162.441 439.765] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.295 415.91 298.591 426.814] +/A << /S /GoTo /D (group__avr__pgmspace_g7fa92c0a662403a643859e0f33b0a182) >> +>> endobj +6232 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 415.91 478.476 426.814] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 404.328 162.441 414.859] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6233 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.805 391.003 276.459 401.907] +/A << /S /GoTo /D (group__avr__pgmspace_g066040df814dabc7980cd1422508b46b) >> +>> endobj +6234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.457 391.003 433.664 401.907] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 366.097 269.409 377.001] +/A << /S /GoTo /D (group__avr__pgmspace_g0d4d7f6231716747c52b969d4febdeed) >> +>> endobj +6236 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.282 366.097 407.49 377.001] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +6237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.432 353.145 293.559 364.049] +/A << /S /GoTo /D (group__avr__pgmspace_gd7082c45c2c96f015c76eff1ad00a99a) >> +>> endobj +6238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 353.145 478.476 364.049] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +6271 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 341.19 162.441 352.094] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +6239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.45 328.239 293.559 339.143] +/A << /S /GoTo /D (group__avr__pgmspace_g309908c1b7430f0d140edb78fcf8f2b9) >> +>> endobj +6240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 328.239 478.476 339.143] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +6272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 316.284 162.441 327.188] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +6241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.96 303.332 271.428 314.236] +/A << /S /GoTo /D (group__avr__pgmspace_g4a5a593aa84062ca08b3f2d564a6f466) >> +>> endobj +6242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.457 303.332 433.664 314.236] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +6243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 278.426 253.469 289.33] +/A << /S /GoTo /D (group__avr__pgmspace_g73084a8bbde259ffae72980354b3f027) >> +>> endobj +6244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 265.474 256.687 276.378] +/A << /S /GoTo /D (group__avr__pgmspace_g32d8ab354156f4b1ffdb77a275ba6223) >> +>> endobj +6245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.087 252.523 261.256 263.427] +/A << /S /GoTo /D (group__avr__pgmspace_gbb68859ac5dfa6a09ac048b4037a83b6) >> +>> endobj +6246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 239.571 254.027 250.475] +/A << /S /GoTo /D (group__avr__pgmspace_g7911bddb066a8a038efc4b7857728fa8) >> +>> endobj +6247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 226.62 223.601 237.524] +/A << /S /GoTo /D (group__avr__pgmspace_g963f816fc88a5d8479c285ed4c630229) >> +>> endobj +6248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.621 226.62 290.002 237.524] +/A << /S /GoTo /D (group__avr__pgmspace_ga475b6b81fd8b34de45695da1da523b6) >> +>> endobj +6249 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 213.668 253.08 224.572] +/A << /S /GoTo /D (group__avr__pgmspace_g84a61d55b7efefabd8419e28f02704f9) >> +>> endobj +6250 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.1 213.668 319.85 224.572] +/A << /S /GoTo /D (group__avr__pgmspace_gdb50761b9f19d45449445208778ee420) >> +>> endobj +6251 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.515 158.809 305.264 169.713] +/A << /S /GoTo /D (group__avr__pgmspace_gdb50761b9f19d45449445208778ee420) >> +>> endobj +6252 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.146 145.857 304.527 156.761] +/A << /S /GoTo /D (group__avr__pgmspace_ga475b6b81fd8b34de45695da1da523b6) >> +>> endobj +6253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [300.612 132.906 347.974 143.81] +/A << /S /GoTo /D (group__avr__pgmspace_g7d4701843a2019e3ef5a9866dc7586ed) >> +>> endobj +6254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 119.955 215.292 130.858] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +6255 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.253 119.955 316.741 130.858] +/A << /S /GoTo /D (group__avr__pgmspace_g48c7cb011ea5f82f4b73df40e07dff46) >> +>> endobj +6265 0 obj << +/D [6263 0 R /XYZ 132.768 705.06 null] +>> endobj +6268 0 obj << +/D [6263 0 R /XYZ 133.768 498.645 null] +>> endobj +6273 0 obj << +/D [6263 0 R /XYZ 133.768 175.88 null] +>> endobj +6262 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6328 0 obj << +/Length 1303 +/Filter /FlateDecode +>> +stream +xÚÍZko«6þž_´/AZ\ß±«iÒ¦^´#¬'Ý—öQâ¦l0 gë~ý ˜R’@ÔJ•Beûõãç½ú­…­Ûѯ³ÑÅ æ–’ëŸÙ³…— p‰¬ÙÜzc °¿Í>]Ü TëL0 ŽÔ’Š^?•=âàÐMÏÆlü=¹ˆa{¾/-29RŠjÈχd^Ú‚àxšØHŒW‹Ä í fpü5Ÿ ü¼Ï‚e*µ'rǘÊ\ìèz6ú{„´$h¡ÚÂY~8zø­¹nüdA@4¦Š®¡E¨îŠòKëëè÷4l«°Î*ƒCÇâ̘°ú#ƬÀQ³& Âqö«¹z6M9¶da@ÞòE­ƒ(n¶=>ošÞÙŽ¿Ü~¾þ¼_Fœ¬n› @hM‰ëyq› 7ˆå@yÝ ó@,<Ëoñz0ÈëN˜å0,s:Ëoåa ·JÚ +ÑÄ%Òšè ïnÖ‘Ÿ«(ÝÙˆ”f N9Œàý ŸÞ~vÿ( ÿvåN÷CUè¿$›^õ?B·d!„Æ?Ú•®Ë×ýž'0oiÒà?ånÚ–*ÒrPS~G›Ë§8ˆ>Œw£÷5«‰ÆÇ«`nR+­s‹ ˆU©óBbÒk]Hª>f©»Ù)I(Vnˆø¥hžÍîÜéýݵë61k>ˆN¦¼›iïY ÖkqÈöZZ(ÜZž£‡ájXÎklëúáu7·{080z6>·xCH#GÝ êHÏHÞÑ5DO×H³Ä÷RÕÕ=ü/is ÌÆòDUN±¢KÁŽjÜV›>‚´§é¼e{8kŸ[°ŒÒ^<5ùùbP7c(d6‡CÆ|À†O¶ÕÎð¢õòLåÞÔÓ“ P‚ûz"rÖM7çv¥CYdÇü<Cº‚8]Ó„ Ó-"£~ÁUo©:Æ$\7­/´²ˆDý©ü㪠„$Ýl¤#ËS⦤€®èN‚”€J6¨æ—§ÚµtôÔ Ð­ ‚ ·U­Š泆ÞhˆJ¦¬/†5´®¥ H¢£Sœ”ëM'fguRuÒÒV?Xñõµ“EßÅ`ô†Rþ!Šáèäž=;s¨cÀaÃf±èp¬ë‚ ~åÅOÉ_}œ@8æ@¿³ì(P<ßWñqŠ˜‹!7gܽ¯–S¿_•CQŸ{‡v‹¯švã6õÎÕ2[”‡[‹ô-º‘¦Oˆ÷±i (—Ãf²¤‹Ž®©Û¹œ¼™ÍåÉÞÇ¢ºúCÏ›¬ U¨ÿÞòF¯óF‘³÷¸Y;wŽ=S£L1ÿ´?æs×ëZäI>•f“B@Íù’™‹ˆVm²âƒË¥ª§ÙJsÎušù沇=iÞöoÎïÜ5eWJƒÀ‘¹‘¿ZùëPE™—_ŠÒ S@¨l È ÿaÞ_ O5.bóÀÝ…é:™šTÝ&:€rLËÎ÷©š—³d«òw®ü¥—@ÞæîEçÏ$ðž–¦!{ñ º mtW:瘝)Ó´iåÑ¢ÊÎöæêmó¸¡|=Ñ0Ö· R½#^2TïA8õ÷ BÂjoU¤/«Yˆ³—µQ¯òËZþ x‰É%åBóõœÓµJªµClâŒ'ËàÉHxz­,æß×…Š¶—ü?Ž&(/ +endstream +endobj +6327 0 obj << +/Type /Page +/Contents 6328 0 R +/Resources 6326 0 R +/MediaBox [0 0 612 792] +/Parent 6332 0 R +/Annots [ 6256 0 R 6257 0 R 6258 0 R 6259 0 R 6260 0 R 6261 0 R 6292 0 R 6293 0 R 6294 0 R 6295 0 R 6296 0 R 6297 0 R 6298 0 R 6299 0 R 6300 0 R 6301 0 R 6302 0 R 6303 0 R 6304 0 R 6305 0 R 6306 0 R 6307 0 R 6308 0 R 6309 0 R 6310 0 R 6311 0 R 6312 0 R 6313 0 R 6314 0 R 6315 0 R 6316 0 R 6317 0 R 6318 0 R 6319 0 R 6320 0 R 6321 0 R 6322 0 R 6323 0 R 6324 0 R 6325 0 R ] +>> endobj +6256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 654.082 220.273 664.986] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6257 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 654.082 326.704 664.986] +/A << /S /GoTo /D (group__avr__pgmspace_g39235a28487ae7790ce5f4c8178c8ed7) >> +>> endobj +6258 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 641.264 220.273 652.168] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +6259 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 641.264 326.704 652.168] +/A << /S /GoTo /D (group__avr__pgmspace_gafc910d0b2c4d76afffa4710b98df6fa) >> +>> endobj +6260 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 628.445 225.255 639.349] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6261 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.216 628.445 336.666 639.349] +/A << /S /GoTo /D (group__avr__pgmspace_g93ec00229866bf6a125384ad08cefa73) >> +>> endobj +6292 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 615.627 220.273 626.531] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +6293 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 615.627 326.704 626.531] +/A << /S /GoTo /D (group__avr__pgmspace_ga839901aa518fb43d361588dd8d2b44b) >> +>> endobj +6294 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 602.808 225.255 613.712] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +6295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.216 602.808 336.666 613.712] +/A << /S /GoTo /D (group__avr__pgmspace_g31bad0d22ead95a41e725c38ea63eb26) >> +>> endobj +6296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 589.99 220.273 600.894] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +6297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 589.99 326.704 600.894] +/A << /S /GoTo /D (group__avr__pgmspace_g5b1f9927f06d841e9ac07af62e71cfef) >> +>> endobj +6298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 577.172 225.255 588.076] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +6299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.216 577.172 336.666 588.076] +/A << /S /GoTo /D (group__avr__pgmspace_ga50eebe90a40e0276bcc49ea0482b211) >> +>> endobj +6300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.758 522.938 266.918 533.469] +/A << /S /GoTo /D (group__avr__pgmspace_g287a70fef8531ad6aa9a2f73ee4fa162) >> +>> endobj +6301 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 509.746 220.283 520.65] +/A << /S /GoTo /D (group__avr__pgmspace_g51805e7bf43ffd1a70a045994a907768) >> +>> endobj +6302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 496.928 231.88 507.832] +/A << /S /GoTo /D (group__avr__pgmspace_g53ee9e2dec1d5f685d78aa8dc444dccb) >> +>> endobj +6303 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.758 484.483 270.236 495.013] +/A << /S /GoTo /D (group__avr__pgmspace_gb2614cd3f6b0196d3070b158f1ad05bd) >> +>> endobj +6304 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 471.291 227.466 482.195] +/A << /S /GoTo /D (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01) >> +>> endobj +6305 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 458.846 218.879 469.376] +/A << /S /GoTo /D (group__avr__pgmspace_g1617c6719e65951f109fe29b18c2bd35) >> +>> endobj +6306 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.279 446.028 227.476 456.558] +/A << /S /GoTo /D (group__avr__pgmspace_g7c26394eea1ddcc33fb698833b9aa9b2) >> +>> endobj +6307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.279 433.209 240.208 443.739] +/A << /S /GoTo /D (group__avr__pgmspace_gf5c3724d0e89d5952738b8c8da004e0a) >> +>> endobj +6308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 420.017 210.321 430.921] +/A << /S /GoTo /D (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a) >> +>> endobj +6309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 407.199 221.549 418.102] +/A << /S /GoTo /D (group__avr__pgmspace_g9c3ff50bdf59b38219394ff5230660da) >> +>> endobj +6310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 394.38 224.149 405.284] +/A << /S /GoTo /D (group__avr__pgmspace_gee6bf291c23054aca37533937a1d412f) >> +>> endobj +6311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 381.935 220.273 392.466] +/A << /S /GoTo /D (group__avr__pgmspace_g484117e1416429fc94efad8c66643164) >> +>> endobj +6312 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 368.743 222.943 379.647] +/A << /S /GoTo /D (group__avr__pgmspace_gabad6a32f133121973ea9c06e30cd33a) >> +>> endobj +6313 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 356.298 218.061 366.829] +/A << /S /GoTo /D (group__avr__pgmspace_g3a8a479d2f1b4aef18a89316e3c9e0eb) >> +>> endobj +6314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 343.106 232.447 354.01] +/A << /S /GoTo /D (group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) >> +>> endobj +6315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 330.661 223.86 341.192] +/A << /S /GoTo /D (group__avr__pgmspace_g11ed791b5d147f8d2ce01699a9c220ca) >> +>> endobj +6316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 317.469 215.302 328.373] +/A << /S /GoTo /D (group__avr__pgmspace_g5048829165f57aef87bba38ba9126d1d) >> +>> endobj +6317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 304.651 226.53 315.555] +/A << /S /GoTo /D (group__avr__pgmspace_g8283f9a987be92ae137ee610e6b11b90) >> +>> endobj +6318 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 292.206 223.043 302.736] +/A << /S /GoTo /D (group__avr__pgmspace_g8ece6c08cef78e50f404072823e48752) >> +>> endobj +6319 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 279.014 225.524 289.918] +/A << /S /GoTo /D (group__avr__pgmspace_gd6de880a1dd672b52469fe986e3ec011) >> +>> endobj +6320 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.279 266.569 230.794 277.1] +/A << /S /GoTo /D (group__avr__pgmspace_gb3a5f8b6324d77903d713917eb219f05) >> +>> endobj +6321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 253.377 220.542 264.281] +/A << /S /GoTo /D (group__avr__pgmspace_ga3bc55b47998e5ce1d8ddcf0be228638) >> +>> endobj +6322 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 240.559 219.725 251.463] +/A << /S /GoTo /D (group__avr__pgmspace_g0ca5a2d8b5b1b4d899edb89535c36b69) >> +>> endobj +6323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 228.114 217.225 238.644] +/A << /S /GoTo /D (group__avr__pgmspace_g36c9c2de19d7e23c4a6bf63eee608af3) >> +>> endobj +6324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.472 215.295 240.836 225.826] +/A << /S /GoTo /D (group__avr__pgmspace_g851eaa0bd303b445f6ea70db31059fef) >> +>> endobj +6325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 190.522 234.37 201.052] +/A << /S /GoTo /D (group__avr__pgmspace_gc75a4fcc7f301902eef58f8dea8e5cfd) >> +>> endobj +6329 0 obj << +/D [6327 0 R /XYZ 132.768 705.06 null] +>> endobj +6330 0 obj << +/D [6327 0 R /XYZ 133.768 541.405 null] +>> endobj +817 0 obj << +/D [6327 0 R /XYZ 133.768 177.067 null] +>> endobj +6286 0 obj << +/D [6327 0 R /XYZ 133.768 154.382 null] +>> endobj +6331 0 obj << +/D [6327 0 R /XYZ 133.768 154.382 null] +>> endobj +2659 0 obj << +/D [6327 0 R /XYZ 420.201 119.253 null] +>> endobj +6326 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6368 0 obj << +/Length 709 +/Filter /FlateDecode +>> +stream +xÚí—ßo›0Çßù+,ípýÛ8šö0­­TmS·²§®B$)èºþ÷³±É!É6­Z7õ!ÂÀÝù{çO|@àÜy9'g„ %W—h0¥PðpÉ —D)¸v 8ôn¢‹“3Œ{Æ”@*¤ŠÔZ½4[áÁÆ ñs¿V'·‹u}›Ì2¸‰É9”2ì\^‹9ñ|Š‘{Yy8tËE•¬=Ÿ0ä^é ÌðS“¯ò&ÏjÏLj‡ÈUuXç4r¾8XEB÷ÇP"fkçúT½¼R¥é¾5](S¬WàÊùà ãÕdÊzÕ„­!÷Eš}FˆZ®dÒUå‰Ût²$§zËP’¦æY]Çõ²¬õ·á®Cìëü”&«d˜·È’j(SgÔ¯Ýä$0îUtSÐÄ\ôLf4¯J[öfiÝV½Å¨,Æ}Þ,·¢`îOóÆŒµ:«[#¥Ué„ízuuÙGŠ”=Ä0bß—M6:õ“S+ °J0„ˆãuÚí¤æ&¯÷$½‘ÖxØ9/Ž–Ž®ë/püCƃm|è.>X#øÄóÝu_•ÅÂT¹õ‰ãÓ·—ï´‘þÝåECÉ"nfoaÙí¯‚DÉ6HsO-Ë3K?ÅR0Â’`l„¥Ã›ˆñŠãL˜ïH£0m¢¡‰ý+Û…„¿}ò(Q ¹ Û(±‘®†è`[J=ÌÜ{ý-«ôP{C4<àùgûÜ> Òònºê8±3?¹¾Çÿß½jðÙÄw£8 ar°*gjà8O;°özäc´ÃÇáí¹=n#·Q;z +J3ý•3@÷í¯N/‚†ýoÿPBÚ1|žY•4™]ÏÒj–wfð&›™A`7 4!t¢Î^íAÈŽæú$UV]¹Úc•G…ë¯ò鬫ž Y~{XdÅ0åïHÍŽ³ +endstream +endobj +6367 0 obj << +/Type /Page +/Contents 6368 0 R +/Resources 6366 0 R +/MediaBox [0 0 612 792] +/Parent 6332 0 R +>> endobj +6369 0 obj << +/D [6367 0 R /XYZ 132.768 705.06 null] +>> endobj +6370 0 obj << +/D [6367 0 R /XYZ 133.768 667.198 null] +>> endobj +6276 0 obj << +/D [6367 0 R /XYZ 133.768 572.84 null] +>> endobj +6371 0 obj << +/D [6367 0 R /XYZ 133.768 558.36 null] +>> endobj +6274 0 obj << +/D [6367 0 R /XYZ 133.768 458.497 null] +>> endobj +6372 0 obj << +/D [6367 0 R /XYZ 133.768 444.017 null] +>> endobj +6284 0 obj << +/D [6367 0 R /XYZ 133.768 347.938 null] +>> endobj +6373 0 obj << +/D [6367 0 R /XYZ 133.768 333.459 null] +>> endobj +6281 0 obj << +/D [6367 0 R /XYZ 133.768 233.596 null] +>> endobj +6374 0 obj << +/D [6367 0 R /XYZ 133.768 219.116 null] +>> endobj +6279 0 obj << +/D [6367 0 R /XYZ 133.768 119.253 null] +>> endobj +6366 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6377 0 obj << +/Length 721 +/Filter /FlateDecode +>> +stream +xÚåWQo›0~çWXÚ <àžmlp4íaZ[©Ú¦neOm…H R¡ëöïgcÓ¥M+M[»=D˜p÷ù»»3h…;ocçàˆ +$±ê/a ‡"BBr,$Aq†Î]J1‰¼Ëøäàˆž1£˜…R!µV¯Å.Äapkz”»ßꃫÕvw•.r¼žÀKu.oöaÎ<ŸpOkDnµªÓ­çSî™ÞÀ,¿4ŦhŠ|çùD.åDÃ:‡±óÕ! + éN°Ž[çüP¦ž ÀLqºiM·ˆÊ”hÇ :s>9°?›<Ä”ñ^61Å¡æà¾Êò ZjºR‚«Ò“´áäi–dáî§B¬ê,)ó´¾i–‹Ý.Ù­«ºQíI7IÞŸ~H|¡bå·;À4Žþ]eCDÒBÜ‹Ýâ›R@/>bAƒÿY169OÍ%«®ç[†n_s·¬+[©fm ®ê^ýv¿êwS4ë*þ¼hÌZ3¶Y!ÖHñWÜq[â®4£ºø D&OæÂpÿX5ùlìÓUÕ,$*Þ§Æ'î¨Û=ÍM±°ÿhò³V²;åÞìà‰wC—#$òÀˆ¡à¢)Á +N=aUÚ<¨2 “>#ÑÙÝÖìÓ5e7{V2â˜ÓèßÔÅ@FKÞÕQHÃiI,ïS•+“ç +Õ®u¿êÉ®kJŒNw±ÉNÕþmQ1:ÕRw½?®+ö2t uE`¢AEÓýiïQQ{N(KwWÖcÏ@þ‚úÕuì2!+ÆFZýÏ¢û4Ũœvš–Óï>ùžå”nQòEké–íä< gö”i ›Ô²¨?D3aµqœ—y6¹-fe¹Æëk³x—/Ì"°ƒe35…µwÀ®–z¦ªê.]í€å±Ðõ7Å|ÑeÏBV߬òròO•Ë‘y +endstream +endobj +6376 0 obj << +/Type /Page +/Contents 6377 0 R +/Resources 6375 0 R +/MediaBox [0 0 612 792] +/Parent 6332 0 R +>> endobj +6378 0 obj << +/D [6376 0 R /XYZ 132.768 705.06 null] +>> endobj +6379 0 obj << +/D [6376 0 R /XYZ 133.768 667.198 null] +>> endobj +6285 0 obj << +/D [6376 0 R /XYZ 133.768 576.014 null] +>> endobj +6380 0 obj << +/D [6376 0 R /XYZ 133.768 561.465 null] +>> endobj +6282 0 obj << +/D [6376 0 R /XYZ 133.768 460.839 null] +>> endobj +6381 0 obj << +/D [6376 0 R /XYZ 133.768 446.291 null] +>> endobj +6280 0 obj << +/D [6376 0 R /XYZ 133.768 345.665 null] +>> endobj +6382 0 obj << +/D [6376 0 R /XYZ 133.768 331.116 null] +>> endobj +6283 0 obj << +/D [6376 0 R /XYZ 133.768 234.427 null] +>> endobj +6383 0 obj << +/D [6376 0 R /XYZ 133.768 219.879 null] +>> endobj +6277 0 obj << +/D [6376 0 R /XYZ 133.768 119.253 null] +>> endobj +6375 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6386 0 obj << +/Length 952 +/Filter /FlateDecode +>> +stream +xÚÍW]oÛ6}÷¯ÒéA ?ô :4 VÌkæ¨}i B–h[ƒ-eÝ,ÿ~—iKŠ’,iÐî!±>.Ï=÷—ÂÖÚÂÖÅì×dvúŽVŒâ~’•ECaYAì£ &V’[ŸmJ‰œ¯ÉûÓw„ô‚E,Œ©ú¥‹À…(ô©C}û[}z½Þ5×i&Ðf3PGfÈëÇ0Ï—l_Ö‰ìj]§;Ç¥>¶¯ÔÝåGYl YˆÆq "lSŸ*ØÙy2û{F [¤—8A1ö­l7ûü[9¼|oaÄ€ÓMº³˜¡D ÜZW³?gøq5ýQæ÷ÔDð*BÛ¯rñcZ_F±gƒ>¼ÍG¤9¿q ½ªÎù*­¿`§yÞ½k¾­Ê5<#zçç¿_ι«’B.L|=©Qêo_”’Q.Õðû`[èNÜKJ!‡( ^‡¼–Ði÷c¦êîVu¥K"7º ×u¯PͱP7…Ü u—…ì®É•Bne :XcÔ–Ó”aTƒ¡ âQ¾i9ÿQIq6ÔÏ +È3BØgݘÄÐדv7E3`¼¼•bD­õçËòQ…ÐÄBPe‰g¹˜ÉGîbîÂ@eÚ]¥¸k¯fSÕRûKäüIö"Á´½°?Ý_$úK‹ðs1˜ +<É\ôÿo.ŒH0Þº¼»æRh—sþÉñ|ûÃooùe÷,«ÊFš™»]škKXäzÿ÷zóR˜#ÀžÙßMxÄ5a«|l„v…¬ºß\dÛ´×¢u‘iJ8UÔÃQ©–¬Zþ%29”ñ¿©†æHâ±nþ=º-†íóóy÷€ó7NìÛI²à½wœ?¾\ÞHYK‡b{oÜbÒÚ7b˜ ,¢qêCÁ&tXŠ¢\w—Û*K¥QÜ`ª‚¥^g Çêó§(Ü£ÐU²PK´9®O³×ô vGÇl“ÖS&ƒ¾Lý)“õ)z(ŽÈ1¦ÛÉšv.Ø¢¶Ï?ÕLåæ4qõ¡/àIÓ%'ôìÛk‘‹Uó¶Êö;Q*VUi¶|ê!fz¨ˆF8,î£æ“>ÕÓ'œÄ`Bí°Õ É…qr×|/â8oÈŸŽùëÖõì4­óƒÒ`i¨ÞK¤¡p¾;C7œ> endobj +6387 0 obj << +/D [6385 0 R /XYZ 132.768 705.06 null] +>> endobj +6388 0 obj << +/D [6385 0 R /XYZ 133.768 667.198 null] +>> endobj +6275 0 obj << +/D [6385 0 R /XYZ 133.768 571.835 null] +>> endobj +6389 0 obj << +/D [6385 0 R /XYZ 133.768 557.265 null] +>> endobj +6288 0 obj << +/D [6385 0 R /XYZ 133.768 460.382 null] +>> endobj +6390 0 obj << +/D [6385 0 R /XYZ 133.768 445.811 null] +>> endobj +6278 0 obj << +/D [6385 0 R /XYZ 390.832 412.72 null] +>> endobj +6391 0 obj << +/D [6385 0 R /XYZ 133.768 395.992 null] +>> endobj +3105 0 obj << +/D [6385 0 R /XYZ 426.747 362.901 null] +>> endobj +6392 0 obj << +/D [6385 0 R /XYZ 133.768 346.173 null] +>> endobj +821 0 obj << +/D [6385 0 R /XYZ 133.768 296.354 null] +>> endobj +6287 0 obj << +/D [6385 0 R /XYZ 133.768 272.14 null] +>> endobj +6393 0 obj << +/D [6385 0 R /XYZ 133.768 272.14 null] +>> endobj +6334 0 obj << +/D [6385 0 R /XYZ 318.335 238.913 null] +>> endobj +6394 0 obj << +/D [6385 0 R /XYZ 133.768 222.186 null] +>> endobj +6336 0 obj << +/D [6385 0 R /XYZ 334.404 189.094 null] +>> endobj +6395 0 obj << +/D [6385 0 R /XYZ 133.768 172.367 null] +>> endobj +6338 0 obj << +/D [6385 0 R /XYZ 334.404 139.275 null] +>> endobj +6384 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6399 0 obj << +/Length 750 +/Filter /FlateDecode +>> +stream +xÚÕ–ßo›0Çßù+¬<4\ƒ1Ñ´‡©k¥JûYöÔU!N`ƒIÛÿ~glÒ„!uÕ¢h{²9Žã>÷=[GÐti½­³ £G–x(c8äñ(À<¢(ž£Ûó0Îm|uvAéž3ó0 #ˆÔy½ÖáBú;‡Äñ{[Ÿ­—e³NR‰³‘˜œã(ý'ož‹9u\F‰ý©v¨°«e”ŽëľV?ÐÛ¯m^äm.Ç¥„ b{Sa­w±õÓ¢‰ ºNqD”–ÖÍ-Asxy…fÓ}çZ"æƒ+UèÚúl‘ç«„ØcÁ^51þʇ{mr¿ËW-÷ïZƒLöâäÒsÏ×b(׆¯Zè5YéubâLÌëÙw™¶z_TiÒʹ~Èÿ7BXÒdúá‹ãûã{ܨP¹$âü1%º”>T­œ?ÚGä†À$ð F–7ú¯í¦·¬*“24 ±·ªs’¼Hf…ñ»Ï¤I¿ÍŒ)­Êu^ÈÚ`¯Û¼2.n %‡?èéåBÅ^@‰ðH¯©²‡ÔG®¢âPÀ`D@qýÄä @p^i4èB>„ؤYRÿ5ÃfÕäËUŸ« +y"žð7('åG¥t"1¼#¨@'‰Æ@ŽrÑmþù›Žý§7]x(!%cŠ#IxºËŽÒ!ÇÖé¡Êç/aBƒ°Dë'éh¡`7Ÿ§ŸpàE‡Æ'0îpºWç•X”]7˜Êä‡ÊÖdPÂE­í\5Æ8{Ô¦¼md±xs¦kÓiÕAÁ€p •öBÌŒ@›¦/y[éu.Ó"©eߣZ¶­ +¹+´Í^û{û¾ßh +q¤¸>Ží}FÔÿó#;:ÅEpÙKf¸~vƒé3dbvfÜôÑ¥\Éú©+ûSg½9—©Þøz¡dê±)5Ò#Ä캓XÕ»s¯Æbds‹|f"tJªÕÃãn€ò/5ÛÜÅ +endstream +endobj +6398 0 obj << +/Type /Page +/Contents 6399 0 R +/Resources 6397 0 R +/MediaBox [0 0 612 792] +/Parent 6332 0 R +>> endobj +6400 0 obj << +/D [6398 0 R /XYZ 132.768 705.06 null] +>> endobj +6401 0 obj << +/D [6398 0 R /XYZ 133.768 667.198 null] +>> endobj +6291 0 obj << +/D [6398 0 R /XYZ 133.768 583.79 null] +>> endobj +6402 0 obj << +/D [6398 0 R /XYZ 133.768 569.22 null] +>> endobj +6290 0 obj << +/D [6398 0 R /XYZ 329.423 536.128 null] +>> endobj +6403 0 obj << +/D [6398 0 R /XYZ 133.768 519.401 null] +>> endobj +6335 0 obj << +/D [6398 0 R /XYZ 361.781 486.309 null] +>> endobj +6404 0 obj << +/D [6398 0 R /XYZ 133.768 469.582 null] +>> endobj +6337 0 obj << +/D [6398 0 R /XYZ 339.386 436.49 null] +>> endobj +6405 0 obj << +/D [6398 0 R /XYZ 133.768 419.763 null] +>> endobj +6339 0 obj << +/D [6398 0 R /XYZ 339.386 386.671 null] +>> endobj +6406 0 obj << +/D [6398 0 R /XYZ 133.768 369.944 null] +>> endobj +6333 0 obj << +/D [6398 0 R /XYZ 133.768 281.031 null] +>> endobj +6407 0 obj << +/D [6398 0 R /XYZ 133.768 266.461 null] +>> endobj +6289 0 obj << +/D [6398 0 R /XYZ 334.404 233.369 null] +>> endobj +6408 0 obj << +/D [6398 0 R /XYZ 133.768 216.642 null] +>> endobj +6397 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6422 0 obj << +/Length 1690 +/Filter /FlateDecode +>> +stream +xÚÅXÛŽÛ6}÷WèQb†wR‹¢mšEƒ^ÒdÓ—4´²l °%G’Ól¾¾Ã‹dÊ–­]´H¤)r8œË9CâháèvöÃÝìùK*£%š»UDCJêH&É„DwËè}L)"zþáîÕó—„“EL% ÉÎúÎ͈SHñ~B:§"þ\?߯wÍ>Ír´‘)%JÝ-ù~JæÍ|ÁŽ_×s¢ãj]§»ù‚ +¿5¸î»¶Øm‘7óÁR㘠+nÄÎ~º›}š„#œ ‹(ÛÍÞÀÑ>¾Š0b Óßvê.b¦³p½ý1ÃÓÖ +Q&k"n´Á8~y(³¶¨J§ë‹*;ìò²Mí( ‚”#'#â—¿¾ýõãŸs.âß~ññµ²ËwÙ¦îþý…>™em*D (e°GgÓfÄè i%» Ïæ {e;&Š ¡{ÿ|N·#ÒœBñqMñ5ÿ8&ÑQôÚmór\¢b´›g&~&A¨€í(D! ­ü6KËÎT˜¥Í¦·bU?¸þªª]'uM¶Ië4kóz.DŒ:?Y¡ÞÉw›ÜƘ ®zí£ìÍí,z¿  ïdÜÓ©ÛG’ÃâÕ16`Ez6sû¡Ýän 4¦uãÆXh)Ã#V B1ÒBusîÚ¼qr«ÕùFÞ40Ú›>¤užºÑ}‘/­5DKD$´MÂÛ¤­Œõì3¢/vàäfDYp]Òëê=Òi£OÎ…Kç¤ç1Šï%¬W\I¬­ôÎÐð‡ZCùÝý‘vi›mF6N4dbcpaèbcÇz_çÆšV|Úø¶tí¡lŠuÙÙ03»7‡ .µM[í×õVÃqµÏk 6h€'ÙµÀ°x“)tHô&o€º".››Óµ»jKÃ)§“ƒÑd29ÕAr˜µÑƤ‡ù”º1µ3ž2ƒöäfÀº¬(×nعÔôª±¢ +¼g¥ßÞýò˘#`sAÅ긡uÃqÉ.¸É¹cYåÞCeÕzeÙÁ-Êï­ K©Æ yy[&7ÑX¤R` =dê™Å {O'»}H'YU6þ#ì *KÏä|€@é#w…¸êƒ¿!#ÚjÈÝSê™$4Å‘&ýÞ ½ Wý„¨šôƒ~¬v{ðÖ¸ ›!ÃðÇ0Œâ½ß.2 Ì þeN‹ÆýsQ¦®’Œ€òd’d¤¤§$£<É„õWŽWš±-1ø賈@GR÷åEZzœ„lD Ú% <†¥!¶‘œ'ˆ‘³ìã9¤ ÜQöÖ,š¾¸+|jä}í¸ãøÐX²Ý×û*㥛ë0 Uw|#œf“!fæ„8MCœvtfZÓFõkÔø)í&-!7'qþéüi¥´•£¬íÀ¢¥íV›5}ÆXû5¯ ]3b±Ù´.ò s9Ä%F„ðɇú4ÂA,Dø¹D€’ Ð¸Àôˆy…—¶ªåò™é °c³ÏÁ®Güß>Ì¥ˆýçÖôÞŸÏÔÙôí'Y&ô ûÝ(T.L xßÑNgmGFé)-]¶fb®2bÒšœ²Skš,µ&H$HSyLÓQBÔöV9ʈÌ3⮃3ÑâœêN.®Õ™ÔÙ?„¬zE¼bH`þ&]æý‡%!»ÿ%—ÖÙ|£ãRÑ—LQ)…òÚ\¯ŸÀ‹’8Ë[?\áFICn„U6 a´)vÅÖâ2 B=r« Ù|…´µð÷%Ë÷­lSÉlÖ¶#M[;š€>$±Ì½B…Wp_W‹1Ô;¾‰¸G—oQç³Ç¸Â—–“®0÷ïÁ#IÏ!Á¼¯õ-U¾š†$˜®Õ0Ûù#²Ý„™Èv(×A¶ÃÏd»¹z5´ù{­†ÆALdþ`«‹5tXëÊD\ÉN ÷€ô˜DkBv"rJ‡?¥,w•'ˆR2 ì‹úS wµ°(¥—ôçSëñ€ašõξXé°ð6+ ¸˜Ñ\Ìà5p9nsm“U¬ÄM:FÊT&ˆxeÝ)%ŠÄ<Þ°µ+'Ì`ê_%àn@q2¬¶{ n³\W1jô™Ö ?{Ê#m÷8+Q¢˜g5Ü +¤©Û¼4•vWwˆs·9ø÷Ù> endobj +6396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.189 594.484 202.984 605.388] +/A << /S /GoTo /D (group__avr__pgmspace_g287a70fef8531ad6aa9a2f73ee4fa162) >> +>> endobj +6409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.251 526.873 221.046 555.939] +/A << /S /GoTo /D (group__avr__pgmspace_g287a70fef8531ad6aa9a2f73ee4fa162) >> +>> endobj +6410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.993 437.511 207.222 448.415] +/A << /S /GoTo /D (group__avr__pgmspace_g51805e7bf43ffd1a70a045994a907768) >> +>> endobj +6411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.194 381.855 225.422 410.921] +/A << /S /GoTo /D (group__avr__pgmspace_g51805e7bf43ffd1a70a045994a907768) >> +>> endobj +6412 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.868 298.163 204.228 309.067] +/A << /S /GoTo /D (group__avr__pgmspace_g53ee9e2dec1d5f685d78aa8dc444dccb) >> +>> endobj +6413 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [290.534 298.163 333.373 309.067] +/A << /S /GoTo /D (group__avr__string_g5f60008005ea7557430149926cf583d7) >> +>> endobj +6414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 242.506 221.827 271.572] +/A << /S /GoTo /D (group__avr__pgmspace_g53ee9e2dec1d5f685d78aa8dc444dccb) >> +>> endobj +6415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.084 170.77 211.082 181.673] +/A << /S /GoTo /D (group__avr__pgmspace_g851eaa0bd303b445f6ea70db31059fef) >> +>> endobj +6416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [303.465 170.77 351.942 181.673] +/A << /S /GoTo /D (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc) >> +>> endobj +6423 0 obj << +/D [6421 0 R /XYZ 132.768 705.06 null] +>> endobj +825 0 obj << +/D [6421 0 R /XYZ 133.768 667.198 null] +>> endobj +6340 0 obj << +/D [6421 0 R /XYZ 133.768 650.391 null] +>> endobj +6424 0 obj << +/D [6421 0 R /XYZ 133.768 650.391 null] +>> endobj +6341 0 obj << +/D [6421 0 R /XYZ 133.768 505.951 null] +>> endobj +6425 0 obj << +/D [6421 0 R /XYZ 133.768 491.381 null] +>> endobj +6342 0 obj << +/D [6421 0 R /XYZ 133.768 348.978 null] +>> endobj +6426 0 obj << +/D [6421 0 R /XYZ 133.768 334.408 null] +>> endobj +6364 0 obj << +/D [6421 0 R /XYZ 133.768 233.54 null] +>> endobj +6427 0 obj << +/D [6421 0 R /XYZ 133.768 218.97 null] +>> endobj +6343 0 obj << +/D [6421 0 R /XYZ 233.145 161.967 null] +>> endobj +6420 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6438 0 obj << +/Length 1800 +/Filter /FlateDecode +>> +stream +xÚÕXmoÛ6þî_!ô“ Ô _DR +†ݺ+Ú®kÓ}éŠB‘i[¨-¥’Ü6ýõ;ò¨7GNœÅ°O"©ãñx÷ð¹#i°hp1ûårvöŒ« !‰‚Ïå*`B­â@%’¨„—Ëà}È9añüÃåó³gŒ „'B' ÉIý„#ušè¨Hç\†_ª³ëõ®¾N3C6:•"I·S~¾Oçù|! _Ws‡åºJwó—4|kÀæ»&ßæMnêù‚QÓKiÕÎ~»œ}ž1ÐD6Ø8# •A¶›½ÿ@ƒ%ü|P"À¦¯NtˆD™¸ ÞÎþœÑû½)5áB¼I""­=l¿xùñ¯y$Ã?~úñ5ØÌt¸3;·£lSµCSIDo¤,È…&RêÖ;u•M8:jeÏQ¤Ã¼h¦ôQ¢E'ú%Ýžª®Î¿›S3qß­)¦5jÁ[Ø8óBt ´<&\%Á‚i¢x„—ãb‹A­Ö>ºo.fÁû…ˆ•ó¬óªõg«º ¡Z틬ÉËbîzyßmþiX3¶§Ãæ„•N^Èz[ÕL†ß2sÝàŠÍ&õ­Ük“‚ù€ePŠ Ð*=°®ÒìÓWkaZ-Ád®x¸ªÊ¶š9 7Û¦Xb£\ùŸ¸—³gBŒÂ ôíXÑ1BdÄZ™«›Æø¥¯K€”q ±°)qðêfbªÄmÌÞZ¦É‹º1éh,\•ÕÔæ­Ÿ<Š›ÜÕlÓLe 8¼gðšQ§îcd1¢3ò¯åîÜêãàŽhÙ¹ Ð䣗¯‹²ràrÎבŽãNåwΫ´óû±ÃÀy<8 vV†FÖØC´€Po.jvæN`,ŒÅ­pŒ5¸Xt")ðß*𞼆‘<}XAéÐuCã­p(iPQ¢ÀPŽÛ«ü.ߦBŽX+Œ>G+hÝs™Æc;­$&Bß.9 G»—þ"cµ—øMñ_{:íPî÷z]áÛkHÜQw[ôT‡/Vž§.Ͳ¶$hAÿ0Ð6#ÀQo_Yt‰XB̦žb¤ÿÓÞžŽ•%D2å‘*O©>Ÿ,š;*dx¶3Ú™-Ämç.ˆ[¸ÌñE¢¼F—•°Õ>´¨Ñ«´eéj.t˜©5Ęf@ñnïx+ñÕŒlK°Ò,=¤%¤(dF™ª-1[ðc Ú?œâ©€2Óøàñã+M,•ï +‚}Õé# ½¾ÆìËíÉR¼«·¡jÛo›.{gOOõ 48Gt|Žà&6ÊÁ“ïÐ@}À|x…n_ŸI4Ü:¯ÏqB„ò1¿0…©Ò¦Mø­{.7{l<56"ü0zÎÅ9‹±Ç)õ­•-f˪õ§{Ø·¨]Ø·3_Dø7•§å·›5Ö-Ã-ÿPáÅ +endstream +endobj +6437 0 obj << +/Type /Page +/Contents 6438 0 R +/Resources 6436 0 R +/MediaBox [0 0 612 792] +/Parent 6444 0 R +/Annots [ 6417 0 R 6418 0 R 6419 0 R 6428 0 R 6429 0 R 6430 0 R 6431 0 R 6432 0 R 6433 0 R 6434 0 R ] +>> endobj +6417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.111 636.458 207.223 647.362] +/A << /S /GoTo /D (group__avr__pgmspace_gb2614cd3f6b0196d3070b158f1ad05bd) >> +>> endobj +6418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [291.333 636.458 343.128 647.362] +/A << /S /GoTo /D (group__avr__pgmspace_g287a70fef8531ad6aa9a2f73ee4fa162) >> +>> endobj +6419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.996 569.22 224.108 598.286] +/A << /S /GoTo /D (group__avr__pgmspace_gb2614cd3f6b0196d3070b158f1ad05bd) >> +>> endobj +6428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.542 479.859 213.954 490.763] +/A << /S /GoTo /D (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01) >> +>> endobj +6429 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.619 366.618 232.03 395.683] +/A << /S /GoTo /D (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01) >> +>> endobj +6430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [313.579 342.707 376.991 353.611] +/A << /S /GoTo /D (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01) >> +>> endobj +6431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.154 270.971 282.852 281.874] +/A << /S /GoTo /D (group__avr__string_ge240697c78aee7b9c47cb2c9452526ea) >> +>> endobj +6432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.19 209.196 191.917 220.1] +/A << /S /GoTo /D (group__avr__pgmspace_g1617c6719e65951f109fe29b18c2bd35) >> +>> endobj +6433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.833 209.196 310.04 220.1] +/A << /S /GoTo /D (group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) >> +>> endobj +6434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 153.54 198.674 182.606] +/A << /S /GoTo /D (group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) >> +>> endobj +6439 0 obj << +/D [6437 0 R /XYZ 132.768 705.06 null] +>> endobj +6440 0 obj << +/D [6437 0 R /XYZ 133.768 667.198 null] +>> endobj +6344 0 obj << +/D [6437 0 R /XYZ 133.768 548.298 null] +>> endobj +6441 0 obj << +/D [6437 0 R /XYZ 133.768 533.728 null] +>> endobj +6365 0 obj << +/D [6437 0 R /XYZ 133.768 321.786 null] +>> endobj +6442 0 obj << +/D [6437 0 R /XYZ 133.768 307.216 null] +>> endobj +6345 0 obj << +/D [6437 0 R /XYZ 161.474 262.168 null] +>> endobj +6443 0 obj << +/D [6437 0 R /XYZ 133.768 245.441 null] +>> endobj +6346 0 obj << +/D [6437 0 R /XYZ 133.768 144.573 null] +>> endobj +6436 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6460 0 obj << +/Length 1864 +/Filter /FlateDecode +>> +stream +xÚÕY[oÛ6~÷¯ú$c1Ë»¨`°ak€¢+º6}j‹AQ[˜-¹’œ5ûõ;¼H¢ú’ }Ø/&Ïßw(ãháèjöËõìå+*£¥šë»ˆ0†©"™ +$S]ßFŸbJQó/ׯ_¾"Ä[Ì(bI +’̪튉¸%|XÍ©ˆï›—Ûå¦ÝfyV™R¢4Uý–ŸNɼœ/Áñ»fNT\/›l3_PãúÛýØ•ë²+‹v¾ X*S!µØÙo׳¯3’pD<à J±ˆòÍìÓݯ#Œèô·Yº‰‡¥Do\GfÌðioŠQ&cíã!|é’!Ýu®h¾bH%¢_p1_8¯¬º€0JPƒ[ï³u@ÍÞ¯Õˆ[„½E Š ¢’G ’€zÜ.~SçYç’¯²&Ë»¢±Ã²²í¶ñâ׎ñ§”Õé£àè‰ÔëUa"iCØ,],ß_Í¢O°—é½Æ™Ú½¾C¼Üš»]•wem´`ñÚ(ÚÚA·*lç3Æ´i;;¨ó|×4E•»ë;ëÆ&þ”óÇþô]E1â‚yþÄ9¨Áq|?'".š®¸uzÔ¶Íl£h¬1£²•Õ>ZP&O¸ +RYH—Æ‹°Rñx[CÙ00²¡½yX¡8{?Á|Rx¸­F-ˆ$ ìUŸ/8a&^öТٔUÖ *U»õÚöüì€aÙºéºjËÛ¢µ‘)øŽ*g£»YÖM8¾q™³ÍšÎö D¦u}~RœL*–¦^RéÚ³³Ü”묱ÐöÈ1©;æð!*.tš|Ë‹mç$®².”Š:Xr,ŒÐãôÚÚ41ڦƷz2›÷>0±3ÖU.ï¸DL±iLßj41ebà_‚,Š”cŸ÷E·k´¥U{¹¿Õ·@5!p¸BXÐsðAÑÓøk<|P$n´6•IJjî#4ƒ£ôÀÞ'âR &6Y—¯ìm£Óì¦qÝ„â•(D ¿#Þ~|ó&̯Þ;½†ah: Æ>ò¶¶­jwMîê]u‹ȯ/HBÓ™¾ðÉ”È>Æd&r»õY„¦  Àß…Ðò€,ÂN²™&=¦gCï!˜}ðÃ2%¸C h×å_s¨iÎ:â¸ü @pö¬ gq E߾˦8Á¹˜àÈ2écÌÑéãäWù’#ÊÉ1(M/¼,1¼æ†a2±Gl¥9œŽÊ3ƒRÜ»˜z`Œ;R×–stïæ¡+ÜF'Í-bqa-¢XjNä)“”o’q“ü¦W' ùJ0ÄøI `(Ö «§Î‡«uy“›³d|õö£ƒgÅ‘„èMÁfHW¹Öz”G‡Ñ™3ùáY’s®•ØGhé#4 4BÊ¡aÎ ´ì:#BK¿:…BìBÏq Óæ·Ì®ï¥õÅC  + WØèªä¡/€³no‘I2W§š ÷Œß)¬ü½o/Üu6—^„LÑÔÇž”K!R% I’ UêHõUB:“ñÃÏÈ”{b}¦t¤¼}˜rX¼Uñ"¾-Ú.ôER",žGÅMþü/œæí>‰m1»Õ»‡cŒ<©fa—e8â32>ÁÈþQÇš²2éoºÞÎ1KúÓ3Ûx4ë2{üm¤YÜÓ,þß| +²UåéðˆIx`4R¬°Ïá?6¼û?”É:“ͧÏ^Äà8÷ãÔ)Á?)R°=å/Šþ¯ Q`Uï¯ L,]€®Šª€§i]½‚׫íüZä¶ÃmCð%e—DÙÅØõî4%×Mïó¯Ïœ%ñB?KûÇY{XZöMþ9NÉ +endstream +endobj +6459 0 obj << +/Type /Page +/Contents 6460 0 R +/Resources 6458 0 R +/MediaBox [0 0 612 792] +/Parent 6444 0 R +/Annots [ 6435 0 R 6445 0 R 6446 0 R 6447 0 R 6448 0 R 6449 0 R 6450 0 R 6451 0 R 6452 0 R 6453 0 R 6454 0 R 6455 0 R 6456 0 R 6457 0 R ] +>> endobj +6435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.785 619.207 192.617 629.737] +/A << /S /GoTo /D (group__avr__pgmspace_g7c26394eea1ddcc33fb698833b9aa9b2) >> +>> endobj +6445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.232 577.299 194.065 588.203] +/A << /S /GoTo /D (group__avr__pgmspace_g7c26394eea1ddcc33fb698833b9aa9b2) >> +>> endobj +6446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [287.189 577.299 318.501 588.203] +/A << /S /GoTo /D (group__avr__string_g4a03589020c79fa0b93673634bef711b) >> +>> endobj +6447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.785 524.482 210.617 553.548] +/A << /S /GoTo /D (group__avr__pgmspace_g7c26394eea1ddcc33fb698833b9aa9b2) >> +>> endobj +6448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.731 456.095 206.296 466.999] +/A << /S /GoTo /D (group__avr__pgmspace_gf5c3724d0e89d5952738b8c8da004e0a) >> +>> endobj +6449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.868 456.095 314.701 466.999] +/A << /S /GoTo /D (group__avr__pgmspace_g7c26394eea1ddcc33fb698833b9aa9b2) >> +>> endobj +6450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.575 391.697 223.14 420.763] +/A << /S /GoTo /D (group__avr__pgmspace_gf5c3724d0e89d5952738b8c8da004e0a) >> +>> endobj +6451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.242 323.311 197.508 334.214] +/A << /S /GoTo /D (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a) >> +>> endobj +6452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [285.684 323.311 321.43 334.214] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +6453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.42 270.493 214.686 299.559] +/A << /S /GoTo /D (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a) >> +>> endobj +6454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.939 246.583 344.205 257.487] +/A << /S /GoTo /D (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a) >> +>> endobj +6455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.16 178.197 194.556 189.101] +/A << /S /GoTo /D (group__avr__pgmspace_g9c3ff50bdf59b38219394ff5230660da) >> +>> endobj +6456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.319 178.197 315.195 189.101] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +6457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 125.38 211.865 154.446] +/A << /S /GoTo /D (group__avr__pgmspace_g9c3ff50bdf59b38219394ff5230660da) >> +>> endobj +6461 0 obj << +/D [6459 0 R /XYZ 132.768 705.06 null] +>> endobj +6462 0 obj << +/D [6459 0 R /XYZ 133.768 667.198 null] +>> endobj +6347 0 obj << +/D [6459 0 R /XYZ 133.768 508.457 null] +>> endobj +6463 0 obj << +/D [6459 0 R /XYZ 133.768 494.398 null] +>> endobj +6348 0 obj << +/D [6459 0 R /XYZ 133.768 373.615 null] +>> endobj +6464 0 obj << +/D [6459 0 R /XYZ 133.768 359.556 null] +>> endobj +6349 0 obj << +/D [6459 0 R /XYZ 133.768 229.218 null] +>> endobj +6465 0 obj << +/D [6459 0 R /XYZ 133.768 215.159 null] +>> endobj +6350 0 obj << +/D [6459 0 R /XYZ 133.768 119.253 null] +>> endobj +6458 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6479 0 obj << +/Length 1715 +/Filter /FlateDecode +>> +stream +xÚµXÝ“›6÷_Á#žÖŠ>€›&3iÓÞ$“dÒäò”d2–mZ .à\îþúîJƒÎNÓ³ <-q¥ÿÒi3ÂôU‘<&™#¢="PªBoÁB¢x`‰¯6Úxʺ¨Z;_½½œyœ +4—5©eÝ9Ä­öEÚdeö£Ÿ&yºÏ“fÎ| œj6*@™ëbÝlì¸\Ùo·˜EIn·ÔzΤ¿ÞÂÇÆÌoº]F9!ú!f#ul÷¾þ¡´sÌÍ&Kèø¬nÌ0R$QF‚ •.žtÑd•ÎoaCY±ÃЄI’6ºªí|Q6v#2&HÀ£Q_öÅ’DªS„@òż”¹Cz–ÚÙ:Ûf9­ùiÊ< +›œG'ý ,Œé¿¦zç4j6I3¢Ó‚1áq0´Ö´j2lU3²C¶%ö³+³li@…þHœk;Î +G_õ°È‚Ý@“£3Âá,ˆ.øßêf_¡ªE}q¼¹/8€IÈ@I!ÉÏÉ‘7bàMø«PœÍ"B—0[ì·×Æ.Â…|¡'"kµ›Â^&¡(m&MÇæ¾3éЋã)$x|œBBùI¥íÀ¦ ¬@ªHµ.É *I|ćóBöó‚Jã{Ž®¶Y‘46L`âNW¥3E}$›Iø¥®ôÒIï‹LR¡1vIåjƒñ@’dŒ^C(q!ÔîaE +Æ+Rž&Í M” (=9§-뱊Êáh¬ +żýw2ŽÀîk³»±(‘üdE +"¢ìé·²chp¦ë.š›9ôeßîµ1¼ Ù³k™ BkèéœTƒœT]ô£­<뜉Sм˜…5¹’4‡¬±™2¨ò'\Ý«9Dw:bWqvÀÙ<ñv_»#®]âä%{銟T$`Ìžr8= ¸‡pÅ@Lê *;ꙧ».–hJƒà) ¸Cyœh%„ñÒ“hÜ¡#ƒ@3ÂYap*!™ŠÌKÁ qô¥ ¬uÊ‚ö݈;°“0;ÛÆj‘ÅÁÝÍŠ`Á oÄM¶o4g™ŒïžXŠînídè¯u €ÛŠ±¤üÖ›ö!Í”?¸tË6;•_¶ÏƒAwËîÝñMXïéÌ<´Àè3g ºˆoyäl7܇EÔÜŒb"”óÆ¥.teZv+«“éj³·ƒg:µƒÀ~½àâ‚EöSêF+„²jKy7Æ Å"Ï®‡kW ž•_o׺8Vù_{ж +endstream +endobj +6478 0 obj << +/Type /Page +/Contents 6479 0 R +/Resources 6477 0 R +/MediaBox [0 0 612 792] +/Parent 6444 0 R +/Annots [ 6466 0 R 6467 0 R 6468 0 R 6469 0 R 6470 0 R 6471 0 R 6472 0 R 6473 0 R 6474 0 R 6475 0 R 6476 0 R ] +>> endobj +6466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.288 636.458 197.66 647.362] +/A << /S /GoTo /D (group__avr__pgmspace_gee6bf291c23054aca37533937a1d412f) >> +>> endobj +6467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.295 624.503 432.146 635.407] +/A << /S /GoTo /D (group__avr__string_g53e212c1732d63bc80f649e542aff120) >> +>> endobj +6468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.347 570.862 215.719 599.928] +/A << /S /GoTo /D (group__avr__pgmspace_gee6bf291c23054aca37533937a1d412f) >> +>> endobj +6469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.615 471.924 194.111 482.828] +/A << /S /GoTo /D (group__avr__pgmspace_g484117e1416429fc94efad8c66643164) >> +>> endobj +6470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.15 471.924 312.125 482.828] +/A << /S /GoTo /D (group__avr__string_g63e609bfa0d354dcd7e35b297c2e6fdd) >> +>> endobj +6471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [304.522 442.345 339.709 453.249] +/A << /S /GoTo /D (group__avr__string_gfa4a8701698b766f40180c735726cfe7) >> +>> endobj +6472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.619 377.496 212.115 406.189] +/A << /S /GoTo /D (group__avr__pgmspace_g484117e1416429fc94efad8c66643164) >> +>> endobj +6473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 236.873 214.634 265.939] +/A << /S /GoTo /D (group__avr__pgmspace_gabad6a32f133121973ea9c06e30cd33a) >> +>> endobj +6474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.26 179.47 192.545 190.374] +/A << /S /GoTo /D (group__avr__pgmspace_g3a8a479d2f1b4aef18a89316e3c9e0eb) >> +>> endobj +6475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.809 179.47 311.573 190.374] +/A << /S /GoTo /D (group__avr__string_g7fd4936b86eb6b87e98587044c562715) >> +>> endobj +6476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 126.203 199.232 154.895] +/A << /S /GoTo /D (group__avr__string_g7fd4936b86eb6b87e98587044c562715) >> +>> endobj +6480 0 obj << +/D [6478 0 R /XYZ 132.768 705.06 null] +>> endobj +6481 0 obj << +/D [6478 0 R /XYZ 133.768 667.198 null] +>> endobj +6351 0 obj << +/D [6478 0 R /XYZ 133.768 540.001 null] +>> endobj +6482 0 obj << +/D [6478 0 R /XYZ 133.768 525.794 null] +>> endobj +6352 0 obj << +/D [6478 0 R /XYZ 133.768 358.934 null] +>> endobj +6483 0 obj << +/D [6478 0 R /XYZ 133.768 344.727 null] +>> endobj +6353 0 obj << +/D [6478 0 R /XYZ 133.768 229.923 null] +>> endobj +6484 0 obj << +/D [6478 0 R /XYZ 133.768 215.715 null] +>> endobj +6354 0 obj << +/D [6478 0 R /XYZ 133.768 119.253 null] +>> endobj +6477 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6499 0 obj << +/Length 1669 +/Filter /FlateDecode +>> +stream +xÚÅXÛŽ›H}÷W <ÙÒÒé ÝÀhµRö’‘"EšxŸ’(¸ÇF²Á¼Éäë·ª/<Øo²Ú hŠêºœª>e¬ÜN~O^¾æ*HIªà2˜$VI RITÊ‚ù2x?地döqþæåkÆz‚§ ÉHýl%êbG@6ãrúwýr·Ú6»,×d=¢S)’¦‰ÿä—K:of¡`tzWÏX2­Vu¶…\Òé;ÜÀÞþÕ›¢-t3 U riœ™ü1Ÿ|ž0ÐDÖsœ‘”Ê ßNÞ¤Á^¾ (`Ó#º D¢ ?Üï&Nèåhʘp!{Ñ$a1Dé´([kiÓ‚rZæY£óíîÓ]þ@%Í«²qRù:«]à¢þ^ '±Œ|`>P*¬””ƒàE1÷2  oB©¼ÄO³P‚…w·oÁ˜§Ú¢ˆð¸Û²á'ÔÅGêšâ›þÔŽèÃpIá¥Ëu’H‘|”ÞÚ“ 9äPBCÅ#+ü[µÝeµÃDûe¨©º°媱Ū¬ðÑÅ2Ap Ør m¾ÖC<õÊ¡èþv¼9c¨ôGÌ 7¶ƒ‹|Ø—y[T%l&h~^l‹ äÙ<´ÕŽ.m…¡çP"ö5×»Öª.ܵ*7Ö‚ÜÆÉÙÑZ?ûP€ .^7.…BôaCý>I! "R]#˜³¼Õµ õ0¢S +¢dòµ}¥Æ8éEÈÀû#…© 4”€ÖÈùs‡pK¶M¹|~P3À*ÔpÌ * ¡’÷-ëï;0QDt^¼²þî*¨~];T:@f}\:X–Ndí¼Ô¦›¹v‘{wÿêí±ßƒCg@È$I#Ö¯ÙÿÉä×›¬Y_asS'-¦DvýmîwÞf_‹íÞ å~»ðæÜÌuñØz£¼G®ÎC‰§Ð×á‡%œIfÓ{Ýîm?Âѱ¥Oñs¶©ˆ4z^S©ì5ü¬F“Êff^en“ˆf®0øb£›Æ¾j×Y ý"lª?ï³[­ÜZUÛ…U­3B¿?¸35€0M¦ßt]Ù»b´´9‘‰8_ÚŠPÞkù÷G…XxsºIF¢$>×04êÔ;8íµ®L„­ýîÅCµ/—Š(È6; ‘6ÀÆhjh£JNÍëØ` ?Y8CMˆ1\€kJ˜àîêâ.Ra¾*ä¶ùÚ­™¸Ãj°‰¿Y4iÇ°ž<9¢ÏõÎPIÅŽj‘wt™k»€ƒ››à›…z©mÑãÓ¾ÑK+°x<…e(æˆ(Èú2Ï;0·G$\ÁãÖÞ"‹QAWç¡üEuððŠºFm ´ÑÍ~Ñ57x=§ gVWÄe¡0–c¹ã4¾ì@rì&­€¬`*L¤* :® ›²t÷…ë‘/lýÛŽ•/ƪ)&ŒÊ«°ô”Á…‰"1ÆÉ€9qâ8ñ ’ƒˆâO9îÑ€Ð縧n|z\¿Br"®áÐKíÏùCÓ:L)×Ñè:S:È\G¤7º× ~‘KÇŠHÉû•žKcgé²ÒeÔ:cSÛvðÁúE¢U+`F9tz&âi>V*HmT§¶¹€âí¾q[˜â7Æ{éÊêPÄ|XÆžmíêÞܦ`ë(À¸Ðß󴆇WßOkÄsrns!ç ÔË9G‰iÇ>á¨ÞoÚŽö™*Öðh«äÆìT«JOŽïWîJ’C_ý®É=þ±“»ú¡“{t¹Ù@MP~MËPÜÂç,k¡|”ãøi×2?ß2”0cö¥m 7rW7_+ÞŸ¯qOO¸ñÖ=HšµcÄz[5­¥¤f”9Àêhˆ¶€tbY¹t ü¹umÿ¿g8•ÏHUƒ^/{u¯2·8eð…£2TzJÍ‘šÛQƬVn­ªíBG¥ñk;¼à²^F²P`€eœÄÝT‚k6£psÈ(H”vÍÏ™°2˜/ðÁ$\ý|ÁSun¾à©´Mt-Ü–ÎïDu~ƒ+¤ü(1òoNåz¦§‚‡h828ŽžÑÿOSÀ¸æßSÿ¯©"i “~ï_Ó$%0HXou©ksZ„;“æë½½ù]çö&²Fo¸¸A:‰OœRw÷€‘ôþº?¤ñ€7Å"÷ÿ8•Õ×Ç•.]þ ‡´É +endstream +endobj +6498 0 obj << +/Type /Page +/Contents 6499 0 R +/Resources 6497 0 R +/MediaBox [0 0 612 792] +/Parent 6444 0 R +/Annots [ 6485 0 R 6486 0 R 6487 0 R 6488 0 R 6489 0 R 6490 0 R 6491 0 R 6492 0 R 6493 0 R 6494 0 R ] +>> endobj +6485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.364 618.834 218.757 629.737] +/A << /S /GoTo /D (group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) >> +>> endobj +6486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [302.54 618.834 365.951 629.737] +/A << /S /GoTo /D (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01) >> +>> endobj +6487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.907 489.598 238.3 518.663] +/A << /S /GoTo /D (group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) >> +>> endobj +6488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 453.732 218.878 464.636] +/A << /S /GoTo /D (group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) >> +>> endobj +6489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.294 364.371 196.002 375.275] +/A << /S /GoTo /D (group__avr__pgmspace_g11ed791b5d147f8d2ce01699a9c220ca) >> +>> endobj +6490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.438 364.371 314.626 375.275] +/A << /S /GoTo /D (group__avr__string_gfa4a8701698b766f40180c735726cfe7) >> +>> endobj +6491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 308.714 214.176 337.78] +/A << /S /GoTo /D (group__avr__pgmspace_g11ed791b5d147f8d2ce01699a9c220ca) >> +>> endobj +6492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.875 248.933 202.122 259.837] +/A << /S /GoTo /D (group__avr__pgmspace_g5048829165f57aef87bba38ba9126d1d) >> +>> endobj +6493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [288.463 248.933 334.729 259.837] +/A << /S /GoTo /D (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a) >> +>> endobj +6494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.025 193.65 219.272 222.715] +/A << /S /GoTo /D (group__avr__pgmspace_g5048829165f57aef87bba38ba9126d1d) >> +>> endobj +6500 0 obj << +/D [6498 0 R /XYZ 132.768 705.06 null] +>> endobj +6501 0 obj << +/D [6498 0 R /XYZ 133.768 667.198 null] +>> endobj +6355 0 obj << +/D [6498 0 R /XYZ 133.768 434.813 null] +>> endobj +6502 0 obj << +/D [6498 0 R /XYZ 133.768 420.243 null] +>> endobj +6356 0 obj << +/D [6498 0 R /XYZ 133.768 299.748 null] +>> endobj +6503 0 obj << +/D [6498 0 R /XYZ 133.768 285.178 null] +>> endobj +6357 0 obj << +/D [6498 0 R /XYZ 133.768 160.773 null] +>> endobj +6497 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6514 0 obj << +/Length 1933 +/Filter /FlateDecode +>> +stream +xÚ½YÝœ6ß¿bßÊJÅñ6U}¨ÒD­Ò*m¯OiUq,w‹º [`›\þúÎx ˜]¸½¤JžlÌxf<¿_߯ùúÕê»›Õ³—Ò¬S–nîÖB)›dmRÍL*Ö7ÛõÛ@J&’ÍŸ7?>{)„G¬$Sq +œ,Õ7D1a³8²ÔÁ¿Í³ãý¡=fyÁv3^/a'T‰ðùÀô˜ç+y?!ŒÓ$yQPgö²ASòzŽÁTV)¶!ªíÛšˆOic“,¼1Fû[lB Í€å,HAWH“LáÙ8x¶öTʳ't ,É¥¯}£ƒÉµ1=M¯tFꎎRêÉ;ÎhM0¯a +ú€ "”.î×SQÓö%A® •–£ éqt–ÒbLoG9øŒ†ŽÀ’'TŽt¨¸±t{vÝ»jÎxQ¢/Ód¢ÌÒ1M¬Ð8¨›vöˆW¸IÁ"5¸¿¤R ¥ (ÄÔU®¼¢ƒÊ¶/h4~5ÓõE1SBž·K¾èˆ¥‰è øWÄ +{È,ÓéIR÷EzæÀ!|ìÙNÌY$(äµ>^o§x}û0#,?Dòñı¾dÍ‚¹/)½„æò³´îpÌÛæïIë^Wm7z`FÜÓR‘~LßÎè¢X›Ojá³ÜbÙ%KiübµX6t +õ*þH×)Z‹,µÜ¤“& öužQkk†˜MÇÆêV@ŠèÕ%Ÿ" ¿zÒYg«g(TÊTtVÔ–†©Oêè•N1»l ?µd¢¦Pð¾L-¡MÙÀÕáZúÈÉ•ž ÈÂ>×FKj$`#GF.‚aÁ/°^ÎÖÖˆ³DŧŽäÞ¸û°;d]’DàTªm›)‡‹k(£ÊÎe¹*ŧF¦óÚ™€\dn`§§¢…Ú¯Y4~,ùù÷ׯçJ¡a"½âo¶UmOùîìî--ßÕ§ +ïãŠ+j¡p±¿Î}Ÿ7JN­ó¡hPJì˜ÁH—c˜`)*á’i‹0£oKrÒàú²ä‘Ž§¼Œ/%5‹ãkO ÙSM"¶·–ßLSíöÊÌ¥Än üѶºÃ8ž„ób!Š¡ +BX}¡¯9Æz÷Q×"‘ßÄÿKNL5ØøõÙ¸ú܃L¨Hléa¢ —3 fˆ¥¼ŽÐÑØà[psRéžÆ5àÁYûqž íÙ×GÛ¾fÿP¤  ú˜ÿý ±wJï¿D½‡qê½*ª¢É†;Vÿåëfw¢É‹"§IDƒàÏ¥z.z’œ»Ùþå©û{"ýòÙ¨8÷åm>ÜÛˆeýþáž.ƒþ‘ÿ +œf +endstream +endobj +6513 0 obj << +/Type /Page +/Contents 6514 0 R +/Resources 6512 0 R +/MediaBox [0 0 612 792] +/Parent 6444 0 R +/Annots [ 6495 0 R 6496 0 R 6504 0 R 6505 0 R 6506 0 R 6507 0 R 6508 0 R 6509 0 R 6510 0 R 6511 0 R ] +>> endobj +6495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.099 636.458 199.477 647.362] +/A << /S /GoTo /D (group__avr__pgmspace_g8283f9a987be92ae137ee610e6b11b90) >> +>> endobj +6496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.934 636.458 330.33 647.362] +/A << /S /GoTo /D (group__avr__pgmspace_g9c3ff50bdf59b38219394ff5230660da) >> +>> endobj +6504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.468 543.973 216.846 573.039] +/A << /S /GoTo /D (group__avr__pgmspace_g8283f9a987be92ae137ee610e6b11b90) >> +>> endobj +6505 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.897 472.12 197.163 483.024] +/A << /S /GoTo /D (group__avr__pgmspace_g8ece6c08cef78e50f404072823e48752) >> +>> endobj +6506 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [283.614 472.12 319.359 483.024] +/A << /S /GoTo /D (group__avr__string_g3d3e512a095039a7e2f86859537d761b) >> +>> endobj +6507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.846 354.986 198.218 365.89] +/A << /S /GoTo /D (group__avr__pgmspace_gd6de880a1dd672b52469fe986e3ec011) >> +>> endobj +6508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.305 343.03 430.156 353.934] +/A << /S /GoTo /D (group__avr__string_g386481b53df5f2437a1da78b400b6440) >> +>> endobj +6509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.204 292.08 215.576 321.146] +/A << /S /GoTo /D (group__avr__pgmspace_gd6de880a1dd672b52469fe986e3ec011) >> +>> endobj +6510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.277 184.361 196.428 195.265] +/A << /S /GoTo /D (group__avr__pgmspace_gb3a5f8b6324d77903d713917eb219f05) >> +>> endobj +6511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.53 133.411 213.68 162.477] +/A << /S /GoTo /D (group__avr__pgmspace_gb3a5f8b6324d77903d713917eb219f05) >> +>> endobj +6515 0 obj << +/D [6513 0 R /XYZ 132.768 705.06 null] +>> endobj +6516 0 obj << +/D [6513 0 R /XYZ 133.768 667.198 null] +>> endobj +6358 0 obj << +/D [6513 0 R /XYZ 133.768 539.712 null] +>> endobj +6517 0 obj << +/D [6513 0 R /XYZ 133.768 525.989 null] +>> endobj +6359 0 obj << +/D [6513 0 R /XYZ 133.768 404.62 null] +>> endobj +6518 0 obj << +/D [6513 0 R /XYZ 133.768 390.897 null] +>> endobj +6360 0 obj << +/D [6513 0 R /XYZ 133.768 253.957 null] +>> endobj +6519 0 obj << +/D [6513 0 R /XYZ 133.768 240.233 null] +>> endobj +6361 0 obj << +/D [6513 0 R /XYZ 133.768 119.253 null] +>> endobj +6512 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6533 0 obj << +/Length 2146 +/Filter /FlateDecode +>> +stream +xÚÅÛŽã¶õÝ_a ±˜Ë«D.‚-Ú,lŠívò´™¶•Ø’+É™L¾¾ç”LÉòx»IŸDRGç~¥è|;§ó7³¿ßÍ^}Ë“¹!&ÇÝf΄ i¢ç‰Q$1l~·žXpN˜Yþt÷ý«o‹€'"5€ÉA}í!èR’Ê [rµø­~u¬–Œ.l º » ÌŠÙ}öÍ-¼¯—+ß-9]ô¨W\ÑÅ{»>åmQ•~ûCVf[{°e»\AÅ‚'‘Ïþy7ûïŒ>:g‘ +1TÍóÃìÃOt¾†—ßÏ)FÏèa.$€2üp?ÿÏìß3z[¯*%\¨³^5‘„Ëå +TAù.«ƒ6d,­$,á¸)“*‘iÓ´uc?¿ór¤Š^AjmbÔgôJÅp"•èñ'8ÐD«´ƒøj¹R Ñ»7?—è$HöèÖv_&0‚‚ÀÏÜ)€h´â„ l¾b)I¸ôÀï–L-2ЂWAæ —¢ÜúuQ¶•_µÕ¯è6¶lâzTw;ë¼Ä»G½ ~òþÍlþˆ§½¶QÏ“½/˜Í©ì<vû*ÏZÛ€’¸DNüi»³Ë¡gÖµÝØÚ–¹]ûýýã„Á¥“âÒE„ˆ•NŒf&ŒuÉÀåUÙÙëÙ´¼nZ¿©òüT;ÆÂ~ãt +å„jРGå#¿DkÝV—V$9¶ISu+lù le‚aë°žk‰+œ6`–}$®–,ìJÖtÁZ1mÎ8%ùdÛcŠæ.k§4¥Hšê›9zÐ9¢Q‘vVìZ¸®FOð_WÛ:;€#ø*4j*V©! Z'R‡÷=z +JX6¯Ç̬¡áÅhBÅíö@0s³=LÇ&…/¼ß¢]™«xÖkÏœ±wqQÕŶÏ/³½?ø ›ílêÞo¦òt:ÑŸ§kˆó”bÉâ»)ŠÐVIñB·#"ïñ…€"ЮƒBPm‘í÷t QF¼¼æ\i½w>ÝLgÛK~Rp*ž¼ˆ2Ñ4Cïš‚wB–—¨3š5T˜5šâûsÛGUs,ãBU6áå•É%š(–^ÚrÐ秒 nÑçdøœ¡¡Ÿ ³Ü%£‰©!‰û¢«S̘ Ðó;}!e¯¨«¡,•eEÍpgûü´Ç~éø …ÅÞ–[ìópíúî_Ïõ›Æeß­]øT#¿Pw,6tд¿‡]‘ò`ïU茆 uEMÑ´oဃ¢¶{¬âiÚ÷Œç.ÀŸw¥vØ¿ƒªµÒ“öåš”s:F„ꇴ¢I +)…Ó¾úááSÕÏ;3^R3®vˆqºÚ­ ´WWrK2 *ù?•=é‘zÙãÏ™ŠSu3V&¶¥ÂÔqã+îÃTÜ÷~†PÁåÔÈå”WËù£(€3q4—æõ›Ó¤R6 ûÙ£7Ð8— xìÂ:anq¿©«ÃTˆ(0’TÏ ‘$ +‘Dr?×!òဠغòœ~Yuã'•$÷zN˜µuSŽó‘§fu¨ ν^©Fà:òJ1JþŒ‹¯¶~Y%Ó QF¾¨±ÏqýÕ“løtÉí«/¨^: U,Xï­»\æÓ}d¢—]pÕkõj(›A(ÃGÑrÝøÉpê/`3¸@2‰÷¥ºgzªÔ%œÁ.48Éôùö°(Çè¯á†‰PÊ S?Õð^¿ˆðw-Šc¦FÃÄÀðÄ^0zTƒTû¬D1Êa!´m×XL¡7ÚàŠß6¸Š§P¤PÚç:¬žšBWÚé¸Y÷TŸjžŸ9„rÍÍ-ççDÛ•â?»Ã`ÍÓ¿fòdÆÜ6#¤¨³ñ‹~òÄ +N#¥à™S + 7kxpï+kQ–N;xä"9†é#ïˆðb) ëfœqáu×wTt;"JÑ•‡ðþ‹Mu*×îžÄôƒç°°r(¬ô¦K˜sŽwR:þ:G¸Qœújœµ·~[nC•…•oì¿òÁÖ ÑkÚ¥ †5@³ñ ×µáo‰Ïõà¹YÉùŸ?çΡ¿ÐP'Vø˪Õø÷@EÐkºü¿¨|Þ¾!¸øÇ7­>å'_ìí稵¦`hÊ|{Â8I¼ bn8qľ(Ê|ZƒÝàëÌÉÉî›ÒÉÿ†0?¥â% »¿… p%tü·PƒÓ&Á5ÞØÒÖYÛµd¸w»“_üÃæ~!ýƒÑ×\¼fÚï ÃjƒFªê.µ9‹-EºXí‹û€ÁÝÑ"Êê÷Ç­-Ç"ÿ2A~­ +endstream +endobj +6532 0 obj << +/Type /Page +/Contents 6533 0 R +/Resources 6531 0 R +/MediaBox [0 0 612 792] +/Parent 6444 0 R +/Annots [ 6520 0 R 6521 0 R 6522 0 R 6523 0 R 6524 0 R 6525 0 R 6526 0 R 6527 0 R 6528 0 R 6529 0 R 6530 0 R ] +>> endobj +6520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.625 618.834 193.016 629.737] +/A << /S /GoTo /D (group__avr__pgmspace_ga3bc55b47998e5ce1d8ddcf0be228638) >> +>> endobj +6521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.606 558.724 478.476 570.679] +/A << /S /GoTo /D (group__avr__string_gff88adec2ad0446259766197ec3863de) >> +>> endobj +6522 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.151 503.569 211.542 532.635] +/A << /S /GoTo /D (group__avr__pgmspace_ga3bc55b47998e5ce1d8ddcf0be228638) >> +>> endobj +6523 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.871 491.614 255.261 502.518] +/A << /S /GoTo /D (group__avr__pgmspace_ga3bc55b47998e5ce1d8ddcf0be228638) >> +>> endobj +6524 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.694 432.031 194.642 442.935] +/A << /S /GoTo /D (group__avr__pgmspace_g0ca5a2d8b5b1b4d899edb89535c36b69) >> +>> endobj +6525 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.719 420.076 432.147 430.979] +/A << /S /GoTo /D (group__avr__string_gcbc51d76d5f8f4cacf27238494d866d8) >> +>> endobj +6526 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.716 364.587 211.664 393.653] +/A << /S /GoTo /D (group__avr__pgmspace_g0ca5a2d8b5b1b4d899edb89535c36b69) >> +>> endobj +6527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.204 263.469 190.277 274.373] +/A << /S /GoTo /D (group__avr__pgmspace_g36c9c2de19d7e23c4a6bf63eee608af3) >> +>> endobj +6528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.077 251.18 393.15 263.135] +/A << /S /GoTo /D (group__avr__pgmspace_g36c9c2de19d7e23c4a6bf63eee608af3) >> +>> endobj +6529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 239.559 161.324 250.463] +/A << /S /GoTo /D (group__avr__string_g6a441da9211eb85881d99c60b1003552) >> +>> endobj +6530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.964 196.025 207.037 225.091] +/A << /S /GoTo /D (group__avr__pgmspace_g36c9c2de19d7e23c4a6bf63eee608af3) >> +>> endobj +6534 0 obj << +/D [6532 0 R /XYZ 132.768 705.06 null] +>> endobj +6535 0 obj << +/D [6532 0 R /XYZ 133.768 667.198 null] +>> endobj +6362 0 obj << +/D [6532 0 R /XYZ 133.768 482.816 null] +>> endobj +6536 0 obj << +/D [6532 0 R /XYZ 133.768 468.276 null] +>> endobj +6363 0 obj << +/D [6532 0 R /XYZ 133.768 331.878 null] +>> endobj +6537 0 obj << +/D [6532 0 R /XYZ 133.768 317.338 null] +>> endobj +6538 0 obj << +/D [6532 0 R /XYZ 133.768 165.319 null] +>> endobj +829 0 obj << +/D [6532 0 R /XYZ 133.768 160.574 null] +>> endobj +6531 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F14 2650 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6541 0 obj << +/Length 1020 +/Filter /FlateDecode +>> +stream +xÚ•VKÛ6¾ûWèV +ˆ¹|H²´( +¤M ècãuzIr %Ú K®$¯wÿ}g8”,o ´=qøq8œùæ!‰`ˆàÃâçÍâî½J‚Œg ,›] µæ«$ ’,æI&ƒM|aJq™…ß6ïÞK9SÖŠëU–œÖ¤qenÅWѤ`B³§îî؆R°³í`Œ—7,Ç‚G㵟þÍî}¸Ô`ð!T‚M¦—*lm‹S>TmCÛßMcöö`›!\fZh¦‰Æ¿n/$ØœQ y&â ?,¾|A‡Áu–g§ztª/ÖÁãâÓB\ñ*nñ¯¸Ò19þ„2f/àLÙÛPê˜ýµîq›±¼mS5tf{h‘B +Ðyxpº¶hm_õèðUÄâa½†EÐvß«öWºÏ£rÆ†Ò þùº¦—‘-ˆp)šØGñÒžÞˆ -®1ëÐ-KØqæ1APýépS±í ­EÕ›m]5{Òs~l› ±'´eºª=õ^­Yn[Óþ-ÛUÇž‚:XÞòÔÔ=‚ñkcma >é®x¢"ÒÝ€!‹…Á‹NˆÙaÊ“wmO'˜'Ć²òHiM(Yãö«ª¶£òŠè±kÑàSUŒO5t`Mï_©HÑ«ÚäãýÖ+!9Âæ'±j)Ø9Yb"kℲ'fÙ³ìÙœÚìÑúá…Ë[;J‚°·ÆžxÕÁKÁ³, àO •»´ƒ½}骋Rh71å"VÓp{P£$Œ}D;`§N•Ûž€Ò`}¿ìmó:ä‡L{# +endstream +endobj +6540 0 obj << +/Type /Page +/Contents 6541 0 R +/Resources 6539 0 R +/MediaBox [0 0 612 792] +/Parent 6544 0 R +>> endobj +6542 0 obj << +/D [6540 0 R /XYZ 132.768 705.06 null] +>> endobj +6543 0 obj << +/D [6540 0 R /XYZ 133.768 476.194 null] +>> endobj +6539 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6547 0 obj << +/Length 3550 +/Filter /FlateDecode +>> +stream +xÚí][o7~÷¯Ð£¬Þ/Áb8n‹-6@¶q·Ý¢PdÅ _VV’æß/©ÛÎ 9<Žív)2uô‘óóÞñèr„G?œœžŸ¼øžÊ‘AFÚ—ó#ÂRR¤H2:¿ý:¦3ùíüÇßâf1e¬¥m©¿ïJæRüX`6¡büyýâöfBðøËbm_ð}ŒXñÃ×þÑe÷ådʬÁ·ŠÇGÓS*ðø§Åŧùfys½ûï›Ùõìrqµ¸ÞL¦†a6¦’:ã'ߟüï„X{xD¼& È`1š_üú]Ø?þ8ˆ=ú²-z5bÜ%î‹«Ñ»“Ÿà}»Þ—crŒ‡FŒ3ÂÒŠ´±Å52Ôìm¸BFa²}à#¹d_ßµh¤)ßÌæöyiûi­Á(׈ۆ‚€CGBÓÎÙân¾^Þndí×™¤HsòëL„‰ ý•£íííj9Ÿ½_-v­ñÁ}v³oš‹Å„Xb/ç‹::®¢}žT„2Ö†l·ÑMN RZ·¡Äþ’æA3ágì«æj×LÖ«m›X¾ü>»˜ÿ¾¸võ_,°ýGš9‚çHÏw×ÕãÚ|Ü¿yu=[Ý\î?¼Ù½ž-/—›ÙÊa´¿55ˆK±3ñÚòãñg÷xëÍÁ®n.>­¨™Š •:rѯԫ !d|~µeÜåDŒgöÏÛ×­ö7Bµýc½^Ñ’¤Ñ 24ÛÌØ’÷Ìüó»SÉe Œ}ù¢…%[~ùP¦öÕ·¿¼!­¿h ÐÈ—èië¯Ù,ò-vÚù[DvvEšž£‰QŠ·ÛM1*Ò¥-ØL,ÉÙ‚-ô”& ‹-ØY-“Èl«V" [°­Zü€6 靖ä< ×6´NeÐ=›åµûãWÚ†áPÈ}Y7|NÛht4*ŒŠDô~@:Z•$á·µ$šÞ#Ê×Eݺ0¤„ …%Œ¨s›í«Cs„¢~±¼KSu@Uí <Š¬ƒÔê ëA­Yd}õAÖY|Yïåë²îŒ¬Êd(†¸hÂÒBwŠ:ÅÜâe÷E}5¿Hî© 9(z€&ÚOÿ×ë³DQ€uäVC\kŽyyÁÁ´Å<œ®Úbn¤xv›Õ îLPQÈo&1 „àDJÄÝØpà÷²VÔBq@Ž€âYkÉ€Xƒ`9a¹€gyv£EhÎ82†—ñÜHd˜‚¡9ÕˆÔ\oïæ89Ž 9rÜC ãowÿ}·™].â²Íúfµ:”ÉnP•£WxU¹×ߨw':û§±îD×·Øi#•³+Zg²5¡XaB"´ÕGkƒ aQ'2”£9ðØGÕLäòªxìWå[ð˜gñ8·žu[ \ÎQlƒðئRÈIr<@s౦W<æq“Ô²òªxìW%ÇüÄãìŠFzˆQZ˜XLm/T3 Úv ¢"[ÞèÌpQ:nK¨²ßa@‡48T6QªAÒ3í‚àò–Ñø¸’ú²éªÕ[%ãCd}õAÖYdý©ËzˆÉº3#XéšX„@†tl¦×MTÝÊbÂDU=c÷ªJÓT)õäeÜ @+E€> EâÔ‰õ=X‹LHDHñž=Î â]«I’#†s%Ú"FF?V2XIÝ€ô˜´ŠÒaRkˆû˜‘ϲXÌpVdñ¢/ÂM÷Îy”V !ƒ[Ÿ «¾XF’ª +¨”ƒ¥Ç‹rœU¸pá".Ú¼*÷YDÊѪtC6+ÐRy•À)̼*Cˆ!`U~ÀJâtÇ‚@ZyV€tŽËõ¬ü‡s-á6PËâWŽ¥0ÛŸ‰pŒÓñ—g*ϳ|T)ŠÅÓ ¨çX>Ðg Ym$Ïn˜(ÉÝ–jZ¼FCnï¿Ñ@$—˜Øw¢äú«by+I?Òi´¢y€ôèG Íó&FsgE(ULs…‘dŠæÌ6 ¦Qš‹ŒXÊc¹*%–‹t’õHî}Þ±<¿a¢$·V4+?H Û.…!P$·u”B7<çD-XË}XI±<æH=šûHŸw,Ïo˜Í¶MSÜãU6ñá +häY‘Ý ú}’É8ÂQÅïQC×xüÅíkßßò‹» d¹Þÿ9Üö^ø)~P^¡Ê ‚ + ƒMÏfl:}µï·Z -Þä0n¬Y|äÑ#Ì PÀÑx7" 8’ +© +9¦&I}è˜Q¥*èU‚Ît‚N>£‰Z+ÖQK£Žqïȸ¨¶¤,´ÕZ!¬jãúŸîfëMF¢Ê ;>¨h¦óó»W?M¤‹>©<B/Šøjuh #ókc¤qiwqçÒØô^v³›LH›nú£„ÌBT#Tq!ìAIˆ%ˆAÉìÚD)éúŠÅç-S, Â]'³Q†03)œt;ýëg.o9™q *“>ª”(™¼­¨ÇLè³K¹†»†»žÚ¹“ùþ;xÒY¡¥(”hÞu`F¬µ 4Âõnð>Ö¦'0¸ªã'\I@z¸Z-@âíÆÛaÿÒŸè +Ù–xÛÃAc×™Q¸8âRAé:wXJDM¸¶ã€#Ñ€›qzª*ܨR’Ûä}¶ @«`ÖõAŒ'¶‡Œf/Í°1'uV˜(vRæ.ÂÈI©ÐÛÑŸ“fdE°*/ `%%Eén +´rÓéà¦é¦ù6æ¦Ì]ÌU®¥¬{EpÆÕ\ÌÝÕ ¥\APU^ JÑRšî¤@+' €>ëu1=&JrwY—dÅ$ï^œCrió\­Hž£E°<–û°’´(ƒæH=šûHŸõ*Ç ¥¹»À«xÌŸw/ιeÑÝ2ÅããPÛAPyw-ú¨RByòv' Þ=Š>ÐçÊó&ÆqgE)YLòîÁ9$gILHžÊ!`y,÷a%…ò š õhî#}Þ¡<¿a¢4WaVœ±ˆÎÁ9,W*ve÷q‘GpQC?M¦44Ñ>´Z÷3Ò)U +Ê +wæ×0FMg¤üæ[û•U6¨4CÝ©+nf„_L;LMá7ƒžà*~àòùÉø)òù™]Å(A­Á‹Sa„ízvŒ¯8À”¥TðÈM¶Ÿîrn²…@äÑÓC×K‡ó³S¾Åúîp%àþzÀúƒîw¥-D¥‡ÿj¡çm +endstream +endobj +6546 0 obj << +/Type /Page +/Contents 6547 0 R +/Resources 6545 0 R +/MediaBox [0 0 612 792] +/Parent 6544 0 R +>> endobj +6548 0 obj << +/D [6546 0 R /XYZ 132.768 705.06 null] +>> endobj +6545 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6551 0 obj << +/Length 1570 +/Filter /FlateDecode +>> +stream +xÚÙnÛFð]_A /1{ðXºàø’Ö±k«E$hje‘H…¤| è¿wfgI“2+ÛÕËÎîÎÌÎ=C1çÆaÎûÑ»éèí©Ø‹CX¦ ‡KéE¡rÂ8ð˜;Ó¹óÙÂl<áŒ1÷p>Ïê¬È“Õx"ææE­+å˜+·X¿N?¾=å¼ËV(Oˆ5 "”ÞË‘ùªAHÆ"poË·Õ¢œÍõ¢ò–Lå…ªåùËO.}3Þ ˆP"Òèd:ú>ÂSæðŽÆÜ‹Yà¤ëÑç¯Ì™ÃåG‡y2VÎA];ÒTŽ„+çjôûˆõÌȆÌDž=U¬õx"Uà \C·^Úƒ\£Âwº¤íá˜ËÀýó²¢mZäu’åD“ÐÙÕCUë5ÁG«"ýF·¥®ÒdeÙ^ê1Ü› P-ç/,`G¿ýzq §£z™ÔhPeÂÁ7Y­ +#º7VîC±E rë‚æ:-uRiÚ]𺲒áaJ’!¸(õ÷­ÎS”è0“|Þ£Uî¦hí`È‹¼Ú®7õ˜»rtv·Ôù¸ÄCÅ`K='hQ”lÊ"ÕU•å7ȃõžë¬¢Õê;×O|¹ïtsf’RƒúnÌ™[Ðé:I˲ • @«Î·k]&u#Sý°ÑÃâƒL¥†€kMë¶2ÄËÚåàЊ¤ºEfÀ‚A»^P¨*æDË;4a^‡z¡“¨Ÿ åv‰zѯ M@=å±@¶4h9Q…ocœŽç&n³Ô¸^B `î-Šª-%-^€ÓÑ .žê5ñá…óœëeQéÁÇ„{—Áí¶&ÄdÈ=/³¦ÏÜ7­*‹Ñ†À@T6í © ò$Ù*¹^é¾;-,%”È8‚j†náP.¹oüÂÀ?BZP,Ç“ê4Æ]£Hìù¡ÕãosÆcC56>]˜LͳÛ'?ÓÂÞ pyD=dÞC~ÂÙï!‹ýœUYîçÌö¿ŸµìKìçöÅ÷ó†N×Cö3A_re°']Ù'þ!„GÒúGÛñº©ïˆÈ Tô$l76lKÚVº®©¬-RPd«ÅŸïEJô£k^™ì5÷¦Ï<•sÒpè{¥!'¤Û¶€mvÄÇmÙïl¾…V:µ ®³º‚D”‘o¦x“ÐÒô($ì<2Ϩ0T¦ÛD2“7T¦KÝ43Ìx,ìÂîŽë½-Ö6÷Ï™'fõ«í Úù†ìü +3¿×uSrÛWJ]o˼Úé éOßúp‚š+¡+MÄx×@û,búYYØ€Æ!®þ¢À©Ã‘ÒS‘ÿtíà@úÁ(øÌ0Úg1&†Ýi´ç S¡Ï°›úžlº)Új``Vž ve„ÐèÏËíð›<7++ ³r¸O:μ·£òÆ„iq*²ã‘‚©#]mç4ÈDîõ­ÔÐ0a¯h˜Pˆƒ…|N#ÕÕ(+þ‚ß >÷"É_«OEÅx"Á!—ýt¾[féâƾ-ön)¶wãá\#“õÇ«¥.5]àè…ë:ù†#™%¥"ÇÕF§Æ(ž.¶yZSu«*öøˆ‰ëŠHVEñm¨ü¬²ö9»G¸(;I”NÝàŒk•­7æÀÓ`]'9UI³Ï©J"INkëÊžŸXÉ68gW§—³Ã«³ÙÑùÙÅátÀ±ð”l=ÛØѳ¾à!¤£èëFŸJ¦5¡…î½ÍíÁOLyŒËWeLVÀ¬}?`€ÍÔ3&Z#4ãwµl¿`×Û4(þ–`‹A÷8'¼lüSÂŒØÝÆð$†lqL¸8¿œBT}8WØ'Ø=M¯ØJzô''‡8™ûä<$zÁwéƒú?Ž/Y—þìä̾¾äýéѧ©ìÊ  bÿ%~úp<¢ÃB +bqÚ6ÌÖă +Äð%#_ó—@óJ¾‚ïü bO6‚¾×yûMˆƒíÓå–€càÓÂÙ\ѲÐë(Û/ lSc¹“Uvm9\Ûñ丸¸¡/ç®Êÿ`©”q +endstream +endobj +6550 0 obj << +/Type /Page +/Contents 6551 0 R +/Resources 6549 0 R +/MediaBox [0 0 612 792] +/Parent 6544 0 R +>> endobj +6552 0 obj << +/D [6550 0 R /XYZ 132.768 705.06 null] +>> endobj +2696 0 obj << +/D [6550 0 R /XYZ 133.768 289.442 null] +>> endobj +833 0 obj << +/D [6550 0 R /XYZ 133.768 274.871 null] +>> endobj +6549 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6555 0 obj << +/Length 2546 +/Filter /FlateDecode +>> +stream +xÚYmoÛ8þž_áC?¬ Ô _ôZì.¶IÑÅí%ùrØ]²DÇBe)'É›ú~ýÍpF²ä*×ô>´¤èáÙyæ!# ¹øpööîìüJ‡‹D$!4w›…2FDa¼“@„‰ZÜå‹?<­…–Ë•’Rzy^tE]¥år¥éUug[ênš¥Š½z·üëî·ó+¥Æju,´N`Q§ðg™¬‰È{t©ïïæ¼Ý4÷¹Ý´b;£4ˆE:Ñ©Œ/”T½ˆ}:»¼;û÷ŽÊ…Y¬D"ƒE¶;ûã/¹ÈáÇßR˜$^<9ÑÝÂø ªpb¹¸=û癜£œ;Æ Ú´üÇ mј‘$Øàýïo¯nî/n¯ïß}ºþ|qÇÃ&ÃÈôòž¼Ôèì(/·J©+›¿†o¥½w4üØÔMºcé,­¨³o-ÏOwΉ Z_–Jzvf«*VB†Ãi~þtsw1³E£DœD½T^46ëÊ +.VF¡£p±RpØŸKÛ12ÁÍÃÒ*ð¾>6¶m!ÎZúíOÈ´lk©yF·µÔ)í¦£ŸÚ"ç±zCm +zª­X¢~´MÚÕM :‹T9ýöáÝ;y*Ê’z9¯‰k¡ rºù¦xØâáGHÕuq»tºðÑnë†E>ž¢NQµ]³Ï:²Ðl¨}¬a¿ëÒâî,(ïn;ç­!ô:.v>]]Ý^ÎÅMä HŽ—ǼxKþÑI( À'RpA~ƒA9õÐcØB ¯ôñ„q“¦p&ŒYÚZ1œ`[gýï9fçLL`7ñd•4u+GžÂ&ôºš>w)G¸û·:?@Ÿ0êl©›/ôEŠBˆ­ÝcÉó2p\—VOpñ™¯èxƘdzŒ9´Ó.6±uŒ + è4.üŠ¶³¡¾ +! +žÛ·•Í@cÚèóik+¨²rŸ;_¹/j!¡pJÿ $†Ý­æ‚¯™Ð8»zý±c”ðpþ33ÞðEη”n¨´­÷Mfû¤.m‹x ×4ZtܶÔæuÅò龫wiWdiYXh3 VRDqtL‹ÛÛËë·¿_ÞÜßÏ줎'¸ŠËöpŠ‰è'Þ[†1G"€ø:Øn\ìË­ñ¡‹¢ P~ô¾ ½´±4>èg±–ZÆÅfŸ_ðõdûi;»«›ÃŒêxX!øþÛ“1:l-óö¼íÚ™3Yõ’'h}D®£"ß»[Æ1ˆ&}]‰Ô\ÐïDfw¦‚DÇr]Tçõ¾›«0±Âä(vÜÐk‚³C½§Uwû¶£^»_wMšu´¼üª%çj MMÜ4@b¾ìn´®Ð15&Izà K½uš}!lrgi@±{„x]eÑ–aàác<ÖRY ³©Ë²FîóÄ¥‚¥#=ƒ ÀN?ÏÁ´`oCRu™ó´ï%7X7ä!ô)ß8~Ôóš¾unŠDoàøA\¬Iß+üÓ3z8)CnDÎ85‘qÛL N³ÛÚk—Êcßµ4âœçÄÉQØsø‰ö1E“Pn¹×¢àœ¥†"ÖÑE÷Ó2¼~]j¶à>'9$¡¢ã¶œeÈÕß‚{ZÚF1˜žmÓêÁÒXï˜ü h„8xjÒG&ûlK“,‰ »#,YYSóØ3às ¨à"ÊGø˜q7°PÌùÖ– CrW'¾w±é\HHÓ×kì[„^f“Ý,Q¾‰J^JD€ûÑ3LdXÖë ï²†sl˜¦PX…" OȤ£rÄ7˜‚¬9Â@MÌÚ¿ñ?„ôqZû4ûƺ{RÌBS.ø`üŠÆù€ —Õ¹í{{—vJÓb0Ä =çCåBÌ ÔŽNÁ@Y§¹³ÌiMy”´k M—®KV·¶Ý“µ¬ –ÅÛQ‡1“OE·ãR.q~𷟯ßÝÌA«&|™2óË¡"Á’ˆµŠ‡†H/ŒU E›)püœÂ ¯¨w*4bûë‚‹ šÐ. X0ª>~Š±Àɯ&rl‚­O„ú':áÂù2ח׬4Œ{¥ß˜3`#Ö+,Ñ£mÝß\~¸ÿŒjœúasP©€NvX;’£¹ïßßL¦¾&ÝöùÖ4ÒÂaþÊ–­}n‰Ö!¥Yø®Qå=·ú_ðý¯¥B¶Œ%îÿ”wÐ! âg`#ô…ÔÉ´ÖŸgëâ¼¥þ7GK”ˆÐ˜çÊ¿ö]¸c~~u¨ú*ö'7 &ïFF"öOP¥÷ðÌv ÝáßÙÙŸ1Ú±8£B"#ÐäKÅÈë†)åqœn±04æþ4âê¢"O“X”êüÒ×;swžð_ Žvß‚Q3&s5аפ}l‡H‡âô|FhÙßY€Œ|t7ð€j¨DkªŸð‰È»Æ 8²B¼åúË7‘§2¥‚ÀH†ã úठ+øÒ×(*¿Ø•B@Œ Eý\…¬OïªP3 ÑGåƒÈ}Ñ”|ÃmÓÍü}­Æ—"¡ø(SSûÍ+ÍŒƒ¢bûJ©ÑÇKX [^©à…è ±ç¬€–¸“†Ì_úÍ ×ÆW­ú‰í£ÍŠ”?&Jô€Ý„ú¤YŒÑš®;ØQ7ο÷×76ÊFÍŽb4Š¿È‘P*ßêP©üp0À¥Nòã/æ’úTܱ×ÿá +ñ€R ““ë”3 k£3˜G™=î\=¯\äCfК Aà€%¶æÜ  e´·§ÀÊ|…y f,©¹õÖ#bïZ:êvìKÔÈ5-ëkgßµúk¡K¡®æœË²!åèjyzo÷ÇŒv‡ìr  4ùd0zWq¸0{qhŽŒyù»V48ø¿pÆC» %DãaÈ#g»’'fÊœfhŽcÞý )cò CuÕ£Á¼)qðrKFoW¿üBzÑ~8A ª›#øt‡ÝÖVH¯båO¹× Eø=øæa€É˜|IJob÷äl’áÉyú’x†¤Ø×E•öïŸÆ=×ÎÝ-ð}\ÿÐ  4Ç?#PÆž* Et|Æþ¾[” …å"h ú'ïíþÓÜÁ€oðÆ€Í3ô'ÒWSÃN0g_"d0°&ŽN\…r:ˆôÆ÷ùâ6À"¶;îÈuŽ5>\鄉óû…0‚“˜Úû²KÄ”Õô™ q5}¨‡1_7ì#RO÷Ⲭîï=Ä1ÆÁ?û'‡$?òþïa!dDÑè9qeŽÍþ`+ü ¨½Ûî©óÞfÔñ©Qò6oµ7î…ëù/^Ky«²X³†5ÃËûúëáÁV§&ÿµ‹‹ +endstream +endobj +6554 0 obj << +/Type /Page +/Contents 6555 0 R +/Resources 6553 0 R +/MediaBox [0 0 612 792] +/Parent 6544 0 R +>> endobj +6556 0 obj << +/D [6554 0 R /XYZ 132.768 705.06 null] +>> endobj +6202 0 obj << +/D [6554 0 R /XYZ 133.768 117.096 null] +>> endobj +6553 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6566 0 obj << +/Length 2216 +/Filter /FlateDecode +>> +stream +xÚX_“Û6ßOá§y&æR¤¨?›ËÝl’K¦¦M“m;7I§#K´­‹-¹’¼›Ü§?€µ’WÉNïI‚ þR.¶ ¹x}ñüæâò•Š™ÈbøÜl¡Ö"‰ÓEœgáâ¦\|”*\þ~óýå«0 k%t’&'õw’˜¨KD ùR™à¶½ì6í¥Ýtb7£Ó¤"N‡)ÿxLçÕr¥C¼?Ú¢Ê÷Ë•22؜ꢯššþÚe˜v[u½m»å*”™TŠ j¾ø×ÍÅŸ!(“‹p´÷PdÒ,ŠÃŇß墄ÁïRè,]Ü9ÑÃBG âÄýâýÅÏòÌ¡!h0FM Ò*T‰ˆ V*âu¿mb¤ ^Ú>¯ö¶$/mW´ÕÑ-AúäHŸœ*úmgÁ0Ë‚»%Ú´ŸªzËŒªßu¨Š¶)šºo›ýÌ| I`çõ24ÁêóîSGä©;åû=óa^»£Ÿf30²a±ª†ý×à"°m$‡’G ÛÙÙ6ßãÊ‘4`&ø5‰‹ë晎3’%F¿Ë{¢òÖ"apñÚË0èÑeÈé/l‰(­K‡ª°b¹ŠSÜø[÷UËôw?Í™›—ek;\>ÔAwÌ ”UP1ë—Ìœ“Á-®áË×{K9çžàI¤D¢CŸX{hÚ/«C~<ºMÀ4²æ,Ü©&Ñ~Ö’¬n+ÊÒ êÉ’Bé†ÖÞ´¢€=xÕ§…{])¥…†c3Ýòݯ¼•Þ¼ø…ˆªîúöä¾ó2."0Fìb_ìpñ~Ý´Yà•yŸ—ö¾ŒM»0Z¯0 \NàhÓ±úëe¨Mðë»Ib²ø>ÀsŠaÓÒÀîۺ좓ILÉÁ”LH#‰»u¦ƒÀ ŽíŠívô}’LõÒ¡sõ\rÁ»7…=ª4tJ¥2Ÿ•$„ +•!él@bÝô}s Išƒ¸7ƒ–ÇAÏÛl{‹ûw¨œ úEJHÿ‚W§,a} ‹b +Ìì`ìÖN>~”F^ýÉAd”ïß]¿!0sgæ¨àpS#Ì ÀÚ$šL€a %2¦¡ÄH½ü v}ÞöˆÜ@ÏÜæ`çÌïÊ?J© +–÷ÄŸÒm]º<ÆöŒ`¶ú«ˆô¹¬Œf|ËGÚ¯öš"8‘–eÜÑEbÐgð€,ç øNüOÊržUmîW!`Ç¿;ÛòêÛ}³vÀ>{ Ð)µ/Bª¶ÂP±söÕ',1Öû¤ê®\ëàK¾ÿðièM²D†\È•IxŒ/öö§w7×ÌPûžÑG~Öú)!TX¥‹U&¢˜ƒv‚´u¶¡l±Ë[¢6M3Ñòö»¯ŸÎ (éÌÀˆD˜4!¥\B¨'‡#”ß–þî*†Èß5MÇ2ý½pKçFàHŒÎþy²îüºI }·¶†ŠÖ3w.駡öoU"—Œ›³d|x(Ööþ0þ‹¹¥Ë 8×}¾u¬Ä-ƒCT2ÉP˜<(Z0v–(UÕ4ô‚>ǶٶùÁv^§+"’K*Ï)½º9O ›¾×†`Žç7m+ËÐg0}ó‚>>Ö¬€PqìÕ¡èÚ}ÞƒÌaêF6êǦwPéK¢J5Á‹ƒA`®@"u8u,°öSx»5ýÞíˆò0@„‡cŽ"à‡™P²vÌ ãÕºê™_ÜfÓˆ°"°b5çÒ!d°]XÝ•r = +!½i±è hG%‡Ü(Ž ÏGw:¡z‰œ¿®KlOÇž~±‹äóEs‡ Ws­yo-Ã^UÚ-ßYÞ½¾X|p1ûm·dìÀæD`/5x ƒÎ;;LÝý”àß­õ³Ú¼ÛÙòŸð+Å„q~ "ôCŒ}ïþkb3ª]Gw™'8'P§Î>(F$o‹¼÷°Ý­«Ëb]ñéÈ RØ[6¹Pa c¤È°ë¡>Jæ¾rˆÁneK§’„ü +LË„K$Š½Í[š?m(TË + ‘0 +·UiyÞm•Ÿ-Õ¾.ó–Ç_Ì¥ ÙÇxÁ©Ž'8Ât[`–®o1 !ò;ç3 Èb”ôôbÓñhËò5zØ}So] ++×Ï ÆÓ1iŒÀ£jÛùaçWÖe$ƒ'`·ë*¨òÚƒºÏP£ÂzÍ Žséí š<^ÄBÁU›¯ ÿ™)‰p‰‡‹ð³oŸ¨?žÿŠvzû¦yï$—n WûIµÁÛÊÕ×À3 îÀ -XÆ2¸yþ„6÷öy8³`ðtÔZÂb5쎧xs^1øb’<æ•ô¯yå«F’Gb¸À…æ¼þR[ åšfêcn–/kÀžLBVTÜ€˜Pµ£®šðæQVE£T„u]rB=bäÈ4G·ê¿.{á—Ú¤i@4÷«´åj.‰Ý‹ -yq \ +_í¶9B Ù[´Akj‹q„>З—M{y×V=+iŽØ(Ñq©ª<Ñ*ëÄ#,£àßËß=N4îð~˜€„…3×Ppa "l´Ÿ¦íÖÝ®*v_¯c¼e¿áŽ3Û„ýàÛiLÞª³œóÅ£È0›÷(鈿=›ËüÈ@3=<#|”ZÎ$ÿä=—ÿjþpnøtö-Ìh¡Bµ€ë½3Å›¦<íí7kT‹Hcû®Dìï•2g÷™ƒjàVp]–æ”ÀƒäðEÝu8ß^³2%=|<÷U:z{”¿çF"5ÑäéñÁÕiöŒIô_yƒõo¯1ÜÁt:~zM3¡½ÿ^󥤜Þuov'ÿ É7äˆ'y¥ôU˜ÒŸ’’)÷ áÛh~…]ê$Xí«u1-V/›Ï_à.4Ù:lùØ‹ß +endstream +endobj +6565 0 obj << +/Type /Page +/Contents 6566 0 R +/Resources 6564 0 R +/MediaBox [0 0 612 792] +/Parent 6544 0 R +/Annots [ 6557 0 R 6558 0 R 6559 0 R 6560 0 R 6561 0 R 6562 0 R ] +>> endobj +6557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184 346.901 422.652 357.805] +/A << /S /GoTo /D (FAQ_faq_16bitio) >> +>> endobj +6558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [279.917 249.466 317.884 261.421] +/A << /S /GoTo /D (group__avr__sfr_g11643f271076024c395a93800b3d9546) >> +>> endobj +6559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.804 231.841 224.716 243.796] +/A << /S /GoTo /D (group__deprecated__items_g014ef751e83f97569c06f3cdd888f3f7) >> +>> endobj +6560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [301.396 231.841 346.008 243.796] +/A << /S /GoTo /D (group__avr__sfr_g11643f271076024c395a93800b3d9546) >> +>> endobj +6561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [289.301 173.39 327.268 183.92] +/A << /S /GoTo /D (group__avr__sfr_g11643f271076024c395a93800b3d9546) >> +>> endobj +6562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 119.133 320.512 129.06] +/A << /S /GoTo /D (group__avr__sfr__notes) >> +>> endobj +6567 0 obj << +/D [6565 0 R /XYZ 132.768 705.06 null] +>> endobj +837 0 obj << +/D [6565 0 R /XYZ 133.768 667.198 null] +>> endobj +841 0 obj << +/D [6565 0 R /XYZ 133.768 648.084 null] +>> endobj +6568 0 obj << +/D [6565 0 R /XYZ 133.768 137.13 null] +>> endobj +6564 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F52 3939 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6576 0 obj << +/Length 1262 +/Filter /FlateDecode +>> +stream +xÚ½XmoÛ6þî_¡¡À É¢‚¢²6ÅúaÃcÆ"Ó±YÊô’4+úßwIYŠåxIÝ}:Š:yÏ=w< ;7vÞÏÎ泓sÊÅÄ|åÆPÄ…Ããñ˜8ó¥séRŠ(ñ>Í?œœ2Pf±(KÖk­12¡(è†î]uR¯ªÅR®j´ž° +ÄE¿äÍ!›§žÏv/neš%¹çÓ»«¶H›¬,ôSåáÊ›¬ndU{>Á1¦.å\Yž½›Ïþž0†2ð ‡Nº™]~ÂÎ^~p0b±pî;ÕÃP%jaî\Ì~ŸáÀ†¢,Ô§>Ë}¸MRd·mžtÇU²†À +Zá(`±ãS8µ‘+JÃÑçÒ1v_-åÆ´æ¥r­º1>~ìÔÔÖ‹³?­v¯pˆ¯³ÑÇSS1 +ÖÞF~tâÅBX•åÎúnT}BŠ#‰BÆô²_~Û¡ž¹þÙQ„#,²zQËf +G ¹`÷§þ¸cTçgÍßÝíÛ=ž ж»`…¤etL_Ò\&Õ ¼ùá….íw‹Å­¼,omÑdùâÅÑZ–Z~Ñâ«÷ë,—[†øíµ÷ÿ{û’x>Ç_@ó ·;ynq˜ç݃¨ªÎàî[ëmgîm™¶Y4}†+Ôh€X#b–oÑš`ÝÓu0Œ8Ý©kü9u­‡z[ˆÀMXa¢€»C€1UŠj®ØWY‘æíÎÌÁ…× \“Y‰Öo&*« HPXõ’˜å?4;„®¬šZ»™<ª•E»¹¶4+šr¬õÐÄîÔ=ä­D ê(űö"ŽL-yúdpmáê5ó5l˘€czÄmô¸^g+3Ìj%#÷VV«²ÚÈ¥Ñ~ÐÓ]ž–›[àh¥§¯éZ¿BOfE­Á1Óz¶’u›ÛÍ:T¬]C6†&EÓr °t=Ç|ÝÖ†ò \ð2ƒ}aЭÚÂo²y[ª™(­e²´É%M³ÒÖYqsðÞV¬Û-&—.šÌ7è—HùëÆC§3fª˜ÅT¥·*F߯øïIKw•-GI–¹aWÖ*)8Qà«ðé•*8ÁÖçHpns¾×mD1”³¾td…¶×50 sÓÀìn†pʾ¨(¼nPkú‡¡«H0 ¥}sŸåªæ@AÙ´•9PQþ?²*õS¶Ò²Ëë¿~Swì‡j­]a’À´¯zÓmÅOŠå¨”`“ +«>;"›$pLqOÞˆ=I×Á]ôY¿µïú%Ç&iH +{H +ù-rTD#Š‚µŽ¢ Qr“ƒدµÝ.Æ~–›ÊÍÍnWÃM'Z(öÄf> endobj +6563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 632.526 210.311 643.056] +/A << /S /GoTo /D (group__avr__sfr_g11643f271076024c395a93800b3d9546) >> +>> endobj +6569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 579.063 229.688 589.594] +/A << /S /GoTo /D (group__avr__sfr_g3b034cb1d74b9addc7599bd6ea6bd0d9) >> +>> endobj +6570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 566.847 237.977 577.377] +/A << /S /GoTo /D (group__avr__sfr_gd188fb0fbfd923bdb01294072367d024) >> +>> endobj +6571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 554.257 275.635 565.161] +/A << /S /GoTo /D (group__avr__sfr_gaf6857fa882da35f8685e2001e5c3bbe) >> +>> endobj +6572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 542.041 283.924 552.945] +/A << /S /GoTo /D (group__avr__sfr_gbf06c3d703cf5adc691c0be5d72e7839) >> +>> endobj +6573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.43 388.846 394.877 399.75] +/A << /S /GoTo /D (group__avr__sfr_g11643f271076024c395a93800b3d9546) >> +>> endobj +6577 0 obj << +/D [6575 0 R /XYZ 132.768 705.06 null] +>> endobj +6578 0 obj << +/D [6575 0 R /XYZ 133.768 648.488 null] +>> endobj +6579 0 obj << +/D [6575 0 R /XYZ 133.768 595.025 null] +>> endobj +845 0 obj << +/D [6575 0 R /XYZ 133.768 529.128 null] +>> endobj +3000 0 obj << +/D [6575 0 R /XYZ 133.768 506.817 null] +>> endobj +6580 0 obj << +/D [6575 0 R /XYZ 133.768 506.817 null] +>> endobj +6581 0 obj << +/D [6575 0 R /XYZ 133.768 383.556 null] +>> endobj +6582 0 obj << +/D [6575 0 R /XYZ 133.768 369.647 null] +>> endobj +6583 0 obj << +/D [6575 0 R /XYZ 251.007 296.893 null] +>> endobj +6584 0 obj << +/D [6575 0 R /XYZ 133.768 281.544 null] +>> endobj +6585 0 obj << +/D [6575 0 R /XYZ 250.579 208.073 null] +>> endobj +6586 0 obj << +/D [6575 0 R /XYZ 133.768 194.064 null] +>> endobj +6587 0 obj << +/D [6575 0 R /XYZ 318.434 119.253 null] +>> endobj +6574 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6593 0 obj << +/Length 1816 +/Filter /FlateDecode +>> +stream +xÚµkoÜ6ò»…€~‘€,ǨGè5NÑàîš&Î݇¶0d‰ëª•¶zÔ5ýïáZÉ^7´÷‰Ôpf8¾¹øÇÕÅó72 r–'°\m¡K“,HrÍ’\WUðC(%“2úéêíó7B,•d*Í“ÅzE+v)K㡈¤íŸ1¶;Á0Ö°M=þ—O0Ì<‹h£ßE’‡]»;ÓG©yø¯¢-nÍÞ´#}mE›x·Ãé*3DÐ2e’âe—W¿\àϱ°…`9×A¹¿øá'Tpø6àLåYpgQ÷ŠU a|¸øþ‚ÚÀ:eR飓LGÁ9¿¨ÌœËÖÀwž…M×®§v¬›ë›z¼®‡ëÁŒ?r͇må2|mb‘†p@A4UGëÿhù–»]Ý8¦H︕)ú5?É3ÏÏòDãx¥üúüRà<åÂ:¥™ 6*e@@z}Q·e3UpcZ½*ÀùuÇvÞ±|a—#—)ÓYJäÿ2p]í|h @[ŒX€G:f™Š}pÌ8«k$g±T§n‰ß·ßÑÚ›Hèð¶F¤h'Ò£±>yÁ@ŒÁ_lŽfᤵ´Z -˜ˆÑl1^ïE¾Ú]e,ÓúqÂ-Pr&xü§·f :‰Dšº,ŽcG½©¦Ò¬ˆ…u2ïöô?lP¬`“&,… ÞP<ÄWÅpÛ¡®L_Ü4÷Q¢Cmt®Â¯"¡tøŸ÷„VÅÈ«K¬°–ª°äqxcp˜FÔ-Jj‰ê-RmMocA…âí1tìeqøÞlQtÄ â؛췒»*ÆbØãbrÛ¹`Et»©lT >ÿ°`{ëpºG¸^+ú¾ï&꽃LP³Y”%Ò rµ3ˆ¤´&l¥¨ +–Ö°gC§û¢ì»}‡‡¿‚½+:ÅŠ…'㮲3EePl»Åo+Ç bæÞq´fÇãb©Ý”',é\!ef]žP\¢Zêý¡1ÃH_wXŠ{üH©ÐÚÖÎf-É„çƒqT£gž®#¡ë˜¯ï¦Ý4 +:ëqÆ)¡Xv¬ÂpÁµ‹mòXµkäŒMÐ÷»ù™ÆL§ól‚ˆ¶1e â ,3Œü­Õ}jl®Á±UNê +]ƒ§Àî(*,ÚÎm¾~÷Ñ8Ög°© oÝ`žF—¸$âJ7 ýÊÃr¹óqÆòéÊŸm ‘Ч Åºó~j[°.Zæ•j*舢¶Ž ²l ‘¯x2Ûÿ,û +–ª¹Ax%B@xQ˜sJ RSf9ãê¡žÓØí!yKç +jºÃƒ Ž­È´PÁÌ/½¨{ž‚’É^°¯ow#mËbBƒk°J_”Æ»¶ª±^;°á:t{‡1ÔÐ`,YìÆ™Œ¶ß@ñªuœj²µ Úhmq”Âu_´õaòíXù©Žå·>Ïpʸ¤~SRÇÒ¥-‚½%†Éõ‡î>mv¡á‘§?9È¡s²ƒ–ÑLúb«ÿ´»›Õ0@ߤý­{œ¾w5b!]"áq¬×QAZÆŢĬÄÎK²¹d?;ï΄É<^ßè-‡QÞ¹ëi¬ÎGÃ39ÏŽâ@Ž¦Ö‘gÉÏ-Òµ`åa:ç✬բÁ;ßõ!™æÐO[„øqw'4[Âf„1h¢næ> ™^‚'úºs¸¶úQ²Ä’ñ‡v‹Ÿ±6¹ÂQÎã¥}g`õéÜ<»‡>V߈æbåá…ÛÝÙîn;FÀåUOŽºÛ¾Ûªfýڬɢ©-:×_oñg¶@wqÙÔ«Þ7«yòRžÁhó9¿üo£쥲åo#}”âÓÂ87ú^Ó¹ŸW»É?‘KÚÄ´þBª"£/ɹÛÙW—¹_‘JÃMSß87n¤zÝývkÚ‡*ÿ,\8 +endstream +endobj +6592 0 obj << +/Type /Page +/Contents 6593 0 R +/Resources 6591 0 R +/MediaBox [0 0 612 792] +/Parent 6598 0 R +/Annots [ 6588 0 R 6589 0 R 6597 0 R 6590 0 R ] +>> endobj +6588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.66 230.451 430.339 241.355] +/A << /S /GoTo /D (group__avr__sleep_g475174a7aa4eda03dfa7a4483e400a9e) >> +>> endobj +6589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.64 230.451 478.476 241.355] +/A << /S /GoTo /D (group__avr__sleep_geae22433a78fd8d50f915fb68c416efd) >> +>> endobj +6597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 218.496 188.563 229.4] +/A << /S /GoTo /D (group__avr__sleep_geae22433a78fd8d50f915fb68c416efd) >> +>> endobj +6590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.086 218.496 276.832 229.4] +/A << /S /GoTo /D (group__avr__sleep_g157b2578d95309c197b739f812938d94) >> +>> endobj +6594 0 obj << +/D [6592 0 R /XYZ 132.768 705.06 null] +>> endobj +6595 0 obj << +/D [6592 0 R /XYZ 133.768 667.198 null] +>> endobj +6596 0 obj << +/D [6592 0 R /XYZ 313.781 592.597 null] +>> endobj +849 0 obj << +/D [6592 0 R /XYZ 133.768 575.87 null] +>> endobj +853 0 obj << +/D [6592 0 R /XYZ 133.768 549.258 null] +>> endobj +6591 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6607 0 obj << +/Length 1380 +/Filter /FlateDecode +>> +stream +xÚÍWKÛ6¾ûWèEj†Q"Ó @ÛÝMôÖ¾%A K´M@–=²Yýï¾¼’WÝ$M “"g†3ß¼Hí#½Xü²Y<¹¡i$‘LaØì"ÂÊR¥’£T’hSFobJeËw›WOn3ŠX&A’¥zæ(&â2”%g‚|Iyü±}òqIp¬ÚN75:̈å ˜žÿ‹Tž.W äyáK–Å«Jo‹åŠrŽr Ǽh—DÄM·\"EÓT˜#כŇ©8"#’˜GÅqñæŽJØ|aĤˆn-é1b ÃXEëÅ <Æ–1PVf˜XlSŠ’”D)ÏOîÔ×»å*Å8~‹9z_4u©{PVˆÑ ¤­$0&Žá/»&‡»îu•R§÷ªÎ·•2 ûO3üÒ³Û1ÅixT†%*u÷ð°ÕCÍþþ-ÀÃxäá~ Æ q‘9žÍAƒ×(¥ÀýaPu¡Ì‰UÝ ­ò[yíó¾9ê­õªëÝj³s‡_F1Ï¢„‡€šzaF9ñ)“@~«ûƒ;F×½jÛáÔwî°­ÒõÞmT+MD°Œ úä!c‰ ±Œ_B@ÐDÄýA¹É½*öÓbãQõ?º™õ†_lJÏu««ÊͶv%‹O­:å­*-— Êûƒ‚i2veýûõõë,L àY Òu×·Cp‹À ‚°¤ÞÚ4 fTc$±ª™±+ª÷©GUê¼WÕY`q¾dÝ^^Ïy0Åeç’°¾~9£*U¸œQ€ç˜Æ?wî ¼9üŒ±­Þz¯…UÈšHE˜eS‡ÎcJ8âŸÕ‘Žà4±$Þy›CpY|‹ûÆ­[ø`TKÂãOæOCï¨Ìî®i=…É +ÃyQ·\4Cå©{°n6%8†a¼à‰‚&É<­³Ü›¢Œ_˜h*±¶Ù ×"ÌZ•WÆ£f¾õ»§¡wc“m0£™¢õ‚HÌÍP[×t¶x‡¢{'IQ נ¥¡½¥”Ox¢7à~Ó*(Ž]ú=ÓÚ½oZª³z¾Ê^J1û¦¨I¡€ßÓ€ „Täû©â‹ðÿBè_ªÇ…sWÁSc›kü QcP$8Ü…ÉUS GU÷ù¹Ö`S[ƒëƘÏnoÆŽ }G’K ñ4üH†Rêu{=ØJÀCµH'qo6 Õ7óõÙLM}¶å&…næ ××NÀV{‘Ç¡ó³­—Ý©ó‚ÉéÔn“¤Œ¸*nH³ÍV[U4ÇU@fœ [©ÊiÖ•Ê[7Õ>!m‰»5 ämÙ=–‘Éqúâ!Zÿ#ê¿Þ«éÚ#L |AZè„ðy¾_ptÿ6°GlðÉÿ-C™ô01-˜°¡k·Œ%6 Âæ·ÆPß~NFçÆmÛ ¶i¢&ÝìfOp³R @:ÏRÏE;V€€“*à‡iá¾½³£*UØVDEîHBŒXUÿÞái˜Â]Ðíí|ªƒÉ MâµRæ,.ó>÷bÊä†åjÚ9eïšÁ‡Ìeg2 îQ`û¤#és]¹h¿ôÜZõß!ôœj4Ä\ÃõvôÊ‚ýHpþð™5"‘p§L¾à5œ¦HÊôáKëB0ÿæ§Ö\Á‡bÓ‡5›+ö•õE¨TWª+Z} +åþÜcî;ÿä­• LÀµîS‚ 'ý]Õ`Ô¼·žå¡€Îó‰ÌÙ§ 4÷á¯y†Ç5€œ11~\ ‰X¸Ž¼Pµjó>˜ÀÛ†`·Ç7qÁO){J„û¢ûÙÎ8%ô¼‡¶w¡w~ºÛ«úÒä“Ë+ +endstream +endobj +6606 0 obj << +/Type /Page +/Contents 6607 0 R +/Resources 6605 0 R +/MediaBox [0 0 612 792] +/Parent 6598 0 R +/Annots [ 6602 0 R 6603 0 R 6604 0 R ] +>> endobj +6602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 457.563 231.133 468.467] +/A << /S /GoTo /D (group__avr__sleep_g475174a7aa4eda03dfa7a4483e400a9e) >> +>> endobj +6603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 444.612 233.354 455.516] +/A << /S /GoTo /D (group__avr__sleep_geae22433a78fd8d50f915fb68c416efd) >> +>> endobj +6604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 431.661 219.516 442.564] +/A << /S /GoTo /D (group__avr__sleep_g157b2578d95309c197b739f812938d94) >> +>> endobj +6608 0 obj << +/D [6606 0 R /XYZ 132.768 705.06 null] +>> endobj +6609 0 obj << +/D [6606 0 R /XYZ 133.768 476.537 null] +>> endobj +857 0 obj << +/D [6606 0 R /XYZ 133.768 418.086 null] +>> endobj +6601 0 obj << +/D [6606 0 R /XYZ 133.768 395.775 null] +>> endobj +6610 0 obj << +/D [6606 0 R /XYZ 133.768 395.775 null] +>> endobj +6600 0 obj << +/D [6606 0 R /XYZ 255.441 348.69 null] +>> endobj +6611 0 obj << +/D [6606 0 R /XYZ 133.768 334.02 null] +>> endobj +6599 0 obj << +/D [6606 0 R /XYZ 260.81 298.871 null] +>> endobj +6612 0 obj << +/D [6606 0 R /XYZ 133.768 282.144 null] +>> endobj +6613 0 obj << +/D [6606 0 R /XYZ 255.052 207.518 null] +>> endobj +861 0 obj << +/D [6606 0 R /XYZ 133.768 190.79 null] +>> endobj +865 0 obj << +/D [6606 0 R /XYZ 133.768 166.287 null] +>> endobj +6605 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6625 0 obj << +/Length 1374 +/Filter /FlateDecode +>> +stream +xÚ½XmoÛ6þî_!t_$ fù"ꥤM$HÒÍñ + maÈk“%W’›åßïN¤dÉ‘ƒdh“1u$Ï=¼{DŠZ·µN'ïæ“7¸g…$ôàg~c1!ˆï–Jâ…Ìš'Ög›sÂ…óu~þæc½Á‚á‡à©õ«1pçßíD—ö÷òÍw‡Q[•UZäd5âVJˆvÒo¼퀷ÎT€?ãܾ=ÍÒeìL¹¤vo)mXGqé°À.*gÊX¸6÷B\br2Ÿ|›0ðJ-Ö£‘J+^O>¥Vç%" ¬»fèÚ. e81³®'Lè€[:Æ­ôO©áÏW)@á<´W*JT‰íÀþB)Ï”¶' +ŸrUé.Œ 0SêUTkk\äu”æÚ QË]ÔЛo×KxÖ½QžhkU—i~[µ«Tq™.Á ;ë•BZ à‰„ÒÀ·e©òºcWØ-nô/lÅÍ€ÿÍfΕO<C€"àC7hÐpu;­+•Ýèö2ªÒ8ʲ{ý1WiUWø$šµÑZ¯JeoR«ª5#UØŠJÓ]©MTFµJŒwã6‹;)jL4ß·k‡ÙˆœC¿ Ü1XÞ`v©ý !olzÖi~pÞ èéF8LäÔº›$¥Mœ© ùüùj]&z|CaVlÖ¸9}üžÆßã7Ü÷ Å$½[¥ñ +}{[)mrm(’DZü`ÓP`&{݇ ƒt.év©6¥ªHTë `f”$)>éÝÃQ· +vn„ií’(­Ñ­¸HL Aÿ——ÇÇäÛf£òD%Ò Lø²+*«ß¥Y¦­QVÚ¶TÚ’æq¶Mš´€'H‹‡Å\Fé¤o¢¥£¼52;ânE „i¡°½e\ŸœíK!=$°^àAÄMªc”(ѽãIL8—zö¦(ëhÙ²P+]>fŒûnX@§œJÂ|9Üœt½Éæ²ãriƒÛþ &…âðþX~¼è8×"€¸›p]Ð'Ütˆ‰Úin†4Y‡–Ý4MhŽ¤5…6—jâÛðÆÜHʆ¼-£ø=·Lªi\¬7PfDãA*˨¼×ÊE˦L±û3šb>7Å‚¦»•Ê‡ýŽ ÅÑïgPT‚Û«(Ñ¥B‡Ø‚"V V¾™¨´­T7 +Þ±jF {‰¢¿­uç6o_^Æ×{ý³A‰(@›«FYÀÒ½Õp™m]¬-õ#a$cñn;•@Nð—’‘#x€Ó + (wïÔav sÇ#®¡8ñ<³ôÎå`Žõy*)µi=é0 ±-GÒþ4[\œ½{¿øt2»>ûxµ¸žÏήN‹}×8ç#äÕ° áÀÿ©°Fñ0êQ÷Ï‹q<ì§à9ÆW&˜³ç'“Å) @|Q¾†øÆpµ°^–·Ë£ó³»ø’ü\ž]Âá½$³“Og‡ÛÑi+zÈÞ}ˆp¸APÀÒj‰VŸã"Þ®»³/îo¶þdÂÌô](;Èn?µÿ‘Ê&³FriO´öN?W¦D%ÕSÍz‡öîàUªLEUïö˜ )éHyNT]=TðãÑ]·§N˜—¥µ*_,Nñ´8ÛÜ•Üã]´oj}WÕ·‹±›VÿRðdÐîA›jÝÕçs@›ÛÂ-ŸºWÚƒb~*î½{×C´ZŒ~(â‹ç|&h?½x$ôá€Úû<„D´ÇS•+sEmRØ@›¯¶FmT܆kÞÍo¹xË‚PèÖ ×îËø§’å}+`ÿÞߪ|?äÿ¯4„# +endstream +endobj +6624 0 obj << +/Type /Page +/Contents 6625 0 R +/Resources 6623 0 R +/MediaBox [0 0 612 792] +/Parent 6598 0 R +/Annots [ 6614 0 R 6615 0 R 6616 0 R 6617 0 R 6618 0 R 6619 0 R 6620 0 R 6621 0 R 6622 0 R ] +>> endobj +6614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.377 571.013 332.19 581.917] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.514 559.058 272.327 569.962] +/A << /S /GoTo /D (io_8h) >> +>> endobj +6616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 469.309 347.884 479.236] +/A << /S /GoTo /D (group__avr__version_gace584c6d368436814b4fe12d71230f9) >> +>> endobj +6617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 456.357 306.928 466.285] +/A << /S /GoTo /D (group__avr__version_g161e98ee1c31a16eeb71fc87dc73526f) >> +>> endobj +6618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 443.406 329.773 453.334] +/A << /S /GoTo /D (group__avr__version_gdecde61fc0ef6e31f4dd6c732913aba8) >> +>> endobj +6619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 430.455 283.835 440.382] +/A << /S /GoTo /D (group__avr__version_g09c3581176726e46963330ae12270bf6) >> +>> endobj +6620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 417.503 297.523 427.431] +/A << /S /GoTo /D (group__avr__version_g8a657f9b659536d9c0c3c03ca441bb00) >> +>> endobj +6621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 404.552 296.966 414.479] +/A << /S /GoTo /D (group__avr__version_gaabd42be463ab59be357639b50bd722c) >> +>> endobj +6622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 391.6 310.246 401.528] +/A << /S /GoTo /D (group__avr__version_g45476ad3a5db9be5a45d098bb1b093b1) >> +>> endobj +6626 0 obj << +/D [6624 0 R /XYZ 132.768 705.06 null] +>> endobj +6627 0 obj << +/D [6624 0 R /XYZ 133.768 487.306 null] +>> endobj +869 0 obj << +/D [6624 0 R /XYZ 133.768 378.026 null] +>> endobj +6628 0 obj << +/D [6624 0 R /XYZ 133.768 354.738 null] +>> endobj +6629 0 obj << +/D [6624 0 R /XYZ 133.768 354.738 null] +>> endobj +6630 0 obj << +/D [6624 0 R /XYZ 315.016 319.609 null] +>> endobj +6631 0 obj << +/D [6624 0 R /XYZ 133.768 302.882 null] +>> endobj +6632 0 obj << +/D [6624 0 R /XYZ 323.056 269.79 null] +>> endobj +6633 0 obj << +/D [6624 0 R /XYZ 133.768 253.063 null] +>> endobj +6634 0 obj << +/D [6624 0 R /XYZ 259.008 219.971 null] +>> endobj +6635 0 obj << +/D [6624 0 R /XYZ 133.768 203.244 null] +>> endobj +6636 0 obj << +/D [6624 0 R /XYZ 259.566 170.152 null] +>> endobj +6637 0 obj << +/D [6624 0 R /XYZ 133.768 153.425 null] +>> endobj +6638 0 obj << +/D [6624 0 R /XYZ 235.944 120.333 null] +>> endobj +6623 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6642 0 obj << +/Length 1812 +/Filter /FlateDecode +>> +stream +xÚµXY5~ß_Ñ +/3R¦c÷Ý@B¢EDv€@#o·gƤÁíÞÍŠ?O•Ëž³³#Ûår¹ÎÏÕÂMÀ‚7W_.¯^¼Ž²  Ë †å:àqæYdef%–uðË,ŠÂ(™ÿ¶üæÅkΘã(Œó$Y®O‰ãD\æÉžAÌ£tv¯_<Ô&ÜNˆKXX™çþü#â +Ïp=_ÄœÍ~žgéL˜j[÷›ù"JŲ̀VjšnEW7ªƒ Ëhå Å^}½¼ú㊃$ð#›yX²4¨Ú«_~cA ›ß,ŒË"x°¬m'ÀÊñ`Ü^ýpÅþÞ‘iFqzpdFaú0ÆfŸÔòWÆ¢N’¶«Õsž¤³ŸÞ­¾½ùò«ÕO_¿»½ùþíjEÛœe,ùñ[çvt <³(¡kÞŽàU‰†Îi¹ÓrFõÑúµóÕÖÝ]Z -u§…~¤Åýœ§3©8âÝç·Ýtˆ˜DÅ<šu‡ë‘N×ÏùÌkðèQyàoÅï½&^8z'5‘Õ@´vlŒÚ5JÖD¿{$:zYYÅ‘,Õ,¯%Ä3ÍHK/9J¹•€#·çqiâ&MC³ÕRÒt'´ÈBK¿-;w¢®e’J7†hjpcgÀhéd›ž„ìt.½Wµ&hhû®7}·8Qßeº³qQ]¥¥lZãº; ÷=–™hFé#,\T+ႇ½°;Ç6¤&ŠŸ[meõ~'ªT$àeršäù¿KòÛå»›·o|®?ãa&ÏžÈuç˜[£÷Žh”‘úÊzk3E$òF'!/ò ˆ„ý#¾¸ âF±”!gÉ y*0ö"¾DÉ3é‚ÉËàB 30-QÆæsCî"üJ¡Ÿ?¯äPiµ³^G¬õéǯã¼Ì·ö„yt~rÒ? oF¬Ž ¤*¼;>ŸH‡…?Ÿ‡©Ærk±’l+Emñ昄¤y-«F *Á*qèd¬W½žƒ»DåHX´8}»gW¹y+*Ý;)‡·Æžó2¬8çø‰Ê> +ƒKXDl¡j!]ZBíÄX;Ä.ÂlQ•,q Æ6Óuí¥ìp”n¹mbûœw•ÀOÕ<ϪïÐ{›Q‹Å´ ¶Âàþµî[œ!°P]QT`T"A^Ô€£mÂpÇœ`ö*-†íáì ¿òïFÄ bã³a'+e‹¨kMÇùÇ(;ߊ".ƒÿ4ð(º?NÈÓ@õ>‹)ê¸UAP7’hÊ Y +éå(>úÈù ÌÖ 2[‘Ï?äðùgé˜+ÒsKbØk5¡ùÞªET€ FÓ·àÿ(%¸{Ýk·mµ&"ó>`±À–¦7˜ñzÜÙö”}­@¢ÔjwTܸµÃ‰‹ð˜ + «vccCž À9´@¿WfPºÐj:!o{#¯ÏÏ—;/ ÿ‚‹‹!Öá™Wr'»š +/â3ÌD©a²†§ g'iLkù×güøÜ« + д>6q50»](Yx*”7L¹¥U›­«5LåG„áç§íñ…–îøŽúWƒÑ4=*ôàñÖ·fÔ‡gÎߺUxšÎ¨¯Ãw5çÉ)–bDæËÄ5¼Œgkl×ÔIÒDýŽhÿW–2@,(Ð% 'dáfÙWÄn›®S1 ³Î"“dƒÏP “Nº”ÆÓHÄ-¯%âñà—´×ïžB¯Ä¹2Á.p色‘´è\©}µ€e5M"çàäÂÁ ßCh‚íH+T7ÐBœXE´cpvZ¬?-h#Û)ðå0Ô £Ó­³?Trçh‚†]ï Õ°  +(°,j…NpFÅIí +(ß[ÄFÐ`°Rsû^Q)ǧ×R^÷`Æn¢-ç)X–C“o=Š[0j£hQ4·_ÚÃ[£wžP̉Òf‡ôÏÝW N΢'¥Ð=aÓÁšƒÆ-ZZ ŠsÜ=ñjaàÉ’ÒøγêÛ0É4Ðpá¶Ù| +ɳ"]÷¾¼AŸëÒ?qèö¢Ò¢(+³Éj0¾B+Ê0ñˆûd¯e-.Â2rÙbŠ•!Þ¶½j•ÖHY­„0¼Ä>I˜ødEeæ‰Ï®W2Ï0îþ÷rêÒû^Õtn#ÍÊÞŠŒgœHÛöžŠ4KÈB÷=r¢•×§ïeí¯=qê ÉãÎ2͈'ìX\êòw¶\^ÿçG¬ºôþg4|÷Õ·ï^NH²'¬ìåI‚Mþ)Rƒÿ›¿Dü_!dh\ÿR”aì•yãpÕ½aþm¹ýGDE“Äÿ÷qÅ×¼ UĘ›ÙRïµ/4ûí4óÙ>朄;×:¿ê?<œŸ›üÓûÅ +endstream +endobj +6641 0 obj << +/Type /Page +/Contents 6642 0 R +/Resources 6640 0 R +/MediaBox [0 0 612 792] +/Parent 6598 0 R +>> endobj +6643 0 obj << +/D [6641 0 R /XYZ 132.768 705.06 null] +>> endobj +6644 0 obj << +/D [6641 0 R /XYZ 133.768 667.198 null] +>> endobj +6639 0 obj << +/D [6641 0 R /XYZ 445.376 598.076 null] +>> endobj +6645 0 obj << +/D [6641 0 R /XYZ 133.768 581.349 null] +>> endobj +6646 0 obj << +/D [6641 0 R /XYZ 368.336 548.257 null] +>> endobj +873 0 obj << +/D [6641 0 R /XYZ 133.768 531.53 null] +>> endobj +877 0 obj << +/D [6641 0 R /XYZ 133.768 504.918 null] +>> endobj +6640 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6662 0 obj << +/Length 1300 +/Filter /FlateDecode +>> +stream +xÚ½XmoÛ6þî_!x( 1CR%eÀ¶NÒkƒÙ^ó!-Ybb²äJtÒ ÛßñE¶ìÈë +´þ`óíî¹É;aëÞÂÖåàÕlpzA™¡ˆA3»³ˆë¢€…‹|Ä"bÍ2ëÖ¦QÏù4{{zAH‡Ø¥È "@RT¿jŠ¸Þ† q¨o?Ô§™@‹8£(d-õoà–à̹Û7óíD¤‹¬ºwFÔǶȗ¼ÖÝERfE^Â!µi@$ìà|6ø< €„-Ò±™ ûVºÜ~ÂV‹o-ŒÜ(´éÒr= %’±°¦ƒ?¸ëH×£åHF‘LjÅüQ××*ƒåq–7ɼà±áG~‘úX£ùÌ“¢ýÇØ;öH„¬ šp +~Åöƒ²Ò ˜-\w¤¿“bm†Õnß½þs:ÑݼÔB@ónx`3iݼL×M/óº®ê•yÁfOòÆÈ*‹'Ý+9ÏxfÄÝíhØÉjUäi"bçU©=Aq„B6Ø ß8®H„ÜRûö£›ž”¢ÑCQé–;Ä·¿$˼äfaa:5o¸ÐݦZ×)?‘Ùs鶵YO¨v•Ô"O×ER;¶eh§Ojíß.°Ö¤¼­(iÞÕÿ#ÆnbÂsÎ漢ë¾­"waæw¡åŒô¬lkþy×<;ÑÃ$M«:ÛT{@Y"’fÁ¹@=Ç ”„#L"£ä‚Ó’7ꈴ¡½·ß„!Ï•Hc­u”ú;<ÖíÈÇØþ)3ˆfQ¶úÞœº‰"SÆ©Øx®ƒa·gD›ÇI³Œãvð ·¯‚ÀÈ ÞÎJ†ácV×šÜ +B¿›Ê¼”ç¸OçÍÁ;¬ùnj˜ûä ï~ ø›ñÌãqÿÝtGà¹é.î—~ÛÙéô(¶z@¼{ãaÐ/Þ;ŠõÀÓ/Þ?NØ÷ÊfÇñ|¯ìà(n÷ze‡G±;ì•õ¼n£ö©ê¾q*•EòA ÂÛO¿ã*]/y)àI1ÉØÔ.¤°]fD ûV÷ýÛ¸{û*OˆQ“Ø}p"ª^‡³K¶ïíN)UðŽL²·yV`ç”3R®Ìueò8%¾Í;¹åP¦;A,WðøÞÇñI;3œ_ÆñP‡¦”ÂÌlp=„TÃçÓ"ÿ:ߨÃØêSÉ> endobj +6647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 538.634 230.226 549.165] +/A << /S /GoTo /D (group__avr__watchdog_g9e52c54d10b6a6a7ce04aaaa4abea51f) >> +>> endobj +6648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 525.683 237.419 536.213] +/A << /S /GoTo /D (group__avr__watchdog_gf6cfea2a1b61e2530ea0c4ef8fc572b3) >> +>> endobj +6649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 512.732 239.641 523.262] +/A << /S /GoTo /D (group__avr__watchdog_gb3784e1b871d61ed338da5658184b725) >> +>> endobj +6650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 500.383 250.53 510.31] +/A << /S /GoTo /D (group__avr__watchdog_gd45893280f49113ffc2e67e1d741f29d) >> +>> endobj +6651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 487.431 250.53 497.359] +/A << /S /GoTo /D (group__avr__watchdog_g057dd21dc54e71de0e20d8bd5734915d) >> +>> endobj +6652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 474.48 250.53 484.408] +/A << /S /GoTo /D (group__avr__watchdog_g7a5b072c51c05a34cc38111f0e6724e5) >> +>> endobj +6653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 461.528 255.511 471.456] +/A << /S /GoTo /D (group__avr__watchdog_g7d028bcdb4a4103549fc6fb4ec07fbcd) >> +>> endobj +6654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 448.577 255.511 458.505] +/A << /S /GoTo /D (group__avr__watchdog_g66d5f50cc76b92c76900d77ef577d53e) >> +>> endobj +6655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 435.626 255.511 445.553] +/A << /S /GoTo /D (group__avr__watchdog_gcf89fc5fb6c8aa9efaadb86872cfbcdf) >> +>> endobj +6656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 422.674 236.692 432.602] +/A << /S /GoTo /D (group__avr__watchdog_g36302e15f38a4eeb8a328724bb8165e9) >> +>> endobj +6657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 409.723 236.692 419.65] +/A << /S /GoTo /D (group__avr__watchdog_g05fc682d276a36d8cc4e9178340ff004) >> +>> endobj +6658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 396.771 236.692 406.699] +/A << /S /GoTo /D (group__avr__watchdog_g752b0b1b5ba9009bc09976494313e30d) >> +>> endobj +6659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 383.82 236.692 393.748] +/A << /S /GoTo /D (group__avr__watchdog_gf074e538b2a1d5031931530f29a09fce) >> +>> endobj +6663 0 obj << +/D [6661 0 R /XYZ 132.768 705.06 null] +>> endobj +6664 0 obj << +/D [6661 0 R /XYZ 133.768 557.235 null] +>> endobj +881 0 obj << +/D [6661 0 R /XYZ 133.768 370.246 null] +>> endobj +6665 0 obj << +/D [6661 0 R /XYZ 133.768 346.958 null] +>> endobj +6666 0 obj << +/D [6661 0 R /XYZ 133.768 346.958 null] +>> endobj +6667 0 obj << +/D [6661 0 R /XYZ 357.168 152.545 null] +>> endobj +6660 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6680 0 obj << +/Length 1936 +/Filter /FlateDecode +>> +stream +xÚ•koãFî{~…‘C ¹ˆ'óÐ3w½Cv“l·¯Ý‹Í‡^!Ȳl ¥T’ãè?r8£HŽÒl?Ø3â›’C‰O6>ùpònqr~#ýIÄ"–Åz"”bNüÈc~$&‹Õä7GJ&Ýéï‹Ïo„è+ÉT$Mõ/¢ˆ XàvÉTzÎC}~Xµl;"Îå, +}KýïWÄ…–àb:S‚;wSßs’6Ý®ªÍt&=î´ù.«i»MÊU‘—€ð(H{r½8ùãD€$>=Ÿ‹¸7Iw'¿ýÎ'+@þ8áLEáä Iwå©@Æb2?ùï ;^À¤òzdðöpά²ÿq.ËŒ¬…ÀÄY™, €züa +Þ%ÅZ šf"`¾tIÚ—i$5Á…öÉÚb×ó¥ bQÀÌÒc<ò‰9Ž“fÇÓ™vÄñCU$m^d‚`Ðp+”>ü‰ +™ô‚É,b®o:ÍK+¡ÝÝÇu¶‰ã³8žß^ˆãSB¢€ÿZ€H·/’“4ãÐiZä_ÏdM8¬ê¿¯©Ú·Äó ?ûFŒò?RÚñ[gÏz~­9Òð¿¢û‚°ç%\¦\òÒÔà¿Óˆˆy ½.+âU÷û¶ÑDžd>W#Ü. BÙç>?ŽÇ,L¶ï†±ìôãésÅó›Ûøã§øòêêV?ß]Åï?ýº¸ýôs ÃÜÆßÙ_º|Z÷%¾ûÒ úáò××ñ» ]#šäOs.DuwuÝSñ—gÐ׿}^¶aÜ>K¶ˆ¬9}K ä!íþc´ƒqŸç*þårþA.:JþÂÖÎ"1!ÃëC?†l¯ÙX—;:q¤hÖ×ttz5‘ü³ÃlW‚¾Ç{}H#h6ó€h¯uSƒ’„VÝnõÆwº¿uQºq»Ü£’wÒªÄö¸Ù×ùT8å†øò–¨×UM€l*<çñ>¯Ÿ‘¬[£Mƒølš„ûŠ‡®½?PÖÝK\—¹`:ïå‡mžnIzÞÖ„Ój7£ÉÀg^ px&J˼„¾Z•xWùNµ¦µw /Mô%”mwÃÝ]}æ#æAd¹×Ý“í¶®ö›íˆ0å2¡¢ž0ù¦°eL¬põœC· *ƒ5>ô—î³¾ÅûÛ…p/r%-U­o“7pdÿánäÜ ÏÕ·ÛªÉL|ýˆ…7Œï*ÓCEžfhw !ii·…yƒ;( ÙˆÑpG}›ç£FC; F6éêr¥ï›gc2Ú@–ô2LÑ™`(^%|CCðvø"z; ¦–ÐDÎ1¡>s¹èç:³G ‘ƒ)dž™é%)šÊ `[jžv˪ÈSz‚rnÚ¤¤»çØc2?ð{ñ)Þ/ó =ŸÉ°s;k­v620BÇwá’j_DGc˜z} «§"t²&kMÓ„ê¦&zÐ#ZorB(2è™ä•y4ÄÝ¢°# +lWÐûas‘oš£ç9 ôDʹÛf¥Á¼Å¤‘Ø·Dæ +[,°‹!2MŠÂpTƘ­eÈáÔê}ªs×N¡½ +D2%#(Š?öy­èi™A{ÆäW&h¬Ám׳³æŒÊ¾²ú7†6!Þ¾K³¼ÌÛ„˜ òÕÔ$mõÜ­…íÍB«lh›Ô–Üß×Õ#N»¤5°ª,ž ¶\ud¦¯FÐeŒiö5’‚x+UE›ltÚš¡V–/SŸ°Èñá²¥µ¨0ÕT=¾•®÷=yTJž-8¿s ¶º"`L™ÖÄÏE…½ëm)VVGïf=óÃÌq®U‚[R‚»¥A& IE¢;êfvñÒÊFÄèÖ†»ê>«¡»Òèl-­_Ò”Ä~OÏÊ€uèά¼°¢­©efÃ8âÐ`”°£„_6f½œ +!œÅŽ&€) ›psýK\ø|sPöàδ¾¬Î3]úö¢¥$Ö"ßä4/ã­¹MÊMÆÆ>|®šÆš^¯ß#áµ ³ÂÓßBBf_PÞ (v:[à +PœH:€Ï( Ã‘Hïâñ\Dѱºac%Œ¡žW;ôÄG'áv£ àž¢R ½Ü¥ÅÒcâshÀŒBq¿×ÖÓkkZ|u‚w™²|¢•Ò÷µn¯#ü(§ô36eÁ(vs¾ÉŸueÓš²|:¨ðŒí,F" qý˜ìîmâÐ$¬=¦ì #µÉŠ,m‰wô.6üˆ6x¿ÂT^^j’Ø!mnSÀf× ?J~p‹B¨¿ó¹Í~fóY¨°ÿ™-Œ˜²o¦²»† "ŽÜ¸.¶{Ú\ef uiüBª Ò¼øšÝÏ¢ªm ôÇË© +œY‘/Óá]UO›¬> endobj +6681 0 obj << +/D [6679 0 R /XYZ 132.768 705.06 null] +>> endobj +6682 0 obj << +/D [6679 0 R /XYZ 133.768 667.198 null] +>> endobj +2860 0 obj << +/D [6679 0 R /XYZ 341.189 410.399 null] +>> endobj +6683 0 obj << +/D [6679 0 R /XYZ 133.768 393.672 null] +>> endobj +6671 0 obj << +/D [6679 0 R /XYZ 160.926 336.67 null] +>> endobj +6684 0 obj << +/D [6679 0 R /XYZ 133.768 322 null] +>> endobj +6668 0 obj << +/D [6679 0 R /XYZ 206.934 286.851 null] +>> endobj +6685 0 obj << +/D [6679 0 R /XYZ 133.768 270.97 null] +>> endobj +6678 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6688 0 obj << +/Length 870 +/Filter /FlateDecode +>> +stream +xÚåWÛn1}ÏWXâeWbÝ_ÆvAHTÜ„T.ÊBUi³4‘ÒD”péßc¯wÓÝÔÉ/âÉÞ™3gÏŒïÀ.°ç££rtðLsÜ‘oÊÏ ¥ä†,#§99då”}È„àBåŸÊ—Ï;`)¸4Î3Õ¨‡Ñ£3ܨ `’ }¿:ø1]óY‚Nw–Zô£t¶æ…DÈNrÒÙd}>›®.òBhÈÖóËê*vg“åt1_zúO‘ #íèi9ú2BÏ ;9#w ÙùåèÃ'`Sï|É€KgÙzɤòP 6½ASÈí¶.¬”^°3€ua•åˆš‘6\HSð•8­–“³Eõ4œ<)_Ÿj€ã±ÿ‰ü T\*à +%8jÓ.8ù$ »7õl –U,gÍÑf¯Oq ÔC‡<µá$T¤WUù:sƒ¸5¦-¿ç…SÔÇã¤Î-ü A§û:Í€NÿqÜHUw,ÕImtš;ÖétÊMEñŽ•" HUPû·Bpah—Ð.vœ¬n‘¯VëÊo)Ή¬œÍ¿æ…ö½Øb¶Z.®cÏob};Ùd¾+·Äv=«bäã³r=_樳k!QÞÏ 2tË£îm¬0Aúý.¤)ŠÚÂ*-Üb·ÑŽ·¸u¯towàa:@GPnÔmëxªu\VÁ~‘û**[»tÂeíÎ($»‡ñMm õF•äíd Èý¨©dú¿Ý„ +?nsK1„@RƒCR¿¨}ô'é‘$IÉ6:)íÄ‘BìsâNZûâ}ŽÒO}“¬WÚ›¿ÍÜ,Ã^q_¼?Šn™š<@Á)A¦Ó¼©{—ßÁ›“ã­¥Ð_Â5B„0¿fúÆZMgk«LAe„¢ë í«OŒÄp=@Ù‰|7>²µ Ùý‹·"5fè™IQ +MÊìÿ{`6Ć}}Ëlúæ;bÓvkyâÄg œ5õ]+Úô]Ÿ‹b@+m¤Š„Š-©ûdì*–`›ß»ÿû`ÖÿÖÁ¼y‘$_<Îr#ÿä½Ó>É¿k¤í>­ã’šâ<¯–ÕÕd]M㌠CÚrö-vžTçíý>^JáPÈC´ÍühzŸÃh®š§\óz̥ɊÅü¬a8»n(W?¯/ªåvÊ¿ÁXdœ +endstream +endobj +6687 0 obj << +/Type /Page +/Contents 6688 0 R +/Resources 6686 0 R +/MediaBox [0 0 612 792] +/Parent 6698 0 R +>> endobj +6689 0 obj << +/D [6687 0 R /XYZ 132.768 705.06 null] +>> endobj +6674 0 obj << +/D [6687 0 R /XYZ 133.768 646.225 null] +>> endobj +6690 0 obj << +/D [6687 0 R /XYZ 133.768 631.654 null] +>> endobj +6672 0 obj << +/D [6687 0 R /XYZ 206.934 597.454 null] +>> endobj +6691 0 obj << +/D [6687 0 R /XYZ 133.768 581.573 null] +>> endobj +6675 0 obj << +/D [6687 0 R /XYZ 206.934 547.635 null] +>> endobj +6692 0 obj << +/D [6687 0 R /XYZ 133.768 531.754 null] +>> endobj +6669 0 obj << +/D [6687 0 R /XYZ 206.934 497.816 null] +>> endobj +6693 0 obj << +/D [6687 0 R /XYZ 133.768 481.935 null] +>> endobj +6676 0 obj << +/D [6687 0 R /XYZ 206.934 447.997 null] +>> endobj +6694 0 obj << +/D [6687 0 R /XYZ 133.768 432.116 null] +>> endobj +6673 0 obj << +/D [6687 0 R /XYZ 352.149 302.536 null] +>> endobj +6695 0 obj << +/D [6687 0 R /XYZ 133.768 285.809 null] +>> endobj +6670 0 obj << +/D [6687 0 R /XYZ 206.934 252.717 null] +>> endobj +6696 0 obj << +/D [6687 0 R /XYZ 133.768 236.837 null] +>> endobj +6677 0 obj << +/D [6687 0 R /XYZ 190.057 202.898 null] +>> endobj +6697 0 obj << +/D [6687 0 R /XYZ 133.768 187.018 null] +>> endobj +6686 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6701 0 obj << +/Length 1850 +/Filter /FlateDecode +>> +stream +xÚ•XYsÛ6~÷¯Ð¤/ÔLD î1“ÃNÝ™^±š>´ DA¦©ò°“vúß»À‚%ÃNúÄÅ^X,>|€Df·32{söryv~•ð™Œ%‡Ïr3£ŒÅ93.³˜K:[®g¿EI'ÙüåwçW”NœY³\B&çõz¥Ëã<úΔ窫w¦ˆ·t1¼¿ ¤£$Nؘï…K¥Êòã|‘d$RÕ…êjqj¼ü ‹¾ÓÞãU½Ö(½,ëâÏvžçy”ä©óìryö×…YÈŒNBcI²Y±;ûí2[ƒñ»‰™³{纛±\© ,g7g?Ÿ‘£.“P—³”ùåÌ)¥Ñ²3ÕœfÑGÁéóù"'é`Øi«¿g‘J…3e“FQ.žÈø“Ó§i0ïÄ s™D Û4Xè‚B‡2¿˜ãiÇÐ$!Ü,ù”åé's|ʃ§Ÿáálüÿ,§‚˜ÌCe'U¥óHlXÊé±ÒU3ÙE§e!W†®T' üxfþpfF9DR6‰üåæ¥p±é, ¥Ü«É‘š§<äÍÓüéuÛŒ‰°±–£NÔù±z G +½ñH¥8Yb9¦fiLÈCŽûĉX@}H~â"cJÒ'Xþ8!OûèCšŸ¸P Ç EÛF«®‡lCRoÀ…&Ѧ¶UÒ˺ޣênžã4F­JÝ¢ªÛªÝ”+Tk]”0XãÈT­qˆ,û;sÓÈt­.71 €“¯ìÉ|†)èjëÊC ײ@ýcyvh çQ¡*TÖ•{´€j¥QÓ·®ZÌ-X)(Ú΃jÖ¨†\Ð;[.}¶Óˆ¢Þíºc©¹Îíw¸þÚnýµß +;ep­îû]_m`†O ýµTðG)`÷ñÄMáN“‘BêPxûåb|ûÝV}8‘Œ…ƒWŒ4@x‡ÚóÆã,˧hçâ€vڹКÃf‰Éf À*Qº‡ucT̺2‹“=:@B‚ãm¯Uu7U` m˜w—ç‡ÞÓ§­ô8”©çÃÝh„½¸¦iê ®nvèü ³> endobj +6702 0 obj << +/D [6700 0 R /XYZ 132.768 705.06 null] +>> endobj +6703 0 obj << +/D [6700 0 R /XYZ 355.237 585.504 null] +>> endobj +885 0 obj << +/D [6700 0 R /XYZ 133.768 568.963 null] +>> endobj +889 0 obj << +/D [6700 0 R /XYZ 133.768 530.687 null] +>> endobj +6699 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6706 0 obj << +/Length 1376 +/Filter /FlateDecode +>> +stream +xÚ¥]oÛ6ðÝ¿BÃ^d bH}«í +´iR¤[›-u÷Ò-3‘VYt%:N0ô¿ïÈ£YQÝ{âñîxß<©sãPçõìåbv|æÇNF²–ŵ€$qêÄYDâŒ9‹•óÑõ}âGóO‹7ÇgŒ ˜ŸI’ ×3äØ—$춪¬Ž¹’ë2'Å„¸(0鸟Oˆc”øA/ï…Å«ê~îùuy½Bଽ1ñôNä[%,lj\ „^V2ÿÜΓ$qýÄ89;]̾Ìh¡„‘ŒFN¾ž}üDß8”Yêì ëÚ B`eú`弟ý1£Ã(#K(Û‹r”€Cº³æeýè­,W°2m œ÷2Æ!²ücp,$A˜ Áž%„L°çª™{1¥î/¸Ð;ŸÒ§CF{¼U¼QWª\‹F[ µ?·+ÊJ (ÍÖ‹ÿ©“ß›‘ U#ÏŽ—jÌbÅ£Je„ùé¤{ÞÐu{ê«­:¨0Û€3C–E!î sËWKHݼàunI».UX@ç¡\ÖJÌYäÞ)<º+« +Iˆ.•Õ ¬ŠÝœAMvèJÊ=Xˆz¤ævîG.oJ¾„øw \†÷,"ÉÃEÓqì³×qy *5²‘û{Û{}·™86¥RÂ’ªò³nü≙%º [Gƒ€~¨(I£]ú¹ÄãSù +_ÝoDKŠçöˆ™ß6ÇýM¿}Bþð½Ñ­çg)É|ûÆÞÊ +º|7lÁ_)ÜÁƒõtê ÜW]Œ‹ó·§—ìêâϳ«[‘«ƒ³ž¢=KA¸çÙÑa@Nc½£iÉ +“'ԚʢoMeá!=ߟÊ›ʺáM”‡†¶G©¸Êåæ~JÐJ ûþ<÷bqñöüäêåo'¿jõvvqyrzñî»9 Ç!1VíÅ¥¯ïñ¨øõ!åûàØ:P¶7»NEåÏž¦ï¦¬{”R* R‹f›7`aÂjäZ§iï@éo3Òªàz”sæÊQKÓåÆqÊ´DMúîHxc”Ðm38eyŽöÚä')KIü—/R÷¡#éðk”f$èRðZÔ¢áýçMÚN»(¶¼9!.Œ>ñƒ',ÅÜ. ]ë˜HÛþ¹™H›y¸^U.­„¥ý.¾’w÷7ÐÒG.ÿ ZÄåF +endstream +endobj +6705 0 obj << +/Type /Page +/Contents 6706 0 R +/Resources 6704 0 R +/MediaBox [0 0 612 792] +/Parent 6698 0 R +>> endobj +6707 0 obj << +/D [6705 0 R /XYZ 132.768 705.06 null] +>> endobj +6704 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6716 0 obj << +/Length 1558 +/Filter /FlateDecode +>> +stream +xÚÝ]Û6ì=¿ÂÀfkKþ,†íõîÐn»Ã®öЃã(‰QÇÎüÑ»û÷#EÊq2g¸íöb‘ER¿dÏÚXžu={µ˜=¿‘•ºiÃbmùRºq”XQºQê[‹•õÞ¡óqñöù•ïˆ¥peœ'MõQ±‹Ý8ú®(Ÿg]½+rw;Á.”ƆúÇ v¾ç +9ð{©YeeùèÌEèÙYµ"ম構—*ï;ÅõJôª¬óO­DZ-âeÎ.³?g>Hñ,dßM½ÐÊw³÷=k‹o-Ï•ibÝkÒ% õqci½›ý:óŽ¬ìMY9Œá@!§­¹‘]t<¶4nú¬ÉªN¡îˆwL·T4æuÕm§ªϪ) +×™‡2±ß¬yrËô›²^f%˾MÓïYdÛeSÝ«†¡¾ÊUãÏž£uàDsL²Ö]VT@çy ÏºÖ{<ßVÈ·¨6´B¢aú¥ãû¾½püľýåÍů~¾½øéécÃØnë¾\½>"Ì)Çíü˜KÄÙû¢Û ðì=˜j§@ö”ª§Òï.ߢT‚KòŒ&¶ ÁÝ6«:eru{wqy{ãNx+ˆ‡ñSÿZ}ðo?œ¯. O}úÔ‡O»‘HÀE£ CÞBØ K,PÖksª^A^ê*x׸ZhŠšÙðŽ¿§R-ëP-£Ðv)™þ¶¯+Þ4¤sª¦Òë (çc®¹Ö üæPk}vî[‚ÁŠ2Û\T¼~wyÍ3Lµ*ÚlYªÕ3Dc.÷0ߨ¹ªô +á=ëíóa‹UŸª][¾9£:€ë¦Þ™vwsû`8¶‡Òàñ™ãÂI .9¾gƒÙÃ$±÷uÛ:pÐŽ&vYÞèµøP¬ZZÊÅ ªÙ]§OÅâK +nGÃ<¡ü=½r¿OòûQÆúgo_lñf‘Ú4&èòˆ¢ÑÈbjºF¡É âÉâÑï[UÔ·ÚŒA,u‡S÷EY‹<ƒeš<ãÔÓ… +²BH‘D¨P®xJ;T04R8§ƒv¼ÆŽ Söª 6o ­iÇ…ãnÏhZ»7Å_N¡‰® µÇ±–Žb-ÅÀË¢CƒIÁwsm†½Þg!xJke¶¶[¦ÛgúØfLGŠ°‡“‰Ðþ\Ô$ùž•=h£Œwh£LäÄDàm«Z«PUs8VÊôõúN0 Ù5LJa’¬3-¡é²†ç´Zã5&#ýBG«Ä»6 kÀ=9^Qö “:¡Fuš–A<„t¼èõ°–ÀºÒýxo¨ 6È3Å@Šâäœc\x\¢ÂƒiJÀœEBo2ÝœÍÙG!¯Z÷è¡0ùƒ'MÜX~Éïóó,rÓX&ãß:IêJóx¿V•j²áÇ“Ñz±íùÑ¡r|ï…/ü„0áy iW©¹f:JGÆö¼,–ÌaùhÞ1Uù/ÄÎ  +endstream +endobj +6715 0 obj << +/Type /Page +/Contents 6716 0 R +/Resources 6714 0 R +/MediaBox [0 0 612 792] +/Parent 6698 0 R +/Annots [ 6708 0 R 6709 0 R 6710 0 R 6711 0 R 6712 0 R 6713 0 R ] +>> endobj +6708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 575.312 268.243 586.216] +/A << /S /GoTo /D (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) >> +>> endobj +6709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 562.361 289.474 573.265] +/A << /S /GoTo /D (group__util__atomic_g6e195ee2117559a25f77fbba9054674a) >> +>> endobj +6710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 550.386 307.546 560.313] +/A << /S /GoTo /D (group__util__atomic_g362c18b15a09703e42e1c246c47420ef) >> +>> endobj +6711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 537.434 280.976 547.362] +/A << /S /GoTo /D (group__util__atomic_g92b11103b4b3b000a3190f0d26ba7062) >> +>> endobj +6712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 524.483 328.776 534.41] +/A << /S /GoTo /D (group__util__atomic_gb075653bf638fae9db049575741d3152) >> +>> endobj +6713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 511.531 306.091 521.459] +/A << /S /GoTo /D (group__util__atomic_gfb959d7d00d2d790b58d0e9880ea255a) >> +>> endobj +6717 0 obj << +/D [6715 0 R /XYZ 132.768 705.06 null] +>> endobj +6718 0 obj << +/D [6715 0 R /XYZ 133.768 594.286 null] +>> endobj +893 0 obj << +/D [6715 0 R /XYZ 133.768 497.957 null] +>> endobj +3240 0 obj << +/D [6715 0 R /XYZ 133.768 474.669 null] +>> endobj +6719 0 obj << +/D [6715 0 R /XYZ 133.768 474.669 null] +>> endobj +6720 0 obj << +/D [6715 0 R /XYZ 228.234 386.05 null] +>> endobj +6721 0 obj << +/D [6715 0 R /XYZ 133.768 370.299 null] +>> endobj +6722 0 obj << +/D [6715 0 R /XYZ 415.529 258.831 null] +>> endobj +6723 0 obj << +/D [6715 0 R /XYZ 133.768 242.104 null] +>> endobj +6724 0 obj << +/D [6715 0 R /XYZ 406.065 161.191 null] +>> endobj +6714 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6729 0 obj << +/Length 1737 +/Filter /FlateDecode +>> +stream +xÚ•XÝoÛ6Ï_!`“€Y!©ï (ЦIÐnk°ÔÃÚb eÚ*Sž>’fýîx”,;r²>¼;OÇûø‘4sÖsnÎÞÎÏίEìd~Ã0_9<ü$N8‹ü8ãÎ|é|v…ðEì}8¿æ|¤?H2°d´^‘ƹÄOÂA¡k‹ò<¯=žº9ýÍ„Å0õE˜ö ^¿dñ›œ¹—w—ÞLD@TÛ]×ʶ¨tãÍx(‚ÄI‚fήægÿœqXÉ>Ú&÷39ùöìóWæ,aòƒÃü K£ºu‚T9.,Ogœ±—c%¾¢}ì"_ø!øÃsZª/Œ ­Èã·=ÁÜ7^¹sŒÌíïï/ÿ~ûÛíå¯_XÄÚǨGÜ‚¾ÆœOüX„ôËZÉVÁ®E–¸’†EYåßLÝjE¢¼Z*¢Úl‰*ì*åñÐýîñÈUy×ç.i±®ôL¶Õ¶ÈeY>zqäúÞ,Œ¸ûç®Ò¤¢t«êB¯{ÛêÈ’Á.ŒßôÈÆ禬²„<²Ø}Fên×û 2Ù5HG.Ä,k’ÚÎß]ÝX‰ÕRZ.Jµü8ªÔKš^‘ק‘R¸×ïEküÆõÆoœ!¿'Ü]ÕÕö“@Œ5®~Dfo‰¦v²Ý@„‚Œ¹ó‰nb£ cרUWÒ²‡Ò$ÕªiÑA£©›Âd 4ÞxœóãÊ µFå¦Ða·" \YÎŽÉá²òDä>PjBšˆ}R‰§-ôÙ/LbAl +Æf ¹'Ò§9œ¶uÔæ(-¹•…ná7|œêûá‰ËžûGo?ž_<ų„qól÷“sˆLJÖ*t^vˆÿ1Xeƒ`ðzîf½‰Äú Ø{ +îFÉ¥¹(kîïÀ=œ3VSÒPëÛâ_³Ð+4*Š¦V^ÈVÖ.¼mó®”ôÄE¹yßå¥y B­–pBHMò©ZÏ7ŠF¦h#é1w:]šá\ƒ:Üöõº«ÊG &KªÊQˆSÈü,‹!@‘‡}ïN­”©+¥áÑt1™©ãqòo,õ“àGþéÿüˆ¡‚tüçGšùAÜ¿í•Vµlû¢ê·<ßt}•åD„4pv!‚ ž'³”ÈÊÞ ¥9j/HÜYY,¬…Å£5Y}\«Ã¢…-ÿ—Äáý +endstream +endobj +6728 0 obj << +/Type /Page +/Contents 6729 0 R +/Resources 6727 0 R +/MediaBox [0 0 612 792] +/Parent 6698 0 R +>> endobj +6730 0 obj << +/D [6728 0 R /XYZ 132.768 705.06 null] +>> endobj +6731 0 obj << +/D [6728 0 R /XYZ 133.768 667.198 null] +>> endobj +6726 0 obj << +/D [6728 0 R /XYZ 252.552 562.211 null] +>> endobj +6732 0 obj << +/D [6728 0 R /XYZ 133.768 546.46 null] +>> endobj +6725 0 obj << +/D [6728 0 R /XYZ 454.552 434.992 null] +>> endobj +6733 0 obj << +/D [6728 0 R /XYZ 133.768 418.264 null] +>> endobj +6734 0 obj << +/D [6728 0 R /XYZ 455.359 337.352 null] +>> endobj +897 0 obj << +/D [6728 0 R /XYZ 133.768 320.625 null] +>> endobj +901 0 obj << +/D [6728 0 R /XYZ 133.768 294.013 null] +>> endobj +6727 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6753 0 obj << +/Length 1598 +/Filter /FlateDecode +>> +stream +xÚÕXKoÛ8¾ûW½¬„Ö I½ÓîÛ´)šËv{H²†,3=\‰Jìýï;|)’« lØ‹9"‡Ã™o†Ãcgã`çÍìåbvtJ#'EiÃâÚ!¾â(q¢4DQJœÅÚ¹p)E4ò®gG§„ ˜}Šü8IŠë…手Qô àÅQÞx$qs¡› ‰A‚hØ ¿}Mâ±7÷ vOÞŸxsQ—ÛNd‚×UëÍI@ýØ¥q"ÅÌ^/ffvb‡ Ì$(Å¡“—³‹+ì¬añÌÁÈOç^±–Ž+‘ ç|öç °ÃSØ…1¢~¨Ux¥GmgYÕeÍ^4¥†¯í  ¥bßƾ ŠÂ>ú_—+¶^³µBdnGÀœï[ÁJ©0 ÜwQKH74'+K©º¾dÃHN”<\lð(uWÅô +7£ŽÚm‘ñÊœ@öPKÆJŸs'YcNx³FoÙ®B_ú.XÎm0Ö”*–…¿¼¢«(ôʽ¦nÄM@š`Ê6¸{Â,Ôz¬W"SŠÙ“¶RÈÞ‹Bõ£ˆZ§ßˆý–ç™9îA_öÒYEºÂ¨_Ôõ­¡¸¾Ç“ ÁâCzLcLT6J¡ Nc}üÑ‘70îS¤ùËNy´üL^\IÝ1™’z#RDƆŽW"Y¶–5U}q¥?~ÕÃ'=à¦Ï,Iòž\%=‰‰%wÕÔçç=ž JÁ0¥ ¨2ÔÐx>¿aùmÞä—8Äw5__Êtù¥!ŸÔœÂ)íYrFÖYÕø¤B*EËey6o|n6êá…d25ö`jòè‘Õ |eÅ<}ÚÛ5´Áw¨ö&–|¥|½ì¶ëL0©"Ì>ŠçWR¨6mnÅ l˜èšª‡Æ(c«ìlüÈÔ ¬‹ üyâuŸÛ¨…Ò‚¤†ñ´«rý¤ÃþðñPàËp§(²'\RŽö8óPš*_‚\ß©å’W¯Øri8eyÐlLð^í‘|2&H´Wïn‰6pkœU ûGœ>ÌŠ^*Ÿ}UÙä±í Rf#gôü +É“|#t˜|t˜~tRª Ô]Y¯Yù~Àõƒø6_ÅGñSFÿ;øýÔÐ[æ9âÿ~ôçÀ—|zÜT)©òÇ0Lþ¿H &¨êß<¤†6j_Õy××ÆöE£Péh3"f»uTÊÆq•ÔT;ðH8M»gTLºaBÑö`B0¢o^¶ÊTŸ„–K>c~4î@jÝ*›ºÙÇp׎ቡ”‹I`E<¸ +¯A %–éBãu5QeCUBèGâºc¦øƒB\jªË¬€êZ9j\\¥ßÕžªKž¦/Þ™Ûw"( P84ŒPœÄŽ"émO¨¢$Š›.«ÄS=L‰†J3 ‚þ4Ñt$™xýÅ…ÂcÒP| äâhì‹·Ü–éw² ÈŠŽpñN÷ƒŸ‰‚ß4MáàO +;QÕM uø^u­u¹í)Ö¼½¯.eëƧogDSÐó·“a°°Ë50Õr÷}ßÛ³š›9@Y‰Àì5I"+¸0Þ7ð¦°j¬äɸ›žü“%MPìÏ_,öo©ÿ[QIŠ|[ݽQÿh ›Mh‹›Îd6fŠÀxSÿ˜$ú‹bl(å> endobj +6735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.31 330.802 261.518 341.706] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.016 330.802 322.658 341.706] +/A << /S /GoTo /D (group__util__crc_g95371c87f25b0a2497d9cba13190847f) >> +>> endobj +6737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [326.474 330.802 361.682 341.706] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.288 330.802 419.514 341.706] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.341 317.851 260.549 328.755] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.563 317.851 351.093 328.755] +/A << /S /GoTo /D (group__util__crc_gca726c22a1900f9bad52594c8846115f) >> +>> endobj +6741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.424 317.851 389.631 328.755] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.366 317.851 446.592 328.755] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.31 304.9 261.518 315.804] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.016 304.9 334.832 315.804] +/A << /S /GoTo /D (group__util__crc_g1c1d3ad875310cbc58000e24d981ad20) >> +>> endobj +6745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.648 304.9 373.856 315.804] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.462 304.9 431.688 315.804] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.31 291.948 256.537 302.852] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.035 291.948 340.73 302.852] +/A << /S /GoTo /D (group__util__crc_g37b2f691ebbd917e36e40b096f78d996) >> +>> endobj +6749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.546 291.948 374.772 302.852] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.379 291.948 432.605 302.852] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6754 0 obj << +/D [6752 0 R /XYZ 132.768 705.06 null] +>> endobj +6755 0 obj << +/D [6752 0 R /XYZ 133.768 349.776 null] +>> endobj +905 0 obj << +/D [6752 0 R /XYZ 133.768 278.374 null] +>> endobj +6756 0 obj << +/D [6752 0 R /XYZ 133.768 256.062 null] +>> endobj +6757 0 obj << +/D [6752 0 R /XYZ 133.768 256.062 null] +>> endobj +6751 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R /F55 3943 0 R /F13 5291 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6763 0 obj << +/Length 1344 +/Filter /FlateDecode +>> +stream +xÚµWÛrÛ6}×Wð©CMB7‚`œdÆqšL2ië&zèL.š¦,ÌP¤CAµÓË¿wq£H‰Iœvú`c ì,»‹#]E8z1{º˜=xNE”£\À°XE„1” ‰Ú9’#Båh0v–ê$˜‰rš÷N¸åý'諶s«ÆOåD¯O<¼¹AúÙ{÷Ô¡ÃüKû½Ôj¿UïÝn =ØÄI{åÇOž ܉ýnO1&îÔÉ„?U½­þû–ŸA§b„ÿ÷Ôµt•ÞuMŸ ÞñõAÍ8½§i\Ô»Êß®ÌÌðßðN<Äb­¶Î>Œz]õ·ë„Ý6\øÅg7žŸŸ;¡hüÊËîÙœãøtòâßVòÍó3B²Á1{ ë®ÕmÙÖ®kMB‡¯×§Þ† œþ¥:ìå9DŒrD°o?·âs`4¼"èM±- +§ÔÙœÖzÝî®Ö°)f>< „ÄñºOl÷mC9ÔÝ+ñ¸è— +í$]lt‡f¿mÚËjã÷ðºßxÐŒIc°gXÄEW9áÓNi/^*—UW5Ížåp÷‹¥Ÿ3g°cãÆukTn܇v–Y|¡ôö`ÓíZ­´9’Sì\è‚Õ„óEÝÚ¾{¥ôz®198y–:@¶ŒûÐÀäOoŸº™vå&ü +÷i 3.†FªåæÞcL»­†L%‰oÖªæöZ‡núRíÝÖÈkëÖÉêéó¸_ +nØ°n _ä@ ‡Œ›¾â +Ô[­Úºvw š«/”l7nT|/¨¿Íj×”¦-µÒ¾„o:xãª&xäF£ÚØ×ȘÿùW—2hzù]èßÁ‹Ĉ yí¾— ÚrÄöêVŽ˜ËžªŒ!-÷3<çã'ßb2f“á_8¨ÙõOî©Ú_nX«coø\–×|î±'ã}è,#ËFaú8ööë^²à„çh@þ™#†÷UŽ6¦hì¢2¦hd v104u1§°¦uÛìyÅd’¦$0¹Mãš&RòušÆ5¡¸;MËîBÓÈMë‹ròw_Ïûž_}á—òžÊ(™#.öEÕT]¡ h}»X¬wNxV•NàþeÆ){H¤û¢{É>3æ'–mŒ¶Susø-›Ôê¢SŒgííç+èOGþ­â¸ +endstream +endobj +6762 0 obj << +/Type /Page +/Contents 6763 0 R +/Resources 6761 0 R +/MediaBox [0 0 612 792] +/Parent 6767 0 R +>> endobj +6764 0 obj << +/D [6762 0 R /XYZ 132.768 705.06 null] +>> endobj +6759 0 obj << +/D [6762 0 R /XYZ 133.768 505.977 null] +>> endobj +6765 0 obj << +/D [6762 0 R /XYZ 133.768 491.685 null] +>> endobj +6760 0 obj << +/D [6762 0 R /XYZ 133.768 162.247 null] +>> endobj +6766 0 obj << +/D [6762 0 R /XYZ 133.768 147.956 null] +>> endobj +6761 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F55 3943 0 R /F20 1882 0 R /F13 5291 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6771 0 obj << +/Length 1127 +/Filter /FlateDecode +>> +stream +xÚÕWËrÛ6Ýë+¸êHãƒAÛñ"v’I:ž´™qMS6¦|(YÉÉôß EÒ´e»í¢+€ÐÅ}ž{:ï'o“ù;ÌœL.‹¥ƒ>ã (`r×ÎÅc€Ùìrñqþ¡Ž0Á€øÔÔHk‰ž:ø^+PW"Çå ñiŒ¸Ñèq€=n/œìÓx8s ‚ÓÓßNg.¦rSd«ºŠ*Qä뙋O~À^îàXî¨0¡ÚÅO«Jdâ{r­=<‹Ò4Zëý8a:Ýèƒóh+2yŠô§xSWU‘ëî^‰ÊDiã4®Ó&\ b”~¹È {Úö/Ez—™ˆR“¨­I9q|•הŸû —¿š´wc£€3ßq;R\ûp —1ÍÊðó5Ó§i&Ï×ìõ4£]à–Ÿ6‰WYt¢€Jƒ½d~ÈE%3©ïü©ª¥ub ·°Wcïs’4ØSShúñ»Ÿ%x邇îûØ·Uµ:œÏ7› È(\ƒ¸ÈæÑj•U²ñ²ýó:»JÊ9ö-ÏA2\c Óâ6Ññ,‹4ÕHùAŸAiee’oµP"&ö$7p\Öy¬ ¥¢ºÓG›RTUb+Ìz +zþíü”yðei!jò„Ç•3ÊU‘W<¬l†à1“à0.ãP\5}Ö«ë¨JT9í—AÙ%eüJïzÇR6jKn´š´ühÎOxÏ\O8jKÎA`}•Öôϯ[ëzóugöhÄæ²(µ€ò_ôTÀ#cP/Çzáöôà`}( cK,w¦Zÿ~2ƶµúFR0Œ¯§ãäD¯ZC7lÕ`G¦»î;”¤ëd¯Á“cED’e=E•¤LªºÌÛrŒ¸A;·|ãZ@JkTMŸ–rž (µ®çH7}É7a(òTäIêo…ÄhäðR€mø/ÜfÅu’ÌjI‹ÜFºñ„Ò.Û"å³#"TØqXúÆ8µR¯Lª<0Fj´€Ò{m54…A@ü%Ú1Sr”ø­C5ÃÁ†ÇÈ +]èT]ŽŒk×— %^B èSRŸûåüÓÙÛó= H_Æ€ìIlb¤ÛOT’H<ïªñ¦š>ÌbÔaAiÁ“å}9 ¶,c¹ä§´eêµ-ñÕÝ@æKÓ)n+º*‹ªˆ‹t´àÿ#F³m> Åhƒá`çìn”<“×öBþ8MùÖõO™oF†æ+KXêøhÄ­>õ½néîøŠÛÇÔS—C»OrÁÓIÎÆ3Frªƒºü£9ÿߦ¹­£ï¢€Ÿ<çUd_’»ùdUñkù}’'¥„´iuû¶YÜÖæu”Äzcþ¨#xˆÉ!2O ¡Ù-UÃ*Ô¨¨iár&ÔMÅUÜ#gÅöîF6î 俱¢÷ +endstream +endobj +6770 0 obj << +/Type /Page +/Contents 6771 0 R +/Resources 6769 0 R +/MediaBox [0 0 612 792] +/Parent 6767 0 R +/Annots [ 6768 0 R ] +>> endobj +6768 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [149.649 601.832 474.431 612.113] +/Subtype/Link/A<> +>> endobj +6772 0 obj << +/D [6770 0 R /XYZ 132.768 705.06 null] +>> endobj +6758 0 obj << +/D [6770 0 R /XYZ 133.768 414.969 null] +>> endobj +6773 0 obj << +/D [6770 0 R /XYZ 133.768 400.951 null] +>> endobj +6774 0 obj << +/D [6770 0 R /XYZ 133.768 112.357 null] +>> endobj +6769 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F13 5291 0 R /F33 2429 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6781 0 obj << +/Length 1924 +/Filter /FlateDecode +>> +stream +xÚ­ÙŽã6ò½¿B@^d fó)i0dÒ9°ÙÛyš Yb·…‘EGÇtz¾>U,J-ÙîÉìbýb²ªX¬»ŠâÑCÄ£o¯¾º½º¾‘&ÊYnàïö>J±Ôd‘É53¹ˆn«èm,%“éæÛ®o„X+ÉTš'Oõš(VìR–&3Á8ÔÍue›âi“ò˜í/pLR&r9øâŸ8¾Úl•àñ×®Ý$<~¿µmkÛ–v³•šÇ÷c[µkû°ÝH»Ž6»äñØ?m‹z Éæ—sG<¥¤‰e&P«on¯þ¼p7ÄÂP‚å\Gåáêí<ªùCęʳèÑ“"•©ÀƒMôŸ«_®ø‰õpÐZ®Ì¯S&•>3?P-¨UÆ2­Ïí¿ É™àÉÇ°æ© 3Jœ{à„§^¸@óä² Tb–.PIúìÜœ¸A$\mÓ„eI´ŠåIJ—‘W΃b,±• SÏfcb³œóøŠº±¹÷íË®>¢`Þµ“K¦ÿë¥ Ôò” ïPYæÀ^À5ýg•½¯[ÐÒ÷›»¯þ–xü~û\,a}àô÷ãw¼z<Úæ,1 1»¾~‘]¯Í7fy*Ægu[6c½~v/Û±RëÔ\’ƒ>d®T¯»Á¾:=Ä—•!ƒ wdŒëpæKÌ‘ÆEþ›Ávm1Ôèd[Bì°wÕç°‘*öÙÀ:œ>º¾¯wM \€}Àû€ +Vñ ‹² „•ÃÛÛõñùPéÛÉtÃ$û‚ÃPÈø¾s\ :… ‹w>’ç\6–m¶I®ãŸv¨ÒûÚ}ó´1:…”EZ:4ì‹ø”Eo²u¯O϶”Ô"˦š|O½4z’@ðÏtýP ö`Ûîë÷nl*J©3&”Yë¸ epìmňN@ýU: Yu‹Z Pp‘«¸E½Dn@¯:@ö¶¨Ðj¸&ÓкèÂâ±+ŽGÛõØm51 $»¢¯Ë°œóíkÀ1¼{Î[ʼn?_‡ØÅÚÜ=„"ýëY¿Ðî¼TT °º0åL›ä´2¾È‚&Æ¢ÚŠÊ Je2¢ðnDXO r.¡zQB³•=þqo'.E9ŒECà¡>Xòqf72˜Ç4ï1IŠf´˜TYŠ “å#趬ѧ¾D¢+Àe!!²yA€v<ì™Çî>°ôz– ]‘S*üÙ¹¸»‡â¯5Z'‘d®+[Líë¶ +ÐþRêRžIh.ܘÇ[¯{€´%mÀ{Óÿuì,TšøX7 ®RÒÉšúPCÝòªÃ~÷´bßÑÎA»8Ô +ß4<¤w—Ä#*TíÃöèj/JzI”4 ^¬—þ1Siå­çIšrl@¶Þ‡ÅìX{¤é<¿hå $·¶²Õ%q!ò§®èõ‚ºToqrêìŸ#DdeažîžNNõY‡^Æ>ÚŽ8Ësƒ5Œ™©yÿ/íè{¬Ã\Âxá‹.ï]X€d=& «tBŒ£¦®{G»"`Á¶Ëa5zÈia,QKÅdžø**Âaì‡ UæÎÍD´ I¬„a:Wë,¶m…I Ë˜&*ÍBÛJó)<,”ƒ‘L?Oo/‹”¦ ‰9S‹qYw¾)ö„ô%Q­ÓŽ©ñ ~l0E‰tJÀ„êÀ] =ŒåþRâ4®}ð‘ ä¼æäØø^R4 z»o ¶ªêr@ß¡ÀX‚”œé¡e6p`ŠI-&sÂÊa~¬}ì¶rÄÓë†(ŸXƒ²d®%¡A Ú.xÕvÓó `À{ä¼U}—ªv׸"0öùŸMöÀÙý—ìWﺢ •& ¶á¡ÖÔ-Í_¡¾wRaFû§Ñq«— l œ<¨'ÖMAçRÐ  +W¢¦Óss,§ê@_uáÿPC­ë-„¶ŸpUð,¡š¦&| ]ljDq9Ìs¥L%ø–ÔLã,,joû7ÞF&›K®y”‘¾'ìÌ`Æ”+ßò´ººnW‚†ôí†ÆìÂC h•„'|xÖÜÌVÿX%7,Qø¸’ÌL/›ß¥Ô«3Ñ[xfz—A‘®«†= Âظ£™nìOY 5«ÜH>Gb CuÖ´¨´¥åÿQžÃ'Ês˜å9m”“©–6¦g® ÏÜÉâá™ëÊKc1=tQ/|#ëÕÙù‘ìŸï¨Î‰Ø§‚Òw½tbk>÷Œ» ì‰ð~ÖÙ½ž0 ?ÅÁøyâN¢Î +KÀÅI9 5ê¿ù”4}BES•-¿ e9SS6}k[Û…ñv1æÝîÇékHI‹„þ%Õ+‘ÑNrž]ø~VøÞÐmTo¡”—ëIðûëéÁ¶§*ÿ ´`J— +endstream +endobj +6780 0 obj << +/Type /Page +/Contents 6781 0 R +/Resources 6779 0 R +/MediaBox [0 0 612 792] +/Parent 6767 0 R +/Annots [ 6775 0 R 6776 0 R 6777 0 R 6778 0 R ] +>> endobj +6775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [140.521 468.774 213.078 479.678] +/A << /S /GoTo /D (delay__basic_8h) >> +>> endobj +6776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 211.119 220.074 222.023] +/A << /S /GoTo /D (group__util__delay_gb20bfffeacc678cb960944f5519c0c4f) >> +>> endobj +6777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 198.167 222.844 209.071] +/A << /S /GoTo /D (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) >> +>> endobj +6778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [315.515 123.999 383.36 134.903] +/A << /S /GoTo /D (group__util__delay__basic_g74a94fec42bac9f1ff31fd443d419a6a) >> +>> endobj +6782 0 obj << +/D [6780 0 R /XYZ 132.768 705.06 null] +>> endobj +909 0 obj << +/D [6780 0 R /XYZ 133.768 667.198 null] +>> endobj +913 0 obj << +/D [6780 0 R /XYZ 133.768 634.136 null] +>> endobj +6783 0 obj << +/D [6780 0 R /XYZ 133.768 230.093 null] +>> endobj +917 0 obj << +/D [6780 0 R /XYZ 133.768 184.593 null] +>> endobj +6784 0 obj << +/D [6780 0 R /XYZ 133.768 162.281 null] +>> endobj +6785 0 obj << +/D [6780 0 R /XYZ 133.768 162.281 null] +>> endobj +6779 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F52 3939 0 R /F33 2429 0 R /F20 1882 0 R /F36 2440 0 R /F55 3943 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6799 0 obj << +/Length 1849 +/Filter /FlateDecode +>> +stream +xÚíXKÛ6¾ûWèEÖZ‘zA€¦é& @ÚnÑC²L¯…•DGl6¿¾3œ¡-ÛÚlÓöØ‹5$‡Ãyñ›¡}çÖñ׳—7³Ë+;™—Åð¹Ù8"¼$N8‹¼8ÎÍÚyïJéÉtþñæíå•#æ@zA’$Ãõœ8ŽÄ%^¬.תÊ–«¼+ o;!3 ½0Úoyñ”ÌgóE |÷%Ê›/d仫¹ôÝ¡{XÜçeOSæL"+­wÝ|‘†¾te*Qüìç›Ù§™‰¾#F^æGNQÏÞô5,¾u|/ÈRçÞ°ÖN«À•óûì×™äUÊ«QâÉ "Õo¶ +”O·Î‹VyµüéÝD–~C·v;Ý©5Íö̸â½kõÁ÷esºœÓÞB7]Ÿ7ýoÙÜ2³U`fQéâ}v,8 b]7­ú4¨¦˜‹ÈeO~ð#¿lˆ~£Úþ+Lo¿9ñbŽ E¶:ÿRÖyE0ª+W•: Ž_KO„¼“ç.éÃn2ܬÂ/o¾Κÿ¹UÀ1› ÄЩ–(cU×Ó€U‚ȽߖŖfšü¥PÆÃc)Ƙ¡¦ÁÁéF]˜Ì¢”jo9·~{=sÞ/‚(q—t 꽈ŽcvJ Sïï =@‹ÏåZ¡¤Àøâg­ŠVå&9pتNWpËtCãÍÐ8Ê«²˜Ç‘ë~¾p¯y½ß–,¯Ökõ¸ÆÈñ„ÆÄt_V ¼ŸÃ­ÔíÊ~;•VhzÏ…{P¦ô¿¡+.…O3uwAÂÞ0™ŒkF·Žv ;šÃ«€ãØ‹¢ ¢¹NÁX3#%ðZíüàAŽM«kZÆ {ê&PÊÚ'9eRì  ÍH´R6k7º­MÜ`”¯ô°‡ªCDaxˆ¨7„ @°È¢L¾xr¾¾ï»ŸM JźÃõ]ësÖûFx&põR ²KÜu~¼ÈþËdsâú"†Àm<‚„wªE°ùgÑ7’‚`Œû±—´=Õi|œŒ½Ðß3Õ% +ý†³æñT?x +KÅR<’î. 8:ð!1çdÿ6²C)´ÁønX瓯‚H°¥@0¨G‚::9’Æ_‘؃;·pÁzËÜoóæDÒÞŒ€„=ìI|¸eÁ$ +5À0ŽEÌp8ôºÎû²È« +]KÉod+p< ÌÀTB¶¨|XÆ6˜f¬Š±*ŒU0µb¦VÁÈb\>Œ–:¥—d„ +c€yÖHÂúˆ/H½2ò¬“±džðçZÉc©)Pg½ä‰Ôèß5“çÀ¸`t(bg!C/€fõ`¼'œ_©>/+‹ó¯TW´åÎÔ¿qøì×@aâe `!¯ˆà6ÿCÙÕe|ƒøççz1‰ÎVRâEi2†¯ Û÷x•Bº“8MqÇ™-äõR™‹TñƲÞUª6EÙ:3¦%{Ã}/N"󞨭 È‘ÓÜ> +Sf: ˆ€¤w”Rzš!$l«ˆèvöfáp äÅMß‘T”Ð-@Ð\·ÕmO¤m26®À­[惦ä¶ÍkPψ?ª8ïSÅGjŠ€Õòà;£®tô-ôÐô‹µžKhPb¶.„eÓcÑžñnU-îšÑ[Pž9½¨ø\#žV S +ãaÄ-?s2lAuù±£ùn(¶Pgƒ[šÒà"“!)ú¨P]GU +– +½ÈSó@ª 6¥‡®²=k”H÷ºg†­ª5í[©)5ï0Œj×’Z=¢(׈â5JtºâxWör‚¶–é“~n]vù¾Ò•³¶v}7ù¹6…&voUÞ«ÐO)$niºÒÆ/?D:³nKya¾Ò²ÞÐw›·kJþ–Wú²VmGtÉßz0/ v­Ú€~¨/Ÿ3Oo3qº?@é@¤‰4ñMåèSœ‚kEIFódЦ@h[Bà;JIm>ÎÛ,)…r>›ËÓ˜"Ë𫎵ˆÈXZ.»)ÍÛ¡ibHÑ7¤ßHz;„C _¤ûœ@¹Ï[(¿C•·4&C€à-4²¨ˆC°P ÷]ð–1/Úƒ ɳÞ®úž{5aÞ+øͧl8Ž±ÉY2{ÜNõšÓ’bT¡k0Å&p¯Oò}¬^n)£Â†‡LæðÍ<õùmgs¾*›é[´Wyô|e…Œ[4Ê‹~ÈÏÉ«[Ý°ÕÝ·Þ?Ü^íÏ—ÐÓ¿b 2Xð¤ÇlÕ)£Ó®)2(I¨¿ÿ\8k¾¸Ÿ~T„;l¤Ë~jãri@yúÿ Y"ÿkýå?Ó_ÄßgÀä?nYê%Á÷üßfÿ½„wa¤ãÿÙ°ñ³Á}mභ©§¹ÜlÛzq¯Ç5 ÿ™ ž ~¡HßgjƒÈaó670ÒΡ-ªre»EÎÚWúË ü©É°”l +endstream +endobj +6798 0 obj << +/Type /Page +/Contents 6799 0 R +/Resources 6797 0 R +/MediaBox [0 0 612 792] +/Parent 6767 0 R +/Annots [ 6788 0 R 6789 0 R 6790 0 R 6791 0 R 6792 0 R 6793 0 R 6794 0 R 6795 0 R 6796 0 R ] +>> endobj +6788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.68 606.878 478.476 617.782] +/A << /S /GoTo /D (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) >> +>> endobj +6789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.484 594.923 418.279 605.827] +/A << /S /GoTo /D (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) >> +>> endobj +6790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [319.929 521.194 387.774 532.098] +/A << /S /GoTo /D (group__util__delay__basic_g4e3957917c4c447d0f9166dac881b4e3) >> +>> endobj +6791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.45 456.366 459.476 467.269] +/A << /S /GoTo /D (group__util__delay_gb20bfffeacc678cb960944f5519c0c4f) >> +>> endobj +6792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.613 444.41 258.408 455.314] +/A << /S /GoTo /D (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) >> +>> endobj +6793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 150.679 238.894 161.583] +/A << /S /GoTo /D (group__util__delay__basic_g4e3957917c4c447d0f9166dac881b4e3) >> +>> endobj +6794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.709 150.679 272.936 161.583] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +6795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 137.727 238.894 148.631] +/A << /S /GoTo /D (group__util__delay__basic_g74a94fec42bac9f1ff31fd443d419a6a) >> +>> endobj +6796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.709 137.727 277.917 148.631] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +6800 0 obj << +/D [6798 0 R /XYZ 132.768 705.06 null] +>> endobj +6786 0 obj << +/D [6798 0 R /XYZ 415.36 574.166 null] +>> endobj +6801 0 obj << +/D [6798 0 R /XYZ 133.768 557.439 null] +>> endobj +6802 0 obj << +/D [6798 0 R /XYZ 133.768 435.608 null] +>> endobj +921 0 obj << +/D [6798 0 R /XYZ 133.768 421.038 null] +>> endobj +925 0 obj << +/D [6798 0 R /XYZ 133.768 392.269 null] +>> endobj +6803 0 obj << +/D [6798 0 R /XYZ 133.768 169.653 null] +>> endobj +6797 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F55 3943 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6808 0 obj << +/Length 1498 +/Filter /FlateDecode +>> +stream +xÚ­WmoÛ6þž_!¤`1ËQ/YÑ[Ö t›·/m!È2 %W/mÓýùÝñHEŠtéöŤȻãsÇ{ŽgÜ<øùì‡õÙóW2 +R–F0¬¯¡‹£$ˆRÍ¢Tëmðv!%“éòýúõóWBL„•d*NÁ’•zA3s1‹ÃQ`èËêù!oËþvóÛ0©9ÓÂ+¼|Àbâ.—+%øâÍ~ÈîJj¾Ø”=MnLmÚ¼/›z¹*âáB& +žý´>ûp†ñ@Lœ,å:(ögoßó` ›¯ÎTšŸ¬è>P!ˆ +T¬‚?Î~;ã_¤Ž™Tú.’ “€†s¾x5ÔC°WM1ìMÝ^ †W2d +"8Uf©D·›rKêÙÖTùmV5Í!´ôŽk>”uŸd=ERë)À(f‘ƒeE3Ôý‰ƒ#Rh/F…â¡•äœ%* +V͆$|…˜ŒÒ †³p1te}C‹yMc²¢;ƒ©EaZ:B©YD5“RŸ<Å +–„ÊË] ÝdÑ5dp(z÷-uD“²w¹Ò‘@ÞÚ84]Wn*à ۸¶Q]!p6fny% u´»åK ®Uè«È€“Oö†j‹Ÿáb—/¥½E½p’ˆ Çû>ä]g¶4Ï;ÒâÌÞÀ*Òz0ì"Å šûlmCo:gx×góÇ7’NB·Eået̺©3cX.(©êÆ‘«¬‹jØÒUÂgXpÒ ]òªÝ™|{o»hö‡²‚³Èš1ÛÎI44v¦·w4W¢¤°­õñ¦ìp¢ÀFؘyöz7tqîç4Ø؃Æ8tÍ5Ž8¿þòÅéZRus¡ ,§É¾,Ú¦3ES{ŸŠÜ‘{ãÉ‹]i0=(@[v‚oà TV‘ÎkÆX5¦½œÓ^D§yKqùÿñ^³DÄ'y¯¤ç½’‘ç=.æ4ˆˆxóGxr©äx¯ÂÐòíEï¾?*¢é”ù2eï˜OdO$ 1ç‡/+™ò)óe’ú3pgÂ}Ü™sl6¥.S@Âs×û¸æ¹Êt1žé ++ls÷¯›¡¥e>N¨‚ñXV*‘3ꇠa©¯5¥>ÊYšâä˜ú³í;êãWk> ek«˜´×«Žý÷ôÆÔ¸uV löòò«U!±­ +xpN•E˜¸ª€S$¼JB¬ +øIU!ÑXp“„å×èØÝ4CO"2²6®î˪*Ç+¶DàdcN9øpÁ )é+FÈDõk°?‘S K´>nØ&")<üJÇ67;…<îÙîÕßд×$ˆ \gwFéØ]™>‡4sòÊtE[¼½±có£-61Kc.l aq"Á:”í¬?£t‡dŒÀú‹IPØîå©’èmÄLû+YïJ¤#äòÂæ*äÑ;ÎeehR`×NªÀûò‹u“jÁ~Sy½¢Ù:-[5P;¯Š¡Ê{¿l‹H|„a‘" “ëÆÙÉÝÆmo{ˆÆ¢Žxk*“øÍœ U +ÎÃ#ù ]ÛL'x»ÒÊg[gÑmb/ÞÞ¸¦üw+FŒF² ê }™[´…ØÕßÉ[5Oîþ󚎫÷ñ -y:iÉï<š#§²ÈrBŠé?"½_¨þZ¦Ò>$—ÿ&i•f<,3Ÿ{Sw<Ëpáo€"ÆwB…öH¨RÃò0rW<€ÂMY‡©^ìò–fYÖ.&3}NªÚ?Ëy·Ï2’Çm}t^4;ï|ß|OزÖÜdÙÅwüœÏQ·ÆŸVâäáÓÏ»Où”ÐaxBÝã0Mëµ/&PžŽã?;äU]û¸?ú‘Ëx¢ö˜W'ÿ§ ‹ÕSþû?Ã$(ôm“?ÃIÊ”Çø3Õù±w2<Ѿp4 ]oÎ/¥º®×†¿›nvœoZßãc‘h—*^¬ªrã,ln=Ÿ?ßÂórßåÛÂB* +endstream +endobj +6807 0 obj << +/Type /Page +/Contents 6808 0 R +/Resources 6806 0 R +/MediaBox [0 0 612 792] +/Parent 6767 0 R +/Annots [ 6805 0 R ] +>> endobj +6805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 292.469 253.628 303.373] +/A << /S /GoTo /D (group__util__parity_g4180eaa9b8f27f8efc589f3a3ba1724c) >> +>> endobj +6809 0 obj << +/D [6807 0 R /XYZ 132.768 705.06 null] +>> endobj +929 0 obj << +/D [6807 0 R /XYZ 133.768 667.198 null] +>> endobj +6804 0 obj << +/D [6807 0 R /XYZ 133.768 650.391 null] +>> endobj +6810 0 obj << +/D [6807 0 R /XYZ 133.768 650.391 null] +>> endobj +6787 0 obj << +/D [6807 0 R /XYZ 470.971 573.727 null] +>> endobj +6811 0 obj << +/D [6807 0 R /XYZ 133.768 557 null] +>> endobj +6812 0 obj << +/D [6807 0 R /XYZ 177.444 458.463 null] +>> endobj +933 0 obj << +/D [6807 0 R /XYZ 133.768 443.793 null] +>> endobj +937 0 obj << +/D [6807 0 R /XYZ 133.768 415.124 null] +>> endobj +6813 0 obj << +/D [6807 0 R /XYZ 133.768 311.442 null] +>> endobj +941 0 obj << +/D [6807 0 R /XYZ 133.768 278.895 null] +>> endobj +6814 0 obj << +/D [6807 0 R /XYZ 133.768 256.583 null] +>> endobj +6815 0 obj << +/D [6807 0 R /XYZ 133.768 256.583 null] +>> endobj +6806 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F20 1882 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6818 0 obj << +/Length 1825 +/Filter /FlateDecode +>> +stream +xÚkÛDðûý +«È»Þõó€JWÚB«JÀ‘CHEŽ½I,9vðãÊ ñߙٙMìœyžtÚÙÙ™Ùyï8ÂÙ9Âùúêåêêù9©—F°¬¶Ž¯”G‰¥¡¥¾³*œŸ])=%¿¬Þ=ãû#bø8I†ê ¢˜ˆ‹½88 }Y=ït¿É†ÂÛÏÈ /ð-õ‹w½X*_¸ßèê¨ÛÅR†Â=dy»ð·éh¿]ÈÐmø¯%¨ÍzMPžUùPe}ÙÔÀH¹2 ðæ«×««_¯Páø#·ø^*B'?\ýü‹p +8|çO¥‰óÑ©Œ•óÃÕ÷Wbìk¥À†4>Z#}áÉÄw¢0ö¤ +ɪ'õ„p?ÏÖëþp\·z·^?Y,})ýÁWFAºL½ +NÞ@¦'_¶Oú Bü°øÀ%3¬á”UŒ8ñ¨»rWë‚°ù>kQžÜgƒ ;–ÿ¬U‹²¥Æ”K•x2Œ&ª ÄÏ2ŽþZ¦U ¤>£…UBðÅ‹G¨OG¸ÅÅTåq8Ñç“™˜6”Y¹ ½8Nœ¥TžXÉ[ÝŠ¡[w×—¼b\o $‹³„E„’X}JÍrK)3"àŠS@¸HÆ"¥ðXš}Ƶմ6WA=6¶pš-×HÙ39Ô©wª@²>DýÐØÀó“Øx+U.P¨!ÄI>î#’ÔóEðw-b*1žHåã&q!1w ‘ž»DL»ìÏ]"ˆm—4w €&]âqW‚ÂŒ=3YžšøÄÃÚÃ,{¥û¬¬4»þ•îò¶<¢ÀIrœ“dÒ(| .—>x3!ñO ½-kMýfýÕwwœÜ`{ +9Sç–—7w¯RI0%ç~ZÖy5LÿÅ44/foyÒ3òd¤HÊj_‚›ý4v÷:+0BVað³þu([ÍTý>ë ߘU×}û@¤÷©¬,qÖjª¤?ЦÐ(Þ4.dÚ6|){ÉÐ×/*toaèÞ½ò¬(—Hÿ·X6J¹YQ”¯g¸@MMxL¦†À±¬õ +3ìÛ÷tò±¬*‚¬n´;Iᬈ³›J·YóÛ]ÉÊ@*çàêl$¼6£}i‹?Ïõ±Ï6¿{ÅЖõŽ`Rââ1ôèq]Ù³“ç§ýâ/L†6ïÒۈʆªç Z%-Ÿœý{‘ Æy#¡ƒÚ¼‘~pÊÄ[WvtdÁ,ÝPZcáÄ܇XèÉGFíYÈÝ"îÍí"[ á"àŽžà«d we×붛s»qOPÏMÑC>øéÇ[Ð7Æ5LÇÃ,Ec’PCG¡J­ÚpúíA¯cÛäºë Ç! ?ä,déìʱƑ}Tɱ*R ÕСW®Z¸º%°+ C(]m:çVç=SwL]ö¼2þØt]¹±ò{Keû‹Aî-ñYéšötŽÎ4ª`IÌ8 ¤Žp—.ª‡EºX«I©Øïq¦HÝ¢d[¨B[ŠLu < _0Îq³6;h> _Â&>…F©÷˜%º& *QÖgÑ3t ”çÖ¡Î1)f+ã¦ë†ƒ n %÷Ë@r3A6T ¹Y~ª?”­l{É„Æt’© ³+'và7Q&«/®¦n8“_w/oo×?š2¸y÷ýPw‚ +“S©±Íó8°oCA»qÂö:lV‰„†ø}Ä^ÃblÏÎ*ÚŸZDl Ím–sѸ‡4/h&ØÚá€ô jðî´1 ûr·ç)â¡7  écÞ³Ðzžñ¬¡»#”ÑÈÝÕƒ™\ã¹÷S×’¥£ëf”7ŽT‰}`N +×õ££Þ™2™‰”²&òé7Ž6pJÄÅý‰ uIw“ofŸÚóº]„Mç'6pï~x½–?lÕÀÝèéãZ`BˆÐ}k†YL^/Åy§lÞ)Î;Xù5-·ŒÞ3C¡;ÎBØLêiÆ z6ÙšWv`@äEM!jôÒã6o†ª ®¦ÆŽ‚È fù¾u¦Û0XÔ›Ö`ÄÚ+ïÐe†Ì4fÀ”õ™dÆ„‹Wgƒ¦Fßî†6£Ædƃ·ýåc¿±Æy?ùâômcV£˜AðœR7,±ÖºÀ8Žû+÷ú·ìp´ƒÌÐe;}ýŸ†hø<ýÙ7»oŸ— ·æÚÄKeú÷7 Ïø7ÇÒõଜÈîh³gò!kûu +æ³hìÇæÅ0þû¿ŸçQÚÿç/Ä›R'ê/iáâǺÿ|æÓ©1¼1œb3ûãJ +ßÂê¿ü´b¾Š È*ÿ|•¤ž²v|­k5É©Øðwðj?رœ€€_\Kuí'<¤ +‘Ìü˜”™lÐÏ–U¹a X†FdóÛÃN×—&ÿ €ëµ +endstream +endobj +6817 0 obj << +/Type /Page +/Contents 6818 0 R +/Resources 6816 0 R +/MediaBox [0 0 612 792] +/Parent 6767 0 R +>> endobj +6819 0 obj << +/D [6817 0 R /XYZ 132.768 705.06 null] +>> endobj +6820 0 obj << +/D [6817 0 R /XYZ 133.768 550.56 null] +>> endobj +945 0 obj << +/D [6817 0 R /XYZ 133.768 544.866 null] +>> endobj +949 0 obj << +/D [6817 0 R /XYZ 133.768 516.252 null] +>> endobj +6816 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6830 0 obj << +/Length 1293 +/Filter /FlateDecode +>> +stream +xÚ½WYoÛ8~÷¯`!5ÃCÔ‘ÍÈÕ¦…ÝMì¢@R²DÇÂÊ’+Kq³×oß‘JdGI¯`Ÿ4"çæÇ™!µ®-j½Ž»¯¸g…$ôà3žYLâ{å…’x!³Æ‰uasNu>Žßî¾b¬Ã,`ÝASõ¯96ÔùÄwïê*ÍvWªšFuBæ=úd@\Ör¿ü’º=g(µOU¶T¥3ä’Ú‹(.ØÅJÿÏ.íÂl¢YM•Q¥4GY\gQ•9ˆ¸œz6$ZœŒŸè µX'-Œ„TZñbpñ‘Z l¾µ(a`­Ö…%\`e(˜Yçƒß´›k! †Ð§¬ÉµƤåIŸp!uT;éÌz”Ú“ó“+þ]ñaH\ÏÕ“£ó³Íó÷/ú{I%ešÜß7âü¬²Ÿ» +Z*[©§ÿdÿû­šóü¨úŸv$ä¡^\UøX+½)Ò¤Ga•Õ•\JÑdBÓ=þêó¦Îe²yx09v†Œ¹»«—¢ÆfCÆÅb™fˆ"ü[Gežæ×=Vv@_š«®J¤ûHó8«ÿ¿‰ÿ—}'pxvvª¹Í4+WïF““¾„ãöèÀ¨GÀý"¼äÂË}^ò‡áå>/ÙÔ +Ú©CæáúÖûD¾f|“ý»š§+M)‡Iûs´XfêfWkÊJ¡·gu›ê€¿Q©4‘¨KJy®£¯am8ÝzÙš0¬Ç¥öÁ™ãQ{Üåì²ÎµXTé… ©Ãä….oQ~w/Ôi"ÖƒØ\ÍÊ(kjµTà-½ Ke·Ž'mšaOVêF$ÒŸ£ß&šˆ³"þI¨–3½äêϯ§íÆ·Æ f£\/L•QÏSuo=Ñ«ë´š÷…€ÒRűZVÑ4-B„¸‰Q+½âE]韕ÃlUUM ø`Ñi €‚Ž×õp‰8Â4zÜ^ÏÓÌ(4©C#AÖR}ªÓRõyÙXÀVѶÓ:à¨5±e—GÓ¤§ƒvèš,4Ú ŒVMËi[Å’™G\9ñZÄ_r.7d¬‹¡„Û³ÓÓlbó*¯M;kØÐÁCGHûÀ‘Òž_±e¾m«C>¾¹ˆ¹áö,N`©ºzï0tÊÕ†¦&ù³™}µÍç óôÿŽó®ºoŸ(íå°EXM·3ôM“‚ݨßÇE\/T^5ƒS{k8Ô[¹!K˜‘¾÷ºEEôÑ.úîñ¶ÌŒO<î¶%|Y››‡µ±! >Ü-â h®ê F¿‡S&£! Ü`clíÉä–8zO²»»9Ò + ýí™v³OùŒHOlFÙÉ7ÀF÷ámÔJÜ03-Pf¦žNýÄ4×_’c82lTÚofš9/*½­ËE®w€·lÚÖØ©Ù_§Y¦9¦jKJdOM+3ã0†­ÎÌQÝ`¯ˆ²ÚÀ¢i=‚¯(œ-Âx?ÂzJËÓ¨z÷‚ÊbÑ!fÆ¿Aáw"È{A.#Œû&"“¡£îgš›Üku^<*yüU´ÕͶŽiÖ>¨îtb¶ŽfœºNWK=º‘õ>©Â€øâ[Tí£Õƒ‡”ºÖ $¢m¯U®Êû0TÃw<¯M S±&\Ó²é{,0¤4èyBFÍpS:·‡Y:5¦·mUü|{­òíÿ pµÚ +endstream +endobj +6829 0 obj << +/Type /Page +/Contents 6830 0 R +/Resources 6828 0 R +/MediaBox [0 0 612 792] +/Parent 6838 0 R +/Annots [ 6821 0 R 6822 0 R 6823 0 R 6824 0 R 6825 0 R 6826 0 R 6827 0 R ] +>> endobj +6821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 347.456 242.989 357.384] +/A << /S /GoTo /D (group__util__setbaud_gddaa61b72aca51ed4835978d500f8755) >> +>> endobj +6822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 334.505 256.009 344.432] +/A << /S /GoTo /D (group__util__setbaud_g0b029ff580b042a27aaac4bd2ec925e2) >> +>> endobj +6823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 321.553 262.097 331.481] +/A << /S /GoTo /D (group__util__setbaud_g39ebec5d04e582b7b6ed9a72b973983c) >> +>> endobj +6824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 308.602 263.202 318.53] +/A << /S /GoTo /D (group__util__setbaud_g8188daef772f5eb3fc81dfee168905e2) >> +>> endobj +6825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 295.65 227.467 305.578] +/A << /S /GoTo /D (group__util__setbaud_g6977ce48ae3197f3f016b85d98380509) >> +>> endobj +6826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.368 220.506 306.328 231.41] +/A << /S /GoTo /D (setbaud_8h) >> +>> endobj +6827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.932 141.107 275.892 152.011] +/A << /S /GoTo /D (setbaud_8h) >> +>> endobj +6831 0 obj << +/D [6829 0 R /XYZ 132.768 705.06 null] +>> endobj +6832 0 obj << +/D [6829 0 R /XYZ 133.768 365.454 null] +>> endobj +953 0 obj << +/D [6829 0 R /XYZ 133.768 282.076 null] +>> endobj +6833 0 obj << +/D [6829 0 R /XYZ 133.768 258.788 null] +>> endobj +6834 0 obj << +/D [6829 0 R /XYZ 133.768 258.788 null] +>> endobj +6835 0 obj << +/D [6829 0 R /XYZ 220.901 194.08 null] +>> endobj +6836 0 obj << +/D [6829 0 R /XYZ 133.768 179.41 null] +>> endobj +6837 0 obj << +/D [6829 0 R /XYZ 423.927 126.636 null] +>> endobj +6828 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6857 0 obj << +/Length 1081 +/Filter /FlateDecode +>> +stream +xÚåW[o›H~÷¯@ê Îù¾s°¶Ð°v98ó'ï©¥¹ÈµàÏŸk„1d[Žf¹Y.Ñü™v«SŠ1¾ùNÞÒ2f°o»€T[½•8ÙæÆ ,D|R<´Ü‡å Óæé/°œÆàÔ2‚uÿæ7cH9Ö§¢‹Uÿ%W³ècšˆB¤In u]¦SǪ þàï4¬‘Vй˜kájpû k3¸ùAȹŽöP›®4f‚)©ŒµñàË?Í$·e|Ë$Fðþ`Œõ7ÊÉHº|}æy¿N¾„q}tu}¡XÀ-X¬ ‰,jJÀOeq_nB³T.çYºÚC²í"“ÐŽ`IA¶P\x—ƒÞw5Ì£b”3©ã†‚Þ»8ƒ¥Õ´ <$&A„Ú݈ޥIˆJ±*b©¨)ïï£LiýX¨ÍtÞ³ +ƒ8,ã ˆfòú>‹rØkžünP®q©¬ï0Çå-Æa‹ =É´C¶·§£yXÇ«ÿ«Žü¨ŽqZiðð_ÐÒìjÉh9¾˜Ð?å’ï +9}ZH Yæk +iº0ãÎÁ‚ÄŽ’»þaŸÈ]1ï™Í¢\dµ„°[9)·³ P)H$¡²Ó2VÖi?ÊÍ©² Â¥ˆª÷~7×#…5}”w…B$‹*°Zhæ\©²IªëFÊÍÀI/ï® ë#Ï°`¼¨LL“*#%x ÃÉÙÓMp¬²`²‘GÛÄ“~Ð&óLDgg®Âý–Èàp¾;X[&."Ø<4Y»h¦…ˆ½;Y{`ü_ÖÝ +ƒBb0ôLmHMÄ Y·á"¢Êì<ö⦸ϡ¶3q_vrx›ËŒAâ»6&uHÈv( àI‘ùF$a\Î@D Ðßn)Ù›é €¸cK)”–Ë(˜5m¦ +4Ž6yÐRüé#G]ø©*s…ò Še/åFuÏúêÉ« ó")¢ln€A=c*ù7c¯iŽÕCPœùþŽÕ–åc­ÒD„ùé¦rZÕïßL>ú“õz-‡›‹†¡ª7_‰¢Úhð-€w ‹ÂHl«:;àÆx×< ŠÕsǽiáxÏÁÙçÔ&5b!“¹À#G¼aÿŽRÞµºòÎ<ÙßÝÁLªpDmZOªn2kìt÷«ð(Ô1ùY>xŸŸãÁûý ?ËHºñÕh2ªšñ»ß8ñÒd('þ0ªÅ1Oè+Ðq^Ï%ƒ¢K}Ž“C_œ]—ž¦Šá—÷käM®>ä.s^Z,ïÇ<Øû1ê:Èf?ò)Ú|‚Z0%™Óþu\Ä,Õ¥.£$ʶ‡êT~üeÙ âP.LùGð)e§PiõÅX­æUolf[P7ÊÌ`¶>ŒÅ4lÎö +2]?.¢¤ò?:•öø +endstream +endobj +6856 0 obj << +/Type /Page +/Contents 6857 0 R +/Resources 6855 0 R +/MediaBox [0 0 612 792] +/Parent 6838 0 R +/Annots [ 6841 0 R 6842 0 R 6843 0 R 6844 0 R 6845 0 R 6846 0 R 6847 0 R 6848 0 R 6849 0 R 6850 0 R 6851 0 R ] +>> endobj +6841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.932 636.458 275.892 647.362] +/A << /S /GoTo /D (setbaud_8h) >> +>> endobj +6842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.932 569.014 275.892 579.918] +/A << /S /GoTo /D (setbaud_8h) >> +>> endobj +6843 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.163 501.571 273.122 512.475] +/A << /S /GoTo /D (setbaud_8h) >> +>> endobj +6844 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 212.35 241.992 222.278] +/A << /S /GoTo /D (group__util__twi_g8ec630c2063d0353c53d140b99382d80) >> +>> endobj +6845 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 199.399 265.245 209.327] +/A << /S /GoTo /D (group__util__twi_g8dce3e4b7e35355a8add9ed63d1fa3ab) >> +>> endobj +6846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 186.447 276.323 196.375] +/A << /S /GoTo /D (group__util__twi_g85cae14b4190042335d25ed9a1b72369) >> +>> endobj +6847 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 173.496 283.168 183.424] +/A << /S /GoTo /D (group__util__twi_gca64b973c51d6548a962c1d7cae0663e) >> +>> endobj +6848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 160.545 282.739 170.472] +/A << /S /GoTo /D (group__util__twi_g4c28186053b5298305b131ad3e1111f7) >> +>> endobj +6849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 147.593 289.584 157.521] +/A << /S /GoTo /D (group__util__twi_g91c107a74d268f8578d866ed1bbbd4f3) >> +>> endobj +6850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 134.642 282.261 144.569] +/A << /S /GoTo /D (group__util__twi_g5959251c4bd80f48b5a029447d86adb3) >> +>> endobj +6851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 121.69 282.819 131.618] +/A << /S /GoTo /D (group__util__twi_gd85222308836bfbe099255662ffb510c) >> +>> endobj +6858 0 obj << +/D [6856 0 R /XYZ 132.768 705.06 null] +>> endobj +6859 0 obj << +/D [6856 0 R /XYZ 133.768 667.198 null] +>> endobj +6839 0 obj << +/D [6856 0 R /XYZ 437.905 621.987 null] +>> endobj +6860 0 obj << +/D [6856 0 R /XYZ 133.768 605.259 null] +>> endobj +6840 0 obj << +/D [6856 0 R /XYZ 437.656 554.543 null] +>> endobj +6861 0 obj << +/D [6856 0 R /XYZ 133.768 537.816 null] +>> endobj +6862 0 obj << +/D [6856 0 R /XYZ 388.322 475.145 null] +>> endobj +957 0 obj << +/D [6856 0 R /XYZ 133.768 458.418 null] +>> endobj +961 0 obj << +/D [6856 0 R /XYZ 133.768 433.914 null] +>> endobj +6863 0 obj << +/D [6856 0 R /XYZ 133.768 328.124 null] +>> endobj +6855 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F52 3939 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6895 0 obj << +/Length 887 +/Filter /FlateDecode +>> +stream +xÚ½˜mo›:ÇßçSXš46œc®®®Dš¶ênÚì®ò¢"X‡nšl$½Û¾ýll¶Kž¦’W8æøøwþ>Æ9ôˆ]uzq§{I=$°ðä#þˆcØ÷ä Ž=APœ¢;‹R̈ý!~×½$d͘É~_HO¥ÕÚ¢æÎǾûÓày•Ïº«¯9þÔä+À®Ï+Ó?·ø +*ƒ3Ûa¬x|m;”ƒõ¯tã)Yþ«[iv@çù*_Ì—¶C¨Ì¢¯\w.âΗ‘Þ‘µ  ÀÑô©s÷P*_¾C€™Ð×Òô 1Wš5p†F¿;`”„š¢°®(LÁG÷1e\ãßSÊKŽjºs8€õÊ@g楢+ fTš©Ðâñä&šŒá$´]°ÎÿÚô¥Œà› õ~@R,8yaˆ[›qk7IÐLB_¤¯B›bŶ\ê=âðˆó¤ýRñ e®Q¼?s¶×KB„Qo2BÓƒö%92{z'èw²çüR Â&¸-<­ëtÀwÐk]”èˆlö‚öi®ÎÃÁ`7†í¯ÌOQá9,GnòàýÎ&N–AG +&N Ø6°ý²‰È6ŠmXÃ÷[ŽÕ¶?D·ÃÉõíå°yö˶¿Å=[þ%ÿg4¹ˆ"µè™Ú?£ô‰Tf‡ä¹ Gõ”hóØ®MÝ$À=pˆÇ£HW)¯í]ÔÒ–4”Bñ°ËrdF„«á£®)«Ü5KÕbUÑt öiãz*Ÿë§<ÖÞD]ó6IÓBåy¶\Ú&& Ù,ŵx7 +!‡`ê3äÈjÒó^¬Š.Â~“ʤå\G×ñEc~º^eU©¬LAÎܯ&.ôÓç§l¾JTñªª¨‹«úÑŒÅÄŒþÅÝ´Y¹k»ocm”<>ö¨AËg³Ì&Üz´¹•ÌôÈå*)LN,ŠªkñY·¦‹yšW¬Áƒ {nE¿ùõÇ¡‚fÁ~è¤I[hÅÊa³Å²)‰ë1l‡Á³]ð}íRpu4Ayfr®Ü×*ÏÝÁ¤É*ÑöE6Ír›rë?µ"YúVwWÈÆfõ\̳´–W"ÀrqÁQ]yXø,X¿" +fÕ>¾Êæ™”^hqÞñ§g“ÏÙT7\ý pFÙ ô/ +`ZU ÕÒ$eÔ…Í|Ë™åÆÃÃ÷j‹|ûþ˜Í7CþK™A! +endstream +endobj +6894 0 obj << +/Type /Page +/Contents 6895 0 R +/Resources 6893 0 R +/MediaBox [0 0 612 792] +/Parent 6838 0 R +/Annots [ 6852 0 R 6853 0 R 6854 0 R 6872 0 R 6873 0 R 6874 0 R 6875 0 R 6876 0 R 6877 0 R 6878 0 R 6879 0 R 6880 0 R 6881 0 R 6882 0 R 6883 0 R 6884 0 R 6885 0 R 6886 0 R 6887 0 R 6888 0 R 6889 0 R 6890 0 R 6891 0 R 6892 0 R ] +>> endobj +6852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 655.059 276.881 664.986] +/A << /S /GoTo /D (group__util__twi_gc16504b87d15d83b97bb0ce61577bb40) >> +>> endobj +6853 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 642.107 283.725 652.035] +/A << /S /GoTo /D (group__util__twi_g655325b6f8a1818103b126cc3774d8e8) >> +>> endobj +6854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 629.156 283.297 639.083] +/A << /S /GoTo /D (group__util__twi_g3c8c79b2ecb8d22358839890161cc33b) >> +>> endobj +6872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 616.204 290.142 626.132] +/A << /S /GoTo /D (group__util__twi_g532f0ffa12f684346c74a5cbec15950e) >> +>> endobj +6873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 603.253 273.006 613.18] +/A << /S /GoTo /D (group__util__twi_g0ecd2ca38d00279194460e65028a0533) >> +>> endobj +6874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 590.301 328.358 600.229] +/A << /S /GoTo /D (group__util__twi_g1064659d0758206d43d69cd582d1f5da) >> +>> endobj +6875 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 577.35 279.422 587.278] +/A << /S /GoTo /D (group__util__twi_g2de84bf7cbf1cd7ae43a6e0f0eeca719) >> +>> endobj +6876 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 564.399 286.266 574.326] +/A << /S /GoTo /D (group__util__twi_gcc1837317b1d45e9bb49b8e83cfe6d42) >> +>> endobj +6877 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 551.447 283.696 561.375] +/A << /S /GoTo /D (group__util__twi_gf92d03d0051d47f5b9375f0ef9293d64) >> +>> endobj +6878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 538.496 273.564 548.423] +/A << /S /GoTo /D (group__util__twi_g9e9e761d674793772e6b3f77fc9d7fab) >> +>> endobj +6879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 525.544 328.916 535.472] +/A << /S /GoTo /D (group__util__twi_g1c3ed5ed345d17972002b9fd07f4f829) >> +>> endobj +6880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 512.593 287.95 522.52] +/A << /S /GoTo /D (group__util__twi_g6eb3b4230887a8b73d7787ff231ea911) >> +>> endobj +6881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 499.641 343.302 509.569] +/A << /S /GoTo /D (group__util__twi_g4756103341a65e0e3889996cdf15b2fa) >> +>> endobj +6882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 486.69 279.98 496.618] +/A << /S /GoTo /D (group__util__twi_gc50f1a59c74c3109d4913dbecfb472c1) >> +>> endobj +6883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 473.738 286.824 483.666] +/A << /S /GoTo /D (group__util__twi_g6c0fa701fe9d96b0b7df29e8af154f94) >> +>> endobj +6884 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 460.787 318.166 470.715] +/A << /S /GoTo /D (group__util__twi_g4abaad098fd92bed63719ffb01802c8d) >> +>> endobj +6885 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 447.836 325.011 457.763] +/A << /S /GoTo /D (group__util__twi_g42234278f9b01b9af75dbbc617b97890) >> +>> endobj +6886 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 434.884 253.31 444.812] +/A << /S /GoTo /D (group__util__twi_g98d2570f965790884cf1774e716ec629) >> +>> endobj +6887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 421.933 254.575 431.86] +/A << /S /GoTo /D (group__util__twi_gbcff70642634cb53e9d8e93872f70c90) >> +>> endobj +6888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 408.981 269.041 418.909] +/A << /S /GoTo /D (group__util__twi_g90d373160b1d0a3f0c454af83c57df71) >> +>> endobj +6889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 396.03 281.334 405.958] +/A << /S /GoTo /D (group__util__twi_g8d3aca0acc182f459a51797321728168) >> +>> endobj +6890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 382.476 247.571 393.006] +/A << /S /GoTo /D (group__util__twi_g4440385d1818b4fe89b20341ea47b75a) >> +>> endobj +6891 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 328.219 239.083 338.146] +/A << /S /GoTo /D (group__util__twi_gf40f13cadca25e0a83dc096858907819) >> +>> endobj +6892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 315.267 243.506 325.195] +/A << /S /GoTo /D (group__util__twi_gc8a7cb1a91946c6e3955608a91371148) >> +>> endobj +6896 0 obj << +/D [6894 0 R /XYZ 132.768 705.06 null] +>> endobj +6897 0 obj << +/D [6894 0 R /XYZ 133.768 346.216 null] +>> endobj +965 0 obj << +/D [6894 0 R /XYZ 133.768 301.693 null] +>> endobj +6898 0 obj << +/D [6894 0 R /XYZ 133.768 278.405 null] +>> endobj +6899 0 obj << +/D [6894 0 R /XYZ 133.768 278.405 null] +>> endobj +6871 0 obj << +/D [6894 0 R /XYZ 250.629 243.276 null] +>> endobj +6900 0 obj << +/D [6894 0 R /XYZ 133.768 226.549 null] +>> endobj +6901 0 obj << +/D [6894 0 R /XYZ 279.221 193.457 null] +>> endobj +6902 0 obj << +/D [6894 0 R /XYZ 133.768 178.787 null] +>> endobj +6903 0 obj << +/D [6894 0 R /XYZ 249.992 143.638 null] +>> endobj +6893 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6927 0 obj << +/Length 668 +/Filter /FlateDecode +>> +stream +xÚµ–]o›0†ïù–vÚâÛp5MJצêÇÒ-AÊEW!Ü- è׿Ÿ‰!¥ùZÛ+Œs|xÞ×ç8tƒ¾±×£X8êá_#Âv9‚cGäGèÒ¤3b]ù§{=BÁLÍ»BešG}Ö/ҹصwE<Ý+b|Û–ËöËëÐ/+ryuÀ¾ÕaLtbu(sz0 ó_zÉŸ4‰‹8Mr«C¨̤žW¦6Ž|ãAT6@¤!š`MfÆå HýxŠ3ᡇyè 1[…’rá lv’»˜2ÞpSl+0?TR#û£àÛ 8´7»–à¦o 0»Aߢêaqn~=ÓðȽÊ"h|P‡¸Ø¡¶þZ¡ŽÏäDÆåæ½E¸)£Ozº¯¿dÃ"q&‹»,‘Q‹ÿ*¹Úp"–¤ðuR†çÝ` ܆ÍàjÙÇ^Pda’Ïâ¢X@/ñ¾¶=·³‰»ÍuÛ{%|›ãÿ«À]­Àºƒƒàübè×äl ò0Sm”…eÃèeÓ4¯Ú*®fJq#=L³ªÏÊ*ÛÚ[ýOå/ÙOw*úw+±“†¶:bð:!oYFÖÉié`²eŒÞyÙÞf=…WÒ¿©÷t¥„þEpÒï]Ôؽ-LORa!ë¾½N³Y£¥ÃÒ’û6Œ§áx*w€e+aGÝCýBv: Ã(ÊdžïÀ`¯aø uÏ ÊÝY}d‹Ïäo©L‹fÕÁ7I“(~¶¯Qó{DýÿßzŸvÙ.·‰úá`á2¯y‹ðfNåűLdö [£ù·wzp('z`W[û”í«®¿Q€jt]VA}Š‡óúÍ,æši<®2ŒŸª”éãÓL–%ÿ«\s? +endstream +endobj +6926 0 obj << +/Type /Page +/Contents 6927 0 R +/Resources 6925 0 R +/MediaBox [0 0 612 792] +/Parent 6838 0 R +>> endobj +6928 0 obj << +/D [6926 0 R /XYZ 132.768 705.06 null] +>> endobj +6929 0 obj << +/D [6926 0 R /XYZ 133.768 667.198 null] +>> endobj +6904 0 obj << +/D [6926 0 R /XYZ 256.836 639.611 null] +>> endobj +6930 0 obj << +/D [6926 0 R /XYZ 133.768 623.601 null] +>> endobj +6905 0 obj << +/D [6926 0 R /XYZ 276.113 589.792 null] +>> endobj +6931 0 obj << +/D [6926 0 R /XYZ 133.768 573.782 null] +>> endobj +6870 0 obj << +/D [6926 0 R /XYZ 282.957 539.973 null] +>> endobj +6932 0 obj << +/D [6926 0 R /XYZ 133.768 523.963 null] +>> endobj +6868 0 obj << +/D [6926 0 R /XYZ 271.102 490.154 null] +>> endobj +6933 0 obj << +/D [6926 0 R /XYZ 133.768 475.484 null] +>> endobj +6869 0 obj << +/D [6926 0 R /XYZ 261.628 440.335 null] +>> endobj +6934 0 obj << +/D [6926 0 R /XYZ 133.768 424.325 null] +>> endobj +6866 0 obj << +/D [6926 0 R /XYZ 268.472 390.516 null] +>> endobj +6935 0 obj << +/D [6926 0 R /XYZ 133.768 374.506 null] +>> endobj +6867 0 obj << +/D [6926 0 R /XYZ 278.873 340.697 null] +>> endobj +6936 0 obj << +/D [6926 0 R /XYZ 133.768 324.687 null] +>> endobj +6920 0 obj << +/D [6926 0 R /XYZ 285.717 290.878 null] +>> endobj +6937 0 obj << +/D [6926 0 R /XYZ 133.768 274.868 null] +>> endobj +6923 0 obj << +/D [6926 0 R /XYZ 254.514 241.059 null] +>> endobj +6938 0 obj << +/D [6926 0 R /XYZ 133.768 226.389 null] +>> endobj +6865 0 obj << +/D [6926 0 R /XYZ 199.71 191.24 null] +>> endobj +6939 0 obj << +/D [6926 0 R /XYZ 133.768 176.57 null] +>> endobj +6914 0 obj << +/D [6926 0 R /XYZ 277.099 141.421 null] +>> endobj +6925 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6942 0 obj << +/Length 656 +/Filter /FlateDecode +>> +stream +xÚ½–]oÚ0†ïó+,í&Ö†ñGœØhšíZ­C푸è*ˆ[¢è’0Ú?'Œ¢ðÕ5»Šíœœó>Ç'ÇÆà`piu|«yA] ‘tõÿ„1乸’#Wà‡àÖ¦1ïü«æ!ÆL¯{R{ZY}4/ÜyÈsÖ‹,Š›Ù2B“*_9/M?íð%Jƒl0‚mð6(Çö(ÊÌ`¤?Í(T?0¦³(‹æ³6•’ÙTÈܵõÙ·~YD{Àl@$1ã©u{‡A¨_^Œ˜`¹2æhS’ƒ¾õ݇3É=DßÈ$¢ˆp-cl¿+T*£Ù û½a»×voúþðò¬ÝíÛsû쫱ÀOž(’ƒ7¢aÐ r©câ‰NHäèæ³xž ŠŠ•~·ý¾—{@IífñAÍTÄf2âb”¨±Š åöoH¸­Âº ¼–¨l‘ÌTX±sZœ."·“à•-t;n)ȵb{û°Ï!ã:‚䶥Žµ.ðaô0È‚Z ÄI×æ!_bˆ7À¸6‘þEîc©þØ‚ÿú#Q|˜áP]É×CÕ]n”¼¯ªè¤¨ñ-j‘Ò} U}ðˆM«½ŸQ¶Wµ‰°o¾•’ÛGHN³ù£±Ÿ'¥ªGdZÕj–fAR´òñ|F{ü6¡Y]N¢¸•ªX³“ðœÝxþÞSªƒë=¥zµî*߇}¨›tNjï:³teÙ.ñ[›š_àÊ‹WåEN +ä±S®qåõÍEÒcbóú&$bn‘›ËUoX—a¹eþdaçjlŽyÜ¢¬•Ÿ–ùŒb\Œîs˜²´ƒY™g7âhTx=.çOϺ%m#ÿ71Õ4 +endstream +endobj +6941 0 obj << +/Type /Page +/Contents 6942 0 R +/Resources 6940 0 R +/MediaBox [0 0 612 792] +/Parent 6838 0 R +>> endobj +6943 0 obj << +/D [6941 0 R /XYZ 132.768 705.06 null] +>> endobj +6944 0 obj << +/D [6941 0 R /XYZ 133.768 667.198 null] +>> endobj +6912 0 obj << +/D [6941 0 R /XYZ 394.717 639.611 null] +>> endobj +6945 0 obj << +/D [6941 0 R /XYZ 133.768 622.884 null] +>> endobj +6915 0 obj << +/D [6941 0 R /XYZ 382.364 589.792 null] +>> endobj +6946 0 obj << +/D [6941 0 R /XYZ 133.768 573.782 null] +>> endobj +6916 0 obj << +/D [6941 0 R /XYZ 249.992 539.973 null] +>> endobj +6947 0 obj << +/D [6941 0 R /XYZ 133.768 523.963 null] +>> endobj +6913 0 obj << +/D [6941 0 R /XYZ 256.836 490.154 null] +>> endobj +6948 0 obj << +/D [6941 0 R /XYZ 133.768 474.144 null] +>> endobj +6917 0 obj << +/D [6941 0 R /XYZ 279.59 440.335 null] +>> endobj +6949 0 obj << +/D [6941 0 R /XYZ 133.768 423.608 null] +>> endobj +6918 0 obj << +/D [6941 0 R /XYZ 298.678 390.516 null] +>> endobj +6950 0 obj << +/D [6941 0 R /XYZ 133.768 373.789 null] +>> endobj +6911 0 obj << +/D [6941 0 R /XYZ 305.523 340.697 null] +>> endobj +6951 0 obj << +/D [6941 0 R /XYZ 133.768 323.97 null] +>> endobj +6919 0 obj << +/D [6941 0 R /XYZ 267.237 290.878 null] +>> endobj +6952 0 obj << +/D [6941 0 R /XYZ 133.768 274.868 null] +>> endobj +6907 0 obj << +/D [6941 0 R /XYZ 354.707 241.059 null] +>> endobj +6953 0 obj << +/D [6941 0 R /XYZ 133.768 224.332 null] +>> endobj +6908 0 obj << +/D [6941 0 R /XYZ 379.604 191.24 null] +>> endobj +6954 0 obj << +/D [6941 0 R /XYZ 133.768 175.23 null] +>> endobj +6909 0 obj << +/D [6941 0 R /XYZ 261.628 141.421 null] +>> endobj +6940 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6957 0 obj << +/Length 1040 +/Filter /FlateDecode +>> +stream +xÚ­VÛnÛ8}÷W(° °+†Q— (àÔM±mZ`cmóÐ-1±°²”•ä¶öã;)[¾$v€}"E Ïœ‡8÷qÞ.’ÑÙ% œÇ ÉC9Ça9A,pS'Éœ¯ˆ1Ì™û-ùpvIéÀ˜ÃzRgõÚXlÁ…8ô×iµ|íY¦j—FH¥²U^ŽbLc¿ß÷æð¹ëqJÐd Øõ˜ (oÕ²q=JáˆÅDCÞ%£Gv‡<¦8&ÂI—£¯ßˆ“ÁÏÁ<ŽœéÒá>˜R½±p¦£¿F丌"ÄŒ‹Œ3Ì DA¯2uK+•ášÜ̦ÉlârÆn,PâÆgŸ]ƒ+zûÑ’Ÿo‰Õ„ %ŽGC0ß—ÉVû¶–e³Ì[På³òÙâ“5f­R•»L ï.äÛ×ð!â4Þu'|ΫñŸÖnDÇÝ(dÓûCóÇV=åÚÿåUôœWÓ«ñl'$ã|m¿_fv˜}»ªË±ŽŸaÝI­HzÒäÒM+k´*³¼Í«rOüÓ)rrŒb—'OÍò-$¹™ZÕ~{Âvöi<ý¦ô¸;ÌŠ½”Í?.Ž¾XÌ·à9ÀSJ×ø/ð‘žèãw—å7fH+uÞU¬¾ÒôãÙ%çPãPKƒ LâÐlÖšÍ.¾XéB­Ë›ï`ç[ì|ûÝ÷-å~GŒ +Ž /Æ~`ÙmŒ¹6~Bxo½•…XD–\²1xDQQéôÿ¡jóÉÍ0ÏÛFϪîÌŠ‰¾žÉÚn­U£êþJw+:%õØöè6tK¥­î]$ 8v½ø +Ì WÓ 3Ie]?n€ú¸Àà l„àèTšt—1[=[߉…5ļwÏ\ì]> ~AB±'êæúÏä½Ï§U c-³ œiÖ$Œ›¬gácE{ï?üØñG Ì^00—œø'uÛД„˜ð=À¶8¹ ØÛ£·&‚õ1‡~bã-îoðDµ2/z¤ D¿ÎºxPë!P²È»ä h¡df!¾B™u¨§€^6æOãR¤ì“à#°‡Œ/Ì/ÛÆè=íB¶fqÕZ°V™q®Ì©[†ï +¸Ëy\^š’¸;&¯Vöhs—êü²ÇÀí;þ­u‰ "Ÿ×.K ­¦s}èʾ KAÚµyìÊv%‹ÂÛ¹Röêè´†­ÒÆ–™½\ùRáS +¢ÃˆÙ¢ê¯ò2-V° ¬¯©Ø§á›-äƒMbῤEì[èñhØBË+ë{Uªzà¸$Y¬ú´KÍÄ7%猟ÓÈ|1BììNk\Y±d'xíòy­tû›T?ïU¹ëò/Þ?ïç +endstream +endobj +6956 0 obj << +/Type /Page +/Contents 6957 0 R +/Resources 6955 0 R +/MediaBox [0 0 612 792] +/Parent 6838 0 R +>> endobj +6958 0 obj << +/D [6956 0 R /XYZ 132.768 705.06 null] +>> endobj +6959 0 obj << +/D [6956 0 R /XYZ 133.768 667.198 null] +>> endobj +6910 0 obj << +/D [6956 0 R /XYZ 268.472 639.611 null] +>> endobj +6960 0 obj << +/D [6956 0 R /XYZ 133.768 623.601 null] +>> endobj +6906 0 obj << +/D [6956 0 R /XYZ 297.602 589.792 null] +>> endobj +6961 0 obj << +/D [6956 0 R /XYZ 133.768 573.065 null] +>> endobj +6864 0 obj << +/D [6956 0 R /XYZ 264.477 539.973 null] +>> endobj +6962 0 obj << +/D [6956 0 R /XYZ 133.768 523.963 null] +>> endobj +6922 0 obj << +/D [6956 0 R /XYZ 240.865 490.154 null] +>> endobj +6963 0 obj << +/D [6956 0 R /XYZ 133.768 475.484 null] +>> endobj +6921 0 obj << +/D [6956 0 R /XYZ 304.039 440.335 null] +>> endobj +6964 0 obj << +/D [6956 0 R /XYZ 133.768 423.608 null] +>> endobj +6924 0 obj << +/D [6956 0 R /XYZ 285.807 316.413 null] +>> endobj +6965 0 obj << +/D [6956 0 R /XYZ 133.768 299.686 null] +>> endobj +6966 0 obj << +/D [6956 0 R /XYZ 204.961 266.594 null] +>> endobj +969 0 obj << +/D [6956 0 R /XYZ 133.768 251.924 null] +>> endobj +973 0 obj << +/D [6956 0 R /XYZ 133.768 223.255 null] +>> endobj +6955 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6974 0 obj << +/Length 1956 +/Filter /FlateDecode +>> +stream +xÚµXKÛ8¾÷¯0°‡•XM½¥ìH: ç0™éñÌ’AK´MD½¢Çÿ~«X%¿VÝfÝ,‹ÅõbÉb¶‰Ù‡»·Ë»û÷a:+ü"…a¹™Qägi>K‹ÄO‹`¶¬fŸ¼0ô£pþûò‡û÷Ap!?+@““ú+I\©Ëü,> ”¦ÙËþ¾Rûnäž*e¯*7¡8/ü ˆÇ}ÿOŠ_ÏQ ¼wWŠç‹0žîUcç‹ Eä…E€ªî—wÿ¼ `·˜7üB$³²¹ûô»˜U°øÃLøQ‘ÏN´™E1ˆ¸±žýr÷ó¸2£˜2c’ùa”ÌåNYPÓ,$eÇ<;ì÷µFà8;è~§[¢ûì‰Ú)Y©ŽèÏB„5ïÝf®eùå0P-+"«ëµ®u$V§¤5­E[~0Ž_$ŒÑ´õqž&Þ+0_zÖÀæž©+"¬ºR]šŠ)ˆÔNZ$2o­TK¬C§û~œ8 HìáÚaâ}Õf°Ä©õº“Ý‘&_çAâ©ÎjÄé–fA| 0'à¯Ñ"ð©Ûþœ5Eè m¯kZÒ½%BµÕÂlµÞ(¾ˆáÒ¿ZÞn64ÊaIÇÈìÙN¹V¯€ÕºkhBrË|¨í;Ón§ÁWÚÂ%;¹…¬˜yŽû”¤ßÔµAGt»¥X·{UjŒŠ’çG øíÜ„ÉÐöªë†}oY½¸VÆ~YåÔ?¹ûdž¬*݃hÖ·µY˺>ÒLµr];8;ŸA…`hYîh©bŸ—êÏó$ñ,q÷²ëu9Ô²»Q@ÓV©ÊžŽ¿´[záô¬ Îã0± +ÔBpa®7<‚òyో’È8fÒœ’Ô-XÝ¡i‘zÿØ隬iÔíÞÉ C„#=@¸¿¿œ®“ûEX\Ãygh¤`Aê`º/¾ïw“¶çK@ÒýÛm^ž¼ \œ^õªØ,BVMœUEœ“ªMã’Ûg/‡÷ÑÝB$!íy‹µµ„Ú 5NRï°sï°f Ö`YË+’›¡-1jà^‹(ɼ§ÍÍ&YÃSV‰{À‘$UAîCvlT§ÚžVι6æ\G^Q°Òa.”ér…TVüBõ²í±Æ »=Ek^<IœÉÖÀE»S]8€Æ¿2. òà }ø¢`pŸÃ0¹–ú´H0¤zH0.ü+ð3¥V+šEÃ]ñ>ìzº-·?ÏNJÝÊí)(ƒÁ3@Ú¶cƒUîäùãêzÚ6ôã$ú>ü?U +뼞ßÅÈè.‹×T³‘ö‹ƒs¾Z=>=<Óüo4œ„þ˜Ÿ~\>>?ÏcáýúÓr +)šS6êÁq“DZðÃ<åÕ +À<¯ÞÌ‹Ä[.Ÿ™h²ØOƒQ’²šPº ‰¢ìº!ù¸¶¦V=‡ÿÓÇÑÂ¥kÊÍÑs¼…ævűë¦p”4`hÅ•¨7ó J¼ßžX0Ú…… ÃÿÐÞ­KâŽù $$;Øã6Ž1ðö¦ãUYÂn¯¹'‰J/¦š‘N•¸[@q²è؆jÌ¡ÍhÆ3§‹úKÇÅ UѤ5ÔOrOâî À%FŒ*FÀ |'Yöl8®Y}eZ¦ú]g†ínª^õ’)¹ÑX¢¹ÛŠºWÛ~ †0tv¨é ?vÚqÄ¢„aQ qT³塧é»j=qöð2ƒ½¨^º3ÕdËLí×T§`²ŸàO¯0¾¸I€IJÙ0ßpø¾¢hp>ŠÝ·RE(â`Œ0á¾i˜Ë¡«èÞUÊv<ltä‰c5t8Ç©,©ÎsŽ¶¼ 3€Á¾ª%ä@9û‚Œ;æTáËâçÞ§àîW)|€p%lõÚonÐ@V%Ý–õP] 1–Ï© WŒ ï¬p.¼d |¹0°%€ï äVµªŸ¯Þ0¾ 7ø€c > endobj +6967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.315 352.09 315.824 362.994] +/A << /S /GoTo /D (group__deprecated__items_g46f0b87ccc2ab63dea1ff28207270b82) >> +>> endobj +6968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 340.01 269.917 350.541] +/A << /S /GoTo /D (group__deprecated__items_g9a3fe82a7199e9e84f7be6a5f23127bc) >> +>> endobj +6969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 327.184 245.887 338.088] +/A << /S /GoTo /D (group__deprecated__items_ga0b2d3a87492967c01615f32f30d06d5) >> +>> endobj +6970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 116.1 204.224 127.004] +/A << /S /GoTo /D (group__deprecated__items_g5cfa4750a0633c34c7a361d8fd62c042) >> +>> endobj +6975 0 obj << +/D [6973 0 R /XYZ 132.768 705.06 null] +>> endobj +6976 0 obj << +/D [6973 0 R /XYZ 133.768 580.877 null] +>> endobj +6977 0 obj << +/D [6973 0 R /XYZ 133.768 331.169 null] +>> endobj +6978 0 obj << +/D [6973 0 R /XYZ 133.768 279.293 null] +>> endobj +6972 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +6990 0 obj << +/Length 1153 +/Filter /FlateDecode +>> +stream +xÚÍWßoÛ6~÷_!`@!ß’´º4 Ò¡æ}IŠ@–i[›,y’Ü6ÿýŽ"eK.“4ú$êx<Ý}w÷ñ„½•‡½«Éï³ÉÙ[yɳ¥GCq”x‘(’Ä›-¼ŸRÄhðiöîì-!eòX‚¥Në¥Ñ™‹QÌ÷ +YµÙ¦íÙBmë€$¾ÊÒV-ÐÚa8‘ˆHÞŸûí)ÃçAÈöߌ !ØÏ[µi‚Š™OeÅär6ùwBà4öÈ b‚$^¶™Ü|ÂÞ6ßy1™x_:ÕÇ8¨}°ð>Lþš` #Á‰‡p +Œ(Ž½HĈ2aܽ¥Tt~ôç¼›P`ìÿ²P·ÓRÙMí]½²nN;5Rµk·GÇý[,ðç€ +?-~5o«º)1oz,yuØ°»½‘]ì…„")ÈIüÎ˹ËíGu:COâƒÞX‡°ü4 6óü ·çù#pBŸñayè£(îûèoÛhà +¦C…A¼ÄѶ$A‰<ðÁK‡9ø Lö*Úõ÷[àBMÃ)=)~ÙÿÀ¯“¼xå‘qDbq‹aGì#ÎzCŒâï€0yÂ#ª I#‰_)œŽ(P#Æš:-x]Œoªl·Qe›¶yUj‹ºˆ)G ÜFÄ?€ßƒ<Ugç‡@MbŒ8@NjôPdÿMi…”b” ±]Gcæy”YŒ¤Œ¼ÇHpKs…Jkã/cöäïÛ\uu.†îa½N^¨¯ÿ<Ü»œ 8Ù:(-3$÷yAÎ’ÄI9Kn_tGU£Êt^¨;õµU€›ðË´¸ËK¼I›Æõswwy}1±ð^é©lY˜!WÀ%§È3FfëF Ƶ+Y]é%ñW¹¾>뀔ÝM³L5Ùn+#k×Ê‘ BXïÓquýþÃŽ|ÀCõ]+ý±UÞh;ã°ÊUEÓ‹ “À”yZ÷½¶õ»I7ÊÄ-1‰‡êó€PÚ4yeRvØQ[ÝÄ-Xœ|õ]Å)L·f{Q©Î¿H·VØùjÝvnéë­“ ¸ßZãÕÒHFÀƒ|®¬OR “:`ƒcSåöN´Ç[làT™´¤òB··UXšgYõÍ_Y‰E"¶æ +ýbçút^é}ÓWVTÛEO+ 5a7'17'ÁÌúŒõq²p»Žl¦*í¡«;ëù²®6vÿû˜ŸÀô&å ¨ŸÃ´†™…™aæÁ¼=!̧¼˜÷>;^e‚böœ_×þÏ?B2fÉðÏþ½Yd!¼R¥ª?Ó• q¶ÞÙAQefÁ̓àsÊÎIbÞ(ÆvµÔ ¶Õ@j–©ûa‘Ï­…ù}?{~½_©ò8äÿ:Áù +endstream +endobj +6989 0 obj << +/Type /Page +/Contents 6990 0 R +/Resources 6988 0 R +/MediaBox [0 0 612 792] +/Parent 6979 0 R +/Annots [ 6971 0 R 6980 0 R 6981 0 R 6982 0 R 6983 0 R 6984 0 R 6985 0 R 6986 0 R 6987 0 R ] +>> endobj +6971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 654.082 209.205 664.986] +/A << /S /GoTo /D (group__deprecated__items_gab324bd721e821e275f00c3478e240c9) >> +>> endobj +6980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 641.131 204.224 652.035] +/A << /S /GoTo /D (group__deprecated__items_gd6488a48837d179b1833e2f48dac9665) >> +>> endobj +6981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 628.179 209.205 639.083] +/A << /S /GoTo /D (group__deprecated__items_g3a3b4c1ddf0c05701f933d70de330f08) >> +>> endobj +6982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 614.894 203.118 626.849] +/A << /S /GoTo /D (group__deprecated__items_g014ef751e83f97569c06f3cdd888f3f7) >> +>> endobj +6983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 602.277 203.666 613.18] +/A << /S /GoTo /D (group__deprecated__items_g08ee265dc07048dbb5a8b6c84551d520) >> +>> endobj +6984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 520.352 182.276 531.232] +/A << /S /GoTo /D (deprecated__deprecated000011) >> +>> endobj +6985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 415.39 182.276 426.269] +/A << /S /GoTo /D (deprecated__deprecated000003) >> +>> endobj +6986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 274.273 182.276 285.152] +/A << /S /GoTo /D (deprecated__deprecated000008) >> +>> endobj +6987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 169.021 182.276 179.901] +/A << /S /GoTo /D (deprecated__deprecated000006) >> +>> endobj +6991 0 obj << +/D [6989 0 R /XYZ 132.768 705.06 null] +>> endobj +977 0 obj << +/D [6989 0 R /XYZ 133.768 588.703 null] +>> endobj +3612 0 obj << +/D [6989 0 R /XYZ 133.768 566.391 null] +>> endobj +6992 0 obj << +/D [6989 0 R /XYZ 133.768 566.391 null] +>> endobj +3605 0 obj << +/D [6989 0 R /XYZ 249.534 475.829 null] +>> endobj +6993 0 obj << +/D [6989 0 R /XYZ 133.768 459.102 null] +>> endobj +3609 0 obj << +/D [6989 0 R /XYZ 409.87 335.001 null] +>> endobj +6994 0 obj << +/D [6989 0 R /XYZ 133.768 318.274 null] +>> endobj +3607 0 obj << +/D [6989 0 R /XYZ 282.251 229.749 null] +>> endobj +6995 0 obj << +/D [6989 0 R /XYZ 133.768 213.022 null] +>> endobj +3606 0 obj << +/D [6989 0 R /XYZ 282.251 124.498 null] +>> endobj +6988 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7004 0 obj << +/Length 1136 +/Filter /FlateDecode +>> +stream +xÚíW[oÛ6~÷¯° ¨^tcv:¤ Ò‡muÔî!- Jflm²¤J”ÓüûŠ”-yêÒÁžö`óöñð\>agë`çfñs²¸¸¦¡Ã¡IŠÂØ y€BNœdãÜ»”"F½OÉÛ‹kBF`óI=ꃘˆ‹PäYµ¯…ºØȺñHìÊL(¹A»Á1G„ûþŸž|é-ÁîÕD°·¤vs%÷­·$„bæRδ¨Å›dñyA`7vÈÈb‚8œl¿¸ÿ„ ,¾u0b@‰ÞX8w‹w ü¼ƒQŒÜˆ( +@Œ±ûÝF~Ę–Ò¨zûKòfµòvßÿ–|Änóm)ö€ ˆVŽZ’…Ô7â>xœº¢èäeoÔ ÌÐ^\3nâ&Z#ØL„yh6ª<‚ö3ÐÇê¥þÌ~f½J5yÚ)¹^Ÿ@ú——J6MW«Wë5(¿Z¿N’ÕÞª߃•±Fæêsä‡Á·+05K«ÙÚ¨­nÎ]¾ÄˆƒuK꣈š3Î1ï%ŠGB¬ ?Bo…Ü–ª©6]&FÌç®(M{´Þ w¢Ü²ÑƒØ}èÊLå•Eª° ¦+­”Ç\íLo[T©(Îd¶FN^æ*Eñd–e¹<ÈXWŠ´€{dî@²Ë[C'ØVy4píx¤¯Z}í¢ªL›Ê3°<ý×z_ÄÀ´þ¸Èw÷"k*3¹v.•²4S]Û_Hè¥OfMU½‡’ÀµÓà ®­%x¯ÜšõZVu!M?/íæ¨E«^é.øN™5{:3§Ï¸Kçý3ÖպłRºG`¦‘ûJkwÐÒÂz-$Ìð¡S]cñ×´}ì5¦z0 FcèyÚˆæÉ Bæcß}ßš0úqWYM<ˆ¥(•Ý\Mì°Wœ‡m!{0¦ç„»‘KYjF˜á„QýØ´ O®ÉJà ‘aåD =¶ýÜåÙŸÃÃd]µm~z…I¢3¬Ÿf~<-ŒÑÿœñN9.@ ^0ÉýÞÀCi\¯Æ +‘(ÞÙä)ã®±8Š‘OÙ€Â{û«iµÙ3‚}‚¢ø¸éšJfˆ“3) A”S°³w6újÀê‘ßm̦áù?`ÿIÀÎnX<°6ÍÏ.Xš-V¦–ôÇ¥X"¾·Zý1£ík5 šÌ”¦$†ÔvªyçŠ^x(y|”§Y}¿‰1GSÃÎX!wr.°$@ôÄÐôYÆôïßK2fJ™£E³e:QÄþM‘>ç!”Â,çð•Á†rôF–²9}6TÖÄdיΕÌLÇ7 Á—”]’ØŒ(ƶ÷ K®Ê>[BÇ"w ユÚÇîªúò´5%ÊØä¿ól^ô +endstream +endobj +7003 0 obj << +/Type /Page +/Contents 7004 0 R +/Resources 7002 0 R +/MediaBox [0 0 612 792] +/Parent 6979 0 R +/Annots [ 6996 0 R 6997 0 R 6998 0 R 6999 0 R 7000 0 R ] +>> endobj +6996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 577.312 182.276 588.191] +/A << /S /GoTo /D (deprecated__deprecated000005) >> +>> endobj +6997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.106 464.19 396.59 475.094] +/A << /S /GoTo /D (group__avr__interrupts_attr_interrupt) >> +>> endobj +6998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 406.615 182.276 417.494] +/A << /S /GoTo /D (deprecated__deprecated000009) >> +>> endobj +6999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 301.364 182.276 312.243] +/A << /S /GoTo /D (deprecated__deprecated000007) >> +>> endobj +7000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 195.644 182.276 206.523] +/A << /S /GoTo /D (deprecated__deprecated000010) >> +>> endobj +7005 0 obj << +/D [7003 0 R /XYZ 132.768 705.06 null] +>> endobj +7006 0 obj << +/D [7003 0 R /XYZ 133.768 667.198 null] +>> endobj +3610 0 obj << +/D [7003 0 R /XYZ 401.173 467.343 null] +>> endobj +7007 0 obj << +/D [7003 0 R /XYZ 133.768 450.616 null] +>> endobj +3608 0 obj << +/D [7003 0 R /XYZ 250.639 362.092 null] +>> endobj +7008 0 obj << +/D [7003 0 R /XYZ 133.768 345.365 null] +>> endobj +3611 0 obj << +/D [7003 0 R /XYZ 250.639 256.84 null] +>> endobj +7009 0 obj << +/D [7003 0 R /XYZ 133.768 240.113 null] +>> endobj +7002 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F33 2429 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7017 0 obj << +/Length 1884 +/Filter /FlateDecode +>> +stream +xÚ¥XmÜ6þ¾¿Â×Cq6;²eù%( +¤Ù&MQ´hº×û ­ÝQë·Úònöß—igê´(b‰¢(‰|ø;Ì»÷˜÷æê«›«ç¯“Ì+£2ƒÏÍsåYáe¥ˆ²2önj⦅$çÁ‡›oŸ¿Žã2y^‚%§õjœ™Ë£<]ª¾¤y®;Y²è¸c/‘(ù¢þåßÙ{„È yTæ,vP¹ÅÀ>‰á¡äë®jfps˜AJqþ¦/wâ¦Q^$`ÀZä[°&€™å+©d¾4AìÕç¦Çõaì-Ø´=Ù +¦¾¥Quùz±¾^øG%k@§³e#Þ(:Ð¥Y÷«ËmÖiÄh[à¼zF›éV­üͲmúÑèîž4 ®7Ò‰e•êpRë; Ô;5ªîtA7jtꩯä¤×¼2ó¿§Cô>ß¾<Ü»é̱ŸïÑYÐ?ÅKPRÉÄ÷½Q/.÷l#[´Â±EıÐk¤~ÄceefÙà¸Þ‹g(x£Âñ¤ÔrWuÛVv`f7SÊmœR¾æ§|M©ä\«¶§ÃÅö¿ªj·ì”®t-\×ÊHˆLMuOMÕ¨‡¥ê]R󹡟 V_ŽºŸm\¡\M­l¬S€oB€7ÞÌÉå¨Vñ‚ú— mÐM3Of„‚ò yÏj«Ñ9”¤%ºÅh‡ÂyBŒ²Œ|m×ÕíÂhêç±²JeìÏÆBJ»‚é s™¼ €¹ýŸßá¬ê;3öMã²æ“a/`9å©ÿÖÙÔ8>L©4t‡§´º#=Ê\7RmªÕùý3¼ÛÛÛæ¹=c§P%tO¸¤êóÔ¹ Ã<ý¤& Ó‚5Õ¸ à +]?Ú >-3ƒëµÁÝ‹xšµ±Í ÎÐ[¹u¿ÚÍWÇ …åA¸åN üp·¥ã‚¡ RhûÎæ’åðå§Ù]&¾½q†9t²r”AÂüõõ 9 [_‹ð‚ÒI·CCº«lv„媦&Î*,wcqÝ­è„”é; (²šIq§¤™G­Vò(KÒ¥H(bŸËžÊ{rÁ×kÚ1%Ð]‘šk D‚žðèðcW½Ð·9ÛÁgߨ¦éqüèºÒ±©ÿõ +6¼Žf]dÝ +~Z]=€7Ÿ–Œ€0B¬¸ÍÑC?;8‹%‘„E-‰ÖH”b}"éJU®t–‚òX¼mÓ,”fTeKÁÇ¡ô;B±K´û¾ïIR;¶{¶—NX÷JhêÀ?Ö•8%Î.¡#¤jkAHºs"è•]m•Pà*‚»*@áD ê¨í…­2vÚhú¾!UÌŒ’Ú‡òDA;¾_³ÄÀUÖŽ»Â3:¤—÷t2Fcãî‘Óíâ'!™û›‘³nê UK9¼lÀ%k»`«ùì«e‹ "E~²bY×Ó>‰·”~ôú‰J-•Fí˜pîàâæê¨HK⧛ۃ¢¬u¥Ä-Ybíÿa£Õ¬OiÛ]v]æ/>êEàRL:þ:]ÿå_Dƒg® ÕQÁ…§¸%„»$Ç0œŸùZí³¢r¬Qóí(½s—«–ÊwKЀ?OTçɱ]µÛ7‰¶#Í^lìíÔo@«ЕåqèVðÛ?ÃMÀ­Áé%¤A …v8RÛÂkæ‡Ôà´ßý&> endobj +7001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [131.776 593.324 182.276 604.203] +/A << /S /GoTo /D (deprecated__deprecated000004) >> +>> endobj +7010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.779 234.118 211.523 245.022] +/A << /S /GoTo /D (group__demo__project) >> +>> endobj +7011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.817 180.628 286.767 191.532] +/A << /S /GoTo /D (group__largedemo) >> +>> endobj +7012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.31 151.048 384.438 161.952] +/A << /S /GoTo /D (group__stdiodemo) >> +>> endobj +7018 0 obj << +/D [7016 0 R /XYZ 132.768 705.06 null] +>> endobj +981 0 obj << +/D [7016 0 R /XYZ 133.768 667.198 null] +>> endobj +3604 0 obj << +/D [7016 0 R /XYZ 133.768 650.391 null] +>> endobj +7019 0 obj << +/D [7016 0 R /XYZ 133.768 650.391 null] +>> endobj +7020 0 obj << +/D [7016 0 R /XYZ 172.871 536.846 null] +>> endobj +985 0 obj << +/D [7016 0 R /XYZ 133.768 520.118 null] +>> endobj +7021 0 obj << +/D [7016 0 R /XYZ 133.768 373.482 null] +>> endobj +989 0 obj << +/D [7016 0 R /XYZ 133.768 368.874 null] +>> endobj +993 0 obj << +/D [7016 0 R /XYZ 133.768 342.262 null] +>> endobj +7015 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F55 3943 0 R /F33 2429 0 R /F20 1882 0 R /F52 3939 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7038 0 obj << +/Length 2494 +/Filter /FlateDecode +>> +stream +xÚµËrÛFò®¯`å²`•‰àM 7-egÛk¯Í¬¶C`$Î +À  ’öë·_ HRUR› §§çž~w3XÜ,‚ÅÏß^üø*Ê…_d0l¯aûë,_dEêgE¸ØV‹/^ùqº\…AxÛìLkÚ›å*Jaʃj+œÓÍ®~à™³c¿ s¯Ô<ÿQ­\ëÈ‹ŠtùmûËÅËíÅo!P,Â# +B¿ÒEÙ\|ù,*Xüeøq‘/îhk³ˆØâÁzñéâ_Áɳ‚¹g¥k?ŠS~Öv¯éóüÝþFøøóÅâË +hó^Þ«¦«‘ö"ñFÇü°×Ü-ÃÀ³«;Ó Æ´ƒî¯«J9ø5Hƒíç×0„ò9¦R>Òõö?ºø¸^†©wßÕÊ´ŽO¾5:ìõÙÊDÞ7¯B`\*oÊ‚ØÛ«¾¢jÂœÓ +(¤UÕÎâ,òn[»ŒRï®åEåxüáu´ùžCÓa¯¹P6t½vº¤•Ójñq|õå2ŒSïßy­´íÐÛºÖ½ó¯XûY”ð+^™VÕ TYê½X®â”Eð¤ìb¸úHOã8A=Åô”€ƒžâf· =;‚Zz ®¤­ˆ´õLhx¼Òå‹ÜžyäøŒÌžù謘Øb²Ì«U{3ªÍ3´M¶~´\(U+pMíl¯9rg†½iùˆm):æ#ï +ïóÞÔ²À:€EÙüŽ?ºVŸ;!8c‚QÔqP TZ|¨Ñî‘Š‡ cá–›^5ŒëT?0tm{^×Ê=L—¡J¶ª-5Š97^•½L©j¹n“&#p;ààg+0€r ö‘GœÈI£`*ÚÁwÌñ¸xäÃ`v$˜ÕxäÞÚ Œf»%ö•ã`¬|Éw vÖ9ó„ìµÏÏø§ÆþHÑ£d "«èÖ“ˆ<@’¹@NÛDˆ¼¥¬­Óô¼Ëh¹a°¼ÌòÄ™wL¥¹iTŒr½ø¤qso)G7Øf5(SÛž>ÊÇ`T< M9Öªçù£ñËö‡NËVnètoº=j&ÏÆÎGÆÞ¥›6ËXƒWkÕ`Й2f(fäùAê«#ÚÙšŠŒ(òI°ðÈ|<Ì> |÷<™¬ð°YÙ–Ä°Á Ò€ƒT¢)€CÇ[éYýèj‹‚yàðçBr¼­SDLj4ï8áW,ü Ë;åH6ñš½sÌd´±½\álOE»¦½H$DiÄtfÆEH,Ó­;…¹ÀnÞ8ð¤3íª´MÙÕ’,é8üÙ¸ ž,Î…)8Ã1aqÓÈsÇc£&:!KýØ2`e:ÊžCÌÂÉcÌ¢ï O$ÛÞM½Æ ¨æäùöåšPk²ÇÐÛé Õ¶ TZÐl¦Ñd¦‘÷~ó1ürùWÊnÈB“ç"îF{ƒTìF—„À½(ÖgO»¡2vî$²Ø1qâ:Bòã ìsÖ61pÌÈX +¡x".‡F× ~Ú¾Iƒ€aGM!#WˆÏŽãXb«œ:!€ ‚}É-6:‘_Hèõo#„ Ç3ÅÑ:ÎåY,ô(VÙF (ÙÜß#gŠ°øò凗Ià½ÇŽé±(C|ª 1*…‰Ä{…$SBì^…0 åÅœQ +›q g~c=0bóáWÐÌ5dÌì+Ž þð»-‚Oy¦Œ³ó{âêÍ2õîe£Çuˆš¤óï„’ô}Èâuo›9>ŠýP;8[Þâ4jBD¢ k1¾'&̦-˜²Ò5{ÓÑ!eNg7ÜšÃ6¡à,BŠ®{Öc8 ™‹=§lîŸ6o¶Æ—1I3¥*„–>A.®œÄ˜³¢¾]í,n9µa@r€(VÅX»hÙdÚiÏsî6<í.`õëÅÜë8<ä Ê!óÇDßñ”™L;ZÙ@dp­1ýѲÊCe¦§s=(䞆—¶$!I‚¤XÃh+fNŽ¶4ŸxŸDœJS 2¥>+Cdóë)¯î+JV2Ém`¼9›Ìrˆi\I ù$ÏŸg5œ}šÕÙZX½Š@Å”|J7ª–¢ Vgû¹·×ê@–° RÁóäq(˜HÌùf+%<aÀãíû}#AÚBŽ )K£É#êÎœ1œ AÕ€óUܹßzFŸŠ8âÜ^B8+tp ÿ¸J’uœf°ýíæJü¤qPk?ð„²jÙx@‚P˜Ìšp˜Ý£;‹€¹6CúE†‰sfBä$¢Ìkµ®t¦žB\¼l,Õ£°nÅ¿F”á·7ãYrƸr»˜ 7?¾Šã£žFg~ªHZ±¹JÞšv¼?áÙY$]ûAz8rHa‘ŒN±.°¼ñ‹ü4n@5eØŽªòQ13~hOoÇ©q“i1§ñ™85mYÕ¡‹j(åTì› ð¬9rˆC?/DŸÞÙj<¯ÏÏû>™ŸÄ<)òã8âc_£(=93«‚éŸéu÷¹N¿"ZŒÚùYXüQr.åC’à³+ô§?”ÿÉI1@o;-þ²/ÿêÜfŽ´i˜½~Ï£ô­Lm ªýsú±ñGí{šÎÒ9ÒèÓfiÁ|ã´šJ„Jºš´4Žý<_ÿE=W6§àÔœ¢Ä“âÌ=Ç”RãSìâ€r¼ì¸8Õu5jÔ±äÁ²ˆxŒÒYÜc¯±5C yÅ$ ÞB¯¸b‚­”9%äà²g#×ØJÏ9ad®4cÖÒBB訅$¥f1õ8êì¬ùj‚N.kÔ½i¨r†‰ë´–ÇuÅaýñõwY·…Šg?²ÔÆÚr#²ŽÆlŠaSM~V‰S|¬RDª¬`<ôI+åžÊNꪆÙHÌ9gâÞ¡Ÿ¶Ji1'S£;™úˆâ6S*¥)¦‚€{!{u(”*Æ6°^3øáó;¾[Kª¦hAåëpt6KÃûDáH“¦Ú—qt+"¥¯AJ'Ç©<¬•cÏ9$bM+‡C¡äo(Ç‹¿#7T=bW.ÍCfn… eî(ËWçʱv\9B¦\8ôƒÃœ+Éõ‘CC¤†[9ÒZ¹×æ•©‘À­3èrY4•+!·UD#SöÖ`ÚêÔ3ÎþÑRäþ:þ#³LÿAú±Žóã¿WòÂ3aÄϺÕýc¼˜Âûv?2p¥K’)ßü)Š +sžEAOŽ>’¬‘rSÔÔ~¯½UmvrÃN\ß•½¸á6ðñ“ÿÙ— û +endstream +endobj +7037 0 obj << +/Type /Page +/Contents 7038 0 R +/Resources 7036 0 R +/MediaBox [0 0 612 792] +/Parent 6979 0 R +/Annots [ 7013 0 R 7014 0 R 7024 0 R 7025 0 R 7026 0 R 7027 0 R 7028 0 R 7029 0 R 7030 0 R 7031 0 R 7032 0 R 7033 0 R 7034 0 R 7035 0 R ] +>> endobj +7013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [151.2 654.082 333.112 664.986] +/A << /S /GoTo /D (group__twi__demo) >> +>> endobj +7014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.893 624.503 346.098 635.407] +/A << /S /GoTo /D (group__asmdemo) >> +>> endobj +7024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.096 499.282 366.825 510.186] +/A << /S /GoTo /D (group__largedemo) >> +>> endobj +7025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.033 499.282 405.402 510.186] +/A << /S /GoTo /D (group__stdiodemo) >> +>> endobj +7026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [336.234 487.327 357.036 498.231] +/A << /S /GoTo /D (group__twi__demo) >> +>> endobj +7027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.779 439.506 451.508 450.41] +/A << /S /GoTo /D (group__largedemo) >> +>> endobj +7028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.71 397.971 263.438 408.875] +/A << /S /GoTo /D (group__largedemo) >> +>> endobj +7029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [163.241 368.392 184.61 379.296] +/A << /S /GoTo /D (group__stdiodemo) >> +>> endobj +7030 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [369.697 356.437 425.488 367.341] +/Subtype/Link/A<> +>> endobj +7031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 290.255 317.687 301.159] +/A << /S /GoTo /D (group__asmdemo) >> +>> endobj +7032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 277.636 226.081 288.54] +/A << /S /GoTo /D (group__demo__project) >> +>> endobj +7033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 265.018 274.499 275.922] +/A << /S /GoTo /D (group__largedemo) >> +>> endobj +7034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 252.4 284.083 263.304] +/A << /S /GoTo /D (group__stdiodemo) >> +>> endobj +7035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 239.781 337.363 250.685] +/A << /S /GoTo /D (group__twi__demo) >> +>> endobj +7039 0 obj << +/D [7037 0 R /XYZ 132.768 705.06 null] +>> endobj +7040 0 obj << +/D [7037 0 R /XYZ 133.768 308.895 null] +>> endobj +6059 0 obj << +/D [7037 0 R /XYZ 133.768 232.48 null] +>> endobj +997 0 obj << +/D [7037 0 R /XYZ 133.768 226.507 null] +>> endobj +7036 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7044 0 obj << +/Length 2523 +/Filter /FlateDecode +>> +stream +xÚ•YK“㶾ϯÐÅUTÕ M¤$ú¶¯ñz7±R9Ø®DB³$!äÊ“_Ÿ~âÌÐ[•FãÑÁduZ%«ïî^ïï¾~§6«".6ðÙW©Öñv³[mŠ<Þéj_­~”Šu¾~H“$‰Þ¸öPwuwZ?¨ºü1]% ïm{h¹çÝدÓ]TZîÿ–$ª±–ÒÉVEªØ¬ßÿx÷íþî»N”¬ÒÙ Ò¸HòUÙÞýú{²ª`ðÇUëb·ºk»Ò°¦8±Yýr÷÷»ä‰XÉ’Xù6V:g±*Û¹O£7Iä:8£Î‹È¢(D9òw8[nøÒ4Âô[’'½½ôÖÛn°2ÁÈR ó|ŽËØxYàZWÃ9lÇLn.ãË¥÷@ØmY“È¡R• v@¢‡T‘˩ۺ췥ë*ØOívQkúOÜ¢£ª, ­ži$6ðÌp…ÜùJøh{&}ü×{c3Ô—Æ2Cy6]g¿tÆë:džvVѦ¤p”ÒUVˆÃÙ Ü"nóȼh»'Ç(½ÑrÐð`V¦a£:ÙÎöf¨]G¹ Æ¥ÁJ×¾œ\èTBV ŠÉt2ød¶©þ3ú!˜ný Û„;õCoên›òVLï ʧB›‡ [æ¢Ý¡žµ’Scã&&öñ@§Å dl‡FéÆn Å±WÞËÛŠÈÍ7†Í„?;\­í¸3^˜!—aŒê–7ÇÖÊrè\G*ß0)ì´’¬³lüôV¼™Ê±ï ‘ glÉ Ü>XÔKŠS9c%{kø:‘¸óó~1Þ¹sÐÛä[:‹ÁÆí(عézs]B—t9ŸD…fg-Æ4¢:þÂ`'ueÉ°o„ïj›&^:öþàEüHzÞöŸë’Í1Âwß—A†¯g0¼µÏ¨vûIÄg¡y®Š}_¿Óó +€ 'Çác` ú𑟤$*‰ 5ñapVyŽ˜—G#z¹z–ĹڅI¯?¬³$ÚóïöÈP!z¾GB; ¾´VqRäÏðÝ5ÝF5= ¬lŽÂP%ÆA ‹p(üµ„éÞdHž 3‹¢ˆÞ¡f £aÁ…âôTÕ²']#|G?R>²à¼e&Ñ‚µ +yVÜå\ŸÎ#ƒ0@@õ5‡`ók«YÔÌ +N_Á^&â¥`„ŀƱ§¤…–™Ž½ko;Ï¿‘ŒÎUcc1 }ËÉŠ^C;Ä…ÖT–)ÖxrM 1º“ #’)8ð.ô<0f<lsÙäÍÇÊÎ(þ—< ¨4²¥Í;n!¥DÑÅ{@aš1™¸LÀ™®½˜^f´˜¬ dYÛg‰ ;þRxÁ~_ŸN È.& žØ@–BMãÊO”}Aî@WŠÑŽ-W½vä\C‹õéZcÊX™ Ꟗn»±=0$pœÀï¥w¥õÞ ù†à ++ˆޜ\6Õ¢§ê"$ ‡ŠÆ6hEX¸RÓW\"õV&M«aj¸+±e'*Í$±‚ƒbš‚„Z nUð{¤G q©»rÚA,˜n 0´®Vr¨?/ö-òг”;Ëy! Lö½œ6,Jõl•³c1¼@ãÙønŠ«”èQYª¤,żÍ[™gÄC9««OéÚeŠ–èÎÆÛ{ÒãAoáÊÁ™aöBV‹™o(¢Bšj* -\CKGÀûVˆ… +¬·¡Œ»ÕBpA±$óÜö‡ˆŸùìQ'NåYç{02ÔÕ•«f;%ã`-/ó +XJe±ÎŠy­G4óâQž@HÌõŸV‘ÇfÁåEÞ¯3T?(à ÚRsØ$ +öIùz ‹Ny ¯'²XØÙ ;'s1”ÉVaÂôyòTFÐ_¨€õn^¸èñ™äB¨bòíÕ:Þ$¯™‹ÎÃb +z;«žð]éãëTrt²™¥[0ñbù¥«0ÎÒÕ6 Ï üÞ’’–·yôÓ·oyØŸÅ‹€Èq9à ½ƒ<Ï +™Ãvü(|G@Â36õ'´o+Ð뎑˜8ý,ØÓ3‰‡2¬ßÎÿËþo’Ý.¢÷žñv³Gz­+8Ò㪠kÝ3‰,ˆ0(MSä¦pôod¢/Á:ÍàzJ¿Š]”ÆŠ§¼ÿþ¿/g‚@ÔºPÑÃbXšž%îŸ=±¦q Z|nÀ“¾ÀÙ/áA6Ç%xðJ܉(¶®¦ù¦‰à@æ)GžÃ€¬0aŠñ-Ú[\. Hšdq^L•Ì+®†Õ.6A ?ÓÀçš±º<"ßË“ç„“»€}AžIŒ; •œ-T˜-°ï%Gy¢~äí=´ô6|/؞ɠ‹Xï&.×öß6¼x X«¦R¬ö¼2‡I.‘¡ÆÛvìê’Ng!/€‘ÖñyðÙ±”bûö¼œ¥Óó2P+û Â¥ \š>þà§KÏ,áôø‚¥8É=›ÜNèÞ8w!«›^å_ù‹]¼ÕÿÏøe±‰‹­ÞÍßöwp‘ð»¦Î*$n¼µ%72ñ©ä¥¿IwÜSI"­#”ë§ éL¿}$(Ÿ*ð­ûó ü¹Èÿ.5¹ +endstream +endobj +7043 0 obj << +/Type /Page +/Contents 7044 0 R +/Resources 7042 0 R +/MediaBox [0 0 612 792] +/Parent 6979 0 R +>> endobj +7045 0 obj << +/D [7043 0 R /XYZ 132.768 705.06 null] +>> endobj +7046 0 obj << +/D [7043 0 R /XYZ 315.545 353.304 null] +>> endobj +1001 0 obj << +/D [7043 0 R /XYZ 133.768 336.577 null] +>> endobj +7047 0 obj << +/D [7043 0 R /XYZ 285.947 213.691 null] +>> endobj +1005 0 obj << +/D [7043 0 R /XYZ 133.768 196.963 null] +>> endobj +7048 0 obj << +/D [7043 0 R /XYZ 133.768 172.749 null] +>> endobj +7049 0 obj << +/D [7043 0 R /XYZ 133.768 172.749 null] +>> endobj +7042 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7053 0 obj << +/Length 3016 +/Filter /FlateDecode +>> +stream +xÚ•Ë’Û6ò>_¡£Te1$@‚d.[ž‰íu*¯=[{HR.ˆäHŒ)Rˇg'_¿ýIq8›ÍaF@£Ùhô sÜø›w7·÷7ß¼Uf“z©Ÿû‡M µ›dcÒÈ3i°¹Ï7¿l•òt´Û¾ïoïšó¡¬Ëú¸Û«¦ücë\]WœÕϺfhwA²Í +žÿêûª*: ¥ýXmUï~»ÿþæÍýÍ¿oàÈß3/õ£Mv¾ùå7“Ãâ÷ßÓi²y$ÔóF‡€à‡ÕæÓÍ?nü«cùkÇŠbOéˆu¶ÂTm»"kð8þºSÑÖ¶¥=T´lmÖ¶Â#ázS»|Óõe?ôx Zz„*©’eÿ +úÍ[­gl)c<ß×À41TÖ= vÞåñüy蛽ÃØ Ho‹¬(¿9S¼:h{‰ +Ao·t-E ò8·eU ¨àß®pK§¢.P +_wA´-Z^îO‚WÖYs&ý#ò‡ýÈàd˜3r¸=YÙo¸ä¶wŒ^}/œ^ >Ò~¸8ðb=;IH€û öŒ +yé¶éOÀ@à_©³cm œmûe¿#WŽà§`kn¯¯Meû´ùœ)­¼46±o˜vQwƒÛDW¶øÅ•Èö_±Û÷˜>”‰…e#ú¤ƒTD`{Üé²f¸­CPÇ°™!Àln€EªðpáüÓæû´ÑΞamÔîWãQÒ>› þÖE‘“Ë"LÖš–‹Ÿm¿Ô£Cbò;pP‡BÅ ²¡m‹º—‰;?Næ¡Ä's^)¯H“Úîï~º÷_Èà&SHwÍæaT”‘º>¼³2%^qNµ½7-ÿöÍå:; +±·CK" $òü4cò×£#±åÄkÏéѸôh Ú¨÷ää4f÷œ‘@/IG}¸{ÿ‚\/ ”C#{ƒ,GMž¹Ûâ@>܆ž+}} u-ï·eM¥¸‰(φP€Þ8Päe˜9 D\$Ô%²”B.àŽÑ°ÀÂ9¤ÝËÐó#;ñ@Ǫ9X¡<Ê©R­lu(¤†]úKQc±•¯ÖGïkŽ›bÿz™jˆÁP‘ —Wè8f½ãÌnT÷:žY¡ýþÓG€K¯ù \ö‚8øsåFØ£ÙE#4{&”G3»b¥F‰çëEÉ: +·%º¤˜ñ’#¼8¶€éÆbP!¶zúƒ" gÄ„"Ì!Qˆëx’Y)-æ“Ð䟶ìøŠã¦uK+Ú| ‚UÅØ~@MÒE›jlWðˆ +?p: ¦} |À/I§S-ÿˆ(`tO©°ä0‹Ëtá*–—¶è2[9*nãÀ¬Â>pΈàR[pàÛ½Ø!]Ɖ+c#5EaLAŒ>¹ |k¶£q%*ÄÏôŸo´Æ¿8º2ìè*Æ2fœœ¡Ø{aâˆÂ0`äò¥È]öÕîÖ aæW…]ülc³í†îRÔ°³PÂm×’&m 1ë^ˆm¶•}âáHFÁ«›¾D' #iãÊ=O¤f5# pÍàsañ*zf©.ˆV¾º†v§Üm°¬0@½¡^¼¶A°÷§kðâÎÿÈM€áT‰s+c78ãRü”&R¢¼D÷QøÍĪVRUd<©ÿ;i^·O¨sÍ-f¥f^˜,°8ªa¡a]¬¹D‹]s^QR<)iVÍÖËZ76Û÷‚×;|2·t2†1…ÍwynV6Ç¿XµQ”nb¥|¾ \>©Ï[ ¼-°'2UØ ±1ðI8֛ߡÔöN+––F^dFÃä6CäÊd•†”ž &5ÚU.CøÔv‰k»0&1ŸroçTàÀœCp'¬`_šNÂÔ•4»$ˆLgÇ1_ÝU옃KVÀ9ÁŽ%˜UÛñ;,¬q' !]™ Í«*ú‚zÆ°Äç†ÁÐ ÆáiÜËÜqG¾^² CÜ¢ä¦O$m¶f¨Ä ²ò€÷cëŠýÁ•ìwŽPΙÎw—£™éضEÍŸ–kÑRÅÀ§«óKû²¡DpíH“EÓS«È‹©ŒzÖ]“j©¢1wQ–³§–œ¹2jxÔÔ‚ÛM÷ÂÐe˜± SRy!¢t1¤nR®àÂÁì)6C›É + +ï•\RYQê@ º; b®¨nÀ…rý X¡¢ wü#Ú MÌ¢ rhd‡ªQ(™η<bé0´ ewZRí ¨¥@A«—߬è\¡AÒËÚfEÙ&ðÂtLŸ?¿þôéÍ·?¼ùøù󊾓ÀÓ¡ž÷\SóŽTÄÑTp¿„8œñ.q'q Õp49ÂØ>Ntº(h[¸5@Ü̹ïùÈ)/uRŒ‹Vš£NÈû +`°Gi¹²JYEÊpT)oñŠÜP*í&lÖ¢$»uŸ¶ôL‘@„™§„tOçCS•Πb²gêø«Dú† w +“m=œÜ*Œ¥™pøÂÁUøÂ÷“P‹5Áâ$ƒF¾wï( +Ã'•Í +NÜbSfÎ+̯¾ë3㣠Ûòxê÷'’}[æB%/PÆX15µû¾€È#ËÙt1™mm»ýšó‘ +A,Q´}ùn +%Ãÿˆ7ëÈukæâ¬Ö µ:^ `Tæõ+Bò"«lkÝIBTs…K( Ù0N’^âÀ½kqÁ´"úœcH,žˆ,8ZnHù…l Ð%Éÿ,ø(Û϶†¢š¼¿nf_1(˜Ï Š!èÓ( |úä7Ïö(ŸßÝ,ñ÷±KIS*J»Ã‚p±‘Gé’ãÙ·‚0çëo ?ŸrØ @È.oØÅjþ˜úyðµÜi#i‹#èNV¸ÿ¡ÌÛ¯+ú¡gBe|d ÐbxÄ© 2t6Iú7‹g+Ê)Jô)]NWâ!„ ¬fxœæÆç7žPo`ÚøJ>«ÏÕi ù¯|Wd<ù'ð¿UúÛ á™ò}= Ä\IbI/íg_•‡ìúuï»æ?OGŽeó#ÿ }€^ +endstream +endobj +7052 0 obj << +/Type /Page +/Contents 7053 0 R +/Resources 7051 0 R +/MediaBox [0 0 612 792] +/Parent 7057 0 R +/Annots [ 7050 0 R ] +>> endobj +7050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 128.055 340.321 138.959] +/A << /S /GoTo /D (FAQ_faq_regbind) >> +>> endobj +7054 0 obj << +/D [7052 0 R /XYZ 132.768 705.06 null] +>> endobj +7055 0 obj << +/D [7052 0 R /XYZ 300.9 318.055 null] +>> endobj +7056 0 obj << +/D [7052 0 R /XYZ 133.768 301.476 null] +>> endobj +7051 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7061 0 obj << +/Length 2957 +/Filter /FlateDecode +>> +stream +xÚ•YYÛ8~ï_a`wh«IQçìSOO$@ŽMCYJáä`+`xèÛh+ºãm1ØPw®ú‹AÒ‡6=²ÑûúƦI¢ecdKÞñ.§”Õ íÁÊç¦Ëú3…3füÞ¸ƒtúµth•´˜x5§¦¥pªòÔ øȳ7]±Î +>‚¿t·46³ÈY¤‘W‹EËäHºYŠŒ#§Hמ@¹úŽ&Ê®é <,‰FŒaeAÉ jy0ƒ;š!ýÑŒÀM¢øŠ(B-A“Þßt]wa/qã8úÁF¾›ÄÞŒ›‰µ!7Ñ÷¬6p}`÷în½ TŽ¦Ñ'» §`é{Å…8vž´Q)ÏR¬²þ†`¥T Nþý=FŒhâ #f”‰Â,¦X‹Z Æ÷à(JqT4ætK˜6Þ~¤ïº‘’k´¹º¤0¡TdÁ³JkÚç7ŸßÜÌo¤øƒöÒÇö®lÜ‚SJ3צte–O„¼˜À\{Ä(®/š›‚>xÁáœ{úÓ>+¨‰^þ|QQöÝB.8»çÕôñÓRº»¡E3ƒÚkXððYÜ©dRgT ×€àçx¸Ð/@øŒˆÏ%Ž­A^ $ÈO´`r9^¿t9L1Â`È1þ¸ö!–Óß/¡l↑ƒ›KÇÜó­òÒ¦UJ¼‡þÔÞ³3K%wö&G ®‘ÓaYc†[nü…Ö¡Ñ ¹Ã/¤{EÓNH0Mו;“÷ù±2ŽöJƒäØêl˜…c—².@¾$ïËçWo–P>„Ø57ÂrAx' ¢)®”Ĉ†ó¼Š=ÓÈ3ýÐ96y‰xcœé¢÷‹uì&ƒÉ½ýð°Ä(DkÈ•¨¼[Ú@âÐ÷ƒrÅ⡾˚3zêŸE¹Ty®wÍGg¥ \ë©(³‚®ˆf‚×>¢8m¶‡¢ÄšOaÞ•Ícj¸ŸMÊÎmkîa¨à´‚™%²q» ²®£LÖIKã¤HAFŒ½bnz¡ï׳n/˜à>—Ñ+>lÅ’)׋§£œºº°BT¨8xúÀx¥Ó–š  n`ƒë1•ï‚â‚ÈUáª÷iÚÂ|@2šæûàDa@þ)Û‰µ\3w½A#Ó„T³ŽÁ%§Â!øWþUg¦ƒš¢êz\n`\A}þÅÛï‡è·˜Z]Ãd›Úš™uJ(÷â[œ:§²Þd½¨)÷V¸K(﻾üäÓÃÛ ,q•B}% ù•$D…ä&¦ñYÄ¢÷™:å%ŒºÐ2r0Èà¯?zÈ ’Äz?ÜßX‰”viWf˜„€aV‡¦o8R—2®„­¼Ìþ2¹/t4a"huÆ'=ûÆÃWp‚NwòŠ7¥à‚­ï´×`t%ÉóœŒÓ4%üM@×ì—ªáÄ‚!¿\ž9$sPâëðTŽÝ²§ó;Âé‹?±:Le†@ ÓYe„€¥÷báúÁßKðR×D +S·H9o¹dRx™È_ +PÀQ;FÉPÁ³¸zíR +ôrºDM=(? »¼/R¦¼%Ñõœ‘n° z¤Ê +“£aì¹”Tnì©©kcçMîxžÎ½Ùtµ;m!7à ‚ÇÓî +†¦Ñõdm“=M:â³ß&ðB„†šÑ6ígë÷æ†UE¼#x¿Ì»±"¸*Ÿ‰MvtØt•b¦wmš™«a—c™´HWü˜le ‡I4L´‹`ËsÊGÎU7œŸ÷ÅŽtÚ¼Ÿ¼ D¥÷=¥Ù‹Îér'ƒÃžŽBú߇„vb‘t#5©÷LÉ`ëSß2 GŸO'ãLÐ¬Ò ým*à 36™öêm­aµ¶5¬L<ƒÊ…qß“®ô¢ÙS½îÙÁ}Àâ’—õËúúfü\ĺQJØï†"yúºî»Ç;!…æwïûž¥»ÔèاqkGí3co$G‰Žyl©†Çpº¶ŒÝÈŸ] +í”_›"2Bκ¡þUšÐ9ê´;èÅ9¢ÿ4š”]„ÌŠfнÆê…¦Q/ )/Iyg¸Z¶˜ÄØ×{~1Ÿ=å_Ý$Wí/ýï$–þq²ÿ7 ÿBÌÿä5ÿ€>×,lærýd”1Ùå“¥“?×°x<±þgóv¸\ ŽÒ±žZ½/¿Ýu¸Ä]Þdwéc»©Ê]v§¿¥ø ×Ý¥Ý1×Çæn±~Q®þäµ|x‰]ü³:«QÿÏ_ÕöŸw|ÚPñø/ê0#d‰¿Ñ5¤¡ýüß™mq¦Æ/:£†O)~òÔO2¦ž'·ö¨å†ÿgLMÖ®Uä‘°ð_ö¿4ß.]ϯü?'"N± +endstream +endobj +7060 0 obj << +/Type /Page +/Contents 7061 0 R +/Resources 7059 0 R +/MediaBox [0 0 612 792] +/Parent 7057 0 R +/Annots [ 7058 0 R ] +>> endobj +7058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [300.614 509.239 350.427 520.143] +/A << /S /GoTo /D (io_8h) >> +>> endobj +7062 0 obj << +/D [7060 0 R /XYZ 132.768 705.06 null] +>> endobj +7063 0 obj << +/D [7060 0 R /XYZ 463.677 627.656 null] +>> endobj +7064 0 obj << +/D [7060 0 R /XYZ 133.768 610.929 null] +>> endobj +7065 0 obj << +/D [7060 0 R /XYZ 245.568 202.174 null] +>> endobj +1009 0 obj << +/D [7060 0 R /XYZ 133.768 185.447 null] +>> endobj +7059 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7070 0 obj << +/Length 1895 +/Filter /FlateDecode +>> +stream +xÚ•XÍ—Û6¿û¯Ðaô{c(ê3·éd’Mß&M'îî!íA–i›Yt%¹Žû× @Ùã¨}/'A _?@Š‚mog?,g÷oâ,(Ã2ƒÇrH¥Â<+‚¬Lì”Ár|qªl¾Q‰‡ù"N#Ñ›ý¡ÑDº¹,„ý¿®`ĹLD\–óß–?Ξ–³ßgΊy¥[†e”õ~öù·(XÃâAª²NNt¨D%nl‚O³ŸgÑ‹ GSNó0V)]ø´ÓÆ Ü¿QêJ8ÎÂB*Ðä¤þuèôÆ|%¹J“$T2÷r¦³’BTø(EmÛ_£(Þ»j0¶¥5{@:œ/TTŠ7s™ +Û‘ø/-ádús?è}G|3×k?öǪiδØk^,=µÀ¦ “¹ Á¤…Ÿ¦lþý±ï&¬ë“Hz«ì”6…yé%PÍ}c몙P––ažg^4d‰, {Äîjeây°PI(‹ü»séÛC£œª¤$]è¤R‰açœX&â`M;Üaq¶GZîwöجI`WÍãHüÒ~3o?üB2ƒµMO¼K¬õšÕ®PÁÑ4þ˜ªeզ퇹DÍ— nâœ÷¿Ž%DˆB¹x‡ÂRzc€ªwÕa€ '‘Àœ‘¥8iZÄíu‹ÖËØ¥%ðF/­Ñ¾¯Õ…a7ô<ö¦Ýús4í'»‘Ãviø2?æR¥â¿ÏSV:.—û©xØà•PŠ¢ÓÕšŽƒ6K%·f©‚#Bc¤€¾‰p*z¬ô€~ö§l´nx½ç£,k°ó8'¾¦ã½•¸@b4(#ƒŽ½ d#ň‹*äNN¦Â2ñÕð¾úÀÒ該œ“±¬AåŠÓÿ:ß.5uUíR&a åµPq(áÄKM…’«j¹ce¿§––ŸHùxÒËÉ4è]Èsð +±È“(xlz½8™õ°#ÆÞ®M58äƒ×_£4šÂ€ÿ"õñï'n'ó°T#Rƒ&ɇ[zvÜt/çBàüçé5–þ€ÞJœô"SzVI±‰xýî#tx¢Á†/Õ–±ÔÓRœZ*ü4¹lÅ h*=¬+~€ÌõÚà8p•UT2TÄñˆ,À¤'ƒ BWG¡M$¯ûª½ª¶µ¡A ¾½]ËV}${¾ 6 ÓØé^âG—”?_®Ó¾àsˆÿÓ#ÇÖðÎ?P¢êŒæÄ€‡™/— ã÷„»óUÊ9¨K¥OI˜‡ƒëë×údâö«óMvŽ_Pô=Quk7`Â'ÈËÁaòI “€úžÿ%þÇ|€çª¸þOR”ð­À—|«[ÝUƒÿÚ±< -w<`½Ö5 =dô*V¯dAoq1å¼èk¦r1éæ*‹Æ¬j_œ¬Ò~=oÁÿ7&ÿ˜ À= +endstream +endobj +7069 0 obj << +/Type /Page +/Contents 7070 0 R +/Resources 7068 0 R +/MediaBox [0 0 612 792] +/Parent 7057 0 R +/Annots [ 7066 0 R ] +>> endobj +7066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.843 467.271 350.045 478.175] +/A << /S /GoTo /D (group__demo__project_demo_project_schematic) >> +>> endobj +7071 0 obj << +/D [7069 0 R /XYZ 132.768 705.06 null] +>> endobj +3568 0 obj << +/D [7069 0 R /XYZ 133.768 644.493 null] +>> endobj +1013 0 obj << +/D [7069 0 R /XYZ 133.768 629.923 null] +>> endobj +7072 0 obj << +/D [7069 0 R /XYZ 321.334 550.878 null] +>> endobj +1017 0 obj << +/D [7069 0 R /XYZ 133.768 534.151 null] +>> endobj +7068 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7077 0 obj << +/Length 1766 +/Filter /FlateDecode +>> +stream +xÚµËrÛ6ð®¯àL/ÔLEà;7·v:é´IãhÚƒãé@$±åCÁ¸î×w Т¬šNO\î.öýÉ‚}À‚ß­W¯E”Q™Ác½ xGyVY™FYɃõ6¸…ˆâl¹âŒ±ðz¹) ‡º=6Šà£^ò"ìÿP•„ÈyÆŒ-Ö?.n׋O ºXÀOdó¨diPµ‹ûløcÀ¢¸,‚GËÚq¬6Á‡Åûsé9©Èx”‰$HÁä,¨âÓ‚Ei–äÄr +[¢?éWoÚ4¸éAåûÂW^úêD<…„PpÅE¤Œ …ðu½µ‹Wúj¹Š9 ?TÕJSW„îwô¬j]µ¡—]¯ ت¶÷á¦Pc|Ïã¬òL V XZ–¤{}@Åeý¨+ §aÕo¶蹯—" ?/yªŽ˜êÎiA÷õÞÅáôÜÛ#hTTÍ,}Ñr•$yø%YóÓœÞAþ¹ßnë³%“ Oý%±º¾…0±<¬´’ÆñKz|dL4ÞÙ4j‹6\½Žã“<0HZšRžm=ËW\FLÀnÙª¾3²îênIÊe1¸b1zàfÊEø¡o1 3tÄ!Ú^;~è–^Ù"%´Lh†/œ³¹Cƒ•³mæˆÔêÕ,äg-¼bQYfÁJÄQZ +:ó¶7®øîùËӧÑà-(,£„çtøìLâ‚ìCàzÉã4üõŽÞÚºÒ=†M÷ È2”®•;wØ(,,„À¿©Öšþù#ô¨màQ¤í(CГ’zøÖFæ,¹•÷ˆlÐ3P/ÐlV)íKÁœ*¢{3X(·[RÍÈKÑÔ-æ¸Hyx;u²šC?îŽéà…Êé‹JÍ@Èî©Áìr-¬}Uõcg”戋1ÃDLÝ4„› ’ê Ø'â`›æ‰°ã€.Y|O˜;¹‘ÕŸ„¾¶ˆg㎠Æ8!ª»cß É4ü¦¹„Ð#ö5٩е1ª# +´“©¡MŸ–YbWûÀ!±œ\j„$ÔÖŸ}=@Hœ<Ùm‰¶©ãž'ÖÒÔeË«ƒìö6* ´qSïƺ o6FðÔ +fJl7Xœ¸âCüTXøâ ª"cixÝ =z“‹g~lsA#ÊF€V4W’â¼,Ò“²)„b4ÇÑ\õíQjG€…QŒC~M¨,e´&’Ócçßûf«èz®®Ô'£5ÇCMrZ©¯$ĘÞ[b»üË–—IøÓí ŸQ¤1€ƒz£Ì£¢ÍÆÔ;$ï”V8å§Ê`÷Gì×Vâ§ýË /Ò8÷£»îm¤Lt¸0å3ålšòÆ›å|ƒ§Ü FKÚ«0<³$I:÷ñÄð ;Ó +˜vשS•w{lΑs°«‘G­`ωºà‡Û—(½µßÔ»­Ú]Z]ET0áÙ{²…xvsâ¾'m˜ò*M"˜PóQ>}áön±×²…V†ÐiªÙ¡’0¬µÄå¥Ü»ÃK:h=jPÆñìˆ8<µ›¾±÷ÀÚÆÐÂÜåXZ Ëd¸T`[ìPÑQI¼}¢§9HwUš.¿Ø‘ +9äSäQZ¸ÅöQˆôlÎÒPDI6•Ì»ïï.d@ð¨(¦DÑ:ÒÙ™VÏ$”cÓ)G7º²c©Ì§†›‹øå·Ÿ À·юV‹P50i—l2mDPÎÝmÓÝ+smçÁ<\ä;ÞJ‘~E¸nnîÞ}©dá["Ÿ Í €^ƒ'Hò NÙVé.ĵ†q]Ûbƒ×Óhúñvr}ž¤Q¤†ìÜé„EE’;¯³¯*~©HX”ˆø…Ïnö‚óc»Qú îƒÈû뇙Ñ~„T{v'Z‘¸~æ> ˜%ÿ™\¿ùùöŽÿ¾~÷Ëå±Zò³úçY¸Æ/B8`w7-‚ft4Úòé3³½Î_^2ÊÜŒª0Xœ‰xƘ…œ­àr@µïÌšÕ>œÇÁˆaiúâójZŽçs…FF¿kÜÐûÄv5ŽZXíMÿCG¹<€ðßß¼}³¾ŒRD ì¬Y奿~ÕK×.€£k”(í?Ä8nšÚö˜'MSùçc ÉöbPð³à÷zë+ܸïXP4 t©›ºÜgÅÆô¹›ð%1EÝíVŸFX·îlÖkMÿ"(´î£jŠõÅ%|þÄÿæÏ„ÿ…’Ee§¿PŠ2Š3çþªƒµiüòòCk}ÝŒSî'@âòJįxáÊ•1Ùû…Ž´%«—q®šzSÍãMÿ×Ó^uç.ÿÿˆv +endstream +endobj +7076 0 obj << +/Type /Page +/Contents 7077 0 R +/Resources 7075 0 R +/MediaBox [0 0 612 792] +/Parent 7057 0 R +/Annots [ 7074 0 R ] +>> endobj +7067 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (demo.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 7080 0 R +/BBox [0 0 510 256] +/Resources << +/ProcSet [ /PDF /Text ] +/ExtGState << +/R7 7081 0 R +>>/Font << /R8 7082 0 R>> +>> +/Length 1937 +/Filter /FlateDecode +>> +stream +xœÕY[o\5~?¿â¼5­”ƒï—Ç&©ªˆ^ÒdH”§ÐRUY „įgnÛ›”‹*¡ H»cž™ÏcÏØÞ|XÍfWƒò}½_¾¸Ìë¿,a‹ëï‹Ùb21d/Ÿ.Κ¼:“ëºor ›ð]ÒVðÛøHŽ¥ë¾2 ÀŽ*Vlá(”­ñbƒU¬k¶PÂQâ„rßT”×õòn¹Þ!dã`R·˜Å_ X>,–B²Ê×õ~=ÙAX +tleݽ]8Vv ÑnÙ­6Û­®»ýrtfîÞ/ÇÖm5Ö°Bç÷Ëѳ'gñùs`â1˜´3réxxØ|-a=v™º¯Þ¼Yüé×7ë·å;àÒ–|ñ«·°&8à©9FÍÖ)»N[È5ÕõXÛòó[„¼G(¯1ðxòýd·¼º{‘k]­Í"›Ìúñ Ä´¯×~±Å‹|ƒ*ØœBCHîHôªCrG¼í:(wÄv?$#â]†VAÀ#_µß»ÐúQÔþu<ŠÚ $ý(jv:Eí/IÇ—4Œ¯UÇ£ØyºNˆäŽøN‰äŽ„NŠäŽ¤N‹äŽäNLãÞ"5†jСd„äŽØ¤:$#b×÷ ÈuKàŽÖ Ò¥û«P+l, Ø/™GÈm“Xê†Z&ÂWÁ훿ÍÛž™Ö›ÍøŽ`j¶4@ô‡ƒT +ÌÆÑ€SO T·lkôCmÆþFªšöy«ÅDŒ©ä½3_RŠmŽYòø’SÒWêîéûÕéé̈Täa<3 ŸHåí€'"9Ë$Ÿ¾8#U(J]K:ÕΙ¶Š(…ý»?´Ü]öy±ua©Õ™–>Ù„ÑL¹ðÂNíhî©¡uØHr9µFLPº›iÃH+øÍÒ6PÈдx hf(ÒÍ\#Ù–Á…6˜šjMòºÚN¨ÛZBOM1uöC251Hg[õ@©[0@N Žé«V,q& ˆb5µë•ÀRã:ÆŠèEê$‰hcò(VÑe–,Ó+V7ÈJ­Ê±9, ê|h¸ ´Ð õÎv•Nj\Jz€”0œ¸…B‘Rñ‡yò‘ÃæʳªaÌ«WŒâXÇ ê‘ð)Z‚VGʲÄpO3ØtNϹG„bD]%v8eƒwñ®#ìûÄ°«£aœ ®¦Ã*=X²z!9LkÄ}b˜b0%4„ÖQæ%ùÜ +ÝËPŠSze§[ +Ô688“”ØVÚà$Ý Pع¼½>zþòêüõË“øÉMˆ^Vc/2Nëf ÉéqÚÇÜp^3Æ:$³ŽîJOÁ¸~,w«€ä4 `ú¨€Ìn–hÍ „ÞCÌÛ@‡ù7xPo6æ"á¿;)ˆV4\9oµ“³<>>ÚG_?Zl¡¡=Á“h{æ ¤pK¾ƒâ‹CJ³Ë·(?×Ì»Õdãì+Å9ªÕLQMÁÌQÉÁ Å-”*]û%š<ÀÿÍ[ ^4FÊŹ}zútðÉ&QÃBKõ+ d‚,êÃõºÐ+f„Î調rÞú ºZÌ¿Ú§óúèò›3¨zg2­Ø10?üüÅÎàwK‹]…Û+v´Lzá¶GÒŠŸtxzxšpûë£Çç/ÐðÉí©‚¦Oh.¾l%Ûñ‹~@{ÇèAñå) 4‘[ðÅ ß°›A¹¯ÃIr~õÕˆé¹:ýáÌù´Aaú˜rõdG÷7»ÇϦ퀸#è0l <ÛL÷ïu(·x~å~˜snÊ™¥9Ûn5ŸxŸß}ÒËÙ¾ß%[??wÛ•–oŽíbrx-ÒëƒzEïKÓïÓµfú]@-ïûÅXûïúQ ÿx ³h¿#ô·ò^î2ížÂ UÈfºè3O–#T›ˆ¿ìÀ心YåÅ <ÜOrà9ÐU¸‘èaÁ2<ÏІª”Òl„O—æ„r/*Êë«üÿ&ž$Ü–ÅeÙʼng´Ql£4ð$€è4nøª$é·¾+LfYdw}<a;D°ÛÇ~r, +Eñ³ÓàI9!‘·¿ªcbpÉ¡„QwÔ<šÉ´ÅYä­ßÇCR°J–nûɱ(4>=x÷“] ^{\“˜¦µu&òÚ’Ðéq?ðP’s[[gê´¶ø#>ÛA¡Óã~r\umÅŽïž²ÃàáÏí?%¡ÓìÒベè93гµÓc™Ì²ÈÞt<ÒpVé©}êžò¡àÝcv-xíL'ј‘\E ™%¡Ó£&òh +,Û ô¬wy¤g½/l…Nûɱ(4>¼{ÊNkžÕÄ°vN k%1HªŠ•ÄP’51¬Ã:I †ªâ$1T¡ñé5ï~²£g°þ”Wm†[ã«åO¤·A +endstream +endobj +7080 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172327Z) +/ModDate (D:20081204172327Z) +/Title (demo.fig) +/Creator (c:\\Program Files\\GnuWin32\\bin\\fig2dev.exe Version 3.2 Patchlevel 5) +/Author (eweddington@CSOLT0054 \(CSOLT0054\)) +>> +endobj +7081 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +7082 0 obj +<< +/BaseFont /Courier-Bold +/Type /Font +/Subtype /Type1 +>> +endobj +7074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.883 455.862 277.926 466.766] +/A << /S /GoTo /D (group__demo__project_demo_project_src) >> +>> endobj +7078 0 obj << +/D [7076 0 R /XYZ 132.768 705.06 null] +>> endobj +7073 0 obj << +/D [7076 0 R /XYZ 133.768 667.198 null] +>> endobj +7079 0 obj << +/D [7076 0 R /XYZ 250.73 512.669 null] +>> endobj +7075 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/XObject << /Im5 7067 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7089 0 obj << +/Length 2105 +/Filter /FlateDecode +>> +stream +xÚ¥XÝsÛ¸÷_¡>51øv:“&Nšë¥Î9¾ÜC’¹¡(XBC‘*ÅçþõÝÅ.hJ–ãæúÀÁ×.°Øýí˜ÌÖ³döúìoWgO_ÉbVÇuÍÕõL¤i\Õ¬¨ó¸¨Åìj5ûI§Å|!’$‰žÏ2O"«·»NQg梊†©ÖÁ„,E¥‰˜¾úñìüêìßgÎJfb²·ˆë$ŸµÛ³Ÿ“Ù +œ%qZW³Oº¥ +dìfïÏ~>KXàä@ðd*xžÄ2)gE^Æ2ÍIðORæ^ŽÀ÷ôUšN˜ª8y"¾zóöüRüö⧋ÿxñËå‹sd=>F$qËÀã6 ƒ4-£¶Ú/Ô]jg©çj­rÔÑ=/[ew 6=—yôu.ò(l7ôÎ  ŒÂ•µ¶ h¶2@Z¾ªS¨EJ‡Bk]cOùã„ŒÞýú–gôV™?C?Ë¢½Ý7]w{@ÊÔ5ûÞR¯á ¯÷]G½ï~¡­ƒpu`F‘,@^èäPZÄ>!ôÜlt’vÔÒØzj›€4eÛ¦S+ò™Øõgb§òGú.rdý¬à0õm‘Õ$Ù?ÇÒ|”ŸŸ°ŠÍšá|ùú+-\´Ž3QÒvoÞ_~Jò>q°×ìãBÖ¼g]øûÁpÛ´f ®Û ²iÒ|a2oœ»Þ÷€¯5–ÛžÈth0ûo`†½Ó½Šç‹ ®õ¦hfk«ÀiRùN˜kr\žF7­½µrÔ£°U$T1!c»‚š‘L@7Ÿ’$ø76F¼ÔÑ{å@Ð5‘îw´ÝxKóš[ï¿ïº®¶:º ¡5cgmTãÃc¥\£;†[Ï&¹oV=wf-óXæepù¿œˆ +e\fciæ2‰¾š§£àñ†X6…0•”Eàùëc›>C ¡ñFe¢)Š¿‰tQqžÖB==‚úãÀ¾"¤T ”å(4†›û÷’ l6ÒxsVI´Tdù²†€ä¡T%dBh9øÕí°B´Ê +âê@Ë7ŠÚ^yF j˜¯`>èE¨5F7Kn€È1»Q[µ]B|tM«¸®‹£àºaEµ{cTÏñ…vìöêÝ“òdçµ¼§ùìh^st´jôJle¶à ¼8ÊÜ+ïdG2s|½¾#>aͲöò›æe\§#Í·U!À0+¼2Š¬¼§Œü»•ñweÔó<0C>øE]JeEàSÌ·Ãv·wˆM‚Cm‰§šU G¯&™ePz ^ÀÍE S:& è#z¯û–ðB9øyˆC:ÀÛp‡¤¢ÈïÇw‘†ùÑ]êŠÒ+YjmsÍÛ'Tèy|5wþSÖêu¿%ôOxgxؽ;È${gõÊg±œÐWgœ·ò;é}6Ó]~x6ŒífØws­xŸm‹½%3씊`ëÃp£Ýæè{*e¬´ÅðàèëšZ·™€ 'jÚMƒæbŸ®óš.ƒÜSÀMÁœ >Òt>Ša¯m•µa;ͽ­žP(V¡öiúeå"jÊÈNÞpä;ÛSþ.se6ÄçoßBr×bD2V6OB8RG¡§ÙíÌ°ƒ˜ëÔ©ë |5/3xZ€Š&N0µ¹ýΗWð†ÈÌqÅÿi'ÖK°êá黲îz=*º €Â?æÄíBÍ¡n:ýŸi˜>R„Œe!M¤™#oÓ¯‚êÃ6œðþHdÎ(/{Pyå*p[¨_©T‡Ý4•ý°6Í–«Äš+B¯¹‚Lè„ÿfJÌi6êy}y{M1qÏq€Íý' CòR'‡Gq2ZÈvJí~ÃÚdZîWtà9UX Yÿ^f¡dZÀàýæ}j‡i¿9Mí{çË×)WO¥0=¾§A”^‹²ˆe}TÏø|Vã3Ó*3>Ì…¬££˜CPÆ:Èñ’Íç»­v.D·AhÆ“?Jkˆé÷ü& ÿs‹¸.Ójú?·ªã´à›½V=* ˆW›=u^*Žu5"y&Óg¢¢‘Lî]£MÆÚÓcÓÌÓ2ZtzÉ;„´ûrøýv­úã+ÿ‰¡À‡ +endstream +endobj +7088 0 obj << +/Type /Page +/Contents 7089 0 R +/Resources 7087 0 R +/MediaBox [0 0 612 792] +/Parent 7057 0 R +/Annots [ 7084 0 R 7085 0 R 7086 0 R ] +>> endobj +7084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [150.486 585.106 174.615 615.536] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +7085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.742 561.195 344.9 572.099] +/A << /S /GoTo /D (group__avr__interrupts) >> +>> endobj +7086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.207 370.28 419.803 381.184] +/A << /S /GoTo /D (FAQ_faq_16bitio) >> +>> endobj +7090 0 obj << +/D [7088 0 R /XYZ 132.768 705.06 null] +>> endobj +7083 0 obj << +/D [7088 0 R /XYZ 133.768 130.474 null] +>> endobj +7087 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7093 0 obj << +/Length 1352 +/Filter /FlateDecode +>> +stream +xÚ½XmsÚ8þίðô:sp!ù ›´KÉ‘iCÜæC.“qŒ·ÆâlÊtúßOFØƤÐd.3¯–Õî³oÒÚP™(P¹¬œ9•æ…j*6°MöpÆ +Ò4Ð2-Å´ `ÚHqFÊ]UUfÖBX=­5TVc60§çQ YUò{”1ÔÒ«Tk÷ÎU¥ëTþ­ f *(£Š7«ÜÝCeÄ~¼R ÐlKY®EgŠ¦3Q”n ”aåï +ü9`£TÍȪ€ìLÐ!IÖP=±î^Ôêå³y¡iJ Ø-ˆRPi¨X†Åµ7Ó=ŠZ–ª4Ã-¬þ±æ3a覞åÙÀ0 %ìÆ þ­-4¸ æ0Ãi—Û0_9uk “æ¬Û4nObù¡×é^»¯øêhÀ^ø±OBÎÑUÆCíƒí _ß~!8šüya|6<ýÁå{®oŠ9I§~Ì©±`À§¦µ&x 'œrgEND˜º~XTê{x+zd„­Ìmð˜¬$`Mð± † >KD…Ì]Ýb««4åü‡Û$Œ½é±)øD4¬ñ$ž¡8ïRN?DÆðŒ„1\ÊzDm‡„4"Aœ‹×‡î¹L¤K‹1–ù÷#v‚«cÓì‘0d±¨™qDfœêwP“ýŸ +Ë¢–/¯Ï%ÔõÁ¸†ù“) q,P“±D‹ øYùÛL<Ä—m¡ýæöã¦åÇTVv=!8Ç‘OF{ ±Íõ]Ö±A\¸A‚ó‚Ðm•{žápeÉØüPßføw™ý ‡UßÓ×ÅëÞ¨½-9àÕ|ÅîQN°Ð™MˆšÐkÔÖ`A¾ZÀKÞˆkN÷Ûœ¯ßr™t6·t¶Á¶*6üÆ‚$#Å·~HéjŽc0}_Òfaw5}RÕ÷‹²xGQ2§+ŒçéýÀ_ùÄ#³¹Ët§7aÊâ>#6aXÐæWþN¾ôl¾®7ÛºçqÔÔ¬’½Û빫ÈÈÖòHq˜ˆÞþΟnDÕ÷o¯9õã¤ÌÇÞp°½ÖÞÇî=ô?_<,ØÉ‘Þêû=5Ê=5v±-ÐÒŽùx"?š˜Àn±ÚÎ|4±l Éä]â³7™tÀM¿¤E“>i‰sìqBçÛªÖF_±TPãšj¬ÇãtᦋETÓZÕFà? + +¡’|[MpXtù?%{y± +endstream +endobj +7092 0 obj << +/Type /Page +/Contents 7093 0 R +/Resources 7091 0 R +/MediaBox [0 0 612 792] +/Parent 7057 0 R +>> endobj +7094 0 obj << +/D [7092 0 R /XYZ 132.768 705.06 null] +>> endobj +1021 0 obj << +/D [7092 0 R /XYZ 133.768 667.198 null] +>> endobj +7091 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7097 0 obj << +/Length 1726 +/Filter /FlateDecode +>> +stream +xÚ­X[“ã´~Ÿ_á*¨Â¡ˆÐÅW¶x8›`Y 0àaÙÚrlebƱ‚/3 —ÿNKÝN⌧jÎKÔnI}ýÔj…{7÷¾¼x¾ºøô y)K#VO(Åâ(ñ¢4dQ*¼Uá½ö¥d*šÍçÜÿßl.Cî·ån_i¤÷ÍL$¾ùUç0d,_q5{³úúâruñÛ…]Ü'²Kyè廋×o¸WÀä×g*M¼{·tç©– +»±ò®/~¸à§+åÅ,¹p‡1‹âÔ‹Â%ü±U^…Qà  »ËnÁä¼È³†¨ÎàX›Ž¦*³^ë?ÊŽ9Qs”!`I˜ž* XœH§$Dö§£ ) "šX-Wâ9ÊýësW/¿½¼oß,¯®—?^-.Ÿ¹íw§"QÓüDÕÇkŸpýª¯QcV? Qè»2×óBïu]èš¼ïÊÝà»À¡Õ]¿GrkÌ-Åeƒã¾Ñ-ìý·A’ €L¢ôÁ ºÐ›²ÖÅ/<ä¥ëËÕß¿ýj¹|Lá$ˆ” ™Ž0µ˜Û Ùùé–A'DÔž + Keú.á?†šØךbùýÏß"q—UýÜ8†Ìž2íc©OEL˜‰Æ/W(”@Åú^\ÖÙº"£— ÂBÖâhúnßSÖ™„Ó<탚òAL©ñáxñâj¹yñöùOHØüÇþÿ{Œvs§›Meî æu§›¦ß®F1S±|Ÿt% ÏáyýêiGWË——cWO‚Ôêò¸ò H“š¿§"îLHÝee}{gÊâp¼Æ¥åÏ'OHiʺì¦lûo¹ªŒ¡Ò³1†Ô|ByÛê³0e½‹nÎC­Bÿ¥M*}<Ê*U›Ž.?{æ¢භ$n +v%ïâèw¦##_ÇoÐÅø{™(∥*¦Òzÿvg +=…˜dìN…¾9A» ì¬{€l+ÉÄ`™ë˜¢Îaavû²ri±]CVH|SÖ·–‹âøXœ-¸Ú–f•Ä`— $>"ȯ“iùÝ6몵.Zš7ÈZkü.L­‘3ˆËezG³­é›\³Ù<–Üÿy«kœÏ7‹ný€tèkBòdBTœ̉c4X·µ™Éп'®Ó +ì}crݶ¦!þÞ&Zs\éBmÐ1T.]¡À§|¾ÛåýD@¡hÐ"³ïJS£ðr&ü–ôìu^Úë|‡ëâ>¥R=ZB^G¤xÙN¨•œ…ar®WF_V ¹ÂNWŽR Ë:Fѱ r­„]ù‡~´¸ –;™–¥76ÆÖ›¼t=Žm÷YN[ú6»¡=òYG–PNçdù(³{Ó¶¥»Bd¬|=¡ÿ;ôP-1ÌÆŽkKìÎ{ò=¶fh×ÞfÅŸ³H&yÈìÔ9ž Šãa‰Eµ•ß·º@ÊÅ LÒ»õÀ*ôz°îoð³¬7fl†õŠƒHÇΟÛg)ZZ7}…4¥ªqÙfm ê«R·¸¿3º­?²/ˆg„oÛNT‚#%šûlK!uËlv+Ý~BÉ5¸æå`NŸUÕÃÔ u@ß@7¬éýy˜þeí6D¡ Ó:7%1ŸçSi%GØ[t·¨ { N‹„e›™.N–h;{Úù_¤Œ¥lˆœ€ªtëܱVRÇÈáyw6NJaÞTà·»Ì>`éÚô7[dcEµÜ{œÜôU¬ƒ¡ö + ¬$»FŽ+¸–ÑvzoaÆÿ+¬~ÚþÞ¹³ÑÌnc.U wQVÍïg²´Mdê¤}pZëÁ]¨#RÛÌâ%"§=ՑѲ”Sôp5ù¶i’ƒNŒB.s ÷i+9M×`ì-’±I@Hµsî°”U×pÌfä ÕMÜàÞÒÃ;:tÝ¡çö#€IáoÏîSŒ6û žÏÃxþ†¦Û]†Œ§dчÔPÝ5ó›<Ç9uT¶Ê#aï™Ï³n§o²„Xùð|Û6u*½„ŒY˜ÄÃÕ6j(øVIËÀD¸)ˆsG˲©J ¯É@*¥3ÀLÀM™Ž%VeIÿ;¬+©vÊÚrJšÁÄ !nXCÕhÈN‹.¦nLA?øø 2]m¦ìŒY"Å`ç8‘“ÿ«¤ ‹Õûü«2üýc¬’Ó¿’:72ñK]æ:}€Ž«mÄ #à øgR}&ü‚v˜(w»Á¢Õá¹™ÁYŸWåš$¬H¤ùýá®3—ÿ䜧 +endstream +endobj +7096 0 obj << +/Type /Page +/Contents 7097 0 R +/Resources 7095 0 R +/MediaBox [0 0 612 792] +/Parent 7100 0 R +>> endobj +7098 0 obj << +/D [7096 0 R /XYZ 132.768 705.06 null] +>> endobj +7099 0 obj << +/D [7096 0 R /XYZ 133.768 334.067 null] +>> endobj +1025 0 obj << +/D [7096 0 R /XYZ 133.768 329.46 null] +>> endobj +7095 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7103 0 obj << +/Length 2111 +/Filter /FlateDecode +>> +stream +xÚÍkoãÆñ»XÛ].—má³}®ŸÄJ" +Š\IløPø8[ýõ™ÝÒ”N6ì´¢/œ÷ÌŠ;k‡;×''úèNÌâ>‹•#¤da9A¬X g‘9?ºžÇd0› ι{>›{Š»m^n 𶙉ȭÿ­Ó^(|WröÓâÛ“«ÅÉ/'î⎘ð,æÊIË“âN›ß:œÉ8r-iéHH…9X8'ßpøðkÒ YraP‹âÐ TÈ<©P?ÎæÈž|næë4ÅÅ|Mß²Lû?']©×ID¨¿™.k¦‹ÕdUµÀf|b³¹ˆ™ðbgî…LE!^yclnÞšo肽ê¦K*Bw5~Û­NóÕiºF짋ˆl·Õ¸÷¸Ñ⊼ú9¯Öl6÷Eì.†3i]nóB7HÞ·º%@`e3=Ë,…d‘热´ÖÇTèæ|¦Èœõ¶Ëk¼d1ßtS×­F¸í’¦›÷[³òÝrîF³•TM_Í»¼¤E¾l’&¨ºMÒ!´ÖÝ@Qý<ÜÕríjØÚ€ºJ¹` +ÅîÍj8 F]@¹£b{n©¾6QkÜHtƒTg§3ø¶&v…s™^)’¾èZÜ·ž„ñ@¤„BÔ¶©Sݶuƒà@Ÿ»Ÿó¦®J]utÑã&O7Çĵ‘éUÖm‡Pª!‚òªØáòÑZÉ@»ºG ˳g½ ‰¶êùvšêpô˜ˆÕ$É™Oi~õ””ya†|P9泉àëùLú1ò½«gžAæ^칿›dæ)fB¹„Ið³Ì«¤Ù!Œcâ\*÷"©öYd5¬ —8Ý + ˆýU_uÞmÊ»«âKÝæ™M@l{»#FŠ¼êˆ7åΡgF¿þ˜ :oÈCº×w&wUà~È«¾Ë‹ÑmŸw7rB•IF“*S¯p]’RˆõQ¦nÔÇ•+¤Î·}‘tÆÇâž|&y4IFXPš„iÆc*Ý$3áv:3–”{_i"‡»Âü:()"4^†’bŠ-ÜœõåöHŠ…j,?§Æ†’RïJ0ÛIÒ¼mËÄæ¯Ñ"Œ3Á½}EWM]‚IdDñ +À »'CÒñ¶ ËÛm‘ìZ\Ù0ß +LØÑcfíZf ÜÅ,‚4Üb N€òQÒe¡»Ü ×´¦­L}  +yQP²'}KI—SÂÙ°„o‘¡î»„ª¹–ÌC@ý¶Ì?]LÔH¢½‚2]¥ÚØ>ê¸ +.7 iÖ+­ „ênXÕ "Ùn‹<µNùÚ”áÑmþŸ‘éÑÞ#ó}oì=›#ñ!”­ ü°á°K…r,I 0Sf;€g“ÂÃc!Œ/ûyÐw”ë3-ö±W fè·,Z´µy.a¾[ö醨¶Iª˜Y,'V:ÈñJI¡$-D¦ñ¢M]¢-é2ðÍòX.c(… +)Ú®ÁÕ„U胼Q!C2½4·_¯1D5Í){lämc»~n$€*)éh7°°!úÏ}ozÜý§c±ùgJæÑè<·3w€±±5¦¬;äÄ“ÒÎ'ã/$hCÑóˆóp,ÌдDÂÙ‚bbr\ …"i[]. M»ä->iZü¹ÈÄœ +gÁN0@€ýçž:mwϵ0ƒ48µùÃø@[÷2ߌxamtMÉ0¶ÿ€Eœ€%ÌHuFgˆ50@KݹÀa§ûlËq…‚8.Kªc1Ù·{s‘a3b¡/^w„%aôuíéà1Ãü$Ÿ”GÊa*Œ£,y•=vy8Ñ€…òJ!uŠéÏ#¨u‘’LDêXòqqIašv¶›dYÐVZƒÓ«®e˜ìçE[; +˜Xl‰Ÿ²ùÊDÍLÌíW¸s0ÉRÛl€½R¶ÅY•xßTHSÛØa +7Y{z,'JO †½¿³ –ËÝ¡yÇt¸DæTo오]Ÿ = Ön³êH8ŽÍ¨:v>xØñÅkïð©7<»ãqðÅKo>ðI·¡ïñ§Ý_&ÈzëßxÓ:ßžjc§1ö ÍvâÒlˆÐײFHÁ 9ñŠp +ÏbÌ/¬@go±à\D~¸oÃÁ6g¦š€YVfη†0Ho†,b±GCÿõ£³a3f~@Yt“=!‡»¤D¾Ü}€™ÁŒ þýÓ9Ì@·#ôq” ^Ë„Ák¬F1SÀÚÞ@„#-ëô«|€¹ù / Ãœ~¯-CŸ–ž½Æ =¦Âôdrx3}óÍ(ïLð‚¦® ½Å{Ú_Üß-®î§(ãùííýÁ·÷ç—~u~ywûZ^Ü_^!Ë0`JÈ=mi»l[²&i#Gu"Xü¥¥±LœüfeùËÊZí^Ü#Áa6é×ÿJš¤ZkT4ðøÛÝõ¥!¼gߥ€à̇4zÅ[n¹¼úðÃõõÍÝõ‹*Ê=·ý²‚˜ßÓQªwè¸<Ð1‚÷»ï½OIO~ù?UÒßSÒŒ• e4 +Íߣ¡^ý?âð¿ÕPíGêrÙèÏS'¦«·«è­üߣŠÁžŠEný'úÙÛ5”©ü=jîi¸jl÷™(á¿£Ú(Á³ŠÞ^g>úy ³|ÏÿãÃù´vMÿÈb(ƒtóõþ€7Œr‹ ý{x©S|ü~æÉ3á +´%he^hÃÜ–ØçZ3“¡;‡:Ý/ë§Ì•‡*ÿ +I±8 +endstream +endobj +7102 0 obj << +/Type /Page +/Contents 7103 0 R +/Resources 7101 0 R +/MediaBox [0 0 612 792] +/Parent 7100 0 R +>> endobj +7104 0 obj << +/D [7102 0 R /XYZ 132.768 705.06 null] +>> endobj +7105 0 obj << +/D [7102 0 R /XYZ 289.284 593.783 null] +>> endobj +1029 0 obj << +/D [7102 0 R /XYZ 133.768 577.056 null] +>> endobj +7101 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7108 0 obj << +/Length 1088 +/Filter /FlateDecode +>> +stream +xÚ­XkoÛ6ýî_Ávcq|‰l(Ð.i°bH±Õ¶…¡¹°-Orºäß²xË‘$Š¿ˆ”Åsî὇¢HÐ "èjô~6úá“È`#Ýe¶@”s¬¤FÒÄXŠf9ú2f s9‰(!dün±˜Œ«åz»²M{[N¨ßl¶s7˜¢bÌI<ù:û8ºœþQÇE=À¦ØeëÑ—¯åîψ`n4úoÿèqá¥õÀú<úmDæ)l¡uÀŒ¬…D2V˜ñ¸ øçO׳ËëÙçé$’.æß/ß]|ºþõ/ß½¸|ÿÇÕÕ/×Wuˆ(RÇ”£È`!E3^7âܦ·7ójW:]ÂÝ û_JÝ\°¶KH ÇÐe{6¦Ž•Fuz}´oÞìÿ28vü÷I#.Ì4¾D –˜ì)56gp±¬’ª²ëtuߌ)͵rY\?;{·;ߣîø­õs?Íçßݸ¢¬Þ6OS¹P9%çͳ”5×ÌÚ5Êoë­§;«ËŒ×Í›;äŽÉ–bO0·›ü-Dt0#ÌÃë,Ï´»ËÉ!>¥YK&ù|¹ÙÙ²¼Ýî:$^ƒ’4D¢ôËH¼ $IDR¢ÄIÄ % è ¤$$!ƒ”X ‘!ùÜÄG+Í:r(ø„Ū}b:>‰³#+ÎuŸÚúD•ˆA9¡­Qx… J +m‚,ì÷””=« +ïTíº*Šíã +‚(Á#ÄïwL«{»öºa&ÿ>ë™8Ž ÞrQyCüyv O”Pû)‚U,‡ŠÍ¶/¬X&H}š‰j!³ãŠuëûT¢Ïýª²ˆ´Üø<ᨶmwÊáS³§;‹ÇÊ&å<­ª“‹‡Ð¯½xˆäÕ‘½öâ!ÚŠn(}wj&÷À—í!Iï¡‹ÑXñç¹ÀÙÄFq}x6¤ æ0=WvcËdgóæ(¨>8¨¯³n›Æ…Íš†h.îó†ñsª›žè[‹ ‹Çõf¢î$uç{9áj­–©GHï=dqwc7Ç’ÿ½Sh“ +endstream +endobj +7107 0 obj << +/Type /Page +/Contents 7108 0 R +/Resources 7106 0 R +/MediaBox [0 0 612 792] +/Parent 7100 0 R +>> endobj +7109 0 obj << +/D [7107 0 R /XYZ 132.768 705.06 null] +>> endobj +7106 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7112 0 obj << +/Length 1232 +/Filter /FlateDecode +>> +stream +xÚ¥XmoÛ6þî_!t_ì9Rù&ŠLÒÛÚ-°¦K½ Y’u¶åÚr“¢ÈeR¦½¥ÉJ´î¹çx÷É àc€‚×½ŸG½çç„2’\ £i€)..ãˆKŒòàªOHDù Ä¡þOƒÄ¨¿.çËY¡Ÿ—«ýêS‘Õj‚$˜õ)âƒëÑÛÞ«Qïs+_(À6Ž$ŠƒlÞ»ºFA®~| ˆJÜn?”©Oqc8 >ô~ë!›0¥AÉa‡0K¢$Âhû£AÈåÓ(¯ÆÙ¬HWãÉz=žUÕò측§âŽ9 B1kËk#œëQ’AÈ„zX×zâ¯á‘~Xá-F XD’HÇ?ñú_×éªÞ%À€)Õc³ò[ٲDŽtÇá«`+·°È‰äƒYÒBf2i£JlÊDS1Y- +=…BÍ‘2èîP|Dxa°ø9/«,ÍÀÍÇlRd;š2p4OËÅ™/€ 9µÐŸæËYî c áwe}ö_)‡õ<¿(9T«±€L»‘þP.²Ù&ège•UóeZG7ÏôÌó­ FJ˜B(GJ`ù£U7Öô»ª°+|½ýD)Qé±eQ"ˆm«…˜'M¨V±ØÌ5î7=üþ +ååÅŸïôÓý‰‰Ð¶|óáRÿü·âèͯ¯.ñøâóíº¨)üô@ÉSµêãÛ¾~™~0íôƒåf}ã4‚NÁ`ˆ"OipÔ1œ˜P.ŒY+:u䯺Á.N¾—‰é’EÕÊ„~t` ¸éÄx¦žÅ>צÐC–ÒçÓ]°T˜tÇŽ_Õ›ë4¼)5æchûËÛù‰[²qDÔ&ö¸’¥ß]²$Š¥h—ª0Lór¥$VV ¯,×·eÝ<(³ýº«ÉæÀð#ãcOŠ»5`¤'`‘ÀÃ;R#nö›Y¾nÛJ!Ž<õ‘y µiê#]ä]S(nq&FP™Ù Ùîf8d +Ÿr{+IÙÎæ0DwLœu‹ÑéIXF˜‡@–® Ó÷}TN’<ªòÕ¯/^è:òèâý6ñÛ,¨#” Ø].ÓH7 xo°°“€}+ØÊ»‹Jö£J•øR›uÚM<5g·Í¤Ü%w~î4OÇ>ªE§±t’•»ÜƒSºñÓ=ñ¯ëµõ‘·õU±“+º'W.êC>®&WÐ +sršå¥Gvî”úx¦<ÑéÎ÷§É°4¹§bï·Í’_֢ݱ%È·².>YsÞ•uN|²N¸–µGS¶2ÃpG™¨¤GÕm»ÓN ZàM‘OÿŸ©ˆHÌÀ{ß&qñË¥ƒßÝübu€L÷wÖÝâÀš¶ö†ØÚ„Çöao`îÞ@XD©{K’­€&pHÊ!WÕ¦6‰!K.v 1_UJÓÕIz2µ´â@çf`Q½ßs²”¬{P1嶬–Þ:5±óîÙh×P÷‡öÚ콆K©Cð#.áæ¿\]¾U­Ë·5q½.Å*­‹\ÿs ©ÔfÝlôÃË"ÓLzÜ,gó¦º> endobj +7113 0 obj << +/D [7111 0 R /XYZ 132.768 705.06 null] +>> endobj +7110 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7116 0 obj << +/Length 1231 +/Filter /FlateDecode +>> +stream +xÚÕX[o£8~ϯà1Ù/ØØíÎHíÜÔ‘¦í¶ÌÎC·Š–Ù$d€ô¢ýók°M€8QSVÚ¼ŒÏñwÎù¾ƒtîè|œƒ7Ÿ0sLÁÔA„Ÿq‡ +˜@N;7CŒa#A‡'#S8,Òùr–¨ëe>B|˜ýH¢RN`yCýÑmðeð1ü ¹tPË7R'šnn¡ˇ_ˆàÎc½tîO.E•á̹ü1€mÀ„8>>D5`¹’ì0êL¨,øÑÈe-žªQ ‘ëqy±Ì–j&G¼B(½ºxÌÓ†¡6„Æn¶Ù0êÙMm—­Jýä‰Lõx¬FlH’×! ¡¶CÛíe¿;®í¨¶Ë“2­ är*—·w;»¾R«ÿ‚g_?^¡ñÅŸŸÆ’ r +©‡ojs%Í8w\$K­wý­~¢ü¶¦Ï³2Q¦7ø¶^"« ‰°ØzÀç¸m«6sóñI'Æ0Š2,ÓHí¸J%bc]µåãü¸Xrw¿ È«ƒÀ€ŠN }¨Ü Ó\&=ÍǦºˆ!UfiݯkÕ¬îW©Ò½‡FjnÄçmÆGíñQK|¨K`O‘k\Ä8Z¦šÀØ;4¢‚¨£%+µ™éBSãq’'?Õ8@r’´<Á§ VW¿k>gù˜À'ÊÞÙd×t¸î8µ¸õå<ÂòbMZG™¹i+¤ïo÷*Ú^±ëÄ´ˆD·ˆhj¤þc®{p‰×χ€¶|OåÃóǨ?® wp ¥¤nß¾U£îÁÅeMÂF›¼ƒ¶aª6VÇ‹ïçÇšD-½±¬køwïq[ QX$k?GÛ¶nãwÝ ü°íZ‚Ÿà_ÊS;öKa°š×ÖÞ¨QH±š¤p;Dg€ö©ë5.'QjCÖq m(“~ìdKìEY´#>l¶³6êD¶Ô©ëî:HD¬—QD›.ÖÏgnË_d +10Ö¢~ú¬oôÈiS¿i{‹ÄÈœÁýdΞxB¿]j¶- 4Cdr®+ÈàÎœÃ]‹M[‹wµ5Æö‹·zíÑÿÅ»”J yˆßràév¶uüv¹ÙþþÓöm¡GŒ{G€ÄôŽY¼çÀ h}‘¿pسy5';çïù"5Çì6å`ý‹Cm—fé"-ßÙNzY[º2Y´ZÖç«€Oöå+{-_±$ b„nÐ;çaåêð‚tžä† õ¦á¸“†Ëï_×ùà–yCÚ"›ëhO‚2]<Uâ@½5–qsN÷ˆ3™)D:qïß_¡“ŽB´º$–ñÙùYp¼¦íjÅty®ð]Z1«ŒVˆU-¦=sóo6Þü7‹§-m´}z¾ª¢ˆçËÄ@À©ØY®ë2̵߲U9ЕÆŸ.èmL=Õ±´s.âÖä©o¶šéé0*Wálö¼þ/_c»×Ehø'wiQ&ù¡!JýÕÃ|­°~ý\ŠlŸoæ#ì“>áí4\bÂÿœ,’<,“X}“©¨[ÁýJ]|H"uá©Á#LŽª?ûÕì|új:Ât˜åê&¬nòñ‡î,h“gí2{z¾Kýÿ­‘5\ +endstream +endobj +7115 0 obj << +/Type /Page +/Contents 7116 0 R +/Resources 7114 0 R +/MediaBox [0 0 612 792] +/Parent 7100 0 R +>> endobj +7117 0 obj << +/D [7115 0 R /XYZ 132.768 705.06 null] +>> endobj +7114 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7120 0 obj << +/Length 1127 +/Filter /FlateDecode +>> +stream +xÚÝX[s£6}÷¯`¦/v'Öê†IÛ™Äq·Ùt×[›mÒLŒÈÒbH1În¦»ÿ½Â’0àÄIÚ‡úEBHGßå|­k Z¯{'^ïÕ˜Y.p™¼ÈB„‡q‹¹6`.²¼Ðºèc  „°<bö—ñâ&j~“ïgˆy!°ƒhŸ@>¸ôÞôÆ^﯒wA U°p¡mͽ‹Kh…òå ârëÓzëÂ"TnEåÁÄšõ~éÁªÀ„XpˆÖÛ`Žk1Ûœj¿-/—ZÙŒZHSµ\øJ‘™ÔbîçzVdjL³B¿J² ¹zˆ °†*,iÀm·z ÇëKlµüªvÀ”éÞh4E' +÷Ë÷jôÎÞŽ§èjôódt>›|˜ŽÆGãZøPª3\K؃!奩ZÈ1=P3øëMGj l k h‘ÔˆY7!!ªA¢*¢–QàmCƒ¸*îE;Ø€· ¹ÖÝ®IúM©-¡ˆâT„¿CjÓÍÆÞ‡÷W?M&çrQÉ„\€°[¬m3,hsW˜;EÊk«€ˆ»U7+ï+îߦž^ž ­ÿûßުɭŸ¬¶8ÙÊГLn¢vq !ù†Õ5žŒ¦ +T3 uñRPí4h§Í[œ§ÕY@I ˜Aôw úˆ¸bÁç˜|œúA¢-<éKü¥¥ 7+ÜÚË|ÔnpÒfpL!u3žžN'£šÉ¯N~U“’lR‚ +ßšá-¸ ¬Fa‚1 Û‚׌†ÛÂÛ7ˆŽöBÐôr:‚“Á E¼0™Uû#»y”dŸtºM ‘ç«ãæâà}"3`oGþì¼Û-ÞälÜácƹ1#}”c¶rZ[xl2¹«5CÜÇØNÕ1A—"¾×k'×"“ø®F—jJŒŽüusmÝÀ‘ÉùЀ™º”ËœW«’®‘Ví»…§?[U7ÞfqØBî8‹Ó¸¸×·Ü¶.ëŇ<Š£ï²B3ô‚]*‚ ߇yX Äj¦ù»QŽì'…×›X§1‡A¼]YJ{ð–õL÷ Ël¡µ=öŠ8½[–†S‡¥Þœ³=ôÆLZ +µt:ǵ ÓXÊruöîÌ릦)Fœèh㻢Íì2= A-\‰L9âÑŽ®$êêJT¼ÉK(k뛵¾ðó¢™ðê$ëBw1õDëRµ±Ÿ†•EÝbγU¢—ýy±ò“äNko’ñG=Yú†¹¸Ž—2¢< òÿ«ÃŽøKwØ‘ÿÒv4©›>·ÃæûwØ|g‡Íè3èNê=µÃ¦í mvØÎìH<¿Áj;TÇŸßfoÒÚÖg?¾¸lþõ·~Ep¹¬îû|C0;pYÚ+;¸ ˆqÖk‘ŠÜ/D¨¾m”5³½+59s5¡j@ð“CÄÕ†PÏ¢¶e”«¿|¸ÍÄé“8ÐÁ†Ì>ß]‹t[åLÁ Š +endstream +endobj +7119 0 obj << +/Type /Page +/Contents 7120 0 R +/Resources 7118 0 R +/MediaBox [0 0 612 792] +/Parent 7100 0 R +>> endobj +7121 0 obj << +/D [7119 0 R /XYZ 132.768 705.06 null] +>> endobj +7118 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7124 0 obj << +/Length 1609 +/Filter /FlateDecode +>> +stream +xÚµÙrÛ6ðÝ_Á‡ÎTjLÁÃN2Óœ“´i¦‰¦}H2Š‚l¦¤ ’”÷ë»à.dJ¦ìd¦Õ àbï âÁyÀƒWGOgG_Ê8ÈXÃ2[B)–ÄigšÅ™f‹àãDJ¦âi(8ç“Ÿ§¡Ô|Ò–õº2¯›©H'ö‹):8‰ˆ&ŠgÓϳ7G/fG àÅ1 -XÆuPÔG?ó`ßœ©, ®zÔ:P  +w± +>ý~ć+$,K¸èÖ’¥YÄ:aRiøùó÷ïžMÃä}ŒËÙÓ?øÄ5÷LÀ"NˆA("¦¢$3ÅÞ\ž z*q5|F)բēFFÇñ¯œ°Nq‘=aŽ$µ'y’ ®ó9‘´›ÎÉñ–ú.IÕÓô²Š”e2CÊû/KR ÀŒ¤ÄOýyÆ4h58~±ÊçÎsŽjWÖ¦APàb/M³¬ìîÊUgšf³îr¦’1.È}pül›ÆLï˜vöúí‡_»föîõ‹CÎÙZ2ö–Œ¾É9»–Œ†ÎÙú;õ$3rÎò¶sTvÀ9:ÙqÎ@ÖÖ”7ºÝs9ɤ¸fÉà¨`PÚrUvc<ø=Q¢Ç£„Ž+k×HuiAAªwf/4ZÜç }X€Dç{Èi»ž”ÀIe#ÜDÞ‰ ¥,Ž÷BdºQùôÔ){Ò2aµÔC¿ÙŽ$ü˜|Æ«Šq•~‡|à<Ùõd[³>«íÂìyê_”è½`.|äiŠ¼„¼^®nDzһ§FƒÙx’×8õÁÜŒä‡Ç"šB¦cåKð}9Ç2DÊQAŶÊúˆ×>â Gňþss‰m9YRþy’ùj¬ž$/÷ì•Œ +šþöòbIö*<ÍæKMéÊB­Z hAWá‚ê¼\=€ƒô F¤¯ƒÜâî'„¿qv6ÏgÛlr2¬#; +û@NÄÂÉÔILJÒñ-§K˜ lÓÞ+åì#óµhk-³g­m=-ªrÌeÒ‡8'‘ +~[ƒîLîXWJ¯A/Ð=Òïa´§”÷‰hkÓ¶³ë³ucÏ›¼>l+éÓj¹¼Ëy·U?ÀÈñÙ›,½´JÀ`™ K¦i´üµ\ý5ÐÎœ+ßæk^–•i‘$Ì~7$¹kÐI÷ü² íüËbS¯‰? Ç)Ó©‚;Ø7¡mÉ4š\N…†×¸Û´f¹© 'e&'ó©ä—«îKkkã¦%ºVv?NµžÐne +Ó¶¹§ÒYºc a¯ aÕyWÚäsWz’X¡€™X“ïû¾)c9©œEz¨»È;„Š|…€]U×Í ýܬL“wfAÇ×þî„gˆQÜô±˜Ô½±éç²¢ …]uP1ZO§$h ÛMéi°¥ pOV´5Â}?ïoX˜f K¹ ÂíQtÚòCí×k»¡[´Z„ b#°È»œõ•fòº£oUk‰Ø…J=¹"‚W†—¡1ª-|ã"/Tîºp„Deó…3±òüÜáÕEY\àÙàœ¼&× Ë[Ói9oò¦4-«¥ì…u%q½6t¯,£³öeizuÜêÌãV4Òñ$_¯«² o…1 Î¦)ô!Ä;ï984Ü÷Ns: ’A¥ žmÚM^¹°s›|±És #”†!‰-ü³:!“¦¶Ì¿š™+±¿éCÓ’ ±«kíxˈ2C.…­kpƒ³ŸR“÷Ɖ0xÊÀøeÓöæ¾R1XUô-ò¤ Ñâ¡O²ñz4”õ5™ýº÷nvuX¸Âãj°¢‡þ4ËC!=/hi˜ëºØ<λڜçÔ‘nû-½Ü©©–ƒ±E(2& ¹ZžJ‰’|€zë-ÃG»k~qo +Úáê\yÛ)Èk-¼­ïsŠ¸q +Õ,Ý?nN¾É¨"ÎXK²*b©r¶®º +£ÿŒd)KÔ÷ü/âÿÀ‰Ax¶ þÀI3È) +ÄWƒ¾à¬Höš]lxn +"\`Ö—êD¤¸ƒŽOÐÒ…˜¥îœ»Íe3UÉ$„*FúžãHÚ¯×)û*ÿ nHr +endstream +endobj +7123 0 obj << +/Type /Page +/Contents 7124 0 R +/Resources 7122 0 R +/MediaBox [0 0 612 792] +/Parent 7127 0 R +>> endobj +7125 0 obj << +/D [7123 0 R /XYZ 132.768 705.06 null] +>> endobj +7126 0 obj << +/D [7123 0 R /XYZ 133.768 308.089 null] +>> endobj +1033 0 obj << +/D [7123 0 R /XYZ 133.768 301.213 null] +>> endobj +7122 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7130 0 obj << +/Length 1096 +/Filter /FlateDecode +>> +stream +xÚ½XK“›F¾ëWÌQJ…Þy0<¶*§ìlÙ•Š“Xå‹í¢Ìjå Píãßg^ ´B²@»Ñ…™¡»¿î™ž¯[`´DÝL~O®~£ +!ôäc~‹cà{òB^HÐö ÚQ^$×Wñ}™Š{õp²Õ"i\5½’Sõ”“z-–qp•”õ:€Bãû|F ¾Ý¢.`¨`¢¨ñHià=g +G©¸·Ym¢l`.ݦSúÝÞ”År-Ö°L-åQ ž/õwrÇÕÉ8Ÿ-¦‘`€YhðøT  РwsÕyëÍsǛßßßüa†Ê™­1Ü{¢­(ªËx½)²U.ª¨ªã²Þ³ çï@w×;F{ÜmnÖNN2JÐIrå¡kŒ+RêQšqUomŽpjl* ÚM‘§/±—ß·ëM/21ìð^ZˆûÀ>('%ûAè†ç{Š6G»lõ_óE‘¦–cY/k!îÔBÇ÷€†ê|cs~g«ž¬3§ªN肨g’r» bz¸e[$‹¥Ì3YåU]n“zUä•Y‰¹J:(R•KW!k:+’Xéš™ŒR{ßÉæù¬RÚã ²6„äÇÇq»ÊWt4 ×~ŽM.Â&aã“5ZKÌîîÈ‹PÚ’—Ûè‡U®Šðb•_èZ,k’®Ë.0 º2%Ì•oä ˆ~$W5]þçys}ïÙÝaCʲ©¿×¥qwº".öði±%Á8MKQUfÒÁÖ½‡µÿŒ[“Ú»?ÿþøùýÛw»*EÊs{¶î«ÙÝ4Q¶N–*.>n*Ö…í§ö»£óÔ_ Ã#¼krò’ _è*Œ ttRlžt¶âÿ/¡'™ˆËhQUã¨@û¦^Ó@þ£G +)ë/üòåþù©,z¯Ò¹¾u-Ð"hS\:àÚ/ó-¨Æ²Èé ù‡@äá¹ÞiÚ²ó#v"ÑæÚ>Mãq*ÛÔúìcü…¢oŸö§8;`r~¾#Òò%DÞM iêd½ÖA«Zì»ÇµÙë±8=Ô‰·bïç™0Û?äãLóI6> º_‘‚XÒÈE×"5]kÓ½Îï¶fðV$fàšÁ×”]“ÀÌd +ÚÑíŒòiQÚŽXMîËó§:n³ºx²&‹Ç§¥ÈŸ‡ü +° +endstream +endobj +7129 0 obj << +/Type /Page +/Contents 7130 0 R +/Resources 7128 0 R +/MediaBox [0 0 612 792] +/Parent 7127 0 R +>> endobj +7131 0 obj << +/D [7129 0 R /XYZ 132.768 705.06 null] +>> endobj +7128 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7134 0 obj << +/Length 1854 +/Filter /FlateDecode +>> +stream +xÚ½XmoÛ6þž_¡*m5#’"%†lIß°.]›mÀ¶"e%V'KžL7É~ýîx”,¹ršCõ…äñx<>÷ðH*ô®½Ð{vôýÅÑñS¡½”¥Š‹+KÉbx:UL§Ü»XxøB0©ƒÃÐ? fB…þ¦\­«‚êë6à‰ß¼/róÈ—œï.^]ý}Äa®ÐãÛœ¥¡òòÕÑïBo/½É4ñn¬êÊ“¨rXyo~> +‡KéÅ,CN'L)O«˜ ©È_6ßl‚™Öànx† ø­e0‹@Tò'Ç7e}hçe}ÌØqUίóüE“L`-ú“Ëz ƒe†*¼,nKèڂW³”E:ú3çÍúîr‘™ìãé¿ÄÂóªÈÚK˜a<=Y¢Ršÿk+ŒXœC@[8ܺ†½B²";ôF³Ì€8Q¬îŸ+ÚÍõÃù«Wç?õõfi”Žâ4D'EP^¿9ÿõÅé!d—‹+½,êÅc’±£%ø¸ÐÎÒ¥ ÑeÕd‹ËÉZCã¿¥âÇó“Ó“ÓÓ7»‰ª Ó½ÆÁ·‘iòzròo¨xûâ÷³ó§SïŽ5S\Ò K…CšÕMY—`JE‡ˆ…c»¡{à| +f2NÞ~„õ,æ,–üá,s®¢$¡âÏ"šåæ]Á=\9ĺbÈ0ìS.,‹l}©źmVÃbv÷BJH=|gôÿßùåèOSLãGY88Êú…‹˜)“É‹%Z2õ«lƒ§•Lül±h Ì›(.k*M§ÇLpåß:åm]¯ŠÚ¸n`Õä™)›š#jp¦&)ÓBAXݪ8&ü•‚ ­;-”,/Šº1Å‚ó»‰ œ§*éF^¦¸5S@L¢h0²ˆˆû›f·hÊ·\°0EΠe²Þ˜v›ã"7tðo7î°]S)bM•ù)œRsEåÓOÞ>ïùÍc€$Æ„sßæ#¬Š=œ¡ñ¸Y­SÅWfUù€?§ÎP~Ö–Ù¼²^€(£¨×´ÅÂ’ÎvØMÓ)Ò¹'–—|JNíŽ8§ôØaq&cz³,ó%áS:¼ˆy +wv(ZKRhìHŠ+S´{Ú-Vnú®yVÿåBP»q®< 8¬öbECÀ*énrM³4m ”?Ž•ÄŠ§Ê¯ûmÁÓÈÏ:ØË +a'¥ÞkÔÁ­…BÓ™Àp€:µFGAéÆeò%÷ÄEDš…ÉCâ² ËL„Ú'ÛÑΫl½®ÊÝ<>4XHÇq[f.uã¢7â#ì=í0ÛAƒ.kö2="» +GdÇíUOšófDlÛvÄÆÀ;»÷§,Ññç ȱC¸«ÇñO Û x""9ÅTÚ±;"ž ®éL8 @4 +uݘ~aV œ—6µ)JmQ´36 ¯U†$¶éã4±<˜É„ãÑîN܇üììõ› +ýóWÔÞOhÒN÷³ân[p¬Þã«æØi>3÷1Óœb¦»t‚Ýr¡1^.ª»a´µ±6ðZà!ÆOK¿ë7mSyý_œf6M‹€sÝ=ÇîÎ0|þ‚18†y¢_Ö=}ŸuÑ‚—õ5Y{Q›¢¢êóâÖreEtÚÛ8`XÀÛ*r·¨ß‚$ôízbÈ%0¸í$ð<ËÚ;ª[îA鎇´³fþsLì ­X¬¢ý³§¿Tíç±’G¿÷áæç l×3#våÈÏîzk´²+›¹PÚl[×ÝÚÿ[ðb´q#]@°Û…–‚(!|Qd:wÚIÊ«fºZ÷i¦¿â]5UEÛºïË›Õ +æ~b¶u?ɺrÿOYʸH )Fî9ô=Ÿ†È[Áì½{WÙ§ÄXDW+:§²\búÚ]HQ] ZØ7ñ8ë½ÁÇ™Þ;,á`ÙV6ÑN> endobj +7135 0 obj << +/D [7133 0 R /XYZ 132.768 705.06 null] +>> endobj +7136 0 obj << +/D [7133 0 R /XYZ 231.202 293.815 null] +>> endobj +1037 0 obj << +/D [7133 0 R /XYZ 133.768 277.097 null] +>> endobj +7132 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7139 0 obj << +/Length 1780 +/Filter /FlateDecode +>> +stream +xÚËŽÛ6ð¾_! =È@Ìò%‰\ K– š&MÝS[Z/m+µ-WÒf³ß’²e¯Œ$5@çý Lƒu@ƒ»›tqóSÁã@ôXL’Ä*ˆuDbÍ‚ÅCðgÈ9ñdÊ(¥ál2å ÛjwØ·>4¦Âú“Yvà “¡`|ò÷âÍM¾¸ù÷†/°mF4‚åîæÏ¿ið‡oJ„VÁ“EÝB*ËÛà÷›ßn¨ør¶ +$D'”)%„‹È)p‹¢ãñŒª F +cCÃP0qFYbé©&2–ƒÛ8xX†€” šÑ¤€‘gTÈáí!o#™ðN€7c\²"ͳ"æ2§ó<-ht·€‘ÍÓ‚ÑœÎh§0çqÎ –éŒÒHS‘_ã-Qñ¹æ3*┺H†”(h‘g×xG¨;ÞîvΊDÎç4fh-Í)ŒB]ã#ï" uæ…†ÂA5Ãó,¿Æ;¡+$Gl†¶€ÌÉ‹¨…,²âoe-§…ÅÆ€JäpSÀ<¡º`|~·ÆÛi:ç³tÒ2šô 4Arœ³øïZ 0˜Ò‘b‚r]ÐK Š«þNaä Ù Ykiµšék¼3´û@g0|$C¿kŽ6—òï9à­ ¶RÀ} +{‘+U€-ò4*f×xçhwð*`ÍYšfl–fŠ¥$MĹÒi‘'×xès¥%E« ø )F×xÛã‡U”&ŠÆJë+¼™˜(-òFì"Ip_¨ Ì–Á¬ÝorÆmuÉ(b`½t´ŽôE¨°§Pyé ò.IÄ<ÙÅÆ8$¨nƒò …NcY´8ÓO#t˜$2’=J}èªzuš…Õþ¡Z–iݶ۔+àOÆAž&Œ†å¾ëÏMoU7»òDhÕÔ;wóˆC:3aQøÅß-÷þPv¥[¶c½3À3œHSí Š¼žJS.;ó@&€‡¯WH òbFa{0Ëjõì6^‚8Ìó÷&’†ïÞz¬»WãÉc.˽CY›½iÀ nWº‰lœ ÷/ÈŸ­éY9ƒE' +÷¦÷³UÂûî±5Þ>uß"ëuSžD¾µÝò²»]¶6M×&’PîcêÇÉ24,?7ÓúþÓ²><;„†‰1ë- œ.7å~m¦-´jðæt»+ÏÐ~¦ñ›«ùâVfW³]vÝ‚(/£pzö<¦¯zÕºy_D¹Lˆ`¢á¯3Óœ°SÈŸ\‘ÝT]gö¯Ü®l{ô‘†‹Ñ_?n½ëî=ØìÝó$†ÀpQ˦t‹„ÄÜkö{W6]µ_Ã#ICUÝÆ­>c(™¦µ©ƒ4q«z…3wÑ€€»_ÿp‹ûjÿØUÛ¥¦Â"ŒT­I"U¯ô0^(Q£#î²Þíl‚"3g \Ù¨µ*rÀ—4>j eÁù i÷EÁÎL6ÌDÖ´ö̯zЖ®>D÷µ/f½Æ¶1¾î‹Ü¶'ÛVë=ì|”ù*iš¦n<Ûú¬¤ÒðmùF›ññ7"ÿÓ¦Znð9­ œ¶[·²1 3Xj½éܺäB5…ðe€;O¿uÛÊãšjï—¥G4m[®=YpÇ㉪[ôf‚å1Y`íŒcE°Q``5ñy³ƒêô$ñŸ¿˜ÎåÒÐRn—>V}~mù~ðù1ÞV%R;NJ´\ŒQGëªX‡ÝóÁô0 ôiÒºƒ3Ù§³ƒ8câÙÄ=:#qy °g‡½ìy•Ö™±w&ÛriûÀª½§íŽv'åãÞþdÌØ‹‰‚Úå ׄÓpÄNXGÝȬÁæ±õ¼,0\ +_4@3b^.ˆflj¯³m‰"8‹\±ª·[WŽ¶:cÞ¼,ÉK0–+J—ÂAf"îùB˜Uµz‰âGÉYŸ½Ê©”hßa£$qW~­;s{yíìÁ¥àSÜ¡Dßè ¿½”šS©ü¡#ø>YÕ¿6ÀÁûíóys:½4úÞæ«£³usa}ÛbpqÖ—,éÕhQöú{B€|ËKÊ(h˜Dço™÷î&ÓžÒáϧgÆÈ‹û]úæ%©G^Ü?¼Íþø¸˜}¸ËPºééFÙiÚrxdŒÿÚ%!¾›“”L~7')ÿ'÷'ÄÑò£ÿÀ€_ñ=ÿ¿ôÅàB¡†ÿ³( ¥Ûës×—ü>\ݼØ<ºÅÜ,ÝBº‰Ñ[.n™r;p¨_­°@ôÁ[âæs3I8ÝV÷žÂ½O„yýå:Í¥Êÿ†G’ø +endstream +endobj +7138 0 obj << +/Type /Page +/Contents 7139 0 R +/Resources 7137 0 R +/MediaBox [0 0 612 792] +/Parent 7127 0 R +>> endobj +7140 0 obj << +/D [7138 0 R /XYZ 132.768 705.06 null] +>> endobj +7141 0 obj << +/D [7138 0 R /XYZ 174.983 311 null] +>> endobj +1041 0 obj << +/D [7138 0 R /XYZ 133.768 294.466 null] +>> endobj +7137 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7144 0 obj << +/Length 618 +/Filter /FlateDecode +>> +stream +xÚ—]o›0†ïù–z0cWÚE›¦QªUÙVv±UÕD7a"IÇ¿Ä´MÖ¨ çÊÇÆïyα?0Z ŒFÎeä|¸¦é@˦ˆa,¥BR‹@j‚¢9ºw) ˜ô|‚1v/<Ÿ +ì–Éjk¯ (7ÿefUÓ@CÂ]F˜÷Ý8ÃÈù톅ÙóMš­œûŒæÍÇ„¦zÚu]!Æ›®¤¦èÎùâàý€Ca CLa@™°ŸÝ¾ýŒ.¾Ž†‘ç³6ìž/›"®4.• ¢®ñèë€K~šˆˆþOZ™EL¨êGêD„" _`€’ : ïTd®¤¡¥!$ ˜)*$îÏjT¤?‹Ñþ$F!ëQA AiJP°YHÞŸ#9†€@$Èï+¹€ (+ Aéc¨÷E€m¢ÿAeU“Jõ\{U’Õ´;æO'íT@Žpún{­ˆ ¸$ýAŠ÷)à¹Éçh|;þ1ô|N_þäå  *ÐTÛÎWÃ뻦ƒÜu|ëëÓøòÍç}ù™uþ=ßX£\æ›tní,¯¬±Œ·ÆZUnËÙ2Î][œÕÕ2ɶ65iþÔÉLa‚cÐÁÀóCµ7ÛÂ_ÌfïÄ7Ùš¢Hæ1)m™giÝ…jÌÜtaOëW¯i2í7ÉsZe]Vfµ ìåŠ|ôÊ­U²>îç—l.ÚLí_´•nÝ”ŒLfŠ¸jÃmyfËh¹±Æ•™YƒÛ‚àsÊΉ²µfEtÖ£G…›¶·•má±Ðm“î<´C±s™ÿ©&û7å¿B!œ +endstream +endobj +7143 0 obj << +/Type /Page +/Contents 7144 0 R +/Resources 7142 0 R +/MediaBox [0 0 612 792] +/Parent 7127 0 R +>> endobj +7145 0 obj << +/D [7143 0 R /XYZ 132.768 705.06 null] +>> endobj +7142 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7148 0 obj << +/Length 966 +/Filter /FlateDecode +>> +stream +xÚÍW[oÛ6~÷¯ а‡Š#E]½f¨ã8F‚dÉÝzY K´­L·ÉvcÝ)R2íH³mŸxDžsøï\l"0Œ;G^ç‡Ý.t-¶xS€ ¶åË5¡åbà…àmW×!±zFu=M7Qw%yL…œ=ìt³;,Ù†nc£K°Ñ{ïuF^çÏfw!€ßºÈAÒyûž‰ë€¿JÕƒ©bnƒ›Î/¤&ØеÞlÚP'¦œÝÓ¢ˆB†Ïb‡'çƒñMO3öq(ö´™\_ûq,ÄïÞ!]^y§§oFLÆR#I‚Õayx1|uë ®Ç#os\NnÊ-3é¹Ð°Œ&(çÇ]Áò:~®]øùóÒ×Õõ˜»‚‰ŸWî°]Ýþ.Ά—W¿mGãßZ6¹ ²|­B0k“ãWW&á*i¼†±ÒW¬@Ñx*vãÅRKú %Jó"KšœíºP=3p5sĺioÑWê ‡;|‹ŒîlJn•Ìeòô¥\WµO6)Óª›UÔÏ„vHsš†4 ÖýnCšd0ëWªì#r”Y’ûK8ob$ˆ©ŸöÛ‚.@1*¶Á<°‘÷~_Ðvt lì%i\Û² k¸-nÈ–š/Ê@6ö¹8OgOµ§‹ýL&þ"_ص b9PSñ ¬ñj~"ÞžªG¿z׃ÛáùhðóíÉéùH)-ŒL¨#k;ÿìBV3XßMUd§\ 0à÷ÔùlkÙïJ#Ìåz#!¿ëOuüW\¯bºâ4+„0YEq¥r.çrÄÁÍDàã@4CâÏè¢)2®,›Óé8J…°(hÐdÄ4Ùã·(sרͯy<¯ùM“¯ ËhÚScn§†Oo%5wX«·BéË­KÉcÍQ•Âåî*ÁìU6Ÿ‚­$è ØDZ¾mì*¿Xïî½üñÛ·ì…ºŒŸÖY¥uéÓ¶z£-Å+\¶ômi‚ʪ¹hK3TV­=¡€ù 9V¹Õ´`î§3ª-Ø¿Í(Kµ8ñ·ÔÑ-S®ï01‚þðAÿ-Ìåo*MòåzÛEšÉâ›Ñ”þ’†?J݇Hž ¹óÏGzAåókóÕØÆß(_ #¤~)4¾<\Úä)ïŽêÄþ9ÙÄQߎËÞD2ã*ñÊR±zó•Ž9¥\0Ä‚Q_'}ìˆ/Ö“Ršöt³Ë' ÿðùÇ}Ñ#vW‹£‰ô0YK—ÙÚ‘¸ò¿2ßaÊ +endstream +endobj +7147 0 obj << +/Type /Page +/Contents 7148 0 R +/Resources 7146 0 R +/MediaBox [0 0 612 792] +/Parent 7127 0 R +>> endobj +7149 0 obj << +/D [7147 0 R /XYZ 132.768 705.06 null] +>> endobj +7146 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7154 0 obj << +/Length 1742 +/Filter /FlateDecode +>> +stream +xÚ­k¯Û4ô{E$˜HÑâÚqž$.÷ÅÆØÆ]7@Bnâ¶iò¸ÿc§Mï‚t|©Ïûá”:‡:—³o–³Å…9)I#X–k‡qNâ(q¢4$QÊœeî¼s}Ÿðxî1J©{2÷üº;ÕÌYâJܵªÞmWd¢“9¢js®>Ȭƒ›qp—³pþËòÙì|9û}Æ@ê°‘@FR:ÙnöîêäpøÌ¡„§‰scHw€”é‹¥ózöÃŒŽ­à܉ISf¬ˆ}BýЉ˜ø}OCúò›g§/_ý ›{Øã}À•HY7jg‘^¶ÕFz-¨_¨Ê+wâˆì+j _âº**ÑÜ!üé—vý×÷ŒÚnÐÕKI¨ÎŸâñ¸Èl«,´«»»c•êØÈJ6ÚÉ_XÚÛžP‹ùˈòxBü0v<–ÔOQâ'Hq~-U»mQm¬²T7ne#*Z\ûV‡ÕÙ›âºñÊb•}f)V}QZ’ö®í¤u¤¨,2Õ Ç²ÞTª®#Ç„Gj®ö:ÊEÛ‹r¯PC†»c/ž^úgçou²ú@÷’¯‹ŸËë‰(œÿ´¼:ùõôùùÉ‹_/ž>?=÷¼¨i™Î‰hÕûÜœ$N|g„&[ykN|NRHÒ‡\¬9\yж‘˜% );¶>W·OlbÔ60õà:_O9 íS¯®.um}ÿãг)b-ãcׂÀIâi=‘ƒ&Ì i<ÒÁ0³a•ñó{vªð â9è8-3xˆLmÑ¿‘¹wâ°sÖc™÷ºù^ƒ€‘(LÝ<"‰íçWr-±•W™íæ²ëvßÞ{C2d*—VIƒˆêz ¬œåøúÑUéÞbÖªíDYs£¯rÐÇ0‡–~ÄœÅ$ò‡ˆÔ\·‹v+¹ÈU¶:ÒBÞŠ]]Êv‘ËZLèé!¡‰ž#†Õc Ö€E167¦~¬d|à`•™€?X<ГƒÄzIÁÕ{JýM† ž©ZÃdîqšºsº0i ù› +Dì°ícÄë  ±÷^·Éò[iOMPa•„uÊÁ^̘ä1˜Ã¡5Ñ·Í”#нÿÔ7FIœšÍ¢Ttï™…)‰ãh %û,F=|£Z9¤1KâÿçQò€üE2¸fß1z#uLn;Yåæt(8Y‰¶È,r)Rk\5•~ü૧ÙØçÏÕåÌygÚBg-²â|åX2Œ#ÓÉÓ5ªÄ•õüü 2r²'¯~ü~ßtGñU}W÷äç0pç>”X ï4WäÚ<Îw'»­ÂMh¤k¤È?ôm‡°±_ñ³jŠÍ¶«dÛB‡”»O-)ùVX&+)+„z”¥TŽûÂâ×}Yê‚O¡}´S±¼‘¥É†Ø5Lƒ˜¢º•ýÞ‹¢ÂB€£!Aâ!{£CöÆ V“ßè0‰ÆŽ¼ ç˜Ó‘+*ÜŸÌÝ·WˆÝY£lz–ÐjÂpTÕGÕÆ}†§)gÂlA è݈£Š–]_?pðð0uõÐöF½šv¨€T¸¸E«ï×—íó†Õˆ•åßô¡,L[@€Gs—;Ó,6sHt $¢³ºl‹ºE$†C#m›¸Ü×ËïBJµ9XuHáRÕ;Y™Î仿™‰½@«*þ¾m5•(ñ¬M‡P%eŽ™áÛ)±q‘‚N º€lìI7‡6µ„W¸.¯ •1± ]OÎN‰†bÓ4ÆÈ€’¤‚Z0|R;¢€Là–Q¯6ÙpS¬VfBÂq&V¥e½6³€Z5–÷Éc¤Z)“á©~ØäVžÉÛ4>¨f¬ó¦ÚËÁdN±éêôiJõâ»úvùâ ßgo>x4À(®šâí驦x|Dâ»Ú&a¾)ê a–ÕÚ©/œPóš†Ï•ˆëù§)Vw54 ©`d¢YÑwA!­Í—®™ˆÆðãV¹Ç§¸háeñ›.[ŒAŒkuÖßtð•¢v˜¹9c“ÿiBbþo>ý‡?.à]ódüÇE’ÂëÖZ}9|-Û!aMZn{Τõ}âó',Á|Zh­ nð0Õ×Ìy<1úkÕ°T·wð‘~ßä¿Ãîg‡ +endstream +endobj +7153 0 obj << +/Type /Page +/Contents 7154 0 R +/Resources 7152 0 R +/MediaBox [0 0 612 792] +/Parent 7158 0 R +/Annots [ 7150 0 R ] +>> endobj +7150 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [297.35 274.115 355.978 285.019] +/A << /S /GoTo /D (group__demo__project) >> +>> endobj +7155 0 obj << +/D [7153 0 R /XYZ 132.768 705.06 null] +>> endobj +7156 0 obj << +/D [7153 0 R /XYZ 133.768 429.589 null] +>> endobj +1045 0 obj << +/D [7153 0 R /XYZ 133.768 424.981 null] +>> endobj +7022 0 obj << +/D [7153 0 R /XYZ 133.768 335.017 null] +>> endobj +1049 0 obj << +/D [7153 0 R /XYZ 133.768 320.447 null] +>> endobj +7157 0 obj << +/D [7153 0 R /XYZ 477.479 223.778 null] +>> endobj +1053 0 obj << +/D [7153 0 R /XYZ 133.768 207.051 null] +>> endobj +7152 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7162 0 obj << +/Length 659 +/Filter /FlateDecode +>> +stream +xÚTMs›0½ó+4=‰™ HÊ-m>&é)n™0–mµ€ÀIýï»òŠÄuÓ™žôX½}»û$ÄÉšpr}­¢ó›TÍ´‚¥Z!%+TI”Ι҂TKòDÓ”É"Nçœ^ÆIšsÚ¹!%5ø5ºíÆŽ“mêÉ,1´=컦™ ³ÈJI¥Pñsu]WÑK$ NÄQAÁ4ÏIÓEOÏœ,aóžp&uIÞÔŽÈ ¨Â'¶ä1zˆx˜â_ëG‰œåYN2‘2^H_ê3™é²@ÊÆÍçw"WJ>ü%žÌêÉ‘<úÊ|M}ï¹ Rs&r…¾ÞØõnª‹8‘‚ÓG3í¶r+\§MàdœÞbäîÛ5‚Ÿvšz‹„7Í#n{§<Ü.Û¾ð~Ñ?}°|ˆeA“Ö.‚Âb$ݯýîÂÉÈ¿›™då +endstream +endobj +7161 0 obj << +/Type /Page +/Contents 7162 0 R +/Resources 7160 0 R +/MediaBox [0 0 612 792] +/Parent 7158 0 R +>> endobj +7151 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (largedemo-setup.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 7165 0 R +/BBox [0 0 252 189] +/Resources << +/ProcSet [ /PDF /ImageC ] +/ExtGState << +/R7 7166 0 R +>>/XObject << +/R8 7167 0 R +>>>> +/Length 53 +/Filter /FlateDecode +>> +stream +xœ+T0Ð3T0A(œË¥d®^ÌU¨`djh4´°°P0R0ƒÈZ(¸äs! ¬ +endstream +endobj +7165 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172328Z) +/ModDate (D:20081204172328Z) +/Creator (pnmtops) +/Title (noname.ps) +>> +endobj +7166 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +7167 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 629 +/Height 472 +/BitsPerComponent 8 +/Filter /DCTDecode +/Length 61214 +>> +stream +ÿØÿîAdobedÿÛC +  $, !$4.763.22:ASF:=N>22HbINVX]^]8EfmeZlS[]YÿÛC**Y;2;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYÿÀØu"ÿÄ + ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ + ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ +$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ÈQŽiØÉÆ8¥à” `{×;D=@ŽôŽ)@É'€9Éýh JFèSøïA þ4€Eû +P$ûÒäì3MܸûÀP€[§iÅ@##Šh’1ÉqøšCq ^¾´jCö ¹Æ¥ #šc\Ãœ ó£íPž<ÅÅŠèpŒäxΠȦ‹¨px¼ûÐn¡Ú˜¿†€Q€ÏI=)EÄ_óÑxç§,ñùh¿˜£QéÜh_UÏÔTmNIhýTU•–"?Ö'æ)CÄ@;ÔŸ¨¢í C<éÖÏœÆWýÖ"¢m"2¯*Ÿrô­`PŽ«éÖœU ô5JrBqLÁm%‡Ü¸?ŠãùC¥Ý/ݸCõ$0ko`,©ÅIå©©U’§sæÏPQŒFà{ƒþ‚ïÖˆÀwC]D;Qˆ†9?†)ªò²‰Í4Görp DÉ<¬ˆ}®¨FFH8¤ØÄIJ¿q{Ç*!…³¶|qA·þìª*êM²¹;£Fú¨?ÌTMc9kxü +j²²9“ƒ¡Sô¤ʧ;öÍtm§Ú!Бýi?³-HÈFSìçüiªÑ³g:KŽ|³‘éMÛÉ9v=«¡\¤“øþ¢³µ+¶*ÑyŽ ;‹sƒø +j¢z"\3K¬}Oõ ±Ü95!·”2&ÂZP +É ô¦ùoóˆÎÓœsøÕ¦ˆ³Cs†`}h'¾x¥‘Y[$Hàj“Öªâc²OLþU4(¬ÃÌr‹Ü…ÜGá‘P)À'œô8§«€yÎ;àИ´aFUîzƒùêtæ-§ÀÇ •ÇOBk’m¥+sÊòý1]V–Bé–àç•Ïêk +ûQz—s’1Ò‚9æ˜X9 È ãšå±¸¤HtŒÔm& "›æžAE†X#§ëÒ¢óAb¹;ÒÓ^NåKîrA$ð3õ«§mÌç>S±lÏcÍG,±Æ™‘Õp +ŠØà!Û5 {€NÖ”}ÿmìs?lu-yjTÿ¤ÃõÜAö›rN'‹»Çø×?ö‹ÁÀšàc°‘¸ýiMíèÎnn°}doŸ°BöÌßš2=œHYXåYX{k›7w…·¦$w$“úÒ%ÕÊœ¬’Ô‘ý(tU:p2¦ªêû#œòEc FíOÉÇàÿ1M7×. +´ŒÀœà…#õ*6w«uc_MÁv~0ùóPG{y#7—pÀ ¶Ñ´ôÈý(³»Qo+‚TƒÀ vǛ԰#eP@É* ýEj––2z»š+ª_+í7ö1¡ÿÙk¥ÑHº²’ifˆº3fÏpéï\@º‘X0*wK¥<„N7' ×R¹,ô¶%òc¬2ªÎA#¦E<Ø¡™0X# €9>ÝÈ®ûvû`C0e +úÈóJºõòHðT©ùNH'$g®2)Y…Îò[8B+,W +ùö=?—Z«5½¸Ón'2R=)Ì£ÚœTƒÉëéH$ôÐH4à2sŸÃÖ“p8ÏJ:ƒŽ¢š9>˜â¤aÎF0i¤`ç±ë@ƒh¢”t¢€ÓƸËz¯¢^‡'Ú©¥„ÏÉã=É©£ÒÉ9fÀ­,–⼘æÔP *“Šµ&Æ}MZ]. Ø$j•lmÁá3ŽäÒ¼BÒfa¾†øS|û—8¿[b”åcQlÓ‘’@c°£™-r³¥Óã;Ïâhû%Ëd•n}MoãéH[E.{Ã8û¼{šré³·`1ï[„p8&”>¼ÒöŒ9Qˆº\矗ó éSëôÍn(Ç~ÜÒ–Ïj9Ør£û*nSó éS‚9OζÂÝø¤ ’xö£•‡K¸ãëGö]À +¼ûÖØ`88ëRt"‡Q‡"0N—tÜ=E4é·@«üˆ®„À¤<;ÒöŒ\§?ö  #oÎÚÝ(ÿW úWH½5¸=iûO å9±Ð9Û0ü 8½Ú‘óJ>¹®…IÉçŒÓÇ&Ž å9Ã{t§—cQN]Jáz…#ÜVó(ÁÈ>Ù¨Ì1‘óF‡<ò¢ŽeØ|¬ÊMUÀù£SêAÅJš¤cïFÃéÍ]6–ì9‰?ŠaÓíŽs>„Ñx°³£nÃ%™IõZ^[1âUäôž ¤7$*Œžô4Y7d ÛV_òÂ),ÀÜÕY.!Œ“æ®=A¬³:”âYz8ª“:88aøæ´TÙ¢F»_Yî Ò!aÜ€Hú®×ZvÙ$ûÁAïÚ±LDä†Sø×C éVZ]ô—Q¼“Æ M®@RG¯5ª§ædꤟL•7ó6G¸'€jH#ÑÙså;sÝ›úYÛ2>ÐAà’ägֈı¶T¯Ópçõ§ÉÙ‚šê‹ú¬v+ fÎ"“¸’NF=ɬ° è2=jÔó A œŒÓ-mÞâ@‘•\71Àúš¨Ý-I“OT1Þq]u’ĺÛi'å\ö£¦Ýé3Æ—h˜¡Ñ• §¡}+{K¼¶t"I£F‚€#’Gèk:ɵ¡tÚORr {Ò28úÓ¤¸´$¹‡×ïñ¨Ìð“Äñž{8ÿçIö6æ]Á‡"Ž:PÒÄ@ı“ìÃüi‘ãýbßB˜]wGœqÍs±Ú=ÍâƲy_j‚8$žt-,b<™pHù‡5…i1kËi# ÎŽUAÜpAãzV´®Œª¾Ä7ÖÉdg†V”ÝFûqµBŒuœƒTC±9'­jxšì^kW·9"ódÜE +À`ôõ¬µ*““ž ?¥t˜‹¸ôÉüéC68'ó¥Ê¡¿CM%{nǾ)ˆw˜àýãùÒù¯Œn$}i™\rN}±@+žKôÿëÐÐ³Ë O1c³çøþ•¤t’ óŽ§jÑç–9ÈÏ >__­R°´ê§æË€ý+nÞâ/øEæÓ%Y…ÚÞ c>UÆ$çÓ?§lš@dÏÙ¢•D«(#!Ô0 œrzñÈíL†Ò{€ ~@É ‡™’@ìH8÷Å6æådv‰ó€®;c·ëSD ,`“€± 8ÈþÕ#èGsc=˜a9]s”ó`1žžýª’ÊKÀ1ŠÚñmÝ­î¯<ö¾7H÷BŠX(€p1ÔV +Œ€AÆ>«P'ó ꯠ¥óþøHªîœã¶ !NàŸcMˆS îƒéŠ7®~àü©§ob÷â“#œ°üèES3Ž"Ì *’OsœuÀ*[»VÞFàaNµM£Zµæ£Þ¾v`àô9߯³¥¹þÅ¿ˆÈ«um:2«Ô°R¸:¡„£!SnG Ž¾¿­bØZ­ÝÑ…·îÛ¨@,r}'ð§Zítã`²k¸°@£#'‘ž¸$L±¿û$ŽÍšBãyRAàŒúb»R9*TRJÄ7Vâ–„c9äŽ:qšÜÒÚ[}>TOfpJ´“F² ¨ÇáëXr¹šv”’sØ`1ÐÌ +ŽAC1Á¡ï¡ ¢ÃÛ q¾Mï´d*¸çð¤ï…‹ÔñN’ñ“y +q$°@çp3ž*&žFÈzqÈ ç’nD7q¨läNQÖ¬iGor¿hY|Ic©`Æ@`Fj ˆ”ZÇ/œ¦C!9É8ÇáœÕÝ"ÆmIåH£žbÏ–¤‘üè±¼]•Š×åYü¸C´A‰RÃ$ŒàgÎ:ð)‹û0qƒ× ŒÎ*mbÎ}:â8fIb,$dŒþ`þUŠåaÀi8 ç>Ù¢ÝÅ)]+”'#ëV…Žåˆ$gîçúÔói ž—J÷ »n¬ÝWž¿7N?Z¿§^ @—vq]Æ8˜£ìÃúƒM±’,7ƒŸUÿëÔmhé9‚J’;gÖ»$] ÀeM:PëÀV¸Èç¸5δ蚼RKnJ£)*O8 Çzm ¹›p¹³€÷‡Ð‚õ«VZl—v7WQĬ–Êñ"«IÁ9#ƒõ¥ÔËÈ‚V‚8 •Ç—«ò¯@I#¦zõ&¢±® ¼9Œ`W +Ì=A Ò•0»±x´ÛKͱùSî +DŠÄØ€r×ñ¬àzéÍX¸Ž(ß0°hÎv©`YFz3L1 8ÈiX¤FsMö«+±&ÒÄ 0 ŒãzTQÆÒ3€¼¢– 0çÿÕEÀŒG4à…‘œ€qšQ*# š.–jˆ!‰8)9$ö®®Î ·½]ò+Ñæ+;/͹÷8ê=+‰ÕAR ÝÇ^+bbÎ"ºMNy/¢ù±(£8!òp9< c&‹ »gŒÄÍÆå$g9SìažQ!·óËF…ØƬp9àqŽ¹4OÜ´ªÛŽI$ä“ÜûÓô›»‹+ÀÖ·Ohüƒ"çg<Ôt8ÁéÒ1³Á$öÿm‘çš6r‚f€Î =N=ûV{(\ŒœZ7Fk8Æ+ß´Y—|¶`ŒØí §jÏr²~´­aÜhbA#èiKÜþ&X(ä’üjVÕðÊ@Œã#Š`b8ɤbIëOXÚE‘Ô±¨,qÀgÓ’5P°FA8õëL læ– ˜¦ÌrÄÁÑñ¤ƒ]ä2'ˆ¤`f¶²ÖŸ&=±“ã[©ÈÚF};•ÂERÛñÈÀÁ­Ñuö‹-j(,•lUc%®â3Ë lääò•+\ë7jG›eÀ¸è1Èø­¨¤D®>ëGâ+•¸”Ï4Ò´k‘Ëí^‹’I98äÖæ‡/™fžc%È®zÐI]Ñ›æ³/“ÐÒ“ ¥ м’ sCr(ŽÞôâ9ãéŠh†˜ éCŽ‡ŠR8úÑ·+:P!§ÿ¯A$€qȧíÊñšh\z#8ëúRAéÖ¥ÛA=)›pyý}i€€"´î)TcŒu4rñ@„(=E¹Á¢€±(PhUêE+Œž(' +Hb($“Óž)úÂÑqƒÀ¦  /ʤÐ9÷#$zR“’thlrÓ4 äÓ@ö qé@±=»R# §…Æ)Ë}=)ÍÐú↯<Ð['°Å(ÀSí@=è¸ÄÎI'ŽÔƒ¦zÒàí=)@û£#˜ Ç¥)^”tÞœHÀµ 4 cŠ¼õ4H84áÀÅ >SŸJ0ªFè3ëÞ˜ÍÐSCCÀRž9 `zRŽhçœc&Åd šP4 LÛó¥P Ž:{ö§(ù‡`)ÜB°ààdÕyA.úÕ‚9ëPHs)¦€ŒõÎ+UlÞ‘ÇGä ­âp ®wPm×Òc³~ +ÞŠ¼ŽzîÐ@ÚAÚ“adª¡¥ŽqÀéÞŸÎry4áµÛPøP°†G@NO^€Á®ÆyTýéjÊG .ÝáSZ)¹œDÛ‚I1Æ|8üj’ Bé•ÅKjDršßÌB0AÈ#' æ‘×h“]ZƶþbÈ †ƒ’X’G`Oq×­Ciû”1ÏZÑÔ"Ô­­íc»¸Û|˜ŒªÛWŽv‚q×ùúUX#:¯N?•3ž¬¬´bŒ•\zvô½¹ÓäÞImÃØFeÏ¡àŒÒ?ú¶ö ÔH¥…˜Y!VŒžN9ƒ×ž” +‚æÕ²K­B{¹CÜ\<®¤vb É÷¢—it¸0¨BHö·Fj‡˜s÷WõÿÛÑÍÅåÔÙÆÿiE¦D óÃ`“ÆZGM¢g^ÝÈIŽY&b@Ý…žÊáSÚrx#9â©j1Ì·’›œ ƒ¶ð œó€0=°*îqe´ ¨åSÙá þúŠkA$m!Åó"«n\dž½+Ì’-V¡fY# †^£šÓk½$Ü¢òê@~ãȨ½?ÙƱ®u)'‘ÙFð`(¥Sz$í¡zîxîMÄÚ“O3o\g%qߢñôP®šÊJïÏ Ú3ÎN:þp!Ιq’IFÝ}œgõ¨•À$dcdg57tE™…‚¼B#DX™2¼…ÏÈ댜ôö§¬:^ãæùØÉæ3F8*\þ•IØŽ2:bŸ³`"†bØœgÐ +c».E˜»v«(«Ê¬xÈÏÓŒTI +¨È¥‘aÜÃq©'·Z·ÞZÇ"^ãa{¥”7 +uÆ:÷ϵRTD–T¹-‘£c‚Àp9ëÍww (åa`Q€'fBž=9Ï­@!€ :`ž3ZwÉw-ªM+!ˆíØÁž@ÏNÑøŽãN6öžx»ŠAç€V“³qa‚A¡>½qÒkÜͪ]W*8,ÙÀ÷8Ï…K"9T§ž9~=ª_µ·X$mÀ3Èüðx¨ZFi‘”+IÂœþC4›{š·Kh-@pE&$G“'ÛŠóôü«0Û+Ä7$àúâ§ÔÄöïMo;F²Y7ðzt$‡ƒÍhhò؆k„s.xCŽ}3‚ЊbÑ—!¸ú⦳ÑîoÝ…´eÂãq,é’jíÜvâñ¶ùpFg_•wTbÙìpÉèiÚ=ìÖs+Ä#b@,‹¹“ÔqÛ Ìdz’ÚèÅ8),m´¯^„ƒÏJ×–†ÑRá. é¡ÏS´¦GÓ&™­Iæß,±ÛÆ…±¹b Œ×©#𤿸xm!…­n`ó9¹ÚÀŒQÁ­=‚åK›7°WE‘ãY×k«¼Ûƒ‚Áô§¶™sbž'Q&p„°ÎJç霎”ºlvò­áºhÔ$,è]°wFy$‘ÇçÆHt­,öÑI4¡¢\¶»F@8 s€Oâ \›²Óç<…’E]Ä•'n3Î1Üsßg‚X¤\;*ȇ’6–=à~½)º¦;LjãPjK;;¹,¦òá˜É&ÐŒrNztëÞ¦µÐY™£VVÉ $ýpIý*$¹£chÂI¦l°Èt5aÁëšœZÞ8á"×ß®¥mÛ`´¡~ˆ£ù¶k•Q“;9¢·d i +’22qÖ¬ÿfþúí¾ž`_Ð +š=6ÈŸ™„‡=Ë1þuk&K©Mu)`Îëɦ‡@H, ™a[qiÖ@ä[)'Öÿ<Õû[hQÆÈ¥SÓ÷q€@*–»%Ö‡C•R¤¬u ÐëŒp~µØOenämݲ:Í'ó Ô#IÓ߃k>¸d?˜"‡‡ìÁV‡S” )®0A ×I>ƒnÀù2I^‰äyýk2çH»ˆ¡gS†üTóùYÊŒ–¥©B[3,‚FJy¨ †*A ‚> ò(\áY½k¢ƒx¢‡gž{ÒŽIÏAF9Î8 `t悆“Ç^” ñùÒ“ŒSð@ÀïéI€€õ=sHIÆ8§œŒScÁf9N8üé€áÜö4 œry¥Ú{úÒ28éÅ ŒúóHA'⟴€ IÇ'ŠM€ÓÔÔÒ¶r„\’Aè)HÉ>ƒŠZÓÓ4ååˆ@“éR"ÏJÐ8;PG ö¥sG€iHÇ¥JԜƂ1Å‚ɦXp8ïL‘Î +‘Ç@ F€îÅCöŽ ɤ~‡T˜Î}©¯½:úQpD`` þ”dq“J¼‚{b‚ +R0r1ÒˆÁÉ$tô €H9§Æ2M è F<ÕW9çÖ­°äóž3Ö©9;‰÷§ œ=kœ˜#ÝHÍ:!,HR¬IäÀúè‰'Ðf¹+†Ý&Iä’2MuPZœØ†ÅÝÖüÿ¥GŸt“ÿ‰£Ì·þ>âÿ¾$ÿâjˆ ü-Û¨üh + +UÁéÉÎ? WUÎb·±¡æÁÿ?q~Rñ4²È"ØéupARCcŽ{­f˜ÛŒ|Àœ9ÉôǯµZ•Õp¤0uƦpià¢î,ö‰Q并;p22 Áê~^MY€ÄùÑÝbsúT«uÍõ¢”„—òÎ`uçŽGL~5,ä.¢ÞZ0òíÆ|“‚ n¤ ç¨JvL¹Sæ+ˆÁ'EÇ«cùŠrÆTü¯ÏpàfªjŸµËƒ·.Ün$ã=É$ç늬v,cóYTJäõ"¦ÝŒ½‘¬¸ýä}ýêÿ‰¡ŸÌc‹!¾k•]ØÌ?¡¬ûu¸kye>aŒ)ù²qETfg?33Ù'4nT)¸²û4¥›Ù7$äÈ™<õ?5>VUsm`ÅHl3)S‚8 6=ÇzÍ*W¨#ê+`騰Û2£†‘‘Iݸ1a ~¹ïÖšW5åH‹P·7wpc³‰Ÿº¶Ú¨¸p7g©÷ɪfÎpÁV<ô?‘­Këx­ã +ùlä´‰ŒŒ{V9ÏÂäg03ùÐÕŠõ/Y@è’¥Ä_»,„©` a±€r1×=¸D*I X˜rrì<Æ‚g*C!$0¸ÇO¦(†&™ä$ŸÝÄÒ#c uÇ©ö¤8î+YȽ>‰*±ïè}©æÒâ#¸˜FÖÏ2/Qœwö5a,¦ŽàÊ$ždq†IðwH»—žÃ®On†šÉq4i]ãhÞM­sU Ͼr@ïÛ4aó¥ë@VXÕ¥¨‘dR +ä±È'prü©-¼¹¯LwIN )‘xT c$ÀŽâsš²·ɈöÁÃD€SË®Td稜ñßD$žzI'&f~K†%†A•–Ì»]2C0+œ‚½NG§\ö«­sŽV˜»"Ÿ1 rÜŒ{?ÒšbZ ’ÉØ[ÈŒ¬—;¶á*T€A$uzçŠÝÒì"ˆ‚«¹‡VÀÿ¼§çY6›¤»ÞЈÕÕŠnä ž@éÖºm=~RG¶ò?.ÐTÚìÒ.ÈЉ€O–O¾\þµ8V¤Ç¢GRF¯´¬éØ)æ6î®~²T6#•¾®øT-aAþü¤ÿ[hÀ1¯ü +CPH#^OÙWëÉýE0 ˆq¾Õm©’?•MŒq‰¥#ýˆøþµà\¢û$ýz ÔCïM;léRä—R”[è]BǵÁúàAV#Lr‘ï Ö²Åíº‘•˜çÕ?•HººŸõ,~¬Oõ©öî’ìm²0P|©”æPÔ±’%”z²†ÈÖBë˜ì̤u œÿ:ž-fÏ#çš3ô&…R¨8K±}ðXòŒsèTÔmÓ zGçH/m§8ŽåžÌ?•8Œ ê§#ò«M=‰³E+»Hn” :0<¡þ‡#Ú°nôùmrÃ2D:° {ŽßQÇÒºf’1QÓñ 1Ûð¨8ÉB¬££9cÍnöØG7îÔlnqŽö¢¸¥I¦t©¢¹\°‘Ôýh#Ξ Áç­4_\Vf‚ëÀã®i{à”ð¸àÚšRzš@4‚I¿½JàR(ù³éÖžFLq@ ,NG  Ç& ‚OqÅ9À9Îhl‘Œ{PÏ¥–Ò”ñ€1“üª.TmRpFyÁ¤ÎyÇ¥=¸g9¦sÎrxúSC@\š ªO¥"ƒœ{0;ÐÄ +ÑšE9ž¦žFúRÀ¤€hc“ÓŠqÆ)¨¹$‘ÖŸõ§p"|gè)r àæžØˆö¦¨ÉÏ4_A¡ãLpzŒ÷¨˜åÀ<óÚ’(ò¤#ñÅ<Œ®OœÐúŒšn8ÇáOŒ õ¤<“Æjr”sCG)Á$pqTÏ9=êä¼+gƒJ«ØúUD¤,.ÄtRJå–6’áQ@,@$œu$÷5Ó^–SòçaŒÍz‘XÌ’*nä“ì:×]s’»Õc fBÊb†NÙQºqÕXãñ©Äm5Ì7)tpA.¬Ìî¡=ÀÁ4ù4Çu…¾×Ë!;Y`ÜË»‚y=1ù‘GØ^Òh<É"(ªÒcÊ;ÐX©!†IÇcß­tru!Ö|¼¥O>$ÔòOËæ(ÂÄH$u`ç'S\M%ÅÒ4°˜ŠÆTá‰ùŽN@ò? +«ö¯ô¿´5¼H›‹yH +¯#u8úš±$«$‚,Â6!Ÿ9l’Hîô9ç>µ}9µË¡YäT[`€#K2Èã“‚F8 SÖæE +Và«*lR²c ’qǹ&—F>V¯i?ÌDR‡*™ÜBò@Ç88Æ{V”D,mk¾Pc³xAi +çÌmÃ#iÀäg$÷)3h½ g q!f`]%°$}*[[™#V1ÜÁbvŒ`’1È=x=êïÚa—Tin[Ë/)šOÞr±…ÈéÉ#Ž8Èæ“L½¬1r¦ÞI&Ý»*w"¦1Û¡ç4 +6lÏ24#ätÚ¯E'¯PN•-®ë©<·€GPGéZS¬V†ÉY%¸rD›úc8À#ԑבm'“r¬Å‚ü8ÏëAZ7¡»}¡Ák¦ý¥o¥’RähÔ(ää};TPÞ\MpUmmeö¦?Ý¡É ¹ ‚Nyç€J–ïU±â8乞W—UDO^„’!õéI9´šÎÖöâKy®¥—÷ªÎìät; vÆHöéU§q>Ám^|7$Ʀ2[È ¤„ äœp t<‚yÍcÝÌ·RMBv,±© $à»?ÁÆ[ãq$þ]²2˜Ä%c’ ä ƒÈëZ²ÙiöiåXÚB pÒ Iúœ’k™Ö¼¹c¨ª8ÂÒ<÷OÓo¯‰hAO2?Oà “øVÌ>–çÌÐJòÂÑè@]ßÄ0G#ò®ŠÖKIn ¿Ú"FL†ï¦;UMzÖïNV¼‚Q5¦AeaÌc<€r Ç'ýiºÑRågV"¢çŽˆæî®Ò÷mÅ¢ÆË4`AXЯ¹à“žµØ·…¶8·•†;Èf#vÐ{výkNýVÒ€X‡™8HÏ¡†@¬cqæö&ðòDš˜Üƒ,>÷`G=xÍj¥s¦ŒœÖ»¢Ü­R$ÒEnÊ&·vUn@D?)ç¸äú•H¼+¹ +ˆb,IS“!-‘Çl94o0¤Ø»|¥˜±t#c6Ðqœõ8ÇQÜ +‚XÞÝäÑD±‚8<‚AëÔw¹rZÊ£v +qÏ5µ¡M½ñ++D +³’ÈÉ8'€ <þ"°3Ò8æ¯ézdzœ¥|ÃBࡳø(BŠ+ê Ë‚±ã ’á=˜~U%¬ÈЄgÉØT© £éZz¾›k`¤#É:º°S& ´à€¤ô8<žqŒU "±vqXÉ`˜•‰Ïï6ò’zÇõÁ铇±­Õ¬A¨$ $NÁà ÄärA5cF„™IX2N!M–ÞÌ;*Fã;Šþñ¸|u@O9ã8=3ÄNE¼áíc8ùƒ+6àFxtcÏÚ—P{Öèe¹ŽW%vƒŽ½øéƒUrÈÄ#ŒƒÖ¥–I&rÆ2 3Ï¿JEYK ©2N1V©Í쌛Dx;7g¡Æ) RI +O@:UŸ!ÈÎFpÙtüûP`‘‰ +À^ NGaÔã¾:w¦éÍn…tV`&äV^Ù”á¶FÃw "ºÛ©’ůHØ>e’Xãlà6’~1×ëÅÞ^͵"¸™K –y Œñ’@è=k¥Õ´o¶&bvŠPA!~mÀðAHÏ céʽ¼ñ¼°ßE#«ª ÄrH€8àóœŠ-Ô¾{+ ‚êîßR‰.n%pHÈ3o\ÁÈ$wõ®˜€GNk›¼µŽE¸–+¸gò— +R0„à€ ‰“ß õÆNõœÂâÎ)Gñ('>½ÿ\×.!uF”AǨÎ@Í+ í?­+™éB:×1Ô#?ŠPF?ÊŒnç4(9#½!@ìE½§ ~¸¤,§½ aÈÏ2GLóŠ¤ÚÙƒIèÍ‹}]d8¸PŒ?Œ×Ò®ä2îR<‚:æKå˜(=ÉÅDšœÖ›q” ­À>ÃÐÿœW]*²z4sÔ¦–ÆÕúe—Z)"¹Žú™Áê§øO¥¶†i²8ëšf2ß=ºûP£ô¯6çbˆàô‡Œw‡$@(bIw b¨^´¤dÏ=iÀ4É#8®F8Ï°ìmÝ©|ÀúRž¤øRIÎ3@’GAÅ8 ~4‡åCþsH–Ï#µ)_›ž0)@àf”t'iŒUg¾iz¾AÍ8 íB’pi\B0$cžOåC u¥$ŸJ õ4"à}{Óˆi@ãé¤ô¤Dp=3“Šr—9¦‘ó8éR(Ç^ž¦Ÿ@àdûsP¨%óý*féØgÖ™ “Û¥ A n©¥$õÍ!‘ÓžôÐ怜tõ©ŒgÓÌ@ÅJ~ï?ZO„ƒÁãLŽjÝÁ=Ïj¡rí»:cp®NGqW%»ê!šÐ¢‚ZFTP:’H~¸ª-ál»gL›©Ï̧úÖÈUmRÂ3÷MÜc¯Q¸€?…wÉ$õ®êÒç%wvy_ü"ÚÖä7þ;þ5*ø[X ¦ÊƒûÇi?€½@éH]ËtI’ˆXØ8N罎wkbÚ­ "=&ퟻ˜Éü±QàëÝEæi÷€of„à òy¯N¸žlyî±– AÉ$à`zñšUš¸hÁ™FJIŸ+Ü”¢Žl®£ÔcšM;P“÷r.ï²²•cÐáFä÷ü{RKixu¥›K½¹FHÕHµq·qÊžéÞ»ò*)Î2=GQG‘g—Ýé“ÎìšmëÌK-¬˜9'œýÒ˜š>¦±¹uñܸÀ·~Ä=½ëÔI n$àþ¢šI$ƒ¸)îå<ôàäR°¬y”zUáIEÅÚÈ#ýʼN¥ˆ#!A8’èI¦e\‹r •Ù¹à  ƒ“· œ öÆ;פÜ$¨X21É8åp1õÍ>?9u§!\âÙT©óÇ­ }©Û_^ÛZ<–ÓI,1˜J¬G(£AP2¼yëŸjê<-áˆÔ¥õÚ¡TÅs†ÀÉ<ùÀí[ÖÎïuvº³È ç €pjÆ£p--B/AT‡_¹«Jï’%¦¡fCuyæÎm¢$(ÿXãù +äüG¬Im¬QË‘Ê„„€êJém-ñŒä»dcÉ°Ï©­%%@U%T `WJ’„tÜäåu¥Í=òÚJ\H@ÝŸR{:î|-­&§ÙÞmrT©V9 ¤`~ uûßûÍùšÎÖÕ›NyÁ%í˜L¾¸x~*MMz\ñóGe/uÛ¡ÊGjÖÄöK"Æ»X€7.0xê d·Úb»…žx˜Évç÷jŒÁ¤\1+Ž¤Aí]nµ™w§ß ûÈйÏo¼¿Í«NÞä,:#(?(éF|ð¹ÏÉËZIu<åÌr"¢ÚÕ¬¶†ò1UœŒÉ9í‚{UKí§Tºmჾòvù#$m cã§lŒðjE¹†ù®gÕf»{·#ÊdÆÐsÎ}ì®ÇÀ÷/{¦\ErDæÞP¨Ò(-°ŒÏ^s×Ö·ºfŽ:(I$†ÀèMhZN4»¨š+›i£š5‘Âvg?)ÀÈaÜzŠõ´³›xzæ%?Ò«*ÑŽ•©Ïo!ô¦%cÎ5mB;¹QÔ¨<°Rúd*¬aˆ-œ…¹”gå+Æቿ!kªÖ5Íš+[»H6!÷ r}‡âEcØ鎻)–(cŠãÍØ#ˆ{Ïà õ5Ñ =×4Ýœ»àíÆàÄ€AËž¹ãâ¬ZX^ßlíf”g”£êÄãó5ÛYøsMÓ€wO·\â”aöQ‘ùçð«7²Êí ! &@DTŽ9$w«u)ÃJh9[ø™ÃM¤Ü[±SE• ¸ïŽ?Z…­mÕ75æG¨Àôàr}Eu×6O©Ãn-âÁ!å\˜ØÏ<Ž¦E¥éóêóÂlâ0E€#8®¬åZ¤ºØk—±Éµ¬*»¾ÔËdN©æ”Úα´‰"I¸BH+†# ñ’=ë¢Óìl.,ïnf³G±’Ì€€0zG\ô­=?EÓ.¬ÔÜZ‰˜±&Gç˜ƈâ*'¸5Ðâ#•­¦-$&7#08#Ï «Vúh¿‹Ëµ¿A#(_³ÎänFsŽ¸?Zîeðþ–ä3Ù‚A'™dÇ¿±\Þ· ÚY*Ëeqöfl…†V,¯Ž #®G=Ekí!SI«>䨸ìcÉiscm5½Ì~Mʸe†XÈb£’ÊÄm ŒgœÔVwvw0Ü-ß– (g'*Cdœ€ `ç㌠Öþ“¯’?³µhMÅ¿*QøtÈÇÊÙÏCŒg§CØ»Ä^Û`·ZLb{Ëf2Fb¹Á¹ÆG9õ¬*Rp.2æйcâ{w&ýV+2bqÎ ¨úã¥Sñ.Œþ&¶!]H *¦aýðG_|}}k:æ=5|9ìm+]ÉÂÎ+W¨¨ë?IÕîôÇͼ‡Ë'-òëÁè}Æ bÝ´e¤ËšTm%ÅÔ@12.~Q“ÏËŸÀ3¶4m.êÚÔÇpcQ¸•·cŽ3øÕËC D’[F"ŠetRs‘îÎ3ž+F%,F?¯ùý*\·“Ž¨‚=5w?îèó«)¤GŒì˜þ-ýÕÈà`2ÀþÖó"¥!@ÆÕ'×h?¨j=œ@ö’}L‰´¸Ô¦Eößþ(*©ÓŠœ‰_@¨­â0zùëM#=Áú˜£ÙÁô©$aùdþåOë¾£kÎ=bÿg­æ[ª?Ü£6¹ù£‡êГü©{vµ‘Ï4&Fð0{¨û1¨ +àᦞÀè3úÖåÎœ¹&3úBGóª2ZÊ æè (ýhöq]ÚI™3¨E¹` 9Ú0së’j´ŠsŽHm$c#‡P=Í_ž&R1…|‚6ƒ#~gUŒ ìUT–códäŸv=ö6’nE•ŠLçnxǯz*Xcòb©À¯­ÊëjoìÉ<Í8 ªFyö¦¸ã¿ZV ¶=+oa@Æ9üh'9ý) 9ÏjU##Þɽ(l)Í4œ3žÿJ3“Çãí@ úŠPIÉíÚšF0Oà cÒ$°§SHÇ¢çœþä9$û`R : r(gœ +zŽG·<Ò1šz­&6 œŽ)˼tíšéÞ•‡ òz +VŠé@ûÄŸÖ”ôÈÀ¦r3õ&„邦i¤‘Ðv¨ËqÐzP"B #4ð9éÚ£Vd×RƒÇ?Ò‹0Ç~´tbŒ“ÈëÒ—×éšv07cÐqKŒ±ãœu4É?ÊŒr2pqE†*‚\dô©=MF§i'â˜g°xôX]HîNõŸz3&2À>¸?¡¬jw&U‘ŒÎ.q’såY7wR¸–(Ú2H1Ê®AéØœpzè¥õ2©4´4|Àºƒ²«œvÁÿŸZïˆÃèMy-ÄÒ åvdáIc•°ÇáùWY¡kZ‡öm¤R·Lì±Ë5×”îàc… 9' ü+²šåV9j;»›ºÎ¯d·SE$Á¤ªÆFrA#$žúö®zïYƒYv’¤ˆAo"ê¬r‹‘×#’:Rß\ÜkpCˆ­ãY–uh•§ ¸,p£h[ž§Æ3Uô 5^[È®¥q$Å"K¡XdeHÁȨõú×E9%-L&¯"kÿÒÐ…‰7\D GN Áºà=+Kų%¿Ø¤“q@çiÏ'Ÿ!¬›»¹ªVІËX²Ô®-|à%Vh¥hʬ»~ð²?:]Nò-:–àùh«–*'êO®3Â7°Å¬A$—b†ÙÁm äŒ3Ðu¨üIªO®_ˆãG[xh£#€ .Ãèè>¦¡2ùnô*½åÆ£q}>ÅŽ)±#ð2 ¨Ï¶Oz…^QqFÙœÌÎ$V;™@ëÁÎ\ÔÚu¬’Œ·m*ÿzæºBõ•»;IA¸ª¨qè}±Ö¹§UE3³ê²PS{º=¬>ðþùǹRO\{òp+ NÊ“ê7€‰oa’v€8èüj÷ˆnÅÜ6s8–_vþŸå\Ž½x. Ыæ+rrˆ$“ÈÆ2OµEþ&yX†êÔT£²Üì¼/r÷ºd³¹å®d¾ÀòÅG­xŽÚÊÝ~Ës“o*Ê©½°‘Î༞ƒ&«ø6îÅ,Îkr×#´…¼–AƒõÏ¥U×fÒ͹ò’F1Ë!;ÞM‹–>a ¸wÇN2+±#d’VE­Å xïÒºÈ(<3c!²3Œ—Ó½Vñˆ ³F±H$³¼·ýÞѵ³’¬ÓÇ9ªÞ’ÍõX^úgYJŸ*00›Ý‰ €$§ÓŒvÅ]¸Óomô§ó-í®Ú$8 ±È\Ž£ŒçŒPÕî4ìÑj^¶s’U”óÔ`ØkW’‹Åw‚@‘Hñ… ¨Èž¼ñZ–2ˆ|<Ùȉ‡8äíÏÍh úÌÅvªÈŽª™É,ѱ w a»c‘ÜŠãÂhš.¤}÷#6Ѭîèj 1XDcm¡\ž “ ?JéüqI©¢1Á1#X ùõÁÉÅqÑ«4JyÜyÏp{þµÒéš„2O3*Ë#6Ĉ»Xè2W“Û8É®ÈEÉÙ!I¤ŽÚ}NÚÒ)e¼• D +v–Ëä ÉÉ zJâõ?_ë³}ŽÂ9"ø'ß“ýâ:`qêMW·¶Ô|Q¨™åaÃHF5ä…Qí“Ç¿&»M;L¶Òà0Ù²0çlo`z~vZuz³%yÚO…`µx›Q qtÇä·VòyõÀ㧠t ,Mb×^ph¡VoÝ©ä|`åP˜¡–gûfšÕŽÉ#Pᔌ òqÁÈÇ¡ÁÅ&¢îº×n¶ê@‰"L¨X*ƒŒ€pO+ +“”õcO[ s*[m,Y +¨dÄnEr’k3GqªK$Ë#[HRÖ6Q€ Ž'€3“Ú·uk‚Þ±ºœ‚2©ÜqŽpWô‡«xkS“S¹kx­ä”²Iæ¨H'#=»Ve¯2”zÝÒX5ë\$—ï'•ó"ü¨üÛF; Ž´K­]YC ¶óÆnn×|òRA À tÉ8Ǧ1Iÿ¶µ$[@ 9™6’èsžqÆGqœRËá}h¦ãdÃf82&Xd Î8ÍN£²#º¿¸´‚-2‰mfU.ø¶åPÃ9 ŒqƒÖºý6Pö12“€Yr;áˆÏãŒþ5Å˧\ÎÑG»3ÂœC@ã$@sÈõÕhMƒ¢€'pÀpsŒþ8íM^â”lmG8a²BBž ÜZâµ @Ah×BI#Œ†•Ä¤àî$Üdñž£&ºÜUX‘§L9ÁÚ>¼ƒý)±#†ÖCC}–,ÇK¤© ƒ’0zµÑø[Ä’[ɲF,ØSÒQÿÅc¡ïÐö®YdšdÚ0A “Ç ?^TƳc‚A<ŠÖ•T½Ùl…ÕÖç¡x£ÃÝéÇSÑQJ±ó%‰Þ÷ã¸ú× gj÷ì*¹˜ôUI®×Áºñ†qíû™Ž0OÝoð?ÏëNñÎŽ¶6ŸiÓãeŠy³:Æ8äž;d}:T×£ìån +§Sk¹‘.·ŸiHƒÊËû¨Ø:Þçãßñ¬+ÍsS¼?¼»‘û‘‹ Æ~§&¬ø‚K{‰àžÕÕ‘­Ó g*A ƒž„ VV@è'±?ŲÒEs±o$ŒH-±‰=›ŒþÍwº0Ã0öŒóÁ‰b½Nî{s^o#\ZÁ3`3Æ®ßR?­rWº³Fô­³,-Ìè¹YœcÔçùÔ©¨ÜË+×+UÐgƒHWŒç½`ªMu5p‹è]MQ‰áB}A þU2êq‚ ŽAþë‘Y8ùÉ÷©8 qÈõ­y¢šRêqH 9?íHMT’å_î¡9ãæ$ÕPNNhSÉŽ¦ñc$„»aŽ¢ð)¡ +0)ïÔÓ4Œ :ÆS”·e¨¥±Œ7SÍ.8íEIW S€OsJzœzÓIçŠ>¿…PàâžCœqL@H$ƒè)À2Iↀ lwÅ*˜œ +\mL“Ó©=)G4˜ œ¸$ð;R–àuéT²Mò“¸ôQŒšÃ¹Ö®§lFÂ%ò3ZFœ¤D¦¢u;®Ozš‹ÍLI<à0®1žI[.ìÇý¦&“hàߥj°ýÙŸ¶;€NÆéS+as‘õ®+™­Û1JëŽÀä~]+sMÖÁXn@W' +ã€ÇЎƳ GT\j)ho/By罎 ÀsM ´zc®hVÈç©æ±4Ý ëH3Îsô¡˜qŒ¥.0;Š@1‰Áã­BÇ'éRÈHž=êpè})¤r«‘Üþ¢m½zuâŒ(¡rŸQÛÒ®ë2’Iu'š¤œ¢¹ÇN)Àr)´;—<ÅäúšªP>µO"’NÈ¥a +w! ç'UÔ‚I±  ûœa”ƒß€È½$Ýéèypç## +A$ðF1ž£¼V}Ü¥ä`Yî7.Âv\ç'qúnjýø_íhUp6C#ä°]¤©ä‚8ãŠÇ¹wŽöàH–Œ'ÊCn 3»p\ã¿ èR^áÃSY‘Øœ%ƒÎÒp~†º}"á-Æ‹­* ‚YÝ£ˆ»®Y¸€v ðzuÉFæ0êwËÐŽy®ª+ˆín!eÔ·‘¥ ,AÎæ À`ƒÉÜ®?:Õ"='Pšéµ É®o#hmŸi·„`Xä€,NxÇè=ɨ”ôÐï¡AE©T#»Z[$Š™ ÅvÈŸÀd~uÓøuMžŒ×W$–`ebzã°®ÇȸUk™XHœ‘ÉÉëëÇä+´¸½ŠëNŠÚÛ dŽ@~q\u`äÔPb±.qmí`{¶šI‘æ%™À‚zž8ŽÕÃjä.¹~ωÜ}Çä+Ð¥[‹;äXÑ]W*I69$}z{WœH²O<· ±.Ø œšïQQI#È¡TÛÝž¥¥é1[%„ðͻȀªá?ÌsÏ©' ëEÞguƒ¹C–fÚdz=IêI««}’×Íe[ÆX•ÎÜ zöãµ]@|¤8 Gµ^ÊåîÎe1bš~™f¸–™‡ûªèGò¬ëMytß}†Ú0ׯ+±våP Øþ÷`Ôú04å(è·4­+&—I±™‡Ø-åÔØå”3ÈfÚ@$ñÁäõ8ï™ èj’ù÷¬Ë60[éè*oè!º¼$B fgl–=I$õ«ÚXi-±WåyTc!zsÛ=¹ÇÆXn­¥Šk¸soYŠôù˜â>à€HàúÕ¨¤¬Œ¯&îÇ'….Œ–©0²M qp³¾Å\w¹ 0ü ]†Âþ&mF7¶f-‹aˆÁU<ÀHÈ(<ƒÆMI¨ê÷c—Àñ¾Ë‰¢ûLìÒÆì/΃j’Ëò‚8ÏÔi¨ê?ð\\´Ö’þ†ðl”¤'g\†9äuŠh¡°èšÅ›Ë¥Ã¯—p ;™Áʃ’@8lgƒòþ= gÜk7W÷QFöó2Må7ynÎÁ˜òFpré€qœÖ…Æ«ye`,ÞâÂݶI S™¥•(ÓЮÐO÷Aê3XØ%ÄÉ µÜRÈÙÂ,n0’NY@àzÑbdIsªKäG<1†R€©ÏÏZ£¨3I©^–$±Û$ää’zýkJÓMNÛ.rmäQ)ò_Kmñ‘È<ŒŠÆÖ]£Õ¯âÏÌ·)ÇO¼z~T¥®åÓNäÏæ¿ËÁ nú÷Åhé–>iWpBŽ€Õm6ËÌ`î>QȽn‰cŠD‹#,qØV2—DzøzŒ}­B[ÍPXY›kRäfúÕƒô°±RD²H#œTÚ´~^§8ìÄ:ýØGáT”…Ÿ® B9É5\¶Zœõq©'mÝ2M2æpnc#KèGCZShï²½…ËÄ ‚‘OÎAû÷¿4ý7B²—ÃÆ[´Úá7,ªpËÇ_¥bÚê—Zjˆ™Œö§ø[°õ¨<ö¬©INM¢'Õ×CV×Zhš[+ÀabÅ$ AϼÐnb…æ°a5³g!HG^1ô¦ÜAo¨;\[HD’1gG9É8ÎáPéÚ½Þ‘vP–Ø OqŸJÚæN6,Ãâ}QäLß$J¸RÂ`£ 'ŒñÅjøGV½Ô5¹þ`Ë›í +(áè¸(’ÒÏWtÔ4Ç[KÕ`Ä•$s’=kœÓ%¹Ò5LîkYèYÈSò’ àñŽÏZÒ>ö†RVW=h|Ø’z{×q!ÖüdÂ6ͽ¡¯¡ +~cø±<÷U—Õ®­´+Ù§¸i&Šá­¢prv‚ÛÇ“œžjG½µÕä „ŒbF~P2AX⛌yWQÒwweêvV趫mos¨íÆé# öu<ç'øP?@q¼7 5ó™î>Kd噸Î:Œÿ3K¡èókWÒÝÜ|±»™%oRNHןÀWwF®-âPD¸í1Èäç·#ÓšôSŽš§ ̵›»&Š(ã…cDÀ‚*©Ñ4¿7Ì:m©bK}Î3ëŽý+@óïTïZE)‚Bã¨éÖ¹J¸Û]#N²›Í¶³Š@#rƒÁÆN«ßkZf›ta¼¿Qó„m!\ò>è;N=qÇ>õ4wn® ÀñïX3ØÙ_Ý5ɲÌÅÁGØHcH ƒ×Ž„zžÆÃÑš×»áÛÁ§È—;í ÁÜ>`8 ’::×þÔ ›¾É2ゼÈæ»ÍN‹N½¾Ž æ2#vÜI‰<;â¥||cƒÏçZ§*q±œ¡wty¼Ú-ôJÍäÈT³£Ó¨çŽôÛ-V[;ˆnE…6¢;J° ×æÏÖ´õrý £¥°!Ê#v±üÞÆ°£RQ•U„ î8*#Žy==øª¨Ü6V¸A)üGOŽe‰Û:ll‡b=ùÚs“Xº–¯öÈfeµHüÆç’W'=03éšÁ”±lÀzµ 3Ú2|§IÁä‘ëßò¬9š*Ta+6¶4tݵ;y'†M¡\¦Ò…@rHã¿éZ+i6‡§ÜHpÂVD„ ùܼŽ‡¿Ò©xwQ{F™#E±W¿‡ú`‚G¨kUÖ¦¼¶IJw*[=îxÆsNé!¬-J­»è‹ïãŽä—Lód\àgøFãÜæ±µmn×T-¦„ˆÊº¶pIõ?¥PrÓYÈäo`2Ò)Ž„‚1ÏéõÍU‹Ô`cŽœTÉÜÞé»ÄoŽyc‘@+‡å”ƒ”ôíÔÒîIU'@ÅDÒ0''Ÿp*J³Nå˜3+¢b£¨ “ü½ë_DI&Šé!æXSÍ^Ü©ãX6²:’W®GcÁ®“Ã2ב€“ÆÈqÏ §®+¯ 7Ò9«¤ÕÙÛxŽíÈás,H&\õzþ8Ü?ò¸Ä/šHÐó±A!NFk×<1*ßhóG"°eôÏ~y¯'œ) QÆJ37 cƒž=EsÍY´mb <ÐEYÜØ: ɃzúŠô#"JXó²UYèÀúóhòÒy~rÈÞÀà~™ý+´ÒnÃøbÊQ–6ò½«¶zãæL{m$~ÍZ<ÑкnÒ4“‚ +F1ßûÕf¼LŽ{ûŠUºp9®3¨˜äõÎ3ëÒ˜ØÜHéÖ2–ᇷ4æ‘Z5”Hž{žô$¨àäS`¬3ïÖœ¤cÔ? +Ý8´ç] 2jf3EHGà(¢ár¡ÆÓï@l™8$“Ú˜Ç8\ž¹&‚@ä“Z±$)$‚ãJFäФp8æ•æç­Kð¡G¾3QÊ‚KwF†R}1R1JŠpÆ Býí‡\â{jq·2FwÄ SØuÕXHÊHe ý+zÂt'§¡ïCDŽHdSõÖª5£0p¾¨Ã î÷â¤Ðœv=»V©²‰ø +Tç¨5~ÊÞ$ÆsŽIÍ?jS&ðÖ˜ú ¸ÍKnÊG½ŽOrzõë&ù’ÚìCn…7 –嘎äÿ…tþ›ÉñSÂÄm¹‰”gÔGò5‹âkb5,F¤’y~µ´]̤¬^Ñe%%Œã¨aøZLFxè+N- ØFÌxãÔb´üì㞧šá­Lé¤Û‰i@ +B@Ô"@zt¦I' +Å"Çî*¿Zp`=*¸| ȧnù¸¥; $n§¯¦B2Yç±ïÍ 9gðÍ4‘–'•$Öð­ÔNÍö….ä¢0* òH$Žp+MØ(,Ä9$ñŠæ'bóHÞ¬MtÐ]N\KÒÇAe0û²%­ñhã~vPYÂà/ïAdr0=88Í:k€Ö¯çÙj1Æÿ8F¸s½™0C>q·¾ $c¥gYßÞÇq’Hð@ qI,p"íUQ»iàŽ½Aâ´e¸·u;µ”-²/,|‰"€PÐzöëèrmàê—mmô2Âe +|í¤ÛTa¸ê@f$®;Õ¯9¢]>!x,ĈUåm¼µ€;¸>pz‚r9¬è.âKK¹~Ýt.-»¤^Ù\²‚’+œœã¨Ò»ß¶¦ÞÍ/¸•£,ª Ú0y EsŠŒèæ•QhuUŠ# +MÊ™#\"¢‘–PáœðM%t²¿t¼ÇÊ H2ô=A8ëӰɪqm'sn$f o H#8ÉÁ=KlŽÖ7Çf³4¥Î`O”K9À$’9õJf'2˜íïÚ•¦²·W Ws31ØžN3ÓI¯$û ™uŒÍ~fxPÊH$¾}8ÇBqéWÒäÜjPÊéa¨@[d…×÷k#d `8Vuš\-žŒ‰g¼·!¡¸n®ÙUØzà‚AðG|Ðf®ð›Ó­ì·–é’²Hå¾f%›©9'’z⢰hÒþ–éí#î•X†  ŒsÎjMZY¦Õ'k„E”mFTpàP¼°''Ž}óQØê¦N×i´”FYŠîcŽsÎx#§Zfi7"Ô¤µ‚äGq7Úge%Õ‰$–'äóÈç½T³¶k‰ ÈIä’rNzäÔpÄ×3—|üÄ“ßßëZû–Ö!À.Gʾ•Œ¥Ñ¶‚Šö•6'2Çlª§©ÀvµFBÑ\‡'$œç×<ÅšYdUÚÁÆX“ŒŸLŸlUÁ™Z’0ð¹C!l§ŒägƒŽ£Ú’)5«ºÏÈ›[ "Z\/%¡?C‘üÍf[Äe¾…Tu?çùÔí+Kq1*áH98#ú +½áÈ<ýN!Œ€sJ¬¹`Ù„Uäu:Éû6‹¢4ŠIÿuFOæq\]÷ ÀÚ¥uÜâMjh€ÊÁ ÷ ’2á\õàFÚ€H óÚ¯/Ž©w;ë×)/ëS.ÑÝQ]\†þu Ò¥ê”™GÊÇ¿±ª«f¨€,Üí< ŸÔcœÔ‚Íwß)A9÷é]S¨Þ‡‘õ¨%¨–w3XÜå×Só.x#=«©×]¶YU¹Œ`?Cž¢¹Ôaf`Jý×ô56‘vñ˾'"e*OÏAéÆkYS–»£Fã8é±wUšé‚Ú\3²³œ÷bgÜ0>¦»K=1ßÃñX#•àHøÁ œ©}jŠ[Aâ`º snÀ¸#’¹}3[–µm¢Ç²ù§j¬8,O#‘Ç©=ÎyÇ=FêVO抄,QÕõm7Hx4²HR ²F…ŠŒ‚2'ž9õ=EK ê§VÔ¥’œ[$%w¸Ã%F Ó$÷öªSøÏJkˆš[MEe·'i?”‘‚9ltÅ%§Œt{XŒ6öš€Rì䌒X’OßîOë]¾äîuØ €Ã= rãÆv·ö–v¶Ó¤’\$Rùê£j·XüÙ#·­u¸ü 4îKV)ÜZ‘—I`r`þUÃhúÌV–éo¨HÑ´*O–I @9c }kªÕ¼E‘¨´QHñ˜c‘ J YÁÎX |«ŒzšËºñV-äsÉ£ÄQºdCGÛwÏÊ1ìM&Æ‘« j)©\_I2Ä»³`$±<pÉ«wQ2—p2§¸çƒ§x³D±´ŠÎÝoDIœ‰sÉ'œ|tô©¦ñ®ž%H`ŠvÈŠÂDØKO^£9& ‡ˆAT¼PzI¼~ 7ó&¨©RW*¬O9“ƒœƒ]/¬•u¢Pm2À¤ã¡ ²ŸÐ +æ…´ËÆAÃc<ààp}y®ÙÂU!a Æi‘ö³}½imÀUWu „d:ûg>ôö´™Ç U€õ£Kk”BÇCý1ŠÊXZ‹[*ð}GZI n¢–ù‡SÜ~ b¦¸ÿWI +ÙÏ·ù"’ÞÒy® 1FÒJH( ÎO=ã“ëV¯ìä²g¶••œF§*I#µ±g)‚îÖuÀen£pr>†©ËjPÇÔ1؃¦×Ç'¯ÿ­]8WûÄxXšR„]ÏGð4ÄÉÏË)Ǹoë^â4ò|C¨©ã.}¹bGèk±ð„j׊O †zôúW3ã¤òü[¨Д?‰E4b4©")kTe(ì"Ç ŽsÏ"ºO ‰=WOp¤€\ƃóFÙÀžH'ò®qÉlJ[–*>iãÞž· œ6Pú0ÅX¼CËqò±È?Z@#=­ou©eAƒ¸~uf ˆƒs"õçš…bˆà„\úàSÕUI¨>  +L.Ñ©§ÛÅý§©-õ½¼0Ä3ìyà(æ¤ÕµKišCemçæžP žs…u÷>ÕsœÐÇqÈâ·Œ¬¬Œ¤¯¹33=ô2’PƒŽÜU¡’Àg¶j†/›s +÷c8$t Œþ†´rN0}«ÛšRzãœ}iŽIn3ÏóŽÜf„‚i)Ô0?3Åb“{#K¥¸ÅOoÒž;ãpjÌz|„æFUƒ“þ­ZŽÊÇÝ,}XçôéZÆŒ¥¹œªÅQÅ$ò~í ÇŽƒê{Uè´áÁ•óá_êMh*€:8¸âº#A-YŒ«7±‰¯ªEe"…@H®9ç×¥qÇæSžþÞµÖø¥ÊÅ +ƒŽ±øcú×%’ k¢ÑÓm›–wÓê7O=½¼35ÓÈŒ«È¡FòÁÁ<&®ÞHñE$±ßÙÊâÈs*»£7ÈÃð ÏðéOrÑD²4q¬‡.P…V y +Ù(ÈàxïZWw“}–]¶¶a.®U¼´c!”‚ÁÑN@SÔœ׊èJzlä0[6 ²Ås{H±aK*´j3œ1yà.r¹õ!ZÆKÅ’VIʽ”f1GšÍûÆ… €ÍÈ=HðHžÆåá·²,‰,ב ™Fh£,20G]¸Ã`ã8'šæ%ECµsŒgŒôÁ¤7+#Sû2ìÅß$‚o8lTT ï$ M"iÒ<ä²Î@¸'$x ƒÓžx¬áa~êŽßv»Ï\^ɤ´¤èë$ „HHË‚Ns‚¡Ic¾hÊìçÚ3ÈPd`f¼xÌ–Ûä…ˆ±ÏRFHéU"Ó]^ÐÄ/.2 GÎp0À“À9½ñ^‰rÒ8aÎÛÍ®àoÊíç$×úÔžQ’øg15Î~ûã`‡Lo=y v<ÒM2駳ۈ±¢U ñÉ þ`V\ÊÒÈýÅ8à‚ ö àþÝêÚšiº|¤³¶¤öè$fÄ'±ø‰8ŸAÏJŠ$qÀáWÖ¢o¢:pÔ—Ç-‘£ iñOO$h…ÔΪHÏ#‚xÏLšÇŠO5ãiØ…b7• géW,%vÔ¢‘Ž6’G ÀÍgEþ­;aGò¥ÛVUZcZÊ8>ÔÍo-Ë3 ¤LÄ&Ðà‚Û˜ž fu‘$N#+ D±IþŽÑÜŽsÁ8$c¨ª¶7òX—1$ldå±€Aè sŒþf®Ï®Osm,ÛÛ²Ê7 9sÔ÷µºhÁ6™Ÿ#âY%Ý3HÊêIÜ +Cžù?‘®£Á–àÜI;à('°Oé\’©’En2F{Žÿ–k±€›ÝÌ€y’Rä.?"kƒÛ´WShîÙƒe¨}·RžfiÝä98' ~ºÏ·whv“å¯ÁûØú‘\^¥Úgˆ%ZÇjå¼Ñ lTçiºàcŽ«³ð™V¼¹uÁ +°>Û¿ýUÕg¡Û¼Øi@êÈVªŸ¨2)¡>…G?¥gɬXÁy5­ÅÌvòB¨ÄÌêŠÛ )'’ç§QOÞ’N«`}¾ÒŸãZÝžM‘qíàu`ðÂS0h×wÎ{W‘êÖÐ}¾êïHF[%“Ÿ $ÊNqí¥uþ,×£žÓtùÒQ:' s ÷ç>Üw¬{Kc!Hâ@I ($N8ö'ßeËÈJmIF%mUk[sÁ WÔøþu¡âx¥nWÊ}¨à¨sÉ9ƒ¼zcœzš‡ÄzTÞYd¡&Œœà‘Ô{9ô©´k•–'²—æR2¤úŸˆþ•œ%u~‡L¬ö{¥ì‡Îf ÀÇÊè:àQZÌíp +O$`JÓ¼ÓXêßd™›ž ¸êBä g8üjµÕšØݤ`³©³Œ¸ÀäÖÖ{œî¤Tù:‹$¾V¤“FK¬n’À$I$yéŠôKK…º"—W\œžvç‚sœ{ÿõ«Î/#|«. `‚¤ÇáÁ®ßC“uËÒH·~ çWtÌkMÆq]ÌoùŸÚ"@ÈÌ#* +¾pU”òzänÒOü¸ÇøÖµ6O É÷?þ¯Â­è#OÚKùƒ’=Œ©l-¬mÂÚÀ‘)?6ÑÉúžÿr^&Œ%Å´A,…Kçå9ú§a]ÝìLÖí…$Žzãh&ò_ÕU†ÏñVØjÈó(h‘ÀF#„¡Èà¤j—ˆï?t)ýsøTg"AÎ9ÆGlÔ€"(˜0<–*p§¸Áž;z×25š³=ÖäÞé¶7ŒIi¡Päõ.Ÿ+õ#?HÀ@Y>™dÑ/m–A!´™fVÁG#‚2xïZ›ÁN ñÍpW¥s¢“¼@uÁÆM!gŽ”ÐØ>´âØ œ`V64n0Hä +‚½8xëMf<óÏPE7ÍíÇ<ž´–èçÉéŽ9ªm²:µ$Ù®W‘É ‘Æ{U&À|yÆ3úÑKÝÈP!ÁÍ8 zÔ&r{©ú¢ŸéO±êñÐŒ,VŽ$ÜzŒOÓ40€N¿Zh¹ÀÇ•_¼3úÒy霘^Ïèir±Üqý8¦€sžÔc`AGôpqú +_6"^ž ÑÊ(ßàºzFj®ÌƒÅ]¼4YBåƒóŒ~ªr¬ëÅRÑrƒŠ#1Îi¨x©ã<Ž”Ó°Zã dE'Èž™5™=Ë°!~P:šÛ¶FŽ:£‚?ô¬[øÄ×wèNGèEmMÜÊjÅËBX„9ÚAÏ!—vêuqiñ Á]ÇÕ‰9þ•Å^ÈaÔl¦R;YOQA®·ûRäŒþäzþïÿ¯U9E?xˆ)5¡¢ª•U{p§5’Ú­Ðï>Ññ¤þÓ»#‰h×úŠJ¬Ãt¤÷5ŠœàšÉ:…áÎà(£ù +‚K›‰ s1¨.qüèúÄz ö-›ÅJŒ°Ú;–8™¨šæÙ>õÄE;¿–k œ õ4¤â¥âD5Au s˾thËT*r¤d’N¸â°Í'eõmÇlt ž@ôê*=»ÃŘ‚Æ\á|`IÁ÷ô'ó¤Bn>æl°.2Ì7c#w'Ž§ÒºñŒç¡ëLŠ(áfòcX÷}àªxêqõ4*ì^ÁD feѼd˜‡FR­Á<ˆ=“ $ÌÄóÀ'=ûÖ½ëíˆ<OZäÕ€»CþßéZ£‘¥k` ód€óߟJ¼º·–‰z–¦¨ªh™”(0zca´Ûy ŠE@ R;‘Ïõ¬=µ’(e!†ôçúV·f|«¡yµ¼WTÈéûçŸÍJu؃s©j¸î>Ó&k?ÄÖ©g¨‰p’€ŽqøŸÖ©ÞO$ú¢™¼€B¢ +P6Œ þ½yÍ7 Zåë†K«¶x̆3ó3ÊÅ™Ž9$žI¤·¾°þÔ†ùBç@Ç¡ç'5ÃìØŽÈ^=:ŸåW–Æͼ#kraOµItÑrÙÆ€@8ì;VpÕÝ•—,U4,wša†åí¢š8Ëäí…ü£Œ:÷¬@0 g [4KetêH¦`ª‘ â_˜d1 €xÈõ§0 ûV‡’اLqÞž£ óÎ:PQ5ªn›ŒäñsÅt^&¸K{ 2ÀŸ•‰–EhGêXýEcéq︌c«gò§x’Oµê3J‡"ßè¯êMq¿zµú#X/vå]t[ý»uœ7vñª†X®³½A$ž¤œ‚9<µ±áR;X'2LÐ…P¡‚à²0=ã¥dÇ3]\AçÈd_$Ç´’GP?Utã²í훣‚‡ê9¨ýk²6º¸ár¾ÏCG_¼ŽÿSž7Î ±c` ¨ƒ‘øÖuÖ ÁM£qU?!< Žþ¾ù¤¶v0J^m€8ã$žp>Ÿýj´DipÒ2”’H ryäæ®M's•¶£æ\ÓíY(sçð r}äû]¼éZdú¬Ä2F»`F3¹Î?y8èôªÚ=„× +²¨¬A`ßÃäL’'ü+Å:¸Ô.ͼ-‹KeÛdXñ—#ÇÛžæ¸g'^véÔªPä3Ý¡©Z݇Š+”™ÄÀ¨U#+·ôÇRG&¹h® ¦¢Bð#€¦z~´í>@·*ÌÊ«´ä’éžüU{¿ù +Ü*²”œç#sž+ÓÄSŒRŠ8èJN³fþ³É{¦jç,âÇBp~¼‘ùV>º1qä—¨?Öµm_í:.rñëž™RÏåú×={y%à_5#ŒF6g'8õ'Ò±„½ÛÕ¥'Z5·j [³.ÐÈÁ]@œ’=yïŽ+¬ðãå¬ÈÀ :uÂÿˆ®VéÇ‘hÛÌ`íÉWηþÐøq¶­–O!ŠtûÌ?­]=Ú2ÅéÉ/0ñ"·L3€Í‚G!Гù\íÁd²†aP¹_<± ŒõžŸ•u~)]ÜM°oûâEoäMr×âÚtmÂE|c€dƒyÏüj^çbØíu±#!OåŸÂµ'ñ<×6P[µ”º1Ÿ3Ì$±^ þõ%ÐýÞyNqéëLµ# ž49RèNNzäØ8ÇqÅLw±Ù…¤¤R·\á‚o*ÀFGÐÒ´Lˆ‰ü [Òieˆhn=rõ­3nÇ0ü¨Öæ¸|"«kœû$˜ÇvœÓÌÒHФ±ªÆ ´Ÿr{š·yi7Ÿ•›nzrETóFêò6A;y<ÕÒoøŒ;„^‡]àrµÆA +Aã¯JÒÕí—þ%°°XçŒÉeE$s…fx“­8ɃèN3ý*¾ªÒMã«Ä‚T‰ä•cVu%Ca@Î9ÏjÒ³½FqÓÒ69y”«0888ÈïDŒæ5;bURNF7úó“ÓÓÖ¬ê¶Mc¨\Ûnc•‚àäã$ÓXÑŒ!fÎ  è8úÖ;IÝ\è¼)pˬ“$[ÞDmÂ;Úv÷9\gÞµxÉW\¬=8#ð9ü«ˆ‚V’hQ…ÄNXRã w¯J½Ž)æûD?ê®Qn× 3Ÿç\ø…ur¨»;Eˆ$^MBTòx÷«[äwè})¸ :s\w:JÌç#¶E3$îœsVÚÜåH Ãø)ÝT©b} = b¸Ç~¾µsÊp9qR" `ñœñK˜DB6ò(« ã(¥pÔçÖ7$ ½*U 2MJP€:ñJ"#$cŠÙÈV#òÂã/œú +RˆRO¦qR%<Á¤)Á#‚x57 "= œ1ùÐÀÀëŠ!Šc žÀ§p± ˺d ÕP§ ƒÛ9«åIuÇZ¦ +È#‚)§ 4 ÁÅLD£‘R â"K…-n@êHÇåT|EZ\€vÜÛ«gÕ‡ÊüëQWrÆOBàÌO¨Ù ¿¬Ã™4ùØs’v‚?P +ÞŽö3©µÎ[U`m4÷þ!žG¶+¢Œ†¦@ +ÖÒKä´…Ü ,GESÔþ•ÐÂ(QÈPõãÿÕJ»W°RL‰ŽæH¥ÉíN” –9À ‚Oå\æÂ’qŽ:SséÒ—¿РcÞ€ð8íÞ›“lšqïÚ€=¹éÍ& @0y“Nê­ Éëš.ÆvãùÒsœÓÏÚ˜=øúTKT}¶ÍÏQŠå²DŠÞ‡9ëÞº-möÂ@ÈÎ8¬D·‘‘Yb.x88ç¿×EhsÕvgchÛ´øŽ3ƒÈúþƒëa@ o`2=AÅEç^Kh–Ìe…Ô†HäH# #Žþµ%’B—6wÞdmŸ5vñ’y¦nsÍnaÍbïŠd¹Ó² X‘Ç mõ z×?).¬c²ŠW¤+ +>7NÙÎ=³[­©K$Ö³6_6Ø“‚:‚2 +p@¨ å¯Þóû>çí2He..ù³» `€Tõ•Ê·„˜QNAÏ ŒzGcœÔ‘]«øvK'?4W&u<‚›BçRÜG%踔ۼEA•ÚI7K€{rÀ+&LÆÏ‘´:‘ÏcÿëV:ÝE6¦Yµ7)¢^ͺÛ<±,³æ’Wo°ç?…3®{ÓcX†œ [ÊÒý¡@Ÿˆ6Ÿ“Ó'ƒëŠP@ª9žäW€$oZŠ#™ÉÉ5lÝzwÍ9S”QÐ@‰Æ¤ÝúH5$þ5˜’0¸.ý&'v{“ÏëZÒµÒH¬D²*•S‚Tc€GãY7¾Im·ËpÍœ‚ŒzœÖcÌœ™£|­"Äî#aœ ã sÊ1_ÀãèjÙjK*ç$«Ž{ƒÍ^ŽìGj&*X*ÞÙÔ~&³µÉnO¶y²Øé¼UºÜ–»nŠ +æNpOœñùUý&Ñïn„Ž7 ØPs†oðë*wÄKŸÞ09ƒÿê®ßJ„X؉Â1˜CÉc߯ԟ`kÓkE»8Òæ•ØÏ\I§èÖÖ‘­xX9_î(¾ 8÷ë‘»V¹º”«Î3ŽI<L +Üñü«ý½º±+ol¨A9Á9cúý+ +ñUnFá²CÛ±@]»zðzãñ­¡MSŠHMó¬€/9ÁSœOÝ'¡àý*ƒk™ƒÆ§w”èNOO¯åVl¡âܸFŽ\‚:ð0oqÐ÷æ’ñcî!P\(A€¸?SÚ»1 4¤Ž:.Õ9KºS•³œ9\c­`ÝCl¤<Ff-ʘJ=sŸÂ´Zä[ØHˆrW#vr7ÃéÅI©ÙÚÅaæC +¡Êœ‚sÄ×58Ý6m^ª„¢»•¥ÜlQ–Àd; +¶OËËd¶?ý|Vžƒ:ÇIµ·%ÀP£€H9 œàs“ƒŠÆuݧÈLa‘vn|ËÆ8çµhéE$2³F¬É ub0G#Óq½ô3Å8û;ÈèüT„ˆ±‘¾)ãàqÊddýEróÁrw(Gù·%ÎAàóÔrp{Wm®xìÜ‘ƒp çÑ”¯õÄA´Åµ•Ýšɸ\Ÿ\ƒèN:ŠOsh»«Œ[;Itã1Ô‘.B±û7ÙÜœ‚@‡€}éÖáW0‹€SaÀ— rr çò­ÿ év7ú4¯,>dË# rÌ6©Žæ°â@³Æ‹o1‚ $‚ žAüiX«–ü-©¦›y<“$†6ƒ.T«Œàgz‹T‹Éšê0¤å`;pãô¨t­çÕíí®É Œñº±*I*ÝpsׯjÑסXµ+¨—;J©’z îy<çžõ/c¿ýéGº2àaÊñ¿—&—b¡@ŒƒÏ›f¨T*+aO\ŽFAÇN3I•U%ö `J’FîØãžõ"‚·î… %“ƒ€xȧ8æÑZ}H,Ô­ËFXFY lÈèI*(<´•vP¬ŽIÎHöàTÄùWÛò8ppN8=z}i·[–âDi9Jry#žh[UrU.L›¢qŽÇüET·;fb¬@*Øàv$úqŽjðlª’FAYvïUê l`ŽN9à}éu= bæ‚‘4aÖÕ˜'ÎÇî`)Ü3ÀíÔq[D¨=¯Ò°/w42¬f#´0\äQèÅnÌ (È àð)ÛS\²Wƒ‹+Ý…`g¾x¬ùúF3Õ‡ò­k´~cЂTŽ1ž‡ëY2 Ï +Žäšªq~ÑÒ“}ÎÀk^cÎ0qXzíÆßßOaÒí‚û8Ïæ+¤ø|™¼•ÿÏZåu—kB{€Ë¶iÑN’IüéÉݶxkÝ5|g½ì±¯Éwȧ~ƒoç\ä<³!ÆÎà #Nk¦Eÿƒ-fï´•¢b1°È϶JŠåƒmu9àžsЊ‡½Í-¥‰£Œe²¡êÁO#è9ÿõWuáùÅ׆à’Örµ±' ²œ2v úW*¼8*¨P¤‚NR@ú×Kඑ/o,_`û\Ð)Î^2“Ô1ÏÒ¦qæ‹FQvi &GCéL(:TädTdtÆ8æ¼³¹²çœ~‚ )õª\esÜqM $ñEÀ`È4HQR(8ÆqŽOµ!H<ñš&?Î(¥ÁP38€X usŒtç¥8^Ý 3®+nFMÍÀ½ºúŠR€’~µˆ/îÏ™“îHºÀà•?QK‘…Ñ®Ê<ÅDSƒ‘Ôb³[T›8*‡ QÀĸ4r±¦¼t÷ȦIkæ.W +㯡úÕ5Õ@nb8ö4ÿít þìƒõÿëQË$ ¡­ÆNå ý¿:T#Ôc8¤“SŽDdØÃ#“Ð梙@PHä0$ôïT“ê-  F_x IéŽ>µvËZ³µúEÂÈò];Fª«Â’¸`ÄôävɬÈXÅxF]ÿ#*«â[/Ìãî‹•“ÛæUcú“]Ž£=ltö‘ÛÂp'\SžWíU×T€ÿ'ô§B"À⸟3wfév·Æ@ñå8·P–r1JÒÂy,1õ¡6†g²íãt¤€;ûU™ÌlÀ†'žj»2‚Ä0 Z¥¨ ¸ ’y4Á*çï Õk‰BTçŽcÈógåRE\ar\¬t"E9ätõ¥IT0‡Ö¹’÷ÎÓé@’àvš¯gæO9Ô™TžJnlc‚ßýl~u•k87yNRO16¼‡!HaŒû¿…Evo/®.¼rÀȇà*²œ°Q’H«§XØ$îîi½ÀhîÒiU¤fs‘Ñ›vr>§?…W½nÀ`¨¼¯ àEU8çÒ¦»$J¸$~í?ôUmJNñ44$ê£@ +z‚xÎ+oÆw²C¨ÚÙÛÈÑH÷îF*C·9Èÿgoæ}k–²½šÊdš "’C?Å-åä××/spûåsó7¯ü8V^Îõ9Ù7V°²Ë5à g•å‘²ò1bN$žOoÊ­\czˆv„*7#Ë7¶;Š¯m†…•T4‡8€2¯½[¼Ì "´¿.Ôe|ˆ€' ð9箆ÓDéÒ˜äˆ!`åpXA#œv#Ú¢¿Ý Ó&pÆBI¨<ÿ")m>S È# ädzõ&¼€\£÷g܃ŒþDº+ÂÐMtçjöîA0 `€0 Ç<ôÇøóZW»ŸBõýÔgôZ©<{¬%p6åz±É {w¨ZâëÉû;È¢< +vƒÐF{z×=9Y3\M9E®Œ‰?³J²ÈWÀ€¹ç91Z:œM üªÙy ž>¢¨E•`ÊÄŽäwäóøÕ­™ßh*<¯ºNqÈöª‡ÄN)^‹;Q‰ðürã&3 ôôeÏõ®H/•~ÑùÆÒGBÀF†xç>‡½uwËáiÇR |pN?•r7cQ–HÂHË;8à €N}=%£.‹¼¿àyGù$Gq€aÛýÑXºŠˆ¯‚ÁPÈ„©²±Î~ŒãQÛj7š6£v¶éÈí¶Et,É àŒŽyõªóßÍwre”"±fs°2@ÏsÆTqSsT…³•mõ›iÃŽ;”e9dœw#­t¾)FMF3ÉVˆƒÁ*Ì?‘ÊêHëw>æS#(bèNÓÇÈëî+³ñZ»Cg3€3+BÀzuSKtua%jËÌ㔬¡ °ÏQßƤq²æRÌÃR'˜4\(°K ¡( +¯Þ=pÜäÿúèµ…^¢©.dOlàÛ¦A$ ö>þõVp«pĨ ØÏQÜ:³hX£ƒ‚s“ŒdxüJ†ìa‘°HÁS©é|xt-×Ïf¿;o “d€äŽÙàg>µ©§IæXÄI'äÚBžxàgÛ¥gªI=¤ˆe,¡€$–-ÁqÉ=xéQÚjiÕ%Žá»#ŽywþUgº£7ͱ¸ÊZ%s¸†%y1Û?JÈQ@?Õ£1z¥"ê²;€"$€2O¯ÈÒ<òl ñÉÁïÓÖ”õw:q¸ªu`£vžoìýR¾Y†xË'õ8®6|Ki 0g“rIʯcïÀþUÔêR}‡Àm=äÊy;‰ü—r–ìÒYËå ų‚ Þ£“ÇÖ²G—'wssÂö«-KNþ)¢ßn~e9ŸRAü+—¸1À•Ç¡ä~•³á›£k®ÛLl,œã +Ù\þG?…Câ O²k1ÀY Q×å<¯èGåFèÑ_rŒ‹¶@‘Ëç\’6‘ŒqœõïéW´{ÈôÝNÆð,ˆðÊVà‡†ÀÀ9ÚOzÌUÁ9“ž•¥áûQ{¯X[ày”°ç•S¸È Yè× äÜË>ë}#ô"«°9ñ­=Z?ô˜äþøÃcÛÿ×úVsÁ¯6¬yfÎÊr抹ÉãÚþxô§(Áäuã40Ã8õ¬ÊêF¤‡’œÃŒõéM##­H3€ϯãÒ±rzQMÆ( ,p¡ˆ( s×ÖžP€})»çëÐËP×¥;q$ÓBc¨çëHÊzP1wf—píL*GCÒ‚­F€<`â‘”ý)0ØÅ6@=¨63ŸÊ´díÛJä: 3øUø[tN9?ʦCEˆðn!b8dÚO¹ #U|kÅîŸ0ë­#v>¬2ä1S™]* l.…‰ê0F1ùÓ¼_“KÑ]G*ÓÄÇþ +Ë5½6e4b‰NrZzNCg¸äUE%£Sê)`x¨i›5c¸8Á&§Yò@Üsõ¬uŽNjEœƒÁ"¡Å¤k¬„°9àzÒÈäÐúÖdwu50¹dœTòØ«¦:K€eAÇjƒíñä‚£>â–Y†+2äAOz¸Å2%#Kíñª:Ó–þ¨ü«ñ4dâ¯Ù¡s³Ío( ª‚zÍ•NQ²=)„“žM!ôªŒlKwäQGãA« L2;t¤óæ<ûÒÁ÷¢Ýw\"õŽJh-waÀ¶9'“ɧÀŸ½ÀÉëÅw²ZÛìM´Gr"°Ø;*Y#‹7‚"0Œ6G8­iÊdÞ§Ÿ`ƒƒ@ÉÎxà§*ãÆzžžµèN"-3xIh|³òG<~µ#\±hPlc8AÈç§J9C˜ó ¤6YIÁÏàhƒwÙÜ«°«œ£8?Ì~uÝÝjvvhÎê¨cµdL äH^œp=+Ï£“Ë ’®6œÙúTÉ[bá.äš|>mרSú×_©H4¯ ÉŽ'½>RŽáO,~˜ãþ+/öBiÀBYKu#õâ¬x©¿´u…´„³¥¢˜•#]çwV8÷ãþ\’½J©v)hŽGð sW^ÚÝI rX uϦ)ÐÅj¬L²_÷H溵‚}J@õ5ßúæŸú4Ç æ1LìÉ ëŒñO½™&]hF˜õ*Š¤þ$A7²±åF`ÅT°A–À< Ÿa’ãMS€>µb +Gq〈÷ÿú¿*d hˆË;ÚŽ}nvV>c"ªyǨÀ'¿ó¥N! “iÆJ–Áöôü+~xÖ&¹¸\K2oF +X¶H<`Iê3éÚ‰#QûÏ9v¹$¶UAcÉOÿZ‹7±,4e'H爸Ì"`8%¹ã¦¦²Œ¹ˆ`ÎI÷cúÕýFKXm +¥â½Ã® ANGQœŒ‚¦iïÜAo’‚œÇ$w­à­ 3E*p¨£hixâ&*ÉY”ÅLÜ‘÷ˆòÚk˜JT*I"¨Àsƒž¼{×eâÈ£mV%˜'è~aŽ7¸õÎ+ ¬í~åWpl‚09èAÖ3xb.â"0ÌvçÀ$†¦Œjû–‡cŠÜ¹òŠA$ã=¸ãë[‘-pO§j‰å:U›ê×Dòe,ân»ˆûäzÏÿ¬Rl9=VêY§x¤CFå]IÉÈ8Áú`ÖxbÇj·˜ìîû¤bY‰<’y?Žj pAsPËG{á¦K }Dˆ"gž­Éñ$ +ã_~òìĹbźs’~¹¡.î„M'”ø,¾S‚#§aV.ÅcI ŸSý+*tù[}ÅRWЬrN:Ÿ~ôã«•¢q8Tí'8ëÓ¨?•N©ApÛ eQµ‰Æ #ž:ú~5 +ÂÆyîxö…ùˆØ sž0AÏozÖä$U$‘КaõÍ.~^IÍ7<{Ðh4#1Ìr>îîjÓ­I”9R3@­$‘­ o34j§de‰ “ÎAžø§rù(Uw… À…ž2qUbÔäò1ŒóšÚ–ëìúUͱºŠVyVeò˸Áëœp¡94Ñœíq·zCÛG;µå£ùM†TfÉù‚ðJ€pNpp íYn¤) çÇnNJí¼B#û Øi%‰Ë³ šáŠËó©ÊI8$ä§qÂ× 9"@¼€Gc×ëM“ €È>”­Ââ. Àm¼Üß½-¾›8<QZ–¦ñ"ŠHu xF©$Ê +ò[;H9’sƒƒI"¤õ+Ú?˜._÷j±Û`(r@U8ÉÆO©$Ó¬® Û; [³H\ísÓ½S¶Ç€£¦Ó“Ôf ¼1عbAÙ ­ V¯-ÒÜ´²†XmÉŽ=p׶ï-ãÝI#ÄY†@(ÀÏ ðª‘J»PX@î3I¼3Ô$ÏÒ€²4b»¸»34Ó3$h̨í€0p ô§¥T†9..¢·…S|®#@p$à ŸsQÁ;ˆ¥ +0$$0€FAŽü€[+vmô’O´W1ÜÄ©!b0ÆÝ¥F=O¶ +äÊÅlu-üÉm%aRèFwgõ9ÇQUdK˜”¼ÉÝ‚^2zã‘Öº½oK·ŠÒYm‚,‘¿˜¬Ö˺‡P»\€¤à’y õO]XþÍr’4²H6:´‹´d·8Â.xèygªš&ÈæüãØ>í!¹`ØCuã¡ýjVµÿBiËÂ@qÁ$œö< +îÚýäF,•^DÊ‚1“‘Ôò©E%rÅÖ§u©_Íq4"îgTf$ $`OíD—O=Ô“”ˆnv¢ Uçqǵg«€2=3NŽ`ªØPKqœô¤Ë±¨·’ÞÝKq(FÞK²…@ã`ASµýÝÝÛ=ÌÿjUfp ³*€Ü…‚ ã€1Æ:VLV@#\¿“Ðu©måÂJU,Äžpi…‘®º•Æ¤î8!„AÐÀ$uÉÀÓ,mž{ƒ!X•,äíʨå˜pÇ_~õøŽMˆ±# ó€Aþ•ÒÚNcþÇ3yAãâb®ŒJ?*Wð2OCÅ4̪$í©Íj0I¥4)Yb`¬7 €8$¾;ÒG+C:Ü!D ®á‘Ç­?Q‘¢Õ¯À&gSÀà† ãcòJ¨ L®¥Jï + (ÇBs“üªõäw³Ìð[)y˱arIÁÏ#¡É%±“~õˆ`¸–`óJæG '$c€?2iÑÝK2<²·˜V0ÅÀœ$“ÇSɨmˆM>Y%Ô9Á=8¨íæT³*±\‚Ì[9’ Ð´·2IÎìÕ3„$ ÀÉ9Éëšj\¹æÙd"FdTg# +#°MW‚U[2¦27ÌIÈ gè%U²Ú# ± äžãéEÅ¡¤dyâ‘Ü#K(gDƒ±Àà d]n‰¹ô{mèT…ÚÈôéŒvÅq:\¹kHS÷M$ÑæF €3œŽœ’sšíí [ÞyÊÁã ZD*rÝ #,yäñÚ±­h\ºr´ì\*3“ùóLcw©Xq’8õ¨Àž8¯<íè1—ž~‚§J€9ÈîiŒ¸Áüù¤Æ…àuÈÍNcE+ˆÏ8ÛyíNQxôªK8ÈÏÖ¬,¸A8ïVÓ@JÃ8œ æ“¿áLVÜOµ<çŽ-† ã=*`£rÅ1r'À§¦@8#ô2yúô©Æ8¦¨Á99ÈíOÎéHC0 ,xÉÆ* E Ù0P¹‘œ óÃ58àúûšSÏ­4õ¸Þ§ $Ò,Z›glžŒŸé[Ú5Íä±Kv¨T[:¸‘ˆÜ¡r@ÀÎxãÄT·öQGPN=;ÔomSòƒéV²N?*k)*r;¹´D]óíÄìòMκ ø‘U%|o$ÿËlÿ:|Ç .z‹€~¼úª£ûf ¶ŠqºRÌGekS͆ž.ï/p¶ˆÅ•Xà>;Ÿ@1\þ¯âc{%ÎÅýÓ+GÜ0€ +€y¤àòEZñ–º­»K´8Eùeeèèƒúý1ë\aÆ*[*×:ˆï7èåc¹„H¶Û +´˜9ræJõ9íšæä +³xX£(eÈb'>‡Òª€{Rl"<HÖºl%“F¢\¸‘æ*YA1ìÜr~PNOŽ+0 Œç­] ÿe1.¤ ŒÜS×Û“@Ú¹nÞÖxm'v„·›uPC™$’ä3Î:g ¨à²¸k9£XX´Ñ‰Ȥ’G=¶·xúTVÊÇNäÚPº |ÀdœžœTÖFC¥]1 Æ +!]Ä dŒtÁÁÏáMX‹Xµ™š,3ìWo)‹„ +\σ‚@ ç##ŽER] ÿgCt?x2Ì‹Ë™‡é´}=+GBÓ`¾k€ÐC4‰"”Y'ò¸ ! õÈ%TsîMQÕ-¢Šý’8â\Ge‰÷ª±KÙ9ù‰èH´ÚDó4PŽØ}•dqò²’H‘É~]Ïzд–Ö=:2ÖÉ&ÒÊnlnlqŒ£œƒÀèM… =ýýj) +29烜RØjIšzeÂÇEíà—h9Ù'ï1RG\pGÔu¬èeV8$t8<ŸÇµFØ2H(P &k˪^\BÑË0u–pbBY‰¶B‚ ÀÉÎN:ÖeÆàË“òÀúú~U2©P¡H;£Þw t'8ü"r €Ã$Žœ€zäÐÞ„ÂüÂéöò\4‚È*Ñœn`£?R@æ§hÚ=»Õ”0%r1 RGâ¤~´üÒëÍåoËDUªI?3ÔÜóÀ«2—Ì×Y·JJÇ°ù‰´© Ä€6€@$à‚ÙëšhU·-èmµÎ–³Ico2¬Œ²3C#È@dÉ8VÈÆ91’¡iV÷:d3=¬3$0œ4_˜ÆÜž#±HæøØ'“œŽ¹ÿ8 ¨ +’r0Hç×™*GK£hzŽœK׊Wå4g +ês¬ÊÝñØuäTÒô„¹´ß‚ß:Ü4nÅ$È p$QÈ$ôã9¬}å"[ç sëÇzŽ_ž4AÎO<úýh‘ÑøvËM¸°Cyh¦E™Ôñ“ O$Œ.Ç í“\á"ñH…1FRNT‚A÷íMweHfR{© ð=ª% † à äÀã¦}h¸=MKNöú9.`s#²ÆXgl…È'‘ÚˆÒk]6ï>}´ˆÂA”?1$†Ï9ÍSÓõ9tù¤–‡xš5äœg8È3‘8â­Lz3Oq›-ÌÎÈÍÉÇ,:A òHç‘Jå(±6—O™‰ÞÄ ä’K=ùëõªohÄp ÈÈÂ’?00kAC(É´®æØ®ßs¸€1Ôsž8®‹VÓldÒ&¸Š×ÊÂù©tÑìY*FI@A!˜3ÂŒžhVºg=a¡Åq§5Īr’0?+“€žì <9íUm4ÈžßÌ›$Œ…|°]¹#¸$ô'ô5biš(U"•£ óŒÊIp=3ÖŸ©\¬ÄªÎ…˜X3dŒ׿­;Ÿr >ÆóO/†ugŒ|Ø sŒg +sÚ´´kM#ìB]Jήé•w€e%€€O@p$gæj3,‚Õb’eR[,2 RÜw9=Iàuïš~­vd¿ŽU”¨‘ÞVòþ^‰8:ÒØ­ú›:•¥Ob‚úÚu•Ð·˜àÌ•ù” ŽGlóœV$:mÄ°ÌÃÊClvÊ’8FR?+rqƒÛµC{s4MŽâ@Û ’’`‚ÌIÎÓמüÓP’-6æß©™Ã‰ É‚ªœä’9“EÁÆå{Û†º»–vÆù v $’p8êMG· +H'Þ£ Nœü Ô»šô5t¸âÀ¤H²8,Ä1“€O`‘õ©U<ý<¶G%¤uUî 0 ž*[ÙôÍ1e„ˆçiö®äF@ÎpÀóœsSÁª^ZZ½úLRöâà&ÅÁ%‰ÉÏn3M= Ünîu”sÃåÈðÅ+e¤}ª¤Ž $0O\U‹M&ÒãK¶¸{a- ù—j +@XÊÝW˜ÏÊ8ÎzS¢¼¸Í¹ûFË’ìK†db>`0RÝ1Ž*4½šÚîH »¸Œ*€V;‚9Œõõú +¤Cvam¦Ú\hË#@;FÒ^ïj! ƒ¹ÈÆ +äe‡NÒŤéòè‚ãË•KBÌeyÕQAXð¤|ÀÆjµ¬ò¬×An.T…+Ç3(,HRx<ð2}qRiRÜ—h㺸Xd”.Øæ# +ç%A3ùÓÐ/Ùhº|úW˜â»6ä¬lÇy`0X ÄmÜ8ÊŽš];U’âXîo +ù±¡ÞÁqò/9îIëëXj÷|¯íÌq4Œê«+(œ‚#~Të)Õ4ëðK.äIrN?šÎ~ôl\.¥sФÈàŒ`àóQ’r 8õ5…ÇÚ´è&ÈË ÝõÔT¬Fçžµå5fÓ=»«¡Oµ1Žrz{T™,¹ÁŒÓHÀÍ"åÁ^h¦! h¦œØ<’1OÞBóŸÎ¤äþtÙ``Ç$zÖ—LB¤ƒ óÉæ­,—’sõªcéH Èê1IÆ㹬 Á=Gjy*\ðIÇjËYÜp À´ ‡œýpzÔ¸°¹¬ÊNs“L’U@nIêxªáÈ É£f$ä’Hã“Þ…â¹ ³¡$ë“Uî5(mØ*æYIû£ úŸðÍg]NcP‰Ã°É>ƒ§çY’È–Ã{0RçòxäŸóë]èsk#*•-¢&þØ–ïSa' ÚŠ8©÷8­Ø.SË#ŠàüÕûS²±*OR ï[7 ̤$ŽÅs‘î8­Ôz¹7¹§*»ÝÏpˆ¤+Œ1RÀ uXŠY£9ŠFÛŒÇ ~®Ý ., œ>" ¨Àà·8sTðäa€ÏÐÿ…iÈžèÏ™§£4mîÄͱÀGŽr öôúTàrG5*•vœ©ÆG"µ­%®zžžâ¸ëÒåÕTjs+2_âÇ|zR1ÁÏ¿§’HÏZk·'šæFâÜ÷¦eG¦3L’L@Àõªï1$öö¦‹,ë´ä +©*#Óƒœc<{R“Œf©+ ¨‰nð?!Hñ0#ÛÒ®Û§ÅIu€€cœIêSD1Àä÷¬ÛûY'R©ÁëŒÖ±úú +ˆrØíWК¹Ëµ³Z%ÈvÁI¾r¥I›uù,ŠD(—dŠÆ3»nœçŠŸQ;¤¹<€dUÇ Ÿê*t¼¼½¿ŒNè±™|çTsó9$õ,I@+¾ ÙÆß¾ÍkéÖ/5‰ë( z?úÔýÝ'ºœ Ì-¤`wÚHò¬K‹†º¸''`$êO5¯¤Ü-®¯8Ê34,BˆÍ]î+!BpÙÉ#'=I4Ò¬§ÆkNþÄØj76nØò”1Tñê?U`K`g€? +,G5ŠìÌz¾N#ž€`ÊŒŽäç¡« +á‰\ar>œvúÚÔ´+k]5åWuºˆ$l¤‚–ŒŒœd3Å’0q†à`}rjq!° +0I8ÇSŒWCw¦ÚǤK?“¸Ž5SÆÊc? f$Ÿ›³Ó °ö©ÛK³_ É7“¾Ž4bR +Ää¹RpêI@Ï(œŽb)6êI^„{SíßlhÍþ£¨èH8ÿ$WW™¥¯‡^çì¿é«l«3gw–0#ŽŸ9çI™¦?‡#¹{%ûoÙL…ÌJ¹WÉ#ƒ´¶NLS°94QáHõûØA6d™÷ÀõëÚ¨k{ÿ´åwÔ:&Ñ"•r($î#óÉ5.‰{ke,Ït‘É’„$™”ÜÎTx'ØÔÕ'†êàÏoÅá¶*…Û0``pp3LÉìU,J@Ûž8Ç­7‚p~ 8“’iÁIàHÉ$sH•@89Ȥò“ =ÀéÏ¿^”ò1Œô¥f&5V9 +N8¯^{þ4!]‘Ì4·e#œåœÐÔ6gSqžjÉbÞHãåÈR­hè–^ÅpY‘0Hr0Cda9È<ð +kbã.âèÎñ\CæÉ¡Úä¶Ð›Nà6áÀ<ŒžÃ¾dÖ¤¿¸X'¾h$FyDRDÛƒ «IÚ7nA槲…lü^¶±îˆ#ÉŒÏ^rÁÏ#jLj¡™4»F¹{?Ï%£šVDZ5%C0ôFIæ«a=Nt°*ªd“ž´ÒIP1ÐœŸZ8=1Žôý«öo0Üi` d¯ƒ!™ÊŽ™éÞ‚ß(ædú’zQŽ}3Ï"Š[*8Ο–Úx.0ÁÃ&åÈbLwä`Š`i$xÆA9ç'<~´˜È9ƒÉâ€NÄ×ðßÃÛÛ&‹ËuÜïÇ9{ð8Éîj nìþ_ÎcL”Rä…Éç¾xè(1&Òv¯ž1À­[ÿ Ïac=ÓËm4QÝå³w P ùÀ=9¥chÌ¡ë…F,ª 9ëÆzsŠêtÛŸEi´øáØ`*êòLåHJ‚W ãsÁÈ5Ÿ}¢ZÛi÷7Vé{˜•<¥ %X¨!YOÌpÀŽœ +¹áè"¸Óc’æ9Ya‘£F†Î9˜`‡ä˜Ø¿Ç#Øpi¤&îÎeæi"‰N0‹€FsøÒ»=ÎÁÀX)$à;ššîÕ­î®c¹$4s2–Ü b ŽsÁÏ¨Ë ( +ƒ¢ƒúŸSïLÅî,²‚‹cäEÛ¸ŽH$“ô¨.3<†I>ñèè>•(Œ„Þ͵ON2[è==錒K°ÉçéšM ;7=éxa $‡jFˆ[’0’zc­6ò+˜J­Í›[:ü¸hŠõ¿Ð +¬d± ú¨ÿB‘ubv‚ ÂóߨÉüiXÕT d( 79 qëJêc9ÀÞº=c@·Ómeš9g¸òœ,âÚAlädƒ€0H$õ¨õMYÃu"¼¬¶ò(ØÊ *X®àA#+Áäãž´r—Îd]J¿fT!Š(8÷'9ëõ¥º‘E¢FŒ žI$s[z¯‡RÏO7×.c|Mˆ€Æ¹À9W9$‘ŒלTº¯…’ÇO–u¸iš& Ñí?p¶Ç€TœÉ# Ís;¡Bñ|‚]sÔ°9<÷¶+¯Õ.VæÒçË%‘AžVM !2Ϙܕvè žœŠæ§Ðï-cy$‹ p²+^0H8ù‡Lã5 ÷6Ê&Ê©Pßfˆ°F⻹Ž½ 37$GÛf6XŒžOsžZ}¥ÛZ™ž D®`FaƒÁê¶xíÚœ3‚ê={PEÊí ¶5,O’O êå”’[DÈÌÂBB„+–vŒŽ£ó§YM%µõ¼ñ ÉŠê À$pO¡Æ?èãÕe±Ž‹OfTË–bÌIR»ƒêAÇiã$64Œ›DþœÉgqlá•â}ûX@nzG Öã(ƒ“ŽŸs^­ÚÕªG±¡¡&Yw’ ³(Îq=±é]IÀ$r;ö¯>¼m;Ô%xØEû¼u€ `“œôÍ(fɃJLœã$c'ô¬MˆÈÁíE+Ÿ›Š(¹Fh ŒóïHÄ÷4Àã¾y£<’ààsLB2ƒŒ¨#Ö£hG\sÏÒ¥c'¯Jz€#9„Ú>T*Ø>™¦(É#9«ó…*NÐ2qøUÉ' ÍZwDì<}}©‡œ“Ï­8œzÓAëœ`uÉíL -Vy"¿q•\€A#8ÿÖté4÷)[çP +‚Î@#pEh\N·:›˜ƒ1ÀU +3œqOº‰`úægk AP¬X“Œ±' ôÎ1Ú»aðœ³øŒy-å¶—Ë +8àúÖ²†B@ +IôOéX¯+É>ùrK×Òºk}E÷ÖPß(*H#ƒ©ú:ú×5©3NBBŽÅ–qŒÐÒ5˜šÙέÁv—sÃ$…õžžÂš•Éqv¹²–Ï*É<¨Ê„ `Ÿ‰þ4í‹C0 å\q×öúŠ¨'{+SšE·”#s¸žIäqÇ\Û½]ÒNØ]Hî ‡ÿZ¹±ݱµ­Ë€àx䎕®pAçϵJÇ>µZcœÆ8Åq#¨‚F'Œð­CÔçßšy<žãMPHÀJ´¬%qéRF2Ã#¥0g"¬@„œÿ1I»³àdö¨¯HÀàÕµ)ã¯<Õ Ã—€úT­À¨Ù?N¹=©«ØÏLt§63žÃ&™Ð~¼V‚0§–%e¶y“; ÈÉŒ`vëÒ£†RÍ<ŠžX "¨bØÈääòz~µ Ë9Èr&¥‰vÀƒžOãþEw¯…7¼Ù-ºáOFÊþ$U™²S†‘C)ôuãù*¬dà‘Ôãê ,ŒX°SÁ>bæ*‘LÕÕmíõ[õfÙÒ"“ì.J‚A?)䌌û +È–ÞÖxîZÎsĪ…½Br=AŒ‘œ3Zz‘Ë,Ú}ÃbÚõ +ƒ×kŒppk;Rž{d‡N›x{92¶<`ŒÁÉ&­5c«1-ÖÆê塆Îï{Ž3xœò:~ëô¨LPɲ›[½’fé  c3Á#Ú¢±¹’Òín¡m²©èÄí`{GNÄtëSM{%Â^y®…îe2° œIìž” µÐHÚÎWŽ/'PvfXÕDêÇðÚçµÙ[øZÆkXVYµ"ÞHÊ´ ƒ·xÁ q‘\e„BS6Ö 2FgTˇA€X÷KqœñøWE‚yâóu €(™Ü_˜Æ€ØC9Á§|‰E½™Qô ¸ÓàQM{½D¥c26. `Œ• €0qéÍW–x ´’Ì]êiLÈÈ'RŒm!W IÎéŸzv°í%ͤð\Ëræ=¹ ¬Ü"‘€˜* fAÈ9s4!!9vfo\’s×ß5{"%£³û½è?î!ÿÙ©ài¡–ùH$‚cœãÄ1ÐóTòOQǨôQ±Ø’.99}3úP‰-²éèÅ|ëõÁå~·ÿjWS¤xNÊêÊ;“wx<îLJ„PsïÈ8#¥rÚdBîöÚÚefåDf^ +` {ñ]eŠjZY%Íåô2o10„ì )PÀ#dœ€ tÆpjdœ–…CÍZLJ­t»˜ã’ú鄤 ­¨`™ÇÞ%Àç9à†©Ýiðß½šÝ^O"(ÜÙ« §ó(#“ŽÕ½«¬²ixk‹»‰ Û¹%HÞ@!2YwNAàœqX+}1Ô¾Öìe™cò™g%Éã#9 õçƒÇ¥TVšƒ²fz ;r´Þ­œ}‘:p篵h[¶&¶¾Ôc{­¯KË‹Ö\gæ8Ç­df `)pA[Ñ]^ÜÚé±Çh²¥›/ï0Ž½òó†Éüi ºD-äÙêgÔ/`½FÉݧ¨*p*dÇCÓ­‹ $xŠÓ|º¡ò "}‚8Få<Œt‘Ȭ-Y jW3OFc•†1‚À(ã'h8Ï$ŸJèì…ý¥õ½»\ÉíLü͹3Œ•`@;rqœžH¢JûÙGXð­¾–‰$šœ…¶àZî#ÜÀœ\‘ëTntË;;Tó¯æ 1Y[@Ä`‚œ›‘ô®ƒR7ïos·Û¢D–]·‘&ùZ>T àl3Áæ¹)¯gº³LÙKxÿv¸n]G@>œ{SŽÚŠjÏDMi•ÔVåZ9†,ñŒ‚~r8>Ƭ_ÝY_ZÄ'Ôî$tv`~Ä ‘ùê:çx¬>œúT­±©i"•Tcæd sÓ’;ÓêJ–…“o§ cR”ñÿ>dìÕ§£hVšµËéʂ~kfRG¨ÉÁç¯9¬ qŽ>µÓøwíö© +Ú™RÞú'‘§X ”’3 +#$.pA<ð)Km=É5¦Ÿl.ŸSF„}àÖäÁÀw'ƒÅ2hÙ¬{X¼2ÂÑ(Øl‚ Ü$F¼œ’së¦÷Z‹Ùmžâþh¦[Æl‘»xÈiÊì9dW1u5Ô+{¦<‹öx¦9Ú, ]à IÁÀ>”¡t­"§e±kPã˜Û\ê³À~W–ÖEIRª§$NB““Œõª+c¦4M;Þ3ð5±ÁbN3È8Çaèy«z†®·80Dëqoî‚Œ°?1cÐFG•SNº{[{¸ŒmqÒ(dGÚT©$d`äsŒtéÍ[ÓBMen«’ÞÉÈ3k7Ueÿg±Žž¢®iš-¥íâ[®¦¢VÆKvP}@$à9ÆFj‹™¥Ól¢eE’ÃÌ!ƒ(éÉ$Ž€tð:Õæ[’âÐhà™šì¨Û‰pF1§ ‚¥-v"6lпða‚ÙîNª¬ï·eq‚{à+";›g¹Šö30VSž:Éê2GJëEÖ­Óuwp#gVF±]¤*«ò•99`¼à•Ç½rw­.›=Öœ%v¶r¦psœAê‘H8©‚kâ.i%tTkKUfVÔUYN6òg9úSÚЩÚrü°“ŸÒ¢’5ŽgA’ˆÆHšÜœŽ=S%3iï4é­%Ž{¨Ì’ÄÊÍŸ´–;NKçæU?w=qÖ¥µº°ys^B]‘°±(7ùé¹ä¨ïÓ$×:T’:ž2jÞ˜³£ËwkóOfeŒ¡mà8ìJœzgÒ•Ùiøðöï=e¹¶I))i´üÊ;·ãjžlõ9¬‹m,WÉsÏ4R²Z•c”ÚbÙ<"žôÎ2sW¾Õ«=ÜŸd½™ÆQ¢U²_(† FOÞ ò¨'$¹ëÛ«µÔåv–4Œ(æO$tulàHÈç¾y¥eñMZèÔþѲ*é··3ì’¡¼§Á 1Ü}Ó‚#œäs&ÚÏøu8Hàîû<Ã=÷~Ÿ]ƒVû5ˆ*’5¹’3¶FW*TŒ’Á8ì<Õ]2êM?P[»2TUeÚŽQÊ‘ŒÁàŒŠ¦JqkQ Œ&!?ÛBNýžm¤ú·¯^3V4ý& ëØí£ÔíÃ9ÌR.yè2 è23Iç;é—–âÚÓù‘‡ YA9ÆFéÉǯ­?C–k[¹'²ýåͼfP¡ ‡…eœ+ŸcŒu¥-´&-sX߸ð;[DÓǨDLj[÷‘QŽääôëÒ²!ŠYí]£º¶‘aÀl¤ŠW<ð +LœzWJ/õ'ž5†úâC*Fè­`»ü}ìvËœG=pk–ÕïL•™d ¡go$(`IÈ’1‚ ƒƒŽEgI5ñKEî”’`¸Y¥tpÜÃ0 ƒŸî{W|²$¨²© ²(e#8Áç¾+̉9Åw>¸*)$´$ÆG^:ÐÖ˜Ý\Ó /zƨ ?®xéCp ÆAëHAc`sK“× èk„îFy¢”wâŠw Ÿ®iÝÏ&šNÏ'äÄYy㸪âHcŽg·b l¤öÇo~+£dc»+ÎÂd£"RA.ÌIp»~Ue¢’®nQ˜*»,|•ÉàŒÐã&«@b΂@FIëØÖ±ŒØHf_0y[âD•Š«–Û†àà€zØÔ½ +²c`½À±:±ŒH$`’-Ž'#½Io¤ÝjËuu¸ +¡œc©#$*ƒÉ?ç­Sˆ2²°T`H“¡æ»¨5»FÓ<È"{Q c#•#‘’0}ù¦•…+ìŽcKfžl¹$D€ Ž„p=ú×K§G¶7b ÉþCÿ¯R^èßf‘®#míq #†Á$ðOƒøÕˆÐG + 'r}O­r×nö7§f´!aÜûþ5RQ’Iãõ«ì¹SN•Ja• pGa\èШ{Œþ(ù€4Œ0Oaõ§FnçšÐÕ RÔå—çÜw$l„ h¾lcï!ë\T¬›p±ày°zŽëþ}©”4 2˜Ž ~ò";0ê?ëZ:ìCUÒ!Ö \MÝ(ã côè}ˆô¬²Cp„îB…ÇQíž:ÐÐõ²½"e iv SÆzx ýhLM]Þ@&¢`ZP íÜ@ñZšæšÚN¦öÄ–„áásühzúŒ}Åe2<¯„BsÀœÓfQZê_M¢6(Œ8É`Äã@’=N3ZÐ@$¦MÜeA$þU²E4å‰c<“ŽzóÅ6ßTµ„ù‰k0ldƒ¯Ó8¬ÝÛ;hÔŒ>%rݼB+˜dÃYS%H€$ÀÀÏ'ŠÉÔ žÚúX®¸¸FËŽ£'ž:‚9Ï¡Ít ê-¿ÚÚ6˜*®ërpI}‡Ì´E/ '©=Ç×Ú´cŽ³W½ˆùÇZVÊÀ8ËK·ßÞ‰UŠ€8ì94Ì–æÆ‚Ñ$‚æ™åFwÝ›Aqßœ¶síŠ×ŽrêûHX©qÏóúYHmå–k›¸a†0Œœm(FB‚@9#>ªEh^_hñ]#»ÊT$K"dr<xÇ~*_©ÛBQ„¯$_€4„«(`‚:úÖ.°®b’d‘X“Ê/‚@ †‚FCÁä d +صÕôÛ„w¬†‰Éã4,-,SÇ’Ï … ¯Í‘’1ÊŽFxΨ£Ôt«9#–Q°²mFv@yŽŸCŽ•p‹{¸#ò5 hUÂgVRF;x<ã­(èõg]ySšJ(äºs‘Ï¡ œ¤PsAW–#©<Œý{Ò‚ZÑže†;8*ªp¹­m9âa,(ÆB…X³&ÊŒŽ§€Ùã²d$T°`AdGqZÚa^c=Ä T0i“•$@Œî‘Ïàj/ch¢$…\üÛ† Î@Á<~5=¼{/`K+:‚»C €àž*î´û;‘¾hÙÈÆáOa¸`xäã'=jh.-5iEÜ(r6ÈÇ<)ãŸ^Õ*éÞçuIÓ•4”u9Ûˆ¥Šyu+*œ2‘‚¦;Tx!A*@9##ãÒ¬_Á$7Ž ¦u'+0,U†à‘ž2¥C» x ÿ^µÜó³± »‚’„à{v«Z{F²¤N夑rFÜŒ‘Î{aQ0i2ÍÀ +:Ÿ ©4¨šKÈä’xÑW +ZWÁ‚ 8 túT= `úǼŠÀ€€sô?Ò$!1 À§]›KeŽY®måbÅTÄ\0HÉQÇ>§­,w_»F—0ÄG2—Áœ÷©W¾çw=7O——S/W +Ú”ÒF†4”‰HÆOdœ{b©0P I#,ÆHÇ¿ûÖŽ§jÉ":\Gr®"ͳ @#¨Æ+;$A"´¹æÉY#*N@# õ§ ¬RO¼y‡ä?•—NN:÷éŠB±¦l•ÙP¹P€²ùŒB¯VÀÏ'ó&“.‹xbi6$q’:®9©e±‰c&Ú@Î;éK-¼qÛ¼Íyi"¨ WgÛ óÁÈúÓcÔ"ŸÊ¶$yùK±sœž§©ãØV}w=NŸ³q”u(Þgˉ¼¥A$qŒç‚§§SùëøBä¥äÖÅ°$PÀ9ýcúU=JÈGn²%Ý´Çp8™Ër £=9Ç5SN¬µ(% ©Gà€x9:‹š +ܨA<x¥S…ÇR8çÒ†Ç^Äg>´/óÇ|W”z€8æŠwåEˆæ¤n" y‰Î*»9ëž{Ôe<ñ[¥`¹3HIÏAL/‘Æ:õ¨ÃprúÓ€8šØ’èHÍEwl%„ç’J\)ÜOÖ³n®äšO*Üž¼‘U¨¤ÕŒó4±nˆ685ÒÌ;‰^f-¸òNìS$³ŠÅ†3I™ÿ–jˆûžÞÜÖñ’2i£CM·¸Ò´‰µAså(*¨‡'$2#$ àtà欧ˆçº·ÚL€€C´`“ùÿ3ÄqÜO¥éɳˆfÝ‘¸€#¯RjŤŒq»¡@¡å*HAƒ‚@îq€;šs—&ÄÅ)n$—:vÁƒÏÊ£zœïÒ¥ŸUÓ²ÙýžÖKh‰(ŠX($‚qÐõõôªwè·+o A¢‰›¸Îy ±è0AÀ÷<ÓüEq¤Z̶zu¬Ea%‚’ìÖ<‘ΩŽ1šŒýÛ•ìõD ¤šZ:fû5Yµ¾Ò$te©Ê‡;Ðú‚$üÖn¥Ýê’í·ÐcŒŒ©5¹yáí.Î Ë»^ h[O¸9ö<š9–ìM$쎓ϊé\¨š`X¼µ\m@ì 8ïUø炽~Vê=ˆìGB=Er—Wz ÒɆKbÃæÆ;÷uqN—P­ÔM¹$É9<‚NH5kN7EA8½G9r2xïUd9Àç“ÅY9ôã¥Dã ž¦¸ÍÑ›*rN;T–ê ÇSSº0@ úR[¦Ç#Û¥Uô^‰0¹Å<` àaB´ÒrHô5"BJÄ!={æ²åØúšÕ•K©©¬ÓÀŸžzši¡²9ê=óTµ›QàÈê™ú*ûE 1·CÎ+3\Žf³ +±±%‡AϬmre±•}jïq+†L89þU5¹e‰Y€cù€ç(zþGš¤æø’HsÇ'hÿ +-î® ¸Wtfà‚¸ ñЊꌼÎnKá2#Œî–!æ@碫þ}*(ÊØä;àoî7u>Ôõ ªEà^ÖBySÝ íÏ‘ªò²°fÚQ$lH½ãqÜCþ5­È¶¶ÌFÕá€þþ‡üi¥ƒnÞ1¸íÍØÓYŽX¸ãqØŠŒ±ä6  þÒö?…MÇc£‰ˆ´&³lFÇ/ '—×>„t÷¹¥¶˜@ÁÎF*Íì–7‘\Æć¨ü})ßB\fvŸo,W—b!. 0‚pI :ö§Jè¢jÆîîä˜eI•‚~R~öq‚9Çjã¾×p?…ï“J/nû‹ùñ©æ/×½Šåu)d³–i!WÝ“Ž€r3Ž‡  ã8*µÊßÝJÒ\4’»ÌKHŒãÚ© éÀÆÅ#èhû|ÙÏ–„÷àÓS±.•÷,}’ã9òØds‚)ÑÛÝÇ"ȉ"²œ‚§}ª£P›?êÓò4ïí ³Ÿ-Z=£°EƒkvÎŽÕ•v‚r:óê}ÎMt–P[<¦êòKpcÚáFç 0I=@‚0T}î Æk“„ cË\}MÚ2ç>ZŸÆ—5ÊTíÔè5x³ìå`ÅØÜ• +>c»ÈÆž 5Ÿs5ô¶pB刈]¨€NH$ žryîIïYÿÚ2cýZþfí3Ÿ)3þs Ó¾à-¦Î<§öàÔÆÖR ¬2À Œœã“Ó¡5Ô¤Î|¥?ÿZ”jrg&!ïÉÿ +jl^Å +^ÉlÑI ‘06»DIN¼‚9NsÈH¶šXî㸓Ê}£iBd IÉR F5Š5i‚à!¸@?…V”’L`“þÑ¡Ì;u:Ë«;5’çÈÔ·/Ù¤h”Bi>} ¤  ÈÇ¥c[]_Û[\CyK•Q xA$€pG`A9¨<ÖhÕ¥Äxã˜ÒZOùä9ÿhÿ… +VèS…ô¹-Â\Ï3K$nÎÇ$ìÇè£û4øÏ“!Çû&“ûZAÒ1¼Âœ5‰F@ŒŒŽpäQÎÈöšØÝ[†T‰Š67+Fž£Žƒ¥O¦CqìD¬‹nÒ©| @$Àõ9 qÚ©^ByŒþ.sü¨¼œþï¯ûgü(ç¸Õl΢{(’ÖF[›w» Á„É)“¿>ùÈÉäàšË¾ûU–®ZÍ·,E +¢°VÚ¤ŒŒƒ†$pONµ˜5©G>ûgü)¿Û2Ï!צïþµ.o"œ[–nd½ºvi•Ûs*×>»T Çü±pÝ4 fAÒ2>Žƒ¬ÊzÇ×ý³þùÙŸ°B¤w(IXå© +zž`ºi¼ÕˆÆûB±à2AÏÏ­Du‰Xóÿ?áGö¼ƒ?»#?íÿõ¨sljžŒê, ·šÒÚK›–¶b…dgTf ¹$…8Â0€~eÆMTÕí+hþÏ"Êþk¡1`PdÀ †8'ŒÎk ûb@r#?÷Ùÿ +?¶eÿžgþûÿëQÍä_&›–înu¢LÊåŽaÒ@p<9çPi‹ƒä¸ŠEGý³/üò‹õ¨:̃¤@{nÿëSçv#Ø+Ü™¢¹IEªTŒ§9éEµÔCE dbÊá0Ù8ÎIŒ‡ÔÔ?ÛRÿÏ%#Ý¿úÔ‡Z—¨ïð¥ÎÁQ³º7´¨™¡‘.ÜÆcq&çT¦2@çqÚGºŽj]JÄ"\­ð‘ctc(s¹‘Ô è¬1Æ3Ž£<ïöÜ¿óÉ}þcÏéIý³)1)úŸþµÞE¨;n]–mPÛGlÆcEŠb0 +’rp@óŒ‘Òªk­Åš)I'’AÉõ¦lIŸõ)ùš?¶eÇ0¡ú“G;!ÑMÝkK‚N |wN*Aoy$m ÆÅ\ùÐc¦ ïPlËÏî#í“GöÔ  Aøš9Ø{ͽ2”‘¡¹™„RG…8\[, ñ¸ ž¤•®,¬˜¢ L`VBʪåA*J€‘ž¼â¹8õFpJħ=Fã‘úTé}#<¥z“K›ÈµÜ‘›SŠ -Áó\3íH$d sЃÍS6·NĘebz’ 5»§ÚÏq—š%Š 2 s}øÖŒZt ܃§øVrÄ% }_›V^Óek2•JÈk† Ž?¥YQ†<ñéïL†Ý-¢Ø…ˆ''qäþTãÆ<äWÕÝqVV¥¤9¢Ï;3¾\R dô'ð«;FzqKÓtM™[|˜SùSdºhÁ,©«ÀGµgê*¡H“ÐZqi½IwE9nåœí\€{õjÒxí€Ìm»ÔŠ,8È.rG5©kcÓ´“[HˆÞW‚äòsÜ÷=†O¦kKØwÈ —)û²H‚"?Ö°êHþè=}Oµ^YläWi\¼ŒrÌrI'Þ­^ƒ=À-+$€~g&¦´Ò£»c”X¬­ñç\7MǪ?‰§lŒöÊßD?Rî•( èf´Ú7ÎÌ‘´ŸNzjÓ¹HÖ݃ò€r Ë:±é“Ðp1ÎiCnûd)Š'bÛY·0ûôëQÈ’ÙÈÈòÛ|È@ÉQê=½¨çŒýÆ.Wy¦â{½@Em +¯‚ÌpãÚº¨ô‹U”\ß¼O9$“€úð:ⲃÛÙ¸‘@k9ð‚¤ö>þõ§#Å mÑaÉ5r¼#¢.wbø»©ŽÕDJ,áY3µ©f ¹$’ $“Üžæ‘<ëÃÞ8s€=Æ®ÅDƒj€{“É?rÎr–汊‰Y, ò¶ÉrÃ7<Ò¨éŽtmaô阛[€ l{ÓñŠØo¾ +Ëñ³M§‹ˆÁ[0u#®Þ„#øUR˜¦®‰£2ž ãð¦Hzf™ct5 .• ²€®=ÇJ~N0¨©IXq•ÐÆQ´`sM Éãx©€ÈÁéœâ´HÍEÊdJäØ©UèxÏôªò)Œã¤G+r>”-ôŽ¼ðhSÔ3ëLW ½;ñORA9ÅBrN3ôª·¬J/©$“V_ƒ´’GozŠTVpÉÅ2ÃpxëšQŽœäÎœ@€0JX×Ǧ1ƒLf~£d$G’0Ià°ž 1Üwõˆò%ØàaÀèã×ò®î+hö‚AÎ:X ѼolÔìȃø}DZïé]ªôf…õG>NÁÉå'¸ô4ÓÛo8É\÷Å) ®G +NGû'ü)ÎsÆO>Ç×é]71 2ã=ÇqøWQá[´™%ÒnXåù¢-È 9ŸóÉ®\äCŸÈÿõêHex%Ic$:ÊGê(ÖÉÆY%¤†ê)˜cNÝTzUðbÕlá¿ŒÎÈfÿéR%œaG-Ò¸j'X錓Fi‚,å!9þè¦ x3 ôŠÖ6(AùˆçŽ) ‚’0ÍÇN•e+«klùHGùED|z¨¨Í¥¶ð|ˆòF~è­±(OáQµˆÝĽ(»c1,mˆ$ÛÇÉþè§ SÏÙãÇû¢´ ¦ÑÝúcšA3úPÛ "‰°´#"Ú/ûäShs‹x‡>kQm·ulgÔR‹.>øéEßpÐÊm>Ó’-£ã§ËM:}™ h³Ú¶ ‘'—ãÓÃdA8àzS»î +ÆWöu“>΀àö¥ežm“?Nµ¨m#æyÍѱÞø¥wÜ,ŒÏì» A6ÑŸlbƒ¥Ø†¶ž€ +×dŒ—^}i £daÁéŒb‹¾á¡–t»xµBqéIý—büzÆ~ƒ‘Z¦Ñ°ážØ Z¿b9ÿ +W—p²2•`[‹t秜t›3öT'°Ö‘´u#‘“N6®[;”wâåÜ,Œ‘¥iáI6É€}J_ì› ǪG¥j W8)ïÍÑù$Œus>ádc*Çv ²¦içH°'‹dätæ´E«‚9éœÔ‚ÙÀ üö£™÷ #%´‹ ¹ÈõÍ*éÛ'•ªm_|¤àäÒ WìFëžÔ®ûŽÈÌþÇ°ÈfN”‡G°bÙ9ã¿ZÔ6Ò0Wñ45³äAçš|ϸ¬ŒÅÒ,0Aµ\Ž¼hÒ,€Û'=zõüëX[HãN6ÎUóÉ£š]ÂÈÉþÇ°#Ù3Öi9¶O\‘ÞµVÝÁèn´5³€Áçš9Ÿp²2Æ‘`åÙÇšA¤Xc›TÎ= j›g ÏN´y0çG4»…‘’ÚE†8¶L}*94:N ¾ßub l›wp¤ò$Æx¡ÁÇÔ¥Ü,Œ!á}81$Nxà~•mt›8HòâÁQÁ,Iñ5¨ | ã æƒã ´œþÊ)'»6ãq¡Èüõ5:*À…‰êXŽµŸdQSrœ’A,z“S]ÈJ3ŒóX[RŠÄï$H¦OÏ8>¤Æ ‚êKÍn,ÉÃFÃ,žÄV¥­¸wYžxµ>æÊ9äóš)±Ì‹ßØŽ„WD+ò®YJŸTOgumwkw\Êœ*×#¨Á¡®f}>HÌ(ж×@2§Ü¯QøU«}Fö%Õ.q•<þGš·JÖ$©¸é#]²NzÍ8ª8eeX ÷¨¦­hH$7£*ÊÝ[H…’áH8èEe*[*‰£Ãò;UŸN¸$G!*3Æèƒ] ¡G*xǹ}Vkk½F3k1'‚#æ©Éàä~UÑØÝ GNYÀÄѲ)‚8ý+Zs‚}IO•ùÎ:‘IÇ"¢Ü*Uû£ÐþµÆl#.AªÎƒ'Ÿ§lž@¨Ê†É úÐ$S#'æ¬Á&à9ÁHÀÏž€v¨´D‘œÔíqܾäÆ{Ó%ùSÀÇJ‚;…f‘œgêYÈd$äV°û¾lôÇ,\cP°Ë:Ž¼Ô‘œÉÓ«;œw§7 ‚9È#éQ@ùg‘R×'ñ¤IÆëšX°˜Í +“k)Á^»O§ø~U’F¯÷Ðÿ]ìë±´r®øÜaî?ƸÍBÉì.LLIBs‘ÔžµÕJwVfSµE3Ó‘Ž¾£×ê(çß#óÿëÑŒœŽx‡¸£ŽÃŒtöô­ŒŽƒÂš’Û]µ¤Ç\pþØþx®ËiBTã ãŽõåêJÊH`rõìkд@jZZJyš AžHìj*G™]n\™{#“Í4。3Žô™Ïôã5Çst‰c9p©äòëQ¡ä‘ÓüàzÐ&(#4Â$pirJc7ÍÔ}s@$#œàÉô¨úƒš{7óÍ1p@>ô õ.jU·ZoðƒŽ‡¥=âšìqëžÕƒ<ž¼T‡9Î=©„äã&€B3Ú€ã<Ò”ç‚0G­Œ}hF +ŒsJqÇÅ"`ç¸âœrFxÁ€B:ã4.’:i9Ç^Ôå ðB9ÎÆ SœçŽÞ”0Ï=³Ô”)‘éÆh«€qž)àþ¾´Â $ΞÛÍ Ü ZQ‚}1ÈÍ 0ryï@ g'· \ddyü…40 8è1ÚžÉc=©¤HÁÎ(ÁÉäò{qF:œƒŸjpf”×úP–È#§sšg9 ä¾´ìnL¸àÐBà`qšR¹S’O( ƒÔ÷¥ÉóÇjQ€ŽÄcÓ­ @>Ý0)ù±Œ})Äg­‚F=)§Žù9Å<Àç¥!Rp)…ÁÈ=©YŽN¸æ“‚ôÏ zÐq“Î9¦“‚x={wŒŸoJÛœÐ1ÀÁÆyÎ(<ùÇcKŽ„€i@É=yæ…¨^ÃH#ÒŠ^Ý{Ñ@Ô­´mQ’GaI*¸y[ùS£U ÌÌ ÈÏO¬[[}¨¼’È!µC†Ž§uGr}j“o@z+²ãk†# ä’8üöïV•cUU Œ€z“ÜŸRN‚žÎ›JĆ(Wî©9=:±îOä: +†N¡1„vÑ|ÒHFF9äúúÜÓ¾¼±#Í“YÀ.I¸¸%-#ë’Äôzúz´ë×7FÁhŽ1Ñþ§®jY¦mHÓd1ŒF§¨ÉÇ=ý:U«Œ-[¹ê¤Ý½Ø‚Wweig’9 qI'²z•M¹ˆ£I’y>õšƒåA“žIïPµ²Hw3ŸqJÈ¡ž`´˜ímÉœã4鯄Ž~ïsJÖéå•9ükw–Îè$¨9Éô«ŒT‰½Žª9%\ÇNÕnÍ¥ºD¨ÆK€zšË²¿F¬:ô"µ4»ÄkÉ $xÁ_|‘úÑNÓ³ ÊѺ4X[[¨Ï›;ò úVmã[J û«t ƒùÕë°Å)p +ÓÚ²¦BIýÛqé/?λ”#Ž7&÷(HÛ2² ì$LŠË¿”6U ‡ˆ`ŸcZwNÑ!Ιõ!¬9>w-€I=Tãô¥&8¡‘+4€$烎GÒºm6íà“íè§r—‘ãÐH¡ïï\ô\8È~¾¼þu© ËZN—‘ïfPã‘xt=A#­(³Ug¡Óê—&Ñ¢-üûI—rȃ•=ÔëUàÖ,e!K˜Û¦ŒSà6â +±“J¼¡làÄßÜ'±¥`jv¯ermå‘_(d\¡~´å½Ñ +N.ÇT®’.bu`G<Ò@ÁȨ5Äo’ÜîG’؃¹OãW­¼Cue'¨çŠç•ö4NçLÃ=8=ªŒsî}* MfÊï?–Ç‚¦k@ e%NàONEsÊœ¢j¦™*2>@ Žþ”‹tÈà´d$äp}«6â®HèpM%æPã"³`àg¿­<Ç\ç8íTˆ pqÅIÌqëCˆîjBø9`1 àŒV|oœÒ®ÂëÐúzTXÒ§q‹P°ŽþÑ |êŽTúÿCVÀÁ$b” ƒ‘ÇLÓM§t \óÛˆ$·ávȇ =Gb*1îyõþF»msI[ûq$ ˜ÆWý¡ýÓý+‹*TA0{à×d&¤ŽyFÌAÁéøz{V§‡õ§j*ÌI†O•Æx ñšËǦqþ•(÷«D“(K…;€Ê{z@ÀsÈéYþ»7úG–ç3Úœ{•?áW“ÈÏJä«YhtBWE”`O'S‹g'UÐO¯®h$ƒÉ8?¥grš&.9Áè*&pÒ€OCÐŽi„3žÔ!wnçžiÑôÏJ`<jh—åæ²Bxý)èr L#å>§šr‚ãL‘äñ“ØãŠa'?NsN9#9çÒ˜ÙÉ>ýéÜ Ž:qÆ1Ï­0’éÁ œƒÇJ.ŠFÞ”Šs‘éÅ5['õ§NzPéÅ( IÁ t¦ƒ‚Nh8 3éùÒ$•$qšD'9÷ëJXí8cµ1N æ¢V;X~4¹cҘđœŽ?•&N'½°®Gn{qM yÏz +“ŽNpi½zg9üè)u…5ŽXr;ŸJFPsßÒƒÈàÐ$…ÈS‘Ôqõ§Îy¦yäŠE gۚÎsÉ géJ Î3‘Æ;SpFrsŠÎê(`#1$ûS³O'Ž)ƒ‚pOó 09Ç¥!<Œž¾Ô¹‘ÔR1œ~”œyö Vö=(Ï'ŠRB2@ëI‚# Ž3@O|“õïHA$r|S€Ç\Ò”€AÎ3À9&žË‚[õ¤$ç¥8’T ÐTn8ê4ý£¸éÅ!8`ÀGJ†G\Ð!¸÷¢—#¥î3„€g +ÎÊ Ë0äþ½jI˜Q2Á +Š[$zŸ©<šËƒå…›¡cÇÐSÁÈ­úXô8Ê×F˜™.\"¸T'’Çî +¾Ó)Š(!M§$®ØûÇúÕ‹knÒ°$€à°#9Æp?Æ´’|¨ŽH'8ÿëÔ7Ê´9*ÓŒv,¤‘cv9n©Éä ã$’{Õõ‰Q0¿‰=I¨gLç#ŽEf™ŠFpxœT à?2)²!GÁäg=( rpk¹,~I9öªwö‰qÀÃH5oƒÎh#' +IÙÜM\çì§kI¼¹2p «—MòM UF?jË£­Êä!ÆF"°õ²Ý´-´ ÔäZÂI½ ’²³:­?V‡SŒ+”[0C’¢éB1WKpÞ‡#õÅqjÅ2±t#¨úÖ厹¹¾ ¢Húî>†ºyî¬`â®:ì`ªÝ#ò¬¶Á<•?QƒZú…Š!unÞm¹?yFJýGjŠ!k:Áî7`Ör›[šF)™€ÎàsVíîLgå_ ÈüªËiÐ6J¹_LjÓeS˜ä SƒúÒUr2î™}«5¼Ò lî]@ÁFÄ~µÐÜZµõ™´•Îƒtã·à{úWÑ\Æ¿½‹rú•ÈüÇJÝðýù”%œ­‡0·R§ÐúVñ’zQçš1%¢f)*ÛN@#ÔvªŽ¸ù€ï!þbºßiÆXÛQ·FYS p¨2HñßÚ¹9?0Áÿi8?ˆ¥%c7'8ļõjËV»³`b”ºŽÇ¯åU“žú¯}E0ŒóÃc¸àŠ‹–ŽÆÇÄ6×xIÇ•!ã=³ïWäˆ2îROF"¼ûßïc¸àŠÑÓµ‹›¿™ySÈÅg(FE©4t2ÀT’: )ž¢®Ú^Úêh L«&9Bzý 2X +1ØûV.;š©\‚0PdNÕj)A<œÏ5_JSÀ8úT5q¦ià l}ªÀ#§ZÅŽä£ ôý+Jƒ¨ç'6±e 2"¹¿é_zþÝsŸõ¨oïç]äsÁ•.b ñ‚2§8»’ÒjÇ›{玹þ´ +Ø×t£e/Ÿ +Ÿ²ÈÜcøö>Þ•“ŽyãúWj’hçjÌÙð½ßÙuˆƒÝÌ +0õŠì$O-™2~REyå»çÁÁVõ¯Hœ—u`3¹â**«ÂåAÙF -ÏS™rzûT\gëN*zdcÞ¹,lÙÂ'éHÊF2sÇÞ”™Á\åíÓ4„czР’@Áï@$A ä8èi +Ø3NÚ03Ú€pÇZ)6œôâŠâHAZ±klee,Œç:ãÒ¢Ž5ù’ð Xÿ€îi|ù ä10;í[½ú•TtF£¸,b„('’T`/åSAŽ<œòIêMU²thÈQ‚:ŸSWTö¬e¹ÄÝÁ³žãŽ´Ò8àŠVbæšx98>Ô„†ü,pAö¨%¶H³ŽG5‹n;ìh½íŽv-jæ ª·n˜5u5[9Æ'ˆÅ/Q"ŽTõïS\Y¬€”CzÅb]ÚM%¡sÕyÕ›º ¸»¶—®‰ˆYÝ €mgv@{‘Û?¡ý9ÿiÂÊv¹¶Söv9*:¡=½Å`CpðHIv®’ÓUŽîÔÃ1ÎFÜ“Èö÷֥̬ÂTÕOz3žÜA÷CϹz[8m¥e™\DÄ•’>HüQùdÚ|«šK¨%ã9+õAúÖrÐĘ̂p{çÇRg<ç8î#ê(=òGàEÏ9'ÇQõ¤!ñÈѸtb¬øWM¦k‘Ü‚û‡è$ÿQ\°ã' P8?ZQÁ§ ÿ +4{”vÓÂc`r +‘á “Þ²t½i­€†ämÏ=G¸ô­¹#G‡Î·2È#¨ö#µa*}Qq—FV* õëL[—¶pÀes’ <`ƒœæšÀ0 ŒœóQe³4ô6,¯£¹O”Œ€2j¸@ÇPêMq²¬¶¯æÂHÇ$ÖµôÝi.$§=ê\mªfËEдS hÜÊ{ñ®TÓßN¼0±,„nÿ¼¿â:î¡!”`‚|Õ}^Áu+ˆfAº"G!‡o¡~Tá.W©3W8h´Šä1øפºí©<¬J×ÄxzɯuXSjÏÇ@=k··Lìº*i(ë!¨r¦iÄr}1Þ’00O_¥)î?*ä5`@ý;Td àg­IíŒö¨ØüÃ#°'Hžxý)™ÁÉëœfœ `Ž´0bœí"š­08R“œ÷¦/÷ç CÁç' =駞FO4î8Ï$Ó[©Á?JhÑÁÇ=…;9È)¤G¥8ž¾Ô†'9Ï>Ÿçó©Aö¨œðqÓÞ•$–òÄFô8=äƹHn3ŸÈÿõêýž¯wj6¤›“¡Vçô5.)îRmRFÌÖ%í»Á'™ Žx­huËiÈÛ[Õ3S4«¥Á–E¨À4”ÜÆhš«H» ÃŒ ê+¤‚u”eNíß5ƒe¦é‘N²ÄÓÈÀçÀý+vUøäþt}^îâut&°±†ÀNñ¯ïn»î‚súÒInqš˜’’sÆ*Èǵ†’QAI_QÑã=iÝM$cwõ¥Zå5éøTOËG#šŸQÍFàç§N´{uÍ8Ïa@èö¥Q’G4°ãëM¦8Á§íàñúSƒž™¦®qÎF9=)I=ˆü©FO|B3ŸZ äÏ…§Š_ÏŽ(ŒpNxúS°À€@ëžjHÏÊ9•ÎiX±Ÿ˜ƒØR¸`g¥5q¼cŒÎžùÛ€2O¥ Q€r2>¼ÐÀ¥"‘ŽO9§H´ VäÞšI8Æ1ž´¡IdäôÐxÇàpA?—½<Œö¨ˆÏ¯LÔ ‘Çj pqÛŽÔš<÷šVåwô¦¡ =ùÍÐ@}x¥*s×Ðõ ðØü³Oã=? +@F@äô€à‘éRcŒžƒ¥Fq“ÆhŒÎx¤zÇJÁ?‡ ~´¥¹à`9¤'‘“’: +R”ÕnpzŠw\w4„(Ær8Ï­0OLóN'ÔÔd€ÇžzóLhãÞ¥SƒŸÂ¢äÀ”ážI=hhæÁ#€95V{nT‰98« F?ˆ¥RqŒñž”+­‚Ú¶¡áé#ËÛ|Ãûµ‰$lŒUÔ«ƽ’H$Ž•NëO¶ºR%I#¯B+hÕèÌÜ;†“~öjùùO B+£–È®¡f¡­eÆàÜ'±ô†²oü=<@µ¹2§]§¨©4k‹›x¥E‘X`“ 0ô®ˆÔ‹Z™ÊttÖš½Ê# +ÌB€xäômÈÔ¸ÏQ\TšÙo9ݼ¾4d22õÖZ\‰b@ϽÂåŸäŽ=ð?Zæ©âkV¥ƒ‚pA´X€{Špx¤ÁÓHÑa±H÷'5=­J@2=ª3ÎQLHpôãŠC‘ƒ×üR «:Æ“'·\t¥äŽ)Â88çƒ`‚{Šrò9ɯ4Ö*‚®0G##µ(áŽrsH„) +A#ëœR°zg­Ôpú +)¢XÀ$Æ•AÉœŒqEØÉ0F:cÒšØÛÇJ(¡ŒdûšzœóÐ÷õ¢ŠÉr=iFzæŠ)tÔ|€SÖŠ)¡ :zÓòOAÅP F<枣 tÎzQE N;vÅ ‘ÔâŠ(¹çŸÊ˜ÖÜ M·¸úQE1±‰¥ÂXæ>j1 e€ýNjÔñÁ*ò¨\ã¨O¹î}h¢““bHy'š ôǾh¢€'®ir cŠ( Àý3FÐxÀÅP€a‰Xဠõâ³ï´x%‚Œž´QNö1'Ð#lím§Ò¨M¢\G’…XÓ4QZ*’%¤V6÷> endobj +7164 0 obj << +/D [7161 0 R /XYZ 283.093 402.111 null] +>> endobj +7160 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/XObject << /Im6 7151 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7170 0 obj << +/Length 1311 +/Filter /FlateDecode +>> +stream +xÚµšKsÛ6F÷ú¯¨…¼Þ¥Vì6ítšJSg&É–hK­,ºzÔñ¿/( h°iÀ+Q"uÏ%õ ³Û fƒŸ¦ƒwç˜g +(®_¦7".3®à +eÓyö%Ç1!aþ~8 æwåfˆd^Ôï¶åýb¹Ý-gW»b^tX_þ]Ìvú›‚J’$†ß¦¦ƒH73äPe³»Á—o0›ë•3ˆ’ÙÃaÓ»ŒP½)ª¾¸Ê&ƒOhöÂSŒs ”êS¬]DUE’ÒP½¹îš1SÃs8)H×àLJÌáücˆa^nvÇC 8IBÆP E›üsq5/6®@«D`!åª >+W¥‡Kˆ:ÔJÁ%”Dp›{¾_ÏvËr}Œ¦úøp”æW¦ˆ¡ØÓ]^¯á¯lØ•žô¯iÀ“w]ƒS™w$“á>’óÖ€¾¸ëß +Qˆ1ìz<²É¹‹Dˆ'@Ú„»ÈëM9Ä,XRnBî¢ÿü>ä;ÚÄ»ý<®£]Þ˜ˆ/Šª ]ndÒZo7a‚}kFÖ‹¾{´Ð%ˆDqZ0©Ï~ˆ§ñ* 1^ N/R01\&î# Óšá2o7űü±[ŒèÆ = ™‘‚ڨѢ¾µý;?v£ªˆt£úG`8‰LÀ¨2nàn70­-& ¸‘‚iÜh1¯WW³b$àZ1ÚÜjºßíê‘ÑÓøÌ͹ì$`O‚Ö¬=­Ö&—°¶æ+dð~¹®ß _ŸÛ‡ån¶(¶Ý +é¨[£Þ»àшêõŒDj¤ÿ=„L3ôb¤Ú7sƤ[£ÌF#—I¥`Z\æFÏ:»%J@m$r©ŽD‡ŒžìïCÂ$h£Æmcr‰<Âà·¦÷.x„Ñ5˜ŒœšÓêÓ4Â@ 6“¶1í&³Æe²na’0­0.SÉŠÀL%·QÆå>sÞy?> ”¢«Æ ·«É%öDÞÀ þ»plPUƒàÈÉ>¥ +`ÄÂ`½-zV Êõ!ev²ÏºŠGZZHð'ÒèÓB^¯öEÀžxª•§EýíC`6“jÝx +}ñxLo»­W¿D…¾ {LÐ%`xô0 +Š$&èWJ¥1w›lLp‘"`B¤5ÁEV¡8œLü¿u£D<¾QÂÅÏV¥ž?Õ“íý.`G<¿±ÃåëÄ¿xðÕÏŽ¾ {ìÐ%ŒœáSS2‰Hÿ€ÔÈ!ºåˆ'6r8Dp#ѺáË]è,Om”p¨h´-fåzÞJ ·²Brµ]4‰ï©ÑÄéI'ÿù%}ûõX«í#ç#DJ€_qɧ QH{éâ÷q§() Ö”Tu«ÒŸyü}Ûä·úÞ¯÷[ß…›î˜æm\ª0öNz„¯Ò¤E(@í=™¿ÎκÓÏlÂâ2 ¤¥/Ó–ø¶›¬¸m?›•×·ÞDEÔP¼â‰†§¯?J3Àtú ú7=´§¹ºa%i½‰³\¯4ß4¼ûåNdãR£>Ùê#§¼'$y†ÂΠϗ·ûyDœGÁürHa¾Ü,×·ÇwC “é¯ ÖñéÚqï£"JÑ늫½cÏDº¹H7㳋b]l~<Àb¯êMûza\Ìêj¦@ð“S$ÍB³tS];/7õ›«êÍ›!ùhµ¼6®MÉòûã­¹ãìòÿ·c•‹ +endstream +endobj +7169 0 obj << +/Type /Page +/Contents 7170 0 R +/Resources 7168 0 R +/MediaBox [0 0 612 792] +/Parent 7158 0 R +>> endobj +7159 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (largedemo-wiring.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 7173 0 R +/BBox [0 0 210 116] +/Resources << +/ProcSet [ /PDF /ImageC ] +/ExtGState << +/R7 7174 0 R +>>/XObject << +/R8 7175 0 R +>>>> +/Length 58 +/Filter /FlateDecode +>> +stream +xœ+T0Ð3T0A(œË¥d®^ÌU¨`d`i4445S0Q0Ô³3ˆ —|®@ Û] ä +endstream +endobj +7173 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172331Z) +/ModDate (D:20081204172331Z) +/Creator (pnmtops) +/Title (noname.ps) +>> +endobj +7174 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +7175 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 523 +/Height 289 +/BitsPerComponent 8 +/Filter /DCTDecode +/Length 39054 +>> +stream +ÿØÿîAdobedÿÛC +  $, !$4.763.22:ASF:=N>22HbINVX]^]8EfmeZlS[]YÿÛC**Y;2;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYÿÀ! "ÿÄ + ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ + ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ +$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?FR9 þU¬>ËêXëý+d¨eÖ&ºªgä‘BZᥬ‘×UÚ ‡PÌVR ”)Ž%VŒ?Í’§AÉê 9ç¿—Ì¡P@* Éïϵ[ÖeoÞ©FÚÒŒ4¨$áNNGNÇŽ*•Ë‰%vœ;× Î(®¤°liÁ¿ZÞ #²ÐáÙ1oi2ÀÉ– ót#ÍÇ&`1±ÎrqüÿëÒ¯í¤dKd`[ 3ã¹ÅÐ$ek)uâ v÷Ãæû<ŒAÈàñ’ÏaÚ¶®„^·•g%³E¦HÌÏÀ|®OvÆ}{Vÿl“Äsùו‘·:ã°¦:šÜÕšñ$ÔEäÉ'—§*&Ì`tðIÏ_JhÍìXÒWMRÊ¢/ŽÐqúÕð ‚q÷‡\g˜ÈºuÌeCÁÓžDh:~TG›¼€ªA'xÆFF;õëÅk¥Å{YÞ'¸Ž &X’P“ÊBª‚w0ÈÝéŒçë\M¬N—1;) +I'Кè|HÑ=ìrBë (H äd’8ü« ƒpKc=9¬''sx%mNøjºY$ý²03ݘS“ZÒßÀGpd#úמù®ž¤za”ÎÁêi©¶7Mn^Ñì åé`†DFÜG¨Ïz×S§©—ºÞ *ƱÐ9?^õR ³™°²t¤y²Ž¸#==ë Ó,!°´7/2òƒÑúôœ–ÇM;Ÿ¼ÈnœÈë¹v" "œSžüUBV··…×›vß`þgôªš¦©‰W,íÔúSmm>Ó3MÈPcœÿŸZçi»¶z3¯iSÕxBÔ­»Nàîsœš~¯1¹Ô„c”„`V=jå„ð[i„Fà²/Ýœý+.#/"–,Nr >¦°ÃÓs¨å$x8êŽ^êêMqk±–I‘K,lAnqÁé^m0 ( @5Þø’ùí¬ŒB0Ë(*NqŽ;W 0pppÏèµmN<±±ën›i&h›ÆÈ’m.Ø-€IÆpkI£W$1ÝŽÌã?QT4âï£éå€VhT.GN03éW`YÁ +BÇ󪶂ëb¬Ú]»Â(‹™ôªbÊ8\#aÝcP0+r˜ñ«Œ0Í …‘‚‘Áúð¬í(ίu$@•¶(8'ñ95¥«çOÓçºäg˜ðæEQðŠ²26@–'¾9&¸ñ’÷FÔVìåeì¢WT(À¸äð'ž¿J̾ƒÉº¹„ñ²G\Ø$TšqUŠv,l%N:žÃëZU§Éf‰§.k¦[}z÷PU[‡d*ÁFŒ¼òp?îôë«c§ÚGݱo)!g8Îsšó;DbáhÈ ±=8ÿëV–6ïq%á‘HÂœ[‚HéøÔRŠ•ÓaU¸êE +üýÍßÝ9ÁªòJ-Èi®p úÓäĪçk’~l«12 ñÁíUu¸Ëi¬Ä HeaØtþF’Zؙϖ.H£®k¯ad'³04…”s¸`ä“€Aíë\Äš“©[ÆHÚ_4ÊW¤äœc9ÇÌ^›©¦ëuöqúäQTeAö†·ÚO®jf¬<5_i³@]ɨ\ •QY ‚TÏû£Ÿs]’¹’‚2sÎ8ü…yý©Eܬ˜<Ž¤Ÿ¯µtús!‘Ìr†Fü¬FBž~£éN)4&ã$’6¾|à(ÏûßýjŽèÈ–SʱîhаPzàg)‘ÈÞpRHR=zzõ=}k›ña5"Ã#ÍŒ1Çr2ò¥î£«IU—-Ìç—tM·n1Î@,Iþ‚°ÃgƒƒøU­å,gRy$/^ÀÕXcÞ óHÆqš‹Ün<®Äl@'qíW¬`’h.&Œd[…fÐœõꌪc®å`9Žj匲Á”fU“å` P?Ö®œœ$¤Œä“VgYámLÚÞ&OîäÀ<ð+ªñ~–º®Œ%A™ ù×Jã‘ùsøW›iòaŠ‚r§#žkÕ<;x/tÕr@ÚÞõß…Ôj£š„¹dàÏ"––†lœ³2;gôª*?1`=‡5½â«OìíAì€"4o³Ûùþ•Ž"ŒFÊ¡ˆ$.O·¥y§`ÈâUpà“ƒœÁ®£Ã'˜ã „ÝÏô®v…K4Š¼ãæÍvºQ.ƒi,G&RåÇ£#ùXVO“B ×1e†= 0.2 NàœTGä÷®­`tõ¦)$àç§qR)H⛎¹8Á§`ËŒ:š<‘JFA¤^Ö€‡Iºž@ê}i˜ö?•Fӈʉ)*pH# ýæ³®¶Üj¶l̾B8,Äå@È'8çµR×0º¬‘Œ~é"‹þùAýA¬úï]tñJÆž§ Ó@#ŽåfË·™ %N@< HÀÇ ãŽµFšÂ%s=¾ó _,¶p¸ÎâGÏŸj¯œrOâk¨ðÞ”#ˆj×ßeûVfMå†q0pCêyæ·±œfÎhØHÁ0œ‚¨þ}+£Qc6¶³ÜÜ1³ŠãwRO!ÆzŒ±=¹Á­æÓtÛ)&¾ŽÖ;‰/ +­µ³Æ‚@8 +GX’jHm´Û}ÚÆ6¸¼¥›b ÄçÛ•‚ûòZÃm½Î+xñØa`ÉØZEÈà çýkfò}5T[v­ÏÈÀ–Ãc““€ë[‚ÂÖòÆhntøf¿²:DD&^2¬ +ö`23À ŽÕKÄ/c¢é`³¶…..T³gcR0Næä“ÈB@ât­d‘ܨ•"Ý)`XîÞqŒŒÚªßj©t¹¡Y„‹¸l + +Iœrp=k—äõ4ÏSNí+Í©sUu["(Pm”œ1`H'$dð:ð0*‚ñ˜ÏÞrý;Šµª¨Ií†A"r>§ü+2yvøô¬ÞçT]Ð’8'jž{ššÖv +€äõ5¼M+€ äõ5ÑØÛ,( >¦¢R²ÐíÃaGw±wG°ŠI1G,OZ‹]×D’-¼#l À¾§Þ«êw¯ +ˆ@Á*úóXd’I<“×Þ”Shß^0j0èi„µ¹ƒµ$ç­X´Òîd˜$2'î’p aÆD$°lZÝ^X¢É$lО¬FGçÚ¦Zis“››RìÇPÒæÝDIÆC/ ¨­M;[ ÊžôëJ æVIq(\õúÿJË×íáŠ$š41Îd +ØÀÜ$œ:=zÕÁ4®sËWï#GÄŠº…ˆ6ë"²Ä*‚§õÈür*ë:2ǧ#ëZV:¼¶Çl™dÉ­±c§kqM©8$dûâ´R¾âå²-Câ½2+ H—í ñFªÊ"à¸<’;úu§é£íûI”¨Ú 2Àdç€Oå\eöŸs¦\˜®#*§î¸Éuãò¨o²²@ÓmrÑ‚¥x‚FÀç ÕsÈ·=_Kº{í.ÒéÔ+ͳè ëlŠµ“ØÖ†îÓûKTc+y-Žþ u­y.¡K¼€"‚ÌÝ@dŸÊªÎ×"éèrÞ8¾É¶°SÔùÒ`úd(þgò­]&Ãn†ÖáŒfhØ¥÷ë\¬¬øŽ[—3äÙ{À+£ñ´Ú5”Vö }®e;[ˆÔp[¹àvàúW‹­]SFéòÂç'®ØǤ̶‘Þ ™€ùÕcÚ# ÎO'ÓµA¥é²ßÜ*¨,Xä“Ï~I¤Ó¬'¿º +¡¤w$–$’I<’kÑtí:=2ØG +«Î@É'‰ôîÊQÃÇ–;œ‰9»½‡éšlZ}¸D¹žù¬Í[Ã2jBu¾ÚÆÙœä¥t€`sÉõ£å’pÍyí¶îͶÑqðT¥/â/žsžs[:&³y“G!ò)Á÷­Eš68 3õ©ϸ¤-Êa¸>[¡ÎAÁa{Œ`f­ŒþUÆë~$Ô’ýá²h­¡F*¬Ss¾ ò ôSOÐüG|÷±ÛêTÉ) +$TêIÀÎ8#‘ØSÔV±‡â{o/_¼Úƒã×* ÇãšÃ]êXl`þצëZ¥õÀ¹‘¦YJ…;@Î8 úÖaðզܙ'ð%Ïò®§:s‚MêŒRœ$ÚG +Y£`rƒÏ ŒŠ¹ñ¥œ‰¶0òà‰ Êè8äƒÔWGq¡ÚÄ$-$ÁUIRXrpO÷xäb¹Ibò§hð_c²{ó‘õàÖm›ºÔµÍQYèz –¡i5”Éun"S2‚00F gëB{›K:U[¨Z3‚%SÛë^M.#w,±9#À=±Qy‘dt9îW½bçwr½—ºã}ΛQòŤ˜š6ÈÚàœŽGö¬–Q´ `úôJ»í·'qpqßZóúW/â1©®0À#n:»(‘ûê’ÕXí…š™UÇÈÌÕ àžA“Ö±^]‹–’Nx<ï<'rmõ'¶còÈ¡—ßüñ\,଀Œuã»[DEN¾L†ò°Oà€Jôã5,?+8eUºñ2Ã?d¿QÎ NGæ?­pp¼J­æBenÄ1¯^ñU²ßø^ã%Í^ø#Ÿåšò@²[•‘ ¸cJóNÍÑ ŠÍæD\ÀŒê¼)r²[ÝÚ¨*#q*)9À<}ˆré&×,_çê <Ÿ¥jxjá¢×­ÖF8œOo¼8ý@©jé¡^ÎçcÛ‘Q8HÀ«n G¡›À5æZÎÇjî"HÅ ;±ž) 9ã­9†@'½!êxýi‡ óëÍHF2Aè)6P†G¸õ¦®G'qÍ;m5qÞŸÏ¥ 2nt¡wuvg“2É,¡58Pî erHF Тl-âž[Âó":*À‡!ÆWç’8ÆjôBêâx­-®|€tõ’l(9ÜY±Î0H”ŒäpMSµKéuÕ¶Ž_:ê`…Ã`.Ì€GN;ú×±±äò“Y\ÙéSL’-îâB¶ëuW\0ò@9ŒgœqZp^ß  †ÞëQ¶[„/6ñ”Ú«’À±ÎHœÉïžysçË|Þc—¥;›vrÙäçë[g©¾­g Nàs,lÈ"…Ýòž¼1ŽpZÏ>¤×ֲǩÜ–¹6@É +)Lì$€20w ðªI5΢¨O%³oš\ `r@eÁ9 €qÀÀ55“K5ƈò;4²_K34ƒ•1Œ‘Û*¬wðŽ^Mª¶®cóÓ~ Nõäò;ç¾(®mÜýª ©g{ëãïLv«Wöó¦‘ ü·óÊ÷‘•f$2’ÌW9ɨ'<k#¾h!³[OÓíµÛÅq¶ »ƒÎ ’Ç !É$RØYÛjzÛÚÝfWS:†ãÁÙŒLdþu“Ì‚îKk‰áDKX†rxUÀ##<“ØU"¼û¥ÑIÚ)\‚ù# ‘Ðc9ö㽠ب«ñPŽßP",GÙc 1‚rH$œf±"ŒË Oz府¼ŒYÎÉìú1[6¢5Œ“XÎV=,6ÔzìX±¶X”ddúÔÒ]ªJ¨¤N ô¦<ª3¼ŒƒÛ>•šr’’s’sÍgßVvâ1 +œ}3K]wÙ§ª”'Ür?™ü« z߸ÅΈÍÔ¦}Gô&°N+U±ä½Å²Q.ÈÀ9Þ 5éVÑGm£°‘T®ÎC:WáËs5ê‚8 ü«·×å1iñÛ¯ÞpIÀs\5_=U¢œ­q1ªHòÛü‹¸•Pz ñVmu†dXn€u=GãPÝÜœNk&B~ÕŒðG"½5K÷|ȬU©ÕP]Ë‹¥G’Ø’H$)= g[ÜÜXÎ$yšX.$€äWÓ5naêo@£·­cªÜÇF®Ž’ËV·Õ­|‹°¬ØÀ$sXZÖŠÖn’Z’`?y˜ýÓ“Œûc“¼R’¤«©è uzF¬—1ù#=é¦Ñ›F6’±OñHʱ³ !²H$à'ë[šµÛ[xbÂ/º÷1(Æy +ÏôýjÛ°c=›BJ•Ç®+Pº–òXÎvF±§Ðg'êz×UWjJW8×ñ9lox6Ü´Ï!^05´’jþ%–8eˆˆTœu>Ã$×C¡ÀÖ:9p9  =犳¦i©¥Y<Ò2Ê—’G8¹ç°ÅŸ,åT몴QJÓ¡Ò­ö.Ö¸eËçqì*õSæ?WfËr}‡ÓÚ°S_ÓÙ¤¸ûZ)«3‘ŒŽçf´¼=wöë{©„f5󰡈,@QÉÇäŽqšérrwf{hjŽdf¶õÆ1Rb”fŒ‚ +’ Ð/Ú7‘‰dE,G|“Ê´ä‰$0üGQXzì ™t‰-€qÓ Ži­@„fó—ùŠºRO<‚¸Á«²Á‘AóÛÊŒ.H€?J¯„àÀ œñÎk§•“FT[»D7jÁö‡eq¸tãµR1¿Þ*qëŠÓ… +œ‚sŸóÍBÊ '$À®-Ž‘Ђвy…ASG‹ ÚÞò•`Àô ÔaH󲃜s“íPí&SƒÍ€xàSWºµÍöÔ/” 2(Ú0°1€Gô"²/.%¸f3Hò ù%ŽNzùUŸ˜­€TÈ9Èê Ç×ôNà|î;š*'YžœcáÔ’ÔWV’Ɉ*Q@8 nÀãŽ8ý8ª*Çn1œtö«Ðp|òPÃ(Î=Èïô¨ôè–[у%Ç=úÔ³Š”y¥ÊU,HéI$2"î(@#9­é4øÔ–À㌭p™…€ã¥Kv=©Ù;˜eŽ= ~nIäPÃæ9Ȧà=ê®yî64ƒ€ÇåœÉü몰»oøG Úh¦Úr3•n¢¹;l22•ÈÁçëNÆvMÌ àg±èaWf½v6þj? +®yú×%X%+4â[ƒ¿_J‘n•“ã3Y‡®hó“ÅcÊ E™9?\÷§´ÁÔsÀæ²8ëÈ¥ÞÀð~†—(ÊÀ€\Ô›µc¬î­ÔíS‹£Ž´¹XîS[Ë®KÍË[¬QÃe&0¨­’yÀœÏ|Ve„~lÎËxmÒ¾p†HÉÛøÕ‹‰,Ú}VK¸ÚIžàýœ+Œ“ÐòðG8Àª,L­,Œ¸Sµd³™Î8äþF½[žRó"€·š¡RA#Ž9~+i-´áªË ޤЈԤ…üµ ‘O\O@cB›¥ +AI'Ÿj¾²ØÅ%ØIV)å4±ÀÝÆxÉÆ9è:Ž”&'±~تI¥añäÚÝL +Ÿyˆ9ÿ€ŽÕž¶öÿØ‚sr¢äJª-ö䑃’Ols§½XV+ŒŽbÒNìXþ9úÕIä´:| R-Øv.ùʲà`ê?Ƙ"ÍôZri–ïnÃíLWz†$³,O$›§^µ›ÀAÍ]Õ.­gòÚÌA²5ü‚ìÆHשÉ&¨ Ån÷/Ù.žlîšðƲ¨2åŽF G9ÛÉÈö®yÙ§“?ô«Wr– +@l–“Ûëj}¥¾ãžõœ¥c¿ AÍ“Ù[m‘–5nyÖÚœ¹})²È-” ûýýª‰%‰$äžµ”bäîÎúÕÕ(û:b‡!Ãd’IëV®#•{ œT¶¯$!UÜ–Œ£Ê$‘)v#žÀóŒúb–Þ9mdki—l±á€$ÐÏ ñZÉ[SÏ‹½Ó  –Fq“€zŒŠ¢ÊÊõð}} KtÁ[l`¸,DjUA$œŒqÓŽ8¤+¸#u?tþ?OåJö¸·:?Úƒ1lp:}jæ±7Ÿ«Ê€X€ŒwÁÁ'ùãð«>‰`²37ÄŸ@3\ý½ÇÚgžcœLÆ@Hê ® +w•G3ÑÂ%í,Ê÷Qƒcñô<ÖLL×»œ…' + 8$àz +袳’úu·•ZF + t=ð iÂw€|ûbG©nŸ•{”%MÆlåÍœ£Y8®‡‰S±°ÀqÔ¿•,^h%׌v®ÈxBô‰-sŒu<ý~Zwü"Wä’eµÉäá˜ìµ¢¥C¬%Öª¶GpDɼ ²¯ëPÚÎæP‰=qÒ»'ðe옭þðsŸýšåµ­÷G~Ò€+r®‡*ÇØ×-Jj/ÝwG]:ŽkUfu:.¤·(!¸$cž„U{íêÂÈ¥ ”…ºOÿ[5…gsç*°m³F>SÓ=ñ]ׇõïíÄ3&\Ϩí\ÓW\¨´¬ùš6íbHàE8@9©n¬¡¾·0]DÒDÄ ²ç#Erž*Õ$HVÊ$òç‘\ù…‚íN’$‚3žÖ¹ ĉ²ÌåÓ89Î8ÈíštaÉ +Nîçj|‡Jx£€ ²Ç<‡¦1ŽÒºk[H­![Â#AÎ''Ô“É>æ¼u/.T·2Œr•†?Zš Ë™dÃÝO´˜ù¬p3Î2kTE\»¸ŠÊÚK‹—ò¡Œeœ‚@öëŠFA„w¯ºšåÝÕ§y"# +BrBA'Ò½CNÕk V#æhŸs´fšÔ—¡«ŒœzÔ0Iý¨–-³ÛÊåI  ‚õT'QŽ6sŒö¯2ͲÇ<‘*¼€ìr‰ÀÁ÷¡è S³¿ð›^[<6Òµ¾æ3F’Ô|¸ÝŽÍI¢øz;=Byå·d‰YZÙYÔí=B“ÈàƒšáîuB+†TÔo +/ +ËpÀ^AçëM¶¨1Ôï6çý-‰ïÛv{zR¹Vg®T$˜@Ì¢fBê¹Ã@ôŠó(õmDÛ1:¥â•\¨31ÜsÓ9ÏZŸÃ7÷3xŸOkÉæ™Ë4{¤rÄVIã&š`Öƒ|KhmµË´©!ÁǨþ¹¬(Ü(Çq‘^ƒâ}"öóRŽ{[v•LAX©êGb?*Ã>Ô÷nûÀ•+Áƒô>æ½£Rœ}ë3MÂoCž“¸$t¨&‘—;ã8$ÓÂ;¨°› +003ÆIõ÷¤: ùR>?ܤ¨S¶²Cuå}"sëq½æzÔ°xfþyYÜè· ž£Š¯,q’vçœrE:wÁNåÂ…aœgÞ‹+O©$û˜V»]±ŒÐU6„€N+zá@»EVxÕ•†ÞH8úÔ^ÌóªáSnÅ+V+ €:œžõ~ÈàJ¸ë‘ƒYã +êpp8â®Ú6]³Üþ|ק€~ûG‹.‡¢ømúJ/p?•pž6O+Å7Ê02á¿5ú×eðýÁ³eH§¹oˆŸøJ.§þ‚?¸¤­& ïts¶å™YVa',@=©ñŠá’)‚’0\1ׯ֠‰T8Ü RyàÓåò÷)…@븃“튋ƒVg[à— s¥I"H/ Þ¤6~uäs냟ø ]6d‚êsí\¾“{›«Ù]Eæ*@\œ`)ÈoКï.ÐGw*€6î,1èyãóÅsâœÈÖƒ³hÈ{BF1銄ڸl‘úÖ»@ u¦ð+‘HéFQ•±å¯'ô…ä`~TsŒb„vÎ=iÀqÐÖ›B§('ß±ƒÎ*¹‚Æ]ªÇÕºÞ[‰çvfo5Yv8Áéß$y#´v1X]G4–SÏ&ß)¼×Âc9<.Iü*Ê ƒƒž)@É Ðzרxü济”ĵҼ3Á(b¢B äç ôµ¡&‡|§PöW*ª‰ûß“»zÛƒÞ³ü9%®§ ,‘ÜHˆRFm –v:g5ßúä*ªpT0ž¬0yãÒ‚“º8çÒ/škµ“ª=¬pFí`•ç€ ín¢¡—@»x"Eµê÷+!,}FT`cÚI no¢’'‰8ê#'ƒ søÓn-¡?i8ÀyáDàr @qø’ÐÐ>–9ýþõ£d#*6ö + è>QéÔäž9¬GJŸN€I3XíQµ†N9äŒ~ußMgbN¤n(bVPÍÀ*¡’;Œ’zW­ß®¡v(–8T‘…àž§ÏéS&’.•>y$cCÏÏ,y5µ§ÇmŠ·'eIŸ\r*š ·Mç–=zŠ'g¹RIÉ"±IÉÜô*ÖTcÉËô‰6¿¨:}Ã1ÛŽ*…nX´&g.H@ȃŽ„ž˜ôäõ¨ï[7÷'<™XgîED lŽ®çA³Ü¬’¦›‰æßý „Ü7 c€úšƒP´’#ö¸í¼”@¡¶í‚y$qÕG~sPÚjòÚF‘à )$[$œdõêp*Çöü­ŽKH] +í ± üªÛMX•tÌ×0‡œJ™#ÌE@8pAç‘ÁŽýhµG@*¹£ Ÿ™Ožk[FƒÌ¹AŽ­ŸÀW%YrÁ›-dŽ›Q“û;ÂNÐF¾¹cƒú\†“pLÊ„’ +àg·µv:Åܶ÷šm­µ ½r®ínN7¥}ûü«ˆ=•áFFG³µ†ö>ø¬ððýÝÙ´*8TLë´²Z¶?0̪x>¦»Àxäפ2É©XÈ È ½ëµººŠÊÖ[›†ÛJY˜p°ä×\65ÌZs‹]‹CÍ ú‘šj1Ó,Œ# ÓÀcü'CVy¡œ‘í\wŒõ8çeÑáÃm`Ó¿÷{…ס>ØÎ6üI¬ N.˜7R!îØåˆô!Þ¸DÀg•‹»ò19$“’}É4Þ‘æfu&ã¶æ]Õ£ØÎNåÀ ŽÙõô<ÒÓ¯™ncbHó­½;Ns§Œ”só€ß®kWÓ‹©æ"ZÚ\í'œàû×f¥&‘× ¹ÎƒT‰u7ÍR<åRTŽ§#‘ø×p¸µUhö*7ääûþUÐh·‚)L r§•ÉíU¼Gfa-pbr0œð}½¿úõÑ]%fr²0Éã=j{w`œàƒÜqWìô•»…f2ìÉ#h^˜?Z¦ª#‘³…$1Ò«•£ž5c)8Ä–ô‡».TDÎÚÓ tí]V¨K®å6.ãÐ@Æ:pr·ŠU¡ µ·'º2x?ç½lé O]¹3Ÿ®­]5wc lå)Dëõv¯+¿–HÜHÏO~µÂ^¢¥äà±''o@Aöéšíµ gѧ Œ´DŒý3\]öÓpîFZDŽEžÇô¥Ø郺¹Jü/šŒ\+O‘íœþ•Qe$2€By­C{C“û¥Wç“ŽO=kZ_ 5¾œ×+r’ü ‘ŒõÍE‹½Œk" d4b@AQ’§ÏJ4¹E¶§k.숧FcÐ𦶆H/ü˜CåB±à`€sÐúŽÕNuòæ™ÚÈÇ$ g·ŒÓ Ñí›B–ëÔõ$ÐqQZÌ.lฉcWüÀ?Ö¥4È—)#:‡ ´…e|§ÁÇ àŽ >€ +ŽuÝj’†Sô  #€Üö5ç÷(ÃÍŒ’Y2¼œŸ—#úW¡NÈAÀÉÀÏsé\fµ‹Vœ`€Ä8ã@'õÍ)lz9{ÕÄ›iN¤‚:÷þ”]”h"”`pÙ<0õ<õÏ ¥`:œŒ¸éÏøSØ3ÙH¡QâP0Ç‚9$ Œœ¼¥JìcYZlµ¦9{0§’„ŽºÿZ´8‚3õ¬Í&XÕ¥I.à +äã&µ¢.78+ßf• ÂUN’»!¹Ý€O~ +«“š¹:€€î\‘óqô©QÎGçRÐêI_FQœa˜zÔÖm™ =ñItpAÏ4Û3‡9è1øס€~ùó™Š]ÿáùý̃ПçYÿ­¿âd³Œ~ò0=ÔŽßF•]ø€’Aç¨úÕÆ·6“¶2mä\‘Ô?£øW<õ“2†‡˜°ÁíSZBT +prQÈ0HãŠt(Ò¾hŒ˜=yö¬ª.¤’9T1ìNAíçÞ»ÛÚ÷G°»8,ÑìsþÒ’~¸&¼þÒ1Up˜’Øtëø×gàöi:•‰ug¶q:l‚ÃGP1úÔN<ÐhÎ/–IšcH=©„äš³€I9Öl+Í;åÁàÑŒgšnì:šRrA?þª,´I<Òb‘›œŸåQ“ÏZæO¹+“œc¿ó¥]>w`ª„’ Àük6 ‰dœ!s‚õ~H.KmlãðÇÿZ½Nfy®’FÖ5î™ Ë ¥´ÊÄ;P±P8Á|kš‰É[8ñ“ˆŽô/jä¦C‚ì¡«Û]I t,@]ßZjW"Hê·©p~ǧªä ˜qŸšœ5½QH+œ¼€ +Är×wµp‹s9b ‡ÐŠµªGs§Þ›f»IX($Æá€ÈÎ2)Ü\¶7µëëû»hÍëÀ#Vʤ@ÍŽ 䜞ýë + 4²4Ø„Žª$rÄó’sIzĺ[Æ < ¤ž¬dùBŒU*|ìÔ]9®É, €[gŸJ’ $#‡2E•9xçò¬kÛ}SOb—>t'’2=¸¢ÂñTÌ×·m0QÈo3)àŽ={V‹M ÅÉó1—k©ÈäƒëɨÇëB’PI'’Oz?ccŠpÏÐyæœ  àLé¼5k q€+‰ràv&ºÍ–ÖÎk—F¥Ïà3\X—¥‘¥=]È®$»Ô<^é§Ü%½Ä£ŽG€yÈÁÏ9;×/¬­ÄzŒrÈÒ† +Ì€€H‘=Gnô–ò,·¹ºg)+æR‡ ‚rHàóÉÅMyl}40Jó¯*„K ‚z} íŠê¦­„÷4ü1?ú\OÜ•GN ÿ:éüE¨–ðýôrE±€I$ØÏ Ó±5çº]ÃAwd‚܃ÈçÈÕÛíJè ­¤¸b%$2íQ¸g<+zPM0¯6ã@QÆérP€J‚~•\îŠBÑ1VÊØ tê9éVt¬ +É(…*NNéô¨c€Érà Ç#Ç<éJ;êc'ev[¶NâYä’R¼)w-ß©5±oQ¼);øŸ·àêG¡ªöÑgdiòÈNKc„QÔŸ§êMtZ]².Y„vÑ&T“ÀP $ŸÔŸZåÄ×ÓC:0ö’ç‘¡eXÛ"L²‚Á{œ`œlÌVF´æve;dBØ=F@?Ÿ5}¯Ü]k¦êÖM±ˆÚ(F:!êH=Éü½*K;Ë›ŸÝÏ.äˆ|Š@ñŽö®œ–Ÿ3ÜËQÚÉìPY rwDØÔWO8:ŽŒþQýè]ÈAÇ#Ÿ×¥rWÀIÀãsÖ·´ ’DÇqYÉrËCªŒý¥4ÙSG'ìl Ë,¬9Çú“Y7Y]EÀùøµ½EÝäJ§o˜xã ?Äʱ5 STnÇ*yìx®‰kyÔ—.&H.7”„Ä짒àœr0GJÐÑmå‚$û½†@ÿ +Ï»E6‘MX¯˜á¡8çó'Š¹¡œ…$í`AíÈÿ +šnÒ6Æ«Ñgm$Ò”cÁéŠáîÏÉlÁyk}¹œ«õñ]ÆšwéÈ3’2æk½B‹ +Œä<ñc®A9·éNkSZðE Âý™Y\ Ãàc9Æ:sŒçÖ»»öŸ[ó’öÁI>¡pQ\$†6´(y€œ‘‚9Î{Ž€Zí|.þg‡­€çit?÷Ñ?ÈŠ”k#¸lO I‘æ@„9òª·!Và„bñ$`“éÒ®ê1²I +ã%ZX¿ÙþF©]˜ÚHÙ>E +RO-ëøÔ±£Ó¼/¨G'‡,7¹#òÏò¤¯ô¢5;f,à Ý<œãù×'àÙ èíûÑÎËù€™5Aµë’C4pƒ†àä›ÔU¢EÒ¡:·å!Ô5›»-[P:}ÃÄ“\y„®0r0IéùSÅÄ©RóÁ†H'ŽFz`çŠËšIn˜ ¶3ƒ×žüÔw%J©Y6˜³‚[€;{çƦ÷ØR+³ÜÖÿ„Ã[À?l_§ŸáRGâbT•›QØê2«åF{}Üæ¹f¸u8àã#U>A$€Hazç¡n¶Ô·u­^Þ<2\ÎÌÑÈFÐ pxŸñ­¯(’æ ˆó²XðPO\\Ô‰p¥ƒe(8Î3ŸÏŠÖkƺӭb1ªˆA!99:Ÿ X4ýª±:þýÀ\ãŸJ–Í•Øv±´0ld‘ƒÎF¾j;œ‡FõŸÖ‹r|ÕÝ’=sœ×æ¦%c#i\ Tù›vÎ#óïOò“ceŽàF8ê9Ïô§\ª­ËylJd'‚2#=G¾*ð´B pFzÐ݉£FUWºf2*Œdä{Qˆ€»ç<£üëI¬ðIúæ©Ï¾Ö2gÛ\ÖxYÅ]±°=ª¤‚ádcƒ³iŸz}±11Æx¨ìä¥ÉíS[ñc‘Œ×f ڥΠL-ÎûÀªåc¡úñœÕ»¦[­s[ÓÜäKí”ÿ0 +©àPHä`sïŽj†§ö/]H0rB`°åÁ'§8ü«õeC­ÎFéJÈU—iêF1ƒÜ~y¨&HrBç’?´õ§õ1‚«&dq¸äŒ÷ÁÈü+1HÞ2†³Ùš]8ŠÍœ|½þYàƺO^ZÚxšÕ!2y7(`“Ìr@#ìX }k›”åªã¸gëš™. +"ùPFJºÉÉ`À’1Î98ü©˜³¸™ÚâHrI‰Š’O\gñÆ‘@5UÛu-½ô ˆï!IG± øãœc sž¦¼ê‘å“Gl%ÍÅ29äR™IDC€?­­’1Ç­E‘ĊižwÖ¡Á±¦í>ôYÅÛ¶.Ðú…w…{%$dƒüÅp±’³ƒÐ9®ãOmÖ#èô¯EnpËcV@·D€@é[: lƒŽPÈ‘YšáPÑ8 ÷ÉÏZ»á×èXt÷Ïõ¦·ÕÖ§Ùõ&H €Or*µËB.[’bÈÁÆ3ëÖµõ„ø†c2»ERá1 qžø¬iFñ¼•sòQ[ŠçŒãŒâ›BF;j€|^¬ÐH ú*üaÑHŒŒ0J°ÁŒƒô ‚zÌ”d·¾k(+KS¾³½$‘ÕøÖE:–HÇÙÃN0wqø×9§LðÚÞ”²7A¢*Ï·"z6pqúUí~ío£†äÎÐF¤÷Gçš©d/Æ‘¨=«"Ú…Qqœe”‘€õôÅlsT‹ŠW!P6žqIJUP8àRãÒ‘Ìœ½9]9ãÖªIç9ÎhŒÀzѲNÝrÇô·.î>É¡íeeSLäÿ,~5“b›™p:œÕiòb‡¨U$ýOÿª¸Úç©cX{°¹™u×Y¡ô©­7ñ\;ã ¤tüé¶Ì Ny}= O{n f.][d§ºt®˜ïf\W¾Œ»´ò®Ûù…XÔ™%´£‘A$w#ƒKª¨'Æz‚3×½@ÒµOð9Çÿ^´‹¶ÅׂŒ¥ê0"Æ„1@C’p9ú‚1@“c]‰$ŒrM2YOÊ6(ÀÁ?Ž3øÕÝÈË(‘€$œ =ÍeR|¨áqæ|¦æ¦™!c6KÊ>r8ìÒ¡ñN °Ù6Ÿj3d,ì¤ ž¡}ÇB}ð=kcQ•ô¯Ït¬e +ˆÛb@Iü+ÏÔhòV˜7 +ÊIl’I'=kž79{I;Er¢8Ø#`RžƒœZÔ±•ayà ÈQ“Ô™µ”¥šD2“08Çõ­;B „1p»z¡»g ~µíQ¹g‰ŠoR¾¬Bêx;€eVäèM[Ó%_§ÄÏ>üÖ~©)w ¤ #W*qÁüÏÖ®Dí%â d‚P8ãÐ ýMpLí¤’I"牕XÅ($0HÏ#·Jç· þ-ÍŸCÀæº=cÉ–%I¦ò”—Ú[œð0+¸†f_"9HÉm»iÆí +RŠ•¬]¸.lX†…8ÈÎzg×cC*ndÁÉhòG\Œ~•‘žÒFCÚ«„òÔn8Ó¯~ý(Ò%'PŒbÒ.ÒFNG½*âí$c^tšGw£6lØg£ž> W3«!Jeð ž0ÄŠßÐ&YáT0(áX2à†‘Xšúw¨)9Úb”ÄúUM§©dÔf ÓÂKE2,ˆH# €3ƒÈäÊ“ÕØjŠªØVm£I§»3ÙUðK,dŽ2O¯ÍÄS@Q#ÎdԌ󊙞 V6e…IÊ4€8'wÎßN¸¥ B´Ù’ð»1  ©lr“®TpÀá#ñš½`ÀÆr zfªÌ6ÌãûQÔÚT²SC®%ñq“€HÆ}éV¬ˆåLŒŒŒòAã×=ý;Ôz€Tt–a#´ŠONôY`;($ŒÉèq’(fxoâ"K¡˜²1Aþ•^‰Kh ‚pøö«“.b`9àÕØKçòpzÖ’ÑØØÝ\v¡–twkÆyùˆ'ŸÔµ¬ÂKe c’¸'=ÇÒ³îÖSfèqr¹àqÀçש«z, Ú´gø[#žÄúé³<ºV©bÙ…3ŒΩ^ÚFħӭieFG<ßAqµ“#$ƒÖ¤ög(Ù£ØÄXHÆiˆ¢5•FN2åWˆœ>µPr²ŸSŠé»I³ÂÇÂ**Èî|÷žø®oÅŸÞ» J|1]7€—±úWâWWñ¢ê~ìî1î ùV78ã£4|E¥ÚÅcaql¬±¼Glà’ÇûM×Ð×.@V]¬möÿœ¨f¶nAë€rñÖ?•q² 8¡ìiºË$ƒql®1‚}ÿZ’+¡Ž2qœ‘Ç`OøÑ$±“$¡ò2 ÎzôÂ…‰I*¬JŸâÇñÖ’2zhwÞ›í¾HØ~òÂSç'cr?˜…NQXçEbøhÓT¹Ó„Ë$w°uÉ{à“ø +è1ÉÈÁèk“>cjK Èà) `0ãðe”’:Òø®[ Æ@¦y~ÕkíMÇÖ@ó€ ,H9Èu­ˆuG]:XmÑÌûrB€A$Lf«ÓËXã®sÿ× 6ž‘NqÛë^šîy×vÔ@ÓÝHPºà¡d-;³œ`Бֶ,PiQ–¸¹Œ&) 䎇åÏcYjtÌa¹9NüMiªÙ(îAÏz¤ÐÍŸKãßK<³†òÙd@Áù~qYÒAf×’N—Ö±+3ŒG1 +p2SœÖ“~šdŒc‘¸ç4ÓH$º‚1’r)¶-K×÷p]ùLnáfŽ„Ž@[o’TbÍRÊzõõ£»MxÀÁçŠYÞ=Båš + *¯@2ùj-­ÍéÍÛ–F;96Û9Èl¥ZŠÜ¾‘q1½ìuQn  žIäd Ðþ^ê'‚VR +’pAõ‘R²þËfg߉@DçhNI=1×ê’ 6ô`ö§çŠ`éÇ4Pf+F¯Ô ŠA (g‘œœžô¡€x©#òí Px©“²cò5ô˜ 88è*9`“¼¢â%Vf°b/1ÆçœñÏvºdóp) õ<Ԋ笊ê í`2ðHá™Æ8?áSæ{8…Ír©%´§xÀ,¨XqØñ׎? +4g)q"¬¹°E:7Ü©}Øù±Èc<“õôª¶‡È¿Œ–$#' ñÈâ«¡åagÉU6on4I‡HäsíÅ<À†-žx’M­ŒÀÉÏ=ñþ%Üú‡©–À‚NzU5?¹rxËUë‘´¹'ŒgžµZ8É´R >:ú Ö´}Õ&x9‚¼ã¾ðBlMpšÓ#ê—,a¤g,9$“Î:ïü6ÂÏCžá¸ÆÎIöÿJà/4h±e†>|®Àÿô>+%±ç¾¦×ƒ$ «) Û,g€}2èÇò®vú!’P‚C`wƒúŠ»áË£m¬C!à39`ü§ô9ü*ß‹-|Vb¸ +Ä>mÀçõ E®Õ>ç? Û[!y$€ *¸Áž„ŒК¬X¤€ŒqëÍY¸‘¥ÚÞJD¡@TØî}ðJH‰­Iôûãa©ÚÞ)cöy·LÎ{ŒÆ½2ú —Òmû®w©ìAþy¯,II„'–„`‚Ø9Ç9¯IÒîMÿ†ôë£Ìˆ¾D‡¹+À'ëŒþ5•hÞMÚ@ÙѬÏå¿îâ>Z㦩ɬ¢ìO$殌yb‚nì¹kq i¾Ô›Á…Ös‹x8<©þf«©!´-‹©¹Þø.0á˜.Ô àúf¹}jëíš½äû‰)ÚÙ/èTŠþædŠwX`…lõêrÍ“ÔÖ¥Ë'!9&’$P +KŒgבþ¡h$kIÕ l—8ÏS“øU+FPX 8ÛÏzÐ…&•f.ÃqËÌÀ¹àcÜýk¦÷HÊÖe1 9 +!†3ŸÿUiÚÇÌdã‚g‚²¿1`çÐç=û +½lH¹ŒžÌ3]˜Ux³“°ššy7…ȇ÷ëúƒQéÀ’X Þ®k‰•…ÀäeIö<ä:­¦.Q°pH#'·kŠ¤m#|$ùé&ÆÙ5hÉR“žsÉ«ÚÒ±)þë +ϹFŽêUW×xdc¨çŽÝ)Ž×‚¯+H+IÔûy«RJ62«AΪŸalä–2 ',A\Ç?Z‚6PXǹ +’NHäŽqùŠšÛ*–#‘Ó§¥DàùÒFêªCXÉéž½*–®¬vÚsíˆèI>àÕ -„„€`Ђ+>À”’رù†À{öÖ—ˆÁ]=_8òåFÏâõ­êt<Ü ÒKÌâÀ²î$•,‹œÇßüæ¬Á"Çâ;IŠ˜Ì™P RIèj ‚Vâm„3 ÜžA'ƒúÊ£¾iVH%ržfÑ° N@g#9ç'¹5é=NãÄ@®ž² æ)Q¾˜` qÑ`½™a™euU$ŽsÀ#‚)³ë:Ì&9®šHß‚ +¨õ5 ³É5Îã »XñÉêNþTÛ¸%b³*†’5Ü'p+ŒCÍwú±û_‡’aJÇ/§Ïýôk…»Œ¥ì±> ¹™I ž¹è=}+¸²åð‚Fø,m˜ ò+úB4§.Z‘g!tÔ9èj ÊìÊ6È œyéøT÷ ´Œ``ñUÇ–UÄŒ@äçÈæ¡nzå³8-p’Ub©€HÏOÃð§Þ À:y§N$1Ç,¤°lª’A žyÎTÈ`KŽ à€GåUkœÔ1Î.,-Fá*”Wܘù†H÷•cRE°ÉÁ$€9«6ìÂud`¬~Ppç¿< +‰Ñ#ºx—rÌ͵ÆêyÇÿZ‹hsÞîè»&5#¡Vìa•€ê©íI0.HbrsšeØÌYü¤†¬{«Þ£q¶¥ÐïÐðx àÙvÏ·c¯†¯Ø)–ý#…~5ªV¦ÙæâkÆ­nhv©'Ø< 8 0XÆ?Ú#? 5ÄòØ”^¤n. ã''ô®ŸÇW=?N°R9•€ôhþmùW+bÒcR„¶A ÀÆ=r=OzÉŒ $àä` ç]g‰”ÞéV È…\ç<ã#?ˆoι@¬Uœ}sÒºûo|)s ÉlÛÔÎŒzÂ…½‹ZÆýŽ%€ÞéV^æW·âbaS¸ ç룑6È@è8¦*‘œž´¶ ¥¡=¼ò[©ÊT·\wùÚø¤›JÕ-ÏÌŠË26?ˆŽGä£ó® œzq^£à+o#ÃË/ÜJÏÓ°!@ÿÇIühµÓFMÙ¦€Ž¾ÔÆ9˜«Åå\Ë8V#ðê?LT, ƒÐt¯.Q³hïNú‘w qOüE7õìû +‘³Ê;QA šôÑÈ)•ëœzŠŒNö¨Û†ØÛƒúþµWN#ìòœà+CÅ6Èb¶1Iß‘ž8ÛYzuÀ‚`T:Œ¨`$r2AÇ­yõ×½s|½§E$–]ì¢F*<Jöó„[FÑŽw‚G8éœþ•»aao<ÜÊ›ÚPK).rAÀwëßÛ± ¹‹ýߘ~§Î­Rm\Âxè)ò¶sÑo’uPåw–'÷©{ß$1›h>½Åiɤ-² bp@¦9'yõ§%ƒý»|z—Ü¡œ/ 9÷À©äi›}bœ¡tÍXß6<·#®qƒÿÖ­/ܧؤ¶Á.ñ™äqƒœc¯cUü9h5tŶ¨—{÷Îìà:ûÔúÔËâ-e lQp3†;†!W'tc…¦á)_c†Éq|Â6*‹œ`’Zd!p#>̨É$’p3Ðd“øÖËh×v/3ÌDTó`ç$d‘­¥xzÒD[»–’@ĸ‹€¥Nq“Ôä`ñŠÇ•Üî¹Î>•}5±ž8ZDPYÙHÈã=:žaT uÁ¥uÖ>¶Ö혼W0Q"üÊA€AǧP{Ôéàv ¶©úÄ@þf‚ç—w1$àsÞ½f '³´·…×åŽ5RGC€çó®÷D»Óm{¤19p¨k)8'’GCÚ»=ZÕu]¸³·XFÊåˆéÎ¥h©Ë—›¡›¨”’8yЪÉê2¤g¸ãúVDÌw)@uºåŠÇ«]¢å?x[¾l7Ü×9&Ÿ7šãåÚ9=}ô¬Z³=ìM9Nœe¹T\J@B@ Û#½2W-É`Oz¼š{aK:ò2@Ï'ƒÇ ÏëSK£$±ïÊ·$«ö9úÑs‘`êróX «5¼PÉæd†%pqƒè{ý J‚Y£y «l œã''q“Ú¥6†XU‘ÆàÄ#¸àçë‘¥,å«ðB’ÉÁ uèN(0öR²“E¸bhÒ5(s€Äàr{šŠTbŽñõýjö¢Ê!ÆMÃo=‡bxöíO¸¶EÞa£e …”ƒ´€AÀ<>½hq=”Ò¼chÒD%г¢¸*s€Fpr8"–G˜B†F\ŒX ƒÈã$vëÜw«Mf’DdgÌ2¤` mÁÉ9<1Šž]<E‘ÌgiÚ ¹x'žyÇ­;„¤öÜÍ’ä”<’IPGÔq‘QbÛ°¹Æ8Pò­/°@IܬI<Ç­(³·3Ç©ÍŸÙÓêfÆÍ4Èä(qГ]…â3jˆþ"zv¬[xÁ¸“nv© WWáh–;’GE\äŸë]©¤yÊYv2¼oteñ‘® +À‹àœdþ¤þU†· ß)—#œìϦqšÑÖld¸Õî™$4Ì0Ä€9#­Q6S 'å8Îk½N—…®‘–‘É` c’qŒšë¼/ Šñ£b S¡R½Éÿ"ß•aZÛ,W6Í,ˆÊçæ Ÿ@É 3ƒÒµ¼?n÷zÌ^[¬n­¼nàÈãžF{w¡-EÉ¥¥ÌkÛ)#ºž2¹0îž2ã?ˆÁªJ…ˆIÀõÓxŠÔ&½!ÃÜ°Œy ‚Oèük†*Esac{Í…I¸è‹Sχ1„µ)ÀxЀÃëÁ?ˆ¨<òsû¸ÿïž•¥9QÝÕUK3Q’O§½vX…V}ÉMÔ‚2¡PÀGùÕ‰•àb’£#ÑëPt•Šu%?ˆ$º¢1•BIþdÔc‚ 8ã&›@‡RÆq£± «/ú4¤Ic¿Q@3RÄEýŠ +Í ”ÊÛ£.C€6í grqÆ*ÅÕòG#G +G \&XnÀ'ð¬{fIÁU‰A-òŒÍŒ¹5´kN;3 +”¢÷F¾›¯¾Ÿ#M´³ò´›ŽÞ{sÇ­jŸˆøù¬­âÃú×=¦Ø›Ù%ŒÈ±ãÞA'æQ€ ?0=G5ö-m>Ðg,ªtÚÇ Fä sÓ­)ÊS|Ò&)EY!·ºä—I"-­¼bD(Ü FOŠÇ ƒÅHTaˆ$2Ç<¯LÔ$‘œñYɹ=M©EF6HݱÖVÚÎ(c` ŽC2Iê­NuÕ qåíþé/üö×<1Á‡®)9$rN}*Ôä‘Í,5)6ÚÔ駼IÒS.à´j_p$@ÇCלŒTÑj6ñÌ°f&1®÷d¨8G>烧–¸Ôbg`&ܳp\ÐUgwy @É ÆIþ¼Rçw4Xx%dŽ¯Ãú»éá¢X£5|×,ÄsŽÇ‚z‘ÐÒ\ë€ë£Qò¤*WqåHä€{±<XšÔKlð*º°hƒ¼ŽI~)±Å·Gy‹€L›@Ï$qÈý*W5QìtÞ Öæ6³ARbµ˜œ…a +€G=sž9¬Úëgì¢+uE…”1Ÿ +ü¸ÚTœgŒë\~˜’^j³îb 33rNy$Ÿ\õ¨f–dRHTåA9''™<š|ÁÊtºoˆÎ§ÙDÆV “!R00Ý9­ñðæÓGápøŠå/Õ£u@Ã!T‚¤¹î* [k‹¶•`Ë´q™J‚r@# Ôóœ{R¹Fu·Þ/¶ÔmÖ+0˜ÕÃà\Hõù:T¿ðœ@ˆ±Ç§lUP³`aòW'q§_ÛG3O±¬J„–ÁèzŒŽß…U6÷f_,Ã>ügnÃœzã)Ýì+kskR×EõëÜL{‚äÝÈg8Ê« AFÁ±'?ʱÄÒ/F'Û&1‰Ê±ëRõ;c­¨§¢6Eü|•O¡cÏéVoCÁmæ;À e 8,Aà1ŸÿUs†y ±'×5%ÕÜ×—>l’»¹UL¹ç§j XêïFÍ«‹™,‚$,3#°ÈãåSÏ=)Újý«W64ªdçg¨8'‘ÀÇ<Ž•qu8Eµ2¸…X¾Ìü¡ˆ?\?ýtè…ž9]E(JeOQŸ|Q¡—¶¨â£s¤ñ£iy¬zz*ÛÀFYˆäÛ¯½ZÕ.!@ q°X¢u$0Jƒ»€;\•©bI!Fá‚1Ïô§Ë,³Þ<­uç»> ŒÇstçžøôâ‹Š5gtΓL°{¸.®cBX1V!±Û GÏJ©sxRö7H*p:žFGN˜¬‹™KÍ ¼¤„¹PÉÉ'ñ'ªÔŒ^0Ì3¼’ 9ã°ç¯ïB b&’ò/¸oepF]¼°“Î Îz«}®yVëVð>rÞc Þ¹=SŒ{ÒXZ=ËȨÀCó%áTp2IÛâ³õky-u-çUW@U`@Èr'š¦ú–³ +õ=Ù æ;i$R7’ãÞ»HnYË€ ÆqøW  +Gô«6Ú•æžÄÙÜ<õ*G?]JŠvHÂ<É4Ù±}t‹¨Þdþ‘ è0FãÏZŽ)ḑcEo5ˆHP ú“ŠÈŠVìÅ‹ ’O''ëNY^9U¶†e`@(psÓ¿Ò³ÐêþЭuóÂmÒQy±2Œ(,zd|¹áÛØ£ÔžæhÝ™ª$`n$〠à•ÊK$föi-ÔJ cŽÇ%Û4rCb­·$‚G_óúÒÐʵiÖ·1µswî¬Ó:2Á$á¾l³#ƒÎ3´w8÷­ë0]Ë1Å2¬jÁ¼Å“‚=x#Ó®kge²w`pHE#Œ8ü³O™ÀšL)vbI>O þT\ÆúÜëΫoeáx¬¼›¥¸•ù¢*¬ ËO`ãjOê––2js +ªÆŠw Œ’¼ôÎ9®&Þg.Y’Ī©=2yâ­G,ßiÞ|±Àwy +H ä®pOOÊ‹ŠÇQ§jV߬כ£Œ+!KÍ‘ÐsÐõ­u˨ äEpÓ¾èƒrC¹lÎúWi¥»I§@ÎJAAë—ãsz3÷¬=—9üi»jÁüx¤Àõ®;w<Ž—ÚŠ:œW¤r `YÂŒÀæ»ß [-ž¤‚U•| C(#9#¦:WÇ÷™ô5ÜømöÙêYà˜ÔÜòjâ%³:@m8{1ý¦ÈÑ¨Ô c%ˆ]îpö{OÝCý*Œ²—K‚O%ŽjÌlIq0fˆ€nõq8O7Œ’qÞ¥¸”Gå’{éVô«µÑ„2!üH¡ê4Š2 H{§_\±)꣟Ã9úàWžIäòIë]O‰^;Ò÷#†;R$c´ÆX*Á=rsíU¡ÒìcfœˆŠ©y|Ð6’?.ÓГÆyÇQšM\¬sŒ0Ä{ÔÈÑò§‚:Šcà»Ó'ô¡x t-3F]JæìB—™`íøs×ù +Õ ç#Ÿj§úåç¥iÏM6ÞlÞ3{8ŽAý(IGDDÕõ+¬HîªX|ÇÇùÁâ½"ظ!ÿwƒ–öéÞŸm–¹@ =qœSµÔ]É´‚¬r9+ìxÓêLtEkظ…C1%2Á†6¶yÛ§ëU‰8ÎkKSMÉldÁ>§þ·åJú4¢5`ÌAPßpñ׿¥f—FP9ëGÒ¤HÓpŒãœqšY6r@< â€#©¢§ Í#ÂP’AïŒbµ×@a‘®#U°#h$Ÿ› d‘О: + ¤fÅ8VÈ@'§9§`ó™mä‚9JÇ(.àœp88ª¶VQÜDd2²åŠíT Gäå†8ïÒ§¹G°ÚÇrÎŒªä)*2@8 2:M;Íé¡ÐÅ'ŸâýìcZüÂFWl8f*ÀŽ¥OLpy¦ë¶±8Io,3ª.Ñ´lTœ‚>H”ã'–ô¬}é,¯ ÌË)c (2‘¹C9€ +»«jÝ[41Ow‡€ÀˆŽÀòIÞH㌎ÙâîŒï¦§=; ) úÔ9=*[‚¥TîLb¢ÁàôŸSh|%°¸UaÁGZ¶ú…ûË+H (|oBÅC©<€A<n*°pG `ƒVßP¾‘^öé•31éŒg¥ZZ©k©ŸnánrŒèÓ*~ï$V¶›¡=å±™o-b]åv»ÙÀäS°ÜjwÏwl¦Œ&âÊTxÀ$œ€gƒéK”ÕM÷!Lì$’jptX‚JƒœÖ®]è²Cf· qo$(7Ü œ‘Œ€0Aj’ïÚ• v’ÝÝY^¬xàr ê3JÌ9Ñ—o,k— +rA¿~ߥ ‘ ÛB‘…ëW-4©f¶ó{D@Äb[„FŽpHã‘RÚèsO¨Os@ÍaÙ‘ŒŠAÛ÷v[ô§ËpçD q,ÒË*®ùXdü€ä“Ϻ)BÏ®Ø;FÑ­Õ»Çþ‘n 1*À’H’9ÇjÊ»Ónô„Ž5JÊÆ1µ]@‚AÇ#â™epa¿´ºšY—"±t9`¡²qœƒÆx4Ò±œ¤îkêú3Å¥<ÂØ®{/–ç#'€iÑÇ3ÙÚÉ(òíe + ymåž2~Q&9ÇR½j;Ûû·±Íkk;Fòìq½tnA<‚zsÚ²íîLÌ‚X`fB>hâXØŽ„ g§SϽ6Á3.æK©’0B‡ePq ggË»g¶pŒ• ÏB3ßüñZ-Þ1Ž)‹¿)ä’IxëÈÇSMÔS{¤ƒ0ÆÜt#üzÔX¤Êm|Ï)i"‰†0Œãc·±Èªª@#'殉Ö%d!På@øã'èMC¬×-#Æ+‚Ù O¥ ¸É3‚FryëíR´©±T€0i­e2Α°¤ÆÞF8ü(û$›ÆÖE–VÈ®HàÒ³*èšÞxÒÝ×i,À ö§[ÉÜ3Ä©c¡4¶ºlÓ&øÞ¡KeP@' ž8õ«:n‘u}–µU`ÒÎX  û`i¤ÉrH­$ˆÒ.àrXôì*ɹ#nÅʪà+ ‚@àã½JtÓ©ÃjD~tˆdC¼m+‚IÏoºxÆxéSÉ¥ßéÉö¬ÂÈŒ´ni ã Œà€}iò“)ÝqO +ø‚ÖKr‘Çu!%¤ƒ‚0A<¨“ÆGZåµyXk—M&ö!ðD™$pæcÇNIþ•eµ;–¸·åfx +”b*d^I8>µOX1¾§q,.^9ewRAŽ3žzb›ØTÝÙQ¤ Ä…Ç°¥ +\ø¨ñŸz~@ã{ÖfŨÓËŠ&xу|ÀyÁèp}ªÜ’Cp×R-”(YÚPƒ†Ærã“R4 Aƒ´G³œOSÔ +± Œmƒ«!1ºÅ‘œ’Ã6ï“WÐ翼aÚ"¼Ê‚¸=*}AÃ\‘—ðã€z€qÅ>Ú6¬íƒ‚I`uíOŸN¸¹½·¦÷¸lÆ:I¿JÇñŽ¸ ÿgBQƒ)(ý ü­kx‹VMÅ-áÇžW½‡«aÛÔל;³¹v%™ŽI=IÎI5-ØiI;2í‚ðvîã8뎙­›]cr…š•PåùF*H98 ’:Öô÷«L²ÄrLŒóI6&A*ì‘— H$t8¤#ƒÞ†;˜ dçµ Ó§z +[ÀJHxaÈ>õÒ´škéðE3Nlã| W†ƒÆÒ #ê1\äDdägŠºFðXÉÊg ~´W%±‚$,Ò›Ó!+¡B‚ $’KÆ ¶²jN³NË — Œ6Ó€q“À@ÊaAÈ$ä ’1Т¢šQ$»ÀŒdã“ŠHÔ©br€sLwD‰!àEXS¸dïU£:îÇ`®$™CHÇ^‡le$G:)@À‚Fxî:sU¹9ô«Pº˜H@R Æ ÒKŽe ¹ç•Á#>ôº›GHêu‘øN{‹Sqo*²2Æñî;IVPXz`œy¬¸–Þöâmë ¬ñÀ1ŽÙÆît‡q¢¬÷V’]nUËFû€`¥‰â¸kÿøþ¸ýß—™äÙ³“¹8údÖ‡;KssB¿Ó ±1jb²ÉÑ +ŽŠ­ŒÉ#{*;}F­ù“Ë–lmØG"mÙ€¥NH€ úV&AŒ‘Å"‘¸õÓ=¨As ×õ;ÈdrE™]‘`u}ê¥rXð@ã€yæµ%Õôe-2¤"ïq‘]âpw2a‰!HÉ p2+Šo$’sÅ,¬sŒœ3Åæ5ôû»Ht…†òYPÇ&èÄPG!ÃÏߎÄuèi¶×vöÚÔ—QH^¥Q™ +òWÊxÈ~}k%Ø´`ÀÈRF sŠW`ÍwS·Ô- +9yãaò.ý¸+ó>`0I“Åaï9ÁãéQœsÁö§e';üÀÃ¥psïœâ“lv¹{O³û}×’¢¹FeÝÆâªHPN'äâ®ÛÛGeªÆ†àLUHbÁ +Ås€sƒŒ€H=séX–÷RÚJe‰Š¹VPAÆ)SúZ:<óVHbÜIà?í)D…7=ðfê\±ÝÇ|óW&€\ TÜ+ª $ç¾8ãê{Uîg¼ºß4$‡jH࠶ǹmö¤p±HªÐļ’G8zôëMj)ÆÈÍžÖH”¼°K‚ZÜ€3Ó“ýjö†°C$Ï; F€•-ÆC‚Tç<ô5ÒjpLú<«{ +Æ‘[’.[ † J FäŒ y'8®IE±äŽÀ„ƒ×Ž”ýøK7ÑÃux’ÚËm,1I»rDêÀ6þã¯LÔwÍ“Ik[™ 4E\ž¹™Ïçriš|øóA$‚x\€@Æ©ªâéõî g,B€F èAÎx÷4š-L¸ÓÛÛYà júã=3Z:tâ+[ö‘-E#¹$ÿŸÂ³ž«Bé¦ÎòÒasg Àœ:‚~¸æ¤ÙþqXÞ¸ó4öˆ“˜Û€} lçÜ×™5Ë+ðw‰ÁjHã +=«>ÞÞH®p „$ý:ZêBž3YØrà ,xãÜð®šr»±U¢ÌY‘Ê—U%W©]‡[{¥`GË‚ãQ »EÒ#‰§‘#™Z4Þ¥‰ÚA)*{Wá»K©/î‘B£¹E cr‚v’;¥Gá]–KSš2ÒÄ·3’"z…8½)t5ß©ÄÏÕ˜·áÇøÖ]ÄÆâà(ûª0+KN“ÈÔ-Û¢’Ëô<…+Ý+#œñ3½Çˆ/‰;edP{8~UTŽ¢ºÛ¾ôòŠsÅ#BÛˆ8ÏZV’dj294õ*T‚GLwúÕˆ´Ë™¡YWc.CŽäT–V>t³¤²ˆ–,̹8 `דŸ &„™WEXεYYˆ(Ï-ΚÖÐ$Æh¤Wb©°ä°ã¨ëŒ{Ué4%ŽÊK‘©Z:F*†Éà È?Qzj$¹#"ÝÇ'hx§I"¼áB`c¯|Ö¦›áë›ëq42"ÄYÖ+´Èœœ€SƒSÃáÙYKqœ‰¼¸C`©Ï8Æ3G+23cxØuÁÆC28=²3Ô~U¿¡´ér²ß5«›¥bÊ‘¾0Çç¨ç5CPÐgÓ­Ìò̬¡ÄxòÝH$cpSÓ8â®xqb’ÞX®]b§P²RB\©@dl’@Aüêã¡ Ý•¼C"<Öá$ˆ£(g«—;‰ÛÀ z‘Xåºàpxç“[þ&ìï1¸xQ #V<’ÜŒ*¨8ǧ÷®tÏ“!Þã܆bÄÏ ŸLSNàsHNIõ§m*AÈõ¤;ˆr}i¦%à‚3žEHG9<ŸÎ–=›Ç™¸®vã9ÁÇ_|gñ¥a]¢'„®H# àrÒ‹§òîî@ Ì9÷9©IÀàâtRK·bdqê¡ R×R„ 3àŒž¹5¡×™L¬@Uè£$ŽÆ™e§ÉpÓŠ‡ff(ÈŸ©­Ëcqm•Ö6ò¡Ñ²20H=óÈüèIîlåtlE©_Ǥ‡´Ó¤Š8ãh’å7U-’H#³Xžý+R¹’ Kµö@ÁQƒÏ\œ÷Ít:c8Ò4éc„K:<Ë{¯%›v¡æžTõçk3Ä¥ßQ†W…à2ÛFÞ[¨]¸Hr*G<ñô«1¶†QeòÂŒîÏ'¶)€'vzcÖš1žIéÅ9¢' Q’qíH— Ï­+ÌHÈã4g‚9¤íÓ9í@-ò…\ЯµOri” wÅ#(ö‘7qŒ`p=xÀö$2¬HËŽEÃŒô u©.†H#Y%c…P:c ~5LDãÚ‹Fh–)#Y™£f¤ ãõíÍX2G w•ÙÉÁ œ’}ÉíÇZŠÛMºœJöñ4ûHÜn`pp9#ƒÈ$ösÙ0K˜ÌR2†HÈ#‘œƒÇCÍ4šäš:Èm…¤¬m¢»º…]¢ñß¡IP©Á*ÊœžùÍrbb¶žISœõ'GZëôé殺²kù!h•qööÆÖ÷!89Ïâz×%{ýºt‰UB±8Üã®ã“í“è ª3{ ¶¸6åØu#úõ¨£ŒÈÜp£’s€Öœ‘ »ä%S ã–öúÑ,›Ô(PtPSê}êH¸û›#ƒK cð¨.\ÜmÎ@P ƒƒŒdR2$€QŽ{ÐÐÓ°Æp¶^J§Ì[qlõ†??΢Y‚F¨bFœä }ú‚=JF{Tö×f2bÞÚ`㾈6:ò–EMTû”g‘^RÉE ¹Î0Îp:ã=;Ðç$ÇZšU2²aTp¨ÉÎ0Y}>ð)ó-¦H9gB¤‘€(³-MUK.TäT°m3lf+ÆI*Ùϸ”Dí$y¡HRsŽ¤b’;‡¸q23¯U +I_¨ÇY }"Êå݉ €¤Ýøú“S;¨´[ubPÌzsƒŠ†âÆåde†H™ŽUY-ôÈ椒Êð[¼m*Ĥ«9BpA8À ñE˜¹–R$q3‡%Š•ñÞº ^CoÒJªv*ÜbB’¬KHpÈ ƒ\Äpº1‘õ«v7ZÜ,©$‘¸í‚v‘‚0x9¡ãŠ¨èDä™Ðêó«ZÇ7žÒÜ@í†&FðÊK\´€éÐ×8¬7©f$“íÍkÜêÐÏgu ·× 2(Q$ VR0IV$€ÁëX`~TÛ!“Èé%Áf,œ:3¥?T»7Í +ç)b4ãÉüMU‘üéHœ>µ Š’)Uç­iiòH±8 àÀcÞ¬hñC=ÓÅ4);¼Oå#–È@ÂN@ y$Vêè9….Û´’.ªC©Úo™H!ˆÏ]¸$ä4SЩá˼j¥Y²%]§Ó#¥u…yë\ååŠYù×pY}š;g†H¥RûdGe%‰”8Ç~8®–2%]O 3\X˜ÙÜë¡7c›Q‚zV%ã÷nI•Qž‡©?Ò·Â’šÅk©í–imäxÞIH,§¨qÍUå¨ë¿t ¾[FA9çž• ÏäXÅœ%ˆúôª’ÝÝÞ2E=ÃÈ¥ÁÇúsRÈÛÜœp8ôÖôzCT>ÙvålùŠ·!*e+÷¢q*ýÉþf«@2YGVN>¿ç;H6Å)ÁlaB-x¦{¥Újq ˜ÿu!„åIúƹbņ*õõ®»B\O§LAI +HèpF8=;U¡=¶¦–h`Vu‹[ÄÁI'Ÿ»žƒ8÷«JæSV9ÕBWwlÔu?þ£R„Û99ÉÍjÞKsauä«ZJ ÚD2邹›m©\Ü^ù~]2nÙÅÁ#øGp(jÌ”›Ô±a«Ç§Y*Û»ù…6¼~XÃ1s’[€§€9&«[_[Å©ÝÜ$ff‚Iv `rÀs÷s€8ÉæŸr.RÿìˆÜ¥Ôˆ£eÇ®TcµW¸¹’Úw‰­ì˜¡Á"sßÚ¬-k:¤Z£Ã!3nI@û™\€8$ÀãšØ¸ñ e5šÎÏ ‰(FEe(ùäe‰9ÉȶkMž[ûÕ…l,æ! +å€p$xÀíí^„–¶™–V»@¢RIÆoJÆu9 Q¹ÆèZ´]†VP&ÌŒñb_*6<ªŒƒ’F}¤‚þѼT×o#ÙHV`Äy…ÁÆh9Ç8UßÃm`ÂTÓ-‚!Ù—!‰pF:ñÜUIþÏoggw…©i]/9ùpxÆ;šÚ:«™ÊéØw‰µ;kûH•.VYÕÕ±p„m!Ž¿61Ôk×Q»³m¦hÁ`ø +5jëP‰ö¿Øl™ÝH`V@>~xªæú.1¦Ùƒìeÿâé +äll"g&8W©è ¶N=Éäžµ +Œ“ž•yu•XeØØ7±ûüt©~×o´²ivŒ½ÀyA_Ÿ‘ïE®+õ3Ê'p*H¡ß»'g>Õ~Ò{y®¢‰4ˆ$.ÀI%ÜrF@ËõëÖ½ÓFÓÚt;ˆ·‚XN É'ã“Q9¨óZF19Î)  òp;œWyâ=#N²·3A¦~º Á9®HÇ9¬²éÿØFüéàȇçO6@˜Ý·†ÜyävÅT=år$¬ìs,I9=ÍzeÎ@þBµgXÊ;‘¤Æ#r6·ÚÜžýW9Š¬—–žbŸì´@ßœ~4Ú°ÔnMáÙ;ÙžIcŒBs‘…É zž£¥hx‰à{KU†hedf ae+‚ ô ÍœðI8㊎Xm-ì »mS  ââ@˜#  Œöü :â+KkX§ŸFeŽleÔ 8# ‘Á°m¡{ÃVö÷:lBâ4.éÊýÒ ”P@݆xÇ\r8¬ïo7¶ÂMÍ"Û"³².An@€9Æ¥W7d¬¡t–Üx¯ 9ÉOS]¦™áýìS`ä»d,¬ÊÀ`=ë9ÍA£Ì¬83õ-™Åä=péNýk»×|?¥[[<ðXL\ ŠC´÷9$t¬[[M.Kin’ÒRa%•~ÒI`rH^:¾•PjjèÎqks˜`w’Ny'Ö§²·ûeÒÀ$HÙ!œàp Á?…]žãKYäLœaˆ;ox<û¡©-¯ôˆ]ˆÒçF›­Ä¸?:m $·*ßi²YB’™b‘YŠü‡$g‘éïíT‡9 ö#Ö¶dÔt·´6sóî9»ÉgqSêxÀª¢ãK ÿ ë¬ÿ×àÿãt$7äRfgrÌÅ™ŽI'$“ÔÑ´ïŸJ¼'ÒÈ8°»$ôk_çå×_¢hz5æžÓ=µÇ$|²ÉÈõÁ2z÷ÅDåÈ®8ÙèpaA uôºÛÓ£Ò-湊ÙDQ)Q38b•e,X‚\`qZ:§†t‹{´¤W„Çʲž€’2p3XÖZmü2‘ÌR£U7–àã'är;÷§N\êèn<»…ŒqA©êñÃ*Ĺ- ‚ä'ò³œò1ÅWñ#ÛÉ·‘vnš%…ä’PÎØ ƒÀ¨$€xÎjB–÷V×Sç^HŠ«¼ý©rˆûœÏ^õšdÓ6ó§ÞŒ‚nTÀùu~ µÐ·§k6öv0ĉ‡•4ìL•ÑÎjWÏq¨M+9”¶âzàž0;}:U[Vh®h›)È¡ã§â;TÚ…”–“ZÌ¿c3ƒÁÎq=¨çŠÜ觇œÕâhëv²Ådñ›¹çkpòÅ@ +%1伜»³“ÓÎ É1D +•$‚ÙÈ8ÇŸJé”\\Ïd­ªK÷1¬ŒÉª‚¬NvOB3ŒsTôàmaW‹13"‡ Á$c úsVÖñÂÆ6#`ÈIû¤F?3ǽ&×Sztg-"J¨÷6ÕSp¡á–##ŽH–ÁSÓÓ­rÍzòZÍn&”G1¦ò¨A?(8Î@úbºdºw”²ÈâBààà1Ç==k;Q±ˆØO'2›Bº€ +³ø#ƒŽ¼ÓM=…:r‹³1e¹dÒR̤MµÎiÞs‚IÁñÆk4¡gNÐyŽ3øVƒÅ(%I2`ã®{UWR€pü)µs4Ú5UTÑâ²’3Æn’4d ê¹<ŽO"}tnô› uŽãêÕƒp¤s’A'¯¬Ë{û»d) ̱©9ž3K.­{24S\É"ÈÈþBš•ˆ|Ò-YÚ¡–DÜ­4pÉ(ÈÜ ¢–Æ;’öõÒŨß\èË~/͸Rc+*À‘´d–9Ü:+/C‰áÍ1˜çS•$J: px ‚zŠ¿5É(ð²ÂÊÙ%|¤;I8ùItÇ@j]·fÔéÉ»D²ójRÈÖp^­âI,M,Ðíò +`9À8 †'œýk™“Qº°¸¾·FXÉ-‚% +®T•Éó×Ò·¤½¸žUs+Æà±ÌGËÉld¸É8œôªâÂÚêìµÄO!•™—;‰9$õõÉô§¬:”§ÎfèbéÏbsøŸëP¥KpÊò³Œ‚9ü*ao·IÚ‰H$ÆTœxzŠg*ÞÅP=ûRŽ3‘ŸÆ·n/ôû—ž!§ÇnH"2pAãšÇ¼XmÙDS‰%F9éJåIYÙ±µûeôÁ¤Œ€IÀÏâkªÒu=BçJ.u·ûØØ$Bà FA8m#\Î[í°Ê€W°p7}xÎ+£yYó±•Ü¦Ý6±HÆ É<õæ–sXEßBéÕ¯!ˆËqªC$(#óƒ[0)½7¡~öqŽØ8®~[›­TuŠE2]®‹€êÀ0X ˜È=ëL\I´FBF$ä(!AÈù€5Râ5ža,Š•UF. À +] *Q©y"=*óÈK¿:”Éb®åH#p8ràãµP½¾†ëN³ˆD±Ü[«#2 †FÜœ’Hì:Òjñ%¾£:D$U'r—Èb¬¸?Ê©‘‚;`ñVÝÑÌ›‹4ôËÕ°‚æ ¤vYö•1àƒƒÎpA sÓ¥Ki|‹w ,€’´„ 0A‚zŽõ”²\)œ@#ò=ýè7,ŠI ‚F@P3Ž™¤‚MÈs´K>pÊ£Œéè+°±¾¿YçÒ"x-å³RÊðÄ\:äd…'© õæ¸ÈœÍ!vFdÜ’2'&º#pé7˜v;ìY¢R]v…Ãdr0çÐRm5©p„–ÆÄzž£ï—P†PQÜÇ$ ˜D}¬Ù9$¯\W;v×:=â\Á2æê2êè…K)cU 28ä`ƒW–âuˆ¢¬1© ¬*6†Æà8àdÇZ­v­up×*­+œ–Ú*JKdoR…D®Ñpªê.’ò³qƒœœ~có¨¨?JÑÕaŠÜB°«" á“ÁǶAü«;ëÓ5W¹Éf˜ÂïHG“Ö¤Æ~¿^´ŒJòFqÛŠD'*3íšêô)¯,.®tÈZí˜H¹?(`@“µ³Œv5Ë#—c„'±Ï“úVòÈùŽC´´hY‘IÚnÒHä`ãÕ¬Z9«IÊòf¥ªI¢x¥1¸‡\ƒM äã$Ò©£•j€p¤úŒzS`œÄÅ•™]FQ”C ‚#w§‘•ÆF1NŠÔ¤±¥e„²–*>b¹çêqŸÆ“.Ìèô›v:4*ÎI• îÎHÜIëëÞ–7–5ÜÃ"°ÞªY[ÁŒúT–z¦› ºC 2¤e’72…,¡ˆRA^ ¨g×gŽâEŠÁöÂ’Äœ{ëRì÷;iT•7sNr¬ŒAÚl°ÁɇãUµ7³ƒæ¼m•<°È»ŠAÈúsÿëŠÏ\‘ässbæ0¹>Ò@sÔñK{5®¯kfsKzà “œœÉö¢i„ˆ@sÅE-»F»‰À#Œ÷ô¨FsŠÒçÇÅF ªI!A g¹Çzõ©b2”"4ÈÉ9=€?¥H-±á¥f½½9(ªª'Œ’@Á=~5nõe·¼’C<რ'iÆ ræ Ð®ì,ĦspòÈ‹¼ \ Àc'‘´¯ãš½}­ÛÛˆžÖÞå·“’ØŒtÇÖ“³Ñ”¦àùEöˆZH›p m#$ç®Fâ­³ R— î"ö1”}á‘Ï##ZÊ_;º«ZM‚@ pOozÔ’ûHœ4/q'È~UÈÉÆp{ö¡YZ«¨rš§Ù ô¦ÅÙ­òJR¤Î=qÓ=ñU@Ï9«—V[ÜO DNW,»IðH<‚F=ê‰#9+KžsÝŽ'$ààûš†QqRíMei>Už¸”ž ž¤©,%´0JpdVÀÊåŽHèq’3î}k¨ºŽSrB›å‰ƒÏ,0AÇ¿?¥rÐD±1y‹FÈ $° €}3ÍviÓŽãÞ’2x…øª-©×ÓRE+wK™0ÅŽ +ºA÷þU1ˆ€IÎ:F? ˜$mpCc85ªwG™=$3è8¤u‘ÇZv2F(`p@x •£#3”´)¬¥ÎF@ @= lWG2½´k¹L…T‚Ç‚pÉü¿:çà¶S:-Ë¢,1RJŽçñ].u`lmÒCtfØ¡¶ªà1ÆNJ#¦-èЩ&â«"4R“‚¬ Î8#‚>•-ÄE7+N9sTçÕÄɼ7 Šp7 õÈiö:œ7)¼Šá‚„Nzâ¥E's¶¦&S‡+D³Z›XTyÂåA6 +ã$¤têrzÇ 7LƒŽƒ¹®ƒR†ÒöÔ=š\ U†(SxÈ8ŒŒÖE$@ž@#­jÑæTÒB: ?#1R,9Ç=ÏCšFC¸‚IÏqÎx sœôãëJ3Û=3øÓ$ÊŽ_-ÊÈrªFAÚA{Ž1ïZúfé,THäî$ò@$Ö\–²#üê@ ž‡=+sO:tP4m-ÔŠåhÑ@ÁA=A$~³Ù›ÅÞÖ]âQèÀ…u«Ý:­\’=‰É$¡FGQUoocµRÚ;¢6†&@ôÁ#¥Eo~—!n£œDA ÊaÇõ©QW½Î牓‡-ˆïY£#;ƒ¸]¹^˜9=ŸjÊVd`ÊJ²Ar trÛi÷P̱æxãgƤ äà’q“ŠÁ’ÚTRì„(ï‘ߥjÑæUVz±,ʼn$’I4€•Èr0r)Ø8t£9 ãÚ‚BðÄ“3I,s¨V„¢‚ gœœ‚09w.˜ìC–bÄÜÔ T% qZ:˜>µ ÙwZm¤hÃVh‰Èe*OPG\{Š¼@<«@ ŒÄ{TŠÚÛÁ–‘_ï‘Ž<Í»HéWœæ© ɤtYRfP@±8ÙTr¦îwÇ(Õ¡$TJ¤ +FT(ÈÈ´…˜õâXøúŠauÎáÊ? = +ŒLÆ*w#fºkBž"ÐÚÆBÔCtLO!€éŸCÒ¹BN6äî^TúŠµ§_5•â\FHRpÃÒ„ì&®Š k2;+FÊÊH ŽAhò0£ž˜5Õxž40E«@¤Å) (Q÷[ǧÔ{×65¸¹Å ØJšî^ÑmÙæ•%,2ƒk4Š¥Ha’pxÈÆAÁ8­øm´‘fKÖiDŠ§ UMÁ€Ï¨õàÚ¹EÔÐc–9ïNš‚Næ¥ÏäR‡™{[’x<™d;¢Ð0m‡su*pr1øc5DKx-ÚÜI8…€ ›ŽÖÁÈÈèyæœ5Dí‚rx4N6$—lŸcG?dK¦ßR±ŽLä«{hò¤Éù[ŸcVF§Çïõ¥þÒþz7ähç'Ø"©ó­ù‘Ze)p6” ò0O Ðf§þÑ´„~ü)´ÐŸõ‡×ÿëQÎdz+[Ç$R(Üâ=À•SŒŒò< ×aý™ºaqtöQ4nèqµÓk Ë0 †À óÏ¥sÚiŸõŸ‡ù N0Oï1øcúQÏäZƒ[³{S²EÓod·óã;+Êûf*°n à¯AøÖÝåœîc˜‚F eçÔÜçÖ“ûF2Nd>ßýjC¨ÆzÊ?!þsƒ¦ßR­Éw–,rsíøßJ…Tã¡ÏÒ¯‹è¿¾à?”_CwÈRçdû°@S*¬0rs“ëÓíNŠ[ˆ0Ë$`ðÁXŒöçGÖ¬B!ÒEíN]N5l‰‘ê ÔSç° •§’Yç7ˉÎAÆ’zŽ3[úU´—9˜HÁ£g2³«Â~V¨;r0prk0ê¨ìK™èçO¡J›]Nš}aÔ­cmQ dÊÏ’¨[i@g€rÇ'Ò¹y̶š”èeÜö÷ «¹Rˆç× §J"2!ÆÑÍ!Ôc9>bdžxs¥Ðn õ÷U½»fiå%™61@pÈ<ã©ÈšÌ*rx­íIϘ˜Ç £íðƒ‚éì0(öžD:3¶’ Áâ4n®¤«AVˆÔ!—ŒçÔ(þЃ9Ýç<(ö‚öe[«‰o,̆~b£qÏ©ëùÖŽ†&šw‰Ý‰ò‰j‚>ðPN1ž@<â „#ñçמ5HÆÒ%@W€@¡¡Í>…*mlΆ}&X¬g”܃4!É·R b¬ @þQ‚3“XºÔ7VÖö30xeJÀƒê}*£»¹,嘒I$çšÐû}¿]èqì)ÃP·;£8>‚Ÿ´ò3twlÌä~‡$÷­3nG/דíöý7GŸ ¥íØy”Ìò2ʬC¬€½CŽ˜'‘øRBe€®Ù $ 󌊻öøqñõô¿Ú1vxùì@£žý©IlΛû1f”º{h¬’)!¹VQœ¡9 ãŽ*¦§§Moe|îe ŒÈ¤»9 ü@.… dž¢±N¥…ãŒ`RR0¥Dªõ€¹s®ÅòK¹^-FöÞ !IˆŽB ©U!±Ó‚*¿˜ï!,8=‡AWÎ¥9.œ÷â¨Û’>tØŠj¥ŒÝެΠ+KAëO”@\Œ t«¿Ú0}3ëÅ(Ô­‡ñ®~¢—´`PŽiQÕƒTÃÆ0r:Xâ‘2avPÀÈ'ÔzUÿí;aƒæ zdqJ5XʤtãQÏ~ƒTšÙ›e³^YÛȲ¼h«‰Ô®%I ASŒ©ÆAàõ©.ô©æ{X¯e¹wµi#dAƒ"1 ŒïŸjÃþÔ·ÁbàóÈýi?µa#>hÔbŽuصº[ÞßXLe†âHäeÚ~QÈî ƒøŠ¨ï$ŒK3Ç$ä8¢uHHÿ]ú +iÔíÿç¨÷¡O²!Ñovg*°8 ŒûPÊʼnیó€8­©[“(÷À£S¶ýðäuÀÿ +9Åì øÌ‘Q™J°aƒÐŽøéSˆ®g®°‘‰%•@É=x¥Y¶f8ÿëS—S²`^ŸýjNèj‹[3KH¶žòÐÆÍÊ9 ÌÐ +ŒŒ…èÀ’är+Q´È†×‚õ®ÄŠÄ! ¬ª09;w{œq\çÛ¢ 4nÙ?Ê”]Âyz€OÊŽuص -Ø·É{£êrùw.Lª8ìO'GNµ=ÕÍÌï4ļŽw3lŸÀb´…ÔD€$8=°¯%œÎ¡€lj^Õ!:M˜ºïTúÅ=¨¢³†ÇD·ÝëSCÿô?ÈÑEZÜžå«øñºüE7üyÅþ÷ô¢Š³!ÿ þíBÕÉõ¢ŠC÷“éH¿êÛëE†Ž´ÿÈyþèþb¸3Ôýh¢ªBˆ”½T”¨¢ŠHbéJ:ÑE ¤=(¢€ôw¢Š ü&ÔÑEPzÑEè=PSEP(ïE¦O¥P0ì(=(¢€ÖƒE„(ª-RêAïE†¨袘ƒµŠ)€v¤¢Š@袀Ò–Š)€¨h¢’QE!ëAéE†ŸߢŠ‘mzÔéÔQE@ËÖ_ñ÷ûÃù×\zš(¬*îkÿÙ +endstream +endobj +7171 0 obj << +/D [7169 0 R /XYZ 132.768 705.06 null] +>> endobj +7172 0 obj << +/D [7169 0 R /XYZ 280.528 164.677 null] +>> endobj +7168 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/XObject << /Im7 7159 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7179 0 obj << +/Length 1763 +/Filter /FlateDecode +>> +stream +xÚ•XOwÛ6 ¿çSèuù½Z%EýÍ-©›¼uÝÖµ^{èúöh‰ŽÕÊ¢&ÊMóíí¤Úa'B‚ ð#(Ü"¸½¸^_¼¸‰³ ŒÊ †õ6JEyVY™FY)ƒu| +ã8Rùb)…áÕb§"ÜÛa!‹ÐЗ³ý®qcSéÑÔÄê½Ü~1Õ3ó¤P¡’ÅâóúõÅ«õÅ?<[PF¥Hƒjñé³j¾D¤Ê"¸÷ªû@% *qb¼¿øãB<Ú…˜ÛEšG±Jiëz«âpkÛÖ.â4¼oº;d©°oªñ0°ÜíHêès¤y*Ôíh†¶Hüûfàù@ïÌÀZo^­$16PÙ®ƒ0øÈ€Âf‹ð0’ìýÇø¨ ±ý,%"eŸ;;^ú˜M{}:B,O‘L£4Iƒ$•‘’%F ¬,NIåŒ&!ÏdÆ‹Ÿ÷E°²ÙSl'•åd}yfþÇÀDZˆÊ"’¸ŒÁésÓÜQl!-ŠËÅRI~\$"œ|Ûíˆþ)fÞ–F: Þ¯I…˜G°,à¨eþIHÜ’V¾ÂÈÊP£å\O°Áóý¶ihž£$5Ö­ÍÞ’vå§áôÖY¢6†DÃE–-“Àèmhõ@W )e¸Þ\ên‘†º`Ó¶HC3`Ø˳šq6Ü¡ªŒs^«Ìçl$ÑŽÆ{Ó¶9äåìädšÜÕÿ¥"3Öù†áÓC£»‘ û£:_ Õ#„z‘¦aôh/Ù±ÁL(ÏB¶”FmI¹OŒÆŠ¡ã"‘¦¡·«tzå…ÌgWÏ žJå¡cCàT3ÞÕê%ñš®? óÞ&'J[ˆ\8Ù™Cà%!ÑP*Á®qÉ<…¥ŽÄ>¨ÐÛÑtÜ{ƒñ²Î˜Ú‘t´ÄÚ!lºÚyΤg«F$yÓ|]@‚1gŽë›9¯)·U™†ö0öˆ=HcÆãHFa‡c2-œ }Ó‘Òp„°Ó¬ôlÖõ£YI(éû/‘Š·× »È“ÒààÀóDIŽhéÅ“æãžÙL¥7­Ç •«ÐA°ö8êg ++°}à`ôa…±ÚéîÎGô lj¯X Ú‘âxTd3€í‚(Øì!+íj•Íy:˜½†üÀªVá¡;Þ†ì$Eøqg:–;ÃLM`¢ð² ˜k»‰Ø>ÑÿrØ÷Æ£HìÃdxí-A‹"˜›‹)¹ »J î¯ŽpeÚšh‘0ž_{Åä$êê=S÷˜Âú> `°­Û£ +%Y#·ZyÖã“õÜî‰~ek¦¿¼LÏúÿëË?ñàAá¡7aB˜³Ïi×|5|E"§W§€‰ü¼#;bÝŽÖS[£ñ•À32ŠSªIJ5Á;@B.Ãõ|5 ¥/ËKˆ{š8TPÜq&øà:«l¹fËïŸÓ,Ð~»J°Q_O ‰}àA W Ûð¨«JzÂr8 ìÅ©¾fjä‡&xº4€çOÆ ! Ž;ÝÓÈÏÒLQ^Fc°C5GL|aM'ˆ¨¥9Îα{ó>›|{­ž6êó7`MÞTóW£Ù‹¥Îß™E”èNIø÷úêÝí«5©>zeqTærRÝëj°”4 ƒ>DLSk ·†„SksOã†ÕuýåàFd¨û~°=´æ£ñY ,BL^·¶,à‰”–÷?ó4"Ü;/ ÿÃsŒ=Âfôeåêÿ<租JçÏø¢ŒTÆ~ޚΠ§ß Ó›:I"V¦""¡AŠËX]Ê‚¾b!˜ò€gyOÚozXÀ£aÙ6¶°y`“öûÃéžnù_Ú§m> +endstream +endobj +7178 0 obj << +/Type /Page +/Contents 7179 0 R +/Resources 7177 0 R +/MediaBox [0 0 612 792] +/Parent 7158 0 R +>> endobj +7176 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (largedemo-wiring2.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 7182 0 R +/BBox [0 0 220 117] +/Resources << +/ProcSet [ /PDF /ImageC ] +/ExtGState << +/R7 7183 0 R +>>/XObject << +/R8 7184 0 R +>>>> +/Length 58 +/Filter /FlateDecode +>> +stream +xœ+T0Ð3T0A(œË¥d®^ÌU¨`dhi444³P0Q0Ó3Cˆ —|®@ ÙU Ä +endstream +endobj +7182 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172333Z) +/ModDate (D:20081204172333Z) +/Creator (pnmtops) +/Title (noname.ps) +>> +endobj +7183 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +7184 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 548 +/Height 292 +/BitsPerComponent 8 +/Filter /DCTDecode +/Length 39487 +>> +stream +ÿØÿîAdobedÿÛC +  $, !$4.763.22:ASF:=N>22HbINVX]^]8EfmeZlS[]YÿÛC**Y;2;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYÿÀ$$"ÿÄ + ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ + ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ +$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?Í× n€³ö=‡NýzTzˆä‰b@œ ØåHÂòãéRklí +¸€pO#Š¥«C*Ç+ªÀUä%ŒNìÃ#p,@ gŒv¥CHUÞ¡Rð–´¶f¿­o 'Ö›dúe¬qYH³½Òmc’dpO|õàw­­7WÕœ‘†¸aÇQƒŒSB{–n ÄHŽ@~ðÁ=xäw¨uc2iìÐÈce–Ï HUÁð¡ŽÐ‚2yç‘ÏҲﵿŽd³‘]"üÅfÚAyê:Ö’jŠw8ÅòîK19$œ’Orjh®f…JÃ4±©9!¨'ð5ð£éKœç¹ÑbÁ½º#›«ƒÿm[üj7šI,ŽÈ Ä€Lž‚“#F}(»zàH9ÔTžt§þZÊ}÷Ÿñ¨¹ëJ(L,¿ Í3jRF%s¾Ææ$9äý:£znï.$G‘¥ç$œ…æ—H»{KÆxP<ÏF€Žl Ÿ¥\ÕZ¬­þñ§õvê@öÍZØIk¡o\\Å c/#P;’q]Ö£Tμ>Ö¨“Ù YÛsœ³’k™¾ŒhÏ匧˜p@ê3]D¦5·˜›¨`p¤F$lncé\ì.±3o¤ds“ìj)®¬èÇÎ7PCÐ|&îþ‹$!pÈ㯯S[HdMÄà–øãùW1 k:m§‡ü©¯#ŽUfb„Ç¡{â¯/‰t„3]A9À$Ž˜ëø×BØñšÔ裑¥ëÐꚕŽ·Ï Q«¬˜ ±'`údV½Idr@²Fb*¤¶Î€œdzŠ¿A‘ÏÇ­4ÄÑæ¾!WUr_ €Äz úꎟm&£¨E +.ZF ðøÍoxìAå²D¸Ð´„6ç +1õÍYð>œK¨ÈpbLôÆcŸÈ~uœµcÔÛcm¤é¥ +Š¤d§,Ý1œõ®N÷PžùÈL„ÏzTÚ¥Ûjš‹$Dýž6!0x<òßYÓôóq0DbSó7v>ƒÚ¡Þ¬¹SÐÚ1Tãw¹FÇA¸½ùU_ï53VÒítЈnDÓ7UQŒÔŸjî ‰BùPåQxf€>µþÓ.d2M ´„’XÈÀŸ©¯ÙAh'VG+£xy5H%Måí ®sœûûU¸ü=wnÃÈš&90*?3]U•…µ„e-c(§å‰'äÔ‹™°aÜמN(öpjÖ%ԑΪj–|Ki¼¦2ÿ¯V`ÕíÙŒsƇUuÁ­ìpAý«Šñœm¥ Ù FÁÆ:ô \›[£lÇ÷r¨xòsÖ½LM«RS[£Ï§zuO=Öl%Óµ ‹)IýÓ¤ÿžAüF*Œ€Jg}½q^ñ I%¶£å”ùRc¸= üsùמ5»$Œ%FkÊzêw»=BfƒÍ A×q?•^²»·²¾¶¸…$oÜAO†©¼‚@ "(ÉQ‚O½:W;DaP0IãëH†z;Œ1äuÔv5sÛŠƒH¹7z%¤ìrÁLN}x˜Á©Î ž+Ï©YtåÍAÉϬç¡úSsOa•‘c$™éMlƒŽ´ü ðzPcrÈùI Z¤ƒÇ^)Ì>Rp êsÐSÎxÇ#,djäÔRžJ(õÕu{I\HcŒ«1wÉ ; +†ê [ÂÑDó@¬á͹Çä€ êp?zÖYšOï·æhóõbõ£UcÈ”ï+›GA´¶²›Î¾WŸå´YeS“œ¨ž˜ìiE³gÞš‘P?yèH'ò¬»X&¼¸H F’YGSÆIÏ`Nk´oÙϦGfÑÚZêaT±÷7ã9 n¦­ I³ +y M2ÆÖç,RÈîd  'Ðãš_¼ŸR½Gh`"@¨»À$uçÔcÓ¶•§Oy”¬›Zâb£s2¨O©êÞÜw©.¤µ»Hµ«X㺎ÑÌ…7nŒqžëŒPMsuBº}­©–Ü ¹Y¦=XÀœvíÛž*{MRÂ+Û©¤¸Épò UÎCtÏá[3hÚ]ÍÜ2¦ž'Šç,eIJ¢Œd£±öïX0Ôcšå,m–5‚ØáŠ2øÆ;ÇÔŸJ “ê^moM.Í6…ÊñøW7„iÌ7p˜²Ñ³¤çŽ½9ªç¿4ø¸‘yî9¤ÛbSheÝ«Y\4 ÊÅBÊ ÿ\T£­cûIÀ9œ²*‰ ‘늆t§ur¬¬Åˆ$àtÌÕ¢ ‚CÖ£¨9#éAJÂÄÅ‚AëžÞ”æ`£““ØRT\ž¦E‡3œ(< +ÝNöP,Rj䈅Eæv=“«Ë4—îfPŽNvƒ°üX¶žÞæòõ+%Èc#hÁä IÇj|ZrÞjζìÒ[†Â;–‰?J%- )AÎVF†ÒA£ÝÁ!îäCéŽçÜ’?:¹+%¼.ÃîƤ’;Þ´giºbA…-÷›»×!«ßH¤Û+’ ¸CR£ÎÏQMa©9%«5ËKvä 8 +1ÿ^©3Â…Ã;‚@ ÿQV“6#àŸoOγ®8y#<š¤º#È”œ¤Û%7Û9SýáƒÀš½ƒ%„  1®œ•ÀÏrEbFŒÒ.’OVÌÍo*«í2YHûØçü?J¢MßJ«¬ÌˆÇ÷–í÷½AþµßC0{t‘ˆÉã¦{⼂ÎCÄN¨Ü c‘ší´hš-a¢WvYmüÅÜÀ÷‡¬ œos É©XêÄñ“À‘Hl`ƒšÍ*AÁ5WP¿k 6æá[æP¼x©-sŠ×nN¡®]Ü)ÌaÌhÙ^üpOãLµÔ/ -d—R}uŒ`IɸÏ'žj¸Q–OSÀÍXÒâ—wrÄÔ;B”ª2©¾iØèô­5š%8·_¥u6–©oEP1ÔŠ©¦Öˆ€ì»‡í\à®9­@0É8îzšÊ„yc¯SJ’»™"‹8ÀT"éPEIbG‚iÜåqhÔÉl¬T¼ .:cœ×a§NfÐíï³%”›_Ô)®*Ð’pXèO\×Iá{‚öÉþež"q‘Ò½ <œ ãØ㬔d¤ÏFš$Õtia$bhŠçБÁü+Çæv†yVDÆ*ÃЃ‚?:ôïÞyúpŽZ2TýGÒ¸_ÙýÄláfhì9ëúƒù×$ãË'¦›Mðæ/±‚¨É 8¦À¬îcWž-ùÓTÄ9 JBe•îHÅf7¹Ùx6F{mOL,­"¨¸‹ °á€>à +°×LqÏnµÎxvú-/ÄS£±Rá$Ü0·òÎ +é5;o²jÁ•\•ÿtò?B?*¼o©t]›ˆ ² =nÁLŒVyëž”ƒ<ŽÞÕËc¤Ò[¥îp}iÿjR˜ÏÖVN'éFHéE€ÕY”’2ãR‡ Ö1vzÔ‹+ÔñIÄ byëEg †õ?¬Ås é— •cn¤u sÇæÔᦼeYìö é#88瞇¥]Ôõ'x.ã’ÎXÖìBQ¥$d Á'Oÿ:§uuÓm­c¶ˆH§{NX‚>è `ç=zW­±ä(«qKia ¹ÓåÓÖu\ÈHQÀ;ˆä‚3êrF8Öï@{¸×H]ØV¸Hå9çÇ88àœV‘v,Ú[o ìª~Y·œÃ#ó©"»šM+smB²„ç±g߀=x#ØSZd[7ÚŒv7¶Ïmo2î&Å™›' I ŒàqQé6<W¸3a€û9e`$1È$ã ¦ê;öÞùµ ûæRò¨æ¿ºitø’’#«/Ë.âA'§¨x¢ãKK–ÓQ½ÓíDcQ–LŽEª’¬Y@' zpjÇÛbIÝstI9$@¹>ù/Sêé}nDWŽŒ%‘çùå‰ÚÇäc=3Y˜ç­ ö!³^ yíf¹ŒÝ41’ mE$’ÉíëKmoip²¼Q^:@¡˜©PÃ$‚OcéÖªZIt¶W&)ÄP(ç ÌÃnÁ ‘œã°4ý4]ý–ñlÙ•Z2e+×`# ŸNF}©)1Þ#‰bÖ˜¯—‡8(?fc·jÔñ!-¬1#Ÿ&ýµ—j–tGbHcVs¸àùÒÊ°…, \ óÐÔaÂdžóT¦”ÊäÒ¥îZ°3ùÇ +: +»œÍqÀÍW¶Œo¸õ­»Yݘ*ò¥'$aJSvŠ!Ò¥üR´+*ÆÙ(àÜt zë´È­ìã{Ë•U\’#PsÐíYQ(LÈüž§5SPºšõY-Îå@AÁè=B•ÙéûP§«Õ“Ýê/¨^36ƒŽ:Ú¹ÍI³y¸ò3Ž=«KLBªCÎsYwã÷»?κ0êñ“91Ò÷`–Äáƒ:‘ò®ÑžQQʬÒ62T‚qÏåÖ•X9íJÒ(RÉ=03B‹z#ÏnÄd`( A#«V¦pH)\ä6¾3íYí:‡Rs•ê1VVEeÈÇ4ÜZz…î:Ø3º¬ß8ÉÀ-]†®ÉÕíb1¢ª£"qŒã?…r–d»U`ÄØ × ?•nh³[³`ŒÀñýkº…8º2os†¼ß´Hïï†ÛYdUÕI÷ WœjÚÅÝíœPMF²âR²HíÇP3ëé]߈uˆ´m9¦p¯3åb‹?}½ý‡Sÿׯ,„3È rÄòGô®' äΖú*¢%QK±ƒ×ò­.êÎ[h,HÏM\{t±ð»ÌÀïXD™ì¹ç‚ŸÎ—I¶7q\©eYÝRy?ιkIÉFš6¤”"äušD‰q¦Ãp‘˜Äƒ$ààgð®â£¶‚;[t† B ÀäÔ„€HrIí[ìf8Å1‘\ÀiÿΊ`eß[˜ár™ ©v⸽Pû4iks(UAµ”àLŒãñ¯E ¬XV*pÀpqœÀΰ5 ÙÜÂÒ[BÉ1u%Q€dnÀïnHEfèJ×±j¤[µË¥™ahòpFO_óŠdC¶X´àyÇÐ]È +¤’p8ïJªFâAÊôΊ4ÿx®…R^îŒÐ‚áãUhÙ”Ž2 ŠÙ°ñUÕ³lŸ÷È=ëXqZ̶¢vB"gÚ¬{’3ÇåU®ƒ,ÊÂF3î+—F.lõ©ÅUéõ=KM×ìïÔl”î¤àÂ¥½Ò,µó^5Yñ"Œ=ýEyM´¡¥cƒÃŠë4ÝrúÉT\)¸‡ûêr@÷ÂéNÄâöªÕÙ‹«hóÙ)m›ãÿžŠ:}}+Ÿ–&‚¤}Ez]–£m(ÊÁ†<þVF³áá&éìÝÕ¢=Ðö5¤+'¤·=J´ýÙýç–ÝÛ´s7g5YÅtWöä±Ü˜ à‚0A÷œö¤ä]&®ßMŠ–Ìà Õ­g/‘~’œ6 ¬¿,¡ ŽA殆ù"“¹$cã·õ®Ü­Q.瑉¦Òhìüsåê×çår¨ÿNø›k›{+Åuš&?Q‘üçXº,ævÕÁ;]JŸ¨ ÿS]ŸíÅׄîrcÛ ü?¡5xÈòÕ' ôG«à‘‘žG­M;Æˈ¢*AÉbs‘ôªì`±–ûÑZ†ÙaEÂ0uËÛ˘àK›Al¡™$Í…Sž8 Áçš©y{æÙÚ[¬QÇ9;Õ0ÎO''' g¥ÖßQi¡‹P€@b PNì É'<¨¨õG¸u¶‰Ñ£˜C(RÀœ’H<ñô¯UžYcGÔ.,â˜ÚÃæ¾ÖÜ e€SÔž{T°$ÿbÒ¢‘-„dxÈ$Hw8ˆÎH#×Um9õí'û”.Â$d óŒõµfÅî-ÿ²íÊy3K ‚S’¥ò 8ÇPxÏz¤…þÇ©·fÕ@Ó/†¡%ÆãùYUîà°ËdR Í2Fi4ÉaûÝD‘Î9 +Ç?­:ö ÖÔ¬ ¾™·H±¬O¸°U$cwóî)‡A5èn㸅®îVຌªä`:äç¾k$ŒpA­-j) ¿hf¼û\ˆ6–É%y'iÏCÜžMgúR2fžk-Æ›tÑ\Ì¡I- d@Rw‘‘ŒŽ2x5¤2=ÉŠO- +áÆpHÈ8ú éV-l£}kÓ³‰#p€ †`z‚N;{f¢ÓíêÒð™ã„E󽱸ŽÞù¡šD_ŒjíëäÂòÖY “À­oŒkÓNíš×;q>âQzw>µ 芸O1vÚ§å­K¤˜£‹m Ž3Œã>´ë &L‡hUeRX€2NsÛÖ·g·X­ÒÖI‘¼µ ‹cïr Îp8í“‘éE¬®Í"œ¤£.  *qŸZÚµ‰b@è9&¢‚0£§ÔÕË9b’b˜ žõÏ~f{QŒ0°¼·)Kp.ÃG“Ò¨MŪ€Nr;Ôw5•ä¨„€¬@Ïpyò"­Zê +àG0tçš¾WÏ«[Û;²ö“4OY°XðOB)·ú)o‹÷‰œñÁ éË"™mÜ€9ãµZc}¥yfò2`pd^TƒïØÖô*¸=´9«SsŠÔÆk$Ë„R Ÿ”3WÛ€3Þœ,‘Nån½¹$­v6W4¶ÐÊ9* t0Xé² hímÎG#`Èú×lq£ª‰çN•^ç–Ëa„ùšE°E'' ‚1“ÇkÕÆŸbIÒÜ•àâ5ãô§ 1ŒZ@3ÿL×Ò©â©¿°B¥U}£Ìtûi^ö¶Œ4‘ôÚ¼‚ cž˜&»-?I°Ñ 7×Ó#Éî,~ê}séúV¤ÖñBÄEF]ª*à|S«}¶ëìp7ú<-óÑß¿à:}sD[ªùa¢-S·½=J:®¥6·©µÌ ªt‰3Â(íõ=Iõ§ivÍ<À($“€©àRÇjÐi­pxiXFœóÏ_Çÿ“Vãg°³I!ÌÌ23ƒÜãÛ­cŒœt§_UækøŽh彶ÓíÈh¬“iÇBØþ@cêMP_ÜèŽÐ[GnKÒRH<àdØçñ¥³€`¼ªJ³6z2I?…r·—¯-̲ñó± c ì?*ó)¾z—;ä­Ž±µ)ŽÆ½þ³ª4¯º„ÒÂ6¸=Ž8ö®ÏIFÔü§Í'”Ñ€Oñ)8 ¯?¼TÝBHhÜ­w?çót»ˆ†ŠPØ0ÿj“³º&i5c xsTdÁ´nG#p}y¥Ôþ_ôB6ð>qÆzãšôL +N+­ã&ú#—ê˹ç«á}MpEª‚?Û_ñ§ jL~ktÿ¾×Šô +(úíNÈ_U÷8øE5#€a‹Ÿ¾*姄ÄO}µ˜ˆ×qÜžÿJìê+…Ýø¨–*¤´eÆ„cÔåõ˜<Ý2dUÁŒP\~®2í +® «`A˜ë^‡*GFèÀƒøŒWŸÊ‡k¡p`úþ¸®i÷=¼ æ¦àTBUÀÁ*pHÇõÛþ"g•‡øO¸ˆ$ŒÎ êÌÌ‹ #9-´qïZݱµÔ&‡h6+`r?B+,­\FwÉ'¢_(Å ÄŠI–VÈõ"µ´ ÿ³uËYžádc €6NÖçÛ8ü«"2ˆØÈlç 1I , ŒŒëAÎÏM• r:cî’*$öïRE?Ût»ÑŒO Ž—ƒúƒùTdõ¯>¬ygc²œ¹£q@ÈéÒŽNŒg'­)<Œu¬‹4€8¥bN½M0¶§Àt¢›¼Z(“Õ…Êj%ÍÄW C1C¹<) ;{ÔšÀÔ [›õpžPîÀ~ƒüôô¨./íî^K6w3¿@ÿZ[Oí2ù³Z¤®(/+œ8ž{ Üò]‘cN´¾›Jº{Më]ÓänCØàsìjÆŸ ÆMÚâY!žq¶6*`09äsúÖž›cÔ(öÊßed*ÅQÁÏB£.8äçµZµÓ-—ÉšÝJca¤cŽE4„Úg(ÑgCF$×­ÁÇ]ƒüh»ÓæƒR·‚gO6ELø*zémtË8í¢…VêHd•¶¬¢&ÃA<ƒŽÔ‚ÂЀE³e0àˆ‡Ì ð§Ž)ÛQ­¬qú”1Û]˜âó¶…™° '9#Ǧ@5P8Îr8÷®çì*Ìc´rbFBÈ$íäaz Àþ²¼G8±’+{i9†ZM’À `ƒÔñI¤µ%£&Õm&°¼iŠ‹„Øa%ˆ'' xçÚ®h–°Ïæ­ËlV…˜1Œ`ÐgžOµfFøãý2qôäi’j—‘¡?l¸$Œ ÊßãRåb¡{Ùø¶æ7ÕØ@Á±JÄà„^Õoi`J‚ ÇqéM¥–$±9$œœÕÈÀPjêuÆ û¨ØGH-‘5÷@d™S# Œt8>戣i$-´cœ*€?*µ¼|n'¹5j Um÷vë)ÄÌGåÁ¨æuº”# ,9ŸÄI¨$öKåÂË‘¸A¦yüªÈ»I !ÁôÍG©ê“ê!”Gd°E9Žrr@Ï\Sc6ܨûÀd}GJrŠ‹Ðâu¥ZîDšË‰.LŠ2T(<{dQG‰ncº¹Y“NkÆ lr0@d\U æRêÇ™ƒžÄtýk_ÄÒê³ÇnÚ•´qå1#p$dàñVµFG¡—§ê3Ú0xÜ•#‘ØC]¾«ÛÞÛˆT!Üky9Vû¤ô>Õç°›HÉVƒÜWS‡ÞöÁ¯4Éž6;¢'¸{•£6µãviÝè8Ýs¢1V^^ÕÏ#éš4­\ùâ)wC2œ0a‚=ˆ¬Ërh§ r^;ˆ¾\‘†ÐúŠØ½—NÕí¼Ë¦û%Ú–á~ dþW3qÐéí®„Š7`ÐŽ†¬×¤ë¦ÖSm4‹,yÀuÎÖ÷ʺصí"«Jª¤¨\dœt¦ÌœlbøÛW«k u8<ƒÊ'B~§ üOjã4M1¯®FTùjy'¹ô¨oeºÔu9&ºÏŸ+àƒü=‚aÐWm§ÀšFf”å¡f¹ôú“^…ÕvêÌmvdjûeÕa²ˆ¢üØo8'ò’FÓ_ˆ”. +Æy?ÇçMÒÕ¤»›—r]‰îIÏó­-&ܬŠÌ¥‰bÄž9'$šñ±¼Ù´«~ˆ§â6W•6ä#8 +ƒ’âk‹û<Žä„$zŒ×I¯ÞÇ©Í+#€GÁáG¯ç­.ŠÙ°v»OJÛ Jѳݗ‹®éÇ™õº”|Ï#ÔŒU‹ ¬#)…À!²x>˜¥¹_*ú@!ø5%Ú£Y§™¨Ä +~b{gµhôкræŠf††ìmåF!ÁÈï‘ÿÖ®ÖѼÍ>3ßfáÅpz<¨ !‘Œ`ãžk·Ò[u–?ºÄZÙ;Á|}ÜL—s‘¼Vhí€Ée–HI>‡8þUHÚÊXÈc1ÁV<縅jëP^€@ò®\‚À?ÌÖd ÉçEH!³žç¯ZÍ£ÒOB êü;Á‘c 1 æ’âÂk9¼f3ÙìOOκJkÛ`OEažø$æ)þ$Œ›¥Æ|ËpãÜ©Ïò¥e¸s;ØÀº]ö¨Z3ÆH/´€ÇÓ8þµÐü>¸)ª\@lj¢Ü>ªz~D×?ºYtæ A½€ÆAãŸZ³á;•·ñŒ¥€WcÏ£êEK±ë4Ò)­4j gPRNV½¹l§d˜˜©Ü2~8§©7-Æ $°ÏLþ¸¯=²ñv¡ ½µ¤QÃ3ªˆ,H$rsɧ¿Žµã–ÎÙ˜cY” Œƒß=hŽþ‘†Tjóöñåÿm-@ÇrǟΕµ½{6{5ªÊ¢³& ³Éês^­áY7éQóœ W”ÂHˆ#LúW¦ø5Ëi‹‘ƒÜzW«ŽÕDói+]·íJ_ Ô²ŽxèËÁýü«‘p}Åz7‰#š\Öå—'°ÜAý?…yìªÊÄ1Éó§Üî†Ö^1 g+… ‘ƒž¤wâ–ÚH,FSp™¤·™¢ ª+r ŒŠjÈé6â s‚¼géI5c·ð}ÇÚt=BÏ5³‹ˆ”œ§¨BçV™Æsž+Ã:”ðø– »¨ÂÅpM¼…#Ú§wLÇP?ZÝ»…­®&…‡ú· {ŽÇòÅsb#ö(;>QL €GO­<Èýj¦ïZ‹dW%Ž’ÁÏÒšeÎzu¨ v¦g$ûö§`,4£<*°$”Q`Ôå‚úÓˆ÷ïZÎ óã##€NqJ¶vø,׌“’=}1^­Ñãû6t> Ó¯mæû\ÐÈme‡÷X`A%Î3ÆEt6Vo1ï·pà’pˆ:’zç=늼6è‘êó„_—ËY\¦0qaHfVmNàóÈi\‚??ÒŽbÔNÒßO™a¶ †GrRíî}4:L Ù…™Y™‡–8{‘\9{2C=ã¿PCqî2Jc6•À.89ÁãÛÿ¯U1ò&³xÚS°1É5Ì¥¢PÙ*6¨Éèõç"¸9 É#I#v$³’IêkigÑцÒHr@ü±MkÝ-qµ3Ž¤± ý1Ò“i‰Å³¡ü*¤¬Yð:t·¨ÞÚIhVÖ0œ2xö¬ˆâ ä˜ô•œšGEM½Ä`*Ä€Iô>•vÚ÷8ži[ˆÇ™!Þ´“Nd8 +; +ËY3ÐRß©$÷ÆÔáGõ¨3ùSsíNµI#†s”ÝؽªKwòæÁèy¨³HÜè9¢JäÅÙ¼CÁ#€ÜŒv=ëGQ’ú÷K·¹šíg‰‰EB0ÑíprA÷ª—íjàe—š­·h÷•\îöΩ‹.K©.¦»e†áT…xÕOÉ +9ük£ðŽ¨ðyІÇˑГŒ‘×Û"°$3˦‘DÚ¦6-¸Èàwã" Ó. weÞ +¤‚3Ó‘Íh·W-»ôÜÙñFùõÙå“°@I*W ÷Èš§e¨4d#œ¯L犤$óæÊÍ•R±$œvæžA6LPœçn9Ïnyê(©} iÉÅY›ÚGv °²u t5&•«Ée0·¸$À&°¬¯ž0N= m‡S€… JŒÔGMͤ´:E²³»»†óh2!È#¡>¤zŠ«â‹°òC¦BsŒI1øêÿSøVeÜšd©Ϻ8ðTú[w±^¯Ú#Pe¨þ!éTäÚÔæ©Ëh™°Ç± <ã>˜«:­ÊØØE lË5Ùò€éµzøôKcn3JLd Ì@û£ÓôÅrzÝÓ]ëË!ùC*¨?£ ýIükŠugÌöA¨Ç—¨Éàˆ8¶L‡ r0ryà*m †u\íÏ\éPžU™# +" Á‰$HÉêO$TzEÜ0I7šÂ$` +äÏášô ÒhçÅÁÊ“Kqšºì¾c،Һ“`ä)h‚à ö=3Þ“U¸†æuh[p“‚?˜§Û ’ÚR®ª=Å 8b?f”µnÅáÓTÒš;¨Ô#*Þ¬ÎxÆGò®ãEl¬Ëîó¯?ÓåÅå³²à™Ž ä~µÝh­‹§CÆå<} i `ÎZþî&/¹Ÿ®ÄEÝò€O›lX}FúÕƒs8û;`•  ŽGpAç&ºÍijV¬pŠÈIïÆ¥qª +ùH VPU›8Áð¬Ùß? H`ñ'”ARÈèAN3üÅox¸µlpá¢>àþµr‘Î4Ír ßt‹b0YëÎy8=Íkjž'³½…(nã‘\ +zÚ’vÜ,ïsÆ6”ÑÊ`Iã·J­¥%Y*c`Tz`çúU˜Þn¥'rDò29ÅWHšPä… u´¼ËÜôË먠³È£b¤m žAê=«÷Y­å$.À¯Ì¸9ãŸÎ®.oü!)ËŸªGé\É""AÎ)ÊM-¼.ZnOtA#)”* \¹ù‰#œóô¦]ªE Tt•@ ²ôÈ8㞘Æ)ÁäÊŠìq’1Ÿñ§]ˆÍº,%ËŒÊà9ÇÐÒNèæœyeb‹\ªä8ǯ9üª{IŸU‚ryÆ+:Ebíž•cO}“)$ðàç¥=G(Ù\šGmÌ5Ú¨êOC[1ß  aÝß»‚0FÇÓ¿jϺ3}¡ŠùžJÀ8ŒzÓ´éYÑ—–RpFpHÈ4ïm pòQ¨›èªÙèqùÔq9óv +’ d€8$U™Àh\c¶.j’» à­JÑØØ]\v¡xF…Žw/'c=9ÉãÚŸgMbNA Óîʵ¹CWR0Üsë‘NÑJ³MÉ8Ü1ùéNHåÁ(ºœ²%KuF ¤äè´ùæÍâä*A÷›ä ?Zls›YX €ëÇÖ¡«›`“„jAlW¹µß¡ËtèXBê8êpR+ž/™JG´dqœ×e +\ø;Q\CÇu;¿¥qÏiG ƒ“éYP•î‰§ T§§A`8^z3ùŠô16lNzótDÄÿÖ½ÁR…òs“šõñNñ‰æÓV¹‰{©}—YÕmep°½Á »IÜóØ€r+¸“Ì“ ²+#ÁÇô®²îTƒÇ—K0WŠI‚º°È ×éœþKÅ–Ko©ÈÁV@09Ô~µÂÕÑÕkIäLC ôçéÒ@ÄÈÄ°8$•Fx`{TÍ+¼È åNr*PMY’“u4¼çò”‚ ¶#$=G5è—.5;-I@ÅÌ ¾;0#ú~æ “*dTœ’@Ýx2à\èWv†kGócÿu³œ}:™®h؈¾Y&9¡9™æ“É!«ì ×'ô¦²ëë^qÚSh9¨¦˜ŽA´ +‚´Â„sEØ#<ÂsEh¢Çs…Ò 7jwÌ3“W¤Òe˜œÏ­Tðómœyõ÷®ºu 3êò¯J*ç Ž/n& +G€?jÝèài³L¬Iê:ͼSÂ0Cë`]:d<†\ýxÍWÐ$ì®qzeÄV÷±É5°ºD$˜KÝÁ‘èyü*«H%¸'`@Ìp£ ÉéNRð^HèŒnx#Ž @…ä¸cqoNôɵÍÔ±®’-¤‡m³ÈÌd'y +YXp0:qÍtÚ‡´» §´Jà’ÅØ~€\zê3™—Í9 D¤uÁ~€×S¬,ü!j"aö™·"óÊ€pOø{šwIjJŒ¥+# V‚ÚßQž+T +Šä*‚Hú’sQÛC«Iq"F–Ȉì=M5QT4’rO=Í6Ú]:hîŸRg/åâÝT¶g¾=½k$¹ÏFRT£e¹“4à1àv ¦ ÒEþ­sÓ§Ö­+hŽ)IÉÝ€§/$sUå©zT^cxÓW/`æŒqÏ"«Å)Ür*Ö3š7ÃìŸ Ñ‡¦jʸhÈ;OO¡§1ØÊãªõÇ¥[ºEž•~ò€O®+7£6O™[–°1çåÀö‘Ò±fS˨8²?˜­ÈB‹h†I89œšÊÔÆ'Vä`þ¦ç¡^)ÐŒ‘$a~ÖÌGË Þõ ñùÔ±±’ÖV + +»ã=y¨mØfpNÒTŒã§OçJf&Y°¤ÎXšq×CÌ©¹Z%/ PäñZÖ6—M ×6àˆ’A<à “T-j3äð?¯ù÷­G¹híÒ&°Lwïƒí]ø˜Æ’¶§,j56Ñ~%´× Ë ·¾÷R€ÇÑ©4}Jk·±¼ùd‰Š°'##¸=Á¬È {™¶\œã8ªº£L³‰% ³ ƒu#¶kËSOC±{Êç¡êñLú_d«"’ ©$¸ôë^w«J‡Qm… +•Sò“Œã=ùÍu¾×Qo1ÜŒ0A¬ÿiB„¾·PÑ0Úäv=Ž=;V‘µ¬Œ\5Ù—fiœcˆÀ‘ž£°ïY²1K&H zÑ·yѤ–X¡(2UˆŽ01ùôª³6.÷Üy’Û† Ä1؟ªÀÛH¨gU%'§éZ61y¡C#…Á‚ðO¦~ª¥ÛYrK6F*ʼn VÊV$ØÆ@÷ö4sbh™šXØ6áÎÒ1ÏÛ¥vúdƒíÑ0èÙ{Œ×,eg”©I;FFJç¸Ï¥t:eöéìUdŒ“€ã@ãðOÓ5tåk£—IÉÆk¡¿â+iI$Ê?Çõ®>ív\OŒpÄ·û$gv¾ BúDÅ@,€0äö öúW©ôÉ@ádXÜ°íÁ¡Q(ê +¹‹Ê;”®XwqÏ©±ÊÖ¯ßyml‚5*ÊÄåˆÉ²sÏ~ÕvßU f6Ŷ S#F71“ïQk•{6RIJ‚§ÀÔ·a>Ðd‹"- *“Ð÷Ó#3Dªˆ»\¨ÆàNyõ©u VçË“bÅåÞøs@Öç]áóô) #„‘Œô þ¦¹©SèNÊ‘î8¨tûÙ¬££•ãrÔ¡AÁÈ=x5£ª" BsÜr$_£ßÖ‡ª= ½ûÒ‘öÀŒÍò€¯+lÌf63L†N à¦GãP.UÙAÁ GÚ¬F|•xÂÂìçK`‚0??ÐTÄæÄG–dV°Å"ê =ÅUtXæp¼`œb¬ÙmGt oQL¼P' þ´š³;yTð÷H–î&ŸÊu Td7ŸjŽÕˆœ †È@*V_?MUr¢8Ø‚B’FzdúUdÚ®¦)ªëTûœ¥Ë$Í"1ôïYŽ,?ºx#Ž•ªH#8É#­gܳŸFÿJ—ÜöñR…Ëp +cDYÕ”’¤“GSŽxâ©é’ˆuÎ~S•'ôþu5™*FÃ{¹Hôé“éU¯Åzå€qÚ>€v§Òç‹JNLé‰äô>ÝjŽ EaÕO?YYцŽ=Fjµ nø<ŽE)]£èq0S ý Ï ;JÔ-º†V }Wá\°ù—¸ô®§Ák‡!¿ˆcë\Ôј®$ˆŒv_È‘ý+šž“hò2ù©BH¢£Ê= þuÞx³ r{u®@òæúŸç]¿r#aÏA^­wîÄó’ÖG5â¶1ø®õÁÁÃåZØñû~‡i|'n×r3ŒŸÀ¨aø¹‘¼K¨0DkgÃçûG÷–DüéÊ{2?Qú×26{[òG>•,+ˆLÒ +8Kú©n£d†$ùÔP0 ³´òH"£fTÕâš%Xã.B–Øx-Œ>•»áKÈ,ãÿ­SKâ4Ç_Ù]µÊ‹=ÇQ$g¨®ô3¥£ÆøŽyRø×odDš|Däü¸?‡Æ^ÄÔyWM8è¿¥9isj2æŠe)|™,ÙA1<=F:Ÿ­uŽ´‚(Ý£‚J‚H ýk˜‰ÃC$+‘´‚pry9“ÛœÖççRo RH\g¸ùŠ„õ4‘Ÿ­@±=Ú¢…1N`c†ôÎk>é‹Ú…“&8ØÀƒÓ×é]ˆâîèĶۇ¹RMsщ$´t&]ι zg“Œv¡¢¢Ë^S\ƒ¡Yƒ&zŒÔV§‰b ¨£€H’0}A#À +ætéÄ7ö×#•HÏp?¥vÞ)B°Á ÇÊ윎ÄgúRZ«XIr×õ8¹” †ÀêÍ>ÑȦ9–EÛ…\ž¸À÷àQt6º7ÔEe@²Áà +œ‘ÔTÄÛzàIˆW\ãq+´r3ž?É­èpqEäo±4™,Ùà €00qìEIt<ËvaÛ‘D0šœ¢2Ð4‘Í;@b ˜½~µPym”„8 + 6zSSY1*‚A`W!ˆëêGojd»RàÛ˜Š¶à ÝÁZÇŸ%Ë+Щ ä UkÁ·¡Å:ÑÇ–T€NµIrKÀØÏÒ“=È>z%kvA¹X>ö#iŒr#òü©u(™BHXHË¿'‚9ÀüóQÆꬨa‚1ü¿Zµq›BêÃÌP©#8 õ<þ”ã±âÔ\³-éoæÙ '•ÊœÿŸCWd ,{×iS“Œäõqžµ“¢¹ ,Dã 0N+]Š .œç4ì¬} íh/Bÿ…$Û" ƒƒïYšô>N¹x½Œ…¿þµ>„Æ+Ç`ΗÆQùz ˜ VüFAý1\É{ëÌùì¾\•*Aœ¼@›i‰õþµÝx%HR}†kˆ·BÖL³?™®ÿÁÈrp£’O`+Юþf—ºß™Çx¡÷k×` +æ³’AÆåSx6ïÉÕÖ3³˜>§‘úùÕ=BáîUä‰Hy$f`Fr“ŸÈŠ£k3[Þ£¨*Q†õåX=qÞÌÐñ—Ùµ£LlV$Ø‘ùd°‹|Šíü] +ÜAi{@š< Ü3ïÉ…q2¥½ËÃbÔó¤ÑÆ©qR9cýjl8È1G! \þu$wrÅdm×Ê*À°†x=G?Σµ’Ky ˆÀ€èh¹•ºÏ‚î¾Õ ]Y±ËÚIæ.{£dñøîý+H€÷äW/àÛÙG‰Ó~n‘£p Œd˜#õ5ÖMŠfŒœ•%s\¸˜ßÞF´½Ò1ÁóךV9#Ž #)øà¸ìkè€( žzQH>œ2N =¿É¥iÛ²UqÇ$g…bͯQHápFúÝé¡F"€Á8×ÞšnìwLþ½+°PFGNâ…l‘Ž‡¥Rl\ˆÚ:b|®Æ6ž8¤µ˜êÛ äa{V)$¶98¤# A àÑvˆßþÕ·Æá #†9üêHïEýÀb0Àïœgó®l1è Áì)ñÉ"d£²ã“‚E0JÎèØš% áNT’^<¯m}5ž‘±T18# ©ëÇ®@5E'‘_prO|œçëëVË,ª% +/Þ__qI+Í©jG$gýÀ£ó¨ÁS!UÉQÈÈô¨„£w(pxÉ#ô¦gfX ½wøÔFá²vÆHõ&ªÁá†sëRb@2(¾x®;’TeÝq‚zRùˆÞP`ä°Ï­)Q€w/ë@¬\ß`wç2zUù$¿>C˜Îš—giãp©üq‚k ݇äjÒÞN4ö²£y‚_/±ŒçéÇZkjhJìÚs¶8P ã#=ꆠNaÏ 8ü*>M¥w¤r;šêC:Äòd xJIXÓ›Ýc 8%¸óߊŒHrNÕ'9ÉQOW@¸*Ä€yÝÇOLUqÆriÞÚ£6î¬Z¶™[;Kc€ ôèº%¶Ÿ%Ô€l ·ÐOò¯5µ`$É AÉ®®OÚ¯‡¦±‰dÌ¡Yˆ@$gߦGã\µá)µb£de‹†¹7R̤‹31äsÇÓ¥R¬jB¸rH-ƒÐt«Ö“y|…+½vìÁnçùgÚ©˜áE"w9 ÇjëI+$g{î]…™äG$’1’On8úV†¬´Y”‚8äÖ³ Fàö­‹åótöÇ9PkÒ¬“‚aú? +âeŒ,„À<}+°ðœÂ;³ýÉ£Áñ‘ÏòÍsÚ¥¯Ùoå„ÿË6)Ç9ðŠ¨è”y'ff(%Ö¥$9¥ + 8…NìÔØçnîçYðúÛÍÖ¥˜Ž ˆ}Øà~€×gªE¶upQÇòÅaü:µÙ§Þ]Ì’„Ï QŸæÕÓê1‰,Øœeaüó¥R7‹B§+Næ& 9§©ÈÇš`‰AÀƒÖŸó3c8ÎhÁÚH?¥ ÔU·È;Pzdtam¤W,åŽH$Þ•_ Éàú +P[' ÏJ`G*ˆå‘ŒåM,±":¦bq‘Î1ê? +tªMº¿R§ô©£f6°àÆÁÇÐðZ–ìÍ ¹“FAÈb= %9ÁG¡4Ú° +3E4‚¤R08äg'Ö£§)Á„$©eȆƒ‚¹úž•¥œb©<}M>£[2»*3OcLÁ8'½"Pøø'éR{Tq`ô©ÉÀêi /ÇzÖä4H±Œ’NF* ë$¤¬a œÞ¥Ô|÷¸S0bÅ)*yPzð4ËxœþóiؤqÐõ­9³¶†nI¾b9$û“œÖË&–FO)Ôv#ÿÕL¸²+p-£ +m]˜^[*ãñ­Oì¹ííÄcÌ ‚¹{f½:©rE'ÐðëÍi/3.Æý^Ý£l|êA§5oHŸb´dçiàŠåSÛ © ãšÙÓ$xÜ(Áó=Ï^¿…xò‹nÇ¿%gµ‰µrª·É€ ž•Î‰äX¼¶Ï¸æºiôÙ'v™.eŽb?„ð8éÆ dI£ß4ÌÏ ”÷bù'óæµT¥‡"Æӛܩ\Io(^c@ uÆZ¿¡©ß4­ÀT' {Š#±á d-ÜôúTöðÙ^å/† +pNáÆO óN §¨VœgNÉîtº4Ÿé$vtútª)™ Ê’Ê­ðF7( g¿j×ðþžÏmÉa°.ÎI=ÿZÄÖm^êÿTHÎ^7RŠsÎÎ*¦ï±ž.iœ¤M,…"$ $œõ¤2JÒ™ Œd'%‰$çêkRÒÚæ8¥iax‰*>`G’~ƒœºD˜ Ãp<ü£ŠÆÌíº(¶•vmZä h—–!ÆGNÙÏJ¢Á†0N=t3é2_†š%cå­’98È÷ÅV]à ol¡¢ÃæF:†$c?L×±XØ=®—h‰óyp #¾p ýs^Y=…Å´[ˆ =2k´Ðu}wPH¢ÉXQUZVŒœ1ëÉâµ…95te9¤Ñ‡©Eåj711#qìNGó¬ ¬°u×oâˆTj»Ÿ$˱qÁ$dÀè+–¹Ó÷ÜW$dcŸÂ²iÜ÷ç V¡(giXì^Aæ´×NA»{>w  Üç'קOz½œ^YI" ¸ dò ïJÌžrZœì +™²pZ‘[9­ ‹8`˜$dí#-“ÓéJÖ n ÙÇCŒsI<<®×b}:ÕWØIP8'Ò¥‘Œ2£G#n;ûæ¬hVòÜ«[Ã9,{ g'Û¯éQF²^X@ÜÌÌð¹$çð5Vº;hÊ0§}JÆ…ÌMvŽaÚw8' ãûâ³–6w ÎO­BXÕ”c9üqRÚZGq,."XÉ8'>¹'JÖf8ŠNU¶F4±¸•a W'hn[{w¨þÏrÌÆä÷&º¶O:â(‘ ˆ‡.N ÈÔqšÉlvüéò³\.aÌÌXÃAr»† ã5.¡)¹ÔÎB…P:pOêM3SSÑpA +Ár°/3HyÆI­pñ¼Ï#F4ê¶ÝÝšò=Ãbyî3ÓéIãÛ ú¼6èw-¼!N‰$þ8Åhøl¼8PzT:ÒîÖçgUl0ÆåÏ@;‰6Ûge + +u9[‰<`gµY´€Éµ¬ö”ð¤0ç Š•-gºòaFw1ãË@:sž0=ªR:g”Zièìð_'…ʺ¶Üdœ@ü2*šZ‚®¡¹Ã/þTV(µìŒr3º–n˜%¿Ã5³ã']Å € +Â[§'s`sÿýi­ +óS™Å›|³üÌsÀæŸ,Ö0@Ñלóú×ak¥YŸ ‹é O´:ü®I áG\tþu‡tÈ.õK˜¥‰d†4 Uº8¡ì3ùÑcžú ð©–FÒ¬)Hãq +KrGLò£>Õ½âv ¹!|Û€I''Øá\åòÅö™ZÜ"‡ @Ž=1[ž'’,Èë˜Ñœ ‚I<|Q$шÛw¬® H ŽÄJAx¦ÛÀ°ØÚ²`qôÇn1N9ÎOÖ¼ÉÇ–MñwˆâzÑKEgažHAô8¤#§}i¯Dåddàš½¥XI¨],QðON3TXat> j +} ?¡­#½‚+¹4^™í.%.CÄH +Wïcñâ®ÿÂ&ÀZ>D¬CŒ”ž¹­àÃÊœƒŒ“øÓ™Iaº“ßÚµ²9îeEàÐo¦‰®b¨(ÀI#=*ð“,Ìe"`ÀãÎn+tÉ*O!ÜrϵF'[… pHÈüh² ²‹øB¼·S3˜Inyc8¦'…-Â߇™÷FXFCc€8ϵ®/$E“ ã?Z…î™’pcþ}(² ³ŸÖ´;{ „‘̬Áà Èü«Ÿ´‘V#“€Uóê2?Q[ž/Õ Åk`y¬AëÆþgñ®aeQ ƒ¹ YM&mNN:‘:;±`¤ƒÎ@¤òdþã~Ua%F¹jË]®T9$`—$ä9úPÝH"‚ÛJÇ è ÛJ 6px5¡Ê,l|Û˜æ*Q¾R}B?3P5ÄÌé]‰êKOâhh=¬; Y ±¹=qV.,Vs&îF;zÔ{ß®öüÍ6VwŒå‰„ÑbÕjiZÄ@œT·†ÝÆ…N\±<þuéL=M±„ñŠ–V&Úz â¢À9ÉÇæ!ýÌcÓ4€jœjX~i‘G$@ ZÓç6ױʨ®W8VÎ2Aã3ŸÂšvb~GG 5²Ë•2¹,Ž§µ:ÖÎ+›„O>Þ0y/$ª½søVLÇq\€6¨ç¹É?áMN#×|qMC•#‚¥ÍvÏOÒÿ°tÕu'›ÊÓ)9Ç×UuKëoDê6ep>zõüëÎr¡>”ÆÈéÅsóµ.kŠ¥Ô‡#B^7TmÊÀ–À “Ç¿?j[^fµB"iH£8eÏp:óXîÌ€OçLV!‚=+I¹óÊ+Ùò€³Ú¨&9±ÔcÉçE¦‰m¤8"@Äq‹yNG¯ \C\É‚Y’O.zúõ¥´ºÌYË7ÈÁNò¥I=Ž+lÏ1e´Îª_/ûSlq©`be$d“Áž=¹©õ³E¥Î\‰ª€`eA–©t®^ÖG–ÊöYX–+´³IÈ=IúÔqÜÉw¨ÅqD G œ“’qšŸht¬,¼CÐukk]&8$IËbÈP¤±$I85›¥ßE'Šî¥ò¤9äm$ÃÉõ®VöòîÆââÚž5fV`§!F94±Ï-µ½µàœJo†#'¿857ågSâF ˜ Š˜,ñ (U¸à«™<V ÔbþÏm¶’ª­®åvÚTŒmO9ç»×i»å¸#©Á$þT澚G†(ådŠ5ÚBeCI;€8''ô…$>VtúN»o¥,ÆX^C1eÀ#œ‘ëW›Æ¶œÿ¡IÓ¼ª?–k¾fˆÄ1†ÚHƒõªÐ‹‰äÙ,áY°Î$ŸÀh¹ºgWâ«;ûF¶–ÂCOï€<ŽvŸJTñŒ6ð¬piʈDÜø-rËÓ€ª­óDfQ€2ƒ9aê8?•W2IÀ,ÀFOZ|ÎÖ&Æî­âí'‰þÎ"1‚¼H[ º1Þ³Åóðª ò+Yî "ÈýØþuS®ªÐ,^†™¿l` >à·jï=¼²™R4Œ€CFíœôÁÌÖ÷ÇÞ?Iö†[G„–!\ ‚‚që‚?*iš,evþ"ó3O©ãÄ™*ŠTÉ'°=9=êΩ2$(Š%Yí`á;uáX‘~µ:#Ê­‚ ƒÈ>Õd³/# ý)]"}­FÞ§i¡jÍ£éhá ÍÌŽÝWr€ÉÉ䃀+'B»huw+•ÛŽì6dîÏ@Äߌ氤vÞT± x"„Ks½‰%NФ{gÚ‹™kÜÛ¾»Ý"Ç ËMjB’I,Fx‚FzØi¬ Ž?77±ü³) àç9P8ã'šã©l+‚00ÆMIk.Ù$ê² vÓRÔ®yïsI®¦·™¤B3î;”@<øT{3(“ÍR\“å¢ ®9àúTM¼ËJ]€ÀrHü?¯U«kX×JÔnÚ9á]¦<… y;Ž#Õt1öõSå‹0µ šR˜`Á”9±9¤‚E[IHbª±Î`0GµYÚŠ¡HÀ늪5U6Í*sNͳ­ð<†IÊ9bØ#ßÕOÄ“ºë×ë嬡p žâ¹æ‘æ7e$rUˆþTëv™™Ê—cÆ{çëšÏ˜nN*éٖ㺑YYf$ Rìä9­ Bù`ºh`µHÊMÌ„àô`r8#±õªi—©?–mßx!YA©# 2늤×=ǘä±('¨:{ +m؈ÎRÝš¢qi¾h€`¬sƒž=óêiÍ•Ò²€ýzç4•·Œ%Ä$¨AÈø'€xÈ#±âº Û”x >¢¸±³¹¾wVc€(¥SÅÏc¤òJB{S!®õ¡ÌуæÆ1Åtþ@ú¨R20Oé\ćæë]?n°¹ÊœÀÖ‘Ü"÷;›;¦î€únÅ,–Ä5¾ ùþ”ñawë¼ÿèU<Ž7Ú{ý+S˜¨ñºI0?ÃŒþU\ñäw¤Ì5ÖîŸýaYÒ"LtÈ B“ûñ“ÑjÅäV±î”œH©íRÝζâIXðª=O¥rú­ë‹#æÜÍì ð?—åI» +™w/uy,îr]‰ö‡åPƒJOaÖ˜:Ö{šz}¦Ÿ5²=ÅÄë) J˜.A8€=xÉÇŸ"ì@H9ãëü« Ód†,Íp­88HEË©y•;r0½cÜ#}¡Ã.±È$äû’2jÚÐɽJ˜Çá@œô«BˆÎ@î;Ó£…eBß)<°»‘š‘'­ˆa·yÙöís`  ’Iõ#ó¨nÂíqÁ¡Ox¤k†ŠÄœŒ‚G¿>ÔÛÛamäíbK ,nà{t¤Ù¢‰éL9¥'#©¤®h¹vƒÍ>GVŽ5U¨äúši<ÐNlÒ£¥>"DŠFs‘Å2ž€ï¿ZR¨’F9XÕPdž9öúÔ¢ÏìÑÚ]´‘K’Tƒ€3ß#¦éUlÔÝHay’%u ³Ç d㊿{:&“ŠÝ<þSåFѱ@8 äò~•qZœójæܳÅ¡ &ÔªJG—½6°¦$ãù÷®FRK°àÀ<jô7”˜RŒm®1œÝ˜Pt?(-•ã®QX–úåmäÂ$`Ž !†x ’IúçšÒ[èS¸vhá$(#œú“Üûö¨Te€Í#3d©$àô÷¥ˆå×>µŽçNȱq•®P +…,räú}é“Ån‘#Ã7˜Åˆ+´‚ ÏÉ= éV­ã·’`·RÉG«FÏ·Ó/`³\ZË<¬/PG9<sÒªÆ1‘$:ÙM8ž=1ÍGdd·½I€hØŽpjNÐ2zΣˆ2»“Iàžô¬it[Ô‹Ü^=ÄŒ’0Ïd€þU,ò<¶0[±ÂÄKdg®¿½Q(FH?Js1a€†]ËZ\²Z;IYs“ÿÖªÁ18 +Ã%zS"R)šDšp@$’OÒ€ºî_¼¸Î$`J¢ +[8=þ¤Ö¬K ½Ö‘woV +ë¹bXAÉààž¼V"©…ÃK  Œ0 ³5ÛÏm8cŽ'.¡TNåºãŠik©”¥­Ž‚xîZÚ\Ìû# s¤ƒòàD1žœ{óU4›©[O†(‚—Œž®¬ÙÉÆ+=±[ <+w!UYL(PFÀ€HV(IÆyÏ^k˜‹S’Í®-ŒwV¬ò9) ÆI'©R ‚jÚB*ë°„¾W$–š5v“†Ézô=9¬Ñ²3%Wˆ ô­[á ‘ÀÆf|¸ò‡¹Ü8ô5¶Mž5R]ÈÚ2qƒY=YH©Ù†ßÊXbc¿qfPw1´ägÆÇ5ÝÂNñ²@°ª BªIÏ$çžüãð-µÁ¶”ºÅ ¹+2‘èi—W\F–0’6F’ìzP8½J¬@#‘éM 0Æ­eÞ’ìí¸€BädŒg¦sÒ™„óFdWhm¿3…$ã8žOÒ¦Ì×™P@ ’=)Kby Ô¦Âu–$‘Dm(Êï`£©“ŒrZšëJº¶„K0Œ)m£N3Æ Ï”Y‡2*U€ ŠžÞä,á™7csÜT°éRÆB„(1É'p9§Zé3Iq<[•^`·9ÇO4ÔXœ‘L¸¸é<(ìÊáÙQ¶’;ŒŽœf§ñ åÍåäp³À—J«,{Ãg  ^Þ¤Uimf°‰%©Y \(e Œ@=ëYׯ$§s1 I9$ÕZÈÉ;Ì­nþ\¥ˆ0jg»Æµ3˪@äŽsOUY½ ШF~aEO­Ì€ŒÚAàc½*«ÏjÙ´Œ5„’pÅälòÆG¿ÕŒê|:†Îòcô’Iåo™’P_p89 úVl°=ãDáKFG#ØŠ×ÓŠ5Ä—$QD½ è8ÅU–Ñæ5“r’¡˜€ ºpM[W2„šDz†ä·‰ÙFâ‡×קåQÅq7ÙD¨B9ãýOzÒšÅî­ep’Ha@F2@Q’Ù˜ÁϵJtÝ5m,Úò#4{Œ„PÀá\dØ‚~”(Ü·3 +ÞYVâGRgÁö¤¹‘̈ÃÉ#©>õ»™g¥}ou Ô‘ÂK‰ÕX # Aäxõ¥»Ó,’æ ˜#œéÁÕÈÃyn 8'ðpy¡D=¢FL÷ºnwÈ\ãŒÇaLµ’Qoå‰+õˆí]DÚ ˆI­b†åîÑ«á€. dü¤c^84ý I°¿³‰–3G‘)‘]†rH † cÞŸ 9é¡cCE—Dm㉊Q+2nps€ðG f­éS ­É\`;ŒH1 €pX÷wèúÈŠÒF[‘\©€[$dp>Õ¡¤Î0Á˜7™<À0 †!‰ÎG\Öb^v٬Ǟ¢Ž{Ñ^qèXòŠLsKŠAœàW ŽvC!"BGÞºß Ü»^X«ª)U‚?­r—”rMoxv@·–|Cr1W{xl[^ƒœî?Ο$ƒu±ôúUw$ ÕÏr‘¡˜æÜç®kcR夛ž§?¥DHòžâ”M0íÇò¨¢ŠKÂDH—oîñ ,S¸F¾¸nÖñ±=ŽÞõÎIg%õõÛT¶pGzV׉õ8ì™4Û-£ËÊ}Iè>¼çò®L½òg–Fh˲áD¥¶’HÎJœœ\Ôi}Jµ^XKuÊ9*k)ÈÁ9ŒÍgâ·5¦¶¹%·‘•˜0™Up0r@žxúÖ&@Ï45Ø"ît¶œmáÿìÉ^bÅLü±'vOðG +Ëœ¸p° pHäóÖŸe 1rÒüÂM‚5\ž™É9àuƒÈ5$°BúŒQ}¥BÎ |„ç‚3Ž wî(frC/£1IÎdMÄŒž=øÁüjMÍp¸ëƒ×Ó±ª$7:t24Æ9­àa†a´9Ï9Áª¶öqEµÂÌí$ŠK/—ò©ÉÝž¼Œw©IØvÖæmôanåPI]Ä‚@É×Þ¤ÕtV§’BNsÏ_äEZÑ]_Ý n-¨Ì„ð¬Ãžƒž¾ÔíBÿ³£È<ÀûQÈeÛËdtÁëš«™¢¬º1LbBI´ƒÈÎ6‘žõ»:–€qÎêxÍurk2F§1N6bE‰ Ilœœ`àcOI¼¶²†d¸†Y º²È 9Œ‘O•Œ£¦´rZ†Ì‚~@B <ãôÏò§]ØÛ¢9¶23/%YÔ䤎+Bòî/­§ˆÝIO¸G3Tnj‘Ð`uªúž¢·V5š2KK€=ž´š+™kˆÃ±Æs€{àÖ†‰mmq¨ˆn*U¶‚H±9Ç^•œ%*H$ ñšµ¥Ýµà™A$¼1R2È=ˆÏ•£.Z£Y°³±± ±,w&@Gfùpsy8ÅbǵØÁAà“Ð~UjÿX7¿fòÛn $È#¾B‚IÏ$“YaýêÛ×C öíÈW&;)‘arÐdÈ€ g'|£Ò³n$3ÌòŽ2Ç;cPª8èè*´rà‘Š™J†€À2(½Éz2ŒŒ^Vf9brN1“OIýjKï%î¥{T+;Õº…ÉÀ>àb®xf8åñœs*4nÅJ¹ÀåHëÏ œ|Tõ:ÂFZP8<Íw:†—§Ûé46ÓÉ*Ú¼*)ÆßaØŽ N•Ã2;óÈ«ô95Gkk&™ ë¥iÏŠ"dvEHÃd°È ç9<ž•CF¶f¹Õm¬M©•eSìVJç ®ã©ãš ší彪@‚Ý£Xü¯ÞB”ÎpsÔdÕ{KùบXš(Ú`C¯”¥È8ÚAJw*èØÕ+9tòÑÙE%µã R›+¹Hf$ƒòŸ^+Jó@â*Ö¶ÐF†PeY[rŽYI '±ä+”ºÔîõjt|–X•X2@àŒúT÷ö ÁÕ®A A ÃÝÁ$®IÇ~¼Ð +Ž"7}t +²Kæê¶ ;¨À ‚{‘Î +-g¹·ñJyˇ–1åD)\„ÉR1ÛéY {qolÑÛÍ$*ànØÅIÀîG4Á{s4Ë,ÓI$©€®ÌK r9ëEÐô:m~hîtûŸhrÊÌÒ³0Ub¤…l2pOȉ] Œg5$×÷r+Æ×S27 ¥ÎÎpGz¯<¥‚¡bªXàt’j[…*"ã·ËÖ­ ¨Ä’YB@ÀHJœzEQó +ð¬xçÓ«­ë {pUOîT«…N\¨ Ä€7AäÑ{î5;UT[+<( à»lƒÓ·cRi‘+G`Fà䞀œ þ“V6ZC—#\6\ü¡@G9ÉÁÚ–É—ìÎ[9Ž6*¼`ä‚sŸJ4¸ìís4DÃ$û€¶{Ÿ¥'–­ü+øµuz%¤Riñ5ͬrï2FYaSäà Äž˜è¬ZÖ4»ŽâÜ+[\F6 #FÜpr U•®e©µp¶“ ˆ#g0«l7 + •8eËs“×qØÖœ-ẼŽx­Âcy‡ ~P[ƒÁëœñÅQT²«á‚ ·@NqÓ×4ÙV3‚Gå+”¥cCTeC2ÅlñBø² cëZ,¶÷cìÖ‚ÊC!d ½A9† ð3‚+È‚ÇÉA/¹€p0z÷5&t¶â}þ[*0VEÜA#ƒÅ-‡tÍ-#P·‹M¼¶ñK¹Ð–H1îNr29–3nºŒ×R쌤jXÂHL°ÆN9 œŠç”êN8 œ;ÖœŽ­¦NÀ6dp äuQTÿGëFÂQMܹjÑK +Äù-Ÿ— ÷Ïj’Éj1’BªÈfPØç®AúU{RppÀðE\¶”BZUÊ Fvž¹¡?Zq.nÑ=ùn¥Óç´´’ÞBŒb‘‚F Øà|¸=kÍòAç Žzæº[µ×˜Å+´O,.·"ïV aÙ@É8=H8¬ ¸%·ºšõѹWç?6yäu­6G3ÔGbpG#Õ'a=©F|Ç)°R€ðH$R¸…ˆn8'ŠIÌ{ÒT‚2èh$’IäžiæbPgö¢29<L,N2r( däh@wª– + ±82}ª@7`Ê–Hö,gz0uÝ…9#’0}†‰Î—ÝÉ 7‘7–X1a°ð Èò:ƒß¥gÛåˆ;w)#„ö¢9ÒÜå.^BÊ¥FOÊh<’@ëéNŽ2ùäXô"m ³±Ó“Ø}iÌêƒlg9ûÍÜûADŒìN¹î~µ2:àÐ$! sõ§ÜJÏIµ@q0IÉ9'¹æ‚¬A#ƒƒš3ž;R-;%Å°·Š6µ À#n!9ã§#{ÕkÙ kÖ{te„…lg zß&¯ÙIe¶Y½ÆïºRb…O>€ç·¥V»K°Ãn"ÚN@rÙäúsE‹Œ‘_i$`)Ëó$zTÃ8ÀRxè) ,¬ ±989DZ¥fĭ•[“¥]¸t0G}Ñ¢œóß±ýMShÙçS·:zÔÒÃ)„–‰•Oˆ8„˜s"]>DŠÝÞ2Cº•æ O,]bGÊ Áã=ÅKmkrÊ©ä‚FÕ' u"¡6ò œ²•`pTŒ}§gasÄÐ[ç†ìÜÄFå©ç#ñèk¯žhÍà™­¤kx@ÛåÛ1!%8!À9‚@<õ®c•i[_E°Šq¨1\ŒEy±@ìí8ÅT]‘”šl‡RGƒRž— ÇNôÁ¨ íö$ÚHbqÎyÖ¥Ô®ÒöèM&!±T‚û‹n'$àgŠ«ŠM÷О;©#·’$Ú@£$sÞ«:íÏ­<g8¤÷íI6ˆ ¼…Ëìb£«HSÚ´#áV•¤~ÔRNHÏAZš-ìbÌÚMpДȑH¬»X ò0`äÖªkšm½È,ŠÄª³ ±ˆ†9P0GMÄf¢ÛG8’\Û‘ž»YH?–(®›LÕ4‹;f‚êî;À²7”ï…–2räv9¢ŽUØL«»)$éYrØ‹{¸†lž+§c•ÀïXÚ—:Œ + }† yôäÛG£4¬Ù”ÖMr“È"Š7ÈçH€I' íN·°šÙ`¹%Z¢º6A úûó\±k~-Râ&…¤YY£+)$@FöÁ¢ÃMßBí–‘q5¢\#"£1U,’F3ƒŽ£­:öÊ{X§Û—PêT‘zÐõ¥ixqãR¤’À7N£l¥HPG-‚ÊqÆ úS€ãÔ{U+X($¸þÑ`FU2çw×ÐP+ØÌHÿvL¸T$‘ó8 S$3aPtQÓñõ5vM;R™·}ŠèИ=&‡ªHÛ ƒŽ¹B?+gíÉÀ9'Óš{F±(’窃Ð{ûÖõ¿…õVVò­‘NÖg` { ž~µÏ…5‹r­w’Jºœ}y⣙^Å$÷0Ë 'ä?ÓsZØwí€ Pq“™Pþ=j3¢Ý/%­†:ææ>?ñêv…-ê:F¿‰?ãH\à\þ?ãWN“*º{%úÝ'øÒgÖòÁxïp?¦hI‚GU¥Yۆ˘QÙþE œ•,È=‰éYzj­›ê–oq´BË ‘@]àIÈÚC‚9–3y6~LºÝ„jªcUòÄ©;ˆÉ3“Š'–ݵ%º‹ZwB±Nâ"Kqƒ„ÚA Æ{V…’_@%’Û‰í¤hßÊä¦~pIœ6?Jݺe¾Žm6âöB†Q“v¶ P@@r þâ+W qa7*e\ÁOz\¬FPÈ9À?QOØ$GsZví¥½Â!³»N…Àb£pgó¯A·ðÞäG‹5o”¹bO¹æ²©SÒ0æÔó›HÀ2mÜÇ¡<*õÒÅ"œ( Žlžœý+sÄú=Œk<%ËpW{P:ò§ëY6ÐYÝi-r¶ˆ¬¥·)we„î8«§ûÅt9>E©Í¸ùÈ^@¢¯Éyn®Bé¶L=s'ÿE]ŒyŽˆ‘ߚƻRú²€¥–Ä2IÁùÖÃsÅc\›2’ +ÄH àƒÇ5æÒ^ò=ZºE•"±»Ŭî9`~•.–¡ï”àXñè?ƨ5ÅÃZâb=äcýkCEe¼²‘Ë£è9?ÌW}‘ÅN] õK ñœŸ­fž2}9«—Y$š¬Ü3ц*^¦«Dkønä[jaN6È^õ—ªh—vÚ•ÌPÛ»B”` +žG'눣Úêpð°'•Òê+啶¤ÁIŒ¤%rB“zù\lô"k©È¶‘~"VkfÎåÿ’-"õÈ i?4¨9äñϵO£XCy{2Kn²*r6ÐNO³W|`Hzg¿éNI$d•Ýѯ2JÃÜ“p€ôë÷ªôÒjòI­sn]Í ²B§y8ÆN;œÖnƒ Sêr1ÁaÈ 3ÚµSLµÄ“Z±ùjʲ¸àœg$…çŸJ#`”yHláÔìI÷v‘†`Ĉ›pdœ“Èæ˜Ö“4¥å»Ah”\&WÄ€I$g=x¬ûÔHïgŽ5 +«#*ÈÀ5oHŽÜjµû„‚ ‚889ì3üè–› ;³¢>Ö® rK©B¯°€rFÐÃæ ‘Ôõ5&“ªiQ˜…ü0ÛÈÛGïv‡$`‘H8êt âK˜³ÊT ±–ŽÇ½gëZ……ý„²Dó,ã!SòœòÄv 3YAÎúšI+Ù—[ëûFŽ"J$r#ð Æ íëVµ-ÆODèÊ«JûqÆzÕ;kÄ5ͳn.C0 ‚AäIæ¨\Lê AÛcª3(<`ÖîÈÂö'6¸$êö@g ñÚt¶QO«A…pÄ,R“€Aþíg¸ã d“Úš:ò)]5ŽŸ§Ò ] aˆ$[HH猌qM[}?j£çÕÏó¬ðZ ô#ù{Ó‡•0ãIŽGEo§¡ý>”^½Ž‹Eðý–¯11ê ȤîQÖéÁ“Ç=qØÖ³xÄ£l½œ0ÈÉP@ý?­QðåÑÓüÛ3dçRÆQv€Xc8,O5°šÎ¨7gJR±¶,êÇ8€;œp+FnW[ÅFڜޕ§Zê f÷×!*2.ÐHã’ÞüÒê:N›§Î±Msy#8Z‘”ó‚ÝÔÕ£â@Qâ¸{FXm.ƒ-’Ù* ~5¬ê}5œË(ð|ߺR£9$äñ×¥n¶ÔÉï¡ñiV³(eÕI!ëé’qP#é˜yZƒÀ;ÐÏhk÷V’ÞÂéÁùo<€py ž9ã¥s¸pIQ’@j%¦ÅÁ&µ6fG¶˜G$7ì@ä P`úr¾µfxtË4Cq¦jqn¨y‘r:|´xƒT·Ô- (ÆYTtfpPãß ôì{Ó5Û„ºŽÑ’&°ÄîpÙŒ:µkjCv'Ѧ—rÌÄ^è tçî×i¥è:#Ø,ËfdIc0nz ®ÊÏ|¬V™#yDlN0 ·8êp8uPjÚÞ×ÑOºB +¸òšBJ¨9$ (ÁïùÖSNZ"¡%Ô¿«èTV¯,ZnùBŠ®ÀÇÁéžõÏéÐi·¬ëýŸ”PB=ò7Œ àtïZ“j´£Šæ BV‘ dòÙ|¦`X0+¼¹ºÑµY"IQdBù–Ãnõ`dó‘UM8«0ž¨ŽûPnXdX–À9&Bspç"™´:²i:h ƒŽN3ÏV5Nñ̦9OÞ1'ßqÏôªÝøª¹•ÍÑâ7Y&tÓìÌÏ"/˜çIÈÇn:ÕA¬Ê‘g§ úZ¯gÇ­.x¡1êhm\äb =­#ÿ +ÝðµíÕî Uá´–5Ã0ò +G €2NzW$yç€=«ZÕ¥Óìm/­f•|é$Žp *AÁ<šM_AÅž¦³ +G“\Ÿ‰%½³º­œA Î<°¤9ÆrA‚:÷ª—vöðßÝF¢æ&'—j]6\‚§å¤œ ÓníDÆ{?.ù–8Zx'yNlÆq×$t¨…>WsIÊêÉê÷GJ‚öÒv‰Xlp’ÌJž ’AvÇZ©u¡(³’ËS¾srUpY°¹\ä`œŽ sñ4’ìÀ"à±#¨½Ï\~5fãPy4«kq<ä¸!·/ÁCÒ¶¹ìÆÞ]j–·2[Ü_^y‘œÌã¶zgÞ®Þ%ÔšM­Ü7W YIp]ø à’rAçñ¬›«†½¹i®UC1äÆyÀªU¸º[1kªÖÃ8W#<žHÈü*U𤋮¦šÐÒÔtòšUµÝ´÷„>ÐÏ$§iFqŽGJÈ „*ÎêHň,3Ï' «;‹i©m¼¨È.v€2AÆqß·×Ç„¥Ã[=šÛf’§*ÄtÈè1Yö–r<žBÌÌ +dŒpqÏ×Æ®>ê²&j[´jO©À²i—ç!™°r 8l€NqŽÕÎê¢áÞd…Ée`I=²@9üG3Ê«ä9ùc$`ÁÏ?®j8åd<PFAúŠ§ïng8›šŽ£æ‰k¸ayQå21Áƒ`ƒ‘Ž íÒ™­\Çuig –S’ͼ09§g® d™T’DKùŸñ§²¨ F .JòN ôâŽkhKm½ zdo  +‹—oÝ«8$gÏ@=H®º×[Ôµ>[¸.’'† i8ÎO\.+‚ñá¸Iш’7Œà‚kmu ˜-µ Y°dAÊÄ‚Fzƒž}ÍCQ{›SRGEq>£}–cQ†u`žaû9Ô²•†úšån&¹Ó¤–Þ)óÈtdªÈŒRëÏj»Ýñ‰V‚0ªºF­¹@n¸ ªš€¸¸Kr¨HPƒb…€1ÜÐœVˆÖTj[™£$š+B8-™?y½[¾õ¢ÎfÎ…9¬;‚N£rrp"#ó"¶Ød“Àë\üØ7—nsò¦}ÏÿZ¼ú_éUøLÒ ã5ÐB‚8£é…ýO'ùÖ%²nb@>ó~ëzvIƒùœWqÇÔ§7$Äj©!ÅÍZ”²¨«nN¿Ê¢8+ ƒëI£K$W<¬ƒÓ8­¯ÌŽ'Ó®b•JóèkP𞣕?ʈgh¤ŽpHd 0ö¦‚×V".þX'Mï”$ ç ûñγ÷¾ +î$1Éõ>õÔøžØ]YAªÂ3#—‰þ_•rÇ;q€sœsMœÍ4ÇFÁ0êLn8 ¤ƒŸÃ§Ö¬ÃtÆì\\Jg~…œ–'Œ“×qíT©®p ÷¤¦Ë®ëæSæÈäœ@RO¿SúV„p­ÆŽa–d†e¹i~pIe(Ü eؤ-#=ÔíJ¬Á‚–ËJŽ=N}ëQœyK åNüióF™°×èרësåÅä² 4„«¶‚TŒ ôõ§%ý¿’°M<´(–@4 E´r9Èþ!ŠÌTÚAçpÁÎ{Ñ"tl“‚}úÔªªç\ðn1æfrX\ÉlΑ+,_3œ‚Àc¿¨â¡¸%e\™QAÇ8 ÖÜ0^E˜ÌÐî@‹• ›v9Æ ®~PRB§RFGÖ´ºgŸ8Ù‰‚Iíëš9àgj ,I$’y$šjDK<…‚¡cµI zŒÿ!Kkj×nÈŒ “ŸN•Z`L‡Üžµ«¤ÜZÚˆ•¢‘®¦—jÈmØF0Fx;†ztÍÔµ êtH‰sÛ4ÆcÇ"2¡P<½„© ž 9«–³EÁ™Ê”L„¤jIÛ‚ÈŽk&êC°¡!VBF}H)F2ïS9Ùô0žÒ7¹zúÜ_i‚Þi$y‰V.ÅHR —yÍrúŽ–Ö1¤«(‘YŠã ÇÚº«WfV2W>¹õ¬íbî¬YÖ i+«ls)ƒ0ÇN ÕFWG-Z\Ääf‘¤l·P¨ äVÌ%€ dUäB‡rFi3‰c¸U5¼RVÜ3ù)í¨ ¡Vc#€Ê=²HªÃ‘L3HRr@À¢îÀ¢›6ôDw&ä#GUó† ¤qÏ žõ±ö¸R·0%¼„1ˆÆì`à†äcƒ‘Åbio+ê¢Ø€cÛ÷@8 œwÉ#5¡wþvža+‹…' `yý1I½.tÒ¥K•—ÿ´%Ø‚¶ò…¥pÎUv‚IÈé‘Àj­Ü {?ŸtZIJª–È`tÎ)b‰ä?"–žÀ’sô©ÕÀ·(PnÝç©éùæˆNì߆Œ#tÌ-bm®E¼ Í Á‰á€8ü:­k3$ÆK…„¢îPßÅÈSÎp=+_Äio)Šî;¨åžUQ: WÀ XA[im§h Ö—<¹FÌض¾µ´±½¬7²6%ã,1Øæ ¼ûijÜ+ˆ†å€à`cÔö¬áÈ ’(a‚A9ã×4’±Mó$ˆÑÙ˜*®K÷< +êt—ž+6€3ÂC2É$à äzàb¹›Y, ®U—pbןJÕðÛI$·-$¬ÊX$’I9ç“ŸZ”ÝÍ£k›fêáŽß´HLx.xãzqÅ3{`Kßxï?7ùçŽ* –Kk—o-䶔† ƒ%0AqÇZ±¬Ð¼ˆÅ‚1´Œ“õRNÈôéÑ£*w{‰ºÊí‰Ì† HàçØ×- fs¸Ù9€®¹mÚ&tYH%_8 †¹{ùcšòi!SlÄ„';FOØvö­•ìy5R[óÉÉ=A¡˜6: +BHœðhyÎ;â•Ì„‘ʨ*H#¸©mNÀ.T_-”„c‚À’1×ÅDÃ(}* d&À +’IòIô©fÔÒgG#€»N97– `Œžæ³ã*öÈœ‘° Ž1üêÕ³HVt€IÁß±¨ÞÇ£…•5u1'‹jîRHÏ9¨®ËM¥D˜˜da‚>P`úçõº±ÓNjM  +s‚±QÈ)D%YHaƒ‚9⥷x­•°Òœ©P çÖœ¶—7‰¾ÞÞIS8ÜŠHÓ#ëDS[8šÐ©’0õde½yvùÄË€r2Üœ©ªjácu(­¸ 1ꤣõ¡«i—vL²\[¼I!;w r:ëYØ­o¡äÉZBfƒ‚›qÎzæ”c9Æh cÛ5=»_ÜX4ÑO‘™¡h‰ö•É8#¡Î3ê*Æ+4!Ü‚rGJÍeË2O¦+oGÓ÷‡Ž[ËXFÅ•w¹ †Ï‚1È<ÔÞÌê‹ÑX±k(s„}Ö?u‡±õö«ŒƒËË`«ŽAÍW½Š=>%"úÞpÍ‘†=rAǽV}PJYÀU@Tcè5Ÿ"½îw¬_¹ÊÑGÏV¸°±##TþüÉþV·]Î{· ó\óàËzÙÎηYÎÒ=kr—ÌG;€þuÃGâ:kišRƒ~™è ŸÒµR œ´`ŒzŒÖ^q¨('¨#ó¢_jC ë(߉ÿëWqɈËñJNUÆÓõíMröÄ€GÌ„þŸáOòÔÉ%¹8WƒÐöü)Ý-¸`žÜGr;ëÿë ¢»e¢cCnô0@Ø$?_þ½:G "̼Ç(ÃØûÔA@-̇ùR¿áÙÒEŸK»ÁŽ@WŸCÐç\Σe&Ÿ{5¬£æ±ŸQØþ"¬Ç3DÉp¹Ãc®3[Þ!¶][F‹T€5ºâP9,½‡ô4Ó¹œãÔãO×4Ç)8âœG&©rzžý©§a«+L@€¬A¼òkÉÔ‹¶Öd‘‚ÆN*Í“ÞÛ^g‰Á·9í‘ÅJ²Ôé•yÊ<·quqbbšÕÌn ‚ƒÇƒÁôïX’ÈÒÊò9‹$äð+§µ¼’õ¦²Û*M.^5I€sÆ}ëòÒ;o1L OdpëƒÞµ‹º8*èÊ@ȧÆpséH8ÆF1ŠP©$dB¹™ Ä“Ó©«Ú)i5{A 2,d€È?SÅWŠ8¤•Vg©'æ >¸þ•~Úþm! –s¨Žb™H.sŽ£ž#‘I驤C¨šÎ;¨Ls#È ãЃڙk` ‘OÚädRAg Œ~ +6Öf…­g}DJ *ºXɹ®žîŽÙÚçÉ0® u#Ó¦k‹¢‚hžÚV”cæR…Jär3’:g¾+GO5.ÆÞTe1‘’qŒqÇ'¥-v7MosF+½.ر‰¢BT©9$ ðp X†$º…fŽêßkdÒF9«%ô¤Kv,$hUï Ù`¸§&™¨Ûɧ½¬&ÜÄex]ÿtä‚ =Æ(ÕlSŸ6‘k6kr¯½%I`ÈÀ€AÁÇf6FG#ךÕ:´GKKV³r1e˜0'¨”ímn7-6 ‹X ÉWpHU€<àddpjžI?[k é…ÎG#ŠQ§Ü£ó«r‰Ì¡+ÞÄr…Øõìzšr wIÅÃ`m+Ï9ç#éVÂf ¹aIý™7RPgýªžd>ItD)<–h­o()#+8O¼»[##±È#Ö¶­5Y¯­ÍõÓ´ˆB€íÁÁ$žØ>•Ÿ˜àî€zÕ«{SmsñJƒ•:È#‘‘È"—»{ÜÙ9¥k&5L· ä•P±“¸à8èAëÎiŒÑÙ[ÂѵÀ†áLˆÌ¤à÷ töÚ´V‹[xÀm»ÉUBÄ6IÚ£íã#ÐÕ™pÖÓiéjáó®ñ19­Õ@ÇN¥î—ïob½°}%RD¸7K!o›”eÆ–F){¯E½è¢›*7\EéQ1&Þ7?yN¢Š–R$ÿ—…ÿl|ÃÖºJÆY-› eJ·<(¡nfrÚ”)o¨\ÃB$Œ=€5Yy4QT÷9˜uv«šR¨ÕløÊ™*zu¢Šå-ŽÛOÑmQ’ Ã΂8œ# åû€={Õ-kO€h“È¡¬*øSŸ7ÒŠ*ÀãpQEA›ÞœzEÀAÁ§„VàŽ(¢‹ºD†ÞõJ*èÊÊËÀŽA®òÂ(`·”Gj$Q&6çih†qè>QEObÌ-Z36‹ºw2ºÍ +«²¨`6œòÎ}ë˜P™@ã&Š(aÕ ¸ŸJ®QEdS&F*t‰I=:(­ ”Ä£¦k[ѬZ“í. GÔ;)ëìEQÔ"\¹ÕîÞ ¢Þª›€¡óø¡©O.¤¶ívûÙ7á‚…cM3>G=¨¢„ óŸÛ¯¥VÏj( C îQHn$ GÇ¥P€c]Jä~U^Ì£‚:úQE0+¾¥qÈýj6Ôî09=è¢ÄmJçûÃò¨ÛRº8;ñøQE4N£tå©úSMýÉÿ–­EÀi¾¹éç5> ©ËÌÿSè"К_ùèÿ÷Õ=ÉåØþ4QPS,ÇSùÑEÿÙ +endstream +endobj +7180 0 obj << +/D [7178 0 R /XYZ 132.768 705.06 null] +>> endobj +7181 0 obj << +/D [7178 0 R /XYZ 260.324 441.356 null] +>> endobj +7177 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/XObject << /Im8 7176 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7188 0 obj << +/Length 2307 +/Filter /FlateDecode +>> +stream +xÚ•ÙrÛ8ò]_¡·¥ªl$ÄkÞÛq9;ÉxMò™ª…HH„$´<âøï·ÝеLíî&ú>1ßÎÅüaöv5{ó.NçEX¤ðYmæ‘”a–æó´H´ˆæ«jþ5ˆãPf‹ëHÜ,®ãDíQhZõv¿3ý`J5èŠP{·oÿÒåfË\2*®ÞÏîW³Í"@Ì£†QXˆd^6³¯Šy›ïç"”E>q¤Í\.4Âëù§Ù?fâL 1¥E’…±LH‹Õ¤•Eü!„TýŽÏ‹¥~û@ ÕVŒ½aLiÛ~löƒ±-!솾(LP¥Ë¿wÌáe‰@½Òb­k»ˆÉ?2Q§{;v¥îÑ( ÈuHXXÇ&IÀÀðç÷EPKÅß›EEÁªÑ¸¹]ÀÆ2¿‚­„„ T{µ6µŒî ã%¸à7À¯Àð5–‘ ×)ˆ‡†P¡QA\Ç4ªúŽz¨vP[M(<>*ŠÀ‰ÿc¯;ÓèßÒ6 +I1v‘w©p”ÒˆD FĪ2ä-úY ™hûÙ÷¼i·N濾'þRƤ¿Œ‚O«¿'Bphv3°ˆÆ…ì[‡SúcÖš•^/bŒÛ-f bl[›VÕw£ù~µ($¨AúÒÞ¯æòu‘ñbzNObg§ E¦ÂäMž¿‰Ò ’Q° 0á`Ú¨( †ªC8e@eˆâTÄ »ÎŽÛ.òãöÔÃt(r,²`ìÑߧB§$4ùªÈÍÐèšÀSKæñöž‹Ñ·ÇG‚\À%âx§Þuiû\D2 >?Óê®S[Û†!²0—$ÄG;à!é!ŠrQ†˜E rTQ\«VqðÑ1ñÓ$@•SˆÌBÜÜÛnx³÷絪Aã"芈öû*êºöRXâEº¥?Iˆ‰èõ0îŠÅèdFErRæØ ý»±-QÅö·tß]äu4ú…ÏçgÆËP. :óérJ0DªÓ\¦.hé·­]»$ç; µ*2í ;âemËoü§ñf>Ø©³?09DD‚6š³Ò!"»âÐmÛr2w *qÓЪÉ(yºCŽ©¤nì阘B‚´®Ñâ‚ãCrcBºoÆïÙ©tƒZgqðtK_4j‘b­‹3¼­P ,òío:ˆVmרÁ›:˨Éâ3ˆã˜óƒª¿õtøÀ4ƒÿ­‡Fà<0¦óFcL8ÈpN“‰A&B„m‡ÎÖµŸF6m.*ÃSBÉøïB:Ä…<Ö³¸XvIXò0`N< •¡"¤s2P™v?=–i±d·Ò/(¢?žrÆ‚#öÜØÖºç³ü_ÆØ9~ &˜n µ +·L0…ý0Ñ1é+’UÒ«$l(yði05g "«àø` ñðñŽN0€*]vZõš ýùåØuÐç§äúò¼A³B=º6ž:a.€¹dOZú2sq`ŽeúÈ[ÿ¹o™ß—ÁÒ*#A•¢ . +bésDŒ Œ®c]ŸÔÍÝ-aÀ/˜ÊlÜžÆE Ø`Gr;9ZVN@Ö%„÷RÀ!SvZqp#hêÀ$b½!c\øcZuZ1UXrI‚“’ +x_R1¡¤º\+8BI)qRkö,þ!2Ï^ØsÂÜŸn¹B¥ìò49‰ñ–@¼YÂ(× Ñnh)`ããÁ¯÷wl í©í2)“àø©j»%$[ÁSuRl,Û­§„ÿì懛çûwÜÛ‹ÂâEݱ®Îk´ãó>–$ª«§)@KÊl|¾½ýI(kžÈº±m£paé“:*ÒcÙÁÆV4‹å$l¸ïé™ßÎøj3”»Ê2—&÷îl0LOÃƶדCÉÐñe1Š© E·¯{Š²ˆænÄý³û[ˆµ{ &â8䀪á +Çÿ;KF‡î(î>PR¹ ŒDd†Š–Æajk÷„ÄÉÄŽ“«ÓœhNh¸žò} +€s3!¦Ç*²½6š‹P “Ó€áz„ØéSHs„ )1ðÈý‡Ûß'c–-‡!f†Ñ·–©Æy:§`pÃy”÷ƒê`šäŸ^é µ¶:ÔçC4ƒ0·Ÿž=…›QMºC?˜Œbš`ÂõMùy*”øIîÙ¾mä©XkURLT´&isrvRP`Áúþþépùw\5µÜ»È¯ÙE i“]õÓK;¸ÁT®± gŒ÷ð‰ÛÙ]qP«~ v‡-¿$σÇw«âíSQ9]æÓY™¶g&>4TƒûÚKáîÇ|¸ž ²TwÐ1+n+Éy]„¥»á„@pÅFe¬é'&Ž4ð#É¡ÿ›n窞䰱Ý5ø6$ÈG0üd€=\£^''vÌŠŽº°›˜üaP>ÈÚˆ:å KUv–æ« f×:œû±Zº«p óȱ\ÁÛWÚh-Ÿ5î+Å­Ñ—IDŸ¬MÓ4z²Vê`ýJ£Ý“ZØÖ£}@"H ,ˆÌ+ºàœs[‚üªãÙ³' dôXêãèÙ› +ü½ö JÛìUç÷/n ~Ø ŽÂâ¼Õ™á?Óþ²uqá$‡Xÿï£òü᱄–Åìác¹{fÄÑü¿ÞE)†dT`ó‹^,ŽwwJ£ˆoظFRŒ[ëqÏjŽj•¡'‘jÄXFR0ßÀ¤® ÄlD Ì˜~ )¿•Íèñ³Ûò+èóÃlþÕýDo‚Çÿ˜š^:'G~e<ò#tŒ¦WÜü +P;6k +qåÆø‘|×D$‹œLQÔÛÕk¶3=1#œL?ëø™ÜqÏ”›|.ò0“ÿÏ£°ÒNÃ"“ùécp^„2eÃ=èVwÇÇjßÝV»‘Ÿ…tIÀ’>‘ø%–¿D9­b!Ú ‰ü£“r–ï2 ®k³.Ï›äýñºÕí¥ÊÿM) +endstream +endobj +7187 0 obj << +/Type /Page +/Contents 7188 0 R +/Resources 7186 0 R +/MediaBox [0 0 612 792] +/Parent 7158 0 R +/Annots [ 7185 0 R ] +>> endobj +7185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.489 172.235 478.476 183.139] +/A << /S /GoTo /D (group__largedemo_largedemo_src) >> +>> endobj +7189 0 obj << +/D [7187 0 R /XYZ 132.768 705.06 null] +>> endobj +7190 0 obj << +/D [7187 0 R /XYZ 157.29 567.88 null] +>> endobj +1057 0 obj << +/D [7187 0 R /XYZ 133.768 551.153 null] +>> endobj +7191 0 obj << +/D [7187 0 R /XYZ 316.959 231.932 null] +>> endobj +1061 0 obj << +/D [7187 0 R /XYZ 133.768 215.205 null] +>> endobj +7192 0 obj << +/D [7187 0 R /XYZ 178.59 151.478 null] +>> endobj +7193 0 obj << +/D [7187 0 R /XYZ 133.768 134.75 null] +>> endobj +7186 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7201 0 obj << +/Length 2797 +/Filter /FlateDecode +>> +stream +xÚ•YÝÜ6ß¿bЗz€Œãïàp@.I¿\sÉ^û ­™q׶\KÎvû×)RϬƒàv-Q”D‘Ô¤&Ø7Áæû›ÝÞ<ÿ.Ê6¥_fð¹=lÂ8öó¬Ødeêge¸¹­7Ÿ¼(òã|» ƒ ð^nwQx·aáIêi5œmšJYi°ãêY˜™'EìÅQ°ýýö§›7·7Þ„ @° †~¤›ª»ùô{°©að§MàÇe±y°¬Ý&N€5ĉíæãÍn‚¯Ÿ"Íý(N§ðc?䓼߆'F/ +/|ß2öÞ‰Š$'r- ‚¨oL£zÒÃNÁr§,ö ; =^Ò¬~êörÄvê©цQ£ª¤Öj$J[)M\b”‚a³Íέ¿ A=)ŸÄ(ÒqÓÁŠ[˜ýÿ±-F)j±oÚÆ<Aôõs»%ZEæbÐJ_sâébZ´#œ×·"°wîgQB{ßZÆ(õPÌQ£ö¢ÅQ` –º›½¤ãøü™CÓ3£šF"½}óšI +sMú´ßF7£ÜRŒVªïÁ±¬¯Ý(»‹ƒ„kô,ôBaNM Ȇœ xl'±{÷ î‰4ÔRº¦ov?¼|KÔß‚48‰±~ wáYb¯Í(*T±µâQŽÀÒ¸V¼ÏIMmíh´çy'TÎRÜŒÄåãY—ÛÅ`Tfœ”^uýQÖÏ —§v6œê‘xjÕ‹Žkˆµ—¨@oYY„ˆ` P +3ž‡r$6uTß>zEËF Ö¹÷oeÐRq k +t‘ÄyZEîEd뀖Qáý¯ïxd2n£Ñ²=½ÑDëÀYo€º¼Zgi³gHŠ¬Qhµ5ñ+Ñ÷ +÷G²Þ !…nðÐHc½ù„/5Qi? ŒaØY›·à­Iñ¼(ž‡YÁóUoFÕ¶rÔ4c/[ÕyE4A]€W^v”•ìWå=Ê^ŽÂy`ÄN¢ qêýòA£› ´Ð°Ã$d!Ö·ÂtÓHDYöáy¢£KJÑØX.)y÷³WA”b•‡xÓV}eöÝ((ùbhÓa° +o/ª{¢’r¬m›‘šOµš¦1ùçÔl#DEČԧiE·Î=º…”ü*KQ™I´Ä +ˆqEGö>¬ÁŠEÓV^eºÊ, +¤ÈÇ‹ÈÁ,™Çww¯Þÿw%¾@ Às\èú¸¤qkƒOmg’}0ïJÌŠ¾g\¾X÷…€*\Ì{¢FСì+/± c6 åÈV>5&|áâÛ4õ âˆ@†  SÄê¥Ì;L6ŒÃ¤¥&/Y@™mèÉÑ •h›ýèÜ ‰ü©ÿá}•®š¶Bߪÿ öo«SpeÙ£)ÙMX˃…©5pš$KÚb{óÝ'º! ÁÍw€ì ËÙžQCšS8ƒþÃ&D” GN‰>|så+9¸JéæL¦iŸ×Žâé”]m•‡~‡nÖ?×’—ÀÏÓÈq¦žbγoÅ°å‡É¥¿è´˜iÍòb$Òœepâ²çdãœì0ù@¸gSÕNµÕ&å'6Ž@ g¸+·ãž^¼`~”€PŽK$6^PŽ‚íK$Kâ[°©7zêTªëA°×ô3754$1•t¬5ȵ+òü,ƒÝtEŸWîxûîCx÷ñÕË·oVÔ™E~”ÎH…•U +¡˜{Ô±ú…/Ü#l.–×Ù'P(ÕJÊ3uhàî~‹—WÓp£µ½!‹¶ÁZzGúgÑ.΢)"å±]p2.DÁBˆ¶šànJ&Ÿ¸Áˆ=q׆)o:Ÿ :á°3(mvàÖs o%èCÀ#u4ooC® Í +8Ôr½õÙ8ã\缡³¯‚7h'™o )VäL(CDnFÉT­æœcFqî/9#l Rï×ìjU¸C(—Öh•º×ŒÜ¥Ÿ¦ùåIQKqÁÁ>.¬ÅZ*ã0|gÁŒh0h™Á¥AáÖ«ml6;ؤ™8®wMÖì8J7&Ì5×¹Ü Â€6MFíÖÒãN`¥ÙÚd4 += m Ô³.ß^ò½€ªÓ3ÂÖtGix +èÚ…;Æ+äNp"4 +‹@tªol#¤žWb !EáV +RÕ‰¦ +m·¸HÁ\уqÐ]:í³Se—È~–ÉeU=©jã(ò"¨j¸0¿lKÈíÆC|µ°ÍS?æàp{ZËaÂbÉ¡úЊãÚjièñÌ¥Ó¹Ö8‹Òá1¦k¢òØ(Iý$Î.­?ßè(ÉðrÀ [U0êYwF2y [©ééÛÁ¦ãù*•ÞQhÈ–$‰ËA›ƒÈqœ^UËñsSIêŒà +MïVçTÆ2™ÕRTõ81/YÈ‚üÉJ•Ïå´faíR䌹ƒkh,®ÎŒØ°Æ#Ž(€ôeVÂ|¹¾Àjv©Â•;šX¸‹'åÝðЭEª"U¹,3pe*‡¡!¨¤¾Ø‰*é~YucÔ +­iÆ+¢jÙëË›.Ù—[¼ó ÙÙîÈ"rÇ]øqrUv´‹tÁ¾e±‡ÎÊšŽ¾çÌ…Ò“¥'«½™ÍI÷ Îþ„ðŽû# ”õ³³#,tNÁA÷¹_æAhÓ?/"À±ÔJ†¯»;a ”a“‘wwø¶„š^{°ù/1Së¾Á·$÷·b±[;÷Ó"waf¼·â—섬GøÒ[§Ó\ §åâ«n ¨øæý¬0~GXÒ§ +!;›K½3 ÃDÈâ$ÁÙÔ³ˆ6½ÀîЊJ®Æý“j …¢‚žr"—àFÅœ¼rÏÚbñ]‚:ÅÃ’°>BD¨é­ ¢¦òÈKOŸÁè‹·+;™¾g%ùkXB7µÌ–2–)g:H­=´/À/Œ÷4`c|ŒØVÊ2½À<»8÷±§Ô-p!è“vÙGéòD˜ýNÐnTP­ nKã2qJD.9‰*])û +Ê'‰·Çf1±sÍ%¦èn A-1’±U¢¦Kfyðn¬ [”ÃmKçz€ä„Ð~ÇŠ¿8Ý°5Lý"›Ózξ ê]ìç'å § _¼²Jî'ù")rˆáâA%´¤‡â˶rXåªcwEÎHÅjmþ–WñèÚ!éó‹¨\{º§ÐMž~1“úö™#?ÊœÅ䈥…“iÎiŸD|ÖòǦkÀÄa_`S—RÅ_ Z÷Q<[µ«¦J_[gsXÃÚäÖ”­%œðÅ_:`ô{…ú½‚6;÷Œf‹]N$JCc¬²éá‘žã˜ßÐà}´~]E³½œ;ªVŠÑéyÔÓTƒvƒºÆLƒ!òê¯k%$êñÿóÛšûM-ƒX†Xü¦V”~œ±ÌßÓ´ÕÉu{š¨ñZVÔHè/¢øEXP/ +nÙÒ…oaU8n¡zݵ͞WØsñôZýõx”ýõ‘ÿÓ“œ@ +endstream +endobj +7200 0 obj << +/Type /Page +/Contents 7201 0 R +/Resources 7199 0 R +/MediaBox [0 0 612 792] +/Parent 7158 0 R +/Annots [ 7195 0 R 7196 0 R 7197 0 R 7198 0 R ] +>> endobj +7195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.428 499.282 428.152 510.186] +/A << /S /GoTo /D (delay_8h) >> +>> endobj +7196 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [320.097 300.332 351.778 311.236] +/A << /S /GoTo /D (FAQ_faq_volatile) >> +>> endobj +7197 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.206 218.069 319.011 228.973] +/A << /S /GoTo /D (mem_sections_sec_dot_eeprom) >> +>> endobj +7198 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [314.629 134.999 342.365 145.903] +/A << /S /GoTo /D (mem_sections_sec_dot_noinit) >> +>> endobj +7202 0 obj << +/D [7200 0 R /XYZ 132.768 705.06 null] +>> endobj +7203 0 obj << +/D [7200 0 R /XYZ 305.851 401.124 null] +>> endobj +7204 0 obj << +/D [7200 0 R /XYZ 133.768 384.397 null] +>> endobj +7205 0 obj << +/D [7200 0 R /XYZ 288.437 126.197 null] +>> endobj +7199 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7211 0 obj << +/Length 3283 +/Filter /FlateDecode +>> +stream +xÚ•ZI“Û6¾÷¯Ðm¨*7B\ssl'å”]ñ´;åC’ê¢HHBL‘ +—´{~ý¼ ©¦™‹ˆxÛ÷äoóÓÍ÷7ßý&›\å |î÷›@k•&Ù&Éc•äÁæ¾Úüæ…¡Òéö6ð}ß{¹½ cß;µÝ6È<õ¾=m?زLÅMgêoÿ4å3Ó(Óžƒí÷?ß¼¹¿ùë&üM0Û0P¹oÊÓÍoø› +:ÞøJçÙ摆ž6:‚¡N¬7oþ}ãÿó)âT…:žBi¥å$¶ï‰§¿‡o®½·Í`ºn|zÿ‚KvàAeQ×½k¢Û‚{Yü•Þ†i&7„÷’æ^WÀ>wì;ó×hš¡~Ú&±{†\YËH±Eë9[’LÅþ…-ï¯^¾{³ÂÂ$Tq”¹¡#EE=^ÞöLÏØod*EÏÎm?ôpv —Xê@ùq¸<9ÉAx©F’­Ìç«ÄFâcSÔ\[² [ˆMgE{ãD…yèf°~8•cÙwxWxš•r < ܬ±gt' GœaßÓ®9j´Å‰[æá®»³»q0+›f¾ŠòiÓÊ”u@¡íÄI“@ÿ\-36¸ìðú³)-œ’ZPhÅ6ýGÛ­[¤, 0Dt?½hæÅoÓaóLÁ•ÁB鶌cGÀ㺠Ãë¦1 hÄb¤Ú8L]{‹š±sw}÷ÓÍæ7 lc-cKOoÄàŠdìç{¢=ƒbÜv{”© õÎ,¬)<|Ñuh˜i7 ™¶¨í¦6ÄÚ„d PPA6 :ø›zUÛ7]6ê*²L¬±‰œó©(¼äuÜ1EG¢ UG(´£Y!z ‘NmÒ™xuAšŽEWÍ3ô¡/•Nòü+^<šôêý«__²x.Ó:W`â&çÙóš@-™GØÉ5Ìì-87ñ–a¨4LžyK"PÇâb©øé-q ŠgÓÙ¶â2¾l±ôxYB|IŒÐ˜Ì‡£#–Z)·ªá:«'™ÌΑ+;&s¶ê +»Ê±ëä³…ŸØâc\Ð;‡c¤ ”;™ +jâ^ˆ8E„`,;k,1é –"˜ýxÜv^x'^­³Ö˜™å*› [Ç5ff*§X‚¼‹XŌԅU<Ù®#Û¥}íÑpt$øáµéœ;Ó~´€›0 1Œ›Úò—rĶ¦â66%‹ TÓ¢6rE¬Ä Ö¥ a£ðÇ·kìz´„™´èˆ®•Ûf°«G°j`Úž}-´³]c…ÅúÜ-CuWÍç«íçª_0ºšH ^]èì@øœTlcƒL½2œpuAHBW å±gPEˆ0ß}w÷ækñÎÉü ¼Š qy«fõ–1ÁÒ8§†&A0;‰E~'pâÁ“ø»“Ž¬Ë¢ümOlüC·&èx3ØN¦M‚j箽]Ã`u{ ä‘Ä#P0@6£’FÎÎc‡û‚Aóp22‘3~/ÁÆ"ד^™0@SpP­(# ‘,›”‘‘3€I ½-ïä…â©ŠS[µË7<·ˆþ•ŸgKfýÏÐ)Tàb]VØTð•Ï¯9˜x3qdâò3 0.ÐÎ,¶aqp+‚w+T-N4—_„AŒ{3††c;J"Ç78‚€7b±Æe*p\í”Ç(N†ðV"’ŒËS š&ôÖÈ:<‚”kŽÈâÀ€aM¦Œ€iªUKðã×1 ó4ž$Í’Õü[c_Q솗 ; +õ–$–X"Ô^ÜxVl¼9Þ…a’,xâ! E°Q–Ôií‚5Gù›Û,UY~…Ä+sjñæÀ¦P]B^ ‚#^wÞê +Ü/ï¹ã|eÅ*Œ'äcÌÃùñ´æ,S•çÓ…q¢vß œ¼Á»á¶kŠª"GjJ+\ñÝve!™ —â8K;3‹Ý\"»p *(|ON$Û´ŽÉŸÅ69…Ó=€Ñ<= Dzx ;¥ ¼_‡s~ªâ|B‡ú L½d4jû¶®9¯JÊEz1Ò—‹Æ®_ñ^_Þmß»çÞ, Ú‘ˆ²I@j¦§ð!ƒp ò|ÛÀˆÕ,RÞž©¨¸‚6¿xëø}ûñN±÷ÇšÀZà +.¦¤ÊD”™6.O±š¶ŠUpÀ3,1ÀBßPñ$RÁ[ãŬ¸ ãå™ÝÚço¬ž ×Á…×·:ÕbÒ,€d"Ò…“HCŒ€s†냛ân…¦Hò•P2Åô`{£ÌÃO`'Àö,ãJGÓ Y…ä…‰™ ›Ž ä슦â W1’dcmiŸIV·^&”Eç £;ƒZüݳU\H‰x¢Ù~ZcE{‹i(æCÍå"Wþ%µ±æ"•g×–‰ +%ò˜,³7`i«+›tœ^ÖÆ®”2âOÑø(Tq°¢ïÚ¿™Ú‰TšN n-ñ·\ &\¢=3Š8óæ"B?¾$‹±òáÓ{.,b”X“iV䞌üØA>O~ÞÎ$þü ×,d„Ò]~†ÑøV†Þ§#…‚± kâe|UŽ¡ Q#­ëaÞW»Çl¾%&(Šž› –gÅëð·hV/§Ü‰­U7ü¶Æø¬héyÊ ­ø䆽럂_¬Ì™˜yür¸è¶°×[üc›ªè’æ[÷È¡¯¢K"ŸÒÝx 9\zRž$×Q +å©BhÍi$l°ÒhºkŠ­0ç}+].¥£%…Ù…s`ÜÌ™¡¸[÷zaYn/kpuÆÏ0¿é$ž¡Ù$òðÍŠý„>z­,ßÞž[ÛÈ ÆpðcKJ ¹ÇVœp*¾Øñ<‰®7ât\tL„-võÙÀ˜r ÙbyTÎ`Þ˜[¦÷R 68 ô‡šÖRafB8Rî›*KhÛöìQ …"0ZŸëbÁb±` Y0’áÔ{=š%Q_Éï@;àÍ%™»(Žã‰¶€"¥?žÈ‚û³•åGü„•Ë«ô½{óš »ÎŽCƒÐìÌðHêrY¹{d„~¼nZ¿÷é +îj3aC$’Q> endobj +7206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [315.805 473.521 338.56 484.425] +/A << /S /GoTo /D (mem_sections_sec_dot_init) >> +>> endobj +7207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [311.889 282.855 421.478 293.759] +/A << /S /GoTo /D (group__avr__eeprom_g55c2be6e18755d37cf348122c9178e2d) >> +>> endobj +7208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.237 241.321 452.889 252.225] +/A << /S /GoTo /D (group__avr__pgmspace) >> +>> endobj +7212 0 obj << +/D [7210 0 R /XYZ 132.768 705.06 null] +>> endobj +7213 0 obj << +/D [7210 0 R /XYZ 133.768 667.198 null] +>> endobj +7214 0 obj << +/D [7210 0 R /XYZ 418.696 532.014 null] +>> endobj +7215 0 obj << +/D [7210 0 R /XYZ 133.768 516.052 null] +>> endobj +7216 0 obj << +/D [7210 0 R /XYZ 220.582 119.253 null] +>> endobj +7209 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7221 0 obj << +/Length 2470 +/Filter /FlateDecode +>> +stream +xÚ•XY“Û6~Ÿ_¡rmÕRU‡$xúm|®³qÙ;–“oj "!‰1¯dÆ“_¿}‘:L'»€F£ôñuÞê°òVonžoon_ñ*s³ší~å+å&qºŠ³È3µ-VŸ pU²Þøžç9wëMyNÝök?u lÛK;”¹LÁ¤ŽæÛ_M>ÀÊ$L•£‚`ýËö‡›WÛ›ßn|8€·òÏ6ôÝÌ‹Vy}óùoUÀä+ÏUYºz Öz¥B`õqaµúxó¯ï¯o%n ¢³[¸Êä&Ö¾çèŽd™=[oB/uj]6ÿö"~>ž${ç’ýÌ¢ö%™w²z8îØA$ÂÝ÷¼^©³õ,ŸÿÅV*rÓ8ž˜Ÿ®7Ê÷ÍÛü¾"8{©w•YØ%LÜÔ›Y·…YÄnš¦SiYraòJ÷dE¼W‹ W› ÍÜØOW¬‰B¿ é€NÃ*€N>ö½iÐÞÔu@:mgz=”mã¼À¹kxÞ4c-3L A;Z: nѲˆ²îúvíG ø3Wû÷FzWVåð¸Ž#Ç¥x—Gþ¼q·Ý“ŒÕð)“˜ÊÛº++ÓóèÙÚ±*x¨«ªEg—6êÒ(4Aw†vxì&3»i 7 ÔlPÚ‚Ç)W‘ÓϾ•é†Û3µ¡BÃØÙ—öÚa ±^ê¡Óù:ðÄ’Å’ú‚á´»†¾ÜáŠï-þ¢<ŽËÆý˜–‡¤NìœÔIä[…¶½â³5èÖØG]kmIêdÙ°+XübÈ-åtW"]al=ËüÈÃsÂp'\¤HhÓÍ®¸{q4½Áð<9QâÆìt·È=¢°6Ü+›r(uUþ1y2ÐtŽ}K扇!¹ë*„L˜ûû:ŠËd„ìeNÕ¶Óö-8º×ƒE+«Ðy;É–ÖÔ;SlÃko?Ûa$B/ÇèB9SÛ´=jþ‘G(•f ¼®dxÌ'"Y7¬}ÒÒµ4Ø¡9\ +;;r²ÆŸ™¿–Ã6¾­3dK}ßhšð„ËÊÅ­`ÅŽ§l>ÌapžñðåP?Ê?Ñx£!?­,Êš¼'˪šÅ¥7 ðOS€"€··{æŽzøF¨ëüö1”—U‰3Ëâ!Ç>tô®‰%v¦X“·MA‚ºd=Ÿ{¥µ£áš)GÝ|¹Þ0¥7Ö ʱób¦6Æ–W’ €´“©A3n4K&äûY ×á6çT½NGîíF¿XîWms xÊH[ SÑSÑ(šéú@*'Ár´L2ö½ùm„äƒ~L;™´Vóà– G&PÒI%[e°×D è㤥$iaýƒ~ªëŽøyÂH°Í¹=äö@;G$î„A2@oEâÛ÷LÛ £É3ÎÐèK!ß°+œ¥Éž”¢V4ÕfÃ,ó.*c=†X½•”ÁCFÑÙá2'€Ò‰'rp!@6Ó[žÑ² ‹'Žçb'9%‡†.OÕåá(üä,â;—Z‰~t‘E(Þ¿(°œ©öRG3ag&è1IÂg¬ƒ»ôc7LÃ⬠; šª°—°Ö· 0(]uSðàÂ… :[¥F†]*šÇ)%½øð‰;­¤)[qÅ…X(Ìì£F¢ä¶ -¬éç* w`?†8‹¾¤Ê I¼m‰8Hâsåà§Ê$žÂ‚mz/ÔvaÑ\›r€/È‹Ýäô„Bu+,úO÷'fJ|7Qó‹Š+—%Iê†Q¶ \?»x@ åùp†‹ œh‚™|ù¹ÍÃ'W…ÙŠàò‹¥…Ï)ø "Z›‚ß>®Ôp…ëz³/¿ÞZZs[´ù­þ½ßTå.¿5üµboá+à` +p¦SÏÍ—^€°â8iø©ø´P/¶} ‡€#ÅnêÏäpKñúñ“‹É0¥0Ì°–ÅŠô0žRÔ"Ýü’˜9¯Š8³fΧ¶ ûh#i9“œÎÒG;Õß0 ßLåï (ÌJJÏß^iNä«Ë2ìv´ýò;kèÍîÖ.IóA™3n ˜[ Êj©äÌÜ$‰/|w†Åwõ,gÿ^Õ§×ôØÍ•ž¿¦C]¬b‰…7¦ÁÚbòËéëd{¹óÒäÜ ¹ñ½gzæ§<‚Héí1‡Í (¡ôk•8䬒âT^¶_¦¹¾ò)«}û +endstream +endobj +7220 0 obj << +/Type /Page +/Contents 7221 0 R +/Resources 7219 0 R +/MediaBox [0 0 612 792] +/Parent 7217 0 R +/Annots [ 7218 0 R ] +>> endobj +7218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.027 291.608 243.729 302.512] +/A << /S /GoTo /D (group__avr__pgmspace) >> +>> endobj +7222 0 obj << +/D [7220 0 R /XYZ 132.768 705.06 null] +>> endobj +7223 0 obj << +/D [7220 0 R /XYZ 133.768 667.198 null] +>> endobj +7194 0 obj << +/D [7220 0 R /XYZ 414.713 282.806 null] +>> endobj +1065 0 obj << +/D [7220 0 R /XYZ 133.768 266.079 null] +>> endobj +7023 0 obj << +/D [7220 0 R /XYZ 133.768 178.272 null] +>> endobj +7219 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7228 0 obj << +/Length 1916 +/Filter /FlateDecode +>> +stream +xÚ­Z[—›6~÷¯àô¥øœ¬¢ ò¶ÍæÖö´éÆmÒ<`,¯i1¸€»Ùß‘F`¼‹Ió$1’æ›™o4BÆÔ»ó¨÷föÃböü5½˜Ä!4‹µÇ„ Q¨¼0H3o±ò>úœ¡æWŒRêÿ^gÅÝüŠÔo6;u“«¤ZáÓ»_±]'i–gM¦kXJú‚‹ù§Å³W‹Ù¿3Põ‰ià¥ÛÙÇOÔ[Áà%"VÞ½ºõ„„©Ì,̽³ßfô‘ 4?ò#ˆÁD~€ñD{ñ¢Þ—DÈ› ¼°jW•ë´1ÌÏò|_7sæWI£k”mÊ9ü{œÝ”Øîk£Ö&qd“p6™v=gÔïÅ×Èþ¢­›UVB‡¡0bÎÿ¿l¥‚åƒ4†‚;Æ :gË*©æaà˜ICÿøÀEì'u½ß,.”Ÿ l™ÔYŠ’ +ô'׫;£åÛÎS3ƒ Rk*Êêý²~¨½Å‘Ì@0VNR´k:‚`üåÉn—giÒdeQ?óa ,ˆc?-‹T#ÁHÊ[´ +:«lmŒ]ëJÃ\7+ëfeNâÂôý<üvÒv—ë-¨·Ø키2r›dEþ`æ@JèzŸ7Ø_Wå{Î 6dÃÈögm³´*Á½¦*ó\W(ÔÅ\R ¿* c—‰e„í.©ld†ÛdÈÌM ¤¸ÝðH +­Ð&CûÇí0&0¹ÔªHȃþf1SWz[b¯•luÒ‚4n¨Þï\„ÛÖT,#Õ«'·ofÞGÔZ¦û!8 €?C%Eù¥Ò»k6(tt<Ρ‹ŸJ! +L€W&•ÿ3šu^î•0ð 4ä¡ÂÑï&Ý®oç!õF"ý]Y¹é…Ö«»–6h—nìÊ®ÍZXÓ7­ÚÛP:8ö¿«ÍFønÈj‡E…-˜œJ›âðø÷~»³û Di²Ì5Š16¦ç ¨qÊûê&”ØÞ~¾qúlQÉû†’vÊâó q=k5 uV€MùÕíæ±¹b:&Wìþ¬‡6hVÀþÄ®9;0=…è¿ PEdÄÇê7%»Èb¥T;  [¬†pË}ó%à˜NYÖ ‹€¨0ì?kwq½²^¾¹3̈́튇’H—£w¦hKá—ÕÊ2,kÐn’9§NJlúÕ¹q"Lò,ífÚ¥ K²Üe ˆ×eu¤©"xÒUÕŽ·|Û‡áâ/«^¼@ÁWÇKšlÄÀÊGiU¬àí¥z¸êÙÈcÿç—7ØYe5ÔÌ|À‚`z¦æ˜ö픑¢Wöài2ŒW‡õGç@7èá…l‡‚ˆñßF¾ží0$*æŽm>Âö Û}P1Âö˜Û}ÌÛái¶Ï`t0z)Ý6 ݆¡Ýb„î @;ºû r„î 0;ºû˜º£ÓtŸ >@7èˆ~!ÝBÁ)¤¦¡[r”tt˺'íèîƒ#tO€ÙÑÝÇìè¾}Ž·&ûKQ‚n=‚\"ɸóçé¤9Û…¤"Ž/L¸©ÁÍmš¤1xá~ì¿F’fÐ.iú áHÒL€Ù%M³KšW§Ù>{€ms¥–Á…l3gÙ4d³ˆ€{Žìp„ìË1;®û˜Ñ×—CvT÷!õáÃi®ÏÅ T˜f—QMáN"¢i¸¦aÜÝe¯£®'íÈ²'ÀìØîcî ûåè$Ñgã0 :„¸ðÊÎU G˜˜„isÒfû›_nN3=hËt4>Mô-Ñ_ôÓ‘|>æS’9\öc%/$9‚[Ÿ¦tsE‰d!zÿÇË—#,O€Ú±ÜGet„ç @;ž\MÓÓDŸ :@4èÅ·üóà©®X‘è,Uí/‘!‰#s}9üwRX„î׊7ºÐæ»uû ¥Àv±Ù»{ŽN±#±aô/˜Â'N©ëÙÏöÓ‚ýlk¾TTsùWy¶tì/£²üüp§?œÿ:X¼X +endstream +endobj +7227 0 obj << +/Type /Page +/Contents 7228 0 R +/Resources 7226 0 R +/MediaBox [0 0 612 792] +/Parent 7217 0 R +/Annots [ 7224 0 R ] +>> endobj +7224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [286.912 564.288 348.122 575.192] +/A << /S /GoTo /D (group__avr__stdio) >> +>> endobj +7229 0 obj << +/D [7227 0 R /XYZ 132.768 705.06 null] +>> endobj +1069 0 obj << +/D [7227 0 R /XYZ 133.768 667.198 null] +>> endobj +7230 0 obj << +/D [7227 0 R /XYZ 416.854 567.441 null] +>> endobj +1073 0 obj << +/D [7227 0 R /XYZ 133.768 550.714 null] +>> endobj +7226 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7233 0 obj << +/Length 1412 +/Filter /FlateDecode +>> +stream +xÚ¥WÍ—Ó8 ¿÷¯ÈÛË&ïMö(ayæí­jí±T#s°ò^ΞϨ ã[ëœð„{Iš’˜fÆØ'qÆÒUŽhÜt'àú¾Î½y &Ÿuy8Þ]ÀÒ#`ã$"Q&¼„sçˆë­^ï:‡a~„,¢þ› ¡¾î&ÛÕØ/qJ-Žçñ‚/4%I”/ çÌ,ÌQ– +ÿïGsCp¿h›¡k«JuÈëv½*¤AI.õ€¢º-ÕU&4…Ý¢Ú•ÖG£´…«ÃÑQ#ýmÄ®<ü†ï(eÒèÛ/Ê xF~ÎÑã×Fz}%GæM«ñŽ2Š:'(§$MòQçA4òÁ5…ÔªkkDBÄ $À7J•=’C‹ëRáaPmT1¨’9óŸ´ƒ»mØÈa¤N ØS¡5ŒRïá4âÉvœEþFöHÔ`ê˦…Ýv¿Ûn«Ò[“(C i£«ÝaL¦Ýkq•å‡]?Œú +ÕÁÁßÎ}wÊâ G­w”Ó×~#+ýEGÛð$kcÐ…¬À/Á}(–ó‘¢›Lˆ»9‹,lKd·d3è¶VƒMˆ–jØ+Õ Úë¢@)´$îžÌ î=] Aä«Æš¾-ZP¨õz3\*±}9i»gž!B°:|€rŽºm(Äûèxp…Ô~£+…d¥¤©ýOøŠA Ýñ]3ô; šeZU¦è -›K^ïšNÉR.+× JÝo+i1'“~JDœ þ³¶3–£Ø`æJ ø¥EÕPŦí‘fþ¸›âÑö¸Ñ:e‰‹ÖØÚN6¤mf@˜Çc#„m ”13 + VìBõ]¡kÝÜRU—ªk|µ±Ø#)Çþ)+ƒÌÁ)ÈnÐW`mθéEÊuYç3È₸÷Y»dm7Þö‡~PµÓèÚu'ëÚdùB®ÌÛ¹ùÌ<[!¹³Ê`Š>Bµjx´êTœ Í‚ìñ"€.óÀ †;Ü2W²ÁmÛ–(ß;HìI#*öàõ|tŽ˜¦„ï‡N8À™9 +lóÖ^v!¨ ‹ §WƯ/A¡9X‰Ë´nâZôñ\ÈbBÅѧ‰ÝÇÅ-¼sNVnø™GúÉü@ê ©ÕþBׇ+ã„°äxÞ¹}À’C¯zÝuóÕX]Aÿmƒ˜ûûiôÂÀŠ+ÕßœÌZ/$a9X¾\ªã˜Ÿh]ß2vä`FøÂqc©J £´nIq!h$ɨ»Øhç°>¯ÏZŽe­‚ˆûŸe½»:NNýSO1¤3‡þÀÂñR­`”ödsÁm.àjš¼`ˆÈéýôÐБZWírÌm©Œ›pßò•þh}¦Ÿ†ØãGÑiL"!)O!¦M™$iF/¦â4¦{ƒo óIš +=­"éø?çö¶3ÏÇ&L§M•}29ƒ¢þpÄ/„óýÝ70cWqYŒÃD•ìlxçoJÇI„?ËϤ¦*Ê‹iîÁÒJË”bqÃ8?Æ(£þÐn¿Ñ~<Ü„’,ùÕp7ß÷çÒö¥¿ÃÅeyFRöþ“)ÉS–ÿ¥Ìr„CæN5 +\Våi"›sU ‘àÑ›˜ÝDr1¥ŽZ™`Æh¥¬ Xꇕ^º–îáÍÛχµjÎCþkÁ +endstream +endobj +7232 0 obj << +/Type /Page +/Contents 7233 0 R +/Resources 7231 0 R +/MediaBox [0 0 612 792] +/Parent 7217 0 R +>> endobj +7225 0 obj << +/Type /XObject +/Subtype /Form +/FormType 1 +/PTEX.FileName (stdiodemo-setup.pdf) +/PTEX.PageNumber 1 +/PTEX.InfoDict 7237 0 R +/BBox [0 0 265 148] +/Resources << +/ProcSet [ /PDF /ImageC ] +/ExtGState << +/R7 7238 0 R +>>/XObject << +/R8 7239 0 R +>>>> +/Length 62 +/Filter /FlateDecode +>> +stream +xœ+T0Ð3T0A(œË¥d®^ÌU¨`dfb44±0P0SÐ5Ð3cS ˆ: —|®@ °“ +endstream +endobj +7237 0 obj +<< +/Producer (MiKTeX GPL Ghostscript 8.60) +/CreationDate (D:20081204172335Z) +/ModDate (D:20081204172335Z) +/Creator (pnmtops) +/Title (noname.ps) +>> +endobj +7238 0 obj +<< +/Type /ExtGState +/OPM 1 +>> +endobj +7239 0 obj +<< +/Subtype /Image +/ColorSpace /DeviceRGB +/Width 662 +/Height 370 +/BitsPerComponent 8 +/Filter /DCTDecode +/Length 50261 +>> +stream +ÿØÿîAdobedÿÛC +  $, !$4.763.22:ASF:=N>22HbINVX]^]8EfmeZlS[]YÿÛC**Y;2;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYÿÀr–"ÿÄ + ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ + ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ +$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?óÞOzpB{Š²#”=+;–D"ëRv§ñÜ}9¤â•Æz°ìÝŸ—8Î;Óx£Š1ïNcÍ4b”ØÒßVúR­'¦—9Ï”gÞ—·\ÐqØÐ1ÜÐ}M/´3Ö_Ò€ú‘KÎ:Ò|¾´¼zœP=Î(çš;qGã@ øÒž™Ý@Ú;ŸÊ‚FqŸÒ€Œu§+ÿXŒt¦£¹ü©r=èÇ sžyP£=I= .{|ßJ‰§ŒpI$z +nG\΀G¡4wàšpÛמh!qÓ¡zs×ÜPÇSš\t;©ÙMvŒƒÃ9úuÅ Àÿ*8wgéíUîÇÊ¿7z±…ÎI?Z­w· Œ‘B*œÿz¦¶vç8FþU·ük ψ#Žx’hü© I ñèhd³7’&&'d'ƒ´ã¸?Ì +œ^]$\8b0X}kÖEÒ‡L±öîŸáR&•§)ùtû5ú@ƒúSº3ä}Ï#Ý5ÁoÞ3’Af'ŒŽô†ò$ØôìÂÏû¾=<¥ÿ +Ÿd:YÛûb¿áEÈt¯»<“Otk™ Ílq9œ£§¥lØÜØZ]\/Ú¬Â;ÄãdÌù~lc‘ÏcÍzã¸\ŒðT“ÈÁÿ9©-í5hâ™MéiãØÿ¸b^z{öô¯EwfÐ#mØ*3;ñZyïšåª<…tMMüƒîÇÖÿ +“û#Pˆb=:ñ›»›vãè1^·š*Œýš<4mOv³î÷g9hü+£k þ؆ãN‘.~²ÛH ¡CžÀ`úWsK@ÔR<üioŒÙÙI•·ussi#o}À¨·Ö§M7QSJ‘[v‰þkÀã Lu#½vŒ¯u,D #‰ÙxÏ +Ïb’â3K­ÍØ w4¤ ŒÎyÏQRô-F㎩ eÙhî»ÛcÚgŽ Èú£u¤êª¡O¸lcxsíŸð®ïH»¼ºðôO'ï.†U¹ÁlçŒTñZË RP¦zîÇ›×BU$ÙÅØ_O•…¾•töùù!‘ŽT¼?Ãò«wÚæ¥c,Sh䙿œ¨a$ä‘žOA×ô®æÀËw5-RRÜŽ%ôÍ@ÝÄ×:kËlæU•TŽ ÇÉ‚O¿z’ :æ6G[Ò?³¢á]‹†<òÜq]•- +$¦q&ÇURýÄ,¶Ï)“`T 'Ê9?.G¥S±ÒüIe‘[Ã1}ç{†$tîÇjí'Úú•ºdîŒoà㮢¼íjB ġ猇úÔò¢®sZøŠêÒKYmmev?33`îÇ¿z†ïJ×o¡+p±Im»Ìß„R8Áàk«†`©Ý’DkÓÓ +½i–Li,ÎHF™€ÈìdÀ£a5}Ì´KáomºjLmä`¥A¾6ÜzàŒ®>ªvÑõ¨Awº´iå´bQµ×Ÿö}ñøWI§§“cdœ ëïÍK4É/,‡ŠY Ka¬ÜVRZý‚× ”Ì7'*~ïQÇ~«ZøcS‚ÒîÝÖÑÒt~~UÆH?w×¹ªêímwimK°Fÿ»·§ ÷8==«Ò¼Is¥Ú›Ibû\ˆäy›*ryëÞ–ƒå{š—ú-åí²¢ÙÚ[Ƚ7vãméœTãL½Žòk„²±&B®7Iч½ øþ¸:®½=û[È¿èÏnÛÕP³n=y< tã·“^[ËOÝ•Hì’PNOnOZ.‘\¬¡iHHU ¶ãž™ïEÈ/À2[ ¬¤a#TÂŒT7!A@Ûzÿ'ôkU¹^ÖÝb‹‹¢žHm¨»Ÿä¢´­Ù”Œ`ve@‹ÿ}¾K~¢µ¶’á÷d®Ïâ`‡Ð}ÔýM\ZZ±+™%îÃçÅJäú£g`7þòI#ÿ Må9è\þ?›Vsê·Ü€}d˜ŸÐS ÅËõKEÿ¶$ÿ3Z©+jeÊÍB¬?¿ø“ÿÅÒ£²©ú§õ&³w\ñ‰£_]¶Ê1ùš‘^èñöÙ‡?ÃcúP¤r²ë®‡ì¹?¢PÈjIùÔâ1úüÕ\¤­÷îîŸÛÌ +?@)#µ€HXƺåòçÿ©“Lj6!‘¾Ò[~÷ýÅÚŸ÷ÑëRçmÃNCžÊ[åèÜtà9Ñqþ¬’}@ÿ’„Ûƒ÷ó¢¤ÀNŸ|(¥`¹â(Ù"—åô¤AJ>‚·3J2?»KÀ¤Ï¹ ?ìÒg»K‘Ž†Ž=ý¹ ?ìÒ¥Œt4¹9 JN:v¥â—ŒsœÒ${Ñ‚r*0=éW9Å'êh÷üèÀÎsúS€ï@ÄÀÛÞ—Œõér:RPvô© +…ÇSšhÛžsšxqéL‚=?:8ÇJ8ÇñJ6ã8ýh8þïëJ1Ÿ»NÊ‘À£#û¤ÒŽ1JìühÏû#ò§oí@ ÿ_Η>‚ž$ +”_QÇ9úÓ~^›@ žWô¥À%>œÐôÏãJÝò1@À0Wß“Jÿt`ûÐOµ82ÊóH Ü6~µRï‚£š¹y9üê¥Ù— +hB{æ2ª+n8zšé¼ ¶·žDl°ºáøù‹*õæ¹Û]ŸivT’W¯ÖîŽ5kö ±‰ãl÷Ïš®zˆ¥§ëYºÖ±»I ’´òyH¨G\w Co5 ­ïæv´kX ;0$‘Î0Agqwynd,ˆÏ€ª¥F e°sÔ‚? ÖdúŒWÿi¼º@Y#3&ÒP¿q¾qÖ´4õ€^Û}š@ñy®ÊÁTnýÙé€3]IG’ö9¥ÏbmGPŸK¸s°ËÁ!i òrrª@ þ¢´4ûž„Ê‘”LárêÙÿ¾I°¼Q©Ûé÷J¯™ÞÝÝeŠVWs€B‘ǹ>µwÂò=Öš.Ý¥o8ž]PÁÁ?(Ïnæ³|®>f‰IKÈÛ¥ZþäYi÷7eKˆ"i +ƒŒíÅeh~!:µÓBÖ¦ß÷^jî|’¹§ãÖ²57«‰¿ñ=ÝŒ“܉Œw’[a€Ñ¨$sëœWIw;<¸÷mà–Súu¯2Õ¢’-^èKˆ’Ý2«2ãv[±#^å$lŸ_ÛD’"ÄóÜ¡fF\aó€G¶ãß­,Þ.»…¬b6W ¼•—#çö<ž¾ÕÏKgq7˧Ã=Ä#%ŸË'nÒsóc€:zÒǧjsÆ’-ŒÞP'‘;ëþM+"¬tCÅ7_¥(lÖF +låú`tõ®ÏE¹’óI´¸˜†–Xƒ3Ÿ¥yœO"ex¹”"ÂcÃ>ÖÆx'§Ö½Ãöò¦ƒgÊ2H"ëg þ4-Å-k:°ÒR'h™ÖLãœ0Æ=Æ*—NÖ-¯àyUÕ̓ŒŸnÿ•sšÆ€ X%º¾VDUˆ¶èW'%àŸI¢è­W­muÃEc(s¿6Aõ$ÿõéëÐ z׈ÛL¹òLLÌNSf2WsÁ9ðW[U—û4]¢DVIU#,à.IÉèÙÒ¹ÍJÂÞòXî¯ÚVHãHÛ÷N6Žx;øûS®®ÖÖÒÇI¶‰Z'¸*Qî6á‡<>Ô®;^Æ…¶»5õ…ì3Eš–;NA#úW9›¦ÞF \Åe!O)E ’3¼äŽ3À>´ÿ $ãPž…À–`,Oú²­Èn9ä‘ÜÖ#™“m¼­–^uÁùRÔ¥¥ÎûÂr°Ò%V!Ú9Êç nùWšèmßzîGÒ¹ï KåØYŸ§ÌÍ‘ÏèkJmRßM2}ºæ4Ë(Ž<åÏùÏ8œI‘¦ÍµK`œ à š„]ÀP?š»J¶ÑÔþµÇßxÒâYZUº=«;ôþ&ªý·_Ü·ۺ˜–{WópíZ&…ÈÎþ7"¸È ÁàóNgU$+†Æ>lMkª[í“*ÂHÊÀ0= Èéë]©2´–†dóT®ÓÜü¹÷ûÂ¥ÊÁÊÖç&±=¶t>ÚíxóP ³*sžNp9>üŒTrj—éVðZß9»–W{—@Ü ¹~¾Ö¬ÞxWR¹¾â{uI¶±ä)>˜ô¨?áÕ +ã}ªÉýá9ÇAÒ§BÈõ-E¦ûµë¥š[¬w ´„gÇÍÏRqÇ¥Y“VŽ÷ĪæîEÒâ‘LhÈÀ?ºÉËgߥF|#©²äËj6ô]çô©Ž‘,·Bò9#ò-EbÙ²¿\ûRv¼±˜\YA*Ÿ•ÐùSî­–îÒ{i2#™6Áç`Õ}ƒéVìP®±#?¥hU¥¡›g7}áèÕà¹K«“, Æ¥˜ Œp1ŒƒŠãu(˜ÞÉ 1@7/?øðjôÍC›p=XWœx¦d‚lG¸´¡À*x!ÿÇÍKÞÆ‘ÕäÙd»Q%½}+CÃWÂ[øÔd #dÛŽ„öõõ5Ç™ä™@yãÔæ¯i×[\#ƬþT¡ÀÆsý:Q% _¡éÄ`dô¬Ãsnâ[ë™ü>®ñÖCè?úÕÎøƒ^šüImj²[[¿¸bGö>ƒÚ©ë2Í}¦éÍ +æÖFð: ÁÏãüêTn=‰5oÞ]þçO_±ÚŽóü‡ùæ¡ð­ä‘ø‚3+y†uhÉç'¨ÇãXnÛ§¶,³Ç"²##VvÀÈ9æ´²±7=P‡Uù¶8Ç´õs¤çŸ”JJ¸Y’Àu?éR¡Ž äô?áXš9ÆÇÿ:r†ÁòxÎ:SP(í)U7 ½½Er‰xöÏ5(ÎH }qÿצ*| cØ~7s– +:P"EooÃ¥;.)ŠW8'ñ5&áëÇ—Û4UÏ·äÆŠ23€Y¿:)ˆñ;QÀ=I¤Òâµ$Cz1ÖœIÍS ‰¹Ý3)2p@!†9#ƒÛc>cþÁÇ?•?Äþ#þÊ€ZYYÈÁu,c¦©þU ;”C«ëVº–q$—QDK`ˆÉÎâØîx8¬íÃ×zìϨj²Ê±¹É'I~ŸÝäV­‹KàÒ ˜ØÊp‹ƒ–'×8®ŠÙîLö0––EB‡iåòÛŽO¥IltÒÃÊjû.æÿö†›£FmôËT-Ðìéø·$ŸÎ¨µÞ±©“ä™ +úCò¨ÿõêþ“ Ä¿=àó\»Œ ÿâ¿•'Œq™nê+.ÀÀåOøVƒœ’n«^•Ý8ó5Õœµöºê[Y•Vð.ï½Ï<õèúõ“©]cI]Ú8FŸ¸sí÷J—C &­}I&IœôÀ$sPè²,±jÈTâhê=Ãœ©Ïõ¨œ9[aÒ¯íf§$µ;ˆ®Vî Éœò ˆÐáP´}jà;§²Ö&‡µ© )‰ðì8n1À>ùý+rK`öOS€rOó¥s BTå%…mWRµÒíD³ݱ*¤ÉÁ>¾ÕË.­Ú­fßûñ +¸Æwǯ]¸ü…%ì² ŸÆ¶=Æ+ŽÑ.í¡’%y–'S¹w€»Ã£'ž§ò­y5g’å °‹Ï`iIÄj}3ßð¡= +‹“o™[RÖ§s +Z4žb$ï 8Ïk̤氮üSróˆtßÜ£a|ÙN[°ã’~µ6¯ºM5LŽ‰µ ã%ÎZç/‘£†Q+«Ê¨?{ ñD{;ÊÎng2ʒɼt9í)àñÉèipž}Öÿg;‡î³¼ + *ŽÄdÎ1L±@ô”¼Ö{\HÒnÜI5vؼ±` ÁÁþ “Ä?x¸8ëÎ:q]‹¤ƒSÓbŠÊîÞwYÄŒ  qµ‡sêEsÈ0{t8ÏÒ­xž;ˆõXÍÝ´JÐAùÜø'Ž½=zP«‰¡Msaö~|‘LÊòO¼1q…#Õ¹¢h3X]ý¢[ˆÜm *¡Ÿ©­»kXm`X`Œ"/@MN4í¸WÅJ¢åŽˆb¸à€=NkÅ‘™´ ÏtduF?‘5-õýâ]­¡ƒjÿ®yú*í¹7–éGóä:gzþ£‘ZFVi®‡$£xëÔò©×÷JÛÎqÇùúR)î!š §-ž 9öÅL +à°ÁçëŠN2ǵÙÇ¢ÛÅd¶ÒÛ-ÃuyB`O`Þ‚²nü?*e¬›í?å›q þ‡ðüªTÓ‰‰Ž:ÐF)Ì„1W]¤AR t5B£h;†rF9Èþ”½?úÔ`ŽÂ”ñŒh‰ì­šîuvÕêÄsNÔ¬ÂeV`ñ¸Ê8ÈÿßÓ¬â‚5ƒ)Q–îIçAOÔíMÎ’ÍŒ_=Afº‚šnœ~ÚФpÁû”`¿3±á‰õÇ#þú¥þʲ*öÆÎeýä/zžÅ‡SO~i¡Å¤ÕÌ©a·²DiH’nÈ*Õ»–žÆxÕ ‘®~Ñ& +"”Qžp2>cϨ¬g%ÀbI$òjý¼Å¾Ì³bH-åY|’ ÀÈ'úV×n‰¯ËíÜ’è[×":¤®.Vù<ÀÍ$`&TgÈã8ü)º96×Qï‘ì#Y•Œ„†+ïÈÇsÚŸ©_›‹–ºXÒvcOj,î'Iцõ*@8ÚJž=*vµˆ²½ÆÎÂ)¯$öçºùªF\nÎp=pO¥t>ÑÅÜÓ°’8"˜2oáʧ‘ÛšÉi{Ë™ÎÅi™å*:dŠžù¡°kX¢2­ë‘1ŸžfÆ9ôO_\zu¥Â÷'™ó¨¤t:׉#Ýö[8Ú0ìc83±8Ç„÷ïÛŒš‚ÂÓË2ê:¬‘Í|§n⹎Рˆ:þ~µ­´4°2M©J¯sò³Ê§ˆ†>âó×Êw%äÃéÞm™ÜÐÂòìVÀÉ,zç<ŽqY6ïduBšKšOBýµ¤š»#J K$Å/O˜ŸÇü+¦h¨ƒj(À …ṯ5×·)åÂAT@N:Ž€óÛ¯ä+£ŠpS*µy´è-SŒŠÑ»ÖE¸µŽ]£s `qÈÈÍC !a$’˜÷gŽƒzú®Š Jm¦€!1™ ÈPz xÜ8æµü7ËÙ}¦èó6RzrsÇnµ•›f›#a=º +òëÄó|LšGLœW¥ÞÊÐÛÊè2ʤ¨õnÃóÅyÿÙÖZ÷)n«>¬Ýúæ‰;+8HsULX~Ë-è‚êÚ{‘"±À lúðG²äÓ%»x¶£wE ]3×Gz¤ût–—Ë=¼†9¯€H¯Z¡q~DÁ̤¹9r8'ñ¢ÒЬlã*®û#bÂÕ&²šhn'6Ω¡\Ã$zöëY÷cFÚ¨¢&tÛž£ha‘õÉëKm¨<* Ù<¯x?¥gÝ°;1Ð=ªãÝ™ËÎ’º+¤ÊêJºÀPr+DÜÛ‹ÍFH¬ÖfyÒX¥9ýÈݸ‚;ƒÈªßc’UÞhÆyã5 $Ãvèó< +èC2ŸóÅ+Xé­NI)5£)ÜDÐÎñ·.ŒTàçqW¬l–x|Ç'ƒ‚ Z†p<ÀËF¬ªÀsÆ Ó Ö†š„G n9æ†ÍðTã)®eqâÊùä?ï£Kœ·3< ò1BW¿äÕ¤POlRÂÛ/áK`àzñRÙêb¨EÓvEsÄ,“Çl![˜¼èÔàä!ÏH9ŠÍÔ£ò/&Œcjɹû-ó/èEtRA(Ïs?ÖY>m‰ ØŒà “XúÄKû‡B[1˜˜AÊüt¥QóÖ ‡žêÙ² ö΃Ñ×çÿ?\ÖÍ¿Ùî¼%pVy^KYC Ñzúçfü½«š±¸û-í½Á%Dn¬q×ç†kµÑ"–=GPÓY¡†ÚttVÛ‚Àd ƒžÄžÔ2Fèòî—M— ñÍ@ÍŽ7FÇþk¦‹'®qÛ±|溴» +¥N䜆>£ ë[)ÝÐÇŠÊKR‘(f,ëÁ©bÉŽ9¨Šg#!I=‡AS¨Ïs“ƒ9¤ xçóÅ?·*q×µ2=Ùä’{ŽÆžãnóéÀÿ?Zh–.æÏœãš~æ<…8ç’y nÇÌGONôì¹úU$H ’(ߎ(¥ÆBªã¯'ÒŠ«sÂá]g…´½‰öÙ—æn#ÝÍchšiÔ.À`D)Ì„zz~5ݳ,ä00 TN] Vƒn.–B±óGUe¸‚s‰—Ë“³¯OÊ«Jq*Û£…š`~b3´ɪ·a´ûö†w>C€bb3©ÍB…Óh\Ö/ßéÐÜÄê5q*pëøÿŽkÿÃW6ø’Ôý¦"2pãðïøVͽÌ6cb=»ÑŠö)ÀY–Þ£¥$ÚØ­ç|œäG¢¶4XY®xÂ=zšOØ ]PÌ +ùWÌóÑ¿^Ù·etù~騅Mz–ŽMèBîï¡ tˆAÚ1Ï°¬rü…Ž<2’ÙàUë»…¶³wb +qß-ØW+#<²‘·;u&²ÃÓ»æf•êYr¡ _oÊ”zJL¸4 †WqÄ8 ó‘š]¤û}1ÍF#öæ—=y €{ÿ,ÓŠã¶}) žÿÎÓJP8É?Ê‚:t§oψô©ˆ]¤ñ»4ä,Œ2A 㥠ý‰¦àÿxÓ°¹ÎìsÀô ÝH¤ öúšvâ9$¥*žŸáHb;¸QìœS°sÔÆ—sw~e‰É?.9äñ@ÇîÉ'æç'üÿZnÆ98?•=dSÀ'>ù§¸ÈØÇÙ ,hêÂùÛypÈßøî?­-›ß^Gorç¨Rp=x©ôm‚[—•3€î +Ü‘½2?,ÕØ5svg[vY™0œ.ÕnŽƒkñŽþ´ºœÕ’rI²ÍŽ=½£]E -%¶JI 2»¸³Õ@äÍ>ýäO=eº³µž9¯wæ8>lœàÿ…©!»pÐËfHÈ\©Ýãœ÷"¡¾‚iF] Þh|+–ÏÊWN0 ãŽh¸4’²% ÜÛ[Ã%â\4–û7. Ã4KŸ_â#3Žjœú=¤6þf&lǨk…L‡`IL£õ«pY-´ÖL¨©º8ÆÔ9óâcÏSËzžÃµa7ölºU‘x¦7&LLÊrÙÁoÿiô“Ý0ÜE¢ßèÚ_+œ0:ñQJT^ɘ™ówu‚¤ålÃàuÆ*¤2h÷ÍöV½Ác3¶L0Êüß1ÇOÆ›í°¾ñed9ÿždÿ65§Í›ÜiÑ[eša‰ˆ·S°•éÓŒœŠÃé[G$sèù´E„s0?™‘’p0Aç<ŸJ“ž”›e]t£Ø鮊©“0 *®Ò +ä` psXÀç‘ǽkk’0ÓôÂü±3eÿ½Ê|ÞùàÖM½ÂÅ6ö‰dN€#$9ÁÁÅ5±èGa0OáNQúÖŒ[ÇîÍ­¹ ¬Ø£1c÷sÎ1š«yv*ZC ‘¼åd줷ËÓ'·|p1LbF•=Gó¥ñoåÙÑâ²Ìrm–7Sç /ÎBŽ=ýj¼R“"ÀÜ3ùԺɵvµŽ×Sº¸œY!•ÉXœìùW azúô¦‡ÕÏ!EjEj’ÚDñÊÉ1ÎðÊ +ž˜Ç9õý)Ú^•uqt‘­¸rA8$vï^¡£i©o¥[G5´+*§Ì6)ÁúÖÔê%¤•Ìñt¦š³³<Á´ØÝÔ´ìëýÐ6ŸÇ­?ìPªâ2c>¡²Oç^¸-bQÄ1¢ +Èñ¤ºU“,åÆCmº^ükuZ [”áödïÎpQB‘C#8–Ui6DWïH܃œŒŸlWS§Ø d»ºòΫ:åزÙ;*ÿž~•WÃö‚ÖÔïï™I´…úD‡¬‡Üÿž¼hZÛEÍÝÐsd w™½Oû5Ë'ÌíÓ§sÕz/ÄÏ7¶©*Üêk0²B­l,df-†oQòŸ¯Ð>»§’Xn>@­‰!9¸žøý+Ÿñ‹£”šòéìFY¯laQÔŒ­%ÃI¨E{2Yy›£U +;ÓÎ0}:Š›r»*ʺR[t:ïøItèÔáfUŸ>ʹ?¥#xšÜÞ X œK¾5o5v`3(Î Ïñg¥yôO¨;“=«@p Ð2 ‘Ï&´/å_·­Âßé0u'…ô4ùš!(½Qé­œqXzÖºº3š’©÷ ’Xw=8\µ¼2Ë9 ç‚:W7ãHvÀ¯£É?.?ƒk©ÉŒpßZ$È¥(ÏUª6ˆ‘,öP¾Å|9Cò¶pxcèj9|$|ˆ®´Ëƒ%ÊJÈòÀzE’Š‡ §Ð†n;TðĨ ÛŠ¿`mŽÅ†Ê[{{‹Ev,Ô•fROBUiF ŒÁžæ¹m¬È±åÿZ«<ŒáFAÈ5zp0qÒ¨LÃ'ƒÈ¤÷=*Žé«›R-ÅݵÔP4)oskö†Þ¤—1À ?­dLm?Í‘äI>P +Ãc êÞ¯éæÞk+'º´ûbÅp#1 9ÊÉÞSÏ¥Rµ³ÉudÑ:JÂH +±”`´‹Î{ûÕt>fJÒhø˕Ӱ5ÓÚÜCo©hºœŠÌÓÅ;Ž˘Ÿ?–x®rïçÈ?EliÁçðÌÂÞcö· ¾;ÆãüyOçLÍö:uÒ¼zȨÑ}©òY‰)‡ùŽbXcë[×w"ÛU1;…‰c9Ï_Ôá5[Û¹Ú ’ +²¦×Ì…„¤sÜqÞºoÈ'´ÓõKS˜Žèɨ<¯ò?KÔæär&~úý*Ue¤1ç¸úðýkœÒ5]á#Æ Üc?ã[Þ`'pBàð?È~•˜Ë@¦3“õÏê@TüðO¿<Ô $`N  õ©ÛÑIA#ØS&Ť¼s꧑¸òØöÏÿ^ W‹€{v©ºÿ5H–<.¯8Ïÿ^Š@pùTùqÙNsš*‰8í.É,,Ö!Œõvõ4Û‰%È;G +SRÜI…Ž½êEíǘB=¼G ÉÎðG?…sîÍw.é4Òï͆el|¸íIâ=3íºy(34?2ûŽâµ¢P Ó¥<’NO$~µqvw&Jèó K÷¶mŽ GÜw¶³DÖæa"ˆÀÉoAUü[¥;wþâcÏû&¹;›§´Ä+}ñž¾Õ£‚oA)hY–í¯î™Ù‰á¢×Oi˜­Èz)9Îýk™ÐíVkîpª3ÅtNðÉr4Ùw'š“ÇB:×=UÍ.TvÓ|°»1õ;ÁurJäÆ *ç§ÖªnéœÔ“ÀÐ:† «¨u8êù#ð¦Ëg"º"’VG,›nìqe1…Úâ$ûSAïéAÚxÆ?­) ŸzbŽãÛ4£èi0Aøb”ƒÚ€èóß4ð˜Çñýêj Æ[ü)íÈÇ\tùé 0Ý09úÐÑ£+Ÿ¦„ uPO¹?Ò¥X²F~Rßtp?Æ€!)òãi!B1Ç9ïSp€úþµ('$çEÀŒ)év0Á+ŒÔœü¬[ߤô;T~<õéH’r;zP@À$sRd üª? +ÕÓ¼?¨j81Ûˆ¢í,ß(?AÔÓ)H ç¶zV†™£^jmþî‰æW8Uÿ>Ù®ÇLð•¦ãý.^¿8¢ÿŽk¡U +8v§b\Ž2÷@‡EÑ¥HÒÜK„gèÎpà+œ‚i­ÝÚ²9Eo”õê vþ08Ózµq¶—Mjg(ŠÆXš,·lãŸÒ§«8«?}]›ºeÉx5»˜¥VF«‚ŒaBõ$õïUµ°/’Ïqs»¤¶N@á€Q‚8é‘Zvmy¨D5Æp–î[j6B‚®áœU{å½· ›H¢A.Á"mÞAå‰ÎxjF½fÓÉ7„G$¬"HAI<ÌÇónÇÎyû€éXð¾£&Ÿ¢[ýžÛÈÜ%„¹Ÿà©=0OøÖºµÑÔ¯|æ–Yj(1ì,s”dðHÏãUøÒIŠâ9‚"ÈÈŒËqŒp3ïÜÐhÊSÇs.»0UedXP…å2J©˜Áçô­9ï7žcÆSäŒ'—¿b|Ø}Â2ÑÇåP&ŽÃUŒ˜fò|ÝæFŒ ¼xî7ØZµý–žt­e·´.®Xq2`dqŒuȳÔH–¶J!•š[ÒCt+½üz¢<ÔÑîw^G‡¸eh×çóH î ×­lAf³1¢˜”–å× îfO8ü;T ¡Lºl± pnMÊòbŒ Ãʆ)¦Ö‡:5±«\èê/˜°Ã(.»#;sŒAþ}i“è—Èâkx”œîFOåR@lb¸²gšÑü€ÞfÝß1çoDçu¤sÒ‹‹÷Œß¨ŽÇNE?*¼à c§…eÁ(šháXbVeHÁ8Á`Àäñߥlx©ã{M5ãpã2©#=‚àzzW=´r†FÚáÀ?Κ=í¡´¶Gr¸†Û`}à”ä÷}ÿJ‚ö%³HɆÎx ÏB $þÎ?TÖòè ùÄvû£ü)’JÓ9’fgb:Ó(Y<Í EŒʪôQØVƼºƒC¤›¨­¾Ë½VBw…;~öxϧ½bð9¿´5Ÿìäû!†K„¼U‰òÏÉ÷§OZãº/ø{v}uÿd×}ù@® FÊkcŒ3. Æ~R+o[Õ'²Xä·ßæù2•P7+>Wh=8ëùдÔëÌUê/C~òê;+Wž\íQÀXöÜž+…@ÚÆ«4·4¸3/d}ØÁþꎿýztºŽ©{ u´ÝÌ»áŒ.JF „zã§Ö ¹x´ë5³³Ë?xýØš%>ˆÂ… «ËcvÖÕõ«§y }‘çnžiÂ=­½Lô×€íÀ渫Zö(­í-µhd¶ +áQWËs‘·8ÈçõÑZÖm —Q™>ÎŽÙl¶qÎjàÒg&:N¥9%µŽk^RÖR|Øg©kqïòçð¥Ôbi­íeû6ð5³˜ã$¿˜LíôaùÒjSÃucû“ææ¯B1û§çðàÔ2ί§ØÉý£%ÍáŒïBùX‰Øp8éŽ>£ÚœíÌìqå×ú²OÌņg—YI§&V“©bÈ­Ë¥¹û&˜^í‘¡–`yÛÁ%‡cŒþf°‘J\À〠vÅn\ýˆE +‰&–Xî[|,NÝ„:dü£Ö¡îuÑ·%‘i5i£ŠÍÊ»D¾9h8ãU.Wͱˆ4ž_înb'×0ŽþµZÜ4ZŒ`®Ó>¸Ål4hñÛ“¹[°»OC½GøíLž¤á⢜Wq–“\Ë¢éS¡ŠÍu;™Ï°#˜Ö(×¢¹—2;¶Xã%Ž*ö˜ "îó®/£pÁfHÆJ€{ñ4é­„ºœEIã2dqž 6ìuÂO•6’®Ÿ¥I0g”°IäÛŠè—s]ÆÎéµv°ÉÎ+Ô§™µMD4’—óLŠa˜•@yìqÜ}+e.‡¦Ö¯C×Ø•OåUÌnÇ/ŸÊ¼}î.æâ[Éä#ûÓ±íîjÚB¤É$I$‰2;\ƒ•œ­õ=?Îe«‰#¸ñ)†mF•Í¼Êí9ÚAÿ¾«™ÑÙN«oÄwж=þ4:‚ZèqÜG»í J„<ÊY{z­a¦¤#¸ŽA_-ƒg9èjz ¯«Ê7t@LZGÚîÃæ{QjªÀÞ¤Z}Õ³½äಠ®L˜n™9à~>´ŒÖë]ŠÖÐK,W x.0£ÉRCŽ§$c==éuþù==j}UU^6?òÚ¬G?21LþAOãYvò´3G4mµÔ䥱œ·.É=´š ·-ÊK”AÊí#ÿ®k{÷ið¦¥bç-nÞt|ôH“W+mÏ"ÆÅ”ÉUÉþu¯áÙ fõ;Ä{˜Û;X~MI’º4ëdžïùK×ÓµwšdÌð©î§zó»h™.Ì}Ñ°k½ÑÂì@@BIÏb:qQ"‘Ð.xÜÌF{Û¥XN˜ÏltëTâ\˜f#ü9«É;U²yêÇ­$K'Bx5 ÇÌ3îµäi“¶:óR)pýç>îj‘,v×?Æ¿M¿ýz)ÁÇbãEY'/™3¬3†“†p3°z×Aen±B¨ 8¬ýÈ 3L'ß!‰à¶z|£ê+œÕ‹Ý?¥(Ï⿨¤ü <ÿ_ÔS$‚îÒ+ËY-åŽQÁô5䦗6©Ëi89SßÞµí* ñü-È>†°üW¢NÈNŠ>ÕoéÜzV°––•îyõžëx·¨ã€E]Ke¾3LnâŽåSÌ8Ý€r8èF8뚦ä hÔŒëQgøpyQô|ÿ*aŽw|ªJdÏ<õäÓ³Ž61Ø☪sžsíÚŸƒþ½!ˆ¤n8Î;dÓÁË`€yÎi6í‰ê}zÖ•¦‰©^àÛÚ¾Óün6/>ç¯á@áˆÁþTlÍÓð®¾ÏÁ àß\ñÿ<áû1Òº M±! ´ÌòÒO¿3Óð¤+žwg¦__ãìÖ³HGÚBÿßGŠß²ð]̇uäéÿr?¿>ƒõ®äÆ” +v%ÈÊÓ¼?§iä4VáåòÖ_™¿Ãð­lQEQ"ÒÒ +Zb9Ÿ¾- _V&¸ÎõÛøžÒKÉ"ôEÉüs\áÑ®2>îr@þµ“i6rÕ„¥- M"(K‰d±i‹žU_˜³ ‡$s€=G½E©=¬†=º[m +Ìß(MŠN9ÆsÊ·Þ¨íÅí´1Û†´ UuC†ç ÉëÏ_aI"ÜM´µý¼{P)ØÁ=pyäŸÌÑtmgÊ‘&¶~K’¨"Ûs +«ŒFçøIÏQÍbŸ™ d¥ƒ‘Žàc5¯p~ÑnÑÏ{Êó Œ›¹?.Ð1Š"Òã“ý]ÚI¸…À8öÈœ‘£Rnñ)i· ax“À™aÁUÀ,;Ž†½Ü*˜ÔíÏNµÎYhò[2]ErC.H*›»`ñŽiÒk°Å#E6±åʹʴOäFjã$‹§JPVg@72œücïwÏæ$:¶NÐù'¶6ŸÒ¹†ñš.çÖ¥#§Ë +éM:å…Äl¦úþh؈Îȸ%º Þ«؇[Ô>Ý:ÃLp§ûç¦k+kÚT‚5£5æ‡jà2Ý£X 8ÉüÁ kþæ’y?)çô¬Ûlå–Rwl§®ø”éÿõÒoý–±ãñ­sVÓõ(-OWT…œ¶åÀç?*ÉÏLhí‚´R‘J3AÎr;ó@ïL±Ã#H÷¹¯ LèÚx—ì†ÄÌ‚3æݶwvÇ\cÚ°¿†¯kk¦ h‚™Æ¢ÍK×c „;qÇ¿Zv$Šêñ­•n·$ð3muf nI9öì\Ò$šçíO<Ö«FÃq>il,ëÆqX7=ä͹!¶€xÝÏzíáúN—Ê V£lJGúÙ‰¿Â´ŒíæõèEÕ+¹Vús§¬²JTê*7ãþY.>è®+Ù®¯‘‹°Va…ÏÕÐÜ;\âæIU¥’B6Æ@ì}ǵröƒm;{H¹üêa¦É¯W–ЉÖ]‡ÆŠïÛ€¥"taûÜó6¿‰®~ívj ¹J‚±°Ï<Ð\´bÊѾÑ$ò,Œ%…‰ÄKž«ÇzzûW?¨ÆcÔn Áä¹#úUSÜä«ð›zn$…º§úNÝÇ Ü…j{Dš Xl³Žu“‰‹üîpÀäc×ù +¥bu ˜x'6°MûÝÏòÊK.2;÷õëV¬Þ$ÑÄrßL×QOµm¹Øª¯dzJE†I5+Ë›Dn#dRÇ( 8éÏõ5›ªÜ\;¯“ÝñÆ*[¾‡­‡Š¥V_#Oʹm*î$¸‚8ZßÎhŸ Ó2±˜­ÏÊjðÉl·>\êÂ6z•ïÇaNç+•Ê±ôyƒn*¬Ì„ŽX8Ç_¸ÍXOÔ~UÐC$W6œåãe-ÈfÊöÎqÅaH2¡‡Ö‘ÑI7u0¼rÞYIsxÖ–·ºpI¥R£{¦P‚Nr:U­j凄ôB#ýÃnäcgóQùÖu•ÆÍH» +$’ÊùàT8¼Á¸džƒ=ëzî ®|5«Ú\ÆKÆE‰[p@Ht:þµ] Üfœw9KR[‡dhÑp2&¬¶]‡by5Z×Kx'ÞdqéÖ­|¨ãrî=ñD^‡Òáù¹=íÈäXÁØAÚGZÔ×aµ·Y·]ÜÆÒÛÅ=¬[ÎÒÃ!²Æ9¬×%”úVäW“Ka¤5ªÂ÷-¾ÁÖfÂmažqÏDsÏÌáðÈç5O.âÊó4i()ßu†Ó×ý¨ÇçXrG²WQÆ ­‹Ø¥‹K)0 $.`+É8R9ÏO¼ù5™ů㤊 %¡ä½‹ÖxƒQÓçŠDÄ»]ÎÐ|³¸©ηæ±};Ɔ)ýéH’eF©#pü«(’ïÃLÌY^Êçæ*¹ý܃ŒÿÀ”þu·â[ȯôí'VŒÍ©ÃJÃœþð4É)ßißfÕ”¢áf\çûÃåaùƒ]VŽ!€@ç×Òj0&¡gkvƒå-æ/Á ÝüÅ\³…D`Ü¿ZÎC¿RÄ!\ã#“þ8'ïc·LñŸJ¯„ã*ÅFOŽ1Ú¦ +ÌYðO8¤‰d¥›8Ûß{üûÔŠÌO*1ÐàÕuÀm¥¤'8=OùëS!¤ôÉæ©2Xç)ÀCŸ\ +)@byeÇû¿ýz*…¡ò×tëRã#¨äTj{þ¤QÛ¸äV%\¡ëR(={¯_qLQÈôoçS¯7qÃQþy¦T ®p*ÏçHíÁ8äpÃÚ•°>\ü§•>•÷±ó¯Qê)ˆá9ŒÐƒ¶E# };z»Ý\k±“~¨†ÖY|Œ¶ø¥ÿžoïìkQïÊù|ØÖÒí¹r­º ˆßËèk”<ã?©òˆ¼’Û£ê¹ééIÄ´ÏN·–-BÛiÈSË»ÓÞª_ø~Âà³"áýjÀð®¤É/Í× 5×\ò?PÖ£RkÐäåðÕÔašVUéÞ³O½’BÄò·ªãóÏm0þ-¹oÌóW€Ï½Q‹W±fÚÓyMÝeR„~u¡¤ƒr:°õ5KS))-À +x UkBÊÐâæòÞÿM%Uþf®ÄzRf±.<[¢@oD„Ï$gÏâ+"çâ¢qicq1õ‘•é“úS 3³‚ÁT³rI8¼ÊóÇz´Ùëol;MÌ?ãô®rûT¼¾lÝÜË?9ñ*>ƒ ü( «}âÍ&Ì•h ¸ÝúýßÖ¹«ÿÞKòÙÅ ²ÿy¿xÿ‡@?Zá ¬{šifõ4õFåÆ«wq¾Iõ)™Ïó~@p*›Þ¦y_×.j;]*òíC¤E#Æ|ÉÕü3×ð­[}?K°Œ½ñ{¹óòÅ‘ôêˆþ•›hÙQ“WjÈϵ[‹÷1ZC4íŽBäãê{~5~-R ¸š$U뵃cþœ~Y§]jÓJ‚$ ¸û±*íAÿÔú{+J4ˆdþ633ÿÀcÆ¥Ýí¡qöpÝ]—4Ý.)u­¤“‘ÿ-NŒ¶x€­«8 GØÌ×Óþ¢Ó&0Ûs×ñ?…UšPªñY‡c©Ü„Qô‰?‘©EÄóÃ…k©-ÇD´ˆZÀûïÉJI-Å:Ò–›#mµnê/ ÇîYÛ çñõý-ìvwQªêpD$~#‡¤B9ÏÒ±-®U ŠÚX`ÝÃG§Æg•¾²Ö¬DæÕÎß*ÂGᤸ:åþŠ:ž*îcb®£áÛ‹+{³§Üfˆˆ{i¾v'ýœ¸>ø¬M:ÇP´–5¸ýÙ3Ä­¥“xäg¯'8ë]¥¹–/4`ÿ¬º¾l1Ëý8Ym„¬ÍeÚgs—¾¹"û¨þXüèkA^»ÌöçÖØŸÎYMsŠOž„ ç½Aü9cªÀn%iaCÚ#!䞇® †¸ûïjÖR£" ˜É#̵˕úŒgùÕ!«Y£>Û>S¡ó•JÇj;wž•²•FBX•r #9ïS Ž´†f1g9bI÷«–’É$Ì–Î[éO6ÑÎöŠ–8Ö%ÂŒzœÓ`ó“[ÚÁÔ¿á¶"+GÓ•¦w 3ƒ»<ã‘Ç=+bCoæ™O¡GÞÏN¾œô«zºi¿ÙQ»¹[÷Š2mÁ;s€qŒqõ¤†E¡Ú´ú›³qµØ¶F6óÍlɨ5ïˆ-­íÙSh+îU{G|“TàÚé’NÛRK–isÐt¬­é$ñ´Œ¥ƒ ôüý*V¬í©ûºi½Ù.œSû*?%ñ!ÿIa‚Nß»ø}kƒã<dèÕ½a¹¬w¤ +$ [ÿ|m?>=k +ämž|’q#g=O5ÑK©åÕèue΋ëeòbºâp~gr3´Ž¸ç¯°¬}lm¿Ëœ§.9 C75±0ÎŽì—NÓù ­¶NÜcïc×Þ²õ,<2Ln‡ôÛ×<óšˆ;4Ëš¼E´†C ¯“jÍrª«–9ÀÆqô®‚ÆK•³Öíí­ãòÒíÌóÈÜçpäøûf±ìHÎ;gúUø¦µÝ­­ÍÕÄ29y!·Va’P1,ŒŽ½¿ +³9ðµ%;§Ñ˜ZˆPó6Ñ»d¸gô­1õ ´ù"´K*{9S&AeÈïóqšÌÔÏï’-Àm#ø˜wëÐsV4u³"Ìß}¡¡*èV,ýì:ßÖ§±­5iI2” Ï§®$;‰2ð?JÙ²ˆ\¬Aó´ÆC=TŽ*®›e$Ú[¨O˜m%¿¼ÙÁü­ ¾DqZAÌŒBäûžµ}Ì=T¨ÛøQ"Fo¯#±…„`ŽXóµGù©^ÂÐ! ¶FrÁÁÿÑ"Ao{¦µÞå„4ÉpœÊÊA õèkNâæ*Õ¡‹~ÕWR¹èzu%esLEnwË‘GÃrÎÖK$7 g²ä+;€B© ž¿…ž&FÌ’¢*tÀ`Û†=IªÚ\iwip†HãJU“Ó?‡â´s +ëW ¤± d‹·ËB1À÷'4Îc™¿€ÚÍ{÷í0ǸÒ¥r?±<ÀŽò[Ý,xÜ? ©µÄæ݈ä¡SøÿZ4ñ,ºn¥$xCäöÛÉ?P:ê{Ô“ª#›Y®b¸ýâÈã'Œr½jÌa¹™VC(X0ÆARuïÖ­$qÝZm·†MÆØ’rJÈËüC?­fé,T‹#!øÇ®AÖ™‚Ö™»|#‡Z¼òîá ²†\»qÁÇ5ƒ:’Tbç[×¹†öÉãµû#4"5ÎÈêv—ã·­cêH#½pF2ëíƒúƒCÜ× +õh³¦H[BÕbC‰b]GõGÃÈŠêô»›Ayu7{çÚ¤“<Ž¡S†Fý+”ðßï56´ÎÜ2ÛŸø’?P+[E¸¸›NÓ¶ŽxÄ–’\—}Ê~VQÓæ¯|Ut1š´ŠŸ¼pÀî^Ž•-â*’H‚W¥I¹å;Ø«üÄ/sן֕Á’Ùe,Ï»+‚ Æ=ê©uGÑÂw³*ïcÚªÝÊcˆFK,f@I63Ï?LÕÅÎ9¥5mRîu‚\bLŽÇM[R1°ç¤üŠÙµy.ÖÑ%•@à–EsýAúŒVuÔ~Z´}|‰Y? ð•n¤w·1i“Î!Xä f²(%ÔIÜ|Åfê‹™w žÝ9þ$ùê‡ó¬Ï[2_ ÝEÅݥ«Ãwn뵈 ½FõÎxìGÔÕ«;D¸Ó®î ©Sî7\Á¬ ¯±j6·XÜ!‘\Ž™ò?,Ší|6>ÃâKÝ=æg3‡S±Âàä`㟔ž”ɽ? Ì.ôlWË’"Ê°'ܽ; ‘øVŒ{Ô„x÷®sÁî4ýZóM23È9pÇî”'8õÈ?ÖºŒ$̧ÊHëíS [´ZŒ¹ oœE:<‚YÈéÏË€?Îj !WæÞÃ@'óýqS€¼f'<äezu5N]w`È{XòB²á€ä0ý=)‰ +Ê:Œâ”™1ÕGÕ¿úÕD²p\ŽBþy¢£Û!bw¨Ï¦ïñ¢ªä™«ëÛ¡©UOLdŽžô‘¦pHá¸üjU¿‰ZÌ¡ê ñü-È>ô잿ĽqÜži1ŽªÝ=ùýi 'Ÿã^¾â˜„$cÀÝ¡¦zÿõ÷¤‚1ü úiÏ_ã_ÔRc@û¿ÂÝ¡¬OXËwdÏm™8‘s€Ãþµ¸@<tö4ÖèY†HáǨ¡;1žTÁ#„…>›à”`FSþ¬˜Èb¥£‘žksÄú{i÷¾^Iµ—ç„õÛê¹ì=«>—ç½hÆ™£¦2G©Âc†n†½"Ý@ò¿Zò›y<¹£|’ã­z½”‹-¼lT5& ´£¹_ÅjÄg#•¿ÙaPPËî:T«“ý×þt‘œ)èéôäSÝÞ7úõ¦»§×‘N?üóÐÕI!ŽEÄ°ä} +ªÚm¡ÎÒc'ЕÅ\Û·ø$_÷NiwcþZcÙÖŽTƧ%³2¯t8î£Ãˆçÿ®¹lþ=EcÏá`ËÞ ³ú0®¸.z$gÝN #´«øçüiò.…ª¯®§ŸMá-ÙÄ—1€z4a¸ü gÉá‹­ÛcrËï +ôör:ÉþÜþª‰ž3ÕíOÔb¥Å­™j¬zÄóá‹ç;¨Ïª¿ëÅ8x>ì7ï&‰G~ÿá^#@~óXþ#5R_)‡È-ÉóÎÅœÒ÷»ÚCùN|9gü|^‡oî«ú šŸÚ|yƒO!ÁâWY? Òݼéæù¾Z+Tÿâ«”½h¤‘¶ysÉ}Ã~,ÜTÙõe{k|*Å[Bæå¹`û'þú5PuÈüH?ÔÓ˜e°sônOä(ÆO©‰‡AT’[Jn[± pHüÇOÌÕÛ9L`…fT=B?–§êÝOáUq“ÐœwûØþ‚œ¹$ÔwûÄ~=2MËI Pž­kœÒÿJµK™~T†âAÔ‘%ôƒù ¬[|K . §ý¥ó1ÿ}¢·¢ºµŽ0·W¶ê£ø./IÇü0õ¤2ï—.З"®>åÍÒÀ¿÷î.jå¹A‹}èsö;_/?W~¿Z‹M¼³žIOº™3‹;uLÇWÍk¥£¸Ë«ÉéçNô¦‰l®aH™^D·ÿ¿u)‘ÇЧ¼?j?¼Ÿì‘åEùwýjÚ[²TÁ?óÎ æOôªw׶VÊÆêâI8è_ò¦ÚBÜt’$JEÄ ª˽°à}Ȫx¢KyÚ -Ôc-ü'úÔw^-µX¤†ÞŶ0À;‚Ëœñͬ\½ÛÙÍ R}ÝŒ¤“Œ÷ÇÍL¤TWr…ì¢ó˸›™X•wÆ c'ß’?Q-´lN3Ÿ¥tI¥‹+ ¤›L{…0W#<Œb¹¯,º•«YF!‚kTlEò†!˜gŽ3ŒQÅ69áŠ;µµ;Œç"Œã'ŒúT«h¥wvúö®j+÷G{/Í’ÁAo®{ŸÆ­ZÝZÉt’\ùò.pùEû§ƒÕ½ W+'˜Ù–Ì»+Î{ôÿëÖŽª·gGÓ­’²H J0KŸ ç‘ŒŸzåZe¦Û“´à“äOj³ou¼c™ŒpÎ@ç’YH,N1×Þ‹M®eͱ¡®Mû²‹÷~èÿ?…fø}š=vÕ‘‚°l‚zgßÚ=༠¬>`˞à Ÿæ*](~Ú&¸$dg¾3ÅkF Åšæ¢Ü$¶Ø¸b›PŠAçN·, ¨X,?1zt<ŽÝ«üurÈÜOO^­tV±‡ŸQ…a²3 ›n9gž•Iå·…BK3y­Ðy­;~¹©Œ¹YÉ(ó"Úaô;öPüFít>ô9<™ÁÅP×%/¹á°pÄ€ +!‘Ø +°“Ë&‘~‰{P!œ¸ùºr{sÐw¬[‰Ì–Á³Iæ$öàä~¢ˆüIŽ FÆŽVG3÷¢uÿÇ´ô9.Ž­s •¼SOqg iebËŽüçþ\ÞŸ+Æð´gæùWI£}™µTܽ•ªÛF®]¬òƒÐ÷Ç9§=Î\4ye#'QŽ`öÒKó3¿7fã?Ö´¼=q=µŒS[·%ÁRdCg§?Â8©„Ñ'Ùᶎ9ž3À 0eé–?‡ëCìП•¦98èŸOJÅË¡éйÉÉìI$¢Ú,q¸³0 +:95›†I‡3äûx¦I4íp±ÜÍ¿jºýЛy?›cð§iC1N‡¯’Ž—aˆÅ¥%FžÝGklmoâ˜)w‡R-“…%ùþ ~u±xnâ’X柳¤‘VLGžÀè~†±|JäBìŠ|é>Ï$oг‘ú±su¤Û¢ i$ÛµÞMùÈ=y毡‰š7ö­Ôh’Ha `à~5nà]¥üowu±›e•ØÜ'ýôj·ö¬omÉ„m>`'!H9 +¬—$"ÁãIs"]ÈÅelpy÷©°]ëˆ>ά )èAÿPxu#šüA>|©¡’'+Á¿éš·yºãF’V1PøüAþU£Ê`Ôa”*“ç¦6œþ”-ŽØëEù^w{KYdx£³‚FFF8tR¼·#îÖ$z|ö×13Kj¾[Ž·)ž0sŒÕûkë’îkÅ”¼Ó™cXòB!l” Š‰/-Úá¡ŠÙZ-¹Îн²xǵUŽX¶“FÖª5­½Ì7qÜD“¼qªmýÞõÎr:ó×=+XŽ0°K†Œ—ŒtȆ8þ?Ò¬Ë{btë»a ý¤º˜§XÇÊäž„góª:…ñ¸Ž8Q1Œ÷Â…¸>†˜{©¢®Ÿsö=JÞ~ÑH²ëƒÏé[F8ídÕ¡žùâŽÒèK¾ü,ãvãÿÆ9úW:ÊwëÅkÛêÁ©\Ï}f—~d"B tãvNyÀ¦‡^6‘nçl30`UH%Oòýi‘K˜¶ù‹´@,qõô¦me°ÞÆ$#æÜÙŽA¡<úÓ[‚-€X‰<ç<ƒI];ñ“‚JÛ„IwA“ÃgŒwÏzHʬñºH‡c‚p} Agâ;˜¥’i-á•s…R6ã'=»þoþø„…ÿ±`Ï´ä~-S“jÅOVI¦†jqØBoѧ’;“2Én¾[cv{¿/ξ§$rÛA$ ,qNÊ06H8Æ{nGüé÷>(Opé§B‚{³²‰K ¼ó÷zäÖ$÷R˧+ +1œýÜãùŸÎ•Ž«*¸Ád#¾+N=zõ.ãºE¶F%òFã·“ôª3®g :0 I³&™›ÐßÐõ;íGÄöÌ +<ÒæIn>oütô¥o9]p7(ÎN2Gá\G€ìÃêó\‘‘'oûÌqüƒWsw¸[oŒèÀóèxÿ +† êBŽA\ž§ô©q.s½¸^ê¸v‘˜3àªà㎹&¤P]X7ÃëL†NIçó&Š‹ 7ž¥H¢ÅcÃz¬zΖ L¿,«èÝÐÖ¸ù¾n®8>ÿçùבøkW}#SYI& >I—Õ} +õx¥‡F ‘{04IY«êL0F?…¿Ÿùýi§9ÿl~´ãŽ£•=}¨+žüŽ‡Öˆ°:ÿuö ƒÿ^žâŸÇ\pxaLlŽ;ŽG¸¤N: ~†˜X˜ýäáǨ¥bÂý=C$›FóÕ8qíëHf~¹bº†Ÿ%·b2þ•æoí¸m`pG½z”Ì@*œ¼_<~ã¸þŸˆ®ÄÖ«¢&‡ýMÂï_¯z¸;« fcçüŠô¿ +]µæâŽcùèx¯5úâº_jpXÜI ÑTŽ\#œ~µMsÐ Ý“ëÈ©-ÎÕou85ZÖîÞå7ZÝG*Ž»\8•Y Ü >èjIcÃmþ6O÷…<|ý£ÐÓÇFÌ)àü¿ÐàÕ!Æßà‘Ý9£~?å©ï­&1ü¯û§4oÇüµeÿ}jÐ…Àc±?¸84`ùg(ÿuóýi¤†ïŸ^?ƇþxŸøŸþª`ˆþ9Çü?Òšd`?ÖËÿ~OøPUÇD¸GúÓIÙnÿZ†ÀcÍ&?ÖÝ÷ ÇóNãÎÚK%ë/ý5¸H—ô榜H-øõ’è ý c\ËrÓËÿ²¯tõ-”‘FîK}ä'ØKÿÓÞîO͸…;;m‘¦8í4Gýð½+GSšm›e{‘e•–Ý?ï…汊Ÿùf¿÷Âí™äÒEž1ÁíŒgðš1ÛÐZxR;ô go%WóÄ!ãzgüàSdÞGÞœzÔ¸CÖUÇû§ü)6ÅÎçaôÄW0‡?;™?Þ4õ·@!G?…YE®3ŸÒ¸Ü + Àîy&‹Ñø&ÜýºâuÚ HÂ>æÁ$°#ø ü먹×-âs!®&^ +B¥ð +áôÉ[ȼ„ewª7Бÿ³WI¤-ÀM–°+(MÅŒ›sÓ¡æ³mÜ,‚áüA¨äAjm£=äpåUãð}Ü;òñ=v‚çó8®%îîáàqûãÉôû´ò—|ábéÇï'þùªHW2­|!¦ÂÁ¥ónìí…ü…nG1}ÄUè:zT&;žqåtã,zÐa¹ç㌫:µè-ú’Ü#Ȫ"—Ê!'Èî+Ë|sj–·vñÁ7šŠdì‡ íü3úפHËé ³Ædˆ Ç^çÔWŸxÎ0Ž]°ºuŠ+T¹{ÛM'£gTš·©©ð„d\Q˜±’øúƒÍisnHwmÅ|¥lŒgÅYd ÛÈà~5kJŠØŸ1î68]¬«úÄ‘›Ö)C~ðdÃŒZii{›JMµ-{Ú]¤÷³˜­ãß' +ÛÓ¬V+`|Ö™rAR6àò>£¬|>¹‚ BôJBfûŽ +$“Ó¨©-¥f #Çæ…QË)}¹úÿtaÜS|Î×G‹”åN¦¶g,9`£k6Ÿlã¯çLº³k]IíÕÖ@ŽJ …9Ç<ýk¥¾¾xgû®Ø"‰W;›¤üÍRÕ¢†oÊ©¹vº€ÀÂ÷¬åȶf°G{«—}Žþk5f¶7¨á½ù©Yâ›k|ÇoŽ?‘«ºòÂuû! Q‚¤“ƒ´zšÛðÞ£¢Ø¨–êÚòêïÕ–=‰ôºûš˜Ú×äïb;-àÇÚÀXnÇ|v¦5“¥ùŒDÛÈ*7)ÁÀ°$r?ƺKŸéwrî0Þ©E9¡àsýê‚)–Sq¨•>@bÝ×hè8õ9'éEG[­Ì0tkKù¾°Y´!€˜®Y˜ãO ª²iR:QË8Vä^j害e A&Žv™ÛtŒ +àžß€VÝ­â4£&Ö+†c“ž0=}jiÆŸ-äõ5ÆbñS«ìèYA~'6t÷{“ÌÑHÀ Jðw~UÒé·I.¥˜¼ »‘Á+ÔdÓô»˜®tضû‹’ß.ÐŽ¤U­;RûVˆÇj±@ÑŒ008ýéš^ê!6ù§ò(k:hÔÆD–Ù¢VfQÄ` óøÌoNaJ…-³½‹‘¸F9$\VÌ:ô2iQE*~òTt#kÀÀêò8éïE¶²³èl$U8ŒÆܸç鎘<‹•ÓÂf[Q¾éN~d^1ž™ç­dÝxbâØæHO’¤•J²¨îqœŸÊ¯GãCi Z¬€Ïæ`gò§?Œ<ø^Î-Œ0A—ŒU.].g*›Ø¯¡è÷—Ö’­Úˆ hÊå$’1ÆEdEj‚&R¡7 n#‘ž3úÖÂxÚVa³‡hã©V+]nY[`]Ç n8ýkDᮇn NœeÏr—ötª¹ù0'ÞŸi¤3N$Î9%•3œÙ©…Î9؇ñ?ã[æÎ[&™fÌÏ6Ì7cÑf©|‰k„i¨êÌ84Ã&¥´Æ< ÅŒ[Îv€NÜãè*HôW–ðȨ^Þ!ó!p} ϯ¾qZ®ÑÁÎò¯Û%Ú6ù»˜ƒÉÊ•ùzrjåÆ i¶–†hüÙ +?3¥Ûw€`äç5ž†2¯M;ÁK£ÇiªKfbŽo(çsg$mÏõ¬˜4¡$“´¬¬ª§-•'¡küÆhØ„ÝÀaÚ´t]4?Ú%i ùFâ?P7~uSK2Þ^Ÿç&7e\ìÉ=BœpjÜe’ -‚EÚ4Ž‹UAÎ;åg#–¦"„×îãfhÝèvVöP­°ŠÆß>Q»å*w~ŸJªþ62¢½ô&VÌ­¯ÐžsÒ¢†ÿí×S3N!ŠÌ*BNÖp“Ó‡#žõê&ò+ÙÚI„)F«3ÃHÙ+IÀôÍIÃvÍëM,è×0F×€£1’w °mjŽ§¹­ ÆDÖቘ,geœ3³.Ð#\ɹc6¤³O<¾\‘Z gc’_sç¶Þ™öªW„äÝ9·¥ÞÄ"Vllç‚y#$SÇQº¹Qòîýy5*L£Côçߟ¥UI„Ñ$¥Y‹.IŽLÕ±*©er@OéøTù„mܬ>€QŠt,ûAo—=Iúþµ”cî3)û¤J]òLhXc<°üºÐ"2N0¸õÈŸÀÑUË\d°ì˜4P;¸±“òÈ¿ÝnõtŸáϺšÄm +ÍüD{0¨Ÿ=Þ^G¸¥.>ñèxaQ1#÷—‘î)ŒÊxÏÉ'OcU¥—oïøNÉ·­:B Ûœ$¼©ôj«, áÜ 7±ÿ>´†E,† z–¶9íFÉü…s¾"U’Ýã)ĨÙn¿¯ó­[‹ +¹Ë@Þ[çøô?Ëõ¬ ‡Þ¡TÌG=Ôôÿ>ÕQÞàö0»÷¥'šoˆäcƒNQœýlHôvGÞŒÈã£)Áˆ­{?êÖ‡ veQü3.ïׯëXÃïùÐ?ÖÎÞÓDzŒ » GsÿCþ5­ŒôyŽ%Ya>¯þkšóE9ã qO3Žz,G¬Câ n#ÔcSèeùÕøï ~êñò?ʼcs{P `ûSÔ\¨ö²ÛÇ߆O¨Å4Æ;Cü±ý+ÇîæL(×$…?Ŏâô¢ÝEƧ²)÷[À;²@ÀÁ#Ó$gŽõ¡vˆŽ4*¡TùD×<õ={ÒÇr$‘™nм©ëïš9XsD½¨hó=âÉh¢T[Q3 ËØÇóÓ8÷«§KÓ¡C,³NKEæ¤d¡%L`Ž‡{?QŠÌ´Ô¯cÔEÊ·Q…ºPœ‘ÎOå]Þ“$Iáû`#o)a +â&}øRW!S¯éžôÕÌÛ‹g9†æ{&¸k´ÃæÇ +FKŒã9ÇäMeùjÀeÿ WQ§jv駘àòØÃG’Rкdœá—={Ž•ÌD’0ŸaŒ‹uËàƒô#ƒÞ‹œõ!·*.[i?k†'6Ñ™ G|1žØïœu#¥NYþÍ!–éLPĈ?|‚Pt´ŸÖ±…ÝŠOµ­Ñ~6J~»¿¦k:úïÍm¶ÂO µ[€OÇ¡«šQÐß´6ëáió78‰H›q ßjh‹<ÓݽÃG [pNãäu?.+›3ÎÈÅ·²Ž¼d(Ê¥‰o.7*A<¼…ÂF̓Ów£”éº:=>k½žÝÅpÑCÚÉ}½zqÞì‘-¼÷7O漈cs´D‡$¾nG?ZÀµ¶½¹,©kq9$Œ,e±€? ÌU«+ FugŠÒy2å è@Æߨô£”\Èֲѡm'™ãšÞiÞÜm'‡Ã=óÈ¡ü¨Õ£ rÃg¨fÆQ]AR>éÊ.FA9É<‘Tl̶mûÄÄ‘Ê$åH|‚;õ+¯Ö¾Ï> ‹Êž6ɉŒ‘…\6NÒ¼ž§‚s׊[nC’iØâ„Q$¬c'¢†ãó5"ÅT~ Ïó«ßc_²ùضÕ<Ô¦Ò&Š/(l—'̸LãéÝ­²íôËlµìÌé +†"¥ÔðÇpíƒÐã¿Zµ7ØâÒÝÌŸkhÝϨÈzç ý)—Oöo™¥´¥’%) còõv2*¡q¦Ý^ÛÍp‘±›a°Ãh‹‘Ÿ®AãÚ‡©ÓNVܽ)‚-È’{_6BƒïIü + ãcÓÞ¢¹Qè&Ú'90,ÎÀºbÊ@÷w J¡&…|öûâHŒb)Ù*³*mሌ€ýt—5ÃéíxmöaµsêÅsÀzûQbùÑ¡¨5ªèâÚ&bÉ +I»#瘾æ$÷¿¥^û=‹[›keÝöu#,„’üÙïÈÏaéX÷~¾['»xâX0*z©ÛÈ8Áûÿ­k[h76rµýÞÖŠŸ)'i#8,»[‚G‹hè׳2‹o*Uböàà'Ž™UííWm8)Î~e8ëU%™-ï"·Hœ,°ý¡·Œe¾PxäŽ:óÔPYÔe*À«ŠÈÖ;´ª9)¸Œ }j@À¨Ýµ{dš§±ùrd©Çû™2c ÏÌ»ðGO^½é °€€ÀsÛŸëED‡h¾¾sú +(ã‹ŒðiG¦E'ËèiêGLé37|+¬#Qc³M…vøW¦ +sÝO­x¾@=?:ï|«›»Cc3~þ˜‰?yúÕ”×R–§NX}ã÷[††¡v`¼|qJνOÜ~±ªòHÊ uxºÿ´µÆÊC‚ŠØ ÑŸCþyüꔲ«òã 8òäÝqþHüªY‰ÜÑ¡þò#ïÜŸSY7ó‚·…¸]Ãý—çô e+ë“#¨n¤¤úƒÁÿ>µ@dŒž»p~ Ó¤s+3÷q¸ýEH‘ï}£¹5[À¸Ê]Ì£<1¥RÄcúÓµeÆ¡&/þ‚*ª5mk¢K˜]‰€Cs¸–{zqH:ðÃó¨ÔñÖ¤^¹ân@ùº” cïÊ“®GÓ4uE z’qØP¤qÔÓF?½Šx¦@9 #9ã½.óžØ§¬®Ca\618 i ÔŒÿ&3IÂã®>´É·çL +óUêiCT‰ +(¥¦ Ó÷­6Š@L²°©£¹Ç +§@¢ÀjEt¼e”U…¹BGÌ óéX™÷¥W#¡©å ö¸´¸X¿º ñÛ5,\i‘Í7šeûZBÒ™3„+ÐÇëPh +_JÕœžWÉQø–?Ò´­¦0[¤‘º)–A‘Æp1ŸÄTìc){Ö.êž²².$ºq=Ê¡.êp½È#€~´ÝCB·³K9ÂÎ%–pdùW$8ã'Œgê9uIîna¸‘ ÂÁ•Õ>cŽ™$œÑyªÍ$Ñ]Éä,аa"Æ7t÷§ry×BMoÃö«6šÍ5ðŽyB8’tr½Â=søQyá]>Ö]1 ÷’™æä:‘ÐgŸ~*&Ô®/.!»/>&]aŽ1Œžô©]]^Á7îþÑ ®‘(cè Ç?Jwª‘oÄz –ŸolcÙÝßbëŒ{Ž´ ùtÛéæUŠY h…› €9AÅ]2É2FnQ^+iFE»Œrp*½î©Z¥¬0Û™çI<Ì~O ¼`õª[W¼®âV˜¤šÞ% +«.C808ëØd²åÌnñäeIšÙ¾Ö’ÏR±O/yŠC6ö|‚ãnqÁ“ïLÖõé,µØTÄÒIMÒ°÷(à`| sëÍ%IÈ¥~Œ¶6$¶äháÐÕØ-"ºñ¥½Â‰b‘Wv26“Œ §j:¨·¼ÒnÄ{£ÜîÊHÜ8ǦONÕ«¨Éi5¹ˆM¦`ê¿Gà $7 ]šF–ºå•µµ¼K½dÄdÜA •È#ó¤ŸGÓÓV°µ†( æã'v>P@ÀlÔŒžõ™5íÄË×ö”ÆHây`Tˆ³)XÕ™[.AÇ~9ªÉ©jsjÒ\\80Ùó|Àf®â“KtoÜizoöõ­¬pB‘É‹$H~u!r äqRÍa¥®¿iv°1Éç&ÛXr:VQ¼¹—\Gy¦.R#Rç*P? +k¹u8‹\L[æhÏ’ŠsžsÇJ.fêG¡kÄÖv¶sÛ}’âFFÉE1v_Ö³-µ «4Ù¡vñ”VÁÆ228¨î§šâBfšYpNÝî[Lô¦A Ndê˜Ñœç<€2zPsÎ~õâ6êG˜O#²†d䪅1Ð V5¤Eîà@B–‘FOAÍlÉ‘GºPÑ#Æ\3†šÉ°¸†Þö§RñÇ"»¨Ü•UÍZk;¨ÑÚH$TBÙ8ãå;Oê@«žh¾Þþ‘´BÄÓrŒzzã5«­êŽ…5Ì÷qÁnîmã_˜ð­‚Ägü}ë›±·Êìß(Bp{à:ÕVµ;Y.•µ[¶´HbhìÉó¶Ô8›”0ÁùqÏ"²ã¾’i¤ž[XR(#ýÛÀÁ$RAU®®8#¥dè— oi«K! + °E\à±.½?j¥‹ì¶»86Ž§4YÖ6ìe•Ç‘!équ ´î!±êÞ•fÂM*ÏRÔ$™ã·šVVVÌ2AÜÛÏÌsÈ®]n£™Wˆ^¤ž¿¥J$i$ÜÁŽ?Ú¢ÆN»GK¤_iÚt—З†Ýd2%@ìƒ+Î2½ˆ‡ãŠ~ªÙØÜ^ùÓFiüå]”dí8ÎsŽ W< 2qŽ§Ò¦ZæeŠÒJÙÚ žxÍíßCnÊËN¿»Ôd ÍûÐÈÌLdîº3ÐÕ×··u6ñ¬SCnQ°Á™B»3œŽãžzV w`Ñy¨Ê»(m¸'¹ÈÁýiú›Ü[Zy“¢ù’Êžb€W +>UsÈR?™3ª’æWhІ+F»š%tò-ß)†Ü\œätR9Ïj„Ãe2Ý}ª@ðÁ6Ñ&âÅ—næmÄóÔsíY×âM2È"Fv}¤a€wg +FsÑEG|.¬´Ä„Åå7ÛCMñüDíÊ* yQv!{VƒÎCm ¾OÚ{º®Y±p3Um ½¬(nAn²ˆC6üÜ:–õü*Ï?KÒb¶ +­)»W™Iãs!võÇ~RúÚâÇK\áLwÎ +à…w ŽŸOÒƒ•"ý–³§Ed‘´R¥Ú#D³,jûc,NÞXq‚GN¼Ómu»ÒÒ'Že¼4&hâF;9;yn˜8éž:ÖX5šÝÉ#à+(€]Àñ¸Œœã¦j iÄbB‘Ì»r=ëK¶ÑÕZjvO¤$/-ÒÛ˜äbŒ–^T!'œcoåO·×Ò-ì>L™Á@ ëžsÒ¹ø$u…”Œn ž}*X¤H¥IeˆÍ0.€ãpÏ#4¬f¦ÛHÐKÆ“Q²šdBÚ …={wǽnHIÇˆÉ +G®„×ÚRÍtq“Ë‹j Àç;‡ä3õ5¡m9¸µIÂ9f±T$õú泑٠­.h$‡•(àu9;xü{qŠ³fÀVŒŒõ,ã?Ùª ¹òäg'52¢+ ³6X`€§"¤²lÊ 3yg±Ë‘ýÈ:ú”:)å ®:R©ÈZ@¾§4ížæº DäžjÆî[¸®!âHÎG¿µW à žiÊzCNǨÁuݼsFsp¿“TrJS7Þˆí“Ý}¯ç\Ç…/”4štòIóGÏFî?Ï¥t)Høã÷sÞÇüú×<•™¡Ã4k"/߇÷‘{ŽãùÄVôâW}‡ä'ÍOëWïæ1 \’öíªóúVBŸäãèi cÔ ŸLÿ1W!j‚G$ƒúŽÒ"̤ŽÜþx«¨™òÆ=ó›G'«ôéÓù +΃[ZÌen˜íá•[?†?¥b¸æº#±“&ÏNÕ8ÇV2{U…sŽô1’dzŒþTªÍâüèÁëHaµ‡\ƒRF¤œg¥5FOB~•n8BžN=©ø”å9éSˆ”©û§èzSb]ÿ.áÁÀôúsJćÉc»wNô€kÛFÿĹÆzôª²Z>F\uÍY/Ž'¿éM x\cÉëùÐ Ç’Ý÷zþ‰ÇðšÛÎçÆÑ·<ñÍPa¸€1ëUÌI…´ú1[eŒäÇôçä®Õb¥>`2ã¥k1±÷ þ”¿ÙM·8çÜ(æ@d¥.=l®Ä6‘ë¸b§>8&1ï¼RæC³0žO›9çŽõ¶–QFÃsÇ× Oò«+l•dlà’ÿ +NAat»cm¡_t&YbÁÿÆ«Í&ÛI`%¶LU›nF@8<âµâ·Ý¦¬,Û|ëÔ\Žž~¹«ïá›IGšÄíF“æ`ä}ÐAàN^´£©“Òlâ#¿Ì#v§ +£ÀVŠö7™¹Ÿ=Mkjze¾œÑ,0É y&]²œ’ð áºÕ%1•û§vzÿJlç¨õÐH¤]áJü½8­¶Aª-¡r-á¹ÇU±Ÿ­TfôÈx•jâHÓZ˜á‹¦8a~sÖš9Þ¿ywP¼²–Òé!óV™‹Û—Œ‚Aî9ó¬}n´jɵcX™|¡´å²1’ñVæšMF¶··³ŠI¤ £ó´ žœÕk¯ ߥå’NaW‘Ê VÈ'ý)[S¶œÕ†kKö«èæ…cØ!T,Jž9Çcþ4šë‹ÍZcTmªß1g$/=G ¤¸ðýÐ{YdšÛËivG"¾U‰séSÝønén¬–K‹mîØŒFăÛ'ÛéByѯ/žúz©!‰-¤’ìÊ­ÏNàþtïÜý¦ÅK2‚« {rrvoäç¿ÍúU‰|-uºÍ®'†7gÓ÷ˆŸéÞSÓÛIJÜ͌ɵUÎ þ!íBBsV,$œ¾Úò̶«fH;I víTù—˜'ØÐÎÊ´.ÎbSyÚ\5°‰V8f^¨lvîúÕŸ”Ó ÛJ§lñ^™ @±Å`-Õc>N$f‹–]ìß÷Î:qÆ+”òÆà™qÏõéKbªTi&Œ„ÓA‘¸…ZŠÚ5Á +0:Uè ófXÃ*îã-ÈÜf¢ï€A2)œŽ£z6!À•_õ=é !Í! ë[žf¹uf|˜<Ëi`1e‚ãn;rx8ºúVx¨[æaÇ~(.Æ…ö¬È ¨•Ä,»œ#l$°Ï$uëQéšÔÖVv¾R“ +~Sß$ý욺¾»¸;›ÈV$¦ÒYˆ#ŽJ‚âkFÃÂöE [˜. Çr8H8»÷íJÈíS—cÃ6Ö÷·Dï´kŸ.Ib¾n6ãyê0O¡eåê—k+ùïæ±iÆòNsŽƒ­t>VÍŸwX—k²ÆÝO ð“øb¡ñ¢¦¬_;axÕ³ŽGlóž)˜Ô“pº0#!!@U_¼{ +y ‘±ç’zŸsO‘ÃamŒõ4‹Û¹Î¶:“íTqÞãz†ÍKϪÈæ' 0àWñÔyû¯ÿ}ð¤f@3µ¿ï¯þµ&ReöQÂS·¸H\Š9‚«œdõÅcß_Iw(ÜD†F\näêjx“vöØXðOsÿê®»TÒôÔÑî&²¶Ž)âPÁ„¤çå G\ýÓž@â–‡e)»;MÝü·w9b²4²¯2G^ ÍWò]Î7mq#®K.qƒÔçÛ?v7úM‡Ø®å¶Ž¸ ¤€c‘¸’B°ì8=)ÚŽ›iý’ímmoö˜G™º8ʇA#‰0<Ñ¡¯4Ž.kùn'á„Ž¹2&ì õçÚ™5ýÕÔ2ÂTìî=IÏby®ëVÓtó¥\ýŠÝhÔÊŒ±óÓs €;8àž€U Ï[Úé/}Ñ‘6«¡8ÃäŽ1Û­ Ê} +>EյܲÁ»MÈ¿ép‘»!Ô6x+øóÍcùcpàéRzñK÷˜`sAÍ)¹ Ž3Û¥>Ò»¼<…k±*¡‰Ú¥° d㹦cƒÁÍKaý©$g)ÏÈC9ÇPGJàµF•¯„ŒçÍk¢c™6*)‘¹!q† äm ‚G=»Ù¶…m­ÚfhþGFa´”u =}Hü*æ¡cm ’\A©ÜÉty,n°àg¾GݬM2îF»›Ïy'i9‘Ë|ç¦j%ª:Ô¹d¯ÔÖGÌc W-ó»Nµ"ÈÛ0ªƒŒd‚FOÔþUT<.KFÜA +dlåSÃ+,_º’`GR¹?–* Ë£-¸ªŽyû7ÒŠ†K™Õ;HyÁÎìúø¢€<çaÔc¬}~”› t a[™ÀÁÍH«þMHcÀã9õ&)ÅúÐé$mµÔ†ÜWp×1ÏoÈÿU:ìqèz<ʸ^‡®Mnh³ù–76lyÌAüÿ¥g5ur¢ÇÜJÏ"—9eýԞ㱦D¸z ~F¢åù?x‚§ê9~Ê1$ÀžIôÜ1üê…"ÜQyq͆ÏàAþUdDYŠ®$ ç¡ûÉùÓ¢VÈm¹~»}Yxeü¹©Ö5 ´eãÙÆ:¼}Cö–³¹¡­éÆêØO +ñå•}Wø—꧟¡®>h±Ó½zxBÍýæo˜ìþœ“Ž‚—s™ˆK¸¢‚ȾÑúäS·•åxlð@^Ÿ©«¸¿|uÆsÏáRá·á÷•'˜ÛCo‡×¥ÜÇ©'=óùó@ ä¹éã¯Ý=}~”㬘˜ŽùNœý9¨ŽôÄ›¥gXÓ'3p?ZÖM>Ê#ö[ÍgQYÔm/ÌOpÏïÅ&ÒÜ Êü<ªÃ®˜ò;mZ·—jÖRM,À¾Þ2rXúW5«>©¤ê2Ú>£s'—ʺÎØe# ã>•jz„PÄßm¹ÜàŸõ­Óóªåmh̬¹›fŸÒÞ˜c>cnÚ§w_ÆÈÅv³t=Íd&¹ªFrš…ÂÿÀÍY_ÖÊ’·×'oR?Ò¯•œî‹n÷/FàMàÃùÒ¤5ø‘ÎYåÜO¹lÕCâ]{øu ÀQÝgô¤(×ûêçýÅÿ +vÕ—sWK‘-î-f˜8Ž9K½z +ÚÔõx'¼°Ç3 y7’€)e sŒõÈ£ò®gþoËu3[2·#‘ŸCš†oj¬Í#K8ûÓ0qÙǵ17}Mmº“D‘ùWÅî®×ùx#À‘IªX^I©\²YÜ24¬Àˆ˜ƒ“ô¬9¼E©EÄ‹9?ë%9sþ³þªõ½L*¬––ì­’¤É/ž|Î8 þ4lK¦¤·-*ôô³¹öÉ¿Âœt‹ð3öIúvCTí¼A©ÚNó%¬MàûÚFÛ‚à¹=H]>8Ôä˜,Š°ÆBÈ8ö©wè%J vCý•¨û>å€= l3K‹¨™”ý†p3ÎWΫǯºÁu Ó­n÷y¬^RÇ9ä:Õs¨Â|œivêPäâIrßREU„á nj&ªyQ°³cÁ`o­nêO©êVmimf [ÏCÐú`W/¶°ÜùÑiq uRgP8öLö¦^¶’¢ÄYŸwš&;×æÎ(}1F¥(Æ:&uÚwÛílb´6aBHÿH®âÀ€sȬ©¼;¨³3‹s‚IÃH¹­diºØ°¼Y£ÓOB>k_}•»ÿ ÜŸÅ¥/?ôóÿØÒw.Ñ’³*[è÷Ñ]DäBr~œ`óÞª>šâFâÈO[¨ÿƯ'‹š)®$[ãb܀㗩ëX¯ujîîðO¼±f"t=à4îc*1¶‡Oo ˜¶ŽÝ†”û $ÊÓ¦üž¸ëÓ=}« t¶ +7ji r~Ô¼ÕQqi°†àwÎøÏõ¯=˜ŒnKÐqØÄözJÃiÉ+­‹¶ú,—s­ï¬Cœ*Ï’!W„oÑ¼Ç–× ó]ºuþícišÍ†Ÿz³4WR¨2ŸilRôµ»ïSæá‡A'£zöªJŽz€Ómîn O¨£<¸Ÿ³ÉÉ<÷P)N³1³hŠ3‚VÎB«Î:ãj;ŸÚI¬ý²4ºXò O$'È`ÿJž_XÜi·+ʉä.Ÿº),­Œç:WwÔ™RAÖ-•ìÁ#ÔŽ æܨÇÔšÔ“ÁÀä›âH=?Zç´ín Úx§ÈW–ÙŠ‘‘èxéúVÈñlLãmýÆïîý€•ÏàsŠOšú +ãmQY<=5â›™ÐÚ Éº‰ãçô•,Ztr•yïÐË dr3×Ì÷«wšúIs3ZßJ¦à•žÑ”ñÀã±æ6 ¢ÛÎê@!ârsÜð½*É”RøQ¡h4³'3_Œe¹†08ÿ|Ö•ž·d–­nï©Ê‚6B%t +A]¸Æ}¯jçT@çh»PGêeç·e¤qlÅìmì!—ÿˆ¤4ä¶G]¡ÞÚÞb§Px„N§Í˜T®1´{t«~ *{c +Ëw*”+‰&b0AÁàp}+Îlî ³2O¡å\Æ„¬R`œ€AÊz[ÒkºsJ̺ÅòîÛµ³/ÊprJùxàíãëQ(ÉìÍ`ݽãZÕÞÂú9#¹Å¤l¥d»gÜ…3 mvÇ¡îÞÕm¬ZÄ5½Ä;ÞçPÁ] †Ê^jöÍz².­p`}…‰G \á¹üéd×£0Zˆõ5ÿFù#Œ£( HÎã8ª°9kkåµ´YÌIa½ÁÁ }°gØ•¤¸´‚ÛM·¾}>äíËr ç€;õ“ý¨ãS7ßÚˆ%'pRoäW©¤Õ#ŸL[Y¯×Mȹ;1’IäuÉ4Õú‘._²ÏØéÚ³NÄ(h;&ryÏ\ŸjÞ“Ã:kŵmÀ`0¥ÝÈ€a\%•Å´v÷u"—te”H ÊØõÈ?…m‹½Ï—6~FýÀ‰™X¦Ò@7]Àg=rk9A·tÍ ´ÕO …¾’Ò]AÛ1$œ€Ø8S&OPk F8n#e°³\7,™ñsK«‹zÆÂîÐÂÊ 8 +à1Ïlþ5™•$íto]¬ò­-¡œÜ“ØéíÕÚ6TÀ“x†é‘ùv©!¸`ä².ãÔ¬J ãéÍTƒu¤¨¬XÆ àú|§9÷þu,pÉÞö’°Ï;­É +}:py¬ŽÔî®i›‰Šà,Ê€ÿtž¾žôT*²í –²ÓˆJÿJ*FpaAþ?=O;P~"“ 6žzñND“øU¹Ðd'ƒùP@9Á'>£ÿ)ÀÎÓùÓ|²q‘€Ú bQ’{U›E®¡ §vÜá³ýÓÁ¨Jñ“ß^”žXpI´€Ô¸ŒÁu"÷púþµjiÑ(…™³³>:ùg£¡ªVêu Te?éVø 3ËÇò®§OÓUaBŒ@Cº3ýÐz©ö5„»GBº¡lï'pÃ9N¹$__zµ»“‡®ü'¯÷ÓúŠÓ‚Ê8ðHÚr£ºý=½ªÒF €xÇOÃÒ¥DnFtV%‡Í´‚sÇŸï/÷Z¦’ÉHmà6ï¿‘€Þäv>â´ê>?˜¦É‚µV#™œ–¯á»MC,KC8ëTg?ïÿZâõ=QÒÉibó!í<_2~>ŸzŒ£çþ\ãò4.A8ÎO\ Ë¡ªRh“Éí¢Û†f^}jèu +2Ù>ëÒ»»ÍO½ÜÞQ‚CüPñù­`]xVöÞ66Ì/žá¿#ý*ù“†\ì9'"š%|àî'¸5$‘¼ysBñ¾yVÊ·ëMV1ÿ}cHÙa·1B†cÐœNiÊüôÁuéNÙpG8ɤ;¾HÏáIrKÛ&ž×æÜqÛó¤ÜÀBóÓÅIå0Œ|ª'<ŠqB \ž¸aþÉ¡]ñÎ1»'å&œ¶ðv‘ÇP2HâÜ>òg#<‘Hb ÈŒlÓX2 A>¼óI³ Œž©å‰HH~4è•A˜zü¾ÿZnÌŒn^{Ô‰RY”±ÎÖ€%a;DŒ°8§*@0¿L¯_zdHÁÙì)È®Š nÁ`=±Š@A©Oökh¥·'ÌK„q¸|¹ˆ?¥i í.ùe¸hïã,Åž$@ÃqäíoO­cêÄýFÕÎ!³ü-ÅgÙê—HëÆF<« Õrs"y¬Ë´òê:”Ò¼B=Ø + ýÄQ€?,TºªÝB q ´’êÜ««l@ܾÅÆïo§µV™‹•c×mib¸Àâº{ûk{/%`ýÌmiÉ;œ©<ýk™8Ú=k©ÕÎ.¢BÚäÈ**l\ +:xkÔº9ù4 žCc\úàä})¯7—ÌrÇÞ™ beŒ²£•ʤÜzzñX»t4CV]ÎÜ2pNÂqHï±ÙYX$’¥ÊsÐŽhóßÝÇÒ¬ˆ¼ÅVÃ#íPÂÒ$Ÿ¼p뎕ÏçVšF8fúJ<Ö=OçM; Â2ÝÇr#|íyezž ÏO~”Öœ2'<ç‘RoúR>Ø¡»‚„VÈ`vãŒc àSLécŸ\þ.拾Úìˆå¹2™ ¶ã!,ÿís“L)=@â¥ÝI»ØQp²ç/¨ Ê‡“´çÔT›—ŽÜsÞ›òúQqr®Ä{âÇ"3ø + Ds•þùüAIè)Ü9WaDvDà"”ÉþÀÎqŽ”„/÷ETŸº(¸r®Âùˆ'\ô J½>P1Ž”Ý«ýÑùPBžJ¯à;‡*ìJ‡r6Ìm^O8 ²òŇ'ûÆ *ŸÜ•û£ò¢ì\‹±#2ç<ç×q¤.‡¶3× j=ˆOÝlOîŠ.û‡${+¢ã +rGÎƆ‘ +•*Ø퉚6åŸjfÄþè§v‘ìJÒ#¹g K±ÞÆšL%²UˆösLÙÓ•9íI±=(»î‘ì;ý|·ÏûþßJyya¼— ØîƒõÅBQ3Ð≞2(»î.Hö¹lºHrrpãü(“ìØ8Ÿ§;Ø}°)›<–Å7ËOV§wÜ9#Ø´{Ãya°réœçµ<5Ÿ•Ì3$ÙꮥHúQ8‰°ÂÆ~cëÉâ˜Q?¼Ô]÷Hö%“ì»—íÁÆBš­i•:çéRì<Êß÷ϵ4GyHϱªR%Ó‹,5´PHRíܯ¬!\ùŸ¥FÐi™â{ÿ|ÁÿQª¢üÂ^px+ŸéHbóÿ §ü(æ)E.…°ÖÔ›‹Âîƒjž¹9ýåBmôÖc›»Áœœ}‘0?ò%1aˆár{loð©!Q¥ÀŸÌŠþé¢b pG?ýj.ÁE.ƒ~Ϧî#í·›}E¢ÿñÊlX,nb¼¸gÛò«Ú€ ú‡8¨#ÅK Ž;u^]Ù'=§¥;±éØì|;£é׶«gYÚ?0H0U‡G©®sT³OÖÚ°“æLð­Ü~cõªºÞ£¥»-•Ü‘1‚?Zª“Íy|­4»¥•°]Ûžäž”F-jiÅ£¦´uk2›ÁòÛ¨€ÃüEYäନO™ÿÉÅbéJÂîH‰\º•ûãŽzv­6•ÙxÈÞ¿8=}êZÔTôh£ŒÆ3uŸøÿÙh¬Ûv…©™Ï®bÚÐî9ý(©±¥ÎuzsŸÎž ã>´ÂäwÀÏ¥9Ž~rqÚ¶3‚Ä@úÓ™8wcÝß7SøÔ„–³c­!ˆ#n¤7­!ˆùCëJÌsÀ } 4F>QŸjšÞYí§YcfGú滯ëö×j±\/‘?Až„ûWŸ†'øzûÐI°=j\n4ÏdÚ0:؃ü½)~¿‰Çóçš‹.,qá3ÃÓwVú×{e{o}–ÚUu=0zŸJ†¬üéÏò4É9üc8ãÔcþµ2A@Š2ŸßÛü;ÒˆˆÿO•N}¿Oþµ4uùŸëR1ã ÏážZ×ðÝþ4Á׸?‘ÿëÓ×Ûôãô¦ š(®#òî"ISû²¨aY^Ó.yd¶bs˜›rþF¶—Ûôÿ +zõãöàÓM¡\Þ ½BM¬¶×Ð’ýSêиΞÄg’˜oå^Œ¾ÿøòÔƒ§~ V˜\òç°¾ýfŸ2c¿’Üb«è¤´a[?Ä„qø×­Œÿµùæ—'Ôþ"¹™ä)ÔóÏ`´î½ÎÅz»ÛÁ/úÈ¢÷´9ÆÆ×ðŒ +,‡ÌyŒcd¿È©@lHÀ‘ƒ†ÇègÃú[Ëš÷IÖ£“ÃZ{’BÊ„ÿu¿ÆŽPæ8-ŽÜŽOô¥x¥Ý€{Ÿé]»xJÌ–âåN1œ¯øTÁñ ì¼g®äŽVÈä•eÆ1´ë€)gæܼŒ° ]Dž|a/¿ÞŒäjðèVÛ,ŸF#?¥Œ|Èä5b>ņë!8Éþïÿ^²|™Z#"£˜ÀÉm§ñ®›ÄzlÚ}µ´wh±ïwÚU·pi§YX´)’8.a’\"óA€ª§’y=þ¸§v¬‰µÎrä‘€Ž6nÄ€N)¯œä®8ëÏ9èk ÂA¡¤:l7Vó*Æ%#qrHì}ë3y% ù ŸP1üRz‰« ÁÆOLâºm\§/oÜCÿ¢Ö¹­¤ÏÅtÚδÝOðÅǧ®Å@ÇÔ%h£DFÚ_9löÅK£h·:Œ&gºhb' üE½{Õ}KKìwöíÅuÞûÔŸîýÖw´t3­'ŒÑá©TþÑ”ƒ× ŒN´ÖðÔ˜?ñ0'òðHüë£9Å0Ôó3ŸÚ˹ÎÂ79 h1Àù?úôÓể€·ÜóŸ“·ç]ôÍv08µÌ^Ö]Îlø~p¿ñüwdÿíLÖFoTŽÿ)®ˆñÆM4ãßš9™^Ö]ÎtèWƒ¶§ýòi?±/@ÿÈýþSÅt,1ÐsLaëG3k.ç<4[ÜÿÇÜ‘¦ÿd_ ææ/×ü+ 8Å4ò(æcö²îsçI¾òñëþ .øfŒ®9ü«xƒ´õ¦“ÒŽfWµ—s é—㬱tãÿ­HÚv¢9óaäãïõ«lôçõ¦ÿ^ióÚ³ì:€o‡?_þµF,õ ܼXõÍmœñM=>´îÖF1´¿ªÞšm¯ÀçËüëk¢ç=úQ‘’qŠwòµ‘’ ¾ ÷c$ÿ´8¤òo‚çj}úV±ô¦ǽòµ‘–c½þâ~böSr ßp8çúV‘¥}Ià +>Cö¬Ì+z 58ô4€^q˜—¯\Ö‰àÓO×éONÁíž~׌ù {fö¢?Ôóéš¾AS v´e3ö¬àÀGsHã#1½Ï¥\nO94ÞzSÐ=£)gÉýÉ¥óî@ BÀ t5oқߥAíLÍ6Ôš<é{ÂßZ¶zSHôÁ¢È|ì¬f|Ü°=ýéÍ0"0±H§9nFrzqÓ©Ži§Ús²¿žÿóÉ©<öïU’N1M=zQ ùÙ_Ï?óÍ© äñå·åV1IŠ4vG i¤¢±và.9&—¨«–ŽD‘«+uw¤¿-ý£t\’Í+1'¾Ni2£+”e +X–ÏN*1´J»}{Óî 1P³“ŒÅh¶%­M¸-®RxÞ8Ôm`Üȼþµ¥»÷¾QdDÝ÷ S€iƒLhÑdKg9PØçƒÿÇëI„²ù¥ÕG$¨ñÿ\}âOÖ€½¹ãÙ«vZÍ„Âki<³ÜC}ET¤žÀÒœN?,;Øô-Åö×"½Ät OñÿéW]ÊC)î+Æn0ăÓ­]#ÄšX ­,cþY?L{µ=‡£=9ãïP4dgòÿ +ÍÒ|U§ê;cwû5ÁãË—ŒŸcÐÖÙPFx#Ö¡ ±P=¿1ÿÖ§ööüÇçR4|ç¿ëLÁßÛƒùP!~¿¯øÔ«õüÆED¾ß§øT©íúq@&{gð9§äwÇ⸨†3Î?*UÎ?‹ð9«D±F=àiÃè:nyçõ£ßP…çßò¥üGå@úΗó¦ …-ç¥H¢Š*…¢Š(‚ø—ÉÓG´¿û%bÝkÖÒè²ÛÇi,o#lEl4q® ?/ZÚøŒÊn4ån›d=qÆWü+*ëX¶ŸKžßO†tgfHà1‚Š…TrG~ýk9nh´E©Æ<8––‰< +àL뮥Xœw$ñX`žÃ¾8s]ܱÉáëkKKY!¸©u$6@Fç=ÉÎ1YPDaÊÄTÝ]Éù`ãD]ŒjUIh1­Lm +M1Y[ #T.@ÎqÐÖÖ»¸kSã’2OÒ$æ¨[b)`ò™Ö'”Æ|ˆÏSèµ ]bóËV>M¤ÌáÓËÁý )+Š„Û½Èo¾fƒå',G_¥uºD‰k$™ +#ã=Z¹;„idEA“ü g9ö®– [ñÖ4ÿЪb¯dUev‘¬Ò"Æd-˜Ô‘Ïš²$‘†FÜ#š5cjQ·†(x*@è{þ[NËo0…i@‡ÈzgÖ­Ñvg7#±¡Æ1ÅC%Ü 0‰¥Q&@Ûõæ Šêe™c¼c.2¥Ošf¥?g~2$ÁüªU?zÌJ:Ù—Ô+;'Ò Žx¥ÉŽU|§¦j€#!”0 VU²ªj* » íÀ©Œ¸•šeö=©{÷¨.nX¤&‘~úîÁd}i!º2Hc–?*\ +Nr½)r;\vv&lsŠkëJHô¨..<§‰vîßNzb’WvBWd¤c§¼Ó=G¨®&ò1²ázãñ¨¥¹ .3(èÅHùO¥5д™9ô¦·Oz®.‡òm;“£ÈÈÉÅ5®”B;!ÿ–ƒ §ìØìË F1Àúšaäul¨“CÎqµ ˆýÂŒt¡GK¥ÉŠLuÎ*¹Up6¹SÑÇJŽÔüóc8ÞHÅ>Gk‡+µËdŠi¨ g˜ïS­6¬9NÇÈýFi$•óÆÕËÒ“&˜@\B:9'¡‰Æ 8ô¦óÁ `y'Ša§wÆi¦˜ÆCô§F$œ±ÏÖ€iü)ß7­0šn&œzÒgò¦1™ÅqÛéJi(´†M¦1¦Šq¤þ´¬1ÉÈÅü^ÈqŒí?šƒK©FË`Ž@ÇZKÿõ±61º%?\qý) Ê?ÂjèÓíÞÙ]Z@å2~n3ùU+º>µ¡eÏmö¨‚tÚÁ²à)¶Ôw5V¹j)socœ¨êÕ"$«xwl£©9èCi<Élˆ¦#°?r„þddô§Irî¡ZmʿÞ?*,4Z–+«Q¶âÚX¹àH„:*(ln¦d‚ ÊG ¸Á¢Ìð© #6åGçLãŒþ4­‚õd¾èÿ‹9¨òç98üj&lƒ»ïg¥Tc’2q@®HCq“Ú”§ –ç=Í4î'­7N(ØÏVR}©B{ŠoÌ3÷AÅ;$nLP1Ûçæ_ûë4¹^œdûÒ$džÑÂþ€•N Ûß8©P ’{qL(8glwÁ§¡Ã{úÒfTX?{`OSš¹¦øƒQÓfó`ÏÌI{¢©Í#H +ím„ôÝÖ¢Tfÿ–y '¥+wÙè:_‹´ûò±\g9þ>é>ÍÒ·ˆ ¹Ú¼Gòá‘pO ŒÕÝ?V¾ÒØ-­Çî¿çŒ¿2§uü*\{sÓÁçÓ?ãOÿ¯ø×/eâë;…òîÿÐ¥þñ;£'ëÛñ®– Rhĺȇ£#nSS°š'\ûÿ:`ÿtþ•ãØý8©¾š¤HñŸFüisê1MíÀâœ3ïT„{S€ÿ9£óü©j„´”µ@QE1Q@Ú?ím4K¿Ê +KìûÁw.qžø³nõ{¥Ïo§«IqpïÂSðVÀüù«ž>16½b“1X„C{/$)r 隣«ßi«£ùZl¨Ò1dXãB + n gœ‘íÞ³š4_„7BÉtkmmÌ̲«L +>ägÜñŸ¥fʤq˜ +då-³Ë°þ'>‚¶µÛ{+X!´\˜¥S2G–2.ÐIÜ:sÇŒª±®2(”àFÇ2Kè§Ñ}}j rW½Ò%ˆ…•$i73¸S*õçî 죹§¥´ÚV©¨­à !·hT!ã$üª°˜‹ø“p{–uFqÊÆ3÷SükSÄ…á!¾ÚÄþðg#¡À§'cL4l›fLÌ>ÖHÀc䑾R3Þº4F>¶Io.<®2zŠå.ó½Jž‹“]Æö5™=L)ŸÊ¦ü¶c¬ífG4a´éÝÄÄqÆIâ²ä·]‘M*±H@wÏ?JèJN)¤ c{UÆ¿)ÏÑ‹g¬²ŠIÁ^óéïKª\¬oe·6Áýk[bç ôéMeRyÑíS•Øs;Ý TÂ]I1ãwJË·¹‰µpÇœ© ŽÃŽzVÆŒQ´I»%Ï|TÆqWó%;&ŒéÜ[_4ÓdG&‘“ÑyúSC‹›´šß®Â{ƒŸOëZlŠÃ Èî*5‰W•P>ƒý¢·™WØÀj…ø#Ê”Œ${‹ŸJÑ gž†™ ÜNsïïQYÜQÑ™3ɘ·mâEÁùryúRÄëm<ž{y{É+žãŠÒ1F1òŽ:{TrF¯÷Ô7ÔV¾Õ=:Í~†e×ÏçL‡tl«†Ï¥Y‚4}Ðuô5dC©P ׊_!c@ c8ô4¥QZÈmX®þ\1žB§AšƒO—6ëqòöâ­2+Œ0} DGÊ(SëŠJJÖ`ž–)ÛìHÚŠ©î¬qE¨Pò?.î«rÛÅ',¡Ž:‘LHQ>âŸJ®ub¹´ª‚Ge#9ù€4ã@‰wï=HïPÍŒä¤ÅA펕7¸’¹-0ÔkÊÙi7¯¦*R8¡èsJç£Öã‘H}© '‘M8É8Å9²Oji¦­!§IŒÓ¦›Ï­;©§é@Àãi§'šSIŠcIÛ¥.9¤=1@ HiH¤=hÚNô§¥%1\m4·Ã÷v­ž±‘ù1ÿHø9Èüi÷§}•³z<‹ú)þ¦ã¹7ú³O·ÔD{ß4ÉyŒÕ>8ä·pöñÈÁ¾ónÏèi»[Se{è\ÓšsMcqe+ß{Õ…Ô.VMþqcÐïPÝzðAZÂâ;kß%°3nÇaǽXy¤_”Ÿ%x=GUϽê ëf1ÅÄ¡ftbÀp€Û¨ÔRD®ü‰¢CÔø<õéE!™Ûjq`?ýTƒž ÒðÖ¨€ c8»±€?Jj䦜y9hÛ¿‡Ò¦0z~4œž”âFã4 C ƒÁùB·áJA´©¦îÐPË•\eiCðNíÇ ¦¡$ch8û´ðê¿¥–Çšr¿;~sÇÒ•˜†ÉÒ’ÍüdûÐFOÊ7{ŒÓðÙÁV#9ûÝi¶@+úÐÒ0^8þ”€ 2‘êI¥òÀÁR9È&£Ž`¼p=x¥\±êÄúP2EF)ÆÓNÕ%«\Z7™m4¶Î{ÆqŸ¨èˆ”'ð4äóÎÕ'ìô¤CeâV%ýóAt ã÷‹±â?¶mÑA4yõÜ) ðœ7?Þ\9`#<Úš}¨3Cÿ=SþúÏ6/ùê§þ)Ü9„SO^õ#4³!Î8Ï·5eÏ ¿÷Õ+}Å7Ž´íÑã;×>™¦å8ùüiÜ9XÓŒÓXçÓŠyÛÆÖ>ôÑ·<°üéÜ,ÆrxÅ7Þ¤b ‘‘MÆ==è¸ìÆvæ˜jM»†{}i¤Nã³#<ô¤4ò¼€:úÓHçÖ€°ÌSMHÀg œS1Å0°Úiî?=içÂÃ>´ÃRȲ¸*ëÁr)» €H}©Œgji§‘Ú‘— ƒŸJfh9Î?•)'R`f˜Æš;óÒ”Ž)¤0æ5$à068YÀéê§ü* vzRËpE›Û‚ +ÈêçðçLijSºGµ:ŬƒÌ•1¸8üy¦ŸéPÃ;ÀÄ®9뚤®´4½™xEþ˜»ŽBàò+¯Ô-–â3Î @?ÐÿOƸËyÌ÷;œ Ú»‡ž£šÒ K3 +Þº9"ä(‘`”¡$ØpH÷Å-ô +³–P9ëÇz+7™º’hÊ;x繧„üO½7 žXþTãÁcïÅ2G¢»˜¨ÇAC“·€µÇlâœ÷?Ž)âg%¥Qè?Jv’pqíJ¿CŽÜÐÝãð¥–ÏáOá› Å=và/–œ÷Ï4g“RìÁÁ#?N”åŸÐP»CeƒŽ=© @€±À: À±ÆiX0èšLé@R£‹Ç­äàäƒô¨ÛpQÖ¤…D#¡Î§ã@d»7 +™%nÌÜ{ +…#,FqsV¼„ò•ƒ “‚9Í YybQϽ8;¡+“·©â™8ÁÏ(Å9‰QÙ÷#½!‰ó69aß5 b¥1\…Îãô©‹Œ0Æ:R ÀüȽx©Ü»=pD]ÀÜŠ“ åAÞÄ11ácaØ  Êà‘¼Rf'“‘ïO@ÌX8 C9ÛO¶EHQŠíÊnüGùëK'–ë³H<¶I¨¯RÇÑhÌQî@ãõ¦ùrq†\gœñÍ ÝNç<Ò”’F8ãvhM´9X÷ƒÕFózÚúòF¥r£u¤ÞàÙªáTªï+øzSŒJ~ëü™êN(¸ÌÍ~æ[½HKs8i²åŠc$nã£ðåÃîÙI¤l²ªÜçqØ{ú1¨|AƤm†1ÈÇjÏIš9’Xð¬Œ}"µ[2ÍÁÚüƒª€;s–'žGãŠ]0·FXà€Ä uùH§Í©Þ)@ê©„Fò;ûÓF­pHÈB8Á?Vv9ª:’º¶ŒµbAñ,€À˜ÐÕ¯O·Z¿8àNÜcüúVu…àXKÙ£2༌±Ž§czûÕJx®ïn.~îè´È€@f8Î;Ò‘ÓIrÅ";XšêÊ{‘…2Ry!‰¡ýi…Â0KœGÚÙÒßÌ4éúÿ"Ì*`šÉîj…óû­ùRyŸÞGÇÒ¥3)sûÕPFAäãÚ“í$à—Ó4€a“òŸÊ“ÌöoÊçsÁ©iÈíµb\“Æ3ME½è[óGp*q•pÖ”–3«Å†`–ñ°lÈs…Â’?2üiRäŒ +‚£j°\oš¾ÿ•@0H###"•dã€)|ÏaR<Õ H¤fœdõÅ'˜;š` è1†ÎG|Ùõó¦*|òÇ'Ö­}¦4¶šàB% ‡eׇµT*¬~lâš4ÕSÔÕÙ0Š±ƒ´dóëTߺÕÄ–Km'—.ïA]Ù$·‰ÔIp¼ùzÖͶ±åéÉ\K!HéŒæ›½î‰²z3Vþ@˜Ü»³ïEg „ç +ïžxA#Û¥9‰@¬»H?)>ôÝ€ž„cÞ¤Ú‡=¿Pª'T—`DSÎ =ù§|¼¼tÁ¤Æî.~lð}y )Çð:TÉÀN*Œ‘Ç#­.QøgÔÐ2MÌ0ãøѹ‚3Qdg’8õ4âÁµ $ “ž}iZRR3ž´‹±A ‘MÀÎî:Ðïr@¥y==Z{®ðî~è¤J1ùOñ@ +Ê@$&à;äTªB ÊŽz暪λ6žyǯãV§·c»1Ãcµ&Çb¿˜G=°*BîW%°£`ÔhõorO­9J†*G¹  ZGõÆ3É4Æp;Pñèi~C:¼“M%K屎œ +C)ÛªGp R™›pݳéMCÆÒÇhàGÈžÍ[ßÜ(X‘̨c$®q»¸÷¨œ ƒ ¿{Ž•nÊímüÄ‘LÈ9AŽtnÎ XŽñ$— ÌÍ€K}ÕÜN3ߎ9úÑò J] 2N€¸Ï½7Ìï·ç[ê߀c,Šœ`c-‚?pxô÷¨næŽxÑ„Ad,K0v`{äþ4/A©Kª3¼×ÄÔyÏêjÉPFB€:i¸è)•ÌD²¹z”Í þ#R`ÓŠR1š,ƒ˜ˆÍ!ä± NØç51B¬¼äV $vÁãd2nÜœÙ?‡N}E-äÑD\6_Î—í ŽùÏ­h7–Œª¬›d$€p8þxý ¢óLYˆÇÃn ŒñÓðÜ*4'™æá±ß4†á»Z1¬rHм±*«¯·ƒÛwÓùÔhÉ,Lî"B€íôÉÇã’? +4;)} ÿµùÒ‹“ß5w*Ö­)òs€6ëÐc×#Ô²”‰R}°1g ·sóv=HÅvvf}¡½è ÜšÒ•!‰ãŒ,'x žxíŸNzÔx.v*ÄW‡Áçßo×µvvQ7 Øš>ÐqÞ¯ù±–=ð›¾aß +pOÖ›Å,LÅ#Æ}o×¥;)†ìM'žþµvHc{_8m\``~Xú÷ª[9àfšH¥&{g¯áNk’T€¡Nì‚ ééMÀþí+ŒüØ>‚s ö‡õ£íÙ5hEm¹`’¬vô7ëÓÚEm±O˜2Çc§ŸçùRОvUûD˜ÆïÒƒq)êÿ¥Y‘-ÕIW wc׎¿çÖ£tŒGÎáÈÛÐæ‹.Ãæd>szÒ4ŒÃÔ›S®áÿ|Òí]¹Èÿ¾iÙ0‘\˜ÓoQœŠ–æðÊãËÞˆ1€[88ëMŒDAÞ@ô§„·ï'ðÿw¿§ùõ¥ s2¿œüüÇž´ß5½jr‘£~2N:úßAMXjM‡šÞ´yë@ìæ‚1ƒŽ½(² °.Þ¹§E KÈ*©4ÓÏ&­”K‹XV-¢hòIÆîrþ_…' Ö¥V£}­MQ–ÔÖ„ÛÊÞ Ü,NyÁÆéU­B€] (<€qúОƒkSnm|¼ùÜñÃDOnyÍ,±ªˆ•”ŸéEe©VF`çÞ’F3Žõ éÖœ79¬‘ã§Ê‚2}8è! ÙXþ—ô ! À=ià +N3ƒëLËgÐûQÎî2hê[²¯¥)‘†AM\ì$怊rryé@ ‰$O÷x¥òÜž¬?LíÆE8;’v‚1րDŽùÛôæ•b ädÐf¤ŠWVÈnqýÐ¥ q,’±fëÔ„ùR‰ 9ù{wÅ[KUª/8Ç$û¡Žæ@¤9÷QN2mÃ9#±Ï"¥Ü­Ë—l*0\ð1Qm`G:Rï×suÏ^iÏ$„gsõ¦!@;w`Œt9¥n#$®*4‘ºcõ&¥\·$ƒÛ­J‘±Ô:Ò˜øÎÞ¾µr 'æ=òx¦ ÁNüé yÈã#ÓÖ”·%Oàj&.ß1‰Œ9Ï'­1\Ÿo~¼u¤Ä€Ý{qQí³œœö§í9%W4€$0FrGŒYUIg$‚ÇÒ¦Ëc˜÷è:SBluÈLŸZbñ wQ&ügióϽ&Õ +Nüã¸Å. #N;qÚƒ´¨Äó€¤1©n;½qRO^:sQ´x}»€Ï'œÒƒŽ )}¨xÜĸKÉÉÂñœT¿kp 4’OOJ«µ Ã0ã­F +X°?JVŽ­¨Ï§•+«7$–Ï­6ÏRg·y.aÇøU‹ëhî¡Ue*PpÝ +¢4DÁ&àÿßšµk­ý³x“ŠEq Ôÿ1VÓÅ:Š&Ò¶­îÖè”ßìh±þ¶CýÊQ£DIäÈã·Zwˆ¬VŸ[»žBÄ@™ íHP? +ˆjw9ÏîOÖÿ +¾Ú<$LøÇÕèá†D¸¦šÖnX­zdÿ +OíysÿÖø¿áV†ˆóX’OíK ŸòÕ—IéúQt;Vf9v€ž¿ºUd´Ç\êâh°6àÓ•=¸Í,ZFEó&ql ž=©^"±OûXÿÏ—ýû?ãBêÛN~Ãh}¶ýkJ?G!ϱO 1çãQ ,gà{Ñ̇b˜ÕÀþ%ög=~Vÿ¬ƒ®hG§ÍÿÅUÄÐíÌAšfÏp)FhWýdû¹à(ôúý(¼BÅ%ÕatËCÿ}ÿ8êÐ¥Úøÿ\=”Ž«Íó}Üã5"è6ÛT™[,Æpç¿åEâ(ÿjÙ°ù´‹|ゲ8çó¦.£dHߦFF†W|èvŠ>i\ÿ»M:-¶T~NӞƋÄ9J¿Úzxb²†xÌïŸÇšcj6|ºR¯Öw5y´{ë,­“ŒéúÒÿdX–´Ù%IÑt¥¿Óó–Ó9ìì)VÿL-Éÿ¯“ÏéW×C‚g"89/Óœ>)Òh¶Ð$¹Ç÷—2S0^鼟ì×ÿÀ“þæ¾ÒÏüÂœÛÑÿ +¿6•cð:ñÝÉçþ½0éû €ÈÀÝ’sEÐX¤·ºh<é®ß[“þ¿mÓüÃf_¥ÏÿcWWI¶.WiÏlµ$Zm¡)¾2¾¹ÉÍB±@]é ’l&>ßhÿìiÍw¥q§\)íþ•Ÿý–¯¾›i·å“È’Gµi–ç襀ûÇ'üió!ØÌ:o{)ÏÒàñ4¿jÓ?çÆãñ¹üMl.•Ê Z¬dž7?‰ô¨nÈblpÃ'9¥Ì‚Æ?Ú´Þöwÿ®ãÿ‰¥ûV˜åÒà}&þ•¢t¨”¬X=î an©XWœŒÑÌ…Êe›4Ÿøõ¸öÔ…8\i‡ƒmr?í¨?Òµ†›h‹†Uf'«Çµ5à‚ ªmâp;”ëéO™”É3éÝ­®ýµáJ³éŸÅmsÓ´£ü+I¢£Â|¼:ŽX#ó $(‹œ ´\9Lö›M8Ûor=x?Â7MÇú›¼ÿ×Eÿ +Ñò•ÀÂ)À•¿ëI$h‡ˆS§\V3Ú]?‚±\ûƒ ÿ +i–Ã#Üãþºð«ìŠTÏ\¡cŒ°$ϵ VM7¼WCèëþ¢M4 w`wéþ•¢Ð BAAÖœc{%TõàQ̦K½€?$w${¸Ò™¾×?ê¦Çûãü+]Òä¶yìøÔ'ËS÷¿LSæR‚µžrb¹GáNÿBÏ)tGo˜…hfUÈ#ãþ´ÆuòÄ­.`±A¾Éü1\þ,?–8à‘° ¹>˜ ÿJ½æÀ¢aÖ‘ßrìÝÓ§î+`3²)•»Ý?J–ÞÐîÃ1É«–»3"‰ä`’÷¤¢ôUôëŸçSr’&Ú±TgŸ˜œÑL†iá$}¾€œ +) Íàòi#fÏÞ?U‰““Ï4ÎôQ@ éOïE(ûÇüö¨ÉäQEHœ±Ï=*EûÄ÷¢ŠC'oSJ~ࢊC'·U2œ€xî*X€Âð:ÑE#ñÓŠ€Açš(¤€”*ùåV"UÜÑ×ÒŠ(`‡(qU¥fóÌ:(¤†DÌyäÒ)8š(ª±}ïƦrw7'ïQEE9;O=¨îh¢'Cô5'jóÞŠ(X‰óäçu*;ŽXŸ©¢ŠC#Éó›ß?ΞŸë +( 7ú¿Æ›ÿ,MPpõü*vU°ùGj( C‰ 62”À—ÓüàÑEdlOž•3‚{–?Ί(ü¶?í5Kg”`tÏëEE_%þQ×ÓëQ[€¢Šƒ¨óÓ!8<žƒùQE0D1ÿ«_÷©íþ¯ñ¢Šî7û†š¤À“Š(8*ä€mFÇÍ´sß½PZæ·îÔ÷DˆÓ˜ôúQEKÜhX9“ÉØ9ª®Xð¢Šb zƒíOp77üš( $fÇÞ<_jŠÙ˜g FCgž´Q@ÐøÝü¦›OöME ±òÄôïïE²©ÿPŸÅô¢Šb_¢ï¸íÍPÆ•”dp:J(¦„*°qòö¥ûÊ›¾n{ÑE!‹sþ¦©‡ueÃ0Ç¡¢Škaä°\’~µÀ袄'ŒcŠc‘ÍUsQÈNáÍP"U$Å‚I…¾ù¢ŠH Ð0*âFžf6/OJ(¤ÆL7•*(¢¤£ÿÙ +endstream +endobj +7234 0 obj << +/D [7232 0 R /XYZ 132.768 705.06 null] +>> endobj +7235 0 obj << +/D [7232 0 R /XYZ 280.528 467.245 null] +>> endobj +7236 0 obj << +/D [7232 0 R /XYZ 237.359 300.625 null] +>> endobj +1077 0 obj << +/D [7232 0 R /XYZ 133.768 286.09 null] +>> endobj +7231 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/XObject << /Im9 7225 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7248 0 obj << +/Length 3162 +/Filter /FlateDecode +>> +stream +xÚZY“ܶ~ß_1姙* …ƒI—+UŠ%9vɉ#­’ۥ˜Ú<Æ<¼^ÿút£³\í:Oènôñu“lsÚ°Í77¿½yùV¨M¤ +šÛã†KÄ*Ù¨4 +TÊ7·ùæÇ­Lv{ÎÛ~ìŠú´Û‹ˆmû³¡N×ë:×mNOßþ‹Ú£ÎŠ²è ÓÁ«*äj+E´ûùö»›7·7¿Ýp €møìD¤,ÚdÕÍ?³M“ßmX Ódsg—VÂRŽ/–›7ÿ¾aŽ ¶`‡ÍÙ‰X X¼QQ;? G‡ïå[)g/%Aô0Z<è¶2\~µµL)¿ìÛêRšÊԽ&4Gj55ÙY·:ëM»SÞ;mßñhëçŽM{%⢆k]ÒÓÇ]ȶ¯ÞïÛÞ.8ÙìC$"Üìy¤ÀÕÿÉðùi†‘ ãŽ{™£17Y ,¢ºÇøXP¾Æ?;Wɽ’Pr³—<i:SÉ@:¥|å$Üäî˜;]þÚŸÛO¶Íp²Üá{2\îp·G×ç¼_5«·ÍÈSDžûWÀ dj;tƒ._@_àeå€àÄOŒ‰Ò¸U§Ûض]ìöaœlÿ{.J·:•¹ j .ËûŠ¶nïî¾Û[&öž=s‰œF÷¦‚u©ÚžÎQ‰°?‘Fð±þÜt†æŠšZ]Ÿ¸3z8€zþŠ7júŽD¶6A‚8½¾Z“§!üŠ Ö¶ ƒ”Ç~ÍßVv‰ƒ.É-Â9‘g¥ˆdP+CléË¥,2«rûîb²™ÎHR‚G—b)©Q@LÌïHXY©0¹Í›á@W#¶¿ Mo:¤â‘º°.«QŽØÜ‹Út«æa²qeÖTþdíZk#x¼S}H°o *’Š··ð"éFGÉ’ãJ#[‚EÛÖè®qý-”…p¨îi¤?ÓX4ƒýÜàSm:¿ÈÿŽ6«ËÁÐ6àêV„ä°x¼ê·Ÿ¾þáãš_bÅ(˜»s‘éŒÚ˜ÜŸÛÐ9wü¯uƒÜ9nœJ¸kÆ”‚¢]É61r=TÈ|:ÿ«F +9ôEÙ½ÌM©ïý=/¶‹aõtÏOêw஢ ”ÊúmþÛÎÝžxCÙ¸ò¶H@ôä~·¢)ê¢G]¶vóðì0 ’HúåÝPUº-þ4NÀëPBU~g{ëHÀ} ]ú‡Ê£»_;PB‘†Ö#’ByÕš~KŠ‡KÝ´K#é"‡±"¤Ë†Q{Ùð\5ùPšý<ÊmSƒƒ´ÓÈíšöAÈ—jŒWFæÕ8É´Œ È8»óÁV/àª[:ø®°B‚ñº ½c¥+*tIÞ[§»®}PÑ{×.º`d[áÆý™zš²Wm]>7—¾¨¦ Pb 3cè,i‘5vhͧŽ&ëÝ9Eï)Ç¥%x+ê;?=mp¯2L@a…ϹEy㔊îK*º/ ÆicÈ¥§QK´Ua…ÞÝÙ¸±ÜvÝ†Ó Lé” ì’é¡3në³ñ»­„<í^§³Û~\M‹Çm÷ ÊøOe‘ž±í¿ ÕÅAµ¶j‡cAPyyÿ…›èXntÑøp*uí1ã A1P ZÛõærn0’rmà2 ½›-v »îRc!MÍ¡Ú§®o×¢ `¥p„+¨c+ ]G™åìF€¿F7Þ™žh.DhoECƒEù.(p…þ!JùĪs$£° ŒÒ+ñ:.·>B>Ë›ÚÐÈ@)v{ +}7”J´'—S¼q9ãA2…¢×oþóéÛÛ?|úpûþÍ«ïçs†’¯À +¢q‹ÑRpæˆÁ.¥î Q[é¬m¼qDCcÚ(ÀÛWŽÐy§½pñ‡_Àj©ŸiÔ&á€~ôíiDNÎp§µr\ †‘ÓÛ„ÃaÈ&Ð^†ö`/i¿%§-ä’-°Œ¬9€^“ãõÌ´m uµÅݧÓ¡e€¶9* L‘žR:ÁïâV›µmmühÛšîÒÔ9)€E÷ýep뜖_Û{QÓŠD#U!»Á1³dDÝ8M'è† +ÌnemI t2]ÖË¢üÚÈfjµ;3@7"› AÔ9xÊ_¬}×½±úG:øwhú3*©…} +.à<ÌŒ|y$©z´á;«¨Óšß†Â†Z¼øÃý{Ší¢i…˜Øq¹,èÚ§÷9ºóé®…L­"®x5„B=Ã…˜R᫽°ý‚zœ Ð”x´½ d­M[Ñz¯=v ÌPîJ)Ž¡I‘›ÛW¡\ryp>ÿ4Óçüu·Â&¤æ)ó§~|÷n…G!aÑ8ŒÙ˜Ó+ͱ¡H¼J­§XøœXÁ–ÆSf⬣¬ E:^ªHf3Š¹iÎIš|L£|¦*‡HGåÙ§ + 3_ +÷ý¸1:½Úš)ß6ÎÇQÂÆc|4-à ‹ é© NιÛ¦zIë ZÁŠ¾¦Çv¨ªxl¯KÛœZ]y\ŒÜÙ¼}Eë?ph$Ï +²Ñ”Œ~"¶Xѹõ5±%›Ê@FŸSß:Nhó¢ƒ(tO³Š“Ó½}“¤hß²fw_¿v#Ïúƒ ß^q0Ì«àìO7¹Ä4sÅÄ¢Æç’–rápÊša¿O¼ûLÚ¢XÀ$ Ýê'žãnˆJ,D¾Õ²lð BQÄy}åêòžæ®ˆÙŒ°’W敨ЅËP†[j#NpÄ“ÐáÑçyûh€ŸHU÷P®%c>79[$%A…Kr‘î>MრxžÏh[fÂ<ˆ%ÿ\&ŒÐ®í;S@‡Öõ\Þá£êŠ½A¢ÉñdÕA±‰#”³8²i©î’Põ[ÿ2غLNñ>Ce»ÏJÿ D¸*†áWKJŸ–óž£@Ø•@þ’F¨Ä–?h„ +ÒúŽ:ššòI‡$Õ¶ÕõÉÆ”˜*׸¬,©ÎbK”ˆâð àÑÈXrû#¡¹A#u5ð%ɬ,3šÔjMmî»?‘‚[M®Óv¼$jæ*‡Äp˜3j«ŽZ’H‚%$»ñWÕôšŸ¥Ô—éÎõìP×#x`îPæ~Wj;}t±.¶DºÁsp,Ȫí¦™:³OpÀÒÙ9&]ølã´úÐØø ]¡¨ýþbä‹FX¯Â¹(òZvJV¡—ÁMW‡àŒ¹é¢òÇ÷«)€Î²¦jr›ô¬—û!ú þ£¸È=¸ØÆç×$Àa$ôßvÚX‡ÍY‘á^vtªûâµ3¹-t»8g÷í¨?¡U|¢Úö¬»ÆÎi]ï`z)©-í¨s+;x¿ hQ"[C ½«úH`¨lˆ-É&Œ|a†èÚÃh¡=¡+¨ÀðѦV8B†!H,ŒÂ ± +çÞ§O +8J¤A2G…iÜúÌàÔ†Ãá¶õ+]iÌe5Ø¿²%î/œãŽà÷N…‡Uôì¡‘'ÌÖæÙT£þLô_–è^ÐIúè>¥ñ)iugòI„)!å°X½ÈL÷âŠôÜÐ笡tLQ-ÃpËir´ÛÇ +w\ œÀxÁÇ\X<±µ‚“‚hæ° Úú3Ä#¹x¤ä#tg5Qqíú§¾$+Õ€ÓÔ•~#/”>2zpÈe’Ì!±¢ëÇ©y ö +"KHìÆóÞ~ûîÍ*Xà °ëÕMGDÜßt>auoÎùê_iý¯üsáQAËdþËH’R9‰|cj,xFü·ç:¯#5¤†³/…ü’'ô$s=ûã +m]w»“ñv_·ÃÁ‰ðuóÇýÉÔ×,ÿO•þ +endstream +endobj +7247 0 obj << +/Type /Page +/Contents 7248 0 R +/Resources 7246 0 R +/MediaBox [0 0 612 792] +/Parent 7217 0 R +/Annots [ 7240 0 R 7241 0 R 7242 0 R 7243 0 R 7244 0 R 7245 0 R ] +>> endobj +7240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.642 437.656 350.209 448.56] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +7241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.942 282.855 325.688 293.759] +/A << /S /GoTo /D (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) >> +>> endobj +7242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.003 282.855 470.727 293.759] +/A << /S /GoTo /D (delay_8h) >> +>> endobj +7243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [132.772 258.945 200.518 269.849] +/A << /S /GoTo /D (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) >> +>> endobj +7244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [306.794 128.055 356.607 138.959] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +7245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.591 128.055 455.382 138.959] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +7249 0 obj << +/D [7247 0 R /XYZ 132.768 705.06 null] +>> endobj +7250 0 obj << +/D [7247 0 R /XYZ 133.768 634.164 null] +>> endobj +1081 0 obj << +/D [7247 0 R /XYZ 133.768 625.473 null] +>> endobj +7251 0 obj << +/D [7247 0 R /XYZ 133.768 599.256 null] +>> endobj +7252 0 obj << +/D [7247 0 R /XYZ 133.768 599.256 null] +>> endobj +7246 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7263 0 obj << +/Length 2737 +/Filter /FlateDecode +>> +stream +xÚY[“Û¶~ß_áÉK䙘•H]ó–K“I&Ó¤éîô!ídh‰¶ÕÈ’£K¶{~ýP–¼J»éî(’ øøöWû•¿z}õüúê§W2^e"‹áq½[J‰$NWq‰8 V×Åê“'¥Pézø¾ïÝte½_odä{ýÁP£ëu]趠·7ïé¹ÓyY•}i:ø4ƒØS2^ÿyýöêç뫯WìÀ_“‘ùÑ*?^}úÓ_0øvå •¥«[;õ¸R!L ðÃjõÛÕ¯WþL I(RE¤ÆÛ¡ëakYèíš‘W˜cSw}«û²©iì4´§¦3ÝÜêO¯”º›&,jv}QÖ4m¶º’"•›¶Y•%'‚š¡_’”Š$ËFI­¡=æM]›¼7iÑ7Ô­éô1úH]ýA[¹«„SLƒhµ ÀΛ䶬*œ(½“iÁ*Gz¹Y‡¾÷ìã:ö½kêyóþ 5nee–ô‘ +Î*œhdÚö;%ã´²#©ºmu½'}$ë#=°Éiè©]ö<µÐ½žO#?„Æ»/¹Ç¬ƒÈû›5b)p†™æEÙ*}·Ž#OØi>Œ'"–!¿*k]Uv4W~FÖM½£.­§$^Õ4'êÛ5UÕ¬eäÝvÔaÍn'é<7§ž»»òxª <Ê›ã|£{Dc¦îMKH¼o¥v‚xúÇß6RÉq§¨IL;eg~B‡g|¦wsX»QŽ\·!·2xòVw†¥ØÀ˜†»ÛøwìÖv=n$ìŠIæÚæxBs$)8<;P—ZÍÀ`ÂëÖ‡ƒ0AøÐî(>¾¾ºŽ¾£Ô9Ó©-ë~÷ùÃ~äÃ_ÀB#.Ü\" +Ç/ñ pìü@;éõ—uà{†÷ª¿³›Õ'§Þ¾µñ†ztn¸Ù·gMh´T Ø/3%|?žûåµµ²’îsh+²ôA\ÔMÓõØcZðYêÝ®¥ï ;<êii†f)MmhRUÖ¼X³sB àðôTì ݃BÆ¡Âw{Ów9…0i¨Ügã,ô~·Czs+?YzÁ·xFÍP¡EÐØÐSW]C-€ñ®ÜVÜoíHPË<л‚XÄIìv÷PT[—< 6áVæeÀbßñ@;jî J–p5ˆ„ÌÔ¿]92i:õçàÉôLÁÕê’ÀÉ]¸îL)ß«z2õmSÑ A"µ 5à(ÚÇën,z·Þ‡ÍÀ+3 +ãÏÄôoøÏ´À¦Ʊ™ÈQ„/°bÕJ) D7ìéx¯ìjØÚØÁöj œ¼FIFÄaK ûø¬ªEx|³{رdÂ<œB!Ñ-ì0>tY¡…ù8bôr€.wýâc>TŒñ0‹o9˜Å·´, +ÁXev½ÕÄ{¿£¡¼ÚÎX!!œðˆÀ³×§ý€¥$ÕFt¤„L³¹ÿðJ=GtÀë±ÌÛ†©"4‹=}ÂPrÄ &HÆ^7œÀôF0Ý;='’uÙ,Þ¥ì/=K߯aùÒ^©*c¨˜0nf®¹È$‰¬âtÂ#7 +îo°rGÄM€|”5÷÷âPÛâBØ<À [Ù ßÐ øÄðoÄA9äÿƒE"òG/"†ˆk·¦ÚÚ²/’HÍ-ðËÍ»wLxPçÀ"¨Ç*€wŒq*G¥¡—žÐU›f·ÁªXQÒaÛ™µ[ ä€3F€"Ï›þ@½`PZ8 ï6K±ÍlGÉ„ˆµ’)m\&|"ÐQ4 Øiu˜î†:ç-Ùn p’Hö,ر†F ¤JÛ +|n&)aʾ”r8¤åãtÛÞ¸CXa0G~Ðíô /Î7ŠÅ™§[ÝÀÙ=!IÃ3Cƒú±÷†[ddZšMµ‡7ò–ñóûWÔëij#ÚØ£Y´iK10d顃ÝâL¯G[°ÐàÊ*õgί¨,3~ðkóÔf¥-P´q¾5‰¥Ë*E 7,¦5y³¯Ëÿ9N<ˆ7 ¸Y±„/€[H‚I^Иٱ$nv&Œi—:ðÔ†»;X­§Èær®8M¢g× µ¾”–üÃGCQ‹¡ÇXZÚêv̺réΘÚ;ίùÉÙÓ—oÌo8úûí)K+£R¿‘Té2hðí‚sócelÁzöMSlïÜDÓuzÏ/ÖðäÜA²±ä¬o (Ø3HI^R +co.ûé‚Eh‡iŒ©$‘(›Èœó;{­ÀøöŽžý¡5üIÑØ4/%¯Ç Ú›Îà™Ñ;&|×Ú"Ä÷„jÓ™¯ƒ©sãVÒýÒ– Á€9¼‹ÕCPk–Ð.óÌ,™ žÐ?`ˆÊD$w,²eGlÙÇ9ï}ñá†-Ü ÌÒ¸ü1arzëÒᾧÌrà ûXŒHãl±¬MU›8}úfÉ? ¡Õˆ3Ïh›2ÀPaȘÖIàSë$VËBS´¶²½•é{Ëo`À"@¹™á`/\è\zˆ(LÀe±Äl©wCÎ$Îm™#¸£Ÿ<çº>… +N&"JNL¤Œ.2b¸i|ÎzAÖã¯ÏÛø:”=!ö¤ì@/¾çEH}ä–aΟó¡Y;D—x4ý–ñˆ=IÌwˆÆÏw'ûï* ï®&j0–,h1-4D>׸Pèií:H½ýp„Sº,ðã·ó3u³ðŸRAæ=S•™–ù6…íZá´‰VøjµÂhµ&æù}w¡œBæíÄ°r$‚ž[¡-¡ÂµäÑ©Ç +ó»‹"æÂÍ9‰Èüdî¢/FUü1.™j@‡%?ð,l[?P& ÂLÄê\>îr]ïBÉ#ˆÞ™’¶àΩÐA_°è§¹]Ö3yô¦á½D†"ÈÃ_T2GŠñ¥<Ùë-˜%âLZÆñçÝ©ugS1 A-[áÙràGºÎq ÈÜn»‘ß›¢DÍ W’ƒpVeÏ„<3Y, ,ÜT‰H9)7sV‰ðã æ¼/Ïb=–é.~ØQRY4ùeD@.Ë¿ŽÆ^L¦‡…½d¡ˆ£ñø¯‰ÕY <ÛlqòÖžrÄïUoOÀGOà š/1^ݺ+Wg7¼æ¬q}0Ë¿Hdç¼ïÕg¼0ÛPçÒÄQCfN¥ƒQõYίøÞ…ž¼j0z±o×µ±õ.±cåÀÕ(¶ü-×UBÊ(i,ÚS º³FD„¡ïÖÀ…N)„/dp‘ º;£¼¬h߇Š­c!«wuo]åCõw>Þ³ [å¾…!³NÆŸ…nž}¼þüüÙÍËå-ŒÆ£˜Z6NÜužœI9´y¿ÐÂý"å‹¥÷ÒœC)˜aÄFÕT€ÎûÁú´ù´A#-¹ \‹¶Ä²ªòXŽ|Áþ¦3¿ƒçvíœaë9 ³%äó›kñwÃ,@[àWC÷£gŒ|7þZ˜fBŬñkSÜâŠׇ/á2³ÿTª§AJo¬Ü²\¤i‘aÚµJ¼ ð_–°e¾lþ¾Û›úRåÿ¯”© +endstream +endobj +7262 0 obj << +/Type /Page +/Contents 7263 0 R +/Resources 7261 0 R +/MediaBox [0 0 612 792] +/Parent 7217 0 R +/Annots [ 7253 0 R 7254 0 R 7255 0 R 7256 0 R 7257 0 R 7258 0 R 7259 0 R 7260 0 R ] +>> endobj +7253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.229 582.968 324.998 593.872] +/A << /S /GoTo /D (group__avr__stdio_g418e63921ed6259e873cd21b6c5c8e6e) >> +>> endobj +7254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.556 582.968 472.668 593.872] +/A << /S /GoTo /D (group__avr__pgmspace) >> +>> endobj +7255 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.917 571.013 440.753 581.917] +/A << /S /GoTo /D (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) >> +>> endobj +7256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.448 559.058 287.306 569.962] +/A << /S /GoTo /D (group__avr__stdio_gf577dcba9afe50a9d068d0b69ac85d2f) >> +>> endobj +7257 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.618 559.058 478.476 569.962] +/A << /S /GoTo /D (group__avr__stdio_gf577dcba9afe50a9d068d0b69ac85d2f) >> +>> endobj +7258 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [141.812 517.523 185.648 528.427] +/A << /S /GoTo /D (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) >> +>> endobj +7259 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.016 493.613 431.851 504.517] +/A << /S /GoTo /D (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) >> +>> endobj +7260 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [282.407 231.832 332.22 242.736] +/A << /S /GoTo /D (group__avr__stdio_g5507d0e1bbfd387fbb2ffcfd8f5dca6f) >> +>> endobj +7264 0 obj << +/D [7262 0 R /XYZ 132.768 705.06 null] +>> endobj +7265 0 obj << +/D [7262 0 R /XYZ 161.315 211.075 null] +>> endobj +7266 0 obj << +/D [7262 0 R /XYZ 133.768 194.348 null] +>> endobj +7261 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7270 0 obj << +/Length 2443 +/Filter /FlateDecode +>> +stream +xÚ•YÝÛ6ß¿Âo'kU"õÙ·æÒæR\‘»d‹Ã!-Z¦×DeÉ•änÝ¿þ拲äUvqO"‡Crf8œù ­WÑêÝÝ›‡»o~PÙª Ë >ûU¬u˜gÅ*+Ó0+ãÕÃnõ9P*ÔÅzGQüÜ»æq½Qi Ë~0ÍÎt;î½ÿÀß½©\íg{˜š%qh•¯}øñîû‡»ßïb ZÅ“ã°ŒÒUu¼ûük´ÚÁà«(Ôe±z"ÖãJ'ÀãÄzõéîßwÑLhI4•NY”WgEÐÙ£q éÝ£©º¶çvuî‡öèþÎÁOA¥ð{j»[y* É52ùÜ[¡íÛîf¼M’¼ˆ¸óÏ¿¿EC€ð›´NEÀ]çÖ* þXÇi`»uš!²ÝLÒ*ŒËtr8¡µÐaG…™:3K‡s8[YðK©ϲȃí«Îm­ ñýtÞÖ®b¢kÛí×q˜J†Ûý Ý¢*OXwT©f¯ý†ÅyÉ¥qM3`+ŸoÜËhËc¼3FK#÷"jÕ6C×Öµ·ëFGYð¯uœ·`¸ †©söç¦\ÛȦ³L7kd žqµÙÖv`á,Á¿gjò$•”×Ë2„@§–[Éfëf:¶;{/eô‰Ôö ä`×u¡q]÷o¨aÏ|[”ùÜ_˜‡×÷‹â°Ÿ\[Ó­“(¸_Ò…\n¼Lë¬ +‰ߧΠ¢`ÛHc{ñ¤}×çü~¥%³x¿'1ò0S ‹ñ^³˜TÆ#ÑqÁgC42OËÔÛã)í­xìu”éèªÈ5=¤¿ÿpÏmƒ!; -ö–î;îÉ„ª=9àšu¶²ž3c-8"”Ù|ÿ2Å(:œ{û%J£Ÿ„îSË<'ŒAÔD+ BÀDFG’g±¼@!Ùà‹²¡—OÄ#úÎ ÆÏý†O +@9|á¹›é\Ÿ>~÷·FÉ¡múÞvƒÝy#uµ8L‡S×¢<¸ÅO ð•Ç;°«eφdîŽî*L\Ößdv±SçŽp)¯ú÷‹nöƒs×—u–x!Ô{¡U–H4ÈôÐ8Äw†`:SØ»2»ô0 ÎÓó(]\»–¨)³á´ìŠqpš°neaJ9 š÷—㶅€í5Á€——œU®'A:èýÁÚ»õúóTJlH=zšçazŠ“@ÆIèR +`fnL”^¸®ñ¡®“°³Ö—R^2OyÉMÊ«S^ÆE2Ozã.}}†FÂñT[t'Ã.ƒƒ+|”EÂWÒò\3|RLsï?Ó}æ¨ùrâ¿õÌ\ÍöD÷?¦XTb¤·ÁΩ³à›ûV"Ëc}¶Œvprçªßznó „† Z¿ \ŽRœëNÄŸd^…Ëüo4Øp!§.Ú+É=„JFä”äWvÊ×ؘEGàðÇe†ÁT’çµ÷& kpøž,äíÓ ožªÄ¬%ìeaÒf‡FÏ4;ñLðUÄ­ X»GA®ßÝ­>‹çÒd(ad` +ëÎr‚DÉUµžºj¦Eê=UœúËé\÷ö‹Å¸ŠqtÑÅ€Å#®»=f§L©Ýhý(´:S9ÓÅb·8Z +õ0ü=¢<¶Ùˆ“+*êsÔ‰$Þè"³†”C +øäDHDÁŽ ­©~Ö—H’š€äS‰°^ø+Œ±¸M1GWØo¬Å(K«¶2y1¯XF X®“àéàߥ¨0R,kôýi +¹÷àÓORLB{n2ˆŽÎ箪 Ö\ìt˜ÆZÓž{®$8™Î7KòÛÃìsŸŠÔè(™ù¹¥T_¥g¤Û†>Ñ-[RFÁV\ +“ +´ŸÜpGóNs<é6ƒ;^Ý Ä{¤ Ëp¢‡–ãk¹ÉŠ°Ôê&SO½÷ÙCùÝ:î=9J¼Z½†]ê ØRc™6Î?7ùpÎhiÁ!(dÈ–¦—=,ïèæ«123·¹h€(Ì]#l!pžr'šA†ÚÐýEô‹1„Ðpžx$”Ì]?g‡Å¯ÄvHÈ®aŠÄ4/å$µG¥ dÆP[Tc–±âWdX°\F¥¥/áøàzÔ|¥Øzê±Ó¸-—\ >1ôRÁ1 á+y~ T åqVÞFÖö<ð¢/ÅÖ8¥´]+¡çë8)C 3ÓÖoãš×w‰°}½}‰ j—‰ºv.<°kùÛ´ƒ·fÝÒëŒ.ÄÂ…÷õâZÁC{vì÷©°s9©ÓdãTr9'¾ª†În|\µè­oÂóËQpãD2OYâóa‰£¤yúâ¹Æ+µt®è¯¯dL/Ÿ*ˆ«ìvqÉxªÆXßÖü¯ì AVÇÊ/9t¦é÷.”Íã{µRÞÈÊ3¸Èï]êú ± dš†*zfÁ'ã†///`xå~®ŸèeOŸÊC;uSïâ@Ëß­…h-’Òž\y±Oæ¿âlnfÌþJq}ášs{î)Ì+($ayv2å륖^F`Ø—ÛÈZBƯ<ä„,Ï@ñ[ +JÀ2Úoc<Ç`'³ +N•*÷o6y`¡Œ_âc›J|_2ãsàæºÌåér²R¼Aëÿüé¿Ì hTaÁm©Öšn<*D”<䪎^­£}Ÿ<ãl½o +4`Ú~,íÄnãÓ±i&Ñä¶zÿáõºü¹'k H§¸õd|†{Á‡‹,L“ñŽ_ßìz~Ä_3ù3Y‹Ü¿ÞAË¿ÞAÓ¿ÞE¥.¡'ÒF|:.Ã4Oë¥ä*ÃX…&Ao?[ÍÐÇÃP8I +'Éu±˜‡3MKÅ8aÊpuìyWÁveJ%´îâãÕÕyÿ2¸ØÁf¾Tö¥Ú©ëÜ{„੾þK¾¶©/Lb<„-®»‹q>·í„ÿIžÿp wôrìlm.¾Fì!>!³À,ÁûI¹ß¼*´†ÔHré¯%ÐøxUlZáì ™Iaõ$pօŸfܤ‡¸†‘rªmfã⯑²sýÿüñÿu²°Ìu1ý!iKgbw¶AŒëï«¿Þ‡37ÞÚŠ âè[¥¿ î©(’=¶ú‡]CµQ·†¢hS»måsš,Ùþyy´ÏTþø( +endstream +endobj +7269 0 obj << +/Type /Page +/Contents 7270 0 R +/Resources 7268 0 R +/MediaBox [0 0 612 792] +/Parent 7276 0 R +/Annots [ 7267 0 R ] +>> endobj +7267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.645 395.415 249.334 404.262] +/A << /S /GoTo /D (group__stdiodemo_stdiodemo_defines) >> +>> endobj +7271 0 obj << +/D [7269 0 R /XYZ 132.768 705.06 null] +>> endobj +7272 0 obj << +/D [7269 0 R /XYZ 159.103 645.28 null] +>> endobj +7273 0 obj << +/D [7269 0 R /XYZ 133.768 630.61 null] +>> endobj +7274 0 obj << +/D [7269 0 R /XYZ 191.601 482.195 null] +>> endobj +7275 0 obj << +/D [7269 0 R /XYZ 133.768 467.526 null] +>> endobj +7268 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7283 0 obj << +/Length 2752 +/Filter /FlateDecode +>> +stream +xÚ•YY“ã¶~Ÿ_¡òK¨ªC<÷m³WìŠ+É®œ<Ø®-ˆ„FôR¤L‚3žüút£<$ÎÖúa†@ãênôñ5l6ÁæÃÝßöw}&›ÜÏøì!¥Ÿ&Ù&Éc?ÉÅf_n~öÂЗÙv'‚ ð~ê«æa» ãÀ3'MÞ¨¦T]I½ïÿIߣ*ªº2•îai‰Ä“a¶ýuÿÃÝ»ýÝïw86bv¢ðó Þ统 6% þ° |™g›';õ¼‘L¸°Þ|ºû÷]°#X#NýPÆ$†åW†±wi·ðÿIwÔí‡Ë¥~ÆvâuUÏ“Luæ–ê¸qÖæZQä©z+ï ÿ©çžF U×V7¸ÏxVß Ís»T (EÕÕÿ”©Ú†h];˜ªÑ¨h'@1s­ LVÉ.Øžnú¡Û·§>³Š¶1][×V6d±ªkj4M­ê+ú|iHÍxŠÑþvåÂÛŸªž¨Ç¡)˜YØAÕ}KôË`x2°Â|ÕÝ­øžŸ¤Hj©í•¡æ¹-yø— žNUq¢®U];Ô%v3¯iyÁ§—mÃ-5˜ö *ÅkxfÒÑX=`“>Ó͇·Vxît¯ °!|½ò˜+C_äñÌ3|éÇìuQú'^6·Ç4óƒ(…Õv)6 ²™bà ÷J]Ô`&z4cb©½b çžZ˜òÜÐZ†íûá|á0"Ä.{ZˆÓžõ‰Xd¢gM&fןC£™žýñìÔOˆÎ~C7 F.ÓI" @ P54`³N`µ.‰h|‰]^(ƒAœ“ á ¸&/´ù¾pð¶;ÓpÑEõK„ïÎ&µ¢¯¶™r¾ iŸHo†®ƒø\;Ãb(Ô1:©®´MјÚÞ£!æŠÑA4!-D6ì˜Ó+ˆ!0ÊãÕÏSH üV,L( mj¤l$¢e6JÇdÔÐ)g"?Ï®',òYìçé˜ý9™ÂñÖÌà\£Èc"+&+îWM ¨†íúÖÒaܺ6“¬½m + ¸‘@…ð¶˜'œßÚœ–=¦ùµ§J“^e!^nÝ"ü£þ¥í+ÎÃ0m¸¸d}q%h “µ@”ú‡¡ÞtœÀr`—VôùŽïöÃÛûŽÆ­ÝŽkAÖúPÈø7NCº“CD¹`žàúžAÑ4”b§JÚdaA8mn©!Û'|;€)çl\Ò´¡1UMCg8j•Ñ™ó‡Q¾Ž°‚NGŠ ¬…DxŸaÚ3Qèb  –akÁ臵Šµâh³ÉÿëxÏBÙäÍD¢MÖ„G´ŽUöÑ­¸§ B'Ç®šüÕ–ÑXVïÒQ®©JWǨq š ßTVZ)À#½éÔ¬yr±E@¤JGX qæ¸Æëh/à +e±qÐôeífœÀ3­oQ#§½„4— úŒAÓM·‰$ ý@N‰$;‹à,{{jÇÅõKCå ÈÛ1n¼´Uëé:fKëE¡LyBDP¾åÑ2Q\<Í ¸Œ_ðÖcdäBÌëè‰fñ”düCä"2",_Etg –ö¤HíQo†ƒa¢½u ¢r§k®ûUÀÐ6;¸È拵ˆj+Λ¶­¬†Ðø#‡ª™çSu@ÓìÃ6ª¦è´êǽ0ÍÙ=ç°/Ï9„àÈz¨E(l4#ÍZÍÒ®;ÀÝÓûŪ‰bÙæLÛ_3ÑÐOE<7ÑË`ã¯X)˜ukºéé,€,"óô<&1¾ƒÖY¹;³5(Sç…g<ží 3‘~”\¿°‘Ž€\š‚÷£ f M©»ú™¬1‰³˜Ô~Ó…Y XtÌ,#ºJ–@ÔxF—WáB›¡ã`¸jÖÕ±ýP@>î_ˆ$T¿$s€žÃ¾<È"Å^­l®ÒÐòÃ}-/@¸*Ì–µ=t{B¾—ò™{Ș½ú^Q·…²I)±ÛX½Ô}ÜÚ‡ýʆ•Û`æ~˜fcIW¶ÜF‚HøY4ZµOqéû#Á)j)œ\ +ãV‹@khŒ„§dF—#Œ)1C"hyf‰´áð +þ®€ Ýàí…¨@á°”S…é=ŸZ¶ +\飑àt^ͯ™ÒBñ 5‚JáuO}ÛòÕ_­™° P1Íεôµêh‹^J:ì7‚¡»È&¸K]ûÀw{»"„ë•Ñ7\oäSòë ÝžÛY!’%‘„CñâêÝpÁl].Ù¦ +ž.1•~å×—h­\^?×å3?¸9š`ûÔž-¹{ ΰ.·?!QGñj~ÓD +¡êx“A潦bJm®ðÙa‚+k¨s? +ŽÈÚEšÅÆ€¿úÃ`žù©ü3? º_5?Oe6ÿ90Ëo3£t£;5†Cñ Pã­.¨ÑG¯BùJdÔ ƒ€[ö½åŸJ”źÝðà®®¼Ã+ˆ·íÏdhs‘ÿÄÕ¯ +endstream +endobj +7282 0 obj << +/Type /Page +/Contents 7283 0 R +/Resources 7281 0 R +/MediaBox [0 0 612 792] +/Parent 7276 0 R +/Annots [ 7277 0 R 7278 0 R ] +>> endobj +7277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.431 232.271 230.199 243.175] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +7278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.537 232.271 350.103 243.175] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +7284 0 obj << +/D [7282 0 R /XYZ 132.768 705.06 null] +>> endobj +7285 0 obj << +/D [7282 0 R /XYZ 158.386 621.37 null] +>> endobj +7286 0 obj << +/D [7282 0 R /XYZ 133.768 605.016 null] +>> endobj +7287 0 obj << +/D [7282 0 R /XYZ 219.686 577.22 null] +>> endobj +7288 0 obj << +/D [7282 0 R /XYZ 133.768 560.866 null] +>> endobj +7281 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7293 0 obj << +/Length 2817 +/Filter /FlateDecode +>> +stream +xÚ½Yß“œ¸~ß¿bê^ÂTy0B Àoëõø’\.ëÝä*öÅ¥Íw Ìðzýק[-1Àâõú.•‡)¤FHÝ­OÝŸz‚ÕÍ*X½>{~uöôU(V™Ÿ x\íVŒs?éJd±/2¶º*Vï¼0ôyºÞ° ¼ë®¬oÖ›0<½WÔè´¬ ÙÔ{ówzîd^V¥.UŸŠˆ ‡Ùúç«ïÏ^^ývÆ@ƒ`ÅF+2? âU~8{÷s°*àå÷«ÀçYºº5C+ÁP†V«·gÿ8 &fKfĉò˜Ì¸2ú¦™‡&T¦¢îºÌI¾ëë\—M½)k­ÚZV4äã:Œ=Ù–r þO_q>^+á~ z˜5êêC§TMÃ&*E螺q·kxMûkgWnZZKïK+:öí±é”¿ÞD¡ðÞìèý¡¯68ùj²Ô‡ßjÃÀo±5Q—Gc˜àÞ_/^àL"òº}ÓWI·ŠdyS붩*eå½ÝVx¥×ÌÛÛa<Øé:¥IÔìHP´%úåãšÅžjés`÷û¬‘ö+²wP£n´±"˜ªï¼‚JÊ®C£y pãñ1r°Y°»ƒr¹eõŽÒ8,Œ þpó `2ß.6æ@ÀPœà³HŒ…)Ú’Š^¶Úß/é +©5øc¿­L®fÛ ˆîL0…z! am$”V™£*Aæ]¾…Ð’ðzÞùåZÞ•ašÓà5)†i7ßÓª¤¸D»eõ›mÖÃ…]"[G¾3/.û)§Güªµ ‹’Nyõ»¥Ž;SåÃÀ×9%ü¨0X.æN»€¤¨TV©ý!Ú$¾#²ã×L\ÈHÒ“ï@èæNl4…gUÖj³Å©ûÎg´ /ËÚMå“­òt]œF§e2o›%¬Ç) Èaáò§ϯ_½}óï—Ëñ(æ×*L¾½,s‚ãè‹dÆœ }7çµågÛ2I̼’Ö£SC×q¼ÿ`÷é÷ùîC?ù&Ò3È‚è°ƒªµíc,Ág§‹²ÙäÍálÖ¤Þ˜ñaÃpÄœ®¡Ì’>;šž¸æ|ÍxìýóòOh%, ”|Dù±7=I(Á‡g™wývò +Á€OÙÝÕù¾mjõPÒU+ ¦Ø=4x¢ci,•Ÿ7zX‰@úiCgYÒžn§60Å6rG|ÞªªšJFdž3æ m¾w +Ù‘Ï#6†}Pô,ð.Æ“ +/P-)€ ØXéÀœqhŒA¬²ˆî´;¥‰™Á{‚%4F·èÕ&<ßâé# Á_N ü¦’–Ò}ägi80£Ïâ!ÃâUC[è,ŸtJ!A[Õ{¤‹ÅÆP …76p²4ƒH3ݸVé¾­ŸK(j)eë„ð³(}´qí±ŸÌïrÏdÂ+¥ÔO…˜ÆÔJÂ$• ¿¤_Œ™óWÕ«¥žÑ`Õ,¾Pܪ\2AAÒ]Û¨EƒøP-@CVßD’Qñ„[ìÑP„Š‰Nfwõ'çÄ4žF¾Qд<¤UϦDˆA´â°àÄçÌž™÷aÏèöÄ…)d¬ôÑÜ.¸Hd#[™ÿj)Àè%9Õð€¥"¸Ï£Ç‡X–$ :'‰B>V¢P—ÓÚÔŸs´f7]ÅbœÎ&®…­Ú#¯™Ÿ2ñeçò„ÕøÓà\î fþŸE¦HðhT +Û¶Ò´¹~B²ó·oÞPó‡5äòó¿|ÍD@L9á§1°™±œ«ØÚš|«­âQ¶ +W´Ú„¡˜Øú¯uš«èæì…!/¯ž[[A~²5´WW”ζ^9‹¡iËc¦@Ä·ÊCI§ ÞnïhŠÛ}i‹!«ì8@@ÏœE†ÿ?pÑÞÇÅå}\¼¸O˜€äQtîÞ²@p8(%þ‡þÉ€>{[B2SÆ=Aå ~ƒ]­Ú÷Ùß¿ o\KÂ8ûº£tÓ‰nZ’î•ÔM{rôm‰Äؘ¦Ë+@‹Ö_§ËæPDwQÒfE¸ß[¤>)¼áCE§8ô“pH„x1újÑ)1%þà>­†•,­†–¡ÕGþCUŽÝ\¨”UùÙ§` NefðlÕo}I< ¦Ó%²¸ç,ÀƨQ-Ú³rCÌ—†w’xã!Á-p’¥$À ¶@¼ Hc,ÑQ¶¥¾[‹˜ÐyMmçéts>#¾Ã¡© ç‹9ÕÓZ[šó¾†–¢Ò{ì¥?0P[“ЊØÛʾ VKÏØüÕ€u™›ž|ï®Ä®£º{uKšaäÛ…«S=$ö.~¼¶+V åo8š¸kªÎKE>£P{~3«¯ÃŸ–stzª@CÓŒª©» AãzͳÑNãû§N§´©îgàó¢Ïén7þ´AVf¯~–G†!DÑ°ÅÄ'œ#°ÿd^úÉN +¡ßÔ©@6¢ûTW$Ý'„Ì”Çxœv'^&‚€Ï zÒ.bËwªÕÒ'ù¾TS R‚-7µÝ +."¦/_n1[uலBQ)¯¯4  øÛŸ?Sÿòb œM—CÐÂ06`æU,â­p›8Úâ!gÙCq(å>;ýMgâÐ#JªÂOOWdino¥½Åì©Ì{ß—Ú:Ä’îy½-æ ˆ¶FfrM¾s7fë%³Â°‰É™ãYB… ’ dbZ-ÅŠE”yo4}FXùÐfZȲiä‹?\FÈø¤Š°´ŒÅÑ·æò{÷ùôݧÆzêVÖ]åÒBfIV†WO¸w£‹ÄÒq¨Zü‹;Ký„ËÜîÿùïrS¥™Ï…ÁkUãßåiWå½Ú[þBåÔˆèÁ‚g!ÆRê…A`[†Ë4íP#ÓÚ5O¼MUnó)xÑ|º»QõÜäÿ¯}Do +endstream +endobj +7292 0 obj << +/Type /Page +/Contents 7293 0 R +/Resources 7291 0 R +/MediaBox [0 0 612 792] +/Parent 7276 0 R +/Annots [ 7279 0 R 7280 0 R 7289 0 R 7290 0 R ] +>> endobj +7279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [293.545 570.396 391.179 581.3] +/A << /S /GoTo /D (group__avr__stdio_g793fcb8f10b6b8746d4186012929ddf1) >> +>> endobj +7280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.342 558.441 333.14 569.345] +/A << /S /GoTo /D (group__avr__stdio_gc04f5faa8e86a4ce4ae084d85386af40) >> +>> endobj +7289 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [143.014 514.34 164.652 525.244] +/A << /S /GoTo /D (group__stdiodemo_stdiodemo_lcd_h) >> +>> endobj +7290 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [296.167 181.545 333.856 192.449] +/A << /S /GoTo /D (group__stdiodemo_stdiodemo_defines) >> +>> endobj +7294 0 obj << +/D [7292 0 R /XYZ 132.768 705.06 null] +>> endobj +7295 0 obj << +/D [7292 0 R /XYZ 334.634 561.594 null] +>> endobj +7296 0 obj << +/D [7292 0 R /XYZ 133.768 544.916 null] +>> endobj +7297 0 obj << +/D [7292 0 R /XYZ 246.763 487.914 null] +>> endobj +7298 0 obj << +/D [7292 0 R /XYZ 133.768 473.293 null] +>> endobj +7291 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F33 2429 0 R /F14 2650 0 R /F13 5291 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7302 0 obj << +/Length 2652 +/Filter /FlateDecode +>> +stream +xÚ½YK“Û¸¾Ï¯Ð!U¡ªF@ðé›×3³åÍT6±åä°»å¢HHBL‘ AzfòëÓ(RC—7IU."  Ñèþú!¶:®ØêÇ›v7Û‡ ^e~ÃgwXq!ü$NWqùqÆW»rõ‹¾ÈÖÎóîŸós[Éõ&ˆ˜7hU©ÙŸìXÿ´æÌk6Oª[óÔ³£ªîewÈ Ûý•El÷÷÷ðá¸o‡žlýÛûÝÍ?o8°ÇV|Â÷3­ŠóÍ/¿±U “?­p•®ž éy%B 帰Z}¼ùë ›Ý‘-Ý1Jü@DtÇ"¯*s‘¦žêµ¬Ô~:ÉÚÒWK©±•y9r¼}àátwžú" àl³oM$BLHB?KùÁŒÃÌOÃȧ¼Ë ß:Š<½I‚ÐûiЖ™CÓ/¥<7µî»¼_sO55¶C×6ZêÛõ& óJ ,g™]ü.ËùË!?ájÃá©"+U|ç|(Õ5F0îíeU/‚‡ÞÛïÞ¿§ÑîI°s¹¯é*m¿¨vg zTâ@àí_hB˺¤—ƒNnÇúnê›…ûù"¯¬ûRvݵDä§qìÈn‘®r?øüªº±šÞÓ÷IUµöVéK¥Û*Aþ±‹O4³œÇww¾9€ÁΉ!í¼#‚s_©‚Ú‡¡.z|æ×wK‘»‘ç!ïúÏGÙ£Xñ9Œ __4aQâÂÖtZïX±-Yª¾q:)‚È{i;K“»¾˜·!ò8ñÃHXÆV«ðÍÍc'ðŒ@üu »æªÊ­ö$€"ô5ì`ƒØÁÖW \r ÕIöÑ&£0û¼OBŸ] ¶{nÄ0?ËFeÙ¬›~aà òÃl”ÿŸ?=>.m(üŒ…r{u7¸¼çžz3«HH»Œ,ƒ0ôÃôJÊu²ºÚiÜ¡kÎW:w-6ÒÜþÔ Vó¹x¡Î§uȼ·Ö1óv\Ï&.ê.)ErQŠÄ)J¿ñåjšÆU­U)ÇuÔpŠ÷ꥣ[œH/´ªn‰}XÖ4-µœ=&V8‰‡XÒÉÕW0ïáb3^b"MËZ’ºM’Œ6‘Næ%µ¬taŽ¡™¼’Ð0 +Ãy]aÛ5…ÔZÚò¢h:IJêe“]eÖ®w=Xuõ +0¥Õ±ÿ5î³t‰C—Ÿ-&€ñÐD#YPâ˜oñàá~A…98…x„нq°¡–½SgÐœþ¥Uè[ X p³ƒS$ çôŠ¸Ì+·Õíó:"ž™e0>ÚšƒpÝZÀ ç_ø†@aâ]›Ú‚’bŸ±tJräK9IJ÷§Øå¸r:{’UI­óPœˆ¤j꣱XŽWÌ-ec˜äsOã­ìTS:Ù +`f{³l´ý«&cHš­ù‚7Íaó+c Ú`hÂ7v)†[€Å0õ£dÔ€Ïw÷û|ÿóÂ@#ˆ§ ³”>íkÔ¾Îò¡i"Ã\[éSæ½i…^ƒ@ó@;‡z¬} €AšDW¶©œußÑúÙ·t;Š!Rov÷ó‡eÀ1SnÜñ¢ÜÍך6§Ò]Œæ ÒX}ø1DhsÑøð;DOšÌ<]0GâG² ‘ÏMV%²øâ¤Agœu- ¢à¨ƒdœ ­„AÄVÔÔ˜{mÓš*kç0wnJuxO×\÷T‹cŠåý }òàF‰Âpî"Ba}Lä}/Ï­‰ ±Û74¿·Ó⩳7õ¥©±T Öê_–¾9̦B@@«Úv–=OhBÕ-›d![« \˜¸!€Ð·“‡PW̺^L' Peeý¯bóÔç,|NÌX¨íiÄÈ +˜r˜Œ†%ô&ßâ“°à»ÉÏ%Øú·£á5Ý¢LÀ6£ÿ)ÚòZ$„7Yê‡"½ +ó¥¬Í«s+ Pjc~#ÀL8ø¨ïÇ—‚Å“p¡ê(ܘ ‘NjpQ²„æùÀÀ—hÀ¼žH/Ì‘ÖU]S®ÄFËg4ËŠ=¹¢£èD#ÈÈãèJ8•<ôfeb•:Œ)Åú ÓV´˜©ÈaŽìnBü*.…1‹¥8k©&XŠ‹›«Mò¶…|)§àtÌÞÛ³jKÞ ‡Z2Þè@ v²Y‰}ÙK¬ Yì€ÆÄðȲk,ÏÐú‡IÙ‘voWŸÐ|{>Ù7›J‡žÂ¤DF Óe¯dcöu®nrλ/è{'^Çú¤±~CÉÆ Â³ÞQ©ó\EÞËʆÿùq YíOrÈi4Æ0ˆòy]ÊF`A¶p´s)‡nSrµ ¢)å‚E0Lm|f³$˜–Ï–¯Ú9ð6ÆU]ÊnÁ$]–b9ýC ˆ¬ž·ä.·eSló¯Ý¦Rûb+©Þ¥·º/!:“çf»d¾ ÆÂÙUÀÎü𓉇²ÆØOùI–£¥è„“i&„©‰¦Â £4³ãÐåÖëÀ\ÓŽyøÎ&XòO5ahô ¼ûYßÒ¸‰vÂtÜ}йvœ$¨ -ÔÀW*gAWWÚòq1WÅí —@n2~úó¨ˆA¨ã(p›mÕ@f±e~’ij Èh*ñֲȬåøÕ“jŒV°øǤ ‰øOþöré{K w™üÝ•f¾ˆíÛþ(kÙåýõ_»Ó@;YP#¤goñ†§Ô ³-|:üɬLáÍÄNG-ºÞ5Ï/GY__ùß•_i +endstream +endobj +7301 0 obj << +/Type /Page +/Contents 7302 0 R +/Resources 7300 0 R +/MediaBox [0 0 612 792] +/Parent 7276 0 R +/Annots [ 7299 0 R ] +>> endobj +7299 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[0 1 1] +/Rect [132.772 201.061 481.464 210.959] +/Subtype/Link/A<> +>> endobj +7303 0 obj << +/D [7301 0 R /XYZ 132.768 705.06 null] +>> endobj +7304 0 obj << +/D [7301 0 R /XYZ 323.276 425.035 null] +>> endobj +1085 0 obj << +/D [7301 0 R /XYZ 133.768 408.308 null] +>> endobj +7041 0 obj << +/D [7301 0 R /XYZ 133.768 320.5 null] +>> endobj +1089 0 obj << +/D [7301 0 R /XYZ 133.768 305.93 null] +>> endobj +7305 0 obj << +/D [7301 0 R /XYZ 480.468 203.592 null] +>> endobj +1093 0 obj << +/D [7301 0 R /XYZ 133.768 187.487 null] +>> endobj +7300 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7308 0 obj << +/Length 2746 +/Filter /FlateDecode +>> +stream +xÚ¥Ërä¶ñ®¯˜råÀ©Ú¡‚¯qN¶wí²ËNœ]9>Ø>pHHƒ,IŒù°¤¿O¿À!µTœTNF£ß F»‡]´ûææË»›Û¯ãlw |îîwJë0ÏŠ]vLÃì¨vwõî— ŽC}ÜTEÁ»§²½4fˆÓ(˜Û=ðp< l|Ü«(p‡GÛïUÔv£éïËJ¦¿Fit÷ó·ðQH·È’@kµÿíî»›ww7¿ß(`/Ú©;*Yà[66®úÈÃûÞ¶¸ü}2]µWið¼ÏÒà ƒ)<à'>A3_¦ž½øx Ç0’êÞîã4ø‰™~`à£õËš'!æQ°WÖ¦ý$iŠúé§ôƒ{×·SS +UÜkGS­Ë±Ά.Av^Êèlš Ó˜jüÔÄ$™~f±Ðkè~¶2À†N5¨5˜‚yX Ð3°¬F–‚Uò´-‡Ñã +ñK*„ÅÓ>F×d(zšYd± +Lˆ*É„JZ"ÛÙ‘Nj}Ù ÷¦G•]®Ɉ܆¦ÄãY ؇,\ODˆëÑãt{6ƒN†% à +ìm‘À~ã³;¸œ>æ숄è¯;úÔŒöàÅÆ´/å©1o¶.QvõJÜà0£­&4`׳òxÝbHlM7–£uÝJŸ:¼*x­H'ß"¤­£lïñdÐ ¶i¶àçštV¬M,ÎŽâ8¨kˆc‹–„¥zDœüp²ã +'¨Íʹ¾¶ØŒP åÀâgÛØËÀqÞŒqKÎDS‰ÇÀà×(Š—~y~ze¥¼gÍ]±ÁïÜa¶€cÙ˾ÊuµE] (’XŒ¾ÿð%Ü=Ó^EFkïo‘éÛ¯U²È:ÊÂ"Šá*t…_#1Ö*Çäaž=ÎÏûcŒÑh G†£DÈ$LSµ– +^GG°3¸t à98‰˜Nt‡Ao î²…¢Á¼ +áuû j‡5zoÊšGNÈ?öv”0ÊhêÉNVçwäÚOk{Ìø&œ ª†Œ2K¦ÌÉvðN§wa_BØ(kçulÁ<±²qø’†*Fªbñ‚Å1BÖÄÜ`zÙ0×j™eÈêR1}Šú´F,*“Bò6e™„uªc²(°ÂXJ¬;Ÿ? BŠË¢ëBYÔý RΆáå8 }UäŠ$øb¯+-ñö°OÉË -GT5Un$`i˜.¨%^?¹ñŒ& –¬¹‹éKqÂOg ÁÊBB[r–<!LE†Šn]7@8a'[p¨ùGžd¨}á:À½uüó=ÏZ[õbÃØ;=9"ŠÌ§–=H= +Žó›•Ï"øljD$ +>¢DÍedè`E‹IDõ #¢K$¼* 'W…O•€¿Ëàad¼‰W€0p ·¤:–ÍDz‹aQ{ƒÐ/Šš×—i°Æe`C¡ ž'.sº7|k‡U*¢Ò=%^ZW3±<`k³ã¼ùCøž°Y˜ÑÒ>Ðj!´~åâ~Å‚Ëçàž{ÑhV^ñŸ³`y… (ÿ&à \\ƒ`Á7 +ÛKÒÀíßîd7òÛO¤xLvô•JßÞ3ÔnN>úZˆã„í;~3/+€ÅØ^ÆbÊ1ûíÔ¡DØ4aí 푱•ïg§²úøл©«?£<•‰Š„ĵŒ+šO%x’^‹ ¶¼TLª0?ΕYœ|ÅHÀö¢ùÏCÁyzÚH¡*£Âc ô5H­«0ŠóµùŸ)@ 2äVp÷ê ÒéŠaƒ™ÒK†)‰ÿ3/p¢šQDʼn¨}Ã0ö©@Ò$LÒù&‘Ú #í1ÞlÐHÂì˜Ï$âWHÄÿ=‰äÿç¢øs`v˜[7H©4T3¢ÊþŒ”´2 âdz­Î,vNµøT´å” G2È· ƒ|í?>8îR•8~Wó³’Î}ÉK`Kì0æ0){ʦuƒ¤±²‡ Ó—ýAó ª+]v¼ +v¹’VzÎ\*Ì:çJŸ5Ëͧ‘¥c+³ê†Žz—FAT|`)TóµI̯V°ŽÕ¥ƒ$Va<ðÕv&B'–ÆØ\©S'ÐuÝ`ýÊêyºq/ý²4%€£ø´*A—› OýKùO± ¸Óf‚øi˜ ».³ÝxÍv\9fX™œÀ $óñ{ Ú‰lP2ìv’gkI§­óÔV—s"mñ)y³-Àû •P»•íÙ8´Ž|ÒþŠ{oK¦‡NnGayb°ä8»VãZ«µÝèhAÚùWŽçëæ÷Rö¢ã¸Ká‰<¥MízÛ‚ýû6ú›kxØ£ϼžªØ{ÎÈ«’¢tñ›OˆYÁÅ‚œŸ3Ññ|»aOs¼Nê€9¤,Ž¯Û-ć³7·÷ÅÆT\àR¡ï<3žÜ ‡|/ÄYøŠ» ü²áâÊÍò²#·??éßèÀÔP¸ÑWmú–ª¢”¸ б¿UÆwû€ßÚ‡óÈCÊs¹Ô¿€Íý]®Eb¾“„Ú¬#—"¤eÝ“¿(:òÕãÝæ»/?-ÊÓØNµÒ÷£òÀ–ÿÊý ªBGIð@_|xûþ‹xË_ñ·…­ý3½aéÙ°´âkh./I½¼©yÇÁâ¯3 §*{ªUÖ±‰™Âe×áóÚÃÔûn€êZ| —.ýõwŠtùN¡_¾S|p½Iø¿;_A“÷úÓDr\¾MP žz¿µr¾ôö¯)B®äÃ_NöË\Ké5ñåóú_.½¹·O·„s[»ê¶ü£?4öTÝÊcÊp ÖÞ<úoXmð¬Uj]Þà£CWa}Yå-9‹w®'„±£š‹Îäã†ò`ŸÈB~…»î€þSGGòá Ãé9,)fꓤ"ZŒ¬r–(üC5þ•óÓ6ÿ΋0×ÿË¿9ÿß1 ¹.–ÿä +0¯LtøéŒ÷‡T^AðUì<ñà­©xðGEŸÇúsUð,Ž"Qø!ɤøºÎßïÁÉÖxoÝÓóƒé^^ùß%©” +endstream +endobj +7307 0 obj << +/Type /Page +/Contents 7308 0 R +/Resources 7306 0 R +/MediaBox [0 0 612 792] +/Parent 7276 0 R +>> endobj +7309 0 obj << +/D [7307 0 R /XYZ 132.768 705.06 null] +>> endobj +7310 0 obj << +/D [7307 0 R /XYZ 236.243 520.059 null] +>> endobj +1097 0 obj << +/D [7307 0 R /XYZ 133.768 503.332 null] +>> endobj +7311 0 obj << +/D [7307 0 R /XYZ 325.248 213.074 null] +>> endobj +1101 0 obj << +/D [7307 0 R /XYZ 133.768 196.347 null] +>> endobj +7306 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F55 3943 0 R /F36 2440 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7315 0 obj << +/Length 1750 +/Filter /FlateDecode +>> +stream +xÚ¥XYÜ6 ~Ÿ_aôÉd¼òmElºI =6äa[;cÄÇÄ’3;ýõ%Ez®x‹$}EJE~¤h gíçåìz9»z$Nîå Ë{ÇC/M2'Éc/É}gY:wnxa>_øB÷æA6ÛZÍA,ÜAWíšH³ažÙÍ}áv‹]ÕÏýÌenÕÕßË‚§D,–ïƒÁG½Y¹aÌ?._Ïn–³Ï3ÌŽbŽïå"vŠfv÷Q8%_;¬Êœ]Ú8aK}ÜX;ogÍÄéÃpêŽqêaLw¼tçƒ?ÄÉÚ ñ"Jí¢Ž—œ«^š+PÍUݲžPç^š&ãRÏ^w4ó"‹<:tAä Þîø½3ì¿;ÿãåîÓƒ„—牳ˆROˆˆö.m|’ÔÝ(YªžèBKk)¸î¨ ¼4NGKæ³0"ýšCsûòÒ¯©—FÙ¸g0U}ev•·¹0ôìœsü2á3ðntðѵFV­&ëu×ðYô‘¥ÂKµ•©ºqÝ}Ç×ÕûfÕÕUA3P¶À… ö…(‹ÚÈÖ€†Pø€sUUµ8wdŠ‰€õfàõ½šû±»®4€~ÇêE‡hÞva&²iŠ ‘¬=p[Ù¨Gl Uh¿87ü™iTM0)¥‘z£”¡©µê¡P[3æ¬dJÖ¼ƒDr#çp¿àFÝJ©–¨moí°Â’x»Êl&ÒD^œp±|ÿ÷T”í°ë›2#Hr/)P¢â¯2#ø±ÌÈ|·€¼ý„dàVšXätËi‰cªÆf° É‹¡–#Ò@Xv-ëZíi9(ïšmUÃÖH¸O€• Æeæ½Cé³Ûy"Ü%í_É¡$Y/Íd¸e[^T` I$Æ ‰»ÿÛ­ì™ ôâ<øÊ«áy5õ]Y–½Òš'ZWëÖúfä€ttAôüáÈ››?oѼ¡9¤«†„²Šà}¹'®/|A” Щ®a»UýxÐÀÔª2Ú›r£µ7Ìqm=÷ݺ›1@Ÿ7äšM¯ìaUSöÌj»¾Ú3›òö˪–«šIÞ¥ë³ÄB‘V ö“Ò€Ž(H0%Ïl€wS†wpKi㔇nÓõ–BàÉ–x„I`• +õ}© +^l}#y hÙ°Èì·ÌëX‹¤üšE+¼Æ€ö†"twÕ«3…°©0ƒ¬Y9ÜñÌþ„ñ{ÄG0æPŒÀU«"Rgö§œ¤„ ,Fë¡7Ûìƒq#ûÒ¶#6RÈѦ—Û-\Jr˜&î+ò1i¶9dhšâmÇÃ)¶-ÕT,£ybë-Q[ ™+–ªNÉ,öRr—ÄÕªVVšv- ©$ô¨}”ÇnFsB&é–|0Ýv-²ôtit‘w0r|Ð#Qxb«&1Ÿá£÷y¨ìiÀf FþDàeÄ8<“ ÙØBú‹ˆWÙ²†ç¯:t1Ç6ŒÆÿ/­¬bÿ +:òX_z†ô‚Ï­qhˆÅþ<„&>w +eJoq¢>vsVÐÑÔ÷.·ó^-¦Ì·Ž+’v ØqÄïõ¡ßŽ@ïI¥tà·:ßïèxw°e¸¾g%‚º,øÝíXÃsOýdÊdÝ]¼:7â >‡—é&?¶ƒáîŸÓýcé²´;×}7´%ºè[ž°É¾ úÞìz†X´)óhfV[øbßU-×øplÜ€hx áÝÝÛ‡gý €Èf¨Mµ­«CáAˆB¼ûø_BÍR5ªï»± ¡ 3¶ ´í* ™4;VHâæ‰ĸ.‰L3´U!¹4hüþ)?»™í›K¨»´Â'æ›WÿÐz¦j…Ö–SæÞ>gpèÌ“æh;”Ò·JÍêW໦6‰bXôˆ¼‹ ‡ÎXÿŸ®(þ±®ÈÏ:s˜R¦okþ¸ñ#xNç±»'©¤¡©Úªš,ß_ßEF=°f›X0Ú¾éM7Ô%ñV¼¦sðCJ1Þîv*ýжü^åäÃ<ƒÍö³Æòš®Tøq'p5jü±¯±ÞÃÒ†¶QÎ¥Žƒiè%´`Â*vŠD…lÛά!æ#o1÷# sqüÑšñcå¢5>¯I¾…>Ÿ,l±YÕæ±#Ãx~R›Ù(ê°¹k³Ñ °F¸±ÞüöðÏ%:ª¿Ð5³,Þ¤)œ¤Öõ]7ˆŒÓO$?v«ÅnæyºÙ%Y¨”ì=ž«ö’à4¶ÅPu-ŽtàgÇÞ–L=¿ò—­,ý`ÚÒ8YîÆá2ršÓU] •íý63ð>㬜=Çüù•ÜÕ³Oa Y4œè‘' ~W*vèRä^º +{[[Á[6#3Æ”æ4cJË[1ƒxîêªA–1!ÚÕE¿ƒ+o~ˆ’eñ€Ú¡c`6­˜éFÿ,ÌÀfÂóÓ- +ž«‰Þ’äO(þTmY±œµ‘Ïsgº‹e æúÉ›dI qq¬Ï7åÙÐvd€]¬ÂäÝ%!Ä.ÎS>¾>HóýìIœÇ8…üM’Ì×C˜ôßÂÔ5äYJßÔâ jp’y[5¦çL ‚2èÐTƒL+íŠÁóC˜Å‰?EÄx"8¢ë;¬(¬jš‡*»Ó³EG„¯ø¹€šU1ÖÆñ»0…6Ç/•$àøflÉy¬T/9•0OåTÿéa3}o¯òïŽLR´Èe+ðqüðÝ{ÐRÇ9EêÛ–ix7^.°H’QRÀô‹m1ŽèVÜtâ/¸¨ÃôºÚ2äÛƒß +¼Ã~ˆ>hÎ]ÜТƒ^e@y¸ZM¤kI•t-@´Ö–„¥@s ’z˜¢UjZ +ó{ë"ú±?Õó¦…î¼ ,?ï`h@êYøÓîÖ¤ #B¹¢¶†!ùu%|Ó4Œ¢½;ÈìAªÕ]|Æoû &<‡Óñàð#þ¯¶®>£ó„Á ©f2:<œä¦FöÏ#u£ƒûèk@ÅÎÙA‡eÉ­Ò˪¥¡"˜¥ž¨å²šÞS…•2#)E@ùN ·`fp£ìYz€.·j-Õî¶1…𙞿}×µ·3ÞNxØjˆ9»ó©ôxWó–Á4urƒiŠ¹«½Vu½(Åÿ[L +Â}Ì¿¶@þ&†X¶)Ü€1‹ UlT°ÜMI-ÏÅ<×lZ‚|ßãø-— ^E- LsêaV® "æNÚ(rö +q÷¥ö3xMö뙦ʡ 0°ßósgÙ$W† ïï_Œ4ƒ¨E”ÌœlŒy ÊL~+ #€ÅÀ”ø¨ÒÐ)ø»×ƒ¨¯†‘@† %ò}Y>…Å!h;è®ÁŒìíœÌ«Sÿv ?x¹â·óÁf¾ Åœ«2é»a ÝðO‚ÊsN:¬ßöäBÓÛUðåÔf[²‡ðªO¤è€i’›ó+îÀ³òr,‚ÃÈû ùM#ÔP5mq<¯Ò…FöÌJŠq€rÓ+E ÙÜg©ØGìŠd 'Ô¸Cn 9Íx“ÅÙ’LïdXäàÔÉœÈê‘N5²€—z‡§Þ.“÷’,/û'SNÂv©Ä0ÃÉ„Ks2E\?€¯º O,s‰¸Eiy#éMåÄ„*:_~2'@tíKÇJezÙ,Ã’¼¹–ÜP_«9 yZ\·çl…öš~£ ä›ìæ˜Gn¹Ç é’i%‘.Yóƒ¸?»Ñ,™-#OÒNï[”äF5/Õ¤{ÂÖƒ/Õx +z~hQ¥Ø·óÀ!@ˆ7›±·!tKpuETŸßµ¹ºñeîß*9_«)°Šk…oÝŠ{ø©6Õú"A#¿µ´µyåßKr(C%Ül¼ztì²ìØÜøö.-§dtðä4½o +§ ›Êزè¯þ¤‰Oý5?hú0Ó0Ïôaùcí!u* +ü87õÔ +@Ï#ßÛ‚‰„?‘ú&ÖßDÅJ uB+ø ™Äm¡ +íê깘:a>²ûòúÂ=ÁRåÿ0c÷¤ +endstream +endobj +7318 0 obj << +/Type /Page +/Contents 7319 0 R +/Resources 7317 0 R +/MediaBox [0 0 612 792] +/Parent 7321 0 R +>> endobj +7320 0 obj << +/D [7318 0 R /XYZ 132.768 705.06 null] +>> endobj +7317 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7324 0 obj << +/Length 2090 +/Filter /FlateDecode +>> +stream +xÚ¥X_“Û6ßOáGy+õ?o{ɶ“6mï6žÙ›I27´DۚʢKÉÙÝ~ú(K^÷¦™>‘A@ŠÅn!?Üük}óú{™-Ê°Ì YoQ‡yV,²2 ³2Z¬ëŧ@Ê0.—«HÜ=©Ã±ÕË•LEpê›nGÝaÏ´áq‰À¬»ŒŠ€©M7h»U?‹T¬ÞC¡Ü"K‚8N–_Ö?ÞÜ­o~¿‰@=±ˆ&êDa)ÒEu¸ùôE,j˜üq!@«bñèX‹8Ö¶‹7ÿ¹|FñÎ*Ã<—‹,IqBgýÅ ¬ã§H|qy °\L–‹°,³Å*I´Œy±^Fið4¼Z®bYMâHµ^Ê4øÚTn}«–R_‘›Yšž¦vÆ™Iƒ¡vë¬îu««A×DG#ò à´"joV•j[ÏdõQ+^Ê4Q™n…ǃ£­"°nšÒêfhL‡ȃÇ}Sí©ëôƒ3–Q U7ð ÍîNÊQk{5ø“6xàSOe7Í`•ß¨›¶¥)«ªáí_©NÖjØûŠÚÕƒ‡‘CÉâìš…wMèôêà{ó @’ªk0pO4íÇ·(îQHÿÁKl˜qh¼ÈÇfØSÏjUS½M%óÒ‰¼ª¿þ>J&~÷ʤ„¹ƒ|± ®™·åažžçujÈ`tÆœ-’S¯qçR¸K’eDl£ÖØZ[š%.Ôþ÷“îýRg:èL=¹/ 8n#¼9™àýV[º +£E½­5fò{\—yå®G¬¡K÷sD#Žªú IáePO1aÅQ-áNââ%$D$-~¿×MRöá$ îîþ}¿LDðëÏ41û@¾~ ˜ÇÎ3-D¨ zà2/3–Úƒ±¼Q¥Û¶'¢Ú:3¹.5GËÛšï‡bõÌÚìGìˆiàƤˆ}Ä +P´„ðLÔVÏ ¦›¡§Î€‘ò^ˆË 8_ÛÆ©äÖZæs“ûf·ç•‡£®UWiVHu5¯7šuæ*D@x qç„\Ð*jY `Øp«:ÔÆ. \bSÏ<3pÛ¶ár•Q°v7 $G2èÌne³9q…>ó^9[BF`ì³½Z"bFÁÇwèb·LäÛ—Ké¡V|¸ýîþõ ÎÁÂzn©ùe§ vxûË5ÔÒeCçlÏ«á< +ìgìvêdsYÁ˱Ÿƒ«šŠ€9£4äØéæ3 šƒ}ˆ(¼z‹¦Ú¢J›=“¬Jùd‘¡?8짠‹2”2òèk—qø´JøË ³Sú\›¹\Ëiõ%°§e˜Fñý]ƉûN ®g»  ™ÛÀ» ÌL|¡Nà•ÏDg§[gök—¸påÑ´-y09×'Ë»;«vqw•9tW»’Br¨ŒÅdòöé‰h÷ý^ëaÊšû¬3- Mך?ô…¬ òa9â°ñµ‡K½T¦èîr1Rb|æ)Ãx,R_ž@â<èyNQsŸÎl@ßXC‘Á }RÌ6râxHbÓóJœqƒà¤ä¤¬è.¼4à¢.ù™Ã`Yp0À¸34nM·s^´#V‹®ö€âྤ)Ó±ŠÉÙcwQïÒ}BvÍÀôÖ˜#j•.t‰‰k¬ Àï©9¨öÚ ºÓaãÔË‹Àl±Åt¢©ìi|Pµ&v$’p Íªœ àèU«¬ƒ€œ ©æÂtà|!ë9a8ÒÁ,®ÊKÜu^Ñ\qm¡­5¾Ü詵z8ÙNׯhÈ–„Þ†k†üšÐ)å ÚŸoÿû¿÷ë»û¿W‹È0•ÑËZD~k-BÑ/á@-½^B^ +Ë„ô¨4ÖYø pèWéæ+Qb(9j}ØŠ4¼™–z°d¬PâYzì«$÷§ã±m4kÌKeðñí¢T­©~C³Ëiuά¿¢¸ s8Å f>àqYuÊl^‰ôÄFûCgL­È Êd.ÿÏœ@GÀÕ£mÔÀ<‡˜ô„ n)'#µ8OÒ:(ë]BŒåYÛ诫‡2«ÃC]uD9çiA/Guœ±H€™Ù™yikôHÏdjx¸ kÑùÙ@{ÐÜÒ Ìñrõqíü€d(Iç7ã0+ve.2B‘K(•^VžAÉäÊ‘®¬ð5%öÐÓ¢f|÷a†¨›J ü˜L(‚ÿRK?§® N餱ƒßúHrb¡ísdÊø¡â­æÈÝÉ2Kt%HE·}¯-edpÈ +íxï#Zqç¾p°y¦Ix(gEܶÐY?ÜÝ^;„s¡éƒkýðöžÁó0‰ÄÚçåß¿ÏÏ•âQþÁ›,þÖoªÔ3uÙ`MKú·²5ÕG”<‘nNÜqÞŸfì:ïn¨^ŠsGõòÏWçÖmgÓÑä…ŠdŽ“LÌËïLøzìқܞTèÉ’žûØ9§¥U Å;úõ¹°âÛu=¸Op¤4É‚w'ÿ.˜0¶ªçz ó>ÑƤ•jrVð/Q {õo‰TñÉ°7—îpï½ãœHwzt¸­±‡1•º"Î=ôYÎöd u.¢f’­kÝ7P'ü#wKæîæÛ«ÿ–eæñ·üZú_Ê,,sÜüü#[”aœ±ÐÞ€7…ñ‘¸?Q箨“P‰72~4’BpϽŠ|E£þ»ô¾j› Kð ñÎ<=ï¨ÌžùO–„Éy +endstream +endobj +7323 0 obj << +/Type /Page +/Contents 7324 0 R +/Resources 7322 0 R +/MediaBox [0 0 612 792] +/Parent 7321 0 R +>> endobj +7325 0 obj << +/D [7323 0 R /XYZ 132.768 705.06 null] +>> endobj +7322 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7331 0 obj << +/Length 1438 +/Filter /FlateDecode +>> +stream +xÚ¥WQsÛ6 ~÷¯Ð£t›UŠ’h)o]“öֵݚú®ioGK´Í›,©Äÿ~AÚrâõÖë‹ Š€>Ò,Ø,x3ûm9{ñš‹ ŒKÃr$i/Dˆ2E™Ë:¸ yÍyÎÂki$IŸÌ°¯Ì~ˆ’"Tn±«ö;Õit×Fó¤È³"LÓ<úº|;»YξÍØ“Éd$.YT»ÙÝWÔ°ø6`qZÁƒUÝiª 6Á§ÙÇ; œ] +<_Ä<Í)ð›ÇJõâ[,BÝÒh¶Š„JŽNêÖ46Ýè”å°Òf°©ü +_Š,”MCK«ˆ³p?:gƒlGY¡žû²Û{ýÐõjhÎÌíeÔ°Ó­4ªÆÂ@2󪻀W*& ÂNŽ`A²nµÑS»¡¹;‹Ñt=IU×Öc‰mÑ}±žñœÅe)°ˆEVÒ¾:ã6¼Kò¯O­§uvÆÙ"f,#ãσvAñ$4Ž>øpsó×m”±ðÏ÷4¯UÄóð^WŠõHßG½ë›*z‰’p+[š JÖà‚/@¯õ¦]k« *’†cµ0<š6øáB¥w]m½ä¤¸&³Ü…“…­Rµªãhž2î˃Ê[iHÁ%˜‡_ãƒ=t˜ô²ú'JX¨Ü\®]@ƒOï^þò™ÄQ5ª¢†AÚ¬ôñ€?ò0ž…/(|8êQ×j'\i$æè]ic©½°'\«Ú^ÅК­3C¼mö›øÁfÎÈ}§r[iœœÜ®ÜØv—pèQƒ½G瀰!âH3a‰Ýc»"µWLŸ; ƒä `D"wOŒc¿ó3&Á™²Ùõftžµ×‡F¸ú‡(Í×Èý¯þÀ|w<{cL’Š8¡Ü]wøÊ Tž©»öÜœVÛ9Á^æ;ËÔäG±Ã’ #¸m“h,æÐãK3a쇞šG¯6wyá½Æ‰ó[käÀû¿ÍÔ9É· + »àÃ{t48ÅÀË“Ó£Ûke¤n|…¯ÕX ºŸDÇžûq§t«Æ}ã«tè]†t1£½âýÌèùãç°H±à® KßA]ÖçwÕÅ?Te/Òù;åÿÿ‰¸\¤ÅôoTQÆ©?Û7ªÅûÒ£Û>Va\n÷î  »âéURÐŒ3æ¤5‚Ô[ZÄQºç^UçÜtÝ=6ª}šò¿$ ÎÀ +endstream +endobj +7330 0 obj << +/Type /Page +/Contents 7331 0 R +/Resources 7329 0 R +/MediaBox [0 0 612 792] +/Parent 7321 0 R +/Annots [ 7326 0 R 7327 0 R 7328 0 R ] +>> endobj +7326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.176 271.304 251.286 282.208] +/A << /S /GoTo /D (group__avr__stdlib_g7486ea9a8a90ac6b93bed37d08ebbd9e) >> +>> endobj +7327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 216.445 190.396 227.349] +/A << /S /GoTo /D (structdiv__t_0b9dda2884048daa68ca4aaa12b17b9a) >> +>> endobj +7328 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 205.551 188.174 214.397] +/A << /S /GoTo /D (structdiv__t_c64389de252de53eda8b4f8dbb7c623f) >> +>> endobj +7332 0 obj << +/D [7330 0 R /XYZ 132.768 705.06 null] +>> endobj +1105 0 obj << +/D [7330 0 R /XYZ 133.768 374.529 null] +>> endobj +3670 0 obj << +/D [7330 0 R /XYZ 133.768 342.601 null] +>> endobj +1109 0 obj << +/D [7330 0 R /XYZ 133.768 342.601 null] +>> endobj +1113 0 obj << +/D [7330 0 R /XYZ 133.768 314.895 null] +>> endobj +7333 0 obj << +/D [7330 0 R /XYZ 133.768 235.419 null] +>> endobj +1117 0 obj << +/D [7330 0 R /XYZ 133.768 191.977 null] +>> endobj +7334 0 obj << +/D [7330 0 R /XYZ 133.768 167.608 null] +>> endobj +7335 0 obj << +/D [7330 0 R /XYZ 133.768 167.608 null] +>> endobj +7336 0 obj << +/D [7330 0 R /XYZ 192.199 132.478 null] +>> endobj +7329 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7345 0 obj << +/Length 690 +/Filter /FlateDecode +>> +stream +xÚÝUËn£0Ýó–f‹xüÀg9Ê´RwmÙ¥UEÁI´@úøû±±M€>gÚÕ,"¸ÏsνF` 8õ~%ÞÏ€‚«G²˜RñpÁ $9Xû„B,0BÈ/ó"Àȸé‚aÈ¿ìšCfÏr#›Ç¾¬2©^!*ˆO)®“3ïwâÝ{XeE²`(ÙÞ[_#«gA*bðØ›î •)ÖŽ%¸ôÎ=ôqé,‚„²¡t ÉP~QÙZ‡6–KSò^W©"¢QD8‚œ„&V²“®Ñ}ZT¹j–1jÇ7Mó:;ìeÕ¥]QWæÕ¦nÌ¡Û­9µ#ua©ý°••lÒNæÖµ©÷ÎWºheY„ùEµ5¯®"¥\ö°;¸æ0¤(È„çŠ6±2ì4[KÓ…ò[/Òæeq„ȇ»‰GÏV,2F4d —‡†ÇÑôcèàS:Hi(ŽQ!¶qW²K‹Òá´’mÖw=æ¯Ò:Žs!ÛCiKèžï䌥͡Ê\ ×ÒVº/EÂÃbHýðüµQÉË~¨êÀ±±J»Ô¤<)d™·sœÇ- lÈù[lZîÊZ ãÝâïu7Ó eM¹ø«)3`SÝû9ÊfHO°N‰ew2Svú^(㨾º%7ö®éOÎü¹2/TÒOiÓ“wÓ¼uØÿ¶uÂoÞ:šq>Û:A- á R¾¡œùúÒBRL'¤pQÚ¶²éTvBKùoKKEüÜÒš{®¤F¸’߶~ä6âû“kŸï3½çd€™ÿt×ȶU5¿Øz¯Þø"†ý›ûÞÝóŠˆÆã{>ºO§Šu¢Ov‡mf¡y`´$t‰có dO­i7)i¿Ñ›€FþBéÐF¸}vZzzVƒ2oùL«C\ +endstream +endobj +7344 0 obj << +/Type /Page +/Contents 7345 0 R +/Resources 7343 0 R +/MediaBox [0 0 612 792] +/Parent 7321 0 R +/Annots [ 7337 0 R 7338 0 R 7339 0 R 7340 0 R 7341 0 R 7342 0 R ] +>> endobj +7337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 595.296 188.891 604.143] +/A << /S /GoTo /D (stdlib_8h) >> +>> endobj +7338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.176 510.354 254.056 521.258] +/A << /S /GoTo /D (group__avr__stdlib_g5b688b463f9faaa82f31ac7587e06849) >> +>> endobj +7339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 455.494 197.589 466.398] +/A << /S /GoTo /D (structldiv__t_73efd59c176304c327cb4214d0e5e5c9) >> +>> endobj +7340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 442.543 195.367 453.446] +/A << /S /GoTo /D (structldiv__t_0f217ff62b8640aa945ec84d6d0bd000) >> +>> endobj +7341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 277.394 188.891 286.24] +/A << /S /GoTo /D (stdlib_8h) >> +>> endobj +7342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 134.752 214.176 145.656] +/A << /S /GoTo /D (group__avr__assert_g0041af519e0e7d47c9bcc83760c4669e) >> +>> endobj +7346 0 obj << +/D [7344 0 R /XYZ 132.768 705.06 null] +>> endobj +7347 0 obj << +/D [7344 0 R /XYZ 133.768 667.198 null] +>> endobj +3671 0 obj << +/D [7344 0 R /XYZ 133.768 588.322 null] +>> endobj +1121 0 obj << +/D [7344 0 R /XYZ 133.768 581.722 null] +>> endobj +1125 0 obj << +/D [7344 0 R /XYZ 133.768 553.944 null] +>> endobj +7348 0 obj << +/D [7344 0 R /XYZ 133.768 474.468 null] +>> endobj +1129 0 obj << +/D [7344 0 R /XYZ 133.768 428.969 null] +>> endobj +7349 0 obj << +/D [7344 0 R /XYZ 133.768 406.657 null] +>> endobj +7350 0 obj << +/D [7344 0 R /XYZ 133.768 406.657 null] +>> endobj +7351 0 obj << +/D [7344 0 R /XYZ 192.199 371.527 null] +>> endobj +7352 0 obj << +/D [7344 0 R /XYZ 133.768 355.174 null] +>> endobj +1133 0 obj << +/D [7344 0 R /XYZ 133.768 262.699 null] +>> endobj +3672 0 obj << +/D [7344 0 R /XYZ 133.768 228.713 null] +>> endobj +1137 0 obj << +/D [7344 0 R /XYZ 133.768 228.713 null] +>> endobj +1141 0 obj << +/D [7344 0 R /XYZ 133.768 202.4 null] +>> endobj +7353 0 obj << +/D [7344 0 R /XYZ 133.768 153.726 null] +>> endobj +3673 0 obj << +/D [7344 0 R /XYZ 133.768 125.786 null] +>> endobj +7343 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7374 0 obj << +/Length 1004 +/Filter /FlateDecode +>> +stream +xÚÕX[o£F~÷¯@[)‚¦sa`f¥}ˆœfë„Ó݇d5ò…$TŽÅ¤nTõ¿÷p³1!v.¸U,`8óÍw¾™s1X»Ñ°vÚéûÔÖ$’6\‚k0†[h¶äÈ–D ¦Ú¥N-D “`ŒõQ²ˆÐÐ0)Çz?š…ù^‡±A„Î'é±l®3æß‚Ï7è|ïXk¤‚OÄ\›Üu.¿am +/?k1)´Ufz§1 LI:q¦ ;¿vp4Îékî Êø›XÕšX3ƒYrƒ‡Hx&#šæH'árG÷I´˜¯q*ôR €6r² ±Ù›‰müdmñ²6¼î¢ º}¿dÖ˨Õgž„WÓy¸ÌŽP¹õ°®VYLÂDŠl»PãŠR¾5G»49¬þô@l`maD…ë Aýœ Ô±!¹¤®zçg=õ“*æUׇ±lZÎ#ÛËš„qäp¸Rœ¾‚]'•ø¦ˆ?3KE;6!VÝ×û¹†§_aŽ“Ç{ä5J¸ CZ!sá]Œ·Åé0ùî0Èn$+ Ü­5$PLßó{.ˆ¶sizȽùOåx†S®J¿_ô­Le–¡Î Ÿg]x‘[Æ‹EÒF¶âÿ¿lzZ\ÿâ«®çÖƒæ\å¨çüÙ\E’‚µzK>/Ûö×WC·œÕ" °Vj”$q46(Ö’P©\ø4q¤¿e8ÉÄ_~@éžÏ£iHÓJù{ÊÛ­·êyççÞ…:vdq,Kcßà\ÿú5·¬ÊM¡4Hç r¿”›ï6Õ+ŠLëä|÷IáV²mẃ.¡ ¤`1&ÖŠÕ1Ç9²—‹µ‹ m‘ Þ¯ û·tÁûu¡méò|îHc[-ïïT4OÂ8~¸OT8gaSc‘Eý:1(5üå*Ýiî±*~P"‘­Ò‘ß\¥Ù‰ÂàÓöY¾úp*i`FT÷K:¹Íù ªhëÐÖ*-¡”4É7–»õƒ‰uó±£O•—o’¡a'wp²ú +3ÜT´c­2³Òk2‚!ÇÚiÑJûƒâäîZ@¯.Ú?¤Ñr[è×Ðlèèàg¬Å6ŽŠÜëxµRy©^>îð˜:O<„£Í›÷x\­Ä»o9'½ÀñƒnuŽêæÝtwpø]or^­ ‚õQ´çÀOý½º…F:~RÚ>aßøÍH +ä°×|1*¿ÙH:LT? ‰XÙƒŸ†ó0%e«_6™ÁíCÙûOò+¿ü‘²DäOãâîÚ \_ÄùÃ(}ø#6˜£›³h\ Œ ÈÅŸ7á¼îò?ã„“€ +endstream +endobj +7373 0 obj << +/Type /Page +/Contents 7374 0 R +/Resources 7372 0 R +/MediaBox [0 0 612 792] +/Parent 7321 0 R +/Annots [ 7354 0 R 7355 0 R 7356 0 R 7357 0 R 7358 0 R 7359 0 R 7360 0 R 7361 0 R 7362 0 R 7363 0 R 7364 0 R 7365 0 R 7366 0 R 7367 0 R 7368 0 R 7369 0 R 7370 0 R 7371 0 R ] +>> endobj +7354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 468.386 268.243 479.29] +/A << /S /GoTo /D (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) >> +>> endobj +7355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 455.435 289.474 466.339] +/A << /S /GoTo /D (group__util__atomic_g6e195ee2117559a25f77fbba9054674a) >> +>> endobj +7356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 443.459 307.546 453.387] +/A << /S /GoTo /D (group__util__atomic_g362c18b15a09703e42e1c246c47420ef) >> +>> endobj +7357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 430.508 280.976 440.436] +/A << /S /GoTo /D (group__util__atomic_g92b11103b4b3b000a3190f0d26ba7062) >> +>> endobj +7358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 417.557 328.776 427.484] +/A << /S /GoTo /D (group__util__atomic_gb075653bf638fae9db049575741d3152) >> +>> endobj +7359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 404.605 306.091 414.533] +/A << /S /GoTo /D (group__util__atomic_gfb959d7d00d2d790b58d0e9880ea255a) >> +>> endobj +7360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 285.501 305.304 296.031] +/A << /S /GoTo /D (group__avr__boot_g8a60eb0985d40ff71c42bb18f0f5789e) >> +>> endobj +7361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 194.133 301.07 206.088] +/A << /S /GoTo /D (group__avr__boot_g072040fce54f112355cb9ebf9ce41dd7) >> +>> endobj +7362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.01 194.133 413.236 206.088] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7363 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.169 181.516 312.961 192.42] +/A << /S /GoTo /D (group__avr__boot_gf1e01d09c839793a6c0c990b1c5ae8b3) >> +>> endobj +7364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [428.884 181.516 459.111 192.42] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 156.609 281.712 167.513] +/A << /S /GoTo /D (group__avr__boot_gcd6843d51a4fa7d68f3c4bc5aa393a3e) >> +>> endobj +7366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.017 156.609 393.243 167.513] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.276 143.658 255.268 154.562] +/A << /S /GoTo /D (group__avr__boot_gaba5a29359af671a37bccaa6a77bca7c) >> +>> endobj +7368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.902 143.658 366.128 154.562] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 130.706 254.395 141.61] +/A << /S /GoTo /D (group__avr__boot_ge50dc01180110f30093a92fe64fe1565) >> +>> endobj +7370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.7 130.706 365.926 141.61] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 117.755 276.433 128.659] +/A << /S /GoTo /D (group__avr__boot_g24900c15109e8b419736d4b81b093fb8) >> +>> endobj +7375 0 obj << +/D [7373 0 R /XYZ 132.768 705.06 null] +>> endobj +1145 0 obj << +/D [7373 0 R /XYZ 133.768 667.198 null] +>> endobj +1149 0 obj << +/D [7373 0 R /XYZ 133.768 650.367 null] +>> endobj +3674 0 obj << +/D [7373 0 R /XYZ 133.768 624.139 null] +>> endobj +1153 0 obj << +/D [7373 0 R /XYZ 133.768 624.139 null] +>> endobj +1157 0 obj << +/D [7373 0 R /XYZ 133.768 599.676 null] +>> endobj +3675 0 obj << +/D [7373 0 R /XYZ 133.768 573.448 null] +>> endobj +1161 0 obj << +/D [7373 0 R /XYZ 133.768 573.448 null] +>> endobj +1165 0 obj << +/D [7373 0 R /XYZ 133.768 548.986 null] +>> endobj +7376 0 obj << +/D [7373 0 R /XYZ 133.768 500.311 null] +>> endobj +7377 0 obj << +/D [7373 0 R /XYZ 133.768 500.311 null] +>> endobj +3676 0 obj << +/D [7373 0 R /XYZ 133.768 395.639 null] +>> endobj +1169 0 obj << +/D [7373 0 R /XYZ 133.768 391.031 null] +>> endobj +1173 0 obj << +/D [7373 0 R /XYZ 133.768 365.727 null] +>> endobj +7378 0 obj << +/D [7373 0 R /XYZ 133.768 317.052 null] +>> endobj +7379 0 obj << +/D [7373 0 R /XYZ 133.768 317.052 null] +>> endobj +7380 0 obj << +/D [7373 0 R /XYZ 133.768 289.486 null] +>> endobj +7381 0 obj << +/D [7373 0 R /XYZ 133.768 277.037 null] +>> endobj +7382 0 obj << +/D [7373 0 R /XYZ 133.768 264.086 null] +>> endobj +7383 0 obj << +/D [7373 0 R /XYZ 133.768 252.315 null] +>> endobj +7384 0 obj << +/D [7373 0 R /XYZ 133.768 239.364 null] +>> endobj +7385 0 obj << +/D [7373 0 R /XYZ 133.768 226.392 null] +>> endobj +7372 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7404 0 obj << +/Length 1150 +/Filter /FlateDecode +>> +stream +xÚÍ™ÛrâF†ïy +UåFª +“9hN{‹Ì²ÁÆ%¤ÊÞR #X ‰À±ýöi„ƒ¨\I‚9|óOwO·„±f¥îV~º¡ÂÐH ¸¸#ƒ0†¤P†Ð M wh<˜ÔFܪŒ±9˜Ï—è»U¥›7“iÜuƒQZD™Áì)ú‰%MÆ”õÍýZqÜÊßóaƒdÆ'Hcn<=W¾ac~50bZ¯qÓgƒÙДD§F¯òK§Ðxgá9FKCp‰(ã ü#¥<æXõ3ªVòÃ0xĘ΂èÏ-lG)hàyõNDz±éz÷–´ÍšÅ¹Ùt<§[ë9iï ‚‘MĪû#æØ«ÿ_¼Þý­çÜYŒ›µzÛßH2±³`Ž°â«þÈ™ƒ#Ê×€Éè÷M§Û‹†\ »^r• +‚°-*¡Hsrž4X’¦ßm¹ùÒd3u¦4˜KC¤Ø‘¦ßµ`È£(Må¡gZŽ>$ÏM«ÝÎSƒápºÅ¾O™ >i¥M.°»ÔÍÃïF³÷ûÅ1F? +,ä» ž£Šöþ×RïTšÂ.*†˜ŠŒ‚ Oýÿsçö¶sçÕz]gÏæ+dCD:{ë!ø$áj[»vçóÏ^½åö¼žãæ-ŠIp÷sâáÈÖ¢P8çj — +Æ@OÞ¼!X2u½]Ú##—s–èpñþòÇu™N½Ù<|ö§¹vÀ‘¤4+™?†Ábñcr" ý¥Ÿë(`à„\ÞÏwÐýé2:¹9ó—An$¤Hrqú +8ƒ@ί ~ð¶ fÃ`¸^þ!xŠí2áƒÐ_†C’’äçâ‚cŠ2%¡=h+”!²- kV¾ÆEöÀZœL9+Sæ×p²,Å(Hy´%E‰—c—–9|}õ‚™?˜æ « ·¦:‹™ÇG9âD•Îw„(¨uÔ!\¡§²¤ýŸÎŸþô“åÂ[Ëí¬¾C ¤%Ô2™ïPJ#&Ò“Í`ö´„â2æŸÏ’«ûý%¹iOÉ\þDÙ'¢’'Šqz7²(7çaòàGÿ„“fu:¤# ÞÓ!çoïã`¶½äÊÛ°U +endstream +endobj +7403 0 obj << +/Type /Page +/Contents 7404 0 R +/Resources 7402 0 R +/MediaBox [0 0 612 792] +/Parent 7321 0 R +/Annots [ 7386 0 R 7387 0 R 7388 0 R 7389 0 R 7390 0 R 7391 0 R 7392 0 R 7393 0 R 7394 0 R 7395 0 R 7396 0 R 7397 0 R 7398 0 R 7399 0 R 7400 0 R 7401 0 R ] +>> endobj +7386 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 397.42 294.086 407.95] +/A << /S /GoTo /D (group__avr__boot_gc68c37ecf2354ba2af6e08379d65899f) >> +>> endobj +7387 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 384.468 269.529 394.999] +/A << /S /GoTo /D (group__avr__boot_ge12d288a22cfbfa9d0cde12b1a779bfe) >> +>> endobj +7388 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 371.517 324.871 382.047] +/A << /S /GoTo /D (group__avr__boot_gf08aabaebbd69da659357f402d4d28ce) >> +>> endobj +7389 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 358.565 296.647 369.096] +/A << /S /GoTo /D (group__avr__boot_g44e70c9662e7ac06484144c15bc69aea) >> +>> endobj +7390 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 345.24 289.453 356.144] +/A << /S /GoTo /D (group__avr__boot_gd2cbdea59ffec2e77ee2e63106459797) >> +>> endobj +7391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 307.382 290.001 318.286] +/A << /S /GoTo /D (group__avr__boot_gf375d2543ba38dc56697b4f4bc37a717) >> +>> endobj +7392 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 294.431 249.055 305.335] +/A << /S /GoTo /D (group__avr__boot_g61add108c778273ff68233d044c3acca) >> +>> endobj +7393 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 281.48 258.44 292.383] +/A << /S /GoTo /D (group__avr__boot_g7249d12e06789cd306583abf7def8176) >> +>> endobj +7394 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 268.528 258.45 279.432] +/A << /S /GoTo /D (group__avr__boot_g013d6d8c679ebdbc0e5fac179c38c9aa) >> +>> endobj +7395 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 255.95 262.874 266.481] +/A << /S /GoTo /D (group__avr__boot_g8d2baaca2991318e0b06fdf9a5264923) >> +>> endobj +7396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 242.999 266.769 253.529] +/A << /S /GoTo /D (group__avr__boot_gdaa352690ac1c82c535da9d8faf77590) >> +>> endobj +7397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 229.674 270.076 240.578] +/A << /S /GoTo /D (group__avr__boot_g3f549e2ef9ca0f119a7070064c4dc372) >> +>> endobj +7398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 216.722 279.461 227.626] +/A << /S /GoTo /D (group__avr__boot_g5c345350a2fb349619b859dcf0dc0466) >> +>> endobj +7399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 203.771 279.471 214.675] +/A << /S /GoTo /D (group__avr__boot_g107ad4c789e5c498062947d394ed98d5) >> +>> endobj +7400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 191.193 283.894 201.723] +/A << /S /GoTo /D (group__avr__boot_geb0dba1dd9d338516a94c0bd8a8db78a) >> +>> endobj +7401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 178.242 287.789 188.772] +/A << /S /GoTo /D (group__avr__boot_gc80bd4f863ff7645204adb0eda3556ea) >> +>> endobj +7405 0 obj << +/D [7403 0 R /XYZ 132.768 705.06 null] +>> endobj +7406 0 obj << +/D [7403 0 R /XYZ 133.768 667.198 null] +>> endobj +7407 0 obj << +/D [7403 0 R /XYZ 133.768 657.733 null] +>> endobj +7408 0 obj << +/D [7403 0 R /XYZ 133.768 644.782 null] +>> endobj +7409 0 obj << +/D [7403 0 R /XYZ 133.768 632.538 null] +>> endobj +7410 0 obj << +/D [7403 0 R /XYZ 133.768 607.631 null] +>> endobj +7411 0 obj << +/D [7403 0 R /XYZ 133.768 349.225 null] +>> endobj +7402 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7414 0 obj << +/Length 775 +/Filter /FlateDecode +>> +stream +xÚåVÛnÓ@}÷W¬‚l©ÞîÅ—Ý (i+ +U!±xi«•oJ„c—ØéE¾Ý¬Ýؽ&*$"%{ÉÌ93ãñÑ pØ·v"k{€C¨%L) îÀc%àØ&ô#„ìaž—ð‹ãÙ{“Tš]_ŽåÌÁÌ–ÙH_aÌB›RîœFÖnd}³°âC7ð1äÈ£©u|Š@¢þ<RÎÀåÂt +¨§L±vLÁÀúd¡§ƒöCH¨¿ ’*ìž> endobj +7415 0 obj << +/D [7413 0 R /XYZ 132.768 705.06 null] +>> endobj +1177 0 obj << +/D [7413 0 R /XYZ 133.768 667.198 null] +>> endobj +7416 0 obj << +/D [7413 0 R /XYZ 133.768 650.391 null] +>> endobj +7417 0 obj << +/D [7413 0 R /XYZ 133.768 650.391 null] +>> endobj +7418 0 obj << +/D [7413 0 R /XYZ 133.768 437.996 null] +>> endobj +7419 0 obj << +/D [7413 0 R /XYZ 133.768 423.483 null] +>> endobj +7420 0 obj << +/D [7413 0 R /XYZ 133.768 192.916 null] +>> endobj +7421 0 obj << +/D [7413 0 R /XYZ 133.768 178.403 null] +>> endobj +7412 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7425 0 obj << +/Length 716 +/Filter /FlateDecode +>> +stream +xÚíV]OÛ0}ϯ°:MJ$âù#qìî©ŒR ©‚µÑÈ +Ä…JmÂ’ð9í¿Ï®SH + +Lö°UJ|í^Ÿ{®smÎ#g;v>íL7ñ `JaÄ8`"„L`§àÐ% =#„Ü“<¯à¹ç“¹»ó…²ÖDÍTáaîªìÔ aÌ#—È;Ž÷œaìüp°Ž‡nàc(PN—Îá1©þs H×+×% vÅfâL¯j’¦DPD¯H‡rFÐÐ’–2)—Rz>Ó´¥¼ÊI¥ ›šTŽ0 A ê °ÀÎ;B!Ò)° é‚Ä„[¿¿WV¥ÿˆ¶j› ™yU½gÂôÊ‹eÛ['¼×Áàu^¤6 +º™é_{.呲üâå‘ú:÷ ƒwß’èÍ{Ö0Ë%§»9Žå`gg²Óƒ±œ GºƒÍ£(hQ0Ôˆ­‹¢y.çYÅee¦K¹½¿˃Áh(‡“ÁtXcRÖ‘öÝx˜YÀ$M U–Æô|ÑBñ וOZÜŒßgSê­üUUˆVÔ_ëŒÇ†¶4¿€@òUAƒZYRu„ÉjIIi¤&/’3%U‘”ú}S©,U©ÉÅð_é­Î¡NG‘šÉ7O7Y\ªþJ…kõ¬Û éÉ$„H°H±œç™”fà§)þH¢µTo.»e~umÑ z/¼ÝÐéRž.&+Á®¾ÐªCùä­”ÿ÷ô؉8Œ¾7Т®-ewí”<¯ìF’«§K©·uocóQy¬uþn»BøÒ]!Ë‹e²øÇ÷„÷<Šÿ¯w@ÞWÞ“wDÁaDÿ䆸¾Î2]”7¯³\@ºæ:R™–N¥R+©<³m|~iujÀ6õ ícn{º2jkæ‘ÐÍ ÛILçªðhäú‹ùIpr[Cæ7·g*ÛLù7…TÀ– +endstream +endobj +7424 0 obj << +/Type /Page +/Contents 7425 0 R +/Resources 7423 0 R +/MediaBox [0 0 612 792] +/Parent 7422 0 R +>> endobj +7426 0 obj << +/D [7424 0 R /XYZ 132.768 705.06 null] +>> endobj +7427 0 obj << +/D [7424 0 R /XYZ 133.768 542.286 null] +>> endobj +7428 0 obj << +/D [7424 0 R /XYZ 133.768 527.716 null] +>> endobj +7429 0 obj << +/D [7424 0 R /XYZ 133.768 324.905 null] +>> endobj +7430 0 obj << +/D [7424 0 R /XYZ 133.768 310.335 null] +>> endobj +7431 0 obj << +/D [7424 0 R /XYZ 133.768 145.382 null] +>> endobj +7423 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7434 0 obj << +/Length 789 +/Filter /FlateDecode +>> +stream +xÚÕV[OÛ0}ϯ°:MJ$b|Mâî©Œ QÁJµ‡²B“B¥4ai¸mÚŸ]'¥)]h™†¶J©çûÎùŽ/GFà + p`í ­Ýñ€€ÂSÍp 0¥Ð÷à =Á0g6a;.FÙ—YVÀkÇ%Ù½I›Þ ǹƒ;NGzãÀ·)ÃÎÅðÐê­oV|à%| â`4µÎ.ˆÔÇC€ ¸Ÿ‡Ne*ëÄœZŸ-ôrÑ܇„ò§¢!^Yø»(>Gˆ¤eÅRj%ò&¼Š¥O&…Áí4,T,GaQ³ÙŽãr…E¨¾Ìu©Z\ìC0Ã÷ÅÄ“Û¸=W]U[µ»=J…°.Y%‘ðL²¦“2~(ât6ÉR)õÀUºí9¦lN‰ÄDW@æ•2¥ gS)×CZÕ]–„…Z=‚9ZNF&=1ª©ðØ3ü †ßšfw÷ +‹¨¸íž÷T§¤ú¯h©4ø=QkVÌʬE:®§¯­³âŸÝLëÑ‚4Áû, z«ß…VLiv³Ó(É«iY‘ã5´Õœ³†ei›Ú[“–éÌ7Æio ûݾììïÌN9=éËA÷@ïEý¨ye5R¹B¬©Ë—õs;I‹@:]ʽãã¡<éteïÓÑQÙ$ÿû8ì<}pÔ¡)aDÓêæ 0‹Óæb\ۦ•yËQKûOÒ]³­5îmÁóHQCþYM²ŽX1%†ˆyP³cË™ø(ŽÞÊmüW» {¥Ûð ݆5¹ Ûâ–Ó@gÕ¯ÈF~…«ü+ùŒ5Ös¿#øÛÊïøë\ˆ½àBüo¹P¥®qÐéŸ|]BóÉ–Îñ~¶Ž’ÁÏvª.]îc½ÆÄ{[Ÿók>lìsi–OÃd —ãÿÇjQÉÚ;® O·¹áV7[OI¢ÁòÍ6VÕÄiœ«+jd¦;KM;¼¾5ýxd:Ì4µ mãÀ¼©3PöÆáv–›—P¿Üåõm7™\–—%döðx§«’9ÿñ: +endstream +endobj +7433 0 obj << +/Type /Page +/Contents 7434 0 R +/Resources 7432 0 R +/MediaBox [0 0 612 792] +/Parent 7422 0 R +>> endobj +7435 0 obj << +/D [7433 0 R /XYZ 132.768 705.06 null] +>> endobj +7436 0 obj << +/D [7433 0 R /XYZ 133.768 667.198 null] +>> endobj +7437 0 obj << +/D [7433 0 R /XYZ 133.768 452.243 null] +>> endobj +7438 0 obj << +/D [7433 0 R /XYZ 133.768 437.673 null] +>> endobj +7439 0 obj << +/D [7433 0 R /XYZ 133.768 206.469 null] +>> endobj +7440 0 obj << +/D [7433 0 R /XYZ 133.768 191.898 null] +>> endobj +7432 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7443 0 obj << +/Length 805 +/Filter /FlateDecode +>> +stream +xÚÍ–ýOâ0Çß_Ñp¹d$®×—­[¹Ÿð£‘èár—œšf²¢$°ycŠÞåþ÷ké†lŠÆDh7ú|Ÿ—ôÓ§\ö­ÝÐúÒ% pÈ™Â!À”BŸ€q2ŽAƒ3›¸Ðk:!d_¦i¯›ñÝ¥™õåPfMØ2èW¾M]Ò¼­Nhý¶°ò‡^ÒÇ# &ÖÙ±úó Hyfó¥@]µkÃ18µ¾[h9hJ¹ð$Ô3AŸ#©P˜«¢>ÇÔÕ±Ì!&p8t™kÖ5&éÝLeGÔº í4¦&Ÿ©6IôOÞPÒ`YÂQcšO «…9®š{h…yéz3©®ædƒ³Á8+ƒ­9aÁz'-U ­—m™¸£†™èâ‰Ón_ô:=ÑÞÛëÏ_ˆÓ“žèwöÕÖ_•­[qÊ¡§> endobj +7444 0 obj << +/D [7442 0 R /XYZ 132.768 705.06 null] +>> endobj +7445 0 obj << +/D [7442 0 R /XYZ 133.768 533.244 null] +>> endobj +7446 0 obj << +/D [7442 0 R /XYZ 133.768 518.75 null] +>> endobj +7447 0 obj << +/D [7442 0 R /XYZ 133.768 335.713 null] +>> endobj +7448 0 obj << +/D [7442 0 R /XYZ 133.768 321.219 null] +>> endobj +7449 0 obj << +/D [7442 0 R /XYZ 133.768 119.253 null] +>> endobj +7441 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7456 0 obj << +/Length 673 +/Filter /FlateDecode +>> +stream +xÚíV]OÛ0}ϯ°:MJ¤Åø#Nìî DZ Á`%€¬”¸P)MX’RØ´ÿ>»NGê¤i/P)õµë{î9ιª¸ ½ÄÙ(B=$€)…QÈA( IÎ]@æù!äŽË²7žOrÓ\Ùh¤&ªò0wUqe–0æ‘Kê]&Nœ8߬ë!€×ð1ˆ«™s~‰@¦<RÁÁb¹ut>Œ°IÌÁ©óÅAÏ“f$”=’†bÜ2—© „HÑR–ÒH‘·éµ’‹jÚ(Y”Õ,Í/Ci–Y5u­§Ø¨Ð•}Áý«'ˆ›æsÕ_j\q[;JAE„°!¨“ ƒH„6ÙÔRÝ7ª¨§e!¥Yø¡y +®‰^`,Kb1À0[QR¦õLJÏ‘‘pWæi£ß‚YÁ ­'#›%q‹IÃ-²¿oÀá4fZÉŸpÝd¤ÃÍìûh,ÚÑà¯{¡­ús¥ØìxÒš_ ½Ïx·ÈÖ^¨ ©Štœ«VÇ›ó_¡óGgg2þ¼»w[ËäÿZ6êZ–¾Ð²2ÍóÄÜ"m6˜½ø_¸e•Ù*è~¢?Ý\Ê·T*ÊÛW×*Á‹[…mh•ßæÜx—FôonR«T¨]Nùú Š HW †ªP•î¥Ìv\YØ1¹™Û`_]Ù °F}Bû˜Û™>Š6šx„¹ee'©™ÜU\?ŸŽ[„ñC YÞ?\«â©ä_ûG¦ +endstream +endobj +7455 0 obj << +/Type /Page +/Contents 7456 0 R +/Resources 7454 0 R +/MediaBox [0 0 612 792] +/Parent 7422 0 R +>> endobj +7457 0 obj << +/D [7455 0 R /XYZ 132.768 705.06 null] +>> endobj +7458 0 obj << +/D [7455 0 R /XYZ 133.768 667.198 null] +>> endobj +7459 0 obj << +/D [7455 0 R /XYZ 133.768 509.03 null] +>> endobj +7460 0 obj << +/D [7455 0 R /XYZ 133.768 494.46 null] +>> endobj +7461 0 obj << +/D [7455 0 R /XYZ 133.768 338.972 null] +>> endobj +7462 0 obj << +/D [7455 0 R /XYZ 133.768 324.401 null] +>> endobj +3677 0 obj << +/D [7455 0 R /XYZ 133.768 149.984 null] +>> endobj +7454 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7495 0 obj << +/Length 1250 +/Filter /FlateDecode +>> +stream +xÚÕXKsÛ6¾ëWp¦“3|æØ8N›S›êÒ±3Š‚$L)%A?òë»xP–XÒŽ©¦'ÄbñáÃr÷#±³q°óiöóböîÒœ¥4‹µC(Eq”8Q¢(%Îbå\¹~€"oN0ÆnÑx$q ¡­7÷Cì^ò’™Þ¶fz–‰B=Âqä»4¼¯‹Ï³‹Ùß3›b‡lBPŠC§ØÍ®¾bg“ŸŒhš8·ÚtçÐL‰ZX:Ì~ŸárÂÐ?‚ÆȧáË¡Þ+Ø™ƒ#¤N±n/˜ÌÁÑÊxº`mÑðZòJ(?Õ—(Ô\«Ié»áÃ;ˆP@SXè#B³ðÚ÷ã5ÎÕ<„Ý[™K^˜½³Œ‹’ –eÖRqÝl,é_ôe×q!I”É#“ÖYÑgYW¯rɆ”Á5ñä†ã›õ®•ïó§Á&SËRÛ“ãYàœø(ðÉwR‡É÷Q‡ýçP§¼Âñ²»]µb»)þÀê…üš'ù#d’?}è·á^V\Êÿcøù?†¾äYìñ¥çÃ:)+ñ*“ÿ€ÂaBŸ÷‰P%vü{ã>¡Ëûš½E2Ÿ—Ìmi¹`×û‚½Y.ÿie=Ž€0ò“¬µ‡,û°øó·Ù/™5=Ü2¢(¥½%ñá‰TI –@q+M{ˆ$@$ìA,¶y“ØÖteÞ¶\¡È5gú©¾Šª“Ü2õî’nƒ„(°¹f±e-\#%±»ÞãaâÖ¬YWÍÎÌ ]Ø\5€²@Þ<$¾rêQìޣƣ±Ëd×ãK633UcwÎË„zI»¶¿|›éŠÕL¬¸Ø€a»·[&·  g:c8c8 ÀT1¦m«ÁšþÜv”—ekºðMÙžy$”1˜#wGú}çˆ)Xhúå¥ lÚ®ø†Kµàß™^â8< ´5Þ £ªÇ׶•qíl®í7ÝŽ igûqïi7yÙ{8ÃgÖé¶ê6[3–ž–‹¢ìZ~ÃT¸üÈ÷Ý_ Ët¸¨;i»­iEeä´hùFè+‚ÑþõÈ€#Ø=‡q‚]¸ 3Qíwêý\%Œï{d°› ;¸ñtBQ‰kN”DO¤ˆ—Ç3oóRt»©‚Àõý˜$?^å0T¹ä @ÔÛüu Ò׃h ÎOÍIJÌÅ_§f¢²)OÍ„N:§fbÓäõöÔL”•ç‡î-”Ž³Q7F'c£VõÔL´u^°S3ÑÕõécâîåïéA;Ö¦¶ÂÐN§t&TTÐ;7ª³æÅJSË(ɦ.ç%ÿÖ+$¹»½j±®òz¢=µÔß0ÒbÀš¨ú¯Z«|gÄh]'GZ™NSL•:Ô…iR~ÑH‹Œù˜²ÊC}(•LiP%õØHèlù·?˜¸K.[ÀDøq\j¡¬Ê +rÒ.å.«§|èžö¾0>–îê¶5’n„‚Ö„É[ÏÆî¹í¬m+û ÓjM¨WØèzЄ:÷šP¬&Š·ÑŸži‚búœ_žý¯Î¥1Mÿt&)¢‘=ê'&XŸ÷_ÿN,¶]ÿ-kÿ5¦!ø½Oß“ÄŒ|Œmo­ÊMeÏ•«Á&q^ò¥õ°¼·.«»û Ã#ÿ‡ltu +endstream +endobj +7494 0 obj << +/Type /Page +/Contents 7495 0 R +/Resources 7493 0 R +/MediaBox [0 0 612 792] +/Parent 7422 0 R +/Annots [ 7450 0 R 7451 0 R 7452 0 R 7453 0 R 7463 0 R 7464 0 R 7465 0 R 7466 0 R 7467 0 R 7468 0 R 7469 0 R 7470 0 R 7471 0 R 7472 0 R 7473 0 R 7474 0 R 7475 0 R 7476 0 R 7477 0 R 7478 0 R 7479 0 R 7480 0 R 7481 0 R 7482 0 R 7483 0 R 7484 0 R 7485 0 R 7486 0 R 7487 0 R 7488 0 R 7489 0 R 7490 0 R 7491 0 R ] +>> endobj +7450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.31 583.249 261.518 594.153] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.016 583.249 322.658 594.153] +/A << /S /GoTo /D (group__util__crc_g95371c87f25b0a2497d9cba13190847f) >> +>> endobj +7452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [326.474 583.249 361.682 594.153] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.288 583.249 419.514 594.153] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7463 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.341 570.828 260.549 581.732] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7464 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.563 570.828 351.093 581.732] +/A << /S /GoTo /D (group__util__crc_gca726c22a1900f9bad52594c8846115f) >> +>> endobj +7465 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.424 570.828 389.631 581.732] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.366 570.828 446.592 581.732] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.31 558.407 261.518 569.311] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.016 558.407 334.832 569.311] +/A << /S /GoTo /D (group__util__crc_g1c1d3ad875310cbc58000e24d981ad20) >> +>> endobj +7469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.648 558.407 373.856 569.311] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [401.462 558.407 431.688 569.311] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.31 545.986 256.537 556.89] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [257.035 545.986 340.73 556.89] +/A << /S /GoTo /D (group__util__crc_g37b2f691ebbd917e36e40b096f78d996) >> +>> endobj +7473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.546 545.986 374.772 556.89] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.379 545.986 432.605 556.89] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.474 348.391 255.017 359.176] +/A << /S /GoTo /D (group__ctype_g49b21b266576c2490dab1e8f897c801a) >> +>> endobj +7476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 305.87 215.418 316.401] +/A << /S /GoTo /D (group__ctype_ge62f8f9e20430c822d07697b277c5de7) >> +>> endobj +7477 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 295.068 212.09 305.972] +/A << /S /GoTo /D (group__ctype_g66e77eea7376ce0c1e00223f45d0aba9) >> +>> endobj +7478 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 285.013 208.773 295.544] +/A << /S /GoTo /D (group__ctype_g41f2d44607ddcc15266bd63cb8e563c4) >> +>> endobj +7479 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 274.585 212.648 285.115] +/A << /S /GoTo /D (group__ctype_gd1a49aed816573f1b5787176f5ec701e) >> +>> endobj +7480 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 264.156 208.773 274.687] +/A << /S /GoTo /D (group__ctype_g659606df93739b0193c9e98df2953ae0) >> +>> endobj +7481 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 253.354 208.783 264.258] +/A << /S /GoTo /D (group__ctype_g49b21b266576c2490dab1e8f897c801a) >> +>> endobj +7482 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 242.926 213.196 253.83] +/A << /S /GoTo /D (group__ctype_ge89269f754744bbd5486788d06e0c7c9) >> +>> endobj +7483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 232.871 212.947 243.401] +/A << /S /GoTo /D (group__ctype_ge293e218972b626f6304aecbae044ef6) >> +>> endobj +7484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 222.069 209.331 232.973] +/A << /S /GoTo /D (group__ctype_ga2ded03e3a0d8f5ef2a8df3e834e916d) >> +>> endobj +7485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 211.64 212.648 222.544] +/A << /S /GoTo /D (group__ctype_ga46e128f7550afb4f2cda133594cb4b6) >> +>> endobj +7486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 201.212 212.638 212.116] +/A << /S /GoTo /D (group__ctype_g16e58710aba8108549a1a3c33691b24e) >> +>> endobj +7487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 190.783 213.196 201.687] +/A << /S /GoTo /D (group__ctype_g125dbbabac1caef46a0c6dad060a79d1) >> +>> endobj +7488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 180.355 213.764 191.259] +/A << /S /GoTo /D (group__ctype_g04826722a22243889683efde883e8ab3) >> +>> endobj +7489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.446 140.13 455.643 150.914] +/A << /S /GoTo /D (group__ctype_g21d5ec3792b2704ecca5778b758dd91f) >> +>> endobj +7490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.37 128.174 316.443 138.959] +/A << /S /GoTo /D (group__ctype_g9ba1fce7148e9b63ca6296e02c79bedd) >> +>> endobj +7491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [335.376 128.174 374.997 138.959] +/A << /S /GoTo /D (group__ctype_g924ed052807e23cfa160d5f171cf5e2a) >> +>> endobj +7496 0 obj << +/D [7494 0 R /XYZ 132.768 705.06 null] +>> endobj +1181 0 obj << +/D [7494 0 R /XYZ 133.768 667.198 null] +>> endobj +1185 0 obj << +/D [7494 0 R /XYZ 133.768 650.367 null] +>> endobj +7497 0 obj << +/D [7494 0 R /XYZ 133.768 601.693 null] +>> endobj +3678 0 obj << +/D [7494 0 R /XYZ 133.768 539.672 null] +>> endobj +1189 0 obj << +/D [7494 0 R /XYZ 133.768 532.89 null] +>> endobj +1193 0 obj << +/D [7494 0 R /XYZ 133.768 506.278 null] +>> endobj +7498 0 obj << +/D [7494 0 R /XYZ 133.768 459.887 null] +>> endobj +7499 0 obj << +/D [7494 0 R /XYZ 133.768 459.887 null] +>> endobj +7500 0 obj << +/D [7494 0 R /XYZ 133.768 406.035 null] +>> endobj +7493 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7513 0 obj << +/Length 720 +/Filter /FlateDecode +>> +stream +xÚÕVMSÛ0½ûWh¦û`u%Y²Ä HBa(´Á:ÀxÛ€g;ul(ÿ¾ò$©CÈtŠ/–líÓÛÝ÷lºC€ŽŒÏø< )¬„¾y·ˆ0†]!‘P E¢+“:XZ63Œ&£'Ëß[6å`âIT†Ñm”YDšQ”@ +i2‡[7Þ‰Ñ÷ŒŸÑ›" ›¬€£`j\Ý +õ˘)‰«¥SĽ””ta|7 aKÀb‚h‚w1e¼ÎàšÒšG‡®l®Ó‰“¼y\òÊî‚ÃjA™TžŽæA¯Æ–¯®C_M|?Ðs²¼.V\½›Ä$µ(7u}ßED¾›H1›mG¢ÒÑ}æœ–í±©‹eÈf&R¾]`-öKçu–ˆ9ꓶå# ÖH½hdñ,Ó¤ÄYìE×4‰æK‰þ¡3ì0¥)â/2û6ˆ¬ÀT×jÿÒ;>õ{ýÓ}Kó6ø_ü&fqo)+“41+Ͷ •XHQtÙÉ®¨ üÃo—dt#±g2P]—§x¶í{ÝzŠ‰jJ6(’ ìÃÎjý`Q0Ó8|]É~¥3¿˜¯Ór˜ãVx¾^×mª +¼Ÿé†|¦óµþjkµâ/µè/<šÇÁ.¦>¾Ã,æþÅña·×e˜ëá¢ÙVuM¤Þ‚³ÿIÙ“4ùdšÖB˜…þˆK?ï +Ô_õ´Hòã„Š?}"6Jàuë¸Ï'ÐH<Ê´9¸™¤»pŽþ!8ëøýáðì¼Û'B`âеÿ$(5:¡[Z/”~ïükW—{“:7Ýu¸vÔïÜ×YzÚyâU»l›ón{BX¹L.žÐ¥Â¬míQ”DÙ(o¤…Sݽû¢•TPœúF`²="ëhF·å)3Íêɨœ> endobj +7492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 654.456 209.879 664.986] +/A << /S /GoTo /D (group__ctype_g21d5ec3792b2704ecca5778b758dd91f) >> +>> endobj +7501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 643.497 214.053 654.027] +/A << /S /GoTo /D (group__ctype_g9ba1fce7148e9b63ca6296e02c79bedd) >> +>> endobj +7502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.874 632.164 214.302 643.068] +/A << /S /GoTo /D (group__ctype_g924ed052807e23cfa160d5f171cf5e2a) >> +>> endobj +7503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 458.803 220.074 469.707] +/A << /S /GoTo /D (group__util__delay_gb20bfffeacc678cb960944f5519c0c4f) >> +>> endobj +7504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 445.852 222.844 456.755] +/A << /S /GoTo /D (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) >> +>> endobj +7505 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 285.441 238.894 296.345] +/A << /S /GoTo /D (group__util__delay__basic_g4e3957917c4c447d0f9166dac881b4e3) >> +>> endobj +7506 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.709 285.441 272.936 296.345] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 272.49 238.894 283.394] +/A << /S /GoTo /D (group__util__delay__basic_g74a94fec42bac9f1ff31fd443d419a6a) >> +>> endobj +7508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.709 272.49 277.917 283.394] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 156.045 220.822 164.892] +/A << /S /GoTo /D (group__avr__errno_g5fe247e079b591a68e0fdbf7caec5b70) >> +>> endobj +7510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 143.094 231.89 151.941] +/A << /S /GoTo /D (group__avr__errno_ga1591a4f3a86360108de5b9ba34980ca) >> +>> endobj +7514 0 obj << +/D [7512 0 R /XYZ 132.768 705.06 null] +>> endobj +3733 0 obj << +/D [7512 0 R /XYZ 133.768 623.198 null] +>> endobj +1197 0 obj << +/D [7512 0 R /XYZ 133.768 618.59 null] +>> endobj +1201 0 obj << +/D [7512 0 R /XYZ 133.768 591.979 null] +>> endobj +7515 0 obj << +/D [7512 0 R /XYZ 133.768 545.588 null] +>> endobj +7516 0 obj << +/D [7512 0 R /XYZ 133.768 545.588 null] +>> endobj +7517 0 obj << +/D [7512 0 R /XYZ 133.768 531.476 null] +>> endobj +7518 0 obj << +/D [7512 0 R /XYZ 133.768 477.777 null] +>> endobj +3734 0 obj << +/D [7512 0 R /XYZ 133.768 436.885 null] +>> endobj +1205 0 obj << +/D [7512 0 R /XYZ 133.768 432.278 null] +>> endobj +1209 0 obj << +/D [7512 0 R /XYZ 133.768 405.666 null] +>> endobj +7519 0 obj << +/D [7512 0 R /XYZ 133.768 359.275 null] +>> endobj +7520 0 obj << +/D [7512 0 R /XYZ 133.768 359.275 null] +>> endobj +7521 0 obj << +/D [7512 0 R /XYZ 133.768 304.415 null] +>> endobj +3735 0 obj << +/D [7512 0 R /XYZ 133.768 263.524 null] +>> endobj +1213 0 obj << +/D [7512 0 R /XYZ 133.768 258.916 null] +>> endobj +1217 0 obj << +/D [7512 0 R /XYZ 133.768 234.588 null] +>> endobj +7522 0 obj << +/D [7512 0 R /XYZ 133.768 185.913 null] +>> endobj +7523 0 obj << +/D [7512 0 R /XYZ 133.768 185.913 null] +>> endobj +7511 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7528 0 obj << +/Length 750 +/Filter /FlateDecode +>> +stream +xÚ­VÉnÛ0½ë+ˆô"Ëá&1§¶ˆ6hÝ\’@ðB;Ù•å¶A¾CK²e[A³è P çÍ›§™á02%Œœ{ŸûÞ‡.×ÄP£qéOA#mÕHLn|.)@cÌŸŒmÊÿóK›ÒQrÅüîln‹»+;±Y±oÓ¾‚8æÒRwý ¯Ó÷~z€Îš3 †)2zðnîãÇ Â¨01ù½Ùú@„Ä­à ç¤ç}÷Øÿ#PåB\†ûƒl6ÎíjC¤@kV·ÖT +CBΩ֥ñ-çjφ܄ +¥˜¥¹{}àŸ•‘Á}[›eN®t±Ý «RÜm ED ĸ¢Àqôv±Ù0 ER!M œVðg6 Ò¸€:³«Q6[æ³Eê€M»ëtä¾µ&_÷ë·NÁd B >[ùn¥­K˜lZfÎÕ‘çUç•™Ó;Ýx¡Û¡{î-S ÿ [X(M9&ÑŸ’šxës¹vXàðF÷ƒ,Ì_þ­æ@µ¤¢g¸€Ý%æÓÌQz/‚Ú-ó'¨JN…€—RuWcÚs9ˆ5r”÷¼ÊûÉŠöZHuþ¼T?$è4"ñ’Ø1›·BM´FMÖ¨µÃM¾[íÔP·õÊÒûWRS5¼×õ®3‹9ËÓöZÿ»q‰ØÀZ2ÊãmK> •}•tô:É—¤¡r"…'–ª,`ßaHŒ)‰7¥†¶ˆ9:—Ë:JPÉv$ƒ<ÏfC×K×¹M×'ܵ²›ó ØvÓê~óIUúUù×B1‡Š¸Œ„·I¯!¤‘»8»$/øOeBî)±ßª zâü¸Sé2 ±ã¿^æ¯Îîzáég{èãß=9'.ÓH¼dÞªæ,MM$âúœ*ªr9·©ÍyE»JŽþýºŠ£`d±;åâââ‰3VÞMÜé½ÈŠ‡Áæ(Ïùá|6,†%äâÏãôà„Çÿ“ç–û +endstream +endobj +7527 0 obj << +/Type /Page +/Contents 7528 0 R +/Resources 7526 0 R +/MediaBox [0 0 612 792] +/Parent 7524 0 R +/Annots [ 7525 0 R ] +>> endobj +7525 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.672 525.867 227.287 536.771] +/A << /S /GoTo /D (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) >> +>> endobj +7529 0 obj << +/D [7527 0 R /XYZ 132.768 705.06 null] +>> endobj +7530 0 obj << +/D [7527 0 R /XYZ 133.768 650.391 null] +>> endobj +7531 0 obj << +/D [7527 0 R /XYZ 133.768 650.391 null] +>> endobj +3736 0 obj << +/D [7527 0 R /XYZ 133.768 624.488 null] +>> endobj +1221 0 obj << +/D [7527 0 R /XYZ 133.768 619.881 null] +>> endobj +1225 0 obj << +/D [7527 0 R /XYZ 133.768 591.232 null] +>> endobj +7532 0 obj << +/D [7527 0 R /XYZ 133.768 544.841 null] +>> endobj +3737 0 obj << +/D [7527 0 R /XYZ 133.768 516.901 null] +>> endobj +1229 0 obj << +/D [7527 0 R /XYZ 133.768 512.293 null] +>> endobj +1233 0 obj << +/D [7527 0 R /XYZ 133.768 487.965 null] +>> endobj +3738 0 obj << +/D [7527 0 R /XYZ 133.768 461.737 null] +>> endobj +1237 0 obj << +/D [7527 0 R /XYZ 133.768 461.737 null] +>> endobj +1241 0 obj << +/D [7527 0 R /XYZ 133.768 437.274 null] +>> endobj +3739 0 obj << +/D [7527 0 R /XYZ 133.768 411.046 null] +>> endobj +1245 0 obj << +/D [7527 0 R /XYZ 133.768 411.046 null] +>> endobj +1249 0 obj << +/D [7527 0 R /XYZ 133.768 386.583 null] +>> endobj +3740 0 obj << +/D [7527 0 R /XYZ 133.768 360.355 null] +>> endobj +1253 0 obj << +/D [7527 0 R /XYZ 133.768 360.355 null] +>> endobj +1257 0 obj << +/D [7527 0 R /XYZ 133.768 335.892 null] +>> endobj +7533 0 obj << +/D [7527 0 R /XYZ 133.768 287.218 null] +>> endobj +7534 0 obj << +/D [7527 0 R /XYZ 133.768 287.218 null] +>> endobj +7535 0 obj << +/D [7527 0 R /XYZ 133.768 273.106 null] +>> endobj +7536 0 obj << +/D [7527 0 R /XYZ 133.768 259.651 null] +>> endobj +3741 0 obj << +/D [7527 0 R /XYZ 133.768 234.351 null] +>> endobj +1261 0 obj << +/D [7527 0 R /XYZ 133.768 229.744 null] +>> endobj +1265 0 obj << +/D [7527 0 R /XYZ 133.768 202.156 null] +>> endobj +7526 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7570 0 obj << +/Length 989 +/Filter /FlateDecode +>> +stream +xÚÅXYoÛ8~÷¯ Ú ]±„ €)…žë7p `&àÁ 6Äžia„‘æUõ´a%|4-â cfLþ›°+Lì,ù#`ß3¨í™ßÂÏ~ØùÞÁ¼‚a€¯:ßHøËÏAøà§XºÔæKqm˜içïzÙsǃ„:ÒóûŠÉY)œÐÆz¸Ì!Ðá Âd˜­çQ&CZEyºÙfQ•®sùd½cõ¨¢æ|°¢Øn*9åp4ZÖht×=,ì@ߣ%Ôö˸¶½LÌרץöŠ/ä?–h³=ŸFr˜§Õ3N—UTmÕn…I=ƒ™6‡IKŽ¯±4ô‡|Ä°A§5h‡¶ðàèD÷•§a,‡×ÎûD¥C½¬k¡Xª¢˜ˆeÂ;–îY wjWšÏkNôg¯ƒÝ!b7Á–f‚ðúsTšo¢X´ÄZ‘½0‰c¬Ç?‹´Jóekî£<Ét2Û<®K°|M"æ ã…‘ÑtÒÆÈ;‹+¯š?¤QUéÜ$ÈØV¬ìà©ýèß܇ÿÎF·a2©Éøç>¼¬CS{,xг}m³S5ÍM‡úÐv]móW µM*=ËGеÉQ¥Þýd”øûöõ‹wÉ»Sž5î¸ß†—˜žm\?mÇMOŽ{€ôÓƒ&ý9|z´¤c÷’¥~1tMû¥HŸ>Sµ_ ýÞOî@BI+p¶—ñÖ»¡À‡ü¸Ã;raàQ÷FÈ uÕ¡nµNŠå[}"ôöåŒ ä·¨¨žüJÀÊÒ¹Úaþ¤¶\ÿ÷´dù~È¿){ï +endstream +endobj +7569 0 obj << +/Type /Page +/Contents 7570 0 R +/Resources 7568 0 R +/MediaBox [0 0 612 792] +/Parent 7524 0 R +/Annots [ 7537 0 R 7538 0 R 7539 0 R 7540 0 R 7541 0 R 7542 0 R 7543 0 R 7544 0 R 7545 0 R 7546 0 R 7547 0 R 7548 0 R 7549 0 R 7550 0 R 7551 0 R 7552 0 R 7553 0 R 7554 0 R 7555 0 R 7556 0 R 7557 0 R 7558 0 R 7559 0 R 7560 0 R 7561 0 R 7562 0 R ] +>> endobj +7537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 596.193 213.744 606.723] +/A << /S /GoTo /D (group__avr__interrupts_gad5ebd34cb344c26ac87594f79b06b73) >> +>> endobj +7538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 585.3 212.639 595.831] +/A << /S /GoTo /D (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) >> +>> endobj +7539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 536.33 218.178 546.86] +/A << /S /GoTo /D (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) >> +>> endobj +7540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 525.438 238.85 535.968] +/A << /S /GoTo /D (group__avr__interrupts_g67cd0dea412157775c2f2a3ffe9fb8ff) >> +>> endobj +7541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 514.546 295.816 525.076] +/A << /S /GoTo /D (group__avr__interrupts_g751c22101f7e8f2fbe792c64a81f8dba) >> +>> endobj +7542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 503.28 252.489 514.184] +/A << /S /GoTo /D (group__avr__interrupts_gde46eb4e42cc9d56c19b1f91448f1b76) >> +>> endobj +7543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 492.761 215.956 503.292] +/A << /S /GoTo /D (group__avr__interrupts_g3b991e8168db8fc866e31f9a6d10533b) >> +>> endobj +7544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 482.472 260.29 492.4] +/A << /S /GoTo /D (group__avr__interrupts_g1f6459a85cda682b2163a20af03ac744) >> +>> endobj +7545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 433.502 256.922 443.429] +/A << /S /GoTo /D (group__avr__interrupts_g5fc50a0507a58e16aca4c70345ddac6a) >> +>> endobj +7546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 422.609 271.308 432.537] +/A << /S /GoTo /D (group__avr__interrupts_g44569cb914d2aaf8fbb436f8f7c4ca68) >> +>> endobj +7547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 411.717 257.67 421.645] +/A << /S /GoTo /D (group__avr__interrupts_g8b4c7e44627db0a60d676213add42d64) >> +>> endobj +7548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 399.849 265.221 410.753] +/A << /S /GoTo /D (group__avr__interrupts_ga87c0c624b62f40a17539be6946c3e26) >> +>> endobj +7549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.823 266.716 235.281 277.501] +/A << /S /GoTo /D (inttypes_8h) >> +>> endobj +7550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 248.862 228.14 257.709] +/A << /S /GoTo /D (group__avr__inttypes_ge53c45f590033ad1f2f517faf3ab2f1b) >> +>> endobj +7551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 237.97 259.134 246.817] +/A << /S /GoTo /D (group__avr__inttypes_g404fd01f0b890cb8fac8641aaa704b57) >> +>> endobj +7552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 227.078 251.762 235.925] +/A << /S /GoTo /D (group__avr__inttypes_g943961b7e7e564388dd743593db5bbbb) >> +>> endobj +7553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 216.186 225.929 225.033] +/A << /S /GoTo /D (group__avr__inttypes_gdbe02b78cca747b2fe1a8f7fc5f5cd47) >> +>> endobj +7554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 205.294 256.922 214.141] +/A << /S /GoTo /D (group__avr__inttypes_g526151b1725956030b501d9dd506f2e1) >> +>> endobj +7555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 194.402 249.55 203.248] +/A << /S /GoTo /D (group__avr__inttypes_g64fb4e44c3ff09179fc445979b7fdad1) >> +>> endobj +7556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 183.51 233.122 192.356] +/A << /S /GoTo /D (group__avr__inttypes_g087e50fe0283aacc71d7138d13e91939) >> +>> endobj +7557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 172.618 264.115 181.464] +/A << /S /GoTo /D (group__avr__inttypes_ge90ab00cb4417081dc68e9fd6c0e129a) >> +>> endobj +7558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 161.725 256.743 170.572] +/A << /S /GoTo /D (group__avr__inttypes_g58cdfb02574b8c23d964a6e88a268782) >> +>> endobj +7559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 150.833 230.91 159.68] +/A << /S /GoTo /D (group__avr__inttypes_g655e9b358e0371a4bf5ff21cc08273e3) >> +>> endobj +7560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 139.941 261.904 148.788] +/A << /S /GoTo /D (group__avr__inttypes_g96945864cb2d1f7de861ccaf639af02e) >> +>> endobj +7561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 129.049 254.531 137.896] +/A << /S /GoTo /D (group__avr__inttypes_gc273fb2a05215962fbeae76abaaf0131) >> +>> endobj +7562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 118.157 233.122 127.004] +/A << /S /GoTo /D (group__avr__inttypes_g6d94d1417e1b35c53aee6306590de72b) >> +>> endobj +7571 0 obj << +/D [7569 0 R /XYZ 132.768 705.06 null] +>> endobj +7572 0 obj << +/D [7569 0 R /XYZ 133.768 650.391 null] +>> endobj +3742 0 obj << +/D [7569 0 R /XYZ 133.768 391.216 null] +>> endobj +1269 0 obj << +/D [7569 0 R /XYZ 133.768 386.335 null] +>> endobj +1273 0 obj << +/D [7569 0 R /XYZ 133.768 359.723 null] +>> endobj +7573 0 obj << +/D [7569 0 R /XYZ 133.768 313.332 null] +>> endobj +7568 0 obj << +/Font << /F26 1917 0 R /F36 2440 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7627 0 obj << +/Length 602 +/Filter /FlateDecode +>> +stream +xÚÅ™]o›0†ïùVwñüÁ‡Ý»}4Õªiê.Ò^´ÁI‘RØXØÈ¿/"¥eÊÁW¶±ñsÎ+ôÆñ!hºµ>‡ÖÇ)ó‘ÄÒ¯šp…(ç8ðò¥‡}IQ£…Í\LgB !v’n·»_ê~q&Ì#ö4Ù¨¦7S+•;TØ*]V¨¤"°¹+œÇðκ ­ß­ Ñ#Å’xhùj- Š«É;D0—ýÛ/}EÜ­–ÒúÅ š[?-ÒFNÞe@Ž3ðiµE¾`ƽ&ƒƼ}‡÷ÐbâUÙ|ˆÕ!,Uíd]¾nÃœí—Õ©ÝϾÅßo>ÍCÎNw©§¯6ñÕûçUjaéÉ‹á§NàÚÿ¸T‰Žœ@çžôJ’<‚ø>œu¡ë)êC§¯‡'àðLtJžA+ží?9SðÃgˆ_ts pnè´½ý¢ƒ'_vsKpnèðð~ÑÁùQ77çöˆïœŸþjŒkêÆèÙÏ àr§äëÆèºÃ;»<’µ£èoîðHînŒ> ;¼¿ëþ'dðçâÅÅÞ˜…Ž<’Ç›ÃIïò:òH6o?$=¼ÑëÈ#9½9üô¸åé/‡2ðË¡B/Àá¥^‚Ã#=<‚…Ï¿üˆ5 Ø;ðÜw®‚§œ«Nè,xH~N¹ãP ñ± ¸8.Љ¹ßV7nUªò§­Š›BL–6møR4¯jÙtܦ¡äšñk*š#¤í­æÙYÞ žêÁßÜá=Ù$ÏíÏ»vˬܭUzšò$lÈ6 +endstream +endobj +7626 0 obj << +/Type /Page +/Contents 7627 0 R +/Resources 7625 0 R +/MediaBox [0 0 612 792] +/Parent 7524 0 R +/Annots [ 7563 0 R 7564 0 R 7565 0 R 7566 0 R 7567 0 R 7574 0 R 7575 0 R 7576 0 R 7577 0 R 7578 0 R 7579 0 R 7580 0 R 7581 0 R 7582 0 R 7583 0 R 7584 0 R 7585 0 R 7586 0 R 7587 0 R 7588 0 R 7589 0 R 7590 0 R 7591 0 R 7592 0 R 7593 0 R 7594 0 R 7595 0 R 7596 0 R 7597 0 R 7598 0 R 7599 0 R 7600 0 R 7601 0 R 7602 0 R 7603 0 R 7604 0 R 7605 0 R 7606 0 R 7607 0 R 7608 0 R 7609 0 R 7610 0 R 7611 0 R 7612 0 R 7613 0 R 7614 0 R 7615 0 R 7616 0 R 7617 0 R 7618 0 R ] +>> endobj +7563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 656.14 264.115 664.986] +/A << /S /GoTo /D (group__avr__inttypes_gd36a6b276bd808d713cc5603ba008c58) >> +>> endobj +7564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 645.181 256.743 654.027] +/A << /S /GoTo /D (group__avr__inttypes_gef5a98227a6af5fde95353ed303cfd1e) >> +>> endobj +7565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 634.222 230.91 643.068] +/A << /S /GoTo /D (group__avr__inttypes_ge212e57631ec729f70e0cc42e51dd91e) >> +>> endobj +7566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 623.263 261.904 632.109] +/A << /S /GoTo /D (group__avr__inttypes_gd7a1bae7ca12c7b5415fae1b3f258207) >> +>> endobj +7567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 612.304 254.531 621.151] +/A << /S /GoTo /D (group__avr__inttypes_g192a69a2e6e63ed8393d306b4078d63f) >> +>> endobj +7574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 601.345 241.43 610.192] +/A << /S /GoTo /D (group__avr__inttypes_g7c8a9ccd40bd2053ca588d1b15e76a30) >> +>> endobj +7575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 590.386 239.219 599.233] +/A << /S /GoTo /D (group__avr__inttypes_gc2d52bf83b783f530f02fa2eeabe703a) >> +>> endobj +7576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 579.427 228.14 588.274] +/A << /S /GoTo /D (group__avr__inttypes_gd12493b9063f7b2630b90b7f9a7f3301) >> +>> endobj +7577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 568.468 259.134 577.315] +/A << /S /GoTo /D (group__avr__inttypes_ga5b3ca8091f4ed7d43f5eb971ce11114) >> +>> endobj +7578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 557.509 251.762 566.356] +/A << /S /GoTo /D (group__avr__inttypes_g37f93445f1795033c9ba577661da6a91) >> +>> endobj +7579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 546.551 228.14 555.397] +/A << /S /GoTo /D (group__avr__inttypes_g8673208d2d48018fcce020ef59f8ec4f) >> +>> endobj +7580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 535.592 259.134 544.438] +/A << /S /GoTo /D (group__avr__inttypes_g74cb15b101649124009c010a9055e885) >> +>> endobj +7581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 524.633 251.762 533.479] +/A << /S /GoTo /D (group__avr__inttypes_g0b0c7ad693c391e3e353e8f2d1df2ec3) >> +>> endobj +7582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 513.674 228.14 522.52] +/A << /S /GoTo /D (group__avr__inttypes_gdac1acc1d24060aeee7791a99d1a3a8c) >> +>> endobj +7583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 502.715 259.134 511.562] +/A << /S /GoTo /D (group__avr__inttypes_g45d80a42b6cd25f3ed57b0e800e6e398) >> +>> endobj +7584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 491.756 251.762 500.603] +/A << /S /GoTo /D (group__avr__inttypes_ge7e1780719eb0e4b2826a0da06255780) >> +>> endobj +7585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 480.797 230.352 489.644] +/A << /S /GoTo /D (group__avr__inttypes_g4e9b835c85ffa875e8304e2b852b4c86) >> +>> endobj +7586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 469.838 261.346 478.685] +/A << /S /GoTo /D (group__avr__inttypes_g70aa3faf72084587fb18d03aa033a212) >> +>> endobj +7587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 458.879 253.973 467.726] +/A << /S /GoTo /D (group__avr__inttypes_gb153efc9e6547ca56f42de767cde2595) >> +>> endobj +7588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 447.92 233.122 456.767] +/A << /S /GoTo /D (group__avr__inttypes_g55494a16151668ea78e0b808ef38c8c1) >> +>> endobj +7589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 436.961 264.115 445.808] +/A << /S /GoTo /D (group__avr__inttypes_g1ecbd31333b358c22423a541fffbd122) >> +>> endobj +7590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 426.003 256.743 434.849] +/A << /S /GoTo /D (group__avr__inttypes_g3eda49c829de683e701eaed3cbaf0e73) >> +>> endobj +7591 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 415.044 233.122 423.89] +/A << /S /GoTo /D (group__avr__inttypes_g86bc00ee87e8e40787e0681fc34c576a) >> +>> endobj +7592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 404.085 264.115 412.931] +/A << /S /GoTo /D (group__avr__inttypes_ga3ba696eef7c107c76c26eea76dcb4b4) >> +>> endobj +7593 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 393.126 256.743 401.973] +/A << /S /GoTo /D (group__avr__inttypes_ga82e218a186691ebf7149b36746c12e7) >> +>> endobj +7594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 382.167 233.122 391.014] +/A << /S /GoTo /D (group__avr__inttypes_g70f5e38b517f714518c970a4da37bef1) >> +>> endobj +7595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 371.208 264.115 380.055] +/A << /S /GoTo /D (group__avr__inttypes_gd00e2a12b813425800cad731f61497ae) >> +>> endobj +7596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 360.249 256.743 369.096] +/A << /S /GoTo /D (group__avr__inttypes_g6f66e34285ab57a86aeb2f0f4895417d) >> +>> endobj +7597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 349.29 235.333 358.137] +/A << /S /GoTo /D (group__avr__inttypes_g570ca9af5087023f75fc8a1a602d26ab) >> +>> endobj +7598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 338.331 266.327 347.178] +/A << /S /GoTo /D (group__avr__inttypes_gfa4303b077ae4c6c58686178e4b90d18) >> +>> endobj +7599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 327.372 258.955 336.219] +/A << /S /GoTo /D (group__avr__inttypes_g785eabe6337a2fa85874ae99300abb66) >> +>> endobj +7600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 316.414 233.122 325.26] +/A << /S /GoTo /D (group__avr__inttypes_g7276f64276fd7223ca6f4cca0444239a) >> +>> endobj +7601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 305.455 264.115 314.301] +/A << /S /GoTo /D (group__avr__inttypes_g1e5c50a1ca71da7ff8c4f3f007411be8) >> +>> endobj +7602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 294.496 256.743 303.342] +/A << /S /GoTo /D (group__avr__inttypes_g6ac7e3111d008785ddf3b29dcd088732) >> +>> endobj +7603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 283.537 233.122 292.383] +/A << /S /GoTo /D (group__avr__inttypes_gaf2af4a10f0bd308e9c349c8382382be) >> +>> endobj +7604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 272.578 264.115 281.425] +/A << /S /GoTo /D (group__avr__inttypes_gab353a2898377162c1829f1a9708352e) >> +>> endobj +7605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 261.619 256.743 270.466] +/A << /S /GoTo /D (group__avr__inttypes_gccc383115328197264988682edfcb72c) >> +>> endobj +7606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 250.66 233.122 259.507] +/A << /S /GoTo /D (group__avr__inttypes_g80ca66bcc9e366733f02c90ed4b0838c) >> +>> endobj +7607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 239.701 264.115 248.548] +/A << /S /GoTo /D (group__avr__inttypes_g1d766603a3524c9e03effbbece9c2118) >> +>> endobj +7608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 228.742 256.743 237.589] +/A << /S /GoTo /D (group__avr__inttypes_g22caa684d44725e1e6e638983380f68e) >> +>> endobj +7609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 217.783 235.333 226.63] +/A << /S /GoTo /D (group__avr__inttypes_g32b0c8a04aae5d4454d15e6cbe109f64) >> +>> endobj +7610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 206.824 266.327 215.671] +/A << /S /GoTo /D (group__avr__inttypes_gaf100a10f9cd73d46294fd0e8db5246d) >> +>> endobj +7611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 195.866 258.955 204.712] +/A << /S /GoTo /D (group__avr__inttypes_gce7057a6fa96ac7e2a05946ee96cf2d9) >> +>> endobj +7612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 184.907 241.43 193.753] +/A << /S /GoTo /D (group__avr__inttypes_g1468793ce960b477922ef92b36a6c802) >> +>> endobj +7613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 173.948 241.43 182.794] +/A << /S /GoTo /D (group__avr__inttypes_ga1ca3a85113e897b5cf7ed6b92d74de2) >> +>> endobj +7614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 162.989 241.43 171.836] +/A << /S /GoTo /D (group__avr__inttypes_g9c3c25e6145e629e4c9fabddc6061c30) >> +>> endobj +7615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 152.03 243.642 160.877] +/A << /S /GoTo /D (group__avr__inttypes_g65d9856517198cfc21558c0d6df64207) >> +>> endobj +7616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 141.071 236.997 149.918] +/A << /S /GoTo /D (group__avr__inttypes_g35974d44b5dcebcb222b8e2c1384241d) >> +>> endobj +7617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 130.112 267.991 138.959] +/A << /S /GoTo /D (group__avr__inttypes_g10db5de9c84ccfa6dc0e487dd72051f3) >> +>> endobj +7618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 119.153 260.619 128] +/A << /S /GoTo /D (group__avr__inttypes_g09c9f36f654aa50a548d7820421cdc57) >> +>> endobj +7628 0 obj << +/D [7626 0 R /XYZ 132.768 705.06 null] +>> endobj +7625 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7661 0 obj << +/Length 665 +/Filter /FlateDecode +>> +stream +xÚŘ]o›0†ïùVwxþ÷bÒ¶6•ºiÚîÒªJƒÓ"%8#°%ÿ¾&&SÈBh¤8¹²ÁÏ{‡c8¼îœ/±ó±GP0ÝÄ€)…œE€‰2Aœ€¡Kˆ¹çc„›fE±šË|õ|"·—N¥éõåDæŽ\™õ-,pÄ]ï1¾wncç·ƒ5¼ÁP ŒgÎðDÞ©ˆÀßõÔ žŠ«…S0p~9¨VŽ m Ö;`ÀB „„k›u`è‡Úš‰|@ˆd²¬Ôå/µÌþzZeÚàë³Ý ª‘«ôªyí'(Bq2ð÷ÛσøHzt2zÏã{¼€“™ŸP²> endobj +7619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 656.14 234.785 664.986] +/A << /S /GoTo /D (group__avr__inttypes_g7b8508989273ad152f9b3b7cd4db6eee) >> +>> endobj +7620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 645.181 265.779 654.027] +/A << /S /GoTo /D (group__avr__inttypes_g14ec2649667b53ff91a1103c02975837) >> +>> endobj +7621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 634.222 258.407 643.068] +/A << /S /GoTo /D (group__avr__inttypes_gad333b5bea32321b312a3b4967ff357f) >> +>> endobj +7622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 623.263 236.997 632.109] +/A << /S /GoTo /D (group__avr__inttypes_g2b7ab77ff6ede9c3c285b714496f77e2) >> +>> endobj +7623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 612.304 267.991 621.151] +/A << /S /GoTo /D (group__avr__inttypes_ge36c293972a5b770349d74f2c0cfa52f) >> +>> endobj +7624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 601.345 260.619 610.192] +/A << /S /GoTo /D (group__avr__inttypes_gdd733be35bef9dcef225edc99ade9e33) >> +>> endobj +7629 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 590.386 234.785 599.233] +/A << /S /GoTo /D (group__avr__inttypes_g52cfc41a1e5ad73788faebbfeb9c14b0) >> +>> endobj +7630 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 579.427 265.779 588.274] +/A << /S /GoTo /D (group__avr__inttypes_g39be8ffb41be80bc951e955f111e4121) >> +>> endobj +7631 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 568.468 258.407 577.315] +/A << /S /GoTo /D (group__avr__inttypes_g4739f89fa519cd77097677bf33320091) >> +>> endobj +7632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 557.509 245.306 566.356] +/A << /S /GoTo /D (group__avr__inttypes_gbf657ee6bd4b009b5b072840a3d7364f) >> +>> endobj +7633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 546.551 243.094 555.397] +/A << /S /GoTo /D (group__avr__inttypes_g9c632ab51b24b93cc315b27a883be9eb) >> +>> endobj +7634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 535.592 236.997 544.438] +/A << /S /GoTo /D (group__avr__inttypes_g9bc6b517c0117327e832824ff2d6a6b5) >> +>> endobj +7635 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 524.633 267.991 533.479] +/A << /S /GoTo /D (group__avr__inttypes_g5b05c70b4807922992a9ca529361b44d) >> +>> endobj +7636 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 513.674 260.619 522.52] +/A << /S /GoTo /D (group__avr__inttypes_g021e130b06fc46198c71dca0fdf89788) >> +>> endobj +7637 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 502.715 236.997 511.562] +/A << /S /GoTo /D (group__avr__inttypes_g37bbde0e3f124b7f482d54adb13b0248) >> +>> endobj +7638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 491.756 267.991 500.603] +/A << /S /GoTo /D (group__avr__inttypes_g7a78b92618044bb2d798b57fc6a2e439) >> +>> endobj +7639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 480.797 260.619 489.644] +/A << /S /GoTo /D (group__avr__inttypes_g7cf58abc57bb03d809e6fc41c2a40c33) >> +>> endobj +7640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 469.838 236.997 478.685] +/A << /S /GoTo /D (group__avr__inttypes_g12dbc2ac6a36b893ef1c25c357f90a9f) >> +>> endobj +7641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 458.879 267.991 467.726] +/A << /S /GoTo /D (group__avr__inttypes_g24647dd309d4138846376a51a6098304) >> +>> endobj +7642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 447.92 260.619 456.767] +/A << /S /GoTo /D (group__avr__inttypes_g8b67140c216180e4e5d18003038ee689) >> +>> endobj +7643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 436.961 236.997 445.808] +/A << /S /GoTo /D (group__avr__inttypes_gb561c947d62a3c7cd396d4aeef553f3c) >> +>> endobj +7644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 426.003 267.991 434.849] +/A << /S /GoTo /D (group__avr__inttypes_g6b324310e03b8ecbe6888a52b7d8581d) >> +>> endobj +7645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 415.044 260.619 423.89] +/A << /S /GoTo /D (group__avr__inttypes_ge40f8b90cb75998e70910e7b377288a8) >> +>> endobj +7646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 404.085 236.997 412.931] +/A << /S /GoTo /D (group__avr__inttypes_gbd19a83130f8d1bd2f77b765ad804f75) >> +>> endobj +7647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 393.126 267.991 401.973] +/A << /S /GoTo /D (group__avr__inttypes_ge30d5cc7dbc15051e21b72229a2487f7) >> +>> endobj +7648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 382.167 260.619 391.014] +/A << /S /GoTo /D (group__avr__inttypes_g4ce14b7ebee0cfd5c4c935cf79a9a504) >> +>> endobj +7649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 371.208 236.997 380.055] +/A << /S /GoTo /D (group__avr__inttypes_g4c5370556f793ac7b2c3abe896dba8e2) >> +>> endobj +7650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 360.249 267.991 369.096] +/A << /S /GoTo /D (group__avr__inttypes_gbd82b99090a28a84541959ac7ab14ad9) >> +>> endobj +7651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 349.29 260.619 358.137] +/A << /S /GoTo /D (group__avr__inttypes_gc45f394be3c199938a85a631711ce22e) >> +>> endobj +7652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 338.331 245.306 347.178] +/A << /S /GoTo /D (group__avr__inttypes_g4a30d36e06018d8e13046079098905a0) >> +>> endobj +7653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 327.372 245.306 336.219] +/A << /S /GoTo /D (group__avr__inttypes_gb7dbf5d0ea41679dface5855896e4273) >> +>> endobj +7654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 316.414 245.306 325.26] +/A << /S /GoTo /D (group__avr__inttypes_ga58d290d968643862aec7a8a56e1c8e9) >> +>> endobj +7655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 237.579 231.458 248.483] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +7656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 237.579 279.228 248.483] +/A << /S /GoTo /D (group__avr__inttypes_g5082b177b7d7b2039652c26a72b96d18) >> +>> endobj +7657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 226.62 236.439 237.524] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 226.62 289.191 237.524] +/A << /S /GoTo /D (group__avr__inttypes_g72b6692e3f3123903c1a0d9a960c59b1) >> +>> endobj +7662 0 obj << +/D [7660 0 R /XYZ 132.768 705.06 null] +>> endobj +7663 0 obj << +/D [7660 0 R /XYZ 133.768 276.568 null] +>> endobj +2695 0 obj << +/D [7660 0 R /XYZ 133.768 217.654 null] +>> endobj +7659 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7687 0 obj << +/Length 902 +/Filter /FlateDecode +>> +stream +xÚ͘moÛ6ÇßëSÙ ˜¸;>HdߥMܹk²5ÑI!Ȳ u¤T–·äÛzJeOkc×üÂE“Çßÿtw äŽyk½¬_FÌ#šjÏ<‚AΩï)âiI=$˜’› ŠÊqì4§sÇeìQºHšÖU2K +•dqÕ…¾V6—à| +ÞYçõÅB³ì™GªA’øÞºùdjþ|G€r­È?õÐ{Â…ŠÕŶ>X°ÁŒÆ‚”l Zú”q¹ ´!ÝðטàB÷ÌQl ž%ed,MSgÉ2.Ò‡2ͳgC=¼Ê’g,õ¼©[;‹<þ¼3ZO¨~Ù¦¨³ä€eɲþR‡ÍjÐ +®ÍDF%ãÍÄ[ÆäÚrãJ³úOÓÖâµÊ”2£k ᩃBÚ]…ïó[økØÎè¯ìkê ìfàú‚.Õš0dTᾸ*š‹ó‹š*¸”|棲,Ò‰ÃÀ^•IÞ‚„ê·LâÚݵÿ«ŽZ}åÓÄî·¡DûTúüB^ƒë!%‚Jþ¬d•-Ó»¬‹˜xM+ +î¦ÝóJŸ[PÅÅž ö©cÖÿó½£™ hA0àw³+‡ÃãhÔyy3]ôЈÄå‚‚÷œA Úü¹Êù>ŠƒcLI«)ÃÅ][¯êaÖEøÇxszÕÏ) +”šy&b”ö5g\ ƒ!øúhØ> ¾sýáÊñÀØR‚!—ã>-A(è)åêÒáÒ>½ +椋2ÍÂ,Êê¼?ùoªïh|9_Žƒß'J³Y[žp xÝ.œ83)á7l£UV×±—Ç¡ø¶¨i¾š,¾£(ΗCb*övz+îqW×¾„bæ ØÑä‡Q@ïå>Ÿ¾ã禵ÞûtHG¶ÙNpu ¢èG’0åXê¯eø@±T+üº›*Z l§(4±7•Ë4;‚ \~)Ê#À(£cpFy^Iœ¤‹c(YEâ ´¶KÇ4+‡r‘ù”Û.Z€¡|4û +S|obÓŶ]ÿ˺¿/²âA÷³«Î¡‚¥Ùü8*Ø΃wZQsxÛâ&£»Áð¨ö¹ê_`(M¹×ëß&YRDewlèN”Á|Õ#â¦!šÂ+Æ_UWÕh[3‡I;oÏtQõòwápßv餵0yjMæOwI¶)ù_Üà@> +endstream +endobj +7686 0 obj << +/Type /Page +/Contents 7687 0 R +/Resources 7685 0 R +/MediaBox [0 0 612 792] +/Parent 7524 0 R +/Annots [ 7664 0 R 7665 0 R 7666 0 R 7667 0 R 7668 0 R 7669 0 R 7670 0 R 7671 0 R 7672 0 R 7673 0 R 7674 0 R 7675 0 R 7676 0 R 7677 0 R 7678 0 R 7679 0 R 7680 0 R 7681 0 R 7682 0 R ] +>> endobj +7664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 389.435 214.186 399.363] +/A << /S /GoTo /D (group__avr__math_ge71449b1cc6e6250b91f539153a7a0d3) >> +>> endobj +7665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 376.022 235.178 386.553] +/A << /S /GoTo /D (group__avr__math_g66b3ab30f1332874326ed93969e496e0) >> +>> endobj +7666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 363.212 212.722 373.743] +/A << /S /GoTo /D (group__avr__math_g8abfcc76130f3f991d124dd22d7e69bc) >> +>> endobj +7667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 350.403 234.65 360.933] +/A << /S /GoTo /D (group__avr__math_g956e2723d559858d08644ac99146e910) >> +>> endobj +7668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 295.812 202.56 306.342] +/A << /S /GoTo /D (group__avr__math_g542f5e42e0d3b5df63de0e34ec06bb40) >> +>> endobj +7669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 283.002 205.778 293.532] +/A << /S /GoTo /D (group__avr__math_g0838a00d86d5e920c80aa7c7532a5559) >> +>> endobj +7670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 269.818 210.311 280.722] +/A << /S /GoTo /D (group__avr__math_gefa8edb8c13adf7fb4b6b7dbe7261a24) >> +>> endobj +7671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 257.009 210.311 267.912] +/A << /S /GoTo /D (group__avr__math_g85861fee92c0904e9bb7a9875ee77579) >> +>> endobj +7672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 244.572 200.906 255.103] +/A << /S /GoTo /D (group__avr__math_g46e799ece7e1dd323d22cdb53c81cd73) >> +>> endobj +7673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 231.389 204.224 242.293] +/A << /S /GoTo /D (group__avr__math_gdd1e40e370b2165c186f72ec631b1853) >> +>> endobj +7674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 218.952 201.454 229.483] +/A << /S /GoTo /D (group__avr__math_ga2c2303658b8b2555bc97cce3f806bda) >> +>> endobj +7675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 206.143 208.099 216.673] +/A << /S /GoTo /D (group__avr__math_g0f0bf9ac2651b80846a9d9d89bd4cb85) >> +>> endobj +7676 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 193.333 203.666 203.863] +/A << /S /GoTo /D (group__avr__math_g61470611f23ceef5d3e9cf63d84cd8a7) >> +>> endobj +7677 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 180.149 210.152 191.053] +/A << /S /GoTo /D (group__avr__math_g89f0cb053e3cdb0c9c952ef040087c80) >> +>> endobj +7678 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 167.339 211.268 178.243] +/A << /S /GoTo /D (group__avr__math_g91643e944a94341bd2a3ed1d3ffbae4f) >> +>> endobj +7679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 154.529 203.517 165.433] +/A << /S /GoTo /D (group__avr__math_g4ea549372745dda4018ab4b5a94483a6) >> +>> endobj +7680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 142.093 207.541 152.623] +/A << /S /GoTo /D (group__avr__math_g2ec1caf3ba3b1ba62eccb3eddf029438) >> +>> endobj +7681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 129.283 205.888 139.814] +/A << /S /GoTo /D (group__avr__math_gae45da8f56ba936dc8624157d1770faa) >> +>> endobj +7682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 116.473 206.436 127.004] +/A << /S /GoTo /D (group__avr__math_gf4b72825a245b794090135251f0ead22) >> +>> endobj +7688 0 obj << +/D [7686 0 R /XYZ 132.768 705.06 null] +>> endobj +1277 0 obj << +/D [7686 0 R /XYZ 133.768 667.198 null] +>> endobj +1281 0 obj << +/D [7686 0 R /XYZ 133.768 650.367 null] +>> endobj +3743 0 obj << +/D [7686 0 R /XYZ 133.768 624.139 null] +>> endobj +1285 0 obj << +/D [7686 0 R /XYZ 133.768 624.139 null] +>> endobj +1289 0 obj << +/D [7686 0 R /XYZ 133.768 599.676 null] +>> endobj +7689 0 obj << +/D [7686 0 R /XYZ 133.768 551.002 null] +>> endobj +7690 0 obj << +/D [7686 0 R /XYZ 133.768 551.002 null] +>> endobj +7691 0 obj << +/D [7686 0 R /XYZ 133.768 537.032 null] +>> endobj +7692 0 obj << +/D [7686 0 R /XYZ 133.768 523.719 null] +>> endobj +7693 0 obj << +/D [7686 0 R /XYZ 133.768 510.535 null] +>> endobj +2981 0 obj << +/D [7686 0 R /XYZ 133.768 485.855 null] +>> endobj +1293 0 obj << +/D [7686 0 R /XYZ 133.768 480.667 null] +>> endobj +1297 0 obj << +/D [7686 0 R /XYZ 133.768 455.965 null] +>> endobj +7694 0 obj << +/D [7686 0 R /XYZ 133.768 407.291 null] +>> endobj +7695 0 obj << +/D [7686 0 R /XYZ 133.768 314.271 null] +>> endobj +7685 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7719 0 obj << +/Length 525 +/Filter /FlateDecode +>> +stream +xÚÍ—Ks›0€ïü +a¦¨+Éâ‘c§MfrkÊÍÎd0¬é¯/2±3iBj“p’VZIŸv—E (E€®Œoñõ’:ÈǾÓ6A‚cØu<äø;>AAŒ–&]` +–MÀÌÃjƒ7–M9˜—2}ïF$¢°ˆg +uCÀøÂdœX·Áµñ#0î Òˆ@°E¹±¼·“×0ó=ô°WÍ[´ª¤[˜¡_ÆOj8¢‡Cz-©‹îbÊxO¿¢”ï9ס¥Íۛĺ^·üýL‡V¤ãÍ^§»WéòùÚn|†õ{ùînבcU@6¡Øçä ¥T'sÐ3pT¡š…=Z:¤±n~é¥DÌt:µæಭ¶(7F¢¼è°æ¿-%Uõ:,Õô‘=‚BªdQSÞ×a!¦¶GY…•ŒŽ<ý*U¤·³)eª&Š£3zËüs¢|]ž÷ÏlúgZ£æánÎF•Ÿo¦”î[YËjI¥*j}dN‘oWTÉJÌá¹±¸Ùlu5ß8/t­â©M•i•¾ñ¦9=ã)ÂÞñbUä{Øe爫+8û.ó+8ÏÇÌJ +¡DV"îq´êÛ`S÷ïbøb}Cà‚² âõzI÷„ÓE/„ð»°˜kÚ™\;¬›aK½kR¡ž_ù/®ægå +endstream +endobj +7718 0 obj << +/Type /Page +/Contents 7719 0 R +/Resources 7717 0 R +/MediaBox [0 0 612 792] +/Parent 7721 0 R +/Annots [ 7683 0 R 7684 0 R 7696 0 R 7697 0 R 7698 0 R 7699 0 R 7700 0 R 7701 0 R 7702 0 R 7703 0 R 7704 0 R 7705 0 R 7706 0 R 7707 0 R 7708 0 R 7709 0 R 7710 0 R 7711 0 R 7712 0 R 7713 0 R 7714 0 R 7715 0 R ] +>> endobj +7683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 654.456 206.983 664.986] +/A << /S /GoTo /D (group__avr__math_ge9c5790d8a29cbee8f54f8eb522decbc) >> +>> endobj +7684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 641.504 205.33 652.035] +/A << /S /GoTo /D (group__avr__math_g98384ad60834911ec93ac5ae1af4cf0a) >> +>> endobj +7696 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 628.553 205.878 639.083] +/A << /S /GoTo /D (group__avr__math_g3abd1a0b68d157914a0ee01acaedfe5e) >> +>> endobj +7697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 615.228 210.859 626.132] +/A << /S /GoTo /D (group__avr__math_g054230cd7e4c12958dbfac75ab6886e5) >> +>> endobj +7698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 602.277 202.012 613.18] +/A << /S /GoTo /D (group__avr__math_g7f7d556ab6b6235777a179647c152126) >> +>> endobj +7699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 589.325 211.975 600.229] +/A << /S /GoTo /D (group__avr__math_g3630cb8cef4560cf0d92e82ae05b03f0) >> +>> endobj +7700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 576.374 206.187 587.278] +/A << /S /GoTo /D (group__avr__math_g41b41c307b8f96760e9c0c17180b241b) >> +>> endobj +7701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 563.796 193.713 574.326] +/A << /S /GoTo /D (group__avr__math_g468be9ed380771eca5a18e812b2470d4) >> +>> endobj +7702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 550.844 190.395 561.375] +/A << /S /GoTo /D (group__avr__math_g18a7409e0b2341afaa41993960961772) >> +>> endobj +7703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 537.519 215.282 548.423] +/A << /S /GoTo /D (group__avr__math_gd11825ff1d6095a08b193c564d524aef) >> +>> endobj +7704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.809 524.568 248.677 535.472] +/A << /S /GoTo /D (group__avr__math_gaebf29a8e50e6d8f88b6caf697021c86) >> +>> endobj +7705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 511.617 208.099 522.52] +/A << /S /GoTo /D (group__avr__math_g63fcb86a13cf17110582fd6560fb09dd) >> +>> endobj +7706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 498.665 204.772 509.569] +/A << /S /GoTo /D (group__avr__math_gf7fbeddc2e7721682e69f59be04ae9d5) >> +>> endobj +7707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 485.714 209.753 496.618] +/A << /S /GoTo /D (group__avr__math_gfd8ab12e9d230e8213ac0c8b77c306d9) >> +>> endobj +7708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 472.762 208.099 483.666] +/A << /S /GoTo /D (group__avr__math_g577eee92b9969942de4d8d134d37c7b8) >> +>> endobj +7709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 459.811 199.81 470.715] +/A << /S /GoTo /D (group__avr__math_g36894d73110fda52c84dfc050f1004bb) >> +>> endobj +7710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 447.233 209.753 457.763] +/A << /S /GoTo /D (group__avr__math_g1883497d16352bd92875499f1b39a4b6) >> +>> endobj +7711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.211 434.282 223.331 444.812] +/A << /S /GoTo /D (group__avr__math_gfb997a6a8d6dd0498238098826998aa0) >> +>> endobj +7712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 420.956 211.925 431.86] +/A << /S /GoTo /D (group__avr__math_g711412ca8746712e0f19508118bf5154) >> +>> endobj +7713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 408.379 212.523 418.909] +/A << /S /GoTo /D (group__avr__math_g6eb04604d801054c5a2afe195d1dd75d) >> +>> endobj +7714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 395.054 205.888 405.958] +/A << /S /GoTo /D (group__avr__math_ga759c9a1684b0cf2c4c5d133771192ce) >> +>> endobj +7715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 382.102 196.483 393.006] +/A << /S /GoTo /D (group__avr__math_g9b995838b7bdd4886549dd7e308d0619) >> +>> endobj +7720 0 obj << +/D [7718 0 R /XYZ 132.768 705.06 null] +>> endobj +3744 0 obj << +/D [7718 0 R /XYZ 133.768 373.136 null] +>> endobj +7717 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7724 0 obj << +/Length 251 +/Filter /FlateDecode +>> +stream +xÚ•P=oà Üùo„ÁôCƨM¤lmÙ¢ ŽãHþP­4iþ}í`K‘:uº;xÜãá[²öäe# 8î̾¡ÏŒã47N€/aOeÊ%²D "móKÍk–HtsnBd¡ +–†®˜ŽPé”*-ÙÁïÈ›'_DŒ ÄÓÁj(Z²? ”ãå+gáömA¥ã¨˜6ðIÞ Î¿^𯩳`WFÇüÛÐ…!¿„2†í»ˆ¾þŽä5‘¤®¤Z •DœYŤ¦ýE>‰ëÀTF“æ|œŽ÷Ù²ÿ¹ŸB÷èoÉ;öø /Èb5 +endstream +endobj +7723 0 obj << +/Type /Page +/Contents 7724 0 R +/Resources 7722 0 R +/MediaBox [0 0 612 792] +/Parent 7721 0 R +>> endobj +7725 0 obj << +/D [7723 0 R /XYZ 132.768 705.06 null] +>> endobj +1301 0 obj << +/D [7723 0 R /XYZ 133.768 667.198 null] +>> endobj +7722 0 obj << +/Font << /F26 1917 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7728 0 obj << +/Length 538 +/Filter /FlateDecode +>> +stream +xÚ­–M›0†ïü +K½ÀwìÁï±Jw¥=µ»Ü’UDˆ“ ’ºmþ}ÍWcÒZa aƒ=¯ŸÌx€ì 'ïSê}|ä’(ª¤iÒaˆ4– ‘JP©I·déóˆr„ üR—y~¾1øô5¹ÿ±8ê¾÷¢wºXâë*7¯X"÷Q`ð–>{ŸSï›Ç̺@˜µ£ +ÉKoùdkŸ PT ùÑM- Ff*k äÕûêÁ<3 +B𠽈)G1‹Þ ßÅHh´0R–.•ºÉŒÒ¶—ZèK^ç¦8U¿…,ÎVI%+¾Ü"< +˜Ah9Îâpý%`ÌQq#¿)Ecyv9ƒ8—Î>²´gþ&Ö&”Îøâ ŸËÆξsrc4—¸Äœ²àN&ËøïíM;¡T®(n”ÃìŒha"¸ÚÈþÄt¸%‘9‹§u¸\tãŽ;ƒ–sVMŸsÿñT¹7]è¯ô¥«YÆZÃ,v•$i„Ê2*å`¸â&ÃÛ6d +³ú‡í 8 ¶ÕO½Ê —nZ‹Õ{¿Öí?)Œ§ëMÑÜ)ú+ðÞÎÉŽ¦Ë&Ã-°TBcüŸòj,«$U1&vU•(ŠrHëOºÒuÖŒA5±ìÚôð}ŒrÞw¢¾aðÀñ%ýz»Ö—SÝ?dóu€±‹Í °¹’§Ÿ×½®î]þ* ¦Ù +endstream +endobj +7727 0 obj << +/Type /Page +/Contents 7728 0 R +/Resources 7726 0 R +/MediaBox [0 0 612 792] +/Parent 7721 0 R +/Annots [ 7716 0 R ] +>> endobj +7716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 -24.574 253.628 -13.67] +/A << /S /GoTo /D (group__util__parity_g4180eaa9b8f27f8efc589f3a3ba1724c) >> +>> endobj +7729 0 obj << +/D [7727 0 R /XYZ 132.768 705.06 null] +>> endobj +1305 0 obj << +/D [7727 0 R /XYZ 133.768 648.084 null] +>> endobj +3745 0 obj << +/D [7727 0 R /XYZ 133.768 624.139 null] +>> endobj +1309 0 obj << +/D [7727 0 R /XYZ 133.768 624.139 null] +>> endobj +1313 0 obj << +/D [7727 0 R /XYZ 133.768 599.676 null] +>> endobj +3746 0 obj << +/D [7727 0 R /XYZ 133.768 573.448 null] +>> endobj +1317 0 obj << +/D [7727 0 R /XYZ 133.768 573.448 null] +>> endobj +1321 0 obj << +/D [7727 0 R /XYZ 133.768 547.593 null] +>> endobj +3747 0 obj << +/D [7727 0 R /XYZ 133.768 522.758 null] +>> endobj +1325 0 obj << +/D [7727 0 R /XYZ 133.768 522.758 null] +>> endobj +1329 0 obj << +/D [7727 0 R /XYZ 133.768 496.011 null] +>> endobj +3748 0 obj << +/D [7727 0 R /XYZ 133.768 472.067 null] +>> endobj +1333 0 obj << +/D [7727 0 R /XYZ 133.768 472.067 null] +>> endobj +1337 0 obj << +/D [7727 0 R /XYZ 133.768 445.321 null] +>> endobj +3749 0 obj << +/D [7727 0 R /XYZ 133.768 421.376 null] +>> endobj +1341 0 obj << +/D [7727 0 R /XYZ 133.768 421.376 null] +>> endobj +1345 0 obj << +/D [7727 0 R /XYZ 133.768 394.63 null] +>> endobj +3750 0 obj << +/D [7727 0 R /XYZ 133.768 370.685 null] +>> endobj +1349 0 obj << +/D [7727 0 R /XYZ 133.768 370.685 null] +>> endobj +1353 0 obj << +/D [7727 0 R /XYZ 133.768 343.939 null] +>> endobj +3751 0 obj << +/D [7727 0 R /XYZ 133.768 319.994 null] +>> endobj +1357 0 obj << +/D [7727 0 R /XYZ 133.768 319.994 null] +>> endobj +1361 0 obj << +/D [7727 0 R /XYZ 133.768 295.532 null] +>> endobj +3752 0 obj << +/D [7727 0 R /XYZ 133.768 269.304 null] +>> endobj +1365 0 obj << +/D [7727 0 R /XYZ 133.768 269.304 null] +>> endobj +1369 0 obj << +/D [7727 0 R /XYZ 133.768 244.841 null] +>> endobj +3753 0 obj << +/D [7727 0 R /XYZ 133.768 218.613 null] +>> endobj +1373 0 obj << +/D [7727 0 R /XYZ 133.768 218.613 null] +>> endobj +1377 0 obj << +/D [7727 0 R /XYZ 133.768 194.15 null] +>> endobj +3754 0 obj << +/D [7727 0 R /XYZ 133.768 167.922 null] +>> endobj +1381 0 obj << +/D [7727 0 R /XYZ 133.768 167.922 null] +>> endobj +1385 0 obj << +/D [7727 0 R /XYZ 133.768 142.067 null] +>> endobj +3755 0 obj << +/D [7727 0 R /XYZ 133.768 117.231 null] +>> endobj +1389 0 obj << +/D [7727 0 R /XYZ 133.768 117.231 null] +>> endobj +1393 0 obj << +/D [7727 0 R /XYZ 133.768 92.769 null] +>> endobj +3810 0 obj << +/D [7727 0 R /XYZ 133.768 66.541 null] +>> endobj +1397 0 obj << +/D [7727 0 R /XYZ 133.768 66.541 null] +>> endobj +1401 0 obj << +/D [7727 0 R /XYZ 133.768 39.795 null] +>> endobj +7730 0 obj << +/D [7727 0 R /XYZ 133.768 -6.596 null] +>> endobj +7726 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7749 0 obj << +/Length 1177 +/Filter /FlateDecode +>> +stream +xÚÍYKoã6¾ûWèE:˜åð%ro»7Å¢ASÇ=% A±˜Ä@"§’Òmö×wôJlE±h¯Uô èarøÍ7ΘԻõ¨w:ù´˜üü™)Ï£ð¶¸ñ€s*í)#‰2à-ïÒg‚pLRê?Þ>äñÒ’»`Ê$õ?¯îmý4·76 @û6]â'Ð\ +¯àëâËd¶˜ü5\”z°±C¥·|˜\~¥^‚?~ñ(áF{ߪ¡8ʉ÷ÞÅä í ” %Û‚.C¸<:âí°B½i%Èl%Ј=±EŒ’’Zԉ͗Ùê±X­ÓRPwꉽ¢”¥6¯XiµÁåè¦ÜàDF”j¹bLnÍñ.§Wÿ)i$öÀ”0­qt%!ŠÎOÏ.΃Pø)ý_fѯQ3ksu-H¨Y; ¶“„†å‰‡ãaK­M¢|õÝFÅ.j¦Í¼z}v¼õ?Fú‹Å<:Ÿœú¿ŸžÍ΢>z€jBÑ*/3ã¢ÈV×£þSa£èŠJZ^Qô˜­oìCõ Ê«K¥Ð„K~|._uùs>ëUBaÂI‡§Ì¾¯"9?À“:d·MF˜WÃÊøAúECWJùs©´–[–zL u¦‹Å¼3Ý/éÉ+Nª!-cËušÁMªË»8«mbÓ¡Bƒn Zc Þc1AŒ†×1•=j}†Áæ|„(ýíü,ZÞÇy¾ZöúUˆiQ± ˜4N’¬!‚xô0.Úô.Æ<žô{~ˆë:!d! Å‘(4Û¿@ýu–ìä(ô ¨ˆPÇJŠïaÝIkeÏЫÄíEšqxM¾#¹ŠHåF®"ZŽDî6à† âpB¬(Á½eŠËô´Ž‹äšÁ)ׄÉqŠ¡[:¸× Å z€qF¨é7v³n¥âÀCF¸Öã汤!zH·±ºCcˆx)=Ç Äu” ’†Cê${éS¡Q£ºŸe$t¬7Q¾Ë,Š€6G-±S‹2'Ñõ3–£©­ë¦nùUâ±yåwë¬èhÐÖcï®ã?­ÒT§Ûب­ÞH«ú«LlX_µ~ñ¢}4/%l•3ÓªSÕM QuÔµF?BÎTX“ô3á&CÉ!U":ú?âè^¤á•¢6„÷ñ!݉ÿãEÑ»ôáAéq6ÔÅhJ4UN=à6=B3ìcŒÀ•0r쵉FÇb;$š §b[cÙÀG"Ô±ÐF£H§Bû.*F¢vf8aàįäXÇŒÅï>Ý Ãþ‹º‘¬°J#AvigÊ:MQ§æV¢_*:6ÖŽc͸uâkZCl_K£I(Ä®ÊsæÜÓBúßqŸ,Ñ×H*>¨Âž]€"•øB²ï;ÌurX£=Üà…`ã†AŸy¶èrP÷æ¦÷ÔÊ ó}άڳ*ELÈõæQ•6„·<§6µY\´çHë´¾/îžÚƒ¥eý êÐŒ]¿1J›§›€I´Tý—/gýéý꺑pý܈\ÿó|kÓ®Êÿ–Ú± +endstream +endobj +7748 0 obj << +/Type /Page +/Contents 7749 0 R +/Resources 7747 0 R +/MediaBox [0 0 612 792] +/Parent 7721 0 R +/Annots [ 7731 0 R 7732 0 R 7733 0 R 7734 0 R 7735 0 R 7736 0 R 7760 0 R 7737 0 R 7738 0 R 7761 0 R 7739 0 R 7740 0 R ] +>> endobj +7731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 531.89 241.464 541.817] +/A << /S /GoTo /D (group__avr__pgmspace_g75acaba9e781937468d0911423bc0c35) >> +>> endobj +7732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 518.335 215.302 528.866] +/A << /S /GoTo /D (group__avr__pgmspace_g05ca900ebf7cd121be73c654d9ccb3eb) >> +>> endobj +7733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 349.593 275.596 360.497] +/A << /S /GoTo /D (group__avr__pgmspace_g88d7dd4863f87530e1a34ece430a587c) >> +>> endobj +7734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.594 349.593 409.801 360.497] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.276 336.642 298.591 347.546] +/A << /S /GoTo /D (group__avr__pgmspace_gf51eeaa847dd2668d2a66b70ecfb7398) >> +>> endobj +7736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 336.642 478.476 347.546] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 325.06 162.441 335.591] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.295 311.735 298.591 322.639] +/A << /S /GoTo /D (group__avr__pgmspace_g7fa92c0a662403a643859e0f33b0a182) >> +>> endobj +7738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 311.735 478.476 322.639] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 300.154 162.441 310.684] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.805 286.829 276.459 297.733] +/A << /S /GoTo /D (group__avr__pgmspace_g066040df814dabc7980cd1422508b46b) >> +>> endobj +7740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.457 286.829 433.664 297.733] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7750 0 obj << +/D [7748 0 R /XYZ 132.768 705.06 null] +>> endobj +2640 0 obj << +/D [7748 0 R /XYZ 133.768 667.198 null] +>> endobj +1405 0 obj << +/D [7748 0 R /XYZ 133.768 667.198 null] +>> endobj +1409 0 obj << +/D [7748 0 R /XYZ 133.768 648.084 null] +>> endobj +7751 0 obj << +/D [7748 0 R /XYZ 133.768 601.693 null] +>> endobj +7752 0 obj << +/D [7748 0 R /XYZ 133.768 601.693 null] +>> endobj +7753 0 obj << +/D [7748 0 R /XYZ 133.768 587.581 null] +>> endobj +7754 0 obj << +/D [7748 0 R /XYZ 133.768 574.629 null] +>> endobj +7755 0 obj << +/D [7748 0 R /XYZ 133.768 560.801 null] +>> endobj +7756 0 obj << +/D [7748 0 R /XYZ 133.768 418.709 null] +>> endobj +7757 0 obj << +/D [7748 0 R /XYZ 133.768 405.758 null] +>> endobj +7758 0 obj << +/D [7748 0 R /XYZ 133.768 392.806 null] +>> endobj +7759 0 obj << +/D [7748 0 R /XYZ 133.768 379.855 null] +>> endobj +7762 0 obj << +/D [7748 0 R /XYZ 133.768 227.426 null] +>> endobj +7763 0 obj << +/D [7748 0 R /XYZ 133.768 201.524 null] +>> endobj +7764 0 obj << +/D [7748 0 R /XYZ 133.768 175.621 null] +>> endobj +7765 0 obj << +/D [7748 0 R /XYZ 133.768 162.669 null] +>> endobj +7766 0 obj << +/D [7748 0 R /XYZ 133.768 149.718 null] +>> endobj +7767 0 obj << +/D [7748 0 R /XYZ 133.768 136.766 null] +>> endobj +7747 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7814 0 obj << +/Length 1154 +/Filter /FlateDecode +>> +stream +xÚÍYÛŽÛ6}÷Wè‹Ô ‡]ò–"»‹]Ôuݼì‚Ö¢/€-»º$u¿¾¤%íʲdëæ4@–BrxÎá gHam©aíaôËlôšƒSþÌPŠ,ÓÖL‡#ÓmækO:aˆ2c c}¿ÜF{o.ÐÊŽõûõF¤OS±¡¶.‚¹ü/°)g:åÜø2û4º›þœkP˜ƒ¹6ߎž¾`Í—Ÿ4Œ¨ckߎ]·e²+¨íÏÑ#œ!Ç' p‘Lj`K3¹…å)ƒgBRù8íiÌ%›Ÿ|ñŒ1 DÖ¨Ð…Ë æôØMQ“¤ÝPx¾ûrˆ…»0ë^X²§?cŽ=ßE¹›]°”ï*ãºw¿MU»ú«JOÖAL‰WX†*ëÇNúbm 9úÓ¦ÞxS”w¡ß’»²‘’µÐX…±ê¡ÙˆIGƒtž­eyƹ9¥é­ØEün"d"ù?žJý=‰:Ö›H²3Ýyq;‰¨cæ +e㇋¥Z¿›m0—D‰V»0~ÛYN7¦@xauç[mE¹ïvÿ:-)  >v*B¸)lWÅÿÿ»YˆtY†<:¿ÿ*H“‡GwR¯æ» Š¯wKw¾*m(ïî+ˆØŽlJáJ²¥î'…Ä8ï?ä*)’Ÿ †õßýØíWƒHo[û[€€ZeÆ¥šO¦ qËÔÆ” p²ýofXL?ì…/Ñ%™ÀDŒJ‘A¦y¥ÜŠS{©×½H…™Uyx¼{ìJ¾m` 9:O$gN×6:NP$A´^Âï‡)¹ª¡4ç’Ö>K°àVع Þd(ÀIÄd…ÁHâ3C7ÓxÈI#Ì©\Q)vSùÌÐÍTrÒó@*›l •Ï ÝLåa WZ:ËÂY"-&áû$˜ÇkY •+ëè[±¯Âê*EU‡%[ ÿläkß|ÈLÍuo“5Dë…ûÚ¶AçªXMqýv_>­³N+‘cmtZA<쯨 Š+ÀcCÞ'£Z¯N*Bñzèñy6›º“¿¦w®[:o¡Hž›ã2Dr±hEý[–°DÏ’ÃH>LéºW'C½¶0Xqv3=KºÉó<³ ™C]ÀL±¬¢¡½nNq˜ÔMþ;׌YôGÖEÄ ™–ÓR?ÆíL¥ì¥ZL5wÑ9´¢s¦w%ò\„ãìôº¤Òq[\”´Ü˜ÂwgÊ‹ïóà“‹×3ø¢8œËóyý¦V=7—ç;Æ:ݤ"²E¦a`Ïõ5 ªh][Ï+ËØùv¢1¼ ÙÜaßT§ð5Lu5ØFئ <„ÔzHÃ\aY¥4Z›[‡ÒµÞ¬_2 /‡ÌäîŸÃReÊÿ!Œl +endstream +endobj +7813 0 obj << +/Type /Page +/Contents 7814 0 R +/Resources 7812 0 R +/MediaBox [0 0 612 792] +/Parent 7721 0 R +/Annots [ 7741 0 R 7742 0 R 7743 0 R 7744 0 R 7816 0 R 7745 0 R 7746 0 R 7817 0 R 7768 0 R 7769 0 R 7770 0 R 7771 0 R 7772 0 R 7773 0 R 7774 0 R 7775 0 R 7776 0 R 7777 0 R 7778 0 R 7779 0 R 7780 0 R 7781 0 R 7782 0 R 7783 0 R 7784 0 R 7785 0 R 7786 0 R 7787 0 R 7788 0 R 7789 0 R 7790 0 R 7791 0 R 7792 0 R 7793 0 R 7794 0 R 7795 0 R 7796 0 R 7797 0 R 7798 0 R 7799 0 R 7800 0 R 7801 0 R 7802 0 R 7803 0 R 7804 0 R 7805 0 R 7806 0 R 7807 0 R ] +>> endobj +7741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 654.082 269.409 664.986] +/A << /S /GoTo /D (group__avr__pgmspace_g0d4d7f6231716747c52b969d4febdeed) >> +>> endobj +7742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.282 654.082 407.49 664.986] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [210.432 641.131 293.559 652.035] +/A << /S /GoTo /D (group__avr__pgmspace_gd7082c45c2c96f015c76eff1ad00a99a) >> +>> endobj +7744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 641.131 478.476 652.035] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 629.176 162.441 640.08] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.45 616.224 293.559 627.128] +/A << /S /GoTo /D (group__avr__pgmspace_g309908c1b7430f0d140edb78fcf8f2b9) >> +>> endobj +7746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.72 616.224 478.476 627.128] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7817 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 604.269 162.441 615.173] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.96 591.318 271.428 602.222] +/A << /S /GoTo /D (group__avr__pgmspace_g4a5a593aa84062ca08b3f2d564a6f466) >> +>> endobj +7769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.457 591.318 433.664 602.222] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 566.411 253.469 577.315] +/A << /S /GoTo /D (group__avr__pgmspace_g73084a8bbde259ffae72980354b3f027) >> +>> endobj +7771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 553.46 256.687 564.364] +/A << /S /GoTo /D (group__avr__pgmspace_g32d8ab354156f4b1ffdb77a275ba6223) >> +>> endobj +7772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.087 540.508 261.256 551.412] +/A << /S /GoTo /D (group__avr__pgmspace_gbb68859ac5dfa6a09ac048b4037a83b6) >> +>> endobj +7773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 527.557 254.027 538.461] +/A << /S /GoTo /D (group__avr__pgmspace_g7911bddb066a8a038efc4b7857728fa8) >> +>> endobj +7774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 514.605 223.601 525.509] +/A << /S /GoTo /D (group__avr__pgmspace_g963f816fc88a5d8479c285ed4c630229) >> +>> endobj +7775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.621 514.605 290.002 525.509] +/A << /S /GoTo /D (group__avr__pgmspace_ga475b6b81fd8b34de45695da1da523b6) >> +>> endobj +7776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 501.654 253.08 512.558] +/A << /S /GoTo /D (group__avr__pgmspace_g84a61d55b7efefabd8419e28f02704f9) >> +>> endobj +7777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [277.1 501.654 319.85 512.558] +/A << /S /GoTo /D (group__avr__pgmspace_gdb50761b9f19d45449445208778ee420) >> +>> endobj +7778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.515 446.794 305.264 457.698] +/A << /S /GoTo /D (group__avr__pgmspace_gdb50761b9f19d45449445208778ee420) >> +>> endobj +7779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.146 433.843 304.527 444.747] +/A << /S /GoTo /D (group__avr__pgmspace_ga475b6b81fd8b34de45695da1da523b6) >> +>> endobj +7780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [300.612 420.891 347.974 431.795] +/A << /S /GoTo /D (group__avr__pgmspace_g7d4701843a2019e3ef5a9866dc7586ed) >> +>> endobj +7781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 407.94 215.292 418.844] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +7782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [268.253 407.94 316.741 418.844] +/A << /S /GoTo /D (group__avr__pgmspace_g48c7cb011ea5f82f4b73df40e07dff46) >> +>> endobj +7783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 394.989 220.273 405.892] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7784 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 394.989 326.704 405.892] +/A << /S /GoTo /D (group__avr__pgmspace_g39235a28487ae7790ce5f4c8178c8ed7) >> +>> endobj +7785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 382.037 220.273 392.941] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +7786 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 382.037 326.704 392.941] +/A << /S /GoTo /D (group__avr__pgmspace_gafc910d0b2c4d76afffa4710b98df6fa) >> +>> endobj +7787 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 369.086 225.255 379.99] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +7788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.216 369.086 336.666 379.99] +/A << /S /GoTo /D (group__avr__pgmspace_g93ec00229866bf6a125384ad08cefa73) >> +>> endobj +7789 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 356.134 220.273 367.038] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +7790 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 356.134 326.704 367.038] +/A << /S /GoTo /D (group__avr__pgmspace_ga839901aa518fb43d361588dd8d2b44b) >> +>> endobj +7791 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 343.183 225.255 354.087] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +7792 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.216 343.183 336.666 354.087] +/A << /S /GoTo /D (group__avr__pgmspace_g31bad0d22ead95a41e725c38ea63eb26) >> +>> endobj +7793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 330.231 220.273 341.135] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +7794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.234 330.231 326.704 341.135] +/A << /S /GoTo /D (group__avr__pgmspace_g5b1f9927f06d841e9ac07af62e71cfef) >> +>> endobj +7795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.047 317.28 225.255 328.184] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +7796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.216 317.28 336.666 328.184] +/A << /S /GoTo /D (group__avr__pgmspace_ga50eebe90a40e0276bcc49ea0482b211) >> +>> endobj +7797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.758 262.794 266.918 273.324] +/A << /S /GoTo /D (group__avr__pgmspace_g287a70fef8531ad6aa9a2f73ee4fa162) >> +>> endobj +7798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 249.469 220.283 260.373] +/A << /S /GoTo /D (group__avr__pgmspace_g51805e7bf43ffd1a70a045994a907768) >> +>> endobj +7799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 236.517 231.88 247.421] +/A << /S /GoTo /D (group__avr__pgmspace_g53ee9e2dec1d5f685d78aa8dc444dccb) >> +>> endobj +7800 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.472 223.94 240.836 234.47] +/A << /S /GoTo /D (group__avr__pgmspace_g851eaa0bd303b445f6ea70db31059fef) >> +>> endobj +7801 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.758 199.033 270.236 209.563] +/A << /S /GoTo /D (group__avr__pgmspace_gb2614cd3f6b0196d3070b158f1ad05bd) >> +>> endobj +7802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 186.082 218.879 196.612] +/A << /S /GoTo /D (group__avr__pgmspace_g1617c6719e65951f109fe29b18c2bd35) >> +>> endobj +7803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.279 173.13 227.476 183.66] +/A << /S /GoTo /D (group__avr__pgmspace_g7c26394eea1ddcc33fb698833b9aa9b2) >> +>> endobj +7804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.279 160.179 240.208 170.709] +/A << /S /GoTo /D (group__avr__pgmspace_gf5c3724d0e89d5952738b8c8da004e0a) >> +>> endobj +7805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 146.854 210.321 157.758] +/A << /S /GoTo /D (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a) >> +>> endobj +7806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 133.902 221.549 144.806] +/A << /S /GoTo /D (group__avr__pgmspace_g9c3ff50bdf59b38219394ff5230660da) >> +>> endobj +7807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 120.951 227.466 131.855] +/A << /S /GoTo /D (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01) >> +>> endobj +7815 0 obj << +/D [7813 0 R /XYZ 132.768 705.06 null] +>> endobj +7818 0 obj << +/D [7813 0 R /XYZ 133.768 463.865 null] +>> endobj +7819 0 obj << +/D [7813 0 R /XYZ 133.768 281.394 null] +>> endobj +7812 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7833 0 obj << +/Length 1178 +/Filter /FlateDecode +>> +stream +xÚÍX[oÛ6~÷¯<°˜ááMd†>¤Ë-Ìs½=,)Efo¶ìIrÚ¬èiJ±äØ®;H_,Ræ¹|ß¹ön=ì7Þõ‡gDx +)aý(E¾žP ^à]¶C”µ;€1nMoÇé4Œ4ºkwÇ­³áH»QOßè¤ ²¥ãȼI9kQ.ÚŸú§ýÆ¿ 0F±%#€æ^4n\~ÂÞÀüùÁÈ*é}ž/{”™¥`GÞÇÆï œ{Ž+pLj`ßÜG„r‡àŠ>÷£ó.;Ü ‰îÂľ?<VÒA$ÌÌB'Œ1Í…­÷Ém£w¾lÛGÌ'…Xš%Q˜jóºË¶-_W˜ãh§™£o+J ÎýeW–ì2¤$kœ¾îùEÐ56ÀMƒà¸ ­~¿tÿèAÕ§P1Ý‚‡Í¼¥Ãÿt­!%Çgñ§Óxð@L‚lþ‘õ HËàý·Ž²:t¤¢9d/tŒ¢0Û@Çš`ˆ{nÌAæ/œ—sªX•BLñ½F~MÛ€[õáš,”¬NÄkÃL±_¼zC¢/J±²ï5¹âï»° ;x;Z†ñEãéNÕaÁ÷œú[–?H„™Ø.BÛ‘aö‚] ¡fkƒ×áƒræ<°Ur¼ð®?§ +‚8á/ÚF›|5}i«œyqŽžÙ…óKóÄ‘ÏÉ‘KÓëäŸ]JRúæxº‡óIEzZï|"1gè­Ht¦¾×¢’è.©±ƒØ®—ûzß&¼Žž½Å½pS=­]\Ío%Ûk¢kG´Ýéªðôh8^Y + ùl¿G‘]ÏÜ`蓲NØ_NÄ„ú1rf·k›oŽÔõ..u®mK—v³; Ä°iÔœl+ÝÚÉïí'Ú8Aâü®~2‰fcga6œÄV£­T+À+²réŸñ 8ýµ{D£0M‡QXNÂÁ )2|^÷>$wå϶"¦?ÌôQ…ÑâyxF© €ò1X8ÖŽ°yþ’é85Þ:k_cÄzv”ÍM‚B@LîâEŽbfZ%¦d:ÏÒ¸H‰›½u««Xf½/#ù9_RXÀN9[(— ݉Ng£Ìˆ(¼B†…¦cÂp¼^³õÁ~?OàÉŠ¶æd–›CòÁ/Ðt£¦•ŒíOfÞ0¹Þ\s<¹w2 …BÏ»5zÈzpe=¸Ðs\COáMÇ+¥6Q»°þ¦0žà•Z8[oû(x›4ùQ×U¥ë(Ä«Ò.í¬ôÁ²¸Bܘ® _–ýxÖ ÞÿŸœôì¼w|Ñý+OSXÊÎNIײ;¸yP iy OR£SγE>ÚZ¹1³ è +ª¢ñÛ#†§ÍÌèe¦ñpYíDdc'´·>Ûï$:¾ ãH^«1qñÚ©¬|˜JÃ|¹òÓ¬’ȧu>ÌŸ’…a‹Êò§d©-€ŸëX'a¦.zfï™?ûw³|_Ò‘0÷|DèH73þç£{àœ$nÚÉ}Ò¦~«3^箊­îË펗!ÿÍ€k› +endstream +endobj +7832 0 obj << +/Type /Page +/Contents 7833 0 R +/Resources 7831 0 R +/MediaBox [0 0 612 792] +/Parent 7721 0 R +/Annots [ 7808 0 R 7809 0 R 7810 0 R 7811 0 R 7820 0 R 7821 0 R 7822 0 R 7823 0 R 7824 0 R 7825 0 R 7826 0 R 7827 0 R 7828 0 R 7829 0 R 7830 0 R ] +>> endobj +7808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 654.456 234.37 664.986] +/A << /S /GoTo /D (group__avr__pgmspace_gc75a4fcc7f301902eef58f8dea8e5cfd) >> +>> endobj +7809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 641.131 224.149 652.035] +/A << /S /GoTo /D (group__avr__pgmspace_gee6bf291c23054aca37533937a1d412f) >> +>> endobj +7810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 628.553 220.273 639.083] +/A << /S /GoTo /D (group__avr__pgmspace_g484117e1416429fc94efad8c66643164) >> +>> endobj +7811 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 615.228 222.943 626.132] +/A << /S /GoTo /D (group__avr__pgmspace_gabad6a32f133121973ea9c06e30cd33a) >> +>> endobj +7820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 602.65 218.061 613.18] +/A << /S /GoTo /D (group__avr__pgmspace_g3a8a479d2f1b4aef18a89316e3c9e0eb) >> +>> endobj +7821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 589.699 223.043 600.229] +/A << /S /GoTo /D (group__avr__pgmspace_g8ece6c08cef78e50f404072823e48752) >> +>> endobj +7822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 576.374 215.302 587.278] +/A << /S /GoTo /D (group__avr__pgmspace_g5048829165f57aef87bba38ba9126d1d) >> +>> endobj +7823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 563.422 232.447 574.326] +/A << /S /GoTo /D (group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) >> +>> endobj +7824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 550.844 223.86 561.375] +/A << /S /GoTo /D (group__avr__pgmspace_g11ed791b5d147f8d2ce01699a9c220ca) >> +>> endobj +7825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 537.519 226.53 548.423] +/A << /S /GoTo /D (group__avr__pgmspace_g8283f9a987be92ae137ee610e6b11b90) >> +>> endobj +7826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 524.568 225.524 535.472] +/A << /S /GoTo /D (group__avr__pgmspace_gd6de880a1dd672b52469fe986e3ec011) >> +>> endobj +7827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.279 511.99 230.794 522.52] +/A << /S /GoTo /D (group__avr__pgmspace_gb3a5f8b6324d77903d713917eb219f05) >> +>> endobj +7828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 498.665 220.542 509.569] +/A << /S /GoTo /D (group__avr__pgmspace_ga3bc55b47998e5ce1d8ddcf0be228638) >> +>> endobj +7829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 485.714 219.725 496.618] +/A << /S /GoTo /D (group__avr__pgmspace_g0ca5a2d8b5b1b4d899edb89535c36b69) >> +>> endobj +7830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 473.136 217.225 483.666] +/A << /S /GoTo /D (group__avr__pgmspace_g36c9c2de19d7e23c4a6bf63eee608af3) >> +>> endobj +7834 0 obj << +/D [7832 0 R /XYZ 132.768 705.06 null] +>> endobj +1413 0 obj << +/D [7832 0 R /XYZ 133.768 459.562 null] +>> endobj +7835 0 obj << +/D [7832 0 R /XYZ 133.768 436.876 null] +>> endobj +7836 0 obj << +/D [7832 0 R /XYZ 133.768 436.876 null] +>> endobj +7837 0 obj << +/D [7832 0 R /XYZ 133.768 214.379 null] +>> endobj +7838 0 obj << +/D [7832 0 R /XYZ 133.768 199.809 null] +>> endobj +7831 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7841 0 obj << +/Length 795 +/Filter /FlateDecode +>> +stream +xÚµ—[oÚ0ÇßùÓ¤D+žï‰©úЖ¶jµjE{èEV +¦E‚ÐèEÓ¾ûlœ@ÂŽ½ãpÎßÇÇöO'<ÎJGÒ×S"€„R˜G£ 0¥0!’C!1h´À­G¤Ì¯`„÷üØ“½Ô8Æe«n̲ íÏм +ÈòùʽþË«‹O(Ê”ÆBd3¡,!Ý}î¥á‡™ÐÍ—-„ؼÐч„dt¼«Œj¡-j&Tu‘僤ì,»ÙJ%z0êí¹^‘G_ Z­„¾7/!7Á…¢œçƒ¯Oëêü»:¬Õêv\?¼¼º±J.VЪäÄf¢¨¼7±³Ã“]p‚íûæ¨ã·!+ŽñÛW”Å?“ÔÇ LŒ.37‹F 4Eɧ–¾CˆÄ)?”:ùvu©tü€´”²Õ±…ÎÔ­  éÔ?}I¼¨;ÒÕ1b24dÏ>˜`“@(ÉôÎ+¥ß†:tú±›í÷\¬xÔ‰‡”¨”ÙYp£ƒé>gni}&+ÙO]ßF…SíÉNH´üˆO!ÇÑ:ÈÍppȉ¹{ÇÂ0nΆ@)ðd»t6À€ë)²‚Åðù{» Ä2ðu ÙR°,FWœ¨)h¸lsE°•0¯h?n‚ö/( kPÀÅ2°ÿ‰‚tÚ]Sƒ9ÌìÇ,ºW¶;|Ãv‡í¨Ýá»jwخھ«v‡íªÝá;jwØÛÉYØ¡Ët›þ<û¢æ²Ñ0ÿEJH³ÕžéX'ÑP·ÜµïÇîÙx9£¦›Î`îQ•Ð*ÝȤŸZmŸp¯Ÿ¸Ad/‰O¯Òí<¤ +ï©dÿíýQdzKþ $Yò +endstream +endobj +7840 0 obj << +/Type /Page +/Contents 7841 0 R +/Resources 7839 0 R +/MediaBox [0 0 612 792] +/Parent 7847 0 R +>> endobj +7842 0 obj << +/D [7840 0 R /XYZ 132.768 705.06 null] +>> endobj +7843 0 obj << +/D [7840 0 R /XYZ 133.768 514.097 null] +>> endobj +7844 0 obj << +/D [7840 0 R /XYZ 133.768 499.563 null] +>> endobj +7845 0 obj << +/D [7840 0 R /XYZ 133.768 297.16 null] +>> endobj +7846 0 obj << +/D [7840 0 R /XYZ 133.768 282.627 null] +>> endobj +7839 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7850 0 obj << +/Length 824 +/Filter /FlateDecode +>> +stream +xÚíW[oÚ0~çWXLH‰V<_s¡ê]תժuí¡Y)q)„.@/›ößgã’pÐmO{(¶‹Ïw¾sÉù]€ÀIå°]ùpL<ÂÐSKû`J¡ïÀ 9ôB Ú1¸vƒ”¹uŒr»ƒÑcÔ‘ðÁ­Žœã^_š]KÞËÔÅ#“Žú(gå{Û>«|jW¾W°rŠÎ9Á0Dt•ë[bõå@†xž^ÊÔU¬ ûà²òµ‚òÌ)> }„§Ì}áÀã>$”æ ·î)ÒÕ´j67ˆ#!¢8N)Q{¼§£"ú ¬"TDU*¸Ç@=„L-SŒêiÞøò¸%N¿ˆæÑQKŸ[Íó‹+¤ÿÜ:+`Õs`eBU÷f{¬<`‚ +¶8„˜&ÚǾJ6öò7QÁ©Múcuûl1, þšQW7J­ p™ªösM äY#¼‹å B$ɪ/ħÏçâÙÅȦ±èô£Ñ¨×BgI'ÜzѸ؇É(|sCâDý‰lLÅØ®¥*+cE$é,#ªžòe,“Qo˜o?CV}Iä“^2¦DŒM lO˜ÓÁ¼ÞöZ–§Y$ûÙ•åEÐVØ›ƒÏK‚‚%VÌ–. „X(\[³Ð=€,6Ku8Éü×HÖiµÓFÓªÚ4ÑcÓÝ+ýUÃ'c®úÔڎ݈-! ÔÜÈ2’ýǽ³‹ÿZÓúOÑ é%ÖØFA” Ý’M÷žËéØ¥¬<²R?øæúáõÃÛL?dò©÷ˆx€ð·ÙY@ø߶“€ð„m( ü Hî™^˜tµ]ç~y‚_½ßA‰r@³1sõʬ~7-tÝìÑZúRЧۼÒÛ!žzFiÿ„ÚHOd"Óh,c3.†‰YÛ³9’³afÁ¨Ahæ¤ú#ÛÝ»„«c‘><¥.õz¿w—!ܽf×׮LÊ!ÿ¨y +endstream +endobj +7849 0 obj << +/Type /Page +/Contents 7850 0 R +/Resources 7848 0 R +/MediaBox [0 0 612 792] +/Parent 7847 0 R +>> endobj +7851 0 obj << +/D [7849 0 R /XYZ 132.768 705.06 null] +>> endobj +7852 0 obj << +/D [7849 0 R /XYZ 133.768 599.277 null] +>> endobj +7853 0 obj << +/D [7849 0 R /XYZ 133.768 584.744 null] +>> endobj +7854 0 obj << +/D [7849 0 R /XYZ 133.768 306.625 null] +>> endobj +7855 0 obj << +/D [7849 0 R /XYZ 133.768 292.091 null] +>> endobj +7848 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7858 0 obj << +/Length 714 +/Filter /FlateDecode +>> +stream +xÚÝVÛNÛ@}÷W¬RU²%¼ÝÙ›wƒx(¥ !*õõeâ"%u.­úï]{íàÜUêC²»ÉÌ™™3>ã%è +täíw¼w‡T"µ´Kçc8’ +I-°Ô€:):õ)ÇŒ!Bü›«Áè&é|„Tÿ°×7n÷Õ\š<囬kÅ÷™ÐÁyçØûØñ~x`ƒ €5¨;ðNÏ JíŸÇˆ`¦º+Mˆqk +…c}ó¾x¤™9c(Â:"Pf.(V:BRD˜2á2?#vmz„ÛÔÏÀVa“±¡Æ\rgǹMúck’6íBШvÖâï²øsäY\N1ˆ¨A¦8ª¨{“š3BhVñÇ'Ÿ?ÅÝ~2õºql1I’¦y] A„%­Òühê'ý‰i—„ÖDÔëÖ™ +Lt4åı¹›lÔf.Ú¯ Ô²Yo³Ü*ꤗAÆã ,,ã¸È¤;í¹¥€ªÍ*r¦…ìV&sÌ‹Gpõˆ=mƒ”뺕Œql)¥k‹ÚY–§fÐZý›AËÅovYñ5¶¿Dt5xk0¼u>oÉŽÛäd) +#« iW{yë‘Çš„ò!°Óê$j÷Ÿ3Þ®=•·Ú¼ÌˆZ|êÕ<ŸE/AÈítüt¤Öé( @øw˜§ÿXU Õ«Ë +Ôz]1ºDXÀè6ÊÒj“²(ã[*kQŠo%­÷3Ú*ËݧŽž¤½»ÊÕ@ðñ¬*øBûϪB¼P/Õ‹ÿE/þ¦ÇõNm°z"Ý<‘a­÷Æô¦¥­è|öbD×H½98”\9Ðù’> Kï}Záˆ=åÖWßS¥ÄL5ï©JcVç{d2“'c“º÷Â0skçzâ6¦ë6Ü-@Ú”µA¹“e·Ú]TØ·ˆ;$Åá6Xä‡ýÞE…pñPAï®L6_òÛx¨å +endstream +endobj +7857 0 obj << +/Type /Page +/Contents 7858 0 R +/Resources 7856 0 R +/MediaBox [0 0 612 792] +/Parent 7847 0 R +>> endobj +7859 0 obj << +/D [7857 0 R /XYZ 132.768 705.06 null] +>> endobj +7860 0 obj << +/D [7857 0 R /XYZ 133.768 627.467 null] +>> endobj +7861 0 obj << +/D [7857 0 R /XYZ 133.768 612.897 null] +>> endobj +7862 0 obj << +/D [7857 0 R /XYZ 133.768 429.015 null] +>> endobj +7863 0 obj << +/D [7857 0 R /XYZ 133.768 414.445 null] +>> endobj +7864 0 obj << +/D [7857 0 R /XYZ 133.768 145.382 null] +>> endobj +7856 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7867 0 obj << +/Length 738 +/Filter /FlateDecode +>> +stream +xÚÅV]OÛ0}ϯ°:MJ4b|mlj;ñ0Æ@B›´j…Æ…JiÊҖ¦ý÷ÙuBSÚ´´bãÛÁ÷ÜsíszMÐ"èÄ9ì8ûÇT ‰¥ÐC§‡€1Š `!uRtæRŽ÷| „¸7WƒÑMÒUøÚói@Üã~¦ìì«ê©ÂƒÈUyW‚ˆÜe‚xSçCÇùé€NJÔ’–$@ÝsvAPªÿyŠf2BÓÙÖb\o˜¡o·lf„˜² ÆS,Kö¯RuNÍKÊqüñó§8õ p§wX¤±Ê¯]@Çç$ IšzS„NìCˆåü»'©›dÕž•XQ«ÆýcÆPˆeHÀðÓÁ4ÀD +lÀãXÝU>ês›í·¦)"Íóô›” 1P‰|‰¹(kšôó1ˆxìù‚˜ Evu`ƒUm3ì땼5WSOA,:Ÿ£3:G/Ôh’M£+¢JNšÅhÇz—\ƒmhèƒg|©Âh­•Ý lþ×ïÈžýxÓ*‰·LhnþŒõ§ˆ7ç«áÌçý3ñ9zÀÑ1”oE§m#[Ek~ÝÕM™+Þ«6üZØ`…2S³´™f…k£káþŠ;,¥Fé=ÔÕ‰eÄEÝÿ)•<óâ#ók\N1á¢í¬óýœüC§KÑdtþ\FÍ"2QÑ +› ñ—S±Éå èÓ]^7ƒXò›µÚèO c³•šÂ£F¥ó¥C°öäæJÞ¨t¾»ÒaÒõ6LÆq7KF£~÷…ÿÒ­­—é3XîkùŸ}­UZl‹®1Þ>î†Ù¡‹%iZ†³ +vëb[T,Uq¸Sü™ªØî.$¿ò+#²mž¯Õ³Uhï°¨þl$f·•«"«Ôzx˜Û±s=±“#Õµn mÊÚÙ•þ¹+g=úMk‰YÜ ]?ë_–—÷%äðîþJåKþ ¹^ßæ +endstream +endobj +7866 0 obj << +/Type /Page +/Contents 7867 0 R +/Resources 7865 0 R +/MediaBox [0 0 612 792] +/Parent 7847 0 R +>> endobj +7868 0 obj << +/D [7866 0 R /XYZ 132.768 705.06 null] +>> endobj +7869 0 obj << +/D [7866 0 R /XYZ 133.768 667.198 null] +>> endobj +7870 0 obj << +/D [7866 0 R /XYZ 133.768 480.637 null] +>> endobj +7871 0 obj << +/D [7866 0 R /XYZ 133.768 466.066 null] +>> endobj +7872 0 obj << +/D [7866 0 R /XYZ 133.768 301.114 null] +>> endobj +7873 0 obj << +/D [7866 0 R /XYZ 133.768 286.543 null] +>> endobj +7865 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7876 0 obj << +/Length 709 +/Filter /FlateDecode +>> +stream +xÚíVÉnÛ0½ë+$4b¹KtC–6@Ð]Œ²@P,:1 Ë©,giÑïÈ”¼ÆjltA‹^¢!3|óf†‚®AÇÎAÇyùš)¤±Vðéôå*DJK¬4E¹L`.<ŸBÜ›«Áè&î|íùL÷u?5Öú`z&÷h蚬 [4äR¸\Qï¢sâ¼ê8Ÿ +A ¢sA(ÖD¢îÀ9» (ž ‚¹ÑÝÄu€¸WZLÑGç½Cæ™sŽ¬B'̆ “HÉ3.-óÖ`xëù +x??$;ÖÊI«dVëœr‘• +Ø +l•‹’0ñ5JT8qÒ¿«Žóˆn€SóIoà¢ÔfÑgYm•E½m¶öò–µÎ‰$Q”›Ñ8-À¦;µÃ—‡8IrªJÉÖó¬ñiãéÒ›¦6çéS) •»p÷X¸³În·DT«ˆzñ[ 9a +KÊ\Á0•áœ&0l°JÏsNË*5DÑ›wo#ØáøˆLvƒ*’(*kRV¤ŽRâÒ+VQøäiæÆéØ´'º©ï{ý]ºôp˜IL´šV +nî “úÃÌFû +ÕB‰æ3¯ê4îgUQa[P7Í®öfݬݪ:M3Ù­îâš‹ÑK¡5ô¬!’45. ¢¼tpÉêÍÅJzáŠî*í× +:}±Å;0Ã9Ø +g•ÏáOâ3}Ná ÷Ãà?ÒÃF¹‹ä.Ÿ.÷`Iî¼Iîw%î0O¢nFýnƒÜ埑»ø¥r_ó˜ÌzÂYSï/Ÿ¨x±Õ/íê¼°ÿOÌ ÿç…ß5/LEû謫CðM&Ýz6W ~ÎÏæ¡Æ¼æ{l2“Ç…Iì34Ìì·s=¶Æ‘éZCØ%mÆÛ4´+¨neõ<&á岋¸\Üæ\?í_V—äðþáÊdË)‰ßþ +endstream +endobj +7875 0 obj << +/Type /Page +/Contents 7876 0 R +/Resources 7874 0 R +/MediaBox [0 0 612 792] +/Parent 7847 0 R +>> endobj +7877 0 obj << +/D [7875 0 R /XYZ 132.768 705.06 null] +>> endobj +7878 0 obj << +/D [7875 0 R /XYZ 133.768 561.215 null] +>> endobj +7879 0 obj << +/D [7875 0 R /XYZ 133.768 546.645 null] +>> endobj +7880 0 obj << +/D [7875 0 R /XYZ 133.768 353.299 null] +>> endobj +7881 0 obj << +/D [7875 0 R /XYZ 133.768 338.729 null] +>> endobj +7882 0 obj << +/D [7875 0 R /XYZ 133.768 126.453 null] +>> endobj +7874 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7886 0 obj << +/Length 1188 +/Filter /FlateDecode +>> +stream +xÚÍW[oÛ6~÷¯Àˆ%*¸/¯NÆá*1‚YpÞú­…Ÿç/bD™Xòçˆ"­ß Ó+ –[ÎZ8ûEß泡Nó›>j}…î‡38‰1”F$F’ò +ø¢“аŸÝ¥û¥yŽ–;_Ÿ0Ä(‰11Ü@˜ÄÖ©[ëô¡HóùxšWÊ TÀðŠ0^j$ "4 ¢qiµÞó‚H]t"‰ yÃÈêÛAu,wͯò#èh¨Àºð£ÏÒù]V!F=R–°˜O´†[ÉlC\Îø U­ÝN*ý¯Þâ½êÓ?´-ñ¶Íͯþ¤øz}5œÃÈP¾Œ¥³_I¶fí¥{gŒK÷Ü…ªÀ”ɺž¦Ã'¥kâ‘Çg6´”nð=šJ>ElæÙW›9eê—uF R… 6™¡¦QßÚ"ö²†«:a<©A#bÁÒ¢Hà +ê(fãÛ +È™[=²e>o”'¨Ãõ–!g`9¥H(kÎ¥¢!\F¢Ñ8žÒæQÇÖÕo;„‹ð¢«Ï~íÓß»ú'mÅêêUŒ8§NŒ4µBàc3s"ó—"7Ȧƒ¿ôm„ù Ÿ¥zžr±‚>,˜ÉË—u’D!©ø·³ +¹äÈO2A“:I[4*få× +i8îP~^6Äw~>ë–×hø}íºemÞ¨ÙÈ>V]ÿìJG¶b 4<1±)«¢Ò^¬˜:eæÇ“b°,‰ÀJ20ñ› ,¢tPµ|xÇŸ*€„cê§L·E&»"óuÈd™®Ef~dµ-2ÛófˆJ¶ÑßÒ§šg+*ø®nat[h±+´äÛBË]¡ažò`KZ&n;ö;=ÁˆÄÖçÔ›‰B®SÁWT¨êøêSƒdĶY’èbHª¯7GÓôŽ¼è¯“¬ðbÆZYüÓBcxÉÅèÑÁn4eÐeEüdRnE)&·ÝG^¸×ýݱŠå¦™Øn.ÕºóyšŸÀD½œÅŸ'ÔçèÀ”=ÒzOëóîñ©ÖvªoîµÙxkG`^Ìí¦ã¶‘WøYE@¼‹y¢Ìè¹ÃZîÖq ‘eª¾Ž+xoy§in27ÂCJ–gïæÎÍôÛxl[Æû”í[°ÙO×fœ›Îª/ýr¶›uXFÙø“EøôÅUÀ×Qš¯šü/4H´ +endstream +endobj +7885 0 obj << +/Type /Page +/Contents 7886 0 R +/Resources 7884 0 R +/MediaBox [0 0 612 792] +/Parent 7847 0 R +/Annots [ 7883 0 R 7892 0 R ] +>> endobj +7883 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [447.701 376.621 478.476 387.501] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 364.198 162.441 376.153] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7887 0 obj << +/D [7885 0 R /XYZ 132.768 705.06 null] +>> endobj +7888 0 obj << +/D [7885 0 R /XYZ 133.768 667.198 null] +>> endobj +3811 0 obj << +/D [7885 0 R /XYZ 133.768 500.339 null] +>> endobj +1417 0 obj << +/D [7885 0 R /XYZ 133.768 495.414 null] +>> endobj +1421 0 obj << +/D [7885 0 R /XYZ 133.768 467.523 null] +>> endobj +7889 0 obj << +/D [7885 0 R /XYZ 133.768 421.132 null] +>> endobj +7890 0 obj << +/D [7885 0 R /XYZ 133.768 421.132 null] +>> endobj +7891 0 obj << +/D [7885 0 R /XYZ 133.768 393.481 null] +>> endobj +7893 0 obj << +/D [7885 0 R /XYZ 133.768 328.716 null] +>> endobj +1425 0 obj << +/D [7885 0 R /XYZ 133.768 249.1 null] +>> endobj +7894 0 obj << +/D [7885 0 R /XYZ 133.768 226.414 null] +>> endobj +7895 0 obj << +/D [7885 0 R /XYZ 133.768 226.414 null] +>> endobj +7884 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R /F11 2085 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7906 0 obj << +/Length 953 +/Filter /FlateDecode +>> +stream +xÚÕW[oÛ6}÷¯ < †˜áE¤ÄìÉŽ•©t²H +ÂÅuáÈ™"wíÃþû>ŠR"»J–î°¾H¼|—ó‘çP"A DÐi«·O˜D ++ ¯øQα/$•ÀRQÏÑ•Ã<Ì¥Û¡„ç>ɧ“Ít;Lçd¹Jl+Jn’Ì¥“¤3¢ŠyÌá’»â³V·þlQÈI­å Xf·­«Íaò ÌU€þ*Lo÷À”ǵþh‘:pΑ•O¨Î(Á, H +3.,ðö}~ïv$Àþ•” Ö¶ö5å^jy9bÚ-dè(ìI¯ ²ÞäÖ@ëQžj}PuóÛ;% ­ŸˆPÂ8²³‡Å…Åô|Ô¡Ph™á·bBa)kÃéÚúAþ» bŒÃ’ðoû«{î@ê3%¶J+µç~"Ô¯j¹Ü-ºzUíaÍKN"= ‡ºÛïGfàxðöiЦ`; \OÿÅØïBÿ6y…<#mãðû®‡/± ÞVš¿ÍLAw +¼‚Ú`c¨ïfzôQCÓÄñê11-£ö“|‘æ6T?¹ŸeË»|¹N«…©»ö“kBXš{ÿ@~HGê’•Øã +æ ‰Âñš1±åƒ®:²ÿ2/#–“FŽÙ¢ÔeT˜X=— §ë +áŒû:6¥^ vÃ;¶=è)ð“íøEúÒ¥É`nEúqÿ}Ê7/MIÕ~rŽBÍÞ7m'iRH§â×®NüG|º½Û‹Lüÿ£Lv`{æ;£ÀºˆŸ„0>¾Óoti[Ï)Íñó`K·SA¡ +û"x=ŸþQ×U‰ãHŸ_Da<ŽÎu6 +{L9{t›äy¶œºŒ8›<ÑÚÆÅÉ®Óu–ä›,-ÆŠó¼ÐÄÇšP(iƒžlÒ™Ù´—oŒ÷ü2,Óüyr[26‘ÛÔSÚVxc‰¥5 M«’^­¸Ï&Öz9Ój.^êÀvLÅå(ì‚ý8Ún×…-lÞç— 8¨¼J’ýè7øùô «è ç2Ò£A>!cøs +${RÆ€ˆ +ºo[<Ççqär` ÿžM:fK!+¿áñø8ÚE( Vžø1ÃsÃÝnoêawô¶ñ¤Q€ðÁ­wiX? +¿Q]ã%AØ篹"Tw WÔï4‚±òÿñ4I“l’W^ïøã¦bìÌ6<û¢äˆñ#Ø#¤lݸL8ëÌv&¦ó9s¹ïtVËiaúµ ¹þòu‘¤»%ÿ +'Í +endstream +endobj +7905 0 obj << +/Type /Page +/Contents 7906 0 R +/Resources 7904 0 R +/MediaBox [0 0 612 792] +/Parent 7917 0 R +/Annots [ 7896 0 R 7897 0 R 7898 0 R 7899 0 R 7900 0 R 7901 0 R 7902 0 R ] +>> endobj +7896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 483.887 242.989 493.814] +/A << /S /GoTo /D (group__util__setbaud_gddaa61b72aca51ed4835978d500f8755) >> +>> endobj +7897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 471.267 256.009 481.195] +/A << /S /GoTo /D (group__util__setbaud_g0b029ff580b042a27aaac4bd2ec925e2) >> +>> endobj +7898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 458.647 262.097 468.575] +/A << /S /GoTo /D (group__util__setbaud_g39ebec5d04e582b7b6ed9a72b973983c) >> +>> endobj +7899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 446.028 263.202 455.955] +/A << /S /GoTo /D (group__util__setbaud_g8188daef772f5eb3fc81dfee168905e2) >> +>> endobj +7900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 433.408 227.467 443.336] +/A << /S /GoTo /D (group__util__setbaud_g6977ce48ae3197f3f016b85d98380509) >> +>> endobj +7901 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 260.662 199.252 271.566] +/A << /S /GoTo /D (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) >> +>> endobj +7902 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 248.043 212.891 258.947] +/A << /S /GoTo /D (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) >> +>> endobj +7907 0 obj << +/D [7905 0 R /XYZ 132.768 705.06 null] +>> endobj +3812 0 obj << +/D [7905 0 R /XYZ 133.768 581.803 null] +>> endobj +1429 0 obj << +/D [7905 0 R /XYZ 133.768 575.835 null] +>> endobj +1433 0 obj << +/D [7905 0 R /XYZ 133.768 550.227 null] +>> endobj +7908 0 obj << +/D [7905 0 R /XYZ 133.768 501.553 null] +>> endobj +3813 0 obj << +/D [7905 0 R /XYZ 133.768 426.1 null] +>> endobj +1437 0 obj << +/D [7905 0 R /XYZ 133.768 420.132 null] +>> endobj +1441 0 obj << +/D [7905 0 R /XYZ 133.768 392.544 null] +>> endobj +7909 0 obj << +/D [7905 0 R /XYZ 133.768 346.154 null] +>> endobj +7910 0 obj << +/D [7905 0 R /XYZ 133.768 346.154 null] +>> endobj +7911 0 obj << +/D [7905 0 R /XYZ 133.768 332.373 null] +>> endobj +7912 0 obj << +/D [7905 0 R /XYZ 133.768 279.304 null] +>> endobj +3814 0 obj << +/D [7905 0 R /XYZ 133.768 240.735 null] +>> endobj +1445 0 obj << +/D [7905 0 R /XYZ 133.768 234.767 null] +>> endobj +1449 0 obj << +/D [7905 0 R /XYZ 133.768 208.155 null] +>> endobj +7913 0 obj << +/D [7905 0 R /XYZ 133.768 161.765 null] +>> endobj +7914 0 obj << +/D [7905 0 R /XYZ 133.768 161.765 null] +>> endobj +7915 0 obj << +/D [7905 0 R /XYZ 133.768 147.984 null] +>> endobj +7916 0 obj << +/D [7905 0 R /XYZ 133.768 135.364 null] +>> endobj +7904 0 obj << +/Font << /F26 1917 0 R /F33 2429 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7948 0 obj << +/Length 1148 +/Filter /FlateDecode +>> +stream +xÚÍXmoâ8þίˆÔ/‰zñú-/^­NêÑmÕíêJNjW%"‘„ƒ°Ýþûub‡­Ú/ĉgÆÏŒŸ™1†ÆÄ€Æu矠óé +»Ì`l B€çú†Ëà2d‘ñ`b +³l!4—y§9˜Z6v yϸÝó1_XÈ7y:*>ADI\jý¾u¾ÿ;H, T[c”t~@#“ß (VòçR41¢¨Pœýο¸·ãL‰ûj•Žò8K—%ˆJYhº¦ (a†1p]¥øˆ±³¡c<ØŽpþ§…¡™Å‘š+¼YL”[÷¥TŠåŒóyÈÓá“Ζ•bþ:°²$ÆhS6€9¨=(Q¼üc°Œæ«ãÀ‡ãØâöõˆ. H(Iq%Z'„ƒ€GJ´ Xi ö:¢±a3â6¡ùÞG“æ-jáwa†²šI€”ÑKž…¥HšºäËÑ"žt/ m«^òGqÊ[K…³HYl€M!À¾_E0 ý›»ëðöæ.ðâí#}·’†›‹‰}G€xô0¼T÷û]÷ÂbŽX ‹ æMdðˆX•ÔÉ0ããü/óE<™æ%)Ê×bFŽÎÎjÛ! +0E‡eÖj 5Ìtó£2…¶<(ƒ£Õ©Ã®«ÕfxÄÌò€S%H/Nâ|)­ecù\Îù(.<æ‘ýG¹Ê‘<|"2¥|É_æ’ÆŸ®ÈV² 0*­wÏÏ-›BlÆÉ|ÆžæCÙ +ÄGb.§ÙjIuˆË·|Ê—\ +%ÃÑ¢Ž™-åT–Î^äèyÊS9 +Ã~pÙ {7·7AhW™WÖW¹½°4»÷…æ÷¾òG¹]-­rø‰³…Ej{k»“Ø1ÕOãVømÂØMôäÑHG©±%â$Î^ÐK¨` ¥m³„àYÒðÓ;rq)°í¦ŽB¿AÞ)¸£›Ž;RãÜém‘§w:ö¸ôãì9ô§wlšN즙rs“f'á™>À:žI£ðì ÑzŸ±CÏÈþp§q²Jö~µÿሠzñNAQk],ì}½èëOÍ'ŽÖ{éE3]›Ïcí“rO0»£ÁÚ†¾‹kZüqh·¥iòXû¢Èà´Ñ÷HM="íÎ4Mkgôœ6"ú®ÒÜr¯¯™<òžËëêÒÚ­‡øõKkŸRÝ·]ó”/†yu%¥òLWÕ=ßH¨jCð3&Ÿ‘/ß0„jT2Õ5†ÅËÏòjÁžÅOÊÂÓ‹2™ýz™ðtÛåß.€Ž¶ +endstream +endobj +7947 0 obj << +/Type /Page +/Contents 7948 0 R +/Resources 7946 0 R +/MediaBox [0 0 612 792] +/Parent 7917 0 R +/Annots [ 7903 0 R 7918 0 R 7919 0 R 7920 0 R 7921 0 R 7922 0 R 7923 0 R 7924 0 R 7925 0 R 7926 0 R 7927 0 R 7928 0 R 7929 0 R 7930 0 R 7931 0 R 7932 0 R 7933 0 R 7934 0 R 7935 0 R 7936 0 R 7937 0 R 7938 0 R 7939 0 R 7940 0 R 7941 0 R 7942 0 R ] +>> endobj +7903 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 631.417 231.133 642.321] +/A << /S /GoTo /D (group__avr__sleep_g475174a7aa4eda03dfa7a4483e400a9e) >> +>> endobj +7918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 618.466 233.354 629.37] +/A << /S /GoTo /D (group__avr__sleep_geae22433a78fd8d50f915fb68c416efd) >> +>> endobj +7919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 605.514 219.516 616.418] +/A << /S /GoTo /D (group__avr__sleep_g157b2578d95309c197b739f812938d94) >> +>> endobj +7920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.754 405.747 295.365 416.531] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +7921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 386.678 252.479 396.606] +/A << /S /GoTo /D (group__avr__stdint_gaf7f29f45f1a513b4748a4e5014ddf6a) >> +>> endobj +7922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 375.117 248.604 385.647] +/A << /S /GoTo /D (group__avr__stdint_gadcf2a81af243df333b31efa6461ab8e) >> +>> endobj +7923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 364.158 259.672 374.688] +/A << /S /GoTo /D (group__avr__stdint_geb4e270a084ee26fe73e799861bd0252) >> +>> endobj +7924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 353.802 257.46 363.729] +/A << /S /GoTo /D (group__avr__stdint_gc58f2c111cc9989c86db2a7dc4fd84ca) >> +>> endobj +7925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 342.24 253.585 352.77] +/A << /S /GoTo /D (group__avr__stdint_gd4e9955955b27624963643eac448118a) >> +>> endobj +7926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 331.281 264.653 341.811] +/A << /S /GoTo /D (group__avr__stdint_g3ea490c9b3617d4479bd80ef93cd5602) >> +>> endobj +7927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 320.925 257.46 330.853] +/A << /S /GoTo /D (group__avr__stdint_g181807730d4a375f848ba139813ce04f) >> +>> endobj +7928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 309.363 253.585 319.894] +/A << /S /GoTo /D (group__avr__stdint_g688eb21a22db27c2b2bd5836943cdcbe) >> +>> endobj +7929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 298.404 264.653 308.935] +/A << /S /GoTo /D (group__avr__stdint_gb5eb23180f7cc12b7d6c04a8ec067fdd) >> +>> endobj +7930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 288.048 257.46 297.976] +/A << /S /GoTo /D (group__avr__stdint_gd0d744f05898e32d01f73f8af3cd2071) >> +>> endobj +7931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 276.487 253.585 287.017] +/A << /S /GoTo /D (group__avr__stdint_gb21f12f372f67b8ff0aa3432336ede67) >> +>> endobj +7932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 265.528 264.653 276.058] +/A << /S /GoTo /D (group__avr__stdint_g30654b4b67d97c42ca3f9b6052dda916) >> +>> endobj +7933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 216.626 288.454 226.553] +/A << /S /GoTo /D (group__avr__stdint_ga05109908fb2770f632d2b646b9f85bf) >> +>> endobj +7934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 205.667 284.579 215.594] +/A << /S /GoTo /D (group__avr__stdint_g3e986cad833f63f420962ff60eda87e5) >> +>> endobj +7935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 194.708 295.647 204.635] +/A << /S /GoTo /D (group__avr__stdint_g2a80bde77ee1698d0f42f334adad4f2b) >> +>> endobj +7936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 183.749 293.435 193.676] +/A << /S /GoTo /D (group__avr__stdint_g7eb2a8e2a1c65d6c9ad0f86154890baa) >> +>> endobj +7937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 172.79 289.56 182.718] +/A << /S /GoTo /D (group__avr__stdint_g1f91bfd5820c2f27af3d260fc75813e1) >> +>> endobj +7938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 161.831 300.628 171.759] +/A << /S /GoTo /D (group__avr__stdint_g6ef6a1a518bbf516ca8b0180b11c358f) >> +>> endobj +7939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 150.872 293.435 160.8] +/A << /S /GoTo /D (group__avr__stdint_g5618711a0a54f722190a3a1219e278c2) >> +>> endobj +7940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 139.913 289.56 149.841] +/A << /S /GoTo /D (group__avr__stdint_g2360a536116dd734820a6b5b3d560ce7) >> +>> endobj +7941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 128.954 300.628 138.882] +/A << /S /GoTo /D (group__avr__stdint_g70cad8bacc9a6db301e1cdc86cc8d571) >> +>> endobj +7942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 117.995 293.435 127.923] +/A << /S /GoTo /D (group__avr__stdint_g35d0f98a2e507fd1be779d49da92724e) >> +>> endobj +7949 0 obj << +/D [7947 0 R /XYZ 132.768 705.06 null] +>> endobj +7950 0 obj << +/D [7947 0 R /XYZ 133.768 650.391 null] +>> endobj +7951 0 obj << +/D [7947 0 R /XYZ 133.768 609.499 null] +>> endobj +3815 0 obj << +/D [7947 0 R /XYZ 133.768 583.731 null] +>> endobj +1453 0 obj << +/D [7947 0 R /XYZ 133.768 579.123 null] +>> endobj +1457 0 obj << +/D [7947 0 R /XYZ 133.768 554.661 null] +>> endobj +7952 0 obj << +/D [7947 0 R /XYZ 133.768 505.986 null] +>> endobj +7953 0 obj << +/D [7947 0 R /XYZ 133.768 505.986 null] +>> endobj +7954 0 obj << +/D [7947 0 R /XYZ 133.768 491.874 null] +>> endobj +7955 0 obj << +/D [7947 0 R /XYZ 133.768 478.046 null] +>> endobj +7946 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R /F11 2085 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +7991 0 obj << +/Length 1091 +/Filter /FlateDecode +>> +stream +xÚÍXmo«6þž_ai_@wøú…׫iR–6U®švkˆ4­½B$8 .öößÏÆ&… r·.iî„ís8~΋Û °\õ~ñ{‡ÄôlþòS +Û¶gAÛÃÀÀ½FLH=ÝÀ!-/¢8-àJ7ˆ…´aœ0Ùºc ¶Ñ±«±t.†¦X£¶¥ñ?÷.ýÞ_=̧DצÀÐC˜¯{÷_ˆ¸ð3@|&<—ªk@M®ŠÅ‡ ˜ô~ë!…5ð£:~s Ø– µ$þB$Žê;poXÜ—"ö€I™ +t›¥‚yWª ×F7~p}ÙŸø¶ŒG7û–”J›4è|Óþïm@¦ +Éž´zïeÛÀš¦ bC׳%Êëx¹Ìj¶ïE˜,/dg§ñz»6žã¨PuÀK‚-yþËNñòÈòÆôûIªfÅÐBæÑr4ÔSãÑq»‚ÕZdÇMÒÎrqߥZ¾’é{ÇÛ²Ó&¬ œIgzÚ„'ÌOwT¦ßËñ3DÉ µ O ¥3Em¦¨;,ÓwK7ÿ·Óÿ‰¡¼iO<~†N³+:Ý»bË®W6çác8«F•ò*KøÉi©g²¹ÚN3ags†óWÿîdŒ +áÌ,| ìûSKyRÅ™ê{;Fq_ÏM.%„3´„áDl’«*õíuðqH놅Ït‘bÒÁ‡ºa"¢ÅëÇ„­YZ„Eœ¥¹¤Z¾Ê¶I$vA({|ÖœI¥u8ß覥e¹eiò"[Ï+–ÊVLü‹Ap=üÀ°J ü*g©ÛÖ¸¯S¤ îti·åòµš:’Ý[d:“þñ«^­¼‘‘Í­—VêHÙ^PèðX«ovwÕæ"jÌBV™¡|וç¥ü)LâH6EHJQ"ˆK#m¤ôµ0Jç¸à .¤,ß.Du‰™¾Ê‘0¤ž2ÚLµÖšÑFšÂüµB€ê•*{;<¢ÓÀó/mGÜJBì(—ù“Xsa²eåJÞ­~ñtšž»AÑbNYh­«µþæõ\èÐÿò“·ú)mCÏ¡ný§´ëAj«¤]±”møZ¥-KåÛ_meã‚ÍeÔ/Œ>ú »²Gr[h)§²V$ž) ³e2ûú²ä±çòߤÎs  +endstream +endobj +7990 0 obj << +/Type /Page +/Contents 7991 0 R +/Resources 7989 0 R +/MediaBox [0 0 612 792] +/Parent 7917 0 R +/Annots [ 7943 0 R 7944 0 R 7945 0 R 7956 0 R 7957 0 R 7958 0 R 7959 0 R 7960 0 R 7961 0 R 7962 0 R 7963 0 R 7964 0 R 7965 0 R 7966 0 R 7967 0 R 7968 0 R 7969 0 R 7970 0 R 7971 0 R 7972 0 R 7973 0 R 7974 0 R 7975 0 R 7976 0 R 7977 0 R 7978 0 R 7979 0 R 7980 0 R 7981 0 R ] +>> endobj +7943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 655.059 289.56 664.986] +/A << /S /GoTo /D (group__avr__stdint_gc12b4f6966b57ad82feb683b284b4060) >> +>> endobj +7944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 644.238 300.628 654.165] +/A << /S /GoTo /D (group__avr__stdint_gab530113fa96e280e49c3c138b0f917d) >> +>> endobj +7945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 595.837 281.082 605.765] +/A << /S /GoTo /D (group__avr__stdint_gcbcdb3bee0f5f904da5df8de69a80ca3) >> +>> endobj +7956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 585.016 277.206 594.944] +/A << /S /GoTo /D (group__avr__stdint_gad8fb982cb19143efd5ee9a1a7a89390) >> +>> endobj +7957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 574.195 288.275 584.123] +/A << /S /GoTo /D (group__avr__stdint_g2c6f97ea2d76d0cf6260c84046cdb44e) >> +>> endobj +7958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 563.375 286.063 573.302] +/A << /S /GoTo /D (group__avr__stdint_g2fd35d0ea091e04caec504ff0042cf00) >> +>> endobj +7959 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 552.554 282.188 562.481] +/A << /S /GoTo /D (group__avr__stdint_g169460a4e2a79138723d68d99372d958) >> +>> endobj +7960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 541.733 293.256 551.661] +/A << /S /GoTo /D (group__avr__stdint_ged28ca63d9b222f6f1377358fe73a183) >> +>> endobj +7961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 530.912 286.063 540.84] +/A << /S /GoTo /D (group__avr__stdint_gc96fa0f41b19e89f109e4f9913ca6635) >> +>> endobj +7962 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 520.091 282.188 530.019] +/A << /S /GoTo /D (group__avr__stdint_gd93df1652ed0635513d5efe4f1219926) >> +>> endobj +7963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 509.27 293.256 519.198] +/A << /S /GoTo /D (group__avr__stdint_gd51246a178143208b2db3315efd21c45) >> +>> endobj +7964 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 498.449 286.063 508.377] +/A << /S /GoTo /D (group__avr__stdint_g13c95cf9c209d8daacb36cbf0d5ba275) >> +>> endobj +7965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 487.629 282.188 497.556] +/A << /S /GoTo /D (group__avr__stdint_g50f0fdcb00ea2500cec0f3d6d45c36f3) >> +>> endobj +7966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 476.808 293.256 486.735] +/A << /S /GoTo /D (group__avr__stdint_geb74410af7781bc84b5f64ae7a8f4a17) >> +>> endobj +7967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 428.407 265.769 438.335] +/A << /S /GoTo /D (group__avr__stdint_g9e5742f2bae4a5283431a3c03499e3a9) >> +>> endobj +7968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 417.586 261.894 427.514] +/A << /S /GoTo /D (group__avr__stdint_g2aaa6d3aa1d7d1e0e326955aa24db752) >> +>> endobj +7969 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 406.766 272.962 416.693] +/A << /S /GoTo /D (group__avr__stdint_gb2355300ea19395357e62d780f4dd073) >> +>> endobj +7970 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 358.365 270.74 368.293] +/A << /S /GoTo /D (group__avr__stdint_g022b9b0a3564d786244a4631847c37a3) >> +>> endobj +7971 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 347.544 266.865 357.472] +/A << /S /GoTo /D (group__avr__stdint_g2b0a3edfc672154f606dc3ad26277b61) >> +>> endobj +7972 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 336.723 277.933 346.651] +/A << /S /GoTo /D (group__avr__stdint_ga54fd5210434219e9027bfa0f0e325c8) >> +>> endobj +7973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [263.754 281.212 295.365 291.997] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +7974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 262.42 270.76 272.348] +/A << /S /GoTo /D (group__avr__stdint_gdd2ef7bffac19cfdd1f4b5495409672f) >> +>> endobj +7975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 251.599 266.885 261.527] +/A << /S /GoTo /D (group__avr__stdint_gd9b88ba2fb858f98b50b38e49875d90e) >> +>> endobj +7976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 240.778 289.938 250.706] +/A << /S /GoTo /D (group__avr__stdint_g1f5fe9445d0ad0bee21bab1de4cc3e58) >> +>> endobj +7977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 229.957 286.063 239.885] +/A << /S /GoTo /D (group__avr__stdint_g21e605b9ac3a03b6de93cdf5a69e129f) >> +>> endobj +7978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 218.534 251.931 229.064] +/A << /S /GoTo /D (group__avr__stdint_g3c75bb398badb69c7577b21486f9963f) >> +>> endobj +7979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [317.512 163.626 349.123 174.41] +/A << /S /GoTo /D (stdint_8h) >> +>> endobj +7980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 116.473 235.881 127.004] +/A << /S /GoTo /D (group__avr__stdint_gcc666d136a198406538bafb8288f9c1b) >> +>> endobj +7981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [270.979 116.473 296.224 127.004] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +7992 0 obj << +/D [7990 0 R /XYZ 132.768 705.06 null] +>> endobj +7989 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8040 0 obj << +/Length 922 +/Filter /FlateDecode +>> +stream +xÚÝXÛn›@}÷W¬Ôêí^CÞÒÜ”(IÕK•’È°¶©0¸œ¤_ß…]ˆc;k§êƒÅ‚ggΆ9Œg¯nçË)±€‹ÜÀ”žeË1¡å`ààV#¤ŽÞÅ!-Í‚0ÎàDïi§aÄÄê†Ø\ǶÆb¿¸„0ŵ,ý޽蜸ßÌC"€k!0t üiçö€ÿydƒ‡Òt +¨ÁMq±1?:ß;HâF ü¨ŽßÂÜ–Ùƒ„šÿ!f‰£Ún»&ÏåSÀî"1“èæc ó¦4+RëŸ_»öàè•í™h¡Só¢œû1± ¢¸\üÞô©åœ@{-ñ'] Gß®uŒ±æ6Â|ý¶´oø@€ß#hTIÚ> endobj +7982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 654.456 243.074 664.986] +/A << /S /GoTo /D (group__avr__stdint_gcb579905e23358f9a5035b075c57ffcd) >> +>> endobj +7983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.172 654.456 308.399 664.986] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 643.613 240.863 654.143] +/A << /S /GoTo /D (group__avr__stdint_g1e6d0a954851b2f07b54a2178dc6eb40) >> +>> endobj +7985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 632.769 248.056 643.3] +/A << /S /GoTo /D (group__avr__stdint_gb93c67f535ddedd6e88a9a8030b333f1) >> +>> endobj +7986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 621.926 240.863 632.456] +/A << /S /GoTo /D (group__avr__stdint_g1ddf83530d986214005d1e766f036b28) >> +>> endobj +7987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 611.083 248.056 621.613] +/A << /S /GoTo /D (group__avr__stdint_gd76f76a71e9ffc13963ee895d1828b2c) >> +>> endobj +7988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 600.239 240.863 610.77] +/A << /S /GoTo /D (group__avr__stdint_gab7df05e4698e14dbef512294ff39203) >> +>> endobj +7993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 589.396 248.056 599.926] +/A << /S /GoTo /D (group__avr__stdint_ge770776c04e6d959364d2612ddfce99d) >> +>> endobj +7994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 578.553 254.143 589.083] +/A << /S /GoTo /D (group__avr__stdint_gefea1274b2789b420969856ac1a8f19e) >> +>> endobj +7995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 567.709 261.336 578.24] +/A << /S /GoTo /D (group__avr__stdint_g97a030e600e111b2b5981b4c39265ab6) >> +>> endobj +7996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.371 477.177 274.616 488.081] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +7997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [259.333 466.333 289.559 477.237] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +7998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.745 455.49 272.972 466.394] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +7999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.708 444.647 287.916 455.551] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +8000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [262.949 433.803 293.176 444.707] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +8001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.912 422.96 308.12 433.864] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +8002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [283.154 412.117 313.38 423.021] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +8003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [293.116 401.273 328.324 412.177] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +8004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 338.746 231.458 349.649] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +8005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 338.746 263.288 349.649] +/A << /S /GoTo /D (group__avr__stdint_g9d283932a52e505ae3b2a4f902e8b53c) >> +>> endobj +8006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 327.902 236.439 338.806] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +8007 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 327.902 273.251 338.806] +/A << /S /GoTo /D (group__avr__stdint_g2c8c1b9f53772a86b0827ce7399b68aa) >> +>> endobj +8008 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 265.374 226.476 276.278] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +8009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.975 265.374 275.462 276.278] +/A << /S /GoTo /D (group__avr__stdint_gadfd725efbf565422ab13db91ccca53c) >> +>> endobj +8010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 254.531 231.458 265.435] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +8011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 254.531 285.425 265.435] +/A << /S /GoTo /D (group__avr__stdint_gc76e2383debd5a3b100514044828961a) >> +>> endobj +8012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 243.688 231.458 254.592] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +8013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 243.688 285.425 254.592] +/A << /S /GoTo /D (group__avr__stdint_g17f379713bed2a28ac431760401253cd) >> +>> endobj +8014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 232.844 236.439 243.748] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +8015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 232.844 295.387 243.748] +/A << /S /GoTo /D (group__avr__stdint_g4f3f6e6631cb4aaeadf1c59ff597b2fb) >> +>> endobj +8016 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 222.001 231.458 232.905] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +8017 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 222.001 285.425 232.905] +/A << /S /GoTo /D (group__avr__stdint_g2676b57a778795e5d0598970f1407f38) >> +>> endobj +8018 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 211.158 236.439 222.062] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +8019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 211.158 295.387 222.062] +/A << /S /GoTo /D (group__avr__stdint_gc0af81082969e5e3f4d939b1de7002ac) >> +>> endobj +8020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 200.314 231.458 211.218] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +8021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 200.314 285.425 211.218] +/A << /S /GoTo /D (group__avr__stdint_g2073b30b3170d509bc756bf5c7862caf) >> +>> endobj +8022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 189.471 236.439 200.375] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +8023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 189.471 295.387 200.375] +/A << /S /GoTo /D (group__avr__stdint_gb604f73dd823867b43702ae88b4f4445) >> +>> endobj +8024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 126.943 226.476 137.847] +/A << /S /GoTo /D (group__avr__stdint_gef44329758059c91c76d334e8fc09700) >> +>> endobj +8025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [226.975 126.943 271.487 137.847] +/A << /S /GoTo /D (group__avr__stdint_g880ed9ceb8621521452c81d03bd08cfb) >> +>> endobj +8026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 116.1 231.458 127.004] +/A << /S /GoTo /D (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) >> +>> endobj +8027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 116.1 281.45 127.004] +/A << /S /GoTo /D (group__avr__stdint_gd0fca8b15c218d2c687f8c373a71d228) >> +>> endobj +8041 0 obj << +/D [8039 0 R /XYZ 132.768 705.06 null] +>> endobj +8042 0 obj << +/D [8039 0 R /XYZ 133.768 529.651 null] +>> endobj +8038 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8071 0 obj << +/Length 1162 +/Filter /FlateDecode +>> +stream +xÚ͘_s£6Àßý)èôfE@ÀuúÐÖøškz×Ú¤yH2²CÇÃåÒN¿{%$|¶ƒ8cr}’€ÕîoW«•4f4Þ ~Œ'#LT4ÑÔ@„ú \@dD©qib8в„Ð\ViV€[ËÆ.4GÙœ«Þ˜Oyi!ßäy"_AC“PϺŽÞÂhð× ‹Ð@k k$wƒËkh¤âã{øÆ}#zgGˆ"9pnL¿ Æ†øpŸ"¡Ôõ&®Â¿ÂØm8ÚqÆ¥í +Wª‡OùT’låLCŽ!éX–Wˆ²jcü>a6µ4ãe×(m"”À!ôxõA|õa€ÞqâGðKâ×1ª§ø=Ÿ¯> ðHñ£ÎKâ×1ª§ø=Ÿ¯~`Ûn•&à8a‹rxzm¿SE'®ø²²ï³´Ò•Iâ3Q‘šéÉRš:‘u2.p¯tE–瘨M¨o¦|™Íò¸Êò™z!uZ4gÒ©›ÐÀLã*VŸ“xßÈz(Š©jK‹x&_¨fÉóV[`ÆùƒùÏë­Q«oÛ&… µ(®Ž€t®õY»{«_$E© /Šé²ËXò¦=~m×í©´G¨gÜÛ¸ÜA¼Q®ú9´#ž¢(E}êmGì:¨šñqöþ~LÂð¹F»þÅ°øñ_‹àö¿Èë…æ§óq (A;ÿ ]  œððú¤Äv:¯Äxä ñöþž‚À#þúý½BÛ;2žó2®VW>úš(º­Ûk€DuÕ ø“·ÈWOBÝ›ÊBØ^ÅMUl®—ìyv£5Ü> endobj +8028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 654.082 231.458 664.986] +/A << /S /GoTo /D (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) >> +>> endobj +8029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 654.082 281.45 664.986] +/A << /S /GoTo /D (group__avr__stdint_g9b7386d4af0e20ee32296d9a158c9f3a) >> +>> endobj +8030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 643.646 236.439 654.55] +/A << /S /GoTo /D (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) >> +>> endobj +8031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 643.646 291.412 654.55] +/A << /S /GoTo /D (group__avr__stdint_g6ed085329b153773ff76afa0702cf897) >> +>> endobj +8032 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 633.209 231.458 644.113] +/A << /S /GoTo /D (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) >> +>> endobj +8033 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 633.209 281.45 644.113] +/A << /S /GoTo /D (group__avr__stdint_g920d4b149da0252281b6762375fb644a) >> +>> endobj +8034 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 622.773 236.439 633.677] +/A << /S /GoTo /D (group__avr__stdint_g33594304e786b158f3fb30289278f5af) >> +>> endobj +8035 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 622.773 291.412 633.677] +/A << /S /GoTo /D (group__avr__stdint_g8f075c759c74e109e8184306c663809d) >> +>> endobj +8036 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 612.336 231.458 623.24] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +8037 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 612.336 281.45 623.24] +/A << /S /GoTo /D (group__avr__stdint_gfd072b9a94c14417246175f6442422ae) >> +>> endobj +8043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 601.9 236.439 612.804] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +8044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 601.9 291.412 612.804] +/A << /S /GoTo /D (group__avr__stdint_g6fd055dddb7d91fab0635146851af8d5) >> +>> endobj +8045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 530.671 231.458 541.575] +/A << /S /GoTo /D (group__avr__stdint_g831d6234342279926bb11bad3a37add9) >> +>> endobj +8046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.956 530.671 269.375 541.575] +/A << /S /GoTo /D (group__avr__stdint_g036cd61bb4b30bb510b9538af4cebd1d) >> +>> endobj +8047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.231 520.235 236.439 531.139] +/A << /S /GoTo /D (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) >> +>> endobj +8048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.937 520.235 279.338 531.139] +/A << /S /GoTo /D (group__avr__stdint_g2ba5f6c0633401558d277b2c0e4f758d) >> +>> endobj +8049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 379.366 212.523 389.294] +/A << /S /GoTo /D (group__avr__stdio_g3e8cefeee58f762ff50bcef35fa12eec) >> +>> endobj +8050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 366.334 210.869 376.865] +/A << /S /GoTo /D (group__avr__stdio_gaca70138f0cb63ddb026921afc635179) >> +>> endobj +8051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 353.905 215.85 364.436] +/A << /S /GoTo /D (group__avr__stdio_g0c0ef221f95f64e8632451312fd18cc8) >> +>> endobj +8052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 341.476 214.176 352.006] +/A << /S /GoTo /D (group__avr__stdio_g5ce35bd5ba5021fd3b2e951e8f497656) >> +>> endobj +8053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 329.047 210.311 339.577] +/A << /S /GoTo /D (group__avr__stdio_g59adc4c82490d23754cd39c2fb99b0da) >> +>> endobj +8054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 316.618 251.556 327.148] +/A << /S /GoTo /D (group__avr__stdio_g793fcb8f10b6b8746d4186012929ddf1) >> +>> endobj +8055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 303.815 252.662 314.719] +/A << /S /GoTo /D (group__avr__stdio_gc04f5faa8e86a4ce4ae084d85386af40) >> +>> endobj +8056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 291.386 266.5 302.29] +/A << /S /GoTo /D (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) >> +>> endobj +8057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 279.934 290.012 289.861] +/A << /S /GoTo /D (group__avr__stdio_g79826a1c733e4f67843256d34ad64352) >> +>> endobj +8058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 267.505 294.435 277.432] +/A << /S /GoTo /D (group__avr__stdio_g822a791a1c06a12b95c14ace75b48ad2) >> +>> endobj +8059 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 253.765 278.395 265.721] +/A << /S /GoTo /D (group__avr__stdio_g93db55caeeaf13488a635f8896a6bdf3) >> +>> endobj +8060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 242.044 246.844 252.574] +/A << /S /GoTo /D (group__avr__stdio_g132917c782a0ba854c3ae9abe57c3b12) >> +>> endobj +8061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 229.615 246.286 240.145] +/A << /S /GoTo /D (group__avr__stdio_g280c47b9edff2751b8dbb9a715dc44c5) >> +>> endobj +8062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 216.812 298.321 227.716] +/A << /S /GoTo /D (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) >> +>> endobj +8063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 204.757 234.4 215.287] +/A << /S /GoTo /D (group__avr__stdio_ga1226b8f734a1b5148d931ae2908c45d) >> +>> endobj +8064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 191.954 208.647 202.858] +/A << /S /GoTo /D (group__avr__stdio_g247111653f3e91bf2cb4930d590d8201) >> +>> endobj +8065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 179.525 221.369 190.429] +/A << /S /GoTo /D (group__avr__stdio_g61e2590ae5f2f2e351365640d2ac755a) >> +>> endobj +8066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 167.096 208.089 178] +/A << /S /GoTo /D (group__avr__stdio_gcff255b3a0079ebb1516e8a4eb23a6fb) >> +>> endobj +8067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 154.667 220.811 165.571] +/A << /S /GoTo /D (group__avr__stdio_gc0484b3e3a4d8361d91c3322440f9195) >> +>> endobj +8072 0 obj << +/D [8070 0 R /XYZ 132.768 705.06 null] +>> endobj +3816 0 obj << +/D [8070 0 R /XYZ 133.768 513.88 null] +>> endobj +1461 0 obj << +/D [8070 0 R /XYZ 133.768 507.131 null] +>> endobj +1465 0 obj << +/D [8070 0 R /XYZ 133.768 482.803 null] +>> endobj +8073 0 obj << +/D [8070 0 R /XYZ 133.768 434.128 null] +>> endobj +8074 0 obj << +/D [8070 0 R /XYZ 133.768 434.128 null] +>> endobj +8075 0 obj << +/D [8070 0 R /XYZ 133.768 420.539 null] +>> endobj +8076 0 obj << +/D [8070 0 R /XYZ 133.768 408.109 null] +>> endobj +8077 0 obj << +/D [8070 0 R /XYZ 133.768 158.652 null] +>> endobj +8078 0 obj << +/D [8070 0 R /XYZ 133.768 147.1 null] +>> endobj +8079 0 obj << +/D [8070 0 R /XYZ 133.768 134.671 null] +>> endobj +8069 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F36 2440 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8122 0 obj << +/Length 1354 +/Filter /FlateDecode +>> +stream +xÚÝZKsÚH¾ó+t„ª¥ÓóžÉqkãÔ¦ö°›åæ¤( ¦Š‡Wg³¿~[HvaFj'NN4ÃÌ÷õ»g0¹N0yßûuÔ{s!m XúÍ¡8ë Ø ’Ñ,¹ìK Cˆý|;[làf0”û‹eZ>}Lçi6¾Ÿ®§ÅOh$ö•õƒÏ£½w£Þ?=A+b"VÐ$ÓUïò3&3zù!APÁ'_öCW‰Ò4T—Éß½¿zx~ÛÆT¦ÜöÅn=Ý.6ë|¿‰ûÉ4gZÐ*$C)Á8[Nü$¥y4'¹¾Xo«Ÿ Ùu…èã~@ÁÂ|ºÜäéÓ©Å›Ohðâ÷?ÞïÞ\}°§Á„@ƒËµU9èÑ65/ïÇŒÇù6K'+úSñx±¡ `¼H†B‚·º#œ»ùmFƒæ‘€¼©u@¿”Ê4%™m«Ç›Ivl ÖŠ¸%æ«mõÿwiú“ñrq¿Êx<¹=B¦p†X ›Š‰ÍñŸ‘|’¡8k€Ýø”qK´àÓ[Pž‹Ïùín;­£²˜]meZí²†]Š°3™Ÿ@VK&û;m}ç¥ȧùR€#Ø‚CBãÞ9S8®›@6t…äÐsÁ»ë,º’ì—6H$ !WÍ:?ú8R'!(i›¥$Ã96%Ѽ3LæŸ5‚g­@ø“3†R:Ë¥aëv*æ ׎°|ñ_:~°¢uc:°Ê²iåãFfãUÏS¶ìÚk7& “- âbò.ÿæùr&\<Ž‡ÀÇUiäßA!_.zDi©èuŽMÛ¹HO‹Såýcv ½4[ºkí9m¾G 2/뤀±um:΂l”-ƒŽC³pî¼çòžm TŽ;¯_ec¡†6/@£gl äJ´ÂoG“7ÐØ?ÝÐTˆª6B9¥=(+9 ëV³“ÚñÚI3žŒSq5q:)™w€&رö$†¸Jý®ŠP´7 ¬} Ã4ÄUÒZhZ›þüK¶Ø>ëák­¡)Œm–Ü>Ò¤ÇåÙ2=©Û*_}ÊÀ«G—ւ†~ÈP=ÉÓe:ÉÒ,‹-4Dº²V*>wé‘íô¨PübK»ü&>–&ê,²&>zÙ9xp*æªóýgrJNùÃ+Î>€²U/î}ºN³É6•Û¬ËÏÑÍ®|ø-–ºüøVª·Â—ß$bõ´çŠ‡ò”¯ør— ”ë—‹«ê®¾V¹ù÷ëuº~ +ù¤ýåá +endstream +endobj +8121 0 obj << +/Type /Page +/Contents 8122 0 R +/Resources 8120 0 R +/MediaBox [0 0 612 792] +/Parent 7917 0 R +/Annots [ 8068 0 R 8080 0 R 8081 0 R 8082 0 R 8083 0 R 8084 0 R 8085 0 R 8086 0 R 8087 0 R 8088 0 R 8089 0 R 8090 0 R 8091 0 R 8092 0 R 8093 0 R 8094 0 R 8095 0 R 8096 0 R 8097 0 R 8098 0 R 8099 0 R 8100 0 R 8101 0 R 8102 0 R 8103 0 R 8104 0 R 8105 0 R 8106 0 R 8107 0 R 8108 0 R 8109 0 R 8110 0 R 8111 0 R 8112 0 R 8113 0 R 8114 0 R 8115 0 R 8116 0 R 8117 0 R 8118 0 R ] +>> endobj +8068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 631.879 196.473 642.409] +/A << /S /GoTo /D (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) >> +>> endobj +8080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 618.642 203.118 629.546] +/A << /S /GoTo /D (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) >> +>> endobj +8081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 605.779 213.638 616.683] +/A << /S /GoTo /D (group__avr__stdio_g55b25ecbfd3811ea4495d1f235e2e186) >> +>> endobj +8082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 592.916 193.155 603.82] +/A << /S /GoTo /D (group__avr__stdio_gf3387285b3eb0ce4e0e7ca3ccaed9014) >> +>> endobj +8083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 580.052 194.819 590.956] +/A << /S /GoTo /D (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) >> +>> endobj +8084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 567.189 205.339 578.093] +/A << /S /GoTo /D (group__avr__stdio_g418e63921ed6259e873cd21b6c5c8e6e) >> +>> endobj +8085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 554.326 199.8 565.23] +/A << /S /GoTo /D (group__avr__stdio_g0b15be24dd9db93355e1f62937fdfd9a) >> +>> endobj +8086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 541.463 198.694 552.367] +/A << /S /GoTo /D (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) >> +>> endobj +8087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 528.599 209.215 539.503] +/A << /S /GoTo /D (group__avr__stdio_g2b829d696b17dedbf181cd5dc4d7a31d) >> +>> endobj +8088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 515.736 203.676 526.64] +/A << /S /GoTo /D (group__avr__stdio_g77070c245d4ca4f7ec7d7144260fb875) >> +>> endobj +8089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 502.873 214.196 513.777] +/A << /S /GoTo /D (group__avr__stdio_g53ff61856759709eeceae10aaa10a0a3) >> +>> endobj +8090 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 490.01 203.676 500.913] +/A << /S /GoTo /D (group__avr__stdio_gaeb1bbe21a1b9b50b207ab059a67993f) >> +>> endobj +8091 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 477.146 214.196 488.05] +/A << /S /GoTo /D (group__avr__stdio_gf47f5141509d1e434f9da2b27287a707) >> +>> endobj +8092 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 464.283 208.657 475.187] +/A << /S /GoTo /D (group__avr__stdio_gc92e8c42a044c8f50aad5c2c69e638e0) >> +>> endobj +8093 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 451.42 219.177 462.324] +/A << /S /GoTo /D (group__avr__stdio_g2071feb5c92bf50a6bd508a07ead9515) >> +>> endobj +8094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 438.556 198.136 449.46] +/A << /S /GoTo /D (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) >> +>> endobj +8095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 425.693 208.657 436.597] +/A << /S /GoTo /D (group__avr__stdio_g36173b4a8551b61811089198beec69d9) >> +>> endobj +8096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 412.83 192.607 423.734] +/A << /S /GoTo /D (group__avr__stdio_g19c2bbe9ce4af9f0a7e3448387004fd3) >> +>> endobj +8097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 399.967 203.128 410.871] +/A << /S /GoTo /D (group__avr__stdio_g3d25813cb225ca410518a3f48eb00caa) >> +>> endobj +8098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 387.103 189.29 398.007] +/A << /S /GoTo /D (group__avr__stdio_g33f7bd99d40bf6f68a00d5507d65363d) >> +>> endobj +8099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 374.24 199.81 385.144] +/A << /S /GoTo /D (group__avr__stdio_gb4de83c560c79bf880fa39b997d61610) >> +>> endobj +8100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.35 361.377 211.133 372.281] +/A << /S /GoTo /D (group__avr__stdio_gdd5777719a41713629a62b68c239a774) >> +>> endobj +8101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 336.558 192.597 347.462] +/A << /S /GoTo /D (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35) >> +>> endobj +8102 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 323.695 199.242 334.599] +/A << /S /GoTo /D (group__avr__stdio_gb4f9b130166e5811519513d6178c1ae3) >> +>> endobj +8103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 310.832 206.147 321.736] +/A << /S /GoTo /D (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) >> +>> endobj +8104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 297.969 202.829 308.873] +/A << /S /GoTo /D (group__avr__stdio_gf577dcba9afe50a9d068d0b69ac85d2f) >> +>> endobj +8105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 285.105 205.867 296.009] +/A << /S /GoTo /D (group__avr__stdio_g54fa47156a34c1659a29ed96e46e3518) >> +>> endobj +8106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 272.616 210.092 283.146] +/A << /S /GoTo /D (group__avr__stdio_gaa6d255675688c736c99ebd32f2a7214) >> +>> endobj +8107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 259.752 188.722 270.283] +/A << /S /GoTo /D (group__avr__stdio_g47b00053272d6443c9befdb1304002cb) >> +>> endobj +8108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 246.889 195.357 257.42] +/A << /S /GoTo /D (group__avr__stdio_ga89248dd55efb5f59a96e82976c97758) >> +>> endobj +8109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 233.652 202.002 244.556] +/A << /S /GoTo /D (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) >> +>> endobj +8110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 220.789 212.522 231.693] +/A << /S /GoTo /D (group__avr__stdio_g6c6b5b881ce8f4739777ff3a615e988a) >> +>> endobj +8111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 208.299 197.021 218.83] +/A << /S /GoTo /D (group__avr__stdio_g0beb4fd9ff6833a364e3ce60370de058) >> +>> endobj +8112 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 195.436 207.541 205.966] +/A << /S /GoTo /D (group__avr__stdio_g7aec94e711ad64724076666586a26839) >> +>> endobj +8113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 182.573 193.703 193.103] +/A << /S /GoTo /D (group__avr__stdio_g3f0edc16dcabb5344d59d42cf7682102) >> +>> endobj +8114 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 169.71 204.224 180.24] +/A << /S /GoTo /D (group__avr__stdio_g0fb7fd70cd7618f27d8219c97e61bcf3) >> +>> endobj +8115 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 156.473 198.684 167.377] +/A << /S /GoTo /D (group__avr__stdio_g8bd4b760f67791a54e73111734caa82f) >> +>> endobj +8116 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 143.983 197.579 154.513] +/A << /S /GoTo /D (group__avr__stdio_g5507d0e1bbfd387fbb2ffcfd8f5dca6f) >> +>> endobj +8117 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 131.12 208.099 141.65] +/A << /S /GoTo /D (group__avr__stdio_geca11dc4b3757ed4ff2f2a4950eba117) >> +>> endobj +8118 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 118.257 195.128 128.787] +/A << /S /GoTo /D (group__avr__stdio_gdb974f28765a31026ee6bf71d5175951) >> +>> endobj +8123 0 obj << +/D [8121 0 R /XYZ 132.768 705.06 null] +>> endobj +8124 0 obj << +/D [8121 0 R /XYZ 133.768 650.391 null] +>> endobj +3817 0 obj << +/D [8121 0 R /XYZ 133.768 109.731 null] +>> endobj +8120 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8143 0 obj << +/Length 1330 +/Filter /FlateDecode +>> +stream +xÚÅXmSã6þž_á™~qf.ª^mé¾qèÝp@I˜¶7c›ÄÓÄNmç€ûõ]ùØqÒr…D²¤Ýg­vWÂÆÄÀÆYïÓ¸÷ë)µ …”?ãƒ0†lK–ÈRÄûÆ­I9â¤? c3ÍüYxßçØDÓþ€ +lž†³ h]AÒ'Ò "O”Z&³TÿÛøKïdÜû§G@-6ÈŠ‚†7ïÝ~ƃ_ Œ˜’Æc>un0S‰^83F½ß{¸…€!h¼°eâ-àq‹l @ãjE,ªƒÌI~!j¤^.²0Ž´ öÒ¡›¹ÅÄQ–,½lY¨Msš*ó@;^Ý q¦@E–UZvG©h¬1n"·RK-G4Ûɤ¤ý:Ÿ£5ûaŸ +ó»“5Ô‚1¡À+y»¦Y·ª»ƒÊ@FQ¥q4H37òݤdö ¢õŒ`3‚ñÏ£ËbèÆHÑ|XFž&?E‡¢ô?¸Ã˜FÁv[¯.†—_¯G¶…èQüdŸÍÑÉö¦nRø%á+fP‰æ0±XŒ1Û€±e¾¸M«ea»]s¾£¬ Õq¾ëtgŠþ@# +‡°¨¥#%k펓–"Wt%®>å{ÚÀTa$AHÁ}?Îf[8›ÅÑd͢؃p²ªäðôAÔÂìý=n¹…½e”†“¨Š¦{3¢¸µƒäu Z‰šÂwtÀålgßà~Q?Ï%$RÛÞÍ!s3¶Fà²E<ßD +XŒÍ8ô×qàݶ³°DºŦ­Þ‚` ¶‘ã${ëpF”|?‡ð²zï׿`ˆA ØÈüÇP9qM7dù Iu!ÕÌìeW{pœ?^ÞWŸ2¬œ,çA”U@ _«$»ˆ3XÉ,afS7«ZAZ~\Q«»nR~â|.®<7ÓÄé¯aT (~ð á¸p`‹P„&nò܇æ‡c«Ñ"Œý`¶‡Ü#˜@Òªœ9¦¸y¯]t™­Bá9]‰¨²‘Ч-¯š‹…s†á_è¹3 Úÿ…OZÈ‚Å/ðæ;ÀÓ5¦æ(Ö*¤ù8 ¢JYôw˜Ÿèäœé†»XÌf]F+ZXˆÀHÔÕÆ`6ï (»š…y®%‚—VÌ0DáÞÑ &‹ º/ý*]^¨+ÁÀoÖ–/Õ¤@B¦šŽõ½àr4¾vŽÎû67ÿèCn3À—„ù×È}>»è®3ñë"Èþ¸®Îo¶â ÿŽ›««“ëã£ÑÉüUÑ~SòVˆ±ò–ਬZæg1Üž‚¶Zf‘<WÁŒY´‘©™T35Ñ·_ºÝ£e¾„~­1×cqœExyhÁI¤†¡kJ‰°ÍšGÇq4w’v$}‰¸%ßZ@)[½f—Í=xXÛ&›{ýÆeÖDÀXÉV>ë1ô³©žc5èjͪ87sJ¡š”›2-ø­”²L´¼|‹(OZúSnÊ-n†²f߇çŸ?9¿96é Hë©kE#¦“ï€{ rt>p.nÎÏ·Ñ1(WíËvÑž†?‚õ·’Íúmý£öÈ}€EVjnWî¬uè\-ÂÛa#Œ»Bs· +J@ú7Úþ´ý¨1Òù*ª$‚hºÇ›hõjAPdrõ)T*Ī#{DAR”©MUS§ËêÙÒ+¼ø!ø#e‰,zcÙQu»ùã^Òg6_P¨–õÒs)2~zžQÛä*ÛVí +endstream +endobj +8142 0 obj << +/Type /Page +/Contents 8143 0 R +/Resources 8141 0 R +/MediaBox [0 0 612 792] +/Parent 8154 0 R +/Annots [ 8119 0 R 8125 0 R 8126 0 R 8127 0 R 8128 0 R 8129 0 R 8130 0 R 8131 0 R 8132 0 R 8133 0 R 8134 0 R 8135 0 R 8136 0 R 8137 0 R 8138 0 R 8139 0 R ] +>> endobj +8119 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.306 583.695 204.532 593.623] +/A << /S /GoTo /D (structdiv__t) >> +>> endobj +8125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.306 570.744 207.302 580.672] +/A << /S /GoTo /D (structldiv__t) >> +>> endobj +8126 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 515.884 263.989 525.812] +/A << /S /GoTo /D (group__avr__stdlib_g3bd31f0d9a9127548b734e7ca03cc6df) >> +>> endobj +8127 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 502.33 201.723 512.86] +/A << /S /GoTo /D (group__avr__stdlib_g4f6b3dd51c1f8519d5b8fce1dbf7a665) >> +>> endobj +8128 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 489.005 201.723 499.909] +/A << /S /GoTo /D (group__avr__stdlib_g1d4c7b84110553544081a69a0fc49c52) >> +>> endobj +8129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 476.054 203.935 486.958] +/A << /S /GoTo /D (group__avr__stdlib_g5816f25bd0f45787cc16bebf6a735d8a) >> +>> endobj +8130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 463.102 206.704 474.006] +/A << /S /GoTo /D (group__avr__stdlib_g66e31b615d9ef1a19c452d64d7250112) >> +>> endobj +8131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 450.151 210.311 461.055] +/A << /S /GoTo /D (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) >> +>> endobj +8132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 437.199 213.987 448.103] +/A << /S /GoTo /D (group__avr__stdlib_g4fca27496ca29c0a723d197696641eff) >> +>> endobj +8133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 424.248 218.61 435.152] +/A << /S /GoTo /D (group__avr__stdlib_ga99a0733f06d2b9960a1401c2721af1e) >> +>> endobj +8134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 319.176 302.894 329.103] +/A << /S /GoTo /D (group__avr__stdlib_g815d0d26e215d9b78af1cb2288d22361) >> +>> endobj +8135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 306.224 287.621 316.152] +/A << /S /GoTo /D (group__avr__stdlib_g268774f80047812307365f3113109767) >> +>> endobj +8136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 293.273 291.506 303.2] +/A << /S /GoTo /D (group__avr__stdlib_g125348f1e1fed1793426f4c4dc6fb2f7) >> +>> endobj +8137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.009 279.345 216.119 290.249] +/A << /S /GoTo /D (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) >> +>> endobj +8138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.537 254.438 214.542 265.342] +/A << /S /GoTo /D (group__avr__stdlib_g060c998e77fb5fc0d3168b3ce8771d42) >> +>> endobj +8139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 123.843 247.94 133.77] +/A << /S /GoTo /D (group__avr__stdlib_g690f251553b39fd4f31894826141b61a) >> +>> endobj +8144 0 obj << +/D [8142 0 R /XYZ 132.768 705.06 null] +>> endobj +1469 0 obj << +/D [8142 0 R /XYZ 133.768 667.198 null] +>> endobj +1473 0 obj << +/D [8142 0 R /XYZ 133.768 650.367 null] +>> endobj +8145 0 obj << +/D [8142 0 R /XYZ 133.768 601.693 null] +>> endobj +8146 0 obj << +/D [8142 0 R /XYZ 133.768 532.268 null] +>> endobj +8147 0 obj << +/D [8142 0 R /XYZ 133.768 386.459 null] +>> endobj +8148 0 obj << +/D [8142 0 R /XYZ 133.768 206.597 null] +>> endobj +8149 0 obj << +/D [8142 0 R /XYZ 133.768 206.597 null] +>> endobj +8150 0 obj << +/D [8142 0 R /XYZ 133.768 192.485 null] +>> endobj +8151 0 obj << +/D [8142 0 R /XYZ 133.768 179.534 null] +>> endobj +8152 0 obj << +/D [8142 0 R /XYZ 133.768 166.582 null] +>> endobj +8153 0 obj << +/D [8142 0 R /XYZ 133.768 153.631 null] +>> endobj +8141 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F33 2429 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8185 0 obj << +/Length 1251 +/Filter /FlateDecode +>> +stream +xÚÍYK“›8¾ûWP9AÕXѡܲ»3©Je“]‡ä2IQØÈ6µ&€“™ýõ+ñc0Œ=Ùœx©[_¿»4V4ÞL~s'/o°m luq—"pÛ1lÁ€-áÆ­‰) Èš"¡™åAÎ- +M°¶¦˜Aó&Œdy7“K™ZÈ1e¼Ð¯ ƶI8´¾ºo'×îäÛ©m¡Û 3›ÉíWhêã["ãG±tcª–"M'OàiìŒLX‰Ýµ85îd —Y£¦WÄ°IlJ„1ÅØvEûc¶GcÜN™ÒA^ò+…ãü d…Œ/om°dØœ*Â’„¤b¦5®*UÌŽ p@9®ÉÍ®;Ù©àÊbd˜?îgó$|º¨ÄÏ(ªšMù¥ò¾Þ±hþîÃ|@¥Îr?ßfÏ2eô7Øô¸9Änü(J]2>¶¢¥˜ê©]È?_¿{÷á÷#›e—4Ê2•òÔ´×¢*[Ç£œO%––ô¡*$§â×°Ýb„íbÕ“ÁÿdÔçÐ@*{Uг=Ã㻳ýRs¦QC"æHA²Gr@yΨîPňʠ£ÆŸQÝÛú$… ¬kC”§JÛòÕ©2NèxÕµ‰UÉFö…JvêÇÁ Ã±sKS_öaØïa›UÊàÉsÝ µxé0Pu xtZ«G$1ò%¿ï:SÕ'äÄ©ŽT«Éë³%°é§¡¯ü÷bǪ»3¤nýx^Ù¨KñÓ`Æsÿ8ƒtÄ*ž +_a]KÿNwbiÞŽU.Æía¾ýó˃訯­?eÔ”«jæˆ_2õ¯®Ü«ñ+Æ€Ô¾òFÆ2õóÚ哸¼ºëmyó‡\”7´¼ ø +“WÈ)Ÿ0„ÕÝRË$iùàg4©E¸9ÂyÅaþP±LîVrß­”Èÿ¶?`9 +endstream +endobj +8184 0 obj << +/Type /Page +/Contents 8185 0 R +/Resources 8183 0 R +/MediaBox [0 0 612 792] +/Parent 8154 0 R +/Annots [ 8140 0 R 8155 0 R 8156 0 R 8157 0 R 8158 0 R 8159 0 R 8160 0 R 8161 0 R 8162 0 R 8163 0 R 8164 0 R 8165 0 R 8166 0 R 8167 0 R 8168 0 R 8169 0 R 8170 0 R 8171 0 R 8172 0 R 8173 0 R 8174 0 R 8175 0 R 8176 0 R 8177 0 R 8178 0 R 8179 0 R 8180 0 R 8181 0 R ] +>> endobj +8140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.357 631.417 274.221 642.321] +/A << /S /GoTo /D (group__avr__stdlib_gd37588b5e19ccf152d3e4447098402e2) >> +>> endobj +8155 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 576.931 200.149 587.462] +/A << /S /GoTo /D (group__avr__stdlib_g63e28bec3592384b44606f011634c5a8) >> +>> endobj +8156 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 563.98 185.962 574.51] +/A << /S /GoTo /D (group__avr__stdlib_gdb8c83badc195efc1229799391fececc) >> +>> endobj +8157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 550.655 195.925 561.559] +/A << /S /GoTo /D (group__avr__stdlib_ge017047d6d0a688ccb622ff062dcd230) >> +>> endobj +8158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.699 537.703 218.117 548.607] +/A << /S /GoTo /D (group__avr__stdlib_g885c1ccefb716ff16ab73a57003140be) >> +>> endobj +8159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 513.17 179.905 523.701] +/A << /S /GoTo /D (structdiv__t) >> +>> endobj +8160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.403 513.17 194.879 523.701] +/A << /S /GoTo /D (group__avr__stdlib_g7486ea9a8a90ac6b93bed37d08ebbd9e) >> +>> endobj +8161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.679 499.845 182.675 510.749] +/A << /S /GoTo /D (structldiv__t) >> +>> endobj +8162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.173 499.845 200.418 510.749] +/A << /S /GoTo /D (group__avr__stdlib_g5b688b463f9faaa82f31ac7587e06849) >> +>> endobj +8163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.92 486.894 200.838 497.798] +/A << /S /GoTo /D (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) >> +>> endobj +8164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.604 486.894 461.468 497.798] +/A << /S /GoTo /D (group__avr__stdlib_gd37588b5e19ccf152d3e4447098402e2) >> +>> endobj +8165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 461.987 200.358 472.891] +/A << /S /GoTo /D (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) >> +>> endobj +8166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.348 449.036 243.805 459.94] +/A << /S /GoTo /D (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) >> +>> endobj +8167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.883 436.084 194.819 446.988] +/A << /S /GoTo /D (group__avr__stdlib_g764de49bd918caf24ce1caf3a10b3823) >> +>> endobj +8168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 423.507 187.626 434.037] +/A << /S /GoTo /D (group__avr__stdlib_g3a1fe00c1327bbabc76688a7a1d73370) >> +>> endobj +8169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 410.555 194.471 421.085] +/A << /S /GoTo /D (group__avr__stdlib_g137096a48cc0c731052cadfb69c39b34) >> +>> endobj +8170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 397.604 214.266 408.134] +/A << /S /GoTo /D (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) >> +>> endobj +8171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 384.279 195.158 395.183] +/A << /S /GoTo /D (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) >> +>> endobj +8172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 371.701 210.939 382.231] +/A << /S /GoTo /D (group__avr__stdlib_g51ac965dacbc9daf922f469bdcfe00c2) >> +>> endobj +8173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 358.376 214.256 369.28] +/A << /S /GoTo /D (group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) >> +>> endobj +8174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 345.424 211.975 356.328] +/A << /S /GoTo /D (group__avr__stdlib_g5ee4d110a3bb55d2eadda05e3ebedf8a) >> +>> endobj +8175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.288 332.473 204.772 343.377] +/A << /S /GoTo /D (group__avr__stdlib_g689c9d3c4c04463aa31d329937789d06) >> +>> endobj +8176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 319.895 190.386 330.425] +/A << /S /GoTo /D (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) >> +>> endobj +8177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.684 306.57 201.255 317.474] +/A << /S /GoTo /D (group__avr__stdlib_gcceff9dc95bb3c5562dc9e61fc3d9075) >> +>> endobj +8178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 293.619 198.685 304.523] +/A << /S /GoTo /D (group__avr__stdlib_gf5085001be836a0f2a5d3269a7c9fd04) >> +>> endobj +8179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 238.759 255.511 249.663] +/A << /S /GoTo /D (group__avr__stdlib_gffadd67736fd340e893fb22c207de597) >> +>> endobj +8180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 225.808 269.787 236.712] +/A << /S /GoTo /D (group__avr__stdlib_g9310042b3956282440c091d20cb98c5f) >> +>> endobj +8181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 212.856 267.018 223.76] +/A << /S /GoTo /D (group__avr__stdlib_g4d7b1bf0f75d529cc75229a266132115) >> +>> endobj +8186 0 obj << +/D [8184 0 R /XYZ 132.768 705.06 null] +>> endobj +8187 0 obj << +/D [8184 0 R /XYZ 133.768 648.488 null] +>> endobj +8188 0 obj << +/D [8184 0 R /XYZ 133.768 595.531 null] +>> endobj +8189 0 obj << +/D [8184 0 R /XYZ 133.768 257.733 null] +>> endobj +3818 0 obj << +/D [8184 0 R /XYZ 133.768 203.89 null] +>> endobj +8183 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8192 0 obj << +/Length 256 +/Filter /FlateDecode +>> +stream +xÚ•?oà Åw>Å0˜Þ!cÕ&R¶¶lQ†ÄÆI$ÇVÝôO¾}q°¥H:½wp¼ã~@X±GÏ–Ê€“ÎDñ Ö²4Œ+¤q¾† W¹ÌId„ˆüãR·§½È‘Ë£ÈT|yjCr¯¡ ƒ ËCWG¨”áº$±õköìÙ;£8îÆtX@uf›-B/×€R; ß·Ö3è<¶Òø°…7öÂpúû¬C•¥þOäŒÁHWj{Á:©M‘(¬B†Ý%ÔiÙ¾KêŸÉ<…*™< áBéÙT)ÄÉ5B¼R±‹¯Aè’g‘ë”°¿N‘ýÏõº¿yßÈñÕåcÄ +endstream +endobj +8191 0 obj << +/Type /Page +/Contents 8192 0 R +/Resources 8190 0 R +/MediaBox [0 0 612 792] +/Parent 8154 0 R +>> endobj +8193 0 obj << +/D [8191 0 R /XYZ 132.768 705.06 null] +>> endobj +1477 0 obj << +/D [8191 0 R /XYZ 133.768 667.198 null] +>> endobj +8190 0 obj << +/Font << /F26 1917 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8196 0 obj << +/Length 585 +/Filter /FlateDecode +>> +stream +xÚ­–MsÚ0†ïþ:ÚÔ•d}åØIÉLNmâÉtˆ13`¨1mù÷•±„LfÚ²'ËXûî£w5ìY Ñç,ú4æŠXj•{ds„ Z¢¬¤Ê2’ÍÈ$æ)My2bïë*a&Χû"ßìès2ââñj]´«§b^œveî~bÚ¸µÐ§B+¹8—7–Û»— Ò 1Í4hE·WÌ”qyX£pZ,N q"Ú* —¸8ñ’aÝOÉ€˜Fr4#ÃV´;& R A¦HL3ÑZ [Ð~W¢J´k©†„˜V*4+½&4;ìhŽ÷—Í' ʼù¶?ͶýLêÒ?P+7tYȨR]à çò"†LFÒeÏ—Óª%f©'Á]ÓÔmlƒDÜLÑÕ¢§Ÿ©µk«¼kí +³6§| ¹;EÝú-¨9«õAÆ”ZsÎÈœ2»Èxuþ·†jñ/Ó?õ+jµ0þÐo,ª›*Š²¨¦u_KWÂÓ3[úâvW'm c¦}ãÝjžpo«öeÚ¼ü¬¡ãÑzõÖ)¼;Éíïã¢(Ã#ÿ‚¢O˜ +endstream +endobj +8195 0 obj << +/Type /Page +/Contents 8196 0 R +/Resources 8194 0 R +/MediaBox [0 0 612 792] +/Parent 8154 0 R +/Annots [ 8182 0 R ] +>> endobj +8182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 -176.646 211.686 -165.742] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +8197 0 obj << +/D [8195 0 R /XYZ 132.768 705.06 null] +>> endobj +1481 0 obj << +/D [8195 0 R /XYZ 133.768 648.084 null] +>> endobj +3819 0 obj << +/D [8195 0 R /XYZ 133.768 624.139 null] +>> endobj +1485 0 obj << +/D [8195 0 R /XYZ 133.768 624.139 null] +>> endobj +1489 0 obj << +/D [8195 0 R /XYZ 133.768 597.393 null] +>> endobj +3820 0 obj << +/D [8195 0 R /XYZ 133.768 573.448 null] +>> endobj +1493 0 obj << +/D [8195 0 R /XYZ 133.768 573.448 null] +>> endobj +1497 0 obj << +/D [8195 0 R /XYZ 133.768 548.986 null] +>> endobj +3821 0 obj << +/D [8195 0 R /XYZ 133.768 522.758 null] +>> endobj +1501 0 obj << +/D [8195 0 R /XYZ 133.768 522.758 null] +>> endobj +1505 0 obj << +/D [8195 0 R /XYZ 133.768 498.295 null] +>> endobj +3822 0 obj << +/D [8195 0 R /XYZ 133.768 472.067 null] +>> endobj +1509 0 obj << +/D [8195 0 R /XYZ 133.768 472.067 null] +>> endobj +1513 0 obj << +/D [8195 0 R /XYZ 133.768 446.211 null] +>> endobj +3823 0 obj << +/D [8195 0 R /XYZ 133.768 421.376 null] +>> endobj +1517 0 obj << +/D [8195 0 R /XYZ 133.768 421.376 null] +>> endobj +1521 0 obj << +/D [8195 0 R /XYZ 133.768 396.913 null] +>> endobj +3824 0 obj << +/D [8195 0 R /XYZ 133.768 370.685 null] +>> endobj +1525 0 obj << +/D [8195 0 R /XYZ 133.768 370.685 null] +>> endobj +1529 0 obj << +/D [8195 0 R /XYZ 133.768 344.83 null] +>> endobj +3825 0 obj << +/D [8195 0 R /XYZ 133.768 319.994 null] +>> endobj +1533 0 obj << +/D [8195 0 R /XYZ 133.768 319.994 null] +>> endobj +1537 0 obj << +/D [8195 0 R /XYZ 133.768 295.532 null] +>> endobj +3826 0 obj << +/D [8195 0 R /XYZ 133.768 269.304 null] +>> endobj +1541 0 obj << +/D [8195 0 R /XYZ 133.768 269.304 null] +>> endobj +1545 0 obj << +/D [8195 0 R /XYZ 133.768 243.448 null] +>> endobj +3827 0 obj << +/D [8195 0 R /XYZ 133.768 218.613 null] +>> endobj +1549 0 obj << +/D [8195 0 R /XYZ 133.768 218.613 null] +>> endobj +1553 0 obj << +/D [8195 0 R /XYZ 133.768 191.867 null] +>> endobj +3828 0 obj << +/D [8195 0 R /XYZ 133.768 167.922 null] +>> endobj +1557 0 obj << +/D [8195 0 R /XYZ 133.768 167.922 null] +>> endobj +1561 0 obj << +/D [8195 0 R /XYZ 133.768 141.176 null] +>> endobj +3829 0 obj << +/D [8195 0 R /XYZ 133.768 117.231 null] +>> endobj +1565 0 obj << +/D [8195 0 R /XYZ 133.768 117.231 null] +>> endobj +1569 0 obj << +/D [8195 0 R /XYZ 133.768 90.485 null] +>> endobj +3830 0 obj << +/D [8195 0 R /XYZ 133.768 66.541 null] +>> endobj +1573 0 obj << +/D [8195 0 R /XYZ 133.768 66.541 null] +>> endobj +1577 0 obj << +/D [8195 0 R /XYZ 133.768 39.795 null] +>> endobj +3831 0 obj << +/D [8195 0 R /XYZ 133.768 15.85 null] +>> endobj +1581 0 obj << +/D [8195 0 R /XYZ 133.768 15.85 null] +>> endobj +1585 0 obj << +/D [8195 0 R /XYZ 133.768 -10.896 null] +>> endobj +3832 0 obj << +/D [8195 0 R /XYZ 133.768 -34.841 null] +>> endobj +1589 0 obj << +/D [8195 0 R /XYZ 133.768 -34.841 null] +>> endobj +1593 0 obj << +/D [8195 0 R /XYZ 133.768 -61.587 null] +>> endobj +3833 0 obj << +/D [8195 0 R /XYZ 133.768 -85.532 null] +>> endobj +1597 0 obj << +/D [8195 0 R /XYZ 133.768 -85.532 null] +>> endobj +1601 0 obj << +/D [8195 0 R /XYZ 133.768 -112.278 null] +>> endobj +8198 0 obj << +/D [8195 0 R /XYZ 133.768 -158.669 null] +>> endobj +8194 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8234 0 obj << +/Length 1248 +/Filter /FlateDecode +>> +stream +xÚÕZÛnÛF}×Wè TÓ½_ò–ÂqÚ R[y²B¦h[…D¹¤äÄýúΊT"±’Ì›°LRÚ™=;sf†$ñî<â½ü>üvΔgÁ*<Œn=Ê9heÜC&‰>ÅùÙE|§5~œDî+B,õ¹æÁçÑ»Á›ÑàŸEµÄ£[j(X"½h>¸úL¼ þøÎ#À­ñ¾¬‡Î=.p(ugÞåà¯)ÙNQ‚”lÇx©qÙÆx´¸„ ñ†(Š »%h!ø,^ŽQÒ$ugQ:}XN‰Tžz_Â’8[ã²Yª#Û¡@p‹ê1ùÄkÆäÎïj(Qû/“BⳆóI.!¼]üùámøGX ÝV©8pÃ6Cé®&\'¥ñÈÀhÑ™AaÇ“ðç÷ï¡1,fåÚeÇÚ³é¿q¸¬®¿ÃÕ¿¬ôG£‹ð㧋7á¾]1˜ßgŒ—èÄ7#þj‡á5‘Ä}Âða•æ×Ô}Ê»Ç(HÎ8È#6½+B÷b=̹yx~~Yšî;S¾nô—Ö>Üø4g@YaÃù*‰\ t ÓdyÜìÛ€Iÿ6+Ïu?9ëÝü|yá£9žýNR Ǫ¦ÌÙ2[ [U5FtdLkjÙõ HΕÓIî0Tlm;3 4߸>º$?°‚’»hœöÇæñ<ŠJü§C ;b‚ „)›PÒ'ÀºókL„.]8Òñ€$MÄãng9yí yÌOFñjÞñ#vá>=´ÕÀB&´ßóS[° +÷}PJK ¼Ã› ÓQˆ9æíP Dƒ±âç»$+‰¯­RÀ•ìM4g „‰˜˜%ŽpƒãµÞPþµ¤ ÔÈÆÕÚ ­@sú#„aoc˜èM€Ì®uztÿâ&Q¢AjuÚ(Ñíö¥LP˜q,ëM˜¤íS¨fmŒZ¥P %÷Å‹³xÙÀy¥CTWÈí"d52JÅB-º§ûÁ¡D´'[¦Ñø 84 ¹·‹êC¢qQÜÖaõ}AŒ-·&´šûÝJñ{ÀMAIÚ¬ü­®ˆ«Zñž¯d5k™À ?=d eˆŽî ¸eWê¬ÉD*Þ®=hl'+‚(%¨oÝÀOö»ãÀ!x,(Ûk&äÀ5íÐOÇYÜÊW)ÈͦOUtVÒždì,ÆC ’T@¸z‰{`AÓŠMìÎ-þ#=$mÜ™·µRtf•Ñt݈®Õà„aÿGµr™A’àý(—&«Ü¢9Ú_+f{œ E Þ©“ÍêÙ¸)¶í=¿ÎbôÙ¶Y0 ¶â}½Ê˜5JÉÈmJ‰žCÏã†ÙP©n}-nÃgD'âTüMݳPÙ ¦™9çú’Ö-øÌúqd»ªÌݺý({“úÄ$1Ô‰|1Ä„-†aÝÀI»ê—0Bô¤òjþ‡€ª'Ü(KHJË“% pÉ»tâömœë|{KUÛ ÚÒN³oÒ.ý òä‹ßûjž5€åsó6/ä)ìR¸Ù~Sœ{λ¶ðmœÄéx¹yUn‘äÇÑýjóî\”Ÿˆü@É+Æ_Q“_1BŠ³õÛ*‹4¿»‹Ç4àÚΦ7…„›§BäâëÓ]i#pÉÿ^ÃŒ~ +endstream +endobj +8233 0 obj << +/Type /Page +/Contents 8234 0 R +/Resources 8232 0 R +/MediaBox [0 0 612 792] +/Parent 8154 0 R +/Annots [ 8199 0 R 8200 0 R 8201 0 R 8202 0 R 8203 0 R 8204 0 R 8205 0 R 8206 0 R 8207 0 R 8208 0 R 8209 0 R 8210 0 R 8211 0 R 8212 0 R 8213 0 R 8214 0 R 8215 0 R 8216 0 R 8217 0 R 8218 0 R 8219 0 R 8220 0 R 8221 0 R 8222 0 R 8223 0 R 8224 0 R 8225 0 R 8226 0 R 8227 0 R 8228 0 R ] +>> endobj +8199 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 531.672 213.091 542.202] +/A << /S /GoTo /D (group__avr__string_gedb0e7bb7333d6122472acddb5df20ac) >> +>> endobj +8200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 476.958 182.944 487.489] +/A << /S /GoTo /D (group__avr__string_gb978764fd2814cd14f9f1a3620aa4ca2) >> +>> endobj +8201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 463.71 185.713 474.614] +/A << /S /GoTo /D (group__avr__string_gcc4734579c84c1b33a9ba9433f2063e4) >> +>> endobj +8202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 450.836 188.483 461.74] +/A << /S /GoTo /D (group__avr__string_gd9ad8d36c2a662f6f3ff420fb0f25826) >> +>> endobj +8203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 437.961 225.783 448.865] +/A << /S /GoTo /D (group__avr__string_g8f2913a691990ae107e9687b8949b553) >> +>> endobj +8204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 425.46 219.795 435.991] +/A << /S /GoTo /D (group__avr__string_g8d270897496bfff9daf51edd64d712d0) >> +>> endobj +8205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 412.212 209.763 423.116] +/A << /S /GoTo /D (group__avr__string_g4cd54dc9109f0d3da49d9c35e6441b61) >> +>> endobj +8206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 399.338 221.36 410.242] +/A << /S /GoTo /D (group__avr__string_g5f60008005ea7557430149926cf583d7) >> +>> endobj +8207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 386.837 226.998 397.367] +/A << /S /GoTo /D (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc) >> +>> endobj +8208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 373.963 228.911 384.493] +/A << /S /GoTo /D (group__avr__string_g8efa99bafd35937d045832774bf57486) >> +>> endobj +8209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 361.088 223.113 371.618] +/A << /S /GoTo /D (group__avr__string_g9ce73bf9cc6fe7fc3dc88b3dce7ed33f) >> +>> endobj +8210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.156 348.214 218.141 358.744] +/A << /S /GoTo /D (group__avr__string_g8f49550cc1e16fff2d707f91667eb80c) >> +>> endobj +8211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 335.339 208.358 345.87] +/A << /S /GoTo /D (group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) >> +>> endobj +8212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 322.465 209.464 332.995] +/A << /S /GoTo /D (group__avr__string_g4a03589020c79fa0b93673634bef711b) >> +>> endobj +8213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 309.59 222.196 320.121] +/A << /S /GoTo /D (group__avr__string_g5f625e090454a8cfbbfaafba26b5bf3b) >> +>> endobj +8214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 296.342 199.8 307.246] +/A << /S /GoTo /D (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) >> +>> endobj +8215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 283.468 211.028 294.372] +/A << /S /GoTo /D (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) >> +>> endobj +8216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 270.593 216.946 281.497] +/A << /S /GoTo /D (group__avr__string_gea3f5ad280b6d689b5f9937ef6f0d805) >> +>> endobj +8217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 258.092 223.85 268.623] +/A << /S /GoTo /D (group__avr__string_ge240697c78aee7b9c47cb2c9452526ea) >> +>> endobj +8218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 244.844 213.628 255.748] +/A << /S /GoTo /D (group__avr__string_g53e212c1732d63bc80f649e542aff120) >> +>> endobj +8219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 231.97 211.686 242.874] +/A << /S /GoTo /D (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) >> +>> endobj +8220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 219.469 209.752 229.999] +/A << /S /GoTo /D (group__avr__string_g63e609bfa0d354dcd7e35b297c2e6fdd) >> +>> endobj +8221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 206.221 212.423 217.125] +/A << /S /GoTo /D (group__avr__string_g64bc119cf084d1ecfd95098994597f12) >> +>> endobj +8222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 193.72 207.541 204.25] +/A << /S /GoTo /D (group__avr__string_g7fd4936b86eb6b87e98587044c562715) >> +>> endobj +8223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 180.846 209.922 191.376] +/A << /S /GoTo /D (group__avr__string_g119342b34031ba4ee28f4e38a22c5f0d) >> +>> endobj +8224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 167.971 213.339 178.502] +/A << /S /GoTo /D (group__avr__string_gfa4a8701698b766f40180c735726cfe7) >> +>> endobj +8225 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 154.723 204.781 165.627] +/A << /S /GoTo /D (group__avr__string_g36cc0ab27fbcc70615214170ae79fbf7) >> +>> endobj +8226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 141.849 216.01 152.753] +/A << /S /GoTo /D (group__avr__string_g81577c743915e4fb8759ef9081f10838) >> +>> endobj +8227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.69 128.974 221.927 139.878] +/A << /S /GoTo /D (group__avr__string_g60b6f90e97d0574c5f5725d9db15cd9d) >> +>> endobj +8228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 116.473 212.522 127.004] +/A << /S /GoTo /D (group__avr__string_g3d3e512a095039a7e2f86859537d761b) >> +>> endobj +8235 0 obj << +/D [8233 0 R /XYZ 132.768 705.06 null] +>> endobj +3888 0 obj << +/D [8233 0 R /XYZ 133.768 667.198 null] +>> endobj +1605 0 obj << +/D [8233 0 R /XYZ 133.768 667.198 null] +>> endobj +1609 0 obj << +/D [8233 0 R /XYZ 133.768 648.084 null] +>> endobj +8236 0 obj << +/D [8233 0 R /XYZ 133.768 601.693 null] +>> endobj +8237 0 obj << +/D [8233 0 R /XYZ 133.768 601.693 null] +>> endobj +8238 0 obj << +/D [8233 0 R /XYZ 133.768 587.658 null] +>> endobj +8239 0 obj << +/D [8233 0 R /XYZ 133.768 574.783 null] +>> endobj +8240 0 obj << +/D [8233 0 R /XYZ 133.768 561.909 null] +>> endobj +8241 0 obj << +/D [8233 0 R /XYZ 133.768 495.482 null] +>> endobj +8232 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8251 0 obj << +/Length 631 +/Filter /FlateDecode +>> +stream +xÚÍWKoÚ@¾ûWìÑ–Âff×ûÊ­URN-uO$²À,…jœ¶é¯ï,h04Š%K;¶wçñÍkÈ”éy#ïºË$1ÔH·D‚œS%5‘FPiDc2ðYH…:þ:Ïæé4@áÓYÐaüî|aKªo'6 Pû6MŠO}®Âà!ºón#ﻇN,܃Ԁ É“7x2v?ïPn4ù¹ÙúDxè¶bqpA¾z_<¨t‡=`×”"R(ʸ(m¸gLlôØž#ƒŽpö$³aV|¿îb¸ÃƒiŠºåa^.´Ï¦•ý^]¶¢¡bÛc«Õ({¬‹- ºÉ2]ç%rG´PŠ¢©+Q“R£q»'Ž×WÇW™K½R'pg¹“Ä®r§<–¬ãøC€ˆ~õãÏßú·q¼oluHHG0j¾«/²d–]à …‹ØΨ<1O†‚ +&*ÀØûf&üG1;,=TT7ÂiƒÎ> +ZÓ«VDÍÚ®š ©Ô{‰u…‚âµhy={äæB€Ñy‰‡'æåzþÛÆùø*< +¤Véùé… Ý°½A±ÃKŠÒ®›©Vä®{Îw†ÔT<£ÖýÇèe{Ñ{¢$£BšVÔ|ùؼn4Lì·F½^3jlGx;tã¬!¾Bº¦¢[‚ïÕ?ù¹·ÄÆ-äÏÜýKšvÜ¿žWÙÅ´q«;8vMo2tl%×£” ¡AIÊe5côlj³anÇ¥o—i¹F³ç’ød“’Ëá†ñÔå›—*jR\»–Yù2ÜÜÁ²€+¿³˜*£—Šåò×ËÔ¦u“ÿp3Q +endstream +endobj +8250 0 obj << +/Type /Page +/Contents 8251 0 R +/Resources 8249 0 R +/MediaBox [0 0 612 792] +/Parent 8154 0 R +/Annots [ 8229 0 R 8230 0 R 8231 0 R 8242 0 R 8243 0 R 8244 0 R 8245 0 R 8246 0 R 8247 0 R ] +>> endobj +8229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 654.082 215.003 664.986] +/A << /S /GoTo /D (group__avr__string_g386481b53df5f2437a1da78b400b6440) >> +>> endobj +8230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 641.504 212.782 652.035] +/A << /S /GoTo /D (group__avr__string_g84c8b3489ec089d8be4c30f42104828b) >> +>> endobj +8231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 628.553 209.215 639.083] +/A << /S /GoTo /D (group__avr__string_gcfdb3ab0c1f988f86d04d706d8e0ce3f) >> +>> endobj +8242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 615.228 210.022 626.132] +/A << /S /GoTo /D (group__avr__string_gff88adec2ad0446259766197ec3863de) >> +>> endobj +8243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.412 602.277 209.205 613.18] +/A << /S /GoTo /D (group__avr__string_gcbc51d76d5f8f4cacf27238494d866d8) >> +>> endobj +8244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 589.699 206.704 600.229] +/A << /S /GoTo /D (group__avr__string_g6a441da9211eb85881d99c60b1003552) >> +>> endobj +8245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 576.747 209.474 587.278] +/A << /S /GoTo /D (group__avr__string_g6ace85338eafe22a0ff52c00eb9779b8) >> +>> endobj +8246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 563.796 217.773 574.326] +/A << /S /GoTo /D (group__avr__string_gc0dbc25e8b202114031a4aa2a7c5177b) >> +>> endobj +8247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 550.471 210.022 561.375] +/A << /S /GoTo /D (group__avr__string_ga50fa5cd42285f7c3980a3b0eafe77b5) >> +>> endobj +8252 0 obj << +/D [8250 0 R /XYZ 132.768 705.06 null] +>> endobj +3889 0 obj << +/D [8250 0 R /XYZ 133.768 541.504 null] +>> endobj +8249 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8255 0 obj << +/Length 257 +/Filter /FlateDecode +>> +stream +xÚ•?oƒ0ÅwŠí÷ccg¬ÚDÊÖÖ[”!C¨4ý“o_ˆAŠÔ©Ó{gŸßù~5 lØ£gëÔ€“ÎŒâ+ ¥dn,§¥q¾„O3©­HùÇehºZæò$’T#_7mˆî5TadyèŠéÑW¹{¿eÏž½3Ç"ÐÝ’5g¶Û#”ãåP*gáûÖz•­4=lá½0œÿ¾èßPge®þ¹`0ÒåÊÞc°N*£#…MèÂp¸„2.ÛwQýé3š§PD“E!\¥jE6V#ŒÙU"Õ¼bq˜Š¯A¨œ'msœŽ×9²ÿ¹Ö¡»ñ[ö9þ +%cç +endstream +endobj +8254 0 obj << +/Type /Page +/Contents 8255 0 R +/Resources 8253 0 R +/MediaBox [0 0 612 792] +/Parent 8257 0 R +>> endobj +8256 0 obj << +/D [8254 0 R /XYZ 132.768 705.06 null] +>> endobj +1613 0 obj << +/D [8254 0 R /XYZ 133.768 667.198 null] +>> endobj +8253 0 obj << +/Font << /F26 1917 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8260 0 obj << +/Length 733 +/Filter /FlateDecode +>> +stream +xÚ­˜MSÛ0†ïþ:Ú3ºú–8vh˜áÔBnÀt‚# C⤎æßWŽ"ÛéL!{²X»_­õZ 䑹H¾M’¯c®‰£N‡Ãä0!¨Ñ–h§¨vŒLfä&å’*—¤›ª\äÓŠ^g#® Ͼ9»ò¾Ì˜M}‘‡Ÿ˜³J¥Âèìnr™|Ÿ$¿raQF(’/“›; ³ðç%*œ%o»[—DÈp+«.Èuò38 ”âre(êÓä·§ Qˆ#¤‹bRÖF=÷Õ4Dš5¡Îý&/çëj¾*ÞEŒu$"tÕÐ¥ûõ#c ÒOCª(2#‹×ÛÌœ©¨Ùi„ü‰w OU1†äh"‚ô +œ@›cÙC,C‰†¨"Ä·H3¬ÐfX3¦Ò"Ÿn|¾\£Pj4Jsœó¥1h°v‹²‚k‹V–nHˆ)¥Ã’Ò@§2  ²!!¢”Ío ïƒâ¹¢áX•iÄSN&§ì"Ù£‘h„jHˆ)%š™ŽAº¾/ŸQ5ZUš!!¦”hÖc"ëÙ1äOxÆ¢aº!&¦žhþc¡êë7ékÝ´hûÙÐÆ£x¤E³Ë;pˆ3mÑv:62žÍe)·hfceS@´­Žì¦Y&QöbV¡ê ¦ˆhûMµz¦9ÜšKèø¥Èëÿ6»fؾ‰ÒAÜzÓT +²°ÙkÞr®:cÈÍH…ìùÓ´lˆ™ŒBðà* ÃÍ`Ñ®ÛnåcÛ»¤6T¾ÖÈÕÏZ?å-(øGf2ø^æ^Ieïi¾4ÒåA–ª==[q +L}$öÌ/æË@Ë:Oq´ éløýH rßzÔÔaãΣuTèöm»ð…/§Õ¾>BY쎓§—}Á´å(›ƒ3.Θm®8@{öq•®ÊæbZ_¼–™0éh1¿o#ÜoÛ«?ÛG_ôù/!ou# +endstream +endobj +8259 0 obj << +/Type /Page +/Contents 8260 0 R +/Resources 8258 0 R +/MediaBox [0 0 612 792] +/Parent 8257 0 R +/Annots [ 8248 0 R ] +>> endobj +8248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 -835.253 209.474 -824.722] +/A << /S /GoTo /D (group__avr__string_g6ace85338eafe22a0ff52c00eb9779b8) >> +>> endobj +8261 0 obj << +/D [8259 0 R /XYZ 132.768 705.06 null] +>> endobj +1617 0 obj << +/D [8259 0 R /XYZ 133.768 650.367 null] +>> endobj +3890 0 obj << +/D [8259 0 R /XYZ 133.768 624.139 null] +>> endobj +1621 0 obj << +/D [8259 0 R /XYZ 133.768 624.139 null] +>> endobj +1625 0 obj << +/D [8259 0 R /XYZ 133.768 598.284 null] +>> endobj +3891 0 obj << +/D [8259 0 R /XYZ 133.768 573.448 null] +>> endobj +1629 0 obj << +/D [8259 0 R /XYZ 133.768 573.448 null] +>> endobj +1633 0 obj << +/D [8259 0 R /XYZ 133.768 546.702 null] +>> endobj +3892 0 obj << +/D [8259 0 R /XYZ 133.768 522.758 null] +>> endobj +1637 0 obj << +/D [8259 0 R /XYZ 133.768 522.758 null] +>> endobj +1641 0 obj << +/D [8259 0 R /XYZ 133.768 496.011 null] +>> endobj +3893 0 obj << +/D [8259 0 R /XYZ 133.768 472.067 null] +>> endobj +1645 0 obj << +/D [8259 0 R /XYZ 133.768 472.067 null] +>> endobj +1649 0 obj << +/D [8259 0 R /XYZ 133.768 447.604 null] +>> endobj +3894 0 obj << +/D [8259 0 R /XYZ 133.768 421.376 null] +>> endobj +1653 0 obj << +/D [8259 0 R /XYZ 133.768 421.376 null] +>> endobj +1657 0 obj << +/D [8259 0 R /XYZ 133.768 395.521 null] +>> endobj +3895 0 obj << +/D [8259 0 R /XYZ 133.768 370.685 null] +>> endobj +1661 0 obj << +/D [8259 0 R /XYZ 133.768 370.685 null] +>> endobj +1665 0 obj << +/D [8259 0 R /XYZ 133.768 346.223 null] +>> endobj +3896 0 obj << +/D [8259 0 R /XYZ 133.768 319.994 null] +>> endobj +1669 0 obj << +/D [8259 0 R /XYZ 133.768 319.994 null] +>> endobj +1673 0 obj << +/D [8259 0 R /XYZ 133.768 293.248 null] +>> endobj +3897 0 obj << +/D [8259 0 R /XYZ 133.768 269.304 null] +>> endobj +1677 0 obj << +/D [8259 0 R /XYZ 133.768 269.304 null] +>> endobj +1681 0 obj << +/D [8259 0 R /XYZ 133.768 242.558 null] +>> endobj +3898 0 obj << +/D [8259 0 R /XYZ 133.768 218.613 null] +>> endobj +1685 0 obj << +/D [8259 0 R /XYZ 133.768 218.613 null] +>> endobj +1689 0 obj << +/D [8259 0 R /XYZ 133.768 194.15 null] +>> endobj +3899 0 obj << +/D [8259 0 R /XYZ 133.768 167.922 null] +>> endobj +1693 0 obj << +/D [8259 0 R /XYZ 133.768 167.922 null] +>> endobj +1697 0 obj << +/D [8259 0 R /XYZ 133.768 142.067 null] +>> endobj +3900 0 obj << +/D [8259 0 R /XYZ 133.768 117.231 null] +>> endobj +1701 0 obj << +/D [8259 0 R /XYZ 133.768 117.231 null] +>> endobj +1705 0 obj << +/D [8259 0 R /XYZ 133.768 90.485 null] +>> endobj +3901 0 obj << +/D [8259 0 R /XYZ 133.768 66.541 null] +>> endobj +1709 0 obj << +/D [8259 0 R /XYZ 133.768 66.541 null] +>> endobj +1713 0 obj << +/D [8259 0 R /XYZ 133.768 39.795 null] +>> endobj +3902 0 obj << +/D [8259 0 R /XYZ 133.768 15.85 null] +>> endobj +1717 0 obj << +/D [8259 0 R /XYZ 133.768 15.85 null] +>> endobj +1721 0 obj << +/D [8259 0 R /XYZ 133.768 -10.896 null] +>> endobj +3903 0 obj << +/D [8259 0 R /XYZ 133.768 -34.841 null] +>> endobj +1725 0 obj << +/D [8259 0 R /XYZ 133.768 -34.841 null] +>> endobj +1729 0 obj << +/D [8259 0 R /XYZ 133.768 -61.587 null] +>> endobj +3904 0 obj << +/D [8259 0 R /XYZ 133.768 -85.532 null] +>> endobj +1733 0 obj << +/D [8259 0 R /XYZ 133.768 -85.532 null] +>> endobj +1737 0 obj << +/D [8259 0 R /XYZ 133.768 -109.994 null] +>> endobj +3905 0 obj << +/D [8259 0 R /XYZ 133.768 -136.222 null] +>> endobj +1741 0 obj << +/D [8259 0 R /XYZ 133.768 -136.222 null] +>> endobj +1745 0 obj << +/D [8259 0 R /XYZ 133.768 -162.078 null] +>> endobj +3906 0 obj << +/D [8259 0 R /XYZ 133.768 -186.913 null] +>> endobj +1749 0 obj << +/D [8259 0 R /XYZ 133.768 -186.913 null] +>> endobj +1753 0 obj << +/D [8259 0 R /XYZ 133.768 -213.659 null] +>> endobj +3907 0 obj << +/D [8259 0 R /XYZ 133.768 -237.604 null] +>> endobj +1757 0 obj << +/D [8259 0 R /XYZ 133.768 -237.604 null] +>> endobj +1761 0 obj << +/D [8259 0 R /XYZ 133.768 -264.35 null] +>> endobj +3908 0 obj << +/D [8259 0 R /XYZ 133.768 -288.295 null] +>> endobj +1765 0 obj << +/D [8259 0 R /XYZ 133.768 -288.295 null] +>> endobj +1769 0 obj << +/D [8259 0 R /XYZ 133.768 -312.757 null] +>> endobj +3909 0 obj << +/D [8259 0 R /XYZ 133.768 -338.986 null] +>> endobj +1773 0 obj << +/D [8259 0 R /XYZ 133.768 -338.986 null] +>> endobj +1777 0 obj << +/D [8259 0 R /XYZ 133.768 -364.841 null] +>> endobj +3910 0 obj << +/D [8259 0 R /XYZ 133.768 -389.676 null] +>> endobj +1781 0 obj << +/D [8259 0 R /XYZ 133.768 -389.676 null] +>> endobj +1785 0 obj << +/D [8259 0 R /XYZ 133.768 -414.139 null] +>> endobj +3911 0 obj << +/D [8259 0 R /XYZ 133.768 -440.367 null] +>> endobj +1789 0 obj << +/D [8259 0 R /XYZ 133.768 -440.367 null] +>> endobj +1793 0 obj << +/D [8259 0 R /XYZ 133.768 -467.113 null] +>> endobj +3912 0 obj << +/D [8259 0 R /XYZ 133.768 -491.058 null] +>> endobj +1797 0 obj << +/D [8259 0 R /XYZ 133.768 -491.058 null] +>> endobj +1801 0 obj << +/D [8259 0 R /XYZ 133.768 -517.804 null] +>> endobj +3944 0 obj << +/D [8259 0 R /XYZ 133.768 -541.749 null] +>> endobj +1805 0 obj << +/D [8259 0 R /XYZ 133.768 -541.749 null] +>> endobj +1809 0 obj << +/D [8259 0 R /XYZ 133.768 -568.495 null] +>> endobj +3945 0 obj << +/D [8259 0 R /XYZ 133.768 -592.439 null] +>> endobj +1813 0 obj << +/D [8259 0 R /XYZ 133.768 -592.439 null] +>> endobj +1817 0 obj << +/D [8259 0 R /XYZ 133.768 -619.185 null] +>> endobj +3946 0 obj << +/D [8259 0 R /XYZ 133.768 -643.13 null] +>> endobj +1821 0 obj << +/D [8259 0 R /XYZ 133.768 -643.13 null] +>> endobj +1825 0 obj << +/D [8259 0 R /XYZ 133.768 -667.593 null] +>> endobj +3947 0 obj << +/D [8259 0 R /XYZ 133.768 -693.821 null] +>> endobj +1829 0 obj << +/D [8259 0 R /XYZ 133.768 -693.821 null] +>> endobj +1833 0 obj << +/D [8259 0 R /XYZ 133.768 -719.676 null] +>> endobj +3948 0 obj << +/D [8259 0 R /XYZ 133.768 -744.512 null] +>> endobj +1837 0 obj << +/D [8259 0 R /XYZ 133.768 -744.512 null] +>> endobj +1841 0 obj << +/D [8259 0 R /XYZ 133.768 -768.974 null] +>> endobj +8262 0 obj << +/D [8259 0 R /XYZ 133.768 -817.649 null] +>> endobj +8258 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8286 0 obj << +/Length 800 +/Filter /FlateDecode +>> +stream +xÚÍ—Ms›0†ïü +Íô”•„åfÇqšÖéÐæfb“„©?R›8ο¯@Ð`Ç6öÄvzÁî«G¯ è:ÓšvÔ¦6XØòÜ"ÂvlÙ‚c[ôЕN-캆I@Ÿ¤ãtô;r¤cß0)½ôcuçÅ·±|çêñ°+AGgŽc\Ÿ´Ó@û£93 R™‰`uÚÕ5 ž|ù fÂEOyè1K†’,±|í»õøÜÁ”q…ÿÓTÆItÓ'9H) ³¡šmc‹ dRŠ9X*ù¥|.]™<÷!J“®Zt÷>g1GmbUä8Á6å2I 04Gì`Ë¡eÌÿ"Máœf¦Ã1g62™…Á¢oÜ’× laf‰Š2&…v+N#©ÔSR­xÒ'i2.#Í”l©Ta/Œ;$»"Pè¤O ¾;™€ÍÈS[±,:Ü]~èŠK°-ÀÔu˪ ç0¸<?†EpuRY~¢ &ssU8«ú&!æ6ÍÝv\¦RƒKßS^Le!èQÿQ­ö¨Í<%\f©¤‹a< “îä¸t-{éˆR2¼ÂÙl¦tMuD“Tn[~ŸÊíãz4œ ’4{Xq_4¼µcƒ9zÜ“é¼@…ÂM1éGÓ¸¢ªá­ÓX„XY# [²¨äÑ‹í­jDSçòø®8 ½<,›:_Ÿ!˜Þð [¥²˜;ÿ<[ `G¸»bðN¿mÂA`ϲâüN#lè'ŸW@¸‡øb0®¯%¡+ì;$ie ƒ¢«ýYo=€9¯‘ê­b¨œ†× ;_ýµËöîŒ÷Ô~=¢¾$¬رå×Ãá=ê­âs·±ïýò_>ázš&ìŸfËêiºïT_='°ªÓX·‚gï>mpÚó¦,ퟅ‹¶M÷\vÍ6s«]³ìª˜]4Ígñ0GiٽȦEß?–íLÑüZêBà˜²cùÛ“(@qwkP®Šé(Ló?Y³ŸÜ +7Ï…ähö|—ü· Ö +endstream +endobj +8285 0 obj << +/Type /Page +/Contents 8286 0 R +/Resources 8284 0 R +/MediaBox [0 0 612 792] +/Parent 8257 0 R +/Annots [ 8263 0 R 8264 0 R 8265 0 R 8266 0 R 8267 0 R 8268 0 R 8269 0 R 8270 0 R 8271 0 R 8272 0 R 8273 0 R 8274 0 R 8275 0 R 8276 0 R 8277 0 R 8278 0 R 8279 0 R 8280 0 R ] +>> endobj +8263 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 300.644 253.177 310.572] +/A << /S /GoTo /D (group__util__twi_g8ec630c2063d0353c53d140b99382d80) >> +>> endobj +8264 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 289.846 276.429 299.773] +/A << /S /GoTo /D (group__util__twi_g8dce3e4b7e35355a8add9ed63d1fa3ab) >> +>> endobj +8265 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 279.048 287.508 288.975] +/A << /S /GoTo /D (group__util__twi_g85cae14b4190042335d25ed9a1b72369) >> +>> endobj +8266 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 268.25 294.352 278.177] +/A << /S /GoTo /D (group__util__twi_gca64b973c51d6548a962c1d7cae0663e) >> +>> endobj +8267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 257.451 293.924 267.379] +/A << /S /GoTo /D (group__util__twi_g4c28186053b5298305b131ad3e1111f7) >> +>> endobj +8268 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 246.653 300.768 256.581] +/A << /S /GoTo /D (group__util__twi_g91c107a74d268f8578d866ed1bbbd4f3) >> +>> endobj +8269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 235.855 293.445 245.783] +/A << /S /GoTo /D (group__util__twi_g5959251c4bd80f48b5a029447d86adb3) >> +>> endobj +8270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 225.057 294.003 234.985] +/A << /S /GoTo /D (group__util__twi_gd85222308836bfbe099255662ffb510c) >> +>> endobj +8271 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 214.259 288.066 224.187] +/A << /S /GoTo /D (group__util__twi_gc16504b87d15d83b97bb0ce61577bb40) >> +>> endobj +8272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 203.461 294.91 213.389] +/A << /S /GoTo /D (group__util__twi_g655325b6f8a1818103b126cc3774d8e8) >> +>> endobj +8273 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 192.663 294.482 202.59] +/A << /S /GoTo /D (group__util__twi_g3c8c79b2ecb8d22358839890161cc33b) >> +>> endobj +8274 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 181.865 301.326 191.792] +/A << /S /GoTo /D (group__util__twi_g532f0ffa12f684346c74a5cbec15950e) >> +>> endobj +8275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 171.067 284.19 180.994] +/A << /S /GoTo /D (group__util__twi_g0ecd2ca38d00279194460e65028a0533) >> +>> endobj +8276 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 160.268 339.542 170.196] +/A << /S /GoTo /D (group__util__twi_g1064659d0758206d43d69cd582d1f5da) >> +>> endobj +8277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 149.47 290.606 159.398] +/A << /S /GoTo /D (group__util__twi_g2de84bf7cbf1cd7ae43a6e0f0eeca719) >> +>> endobj +8278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 138.672 297.451 148.6] +/A << /S /GoTo /D (group__util__twi_gcc1837317b1d45e9bb49b8e83cfe6d42) >> +>> endobj +8279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 127.874 294.88 137.802] +/A << /S /GoTo /D (group__util__twi_gf92d03d0051d47f5b9375f0ef9293d64) >> +>> endobj +8280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 117.076 284.748 127.004] +/A << /S /GoTo /D (group__util__twi_g9e9e761d674793772e6b3f77fc9d7fab) >> +>> endobj +8287 0 obj << +/D [8285 0 R /XYZ 132.768 705.06 null] +>> endobj +8288 0 obj << +/D [8285 0 R /XYZ 133.768 650.391 null] +>> endobj +8289 0 obj << +/D [8285 0 R /XYZ 133.768 650.391 null] +>> endobj +3949 0 obj << +/D [8285 0 R /XYZ 133.768 623.55 null] +>> endobj +1845 0 obj << +/D [8285 0 R /XYZ 133.768 618.283 null] +>> endobj +1849 0 obj << +/D [8285 0 R /XYZ 133.768 592.428 null] +>> endobj +3950 0 obj << +/D [8285 0 R /XYZ 133.768 567.592 null] +>> endobj +1853 0 obj << +/D [8285 0 R /XYZ 133.768 567.592 null] +>> endobj +1857 0 obj << +/D [8285 0 R /XYZ 133.768 540.846 null] +>> endobj +3951 0 obj << +/D [8285 0 R /XYZ 133.768 516.902 null] +>> endobj +1861 0 obj << +/D [8285 0 R /XYZ 133.768 516.902 null] +>> endobj +1865 0 obj << +/D [8285 0 R /XYZ 133.768 492.439 null] +>> endobj +8290 0 obj << +/D [8285 0 R /XYZ 133.768 443.765 null] +>> endobj +8291 0 obj << +/D [8285 0 R /XYZ 133.768 443.765 null] +>> endobj +8284 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R /F36 2440 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8318 0 obj << +/Length 924 +/Filter /FlateDecode +>> +stream +xÚŘÛnÛ8†ïýD($b†¤H‘½S|jZ×îJZø")'bRŽ½k»Mûö¥NÙX¡ÝÍÂV¯¬9óý3Cr,@wаsžtÎT …•0?É-"Œá@H$ÇB”dèÒ¡>VÄõ8Ùq=ÊÁ̺¼Šô­^»D:zy“?%¸Ãé~NÞwúIçŸ1þ‘'ö VÀÑÍ}çò3 Ì¼|3%ÑC1ô1ß %ùÄŠ;v ‚†xx +/ˆ±@ঌ—ðW”ò‚£ž‡.=n„ü‘é+ºÔÕËœn}WaFÅ°\Z2Mã( £ót4‰“4…ièúàt?4æ£á»»Ï™¸aÅÕi†Ýp4:Œ€Cž"(ÿ…§…°ôr€Ð%„8‰«˜ó‹LIøHc—qç0Wkô€)ø}`¿›j!lq’or“Ov‚ðÔñOÒ‹ñ`b÷>8µþs—€óWœö£(ÏÃ$²sÀÉ«¤,‰²: ÏÇ0Þ-‰Ö\Ûp’i•ãk÷µK¬äCÙ# û¾B 0—A©&:˧ž ˆÿddqeL”zA9fÇZ€c«3-¯çÛòb¾,Í9÷&:«Þβ¬<Ý7· T/2¼ß8Œ=SÃâQsГàXˆúaÏvr⢛FIßZð&F(ç´Ðn%(Có1©öÂ.êyâŒ(c£îk +s¸6ØÓÛ™1”•–zzs³žÿ½¯–¹z¦_…£W©ÞÊØgyÍQ,Äqz)£:]ëÞ6l‹¦X Å°4mîÓ´¾ùæRpV‹ÙÖè«Ÿæ^=dëWÏ–P‘zj2A^€Ü´˜JY/‘tÚK?ÅìqŸiÄI RÔƒŸï†Æt¥_aÑcbu'ã$r™ÙŒGfe -t¦œ<.÷^Òš|¾À<ÏôñÃÖ}Ž‡ýôü"± ™¾¤ÿ’uûM0Æqü®Ã¨—³ë…¶• ©4îÌ_õþª¢GÃÈæ›}Ç)êýîM}LJøÇxï¦v*ñÞؽ·£]ìñN[ÑNè÷¬ñæÆîÞoŽ™cwÏÛ ¾Õ·h'òVßA+º}«oÙŠniõ­vZ¿)‰ö’ïDõG-UÀäÓZRaV·2C½ÔëÙ¶î˜VUß›|ùZ·P7nµ"ÊM ÞRö–ÈòŽTW·ù™±ZWr~ómí²ÀñóëÊÂõÊäêû;½lJþ Zûa# +endstream +endobj +8317 0 obj << +/Type /Page +/Contents 8318 0 R +/Resources 8316 0 R +/MediaBox [0 0 612 792] +/Parent 8257 0 R +/Annots [ 8281 0 R 8282 0 R 8283 0 R 8292 0 R 8293 0 R 8294 0 R 8295 0 R 8296 0 R 8297 0 R 8298 0 R 8299 0 R 8300 0 R 8301 0 R 8302 0 R 8303 0 R 8304 0 R 8305 0 R 8306 0 R 8307 0 R 8308 0 R 8309 0 R 8310 0 R 8311 0 R 8312 0 R 8313 0 R 8314 0 R 8315 0 R ] +>> endobj +8281 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 655.059 340.1 664.986] +/A << /S /GoTo /D (group__util__twi_g1c3ed5ed345d17972002b9fd07f4f829) >> +>> endobj +8282 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 644.1 299.134 654.027] +/A << /S /GoTo /D (group__util__twi_g6eb3b4230887a8b73d7787ff231ea911) >> +>> endobj +8283 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 633.141 354.486 643.068] +/A << /S /GoTo /D (group__util__twi_g4756103341a65e0e3889996cdf15b2fa) >> +>> endobj +8292 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 622.182 291.164 632.109] +/A << /S /GoTo /D (group__util__twi_gc50f1a59c74c3109d4913dbecfb472c1) >> +>> endobj +8293 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 611.223 298.008 621.151] +/A << /S /GoTo /D (group__util__twi_g6c0fa701fe9d96b0b7df29e8af154f94) >> +>> endobj +8294 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 600.264 329.351 610.192] +/A << /S /GoTo /D (group__util__twi_g4abaad098fd92bed63719ffb01802c8d) >> +>> endobj +8295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 589.305 336.195 599.233] +/A << /S /GoTo /D (group__util__twi_g42234278f9b01b9af75dbbc617b97890) >> +>> endobj +8296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 578.346 264.494 588.274] +/A << /S /GoTo /D (group__util__twi_g98d2570f965790884cf1774e716ec629) >> +>> endobj +8297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 567.387 265.759 577.315] +/A << /S /GoTo /D (group__util__twi_gbcff70642634cb53e9d8e93872f70c90) >> +>> endobj +8298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 556.428 280.225 566.356] +/A << /S /GoTo /D (group__util__twi_g90d373160b1d0a3f0c454af83c57df71) >> +>> endobj +8299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 545.469 292.519 555.397] +/A << /S /GoTo /D (group__util__twi_g8d3aca0acc182f459a51797321728168) >> +>> endobj +8300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 533.908 258.756 544.438] +/A << /S /GoTo /D (group__util__twi_g4440385d1818b4fe89b20341ea47b75a) >> +>> endobj +8301 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 485.006 250.267 494.933] +/A << /S /GoTo /D (group__util__twi_gf40f13cadca25e0a83dc096858907819) >> +>> endobj +8302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.684 474.047 254.691 483.975] +/A << /S /GoTo /D (group__util__twi_gc8a7cb1a91946c6e3955608a91371148) >> +>> endobj +8303 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 367.894 230.226 378.424] +/A << /S /GoTo /D (group__avr__watchdog_g9e52c54d10b6a6a7ce04aaaa4abea51f) >> +>> endobj +8304 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 316.088 237.419 326.618] +/A << /S /GoTo /D (group__avr__watchdog_gf6cfea2a1b61e2530ea0c4ef8fc572b3) >> +>> endobj +8305 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 303.137 239.641 313.667] +/A << /S /GoTo /D (group__avr__watchdog_gb3784e1b871d61ed338da5658184b725) >> +>> endobj +8306 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 290.788 250.53 300.716] +/A << /S /GoTo /D (group__avr__watchdog_gd45893280f49113ffc2e67e1d741f29d) >> +>> endobj +8307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 277.836 250.53 287.764] +/A << /S /GoTo /D (group__avr__watchdog_g057dd21dc54e71de0e20d8bd5734915d) >> +>> endobj +8308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 264.885 250.53 274.813] +/A << /S /GoTo /D (group__avr__watchdog_g7a5b072c51c05a34cc38111f0e6724e5) >> +>> endobj +8309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 251.934 255.511 261.861] +/A << /S /GoTo /D (group__avr__watchdog_g7d028bcdb4a4103549fc6fb4ec07fbcd) >> +>> endobj +8310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 238.982 255.511 248.91] +/A << /S /GoTo /D (group__avr__watchdog_g66d5f50cc76b92c76900d77ef577d53e) >> +>> endobj +8311 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 226.031 255.511 235.958] +/A << /S /GoTo /D (group__avr__watchdog_gcf89fc5fb6c8aa9efaadb86872cfbcdf) >> +>> endobj +8312 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 213.079 236.692 223.007] +/A << /S /GoTo /D (group__avr__watchdog_g36302e15f38a4eeb8a328724bb8165e9) >> +>> endobj +8313 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 200.128 236.692 210.056] +/A << /S /GoTo /D (group__avr__watchdog_g05fc682d276a36d8cc4e9178340ff004) >> +>> endobj +8314 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 187.176 236.692 197.104] +/A << /S /GoTo /D (group__avr__watchdog_g752b0b1b5ba9009bc09976494313e30d) >> +>> endobj +8315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.499 174.225 236.692 184.153] +/A << /S /GoTo /D (group__avr__watchdog_gf074e538b2a1d5031931530f29a09fce) >> +>> endobj +8319 0 obj << +/D [8317 0 R /XYZ 132.768 705.06 null] +>> endobj +2861 0 obj << +/D [8317 0 R /XYZ 133.768 465.08 null] +>> endobj +1869 0 obj << +/D [8317 0 R /XYZ 133.768 460.473 null] +>> endobj +1873 0 obj << +/D [8317 0 R /XYZ 133.768 435.168 null] +>> endobj +8320 0 obj << +/D [8317 0 R /XYZ 133.768 386.494 null] +>> endobj +8321 0 obj << +/D [8317 0 R /XYZ 133.768 371.879 null] +>> endobj +8322 0 obj << +/D [8317 0 R /XYZ 133.768 359.43 null] +>> endobj +8323 0 obj << +/D [8317 0 R /XYZ 133.768 346.479 null] +>> endobj +8316 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F14 2650 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8376 0 obj << +/Length 1897 +/Filter /FlateDecode +>> +stream +xÚÍYßoÛ8~ï_á‡} 3CR$E.$’u±iÛMØ=Š¤8ºÚ’!ÉMóßïPR²±N6ÍöÜÝ—˜Väá|3çÉ`1 ƒËw¤óy6{wrÁä€rìqɳ‡õ<ìK5œbÉàQ<ø ³8ù:üÏìÃë/O.(h¬%ü~E#F0ç²yÿŸæ]LÞ¼âcŸkx±~!\.ó(ÄÍ{[¢<Š¨Ò¾ø/›¤Ÿ‡#®:­VÉpäq†ÊuÕK¥Yó¨zl”U}þG † è 0ˆÌbrùn0’X=QŠµÍ”É}ØGžÆJÐíßØ-P–IQõ[€`*|›Ô x” ó4\dyY¥Q¹Ýo#&àñ÷âáKÁ]ñ A_Š“û<ïGžrò+xë Ä-ó0N +ƒR¢éf½Î‹Ê|ñѧ*]¦CŠFFè+1eb[ï*Mlæ`äîmÍ‘$ë"_õD0,¹Ñ)UÁÍdÈ º¾Ž¤’è1Ìâeš-vSš)ÌÔ §Ûʨw<Л2ég¶ÆžÛÙ6̾qÃÚU­÷m¥û*8Vò¡¥Y•ÅfÝÏqácâ W|ã™V¦R½˜Ï°ð½oE–ï +F‚ºA"©'ÐíÜæù(N†L /i”ŒÊu¥¿Â"ó/…Æ×Ígœ˜‡íA†s ,Ù‚‘¥UšgVqvý˜_0^œ·óàúÂnUÓAXKz}øž“ÉØS¾ÝsÌ>ÝÌ'Áéù‡Ûnmî‰îþ¢Íï&ãYð¿{Ëãí}1=j±oðüÒ€t^ç/wÉó_Çgïç禶k£`0·jòf„d ê»Õ™Î&ã—ó¹ÕÇVëêôÃõdþ×›çjüño¡Ç$¸OÇ×ÿ®¹ &µ&»¹ò¶Ñ{û¶`öî¦'\î +endstream +endobj +8375 0 obj << +/Type /Page +/Contents 8376 0 R +/Resources 8374 0 R +/MediaBox [0 0 612 792] +/Parent 8257 0 R +/Annots [ 8324 0 R 8325 0 R 8326 0 R 8327 0 R 8328 0 R 8329 0 R 8330 0 R 8331 0 R 8332 0 R 8333 0 R 8334 0 R 8335 0 R 8336 0 R 8337 0 R 8338 0 R 8339 0 R 8340 0 R 8341 0 R 8342 0 R 8343 0 R 8344 0 R 8345 0 R 8346 0 R 8347 0 R 8348 0 R 8349 0 R 8350 0 R 8351 0 R 8352 0 R 8353 0 R 8354 0 R 8355 0 R 8356 0 R 8357 0 R 8358 0 R 8359 0 R 8360 0 R 8361 0 R 8362 0 R 8363 0 R 8364 0 R 8365 0 R 8366 0 R 8367 0 R 8368 0 R 8369 0 R 8370 0 R 8371 0 R 8372 0 R 8373 0 R ] +>> endobj +8324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.623 608.125 189.559 616.972] +/A << /S /GoTo /D (page.126) >> +>> endobj +8325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.308 594.113 253.245 605.017] +/A << /S /GoTo /D (page.127) >> +>> endobj +8326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.442 570.92 208.378 581.107] +/A << /S /GoTo /D (page.206) >> +>> endobj +8327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.623 548.35 189.559 557.196] +/A << /S /GoTo /D (page.213) >> +>> endobj +8328 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [251.332 534.337 268.269 545.241] +/A << /S /GoTo /D (page.216) >> +>> endobj +8329 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [254.918 522.382 271.855 533.286] +/A << /S /GoTo /D (page.219) >> +>> endobj +8330 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.732 499.189 221.668 509.376] +/A << /S /GoTo /D (page.242) >> +>> endobj +8331 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.064 486.517 281.001 497.42] +/A << /S /GoTo /D (page.243) >> +>> endobj +8332 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.211 463.323 211.148 473.51] +/A << /S /GoTo /D (page.246) >> +>> endobj +8333 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.357 438.696 228.293 449.6] +/A << /S /GoTo /D (page.259) >> +>> endobj +8334 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.99 415.503 208.926 425.689] +/A << /S /GoTo /D (page.264) >> +>> endobj +8335 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.349 390.875 246.286 401.779] +/A << /S /GoTo /D (page.266) >> +>> endobj +8336 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.376 367.682 223.312 377.869] +/A << /S /GoTo /D (page.267) >> +>> endobj +8337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.623 344.992 189.559 353.958] +/A << /S /GoTo /D (page.269) >> +>> endobj +8338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.193 319.861 216.129 330.048] +/A << /S /GoTo /D (page.289) >> +>> endobj +8339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [234.331 295.951 251.267 306.138] +/A << /S /GoTo /D (page.293) >> +>> endobj +8340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.09 283.279 290.027 294.183] +/A << /S /GoTo /D (page.128) >> +>> endobj +8341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.328 271.323 261.265 282.227] +/A << /S /GoTo /D (page.130) >> +>> endobj +8342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.623 249.47 189.559 258.317] +/A << /S /GoTo /D (page.131) >> +>> endobj +8343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.972 236.175 254.908 246.362] +/A << /S /GoTo /D (page.143) >> +>> endobj +8344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.195 223.503 270.131 234.407] +/A << /S /GoTo /D (page.150) >> +>> endobj +8345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [280.742 211.548 297.678 222.452] +/A << /S /GoTo /D (page.152) >> +>> endobj +8346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [271.077 200.31 288.014 210.496] +/A << /S /GoTo /D (page.164) >> +>> endobj +8347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [252.248 188.355 269.184 198.541] +/A << /S /GoTo /D (page.182) >> +>> endobj +8348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.509 175.682 234.445 186.586] +/A << /S /GoTo /D (page.194) >> +>> endobj +8349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.28 140.534 222.216 150.721] +/A << /S /GoTo /D (page.273) >> +>> endobj +8350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [283.102 127.861 300.039 138.765] +/A << /S /GoTo /D (page.276) >> +>> endobj +8351 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [455.69 606.068 472.627 616.972] +/A << /S /GoTo /D (page.280) >> +>> endobj +8352 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.099 582.158 417.036 593.062] +/A << /S /GoTo /D (page.281) >> +>> endobj +8353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.539 570.203 478.476 581.107] +/A << /S /GoTo /D (page.282) >> +>> endobj +8354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [441.314 547.01 458.25 557.196] +/A << /S /GoTo /D (page.283) >> +>> endobj +8355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.46 524.439 366.396 533.286] +/A << /S /GoTo /D (page.285) >> +>> endobj +8356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.562 511.144 355.517 521.774] +/A << /S /GoTo /D (page.86) >> +>> endobj +8357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.893 499.189 365.848 509.819] +/A << /S /GoTo /D (page.86) >> +>> endobj +8358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.814 486.517 354.769 497.42] +/A << /S /GoTo /D (page.86) >> +>> endobj +8359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.53 463.323 379.467 473.51] +/A << /S /GoTo /D (page.265) >> +>> endobj +8360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.898 438.696 398.834 449.6] +/A << /S /GoTo /D (page.214) >> +>> endobj +8361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.898 414.785 398.834 425.689] +/A << /S /GoTo /D (page.214) >> +>> endobj +8362 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 391.592 388.333 401.779] +/A << /S /GoTo /D (page.169) >> +>> endobj +8363 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 367.682 388.333 377.869] +/A << /S /GoTo /D (page.169) >> +>> endobj +8364 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 343.772 388.333 353.958] +/A << /S /GoTo /D (page.169) >> +>> endobj +8365 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 319.861 388.333 330.048] +/A << /S /GoTo /D (page.169) >> +>> endobj +8366 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 295.951 388.333 306.138] +/A << /S /GoTo /D (page.169) >> +>> endobj +8367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 271.323 391.651 282.227] +/A << /S /GoTo /D (page.195) >> +>> endobj +8368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.2 248.13 398.137 258.317] +/A << /S /GoTo /D (page.268) >> +>> endobj +8369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.2 224.22 398.137 234.407] +/A << /S /GoTo /D (page.268) >> +>> endobj +8370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.2 200.31 398.137 210.496] +/A << /S /GoTo /D (page.268) >> +>> endobj +8371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.2 176.399 398.137 186.586] +/A << /S /GoTo /D (page.268) >> +>> endobj +8372 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.2 152.489 398.137 162.676] +/A << /S /GoTo /D (page.268) >> +>> endobj +8373 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.2 128.579 398.137 138.765] +/A << /S /GoTo /D (page.269) >> +>> endobj +8377 0 obj << +/D [8375 0 R /XYZ 132.768 705.06 null] +>> endobj +8378 0 obj << +/D [8375 0 R /XYZ 133.768 631.139 null] +>> endobj +8374 0 obj << +/Font << /F26 1917 0 R /F11 2085 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8428 0 obj << +/Length 957 +/Filter /FlateDecode +>> +stream +xÚŘï›6Çßç¯à%H çìjšt]¯§«ºn»FÕ¤[e9à$l€™qîÇ?s®ÉH )¹¾2$ŸÏ÷ùÚ`cà,à\O^Ï&oQè0Ÿ…¶™-ˆ±…Ô ñCYâܹ7Þ\ýáM‹"êb +¼Ï³w“«ÙäŸ ´i€¿ê}ˆç“»ÏÀIìŸïàcF‡çÐÜÁ …uÇÌù8ù}¶´€.-$ò&Î/=ˆ‰ûé–¿¿yý3ÿtuûñæלעh{ÛÎShe¶‡ðpï5¿÷ q¥®RUüð\A#]/Ûn¯'ÎÝࢶ4›¯#/çWïû…Ç™¨ª4>  \æU)bé¯z¸˜áÜäÁƒÀU:á²X‰"–I—„ðœ¯=þ¬„ù~¾x`ô·>:AÀ¸ S0ú´§ƒ±Éyœ?EÀ¸ÎW0.— ænºQ??jù!Ì2ñFæ‡üïaÀ\)Ã3ÿÍç©©x%Í^vÚÏÅôD.™‘ºFžUA¸¥ KÉ¥•|!<Ù‡—õ&æÑÈ"‘É·*`')(”ÎEvVv‡ùöéGY6žûÇÖÞòG´?§IÅÿønë@úÌnÒ Ž|FÑÿÅ<èÔt> ä$9°Ë ²ß‹ß=gPîS°;g¯^?<Ø@̳o¶oÄÑ ¿c•—BóEÁÍ^àæû®2I–Î{À’AuÛQµË_IQÚÒ“‘à  ¯ŒÐµ‡çÇçB{ºË´«ú`>Ö1 ùºLM²µI³:²ïC>Š"y§ÆìņGbéPl:¯-\£ŠÑj ÌU"óѸl7‘™x²[:UrxØç&r.ì^»MÑ‘ht¸Ú3¡ój¶†×Õ‹{û–'dÓÁ¨Iwé=çJËæªRå*­LÛ©•4?•Zý%cÓ·4À×ØÞ’ª4/3yLbÄhwâÍËl®ô‹®2b^½n³VĪŸ— Ó·vÃ`Hq—I’šTvw4Å!u o +]e<èʪþ…¹ ­ò:ÑÅ[»ÑüïÔ—>ÀÈf~Nóc±u.ùQÀ6­ð‹j¡ít^Tþª#' |J‚M—Ÿúrî5` +QàŒ·KEáî;3˃;׋ªØ +ì> endobj +8379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.363 642.844 221.3 653.031] +/A << /S /GoTo /D (page.268) >> +>> endobj +8380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 618.217 221.927 629.121] +/A << /S /GoTo /D (page.355) >> +>> endobj +8381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 594.306 221.927 605.21] +/A << /S /GoTo /D (page.355) >> +>> endobj +8382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 570.396 221.927 581.3] +/A << /S /GoTo /D (page.356) >> +>> endobj +8383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 546.486 221.927 557.39] +/A << /S /GoTo /D (page.356) >> +>> endobj +8384 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 522.575 221.927 533.479] +/A << /S /GoTo /D (page.357) >> +>> endobj +8385 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 498.665 221.927 509.569] +/A << /S /GoTo /D (page.357) >> +>> endobj +8386 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 474.755 221.927 485.659] +/A << /S /GoTo /D (page.358) >> +>> endobj +8387 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 450.844 221.927 461.748] +/A << /S /GoTo /D (page.358) >> +>> endobj +8388 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 426.934 221.927 437.838] +/A << /S /GoTo /D (page.358) >> +>> endobj +8389 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 403.024 221.927 413.928] +/A << /S /GoTo /D (page.359) >> +>> endobj +8390 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 379.113 221.927 390.017] +/A << /S /GoTo /D (page.359) >> +>> endobj +8391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 355.203 221.927 366.107] +/A << /S /GoTo /D (page.360) >> +>> endobj +8392 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 331.293 221.927 342.197] +/A << /S /GoTo /D (page.360) >> +>> endobj +8393 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.991 307.382 221.927 318.286] +/A << /S /GoTo /D (page.360) >> +>> endobj +8394 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 284.189 199.801 294.376] +/A << /S /GoTo /D (page.338) >> +>> endobj +8395 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 260.279 199.801 270.466] +/A << /S /GoTo /D (page.338) >> +>> endobj +8396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 236.369 199.801 246.555] +/A << /S /GoTo /D (page.338) >> +>> endobj +8397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 212.458 199.801 222.645] +/A << /S /GoTo /D (page.339) >> +>> endobj +8398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 188.548 199.801 198.735] +/A << /S /GoTo /D (page.339) >> +>> endobj +8399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 164.638 199.801 174.824] +/A << /S /GoTo /D (page.339) >> +>> endobj +8400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 140.727 199.801 150.914] +/A << /S /GoTo /D (page.340) >> +>> endobj +8401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 116.817 199.801 127.004] +/A << /S /GoTo /D (page.340) >> +>> endobj +8402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.701 642.844 376.637 653.031] +/A << /S /GoTo /D (page.341) >> +>> endobj +8403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.701 618.934 376.637 629.121] +/A << /S /GoTo /D (page.341) >> +>> endobj +8404 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.701 595.024 376.637 605.21] +/A << /S /GoTo /D (page.341) >> +>> endobj +8405 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.701 571.113 376.637 581.3] +/A << /S /GoTo /D (page.342) >> +>> endobj +8406 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.701 547.203 376.637 557.39] +/A << /S /GoTo /D (page.342) >> +>> endobj +8407 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 523.293 391.103 533.479] +/A << /S /GoTo /D (page.185) >> +>> endobj +8408 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 499.382 391.103 509.569] +/A << /S /GoTo /D (page.193) >> +>> endobj +8409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 475.472 391.103 485.659] +/A << /S /GoTo /D (page.193) >> +>> endobj +8410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 451.562 391.103 461.748] +/A << /S /GoTo /D (page.194) >> +>> endobj +8411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.951 427.651 381.887 437.838] +/A << /S /GoTo /D (page.277) >> +>> endobj +8412 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.951 403.741 381.887 413.928] +/A << /S /GoTo /D (page.278) >> +>> endobj +8413 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.951 379.831 381.887 390.017] +/A << /S /GoTo /D (page.278) >> +>> endobj +8414 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.951 355.92 381.887 366.107] +/A << /S /GoTo /D (page.279) >> +>> endobj +8415 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.82 331.293 416.756 342.197] +/A << /S /GoTo /D (page.282) >> +>> endobj +8416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.82 307.382 416.756 318.286] +/A << /S /GoTo /D (page.282) >> +>> endobj +8417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.366 283.472 391.302 294.376] +/A << /S /GoTo /D (page.280) >> +>> endobj +8418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.366 259.562 391.302 270.466] +/A << /S /GoTo /D (page.281) >> +>> endobj +8419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.418 237.644 446.355 248.548] +/A << /S /GoTo /D (page.314) >> +>> endobj +8420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381 225.689 397.937 236.593] +/A << /S /GoTo /D (page.298) >> +>> endobj +8421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 202.496 391.103 212.682] +/A << /S /GoTo /D (page.185) >> +>> endobj +8422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 178.585 391.103 188.772] +/A << /S /GoTo /D (page.185) >> +>> endobj +8423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 154.675 388.881 164.862] +/A << /S /GoTo /D (page.145) >> +>> endobj +8424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.46 132.105 366.396 140.951] +/A << /S /GoTo /D (page.262) >> +>> endobj +8429 0 obj << +/D [8427 0 R /XYZ 132.768 705.06 null] +>> endobj +8426 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R /F11 2085 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8507 0 obj << +/Length 1050 +/Filter /FlateDecode +>> +stream +xÚ½™]“¢8†ïý¹„ª•%D¾æNÛè8cKÒµ³Õ;•Bµø±€íøï7|8£¶’¨™¾Šø¼ï9$9GÐÁè [kùµ?;†\͵ØÁŸˆf[°\S³\ü)xQzƒ6þªÖ ׶9Pýæªa¿ö_ 2ŒàÁÏ æê&˜,j/ßt0e7?]C®¶ùÐ@ 6f?ŒÀ¨ö¥¦yѽ˜ˆyhË´5™…— ŠV“àÜB¡ÏKÃn ¼Ô SW a• +6¨C†eÔ:dþÌ=* —Ù0pö¦jèÊkLAú§Ö0…Ô§\½b7>»JÑ:TÔxö:±¯Ÿ8Kƒ÷LS3ÞSn5{«f«%é4 +Ç<=GP/äF'YOqg€Å™«H–iKdâ2=¦áD`öWcš*„PñUè(Þcï´úÞÃç‹ÉؤaD +eŽ®a‹<¾SõŽ7|ÀÞà÷ë[çõ‡xT\ä'.ÚÀï–‘ã}òò¬”°ž(ŽW«ôâV‘Ý$aB’õ‚„Ë”ÆñfÍ“7t§rêåLVíþ%ã0eh*H’`F¥Qg›„è¹€W—O]sJh$T.M,ì Hëù®QÄÃA]Ða²(ÌÜÆa*™&Í`¼Ý’q¶Æ6Ɏ˃b<º ƽ•f¥‰,`0 çË ÝÄl­ìXÖŠ•í<Âi4®ã‘­ +u%SYàŸ[$™†‰Ð£º,8Ž¹§GmKs Ldk®cj-ÏSºâ÷=™J³‡d„üž7¸3Œ.ö þêcö«M:Ï#LZ=ÿr#”"óñF¢~nT&ô±×ý( Âqnýf‘ q³P¤ö¯+ü¡+J9¥ëxµ¸Ø<Œ™®b£2 +yz¾‚ñ#~¼•Q>š"ØÖrµµËzž˜ÓZ†"㬙àòLqÞN ö‰ã¦yWñôV¦õ–y/òØfQŸ%¦±JËcÁ›þŽ¨oeVïq¼\]ìýqÛã­Qˆª+86]|-¤ÒóÏJ˜\ÜçZEùê†äU…¦B'ÜMU÷Ù“(¼“€Ÿü¿Ioàãá0+²ÏOþ­Äòñ°ðx„Fu›š%¨Ùï5G²8^‡K‚\Rþ&Bgςϸ-ƒåÝåª|b1M¹Ó¨QÝI%ô^¨×-2Ó¿Ä[–énM//J6€Ìò¯Ó˜pßa4Pe.Ÿ†½)´¸;KuuÎ Èq$0:ªÝPš#_JT{˜”èö°›£> endobj +8425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.469 654.8 198.406 664.986] +/A << /S /GoTo /D (page.126) >> +>> endobj +8430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 630.889 212.044 641.076] +/A << /S /GoTo /D (page.145) >> +>> endobj +8431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.867 606.979 214.804 617.166] +/A << /S /GoTo /D (page.127) >> +>> endobj +8432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.91 595.024 184.846 605.21] +/A << /S /GoTo /D (page.335) >> +>> endobj +8433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 571.113 212.044 581.3] +/A << /S /GoTo /D (page.145) >> +>> endobj +8434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 547.203 212.044 557.39] +/A << /S /GoTo /D (page.145) >> +>> endobj +8435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 523.293 214.266 533.479] +/A << /S /GoTo /D (page.185) >> +>> endobj +8436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 499.382 214.266 509.569] +/A << /S /GoTo /D (page.185) >> +>> endobj +8437 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.727 487.427 177.663 497.614] +/A << /S /GoTo /D (page.336) >> +>> endobj +8438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 463.517 214.266 473.704] +/A << /S /GoTo /D (page.186) >> +>> endobj +8439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [160.727 451.562 177.663 461.748] +/A << /S /GoTo /D (page.336) >> +>> endobj +8440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.343 439.607 189.28 449.793] +/A << /S /GoTo /D (page.336) >> +>> endobj +8441 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.068 415.696 220.004 425.883] +/A << /S /GoTo /D (page.275) >> +>> endobj +8442 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.068 391.786 220.004 401.973] +/A << /S /GoTo /D (page.275) >> +>> endobj +8443 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.068 367.876 220.004 378.062] +/A << /S /GoTo /D (page.275) >> +>> endobj +8444 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.363 343.965 197.3 354.152] +/A << /S /GoTo /D (page.127) >> +>> endobj +8445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.899 319.338 264.836 330.241] +/A << /S /GoTo /D (page.208) >> +>> endobj +8446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.956 308.1 249.892 318.286] +/A << /S /GoTo /D (page.208) >> +>> endobj +8447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.976 296.145 270.913 306.331] +/A << /S /GoTo /D (page.208) >> +>> endobj +8448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.64 283.472 272.577 294.376] +/A << /S /GoTo /D (page.209) >> +>> endobj +8449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.627 271.517 241.564 282.421] +/A << /S /GoTo /D (page.209) >> +>> endobj +8450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.648 259.562 262.584 270.466] +/A << /S /GoTo /D (page.209) >> +>> endobj +8451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.242 247.607 232.179 258.51] +/A << /S /GoTo /D (page.210) >> +>> endobj +8452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.263 235.651 253.2 246.555] +/A << /S /GoTo /D (page.210) >> +>> endobj +8453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [224.637 223.696 241.574 234.6] +/A << /S /GoTo /D (page.210) >> +>> endobj +8454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [245.658 211.741 262.594 222.645] +/A << /S /GoTo /D (page.210) >> +>> endobj +8455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.678 199.786 238.615 210.69] +/A << /S /GoTo /D (page.211) >> +>> endobj +8456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.061 188.548 245.997 198.735] +/A << /S /GoTo /D (page.211) >> +>> endobj +8457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.081 176.593 267.018 186.779] +/A << /S /GoTo /D (page.211) >> +>> endobj +8458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.188 163.92 273.125 174.824] +/A << /S /GoTo /D (page.211) >> +>> endobj +8459 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.582 151.965 237.519 162.869] +/A << /S /GoTo /D (page.212) >> +>> endobj +8460 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.619 140.01 259.556 150.914] +/A << /S /GoTo /D (page.212) >> +>> endobj +8461 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [269.478 128.055 286.415 138.959] +/A << /S /GoTo /D (page.212) >> +>> endobj +8462 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.257 116.1 284.193 127.004] +/A << /S /GoTo /D (page.212) >> +>> endobj +8463 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [448.328 654.8 465.265 664.986] +/A << /S /GoTo /D (page.212) >> +>> endobj +8464 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.46 632.329 366.396 641.076] +/A << /S /GoTo /D (page.212) >> +>> endobj +8465 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [439.671 618.934 456.607 629.121] +/A << /S /GoTo /D (page.212) >> +>> endobj +8466 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.553 606.979 429.489 617.166] +/A << /S /GoTo /D (page.213) >> +>> endobj +8467 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.11 595.024 454.047 605.21] +/A << /S /GoTo /D (page.213) >> +>> endobj +8468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.039 571.113 387.975 581.3] +/A << /S /GoTo /D (page.214) >> +>> endobj +8469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.491 559.158 387.427 569.345] +/A << /S /GoTo /D (page.214) >> +>> endobj +8470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.49 547.203 387.427 557.39] +/A << /S /GoTo /D (page.214) >> +>> endobj +8471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [410.032 534.531 426.968 545.435] +/A << /S /GoTo /D (page.214) >> +>> endobj +8472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [403.128 522.575 420.064 533.479] +/A << /S /GoTo /D (page.214) >> +>> endobj +8473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [413.638 510.62 430.575 521.524] +/A << /S /GoTo /D (page.215) >> +>> endobj +8474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [408.657 498.665 425.593 509.569] +/A << /S /GoTo /D (page.215) >> +>> endobj +8475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.856 486.71 433.793 497.614] +/A << /S /GoTo /D (page.215) >> +>> endobj +8476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.875 474.755 428.811 485.659] +/A << /S /GoTo /D (page.215) >> +>> endobj +8477 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.966 462.8 433.902 473.704] +/A << /S /GoTo /D (page.215) >> +>> endobj +8478 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.984 450.844 428.921 461.748] +/A << /S /GoTo /D (page.215) >> +>> endobj +8479 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.184 438.889 437.12 449.793] +/A << /S /GoTo /D (page.215) >> +>> endobj +8480 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.202 426.934 432.139 437.838] +/A << /S /GoTo /D (page.215) >> +>> endobj +8481 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.845 403.741 380.782 413.928] +/A << /S /GoTo /D (page.131) >> +>> endobj +8482 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.914 391.786 391.85 401.973] +/A << /S /GoTo /D (page.131) >> +>> endobj +8483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.129 367.876 409.066 378.062] +/A << /S /GoTo /D (page.239) >> +>> endobj +8484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.478 355.92 361.414 366.107] +/A << /S /GoTo /D (page.239) >> +>> endobj +8485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.656 343.965 444.592 354.152] +/A << /S /GoTo /D (page.239) >> +>> endobj +8486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.017 332.01 366.954 342.197] +/A << /S /GoTo /D (page.240) >> +>> endobj +8487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.328 320.055 401.265 330.241] +/A << /S /GoTo /D (page.240) >> +>> endobj +8488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.061 308.1 413.997 318.286] +/A << /S /GoTo /D (page.241) >> +>> endobj +8489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.762 296.145 405.698 306.331] +/A << /S /GoTo /D (page.241) >> +>> endobj +8490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.509 284.189 406.446 294.376] +/A << /S /GoTo /D (page.241) >> +>> endobj +8491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [403.148 272.234 420.084 282.421] +/A << /S /GoTo /D (page.241) >> +>> endobj +8492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [347.795 260.279 364.732 270.466] +/A << /S /GoTo /D (page.242) >> +>> endobj +8493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.584 248.324 362.52 258.51] +/A << /S /GoTo /D (page.242) >> +>> endobj +8494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.69 236.369 387.626 246.555] +/A << /S /GoTo /D (page.242) >> +>> endobj +8495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.795 211.741 396.732 222.645] +/A << /S /GoTo /D (page.143) >> +>> endobj +8496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.961 200.503 381.898 210.69] +/A << /S /GoTo /D (page.134) >> +>> endobj +8497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.961 188.548 381.898 198.735] +/A << /S /GoTo /D (page.134) >> +>> endobj +8498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.98 176.593 376.916 186.779] +/A << /S /GoTo /D (page.134) >> +>> endobj +8499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.582 164.638 405.519 174.824] +/A << /S /GoTo /D (page.134) >> +>> endobj +8500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [388.582 152.682 405.519 162.869] +/A << /S /GoTo /D (page.134) >> +>> endobj +8501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.601 140.727 400.538 150.914] +/A << /S /GoTo /D (page.134) >> +>> endobj +8502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.955 128.772 412.891 138.959] +/A << /S /GoTo /D (page.134) >> +>> endobj +8503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.955 116.817 412.891 127.004] +/A << /S /GoTo /D (page.135) >> +>> endobj +8508 0 obj << +/D [8506 0 R /XYZ 132.768 705.06 null] +>> endobj +8505 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8603 0 obj << +/Length 729 +/Filter /FlateDecode +>> +stream +xÚ­™Ko›@…÷üŠY‚TÓyÀ<²kÇJTE©ÍÉŠ,âWb»%&%ÿ¾ØØ2Σs»ñ€<|œ{Ïa¤ÑP²$” œï‘óõŠKb|#Ë!Z&„¯¤&Ò„¾4ŒD32v¯o/û±×ãF)í +ͽûèÆéG·•JXí1æ’éÊßS2+ÿ¼!ÔF“¿û©+"‚r*Û=øDFÎ/‡ži¡u-¡(5D†Êç"¬´Ü ¯g?ûßF‘þ²—Q½?[„ ÷xH]&ÂÄŠ_þôX©.¬î¢awJÊ$DpHëžÈãÊS[ö¥ª# ¥º# Áùt!”÷$”ú€±–V !±–69@wì@cìÀhk8¬}uò= £Jh¬$÷ºÅº‚ÄZÙ(9 ;ÊæYhŒ]‰F`4ˆ5†R<ÖövCcmW5„a!J¬c@w´ R´‡œÌŠݵ+Á€ÄA#nð‘Úu‡É÷ÊP<ÄÅðå.ÌÎ2V]Ð¥ÈJ*Ú‘ÞŽ„)ék¡H(”o4£àP)).š@I­Aµ/²úÚåt§Œ~ÜÎ:ÇjéìÓ_d +†Ù•}“'ð«È¦@¸o§¤E¥=N1ÝO»»_ƒ¡¹Ÿ¢¹ÙmÌFì¶?ƒœŒì¶J¸‡¡(ƒº$¡hêàþɸ£¨£žÓýÊ€[aP÷¤öšj¾AÜ·ê)0Š*0zÜ`sцÑéÍý¢£û5Rw÷ót½,+½,ù´òó +endstream +endobj +8602 0 obj << +/Type /Page +/Contents 8603 0 R +/Resources 8601 0 R +/MediaBox [0 0 612 792] +/Parent 8509 0 R +/Annots [ 8504 0 R 8510 0 R 8511 0 R 8512 0 R 8513 0 R 8514 0 R 8515 0 R 8516 0 R 8517 0 R 8518 0 R 8519 0 R 8520 0 R 8521 0 R 8522 0 R 8523 0 R 8524 0 R 8525 0 R 8526 0 R 8527 0 R 8528 0 R 8529 0 R 8530 0 R 8531 0 R 8532 0 R 8533 0 R 8534 0 R 8535 0 R 8536 0 R 8537 0 R 8538 0 R 8539 0 R 8540 0 R 8541 0 R 8542 0 R 8543 0 R 8544 0 R 8545 0 R 8546 0 R 8547 0 R 8548 0 R 8549 0 R 8550 0 R 8551 0 R 8552 0 R 8553 0 R 8554 0 R 8555 0 R 8556 0 R 8557 0 R 8558 0 R 8559 0 R 8560 0 R 8561 0 R 8562 0 R 8563 0 R 8564 0 R 8565 0 R 8566 0 R 8567 0 R 8568 0 R 8569 0 R 8570 0 R 8571 0 R 8572 0 R 8573 0 R 8574 0 R 8575 0 R 8576 0 R 8577 0 R 8578 0 R 8579 0 R 8580 0 R 8581 0 R 8582 0 R 8583 0 R 8584 0 R 8585 0 R 8586 0 R 8587 0 R 8588 0 R 8589 0 R 8590 0 R 8591 0 R 8592 0 R 8593 0 R 8594 0 R 8595 0 R 8596 0 R 8597 0 R 8598 0 R 8599 0 R ] +>> endobj +8504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.137 654.8 231.073 664.986] +/A << /S /GoTo /D (page.135) >> +>> endobj +8510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.433 642.844 213.37 653.031] +/A << /S /GoTo /D (page.135) >> +>> endobj +8511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.913 630.889 202.849 641.076] +/A << /S /GoTo /D (page.135) >> +>> endobj +8512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.913 618.934 202.849 629.121] +/A << /S /GoTo /D (page.135) >> +>> endobj +8513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.931 606.979 197.868 617.166] +/A << /S /GoTo /D (page.135) >> +>> endobj +8514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.534 595.024 226.47 605.21] +/A << /S /GoTo /D (page.135) >> +>> endobj +8515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.534 583.069 226.47 593.255] +/A << /S /GoTo /D (page.135) >> +>> endobj +8516 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.552 571.113 221.489 581.3] +/A << /S /GoTo /D (page.135) >> +>> endobj +8517 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.906 559.158 233.843 569.345] +/A << /S /GoTo /D (page.135) >> +>> endobj +8518 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.906 547.203 233.843 557.39] +/A << /S /GoTo /D (page.135) >> +>> endobj +8519 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.925 535.248 228.861 545.435] +/A << /S /GoTo /D (page.136) >> +>> endobj +8520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.221 523.293 211.158 533.479] +/A << /S /GoTo /D (page.136) >> +>> endobj +8521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.124 511.338 205.061 521.524] +/A << /S /GoTo /D (page.136) >> +>> endobj +8522 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.124 499.382 205.061 509.569] +/A << /S /GoTo /D (page.136) >> +>> endobj +8523 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.143 487.427 200.08 497.614] +/A << /S /GoTo /D (page.136) >> +>> endobj +8524 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.746 475.472 228.682 485.659] +/A << /S /GoTo /D (page.136) >> +>> endobj +8525 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.746 463.517 228.682 473.704] +/A << /S /GoTo /D (page.136) >> +>> endobj +8526 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.764 451.562 223.701 461.748] +/A << /S /GoTo /D (page.136) >> +>> endobj +8527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.118 439.607 236.054 449.793] +/A << /S /GoTo /D (page.136) >> +>> endobj +8528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.118 427.651 236.054 437.838] +/A << /S /GoTo /D (page.136) >> +>> endobj +8529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.137 415.696 231.073 425.883] +/A << /S /GoTo /D (page.136) >> +>> endobj +8530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.433 403.741 213.37 413.928] +/A << /S /GoTo /D (page.137) >> +>> endobj +8531 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.124 391.786 205.061 401.973] +/A << /S /GoTo /D (page.137) >> +>> endobj +8532 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.124 379.831 205.061 390.017] +/A << /S /GoTo /D (page.137) >> +>> endobj +8533 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.143 367.876 200.08 378.062] +/A << /S /GoTo /D (page.137) >> +>> endobj +8534 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.746 355.92 228.682 366.107] +/A << /S /GoTo /D (page.137) >> +>> endobj +8535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.746 343.965 228.682 354.152] +/A << /S /GoTo /D (page.137) >> +>> endobj +8536 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.764 332.01 223.701 342.197] +/A << /S /GoTo /D (page.137) >> +>> endobj +8537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.118 320.055 236.054 330.241] +/A << /S /GoTo /D (page.137) >> +>> endobj +8538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.118 308.1 236.054 318.286] +/A << /S /GoTo /D (page.137) >> +>> endobj +8539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.137 296.145 231.073 306.331] +/A << /S /GoTo /D (page.137) >> +>> endobj +8540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.433 284.189 213.37 294.376] +/A << /S /GoTo /D (page.137) >> +>> endobj +8541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.336 272.234 207.273 282.421] +/A << /S /GoTo /D (page.138) >> +>> endobj +8542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.124 260.279 205.061 270.466] +/A << /S /GoTo /D (page.138) >> +>> endobj +8543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.336 248.324 207.273 258.51] +/A << /S /GoTo /D (page.138) >> +>> endobj +8544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.124 236.369 205.061 246.555] +/A << /S /GoTo /D (page.138) >> +>> endobj +8545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.355 224.414 202.291 234.6] +/A << /S /GoTo /D (page.138) >> +>> endobj +8546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.143 212.458 200.08 222.645] +/A << /S /GoTo /D (page.138) >> +>> endobj +8547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.957 200.503 230.894 210.69] +/A << /S /GoTo /D (page.138) >> +>> endobj +8548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.746 188.548 228.682 198.735] +/A << /S /GoTo /D (page.138) >> +>> endobj +8549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.957 176.593 230.894 186.779] +/A << /S /GoTo /D (page.138) >> +>> endobj +8550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.746 164.638 228.682 174.824] +/A << /S /GoTo /D (page.138) >> +>> endobj +8551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.976 152.682 225.912 162.869] +/A << /S /GoTo /D (page.138) >> +>> endobj +8552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.764 140.727 223.701 150.914] +/A << /S /GoTo /D (page.139) >> +>> endobj +8553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [221.33 128.772 238.266 138.959] +/A << /S /GoTo /D (page.139) >> +>> endobj +8554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.118 116.817 236.054 127.004] +/A << /S /GoTo /D (page.139) >> +>> endobj +8555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.167 654.8 415.103 664.986] +/A << /S /GoTo /D (page.139) >> +>> endobj +8556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.955 642.844 412.891 653.031] +/A << /S /GoTo /D (page.139) >> +>> endobj +8557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.185 630.889 410.122 641.076] +/A << /S /GoTo /D (page.139) >> +>> endobj +8558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.974 618.934 407.91 629.121] +/A << /S /GoTo /D (page.139) >> +>> endobj +8559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.482 606.979 392.418 617.166] +/A << /S /GoTo /D (page.139) >> +>> endobj +8560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.27 595.024 390.206 605.21] +/A << /S /GoTo /D (page.139) >> +>> endobj +8561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 583.069 385.773 593.255] +/A << /S /GoTo /D (page.139) >> +>> endobj +8562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 571.113 385.773 581.3] +/A << /S /GoTo /D (page.139) >> +>> endobj +8563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 559.158 409.394 569.345] +/A << /S /GoTo /D (page.140) >> +>> endobj +8564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 547.203 409.394 557.39] +/A << /S /GoTo /D (page.140) >> +>> endobj +8565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 535.248 416.767 545.435] +/A << /S /GoTo /D (page.140) >> +>> endobj +8566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 523.293 416.767 533.479] +/A << /S /GoTo /D (page.140) >> +>> endobj +8567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.145 511.338 394.082 521.524] +/A << /S /GoTo /D (page.140) >> +>> endobj +8568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.625 499.382 383.561 509.569] +/A << /S /GoTo /D (page.140) >> +>> endobj +8569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.625 487.427 383.561 497.614] +/A << /S /GoTo /D (page.140) >> +>> endobj +8570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.246 475.472 407.183 485.659] +/A << /S /GoTo /D (page.140) >> +>> endobj +8571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.246 463.517 407.183 473.704] +/A << /S /GoTo /D (page.140) >> +>> endobj +8572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.619 451.562 414.555 461.748] +/A << /S /GoTo /D (page.140) >> +>> endobj +8573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.619 439.607 414.555 449.793] +/A << /S /GoTo /D (page.140) >> +>> endobj +8574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.934 427.651 391.87 437.838] +/A << /S /GoTo /D (page.141) >> +>> endobj +8575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 415.696 385.773 425.883] +/A << /S /GoTo /D (page.141) >> +>> endobj +8576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 403.741 385.773 413.928] +/A << /S /GoTo /D (page.141) >> +>> endobj +8577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 391.786 409.394 401.973] +/A << /S /GoTo /D (page.141) >> +>> endobj +8578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 379.831 409.394 390.017] +/A << /S /GoTo /D (page.141) >> +>> endobj +8579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 367.876 416.767 378.062] +/A << /S /GoTo /D (page.141) >> +>> endobj +8580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 355.92 416.767 366.107] +/A << /S /GoTo /D (page.141) >> +>> endobj +8581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.145 343.965 394.082 354.152] +/A << /S /GoTo /D (page.141) >> +>> endobj +8582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 332.01 385.773 342.197] +/A << /S /GoTo /D (page.141) >> +>> endobj +8583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 320.055 385.773 330.241] +/A << /S /GoTo /D (page.141) >> +>> endobj +8584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 308.1 409.394 318.286] +/A << /S /GoTo /D (page.141) >> +>> endobj +8585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 296.145 409.394 306.331] +/A << /S /GoTo /D (page.142) >> +>> endobj +8586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 284.189 416.767 294.376] +/A << /S /GoTo /D (page.142) >> +>> endobj +8587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 272.234 416.767 282.421] +/A << /S /GoTo /D (page.142) >> +>> endobj +8588 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.145 260.279 394.082 270.466] +/A << /S /GoTo /D (page.142) >> +>> endobj +8589 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 248.324 385.773 258.51] +/A << /S /GoTo /D (page.142) >> +>> endobj +8590 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.837 236.369 385.773 246.555] +/A << /S /GoTo /D (page.142) >> +>> endobj +8591 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 224.414 409.394 234.6] +/A << /S /GoTo /D (page.142) >> +>> endobj +8592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.458 212.458 409.394 222.645] +/A << /S /GoTo /D (page.142) >> +>> endobj +8593 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 200.503 416.767 210.69] +/A << /S /GoTo /D (page.142) >> +>> endobj +8594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.83 188.548 416.767 198.735] +/A << /S /GoTo /D (page.142) >> +>> endobj +8595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.145 176.593 394.082 186.779] +/A << /S /GoTo /D (page.142) >> +>> endobj +8596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.776 163.92 401.713 174.824] +/A << /S /GoTo /D (page.143) >> +>> endobj +8597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.219 140.727 369.155 150.914] +/A << /S /GoTo /D (page.145) >> +>> endobj +8598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.565 128.772 367.502 138.959] +/A << /S /GoTo /D (page.145) >> +>> endobj +8599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [351.113 116.817 368.05 127.004] +/A << /S /GoTo /D (page.145) >> +>> endobj +8604 0 obj << +/D [8602 0 R /XYZ 132.768 705.06 null] +>> endobj +8601 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8697 0 obj << +/Length 885 +/Filter /FlateDecode +>> +stream +xÚ­Ùao¢0ð÷|Š¾„ääZ +öî.ÛŒKôœ#—»ì‚€J +Wp›ßþ@X¦‹³•’,3øñïÓê€` +ß=åë­A€«»¤Þx+€0ÖmââZ:qð"ð¨Nf×7¿´‘áÚ¶£bkOÞrã)ÿT3 ƒÓîB „™òøATÿñ@»xÙšlÖ‡¢æÄ<(÷ +<ʳX¸Î`bÙº­6KPÔø²OÐ^š­» ‹±G†UdZÝ-]ÿ¡:˜Õaœ¤²D^hª»2YSiª”6\‚œ&HKIJÔ×¢¯ÒY55 –¥,%™$ñBœçL6HÈ ¯’]³Ê*"d 6ÌÙh–º+òŠËØg™Éìv2›x¿¹Œy–IÊz 4©â¾yÈ”Еd›’’TÒH#Ñnâ8ùZ^@PÖ` åçlϤ,ßÒ¨/Ò™úó‰äP›ú÷ @Õ3$¥z2¯$Û3Ó°¥~›õ}ît¥-rÍ°ÔÉ,CôOó^&ü¡âr*/ld‰¬w;ȱ X,™£ +¨¼ [ŒŠmiÈ3,xlŒP½†¬—GR P}f~±ÎÊ"ãæpêÀ,Πó眫>Û “ý™ƒ4íJsªþ‚aRêœùxÊ78Ó¾îLŸÅAä/wÜ'øGë㠛超mÝuŒWðÛõ-ã^ÉOíÓx80ziæ,”m:ù²ýûUPqG&¼ˆmû¥¬HËEMÑŽ¿Ô“m;ùÌj<âÞA~j&TL®nG籂åk?ÜH‡Ú;õª¿ˆÂFŠSÄ,•# |i+TsH´è‚–PÕ-¡²üÜW÷çf=”'‘¤5_ì'àxz3•ÍÞB’(+e,¶î2E¨zÓŸ"T5H¢ ˆ¡ÛT@²¸’P¥ùŒð +—O•íï¼÷X*Öe„—'oߊé Ÿ#"–H™l^¹©X›ŸG¸Ü|K¬ÞÏ)–ìïŽàôç:e\ôgÞ»Ll¢¹Ü4BwX÷äW·“¯ \G·ñ%/ Þ^‚ݵ±søÌquLº¨ã˜Æ,¨âHÛGÊi»õ6Ûvç:Û³Ý xeà+ä´Ÿ »½Uó/³œµ‚æÃ3Ó°­ŽÒdÙ Ë]G毻uLš^7ù?¨°?T +endstream +endobj +8696 0 obj << +/Type /Page +/Contents 8697 0 R +/Resources 8695 0 R +/MediaBox [0 0 612 792] +/Parent 8509 0 R +/Annots [ 8600 0 R 8605 0 R 8606 0 R 8607 0 R 8608 0 R 8609 0 R 8610 0 R 8611 0 R 8612 0 R 8613 0 R 8614 0 R 8615 0 R 8616 0 R 8617 0 R 8618 0 R 8619 0 R 8620 0 R 8621 0 R 8622 0 R 8623 0 R 8624 0 R 8625 0 R 8626 0 R 8627 0 R 8628 0 R 8629 0 R 8630 0 R 8631 0 R 8632 0 R 8633 0 R 8634 0 R 8635 0 R 8636 0 R 8637 0 R 8638 0 R 8639 0 R 8640 0 R 8641 0 R 8642 0 R 8643 0 R 8644 0 R 8645 0 R 8646 0 R 8647 0 R 8648 0 R 8649 0 R 8650 0 R 8651 0 R 8652 0 R 8653 0 R 8654 0 R 8655 0 R 8656 0 R 8657 0 R 8658 0 R 8659 0 R 8660 0 R 8661 0 R 8662 0 R 8663 0 R 8664 0 R 8665 0 R 8666 0 R 8667 0 R 8668 0 R 8669 0 R 8670 0 R 8671 0 R 8672 0 R 8673 0 R 8674 0 R 8675 0 R 8676 0 R 8677 0 R 8678 0 R 8679 0 R 8680 0 R 8681 0 R 8682 0 R 8683 0 R 8684 0 R 8685 0 R 8686 0 R 8687 0 R 8688 0 R 8689 0 R 8690 0 R 8691 0 R 8692 0 R 8693 0 R 8694 0 R ] +>> endobj +8600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 654.8 196.194 664.986] +/A << /S /GoTo /D (page.145) >> +>> endobj +8605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.064 642.844 189.001 653.031] +/A << /S /GoTo /D (page.145) >> +>> endobj +8606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.554 630.172 210.49 641.076] +/A << /S /GoTo /D (page.145) >> +>> endobj +8607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.959 618.934 187.895 629.121] +/A << /S /GoTo /D (page.145) >> +>> endobj +8608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.94 606.979 192.877 617.166] +/A << /S /GoTo /D (page.146) >> +>> endobj +8609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.915 594.306 188.852 605.21] +/A << /S /GoTo /D (page.146) >> +>> endobj +8610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.177 583.069 191.113 593.255] +/A << /S /GoTo /D (page.146) >> +>> endobj +8611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.498 571.113 193.434 581.3] +/A << /S /GoTo /D (page.146) >> +>> endobj +8612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.498 559.158 193.435 569.345] +/A << /S /GoTo /D (page.146) >> +>> endobj +8613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.17 547.203 190.107 557.39] +/A << /S /GoTo /D (page.146) >> +>> endobj +8614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.152 535.248 195.088 545.435] +/A << /S /GoTo /D (page.146) >> +>> endobj +8615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.498 523.293 193.434 533.479] +/A << /S /GoTo /D (page.146) >> +>> endobj +8616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.71 511.338 195.646 521.524] +/A << /S /GoTo /D (page.146) >> +>> endobj +8617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.55 498.665 195.487 509.569] +/A << /S /GoTo /D (page.146) >> +>> endobj +8618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.324 486.71 197.26 497.614] +/A << /S /GoTo /D (page.147) >> +>> endobj +8619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.837 475.472 217.773 485.659] +/A << /S /GoTo /D (page.144) >> +>> endobj +8620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.806 463.517 201.743 473.704] +/A << /S /GoTo /D (page.147) >> +>> endobj +8621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.392 451.562 192.328 461.748] +/A << /S /GoTo /D (page.147) >> +>> endobj +8622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.71 439.607 195.646 449.793] +/A << /S /GoTo /D (page.147) >> +>> endobj +8623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.666 426.934 196.603 437.838] +/A << /S /GoTo /D (page.147) >> +>> endobj +8624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.411 414.979 187.347 425.883] +/A << /S /GoTo /D (page.147) >> +>> endobj +8625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.373 403.024 197.31 413.928] +/A << /S /GoTo /D (page.147) >> +>> endobj +8626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.286 391.786 191.223 401.973] +/A << /S /GoTo /D (page.148) >> +>> endobj +8627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.691 379.831 200.627 390.017] +/A << /S /GoTo /D (page.148) >> +>> endobj +8628 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.373 367.876 197.31 378.062] +/A << /S /GoTo /D (page.144) >> +>> endobj +8629 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.365 355.577 218.301 366.107] +/A << /S /GoTo /D (page.144) >> +>> endobj +8630 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.71 343.965 195.646 354.152] +/A << /S /GoTo /D (page.148) >> +>> endobj +8631 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.909 332.01 195.845 342.197] +/A << /S /GoTo /D (page.145) >> +>> endobj +8632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.585 319.338 191.522 330.241] +/A << /S /GoTo /D (page.148) >> +>> endobj +8633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.921 308.1 197.858 318.286] +/A << /S /GoTo /D (page.148) >> +>> endobj +8634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.807 295.427 201.743 306.331] +/A << /S /GoTo /D (page.149) >> +>> endobj +8635 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.305 284.189 186.241 294.376] +/A << /S /GoTo /D (page.149) >> +>> endobj +8636 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.286 272.234 191.223 282.421] +/A << /S /GoTo /D (page.149) >> +>> endobj +8637 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.622 259.562 189.559 270.466] +/A << /S /GoTo /D (page.149) >> +>> endobj +8638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.681 247.607 200.617 258.51] +/A << /S /GoTo /D (page.149) >> +>> endobj +8639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.853 236.369 186.789 246.555] +/A << /S /GoTo /D (page.149) >> +>> endobj +8640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.834 224.414 191.771 234.6] +/A << /S /GoTo /D (page.149) >> +>> endobj +8641 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.152 212.458 195.088 222.645] +/A << /S /GoTo /D (page.150) >> +>> endobj +8642 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.846 188.548 217.783 198.735] +/A << /S /GoTo /D (page.253) >> +>> endobj +8643 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.28 175.876 222.216 186.779] +/A << /S /GoTo /D (page.253) >> +>> endobj +8644 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [202.411 163.92 219.347 174.824] +/A << /S /GoTo /D (page.253) >> +>> endobj +8645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.049 152.682 224.986 162.869] +/A << /S /GoTo /D (page.253) >> +>> endobj +8646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.164 140.727 221.1 150.914] +/A << /S /GoTo /D (page.253) >> +>> endobj +8647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.788 128.772 206.725 138.959] +/A << /S /GoTo /D (page.248) >> +>> endobj +8648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.656 116.1 236.592 127.004] +/A << /S /GoTo /D (page.248) >> +>> endobj +8649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.433 654.082 429.369 664.986] +/A << /S /GoTo /D (page.249) >> +>> endobj +8650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [418.62 642.127 435.556 653.031] +/A << /S /GoTo /D (page.249) >> +>> endobj +8651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.692 630.172 421.629 641.076] +/A << /S /GoTo /D (page.249) >> +>> endobj +8652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.632 618.217 437.569 629.121] +/A << /S /GoTo /D (page.249) >> +>> endobj +8653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.819 606.262 443.755 617.166] +/A << /S /GoTo /D (page.249) >> +>> endobj +8654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.051 594.306 413.987 605.21] +/A << /S /GoTo /D (page.250) >> +>> endobj +8655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.991 582.351 429.927 593.255] +/A << /S /GoTo /D (page.250) >> +>> endobj +8656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.177 570.396 436.114 581.3] +/A << /S /GoTo /D (page.250) >> +>> endobj +8657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [399.711 558.441 416.647 569.345] +/A << /S /GoTo /D (page.250) >> +>> endobj +8658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [415.651 546.486 432.587 557.39] +/A << /S /GoTo /D (page.250) >> +>> endobj +8659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.838 534.531 438.774 545.435] +/A << /S /GoTo /D (page.251) >> +>> endobj +8660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.104 523.293 413.041 533.479] +/A << /S /GoTo /D (page.251) >> +>> endobj +8661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.904 510.62 391.84 521.524] +/A << /S /GoTo /D (page.251) >> +>> endobj +8662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.992 498.665 402.929 509.569] +/A << /S /GoTo /D (page.251) >> +>> endobj +8663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.992 486.71 402.929 497.614] +/A << /S /GoTo /D (page.251) >> +>> endobj +8664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.992 474.755 402.929 485.659] +/A << /S /GoTo /D (page.251) >> +>> endobj +8665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.011 462.8 397.947 473.704] +/A << /S /GoTo /D (page.252) >> +>> endobj +8666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.885 450.844 396.822 461.748] +/A << /S /GoTo /D (page.252) >> +>> endobj +8667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.973 438.889 407.91 449.793] +/A << /S /GoTo /D (page.252) >> +>> endobj +8668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.973 426.934 407.91 437.838] +/A << /S /GoTo /D (page.252) >> +>> endobj +8669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.973 414.979 407.91 425.883] +/A << /S /GoTo /D (page.252) >> +>> endobj +8670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.992 403.024 402.929 413.928] +/A << /S /GoTo /D (page.252) >> +>> endobj +8671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.273 391.069 392.209 401.973] +/A << /S /GoTo /D (page.252) >> +>> endobj +8672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [384.488 379.831 401.424 390.017] +/A << /S /GoTo /D (page.251) >> +>> endobj +8673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.326 367.876 375.263 378.062] +/A << /S /GoTo /D (page.251) >> +>> endobj +8674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [389.299 355.203 406.236 366.107] +/A << /S /GoTo /D (page.254) >> +>> endobj +8675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.106 343.965 399.043 354.152] +/A << /S /GoTo /D (page.254) >> +>> endobj +8676 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.615 332.01 383.551 342.197] +/A << /S /GoTo /D (page.254) >> +>> endobj +8677 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.721 320.055 384.657 330.241] +/A << /S /GoTo /D (page.254) >> +>> endobj +8678 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.453 308.1 397.389 318.286] +/A << /S /GoTo /D (page.255) >> +>> endobj +8679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.154 295.427 389.09 306.331] +/A << /S /GoTo /D (page.255) >> +>> endobj +8680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.285 283.472 386.221 294.376] +/A << /S /GoTo /D (page.255) >> +>> endobj +8681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.26 271.517 390.196 282.421] +/A << /S /GoTo /D (page.255) >> +>> endobj +8682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.384 260.279 386.321 270.466] +/A << /S /GoTo /D (page.256) >> +>> endobj +8683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.054 247.607 388.991 258.51] +/A << /S /GoTo /D (page.256) >> +>> endobj +8684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.173 236.369 384.109 246.555] +/A << /S /GoTo /D (page.256) >> +>> endobj +8685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.281 223.696 411.217 234.6] +/A << /S /GoTo /D (page.256) >> +>> endobj +8686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.596 212.458 388.532 222.645] +/A << /S /GoTo /D (page.257) >> +>> endobj +8687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.135 199.786 394.072 210.69] +/A << /S /GoTo /D (page.257) >> +>> endobj +8688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.266 187.831 391.203 198.735] +/A << /S /GoTo /D (page.257) >> +>> endobj +8689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [372.154 176.593 389.09 186.779] +/A << /S /GoTo /D (page.258) >> +>> endobj +8690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.26 163.92 390.196 174.824] +/A << /S /GoTo /D (page.258) >> +>> endobj +8691 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.038 152.682 387.975 162.869] +/A << /S /GoTo /D (page.258) >> +>> endobj +8692 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.278 140.01 385.215 150.914] +/A << /S /GoTo /D (page.258) >> +>> endobj +8693 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [368.836 128.055 385.773 138.959] +/A << /S /GoTo /D (page.259) >> +>> endobj +8694 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.961 116.817 381.897 127.004] +/A << /S /GoTo /D (page.259) >> +>> endobj +8698 0 obj << +/D [8696 0 R /XYZ 132.768 705.06 null] +>> endobj +8695 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8791 0 obj << +/Length 814 +/Filter /FlateDecode +>> +stream +xÚ­Y]oÚ0}ϯðc"ÌŽ‰?úÖ@Tk·•0U«ª(@èR`ºößÏ”5MnÈ}Á‰bŽÏ9÷^;W¡äPÒ³Îës×D»Z˜!˜ƹ+…"Bû®ÐŒrg÷¯/:·NËÓR*›«¶s\ZÀúm1C {ó7æjê“ñ£uwOÉÄ<¼$ÔåZ‘?»©„·ÍT¶ýcBÖw‹¸ÐC\|ézÜϸDŽGí§4\MÓ- ÂÌ|3½ÅÌÂ~>'<ûñiÇ1#—>ä,oz¹ky>µ=áç²ÅÍOa4[‡³U8Nâ(ÅZÅë†@Éb± 7óõ, 1è‰P`Ú:…}¤’8^~«ÝÓp¼ÜT®)KÝÉp&³U4Jb¬x~ T¹ëÉl¾þß ñZgáyÅ’Ì¥ì3”«Ó[œþuC£ØàT嬊 ÷0¼1( ¼ o ‚7¢áAAÉ›-†7çhoþEJaX£pœQ8Æ(Œœ »ŽlÛ§èv!«Œ.dÊ*™áÔaÔŽVHÈžpµQãì +{~À†GXápÁMJý€`…`…,§€¿t0«w†¢Ô¼›ëÖƒéD+Ú=@§‚é•+P'°V‹ÌÞ„Iá*.ˆÏ¥«•w` <õ ÚªWGˆ/;^¥x§Raˆ4âo# +ƒâÓ#£g ¾7M„‰"†°å:m,̹èw»!Û#¤éR¤A¿ž:Œ1;p˜²¿^õÏAüt©óQ¸þì4!—à ¡ 6¦9Ÿ ´5ö*ù€zãòÐ áÍqµ,„qmk5GÂI7v¤ÕÁ•‚VŠ‚l¼RSÍnÀ«^÷Wƒ!,Ëë0¥;¯ŒhÍ~­CPæÖðPaDÊÂ-ÑGìÄvð.Ê /ùà”^ÚÁû(7…Rœl½Í¿ãô:ü~¦•+y¯g¯_ð„«%Wo¿š)ír‘síÅó8ÖñÄÙQZ̳1øµÉ..âqvÑÎFO<~ÂTvçQš_MÏ·ivmožR‡K»•ÌF9Âè%‡\<¿<Äó‚t#ù/í=X +endstream +endobj +8790 0 obj << +/Type /Page +/Contents 8791 0 R +/Resources 8789 0 R +/MediaBox [0 0 612 792] +/Parent 8509 0 R +/Annots [ 8699 0 R 8700 0 R 8701 0 R 8702 0 R 8703 0 R 8704 0 R 8705 0 R 8706 0 R 8707 0 R 8708 0 R 8709 0 R 8710 0 R 8711 0 R 8712 0 R 8713 0 R 8714 0 R 8715 0 R 8716 0 R 8717 0 R 8718 0 R 8719 0 R 8720 0 R 8721 0 R 8722 0 R 8723 0 R 8724 0 R 8725 0 R 8726 0 R 8727 0 R 8728 0 R 8729 0 R 8730 0 R 8731 0 R 8732 0 R 8733 0 R 8734 0 R 8735 0 R 8736 0 R 8737 0 R 8738 0 R 8739 0 R 8740 0 R 8741 0 R 8742 0 R 8743 0 R 8744 0 R 8745 0 R 8746 0 R 8747 0 R 8748 0 R 8749 0 R 8750 0 R 8751 0 R 8752 0 R 8753 0 R 8754 0 R 8755 0 R 8756 0 R 8757 0 R 8758 0 R 8759 0 R 8760 0 R 8761 0 R 8762 0 R 8763 0 R 8764 0 R 8765 0 R 8766 0 R 8767 0 R 8768 0 R 8769 0 R 8770 0 R 8771 0 R 8772 0 R 8773 0 R 8774 0 R 8775 0 R 8776 0 R 8777 0 R 8778 0 R 8779 0 R 8780 0 R 8781 0 R 8782 0 R 8783 0 R 8784 0 R 8785 0 R 8786 0 R 8787 0 R ] +>> endobj +8699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.498 642.844 193.435 653.031] +/A << /S /GoTo /D (page.265) >> +>> endobj +8700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.164 630.889 221.1 641.076] +/A << /S /GoTo /D (page.265) >> +>> endobj +8701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.875 618.934 212.811 629.121] +/A << /S /GoTo /D (page.265) >> +>> endobj +8702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [250.111 606.262 267.047 617.166] +/A << /S /GoTo /D (page.265) >> +>> endobj +8703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.822 594.306 258.759 605.21] +/A << /S /GoTo /D (page.265) >> +>> endobj +8704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.519 570.396 214.455 581.3] +/A << /S /GoTo /D (page.267) >> +>> endobj +8705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [211.357 558.441 228.293 569.345] +/A << /S /GoTo /D (page.267) >> +>> endobj +8706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.135 546.486 226.072 557.39] +/A << /S /GoTo /D (page.267) >> +>> endobj +8707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.865 523.293 212.802 533.479] +/A << /S /GoTo /D (page.156) >> +>> endobj +8708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.463 511.338 229.399 521.524] +/A << /S /GoTo /D (page.156) >> +>> endobj +8709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.588 499.382 225.524 509.569] +/A << /S /GoTo /D (page.156) >> +>> endobj +8710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.912 487.427 202.849 497.614] +/A << /S /GoTo /D (page.161) >> +>> endobj +8711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.865 475.472 212.802 485.659] +/A << /S /GoTo /D (page.156) >> +>> endobj +8712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.463 463.517 229.399 473.704] +/A << /S /GoTo /D (page.156) >> +>> endobj +8713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.588 451.562 225.524 461.748] +/A << /S /GoTo /D (page.156) >> +>> endobj +8714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.912 439.607 202.849 449.793] +/A << /S /GoTo /D (page.161) >> +>> endobj +8715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.865 427.651 212.802 437.838] +/A << /S /GoTo /D (page.156) >> +>> endobj +8716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.463 415.696 229.399 425.883] +/A << /S /GoTo /D (page.156) >> +>> endobj +8717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [208.588 403.741 225.524 413.928] +/A << /S /GoTo /D (page.156) >> +>> endobj +8718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.912 391.786 202.849 401.973] +/A << /S /GoTo /D (page.161) >> +>> endobj +8719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.884 379.831 207.82 390.017] +/A << /S /GoTo /D (page.156) >> +>> endobj +8720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [207.482 367.876 224.418 378.062] +/A << /S /GoTo /D (page.156) >> +>> endobj +8721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.606 355.92 220.543 366.107] +/A << /S /GoTo /D (page.156) >> +>> endobj +8722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.931 343.965 197.868 354.152] +/A << /S /GoTo /D (page.161) >> +>> endobj +8723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.066 332.01 258.002 342.197] +/A << /S /GoTo /D (page.157) >> +>> endobj +8724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.19 320.055 254.127 330.241] +/A << /S /GoTo /D (page.157) >> +>> endobj +8725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.18 308.1 222.116 318.286] +/A << /S /GoTo /D (page.161) >> +>> endobj +8726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.066 296.145 258.002 306.331] +/A << /S /GoTo /D (page.157) >> +>> endobj +8727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.19 284.189 254.127 294.376] +/A << /S /GoTo /D (page.157) >> +>> endobj +8728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.18 272.234 222.116 282.421] +/A << /S /GoTo /D (page.161) >> +>> endobj +8729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [241.066 260.279 258.002 270.466] +/A << /S /GoTo /D (page.157) >> +>> endobj +8730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [237.19 248.324 254.127 258.51] +/A << /S /GoTo /D (page.157) >> +>> endobj +8731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.18 236.369 222.116 246.555] +/A << /S /GoTo /D (page.161) >> +>> endobj +8732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.084 224.414 253.021 234.6] +/A << /S /GoTo /D (page.157) >> +>> endobj +8733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.209 212.458 249.145 222.645] +/A << /S /GoTo /D (page.157) >> +>> endobj +8734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.199 200.503 217.135 210.69] +/A << /S /GoTo /D (page.161) >> +>> endobj +8735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.438 188.548 265.374 198.735] +/A << /S /GoTo /D (page.157) >> +>> endobj +8736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.562 176.593 261.499 186.779] +/A << /S /GoTo /D (page.157) >> +>> endobj +8737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.155 164.638 226.091 174.824] +/A << /S /GoTo /D (page.162) >> +>> endobj +8738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.438 152.682 265.374 162.869] +/A << /S /GoTo /D (page.157) >> +>> endobj +8739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.562 140.727 261.499 150.914] +/A << /S /GoTo /D (page.158) >> +>> endobj +8740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.155 128.772 226.091 138.959] +/A << /S /GoTo /D (page.162) >> +>> endobj +8741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.438 116.817 265.374 127.004] +/A << /S /GoTo /D (page.158) >> +>> endobj +8742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.399 654.8 438.336 664.986] +/A << /S /GoTo /D (page.158) >> +>> endobj +8743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.992 642.844 402.928 653.031] +/A << /S /GoTo /D (page.162) >> +>> endobj +8744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.293 630.889 437.23 641.076] +/A << /S /GoTo /D (page.158) >> +>> endobj +8745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.418 618.934 433.355 629.121] +/A << /S /GoTo /D (page.158) >> +>> endobj +8746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.01 606.979 397.947 617.166] +/A << /S /GoTo /D (page.162) >> +>> endobj +8747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.982 595.024 402.919 605.21] +/A << /S /GoTo /D (page.158) >> +>> endobj +8748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.58 583.069 419.516 593.255] +/A << /S /GoTo /D (page.158) >> +>> endobj +8749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.704 571.113 415.641 581.3] +/A << /S /GoTo /D (page.158) >> +>> endobj +8750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.942 559.158 386.879 569.345] +/A << /S /GoTo /D (page.162) >> +>> endobj +8751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [397.609 547.203 414.545 557.39] +/A << /S /GoTo /D (page.158) >> +>> endobj +8752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.733 535.248 410.67 545.435] +/A << /S /GoTo /D (page.158) >> +>> endobj +8753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.855 522.575 380.792 533.479] +/A << /S /GoTo /D (page.162) >> +>> endobj +8754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [402.6 511.338 419.536 521.524] +/A << /S /GoTo /D (page.158) >> +>> endobj +8755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.724 499.382 415.661 509.569] +/A << /S /GoTo /D (page.159) >> +>> endobj +8756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [421.778 487.427 438.714 497.614] +/A << /S /GoTo /D (page.159) >> +>> endobj +8757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.902 475.472 434.839 485.659] +/A << /S /GoTo /D (page.159) >> +>> endobj +8758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.771 463.517 400.707 473.704] +/A << /S /GoTo /D (page.159) >> +>> endobj +8759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.895 451.562 396.832 461.748] +/A << /S /GoTo /D (page.159) >> +>> endobj +8760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.493 439.607 413.429 449.793] +/A << /S /GoTo /D (page.159) >> +>> endobj +8761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.731 427.651 384.667 437.838] +/A << /S /GoTo /D (page.162) >> +>> endobj +8762 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.895 415.696 396.832 425.883] +/A << /S /GoTo /D (page.159) >> +>> endobj +8763 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.493 403.741 413.429 413.928] +/A << /S /GoTo /D (page.159) >> +>> endobj +8764 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.731 391.786 384.667 401.973] +/A << /S /GoTo /D (page.162) >> +>> endobj +8765 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.895 379.831 396.832 390.017] +/A << /S /GoTo /D (page.159) >> +>> endobj +8766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.493 367.876 413.429 378.062] +/A << /S /GoTo /D (page.159) >> +>> endobj +8767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.731 355.92 384.667 366.107] +/A << /S /GoTo /D (page.162) >> +>> endobj +8768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.914 343.965 391.85 354.152] +/A << /S /GoTo /D (page.159) >> +>> endobj +8769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.512 332.01 408.448 342.197] +/A << /S /GoTo /D (page.160) >> +>> endobj +8770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.749 320.055 379.686 330.241] +/A << /S /GoTo /D (page.163) >> +>> endobj +8771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.095 308.1 442.032 318.286] +/A << /S /GoTo /D (page.160) >> +>> endobj +8772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.998 296.145 403.935 306.331] +/A << /S /GoTo /D (page.163) >> +>> endobj +8773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.095 284.189 442.032 294.376] +/A << /S /GoTo /D (page.160) >> +>> endobj +8774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.998 272.234 403.935 282.421] +/A << /S /GoTo /D (page.163) >> +>> endobj +8775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [425.095 260.279 442.032 270.466] +/A << /S /GoTo /D (page.160) >> +>> endobj +8776 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.998 248.324 403.935 258.51] +/A << /S /GoTo /D (page.163) >> +>> endobj +8777 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [420.114 236.369 437.051 246.555] +/A << /S /GoTo /D (page.160) >> +>> endobj +8778 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.017 224.414 398.953 234.6] +/A << /S /GoTo /D (page.163) >> +>> endobj +8779 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.468 212.458 449.404 222.645] +/A << /S /GoTo /D (page.160) >> +>> endobj +8780 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.973 200.503 407.91 210.69] +/A << /S /GoTo /D (page.163) >> +>> endobj +8781 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.468 188.548 449.404 198.735] +/A << /S /GoTo /D (page.160) >> +>> endobj +8782 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.973 176.593 407.91 186.779] +/A << /S /GoTo /D (page.163) >> +>> endobj +8783 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [432.468 164.638 449.404 174.824] +/A << /S /GoTo /D (page.160) >> +>> endobj +8784 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.973 152.682 407.91 162.869] +/A << /S /GoTo /D (page.163) >> +>> endobj +8785 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [427.486 140.727 444.423 150.914] +/A << /S /GoTo /D (page.160) >> +>> endobj +8786 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.992 128.772 402.928 138.959] +/A << /S /GoTo /D (page.163) >> +>> endobj +8787 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.175 116.817 410.112 127.004] +/A << /S /GoTo /D (page.160) >> +>> endobj +8792 0 obj << +/D [8790 0 R /XYZ 132.768 705.06 null] +>> endobj +8789 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8885 0 obj << +/Length 955 +/Filter /FlateDecode +>> +stream +xÚ­™]“š:Çïù¹„™#M@ÞöÎsdwìl·e»íìéd²•Ðn¿ý ‚­îv“Ôp¡Á1üø?/yx,7Æ߉ñîÚñAdG>’@®k~üȳý$æän¶N¡é†žõ5yoĉñÍ@:9 Ùô@º1¿Bñ?ßh»Q¾¦n€;äSQsâÌ x¦žjñ\®a|/°×kµÜOϘþ:èh°e§dvc€ÇãAù°›Ð^€ —çu¤]^ÔòŒk)g(ä4Š¦ÉLI’*ÚÖìÏ ÷wÚX4÷ Wu–—Í|p6Ëogáëqü ǯ¥×Œ„Ú;ÎlÖ g'÷S<‹Gã>q–ç™=f“$Öä¥kJeL† ÞH.Œú\¤ë²¢—Ê8B2j9ž¹ÇJ0™¢#lIk¼ËHMúV=Oražðlý uFñTànËW.£ds)ó…ÑM5(·´â1Ž– mc¥<á]1¤1ê?Ý]µÒEñüJ/eø¿•¦ŽëÉm¬ì-ã÷…®CZ +žjsvúŽåŒª•‚5âûü‚/ÆL—Q¥¤XôÑ·ç;Ëkz)¤ ÒÒçlƒX¦O©4¢¸vT +ÁñÄ••#n „Š_‘LH¥oK¥íµ…£ÀÐWR(&Ê9æåPàÛ¡Ï ì(tÎáú*/ùE_VøüSˆ‚_¬¥Î4úí_¼Ðg”»Z²+”J°Ø%{Õ¾Áh¯Þ8D=jù¢D‘« Å.Þ«9'w½{%“Þ‚=¬Z|¤b”댔ԓ KõÈö>ÖùÓëÍãÃ> endobj +8788 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.936 654.8 249.873 664.986] +/A << /S /GoTo /D (page.160) >> +>> endobj +8793 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.087 642.844 215.023 653.031] +/A << /S /GoTo /D (page.164) >> +>> endobj +8794 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.965 630.889 244.901 641.076] +/A << /S /GoTo /D (page.161) >> +>> endobj +8795 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192 618.217 208.936 629.121] +/A << /S /GoTo /D (page.164) >> +>> endobj +8796 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.473 595.024 229.409 605.21] +/A << /S /GoTo /D (page.169) >> +>> endobj +8797 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.031 583.069 229.967 593.255] +/A << /S /GoTo /D (page.169) >> +>> endobj +8798 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.199 571.113 273.135 581.3] +/A << /S /GoTo /D (page.169) >> +>> endobj +8799 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [244.582 559.158 261.519 569.345] +/A << /S /GoTo /D (page.169) >> +>> endobj +8800 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [260.622 547.203 277.559 557.39] +/A << /S /GoTo /D (page.169) >> +>> endobj +8801 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.094 535.248 205.031 545.435] +/A << /S /GoTo /D (page.171) >> +>> endobj +8802 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.498 523.293 193.435 533.479] +/A << /S /GoTo /D (page.169) >> +>> endobj +8803 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.469 511.338 198.406 521.524] +/A << /S /GoTo /D (page.171) >> +>> endobj +8804 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.587 499.382 217.524 509.569] +/A << /S /GoTo /D (page.169) >> +>> endobj +8805 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [218.849 486.71 235.785 497.614] +/A << /S /GoTo /D (page.169) >> +>> endobj +8806 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [217.743 475.472 234.679 485.659] +/A << /S /GoTo /D (page.169) >> +>> endobj +8807 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.507 463.517 281.444 473.704] +/A << /S /GoTo /D (page.170) >> +>> endobj +8808 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.687 450.844 249.623 461.748] +/A << /S /GoTo /D (page.170) >> +>> endobj +8809 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.301 438.889 211.238 449.793] +/A << /S /GoTo /D (page.172) >> +>> endobj +8810 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.718 427.651 190.655 437.838] +/A << /S /GoTo /D (page.172) >> +>> endobj +8811 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.353 415.696 197.29 425.883] +/A << /S /GoTo /D (page.173) >> +>> endobj +8812 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.124 403.741 197.061 413.928] +/A << /S /GoTo /D (page.173) >> +>> endobj +8813 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.594 391.069 194.53 401.973] +/A << /S /GoTo /D (page.173) >> +>> endobj +8814 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.046 379.113 193.982 390.017] +/A << /S /GoTo /D (page.173) >> +>> endobj +8815 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.71 367.876 195.646 378.062] +/A << /S /GoTo /D (page.170) >> +>> endobj +8816 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.133 355.203 200.069 366.107] +/A << /S /GoTo /D (page.173) >> +>> endobj +8817 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.653 343.248 210.59 354.152] +/A << /S /GoTo /D (page.173) >> +>> endobj +8818 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.152 331.293 195.088 342.197] +/A << /S /GoTo /D (page.173) >> +>> endobj +8819 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.604 319.338 194.54 330.241] +/A << /S /GoTo /D (page.173) >> +>> endobj +8820 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.124 307.382 205.061 318.286] +/A << /S /GoTo /D (page.174) >> +>> endobj +8821 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.142 296.145 195.078 306.331] +/A << /S /GoTo /D (page.174) >> +>> endobj +8822 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.017 284.189 198.954 294.376] +/A << /S /GoTo /D (page.174) >> +>> endobj +8823 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.538 272.234 209.474 282.421] +/A << /S /GoTo /D (page.174) >> +>> endobj +8824 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.469 260.279 198.406 270.466] +/A << /S /GoTo /D (page.174) >> +>> endobj +8825 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.276 247.607 191.213 258.51] +/A << /S /GoTo /D (page.170) >> +>> endobj +8826 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.998 235.651 203.935 246.555] +/A << /S /GoTo /D (page.170) >> +>> endobj +8827 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.728 223.696 190.665 234.6] +/A << /S /GoTo /D (page.174) >> +>> endobj +8828 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.815 211.741 196.752 222.645] +/A << /S /GoTo /D (page.174) >> +>> endobj +8829 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.336 199.786 207.272 210.69] +/A << /S /GoTo /D (page.175) >> +>> endobj +8830 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.834 187.831 191.771 198.735] +/A << /S /GoTo /D (page.171) >> +>> endobj +8831 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.556 175.876 204.493 186.779] +/A << /S /GoTo /D (page.171) >> +>> endobj +8832 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.286 163.92 191.223 174.824] +/A << /S /GoTo /D (page.175) >> +>> endobj +8833 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.807 151.965 201.743 162.869] +/A << /S /GoTo /D (page.175) >> +>> endobj +8834 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.7 140.727 195.636 150.914] +/A << /S /GoTo /D (page.175) >> +>> endobj +8835 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.22 128.772 206.157 138.959] +/A << /S /GoTo /D (page.175) >> +>> endobj +8836 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.672 116.1 205.609 127.004] +/A << /S /GoTo /D (page.175) >> +>> endobj +8837 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.029 654.082 392.966 664.986] +/A << /S /GoTo /D (page.175) >> +>> endobj +8838 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.528 642.127 377.464 653.031] +/A << /S /GoTo /D (page.175) >> +>> endobj +8839 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.048 630.172 387.985 641.076] +/A << /S /GoTo /D (page.175) >> +>> endobj +8840 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.412 618.934 376.348 629.121] +/A << /S /GoTo /D (page.175) >> +>> endobj +8841 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.932 606.979 386.869 617.166] +/A << /S /GoTo /D (page.176) >> +>> endobj +8842 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.2 595.024 374.137 605.21] +/A << /S /GoTo /D (page.171) >> +>> endobj +8843 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.893 583.069 370.829 593.255] +/A << /S /GoTo /D (page.171) >> +>> endobj +8844 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.874 571.113 375.81 581.3] +/A << /S /GoTo /D (page.171) >> +>> endobj +8845 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.076 558.441 378.012 569.345] +/A << /S /GoTo /D (page.176) >> +>> endobj +8846 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.951 546.486 381.888 557.39] +/A << /S /GoTo /D (page.176) >> +>> endobj +8847 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [375.472 534.531 392.408 545.435] +/A << /S /GoTo /D (page.179) >> +>> endobj +8848 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.835 523.293 380.772 533.479] +/A << /S /GoTo /D (page.179) >> +>> endobj +8849 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.356 511.338 391.292 521.524] +/A << /S /GoTo /D (page.181) >> +>> endobj +8850 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.634 498.665 378.57 509.569] +/A << /S /GoTo /D (page.182) >> +>> endobj +8851 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.518 487.427 377.454 497.614] +/A << /S /GoTo /D (page.182) >> +>> endobj +8852 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [370.49 474.755 387.427 485.659] +/A << /S /GoTo /D (page.182) >> +>> endobj +8853 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.011 462.8 397.947 473.704] +/A << /S /GoTo /D (page.182) >> +>> endobj +8854 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.509 450.844 382.445 461.748] +/A << /S /GoTo /D (page.182) >> +>> endobj +8855 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.029 438.889 392.966 449.793] +/A << /S /GoTo /D (page.182) >> +>> endobj +8856 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.387 414.979 412.323 425.883] +/A << /S /GoTo /D (page.185) >> +>> endobj +8857 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [414.754 403.024 431.691 413.928] +/A << /S /GoTo /D (page.193) >> +>> endobj +8858 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.523 391.069 434.46 401.973] +/A << /S /GoTo /D (page.193) >> +>> endobj +8859 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.622 379.113 421.558 390.017] +/A << /S /GoTo /D (page.194) >> +>> endobj +8860 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.989 367.876 371.925 378.062] +/A << /S /GoTo /D (page.185) >> +>> endobj +8861 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [347.796 355.92 364.732 366.107] +/A << /S /GoTo /D (page.185) >> +>> endobj +8862 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.007 343.965 366.944 354.152] +/A << /S /GoTo /D (page.185) >> +>> endobj +8863 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.459 332.01 366.396 342.197] +/A << /S /GoTo /D (page.185) >> +>> endobj +8864 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.459 320.055 366.396 330.241] +/A << /S /GoTo /D (page.186) >> +>> endobj +8865 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.941 308.1 381.878 318.286] +/A << /S /GoTo /D (page.186) >> +>> endobj +8866 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.306 296.145 375.242 306.331] +/A << /S /GoTo /D (page.186) >> +>> endobj +8867 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [346.999 284.189 363.935 294.376] +/A << /S /GoTo /D (page.186) >> +>> endobj +8868 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [445.917 272.234 462.854 282.421] +/A << /S /GoTo /D (page.184) >> +>> endobj +8869 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.645 260.279 447.581 270.466] +/A << /S /GoTo /D (page.184) >> +>> endobj +8870 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [434.53 248.324 451.466 258.51] +/A << /S /GoTo /D (page.184) >> +>> endobj +8871 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.633 236.369 378.57 246.555] +/A << /S /GoTo /D (page.187) >> +>> endobj +8872 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.528 224.414 377.464 234.6] +/A << /S /GoTo /D (page.187) >> +>> endobj +8873 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.31 212.458 366.246 222.645] +/A << /S /GoTo /D (page.187) >> +>> endobj +8874 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.997 200.503 366.934 210.69] +/A << /S /GoTo /D (page.188) >> +>> endobj +8875 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.459 188.548 366.396 198.735] +/A << /S /GoTo /D (page.188) >> +>> endobj +8876 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.565 176.593 367.502 186.779] +/A << /S /GoTo /D (page.188) >> +>> endobj +8877 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.768 164.638 366.705 174.824] +/A << /S /GoTo /D (page.188) >> +>> endobj +8878 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.459 152.682 366.396 162.869] +/A << /S /GoTo /D (page.188) >> +>> endobj +8879 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.633 140.727 378.57 150.914] +/A << /S /GoTo /D (page.189) >> +>> endobj +8880 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.441 128.055 371.377 138.959] +/A << /S /GoTo /D (page.189) >> +>> endobj +8881 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.219 116.817 369.156 127.004] +/A << /S /GoTo /D (page.189) >> +>> endobj +8886 0 obj << +/D [8884 0 R /XYZ 132.768 705.06 null] +>> endobj +8883 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +8971 0 obj << +/Length 1006 +/Filter /FlateDecode +>> +stream +xÚµ™mo¢JÇßû)æ%$Wî<8<ì;»ÚÆfµ¹êínÒl&Ôš"xyh·ßþ‚©º•36i´ÃïüÏ9Ìá0`´FÝô®–½¿¯©‰Ã1å°|D„1Ã2md:Ü0‚–>zÐ&³Ñø‡Þ§ŽeÙ³Mýçò¶7^öþë‰ÁˆF säm{?1òå?o6˜c£×ýÔ-b9•'†hÑû§‡O´àc-œI drË Œ—ZæÃÙHL‡?þÚ‹(­'ëJÆü¦‡ú”cؼšPÒåGŸHm¼Â$nä‹‚8„Äۖ¡»iG.ÅÛæN™&pÃ0öZz•j@ +ñ(Y’Å~° HShm~ò0‹Ý¦ŒJI®‚`§ˆ>‘+S.Ì«S¬½$Bº¶‰ÖÅ è£iâúzÚ«¿ºuʵǴ +œ³6LcN%gl=o§¬½u@zJ:€lw@]² ük +1ß!±N¸öR|í%%*a¶!Jd-!rÅyn¨äK $‡¦ ó»å€j¬‰J-ÌQˆ/ QZc””÷,ùù®½”Î5Ŧ(†&QBÌkÒ©­MŠ)”¬H%ÎÖÓ\Ë1E1[0I%] ¢ìVÉs{ŠBÁ9§œˆX¦a3 qfŽMßÙAÑ)¼€ø$2 v@ª É’¦ó¨†ÇáfúY$í1ùîÓÚ^¸ì4’tG—b1Ô ãÚý\|›\}#}€5ù!Úr, 9fý½¾XÎ'³qÙÈ^/?MÙo&û'³.žoïæ¢kw¦“Ù ÎÇ÷“ÅänÖ9ø~<ßsûïÃYpÁŒ ; rp0ÿi·j¯ñ×â>àfÞ“_~ê{õ3áoRwB}7µêû‚D’EjKØ÷ÑR'¶v'ÅÓES?‡ñY0‰ª‘ääiw°ÎH¬…ªó,:SÅq‡Á2;dÙŸ&Õ?÷åRÜŸ—§î|®&õ]XEÝ%ñº%•J*±Kê•.ëàp4YÌ«{²—]¬U‡Â¶‰² ‘-Aí4QæÔ…Ë<– s®ý;e&¾]Ôg›PÈÚ´rsh¿’Ú…d­6™Ø¤Â 7=OÁ6ÈäêF¥ÞdåUgÆ€bìlßê㾬`‰0öž…tdïÈ…úß‘Â åe¹YÐ |'‹ùÌÙ˜|?|­ã؆Å>óRçðbÉ4‹ÙÇ/–lÇ`f¥þ&ˆ¤è,ðË5/ûåý¸|Ê˃Qà•ƒr ø e_ˆ­6)ª£ývlœ”_ÜýW¢3K뇛UEX½UÈø×Û:ˆN\—.ÿwj· +endstream +endobj +8970 0 obj << +/Type /Page +/Contents 8971 0 R +/Resources 8969 0 R +/MediaBox [0 0 612 792] +/Parent 8509 0 R +/Annots [ 8882 0 R 8887 0 R 8888 0 R 8889 0 R 8890 0 R 8891 0 R 8892 0 R 8893 0 R 8894 0 R 8895 0 R 8896 0 R 8897 0 R 8898 0 R 8899 0 R 8900 0 R 8901 0 R 8902 0 R 8903 0 R 8904 0 R 8905 0 R 8906 0 R 8907 0 R 8908 0 R 8909 0 R 8910 0 R 8911 0 R 8912 0 R 8913 0 R 8914 0 R 8915 0 R 8916 0 R 8917 0 R 8918 0 R 8919 0 R 8920 0 R 8921 0 R 8922 0 R 8923 0 R 8924 0 R 8925 0 R 8926 0 R 8927 0 R 8928 0 R 8929 0 R 8930 0 R 8931 0 R 8932 0 R 8933 0 R 8934 0 R 8935 0 R 8936 0 R 8937 0 R 8938 0 R 8939 0 R 8940 0 R 8941 0 R 8942 0 R 8943 0 R 8944 0 R 8945 0 R 8946 0 R 8947 0 R 8948 0 R 8949 0 R 8950 0 R 8951 0 R 8952 0 R 8953 0 R 8954 0 R 8955 0 R 8956 0 R 8957 0 R 8958 0 R 8959 0 R 8960 0 R 8961 0 R 8962 0 R 8963 0 R 8964 0 R 8965 0 R 8966 0 R 8967 0 R ] +>> endobj +8882 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [214.127 654.8 231.063 664.986] +/A << /S /GoTo /D (page.185) >> +>> endobj +8887 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.681 642.844 200.618 653.031] +/A << /S /GoTo /D (page.190) >> +>> endobj +8888 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.114 630.889 205.051 641.076] +/A << /S /GoTo /D (page.190) >> +>> endobj +8889 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [230.176 618.934 247.113 629.121] +/A << /S /GoTo /D (page.185) >> +>> endobj +8890 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.413 606.979 213.35 617.166] +/A << /S /GoTo /D (page.190) >> +>> endobj +8891 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.787 595.024 201.723 605.21] +/A << /S /GoTo /D (page.190) >> +>> endobj +8892 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 583.069 196.194 593.255] +/A << /S /GoTo /D (page.191) >> +>> endobj +8893 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.99 571.113 208.926 581.3] +/A << /S /GoTo /D (page.191) >> +>> endobj +8894 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.373 559.158 197.31 569.345] +/A << /S /GoTo /D (page.191) >> +>> endobj +8895 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [178.161 547.203 195.098 557.39] +/A << /S /GoTo /D (page.191) >> +>> endobj +8896 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.143 535.248 200.079 545.435] +/A << /S /GoTo /D (page.192) >> +>> endobj +8897 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.604 523.293 194.54 533.479] +/A << /S /GoTo /D (page.192) >> +>> endobj +8898 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.834 511.338 191.771 521.524] +/A << /S /GoTo /D (page.193) >> +>> endobj +8899 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.278 487.427 196.214 497.614] +/A << /S /GoTo /D (page.195) >> +>> endobj +8900 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.94 475.472 184.877 485.659] +/A << /S /GoTo /D (page.195) >> +>> endobj +8901 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.71 463.517 187.646 473.704] +/A << /S /GoTo /D (page.196) >> +>> endobj +8902 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.479 451.562 190.416 461.748] +/A << /S /GoTo /D (page.196) >> +>> endobj +8903 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.313 438.889 213.25 449.793] +/A << /S /GoTo /D (page.196) >> +>> endobj +8904 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [190.326 427.651 207.262 437.838] +/A << /S /GoTo /D (page.196) >> +>> endobj +8905 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.759 414.979 211.696 425.883] +/A << /S /GoTo /D (page.196) >> +>> endobj +8906 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.89 403.024 208.827 413.928] +/A << /S /GoTo /D (page.197) >> +>> endobj +8907 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.529 391.786 214.465 401.973] +/A << /S /GoTo /D (page.197) >> +>> endobj +8908 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [199.442 379.831 216.378 390.017] +/A << /S /GoTo /D (page.197) >> +>> endobj +8909 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.643 367.876 210.58 378.062] +/A << /S /GoTo /D (page.198) >> +>> endobj +8910 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.672 355.92 205.608 366.107] +/A << /S /GoTo /D (page.198) >> +>> endobj +8911 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [201.942 343.248 218.878 354.152] +/A << /S /GoTo /D (page.198) >> +>> endobj +8912 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.749 332.01 211.685 342.197] +/A << /S /GoTo /D (page.198) >> +>> endobj +8913 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.257 320.055 196.194 330.241] +/A << /S /GoTo /D (page.199) >> +>> endobj +8914 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.363 308.1 197.3 318.286] +/A << /S /GoTo /D (page.199) >> +>> endobj +8915 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.095 296.145 210.032 306.331] +/A << /S /GoTo /D (page.199) >> +>> endobj +8916 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.797 283.472 201.733 294.376] +/A << /S /GoTo /D (page.199) >> +>> endobj +8917 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.927 271.517 198.864 282.421] +/A << /S /GoTo /D (page.200) >> +>> endobj +8918 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.902 259.562 202.839 270.466] +/A << /S /GoTo /D (page.200) >> +>> endobj +8919 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.585 247.607 199.522 258.51] +/A << /S /GoTo /D (page.200) >> +>> endobj +8920 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.027 236.369 198.963 246.555] +/A << /S /GoTo /D (page.201) >> +>> endobj +8921 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.697 223.696 201.633 234.6] +/A << /S /GoTo /D (page.201) >> +>> endobj +8922 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.815 212.458 196.752 222.645] +/A << /S /GoTo /D (page.201) >> +>> endobj +8923 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.821 200.503 197.758 210.69] +/A << /S /GoTo /D (page.201) >> +>> endobj +8924 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.923 187.831 223.86 198.735] +/A << /S /GoTo /D (page.202) >> +>> endobj +8925 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.239 176.593 201.175 186.779] +/A << /S /GoTo /D (page.202) >> +>> endobj +8926 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.778 163.92 206.714 174.824] +/A << /S /GoTo /D (page.202) >> +>> endobj +8927 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [186.909 151.965 203.845 162.869] +/A << /S /GoTo /D (page.202) >> +>> endobj +8928 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [184.797 140.727 201.733 150.914] +/A << /S /GoTo /D (page.203) >> +>> endobj +8929 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.903 128.055 202.839 138.959] +/A << /S /GoTo /D (page.203) >> +>> endobj +8930 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.681 116.817 200.617 127.004] +/A << /S /GoTo /D (page.203) >> +>> endobj +8931 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.951 654.8 373.888 664.986] +/A << /S /GoTo /D (page.204) >> +>> endobj +8932 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.758 642.127 374.694 653.031] +/A << /S /GoTo /D (page.204) >> +>> endobj +8933 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.316 630.172 375.252 641.076] +/A << /S /GoTo /D (page.204) >> +>> endobj +8934 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.44 618.934 371.377 629.121] +/A << /S /GoTo /D (page.204) >> +>> endobj +8935 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.21 606.979 374.147 617.166] +/A << /S /GoTo /D (page.205) >> +>> endobj +8936 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.509 595.024 382.445 605.21] +/A << /S /GoTo /D (page.205) >> +>> endobj +8937 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.758 582.351 374.695 593.255] +/A << /S /GoTo /D (page.205) >> +>> endobj +8938 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.859 559.158 443.795 569.345] +/A << /S /GoTo /D (page.268) >> +>> endobj +8939 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.46 536.588 366.396 545.435] +/A << /S /GoTo /D (page.268) >> +>> endobj +8940 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.547 523.293 457.484 533.479] +/A << /S /GoTo /D (page.268) >> +>> endobj +8941 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [439.989 511.338 456.926 521.524] +/A << /S /GoTo /D (page.268) >> +>> endobj +8942 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [453.27 499.382 470.206 509.569] +/A << /S /GoTo /D (page.268) >> +>> endobj +8943 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [400.378 475.472 417.315 485.659] +/A << /S /GoTo /D (page.269) >> +>> endobj +8944 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [449.952 463.517 466.889 473.704] +/A << /S /GoTo /D (page.268) >> +>> endobj +8945 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [382.664 439.607 399.601 449.793] +/A << /S /GoTo /D (page.270) >> +>> endobj +8946 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [380.443 427.651 397.379 437.838] +/A << /S /GoTo /D (page.270) >> +>> endobj +8947 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.25 415.696 390.186 425.883] +/A << /S /GoTo /D (page.271) >> +>> endobj +8948 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.535 403.741 415.472 413.928] +/A << /S /GoTo /D (page.271) >> +>> endobj +8949 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.554 391.786 410.49 401.973] +/A << /S /GoTo /D (page.271) >> +>> endobj +8950 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.716 379.831 396.652 390.017] +/A << /S /GoTo /D (page.272) >> +>> endobj +8951 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.535 367.876 415.472 378.062] +/A << /S /GoTo /D (page.272) >> +>> endobj +8952 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.716 355.92 396.652 366.107] +/A << /S /GoTo /D (page.272) >> +>> endobj +8953 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.554 343.965 410.49 354.152] +/A << /S /GoTo /D (page.272) >> +>> endobj +8954 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.716 332.01 396.652 342.197] +/A << /S /GoTo /D (page.272) >> +>> endobj +8955 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.535 320.055 415.472 330.241] +/A << /S /GoTo /D (page.272) >> +>> endobj +8956 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.554 308.1 410.49 318.286] +/A << /S /GoTo /D (page.272) >> +>> endobj +8957 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.716 296.145 396.652 306.331] +/A << /S /GoTo /D (page.272) >> +>> endobj +8958 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.147 283.472 391.083 294.376] +/A << /S /GoTo /D (page.113) >> +>> endobj +8959 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.041 271.517 389.977 282.421] +/A << /S /GoTo /D (page.113) >> +>> endobj +8960 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.206 237.644 407.143 248.548] +/A << /S /GoTo /D (page.239) >> +>> endobj +8961 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.222 214.451 400.159 224.638] +/A << /S /GoTo /D (page.284) >> +>> endobj +8962 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.53 190.541 379.467 200.727] +/A << /S /GoTo /D (page.265) >> +>> endobj +8963 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.53 166.63 379.467 176.817] +/A << /S /GoTo /D (page.265) >> +>> endobj +8964 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [339.776 154.675 356.712 164.862] +/A << /S /GoTo /D (page.336) >> +>> endobj +8965 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [419.755 142.72 436.692 152.907] +/A << /S /GoTo /D (page.338) >> +>> endobj +8966 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [459.037 130.765 475.974 140.951] +/A << /S /GoTo /D (page.338) >> +>> endobj +8967 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [450.709 118.092 467.645 128.996] +/A << /S /GoTo /D (page.338) >> +>> endobj +8972 0 obj << +/D [8970 0 R /XYZ 132.768 705.06 null] +>> endobj +8969 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9034 0 obj << +/Length 968 +/Filter /FlateDecode +>> +stream +xÚÅY]s›8}çWèfÖ¬„øR߶I6ÓÎN3Ûúag²F€‚5åk%¨ã_NÖÎÚFجûbÉ œsî¹èê"Cî÷Kã×ß›øjX>„±ø!ð‰gûe +ÍŸnïþ² ‚ÐÄa`}]~4î–Æ?R0 ÛM ’Âxü +Aªþù@“¬ûK €]u)ênÌÁãOîi»Z<¬4¸À÷ÛÁÞ %Šâªj¢šf,b‚Jõi!Ï|nX™²ô—^Ú Id[qŸï ð¸p±Ÿ!à©Uå©W‘±™Ü'ºþ-óD~ñŒ¾Ocêà,†#xó|O¤ï+ÞˆýƒÄ?#쮂Ær+7óP£)ÔCñ¾±xFǵÖ`A›ÕXx®§Ã–«ªgZÇR^Q:õ<Éù(ÛëBõ­(»ÖT%KªˆìÍëÊrm•¼*Ùj´ÖbóuØD‚üñçÅÅ'ß‘“fSßUÔ¾——m1¦× Ort(õŠ^Ž"ÎGQÈÉ.㜖ßÎEyÕ’”È/FIyÆ›‹Q2AëÕÅ(ùKº©ªš^œ§º-“˽‘5MØÅ(m]Ïà˳Vºñé£È¦ÒZ£(ÚéƧ0›Jˬó²Ù£³JÚnË–²œn,_g3u݃ðÁ#}Úžr ÿò£‚j¦îþ¨ûÛ˜ïYÉD×ÑY½¤ªÆåª&·,&î0 øÎÁïPhmmàvöÔ¥³ÃÚ}ù.,˜ Õ—nâͲzÞd¬Ü ]…ü¸×õ +endstream +endobj +9033 0 obj << +/Type /Page +/Contents 9034 0 R +/Resources 9032 0 R +/MediaBox [0 0 612 792] +/Parent 9036 0 R +/Annots [ 8968 0 R 8973 0 R 8974 0 R 8975 0 R 8976 0 R 8977 0 R 8978 0 R 8979 0 R 8980 0 R 8981 0 R 8982 0 R 8983 0 R 8984 0 R 8985 0 R 8986 0 R 8987 0 R 8988 0 R 8989 0 R 8990 0 R 8991 0 R 8992 0 R 8993 0 R 8994 0 R 8995 0 R 8996 0 R 8997 0 R 8998 0 R 8999 0 R 9000 0 R 9001 0 R 9002 0 R 9003 0 R 9004 0 R 9005 0 R 9006 0 R 9007 0 R 9008 0 R 9009 0 R 9010 0 R 9011 0 R 9012 0 R 9013 0 R 9014 0 R 9015 0 R 9016 0 R 9017 0 R 9018 0 R 9019 0 R 9020 0 R 9021 0 R 9022 0 R 9023 0 R 9024 0 R 9025 0 R 9026 0 R 9027 0 R 9028 0 R 9029 0 R 9030 0 R ] +>> endobj +8968 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.387 654.082 292.323 664.986] +/A << /S /GoTo /D (page.339) >> +>> endobj +8973 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.795 642.127 284.731 653.031] +/A << /S /GoTo /D (page.339) >> +>> endobj +8974 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [264.487 630.172 281.424 641.076] +/A << /S /GoTo /D (page.339) >> +>> endobj +8975 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [266.002 618.217 282.938 629.121] +/A << /S /GoTo /D (page.340) >> +>> endobj +8976 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [258.41 606.262 275.347 617.166] +/A << /S /GoTo /D (page.340) >> +>> endobj +8977 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.882 594.306 290.818 605.21] +/A << /S /GoTo /D (page.341) >> +>> endobj +8978 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [275.396 582.351 292.333 593.255] +/A << /S /GoTo /D (page.341) >> +>> endobj +8979 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [267.805 570.396 284.741 581.3] +/A << /S /GoTo /D (page.341) >> +>> endobj +8980 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.023 559.158 255.96 569.345] +/A << /S /GoTo /D (page.342) >> +>> endobj +8981 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [278.305 547.203 295.242 557.39] +/A << /S /GoTo /D (page.342) >> +>> endobj +8982 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 523.293 209.833 533.479] +/A << /S /GoTo /D (page.208) >> +>> endobj +8983 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 499.382 209.833 509.569] +/A << /S /GoTo /D (page.208) >> +>> endobj +8984 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 475.472 209.833 485.659] +/A << /S /GoTo /D (page.208) >> +>> endobj +8985 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 451.562 209.833 461.748] +/A << /S /GoTo /D (page.209) >> +>> endobj +8986 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 427.651 209.833 437.838] +/A << /S /GoTo /D (page.209) >> +>> endobj +8987 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 403.741 209.833 413.928] +/A << /S /GoTo /D (page.209) >> +>> endobj +8988 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 379.831 209.833 390.017] +/A << /S /GoTo /D (page.210) >> +>> endobj +8989 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 355.92 209.833 366.107] +/A << /S /GoTo /D (page.210) >> +>> endobj +8990 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 332.01 209.833 342.197] +/A << /S /GoTo /D (page.210) >> +>> endobj +8991 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 308.1 209.833 318.286] +/A << /S /GoTo /D (page.210) >> +>> endobj +8992 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 284.189 209.833 294.376] +/A << /S /GoTo /D (page.211) >> +>> endobj +8993 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 260.279 209.833 270.466] +/A << /S /GoTo /D (page.211) >> +>> endobj +8994 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 236.369 209.833 246.555] +/A << /S /GoTo /D (page.211) >> +>> endobj +8995 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 212.458 209.833 222.645] +/A << /S /GoTo /D (page.211) >> +>> endobj +8996 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 188.548 209.833 198.735] +/A << /S /GoTo /D (page.212) >> +>> endobj +8997 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 164.638 209.833 174.824] +/A << /S /GoTo /D (page.212) >> +>> endobj +8998 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 140.727 209.833 150.914] +/A << /S /GoTo /D (page.212) >> +>> endobj +8999 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.896 116.817 209.833 127.004] +/A << /S /GoTo /D (page.212) >> +>> endobj +9000 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.733 642.844 386.67 653.031] +/A << /S /GoTo /D (page.212) >> +>> endobj +9001 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 618.934 391.103 629.121] +/A << /S /GoTo /D (page.186) >> +>> endobj +9002 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 585.061 391.103 595.248] +/A << /S /GoTo /D (page.186) >> +>> endobj +9003 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.233 560.433 421.17 571.337] +/A << /S /GoTo /D (page.291) >> +>> endobj +9004 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 537.24 388.881 547.427] +/A << /S /GoTo /D (page.145) >> +>> endobj +9005 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 513.33 388.333 523.517] +/A << /S /GoTo /D (page.171) >> +>> endobj +9006 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.206 488.702 407.143 499.606] +/A << /S /GoTo /D (page.239) >> +>> endobj +9007 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.087 464.792 383.024 475.696] +/A << /S /GoTo /D (page.361) >> +>> endobj +9008 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.46 442.819 366.396 451.786] +/A << /S /GoTo /D (page.294) >> +>> endobj +9009 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 417.689 388.881 427.875] +/A << /S /GoTo /D (page.145) >> +>> endobj +9010 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 393.778 388.881 403.965] +/A << /S /GoTo /D (page.145) >> +>> endobj +9011 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 369.868 388.881 380.055] +/A << /S /GoTo /D (page.146) >> +>> endobj +9012 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.189 357.913 361.126 368.1] +/A << /S /GoTo /D (page.343) >> +>> endobj +9013 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.067 334.003 383.003 344.189] +/A << /S /GoTo /D (page.128) >> +>> endobj +9014 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.739 321.33 379.676 332.234] +/A << /S /GoTo /D (page.128) >> +>> endobj +9015 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.422 310.092 376.358 320.279] +/A << /S /GoTo /D (page.129) >> +>> endobj +9016 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.297 298.137 380.234 308.324] +/A << /S /GoTo /D (page.129) >> +>> endobj +9017 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.422 286.182 376.358 296.369] +/A << /S /GoTo /D (page.129) >> +>> endobj +9018 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.432 273.509 376.368 284.413] +/A << /S /GoTo /D (page.129) >> +>> endobj +9019 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.845 261.554 380.782 272.458] +/A << /S /GoTo /D (page.129) >> +>> endobj +9020 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.596 250.316 380.533 260.503] +/A << /S /GoTo /D (page.129) >> +>> endobj +9021 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.98 237.644 376.916 248.548] +/A << /S /GoTo /D (page.129) >> +>> endobj +9022 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.297 225.689 380.234 236.593] +/A << /S /GoTo /D (page.129) >> +>> endobj +9023 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.287 213.734 380.224 224.638] +/A << /S /GoTo /D (page.129) >> +>> endobj +9024 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [363.845 201.778 380.782 212.682] +/A << /S /GoTo /D (page.129) >> +>> endobj +9025 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.413 189.823 381.349 200.727] +/A << /S /GoTo /D (page.130) >> +>> endobj +9026 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.527 178.585 377.464 188.772] +/A << /S /GoTo /D (page.130) >> +>> endobj +9027 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.702 166.63 381.638 176.817] +/A << /S /GoTo /D (page.130) >> +>> endobj +9028 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.951 153.958 381.888 164.862] +/A << /S /GoTo /D (page.130) >> +>> endobj +9029 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.641 142.003 360.578 152.907] +/A << /S /GoTo /D (page.343) >> +>> endobj +9030 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [342.994 120.085 359.93 130.989] +/A << /S /GoTo /D (page.344) >> +>> endobj +9035 0 obj << +/D [9033 0 R /XYZ 132.768 705.06 null] +>> endobj +9032 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9092 0 obj << +/Length 989 +/Filter /FlateDecode +>> +stream +xÚÅX[s›8}çWð3k*!‹KßÜ5ñ¤S'®MÚí¤†‹ì°Ë­€›øßW ÚÚ^ba›8/Œ8ç|éÓ' ®D N„w¶ðæJÕDS15z±—"DHÑ5CÔL¬h&í@¼—®oÆÖ?ò@5uÝaÈßì÷‚e ßHa€·>ƒŠ °èÇÂý7 ôå{(È4ÄÇzh,¢! +«#q!|ÀŽЦ늊0ÓÈÝ8ž[„¾òðW­„IÈW–ùDï*›Œ‚þ ˆ¬1‰S¹™åé¿Ä/  j¢ƒ€Érâ»% œ°$qQ !µˆ´3Ð÷B.º™Xü8Ÿ^_÷}\!Þ 7ž·žÜ8‹ˆ<ÐŒªjÒ6Þê¦T>4ÿ•,…aNØ«:W–uqõÙÜF¦b`¸+ï+ÀÀþ|M/'QÝ÷oË¥°ìÒ“wL¸3ã®±[òâ‡Ú3„õMg€Ì«^ñ²ŒÛ&^UíÇHÆXúÈÁÃÆÁöpéGiAú™pz—ü_„u‡=žéÚñŠ”Î:pK÷‚ËÌoòâȯÆÖ'gaÙw3‡öjÖhÚS¸Á1^§†¯3§ê×Üøü{Ž¯€ÓŒ$=Q«'P+>wÑLJçjÆ—[b–$]^Ò[´0¦ùÎÀÖƒlÓPttÌ1ö¯£tM1udl_¦‚´†~B’W;vìœ&ìj?¬Ù͘øìfÈ.¼UÑ[h°'€ænY…œÚQ?¸uüséÒ€·ÁÛ4éÓfÅ2rÛäŸÓÌ£¡ +endstream +endobj +9091 0 obj << +/Type /Page +/Contents 9092 0 R +/Resources 9090 0 R +/MediaBox [0 0 612 792] +/Parent 9036 0 R +/Annots [ 9031 0 R 9037 0 R 9038 0 R 9039 0 R 9040 0 R 9041 0 R 9042 0 R 9043 0 R 9044 0 R 9045 0 R 9046 0 R 9047 0 R 9048 0 R 9049 0 R 9050 0 R 9051 0 R 9052 0 R 9053 0 R 9054 0 R 9055 0 R 9056 0 R 9057 0 R 9058 0 R 9059 0 R 9060 0 R 9061 0 R 9062 0 R 9063 0 R 9064 0 R 9065 0 R 9066 0 R 9067 0 R 9068 0 R 9069 0 R 9070 0 R 9071 0 R 9072 0 R 9073 0 R 9074 0 R 9075 0 R 9076 0 R 9077 0 R 9078 0 R 9079 0 R 9080 0 R 9081 0 R 9082 0 R 9083 0 R 9084 0 R 9085 0 R 9086 0 R 9087 0 R 9088 0 R ] +>> endobj +9031 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.258 654.082 209.195 664.986] +/A << /S /GoTo /D (page.344) >> +>> endobj +9037 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.134 642.127 213.07 653.031] +/A << /S /GoTo /D (page.293) >> +>> endobj +9038 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.853 618.934 186.789 629.121] +/A << /S /GoTo /D (page.291) >> +>> endobj +9039 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [236.104 606.979 253.04 617.166] +/A << /S /GoTo /D (page.291) >> +>> endobj +9040 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.411 595.024 187.347 605.21] +/A << /S /GoTo /D (page.291) >> +>> endobj +9041 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.411 582.351 187.347 593.255] +/A << /S /GoTo /D (page.291) >> +>> endobj +9042 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [212.074 571.113 229.011 581.3] +/A << /S /GoTo /D (page.291) >> +>> endobj +9043 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.392 559.158 192.329 569.345] +/A << /S /GoTo /D (page.292) >> +>> endobj +9044 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.392 546.486 192.329 557.39] +/A << /S /GoTo /D (page.292) >> +>> endobj +9045 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.305 535.248 186.241 545.435] +/A << /S /GoTo /D (page.292) >> +>> endobj +9046 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [225.195 523.293 242.131 533.479] +/A << /S /GoTo /D (page.293) >> +>> endobj +9047 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.211 510.62 211.147 521.524] +/A << /S /GoTo /D (page.303) >> +>> endobj +9048 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 487.427 214.266 497.614] +/A << /S /GoTo /D (page.186) >> +>> endobj +9049 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.987 475.472 174.924 485.659] +/A << /S /GoTo /D (page.334) >> +>> endobj +9050 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.392 462.8 192.329 473.704] +/A << /S /GoTo /D (page.334) >> +>> endobj +9051 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [173.17 451.562 190.107 461.748] +/A << /S /GoTo /D (page.334) >> +>> endobj +9052 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 427.651 214.266 437.838] +/A << /S /GoTo /D (page.184) >> +>> endobj +9053 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 403.741 214.266 413.928] +/A << /S /GoTo /D (page.184) >> +>> endobj +9054 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 379.831 214.266 390.017] +/A << /S /GoTo /D (page.184) >> +>> endobj +9055 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 355.92 214.266 366.107] +/A << /S /GoTo /D (page.187) >> +>> endobj +9056 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 332.01 214.266 342.197] +/A << /S /GoTo /D (page.187) >> +>> endobj +9057 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [196.204 298.137 213.141 308.324] +/A << /S /GoTo /D (page.131) >> +>> endobj +9058 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.061 273.509 221.997 284.413] +/A << /S /GoTo /D (page.214) >> +>> endobj +9059 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.061 249.599 221.997 260.503] +/A << /S /GoTo /D (page.214) >> +>> endobj +9060 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.061 225.689 221.997 236.593] +/A << /S /GoTo /D (page.214) >> +>> endobj +9061 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.061 201.778 221.997 212.682] +/A << /S /GoTo /D (page.215) >> +>> endobj +9062 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.061 177.868 221.997 188.772] +/A << /S /GoTo /D (page.215) >> +>> endobj +9063 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.061 153.958 221.997 164.862] +/A << /S /GoTo /D (page.215) >> +>> endobj +9064 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.061 130.047 221.997 140.951] +/A << /S /GoTo /D (page.215) >> +>> endobj +9065 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.898 654.082 398.834 664.986] +/A << /S /GoTo /D (page.215) >> +>> endobj +9066 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.898 630.172 398.834 641.076] +/A << /S /GoTo /D (page.215) >> +>> endobj +9067 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.898 606.262 398.834 617.166] +/A << /S /GoTo /D (page.215) >> +>> endobj +9068 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [381.898 582.351 398.834 593.255] +/A << /S /GoTo /D (page.215) >> +>> endobj +9069 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.206 558.441 407.143 569.345] +/A << /S /GoTo /D (page.239) >> +>> endobj +9070 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.233 534.531 421.17 545.435] +/A << /S /GoTo /D (page.291) >> +>> endobj +9071 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 511.338 388.333 521.524] +/A << /S /GoTo /D (page.169) >> +>> endobj +9072 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [373.041 487.427 389.977 497.614] +/A << /S /GoTo /D (page.131) >> +>> endobj +9073 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.083 475.472 360.02 485.659] +/A << /S /GoTo /D (page.344) >> +>> endobj +9074 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.885 451.218 396.822 461.748] +/A << /S /GoTo /D (page.329) >> +>> endobj +9075 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 427.651 391.103 437.838] +/A << /S /GoTo /D (page.187) >> +>> endobj +9076 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 403.741 388.881 413.928] +/A << /S /GoTo /D (page.146) >> +>> endobj +9077 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 369.868 388.881 380.055] +/A << /S /GoTo /D (page.146) >> +>> endobj +9078 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [333.23 357.569 345.185 368.1] +/A << /S /GoTo /D (page.58) >> +>> endobj +9079 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 334.003 388.333 344.189] +/A << /S /GoTo /D (page.171) >> +>> endobj +9080 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 310.092 388.333 320.279] +/A << /S /GoTo /D (page.169) >> +>> endobj +9081 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 286.182 388.333 296.369] +/A << /S /GoTo /D (page.169) >> +>> endobj +9082 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 262.272 388.333 272.458] +/A << /S /GoTo /D (page.169) >> +>> endobj +9083 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 238.361 388.333 248.548] +/A << /S /GoTo /D (page.170) >> +>> endobj +9084 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 214.451 388.333 224.638] +/A << /S /GoTo /D (page.170) >> +>> endobj +9085 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 190.541 388.333 200.727] +/A << /S /GoTo /D (page.172) >> +>> endobj +9086 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.127 177.868 375.063 188.772] +/A << /S /GoTo /D (page.345) >> +>> endobj +9087 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 154.675 388.881 164.862] +/A << /S /GoTo /D (page.146) >> +>> endobj +9088 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 130.765 388.333 140.951] +/A << /S /GoTo /D (page.172) >> +>> endobj +9093 0 obj << +/D [9091 0 R /XYZ 132.768 705.06 null] +>> endobj +9090 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9147 0 obj << +/Length 779 +/Filter /FlateDecode +>> +stream +xÚ½˜ïsš0ÇßóWä%ÞM– ïÖ-]ë~ÈnÝu=•;¸¶ÿý‚`§NMÖbÞ<Ã÷óÍsOž<‚)€` œ»Êû¾N¥Y” î Œ5ƒš€ZD£nîUgxißuººe¦ŠM«óà^+¶«üR“m¼†4 Ì•ûBöã5€¶Lð¸š:¸Ç¦¢êÅŒ”/ +Üò7½Ì<ô%†¦cR{ñ;:Tç^Q†qön夶O/_ +¸ïêªÈÀÍ„ºˆ©3ñ.b6I£8éèDý !^³j:Ø7éDØI!@ÌãtÊCZä’n!µG ÷vÔà^ëI[Þ©x¸’ÖÌËqOw o·?Ê@fš2^!‘×wnìqô58(€«ö}–åÜÎýrÆö„òxîK…=qƒÙ"-Ne®- %ÐÖxÁjA9‘¹ñj¢÷Y*s)§¸Ð¿¼BòúŠÖ"Ú!æ‘ÊàÑ^$‚Kâ1gšbëë ¢>-$nü"ðÓÉIbº;²”jkV 64ËÔ7 ÈM£ei³·¶y\F-®‡\ëLµâÀv=ûεÙ߇K¯ÿmd{çŽ;âgYÉáëHˆZÅ¿rWÇØä„ì›O[Äbalõ{ÛÁ·ØœBAÜÌÏå ‰;hÖ!êó"+Ûiâ bœŽÂÂh‘G_F¡Ç +ɼौ…"ê ûÎÐq´s€ˆÓ8=|Zµ»Dº¥Ÿ$~g)GФGKø¶Òê:<ÕÿK?ƒˆ£¿ëWT?¯>»¬kxøJ@¸ £Si/òlÚºö8N—eœðRd·‚ÇrcõÆ4๹‚;dÖÙ£Ž[ÏŒ"ž/“&Âow†.¢Þ…POy'ëÙ„ÊN…¼ýp'TÍÛ…:C™+e: ZnÍÜ{yk™šÿçêv}}Ìzd››×Ǧ¥aºnI¢4Ê«ŠZgM–Ö£;[Ö—QP?ôêÁ3Ÿ!³þ¦CØ<­îвüec“ª*a£®JÍ–|n$³§çi”î.ù†?S7 +endstream +endobj +9146 0 obj << +/Type /Page +/Contents 9147 0 R +/Resources 9145 0 R +/MediaBox [0 0 612 792] +/Parent 9036 0 R +/Annots [ 9089 0 R 9094 0 R 9095 0 R 9096 0 R 9097 0 R 9098 0 R 9099 0 R 9100 0 R 9101 0 R 9102 0 R 9103 0 R 9104 0 R 9105 0 R 9106 0 R 9107 0 R 9108 0 R 9109 0 R 9110 0 R 9111 0 R 9112 0 R 9113 0 R 9114 0 R 9115 0 R 9116 0 R 9117 0 R 9118 0 R 9119 0 R 9120 0 R 9121 0 R 9122 0 R 9123 0 R 9124 0 R 9125 0 R 9126 0 R 9127 0 R 9128 0 R 9129 0 R 9130 0 R 9131 0 R 9132 0 R 9133 0 R 9134 0 R 9135 0 R 9136 0 R 9137 0 R 9138 0 R 9139 0 R 9140 0 R 9141 0 R 9142 0 R 9143 0 R ] +>> endobj +9089 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 654.8 211.496 664.986] +/A << /S /GoTo /D (page.173) >> +>> endobj +9094 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 630.889 211.496 641.076] +/A << /S /GoTo /D (page.173) >> +>> endobj +9095 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 606.262 214.814 617.166] +/A << /S /GoTo /D (page.195) >> +>> endobj +9096 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [156.045 595.024 172.981 605.21] +/A << /S /GoTo /D (page.345) >> +>> endobj +9097 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 570.396 214.814 581.3] +/A << /S /GoTo /D (page.196) >> +>> endobj +9098 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [158.814 559.158 175.751 569.345] +/A << /S /GoTo /D (page.345) >> +>> endobj +9099 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 534.531 214.814 545.435] +/A << /S /GoTo /D (page.196) >> +>> endobj +9100 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [161.584 523.293 178.52 533.479] +/A << /S /GoTo /D (page.345) >> +>> endobj +9101 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 499.382 211.496 509.569] +/A << /S /GoTo /D (page.173) >> +>> endobj +9102 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 475.472 211.496 485.659] +/A << /S /GoTo /D (page.173) >> +>> endobj +9103 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 451.562 211.496 461.748] +/A << /S /GoTo /D (page.170) >> +>> endobj +9104 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 427.651 212.044 437.838] +/A << /S /GoTo /D (page.146) >> +>> endobj +9105 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 403.741 212.044 413.928] +/A << /S /GoTo /D (page.146) >> +>> endobj +9106 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 379.831 212.044 390.017] +/A << /S /GoTo /D (page.146) >> +>> endobj +9107 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 355.92 212.044 366.107] +/A << /S /GoTo /D (page.146) >> +>> endobj +9108 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 332.01 212.044 342.197] +/A << /S /GoTo /D (page.146) >> +>> endobj +9109 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 308.1 211.496 318.286] +/A << /S /GoTo /D (page.173) >> +>> endobj +9110 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 284.189 211.496 294.376] +/A << /S /GoTo /D (page.173) >> +>> endobj +9111 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 260.279 211.496 270.466] +/A << /S /GoTo /D (page.173) >> +>> endobj +9112 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 236.369 211.496 246.555] +/A << /S /GoTo /D (page.173) >> +>> endobj +9113 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 212.458 211.496 222.645] +/A << /S /GoTo /D (page.174) >> +>> endobj +9114 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 188.548 211.496 198.735] +/A << /S /GoTo /D (page.174) >> +>> endobj +9115 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 164.638 214.266 174.824] +/A << /S /GoTo /D (page.188) >> +>> endobj +9116 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 140.727 212.044 150.914] +/A << /S /GoTo /D (page.146) >> +>> endobj +9117 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 116.817 211.496 127.004] +/A << /S /GoTo /D (page.174) >> +>> endobj +9118 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 642.844 388.333 653.031] +/A << /S /GoTo /D (page.174) >> +>> endobj +9119 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [338.66 630.889 355.596 641.076] +/A << /S /GoTo /D (page.345) >> +>> endobj +9120 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 606.979 388.333 617.166] +/A << /S /GoTo /D (page.174) >> +>> endobj +9121 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.733 573.106 386.67 583.293] +/A << /S /GoTo /D (page.212) >> +>> endobj +9122 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.733 549.196 386.67 559.382] +/A << /S /GoTo /D (page.212) >> +>> endobj +9123 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.733 525.285 386.67 535.472] +/A << /S /GoTo /D (page.213) >> +>> endobj +9124 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [369.733 501.375 386.67 511.562] +/A << /S /GoTo /D (page.213) >> +>> endobj +9125 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 477.465 388.333 487.651] +/A << /S /GoTo /D (page.170) >> +>> endobj +9126 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 453.554 388.333 463.741] +/A << /S /GoTo /D (page.170) >> +>> endobj +9127 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 429.644 388.333 439.831] +/A << /S /GoTo /D (page.174) >> +>> endobj +9128 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 395.771 388.881 405.958] +/A << /S /GoTo /D (page.147) >> +>> endobj +9129 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.233 361.181 421.17 372.085] +/A << /S /GoTo /D (page.291) >> +>> endobj +9130 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 337.988 388.881 348.174] +/A << /S /GoTo /D (page.144) >> +>> endobj +9131 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.233 313.36 421.17 324.264] +/A << /S /GoTo /D (page.291) >> +>> endobj +9132 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.873 302.122 370.829 312.309] +/A << /S /GoTo /D (page.86) >> +>> endobj +9133 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [392.168 290.167 404.123 300.354] +/A << /S /GoTo /D (page.91) >> +>> endobj +9134 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.44 278.212 406.395 288.398] +/A << /S /GoTo /D (page.90) >> +>> endobj +9135 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [395.745 266.257 407.7 276.443] +/A << /S /GoTo /D (page.90) >> +>> endobj +9136 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [394.639 253.584 406.594 264.488] +/A << /S /GoTo /D (page.90) >> +>> endobj +9137 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [393.752 242.346 405.707 252.533] +/A << /S /GoTo /D (page.88) >> +>> endobj +9138 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [377.683 229.674 389.638 240.578] +/A << /S /GoTo /D (page.89) >> +>> endobj +9139 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [379.347 217.719 391.302 228.623] +/A << /S /GoTo /D (page.91) >> +>> endobj +9140 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [398.524 206.481 410.479 216.667] +/A << /S /GoTo /D (page.91) >> +>> endobj +9141 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 182.57 391.103 192.757] +/A << /S /GoTo /D (page.156) >> +>> endobj +9142 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 158.66 391.103 168.847] +/A << /S /GoTo /D (page.156) >> +>> endobj +9143 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 134.75 391.103 144.936] +/A << /S /GoTo /D (page.156) >> +>> endobj +9148 0 obj << +/D [9146 0 R /XYZ 132.768 705.06 null] +>> endobj +9145 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9198 0 obj << +/Length 643 +/Filter /FlateDecode +>> +stream +xÚÅX[oÚ0~ϯðc" Ï—øÖ·n¥¨ÕVu4•*¡*¢ÄP$n iWþý ¨a$(8Ovû|ç|ŸsNŽ:ηÀùzM8PPq3C€)…‚KÀƒ\aD çÞÜ]µŸ¼QBH—*ä=·N;p~;ؘAïlÃP!S§÷Œ@d^Þ©’àÏféPß,ÅëðàürО/h×F>àL@BYêKß#È}ÃegÉ—+©ñ(s¦Ûq@¯Er1ÇÙ‚´°1o¬·°ñ“±mx%á÷õJPô¾$ã¥!^>Yå{ 7w6#5v hRdY=¹oIO¾ iKϽ8íëi@íèù\iýó” ¨)­‰És1¥ÝoÓØ ‡Fn?^$q l³!Y-ôòºOËq^{Âw/Ì‹æ'±-N@¯OkQ‰ùebÐmgä<òCuÏïõÀª¼7P óÈÕ';¼×[¨ªòn­bDž’|O¾+nþš)`T@%‰!d“:~V~´ÿ“ëÙY)Ï¡í>ѳüit“*1×ÛÚˆªÐõÑ-ËýC¥t×™Ü+Ñ]oç!«B7Dw9½ݲ1¶ecdKë\·»]ÏGîã}p8Ò‹Xú‰ŽÂq¢§ÇZ¢J6(:Žß |=búlßú„9(E+?çQYcÚ? Të‡sÚÿ°~0ïƒnünP­ó[®E?‰ßíXx¬$´Ê%òö"›C%¨Ü½È– +Rž9ÜÑ3¯ó…·qi>KÇàõ-\éA:ñÓ£ B/°LŸBÙlèæÎãô¡¿~x=*ÜÖdü’YxYe&ç«‘ží…nBþ …~f +endstream +endobj +9197 0 obj << +/Type /Page +/Contents 9198 0 R +/Resources 9196 0 R +/MediaBox [0 0 612 792] +/Parent 9036 0 R +/Annots [ 9144 0 R 9149 0 R 9150 0 R 9151 0 R 9152 0 R 9153 0 R 9154 0 R 9155 0 R 9156 0 R 9157 0 R 9158 0 R 9159 0 R 9160 0 R 9161 0 R 9162 0 R 9163 0 R 9164 0 R 9165 0 R 9166 0 R 9167 0 R 9168 0 R 9169 0 R 9170 0 R 9171 0 R 9172 0 R 9173 0 R 9174 0 R 9175 0 R 9176 0 R 9177 0 R 9178 0 R 9179 0 R 9180 0 R 9181 0 R 9182 0 R 9183 0 R 9184 0 R 9185 0 R 9186 0 R 9187 0 R 9188 0 R 9189 0 R 9190 0 R 9191 0 R 9192 0 R 9193 0 R 9194 0 R ] +>> endobj +9144 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 654.8 214.266 664.986] +/A << /S /GoTo /D (page.161) >> +>> endobj +9149 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 630.889 214.266 641.076] +/A << /S /GoTo /D (page.156) >> +>> endobj +9150 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 606.979 214.266 617.166] +/A << /S /GoTo /D (page.156) >> +>> endobj +9151 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 583.069 214.266 593.255] +/A << /S /GoTo /D (page.156) >> +>> endobj +9152 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 559.158 214.266 569.345] +/A << /S /GoTo /D (page.161) >> +>> endobj +9153 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 535.248 214.266 545.435] +/A << /S /GoTo /D (page.156) >> +>> endobj +9154 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 511.338 214.266 521.524] +/A << /S /GoTo /D (page.156) >> +>> endobj +9155 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 487.427 214.266 497.614] +/A << /S /GoTo /D (page.156) >> +>> endobj +9156 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 463.517 214.266 473.704] +/A << /S /GoTo /D (page.161) >> +>> endobj +9157 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 439.607 214.266 449.793] +/A << /S /GoTo /D (page.156) >> +>> endobj +9158 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 415.696 214.266 425.883] +/A << /S /GoTo /D (page.156) >> +>> endobj +9159 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 391.786 214.266 401.973] +/A << /S /GoTo /D (page.156) >> +>> endobj +9160 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 367.876 214.266 378.062] +/A << /S /GoTo /D (page.161) >> +>> endobj +9161 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 343.248 223.671 354.152] +/A << /S /GoTo /D (page.143) >> +>> endobj +9162 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 320.055 214.266 330.241] +/A << /S /GoTo /D (page.157) >> +>> endobj +9163 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 296.145 214.266 306.331] +/A << /S /GoTo /D (page.157) >> +>> endobj +9164 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 272.234 214.266 282.421] +/A << /S /GoTo /D (page.161) >> +>> endobj +9165 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 248.324 214.266 258.51] +/A << /S /GoTo /D (page.157) >> +>> endobj +9166 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 224.414 214.266 234.6] +/A << /S /GoTo /D (page.157) >> +>> endobj +9167 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 200.503 214.266 210.69] +/A << /S /GoTo /D (page.161) >> +>> endobj +9168 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 176.593 214.266 186.779] +/A << /S /GoTo /D (page.157) >> +>> endobj +9169 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 152.682 214.266 162.869] +/A << /S /GoTo /D (page.157) >> +>> endobj +9170 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 128.772 214.266 138.959] +/A << /S /GoTo /D (page.161) >> +>> endobj +9171 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 654.8 391.103 664.986] +/A << /S /GoTo /D (page.157) >> +>> endobj +9172 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 630.889 391.103 641.076] +/A << /S /GoTo /D (page.157) >> +>> endobj +9173 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 606.979 391.103 617.166] +/A << /S /GoTo /D (page.161) >> +>> endobj +9174 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 583.069 391.103 593.255] +/A << /S /GoTo /D (page.157) >> +>> endobj +9175 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 559.158 391.103 569.345] +/A << /S /GoTo /D (page.157) >> +>> endobj +9176 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 535.248 391.103 545.435] +/A << /S /GoTo /D (page.162) >> +>> endobj +9177 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 511.338 391.103 521.524] +/A << /S /GoTo /D (page.157) >> +>> endobj +9178 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 487.427 391.103 497.614] +/A << /S /GoTo /D (page.158) >> +>> endobj +9179 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 463.517 391.103 473.704] +/A << /S /GoTo /D (page.162) >> +>> endobj +9180 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 439.607 391.103 449.793] +/A << /S /GoTo /D (page.158) >> +>> endobj +9181 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 415.696 391.103 425.883] +/A << /S /GoTo /D (page.158) >> +>> endobj +9182 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 391.786 391.103 401.973] +/A << /S /GoTo /D (page.162) >> +>> endobj +9183 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 367.876 391.103 378.062] +/A << /S /GoTo /D (page.158) >> +>> endobj +9184 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 343.965 391.103 354.152] +/A << /S /GoTo /D (page.158) >> +>> endobj +9185 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 320.055 391.103 330.241] +/A << /S /GoTo /D (page.162) >> +>> endobj +9186 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [404.233 295.427 421.17 306.331] +/A << /S /GoTo /D (page.291) >> +>> endobj +9187 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.373 283.472 373.31 294.376] +/A << /S /GoTo /D (page.345) >> +>> endobj +9188 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 260.279 391.103 270.466] +/A << /S /GoTo /D (page.158) >> +>> endobj +9189 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 236.369 391.103 246.555] +/A << /S /GoTo /D (page.158) >> +>> endobj +9190 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 212.458 391.103 222.645] +/A << /S /GoTo /D (page.158) >> +>> endobj +9191 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 188.548 391.103 198.735] +/A << /S /GoTo /D (page.162) >> +>> endobj +9192 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 164.638 391.103 174.824] +/A << /S /GoTo /D (page.158) >> +>> endobj +9193 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 140.727 391.103 150.914] +/A << /S /GoTo /D (page.158) >> +>> endobj +9194 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 116.817 391.103 127.004] +/A << /S /GoTo /D (page.162) >> +>> endobj +9199 0 obj << +/D [9197 0 R /XYZ 132.768 705.06 null] +>> endobj +9196 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9251 0 obj << +/Length 798 +/Filter /FlateDecode +>> +stream +xÚŘËr›0†÷<…–0SS Y€²KšË8÷Ä^t&Í00¦áIüö• î˜Ô)rl+ ø¿óKGÒ± gÊÑHù~j˜€êÔäÍhƺeÚÀ¤D7)#<¨ƒëã“ŸZÏ –e«˜"íqt®œŒ”gqÐÊgH§/Q!ðùÃsuLmðºx5¸Ï_Eóc0TîØŠ®‹…XºIK”–å, +}úmFÍgaÈý™z*î›Í µ>ÿé!Y +eôÿ…§U2 7»õÜ›GÚÁ@†ÝfôÖ)ÍIùÔý—dîTxQ´¥'*DÇnú$…ä¥%‹·ì=1’…Q)ÅÓ/4*ƒa®f@õ…9‰[ve:ê[B̹ùTJ?FéD¦±8Ó ¢¾LÊÐ¥núa'îÁ\Îøª)ÅX^¥Þ^IM' †÷ÙÁ=ŒUyYt >0Ç‘Îáåàpøeà›Ó]¢‘X7;G—7?.¤W<_k˜¨‡'Ç_¿‘ëÛ\Π"w½@Ê\­ò\Òr÷¶ƒM·§Êû bê”—•[:µ]f+5Y?„EéÇѸ‹o¯-ž¸¤Á%‘]KÆî¸Ø7oU2ö õ-ï„~~7!í ýh¾S¾ÈµY3²«`Ǥ-·Ní¹Ê6ÖyWø³ ÙTa½±Ì{úü¿åˆd¡„áÿqˆ L\þN>Nï"(ùã.A"‰e¹S¥e;ã¨t¢ÂñâÀeÝy>a]K¿)– ïùÜœ> endobj +9195 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.777 654.082 193.713 664.986] +/A << /S /GoTo /D (page.346) >> +>> endobj +9200 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [152.976 642.844 169.913 653.031] +/A << /S /GoTo /D (page.349) >> +>> endobj +9201 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 618.217 196.194 629.121] +/A << /S /GoTo /D (page.128) >> +>> endobj +9202 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 594.306 196.194 605.21] +/A << /S /GoTo /D (page.128) >> +>> endobj +9203 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 570.396 196.194 581.3] +/A << /S /GoTo /D (page.129) >> +>> endobj +9204 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 546.486 196.194 557.39] +/A << /S /GoTo /D (page.129) >> +>> endobj +9205 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 522.575 196.194 533.479] +/A << /S /GoTo /D (page.129) >> +>> endobj +9206 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 498.665 196.194 509.569] +/A << /S /GoTo /D (page.129) >> +>> endobj +9207 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 475.472 212.044 485.659] +/A << /S /GoTo /D (page.147) >> +>> endobj +9208 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 450.844 196.194 461.748] +/A << /S /GoTo /D (page.129) >> +>> endobj +9209 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 427.651 212.044 437.838] +/A << /S /GoTo /D (page.147) >> +>> endobj +9210 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 403.024 196.194 413.928] +/A << /S /GoTo /D (page.129) >> +>> endobj +9211 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 379.831 212.044 390.017] +/A << /S /GoTo /D (page.147) >> +>> endobj +9212 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 355.203 196.194 366.107] +/A << /S /GoTo /D (page.129) >> +>> endobj +9213 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 331.293 196.194 342.197] +/A << /S /GoTo /D (page.129) >> +>> endobj +9214 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 307.382 230.306 318.286] +/A << /S /GoTo /D (page.240) >> +>> endobj +9215 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 283.472 230.306 294.376] +/A << /S /GoTo /D (page.240) >> +>> endobj +9216 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 259.562 230.306 270.466] +/A << /S /GoTo /D (page.241) >> +>> endobj +9217 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 235.651 230.306 246.555] +/A << /S /GoTo /D (page.241) >> +>> endobj +9218 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 211.741 230.306 222.645] +/A << /S /GoTo /D (page.241) >> +>> endobj +9219 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 187.831 230.306 198.735] +/A << /S /GoTo /D (page.241) >> +>> endobj +9220 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 163.92 196.194 174.824] +/A << /S /GoTo /D (page.129) >> +>> endobj +9221 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 140.01 196.194 150.914] +/A << /S /GoTo /D (page.129) >> +>> endobj +9222 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 116.1 196.194 127.004] +/A << /S /GoTo /D (page.130) >> +>> endobj +9223 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 642.844 391.103 653.031] +/A << /S /GoTo /D (page.188) >> +>> endobj +9224 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 608.971 391.103 619.158] +/A << /S /GoTo /D (page.188) >> +>> endobj +9225 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 585.061 388.881 595.248] +/A << /S /GoTo /D (page.147) >> +>> endobj +9226 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 561.151 391.103 571.337] +/A << /S /GoTo /D (page.188) >> +>> endobj +9227 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.594 549.196 354.53 559.382] +/A << /S /GoTo /D (page.335) >> +>> endobj +9228 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.229 536.523 369.166 547.427] +/A << /S /GoTo /D (page.335) >> +>> endobj +9229 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.007 525.285 366.944 535.472] +/A << /S /GoTo /D (page.335) >> +>> endobj +9230 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [339.218 513.33 356.154 523.517] +/A << /S /GoTo /D (page.349) >> +>> endobj +9231 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 489.42 388.881 499.606] +/A << /S /GoTo /D (page.147) >> +>> endobj +9232 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 465.509 388.881 475.696] +/A << /S /GoTo /D (page.147) >> +>> endobj +9233 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.085 440.882 378.022 451.786] +/A << /S /GoTo /D (page.151) >> +>> endobj +9234 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.53 417.689 379.467 427.875] +/A << /S /GoTo /D (page.265) >> +>> endobj +9235 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [362.53 393.778 379.467 403.965] +/A << /S /GoTo /D (page.265) >> +>> endobj +9236 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 369.868 388.881 380.055] +/A << /S /GoTo /D (page.148) >> +>> endobj +9237 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 345.958 388.881 356.144] +/A << /S /GoTo /D (page.148) >> +>> endobj +9238 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 322.047 391.103 332.234] +/A << /S /GoTo /D (page.188) >> +>> endobj +9239 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 288.174 388.881 298.361] +/A << /S /GoTo /D (page.144) >> +>> endobj +9240 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.945 264.264 388.881 274.451] +/A << /S /GoTo /D (page.144) >> +>> endobj +9241 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 240.354 391.103 250.54] +/A << /S /GoTo /D (page.189) >> +>> endobj +9242 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.987 228.399 358.924 238.585] +/A << /S /GoTo /D (page.349) >> +>> endobj +9243 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 203.771 391.651 214.675] +/A << /S /GoTo /D (page.196) >> +>> endobj +9244 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.607 191.816 377.544 202.72] +/A << /S /GoTo /D (page.352) >> +>> endobj +9245 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 167.905 391.651 178.809] +/A << /S /GoTo /D (page.196) >> +>> endobj +9246 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.719 156.668 371.656 166.854] +/A << /S /GoTo /D (page.352) >> +>> endobj +9247 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 132.04 408.797 142.944] +/A << /S /GoTo /D (page.253) >> +>> endobj +9248 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.682 120.802 381.618 130.989] +/A << /S /GoTo /D (page.352) >> +>> endobj +9252 0 obj << +/D [9250 0 R /XYZ 132.768 705.06 null] +>> endobj +9249 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9313 0 obj << +/Length 841 +/Filter /FlateDecode +>> +stream +xÚÅY[o›0}çWø¤•Ù86¸ok›DíÖ¤k£iRW!N‚ #´]þý¸¥%)—xDB±QÌ9çûŽ¯2sÁPº˜HŸLe4.&3€0VujʈJ<Ê×£«þOåLcºnȘiÊÓäFêO¤ßŠa @…ÏÊ ¶'=>AàÄÞ¨bf€×´©p/nŠ’—àAú.Á-°L ÑU “L‹Ç=Û[% +Š›Æ-ÏPÌIò¿-EƒòKh®£ÐõçŸR¥™Äpžk½JàñL#PFŒæ 2 1T dƨ>T€a¢í‚Á2ó®Rújî­W–Í+ø4‚?O÷XB²V +‚òF”zMrVJDq +3Þ˜E?›?‚„ŸÀ/P‘_’ÞuÞ +Ô"Ú‹PTF½RJrÌ ¤;Xu²O+jø­yÔ‰´Èx¼ðÀ™UÊö¬hQ%ºwPtRæ€#ùËH !©aóhœQ¦.OdÈãÛëKóâÛøòë¿*òÔ>GîÒ´¢Àsíª¾¦!b0¾¿ìƒƒÙh¢ƒ¶×qßÈ^Ò +ÃÛýÿ+,+S¼à9š$sø*ä¶qÇt£¸ÓW12­F*bÆUŒ…®¿²B7Êö-‹†cv¿H§ªu@°®2C+˜\ѶK‹oNÝÂœDJLÌ>ª +Ð( pïnx[œÄÉq“xùtBvj f†ÜrÌé&âQ“js–ìå¬PœÖX‚Ï;ãßϾóš„„Ήâã?±ï:NhÆ/q`EÂØ l’‚œ]¸íT”Û@» |H´£?±¢­¨ærôCéAy|}%p]ªÅ½«±ÒïUÊÐL³ÿíîÖ´—ÖzíÚ¦Y‰I>Üñçpï“÷–oÇ›ÖÈt¹­£t;šEã¾% ~fõF¸ W7ëF 4§EøF…ý­ûUÁ àX ¸m¯ª}Ôúb)¬ÛÜ«C°´¶½Üòù/H!¯;-Ko ˜¡ê¸ÉÁöž‚ªLÇFñnÀ`*¦9ÿû> endobj +9253 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 642.127 214.814 653.031] +/A << /S /GoTo /D (page.196) >> +>> endobj +9254 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.864 630.172 199.8 641.076] +/A << /S /GoTo /D (page.352) >> +>> endobj +9255 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 606.262 231.96 617.166] +/A << /S /GoTo /D (page.253) >> +>> endobj +9256 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [192.278 594.306 209.215 605.21] +/A << /S /GoTo /D (page.352) >> +>> endobj +9257 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 570.396 214.814 581.3] +/A << /S /GoTo /D (page.197) >> +>> endobj +9258 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.347 558.441 196.284 569.345] +/A << /S /GoTo /D (page.352) >> +>> endobj +9259 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 534.531 231.96 545.435] +/A << /S /GoTo /D (page.253) >> +>> endobj +9260 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [189.409 522.575 206.346 533.479] +/A << /S /GoTo /D (page.352) >> +>> endobj +9261 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 498.665 214.814 509.569] +/A << /S /GoTo /D (page.197) >> +>> endobj +9262 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [185.633 487.427 202.57 497.614] +/A << /S /GoTo /D (page.352) >> +>> endobj +9263 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 462.8 231.96 473.704] +/A << /S /GoTo /D (page.253) >> +>> endobj +9264 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 438.889 214.814 449.793] +/A << /S /GoTo /D (page.197) >> +>> endobj +9265 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [187.546 427.651 204.483 437.838] +/A << /S /GoTo /D (page.352) >> +>> endobj +9266 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 403.024 214.814 413.928] +/A << /S /GoTo /D (page.198) >> +>> endobj +9267 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.2 391.786 198.137 401.973] +/A << /S /GoTo /D (page.352) >> +>> endobj +9268 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 367.158 231.96 378.062] +/A << /S /GoTo /D (page.253) >> +>> endobj +9269 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [191.163 355.92 208.099 366.107] +/A << /S /GoTo /D (page.352) >> +>> endobj +9270 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 331.293 214.814 342.197] +/A << /S /GoTo /D (page.198) >> +>> endobj +9271 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.776 320.055 193.713 330.241] +/A << /S /GoTo /D (page.352) >> +>> endobj +9272 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 296.145 212.044 306.331] +/A << /S /GoTo /D (page.148) >> +>> endobj +9273 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 264.264 212.044 274.451] +/A << /S /GoTo /D (page.145) >> +>> endobj +9274 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.068 240.354 220.004 250.54] +/A << /S /GoTo /D (page.275) >> +>> endobj +9275 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.068 216.443 220.004 226.63] +/A << /S /GoTo /D (page.276) >> +>> endobj +9276 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [203.068 192.533 220.004 202.72] +/A << /S /GoTo /D (page.276) >> +>> endobj +9277 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.396 159.935 244.333 170.839] +/A << /S /GoTo /D (page.292) >> +>> endobj +9278 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.396 136.025 244.333 146.929] +/A << /S /GoTo /D (page.292) >> +>> endobj +9279 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.82 116.1 184.757 127.004] +/A << /S /GoTo /D (page.352) >> +>> endobj +9280 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.029 642.127 392.966 653.031] +/A << /S /GoTo /D (page.282) >> +>> endobj +9281 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 618.217 408.797 629.121] +/A << /S /GoTo /D (page.248) >> +>> endobj +9282 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 594.306 408.797 605.21] +/A << /S /GoTo /D (page.248) >> +>> endobj +9283 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 570.396 408.797 581.3] +/A << /S /GoTo /D (page.249) >> +>> endobj +9284 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 546.486 408.797 557.39] +/A << /S /GoTo /D (page.249) >> +>> endobj +9285 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 522.575 408.797 533.479] +/A << /S /GoTo /D (page.249) >> +>> endobj +9286 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 498.665 408.797 509.569] +/A << /S /GoTo /D (page.249) >> +>> endobj +9287 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 474.755 408.797 485.659] +/A << /S /GoTo /D (page.249) >> +>> endobj +9288 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 450.844 408.797 461.748] +/A << /S /GoTo /D (page.250) >> +>> endobj +9289 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 426.934 408.797 437.838] +/A << /S /GoTo /D (page.250) >> +>> endobj +9290 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 403.024 408.797 413.928] +/A << /S /GoTo /D (page.250) >> +>> endobj +9291 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 379.113 408.797 390.017] +/A << /S /GoTo /D (page.250) >> +>> endobj +9292 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 355.203 408.797 366.107] +/A << /S /GoTo /D (page.250) >> +>> endobj +9293 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 331.293 408.797 342.197] +/A << /S /GoTo /D (page.251) >> +>> endobj +9294 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 307.382 408.797 318.286] +/A << /S /GoTo /D (page.251) >> +>> endobj +9295 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.902 295.427 378.839 306.331] +/A << /S /GoTo /D (page.353) >> +>> endobj +9296 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [412.552 284.189 429.489 294.376] +/A << /S /GoTo /D (page.355) >> +>> endobj +9297 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [453.947 272.234 470.884 282.421] +/A << /S /GoTo /D (page.355) >> +>> endobj +9298 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [423.611 260.279 440.548 270.466] +/A << /S /GoTo /D (page.356) >> +>> endobj +9299 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [446.306 248.324 463.242 258.51] +/A << /S /GoTo /D (page.356) >> +>> endobj +9300 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [437.907 236.369 454.843 246.555] +/A << /S /GoTo /D (page.357) >> +>> endobj +9301 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [448.966 224.414 465.902 234.6] +/A << /S /GoTo /D (page.357) >> +>> endobj +9302 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [406.465 212.458 423.401 222.645] +/A << /S /GoTo /D (page.358) >> +>> endobj +9303 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [436.801 200.503 453.738 210.69] +/A << /S /GoTo /D (page.358) >> +>> endobj +9304 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [447.86 188.548 464.797 198.735] +/A << /S /GoTo /D (page.358) >> +>> endobj +9305 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [417.524 176.593 434.46 186.779] +/A << /S /GoTo /D (page.359) >> +>> endobj +9306 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.16 164.638 446.096 174.824] +/A << /S /GoTo /D (page.359) >> +>> endobj +9307 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [440.219 152.682 457.155 162.869] +/A << /S /GoTo /D (page.360) >> +>> endobj +9308 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [431.82 140.727 448.756 150.914] +/A << /S /GoTo /D (page.360) >> +>> endobj +9309 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [442.879 128.772 459.815 138.959] +/A << /S /GoTo /D (page.360) >> +>> endobj +9314 0 obj << +/D [9312 0 R /XYZ 132.768 705.06 null] +>> endobj +9311 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9364 0 obj << +/Length 614 +/Filter /FlateDecode +>> +stream +xÚŘ]o›0†ïù¾iñlŒ¿zשiÔjš²”‹HQQ )Z2BÚæßÒ‰6¦2pe[˜óœóë•eæñÃ5¾ßÚ H(Y6¸3€ œ À$…Lbà`bÞýºé­ž-9&‘Äztï¾kü5p\ú C‰(ð—Æä ûx$R€×ÃÖ% N¶ï\€ã·ÎrAå\(Érp£Ú„æ¹x–Ì—dºôÒço‡Dò ’y‘Êh`€IϦÈÄŽ(6äÐÃYð,vgYÒ"à:¶lj¾†‰E© /Å$ ŸÇ¬ +é/bÿÏt„ß[„ÓM˜ÖZ™épt`¶ßXI=*­Òt·7—Ô!ÎgLvb»%f©NÑ>òÖâŽyýàv!ñ‘Ý…ÔGv’ÿìw¤÷¬SlZ§bÑ>wèŽZ‚žTŽtvV±Ð¨ƒ¦Fýd #›0«ºì.¤þĬš–\»YÕw!öGfõU¥™"W«Y©@×Inv‘¹Iƒ(¾äŽ2p:<ÛZºS²ì6M%Ja% ÅÇ:ϳb{㪣Üð‘ŠEûe6aÑuÙ]HÝÀ}R­Ý¢™ÚM'Önѵ*î@i­ÍÕTÞêì,W+t«³©ªLѾ´M˜•j¹MÜ'ë²;\»Y©Ö¬Ý¬j5Þ'U¹í™Õ :ÖÙY¡Æ|«b²f™ãü ½o¬|–rRçQøø0Í äD”¦…„„øA¸ +/ ës¼ÊG÷y›OnB?Ÿ8ù€Ñ•M®°ÈW6BÅl¶Ž“|áí/‰E¸Ù[DOE„§]2~ÛÍÃÕÿ%ÿ ¸o? +endstream +endobj +9363 0 obj << +/Type /Page +/Contents 9364 0 R +/Resources 9362 0 R +/MediaBox [0 0 612 792] +/Parent 9366 0 R +/Annots [ 9310 0 R 9315 0 R 9316 0 R 9317 0 R 9318 0 R 9319 0 R 9320 0 R 9321 0 R 9322 0 R 9323 0 R 9324 0 R 9325 0 R 9326 0 R 9327 0 R 9328 0 R 9329 0 R 9330 0 R 9331 0 R 9332 0 R 9333 0 R 9334 0 R 9335 0 R 9336 0 R 9337 0 R 9338 0 R 9339 0 R 9340 0 R 9341 0 R 9342 0 R 9343 0 R 9344 0 R 9345 0 R 9346 0 R 9347 0 R 9348 0 R 9349 0 R 9350 0 R 9351 0 R 9352 0 R 9353 0 R 9354 0 R 9355 0 R 9356 0 R 9357 0 R 9358 0 R 9359 0 R 9360 0 R ] +>> endobj +9310 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 654.8 212.044 664.986] +/A << /S /GoTo /D (page.148) >> +>> endobj +9315 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.325 642.127 186.261 653.031] +/A << /S /GoTo /D (page.361) >> +>> endobj +9316 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [232.926 630.172 249.862 641.076] +/A << /S /GoTo /D (page.361) >> +>> endobj +9317 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 606.262 223.671 617.166] +/A << /S /GoTo /D (page.134) >> +>> endobj +9318 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 582.351 223.671 593.255] +/A << /S /GoTo /D (page.134) >> +>> endobj +9319 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 558.441 223.671 569.345] +/A << /S /GoTo /D (page.134) >> +>> endobj +9320 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 534.531 223.671 545.435] +/A << /S /GoTo /D (page.134) >> +>> endobj +9321 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 510.62 223.671 521.524] +/A << /S /GoTo /D (page.134) >> +>> endobj +9322 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 486.71 223.671 497.614] +/A << /S /GoTo /D (page.134) >> +>> endobj +9323 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 462.8 223.671 473.704] +/A << /S /GoTo /D (page.134) >> +>> endobj +9324 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 438.889 223.671 449.793] +/A << /S /GoTo /D (page.135) >> +>> endobj +9325 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 414.979 223.671 425.883] +/A << /S /GoTo /D (page.135) >> +>> endobj +9326 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 391.069 223.671 401.973] +/A << /S /GoTo /D (page.135) >> +>> endobj +9327 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 367.158 223.671 378.062] +/A << /S /GoTo /D (page.135) >> +>> endobj +9328 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 343.248 223.671 354.152] +/A << /S /GoTo /D (page.135) >> +>> endobj +9329 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 319.338 223.671 330.241] +/A << /S /GoTo /D (page.135) >> +>> endobj +9330 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 295.427 223.671 306.331] +/A << /S /GoTo /D (page.135) >> +>> endobj +9331 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 271.517 223.671 282.421] +/A << /S /GoTo /D (page.135) >> +>> endobj +9332 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 247.607 223.671 258.51] +/A << /S /GoTo /D (page.135) >> +>> endobj +9333 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 223.696 223.671 234.6] +/A << /S /GoTo /D (page.135) >> +>> endobj +9334 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 199.786 223.671 210.69] +/A << /S /GoTo /D (page.135) >> +>> endobj +9335 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 175.876 223.671 186.779] +/A << /S /GoTo /D (page.136) >> +>> endobj +9336 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 151.965 223.671 162.869] +/A << /S /GoTo /D (page.136) >> +>> endobj +9337 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 128.772 211.496 138.959] +/A << /S /GoTo /D (page.174) >> +>> endobj +9338 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 654.8 388.333 664.986] +/A << /S /GoTo /D (page.175) >> +>> endobj +9339 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 630.172 400.508 641.076] +/A << /S /GoTo /D (page.136) >> +>> endobj +9340 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 606.262 400.508 617.166] +/A << /S /GoTo /D (page.136) >> +>> endobj +9341 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 582.351 400.508 593.255] +/A << /S /GoTo /D (page.136) >> +>> endobj +9342 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 558.441 400.508 569.345] +/A << /S /GoTo /D (page.136) >> +>> endobj +9343 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 534.531 400.508 545.435] +/A << /S /GoTo /D (page.136) >> +>> endobj +9344 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 510.62 400.508 521.524] +/A << /S /GoTo /D (page.136) >> +>> endobj +9345 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 486.71 400.508 497.614] +/A << /S /GoTo /D (page.136) >> +>> endobj +9346 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 462.8 400.508 473.704] +/A << /S /GoTo /D (page.136) >> +>> endobj +9347 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 438.889 400.508 449.793] +/A << /S /GoTo /D (page.136) >> +>> endobj +9348 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 414.979 400.508 425.883] +/A << /S /GoTo /D (page.137) >> +>> endobj +9349 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 391.069 400.508 401.973] +/A << /S /GoTo /D (page.137) >> +>> endobj +9350 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 367.158 400.508 378.062] +/A << /S /GoTo /D (page.137) >> +>> endobj +9351 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 343.248 400.508 354.152] +/A << /S /GoTo /D (page.137) >> +>> endobj +9352 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 319.338 400.508 330.241] +/A << /S /GoTo /D (page.137) >> +>> endobj +9353 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 295.427 400.508 306.331] +/A << /S /GoTo /D (page.137) >> +>> endobj +9354 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 271.517 400.508 282.421] +/A << /S /GoTo /D (page.137) >> +>> endobj +9355 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 247.607 400.508 258.51] +/A << /S /GoTo /D (page.137) >> +>> endobj +9356 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 223.696 400.508 234.6] +/A << /S /GoTo /D (page.137) >> +>> endobj +9357 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 199.786 400.508 210.69] +/A << /S /GoTo /D (page.137) >> +>> endobj +9358 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 175.876 400.508 186.779] +/A << /S /GoTo /D (page.137) >> +>> endobj +9359 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 151.965 400.508 162.869] +/A << /S /GoTo /D (page.138) >> +>> endobj +9360 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 128.055 400.508 138.959] +/A << /S /GoTo /D (page.138) >> +>> endobj +9365 0 obj << +/D [9363 0 R /XYZ 132.768 705.06 null] +>> endobj +9362 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9414 0 obj << +/Length 662 +/Filter /FlateDecode +>> +stream +xÚŘ]¢0†ïù½„deûAK;wnüˆ“Õq‘ 3!Ž0Ž‰Š"ºÎ¿ß"èè®jÂÇUKhÏsÞã[[ +Á@ÐÕ~¸Ú÷f@˜‚ÉÆ}ˆÓf0AM&p}0Ñ{ƒV{l4°°m®a¯î³Övµ­†dÐÕ4d +HÁl¥M^!ðåËgM"8ø}ºÄ’CQ2q FÚ/ Þä¯s¡Dæ`Fmšæ250Ô‘·XÇñç&Ø};%“fͳtœ®& L¡ŽÏ¤Ð@ ã7Ì”fA‡NïHp2Ü{]sÌ+B²/™¼z•öôæÈE¬rö±r6ûWw Î:ÖȾè®ÁÝ% …¢êŸí‚m¦>V f).Ò`)®œ*¾ã-V…à<=têÝ»Ð2+¼‰Â¹7û˜F¹Z7óÕn39XL‘*V +AÌ‹ë!|Ì* 3«.ͼH0VïÏöº ¾LB‚É£3”ئà¸ôL +wÜCèb-÷ºXÏ=„®Çt‡$r¸ð«­÷Ð1,¨¿tûí~µ+|8RØ­Š!žA®Óêu:^¿9Îïb_!o¿¢Jgì3¶7( +«´Mîã™/ÌÃÙ*ÅMp*{rÄ/»‚pTç Kbñ4âvF± +o¹xËr•„í>ü?Ï_˜ê/Ïœ„X·(xg©H¥HÑtíWR£,¤Ó´Tÿ@T˜*ÎK4zQFP‘® +Ò¨DLêúÒ¯£²áª¬ÚžÛ»W¯‚›6yäâõ|ùËLa~}ùË…IX¦¨¬ƒh¾qJ)\§­û±O;­`–v¬´Að “'ÄÓ' aÖ{Oi¥ÓÓŠ bë Y†,ÂÛg2<~΃õt)ù‘÷U€ +endstream +endobj +9413 0 obj << +/Type /Page +/Contents 9414 0 R +/Resources 9412 0 R +/MediaBox [0 0 612 792] +/Parent 9366 0 R +/Annots [ 9361 0 R 9367 0 R 9368 0 R 9369 0 R 9370 0 R 9371 0 R 9372 0 R 9373 0 R 9374 0 R 9375 0 R 9376 0 R 9377 0 R 9378 0 R 9379 0 R 9380 0 R 9381 0 R 9382 0 R 9383 0 R 9384 0 R 9385 0 R 9386 0 R 9387 0 R 9388 0 R 9389 0 R 9390 0 R 9391 0 R 9392 0 R 9393 0 R 9394 0 R 9395 0 R 9396 0 R 9397 0 R 9398 0 R 9399 0 R 9400 0 R 9401 0 R 9402 0 R 9403 0 R 9404 0 R 9405 0 R 9406 0 R 9407 0 R 9408 0 R 9409 0 R 9410 0 R 9411 0 R ] +>> endobj +9361 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 654.082 223.671 664.986] +/A << /S /GoTo /D (page.138) >> +>> endobj +9367 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 630.172 223.671 641.076] +/A << /S /GoTo /D (page.138) >> +>> endobj +9368 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 606.262 223.671 617.166] +/A << /S /GoTo /D (page.138) >> +>> endobj +9369 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 582.351 223.671 593.255] +/A << /S /GoTo /D (page.138) >> +>> endobj +9370 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 558.441 223.671 569.345] +/A << /S /GoTo /D (page.138) >> +>> endobj +9371 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 534.531 223.671 545.435] +/A << /S /GoTo /D (page.138) >> +>> endobj +9372 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 510.62 223.671 521.524] +/A << /S /GoTo /D (page.138) >> +>> endobj +9373 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 486.71 223.671 497.614] +/A << /S /GoTo /D (page.138) >> +>> endobj +9374 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 462.8 223.671 473.704] +/A << /S /GoTo /D (page.138) >> +>> endobj +9375 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 438.889 223.671 449.793] +/A << /S /GoTo /D (page.139) >> +>> endobj +9376 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 414.979 223.671 425.883] +/A << /S /GoTo /D (page.139) >> +>> endobj +9377 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 391.069 223.671 401.973] +/A << /S /GoTo /D (page.139) >> +>> endobj +9378 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 367.158 223.671 378.062] +/A << /S /GoTo /D (page.139) >> +>> endobj +9379 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 343.248 223.671 354.152] +/A << /S /GoTo /D (page.139) >> +>> endobj +9380 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 319.338 223.671 330.241] +/A << /S /GoTo /D (page.139) >> +>> endobj +9381 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 295.427 223.671 306.331] +/A << /S /GoTo /D (page.139) >> +>> endobj +9382 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 271.517 223.671 282.421] +/A << /S /GoTo /D (page.139) >> +>> endobj +9383 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 247.607 223.671 258.51] +/A << /S /GoTo /D (page.139) >> +>> endobj +9384 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 223.696 231.96 234.6] +/A << /S /GoTo /D (page.251) >> +>> endobj +9385 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 199.786 231.96 210.69] +/A << /S /GoTo /D (page.251) >> +>> endobj +9386 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 175.876 231.96 186.779] +/A << /S /GoTo /D (page.251) >> +>> endobj +9387 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 151.965 231.96 162.869] +/A << /S /GoTo /D (page.251) >> +>> endobj +9388 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 128.055 231.96 138.959] +/A << /S /GoTo /D (page.252) >> +>> endobj +9389 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 654.082 408.797 664.986] +/A << /S /GoTo /D (page.252) >> +>> endobj +9390 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 630.172 408.797 641.076] +/A << /S /GoTo /D (page.252) >> +>> endobj +9391 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 606.262 408.797 617.166] +/A << /S /GoTo /D (page.252) >> +>> endobj +9392 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 582.351 408.797 593.255] +/A << /S /GoTo /D (page.252) >> +>> endobj +9393 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 558.441 408.797 569.345] +/A << /S /GoTo /D (page.252) >> +>> endobj +9394 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 534.531 408.797 545.435] +/A << /S /GoTo /D (page.252) >> +>> endobj +9395 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 510.62 408.797 521.524] +/A << /S /GoTo /D (page.251) >> +>> endobj +9396 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 486.71 408.797 497.614] +/A << /S /GoTo /D (page.251) >> +>> endobj +9397 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 463.517 391.103 473.704] +/A << /S /GoTo /D (page.158) >> +>> endobj +9398 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 439.607 391.103 449.793] +/A << /S /GoTo /D (page.159) >> +>> endobj +9399 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 415.696 388.333 425.883] +/A << /S /GoTo /D (page.171) >> +>> endobj +9400 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 391.786 388.333 401.973] +/A << /S /GoTo /D (page.171) >> +>> endobj +9401 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 367.876 388.333 378.062] +/A << /S /GoTo /D (page.175) >> +>> endobj +9402 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 343.965 388.333 354.152] +/A << /S /GoTo /D (page.175) >> +>> endobj +9403 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 310.092 391.103 320.279] +/A << /S /GoTo /D (page.189) >> +>> endobj +9404 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.749 286.182 371.686 296.369] +/A << /S /GoTo /D (page.334) >> +>> endobj +9405 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [357.519 274.227 374.455 284.413] +/A << /S /GoTo /D (page.335) >> +>> endobj +9406 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 240.354 391.103 250.54] +/A << /S /GoTo /D (page.189) >> +>> endobj +9407 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 216.443 391.103 226.63] +/A << /S /GoTo /D (page.185) >> +>> endobj +9408 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 192.533 391.103 202.72] +/A << /S /GoTo /D (page.190) >> +>> endobj +9409 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 168.623 391.103 178.809] +/A << /S /GoTo /D (page.190) >> +>> endobj +9410 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 144.712 391.103 154.899] +/A << /S /GoTo /D (page.185) >> +>> endobj +9411 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 120.802 391.103 130.989] +/A << /S /GoTo /D (page.190) >> +>> endobj +9415 0 obj << +/D [9413 0 R /XYZ 132.768 705.06 null] +>> endobj +9412 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9466 0 obj << +/Length 672 +/Filter /FlateDecode +>> +stream +xÚŘ]š@†ïùs I¥óÁ ÌÞµ]×tÓl¶+MÌÆ Œ. ‚EÜê¿ßQ0Š¢Œ-ÂÕ@f8Ïyß™ä@0ô´¯®öù3ÀMÎäàN"Ä´™§&ã¸>èߟŒæ¶íè„SãÕ}Ôº®öGC2 èà1drHÁx¦ ^!ðåä#€&áø»]:Ä’KÑæÁôµŸ,äËr¡¶‰ ÍrI„†ñx“@r­\ÚAJóyÏÀPO†‹ÔƒÑ§mªYŽÉ4Oö¥§AS¨#óY2TIÈDÌÎâüÀÀT¦$B¬" ã„ê襔Ù.å4¨´(ˆR‘$Ëyº¨`b «Ø/#¿:óÒ·ª]±œ38,"' ¸Wè‹y"Æ^*üaŠY¥>®¢o1ö¢‰Ê¹ â*¶ÊnyÃç&ˆyÄþ·'1•s“®ç¢ÊUD¸"“à†˜lÏ|0lKÿÒwkÔkAE½;vº•Ù?ºMŠfGà6?»/Cƒ2‡Ù™-˜´XFÁ¥2ºµ×Í–Ñ1¸.-£µ©Aã:.2G€(“?PBMÎ÷)zMkM!—MOe—UÕMÙì”݆jܘâ· UÕÚe /ËÌe7f6^F%ì:VdŸ-#Ö¸ ŵ–‘"tՂëÌ]Ý¢Œ®e×ùúPe×þ5º +ÜØNï¿F«ÆËh!൩NéÈ[úfUŠ0|±c'ãüžÍÏžÊ0Ž¦r¾Ê%Š WÙ¥Zî˜6¹¦?»ëË¿c›8‡}Y‡›„å‰öD$’MÃÍئGÙè¾-³‹{1Î.¬l@ð“;ädwÂüj²é‚ÆIvãm[¢‰Al½£<Âh‡ŒW멈 +Ò¥ä2ÒQé +endstream +endobj +9465 0 obj << +/Type /Page +/Contents 9466 0 R +/Resources 9464 0 R +/MediaBox [0 0 612 792] +/Parent 9366 0 R +/Annots [ 9416 0 R 9417 0 R 9418 0 R 9419 0 R 9420 0 R 9421 0 R 9422 0 R 9423 0 R 9424 0 R 9425 0 R 9426 0 R 9427 0 R 9428 0 R 9429 0 R 9430 0 R 9431 0 R 9432 0 R 9433 0 R 9434 0 R 9435 0 R 9436 0 R 9437 0 R 9438 0 R 9439 0 R 9440 0 R 9441 0 R 9442 0 R 9443 0 R 9444 0 R 9445 0 R 9446 0 R 9447 0 R 9448 0 R 9449 0 R 9450 0 R 9451 0 R 9452 0 R 9453 0 R 9454 0 R 9455 0 R 9456 0 R 9457 0 R 9458 0 R 9459 0 R 9460 0 R 9461 0 R 9462 0 R ] +>> endobj +9416 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 642.844 214.266 653.031] +/A << /S /GoTo /D (page.190) >> +>> endobj +9417 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.913 618.934 194.849 629.121] +/A << /S /GoTo /D (page.334) >> +>> endobj +9418 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [180.682 606.979 197.619 617.166] +/A << /S /GoTo /D (page.335) >> +>> endobj +9419 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 582.351 230.306 593.255] +/A << /S /GoTo /D (page.242) >> +>> endobj +9420 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 559.158 212.044 569.345] +/A << /S /GoTo /D (page.148) >> +>> endobj +9421 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.396 524.568 244.333 535.472] +/A << /S /GoTo /D (page.292) >> +>> endobj +9422 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 501.375 211.496 511.562] +/A << /S /GoTo /D (page.175) >> +>> endobj +9423 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 477.465 211.496 487.651] +/A << /S /GoTo /D (page.175) >> +>> endobj +9424 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 452.837 223.671 463.741] +/A << /S /GoTo /D (page.139) >> +>> endobj +9425 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 428.927 223.671 439.831] +/A << /S /GoTo /D (page.139) >> +>> endobj +9426 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 405.016 223.671 415.92] +/A << /S /GoTo /D (page.140) >> +>> endobj +9427 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 381.106 223.671 392.01] +/A << /S /GoTo /D (page.140) >> +>> endobj +9428 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 357.196 223.671 368.1] +/A << /S /GoTo /D (page.140) >> +>> endobj +9429 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 333.285 223.671 344.189] +/A << /S /GoTo /D (page.140) >> +>> endobj +9430 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 309.375 223.671 320.279] +/A << /S /GoTo /D (page.140) >> +>> endobj +9431 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 285.465 223.671 296.369] +/A << /S /GoTo /D (page.140) >> +>> endobj +9432 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 261.554 223.671 272.458] +/A << /S /GoTo /D (page.140) >> +>> endobj +9433 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 237.644 223.671 248.548] +/A << /S /GoTo /D (page.140) >> +>> endobj +9434 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 213.734 223.671 224.638] +/A << /S /GoTo /D (page.140) >> +>> endobj +9435 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 189.823 223.671 200.727] +/A << /S /GoTo /D (page.140) >> +>> endobj +9436 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 165.913 223.671 176.817] +/A << /S /GoTo /D (page.140) >> +>> endobj +9437 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 142.003 223.671 152.907] +/A << /S /GoTo /D (page.141) >> +>> endobj +9438 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 118.092 223.671 128.996] +/A << /S /GoTo /D (page.141) >> +>> endobj +9439 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 642.127 400.508 653.031] +/A << /S /GoTo /D (page.141) >> +>> endobj +9440 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 618.217 400.508 629.121] +/A << /S /GoTo /D (page.141) >> +>> endobj +9441 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 594.306 400.508 605.21] +/A << /S /GoTo /D (page.141) >> +>> endobj +9442 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 570.396 400.508 581.3] +/A << /S /GoTo /D (page.141) >> +>> endobj +9443 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 546.486 400.508 557.39] +/A << /S /GoTo /D (page.141) >> +>> endobj +9444 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 522.575 400.508 533.479] +/A << /S /GoTo /D (page.141) >> +>> endobj +9445 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 498.665 400.508 509.569] +/A << /S /GoTo /D (page.141) >> +>> endobj +9446 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 474.755 400.508 485.659] +/A << /S /GoTo /D (page.141) >> +>> endobj +9447 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 450.844 400.508 461.748] +/A << /S /GoTo /D (page.141) >> +>> endobj +9448 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 426.934 400.508 437.838] +/A << /S /GoTo /D (page.142) >> +>> endobj +9449 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 403.024 400.508 413.928] +/A << /S /GoTo /D (page.142) >> +>> endobj +9450 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 379.113 400.508 390.017] +/A << /S /GoTo /D (page.142) >> +>> endobj +9451 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 355.203 400.508 366.107] +/A << /S /GoTo /D (page.142) >> +>> endobj +9452 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 331.293 400.508 342.197] +/A << /S /GoTo /D (page.142) >> +>> endobj +9453 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 307.382 400.508 318.286] +/A << /S /GoTo /D (page.142) >> +>> endobj +9454 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 283.472 400.508 294.376] +/A << /S /GoTo /D (page.142) >> +>> endobj +9455 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 259.562 400.508 270.466] +/A << /S /GoTo /D (page.142) >> +>> endobj +9456 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 235.651 400.508 246.555] +/A << /S /GoTo /D (page.142) >> +>> endobj +9457 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 211.741 400.508 222.645] +/A << /S /GoTo /D (page.142) >> +>> endobj +9458 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.571 187.831 400.508 198.735] +/A << /S /GoTo /D (page.142) >> +>> endobj +9459 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.206 163.92 407.143 174.824] +/A << /S /GoTo /D (page.242) >> +>> endobj +9460 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [352.498 152.682 369.434 162.869] +/A << /S /GoTo /D (page.362) >> +>> endobj +9461 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.731 128.055 384.667 138.959] +/A << /S /GoTo /D (page.151) >> +>> endobj +9462 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.085 116.1 378.022 127.004] +/A << /S /GoTo /D (page.151) >> +>> endobj +9467 0 obj << +/D [9465 0 R /XYZ 132.768 705.06 null] +>> endobj +9464 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9524 0 obj << +/Length 752 +/Filter /FlateDecode +>> +stream +xÚŘ]S£0†ïù¹„™-›&ïÜÕíÔYÝrá¬ãt(Ķ;…b ºý÷ +:mE5Ò›¦á<ï9ï! ˜Ö—ÐúüÍ£€¹ŒÊ!¼cק Œ¸”!&àÊ^œœ^:=ù~`cFëðÌ: ­[ É0 ­ËË qj]]CÈ?Ït1 Àýfj +p_NEÕ… 0²~YpG lÓB|×äÖRðòoš»³O5]L¿¸êyÚ˜zÍ„:ºüé!©4aFÃÁøØAÙ¡ƒûÇùðëøüø²º )A*Ø™9´ïĸ(“yV*àˆ°]x¯-d«„áE'裄 ûø»’*‘\ˆU^ +²×÷4’/æÓl2/•Ø4*UV£>ÓfÀè#lÖ]j£áŸÓ®›·Xpþþ»pe竧Òéžôj¦ªó¨¯«|œÌ‹h²àê’æò¬kl– iúºÂ²9–ªÞðÉ+ãŸZiú\šæ‰t‡Øm–·¢Ë5óv Þá²)¢,Ñ©æb>QÒI°.ÓN‘Ee¶éh¬K©NŽe"Ÿ ‘Pc{ oˆP—ÉÇW‚}—Þ¿ÔØñËÛa%P# +UE‘Íêô¡­*P…Z®¶òž­£ÕH²qTð8ÍŸBŸ¸)—ß©òž ^EuGªŠí§Ÿ µ}Ç=“B>M‹<Š¹j£'ý—’ -äê­ÂT.r8€•“I´B?ÂmriªtL›h¦dåAú·4Ù»3Ñuñgæzv&aÀ†jЀlµèÞ 5'ߤ DÛ…lÌsÛ©® †¶Òöm”~Dý÷©ÆŠŸ;Úk3xjæÐP)1™Ä!Ìx$¿É‡±õk5 \¿æ[õÃ÷rù +àã`ûuÀ\LÕžq•> endobj +9463 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [171.795 654.082 188.732 664.986] +/A << /S /GoTo /D (page.362) >> +>> endobj +9468 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 630.889 214.266 641.076] +/A << /S /GoTo /D (page.159) >> +>> endobj +9469 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 606.979 214.266 617.166] +/A << /S /GoTo /D (page.159) >> +>> endobj +9470 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.369 582.351 230.306 593.255] +/A << /S /GoTo /D (page.242) >> +>> endobj +9471 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 559.158 212.044 569.345] +/A << /S /GoTo /D (page.149) >> +>> endobj +9472 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 535.248 212.044 545.435] +/A << /S /GoTo /D (page.149) >> +>> endobj +9473 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 511.338 212.044 521.524] +/A << /S /GoTo /D (page.149) >> +>> endobj +9474 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 487.427 214.266 497.614] +/A << /S /GoTo /D (page.159) >> +>> endobj +9475 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [165.698 474.755 182.635 485.659] +/A << /S /GoTo /D (page.362) >> +>> endobj +9476 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.656 450.844 212.592 461.748] +/A << /S /GoTo /D (page.267) >> +>> endobj +9477 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.656 426.934 212.592 437.838] +/A << /S /GoTo /D (page.267) >> +>> endobj +9478 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.656 403.024 212.592 413.928] +/A << /S /GoTo /D (page.267) >> +>> endobj +9479 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 379.831 211.496 390.017] +/A << /S /GoTo /D (page.175) >> +>> endobj +9480 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 355.92 211.496 366.107] +/A << /S /GoTo /D (page.175) >> +>> endobj +9481 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 332.01 211.496 342.197] +/A << /S /GoTo /D (page.175) >> +>> endobj +9482 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 308.1 211.496 318.286] +/A << /S /GoTo /D (page.175) >> +>> endobj +9483 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 284.189 212.044 294.376] +/A << /S /GoTo /D (page.149) >> +>> endobj +9484 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 260.279 212.044 270.466] +/A << /S /GoTo /D (page.149) >> +>> endobj +9485 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 236.369 214.266 246.555] +/A << /S /GoTo /D (page.191) >> +>> endobj +9486 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 212.458 214.266 222.645] +/A << /S /GoTo /D (page.191) >> +>> endobj +9487 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 188.548 211.496 198.735] +/A << /S /GoTo /D (page.175) >> +>> endobj +9488 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 164.638 211.496 174.824] +/A << /S /GoTo /D (page.176) >> +>> endobj +9489 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 140.727 211.496 150.914] +/A << /S /GoTo /D (page.171) >> +>> endobj +9490 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.56 116.817 211.496 127.004] +/A << /S /GoTo /D (page.171) >> +>> endobj +9491 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.209 654.8 361.145 664.986] +/A << /S /GoTo /D (page.363) >> +>> endobj +9492 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.439 642.844 358.376 653.031] +/A << /S /GoTo /D (page.366) >> +>> endobj +9493 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [343.81 630.889 360.747 641.076] +/A << /S /GoTo /D (page.368) >> +>> endobj +9494 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 606.979 388.333 617.166] +/A << /S /GoTo /D (page.171) >> +>> endobj +9495 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 582.351 391.651 593.255] +/A << /S /GoTo /D (page.198) >> +>> endobj +9496 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [366.883 570.396 383.82 581.3] +/A << /S /GoTo /D (page.371) >> +>> endobj +9497 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 546.486 408.797 557.39] +/A << /S /GoTo /D (page.254) >> +>> endobj +9498 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [376.298 534.531 393.235 545.435] +/A << /S /GoTo /D (page.371) >> +>> endobj +9499 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 510.62 391.651 521.524] +/A << /S /GoTo /D (page.198) >> +>> endobj +9500 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.142 499.382 376.079 509.569] +/A << /S /GoTo /D (page.371) >> +>> endobj +9501 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 474.755 408.797 485.659] +/A << /S /GoTo /D (page.254) >> +>> endobj +9502 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 450.844 391.651 461.748] +/A << /S /GoTo /D (page.199) >> +>> endobj +9503 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.199 439.607 361.135 449.793] +/A << /S /GoTo /D (page.371) >> +>> endobj +9504 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 414.979 408.797 425.883] +/A << /S /GoTo /D (page.254) >> +>> endobj +9505 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [353.613 403.741 370.55 413.928] +/A << /S /GoTo /D (page.371) >> +>> endobj +9506 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 379.113 391.651 390.017] +/A << /S /GoTo /D (page.199) >> +>> endobj +9507 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.757 367.876 361.693 378.062] +/A << /S /GoTo /D (page.371) >> +>> endobj +9508 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 343.248 408.797 354.152] +/A << /S /GoTo /D (page.254) >> +>> endobj +9509 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [354.719 332.01 371.656 342.197] +/A << /S /GoTo /D (page.371) >> +>> endobj +9510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 307.382 391.651 318.286] +/A << /S /GoTo /D (page.199) >> +>> endobj +9511 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.037 296.145 374.973 306.331] +/A << /S /GoTo /D (page.371) >> +>> endobj +9512 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 271.517 408.797 282.421] +/A << /S /GoTo /D (page.255) >> +>> endobj +9513 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [367.451 260.279 384.388 270.466] +/A << /S /GoTo /D (page.371) >> +>> endobj +9514 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 235.651 391.651 246.555] +/A << /S /GoTo /D (page.199) >> +>> endobj +9515 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.738 223.696 366.674 234.6] +/A << /S /GoTo /D (page.371) >> +>> endobj +9516 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 199.786 408.797 210.69] +/A << /S /GoTo /D (page.255) >> +>> endobj +9517 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.153 187.831 376.089 198.735] +/A << /S /GoTo /D (page.371) >> +>> endobj +9518 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 163.92 391.651 174.824] +/A << /S /GoTo /D (page.200) >> +>> endobj +9519 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [346.221 151.965 363.158 162.869] +/A << /S /GoTo /D (page.371) >> +>> endobj +9520 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 128.055 408.797 138.959] +/A << /S /GoTo /D (page.255) >> +>> endobj +9521 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [356.283 116.1 373.22 127.004] +/A << /S /GoTo /D (page.371) >> +>> endobj +9525 0 obj << +/D [9523 0 R /XYZ 132.768 705.06 null] +>> endobj +9522 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9590 0 obj << +/Length 669 +/Filter /FlateDecode +>> +stream +xÚÅY]oÚ0}ϯðc" ÏŽ±÷qj‡Ö‡i[ó0 UU)T“…´]ÿýbºÀ¢Å+—DBrP.çœ{?® A DÐÄû{ï?†)¬„â{DÃRDH(Ž…¢(ž£©ÿéóåÕ÷`*)#Ÿ)ÜÆ×ÞUìýô¨!ˆ6~F±"¥kozKÐܼ¼F3¡ç]è±± ¥ÕWèÆûê‘-¤M —8d¼Ö²-‹t›ëJ¢&Ö„Ž¨!åö}„Ä*îL܃^¼ÛI­5 +öÛÄCÓQȉbj ªÒRâ›4&é!iŹûÒ)>_¬·y’f]ò9ÿ—|qLK)õ!²˜?æ=×ß0âôtáF^v„]0«4)ÿ.€xS¨[*J븋tÈ (Üå»O@‡,ò€ÿ¥w,­à i bÈ+5˜)™îÛL ÂLŸ\ü?;üªró¹€Ú–] °¬f=è4Ùféìp ݲØÓBø°Ç`B5¨¡–´n=èÎmF dèA'Ýåƒ0ÀjxÃJ8•GL"Î$VQx€Þ´…ŸÃÞš¨-Çý?é¼ ]³€í?tKÿÑ›!àý‡>h@N3„9fÔè£äT"wù€=H>+~tæk@E a@…3€–Ê€"]=°£jÿ*¬L°´`&dAÈý'(ÆŽIXV “a›å='`!ªo`˜B5+ÔAvp½yÆâ‹&#pÈâ+Çâç²øeÑwñK°Ô|j^ƒZoéU„%ûŸ;úýÿ+É¢æÝ|¤0VÀ$ÓY‘”Ù<ØéÝèzŒ—õÃe–Öãz ä"d4 +öwÁöé¾ÚÊ6Eý%ÙíkEÀ¤?Z=Ì,ÂìÅBn~½,궯™òoFuÌý +endstream +endobj +9589 0 obj << +/Type /Page +/Contents 9590 0 R +/Resources 9588 0 R +/MediaBox [0 0 612 792] +/Parent 9366 0 R +/Annots [ 9526 0 R 9527 0 R 9528 0 R 9529 0 R 9530 0 R 9531 0 R 9532 0 R 9533 0 R 9534 0 R 9535 0 R 9536 0 R 9537 0 R 9538 0 R 9539 0 R 9540 0 R 9541 0 R 9542 0 R 9543 0 R 9544 0 R 9545 0 R 9546 0 R 9547 0 R 9548 0 R 9549 0 R 9550 0 R 9551 0 R 9552 0 R 9553 0 R 9554 0 R 9555 0 R 9556 0 R 9557 0 R 9558 0 R 9559 0 R 9560 0 R 9561 0 R 9562 0 R 9563 0 R 9564 0 R 9565 0 R 9566 0 R 9567 0 R 9568 0 R 9569 0 R 9570 0 R 9571 0 R 9572 0 R 9573 0 R 9574 0 R 9575 0 R 9576 0 R 9577 0 R 9578 0 R 9579 0 R 9580 0 R 9581 0 R 9582 0 R 9583 0 R 9584 0 R 9585 0 R 9586 0 R ] +>> endobj +9526 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 642.127 214.814 653.031] +/A << /S /GoTo /D (page.200) >> +>> endobj +9527 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [174.007 630.172 190.943 641.076] +/A << /S /GoTo /D (page.371) >> +>> endobj +9528 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 606.262 231.96 617.166] +/A << /S /GoTo /D (page.255) >> +>> endobj +9529 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [183.422 594.306 200.358 605.21] +/A << /S /GoTo /D (page.371) >> +>> endobj +9530 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 570.396 214.814 581.3] +/A << /S /GoTo /D (page.200) >> +>> endobj +9531 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [169.574 558.441 186.51 569.345] +/A << /S /GoTo /D (page.371) >> +>> endobj +9532 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.92 546.486 184.856 557.39] +/A << /S /GoTo /D (page.372) >> +>> endobj +9533 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 522.575 214.814 533.479] +/A << /S /GoTo /D (page.201) >> +>> endobj +9534 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [170.131 511.338 187.068 521.524] +/A << /S /GoTo /D (page.375) >> +>> endobj +9535 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 486.71 231.96 497.614] +/A << /S /GoTo /D (page.256) >> +>> endobj +9536 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.546 475.472 196.482 485.659] +/A << /S /GoTo /D (page.375) >> +>> endobj +9537 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 450.844 214.814 461.748] +/A << /S /GoTo /D (page.201) >> +>> endobj +9538 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.154 438.889 189.091 449.793] +/A << /S /GoTo /D (page.375) >> +>> endobj +9539 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 414.979 231.96 425.883] +/A << /S /GoTo /D (page.256) >> +>> endobj +9540 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [182.216 403.024 199.153 413.928] +/A << /S /GoTo /D (page.375) >> +>> endobj +9541 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 379.113 214.814 390.017] +/A << /S /GoTo /D (page.201) >> +>> endobj +9542 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.92 367.876 184.856 378.062] +/A << /S /GoTo /D (page.375) >> +>> endobj +9543 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 343.248 231.96 354.152] +/A << /S /GoTo /D (page.256) >> +>> endobj +9544 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.334 332.01 194.271 342.197] +/A << /S /GoTo /D (page.375) >> +>> endobj +9545 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 307.382 214.814 318.286] +/A << /S /GoTo /D (page.201) >> +>> endobj +9546 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.378 296.145 185.315 306.331] +/A << /S /GoTo /D (page.375) >> +>> endobj +9547 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 271.517 214.814 282.421] +/A << /S /GoTo /D (page.202) >> +>> endobj +9548 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.028 259.562 211.964 270.466] +/A << /S /GoTo /D (page.375) >> +>> endobj +9549 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 235.651 231.96 246.555] +/A << /S /GoTo /D (page.256) >> +>> endobj +9550 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [204.442 223.696 221.379 234.6] +/A << /S /GoTo /D (page.375) >> +>> endobj +9551 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 199.786 214.814 210.69] +/A << /S /GoTo /D (page.202) >> +>> endobj +9552 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.343 188.548 189.28 198.735] +/A << /S /GoTo /D (page.375) >> +>> endobj +9553 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 163.92 231.96 174.824] +/A << /S /GoTo /D (page.257) >> +>> endobj +9554 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [181.758 152.682 198.694 162.869] +/A << /S /GoTo /D (page.375) >> +>> endobj +9555 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 128.055 214.814 138.959] +/A << /S /GoTo /D (page.202) >> +>> endobj +9556 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [177.882 116.1 194.819 127.004] +/A << /S /GoTo /D (page.375) >> +>> endobj +9557 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 642.127 408.797 653.031] +/A << /S /GoTo /D (page.257) >> +>> endobj +9558 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [364.134 630.172 381.07 641.076] +/A << /S /GoTo /D (page.375) >> +>> endobj +9559 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 606.262 391.651 617.166] +/A << /S /GoTo /D (page.202) >> +>> endobj +9560 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [351.203 594.306 368.139 605.21] +/A << /S /GoTo /D (page.375) >> +>> endobj +9561 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 570.396 408.797 581.3] +/A << /S /GoTo /D (page.257) >> +>> endobj +9562 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.265 558.441 378.201 569.345] +/A << /S /GoTo /D (page.375) >> +>> endobj +9563 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 534.531 391.651 545.435] +/A << /S /GoTo /D (page.203) >> +>> endobj +9564 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.738 523.293 366.674 533.479] +/A << /S /GoTo /D (page.375) >> +>> endobj +9565 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 498.665 408.797 509.569] +/A << /S /GoTo /D (page.258) >> +>> endobj +9566 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [359.153 487.427 376.089 497.614] +/A << /S /GoTo /D (page.375) >> +>> endobj +9567 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 462.8 391.651 473.704] +/A << /S /GoTo /D (page.203) >> +>> endobj +9568 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [350.844 450.844 367.78 461.748] +/A << /S /GoTo /D (page.375) >> +>> endobj +9569 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 426.934 408.797 437.838] +/A << /S /GoTo /D (page.258) >> +>> endobj +9570 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [360.259 414.979 377.195 425.883] +/A << /S /GoTo /D (page.375) >> +>> endobj +9571 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 391.069 391.651 401.973] +/A << /S /GoTo /D (page.203) >> +>> endobj +9572 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [348.074 379.831 365.011 390.017] +/A << /S /GoTo /D (page.375) >> +>> endobj +9573 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 355.203 408.797 366.107] +/A << /S /GoTo /D (page.258) >> +>> endobj +9574 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [358.037 343.965 374.973 354.152] +/A << /S /GoTo /D (page.375) >> +>> endobj +9575 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 319.338 391.651 330.241] +/A << /S /GoTo /D (page.204) >> +>> endobj +9576 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [344.408 308.1 361.345 318.286] +/A << /S /GoTo /D (page.375) >> +>> endobj +9577 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 283.472 391.651 294.376] +/A << /S /GoTo /D (page.204) >> +>> endobj +9578 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [345.863 271.517 362.799 282.421] +/A << /S /GoTo /D (page.375) >> +>> endobj +9579 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 247.607 408.797 258.51] +/A << /S /GoTo /D (page.258) >> +>> endobj +9580 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.277 235.651 372.214 246.555] +/A << /S /GoTo /D (page.375) >> +>> endobj +9581 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 211.741 391.651 222.645] +/A << /S /GoTo /D (page.204) >> +>> endobj +9582 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [346.42 199.786 363.357 210.69] +/A << /S /GoTo /D (page.375) >> +>> endobj +9583 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [391.86 175.876 408.797 186.779] +/A << /S /GoTo /D (page.259) >> +>> endobj +9584 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [355.835 163.92 372.772 174.824] +/A << /S /GoTo /D (page.375) >> +>> endobj +9585 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.714 140.01 391.651 150.914] +/A << /S /GoTo /D (page.204) >> +>> endobj +9586 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [341.997 128.772 358.933 138.959] +/A << /S /GoTo /D (page.375) >> +>> endobj +9591 0 obj << +/D [9589 0 R /XYZ 132.768 705.06 null] +>> endobj +9588 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9643 0 obj << +/Length 809 +/Filter /FlateDecode +>> +stream +xÚÍXáo¢0ýÎ_Ñœ\Km¡ûæ¦[¶ót§\î’e!#Cà·ÛE˜§NGwC¼ÄÔö½×÷{-äÁ@p¡œÚÊçsƒ¦3*.ö@ë&µeD§ Û7êå Ûû©µ fš–Š™¥ÝÚWJÏV~)HÀ@€Ö¦!A¼™rs /þ¼PsÀÓrè ඊò‰!+߸¡®k!XhhJLÝÀ¤ÐâjTS'™Îæ‰ëñOK1…ŠtZÊ](à¦e¨„• +ÐB‚@à·PJJÐy–Šs­!„T}\‰M²‰ _¡e±Ÿ»È^V0Ïü0˜Tp!†äôgñÃkFºÍ˜Ñ´Ê1H¤u¯«œT¬š¥ NBdjM«J8_o­a]ñ2ä(IÓ5Ê?T¡²óE’ÄiÆ}m9ÜçšAÔÇÀãó*¥¯` ‹Ì6s£ÊªÏÜ쾪m™óIÝWÚ_[0ã©Ã#wr'ˆ²½Ì>ORî¹Â['Èø¬ÒP†eØcwîÁ^s½ì9©:õ†RLaœ‡á‰ïÏvlq(ZΈ“,ˆ#7¬¶Ì7ÏžuÄ”ÿZ)÷ÿ‘¾ ŠÍÒŒé"òj‰4‘¡³8§‚ê÷±Ó´6T‡£½ì‹,ì)¨Š³Eßb¦+æ¯#§3:uúñ}`N²ÎÙÍ—ÙY¾ÒØÃjÇéä¿œ}9®ˆ†‰ÚŒ’Œû5`JÓn/y5q€ïÏLtÆ$Æ®1†òœïˆ!mPD½1”Wr”Ú;c؈ùƒ¡s986¶ÖQ¯Ó=0]#»vÆE F…jskü÷™â\œuúýÆCµ® ÖP[rÞú„³¤M8ôÑ"¯¤æÈס þ/ª±Oʱjr¤!%d©Ãëæ–jã4Øà?à‹ÆGD'y¶Óïì’óqLZÁ›9 ‡¢Ýz¯¦ììW3K7ñ{ºÕ/sª3[ës‹é˜–B.xÄSwÕsŠ£âjß/Š›.÷Š›vqAðÄÀ'ÈÒÊ,ïîòöDœ_Üeã*Õ°©¶Â`R"LžKÈø÷ó”GÛKþKŠÛ +endstream +endobj +9642 0 obj << +/Type /Page +/Contents 9643 0 R +/Resources 9641 0 R +/MediaBox [0 0 612 792] +/Parent 9366 0 R +/Annots [ 9587 0 R 9592 0 R 9593 0 R 9594 0 R 9595 0 R 9596 0 R 9597 0 R 9598 0 R 9599 0 R 9600 0 R 9601 0 R 9602 0 R 9603 0 R 9604 0 R 9605 0 R 9606 0 R 9607 0 R 9608 0 R 9609 0 R 9610 0 R 9611 0 R 9612 0 R 9613 0 R 9614 0 R 9615 0 R 9616 0 R 9617 0 R 9618 0 R 9619 0 R 9620 0 R 9621 0 R 9622 0 R 9623 0 R 9624 0 R 9625 0 R 9626 0 R 9627 0 R 9628 0 R 9629 0 R 9630 0 R 9631 0 R 9632 0 R 9633 0 R 9634 0 R 9635 0 R 9636 0 R 9637 0 R 9638 0 R 9639 0 R ] +>> endobj +9587 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [215.023 654.082 231.96 664.986] +/A << /S /GoTo /D (page.259) >> +>> endobj +9592 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [175.123 642.844 192.059 653.031] +/A << /S /GoTo /D (page.375) >> +>> endobj +9593 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 618.934 214.266 629.121] +/A << /S /GoTo /D (page.191) >> +>> endobj +9594 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 594.306 214.814 605.21] +/A << /S /GoTo /D (page.205) >> +>> endobj +9595 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [167.362 583.069 184.298 593.255] +/A << /S /GoTo /D (page.375) >> +>> endobj +9596 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 558.441 214.814 569.345] +/A << /S /GoTo /D (page.205) >> +>> endobj +9597 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [176.229 547.203 193.165 557.39] +/A << /S /GoTo /D (page.376) >> +>> endobj +9598 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 523.293 214.266 533.479] +/A << /S /GoTo /D (page.191) >> +>> endobj +9599 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 499.382 214.266 509.569] +/A << /S /GoTo /D (page.192) >> +>> endobj +9600 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.878 474.755 214.814 485.659] +/A << /S /GoTo /D (page.205) >> +>> endobj +9601 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [168.478 462.8 185.414 473.704] +/A << /S /GoTo /D (page.376) >> +>> endobj +9602 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.165 450.844 216.139 461.748] +/A << /S /GoTo /D (page.2) >> +>> endobj +9603 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 417.689 212.044 427.875] +/A << /S /GoTo /D (page.149) >> +>> endobj +9604 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 393.778 212.044 403.965] +/A << /S /GoTo /D (page.149) >> +>> endobj +9605 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [227.396 369.151 244.333 380.055] +/A << /S /GoTo /D (page.293) >> +>> endobj +9606 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 345.24 196.194 356.144] +/A << /S /GoTo /D (page.130) >> +>> endobj +9607 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 321.33 196.194 332.234] +/A << /S /GoTo /D (page.130) >> +>> endobj +9608 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [194.769 309.375 206.724 320.279] +/A << /S /GoTo /D (page.87) >> +>> endobj +9609 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.307 297.42 207.262 308.324] +/A << /S /GoTo /D (page.87) >> +>> endobj +9610 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [179.258 273.509 196.194 284.413] +/A << /S /GoTo /D (page.130) >> +>> endobj +9611 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [195.108 250.316 212.044 260.503] +/A << /S /GoTo /D (page.150) >> +>> endobj +9612 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 226.406 205.618 236.593] +/A << /S /GoTo /D (page.286) >> +>> endobj +9613 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 202.496 205.618 212.682] +/A << /S /GoTo /D (page.286) >> +>> endobj +9614 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 178.585 205.618 188.772] +/A << /S /GoTo /D (page.286) >> +>> endobj +9615 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 154.675 205.618 164.862] +/A << /S /GoTo /D (page.286) >> +>> endobj +9616 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 130.765 205.618 140.951] +/A << /S /GoTo /D (page.287) >> +>> endobj +9617 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 654.8 382.455 664.986] +/A << /S /GoTo /D (page.287) >> +>> endobj +9618 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 630.889 382.455 641.076] +/A << /S /GoTo /D (page.287) >> +>> endobj +9619 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 606.979 382.455 617.166] +/A << /S /GoTo /D (page.287) >> +>> endobj +9620 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 583.069 382.455 593.255] +/A << /S /GoTo /D (page.287) >> +>> endobj +9621 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 559.158 382.455 569.345] +/A << /S /GoTo /D (page.287) >> +>> endobj +9622 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 535.248 382.455 545.435] +/A << /S /GoTo /D (page.287) >> +>> endobj +9623 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 511.338 382.455 521.524] +/A << /S /GoTo /D (page.287) >> +>> endobj +9624 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 487.427 382.455 497.614] +/A << /S /GoTo /D (page.287) >> +>> endobj +9625 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 463.517 382.455 473.704] +/A << /S /GoTo /D (page.287) >> +>> endobj +9626 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 439.607 382.455 449.793] +/A << /S /GoTo /D (page.287) >> +>> endobj +9627 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 415.696 382.455 425.883] +/A << /S /GoTo /D (page.288) >> +>> endobj +9628 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 391.786 382.455 401.973] +/A << /S /GoTo /D (page.288) >> +>> endobj +9629 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 367.876 382.455 378.062] +/A << /S /GoTo /D (page.288) >> +>> endobj +9630 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 343.965 382.455 354.152] +/A << /S /GoTo /D (page.288) >> +>> endobj +9631 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 320.055 382.455 330.241] +/A << /S /GoTo /D (page.288) >> +>> endobj +9632 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 296.145 382.455 306.331] +/A << /S /GoTo /D (page.288) >> +>> endobj +9633 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 272.234 382.455 282.421] +/A << /S /GoTo /D (page.288) >> +>> endobj +9634 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 248.324 382.455 258.51] +/A << /S /GoTo /D (page.288) >> +>> endobj +9635 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 224.414 382.455 234.6] +/A << /S /GoTo /D (page.288) >> +>> endobj +9636 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 200.503 382.455 210.69] +/A << /S /GoTo /D (page.288) >> +>> endobj +9637 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 176.593 382.455 186.779] +/A << /S /GoTo /D (page.288) >> +>> endobj +9638 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 152.682 382.455 162.869] +/A << /S /GoTo /D (page.289) >> +>> endobj +9639 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [365.519 128.772 382.455 138.959] +/A << /S /GoTo /D (page.289) >> +>> endobj +9644 0 obj << +/D [9642 0 R /XYZ 132.768 705.06 null] +>> endobj +9641 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9694 0 obj << +/Length 762 +/Filter /FlateDecode +>> +stream +xÚÅX]Sâ0}ï¯Èc;³tóѤ‰o¨è¢¨»PWg§S¡bg ¸%øñï7Т evbyJ3äžsÏ¡¹\.CÁ±µXß0ÂL-Á=@„¸>〠ê2@07vûü°uí4°ð}n!œÛàÄjÖ )ÐJr¤ ?¶nn!¨Ot‰ààyqt ˆ§Ž¢yàô¬_\Ë®æB‰ÊÁŒú.&4Ïe&“Q(Ÿ“o‹$rölX¤Ñ=¶ÀMShc.Š9:h ¬pHeH °à*ìŽ vÓAÙÁeoÊŽ~1oxÖì~19{#¿ê¶ƒV=RŽûPD|¶ŽA+ ÄsŒËýn7üí Bífç²"ñi,ï¢Ù 2yO#ù9ñ1wþÉÌþƒ™ê0·ÏăZ#Cû) §r¤²‚Q¡ÏyÖ¼®“u¦€«Üèívœ k*%¸~wçÜU¬µ»Ë¼úÝUœu¹ËÞÝU¬Ò§¶»¼~s¹AoÔô–›³–h^–ðÞAÐŽ²G™i«ùúO«è=¢isxäøžÝì™-ÄÚ†ê§*ò×Y¿¦ý½L¾E½E#ÁTK%Ô¼´ÄŒòZ“›ª«G»Éò¶µöúŠN™tnîgS[y§UïÝ_Õ=Šë¼øì£j£ÍÑ–ªwrê6-úu~¡z'w{¡šïî«æõ¿ßJ«±†MKí’t&£s{šÿ º&µ"M­z=¢ ­KÒ‘œD:¿I£ä®ŠPèüÙ˜¥ÃXöµ$Nª?Ž—ÊßÜ^+Ä×f&÷;§U¢}ZÚ6—Ž‰w}²Íx9¨f®ð _TsáVä}§qɸðo’ækð0Ëã~þàå ‚{˜ì!žï0„|i8¦ö$Ë7Ñ|ó”9Ä·êå.î^ ÈÉËë0Nפ+ÉØ´{» +endstream +endobj +9693 0 obj << +/Type /Page +/Contents 9694 0 R +/Resources 9692 0 R +/MediaBox [0 0 612 792] +/Parent 9696 0 R +/Annots [ 9640 0 R 9645 0 R 9646 0 R 9647 0 R 9648 0 R 9649 0 R 9650 0 R 9651 0 R 9652 0 R 9653 0 R 9654 0 R 9655 0 R 9656 0 R 9657 0 R 9658 0 R 9659 0 R 9660 0 R 9661 0 R 9662 0 R 9663 0 R 9664 0 R 9665 0 R 9666 0 R 9667 0 R 9668 0 R 9669 0 R 9670 0 R 9671 0 R 9672 0 R 9673 0 R 9674 0 R 9675 0 R 9676 0 R 9677 0 R 9678 0 R 9679 0 R 9680 0 R 9681 0 R 9682 0 R 9683 0 R 9684 0 R 9685 0 R 9686 0 R 9687 0 R 9688 0 R 9689 0 R 9690 0 R ] +>> endobj +9640 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 654.8 205.618 664.986] +/A << /S /GoTo /D (page.289) >> +>> endobj +9645 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 630.889 205.618 641.076] +/A << /S /GoTo /D (page.289) >> +>> endobj +9646 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 606.979 205.618 617.166] +/A << /S /GoTo /D (page.289) >> +>> endobj +9647 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [188.682 583.069 205.618 593.255] +/A << /S /GoTo /D (page.289) >> +>> endobj +9648 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [157.957 571.113 174.894 581.3] +/A << /S /GoTo /D (page.376) >> +>> endobj +9649 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.385 537.24 223.322 547.427] +/A << /S /GoTo /D (page.284) >> +>> endobj +9650 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.385 513.33 223.322 523.517] +/A << /S /GoTo /D (page.284) >> +>> endobj +9651 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.385 489.42 223.322 499.606] +/A << /S /GoTo /D (page.285) >> +>> endobj +9652 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 465.509 214.266 475.696] +/A << /S /GoTo /D (page.159) >> +>> endobj +9653 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 441.599 214.266 451.786] +/A << /S /GoTo /D (page.159) >> +>> endobj +9654 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 417.689 214.266 427.875] +/A << /S /GoTo /D (page.162) >> +>> endobj +9655 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 393.778 214.266 403.965] +/A << /S /GoTo /D (page.159) >> +>> endobj +9656 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 369.868 214.266 380.055] +/A << /S /GoTo /D (page.159) >> +>> endobj +9657 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 345.958 214.266 356.144] +/A << /S /GoTo /D (page.162) >> +>> endobj +9658 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 322.047 214.266 332.234] +/A << /S /GoTo /D (page.159) >> +>> endobj +9659 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 298.137 214.266 308.324] +/A << /S /GoTo /D (page.159) >> +>> endobj +9660 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 274.227 214.266 284.413] +/A << /S /GoTo /D (page.162) >> +>> endobj +9661 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 250.316 214.266 260.503] +/A << /S /GoTo /D (page.159) >> +>> endobj +9662 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 226.406 214.266 236.593] +/A << /S /GoTo /D (page.160) >> +>> endobj +9663 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 202.496 214.266 212.682] +/A << /S /GoTo /D (page.163) >> +>> endobj +9664 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [206.734 177.868 223.671 188.772] +/A << /S /GoTo /D (page.143) >> +>> endobj +9665 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 154.675 214.266 164.862] +/A << /S /GoTo /D (page.160) >> +>> endobj +9666 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [197.33 130.765 214.266 140.951] +/A << /S /GoTo /D (page.163) >> +>> endobj +9667 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 654.8 391.103 664.986] +/A << /S /GoTo /D (page.160) >> +>> endobj +9668 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 630.889 391.103 641.076] +/A << /S /GoTo /D (page.163) >> +>> endobj +9669 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 606.979 391.103 617.166] +/A << /S /GoTo /D (page.160) >> +>> endobj +9670 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 583.069 391.103 593.255] +/A << /S /GoTo /D (page.163) >> +>> endobj +9671 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 559.158 391.103 569.345] +/A << /S /GoTo /D (page.160) >> +>> endobj +9672 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 535.248 391.103 545.435] +/A << /S /GoTo /D (page.163) >> +>> endobj +9673 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 511.338 391.103 521.524] +/A << /S /GoTo /D (page.160) >> +>> endobj +9674 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 487.427 391.103 497.614] +/A << /S /GoTo /D (page.163) >> +>> endobj +9675 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 463.517 391.103 473.704] +/A << /S /GoTo /D (page.160) >> +>> endobj +9676 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 439.607 391.103 449.793] +/A << /S /GoTo /D (page.163) >> +>> endobj +9677 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 415.696 391.103 425.883] +/A << /S /GoTo /D (page.160) >> +>> endobj +9678 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 391.786 391.103 401.973] +/A << /S /GoTo /D (page.163) >> +>> endobj +9679 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 367.876 391.103 378.062] +/A << /S /GoTo /D (page.160) >> +>> endobj +9680 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 343.965 391.103 354.152] +/A << /S /GoTo /D (page.163) >> +>> endobj +9681 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 320.055 391.103 330.241] +/A << /S /GoTo /D (page.160) >> +>> endobj +9682 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 296.145 391.103 306.331] +/A << /S /GoTo /D (page.160) >> +>> endobj +9683 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 272.234 391.103 282.421] +/A << /S /GoTo /D (page.164) >> +>> endobj +9684 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 248.324 391.103 258.51] +/A << /S /GoTo /D (page.161) >> +>> endobj +9685 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 224.414 391.103 234.6] +/A << /S /GoTo /D (page.164) >> +>> endobj +9686 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 200.503 391.103 210.69] +/A << /S /GoTo /D (page.192) >> +>> endobj +9687 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 176.593 388.333 186.779] +/A << /S /GoTo /D (page.176) >> +>> endobj +9688 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [383.222 152.682 400.159 162.869] +/A << /S /GoTo /D (page.285) >> +>> endobj +9689 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [439.002 140.01 455.939 150.914] +/A << /S /GoTo /D (page.322) >> +>> endobj +9690 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [411.267 116.817 428.204 127.004] +/A << /S /GoTo /D (page.275) >> +>> endobj +9695 0 obj << +/D [9693 0 R /XYZ 132.768 705.06 null] +>> endobj +9692 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9764 0 obj << +/Length 984 +/Filter /FlateDecode +>> +stream +xÚÅ™QsšJÇßùû3Wº ²°}Óˆ¹i¦€·ÉtvHÂŒBŠhšo_pÉD¸‹bïK€°þþÿsœ…‚GÁµÔ÷¤OC ¢\l¼€t]5±01TLðBp/ߌö¥£Ó´ä.„ÊOï‹d{Ò/ ÐÖÏJ ‚…tÿ‚°8ù@U'xÙ ]½[ EåçÀ•¾IpÇ Üöbè…‡.À†©jºÁ¼ô„ì)È’'·7Wt8q®ìÉøŸ'f&{¬\9׸ïh”5Ó¨0±âOVªc»ì`³Cô·ö™:ãÉXÑrýÑäêëeÐ,?Ã!—ŽO¡7Ï*ê«3øñŽNTË@»Vy<§A”Cï(O"LWÏ¡ŸGÜxÍ£ñ–,qž‹ò,>/ž),âÈÓ¤EêïEF Q ÙËôN"ñV¦Ãhî¿Öçzsš.–> endobj +9691 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [247.163 654.8 264.099 664.986] +/A << /S /GoTo /D (page.275) >> +>> endobj +9697 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [273.733 642.844 290.669 653.031] +/A << /S /GoTo /D (page.275) >> +>> endobj +9698 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.661 630.889 272.597 641.076] +/A << /S /GoTo /D (page.275) >> +>> endobj +9699 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [272.278 618.934 289.215 629.121] +/A << /S /GoTo /D (page.276) >> +>> endobj +9700 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.623 596.364 189.559 605.21] +/A << /S /GoTo /D (page.276) >> +>> endobj +9701 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.328 570.396 233.265 581.3] +/A << /S /GoTo /D (page.277) >> +>> endobj +9702 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.502 558.441 245.439 569.345] +/A << /S /GoTo /D (page.278) >> +>> endobj +9703 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [239.382 546.486 256.318 557.39] +/A << /S /GoTo /D (page.278) >> +>> endobj +9704 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.216 534.531 263.153 545.435] +/A << /S /GoTo /D (page.279) >> +>> endobj +9705 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [200.846 510.62 217.783 521.524] +/A << /S /GoTo /D (page.280) >> +>> endobj +9706 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.077 498.665 215.013 509.569] +/A << /S /GoTo /D (page.281) >> +>> endobj +9707 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.896 474.755 233.833 485.659] +/A << /S /GoTo /D (page.282) >> +>> endobj +9708 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [216.896 462.8 233.833 473.704] +/A << /S /GoTo /D (page.282) >> +>> endobj +9709 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [219.815 438.889 236.752 449.793] +/A << /S /GoTo /D (page.282) >> +>> endobj +9710 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [209.176 415.696 226.112 425.883] +/A << /S /GoTo /D (page.284) >> +>> endobj +9711 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [222.196 403.741 239.133 413.928] +/A << /S /GoTo /D (page.284) >> +>> endobj +9712 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [229.389 391.786 246.326 401.973] +/A << /S /GoTo /D (page.284) >> +>> endobj +9713 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [228.284 379.831 245.22 390.017] +/A << /S /GoTo /D (page.285) >> +>> endobj +9714 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [193.654 367.876 210.59 378.062] +/A << /S /GoTo /D (page.285) >> +>> endobj +9715 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [235.227 343.965 252.164 354.152] +/A << /S /GoTo /D (page.286) >> +>> endobj +9716 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.006 332.01 265.942 342.197] +/A << /S /GoTo /D (page.286) >> +>> endobj +9717 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.484 320.055 266.421 330.241] +/A << /S /GoTo /D (page.286) >> +>> endobj +9718 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [256.328 308.1 273.265 318.286] +/A << /S /GoTo /D (page.286) >> +>> endobj +9719 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [243.068 296.145 260.005 306.331] +/A << /S /GoTo /D (page.287) >> +>> endobj +9720 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.912 284.189 266.849 294.376] +/A << /S /GoTo /D (page.287) >> +>> endobj +9721 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.448 272.234 265.384 282.421] +/A << /S /GoTo /D (page.287) >> +>> endobj +9722 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [248.926 260.279 265.863 270.466] +/A << /S /GoTo /D (page.287) >> +>> endobj +9723 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [255.771 248.324 272.707 258.51] +/A << /S /GoTo /D (page.287) >> +>> endobj +9724 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [242.51 236.369 259.447 246.555] +/A << /S /GoTo /D (page.287) >> +>> endobj +9725 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [249.355 224.414 266.291 234.6] +/A << /S /GoTo /D (page.287) >> +>> endobj +9726 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [220.762 212.458 237.698 222.645] +/A << /S /GoTo /D (page.287) >> +>> endobj +9727 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [205.27 200.503 222.206 210.69] +/A << /S /GoTo /D (page.287) >> +>> endobj +9728 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [231.432 188.548 248.368 198.735] +/A << /S /GoTo /D (page.287) >> +>> endobj +9729 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [198.237 164.638 215.173 174.824] +/A << /S /GoTo /D (page.287) >> +>> endobj +9730 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [172.623 142.067 189.559 150.914] +/A << /S /GoTo /D (page.288) >> +>> endobj +9731 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [246.167 128.772 263.103 138.959] +/A << /S /GoTo /D (page.288) >> +>> endobj +9732 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [253.011 116.817 269.947 127.004] +/A << /S /GoTo /D (page.288) >> +>> endobj +9733 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [430.973 654.8 447.91 664.986] +/A << /S /GoTo /D (page.288) >> +>> endobj +9734 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [461.19 642.844 478.127 653.031] +/A << /S /GoTo /D (page.288) >> +>> endobj +9735 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.46 620.274 366.396 629.121] +/A << /S /GoTo /D (page.288) >> +>> endobj +9736 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.587 606.979 433.524 617.166] +/A << /S /GoTo /D (page.288) >> +>> endobj +9737 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [396.333 595.024 413.27 605.21] +/A << /S /GoTo /D (page.288) >> +>> endobj +9738 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [349.46 572.453 366.396 581.3] +/A << /S /GoTo /D (page.288) >> +>> endobj +9739 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [422.446 559.158 439.382 569.345] +/A << /S /GoTo /D (page.288) >> +>> endobj +9740 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [429.29 547.203 446.226 557.39] +/A << /S /GoTo /D (page.288) >> +>> endobj +9741 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [426.72 535.248 443.656 545.435] +/A << /S /GoTo /D (page.289) >> +>> endobj +9742 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [416.03 523.293 432.966 533.479] +/A << /S /GoTo /D (page.289) >> +>> endobj +9743 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.016 511.338 401.952 521.524] +/A << /S /GoTo /D (page.289) >> +>> endobj +9744 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.595 499.382 407.532 509.569] +/A << /S /GoTo /D (page.289) >> +>> endobj +9745 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [424.358 487.427 441.295 497.614] +/A << /S /GoTo /D (page.289) >> +>> endobj +9746 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [386.53 475.472 403.467 485.659] +/A << /S /GoTo /D (page.289) >> +>> endobj +9747 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [374.166 451.562 391.103 461.748] +/A << /S /GoTo /D (page.193) >> +>> endobj +9748 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 417.689 388.333 427.875] +/A << /S /GoTo /D (page.176) >> +>> endobj +9749 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 393.778 388.333 403.965] +/A << /S /GoTo /D (page.179) >> +>> endobj +9750 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 369.868 388.333 380.055] +/A << /S /GoTo /D (page.179) >> +>> endobj +9751 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 345.958 388.333 356.144] +/A << /S /GoTo /D (page.181) >> +>> endobj +9752 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 322.047 388.333 332.234] +/A << /S /GoTo /D (page.182) >> +>> endobj +9753 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 298.137 388.333 308.324] +/A << /S /GoTo /D (page.182) >> +>> endobj +9754 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 274.227 388.333 284.413] +/A << /S /GoTo /D (page.182) >> +>> endobj +9755 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 250.316 388.333 260.503] +/A << /S /GoTo /D (page.182) >> +>> endobj +9756 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 226.406 388.333 236.593] +/A << /S /GoTo /D (page.182) >> +>> endobj +9757 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [371.397 202.496 388.333 212.682] +/A << /S /GoTo /D (page.182) >> +>> endobj +9758 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [337.006 180.578 353.943 190.765] +/A << /S /GoTo /D (page.377) >> +>> endobj +9759 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.655 155.95 407.591 166.854] +/A << /S /GoTo /D (page.270) >> +>> endobj +9760 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [390.655 132.04 407.591 142.944] +/A << /S /GoTo /D (page.270) >> +>> endobj +9765 0 obj << +/D [9763 0 R /XYZ 132.768 705.06 null] +>> endobj +9762 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9778 0 obj << +/Length 356 +/Filter /FlateDecode +>> +stream +xÚÅ•QkÂ0Çßó)î±…5»$Mšø8t2ÁÍÂ"Rm­µ¬8ß~Ñt â„­}º;rw¿ÿÝÃ!„.¹‹Éí=W`¨QÖÄ3`BÐHiPFReÄ) ½‡Çvç͸‰"í…ÈüQÜ#˜|fÛ °£2F J˜.Ép„ÚÇ FÃöºÚT¶/\À€<<Ñ‚ÇZ¤°BP2¢\H§%ñ9z›r¼õzÉz:O‹üæ È))óJÒK—À0à=±*Á‘ `b³jeÕøµûL{OcƱ?ØÀ¥´ø²V¼:Çÿ1œ_3»-é7ʯ~¾yÑììa“p‰õ¾{Õìîõ¿Â³O¸Ñ4×ðŸODQ }ü‰hC…ªÆèf«¬LÖYê$+gãù§sÚÙÔ9¡3 [\´˜vG¬¼™Ï¥W”.HöÁ¦ôEä‹÷IÕa²«Z_»<[¬ÂŽü 𶕦 +endstream +endobj +9777 0 obj << +/Type /Page +/Contents 9778 0 R +/Resources 9776 0 R +/MediaBox [0 0 612 792] +/Parent 9696 0 R +/Annots [ 9761 0 R 9766 0 R 9767 0 R 9768 0 R 9769 0 R 9770 0 R 9771 0 R 9772 0 R 9773 0 R 9774 0 R 9775 0 R ] +>> endobj +9761 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 654.082 230.754 664.986] +/A << /S /GoTo /D (page.271) >> +>> endobj +9766 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 630.172 230.754 641.076] +/A << /S /GoTo /D (page.271) >> +>> endobj +9767 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 606.262 230.754 617.166] +/A << /S /GoTo /D (page.271) >> +>> endobj +9768 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 582.351 230.754 593.255] +/A << /S /GoTo /D (page.272) >> +>> endobj +9769 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 558.441 230.754 569.345] +/A << /S /GoTo /D (page.272) >> +>> endobj +9770 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 534.531 230.754 545.435] +/A << /S /GoTo /D (page.272) >> +>> endobj +9771 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 510.62 230.754 521.524] +/A << /S /GoTo /D (page.272) >> +>> endobj +9772 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 486.71 230.754 497.614] +/A << /S /GoTo /D (page.272) >> +>> endobj +9773 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 462.8 230.754 473.704] +/A << /S /GoTo /D (page.272) >> +>> endobj +9774 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 438.889 230.754 449.793] +/A << /S /GoTo /D (page.272) >> +>> endobj +9775 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [213.818 414.979 230.754 425.883] +/A << /S /GoTo /D (page.272) >> +>> endobj +9779 0 obj << +/D [9777 0 R /XYZ 132.768 705.06 null] +>> endobj +9776 0 obj << +/Font << /F26 1917 0 R /F20 1882 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +9780 0 obj +[769.8] +endobj +9782 0 obj +[556 167 333 611 278 333 333 0 333 606 0 611 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 389 555 500 500 833 778 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 832 667 667 667 722 667 667 722 778 389 500 667 611 889 722 722 611 722 667 556 611 722 667 889 667 611 611 333 278 333 570 500 333 500 500 444 500 444 333 500 556 278 278 500 278 778 556 500 500 500 389 389 278 556 444 667 500 444 389] +endobj +9783 0 obj +[761.6 489.6 761.6] +endobj +9784 0 obj +[531.3] +endobj +9785 0 obj +[500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500] +endobj +9786 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +9787 0 obj +[500 500 167 333 556 278 333 333 0 333 675 0 556 389 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 214 250 333 420 500 500 833 778 333 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389] +endobj +9788 0 obj +[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] +endobj +9789 0 obj +[777.8 500 777.8] +endobj +9790 0 obj +[556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] +endobj +9791 0 obj +[556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500 1000 333 980 389 333 722 0 0 722 0 333 500 500 500 500 200 500 333 760 276 500 564 333 760 333 400 564 300 300 333 500 453 250 333 300 310 500] +endobj +9792 0 obj << +/Length1 771 +/Length2 1129 +/Length3 0 +/Length 1673 +/Filter /FlateDecode +>> +stream +xÚ­RkXSW• 0€b[¦ + EÈM <"¯ˆ ž ÃpŒp§yИ „ͧ!€<#ÅÙ9D¹Šc›¸dšŸŸ7ˆPˆÝ >L†'“áCq!¸T%CSR àâ:/ò, ”¡<.Ø\"JÈ<®Äá<*À‹Aìü 9ˆ…r(Kƒ| +ø(É0Å(ÔyOá˜>¯`¾BúšJƒ29i +¸,Øt¤I>Ž‰U€j4NNƒ¤—ÿ‡­ÅÍÃbq4W2ß~!©?ñ\ *Vý®À%Re€ó¡ [,M€¯Ì±!UH³áWŒòXXŠwš—âõ +Gåa¨òcP‚— +\±.àã/vBæ·àƒ·=,fc¼ÛïO»@ÆpQŒø@%…ùC½PÓþ¨Éd¨|ˆx ’ßëSâ¢a¡ç£X + 3¼W&ãª(䑨iÅøP  ’tLõÀp‚¼Èd2€—QæßÕ›¨)ó«F†E¯0PÅP._þük7âJµ»'¸Óä(ÄËø0Œÿò2Ĉ…õ!z] P2S•Gé½…ó6d ‹.|R±'ôLGåWù*mYvkCN­vƒÇ¸~ÃònYÝõ ý#›!zÖºp"ò*_À´»ÀJoRÇQszlš,m]KOÄ-3ðÆ9;MšK®ê¬$§öô: KëÜ }k§Ò–TEÒ|¾°›8`ZñÓ­S{D™mƒ½æŸñ×Þ+¤$–|uÆ?8Òòüáfü ÞûUó›œÓ+^öÚénw‰ú-µ~Kع© ˜û+âªÜi£ÐNŠz·ûEÄ1ÍVywÇŸÖ£¿8j·Ö_Œdÿbv·ÓÕﮣ֢+\“Q¸%!|ë“·+K—ó*ÞlþÊΞÓíøAˆ]É>÷¾f¹è\= €&­;î»ëÙ çGNy¦ggõ3¿´ûÁÀS;½õ­I‚›ïÉ 4·q×VÄnÉ}MŽÛ¹©ÇFVнyðÁ«’ö ;éõOÙ`›ßÍ,Û[åûÖöÒ)£Ìg’¢ÓëÙ;Üj.6}Ê UùmÿÁùüPóŠÆöPðã©55ÇïôJÌ’nÚë…ìÎî/žM¼ß‡»?cì**3+9u$r̼!(o3ó[›³ Û¢+=Ÿü2ÞtEIõøÇdUdä[> ÛZ]t^ãÎ< +êŸ<Þ·Åy™Í…šûå:ÚædGNX­ïwu›Š'×å?ŸÿM›Â(ö? Ò{ÍÞÕ¾;\ø¹õ4c¨µãHr}Úªv")蘨ðÎgOÖî>`µiì}‡Î³Ã?¢¨gr碯 ,UúšŸ‡ÛtBÞÜWßrÛ?iKôþþ=Oâ Yûÿ­ÑÉ­³OºTVn&ž[1“°÷]n\Qª›ËG禟Ž{3u]ÖVÁ‘?Iß ý—Ö«êħ8«¿³rŠåmZº1TßÍh9iâp^èýX Ì2Ðw¶xî,VµZ/ù´v½énÃ.êÜýú÷&f»¹ïJß’vaÕá©´——7¼·ôi|ÐþQ­”àU-XoÖ¹×Rç¯(íž.+Z1°§ºÍ¸êVáÑœ¨}ôÚj'¯=˜ºè$_ +Ý(ã¶ohügÌÕú½ýk®Ï‘ÄD{WÂs@oœüNuÒiCj£âž‚u”³nR?”g1¾²øûG©Ø6ìKëôzqÿÝŸ¯Ùk*V-íÊ6(5.lïÊnã3‚$‹nqxv°W£ºR´,¡Í"j2Ó·<Ä>¡Ce6a†ÑG9o*„ô:ªÊPìØ vHÏŒ­ ÚÒ).ÇwÚ*= ªqàØÈÇ´áð)¯Ë†£ÁÿÎRÝKâT$¦"ïÇ_´ý°gX>l}h¦&oV6{"‚ÁŸÌ}Ýj–{(õ×/µ‡‡t×'>Ê÷Úè7{C³7ÿFó[Âô²Ü`½¤ýÒUÿÕþNƒyÜë7;FÞøe°Èár[ľØìz}ð=ËÇñ›> endobj +9794 0 obj << +/Length1 771 +/Length2 1129 +/Length3 0 +/Length 1674 +/Filter /FlateDecode +>> +stream +xÚ­RkTSWŠ &R£LÁ’— ‘‡µy($ P4ÐÆä.&÷âMB‰ Q¶Øº„V¬ÂŠ€bq0E J‘‘© +" Á¢ o‚"`µsÁºº†þuþœoï}¾oŸ}ymh¸G„îüQDîF§Ð=/—»ÎøžF#ɾ$Ã(²U ‡<ÝÃÃlWHƒ h› ½ü?l-mî¯HxéBûŤþÄ ¤°Dù»•&(丨¥ÒÐs\H+¤KÙmrr±nt&…Æ|ƒÃ28 …ÂraˆHdÐ"!¢¥Nðü}PwðvnøýiÉPŒÈ#”  ý¡^¬éÔxHœvÓ(4âëí.zÉ0?DˆŠ`D ,w À0’@Ã[1X,L0"‚’”„;¦RTŽx2@,ŠÞըⅯ†‡…o0 J ™løóÕ||Фd·4àÆ`á£h wÀfÑüP¨À0‘/~< ·u,Œg +AI ëF…^ñ'jW¤ú•´Ÿ5v‘Ù”eܨÏÔxQÆz½¬:±KmКg¤LR<|Ž˜7tž*Še=´«á¤h“é™÷HZ k—â“á&á?fÙõ¢–Æ÷¤§³†tŽ —6zœfúë«‚GèlµÝÄ‘åw»_M§îUÝ|¨3Ë9 梋ê‚s¡Èá¾ì_æÇÐTWzÝ–rfåk]ノ½z‹/‹¸FÝåS»ªr ë+š÷õùM)3a¡ï8ظ#5¯l6{ÍÏî±zÜ¥óÈ–©Ž2¤ÌäT½oNkßÖe™—_Úœ¶Ìï$kNúZ߬Rm-4É ©/{Û4Úx¯XógVBšü¬ënŠ©¿òc¢CEâÊsð7“·?BëTÓ–•…Ù?š¹>Oqö.¡’J¯ù ³ú?T^œÿÍýôìHUUƾ_B“ô–dõóÁ*ÿFf[”«ýðtá_‹«K³"ÙòU©ç¹'ºVO•§ÃFéÊÁ, + ¤ 4œòj˜½1«²K_U»ñ”ë‡ë+VþˆdØ'[DoY}Û™{ùPõò£“Ô~«Ù2™ÇÜ8cê¿<~ß㟌§U/‚ Ý"¥ÈÜ«®WúyQ;“nS~§¶_uÝl“+Ñ ½ÆØíÁ1ý÷ô¿X–_¬¼Ðñ°Ðä]_5oLÆ4 ÙÿD£±ºga»3ÿ,1ú“//>µg©ôÛꇓšnPŽ2ÉWž±¹dAù ÚlØ«nÆ–?ûÛÍûýN"xVÑÏ™Çäißí¹êÇ}ryÇz…i§Ïðq(þ!´aÌbÒ]®¬˜OÓ±_ ¯Æ¬j-feF¹¨‰A®#ë¿Œ¨¼Ce+b b)­éybkÜ?š¶;‘kçÌn*mõ.Gí«mÍŸ_³þ{ËŽáÌ–#¹~g¶´g]Vt´›æx÷AÐ]­E©28®_Îÿ›VlÔÎýnmú¬,^¥Áýpï ï=M˜V3ø¨ÃtœVïX¬š/Àúƒ×©o¯i¹SÖ”×Sr°rÈä‹ÍÇëÜòæüÀÞѨM:eN†ccöh›q-6åž›jù¥ýTt§õrñÃÉ—s*e*1;e¯£{ Ô§AsOÕÁçÊ{æ4q½&(K·Ã(„w,å1ß-ÊnåvÅ{í¿ÞqÑ{õDAÃXñ¤O„)_ÐÝþùƒÓW‰ÿý4a +endstream +endobj +9795 0 obj << +/Type /FontDescriptor +/FontName /ZGGNQH+CMMI12 +/Flags 4 +/FontBBox [-30 -250 1026 750] +/Ascent 694 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 65 +/XHeight 431 +/CharSet (/greater/less) +/FontFile 9794 0 R +>> endobj +9796 0 obj << +/Length1 838 +/Length2 1109 +/Length3 0 +/Length 1689 +/Filter /FlateDecode +>> +stream +xÚ­R}¾…UV:pîH“^x§¾—À>o½¬vS&çÓgeëÏžË8YHWS¾çé)“2òuæ,¶y6Eî)ø,eÀ©– žHßòAϳ- ­k‹áQ—}§§úîiëšû瘓 =§5{W¾«§ì}Øeò¤>áx K0yó‡]ž\=¹GƶNáíÐgü߆Hû…Ñ~#ΗïŽ(ôáWë|?UÅL"§™>næUÄ<ψ7Œ»ß¡©wçÐxféóƒ¾Z$µ±ËÕÞŽ¦ä–jVâÎFã]F­ƒÖa3­œü "ZŸõªoGê7µÚ]ó5”6?ªiðEü‹ +~øgç»MÄF~ÙÀšÚ­—©¢x×þZÞФ}¯a#´ÞñnkÖt‰çÆ[V>aníqß²¹ÿïÉ,Íùô¬Š²²´Š¢¯Xë{L”)Œ†u.Ìú.Îí¯ÿYk~&³qü¾qdš-W\<°adíýU©Óæ²3ׇª¾Ô³;óœê›Z’Žœ ¾Š_¬Z¸£xà÷U´^MGÑ t‡âÑTå,ÙXŸQ.zÈØ^ P$d{ Ïœ÷Nýç>b·]­J\¡]¹òÎÏmõ³¤yê¾À¾¬òf–óA3þŽ—WRç +º]„컊iž†XQé×¾ëìììw³ +kƒt¼í°bêÜËæMUºó®OñÖzëݫγ?-Án+öÇR«7œœ…ÖuM®1ÌœJZÙÈüí©êøôMŽq=Õ~烋ù¯ZÑbG§k·_Îs¯`›¾$_mtJº’8Ÿý‹Ñ{^Ÿ\Ô)„ßïXSU\§!Îptzç2»:`®ß8wÖ–}îmÎVòá§+„‚® «òô38šxØÉWš[†Ždç·­žŽ¥OmW6d6i‡|“Sc4gQœ¦ðÆÇÕ‡_”¨ÓmZä«"CÆ4íg¼¯m ôŽ—G®®K +ÞûÓæIïk”\?VSÄîž&Í o±R;³t‘¨žxÒ×æôø­ºüºœ<“ÿúª:?ˆ˜S®ŒövÛ;ò 7ëâvõºFÃ}徎êÑž w½3©"»û±6º9˜§P¶RÔ ø[ô‡­Ì=™ïÝ÷ +~øj‡mzȪYOÕ¿Ü™-)mGEÁI‡fK»'†Õfd£¼î¡Ðíè³B.ËJ?å£öäÏ£GGtÓ?6½¼µúô´Ã`Ù‹òˆIùÎäCO‘·ð„2±";Ïpϵà§fdN׊±fëX§q¶À„­[1¹®dÛ)¿ÇZkæýú&IeI¿^ºlž[ûIÁ­ÕŸoðºÔ7ö|_A¿È„UéÆó6ã3yµ\ÃÔÔ¢nÔrJyAls*Ù#™ÕfþêžSƒžÚØ-Wa‹ÁþÝZƒ^ܪï¡)R ;`]—õÜafœ÷?pQ{’ž;Ðœ«{»©foòÉÅbÏôÿÀç?t +endstream +endobj +9797 0 obj << +/Type /FontDescriptor +/FontName /SXAUKE+CMSY10 +/Flags 4 +/FontBBox [-29 -960 1116 775] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 85 +/XHeight 431 +/CharSet (/arrowright/asteriskmath/backslash/bar/similar) +/FontFile 9796 0 R +>> endobj +9798 0 obj << +/Length1 751 +/Length2 610 +/Length3 0 +/Length 1129 +/Filter /FlateDecode +>> +stream +xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž4W0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22´25âRUpÎ/¨,ÊLÏ(QÐpÖ)2WpÌM-ÊLNÌSðM,ÉHÍš‘œ˜£œŸœ™ZR©§à˜“£ÒQ¬”ZœZT–š¢Çeh¨’™\¢”šž™Ç¥rg^Z¾‚9D8¥´&U–ZT t”‚Бš +@'¦äçåT*¤¤¦qéûåíJº„ŽB7Ü­4'Ç/1d<(0¤s3s*¡ +òs JKR‹|óSR‹òЕ†§BÜ曚’Yš‹.ëY’˜“™ì˜—ž“ª kh¢g`l +‘È,vˬHM È,IÎPHKÌ)N‹§æ¥ ;z`‡èû8z…†{iCb,˜™WRYª`€P æ"øÀ0*ʬPˆ6Ð300*B+Í.×¼äü”̼t#S3…Ä¢¢ÄJ. QF¦¦ +Õ† +™y)© +©@ëëåå—µ(C¦V!-¿ˆ ©–& +ú9ùé ÈHú(Ç…é'§üŠj]`ºÓµ45T0425R0·0ªEQ˜\ZT”šWN-ÀñÓ2¡˜šZ‘šÌuóZ~²uKÖômm+ë\_XŪÏùóÄÚ—7ÙD쨛™Rl:/P1½dÉ«…¶öϾ(á•l=U¸h‹d¯_OÜ—EÂk¶v-X1¡Át¿Þ`ñÊæ®i¼ÿ´Õ_y. ›1§õ‘´Õþ¢Ç³:•un~Q®?Á3/å…SÔâ}ßï]ãÒ +š¤¥$e~sû]F1ñÊ»Ï/zÊíO]Ù3ÿÑÆó½EQ’žý^ÿŸYì^¶Q¹íøgíÅ×ôI\Ýä÷LèÐ!~ç³Öy?hKDgêV«ï;®É÷þÎOý©w_dÜãæf|üfÇçg‚û¸þ81Çú`¶©Ž‰óêü´¸5qâ™â÷ÞÓ &ÍÚ=#fsp÷ÿ·Å·]ŠyõÎV-B>~ß–…‰â·DÕ5:>دӸ–ûtâUößÙ?vo’6û}A1ßÓêë ça(r~VÀ£g¹—-v‹ÜäQù^’kêÛ³yg¯ÈßfC_Þ~zÞÙΖ¾™yFâD™>œ¾7•¾,Ÿµ”Aöwμÿ©6öNÕæöï<ï*(øM?¡¹ß¬HEfãæçÉõ§Ÿ¿‹¹l~íHóÆð‚%¥?B§Möbü!æxRóRø¦Å%ÜL”êŽ/iHõrŒ;Å#-Á@ +endstream +endobj +9799 0 obj << +/Type /FontDescriptor +/FontName /LAJUWJ+CMSY7 +/Flags 4 +/FontBBox [-15 -951 1252 782] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 93 +/XHeight 431 +/CharSet (/logicaland) +/FontFile 9798 0 R +>> endobj +9800 0 obj << +/Length1 752 +/Length2 691 +/Length3 0 +/Length 1214 +/Filter /FlateDecode +>> +stream +xÚ­’kPW†Z¥/ Ô`Õñ B‘H’ „HÄ* DBËEâ…K¼,»XHvÃf‘D‹2# +U,ÕÚŠ¨¨€€a¨¶tÆZ…ñ2r ”¢¢mej5-h»2NñoçüÙï¼ïùγïw<Ü¢T>A8•Éø |D +äáªØåá 9r¢ A‘Á(¥ @@Pz@Ä@(‘ŠDR„59¥3ÒDR2¼äKm& ÒBšÀP„£L2Ô²=0TTF@ÆÈA ˆ¶Ðƒh¨‡ô6ˆó9pc@L"HŽÀ¤$) ßÆÓuÒ6HëY(àÅB.,"N‘#Àa"GA±wA–äÿ€šÜ\‘®ÑD Z[{[HïȨ–Ðÿ5PZ]:iNá&'[7Âq¶pˆéÚɪ’A5D&i ðAüøB_ñ¸@è„âQƒ%ƒDT£‡cûÄ'£°éÑÊPo|ªcZJÌ:£á[óX¼­ÙŒhÂâ…|¡aìšøÚ4鮣p‚L"±?@i5r„l+‘X v € qhÐÀ ø$Å°G›L&H¤hŽm¨¾@€êÙ¤}*;“d›Èy÷gd2Ê°ÃÇW|ؾ²\ $’€Ìÿ±tš†$3ö\ØH&êD‚BÄ8æv +[‘òuýÞ³;CNÝ©œ"˜6tãÜS³CSLÃΣž©—¬uKbN÷Ÿ|T·ÿ7õ®k¶âÐúÒ¼/" +6”Ω®Ë;QS˜%6ñ;U\ãî¼Ã3Fy÷+¯¥m8R¼çÑ|©‰îûvŸû2ó€û®ÓKðßeq§_ýÒî8Û;úKïÅIÌ=vs¹ÆžßÚFæ»MÛ]Ý{Åûóù›öïÌ;ïÔ/o¯x†^ˆw¿ÿ è|u¬*%vª›_gX““]NY뢬Áó½ÅÕ5W}=Ëa +¦[² UtëµÕ_4µ¡Òÿ¡ƒKÆ u~°þG¥“ý…¿èÇd‹B&x/ëN‘W¨ÎÞÃ}¸‹;·%’¿ìf›E?ÒHö40ç<ÔmOš¬ .«nmQƒâ@^].é?Øâ(m. +S<½Çë®_=¾×sÔÒ¢~yÆÎqƒrEkÜûõRÑ«÷Öà×íþÞy$f‰× Zª*zÁ$Ì3§\³ßÌv/›9È>=ÒY%{a÷˜ƒ³ûTZ<í`Wþƒ¢†–²¼üççWZëg~rþîšJÓIKá—Â;­¢´4‡Þœšƒ³"¿Kؘ-oºx½hõ¡°7ÎÏÔqOìWW(k#<ÿL^°¨¸ÊRtÙ<½¾W1T£ê’4f l¨VÆkšøv ç:_L†öÁÙ??&«ôá=¿~¨ÜåRD]àÂÂ’Qý)•9©ß¿Ì)36.Ú¸²+÷€šêþ¹Àýƒ< Q˜ BS‡#1ZK‹˜òÛ1Ûçµûm½mÞÃ;v3S;ºÆ±#þæ¦IíÔ< +b¦é©Z··u­;™¶k{ó—†ü0#³–붯÷SKÊÓ|sßÀÕ)¥W†<×6"«V?v,ÝdÝ_ZvÝ•Ã|¦ùuérxÆ™7+²ÛrÛ®»€»ÕûqŽî@ +NV +endstream +endobj +9801 0 obj << +/Type /FontDescriptor +/FontName /FRNIHB+CMSY8 +/Flags 4 +/FontBBox [-30 -955 1185 779] +/Ascent 750 +/CapHeight 683 +/Descent -194 +/ItalicAngle -14 +/StemV 89 +/XHeight 431 +/CharSet (/asteriskmath) +/FontFile 9800 0 R +>> endobj +9802 0 obj << +/Length1 1612 +/Length2 19699 +/Length3 0 +/Length 20537 +/Filter /FlateDecode +>> +stream +xÚ¬·ct¦]°-;éØxc³ãŽmÛzcÛv:¶mÛvÇéضӱnß>çì3ö=÷ϹûÇ3ƳªjÍšU³Öc‘+(Ó šØÅìl陘¸r6F.N²v¶2ôJ@3À_#9¹°#ÐÐÙÂÎVÄÐÈ PšD€Æ39@ØÎÞÃÑÂÌÜ@¥ª¤NMKK÷Ÿ–BFÿÓów§“…™-€âï+ÐÚÎÞhëüâÿz£2p6L-¬ayMI9q•¸œ*@h t4´(¸Y[d,Œ¶N@j€©#Àú?c;[‹Jsbø‹%è08Ù-þnºíÿqÑìŽ6NNÿN3GC[ç¿=p¶XØ[»˜üCà¯ÝÔî_BöŽv#lþúþ‚)Ø99;;ZØ;þfUûžÎæ†Îÿäv²øëØ™þ4±3vù§¤}aþz -lÎ@wçr&NöÖ†sÿ³w´ø—†‹“…­Ù2 8Í M¬NNaþbÿÓÿ¬ð¿Uohooíñïn»£þ g' µ)3ËßœÆÎs›YØÂ1þ3(’¶¦vf¦ÿ°›¸ØÿOŸ+ÐñßQý33ÔIšØÙZ{L€¦pŒrvÎS¨þïTføïù¿Aâÿÿ[äýÿ'îÕè;ÄÿÏó…s±¶–3´ù;ÿqÁþÞ0vÀ?wŒµ¡ãÿ+ÜÐÆÂÚãÿ°á¿ªÿƒäÿŽ¤³áßfÚšý„‰é?ŒNbî@ gcs€©¡õßNýkWµ5:Z[Øÿ*úo3ôÌLLÿŧbnaleûOëÙþô5ù¯äÿŠô/uFIai)IyÚÿz§þ¥ðW{gû¿ÄþG)²v&ÿkñ†;À‹þï ¤gùÎ`ÿ›“™Ùçÿí_æÿ\Ë:;Z¸´ÿ–ÌÄüoáÿãûÏ•îµ5¶3ùgV” mMþŽ×ÿ2üã6vqtü«ê¿'þoÁÿsýï î@c¸Õ%;ãÁ–i™éÎuX¹#“"Ú}Ìà#!ö¥*Eþ5v½~iá;\•ïµ! MÓÜŸí‹göR4‡c}˜Ö”½)À«||Rêþ”MŠNÚÃ@F½RÄôsõŸ^× 2ÛZìLj‡»“ŠJz%ïPÓßa®Ÿ¨ýI] üÑÉí‘|Sb1º›@Pë +ÏÎ)Ož)‡ÆGG†{o!ûðhsbaÉbù&Ÿ'9{8þi4þ„|uåpÛý¡„\ÎpžÔöÓgÌ™èZsX°Ù Bp$<£ Å›<}NÑ/gȹ\9“e¼8ߟhI¬™zz ‰év + ýÛKÎF½ÓÚ舮»mI—ÓjÆ˾qÃç^vàźoÛ,Ü·ɾDH:$0xxÛA"aÌ}áÒmã×·Z ãf$–á[t_Î"xw/ã¸þÝð´ÈYÂüX6)^ß¼íÝ›G½ÀX-÷Œ¿A+ó@*ôöfsðçÐ71G–qétÁ‡ÑÙAf7…ÓÓ’­ÒR¾º:[ýú[Ìô …‚âÐ¥©Ù}çÉÎrô'øX³ç°…h×¢,·÷°òH=ŽiüK¯¤t ‡Ôª”0ÎÖ2®Ûò7£ ~]ùI# +fÉ}ïµ&JñwFmæ—²äÅI3ßRx<*sÜæ£Æ*ö(BI~M¹lp?ù¢!ßcÅ qÜ?ý)–Õ|Š‚ºö‡¾u+rƒ%ªóuûeØçïCŽM!F*èC{ˆÆíf?à ýW‚¢à ¶=Ö Dt[ŠYKÕñë+¾|$]Î"Õ#íE&Ð’óÔFWw'—°¸pBhdñ7x]Õ]gFg|9Ñò°^’~”Vˆžª0X8UuêéÏÞ%Ì·îçXg›”™5z¿µ$§DlŸÎS`fE¦r‡U!…p?¨Ð¶åx%‰T‹¤Ô¶¤ô ÕŽoz +a«Õ÷u¼hë—…™Æ“U³§5‹è ÏtÈ)¹Ë)‰1rSòí ç¯ü°ü‰äQ;EpkÖîK¿œÒhÄü›h–:þ4nãn½„â%_±ÏÂì(†®¯øý„\Mìz6†n7<å`[|~;‚ª£„%PUxö±x\Œéˆ¥¤ºÁD„¯uöq0œGÍð7^ǙׄàbìU°²zÎ?V +óÈöÊéE›9Y,Âþ²çõ÷Ü&Õûï'lz¢ºa¶øÃn pOû  œ ô¦®í#qj›B¸s.Omœ% éÂôBòIÔ÷´·nDqà¯9÷’%¬nrq·„Þîïf<ÚÅ1´`þK<®½8Æñ:³Ššõãàrë³'†Ãvô¿ÃØEý¦8A8K,ež—ë÷üyfúÇßiºó(ñ¿£Š³ÃûÑ]iTg]ã±è­ïõXwôÈ|ž ¨úŸ²<Ì%âXä¬L,êÛcÆfîhd þ^»­, Ò"©`Ô|þjÿ™h é!$tšµy]Ütxh¦#IáK/1Ych Lª-mR£\씀=ÉÓ)¶;‚”©2oa<¸qqä¢0eçdžl31ª-2Þºaä3"Ž`1<¾v–[ˆà²g*1Æ^ãפ÷4ú6ÕXŒË<†ù‚Œù;æز`ì– +8?Ùï¡G¦ +½N€|{ÿò¯š¹h ½!f YS CÍí¨ëŒ[Œ¹žókTþ…Î-®.„FJúSM¹°7—êW÷´Ý˪X¨ç÷÷ÜO¸µnvfÕòKl>äX7[´N.™ö?—Ëž¾ ~;*x|…utɬÜzM’Ž<¹Ç!΂Ÿ•“‰ö!¿W nòv;‰gIc¢Þ˜ñb> íÄG¼À›tÇá—ƒ¾ÿ6õ0!ËZ‹~¼ÕÒ»ÂU3"€ÔÒF]“™¾ÊÕo)B8j±p·“ÿv{/1þÛÒ0Ï·­bÀšm$iw +X‡ÇRÀœÁ‰Å*U(¹îPðV*»©ŠTsG°Õ,¸Ðý1KaÒ´÷ +^1Vs¹iƒÕ{hËiÃô”Ëv·¨´ýå"]­¹-ªÁÀ]ækµ NÞ0$dp¤Ø +÷…#¿ ‚Þ£#ÿG•îµeF™‰ì—{‘)ÍHߺ‚"[¨P5Ž;ÉÞ“R]îC«+ùFð‹ÂT0Ëâs<4Œ8¿Þæ«%À ž“É +>÷B§ àIZ|¶XùøV|b}2ɹ1G$¶ð³~®ÈÈ“B("íÃp`%K{çݧ®]‰ÆAFnV Ÿ©s†cÒš¹ 5Ÿ 0öŽ=éu(úp £B†ÞË%ç´3Ä¿±ï´¤^ëNï"ˆÞ 2mH8Æ*TÖV(]èS¥×e·µÊ‹]ªŽ]wó«<ÖÖYà¦Óbìöî·¼·¸ +QVt–ˈ(`ó£e—îÒ?rº×ÕÞÌz+d´¿BžnÔ ÏØËcu÷¿ytŒ’/½næGÚ#}éZ`8MÀ—¸•×—нuúÊ×]!„M9ˆ¶"Ï„,ö†lã ­n ÃÅÚIÛYƒÎƒ¨®¬ÎHÜ™ïˆeŽHO,;ÓÃBÁä÷‘ßg‹t¬æé Œ6ŸIK$çâWÂ:+{­·FÁ_4¶t jdµêo>ëˆèí æLd÷ód0‰>¼*™„ÂÛ2èÌ\h¿ ð-ŃWQÞV謔•§F¿x;H&fIÁr²øGÃ7|Å™Mjs•þR–90»³›]bw_’òÐàïí}‡µüR^ÍE*v9ÏË0NŒxMs¸Idö;å6:AóàÂa665DG ¬©ÀÄÀ6ð¢±+)P§À±Z Ô¡-ÏÔú³eŒqIoZªt$RzWð<Ë-—WbßgÛåà„AüFô’dDè_Ù19Þü’3[Xz¡É ¬n­x2°iÖFazäê6ïÜœ*ý3úN Ò©k …[×x;5ý àB†¼|òþzk4ýÄþ™`Eôü[9 ¢IܤFž;ýƒÒzVõ +2çf)¶™vÈò›_F'´˜û  _²™"¤¶7³Ò¾Û˜ç0­siFןá-)³ +05_½sØŽ4ªùš®{,‚ÖÄqÖL ± 0 ÖmºÎTÊï“ %ú$YÑ^t”UBIàRx¢—Úß +÷¸ï› õÓ­ZtîÒ†võÒæ©JqvÇÍgKµ2§ž›‡òÙ§JÒu“Ö÷¡kðKzšm>`KÌÔ ûm,rðÔs;v:¿§’Ø;®oÆ™" Ù›™®ÚÛ¢ 6 ;Òûlm»yëÂoº#e"—L´õY×’ˆ}NŽXÛuTY és_‰‰ihÞ{žŠ%f]Ð Á$%X’Õ¦¶SQ3Úbiî@ì‘ëv픂øª‚ŠÔ²y²L±ìK|0,ô#|ŸeyûŠŒð––ÖaKg°®ˆ7µTBbHÖ{oΡW–/”ŠjÆI;Š‰ßH Ü K ÖͯɶüÉð’ƒÏ(Gˆë.)Œ žu£‡€ÃE3¾£F™´*Œi¿ñIÏ»ÁüNC“¶KÚEj·’º[?Fö§š#\ÝT P->Þ¿QâÃúªy-Fš?» øŽ¡‡ÜÌMID:¢œê€ùbCtã#›'lÑ 8“c—m’OpóDäø¥TV4––Ëyœêb,s +1ˆ,GuÛ¦³O¤'Û—¦ôÐä%?CKÔ˜ô§l|2Êß·"caes³ Úk«0€PÜ‘®.ŸˆË¬wCHç¡õ…\T·ÀŒج¯-AªkMøs è­ßÚ­!ä…†6l1ÿŠECÏrøÍYàÏD +ëç—†çÌ H&ˆ~Ìm;>•C(蜸´äƯÄæ…<·Ÿï¸ü½¾ Äc?)wÔ”~VüÚ›˜ÊÔÎfÛ§]+–bö´³â ¯ …´™2?Q1g96¥D›¤vgÏ\I¨(Ç“ÙzÈ D®Ÿû vÈa„U.ÝYòÂè]f>ïù)9PË}1Æð^cIЩ¨n¼%1†l8]䪯3Oï«ËaÈõØ­‚ÿ 9< £–Š™Íxü통7õÂ-O’F±ÐÃ\hvDˆØQ§0½v Ìz(ñIRA´'ÁŠÜ]ã6FT¬ €”²òA¥^í€3sÛ¯ÀÍN´ë9ËY½]«7…ô÷_`Œ“ÌÔZ©øH¯‚w®{²4¤ugÆ!›e%ZwOìHÓqé£h|6•)%8HÅJR‚'ÒLið›@þ,ûŽ‰úðàß'¹FARàåyM5DY«Žîuu/zhI³Bû­Ð”†90ªÒÏʲòQ{ãn1ùZÝƧàÌX*P4X]|AX R¹tÎ ­Åûø•ä%&' lmWÎ#ž?¨†æ8Œ.´äc"y¶Of<¦–4ãN,1õ#ò5-§­C67®_U§ç!ˆ¼/=yZXôèT²Ñ¥œpPâ2¯n»š¼F‚lB|õ§IDÀÆN4Íj;¤ Ïß$Œx\þc ãËÿüPu3r{ ʲ9„¼¤”¶GaêHŒp3¨*Q³‚öˆÿ£XJ¡¸ä Ñ”Ö:”ÔPzäÞ‹Ï& +5´YLïàt¤ .ðÌêÓBRc_ö` .$iü?¢_óÿ€£­ÌºÊO›|ò£á]ð=(AÚPLÜG°TiFé"óíÑ-5‘d3•„Þ…ÿ¶Q6T#è5q_3°F×FÆwä~” ×cØ\jK³R9 +ä\4Cטg”è_Ît±7QÉ‚…5Ç9u¨ðŸ„ëo¥ðmè™*@½ïŠ2Uêm鳬‘ïœAž½wšÞV.ÝÑŸöñ¿rÞ¹Læ +C[GÚy%ñÀªBëbo1š%*×Í}ö[¦¨vUd·YÅ?™â¹‰Ï6l™åù +*y38‚_z\‡~]h=m=šÀþ¼Í7‘gžk'ÉüXAN$ÙF˜ŽÝÐUú±­|¿òM’]W*0÷Òx"Ù¡§14{óc€˜ñÛ‚y÷O÷Y;w«—·9 uè{ÑP|‰¨êØúÏEVt"?0ù³ÓS§HÈ ùFzÐkjÛ[ïG£ª›Qú4ëã­¨E¾­L‚nžLþ9é…“æ&¤è<£ýªó]SÔóáR–¸èýi‚mW\†窼ÆÏ,ÌIÃ!ÂÞkð>üdÀ†Ú³|ÒÈçPJÁvK®ÃRi!ЪhêÉti5*¡bRŠåÜqrÎ|ºÅƒ²J&ŽËÇø­teQy«áÛü-LrgäerUÄs²åÏÄXeÛ¸°É2XdK¡â$,¶¤‘€á8-²n˜Ïa@+)Rœ«§åŸ¡#//b’’?°‹YLÙ8é/N™b«Au9˜.‚íìLß*4Y¢Ø54‹ÅEQâWb¾›“Û.p«{¹=ãU§ÑñBMæ“ψ®Ñ3‹­(ËÈ-ý‘#ì[sžGvìò ª€ã8oªŒ«•ˆY9Q«âû± +2•†>Ø~eëž;q»ÝOä  Xû>ãB¹¦8s³oÃ(¡æ¥D¯,¢i ¡vTÌMQyüqÔi£i]øa + :7¨Ê]N;™lÏ‚3U7Õ,0p„°STSÉ^…ÝX#îaÖ«a³Á-Úœ”Uüº|º2Æ_³Â³R§bûAîRÄ-'2öC';*ô(\Ëz>¨š‡7'aù2îë×êšKH5D +âÛœ2Æ +¡¢} ¦HÍ•n{ð;v¦Öú†–ÒêÓ¥K\<C6--ø8%CW2:ɼRM‡©©4i>i¥~nñCP¢ òS¹DîQ­cè+Öö~Ç6µ5l¡Ë¼(ž—ïâö¼Qé¨|QyÑÃÜæÞ¹ãì‹ñìƧËíÒèw±"o˜€çvËsù¡Ššo)aG— Š9eú×ndnƒû¼ëJqPê7Ø_$n éâãë1`ˆ®õH¼“]ê?Þ8/Æ×#“{V‡VR·~ »è`«ã¶¿= Ó¡œxe¹î¼Þ.õlà‰m´Á›FAííÛò‹'ƒ51|}¶ÂÛé5¼fÖÀ¯orÿ¤˜±duC.׃é0; VÑvæØb— mÒ°þÊz[/Ÿ924â"†¶ z õÚŠ¢Åþ4u{›°·÷“?ðýrª°û¥A;«áôçÔÑÅaÎ#{è]wuÆÍä/²l»ºòº}i\E^û¬*pÈ‚R„Œ}àÍ~ „f_òJGÝsù½ýS÷ê4#/Çê£æÄi¬qÊP(¨ÅäÖ€€«¥NQ#®žµÊŠŸ¸Ÿ&«ÿóçž°tã‘CÑí'OO7²S|üŽg¸ïð}e‡ºš‚%Ïà(‚ˆÖ­‹ áií;oò¿opŒ–/þ¥€®P²Ûâê’å·@ó…Šsjs\â'æŒ6´½ü³ ®¶sÏ üï“FþÈ×jˆdÊ—.Š7©)Horâ0!ÑêÔÆÐعۿ+Fµ¼ˆªK…b0Ü”Þ+?ÒÁ«ê‰~I}Ñ"ͱ +‰"ÉÓH8-N²G<-<í;²Ø2Ú'vûü™ý•ì–T‚ËÀG†¡·_â-Œšgíø,5Qâqäkíð‡‰rê¹€ °SßüÐU@5ÔV—/§zÉð•±\¢QÖÆÌÈÔÿS”H•E2T­”IÈøúîN%÷šA*. Obz‰qµoÜ©~É@¤wŠ}7Þ*¸™Dc²H#™¦\9ˆVÎc0ß4[^™˜EH~zãþå*j\9 ‡>B°úÁÍGû8áç–nmƒª³G€¹‡ò¨©á¯[gÏ¿ã­€ž¡õ…(Ô¾y¹gŸ´Å¹µdúýó¬ n4bâ üLúÆ]A¯3f&áæš~œNDB&2@XOÑ,øççJ +i= aÂ/ßxö¡W£º»¤ø¦ê>Ó”ø‰#fS¡@zÝqöÝ$IåØfªDÌ”šx¿ê§C—W;ï€=Ý¿d4jÁÁø2 â—£ŒrþDm:á‹jn§-œQà 2»Ã +ϘápËtÃÐAýÎZª“bÐÀ™÷$_sÎ9 ÿzxÈ©+tO&9 9OÏ2½×œ»õþDw“_¶J¥Db:Õ¾°°¼V{‰']d’1ZY°bePÆÂUdðÖg‚ÝbG[ŵcy¹`@éJ«Ë’ZÄŒdX’TDÎÑã,ùY1&Õ$DX[{–ÿ¼ònÿ 5ÙdñzJÞ= ÉõmÒÚrÉ…JScΛ^ Â`úWØ0ÔOáíô…-«4× ùÔèìº[¸²Œ²D}’q <„£)èÇ™êµ:‡œ‡ÉŸš­W¥MZÈc=smÄÙb²Žy=5þ[¶ÛaÖ›4Ý¿ÉùÞ¯ûT©#¶ŠâS =ôl'ªäß¡§‰F“ºÝ[¤ö£(T¬BÑ8bí½u¨M`œo»Ø$_ +.Ð*9ë5_»IS‹¾Æ·•´dåÒÕ°‹$̽u’rÐûÂ1I‚‹Š Cß“&膟Xü,ÒmÉ‚N‡îhx;8§À-Ee¿«¤>ðeíöbDƒ>»÷eªz8:m…Ú^-d>äýuLHa2;D cØOéãò윳# >»¡D7L§°¯<üÞ¡cV?=4¯תäô0ÊšQ®ÿðëåçó7„W©Sx9tÃíP›ÜÆáz)@–±î›råÔ)SHiw¡È€XsŇÅ<½›¨™ÝI¾{›ì*2H(Þxt¿z§-ã Dw6ïÔÓ°I¦bÂ{‹®îo87.rCCAe-Ó5¿SÁWïa‚Âg].t5‡.cV…É.y.T-* §5–úLžõéÅRµöÃá™#RL‹“G:$®—¹ðSãRÀ$\Z$W.§yá±­@sÃ]º.Ãàh q‘§~”B¿›ÃðËÓ[@ôË7&£—;|Ò8Í¥jªÒßËç²o3Vã¹Û­òÎcbßJ\tßý”)×Ò’VwcÞÍ”nΙõ¸R 6?Ó¾gÃh¿P°Î?¨Ïçù4 üÑ8‚f&„ð˵y¬)ÅÍD¯!$!á +›äT{µqïAˆ’y[Y‚Ié³È½“(ƒ»'@!àuær †Ü=MÓ(àHSú±ÕëKR lv#ˆ£¯ Õáª,ˆ.³>ŵÇ5ñ²Qs5#ó/=ƒôY¬>`<}ÝÓ¤¿5#jÿe6C¾Y𘭺‹ÏVg_õ‹AF¤? +™Øäµ^‘Cûùô‚r*æ€Û“t²`XŒ¡œ@ŸSq°Æþ¼m1)Q']xtTPåÊ{±HžÜ@ ,±ÿøöê¦þNž­‹­¸gÞM¾l@mÖ,ì¨êRUZˆžoþW¸ŒÉZb"3[‚¹~ÛÉP ´UCc<›/‚ ?Ä<¬{l¿À(O\áàëÃû$„ÍŠ•¬Û*œ­Hík,ò˜vöá†óDXQ 2ø Üá‡}ŒùA✗±ÕË‚ŽßŽ£êý¼sÌ‹#86¡RÄ>QÁÇ–»ãä§j§ÛXž´RÖðŠŒ‰ŠŒDÊM|ŠnmÒµ^¨Ã¼Æ&6T5ŸO†ªQ“›Ê w€Í:¬ÐÜFh´JÈñÓ°ó¯,QËX¶Þe8%>f‰ž–÷¼E‰V}¨@Àb¶ü(¤Õx=ºmŒ4Ç„N[9ŒFû¡á+ñ­G?£×ñ„ñy¾ºf/¼Qú5'[Ûá&Gÿ-llA/Oçç7Ï4#$/hFÝqøõh}»òãPêû‘¦Þ:ññ*l‹µ;Öƒrí¾N§ö-WMÝ™‚Å5’¦¨ Ç˱Ҵ3ÞÖ:ÂÐŒ¸XM˜¬Ôˆ‡¨ …"Þ:„üOÒ¸µ¢=G6IºC³ îÃÏXhCJI§ß~<¸Ý ?;fh3‡•´t@(Añp4+xæðmóϹ¤ûõq6Ìïá¾Ñ¾%ϱCy64â¸î/1Ýå¡h’þŸõ¦Emà­M—“•× ꢷ_T ¸ydÚ¯;‰ªñ ÌØà[Œ&7¥•­ZŽ×·l\WC3*_ðc~6Ž+¥B3 +NOI4hž wN{¤ñÕˆÙµ‹1#!Ê=úCGC‰v…Gž¡. tî’ò'ü2 αü)>JA èz««x=c½ô¶0tkŠ¥“[œÖ¬oœÞW¾^,­|žkÞ„GK<%Yx«´A‚YŸ؇)®DÞ΄˜ñ\5‘>4ƒ)CÙ™MK†ž‘e¾a@Ë4“ YÝ©ãþá5©i®0ÍÄ"EÚª!Sþ»ÁîôžYâuï§F(Âð8Ja"¾®ib$R»Ú<¶\Vð’¨0Ý] +„9¢W»즿(RÆí#äe!•u2‡©¡¹r)3‡’Ä0 ›àÔ¼)‘¶’™Iµ¼u±Š¶¹¿deø*í›&näN@D ß/ƒ¡³Ö§!oœ¸_,_çMæ‚ñ÷ùy(hNc=5œžàq½ÝCy;ª> âŒ;´&çÂ/¤zûG˜yn¦¨«âç;; ùW×_HÓWe*¯¡°¶^SÌ!í¨…œI3rY tpàiÖ“c˜º\3ñÜo%Ð[\öÍ…˜÷ÙÈŽfî´»Hdž3–Êaq$ñ@Ž£¶¶€ —nxòÛážeâ¾÷AáüJžŠM= ÁÚw5 ž¶ÊœÔƒ\Ä5n ­ãqòÇ™]Kß:Ó»ÐS{ÿ2[!|j6`‚çª=}NpÒrˆ‚…Tÿ@^àíMa¢3ÀÑÏ_ìÞù)Oª œa€Bš³¼4䎾“oÜÆ Æ™ q¬)ßþ§@‰nºè"ï·-jrãµYMuðdÔ@*HNóÓFö³6T4Â|¸åº=ðö^§öòU +MK¥=uÐ#ÂzÒk†ê®Áè'U09®í€ö €#&QzgH_ KU®óëÒ%–ßÂEÏþRv!zÌ¡/~­O¹»~*Ž»¡·åö(oÉH3ÝWý_é´„]æµ]ˆ‰Fý´(ÒMââñ.9~Wüu /ÓÀÏšÅ~£°‡Ô[¥ Êí‘ +¶ŠѱÀq,«Š®Î•(}J|!Ì„°5‰Òt¸{}Ø’6šî1é@€ºw/Ò bÌöoð?æ•Ù–´+P» ©çhWk[1Z§;§‚ää/z–n˜I±Uà>Ó8KžÖÚÚTS±*yQP ÁIcªr%uRß-è;và+ÂÀ;á®âUèduz%AÚÄ=êÞȈW.t¡¶w ,Û,;•o&f 5R†t6rTÊÞÓ¦Ÿ®Á7zÃ{}ÃÑšK-™¦.Õ$/|Ž·¾ùqðƒXŸ¦¶<õÜ ÓK¶•ÐÁq@åœ(ϳˆ<æ¡Ë*Ä°º(–ðçg}‚jzx>÷en»ìÒHÅÈp^ Éy¦¢²" +¡À{÷ +v0ÒènjöÂäÐ%½õ¾ã³½©×CUîçýa„…ڼǼ#X‘©çÛUðH{_Ìc¶6´[©BñØtèýbþ=€/Jü²¢kd„ÜÜñžèŽjÑËÜŠ³QW÷é¨jqeŽ)&Ó‡¥˜˜(È£å×ÄÕus} +:WZpŒJ’ÚÒƒÞ­87]U{ê6âWw‚¸þ£”BØ7ø .RvÉQÂÓÍ‚„6RˉĢ{’ïºw5JùoåÁæ7aªÖjé^¤l>I÷GNÊüa[ Ë÷õ»žýÚ?j½ÕXÌ€ do/ÚÑ'0ôãk¾ò¦DïÑK`*Yô9Ιšàp‰}šgˆµ¯ØåH +ˆ´Òú¤©Á|¹Kñ±øç!(¦Îw †Å¨Õ‡ rU8Aƒ^Ëé¬5èVøo'œí^*PÔ1–Ñ“%/è\i¢½²ŒezÜùÞ¨‘FB©Öup_âÒ‡fý^‚0|,*äÁ?.ë\ÝO§pFœ®–ôa`ßiºŽ*Óš:Ãt…ɉó +IR'Êñ:¿n$ÖÚ—¯&"7["K¹Õ&5 +úí’2žü¬‹D…è«(‘j÷?¨õdmµXñ¬Þf8õ·ýˆÇAU—E/ï3çXØáj+&¦RDƒ!óžþwò3û0ºMøiÉ,ÌœPQ€˜Æemø/ôÑ|ÍiÇÊÜŽÄ~:C Z”V ˆ°_ÊyÔ›åûª5èNaO¸~ MŠpNs3ÍQ}?Éy#ôà=.y5¢éû¶–’í49ÀZ|ùƒM&w.“mÇÈ*<G_«]Ñu½ê2àL {$ÈÃç6SµIi„”:`®-Uã [·*ÒâJ0rÆRi&ÒI"ˆëFŸzǧut§ëlò—ðöÎfÝbÝò¸{YúÍꜱ;{ îç…o³°I8§Ò„†AÁg™X'ÖÜ“ü\~ + ¯m› OâÓu´®ç;f›#/Tö‘‡¯(褙ŽùS4.y&­9‹ƒ÷À-øh2¼qC+ êœ{”36Ü¡¤5€?_äŽÜÜ×$óîY#ˆáûƒäÝþ<ñ×5ÉÞÕÑÇnOQ¨RU@ërlêcˆW+Q²ô%_}å÷¹ã糂†«ò®±9d-JÚçaªrãŸ|ÍŸz b}(þ¥Ãbé‘ Ä‹¶3²pžoDR2RM^šézi1uö¦!:’ê´ +Ò?H±ªã´Ô³Óiäô8Ì­gìÄõ¶wü"î±(˜ºŸ„W½ËÞ’]e8åÔÿÒ帑o?ø€›é[´O—£Ìxï7Œ&’&¤2;†¤æñ·L2súø?W ¼¯ßø}.ú7š]}æVë®XWË„±Ý: ap†X±¡ˆKLMë%H"° "fœ9)Aœ‹bñ·¡ôö í¯ccò©{¨W™ÈG8•€7 v%¤-§ƒñ®á žÛVI¤T¼­&¨(àÈZKvÓ²L;9¾ä˪Y’#Di=MCbu!“—‡­‹¢¦^üž¢Pûªþíýè è pÌœƒñÀ … ®Ï?J&7A¥š*rï4i€3h#š}ukµ“ ´„‰¤¸œÞ äœ âyhË™¬aßs¥Ó®Œ¯Ú€±{µKG}tkù©RÉŽß`ÂÿÅ)pÿ8îi%$ï]®¤ˆI±ÏÓ„’ä8¨B°n°q=(#½¬¿FPk^÷¤+-–ãèááӫߧۥÉ!#Í!{‘EÂS¼­›˜Øòä]Êí\Qî/%¬KvgÕrƒª™$Ù(¼Þ9-ceËX†^KÖ’ÄÅl^ñ–þôTè?/²KªV R öëÐÕ 0¤é»ò[‚°…¨2t¥q¢ +­eieëÞàϳ8jÓéæe¨|"`/’ŠÐí–x¦Ã/S<âU9 ÚŒ}ÜògNÀÜ•öG™*r€]gP€²KÊ´ŒƒÒÙH>Í ‰ñYŽ˜4[ u]•8³üq&Ë +‹‹°P@øýF¯ûuê$ÒopG³Œ‹‚·ݹ¯à)×_Û¿¾2Ý‚ðêšÕ õ*yx{à=ïª,ð*el#8ßòãÕ·ʼP]×ÄW›_W[Öï!8I„ë àÜeY¸‰|C³ÁÛ.akxu|Z‘èP±ïjÍDdÞR9ÇÙB™z™\K \{¢¸ÍÊT¢÷‘O¶$L4-úýʯi;­æ#3Kë £‚·¿%«>b˜éDÚ2'°Uú°¹(+˜[a°)ãËEݪ«I¾‚ºCKͶç,“ƒ„Î<ùs òT"Úo1Ý9 +}î:-ð0Ü–4ö¥—Ýýéùy Ý‚ÚÒd"Ñûš«ʃg™´Ç?¡ä³âŠüû½åxßyö½åfÌÄêôëÔéÚ."Û×'¯˜CprÁ/§MïòõËb‘¤Ã zÁR`ÙÉ.Ñð7Ò?BËx¾Õr¨8äÿ:í~û4¡ÿVž;C»ýX~>o£ÕKÂ8<Ø×n˜6± N`w¯%#; ]Bk h“^¨ƒ•Æ3 ·VsÄ:gâƱp#[l¢Oíð,òx­F§Œ—^°÷<Ãï*™pó—õ(-7Í„’(RªøÁüé'ŒªÌ&}Í\f }+'ª6*¦#¯ÔŠÇ’Ô ©sº1wížv#¬çW„ý˜÷çf­‡“qƒãÔ:JH¥06¡9ÙÑ–‡4{Y ‰(׈BÕBöB&'cÍÀÆ"Žu©-Tãg HL&Sfyk··£o¥D¬nìja ¹•ãd”øÅ°:ä+—k×`y~˜{‹47ÍAÄÑNï©ç:¬‘ ˜õì‹}‚gõíQv\î 2‘ë´÷F]·Š“•‰Óªeç§jCóÙa®ò¬¤0ÔOÜu¤'ւЉà~ùn9¬®¡O͈ÇrdÍ< +Ÿ{Œ¯;\Ù\:ª© ‡»P:4Ec׋¦.kkC'˜¹ÉRWŽÌŸK&E¿{½K1Îîº;%Åk¢â9x|÷ï$*â¡4Ç=â|áœðmÝI*C«sõ M—Oübµ 6·rò²<  ¹Á!,Ò,Áù©ý³Æg´¶æŽ <íãɹtörO˜œ°ùŒ(¦º#h~_[–DO¤v°UÈÐm·X7E5½`Ëð² ºL6M%p³ù{Îœ›ýŽ?è"ðhìžTG²“Uˆaí2ì‹LÙºiâDÅ3°Ÿƒ†@uC5?eÇ' +vÉ2w$¡>ÉB·¶ª´ë˜é|aÊ*Tå™#ÚUÖB³[úƒ;4I,PxI³Kµ, Fž–n~<©*öžö Íolß×ʆ«">¦Ë(ª Rë6|®=ý@û÷Û–¬AìÌUõGƒDó§vXÒ•ä?Ð%‰,¼P²P0»l»åš<‹ï:ˆj1äÉÞó¼t²Dì`n™ò=ÞŽu‘æW'ÉRÿìØÕ,[ƒÆ+Ú$ÉÇÑÊzrúIkJýÑ7ñˆ¸ °Òt•ø¸ò#ÓXyë|º$ @S©u‡á“P Q,Ú¹µ~F^ÿ¶„’Ý¡qÈng¦ÀBù®!É„&:ÇhÌfÜâ½¢7ó‡¤Ù`oì·ßЩÏyß ™ bÜsŠMh4l«ÂVüðï™c†·U7’«I…ïö\­¶±àƒ¨°oËß¿üOö'Û.,bn˜ª!±w'ÞI:µµ†r™3ØöÌpõôý¸º£Gä4N£½œ5àÿ£2¥ß÷¡7ÖM|è-ܾÕÞéIBš¹ÛÁN¾—žŠ7ú×2 ùú/Æ;œ ^¡b3Z©r0vÛ˦ä)ûŒ5‘7´B©ìÝÞ´&ûÎZÃÃüUêßáÌÍÝÇžUaŸ(vrò$çŠ|ÅÑ55ÃÒ¨­E/hó§wXâülàgÙ¸ÜïBXÜ8`úN¦^ÎÕÝ4¿­øäéæ¹­È:`¾áÞ£o=6þ乃/k¢.$imÜÿ•âÆw;©/®Ã—Lx¿¨¦ªÐ?g:zÑe˜0„(³Èx£Õ%OA7¹}\ß^ô2çÏ¥êzÁ‡Ô¼¥z‰{¢¼ÐíŸÙŸô’Ug~‘^÷°Ç‘2£ÚïÆ]ª„AöËô#–¿á4Zc&Wç ï 9áÏÿlÂ’qéùÖ‰/ÆJì“þ%D˜ýÛïhú´ÄÏ»± ƒBñUR/ž×iªúɾ̄f½i”¹\¼Òº‘t!ÇUñ*v‘BáÏåÀÁ%'ÚeBŸYöŽb)‹`µýð`ò,üCÞEëRù:w˜ñKávq÷Í«·)a—±üÃr ¶î¤qµ›YÑŽõº>ug y»eÛ直#¢wɉe¤æã6¯,ÒE¤<>´ŸŒuãÜÔ€D6à)=¢Þ ˆ + ýçú`5bLdᚰ셜ϺUø‰*œÚú¶’Œäíèjp©E^Å쎼ï\§ðØ +Y½sõ€¦Ñ‡×pû™Ä ™f²cmZm_‚ƒbšô°`C€¾½t†™Þ2åø°Ïmü—»¥ßÆRë„$˜âÏbñwgJÛܽé½þ#Ü´è»?M¢özKëËè·ÁÊNŽë4ÂìÚÞ^fw‡FÖ)wü9ª +ˆëÃo5?W=,½Z®håmŒ: 09&µ°¬ì–³êÒø>F-+ +<11Ow_³øñ¢íëIö›îŸâÐxc˜ÔB_ ²tÓ¤C¹kiáØOqR}} âLŒî3$Þ§&BˆæxÂ%[ +¿Ï9¸,6ðýÔL¤«xªlHûÝì0=rì z,JP} âç<ËEOzLU…‡Â†i)ïvÿ]Ë/*µ·Üù +¢Í9«²÷…;ßzâ g˜’R?Ü(L‚ KÜœigÖì²!¤ªíÔ{žúM¤M6Ø|•›ÖZ`¼2×ožÙK– Ĉ"ÆG»‚·4„ûx§±Üï8ÀwZˆcîf ++<È.XtJü·ÄçÓ¥Ë|¹4›Ñ•{ô,ˆäòƒ˜‹N‹ÄÊ_¡^ZÁy×€Ò}ú²Ä"´TRO›ÛûÈs¹­³ïŽXDó6ãœü›×#ÔYŒCÚ¼Î4µ^O`~‘%/çx£?˜÷¹w2Áç±^ô2‰ááÓH¬‰‰'zó×1Õt=Zkšøº”°ˆˆ_.k{DùPZ‰!§3 ¥ %Ä„Êd„zŒ\y6¾-x¨xxuñ`A ~ô ƒoZ(KÚQñ5ê1tÎÞ`mð­E;[à£qwß“åð’¯e`äµc’==ìpµ³µ¾?¢Ø¶ë.LØúªO"ÐÒº2‰89̓…+°UbV<¥)1ƒ¬Íb­ÛýÆÀ¾’Hd×þÖž^á[,Íqa©jéÍ]½e‡=&õ‹ªŠø÷x"Rq "´7½Ö< ƒÎ²ä6LþY—õÁLÍì®ÀlÃâ‹­…jÜ ”W‚¢ÌC¼kE„àÈ´‚'³ê]G‚¢Ø âDÚA¢I¸~~3Ä)xêÕh§>Ôß›ù£ÿþ"DzS|âsÑÚßÏ®dߟ2 á‡¿×Õ ¸!Q«Ò(­;}×Æ*@KÛõê‚]F×]E¨÷V²Åd2KMÔë‚Ë›D‹oÝ;S¦|2ÈêÔ…­¬üäœ"ý^–: atÍ9AË+c‹8Ÿ@¬#"ãmAî/VÊçD#í<¢oXÈû,6d|ÃPì³9I‡&ÊŽ ™…åD?RsMÍžvê˜UÚ%ßN9¸âÏŒ1DO°çw5B¦¾ÃËK½ú…'ØÐÅÜ–ó(=–¹ÀaŒgxAýQHƒ‡Ëäˆ.Ža7óçS%±ÈƒÅ°I0·öLîÖØkèîmàCGyr}£s9¨e›–Ëaó É?v"s¦!ó+Š‘{ëG"Ù¥õÖ2;g)„;ßáXìÆÑÊ"ì ŽÁò½s6ËL»Ã9pråî±zvx‘K¹v¹×»Û¤Mbó`MG'åºÕEe$:2œI +ýÂ$ +8ÖNÝD5í,Çpâif¼±Žë(ðŸåLÑš² •ØlñºøŒ¨s¦ IZÏ}â²$tÁ>|@ë/ÂUÆ+´Â÷ƒ\ÃoC…çÌዱ1Ófæê»"®|\bÛ6þ® %poÀ· vO!‚µòÀì|‚ÖŽzºù8M7+ø1¢ì`=ÚN-”íe«ð  åºA,ï[ŠéFCIM•‰ÓÄÞôo&À-ý „hí»ãÙl]ôU°ˆj¡/Dä¡kK«%°é!íàöƒ˜ÐýRêå•s*ßeGÇBš(äìeÎVèatzq®Ã5…¶ë#Γ6þÞËPÔµ tܽÂe%öD¼5—w~F$z´—6 Br ø›„™tÍêáöwÖß½ËIÇû¦!z +ømâ»+æÅ ÑM¢ŸC\\w¦*?¸,šj#›qž®Ôá z%®Ï— ⪵m¹é’ “ùWÛ|“…Ú…N·»Ü:zk‰šö¼»[{©ð€æ†„3ÄŸ¯Ú +Áº•,éoÔ»¿]]U iwQµïmž=Ò„’“kkãï:£ô&­4hÚEòðj¯\Ÿ¬–gñC´[Q~—×2fèj×[È!}xG-EØî‚vS-.`œ… -xÚ¬ÙJA|“ÌÏÚ‘3’¼|‚Ž5†JREç +%ò9U’œ,¹Zòsá3¸¯…¸è^Ç"»$?ø<5£¥‹ªutõJB¯3^ì4ð +ï‰Þxîΰmà¼$QÍib/@“Å=éGÔšÞŽt´© O ¨Ó5Ÿ\º7çùà ÇÚ÷¯ˆ_Jºâ½®ôtQƒc7Þxlí$öm&pF«¼Ç&U2Q0'^.¸Çâ¶ÚÓ¸”UÊ›þ/bE>M¼yCFNÊ•V`l­á+Ñ뜙iYD+ëø¤äªÉ]öS!ïÝ/'€óñaÈ!£t逯¡ÀuäÉhø$±ãê”'ú0Š£³ÖEY04|B‡¬Ìaòh.á꽇Anc½]pɶtÿW‡¦ÒÒñZ½ -»€O¿›[pj_hGºÓc\‘¦O?é¹ð¢­žµæYß>Mgü y@]ê6Þ ¯ŠpEN„W·­˜Ê'0ÏퟳÄèÁ-:ÁŸ7ås‹‘ íŒòÇ)3K"ý1ج³—#$ýúØ;€'Ù§ºû6Òáf”¶Î?"aÂ,‰õÔ­müL¦x©«/s¹P“Ž«CT¶o àþÍ.XWFp§¯Ç㳿Y>élìAXÀM.õ·ÉNw‹ßC£åÉþ—iÖ#O:GEý*_“ÓròI½Šð\€xÇAYòY¬D ¾²LÚñ¸otN«„fá)ŠÁß*¼Ìoe± aÊ"°Z­òOØLJ›¸ÏPÒô&´ð;±_EN~Ýîûžìe…ïÛãûW¿‘+ÁÀÆfší™Ÿ˜yÞÕË!¡ƒemºk¸°Œ¹ì³b¬ãÈ*†‡Õ>»'­Öùû~)™Á ƒ/^¹¼SeNN¡¼á5KÔPItv%†­,ƒ³ Í9¨ùƒáÝp¡jÝPÝEš:uDü?\¾ëìëhâÃ\lôJ!A»*_wâÿÚüÎYQ·"³zu\¤yê€Ñw¬#qOAõ5 OTâÖr"7ǬH) +…ki~ÍÉ×fBà<~…®ºÕ±_úBË)ЮQ¡f`ëF˜øFÄfº:·Þeö÷­8=}¾›:ÈÊ]ömÜyÏ#ä¶xë¨øÙŸFL×>ŒcwÏ~—Jù¡ðhÓŸV¶ÄgÆY%GÇ +€‹ÝØ µØ+K|O5ßé(ž‰ö†<ëäkNf„*çžÊ²dðoŒ´eM¾î“„Ý€4`¢3XÔÁÓºCPNvÖ¸ÙµS¥ n/KŠ´å9Ñ›:·„h;ó5ÌÝc‹án•dA·ˆ8Qr;þÛ×®©=ò¼þoÚöe²w);{Z‘ÈhýQCCÕ“: 0Aº3R“¾Œvõ"ȉª?H~«©*`@Óž[F[‡UR9½&Ë“V’Áî¬Î‹OÓè¾Ë6†á°Üß…¢G)xãrìSFÏžü_ÐZ‚p9;tü´z¹×줇µÔ®±Ò(¼f좋(ƒŠt¥BûW±óþòwšgÒˆ±3‰N˜2XÀÈÎwÁv`UÈK­ãý æ«‚ùùuâ ¾?OʶS+ ßYŽ*B铧¯“Õré¨E.‡¾]«`{Øëoú¦&^É ý]˜ÑWéAf(©½’-LhX ƒPíŸOú^®urÿäËy¿˜Ô4Yh¢[±O0×ÊÎznb|º7?•9æ°<¸ÃöÊJ5ÒaÛR8ÿõ21«ã,ë¡Ä-_.1ÿjÐŶ(ëúG3ø«Ä† pƒ;’7Y +ؽLSm8ªñj„ÿ6¹‹2"2§––2k‘a< Û}XY*›€‘X5—1&‚ˆ _‘. ÂXøæ0ƒB¼HçîMGŠö;jŠ*³“~Ž?‡©÷mW®H°óð½#ŽÜ’ ëÕož"áRTDÍ¥¥»»EFÍ<ûð*êi³KLAœ<`ƒnšgD.æÓûÕÌši®g|ˆP1µ7§”9µèFΟ<Kò\Ñ“â Ùl‚¡ÏBÛ¢•ÝÇ.î ¥›AýÝ¢ö‘¹¾² Äß”ôǬíåg¢Ð»Õb _½çHþDìYà +/}¿rME»ò^Íý ÛŒƒk‘Ï(ì]n}ÉÆHLO®¢¨ÚY³]“ÁpÇ€B…ä,˜OøZu÷êi`a,LZä"0’dí¨q vl'jëd±Go­ÉòSÙA\! € —ÉgçË©œ/Xn*³&u™Ü­J@1|›˜ÒQ‰wùIv(smÃ&5ë°i§î†sc°aãd¬w¢Šª ä3ËïÜÓò€„‘ÄRΰ+syf—Â?úÞ³gû<–$1Ôt*W{ô© +z7úèe_hS5CÐû8à3ÞŸP@üÁÜëX†€á²L'Š‘É´ø ss€ÈM Ý”Ê ˆËŃ’<&£=EâyZy(œíUÇ­[±qUúáè͉îì‰é^˜¸`#”ýaoÔe«9fnÙ–¹bY Ûµ-ZyÂ<Å’A…Oµj™"Æý&¡¡•˜àK‡ÍP“Þ P)Ÿ•]Èûqðã fœ›ð)ô©‰´ˆO±e¶f„[vuu‹ÎF¯s:Э‡ºž£±”¬kýUy¸Z-9ÃRAkP…cèwxùX|Ìפ¡’×O|Ñß0„›¯^eîLh”pÐ…«)˜ìÉzWÃ$7> {¸ÚFžŸ¨Ò­[6—1Lô¯äaå¢ï¶i{¸©LKɬA]<¶ÖÖàS ”Œ×Lí»}0ìzxèAÐ=cZ™ õ2¥›á×ñÎ…q)ÝÕŠ÷Ø‹·Üð g×¾‘þæˆDknbÛÚ¿}õ“8Sˆ¹õ]z(ßþ̹×Ó¿L;£ ó±ëpÑ'»7 'P¨8øºb—u¢½þ=íò‰Ò„¯„/²(k[ÞtúÅ ëBõ̺¶'¬iMغÔí®„!éJ¹,Òâ®:ÔÉÅJ’¤q÷wœ |PAKC ÒG¯2Íokrßy¦`©ÿÚxÉ®ŽoâÍÀXÊÿ+Mv‰Ðò=ͨ,Xò»RÚ,^‡Úñ«n¥^V)þ4©vœ" ìHi[xòXg 0'Ë¥ã*'587‹‚Ü€‹u÷ïÍxá+Bž¼,™)“†‰:w­Âü18’ëó8m!¿R»G%Àßò„ðŽÈ´çˆUGêÇÅæôB†ìGq‚à@jùDò=Ÿ‡]a¤ ؉OëÞ#Ì/0u–ëQù§÷¶ÕLÁ–f¡†ùÂÊ„Šá²K,X +@2žÿÉ=õpüÝâV$®i®ó$˜cµ?ŽÛ xypù»š¨ƒò‚Ðáy +¨+Äõ„¸£aLñ=Âï¿9±·"ÒýöÇÉ“Ó+0¹ìµÔ)ü„ª—c<ÍË=-'–÷|*ô.r>S½ñYôx§3rÚ +‹§0,g“=W«ƒ>„¤ +endstream +endobj +9803 0 obj << +/Type /FontDescriptor +/FontName /ICKJIO+NimbusMonL-Regu +/Flags 4 +/FontBBox [-12 -237 650 811] +/Ascent 625 +/CapHeight 557 +/Descent -147 +/ItalicAngle 0 +/StemV 41 +/XHeight 426 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/ampersand/asciicircum/asciitilde/asterisk/at/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/plusminus/q/question/quotedbl/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 9802 0 R +>> endobj +9804 0 obj << +/Length1 1630 +/Length2 5433 +/Length3 0 +/Length 6258 +/Filter /FlateDecode +>> +stream +xÚ­TeX”ëÖ‘’î˜fî.Aº$†a€!ff@ZJZD:¤é’Fº[QA@J¿Ñ}öÙçÚßùuÎù1s½Ïº×ºWÜëy¸Ø MÀ*ŽH˜&‹ Ëúpo´¡ 6†9{8¸Ã, AÌÅ¥æƒ`àH„:“,`Ž€: +ˆŠ"222Ä\€åçwvÁ¼fÆ|‚Y~¹~"ØH4Üpc?|`îH” ÁRüÇ&0€qNpw f`h©­ ཥoÜ‚!`^wÀÐÛ +Ð…Ca4ŒpBzî(áÿÕZË¥‚ ƒÂ±a0_( õ P0/8ýàhÀÙ ‚À`g€ApÔÝÛñWX»òwA(/$ÖËaÉ ‘h êGalVCuÍ?êĸ@0¿r£áX@:a=‘Pï_-ýÆ°4X#Ðæ‹ù•Ë8ÂÑ(wˆ67– åÿ]†7Žpþ«AÀ æ ñrt‡¡ÑX,÷¯éüÕ'ð/ÝCP(w¿ßÑÈß^ÿ¬ŽAÃÜ„ˆED±9¡lng8‚øæ¯eÑF8!á?ìŽÞ¨?1˜×ïñþÚ>lG$ÂÝp„9ßÔGb°)ÞÿLe¡ÿÈÿ‰ÿ'ÿOäýïÄý»Fÿr‰ÿÛûüwjMoww}ˆvþxdì+ƒt_ïŒ;Ä øõÖxzÃþ_Äîî÷oÿîhû£ØðýÖÆ@°CQA8c…‹ˆ + ÿa†£5á¾0GC8ê8Aܱ3ûm7C8¼ÜáVÛßcÅ ÿ 3uCÝ¿Dø‚!ÿ^>V®ßÅßT70V3Røw/ìoOCì&`LýP0ài,ôŽÿ<üâQUEú`I,*&HI‰Ò""Aÿ&ão‘¿ÎzŒÜ°°ÿþþ:ÙüFE:þÚ áˆ]¶~ÁPo//¬Æ¿ï?¶é?Ï¿×ó…A‰—P¹×ÌìǘZúüÁ1uëÞn¼Á¨²Ó'E!ÕÈ®û™Ñïd*í/j5NÈ^>÷›ßEýظͿ9ÔMçÎÓ•;(d âäë)¢\ån—Ø »i[FöxÏ">àÓœî[|+Iaó͵1#cÛÒ‹«¬íb^×>ð…pú…ÐÜ8F]†>ªO¤í hÄ¡ª-ÞÝãNÝ>9æé~98ÐuDгÁ,—HÄ%¡NßeOÃøÙ{}m€^œùHÝ[“3 +§¨ÂÚKk€>Y¨4à« F‡I5»2p=ž6ºŸ×©0ɧ.) -h6ñMô6 +sôž:·HyJ²<Ó%”·€4™uÐSËÊø8yš$C’x7¢U&$²wô9Zðl®W%3^"™¯ÙÉ¥T¾„‘+e£¿|h¤×¡<¸Lœz .+wQoÜ+¹Fô9´‘­‰ð !À?c¶î³~Eï]'ýœ‘ˆ‹3`ž?øóm¾¶<ã“Ì¿kšåÏ›À1øJÙY[gN´ÐêéúDýˆüÌá±( ŽMÞÙZwßàÖØbÓÐŒ!Ž´Û ËÜóû'aVoØð[º“”®¬–Ë»ÎÖ§×ÅLÓñy»¬4›<]`}–k=<–Œ n^%ÓæGÆÝ,Ì—Ð&6Eù>³Æº´’(ŸÁ~–él’P¤q¤Ì¹À-¤7UmùNcy„þzÊÃhFb´ÊÒ@5}¤;œ‹×}3x/°3æ0a(A6!ôI\’atâ×"æ®ûöº,3HÌfÇ/‡„´Š? +‹Íð/8¢1çî%ÛOÈÚ«ª.ç^vƒ=*u&@ò‚¿ø÷B˜:ìH ƒÓ B‰§m‘/õöÑqÙ nkëŸÄ¦¶nk¾"­äú€ê¸°/­ þ +à2’܉ªBw÷ü[œÌ3Nfˆ+Œ^§vVŸª¦¦?>ñKZK½£jîK?–J¡ÍZæ–GF ‹ºigšv´¼Ïœá®À-!Ý4|¿Ï‚ç{VEdBEÔíP]¿¢úæò$WGùž‡‘kl“wG>XwåC'Os?7Bb¹[·wûO%y7’ÇðNeâ*Tºê?d¾Šrîw”¡+Ë4œkÏrZ ˜)Ýo/|d6dây!3”0$=Çzç`WDøÁÛ¶/>…/dtŸñ´Âñoùsô)Ð(Ž5Ä£ ÚØ8@Ê\{kDkr›® ež;}>õ¢¥%hóäsexw»Ì:¿½æò¡qpö]ê½Åq/gp§Â›ÔyQT¾¿MOˆ}8ê²è3ûùw:+3)æð䣒äÁ•\2«ú¦îÝÞïqÕR/ê´„*Á¥o«¿‰š˜fYÏ3]‰•`œãDö£'<+º“<À°m‹žÕ| Ÿ6,Ÿñ‡žˆHƒ¢q.ü;L%©›÷OÉ´Îàa5Rù›~¨æŒ‹@v Î$Ìċ±3Ü£Gcüh8s@-t´–/>ŸJ¬.{riDÙ²xŸš/öÂGíó"'Ž†f—t3SŽ¹©¿\xÍYH¦ÏŽS¾O>‰/Ñ7îK^ñf._œa§·x|oAx²¹©¨˜Ù‰4BAµiöîÃwe¦‰m_ ¢:o^iÑÓ'?8¯¢®ºsæS +ó˜±ò•XEˆá[–÷¯ä˜|øñ­Òæ};.¿NeãB°sAòn¦š­tíªhh$ÇѰ–)KÍžýÅÃÃàƒíà*V:O3³ž"s ˆ¦ðµX|qtqñŠÝ^¥œMÎ)ùO‘ƒ£…ò^’ZK+?¦ï…#3ˆPÞÈgWûª"ƒqECóšéƒá]I2tm4YLÓŸ:OnúZâMÏß,œV!^dÂCPÔi¤¢áZbVᶦùÇ­gêåÍ¡Å×ÙÜ—ùÆ|¤‘Yàšb\žÜæ"]½ÄXµgš2½§óY8áûYå ›ëïJ½ÙTÜøœíñеj2kñoõ +Ñ{’Bð,Ê}¦õ„ëHi)š‚u•õÞþëR[~Äp°ÁÄ×Ô-Œ§'5°ÔâCõÖ9‡èê¢=~øÇUlpKDê`Í WºÍoªyš¨Ÿ»i°ÕÎf×Y“ |!¹b°ýµÎPÿPåk´v]·W À Oèr2Âàn’·@NÉ’±óå±q!¶ÏËÒˆ®-ØQÆ@êÅå®|š•ÐߥžÐgŠ&‚ï_‘h®›¤Œ#û^œóTØ©ÕÅÿÜx¬°ÕÃv*ÍòJ×Ç “Ml„ïÚÉd9èaû[Ô¤h{„£.Q§¢b3Þøb+جÒOÛð¸W-ûõÔgÖîG¾Ñ¤òïâ†ö [Y䲇„éÔtn4"M?..žoÕ±L3œ\Ú•’'j­ÛÜóîè©N̾ª‚w°2úZyOè¸7!¹ °v±4ñÅ“<ù +É(ý§’¯oœw?‘ä9ÝX"«ì_”TaTm/Ÿ¼F{Ÿ}Až~¤y¥AQ{¸¯6,®‘ú^‹€À^r™°sÜw Ò¿îÛ‚Ä|ÁƒÑÈ»Wî”Ë êë¯1_%´éãG‘vT.*TmŸm”Œ?Þ#ZY±éRe¥ÎŽáAß/Ô#£¡=ÜåæpªEK‚ÑС‚9éü.MÍ6QNUºÍ¥Œ»©$2'fÕ‹JVÃë‰×é,Ù`Ì!aq»³û3¹¼j!Yø$ë±Ô³ !_ƒ†ÒîtÌÖî-,l½3ÅÐâ¿wåÆ°ýŒ¥9)ÄÊWsÞ/02ñ牢ä'‹ÏÔš® k¨-ÞF­ºegHÄ c ××Ûû IKÙ"xÄ^¼öVŸ®Y†™Þ¨é äÝ4ønñ‘ÂjÝö‘üOídGÌzÙv4^¾Bó‘â5»Ç÷ÖošPxhP)õ)Üϸ·ºNpµuüë—ٖ³9 ‹¹îOž³ŸTZó¸÷L¶üø&UTÇ-FN²%zófô@-ŠRúö`ÏƒÏ } +ÎDa+õê\r‰¯äŽý•àkú'Öüù)üÚéïÂ$ßü\+}"pûáVAf¼y=®è}Î×Ç?›ãsßHî»;œXNßT—¸nä+3O!Üœ^™á¡8ïÍyÉ{ä;Geu\xF¶ R +d|-Ñ+iÜó0©V0”¡t|™˜µ´hƒÃ wå¹ÑLÕ5‰gx}UΖ,ßÌ­ÈF|¹ çuƤv¿}s#ÌÇ‹¼pìŒwSøžKƒw?§ñç8œ[=O†x‹ð‹þ;³c¥X“'ùÉ\6ñ£¯¢å@à½qÌ­v!º’ÃÔ­aú†‹–-ñ(~¯Bÿ^±´äŸœðæ`ÒÛ”ì[Ä»›^Ä\Â4˜øÖçjMÚæõk¬LºBÉþÒõâ¢*mß|<½AäÓ‹óÀËDÙQ_×gp» +wñ}fLò¦P¸½~>±JK›ã>'ó§’ÝoR¶\!Kîà•è_&/ g,Wû?¶ZØúF”=l¯ä¦iŽ y£°nU÷ŽJîeõ|CÔ·w‘Îj÷²†{¹‚/C¸äétX)VÈú®Tô¿x6!§#–M2<¢;¯ËT.tÉòh9N§­Ñ:E\BHIVƒVþç·öÉ”0Ÿ²@ó(ª úv$[A¦ìÎÔ ;ôªì’^û1L±¬i7C#h5Äàŧ8Û©Vx·e·_Ž0v®øR¿ààË—¨ùÚG)QæÐÄ„¹…öÉÇjfœ©ŠXÅèñ +LT4‡³/i”:PÎÈ*¥´Zs× +dE¬Ô’æ(Ÿ ¦Ëÿ$d£“ú¦Vä4Ñr»Ò×/ø¹4£VýÚÎJý„ÿñ=ýŸ™*«f¹I¤Ö…K©øí÷Åû$4Rƒ‹:t5—áôb–³'²¿û»Õð"ߎÐI^‘—ÓXΔڴo5’É…úoÄì´ºQ–OëÏK“5Æà-rákË¿m0·”á%b‹+ò,UxfH mÓWnK¸KìaôÑ1Ílè22R˜ß¦Ö—{Zê(fçü|õ½G›ŸâË`Ûú¡ ³¶;G´…‚dáÇwHI +⺴eÉèùZàÅEP»=+XÚЕ 8Þýüô†§Ýg0Ô x¿Ç uf,’D>‰Ÿ=ÐAÿsÛÉä:_ÅZ /iôa`–ÂÓ˜›Æ¯hšC) ‰ ¡B cQ•ð\qíäåfñ{[|ªB©\o6CÏ~€ÄÊ­!ð9?Vt)}è¨ðÒJÌHÝf:Ñè3TwÃyÔíøA=|ж«m¥ó~ðé=œ·‡7£z]3.ßõ‰þ<àaÖÓ$Æq÷ ©"ØN'¦"€Ò_mæÕrÍ‘H,ŸË9ÓÑ€TH¹:ØWá%¹’Œ‡1Á6l¥©Öû³U¯ËÂ{&Ã:Ü®ÈuÉï7‚ÐùÉ9LB2lnë´0 Všú„•…ýxÏ7He.QÛûö³nìM¸ÛIw2ìÑ?6p^~(ûXÃÜ€®¨zO€–;pådŠ”ÕÖS“}{í4H‚Û¸xàf:hçvR·fCÉ¥Ä */ì¦>u¡$I‹£ül7ôP÷¶ÔŠ’*¨ÌpÅ‚ð²÷ÝZkóeO¯–_iIa{¤O~Å„K“ÔTŸƒKç¥Q¦5Ùï:W·âXESæKc»_ï 6ê,=Ú~ÊŒÜë(N{Mø¦×á±…Ö'\$ùT#m’?Á.ÆóAEe×ßÆæƒÁöÛÌ}W&kfÆJÊ´kšp2ƒY%&ø‰"À˜TTî×A3§sT +ñ哧îŸïsd]?w%¥3D¾î›L{ÏÕoó$õªÙÌ2˜Ct\_òã^'Å•%žŒÝ&oÔò´MÄd>yyöÍCK17‹ç6w +ñVî¼!p JeéT•9(˜¦F½‹—´)‰y~®¹ã_ ¬J/2ûñö$­s52{vñ^º–Æ~ê×^ø<^gý@þœKþÆ µU)H#––Eœ¤4ÎN[Þöš"§5Õ Ï$‚B4q{¬·n‡]ù5Î;$=W5ÝœNⶮ"X¿³Úᙣ¶kD=Íuóçª}¾$óY߯Îs?G®P­¦Í‡ßÅ]°3¿ðé+pÓß¾hJÑÇ=‘MGŽ<ò·HMWä’Ή”£>Ì'æÃÝqÑEd+ίûx› éº>Tfäo°ï_îŒFÛÎ-ÉSôfÚ,W ’Heä;›."[ƒ0† ›•ð•ág®ñ +w×Y%ó!ÉVç)[Õ˜ÏúþÒçþa/‚Þ|›ì#üšº Î»iÿ¯©€£J’ï”›\ tH8WUñçཷ£DC·j⧠yç•Cà²â¶m–éÎò­‚ÑNa[ï÷Ì5G÷ˆpäZ‚ùd8È$X¶é=ŽÚÅ‘N`Ñ+¹56)Zò^·ax 5‹­‘ƒ~1¦ßq–rC-j£xkÎK¢ ÚÒoqTÓ'f÷êUË 3u: ;ã|¨˜’¦}qd5œœÏwë%dø‡­ŒåÒN*‘âIï.1yîæy[ƒÒÊ8 •'6'P¶ç.§’ž÷l†<+Fª,…Ÿ² ²¾Í1ÌÙòùzL*`Áa^²„ˆk¾h`5ÜøXsïÈíµ¿"ƒ¬ÈéëÎ#÷Ίü)Å4Ä@Dݪ>Ý“Ÿyl=Ñ)¬¹±rw+™"Ee"/T'Ye- +¾V|0¢X™{-ŒØ-ñ'h +úÂú´=ˆ•¹«ÙÍ°ÛPÆì-Ñ|ãM­Âm³.­ÍÉUÊ“¾lëçRIøKÒó­ T‡!/ÓSÙJº`ïoçÖÕh@C4#~è÷½ (`¼žœÌs«Ç>ÖHåœG!‡ÇÜ. b^“Ùp‘µW¥ßæìiä~|Y=ŠÉAs¦G¤“°Øe·Ý ¤y2„üqt8¢^ŒKoühf +‰Á# +·6Š›,KÕ?.1a½Š¦ŒJ+6(exæež-*´—ççùÔù¢3_—¢n„2CÙ¦íFø®v>W?V}>´ ÇvJÈÂ6†UÙz+êj.É~kz‘+†åäñÎל‰ÉP÷‹?F{^Ïéȯ²Ýë]¯¨>:þü‚šã@æÑKzåsB “Ü/wGVCó>ΛÍU?ëxÑëXK;$ ð“6n +endstream +endobj +9805 0 obj << +/Type /FontDescriptor +/FontName /DORCQB+NimbusMonL-ReguObli +/Flags 4 +/FontBBox [-61 -237 774 811] +/Ascent 625 +/CapHeight 557 +/Descent -147 +/ItalicAngle -12 +/StemV 43 +/XHeight 426 +/CharSet (/N/a/c/d/e/o/p/r/s) +/FontFile 9804 0 R +>> endobj +9806 0 obj << +/Length1 1626 +/Length2 18985 +/Length3 0 +/Length 19837 +/Filter /FlateDecode +>> +stream +xÚ¬·c”eÝÒ&š¶íJÛ¶mÛ™;UiÛ¨T¥QiÛ¶mÛ¶Í[ï9Ýýõ8·ïŸ¾ß=ÆšÁ'â‰k/2"E:!S;c€¸­3=#7¡¼¥±‹“²¼—,ÀԒ𯜠†ŒLÄ`älig+jä à&Ô˜ŠL™™ ™¸¸¸`ÈEìì=-Í-œ )Õ”5¨hhhÿKò ¡±ÇÿÔüõt²4·%$ÿûà +°¶³·Ø:ÿ ñí¨:[Í,­„" +ŠZRò„”òj„[€£‘5¡¢‹±µ¥ ¡¬¥ ÀÖ @EhfçHhý­©å?¥9Ñÿ%äDhDèd0±üëp7Øÿ£¢%´8ÚX:9ý}&´t"4w4²uþÛg;BK[kÓü•›Ùý ½£Ý_ ›¿º¿Á휜L-í ÿfUÿ7Ng #çr;YþUÚ™ýµ4µ3qù§¤éþ†ù«u6²´u"t¸;ÿ“Ë@hjédomäñ7÷ß`öŽ–ÿ‚áâdikþ_h æFŽ¦Ö'§¿aþÆþ§;ÿU'áÿV½‘½½µÇ¿¼íþeõ¿0X:;¬Íèa˜˜ÿæ4qþ›ÛÜÒ†áŸY‘²5³#dbü·ÜÔÅþê\Žÿjå?3Cõ„‘©­µ¡)À †AÞÎùoJBÊÿ;–éÿûHþo ø¿…àÿzÿÿ‘ûŸýo—øÿï}þÏÐâ.ÖÖòF6àß;†ðï’1²%ü»ge ÿY4.6ÿ/#Kkÿ/§ÿ´Öü­°µéꤜþ¶DÈÖü/-ŒôŒÿZ:‰[ºL-M,ÍŒ¬ÿöë_r5[S€£µ¥-à/¯ÿj)!#ãèT-,M~ÚþCÛ¿U[Óÿ„ÿ—ªgДQQ¢ù?,×*þgUû¿ØþG)rv¦ÿëðOaa;wB/:&vNB:V¦¿wï/ .vFŸÿCÊbú¯³œ‘³£¥;¡Îߺ™þUýÿøý×Iï?ˆؙٚþ36*ÎF¶¦'í þQ›¸8:þ%ø_—ÿoÕÿóü¯™Ü&0«Kv&<ÁV©éœk0³‡&Duúz˜@‡Bì‹ëU òü«ìºýRíp•~T‡Ð7Lqµz,žÙHSŽô`XSt'®rñ|H¨zó7ÉÛ9hô‹áÿœkDy]/Ènƒi³3ªîN()ë}@àOµ³8B]?Sù“¸æù£‘>Ù#øš¤ÔÅ w 5¡Ô䟓'œÔ›|¿¹rØ©ºØkK¯ŠÐÇ™6¶¥É™UnRû¥3ôÓTjÒï.VW=ÝÛÈ%©êE Û<‰*¹TŸÌÕJ8€5 ,âÕǦ•‚¿©Åöôžs ‡r]‚i¥y®ÜŒ C¬j–ñBÝþˆkh_vÁš¤ð KÍâ–ÍáZó¤¼Ù1NÍA|à‰‹§Õü]¹cÌ9RøDœÿ±•ÍMW5s²fíƒ9e¹¶„öçp+YóÁ¼‚nó›÷{9›~üo¡pV–æòÇ—8¢ œ9Ðà‘ñ]Œ¿Ì^É~œšË|P‡ +%AßA¦b†«±³# x×’<8%5ç2%õ”`¾]¢ŽÚù]ŽUÁr %)çx]5Ð#À…/½oP!·Øafn«AÁ +?#ââè'}`‹7»Ÿ ÙCC……¿ jgTwF¸ê%=žæì”Fàœ² —¥$‹þ%´þflªõÌ÷¬ž¤Gó@MO¬Õü“¸©(O4}¹º”¡îœƒZÒ#ÄÛSoÐ:=g¤sl¦ÓY»tŸm÷ÿê‚íÉûöÞ—öFïŒØêm3 XÿñrÑ‚AºôÓÛH êƒ/³îû”Š1›´¢‡úG¥ÆÛÍ+f:œç±6r»wV“JoÜù`¢5Cãz$77.œ>Ìô6wĸ¬•þ£X*CüäË·x+\>êÇç5RÁ–na•5†S§,ûb¿.¢G.–' (ÿè`;ÛÍŒ@-ɲ–O·:Ð¥„Ïïý>¬n}ŒíSŸ8:Ãû)^=õFÐï gé©âC;ØRþÈÿwð®ÈS”Ç°ãU<ŃÚÆöjw‰) Ö(9nsó&tÚ^‹úÖX0 cpÂ+„,'ÿ=æ¾M^9ûK“qz¬UÿÙ›ˆo,?äŸN2Êõ/ZñÈ._+Ëìľð‘¥Â¦mµQ5rcPíŠP:¹Åh×ÀÑØkèO¡ã{|:VX¹23ôÈ•rø¨Ðüç5-o{žpsnsŽ‹ß _ã ˆ¹63'„’Ia–#æÈ/ÉOÝ__O@#• +ƒ §0Æ¡ºëXÃvNº†zÖ+¶y'Y^m‘å FeÜÌzã¢Qy¬ÀWcÜ–IJ1r[x<£ËÛ¾²~(ŒvXÚïCtõ@7y¦øC±‚t[7È÷ÇÑpÀýñµCÑÓv‡µ_ /ØjM•Ózéàø:!«]Ÿ‚âŸîúk~ÀzU2Öä0ˆŠ+ë^¥E£+óh+ºDhŸ¨“ì8Ü5¨¯ÔÔ÷ýFŸ†´ð¢¾'+S“r94Ö¦•¸âæõ¿yÌS +ìÅ{EK ZAAEËbY6ïÛ<»º9=c‰$”ŸËø}üà:Î6ÃS²oïó{Æ2©ìŸ^xó¬†uÈKLÅ»šr8ü¤dp²ºÂQptϑûw —%‹ŸX‡½ç½ÈÔŸ_á JLk1Ÿ¦@9dÔ™hÑz) +ÚéÕò ^ D¨ö‹ÜÄ þ£ÑÌ‹–µ•xÂ<ðî& ¼ï™Î©Aù +!K©…­Ö·¸59÷v¯Ë³;ä½Iº"ââQÊtø†Ú$ÚlªW-_o,Ò ÁЦç ,Ún¾ga0„|)z›CUC¤¬>}g@|¬ÂÅôë¹9]ªç–X¦Ÿa™ñŽŠb<'=jÃIù¨>¥vaVÛê§ôo?$_zùùjféuÄÑxçC|c7ývä‘A†Ý„!{Ïó4‘cÝ]ÞUʼn[…«ªÇ)NÛÖණÞÛq%Þ©•²^ûY—¥|Ei6’ÐW±×wi¼Ø+éñ(u«á§;á;º«*9"ª±¾õÞr5]…¾‰à¨ñ%tø†Ú®õãV"³{ž‘duŒ€je¦„!xúù¯z5™°~¾ñáÉ+©{}&Y¶‚óÀ9j2Òµ†ãbM+¹˜Ö• …r§­Mb¿vÉáûÌܾðÙ}^Ú‹T¹é`"ð{WÛ'’±/x“ï`­ rf)û‡xkeñoΫæäy{øbs €¸ø}úZh£\‰¨0ýû“—À +ÀÍí çJàæÉÖ^déN‘ÈÎG"þ®é«ëĉ$s'Ñ8 õÉ£z¹òZ›îE*äŽÝÎÝvŒqŃÿº#=ð8Š,õSc°›$Ú°Vܨøß—Ñ<Éõ$—XW~{{§8XBg ‰Ò†rðèËÎq^€Xy:‘àGPóÏhñaðÛWzí¶±þ£ÈÙ¶ªšn›e9âK ºSò´É¸µâ@Îá“Äq¿ös7Ó“Ýé —n®æ%¸wúkò·iŠþ6w@Ö°—–*¬ ×!·“DÚ×ƪë¡bËÃÖ‹… ÍQ*ì­Ø+påK•Îë9晹çÇš>‹W>“À ñs¢/=­Ê Ö·¬eïíOm3!Ð Gø!Áاüù$ñn™}A¡/€:âÖó›kv§=O®2–í½žV{Š”ÿËŒD8Û [ÙôhÙ«œAÑ/sµÄ^›güì=u‰x +¾CNÆÜĽ,tÔ·EźX‹GðÍ· +ÝÒã°O¹¢ê¤®£E¤ì­tAýÃ?=›Útl\é”Ú-%{Í<<;W]c•{k^~n.3Ž0Ô é¶ÇQ@éœÈÈQQHE8Á÷Àu’gÈ;»}2NG o0{«¿1Œˆƒ£_]Ÿäkñ'u¸©·îÓ,Ÿ$¹°Œ~>û\ä—?#µÙÔ÷gwiZ©î+ eïWSú;*ÝáÙÌož¨õ£Wcƒ™6^mÜà]š‚€A׬ G)VMg«Qò5Ñr¿b'Ûc•#‚ƒ}‹LÇRs9±ÿXÚ¡™d¯³Wó}B§ámý)ÂñR=/â‘{Gµ*Ð=Ç7xQ9|㈽_¤çQ+BY‘¹½ù1´‰úµï& 8Ï”¬i!Ãû¼Ÿuv'êUþXsÎk¬¬%â?Ö²±¡zªb¶GâsM®‡èd5ÂN¡„¶#()”sÃÐPÿrdÏPºZzEIkµùCOÿ+¨\Ei6Äù&€(ÖÈ΃¯u¯ô 3~’ ½2 ø ²ÏbLz­Ý×ç𣦺&èرo8÷ˆÇ¯›çñlÍžéÏi{µ¸ ¼;V·™xSøh îÀO#O»¡VHü1, |PœšsB¡ z²‹âLož›`NÑ +°K®&”C³HM¾s$Ýusÿ˜Ÿç=ïí^à¶ð bЀ‘T€ÏòÈ:)=ØNƒ·Jm‚©ürŸ¨;U4tþ xé^QÅä›—È a‡c „²+Ôè~õ¨1¤{Qê¥ÿÚ°Ë4D÷ÚÄéŠH®šÑzogNØ«™Šz„%AɇvÐ%CéÔè@§äwˆ;ŒfnäôÑ Å.;)h- 5ž1D\ :÷‘ ‚Œ°9˜„ç~o÷MÙv:¼¡0óV3Ɔ*eDÀQ%5»@EPõIøx>hLàC!ÏÔk î‚E…}l¹ègŠ%M<ª—ÂÞcRÈÅ!Ÿ¾VóÈ—yS1ÄyA â^dYÄL´svpJÐ*Pæô—°Éñ„¨°§"šÐÄ>K$8»0´Ï¶Ê‰ŸÝ×rhë/Ëíö’ëê±È¹^ª‡ì#~ÎŽEÂسÑ˾.@V´|¼ƒäÏ·ë,2õA‹Á«j~'m/ŒÑèUm‘óÂ.ÿ¨T¸Æ–’lH–nd6½`̲œ€1_i§ýÔz‹í‡°Eztib5ªZ½#, +SåkpVÏÓ ùB‰)•z¿LQU;ßY)NØÛP R«R²B=ì£éÚ-.…>1¿¿@ +]µ.)»îf‰Å*ÿ’A«ú5 7CjKÏЋš—yÔÜ"ý¬ã?l¡ƒqÏ­ÕWÖÑsY[èÜîA¶\*,ƒ¤¡<½%†à²á"{eýû@d‰ú(o´à÷G3κîüçµ{§ŽÿërFŒ³±\á‰çÜ bÜz{¼2«ØCºÞˆ<÷OŽý°uôPx²ÃˆÐ.Y*4”E1çÎV3±.ÒêoõÚh[ztÐÓõaO話Rö@aÌÜ7µ˜ëIÝêXcŸÑ±4‰ptæJe¥Ø1‹E§Œ›µ2v| ø²Bà9 G½|É$Utwq4¿¥©@ƒŸ‘r@âqeeLî´wp"st˜Û$|PÑ°ã +±Ô ¨©0§q~†`kú‚ͽˆ‹‹ä-ƒM†ZT›+Û!“HÈ%ôèB¶XdüRÿsÐîj¡G ¯£ó•÷Ê9gyÃ׳zg©âq:æ#zí ›N|¢£ ¬©vö~-ûy5Y¡IcïrlóͪÄÉüšBüKŽþãÍ%Mó©>ë«ñ²¤1ЭŸ-:'}CŠf¬q%·_êä|Ò†‘ãõ*ÎS;C€ot€àWþê³lc{€¡Zþ§I+7Î&r_¹ŠÇ’©4Té£ô4-y,¼rSHã-ôNœlDºü« *Î`ÙÁH¹!Muo*(UnŠ +N9¼\;€“†¸qt “ïAôôê&)ü«RjP“àF‹¦Á‚&ПÌÕ4ú&²˜ú•ªO0;÷òüÅŠ«—¸Ò£5ý‚¥EÉÈÇ7`4¤Ð:Fs)29CkbcƒÔÌvŠÝö[wÞ5Ų+ ïhd³ñ× ·§þ‘æá§s×þBsÁõ~$÷MQ÷Y,ßO­ý–Âgqõð· ²"0„îRõ—/²@Cx!ŸUó‚í¤æšX¹¨«´—E®#Aô‰ÊÄjÁn˱è#“ŽU>N¹jHçL­ªo3£ê»qª“ZýXr´béîcsŒ”ö¬¥‰{«ñÃ_@ÌÛH9¼§·Öp|T‚f ôäpß]DâYº;rûب,kÆïÕ®NÜò³u.Yî‚ëüîÉ/Á +¸O?4òEú!©pû%êH©È½££ÂŠgÛE‰€B +Åò ¹£ö«O‘óI™ó"Ôµÿ­˜?{I2.ïÄ]¼刣æHtÙôýYÂ#n¥·òèk3î"›Dz_ŒöœPÆÆÞ7ïìÏ”ï0¾°A"t’Ü­E²‘V]>H ðxÑ™¸ÙMrò#áñÀ´®;8¡³Ðj?~@˜r?xR¸Á‰‚˜[ÅOúýoâI0 #ÒÒN%5–?¸ÚŽ)G§ ¤8Tº³Î4Q†ñëöÄBÁ,`NPà©%…uÌSé(‚¿ax ]ó–$¶Â ˜5Ø~š"/Èfæ%]gX<{YÊYÍjœtÎþH ñÒhë{Ñ7Q%pŸèT$¤8gVXž;aB(– +°Â7ÒÄ#¯:Ÿø•^–®€ÄÜ1%I†-Ñ{”!’È3Ñ`? åBÒÓ<êê n¼t8¦ƒÞ?Ü(ž¤áêW+XNZŠa•A’%Ö¨5l›£¯0{̼£S%aEã«ÊŽ”Þn‚a– 'Ê“w}Šð=ºtdjUÞVŠ_Vö@4–2OŠnï]Ûð.ì ¼ ¨TËӻ*ÒçîO¾d«„ÁçÀL¶T•êְĘ®¼·Ly3xýò[&‚GFf^…CèY +Z~Eí+×ï9Š*Á}³)lj‡tµš‹ñéŸâAWøI ±,u=ö3”j‡&ª]`öø‡Ø¹ñ$& ‘âÓ¼»g!èÁ8áõ}§žª«(lªé±ØX u5|¦g0G¸’ÅζËrª1ïno.ûÌ*Ó‹À×Ãñ,º<ö*¬A¯f2'ÔÅ­ %ÿ<ª÷+® ÿƒ“¸}jÖ±¶ô€Á†Åï_¦%¶Vjì´hü…ο[UÝ…\ŒÓ"⯲›A­sÎZobf&¯|¥9fÇ·õÚ_kxKuí uÛ¸«µ'2U`\ñv]Q³|áp³­|¹p irÐ/lüùbyÎQµDéxfá>絕kð+q‰0¶¯MÑ×>‡toòœänÕÉhp‹î¦÷QÄ‘¤ˆÂÓiøœç b\òW•SXYÎwº¿° «è¾ß–ìs)k¢ÒeïœÈÆFñê’w‰v8º3„Ä5Ѷ·ðya´6 þʼ—È7+Áum÷j”ÝÛКÉL³¢íun2¿ V>_½ÝÒ¬HeñÐîV¦f +DñEºGøÚÑ…*S<ëò¯[ÐEUý­ì{Ðl¿§yÛs5Ÿ/³Yx5>þ£Ð.?»Á{ÚÜ­±ùô[˜ìΦmO ~¡biSóSvŒ÷Ð;*•¥µ…w¹Âä:_Gø7¸fþI ;;¸ä³ž&wÏé¼þvǘ Ððé®äŽ–'kט4 +ˆ”lyT®Të׬ëX’•Hn!Í*o£µVLI31D.Ñ _]»¯à‹bž F󡉣|ž·ÝèA˜‡ù›q€‚<¦d8ë.µÞ‘œÆâjCçnhÔÚ¯îlàg›³§ ›tRú„ž²ˆ3U«‰ØXùhèa\ûjÊš!‚—cJ´*§`‚4Ø‘­ÍPÞæµÎCM5êÔ'5"êòÍÅ!˜¯‚†‰lùÙwd‹ÄÀ$‹É™5î¸bHO âÞÓi;Ñ„õ¾Ö¡öM¬3*ëÖá[S •¿œCB«³–¡Ã§ÍË·ékõN߸šÅ~µwŽì÷¯éKØ'ì¤ñ6ØÄÛ¨…ƒÔ\Ï«‰*¼Ù<âC¶¸)Çoƒ[¿UP2Ëì^jÑ8žÂa:áÏo&â))†Ü}[Z¡M-3Ÿ^ɺèÚ9nã×ýÇ®x;I'+b®ÈTˆ?Äèm„C¾æR¯¬ %-1c¼à+?Œœ—Ÿ«Ñ›Ê–ÇNU}-°Î¡£ÄÝÎŽ]^#ãîu8Ë: ëß}…4Ä¥BõE{Á}ønúžfÚ6©]·Ü¿+Å5ö}âî¬ €üìšýÚÜpÉÐ`.9fb€È‚Öî‰|áÉÄœ˜Ùôõ‚9ùChØÚ«,ðéÕ̱z©FçBÑÇ7ˆ³ƒ¯=*·ýúð]E. Ië(e'² +sýôfþ£ßa…UGÜœ&WÁgÉ~!p›%³–sn0Br¨àè±si«Y€…{Oxò>¨7¦z“/v)$UÂ*º;'óíÅj‘mÊçÞn‹½`´Øi`—SB`5 +-V¢ma =çãÛ³HöÙãš‹²üé(9Bƒgþ¦xäGŒà¤wyék$J_EgìmWjÂ@[cHÛ§5Àe¨tÌ®À!_¿ñLM;¤~N(HðþÈJ› ±Þ‡d‚)„ýõäõÁŽp³âŸ¢ç‰.ïWfq~ÚTb‘M˜xƒFÜ`y Á̬rX…¤ÁÔYäI^M@Nx0âVeX2†"0`M?6:åhJ¼³„žË—ù¶çˆÄ‰Ã˜±_÷A?cû^s ø# +šƒæÂT’L1¿/Sñ‰Ú·@ˆFB#×aÏ(iÕ:Œ‚ÊëÁV¯,MýVB¬óaqDá´ˆ˜>hÁ_[öTÈIŠ7z…Ž´WŠ½Å˾ 3KÔFR„ê´á‚æ±è‡(ßý\žÆ³+ 3Í5Ì‚¼!!…f¬÷C·?î¢\ 4?žê àðc~Ôæ(ì1ûm;dPú°S«Nˆ€JäQ¬Ù'íá‰ò5yŸ ´bOe5`bâˆUlv;. ;Z~£K‘ž¨Áö©%CyÞ÷Çb,dÒ^ѧÓÇÖ²lNÉÖ9îò~ñdÚŸ`NPtû¢ÌOˆX8t‡"”ƒôÄ4–bðL4^å&0Ø¿‡…Å üyeŠ—-6ñÏ“ Ž7ƒe\+ö‘ÐY‘¿9ñà®wXnN ªOVóÆYÄf;HΘ î"Ã/ÚV¬›¯Ñ/¤F6¾ƒùtXà¼7¹þ±ˆ#b8ýåò{Rëìô2,Ì3Ýu%”JOíÀ|¯«Æ1ô–?¾«OsÂ7†òʧõΖ¡ f DbôÝ.ò°©=-3[>S¢ÔŠ¯­0i± TâI€ÿú§J1™u;—J•–]Æa;]– —㯛Žu.ê &\!Ž~9#Òë}¯t%ø½9íFh™«‘à @‘®óºaLRm|ÏÏ|3U ?äüƒBý`?Âsõ8¸ùÎfØòþk^"[´)°^y‘âgë.¾,§&¼:Åë1Aá¦Ç5Ú–s`ûÆòH™õ€&8<”»HûæššŠªƒÕJK­c’ò[qXVdŽ¢ü¸½i°ÖôISî=bh43ô°YVT™X§s+¿òÑÌ‚?¾tÖ:4pjÁžù´H-ÒJd„6®Õý‡&åÏFö\ˆ;¶ži´u9«r$e3ê#³g²ápy¡q,þðâ·œÞ2î×™¾5·ß»ÛŒítÃë3jV |h¶U›m£{“+ø”][Ä“K¡ ©Á>• ‘&7gþGeÊOIɲi©bYg§ËT@W&â¾ a?ÍÜ£U!ëT8îü,¨¸Œ?#ä’l¡ÍÖ4JYp­?x{.˜­[N˜ ʃ™ é%òŒ ææh=ýhå– ~¼*Ðò\þiå3ý‹8ëåe¬æ£ËÇ7PœsçIcÇ°rÇn²)ð{ Ù€¢;ˆbôK­1tF£°É/…ÊçNáG,™¯o!Ü þ-·ð©šd(cSlð…¿w›D|˜) Œ +« RÊÐƳLE|y3.¿Yf4P'G!ÚÈC×lAèTƬqŠ`¦’`¾6dÓ=¯à=ÿêÃ,ã(eŒ…F³.)ˆF®±u”~1­Öˆ’*PªU¸ßv1íb[ö‰¾ƒr-YÔÏ/A~ãFdò–ãöÛÌ*ÃêOvo¶úN$Ô܈$S9U%äïšNS° +f ;YœٱxF[o8¥l‹äOÒ˜ÏåL| 2×L÷{Ûpgl$(ne–8ÈL¿Çø¨{¸–4[ÄŽìêC><•%Í{t>ú®Ñn& ++.ñUUÑéök/w±t¢ G6b ¡fÝÁ‘¨\ß Ræ™·hÑ )2N:°›®±^â?rcÎ@¾=•ÙDoÌjÛî=™Æ v‹G#°07]‰úVëpÑ$Õ$œ®j°M¹D‡ÄæÞäžJ‚ÊAu&ø¥pÏ„ ý.käí‰O õùRûyÅv¦œØáŸn˜¦ªYšØ!l——?A²˜â&AÉkÏðÃ>¯^↋׹«ø}§ûgr~ÀŽ”’œ +o +ø’YÉç¬pl2øÉÜù§¹Mm S ú¨OÀ0>(où {Æ}àô€µÍUýýÈϞͳÇ[ð­L²¹0Yè©­Qaþš6®_òÑ5¥óÜWàì—šƒ—­ù³þCh|€}äØh/‰kÔ~ö½aò\ŸFIW7wÅc©†T©¯4ÇÝ ýb*¿!èQâ–½!Zê$1.¸ÕÇ®úÛèÛ‹6†þ—X}M€Ð¦înZ-#‰3kÂ`f]xVøQå·&ºIygÓ±¸p[åÆë™g q{WN©$ÿÉõÆ@p…w-PíÒÝTi³à㞊Ù äÃynLÃïëZÜt»8¤JŠ$m™±É˜ºý×)µ£ã–® ª’èjÇø+®i !fÓŒT-Ÿ-`•=±Æ‘_ °>Š¬ì¤Ùu‘Þšëyû#t†VuËå %ÚæNÓ[ µ¬†W)$ù§ÁØ(™á ¨)b—ô¢?30?þœsÊ ' ÈF¯[‚ŽÞ& ª¼ÑÿN +¿²9’›5CŽ³$ЀÁöwS'1”¾Á5–åö÷Xå²t€æIé9×ÔÉu¶XØ%µ E!•ÍÖ¾&(t4’±I²ÒI±˜½–Hu®$—ö± +=ð ¼”4Ø@UèjuäLX™«M]ߎ%?Ê.ékΤðItb<­ë=(P\íu€Jg3¹ RÖ¢R‹úÎÄ·[ÕºDZÆ"ð_n muÔ~Ä(ðP† O‰8°ÙC3²ëKß“`=¡¼45«úªô2ƒ(UØ54ÁYð@À]þ4¸Ï„ %–÷ËWÔF’†¼‘:k¯å”L/ ­ô{m}J%—hϹo¿~ê7£J©7¦Áðωl ˆkco< Ü×Åä”*ÆX°ïO2ó„>÷ Ù;êÝ%­•Ÿp»]íR¿:0¤ýZ/a0µM5Èo°ó]2KAäÚ½A'îfÿI9HÑO3DÝ!WQ}Ê’”’#´+ˆì‘^i~¼­Ú‹² àèP(!ÊY<Á ÉvCý%Å“²{(g –Áo³Õ“·ݘGâÿÙ²’ø#òˆx€tT5Q@…T÷ç€ùX8¨Ríô$5T£$ªÞf°tUõSQ£Lt]ôH0ÅÔröÄ[Åb¿8¥ü‚åSZñŒV›’$Ÿ‹afÚ™PŽ¢7Qí7¾ú ÔòàeÉ9žøÁý??2ÒüV‹7š*‚ {žÔð}º´öÏÔú¥÷òK^Á'Qf ¯;ºyÐI7òj¸´ù}"{´ÚÆ{V51´ +Kvy"§aŠá/%Оù¯µ%ÜõM\áy: EœíiisX¹±BıFÉÞ6}î<ÏìHˆÐø8Ú1p±XŸ¥sIó^MqƬäãP3×éÍX(ñr&½Þàå›·ôÐ$‡Á8 á_BŽŒù¢¥ÞbÂDPZОZS|” km3‡ °Ïp%¦A³ÑF½`sI7ضbÞ>¥·©ø>uø4eWb‚0êã½5¥x\æoU‘šI†5ˆ™Ï…i?ËÝXL +¦£æ¨`{¼Lìb[%u™æmÒ~™¹»L«ñ¸¢/=öaÎx›ù°û?Žòãëɨ#(¦ÍEæÏtPoO¹”±º²8-ÁT R·Ë‰˜;M–»Ûúai§Ä (د±]/¿Î§qù’ØôÅÖÙrk[»˜· +slSÙ8Ø ~Ú¶¸ñ,Þn Ï!Ut2Ü\Ô{íÜB•#…ÜSb%ó=‘™ œ;o?BÅ¡´.6®»wŠÐ)³(ñÙ¿ØÀ\0½4†‚Q|2¶hè­µT'h>K 9<ÄÑŽ4u±‘„,`¡°!Ͼ>j6#(ÙºØÀ|ÙˆÞØ’’D×a>$g5‚ÝÊcm鲜àÏà:DtϨvç‰Õ˜ Þ–Š“F/„ÁtÓ¯Ôn* ¿ÿ¶å\‡ $f3̪iYw4-ê9i[˜¤¿kC"F_™"ÑÚpÏ­Põý„6\&âÁ;ÚEhé}£ÙΔxÅO*¯»Ü˜ºá"½N=ÿJüð"ûü­ikˆîÖ\¡ +&Kù‘–ðÙ.ña„5¤²•¬¡DÅDëÔÊ´JÃÚ€Íçå|gIGãäãWú³øjI=­S¦öš5±ë‰SP ö +df¿m€^'Y"õú’° ¥Š½ÿïgþ,©$þËáØ¥ŸÂ‚m<£ÙÙ"Ó‚Üë›6Xd­:G:y ‹&wÙ±ñ­ ̃ŠcÈ=Ø%}ÝÜÐò;S˜Ø +¦P¬óÝc€ùplÌÌÉ øŠxóû°­K~Ï“ìÕ Ñ)¤5œ=¶ +Þ"ØRë”`“~¯·^%.+noÁŠe¯u¯N7^ïÛ?p(FcoìÍ×÷ó´j&PÒãöÂ&/õÔ¸±Û:›•Å'o™kM‡sh™È û‰€ÁÛ¶ž{ÝPêÇR‘/ôzç:Ó¯„îŸMU“|pÒr~× -¼'#Õú Les¼ÞWnú,]Wl‘y +QÝÜÈ1SŒr÷~EîÎwm`ã"Él¿Ç†c› ü§6ïá #¸ŠÁl V.0t’Óßcçg%e.™yÙWÍMàJu;-"_Kkhî'S¹øj¨?Q”ÅEEŸ9Dpq¢.$©DçE#ȶ÷ØΚh~7 `†|ö2‰ÊNøµ7Pg"Œm»ÀÇWe„5mÉàXIp$¥Ó„¤pxûGïu,*\ËjáÁö“Gê…ùÚ…H¼TrÂ~‚j®,%'/ʬ3*_GCpƒ Šõvgíè<þ¯Ì0ú‰¨F†èo9ƒ¿œZû!¼:Ûa¸©Ï¼t"'z£zªh¡¿ÃÜ7rÝfŒ`éÓúÉaOP„XÎïü¯^J^zå‰ÀÈElÛğ"×xóŽ€,\ßýg/f=-cûX¯MšYÇXêƒÄȘ׋/ý1²¡@pŠœ-®¬• J˜oæ ÜPƒâ Ê"1H àq^jMÍ°=úôé¤Ì7ðÚ %£÷±qªvõ4ÜÌ=ŒŽ/ÿ3‚ÌrJRC†Kãn£(?G0XÙ+Z\ ‹I‰èL©É;H…83Ó&©*³[•×05dz%ÊŠ”¡ûQNVŽ€îf5ÐõÙ¶4êxw +–ÑÒYa„!‘ìàïëÑý«Ì\ó5Ùòðõ°Ò>IV6–Ç—ÁÛ$7¡É½üÄZOOÒ +`Ë"źêÙÕq¶<ºšà¹U=ߨŸezØ}ÒÜ°rÌϾ…oªdW{–M#y}Áïøk%<™ØõR“7÷Î>ö<·ˆÇ¥% ˜ùÆGî »‘4ÿóœŽÊé-ýÖ`ÌF*ö²šòÊOÏW—:WªHTÍç³ÒÉ™ŽÇÌ)í{Î?Fî¼—·éÁ•B’&jª™IHC·U79ãÙÀÃôIK6Ÿ+K2¾o)x92Ù»´ÓNþƒíž1Õ=8Ï™û~80OãÆÌ_òUé†L¥:$FÓui¯Ç£T‘m(ûÙ§ðôYcNƒ+Nb]Eø"FdšÆ’ÄwÔ”LˆwÉ&ä-×æä”%.‡P¥í6è¬2‡÷Cé(’LóÅ‚hž(·{7¾1çäÓ*ÎÑf®©´Óíî\¦ó‰Cžcš<áZ˜Õ%樭vÅ>».n®}9ý7¼l.×a&‹“”ƒÉ’V Æ›m|›í ‹d¸ë¨{8Á2/]ò<¢°é`î #G†ÙñIá’7f¿$\eð±¨ë§#[¼ì‹Ó•ÓÙ}éN‘Åõ-Qas¡¦‹o/EäÒ¼;ªnùZIr¢›4.0˜8‘s=ð~W¦‚úúŽ +Š¯Þ<GL}š6u~šç¹ë¨Mi­T&ÐÖ4ê{‹ $°‘q¬’¥e®¯ZX×w³8ΰ÷ás ¯*…ãNtØÖÏßý^lÀ>5†Éò.ôž1Øiú°ËFuô©?´#ã\ ¼3—s‰Ö‹­ýÈß,ÁÈmIŠƒ GGå)j©LïÔÌ=ì~If/Fƒ1ÇwbÔ˜J?sÎÂ-å;­ #;sd³iÎ3û¨h_%Ý–’K[¥‚¾;k&Nb’ÜÀE3ƒó@&•6¯lEÅ ä:‡Ç„2zöLÍídómöx”ÛþzŽ€Ö#ÒùY9z8•ÓÔD^ÈÝmã–æàÔÒj:í©=*^SFL¼~R\Ç=øØž­í>øûB ÂÞÞØÌî{SïŠ.M5ï*"XUPוéa›´TÛ ´½I€osü]mˆSJK,©µ™¼b +XFÁ÷ž]'®¡³Æ|U¿òuƒd3€>ÍHL슺ʜB{=ñ¾ûAªKGÌÎW0¡:%S÷ux­é·¹›†käô€bE¶­Âd]r-Åô-'»F5c³{‹ç™²gÅ +Äl‚¨¿4YÚ¬ðé¯]>>Uó¾]åT… ÏvÀqëu’ž í§fTºE¬ ØÈ­·¢%ø™òGqŒ„aàÛ祔<£ôõòkÂs„ÿc€rEŸq|Z¶¢À'Áœ’D€ãm¶mKïs„ˆY9ô ü‰mÚÂØvÐ’&ó€N“ÒQÓ¦ž9¶`)§J ºï—X™fV%(2ó(¾1q–ߦXô€ÂU Ôp;á¢TÔF7ãŽ_OÇ.|ân¾ÒêHSq½VåAÕ!k.*D¯—„¹^Ú!#(ÊJ¶-4ü~ä™hIê®\M–Ò*Òx¨J¸ €X_gì²ÓXÙÑ£×<•lcïÖ`ôå1jä.!ô)Ò-oÀ`ºL uJ”m‡–ß"Vï-ɤŽÃyb®:õµ—>Väöq'ŒÒ\uÛýèºÕó)Ru>ÿšþ y? |.K#åãúcGðs¾sœ”2C7]&éÄ´¯¬fò!¨¢kCüˆžGÉáuÎßÙ ˆÈH!Ìæ…ªá¸+ÄÞºTŒ„¬îÈòNùuŸ_ñ%+*ÄÔÖÞx}2!”Ï"„å²ðÙœ7X÷ñ‡wËcÍ/R¶ÛÆeɱ°À\LyÙv“h„ý¾§|&2–è_HJŸƒe1œA" îT®´qð²¦]~†Ÿµs?è¹PÁ xtƒÜ$"×Û7”"¾~°Ù[;튡[xMP +X7ØwÃÿŠœAb{Y,“ ž÷À­K ÐÎüãúLc3[«Õ T©­“²Ênýs 2в¡+{ÜSKeÒ[zÆ®–”eE ¾è¦ÒØ–'çÚ‹ÜÚU²æÁµo%¬U«{¢Žï×P^¤ÆüEÞVþxQý%³Ñ´«r-õ#æîM)F–½ÑÓþÂÖ´AÆ[€ZX{)F.Üê@2†¡¥.¿ÆûƒDjøÕd슔ÆæN:šñS¤3¸â“›ÅI˜`ù§È"(„…ÉŽ/îÍí;#)¹žAWÕ¶mu³H 4“Àm½Rl‰ë°ßÜÃÃ¥âo:¿C“ªûÎçøª}{ë®b +bKòSŠþäD “£‹8¯¡¯ºèዷθÏV‹÷{óËßéˆ)öŽÁk\ù¾¹Ün&Y7CrMYÞÒ»˜P•±ž4Oáú¦PL:v ­=¯ˆ¦óï|ÇcY5ƒkaF¶+ Pܧ5îÖ¥ l¢&k¦°H"yÖ¤ù{žRSQ§\\'éÀeUÖ)É$ùŠ#ŸybóÄ‘‚‘6æŠhf ¹•›®aLn8g¦Q‰˜Œ.6ñŒ°¹¯¿¶¬tB’æe!»£hù¿‘Ñß@à%Îâë·Q=Ô4F¨dâQWO¡øVsµžE:ÜpÇs.^ºéuÁGá!üÀA÷AøÌ&sÚ.Aîã]vwŸúŸA/†‡©øˆ€ÌŽsÇêé&™üb§²YuÁzxtˆ®ºÛ]MðÏ¿,Ž ÖÖ1=þüÁ¤î/»â@—4Õ¿Eè‹ ÄdŠX}†RüˆÓ¿~^îrV½“4ÖΤ|ðÁýÿz …óÐP ³â½œ(rï~K®A”F{Es¯>Ñm@”šíˆŸ/rW+n×èßqB’ä%ç ¶Ex?ZóE¦Äß‹p·ÚÊù‹Ê_ÓÕÕ|Ÿãü@7«‡Ih´å©H¸rXxnt|t¥0;SO;ºá–à ÄŒ†ñw¶Ë*ˆýÿÝi%ô¢hÄ¥§ƒ@îu‚–‡C³±ÿàr¹ÙygM<\Ív§3+8Jhºü翼œŸKünJMC +ˆ·fõ-XñÌŸ½,°` !súhœ’ÔŒÆCÚÎ+cWÏ6§*j–_.Úse‚`TÏ„ä…àNJ÷…O'tà V +D¢|ÜIöâ쫲 ö`’9ËÆZ(Ž°¶? `Œ+¹Ñ-ˆJ!-9RsÙzý÷sòmé£!ùcŒN²AP«ïÛ˜–œ—ƒá {½ð ˆgËô¡»œEôùwÀ¦»R=Ê îÐ +mÜs“ò›M“›~äÞ òaë+ª–·ucvÑ(§½á«èEÐ6Á™ƒÅkÚ|h5ÙÙ…ŸV®¥6Ž™‹ð“°>ûÛ[x¸½e×/ØQ)ÈÐ8ËÁ"o²>Z%³£,¸VrpÖOe®G Ê`#‡4)R{éGEx<NÀ¿¨R—85˜‘C7Å£+`§˜ÒŸÏlÜGx5ØiÅSæ@¢<•N„{c9ú›â|×ß7©“±Í—ëǺëúÜTÂ` ÍÑ$VŽ=ÿþ€¿ø1&V}ĆšÙÐIb½up=. "¤(¢Œ}rOžižVC^Ã{U­'¹Æ:tÀ¸¦½¯kŸœ Ë­ž©¸$g‚Ëú©ø–ÞzXǵýHßË»,WµÎº¬ÌÏ®× Ò&¯œÙÃSrà¼w_Rg÷LéOvàä«oæ'hrêË|ø©x n:']î‚küv¯Ð µ«æµÞ‚ÿ¥ô±ílgcWòèð-¸ÍBYaW~FSm½hjA[ŒC¤9 –·{÷tF-m'gÀe›žþO’9ž"Y‘‡'ha\=í1¾_¢°±f t¸ïó¶õŒ7@8 ï/j£–úÞ¨18ký–§lÿVV„ež7Ko©ª8 áï¿9.°‘&EÒ•³¯bÄÚ<Û͞Ю…p‡•϶Š­q&Éùé'Í•AîÈàÅ,w L†~¼ïÊÄG©«ò‡áÖ:HëÁ]‰ï½ºF¶çý EëÉÌ×/ؽàó¹g6õ?ÃiR5®Y ¢ž`vú¶òкTõ]¥ì¨Î`™ÚÓB½êÅ>•ç«ž†â?dMl ¬‡8Å#}v†LÄûä|)ïìËÓÄøåßdñ› ê+öwlXxgŸÅ­¤wÉþ¼ÌCšvÉ!KUümý õú7Yµ¡)ö¸vQŸïhPHrô’BeБç¥:ߵ뫤äXèå[5HxÛ§ª9_Ma š€y¦0VI:G~±õ7 ÑÒ¬‡sö#åº ò>Éò¶â~òù™Í¾þäxôq¶ŒsPĶ©qÂòy¡ +ÖJ¸ý.Us¤Ù +Éõd¥‚ùÎY<Ø_j_Àw#25RêéãÞoEù¼Èj˜u9IW  î;_žlÿœúÚîHt»¿V æµúqúÕÀzîni”ACQ ý¥¸9 Ây\Vj¯ç‹óåÇÄÈ;üO6OÉA­jVÈé1<#<ÒŒ¾éªd™•X1ºEH§þ%½Þi”œÀ2G#èŠ;@üPu.†Ëºm‰*MrŒ +4OûôþœíñF[‹¯Ö€ûEŽjGUqû ËF^Amz9½kÜhÍ×–B(­¯Ö=ö2¿Û°-‚¨ +ì.Ibâ»PàI§ŒƒëÀR¿9E˜µ”´¿‰ÌªaÎ0Kx5QHõ ‚\ÜZ£ß¿ž”µ/Å&^fúY­ïMMþYŽ¯DÂr“«©Z6ùó5Œñ¥à~˜Gµ¤¡ã{vá×ÝpÔ×?¼J½H¨).~¦¡û8ƒ×M½Á-’“šoÞèêóÔæª_xPØ^üÊ™Îù_D«bó%û`ä`ÐÅ¢—PtZ®”bæ;Ë€ëp‰•!ÑY•+†ü|¶+®záÙJÐõýËh&OÃú¶¡‘ŠÞ&âÒic¼½¶ÂÝwŠdà + F‚¶maÿÝ‘®ðô|ƒ¾0ßëµøž-kÏÿõØgc°ËhJ%ZÙX¼!~Æå7Vò÷ÂIkˆ› —wêÀ+RÑ.Ë…Ùõ0~›ã¢Ù·›{CB‡¼Ãg{Ò¹^r<[ÜaI×»ÑÞÞ¡]È°ñèìñÃ"3âó§’%*&\K8ámËüÌmþi¼ú'V¨OÞçäiìhìœ$´£|d“~UÜz(-ì(æ” ³¯dÇIjAŸ“¨MM’L—ŠzÎ5l&Mrùaþ'#àJzµÂ,ò°Ì˜‰Õ ¯±'EF+þkÆ5ir2Å×aMÉa, h§ÿÅïWãXg%‚È[Ô‹]ŒjãzבNw^³q†6E×Uî«Xñ§¸°9w„wëØÑ1iÓ†h© mÂR"Ú¢òHmR€­ûÎ_£‘4Kïcóµ®ß¶% ­¦_ƒ›|` ¿¶Ï˜QnÍ™9ö9Ýð*l):jxÓ¸@xÄ™@möH¶]s!ó*ˆ—]ÊC¥ÜFí _$Í^dDµQB<5rÿ¥Þ«¢l Ë[&Ó.Éò8½lÁµv“§tÙLÖRn±¦/w•SÓz'òJ¿@y™AÿµtCQVOÔè+Csɑ‰ë׉›Ý¹b}ïwdvW]µmåD‘ám”`S°‘¹òŒU(<Ê…'WÁõâëîd%5qZ³kdl½”a¾2*úTn·Ý!ÁèfË\ÀE*b¤?°îô‹Õ÷ ®öðóȨœ“Š¤þ! qÓN—Ldy—Ê÷HjUÒ|ÚÚk3ï;úØDñ%a·òkŒ=nñ±&r,ÕP$(Æþ“¹E9 ¿<ØÅ]•ëN¯¨Ðr‹Ñ—ç¢7¼—ˆ—*4)&ñé¿l@A©£ Ó…Ý^ „š~#Oc5ÄÙÓ +¾uíKŽ¶è ŠVuqÚ¨"7ecàib‹Ý£×bO¹> endobj +9808 0 obj << +/Length1 1642 +/Length2 9609 +/Length3 0 +/Length 10456 +/Filter /FlateDecode +>> +stream +xÚ­veT\í’5Npn¡q Ü‚»[p 4Ð8MCp'¸»»$¸»Ü]Hpw CÞwîÜY÷ûæÏÌýѽÎS»jWÕ³ëÔ:´”ªXÄÌìM@ÒövPvV6€2ØÖÄÙIÝÞVÙž_‘E d–ƒm/7*-­„‚íí$P@d™88ìüüü¨´ {7Ø +`ÐT×f|û–ùŸ–?.· /‘N` ;Ý˃ ÈÆÞÁd}¡ø_~PKÀlH¨¨êÊ)Ëd”52 ;ä¥ Ug°)@l +²s1Ìí!›¿S{;3ðŸÖœX_¸Äœ@€“Èür59ü˜ ˆ-ØÉéåvX@€vЗ;€ÚÀv¦6Îf +x±›ÛÿUÄþÅÃö{!Sµw‚:™BÀPÀKVUIé¿ë„Z¡r;_`€½ù‹§™½©óŸ–þÂ^h^P(l瀂\¡r™€f`' ÛKî2ø¯2œÀvÿ¬€Y!f6 '§šî?·óÏ>ÿ­{ ƒƒÛ_ÑöyýW `¨ÈÆœ•ã%§)ô%·ØõÝŸy‘³3·°³ým7svøæ‚üuA f†ñ¥ ™½À dŽúNÙú’Àð¿S™õß'ò¿Aâ‹Àÿyÿoâþ«Fÿí%þ¿¾ÏÿJ-ílc£ ´}€¿÷ àeÑí/» ø³lœmö Øôÿ‰Ú‚mÜþ§ØõÖý]´¸½Ù¿bó‹ÙY¼¨ÃÂÎÍÊù·ì$ v™©‚¡¦–s ÍËÅýe×´3AlÀv ÿºÛ— 6¶Á4,Á¦Öv”àþÙ™ýk/šýUþ;UEmiÙ·ÿæýËYõe" n ÀfÒV²7û¯Ã*qq{W€ ÇK),œ\~~?—×ÿ'ë_<ìÿ<+¡°+@Ÿ•ðòÿß?O†ÿB#egjoög„>@vf/S÷_†?°©3ò"ö_‹à¥ñœÿšÈdŠº4ooú>Ð*%=ZE˜Ý?*©ßÓÅßäP\«Qç[aß铲Á_jüXÄZ7.ð»Ùmnßái[žig°‹À†¾3 tœKæEÍ؇³F×ÊûvÇÿQ1Fêv„Çɬâ:‚›ÖÎ樚ºQÑ#ùx+'äÕÉ £/µKž/͵¦·irM4~vÌëªüýºøÝ›kú¾¡þogˆÝÛ¤o³¢Qhß ½÷) nÆËZÓ߈÷.¼›+1_Ô‘}ÐÝŠk(á‹hªˆL–Î ªw|]y;¢LwH¸áR¸dóýG)iÃûáRS/èGcæBÑé/'hùs (µcö(½SÙåÃ"ÚArè§è)+|°Ÿ¿uÕh§’![­pOöWÿê7àËæ-¡Ýuëž5p˜¹×Ìø¶Ó-HŠaMCâªÝp;S¯ymÓëÇòŒv¾BFZ;^'Xüû=¨#[úЭ-ò®…- ¡aôõ®ü6š[[i‡VX×7ùï&ĺœ?ý̵Wô-;‹±b’7Áô•§ûßÆWLè·ë`; ¶„Ú,5þ6Ò—ç©AýEb¦ºB¢…EDgɶåW-ª"ª¨nzÉK9òo’±ä_ë&)™JœæA>¸Ù+5ô°õ;TEΘ;6…àÝHx‰ #ÅWÙ¯âˆÐ©‘{H¨®4œ«SPAýÕŠ§î)ÔížÌåùÅÇ0ß üÿqó#uÓ­0(_ô{“s´¼­^”‹:AËtE6¨YÜ‹aÁlW´ù3*²rÁ—Öþ#…´8$±Õ¶cÌiŸ?ÇõÍW_åë±ò’Ìóö‘®TžmïaëÒ^ JÝ á?"8÷ü¼“‹åTÔÛˆ¿}&è“S*i~+ œÜ×SÀ;ö(ÚZ<®}½Ÿ õ= ø⑶]ƒž í]¹’•šÐ6·+E°ïüñ#ÈHWqÌšËÀ^d¶Ýf"÷4»TaYÏY›FE™JWi0šµ1yû¦! ]Âø{v*”f×ZMÛ1:…5jÖá½²˜TvõrÚE9j£“‚M\(1‹ +Y!gÂe_f¼‡Se‘b\S&Üðj÷÷ÊQ´óukÍù´§—­°ln=ÒQÚ\ê¾­NYÆ#ƒÛå>*{Öë"pñ.Û6”%.áÍ‚,Ÿ—ôÕÏMd뉫L è?ƒÃ() ÕŽ³bÝpŸ´ ¶E“·M©Ãxœ˜–G0G,?q”ú øÖ™jÐʇøôˆ¬®K¿JËÛè/0K×£äo>ÊJmŸj¤ÚmŠ ÑgZ„ÅÚWæO˜cz¢¾z£Ìˆ”Fš;j©¸Y#£¾}/#¿ßwËð; +ËþE¬³æä8Ås%آϤŸŸ 8Euv´5Í|Ícºè°57Ysðƒã#ÿ`Ô ß,¹Îñ>;[Ðú“QÇIÀ|R×=}AƪWOx´6ÂA¥å …(íÁ&ʦÉû+¢â fóó[>>b‹#£ц|±~vkÈòW]ÿÌFü§…1ˆ¥K»Ð÷ø9‡lwÃn_ã‡ßy爔wzš¼D¤±g…±ýË™BzÛ5õ]û=wá¼Õ²¬¥,EëW4ÒôçHฉg©íûœÆ‹x½9Ö£”¯a3¦NïótAÐ7»÷Õ7GSª%Ó¶,~ˆì|!0îm<¸ž ‡7ž„vï! tÁwn IËÚž”RÔ1ªI4¨ aÓtG!#¡nxÔøºç·ÜkKÎ'–uFdηZ =àã¬Ïãgƒ3‹Š)q×t¸-2tϳ©û븻‰‚ˆB +ºC8gÒ’…iJœ1íÔOól õyù¤æèžØBâõ3‘&žÅÑ-&@"…ï+²„„±Ae¸e:÷.Ua~ Ûi=Wî5;NÝ’¾å ­œ_OW¥†[­°L +õ8uóQˆ€½G´é +z'I¯WH~Ÿ‰~ø7Nê*ìt£0~Œ<õ>Þõ.#ç'pÔD¾ïÎÓxáånàrFä‡äç/,`ÉØ¡ž td?>›/éA«ÒÕsSïç!p +z/úÌ"þ±<¡‰ Y9M …årˆÛO§ ®7$v#-<[›Âòã|–&_ Á:À¢ÆŸ$$l"SëIÝí_)Ÿ Yê‘ðÖ³»“µm–ƒ+„?Á© /]Ùxø–â݇㣟¨÷EÈD•ŸïD +VSç³³ì¾2¼*­‚Dx}0Ê6×»-,.;ŽV«_hóš¼ä=ë.I{ì$°6 +ajŒK Vü½Ð¥æÈ#õ Úgv±(£v†F&Š ³ÎM»öÞË|VõéJHcºle‚ž­Ö©[f-íêt¡ÜVô„Îbë2¾Âc¼lB9Ù”™Ôkz4öVN/åL¾aé­›ì·C,~dý˵ƒ¾â½¨:52œÂÆ"<×a''!«dljÉå²_²+R¸¾ôÖgR ˜\®!òüÀøV³ž4›Ô +ÝÏÄ8•Ðm±––˜ŠUgôžY¶ ™dA{ÄnE²BáÖë-¿sgL¬xÿbG¢˜b¯ù¯S«6-+®¶+ä_9ªãY6c³ÔÂsMëåõl‚“‹ü·.Û°^Ãú›Zÿà× +ä§U ìdÍÕÉ^KÔ;ñ9‚W¤Ÿh—UI ËèQ³] “;v ©å,ùÔŸ~U’1ÅK †PÞ¢ÒØñê3U†)´ZçÖKÛB©M/ÂÖÝxK²¶½+Óã¿Í¥œžÙwj©yâîwêm&¿+˜/êmt Ι–¿@î@<‰mqÈûè2â‘îG ÕJé>ÖFEK¯üÝ^ZDXH ×ooðØÓÏÅhSaîF.fÎäx@šøi{íyºaÞ´¢jzwzEج%k°f‰œ4rÂr%gŠGÄxôf-oº0÷ÄùázBlÒO[€wq„^Ò3ÃâÅi!bÄJû^á-O6 U¸J62fö› “ýºÙeæqU:bÞ}F™²ã¥4Ç]ÊÅ;s™ˆä«æÈë­Pì,b,âd"7Âêß$Oq’ÂÖÅd†â¼_q¥ª*Nã<¥£§Ô»&&ÍY؃ƒ»_M€©†¬æ׆€Ë0Q{þ'á1#¾GËA%sÌ>¬píeùJ›Ž !];\Ö.§EÒÁ埰Ö'S a‚¾á"ݱ¿ö>.Ô1íEA{ô·H­—®ÓðÙ¿°·X*ï7†%Ìw>¡áÛ÷Å]·{Ø9¾ÝuöA—ã¦*¨1þ¦Çþ•˜’Á îìY$4GpìÔ$7쪩’ ÛüeÝHì³j9 Ø½FЇàª5c‚Í,”ã3ˤ“©üöÕ„¹üvâG\׈–Òæ0C ݟºþyö$mX®2å*D +!&xðxç ìQ”h$=€ÏzÌ‘ó¾÷UtÖJ®{²‘A¼ˆ’›Íhk¨º«Ó¾>®‘‰:oYšÏ½ºœ/£¹^³@í¢v.=®ßÓ:#sÁp½Ô¤"ùÉËŸÙ°:lØK;7·çÞˆñÁ§ÞœQvðè&8ÔxSÕÇC¬Y¿¤n‘µ“èLsâƒCñɵï'Ü7½{z`Ÿ/°»Iîx×÷´¦*'o‹”س wi>¯ 3¹¤[¼“ˆÅÈ+Ãà‚ÙÒïý%•6¸ÛI]d‚T42EîLÏýÏoÍ}k …BÒ3}; +M¬ÜYά J>b²r ²8II÷ÈôÄ*øe!¨éú”ª’Gñu¢°¦R'µ%¦>¥!X‡än¤päØ £ò CBÓM?†¬´9•  Ÿl=ê¿´í.J/ÿTÊUKò µ]?d#ÀE‹­÷Äa< ™7ÖªÉ>ƒŸ¯ã^Á,+{´å˜áŒo(šWîñapüÎ%ø¢8kUB‚ÍJ”ͺA=`aa«¤8Kw;‡b£× ÷ÉbF¶ƒèXÇjõ`P®u–ôеˆì +¨=üxB‘£ýy{úYNs° k•Žâ.ÄE¢¯2™íâ–±ÇS[³Ê‚┚ÿ®‘ªWòÕ¹(áðÎGU,ð—CäZ4yLÅ8±©‘mÇçfsú–X§šZš¾/æ>Zqµ(' èxŸMÆ#R2†¨™c“rïQ™R†êÐÜ› LoåÓ÷2Ú=Ä5ôf&Ú€J‰¾(_ÑE®O:q+‚g̾Ó( ÄÚƒY^ w¼ž‘ÁãOCªôÌ@w]ß„S¾'.Åé#˜Ÿü“%+&çuáÉK„åÌ¥©²s&ƒÁ†ô™åú’Õì‚×i•;Ñ«±xM{-𤈉þÕõøѹ(10Œ‰·úšµÓf}ʱe(þÓå­Ò¾8RƒªY¼¼±ðz‚2­ÌÁsÄ.þDdׄm›€M¤Ü)é;O*ß•ˆQ/§Íœwü²< T\¦¼‚Œ\¯(Ñ»öµ_Ì;)_6„çF¿ç^&xœÆ3°ד՛hXá ó{ó «Ws)>kÇGÞáÇdУŽ<æWþ÷ƒmŒ¬áí Ò›…8»º:ëuï:ˆº2"ª¼"Cñú#\£QœoA¿—•¹÷Ž‚xÂ{a&çÂ`ÞN™èÍ#¼ñÖ@‰ ±Ô§$_Wôz7­!•8µŸÈ‹sP¬EË{á)ä`ã»qJ‡Ò‚ÚŠÞÁÑìƒd±EL8 »Êÿõ'AÀu ¹VAÆÐÝFÁtíè8ê~˜f“Å2Ëd˜; +¡‘”¾.ê6ÔùyqófCŠ|³l( )øÕBÐkœ÷ÁíTT?œP+Ça"Ô–=~†Ã¶õ³£†¬],¹$yÇu6}ѶŸ£ýª•P§Þká¯D×B½©º©Žæˆ8$ï¤Nç%žñŒhÒAþ\ḎÒ#hÚ¤å3°nU¿"«}{Q¸r^ü¡`‰’@môtß=]+JбÂG@ß°öf„VC¼¡\uÉòÆíëʼnläK3¿¸â»ßWeV…ï¾0À~û â*ñÓ&)¤rGRáv4•¨¨ÀÒ‰¡®Ï늨ïÂhœ-|˜éy€ŽÒ_qYÌìË'ö«tcŸñø[ç–ú(ÎPœøý.MY ÚŒÀG³¯ø+ÒvHÓÔÖim¦ßGeØzÞ”3,€ÁT:;d_8³1a¯Ú…,Hï\ ^c|M`^u’ö¬sØÔKL6§ïŦ°5¡è…Ãλ"µæwô›úMõëî%\†Xeå|¶¦? CyÂÌsÒì +K%—am]ÒõÎ9ôó½EìR87ÊŒ¢º„³—DV3G×µ¡Ê¢íFÙ–ºpÓ¿ÒQŽ×ï<ðgĤÔ"*3†á?® +°ÒIíÜž–±±³‰¾áÒnG`ãxÓók…✧¸“´ªCT%ÀêÆÿà wÈ[åíwV&—²Þp«Ûúç:GØÁ‡ÏÜ¿5Û}ž™_ÓÚ õ×"Ãäk6t6³4Àø9«~J»OÎLU$1!SÝ|Uw‚*;Û,BÂ1^h$Ë…Yh2g+‰!×9alÿùI¶ŠË„ãiã£|ÛS˜'ž¹xܹ°¿1ÚÉÊÎ×S±NÑiÖñÛàá«C”šÔ+ÄMoÄÞ|çÁr[^§µðvBü/Ç—!tÊX±W2o˜Œ#ºÂÙ=ñO¶fdý‹`w¿¢·5ˆe•÷*ŒšçJf¼Í4Ϫ8çMs‘ ð¿[›‚ðkâuѲé3Cú$zn“ùŠ>JÝsqDâz‰|]ÞÒý0ÕݽÍf tQGG"ÉŽ.GPÞ&Ô”¢óN¦ö•ö¡Áôƒ²Ür=ë…iI^"wɃÐ?‹¹±¼HÎQVƒwRÄBœ£MŒö¹ZÍ !coÜ„Z­¶<““Kþ,ž̧wž~ø9à±eAXŠ|ãÔ¾ÉÐwaÞì_ý+ûÛsnÊ‡Ó ¸Ì'Œ©íÝ)7G¸néùÌ6&Á”[¯iK„7ÒeÝ» ,ÐÉ‹0V9Ó|­ªårOÈuPªÄÒœEi‡³²§›‚Ž’•&êçHtÂ- ýª§óJ¤ u쎼ËÈG»TZ=u±èVr{ÁUª…Š¦rÊ kÇoún«ŒC½ÛòòFˆOÿþ„ÎÌå“Êa¦Ý¬˜Ù¼ ÙPåJ`Ò±Y/¾Ü¼#ÚõlTé½OVANqˆSô¬þùPv½h"E”nõ^º¸ëž²ñB1é»·×`|(ÉÈ‚ÐÒÐDÆà”¯Q¬¦x½ƒë–=t’!AYòÑÊú0¬!5WwÉK·ÔJðaÙÌYµfJqÌÞîÐÚADfNÓx,¦3RÙ×åŒ|Äqˆ­QGŽG-KT2—'“מ,Ó{¶ QšŸÕ×Ë„Üã!:‡ê݆« zw†æ´è«ãÓ¯0f ¥%Dè¤ +jAüƉQ<õVçw³M£wŸ¹Äoa¸}¯w4¤Çr0ôzT5~¶u6/’¢&çƒÌ}è=ªZÈu¢\Þ6¤g–(«ŒÞ Ýñÿhg-r íìÒµ4¯ƒ+Âêo\)hZAx‚·Ô¯´àTtôs…U/λIbY§2 &sE_N Ç@²Ë*Ô“ÏÙ×ÕÒi¯dy1)Ì<ÐPî‹ñ ±ªE +4æøÉCâ=îv«lLJG°=3G„­ùÖˆ—Ø&?Œ”\§?®ã"tCp(‘Ÿò•Ò³öýê7?uÅsZ ç·[’©/xxxT%BÈ“µ¾Sb)aØÔÞ‡»ÔÂÔÒñ#~5ñ +ËÇK`¦抻 +›kH0«Á à_oˆ÷=9nÕô+úè˜}̘ªôB¼¯[Ö(Î(\ê“€òy“réùQ§z•œl3p"~Oƒ+©·üõ¾Ÿ¤J‹ú’rºsÇ•’µî~C/÷Q…A,+¢Ìöp¥¿–Ü¢~˜àkÐúÄÞ1KšJŸå#•È1ª¨Â×Yã8X–ä ›Ÿ¬óæ†ñÂ](3ˆÍ¿)^©«_ ~,Rt'T´ªQ¥„®v¬jÀM_B!º ¯º¢NÕ.eü—n›|=ôf±Óžm¾¡¤­|\§ÜÁ³@™\á˜^¹îãä{b&TƯ3V:ÄÚÃʱÔ{Ú ;K‰ZìØýȼejAUËãIÌ‘KØh91(}3 KRÁò¶‘B»8Tc#õðã××}Û¾o2‘+ÎM©?ùoÕTà /½5#ûL=Wm´Ñ<‰úª¦×ÐXË~÷AµxÝ#ãÂìC O½xÀ‘Å3|a¤oOä•kraÖ¾â·/µÀË¡ž E +¹¸“Í^~»Í0žeŠúü’–té‹ϯj‡jØY W¬§±‚\ïVŠÑüEÞÁ§Ïù-Yט7Òr9uÃPÍá^=ŸB>M„‡]tKÎmø®q‰è`Ã,.ÛO÷SF ÂÆê _ŒH8ô›¦(µ/µo1A±“Qì jLdÝf[ÅWuWAŠµKÃ%Zçh]ÙÕ;;7噑ôˆÈèhrTÈqΰÃeºš›S¬e`cì +wõw³¢“ä¯!¹•œtŸ>¸Í4ýLX­ïî‘\= µ°¹® µr¶«£¬P”à°n›qÒKÉ㟠w”9áÝ GV©SÖ𑱚ÿ„)ª÷S]¨k¤ÖXŠ°Î<^!i Ït +¯T_iº +»·ž>€™TK&¸Ýw­táv½×ÐÖZû¡O~îóS6X?ØS×R†£bÄ*ž²*~¤•…$Y²“"y!?„GB}ª!Ú!íÆIiƒJH,âŸ(ó°âKUýùቪ!š­”q÷Ìú ¤hâ49T…Ê"§êû£CDz¤•@Þ½XÂmmÍ/„þIê:4¤“[]ÑÄŽ[ôñÛîâ»O;(ÜüûsÙN°ËW%ßí‡ÂÎœùdbZ§«ÊÂÕ ÕT´ +}á{ü'Øâ؃ »üÊo'W¬¯ð* ‹kí¥¥,Î1RŸ½á+Í$¯ŸA‡ñrR[t›@ˆÛó§»}ŒË/ïYz 8Ù°:7JQ( +±-Wî]BsM ´&³[_h'Õ%’7Z°¸œãìÈ÷k‘ª€Ÿ%ö%ÀŸï=g«Uî2c~׉w⤾¨Í`̱§.>¾óMþLˆ½ÀY¯†s€MV†hd2ÅæKÁµiÓ5èR5 ÙoiÜwŽHGŒ(HU±šyŠÏ;˜áë‰XmÍo®gÌí[9÷#gÒÝÂt«ÈÔ¯ÊÄñùÍRPßað¬íe­°WRpì÷£<[À5Øgü0ŸHÅ‘f,âmî£$êóEá,x“<@<¦çì’¿ +õʲ#™¸mʼn¼Ï˜—§Áõa)êÁ×”«ˆ¸JíWûá~‰Á¼Ø/ªÊ77Í_‘&$ù\ dnÊ¿Ý‘ýœ¬¯µb eãÓ¡ ÔbXÉ ð?•¯ÑÈ ˜ÖèÌÞ} 7¸¬¡x³yÓã•kXni»9 ¿9 åv¤‚9/&õã£E0Ey*LXv +NéHÐúð2Ü°Ö1:œo6†™±r_&7¹ ”Nª,ËÓë ‹=t‚¬0|—ÔÚS »Hôœ~ Ë竪v¬#ÊÇP½­ãàÝ}â†2˶ß±Ù¬”¸rÿñ¾“ÿ}…ò¼îäú7«´æ€<±û½€Œk¤¥­önjúµœ’”®s_iöR4ª:„ÆÎ…ò°"¹1ö¶w¤üK"e»n.’ +VŒú‚Bö¿‚”´kZU›UçúêEµØj¨*2£’sçУTw¼•F†Ó ꯈ$õÌÇ7˸D1/˜~¸ÅµVyfœlËg†Ø'õFÙí÷اjLÚb@¼[‰Ç~â¤+‡ ½OÏ~´ù†¯6ÐcWO+Ûü…y°`ˆDç(H@týùÈ!¨/¿@ê]®ˆàöYu'Ào<š»·úzœn«Æœ ëŒSèûÁH²G —Ž3^Kùpión܆ì¿q`Õ +ÿ†• ûäÆõ~ju1ÒlçPí+›BÞ+ó¶ü†!:0éÇZÊug4c"îAôߌŽ+YW÷îYDaŽ(Ô¢‰ÄâûísG²Åõë[óòI‰˜â®dæT‹×^é>Ô[”T´ò&ï¢ïP«øáÉ“:¢j;0í}PÑ°ó{~÷0ž'<Þt~k2]ª=þ†Ü<ãSÕÙ#FŒY¸àÞMܶ,Ôy줕᷸ä>žOAÙ¾ªÝ!$ê“$u0bÌW—ç£ôaçøi°å‰®©wÓê·»QЀËþmç"øämE%_Þdü'åŒÆڛà +›ÍºkªšaÑêË7þ ¦¤µdL•3†¯X\ŒV5vIÝl§BcrÒä˜+—’ Ž‰§ð[¹vãµ6”K‚V‘LY’A$Ÿ½¿ ¶Q'[ê_¥µ^®-†½# ¿.Sm³G ¦Ý툣椷mo9²·Q¦¡ªG=Æd 3£øùhH°¬x¦GôœyÊgºÆ¸±~*dÔEgÜh,EëßúüÕ„³§+«)@žÕ@S&2íqç!?EÆF¥‡Þ¦ADð–l­_EÁ-I¦ÏáДÀ¯+í¢ÜiÌâºV R› +Qƒþ^þàyFñá¡Gh,û²ú ÈìŽë›Š¼$fØERÈÁ^u§}Îå »å#³Á…vÄ!%u¶‘$™: ¾¡™ç2ë›6{9¹K|Ò#Džúh7å©ð­ÆkÜfQ>=-Þjˆ’†a¾_2°£Þ³ðšeNtýBt«á º·æ-·ì™u‚åoÉB©¬ŠêäѾ¸¯˜d¯K‚æFsóÀsÏÿm¼c>ö†ˆ7ŽgYL0ÆÝ©è6º/gÕ–©ÛÊ”‚Õ•%*%r¿-EátŽ¥èðÖ1ìVpwµ‚姙W…ö‹•éÝÇÖ Ú`…~QDùŽoÙúUR¿Ì·tqØHyc;ªxŒp 9¬]öp{‘ëy”Ðô[âÒ úÖß*R½µCÖäÇóÊ 1~EÓ°ig9`aæܗ̯ݬ™¤¡:h,Súá"òÚ8D¨É·`‚ÝÀ³…»Ç›~(Œ½{|†¾½%^ €{GÉeïêEmÓ#åñž]/C‘awjoºÉG·¹~Å,ú…~jJh­¿‘¯sæ½£ê,Dî÷žæ‡LÿOñ#˜Î-ãpážfÍaƆúmŠ÷1œNakÆÆ’¸óAÝQ]Rëë*)¾[²85ÚwߦØŒ»ÜË?Î4~·!yVdþÒ‰hà›ÌÿÞ‚‘à…Je÷QýÇØÂm¾l÷•ìÄ·£«}rÜô<@n£BO?Œ¹ôÉ«ù©ê/sHóåG1 +„©åh+m‡¨VØÄ,Ï<,Åð·°±;¡5¸Ü €ì ‹PÑ^Â~k¿·{]yÞ;ÄŽw’‘˜r—ŒO0œ>¯ ¬™ Õœï|â à +}‰ d Î»@#š[Xh¾òbšþ‘2¯|·‰)½Z¿§LˆnHfKOjçÌË÷¦ÉFÚ #&]ÏG2KJ­v{m¼ iŠY Êá+%“¤­/9™ð „4u¡úX/  ævÄ–jª'3µ‡=²M¿;ùSþE4Ffq5¼ŠHCŒq%=›p.Ü;Œæ««gÙ*#áûo3[áðì¯Ó£Ô•»b†÷­›ûüî#ƒ¯—øEk¾éÍv³šd z+ÅòEØñÂÝkÖõ7)§]ì¬z·TáÕêZ½˜bÖÞÄšÜëîÌ_éI(f´Ip­Næ²J¤&T[ºœ&#uú¹¿æ`xÔ·ºØ´Lt„d›Û\1G„MeJo^UŽið‘ÂÔè;FËNE[ŠØˆsšJ¬q‘·xÖ†D”h@ûöŒ¥)"ƒ¥`-¤<æÆ„´Ø¢VY@÷'gûl*¶eq-ý'ý® ¿OWËqsäƒøГ>³_§^=ë¢Û𠊮ԟ,èÁ×<±íŽ û<î¹,âIà´gì [àµi?0Ý[ÉI9M§bj•óC$Ö¤ó»†û˜"G™E'±œX†.wQW=°‹–9oëäh3'stùÝ<àÝög×e9ÝŠ.²zØá<ôn9‘½÷ƒØö°P»õk“¥´„õ¡Ù8Ü´µ‚ŒW£ÜƒžQÕWõY¦M¹˜jvh]X–š]wA i]2‰¯°ŽÊuÞ«ßGµ?| xÿ+=èGY3!ã¤jçì8}#ëmÙêDÕùû€ç6tžwÝ!2ÉèHî 6«m C:(=g%ÍmÉ@úR7Xÿ$]x|e?²ÚÝû±®|6í …$ëռϰ¢ Ç],%ïqRœz"ÙÖGu¢ÂY䘟 ƒéò ®\{½3Æ5ƒ_M—Y¹Ö})†zMFPÃü~+Òð[+„’ô74ðp˜“²®Læ·?¼&ôasÅÃö±hW}EÛ$„µ™ (<¦¶3¨iý)سMÏ5#!ü}q€°™”§”t¯§_äiPšœµcx‘E6Ú}¢[ì¦OuvÏ,»²ÕáúûáøèÎpãØ#wE¿|1(f¥dH´- ’å-"^4C?€ÎŒL8nìrhUr¨D™Ã-Îøë;â’ùèÔo<õ#j5Ç{˜¸\†#2Ši8ø¡ž’’-FùœýÜ#¸Ø ËMÙ¤ô„þ>zì}`HÍ{$Ê;X?|½ŠÞ±öeÅ5õíªÍ«vÈ÷rhAÕK¥Ä4o±Ô3™Ñ[¼¨»\¤HÎÑd/E MóªFšFC¨S'vŒAm€Ø6Íaÿ)È8§p¡‚Z™Þ0kù,¨ÄСÄÚ:M½aN"ŸÄi:£o>q' ¯¢#‡Ë˜¢ÑD(²{ýñVÜOüê'?Ëk*½¯“­‘v‰YÕq +³ÄÑ?ÓB] =ÊæmB÷”¿~gÞä”ï•÷+úôFÝE8±%àbÞžð¦“ÄHy,âüDÏxä_–ì`jE}^zë2Ö4a½™èDzMœ³¸ÀÃ)Ÿš¥3+c¹ãÇ„Ý:!K!–_7è¦2X³SÞR ó*ª} +endstream +endobj +9809 0 obj << +/Type /FontDescriptor +/FontName /OPLWFH+NimbusRomNo9L-MediItal +/Flags 4 +/FontBBox [-200 -324 996 964] +/Ascent 688 +/CapHeight 688 +/Descent -209 +/ItalicAngle -15 +/StemV 120 +/XHeight 462 +/CharSet (/a/b/c/d/e/f/fl/g/h/hyphen/i/j/k/l/m/n/o/one/p/period/r/s/t/two/u/underscore/v/w/x/y/z) +/FontFile 9808 0 R +>> endobj +9810 0 obj << +/Length1 1630 +/Length2 21500 +/Length3 0 +/Length 22337 +/Filter /FlateDecode +>> +stream +xÚ¬¶ct¥]·&ÛNE;¶mÛ¶³cUlÛÛ¶Y±ÍJŶ¾zÞ·OŸçëþÓ}~ì1î5qM\sͽȉ•Té…ÍL€ö®ôÌ L<+;7;n9z …௜Žœ\Ôhìjå`/fì +ähÍb@S €™››Ž êàèåleaé + RWѤ¦¥¥ûOÉ?&¯ÿÐüõt±²°PüýpÚ:8Úí]ÿBü_;ªWK ÀÜÊUTÒ–VPI*¨$ö@gc[€’›‰­•)@ÎÊh落;8lÿ}˜:Ø›YýSš Ã_,a€1ÀÅhjõ× èi +tüGEp:ÛY¹¸üýX¹,œí]ÿöÀÕ`eojëföOåæÿJÈÑÙᯅÝ_Ý_0%WSg+GWÀߨJbÿÎÓÕÒØõŸØ.VÕó¿–f¦nÿ”ô/Ý_˜¿ZWc+{€+ÐÓõŸX&@€™•‹£­±×ßØÁ­þ•†›‹•½Åf@pZ;›Ù]\þÂüÅþ§;ÿY'à©ÞØÑÑÖë_Þÿ²úŸ9X¹ºmÍà˜YþÆ4uýÛÂÊŽñŸY‘¶7w03ý[nææø:w ó¿DõÏÌPÿMÂØÌÁÞÖ `4‡cTppý@õÇ2ÃÉÿ ÿ·üßBïÿ¹ÿ•£ÿåÿ¿Þçÿ +-áfk«`l÷wþ½c—Œ±=àïžÈþY4¶ÆÎÿ?c;+[¯ÿ“×µÖþ;Ýÿ˜´«ñ߶Û[ü¥†‰éßB+ +O ™’•«©%ÀÜØöoÏþ%W·7:ÛZÙÿrû¯¶è™™˜þ‹NÍÒÊÔÆþØÿ­Ú›ý× +þÒõ¯ü¥4Tµ”Åhÿ7 ö_†JÁUÍËñonÿ£y³ÿyøFDÄÁàCÏÌÁ gábþ{ÿþ&ÄÍÂæû¿ ù/ æÿ<Ë»:[ytÿÖÍÄü¯êÿÇï?OúÿFÜÞÔÁìŸÑQu5¶7û;mÿSðÚÔÍÙù/ÉÿZ«þó¿æôšÂ­-;˜ò[§ge¸ÖaçL‰éô1ƒ„8–6ªý ¨qèõOßå®4z¯ ahšæùl÷Z:uü8”¡9ëò¥ìM^àû’R÷ÿDÝ¢èä¤=úÁhPŠ˜q¦ísµ(·¡ÃÁ¤q´7¥¬bPòE0ÝÉê sõD@êþ3ƒìÑÉÏ4­!³ ¥ ­®ðôŒ"éÏÓ#åÐøèÈpï dÿ!mn,9¯1¶_Ê)q²«—‘ó}£é'ä«;§KÕRv«f j’º‡7ÞÛ²ÙCì.:sÆ+¡Å—0è“вIœ¬ÇeX(|,KQ¢ф茚ŒA}ײôÙ*ÇúyƒOºMÖ*w¬ü令eÉtÒ"öíOT *!©¡Å,Ð3) &.” em(þN¶úo‚äâHQBuãÉ{BÅ1®¾„0ü= Õjéƒõ9gJô#üVàô1Ì¿="ïø˜„„´­Ci΢¡_UÊÙb÷ù¾¥n5a‰Tü²®šYƒ„LoŽíF­õ½< g}Å C•Ú²k"≖Î#¿û~—bÐÚ«ÛÝ“.ÎþqAÐhæx I¶dÆ«qD[ªç¤LV V!ß-EçìiѤv¸©‰N7êÞn%^v‡HjVo$Ç~2/AàñŠ kŸÂ]P½ u1Ô3Òi!v¸MfôÁÑ‚ÉöD¦F ¶ÀÛ©…£kÞð\)ng²ºç/÷þkZô LÃ,¹Òc3¿Ý1Š‚Üñö»»{ÖR|~^5&éA7áÒG°[_³O +(¶ö\±žcc†ãæŒ;TöFj¼e‘‰Í˜i f*(ºÚ/nåf¼rÏ$ž`‹(¿I9aÉm’±å ¸#ªJ¤^›Z8øJ ›lÔ¯Ïz\ýInžýÛ‹mq8¯Æ»7b€šìïcîÄÃÕ1ÓŸ×k¦¸Nfxy t3›2)•\þÔGªÜ/$ iÐ0Bgàì<ÛB8ó7^Ô͹eŽŽ#)ßõ3ãhAýtµ$µ°0‘®›+†ÖiO#do"dŒÁ»£,‡úY¶êÛ=ŽF.Á aEäÆ®WîøTÄ)÷˜CØN§Ôh†i:ÒoŽ9P>fL£ï¬˜æ•ŠªÏº„tžŠÄ} ,ŒŽ&A£#p¹~DËIáTDpOîsm!%éÆ[-ìuTÕ©Î +JË…NŒÍò@†ʨî$¤ +U7¬’š<´ Œo)$¤É´óéhć 營åkQɱ7•öüÇ`s|£zâÊIÄnÕò“´hÌÉó‹â‡ú–w7¤¡‚­GbØ4L‰~uv:2/ݲúU*:ã©ù?‚å†9ð¶)Ï­|Ýù9_zg"Dœ®î’}ã:I–p(€HUÖÇcŒü™Ö‡«¤šÏ*¡£Ýe§jˆ.ƒ1ü‘•— ¯À*´yô‡Þ0­¿ À¥/„¡óbxÖoT'jUŠä5ç¡#â´AB8õJnšýQ]Ù`÷€ôew΋ … ÎÎQ[P©-ôÄ•){°~uàåyŽÛLÇÞ½™ôGãv…`‘“ádcÕ›ÊÌs¶ñ1,¥ñQ!} +Ù,µÚ©ã̼—.FoÃ` æ²™#yŒA°nï_}VÖ²K„[·u +™ÿé®xôté”=S¥–ãA& +ýrƒ›U™StR2qb¸ŒŒa‹ú¬bßæÊz^ À}ð6²åÔŠS4xÓ]}(Æ%Yh“P*âCn¦Ô±ñänìãçJó6¯gÇcÒNp… ëÝf߈f0©Zãq¨·ÂháøzijùF3÷ækƒìx“Mšç£’îßE=Ià ¸êa°BFî¾ ¬]æ3Åa ƒ,°ö«èšÙì;añp.Ä=íá7íбa¬;¶4­ÝÑËŠx°•›cŠ‰†ßá/ ää>vQ`U½N˜µ¸ÍH÷:~" k¾ÉNéÊ…}éMÞ¸E`Û´ +,RÞ¹ÐÅC·*Š··\+Œ„Õ=0 .ß `st^ü8Ù4(½±  +$ÖdPîúÙ¯Î) +w‘Ô)9èògìên*šÉ.þ$ÄÙä?v7߃D3ÛãpŠÂ&ˆ²-B³ù­£d%?ûÍæÐeEõQGï:í1-0÷{}ªŸ%`¥ßöê<·*l(‡X×^˜›ðÏ—Õ?Ü¥t*oBù£¶îÃN™óÖ€Ê[™ŸÏX“¾ôOÙ‘rRa÷ñž>ͺ£ÁžÛaÄ#'Êçø¹(¯Þ|]”Û°«x ND•åsÀSÍøs?@&fT}qCsYðíÜ]®8ÝØ­Æ{Û¿’§/Õm¦²E]OmèfâÜNëƒòù5>¿;Wƒý0AU¿/WkéˆMú%ƒ Å{N#æIZTúýœ¡JübäÞñ'"6] +Œé.t%;ÁX>øaaÐ5çŽsÕ4aÜX¤Bœ˜ì»E\(–îSZ3›AM9ž¥pÈMÀºù’Æ<6_£ž.ìg8âv ë/IÍMÞ:áøàh_„¥‹®H-¤Ênš(LýyKN ø×èÓÓGrF“Ë5®8?÷,ª¶j–W¸€åoŠÄ¶…ÚÍ?B„¶ù×IË’8Ð%(ƒ¿=ÍN•€fGw]q¦f?iHy0ßÛ'ý;#kÔôcàŸ‡‹íK”~9©–6/ŠÅ†y(KýöÓ« íÅMÒ-ø¼5S“€}Ó­>ý,†â öa +ct²Î u¡ÏU³Z»‰Ýâ½]laûH˜Q@Ûžø5Z1µø§Fá¢_Î"ì—ª°0¹Þ-±  ìIRláó™Ù¨àÇ, d+ýDd + rÊ|¡ŸïÕR¯Œ¨Ñ´Ñ1Ú©—5RK¾;LYé,Ó>ðñç»ûÃsÇy&f*ϸª¥Úó@0|æÌe}ÖmŒ¢Ã-]ÍQ¼ôfA> e×ò4qZ«¥‹ÍBÛ Q³w¯É1bCÓ‘XlݧvR¡Bž·œÞäÐÆ qί( œõÒÀŸÀ28¢ÂAjúzÖ ¢ÿ<¯WK„l>ÞSƬ<Ž7@ćjgÔ×Ñ x_(÷^6é·R +Q(¯™>~ëTJÃÑ’€‰ZLðaÀðœýnj dWØì:òoNUƒ”õíl$Ú7£Áeïõ6ඛbÈÚü³WC}5ùgÎÑ*|~ôØ€Ì9Ošãf½Ž•`¢­Å;ëö=N`’øqOöF/¡žýª¤&Ù_«qhØ©î‰JÇŠìfáúÒÿ£-$"`fUjËM”¦]a‰ßUÇæy£{…JÆEV³«¯tÐáÝçTÿ¦9ÉA*%˧¼ØèsK…<бŸ¦~‰‘êq#Î,Ál(È=êk"K³|^žÓ³¿éÅÎø/'v»‰äTÆ;>ª-ðŒÌ.H‡ü¹øÁV)ž €x1X:È¥æ"í¯XùS{ãyKw¢dÏþEñôZBGàà ØÄë½Æ†Lû.±q³Øð†‘%EЮ 1~iJ|½<ÓùgÈôSûÑ£jµàŠµãp£iüÑ +i7˜>¹;Yã¥N¨¢=Vqe”u6Å$QhW-O ðAEÆIN1Ù¬A‰æH•?cžäE³xÂàÀä*üEp½M@D„°gÉj œ_<EŸê4²‚ P|âÑDü{%fؘ¾ï¸)„äÊA‰Fª_­/_CÉqˆqî>&±AÎø×Î`&¥S˜É[g±<Ô¹*ƒ¿3|ÖKä½rAs3 +–ŠuùfÌ4ýN +Ÿý¸OØ‘tÈ&©Éœ‰UÔˆÇ{S[wº-5\7yÜöØlh³Ê4êxRÑ>‚÷Òpê†þÒ•ÓÛïñù¾îK¬˜nÀd½¼ |`Ö7k¼nЈO[K0·Ñy«öÐÞcTtÍ|wí8jÜa×O÷ÇÛxŒ<Æ–¹i‡ÑrK¤äF@w®„¡!`‚à:E3á2€ ç=@$܈ÎnîEmP&¸žÈ|Ë·œ¬Wƒu8"!Wý3³ã<¡‚K+½R”ÖvÆv{ ¹ÑXûTêl陉¦c[k{1ê¿.®•S7YÉ ¥ßèáò”ý¾ n•ÃÝk[HB*Ù’¤Ð +±û:4÷¼ÓФB®–8L‹f!à±ÎÜúÂÞ=¿ZÆ´?Ž±EKb± +x£ú‘‹Ó!yaÌÛщ8¹¯€Ý”,܇áÝìÒ%ôKŸÕ¥ÐHßáÌ"ôY’¸Á¨¦Žµ½Bz7_\pì>Þã÷AŒsWö†R„ ~]­ÉÐñÊZØ1YÖ&Ü=ôx^S¹,g×½Åä¥ûHP:œá6àLµcˆe‰½%ŽüæÇ9ÒI»%¥6}=MžÆš¸–´ƒ™’O ï;˜Ô0AŒU‘Áü°+ !Ÿ[n +üv,´Ï(¤Ø-ö±ÒÞd˜t³Ay҂¹µ8;¡=ß÷¥ ¨®#&°8ÀºÞíSVE›/ÆUO¥¯XKýßZ±Æ +|M«ð(PVhúˆ.æâÀÐM”]o4»å¥ gO\m-$œ²L«Gi‡7ãxíƒM[]üš?Žœ‡ÙœÆ½>¯×-ìÁ_ðk¤wbtÆŽ¤Ä˜M’Ø8”‘Q*#]yhw\M"Ý­X&oY™ôÝ8Ãë½ùd•†1žôDÙ¹uËä­myÊxÈ,Þ»4¥3‰ûs õ÷ÁÅÚ‡/´OÒ ÷ßé•ÄŒ²i9¿Q*ïCUocdSûœ¶®5ó=OnBø°¹ÏtYÞÝ*ÿ"•¢PTñèZ´y­Ä#£äâû­nÇ ±¾­Ïô¦ìòsèP^½¢í5”]¦­Zr®®ò˜Þ©WßDç•:{q +ŸRæ{s< ü>½Qn½-R×t•J+GošÍ@”»yn–…fÄ8…^¦Nñóûïd=ò¾ *ÓšÃñÈIôöïñ› £ñe´ÓA¢º ,³¶.2VÑ‚ Äý캱™åxÒÔ9œ/ÚŠv!ïô—[“Òâßgvn7±«Ã]•Y½8eçTÆ]k¯Œ ÛGjŸð´­ B´ü!2…mv%—‰nŒbX¿e¢v4·wrªÀ|›gà©üζ¬À¢õ¼š‰¤/#ßÜ +cZ{#f•&{}4ûT\âά~üˆë +kðínÖ{9ƒ¹ ?vÞZMªÖKN„6ù^t(fö¨®aˆ¶Gµ=õ—ò,cAFv[l‰Ä¨Y7 ¼ð +.w®j£ÛÉå“íÛњˌé‰5–T0&cöƒHŠYv+?eíÙJð;P †"ß/Ü•ßï ³ˆ›PRþ ÊÒ³D9jyz³g‚ëéõO?mwäs[2²Ë6¹Ù&± /vé¥,[YƒGh¼©å¸ºƒ`xìÀRëå;6J7uçÛ]|™G];Y‚[S¼…yh·áºW`Ÿ©{ìB²µ»Ð-l2RCÛTí—]uåjŽ‘Ø‹5~–=¦Ã¹» šºQ–R2T)+ ‰ò‘OíIÓˆâ‡÷¬C ¸ +ÛÐ.·ýŠÓ·ô¾IÚܧ²LŽÊДÇÛ·L‡4iÌ6^÷”ÇvŽ@‘÷F ËZ&3õ©·P+î)Ú‡5tÝ쯄|ÎB0U³2#¾„wñ‚ÅáV3-ž ׶ԟþ/þÒ%€~ Då\„dkwËâXŽb^˼ب®ˆìFôÄàr|6Ó?ñŪ˜4Éùùë瑹»‚1–]ì(ÉÓì»Âø$¢2÷\‚}c‰-••ñ"„ûÓ~huøi9¬ÍxÓÊ;é’g]‡>t´Eâ ¬º%'ÈTÖT©ŸKÕfãIV´Ë·ìÐòEð!¬VmÕ»õ±1Ç!¼F¸Å‰ÐUËðbð²˜NvU4¥‹§gÁ'î¢â'»‹:ºÉˆ‡Ø.+5¬º·}äŠ1ÇætâUHQp)ª`ýNW¤3#j2%Ä­U}ÁHœ:å¿@}x•Û”‘Ösv Õûm‰< 4¶µZDåê £¦+_áÆÒV.ÁÍÎ-{ñÂÛÐl¥šÎrxNÇqä>KwEçÈáVo®\âs{Ì#™vXÍ=R´`ð•öì8ád»³ìD›À”h›Tš||t°qWÌ–|¯úä*”¢³¡3øÃòG‡OñT,±ýx†[ôâä·X{á:±Jéqù‚ùâO\NÜâÞ+QuÓk¹Ì‡¾—çms¥ÕOieDä0ƒI’숤áÕÐ…G‰…­ÁKtœO—ï’:£ Ø;mæ†&Yg‘rΰ8Ùï¼4ÍÞ\ç|ºæŸ¶apo+]0ÈʸvZ~ôÏUY_xµš¦]§s“É€èb|’-*pyÛ¦È"$³Û2ÿxF*ÌN þ×—ÝùóºÛ +^kóôÄ`,3ãøÌïD…y—}»@‘œ¨E—¡Ý2Y«W=ÆÆUi|R|ß‘ˆ™@- ”œr›óÿºº¶Ópž(ÙBWRJ`?úƒl Ƥ zl{âm…ºuÛrß#*¥½sn‰Sºf«!Ê+ý;Þ¡ƒÄ–bÆZ²Tïk×Ϧå]sal´ëÛ‹z2t¹8‹¨>Ó3ia Eg°IuU …È$Ï å,ëÚÛgiõdôÓ<YŸW„œ‘æ,Rô#ë†þ¾¿ÆÀ š.x¹èI>]ÖpÆÑmCKº¬¬]‚]A×ÐÐîôfó°ê”Hf5s«@ÈŠfñÎÏã —ßr•PQ*ñ¨&QŠØ_ñ1isµÞ*w‚*dC‹ZÈ7äË„» â»_¢’M`Âýk½ÕÐVzqìGF’k¢º¦ãðõX4`ëôúŠ<¬TÜ´_²/BdÝÍTVõþ ¬ùW8%‰PÊ•bv‡u”ªd•ÆÄw;x1”™Ë·gi³ÛåØ^_Ág¡ü4*kÇ'.(cä{¨ç‘<ƒº® Ï5¢³8¾ž8NH19óÇX+CºcÌVàe£”:ƒ¯ÜÞ ¾:»ÖJJí ï“`³¤„™„NÛ\“ÌŠjò€¸#<|ÍÓÐWt­[ôÍÇK!Ï¢õipT'R¦H Ê$žãR"Ø QT ïQÆ×;X|ê(ñ¢‰ûÒ£<ˆV%7NJj°º,c9tJPÎD¦R† 줦»,^®Óá…”‰Š/B÷ƒœkØIö¼½02Ø[Ž#KˆøÏ¢‚)+îPx¯ÒÄﱺ!ᬚtÉ]ÚŽÎvž¡ï&eDµ}=¿|n¿õWq!³OúžíœéWýQëBò)0ìH™è­“r^£.U#Ä‹“¸¢ËüþÀ–—ࣆÊåFÔo¯[Gi…RÉîOBëkŠUue +v·t¨¤•¡ ã Ã+•ÅÆii!è3 Ý"3Sÿé4‚Á ÷¦Œ%0­)P™3Ê–Ù ]ⵇ–q\´v¼ªZ—·­’ÖC_ëQPÞúü–UQy0Û÷´*lÁT»F÷3N/ƒó—¯šD좲ü^9´Wb]¸‡‚Pôö¹ÓõôÒŠǹ +g¯82.îcò¸¨ug‡ÂŒ+ c¤g<Å*¨Oë§Ka„ü$ÞW¢­¢ó¡æ½ ½79qÖv~[É”è=„ÉW<ÇŸº×d`|ã[p¾ÂcSJûºkË7Ä ¿DpŒZÙ6£\…èZn8§ÇŒ™˜f‰ò‘@ümÞÞïü„-ô.1qNãô²²Qü ÊE·zo|a¦M+_Ú„ÚžËÌÕG+ËÐ?ÊÙ_<£RÖÎ4d§¡aêaÙŸ«,¢=èUí^ÕåBÂ%¹Rç"Ñ–ÂÞâÝF£°¯"ÝN +j7Zã""áoDtÁ(x1-;q:xÌvü|ybR¨;Ï¿­4²%ÍN À‚iÆ÷>>êÒ®–s[˜IΙO_ì•el0‡}æÍL`·¡Åìœù¹°‡Ø' „–Ú–Ýlv·à¹9ðD_ñ.ë©£ò—½.NÂ'î„%\–ÏÄÂxP’æŠúÏù~+Hm;&ï‚"8Ã{§Zˆó‹»Ú{{ªIéiŽ”IÃ?•Ӹ{˜¨›™*3 íÒEŠ[á5Owµ ‘€1ûk¶‡Œ4«9UÒC(aƬ’TÁkZ:IiX¼c¼Cý¢6†åú¬Š…mïÛˆÙ¥Yæq() +ŒÍÓ_èûuðɳU^l~ë+r×l³ð#ï“ÖÆÄ9‹Þ~r Y–ªÝ—»Ž-·½/.÷Èïpifè-&ëd¤Ê#úŒ¦u«Àö Üæ¡š¤Á(ÙúÉkÕ’#ËVfŽ—Z6nð¤ŠmÓû¹¶¦†l^g*ìKÒõr=5Êß–ÐæÑs¦¨;IZõ4Æšë7I4›ï5«z“¶¼‚IÜ”P3o¦±QÈr¹óÐüe›ÃRV‘›F4žç· LÙÝ  -2“À±>5e.’âФüUÎ:iZFGÀ^ +ÃË®“ìpÇõ/Òh¹`Ö梋ðk±Âlãrúï-5DAØú‰È‚mëw'D…½wÒ€‚pqÚÔ¾è;Ê&8ôÚÏU(X’7–RR2Œ®²™!Sªâ3 ±•?Ѐ&“ËcTÚµPlM¨h•’Šï°§ÞZòn+P73`ºHi;rqJ}só.oÆ*qµg‡êEþª·Æ»Ë‚¦HÌkØñàUÆcþ¯‹fþÀ|aöÍÞHòDaíS:B܇¹mnÍf¿Zµô`qÓ[j_Þ,óeX¶0RA¡]Û ’õŠŸv~…7íÂtõ‚ +¨«igj‡êë'{‘?˜€¹‰ÓK›~Œ*šµx2»Ð×–”™ÓÎRwå‚tðbgÿ=µEüß+J5J°n› Ú[c3JþpKJâöÂ9ŒáI¦ÅÁo,zT­þztÀÐOâ]¤P?SÖûÃ7”4¿‚Þ-]>ô|ë‹¥.eàíK¦Æ[¼db#²êÏp + Ÿþ¸Ywâz“×(D…mÄ@àK0ã‰(ç`‡¾„ÐküáÓ·¹›4±X%&².Šð•œ¹y¸ÝÅÊbìýR’ƒø“!ìððfž11>‘þs+ÑæŠ òòôúâŒÓˆÕ·´S·ÂÉH9¾ÉA:l{î‡O¨ëº¤z¹õPŸöÕŽõ0£j± ,³~½‹sƒ¯Ê<þ2Þ”ñ›ÃÍ:›½ .·{$ìd|ö‹ƒ¨ÁOñªÆ.Hóý[Í8±Q)-‰–¤:ì·íᶓ·$HÑ£ îÔÒM¶ÑJ2Hc͘2ɳ·í'ëÄG¡Êy›Õ‘%©€ëƒxÌÊ—®æ_nb{ïžl¸¹%¿gÌî1¼ëšpr\u6Šä=7„½lÿ þžSQ§é2[TËÂgaq Øã­×u +ZG j±¸QéñØÉëŒvÿÚ@û!¥¹ v¿/Bí>BW«6ÐÅ%RR"jde~*“‹W„g½/ÓFkϹ>ÕA.m.çEˆ9>õéÇÜ“º]ࢠ+‚!0Ò“}{„« ==Íx0´^Åþö5ÊA¿)ÓÈLÝéè—Ám{CXÚ¢AZD½3[qõ¼øËtD/—ˆ˜(ßpRßw~Úïaù1)³ßÜþn~ex< SåsäóÔÂÃî5ᮧ!™+÷å½æÆrGæÝ·Î5i¡6ô}¸ŠOpBmH^P }eÃRSÚ©›‰`Z2ÀL£ã™ZF'N^Ê@'h;¬q§;Wéç NÝ`ÍXƒ©$¶@Nø¬T_x´=í7Ü:ê‡Ì™V°5^t.PÎý˜†e¬ ;í¾²¼ò¦ú8„™}BrGNÎö²6 çϘۚ`œ¹ã¡. 6ÖʇãQÛ=}¼¨ŒÔÁ}ÿŽáNÒø>ÎpNQ¾íÈ‚HvÃ~h+W%î>·å¢öÀ/í_)Ÿ;í(-œ$¿fMAô–3»å·t½Çz¦R‰!5õ-¹L–fbg~hl·gÀ7YUÑÑm +kJ@j£ØâA Lð<33ˆÒés_ãdÄÿv731Yïöm;¾˜UÁ Œ§’2Ë\öV[•DƒÄ¼’iý…#Šÿ3è]ãU<,ÕÈÔ®ó•1qòULá©2w—Äœ÷ǾšŒƒ-NâóHýìC¾ø²MÁ£*{œH–Ò„÷W:ÜÖÆ{-gy@ÛéFʶœ½ÍÊ\´ †ÈŸYÐÖ±¼ÈÚ=I˜Wœ©vþN½²ÃÁzWhÙÑV õN‘@ÆÁö¢Ê_¬èÎIøLs¼«{ ‹®]±Ä øëS¨ +æѲýwb“[— a\—™tŒMq×S$ƒï¨Š ³ÏƸòˆjµ½S÷Ù¾ÀñMK¶çºîÑ Èd”ã5/ÓWk|–×bv\Ü£•lS=F—‚Ç_Æ!NT©Ûu^i¶c©É·]?vÎ\¶£>9"÷¬ƒ¯·ˆ‘¥Ü32ˆÏ{h&ø¹&šÕ¹ècÙþX26ß–¸½‘D­à‹yˆÌMñ-ÞëÇo‡ Éétï?CÊ,yj–C<‘µ£ý¥÷•ü[¥ è™ä|‚d/ ]¸mˆÚªjPö/é8ú÷›BÈsóݾNï+Á¥eŸ ·¨fH…pç÷ÉI|r•¹]v’§è9­¤”Îä槽xbR†´qQH9½™ö×Ɔˆf,U£ó=å®ëÛc1ê§ùê9/ãS[öB´0&gKNÑ¡:°f†¿Ûí›Õ%i×ãŒOídnŒ}$×ÇÍdW”§ÚÔ[ qÒ­vT±½vôäªÄD\îP‘\ù©<S,ˆé³Œ\í*ÉEzòä¨Õâ¿\˜EXîƒ`C°¨‚[;†P|9rnçÈ”ùô«$Õâm€ê~fp5ÁñQ€Lÿ„È1HnÕeÁ‚,ñ{K>h‡¨s6âÓ6¿6RA{ã +æ¥|ó8†vzz5øh¬—Ô{G÷ Ç°–Å‚DÞíûùƒ· ¿© +M ÔOev%½ùkkƒ¯—ý&ÙnzéoØ]/fâA”EqœY£„aòÛsè"L@¸y»ä5€Äf?8×ñ^Nóo6ÍÇ£IŽÛe4pñc§pÊo"Û«ÉP‡,Ÿ7ĵ[¸z æ§ø`ŠcægoÈM.°Þ½˜f•Œ€c½Yô²ÉåÌ8ÍKg®–ö⌛;mÜ +ÊoŽêDëጄ'JK¬ ŸY³úK±ÂÆ6e)Š—wÙ·;÷¹<™äÒ\§H<”ÔP§«{ÒÕºTš±êŠ¾+^ÁåMye¡HGì.ö¥äúCAq|“›ŸÆ-00󑦖°sl2wKC~6üóÉJ2‰ó›MyAé&ú’½=ßBÒßf‰1bzœÇ +×8µ“ôÜ1_7Ù‡ _lQ_ßILÛXÏtü¿ê®-A +vŸíM2>À›*¿[õìB…œhO)úQ´Ùo5ª/;ðJó³G³”ÕàíŠnBGb¶îÝp÷stn/*ÓJóË8Ñ®Îþa0„œ{1b¦¾93$®¤úñȃ}{þâdIí¨V†ü2SÚA’­"xUÁC”˜¨ ÎPÅAwM%åª'[å,³þ"t€L¢`»¸Çø¡ÄÖ¤™iÈ3™6+Bu«®á=L.ʘJˆ×š·.™É¶×ª¡Ùd5 ¡‡kÈÚ¼g¼Ó1°!­ìqÎWg]ç«HBŠhšYdÒø Ol,áBÒ3›€÷çËAOe£|m—i1çÅÉ áué¡hö0mÇ^ÜÞ ¥¨k$œu± ªGÒ:±· †¤é·äe‡ð©ìŽ g€¼tÚ(ê+™7¤lAÚššªLV¢s;ó|É%jÿÝr(ª`¥×)ž£›ñŽŒ4zJ ‰¦AÈK^rŽÍ9G¼Ï quËø‰œ`%9d3™Y6cq)ÁùpE|¬™¸9ø|Q#ñÛ¹‘Ø‹JÑ•Gηm:úz·ä®ʤʘ0êÎ\ò ¥_íŽ/ŸŸ*Ö·D 5eý§;†§ë†[”Ij*]›o¹Æ$¶ØŸÜéæÌU·ÁýwFP‡[F$«ÞÇI (‡'PD+þ`©)‚Šû–NÏåö³?¢p GTÖycº¿$8]u=äÃ2€S9–*KƒÊ½õµ²ù¦Ó6¬\ÄBÏf>ûÊ.k}…ßB1 Šä±sgÉvzD®ªêÚ÷°H†ÜTä#á)ÍöbgÐNÊ ¾Ž¡œxe‡8v~©hhí©c¼tù#ù敧¶–Ä¥SgTg·© G•¢NmQ¯z™`㺗»¹hCRÔÄÒjÐà:,f[ŒN¨®æ4ŠCÑq?×B¾`šj G·C7Cƒ––G+dWñj+7k.ÓyP-Üðîjs”¼2­ +ƒM$ÒIoS¿‚Y¤ž¡Ãë ˆ…@ó£A–Ǻߎ=YT¡ì„°*”EE[€ðé4àfÆôEWøîÞî„gì11žµ —îSDó/»u¢æ‡AûxXŸÚ]vd¨¡W7“WþI»s÷høcp°[Dadƒ}þ„Y%oåS -Qpæ!í§ +Óäht×oXm4{/à~ýÊC7“¿~Z”R¤+{XQ§s?î´ HcÊ¡È„“•(.è’½d/ß#îùŒÀ¦)„'K2éÅÍh9 Ü|_·úGcT&˼tÛ9A‡Ì$rKƒ‰ïÄ^™°æ s ºÍý´ÑŸo#½i™÷¡*7¿ÂFÀ¯Áï|‘?©&ªTHév#uYޛ㖚÷}8÷UØ.²íï{,Ç“*pJa…~µÎNÄÃŽ¡DeõMÑ!_ˆªùŽPòF}rý•”lˆ\/BÐCz’ù¬NΫp IyveEÃРXä;ãjÍü1v1TiÓ˜Ç.šxË÷¶˜yDRKå"¡ÒF‹TÙ/¡~ˆŸcpƯEgl.ñ[H§Ñ¢éIÞ·õ—Åá,[ßú÷ ,xö_ÀKÉËrz9‰`¶î¯‡¥Í|W=üŠ¡ Ãú#fß›Kz£$k‰°¾ŒŠB93Л­ä:Ñ® /d6T»gJ䪾L¢,Ú¨ô>e×@¬i¦¬ÂzÒdSlɺÝšh]F3݇ã»y][z¢ÚZ¹a+B)­q‹>šI›ŽÇ†·|¡5ßÛ.1‰f04Fñ5¦žÜ†à©ôQ¯:ä$iÍf2$?!O¯Mc¸D ßà']®K±äñ&Ö×ï3ÉqÛ8ž=¨àZ¬Ùß\8Ä&§ÑÂA“Éóë@–½–LFW@>]ø!ֵܕw,`ƒÔ¤è|ƒŠÇ6¦¦”Þ’5U,_U´=€4éÙMi‡F)À§ä“p<´ß›’'3(Ž?«ñüëMÑ>ã’¯ ¯ +Uåª Tõ˜›…(”(îëñÞö·fcëÑžÊ^§R|¥bLRÅ 7SKìCE4c¡Ë_Õ÷ž—@æù)䘕ñ£¥ØÍss”ohÜ%=jÆ ³Vv¢9÷ÈõfÕŸál­„Ñvˆeaó/8´ ä,„s-Qõ³–¸O‰­ Ãí{ßú¼#'t%½ÁŒ^4v—™™Ý<›B¨“h¶Ð¨™Õ¸Ñ”é7ÜWç¤j~èuíŽ=8æ”™ ¼µ| G,Ò-ËÐ…rƒ4&t6­>””ÍòÜX½ph¬X0V•çžl´z˜5؇(—_O%|hõ·ßÃÀ&è”·M™€HžoR\ îÜ1è–zචÐ}‚nì€n‡QGPn¥Ñi›¿Я!tÐV? õ[7wÄ®TóE4Ô%æèa˜1ÒªÏvMž¿o¬UÊ2/Õ`õ¾OnùŸ7Ìò/‹àËûd¨ãø^§ºÞudêÅ\—’Xùóý ê51ïªUS7tZýä¸ÂëÂ6÷UÜëÜù³”%AIåù E›0ëK)¼Ï¤ÅÑhhKG¡"HäÎœÀïÞ¨íòêC\7×kõ³ Ÿ0Ú[go€Mö¼ñ{qÒÁ ;¶Q“%3ÿVø­VùSM­«x¶XÞ¯ªÁYÜ"•ÿeîoDN9Y”'Y;Š¦"É9]•Æ‹õ)µBL@ŒÏº…Üü]X™¾™Ž9…iíìŠÖm_ ÖþŽÅ(SDeU"`-h—;0°Ü…ç”J«­v—)•|Éì†lP)ºÖ 2–aXÇÑÅB¾Zç×_ñûôÛŸó\1ëõùY9²Þ¢Ž2%q¶¢3Dؼé®íÒô©F‹1P®`Ùø¾!åÐBÌPˆ!^è5â DÂ'°ÑeàåÞ£¶^×xM/3=ÊAƒÜû¿õJ ûnÓ«îŒÑ,fS|Ir‘#Ð ?©®”öîäJN²SÉ"z@S1Ú7@;Ã?:<¤{KXá5»§åNÄQÄ}ÅÁ˃Êö¢ŠákÞ‘¤š„ ~œ¶!‰ø­Ÿì›òs>h]‹×"5ºƒG=l‚®vÁ†·Iñ2ûÌ°¢3®i•%nÀL¼Ú¶V¡ÄpâqáÇ¿@¢\ù1ŠÞ~|Ì5aËŠf×ÚüÙ/Њ¥>ð]F2ÊÚt¸ÒÔOð“’I2g¯¾VŠOyÛm9šÔÏ \4Æsúƒ¡øâÏòñ¨¶FWÓyÇM›yÊäååÍ襙ë×Ó|ö [½ÐWüäp¨![!3Èn¼4m¶©˜\½Òmò½j6o4ždvѨ&ï{…WÍŸÁy¢»t¼›P~Z¬(‰ú¡@@™ˆ,²·K!»ñ¾>Ì+ ¦Â.Œ§n;âvXíƒñ³–g¾“Qs9¢ýÚÔ:çŽü£§E容ñ\­~ÏÏ6cþÙk—éà ¿”•ðBQ½j–¢i)®Áo:¬À(X'~¿Ê´•lÊRl\›ÚI›t’ÁÇLÝó3Ü°‰§@Ç7œBE볚˜7¯~†y¬'²µcéöÄ Ýi9Ë9˜Ùn럅_§áˆôÏ3G6Î ÅÙˆ³èÓ¶¯í+> ˜b;wóg.Yê`N‰íZ”o2ïÀq›÷WDKÚ³1 +°œâ;³%ñ?6ƒÞÖc­=/Án‘OG´™FB/v¸"3ïs"Aç&sxú+™qG™ßc<Ásø 7mÊ#DTQçCü*|S^æ*¿‚(ÉÕeQDljÓ:Veˆˆ:ÍX9¨C¹ÕžXë3±íßé&ÎèwÛÒßntVºÌËhƒ’æ;Åa¥Äœ¹ŽoØ¢“¥* Ò°kT:qü¹‹[H.Gkµz~l’ +Ü—8,Ž›,ßùGÌD¹„µr^µk«§Çgó‡³2›;y'SVIöc.7š‰²-¼PDP'6È`@Xc]š±Ñm§˜Ø\=ª0%HáVýìì/wëj:"š|=N<óe½GèÆšТ6L_UB‡µvO>i*=¯–9×»ùœ50§…½œ`‚žW°Î/>eŠ6¶¥VuŽàrú„æf[Üóð¿‘ÝjaEìjr…sÖÈ7í€ü:2?~Dª$‘lIß?Ù”e[}TßÄÃë4£F–ë“V,°Lðlö° ÙàºIä®ÿŒƒ;2"ŽŒ³ÆL/L³¦¶ +ó4%†è¢È½®ÆCÜ’Ãë¤äÿúÅõ0˜}òw—ûRÕ¼£‚í¤JÉ91ôYÏ6œïƒ¶±_À-±žöŸø,±°ëä±aÌE*MŠœ68Ù¦iéëVÍ~G¢8,~3]°§»þ–C1ZUÑ2'OGõƒ"‡Ùi³?CJ“j¢oô3FçjÔ¤ó§ÇK.æg>×QsááuêRÕjD8?'Rµ;±~„›0;••’yÛµˆ?]›ë— y¼f¡¦Ü„NÙ‡×$9o+AñkƆAòìz¿%xè;F%Žá£» nþ-ñîpJ–½…†pÂç¡ŸÝRœáFÉÇ~ŸYvžh(™_,ób.¥+Ù›¡k\‹ßÓ ÚcÈ%ÂþM¥ÿ·AYž‰5‚ìEG ¸„QR«ëq#Œ6ÔZTŽkÍTÒ—hóŒÂ“bºµiȆæíððìbE„„‘c%çé¾ÍµtÖÉ^+˜Ãoƒ²ù6dOþ3¨Õ÷Ç”JÖÚâ2õüa˜P€'õ–Ùã˜w…Eé|0rÏòؤïóù—Lð'Uj¯ÏÊZ päUæé—J•:CåG¯7Py—:íŽ šëm^}LËòÝ’ÕSB4y»®µýµ&ME°xç0ËÛ)“6ÓÈ•š§”ëÔü² ¾;Ý‹ í‚«¾Ày5fN¬ +b­¾ áêG-4LÝ`¥MÉ\¤š (»ä÷Š£3[M°¨«·%~Lc(ùü9BåC}„qƒçž YÍ8¶@ž +àŠöÈ…?A5A5÷%ChËdöyÛTè~ÝëÆó'ìv2ëôŠË½¶e—ak$–sŒGbÉd­ –ŒÏ¿ã$ÅTeÁ–ÿ$ÃÂj¸Î‰U-oC“-[3€ jŽ¿T“ºp&5x´V.R‡ö5k¦ë£ÇU ^ÙôËÆ´ñ^7 ÐâÜf!”Õt$W’ +ä_¹½¹<$¥îQ³ö˜'æ4eZu|ãæ»M”…W€˜5’Ýi!Ïe‡jEÓ„>ÿÔDû]Qæ Ýh­9åÉ™•^‚†Fèc?Ý2 GsvBÛWƒæ>ÌŠî4!>èL/¶Zûz:T˜NâêÅÉ-³…âÈh&$À‚¬—Pò§Þ1¹DÁ“á™M§¢‘9ÌæsxpsßÚe׫BÄ ² =ß Û„Ž¼ ú¹mJ±{ÑZ™´K(I¾-[h–²Ð-¼Úp8‚µÒ†?ÄÌ¡â»ár!‘ªÕ±XÁ¦²+n¡~&!o=ú ì£1ŠÙ;]å½Ö(ƒÆÌZÆûÓomÓW Zxô²×Êúã]ô!ÍСðõeBÊs°J/lXó‡b¿¥N:ÅäaiW­ø¤qÒJú±ì‘á¼£ ž.½<,±CxZ„Brk|à²yÏb`ƒÏMŽï»ÌúºÝ”ë–¯­HÁèc U{ÁðEbeµŒXŒþ÷™ÞpÄAe¼gefhâŽÖHƒ¨cš»Í5Ó9MXÃßôŒHqÈ®Wsyƒë9?$ÙÚKŠ‚ážòtECѨ!ÕïðpÂ$ª§Ü–óiwXwœZäÒ ë,9C¥¸¼)Õ°Å#TÅ®¦V,o +¦žÈdY¸Ê–µîg M§^Ù9µßH3¼vY.ßJ»ñ…¸!îkkÚˆ¢Ó‡î©Œ}ª/Wýáè v!‰~ô«n`ø–˜`Žµpˆ6ȶ¦»’üÚ¾Hœ¤²¯³ä»S–8ˆËé ¸ZG +\‡MXJñ¥«"C§j¶\QÜóÓ:߸†[Cè(úÀÂåÝMõ¦¸nºj5¾ùP ´Ó‘K¡Ôí~‹0Ÿ7®Iõ(ã&l"‘ÁV`ys" }ä6¦ý¦ëñò‘/wèuMŠU‰¼õ'×495”ÏqÜ¡^ žâa @_)m«˜ª"ˆU¥ÒÔæOBÛ–[Áy`ϺÈVT6ïÇ©I#sZu¶Í<½ +à‘+f«Bºräú Ú~— P2ç½ÒªÒÕ÷$HZiüOöíS§?Úä”o¯³ ï[ P ÛA¤æ;—Û¤ d¥05W°G ¾–ã9Â;`§è¤{¥‹ŸLÑ눯 ÒÊivþá­`™'­ç@k m¶rO[Á鄸LY`†ä˜ð„qîçD¦?Æ(µ)< +xŒbm­ÛÃcz5úÁpF´ÃçÎéUCˆ2à -Þúhž¿.VÎ/#¸±÷ÅzêT ሃQ£^ÑP™¼Ç#ç3p[—ÓïT@ní¾rÝßî£Z8ù{i2„WåoY'RþeP`À'ÜržÅUáó›ûÌH;1O,Ûï»o4çNçÕ¥ŠF“£Ÿ÷?FCùøÔ!ßÈï~þôW2’â>tוd8ã^wNFR¨™|Ûèv rÅY)–g‘Úâ]ýÈ?)3Õ‰È';fŠÉ÷ߥ´Þ‹Á¬ºn>6 m†?ö}½ÖKZ S,¯©Y;÷ Ïfõ¦_=­Ú= wëÒõé¹ *ÕÜçÝã¥òsû‡%©ÃÒ¬Ô : ò‹÷@[9dr!éÊ„)Â{íO´'c›¦ìm¡ÿo¤Î¶”˜›|ÚÇöãhœI§ðû-í$:÷àå¾Ë†¹™DèŠú~bʧlÑ žªËñ<­b´I’U€VïÞ‡W½@iC-ÌÜJ÷IÀø³2Â_ŒÖ̯åƼ«¥µ:U׳¢|\1Ô®ðI* º·¢‰wÒjûâ>pÉ^á¶$ŠÒE$,3}!–¨Vìêo´¢tJ­å© u…ºåÄ"ÏSĢİÌH›º%©£’Fˆ%aø|K6ñ}–? ÂÞ˜F}è—ç¬MÕ=ý)•ˆÑ}W¯ÊÿJ °NƒÁWJô ÇßßÐÈðZ)ÏÛä7†çÎ-Ð8Ïò×"xB10qJ)´dúÔ&j뼪UíÛó€ÒA( ¡ÍkžnûëÞš„¡{¹Öÿb"4²˜ Ûí¼ìU™Æš½åÐÉ:tÛ¹ü6¦§üSÉÏsØY®ÏÀ®sdá¡ ðçî0ÖaE¨üYcß6?7çÉWM«ˆ[`B7C*8´ V—5òP~~í$â]²ä¶’ÚþkDº–§2N ,»õM—«‚äw,žç\OûÓ‡ïÙ‚9ûŽµ%JÆD]ÞÇ"º²¬6ñç†8$éá¥Sy¡þLµÅ0÷¥¼ùóÙé—WFÌ +„SØâÿ1}AËqÙNèpLíEËôq±û›x£9¨š ÔþÌ6 |A*¥à®T†_fþ­(’gŠº/©ÆÊöjÎ +­Eb!ä×bæ)dªú~íüRˆïñ +r_û¦Fa‹WIkÓlÞCØ›Ç8âÀÊ–R—åÆà UµÖ. ^…«ó/ ‚~–‡,p±×w4ÓÎQx(Z †ÓˆQGFs&Zô¯œÒÆ¿h zA†ý¢ÿ;â4û™!@¥¦!áÚÁÁ„ ÝÐ…®å©¨‹t%QŸwåg‹žƒÙî"7ó$–h“Úºå;õ1j^ß3áf€i½©0°¤EÌ=Ê÷èš(©IÔ‚ª\§0h¬¨N#0ãkWm’·-€·îryAÆù‹”¡žoz¸Õ‰ì­ÌEþŽÆ®þroÓ01‰{“m¿\BF]vJõlÁKG¹ÀKKO,½=œŠX³ÈƒÙ@Iq“ôäëuüœÊɧÉÄZmTÁî{ýt©,iÒ“œ%µñ…{Í\Õ¾7x3O€Å\´¢gø°5¯ŠÛV’Ïy*ј½#z•½7ÎW‘#†^ìö2ÒQÂÄ ž†>—ŠÑ<ô…³Êàà¸mÃrþ¹²þqi™¹|žÁlM¼qCãH·ŽðOF +Å.«?§â YÒreä4.À&âPLþ©áX<Ú @'E’ŒÃ4Y¦)Q+/Ã`â짪QÑ1úÌàæ +Æ<(*G9’§uáÔh»†ûì#´!PÙwÁ¡0ØÈ÷ßÓ~Å¡Þ7'ï:Szµ±d€•Âu Ùc£M7¦®‹/'cZûMwÌ*¼Zì›Sîå–sóÊìÔ€Z)Nv`ÀË_EÔ› Še}÷«ÑJ< ¸QáM„œ „´›´òèÎT_,Ø|ø2ÉÉ2n/½éÎÂyãjŸVcwÒÞŠ+ˆ-ÉC7Û䵢ΓéüýcûV g/1Äç¢ônUÌ<>_Nq7äô‰ùÁÞØ7­©SÂÏ4÷® YoúØ{q›O^iÓaãô`ûáX;««[õ{Kdt‡*Â@ÔIÒHÝršT',ƒë-AnÑôîg÷4ÌÞ¸kâÙ2¿§ÁÖ(ŒPš))$|NòJ?ô¼¢ÃËM…‘ÝMgäKìtÁ:<Ë:âvc&À8YBg+¹‰¯úÓ(³ª•wÝ¥æDªù%£lJ`6¾Q2|âµð¤ê²„=ÇþÔņ£Xj$ÿhX Óg<õum½Æ,P¡˜Åk Ú­ó[†›²ä‘FÂnà]מª–útRà¾3Ä{Â/‰ý%>’ÛÁ ÷‡suÖ³x«žl&ðÇ5A@&üR´bý?^Á¸ F”‹ÊA¦Ƥȉöø·úGF6ô.Û·W@7½¤ö9>Á•ËòFjÿà¡ÛZ[ÅäÅ4ì­[h‘lCJ#»nFxâÇœýƒÌÌ •séþ楞õŽ³hIã¤Lkxl>ý'eîB¾Þ+ù'Z™ûê4å1M“]²ómƒeGˆÆ_©ÚñÀCÍóëûíÃE9ê<ŽYEƒØS̾ëÍ(œŒçµöŽZ^€zø¯ÝãíݱGæ’ϳr‘dÕ$´4€a™ÚôÊ©Ÿ®°K–!¦¡å}ü4 +к¥\¾UûÇ ³õæ3S"KÞz%[¤½â®qãÿk.™Êþ¢Çp"CÂÚOKÓ‡kUæœ5æÞ8ES.Ò@íD-K@†W€'_‹ØÏf©“Žò6ô|ÙûÌõÓEòÜŒ‹pyÖ­eÓWéä=¼2óر Ð:ýW}AùpCÊŽÞÙÁpbG´£ÖSqï²úíœ^SÇóbTÚ®LGç壒!h¥|ËüDÿÀ[Ò]Q(=={I(¨^]6ŠŽ\Ïû ŠY Y£™ãÑSŠHØÁLpÉ/‡}|ßGeçNÆÔwb=RV8½<ùš·¼Ó—•r·?nñÌ+±­¿Qïùq/ÿ¯õ¹6À@¢‚sèãÐÁ_g)J`›«õx=oäËóò[‡·]eÍq)1Ù̵à„ð}Hª ¹d¸I Ñ4Ѥö¬flÅ´S”ѸQíM[kè*7i-­¶þ6š«È0à¿O³V‹ým7gër¾æ¾¶˜ Ó‡QŒ0iõ¾Ÿ›ÀžøÔ!”B΀ ¼ÔñÛ¡3‚h¹¤bäGßUlå¹}ÙsÄ/ûÐÞÈÿ#ô@prœÁU!î˜#6þ‡µêÿ¤(ïKH¶ì +JÙûg³°¼£€z5!?hµùK*[%Èæó…Ÿ|X©ú\M{ìôröÏL>ÿ"G…0ƒ±°»Â†ZjWI¶G¢µðÃG.-ê +Ó¢> êx3N鹆!–´å%=eŸqu¹2é4ßýæëwv5·ߧÛmÿò-æÉ$=”™9 ¹”’LûîM«i—4ãé/ÓŸrSÙÏ’ê—` î¥ +\=gÌÄk%ƒÚQàR2®M¬ìs¸óAšùïq;NY¤pÉ[;0¶Ãˆ³@íÊ–'†\@ úÆ£BÎÐ[J½eG'ýý=Yo¼ªE¨Küít¤‘ ÷¢Ÿó«ÀªæÓk0A‰š÷…m ZÃv*S4åcCWT~O¿ÙFQàzã$£’¦7x .`!“-G4LîȦk F7üFë =o´F6 KÂøã TIìÆò<ísô­"è„„ÖÓÊ7û^Îeyƒ¸¾{o†pv’ë +††!½¸" Aöí +Œ–m”­ ¥¥Àa2ãù/fÙ»ÎÝÊ­rž¯¥Z•'Ä5lh†¡Õg`IÍŽÔ©Z‡,ø:³télå²¹A¯ÉаÐl5^Ž½(ëEDê¼z*;’…ç°#iÒå*QQô?ÿ³qQ½GÝ"ò-ql76Êâ&ëXïÀŽ +endstream +endobj +9811 0 obj << +/Type /FontDescriptor +/FontName /HVSXQD+NimbusRomNo9L-Regu +/Flags 4 +/FontBBox [-168 -281 1000 924] +/Ascent 678 +/CapHeight 651 +/Descent -216 +/ItalicAngle 0 +/StemV 85 +/XHeight 450 +/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/at/b/braceleft/braceright/bracketleft/bracketright/bullet/c/colon/comma/d/dollar/e/eight/endash/equal/exclam/f/fi/five/fl/four/g/guillemotleft/guillemotright/h/hyphen/i/j/k/l/m/mu/n/nine/numbersign/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedbl/quotedblleft/quotedblright/quoteleft/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) +/FontFile 9810 0 R +>> endobj +9812 0 obj << +/Length1 1647 +/Length2 14647 +/Length3 0 +/Length 15508 +/Filter /FlateDecode +>> +stream +xÚ­·eT]]³%<@p‡wwww‡àrЃ»[p‡à'¸»»»;wwož÷íÛ·Çý¾þÓ}ì=öªY5«jU­k“)ªÐ ™ØÅmmœè˜è¹òÖFΎʶÖò¶\²tÊ@3g)'Càcƒ##q:YØÚˆ:¹@€(ÐÀÌ `âââ‚#ˆØÚ¹;X˜™;(Õ”5¨hhhÿSò +ÀÈý?OKG 3ùç‡ dkg ´qú¤ø¿6TNæ@€©QPÔ’’—PJÈ«$€6@‡Ï$@ÆY c # +`jëý{0¶µ1±ø'5GúO.!G€!ÀÑhlñit3ÚýÑì€ÖŽŽŸß G€™ƒ¡Óç8Ù,lŒAÎ&ÿð)7µýW@v¶ŸÖŸØ'™¢­£“£±ƒ…àÓ«¢¨ø¿ãt27túÇ·£Å' °5ýÔ4±5vþ'¥aŸ4Ÿ¨“¡…#À èæô/# ÀÄÂÑdèþéû“ÌÎÁâ_a8;Zؘýg´ ™¡ƒ èèøIóÉýÏîügž€ÿ-{C;;û¿¬mÿ¥õ¿b°pr‚Léᘘ?};}ú6³°cø§_¤lLmLŒÿ–›8Ûýætø×QþÓ3TŸAšØÚ€Ü&@S8y[§O—Êÿ»*Óÿ÷ù¿¡Äÿ-þo)ïÿ[qÿkþ·Cüÿzžÿ+µ¸3$ohýÙÿž3€ÏAchøœ5YÀ?ÃdèøgàXÿL ­-@îÿ'ãÿª­üwÔÿ“ó¿Âÿv!dcöY!:&6z¶‹-Å-Ü€&ŠNÆæSCÐçæýK®fctYØ?‹ü¯ýý4bdü/˜ª¹…±•Í?Õ`û7´1ù¯9|Öí_0hË*IJÑü¦í¿”?»ÂIÕÝøŸž4älMþ×â*aa[7€';€Ž™ƒñó0~G.fVïÿ·ÿ"búϵœ¡“ƒ…@›‘ž‘‘ ðùþç?Wºÿ…FÌÆØÖäŸ>Rq2´1ùl½ÿ%ø6vvpø¬ø¿¦Ágæÿ±þ×!Ý€ÆpË ¶Æ¨÷ml=oJ–a°&GiTŠš2‘4ÀN0AO ›Þãd²u¦3:¦’l•ÇÚ,éu‚%!ÊàGÔYšL¼“Y- Œsúr43ßiœq)ꀸÊMëf:ìj©ñ},룭¯›•[ÏzE%q!þ8qït/;z+UêÙ¿)£hKBÞ4ùŸ9Ây(û›Ž¬‡ƒf¥œïÒÞ¦U_ù#eÑ|<ø¯åÊPMƒË$luÚÕ£ +¹$G˜gªMMÐ{0¸a¾áêîz:¸8[R;¹ßÙô"ÛÊ𮩠°ôüÂ7ÿb,ïÛ=Ì]7m©Ò×LJÜÑ:"E’÷§ù9«¼“Ä¢ñM™QgŸ‹g—ÁW¨™7¬Už²B!“°”×òÈH¸#*³{4Îèºøážýgÿ½¢‘W )Kúä)-™5mÌÖ+-ª0$ãR›‡°«°#[n§c&êîÆ$ÙÔ¾#,œ¯Œx<) +5E4ª\cäõøª•èÛ‹ÕÞãôFps&Çéý:ôî)J’B뜺 +vϯ„'ûDK¬sh‡c§ø2¹(IwŸ¯˜ôK/ -ùt¼¾ï`øo±ø¿Ác+ +ö 7üÿ6nçôs¯Ò`“¥MÑ®*E˜*‡kò2FàáñiÈ=Œ6ÃÞ~¤^°W( zâlð„ëeŽsxts1?uRTµÌYJcÅÀÍÞî>Ëì 8ñ²M6ña—qqÚläÛ€æ'¿Ã™«ÖŸ!¶ð©aiØNļÚ!ª¥[y²l¨Ž m‡–”šZINt¸'tI"‘d±LìêI¹éë+­Õü° }—ôŸ‘Mì†FqÚÿIAÒ3'KùVª>÷þXïIýѧÏ`ÄÙq€G•™¢ø›5?y=æËŸªÕß²ü/J…÷¿]{ L Sþôh¦»…`N ¥¡C¾‚£ + ã“ Ÿs×·ó)kCÓ2¤».P$åÙmL~Ik ‘ŠÀ"u…¼²-PmJ{ó6N·;©:´ðDÍÑ´jß¡M0±•Þ˜NißY' gQ~À—b”€»®y‡’ÜÔæŒo‘s=aYHR`ï¨vÒÃèÏ1(Wå§Ä¬¢jOl‘))»IÉ"µ¢ä¦,MPØ®HÜ«QøÐbsœe $p £¨ É`Ó³ÀïዼSµ¼CzuO󋶄ØÂYOijÈ6?Œ3i?ì‘ +$5[cœ¾(­2ìáÅoæ l*âÇuAëïöë`‘ +o¶lÉ2ÿ²²æƒ›¤E-FŸ#ìëbá€:–½\X™d»•6I!5í8Ó¸öÛëüQ £òb$#‚ÎÂ@~ÅóüÄõSdOçDdX¦A3Yã®<ª)¦*„¼Úƒrë%"Nj}x9PÛaܸÐà oŸþÑBô¦›wô +!› ¬+Mã´iuÑœÅk´È…vD¢âÜcí³w;0+jz¶sçêtŒ¡ÒýöaZ‚oaú'\;)Ô­»e7~^v÷wøqàʪ¥ÔS,ê.ÂÅ—å2úSœ]½K‚ C0²ÝðöÚ„¢ `BŽïû‰f)ZDm±ªµÀ°ž7¸a ?%¿pÀ±€c0÷ðí¢6.eA'•‡í¶»Ãײ@€«‚ ýFð‰bmú<ÛöÛ¦øqâÁâ»ñZ‚Iõò˜P'y-•§óŸ¨•3Z\´å·zE¨¤›¨Fg¿DãÈÇbÊ,eÈ”ÛÁCÌzèÖúT5y_ O{nÖñ†TQŽó +ÄÆêÀOßÎYAFßMe‹:¹M¬Š YnäÙÒpÕ0HÖhãÙ0ÙÑ :´Ð•=ßµfÉýw5‘xsªUn·¦Ì”Õt¡óýýPrcú7ƒ¼3ŒC§Ža¯0?'NßHù U´M¾ 'ÏLSÓQ¼Ì>•ökוè«ì€a¾ÅËi/pŒùIП4%”Uîµ×_D˜:0ßòÃöWiIBx`Át>dÎŽª R×_]TÓHæŠ×$ƒîo´Çh¨0utUf~¾)ëDߪa1—;ÍÛ¿’ZNÁh‡iS Ä»MÊŽB»>—NØþÔYS€YWõ8?SÍc&õßýV°m½E¥±ßÉ€jÁ‰ü+ñá²Õ¦fp]üD^¤+ +öBh4Ê(>õþÅiü…jþyB°ýÁýü¾÷fìjÓ–•]öÙ‡´ó]ãï"_¬N¨o謤«,”¢ç!p Ðç’<·a¦ñOêÔ Á›2}½ }ˆô#'è3àZÈ‚!<:·—Pîf²>dÏ[¦-‚ñ¦Ú½ô„ùɾü.”/‚K¿äý µÎ‚jñ·ê,Eýö ø^Ôϧ$]"+u'°9[cePPaÝ[À 1WA{O«žíGê`Ï=kP¤Á’¨¥7`øFÁû÷•6  hþ^0m_06ìNM;²æÜ/9¹€‹ T+O‡V ^‹ÊM`Su¬ a† &Âz!ܳ×7×› —E%šûG!–OtŒžŠW%h@WñWRO?à›;ÑœWèËü¯ð¸à•u#ýX½©œãT6Ϧ},»s‘‘¢¦¦ +àÏmæé´«+渑8¹àË÷" 2¸HÍwà"/~”„]l‡ûÏ>Eÿ.`5iP6â{tDÿÐGíHC]¨"nWÇ<Înµ¦ ¸¶~j3§ç<@}ŸAuÚ–ƒò÷´€ûp4†y‘ÐØ4F,ꜧ±}8Š¨`D$º‹q¬ú7ü2(§Ošú‹š¸Ùdåc>ÖŒøuäy¬Zΰ0œ/Š„úžBɳcDâþÛת¨Ù6þϹ)ûnqÄ¿ÚÓ÷ e¼ÔÔ‚ÂfNYíwúìUikž÷þLjc„#•uŽ[›º …óë1šâeÍóCd6.‚o9§ý˜N ã>{A” ò\i›™¿ú)`¶ ËäÀŠUå{ú*™ÑÚ9:òÎ7hY{UÆ=¥ô”Ë¢]êoø¶A–()EUjBW™ ÕÁ·ê;«årŠ÷œEŸTŽþ­«@$¿ +ß®dS¬{ü;uÀiÛYs HÏ‘*mkM7¸Ü»|Òº wÌë„‘7Ôì‚à‡½ÞrÂWÊ>WÑÒ~%°Ð»^87ÎLñ½õŽÔ1b Á¼úd_nŒu¨àÔŽ¤'Q7¦79¨ePÛ¿eÙiO=,ä¿Y½s­JSõ®aä>-Tœ3¿ò-tuöZñ¥ ¶cçäf±èÆÁ—¡»mÿ«%=„ÕØ×±mšò·­(&ímǽÅ(ö¶Šõ—´yâviLÿ«]#ïIi¿o„àÙßBd`1Ãà|CbÖ܆¹y­uß6¦KÖþÀùoÉ÷š mœ<Ç’ Ë¥¬6#5‰ø•­ÿ ŸG7Lžû£Í!¿%Ý.kBª?5“ÄÕœp7¹ªHΆâÈÎéWÇøæèi¸6 pû=AƵÁ8‚u&?;lC™Q×Aºñ¾7Ñ\4¶ WÄxÐA¾°á‰Ñâ‘×vŠ4Îø{Â;„´qÌ>]R›Ê4šâªÒ$=¡<~)7Ý€š2Q4ð‡ï°‰Tòk%sw§Vá_¶^’ŠHhDä£ +±Õ¾A_–Œ*"ÿmµÒ<óuúø$]î)&—ªï‡]AÃf'œ[É£%â›ãò>nMªÈj÷·ÃjB=äË&‰Þ²w+€œ‹_€-殫œ‚b Yì%ëðOõ^šæË#ö¶lŽ¹òuÅöÂDP’_,Múб74Þ¸î2óþî[åø`»#óI¤íiØC:¸ ýêŒ?õÀw7÷ÄÕçSo͉ùÃྗ³âA¢jï¾£[¤£=Q`Åx¶€§âŒAîP’¯ÆªW@"Ù¹ÂÔ3þîyL¸µ vaμ2¼Þcd™tÆyeÆr¯ŠÃß?Íp–?#Ï (™y¦u¢¥®«Î;%ÚQÐ-AZÔª\T)<þ»†fų’¯•5³®æ‘uÀqLìáËÆðD12äò2©_GëPÎÇ©ÎjÁõÓQë‰~,ÙAa¾3fuÔdøÁ™I yJK¢¶”þáCÔV»åˆ,É{¢¿hÒmÎ`È$9/˜]:.ò5ž8PD—@ºQÃÀ`¸ ¾¸_D N§ïk‘›[ ܼÚào.ž Z€]°½ØÚ3ÂW-ñvl}¡ÿ +úÛ))gG†Þ­†‡ ?Æqíy<ñ‡rò¢.×nÖNšÞt–ð)¢õ 7^BO AÆûõeUÞ[ºJK˜&êÐ’‚{¸UÒ¾¯ßÓo ^Wr˜Ïftl=ŒòN­ få);>ví·âßm9ó‰Cc]Q3È®kð°/zv¬õqei εé@©q™ÉweÙŸí0¶-X—'T©¸‘Hø_ÕãahAóq¿I¤ìÙq)²T¯è/|°P ųHоæÖÍ~•àÞ¯U‘¡s‹ØñYµŠ¡nE(!5>uzÏòÄÇÄ»f‘˜o¾ún9xN:øµ³Šuò•úª>ðo_BàYTrO¡Û/¥ZÅþíd+ª¬ÁÜü’\oçC„1ëjÝœzt{¶` ˜a>ÌâÒ ¸2Ìlå@hû!øUŠ<>Z{r]»^7È°4“iþ û[Æù ¦kì`‘SöéÓ´'“VH“ø¨¢6ýRÌ+|÷Ï6ô¶L¬Tüñ¼µ¹qÒ"+ØOp`›1B•VŽk½5‰c¯u1UµØüÑ¿ H7*Ó>PÁ±uÕáw“ŽxHsF·CœŒÝ>ñŽ¾ÄôHº²â|P€Z zrîìðóÇœõÈ¡ÿ©Nª ñB÷ûÜ¡.p×í]£tÍ”'»Äl×wl„ÑÒóšQ”·Ñ”èCzo +\¯Ô}àj±Éä…«õàQO9ËýZ¬Óz¤äO+ÀéÚZó ÿ7'b®¤jj¢_A\/Ú1í.&Ö!£ùýªgÕHÆ©)ÔôÀ맾¿§Û|èN¿tÑôw õ“]¥J™;™0Š¥!)"3w·Ö[Þ‹Ãl/ŽÙiÊó(ê¡À±6Ì> ß“¶L°{‡"hu­%ºâg…Î7ʹùµl~ãØk$¼VNŒ»gZØ¥³X3GKqÚ‹<®à2½Ÿéú|–'E9Ê#WYG˜30_˜Z;ÏõEÝóšú•¬„¡¶…¬$¹½*}…úV˜W<ùæÚpCšèÍ©h¸WKä½®–’â]ŸÆ(‰‹Ñ®à‰Ó^ùùhé]}lüj §ÝvÑŠì„H•]/œ˜Ûw: +úòÑ%aíƒL_Ù¨•)f‘n é7ê3Ë¢¸ÅàfÔ<ôßùC1—"{wºw“þ +;[gÜ…T÷v’€ñÍ ÌŠ>j%+QóDy0w}'´|É2Ô($<ý. vŠ#’‹¨‰ìnUݵáñaÜA‡¢»Š!a‡¯q¢w¿šk¯Ÿ»ÿFrÉù2Óöyí®Aâ1²úz̧W7ìg5Cnõaj*™ÿ,“€ÂÙ›2|¨ +š*N¤ æ˜ÆâiÓþR5º€ã^•#^¹¦ßÚ|Ñ_Ðv®ÁÓŠ‡ÌY +WÇÓO¯BAp}a›k¯Î¸Œ¼^Kà)#¤š¤ž–¡8± ˜QKV¬y%fµkž­/\V^ú«a8‡Rõ'º[®]ÃâÜÕ®áôVï(@ÑuÿÇŸÄ¥¯¦4¾®xÛ>ò=üx]É•T. —MxR™ÚX?KÐ\“‡šqÄXŒ%Y,x'¥Z·6ä„%®ß÷#Ýc¿ÂUÙs7sÕO’mHùpEmJÓU ^|Ã3*Xm‚U!ÉRí؈ ¶Þ’ntZ[ð¶3åÝ1óâ÷fÙexêõ¤ï“N˜ÄÍ>Ãòh ‡š¾Ç£™É3ð@7ÁèýµÔ懲îOOǹªšv'Kã7b{|(½b êîŸÑ\‡²R†¥ +ŸOM„†¢bÿ"M_ú>(&ÛÔ‡”˜ºëUÂ¥Qò~ìþ>4UÔ5z<S\—¡HƒP`ûŠ4±ä&†ám!¤‘¢+¿éß7{~Ä…}\Rj[¯¦µ«šÙöîU'ô³Ï’³ÿëˆãéK®Û7lýÌIóoåâkw\åˆ>@•w‰íX/ MÄzUë×Ê9Ä5©Œn¸$WRˆnh¤ñïµ0ýxHË -£bv ùï¡ÑÂ;Šß_ö’œ0ÕfSO…mš³-³#ÒXí¬5NèìEîÑøOŠ®(DÈ t툴bŠ¦º-Ð× ïï ’%1îù¥‚DöuâuÓÖчèOÖð +ÂÞ²ôùV×jòá¢mH*šÛ&w63 ¾#ûœš Q0 4/¼÷/|vל#³? ¶bkWÐ(­‹TLÊo¬¬òBr-ŽhB&]ãýö +pÑçÂê`&‹¬¯ yÌZ¶å„–…~í½’™”-&è8ºÚýÊJÍ*¶ vªxrê„’áó^ë€Ëº»¯<8f›¾ù«ø{t†”ïÖ‘:t´3K­e«ÌÛ³nà¢Ó“ÅíÏøžØÛ25ô‹à~JqîÅM 0V-ÔP¿c› #<½Ã(÷ØœµM¹Ý`‹ »2êvH0̆a°ÁÉXÌ­¼Wpt. ±ÃQyܪŠ€™žlàä¯y|°Ø—¢Ê/Óc“Tö!v²2D1é^Ò®*FQ·‘*éFwÓƦTŒ»Mýe$ÆY³J„K ?LxKÛ@»“S[44 ®Ff…v~[>áJ«þ7n¼—¸2!rîßí¦®„€oß÷üIr¿ü^vmÐϧä¨Uxë¯÷ö´É8A¡v|u ™ï7 ÍFjçÖܺ^óœhìüv ‡S²JL·ï¿é†Á\ôëꤢ {”‚…7›[|kZz"Ú~¾Úƈ]¿ù–ƒ'É»Ý÷…Ê´Ù½ M>^eÇA»¬æ—ã#Þ0”•ãHÞƒ•]2 ±Åçk£ïR¯!ÍÎ ÌÚY_®³<Ã4'•Ó.¿…?ôòBµ,pÖ›k÷Å*4Df@º’tÇý|.JËiž©DRZ…I:¥e¸ +«°U¶ ¬Ó)ÁÏ·GsË<ÀøªB"Æcdb|#'Ø:”²µ ½Õ+=8à »/ËÑ¿QSÑ\8„àp³Äñ£ãK˜zö[@® 7oæ V=Zè¬Ø_A×®Ëa7:6CŽ§ÉÍËj‡ŸŽ¶”çÂ]ÙRgÇh3ôA¼ƒÏ›œ*K‰‹Ä`aoìýžÔßÌfÒá{ø§½’Ga¥‘-úΨ/Ic6ÿ!-Z©0Š‰Sà bR=ÞÔ‡lá«`@ðWË¿ÄÅ}ø]l +åF…GPþ’\œò— +S´ÑTí5îÒ#MéÖ€'Œ $ÛÐO'.Z a)Ôß n{CZ•Ç¡üÒq(N÷žx_G y tÕDpM#:C÷lœ5¾xr˜y·¡üT"S_.\ÎîM“ùxËÛý´ ÇäYŒF_m{týðf§bÝìŠ'£•‰qôÙ—Fã‘Õj¤Ðý˜Ø˜ÑñЭØ2( ÉÒ õ½]J³2„‰} 0ǃd<ŽÄ…“\v€åW¶¨ŠÀá­?ªú«è7izCÊk¨ÒgœB5º +ýÑi“±ì–ïi…Ý §|zuó"…éq6£l2ÊWÔÂùm*IL)cˆâ<‰>KÃ8¾.뎫ßs·šKÈû‹=ÊN(eŸ‹q¥ÈRk)F×o%m'ÞÇT©®I(Í»ßb^(wisaË_<,PΗ.,¿£|õ6InλxÛÆÚ7—¸Š,gWØÉ9¬¦þi¸%a€“6<©mÂ]×趜RúÒ¡#…^2ØŒÄC7Z´üÖФþvÝlÝ gÝ‚—PĶÚbèïÔì#Ÿu!TîÄÒ¥Œ#<˨vÅW).¯Š [‘`Ë…¼(«Œo^‡ßM!°Y ïB³ 1¸ñQy <P¬‘µ¨'z¨þ@?/7ãß?Í6ê¸Ü]ë™a0vÿ´Ê©®éܱ|ÚA™ý^7MÚ_a¼)¶¢Ó.€øJ¿ÒrÏ. ñvTo0ˆ«6?pÍ ;UáýŒ £Z½,ö*’W$oJüõæð°×oR&]Û¿÷‚#["* º«·õu§$SAaäÞ\)pEëSv‘n¡#Žr{k®µåj×Õ¦ÔÍ5¢]m›´ŽIÓgÆkjŠà›I¯:J³ ¾¯Ð +^ü’p¹ ¨hïEƒƒ"KÕƒ©‡+,ŽT)»g{¼u6oa&7½ï¤Æ”ü6cíâcá(á¯@îÒîUþõ¾œ’úáˆkû˜Ò“šB|Ÿ ˜/py—\WúËa8a[OE·¾IxMØz‘cÁ®_Fù  ~±ãâA,Öô KÖ¡·C€‚^ãy)µªñ»¡?:›g •·¡£Ö’>eÝm‹ŸV%¬k¤{¬Â¿2esü¬\D)†Ž=†Ä±-ZÚ IÕÀÛ¨?}j%#Ö†»&4.ǬÄÜõÌlÙ>1†Ï¯øÀ¢ äE×ÎDX‡W(ѶèºÐ}ÙFËåÉoœÓ¡Ö(›—f5—A¡—Üõu Ugò6ßvfƺÑï¬!NžV…W…fR.™¦àCô•lõ°pu:<"3 +ª¼lkȱ§5p.‰l¹ñ韚ÞÊÒX¾œ‡,Xáúž×ås©röët’)4)<ÝEÜ0Î*žlBª´?+Ôžñì»Ci1ªtû¦Ê¦WÔÖf%ðëe_Á›¯¯=ÍQL²=é+ÍÝ^â:•ñ\ìƒÀ¸Ö[Óø]­^›„ˆ¤Ò^XZ"f™¶·ÀÛý/—”£°¢ÛÄ#¯ˆ½ÉHçVêA«TˆúÚ„ž*Zp[!Ó75ªÓº#R™«°«¯ž6š²‚X,?¦u¼“X?CM%½á\D$Õ¬[Bg)“ n~mˆx~Yq•¹¢lÕÚc|ñ[Ýe>̾;y~/[óÉ:JäòJ¶Vx‘.®à¦Jð†@SâH‰ÎŒ‹7&ÑÏ&ã¢?›–¢¸¤°"Ð+I˜œ0¤Ò¥Aà,ȇò]ï=°TEi~«‰ ßSq31XL«ÎµY¡ìí·É–Ðí™3±“ÉRQ¯…Ž©¾˜5OcÑ +c!ò[ÑVFRפLÔò„ƒOóÒcÕ ZNžºº‹5ëÍ÷Ê}áû R¤aŸ¶áGó€ñ¤ó¦›õ~ÕÓ÷á<ßãêC.«î¸Irscé5^ËóüCÔä5ýÇÁ{;>‚»2Ÿ7#rÇ"´|P¬B‰óI“tÂHz›º®\€©£ÖÀîNµÙ~•‚k×oµB²B£@Ä£‡¨m‚õB_Q”ÌÅ‹¿¥ðKftó©ØÕˆ¥”лÖû÷ô®­DY('<ö:—º\"ºëS=´* µ aÕú…Û#ë/oJRòF॑ã={ÅéƒåÔ\‘AÚR¿– (’úÑ꪿}Þö”v<‹•*Ž…qhI•ž H2ëÑIUĦÞGù5= uÿ¡T­#Cß…VÑ +ͤøkfݵ ?,r2ä{µîõdõå5¿Pb›Ç1øƒ±ÄòòƒÓž +a4×’C`BuÞWXN£³øjµ¿Ò¤Ô#OÌGjCtjÓÂÏ•ÃMRôÛ£µÇ‚Ÿµò—Ÿ07†KërŽ}ý3þ~ZC»È9 qf‚ɘÓ&‰í00ŸãÄ« ›ð C<$ÄY¶VûyýËz¶€ XÆ°b%™²{¨×¹Çñ$.ÑÌgz=€e8ÙòÍðÕX–¯³BiV¢²fR§Ü'ÖØúþàë«7"ìsA´ålŒòÙ‰‰ N9U*¼nA…ñ*ÿƒ…8Xù²³áHi8 Å/ÈŸÀØUZö }ýcÑ+š:¾_I³¬¶¥èû¨Ða›WÚU>i‹k†[ÂÑãR¹E=!n/éLwáOÆwÅÜA²Ú‡£ÃÞy«Z¸qàÐÝ@0¢ÿ‚°¿‡ Í.&žèH ´ÄÏ£úz½¸pE“ +àÔt™p¢;Tœ)>ß“˜9Þ;ôìëX¹¬¶WìïÈÁs&zþ!÷È Ì…érTÓn¿ÚSà‘îîóWeÚ/bÊ[mdag¢ žG™'dr~¦ +ãðA[Èã3œºBì-æ.³ô)£àcºs·/á¶MÃtË‘„Í7Å–M¯4€â7z›ÔåƒÑ +ñ=c•ÊÑa˜m5ˆlD²r¿ª¹Ÿ~š¦æŠŸ—* >äÿs[ƒ +nÜŽS5ÓÚEï0÷ÔváfB‹>¯ÂC†-ð*D8Lõy==G<°"ÒÃNá.%x´´×¬ÏJ¸#B +˜æMGB“\N¹G±z²VÓ¿ã‘¿õ¥2}­gHf‹ä zê‚/|æ ,e0]Ô!’DÞ Dø$ø-- ?¯‚ú íä<µÎonFiwˆmAd»ÔMÛÒ-:ubC¨½M¥›Aw¡üR]L>Wˆ]^ˆ`¨ !®NÕ§ôåå+o,L²ì*¡ý‡ÎwÓ¾ÂqS}ï³´a´ÏÔÑ3÷N»Àž†›ïæÏõ_ˆÐT_&4¬)Ýx®Ã)-)½ü1P‘#mÝÈ 7ù(iVòBeùeÃ(­ñ‡÷<Èž£=~t­}9sT±Pé»Ê–oš,ëQì³:Ïaä͉õ­2ƒ{'ÁÊP¢©;œ‡þDz‰0îC¹™%皆ªcÒúšõØ®“*õ/â;ú›Þ 6 ±‚Þ •JÇ+ü9@“¥iÂmCʲޡœè$7œb +œúf9¹Ë,ëMc¦Ý•]†=vúiâ×Fíü[ùÓ^ýÉq.þIŽCba›5ä›C}%¶8B¸gBdèéмºÌeðɯdéCAó:ƒ¾âÒ(Zv¯‡RmpV¡KqIîB#lœ#ÔÉÓ"ø)wdùÚ‹pXbM°ÿÕyÝM#÷ÑÖ˜°@×5S| Šª¶ê û+߶ÉFÃÖ3«æÌ·Yã^PÜD9yl’ò¸ ©¡’tl5oäðx‹Èa2kýf¼EÈ3­æ¡*¢”y¼  –ñòñË猾æõåÉœÎüÛæw‰ÆuùätiÒƒÌk0);?&1¹™PÞ6ÕÝf9Íã—¬jû·îl˜fB¼%%HéƒkDYã³çD:Ùëcõ4Á¬Ž ÜF[KrU¦e0·Ó ÅËéåoËöü#ãpH݈Ìæ¦ý¾ŸÃ„=樖®íkmO_Ú6Ä~*R`”ÕXËÅíW´)LÑHð»MÙœÔÍö¦¦®AÀOƒe’"í˜xBÙã>YÆêÞãœúÆŸx¬=r6ì6ɼü“£œ´LÕCžCPIê½ðªc§{:ù[kkõö”‚Ñ2‰êŠoIü͆TÝÞ¼1 ?aN ;ÎBû:K¨,] 3!®ü!*Ï9ú•‰1Óý€w˜Š¨rƒ»ç‡ñðáš„ÕYHWÓÉz‘ü®BÜ(º v;ÑóöÁë×".Ý…¯°”¬LÈ*ØÕ:›>zìü—ñ»_«õv˜‘̯‡ÔîÅVUL-äÂuZÄ:îPª^ˆ†HKõ›³E£ðõsVq».eù“NÝVX±ZŠðaˆWÀÃê´äø0m8LDC)«JñŸ~7ÈX%:¼[tÒ?"(C»Œ·êgߊ÷‘8£¢³0 +[›ù{¢«# ’ž UJò…`ÝìýZåì&­’“Pæà/Òs³?ƒwD*ÂmZbvò¨P/|øŠœ€Ï¥9— ˜jô•‚aÿÃÎìEù¢¸HÝøò{G“ šPj‡-­þ†T*x¶/Uþ(Bôiæ†0ºêY†6ÅràýNˆ,æ‡\#)&tÌJÓ8|ŽŽæ&$ïÀ"íªœ¦;—rÊÅS²‹:D|‰uëžÆƒ Ðþ~aeîBíÅ71l(oüw±Qÿ.E–ô¿¹RrœT©:æ›:r׿XIŒ$òk*³Ñõn”GmÝ_š“™•ýºj(”ØxÎÈ NI?̶0xLþfúÍÚóäšÃõ÷³DÛs9ÔþÞYerõÂ3esCÀer!tÚ~…)£û[l€ìëC,W\·òøg?7"”­zŸy&Ÿäð²ÖìÐÃ!ô|ÖC¹HX¸CÕ:ô‹Ÿõ&o*ÞòùÇwffá§7NW3êù`-¶3Ö?GÞe“}Õ3úž·fåËa»˜<å±×x½¥ü[_Œåô&ÚÖN½u<ù’úÄåLÇמ:Ó};r‘KûÌ¢-à1*×`XaÀ®Â3^˜µ¹e¡)_\5ÄNòk¿öýˆòÌob©¶e®jo<ë9¤µSƒ>ÉJ\™þàÅݺ±Òe¸óô9žš³}cx/ÍÍ&%Z ž‚›°NÛÒ,†‘ιL‘iU9úÖ«;Ó#=éÞ‰Ká{üý|0Û&OÈtGï2~)å`Žš23cµJ@kÜ—o[òÜ8þÀ€ùnä÷ä3V¸Þ4Ä°1ž«;·µ…q¬æ 'Ï ;ê¿Ìg¼FY&º½Ÿ„~1ÞÉ;•®k +´M«á’|`1!&49Xàt÷Ep}ñ»/• Ç^eš†¬öGDûÅž¿ÆÈ…ÃÑ×ÔÄÔÐCITòlÓgËͪãf cJ\£)Jˆ’ñmAa½Ý<»ÄEû×X6 +#:ä·U–s$Ú^+]× òâÅü¾S^ZÇÈü@yàâ$O”¬¾X™k’™2I#À¤$Pa̯#µ]ÈÂC†¾&Ã¥ô¹¹Í„ª ¯Ö“²F÷[QÊÈ«œçÉ4gôâ™EßC}lÏœ’£vähp®î¨™°0íÉs¸iðXu5‚Œ–ÿ ¡m<¯ ïGg¿>Nßû}JrÍ-$ + Ï»iÀòáíßõ»G£‚ÑŸ ÓÉAñì¤[Yº]”äN1}¤§ï»«”‘é3%©¾ódx•zkªëÄ}Ù8.’ÑïÀètgW lR[Ï÷Ç’ëÑžòÖ¼„DôðÜ…¿ÉÎ?ûú¯²“´oÚòBéõÁ;¸jÝW‚ÝÓ‡ø5mr2]˜„رÇvÛ!úðÆì 5…³Ö<<É8b|ñèÈ6$×FÛõÙ9Ýö‡#\áUF˜“C9ýˆ‡f0ñMž +YW~þê1Ú>²(4"ù†‚Ξ芎ȶœTå¬Y†É¥ù$ÄkTCb5ÛDÆQF<œ´—ý‘èJã‡o€,f|ß> endobj +9781 0 obj << +/Type /Encoding +/Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 147/quotedblleft/quotedblright/bullet/endash 171/guillemotleft 177/plusminus 181/mu 187/guillemotright] +>> endobj +2085 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SYFPBV+CMMI10 +/FontDescriptor 9793 0 R +/FirstChar 60 +/LastChar 62 +/Widths 9789 0 R +>> endobj +3939 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /ZGGNQH+CMMI12 +/FontDescriptor 9795 0 R +/FirstChar 60 +/LastChar 62 +/Widths 9783 0 R +>> endobj +2650 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /SXAUKE+CMSY10 +/FontDescriptor 9797 0 R +/FirstChar 3 +/LastChar 110 +/Widths 9785 0 R +>> endobj +5291 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /LAJUWJ+CMSY7 +/FontDescriptor 9799 0 R +/FirstChar 94 +/LastChar 94 +/Widths 9780 0 R +>> endobj +2825 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /FRNIHB+CMSY8 +/FontDescriptor 9801 0 R +/FirstChar 3 +/LastChar 3 +/Widths 9784 0 R +>> endobj +2429 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /ICKJIO+NimbusMonL-Regu +/FontDescriptor 9803 0 R +/FirstChar 33 +/LastChar 177 +/Widths 9788 0 R +/Encoding 9781 0 R +>> endobj +2599 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /DORCQB+NimbusMonL-ReguObli +/FontDescriptor 9805 0 R +/FirstChar 78 +/LastChar 115 +/Widths 9786 0 R +/Encoding 9781 0 R +>> endobj +1917 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /XKTCSA+NimbusRomNo9L-Medi +/FontDescriptor 9807 0 R +/FirstChar 2 +/LastChar 150 +/Widths 9790 0 R +/Encoding 9781 0 R +>> endobj +3943 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /OPLWFH+NimbusRomNo9L-MediItal +/FontDescriptor 9809 0 R +/FirstChar 3 +/LastChar 122 +/Widths 9782 0 R +/Encoding 9781 0 R +>> endobj +1882 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /HVSXQD+NimbusRomNo9L-Regu +/FontDescriptor 9811 0 R +/FirstChar 2 +/LastChar 187 +/Widths 9791 0 R +/Encoding 9781 0 R +>> endobj +2440 0 obj << +/Type /Font +/Subtype /Type1 +/BaseFont /WBLQHI+NimbusRomNo9L-ReguItal +/FontDescriptor 9813 0 R +/FirstChar 2 +/LastChar 122 +/Widths 9787 0 R +/Encoding 9781 0 R +>> endobj +1883 0 obj << +/Type /Pages +/Count 6 +/Parent 9814 0 R +/Kids [1877 0 R 1914 0 R 1949 0 R 1981 0 R 2015 0 R 2049 0 R] +>> endobj +2086 0 obj << +/Type /Pages +/Count 6 +/Parent 9814 0 R +/Kids [2082 0 R 2119 0 R 2154 0 R 2189 0 R 2223 0 R 2258 0 R] +>> endobj +2296 0 obj << +/Type /Pages +/Count 6 +/Parent 9814 0 R +/Kids [2293 0 R 2329 0 R 2364 0 R 2399 0 R 2425 0 R 2435 0 R] +>> endobj +2447 0 obj << +/Type /Pages +/Count 6 +/Parent 9814 0 R +/Kids [2444 0 R 2453 0 R 2458 0 R 2462 0 R 2470 0 R 2477 0 R] +>> endobj +2488 0 obj << +/Type /Pages +/Count 6 +/Parent 9814 0 R +/Kids [2482 0 R 2490 0 R 2495 0 R 2500 0 R 2506 0 R 2516 0 R] +>> endobj +2530 0 obj << +/Type /Pages +/Count 6 +/Parent 9814 0 R +/Kids [2526 0 R 2543 0 R 2557 0 R 2568 0 R 2586 0 R 2594 0 R] +>> endobj +2611 0 obj << +/Type /Pages +/Count 6 +/Parent 9815 0 R +/Kids [2606 0 R 2615 0 R 2622 0 R 2627 0 R 2635 0 R 2643 0 R] +>> endobj +2652 0 obj << +/Type /Pages +/Count 6 +/Parent 9815 0 R +/Kids [2647 0 R 2656 0 R 2663 0 R 2671 0 R 2678 0 R 2682 0 R] +>> endobj +2693 0 obj << +/Type /Pages +/Count 6 +/Parent 9815 0 R +/Kids [2689 0 R 2701 0 R 2708 0 R 2715 0 R 2720 0 R 2728 0 R] +>> endobj +2737 0 obj << +/Type /Pages +/Count 6 +/Parent 9815 0 R +/Kids [2733 0 R 2739 0 R 2743 0 R 2748 0 R 2752 0 R 2757 0 R] +>> endobj +2765 0 obj << +/Type /Pages +/Count 6 +/Parent 9815 0 R +/Kids [2761 0 R 2768 0 R 2775 0 R 2781 0 R 2794 0 R 2799 0 R] +>> endobj +2812 0 obj << +/Type /Pages +/Count 6 +/Parent 9815 0 R +/Kids [2808 0 R 2814 0 R 2822 0 R 2828 0 R 2833 0 R 2841 0 R] +>> endobj +2857 0 obj << +/Type /Pages +/Count 6 +/Parent 9816 0 R +/Kids [2853 0 R 2863 0 R 2884 0 R 2930 0 R 2978 0 R 2989 0 R] +>> endobj +2998 0 obj << +/Type /Pages +/Count 6 +/Parent 9816 0 R +/Kids [2995 0 R 3006 0 R 3015 0 R 3023 0 R 3028 0 R 3033 0 R] +>> endobj +3040 0 obj << +/Type /Pages +/Count 6 +/Parent 9816 0 R +/Kids [3037 0 R 3044 0 R 3049 0 R 3056 0 R 3060 0 R 3072 0 R] +>> endobj +3087 0 obj << +/Type /Pages +/Count 6 +/Parent 9816 0 R +/Kids [3083 0 R 3094 0 R 3101 0 R 3112 0 R 3120 0 R 3128 0 R] +>> endobj +3137 0 obj << +/Type /Pages +/Count 6 +/Parent 9816 0 R +/Kids [3134 0 R 3139 0 R 3144 0 R 3151 0 R 3225 0 R 3229 0 R] +>> endobj +3289 0 obj << +/Type /Pages +/Count 6 +/Parent 9816 0 R +/Kids [3283 0 R 3305 0 R 3319 0 R 3333 0 R 3337 0 R 3346 0 R] +>> endobj +3355 0 obj << +/Type /Pages +/Count 6 +/Parent 9817 0 R +/Kids [3350 0 R 3359 0 R 3368 0 R 3381 0 R 3385 0 R 3390 0 R] +>> endobj +3397 0 obj << +/Type /Pages +/Count 6 +/Parent 9817 0 R +/Kids [3394 0 R 3399 0 R 3403 0 R 3407 0 R 3413 0 R 3420 0 R] +>> endobj +3427 0 obj << +/Type /Pages +/Count 6 +/Parent 9817 0 R +/Kids [3424 0 R 3429 0 R 3433 0 R 3440 0 R 3446 0 R 3453 0 R] +>> endobj +3463 0 obj << +/Type /Pages +/Count 6 +/Parent 9817 0 R +/Kids [3458 0 R 3467 0 R 3475 0 R 3480 0 R 3484 0 R 3488 0 R] +>> endobj +3513 0 obj << +/Type /Pages +/Count 6 +/Parent 9817 0 R +/Kids [3497 0 R 3516 0 R 3535 0 R 3559 0 R 3592 0 R 3636 0 R] +>> endobj +3669 0 obj << +/Type /Pages +/Count 6 +/Parent 9817 0 R +/Kids [3666 0 R 3730 0 R 3807 0 R 3885 0 R 3935 0 R 3960 0 R] +>> endobj +3997 0 obj << +/Type /Pages +/Count 6 +/Parent 9818 0 R +/Kids [3989 0 R 4013 0 R 4029 0 R 4049 0 R 4103 0 R 4188 0 R] +>> endobj +4257 0 obj << +/Type /Pages +/Count 6 +/Parent 9818 0 R +/Kids [4248 0 R 4276 0 R 4291 0 R 4306 0 R 4321 0 R 4336 0 R] +>> endobj +4365 0 obj << +/Type /Pages +/Count 6 +/Parent 9818 0 R +/Kids [4351 0 R 4367 0 R 4382 0 R 4409 0 R 4457 0 R 4503 0 R] +>> endobj +4537 0 obj << +/Type /Pages +/Count 6 +/Parent 9818 0 R +/Kids [4524 0 R 4549 0 R 4568 0 R 4584 0 R 4605 0 R 4628 0 R] +>> endobj +4655 0 obj << +/Type /Pages +/Count 6 +/Parent 9818 0 R +/Kids [4649 0 R 4708 0 R 4770 0 R 4831 0 R 4860 0 R 4875 0 R] +>> endobj +4904 0 obj << +/Type /Pages +/Count 6 +/Parent 9818 0 R +/Kids [4890 0 R 4906 0 R 4921 0 R 4936 0 R 4949 0 R 4963 0 R] +>> endobj +4990 0 obj << +/Type /Pages +/Count 6 +/Parent 9819 0 R +/Kids [4981 0 R 5006 0 R 5027 0 R 5055 0 R 5112 0 R 5126 0 R] +>> endobj +5155 0 obj << +/Type /Pages +/Count 6 +/Parent 9819 0 R +/Kids [5147 0 R 5161 0 R 5183 0 R 5197 0 R 5215 0 R 5235 0 R] +>> endobj +5259 0 obj << +/Type /Pages +/Count 6 +/Parent 9819 0 R +/Kids [5252 0 R 5261 0 R 5269 0 R 5277 0 R 5283 0 R 5288 0 R] +>> endobj +5313 0 obj << +/Type /Pages +/Count 6 +/Parent 9819 0 R +/Kids [5302 0 R 5333 0 R 5383 0 R 5412 0 R 5429 0 R 5442 0 R] +>> endobj +5465 0 obj << +/Type /Pages +/Count 6 +/Parent 9819 0 R +/Kids [5458 0 R 5475 0 R 5499 0 R 5514 0 R 5535 0 R 5547 0 R] +>> endobj +5586 0 obj << +/Type /Pages +/Count 6 +/Parent 9819 0 R +/Kids [5578 0 R 5627 0 R 5661 0 R 5676 0 R 5694 0 R 5710 0 R] +>> endobj +5737 0 obj << +/Type /Pages +/Count 6 +/Parent 9820 0 R +/Kids [5730 0 R 5748 0 R 5767 0 R 5782 0 R 5799 0 R 5811 0 R] +>> endobj +5826 0 obj << +/Type /Pages +/Count 6 +/Parent 9820 0 R +/Kids [5822 0 R 5848 0 R 5874 0 R 5891 0 R 5900 0 R 5910 0 R] +>> endobj +5928 0 obj << +/Type /Pages +/Count 6 +/Parent 9820 0 R +/Kids [5919 0 R 5937 0 R 5973 0 R 5994 0 R 6008 0 R 6014 0 R] +>> endobj +6022 0 obj << +/Type /Pages +/Count 6 +/Parent 9820 0 R +/Kids [6019 0 R 6027 0 R 6037 0 R 6050 0 R 6064 0 R 6071 0 R] +>> endobj +6078 0 obj << +/Type /Pages +/Count 6 +/Parent 9820 0 R +/Kids [6075 0 R 6080 0 R 6084 0 R 6088 0 R 6092 0 R 6096 0 R] +>> endobj +6103 0 obj << +/Type /Pages +/Count 6 +/Parent 9820 0 R +/Kids [6100 0 R 6105 0 R 6109 0 R 6113 0 R 6117 0 R 6121 0 R] +>> endobj +6128 0 obj << +/Type /Pages +/Count 6 +/Parent 9821 0 R +/Kids [6125 0 R 6130 0 R 6134 0 R 6151 0 R 6167 0 R 6176 0 R] +>> endobj +6194 0 obj << +/Type /Pages +/Count 6 +/Parent 9821 0 R +/Kids [6188 0 R 6198 0 R 6206 0 R 6212 0 R 6222 0 R 6263 0 R] +>> endobj +6332 0 obj << +/Type /Pages +/Count 6 +/Parent 9821 0 R +/Kids [6327 0 R 6367 0 R 6376 0 R 6385 0 R 6398 0 R 6421 0 R] +>> endobj +6444 0 obj << +/Type /Pages +/Count 6 +/Parent 9821 0 R +/Kids [6437 0 R 6459 0 R 6478 0 R 6498 0 R 6513 0 R 6532 0 R] +>> endobj +6544 0 obj << +/Type /Pages +/Count 6 +/Parent 9821 0 R +/Kids [6540 0 R 6546 0 R 6550 0 R 6554 0 R 6565 0 R 6575 0 R] +>> endobj +6598 0 obj << +/Type /Pages +/Count 6 +/Parent 9821 0 R +/Kids [6592 0 R 6606 0 R 6624 0 R 6641 0 R 6661 0 R 6679 0 R] +>> endobj +6698 0 obj << +/Type /Pages +/Count 6 +/Parent 9822 0 R +/Kids [6687 0 R 6700 0 R 6705 0 R 6715 0 R 6728 0 R 6752 0 R] +>> endobj +6767 0 obj << +/Type /Pages +/Count 6 +/Parent 9822 0 R +/Kids [6762 0 R 6770 0 R 6780 0 R 6798 0 R 6807 0 R 6817 0 R] +>> endobj +6838 0 obj << +/Type /Pages +/Count 6 +/Parent 9822 0 R +/Kids [6829 0 R 6856 0 R 6894 0 R 6926 0 R 6941 0 R 6956 0 R] +>> endobj +6979 0 obj << +/Type /Pages +/Count 6 +/Parent 9822 0 R +/Kids [6973 0 R 6989 0 R 7003 0 R 7016 0 R 7037 0 R 7043 0 R] +>> endobj +7057 0 obj << +/Type /Pages +/Count 6 +/Parent 9822 0 R +/Kids [7052 0 R 7060 0 R 7069 0 R 7076 0 R 7088 0 R 7092 0 R] +>> endobj +7100 0 obj << +/Type /Pages +/Count 6 +/Parent 9822 0 R +/Kids [7096 0 R 7102 0 R 7107 0 R 7111 0 R 7115 0 R 7119 0 R] +>> endobj +7127 0 obj << +/Type /Pages +/Count 6 +/Parent 9823 0 R +/Kids [7123 0 R 7129 0 R 7133 0 R 7138 0 R 7143 0 R 7147 0 R] +>> endobj +7158 0 obj << +/Type /Pages +/Count 6 +/Parent 9823 0 R +/Kids [7153 0 R 7161 0 R 7169 0 R 7178 0 R 7187 0 R 7200 0 R] +>> endobj +7217 0 obj << +/Type /Pages +/Count 6 +/Parent 9823 0 R +/Kids [7210 0 R 7220 0 R 7227 0 R 7232 0 R 7247 0 R 7262 0 R] +>> endobj +7276 0 obj << +/Type /Pages +/Count 6 +/Parent 9823 0 R +/Kids [7269 0 R 7282 0 R 7292 0 R 7301 0 R 7307 0 R 7314 0 R] +>> endobj +7321 0 obj << +/Type /Pages +/Count 6 +/Parent 9823 0 R +/Kids [7318 0 R 7323 0 R 7330 0 R 7344 0 R 7373 0 R 7403 0 R] +>> endobj +7422 0 obj << +/Type /Pages +/Count 6 +/Parent 9823 0 R +/Kids [7413 0 R 7424 0 R 7433 0 R 7442 0 R 7455 0 R 7494 0 R] +>> endobj +7524 0 obj << +/Type /Pages +/Count 6 +/Parent 9824 0 R +/Kids [7512 0 R 7527 0 R 7569 0 R 7626 0 R 7660 0 R 7686 0 R] +>> endobj +7721 0 obj << +/Type /Pages +/Count 6 +/Parent 9824 0 R +/Kids [7718 0 R 7723 0 R 7727 0 R 7748 0 R 7813 0 R 7832 0 R] +>> endobj +7847 0 obj << +/Type /Pages +/Count 6 +/Parent 9824 0 R +/Kids [7840 0 R 7849 0 R 7857 0 R 7866 0 R 7875 0 R 7885 0 R] +>> endobj +7917 0 obj << +/Type /Pages +/Count 6 +/Parent 9824 0 R +/Kids [7905 0 R 7947 0 R 7990 0 R 8039 0 R 8070 0 R 8121 0 R] +>> endobj +8154 0 obj << +/Type /Pages +/Count 6 +/Parent 9824 0 R +/Kids [8142 0 R 8184 0 R 8191 0 R 8195 0 R 8233 0 R 8250 0 R] +>> endobj +8257 0 obj << +/Type /Pages +/Count 6 +/Parent 9824 0 R +/Kids [8254 0 R 8259 0 R 8285 0 R 8317 0 R 8375 0 R 8427 0 R] +>> endobj +8509 0 obj << +/Type /Pages +/Count 6 +/Parent 9825 0 R +/Kids [8506 0 R 8602 0 R 8696 0 R 8790 0 R 8884 0 R 8970 0 R] +>> endobj +9036 0 obj << +/Type /Pages +/Count 6 +/Parent 9825 0 R +/Kids [9033 0 R 9091 0 R 9146 0 R 9197 0 R 9250 0 R 9312 0 R] +>> endobj +9366 0 obj << +/Type /Pages +/Count 6 +/Parent 9825 0 R +/Kids [9363 0 R 9413 0 R 9465 0 R 9523 0 R 9589 0 R 9642 0 R] +>> endobj +9696 0 obj << +/Type /Pages +/Count 3 +/Parent 9825 0 R +/Kids [9693 0 R 9763 0 R 9777 0 R] +>> endobj +9814 0 obj << +/Type /Pages +/Count 36 +/Parent 9826 0 R +/Kids [1883 0 R 2086 0 R 2296 0 R 2447 0 R 2488 0 R 2530 0 R] +>> endobj +9815 0 obj << +/Type /Pages +/Count 36 +/Parent 9826 0 R +/Kids [2611 0 R 2652 0 R 2693 0 R 2737 0 R 2765 0 R 2812 0 R] +>> endobj +9816 0 obj << +/Type /Pages +/Count 36 +/Parent 9826 0 R +/Kids [2857 0 R 2998 0 R 3040 0 R 3087 0 R 3137 0 R 3289 0 R] +>> endobj +9817 0 obj << +/Type /Pages +/Count 36 +/Parent 9826 0 R +/Kids [3355 0 R 3397 0 R 3427 0 R 3463 0 R 3513 0 R 3669 0 R] +>> endobj +9818 0 obj << +/Type /Pages +/Count 36 +/Parent 9826 0 R +/Kids [3997 0 R 4257 0 R 4365 0 R 4537 0 R 4655 0 R 4904 0 R] +>> endobj +9819 0 obj << +/Type /Pages +/Count 36 +/Parent 9826 0 R +/Kids [4990 0 R 5155 0 R 5259 0 R 5313 0 R 5465 0 R 5586 0 R] +>> endobj +9820 0 obj << +/Type /Pages +/Count 36 +/Parent 9827 0 R +/Kids [5737 0 R 5826 0 R 5928 0 R 6022 0 R 6078 0 R 6103 0 R] +>> endobj +9821 0 obj << +/Type /Pages +/Count 36 +/Parent 9827 0 R +/Kids [6128 0 R 6194 0 R 6332 0 R 6444 0 R 6544 0 R 6598 0 R] +>> endobj +9822 0 obj << +/Type /Pages +/Count 36 +/Parent 9827 0 R +/Kids [6698 0 R 6767 0 R 6838 0 R 6979 0 R 7057 0 R 7100 0 R] +>> endobj +9823 0 obj << +/Type /Pages +/Count 36 +/Parent 9827 0 R +/Kids [7127 0 R 7158 0 R 7217 0 R 7276 0 R 7321 0 R 7422 0 R] +>> endobj +9824 0 obj << +/Type /Pages +/Count 36 +/Parent 9827 0 R +/Kids [7524 0 R 7721 0 R 7847 0 R 7917 0 R 8154 0 R 8257 0 R] +>> endobj +9825 0 obj << +/Type /Pages +/Count 21 +/Parent 9827 0 R +/Kids [8509 0 R 9036 0 R 9366 0 R 9696 0 R] +>> endobj +9826 0 obj << +/Type /Pages +/Count 216 +/Parent 9828 0 R +/Kids [9814 0 R 9815 0 R 9816 0 R 9817 0 R 9818 0 R 9819 0 R] +>> endobj +9827 0 obj << +/Type /Pages +/Count 201 +/Parent 9828 0 R +/Kids [9820 0 R 9821 0 R 9822 0 R 9823 0 R 9824 0 R 9825 0 R] +>> endobj +9828 0 obj << +/Type /Pages +/Count 417 +/Kids [9826 0 R 9827 0 R] +>> endobj +9829 0 obj << +/Type /Outlines +/First 6 0 R +/Last 1134 0 R +/Count 24 +>> endobj +1874 0 obj << +/Title 1875 0 R +/A 1872 0 R +/Parent 1870 0 R +>> endobj +1870 0 obj << +/Title 1871 0 R +/A 1868 0 R +/Parent 1134 0 R +/Prev 1862 0 R +/First 1874 0 R +/Last 1874 0 R +/Count -1 +>> endobj +1866 0 obj << +/Title 1867 0 R +/A 1864 0 R +/Parent 1862 0 R +>> endobj +1862 0 obj << +/Title 1863 0 R +/A 1860 0 R +/Parent 1134 0 R +/Prev 1854 0 R +/Next 1870 0 R +/First 1866 0 R +/Last 1866 0 R +/Count -1 +>> endobj +1858 0 obj << +/Title 1859 0 R +/A 1856 0 R +/Parent 1854 0 R +>> endobj +1854 0 obj << +/Title 1855 0 R +/A 1852 0 R +/Parent 1134 0 R +/Prev 1846 0 R +/Next 1862 0 R +/First 1858 0 R +/Last 1858 0 R +/Count -1 +>> endobj +1850 0 obj << +/Title 1851 0 R +/A 1848 0 R +/Parent 1846 0 R +>> endobj +1846 0 obj << +/Title 1847 0 R +/A 1844 0 R +/Parent 1134 0 R +/Prev 1838 0 R +/Next 1854 0 R +/First 1850 0 R +/Last 1850 0 R +/Count -1 +>> endobj +1842 0 obj << +/Title 1843 0 R +/A 1840 0 R +/Parent 1838 0 R +>> endobj +1838 0 obj << +/Title 1839 0 R +/A 1836 0 R +/Parent 1134 0 R +/Prev 1830 0 R +/Next 1846 0 R +/First 1842 0 R +/Last 1842 0 R +/Count -1 +>> endobj +1834 0 obj << +/Title 1835 0 R +/A 1832 0 R +/Parent 1830 0 R +>> endobj +1830 0 obj << +/Title 1831 0 R +/A 1828 0 R +/Parent 1134 0 R +/Prev 1822 0 R +/Next 1838 0 R +/First 1834 0 R +/Last 1834 0 R +/Count -1 +>> endobj +1826 0 obj << +/Title 1827 0 R +/A 1824 0 R +/Parent 1822 0 R +>> endobj +1822 0 obj << +/Title 1823 0 R +/A 1820 0 R +/Parent 1134 0 R +/Prev 1814 0 R +/Next 1830 0 R +/First 1826 0 R +/Last 1826 0 R +/Count -1 +>> endobj +1818 0 obj << +/Title 1819 0 R +/A 1816 0 R +/Parent 1814 0 R +>> endobj +1814 0 obj << +/Title 1815 0 R +/A 1812 0 R +/Parent 1134 0 R +/Prev 1806 0 R +/Next 1822 0 R +/First 1818 0 R +/Last 1818 0 R +/Count -1 +>> endobj +1810 0 obj << +/Title 1811 0 R +/A 1808 0 R +/Parent 1806 0 R +>> endobj +1806 0 obj << +/Title 1807 0 R +/A 1804 0 R +/Parent 1134 0 R +/Prev 1798 0 R +/Next 1814 0 R +/First 1810 0 R +/Last 1810 0 R +/Count -1 +>> endobj +1802 0 obj << +/Title 1803 0 R +/A 1800 0 R +/Parent 1798 0 R +>> endobj +1798 0 obj << +/Title 1799 0 R +/A 1796 0 R +/Parent 1134 0 R +/Prev 1790 0 R +/Next 1806 0 R +/First 1802 0 R +/Last 1802 0 R +/Count -1 +>> endobj +1794 0 obj << +/Title 1795 0 R +/A 1792 0 R +/Parent 1790 0 R +>> endobj +1790 0 obj << +/Title 1791 0 R +/A 1788 0 R +/Parent 1134 0 R +/Prev 1782 0 R +/Next 1798 0 R +/First 1794 0 R +/Last 1794 0 R +/Count -1 +>> endobj +1786 0 obj << +/Title 1787 0 R +/A 1784 0 R +/Parent 1782 0 R +>> endobj +1782 0 obj << +/Title 1783 0 R +/A 1780 0 R +/Parent 1134 0 R +/Prev 1774 0 R +/Next 1790 0 R +/First 1786 0 R +/Last 1786 0 R +/Count -1 +>> endobj +1778 0 obj << +/Title 1779 0 R +/A 1776 0 R +/Parent 1774 0 R +>> endobj +1774 0 obj << +/Title 1775 0 R +/A 1772 0 R +/Parent 1134 0 R +/Prev 1766 0 R +/Next 1782 0 R +/First 1778 0 R +/Last 1778 0 R +/Count -1 +>> endobj +1770 0 obj << +/Title 1771 0 R +/A 1768 0 R +/Parent 1766 0 R +>> endobj +1766 0 obj << +/Title 1767 0 R +/A 1764 0 R +/Parent 1134 0 R +/Prev 1758 0 R +/Next 1774 0 R +/First 1770 0 R +/Last 1770 0 R +/Count -1 +>> endobj +1762 0 obj << +/Title 1763 0 R +/A 1760 0 R +/Parent 1758 0 R +>> endobj +1758 0 obj << +/Title 1759 0 R +/A 1756 0 R +/Parent 1134 0 R +/Prev 1750 0 R +/Next 1766 0 R +/First 1762 0 R +/Last 1762 0 R +/Count -1 +>> endobj +1754 0 obj << +/Title 1755 0 R +/A 1752 0 R +/Parent 1750 0 R +>> endobj +1750 0 obj << +/Title 1751 0 R +/A 1748 0 R +/Parent 1134 0 R +/Prev 1742 0 R +/Next 1758 0 R +/First 1754 0 R +/Last 1754 0 R +/Count -1 +>> endobj +1746 0 obj << +/Title 1747 0 R +/A 1744 0 R +/Parent 1742 0 R +>> endobj +1742 0 obj << +/Title 1743 0 R +/A 1740 0 R +/Parent 1134 0 R +/Prev 1734 0 R +/Next 1750 0 R +/First 1746 0 R +/Last 1746 0 R +/Count -1 +>> endobj +1738 0 obj << +/Title 1739 0 R +/A 1736 0 R +/Parent 1734 0 R +>> endobj +1734 0 obj << +/Title 1735 0 R +/A 1732 0 R +/Parent 1134 0 R +/Prev 1726 0 R +/Next 1742 0 R +/First 1738 0 R +/Last 1738 0 R +/Count -1 +>> endobj +1730 0 obj << +/Title 1731 0 R +/A 1728 0 R +/Parent 1726 0 R +>> endobj +1726 0 obj << +/Title 1727 0 R +/A 1724 0 R +/Parent 1134 0 R +/Prev 1718 0 R +/Next 1734 0 R +/First 1730 0 R +/Last 1730 0 R +/Count -1 +>> endobj +1722 0 obj << +/Title 1723 0 R +/A 1720 0 R +/Parent 1718 0 R +>> endobj +1718 0 obj << +/Title 1719 0 R +/A 1716 0 R +/Parent 1134 0 R +/Prev 1710 0 R +/Next 1726 0 R +/First 1722 0 R +/Last 1722 0 R +/Count -1 +>> endobj +1714 0 obj << +/Title 1715 0 R +/A 1712 0 R +/Parent 1710 0 R +>> endobj +1710 0 obj << +/Title 1711 0 R +/A 1708 0 R +/Parent 1134 0 R +/Prev 1702 0 R +/Next 1718 0 R +/First 1714 0 R +/Last 1714 0 R +/Count -1 +>> endobj +1706 0 obj << +/Title 1707 0 R +/A 1704 0 R +/Parent 1702 0 R +>> endobj +1702 0 obj << +/Title 1703 0 R +/A 1700 0 R +/Parent 1134 0 R +/Prev 1694 0 R +/Next 1710 0 R +/First 1706 0 R +/Last 1706 0 R +/Count -1 +>> endobj +1698 0 obj << +/Title 1699 0 R +/A 1696 0 R +/Parent 1694 0 R +>> endobj +1694 0 obj << +/Title 1695 0 R +/A 1692 0 R +/Parent 1134 0 R +/Prev 1686 0 R +/Next 1702 0 R +/First 1698 0 R +/Last 1698 0 R +/Count -1 +>> endobj +1690 0 obj << +/Title 1691 0 R +/A 1688 0 R +/Parent 1686 0 R +>> endobj +1686 0 obj << +/Title 1687 0 R +/A 1684 0 R +/Parent 1134 0 R +/Prev 1678 0 R +/Next 1694 0 R +/First 1690 0 R +/Last 1690 0 R +/Count -1 +>> endobj +1682 0 obj << +/Title 1683 0 R +/A 1680 0 R +/Parent 1678 0 R +>> endobj +1678 0 obj << +/Title 1679 0 R +/A 1676 0 R +/Parent 1134 0 R +/Prev 1670 0 R +/Next 1686 0 R +/First 1682 0 R +/Last 1682 0 R +/Count -1 +>> endobj +1674 0 obj << +/Title 1675 0 R +/A 1672 0 R +/Parent 1670 0 R +>> endobj +1670 0 obj << +/Title 1671 0 R +/A 1668 0 R +/Parent 1134 0 R +/Prev 1662 0 R +/Next 1678 0 R +/First 1674 0 R +/Last 1674 0 R +/Count -1 +>> endobj +1666 0 obj << +/Title 1667 0 R +/A 1664 0 R +/Parent 1662 0 R +>> endobj +1662 0 obj << +/Title 1663 0 R +/A 1660 0 R +/Parent 1134 0 R +/Prev 1654 0 R +/Next 1670 0 R +/First 1666 0 R +/Last 1666 0 R +/Count -1 +>> endobj +1658 0 obj << +/Title 1659 0 R +/A 1656 0 R +/Parent 1654 0 R +>> endobj +1654 0 obj << +/Title 1655 0 R +/A 1652 0 R +/Parent 1134 0 R +/Prev 1646 0 R +/Next 1662 0 R +/First 1658 0 R +/Last 1658 0 R +/Count -1 +>> endobj +1650 0 obj << +/Title 1651 0 R +/A 1648 0 R +/Parent 1646 0 R +>> endobj +1646 0 obj << +/Title 1647 0 R +/A 1644 0 R +/Parent 1134 0 R +/Prev 1638 0 R +/Next 1654 0 R +/First 1650 0 R +/Last 1650 0 R +/Count -1 +>> endobj +1642 0 obj << +/Title 1643 0 R +/A 1640 0 R +/Parent 1638 0 R +>> endobj +1638 0 obj << +/Title 1639 0 R +/A 1636 0 R +/Parent 1134 0 R +/Prev 1630 0 R +/Next 1646 0 R +/First 1642 0 R +/Last 1642 0 R +/Count -1 +>> endobj +1634 0 obj << +/Title 1635 0 R +/A 1632 0 R +/Parent 1630 0 R +>> endobj +1630 0 obj << +/Title 1631 0 R +/A 1628 0 R +/Parent 1134 0 R +/Prev 1622 0 R +/Next 1638 0 R +/First 1634 0 R +/Last 1634 0 R +/Count -1 +>> endobj +1626 0 obj << +/Title 1627 0 R +/A 1624 0 R +/Parent 1622 0 R +>> endobj +1622 0 obj << +/Title 1623 0 R +/A 1620 0 R +/Parent 1134 0 R +/Prev 1614 0 R +/Next 1630 0 R +/First 1626 0 R +/Last 1626 0 R +/Count -1 +>> endobj +1618 0 obj << +/Title 1619 0 R +/A 1616 0 R +/Parent 1614 0 R +>> endobj +1614 0 obj << +/Title 1615 0 R +/A 1612 0 R +/Parent 1134 0 R +/Prev 1606 0 R +/Next 1622 0 R +/First 1618 0 R +/Last 1618 0 R +/Count -1 +>> endobj +1610 0 obj << +/Title 1611 0 R +/A 1608 0 R +/Parent 1606 0 R +>> endobj +1606 0 obj << +/Title 1607 0 R +/A 1604 0 R +/Parent 1134 0 R +/Prev 1598 0 R +/Next 1614 0 R +/First 1610 0 R +/Last 1610 0 R +/Count -1 +>> endobj +1602 0 obj << +/Title 1603 0 R +/A 1600 0 R +/Parent 1598 0 R +>> endobj +1598 0 obj << +/Title 1599 0 R +/A 1596 0 R +/Parent 1134 0 R +/Prev 1590 0 R +/Next 1606 0 R +/First 1602 0 R +/Last 1602 0 R +/Count -1 +>> endobj +1594 0 obj << +/Title 1595 0 R +/A 1592 0 R +/Parent 1590 0 R +>> endobj +1590 0 obj << +/Title 1591 0 R +/A 1588 0 R +/Parent 1134 0 R +/Prev 1582 0 R +/Next 1598 0 R +/First 1594 0 R +/Last 1594 0 R +/Count -1 +>> endobj +1586 0 obj << +/Title 1587 0 R +/A 1584 0 R +/Parent 1582 0 R +>> endobj +1582 0 obj << +/Title 1583 0 R +/A 1580 0 R +/Parent 1134 0 R +/Prev 1574 0 R +/Next 1590 0 R +/First 1586 0 R +/Last 1586 0 R +/Count -1 +>> endobj +1578 0 obj << +/Title 1579 0 R +/A 1576 0 R +/Parent 1574 0 R +>> endobj +1574 0 obj << +/Title 1575 0 R +/A 1572 0 R +/Parent 1134 0 R +/Prev 1566 0 R +/Next 1582 0 R +/First 1578 0 R +/Last 1578 0 R +/Count -1 +>> endobj +1570 0 obj << +/Title 1571 0 R +/A 1568 0 R +/Parent 1566 0 R +>> endobj +1566 0 obj << +/Title 1567 0 R +/A 1564 0 R +/Parent 1134 0 R +/Prev 1558 0 R +/Next 1574 0 R +/First 1570 0 R +/Last 1570 0 R +/Count -1 +>> endobj +1562 0 obj << +/Title 1563 0 R +/A 1560 0 R +/Parent 1558 0 R +>> endobj +1558 0 obj << +/Title 1559 0 R +/A 1556 0 R +/Parent 1134 0 R +/Prev 1550 0 R +/Next 1566 0 R +/First 1562 0 R +/Last 1562 0 R +/Count -1 +>> endobj +1554 0 obj << +/Title 1555 0 R +/A 1552 0 R +/Parent 1550 0 R +>> endobj +1550 0 obj << +/Title 1551 0 R +/A 1548 0 R +/Parent 1134 0 R +/Prev 1542 0 R +/Next 1558 0 R +/First 1554 0 R +/Last 1554 0 R +/Count -1 +>> endobj +1546 0 obj << +/Title 1547 0 R +/A 1544 0 R +/Parent 1542 0 R +>> endobj +1542 0 obj << +/Title 1543 0 R +/A 1540 0 R +/Parent 1134 0 R +/Prev 1534 0 R +/Next 1550 0 R +/First 1546 0 R +/Last 1546 0 R +/Count -1 +>> endobj +1538 0 obj << +/Title 1539 0 R +/A 1536 0 R +/Parent 1534 0 R +>> endobj +1534 0 obj << +/Title 1535 0 R +/A 1532 0 R +/Parent 1134 0 R +/Prev 1526 0 R +/Next 1542 0 R +/First 1538 0 R +/Last 1538 0 R +/Count -1 +>> endobj +1530 0 obj << +/Title 1531 0 R +/A 1528 0 R +/Parent 1526 0 R +>> endobj +1526 0 obj << +/Title 1527 0 R +/A 1524 0 R +/Parent 1134 0 R +/Prev 1518 0 R +/Next 1534 0 R +/First 1530 0 R +/Last 1530 0 R +/Count -1 +>> endobj +1522 0 obj << +/Title 1523 0 R +/A 1520 0 R +/Parent 1518 0 R +>> endobj +1518 0 obj << +/Title 1519 0 R +/A 1516 0 R +/Parent 1134 0 R +/Prev 1510 0 R +/Next 1526 0 R +/First 1522 0 R +/Last 1522 0 R +/Count -1 +>> endobj +1514 0 obj << +/Title 1515 0 R +/A 1512 0 R +/Parent 1510 0 R +>> endobj +1510 0 obj << +/Title 1511 0 R +/A 1508 0 R +/Parent 1134 0 R +/Prev 1502 0 R +/Next 1518 0 R +/First 1514 0 R +/Last 1514 0 R +/Count -1 +>> endobj +1506 0 obj << +/Title 1507 0 R +/A 1504 0 R +/Parent 1502 0 R +>> endobj +1502 0 obj << +/Title 1503 0 R +/A 1500 0 R +/Parent 1134 0 R +/Prev 1494 0 R +/Next 1510 0 R +/First 1506 0 R +/Last 1506 0 R +/Count -1 +>> endobj +1498 0 obj << +/Title 1499 0 R +/A 1496 0 R +/Parent 1494 0 R +>> endobj +1494 0 obj << +/Title 1495 0 R +/A 1492 0 R +/Parent 1134 0 R +/Prev 1486 0 R +/Next 1502 0 R +/First 1498 0 R +/Last 1498 0 R +/Count -1 +>> endobj +1490 0 obj << +/Title 1491 0 R +/A 1488 0 R +/Parent 1486 0 R +>> endobj +1486 0 obj << +/Title 1487 0 R +/A 1484 0 R +/Parent 1134 0 R +/Prev 1478 0 R +/Next 1494 0 R +/First 1490 0 R +/Last 1490 0 R +/Count -1 +>> endobj +1482 0 obj << +/Title 1483 0 R +/A 1480 0 R +/Parent 1478 0 R +>> endobj +1478 0 obj << +/Title 1479 0 R +/A 1476 0 R +/Parent 1134 0 R +/Prev 1470 0 R +/Next 1486 0 R +/First 1482 0 R +/Last 1482 0 R +/Count -1 +>> endobj +1474 0 obj << +/Title 1475 0 R +/A 1472 0 R +/Parent 1470 0 R +>> endobj +1470 0 obj << +/Title 1471 0 R +/A 1468 0 R +/Parent 1134 0 R +/Prev 1462 0 R +/Next 1478 0 R +/First 1474 0 R +/Last 1474 0 R +/Count -1 +>> endobj +1466 0 obj << +/Title 1467 0 R +/A 1464 0 R +/Parent 1462 0 R +>> endobj +1462 0 obj << +/Title 1463 0 R +/A 1460 0 R +/Parent 1134 0 R +/Prev 1454 0 R +/Next 1470 0 R +/First 1466 0 R +/Last 1466 0 R +/Count -1 +>> endobj +1458 0 obj << +/Title 1459 0 R +/A 1456 0 R +/Parent 1454 0 R +>> endobj +1454 0 obj << +/Title 1455 0 R +/A 1452 0 R +/Parent 1134 0 R +/Prev 1446 0 R +/Next 1462 0 R +/First 1458 0 R +/Last 1458 0 R +/Count -1 +>> endobj +1450 0 obj << +/Title 1451 0 R +/A 1448 0 R +/Parent 1446 0 R +>> endobj +1446 0 obj << +/Title 1447 0 R +/A 1444 0 R +/Parent 1134 0 R +/Prev 1438 0 R +/Next 1454 0 R +/First 1450 0 R +/Last 1450 0 R +/Count -1 +>> endobj +1442 0 obj << +/Title 1443 0 R +/A 1440 0 R +/Parent 1438 0 R +>> endobj +1438 0 obj << +/Title 1439 0 R +/A 1436 0 R +/Parent 1134 0 R +/Prev 1430 0 R +/Next 1446 0 R +/First 1442 0 R +/Last 1442 0 R +/Count -1 +>> endobj +1434 0 obj << +/Title 1435 0 R +/A 1432 0 R +/Parent 1430 0 R +>> endobj +1430 0 obj << +/Title 1431 0 R +/A 1428 0 R +/Parent 1134 0 R +/Prev 1418 0 R +/Next 1438 0 R +/First 1434 0 R +/Last 1434 0 R +/Count -1 +>> endobj +1426 0 obj << +/Title 1427 0 R +/A 1424 0 R +/Parent 1418 0 R +/Prev 1422 0 R +>> endobj +1422 0 obj << +/Title 1423 0 R +/A 1420 0 R +/Parent 1418 0 R +/Next 1426 0 R +>> endobj +1418 0 obj << +/Title 1419 0 R +/A 1416 0 R +/Parent 1134 0 R +/Prev 1406 0 R +/Next 1430 0 R +/First 1422 0 R +/Last 1426 0 R +/Count -2 +>> endobj +1414 0 obj << +/Title 1415 0 R +/A 1412 0 R +/Parent 1406 0 R +/Prev 1410 0 R +>> endobj +1410 0 obj << +/Title 1411 0 R +/A 1408 0 R +/Parent 1406 0 R +/Next 1414 0 R +>> endobj +1406 0 obj << +/Title 1407 0 R +/A 1404 0 R +/Parent 1134 0 R +/Prev 1398 0 R +/Next 1418 0 R +/First 1410 0 R +/Last 1414 0 R +/Count -2 +>> endobj +1402 0 obj << +/Title 1403 0 R +/A 1400 0 R +/Parent 1398 0 R +>> endobj +1398 0 obj << +/Title 1399 0 R +/A 1396 0 R +/Parent 1134 0 R +/Prev 1390 0 R +/Next 1406 0 R +/First 1402 0 R +/Last 1402 0 R +/Count -1 +>> endobj +1394 0 obj << +/Title 1395 0 R +/A 1392 0 R +/Parent 1390 0 R +>> endobj +1390 0 obj << +/Title 1391 0 R +/A 1388 0 R +/Parent 1134 0 R +/Prev 1382 0 R +/Next 1398 0 R +/First 1394 0 R +/Last 1394 0 R +/Count -1 +>> endobj +1386 0 obj << +/Title 1387 0 R +/A 1384 0 R +/Parent 1382 0 R +>> endobj +1382 0 obj << +/Title 1383 0 R +/A 1380 0 R +/Parent 1134 0 R +/Prev 1374 0 R +/Next 1390 0 R +/First 1386 0 R +/Last 1386 0 R +/Count -1 +>> endobj +1378 0 obj << +/Title 1379 0 R +/A 1376 0 R +/Parent 1374 0 R +>> endobj +1374 0 obj << +/Title 1375 0 R +/A 1372 0 R +/Parent 1134 0 R +/Prev 1366 0 R +/Next 1382 0 R +/First 1378 0 R +/Last 1378 0 R +/Count -1 +>> endobj +1370 0 obj << +/Title 1371 0 R +/A 1368 0 R +/Parent 1366 0 R +>> endobj +1366 0 obj << +/Title 1367 0 R +/A 1364 0 R +/Parent 1134 0 R +/Prev 1358 0 R +/Next 1374 0 R +/First 1370 0 R +/Last 1370 0 R +/Count -1 +>> endobj +1362 0 obj << +/Title 1363 0 R +/A 1360 0 R +/Parent 1358 0 R +>> endobj +1358 0 obj << +/Title 1359 0 R +/A 1356 0 R +/Parent 1134 0 R +/Prev 1350 0 R +/Next 1366 0 R +/First 1362 0 R +/Last 1362 0 R +/Count -1 +>> endobj +1354 0 obj << +/Title 1355 0 R +/A 1352 0 R +/Parent 1350 0 R +>> endobj +1350 0 obj << +/Title 1351 0 R +/A 1348 0 R +/Parent 1134 0 R +/Prev 1342 0 R +/Next 1358 0 R +/First 1354 0 R +/Last 1354 0 R +/Count -1 +>> endobj +1346 0 obj << +/Title 1347 0 R +/A 1344 0 R +/Parent 1342 0 R +>> endobj +1342 0 obj << +/Title 1343 0 R +/A 1340 0 R +/Parent 1134 0 R +/Prev 1334 0 R +/Next 1350 0 R +/First 1346 0 R +/Last 1346 0 R +/Count -1 +>> endobj +1338 0 obj << +/Title 1339 0 R +/A 1336 0 R +/Parent 1334 0 R +>> endobj +1334 0 obj << +/Title 1335 0 R +/A 1332 0 R +/Parent 1134 0 R +/Prev 1326 0 R +/Next 1342 0 R +/First 1338 0 R +/Last 1338 0 R +/Count -1 +>> endobj +1330 0 obj << +/Title 1331 0 R +/A 1328 0 R +/Parent 1326 0 R +>> endobj +1326 0 obj << +/Title 1327 0 R +/A 1324 0 R +/Parent 1134 0 R +/Prev 1318 0 R +/Next 1334 0 R +/First 1330 0 R +/Last 1330 0 R +/Count -1 +>> endobj +1322 0 obj << +/Title 1323 0 R +/A 1320 0 R +/Parent 1318 0 R +>> endobj +1318 0 obj << +/Title 1319 0 R +/A 1316 0 R +/Parent 1134 0 R +/Prev 1310 0 R +/Next 1326 0 R +/First 1322 0 R +/Last 1322 0 R +/Count -1 +>> endobj +1314 0 obj << +/Title 1315 0 R +/A 1312 0 R +/Parent 1310 0 R +>> endobj +1310 0 obj << +/Title 1311 0 R +/A 1308 0 R +/Parent 1134 0 R +/Prev 1302 0 R +/Next 1318 0 R +/First 1314 0 R +/Last 1314 0 R +/Count -1 +>> endobj +1306 0 obj << +/Title 1307 0 R +/A 1304 0 R +/Parent 1302 0 R +>> endobj +1302 0 obj << +/Title 1303 0 R +/A 1300 0 R +/Parent 1134 0 R +/Prev 1294 0 R +/Next 1310 0 R +/First 1306 0 R +/Last 1306 0 R +/Count -1 +>> endobj +1298 0 obj << +/Title 1299 0 R +/A 1296 0 R +/Parent 1294 0 R +>> endobj +1294 0 obj << +/Title 1295 0 R +/A 1292 0 R +/Parent 1134 0 R +/Prev 1286 0 R +/Next 1302 0 R +/First 1298 0 R +/Last 1298 0 R +/Count -1 +>> endobj +1290 0 obj << +/Title 1291 0 R +/A 1288 0 R +/Parent 1286 0 R +>> endobj +1286 0 obj << +/Title 1287 0 R +/A 1284 0 R +/Parent 1134 0 R +/Prev 1278 0 R +/Next 1294 0 R +/First 1290 0 R +/Last 1290 0 R +/Count -1 +>> endobj +1282 0 obj << +/Title 1283 0 R +/A 1280 0 R +/Parent 1278 0 R +>> endobj +1278 0 obj << +/Title 1279 0 R +/A 1276 0 R +/Parent 1134 0 R +/Prev 1270 0 R +/Next 1286 0 R +/First 1282 0 R +/Last 1282 0 R +/Count -1 +>> endobj +1274 0 obj << +/Title 1275 0 R +/A 1272 0 R +/Parent 1270 0 R +>> endobj +1270 0 obj << +/Title 1271 0 R +/A 1268 0 R +/Parent 1134 0 R +/Prev 1262 0 R +/Next 1278 0 R +/First 1274 0 R +/Last 1274 0 R +/Count -1 +>> endobj +1266 0 obj << +/Title 1267 0 R +/A 1264 0 R +/Parent 1262 0 R +>> endobj +1262 0 obj << +/Title 1263 0 R +/A 1260 0 R +/Parent 1134 0 R +/Prev 1254 0 R +/Next 1270 0 R +/First 1266 0 R +/Last 1266 0 R +/Count -1 +>> endobj +1258 0 obj << +/Title 1259 0 R +/A 1256 0 R +/Parent 1254 0 R +>> endobj +1254 0 obj << +/Title 1255 0 R +/A 1252 0 R +/Parent 1134 0 R +/Prev 1246 0 R +/Next 1262 0 R +/First 1258 0 R +/Last 1258 0 R +/Count -1 +>> endobj +1250 0 obj << +/Title 1251 0 R +/A 1248 0 R +/Parent 1246 0 R +>> endobj +1246 0 obj << +/Title 1247 0 R +/A 1244 0 R +/Parent 1134 0 R +/Prev 1238 0 R +/Next 1254 0 R +/First 1250 0 R +/Last 1250 0 R +/Count -1 +>> endobj +1242 0 obj << +/Title 1243 0 R +/A 1240 0 R +/Parent 1238 0 R +>> endobj +1238 0 obj << +/Title 1239 0 R +/A 1236 0 R +/Parent 1134 0 R +/Prev 1230 0 R +/Next 1246 0 R +/First 1242 0 R +/Last 1242 0 R +/Count -1 +>> endobj +1234 0 obj << +/Title 1235 0 R +/A 1232 0 R +/Parent 1230 0 R +>> endobj +1230 0 obj << +/Title 1231 0 R +/A 1228 0 R +/Parent 1134 0 R +/Prev 1222 0 R +/Next 1238 0 R +/First 1234 0 R +/Last 1234 0 R +/Count -1 +>> endobj +1226 0 obj << +/Title 1227 0 R +/A 1224 0 R +/Parent 1222 0 R +>> endobj +1222 0 obj << +/Title 1223 0 R +/A 1220 0 R +/Parent 1134 0 R +/Prev 1214 0 R +/Next 1230 0 R +/First 1226 0 R +/Last 1226 0 R +/Count -1 +>> endobj +1218 0 obj << +/Title 1219 0 R +/A 1216 0 R +/Parent 1214 0 R +>> endobj +1214 0 obj << +/Title 1215 0 R +/A 1212 0 R +/Parent 1134 0 R +/Prev 1206 0 R +/Next 1222 0 R +/First 1218 0 R +/Last 1218 0 R +/Count -1 +>> endobj +1210 0 obj << +/Title 1211 0 R +/A 1208 0 R +/Parent 1206 0 R +>> endobj +1206 0 obj << +/Title 1207 0 R +/A 1204 0 R +/Parent 1134 0 R +/Prev 1198 0 R +/Next 1214 0 R +/First 1210 0 R +/Last 1210 0 R +/Count -1 +>> endobj +1202 0 obj << +/Title 1203 0 R +/A 1200 0 R +/Parent 1198 0 R +>> endobj +1198 0 obj << +/Title 1199 0 R +/A 1196 0 R +/Parent 1134 0 R +/Prev 1190 0 R +/Next 1206 0 R +/First 1202 0 R +/Last 1202 0 R +/Count -1 +>> endobj +1194 0 obj << +/Title 1195 0 R +/A 1192 0 R +/Parent 1190 0 R +>> endobj +1190 0 obj << +/Title 1191 0 R +/A 1188 0 R +/Parent 1134 0 R +/Prev 1182 0 R +/Next 1198 0 R +/First 1194 0 R +/Last 1194 0 R +/Count -1 +>> endobj +1186 0 obj << +/Title 1187 0 R +/A 1184 0 R +/Parent 1182 0 R +>> endobj +1182 0 obj << +/Title 1183 0 R +/A 1180 0 R +/Parent 1134 0 R +/Prev 1170 0 R +/Next 1190 0 R +/First 1186 0 R +/Last 1186 0 R +/Count -1 +>> endobj +1178 0 obj << +/Title 1179 0 R +/A 1176 0 R +/Parent 1170 0 R +/Prev 1174 0 R +>> endobj +1174 0 obj << +/Title 1175 0 R +/A 1172 0 R +/Parent 1170 0 R +/Next 1178 0 R +>> endobj +1170 0 obj << +/Title 1171 0 R +/A 1168 0 R +/Parent 1134 0 R +/Prev 1162 0 R +/Next 1182 0 R +/First 1174 0 R +/Last 1178 0 R +/Count -2 +>> endobj +1166 0 obj << +/Title 1167 0 R +/A 1164 0 R +/Parent 1162 0 R +>> endobj +1162 0 obj << +/Title 1163 0 R +/A 1160 0 R +/Parent 1134 0 R +/Prev 1154 0 R +/Next 1170 0 R +/First 1166 0 R +/Last 1166 0 R +/Count -1 +>> endobj +1158 0 obj << +/Title 1159 0 R +/A 1156 0 R +/Parent 1154 0 R +>> endobj +1154 0 obj << +/Title 1155 0 R +/A 1152 0 R +/Parent 1134 0 R +/Prev 1146 0 R +/Next 1162 0 R +/First 1158 0 R +/Last 1158 0 R +/Count -1 +>> endobj +1150 0 obj << +/Title 1151 0 R +/A 1148 0 R +/Parent 1146 0 R +>> endobj +1146 0 obj << +/Title 1147 0 R +/A 1144 0 R +/Parent 1134 0 R +/Prev 1138 0 R +/Next 1154 0 R +/First 1150 0 R +/Last 1150 0 R +/Count -1 +>> endobj +1142 0 obj << +/Title 1143 0 R +/A 1140 0 R +/Parent 1138 0 R +>> endobj +1138 0 obj << +/Title 1139 0 R +/A 1136 0 R +/Parent 1134 0 R +/Next 1146 0 R +/First 1142 0 R +/Last 1142 0 R +/Count -1 +>> endobj +1134 0 obj << +/Title 1135 0 R +/A 1132 0 R +/Parent 9829 0 R +/Prev 1106 0 R +/First 1138 0 R +/Last 1870 0 R +/Count -91 +>> endobj +1130 0 obj << +/Title 1131 0 R +/A 1128 0 R +/Parent 1122 0 R +/Prev 1126 0 R +>> endobj +1126 0 obj << +/Title 1127 0 R +/A 1124 0 R +/Parent 1122 0 R +/Next 1130 0 R +>> endobj +1122 0 obj << +/Title 1123 0 R +/A 1120 0 R +/Parent 1106 0 R +/Prev 1110 0 R +/First 1126 0 R +/Last 1130 0 R +/Count -2 +>> endobj +1118 0 obj << +/Title 1119 0 R +/A 1116 0 R +/Parent 1110 0 R +/Prev 1114 0 R +>> endobj +1114 0 obj << +/Title 1115 0 R +/A 1112 0 R +/Parent 1110 0 R +/Next 1118 0 R +>> endobj +1110 0 obj << +/Title 1111 0 R +/A 1108 0 R +/Parent 1106 0 R +/Next 1122 0 R +/First 1114 0 R +/Last 1118 0 R +/Count -2 +>> endobj +1106 0 obj << +/Title 1107 0 R +/A 1104 0 R +/Parent 9829 0 R +/Prev 590 0 R +/Next 1134 0 R +/First 1110 0 R +/Last 1122 0 R +/Count -2 +>> endobj +1102 0 obj << +/Title 1103 0 R +/A 1100 0 R +/Parent 1090 0 R +/Prev 1098 0 R +>> endobj +1098 0 obj << +/Title 1099 0 R +/A 1096 0 R +/Parent 1090 0 R +/Prev 1094 0 R +/Next 1102 0 R +>> endobj +1094 0 obj << +/Title 1095 0 R +/A 1092 0 R +/Parent 1090 0 R +/Next 1098 0 R +>> endobj +1090 0 obj << +/Title 1091 0 R +/A 1088 0 R +/Parent 590 0 R +/Prev 1070 0 R +/First 1094 0 R +/Last 1102 0 R +/Count -3 +>> endobj +1086 0 obj << +/Title 1087 0 R +/A 1084 0 R +/Parent 1070 0 R +/Prev 1082 0 R +>> endobj +1082 0 obj << +/Title 1083 0 R +/A 1080 0 R +/Parent 1070 0 R +/Prev 1078 0 R +/Next 1086 0 R +>> endobj +1078 0 obj << +/Title 1079 0 R +/A 1076 0 R +/Parent 1070 0 R +/Prev 1074 0 R +/Next 1082 0 R +>> endobj +1074 0 obj << +/Title 1075 0 R +/A 1072 0 R +/Parent 1070 0 R +/Next 1078 0 R +>> endobj +1070 0 obj << +/Title 1071 0 R +/A 1068 0 R +/Parent 590 0 R +/Prev 1050 0 R +/Next 1090 0 R +/First 1074 0 R +/Last 1086 0 R +/Count -4 +>> endobj +1066 0 obj << +/Title 1067 0 R +/A 1064 0 R +/Parent 1050 0 R +/Prev 1062 0 R +>> endobj +1062 0 obj << +/Title 1063 0 R +/A 1060 0 R +/Parent 1050 0 R +/Prev 1058 0 R +/Next 1066 0 R +>> endobj +1058 0 obj << +/Title 1059 0 R +/A 1056 0 R +/Parent 1050 0 R +/Prev 1054 0 R +/Next 1062 0 R +>> endobj +1054 0 obj << +/Title 1055 0 R +/A 1052 0 R +/Parent 1050 0 R +/Next 1058 0 R +>> endobj +1050 0 obj << +/Title 1051 0 R +/A 1048 0 R +/Parent 590 0 R +/Prev 1014 0 R +/Next 1070 0 R +/First 1054 0 R +/Last 1066 0 R +/Count -4 +>> endobj +1046 0 obj << +/Title 1047 0 R +/A 1044 0 R +/Parent 1014 0 R +/Prev 1042 0 R +>> endobj +1042 0 obj << +/Title 1043 0 R +/A 1040 0 R +/Parent 1014 0 R +/Prev 1038 0 R +/Next 1046 0 R +>> endobj +1038 0 obj << +/Title 1039 0 R +/A 1036 0 R +/Parent 1014 0 R +/Prev 1034 0 R +/Next 1042 0 R +>> endobj +1034 0 obj << +/Title 1035 0 R +/A 1032 0 R +/Parent 1014 0 R +/Prev 1030 0 R +/Next 1038 0 R +>> endobj +1030 0 obj << +/Title 1031 0 R +/A 1028 0 R +/Parent 1014 0 R +/Prev 1026 0 R +/Next 1034 0 R +>> endobj +1026 0 obj << +/Title 1027 0 R +/A 1024 0 R +/Parent 1014 0 R +/Prev 1022 0 R +/Next 1030 0 R +>> endobj +1022 0 obj << +/Title 1023 0 R +/A 1020 0 R +/Parent 1014 0 R +/Prev 1018 0 R +/Next 1026 0 R +>> endobj +1018 0 obj << +/Title 1019 0 R +/A 1016 0 R +/Parent 1014 0 R +/Next 1022 0 R +>> endobj +1014 0 obj << +/Title 1015 0 R +/A 1012 0 R +/Parent 590 0 R +/Prev 998 0 R +/Next 1050 0 R +/First 1018 0 R +/Last 1046 0 R +/Count -8 +>> endobj +1010 0 obj << +/Title 1011 0 R +/A 1008 0 R +/Parent 998 0 R +/Prev 1006 0 R +>> endobj +1006 0 obj << +/Title 1007 0 R +/A 1004 0 R +/Parent 998 0 R +/Prev 1002 0 R +/Next 1010 0 R +>> endobj +1002 0 obj << +/Title 1003 0 R +/A 1000 0 R +/Parent 998 0 R +/Next 1006 0 R +>> endobj +998 0 obj << +/Title 999 0 R +/A 996 0 R +/Parent 590 0 R +/Prev 990 0 R +/Next 1014 0 R +/First 1002 0 R +/Last 1010 0 R +/Count -3 +>> endobj +994 0 obj << +/Title 995 0 R +/A 992 0 R +/Parent 990 0 R +>> endobj +990 0 obj << +/Title 991 0 R +/A 988 0 R +/Parent 590 0 R +/Prev 986 0 R +/Next 998 0 R +/First 994 0 R +/Last 994 0 R +/Count -1 +>> endobj +986 0 obj << +/Title 987 0 R +/A 984 0 R +/Parent 590 0 R +/Prev 970 0 R +/Next 990 0 R +>> endobj +982 0 obj << +/Title 983 0 R +/A 980 0 R +/Parent 970 0 R +/Prev 978 0 R +>> endobj +978 0 obj << +/Title 979 0 R +/A 976 0 R +/Parent 970 0 R +/Prev 974 0 R +/Next 982 0 R +>> endobj +974 0 obj << +/Title 975 0 R +/A 972 0 R +/Parent 970 0 R +/Next 978 0 R +>> endobj +970 0 obj << +/Title 971 0 R +/A 968 0 R +/Parent 590 0 R +/Prev 958 0 R +/Next 986 0 R +/First 974 0 R +/Last 982 0 R +/Count -3 +>> endobj +966 0 obj << +/Title 967 0 R +/A 964 0 R +/Parent 958 0 R +/Prev 962 0 R +>> endobj +962 0 obj << +/Title 963 0 R +/A 960 0 R +/Parent 958 0 R +/Next 966 0 R +>> endobj +958 0 obj << +/Title 959 0 R +/A 956 0 R +/Parent 590 0 R +/Prev 946 0 R +/Next 970 0 R +/First 962 0 R +/Last 966 0 R +/Count -2 +>> endobj +954 0 obj << +/Title 955 0 R +/A 952 0 R +/Parent 946 0 R +/Prev 950 0 R +>> endobj +950 0 obj << +/Title 951 0 R +/A 948 0 R +/Parent 946 0 R +/Next 954 0 R +>> endobj +946 0 obj << +/Title 947 0 R +/A 944 0 R +/Parent 590 0 R +/Prev 934 0 R +/Next 958 0 R +/First 950 0 R +/Last 954 0 R +/Count -2 +>> endobj +942 0 obj << +/Title 943 0 R +/A 940 0 R +/Parent 934 0 R +/Prev 938 0 R +>> endobj +938 0 obj << +/Title 939 0 R +/A 936 0 R +/Parent 934 0 R +/Next 942 0 R +>> endobj +934 0 obj << +/Title 935 0 R +/A 932 0 R +/Parent 590 0 R +/Prev 922 0 R +/Next 946 0 R +/First 938 0 R +/Last 942 0 R +/Count -2 +>> endobj +930 0 obj << +/Title 931 0 R +/A 928 0 R +/Parent 922 0 R +/Prev 926 0 R +>> endobj +926 0 obj << +/Title 927 0 R +/A 924 0 R +/Parent 922 0 R +/Next 930 0 R +>> endobj +922 0 obj << +/Title 923 0 R +/A 920 0 R +/Parent 590 0 R +/Prev 910 0 R +/Next 934 0 R +/First 926 0 R +/Last 930 0 R +/Count -2 +>> endobj +918 0 obj << +/Title 919 0 R +/A 916 0 R +/Parent 910 0 R +/Prev 914 0 R +>> endobj +914 0 obj << +/Title 915 0 R +/A 912 0 R +/Parent 910 0 R +/Next 918 0 R +>> endobj +910 0 obj << +/Title 911 0 R +/A 908 0 R +/Parent 590 0 R +/Prev 898 0 R +/Next 922 0 R +/First 914 0 R +/Last 918 0 R +/Count -2 +>> endobj +906 0 obj << +/Title 907 0 R +/A 904 0 R +/Parent 898 0 R +/Prev 902 0 R +>> endobj +902 0 obj << +/Title 903 0 R +/A 900 0 R +/Parent 898 0 R +/Next 906 0 R +>> endobj +898 0 obj << +/Title 899 0 R +/A 896 0 R +/Parent 590 0 R +/Prev 886 0 R +/Next 910 0 R +/First 902 0 R +/Last 906 0 R +/Count -2 +>> endobj +894 0 obj << +/Title 895 0 R +/A 892 0 R +/Parent 886 0 R +/Prev 890 0 R +>> endobj +890 0 obj << +/Title 891 0 R +/A 888 0 R +/Parent 886 0 R +/Next 894 0 R +>> endobj +886 0 obj << +/Title 887 0 R +/A 884 0 R +/Parent 590 0 R +/Prev 874 0 R +/Next 898 0 R +/First 890 0 R +/Last 894 0 R +/Count -2 +>> endobj +882 0 obj << +/Title 883 0 R +/A 880 0 R +/Parent 874 0 R +/Prev 878 0 R +>> endobj +878 0 obj << +/Title 879 0 R +/A 876 0 R +/Parent 874 0 R +/Next 882 0 R +>> endobj +874 0 obj << +/Title 875 0 R +/A 872 0 R +/Parent 590 0 R +/Prev 862 0 R +/Next 886 0 R +/First 878 0 R +/Last 882 0 R +/Count -2 +>> endobj +870 0 obj << +/Title 871 0 R +/A 868 0 R +/Parent 862 0 R +/Prev 866 0 R +>> endobj +866 0 obj << +/Title 867 0 R +/A 864 0 R +/Parent 862 0 R +/Next 870 0 R +>> endobj +862 0 obj << +/Title 863 0 R +/A 860 0 R +/Parent 590 0 R +/Prev 850 0 R +/Next 874 0 R +/First 866 0 R +/Last 870 0 R +/Count -2 +>> endobj +858 0 obj << +/Title 859 0 R +/A 856 0 R +/Parent 850 0 R +/Prev 854 0 R +>> endobj +854 0 obj << +/Title 855 0 R +/A 852 0 R +/Parent 850 0 R +/Next 858 0 R +>> endobj +850 0 obj << +/Title 851 0 R +/A 848 0 R +/Parent 590 0 R +/Prev 838 0 R +/Next 862 0 R +/First 854 0 R +/Last 858 0 R +/Count -2 +>> endobj +846 0 obj << +/Title 847 0 R +/A 844 0 R +/Parent 838 0 R +/Prev 842 0 R +>> endobj +842 0 obj << +/Title 843 0 R +/A 840 0 R +/Parent 838 0 R +/Next 846 0 R +>> endobj +838 0 obj << +/Title 839 0 R +/A 836 0 R +/Parent 590 0 R +/Prev 834 0 R +/Next 850 0 R +/First 842 0 R +/Last 846 0 R +/Count -2 +>> endobj +834 0 obj << +/Title 835 0 R +/A 832 0 R +/Parent 590 0 R +/Prev 830 0 R +/Next 838 0 R +>> endobj +830 0 obj << +/Title 831 0 R +/A 828 0 R +/Parent 590 0 R +/Prev 810 0 R +/Next 834 0 R +>> endobj +826 0 obj << +/Title 827 0 R +/A 824 0 R +/Parent 810 0 R +/Prev 822 0 R +>> endobj +822 0 obj << +/Title 823 0 R +/A 820 0 R +/Parent 810 0 R +/Prev 818 0 R +/Next 826 0 R +>> endobj +818 0 obj << +/Title 819 0 R +/A 816 0 R +/Parent 810 0 R +/Prev 814 0 R +/Next 822 0 R +>> endobj +814 0 obj << +/Title 815 0 R +/A 812 0 R +/Parent 810 0 R +/Next 818 0 R +>> endobj +810 0 obj << +/Title 811 0 R +/A 808 0 R +/Parent 590 0 R +/Prev 806 0 R +/Next 830 0 R +/First 814 0 R +/Last 826 0 R +/Count -4 +>> endobj +806 0 obj << +/Title 807 0 R +/A 804 0 R +/Parent 590 0 R +/Prev 802 0 R +/Next 810 0 R +>> endobj +802 0 obj << +/Title 803 0 R +/A 800 0 R +/Parent 590 0 R +/Prev 790 0 R +/Next 806 0 R +>> endobj +798 0 obj << +/Title 799 0 R +/A 796 0 R +/Parent 790 0 R +/Prev 794 0 R +>> endobj +794 0 obj << +/Title 795 0 R +/A 792 0 R +/Parent 790 0 R +/Next 798 0 R +>> endobj +790 0 obj << +/Title 791 0 R +/A 788 0 R +/Parent 590 0 R +/Prev 786 0 R +/Next 802 0 R +/First 794 0 R +/Last 798 0 R +/Count -2 +>> endobj +786 0 obj << +/Title 787 0 R +/A 784 0 R +/Parent 590 0 R +/Prev 770 0 R +/Next 790 0 R +>> endobj +782 0 obj << +/Title 783 0 R +/A 780 0 R +/Parent 770 0 R +/Prev 778 0 R +>> endobj +778 0 obj << +/Title 779 0 R +/A 776 0 R +/Parent 770 0 R +/Prev 774 0 R +/Next 782 0 R +>> endobj +774 0 obj << +/Title 775 0 R +/A 772 0 R +/Parent 770 0 R +/Next 778 0 R +>> endobj +770 0 obj << +/Title 771 0 R +/A 768 0 R +/Parent 590 0 R +/Prev 758 0 R +/Next 786 0 R +/First 774 0 R +/Last 782 0 R +/Count -3 +>> endobj +766 0 obj << +/Title 767 0 R +/A 764 0 R +/Parent 758 0 R +/Prev 762 0 R +>> endobj +762 0 obj << +/Title 763 0 R +/A 760 0 R +/Parent 758 0 R +/Next 766 0 R +>> endobj +758 0 obj << +/Title 759 0 R +/A 756 0 R +/Parent 590 0 R +/Prev 742 0 R +/Next 770 0 R +/First 762 0 R +/Last 766 0 R +/Count -2 +>> endobj +754 0 obj << +/Title 755 0 R +/A 752 0 R +/Parent 742 0 R +/Prev 750 0 R +>> endobj +750 0 obj << +/Title 751 0 R +/A 748 0 R +/Parent 742 0 R +/Prev 746 0 R +/Next 754 0 R +>> endobj +746 0 obj << +/Title 747 0 R +/A 744 0 R +/Parent 742 0 R +/Next 750 0 R +>> endobj +742 0 obj << +/Title 743 0 R +/A 740 0 R +/Parent 590 0 R +/Prev 718 0 R +/Next 758 0 R +/First 746 0 R +/Last 754 0 R +/Count -3 +>> endobj +738 0 obj << +/Title 739 0 R +/A 736 0 R +/Parent 718 0 R +/Prev 734 0 R +>> endobj +734 0 obj << +/Title 735 0 R +/A 732 0 R +/Parent 718 0 R +/Prev 730 0 R +/Next 738 0 R +>> endobj +730 0 obj << +/Title 731 0 R +/A 728 0 R +/Parent 718 0 R +/Prev 726 0 R +/Next 734 0 R +>> endobj +726 0 obj << +/Title 727 0 R +/A 724 0 R +/Parent 718 0 R +/Prev 722 0 R +/Next 730 0 R +>> endobj +722 0 obj << +/Title 723 0 R +/A 720 0 R +/Parent 718 0 R +/Next 726 0 R +>> endobj +718 0 obj << +/Title 719 0 R +/A 716 0 R +/Parent 590 0 R +/Prev 702 0 R +/Next 742 0 R +/First 722 0 R +/Last 738 0 R +/Count -5 +>> endobj +714 0 obj << +/Title 715 0 R +/A 712 0 R +/Parent 702 0 R +/Prev 710 0 R +>> endobj +710 0 obj << +/Title 711 0 R +/A 708 0 R +/Parent 702 0 R +/Prev 706 0 R +/Next 714 0 R +>> endobj +706 0 obj << +/Title 707 0 R +/A 704 0 R +/Parent 702 0 R +/Next 710 0 R +>> endobj +702 0 obj << +/Title 703 0 R +/A 700 0 R +/Parent 590 0 R +/Prev 686 0 R +/Next 718 0 R +/First 706 0 R +/Last 714 0 R +/Count -3 +>> endobj +698 0 obj << +/Title 699 0 R +/A 696 0 R +/Parent 686 0 R +/Prev 694 0 R +>> endobj +694 0 obj << +/Title 695 0 R +/A 692 0 R +/Parent 686 0 R +/Prev 690 0 R +/Next 698 0 R +>> endobj +690 0 obj << +/Title 691 0 R +/A 688 0 R +/Parent 686 0 R +/Next 694 0 R +>> endobj +686 0 obj << +/Title 687 0 R +/A 684 0 R +/Parent 590 0 R +/Prev 674 0 R +/Next 702 0 R +/First 690 0 R +/Last 698 0 R +/Count -3 +>> endobj +682 0 obj << +/Title 683 0 R +/A 680 0 R +/Parent 674 0 R +/Prev 678 0 R +>> endobj +678 0 obj << +/Title 679 0 R +/A 676 0 R +/Parent 674 0 R +/Next 682 0 R +>> endobj +674 0 obj << +/Title 675 0 R +/A 672 0 R +/Parent 590 0 R +/Prev 658 0 R +/Next 686 0 R +/First 678 0 R +/Last 682 0 R +/Count -2 +>> endobj +670 0 obj << +/Title 671 0 R +/A 668 0 R +/Parent 658 0 R +/Prev 666 0 R +>> endobj +666 0 obj << +/Title 667 0 R +/A 664 0 R +/Parent 658 0 R +/Prev 662 0 R +/Next 670 0 R +>> endobj +662 0 obj << +/Title 663 0 R +/A 660 0 R +/Parent 658 0 R +/Next 666 0 R +>> endobj +658 0 obj << +/Title 659 0 R +/A 656 0 R +/Parent 590 0 R +/Prev 642 0 R +/Next 674 0 R +/First 662 0 R +/Last 670 0 R +/Count -3 +>> endobj +654 0 obj << +/Title 655 0 R +/A 652 0 R +/Parent 642 0 R +/Prev 650 0 R +>> endobj +650 0 obj << +/Title 651 0 R +/A 648 0 R +/Parent 642 0 R +/Prev 646 0 R +/Next 654 0 R +>> endobj +646 0 obj << +/Title 647 0 R +/A 644 0 R +/Parent 642 0 R +/Next 650 0 R +>> endobj +642 0 obj << +/Title 643 0 R +/A 640 0 R +/Parent 590 0 R +/Prev 630 0 R +/Next 658 0 R +/First 646 0 R +/Last 654 0 R +/Count -3 +>> endobj +638 0 obj << +/Title 639 0 R +/A 636 0 R +/Parent 630 0 R +/Prev 634 0 R +>> endobj +634 0 obj << +/Title 635 0 R +/A 632 0 R +/Parent 630 0 R +/Next 638 0 R +>> endobj +630 0 obj << +/Title 631 0 R +/A 628 0 R +/Parent 590 0 R +/Prev 618 0 R +/Next 642 0 R +/First 634 0 R +/Last 638 0 R +/Count -2 +>> endobj +626 0 obj << +/Title 627 0 R +/A 624 0 R +/Parent 618 0 R +/Prev 622 0 R +>> endobj +622 0 obj << +/Title 623 0 R +/A 620 0 R +/Parent 618 0 R +/Next 626 0 R +>> endobj +618 0 obj << +/Title 619 0 R +/A 616 0 R +/Parent 590 0 R +/Prev 606 0 R +/Next 630 0 R +/First 622 0 R +/Last 626 0 R +/Count -2 +>> endobj +614 0 obj << +/Title 615 0 R +/A 612 0 R +/Parent 606 0 R +/Prev 610 0 R +>> endobj +610 0 obj << +/Title 611 0 R +/A 608 0 R +/Parent 606 0 R +/Next 614 0 R +>> endobj +606 0 obj << +/Title 607 0 R +/A 604 0 R +/Parent 590 0 R +/Prev 594 0 R +/Next 618 0 R +/First 610 0 R +/Last 614 0 R +/Count -2 +>> endobj +602 0 obj << +/Title 603 0 R +/A 600 0 R +/Parent 594 0 R +/Prev 598 0 R +>> endobj +598 0 obj << +/Title 599 0 R +/A 596 0 R +/Parent 594 0 R +/Next 602 0 R +>> endobj +594 0 obj << +/Title 595 0 R +/A 592 0 R +/Parent 590 0 R +/Next 606 0 R +/First 598 0 R +/Last 602 0 R +/Count -2 +>> endobj +590 0 obj << +/Title 591 0 R +/A 588 0 R +/Parent 9829 0 R +/Prev 582 0 R +/Next 1106 0 R +/First 594 0 R +/Last 1090 0 R +/Count -39 +>> endobj +586 0 obj << +/Title 587 0 R +/A 584 0 R +/Parent 582 0 R +>> endobj +582 0 obj << +/Title 583 0 R +/A 580 0 R +/Parent 9829 0 R +/Prev 574 0 R +/Next 590 0 R +/First 586 0 R +/Last 586 0 R +/Count -1 +>> endobj +578 0 obj << +/Title 579 0 R +/A 576 0 R +/Parent 574 0 R +>> endobj +574 0 obj << +/Title 575 0 R +/A 572 0 R +/Parent 9829 0 R +/Prev 566 0 R +/Next 582 0 R +/First 578 0 R +/Last 578 0 R +/Count -1 +>> endobj +570 0 obj << +/Title 571 0 R +/A 568 0 R +/Parent 566 0 R +>> endobj +566 0 obj << +/Title 567 0 R +/A 564 0 R +/Parent 9829 0 R +/Prev 562 0 R +/Next 574 0 R +/First 570 0 R +/Last 570 0 R +/Count -1 +>> endobj +562 0 obj << +/Title 563 0 R +/A 560 0 R +/Parent 9829 0 R +/Prev 558 0 R +/Next 566 0 R +>> endobj +558 0 obj << +/Title 559 0 R +/A 556 0 R +/Parent 9829 0 R +/Prev 554 0 R +/Next 562 0 R +>> endobj +554 0 obj << +/Title 555 0 R +/A 552 0 R +/Parent 9829 0 R +/Prev 526 0 R +/Next 558 0 R +>> endobj +550 0 obj << +/Title 551 0 R +/A 548 0 R +/Parent 542 0 R +/Prev 546 0 R +>> endobj +546 0 obj << +/Title 547 0 R +/A 544 0 R +/Parent 542 0 R +/Next 550 0 R +>> endobj +542 0 obj << +/Title 543 0 R +/A 540 0 R +/Parent 526 0 R +/Prev 530 0 R +/First 546 0 R +/Last 550 0 R +/Count -2 +>> endobj +538 0 obj << +/Title 539 0 R +/A 536 0 R +/Parent 530 0 R +/Prev 534 0 R +>> endobj +534 0 obj << +/Title 535 0 R +/A 532 0 R +/Parent 530 0 R +/Next 538 0 R +>> endobj +530 0 obj << +/Title 531 0 R +/A 528 0 R +/Parent 526 0 R +/Next 542 0 R +/First 534 0 R +/Last 538 0 R +/Count -2 +>> endobj +526 0 obj << +/Title 527 0 R +/A 524 0 R +/Parent 9829 0 R +/Prev 522 0 R +/Next 554 0 R +/First 530 0 R +/Last 542 0 R +/Count -2 +>> endobj +522 0 obj << +/Title 523 0 R +/A 520 0 R +/Parent 9829 0 R +/Prev 482 0 R +/Next 526 0 R +>> endobj +518 0 obj << +/Title 519 0 R +/A 516 0 R +/Parent 510 0 R +/Prev 514 0 R +>> endobj +514 0 obj << +/Title 515 0 R +/A 512 0 R +/Parent 510 0 R +/Next 518 0 R +>> endobj +510 0 obj << +/Title 511 0 R +/A 508 0 R +/Parent 482 0 R +/Prev 498 0 R +/First 514 0 R +/Last 518 0 R +/Count -2 +>> endobj +506 0 obj << +/Title 507 0 R +/A 504 0 R +/Parent 498 0 R +/Prev 502 0 R +>> endobj +502 0 obj << +/Title 503 0 R +/A 500 0 R +/Parent 498 0 R +/Next 506 0 R +>> endobj +498 0 obj << +/Title 499 0 R +/A 496 0 R +/Parent 482 0 R +/Prev 486 0 R +/Next 510 0 R +/First 502 0 R +/Last 506 0 R +/Count -2 +>> endobj +494 0 obj << +/Title 495 0 R +/A 492 0 R +/Parent 486 0 R +/Prev 490 0 R +>> endobj +490 0 obj << +/Title 491 0 R +/A 488 0 R +/Parent 486 0 R +/Next 494 0 R +>> endobj +486 0 obj << +/Title 487 0 R +/A 484 0 R +/Parent 482 0 R +/Next 498 0 R +/First 490 0 R +/Last 494 0 R +/Count -2 +>> endobj +482 0 obj << +/Title 483 0 R +/A 480 0 R +/Parent 9829 0 R +/Prev 426 0 R +/Next 522 0 R +/First 486 0 R +/Last 510 0 R +/Count -3 +>> endobj +478 0 obj << +/Title 479 0 R +/A 476 0 R +/Parent 426 0 R +/Prev 474 0 R +>> endobj +474 0 obj << +/Title 475 0 R +/A 472 0 R +/Parent 426 0 R +/Prev 470 0 R +/Next 478 0 R +>> endobj +470 0 obj << +/Title 471 0 R +/A 468 0 R +/Parent 426 0 R +/Prev 466 0 R +/Next 474 0 R +>> endobj +466 0 obj << +/Title 467 0 R +/A 464 0 R +/Parent 426 0 R +/Prev 462 0 R +/Next 470 0 R +>> endobj +462 0 obj << +/Title 463 0 R +/A 460 0 R +/Parent 426 0 R +/Prev 458 0 R +/Next 466 0 R +>> endobj +458 0 obj << +/Title 459 0 R +/A 456 0 R +/Parent 426 0 R +/Prev 454 0 R +/Next 462 0 R +>> endobj +454 0 obj << +/Title 455 0 R +/A 452 0 R +/Parent 426 0 R +/Prev 450 0 R +/Next 458 0 R +>> endobj +450 0 obj << +/Title 451 0 R +/A 448 0 R +/Parent 426 0 R +/Prev 446 0 R +/Next 454 0 R +>> endobj +446 0 obj << +/Title 447 0 R +/A 444 0 R +/Parent 426 0 R +/Prev 442 0 R +/Next 450 0 R +>> endobj +442 0 obj << +/Title 443 0 R +/A 440 0 R +/Parent 426 0 R +/Prev 438 0 R +/Next 446 0 R +>> endobj +438 0 obj << +/Title 439 0 R +/A 436 0 R +/Parent 426 0 R +/Prev 434 0 R +/Next 442 0 R +>> endobj +434 0 obj << +/Title 435 0 R +/A 432 0 R +/Parent 426 0 R +/Prev 430 0 R +/Next 438 0 R +>> endobj +430 0 obj << +/Title 431 0 R +/A 428 0 R +/Parent 426 0 R +/Next 434 0 R +>> endobj +426 0 obj << +/Title 427 0 R +/A 424 0 R +/Parent 9829 0 R +/Prev 290 0 R +/Next 482 0 R +/First 430 0 R +/Last 478 0 R +/Count -13 +>> endobj +422 0 obj << +/Title 423 0 R +/A 420 0 R +/Parent 290 0 R +/Prev 418 0 R +>> endobj +418 0 obj << +/Title 419 0 R +/A 416 0 R +/Parent 290 0 R +/Prev 414 0 R +/Next 422 0 R +>> endobj +414 0 obj << +/Title 415 0 R +/A 412 0 R +/Parent 290 0 R +/Prev 410 0 R +/Next 418 0 R +>> endobj +410 0 obj << +/Title 411 0 R +/A 408 0 R +/Parent 290 0 R +/Prev 406 0 R +/Next 414 0 R +>> endobj +406 0 obj << +/Title 407 0 R +/A 404 0 R +/Parent 290 0 R +/Prev 402 0 R +/Next 410 0 R +>> endobj +402 0 obj << +/Title 403 0 R +/A 400 0 R +/Parent 290 0 R +/Prev 398 0 R +/Next 406 0 R +>> endobj +398 0 obj << +/Title 399 0 R +/A 396 0 R +/Parent 290 0 R +/Prev 394 0 R +/Next 402 0 R +>> endobj +394 0 obj << +/Title 395 0 R +/A 392 0 R +/Parent 290 0 R +/Prev 390 0 R +/Next 398 0 R +>> endobj +390 0 obj << +/Title 391 0 R +/A 388 0 R +/Parent 290 0 R +/Prev 386 0 R +/Next 394 0 R +>> endobj +386 0 obj << +/Title 387 0 R +/A 384 0 R +/Parent 290 0 R +/Prev 382 0 R +/Next 390 0 R +>> endobj +382 0 obj << +/Title 383 0 R +/A 380 0 R +/Parent 290 0 R +/Prev 378 0 R +/Next 386 0 R +>> endobj +378 0 obj << +/Title 379 0 R +/A 376 0 R +/Parent 290 0 R +/Prev 374 0 R +/Next 382 0 R +>> endobj +374 0 obj << +/Title 375 0 R +/A 372 0 R +/Parent 290 0 R +/Prev 370 0 R +/Next 378 0 R +>> endobj +370 0 obj << +/Title 371 0 R +/A 368 0 R +/Parent 290 0 R +/Prev 366 0 R +/Next 374 0 R +>> endobj +366 0 obj << +/Title 367 0 R +/A 364 0 R +/Parent 290 0 R +/Prev 362 0 R +/Next 370 0 R +>> endobj +362 0 obj << +/Title 363 0 R +/A 360 0 R +/Parent 290 0 R +/Prev 358 0 R +/Next 366 0 R +>> endobj +358 0 obj << +/Title 359 0 R +/A 356 0 R +/Parent 290 0 R +/Prev 354 0 R +/Next 362 0 R +>> endobj +354 0 obj << +/Title 355 0 R +/A 352 0 R +/Parent 290 0 R +/Prev 350 0 R +/Next 358 0 R +>> endobj +350 0 obj << +/Title 351 0 R +/A 348 0 R +/Parent 290 0 R +/Prev 346 0 R +/Next 354 0 R +>> endobj +346 0 obj << +/Title 347 0 R +/A 344 0 R +/Parent 290 0 R +/Prev 342 0 R +/Next 350 0 R +>> endobj +342 0 obj << +/Title 343 0 R +/A 340 0 R +/Parent 290 0 R +/Prev 338 0 R +/Next 346 0 R +>> endobj +338 0 obj << +/Title 339 0 R +/A 336 0 R +/Parent 290 0 R +/Prev 334 0 R +/Next 342 0 R +>> endobj +334 0 obj << +/Title 335 0 R +/A 332 0 R +/Parent 290 0 R +/Prev 330 0 R +/Next 338 0 R +>> endobj +330 0 obj << +/Title 331 0 R +/A 328 0 R +/Parent 290 0 R +/Prev 326 0 R +/Next 334 0 R +>> endobj +326 0 obj << +/Title 327 0 R +/A 324 0 R +/Parent 290 0 R +/Prev 322 0 R +/Next 330 0 R +>> endobj +322 0 obj << +/Title 323 0 R +/A 320 0 R +/Parent 290 0 R +/Prev 318 0 R +/Next 326 0 R +>> endobj +318 0 obj << +/Title 319 0 R +/A 316 0 R +/Parent 290 0 R +/Prev 314 0 R +/Next 322 0 R +>> endobj +314 0 obj << +/Title 315 0 R +/A 312 0 R +/Parent 290 0 R +/Prev 310 0 R +/Next 318 0 R +>> endobj +310 0 obj << +/Title 311 0 R +/A 308 0 R +/Parent 290 0 R +/Prev 306 0 R +/Next 314 0 R +>> endobj +306 0 obj << +/Title 307 0 R +/A 304 0 R +/Parent 290 0 R +/Prev 302 0 R +/Next 310 0 R +>> endobj +302 0 obj << +/Title 303 0 R +/A 300 0 R +/Parent 290 0 R +/Prev 298 0 R +/Next 306 0 R +>> endobj +298 0 obj << +/Title 299 0 R +/A 296 0 R +/Parent 290 0 R +/Prev 294 0 R +/Next 302 0 R +>> endobj +294 0 obj << +/Title 295 0 R +/A 292 0 R +/Parent 290 0 R +/Next 298 0 R +>> endobj +290 0 obj << +/Title 291 0 R +/A 288 0 R +/Parent 9829 0 R +/Prev 258 0 R +/Next 426 0 R +/First 294 0 R +/Last 422 0 R +/Count -33 +>> endobj +286 0 obj << +/Title 287 0 R +/A 284 0 R +/Parent 258 0 R +/Prev 282 0 R +>> endobj +282 0 obj << +/Title 283 0 R +/A 280 0 R +/Parent 258 0 R +/Prev 278 0 R +/Next 286 0 R +>> endobj +278 0 obj << +/Title 279 0 R +/A 276 0 R +/Parent 258 0 R +/Prev 274 0 R +/Next 282 0 R +>> endobj +274 0 obj << +/Title 275 0 R +/A 272 0 R +/Parent 258 0 R +/Prev 270 0 R +/Next 278 0 R +>> endobj +270 0 obj << +/Title 271 0 R +/A 268 0 R +/Parent 258 0 R +/Prev 266 0 R +/Next 274 0 R +>> endobj +266 0 obj << +/Title 267 0 R +/A 264 0 R +/Parent 258 0 R +/Prev 262 0 R +/Next 270 0 R +>> endobj +262 0 obj << +/Title 263 0 R +/A 260 0 R +/Parent 258 0 R +/Next 266 0 R +>> endobj +258 0 obj << +/Title 259 0 R +/A 256 0 R +/Parent 9829 0 R +/Prev 246 0 R +/Next 290 0 R +/First 262 0 R +/Last 286 0 R +/Count -7 +>> endobj +254 0 obj << +/Title 255 0 R +/A 252 0 R +/Parent 246 0 R +/Prev 250 0 R +>> endobj +250 0 obj << +/Title 251 0 R +/A 248 0 R +/Parent 246 0 R +/Next 254 0 R +>> endobj +246 0 obj << +/Title 247 0 R +/A 244 0 R +/Parent 9829 0 R +/Prev 222 0 R +/Next 258 0 R +/First 250 0 R +/Last 254 0 R +/Count -2 +>> endobj +242 0 obj << +/Title 243 0 R +/A 240 0 R +/Parent 222 0 R +/Prev 238 0 R +>> endobj +238 0 obj << +/Title 239 0 R +/A 236 0 R +/Parent 222 0 R +/Prev 234 0 R +/Next 242 0 R +>> endobj +234 0 obj << +/Title 235 0 R +/A 232 0 R +/Parent 222 0 R +/Prev 230 0 R +/Next 238 0 R +>> endobj +230 0 obj << +/Title 231 0 R +/A 228 0 R +/Parent 222 0 R +/Prev 226 0 R +/Next 234 0 R +>> endobj +226 0 obj << +/Title 227 0 R +/A 224 0 R +/Parent 222 0 R +/Next 230 0 R +>> endobj +222 0 obj << +/Title 223 0 R +/A 220 0 R +/Parent 9829 0 R +/Prev 186 0 R +/Next 246 0 R +/First 226 0 R +/Last 242 0 R +/Count -5 +>> endobj +218 0 obj << +/Title 219 0 R +/A 216 0 R +/Parent 186 0 R +/Prev 214 0 R +>> endobj +214 0 obj << +/Title 215 0 R +/A 212 0 R +/Parent 186 0 R +/Prev 210 0 R +/Next 218 0 R +>> endobj +210 0 obj << +/Title 211 0 R +/A 208 0 R +/Parent 186 0 R +/Prev 206 0 R +/Next 214 0 R +>> endobj +206 0 obj << +/Title 207 0 R +/A 204 0 R +/Parent 186 0 R +/Prev 202 0 R +/Next 210 0 R +>> endobj +202 0 obj << +/Title 203 0 R +/A 200 0 R +/Parent 186 0 R +/Prev 198 0 R +/Next 206 0 R +>> endobj +198 0 obj << +/Title 199 0 R +/A 196 0 R +/Parent 186 0 R +/Prev 194 0 R +/Next 202 0 R +>> endobj +194 0 obj << +/Title 195 0 R +/A 192 0 R +/Parent 186 0 R +/Prev 190 0 R +/Next 198 0 R +>> endobj +190 0 obj << +/Title 191 0 R +/A 188 0 R +/Parent 186 0 R +/Next 194 0 R +>> endobj +186 0 obj << +/Title 187 0 R +/A 184 0 R +/Parent 9829 0 R +/Prev 166 0 R +/Next 222 0 R +/First 190 0 R +/Last 218 0 R +/Count -8 +>> endobj +182 0 obj << +/Title 183 0 R +/A 180 0 R +/Parent 166 0 R +/Prev 178 0 R +>> endobj +178 0 obj << +/Title 179 0 R +/A 176 0 R +/Parent 166 0 R +/Prev 174 0 R +/Next 182 0 R +>> endobj +174 0 obj << +/Title 175 0 R +/A 172 0 R +/Parent 166 0 R +/Prev 170 0 R +/Next 178 0 R +>> endobj +170 0 obj << +/Title 171 0 R +/A 168 0 R +/Parent 166 0 R +/Next 174 0 R +>> endobj +166 0 obj << +/Title 167 0 R +/A 164 0 R +/Parent 9829 0 R +/Prev 142 0 R +/Next 186 0 R +/First 170 0 R +/Last 182 0 R +/Count -4 +>> endobj +162 0 obj << +/Title 163 0 R +/A 160 0 R +/Parent 142 0 R +/Prev 158 0 R +>> endobj +158 0 obj << +/Title 159 0 R +/A 156 0 R +/Parent 142 0 R +/Prev 154 0 R +/Next 162 0 R +>> endobj +154 0 obj << +/Title 155 0 R +/A 152 0 R +/Parent 142 0 R +/Prev 150 0 R +/Next 158 0 R +>> endobj +150 0 obj << +/Title 151 0 R +/A 148 0 R +/Parent 142 0 R +/Prev 146 0 R +/Next 154 0 R +>> endobj +146 0 obj << +/Title 147 0 R +/A 144 0 R +/Parent 142 0 R +/Next 150 0 R +>> endobj +142 0 obj << +/Title 143 0 R +/A 140 0 R +/Parent 9829 0 R +/Prev 102 0 R +/Next 166 0 R +/First 146 0 R +/Last 162 0 R +/Count -5 +>> endobj +138 0 obj << +/Title 139 0 R +/A 136 0 R +/Parent 102 0 R +/Prev 134 0 R +>> endobj +134 0 obj << +/Title 135 0 R +/A 132 0 R +/Parent 102 0 R +/Prev 130 0 R +/Next 138 0 R +>> endobj +130 0 obj << +/Title 131 0 R +/A 128 0 R +/Parent 102 0 R +/Prev 126 0 R +/Next 134 0 R +>> endobj +126 0 obj << +/Title 127 0 R +/A 124 0 R +/Parent 102 0 R +/Prev 122 0 R +/Next 130 0 R +>> endobj +122 0 obj << +/Title 123 0 R +/A 120 0 R +/Parent 102 0 R +/Prev 118 0 R +/Next 126 0 R +>> endobj +118 0 obj << +/Title 119 0 R +/A 116 0 R +/Parent 102 0 R +/Prev 114 0 R +/Next 122 0 R +>> endobj +114 0 obj << +/Title 115 0 R +/A 112 0 R +/Parent 102 0 R +/Prev 110 0 R +/Next 118 0 R +>> endobj +110 0 obj << +/Title 111 0 R +/A 108 0 R +/Parent 102 0 R +/Prev 106 0 R +/Next 114 0 R +>> endobj +106 0 obj << +/Title 107 0 R +/A 104 0 R +/Parent 102 0 R +/Next 110 0 R +>> endobj +102 0 obj << +/Title 103 0 R +/A 100 0 R +/Parent 9829 0 R +/Prev 82 0 R +/Next 142 0 R +/First 106 0 R +/Last 138 0 R +/Count -9 +>> endobj +98 0 obj << +/Title 99 0 R +/A 96 0 R +/Parent 82 0 R +/Prev 94 0 R +>> endobj +94 0 obj << +/Title 95 0 R +/A 92 0 R +/Parent 82 0 R +/Prev 90 0 R +/Next 98 0 R +>> endobj +90 0 obj << +/Title 91 0 R +/A 88 0 R +/Parent 82 0 R +/Prev 86 0 R +/Next 94 0 R +>> endobj +86 0 obj << +/Title 87 0 R +/A 84 0 R +/Parent 82 0 R +/Next 90 0 R +>> endobj +82 0 obj << +/Title 83 0 R +/A 80 0 R +/Parent 9829 0 R +/Prev 26 0 R +/Next 102 0 R +/First 86 0 R +/Last 98 0 R +/Count -4 +>> endobj +78 0 obj << +/Title 79 0 R +/A 76 0 R +/Parent 26 0 R +/Prev 74 0 R +>> endobj +74 0 obj << +/Title 75 0 R +/A 72 0 R +/Parent 26 0 R +/Prev 70 0 R +/Next 78 0 R +>> endobj +70 0 obj << +/Title 71 0 R +/A 68 0 R +/Parent 26 0 R +/Prev 66 0 R +/Next 74 0 R +>> endobj +66 0 obj << +/Title 67 0 R +/A 64 0 R +/Parent 26 0 R +/Prev 62 0 R +/Next 70 0 R +>> endobj +62 0 obj << +/Title 63 0 R +/A 60 0 R +/Parent 26 0 R +/Prev 58 0 R +/Next 66 0 R +>> endobj +58 0 obj << +/Title 59 0 R +/A 56 0 R +/Parent 26 0 R +/Prev 54 0 R +/Next 62 0 R +>> endobj +54 0 obj << +/Title 55 0 R +/A 52 0 R +/Parent 26 0 R +/Prev 50 0 R +/Next 58 0 R +>> endobj +50 0 obj << +/Title 51 0 R +/A 48 0 R +/Parent 26 0 R +/Prev 46 0 R +/Next 54 0 R +>> endobj +46 0 obj << +/Title 47 0 R +/A 44 0 R +/Parent 26 0 R +/Prev 42 0 R +/Next 50 0 R +>> endobj +42 0 obj << +/Title 43 0 R +/A 40 0 R +/Parent 26 0 R +/Prev 38 0 R +/Next 46 0 R +>> endobj +38 0 obj << +/Title 39 0 R +/A 36 0 R +/Parent 26 0 R +/Prev 34 0 R +/Next 42 0 R +>> endobj +34 0 obj << +/Title 35 0 R +/A 32 0 R +/Parent 26 0 R +/Prev 30 0 R +/Next 38 0 R +>> endobj +30 0 obj << +/Title 31 0 R +/A 28 0 R +/Parent 26 0 R +/Next 34 0 R +>> endobj +26 0 obj << +/Title 27 0 R +/A 24 0 R +/Parent 9829 0 R +/Prev 6 0 R +/Next 82 0 R +/First 30 0 R +/Last 78 0 R +/Count -13 +>> endobj +22 0 obj << +/Title 23 0 R +/A 20 0 R +/Parent 6 0 R +/Prev 18 0 R +>> endobj +18 0 obj << +/Title 19 0 R +/A 16 0 R +/Parent 6 0 R +/Prev 14 0 R +/Next 22 0 R +>> endobj +14 0 obj << +/Title 15 0 R +/A 12 0 R +/Parent 6 0 R +/Prev 10 0 R +/Next 18 0 R +>> endobj +10 0 obj << +/Title 11 0 R +/A 8 0 R +/Parent 6 0 R +/Next 14 0 R +>> endobj +6 0 obj << +/Title 7 0 R +/A 4 0 R +/Parent 9829 0 R +/Next 26 0 R +/First 10 0 R +/Last 22 0 R +/Count -4 +>> endobj +9830 0 obj << +/Names [(Doc-Start) 1881 0 R (FAQ) 2442 0 R (FAQ_faq_16bitio) 2908 0 R (FAQ_faq_asmconst) 2909 0 R (FAQ_faq_asmops) 2967 0 R (FAQ_faq_asmstabs) 2772 0 R] +/Limits [(Doc-Start) (FAQ_faq_asmstabs)] +>> endobj +9831 0 obj << +/Names [(FAQ_faq_binarydata) 2970 0 R (FAQ_faq_clockskew) 2964 0 R (FAQ_faq_cplusplus) 2906 0 R (FAQ_faq_ext_ram) 2957 0 R (FAQ_faq_flashstrings) 2961 0 R (FAQ_faq_fuselow) 2966 0 R] +/Limits [(FAQ_faq_binarydata) (FAQ_faq_fuselow)] +>> endobj +9832 0 obj << +/Names [(FAQ_faq_fuses) 2960 0 R (FAQ_faq_gdboptimize) 2910 0 R (FAQ_faq_index) 2887 0 R (FAQ_faq_intbits) 2965 0 R (FAQ_faq_intpromote) 2962 0 R (FAQ_faq_libm) 2902 0 R] +/Limits [(FAQ_faq_fuses) (FAQ_faq_libm)] +>> endobj +9833 0 obj << +/Names [(FAQ_faq_linkerscripts) 2969 0 R (FAQ_faq_math) 2972 0 R (FAQ_faq_optflags) 2958 0 R (FAQ_faq_port_pass) 2911 0 R (FAQ_faq_ramoverlap) 2963 0 R (FAQ_faq_reentrant) 2973 0 R] +/Limits [(FAQ_faq_linkerscripts) (FAQ_faq_reentrant)] +>> endobj +9834 0 obj << +/Names [(FAQ_faq_reg_usage) 2705 0 R (FAQ_faq_regbind) 2903 0 R (FAQ_faq_reloc_code) 2959 0 R (FAQ_faq_rom_array) 2956 0 R (FAQ_faq_softreset) 2971 0 R (FAQ_faq_spman) 2968 0 R] +/Limits [(FAQ_faq_reg_usage) (FAQ_faq_spman)] +>> endobj +9835 0 obj << +/Names [(FAQ_faq_startup) 2904 0 R (FAQ_faq_tinyavr_c) 2475 0 R (FAQ_faq_use_bv) 2905 0 R (FAQ_faq_varinit) 2907 0 R (FAQ_faq_volatile) 2901 0 R (Item.1) 2723 0 R] +/Limits [(FAQ_faq_startup) (Item.1)] +>> endobj +9836 0 obj << +/Names [(Item.10) 2893 0 R (Item.11) 2894 0 R (Item.12) 2895 0 R (Item.13) 2896 0 R (Item.14) 2897 0 R (Item.15) 2899 0 R] +/Limits [(Item.10) (Item.15)] +>> endobj +9837 0 obj << +/Names [(Item.16) 2900 0 R (Item.17) 2933 0 R (Item.18) 2934 0 R (Item.19) 2935 0 R (Item.2) 2724 0 R (Item.20) 2936 0 R] +/Limits [(Item.16) (Item.20)] +>> endobj +9838 0 obj << +/Names [(Item.21) 2937 0 R (Item.22) 2938 0 R (Item.23) 2940 0 R (Item.24) 2941 0 R (Item.25) 2943 0 R (Item.26) 2944 0 R] +/Limits [(Item.21) (Item.26)] +>> endobj +9839 0 obj << +/Names [(Item.27) 2945 0 R (Item.28) 2946 0 R (Item.29) 2947 0 R (Item.3) 2725 0 R (Item.30) 2948 0 R (Item.31) 2949 0 R] +/Limits [(Item.27) (Item.31)] +>> endobj +9840 0 obj << +/Names [(Item.32) 2950 0 R (Item.33) 2951 0 R (Item.34) 2952 0 R (Item.35) 2953 0 R (Item.36) 2955 0 R (Item.37) 3501 0 R] +/Limits [(Item.32) (Item.37)] +>> endobj +9841 0 obj << +/Names [(Item.38) 3502 0 R (Item.39) 3503 0 R (Item.4) 2726 0 R (Item.40) 3504 0 R (Item.41) 3505 0 R (Item.42) 3506 0 R] +/Limits [(Item.38) (Item.42)] +>> endobj +9842 0 obj << +/Names [(Item.43) 3507 0 R (Item.44) 3508 0 R (Item.45) 3509 0 R (Item.46) 3510 0 R (Item.47) 3511 0 R (Item.48) 3512 0 R] +/Limits [(Item.43) (Item.48)] +>> endobj +9843 0 obj << +/Names [(Item.49) 3520 0 R (Item.5) 2888 0 R (Item.50) 3521 0 R (Item.51) 3522 0 R (Item.52) 3523 0 R (Item.53) 3524 0 R] +/Limits [(Item.49) (Item.53)] +>> endobj +9844 0 obj << +/Names [(Item.54) 3525 0 R (Item.55) 3526 0 R (Item.56) 3527 0 R (Item.57) 3528 0 R (Item.58) 3529 0 R (Item.59) 3530 0 R] +/Limits [(Item.54) (Item.59)] +>> endobj +9845 0 obj << +/Names [(Item.6) 2889 0 R (Item.60) 3531 0 R (Item.7) 2890 0 R (Item.8) 2891 0 R (Item.9) 2892 0 R (acks) 3539 0 R] +/Limits [(Item.6) (acks)] +>> endobj +9846 0 obj << +/Names [(assembler) 2667 0 R (assembler_ass_example) 2675 0 R (assembler_ass_intro) 2668 0 R (assembler_ass_isr) 2692 0 R (assembler_ass_pseudoops) 2704 0 R (assembler_ass_tools) 2674 0 R] +/Limits [(assembler) (assembler_ass_tools)] +>> endobj +9847 0 obj << +/Names [(assert_8h) 3672 0 R (atoi_8S) 3673 0 R (atol_8S) 3674 0 R (atomic_8h) 3675 0 R (atomic_8h_9328e8dfc4d40b118f6d03a0d0752d57) 7377 0 R (benchmarks) 2811 0 R] +/Limits [(assert_8h) (benchmarks)] +>> endobj +9848 0 obj << +/Names [(benchmarks_bench_libc) 2817 0 R (benchmarks_bench_libm) 2826 0 R (boot_8h) 3676 0 R (boot_8h_0188e67d3acdcd85622f5b76030af293) 7408 0 R (boot_8h_04ae036a5a8fbdd5a8fc5a6ec2c7339a) 7385 0 R (boot_8h_187759514e2cca302aeb49218197f942) 7445 0 R] +/Limits [(benchmarks_bench_libc) (boot_8h_187759514e2cca302aeb49218197f942)] +>> endobj +9849 0 obj << +/Names [(boot_8h_20e2e9e36dec4bf39be5228a0c9c600e) 7411 0 R (boot_8h_21c0241a6cb8118cded320e66cc90560) 7406 0 R (boot_8h_26dd86a7f6a2188d5b3a9bf4e82e4858) 7439 0 R (boot_8h_3e55b284bd76afd73af1616de8df7b12) 7420 0 R (boot_8h_40eea0e0df507db61a60989581ac1064) 7459 0 R (boot_8h_417fdfe10bd6f57a586226a4d70bdfd7) 7380 0 R] +/Limits [(boot_8h_20e2e9e36dec4bf39be5228a0c9c600e) (boot_8h_417fdfe10bd6f57a586226a4d70bdfd7)] +>> endobj +9850 0 obj << +/Names [(boot_8h_4192e18f2c1316b05663a3dc75668749) 7379 0 R (boot_8h_4c8e46cf66a0d11d769d19a2bed8b629) 7407 0 R (boot_8h_50edc371d0af8d259ea023b633925113) 7383 0 R (boot_8h_5812a8505962f2ef5ef7a2ed6e6e8817) 7431 0 R (boot_8h_79758a589013232780017772b8cca5e0) 7410 0 R (boot_8h_7c8625ea47a1bd97442cc882d09c0ed8) 7416 0 R] +/Limits [(boot_8h_4192e18f2c1316b05663a3dc75668749) (boot_8h_7c8625ea47a1bd97442cc882d09c0ed8)] +>> endobj +9851 0 obj << +/Names [(boot_8h_86207caca9e59b3f75a9fa35cdc1db69) 7449 0 R (boot_8h_8832a715caf71cd7ef5fb1a944934f25) 7418 0 R (boot_8h_914c8d5a7da95cdc8349978bb16bb6b3) 7447 0 R (boot_8h_93a9fe1407566a32fea1fb37277f7c46) 7427 0 R (boot_8h_ab4f27d4987cc0270f6bfeb92c1d14ae) 7382 0 R (boot_8h_c0f9afa7cbd77075ce25ad1725a29a2d) 7384 0 R] +/Limits [(boot_8h_86207caca9e59b3f75a9fa35cdc1db69) (boot_8h_c0f9afa7cbd77075ce25ad1725a29a2d)] +>> endobj +9852 0 obj << +/Names [(boot_8h_d5bbc23219154d8bb707dc83adeda97b) 7461 0 R (boot_8h_da1dd04496c0be43e587298ce0125a17) 7381 0 R (boot_8h_e7acb437e564500a9fa900ca9d52b976) 7429 0 R (boot_8h_f185608898c0e67c913fd900d9d5b1bd) 7437 0 R (boot_8h_f377d8a2a7d70cc3706792c5ee1fb050) 7409 0 R (crc16_8h) 3677 0 R] +/Limits [(boot_8h_d5bbc23219154d8bb707dc83adeda97b) (crc16_8h)] +>> endobj +9853 0 obj << +/Names [(ctype_8h) 3678 0 R (ctype_8h_2dffc93760775ef4aee5b3c83d92108c) 7499 0 R (delay_8h) 3733 0 R (delay_8h_43bafb28b29491ec7f871319b5a3b2f8) 7517 0 R (delay_8h_c59633eb25631d74d7b6f8419c0bc172) 7516 0 R (delay__basic_8h) 3734 0 R] +/Limits [(ctype_8h) (delay__basic_8h)] +>> endobj +9854 0 obj << +/Names [(delay__basic_8h_9d3997d1df667c74c3b8600326d5ab0e) 7520 0 R (deprecated) 3565 0 R (deprecated__deprecated000001) 3566 0 R (deprecated__deprecated000002) 3567 0 R (deprecated__deprecated000003) 3596 0 R (deprecated__deprecated000004) 3595 0 R] +/Limits [(delay__basic_8h_9d3997d1df667c74c3b8600326d5ab0e) (deprecated__deprecated000004)] +>> endobj +9855 0 obj << +/Names [(deprecated__deprecated000005) 3597 0 R (deprecated__deprecated000006) 3598 0 R (deprecated__deprecated000007) 3599 0 R (deprecated__deprecated000008) 3600 0 R (deprecated__deprecated000009) 3601 0 R (deprecated__deprecated000010) 3602 0 R] +/Limits [(deprecated__deprecated000005) (deprecated__deprecated000010)] +>> endobj +9856 0 obj << +/Names [(deprecated__deprecated000011) 3603 0 R (errno_8h) 3735 0 R (errno_8h_47b52de7375ca65beefe6c51260397c3) 7523 0 R (errno_8h_d65a8842cc674e3ddf69355898c0ecbf) 7531 0 R (fdevopen_8c) 3736 0 R (ffs_8S) 3737 0 R] +/Limits [(deprecated__deprecated000011) (ffs_8S)] +>> endobj +9857 0 obj << +/Names [(ffsl_8S) 3738 0 R (ffsll_8S) 3739 0 R (figure.1) 2529 0 R (figure.2) 2560 0 R (figure.3) 2571 0 R (figure.4) 3538 0 R] +/Limits [(ffsl_8S) (figure.4)] +>> endobj +9858 0 obj << +/Names [(figure.5) 7079 0 R (figure.6) 7164 0 R (figure.7) 7172 0 R (figure.8) 7181 0 R (figure.9) 7235 0 R (fuse_8h) 3740 0 R] +/Limits [(figure.5) (fuse_8h)] +>> endobj +9859 0 obj << +/Names [(fuse_8h_23174175833ce2c027ab3c5b758c2090) 7535 0 R (fuse_8h_2cf8b889c12df2dd77766c668ae9e629) 7534 0 R (fuse_8h_590ce98ab3113727c67df6f1d77d61a7) 7536 0 R (group__alloca) 3938 0 R (group__alloca_gbdd78c9d072e9d390bed0e8b79087a85) 3941 0 R (group__asmdemo) 6059 0 R] +/Limits [(fuse_8h_23174175833ce2c027ab3c5b758c2090) (group__asmdemo)] +>> endobj +9860 0 obj << +/Names [(group__asmdemo_asmdemo_code) 7047 0 R (group__asmdemo_asmdemo_hw) 7046 0 R (group__asmdemo_asmdemo_isrs) 7063 0 R (group__asmdemo_asmdemo_main) 7048 0 R (group__asmdemo_asmdemo_project) 7055 0 R (group__asmdemo_asmdemo_src) 7065 0 R] +/Limits [(group__asmdemo_asmdemo_code) (group__asmdemo_asmdemo_src)] +>> endobj +9861 0 obj << +/Names [(group__avr__assert) 3963 0 R (group__avr__assert_g0041af519e0e7d47c9bcc83760c4669e) 3264 0 R (group__avr__boot) 3569 0 R (group__avr__boot_g013d6d8c679ebdbc0e5fac179c38c9aa) 5883 0 R (group__avr__boot_g072040fce54f112355cb9ebf9ce41dd7) 5853 0 R (group__avr__boot_g107ad4c789e5c498062947d394ed98d5) 5887 0 R] +/Limits [(group__avr__assert) (group__avr__boot_g107ad4c789e5c498062947d394ed98d5)] +>> endobj +9862 0 obj << +/Names [(group__avr__boot_g24900c15109e8b419736d4b81b093fb8) 5858 0 R (group__avr__boot_g3f549e2ef9ca0f119a7070064c4dc372) 5885 0 R (group__avr__boot_g44e70c9662e7ac06484144c15bc69aea) 5862 0 R (group__avr__boot_g5c345350a2fb349619b859dcf0dc0466) 5886 0 R (group__avr__boot_g61add108c778273ff68233d044c3acca) 5881 0 R (group__avr__boot_g7249d12e06789cd306583abf7def8176) 5882 0 R] +/Limits [(group__avr__boot_g24900c15109e8b419736d4b81b093fb8) (group__avr__boot_g7249d12e06789cd306583abf7def8176)] +>> endobj +9863 0 obj << +/Names [(group__avr__boot_g8a60eb0985d40ff71c42bb18f0f5789e) 5852 0 R (group__avr__boot_g8d2baaca2991318e0b06fdf9a5264923) 5884 0 R (group__avr__boot_gaba5a29359af671a37bccaa6a77bca7c) 5856 0 R (group__avr__boot_gc68c37ecf2354ba2af6e08379d65899f) 5859 0 R (group__avr__boot_gc80bd4f863ff7645204adb0eda3556ea) 5880 0 R (group__avr__boot_gcd6843d51a4fa7d68f3c4bc5aa393a3e) 5855 0 R] +/Limits [(group__avr__boot_g8a60eb0985d40ff71c42bb18f0f5789e) (group__avr__boot_gcd6843d51a4fa7d68f3c4bc5aa393a3e)] +>> endobj +9864 0 obj << +/Names [(group__avr__boot_gd2cbdea59ffec2e77ee2e63106459797) 5863 0 R (group__avr__boot_gdaa352690ac1c82c535da9d8faf77590) 5878 0 R (group__avr__boot_ge12d288a22cfbfa9d0cde12b1a779bfe) 5860 0 R (group__avr__boot_ge50dc01180110f30093a92fe64fe1565) 5857 0 R (group__avr__boot_geb0dba1dd9d338516a94c0bd8a8db78a) 5888 0 R (group__avr__boot_gf08aabaebbd69da659357f402d4d28ce) 5861 0 R] +/Limits [(group__avr__boot_gd2cbdea59ffec2e77ee2e63106459797) (group__avr__boot_gf08aabaebbd69da659357f402d4d28ce)] +>> endobj +9865 0 obj << +/Names [(group__avr__boot_gf1e01d09c839793a6c0c990b1c5ae8b3) 5854 0 R (group__avr__boot_gf375d2543ba38dc56697b4f4bc37a717) 5864 0 R (group__avr__eeprom) 5943 0 R (group__avr__eeprom_g44c64ebb425fcb34b8d4dc19c4079869) 5982 0 R (group__avr__eeprom_g55c2be6e18755d37cf348122c9178e2d) 5985 0 R (group__avr__eeprom_g79a42ec6c6c8bbbe6e34ed57a52aac59) 5980 0 R] +/Limits [(group__avr__boot_gf1e01d09c839793a6c0c990b1c5ae8b3) (group__avr__eeprom_g79a42ec6c6c8bbbe6e34ed57a52aac59)] +>> endobj +9866 0 obj << +/Names [(group__avr__eeprom_g7ccd65b76bb9ed5ee03855779bae28de) 5947 0 R (group__avr__eeprom_g7ddb40e18489f6112d84c8760814f61f) 5988 0 R (group__avr__eeprom_g98c859a256541fe119e47ac4fdfd1ebd) 5949 0 R (group__avr__eeprom_gaf8e2ad1d7f06bf150a4f6d21ed768af) 5989 0 R (group__avr__eeprom_gb3f2cb6bb7ae4927d18415ddd45cb2cc) 5990 0 R (group__avr__eeprom_gdb05445628302b2099c9547b6940ce62) 5986 0 R] +/Limits [(group__avr__eeprom_g7ccd65b76bb9ed5ee03855779bae28de) (group__avr__eeprom_gdb05445628302b2099c9547b6940ce62)] +>> endobj +9867 0 obj << +/Names [(group__avr__eeprom_ge272eeee87e7591ee48b0f9abc62c98a) 5987 0 R (group__avr__eeprom_ge63647a896a731935077dbeb0a1b52ef) 5948 0 R (group__avr__eeprom_gefdcb4f20942b263a3c36e776906f2f5) 5984 0 R (group__avr__eeprom_gf5915f666c50aafd5dcf48c8b3442f28) 5991 0 R (group__avr__errno) 4037 0 R (group__avr__errno_g5fe247e079b591a68e0fdbf7caec5b70) 4053 0 R] +/Limits [(group__avr__eeprom_ge272eeee87e7591ee48b0f9abc62c98a) (group__avr__errno_g5fe247e079b591a68e0fdbf7caec5b70)] +>> endobj +9868 0 obj << +/Names [(group__avr__errno_ga1591a4f3a86360108de5b9ba34980ca) 4055 0 R (group__avr__fuse) 6012 0 R (group__avr__interrupts) 2706 0 R (group__avr__interrupts_attr_interrupt) 6042 0 R (group__avr__interrupts_avr_signames) 2694 0 R (group__avr__interrupts_g1f6459a85cda682b2163a20af03ac744) 6157 0 R] +/Limits [(group__avr__errno_ga1591a4f3a86360108de5b9ba34980ca) (group__avr__interrupts_g1f6459a85cda682b2163a20af03ac744)] +>> endobj +9869 0 obj << +/Names [(group__avr__interrupts_g3b991e8168db8fc866e31f9a6d10533b) 6069 0 R (group__avr__interrupts_g44569cb914d2aaf8fbb436f8f7c4ca68) 6161 0 R (group__avr__interrupts_g5fc50a0507a58e16aca4c70345ddac6a) 6160 0 R (group__avr__interrupts_g67cd0dea412157775c2f2a3ffe9fb8ff) 3570 0 R (group__avr__interrupts_g68c330e94fe121eba993e5a5973c3162) 2859 0 R (group__avr__interrupts_g751c22101f7e8f2fbe792c64a81f8dba) 6058 0 R] +/Limits [(group__avr__interrupts_g3b991e8168db8fc866e31f9a6d10533b) (group__avr__interrupts_g751c22101f7e8f2fbe792c64a81f8dba)] +>> endobj +9870 0 obj << +/Names [(group__avr__interrupts_g8b4c7e44627db0a60d676213add42d64) 6162 0 R (group__avr__interrupts_ga87c0c624b62f40a17539be6946c3e26) 6057 0 R (group__avr__interrupts_gad5ebd34cb344c26ac87594f79b06b73) 2858 0 R (group__avr__interrupts_gd28590624d422cdf30d626e0a506255f) 3018 0 R (group__avr__interrupts_gde46eb4e42cc9d56c19b1f91448f1b76) 3571 0 R (group__avr__inttypes) 4057 0 R] +/Limits [(group__avr__interrupts_g8b4c7e44627db0a60d676213add42d64) (group__avr__inttypes)] +>> endobj +9871 0 obj << +/Names [(group__avr__inttypes_g021e130b06fc46198c71dca0fdf89788) 4232 0 R (group__avr__inttypes_g087e50fe0283aacc71d7138d13e91939) 4115 0 R (group__avr__inttypes_g09c9f36f654aa50a548d7820421cdc57) 4218 0 R (group__avr__inttypes_g0b0c7ad693c391e3e353e8f2d1df2ec3) 4134 0 R (group__avr__inttypes_g10db5de9c84ccfa6dc0e487dd72051f3) 4217 0 R (group__avr__inttypes_g12dbc2ac6a36b893ef1c25c357f90a9f) 4260 0 R] +/Limits [(group__avr__inttypes_g021e130b06fc46198c71dca0fdf89788) (group__avr__inttypes_g12dbc2ac6a36b893ef1c25c357f90a9f)] +>> endobj +9872 0 obj << +/Names [(group__avr__inttypes_g1468793ce960b477922ef92b36a6c802) 4212 0 R (group__avr__inttypes_g14ec2649667b53ff91a1103c02975837) 4220 0 R (group__avr__inttypes_g192a69a2e6e63ed8393d306b4078d63f) 4126 0 R (group__avr__inttypes_g1d766603a3524c9e03effbbece9c2118) 4207 0 R (group__avr__inttypes_g1e5c50a1ca71da7ff8c4f3f007411be8) 4201 0 R (group__avr__inttypes_g1ecbd31333b358c22423a541fffbd122) 4142 0 R] +/Limits [(group__avr__inttypes_g1468793ce960b477922ef92b36a6c802) (group__avr__inttypes_g1ecbd31333b358c22423a541fffbd122)] +>> endobj +9873 0 obj << +/Names [(group__avr__inttypes_g22caa684d44725e1e6e638983380f68e) 4208 0 R (group__avr__inttypes_g24647dd309d4138846376a51a6098304) 4261 0 R (group__avr__inttypes_g2b7ab77ff6ede9c3c285b714496f77e2) 4222 0 R (group__avr__inttypes_g32b0c8a04aae5d4454d15e6cbe109f64) 4209 0 R (group__avr__inttypes_g35974d44b5dcebcb222b8e2c1384241d) 4216 0 R (group__avr__inttypes_g37bbde0e3f124b7f482d54adb13b0248) 4233 0 R] +/Limits [(group__avr__inttypes_g22caa684d44725e1e6e638983380f68e) (group__avr__inttypes_g37bbde0e3f124b7f482d54adb13b0248)] +>> endobj +9874 0 obj << +/Names [(group__avr__inttypes_g37f93445f1795033c9ba577661da6a91) 4131 0 R (group__avr__inttypes_g39be8ffb41be80bc951e955f111e4121) 4226 0 R (group__avr__inttypes_g3eda49c829de683e701eaed3cbaf0e73) 4143 0 R (group__avr__inttypes_g404fd01f0b890cb8fac8641aaa704b57) 4110 0 R (group__avr__inttypes_g45d80a42b6cd25f3ed57b0e800e6e398) 4136 0 R (group__avr__inttypes_g4739f89fa519cd77097677bf33320091) 4227 0 R] +/Limits [(group__avr__inttypes_g37f93445f1795033c9ba577661da6a91) (group__avr__inttypes_g4739f89fa519cd77097677bf33320091)] +>> endobj +9875 0 obj << +/Names [(group__avr__inttypes_g4a30d36e06018d8e13046079098905a0) 4272 0 R (group__avr__inttypes_g4c5370556f793ac7b2c3abe896dba8e2) 4269 0 R (group__avr__inttypes_g4ce14b7ebee0cfd5c4c935cf79a9a504) 4268 0 R (group__avr__inttypes_g4e9b835c85ffa875e8304e2b852b4c86) 4138 0 R (group__avr__inttypes_g5082b177b7d7b2039652c26a72b96d18) 4061 0 R (group__avr__inttypes_g526151b1725956030b501d9dd506f2e1) 4113 0 R] +/Limits [(group__avr__inttypes_g4a30d36e06018d8e13046079098905a0) (group__avr__inttypes_g526151b1725956030b501d9dd506f2e1)] +>> endobj +9876 0 obj << +/Names [(group__avr__inttypes_g52cfc41a1e5ad73788faebbfeb9c14b0) 4225 0 R (group__avr__inttypes_g55494a16151668ea78e0b808ef38c8c1) 4141 0 R (group__avr__inttypes_g570ca9af5087023f75fc8a1a602d26ab) 4197 0 R (group__avr__inttypes_g58cdfb02574b8c23d964a6e88a268782) 4117 0 R (group__avr__inttypes_g5b05c70b4807922992a9ca529361b44d) 4231 0 R (group__avr__inttypes_g64fb4e44c3ff09179fc445979b7fdad1) 4114 0 R] +/Limits [(group__avr__inttypes_g52cfc41a1e5ad73788faebbfeb9c14b0) (group__avr__inttypes_g64fb4e44c3ff09179fc445979b7fdad1)] +>> endobj +9877 0 obj << +/Names [(group__avr__inttypes_g655e9b358e0371a4bf5ff21cc08273e3) 4118 0 R (group__avr__inttypes_g65d9856517198cfc21558c0d6df64207) 4215 0 R (group__avr__inttypes_g6ac7e3111d008785ddf3b29dcd088732) 4202 0 R (group__avr__inttypes_g6b324310e03b8ecbe6888a52b7d8581d) 4264 0 R (group__avr__inttypes_g6d94d1417e1b35c53aee6306590de72b) 4121 0 R (group__avr__inttypes_g6f66e34285ab57a86aeb2f0f4895417d) 4196 0 R] +/Limits [(group__avr__inttypes_g655e9b358e0371a4bf5ff21cc08273e3) (group__avr__inttypes_g6f66e34285ab57a86aeb2f0f4895417d)] +>> endobj +9878 0 obj << +/Names [(group__avr__inttypes_g70aa3faf72084587fb18d03aa033a212) 4139 0 R (group__avr__inttypes_g70f5e38b517f714518c970a4da37bef1) 4194 0 R (group__avr__inttypes_g7276f64276fd7223ca6f4cca0444239a) 4200 0 R (group__avr__inttypes_g72b6692e3f3123903c1a0d9a960c59b1) 4108 0 R (group__avr__inttypes_g74cb15b101649124009c010a9055e885) 4133 0 R (group__avr__inttypes_g785eabe6337a2fa85874ae99300abb66) 4199 0 R] +/Limits [(group__avr__inttypes_g70aa3faf72084587fb18d03aa033a212) (group__avr__inttypes_g785eabe6337a2fa85874ae99300abb66)] +>> endobj +9879 0 obj << +/Names [(group__avr__inttypes_g7a78b92618044bb2d798b57fc6a2e439) 4258 0 R (group__avr__inttypes_g7b8508989273ad152f9b3b7cd4db6eee) 4219 0 R (group__avr__inttypes_g7c8a9ccd40bd2053ca588d1b15e76a30) 4127 0 R (group__avr__inttypes_g7cf58abc57bb03d809e6fc41c2a40c33) 4259 0 R (group__avr__inttypes_g80ca66bcc9e366733f02c90ed4b0838c) 4206 0 R (group__avr__inttypes_g8673208d2d48018fcce020ef59f8ec4f) 4132 0 R] +/Limits [(group__avr__inttypes_g7a78b92618044bb2d798b57fc6a2e439) (group__avr__inttypes_g8673208d2d48018fcce020ef59f8ec4f)] +>> endobj +9880 0 obj << +/Names [(group__avr__inttypes_g86bc00ee87e8e40787e0681fc34c576a) 4191 0 R (group__avr__inttypes_g8b67140c216180e4e5d18003038ee689) 4262 0 R (group__avr__inttypes_g943961b7e7e564388dd743593db5bbbb) 4111 0 R (group__avr__inttypes_g96945864cb2d1f7de861ccaf639af02e) 4119 0 R (group__avr__inttypes_g9bc6b517c0117327e832824ff2d6a6b5) 4230 0 R (group__avr__inttypes_g9c3c25e6145e629e4c9fabddc6061c30) 4214 0 R] +/Limits [(group__avr__inttypes_g86bc00ee87e8e40787e0681fc34c576a) (group__avr__inttypes_g9c3c25e6145e629e4c9fabddc6061c30)] +>> endobj +9881 0 obj << +/Names [(group__avr__inttypes_g9c632ab51b24b93cc315b27a883be9eb) 4229 0 R (group__avr__inttypes_ga1ca3a85113e897b5cf7ed6b92d74de2) 4213 0 R (group__avr__inttypes_ga3ba696eef7c107c76c26eea76dcb4b4) 4192 0 R (group__avr__inttypes_ga58d290d968643862aec7a8a56e1c8e9) 4274 0 R (group__avr__inttypes_ga5b3ca8091f4ed7d43f5eb971ce11114) 4130 0 R (group__avr__inttypes_ga82e218a186691ebf7149b36746c12e7) 4193 0 R] +/Limits [(group__avr__inttypes_g9c632ab51b24b93cc315b27a883be9eb) (group__avr__inttypes_ga82e218a186691ebf7149b36746c12e7)] +>> endobj +9882 0 obj << +/Names [(group__avr__inttypes_gab353a2898377162c1829f1a9708352e) 4204 0 R (group__avr__inttypes_gad333b5bea32321b312a3b4967ff357f) 4221 0 R (group__avr__inttypes_gaf100a10f9cd73d46294fd0e8db5246d) 4210 0 R (group__avr__inttypes_gaf2af4a10f0bd308e9c349c8382382be) 4203 0 R (group__avr__inttypes_gb153efc9e6547ca56f42de767cde2595) 4140 0 R (group__avr__inttypes_gb561c947d62a3c7cd396d4aeef553f3c) 4263 0 R] +/Limits [(group__avr__inttypes_gab353a2898377162c1829f1a9708352e) (group__avr__inttypes_gb561c947d62a3c7cd396d4aeef553f3c)] +>> endobj +9883 0 obj << +/Names [(group__avr__inttypes_gb7dbf5d0ea41679dface5855896e4273) 4273 0 R (group__avr__inttypes_gbd19a83130f8d1bd2f77b765ad804f75) 4266 0 R (group__avr__inttypes_gbd82b99090a28a84541959ac7ab14ad9) 4270 0 R (group__avr__inttypes_gbf657ee6bd4b009b5b072840a3d7364f) 4228 0 R (group__avr__inttypes_gc273fb2a05215962fbeae76abaaf0131) 4120 0 R (group__avr__inttypes_gc2d52bf83b783f530f02fa2eeabe703a) 4128 0 R] +/Limits [(group__avr__inttypes_gb7dbf5d0ea41679dface5855896e4273) (group__avr__inttypes_gc2d52bf83b783f530f02fa2eeabe703a)] +>> endobj +9884 0 obj << +/Names [(group__avr__inttypes_gc45f394be3c199938a85a631711ce22e) 4271 0 R (group__avr__inttypes_gccc383115328197264988682edfcb72c) 4205 0 R (group__avr__inttypes_gce7057a6fa96ac7e2a05946ee96cf2d9) 4211 0 R (group__avr__inttypes_gd00e2a12b813425800cad731f61497ae) 4195 0 R (group__avr__inttypes_gd12493b9063f7b2630b90b7f9a7f3301) 4129 0 R (group__avr__inttypes_gd36a6b276bd808d713cc5603ba008c58) 4122 0 R] +/Limits [(group__avr__inttypes_gc45f394be3c199938a85a631711ce22e) (group__avr__inttypes_gd36a6b276bd808d713cc5603ba008c58)] +>> endobj +9885 0 obj << +/Names [(group__avr__inttypes_gd7a1bae7ca12c7b5415fae1b3f258207) 4125 0 R (group__avr__inttypes_gdac1acc1d24060aeee7791a99d1a3a8c) 4135 0 R (group__avr__inttypes_gdbe02b78cca747b2fe1a8f7fc5f5cd47) 4112 0 R (group__avr__inttypes_gdd733be35bef9dcef225edc99ade9e33) 4224 0 R (group__avr__inttypes_ge212e57631ec729f70e0cc42e51dd91e) 4124 0 R (group__avr__inttypes_ge30d5cc7dbc15051e21b72229a2487f7) 4267 0 R] +/Limits [(group__avr__inttypes_gd7a1bae7ca12c7b5415fae1b3f258207) (group__avr__inttypes_ge30d5cc7dbc15051e21b72229a2487f7)] +>> endobj +9886 0 obj << +/Names [(group__avr__inttypes_ge36c293972a5b770349d74f2c0cfa52f) 4223 0 R (group__avr__inttypes_ge40f8b90cb75998e70910e7b377288a8) 4265 0 R (group__avr__inttypes_ge53c45f590033ad1f2f517faf3ab2f1b) 4109 0 R (group__avr__inttypes_ge7e1780719eb0e4b2826a0da06255780) 4137 0 R (group__avr__inttypes_ge90ab00cb4417081dc68e9fd6c0e129a) 4116 0 R (group__avr__inttypes_gef5a98227a6af5fde95353ed303cfd1e) 4123 0 R] +/Limits [(group__avr__inttypes_ge36c293972a5b770349d74f2c0cfa52f) (group__avr__inttypes_gef5a98227a6af5fde95353ed303cfd1e)] +>> endobj +9887 0 obj << +/Names [(group__avr__inttypes_gfa4303b077ae4c6c58686178e4b90d18) 4198 0 R (group__avr__io) 2999 0 R (group__avr__lock) 6201 0 R (group__avr__math) 4415 0 R (group__avr__math_g054230cd7e4c12958dbfac75ab6886e5) 4476 0 R (group__avr__math_g0838a00d86d5e920c80aa7c7532a5559) 4423 0 R] +/Limits [(group__avr__inttypes_gfa4303b077ae4c6c58686178e4b90d18) (group__avr__math_g0838a00d86d5e920c80aa7c7532a5559)] +>> endobj +9888 0 obj << +/Names [(group__avr__math_g0f0bf9ac2651b80846a9d9d89bd4cb85) 4465 0 R (group__avr__math_g1883497d16352bd92875499f1b39a4b6) 4489 0 R (group__avr__math_g18a7409e0b2341afaa41993960961772) 4481 0 R (group__avr__math_g2ec1caf3ba3b1ba62eccb3eddf029438) 4470 0 R (group__avr__math_g3630cb8cef4560cf0d92e82ae05b03f0) 4478 0 R (group__avr__math_g36894d73110fda52c84dfc050f1004bb) 4488 0 R] +/Limits [(group__avr__math_g0f0bf9ac2651b80846a9d9d89bd4cb85) (group__avr__math_g36894d73110fda52c84dfc050f1004bb)] +>> endobj +9889 0 obj << +/Names [(group__avr__math_g3abd1a0b68d157914a0ee01acaedfe5e) 4475 0 R (group__avr__math_g41b41c307b8f96760e9c0c17180b241b) 4479 0 R (group__avr__math_g468be9ed380771eca5a18e812b2470d4) 4480 0 R (group__avr__math_g46e799ece7e1dd323d22cdb53c81cd73) 4462 0 R (group__avr__math_g4ea549372745dda4018ab4b5a94483a6) 4469 0 R (group__avr__math_g542f5e42e0d3b5df63de0e34ec06bb40) 4422 0 R] +/Limits [(group__avr__math_g3abd1a0b68d157914a0ee01acaedfe5e) (group__avr__math_g542f5e42e0d3b5df63de0e34ec06bb40)] +>> endobj +9890 0 obj << +/Names [(group__avr__math_g577eee92b9969942de4d8d134d37c7b8) 4487 0 R (group__avr__math_g61470611f23ceef5d3e9cf63d84cd8a7) 4466 0 R (group__avr__math_g63fcb86a13cf17110582fd6560fb09dd) 4484 0 R (group__avr__math_g66b3ab30f1332874326ed93969e496e0) 4419 0 R (group__avr__math_g6eb04604d801054c5a2afe195d1dd75d) 4492 0 R (group__avr__math_g711412ca8746712e0f19508118bf5154) 4491 0 R] +/Limits [(group__avr__math_g577eee92b9969942de4d8d134d37c7b8) (group__avr__math_g711412ca8746712e0f19508118bf5154)] +>> endobj +9891 0 obj << +/Names [(group__avr__math_g7f7d556ab6b6235777a179647c152126) 4477 0 R (group__avr__math_g85861fee92c0904e9bb7a9875ee77579) 4425 0 R (group__avr__math_g89f0cb053e3cdb0c9c952ef040087c80) 4467 0 R (group__avr__math_g8abfcc76130f3f991d124dd22d7e69bc) 4420 0 R (group__avr__math_g91643e944a94341bd2a3ed1d3ffbae4f) 4468 0 R (group__avr__math_g956e2723d559858d08644ac99146e910) 4421 0 R] +/Limits [(group__avr__math_g7f7d556ab6b6235777a179647c152126) (group__avr__math_g956e2723d559858d08644ac99146e910)] +>> endobj +9892 0 obj << +/Names [(group__avr__math_g98384ad60834911ec93ac5ae1af4cf0a) 4474 0 R (group__avr__math_g9b995838b7bdd4886549dd7e308d0619) 4494 0 R (group__avr__math_ga2c2303658b8b2555bc97cce3f806bda) 4464 0 R (group__avr__math_ga759c9a1684b0cf2c4c5d133771192ce) 4493 0 R (group__avr__math_gae45da8f56ba936dc8624157d1770faa) 4471 0 R (group__avr__math_gaebf29a8e50e6d8f88b6caf697021c86) 4483 0 R] +/Limits [(group__avr__math_g98384ad60834911ec93ac5ae1af4cf0a) (group__avr__math_gaebf29a8e50e6d8f88b6caf697021c86)] +>> endobj +9893 0 obj << +/Names [(group__avr__math_gd11825ff1d6095a08b193c564d524aef) 4482 0 R (group__avr__math_gdd1e40e370b2165c186f72ec631b1853) 4463 0 R (group__avr__math_ge71449b1cc6e6250b91f539153a7a0d3) 4418 0 R (group__avr__math_ge9c5790d8a29cbee8f54f8eb522decbc) 4473 0 R (group__avr__math_gefa8edb8c13adf7fb4b6b7dbe7261a24) 4424 0 R (group__avr__math_gf4b72825a245b794090135251f0ead22) 4472 0 R] +/Limits [(group__avr__math_gd11825ff1d6095a08b193c564d524aef) (group__avr__math_gf4b72825a245b794090135251f0ead22)] +>> endobj +9894 0 obj << +/Names [(group__avr__math_gf7fbeddc2e7721682e69f59be04ae9d5) 4485 0 R (group__avr__math_gfb997a6a8d6dd0498238098826998aa0) 4490 0 R (group__avr__math_gfd8ab12e9d230e8213ac0c8b77c306d9) 4486 0 R (group__avr__pgmspace) 3104 0 R (group__avr__pgmspace_g05ca900ebf7cd121be73c654d9ccb3eb) 3105 0 R (group__avr__pgmspace_g066040df814dabc7980cd1422508b46b) 6280 0 R] +/Limits [(group__avr__math_gf7fbeddc2e7721682e69f59be04ae9d5) (group__avr__pgmspace_g066040df814dabc7980cd1422508b46b)] +>> endobj +9895 0 obj << +/Names [(group__avr__pgmspace_g0ca5a2d8b5b1b4d899edb89535c36b69) 6362 0 R (group__avr__pgmspace_g0d4d7f6231716747c52b969d4febdeed) 6276 0 R (group__avr__pgmspace_g11ed791b5d147f8d2ce01699a9c220ca) 6355 0 R (group__avr__pgmspace_g1617c6719e65951f109fe29b18c2bd35) 6345 0 R (group__avr__pgmspace_g287a70fef8531ad6aa9a2f73ee4fa162) 6340 0 R (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01) 6344 0 R] +/Limits [(group__avr__pgmspace_g0ca5a2d8b5b1b4d899edb89535c36b69) (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01)] +>> endobj +9896 0 obj << +/Names [(group__avr__pgmspace_g309908c1b7430f0d140edb78fcf8f2b9) 6281 0 R (group__avr__pgmspace_g31bad0d22ead95a41e725c38ea63eb26) 6337 0 R (group__avr__pgmspace_g32d8ab354156f4b1ffdb77a275ba6223) 6283 0 R (group__avr__pgmspace_g36c9c2de19d7e23c4a6bf63eee608af3) 6363 0 R (group__avr__pgmspace_g39235a28487ae7790ce5f4c8178c8ed7) 6333 0 R (group__avr__pgmspace_g3a8a479d2f1b4aef18a89316e3c9e0eb) 6353 0 R] +/Limits [(group__avr__pgmspace_g309908c1b7430f0d140edb78fcf8f2b9) (group__avr__pgmspace_g3a8a479d2f1b4aef18a89316e3c9e0eb)] +>> endobj +9897 0 obj << +/Names [(group__avr__pgmspace_g484117e1416429fc94efad8c66643164) 6351 0 R (group__avr__pgmspace_g48c7cb011ea5f82f4b73df40e07dff46) 6291 0 R (group__avr__pgmspace_g4a5a593aa84062ca08b3f2d564a6f466) 6282 0 R (group__avr__pgmspace_g5048829165f57aef87bba38ba9126d1d) 6356 0 R (group__avr__pgmspace_g51805e7bf43ffd1a70a045994a907768) 6341 0 R (group__avr__pgmspace_g53ee9e2dec1d5f685d78aa8dc444dccb) 6342 0 R] +/Limits [(group__avr__pgmspace_g484117e1416429fc94efad8c66643164) (group__avr__pgmspace_g53ee9e2dec1d5f685d78aa8dc444dccb)] +>> endobj +9898 0 obj << +/Names [(group__avr__pgmspace_g5b1f9927f06d841e9ac07af62e71cfef) 6338 0 R (group__avr__pgmspace_g73084a8bbde259ffae72980354b3f027) 2659 0 R (group__avr__pgmspace_g75acaba9e781937468d0911423bc0c35) 6278 0 R (group__avr__pgmspace_g7911bddb066a8a038efc4b7857728fa8) 6285 0 R (group__avr__pgmspace_g7c26394eea1ddcc33fb698833b9aa9b2) 6346 0 R (group__avr__pgmspace_g7d4701843a2019e3ef5a9866dc7586ed) 6290 0 R] +/Limits [(group__avr__pgmspace_g5b1f9927f06d841e9ac07af62e71cfef) (group__avr__pgmspace_g7d4701843a2019e3ef5a9866dc7586ed)] +>> endobj +9899 0 obj << +/Names [(group__avr__pgmspace_g7fa92c0a662403a643859e0f33b0a182) 6279 0 R (group__avr__pgmspace_g8283f9a987be92ae137ee610e6b11b90) 6357 0 R (group__avr__pgmspace_g84a61d55b7efefabd8419e28f02704f9) 6288 0 R (group__avr__pgmspace_g851eaa0bd303b445f6ea70db31059fef) 6364 0 R (group__avr__pgmspace_g88d7dd4863f87530e1a34ece430a587c) 6274 0 R (group__avr__pgmspace_g8ece6c08cef78e50f404072823e48752) 6358 0 R] +/Limits [(group__avr__pgmspace_g7fa92c0a662403a643859e0f33b0a182) (group__avr__pgmspace_g8ece6c08cef78e50f404072823e48752)] +>> endobj +9900 0 obj << +/Names [(group__avr__pgmspace_g93ec00229866bf6a125384ad08cefa73) 6335 0 R (group__avr__pgmspace_g963f816fc88a5d8479c285ed4c630229) 6286 0 R (group__avr__pgmspace_g9c3ff50bdf59b38219394ff5230660da) 6349 0 R (group__avr__pgmspace_ga3bc55b47998e5ce1d8ddcf0be228638) 6361 0 R (group__avr__pgmspace_ga475b6b81fd8b34de45695da1da523b6) 6287 0 R (group__avr__pgmspace_ga50eebe90a40e0276bcc49ea0482b211) 6339 0 R] +/Limits [(group__avr__pgmspace_g93ec00229866bf6a125384ad08cefa73) (group__avr__pgmspace_ga50eebe90a40e0276bcc49ea0482b211)] +>> endobj +9901 0 obj << +/Names [(group__avr__pgmspace_ga839901aa518fb43d361588dd8d2b44b) 6336 0 R (group__avr__pgmspace_gabad6a32f133121973ea9c06e30cd33a) 6352 0 R (group__avr__pgmspace_gafc910d0b2c4d76afffa4710b98df6fa) 6334 0 R (group__avr__pgmspace_gb2614cd3f6b0196d3070b158f1ad05bd) 6343 0 R (group__avr__pgmspace_gb3a5f8b6324d77903d713917eb219f05) 6360 0 R (group__avr__pgmspace_gbb68859ac5dfa6a09ac048b4037a83b6) 6284 0 R] +/Limits [(group__avr__pgmspace_ga839901aa518fb43d361588dd8d2b44b) (group__avr__pgmspace_gbb68859ac5dfa6a09ac048b4037a83b6)] +>> endobj +9902 0 obj << +/Names [(group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) 6354 0 R (group__avr__pgmspace_gc75a4fcc7f301902eef58f8dea8e5cfd) 6365 0 R (group__avr__pgmspace_gd6de880a1dd672b52469fe986e3ec011) 6359 0 R (group__avr__pgmspace_gd7082c45c2c96f015c76eff1ad00a99a) 6277 0 R (group__avr__pgmspace_gdb50761b9f19d45449445208778ee420) 6289 0 R (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a) 6348 0 R] +/Limits [(group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) (group__avr__pgmspace_ge3a7686c2e207b543be3b402d919761a)] +>> endobj +9903 0 obj << +/Names [(group__avr__pgmspace_gee6bf291c23054aca37533937a1d412f) 6350 0 R (group__avr__pgmspace_gf51eeaa847dd2668d2a66b70ecfb7398) 6275 0 R (group__avr__pgmspace_gf5c3724d0e89d5952738b8c8da004e0a) 6347 0 R (group__avr__power) 6538 0 R (group__avr__power_avr_powermacros) 6543 0 R (group__avr__sfr) 6202 0 R] +/Limits [(group__avr__pgmspace_gee6bf291c23054aca37533937a1d412f) (group__avr__sfr)] +>> endobj +9904 0 obj << +/Names [(group__avr__sfr__notes) 2696 0 R (group__avr__sfr_g11643f271076024c395a93800b3d9546) 3000 0 R (group__avr__sfr_g3b034cb1d74b9addc7599bd6ea6bd0d9) 6583 0 R (group__avr__sfr_gaf6857fa882da35f8685e2001e5c3bbe) 6587 0 R (group__avr__sfr_gbf06c3d703cf5adc691c0be5d72e7839) 6585 0 R (group__avr__sfr_gd188fb0fbfd923bdb01294072367d024) 6581 0 R] +/Limits [(group__avr__sfr__notes) (group__avr__sfr_gd188fb0fbfd923bdb01294072367d024)] +>> endobj +9905 0 obj << +/Names [(group__avr__sleep) 6596 0 R (group__avr__sleep_g157b2578d95309c197b739f812938d94) 6601 0 R (group__avr__sleep_g475174a7aa4eda03dfa7a4483e400a9e) 6599 0 R (group__avr__sleep_geae22433a78fd8d50f915fb68c416efd) 6600 0 R (group__avr__stdint) 4652 0 R (group__avr__stdint_g022b9b0a3564d786244a4631847c37a3) 4841 0 R] +/Limits [(group__avr__sleep) (group__avr__stdint_g022b9b0a3564d786244a4631847c37a3)] +>> endobj +9906 0 obj << +/Names [(group__avr__stdint_g036cd61bb4b30bb510b9538af4cebd1d) 4731 0 R (group__avr__stdint_g13c95cf9c209d8daacb36cbf0d5ba275) 4805 0 R (group__avr__stdint_g169460a4e2a79138723d68d99372d958) 4800 0 R (group__avr__stdint_g17f379713bed2a28ac431760401253cd) 4717 0 R (group__avr__stdint_g181807730d4a375f848ba139813ce04f) 4778 0 R (group__avr__stdint_g1ddf83530d986214005d1e766f036b28) 4853 0 R] +/Limits [(group__avr__stdint_g036cd61bb4b30bb510b9538af4cebd1d) (group__avr__stdint_g1ddf83530d986214005d1e766f036b28)] +>> endobj +9907 0 obj << +/Names [(group__avr__stdint_g1e6d0a954851b2f07b54a2178dc6eb40) 4851 0 R (group__avr__stdint_g1f1825b69244eb3ad2c7165ddc99c956) 4659 0 R (group__avr__stdint_g1f5fe9445d0ad0bee21bab1de4cc3e58) 4846 0 R (group__avr__stdint_g1f91bfd5820c2f27af3d260fc75813e1) 4788 0 R (group__avr__stdint_g2073b30b3170d509bc756bf5c7862caf) 4721 0 R (group__avr__stdint_g21e605b9ac3a03b6de93cdf5a69e129f) 4847 0 R] +/Limits [(group__avr__stdint_g1e6d0a954851b2f07b54a2178dc6eb40) (group__avr__stdint_g21e605b9ac3a03b6de93cdf5a69e129f)] +>> endobj +9908 0 obj << +/Names [(group__avr__stdint_g2360a536116dd734820a6b5b3d560ce7) 4791 0 R (group__avr__stdint_g2676b57a778795e5d0598970f1407f38) 4719 0 R (group__avr__stdint_g2a80bde77ee1698d0f42f334adad4f2b) 4786 0 R (group__avr__stdint_g2aaa6d3aa1d7d1e0e326955aa24db752) 4839 0 R (group__avr__stdint_g2b0a3edfc672154f606dc3ad26277b61) 4842 0 R (group__avr__stdint_g2ba5f6c0633401558d277b2c0e4f758d) 4732 0 R] +/Limits [(group__avr__stdint_g2360a536116dd734820a6b5b3d560ce7) (group__avr__stdint_g2ba5f6c0633401558d277b2c0e4f758d)] +>> endobj +9909 0 obj << +/Names [(group__avr__stdint_g2c6f97ea2d76d0cf6260c84046cdb44e) 4798 0 R (group__avr__stdint_g2c8c1b9f53772a86b0827ce7399b68aa) 4663 0 R (group__avr__stdint_g2fd35d0ea091e04caec504ff0042cf00) 4799 0 R (group__avr__stdint_g30654b4b67d97c42ca3f9b6052dda916) 4783 0 R (group__avr__stdint_g33594304e786b158f3fb30289278f5af) 4107 0 R (group__avr__stdint_g35d0f98a2e507fd1be779d49da92724e) 4793 0 R] +/Limits [(group__avr__stdint_g2c6f97ea2d76d0cf6260c84046cdb44e) (group__avr__stdint_g35d0f98a2e507fd1be779d49da92724e)] +>> endobj +9910 0 obj << +/Names [(group__avr__stdint_g3c75bb398badb69c7577b21486f9963f) 4848 0 R (group__avr__stdint_g3e986cad833f63f420962ff60eda87e5) 4785 0 R (group__avr__stdint_g3ea490c9b3617d4479bd80ef93cd5602) 4777 0 R (group__avr__stdint_g4f3f6e6631cb4aaeadf1c59ff597b2fb) 4718 0 R (group__avr__stdint_g50f0fdcb00ea2500cec0f3d6d45c36f3) 4806 0 R (group__avr__stdint_g5618711a0a54f722190a3a1219e278c2) 4790 0 R] +/Limits [(group__avr__stdint_g3c75bb398badb69c7577b21486f9963f) (group__avr__stdint_g5618711a0a54f722190a3a1219e278c2)] +>> endobj +9911 0 obj << +/Names [(group__avr__stdint_g688eb21a22db27c2b2bd5836943cdcbe) 4779 0 R (group__avr__stdint_g6ed085329b153773ff76afa0702cf897) 4726 0 R (group__avr__stdint_g6ef6a1a518bbf516ca8b0180b11c358f) 4789 0 R (group__avr__stdint_g6fd055dddb7d91fab0635146851af8d5) 4730 0 R (group__avr__stdint_g70cad8bacc9a6db301e1cdc86cc8d571) 4792 0 R (group__avr__stdint_g7eb2a8e2a1c65d6c9ad0f86154890baa) 4787 0 R] +/Limits [(group__avr__stdint_g688eb21a22db27c2b2bd5836943cdcbe) (group__avr__stdint_g7eb2a8e2a1c65d6c9ad0f86154890baa)] +>> endobj +9912 0 obj << +/Names [(group__avr__stdint_g831d6234342279926bb11bad3a37add9) 4660 0 R (group__avr__stdint_g880ed9ceb8621521452c81d03bd08cfb) 4723 0 R (group__avr__stdint_g8f075c759c74e109e8184306c663809d) 4728 0 R (group__avr__stdint_g920d4b149da0252281b6762375fb644a) 4727 0 R (group__avr__stdint_g932e6ccc3d54c58f761c1aead83bd6d7) 4658 0 R (group__avr__stdint_g97a030e600e111b2b5981b4c39265ab6) 4858 0 R] +/Limits [(group__avr__stdint_g831d6234342279926bb11bad3a37add9) (group__avr__stdint_g97a030e600e111b2b5981b4c39265ab6)] +>> endobj +9913 0 obj << +/Names [(group__avr__stdint_g9b7386d4af0e20ee32296d9a158c9f3a) 4725 0 R (group__avr__stdint_g9d283932a52e505ae3b2a4f902e8b53c) 4662 0 R (group__avr__stdint_g9e5742f2bae4a5283431a3c03499e3a9) 4838 0 R (group__avr__stdint_ga05109908fb2770f632d2b646b9f85bf) 4784 0 R (group__avr__stdint_ga54fd5210434219e9027bfa0f0e325c8) 4843 0 R (group__avr__stdint_gab530113fa96e280e49c3c138b0f917d) 4795 0 R] +/Limits [(group__avr__stdint_g9b7386d4af0e20ee32296d9a158c9f3a) (group__avr__stdint_gab530113fa96e280e49c3c138b0f917d)] +>> endobj +9914 0 obj << +/Names [(group__avr__stdint_gab7df05e4698e14dbef512294ff39203) 4855 0 R (group__avr__stdint_gad8fb982cb19143efd5ee9a1a7a89390) 4797 0 R (group__avr__stdint_gadcf2a81af243df333b31efa6461ab8e) 4734 0 R (group__avr__stdint_gadfd725efbf565422ab13db91ccca53c) 4715 0 R (group__avr__stdint_gaf7f29f45f1a513b4748a4e5014ddf6a) 4733 0 R (group__avr__stdint_gb21f12f372f67b8ff0aa3432336ede67) 4782 0 R] +/Limits [(group__avr__stdint_gab7df05e4698e14dbef512294ff39203) (group__avr__stdint_gb21f12f372f67b8ff0aa3432336ede67)] +>> endobj +9915 0 obj << +/Names [(group__avr__stdint_gb2355300ea19395357e62d780f4dd073) 4840 0 R (group__avr__stdint_gb5eb23180f7cc12b7d6c04a8ec067fdd) 4780 0 R (group__avr__stdint_gb604f73dd823867b43702ae88b4f4445) 4722 0 R (group__avr__stdint_gb93c67f535ddedd6e88a9a8030b333f1) 4852 0 R (group__avr__stdint_gba7bc1797add20fe3efdf37ced1182c5) 4657 0 R (group__avr__stdint_gc0af81082969e5e3f4d939b1de7002ac) 4720 0 R] +/Limits [(group__avr__stdint_gb2355300ea19395357e62d780f4dd073) (group__avr__stdint_gc0af81082969e5e3f4d939b1de7002ac)] +>> endobj +9916 0 obj << +/Names [(group__avr__stdint_gc12b4f6966b57ad82feb683b284b4060) 4794 0 R (group__avr__stdint_gc58f2c111cc9989c86db2a7dc4fd84ca) 4775 0 R (group__avr__stdint_gc76e2383debd5a3b100514044828961a) 4716 0 R (group__avr__stdint_gc96fa0f41b19e89f109e4f9913ca6635) 4802 0 R (group__avr__stdint_gcb579905e23358f9a5035b075c57ffcd) 4850 0 R (group__avr__stdint_gcbcdb3bee0f5f904da5df8de69a80ca3) 4796 0 R] +/Limits [(group__avr__stdint_gc12b4f6966b57ad82feb683b284b4060) (group__avr__stdint_gcbcdb3bee0f5f904da5df8de69a80ca3)] +>> endobj +9917 0 obj << +/Names [(group__avr__stdint_gcc666d136a198406538bafb8288f9c1b) 4849 0 R (group__avr__stdint_gd0d744f05898e32d01f73f8af3cd2071) 4781 0 R (group__avr__stdint_gd0fca8b15c218d2c687f8c373a71d228) 4724 0 R (group__avr__stdint_gd27ed092432b64ff558d2254c278720f) 4661 0 R (group__avr__stdint_gd4e9955955b27624963643eac448118a) 4776 0 R (group__avr__stdint_gd51246a178143208b2db3315efd21c45) 4804 0 R] +/Limits [(group__avr__stdint_gcc666d136a198406538bafb8288f9c1b) (group__avr__stdint_gd51246a178143208b2db3315efd21c45)] +>> endobj +9918 0 obj << +/Names [(group__avr__stdint_gd76f76a71e9ffc13963ee895d1828b2c) 4854 0 R (group__avr__stdint_gd93df1652ed0635513d5efe4f1219926) 4803 0 R (group__avr__stdint_gd9b88ba2fb858f98b50b38e49875d90e) 4845 0 R (group__avr__stdint_gdb828ef50c2dbb783109824e94cf6c47) 4060 0 R (group__avr__stdint_gdd2ef7bffac19cfdd1f4b5495409672f) 4844 0 R (group__avr__stdint_ge770776c04e6d959364d2612ddfce99d) 4856 0 R] +/Limits [(group__avr__stdint_gd76f76a71e9ffc13963ee895d1828b2c) (group__avr__stdint_ge770776c04e6d959364d2612ddfce99d)] +>> endobj +9919 0 obj << +/Names [(group__avr__stdint_geb4e270a084ee26fe73e799861bd0252) 4735 0 R (group__avr__stdint_geb74410af7781bc84b5f64ae7a8f4a17) 4807 0 R (group__avr__stdint_ged28ca63d9b222f6f1377358fe73a183) 4801 0 R (group__avr__stdint_gef44329758059c91c76d334e8fc09700) 4656 0 R (group__avr__stdint_gefea1274b2789b420969856ac1a8f19e) 4857 0 R (group__avr__stdint_gfd072b9a94c14417246175f6442422ae) 4729 0 R] +/Limits [(group__avr__stdint_geb4e270a084ee26fe73e799861bd0252) (group__avr__stdint_gfd072b9a94c14417246175f6442422ae)] +>> endobj +9920 0 obj << +/Names [(group__avr__stdio) 2551 0 R (group__avr__stdio_g00d34a8bff0293d2d6f4563d248d8fb2) 3270 0 R (group__avr__stdio_g0b15be24dd9db93355e1f62937fdfd9a) 3247 0 R (group__avr__stdio_g0beb4fd9ff6833a364e3ce60370de058) 3273 0 R (group__avr__stdio_g0c0ef221f95f64e8632451312fd18cc8) 5061 0 R (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c) 3258 0 R] +/Limits [(group__avr__stdio) (group__avr__stdio_g0e41285401c397eb29692205a95fcd9c)] +>> endobj +9921 0 obj << +/Names [(group__avr__stdio_g0fb7fd70cd7618f27d8219c97e61bcf3) 3272 0 R (group__avr__stdio_g132917c782a0ba854c3ae9abe57c3b12) 5067 0 R (group__avr__stdio_g19c2bbe9ce4af9f0a7e3448387004fd3) 3262 0 R (group__avr__stdio_g2071feb5c92bf50a6bd508a07ead9515) 3256 0 R (group__avr__stdio_g247111653f3e91bf2cb4930d590d8201) 5069 0 R (group__avr__stdio_g280c47b9edff2751b8dbb9a715dc44c5) 5068 0 R] +/Limits [(group__avr__stdio_g0fb7fd70cd7618f27d8219c97e61bcf3) (group__avr__stdio_g280c47b9edff2751b8dbb9a715dc44c5)] +>> endobj +9922 0 obj << +/Names [(group__avr__stdio_g2b829d696b17dedbf181cd5dc4d7a31d) 3250 0 R (group__avr__stdio_g33f7bd99d40bf6f68a00d5507d65363d) 3248 0 R (group__avr__stdio_g36173b4a8551b61811089198beec69d9) 3259 0 R (group__avr__stdio_g3d25813cb225ca410518a3f48eb00caa) 3263 0 R (group__avr__stdio_g3e8cefeee58f762ff50bcef35fa12eec) 5059 0 R (group__avr__stdio_g3f0edc16dcabb5344d59d42cf7682102) 3271 0 R] +/Limits [(group__avr__stdio_g2b829d696b17dedbf181cd5dc4d7a31d) (group__avr__stdio_g3f0edc16dcabb5344d59d42cf7682102)] +>> endobj +9923 0 obj << +/Names [(group__avr__stdio_g418e63921ed6259e873cd21b6c5c8e6e) 3246 0 R (group__avr__stdio_g47b00053272d6443c9befdb1304002cb) 5117 0 R (group__avr__stdio_g4c04da4953607fa5fa4d3908fecde449) 3115 0 R (group__avr__stdio_g53ff61856759709eeceae10aaa10a0a3) 3252 0 R (group__avr__stdio_g54fa47156a34c1659a29ed96e46e3518) 3278 0 R (group__avr__stdio_g5507d0e1bbfd387fbb2ffcfd8f5dca6f) 3279 0 R] +/Limits [(group__avr__stdio_g418e63921ed6259e873cd21b6c5c8e6e) (group__avr__stdio_g5507d0e1bbfd387fbb2ffcfd8f5dca6f)] +>> endobj +9924 0 obj << +/Names [(group__avr__stdio_g55b25ecbfd3811ea4495d1f235e2e186) 3261 0 R (group__avr__stdio_g59adc4c82490d23754cd39c2fb99b0da) 5063 0 R (group__avr__stdio_g5ce35bd5ba5021fd3b2e951e8f497656) 5062 0 R (group__avr__stdio_g6017094d9fd800fa02600d35399f2a2a) 2819 0 R (group__avr__stdio_g61e2590ae5f2f2e351365640d2ac755a) 5070 0 R (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21) 3276 0 R] +/Limits [(group__avr__stdio_g55b25ecbfd3811ea4495d1f235e2e186) (group__avr__stdio_g67bae1ad3af79809fd770be392f90e21)] +>> endobj +9925 0 obj << +/Names [(group__avr__stdio_g6c6b5b881ce8f4739777ff3a615e988a) 3277 0 R (group__avr__stdio_g77070c245d4ca4f7ec7d7144260fb875) 3251 0 R (group__avr__stdio_g793fcb8f10b6b8746d4186012929ddf1) 5017 0 R (group__avr__stdio_g79826a1c733e4f67843256d34ad64352) 5064 0 R (group__avr__stdio_g7aec94e711ad64724076666586a26839) 3274 0 R (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35) 3268 0 R] +/Limits [(group__avr__stdio_g6c6b5b881ce8f4739777ff3a615e988a) (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35)] +>> endobj +9926 0 obj << +/Names [(group__avr__stdio_g822a791a1c06a12b95c14ace75b48ad2) 5065 0 R (group__avr__stdio_g8bd4b760f67791a54e73111734caa82f) 3275 0 R (group__avr__stdio_g93db55caeeaf13488a635f8896a6bdf3) 5066 0 R (group__avr__stdio_ga1226b8f734a1b5148d931ae2908c45d) 5031 0 R (group__avr__stdio_ga3b98c0d17b35642c0f3e4649092b9f1) 3260 0 R (group__avr__stdio_ga89248dd55efb5f59a96e82976c97758) 5118 0 R] +/Limits [(group__avr__stdio_g822a791a1c06a12b95c14ace75b48ad2) (group__avr__stdio_ga89248dd55efb5f59a96e82976c97758)] +>> endobj +9927 0 obj << +/Names [(group__avr__stdio_gaa6d255675688c736c99ebd32f2a7214) 3265 0 R (group__avr__stdio_gaca70138f0cb63ddb026921afc635179) 5060 0 R (group__avr__stdio_gaeb1bbe21a1b9b50b207ab059a67993f) 3253 0 R (group__avr__stdio_gb4de83c560c79bf880fa39b997d61610) 3249 0 R (group__avr__stdio_gb4f9b130166e5811519513d6178c1ae3) 3269 0 R (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4) 3242 0 R] +/Limits [(group__avr__stdio_gaa6d255675688c736c99ebd32f2a7214) (group__avr__stdio_gb599ddf60819df4cc993c724a83cb1a4)] +>> endobj +9928 0 obj << +/Names [(group__avr__stdio_gc0484b3e3a4d8361d91c3322440f9195) 3266 0 R (group__avr__stdio_gc04f5faa8e86a4ce4ae084d85386af40) 5018 0 R (group__avr__stdio_gc92e8c42a044c8f50aad5c2c69e638e0) 3255 0 R (group__avr__stdio_gcff255b3a0079ebb1516e8a4eb23a6fb) 5071 0 R (group__avr__stdio_gd3d27a6dcc225237171196dd0739bb10) 3243 0 R (group__avr__stdio_gdb974f28765a31026ee6bf71d5175951) 5119 0 R] +/Limits [(group__avr__stdio_gc0484b3e3a4d8361d91c3322440f9195) (group__avr__stdio_gdb974f28765a31026ee6bf71d5175951)] +>> endobj +9929 0 obj << +/Names [(group__avr__stdio_gdd5777719a41713629a62b68c239a774) 3257 0 R (group__avr__stdio_gea2b6be92ead4673bc487b271b7227fb) 3245 0 R (group__avr__stdio_geca11dc4b3757ed4ff2f2a4950eba117) 3280 0 R (group__avr__stdio_gf3387285b3eb0ce4e0e7ca3ccaed9014) 5116 0 R (group__avr__stdio_gf41f158c022cbb6203ccd87d27301226) 3244 0 R (group__avr__stdio_gf47f5141509d1e434f9da2b27287a707) 3254 0 R] +/Limits [(group__avr__stdio_gdd5777719a41713629a62b68c239a774) (group__avr__stdio_gf47f5141509d1e434f9da2b27287a707)] +>> endobj +9930 0 obj << +/Names [(group__avr__stdio_gf577dcba9afe50a9d068d0b69ac85d2f) 3267 0 R (group__avr__stdio_stdio_note1) 5014 0 R (group__avr__stdio_stdio_note2) 5015 0 R (group__avr__stdio_stdio_note3) 5016 0 R (group__avr__stdio_stdio_without_malloc) 5011 0 R (group__avr__stdlib) 5312 0 R] +/Limits [(group__avr__stdio_gf577dcba9afe50a9d068d0b69ac85d2f) (group__avr__stdlib)] +>> endobj +9931 0 obj << +/Names [(group__avr__stdlib_g060c998e77fb5fc0d3168b3ce8771d42) 5347 0 R (group__avr__stdlib_g114aeb1751119382aaf3340355b22cfd) 3234 0 R (group__avr__stdlib_g125348f1e1fed1793426f4c4dc6fb2f7) 5350 0 R (group__avr__stdlib_g137096a48cc0c731052cadfb69c39b34) 2625 0 R (group__avr__stdlib_g1d4c7b84110553544081a69a0fc49c52) 5341 0 R (group__avr__stdlib_g268774f80047812307365f3113109767) 5349 0 R] +/Limits [(group__avr__stdlib_g060c998e77fb5fc0d3168b3ce8771d42) (group__avr__stdlib_g268774f80047812307365f3113109767)] +>> endobj +9932 0 obj << +/Names [(group__avr__stdlib_g3a1fe00c1327bbabc76688a7a1d73370) 5396 0 R (group__avr__stdlib_g3bd31f0d9a9127548b734e7ca03cc6df) 5346 0 R (group__avr__stdlib_g4996af830ebe744d9678e5251dfd3ebd) 2550 0 R (group__avr__stdlib_g4d7b1bf0f75d529cc75229a266132115) 5401 0 R (group__avr__stdlib_g4f6b3dd51c1f8519d5b8fce1dbf7a665) 5345 0 R (group__avr__stdlib_g4fca27496ca29c0a723d197696641eff) 5344 0 R] +/Limits [(group__avr__stdlib_g3a1fe00c1327bbabc76688a7a1d73370) (group__avr__stdlib_g4fca27496ca29c0a723d197696641eff)] +>> endobj +9933 0 obj << +/Names [(group__avr__stdlib_g51ac965dacbc9daf922f469bdcfe00c2) 3241 0 R (group__avr__stdlib_g5816f25bd0f45787cc16bebf6a735d8a) 5342 0 R (group__avr__stdlib_g5b688b463f9faaa82f31ac7587e06849) 5394 0 R (group__avr__stdlib_g5ee4d110a3bb55d2eadda05e3ebedf8a) 3237 0 R (group__avr__stdlib_g63e28bec3592384b44606f011634c5a8) 3967 0 R (group__avr__stdlib_g66e31b615d9ef1a19c452d64d7250112) 5343 0 R] +/Limits [(group__avr__stdlib_g51ac965dacbc9daf922f469bdcfe00c2) (group__avr__stdlib_g66e31b615d9ef1a19c452d64d7250112)] +>> endobj +9934 0 obj << +/Names [(group__avr__stdlib_g689c9d3c4c04463aa31d329937789d06) 5397 0 R (group__avr__stdlib_g690f251553b39fd4f31894826141b61a) 5351 0 R (group__avr__stdlib_g6c140bdd3b9bd740a1490137317caa44) 2820 0 R (group__avr__stdlib_g7486ea9a8a90ac6b93bed37d08ebbd9e) 5393 0 R (group__avr__stdlib_g764de49bd918caf24ce1caf3a10b3823) 5395 0 R (group__avr__stdlib_g815d0d26e215d9b78af1cb2288d22361) 5348 0 R] +/Limits [(group__avr__stdlib_g689c9d3c4c04463aa31d329937789d06) (group__avr__stdlib_g815d0d26e215d9b78af1cb2288d22361)] +>> endobj +9935 0 obj << +/Names [(group__avr__stdlib_g885c1ccefb716ff16ab73a57003140be) 5392 0 R (group__avr__stdlib_g9310042b3956282440c091d20cb98c5f) 5400 0 R (group__avr__stdlib_ga99a0733f06d2b9960a1401c2721af1e) 3236 0 R (group__avr__stdlib_gcceff9dc95bb3c5562dc9e61fc3d9075) 5398 0 R (group__avr__stdlib_gd37588b5e19ccf152d3e4447098402e2) 5352 0 R (group__avr__stdlib_gdb8c83badc195efc1229799391fececc) 5390 0 R] +/Limits [(group__avr__stdlib_g885c1ccefb716ff16ab73a57003140be) (group__avr__stdlib_gdb8c83badc195efc1229799391fececc)] +>> endobj +9936 0 obj << +/Names [(group__avr__stdlib_ge017047d6d0a688ccb622ff062dcd230) 5391 0 R (group__avr__stdlib_ge23144bcbb8e3742b00eb687c36654d1) 3233 0 R (group__avr__stdlib_gea44aa48bda8261f794dcb2d1e7ab2b2) 3239 0 R (group__avr__stdlib_gf5085001be836a0f2a5d3269a7c9fd04) 3235 0 R (group__avr__stdlib_gf8ce3b8dae3d45c34c3b172de503f7b3) 3238 0 R (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a) 2577 0 R] +/Limits [(group__avr__stdlib_ge017047d6d0a688ccb622ff062dcd230) (group__avr__stdlib_gfb8699abb1f51d920a176e695ff3be8a)] +>> endobj +9937 0 obj << +/Names [(group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) 2589 0 R (group__avr__stdlib_gfd4bf2faec43342e7ad3d2ab37bac1fe) 2818 0 R (group__avr__stdlib_gffadd67736fd340e893fb22c207de597) 5399 0 R (group__avr__string) 5583 0 R (group__avr__string_g119342b34031ba4ee28f4e38a22c5f0d) 5637 0 R (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc) 5595 0 R] +/Limits [(group__avr__stdlib_gfd300bad8b4dd2e88b07d464d76c92aa) (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc)] +>> endobj +9938 0 obj << +/Names [(group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) 5601 0 R (group__avr__string_g36cc0ab27fbcc70615214170ae79fbf7) 5640 0 R (group__avr__string_g386481b53df5f2437a1da78b400b6440) 5643 0 R (group__avr__string_g3d3e512a095039a7e2f86859537d761b) 5642 0 R (group__avr__string_g46f3cbd2de457c0fb340a1f379fc33ba) 3089 0 R (group__avr__string_g4a03589020c79fa0b93673634bef711b) 5602 0 R] +/Limits [(group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) (group__avr__string_g4a03589020c79fa0b93673634bef711b)] +>> endobj +9939 0 obj << +/Names [(group__avr__string_g4cd54dc9109f0d3da49d9c35e6441b61) 5593 0 R (group__avr__string_g53e212c1732d63bc80f649e542aff120) 5633 0 R (group__avr__string_g54e4f23104fa6f722f9459d2673a1eba) 5632 0 R (group__avr__string_g5f60008005ea7557430149926cf583d7) 5594 0 R (group__avr__string_g5f625e090454a8cfbbfaafba26b5bf3b) 5603 0 R (group__avr__string_g60b6f90e97d0574c5f5725d9db15cd9d) 5638 0 R] +/Limits [(group__avr__string_g4cd54dc9109f0d3da49d9c35e6441b61) (group__avr__string_g60b6f90e97d0574c5f5725d9db15cd9d)] +>> endobj +9940 0 obj << +/Names [(group__avr__string_g63e609bfa0d354dcd7e35b297c2e6fdd) 5635 0 R (group__avr__string_g64bc119cf084d1ecfd95098994597f12) 5636 0 R (group__avr__string_g6a441da9211eb85881d99c60b1003552) 5648 0 R (group__avr__string_g6ace85338eafe22a0ff52c00eb9779b8) 5649 0 R (group__avr__string_g7fd4936b86eb6b87e98587044c562715) 3090 0 R (group__avr__string_g81577c743915e4fb8759ef9081f10838) 5641 0 R] +/Limits [(group__avr__string_g63e609bfa0d354dcd7e35b297c2e6fdd) (group__avr__string_g81577c743915e4fb8759ef9081f10838)] +>> endobj +9941 0 obj << +/Names [(group__avr__string_g84c8b3489ec089d8be4c30f42104828b) 5644 0 R (group__avr__string_g8569f20e38a030b5a28fd951abec2c9b) 5634 0 R (group__avr__string_g8d270897496bfff9daf51edd64d712d0) 5592 0 R (group__avr__string_g8efa99bafd35937d045832774bf57486) 5596 0 R (group__avr__string_g8f2913a691990ae107e9687b8949b553) 5591 0 R (group__avr__string_g8f49550cc1e16fff2d707f91667eb80c) 5598 0 R] +/Limits [(group__avr__string_g84c8b3489ec089d8be4c30f42104828b) (group__avr__string_g8f49550cc1e16fff2d707f91667eb80c)] +>> endobj +9942 0 obj << +/Names [(group__avr__string_g9ce73bf9cc6fe7fc3dc88b3dce7ed33f) 5597 0 R (group__avr__string_ga50fa5cd42285f7c3980a3b0eafe77b5) 5651 0 R (group__avr__string_gb978764fd2814cd14f9f1a3620aa4ca2) 5588 0 R (group__avr__string_gc0dbc25e8b202114031a4aa2a7c5177b) 5650 0 R (group__avr__string_gcbc51d76d5f8f4cacf27238494d866d8) 5647 0 R (group__avr__string_gcc4734579c84c1b33a9ba9433f2063e4) 5589 0 R] +/Limits [(group__avr__string_g9ce73bf9cc6fe7fc3dc88b3dce7ed33f) (group__avr__string_gcc4734579c84c1b33a9ba9433f2063e4)] +>> endobj +9943 0 obj << +/Names [(group__avr__string_gcfdb3ab0c1f988f86d04d706d8e0ce3f) 5645 0 R (group__avr__string_gd9ad8d36c2a662f6f3ff420fb0f25826) 5590 0 R (group__avr__string_ge240697c78aee7b9c47cb2c9452526ea) 5600 0 R (group__avr__string_gea3f5ad280b6d689b5f9937ef6f0d805) 5599 0 R (group__avr__string_gedb0e7bb7333d6122472acddb5df20ac) 5587 0 R (group__avr__string_gfa4a8701698b766f40180c735726cfe7) 5639 0 R] +/Limits [(group__avr__string_gcfdb3ab0c1f988f86d04d706d8e0ce3f) (group__avr__string_gfa4a8701698b766f40180c735726cfe7)] +>> endobj +9944 0 obj << +/Names [(group__avr__string_gff88adec2ad0446259766197ec3863de) 5646 0 R (group__avr__version) 6613 0 R (group__avr__version_g09c3581176726e46963330ae12270bf6) 6628 0 R (group__avr__version_g161e98ee1c31a16eeb71fc87dc73526f) 6638 0 R (group__avr__version_g45476ad3a5db9be5a45d098bb1b093b1) 6636 0 R (group__avr__version_g8a657f9b659536d9c0c3c03ca441bb00) 6632 0 R] +/Limits [(group__avr__string_gff88adec2ad0446259766197ec3863de) (group__avr__version_g8a657f9b659536d9c0c3c03ca441bb00)] +>> endobj +9945 0 obj << +/Names [(group__avr__version_gaabd42be463ab59be357639b50bd722c) 6634 0 R (group__avr__version_gace584c6d368436814b4fe12d71230f9) 6639 0 R (group__avr__version_gdecde61fc0ef6e31f4dd6c732913aba8) 6630 0 R (group__avr__watchdog) 6646 0 R (group__avr__watchdog_g057dd21dc54e71de0e20d8bd5734915d) 6669 0 R (group__avr__watchdog_g05fc682d276a36d8cc4e9178340ff004) 6675 0 R] +/Limits [(group__avr__version_gaabd42be463ab59be357639b50bd722c) (group__avr__watchdog_g05fc682d276a36d8cc4e9178340ff004)] +>> endobj +9946 0 obj << +/Names [(group__avr__watchdog_g36302e15f38a4eeb8a328724bb8165e9) 6674 0 R (group__avr__watchdog_g66d5f50cc76b92c76900d77ef577d53e) 6672 0 R (group__avr__watchdog_g752b0b1b5ba9009bc09976494313e30d) 6676 0 R (group__avr__watchdog_g7a5b072c51c05a34cc38111f0e6724e5) 6670 0 R (group__avr__watchdog_g7d028bcdb4a4103549fc6fb4ec07fbcd) 6671 0 R (group__avr__watchdog_g9e52c54d10b6a6a7ce04aaaa4abea51f) 2860 0 R] +/Limits [(group__avr__watchdog_g36302e15f38a4eeb8a328724bb8165e9) (group__avr__watchdog_g9e52c54d10b6a6a7ce04aaaa4abea51f)] +>> endobj +9947 0 obj << +/Names [(group__avr__watchdog_gb3784e1b871d61ed338da5658184b725) 6665 0 R (group__avr__watchdog_gcf89fc5fb6c8aa9efaadb86872cfbcdf) 6673 0 R (group__avr__watchdog_gd45893280f49113ffc2e67e1d741f29d) 6668 0 R (group__avr__watchdog_gf074e538b2a1d5031931530f29a09fce) 6677 0 R (group__avr__watchdog_gf6cfea2a1b61e2530ea0c4ef8fc572b3) 6667 0 R (group__compat__ina90) 7020 0 R] +/Limits [(group__avr__watchdog_gb3784e1b871d61ed338da5658184b725) (group__compat__ina90)] +>> endobj +9948 0 obj << +/Names [(group__ctype) 3966 0 R (group__ctype_g04826722a22243889683efde883e8ab3) 4008 0 R (group__ctype_g125dbbabac1caef46a0c6dad060a79d1) 4007 0 R (group__ctype_g16e58710aba8108549a1a3c33691b24e) 4006 0 R (group__ctype_g21d5ec3792b2704ecca5778b758dd91f) 4009 0 R (group__ctype_g41f2d44607ddcc15266bd63cb8e563c4) 3999 0 R] +/Limits [(group__ctype) (group__ctype_g41f2d44607ddcc15266bd63cb8e563c4)] +>> endobj +9949 0 obj << +/Names [(group__ctype_g49b21b266576c2490dab1e8f897c801a) 3998 0 R (group__ctype_g659606df93739b0193c9e98df2953ae0) 4001 0 R (group__ctype_g66e77eea7376ce0c1e00223f45d0aba9) 3996 0 R (group__ctype_g924ed052807e23cfa160d5f171cf5e2a) 4011 0 R (group__ctype_g9ba1fce7148e9b63ca6296e02c79bedd) 4010 0 R (group__ctype_ga2ded03e3a0d8f5ef2a8df3e834e916d) 4004 0 R] +/Limits [(group__ctype_g49b21b266576c2490dab1e8f897c801a) (group__ctype_ga2ded03e3a0d8f5ef2a8df3e834e916d)] +>> endobj +9950 0 obj << +/Names [(group__ctype_ga46e128f7550afb4f2cda133594cb4b6) 4005 0 R (group__ctype_gd1a49aed816573f1b5787176f5ec701e) 4000 0 R (group__ctype_ge293e218972b626f6304aecbae044ef6) 4003 0 R (group__ctype_ge62f8f9e20430c822d07697b277c5de7) 3994 0 R (group__ctype_ge89269f754744bbd5486788d06e0c7c9) 4002 0 R (group__demo__project) 3568 0 R] +/Limits [(group__ctype_ga46e128f7550afb4f2cda133594cb4b6) (group__demo__project)] +>> endobj +9951 0 obj << +/Names [(group__demo__project_demo_ihex) 7136 0 R (group__demo__project_demo_make) 7141 0 R (group__demo__project_demo_project_compile) 7099 0 R (group__demo__project_demo_project_desc) 7072 0 R (group__demo__project_demo_project_map) 7126 0 R (group__demo__project_demo_project_obj) 7105 0 R] +/Limits [(group__demo__project_demo_ihex) (group__demo__project_demo_project_obj)] +>> endobj +9952 0 obj << +/Names [(group__demo__project_demo_project_schematic) 7073 0 R (group__demo__project_demo_project_src) 7083 0 R (group__demo__project_demo_sourceref) 7156 0 R (group__demos) 7021 0 R (group__deprecated__items) 6966 0 R (group__deprecated__items_g014ef751e83f97569c06f3cdd888f3f7) 3611 0 R] +/Limits [(group__demo__project_demo_project_schematic) (group__deprecated__items_g014ef751e83f97569c06f3cdd888f3f7)] +>> endobj +9953 0 obj << +/Names [(group__deprecated__items_g08ee265dc07048dbb5a8b6c84551d520) 3612 0 R (group__deprecated__items_g3a3b4c1ddf0c05701f933d70de330f08) 3610 0 R (group__deprecated__items_g46f0b87ccc2ab63dea1ff28207270b82) 3604 0 R (group__deprecated__items_g5cfa4750a0633c34c7a361d8fd62c042) 3607 0 R (group__deprecated__items_g65483663c17f94d50d9e24e277bd7bbb) 6977 0 R (group__deprecated__items_g9a3fe82a7199e9e84f7be6a5f23127bc) 3605 0 R] +/Limits [(group__deprecated__items_g08ee265dc07048dbb5a8b6c84551d520) (group__deprecated__items_g9a3fe82a7199e9e84f7be6a5f23127bc)] +>> endobj +9954 0 obj << +/Names [(group__deprecated__items_ga0b2d3a87492967c01615f32f30d06d5) 3606 0 R (group__deprecated__items_gab324bd721e821e275f00c3478e240c9) 3608 0 R (group__deprecated__items_gd6488a48837d179b1833e2f48dac9665) 3609 0 R (group__largedemo) 7022 0 R (group__largedemo_largedemo_code) 7191 0 R (group__largedemo_largedemo_code_p1) 7192 0 R] +/Limits [(group__deprecated__items_ga0b2d3a87492967c01615f32f30d06d5) (group__largedemo_largedemo_code_p1)] +>> endobj +9955 0 obj << +/Names [(group__largedemo_largedemo_code_p2) 7203 0 R (group__largedemo_largedemo_code_p3) 7205 0 R (group__largedemo_largedemo_code_p4) 7214 0 R (group__largedemo_largedemo_code_p5) 7216 0 R (group__largedemo_largedemo_hw) 7157 0 R (group__largedemo_largedemo_overview) 7190 0 R] +/Limits [(group__largedemo_largedemo_code_p2) (group__largedemo_largedemo_overview)] +>> endobj +9956 0 obj << +/Names [(group__largedemo_largedemo_src) 7194 0 R (group__setjmp) 4610 0 R (group__setjmp_g2687c5ef7a3f376db90908999a9a7fc6) 4612 0 R (group__setjmp_g87f44eafaab5ec0ef8f5a11a8b853acf) 4613 0 R (group__stdiodemo) 7023 0 R (group__stdiodemo_stdiodemo_code) 7250 0 R] +/Limits [(group__largedemo_largedemo_src) (group__stdiodemo_stdiodemo_code)] +>> endobj +9957 0 obj << +/Names [(group__stdiodemo_stdiodemo_defines) 7265 0 R (group__stdiodemo_stdiodemo_hd44780_c) 7274 0 R (group__stdiodemo_stdiodemo_hd44780_h) 7272 0 R (group__stdiodemo_stdiodemo_hw) 7230 0 R (group__stdiodemo_stdiodemo_lcd_c) 7287 0 R (group__stdiodemo_stdiodemo_lcd_h) 7285 0 R] +/Limits [(group__stdiodemo_stdiodemo_defines) (group__stdiodemo_stdiodemo_lcd_h)] +>> endobj +9958 0 obj << +/Names [(group__stdiodemo_stdiodemo_main) 7251 0 R (group__stdiodemo_stdiodemo_overview) 7236 0 R (group__stdiodemo_stdiodemo_src) 7304 0 R (group__stdiodemo_stdiodemo_uart_c) 7297 0 R (group__stdiodemo_stdiodemo_uart_h) 7295 0 R (group__twi__demo) 7041 0 R] +/Limits [(group__stdiodemo_stdiodemo_main) (group__twi__demo)] +>> endobj +9959 0 obj << +/Names [(group__twi__demo_twi_demo_intro) 7305 0 R (group__twi__demo_twi_demo_project) 7310 0 R (group__twi__demo_twi_demo_src) 7311 0 R (group__util__atomic) 6703 0 R (group__util__atomic_g362c18b15a09703e42e1c246c47420ef) 6722 0 R (group__util__atomic_g6e195ee2117559a25f77fbba9054674a) 6724 0 R] +/Limits [(group__twi__demo_twi_demo_intro) (group__util__atomic_g6e195ee2117559a25f77fbba9054674a)] +>> endobj +9960 0 obj << +/Names [(group__util__atomic_g92b11103b4b3b000a3190f0d26ba7062) 6720 0 R (group__util__atomic_gaaea265b31dabcfb3098bec7685c39e4) 3240 0 R (group__util__atomic_gb075653bf638fae9db049575741d3152) 6725 0 R (group__util__atomic_gfb959d7d00d2d790b58d0e9880ea255a) 6726 0 R (group__util__crc) 6734 0 R (group__util__crc_g1c1d3ad875310cbc58000e24d981ad20) 6759 0 R] +/Limits [(group__util__atomic_g92b11103b4b3b000a3190f0d26ba7062) (group__util__crc_g1c1d3ad875310cbc58000e24d981ad20)] +>> endobj +9961 0 obj << +/Names [(group__util__crc_g37b2f691ebbd917e36e40b096f78d996) 6760 0 R (group__util__crc_g95371c87f25b0a2497d9cba13190847f) 6756 0 R (group__util__crc_gca726c22a1900f9bad52594c8846115f) 6758 0 R (group__util__delay) 6774 0 R (group__util__delay__basic) 6802 0 R (group__util__delay__basic_g4e3957917c4c447d0f9166dac881b4e3) 6804 0 R] +/Limits [(group__util__crc_g37b2f691ebbd917e36e40b096f78d996) (group__util__delay__basic_g4e3957917c4c447d0f9166dac881b4e3)] +>> endobj +9962 0 obj << +/Names [(group__util__delay__basic_g74a94fec42bac9f1ff31fd443d419a6a) 6787 0 R (group__util__delay_gb20bfffeacc678cb960944f5519c0c4f) 6786 0 R (group__util__delay_gd22e7a36b80e2f917324dc43a425e9d3) 6784 0 R (group__util__parity) 6812 0 R (group__util__parity_g4180eaa9b8f27f8efc589f3a3ba1724c) 6814 0 R (group__util__setbaud) 6820 0 R] +/Limits [(group__util__delay__basic_g74a94fec42bac9f1ff31fd443d419a6a) (group__util__setbaud)] +>> endobj +9963 0 obj << +/Names [(group__util__setbaud_g0b029ff580b042a27aaac4bd2ec925e2) 6835 0 R (group__util__setbaud_g39ebec5d04e582b7b6ed9a72b973983c) 6839 0 R (group__util__setbaud_g6977ce48ae3197f3f016b85d98380509) 6840 0 R (group__util__setbaud_g8188daef772f5eb3fc81dfee168905e2) 6837 0 R (group__util__setbaud_gddaa61b72aca51ed4835978d500f8755) 6833 0 R (group__util__twi) 6862 0 R] +/Limits [(group__util__setbaud_g0b029ff580b042a27aaac4bd2ec925e2) (group__util__twi)] +>> endobj +9964 0 obj << +/Names [(group__util__twi_g0ecd2ca38d00279194460e65028a0533) 6906 0 R (group__util__twi_g1064659d0758206d43d69cd582d1f5da) 6907 0 R (group__util__twi_g1c3ed5ed345d17972002b9fd07f4f829) 6912 0 R (group__util__twi_g2de84bf7cbf1cd7ae43a6e0f0eeca719) 6908 0 R (group__util__twi_g3c8c79b2ecb8d22358839890161cc33b) 6901 0 R (group__util__twi_g42234278f9b01b9af75dbbc617b97890) 6918 0 R] +/Limits [(group__util__twi_g0ecd2ca38d00279194460e65028a0533) (group__util__twi_g42234278f9b01b9af75dbbc617b97890)] +>> endobj +9965 0 obj << +/Names [(group__util__twi_g4440385d1818b4fe89b20341ea47b75a) 6922 0 R (group__util__twi_g4756103341a65e0e3889996cdf15b2fa) 6914 0 R (group__util__twi_g4abaad098fd92bed63719ffb01802c8d) 6917 0 R (group__util__twi_g4c28186053b5298305b131ad3e1111f7) 6868 0 R (group__util__twi_g532f0ffa12f684346c74a5cbec15950e) 6903 0 R (group__util__twi_g5959251c4bd80f48b5a029447d86adb3) 6870 0 R] +/Limits [(group__util__twi_g4440385d1818b4fe89b20341ea47b75a) (group__util__twi_g5959251c4bd80f48b5a029447d86adb3)] +>> endobj +9966 0 obj << +/Names [(group__util__twi_g655325b6f8a1818103b126cc3774d8e8) 6905 0 R (group__util__twi_g6c0fa701fe9d96b0b7df29e8af154f94) 6916 0 R (group__util__twi_g6eb3b4230887a8b73d7787ff231ea911) 6913 0 R (group__util__twi_g85cae14b4190042335d25ed9a1b72369) 6866 0 R (group__util__twi_g8d3aca0acc182f459a51797321728168) 6921 0 R (group__util__twi_g8dce3e4b7e35355a8add9ed63d1fa3ab) 6865 0 R] +/Limits [(group__util__twi_g655325b6f8a1818103b126cc3774d8e8) (group__util__twi_g8dce3e4b7e35355a8add9ed63d1fa3ab)] +>> endobj +9967 0 obj << +/Names [(group__util__twi_g8ec630c2063d0353c53d140b99382d80) 6864 0 R (group__util__twi_g90d373160b1d0a3f0c454af83c57df71) 6898 0 R (group__util__twi_g91c107a74d268f8578d866ed1bbbd4f3) 6869 0 R (group__util__twi_g98d2570f965790884cf1774e716ec629) 6919 0 R (group__util__twi_g9e9e761d674793772e6b3f77fc9d7fab) 6911 0 R (group__util__twi_gbcff70642634cb53e9d8e93872f70c90) 6920 0 R] +/Limits [(group__util__twi_g8ec630c2063d0353c53d140b99382d80) (group__util__twi_gbcff70642634cb53e9d8e93872f70c90)] +>> endobj +9968 0 obj << +/Names [(group__util__twi_gc16504b87d15d83b97bb0ce61577bb40) 6904 0 R (group__util__twi_gc50f1a59c74c3109d4913dbecfb472c1) 6915 0 R (group__util__twi_gc8a7cb1a91946c6e3955608a91371148) 6924 0 R (group__util__twi_gca64b973c51d6548a962c1d7cae0663e) 6867 0 R (group__util__twi_gcc1837317b1d45e9bb49b8e83cfe6d42) 6909 0 R (group__util__twi_gd85222308836bfbe099255662ffb510c) 6871 0 R] +/Limits [(group__util__twi_gc16504b87d15d83b97bb0ce61577bb40) (group__util__twi_gd85222308836bfbe099255662ffb510c)] +>> endobj +9969 0 obj << +/Names [(group__util__twi_gf40f13cadca25e0a83dc096858907819) 6923 0 R (group__util__twi_gf92d03d0051d47f5b9375f0ef9293d64) 6910 0 R (index) 2427 0 R (index_avr_libc_general) 2439 0 R (index_avr_libc_intro) 2428 0 R (index_license) 2480 0 R] +/Limits [(group__util__twi_gf40f13cadca25e0a83dc096858907819) (index_license)] +>> endobj +9970 0 obj << +/Names [(index_supp_dev_footnote_one) 2456 0 R (index_supp_dev_footnote_three) 2474 0 R (index_supp_dev_footnote_two) 2473 0 R (index_supp_devices) 2441 0 R (inline_asm) 2676 0 R (inline_asm_asm_c_stubs) 2771 0 R] +/Limits [(index_supp_dev_footnote_one) (inline_asm_asm_c_stubs)] +>> endobj +9971 0 obj << +/Names [(inline_asm_asm_code) 2731 0 R (inline_asm_asm_macros) 2764 0 R (inline_asm_c_names_in_asm) 2778 0 R (inline_asm_clobbers) 2755 0 R (inline_asm_gcc_asm) 2718 0 R (inline_asm_io_ops) 2736 0 R] +/Limits [(inline_asm_asm_code) (inline_asm_io_ops)] +>> endobj +9972 0 obj << +/Names [(inline_asm_links) 2784 0 R (install_tools) 3286 0 R (install_tools_install_avarice) 3322 0 R (install_tools_install_avr_binutils) 3310 0 R (install_tools_install_avr_gcc) 3311 0 R (install_tools_install_avr_libc) 3312 0 R] +/Limits [(inline_asm_links) (install_tools_install_avr_libc)] +>> endobj +9973 0 obj << +/Names [(install_tools_install_avrprog) 3313 0 R (install_tools_install_gdb) 3315 0 R (install_tools_install_simulavr) 3316 0 R (install_tools_install_unix) 3287 0 R (install_tools_install_windows) 3353 0 R (install_tools_install_windows_building) 3388 0 R] +/Limits [(install_tools_install_avrprog) (install_tools_install_windows_building)] +>> endobj +9974 0 obj << +/Names [(install_tools_install_windows_tools) 3354 0 R (install_tools_optional_tools) 3309 0 R (install_tools_path) 3288 0 R (install_tools_required_tools) 3308 0 R (interrupt_8h) 3741 0 R (inttypes_8h) 3742 0 R] +/Limits [(install_tools_install_windows_tools) (inttypes_8h)] +>> endobj +9975 0 obj << +/Names [(io_8h) 2695 0 R (library) 2785 0 R (library_library_creating) 2802 0 R (library_library_design) 2797 0 R (library_library_intro) 2786 0 R (library_library_linker) 2787 0 R] +/Limits [(io_8h) (library_library_linker)] +>> endobj +9976 0 obj << +/Names [(library_library_using) 2803 0 R (lock_8h) 3743 0 R (lock_8h_61321b31da523c12d3665036c7de8e9a) 7690 0 R (lock_8h_69aa4c0ca78bbd91770f6b6dbb7f7ea4) 7693 0 R (lock_8h_935280ce4cac0db7d6bf79a137c27dd0) 7691 0 R (lock_8h_d510cf15db04196d1ac396dee34310b7) 7692 0 R] +/Limits [(library_library_using) (lock_8h_d510cf15db04196d1ac396dee34310b7)] +>> endobj +9977 0 obj << +/Names [(malloc) 2521 0 R (malloc_malloc_extram) 2549 0 R (malloc_malloc_impl) 2572 0 R (malloc_malloc_intro) 2522 0 R (malloc_malloc_tunables) 2547 0 R (malloc_malloc_where) 2546 0 R] +/Limits [(malloc) (malloc_malloc_where)] +>> endobj +9978 0 obj << +/Names [(math_8h) 2981 0 R (mem_sections) 2523 0 R (mem_sections_asm_sections) 2619 0 R (mem_sections_c_sections) 2620 0 R (mem_sections_harvard_arch) 2552 0 R (mem_sections_sec_dot_bss) 2600 0 R] +/Limits [(math_8h) (mem_sections_sec_dot_bss)] +>> endobj +9979 0 obj << +/Names [(mem_sections_sec_dot_data) 2598 0 R (mem_sections_sec_dot_eeprom) 2601 0 R (mem_sections_sec_dot_fini) 2618 0 R (mem_sections_sec_dot_init) 2610 0 R (mem_sections_sec_dot_noinit) 2609 0 R (mem_sections_sec_dot_text) 2597 0 R] +/Limits [(mem_sections_sec_dot_data) (mem_sections_sec_dot_text)] +>> endobj +9980 0 obj << +/Names [(memccpy_8S) 3744 0 R (memchr_8S) 3745 0 R (memchr__P_8S) 3746 0 R (memcmp_8S) 3747 0 R (memcmp__P_8S) 3748 0 R (memcpy_8S) 3749 0 R] +/Limits [(memccpy_8S) (memcpy_8S)] +>> endobj +9981 0 obj << +/Names [(memcpy__P_8S) 3750 0 R (memmem_8S) 3751 0 R (memmove_8S) 3752 0 R (memrchr_8S) 3753 0 R (memrchr__P_8S) 3754 0 R (memset_8S) 3755 0 R] +/Limits [(memcpy__P_8S) (memset_8S)] +>> endobj +9982 0 obj << +/Names [(overview) 2485 0 R (overview_overview_avarice) 2511 0 R (overview_overview_avr-libc) 2503 0 R (overview_overview_avrdude) 2509 0 R (overview_overview_binutils) 2498 0 R (overview_overview_building_software) 2504 0 R] +/Limits [(overview) (overview_overview_building_software)] +>> endobj +9983 0 obj << +/Names [(overview_overview_distros) 2519 0 R (overview_overview_fsf_and_gnu) 2487 0 R (overview_overview_gcc) 2493 0 R (overview_overview_gdb_insight_ddd) 2510 0 R (overview_overview_introduction) 2486 0 R (overview_overview_open_source) 2520 0 R] +/Limits [(overview_overview_distros) (overview_overview_open_source)] +>> endobj +9984 0 obj << +/Names [(overview_overview_simulavr) 2512 0 R (overview_overview_utilities) 2513 0 R (page.1) 1880 0 R (page.10) 2492 0 R (page.100) 3401 0 R (page.101) 3405 0 R] +/Limits [(overview_overview_simulavr) (page.101)] +>> endobj +9985 0 obj << +/Names [(page.102) 3409 0 R (page.103) 3415 0 R (page.104) 3422 0 R (page.105) 3426 0 R (page.106) 3431 0 R (page.107) 3435 0 R] +/Limits [(page.102) (page.107)] +>> endobj +9986 0 obj << +/Names [(page.108) 3442 0 R (page.109) 3448 0 R (page.11) 2497 0 R (page.110) 3455 0 R (page.111) 3460 0 R (page.112) 3469 0 R] +/Limits [(page.108) (page.112)] +>> endobj +9987 0 obj << +/Names [(page.113) 3477 0 R (page.114) 3482 0 R (page.115) 3486 0 R (page.116) 3490 0 R (page.117) 3499 0 R (page.118) 3518 0 R] +/Limits [(page.113) (page.118)] +>> endobj +9988 0 obj << +/Names [(page.119) 3537 0 R (page.12) 2502 0 R (page.120) 3561 0 R (page.121) 3594 0 R (page.122) 3638 0 R (page.123) 3668 0 R] +/Limits [(page.119) (page.123)] +>> endobj +9989 0 obj << +/Names [(page.124) 3732 0 R (page.125) 3809 0 R (page.126) 3887 0 R (page.127) 3937 0 R (page.128) 3962 0 R (page.129) 3991 0 R] +/Limits [(page.124) (page.129)] +>> endobj +9990 0 obj << +/Names [(page.13) 2508 0 R (page.130) 4015 0 R (page.131) 4031 0 R (page.132) 4051 0 R (page.133) 4105 0 R (page.134) 4190 0 R] +/Limits [(page.13) (page.134)] +>> endobj +9991 0 obj << +/Names [(page.135) 4250 0 R (page.136) 4278 0 R (page.137) 4293 0 R (page.138) 4308 0 R (page.139) 4323 0 R (page.14) 2518 0 R] +/Limits [(page.135) (page.14)] +>> endobj +9992 0 obj << +/Names [(page.140) 4338 0 R (page.141) 4353 0 R (page.142) 4369 0 R (page.143) 4384 0 R (page.144) 4411 0 R (page.145) 4459 0 R] +/Limits [(page.140) (page.145)] +>> endobj +9993 0 obj << +/Names [(page.146) 4505 0 R (page.147) 4526 0 R (page.148) 4551 0 R (page.149) 4570 0 R (page.15) 2528 0 R (page.150) 4586 0 R] +/Limits [(page.146) (page.150)] +>> endobj +9994 0 obj << +/Names [(page.151) 4607 0 R (page.152) 4630 0 R (page.153) 4651 0 R (page.154) 4710 0 R (page.155) 4772 0 R (page.156) 4833 0 R] +/Limits [(page.151) (page.156)] +>> endobj +9995 0 obj << +/Names [(page.157) 4862 0 R (page.158) 4877 0 R (page.159) 4892 0 R (page.16) 2545 0 R (page.160) 4908 0 R (page.161) 4923 0 R] +/Limits [(page.157) (page.161)] +>> endobj +9996 0 obj << +/Names [(page.162) 4938 0 R (page.163) 4951 0 R (page.164) 4965 0 R (page.165) 4983 0 R (page.166) 5008 0 R (page.167) 5029 0 R] +/Limits [(page.162) (page.167)] +>> endobj +9997 0 obj << +/Names [(page.168) 5057 0 R (page.169) 5114 0 R (page.17) 2559 0 R (page.170) 5128 0 R (page.171) 5149 0 R (page.172) 5163 0 R] +/Limits [(page.168) (page.172)] +>> endobj +9998 0 obj << +/Names [(page.173) 5185 0 R (page.174) 5199 0 R (page.175) 5217 0 R (page.176) 5237 0 R (page.177) 5254 0 R (page.178) 5263 0 R] +/Limits [(page.173) (page.178)] +>> endobj +9999 0 obj << +/Names [(page.179) 5271 0 R (page.18) 2570 0 R (page.180) 5279 0 R (page.181) 5285 0 R (page.182) 5290 0 R (page.183) 5304 0 R] +/Limits [(page.179) (page.183)] +>> endobj +10000 0 obj << +/Names [(page.184) 5335 0 R (page.185) 5385 0 R (page.186) 5414 0 R (page.187) 5431 0 R (page.188) 5444 0 R (page.189) 5460 0 R] +/Limits [(page.184) (page.189)] +>> endobj +10001 0 obj << +/Names [(page.19) 2588 0 R (page.190) 5477 0 R (page.191) 5501 0 R (page.192) 5516 0 R (page.193) 5537 0 R (page.194) 5549 0 R] +/Limits [(page.19) (page.194)] +>> endobj +10002 0 obj << +/Names [(page.195) 5580 0 R (page.196) 5629 0 R (page.197) 5663 0 R (page.198) 5678 0 R (page.199) 5696 0 R (page.2) 2437 0 R] +/Limits [(page.195) (page.2)] +>> endobj +10003 0 obj << +/Names [(page.20) 2596 0 R (page.200) 5712 0 R (page.201) 5732 0 R (page.202) 5750 0 R (page.203) 5769 0 R (page.204) 5784 0 R] +/Limits [(page.20) (page.204)] +>> endobj +10004 0 obj << +/Names [(page.205) 5801 0 R (page.206) 5813 0 R (page.207) 5824 0 R (page.208) 5850 0 R (page.209) 5876 0 R (page.21) 2608 0 R] +/Limits [(page.205) (page.21)] +>> endobj +10005 0 obj << +/Names [(page.210) 5893 0 R (page.211) 5902 0 R (page.212) 5912 0 R (page.213) 5921 0 R (page.214) 5939 0 R (page.215) 5975 0 R] +/Limits [(page.210) (page.215)] +>> endobj +10006 0 obj << +/Names [(page.216) 5996 0 R (page.217) 6010 0 R (page.218) 6016 0 R (page.219) 6021 0 R (page.22) 2617 0 R (page.220) 6029 0 R] +/Limits [(page.216) (page.220)] +>> endobj +10007 0 obj << +/Names [(page.221) 6039 0 R (page.222) 6052 0 R (page.223) 6066 0 R (page.224) 6073 0 R (page.225) 6077 0 R (page.226) 6082 0 R] +/Limits [(page.221) (page.226)] +>> endobj +10008 0 obj << +/Names [(page.227) 6086 0 R (page.228) 6090 0 R (page.229) 6094 0 R (page.23) 2624 0 R (page.230) 6098 0 R (page.231) 6102 0 R] +/Limits [(page.227) (page.231)] +>> endobj +10009 0 obj << +/Names [(page.232) 6107 0 R (page.233) 6111 0 R (page.234) 6115 0 R (page.235) 6119 0 R (page.236) 6123 0 R (page.237) 6127 0 R] +/Limits [(page.232) (page.237)] +>> endobj +10010 0 obj << +/Names [(page.238) 6132 0 R (page.239) 6136 0 R (page.24) 2629 0 R (page.240) 6153 0 R (page.241) 6169 0 R (page.242) 6178 0 R] +/Limits [(page.238) (page.242)] +>> endobj +10011 0 obj << +/Names [(page.243) 6190 0 R (page.244) 6200 0 R (page.245) 6208 0 R (page.246) 6214 0 R (page.247) 6224 0 R (page.248) 6265 0 R] +/Limits [(page.243) (page.248)] +>> endobj +10012 0 obj << +/Names [(page.249) 6329 0 R (page.25) 2637 0 R (page.250) 6369 0 R (page.251) 6378 0 R (page.252) 6387 0 R (page.253) 6400 0 R] +/Limits [(page.249) (page.253)] +>> endobj +10013 0 obj << +/Names [(page.254) 6423 0 R (page.255) 6439 0 R (page.256) 6461 0 R (page.257) 6480 0 R (page.258) 6500 0 R (page.259) 6515 0 R] +/Limits [(page.254) (page.259)] +>> endobj +10014 0 obj << +/Names [(page.26) 2645 0 R (page.260) 6534 0 R (page.261) 6542 0 R (page.262) 6548 0 R (page.263) 6552 0 R (page.264) 6556 0 R] +/Limits [(page.26) (page.264)] +>> endobj +10015 0 obj << +/Names [(page.265) 6567 0 R (page.266) 6577 0 R (page.267) 6594 0 R (page.268) 6608 0 R (page.269) 6626 0 R (page.27) 2649 0 R] +/Limits [(page.265) (page.27)] +>> endobj +10016 0 obj << +/Names [(page.270) 6643 0 R (page.271) 6663 0 R (page.272) 6681 0 R (page.273) 6689 0 R (page.274) 6702 0 R (page.275) 6707 0 R] +/Limits [(page.270) (page.275)] +>> endobj +10017 0 obj << +/Names [(page.276) 6717 0 R (page.277) 6730 0 R (page.278) 6754 0 R (page.279) 6764 0 R (page.28) 2658 0 R (page.280) 6772 0 R] +/Limits [(page.276) (page.280)] +>> endobj +10018 0 obj << +/Names [(page.281) 6782 0 R (page.282) 6800 0 R (page.283) 6809 0 R (page.284) 6819 0 R (page.285) 6831 0 R (page.286) 6858 0 R] +/Limits [(page.281) (page.286)] +>> endobj +10019 0 obj << +/Names [(page.287) 6896 0 R (page.288) 6928 0 R (page.289) 6943 0 R (page.29) 2665 0 R (page.290) 6958 0 R (page.291) 6975 0 R] +/Limits [(page.287) (page.291)] +>> endobj +10020 0 obj << +/Names [(page.292) 6991 0 R (page.293) 7005 0 R (page.294) 7018 0 R (page.295) 7039 0 R (page.296) 7045 0 R (page.297) 7054 0 R] +/Limits [(page.292) (page.297)] +>> endobj +10021 0 obj << +/Names [(page.298) 7062 0 R (page.299) 7071 0 R (page.3) 2446 0 R (page.30) 2673 0 R (page.300) 7078 0 R (page.301) 7090 0 R] +/Limits [(page.298) (page.301)] +>> endobj +10022 0 obj << +/Names [(page.302) 7094 0 R (page.303) 7098 0 R (page.304) 7104 0 R (page.305) 7109 0 R (page.306) 7113 0 R (page.307) 7117 0 R] +/Limits [(page.302) (page.307)] +>> endobj +10023 0 obj << +/Names [(page.308) 7121 0 R (page.309) 7125 0 R (page.31) 2680 0 R (page.310) 7131 0 R (page.311) 7135 0 R (page.312) 7140 0 R] +/Limits [(page.308) (page.312)] +>> endobj +10024 0 obj << +/Names [(page.313) 7145 0 R (page.314) 7149 0 R (page.315) 7155 0 R (page.316) 7163 0 R (page.317) 7171 0 R (page.318) 7180 0 R] +/Limits [(page.313) (page.318)] +>> endobj +10025 0 obj << +/Names [(page.319) 7189 0 R (page.32) 2684 0 R (page.320) 7202 0 R (page.321) 7212 0 R (page.322) 7222 0 R (page.323) 7229 0 R] +/Limits [(page.319) (page.323)] +>> endobj +10026 0 obj << +/Names [(page.324) 7234 0 R (page.325) 7249 0 R (page.326) 7264 0 R (page.327) 7271 0 R (page.328) 7284 0 R (page.329) 7294 0 R] +/Limits [(page.324) (page.329)] +>> endobj +10027 0 obj << +/Names [(page.33) 2691 0 R (page.330) 7303 0 R (page.331) 7309 0 R (page.332) 7316 0 R (page.333) 7320 0 R (page.334) 7325 0 R] +/Limits [(page.33) (page.334)] +>> endobj +10028 0 obj << +/Names [(page.335) 7332 0 R (page.336) 7346 0 R (page.337) 7375 0 R (page.338) 7405 0 R (page.339) 7415 0 R (page.34) 2703 0 R] +/Limits [(page.335) (page.34)] +>> endobj +10029 0 obj << +/Names [(page.340) 7426 0 R (page.341) 7435 0 R (page.342) 7444 0 R (page.343) 7457 0 R (page.344) 7496 0 R (page.345) 7514 0 R] +/Limits [(page.340) (page.345)] +>> endobj +10030 0 obj << +/Names [(page.346) 7529 0 R (page.347) 7571 0 R (page.348) 7628 0 R (page.349) 7662 0 R (page.35) 2710 0 R (page.350) 7688 0 R] +/Limits [(page.346) (page.350)] +>> endobj +10031 0 obj << +/Names [(page.351) 7720 0 R (page.352) 7725 0 R (page.353) 7729 0 R (page.354) 7750 0 R (page.355) 7815 0 R (page.356) 7834 0 R] +/Limits [(page.351) (page.356)] +>> endobj +10032 0 obj << +/Names [(page.357) 7842 0 R (page.358) 7851 0 R (page.359) 7859 0 R (page.36) 2717 0 R (page.360) 7868 0 R (page.361) 7877 0 R] +/Limits [(page.357) (page.361)] +>> endobj +10033 0 obj << +/Names [(page.362) 7887 0 R (page.363) 7907 0 R (page.364) 7949 0 R (page.365) 7992 0 R (page.366) 8041 0 R (page.367) 8072 0 R] +/Limits [(page.362) (page.367)] +>> endobj +10034 0 obj << +/Names [(page.368) 8123 0 R (page.369) 8144 0 R (page.37) 2722 0 R (page.370) 8186 0 R (page.371) 8193 0 R (page.372) 8197 0 R] +/Limits [(page.368) (page.372)] +>> endobj +10035 0 obj << +/Names [(page.373) 8235 0 R (page.374) 8252 0 R (page.375) 8256 0 R (page.376) 8261 0 R (page.377) 8287 0 R (page.378) 8319 0 R] +/Limits [(page.373) (page.378)] +>> endobj +10036 0 obj << +/Names [(page.379) 8377 0 R (page.38) 2730 0 R (page.380) 8429 0 R (page.381) 8508 0 R (page.382) 8604 0 R (page.383) 8698 0 R] +/Limits [(page.379) (page.383)] +>> endobj +10037 0 obj << +/Names [(page.384) 8792 0 R (page.385) 8886 0 R (page.386) 8972 0 R (page.387) 9035 0 R (page.388) 9093 0 R (page.389) 9148 0 R] +/Limits [(page.384) (page.389)] +>> endobj +10038 0 obj << +/Names [(page.39) 2735 0 R (page.390) 9199 0 R (page.391) 9252 0 R (page.392) 9314 0 R (page.393) 9365 0 R (page.394) 9415 0 R] +/Limits [(page.39) (page.394)] +>> endobj +10039 0 obj << +/Names [(page.395) 9467 0 R (page.396) 9525 0 R (page.397) 9591 0 R (page.398) 9644 0 R (page.399) 9695 0 R (page.4) 2455 0 R] +/Limits [(page.395) (page.4)] +>> endobj +10040 0 obj << +/Names [(page.40) 2741 0 R (page.400) 9765 0 R (page.401) 9779 0 R (page.41) 2745 0 R (page.42) 2750 0 R (page.43) 2754 0 R] +/Limits [(page.40) (page.43)] +>> endobj +10041 0 obj << +/Names [(page.44) 2759 0 R (page.45) 2763 0 R (page.46) 2770 0 R (page.47) 2777 0 R (page.48) 2783 0 R (page.49) 2796 0 R] +/Limits [(page.44) (page.49)] +>> endobj +10042 0 obj << +/Names [(page.5) 2460 0 R (page.50) 2801 0 R (page.51) 2810 0 R (page.52) 2816 0 R (page.53) 2824 0 R (page.54) 2830 0 R] +/Limits [(page.5) (page.54)] +>> endobj +10043 0 obj << +/Names [(page.55) 2835 0 R (page.56) 2843 0 R (page.57) 2855 0 R (page.58) 2865 0 R (page.59) 2886 0 R (page.6) 2464 0 R] +/Limits [(page.55) (page.6)] +>> endobj +10044 0 obj << +/Names [(page.60) 2932 0 R (page.61) 2980 0 R (page.62) 2991 0 R (page.63) 2997 0 R (page.64) 3008 0 R (page.65) 3017 0 R] +/Limits [(page.60) (page.65)] +>> endobj +10045 0 obj << +/Names [(page.66) 3025 0 R (page.67) 3030 0 R (page.68) 3035 0 R (page.69) 3039 0 R (page.7) 2472 0 R (page.70) 3046 0 R] +/Limits [(page.66) (page.70)] +>> endobj +10046 0 obj << +/Names [(page.71) 3051 0 R (page.72) 3058 0 R (page.73) 3062 0 R (page.74) 3074 0 R (page.75) 3085 0 R (page.76) 3096 0 R] +/Limits [(page.71) (page.76)] +>> endobj +10047 0 obj << +/Names [(page.77) 3103 0 R (page.78) 3114 0 R (page.79) 3122 0 R (page.8) 2479 0 R (page.80) 3130 0 R (page.81) 3136 0 R] +/Limits [(page.77) (page.81)] +>> endobj +10048 0 obj << +/Names [(page.82) 3141 0 R (page.83) 3146 0 R (page.84) 3153 0 R (page.85) 3227 0 R (page.86) 3231 0 R (page.87) 3285 0 R] +/Limits [(page.82) (page.87)] +>> endobj +10049 0 obj << +/Names [(page.88) 3307 0 R (page.89) 3321 0 R (page.9) 2484 0 R (page.90) 3335 0 R (page.91) 3339 0 R (page.92) 3348 0 R] +/Limits [(page.88) (page.92)] +>> endobj +10050 0 obj << +/Names [(page.93) 3352 0 R (page.94) 3361 0 R (page.95) 3370 0 R (page.96) 3383 0 R (page.97) 3387 0 R (page.98) 3392 0 R] +/Limits [(page.93) (page.98)] +>> endobj +10051 0 obj << +/Names [(page.99) 3396 0 R (page.i) 1916 0 R (page.ii) 1951 0 R (page.iii) 1983 0 R (page.iv) 2017 0 R (page.ix) 2191 0 R] +/Limits [(page.99) (page.ix)] +>> endobj +10052 0 obj << +/Names [(page.v) 2051 0 R (page.vi) 2084 0 R (page.vii) 2121 0 R (page.viii) 2156 0 R (page.x) 2225 0 R (page.xi) 2260 0 R] +/Limits [(page.v) (page.xi)] +>> endobj +10053 0 obj << +/Names [(page.xii) 2295 0 R (page.xiii) 2331 0 R (page.xiv) 2366 0 R (page.xv) 2401 0 R (paragraph.22.1.2.1) 3942 0 R (paragraph.22.10.2.1) 5388 0 R] +/Limits [(page.xii) (paragraph.22.10.2.1)] +>> endobj +10054 0 obj << +/Names [(paragraph.22.10.2.2) 5389 0 R (paragraph.22.10.2.3) 5415 0 R (paragraph.22.10.2.4) 5416 0 R (paragraph.22.10.2.5) 5417 0 R (paragraph.22.10.3.1) 5418 0 R (paragraph.22.10.4.1) 5419 0 R] +/Limits [(paragraph.22.10.2.2) (paragraph.22.10.4.1)] +>> endobj +10055 0 obj << +/Names [(paragraph.22.10.4.10) 5447 0 R (paragraph.22.10.4.11) 5448 0 R (paragraph.22.10.4.12) 5461 0 R (paragraph.22.10.4.13) 5462 0 R (paragraph.22.10.4.14) 5463 0 R (paragraph.22.10.4.15) 5464 0 R] +/Limits [(paragraph.22.10.4.10) (paragraph.22.10.4.15)] +>> endobj +10056 0 obj << +/Names [(paragraph.22.10.4.16) 5478 0 R (paragraph.22.10.4.17) 5479 0 R (paragraph.22.10.4.18) 5480 0 R (paragraph.22.10.4.19) 5502 0 R (paragraph.22.10.4.2) 5420 0 R (paragraph.22.10.4.20) 5503 0 R] +/Limits [(paragraph.22.10.4.16) (paragraph.22.10.4.20)] +>> endobj +10057 0 obj << +/Names [(paragraph.22.10.4.21) 5504 0 R (paragraph.22.10.4.22) 5505 0 R (paragraph.22.10.4.23) 5506 0 R (paragraph.22.10.4.24) 5517 0 R (paragraph.22.10.4.25) 5518 0 R (paragraph.22.10.4.26) 5519 0 R] +/Limits [(paragraph.22.10.4.21) (paragraph.22.10.4.26)] +>> endobj +10058 0 obj << +/Names [(paragraph.22.10.4.27) 5520 0 R (paragraph.22.10.4.28) 5538 0 R (paragraph.22.10.4.29) 5540 0 R (paragraph.22.10.4.3) 5421 0 R (paragraph.22.10.4.30) 5550 0 R (paragraph.22.10.4.4) 5432 0 R] +/Limits [(paragraph.22.10.4.27) (paragraph.22.10.4.4)] +>> endobj +10059 0 obj << +/Names [(paragraph.22.10.4.5) 5433 0 R (paragraph.22.10.4.6) 5434 0 R (paragraph.22.10.4.7) 5435 0 R (paragraph.22.10.4.8) 5445 0 R (paragraph.22.10.4.9) 5446 0 R (paragraph.22.10.5.1) 5551 0 R] +/Limits [(paragraph.22.10.4.5) (paragraph.22.10.5.1)] +>> endobj +10060 0 obj << +/Names [(paragraph.22.10.5.2) 5581 0 R (paragraph.22.10.5.3) 5582 0 R (paragraph.22.11.2.1) 5630 0 R (paragraph.22.11.3.1) 5631 0 R (paragraph.22.11.3.10) 5698 0 R (paragraph.22.11.3.11) 5699 0 R] +/Limits [(paragraph.22.10.5.2) (paragraph.22.11.3.11)] +>> endobj +10061 0 obj << +/Names [(paragraph.22.11.3.12) 5700 0 R (paragraph.22.11.3.13) 5713 0 R (paragraph.22.11.3.14) 5714 0 R (paragraph.22.11.3.15) 5715 0 R (paragraph.22.11.3.16) 5716 0 R (paragraph.22.11.3.17) 5733 0 R] +/Limits [(paragraph.22.11.3.12) (paragraph.22.11.3.17)] +>> endobj +10062 0 obj << +/Names [(paragraph.22.11.3.18) 5734 0 R (paragraph.22.11.3.19) 5735 0 R (paragraph.22.11.3.2) 5664 0 R (paragraph.22.11.3.20) 5736 0 R (paragraph.22.11.3.21) 5751 0 R (paragraph.22.11.3.22) 5752 0 R] +/Limits [(paragraph.22.11.3.18) (paragraph.22.11.3.22)] +>> endobj +10063 0 obj << +/Names [(paragraph.22.11.3.23) 5753 0 R (paragraph.22.11.3.24) 5770 0 R (paragraph.22.11.3.25) 5771 0 R (paragraph.22.11.3.26) 5772 0 R (paragraph.22.11.3.27) 5773 0 R (paragraph.22.11.3.28) 5785 0 R] +/Limits [(paragraph.22.11.3.23) (paragraph.22.11.3.28)] +>> endobj +10064 0 obj << +/Names [(paragraph.22.11.3.29) 5786 0 R (paragraph.22.11.3.3) 5665 0 R (paragraph.22.11.3.30) 5787 0 R (paragraph.22.11.3.31) 5788 0 R (paragraph.22.11.3.32) 5802 0 R (paragraph.22.11.3.33) 5803 0 R] +/Limits [(paragraph.22.11.3.29) (paragraph.22.11.3.33)] +>> endobj +10065 0 obj << +/Names [(paragraph.22.11.3.34) 5804 0 R (paragraph.22.11.3.35) 5814 0 R (paragraph.22.11.3.36) 5815 0 R (paragraph.22.11.3.37) 5817 0 R (paragraph.22.11.3.38) 5825 0 R (paragraph.22.11.3.4) 5666 0 R] +/Limits [(paragraph.22.11.3.34) (paragraph.22.11.3.4)] +>> endobj +10066 0 obj << +/Names [(paragraph.22.11.3.5) 5667 0 R (paragraph.22.11.3.6) 5679 0 R (paragraph.22.11.3.7) 5680 0 R (paragraph.22.11.3.8) 5681 0 R (paragraph.22.11.3.9) 5697 0 R (paragraph.22.12.2.1) 5877 0 R] +/Limits [(paragraph.22.11.3.5) (paragraph.22.12.2.1)] +>> endobj +10067 0 obj << +/Names [(paragraph.22.12.2.10) 5913 0 R (paragraph.22.12.2.11) 5914 0 R (paragraph.22.12.2.12) 5915 0 R (paragraph.22.12.2.13) 5916 0 R (paragraph.22.12.2.14) 5917 0 R (paragraph.22.12.2.15) 5922 0 R] +/Limits [(paragraph.22.12.2.10) (paragraph.22.12.2.15)] +>> endobj +10068 0 obj << +/Names [(paragraph.22.12.2.16) 5923 0 R (paragraph.22.12.2.17) 5924 0 R (paragraph.22.12.2.18) 5925 0 R (paragraph.22.12.2.19) 5926 0 R (paragraph.22.12.2.2) 5879 0 R (paragraph.22.12.2.20) 5927 0 R] +/Limits [(paragraph.22.12.2.16) (paragraph.22.12.2.20)] +>> endobj +10069 0 obj << +/Names [(paragraph.22.12.2.21) 5940 0 R (paragraph.22.12.2.22) 5941 0 R (paragraph.22.12.2.23) 5942 0 R (paragraph.22.12.2.3) 5894 0 R (paragraph.22.12.2.4) 5895 0 R (paragraph.22.12.2.5) 5896 0 R] +/Limits [(paragraph.22.12.2.21) (paragraph.22.12.2.5)] +>> endobj +10070 0 obj << +/Names [(paragraph.22.12.2.6) 5903 0 R (paragraph.22.12.2.7) 5904 0 R (paragraph.22.12.2.8) 5905 0 R (paragraph.22.12.2.9) 5906 0 R (paragraph.22.13.2.1) 5978 0 R (paragraph.22.13.2.2) 5979 0 R] +/Limits [(paragraph.22.12.2.6) (paragraph.22.13.2.2)] +>> endobj +10071 0 obj << +/Names [(paragraph.22.13.2.3) 5981 0 R (paragraph.22.13.2.4) 5983 0 R (paragraph.22.13.2.5) 5997 0 R (paragraph.22.13.3.1) 5998 0 R (paragraph.22.13.3.2) 5999 0 R (paragraph.22.13.3.3) 6000 0 R] +/Limits [(paragraph.22.13.2.3) (paragraph.22.13.3.3)] +>> endobj +10072 0 obj << +/Names [(paragraph.22.13.3.4) 6001 0 R (paragraph.22.13.3.5) 6002 0 R (paragraph.22.13.3.6) 6003 0 R (paragraph.22.13.3.7) 6004 0 R (paragraph.22.13.3.8) 6011 0 R (paragraph.22.15.2.1) 6158 0 R] +/Limits [(paragraph.22.13.3.4) (paragraph.22.15.2.1)] +>> endobj +10073 0 obj << +/Names [(paragraph.22.15.2.10) 6191 0 R (paragraph.22.15.2.11) 6192 0 R (paragraph.22.15.2.12) 6193 0 R (paragraph.22.15.2.2) 6159 0 R (paragraph.22.15.2.3) 6170 0 R (paragraph.22.15.2.4) 6171 0 R] +/Limits [(paragraph.22.15.2.10) (paragraph.22.15.2.4)] +>> endobj +10074 0 obj << +/Names [(paragraph.22.15.2.5) 6173 0 R (paragraph.22.15.2.6) 6179 0 R (paragraph.22.15.2.7) 6180 0 R (paragraph.22.15.2.8) 6181 0 R (paragraph.22.15.2.9) 6182 0 R (paragraph.22.18.2.1) 6331 0 R] +/Limits [(paragraph.22.15.2.5) (paragraph.22.18.2.1)] +>> endobj +10075 0 obj << +/Names [(paragraph.22.18.2.10) 6382 0 R (paragraph.22.18.2.11) 6383 0 R (paragraph.22.18.2.12) 6388 0 R (paragraph.22.18.2.13) 6389 0 R (paragraph.22.18.2.14) 6390 0 R (paragraph.22.18.2.15) 6391 0 R] +/Limits [(paragraph.22.18.2.10) (paragraph.22.18.2.15)] +>> endobj +10076 0 obj << +/Names [(paragraph.22.18.2.16) 6392 0 R (paragraph.22.18.2.2) 6370 0 R (paragraph.22.18.2.3) 6371 0 R (paragraph.22.18.2.4) 6372 0 R (paragraph.22.18.2.5) 6373 0 R (paragraph.22.18.2.6) 6374 0 R] +/Limits [(paragraph.22.18.2.16) (paragraph.22.18.2.6)] +>> endobj +10077 0 obj << +/Names [(paragraph.22.18.2.7) 6379 0 R (paragraph.22.18.2.8) 6380 0 R (paragraph.22.18.2.9) 6381 0 R (paragraph.22.18.3.1) 6393 0 R (paragraph.22.18.3.10) 6407 0 R (paragraph.22.18.3.11) 6408 0 R] +/Limits [(paragraph.22.18.2.7) (paragraph.22.18.3.11)] +>> endobj +10078 0 obj << +/Names [(paragraph.22.18.3.2) 6394 0 R (paragraph.22.18.3.3) 6395 0 R (paragraph.22.18.3.4) 6401 0 R (paragraph.22.18.3.5) 6402 0 R (paragraph.22.18.3.6) 6403 0 R (paragraph.22.18.3.7) 6404 0 R] +/Limits [(paragraph.22.18.3.2) (paragraph.22.18.3.7)] +>> endobj +10079 0 obj << +/Names [(paragraph.22.18.3.8) 6405 0 R (paragraph.22.18.3.9) 6406 0 R (paragraph.22.18.4.1) 6424 0 R (paragraph.22.18.4.10) 6463 0 R (paragraph.22.18.4.11) 6464 0 R (paragraph.22.18.4.12) 6465 0 R] +/Limits [(paragraph.22.18.3.8) (paragraph.22.18.4.12)] +>> endobj +10080 0 obj << +/Names [(paragraph.22.18.4.13) 6481 0 R (paragraph.22.18.4.14) 6482 0 R (paragraph.22.18.4.15) 6483 0 R (paragraph.22.18.4.16) 6484 0 R (paragraph.22.18.4.17) 6501 0 R (paragraph.22.18.4.18) 6502 0 R] +/Limits [(paragraph.22.18.4.13) (paragraph.22.18.4.18)] +>> endobj +10081 0 obj << +/Names [(paragraph.22.18.4.19) 6503 0 R (paragraph.22.18.4.2) 6425 0 R (paragraph.22.18.4.20) 6516 0 R (paragraph.22.18.4.21) 6517 0 R (paragraph.22.18.4.22) 6518 0 R (paragraph.22.18.4.23) 6519 0 R] +/Limits [(paragraph.22.18.4.19) (paragraph.22.18.4.23)] +>> endobj +10082 0 obj << +/Names [(paragraph.22.18.4.24) 6535 0 R (paragraph.22.18.4.25) 6536 0 R (paragraph.22.18.4.26) 6537 0 R (paragraph.22.18.4.3) 6426 0 R (paragraph.22.18.4.4) 6427 0 R (paragraph.22.18.4.5) 6440 0 R] +/Limits [(paragraph.22.18.4.24) (paragraph.22.18.4.5)] +>> endobj +10083 0 obj << +/Names [(paragraph.22.18.4.6) 6441 0 R (paragraph.22.18.4.7) 6442 0 R (paragraph.22.18.4.8) 6443 0 R (paragraph.22.18.4.9) 6462 0 R (paragraph.22.2.2.1) 3965 0 R (paragraph.22.21.2.1) 6580 0 R] +/Limits [(paragraph.22.18.4.6) (paragraph.22.21.2.1)] +>> endobj +10084 0 obj << +/Names [(paragraph.22.21.2.2) 6582 0 R (paragraph.22.21.2.3) 6584 0 R (paragraph.22.21.2.4) 6586 0 R (paragraph.22.21.2.5) 6595 0 R (paragraph.22.22.2.1) 6610 0 R (paragraph.22.22.2.2) 6611 0 R] +/Limits [(paragraph.22.21.2.2) (paragraph.22.22.2.2)] +>> endobj +10085 0 obj << +/Names [(paragraph.22.22.2.3) 6612 0 R (paragraph.22.23.2.1) 6629 0 R (paragraph.22.23.2.2) 6631 0 R (paragraph.22.23.2.3) 6633 0 R (paragraph.22.23.2.4) 6635 0 R (paragraph.22.23.2.5) 6637 0 R] +/Limits [(paragraph.22.22.2.3) (paragraph.22.23.2.5)] +>> endobj +10086 0 obj << +/Names [(paragraph.22.23.2.6) 6644 0 R (paragraph.22.23.2.7) 6645 0 R (paragraph.22.24.2.1) 6666 0 R (paragraph.22.24.2.10) 6694 0 R (paragraph.22.24.2.11) 6695 0 R (paragraph.22.24.2.12) 6696 0 R] +/Limits [(paragraph.22.23.2.6) (paragraph.22.24.2.12)] +>> endobj +10087 0 obj << +/Names [(paragraph.22.24.2.13) 6697 0 R (paragraph.22.24.2.2) 6682 0 R (paragraph.22.24.2.3) 6683 0 R (paragraph.22.24.2.4) 6684 0 R (paragraph.22.24.2.5) 6685 0 R (paragraph.22.24.2.6) 6690 0 R] +/Limits [(paragraph.22.24.2.13) (paragraph.22.24.2.6)] +>> endobj +10088 0 obj << +/Names [(paragraph.22.24.2.7) 6691 0 R (paragraph.22.24.2.8) 6692 0 R (paragraph.22.24.2.9) 6693 0 R (paragraph.22.25.2.1) 6719 0 R (paragraph.22.25.2.2) 6721 0 R (paragraph.22.25.2.3) 6723 0 R] +/Limits [(paragraph.22.24.2.7) (paragraph.22.25.2.3)] +>> endobj +10089 0 obj << +/Names [(paragraph.22.25.2.4) 6731 0 R (paragraph.22.25.2.5) 6732 0 R (paragraph.22.25.2.6) 6733 0 R (paragraph.22.26.2.1) 6757 0 R (paragraph.22.26.2.2) 6765 0 R (paragraph.22.26.2.3) 6766 0 R] +/Limits [(paragraph.22.25.2.4) (paragraph.22.26.2.3)] +>> endobj +10090 0 obj << +/Names [(paragraph.22.26.2.4) 6773 0 R (paragraph.22.27.2.1) 6785 0 R (paragraph.22.27.2.2) 6801 0 R (paragraph.22.28.2.1) 6810 0 R (paragraph.22.28.2.2) 6811 0 R (paragraph.22.29.2.1) 6815 0 R] +/Limits [(paragraph.22.26.2.4) (paragraph.22.29.2.1)] +>> endobj +10091 0 obj << +/Names [(paragraph.22.3.2.1) 3995 0 R (paragraph.22.3.2.10) 4024 0 R (paragraph.22.3.2.11) 4025 0 R (paragraph.22.3.2.12) 4032 0 R (paragraph.22.3.2.13) 4033 0 R (paragraph.22.3.2.14) 4034 0 R] +/Limits [(paragraph.22.3.2.1) (paragraph.22.3.2.14)] +>> endobj +10092 0 obj << +/Names [(paragraph.22.3.2.15) 4035 0 R (paragraph.22.3.2.16) 4036 0 R (paragraph.22.3.2.2) 4016 0 R (paragraph.22.3.2.3) 4017 0 R (paragraph.22.3.2.4) 4018 0 R (paragraph.22.3.2.5) 4019 0 R] +/Limits [(paragraph.22.3.2.15) (paragraph.22.3.2.5)] +>> endobj +10093 0 obj << +/Names [(paragraph.22.3.2.6) 4020 0 R (paragraph.22.3.2.7) 4021 0 R (paragraph.22.3.2.8) 4022 0 R (paragraph.22.3.2.9) 4023 0 R (paragraph.22.30.2.1) 6834 0 R (paragraph.22.30.2.2) 6836 0 R] +/Limits [(paragraph.22.3.2.6) (paragraph.22.30.2.2)] +>> endobj +10094 0 obj << +/Names [(paragraph.22.30.2.3) 6859 0 R (paragraph.22.30.2.4) 6860 0 R (paragraph.22.30.2.5) 6861 0 R (paragraph.22.31.2.1) 6899 0 R (paragraph.22.31.2.10) 6935 0 R (paragraph.22.31.2.11) 6936 0 R] +/Limits [(paragraph.22.30.2.3) (paragraph.22.31.2.11)] +>> endobj +10095 0 obj << +/Names [(paragraph.22.31.2.12) 6937 0 R (paragraph.22.31.2.13) 6938 0 R (paragraph.22.31.2.14) 6939 0 R (paragraph.22.31.2.15) 6944 0 R (paragraph.22.31.2.16) 6945 0 R (paragraph.22.31.2.17) 6946 0 R] +/Limits [(paragraph.22.31.2.12) (paragraph.22.31.2.17)] +>> endobj +10096 0 obj << +/Names [(paragraph.22.31.2.18) 6947 0 R (paragraph.22.31.2.19) 6948 0 R (paragraph.22.31.2.2) 6900 0 R (paragraph.22.31.2.20) 6949 0 R (paragraph.22.31.2.21) 6950 0 R (paragraph.22.31.2.22) 6951 0 R] +/Limits [(paragraph.22.31.2.18) (paragraph.22.31.2.22)] +>> endobj +10097 0 obj << +/Names [(paragraph.22.31.2.23) 6952 0 R (paragraph.22.31.2.24) 6953 0 R (paragraph.22.31.2.25) 6954 0 R (paragraph.22.31.2.26) 6959 0 R (paragraph.22.31.2.27) 6960 0 R (paragraph.22.31.2.28) 6961 0 R] +/Limits [(paragraph.22.31.2.23) (paragraph.22.31.2.28)] +>> endobj +10098 0 obj << +/Names [(paragraph.22.31.2.29) 6962 0 R (paragraph.22.31.2.3) 6902 0 R (paragraph.22.31.2.30) 6963 0 R (paragraph.22.31.2.31) 6964 0 R (paragraph.22.31.2.32) 6965 0 R (paragraph.22.31.2.4) 6929 0 R] +/Limits [(paragraph.22.31.2.29) (paragraph.22.31.2.4)] +>> endobj +10099 0 obj << +/Names [(paragraph.22.31.2.5) 6930 0 R (paragraph.22.31.2.6) 6931 0 R (paragraph.22.31.2.7) 6932 0 R (paragraph.22.31.2.8) 6933 0 R (paragraph.22.31.2.9) 6934 0 R (paragraph.22.32.2.1) 6992 0 R] +/Limits [(paragraph.22.31.2.5) (paragraph.22.32.2.1)] +>> endobj +10100 0 obj << +/Names [(paragraph.22.32.2.2) 6993 0 R (paragraph.22.32.2.3) 6994 0 R (paragraph.22.32.2.4) 6995 0 R (paragraph.22.32.2.5) 7006 0 R (paragraph.22.32.2.6) 7007 0 R (paragraph.22.32.2.7) 7008 0 R] +/Limits [(paragraph.22.32.2.2) (paragraph.22.32.2.7)] +>> endobj +10101 0 obj << +/Names [(paragraph.22.32.2.8) 7009 0 R (paragraph.22.32.3.1) 7019 0 R (paragraph.22.35.2.1) 7049 0 R (paragraph.22.35.2.2) 7056 0 R (paragraph.22.35.2.3) 7064 0 R (paragraph.22.37.3.1) 7193 0 R] +/Limits [(paragraph.22.32.2.8) (paragraph.22.37.3.1)] +>> endobj +10102 0 obj << +/Names [(paragraph.22.37.3.2) 7204 0 R (paragraph.22.37.3.3) 7213 0 R (paragraph.22.37.3.4) 7215 0 R (paragraph.22.37.3.5) 7223 0 R (paragraph.22.38.3.1) 7252 0 R (paragraph.22.38.3.2) 7266 0 R] +/Limits [(paragraph.22.37.3.2) (paragraph.22.38.3.2)] +>> endobj +10103 0 obj << +/Names [(paragraph.22.38.3.3) 7273 0 R (paragraph.22.38.3.4) 7275 0 R (paragraph.22.38.3.5) 7286 0 R (paragraph.22.38.3.6) 7288 0 R (paragraph.22.38.3.7) 7296 0 R (paragraph.22.38.3.8) 7298 0 R] +/Limits [(paragraph.22.38.3.3) (paragraph.22.38.3.8)] +>> endobj +10104 0 obj << +/Names [(paragraph.22.4.2.1) 4054 0 R (paragraph.22.4.2.2) 4056 0 R (paragraph.22.5.2.1) 4251 0 R (paragraph.22.5.2.10) 4282 0 R (paragraph.22.5.2.11) 4283 0 R (paragraph.22.5.2.12) 4284 0 R] +/Limits [(paragraph.22.4.2.1) (paragraph.22.5.2.12)] +>> endobj +10105 0 obj << +/Names [(paragraph.22.5.2.13) 4285 0 R (paragraph.22.5.2.14) 4286 0 R (paragraph.22.5.2.15) 4287 0 R (paragraph.22.5.2.16) 4288 0 R (paragraph.22.5.2.17) 4289 0 R (paragraph.22.5.2.18) 4294 0 R] +/Limits [(paragraph.22.5.2.13) (paragraph.22.5.2.18)] +>> endobj +10106 0 obj << +/Names [(paragraph.22.5.2.19) 4295 0 R (paragraph.22.5.2.2) 4252 0 R (paragraph.22.5.2.20) 4296 0 R (paragraph.22.5.2.21) 4297 0 R (paragraph.22.5.2.22) 4298 0 R (paragraph.22.5.2.23) 4299 0 R] +/Limits [(paragraph.22.5.2.19) (paragraph.22.5.2.23)] +>> endobj +10107 0 obj << +/Names [(paragraph.22.5.2.24) 4300 0 R (paragraph.22.5.2.25) 4301 0 R (paragraph.22.5.2.26) 4302 0 R (paragraph.22.5.2.27) 4303 0 R (paragraph.22.5.2.28) 4304 0 R (paragraph.22.5.2.29) 4309 0 R] +/Limits [(paragraph.22.5.2.24) (paragraph.22.5.2.29)] +>> endobj +10108 0 obj << +/Names [(paragraph.22.5.2.3) 4253 0 R (paragraph.22.5.2.30) 4310 0 R (paragraph.22.5.2.31) 4311 0 R (paragraph.22.5.2.32) 4312 0 R (paragraph.22.5.2.33) 4313 0 R (paragraph.22.5.2.34) 4314 0 R] +/Limits [(paragraph.22.5.2.3) (paragraph.22.5.2.34)] +>> endobj +10109 0 obj << +/Names [(paragraph.22.5.2.35) 4315 0 R (paragraph.22.5.2.36) 4316 0 R (paragraph.22.5.2.37) 4317 0 R (paragraph.22.5.2.38) 4318 0 R (paragraph.22.5.2.39) 4319 0 R (paragraph.22.5.2.4) 4254 0 R] +/Limits [(paragraph.22.5.2.35) (paragraph.22.5.2.4)] +>> endobj +10110 0 obj << +/Names [(paragraph.22.5.2.40) 4324 0 R (paragraph.22.5.2.41) 4325 0 R (paragraph.22.5.2.42) 4326 0 R (paragraph.22.5.2.43) 4327 0 R (paragraph.22.5.2.44) 4328 0 R (paragraph.22.5.2.45) 4329 0 R] +/Limits [(paragraph.22.5.2.40) (paragraph.22.5.2.45)] +>> endobj +10111 0 obj << +/Names [(paragraph.22.5.2.46) 4330 0 R (paragraph.22.5.2.47) 4331 0 R (paragraph.22.5.2.48) 4332 0 R (paragraph.22.5.2.49) 4333 0 R (paragraph.22.5.2.5) 4255 0 R (paragraph.22.5.2.50) 4334 0 R] +/Limits [(paragraph.22.5.2.46) (paragraph.22.5.2.50)] +>> endobj +10112 0 obj << +/Names [(paragraph.22.5.2.51) 4339 0 R (paragraph.22.5.2.52) 4340 0 R (paragraph.22.5.2.53) 4341 0 R (paragraph.22.5.2.54) 4342 0 R (paragraph.22.5.2.55) 4343 0 R (paragraph.22.5.2.56) 4344 0 R] +/Limits [(paragraph.22.5.2.51) (paragraph.22.5.2.56)] +>> endobj +10113 0 obj << +/Names [(paragraph.22.5.2.57) 4345 0 R (paragraph.22.5.2.58) 4346 0 R (paragraph.22.5.2.59) 4347 0 R (paragraph.22.5.2.6) 4256 0 R (paragraph.22.5.2.60) 4348 0 R (paragraph.22.5.2.61) 4349 0 R] +/Limits [(paragraph.22.5.2.57) (paragraph.22.5.2.61)] +>> endobj +10114 0 obj << +/Names [(paragraph.22.5.2.62) 4354 0 R (paragraph.22.5.2.63) 4355 0 R (paragraph.22.5.2.64) 4356 0 R (paragraph.22.5.2.65) 4357 0 R (paragraph.22.5.2.66) 4358 0 R (paragraph.22.5.2.67) 4359 0 R] +/Limits [(paragraph.22.5.2.62) (paragraph.22.5.2.67)] +>> endobj +10115 0 obj << +/Names [(paragraph.22.5.2.68) 4360 0 R (paragraph.22.5.2.69) 4361 0 R (paragraph.22.5.2.7) 4279 0 R (paragraph.22.5.2.70) 4362 0 R (paragraph.22.5.2.71) 4363 0 R (paragraph.22.5.2.72) 4364 0 R] +/Limits [(paragraph.22.5.2.68) (paragraph.22.5.2.72)] +>> endobj +10116 0 obj << +/Names [(paragraph.22.5.2.73) 4370 0 R (paragraph.22.5.2.74) 4371 0 R (paragraph.22.5.2.75) 4372 0 R (paragraph.22.5.2.76) 4373 0 R (paragraph.22.5.2.77) 4374 0 R (paragraph.22.5.2.78) 4375 0 R] +/Limits [(paragraph.22.5.2.73) (paragraph.22.5.2.78)] +>> endobj +10117 0 obj << +/Names [(paragraph.22.5.2.79) 4376 0 R (paragraph.22.5.2.8) 4280 0 R (paragraph.22.5.2.80) 4377 0 R (paragraph.22.5.2.81) 4378 0 R (paragraph.22.5.2.82) 4379 0 R (paragraph.22.5.2.83) 4380 0 R] +/Limits [(paragraph.22.5.2.79) (paragraph.22.5.2.83)] +>> endobj +10118 0 obj << +/Names [(paragraph.22.5.2.84) 4385 0 R (paragraph.22.5.2.85) 4386 0 R (paragraph.22.5.2.86) 4387 0 R (paragraph.22.5.2.87) 4388 0 R (paragraph.22.5.2.88) 4389 0 R (paragraph.22.5.2.89) 4390 0 R] +/Limits [(paragraph.22.5.2.84) (paragraph.22.5.2.89)] +>> endobj +10119 0 obj << +/Names [(paragraph.22.5.2.9) 4281 0 R (paragraph.22.5.2.90) 4391 0 R (paragraph.22.5.2.91) 4392 0 R (paragraph.22.5.2.92) 4393 0 R (paragraph.22.5.2.93) 4394 0 R (paragraph.22.5.2.94) 4395 0 R] +/Limits [(paragraph.22.5.2.9) (paragraph.22.5.2.94)] +>> endobj +10120 0 obj << +/Names [(paragraph.22.5.2.95) 4412 0 R (paragraph.22.5.3.1) 4413 0 R (paragraph.22.5.3.2) 4414 0 R (paragraph.22.6.2.1) 4460 0 R (paragraph.22.6.2.2) 4461 0 R (paragraph.22.6.2.3) 4506 0 R] +/Limits [(paragraph.22.5.2.95) (paragraph.22.6.2.3)] +>> endobj +10121 0 obj << +/Names [(paragraph.22.6.2.4) 4507 0 R (paragraph.22.6.3.1) 4508 0 R (paragraph.22.6.3.10) 4530 0 R (paragraph.22.6.3.11) 4531 0 R (paragraph.22.6.3.12) 4532 0 R (paragraph.22.6.3.13) 4533 0 R] +/Limits [(paragraph.22.6.2.4) (paragraph.22.6.3.13)] +>> endobj +10122 0 obj << +/Names [(paragraph.22.6.3.14) 4534 0 R (paragraph.22.6.3.15) 4535 0 R (paragraph.22.6.3.16) 4536 0 R (paragraph.22.6.3.17) 4552 0 R (paragraph.22.6.3.18) 4553 0 R (paragraph.22.6.3.19) 4554 0 R] +/Limits [(paragraph.22.6.3.14) (paragraph.22.6.3.19)] +>> endobj +10123 0 obj << +/Names [(paragraph.22.6.3.2) 4509 0 R (paragraph.22.6.3.20) 4555 0 R (paragraph.22.6.3.21) 4556 0 R (paragraph.22.6.3.22) 4557 0 R (paragraph.22.6.3.23) 4558 0 R (paragraph.22.6.3.24) 4571 0 R] +/Limits [(paragraph.22.6.3.2) (paragraph.22.6.3.24)] +>> endobj +10124 0 obj << +/Names [(paragraph.22.6.3.25) 4572 0 R (paragraph.22.6.3.26) 4573 0 R (paragraph.22.6.3.27) 4574 0 R (paragraph.22.6.3.28) 4575 0 R (paragraph.22.6.3.29) 4587 0 R (paragraph.22.6.3.3) 4510 0 R] +/Limits [(paragraph.22.6.3.25) (paragraph.22.6.3.3)] +>> endobj +10125 0 obj << +/Names [(paragraph.22.6.3.30) 4588 0 R (paragraph.22.6.3.31) 4589 0 R (paragraph.22.6.3.32) 4590 0 R (paragraph.22.6.3.33) 4591 0 R (paragraph.22.6.3.34) 4592 0 R (paragraph.22.6.3.35) 4593 0 R] +/Limits [(paragraph.22.6.3.30) (paragraph.22.6.3.35)] +>> endobj +10126 0 obj << +/Names [(paragraph.22.6.3.36) 4608 0 R (paragraph.22.6.3.37) 4609 0 R (paragraph.22.6.3.4) 4511 0 R (paragraph.22.6.3.5) 4512 0 R (paragraph.22.6.3.6) 4513 0 R (paragraph.22.6.3.7) 4527 0 R] +/Limits [(paragraph.22.6.3.36) (paragraph.22.6.3.7)] +>> endobj +10127 0 obj << +/Names [(paragraph.22.6.3.8) 4528 0 R (paragraph.22.6.3.9) 4529 0 R (paragraph.22.7.2.1) 4632 0 R (paragraph.22.7.2.2) 4633 0 R (paragraph.22.8.2.1) 4863 0 R (paragraph.22.8.2.10) 4872 0 R] +/Limits [(paragraph.22.6.3.8) (paragraph.22.8.2.10)] +>> endobj +10128 0 obj << +/Names [(paragraph.22.8.2.11) 4873 0 R (paragraph.22.8.2.12) 4878 0 R (paragraph.22.8.2.13) 4879 0 R (paragraph.22.8.2.14) 4880 0 R (paragraph.22.8.2.15) 4881 0 R (paragraph.22.8.2.16) 4882 0 R] +/Limits [(paragraph.22.8.2.11) (paragraph.22.8.2.16)] +>> endobj +10129 0 obj << +/Names [(paragraph.22.8.2.17) 4883 0 R (paragraph.22.8.2.18) 4884 0 R (paragraph.22.8.2.19) 4885 0 R (paragraph.22.8.2.2) 4864 0 R (paragraph.22.8.2.20) 4886 0 R (paragraph.22.8.2.21) 4887 0 R] +/Limits [(paragraph.22.8.2.17) (paragraph.22.8.2.21)] +>> endobj +10130 0 obj << +/Names [(paragraph.22.8.2.22) 4888 0 R (paragraph.22.8.2.23) 4893 0 R (paragraph.22.8.2.24) 4894 0 R (paragraph.22.8.2.25) 4895 0 R (paragraph.22.8.2.26) 4896 0 R (paragraph.22.8.2.27) 4897 0 R] +/Limits [(paragraph.22.8.2.22) (paragraph.22.8.2.27)] +>> endobj +10131 0 obj << +/Names [(paragraph.22.8.2.28) 4898 0 R (paragraph.22.8.2.29) 4899 0 R (paragraph.22.8.2.3) 4865 0 R (paragraph.22.8.2.30) 4900 0 R (paragraph.22.8.2.31) 4901 0 R (paragraph.22.8.2.32) 4902 0 R] +/Limits [(paragraph.22.8.2.28) (paragraph.22.8.2.32)] +>> endobj +10132 0 obj << +/Names [(paragraph.22.8.2.33) 4903 0 R (paragraph.22.8.2.34) 4909 0 R (paragraph.22.8.2.35) 4910 0 R (paragraph.22.8.2.36) 4911 0 R (paragraph.22.8.2.37) 4912 0 R (paragraph.22.8.2.38) 4913 0 R] +/Limits [(paragraph.22.8.2.33) (paragraph.22.8.2.38)] +>> endobj +10133 0 obj << +/Names [(paragraph.22.8.2.39) 4914 0 R (paragraph.22.8.2.4) 4866 0 R (paragraph.22.8.2.40) 4915 0 R (paragraph.22.8.2.41) 4916 0 R (paragraph.22.8.2.42) 4917 0 R (paragraph.22.8.2.43) 4918 0 R] +/Limits [(paragraph.22.8.2.39) (paragraph.22.8.2.43)] +>> endobj +10134 0 obj << +/Names [(paragraph.22.8.2.44) 4919 0 R (paragraph.22.8.2.45) 4924 0 R (paragraph.22.8.2.46) 4925 0 R (paragraph.22.8.2.47) 4926 0 R (paragraph.22.8.2.48) 4927 0 R (paragraph.22.8.2.49) 4928 0 R] +/Limits [(paragraph.22.8.2.44) (paragraph.22.8.2.49)] +>> endobj +10135 0 obj << +/Names [(paragraph.22.8.2.5) 4867 0 R (paragraph.22.8.2.50) 4929 0 R (paragraph.22.8.2.51) 4930 0 R (paragraph.22.8.2.52) 4931 0 R (paragraph.22.8.2.53) 4932 0 R (paragraph.22.8.2.54) 4933 0 R] +/Limits [(paragraph.22.8.2.5) (paragraph.22.8.2.54)] +>> endobj +10136 0 obj << +/Names [(paragraph.22.8.2.55) 4934 0 R (paragraph.22.8.2.56) 4939 0 R (paragraph.22.8.2.57) 4940 0 R (paragraph.22.8.2.6) 4868 0 R (paragraph.22.8.2.7) 4869 0 R (paragraph.22.8.2.8) 4870 0 R] +/Limits [(paragraph.22.8.2.55) (paragraph.22.8.2.8)] +>> endobj +10137 0 obj << +/Names [(paragraph.22.8.2.9) 4871 0 R (paragraph.22.8.3.1) 4941 0 R (paragraph.22.8.3.10) 4954 0 R (paragraph.22.8.3.11) 4955 0 R (paragraph.22.8.3.12) 4956 0 R (paragraph.22.8.3.13) 4957 0 R] +/Limits [(paragraph.22.8.2.9) (paragraph.22.8.3.13)] +>> endobj +10138 0 obj << +/Names [(paragraph.22.8.3.14) 4958 0 R (paragraph.22.8.3.15) 4959 0 R (paragraph.22.8.3.16) 4960 0 R (paragraph.22.8.3.17) 4961 0 R (paragraph.22.8.3.18) 4966 0 R (paragraph.22.8.3.19) 4967 0 R] +/Limits [(paragraph.22.8.3.14) (paragraph.22.8.3.19)] +>> endobj +10139 0 obj << +/Names [(paragraph.22.8.3.2) 4942 0 R (paragraph.22.8.3.20) 4968 0 R (paragraph.22.8.3.21) 4969 0 R (paragraph.22.8.3.22) 4970 0 R (paragraph.22.8.3.23) 4971 0 R (paragraph.22.8.3.24) 4972 0 R] +/Limits [(paragraph.22.8.3.2) (paragraph.22.8.3.24)] +>> endobj +10140 0 obj << +/Names [(paragraph.22.8.3.25) 4973 0 R (paragraph.22.8.3.26) 4984 0 R (paragraph.22.8.3.27) 4985 0 R (paragraph.22.8.3.28) 4986 0 R (paragraph.22.8.3.3) 4943 0 R (paragraph.22.8.3.4) 4944 0 R] +/Limits [(paragraph.22.8.3.25) (paragraph.22.8.3.4)] +>> endobj +10141 0 obj << +/Names [(paragraph.22.8.3.5) 4945 0 R (paragraph.22.8.3.6) 4946 0 R (paragraph.22.8.3.7) 4947 0 R (paragraph.22.8.3.8) 4952 0 R (paragraph.22.8.3.9) 4953 0 R (paragraph.22.9.2.1) 5129 0 R] +/Limits [(paragraph.22.8.3.5) (paragraph.22.9.2.1)] +>> endobj +10142 0 obj << +/Names [(paragraph.22.9.2.10) 5151 0 R (paragraph.22.9.2.11) 5152 0 R (paragraph.22.9.2.12) 5153 0 R (paragraph.22.9.2.13) 5154 0 R (paragraph.22.9.2.14) 5164 0 R (paragraph.22.9.2.15) 5165 0 R] +/Limits [(paragraph.22.9.2.10) (paragraph.22.9.2.15)] +>> endobj +10143 0 obj << +/Names [(paragraph.22.9.2.16) 5166 0 R (paragraph.22.9.2.17) 5167 0 R (paragraph.22.9.2.18) 5168 0 R (paragraph.22.9.2.19) 5169 0 R (paragraph.22.9.2.2) 5130 0 R (paragraph.22.9.2.3) 5131 0 R] +/Limits [(paragraph.22.9.2.16) (paragraph.22.9.2.3)] +>> endobj +10144 0 obj << +/Names [(paragraph.22.9.2.4) 5132 0 R (paragraph.22.9.2.5) 5133 0 R (paragraph.22.9.2.6) 5134 0 R (paragraph.22.9.2.7) 5135 0 R (paragraph.22.9.2.8) 5136 0 R (paragraph.22.9.2.9) 5150 0 R] +/Limits [(paragraph.22.9.2.4) (paragraph.22.9.2.9)] +>> endobj +10145 0 obj << +/Names [(paragraph.22.9.3.1) 5170 0 R (paragraph.22.9.3.10) 5205 0 R (paragraph.22.9.3.11) 5206 0 R (paragraph.22.9.3.12) 5218 0 R (paragraph.22.9.3.13) 5219 0 R (paragraph.22.9.3.14) 5220 0 R] +/Limits [(paragraph.22.9.3.1) (paragraph.22.9.3.14)] +>> endobj +10146 0 obj << +/Names [(paragraph.22.9.3.15) 5221 0 R (paragraph.22.9.3.16) 5222 0 R (paragraph.22.9.3.17) 5223 0 R (paragraph.22.9.3.18) 5224 0 R (paragraph.22.9.3.19) 5225 0 R (paragraph.22.9.3.2) 5186 0 R] +/Limits [(paragraph.22.9.3.15) (paragraph.22.9.3.2)] +>> endobj +10147 0 obj << +/Names [(paragraph.22.9.3.20) 5238 0 R (paragraph.22.9.3.21) 5239 0 R (paragraph.22.9.3.22) 5240 0 R (paragraph.22.9.3.23) 5241 0 R (paragraph.22.9.3.24) 5242 0 R (paragraph.22.9.3.25) 5243 0 R] +/Limits [(paragraph.22.9.3.20) (paragraph.22.9.3.25)] +>> endobj +10148 0 obj << +/Names [(paragraph.22.9.3.26) 5244 0 R (paragraph.22.9.3.27) 5245 0 R (paragraph.22.9.3.28) 5246 0 R (paragraph.22.9.3.29) 5255 0 R (paragraph.22.9.3.3) 5188 0 R (paragraph.22.9.3.30) 5256 0 R] +/Limits [(paragraph.22.9.3.26) (paragraph.22.9.3.30)] +>> endobj +10149 0 obj << +/Names [(paragraph.22.9.3.31) 5257 0 R (paragraph.22.9.3.32) 5258 0 R (paragraph.22.9.3.33) 5280 0 R (paragraph.22.9.3.34) 5281 0 R (paragraph.22.9.3.35) 5305 0 R (paragraph.22.9.3.36) 5306 0 R] +/Limits [(paragraph.22.9.3.31) (paragraph.22.9.3.36)] +>> endobj +10150 0 obj << +/Names [(paragraph.22.9.3.37) 5307 0 R (paragraph.22.9.3.38) 5308 0 R (paragraph.22.9.3.39) 5309 0 R (paragraph.22.9.3.4) 5189 0 R (paragraph.22.9.3.40) 5310 0 R (paragraph.22.9.3.41) 5311 0 R] +/Limits [(paragraph.22.9.3.37) (paragraph.22.9.3.41)] +>> endobj +10151 0 obj << +/Names [(paragraph.22.9.3.5) 5200 0 R (paragraph.22.9.3.6) 5201 0 R (paragraph.22.9.3.7) 5202 0 R (paragraph.22.9.3.8) 5203 0 R (paragraph.22.9.3.9) 5204 0 R (paragraph.23.1.2.1) 7335 0 R] +/Limits [(paragraph.22.9.3.5) (paragraph.23.1.2.1)] +>> endobj +10152 0 obj << +/Names [(paragraph.23.1.2.2) 7347 0 R (paragraph.23.2.2.1) 7350 0 R (paragraph.23.2.2.2) 7352 0 R (paragraph.24.34.2.1) 7836 0 R (paragraph.24.34.2.10) 7871 0 R (paragraph.24.34.2.11) 7873 0 R] +/Limits [(paragraph.23.1.2.2) (paragraph.24.34.2.11)] +>> endobj +10153 0 obj << +/Names [(paragraph.24.34.2.12) 7879 0 R (paragraph.24.34.2.13) 7881 0 R (paragraph.24.34.2.14) 7888 0 R (paragraph.24.34.2.2) 7838 0 R (paragraph.24.34.2.3) 7844 0 R (paragraph.24.34.2.4) 7846 0 R] +/Limits [(paragraph.24.34.2.12) (paragraph.24.34.2.4)] +>> endobj +10154 0 obj << +/Names [(paragraph.24.34.2.5) 7853 0 R (paragraph.24.34.2.6) 7855 0 R (paragraph.24.34.2.7) 7861 0 R (paragraph.24.34.2.8) 7863 0 R (paragraph.24.34.2.9) 7869 0 R (paragraph.24.35.2.1) 7895 0 R] +/Limits [(paragraph.24.34.2.5) (paragraph.24.35.2.1)] +>> endobj +10155 0 obj << +/Names [(paragraph.24.5.2.1) 7417 0 R (paragraph.24.5.2.10) 7448 0 R (paragraph.24.5.2.11) 7458 0 R (paragraph.24.5.2.12) 7460 0 R (paragraph.24.5.2.13) 7462 0 R (paragraph.24.5.2.2) 7419 0 R] +/Limits [(paragraph.24.5.2.1) (paragraph.24.5.2.2)] +>> endobj +10156 0 obj << +/Names [(paragraph.24.5.2.3) 7421 0 R (paragraph.24.5.2.4) 7428 0 R (paragraph.24.5.2.5) 7430 0 R (paragraph.24.5.2.6) 7436 0 R (paragraph.24.5.2.7) 7438 0 R (paragraph.24.5.2.8) 7440 0 R] +/Limits [(paragraph.24.5.2.3) (paragraph.24.5.2.8)] +>> endobj +10157 0 obj << +/Names [(paragraph.24.5.2.9) 7446 0 R (parity_8h) 3810 0 R (pgmspace) 2630 0 R (pgmspace_8h) 2640 0 R (pgmspace_8h_08a72fff52c720c8c4da68d94bcbcfb7) 7756 0 R (pgmspace_8h_1b369c790673cf91213297ead210b7a7) 7870 0 R] +/Limits [(paragraph.24.5.2.9) (pgmspace_8h_1b369c790673cf91213297ead210b7a7)] +>> endobj +10158 0 obj << +/Names [(pgmspace_8h_26a3c7d17dc82e065ea9304c57a94d4c) 7852 0 R (pgmspace_8h_2898830827f947f003d187388f7e6c72) 7753 0 R (pgmspace_8h_2ca4c178d5b7cc946d5f9946cfadb60a) 7758 0 R (pgmspace_8h_33f4d4f7e9deb9a6dd0a96adfe0ddcc7) 7843 0 R (pgmspace_8h_3e19ec020621f8b99268a81a85d29f57) 7752 0 R (pgmspace_8h_4fbd191cba8015caf1278918dffdeeab) 7880 0 R] +/Limits [(pgmspace_8h_26a3c7d17dc82e065ea9304c57a94d4c) (pgmspace_8h_4fbd191cba8015caf1278918dffdeeab)] +>> endobj +10159 0 obj << +/Names [(pgmspace_8h_51a9c87d5a2447c4e481d6c0cde5915e) 7864 0 R (pgmspace_8h_536d41f7767c0a501c4f9aa625ef0c58) 7755 0 R (pgmspace_8h_59000091c8a496a757cc28abd1198899) 7767 0 R (pgmspace_8h_68a101b9775c6ca1ce63ffd00cb847fa) 7757 0 R (pgmspace_8h_7121f301197b01eae138d18274dde754) 7872 0 R (pgmspace_8h_80fdd263dea318b34bfe11f5c3cbb6f3) 7754 0 R] +/Limits [(pgmspace_8h_51a9c87d5a2447c4e481d6c0cde5915e) (pgmspace_8h_80fdd263dea318b34bfe11f5c3cbb6f3)] +>> endobj +10160 0 obj << +/Names [(pgmspace_8h_9153bd8c33415e46493483d8b1381cd2) 7759 0 R (pgmspace_8h_9a8bfdf4b3c7b73339b99f25050bbb7e) 7762 0 R (pgmspace_8h_a3bb050b6f4f954c943e25161b370758) 7835 0 R (pgmspace_8h_b62d92f898b21110be73d3d70ee99069) 7882 0 R (pgmspace_8h_c22578c90fad247ec9d4ba3da448d293) 7854 0 R (pgmspace_8h_c5514eda249623758e7bde7a10367981) 7765 0 R] +/Limits [(pgmspace_8h_9153bd8c33415e46493483d8b1381cd2) (pgmspace_8h_c5514eda249623758e7bde7a10367981)] +>> endobj +10161 0 obj << +/Names [(pgmspace_8h_ca983107cfbdef8ba6763386d3d32a95) 7860 0 R (pgmspace_8h_d710ce3e6839b2b0aa751ecdcebc3916) 7764 0 R (pgmspace_8h_d7f1d1a85be927ecf0912371791ec7cb) 7878 0 R (pgmspace_8h_de9afae7533e1b3054afd46cafd4d0a4) 7862 0 R (pgmspace_8h_e13cac4b0bdce8636bbeea69d6f0c56c) 7766 0 R (pgmspace_8h_e1a2d7875738121a279dd9b14e660ffe) 7763 0 R] +/Limits [(pgmspace_8h_ca983107cfbdef8ba6763386d3d32a95) (pgmspace_8h_e1a2d7875738121a279dd9b14e660ffe)] +>> endobj +10162 0 obj << +/Names [(pgmspace_8h_e960e608b8e9e273d19cc5afe22b2dcd) 7837 0 R (pgmspace_8h_edbbb46a483479811fa0ff5156864dab) 7845 0 R (pgmspace_pgmspace_caveats) 2666 0 R (pgmspace_pgmspace_const) 2638 0 R (pgmspace_pgmspace_data) 2639 0 R (pgmspace_pgmspace_introduction) 2631 0 R] +/Limits [(pgmspace_8h_e960e608b8e9e273d19cc5afe22b2dcd) (pgmspace_pgmspace_introduction)] +>> endobj +10163 0 obj << +/Names [(pgmspace_pgmspace_strings) 2651 0 R (porting) 2836 0 R (porting_iar_porting_flash) 2856 0 R (porting_iar_porting_intrinsic) 2845 0 R (porting_iar_porting_intro) 2837 0 R (porting_iar_porting_isr) 2844 0 R] +/Limits [(pgmspace_pgmspace_strings) (porting_iar_porting_isr)] +>> endobj +10164 0 obj << +/Names [(porting_iar_porting_locking) 2867 0 R (porting_iar_porting_non_returning_main) 2866 0 R (porting_iar_porting_register) 2838 0 R (power_8h) 3811 0 R (power_8h_2fd1aa8f501486943d14976734a8721f) 7894 0 R (power_8h_7154fa3046d3387af8d6c5f489bf7194) 7891 0 R] +/Limits [(porting_iar_porting_locking) (power_8h_7154fa3046d3387af8d6c5f489bf7194)] +>> endobj +10165 0 obj << +/Names [(power_8h_7671addc7678720510a30518034e3ea9) 7890 0 R (release_method) 3491 0 R (release_method_release_branch) 3500 0 R (release_method_release_info) 3495 0 R (release_method_release_rolling) 3519 0 R (release_method_version_dev) 3494 0 R] +/Limits [(power_8h_7671addc7678720510a30518034e3ea9) (release_method_version_dev)] +>> endobj +10166 0 obj << +/Names [(release_method_version_info) 3492 0 R (release_method_version_stable) 3493 0 R (section*.1) 1918 0 R (section*.10) 4417 0 R (section*.100) 7818 0 R (section*.101) 7819 0 R] +/Limits [(release_method_version_info) (section*.101)] +>> endobj +10167 0 obj << +/Names [(section*.102) 7889 0 R (section*.103) 7893 0 R (section*.104) 7908 0 R (section*.105) 7909 0 R (section*.106) 7912 0 R (section*.107) 7913 0 R] +/Limits [(section*.102) (section*.107)] +>> endobj +10168 0 obj << +/Names [(section*.108) 7950 0 R (section*.109) 7952 0 R (section*.11) 4631 0 R (section*.110) 8042 0 R (section*.111) 8073 0 R (section*.112) 8124 0 R] +/Limits [(section*.108) (section*.112)] +>> endobj +10169 0 obj << +/Names [(section*.113) 8145 0 R (section*.114) 8146 0 R (section*.115) 8147 0 R (section*.116) 8148 0 R (section*.117) 8187 0 R (section*.118) 8188 0 R] +/Limits [(section*.113) (section*.118)] +>> endobj +10170 0 obj << +/Names [(section*.119) 8189 0 R (section*.12) 4653 0 R (section*.120) 8198 0 R (section*.121) 8236 0 R (section*.122) 8241 0 R (section*.123) 8262 0 R] +/Limits [(section*.119) (section*.123)] +>> endobj +10171 0 obj << +/Names [(section*.124) 8288 0 R (section*.125) 8290 0 R (section*.126) 8320 0 R (section*.127) 8378 0 R (section*.13) 4654 0 R (section*.14) 4711 0 R] +/Limits [(section*.124) (section*.14)] +>> endobj +10172 0 obj << +/Names [(section*.15) 4712 0 R (section*.16) 4713 0 R (section*.17) 4714 0 R (section*.18) 4773 0 R (section*.19) 4774 0 R (section*.2) 3940 0 R] +/Limits [(section*.15) (section*.2)] +>> endobj +10173 0 obj << +/Names [(section*.20) 4834 0 R (section*.21) 4835 0 R (section*.22) 4836 0 R (section*.23) 4837 0 R (section*.24) 4987 0 R (section*.25) 4988 0 R] +/Limits [(section*.20) (section*.25)] +>> endobj +10174 0 obj << +/Names [(section*.26) 4989 0 R (section*.27) 5009 0 R (section*.28) 5012 0 R (section*.29) 5013 0 R (section*.3) 3964 0 R (section*.30) 5030 0 R] +/Limits [(section*.26) (section*.30)] +>> endobj +10175 0 obj << +/Names [(section*.31) 5058 0 R (section*.32) 5115 0 R (section*.33) 5336 0 R (section*.34) 5337 0 R (section*.35) 5338 0 R (section*.36) 5339 0 R] +/Limits [(section*.31) (section*.36)] +>> endobj +10176 0 obj << +/Names [(section*.37) 5340 0 R (section*.38) 5386 0 R (section*.39) 5387 0 R (section*.4) 3992 0 R (section*.40) 5584 0 R (section*.41) 5585 0 R] +/Limits [(section*.37) (section*.41)] +>> endobj +10177 0 obj << +/Names [(section*.42) 5851 0 R (section*.43) 5945 0 R (section*.44) 5976 0 R (section*.45) 5977 0 R (section*.46) 6030 0 R (section*.47) 6040 0 R] +/Limits [(section*.42) (section*.47)] +>> endobj +10178 0 obj << +/Names [(section*.48) 6041 0 R (section*.49) 6053 0 R (section*.5) 3993 0 R (section*.50) 6054 0 R (section*.51) 6056 0 R (section*.52) 6067 0 R] +/Limits [(section*.48) (section*.52)] +>> endobj +10179 0 obj << +/Names [(section*.53) 6154 0 R (section*.54) 6155 0 R (section*.55) 6156 0 R (section*.56) 6268 0 R (section*.57) 6273 0 R (section*.58) 6330 0 R] +/Limits [(section*.53) (section*.58)] +>> endobj +10180 0 obj << +/Names [(section*.59) 6568 0 R (section*.6) 4052 0 R (section*.60) 6578 0 R (section*.61) 6579 0 R (section*.62) 6609 0 R (section*.63) 6627 0 R] +/Limits [(section*.59) (section*.63)] +>> endobj +10181 0 obj << +/Names [(section*.64) 6664 0 R (section*.65) 6718 0 R (section*.66) 6755 0 R (section*.67) 6783 0 R (section*.68) 6803 0 R (section*.69) 6813 0 R] +/Limits [(section*.64) (section*.69)] +>> endobj +10182 0 obj << +/Names [(section*.7) 4059 0 R (section*.70) 6832 0 R (section*.71) 6863 0 R (section*.72) 6897 0 R (section*.73) 6976 0 R (section*.74) 6978 0 R] +/Limits [(section*.7) (section*.74)] +>> endobj +10183 0 obj << +/Names [(section*.75) 7040 0 R (section*.76) 7333 0 R (section*.77) 7348 0 R (section*.78) 7353 0 R (section*.79) 7376 0 R (section*.8) 4106 0 R] +/Limits [(section*.75) (section*.8)] +>> endobj +10184 0 obj << +/Names [(section*.80) 7378 0 R (section*.81) 7497 0 R (section*.82) 7498 0 R (section*.83) 7500 0 R (section*.84) 7515 0 R (section*.85) 7518 0 R] +/Limits [(section*.80) (section*.85)] +>> endobj +10185 0 obj << +/Names [(section*.86) 7519 0 R (section*.87) 7521 0 R (section*.88) 7522 0 R (section*.89) 7530 0 R (section*.9) 4416 0 R (section*.90) 7532 0 R] +/Limits [(section*.86) (section*.90)] +>> endobj +10186 0 obj << +/Names [(section*.91) 7533 0 R (section*.92) 7572 0 R (section*.93) 7573 0 R (section*.94) 7663 0 R (section*.95) 7689 0 R (section*.96) 7694 0 R] +/Limits [(section*.91) (section*.96)] +>> endobj +10187 0 obj << +/Names [(section*.97) 7695 0 R (section*.98) 7730 0 R (section*.99) 7751 0 R (section.1) 5 0 R (section.10) 257 0 R (section.11) 289 0 R] +/Limits [(section*.97) (section.11)] +>> endobj +10188 0 obj << +/Names [(section.12) 425 0 R (section.13) 481 0 R (section.14) 521 0 R (section.15) 525 0 R (section.16) 553 0 R (section.17) 557 0 R] +/Limits [(section.12) (section.17)] +>> endobj +10189 0 obj << +/Names [(section.18) 561 0 R (section.19) 565 0 R (section.2) 25 0 R (section.20) 573 0 R (section.21) 581 0 R (section.22) 589 0 R] +/Limits [(section.18) (section.22)] +>> endobj +10190 0 obj << +/Names [(section.23) 1105 0 R (section.24) 1133 0 R (section.3) 81 0 R (section.4) 101 0 R (section.5) 141 0 R (section.6) 165 0 R] +/Limits [(section.23) (section.6)] +>> endobj +10191 0 obj << +/Names [(section.7) 185 0 R (section.8) 221 0 R (section.9) 245 0 R (setbaud_8h) 3812 0 R (setjmp_8h) 3813 0 R (setjmp_8h_0d7688dfc56810a4fee42056e35f131b) 7911 0 R] +/Limits [(section.7) (setjmp_8h_0d7688dfc56810a4fee42056e35f131b)] +>> endobj +10192 0 obj << +/Names [(setjmp_8h_b2ff8b2eab7d5d782599ea3d44d23c9d) 7910 0 R (sleep_8h) 3814 0 R (sleep_8h_1a0221ee000bb91407ab3f410f830b08) 7915 0 R (sleep_8h_3775b21f297187752bcfc434a541209a) 7951 0 R (sleep_8h_6cf481cda733c2b30bdcfe92a59c0493) 7916 0 R (sleep_8h_ef635fb58949963631a03e6826d8df4f) 7914 0 R] +/Limits [(setjmp_8h_b2ff8b2eab7d5d782599ea3d44d23c9d) (sleep_8h_ef635fb58949963631a03e6826d8df4f)] +>> endobj +10193 0 obj << +/Names [(stdint_8h) 3815 0 R (stdint_8h_18172a92877df9d421a3757e9a4628d1) 7955 0 R (stdint_8h_6e8668e58545a78f42b176b8e5b82f0d) 7953 0 R (stdint_8h_dc7741cc76b3d6bce04437c3081193ce) 7954 0 R (stdio_8h) 3816 0 R (stdio_8h_0d112bae8fd35be772185b6ec6bcbe64) 8077 0 R] +/Limits [(stdint_8h) (stdio_8h_0d112bae8fd35be772185b6ec6bcbe64)] +>> endobj +10194 0 obj << +/Names [(stdio_8h_2898830827f947f003d187388f7e6c72) 8076 0 R (stdio_8h_4c8d0b76b470ba65a43ca46a88320f39) 8078 0 R (stdio_8h_6c27666e43b87c08fa8b2e8aa324601c) 8075 0 R (stdio_8h_a135c56ea6bf8373dc42dac56f239cf4) 8074 0 R (stdio_8h_d2a2e6c114780c3071efd24f16c7f7d8) 8079 0 R (stdlib_8h) 3817 0 R] +/Limits [(stdio_8h_2898830827f947f003d187388f7e6c72) (stdlib_8h)] +>> endobj +10195 0 obj << +/Names [(stdlib_8h_2898830827f947f003d187388f7e6c72) 8151 0 R (stdlib_8h_6171e467aa571bcff475ecf0402330e3) 8152 0 R (stdlib_8h_6c27666e43b87c08fa8b2e8aa324601c) 8150 0 R (stdlib_8h_6fe7b6fa84e7892c37aa9fec05e1eabc) 8149 0 R (stdlib_8h_97c2ff9da355218a9f2cefb0e9097855) 8153 0 R (strcasecmp_8S) 3818 0 R] +/Limits [(stdlib_8h_2898830827f947f003d187388f7e6c72) (strcasecmp_8S)] +>> endobj +10196 0 obj << +/Names [(strcasecmp__P_8S) 3819 0 R (strcasestr_8S) 3820 0 R (strcat_8S) 3821 0 R (strcat__P_8S) 3822 0 R (strchr_8S) 3823 0 R (strchr__P_8S) 3824 0 R] +/Limits [(strcasecmp__P_8S) (strchr__P_8S)] +>> endobj +10197 0 obj << +/Names [(strchrnul_8S) 3825 0 R (strchrnul__P_8S) 3826 0 R (strcmp_8S) 3827 0 R (strcmp__P_8S) 3828 0 R (strcpy_8S) 3829 0 R (strcpy__P_8S) 3830 0 R] +/Limits [(strchrnul_8S) (strcpy__P_8S)] +>> endobj +10198 0 obj << +/Names [(strcspn_8S) 3831 0 R (strcspn__P_8S) 3832 0 R (strdup_8c) 3833 0 R (string_8h) 3888 0 R (string_8h_2898830827f947f003d187388f7e6c72) 8239 0 R (string_8h_536d41f7767c0a501c4f9aa625ef0c58) 8240 0 R] +/Limits [(strcspn_8S) (string_8h_536d41f7767c0a501c4f9aa625ef0c58)] +>> endobj +10199 0 obj << +/Names [(string_8h_6c27666e43b87c08fa8b2e8aa324601c) 8238 0 R (string_8h_9a16ae9dc4d60ab6d2ef39bf346a1038) 8237 0 R (strlcat_8S) 3889 0 R (strlcat__P_8S) 3890 0 R (strlcpy_8S) 3891 0 R (strlcpy__P_8S) 3892 0 R] +/Limits [(string_8h_6c27666e43b87c08fa8b2e8aa324601c) (strlcpy__P_8S)] +>> endobj +10200 0 obj << +/Names [(strlen_8S) 3893 0 R (strlen__P_8S) 3894 0 R (strlwr_8S) 3895 0 R (strncasecmp_8S) 3896 0 R (strncasecmp__P_8S) 3897 0 R (strncat_8S) 3898 0 R] +/Limits [(strlen_8S) (strncat_8S)] +>> endobj +10201 0 obj << +/Names [(strncat__P_8S) 3899 0 R (strncmp_8S) 3900 0 R (strncmp__P_8S) 3901 0 R (strncpy_8S) 3902 0 R (strncpy__P_8S) 3903 0 R (strnlen_8S) 3904 0 R] +/Limits [(strncat__P_8S) (strnlen_8S)] +>> endobj +10202 0 obj << +/Names [(strnlen__P_8S) 3905 0 R (strpbrk_8S) 3906 0 R (strpbrk__P_8S) 3907 0 R (strrchr_8S) 3908 0 R (strrchr__P_8S) 3909 0 R (strrev_8S) 3910 0 R] +/Limits [(strnlen__P_8S) (strrev_8S)] +>> endobj +10203 0 obj << +/Names [(strsep_8S) 3911 0 R (strsep__P_8S) 3912 0 R (strspn_8S) 3944 0 R (strspn__P_8S) 3945 0 R (strstr_8S) 3946 0 R (strstr__P_8S) 3947 0 R] +/Limits [(strsep_8S) (strstr__P_8S)] +>> endobj +10204 0 obj << +/Names [(strtok_8c) 3948 0 R (strtok_8c_aa1ebe818ec1c763a776cc580551f3e6) 8289 0 R (strtok__r_8S) 3949 0 R (structdiv__t) 3670 0 R (structdiv__t_0b9dda2884048daa68ca4aaa12b17b9a) 7334 0 R (structdiv__t_c64389de252de53eda8b4f8dbb7c623f) 7336 0 R] +/Limits [(strtok_8c) (structdiv__t_c64389de252de53eda8b4f8dbb7c623f)] +>> endobj +10205 0 obj << +/Names [(structldiv__t) 3671 0 R (structldiv__t_0f217ff62b8640aa945ec84d6d0bd000) 7351 0 R (structldiv__t_73efd59c176304c327cb4214d0e5e5c9) 7349 0 R (strupr_8S) 3950 0 R (subsection.1.1) 9 0 R (subsection.1.2) 13 0 R] +/Limits [(structldiv__t) (subsection.1.2)] +>> endobj +10206 0 obj << +/Names [(subsection.1.3) 17 0 R (subsection.1.4) 21 0 R (subsection.10.1) 261 0 R (subsection.10.2) 265 0 R (subsection.10.3) 269 0 R (subsection.10.4) 273 0 R] +/Limits [(subsection.1.3) (subsection.10.4)] +>> endobj +10207 0 obj << +/Names [(subsection.10.5) 277 0 R (subsection.10.6) 281 0 R (subsection.10.7) 285 0 R (subsection.11.1) 293 0 R (subsection.11.10) 329 0 R (subsection.11.11) 333 0 R] +/Limits [(subsection.10.5) (subsection.11.11)] +>> endobj +10208 0 obj << +/Names [(subsection.11.12) 337 0 R (subsection.11.13) 341 0 R (subsection.11.14) 345 0 R (subsection.11.15) 349 0 R (subsection.11.16) 353 0 R (subsection.11.17) 357 0 R] +/Limits [(subsection.11.12) (subsection.11.17)] +>> endobj +10209 0 obj << +/Names [(subsection.11.18) 361 0 R (subsection.11.19) 365 0 R (subsection.11.2) 297 0 R (subsection.11.20) 369 0 R (subsection.11.21) 373 0 R (subsection.11.22) 377 0 R] +/Limits [(subsection.11.18) (subsection.11.22)] +>> endobj +10210 0 obj << +/Names [(subsection.11.23) 381 0 R (subsection.11.24) 385 0 R (subsection.11.25) 389 0 R (subsection.11.26) 393 0 R (subsection.11.27) 397 0 R (subsection.11.28) 401 0 R] +/Limits [(subsection.11.23) (subsection.11.28)] +>> endobj +10211 0 obj << +/Names [(subsection.11.29) 405 0 R (subsection.11.3) 301 0 R (subsection.11.30) 409 0 R (subsection.11.31) 413 0 R (subsection.11.32) 417 0 R (subsection.11.33) 421 0 R] +/Limits [(subsection.11.29) (subsection.11.33)] +>> endobj +10212 0 obj << +/Names [(subsection.11.4) 305 0 R (subsection.11.5) 309 0 R (subsection.11.6) 313 0 R (subsection.11.7) 317 0 R (subsection.11.8) 321 0 R (subsection.11.9) 325 0 R] +/Limits [(subsection.11.4) (subsection.11.9)] +>> endobj +10213 0 obj << +/Names [(subsection.12.1) 429 0 R (subsection.12.10) 465 0 R (subsection.12.11) 469 0 R (subsection.12.12) 473 0 R (subsection.12.13) 477 0 R (subsection.12.2) 433 0 R] +/Limits [(subsection.12.1) (subsection.12.2)] +>> endobj +10214 0 obj << +/Names [(subsection.12.3) 437 0 R (subsection.12.4) 441 0 R (subsection.12.5) 445 0 R (subsection.12.6) 449 0 R (subsection.12.7) 453 0 R (subsection.12.8) 457 0 R] +/Limits [(subsection.12.3) (subsection.12.8)] +>> endobj +10215 0 obj << +/Names [(subsection.12.9) 461 0 R (subsection.13.1) 485 0 R (subsection.13.2) 497 0 R (subsection.13.3) 509 0 R (subsection.15.1) 529 0 R (subsection.15.2) 541 0 R] +/Limits [(subsection.12.9) (subsection.15.2)] +>> endobj +10216 0 obj << +/Names [(subsection.19.1) 569 0 R (subsection.2.1) 29 0 R (subsection.2.10) 65 0 R (subsection.2.11) 69 0 R (subsection.2.12) 73 0 R (subsection.2.13) 77 0 R] +/Limits [(subsection.19.1) (subsection.2.13)] +>> endobj +10217 0 obj << +/Names [(subsection.2.2) 33 0 R (subsection.2.3) 37 0 R (subsection.2.4) 41 0 R (subsection.2.5) 45 0 R (subsection.2.6) 49 0 R (subsection.2.7) 53 0 R] +/Limits [(subsection.2.2) (subsection.2.7)] +>> endobj +10218 0 obj << +/Names [(subsection.2.8) 57 0 R (subsection.2.9) 61 0 R (subsection.20.1) 577 0 R (subsection.21.1) 585 0 R (subsection.22.1) 593 0 R (subsection.22.10) 717 0 R] +/Limits [(subsection.2.8) (subsection.22.10)] +>> endobj +10219 0 obj << +/Names [(subsection.22.11) 741 0 R (subsection.22.12) 757 0 R (subsection.22.13) 769 0 R (subsection.22.14) 785 0 R (subsection.22.15) 789 0 R (subsection.22.16) 801 0 R] +/Limits [(subsection.22.11) (subsection.22.16)] +>> endobj +10220 0 obj << +/Names [(subsection.22.17) 805 0 R (subsection.22.18) 809 0 R (subsection.22.19) 829 0 R (subsection.22.2) 605 0 R (subsection.22.20) 833 0 R (subsection.22.21) 837 0 R] +/Limits [(subsection.22.17) (subsection.22.21)] +>> endobj +10221 0 obj << +/Names [(subsection.22.22) 849 0 R (subsection.22.23) 861 0 R (subsection.22.24) 873 0 R (subsection.22.25) 885 0 R (subsection.22.26) 897 0 R (subsection.22.27) 909 0 R] +/Limits [(subsection.22.22) (subsection.22.27)] +>> endobj +10222 0 obj << +/Names [(subsection.22.28) 921 0 R (subsection.22.29) 933 0 R (subsection.22.3) 617 0 R (subsection.22.30) 945 0 R (subsection.22.31) 957 0 R (subsection.22.32) 969 0 R] +/Limits [(subsection.22.28) (subsection.22.32)] +>> endobj +10223 0 obj << +/Names [(subsection.22.33) 985 0 R (subsection.22.34) 989 0 R (subsection.22.35) 997 0 R (subsection.22.36) 1013 0 R (subsection.22.37) 1049 0 R (subsection.22.38) 1069 0 R] +/Limits [(subsection.22.33) (subsection.22.38)] +>> endobj +10224 0 obj << +/Names [(subsection.22.39) 1089 0 R (subsection.22.4) 629 0 R (subsection.22.5) 641 0 R (subsection.22.6) 657 0 R (subsection.22.7) 673 0 R (subsection.22.8) 685 0 R] +/Limits [(subsection.22.39) (subsection.22.8)] +>> endobj +10225 0 obj << +/Names [(subsection.22.9) 701 0 R (subsection.23.1) 1109 0 R (subsection.23.2) 1121 0 R (subsection.24.1) 1137 0 R (subsection.24.10) 1213 0 R (subsection.24.11) 1221 0 R] +/Limits [(subsection.22.9) (subsection.24.11)] +>> endobj +10226 0 obj << +/Names [(subsection.24.12) 1229 0 R (subsection.24.13) 1237 0 R (subsection.24.14) 1245 0 R (subsection.24.15) 1253 0 R (subsection.24.16) 1261 0 R (subsection.24.17) 1269 0 R] +/Limits [(subsection.24.12) (subsection.24.17)] +>> endobj +10227 0 obj << +/Names [(subsection.24.18) 1277 0 R (subsection.24.19) 1285 0 R (subsection.24.2) 1145 0 R (subsection.24.20) 1293 0 R (subsection.24.21) 1301 0 R (subsection.24.22) 1309 0 R] +/Limits [(subsection.24.18) (subsection.24.22)] +>> endobj +10228 0 obj << +/Names [(subsection.24.23) 1317 0 R (subsection.24.24) 1325 0 R (subsection.24.25) 1333 0 R (subsection.24.26) 1341 0 R (subsection.24.27) 1349 0 R (subsection.24.28) 1357 0 R] +/Limits [(subsection.24.23) (subsection.24.28)] +>> endobj +10229 0 obj << +/Names [(subsection.24.29) 1365 0 R (subsection.24.3) 1153 0 R (subsection.24.30) 1373 0 R (subsection.24.31) 1381 0 R (subsection.24.32) 1389 0 R (subsection.24.33) 1397 0 R] +/Limits [(subsection.24.29) (subsection.24.33)] +>> endobj +10230 0 obj << +/Names [(subsection.24.34) 1405 0 R (subsection.24.35) 1417 0 R (subsection.24.36) 1429 0 R (subsection.24.37) 1437 0 R (subsection.24.38) 1445 0 R (subsection.24.39) 1453 0 R] +/Limits [(subsection.24.34) (subsection.24.39)] +>> endobj +10231 0 obj << +/Names [(subsection.24.4) 1161 0 R (subsection.24.40) 1461 0 R (subsection.24.41) 1469 0 R (subsection.24.42) 1477 0 R (subsection.24.43) 1485 0 R (subsection.24.44) 1493 0 R] +/Limits [(subsection.24.4) (subsection.24.44)] +>> endobj +10232 0 obj << +/Names [(subsection.24.45) 1501 0 R (subsection.24.46) 1509 0 R (subsection.24.47) 1517 0 R (subsection.24.48) 1525 0 R (subsection.24.49) 1533 0 R (subsection.24.5) 1169 0 R] +/Limits [(subsection.24.45) (subsection.24.5)] +>> endobj +10233 0 obj << +/Names [(subsection.24.50) 1541 0 R (subsection.24.51) 1549 0 R (subsection.24.52) 1557 0 R (subsection.24.53) 1565 0 R (subsection.24.54) 1573 0 R (subsection.24.55) 1581 0 R] +/Limits [(subsection.24.50) (subsection.24.55)] +>> endobj +10234 0 obj << +/Names [(subsection.24.56) 1589 0 R (subsection.24.57) 1597 0 R (subsection.24.58) 1605 0 R (subsection.24.59) 1613 0 R (subsection.24.6) 1181 0 R (subsection.24.60) 1621 0 R] +/Limits [(subsection.24.56) (subsection.24.60)] +>> endobj +10235 0 obj << +/Names [(subsection.24.61) 1629 0 R (subsection.24.62) 1637 0 R (subsection.24.63) 1645 0 R (subsection.24.64) 1653 0 R (subsection.24.65) 1661 0 R (subsection.24.66) 1669 0 R] +/Limits [(subsection.24.61) (subsection.24.66)] +>> endobj +10236 0 obj << +/Names [(subsection.24.67) 1677 0 R (subsection.24.68) 1685 0 R (subsection.24.69) 1693 0 R (subsection.24.7) 1189 0 R (subsection.24.70) 1701 0 R (subsection.24.71) 1709 0 R] +/Limits [(subsection.24.67) (subsection.24.71)] +>> endobj +10237 0 obj << +/Names [(subsection.24.72) 1717 0 R (subsection.24.73) 1725 0 R (subsection.24.74) 1733 0 R (subsection.24.75) 1741 0 R (subsection.24.76) 1749 0 R (subsection.24.77) 1757 0 R] +/Limits [(subsection.24.72) (subsection.24.77)] +>> endobj +10238 0 obj << +/Names [(subsection.24.78) 1765 0 R (subsection.24.79) 1773 0 R (subsection.24.8) 1197 0 R (subsection.24.80) 1781 0 R (subsection.24.81) 1789 0 R (subsection.24.82) 1797 0 R] +/Limits [(subsection.24.78) (subsection.24.82)] +>> endobj +10239 0 obj << +/Names [(subsection.24.83) 1805 0 R (subsection.24.84) 1813 0 R (subsection.24.85) 1821 0 R (subsection.24.86) 1829 0 R (subsection.24.87) 1837 0 R (subsection.24.88) 1845 0 R] +/Limits [(subsection.24.83) (subsection.24.88)] +>> endobj +10240 0 obj << +/Names [(subsection.24.89) 1853 0 R (subsection.24.9) 1205 0 R (subsection.24.90) 1861 0 R (subsection.24.91) 1869 0 R (subsection.3.1) 85 0 R (subsection.3.2) 89 0 R] +/Limits [(subsection.24.89) (subsection.3.2)] +>> endobj +10241 0 obj << +/Names [(subsection.3.3) 93 0 R (subsection.3.4) 97 0 R (subsection.4.1) 105 0 R (subsection.4.2) 109 0 R (subsection.4.3) 113 0 R (subsection.4.4) 117 0 R] +/Limits [(subsection.3.3) (subsection.4.4)] +>> endobj +10242 0 obj << +/Names [(subsection.4.5) 121 0 R (subsection.4.6) 125 0 R (subsection.4.7) 129 0 R (subsection.4.8) 133 0 R (subsection.4.9) 137 0 R (subsection.5.1) 145 0 R] +/Limits [(subsection.4.5) (subsection.5.1)] +>> endobj +10243 0 obj << +/Names [(subsection.5.2) 149 0 R (subsection.5.3) 153 0 R (subsection.5.4) 157 0 R (subsection.5.5) 161 0 R (subsection.6.1) 169 0 R (subsection.6.2) 173 0 R] +/Limits [(subsection.5.2) (subsection.6.2)] +>> endobj +10244 0 obj << +/Names [(subsection.6.3) 177 0 R (subsection.6.4) 181 0 R (subsection.7.1) 189 0 R (subsection.7.2) 193 0 R (subsection.7.3) 197 0 R (subsection.7.4) 201 0 R] +/Limits [(subsection.6.3) (subsection.7.4)] +>> endobj +10245 0 obj << +/Names [(subsection.7.5) 205 0 R (subsection.7.6) 209 0 R (subsection.7.7) 213 0 R (subsection.7.8) 217 0 R (subsection.8.1) 225 0 R (subsection.8.2) 229 0 R] +/Limits [(subsection.7.5) (subsection.8.2)] +>> endobj +10246 0 obj << +/Names [(subsection.8.3) 233 0 R (subsection.8.4) 237 0 R (subsection.8.5) 241 0 R (subsection.9.1) 249 0 R (subsection.9.2) 253 0 R (subsubsection.13.1.1) 489 0 R] +/Limits [(subsection.8.3) (subsubsection.13.1.1)] +>> endobj +10247 0 obj << +/Names [(subsubsection.13.1.2) 493 0 R (subsubsection.13.2.1) 501 0 R (subsubsection.13.2.2) 505 0 R (subsubsection.13.3.1) 513 0 R (subsubsection.13.3.2) 517 0 R (subsubsection.15.1.1) 533 0 R] +/Limits [(subsubsection.13.1.2) (subsubsection.15.1.1)] +>> endobj +10248 0 obj << +/Names [(subsubsection.15.1.2) 537 0 R (subsubsection.15.2.1) 545 0 R (subsubsection.15.2.2) 549 0 R (subsubsection.22.1.1) 597 0 R (subsubsection.22.1.2) 601 0 R (subsubsection.22.10.1) 721 0 R] +/Limits [(subsubsection.15.1.2) (subsubsection.22.10.1)] +>> endobj +10249 0 obj << +/Names [(subsubsection.22.10.2) 725 0 R (subsubsection.22.10.3) 729 0 R (subsubsection.22.10.4) 733 0 R (subsubsection.22.10.5) 737 0 R (subsubsection.22.11.1) 745 0 R (subsubsection.22.11.2) 749 0 R] +/Limits [(subsubsection.22.10.2) (subsubsection.22.11.2)] +>> endobj +10250 0 obj << +/Names [(subsubsection.22.11.3) 753 0 R (subsubsection.22.12.1) 761 0 R (subsubsection.22.12.2) 765 0 R (subsubsection.22.13.1) 773 0 R (subsubsection.22.13.2) 777 0 R (subsubsection.22.13.3) 781 0 R] +/Limits [(subsubsection.22.11.3) (subsubsection.22.13.3)] +>> endobj +10251 0 obj << +/Names [(subsubsection.22.15.1) 793 0 R (subsubsection.22.15.2) 797 0 R (subsubsection.22.18.1) 813 0 R (subsubsection.22.18.2) 817 0 R (subsubsection.22.18.3) 821 0 R (subsubsection.22.18.4) 825 0 R] +/Limits [(subsubsection.22.15.1) (subsubsection.22.18.4)] +>> endobj +10252 0 obj << +/Names [(subsubsection.22.2.1) 609 0 R (subsubsection.22.2.2) 613 0 R (subsubsection.22.21.1) 841 0 R (subsubsection.22.21.2) 845 0 R (subsubsection.22.22.1) 853 0 R (subsubsection.22.22.2) 857 0 R] +/Limits [(subsubsection.22.2.1) (subsubsection.22.22.2)] +>> endobj +10253 0 obj << +/Names [(subsubsection.22.23.1) 865 0 R (subsubsection.22.23.2) 869 0 R (subsubsection.22.24.1) 877 0 R (subsubsection.22.24.2) 881 0 R (subsubsection.22.25.1) 889 0 R (subsubsection.22.25.2) 893 0 R] +/Limits [(subsubsection.22.23.1) (subsubsection.22.25.2)] +>> endobj +10254 0 obj << +/Names [(subsubsection.22.26.1) 901 0 R (subsubsection.22.26.2) 905 0 R (subsubsection.22.27.1) 913 0 R (subsubsection.22.27.2) 917 0 R (subsubsection.22.28.1) 925 0 R (subsubsection.22.28.2) 929 0 R] +/Limits [(subsubsection.22.26.1) (subsubsection.22.28.2)] +>> endobj +10255 0 obj << +/Names [(subsubsection.22.29.1) 937 0 R (subsubsection.22.29.2) 941 0 R (subsubsection.22.3.1) 621 0 R (subsubsection.22.3.2) 625 0 R (subsubsection.22.30.1) 949 0 R (subsubsection.22.30.2) 953 0 R] +/Limits [(subsubsection.22.29.1) (subsubsection.22.30.2)] +>> endobj +10256 0 obj << +/Names [(subsubsection.22.31.1) 961 0 R (subsubsection.22.31.2) 965 0 R (subsubsection.22.32.1) 973 0 R (subsubsection.22.32.2) 977 0 R (subsubsection.22.32.3) 981 0 R (subsubsection.22.34.1) 993 0 R] +/Limits [(subsubsection.22.31.1) (subsubsection.22.34.1)] +>> endobj +10257 0 obj << +/Names [(subsubsection.22.35.1) 1001 0 R (subsubsection.22.35.2) 1005 0 R (subsubsection.22.35.3) 1009 0 R (subsubsection.22.36.1) 1017 0 R (subsubsection.22.36.2) 1021 0 R (subsubsection.22.36.3) 1025 0 R] +/Limits [(subsubsection.22.35.1) (subsubsection.22.36.3)] +>> endobj +10258 0 obj << +/Names [(subsubsection.22.36.4) 1029 0 R (subsubsection.22.36.5) 1033 0 R (subsubsection.22.36.6) 1037 0 R (subsubsection.22.36.7) 1041 0 R (subsubsection.22.36.8) 1045 0 R (subsubsection.22.37.1) 1053 0 R] +/Limits [(subsubsection.22.36.4) (subsubsection.22.37.1)] +>> endobj +10259 0 obj << +/Names [(subsubsection.22.37.2) 1057 0 R (subsubsection.22.37.3) 1061 0 R (subsubsection.22.37.4) 1065 0 R (subsubsection.22.38.1) 1073 0 R (subsubsection.22.38.2) 1077 0 R (subsubsection.22.38.3) 1081 0 R] +/Limits [(subsubsection.22.37.2) (subsubsection.22.38.3)] +>> endobj +10260 0 obj << +/Names [(subsubsection.22.38.4) 1085 0 R (subsubsection.22.39.1) 1093 0 R (subsubsection.22.39.2) 1097 0 R (subsubsection.22.39.3) 1101 0 R (subsubsection.22.4.1) 633 0 R (subsubsection.22.4.2) 637 0 R] +/Limits [(subsubsection.22.38.4) (subsubsection.22.4.2)] +>> endobj +10261 0 obj << +/Names [(subsubsection.22.5.1) 645 0 R (subsubsection.22.5.2) 649 0 R (subsubsection.22.5.3) 653 0 R (subsubsection.22.6.1) 661 0 R (subsubsection.22.6.2) 665 0 R (subsubsection.22.6.3) 669 0 R] +/Limits [(subsubsection.22.5.1) (subsubsection.22.6.3)] +>> endobj +10262 0 obj << +/Names [(subsubsection.22.7.1) 677 0 R (subsubsection.22.7.2) 681 0 R (subsubsection.22.8.1) 689 0 R (subsubsection.22.8.2) 693 0 R (subsubsection.22.8.3) 697 0 R (subsubsection.22.9.1) 705 0 R] +/Limits [(subsubsection.22.7.1) (subsubsection.22.9.1)] +>> endobj +10263 0 obj << +/Names [(subsubsection.22.9.2) 709 0 R (subsubsection.22.9.3) 713 0 R (subsubsection.23.1.1) 1113 0 R (subsubsection.23.1.2) 1117 0 R (subsubsection.23.2.1) 1125 0 R (subsubsection.23.2.2) 1129 0 R] +/Limits [(subsubsection.22.9.2) (subsubsection.23.2.2)] +>> endobj +10264 0 obj << +/Names [(subsubsection.24.1.1) 1141 0 R (subsubsection.24.10.1) 1217 0 R (subsubsection.24.11.1) 1225 0 R (subsubsection.24.12.1) 1233 0 R (subsubsection.24.13.1) 1241 0 R (subsubsection.24.14.1) 1249 0 R] +/Limits [(subsubsection.24.1.1) (subsubsection.24.14.1)] +>> endobj +10265 0 obj << +/Names [(subsubsection.24.15.1) 1257 0 R (subsubsection.24.16.1) 1265 0 R (subsubsection.24.17.1) 1273 0 R (subsubsection.24.18.1) 1281 0 R (subsubsection.24.19.1) 1289 0 R (subsubsection.24.2.1) 1149 0 R] +/Limits [(subsubsection.24.15.1) (subsubsection.24.2.1)] +>> endobj +10266 0 obj << +/Names [(subsubsection.24.20.1) 1297 0 R (subsubsection.24.21.1) 1305 0 R (subsubsection.24.22.1) 1313 0 R (subsubsection.24.23.1) 1321 0 R (subsubsection.24.24.1) 1329 0 R (subsubsection.24.25.1) 1337 0 R] +/Limits [(subsubsection.24.20.1) (subsubsection.24.25.1)] +>> endobj +10267 0 obj << +/Names [(subsubsection.24.26.1) 1345 0 R (subsubsection.24.27.1) 1353 0 R (subsubsection.24.28.1) 1361 0 R (subsubsection.24.29.1) 1369 0 R (subsubsection.24.3.1) 1157 0 R (subsubsection.24.30.1) 1377 0 R] +/Limits [(subsubsection.24.26.1) (subsubsection.24.30.1)] +>> endobj +10268 0 obj << +/Names [(subsubsection.24.31.1) 1385 0 R (subsubsection.24.32.1) 1393 0 R (subsubsection.24.33.1) 1401 0 R (subsubsection.24.34.1) 1409 0 R (subsubsection.24.34.2) 1413 0 R (subsubsection.24.35.1) 1421 0 R] +/Limits [(subsubsection.24.31.1) (subsubsection.24.35.1)] +>> endobj +10269 0 obj << +/Names [(subsubsection.24.35.2) 1425 0 R (subsubsection.24.36.1) 1433 0 R (subsubsection.24.37.1) 1441 0 R (subsubsection.24.38.1) 1449 0 R (subsubsection.24.39.1) 1457 0 R (subsubsection.24.4.1) 1165 0 R] +/Limits [(subsubsection.24.35.2) (subsubsection.24.4.1)] +>> endobj +10270 0 obj << +/Names [(subsubsection.24.40.1) 1465 0 R (subsubsection.24.41.1) 1473 0 R (subsubsection.24.42.1) 1481 0 R (subsubsection.24.43.1) 1489 0 R (subsubsection.24.44.1) 1497 0 R (subsubsection.24.45.1) 1505 0 R] +/Limits [(subsubsection.24.40.1) (subsubsection.24.45.1)] +>> endobj +10271 0 obj << +/Names [(subsubsection.24.46.1) 1513 0 R (subsubsection.24.47.1) 1521 0 R (subsubsection.24.48.1) 1529 0 R (subsubsection.24.49.1) 1537 0 R (subsubsection.24.5.1) 1173 0 R (subsubsection.24.5.2) 1177 0 R] +/Limits [(subsubsection.24.46.1) (subsubsection.24.5.2)] +>> endobj +10272 0 obj << +/Names [(subsubsection.24.50.1) 1545 0 R (subsubsection.24.51.1) 1553 0 R (subsubsection.24.52.1) 1561 0 R (subsubsection.24.53.1) 1569 0 R (subsubsection.24.54.1) 1577 0 R (subsubsection.24.55.1) 1585 0 R] +/Limits [(subsubsection.24.50.1) (subsubsection.24.55.1)] +>> endobj +10273 0 obj << +/Names [(subsubsection.24.56.1) 1593 0 R (subsubsection.24.57.1) 1601 0 R (subsubsection.24.58.1) 1609 0 R (subsubsection.24.59.1) 1617 0 R (subsubsection.24.6.1) 1185 0 R (subsubsection.24.60.1) 1625 0 R] +/Limits [(subsubsection.24.56.1) (subsubsection.24.60.1)] +>> endobj +10274 0 obj << +/Names [(subsubsection.24.61.1) 1633 0 R (subsubsection.24.62.1) 1641 0 R (subsubsection.24.63.1) 1649 0 R (subsubsection.24.64.1) 1657 0 R (subsubsection.24.65.1) 1665 0 R (subsubsection.24.66.1) 1673 0 R] +/Limits [(subsubsection.24.61.1) (subsubsection.24.66.1)] +>> endobj +10275 0 obj << +/Names [(subsubsection.24.67.1) 1681 0 R (subsubsection.24.68.1) 1689 0 R (subsubsection.24.69.1) 1697 0 R (subsubsection.24.7.1) 1193 0 R (subsubsection.24.70.1) 1705 0 R (subsubsection.24.71.1) 1713 0 R] +/Limits [(subsubsection.24.67.1) (subsubsection.24.71.1)] +>> endobj +10276 0 obj << +/Names [(subsubsection.24.72.1) 1721 0 R (subsubsection.24.73.1) 1729 0 R (subsubsection.24.74.1) 1737 0 R (subsubsection.24.75.1) 1745 0 R (subsubsection.24.76.1) 1753 0 R (subsubsection.24.77.1) 1761 0 R] +/Limits [(subsubsection.24.72.1) (subsubsection.24.77.1)] +>> endobj +10277 0 obj << +/Names [(subsubsection.24.78.1) 1769 0 R (subsubsection.24.79.1) 1777 0 R (subsubsection.24.8.1) 1201 0 R (subsubsection.24.80.1) 1785 0 R (subsubsection.24.81.1) 1793 0 R (subsubsection.24.82.1) 1801 0 R] +/Limits [(subsubsection.24.78.1) (subsubsection.24.82.1)] +>> endobj +10278 0 obj << +/Names [(subsubsection.24.83.1) 1809 0 R (subsubsection.24.84.1) 1817 0 R (subsubsection.24.85.1) 1825 0 R (subsubsection.24.86.1) 1833 0 R (subsubsection.24.87.1) 1841 0 R (subsubsection.24.88.1) 1849 0 R] +/Limits [(subsubsection.24.83.1) (subsubsection.24.88.1)] +>> endobj +10279 0 obj << +/Names [(subsubsection.24.89.1) 1857 0 R (subsubsection.24.9.1) 1209 0 R (subsubsection.24.90.1) 1865 0 R (subsubsection.24.91.1) 1873 0 R (table.1) 3417 0 R (table.2) 3418 0 R] +/Limits [(subsubsection.24.89.1) (table.2)] +>> endobj +10280 0 obj << +/Names [(table.3) 6068 0 R (todo) 3563 0 R (todo__todo000001) 3564 0 R (using_avrprog) 3314 0 R (using_tools) 3410 0 R (using_tools_gcc_minusW) 2553 0 R] +/Limits [(table.3) (using_tools_gcc_minusW)] +>> endobj +10281 0 obj << +/Names [(using_tools_gcc_optO) 3088 0 R (using_tools_using_avr_as) 3449 0 R (using_tools_using_avr_as_mach_opts) 3450 0 R (using_tools_using_avr_example) 3456 0 R (using_tools_using_avr_gcc) 3053 0 R (using_tools_using_avr_gcc_mach_opt) 3416 0 R] +/Limits [(using_tools_gcc_optO) (using_tools_using_avr_gcc_mach_opt)] +>> endobj +10282 0 obj << +/Names [(using_tools_using_avr_ld) 3461 0 R (using_tools_using_pass_ld_opts) 3470 0 R (using_tools_using_sel_gcc_opts) 3443 0 R (using_tools_using_sel_ld_opts) 3462 0 R (util_2twi_8h) 3951 0 R (util_2twi_8h_3ba96b8fe8b8607ffc271f974cdcc251) 8291 0 R] +/Limits [(using_tools_using_avr_ld) (util_2twi_8h_3ba96b8fe8b8607ffc271f974cdcc251)] +>> endobj +10283 0 obj << +/Names [(wdt_8h) 2861 0 R (wdt_8h_31e957041a2a6f2b1ad219eb4688a0ee) 8321 0 R (wdt_8h_76eed466e046b7a7dbc759f888eb3d71) 8322 0 R (wdt_8h_a8e489cdf7dd38145a8c4bcdce02fa26) 8323 0 R] +/Limits [(wdt_8h) (wdt_8h_a8e489cdf7dd38145a8c4bcdce02fa26)] +>> endobj +10284 0 obj << +/Kids [9830 0 R 9831 0 R 9832 0 R 9833 0 R 9834 0 R 9835 0 R] +/Limits [(Doc-Start) (Item.1)] +>> endobj +10285 0 obj << +/Kids [9836 0 R 9837 0 R 9838 0 R 9839 0 R 9840 0 R 9841 0 R] +/Limits [(Item.10) (Item.42)] +>> endobj +10286 0 obj << +/Kids [9842 0 R 9843 0 R 9844 0 R 9845 0 R 9846 0 R 9847 0 R] +/Limits [(Item.43) (benchmarks)] +>> endobj +10287 0 obj << +/Kids [9848 0 R 9849 0 R 9850 0 R 9851 0 R 9852 0 R 9853 0 R] +/Limits [(benchmarks_bench_libc) (delay__basic_8h)] +>> endobj +10288 0 obj << +/Kids [9854 0 R 9855 0 R 9856 0 R 9857 0 R 9858 0 R 9859 0 R] +/Limits [(delay__basic_8h_9d3997d1df667c74c3b8600326d5ab0e) (group__asmdemo)] +>> endobj +10289 0 obj << +/Kids [9860 0 R 9861 0 R 9862 0 R 9863 0 R 9864 0 R 9865 0 R] +/Limits [(group__asmdemo_asmdemo_code) (group__avr__eeprom_g79a42ec6c6c8bbbe6e34ed57a52aac59)] +>> endobj +10290 0 obj << +/Kids [9866 0 R 9867 0 R 9868 0 R 9869 0 R 9870 0 R 9871 0 R] +/Limits [(group__avr__eeprom_g7ccd65b76bb9ed5ee03855779bae28de) (group__avr__inttypes_g12dbc2ac6a36b893ef1c25c357f90a9f)] +>> endobj +10291 0 obj << +/Kids [9872 0 R 9873 0 R 9874 0 R 9875 0 R 9876 0 R 9877 0 R] +/Limits [(group__avr__inttypes_g1468793ce960b477922ef92b36a6c802) (group__avr__inttypes_g6f66e34285ab57a86aeb2f0f4895417d)] +>> endobj +10292 0 obj << +/Kids [9878 0 R 9879 0 R 9880 0 R 9881 0 R 9882 0 R 9883 0 R] +/Limits [(group__avr__inttypes_g70aa3faf72084587fb18d03aa033a212) (group__avr__inttypes_gc2d52bf83b783f530f02fa2eeabe703a)] +>> endobj +10293 0 obj << +/Kids [9884 0 R 9885 0 R 9886 0 R 9887 0 R 9888 0 R 9889 0 R] +/Limits [(group__avr__inttypes_gc45f394be3c199938a85a631711ce22e) (group__avr__math_g542f5e42e0d3b5df63de0e34ec06bb40)] +>> endobj +10294 0 obj << +/Kids [9890 0 R 9891 0 R 9892 0 R 9893 0 R 9894 0 R 9895 0 R] +/Limits [(group__avr__math_g577eee92b9969942de4d8d134d37c7b8) (group__avr__pgmspace_g2e0ce009c836fed26221263d28c79b01)] +>> endobj +10295 0 obj << +/Kids [9896 0 R 9897 0 R 9898 0 R 9899 0 R 9900 0 R 9901 0 R] +/Limits [(group__avr__pgmspace_g309908c1b7430f0d140edb78fcf8f2b9) (group__avr__pgmspace_gbb68859ac5dfa6a09ac048b4037a83b6)] +>> endobj +10296 0 obj << +/Kids [9902 0 R 9903 0 R 9904 0 R 9905 0 R 9906 0 R 9907 0 R] +/Limits [(group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) (group__avr__stdint_g21e605b9ac3a03b6de93cdf5a69e129f)] +>> endobj +10297 0 obj << +/Kids [9908 0 R 9909 0 R 9910 0 R 9911 0 R 9912 0 R 9913 0 R] +/Limits [(group__avr__stdint_g2360a536116dd734820a6b5b3d560ce7) (group__avr__stdint_gab530113fa96e280e49c3c138b0f917d)] +>> endobj +10298 0 obj << +/Kids [9914 0 R 9915 0 R 9916 0 R 9917 0 R 9918 0 R 9919 0 R] +/Limits [(group__avr__stdint_gab7df05e4698e14dbef512294ff39203) (group__avr__stdint_gfd072b9a94c14417246175f6442422ae)] +>> endobj +10299 0 obj << +/Kids [9920 0 R 9921 0 R 9922 0 R 9923 0 R 9924 0 R 9925 0 R] +/Limits [(group__avr__stdio) (group__avr__stdio_g818d63019adc9d518a13f9c36ed04f35)] +>> endobj +10300 0 obj << +/Kids [9926 0 R 9927 0 R 9928 0 R 9929 0 R 9930 0 R 9931 0 R] +/Limits [(group__avr__stdio_g822a791a1c06a12b95c14ace75b48ad2) (group__avr__stdlib_g268774f80047812307365f3113109767)] +>> endobj +10301 0 obj << +/Kids [9932 0 R 9933 0 R 9934 0 R 9935 0 R 9936 0 R 9937 0 R] +/Limits [(group__avr__stdlib_g3a1fe00c1327bbabc76688a7a1d73370) (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc)] +>> endobj +10302 0 obj << +/Kids [9938 0 R 9939 0 R 9940 0 R 9941 0 R 9942 0 R 9943 0 R] +/Limits [(group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) (group__avr__string_gfa4a8701698b766f40180c735726cfe7)] +>> endobj +10303 0 obj << +/Kids [9944 0 R 9945 0 R 9946 0 R 9947 0 R 9948 0 R 9949 0 R] +/Limits [(group__avr__string_gff88adec2ad0446259766197ec3863de) (group__ctype_ga2ded03e3a0d8f5ef2a8df3e834e916d)] +>> endobj +10304 0 obj << +/Kids [9950 0 R 9951 0 R 9952 0 R 9953 0 R 9954 0 R 9955 0 R] +/Limits [(group__ctype_ga46e128f7550afb4f2cda133594cb4b6) (group__largedemo_largedemo_overview)] +>> endobj +10305 0 obj << +/Kids [9956 0 R 9957 0 R 9958 0 R 9959 0 R 9960 0 R 9961 0 R] +/Limits [(group__largedemo_largedemo_src) (group__util__delay__basic_g4e3957917c4c447d0f9166dac881b4e3)] +>> endobj +10306 0 obj << +/Kids [9962 0 R 9963 0 R 9964 0 R 9965 0 R 9966 0 R 9967 0 R] +/Limits [(group__util__delay__basic_g74a94fec42bac9f1ff31fd443d419a6a) (group__util__twi_gbcff70642634cb53e9d8e93872f70c90)] +>> endobj +10307 0 obj << +/Kids [9968 0 R 9969 0 R 9970 0 R 9971 0 R 9972 0 R 9973 0 R] +/Limits [(group__util__twi_gc16504b87d15d83b97bb0ce61577bb40) (install_tools_install_windows_building)] +>> endobj +10308 0 obj << +/Kids [9974 0 R 9975 0 R 9976 0 R 9977 0 R 9978 0 R 9979 0 R] +/Limits [(install_tools_install_windows_tools) (mem_sections_sec_dot_text)] +>> endobj +10309 0 obj << +/Kids [9980 0 R 9981 0 R 9982 0 R 9983 0 R 9984 0 R 9985 0 R] +/Limits [(memccpy_8S) (page.107)] +>> endobj +10310 0 obj << +/Kids [9986 0 R 9987 0 R 9988 0 R 9989 0 R 9990 0 R 9991 0 R] +/Limits [(page.108) (page.14)] +>> endobj +10311 0 obj << +/Kids [9992 0 R 9993 0 R 9994 0 R 9995 0 R 9996 0 R 9997 0 R] +/Limits [(page.140) (page.172)] +>> endobj +10312 0 obj << +/Kids [9998 0 R 9999 0 R 10000 0 R 10001 0 R 10002 0 R 10003 0 R] +/Limits [(page.173) (page.204)] +>> endobj +10313 0 obj << +/Kids [10004 0 R 10005 0 R 10006 0 R 10007 0 R 10008 0 R 10009 0 R] +/Limits [(page.205) (page.237)] +>> endobj +10314 0 obj << +/Kids [10010 0 R 10011 0 R 10012 0 R 10013 0 R 10014 0 R 10015 0 R] +/Limits [(page.238) (page.27)] +>> endobj +10315 0 obj << +/Kids [10016 0 R 10017 0 R 10018 0 R 10019 0 R 10020 0 R 10021 0 R] +/Limits [(page.270) (page.301)] +>> endobj +10316 0 obj << +/Kids [10022 0 R 10023 0 R 10024 0 R 10025 0 R 10026 0 R 10027 0 R] +/Limits [(page.302) (page.334)] +>> endobj +10317 0 obj << +/Kids [10028 0 R 10029 0 R 10030 0 R 10031 0 R 10032 0 R 10033 0 R] +/Limits [(page.335) (page.367)] +>> endobj +10318 0 obj << +/Kids [10034 0 R 10035 0 R 10036 0 R 10037 0 R 10038 0 R 10039 0 R] +/Limits [(page.368) (page.4)] +>> endobj +10319 0 obj << +/Kids [10040 0 R 10041 0 R 10042 0 R 10043 0 R 10044 0 R 10045 0 R] +/Limits [(page.40) (page.70)] +>> endobj +10320 0 obj << +/Kids [10046 0 R 10047 0 R 10048 0 R 10049 0 R 10050 0 R 10051 0 R] +/Limits [(page.71) (page.ix)] +>> endobj +10321 0 obj << +/Kids [10052 0 R 10053 0 R 10054 0 R 10055 0 R 10056 0 R 10057 0 R] +/Limits [(page.v) (paragraph.22.10.4.26)] +>> endobj +10322 0 obj << +/Kids [10058 0 R 10059 0 R 10060 0 R 10061 0 R 10062 0 R 10063 0 R] +/Limits [(paragraph.22.10.4.27) (paragraph.22.11.3.28)] +>> endobj +10323 0 obj << +/Kids [10064 0 R 10065 0 R 10066 0 R 10067 0 R 10068 0 R 10069 0 R] +/Limits [(paragraph.22.11.3.29) (paragraph.22.12.2.5)] +>> endobj +10324 0 obj << +/Kids [10070 0 R 10071 0 R 10072 0 R 10073 0 R 10074 0 R 10075 0 R] +/Limits [(paragraph.22.12.2.6) (paragraph.22.18.2.15)] +>> endobj +10325 0 obj << +/Kids [10076 0 R 10077 0 R 10078 0 R 10079 0 R 10080 0 R 10081 0 R] +/Limits [(paragraph.22.18.2.16) (paragraph.22.18.4.23)] +>> endobj +10326 0 obj << +/Kids [10082 0 R 10083 0 R 10084 0 R 10085 0 R 10086 0 R 10087 0 R] +/Limits [(paragraph.22.18.4.24) (paragraph.22.24.2.6)] +>> endobj +10327 0 obj << +/Kids [10088 0 R 10089 0 R 10090 0 R 10091 0 R 10092 0 R 10093 0 R] +/Limits [(paragraph.22.24.2.7) (paragraph.22.30.2.2)] +>> endobj +10328 0 obj << +/Kids [10094 0 R 10095 0 R 10096 0 R 10097 0 R 10098 0 R 10099 0 R] +/Limits [(paragraph.22.30.2.3) (paragraph.22.32.2.1)] +>> endobj +10329 0 obj << +/Kids [10100 0 R 10101 0 R 10102 0 R 10103 0 R 10104 0 R 10105 0 R] +/Limits [(paragraph.22.32.2.2) (paragraph.22.5.2.18)] +>> endobj +10330 0 obj << +/Kids [10106 0 R 10107 0 R 10108 0 R 10109 0 R 10110 0 R 10111 0 R] +/Limits [(paragraph.22.5.2.19) (paragraph.22.5.2.50)] +>> endobj +10331 0 obj << +/Kids [10112 0 R 10113 0 R 10114 0 R 10115 0 R 10116 0 R 10117 0 R] +/Limits [(paragraph.22.5.2.51) (paragraph.22.5.2.83)] +>> endobj +10332 0 obj << +/Kids [10118 0 R 10119 0 R 10120 0 R 10121 0 R 10122 0 R 10123 0 R] +/Limits [(paragraph.22.5.2.84) (paragraph.22.6.3.24)] +>> endobj +10333 0 obj << +/Kids [10124 0 R 10125 0 R 10126 0 R 10127 0 R 10128 0 R 10129 0 R] +/Limits [(paragraph.22.6.3.25) (paragraph.22.8.2.21)] +>> endobj +10334 0 obj << +/Kids [10130 0 R 10131 0 R 10132 0 R 10133 0 R 10134 0 R 10135 0 R] +/Limits [(paragraph.22.8.2.22) (paragraph.22.8.2.54)] +>> endobj +10335 0 obj << +/Kids [10136 0 R 10137 0 R 10138 0 R 10139 0 R 10140 0 R 10141 0 R] +/Limits [(paragraph.22.8.2.55) (paragraph.22.9.2.1)] +>> endobj +10336 0 obj << +/Kids [10142 0 R 10143 0 R 10144 0 R 10145 0 R 10146 0 R 10147 0 R] +/Limits [(paragraph.22.9.2.10) (paragraph.22.9.3.25)] +>> endobj +10337 0 obj << +/Kids [10148 0 R 10149 0 R 10150 0 R 10151 0 R 10152 0 R 10153 0 R] +/Limits [(paragraph.22.9.3.26) (paragraph.24.34.2.4)] +>> endobj +10338 0 obj << +/Kids [10154 0 R 10155 0 R 10156 0 R 10157 0 R 10158 0 R 10159 0 R] +/Limits [(paragraph.24.34.2.5) (pgmspace_8h_80fdd263dea318b34bfe11f5c3cbb6f3)] +>> endobj +10339 0 obj << +/Kids [10160 0 R 10161 0 R 10162 0 R 10163 0 R 10164 0 R 10165 0 R] +/Limits [(pgmspace_8h_9153bd8c33415e46493483d8b1381cd2) (release_method_version_dev)] +>> endobj +10340 0 obj << +/Kids [10166 0 R 10167 0 R 10168 0 R 10169 0 R 10170 0 R 10171 0 R] +/Limits [(release_method_version_info) (section*.14)] +>> endobj +10341 0 obj << +/Kids [10172 0 R 10173 0 R 10174 0 R 10175 0 R 10176 0 R 10177 0 R] +/Limits [(section*.15) (section*.47)] +>> endobj +10342 0 obj << +/Kids [10178 0 R 10179 0 R 10180 0 R 10181 0 R 10182 0 R 10183 0 R] +/Limits [(section*.48) (section*.8)] +>> endobj +10343 0 obj << +/Kids [10184 0 R 10185 0 R 10186 0 R 10187 0 R 10188 0 R 10189 0 R] +/Limits [(section*.80) (section.22)] +>> endobj +10344 0 obj << +/Kids [10190 0 R 10191 0 R 10192 0 R 10193 0 R 10194 0 R 10195 0 R] +/Limits [(section.23) (strcasecmp_8S)] +>> endobj +10345 0 obj << +/Kids [10196 0 R 10197 0 R 10198 0 R 10199 0 R 10200 0 R 10201 0 R] +/Limits [(strcasecmp__P_8S) (strnlen_8S)] +>> endobj +10346 0 obj << +/Kids [10202 0 R 10203 0 R 10204 0 R 10205 0 R 10206 0 R 10207 0 R] +/Limits [(strnlen__P_8S) (subsection.11.11)] +>> endobj +10347 0 obj << +/Kids [10208 0 R 10209 0 R 10210 0 R 10211 0 R 10212 0 R 10213 0 R] +/Limits [(subsection.11.12) (subsection.12.2)] +>> endobj +10348 0 obj << +/Kids [10214 0 R 10215 0 R 10216 0 R 10217 0 R 10218 0 R 10219 0 R] +/Limits [(subsection.12.3) (subsection.22.16)] +>> endobj +10349 0 obj << +/Kids [10220 0 R 10221 0 R 10222 0 R 10223 0 R 10224 0 R 10225 0 R] +/Limits [(subsection.22.17) (subsection.24.11)] +>> endobj +10350 0 obj << +/Kids [10226 0 R 10227 0 R 10228 0 R 10229 0 R 10230 0 R 10231 0 R] +/Limits [(subsection.24.12) (subsection.24.44)] +>> endobj +10351 0 obj << +/Kids [10232 0 R 10233 0 R 10234 0 R 10235 0 R 10236 0 R 10237 0 R] +/Limits [(subsection.24.45) (subsection.24.77)] +>> endobj +10352 0 obj << +/Kids [10238 0 R 10239 0 R 10240 0 R 10241 0 R 10242 0 R 10243 0 R] +/Limits [(subsection.24.78) (subsection.6.2)] +>> endobj +10353 0 obj << +/Kids [10244 0 R 10245 0 R 10246 0 R 10247 0 R 10248 0 R 10249 0 R] +/Limits [(subsection.6.3) (subsubsection.22.11.2)] +>> endobj +10354 0 obj << +/Kids [10250 0 R 10251 0 R 10252 0 R 10253 0 R 10254 0 R 10255 0 R] +/Limits [(subsubsection.22.11.3) (subsubsection.22.30.2)] +>> endobj +10355 0 obj << +/Kids [10256 0 R 10257 0 R 10258 0 R 10259 0 R 10260 0 R 10261 0 R] +/Limits [(subsubsection.22.31.1) (subsubsection.22.6.3)] +>> endobj +10356 0 obj << +/Kids [10262 0 R 10263 0 R 10264 0 R 10265 0 R 10266 0 R 10267 0 R] +/Limits [(subsubsection.22.7.1) (subsubsection.24.30.1)] +>> endobj +10357 0 obj << +/Kids [10268 0 R 10269 0 R 10270 0 R 10271 0 R 10272 0 R 10273 0 R] +/Limits [(subsubsection.24.31.1) (subsubsection.24.60.1)] +>> endobj +10358 0 obj << +/Kids [10274 0 R 10275 0 R 10276 0 R 10277 0 R 10278 0 R 10279 0 R] +/Limits [(subsubsection.24.61.1) (table.2)] +>> endobj +10359 0 obj << +/Kids [10280 0 R 10281 0 R 10282 0 R 10283 0 R] +/Limits [(table.3) (wdt_8h_a8e489cdf7dd38145a8c4bcdce02fa26)] +>> endobj +10360 0 obj << +/Kids [10284 0 R 10285 0 R 10286 0 R 10287 0 R 10288 0 R 10289 0 R] +/Limits [(Doc-Start) (group__avr__eeprom_g79a42ec6c6c8bbbe6e34ed57a52aac59)] +>> endobj +10361 0 obj << +/Kids [10290 0 R 10291 0 R 10292 0 R 10293 0 R 10294 0 R 10295 0 R] +/Limits [(group__avr__eeprom_g7ccd65b76bb9ed5ee03855779bae28de) (group__avr__pgmspace_gbb68859ac5dfa6a09ac048b4037a83b6)] +>> endobj +10362 0 obj << +/Kids [10296 0 R 10297 0 R 10298 0 R 10299 0 R 10300 0 R 10301 0 R] +/Limits [(group__avr__pgmspace_gbe5f48c518cc38229d010467dda41d19) (group__avr__string_g1c22a39c9d936f18aa0764e331e3cddc)] +>> endobj +10363 0 obj << +/Kids [10302 0 R 10303 0 R 10304 0 R 10305 0 R 10306 0 R 10307 0 R] +/Limits [(group__avr__string_g1fd2a6e188f02599e5eeb17519f67f3e) (install_tools_install_windows_building)] +>> endobj +10364 0 obj << +/Kids [10308 0 R 10309 0 R 10310 0 R 10311 0 R 10312 0 R 10313 0 R] +/Limits [(install_tools_install_windows_tools) (page.237)] +>> endobj +10365 0 obj << +/Kids [10314 0 R 10315 0 R 10316 0 R 10317 0 R 10318 0 R 10319 0 R] +/Limits [(page.238) (page.70)] +>> endobj +10366 0 obj << +/Kids [10320 0 R 10321 0 R 10322 0 R 10323 0 R 10324 0 R 10325 0 R] +/Limits [(page.71) (paragraph.22.18.4.23)] +>> endobj +10367 0 obj << +/Kids [10326 0 R 10327 0 R 10328 0 R 10329 0 R 10330 0 R 10331 0 R] +/Limits [(paragraph.22.18.4.24) (paragraph.22.5.2.83)] +>> endobj +10368 0 obj << +/Kids [10332 0 R 10333 0 R 10334 0 R 10335 0 R 10336 0 R 10337 0 R] +/Limits [(paragraph.22.5.2.84) (paragraph.24.34.2.4)] +>> endobj +10369 0 obj << +/Kids [10338 0 R 10339 0 R 10340 0 R 10341 0 R 10342 0 R 10343 0 R] +/Limits [(paragraph.24.34.2.5) (section.22)] +>> endobj +10370 0 obj << +/Kids [10344 0 R 10345 0 R 10346 0 R 10347 0 R 10348 0 R 10349 0 R] +/Limits [(section.23) (subsection.24.11)] +>> endobj +10371 0 obj << +/Kids [10350 0 R 10351 0 R 10352 0 R 10353 0 R 10354 0 R 10355 0 R] +/Limits [(subsection.24.12) (subsubsection.22.6.3)] +>> endobj +10372 0 obj << +/Kids [10356 0 R 10357 0 R 10358 0 R 10359 0 R] +/Limits [(subsubsection.22.7.1) (wdt_8h_a8e489cdf7dd38145a8c4bcdce02fa26)] +>> endobj +10373 0 obj << +/Kids [10360 0 R 10361 0 R 10362 0 R 10363 0 R 10364 0 R 10365 0 R] +/Limits [(Doc-Start) (page.70)] +>> endobj +10374 0 obj << +/Kids [10366 0 R 10367 0 R 10368 0 R 10369 0 R 10370 0 R 10371 0 R] +/Limits [(page.71) (subsubsection.22.6.3)] +>> endobj +10375 0 obj << +/Kids [10372 0 R] +/Limits [(subsubsection.22.7.1) (wdt_8h_a8e489cdf7dd38145a8c4bcdce02fa26)] +>> endobj +10376 0 obj << +/Kids [10373 0 R 10374 0 R 10375 0 R] +/Limits [(Doc-Start) (wdt_8h_a8e489cdf7dd38145a8c4bcdce02fa26)] +>> endobj +10377 0 obj << +/Dests 10376 0 R +>> endobj +10378 0 obj << +/Type /Catalog +/Pages 9828 0 R +/Outlines 9829 0 R +/Names 10377 0 R +/PageMode/UseOutlines/PageLabels<>1<>16<>]>> +/OpenAction 1876 0 R +>> endobj +10379 0 obj << +/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.9)/Keywords() +/CreationDate (D:20081204102400-07'00') +/ModDate (D:20081204102400-07'00') +/Trapped /False +/PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.7.3147 (1.40.9)) +>> endobj +xref +0 10380 +0000000001 65535 f +0000000002 00000 f +0000000003 00000 f +0000000000 00000 f +0000000015 00000 n +0000203312 00000 n +0002190108 00000 n +0000000060 00000 n +0000000129 00000 n +0000203499 00000 n +0002190036 00000 n +0000000179 00000 n +0000000266 00000 n +0000206915 00000 n +0002189950 00000 n +0000000317 00000 n +0000000546 00000 n +0000207041 00000 n +0002189864 00000 n +0000000597 00000 n +0000000712 00000 n +0000214703 00000 n +0002189791 00000 n +0000000763 00000 n +0000000873 00000 n +0000217164 00000 n +0002189665 00000 n +0000000919 00000 n +0000001039 00000 n +0000217353 00000 n +0002189591 00000 n +0000001090 00000 n +0000001177 00000 n +0000220563 00000 n +0002189504 00000 n +0000001228 00000 n +0000001316 00000 n +0000220689 00000 n +0002189417 00000 n +0000001367 00000 n +0000001409 00000 n +0000222751 00000 n +0002189330 00000 n +0000001460 00000 n +0000001550 00000 n +0000224808 00000 n +0002189243 00000 n +0000001601 00000 n +0000001668 00000 n +0000224933 00000 n +0002189156 00000 n +0000001719 00000 n +0000001834 00000 n +0000227176 00000 n +0002189069 00000 n +0000001885 00000 n +0000001947 00000 n +0000227302 00000 n +0002188982 00000 n +0000001998 00000 n +0000002132 00000 n +0000227428 00000 n +0002188895 00000 n +0000002183 00000 n +0000002245 00000 n +0000227553 00000 n +0002188808 00000 n +0000002297 00000 n +0000002364 00000 n +0000227679 00000 n +0002188721 00000 n +0000002416 00000 n +0000002488 00000 n +0000230432 00000 n +0002188634 00000 n +0000002540 00000 n +0000002744 00000 n +0000230558 00000 n +0002188560 00000 n +0000002796 00000 n +0000002881 00000 n +0000230620 00000 n +0002188433 00000 n +0000002927 00000 n +0000003127 00000 n +0000230810 00000 n +0002188359 00000 n +0000003178 00000 n +0000003265 00000 n +0000239513 00000 n +0002188272 00000 n +0000003316 00000 n +0000003477 00000 n +0000239638 00000 n +0002188185 00000 n +0000003528 00000 n +0000003672 00000 n +0000248116 00000 n +0002188111 00000 n +0000003723 00000 n +0000003863 00000 n +0000252507 00000 n +0002187979 00000 n +0000003910 00000 n +0000004016 00000 n +0000255357 00000 n +0002187900 00000 n +0000004068 00000 n +0000004187 00000 n +0000255484 00000 n +0002187807 00000 n +0000004239 00000 n +0000004358 00000 n +0000255611 00000 n +0002187714 00000 n +0000004410 00000 n +0000004524 00000 n +0000257851 00000 n +0002187621 00000 n +0000004576 00000 n +0000004705 00000 n +0000257978 00000 n +0002187528 00000 n +0000004757 00000 n +0000004886 00000 n +0000258168 00000 n +0002187435 00000 n +0000004938 00000 n +0000005067 00000 n +0000261919 00000 n +0002187342 00000 n +0000005119 00000 n +0000005248 00000 n +0000262046 00000 n +0002187249 00000 n +0000005300 00000 n +0000005500 00000 n +0000264130 00000 n +0002187170 00000 n +0000005552 00000 n +0000005712 00000 n +0000264193 00000 n +0002187037 00000 n +0000005759 00000 n +0000005901 00000 n +0000264384 00000 n +0002186958 00000 n +0000005953 00000 n +0000006041 00000 n +0000267600 00000 n +0002186865 00000 n +0000006093 00000 n +0000006205 00000 n +0000267726 00000 n +0002186772 00000 n +0000006257 00000 n +0000006546 00000 n +0000271860 00000 n +0002186679 00000 n +0000006598 00000 n +0000006902 00000 n +0000277323 00000 n +0002186600 00000 n +0000006954 00000 n +0000007017 00000 n +0000277386 00000 n +0002186467 00000 n +0000007064 00000 n +0000007256 00000 n +0000277577 00000 n +0002186388 00000 n +0000007308 00000 n +0000007396 00000 n +0000280471 00000 n +0002186295 00000 n +0000007448 00000 n +0000007587 00000 n +0000282007 00000 n +0002186202 00000 n +0000007639 00000 n +0000007745 00000 n +0000290204 00000 n +0002186123 00000 n +0000007797 00000 n +0000007951 00000 n +0000292260 00000 n +0002185990 00000 n +0000007998 00000 n +0000008157 00000 n +0000295683 00000 n +0002185911 00000 n +0000008209 00000 n +0000008328 00000 n +0000300930 00000 n +0002185818 00000 n +0000008380 00000 n +0000008481 00000 n +0000302392 00000 n +0002185725 00000 n +0000008533 00000 n +0000008695 00000 n +0000315738 00000 n +0002185632 00000 n +0000008747 00000 n +0000008815 00000 n +0000320392 00000 n +0002185539 00000 n +0000008867 00000 n +0000008978 00000 n +0000320519 00000 n +0002185446 00000 n +0000009030 00000 n +0000009144 00000 n +0000322816 00000 n +0002185353 00000 n +0000009196 00000 n +0000009389 00000 n +0000325392 00000 n +0002185274 00000 n +0000009441 00000 n +0000009494 00000 n +0000325455 00000 n +0002185141 00000 n +0000009541 00000 n +0000009691 00000 n +0000325646 00000 n +0002185062 00000 n +0000009743 00000 n +0000009831 00000 n +0000329733 00000 n +0002184969 00000 n +0000009883 00000 n +0000010020 00000 n +0000329860 00000 n +0002184876 00000 n +0000010072 00000 n +0000010227 00000 n +0000332392 00000 n +0002184783 00000 n +0000010279 00000 n +0000010403 00000 n +0000334369 00000 n +0002184704 00000 n +0000010455 00000 n +0000010564 00000 n +0000334432 00000 n +0002184571 00000 n +0000010611 00000 n +0000010689 00000 n +0000336627 00000 n +0002184492 00000 n +0000010741 00000 n +0000010901 00000 n +0000341808 00000 n +0002184413 00000 n +0000010953 00000 n +0000011059 00000 n +0000344413 00000 n +0002184280 00000 n +0000011107 00000 n +0000011285 00000 n +0000344604 00000 n +0002184201 00000 n +0000011338 00000 n +0000011426 00000 n +0000344731 00000 n +0002184108 00000 n +0000011479 00000 n +0000011552 00000 n +0000346855 00000 n +0002184015 00000 n +0000011605 00000 n +0000011813 00000 n +0000346982 00000 n +0002183922 00000 n +0000011866 00000 n +0000011987 00000 n +0000350379 00000 n +0002183829 00000 n +0000012040 00000 n +0000012146 00000 n +0000352352 00000 n +0002183736 00000 n +0000012199 00000 n +0000012336 00000 n +0000352479 00000 n +0002183657 00000 n +0000012389 00000 n +0000012505 00000 n +0000356634 00000 n +0002183523 00000 n +0000012553 00000 n +0000012717 00000 n +0000356825 00000 n +0002183444 00000 n +0000012770 00000 n +0000012846 00000 n +0000364640 00000 n +0002183351 00000 n +0000012899 00000 n +0000013332 00000 n +0000367580 00000 n +0002183258 00000 n +0000013385 00000 n +0000013775 00000 n +0000367707 00000 n +0002183165 00000 n +0000013828 00000 n +0000014125 00000 n +0000371233 00000 n +0002183072 00000 n +0000014178 00000 n +0000014399 00000 n +0000374585 00000 n +0002182979 00000 n +0000014452 00000 n +0000014682 00000 n +0000374712 00000 n +0002182886 00000 n +0000014735 00000 n +0000014906 00000 n +0000378690 00000 n +0002182793 00000 n +0000014959 00000 n +0000015202 00000 n +0000382289 00000 n +0002182700 00000 n +0000015255 00000 n +0000015592 00000 n +0000385181 00000 n +0002182607 00000 n +0000015646 00000 n +0000015977 00000 n +0000385308 00000 n +0002182514 00000 n +0000016031 00000 n +0000016538 00000 n +0000388718 00000 n +0002182421 00000 n +0000016592 00000 n +0000016864 00000 n +0000390974 00000 n +0002182328 00000 n +0000016918 00000 n +0000017252 00000 n +0000399232 00000 n +0002182235 00000 n +0000017306 00000 n +0000017565 00000 n +0000401525 00000 n +0002182142 00000 n +0000017619 00000 n +0000017932 00000 n +0000407854 00000 n +0002182049 00000 n +0000017986 00000 n +0000018146 00000 n +0000412120 00000 n +0002181956 00000 n +0000018200 00000 n +0000018345 00000 n +0000412247 00000 n +0002181863 00000 n +0000018399 00000 n +0000018661 00000 n +0000415483 00000 n +0002181770 00000 n +0000018715 00000 n +0000019227 00000 n +0000415610 00000 n +0002181677 00000 n +0000019281 00000 n +0000019602 00000 n +0000422059 00000 n +0002181584 00000 n +0000019656 00000 n +0000020300 00000 n +0000422186 00000 n +0002181491 00000 n +0000020354 00000 n +0000020681 00000 n +0000425548 00000 n +0002181398 00000 n +0000020735 00000 n +0000021055 00000 n +0000425675 00000 n +0002181305 00000 n +0000021109 00000 n +0000021391 00000 n +0000425802 00000 n +0002181212 00000 n +0000021445 00000 n +0000021819 00000 n +0000429082 00000 n +0002181119 00000 n +0000021873 00000 n +0000022158 00000 n +0000429209 00000 n +0002181026 00000 n +0000022212 00000 n +0000022520 00000 n +0000432181 00000 n +0002180933 00000 n +0000022574 00000 n +0000023000 00000 n +0000432308 00000 n +0002180840 00000 n +0000023054 00000 n +0000023320 00000 n +0000434822 00000 n +0002180747 00000 n +0000023374 00000 n +0000023664 00000 n +0000437308 00000 n +0002180654 00000 n +0000023718 00000 n +0000023998 00000 n +0000440251 00000 n +0002180561 00000 n +0000024052 00000 n +0000024589 00000 n +0000440378 00000 n +0002180482 00000 n +0000024643 00000 n +0000024929 00000 n +0000461543 00000 n +0002180348 00000 n +0000024977 00000 n +0000025233 00000 n +0000461734 00000 n +0002180269 00000 n +0000025286 00000 n +0000025615 00000 n +0000465728 00000 n +0002180176 00000 n +0000025668 00000 n +0000025769 00000 n +0000465855 00000 n +0002180083 00000 n +0000025822 00000 n +0000025923 00000 n +0000468965 00000 n +0002179990 00000 n +0000025976 00000 n +0000026174 00000 n +0000472605 00000 n +0002179897 00000 n +0000026227 00000 n +0000026377 00000 n +0000474984 00000 n +0002179804 00000 n +0000026430 00000 n +0000026501 00000 n +0000475111 00000 n +0002179711 00000 n +0000026554 00000 n +0000026617 00000 n +0000477748 00000 n +0002179618 00000 n +0000026670 00000 n +0000026820 00000 n +0000477875 00000 n +0002179525 00000 n +0000026873 00000 n +0000026941 00000 n +0000478001 00000 n +0002179432 00000 n +0000026995 00000 n +0000027058 00000 n +0000480911 00000 n +0002179339 00000 n +0000027112 00000 n +0000027337 00000 n +0000481038 00000 n +0002179246 00000 n +0000027391 00000 n +0000027705 00000 n +0000491433 00000 n +0002179167 00000 n +0000027759 00000 n +0000027969 00000 n +0000498911 00000 n +0002179034 00000 n +0000028017 00000 n +0000028149 00000 n +0000501960 00000 n +0002178916 00000 n +0000028202 00000 n +0000028415 00000 n +0000502087 00000 n +0002178837 00000 n +0000028473 00000 n +0000028693 00000 n +0000515399 00000 n +0002178758 00000 n +0000028751 00000 n +0000028953 00000 n +0000518200 00000 n +0002178626 00000 n +0000029006 00000 n +0000029206 00000 n +0000518327 00000 n +0002178547 00000 n +0000029264 00000 n +0000029468 00000 n +0000523005 00000 n +0002178468 00000 n +0000029526 00000 n +0000029878 00000 n +0000523132 00000 n +0002178350 00000 n +0000029931 00000 n +0000030113 00000 n +0000523259 00000 n +0002178271 00000 n +0000030171 00000 n +0000030320 00000 n +0000525638 00000 n +0002178192 00000 n +0000030378 00000 n +0000030634 00000 n +0000532099 00000 n +0002178098 00000 n +0000030682 00000 n +0000030844 00000 n +0000536074 00000 n +0002177965 00000 n +0000030892 00000 n +0000031094 00000 n +0000536265 00000 n +0002177847 00000 n +0000031147 00000 n +0000031344 00000 n +0000536392 00000 n +0002177768 00000 n +0000031402 00000 n +0000031508 00000 n +0000536519 00000 n +0002177689 00000 n +0000031566 00000 n +0000031697 00000 n +0000536646 00000 n +0002177571 00000 n +0000031750 00000 n +0000031874 00000 n +0000538795 00000 n +0002177492 00000 n +0000031932 00000 n +0000032074 00000 n +0000541466 00000 n +0002177413 00000 n +0000032132 00000 n +0000032246 00000 n +0000546273 00000 n +0002177319 00000 n +0000032294 00000 n +0000032397 00000 n +0000551328 00000 n +0002177225 00000 n +0000032445 00000 n +0000032521 00000 n +0000551519 00000 n +0002177131 00000 n +0000032569 00000 n +0000032675 00000 n +0000556563 00000 n +0002176998 00000 n +0000032723 00000 n +0000032814 00000 n +0000556625 00000 n +0002176933 00000 n +0000032867 00000 n +0000032930 00000 n +0000568050 00000 n +0002176800 00000 n +0000032978 00000 n +0000033112 00000 n +0000568113 00000 n +0002176735 00000 n +0000033165 00000 n +0000033271 00000 n +0000568176 00000 n +0002176602 00000 n +0000033319 00000 n +0000033400 00000 n +0000568239 00000 n +0002176537 00000 n +0000033453 00000 n +0000033529 00000 n +0000601307 00000 n +0002176401 00000 n +0000033577 00000 n +0000033708 00000 n +0000601434 00000 n +0002176283 00000 n +0000033761 00000 n +0000033999 00000 n +0000601497 00000 n +0002176204 00000 n +0000034057 00000 n +0000034188 00000 n +0000601623 00000 n +0002176125 00000 n +0000034246 00000 n +0000034387 00000 n +0000605318 00000 n +0002175993 00000 n +0000034440 00000 n +0000034586 00000 n +0000605381 00000 n +0002175914 00000 n +0000034644 00000 n +0000034775 00000 n +0000605507 00000 n +0002175835 00000 n +0000034833 00000 n +0000034964 00000 n +0000611423 00000 n +0002175703 00000 n +0000035017 00000 n +0000035206 00000 n +0000611486 00000 n +0002175624 00000 n +0000035264 00000 n +0000035395 00000 n +0000611677 00000 n +0002175545 00000 n +0000035453 00000 n +0000035594 00000 n +0000617566 00000 n +0002175413 00000 n +0000035647 00000 n +0000035801 00000 n +0000617629 00000 n +0002175334 00000 n +0000035859 00000 n +0000035990 00000 n +0000621670 00000 n +0002175255 00000 n +0000036048 00000 n +0000036179 00000 n +0000622051 00000 n +0002175123 00000 n +0000036232 00000 n +0000036459 00000 n +0000622114 00000 n +0002175044 00000 n +0000036517 00000 n +0000036648 00000 n +0000645785 00000 n +0002174951 00000 n +0000036706 00000 n +0000036837 00000 n +0000668773 00000 n +0002174872 00000 n +0000036895 00000 n +0000037031 00000 n +0000669156 00000 n +0002174740 00000 n +0000037084 00000 n +0000037220 00000 n +0000669219 00000 n +0002174661 00000 n +0000037278 00000 n +0000037409 00000 n +0000677329 00000 n +0002174568 00000 n +0000037467 00000 n +0000037598 00000 n +0000681013 00000 n +0002174489 00000 n +0000037656 00000 n +0000037797 00000 n +0000705557 00000 n +0002174357 00000 n +0000037850 00000 n +0000038014 00000 n +0000705619 00000 n +0002174278 00000 n +0000038072 00000 n +0000038203 00000 n +0000709480 00000 n +0002174199 00000 n +0000038261 00000 n +0000038402 00000 n +0000715067 00000 n +0002174067 00000 n +0000038455 00000 n +0000038662 00000 n +0000715130 00000 n +0002173988 00000 n +0000038720 00000 n +0000038851 00000 n +0000741003 00000 n +0002173895 00000 n +0000038909 00000 n +0000039040 00000 n +0000753565 00000 n +0002173816 00000 n +0000039098 00000 n +0000039234 00000 n +0000762484 00000 n +0002173684 00000 n +0000039287 00000 n +0000039489 00000 n +0000762547 00000 n +0002173605 00000 n +0000039547 00000 n +0000039678 00000 n +0000792939 00000 n +0002173512 00000 n +0000039736 00000 n +0000039867 00000 n +0000802323 00000 n +0002173433 00000 n +0000039925 00000 n +0000040066 00000 n +0000848220 00000 n +0002173301 00000 n +0000040120 00000 n +0000040299 00000 n +0000848283 00000 n +0002173222 00000 n +0000040358 00000 n +0000040489 00000 n +0000861710 00000 n +0002173129 00000 n +0000040548 00000 n +0000040679 00000 n +0000866038 00000 n +0002173036 00000 n +0000040738 00000 n +0000040874 00000 n +0000866229 00000 n +0002172943 00000 n +0000040933 00000 n +0000041074 00000 n +0000905831 00000 n +0002172864 00000 n +0000041133 00000 n +0000041274 00000 n +0000912508 00000 n +0002172732 00000 n +0000041328 00000 n +0000041454 00000 n +0000912571 00000 n +0002172653 00000 n +0000041513 00000 n +0000041644 00000 n +0000919702 00000 n +0002172560 00000 n +0000041703 00000 n +0000041834 00000 n +0000919893 00000 n +0002172481 00000 n +0000041893 00000 n +0000042034 00000 n +0000967089 00000 n +0002172349 00000 n +0000042088 00000 n +0000042335 00000 n +0000967152 00000 n +0002172270 00000 n +0000042394 00000 n +0000042525 00000 n +0000976368 00000 n +0002172191 00000 n +0000042584 00000 n +0000042715 00000 n +0000990835 00000 n +0002172059 00000 n +0000042769 00000 n +0000042958 00000 n +0000990898 00000 n +0002171980 00000 n +0000043017 00000 n +0000043148 00000 n +0000997662 00000 n +0002171887 00000 n +0000043207 00000 n +0000043338 00000 n +0001000390 00000 n +0002171808 00000 n +0000043397 00000 n +0000043538 00000 n +0001004325 00000 n +0002171715 00000 n +0000043592 00000 n +0000043756 00000 n +0001011920 00000 n +0002171583 00000 n +0000043810 00000 n +0000043986 00000 n +0001011983 00000 n +0002171504 00000 n +0000044045 00000 n +0000044176 00000 n +0001060985 00000 n +0002171425 00000 n +0000044235 00000 n +0000044366 00000 n +0001069800 00000 n +0002171332 00000 n +0000044420 00000 n +0000044690 00000 n +0001072359 00000 n +0002171239 00000 n +0000044744 00000 n +0000044923 00000 n +0001080401 00000 n +0002171107 00000 n +0000044977 00000 n +0000045219 00000 n +0001080464 00000 n +0002171028 00000 n +0000045278 00000 n +0000045409 00000 n +0001101267 00000 n +0002170935 00000 n +0000045468 00000 n +0000045599 00000 n +0001106860 00000 n +0002170842 00000 n +0000045658 00000 n +0000045794 00000 n +0001113389 00000 n +0002170763 00000 n +0000045853 00000 n +0000045994 00000 n +0001144105 00000 n +0002170670 00000 n +0000046048 00000 n +0000046290 00000 n +0001151581 00000 n +0002170577 00000 n +0000046344 00000 n +0000046574 00000 n +0001158417 00000 n +0002170445 00000 n +0000046628 00000 n +0000046888 00000 n +0001158480 00000 n +0002170366 00000 n +0000046947 00000 n +0000047078 00000 n +0001161637 00000 n +0002170287 00000 n +0000047137 00000 n +0000047268 00000 n +0001165419 00000 n +0002170155 00000 n +0000047322 00000 n +0000047600 00000 n +0001165481 00000 n +0002170076 00000 n +0000047659 00000 n +0000047790 00000 n +0001168003 00000 n +0002169997 00000 n +0000047849 00000 n +0000047990 00000 n +0001168511 00000 n +0002169865 00000 n +0000048044 00000 n +0000048281 00000 n +0001168573 00000 n +0002169786 00000 n +0000048340 00000 n +0000048471 00000 n +0001172232 00000 n +0002169707 00000 n +0000048530 00000 n +0000048661 00000 n +0001175443 00000 n +0002169575 00000 n +0000048715 00000 n +0000048932 00000 n +0001175505 00000 n +0002169496 00000 n +0000048991 00000 n +0000049122 00000 n +0001180019 00000 n +0002169417 00000 n +0000049181 00000 n +0000049312 00000 n +0001187591 00000 n +0002169285 00000 n +0000049366 00000 n +0000049742 00000 n +0001187654 00000 n +0002169206 00000 n +0000049801 00000 n +0000049932 00000 n +0001192730 00000 n +0002169127 00000 n +0000049991 00000 n +0000050122 00000 n +0001195723 00000 n +0002168995 00000 n +0000050176 00000 n +0000050370 00000 n +0001195786 00000 n +0002168916 00000 n +0000050429 00000 n +0000050560 00000 n +0001201174 00000 n +0002168837 00000 n +0000050619 00000 n +0000050760 00000 n +0001208462 00000 n +0002168705 00000 n +0000050814 00000 n +0000051175 00000 n +0001208525 00000 n +0002168626 00000 n +0000051234 00000 n +0000051365 00000 n +0001208652 00000 n +0002168547 00000 n +0000051424 00000 n +0000051565 00000 n +0001213177 00000 n +0002168415 00000 n +0000051619 00000 n +0000051907 00000 n +0001213240 00000 n +0002168336 00000 n +0000051966 00000 n +0000052097 00000 n +0001215488 00000 n +0002168257 00000 n +0000052156 00000 n +0000052297 00000 n +0001215867 00000 n +0002168125 00000 n +0000052351 00000 n +0000052578 00000 n +0001215930 00000 n +0002168046 00000 n +0000052637 00000 n +0000052768 00000 n +0001216057 00000 n +0002167967 00000 n +0000052827 00000 n +0000052958 00000 n +0001218541 00000 n +0002167835 00000 n +0000053012 00000 n +0000053348 00000 n +0001218604 00000 n +0002167756 00000 n +0000053407 00000 n +0000053538 00000 n +0001221785 00000 n +0002167677 00000 n +0000053597 00000 n +0000053728 00000 n +0001226131 00000 n +0002167545 00000 n +0000053782 00000 n +0000054012 00000 n +0001226194 00000 n +0002167466 00000 n +0000054071 00000 n +0000054202 00000 n +0001232538 00000 n +0002167387 00000 n +0000054261 00000 n +0000054392 00000 n +0001240221 00000 n +0002167255 00000 n +0000054446 00000 n +0000054675 00000 n +0001240284 00000 n +0002167176 00000 n +0000054734 00000 n +0000054865 00000 n +0001247057 00000 n +0002167083 00000 n +0000054924 00000 n +0000055055 00000 n +0001253571 00000 n +0002167004 00000 n +0000055114 00000 n +0000055255 00000 n +0001253826 00000 n +0002166911 00000 n +0000055309 00000 n +0000055592 00000 n +0001253953 00000 n +0002166779 00000 n +0000055646 00000 n +0000055742 00000 n +0001254016 00000 n +0002166714 00000 n +0000055801 00000 n +0000055932 00000 n +0001259504 00000 n +0002166579 00000 n +0000055986 00000 n +0000056214 00000 n +0001262517 00000 n +0002166496 00000 n +0000056274 00000 n +0000056376 00000 n +0001262645 00000 n +0002166398 00000 n +0000056436 00000 n +0000056561 00000 n +0001270232 00000 n +0002166315 00000 n +0000056621 00000 n +0000056731 00000 n +0001272854 00000 n +0002166177 00000 n +0000056786 00000 n +0000056901 00000 n +0001272982 00000 n +0002166093 00000 n +0000056961 00000 n +0000057048 00000 n +0001282990 00000 n +0002165994 00000 n +0000057108 00000 n +0000057218 00000 n +0001285193 00000 n +0002165895 00000 n +0000057278 00000 n +0000057418 00000 n +0001287794 00000 n +0002165796 00000 n +0000057478 00000 n +0000057641 00000 n +0001295968 00000 n +0002165697 00000 n +0000057701 00000 n +0000057816 00000 n +0001299772 00000 n +0002165598 00000 n +0000057876 00000 n +0000058044 00000 n +0001302039 00000 n +0002165499 00000 n +0000058104 00000 n +0000058295 00000 n +0001306738 00000 n +0002165415 00000 n +0000058355 00000 n +0000058536 00000 n +0001306866 00000 n +0002165276 00000 n +0000058591 00000 n +0000058769 00000 n +0001306994 00000 n +0002165192 00000 n +0000058829 00000 n +0000058931 00000 n +0001457040 00000 n +0002165093 00000 n +0000058991 00000 n +0000059118 00000 n +0001457168 00000 n +0002164994 00000 n +0000059178 00000 n +0000059303 00000 n +0001469069 00000 n +0002164910 00000 n +0000059363 00000 n +0000059473 00000 n +0001471672 00000 n +0002164771 00000 n +0000059528 00000 n +0000059729 00000 n +0001471800 00000 n +0002164687 00000 n +0000059789 00000 n +0000059891 00000 n +0001524789 00000 n +0002164588 00000 n +0000059951 00000 n +0000060078 00000 n +0001529678 00000 n +0002164489 00000 n +0000060138 00000 n +0000060263 00000 n +0001549359 00000 n +0002164405 00000 n +0000060323 00000 n +0000060433 00000 n +0001549485 00000 n +0002164281 00000 n +0000060488 00000 n +0000060748 00000 n +0001549612 00000 n +0002164197 00000 n +0000060808 00000 n +0000060948 00000 n +0001552877 00000 n +0002164098 00000 n +0000061008 00000 n +0000061161 00000 n +0001553005 00000 n +0002164014 00000 n +0000061221 00000 n +0000061331 00000 n +0001562787 00000 n +0002163875 00000 n +0000061380 00000 n +0000061555 00000 n +0001562915 00000 n +0002163750 00000 n +0000061609 00000 n +0000061757 00000 n +0001562979 00000 n +0002163666 00000 n +0000061816 00000 n +0000061948 00000 n +0001563107 00000 n +0002163582 00000 n +0000062007 00000 n +0000062134 00000 n +0001565687 00000 n +0002163457 00000 n +0000062188 00000 n +0000062341 00000 n +0001565751 00000 n +0002163373 00000 n +0000062400 00000 n +0000062532 00000 n +0001565879 00000 n +0002163289 00000 n +0000062591 00000 n +0000062718 00000 n +0001566199 00000 n +0002163163 00000 n +0000062767 00000 n +0000062889 00000 n +0001566327 00000 n +0002163038 00000 n +0000062943 00000 n +0000063093 00000 n +0001566391 00000 n +0002162969 00000 n +0000063152 00000 n +0000063284 00000 n +0001571619 00000 n +0002162829 00000 n +0000063338 00000 n +0000063478 00000 n +0001571683 00000 n +0002162760 00000 n +0000063537 00000 n +0000063669 00000 n +0001571811 00000 n +0002162620 00000 n +0000063723 00000 n +0000063863 00000 n +0001571875 00000 n +0002162551 00000 n +0000063922 00000 n +0000064054 00000 n +0001572003 00000 n +0002162411 00000 n +0000064108 00000 n +0000064258 00000 n +0001572067 00000 n +0002162342 00000 n +0000064317 00000 n +0000064449 00000 n +0001572323 00000 n +0002162202 00000 n +0000064503 00000 n +0000064643 00000 n +0001572387 00000 n +0002162118 00000 n +0000064702 00000 n +0000064834 00000 n +0001579251 00000 n +0002162034 00000 n +0000064893 00000 n +0000065025 00000 n +0001593671 00000 n +0002161894 00000 n +0000065079 00000 n +0000065224 00000 n +0001593735 00000 n +0002161825 00000 n +0000065283 00000 n +0000065415 00000 n +0001593927 00000 n +0002161685 00000 n +0000065469 00000 n +0000065614 00000 n +0001593990 00000 n +0002161616 00000 n +0000065673 00000 n +0000065805 00000 n +0001597651 00000 n +0002161476 00000 n +0000065859 00000 n +0000066004 00000 n +0001597714 00000 n +0002161407 00000 n +0000066063 00000 n +0000066195 00000 n +0001598098 00000 n +0002161267 00000 n +0000066249 00000 n +0000066427 00000 n +0001598162 00000 n +0002161198 00000 n +0000066486 00000 n +0000066618 00000 n +0001598482 00000 n +0002161058 00000 n +0000066673 00000 n +0000066818 00000 n +0001598546 00000 n +0002160989 00000 n +0000066878 00000 n +0000067010 00000 n +0001600245 00000 n +0002160849 00000 n +0000067065 00000 n +0000067225 00000 n +0001600309 00000 n +0002160780 00000 n +0000067285 00000 n +0000067417 00000 n +0001600501 00000 n +0002160640 00000 n +0000067472 00000 n +0000067607 00000 n +0001600565 00000 n +0002160571 00000 n +0000067667 00000 n +0000067799 00000 n +0001600693 00000 n +0002160431 00000 n +0000067854 00000 n +0000067994 00000 n +0001600757 00000 n +0002160362 00000 n +0000068054 00000 n +0000068186 00000 n +0001600885 00000 n +0002160222 00000 n +0000068241 00000 n +0000068386 00000 n +0001600949 00000 n +0002160153 00000 n +0000068446 00000 n +0000068578 00000 n +0001601077 00000 n +0002160013 00000 n +0000068633 00000 n +0000068773 00000 n +0001601141 00000 n +0002159944 00000 n +0000068833 00000 n +0000068965 00000 n +0001601525 00000 n +0002159804 00000 n +0000069020 00000 n +0000069185 00000 n +0001601589 00000 n +0002159735 00000 n +0000069245 00000 n +0000069377 00000 n +0001608492 00000 n +0002159595 00000 n +0000069432 00000 n +0000069592 00000 n +0001608556 00000 n +0002159526 00000 n +0000069652 00000 n +0000069784 00000 n +0001633730 00000 n +0002159386 00000 n +0000069839 00000 n +0000069969 00000 n +0001633794 00000 n +0002159317 00000 n +0000070029 00000 n +0000070161 00000 n +0001633922 00000 n +0002159177 00000 n +0000070216 00000 n +0000070356 00000 n +0001633986 00000 n +0002159108 00000 n +0000070416 00000 n +0000070548 00000 n +0001634434 00000 n +0002158968 00000 n +0000070603 00000 n +0000070743 00000 n +0001634498 00000 n +0002158899 00000 n +0000070803 00000 n +0000070935 00000 n +0001640712 00000 n +0002158759 00000 n +0000070990 00000 n +0000071145 00000 n +0001641866 00000 n +0002158690 00000 n +0000071205 00000 n +0000071337 00000 n +0001641994 00000 n +0002158550 00000 n +0000071392 00000 n +0000071542 00000 n +0001642058 00000 n +0002158481 00000 n +0000071602 00000 n +0000071734 00000 n +0001642186 00000 n +0002158341 00000 n +0000071789 00000 n +0000071952 00000 n +0001642250 00000 n +0002158272 00000 n +0000072012 00000 n +0000072144 00000 n +0001642378 00000 n +0002158132 00000 n +0000072199 00000 n +0000072349 00000 n +0001642442 00000 n +0002158063 00000 n +0000072409 00000 n +0000072541 00000 n +0001642570 00000 n +0002157923 00000 n +0000072596 00000 n +0000072759 00000 n +0001642634 00000 n +0002157854 00000 n +0000072819 00000 n +0000072951 00000 n +0001642762 00000 n +0002157714 00000 n +0000073006 00000 n +0000073156 00000 n +0001642826 00000 n +0002157645 00000 n +0000073216 00000 n +0000073348 00000 n +0001642953 00000 n +0002157505 00000 n +0000073403 00000 n +0000073566 00000 n +0001643017 00000 n +0002157436 00000 n +0000073626 00000 n +0000073758 00000 n +0001643145 00000 n +0002157296 00000 n +0000073813 00000 n +0000073963 00000 n +0001643209 00000 n +0002157227 00000 n +0000074023 00000 n +0000074155 00000 n +0001643337 00000 n +0002157087 00000 n +0000074210 00000 n +0000074365 00000 n +0001643401 00000 n +0002157018 00000 n +0000074425 00000 n +0000074557 00000 n +0001643529 00000 n +0002156878 00000 n +0000074612 00000 n +0000074767 00000 n +0001643593 00000 n +0002156809 00000 n +0000074827 00000 n +0000074959 00000 n +0001643720 00000 n +0002156669 00000 n +0000075014 00000 n +0000075182 00000 n +0001643784 00000 n +0002156600 00000 n +0000075242 00000 n +0000075374 00000 n +0001643912 00000 n +0002156460 00000 n +0000075429 00000 n +0000075579 00000 n +0001643976 00000 n +0002156391 00000 n +0000075639 00000 n +0000075771 00000 n +0001644102 00000 n +0002156251 00000 n +0000075826 00000 n +0000075976 00000 n +0001644165 00000 n +0002156182 00000 n +0000076036 00000 n +0000076168 00000 n +0001648361 00000 n +0002156042 00000 n +0000076223 00000 n +0000076383 00000 n +0001648425 00000 n +0002155958 00000 n +0000076443 00000 n +0000076575 00000 n +0001665638 00000 n +0002155874 00000 n +0000076635 00000 n +0000076767 00000 n +0001675069 00000 n +0002155734 00000 n +0000076822 00000 n +0000076967 00000 n +0001675133 00000 n +0002155650 00000 n +0000077027 00000 n +0000077159 00000 n +0001675453 00000 n +0002155566 00000 n +0000077219 00000 n +0000077351 00000 n +0001678497 00000 n +0002155426 00000 n +0000077406 00000 n +0000077561 00000 n +0001678561 00000 n +0002155357 00000 n +0000077621 00000 n +0000077753 00000 n +0001678751 00000 n +0002155217 00000 n +0000077808 00000 n +0000077958 00000 n +0001678815 00000 n +0002155148 00000 n +0000078018 00000 n +0000078150 00000 n +0001679199 00000 n +0002155008 00000 n +0000078205 00000 n +0000078350 00000 n +0001679263 00000 n +0002154939 00000 n +0000078410 00000 n +0000078542 00000 n +0001686571 00000 n +0002154799 00000 n +0000078597 00000 n +0000078747 00000 n +0001686635 00000 n +0002154730 00000 n +0000078807 00000 n +0000078939 00000 n +0001713008 00000 n +0002154590 00000 n +0000078994 00000 n +0000079139 00000 n +0001713072 00000 n +0002154521 00000 n +0000079199 00000 n +0000079331 00000 n +0001728457 00000 n +0002154381 00000 n +0000079386 00000 n +0000079536 00000 n +0001728521 00000 n +0002154312 00000 n +0000079596 00000 n +0000079728 00000 n +0001737323 00000 n +0002154172 00000 n +0000079783 00000 n +0000079953 00000 n +0001738526 00000 n +0002154103 00000 n +0000080013 00000 n +0000080145 00000 n +0001738654 00000 n +0002153963 00000 n +0000080200 00000 n +0000080383 00000 n +0001738718 00000 n +0002153894 00000 n +0000080443 00000 n +0000080575 00000 n +0001738846 00000 n +0002153754 00000 n +0000080630 00000 n +0000080800 00000 n +0001738910 00000 n +0002153685 00000 n +0000080860 00000 n +0000080992 00000 n +0001739038 00000 n +0002153545 00000 n +0000081047 00000 n +0000081197 00000 n +0001739102 00000 n +0002153476 00000 n +0000081257 00000 n +0000081389 00000 n +0001739230 00000 n +0002153336 00000 n +0000081444 00000 n +0000081607 00000 n +0001739294 00000 n +0002153267 00000 n +0000081667 00000 n +0000081799 00000 n +0001739422 00000 n +0002153127 00000 n +0000081854 00000 n +0000082004 00000 n +0001739486 00000 n +0002153058 00000 n +0000082064 00000 n +0000082196 00000 n +0001739614 00000 n +0002152918 00000 n +0000082251 00000 n +0000082414 00000 n +0001739678 00000 n +0002152849 00000 n +0000082474 00000 n +0000082606 00000 n +0001739805 00000 n +0002152709 00000 n +0000082661 00000 n +0000082826 00000 n +0001739869 00000 n +0002152640 00000 n +0000082886 00000 n +0000083018 00000 n +0001739997 00000 n +0002152500 00000 n +0000083073 00000 n +0000083251 00000 n +0001740061 00000 n +0002152431 00000 n +0000083311 00000 n +0000083443 00000 n +0001740189 00000 n +0002152291 00000 n +0000083498 00000 n +0000083648 00000 n +0001740253 00000 n +0002152222 00000 n +0000083708 00000 n +0000083840 00000 n +0001740381 00000 n +0002152082 00000 n +0000083895 00000 n +0000084058 00000 n +0001740445 00000 n +0002152013 00000 n +0000084118 00000 n +0000084250 00000 n +0001740573 00000 n +0002151873 00000 n +0000084305 00000 n +0000084455 00000 n +0001740637 00000 n +0002151804 00000 n +0000084515 00000 n +0000084647 00000 n +0001740763 00000 n +0002151664 00000 n +0000084702 00000 n +0000084865 00000 n +0001740826 00000 n +0002151595 00000 n +0000084925 00000 n +0000085057 00000 n +0001740951 00000 n +0002151455 00000 n +0000085112 00000 n +0000085267 00000 n +0001741013 00000 n +0002151386 00000 n +0000085327 00000 n +0000085459 00000 n +0001741141 00000 n +0002151246 00000 n +0000085514 00000 n +0000085682 00000 n +0001741205 00000 n +0002151177 00000 n +0000085742 00000 n +0000085874 00000 n +0001741333 00000 n +0002151037 00000 n +0000085929 00000 n +0000086079 00000 n +0001741397 00000 n +0002150968 00000 n +0000086139 00000 n +0000086271 00000 n +0001749343 00000 n +0002150828 00000 n +0000086326 00000 n +0000086476 00000 n +0001749407 00000 n +0002150759 00000 n +0000086536 00000 n +0000086668 00000 n +0001753389 00000 n +0002150619 00000 n +0000086723 00000 n +0000086878 00000 n +0001754740 00000 n +0002150550 00000 n +0000086938 00000 n +0000087070 00000 n +0001754868 00000 n +0002150410 00000 n +0000087125 00000 n +0000087293 00000 n +0001754932 00000 n +0002150341 00000 n +0000087353 00000 n +0000087485 00000 n +0001755060 00000 n +0002150201 00000 n +0000087540 00000 n +0000087695 00000 n +0001755124 00000 n +0002150132 00000 n +0000087755 00000 n +0000087887 00000 n +0001755252 00000 n +0002149992 00000 n +0000087942 00000 n +0000088110 00000 n +0001755316 00000 n +0002149923 00000 n +0000088170 00000 n +0000088302 00000 n +0001755444 00000 n +0002149783 00000 n +0000088357 00000 n +0000088507 00000 n +0001755508 00000 n +0002149714 00000 n +0000088567 00000 n +0000088699 00000 n +0001755636 00000 n +0002149574 00000 n +0000088754 00000 n +0000088917 00000 n +0001755700 00000 n +0002149505 00000 n +0000088977 00000 n +0000089109 00000 n +0001755828 00000 n +0002149365 00000 n +0000089164 00000 n +0000089314 00000 n +0001755892 00000 n +0002149296 00000 n +0000089374 00000 n +0000089506 00000 n +0001756020 00000 n +0002149156 00000 n +0000089561 00000 n +0000089736 00000 n +0001756084 00000 n +0002149087 00000 n +0000089796 00000 n +0000089928 00000 n +0001756212 00000 n +0002148947 00000 n +0000089983 00000 n +0000090171 00000 n +0001756276 00000 n +0002148878 00000 n +0000090231 00000 n +0000090363 00000 n +0001756404 00000 n +0002148738 00000 n +0000090418 00000 n +0000090573 00000 n +0001756468 00000 n +0002148669 00000 n +0000090633 00000 n +0000090765 00000 n +0001756595 00000 n +0002148529 00000 n +0000090820 00000 n +0000090988 00000 n +0001756659 00000 n +0002148460 00000 n +0000091048 00000 n +0000091180 00000 n +0001756787 00000 n +0002148320 00000 n +0000091235 00000 n +0000091390 00000 n +0001756851 00000 n +0002148251 00000 n +0000091450 00000 n +0000091582 00000 n +0001756977 00000 n +0002148111 00000 n +0000091637 00000 n +0000091805 00000 n +0001757040 00000 n +0002148042 00000 n +0000091865 00000 n +0000091997 00000 n +0001757165 00000 n +0002147902 00000 n +0000092052 00000 n +0000092207 00000 n +0001757227 00000 n +0002147833 00000 n +0000092267 00000 n +0000092399 00000 n +0001757355 00000 n +0002147693 00000 n +0000092454 00000 n +0000092622 00000 n +0001757419 00000 n +0002147624 00000 n +0000092682 00000 n +0000092814 00000 n +0001757547 00000 n +0002147484 00000 n +0000092869 00000 n +0000093024 00000 n +0001757611 00000 n +0002147415 00000 n +0000093084 00000 n +0000093216 00000 n +0001757741 00000 n +0002147275 00000 n +0000093271 00000 n +0000093439 00000 n +0001757806 00000 n +0002147206 00000 n +0000093499 00000 n +0000093631 00000 n +0001757936 00000 n +0002147066 00000 n +0000093686 00000 n +0000093841 00000 n +0001758001 00000 n +0002146997 00000 n +0000093901 00000 n +0000094033 00000 n +0001758131 00000 n +0002146857 00000 n +0000094088 00000 n +0000094256 00000 n +0001758196 00000 n +0002146788 00000 n +0000094316 00000 n +0000094448 00000 n +0001758325 00000 n +0002146648 00000 n +0000094503 00000 n +0000094658 00000 n +0001758390 00000 n +0002146579 00000 n +0000094718 00000 n +0000094850 00000 n +0001758520 00000 n +0002146439 00000 n +0000094905 00000 n +0000095073 00000 n +0001758585 00000 n +0002146370 00000 n +0000095133 00000 n +0000095265 00000 n +0001758715 00000 n +0002146230 00000 n +0000095320 00000 n +0000095470 00000 n +0001758780 00000 n +0002146161 00000 n +0000095530 00000 n +0000095662 00000 n +0001758910 00000 n +0002146021 00000 n +0000095717 00000 n +0000095867 00000 n +0001758975 00000 n +0002145952 00000 n +0000095927 00000 n +0000096059 00000 n +0001759105 00000 n +0002145812 00000 n +0000096114 00000 n +0000096277 00000 n +0001759170 00000 n +0002145743 00000 n +0000096337 00000 n +0000096469 00000 n +0001759300 00000 n +0002145603 00000 n +0000096524 00000 n +0000096674 00000 n +0001759365 00000 n +0002145534 00000 n +0000096734 00000 n +0000096866 00000 n +0001759495 00000 n +0002145394 00000 n +0000096921 00000 n +0000097084 00000 n +0001759560 00000 n +0002145325 00000 n +0000097144 00000 n +0000097276 00000 n +0001759689 00000 n +0002145185 00000 n +0000097331 00000 n +0000097481 00000 n +0001759753 00000 n +0002145116 00000 n +0000097541 00000 n +0000097673 00000 n +0001759883 00000 n +0002144976 00000 n +0000097728 00000 n +0000097891 00000 n +0001759948 00000 n +0002144907 00000 n +0000097951 00000 n +0000098083 00000 n +0001760078 00000 n +0002144767 00000 n +0000098138 00000 n +0000098288 00000 n +0001760143 00000 n +0002144698 00000 n +0000098348 00000 n +0000098480 00000 n +0001765285 00000 n +0002144558 00000 n +0000098535 00000 n +0000098698 00000 n +0001765349 00000 n +0002144489 00000 n +0000098758 00000 n +0000098890 00000 n +0001765477 00000 n +0002144349 00000 n +0000098945 00000 n +0000099095 00000 n +0001765541 00000 n +0002144280 00000 n +0000099155 00000 n +0000099287 00000 n +0001765669 00000 n +0002144140 00000 n +0000099342 00000 n +0000099477 00000 n +0001765733 00000 n +0002144071 00000 n +0000099537 00000 n +0000099669 00000 n +0001772826 00000 n +0002143946 00000 n +0000099724 00000 n +0000099859 00000 n +0001772890 00000 n +0002143877 00000 n +0000099919 00000 n +0000100051 00000 n +0000100380 00000 n +0000100623 00000 n +0000100105 00000 n +0000100496 00000 n +0000100559 00000 n +0002132896 00000 n +0002133254 00000 n +0000102185 00000 n +0000102337 00000 n +0000102494 00000 n +0000102652 00000 n +0000102809 00000 n +0000102967 00000 n +0000103120 00000 n +0000103278 00000 n +0000103436 00000 n +0000103594 00000 n +0000103752 00000 n +0000103910 00000 n +0000104067 00000 n +0000104225 00000 n +0000104382 00000 n +0000104539 00000 n +0000104698 00000 n +0000104857 00000 n +0000105016 00000 n +0000105175 00000 n +0000105328 00000 n +0000105486 00000 n +0000105644 00000 n +0000105802 00000 n +0000105960 00000 n +0000106113 00000 n +0000106271 00000 n +0000106429 00000 n +0000108291 00000 n +0000106714 00000 n +0000101805 00000 n +0000100697 00000 n +0000106587 00000 n +0002132538 00000 n +0000106650 00000 n +0000108449 00000 n +0000108607 00000 n +0000108765 00000 n +0000108923 00000 n +0000109080 00000 n +0000109237 00000 n +0000109390 00000 n +0000109548 00000 n +0000109705 00000 n +0000109861 00000 n +0000110018 00000 n +0000110176 00000 n +0000110329 00000 n +0000110487 00000 n +0000110644 00000 n +0000110802 00000 n +0000110960 00000 n +0000111113 00000 n +0000111270 00000 n +0000111428 00000 n +0000111586 00000 n +0000111743 00000 n +0000111901 00000 n +0000112059 00000 n +0000112217 00000 n +0000112375 00000 n +0000112528 00000 n +0000112686 00000 n +0000114891 00000 n +0000112907 00000 n +0000107902 00000 n +0000106802 00000 n +0000112844 00000 n +0000115049 00000 n +0000115207 00000 n +0000115365 00000 n +0000115517 00000 n +0000115674 00000 n +0000115832 00000 n +0000115986 00000 n +0000116144 00000 n +0000116303 00000 n +0000116461 00000 n +0000116620 00000 n +0000116779 00000 n +0000116938 00000 n +0000117095 00000 n +0000117249 00000 n +0000117408 00000 n +0000117726 00000 n +0000117885 00000 n +0000118044 00000 n +0000118202 00000 n +0000118361 00000 n +0000118520 00000 n +0000118679 00000 n +0000118838 00000 n +0000118998 00000 n +0000119317 00000 n +0000119475 00000 n +0000121906 00000 n +0000119697 00000 n +0000114493 00000 n +0000112995 00000 n +0000119634 00000 n +0000117567 00000 n +0000119157 00000 n +0000122066 00000 n +0000122225 00000 n +0000122385 00000 n +0000122545 00000 n +0000122705 00000 n +0000123024 00000 n +0000123184 00000 n +0000123503 00000 n +0000123663 00000 n +0000123823 00000 n +0000123983 00000 n +0000124143 00000 n +0000124302 00000 n +0000124461 00000 n +0000124621 00000 n +0000124780 00000 n +0000124940 00000 n +0000125100 00000 n +0000125420 00000 n +0000125580 00000 n +0000125733 00000 n +0000125892 00000 n +0000126051 00000 n +0000126209 00000 n +0000126368 00000 n +0000126526 00000 n +0000126685 00000 n +0000128560 00000 n +0000126905 00000 n +0000121499 00000 n +0000119785 00000 n +0000126842 00000 n +0000122864 00000 n +0000123343 00000 n +0000125260 00000 n +0000128719 00000 n +0000128878 00000 n +0000129038 00000 n +0000129198 00000 n +0000129358 00000 n +0000129517 00000 n +0000129671 00000 n +0000129830 00000 n +0000129993 00000 n +0000130154 00000 n +0000130312 00000 n +0000130475 00000 n +0000130638 00000 n +0000130797 00000 n +0000130959 00000 n +0000131122 00000 n +0000131276 00000 n +0000131430 00000 n +0000131588 00000 n +0000131751 00000 n +0000131914 00000 n +0000132073 00000 n +0000132236 00000 n +0000132399 00000 n +0000132552 00000 n +0000132706 00000 n +0000134475 00000 n +0000132923 00000 n +0000128189 00000 n +0000126993 00000 n +0000132860 00000 n +0000134628 00000 n +0000134787 00000 n +0000134941 00000 n +0000135098 00000 n +0000135252 00000 n +0000135411 00000 n +0000135565 00000 n +0000135724 00000 n +0000135887 00000 n +0000136049 00000 n +0000136208 00000 n +0000136370 00000 n +0000136533 00000 n +0000136692 00000 n +0000136855 00000 n +0000137017 00000 n +0000137176 00000 n +0000137338 00000 n +0000137500 00000 n +0000137659 00000 n +0000137822 00000 n +0000137984 00000 n +0000138147 00000 n +0000138306 00000 n +0000138469 00000 n +0000138632 00000 n +0000138794 00000 n +0000138952 00000 n +0000140812 00000 n +0000139178 00000 n +0000134086 00000 n +0000133011 00000 n +0000139115 00000 n +0002131458 00000 n +0002133379 00000 n +0000140973 00000 n +0000141132 00000 n +0000141295 00000 n +0000141458 00000 n +0000141621 00000 n +0000141780 00000 n +0000141942 00000 n +0000142105 00000 n +0000142267 00000 n +0000142426 00000 n +0000142590 00000 n +0000142754 00000 n +0000142917 00000 n +0000143080 00000 n +0000143244 00000 n +0000143404 00000 n +0000143568 00000 n +0000143732 00000 n +0000143895 00000 n +0000144055 00000 n +0000144219 00000 n +0000144383 00000 n +0000144541 00000 n +0000144705 00000 n +0000144869 00000 n +0000145031 00000 n +0000145191 00000 n +0000145351 00000 n +0000145513 00000 n +0000145676 00000 n +0000147719 00000 n +0000145898 00000 n +0000140405 00000 n +0000139280 00000 n +0000145835 00000 n +0000147879 00000 n +0000148039 00000 n +0000148203 00000 n +0000148367 00000 n +0000148531 00000 n +0000148694 00000 n +0000148853 00000 n +0000149013 00000 n +0000149173 00000 n +0000149337 00000 n +0000149501 00000 n +0000149661 00000 n +0000149824 00000 n +0000149987 00000 n +0000150147 00000 n +0000150311 00000 n +0000150474 00000 n +0000150634 00000 n +0000150798 00000 n +0000150962 00000 n +0000151122 00000 n +0000151286 00000 n +0000151449 00000 n +0000151609 00000 n +0000151773 00000 n +0000151935 00000 n +0000152095 00000 n +0000152259 00000 n +0000152422 00000 n +0000152581 00000 n +0000154572 00000 n +0000152808 00000 n +0000147312 00000 n +0000146000 00000 n +0000152745 00000 n +0000154734 00000 n +0000154894 00000 n +0000155058 00000 n +0000155222 00000 n +0000155382 00000 n +0000155545 00000 n +0000155708 00000 n +0000155868 00000 n +0000156032 00000 n +0000156195 00000 n +0000156355 00000 n +0000156519 00000 n +0000156683 00000 n +0000156846 00000 n +0000157006 00000 n +0000157166 00000 n +0000157330 00000 n +0000157490 00000 n +0000157654 00000 n +0000157818 00000 n +0000157982 00000 n +0000158142 00000 n +0000158305 00000 n +0000158469 00000 n +0000158633 00000 n +0000158797 00000 n +0000158961 00000 n +0000159125 00000 n +0000159287 00000 n +0000159449 00000 n +0000161174 00000 n +0000159672 00000 n +0000154165 00000 n +0000152910 00000 n +0000159609 00000 n +0000161338 00000 n +0000161502 00000 n +0000161666 00000 n +0000161830 00000 n +0000161990 00000 n +0000162153 00000 n +0000162316 00000 n +0000162480 00000 n +0000162644 00000 n +0000162804 00000 n +0000162967 00000 n +0000163131 00000 n +0000163295 00000 n +0000163448 00000 n +0000163607 00000 n +0000163770 00000 n +0000163933 00000 n +0000164092 00000 n +0000164255 00000 n +0000164418 00000 n +0000164572 00000 n +0000164730 00000 n +0000164893 00000 n +0000165050 00000 n +0000165213 00000 n +0000165372 00000 n +0000165535 00000 n +0000165694 00000 n +0000165857 00000 n +0000167366 00000 n +0000166079 00000 n +0000160776 00000 n +0000159774 00000 n +0000166016 00000 n +0000167529 00000 n +0000167692 00000 n +0000167851 00000 n +0000168014 00000 n +0000168173 00000 n +0000168335 00000 n +0000168493 00000 n +0000168656 00000 n +0000168815 00000 n +0000168978 00000 n +0000169138 00000 n +0000169302 00000 n +0000169460 00000 n +0000169624 00000 n +0000169784 00000 n +0000169948 00000 n +0000170107 00000 n +0000170271 00000 n +0000170431 00000 n +0000170595 00000 n +0000170755 00000 n +0000170919 00000 n +0000171078 00000 n +0000171242 00000 n +0000171402 00000 n +0000171566 00000 n +0000171726 00000 n +0000171890 00000 n +0000172050 00000 n +0000172213 00000 n +0000173704 00000 n +0000172436 00000 n +0000166959 00000 n +0000166167 00000 n +0000172373 00000 n +0000173868 00000 n +0000174028 00000 n +0000174192 00000 n +0000174352 00000 n +0000174516 00000 n +0000174676 00000 n +0000174839 00000 n +0000174999 00000 n +0000175163 00000 n +0000175323 00000 n +0000175487 00000 n +0000175647 00000 n +0000175810 00000 n +0000175970 00000 n +0000176134 00000 n +0000176294 00000 n +0000176458 00000 n +0000176618 00000 n +0000176782 00000 n +0000176941 00000 n +0000177105 00000 n +0000177265 00000 n +0000177428 00000 n +0000177588 00000 n +0000177752 00000 n +0000177912 00000 n +0000178076 00000 n +0000178236 00000 n +0000178398 00000 n +0000178561 00000 n +0000180045 00000 n +0000178784 00000 n +0000173297 00000 n +0000172524 00000 n +0000178721 00000 n +0002133504 00000 n +0000180209 00000 n +0000180373 00000 n +0000180533 00000 n +0000180697 00000 n +0000180857 00000 n +0000181020 00000 n +0000181179 00000 n +0000181343 00000 n +0000181503 00000 n +0000181667 00000 n +0000181827 00000 n +0000181991 00000 n +0000182151 00000 n +0000182315 00000 n +0000182475 00000 n +0000182639 00000 n +0000182799 00000 n +0000182963 00000 n +0000183123 00000 n +0000183287 00000 n +0000183447 00000 n +0000183611 00000 n +0000183770 00000 n +0000183934 00000 n +0000184093 00000 n +0000184257 00000 n +0000184417 00000 n +0000184581 00000 n +0000184740 00000 n +0000184903 00000 n +0000186348 00000 n +0000185126 00000 n +0000179638 00000 n +0000178872 00000 n +0000185063 00000 n +0000186512 00000 n +0000186672 00000 n +0000186836 00000 n +0000186996 00000 n +0000187160 00000 n +0000187319 00000 n +0000187482 00000 n +0000187642 00000 n +0000187806 00000 n +0000187966 00000 n +0000188130 00000 n +0000188290 00000 n +0000188453 00000 n +0000188613 00000 n +0000188777 00000 n +0000188936 00000 n +0000189100 00000 n +0000189260 00000 n +0000189424 00000 n +0000189584 00000 n +0000189748 00000 n +0000189908 00000 n +0000190071 00000 n +0000190231 00000 n +0000190395 00000 n +0000190553 00000 n +0000190717 00000 n +0000190877 00000 n +0000191039 00000 n +0000191198 00000 n +0000192636 00000 n +0000191425 00000 n +0000185941 00000 n +0000185214 00000 n +0000191362 00000 n +0000192796 00000 n +0000192960 00000 n +0000193120 00000 n +0000193284 00000 n +0000193444 00000 n +0000193607 00000 n +0000193766 00000 n +0000193930 00000 n +0000194090 00000 n +0000194254 00000 n +0000194414 00000 n +0000194578 00000 n +0000194737 00000 n +0000194901 00000 n +0000195061 00000 n +0000195225 00000 n +0000195384 00000 n +0000195548 00000 n +0000195707 00000 n +0000195871 00000 n +0000196031 00000 n +0000196195 00000 n +0000196354 00000 n +0000196518 00000 n +0000196678 00000 n +0000196842 00000 n +0000197001 00000 n +0000197165 00000 n +0000197325 00000 n +0000197488 00000 n +0000199354 00000 n +0000197711 00000 n +0000192229 00000 n +0000191513 00000 n +0000197648 00000 n +0000199518 00000 n +0000199678 00000 n +0000199842 00000 n +0000200002 00000 n +0000200166 00000 n +0000200325 00000 n +0000200488 00000 n +0000200647 00000 n +0000200811 00000 n +0000200971 00000 n +0000201135 00000 n +0000201295 00000 n +0000201458 00000 n +0000201618 00000 n +0000201782 00000 n +0000201942 00000 n +0000202106 00000 n +0000202266 00000 n +0000202430 00000 n +0000202590 00000 n +0000202754 00000 n +0000202947 00000 n +0000203560 00000 n +0000199010 00000 n +0000197799 00000 n +0000203371 00000 n +0000203435 00000 n +0002132184 00000 n +0000203130 00000 n +0000206096 00000 n +0000206298 00000 n +0000206592 00000 n +0000207103 00000 n +0000205932 00000 n +0000203662 00000 n +0000206788 00000 n +0000206445 00000 n +0000206851 00000 n +0002133073 00000 n +0000206977 00000 n +0000356697 00000 n +0000207857 00000 n +0000207678 00000 n +0000207219 00000 n +0000207794 00000 n +0002133629 00000 n +0000208643 00000 n +0000208814 00000 n +0000208985 00000 n +0000209156 00000 n +0000209389 00000 n +0000208479 00000 n +0000207945 00000 n +0000209326 00000 n +0000212886 00000 n +0000210250 00000 n +0000210071 00000 n +0000209477 00000 n +0000210187 00000 n +0000211074 00000 n +0000210895 00000 n +0000210338 00000 n +0000211011 00000 n +0000212149 00000 n +0000212320 00000 n +0000212493 00000 n +0000212663 00000 n +0000213014 00000 n +0000211985 00000 n +0000211162 00000 n +0000212823 00000 n +0000212950 00000 n +0000214576 00000 n +0000422249 00000 n +0000214765 00000 n +0000214397 00000 n +0000213102 00000 n +0000214513 00000 n +0000214639 00000 n +0000217479 00000 n +0000216985 00000 n +0000214867 00000 n +0000217101 00000 n +0000217225 00000 n +0000217289 00000 n +0000217415 00000 n +0002133754 00000 n +0000220751 00000 n +0000220384 00000 n +0000217581 00000 n +0000220500 00000 n +0000220625 00000 n +0000222813 00000 n +0000222508 00000 n +0000220853 00000 n +0000222624 00000 n +0000222687 00000 n +0000224995 00000 n +0000224565 00000 n +0000222901 00000 n +0000224681 00000 n +0000224744 00000 n +0000224870 00000 n +0000227741 00000 n +0000226933 00000 n +0000225083 00000 n +0000227049 00000 n +0000227112 00000 n +0000227238 00000 n +0000227364 00000 n +0000227490 00000 n +0000227615 00000 n +0000230150 00000 n +0000230872 00000 n +0000230013 00000 n +0000227843 00000 n +0000230306 00000 n +0000230369 00000 n +0000230494 00000 n +0000230682 00000 n +0000230746 00000 n +0000252570 00000 n +0000233156 00000 n +0000235096 00000 n +0000233040 00000 n +0000230974 00000 n +0000234970 00000 n +0000235033 00000 n +0002133879 00000 n +0000234486 00000 n +0000234765 00000 n +0000234813 00000 n +0000234905 00000 n +0000237956 00000 n +0000238151 00000 n +0000238347 00000 n +0000238668 00000 n +0000238863 00000 n +0000239058 00000 n +0000239224 00000 n +0000239764 00000 n +0000237756 00000 n +0000235213 00000 n +0000239386 00000 n +0000239449 00000 n +0000239575 00000 n +0000238507 00000 n +0000239700 00000 n +0000884827 00000 n +0000762420 00000 n +0000258041 00000 n +0000515525 00000 n +0000241429 00000 n +0000245629 00000 n +0000243419 00000 n +0000241313 00000 n +0000239894 00000 n +0000243294 00000 n +0000243357 00000 n +0000242811 00000 n +0000243089 00000 n +0000243137 00000 n +0000243229 00000 n +0000247535 00000 n +0000247731 00000 n +0000248178 00000 n +0000245483 00000 n +0000243564 00000 n +0000247925 00000 n +0000247988 00000 n +0000248052 00000 n +0000247052 00000 n +0000247330 00000 n +0000247378 00000 n +0000247470 00000 n +0000879846 00000 n +0000251074 00000 n +0000251270 00000 n +0000251465 00000 n +0000251661 00000 n +0000251857 00000 n +0000252052 00000 n +0000252248 00000 n +0000252634 00000 n +0000250883 00000 n +0000248309 00000 n +0000252444 00000 n +0000891354 00000 n +0000254703 00000 n +0000254871 00000 n +0000255066 00000 n +0000255738 00000 n +0000254548 00000 n +0000252736 00000 n +0000255230 00000 n +0000255293 00000 n +0000255420 00000 n +0002132359 00000 n +0000255547 00000 n +0000255674 00000 n +0000257622 00000 n +0000259832 00000 n +0000260000 00000 n +0000258231 00000 n +0000257485 00000 n +0000255854 00000 n +0000257788 00000 n +0000257914 00000 n +0000258105 00000 n +0002134004 00000 n +0000261492 00000 n +0000261687 00000 n +0000260294 00000 n +0000259686 00000 n +0000258333 00000 n +0000260167 00000 n +0000260230 00000 n +0000261982 00000 n +0000264066 00000 n +0000262109 00000 n +0000261346 00000 n +0000260410 00000 n +0000261856 00000 n +0000875584 00000 n +0000264447 00000 n +0000263887 00000 n +0000262211 00000 n +0000264003 00000 n +0000264256 00000 n +0000264320 00000 n +0000267166 00000 n +0000267319 00000 n +0000267789 00000 n +0000267020 00000 n +0000264549 00000 n +0000267474 00000 n +0000267537 00000 n +0000267663 00000 n +0001648297 00000 n +0000269834 00000 n +0000270051 00000 n +0000269697 00000 n +0000267905 00000 n +0000269988 00000 n +0000271923 00000 n +0000271617 00000 n +0000270167 00000 n +0000271733 00000 n +0002131750 00000 n +0000271796 00000 n +0002134129 00000 n +0000274065 00000 n +0000274263 00000 n +0000274481 00000 n +0000273919 00000 n +0000272039 00000 n +0000274418 00000 n +0001101458 00000 n +0000277042 00000 n +0000280022 00000 n +0000277640 00000 n +0000276905 00000 n +0000274597 00000 n +0000277196 00000 n +0000277259 00000 n +0000277449 00000 n +0000277513 00000 n +0000280176 00000 n +0000280597 00000 n +0000279876 00000 n +0000277756 00000 n +0000280344 00000 n +0000280407 00000 n +0000280534 00000 n +0000292323 00000 n +0000282070 00000 n +0000281828 00000 n +0000280713 00000 n +0000281944 00000 n +0000283884 00000 n +0000283705 00000 n +0000282172 00000 n +0000283821 00000 n +0000286504 00000 n +0000286683 00000 n +0000286832 00000 n +0000287125 00000 n +0000286349 00000 n +0000283986 00000 n +0000286998 00000 n +0000287061 00000 n +0002134254 00000 n +0001023289 00000 n +0001628534 00000 n +0001151517 00000 n +0000289565 00000 n +0000289726 00000 n +0000289892 00000 n +0000290267 00000 n +0000289410 00000 n +0000287269 00000 n +0000290077 00000 n +0000290140 00000 n +0000396089 00000 n +0001011856 00000 n +0000292387 00000 n +0000292081 00000 n +0000290383 00000 n +0000292197 00000 n +0000295035 00000 n +0000295188 00000 n +0000295361 00000 n +0000295742 00000 n +0000294880 00000 n +0000292489 00000 n +0000295556 00000 n +0000295619 00000 n +0000298471 00000 n +0000298036 00000 n +0000295844 00000 n +0000298152 00000 n +0000298215 00000 n +0000298279 00000 n +0000298343 00000 n +0000298407 00000 n +0000300993 00000 n +0000300687 00000 n +0000298573 00000 n +0000300803 00000 n +0000300866 00000 n +0000302453 00000 n +0000302150 00000 n +0000301095 00000 n +0000302266 00000 n +0000302329 00000 n +0002134379 00000 n +0000305651 00000 n +0000305472 00000 n +0000302555 00000 n +0000305588 00000 n +0000308869 00000 n +0000308690 00000 n +0000305767 00000 n +0000308806 00000 n +0000311586 00000 n +0000311812 00000 n +0000311449 00000 n +0000308957 00000 n +0000311749 00000 n +0000313780 00000 n +0000313537 00000 n +0000311914 00000 n +0000313653 00000 n +0000313716 00000 n +0000315801 00000 n +0000315559 00000 n +0000313882 00000 n +0000315675 00000 n +0000317867 00000 n +0000317624 00000 n +0000315903 00000 n +0000317740 00000 n +0000317803 00000 n +0002134504 00000 n +0000320169 00000 n +0000320582 00000 n +0000320032 00000 n +0000317969 00000 n +0000320329 00000 n +0000320455 00000 n +0000388654 00000 n +0000322526 00000 n +0000322879 00000 n +0000322389 00000 n +0000320684 00000 n +0000322689 00000 n +0000322752 00000 n +0000325086 00000 n +0000325773 00000 n +0000324949 00000 n +0000322981 00000 n +0000325265 00000 n +0000325328 00000 n +0000325518 00000 n +0000325582 00000 n +0000325709 00000 n +0000328692 00000 n +0000328887 00000 n +0000329082 00000 n +0000329278 00000 n +0000329474 00000 n +0000329923 00000 n +0000328519 00000 n +0000325875 00000 n +0000329670 00000 n +0000329796 00000 n +0000332519 00000 n +0000332149 00000 n +0000330011 00000 n +0000332265 00000 n +0000332328 00000 n +0000332455 00000 n +0000335915 00000 n +0000336111 00000 n +0000336305 00000 n +0000334559 00000 n +0000334190 00000 n +0000332635 00000 n +0000334306 00000 n +0000334495 00000 n +0002134629 00000 n +0000336690 00000 n +0000335760 00000 n +0000334661 00000 n +0000336500 00000 n +0000336563 00000 n +0000884955 00000 n +0000821938 00000 n +0000875331 00000 n +0000339355 00000 n +0000339113 00000 n +0000336792 00000 n +0000339229 00000 n +0002132041 00000 n +0000339292 00000 n +0000341871 00000 n +0000341629 00000 n +0000339457 00000 n +0000341745 00000 n +0000344201 00000 n +0000344794 00000 n +0000344064 00000 n +0000341959 00000 n +0000344350 00000 n +0000344476 00000 n +0000344540 00000 n +0000344667 00000 n +0000346580 00000 n +0000347045 00000 n +0000346443 00000 n +0000344924 00000 n +0000346729 00000 n +0000346792 00000 n +0000346918 00000 n +0000349198 00000 n +0000349397 00000 n +0000349597 00000 n +0000349795 00000 n +0000349945 00000 n +0000350100 00000 n +0000350442 00000 n +0000349016 00000 n +0000347161 00000 n +0000350253 00000 n +0000350316 00000 n +0002134754 00000 n +0001069480 00000 n +0001061176 00000 n +0001182651 00000 n +0001772763 00000 n +0000352542 00000 n +0000352109 00000 n +0000350572 00000 n +0000352225 00000 n +0000352288 00000 n +0000352415 00000 n +0000354501 00000 n +0000354661 00000 n +0000354817 00000 n +0000354976 00000 n +0000355135 00000 n +0000355291 00000 n +0000355451 00000 n +0000355609 00000 n +0000355768 00000 n +0000355927 00000 n +0000356252 00000 n +0000356412 00000 n +0000359563 00000 n +0000359724 00000 n +0000359885 00000 n +0000357655 00000 n +0000354256 00000 n +0000352644 00000 n +0000356571 00000 n +0000356761 00000 n +0000356888 00000 n +0000356951 00000 n +0000357015 00000 n +0000357079 00000 n +0000357143 00000 n +0000357207 00000 n +0000357271 00000 n +0000357335 00000 n +0000357399 00000 n +0000357463 00000 n +0000356090 00000 n +0000357527 00000 n +0000357591 00000 n +0000364577 00000 n +0000367516 00000 n +0000367643 00000 n +0000371169 00000 n +0000371294 00000 n +0000374648 00000 n +0000378626 00000 n +0000382225 00000 n +0000385117 00000 n +0000385244 00000 n +0000390910 00000 n +0000360044 00000 n +0000360203 00000 n +0000360365 00000 n +0000360678 00000 n +0000360842 00000 n +0000361165 00000 n +0000361326 00000 n +0000361487 00000 n +0000361648 00000 n +0000361807 00000 n +0000361966 00000 n +0000362124 00000 n +0000362281 00000 n +0000362446 00000 n +0000362608 00000 n +0000362769 00000 n +0000363081 00000 n +0000364703 00000 n +0000359228 00000 n +0000357757 00000 n +0000363240 00000 n +0000363303 00000 n +0000363367 00000 n +0000363431 00000 n +0000363495 00000 n +0000363557 00000 n +0000363621 00000 n +0000360521 00000 n +0000363684 00000 n +0000363748 00000 n +0000361003 00000 n +0000363812 00000 n +0000363876 00000 n +0000363940 00000 n +0000364004 00000 n +0000364067 00000 n +0000364131 00000 n +0000364194 00000 n +0000364258 00000 n +0000364322 00000 n +0000364386 00000 n +0000364450 00000 n +0000362925 00000 n +0000364514 00000 n +0000401461 00000 n +0000407790 00000 n +0000412056 00000 n +0000412183 00000 n +0000415420 00000 n +0000415546 00000 n +0000418494 00000 n +0000422122 00000 n +0000425611 00000 n +0000425738 00000 n +0000429018 00000 n +0000429145 00000 n +0000432117 00000 n +0000432244 00000 n +0000432371 00000 n +0000437244 00000 n +0000440187 00000 n +0000440314 00000 n +0000366989 00000 n +0000367146 00000 n +0000367297 00000 n +0000367770 00000 n +0000366834 00000 n +0000364791 00000 n +0000367453 00000 n +0001634370 00000 n +0000370303 00000 n +0000370471 00000 n +0000370628 00000 n +0000370783 00000 n +0000370949 00000 n +0000374014 00000 n +0000371358 00000 n +0000370130 00000 n +0000367914 00000 n +0000371106 00000 n +0000374172 00000 n +0000374365 00000 n +0000374775 00000 n +0000373859 00000 n +0000371474 00000 n +0000374522 00000 n +0002134879 00000 n +0001069736 00000 n +0001161700 00000 n +0000377733 00000 n +0000377890 00000 n +0000378227 00000 n +0000378395 00000 n +0000378753 00000 n +0000377560 00000 n +0000374891 00000 n +0000378563 00000 n +0000378058 00000 n +0000381405 00000 n +0000381562 00000 n +0000381762 00000 n +0000381962 00000 n +0000382351 00000 n +0000381241 00000 n +0000378869 00000 n +0000382162 00000 n +0001064187 00000 n +0000384591 00000 n +0000384748 00000 n +0000384897 00000 n +0000385371 00000 n +0000384436 00000 n +0000382467 00000 n +0000385054 00000 n +0000388434 00000 n +0000388781 00000 n +0000388297 00000 n +0000385501 00000 n +0000388591 00000 n +0000390690 00000 n +0000391037 00000 n +0000390553 00000 n +0000388897 00000 n +0000390847 00000 n +0000393046 00000 n +0000392867 00000 n +0000391139 00000 n +0000392983 00000 n +0002135004 00000 n +0000395651 00000 n +0000395870 00000 n +0000396153 00000 n +0000395505 00000 n +0000393148 00000 n +0000396026 00000 n +0000398831 00000 n +0000399295 00000 n +0000398685 00000 n +0000396269 00000 n +0000399169 00000 n +0000399000 00000 n +0000499038 00000 n +0000401241 00000 n +0000401588 00000 n +0000401104 00000 n +0000399411 00000 n +0000401398 00000 n +0000403424 00000 n +0000403245 00000 n +0000401690 00000 n +0000403361 00000 n +0000406527 00000 n +0000406684 00000 n +0000406852 00000 n +0000407011 00000 n +0000407177 00000 n +0000407372 00000 n +0000407533 00000 n +0000410613 00000 n +0000407917 00000 n +0000406336 00000 n +0000403526 00000 n +0000407727 00000 n +0000410770 00000 n +0000411095 00000 n +0000411290 00000 n +0000411486 00000 n +0000411680 00000 n +0000411837 00000 n +0000414879 00000 n +0000412310 00000 n +0000410413 00000 n +0000408047 00000 n +0000411993 00000 n +0000410932 00000 n +0002135129 00000 n +0000515461 00000 n +0000937279 00000 n +0000946557 00000 n +0000415044 00000 n +0000415200 00000 n +0000415673 00000 n +0000414724 00000 n +0000412412 00000 n +0000415357 00000 n +0000417912 00000 n +0000418076 00000 n +0000418274 00000 n +0000418558 00000 n +0000417757 00000 n +0000415775 00000 n +0000418431 00000 n +0001080339 00000 n +0001106732 00000 n +0000421143 00000 n +0000421300 00000 n +0000421496 00000 n +0000421691 00000 n +0000421840 00000 n +0000422313 00000 n +0000420970 00000 n +0000418674 00000 n +0000421996 00000 n +0000817179 00000 n +0000424982 00000 n +0000425172 00000 n +0000425328 00000 n +0000425864 00000 n +0000424827 00000 n +0000422429 00000 n +0000425485 00000 n +0000428476 00000 n +0000428633 00000 n +0000428790 00000 n +0000431585 00000 n +0000429272 00000 n +0000428321 00000 n +0000425966 00000 n +0000428955 00000 n +0000431742 00000 n +0000431898 00000 n +0000432435 00000 n +0000431430 00000 n +0000429388 00000 n +0000432054 00000 n +0002135254 00000 n +0000434885 00000 n +0000434643 00000 n +0000432551 00000 n +0000434759 00000 n +0000437024 00000 n +0000437371 00000 n +0000436887 00000 n +0000434987 00000 n +0000437181 00000 n +0000439654 00000 n +0000439811 00000 n +0000439967 00000 n +0000440441 00000 n +0000439499 00000 n +0000437473 00000 n +0000440124 00000 n +0000444818 00000 n +0000445014 00000 n +0000445210 00000 n +0000445406 00000 n +0000445602 00000 n +0000445797 00000 n +0000445993 00000 n +0000446188 00000 n +0000446388 00000 n +0000446585 00000 n +0000446781 00000 n +0000446977 00000 n +0000447173 00000 n +0000447369 00000 n +0000447569 00000 n +0000447766 00000 n +0000447960 00000 n +0000448154 00000 n +0000448349 00000 n +0000448544 00000 n +0000448744 00000 n +0000448941 00000 n +0000449136 00000 n +0000449524 00000 n +0000449719 00000 n +0000449913 00000 n +0000450108 00000 n +0000450308 00000 n +0000450505 00000 n +0000450703 00000 n +0000450898 00000 n +0000451091 00000 n +0000451284 00000 n +0000451476 00000 n +0000451668 00000 n +0000451860 00000 n +0000452055 00000 n +0000452250 00000 n +0000452445 00000 n +0000452640 00000 n +0000452835 00000 n +0000453030 00000 n +0000453225 00000 n +0000453421 00000 n +0000453617 00000 n +0000453813 00000 n +0000454010 00000 n +0000454207 00000 n +0000454402 00000 n +0000454599 00000 n +0000454795 00000 n +0000454992 00000 n +0000455189 00000 n +0000455386 00000 n +0000455583 00000 n +0000455780 00000 n +0000455977 00000 n +0000456174 00000 n +0000456371 00000 n +0000456567 00000 n +0000456764 00000 n +0000456961 00000 n +0000457158 00000 n +0000457352 00000 n +0000457546 00000 n +0000457743 00000 n +0000457940 00000 n +0000458136 00000 n +0000458332 00000 n +0000458529 00000 n +0000441146 00000 n +0000440967 00000 n +0000440557 00000 n +0000441083 00000 n +0000458788 00000 n +0000444051 00000 n +0000441234 00000 n +0000458725 00000 n +0000449329 00000 n +0000885081 00000 n +0000891099 00000 n +0000890971 00000 n +0000891226 00000 n +0000896246 00000 n +0000896374 00000 n +0000902329 00000 n +0001192793 00000 n +0000870656 00000 n +0000807816 00000 n +0000802514 00000 n +0000798109 00000 n +0000797981 00000 n +0000821045 00000 n +0000847391 00000 n +0000821172 00000 n +0000821300 00000 n +0000822066 00000 n +0000821683 00000 n +0000821811 00000 n +0000847901 00000 n +0000848028 00000 n +0000847646 00000 n +0000847773 00000 n +0000816923 00000 n +0000812407 00000 n +0000812535 00000 n +0000826306 00000 n +0000836862 00000 n +0000812791 00000 n +0000816413 00000 n +0000605570 00000 n +0000802386 00000 n +0000798493 00000 n +0000817051 00000 n +0000812151 00000 n +0000826178 00000 n +0000812279 00000 n +0000821428 00000 n +0000821556 00000 n +0000816668 00000 n +0000816796 00000 n +0000847518 00000 n +0000836990 00000 n +0000843349 00000 n +0000816541 00000 n +0000822194 00000 n +0000826050 00000 n +0000461323 00000 n +0000461861 00000 n +0000461186 00000 n +0000458904 00000 n +0000461480 00000 n +0000461606 00000 n +0000461670 00000 n +0000461797 00000 n +0002135379 00000 n +0000463301 00000 n +0000463485 00000 n +0000463663 00000 n +0000463831 00000 n +0000464004 00000 n +0000464194 00000 n +0000464368 00000 n +0000464561 00000 n +0000464733 00000 n +0000464890 00000 n +0000465069 00000 n +0000465238 00000 n +0000465428 00000 n +0000468486 00000 n +0000465918 00000 n +0000463056 00000 n +0000461991 00000 n +0000465602 00000 n +0000465665 00000 n +0000465791 00000 n +0000468901 00000 n +0000472542 00000 n +0000472668 00000 n +0000475047 00000 n +0000532162 00000 n +0000475174 00000 n +0000477811 00000 n +0000468666 00000 n +0000469028 00000 n +0000468340 00000 n +0000466020 00000 n +0000468838 00000 n +0000477937 00000 n +0000471339 00000 n +0000471501 00000 n +0000471735 00000 n +0000471912 00000 n +0000472073 00000 n +0000472250 00000 n +0000474408 00000 n +0000474586 00000 n +0000474759 00000 n +0000472732 00000 n +0000471157 00000 n +0000469144 00000 n +0000472479 00000 n +0000475238 00000 n +0000474253 00000 n +0000472848 00000 n +0000474921 00000 n +0000476823 00000 n +0000476997 00000 n +0000477169 00000 n +0000477343 00000 n +0000477514 00000 n +0000478064 00000 n +0000476650 00000 n +0000475340 00000 n +0000477685 00000 n +0000481101 00000 n +0000480668 00000 n +0000478166 00000 n +0000480784 00000 n +0000480847 00000 n +0000480974 00000 n +0002135504 00000 n +0000482858 00000 n +0000483309 00000 n +0000483577 00000 n +0000482703 00000 n +0000481217 00000 n +0000483514 00000 n +0000483084 00000 n +0000485220 00000 n +0000485670 00000 n +0000486137 00000 n +0000486606 00000 n +0000486836 00000 n +0000485029 00000 n +0000483707 00000 n +0000486773 00000 n +0000485445 00000 n +0000485903 00000 n +0000486371 00000 n +0000488375 00000 n +0000488544 00000 n +0000488729 00000 n +0000488923 00000 n +0000489112 00000 n +0000491127 00000 n +0000489341 00000 n +0000488202 00000 n +0000486966 00000 n +0000489278 00000 n +0000491496 00000 n +0000490990 00000 n +0000489471 00000 n +0000491306 00000 n +0000491369 00000 n +0000492975 00000 n +0000492796 00000 n +0000491626 00000 n +0000492912 00000 n +0000494446 00000 n +0000494267 00000 n +0000493091 00000 n +0000494383 00000 n +0002135629 00000 n +0000495999 00000 n +0000495820 00000 n +0000494562 00000 n +0000495936 00000 n +0000497306 00000 n +0000497127 00000 n +0000496115 00000 n +0000497243 00000 n +0000499102 00000 n +0000498732 00000 n +0000497422 00000 n +0000498848 00000 n +0000498974 00000 n +0000501748 00000 n +0000502278 00000 n +0000501611 00000 n +0000499218 00000 n +0000501897 00000 n +0000502023 00000 n +0000502150 00000 n +0000502214 00000 n +0000505318 00000 n +0000505139 00000 n +0000502408 00000 n +0000505255 00000 n +0000508259 00000 n +0000508080 00000 n +0000505406 00000 n +0000508196 00000 n +0002135754 00000 n +0000510829 00000 n +0000510650 00000 n +0000508347 00000 n +0000510766 00000 n +0000513095 00000 n +0000512916 00000 n +0000510931 00000 n +0000513032 00000 n +0000515111 00000 n +0000517682 00000 n +0000517877 00000 n +0000515588 00000 n +0000514974 00000 n +0000513211 00000 n +0000515272 00000 n +0000515335 00000 n +0000520334 00000 n +0000518390 00000 n +0000517536 00000 n +0000515704 00000 n +0000518073 00000 n +0000518136 00000 n +0000518263 00000 n +0000522777 00000 n +0000520630 00000 n +0000520197 00000 n +0000518506 00000 n +0000520503 00000 n +0000520566 00000 n +0000523322 00000 n +0000522640 00000 n +0000520746 00000 n +0000522942 00000 n +0000523068 00000 n +0000523195 00000 n +0002135879 00000 n +0000525355 00000 n +0000528837 00000 n +0000525701 00000 n +0000525218 00000 n +0000523438 00000 n +0000525511 00000 n +0000525574 00000 n +0000528992 00000 n +0000529158 00000 n +0000529327 00000 n +0000529586 00000 n +0000528673 00000 n +0000525817 00000 n +0000529523 00000 n +0000531865 00000 n +0000532226 00000 n +0000531728 00000 n +0000529688 00000 n +0000532036 00000 n +0000534168 00000 n +0000533989 00000 n +0000532328 00000 n +0000534105 00000 n +0000536709 00000 n +0000535895 00000 n +0000534270 00000 n +0000536011 00000 n +0000536137 00000 n +0000536201 00000 n +0000536328 00000 n +0000536455 00000 n +0000536582 00000 n +0000539625 00000 n +0000538552 00000 n +0000536811 00000 n +0000538668 00000 n +0000538731 00000 n +0000538858 00000 n +0000538922 00000 n +0000538985 00000 n +0000539049 00000 n +0000539113 00000 n +0000539177 00000 n +0000539241 00000 n +0000539305 00000 n +0000539369 00000 n +0000539433 00000 n +0000539497 00000 n +0000539561 00000 n +0002136004 00000 n +0000543641 00000 n +0000542295 00000 n +0000541223 00000 n +0000539727 00000 n +0000541339 00000 n +0000541402 00000 n +0000541529 00000 n +0000541592 00000 n +0000541656 00000 n +0000541720 00000 n +0000541784 00000 n +0000541848 00000 n +0000541912 00000 n +0000541976 00000 n +0000542040 00000 n +0000542104 00000 n +0000542168 00000 n +0000542231 00000 n +0000545800 00000 n +0000545971 00000 n +0000546400 00000 n +0000543495 00000 n +0000542397 00000 n +0000546146 00000 n +0000546209 00000 n +0000546336 00000 n +0000545245 00000 n +0000545522 00000 n +0000545570 00000 n +0000545645 00000 n +0000545735 00000 n +0000548963 00000 n +0000549136 00000 n +0000549305 00000 n +0000549469 00000 n +0000549639 00000 n +0000549796 00000 n +0000549977 00000 n +0000550305 00000 n +0000550465 00000 n +0000550665 00000 n +0000550865 00000 n +0000551065 00000 n +0000552997 00000 n +0000551774 00000 n +0000548718 00000 n +0000546531 00000 n +0000551265 00000 n +0000550141 00000 n +0000551391 00000 n +0000551455 00000 n +0000551582 00000 n +0000551646 00000 n +0000551710 00000 n +0001272790 00000 n +0000967025 00000 n +0001069608 00000 n +0001064315 00000 n +0000553199 00000 n +0000553401 00000 n +0000553603 00000 n +0000553805 00000 n +0000554006 00000 n +0000554208 00000 n +0000554408 00000 n +0000554609 00000 n +0000554811 00000 n +0000554970 00000 n +0000555129 00000 n +0000555288 00000 n +0000555447 00000 n +0000555606 00000 n +0000555765 00000 n +0000558645 00000 n +0000558803 00000 n +0000558962 00000 n +0000559121 00000 n +0000556688 00000 n +0000552725 00000 n +0000551876 00000 n +0000555924 00000 n +0000555987 00000 n +0000556051 00000 n +0000556115 00000 n +0000556179 00000 n +0000556243 00000 n +0000556307 00000 n +0000556371 00000 n +0000556435 00000 n +0000556499 00000 n +0001253634 00000 n +0001247248 00000 n +0001247631 00000 n +0001247503 00000 n +0001250338 00000 n +0001247376 00000 n +0001250210 00000 n +0001250466 00000 n +0001247120 00000 n +0000559281 00000 n +0000559441 00000 n +0000559600 00000 n +0000559760 00000 n +0000559920 00000 n +0000560080 00000 n +0000560240 00000 n +0000560400 00000 n +0000560556 00000 n +0000560716 00000 n +0000560876 00000 n +0000561035 00000 n +0000561195 00000 n +0000561355 00000 n +0000561515 00000 n +0000561675 00000 n +0000561835 00000 n +0000561994 00000 n +0000562154 00000 n +0000562314 00000 n +0000562473 00000 n +0000564065 00000 n +0000562696 00000 n +0000558292 00000 n +0000556790 00000 n +0000562633 00000 n +0000564224 00000 n +0000564384 00000 n +0000564543 00000 n +0000564703 00000 n +0000564863 00000 n +0000565023 00000 n +0000565183 00000 n +0000565339 00000 n +0000565498 00000 n +0000565655 00000 n +0000565814 00000 n +0000565967 00000 n +0000566126 00000 n +0000566277 00000 n +0000566436 00000 n +0000566587 00000 n +0000566746 00000 n +0000566898 00000 n +0000567057 00000 n +0000567208 00000 n +0000567367 00000 n +0000567518 00000 n +0000567676 00000 n +0000567828 00000 n +0000569632 00000 n +0000569784 00000 n +0000568302 00000 n +0000563712 00000 n +0000562784 00000 n +0000567987 00000 n +0002136129 00000 n +0001562851 00000 n +0001565623 00000 n +0001566263 00000 n +0001566517 00000 n +0001571747 00000 n +0001571939 00000 n +0001572259 00000 n +0001585355 00000 n +0001593863 00000 n +0000569942 00000 n +0000570101 00000 n +0000570260 00000 n +0000570411 00000 n +0000570570 00000 n +0000570725 00000 n +0000570885 00000 n +0000571035 00000 n +0000571195 00000 n +0000571346 00000 n +0000571506 00000 n +0000571658 00000 n +0000571818 00000 n +0000571969 00000 n +0000572129 00000 n +0000572284 00000 n +0000572444 00000 n +0000572599 00000 n +0000572759 00000 n +0000572908 00000 n +0000573068 00000 n +0000573215 00000 n +0000573371 00000 n +0000573522 00000 n +0000573682 00000 n +0000573836 00000 n +0000573996 00000 n +0000574148 00000 n +0000574307 00000 n +0000574463 00000 n +0000574623 00000 n +0000574775 00000 n +0000574935 00000 n +0000575091 00000 n +0000575251 00000 n +0000575404 00000 n +0000575564 00000 n +0000575720 00000 n +0000575880 00000 n +0000576031 00000 n +0000576190 00000 n +0000576344 00000 n +0000576504 00000 n +0000576658 00000 n +0000576818 00000 n +0000576975 00000 n +0000577134 00000 n +0000577287 00000 n +0000578802 00000 n +0000578955 00000 n +0000577510 00000 n +0000569054 00000 n +0000568404 00000 n +0000577447 00000 n +0001597587 00000 n +0001598034 00000 n +0001598418 00000 n +0001600181 00000 n +0001600437 00000 n +0001600629 00000 n +0001600821 00000 n +0001601013 00000 n +0001601461 00000 n +0001608428 00000 n +0001633858 00000 n +0001640048 00000 n +0001641930 00000 n +0001642122 00000 n +0001642314 00000 n +0001642506 00000 n +0001642698 00000 n +0001642889 00000 n +0001643081 00000 n +0001643273 00000 n +0001643465 00000 n +0001643656 00000 n +0001643848 00000 n +0000579114 00000 n +0000579268 00000 n +0000579428 00000 n +0000579579 00000 n +0000579738 00000 n +0000579892 00000 n +0000580052 00000 n +0000580205 00000 n +0000580365 00000 n +0000580517 00000 n +0000580677 00000 n +0000580830 00000 n +0000580990 00000 n +0000581142 00000 n +0000581302 00000 n +0000581455 00000 n +0000581615 00000 n +0000581772 00000 n +0000581932 00000 n +0000582092 00000 n +0000582252 00000 n +0000582405 00000 n +0000582561 00000 n +0000582714 00000 n +0000582874 00000 n +0000583030 00000 n +0000583190 00000 n +0000583342 00000 n +0000583501 00000 n +0000583657 00000 n +0000583817 00000 n +0000583973 00000 n +0000584133 00000 n +0000584292 00000 n +0000584452 00000 n +0000584605 00000 n +0000584765 00000 n +0000584921 00000 n +0000585081 00000 n +0000585233 00000 n +0000585392 00000 n +0000585548 00000 n +0000585708 00000 n +0000585862 00000 n +0000586022 00000 n +0000586179 00000 n +0000586338 00000 n +0000586491 00000 n +0000587972 00000 n +0000588125 00000 n +0000586714 00000 n +0000578224 00000 n +0000577584 00000 n +0000586651 00000 n +0001644039 00000 n +0001675005 00000 n +0001678433 00000 n +0001678689 00000 n +0001679135 00000 n +0001686507 00000 n +0001712945 00000 n +0001723494 00000 n +0001736641 00000 n +0001738590 00000 n +0001738782 00000 n +0001738974 00000 n +0001739166 00000 n +0001739358 00000 n +0001739550 00000 n +0001739741 00000 n +0001739933 00000 n +0001740125 00000 n +0001740317 00000 n +0001740509 00000 n +0001740700 00000 n +0001740889 00000 n +0001741077 00000 n +0001741269 00000 n +0000588284 00000 n +0000588438 00000 n +0000588598 00000 n +0000588754 00000 n +0000588913 00000 n +0000589065 00000 n +0000589225 00000 n +0000589381 00000 n +0000589541 00000 n +0000589694 00000 n +0000589854 00000 n +0000590010 00000 n +0000590170 00000 n +0000590323 00000 n +0000590483 00000 n +0000590641 00000 n +0000590801 00000 n +0000590962 00000 n +0000591122 00000 n +0000591276 00000 n +0000591436 00000 n +0000591589 00000 n +0000591745 00000 n +0000591899 00000 n +0000592059 00000 n +0000592216 00000 n +0000592376 00000 n +0000592529 00000 n +0000592688 00000 n +0000592843 00000 n +0000593003 00000 n +0000593157 00000 n +0000593317 00000 n +0000593474 00000 n +0000593634 00000 n +0000593788 00000 n +0000593948 00000 n +0000594105 00000 n +0000594265 00000 n +0000594418 00000 n +0000594577 00000 n +0000594734 00000 n +0000594894 00000 n +0000595047 00000 n +0000595207 00000 n +0000595360 00000 n +0000595519 00000 n +0000595675 00000 n +0000597662 00000 n +0000597815 00000 n +0000595898 00000 n +0000587394 00000 n +0000586788 00000 n +0000595835 00000 n +0001749279 00000 n +0001752705 00000 n +0001754804 00000 n +0001754996 00000 n +0001755188 00000 n +0001755380 00000 n +0001755572 00000 n +0001755764 00000 n +0001755956 00000 n +0001756148 00000 n +0001756340 00000 n +0001756531 00000 n +0001756723 00000 n +0001756914 00000 n +0001757103 00000 n +0001757291 00000 n +0001757483 00000 n +0001757676 00000 n +0001757871 00000 n +0001758066 00000 n +0001758260 00000 n +0001758455 00000 n +0001758650 00000 n +0001758845 00000 n +0001759040 00000 n +0000597974 00000 n +0000598129 00000 n +0000598289 00000 n +0000598441 00000 n +0000598600 00000 n +0000598756 00000 n +0000598916 00000 n +0000599069 00000 n +0000599229 00000 n +0000599383 00000 n +0000599543 00000 n +0000599695 00000 n +0000599855 00000 n +0000600011 00000 n +0000600171 00000 n +0000600321 00000 n +0000600481 00000 n +0000600672 00000 n +0000600862 00000 n +0000601053 00000 n +0000603676 00000 n +0000601812 00000 n +0000597336 00000 n +0000595972 00000 n +0000601244 00000 n +0000601370 00000 n +0002131604 00000 n +0000601559 00000 n +0000601686 00000 n +0000601749 00000 n +0002132715 00000 n +0001759235 00000 n +0001759430 00000 n +0001759625 00000 n +0001759818 00000 n +0001760013 00000 n +0001765222 00000 n +0001765413 00000 n +0001765605 00000 n +0000603867 00000 n +0000604019 00000 n +0000604214 00000 n +0000604410 00000 n +0000604604 00000 n +0000604799 00000 n +0000604995 00000 n +0000605762 00000 n +0000603476 00000 n +0000601970 00000 n +0000605191 00000 n +0000605254 00000 n +0000605443 00000 n +0000605634 00000 n +0000605698 00000 n +0000866292 00000 n +0000607583 00000 n +0000607773 00000 n +0000607960 00000 n +0000608149 00000 n +0000608338 00000 n +0000608527 00000 n +0000608716 00000 n +0000608905 00000 n +0000609094 00000 n +0000609283 00000 n +0000609472 00000 n +0000609661 00000 n +0000609850 00000 n +0000610039 00000 n +0000610227 00000 n +0000610416 00000 n +0000610605 00000 n +0000610793 00000 n +0000610982 00000 n +0000611171 00000 n +0000611932 00000 n +0000607275 00000 n +0000605906 00000 n +0000611360 00000 n +0000611549 00000 n +0000611613 00000 n +0000611740 00000 n +0000611804 00000 n +0000611868 00000 n +0002136254 00000 n +0000613970 00000 n +0000613588 00000 n +0000613715 00000 n +0000613842 00000 n +0000614098 00000 n +0000614225 00000 n +0000614353 00000 n +0000614481 00000 n +0000614609 00000 n +0000614737 00000 n +0000616990 00000 n +0000617118 00000 n +0000617246 00000 n +0000617374 00000 n +0000614800 00000 n +0000613345 00000 n +0000612090 00000 n +0000613461 00000 n +0000613524 00000 n +0000613652 00000 n +0000613779 00000 n +0000613906 00000 n +0000614034 00000 n +0000614161 00000 n +0000614289 00000 n +0000614417 00000 n +0000614545 00000 n +0000614673 00000 n +0000616712 00000 n +0000619749 00000 n +0000617692 00000 n +0000616575 00000 n +0000614944 00000 n +0000616863 00000 n +0000616926 00000 n +0000617054 00000 n +0000617182 00000 n +0000617310 00000 n +0000617438 00000 n +0000617502 00000 n +0000619944 00000 n +0000620137 00000 n +0000620290 00000 n +0000620612 00000 n +0000620765 00000 n +0000620959 00000 n +0000621153 00000 n +0000621347 00000 n +0000623741 00000 n +0000623937 00000 n +0000622240 00000 n +0000619531 00000 n +0000617836 00000 n +0000621543 00000 n +0000621606 00000 n +0000621732 00000 n +0000621796 00000 n +0000621860 00000 n +0000621924 00000 n +0000621988 00000 n +0000620451 00000 n +0000622176 00000 n +0000753755 00000 n +0000668836 00000 n +0000624135 00000 n +0000624290 00000 n +0000624488 00000 n +0000624685 00000 n +0000624882 00000 n +0000625080 00000 n +0000625277 00000 n +0000625475 00000 n +0000625673 00000 n +0000625871 00000 n +0000626069 00000 n +0000626266 00000 n +0000626464 00000 n +0000626661 00000 n +0000626859 00000 n +0000627057 00000 n +0000627255 00000 n +0000627453 00000 n +0000627650 00000 n +0000627848 00000 n +0000628045 00000 n +0000628243 00000 n +0000628441 00000 n +0000628638 00000 n +0000628836 00000 n +0000629033 00000 n +0000629230 00000 n +0000629427 00000 n +0000629625 00000 n +0000629822 00000 n +0000630020 00000 n +0000630218 00000 n +0000630415 00000 n +0000630613 00000 n +0000630809 00000 n +0000631007 00000 n +0000632657 00000 n +0000632854 00000 n +0000633051 00000 n +0000633249 00000 n +0000631332 00000 n +0000623271 00000 n +0000622370 00000 n +0000631205 00000 n +0000631268 00000 n +0000756571 00000 n +0000668964 00000 n +0000646103 00000 n +0000647769 00000 n +0000646485 00000 n +0000648281 00000 n +0000649949 00000 n +0000648664 00000 n +0000645848 00000 n +0000646613 00000 n +0000646230 00000 n +0000648025 00000 n +0000648792 00000 n +0000648409 00000 n +0000645976 00000 n +0000647641 00000 n +0000646358 00000 n +0000648153 00000 n +0000648919 00000 n +0000648536 00000 n +0000647897 00000 n +0000650077 00000 n +0000650461 00000 n +0000651227 00000 n +0000650844 00000 n +0000652638 00000 n +0000653404 00000 n +0000653021 00000 n +0000655203 00000 n +0000657664 00000 n +0000656896 00000 n +0000655075 00000 n +0000657536 00000 n +0000655840 00000 n +0000650205 00000 n +0000650972 00000 n +0000650589 00000 n +0000633447 00000 n +0000633644 00000 n +0000633842 00000 n +0000634040 00000 n +0000634238 00000 n +0000634435 00000 n +0000634633 00000 n +0000634831 00000 n +0000635029 00000 n +0000635226 00000 n +0000635424 00000 n +0000635622 00000 n +0000635819 00000 n +0000636016 00000 n +0000636214 00000 n +0000636412 00000 n +0000636610 00000 n +0000636807 00000 n +0000637005 00000 n +0000637203 00000 n +0000637400 00000 n +0000637598 00000 n +0000637796 00000 n +0000637994 00000 n +0000638191 00000 n +0000638389 00000 n +0000638587 00000 n +0000638785 00000 n +0000638983 00000 n +0000639181 00000 n +0000639379 00000 n +0000639576 00000 n +0000639774 00000 n +0000639972 00000 n +0000640170 00000 n +0000640366 00000 n +0000640564 00000 n +0000640762 00000 n +0000640960 00000 n +0000642361 00000 n +0000642558 00000 n +0000642756 00000 n +0000642954 00000 n +0000641221 00000 n +0000632142 00000 n +0000631434 00000 n +0000641158 00000 n +0000652382 00000 n +0000653148 00000 n +0000652766 00000 n +0000654691 00000 n +0000657152 00000 n +0000655457 00000 n +0000654563 00000 n +0000657024 00000 n +0000655331 00000 n +0000650333 00000 n +0000651100 00000 n +0000650717 00000 n +0000652510 00000 n +0000653276 00000 n +0000652893 00000 n +0000654947 00000 n +0000657408 00000 n +0000655713 00000 n +0000654819 00000 n +0000657280 00000 n +0000655585 00000 n +0000652254 00000 n +0000653531 00000 n +0000657919 00000 n +0000657791 00000 n +0000658047 00000 n +0000659462 00000 n +0000659207 00000 n +0000659846 00000 n +0000660355 00000 n +0000660099 00000 n +0000658174 00000 n +0000659590 00000 n +0000659334 00000 n +0000659972 00000 n +0000660482 00000 n +0000660227 00000 n +0000659718 00000 n +0000661532 00000 n +0000661660 00000 n +0000662172 00000 n +0000661916 00000 n +0000662556 00000 n +0000643152 00000 n +0000643349 00000 n +0000643547 00000 n +0000643745 00000 n +0000643942 00000 n +0000644140 00000 n +0000644338 00000 n +0000644536 00000 n +0000644733 00000 n +0000644931 00000 n +0000645129 00000 n +0000645326 00000 n +0000645524 00000 n +0000646677 00000 n +0000642080 00000 n +0000641323 00000 n +0000645722 00000 n +0000645912 00000 n +0000646039 00000 n +0000646166 00000 n +0000646294 00000 n +0000646422 00000 n +0000646549 00000 n +0002136379 00000 n +0000663966 00000 n +0000662811 00000 n +0000664350 00000 n +0000664862 00000 n +0000664606 00000 n +0000661788 00000 n +0000662300 00000 n +0000662044 00000 n +0000662684 00000 n +0000664094 00000 n +0000663839 00000 n +0000664478 00000 n +0000664990 00000 n +0000664734 00000 n +0000662428 00000 n +0000664222 00000 n +0000665117 00000 n +0000648983 00000 n +0000647398 00000 n +0000646779 00000 n +0000647514 00000 n +0000647577 00000 n +0000647705 00000 n +0000647833 00000 n +0000647961 00000 n +0000648089 00000 n +0000648217 00000 n +0000648345 00000 n +0000648473 00000 n +0000648600 00000 n +0000648728 00000 n +0000648855 00000 n +0000651291 00000 n +0000649706 00000 n +0000649085 00000 n +0000649822 00000 n +0000649885 00000 n +0000650013 00000 n +0000650141 00000 n +0000650269 00000 n +0000650397 00000 n +0000650525 00000 n +0000650653 00000 n +0000650781 00000 n +0000650908 00000 n +0000651036 00000 n +0000651163 00000 n +0000653595 00000 n +0000652011 00000 n +0000651393 00000 n +0000652127 00000 n +0000652190 00000 n +0000652318 00000 n +0000652446 00000 n +0000652574 00000 n +0000652702 00000 n +0000652829 00000 n +0000652957 00000 n +0000653085 00000 n +0000653212 00000 n +0000653340 00000 n +0000653467 00000 n +0000655904 00000 n +0000654320 00000 n +0000653697 00000 n +0000654436 00000 n +0000654499 00000 n +0000654627 00000 n +0000654755 00000 n +0000654883 00000 n +0000655011 00000 n +0000655139 00000 n +0000655267 00000 n +0000655394 00000 n +0000655521 00000 n +0000655649 00000 n +0000655776 00000 n +0000658238 00000 n +0000656653 00000 n +0000656006 00000 n +0000656769 00000 n +0000656832 00000 n +0000656960 00000 n +0000657088 00000 n +0000657216 00000 n +0000657344 00000 n +0000657472 00000 n +0000657600 00000 n +0000657728 00000 n +0000657855 00000 n +0000657983 00000 n +0000658110 00000 n +0000660546 00000 n +0000658964 00000 n +0000658340 00000 n +0000659080 00000 n +0000659143 00000 n +0000659271 00000 n +0000659398 00000 n +0000659526 00000 n +0000659654 00000 n +0000659782 00000 n +0000659908 00000 n +0000660036 00000 n +0000660163 00000 n +0000660291 00000 n +0000660418 00000 n +0002136504 00000 n +0000662875 00000 n +0000661289 00000 n +0000660648 00000 n +0000661405 00000 n +0000661468 00000 n +0000661596 00000 n +0000661724 00000 n +0000661852 00000 n +0000661980 00000 n +0000662108 00000 n +0000662236 00000 n +0000662364 00000 n +0000662492 00000 n +0000662620 00000 n +0000662747 00000 n +0000665181 00000 n +0000663596 00000 n +0000662977 00000 n +0000663712 00000 n +0000663775 00000 n +0000663903 00000 n +0000664030 00000 n +0000664158 00000 n +0000664286 00000 n +0000664414 00000 n +0000664542 00000 n +0000664670 00000 n +0000664798 00000 n +0000664926 00000 n +0000665053 00000 n +0000666942 00000 n +0000667097 00000 n +0000667291 00000 n +0000667485 00000 n +0000667678 00000 n +0000667871 00000 n +0000668064 00000 n +0000668258 00000 n +0000668452 00000 n +0000670877 00000 n +0000671071 00000 n +0000671265 00000 n +0000669410 00000 n +0000666733 00000 n +0000665283 00000 n +0000668646 00000 n +0000668709 00000 n +0000668900 00000 n +0000669028 00000 n +0000669092 00000 n +0000669282 00000 n +0000669346 00000 n +0000677520 00000 n +0000677647 00000 n +0000680885 00000 n +0000677392 00000 n +0000681842 00000 n +0000686184 00000 n +0000686949 00000 n +0000696392 00000 n +0000671457 00000 n +0000671651 00000 n +0000671845 00000 n +0000672039 00000 n +0000672233 00000 n +0000672427 00000 n +0000672621 00000 n +0000672815 00000 n +0000673009 00000 n +0000673203 00000 n +0000673396 00000 n +0000673590 00000 n +0000673784 00000 n +0000673978 00000 n +0000674172 00000 n +0000674366 00000 n +0000674556 00000 n +0000674749 00000 n +0000674942 00000 n +0000675136 00000 n +0000675330 00000 n +0000675523 00000 n +0000675717 00000 n +0000675910 00000 n +0000676102 00000 n +0000676296 00000 n +0000676490 00000 n +0000676684 00000 n +0000676878 00000 n +0000677072 00000 n +0000677711 00000 n +0000670452 00000 n +0000669554 00000 n +0000677266 00000 n +0000677456 00000 n +0000677583 00000 n +0000700210 00000 n +0000700466 00000 n +0000700721 00000 n +0000686439 00000 n +0000681586 00000 n +0000687077 00000 n +0000692313 00000 n +0000686056 00000 n +0000685928 00000 n +0000700338 00000 n +0000700849 00000 n +0000681076 00000 n +0000681204 00000 n +0000681331 00000 n +0000681459 00000 n +0000692441 00000 n +0000692569 00000 n +0000696520 00000 n +0000692185 00000 n +0000692057 00000 n +0000700593 00000 n +0000681714 00000 n +0000686312 00000 n +0000686565 00000 n +0000686693 00000 n +0000686821 00000 n +0000700082 00000 n +0000705367 00000 n +0000691929 00000 n +0000691801 00000 n +0000696648 00000 n +0000696264 00000 n +0000696136 00000 n +0000679595 00000 n +0000679789 00000 n +0000679982 00000 n +0000680176 00000 n +0000680370 00000 n +0000680564 00000 n +0000683867 00000 n +0000681906 00000 n +0000679413 00000 n +0000677841 00000 n +0000680758 00000 n +0000680821 00000 n +0000680949 00000 n +0000681140 00000 n +0000681267 00000 n +0000681395 00000 n +0000681522 00000 n +0000681650 00000 n +0000681778 00000 n +0000684061 00000 n +0000684255 00000 n +0000684448 00000 n +0000684641 00000 n +0000684834 00000 n +0000685027 00000 n +0000685221 00000 n +0000685415 00000 n +0000685608 00000 n +0000687141 00000 n +0000683649 00000 n +0000682050 00000 n +0000685801 00000 n +0000685864 00000 n +0000685992 00000 n +0000686120 00000 n +0000686248 00000 n +0000686375 00000 n +0000686502 00000 n +0000686629 00000 n +0000686757 00000 n +0000686885 00000 n +0000687013 00000 n +0002136629 00000 n +0000689740 00000 n +0000689934 00000 n +0000690128 00000 n +0000690322 00000 n +0000690516 00000 n +0000690710 00000 n +0000690904 00000 n +0000691097 00000 n +0000691290 00000 n +0000691482 00000 n +0000692633 00000 n +0000689522 00000 n +0000687285 00000 n +0000691674 00000 n +0000691737 00000 n +0000691865 00000 n +0000691993 00000 n +0000692121 00000 n +0000692249 00000 n +0000692377 00000 n +0000692505 00000 n +0000694655 00000 n +0000694849 00000 n +0000695043 00000 n +0000695237 00000 n +0000695430 00000 n +0000695622 00000 n +0000695816 00000 n +0000698601 00000 n +0000696712 00000 n +0000694464 00000 n +0000692791 00000 n +0000696009 00000 n +0000696072 00000 n +0000696200 00000 n +0000696328 00000 n +0000696456 00000 n +0000696584 00000 n +0000698795 00000 n +0000698989 00000 n +0000699183 00000 n +0000699376 00000 n +0000699570 00000 n +0000699761 00000 n +0000703009 00000 n +0000700913 00000 n +0000698410 00000 n +0000696870 00000 n +0000699955 00000 n +0000700018 00000 n +0000700146 00000 n +0000700274 00000 n +0000700402 00000 n +0000700530 00000 n +0000700657 00000 n +0000700785 00000 n +0000703203 00000 n +0000703396 00000 n +0000703586 00000 n +0000703776 00000 n +0000703967 00000 n +0000704158 00000 n +0000704349 00000 n +0000704540 00000 n +0000704731 00000 n +0000705049 00000 n +0000705682 00000 n +0000702773 00000 n +0000701071 00000 n +0000705240 00000 n +0000705303 00000 n +0000705431 00000 n +0000705495 00000 n +0000704890 00000 n +0000709671 00000 n +0000709543 00000 n +0000707448 00000 n +0000707638 00000 n +0000707828 00000 n +0000708019 00000 n +0000708210 00000 n +0000708401 00000 n +0000708592 00000 n +0000708783 00000 n +0000708974 00000 n +0000709163 00000 n +0000711636 00000 n +0000711826 00000 n +0000712017 00000 n +0000709799 00000 n +0000707230 00000 n +0000705840 00000 n +0000709353 00000 n +0000709416 00000 n +0000709607 00000 n +0000709735 00000 n +0000712208 00000 n +0000712399 00000 n +0000712590 00000 n +0000712786 00000 n +0000712981 00000 n +0000713177 00000 n +0000713373 00000 n +0000713568 00000 n +0000713764 00000 n +0000713960 00000 n +0000714156 00000 n +0000714352 00000 n +0000714548 00000 n +0000714744 00000 n +0000715321 00000 n +0000711355 00000 n +0000709943 00000 n +0000714940 00000 n +0000715003 00000 n +0000715193 00000 n +0000715257 00000 n +0002136754 00000 n +0000754011 00000 n +0000757812 00000 n +0000753627 00000 n +0000756443 00000 n +0000753883 00000 n +0000756698 00000 n +0000756316 00000 n +0000762292 00000 n +0000717058 00000 n +0000717254 00000 n +0000717449 00000 n +0000717645 00000 n +0000717840 00000 n +0000718036 00000 n +0000718231 00000 n +0000718427 00000 n +0000718623 00000 n +0000718819 00000 n +0000719014 00000 n +0000719210 00000 n +0000719406 00000 n +0000719602 00000 n +0000719797 00000 n +0000719993 00000 n +0000720189 00000 n +0000720384 00000 n +0000720578 00000 n +0000720774 00000 n +0000720970 00000 n +0000721166 00000 n +0000721362 00000 n +0000721558 00000 n +0000721754 00000 n +0000721949 00000 n +0000722144 00000 n +0000722340 00000 n +0000722536 00000 n +0000722732 00000 n +0000722928 00000 n +0000723124 00000 n +0000723320 00000 n +0000723516 00000 n +0000723712 00000 n +0000723907 00000 n +0000724102 00000 n +0000724255 00000 n +0000724451 00000 n +0000724647 00000 n +0000726586 00000 n +0000726782 00000 n +0000726978 00000 n +0000725161 00000 n +0000716570 00000 n +0000715479 00000 n +0000724843 00000 n +0000724906 00000 n +0000724970 00000 n +0000725033 00000 n +0000725097 00000 n +0000756060 00000 n +0000758835 00000 n +0000755676 00000 n +0000758452 00000 n +0000755804 00000 n +0000758579 00000 n +0000755932 00000 n +0000758707 00000 n +0000754523 00000 n +0000758324 00000 n +0000754139 00000 n +0000757940 00000 n +0000754267 00000 n +0000758068 00000 n +0000754395 00000 n +0000758196 00000 n +0000756188 00000 n +0000762164 00000 n +0000742344 00000 n +0000742472 00000 n +0000750933 00000 n +0000727174 00000 n +0000727370 00000 n +0000727564 00000 n +0000727760 00000 n +0000727955 00000 n +0000728151 00000 n +0000728347 00000 n +0000728542 00000 n +0000728738 00000 n +0000728934 00000 n +0000729130 00000 n +0000729326 00000 n +0000729521 00000 n +0000729717 00000 n +0000729913 00000 n +0000730109 00000 n +0000730305 00000 n +0000730501 00000 n +0000730697 00000 n +0000730892 00000 n +0000731088 00000 n +0000731283 00000 n +0000731479 00000 n +0000731675 00000 n +0000731871 00000 n +0000732067 00000 n +0000732262 00000 n +0000732458 00000 n +0000732654 00000 n +0000732850 00000 n +0000734837 00000 n +0000735033 00000 n +0000735228 00000 n +0000733237 00000 n +0000726161 00000 n +0000725277 00000 n +0000733046 00000 n +0000733109 00000 n +0000733173 00000 n +0000741194 00000 n +0000741322 00000 n +0000749141 00000 n +0000741577 00000 n +0000741704 00000 n +0000749397 00000 n +0000741960 00000 n +0000742088 00000 n +0000749653 00000 n +0000746304 00000 n +0000746432 00000 n +0000751953 00000 n +0000744565 00000 n +0000744691 00000 n +0000751570 00000 n +0000744818 00000 n +0000745920 00000 n +0000751698 00000 n +0000746048 00000 n +0000746176 00000 n +0000751825 00000 n +0000744310 00000 n +0000744437 00000 n +0000751443 00000 n +0000743542 00000 n +0000743670 00000 n +0000751061 00000 n +0000743798 00000 n +0000743926 00000 n +0000751189 00000 n +0000744054 00000 n +0000744182 00000 n +0000751316 00000 n +0000735424 00000 n +0000735620 00000 n +0000735815 00000 n +0000736011 00000 n +0000736163 00000 n +0000736359 00000 n +0000736553 00000 n +0000736748 00000 n +0000736943 00000 n +0000737139 00000 n +0000737292 00000 n +0000737488 00000 n +0000737683 00000 n +0000737878 00000 n +0000738074 00000 n +0000738270 00000 n +0000738466 00000 n +0000738662 00000 n +0000738858 00000 n +0000739054 00000 n +0000739250 00000 n +0000739446 00000 n +0000739960 00000 n +0000734484 00000 n +0000733353 00000 n +0000739641 00000 n +0000739704 00000 n +0000739768 00000 n +0000739832 00000 n +0000739896 00000 n +0000746942 00000 n +0000747070 00000 n +0000753437 00000 n +0000746688 00000 n +0000746814 00000 n +0000752208 00000 n +0000747196 00000 n +0000748501 00000 n +0000748629 00000 n +0000748757 00000 n +0000748885 00000 n +0000742216 00000 n +0000749779 00000 n +0000741066 00000 n +0000749013 00000 n +0000741450 00000 n +0000749269 00000 n +0000741832 00000 n +0000749525 00000 n +0000746560 00000 n +0000752081 00000 n +0000742536 00000 n +0000740824 00000 n +0000740062 00000 n +0000740940 00000 n +0000741130 00000 n +0000741258 00000 n +0000741386 00000 n +0000741513 00000 n +0000741641 00000 n +0000741768 00000 n +0000741896 00000 n +0000742024 00000 n +0000742152 00000 n +0000742280 00000 n +0000742408 00000 n +0000744882 00000 n +0000743299 00000 n +0000742638 00000 n +0000743415 00000 n +0000743478 00000 n +0000743606 00000 n +0000743734 00000 n +0000743862 00000 n +0000743990 00000 n +0000744118 00000 n +0000744246 00000 n +0000744374 00000 n +0000744501 00000 n +0000744627 00000 n +0000744754 00000 n +0000747260 00000 n +0000745677 00000 n +0000744984 00000 n +0000745793 00000 n +0000745856 00000 n +0000745984 00000 n +0000746112 00000 n +0000746240 00000 n +0000746368 00000 n +0000746496 00000 n +0000746624 00000 n +0000746751 00000 n +0000746878 00000 n +0000747006 00000 n +0000747132 00000 n +0002136879 00000 n +0000749843 00000 n +0000748258 00000 n +0000747362 00000 n +0000748374 00000 n +0000748437 00000 n +0000748565 00000 n +0000748693 00000 n +0000748821 00000 n +0000748949 00000 n +0000749077 00000 n +0000749205 00000 n +0000749333 00000 n +0000749461 00000 n +0000749589 00000 n +0000749717 00000 n +0000752272 00000 n +0000750690 00000 n +0000749959 00000 n +0000750806 00000 n +0000750869 00000 n +0000750997 00000 n +0000751125 00000 n +0000751252 00000 n +0000751379 00000 n +0000751506 00000 n +0000751634 00000 n +0000751762 00000 n +0000751889 00000 n +0000752017 00000 n +0000752144 00000 n +0000754587 00000 n +0000753194 00000 n +0000752388 00000 n +0000753310 00000 n +0000753373 00000 n +0000753501 00000 n +0000753691 00000 n +0000753819 00000 n +0000753947 00000 n +0000754075 00000 n +0000754203 00000 n +0000754331 00000 n +0000754459 00000 n +0000756824 00000 n +0000755433 00000 n +0000754689 00000 n +0000755549 00000 n +0000755612 00000 n +0000755740 00000 n +0000755868 00000 n +0000755996 00000 n +0000756124 00000 n +0000756252 00000 n +0000756380 00000 n +0000756507 00000 n +0000756634 00000 n +0000756760 00000 n +0000758899 00000 n +0000757633 00000 n +0000756926 00000 n +0000757749 00000 n +0000757876 00000 n +0000758004 00000 n +0000758132 00000 n +0000758260 00000 n +0000758388 00000 n +0000758516 00000 n +0000758643 00000 n +0000758771 00000 n +0000761454 00000 n +0000761649 00000 n +0000761843 00000 n +0000766211 00000 n +0000766384 00000 n +0000766579 00000 n +0000762801 00000 n +0000761299 00000 n +0000759001 00000 n +0000762037 00000 n +0000762100 00000 n +0000762228 00000 n +0000762356 00000 n +0000762610 00000 n +0000762673 00000 n +0000762737 00000 n +0002137004 00000 n +0000766749 00000 n +0000766942 00000 n +0000767137 00000 n +0000767332 00000 n +0000767526 00000 n +0000767720 00000 n +0000767893 00000 n +0000768088 00000 n +0000768281 00000 n +0000768607 00000 n +0000768802 00000 n +0000768997 00000 n +0000769193 00000 n +0000769389 00000 n +0000769903 00000 n +0000765921 00000 n +0000762931 00000 n +0000769584 00000 n +0000769647 00000 n +0000768444 00000 n +0000769711 00000 n +0000769775 00000 n +0000769839 00000 n +0000773576 00000 n +0000773640 00000 n +0000779781 00000 n +0000794022 00000 n +0000793894 00000 n +0000772089 00000 n +0000772284 00000 n +0000772477 00000 n +0000772670 00000 n +0000772864 00000 n +0000773059 00000 n +0000773254 00000 n +0000773704 00000 n +0000771898 00000 n +0000770033 00000 n +0000773449 00000 n +0000773512 00000 n +0000793767 00000 n +0000775828 00000 n +0000776023 00000 n +0000776218 00000 n +0000776413 00000 n +0000776607 00000 n +0000776802 00000 n +0000776995 00000 n +0000777190 00000 n +0000777385 00000 n +0000777578 00000 n +0000777773 00000 n +0000777968 00000 n +0000778163 00000 n +0000778356 00000 n +0000778551 00000 n +0000778746 00000 n +0000778939 00000 n +0000779134 00000 n +0000779329 00000 n +0000779524 00000 n +0000782093 00000 n +0000782287 00000 n +0000779909 00000 n +0000775520 00000 n +0000773820 00000 n +0000779718 00000 n +0000779845 00000 n +0000798237 00000 n +0000802071 00000 n +0000802197 00000 n +0000801943 00000 n +0000793640 00000 n +0000793257 00000 n +0000793513 00000 n +0000793385 00000 n +0000793130 00000 n +0000793002 00000 n +0000801687 00000 n +0000801815 00000 n +0000798365 00000 n +0000782481 00000 n +0000782675 00000 n +0000782869 00000 n +0000783063 00000 n +0000783256 00000 n +0000783447 00000 n +0000783641 00000 n +0000783835 00000 n +0000784029 00000 n +0000784223 00000 n +0000784417 00000 n +0000784611 00000 n +0000784805 00000 n +0000784999 00000 n +0000785193 00000 n +0000785387 00000 n +0000785581 00000 n +0000785775 00000 n +0000785967 00000 n +0000786159 00000 n +0000786352 00000 n +0000786546 00000 n +0000786740 00000 n +0000786935 00000 n +0000787130 00000 n +0000787325 00000 n +0000787520 00000 n +0000787714 00000 n +0000787908 00000 n +0000788102 00000 n +0000788295 00000 n +0000788489 00000 n +0000788683 00000 n +0000788877 00000 n +0000789071 00000 n +0000789265 00000 n +0000789459 00000 n +0000789653 00000 n +0000789847 00000 n +0000790168 00000 n +0000781596 00000 n +0000780039 00000 n +0000790041 00000 n +0000790104 00000 n +0000812663 00000 n +0000807944 00000 n +0000811897 00000 n +0000812023 00000 n +0000791901 00000 n +0000792096 00000 n +0000792291 00000 n +0000792486 00000 n +0000792681 00000 n +0000794085 00000 n +0000791728 00000 n +0000790284 00000 n +0000792876 00000 n +0000793066 00000 n +0000793194 00000 n +0000793321 00000 n +0000793449 00000 n +0000793576 00000 n +0000793704 00000 n +0000793831 00000 n +0000793958 00000 n +0000796312 00000 n +0000796507 00000 n +0000796701 00000 n +0000796894 00000 n +0000797089 00000 n +0000797284 00000 n +0000797478 00000 n +0000797659 00000 n +0000800586 00000 n +0000798557 00000 n +0000796112 00000 n +0000794215 00000 n +0000797854 00000 n +0000797917 00000 n +0000798045 00000 n +0000798173 00000 n +0000798301 00000 n +0000798429 00000 n +0002137129 00000 n +0000800780 00000 n +0000800975 00000 n +0000801170 00000 n +0000801365 00000 n +0000802578 00000 n +0000800413 00000 n +0000798687 00000 n +0000801560 00000 n +0000801623 00000 n +0000801751 00000 n +0000801879 00000 n +0000802007 00000 n +0000802135 00000 n +0000802259 00000 n +0000802450 00000 n +0000805594 00000 n +0000805789 00000 n +0000805984 00000 n +0000806179 00000 n +0000806569 00000 n +0000806764 00000 n +0000806958 00000 n +0000807153 00000 n +0000807347 00000 n +0000807498 00000 n +0000810469 00000 n +0000808071 00000 n +0000805367 00000 n +0000802722 00000 n +0000807689 00000 n +0000807752 00000 n +0000806374 00000 n +0000807880 00000 n +0000808007 00000 n +0000810664 00000 n +0000810859 00000 n +0000811054 00000 n +0000811249 00000 n +0000811444 00000 n +0000811639 00000 n +0000812855 00000 n +0000810278 00000 n +0000808215 00000 n +0000811834 00000 n +0000811960 00000 n +0000812087 00000 n +0000812215 00000 n +0000812343 00000 n +0000812471 00000 n +0000812599 00000 n +0000812727 00000 n +0000815120 00000 n +0000815315 00000 n +0000815509 00000 n +0000815703 00000 n +0000815898 00000 n +0000816092 00000 n +0000819233 00000 n +0000817307 00000 n +0000814938 00000 n +0000812999 00000 n +0000816286 00000 n +0000816349 00000 n +0000816477 00000 n +0000816605 00000 n +0000816732 00000 n +0000816859 00000 n +0000816987 00000 n +0000817115 00000 n +0000817243 00000 n +0000819426 00000 n +0000819621 00000 n +0000819815 00000 n +0000820008 00000 n +0000820203 00000 n +0000820398 00000 n +0000820593 00000 n +0000820787 00000 n +0000822257 00000 n +0000819024 00000 n +0000817451 00000 n +0000820982 00000 n +0000821108 00000 n +0000821236 00000 n +0000821364 00000 n +0000821492 00000 n +0000821619 00000 n +0000821747 00000 n +0000821875 00000 n +0000822002 00000 n +0000822130 00000 n +0000825145 00000 n +0000825340 00000 n +0000825535 00000 n +0000825729 00000 n +0000826434 00000 n +0000824981 00000 n +0000822401 00000 n +0000825923 00000 n +0000825986 00000 n +0000826114 00000 n +0000826242 00000 n +0000826370 00000 n +0002137254 00000 n +0000829420 00000 n +0000829241 00000 n +0000826578 00000 n +0000829357 00000 n +0000832448 00000 n +0000832642 00000 n +0000833032 00000 n +0000833227 00000 n +0000833622 00000 n +0000832266 00000 n +0000829550 00000 n +0000833559 00000 n +0000832837 00000 n +0000833393 00000 n +0000836410 00000 n +0000836605 00000 n +0000837118 00000 n +0000836264 00000 n +0000833752 00000 n +0000836799 00000 n +0000836926 00000 n +0000837054 00000 n +0000839748 00000 n +0000839569 00000 n +0000837276 00000 n +0000839685 00000 n +0000843091 00000 n +0000843413 00000 n +0000842954 00000 n +0000839864 00000 n +0000843286 00000 n +0002131896 00000 n +0000845513 00000 n +0000845708 00000 n +0000845903 00000 n +0000846098 00000 n +0000846293 00000 n +0000846488 00000 n +0000846681 00000 n +0000846875 00000 n +0000847070 00000 n +0000848346 00000 n +0000845304 00000 n +0000843571 00000 n +0000847264 00000 n +0000847327 00000 n +0000847454 00000 n +0000847582 00000 n +0000847710 00000 n +0000847837 00000 n +0000847964 00000 n +0000848092 00000 n +0000848156 00000 n +0002137379 00000 n +0000850280 00000 n +0000850436 00000 n +0000850592 00000 n +0000850787 00000 n +0000850983 00000 n +0000851179 00000 n +0000851375 00000 n +0000851571 00000 n +0000851766 00000 n +0000851962 00000 n +0000852156 00000 n +0000852352 00000 n +0000852548 00000 n +0000852744 00000 n +0000852940 00000 n +0000853136 00000 n +0000853331 00000 n +0000855926 00000 n +0000853910 00000 n +0000849999 00000 n +0000848504 00000 n +0000853527 00000 n +0000853590 00000 n +0000853654 00000 n +0000853718 00000 n +0000853782 00000 n +0000853846 00000 n +0000880358 00000 n +0000905704 00000 n +0000902455 00000 n +0000896118 00000 n +0000879974 00000 n +0000865910 00000 n +0000875458 00000 n +0000861773 00000 n +0000861899 00000 n +0000862027 00000 n +0000865782 00000 n +0000866101 00000 n +0000856122 00000 n +0000856316 00000 n +0000856512 00000 n +0000856708 00000 n +0000856862 00000 n +0000857056 00000 n +0000857213 00000 n +0000857409 00000 n +0000857604 00000 n +0000857800 00000 n +0000857996 00000 n +0000858192 00000 n +0000858388 00000 n +0000858583 00000 n +0000858779 00000 n +0000858975 00000 n +0000859171 00000 n +0000859367 00000 n +0000859563 00000 n +0000859759 00000 n +0000859955 00000 n +0000860150 00000 n +0000860345 00000 n +0000860540 00000 n +0000860736 00000 n +0000860932 00000 n +0000861127 00000 n +0000861323 00000 n +0000863896 00000 n +0000862091 00000 n +0000855537 00000 n +0000854040 00000 n +0000861519 00000 n +0000861582 00000 n +0000861646 00000 n +0000861836 00000 n +0000861963 00000 n +0000866420 00000 n +0000880102 00000 n +0000870530 00000 n +0000870784 00000 n +0000880230 00000 n +0000870404 00000 n +0000866676 00000 n +0000866548 00000 n +0000895991 00000 n +0000912316 00000 n +0000906022 00000 n +0000905894 00000 n +0000864092 00000 n +0000864287 00000 n +0000864482 00000 n +0000864678 00000 n +0000864873 00000 n +0000865069 00000 n +0000865265 00000 n +0000865460 00000 n +0000869300 00000 n +0000866740 00000 n +0000863687 00000 n +0000862221 00000 n +0000865655 00000 n +0000865718 00000 n +0000865846 00000 n +0000865974 00000 n +0000866165 00000 n +0000866356 00000 n +0000866484 00000 n +0000866612 00000 n +0000869496 00000 n +0000869690 00000 n +0000869885 00000 n +0000870081 00000 n +0000873874 00000 n +0000874070 00000 n +0000870848 00000 n +0000869127 00000 n +0000866898 00000 n +0000870277 00000 n +0000870340 00000 n +0000870466 00000 n +0000870592 00000 n +0000870720 00000 n +0000874226 00000 n +0000874422 00000 n +0000874616 00000 n +0000874812 00000 n +0000875008 00000 n +0000875712 00000 n +0000873683 00000 n +0000870992 00000 n +0000875204 00000 n +0000875267 00000 n +0000875394 00000 n +0000875520 00000 n +0000875648 00000 n +0000878258 00000 n +0000878453 00000 n +0000878649 00000 n +0000878844 00000 n +0000879039 00000 n +0000879235 00000 n +0000879430 00000 n +0000879626 00000 n +0000880422 00000 n +0000878058 00000 n +0000875856 00000 n +0000879783 00000 n +0000879910 00000 n +0000880038 00000 n +0000880166 00000 n +0000880294 00000 n +0002137504 00000 n +0000883181 00000 n +0000883377 00000 n +0000883572 00000 n +0000883768 00000 n +0000883964 00000 n +0000884159 00000 n +0000884309 00000 n +0000884505 00000 n +0000885145 00000 n +0000882981 00000 n +0000880566 00000 n +0000884700 00000 n +0000884763 00000 n +0000884891 00000 n +0000885017 00000 n +0000887796 00000 n +0000887992 00000 n +0000888145 00000 n +0000888341 00000 n +0000888537 00000 n +0000888733 00000 n +0000888929 00000 n +0000889125 00000 n +0000889321 00000 n +0000889473 00000 n +0000889669 00000 n +0000889864 00000 n +0000890060 00000 n +0000890256 00000 n +0000890452 00000 n +0000890648 00000 n +0000894376 00000 n +0000891481 00000 n +0000887524 00000 n +0000885303 00000 n +0000890844 00000 n +0000890907 00000 n +0000891035 00000 n +0000891162 00000 n +0000891290 00000 n +0000891417 00000 n +0000894572 00000 n +0000894768 00000 n +0000894964 00000 n +0000895159 00000 n +0000895354 00000 n +0000895548 00000 n +0000896501 00000 n +0000894176 00000 n +0000891625 00000 n +0000895928 00000 n +0000896054 00000 n +0000896182 00000 n +0000896310 00000 n +0000896437 00000 n +0000895738 00000 n +0000899802 00000 n +0000899996 00000 n +0000900192 00000 n +0000900388 00000 n +0000900549 00000 n +0000900745 00000 n +0000901125 00000 n +0000901321 00000 n +0000901517 00000 n +0000901713 00000 n +0000901909 00000 n +0000902070 00000 n +0000902582 00000 n +0000899557 00000 n +0000896659 00000 n +0000902266 00000 n +0000902391 00000 n +0000900935 00000 n +0000902518 00000 n +0000904693 00000 n +0000904889 00000 n +0000905083 00000 n +0000905279 00000 n +0000905475 00000 n +0000906086 00000 n +0000904520 00000 n +0000902726 00000 n +0000905641 00000 n +0000905767 00000 n +0000905958 00000 n +0000907981 00000 n +0000908177 00000 n +0000908343 00000 n +0000908537 00000 n +0000908701 00000 n +0000908865 00000 n +0000909061 00000 n +0000909256 00000 n +0000909450 00000 n +0000909645 00000 n +0000909841 00000 n +0000910037 00000 n +0000910232 00000 n +0000910427 00000 n +0000910623 00000 n +0000910819 00000 n +0000911015 00000 n +0000911211 00000 n +0000911406 00000 n +0000911601 00000 n +0000911797 00000 n +0000911993 00000 n +0000914946 00000 n +0000915139 00000 n +0000915335 00000 n +0000912762 00000 n +0000907655 00000 n +0000906230 00000 n +0000912189 00000 n +0000912252 00000 n +0000912380 00000 n +0000912444 00000 n +0000912634 00000 n +0000912698 00000 n +0002137629 00000 n +0000919765 00000 n +0000919956 00000 n +0000923513 00000 n +0000923641 00000 n +0000923769 00000 n +0000923897 00000 n +0000924025 00000 n +0000927579 00000 n +0000927707 00000 n +0000927835 00000 n +0000932077 00000 n +0000932205 00000 n +0000932333 00000 n +0000932461 00000 n +0000936895 00000 n +0000937023 00000 n +0000937151 00000 n +0000915530 00000 n +0000915726 00000 n +0000915922 00000 n +0000916118 00000 n +0000916314 00000 n +0000916510 00000 n +0000916705 00000 n +0000916901 00000 n +0000917096 00000 n +0000917290 00000 n +0000917486 00000 n +0000917681 00000 n +0000917877 00000 n +0000918073 00000 n +0000918269 00000 n +0000918465 00000 n +0000918661 00000 n +0000918857 00000 n +0000919053 00000 n +0000919249 00000 n +0000919444 00000 n +0000921886 00000 n +0000920084 00000 n +0000914602 00000 n +0000912906 00000 n +0000919639 00000 n +0000919829 00000 n +0000920020 00000 n +0000941512 00000 n +0000941640 00000 n +0000941768 00000 n +0000946301 00000 n +0000946429 00000 n +0000946685 00000 n +0000951329 00000 n +0000951457 00000 n +0000951585 00000 n +0000951713 00000 n +0000955315 00000 n +0000955443 00000 n +0000955571 00000 n +0000959433 00000 n +0000959561 00000 n +0000959689 00000 n +0000959817 00000 n +0000963896 00000 n +0000964024 00000 n +0000964151 00000 n +0000922081 00000 n +0000922277 00000 n +0000922473 00000 n +0000922668 00000 n +0000922863 00000 n +0000923058 00000 n +0000923254 00000 n +0000926082 00000 n +0000924089 00000 n +0000921686 00000 n +0000920214 00000 n +0000923450 00000 n +0000923577 00000 n +0000923705 00000 n +0000923833 00000 n +0000923961 00000 n +0000926277 00000 n +0000926473 00000 n +0000926669 00000 n +0000926865 00000 n +0000927061 00000 n +0000927257 00000 n +0000929995 00000 n +0000927899 00000 n +0000925891 00000 n +0000924219 00000 n +0000927452 00000 n +0000927515 00000 n +0000927643 00000 n +0000927771 00000 n +0000930191 00000 n +0000930386 00000 n +0000930580 00000 n +0000930776 00000 n +0000930972 00000 n +0000931166 00000 n +0000931362 00000 n +0000931558 00000 n +0000931754 00000 n +0000934811 00000 n +0000935007 00000 n +0000932525 00000 n +0000929777 00000 n +0000928043 00000 n +0000931950 00000 n +0000932013 00000 n +0000932141 00000 n +0000932269 00000 n +0000932397 00000 n +0000935203 00000 n +0000935398 00000 n +0000935594 00000 n +0000935790 00000 n +0000935985 00000 n +0000936180 00000 n +0000936376 00000 n +0000936572 00000 n +0000937343 00000 n +0000934593 00000 n +0000932669 00000 n +0000936768 00000 n +0000936831 00000 n +0000936959 00000 n +0000937087 00000 n +0000937215 00000 n +0000939623 00000 n +0000939817 00000 n +0000940013 00000 n +0000940209 00000 n +0000940405 00000 n +0000940601 00000 n +0000940797 00000 n +0000940993 00000 n +0000941189 00000 n +0000943890 00000 n +0000944086 00000 n +0000944282 00000 n +0000941896 00000 n +0000939414 00000 n +0000937487 00000 n +0000941385 00000 n +0000941448 00000 n +0000941576 00000 n +0000941704 00000 n +0000941832 00000 n +0002137754 00000 n +0000944477 00000 n +0000944673 00000 n +0000944868 00000 n +0000945064 00000 n +0000945259 00000 n +0000945455 00000 n +0000945651 00000 n +0000945847 00000 n +0000946042 00000 n +0000946749 00000 n +0000943654 00000 n +0000942040 00000 n +0000946238 00000 n +0000946365 00000 n +0000946493 00000 n +0000946621 00000 n +0000948852 00000 n +0000949048 00000 n +0000949244 00000 n +0000949440 00000 n +0000949636 00000 n +0000949832 00000 n +0000950028 00000 n +0000950224 00000 n +0000950420 00000 n +0000950616 00000 n +0000950812 00000 n +0000951008 00000 n +0000951777 00000 n +0000948616 00000 n +0000946879 00000 n +0000951202 00000 n +0000951265 00000 n +0000951393 00000 n +0000951521 00000 n +0000951649 00000 n +0000954012 00000 n +0000954208 00000 n +0000954404 00000 n +0000954600 00000 n +0000954796 00000 n +0000954992 00000 n +0000957804 00000 n +0000955698 00000 n +0000953830 00000 n +0000951921 00000 n +0000955188 00000 n +0000955251 00000 n +0000955379 00000 n +0000955507 00000 n +0000955634 00000 n +0000958000 00000 n +0000958196 00000 n +0000958392 00000 n +0000958587 00000 n +0000958783 00000 n +0000958979 00000 n +0000959175 00000 n +0000962203 00000 n +0000962399 00000 n +0000959881 00000 n +0000957604 00000 n +0000955842 00000 n +0000959370 00000 n +0000959497 00000 n +0000959625 00000 n +0000959753 00000 n +0000962595 00000 n +0000962790 00000 n +0000962986 00000 n +0000963378 00000 n +0000963574 00000 n +0000964215 00000 n +0000962003 00000 n +0000960025 00000 n +0000963769 00000 n +0000963832 00000 n +0000963960 00000 n +0000963182 00000 n +0000964088 00000 n +0000966346 00000 n +0000966542 00000 n +0000966738 00000 n +0000967215 00000 n +0000966191 00000 n +0000964359 00000 n +0000966898 00000 n +0000966961 00000 n +0002137879 00000 n +0000969046 00000 n +0000969240 00000 n +0000969433 00000 n +0000969628 00000 n +0000969822 00000 n +0000970018 00000 n +0000970212 00000 n +0000970408 00000 n +0000970602 00000 n +0000970798 00000 n +0000970992 00000 n +0000971186 00000 n +0000971379 00000 n +0000971573 00000 n +0000971767 00000 n +0000971960 00000 n +0000972154 00000 n +0000972348 00000 n +0000974369 00000 n +0000974563 00000 n +0000972669 00000 n +0000968756 00000 n +0000967373 00000 n +0000972542 00000 n +0000972605 00000 n +0000986305 00000 n +0000986177 00000 n +0000986049 00000 n +0000976431 00000 n +0000983519 00000 n +0000985794 00000 n +0000985922 00000 n +0000990643 00000 n +0000990516 00000 n +0000986432 00000 n +0000986559 00000 n +0000978744 00000 n +0000983901 00000 n +0000974756 00000 n +0000974949 00000 n +0000975143 00000 n +0000975335 00000 n +0000975529 00000 n +0000975723 00000 n +0000975917 00000 n +0000976111 00000 n +0000976750 00000 n +0000974151 00000 n +0000972799 00000 n +0000976305 00000 n +0000976495 00000 n +0000976559 00000 n +0000976623 00000 n +0000976687 00000 n +0000981135 00000 n +0000978871 00000 n +0000981391 00000 n +0000983647 00000 n +0000981263 00000 n +0000978999 00000 n +0000981518 00000 n +0000983774 00000 n +0000978423 00000 n +0000979063 00000 n +0000978286 00000 n +0000976880 00000 n +0000978617 00000 n +0000978680 00000 n +0000978807 00000 n +0000978935 00000 n +0000980620 00000 n +0000980814 00000 n +0000981582 00000 n +0000980474 00000 n +0000979179 00000 n +0000981008 00000 n +0000981071 00000 n +0000981199 00000 n +0000981327 00000 n +0000981454 00000 n +0000983008 00000 n +0000983201 00000 n +0000984029 00000 n +0000982862 00000 n +0000981698 00000 n +0000983392 00000 n +0000983455 00000 n +0000983583 00000 n +0000983710 00000 n +0000983837 00000 n +0000983965 00000 n +0000986623 00000 n +0000985615 00000 n +0000984145 00000 n +0000985731 00000 n +0000985858 00000 n +0000985986 00000 n +0000986113 00000 n +0000986241 00000 n +0000986368 00000 n +0000986495 00000 n +0002138004 00000 n +0000988823 00000 n +0000989213 00000 n +0000989409 00000 n +0000989605 00000 n +0000989997 00000 n +0000990193 00000 n +0000992979 00000 n +0000991025 00000 n +0000988623 00000 n +0000986753 00000 n +0000990389 00000 n +0000990452 00000 n +0000990579 00000 n +0000990707 00000 n +0000990771 00000 n +0000989018 00000 n +0000990961 00000 n +0000989801 00000 n +0000998236 00000 n +0000997853 00000 n +0000997725 00000 n +0000993174 00000 n +0000993370 00000 n +0000993566 00000 n +0000993762 00000 n +0000993958 00000 n +0000994154 00000 n +0000994350 00000 n +0000994546 00000 n +0000994742 00000 n +0000994936 00000 n +0000995129 00000 n +0000995325 00000 n +0000995521 00000 n +0000995717 00000 n +0000995913 00000 n +0000996108 00000 n +0000996304 00000 n +0000996499 00000 n +0000996694 00000 n +0000996888 00000 n +0000997082 00000 n +0000997276 00000 n +0000998300 00000 n +0000992644 00000 n +0000991169 00000 n +0000997472 00000 n +0000997535 00000 n +0000997599 00000 n +0000997789 00000 n +0000997917 00000 n +0000997981 00000 n +0000998045 00000 n +0000998109 00000 n +0000998172 00000 n +0001000581 00000 n +0001000836 00000 n +0001000709 00000 n +0001000453 00000 n +0001001090 00000 n +0001001344 00000 n +0001001218 00000 n +0001000962 00000 n +0001000067 00000 n +0001001408 00000 n +0000999930 00000 n +0000998416 00000 n +0001000263 00000 n +0001000326 00000 n +0001000517 00000 n +0001000645 00000 n +0001000772 00000 n +0001000899 00000 n +0001001026 00000 n +0001001154 00000 n +0001001282 00000 n +0001003835 00000 n +0001003983 00000 n +0001004388 00000 n +0001003689 00000 n +0001001566 00000 n +0001004134 00000 n +0001004197 00000 n +0001004261 00000 n +0001006532 00000 n +0001006353 00000 n +0001004560 00000 n +0001006469 00000 n +0001008335 00000 n +0001008547 00000 n +0001008198 00000 n +0001006648 00000 n +0001008484 00000 n +0002138129 00000 n +0001011297 00000 n +0001011445 00000 n +0001011593 00000 n +0001012110 00000 n +0001011142 00000 n +0001008663 00000 n +0001011793 00000 n +0001012046 00000 n +0001014630 00000 n +0001014791 00000 n +0001014991 00000 n +0001015147 00000 n +0001017870 00000 n +0001015602 00000 n +0001014466 00000 n +0001012254 00000 n +0001015347 00000 n +0001015410 00000 n +0001015474 00000 n +0001015538 00000 n +0001018069 00000 n +0001018269 00000 n +0001018469 00000 n +0001018869 00000 n +0001022166 00000 n +0001022365 00000 n +0001019281 00000 n +0001017688 00000 n +0001015718 00000 n +0001019026 00000 n +0001019089 00000 n +0001019153 00000 n +0001018669 00000 n +0001019217 00000 n +0001066243 00000 n +0001061304 00000 n +0001259441 00000 n +0001022565 00000 n +0001022765 00000 n +0001022964 00000 n +0001023417 00000 n +0001021993 00000 n +0001019397 00000 n +0001023162 00000 n +0001023225 00000 n +0001023353 00000 n +0001069352 00000 n +0001025339 00000 n +0001025160 00000 n +0001023547 00000 n +0001025276 00000 n +0001027389 00000 n +0001027210 00000 n +0001025441 00000 n +0001027326 00000 n +0002138254 00000 n +0001029118 00000 n +0001028939 00000 n +0001027491 00000 n +0001029055 00000 n +0001031032 00000 n +0001030853 00000 n +0001029220 00000 n +0001030969 00000 n +0001033288 00000 n +0001033109 00000 n +0001031134 00000 n +0001033225 00000 n +0001035549 00000 n +0001035370 00000 n +0001033390 00000 n +0001035486 00000 n +0001037918 00000 n +0001037739 00000 n +0001035651 00000 n +0001037855 00000 n +0001039930 00000 n +0001039751 00000 n +0001038020 00000 n +0001039867 00000 n +0002138379 00000 n +0001041571 00000 n +0001041392 00000 n +0001040032 00000 n +0001041508 00000 n +0001043429 00000 n +0001043250 00000 n +0001041673 00000 n +0001043366 00000 n +0001045333 00000 n +0001045154 00000 n +0001043531 00000 n +0001045270 00000 n +0001047416 00000 n +0001047237 00000 n +0001045435 00000 n +0001047353 00000 n +0001049904 00000 n +0001049725 00000 n +0001047518 00000 n +0001049841 00000 n +0001052076 00000 n +0001051897 00000 n +0001050006 00000 n +0001052013 00000 n +0002138504 00000 n +0001054233 00000 n +0001054054 00000 n +0001052178 00000 n +0001054170 00000 n +0001056581 00000 n +0001056402 00000 n +0001054335 00000 n +0001056518 00000 n +0001058134 00000 n +0001058333 00000 n +0001058533 00000 n +0001058733 00000 n +0001058931 00000 n +0001059131 00000 n +0001059331 00000 n +0001059531 00000 n +0001059731 00000 n +0001059931 00000 n +0001060131 00000 n +0001060331 00000 n +0001060530 00000 n +0001061368 00000 n +0001057889 00000 n +0001056683 00000 n +0001060730 00000 n +0001060793 00000 n +0001060857 00000 n +0001060921 00000 n +0001061048 00000 n +0001061112 00000 n +0001061240 00000 n +0001066371 00000 n +0001066627 00000 n +0001066499 00000 n +0001063290 00000 n +0001063689 00000 n +0001063888 00000 n +0001064443 00000 n +0001063126 00000 n +0001061484 00000 n +0001064060 00000 n +0001064123 00000 n +0001064251 00000 n +0001063490 00000 n +0001064379 00000 n +0001065981 00000 n +0001066754 00000 n +0001065844 00000 n +0001064559 00000 n +0001066180 00000 n +0001066307 00000 n +0001066435 00000 n +0001066563 00000 n +0001066690 00000 n +0001068717 00000 n +0001068889 00000 n +0001069089 00000 n +0001071748 00000 n +0001069863 00000 n +0001068562 00000 n +0001066870 00000 n +0001069289 00000 n +0001069416 00000 n +0001069544 00000 n +0001069672 00000 n +0002138629 00000 n +0001071895 00000 n +0001072053 00000 n +0001072422 00000 n +0001071593 00000 n +0001070007 00000 n +0001072232 00000 n +0001072295 00000 n +0001154581 00000 n +0001074787 00000 n +0001074936 00000 n +0001075149 00000 n +0001074641 00000 n +0001072552 00000 n +0001075086 00000 n +0001076920 00000 n +0001079817 00000 n +0001077133 00000 n +0001076783 00000 n +0001075265 00000 n +0001077070 00000 n +0001079966 00000 n +0001080114 00000 n +0001082969 00000 n +0001083365 00000 n +0001083563 00000 n +0001083761 00000 n +0001080527 00000 n +0001079662 00000 n +0001077249 00000 n +0001080276 00000 n +0001084157 00000 n +0001084355 00000 n +0001084553 00000 n +0001084751 00000 n +0001084947 00000 n +0001085145 00000 n +0001085536 00000 n +0001085733 00000 n +0001086123 00000 n +0001086321 00000 n +0001086517 00000 n +0001086715 00000 n +0001086910 00000 n +0001087108 00000 n +0001087498 00000 n +0001087695 00000 n +0001088086 00000 n +0001088283 00000 n +0001088479 00000 n +0001088676 00000 n +0001088874 00000 n +0001089072 00000 n +0001089270 00000 n +0001089467 00000 n +0001089664 00000 n +0001089861 00000 n +0001090056 00000 n +0001090254 00000 n +0001090452 00000 n +0001090649 00000 n +0001090845 00000 n +0001093250 00000 n +0001093446 00000 n +0001093644 00000 n +0001093840 00000 n +0001094038 00000 n +0001094234 00000 n +0001091233 00000 n +0001082472 00000 n +0001080671 00000 n +0001091043 00000 n +0001083167 00000 n +0001083959 00000 n +0001091106 00000 n +0001085340 00000 n +0001085927 00000 n +0001087303 00000 n +0001087890 00000 n +0001091170 00000 n +0001102798 00000 n +0001106349 00000 n +0001102672 00000 n +0001104906 00000 n +0001106605 00000 n +0001103182 00000 n +0001104650 00000 n +0001103054 00000 n +0001104522 00000 n +0001104778 00000 n +0001102926 00000 n +0001104394 00000 n +0001101330 00000 n +0001106923 00000 n +0001106477 00000 n +0001109325 00000 n +0001108686 00000 n +0001108560 00000 n +0001094432 00000 n +0001094628 00000 n +0001094826 00000 n +0001095022 00000 n +0001095220 00000 n +0001095415 00000 n +0001095612 00000 n +0001095808 00000 n +0001096006 00000 n +0001096204 00000 n +0001096400 00000 n +0001096597 00000 n +0001096795 00000 n +0001096992 00000 n +0001097190 00000 n +0001097388 00000 n +0001097586 00000 n +0001097783 00000 n +0001097981 00000 n +0001098178 00000 n +0001098376 00000 n +0001098574 00000 n +0001098772 00000 n +0001098968 00000 n +0001099165 00000 n +0001099362 00000 n +0001099559 00000 n +0001099757 00000 n +0001099955 00000 n +0001100151 00000 n +0001100349 00000 n +0001100547 00000 n +0001100745 00000 n +0001100943 00000 n +0001101522 00000 n +0001092762 00000 n +0001091377 00000 n +0001101140 00000 n +0001101203 00000 n +0001101394 00000 n +0002138754 00000 n +0001109197 00000 n +0001107049 00000 n +0001108814 00000 n +0001107177 00000 n +0001108942 00000 n +0001107305 00000 n +0001109069 00000 n +0001113452 00000 n +0001113580 00000 n +0001113708 00000 n +0001113962 00000 n +0001118362 00000 n +0001118618 00000 n +0001118746 00000 n +0001124056 00000 n +0001124184 00000 n +0001124312 00000 n +0001124440 00000 n +0001128961 00000 n +0001129089 00000 n +0001129217 00000 n +0001129345 00000 n +0001133636 00000 n +0001133764 00000 n +0001133892 00000 n +0001138442 00000 n +0001138570 00000 n +0001138697 00000 n +0001138825 00000 n +0001143785 00000 n +0001143913 00000 n +0001113836 00000 n +0001118490 00000 n +0001103246 00000 n +0001102429 00000 n +0001101638 00000 n +0001102545 00000 n +0001102608 00000 n +0001102735 00000 n +0001102862 00000 n +0001102990 00000 n +0001103118 00000 n +0001104970 00000 n +0001104151 00000 n +0001103348 00000 n +0001104267 00000 n +0001104330 00000 n +0001104458 00000 n +0001104586 00000 n +0001104714 00000 n +0001104842 00000 n +0001107369 00000 n +0001106106 00000 n +0001105072 00000 n +0001106222 00000 n +0001106285 00000 n +0001106413 00000 n +0001106541 00000 n +0001106668 00000 n +0001106796 00000 n +0001106986 00000 n +0001107113 00000 n +0001107241 00000 n +0001111550 00000 n +0001109453 00000 n +0001108317 00000 n +0001107485 00000 n +0001108433 00000 n +0001108496 00000 n +0001108623 00000 n +0001108750 00000 n +0001108878 00000 n +0001109005 00000 n +0001109133 00000 n +0001109261 00000 n +0001109389 00000 n +0001111748 00000 n +0001111946 00000 n +0001112144 00000 n +0001112342 00000 n +0001112540 00000 n +0001112736 00000 n +0001112934 00000 n +0001113131 00000 n +0001116270 00000 n +0001116468 00000 n +0001116666 00000 n +0001114026 00000 n +0001111341 00000 n +0001109569 00000 n +0001113326 00000 n +0001113516 00000 n +0001113644 00000 n +0001113772 00000 n +0001113899 00000 n +0001116863 00000 n +0001117061 00000 n +0001117258 00000 n +0001117456 00000 n +0001117652 00000 n +0001117847 00000 n +0001118040 00000 n +0001121168 00000 n +0001118810 00000 n +0001116052 00000 n +0001114170 00000 n +0001118235 00000 n +0001118298 00000 n +0001118426 00000 n +0001118554 00000 n +0001118682 00000 n +0002138879 00000 n +0001121366 00000 n +0001121564 00000 n +0001121760 00000 n +0001121958 00000 n +0001122156 00000 n +0001122354 00000 n +0001122551 00000 n +0001122749 00000 n +0001122944 00000 n +0001123141 00000 n +0001123339 00000 n +0001123536 00000 n +0001123732 00000 n +0001124504 00000 n +0001120914 00000 n +0001118968 00000 n +0001123929 00000 n +0001123992 00000 n +0001124120 00000 n +0001124248 00000 n +0001124376 00000 n +0001126671 00000 n +0001126868 00000 n +0001127064 00000 n +0001127262 00000 n +0001127460 00000 n +0001127655 00000 n +0001127851 00000 n +0001128049 00000 n +0001128247 00000 n +0001128443 00000 n +0001128638 00000 n +0001129409 00000 n +0001126444 00000 n +0001124648 00000 n +0001128834 00000 n +0001128897 00000 n +0001129025 00000 n +0001129153 00000 n +0001129281 00000 n +0001131536 00000 n +0001131734 00000 n +0001131931 00000 n +0001132127 00000 n +0001132325 00000 n +0001132523 00000 n +0001132719 00000 n +0001132916 00000 n +0001133114 00000 n +0001133312 00000 n +0001136347 00000 n +0001136545 00000 n +0001133956 00000 n +0001131318 00000 n +0001129567 00000 n +0001133509 00000 n +0001133572 00000 n +0001133700 00000 n +0001133828 00000 n +0001136742 00000 n +0001136940 00000 n +0001137137 00000 n +0001137332 00000 n +0001137529 00000 n +0001137724 00000 n +0001137921 00000 n +0001138119 00000 n +0001138889 00000 n +0001136129 00000 n +0001134114 00000 n +0001138315 00000 n +0001138378 00000 n +0001138506 00000 n +0001138633 00000 n +0001138761 00000 n +0001141488 00000 n +0001141686 00000 n +0001141882 00000 n +0001142080 00000 n +0001142278 00000 n +0001142476 00000 n +0001142672 00000 n +0001142870 00000 n +0001143068 00000 n +0001143264 00000 n +0001143460 00000 n +0001144168 00000 n +0001141261 00000 n +0001139033 00000 n +0001143658 00000 n +0001143721 00000 n +0001143849 00000 n +0001143977 00000 n +0001144041 00000 n +0001145671 00000 n +0001145428 00000 n +0001144326 00000 n +0001145544 00000 n +0001145607 00000 n +0002139004 00000 n +0001149584 00000 n +0001149405 00000 n +0001145773 00000 n +0001149521 00000 n +0001151644 00000 n +0001151338 00000 n +0001149686 00000 n +0001151454 00000 n +0001154645 00000 n +0001154402 00000 n +0001151774 00000 n +0001154518 00000 n +0001157255 00000 n +0001157410 00000 n +0001157603 00000 n +0001157805 00000 n +0001157998 00000 n +0001158189 00000 n +0001160290 00000 n +0001158606 00000 n +0001157073 00000 n +0001154775 00000 n +0001158354 00000 n +0001158543 00000 n +0001160483 00000 n +0001160676 00000 n +0001160869 00000 n +0001161062 00000 n +0001161255 00000 n +0001162276 00000 n +0001160108 00000 n +0001158764 00000 n +0001161446 00000 n +0001161509 00000 n +0001161573 00000 n +0001161764 00000 n +0001161828 00000 n +0001161892 00000 n +0001161956 00000 n +0001162020 00000 n +0001162084 00000 n +0001162148 00000 n +0001162212 00000 n +0001164454 00000 n +0001164648 00000 n +0001165035 00000 n +0001165544 00000 n +0001164290 00000 n +0001162392 00000 n +0001165228 00000 n +0001165291 00000 n +0001165355 00000 n +0001164842 00000 n +0002139129 00000 n +0001168320 00000 n +0001168194 00000 n +0001168066 00000 n +0001167291 00000 n +0001167486 00000 n +0001167681 00000 n +0001168636 00000 n +0001167136 00000 n +0001165674 00000 n +0001167876 00000 n +0001167939 00000 n +0001168130 00000 n +0001168257 00000 n +0001168383 00000 n +0001168447 00000 n +0001170431 00000 n +0001170579 00000 n +0001170728 00000 n +0001170925 00000 n +0001171122 00000 n +0001171319 00000 n +0001171516 00000 n +0001171713 00000 n +0001171910 00000 n +0001172998 00000 n +0001170222 00000 n +0001168766 00000 n +0001172105 00000 n +0001172168 00000 n +0001172295 00000 n +0001172359 00000 n +0001172423 00000 n +0001172487 00000 n +0001172551 00000 n +0001172614 00000 n +0001172678 00000 n +0001172742 00000 n +0001172806 00000 n +0001172870 00000 n +0001172934 00000 n +0001175251 00000 n +0001175568 00000 n +0001175008 00000 n +0001173114 00000 n +0001175124 00000 n +0001175187 00000 n +0001175315 00000 n +0001175379 00000 n +0001177325 00000 n +0001177523 00000 n +0001177721 00000 n +0001177919 00000 n +0001178115 00000 n +0001178312 00000 n +0001178508 00000 n +0001178706 00000 n +0001178904 00000 n +0001179102 00000 n +0001179300 00000 n +0001179497 00000 n +0001179695 00000 n +0001180274 00000 n +0001177080 00000 n +0001175698 00000 n +0001179892 00000 n +0001179955 00000 n +0001180082 00000 n +0001180146 00000 n +0001180210 00000 n +0001182902 00000 n +0001184660 00000 n +0001185044 00000 n +0001182779 00000 n +0001184404 00000 n +0001184916 00000 n +0001184276 00000 n +0001184532 00000 n +0001184788 00000 n +0001185172 00000 n +0001183029 00000 n +0001182408 00000 n +0001180390 00000 n +0001182524 00000 n +0001182587 00000 n +0001182715 00000 n +0001182842 00000 n +0001182966 00000 n +0001185300 00000 n +0001184097 00000 n +0001183145 00000 n +0001184213 00000 n +0001184340 00000 n +0001184468 00000 n +0001184596 00000 n +0001184724 00000 n +0001184852 00000 n +0001184980 00000 n +0001185108 00000 n +0001185236 00000 n +0002139254 00000 n +0001187717 00000 n +0001187348 00000 n +0001185416 00000 n +0001187464 00000 n +0001187527 00000 n +0001189484 00000 n +0001189305 00000 n +0001187847 00000 n +0001189421 00000 n +0001191422 00000 n +0001191619 00000 n +0001191816 00000 n +0001192013 00000 n +0001192210 00000 n +0001192406 00000 n +0001193240 00000 n +0001191240 00000 n +0001189600 00000 n +0001192603 00000 n +0001192666 00000 n +0001192857 00000 n +0001192921 00000 n +0001192984 00000 n +0001193048 00000 n +0001193112 00000 n +0001193176 00000 n +0001195531 00000 n +0001195404 00000 n +0001195849 00000 n +0001195161 00000 n +0001193342 00000 n +0001195277 00000 n +0001195340 00000 n +0001195468 00000 n +0001195595 00000 n +0001195659 00000 n +0001197931 00000 n +0001198126 00000 n +0001198320 00000 n +0001198516 00000 n +0001198712 00000 n +0001198908 00000 n +0001199102 00000 n +0001199298 00000 n +0001199494 00000 n +0001199687 00000 n +0001199879 00000 n +0001200073 00000 n +0001200267 00000 n +0001200462 00000 n +0001200655 00000 n +0001200851 00000 n +0001201365 00000 n +0001197659 00000 n +0001195979 00000 n +0001201047 00000 n +0001201110 00000 n +0001201237 00000 n +0001201301 00000 n +0001205140 00000 n +0001203128 00000 n +0001203256 00000 n +0001203384 00000 n +0001202949 00000 n +0001201523 00000 n +0001203065 00000 n +0001203192 00000 n +0001203320 00000 n +0002139379 00000 n +0001204874 00000 n +0001205332 00000 n +0001204737 00000 n +0001203528 00000 n +0001205077 00000 n +0001205204 00000 n +0001205268 00000 n +0001207646 00000 n +0001207805 00000 n +0001208001 00000 n +0001208197 00000 n +0001208843 00000 n +0001207482 00000 n +0001205476 00000 n +0001208399 00000 n +0001208588 00000 n +0001208715 00000 n +0001208779 00000 n +0001212986 00000 n +0001215679 00000 n +0001211141 00000 n +0001211336 00000 n +0001211532 00000 n +0001211735 00000 n +0001211930 00000 n +0001212125 00000 n +0001212328 00000 n +0001212524 00000 n +0001212727 00000 n +0001213367 00000 n +0001210932 00000 n +0001209001 00000 n +0001212923 00000 n +0001213049 00000 n +0001213113 00000 n +0001213303 00000 n +0001215551 00000 n +0001215228 00000 n +0001216248 00000 n +0001215091 00000 n +0001213511 00000 n +0001215425 00000 n +0001215615 00000 n +0001215743 00000 n +0001215803 00000 n +0001215993 00000 n +0001216120 00000 n +0001216184 00000 n +0001218667 00000 n +0001218299 00000 n +0001216392 00000 n +0001218415 00000 n +0001218478 00000 n +0001220363 00000 n +0001220561 00000 n +0001220759 00000 n +0001220957 00000 n +0001221154 00000 n +0001221351 00000 n +0001221504 00000 n +0001222166 00000 n +0001220172 00000 n +0001218797 00000 n +0001221658 00000 n +0001221721 00000 n +0001221848 00000 n +0001221912 00000 n +0001221976 00000 n +0001222039 00000 n +0001222102 00000 n +0002139504 00000 n +0001225811 00000 n +0001225939 00000 n +0001223672 00000 n +0001223826 00000 n +0001223980 00000 n +0001224134 00000 n +0001224327 00000 n +0001224521 00000 n +0001224715 00000 n +0001224909 00000 n +0001225103 00000 n +0001225297 00000 n +0001225491 00000 n +0001227764 00000 n +0001227958 00000 n +0001228152 00000 n +0001226321 00000 n +0001223445 00000 n +0001222282 00000 n +0001225684 00000 n +0001225747 00000 n +0001225875 00000 n +0001226003 00000 n +0001226067 00000 n +0001226257 00000 n +0001239645 00000 n +0001235310 00000 n +0001234798 00000 n +0001234926 00000 n +0001234542 00000 n +0001234670 00000 n +0001234414 00000 n +0001232729 00000 n +0001228346 00000 n +0001228540 00000 n +0001228733 00000 n +0001228927 00000 n +0001229120 00000 n +0001229314 00000 n +0001229508 00000 n +0001229702 00000 n +0001229896 00000 n +0001230088 00000 n +0001230282 00000 n +0001230474 00000 n +0001230668 00000 n +0001230862 00000 n +0001231056 00000 n +0001231249 00000 n +0001231442 00000 n +0001231636 00000 n +0001231829 00000 n +0001232023 00000 n +0001232217 00000 n +0001233049 00000 n +0001227420 00000 n +0001226451 00000 n +0001232411 00000 n +0001232474 00000 n +0001232601 00000 n +0001232665 00000 n +0001232793 00000 n +0001232857 00000 n +0001232921 00000 n +0001232985 00000 n +0001234158 00000 n +0001234286 00000 n +0001239517 00000 n +0001237604 00000 n +0001237732 00000 n +0001237858 00000 n +0001239389 00000 n +0001237349 00000 n +0001236582 00000 n +0001236966 00000 n +0001235435 00000 n +0001236710 00000 n +0001236838 00000 n +0001237094 00000 n +0001237221 00000 n +0001237476 00000 n +0001235054 00000 n +0001239901 00000 n +0001239773 00000 n +0001235182 00000 n +0001240029 00000 n +0001235499 00000 n +0001233915 00000 n +0001233165 00000 n +0001234031 00000 n +0001234094 00000 n +0001234222 00000 n +0001234350 00000 n +0001234478 00000 n +0001234606 00000 n +0001234734 00000 n +0001234862 00000 n +0001234990 00000 n +0001235118 00000 n +0001235246 00000 n +0001235372 00000 n +0001237922 00000 n +0001236339 00000 n +0001235601 00000 n +0001236455 00000 n +0001236518 00000 n +0001236646 00000 n +0001236774 00000 n +0001236902 00000 n +0001237030 00000 n +0001237157 00000 n +0001237285 00000 n +0001237413 00000 n +0001237540 00000 n +0001237668 00000 n +0001237795 00000 n +0001240347 00000 n +0001239146 00000 n +0001238024 00000 n +0001239262 00000 n +0001239325 00000 n +0001239453 00000 n +0001239581 00000 n +0001239709 00000 n +0001239837 00000 n +0001239965 00000 n +0001240093 00000 n +0001240157 00000 n +0001242679 00000 n +0001242880 00000 n +0001243081 00000 n +0001243283 00000 n +0001245298 00000 n +0001243738 00000 n +0001242515 00000 n +0001240477 00000 n +0001243483 00000 n +0001243546 00000 n +0001243610 00000 n +0001243674 00000 n +0002139629 00000 n +0001245500 00000 n +0001245702 00000 n +0001245904 00000 n +0001246106 00000 n +0001246307 00000 n +0001246479 00000 n +0001246650 00000 n +0001246822 00000 n +0001247695 00000 n +0001245089 00000 n +0001243854 00000 n +0001246994 00000 n +0001247184 00000 n +0001247312 00000 n +0001247439 00000 n +0001247567 00000 n +0001249216 00000 n +0001249388 00000 n +0001249567 00000 n +0001249739 00000 n +0001249911 00000 n +0001252853 00000 n +0001250593 00000 n +0001249043 00000 n +0001247825 00000 n +0001250083 00000 n +0001250146 00000 n +0001250274 00000 n +0001250402 00000 n +0001250529 00000 n +0001253025 00000 n +0001253189 00000 n +0001253349 00000 n +0001257053 00000 n +0001257211 00000 n +0001254079 00000 n +0001252689 00000 n +0001250723 00000 n +0001253508 00000 n +0001253698 00000 n +0001253762 00000 n +0001253889 00000 n +0001306802 00000 n +0001469133 00000 n +0001257369 00000 n +0001257529 00000 n +0001257689 00000 n +0001257849 00000 n +0001258008 00000 n +0001258167 00000 n +0001258326 00000 n +0001258515 00000 n +0001258673 00000 n +0001258836 00000 n +0001258996 00000 n +0001259154 00000 n +0001259567 00000 n +0001256799 00000 n +0001254223 00000 n +0001259314 00000 n +0001259377 00000 n +0001549423 00000 n +0001262837 00000 n +0001262274 00000 n +0001259669 00000 n +0001262390 00000 n +0001262453 00000 n +0001262581 00000 n +0001262709 00000 n +0001262773 00000 n +0001266188 00000 n +0001266536 00000 n +0001266051 00000 n +0001262953 00000 n +0001266347 00000 n +0001266410 00000 n +0001266472 00000 n +0002139754 00000 n +0001269828 00000 n +0001270296 00000 n +0001269691 00000 n +0001266652 00000 n +0001269977 00000 n +0001270040 00000 n +0001270104 00000 n +0001270168 00000 n +0001272540 00000 n +0001275133 00000 n +0001273046 00000 n +0001272403 00000 n +0001270426 00000 n +0001272727 00000 n +0001272918 00000 n +0001278012 00000 n +0001277768 00000 n +0001278139 00000 n +0001274996 00000 n +0001273148 00000 n +0001277949 00000 n +0001278076 00000 n +0001277371 00000 n +0001277644 00000 n +0001277692 00000 n +0001281197 00000 n +0001280612 00000 n +0001280812 00000 n +0001280976 00000 n +0001281261 00000 n +0001280457 00000 n +0001278270 00000 n +0001281134 00000 n +0001283054 00000 n +0001282811 00000 n +0001281377 00000 n +0001282927 00000 n +0001285256 00000 n +0001284950 00000 n +0001283142 00000 n +0001285066 00000 n +0001285129 00000 n +0002139879 00000 n +0001287858 00000 n +0001287551 00000 n +0001285358 00000 n +0001287667 00000 n +0001287730 00000 n +0001289309 00000 n +0001289130 00000 n +0001287960 00000 n +0001289246 00000 n +0001290890 00000 n +0001290711 00000 n +0001289397 00000 n +0001290827 00000 n +0001292470 00000 n +0001292291 00000 n +0001290978 00000 n +0001292407 00000 n +0001293946 00000 n +0001293767 00000 n +0001292558 00000 n +0001293883 00000 n +0001296032 00000 n +0001295725 00000 n +0001294034 00000 n +0001295841 00000 n +0001295904 00000 n +0002140004 00000 n +0001297491 00000 n +0001297312 00000 n +0001296134 00000 n +0001297428 00000 n +0001299836 00000 n +0001299529 00000 n +0001297593 00000 n +0001299645 00000 n +0001299708 00000 n +0001302103 00000 n +0001301800 00000 n +0001299938 00000 n +0001301916 00000 n +0001301979 00000 n +0001303084 00000 n +0001302905 00000 n +0001302205 00000 n +0001303021 00000 n +0001304399 00000 n +0001304220 00000 n +0001303172 00000 n +0001304336 00000 n +0001306448 00000 n +0001308017 00000 n +0001307058 00000 n +0001306311 00000 n +0001304487 00000 n +0001306611 00000 n +0001306674 00000 n +0001306930 00000 n +0002140129 00000 n +0001371722 00000 n +0001370096 00000 n +0001307901 00000 n +0001307160 00000 n +0001369969 00000 n +0001370032 00000 n +0001308385 00000 n +0001308550 00000 n +0001308598 00000 n +0001411647 00000 n +0001371606 00000 n +0001370213 00000 n +0001411520 00000 n +0001411583 00000 n +0001372096 00000 n +0001372261 00000 n +0001372309 00000 n +0001413725 00000 n +0001454084 00000 n +0001413609 00000 n +0001411764 00000 n +0001453957 00000 n +0001454020 00000 n +0001414100 00000 n +0001414265 00000 n +0001414313 00000 n +0001456741 00000 n +0001457358 00000 n +0001456604 00000 n +0001454215 00000 n +0001456915 00000 n +0001456978 00000 n +0001457104 00000 n +0001457232 00000 n +0001457295 00000 n +0001469005 00000 n +0001460489 00000 n +0001460641 00000 n +0001460801 00000 n +0001460972 00000 n +0001461398 00000 n +0001460325 00000 n +0001457446 00000 n +0001461143 00000 n +0001461206 00000 n +0001461270 00000 n +0001461334 00000 n +0001465048 00000 n +0001465216 00000 n +0001465412 00000 n +0001465895 00000 n +0001464893 00000 n +0001461528 00000 n +0001465576 00000 n +0001465639 00000 n +0001465703 00000 n +0001465767 00000 n +0001465831 00000 n +0002140254 00000 n +0001468714 00000 n +0001469197 00000 n +0001468577 00000 n +0001466025 00000 n +0001468878 00000 n +0001468941 00000 n +0001471448 00000 n +0001473590 00000 n +0001471864 00000 n +0001471311 00000 n +0001469313 00000 n +0001471609 00000 n +0001471736 00000 n +0001524852 00000 n +0001473474 00000 n +0001471980 00000 n +0001524598 00000 n +0001524661 00000 n +0001524725 00000 n +0001473967 00000 n +0001474132 00000 n +0001474180 00000 n +0001528423 00000 n +0001528617 00000 n +0001528813 00000 n +0001528965 00000 n +0001529161 00000 n +0001529356 00000 n +0001529870 00000 n +0001528241 00000 n +0001524997 00000 n +0001529551 00000 n +0001529614 00000 n +0001529742 00000 n +0001529806 00000 n +0001533005 00000 n +0001533200 00000 n +0001533364 00000 n +0001533559 00000 n +0001533754 00000 n +0001533949 00000 n +0001534144 00000 n +0001534339 00000 n +0001534724 00000 n +0001532805 00000 n +0001529986 00000 n +0001534533 00000 n +0001534596 00000 n +0001534660 00000 n +0001537502 00000 n +0001537997 00000 n +0001537365 00000 n +0001534840 00000 n +0001537680 00000 n +0001537743 00000 n +0001537806 00000 n +0001537869 00000 n +0001537933 00000 n +0002140379 00000 n +0001541079 00000 n +0001541274 00000 n +0001544965 00000 n +0001545158 00000 n +0001541786 00000 n +0001540933 00000 n +0001538099 00000 n +0001541469 00000 n +0001541532 00000 n +0001541595 00000 n +0001541659 00000 n +0001541722 00000 n +0001545352 00000 n +0001545527 00000 n +0001546024 00000 n +0001544801 00000 n +0001541902 00000 n +0001545705 00000 n +0001545768 00000 n +0001545832 00000 n +0001545896 00000 n +0001545960 00000 n +0001549025 00000 n +0001549676 00000 n +0001548888 00000 n +0001546154 00000 n +0001549232 00000 n +0001549295 00000 n +0001549548 00000 n +0001553069 00000 n +0001552634 00000 n +0001549806 00000 n +0001552750 00000 n +0001552813 00000 n +0001552941 00000 n +0001555182 00000 n +0001555401 00000 n +0001555045 00000 n +0001553213 00000 n +0001555338 00000 n +0001557894 00000 n +0001557715 00000 n +0001555517 00000 n +0001557831 00000 n +0002140504 00000 n +0001560361 00000 n +0001560182 00000 n +0001558010 00000 n +0001560298 00000 n +0001562152 00000 n +0001562348 00000 n +0001562536 00000 n +0001563363 00000 n +0001561997 00000 n +0001560477 00000 n +0001562724 00000 n +0001563043 00000 n +0001563171 00000 n +0001563235 00000 n +0001563299 00000 n +0001564419 00000 n +0001564572 00000 n +0001564768 00000 n +0001564958 00000 n +0001565148 00000 n +0001565300 00000 n +0001566581 00000 n +0001564237 00000 n +0001563465 00000 n +0001565496 00000 n +0001565559 00000 n +0001565815 00000 n +0001565943 00000 n +0001566007 00000 n +0001566071 00000 n +0001566135 00000 n +0001566453 00000 n +0001568045 00000 n +0001568241 00000 n +0001568438 00000 n +0001568635 00000 n +0001568832 00000 n +0001569029 00000 n +0001569226 00000 n +0001569420 00000 n +0001569613 00000 n +0001569808 00000 n +0001570001 00000 n +0001570196 00000 n +0001570390 00000 n +0001570586 00000 n +0001570780 00000 n +0001570976 00000 n +0001571169 00000 n +0001571362 00000 n +0001572963 00000 n +0001567755 00000 n +0001566669 00000 n +0001571556 00000 n +0001572131 00000 n +0001572195 00000 n +0001572451 00000 n +0001572515 00000 n +0001572579 00000 n +0001572643 00000 n +0001572707 00000 n +0001572771 00000 n +0001572835 00000 n +0001572899 00000 n +0001574569 00000 n +0001574761 00000 n +0001574955 00000 n +0001575149 00000 n +0001575343 00000 n +0001575536 00000 n +0001575730 00000 n +0001575924 00000 n +0001576116 00000 n +0001576309 00000 n +0001576502 00000 n +0001576696 00000 n +0001576890 00000 n +0001577084 00000 n +0001577278 00000 n +0001577472 00000 n +0001578113 00000 n +0001574297 00000 n +0001573065 00000 n +0001577666 00000 n +0001577729 00000 n +0001577793 00000 n +0001577857 00000 n +0001577921 00000 n +0001577985 00000 n +0001578049 00000 n +0001579699 00000 n +0001579072 00000 n +0001578215 00000 n +0001579188 00000 n +0001579315 00000 n +0001579379 00000 n +0001579443 00000 n +0001579507 00000 n +0001579571 00000 n +0001579635 00000 n +0002140629 00000 n +0001581084 00000 n +0001580585 00000 n +0001579787 00000 n +0001580701 00000 n +0001580764 00000 n +0001580828 00000 n +0001580892 00000 n +0001580956 00000 n +0001581020 00000 n +0001582542 00000 n +0001582043 00000 n +0001581172 00000 n +0001582159 00000 n +0001582222 00000 n +0001582286 00000 n +0001582350 00000 n +0001582414 00000 n +0001582478 00000 n +0001584015 00000 n +0001583517 00000 n +0001582630 00000 n +0001583633 00000 n +0001583696 00000 n +0001583760 00000 n +0001583823 00000 n +0001583887 00000 n +0001583951 00000 n +0001587264 00000 n +0001587459 00000 n +0001587653 00000 n +0001587849 00000 n +0001585419 00000 n +0001584858 00000 n +0001584103 00000 n +0001584974 00000 n +0001585037 00000 n +0001585101 00000 n +0001585164 00000 n +0001585227 00000 n +0001585291 00000 n +0001588045 00000 n +0001588241 00000 n +0001588435 00000 n +0001588631 00000 n +0001588827 00000 n +0001589022 00000 n +0001589216 00000 n +0001589412 00000 n +0001589608 00000 n +0001589802 00000 n +0001589994 00000 n +0001590189 00000 n +0001590384 00000 n +0001590574 00000 n +0001590763 00000 n +0001590952 00000 n +0001591142 00000 n +0001591332 00000 n +0001591522 00000 n +0001591712 00000 n +0001591901 00000 n +0001592091 00000 n +0001592281 00000 n +0001592470 00000 n +0001592660 00000 n +0001592850 00000 n +0001593040 00000 n +0001593229 00000 n +0001593418 00000 n +0001595377 00000 n +0001594246 00000 n +0001586839 00000 n +0001585507 00000 n +0001593608 00000 n +0001593799 00000 n +0001594054 00000 n +0001594118 00000 n +0001594182 00000 n +0001595567 00000 n +0001595757 00000 n +0001595947 00000 n +0001596143 00000 n +0001596339 00000 n +0001596542 00000 n +0001596738 00000 n +0001596940 00000 n +0001597135 00000 n +0001597330 00000 n +0001598738 00000 n +0001595150 00000 n +0001594348 00000 n +0001597524 00000 n +0001597778 00000 n +0001597842 00000 n +0001597906 00000 n +0001597970 00000 n +0001598226 00000 n +0001598290 00000 n +0001598354 00000 n +0001598610 00000 n +0001598674 00000 n +0002140754 00000 n +0001599795 00000 n +0001601653 00000 n +0001599658 00000 n +0001598826 00000 n +0001599990 00000 n +0001600053 00000 n +0001600117 00000 n +0001600373 00000 n +0001601205 00000 n +0001601269 00000 n +0001601333 00000 n +0001601397 00000 n +0001603188 00000 n +0001603388 00000 n +0001603586 00000 n +0001603784 00000 n +0001603983 00000 n +0001604183 00000 n +0001604382 00000 n +0001604582 00000 n +0001604779 00000 n +0001604979 00000 n +0001605179 00000 n +0001605378 00000 n +0001605578 00000 n +0001605733 00000 n +0001605930 00000 n +0001606127 00000 n +0001606325 00000 n +0001606523 00000 n +0001606721 00000 n +0001606918 00000 n +0001607115 00000 n +0001607313 00000 n +0001607511 00000 n +0001607707 00000 n +0001607905 00000 n +0001608103 00000 n +0001610062 00000 n +0001610259 00000 n +0001610457 00000 n +0001610654 00000 n +0001610852 00000 n +0001608684 00000 n +0001602826 00000 n +0001601755 00000 n +0001608301 00000 n +0001608364 00000 n +0001608620 00000 n +0001611050 00000 n +0001611247 00000 n +0001611445 00000 n +0001611642 00000 n +0001611840 00000 n +0001612038 00000 n +0001612235 00000 n +0001612433 00000 n +0001612631 00000 n +0001612827 00000 n +0001613025 00000 n +0001613223 00000 n +0001613421 00000 n +0001613619 00000 n +0001613817 00000 n +0001614014 00000 n +0001614212 00000 n +0001614410 00000 n +0001614607 00000 n +0001614805 00000 n +0001615003 00000 n +0001615201 00000 n +0001615399 00000 n +0001615597 00000 n +0001615794 00000 n +0001615992 00000 n +0001616190 00000 n +0001616387 00000 n +0001616585 00000 n +0001616783 00000 n +0001616981 00000 n +0001617179 00000 n +0001617377 00000 n +0001617574 00000 n +0001617772 00000 n +0001617970 00000 n +0001618167 00000 n +0001618365 00000 n +0001618563 00000 n +0001618760 00000 n +0001618957 00000 n +0001619154 00000 n +0001619351 00000 n +0001619549 00000 n +0001619747 00000 n +0001621291 00000 n +0001621488 00000 n +0001621686 00000 n +0001621884 00000 n +0001622082 00000 n +0001622280 00000 n +0001620004 00000 n +0001609484 00000 n +0001608800 00000 n +0001619941 00000 n +0001622478 00000 n +0001622676 00000 n +0001622874 00000 n +0001623072 00000 n +0001623270 00000 n +0001623468 00000 n +0001623666 00000 n +0001623864 00000 n +0001624061 00000 n +0001624259 00000 n +0001624457 00000 n +0001624655 00000 n +0001624853 00000 n +0001625051 00000 n +0001625248 00000 n +0001625446 00000 n +0001625644 00000 n +0001625841 00000 n +0001626039 00000 n +0001626237 00000 n +0001626435 00000 n +0001626633 00000 n +0001626831 00000 n +0001627028 00000 n +0001627226 00000 n +0001627424 00000 n +0001627621 00000 n +0001627817 00000 n +0001628015 00000 n +0001628210 00000 n +0001628598 00000 n +0001620839 00000 n +0001620092 00000 n +0001628407 00000 n +0001628470 00000 n +0001629983 00000 n +0001630177 00000 n +0001630371 00000 n +0001630565 00000 n +0001630758 00000 n +0001630951 00000 n +0001631145 00000 n +0001631339 00000 n +0001631533 00000 n +0001631727 00000 n +0001631921 00000 n +0001632115 00000 n +0001632309 00000 n +0001632503 00000 n +0001632697 00000 n +0001632891 00000 n +0001633085 00000 n +0001633279 00000 n +0001633473 00000 n +0001635725 00000 n +0001635919 00000 n +0001634690 00000 n +0001629684 00000 n +0001628700 00000 n +0001633667 00000 n +0001634050 00000 n +0001634114 00000 n +0001634178 00000 n +0001634242 00000 n +0001634306 00000 n +0001634562 00000 n +0001634626 00000 n +0001636112 00000 n +0001636306 00000 n +0001636500 00000 n +0001636693 00000 n +0001636887 00000 n +0001637081 00000 n +0001637274 00000 n +0001637467 00000 n +0001637661 00000 n +0001637855 00000 n +0001638048 00000 n +0001638242 00000 n +0001638436 00000 n +0001638630 00000 n +0001638822 00000 n +0001639016 00000 n +0001639210 00000 n +0001639403 00000 n +0001639597 00000 n +0001639791 00000 n +0001641607 00000 n +0001640112 00000 n +0001635399 00000 n +0001634792 00000 n +0001639985 00000 n +0002140879 00000 n +0001640776 00000 n +0001640533 00000 n +0001640200 00000 n +0001640649 00000 n +0001644291 00000 n +0001641470 00000 n +0001640850 00000 n +0001641803 00000 n +0001644228 00000 n +0001645874 00000 n +0001646071 00000 n +0001646269 00000 n +0001646467 00000 n +0001646663 00000 n +0001646861 00000 n +0001647251 00000 n +0001647449 00000 n +0001647840 00000 n +0001648038 00000 n +0001651347 00000 n +0001651545 00000 n +0001651740 00000 n +0001651938 00000 n +0001652328 00000 n +0001652525 00000 n +0001649449 00000 n +0001645638 00000 n +0001644379 00000 n +0001648234 00000 n +0001648489 00000 n +0001648553 00000 n +0001648617 00000 n +0001648681 00000 n +0001648745 00000 n +0001648809 00000 n +0001648873 00000 n +0001648937 00000 n +0001649001 00000 n +0001647056 00000 n +0001647644 00000 n +0001649065 00000 n +0001649129 00000 n +0001649193 00000 n +0001649257 00000 n +0001649321 00000 n +0001649385 00000 n +0001652916 00000 n +0001653113 00000 n +0001653309 00000 n +0001653507 00000 n +0001653704 00000 n +0001653902 00000 n +0001654100 00000 n +0001654298 00000 n +0001654496 00000 n +0001654693 00000 n +0001654888 00000 n +0001655086 00000 n +0001655284 00000 n +0001655482 00000 n +0001655677 00000 n +0001655874 00000 n +0001656070 00000 n +0001656268 00000 n +0001656464 00000 n +0001656662 00000 n +0001656857 00000 n +0001657054 00000 n +0001657250 00000 n +0001657448 00000 n +0001657644 00000 n +0001657842 00000 n +0001658038 00000 n +0001658236 00000 n +0001658431 00000 n +0001658628 00000 n +0001658826 00000 n +0001659023 00000 n +0001659220 00000 n +0001659416 00000 n +0001659614 00000 n +0001659812 00000 n +0001660008 00000 n +0001660206 00000 n +0001660403 00000 n +0001660601 00000 n +0001662614 00000 n +0001662811 00000 n +0001663009 00000 n +0001663207 00000 n +0001660989 00000 n +0001650787 00000 n +0001649551 00000 n +0001660798 00000 n +0001652133 00000 n +0001652720 00000 n +0001660861 00000 n +0001660925 00000 n +0001663405 00000 n +0001663601 00000 n +0001663799 00000 n +0001663996 00000 n +0001664193 00000 n +0001664390 00000 n +0001664587 00000 n +0001664785 00000 n +0001664981 00000 n +0001665179 00000 n +0001665377 00000 n +0001665958 00000 n +0001662351 00000 n +0001661091 00000 n +0001665575 00000 n +0001665702 00000 n +0001665766 00000 n +0001665830 00000 n +0001665894 00000 n +0001667385 00000 n +0001666951 00000 n +0001666074 00000 n +0001667067 00000 n +0001667130 00000 n +0001667194 00000 n +0001667258 00000 n +0001667321 00000 n +0002141004 00000 n +0001668814 00000 n +0001668379 00000 n +0001667473 00000 n +0001668495 00000 n +0001668558 00000 n +0001668622 00000 n +0001668686 00000 n +0001668750 00000 n +0001670197 00000 n +0001669698 00000 n +0001668902 00000 n +0001669814 00000 n +0001669877 00000 n +0001669941 00000 n +0001670005 00000 n +0001670069 00000 n +0001670133 00000 n +0001671604 00000 n +0001671105 00000 n +0001670285 00000 n +0001671221 00000 n +0001671284 00000 n +0001671348 00000 n +0001671412 00000 n +0001671476 00000 n +0001671540 00000 n +0001672982 00000 n +0001672483 00000 n +0001671692 00000 n +0001672599 00000 n +0001672662 00000 n +0001672726 00000 n +0001672790 00000 n +0001672854 00000 n +0001672918 00000 n +0001674486 00000 n +0001675643 00000 n +0001674340 00000 n +0001673070 00000 n +0001674878 00000 n +0001674941 00000 n +0001675197 00000 n +0001675261 00000 n +0001675325 00000 n +0001674682 00000 n +0001675389 00000 n +0001675515 00000 n +0001675579 00000 n +0001676999 00000 n +0001677197 00000 n +0001677395 00000 n +0001677593 00000 n +0001677791 00000 n +0001677989 00000 n +0001678179 00000 n +0001681277 00000 n +0001679583 00000 n +0001676808 00000 n +0001675773 00000 n +0001678370 00000 n +0001678625 00000 n +0001678879 00000 n +0001678943 00000 n +0001679007 00000 n +0001679071 00000 n +0001679327 00000 n +0001679391 00000 n +0001679455 00000 n +0001679519 00000 n +0002141129 00000 n +0001681472 00000 n +0001681666 00000 n +0001681861 00000 n +0001682014 00000 n +0001682210 00000 n +0001682406 00000 n +0001682602 00000 n +0001682797 00000 n +0001682991 00000 n +0001683187 00000 n +0001683382 00000 n +0001683578 00000 n +0001683774 00000 n +0001683969 00000 n +0001684165 00000 n +0001684361 00000 n +0001684557 00000 n +0001684753 00000 n +0001684949 00000 n +0001685145 00000 n +0001685339 00000 n +0001685535 00000 n +0001685729 00000 n +0001685924 00000 n +0001686120 00000 n +0001688647 00000 n +0001688842 00000 n +0001689038 00000 n +0001686955 00000 n +0001680915 00000 n +0001679685 00000 n +0001686316 00000 n +0001686379 00000 n +0001686443 00000 n +0001686699 00000 n +0001686763 00000 n +0001686827 00000 n +0001686891 00000 n +0001689234 00000 n +0001689430 00000 n +0001689626 00000 n +0001689822 00000 n +0001690018 00000 n +0001690214 00000 n +0001690409 00000 n +0001690605 00000 n +0001690800 00000 n +0001690996 00000 n +0001691192 00000 n +0001691388 00000 n +0001691584 00000 n +0001691780 00000 n +0001691976 00000 n +0001692171 00000 n +0001692367 00000 n +0001692563 00000 n +0001692716 00000 n +0001692910 00000 n +0001693106 00000 n +0001693302 00000 n +0001693498 00000 n +0001693694 00000 n +0001693846 00000 n +0001694042 00000 n +0001695927 00000 n +0001696123 00000 n +0001696319 00000 n +0001696515 00000 n +0001696709 00000 n +0001696905 00000 n +0001697101 00000 n +0001694301 00000 n +0001688258 00000 n +0001687085 00000 n +0001694238 00000 n +0001697296 00000 n +0001697492 00000 n +0001697688 00000 n +0001697883 00000 n +0001698079 00000 n +0001698275 00000 n +0001698470 00000 n +0001698666 00000 n +0001698862 00000 n +0001699056 00000 n +0001699251 00000 n +0001699447 00000 n +0001699643 00000 n +0001699839 00000 n +0001700035 00000 n +0001700231 00000 n +0001700427 00000 n +0001700623 00000 n +0001700819 00000 n +0001701015 00000 n +0001701211 00000 n +0001701407 00000 n +0001701603 00000 n +0001701799 00000 n +0001701995 00000 n +0001702191 00000 n +0001702387 00000 n +0001702583 00000 n +0001702779 00000 n +0001702975 00000 n +0001703171 00000 n +0001703367 00000 n +0001703563 00000 n +0001703759 00000 n +0001703953 00000 n +0001706062 00000 n +0001706258 00000 n +0001706453 00000 n +0001706648 00000 n +0001706843 00000 n +0001707039 00000 n +0001707234 00000 n +0001707430 00000 n +0001707626 00000 n +0001707821 00000 n +0001704273 00000 n +0001695421 00000 n +0001694417 00000 n +0001704146 00000 n +0001704209 00000 n +0001708015 00000 n +0001708209 00000 n +0001708403 00000 n +0001708599 00000 n +0001708795 00000 n +0001708991 00000 n +0001709187 00000 n +0001709382 00000 n +0001709577 00000 n +0001709771 00000 n +0001709966 00000 n +0001710161 00000 n +0001710356 00000 n +0001710551 00000 n +0001710743 00000 n +0001710938 00000 n +0001711133 00000 n +0001711328 00000 n +0001711523 00000 n +0001711718 00000 n +0001711913 00000 n +0001712106 00000 n +0001712301 00000 n +0001712496 00000 n +0001712687 00000 n +0001715622 00000 n +0001713582 00000 n +0001705619 00000 n +0001704375 00000 n +0001712882 00000 n +0001713136 00000 n +0001713200 00000 n +0001713264 00000 n +0001713328 00000 n +0001713392 00000 n +0001713456 00000 n +0001713518 00000 n +0001715816 00000 n +0001716010 00000 n +0001716204 00000 n +0001716397 00000 n +0001716591 00000 n +0001716785 00000 n +0001716976 00000 n +0001717170 00000 n +0001717364 00000 n +0001717557 00000 n +0001717751 00000 n +0001717944 00000 n +0001718137 00000 n +0001718331 00000 n +0001718524 00000 n +0001718717 00000 n +0001718911 00000 n +0001719104 00000 n +0001719298 00000 n +0001719491 00000 n +0001719683 00000 n +0001719877 00000 n +0001720071 00000 n +0001720265 00000 n +0001720460 00000 n +0001720655 00000 n +0001720850 00000 n +0001721045 00000 n +0001721239 00000 n +0001721432 00000 n +0001721626 00000 n +0001721820 00000 n +0001722013 00000 n +0001722207 00000 n +0001722401 00000 n +0001722593 00000 n +0001722787 00000 n +0001722981 00000 n +0001723173 00000 n +0001725344 00000 n +0001723558 00000 n +0001715134 00000 n +0001713698 00000 n +0001723367 00000 n +0001723430 00000 n +0001725500 00000 n +0001725657 00000 n +0001725853 00000 n +0001726047 00000 n +0001726243 00000 n +0001726439 00000 n +0001726635 00000 n +0001726831 00000 n +0001727027 00000 n +0001727222 00000 n +0001727418 00000 n +0001727614 00000 n +0001727808 00000 n +0001728004 00000 n +0001728200 00000 n +0001730990 00000 n +0001729161 00000 n +0001725072 00000 n +0001723660 00000 n +0001728394 00000 n +0001728585 00000 n +0001728649 00000 n +0001728713 00000 n +0001728777 00000 n +0001728841 00000 n +0001728905 00000 n +0001728969 00000 n +0001729033 00000 n +0001729097 00000 n +0002141254 00000 n +0001731186 00000 n +0001731382 00000 n +0001731575 00000 n +0001731771 00000 n +0001731967 00000 n +0001732122 00000 n +0001732317 00000 n +0001732474 00000 n +0001732670 00000 n +0001732865 00000 n +0001733061 00000 n +0001733257 00000 n +0001733452 00000 n +0001733648 00000 n +0001733843 00000 n +0001734039 00000 n +0001734235 00000 n +0001734431 00000 n +0001734627 00000 n +0001734822 00000 n +0001735018 00000 n +0001735214 00000 n +0001735409 00000 n +0001735604 00000 n +0001735799 00000 n +0001735995 00000 n +0001736191 00000 n +0001738265 00000 n +0001736704 00000 n +0001730610 00000 n +0001729277 00000 n +0001736386 00000 n +0001736449 00000 n +0001736513 00000 n +0001736577 00000 n +0001737387 00000 n +0001737144 00000 n +0001736806 00000 n +0001737260 00000 n +0001741527 00000 n +0001738128 00000 n +0001737461 00000 n +0001738463 00000 n +0001741462 00000 n +0001743357 00000 n +0001743553 00000 n +0001743748 00000 n +0001743942 00000 n +0001744136 00000 n +0001744332 00000 n +0001744527 00000 n +0001744722 00000 n +0001744917 00000 n +0001745113 00000 n +0001745309 00000 n +0001745505 00000 n +0001745701 00000 n +0001745896 00000 n +0001746092 00000 n +0001746287 00000 n +0001746480 00000 n +0001746676 00000 n +0001746871 00000 n +0001747066 00000 n +0001747262 00000 n +0001747457 00000 n +0001747653 00000 n +0001747849 00000 n +0001748043 00000 n +0001748239 00000 n +0001748435 00000 n +0001748630 00000 n +0001748825 00000 n +0001749020 00000 n +0001750879 00000 n +0001751075 00000 n +0001751271 00000 n +0001749855 00000 n +0001742959 00000 n +0001741629 00000 n +0001749216 00000 n +0001749471 00000 n +0001749535 00000 n +0001749599 00000 n +0001749663 00000 n +0001749727 00000 n +0001749791 00000 n +0001751467 00000 n +0001751663 00000 n +0001751858 00000 n +0001752054 00000 n +0001752250 00000 n +0001752446 00000 n +0001754479 00000 n +0001752769 00000 n +0001750670 00000 n +0001749957 00000 n +0001752642 00000 n +0001753453 00000 n +0001753210 00000 n +0001752871 00000 n +0001753326 00000 n +0002141379 00000 n +0001760273 00000 n +0001754342 00000 n +0001753527 00000 n +0001754677 00000 n +0001760208 00000 n +0001761547 00000 n +0001761741 00000 n +0001761935 00000 n +0001762129 00000 n +0001762322 00000 n +0001762516 00000 n +0001762710 00000 n +0001762904 00000 n +0001763098 00000 n +0001763292 00000 n +0001763485 00000 n +0001763678 00000 n +0001763872 00000 n +0001764065 00000 n +0001764259 00000 n +0001764452 00000 n +0001764644 00000 n +0001764837 00000 n +0001767418 00000 n +0001767610 00000 n +0001767802 00000 n +0001765925 00000 n +0001761257 00000 n +0001760375 00000 n +0001765031 00000 n +0001765094 00000 n +0001765158 00000 n +0001765797 00000 n +0001765861 00000 n +0001767996 00000 n +0001768190 00000 n +0001768384 00000 n +0001768578 00000 n +0001768772 00000 n +0001768966 00000 n +0001769160 00000 n +0001769354 00000 n +0001769548 00000 n +0001769742 00000 n +0001769936 00000 n +0001770130 00000 n +0001770328 00000 n +0001770526 00000 n +0001770724 00000 n +0001770921 00000 n +0001771118 00000 n +0001771315 00000 n +0001771513 00000 n +0001771710 00000 n +0001771908 00000 n +0001772106 00000 n +0001772304 00000 n +0001772502 00000 n +0001773209 00000 n +0001767047 00000 n +0001766041 00000 n +0001772700 00000 n +0001772954 00000 n +0001773018 00000 n +0001773082 00000 n +0001773145 00000 n +0001775868 00000 n +0001776020 00000 n +0001776172 00000 n +0001776323 00000 n +0001776474 00000 n +0001776626 00000 n +0001776778 00000 n +0001776930 00000 n +0001777081 00000 n +0001777232 00000 n +0001777382 00000 n +0001777533 00000 n +0001777685 00000 n +0001777837 00000 n +0001777989 00000 n +0001778141 00000 n +0001778293 00000 n +0001778444 00000 n +0001778596 00000 n +0001778747 00000 n +0001778899 00000 n +0001779051 00000 n +0001779203 00000 n +0001779354 00000 n +0001779506 00000 n +0001779658 00000 n +0001779809 00000 n +0001779961 00000 n +0001780112 00000 n +0001780264 00000 n +0001780416 00000 n +0001780566 00000 n +0001780717 00000 n +0001780868 00000 n +0001781019 00000 n +0001781169 00000 n +0001781319 00000 n +0001781469 00000 n +0001781621 00000 n +0001781773 00000 n +0001781925 00000 n +0001782077 00000 n +0001782229 00000 n +0001782381 00000 n +0001782533 00000 n +0001782682 00000 n +0001782831 00000 n +0001782980 00000 n +0001783130 00000 n +0001783280 00000 n +0001783557 00000 n +0001775290 00000 n +0001773311 00000 n +0001783430 00000 n +0001783493 00000 n +0001785240 00000 n +0001785390 00000 n +0001785542 00000 n +0001785693 00000 n +0001785843 00000 n +0001785994 00000 n +0001786146 00000 n +0001786298 00000 n +0001786450 00000 n +0001786602 00000 n +0001786754 00000 n +0001786906 00000 n +0001787058 00000 n +0001787210 00000 n +0001787362 00000 n +0001787514 00000 n +0001787666 00000 n +0001787818 00000 n +0001787970 00000 n +0001788122 00000 n +0001788274 00000 n +0001788426 00000 n +0001788578 00000 n +0001788730 00000 n +0001788882 00000 n +0001789034 00000 n +0001789185 00000 n +0001789335 00000 n +0001789486 00000 n +0001789638 00000 n +0001789790 00000 n +0001789942 00000 n +0001790094 00000 n +0001790246 00000 n +0001790398 00000 n +0001790550 00000 n +0001790701 00000 n +0001790852 00000 n +0001791003 00000 n +0001791155 00000 n +0001791307 00000 n +0001791459 00000 n +0001791607 00000 n +0001791759 00000 n +0001791911 00000 n +0001792063 00000 n +0001794314 00000 n +0001792277 00000 n +0001784698 00000 n +0001783659 00000 n +0001792214 00000 n +0001794464 00000 n +0001794616 00000 n +0001794768 00000 n +0001794918 00000 n +0001795068 00000 n +0001795219 00000 n +0001795370 00000 n +0001795521 00000 n +0001795673 00000 n +0001795824 00000 n +0001795976 00000 n +0001796127 00000 n +0001796279 00000 n +0001796431 00000 n +0001796583 00000 n +0001796733 00000 n +0001796885 00000 n +0001797035 00000 n +0001797187 00000 n +0001797338 00000 n +0001797490 00000 n +0001797642 00000 n +0001797793 00000 n +0001797943 00000 n +0001798093 00000 n +0001798245 00000 n +0001798396 00000 n +0001798548 00000 n +0001798700 00000 n +0001798851 00000 n +0001799003 00000 n +0001799154 00000 n +0001799306 00000 n +0001799456 00000 n +0001799606 00000 n +0001799757 00000 n +0001799909 00000 n +0001800061 00000 n +0001800211 00000 n +0001800361 00000 n +0001800513 00000 n +0001800663 00000 n +0001800815 00000 n +0001800967 00000 n +0001801118 00000 n +0001801270 00000 n +0001801421 00000 n +0001801573 00000 n +0001801723 00000 n +0001801875 00000 n +0001802026 00000 n +0001802178 00000 n +0001802330 00000 n +0001802481 00000 n +0001802633 00000 n +0001802784 00000 n +0001802936 00000 n +0001803087 00000 n +0001803239 00000 n +0001803389 00000 n +0001803541 00000 n +0001803693 00000 n +0001803845 00000 n +0001803997 00000 n +0001804147 00000 n +0001804298 00000 n +0001804450 00000 n +0001804601 00000 n +0001804753 00000 n +0001804904 00000 n +0001805056 00000 n +0001805208 00000 n +0001805360 00000 n +0001805512 00000 n +0001807573 00000 n +0001805727 00000 n +0001793511 00000 n +0001792379 00000 n +0001805664 00000 n +0002141504 00000 n +0001807723 00000 n +0001807874 00000 n +0001808026 00000 n +0001808178 00000 n +0001808330 00000 n +0001808480 00000 n +0001808631 00000 n +0001808781 00000 n +0001808933 00000 n +0001809084 00000 n +0001809236 00000 n +0001809388 00000 n +0001809540 00000 n +0001809692 00000 n +0001809843 00000 n +0001809995 00000 n +0001810147 00000 n +0001810299 00000 n +0001810451 00000 n +0001810603 00000 n +0001810755 00000 n +0001810906 00000 n +0001811058 00000 n +0001811210 00000 n +0001811361 00000 n +0001811512 00000 n +0001811664 00000 n +0001811815 00000 n +0001811967 00000 n +0001812117 00000 n +0001812269 00000 n +0001812420 00000 n +0001812572 00000 n +0001812724 00000 n +0001812875 00000 n +0001813027 00000 n +0001813177 00000 n +0001813328 00000 n +0001813479 00000 n +0001813631 00000 n +0001813783 00000 n +0001813935 00000 n +0001814087 00000 n +0001814239 00000 n +0001814390 00000 n +0001814542 00000 n +0001814692 00000 n +0001814844 00000 n +0001814996 00000 n +0001815147 00000 n +0001815299 00000 n +0001815449 00000 n +0001815601 00000 n +0001815751 00000 n +0001815903 00000 n +0001816054 00000 n +0001816205 00000 n +0001816356 00000 n +0001816508 00000 n +0001816660 00000 n +0001816812 00000 n +0001816964 00000 n +0001817116 00000 n +0001817268 00000 n +0001817420 00000 n +0001817571 00000 n +0001817723 00000 n +0001817875 00000 n +0001818027 00000 n +0001818179 00000 n +0001818330 00000 n +0001818480 00000 n +0001818632 00000 n +0001818783 00000 n +0001818935 00000 n +0001819085 00000 n +0001819237 00000 n +0001819388 00000 n +0001819539 00000 n +0001819691 00000 n +0001819842 00000 n +0001819994 00000 n +0001820144 00000 n +0001820296 00000 n +0001820446 00000 n +0001820597 00000 n +0001820749 00000 n +0001820900 00000 n +0001821052 00000 n +0001821204 00000 n +0001823420 00000 n +0001821418 00000 n +0001806626 00000 n +0001805815 00000 n +0001821355 00000 n +0001823570 00000 n +0001823722 00000 n +0001823873 00000 n +0001824025 00000 n +0001824176 00000 n +0001824327 00000 n +0001824479 00000 n +0001824629 00000 n +0001824781 00000 n +0001824931 00000 n +0001825083 00000 n +0001825235 00000 n +0001825386 00000 n +0001825537 00000 n +0001825687 00000 n +0001825839 00000 n +0001825991 00000 n +0001826143 00000 n +0001826294 00000 n +0001826446 00000 n +0001826598 00000 n +0001826749 00000 n +0001826901 00000 n +0001827053 00000 n +0001827204 00000 n +0001827356 00000 n +0001827507 00000 n +0001827658 00000 n +0001827810 00000 n +0001827960 00000 n +0001828112 00000 n +0001828264 00000 n +0001828416 00000 n +0001828568 00000 n +0001828719 00000 n +0001828871 00000 n +0001829021 00000 n +0001829173 00000 n +0001829325 00000 n +0001829476 00000 n +0001829627 00000 n +0001829779 00000 n +0001829929 00000 n +0001830081 00000 n +0001830231 00000 n +0001830383 00000 n +0001830534 00000 n +0001830686 00000 n +0001830838 00000 n +0001830990 00000 n +0001831141 00000 n +0001831293 00000 n +0001831443 00000 n +0001831595 00000 n +0001831746 00000 n +0001831898 00000 n +0001832050 00000 n +0001832200 00000 n +0001832352 00000 n +0001832503 00000 n +0001832655 00000 n +0001832805 00000 n +0001832957 00000 n +0001833108 00000 n +0001833259 00000 n +0001833410 00000 n +0001833562 00000 n +0001833714 00000 n +0001833866 00000 n +0001834018 00000 n +0001834170 00000 n +0001834322 00000 n +0001834473 00000 n +0001834625 00000 n +0001834775 00000 n +0001834926 00000 n +0001835078 00000 n +0001835229 00000 n +0001835381 00000 n +0001835532 00000 n +0001835684 00000 n +0001835834 00000 n +0001835986 00000 n +0001836137 00000 n +0001836289 00000 n +0001836440 00000 n +0001836590 00000 n +0001836742 00000 n +0001836893 00000 n +0001837045 00000 n +0001837260 00000 n +0001822473 00000 n +0001821506 00000 n +0001837197 00000 n +0001839173 00000 n +0001839325 00000 n +0001839475 00000 n +0001839627 00000 n +0001839779 00000 n +0001839930 00000 n +0001840080 00000 n +0001840232 00000 n +0001840383 00000 n +0001840535 00000 n +0001840687 00000 n +0001840839 00000 n +0001840991 00000 n +0001841143 00000 n +0001841295 00000 n +0001841447 00000 n +0001841599 00000 n +0001841751 00000 n +0001841903 00000 n +0001842055 00000 n +0001842207 00000 n +0001842358 00000 n +0001842510 00000 n +0001842661 00000 n +0001842813 00000 n +0001842964 00000 n +0001843115 00000 n +0001843264 00000 n +0001843416 00000 n +0001843567 00000 n +0001843718 00000 n +0001843870 00000 n +0001844020 00000 n +0001844171 00000 n +0001844321 00000 n +0001844473 00000 n +0001844624 00000 n +0001844776 00000 n +0001844928 00000 n +0001845080 00000 n +0001845232 00000 n +0001845384 00000 n +0001845536 00000 n +0001845688 00000 n +0001845838 00000 n +0001845990 00000 n +0001846141 00000 n +0001846293 00000 n +0001846444 00000 n +0001846595 00000 n +0001846746 00000 n +0001846896 00000 n +0001847048 00000 n +0001847199 00000 n +0001847350 00000 n +0001847502 00000 n +0001847652 00000 n +0001847804 00000 n +0001847956 00000 n +0001848108 00000 n +0001848260 00000 n +0001848412 00000 n +0001848564 00000 n +0001848716 00000 n +0001848868 00000 n +0001849020 00000 n +0001849172 00000 n +0001849324 00000 n +0001849476 00000 n +0001849627 00000 n +0001849778 00000 n +0001849929 00000 n +0001850081 00000 n +0001850231 00000 n +0001850383 00000 n +0001850535 00000 n +0001850687 00000 n +0001850839 00000 n +0001850990 00000 n +0001851142 00000 n +0001851292 00000 n +0001851444 00000 n +0001851594 00000 n +0001851746 00000 n +0001851897 00000 n +0001852049 00000 n +0001852200 00000 n +0001852352 00000 n +0001852504 00000 n +0001854782 00000 n +0001852719 00000 n +0001838244 00000 n +0001837348 00000 n +0001852656 00000 n +0001854932 00000 n +0001855084 00000 n +0001855236 00000 n +0001855384 00000 n +0001855535 00000 n +0001855687 00000 n +0001855837 00000 n +0001855989 00000 n +0001856140 00000 n +0001856292 00000 n +0001856444 00000 n +0001856596 00000 n +0001856748 00000 n +0001856899 00000 n +0001857051 00000 n +0001857203 00000 n +0001857355 00000 n +0001857507 00000 n +0001857659 00000 n +0001857810 00000 n +0001857962 00000 n +0001858113 00000 n +0001858265 00000 n +0001858416 00000 n +0001858568 00000 n +0001858719 00000 n +0001858871 00000 n +0001859022 00000 n +0001859174 00000 n +0001859326 00000 n +0001859478 00000 n +0001859630 00000 n +0001859782 00000 n +0001859933 00000 n +0001860085 00000 n +0001860235 00000 n +0001860387 00000 n +0001860538 00000 n +0001860690 00000 n +0001860842 00000 n +0001860993 00000 n +0001861145 00000 n +0001861295 00000 n +0001861446 00000 n +0001861596 00000 n +0001861748 00000 n +0001861900 00000 n +0001862052 00000 n +0001862204 00000 n +0001862356 00000 n +0001862505 00000 n +0001862657 00000 n +0001862806 00000 n +0001862958 00000 n +0001863109 00000 n +0001863261 00000 n +0001863413 00000 n +0001863565 00000 n +0001863716 00000 n +0001863868 00000 n +0001864019 00000 n +0001864169 00000 n +0001864321 00000 n +0001864473 00000 n +0001864625 00000 n +0001864777 00000 n +0001864928 00000 n +0001865080 00000 n +0001865232 00000 n +0001865383 00000 n +0001865535 00000 n +0001865686 00000 n +0001865838 00000 n +0001865988 00000 n +0001866140 00000 n +0001866292 00000 n +0001866444 00000 n +0001866596 00000 n +0001866746 00000 n +0001866897 00000 n +0001867047 00000 n +0001867198 00000 n +0001867349 00000 n +0001867501 00000 n +0001867653 00000 n +0001867805 00000 n +0001867957 00000 n +0001868108 00000 n +0001868260 00000 n +0001870517 00000 n +0001868475 00000 n +0001853844 00000 n +0001852807 00000 n +0001868412 00000 n +0001870667 00000 n +0001870819 00000 n +0001870971 00000 n +0001871123 00000 n +0001871274 00000 n +0001871425 00000 n +0001871577 00000 n +0001871726 00000 n +0001871877 00000 n +0001872028 00000 n +0001872180 00000 n +0001872331 00000 n +0001872483 00000 n +0001872635 00000 n +0001872786 00000 n +0001872937 00000 n +0001873089 00000 n +0001873240 00000 n +0001873392 00000 n +0001873544 00000 n +0001873695 00000 n +0001873847 00000 n +0001873999 00000 n +0001874150 00000 n +0001874301 00000 n +0001874453 00000 n +0001874604 00000 n +0001874756 00000 n +0001874904 00000 n +0001875056 00000 n +0001875208 00000 n +0001875360 00000 n +0001875512 00000 n +0001875663 00000 n +0001875815 00000 n +0001875965 00000 n +0001876117 00000 n +0001876268 00000 n +0001876419 00000 n +0001876571 00000 n +0001876722 00000 n +0001876874 00000 n +0001877026 00000 n +0001877178 00000 n +0001877330 00000 n +0001877480 00000 n +0001877632 00000 n +0001877784 00000 n +0001877935 00000 n +0001878086 00000 n +0001878237 00000 n +0001878389 00000 n +0001878541 00000 n +0001878692 00000 n +0001878844 00000 n +0001878996 00000 n +0001879147 00000 n +0001879299 00000 n +0001879451 00000 n +0001879603 00000 n +0001879755 00000 n +0001879906 00000 n +0001880058 00000 n +0001880209 00000 n +0001880361 00000 n +0001880513 00000 n +0001880664 00000 n +0001880815 00000 n +0001880966 00000 n +0001881118 00000 n +0001881267 00000 n +0001881419 00000 n +0001881571 00000 n +0001881723 00000 n +0001881875 00000 n +0001882027 00000 n +0001882178 00000 n +0001882328 00000 n +0001882480 00000 n +0001882631 00000 n +0001882783 00000 n +0001884795 00000 n +0001882998 00000 n +0001869651 00000 n +0001868563 00000 n +0001882935 00000 n +0001884947 00000 n +0001885099 00000 n +0001885251 00000 n +0001885403 00000 n +0001885554 00000 n +0001885705 00000 n +0001885857 00000 n +0001886007 00000 n +0001886158 00000 n +0001886309 00000 n +0001886461 00000 n +0001886613 00000 n +0001886765 00000 n +0001886917 00000 n +0001887069 00000 n +0001887221 00000 n +0001887373 00000 n +0001887524 00000 n +0001887675 00000 n +0001887825 00000 n +0001887977 00000 n +0001888129 00000 n +0001888281 00000 n +0001888433 00000 n +0001888585 00000 n +0001888737 00000 n +0001888889 00000 n +0001889041 00000 n +0001889192 00000 n +0001889344 00000 n +0001889496 00000 n +0001889647 00000 n +0001889798 00000 n +0001889949 00000 n +0001890101 00000 n +0001890253 00000 n +0001890404 00000 n +0001890556 00000 n +0001890708 00000 n +0001890860 00000 n +0001891010 00000 n +0001891162 00000 n +0001891313 00000 n +0001891465 00000 n +0001891617 00000 n +0001891769 00000 n +0001891921 00000 n +0001892073 00000 n +0001892225 00000 n +0001892376 00000 n +0001892528 00000 n +0001892680 00000 n +0001892832 00000 n +0001892984 00000 n +0001893136 00000 n +0001893287 00000 n +0001893439 00000 n +0001893591 00000 n +0001895569 00000 n +0001893805 00000 n +0001884136 00000 n +0001883086 00000 n +0001893742 00000 n +0002141629 00000 n +0001895721 00000 n +0001895872 00000 n +0001896024 00000 n +0001896175 00000 n +0001896326 00000 n +0001896478 00000 n +0001896628 00000 n +0001896780 00000 n +0001896931 00000 n +0001897083 00000 n +0001897235 00000 n +0001897386 00000 n +0001897537 00000 n +0001897689 00000 n +0001897839 00000 n +0001897990 00000 n +0001898141 00000 n +0001898292 00000 n +0001898443 00000 n +0001898593 00000 n +0001898743 00000 n +0001898895 00000 n +0001899047 00000 n +0001899199 00000 n +0001899351 00000 n +0001899503 00000 n +0001899655 00000 n +0001899807 00000 n +0001899959 00000 n +0001900111 00000 n +0001900263 00000 n +0001900415 00000 n +0001900567 00000 n +0001900719 00000 n +0001900870 00000 n +0001901022 00000 n +0001901174 00000 n +0001901325 00000 n +0001901477 00000 n +0001901629 00000 n +0001901781 00000 n +0001901933 00000 n +0001902081 00000 n +0001902233 00000 n +0001902385 00000 n +0001902537 00000 n +0001902689 00000 n +0001902841 00000 n +0001902993 00000 n +0001903145 00000 n +0001903297 00000 n +0001903449 00000 n +0001905200 00000 n +0001903664 00000 n +0001894964 00000 n +0001893893 00000 n +0001903601 00000 n +0001905349 00000 n +0001905500 00000 n +0001905652 00000 n +0001905803 00000 n +0001905953 00000 n +0001906105 00000 n +0001906257 00000 n +0001906408 00000 n +0001906559 00000 n +0001906710 00000 n +0001906861 00000 n +0001907013 00000 n +0001907165 00000 n +0001907317 00000 n +0001907468 00000 n +0001907619 00000 n +0001907768 00000 n +0001907919 00000 n +0001908070 00000 n +0001908221 00000 n +0001908372 00000 n +0001908523 00000 n +0001908674 00000 n +0001908826 00000 n +0001908977 00000 n +0001909129 00000 n +0001909280 00000 n +0001909432 00000 n +0001909583 00000 n +0001909734 00000 n +0001909885 00000 n +0001910036 00000 n +0001910188 00000 n +0001910340 00000 n +0001910492 00000 n +0001910644 00000 n +0001910795 00000 n +0001910947 00000 n +0001911097 00000 n +0001911248 00000 n +0001911399 00000 n +0001911549 00000 n +0001911698 00000 n +0001911849 00000 n +0001912000 00000 n +0001912151 00000 n +0001912302 00000 n +0001912453 00000 n +0001912604 00000 n +0001912755 00000 n +0001914333 00000 n +0001912969 00000 n +0001904613 00000 n +0001903752 00000 n +0001912906 00000 n +0001914482 00000 n +0001914633 00000 n +0001914784 00000 n +0001914935 00000 n +0001915086 00000 n +0001915237 00000 n +0001915388 00000 n +0001915539 00000 n +0001915690 00000 n +0001915841 00000 n +0001915992 00000 n +0001916143 00000 n +0001916294 00000 n +0001916446 00000 n +0001916597 00000 n +0001916748 00000 n +0001916899 00000 n +0001917049 00000 n +0001917198 00000 n +0001917348 00000 n +0001917499 00000 n +0001917650 00000 n +0001917801 00000 n +0001917951 00000 n +0001918103 00000 n +0001918255 00000 n +0001918407 00000 n +0001918559 00000 n +0001918711 00000 n +0001918863 00000 n +0001919015 00000 n +0001919167 00000 n +0001919319 00000 n +0001919471 00000 n +0001919623 00000 n +0001919775 00000 n +0001919927 00000 n +0001920079 00000 n +0001920230 00000 n +0001920381 00000 n +0001920533 00000 n +0001920685 00000 n +0001920837 00000 n +0001920989 00000 n +0001921141 00000 n +0001921293 00000 n +0001923054 00000 n +0001921508 00000 n +0001913782 00000 n +0001913057 00000 n +0001921445 00000 n +0001923206 00000 n +0001923358 00000 n +0001923510 00000 n +0001923661 00000 n +0001923811 00000 n +0001923962 00000 n +0001924114 00000 n +0001924266 00000 n +0001924418 00000 n +0001924570 00000 n +0001924722 00000 n +0001924874 00000 n +0001925026 00000 n +0001925178 00000 n +0001925330 00000 n +0001925482 00000 n +0001925634 00000 n +0001925786 00000 n +0001925938 00000 n +0001926090 00000 n +0001926242 00000 n +0001926393 00000 n +0001926544 00000 n +0001926694 00000 n +0001926846 00000 n +0001926998 00000 n +0001927150 00000 n +0001927302 00000 n +0001927453 00000 n +0001927605 00000 n +0001927757 00000 n +0001927908 00000 n +0001928059 00000 n +0001928211 00000 n +0001928363 00000 n +0001928514 00000 n +0001928665 00000 n +0001928817 00000 n +0001928969 00000 n +0001929121 00000 n +0001929273 00000 n +0001929425 00000 n +0001929576 00000 n +0001929728 00000 n +0001929880 00000 n +0001930031 00000 n +0001930183 00000 n +0001930335 00000 n +0001930485 00000 n +0001930700 00000 n +0001922476 00000 n +0001921596 00000 n +0001930637 00000 n +0001932352 00000 n +0001932504 00000 n +0001932654 00000 n +0001932805 00000 n +0001932956 00000 n +0001933106 00000 n +0001933258 00000 n +0001933409 00000 n +0001933561 00000 n +0001933713 00000 n +0001933864 00000 n +0001934013 00000 n +0001934165 00000 n +0001934317 00000 n +0001934469 00000 n +0001934619 00000 n +0001934770 00000 n +0001934921 00000 n +0001935073 00000 n +0001935225 00000 n +0001935377 00000 n +0001935529 00000 n +0001935680 00000 n +0001935831 00000 n +0001935982 00000 n +0001936134 00000 n +0001936286 00000 n +0001936435 00000 n +0001936587 00000 n +0001936738 00000 n +0001936888 00000 n +0001937037 00000 n +0001937187 00000 n +0001937338 00000 n +0001937489 00000 n +0001937640 00000 n +0001937791 00000 n +0001937942 00000 n +0001938093 00000 n +0001938244 00000 n +0001938395 00000 n +0001938546 00000 n +0001938697 00000 n +0001938849 00000 n +0001939001 00000 n +0001939153 00000 n +0001939305 00000 n +0001939456 00000 n +0001939608 00000 n +0001939758 00000 n +0001939910 00000 n +0001940061 00000 n +0001940212 00000 n +0001940363 00000 n +0001940514 00000 n +0001940666 00000 n +0001940817 00000 n +0001942367 00000 n +0001941032 00000 n +0001931711 00000 n +0001930788 00000 n +0001940969 00000 n +0001942517 00000 n +0001942669 00000 n +0001942821 00000 n +0001942973 00000 n +0001943125 00000 n +0001943277 00000 n +0001943429 00000 n +0001943580 00000 n +0001943731 00000 n +0001943881 00000 n +0001944033 00000 n +0001944185 00000 n +0001944337 00000 n +0001944489 00000 n +0001944641 00000 n +0001944793 00000 n +0001944945 00000 n +0001945097 00000 n +0001945248 00000 n +0001945398 00000 n +0001945549 00000 n +0001945701 00000 n +0001945853 00000 n +0001946004 00000 n +0001946154 00000 n +0001946306 00000 n +0001946458 00000 n +0001946610 00000 n +0001946762 00000 n +0001946914 00000 n +0001947065 00000 n +0001947216 00000 n +0001947366 00000 n +0001947518 00000 n +0001947670 00000 n +0001947822 00000 n +0001947974 00000 n +0001948126 00000 n +0001948278 00000 n +0001948430 00000 n +0001948582 00000 n +0001948733 00000 n +0001948883 00000 n +0001949034 00000 n +0001949186 00000 n +0001949338 00000 n +0001950927 00000 n +0001949553 00000 n +0001941816 00000 n +0001941120 00000 n +0001949490 00000 n +0002141754 00000 n +0001951079 00000 n +0001951231 00000 n +0001951383 00000 n +0001951535 00000 n +0001951687 00000 n +0001951839 00000 n +0001951990 00000 n +0001952141 00000 n +0001952291 00000 n +0001952443 00000 n +0001952595 00000 n +0001952747 00000 n +0001952899 00000 n +0001953051 00000 n +0001953203 00000 n +0001953355 00000 n +0001953507 00000 n +0001953658 00000 n +0001953807 00000 n +0001953957 00000 n +0001954108 00000 n +0001954259 00000 n +0001954410 00000 n +0001954561 00000 n +0001954712 00000 n +0001954863 00000 n +0001955014 00000 n +0001955165 00000 n +0001955316 00000 n +0001955466 00000 n +0001955616 00000 n +0001955768 00000 n +0001955920 00000 n +0001956072 00000 n +0001956224 00000 n +0001956376 00000 n +0001956528 00000 n +0001956680 00000 n +0001956832 00000 n +0001956984 00000 n +0001957135 00000 n +0001957286 00000 n +0001957437 00000 n +0001957589 00000 n +0001957741 00000 n +0001957956 00000 n +0001950385 00000 n +0001949641 00000 n +0001957893 00000 n +0001959349 00000 n +0001959500 00000 n +0001959652 00000 n +0001959804 00000 n +0001959956 00000 n +0001960108 00000 n +0001960260 00000 n +0001960411 00000 n +0001960562 00000 n +0001960714 00000 n +0001960866 00000 n +0001961017 00000 n +0001961168 00000 n +0001961318 00000 n +0001961470 00000 n +0001961622 00000 n +0001961774 00000 n +0001961926 00000 n +0001962078 00000 n +0001962230 00000 n +0001962382 00000 n +0001962534 00000 n +0001962686 00000 n +0001962838 00000 n +0001962990 00000 n +0001963142 00000 n +0001963293 00000 n +0001963443 00000 n +0001963594 00000 n +0001963746 00000 n +0001963898 00000 n +0001964050 00000 n +0001964202 00000 n +0001964354 00000 n +0001964506 00000 n +0001964658 00000 n +0001964810 00000 n +0001964962 00000 n +0001965114 00000 n +0001965266 00000 n +0001965418 00000 n +0001965570 00000 n +0001965722 00000 n +0001965874 00000 n +0001966025 00000 n +0001966177 00000 n +0001966329 00000 n +0001968087 00000 n +0001966542 00000 n +0001958798 00000 n +0001958044 00000 n +0001966479 00000 n +0001968239 00000 n +0001968390 00000 n +0001968541 00000 n +0001968693 00000 n +0001968845 00000 n +0001968997 00000 n +0001969149 00000 n +0001969300 00000 n +0001969452 00000 n +0001969604 00000 n +0001969756 00000 n +0001969908 00000 n +0001970059 00000 n +0001970209 00000 n +0001970359 00000 n +0001970508 00000 n +0001970660 00000 n +0001970812 00000 n +0001970963 00000 n +0001971114 00000 n +0001971265 00000 n +0001971416 00000 n +0001971567 00000 n +0001971718 00000 n +0001971868 00000 n +0001972020 00000 n +0001972171 00000 n +0001972323 00000 n +0001972475 00000 n +0001972624 00000 n +0001972774 00000 n +0001972926 00000 n +0001973077 00000 n +0001973229 00000 n +0001973380 00000 n +0001973532 00000 n +0001973684 00000 n +0001973835 00000 n +0001973986 00000 n +0001974138 00000 n +0001974290 00000 n +0001974441 00000 n +0001974592 00000 n +0001974744 00000 n +0001974896 00000 n +0001975047 00000 n +0001975199 00000 n +0001975351 00000 n +0001975501 00000 n +0001975651 00000 n +0001975803 00000 n +0001975954 00000 n +0001976106 00000 n +0001976257 00000 n +0001976469 00000 n +0001967464 00000 n +0001966630 00000 n +0001976406 00000 n +0001977985 00000 n +0001978137 00000 n +0001978289 00000 n +0001978440 00000 n +0001978591 00000 n +0001978741 00000 n +0001978892 00000 n +0001979042 00000 n +0001979194 00000 n +0001979346 00000 n +0001979496 00000 n +0001979648 00000 n +0001979800 00000 n +0001979952 00000 n +0001980103 00000 n +0001980255 00000 n +0001980407 00000 n +0001980558 00000 n +0001980709 00000 n +0001980860 00000 n +0001981012 00000 n +0001981164 00000 n +0001981316 00000 n +0001981468 00000 n +0001981619 00000 n +0001981769 00000 n +0001981920 00000 n +0001982071 00000 n +0001982221 00000 n +0001982373 00000 n +0001982525 00000 n +0001982675 00000 n +0001982826 00000 n +0001982977 00000 n +0001983129 00000 n +0001983280 00000 n +0001983429 00000 n +0001983581 00000 n +0001983733 00000 n +0001983885 00000 n +0001984036 00000 n +0001984188 00000 n +0001984338 00000 n +0001984489 00000 n +0001984640 00000 n +0001984792 00000 n +0001984944 00000 n +0001985096 00000 n +0001985247 00000 n +0001985399 00000 n +0001985551 00000 n +0001985701 00000 n +0001985853 00000 n +0001986005 00000 n +0001986155 00000 n +0001986307 00000 n +0001986459 00000 n +0001986609 00000 n +0001986760 00000 n +0001986911 00000 n +0001987062 00000 n +0001988825 00000 n +0001987277 00000 n +0001977308 00000 n +0001976557 00000 n +0001987214 00000 n +0001988976 00000 n +0001989128 00000 n +0001989279 00000 n +0001989430 00000 n +0001989582 00000 n +0001989734 00000 n +0001989885 00000 n +0001990036 00000 n +0001990187 00000 n +0001990339 00000 n +0001990489 00000 n +0001990639 00000 n +0001990791 00000 n +0001990943 00000 n +0001991095 00000 n +0001991246 00000 n +0001991397 00000 n +0001991548 00000 n +0001991698 00000 n +0001991850 00000 n +0001992002 00000 n +0001992154 00000 n +0001992306 00000 n +0001992458 00000 n +0001992610 00000 n +0001992762 00000 n +0001992912 00000 n +0001993064 00000 n +0001993216 00000 n +0001993368 00000 n +0001993520 00000 n +0001993672 00000 n +0001993824 00000 n +0001993976 00000 n +0001994128 00000 n +0001994280 00000 n +0001994432 00000 n +0001994584 00000 n +0001994736 00000 n +0001994888 00000 n +0001995040 00000 n +0001995192 00000 n +0001995344 00000 n +0001995495 00000 n +0001995645 00000 n +0001995796 00000 n +0001995948 00000 n +0001996100 00000 n +0001997798 00000 n +0001996315 00000 n +0001988256 00000 n +0001987365 00000 n +0001996252 00000 n +0001997948 00000 n +0001998100 00000 n +0001998252 00000 n +0001998404 00000 n +0001998554 00000 n +0001998705 00000 n +0001998856 00000 n +0001999007 00000 n +0001999158 00000 n +0001999309 00000 n +0001999460 00000 n +0001999611 00000 n +0001999762 00000 n +0001999913 00000 n +0002000064 00000 n +0002000215 00000 n +0002000366 00000 n +0002000517 00000 n +0002000668 00000 n +0002000819 00000 n +0002000971 00000 n +0002001122 00000 n +0002001273 00000 n +0002001423 00000 n +0002001575 00000 n +0002001727 00000 n +0002001879 00000 n +0002002031 00000 n +0002002183 00000 n +0002002335 00000 n +0002002487 00000 n +0002002639 00000 n +0002002791 00000 n +0002002943 00000 n +0002003095 00000 n +0002003247 00000 n +0002003399 00000 n +0002003551 00000 n +0002003703 00000 n +0002003855 00000 n +0002004006 00000 n +0002004156 00000 n +0002004307 00000 n +0002004459 00000 n +0002004611 00000 n +0002004762 00000 n +0002006844 00000 n +0002004977 00000 n +0001997247 00000 n +0001996403 00000 n +0002004914 00000 n +0002141879 00000 n +0002006994 00000 n +0002007146 00000 n +0002007298 00000 n +0002007450 00000 n +0002007601 00000 n +0002007751 00000 n +0002007903 00000 n +0002008054 00000 n +0002008206 00000 n +0002008357 00000 n +0002008509 00000 n +0002008661 00000 n +0002008811 00000 n +0002008963 00000 n +0002009115 00000 n +0002009267 00000 n +0002009419 00000 n +0002009570 00000 n +0002009721 00000 n +0002009873 00000 n +0002010024 00000 n +0002010176 00000 n +0002010326 00000 n +0002010478 00000 n +0002010630 00000 n +0002010782 00000 n +0002010934 00000 n +0002011085 00000 n +0002011236 00000 n +0002011386 00000 n +0002011538 00000 n +0002011688 00000 n +0002011840 00000 n +0002011992 00000 n +0002012144 00000 n +0002012296 00000 n +0002012448 00000 n +0002012597 00000 n +0002012748 00000 n +0002012899 00000 n +0002013051 00000 n +0002013201 00000 n +0002013350 00000 n +0002013502 00000 n +0002013652 00000 n +0002013803 00000 n +0002013954 00000 n +0002014106 00000 n +0002014258 00000 n +0002014410 00000 n +0002014561 00000 n +0002014713 00000 n +0002014865 00000 n +0002015017 00000 n +0002015169 00000 n +0002015321 00000 n +0002015473 00000 n +0002015625 00000 n +0002015777 00000 n +0002015929 00000 n +0002016081 00000 n +0002016233 00000 n +0002016385 00000 n +0002016536 00000 n +0002017503 00000 n +0002016750 00000 n +0002006131 00000 n +0002005065 00000 n +0002016687 00000 n +0002017655 00000 n +0002017807 00000 n +0002017959 00000 n +0002018111 00000 n +0002018263 00000 n +0002018415 00000 n +0002018566 00000 n +0002018717 00000 n +0002018867 00000 n +0002019019 00000 n +0002019234 00000 n +0002017276 00000 n +0002016838 00000 n +0002019171 00000 n +0002019322 00000 n +0002130860 00000 n +0002019348 00000 n +0002019820 00000 n +0002019858 00000 n +0002019884 00000 n +0002020503 00000 n +0002020675 00000 n +0002021151 00000 n +0002021727 00000 n +0002021763 00000 n +0002022338 00000 n +0002023053 00000 n +0002024846 00000 n +0002025081 00000 n +0002026875 00000 n +0002027110 00000 n +0002028919 00000 n +0002029187 00000 n +0002030435 00000 n +0002030667 00000 n +0002032000 00000 n +0002032234 00000 n +0002052893 00000 n +0002053560 00000 n +0002059939 00000 n +0002060191 00000 n +0002080150 00000 n +0002080747 00000 n +0002091324 00000 n +0002091649 00000 n +0002114108 00000 n +0002114799 00000 n +0002130429 00000 n +0002141977 00000 n +0002142103 00000 n +0002142229 00000 n +0002142355 00000 n +0002142481 00000 n +0002142607 00000 n +0002142733 00000 n +0002142859 00000 n +0002142985 00000 n +0002143111 00000 n +0002143237 00000 n +0002143363 00000 n +0002143471 00000 n +0002143598 00000 n +0002143725 00000 n +0002143799 00000 n +0002190218 00000 n +0002190437 00000 n +0002190693 00000 n +0002190929 00000 n +0002191189 00000 n +0002191437 00000 n +0002191662 00000 n +0002191839 00000 n +0002192015 00000 n +0002192192 00000 n +0002192368 00000 n +0002192545 00000 n +0002192721 00000 n +0002192898 00000 n +0002193074 00000 n +0002193251 00000 n +0002193417 00000 n +0002193674 00000 n +0002193898 00000 n +0002194249 00000 n +0002194690 00000 n +0002195131 00000 n +0002195572 00000 n +0002195949 00000 n +0002196247 00000 n +0002196614 00000 n +0002196959 00000 n +0002197249 00000 n +0002197432 00000 n +0002197615 00000 n +0002197984 00000 n +0002198320 00000 n +0002198745 00000 n +0002199266 00000 n +0002199787 00000 n +0002200308 00000 n +0002200805 00000 n +0002201342 00000 n +0002201842 00000 n +0002202287 00000 n +0002202856 00000 n +0002203353 00000 n +0002203906 00000 n +0002204459 00000 n +0002205012 00000 n +0002205565 00000 n +0002206118 00000 n +0002206671 00000 n +0002207224 00000 n +0002207777 00000 n +0002208330 00000 n +0002208883 00000 n +0002209436 00000 n +0002209989 00000 n +0002210542 00000 n +0002211095 00000 n +0002211648 00000 n +0002212201 00000 n +0002212626 00000 n +0002213147 00000 n +0002213668 00000 n +0002214189 00000 n +0002214710 00000 n +0002215231 00000 n +0002215752 00000 n +0002216255 00000 n +0002216808 00000 n +0002217361 00000 n +0002217914 00000 n +0002218467 00000 n +0002219020 00000 n +0002219573 00000 n +0002220126 00000 n +0002220679 00000 n +0002221096 00000 n +0002221555 00000 n +0002221985 00000 n +0002222522 00000 n +0002223059 00000 n +0002223596 00000 n +0002224133 00000 n +0002224670 00000 n +0002225207 00000 n +0002225744 00000 n +0002226281 00000 n +0002226818 00000 n +0002227355 00000 n +0002227892 00000 n +0002228429 00000 n +0002228966 00000 n +0002229503 00000 n +0002229964 00000 n +0002230493 00000 n +0002231022 00000 n +0002231551 00000 n +0002232080 00000 n +0002232609 00000 n +0002233138 00000 n +0002233667 00000 n +0002234196 00000 n +0002234725 00000 n +0002235109 00000 n +0002235646 00000 n +0002236183 00000 n +0002236720 00000 n +0002237257 00000 n +0002237794 00000 n +0002238331 00000 n +0002238834 00000 n +0002239371 00000 n +0002239908 00000 n +0002240445 00000 n +0002240982 00000 n +0002241519 00000 n +0002242056 00000 n +0002242565 00000 n +0002243080 00000 n +0002243633 00000 n +0002244118 00000 n +0002244539 00000 n +0002245028 00000 n +0002245465 00000 n +0002245866 00000 n +0002246297 00000 n +0002246882 00000 n +0002247350 00000 n +0002247740 00000 n +0002248106 00000 n +0002248492 00000 n +0002248838 00000 n +0002249261 00000 n +0002249763 00000 n +0002250245 00000 n +0002250700 00000 n +0002251177 00000 n +0002251698 00000 n +0002252219 00000 n +0002252740 00000 n +0002253261 00000 n +0002253782 00000 n +0002254126 00000 n +0002254429 00000 n +0002254705 00000 n +0002255023 00000 n +0002255388 00000 n +0002255687 00000 n +0002255936 00000 n +0002256306 00000 n +0002256556 00000 n +0002256824 00000 n +0002257149 00000 n +0002257350 00000 n +0002257555 00000 n +0002257864 00000 n +0002258206 00000 n +0002258443 00000 n +0002258628 00000 n +0002258812 00000 n +0002258997 00000 n +0002259181 00000 n +0002259366 00000 n +0002259549 00000 n +0002259732 00000 n +0002259917 00000 n +0002260101 00000 n +0002260286 00000 n +0002260470 00000 n +0002260655 00000 n +0002260839 00000 n +0002261024 00000 n +0002261208 00000 n +0002261394 00000 n +0002261578 00000 n +0002261760 00000 n +0002261944 00000 n +0002262128 00000 n +0002262314 00000 n +0002262499 00000 n +0002262685 00000 n +0002262870 00000 n +0002263056 00000 n +0002263241 00000 n +0002263427 00000 n +0002263612 00000 n +0002263798 00000 n +0002263982 00000 n +0002264166 00000 n +0002264352 00000 n +0002264537 00000 n +0002264723 00000 n +0002264908 00000 n +0002265094 00000 n +0002265277 00000 n +0002265463 00000 n +0002265648 00000 n +0002265834 00000 n +0002266019 00000 n +0002266205 00000 n +0002266389 00000 n +0002266573 00000 n +0002266759 00000 n +0002266944 00000 n +0002267130 00000 n +0002267315 00000 n +0002267501 00000 n +0002267686 00000 n +0002267872 00000 n +0002268057 00000 n +0002268243 00000 n +0002268427 00000 n +0002268609 00000 n +0002268789 00000 n +0002268967 00000 n +0002269143 00000 n +0002269319 00000 n +0002269497 00000 n +0002269674 00000 n +0002269852 00000 n +0002270029 00000 n +0002270207 00000 n +0002270384 00000 n +0002270562 00000 n +0002270740 00000 n +0002270918 00000 n +0002271136 00000 n +0002271410 00000 n +0002271692 00000 n +0002271973 00000 n +0002272255 00000 n +0002272534 00000 n +0002272808 00000 n +0002273085 00000 n +0002273367 00000 n +0002273648 00000 n +0002273930 00000 n +0002274211 00000 n +0002274491 00000 n +0002274765 00000 n +0002275047 00000 n +0002275328 00000 n +0002275606 00000 n +0002275880 00000 n +0002276154 00000 n +0002276428 00000 n +0002276706 00000 n +0002276980 00000 n +0002277262 00000 n +0002277538 00000 n +0002277815 00000 n +0002278089 00000 n +0002278367 00000 n +0002278649 00000 n +0002278930 00000 n +0002279208 00000 n +0002279481 00000 n +0002279755 00000 n +0002280029 00000 n +0002280307 00000 n +0002280583 00000 n +0002280857 00000 n +0002281131 00000 n +0002281405 00000 n +0002281677 00000 n +0002281946 00000 n +0002282215 00000 n +0002282492 00000 n +0002282774 00000 n +0002283055 00000 n +0002283337 00000 n +0002283616 00000 n +0002283890 00000 n +0002284164 00000 n +0002284438 00000 n +0002284712 00000 n +0002284986 00000 n +0002285256 00000 n +0002285530 00000 n +0002285803 00000 n +0002286077 00000 n +0002286349 00000 n +0002286621 00000 n +0002286895 00000 n +0002287168 00000 n +0002287442 00000 n +0002287715 00000 n +0002287989 00000 n +0002288262 00000 n +0002288536 00000 n +0002288809 00000 n +0002289083 00000 n +0002289355 00000 n +0002289623 00000 n +0002289894 00000 n +0002290168 00000 n +0002290440 00000 n +0002290712 00000 n +0002290986 00000 n +0002291255 00000 n +0002291523 00000 n +0002291797 00000 n +0002292070 00000 n +0002292344 00000 n +0002292617 00000 n +0002292891 00000 n +0002293164 00000 n +0002293438 00000 n +0002293710 00000 n +0002293980 00000 n +0002294251 00000 n +0002294525 00000 n +0002294797 00000 n +0002295068 00000 n +0002295334 00000 n +0002295608 00000 n +0002295879 00000 n +0002296145 00000 n +0002296417 00000 n +0002296689 00000 n +0002296963 00000 n +0002297236 00000 n +0002297510 00000 n +0002297783 00000 n +0002298049 00000 n +0002298322 00000 n +0002298600 00000 n +0002298874 00000 n +0002299144 00000 n +0002299410 00000 n +0002299728 00000 n +0002300202 00000 n +0002300676 00000 n +0002301150 00000 n +0002301624 00000 n +0002302008 00000 n +0002302312 00000 n +0002302685 00000 n +0002303041 00000 n +0002303303 00000 n +0002303521 00000 n +0002303738 00000 n +0002303956 00000 n +0002304173 00000 n +0002304388 00000 n +0002304596 00000 n +0002304806 00000 n +0002305015 00000 n +0002305225 00000 n +0002305434 00000 n +0002305644 00000 n +0002305853 00000 n +0002306063 00000 n +0002306272 00000 n +0002306482 00000 n +0002306690 00000 n +0002306898 00000 n +0002307108 00000 n +0002307317 00000 n +0002307527 00000 n +0002307727 00000 n +0002307923 00000 n +0002308117 00000 n +0002308309 00000 n +0002308567 00000 n +0002308986 00000 n +0002309342 00000 n +0002309728 00000 n +0002310128 00000 n +0002310349 00000 n +0002310564 00000 n +0002310863 00000 n +0002311170 00000 n +0002311382 00000 n +0002311596 00000 n +0002311808 00000 n +0002312014 00000 n +0002312355 00000 n +0002312641 00000 n +0002312872 00000 n +0002313111 00000 n +0002313355 00000 n +0002313598 00000 n +0002313842 00000 n +0002314085 00000 n +0002314321 00000 n +0002314561 00000 n +0002314797 00000 n +0002315033 00000 n +0002315263 00000 n +0002315485 00000 n +0002315718 00000 n +0002315962 00000 n +0002316205 00000 n +0002316449 00000 n +0002316692 00000 n +0002316939 00000 n +0002317178 00000 n +0002317422 00000 n +0002317672 00000 n +0002317921 00000 n +0002318171 00000 n +0002318420 00000 n +0002318670 00000 n +0002318918 00000 n +0002319166 00000 n +0002319416 00000 n +0002319665 00000 n +0002319915 00000 n +0002320164 00000 n +0002320414 00000 n +0002320663 00000 n +0002320913 00000 n +0002321152 00000 n +0002321378 00000 n +0002321606 00000 n +0002321834 00000 n +0002322062 00000 n +0002322290 00000 n +0002322530 00000 n +0002322806 00000 n +0002323084 00000 n +0002323368 00000 n +0002323652 00000 n +0002323936 00000 n +0002324217 00000 n +0002324501 00000 n +0002324785 00000 n +0002325067 00000 n +0002325351 00000 n +0002325641 00000 n +0002325931 00000 n +0002326221 00000 n +0002326506 00000 n +0002326782 00000 n +0002327058 00000 n +0002327338 00000 n +0002327626 00000 n +0002327914 00000 n +0002328204 00000 n +0002328493 00000 n +0002328783 00000 n +0002329071 00000 n +0002329361 00000 n +0002329648 00000 n +0002329938 00000 n +0002330227 00000 n +0002330517 00000 n +0002330806 00000 n +0002331096 00000 n +0002331385 00000 n +0002331675 00000 n +0002331922 00000 n +0002332146 00000 n +0002332488 00000 n +0002332849 00000 n +0002333115 00000 n +0002333233 00000 n +0002333350 00000 n +0002333470 00000 n +0002333609 00000 n +0002333774 00000 n +0002333956 00000 n +0002334165 00000 n +0002334376 00000 n +0002334587 00000 n +0002334794 00000 n +0002335001 00000 n +0002335212 00000 n +0002335421 00000 n +0002335628 00000 n +0002335835 00000 n +0002336006 00000 n +0002336212 00000 n +0002336419 00000 n +0002336626 00000 n +0002336827 00000 n +0002337011 00000 n +0002337203 00000 n +0002337415 00000 n +0002337606 00000 n +0002337769 00000 n +0002337890 00000 n +0002338008 00000 n +0002338127 00000 n +0002338250 00000 n +0002338375 00000 n +0002338499 00000 n +0002338624 00000 n +0002338749 00000 n +0002338874 00000 n +0002338997 00000 n +0002339120 00000 n +0002339243 00000 n +0002339378 00000 n +0002339527 00000 n +0002339675 00000 n +0002339823 00000 n +0002339972 00000 n +0002340120 00000 n +0002340267 00000 n +0002340414 00000 n +0002340561 00000 n +0002340708 00000 n +0002340855 00000 n +0002341002 00000 n +0002341149 00000 n +0002341296 00000 n +0002341442 00000 n +0002341589 00000 n +0002341736 00000 n +0002341908 00000 n +0002342087 00000 n +0002342234 00000 n +0002342365 00000 n +0002342495 00000 n +0002342625 00000 n +0002342757 00000 n +0002342892 00000 n +0002343030 00000 n +0002343170 00000 n +0002343310 00000 n +0002343451 00000 n +0002343592 00000 n +0002343733 00000 n +0002343872 00000 n +0002344016 00000 n +0002344167 00000 n +0002344317 00000 n +0002344467 00000 n +0002344618 00000 n +0002344755 00000 n +0002344890 00000 n +0002345060 00000 n +0002345275 00000 n +0002345490 00000 n +0002345689 00000 n +0002345841 00000 n +0002345965 00000 n +0002346101 00000 n +0002346249 00000 n +0002346396 00000 n +0002346534 00000 n +0002346669 00000 n +0002346814 00000 n +0002346962 00000 n +0002347087 00000 n +0002347223 00000 n +0002347341 00000 n +0002347468 00000 n +0002347510 00000 n +0002347695 00000 n +trailer +<< /Size 10380 +/Root 10378 0 R +/Info 10379 0 R +/ID [<0D87500EC914F1062B789F9F5501CEDE> <0D87500EC914F1062B789F9F5501CEDE>] >> +startxref +2347970 +%%EOF diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual.ps b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual.ps new file mode 100644 index 0000000..0abed2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual.ps @@ -0,0 +1,125018 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.96dev Copyright 2007 Radical Eye Software +%%Title: refman.dvi +%%CreationDate: Wed Nov 05 21:03:22 2008 +%%Pages: 431 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: SFRM1440 SFRM1200 SFRM0900 SFBX1000 SFBX1440 SFRM1000 +%%+ SFBX0700 CMMI10 SFBX1200 SFTT1000 SFTI1000 SFTT0800 SFIT1000 CMSY10 +%%+ SFBX0800 SFRM0800 CMSY8 CMMI12 SFBI1000 CMSY7 +%%DocumentPaperSizes: Letter +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: "c:\Program Files\MiKTeX 2.7\miktex\bin\dvips.exe" -o +%+ refman.ps refman.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2008.11.05:2103 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: cm-super-t1.enc 0 0 +% This file is generated from `T1uni.map' and `glyphlist.txt', `gl-other.txt' +% +% LIGKERN hyphen hyphen =: endash ; endash hyphen =: emdash ; +% LIGKERN quoteleft quoteleft =: quotedblleft ; +% LIGKERN quoteright quoteright =: quotedblright ; +% LIGKERN comma comma =: quotedblbase ; less less =: guillemotleft ; +% LIGKERN greater greater =: guillemotright ; +% LIGKERN f f =: ff ; f i =: fi ; f l =: fl ; ff i =: ffi ; ff l =: ffl ; +% +% LIGKERN space {} * ; * {} space ; zero {} * ; * {} zero ; +% LIGKERN one {} * ; * {} one ; two {} * ; * {} two ; +% LIGKERN three {} * ; * {} three ; four {} * ; * {} four ; +% LIGKERN five {} * ; * {} five ; six {} * ; * {} six ; +% LIGKERN seven {} * ; * {} seven ; eight {} * ; * {} eight ; +% LIGKERN nine {} * ; * {} nine ; +% +/T1Encoding [ +% 0x00 +/grave +/acute +/circumflex +/tilde +/dieresis +/hungarumlaut +/ring +/caron +/breve +/macron +/dotaccent +/cedilla +/ogonek +/quotesinglbase +/guilsinglleft +/guilsinglright +% 0x10 +/quotedblleft +/quotedblright +/quotedblbase +/guillemotleft +/guillemotright +/endash +/emdash +/afii61664 +/perthousandzero % PERTHOUSAND ZERO +/dotlessi +/dotlessj +/ff +/fi +/fl +/ffi +/ffl +% 0x20 +/uni2423 +/exclam +/quotedbl +/numbersign +/dollar +/percent +/ampersand +/quoteright +/parenleft +/parenright +/asterisk +/plus +/comma +/hyphen +/period +/slash +% 0x30 +/zero +/one +/two +/three +/four +/five +/six +/seven +/eight +/nine +/colon +/semicolon +/less +/equal +/greater +/question +% 0x40 +/at +/A +/B +/C +/D +/E +/F +/G +/H +/I +/J +/K +/L +/M +/N +/O +% 0x50 +/P +/Q +/R +/S +/T +/U +/V +/W +/X +/Y +/Z +/bracketleft +/backslash +/bracketright +/asciicircum +/underscore +% 0x60 +/quoteleft +/a +/b +/c +/d +/e +/f +/g +/h +/i +/j +/k +/l +/m +/n +/o +% 0x70 +/p +/q +/r +/s +/t +/u +/v +/w +/x +/y +/z +/braceleft +/bar +/braceright +/asciitilde +/hyphen.alt % HANGING HYPHEN +% 0x80 +/Abreve +/Aogonek +/Cacute +/Ccaron +/Dcaron +/Ecaron +/Eogonek +/Gbreve +/Lacute +/Lcaron +/Lslash +/Nacute +/Ncaron +/Eng +/Ohungarumlaut +/Racute +% 0x90 +/Rcaron +/Sacute +/Scaron +/Scedilla +/Tcaron +/Tcommaaccent +/Uhungarumlaut +/Uring +/Ydieresis +/Zacute +/Zcaron +/Zdotaccent +/IJ +/Idotaccent +/dcroat +/section +% 0xA0 +/abreve +/aogonek +/cacute +/ccaron +/dcaron +/ecaron +/eogonek +/gbreve +/lacute +/lcaron +/lslash +/nacute +/ncaron +/eng +/ohungarumlaut +/racute +% 0xB0 +/rcaron +/sacute +/scaron +/scedilla +/tcaron +/tcommaaccent +/uhungarumlaut +/uring +/ydieresis +/zacute +/zcaron +/zdotaccent +/ij +/exclamdown +/questiondown +/sterling +% 0xC0 +/Agrave +/Aacute +/Acircumflex +/Atilde +/Adieresis +/Aring +/AE +/Ccedilla +/Egrave +/Eacute +/Ecircumflex +/Edieresis +/Igrave +/Iacute +/Icircumflex +/Idieresis +% 0xD0 +/Eth +/Ntilde +/Ograve +/Oacute +/Ocircumflex +/Otilde +/Odieresis +/OE +/Oslash +/Ugrave +/Uacute +/Ucircumflex +/Udieresis +/Yacute +/Thorn +/SS % Germandbls +% 0xE0 +/agrave +/aacute +/acircumflex +/atilde +/adieresis +/aring +/ae +/ccedilla +/egrave +/eacute +/ecircumflex +/edieresis +/igrave +/iacute +/icircumflex +/idieresis +% 0xF0 +/eth +/ntilde +/ograve +/oacute +/ocircumflex +/otilde +/odieresis +/oe +/oslash +/ugrave +/uacute +/ucircumflex +/udieresis +/yacute +/thorn +/germandbls % or /germandbls.alt +] def + +%%EndProcSet +%%BeginProcSet: cm-super-ts1.enc 0 0 +% This file is generated from `TS1uni.map' and `glyphlist.txt', `gl-other.txt' +/TS1Encoding [ +% 0x00 +/Grave +/Acute +/Circumflex % ? +/Tilde % ? +/Dieresis +/Hungarumlaut +/Ring % ? +/Caron +/Breve % ? +/Macron +/Dotaccent % ? +/cedilla +/ogonek +/quotesinglbase.ts1 +/.notdef +/.notdef +% 0x10 +/.notdef +/.notdef +/quotedblbase.ts1 +/.notdef +/.notdef +/twelveudash % ? +/threequartersemdash +/afii61664.cap % ? +/arrowleft +/arrowright +/tieaccentlowercase % ? +/tieaccentcapital % ? +/tieaccentlowercase.new % ? +/tieaccentcapital.new % ? +/.notdef +/afii61664.asc % ? +% 0x20 +/uni2422 +/.notdef +/.notdef +/.notdef +/dollar +/.notdef +/.notdef +/quotesingle +/.notdef +/.notdef +/asteriskmath +/.notdef +/comma +/hyphendbl % ? +/period +/fraction +% 0x30 +/zerooldstyle +/oneoldstyle +/twooldstyle +/threeoldstyle +/fouroldstyle +/fiveoldstyle +/sixoldstyle +/sevenoldstyle +/eightoldstyle +/nineoldstyle +/.notdef +/.notdef +/angleleft +/minus +/angleright +/.notdef +% 0x40 +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/uni2127 +/.notdef +/circle +% 0x50 +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/Omega +/.notdef +/.notdef +/.notdef +/uni301A +/.notdef +/uni301B +/arrowup +/arrowdown +% 0x60 +/grave.ts1 +/.notdef +/born % ? +/divorced % ? +/died % ? +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/leaf % ? +/married % ? +/musicalnote +/.notdef +% 0x70 +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/tildelow % ? +/hyphendbl.alt % ? +% 0x80 +/breve.ts1 +/caron.ts1 +/hungarumlaut.ts1 +/dblgrave.ts1 +/dagger +/daggerdbl +/uni2016 +/perthousand +/bullet +/uni2103 +/dollaroldstyle +/centoldstyle +/florin +/colonmonetary +/uni20A9 +/uni20A6 +% 0x90 +/guarani % ? +/peso % ? +/lira +/recipe % ? +/uni203D +/gnaborretni % ? +/dong +/trademark +/uni2031 +/paragraph.alt % ? +/uni0E3F +/afii61352 +/discount % ? +/estimated +/openbullet +/uni2120 +% 0xA0 +/uni2045 +/uni2046 +/cent +/sterling +/currency +/yen +/brokenbar +/section +/dieresis.ts1 +/copyright +/ordfeminine +/copyleft % ? +/logicalnot +/uni2117 +/registered +/macron.ts1 +% 0xB0 +/degree +/plusminus +/twosuperior +/threesuperior +/acute.ts1 +/mu +/paragraph +/periodcentered +/uni203B +/onesuperior +/ordmasculine +/radical +/onequarter +/onehalf +/threequarters +/Euro % or /Euro.alt +% 0xC0 +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +% 0xD0 +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/multiply +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +% 0xE0 +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +% 0xF0 +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/divide +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +/.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict +begin/SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ +CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N +/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} +repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N +/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX +currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY +moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X +/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 +1 startangle endangle arc savematrix setmatrix}N end + +%%EndProcSet +%%BeginFont: CMSY7 +%!PS-AdobeFont-1.1: CMSY7 1.0 +%%CreationDate: 1991 Aug 15 07:21:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 94 /logicaland put +readonly def +/FontBBox{-15 -951 1252 782}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949 +8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D +F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443 +E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765 +424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8 +E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C +C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63 +868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A +089B2D24F58EB8E26FE10ABCDD7E3CD24188653589D1A4F6AD72414901A60EA8 +FD3E24825CC05109202B448764BB9F5B304726305831735EEE62BBE799C186B8 +98D4C5BC2B7E0ECD3B84E0A5564EE288511450858D3BD0C75A995DB242839511 +B26D32E9FA935462F8A0C6C6A335512135466F70D53B5E3761EF5F57FF17E4BF +8AEA0EF6A1D626F515B66228EAA5630CA5C0D28BECFB4D1BBC35B763EC42F828 +008A67C5723D115C084EB2C13FB5D1117D3B145C695461B2989DA00B40308362 +5F5B08B2A72E6160B6BC3AA2AFA6B6C24497BECEC62FE40AB5FCEB6EAF23CD35 +1F5BC43C767193B2FE332AF23549AE33225AD7A7245828E0 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFTT1000 +%!FontType1-1.0: SFTT1000 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ectt1000, tctt1000, latt1000, lbtt1000, lctt1000, rxtt1000. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Typewriter) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch true def +/Weight (Medium) def +end readonly def +/FontName /SFTT1000 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-208 -360 1374 838}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA1B1ED6A435B5950D131BC48179F5BE3191944DD +8626DE76AAFD8EC4DC8241F2ED33E10698DC7741D6E45CF5A02FC6D2068AA205 +EF3C4FDCDE803F4D1D4FF03A079CD4FC4BAB3C558A8FDDF53D34AABB7D89E4E0 +CF76F77ECE57575C27718A8074CE275DDE4AD245220A8236400BE47BC76DE13A +9EDA4BD5744C71DB407BCA39DBC9D857122A1DA969E6D0915FDC1622AB8BB88A +93D2EE72E9A2FA73193D6CDF254252980674DB644EEB36A2036E04DB649F816E +E70C4C43E88609C8E8B8B84A920CA933FA00F41F2FC3C867825E2AC658FA0F7F +331323E22BD193A0A8009B3F0EE6D55281CF1076F1631FE509E79941FF08D0B7 +ACFEE566C76FBC09F3B4AA57959D4EFC34413ADB46292ED99CC8EC4436DE2CAB +86B8B48847353E826F5346762CD5D353727DBB502E08B934DAE4E99894706BCA +DC35AA52C8610137C7E336009D564831E1E7936600CC3891D3A58A539523329A +45DD54B8D76F43582CE621F74FE7F8FB06E32612FB06B66CBB3096C0DD63D097 +08C206A620CCC9ECB49CDC17295CD0B3C9D2DFCAACE46137490589D72A6A57BD +FE97C0CCB9087CF31EAA7860444C0D2A1B230F1879B1CD80CED3863680AE37F7 +39A117963BCA696B1EFA8EA500DF5B1C5F6F42EA16D46CC0687DC684B2AE28CA +8511448362E82092B10FE7451F92E7798EB30D015614C10FAE46C0A4D32FCB0C +6BAB88710E429820C597271F5ABF0D001D837D04F7DAFD12E2E3E14A5D6A62F3 +27A102A2D235520B22E90390172C479E98418A0D659DA46431137085B59AA611 +233042AFA7CE671A231C00755B2090EAE0B6E67A05EF66353972C232A17C555C +A15A5ACEA1F8AEBCAD32A5DE6ABAC1A2B9F68B0FB2B04A5D002635771456A885 +0C4906DA5A96C2EC5EFF288CC22CA0D995EF0722B978B52BBDB729D4F897E737 +0C4679B096318FF65F192BB465D4B28FD78BAF3AB21678BAA5AECECFB6EF2B8F +5C1F6DBCE36E733AA478EF7D37A5A17B42F33B216144EC27692ECCE1BF30AE88 +1EC4A20763CE2800170F935D7B9F8588B626A72E6878AAA1EA4D1C30B41007EC +D00A8CA9E14D585AF5AE654BD6E4364D88B56C177DEAB05BBE6D0EE4E8CD0202 +0279311E035B0D236C1A2A54A603C5CAD6D76B126910F65A6DAFC7E0EEFDEA6B +C939C4410F8E70273BB54A16ACA137B7B44FB8CD1C47F94C807C9FA1BD66228E +893C92495C26B34FED80C7FA5CCEFC57777DAE0D7E0BC6DE300802FACD28FFBC +D57D4C5D22F8935DEE44582511812DBD056FF702D72637BA8487FFC56F020D99 +3521CF1C39BE1F7B3ED9A79FE6FD1C37C206B42402DD103D7A7FA1FF6AB9E911 +A84D23A79CA0E338634C54961BA2C04A479B36011E249438C474456992AB83EE +BAE6154AD1F623FE0175E4EE205D1979289411B61C6B61E5CFCD69C6D0DE0BD6 +191A85E0112218A9F662021467C39F238498EC50A4B3771FDEBFA2674374AE0D +BFE1538F6C80E474FC4F1469DBC64DF3F4CD8ABF006B7A778429292BC3DBC145 +D5721C6E1799EF6F80B4C9AC15C3F19061E8D9FF7CFDF6943C1B1F500FEBCC23 +BF2C07355D78F4FC9EC1255D017F11F3B6F289460D57E6D34B98E9F793E6C91A +F276642B081669FD63DCCA3F1B81F817CEFDBB6560259437E0DB5D8E13419C3C +7D2C9C43E897C8A1820F4E426160BFC6A24734B4587DDFCE77CDB4FB7E107BF3 +E2B8AEF1FAB9A3DF7D536993F03928F90760CA556A2ACC22FB6D9E7A10EC504C +49D1A83F4B69DBF94CA8AA45EFF92B858872056BA273B76152A553E90C85A080 +BD473BD8927F9372F9F28C1F1C53B7B8D04565D40DA8F8FA270F294C5BA315B5 +4FEC0FA1051426E23A68B7512E85E0C6421B5C9851489798FA4C3002278F2473 +A22B3F36BA5EAC88D62BB984D5A4211E2D9A90AC36E4117B600BD16FC67A96E6 +6C063E6A81E0F2EEAEDE4230F2283BE196C9252A013028D778A262845F582D9B +D75E81CCEC8AC58FEDDD21B5DC56DFD7507B22108F555BCECC1BE9338AA7AF0B +682067181283997C5C3CA85D0AE7673CF54BAAB62E1C2C6500516394FEE01DC6 +DB2E1605984125252397B8C516A5074C31FFEC8DF758C4BAE891B75FD2D60301 +46C91742FDA3F4ADD949461DB9C903684C07F202273CC8E925191ADA792F6DDC +36E4FF07A164FC64AD4890879C42F0C3564A45CCC3BEAC68A1029BD6D77F4282 +845D720CDEA9C3B52A6A2A12AAEF138FE0E4EFDBAF225C90D1B145B394BAB0B5 +6007BF7CC27D82D0E5CDBC6F4239214DDD264FD3C93C31191EEF52A82266AFE8 +AE202EEC525DD9653338302C07EA65F75BA912618D5A4E6D99A4BD878918894A +A3C6F4E4A9AF80F3F61EBD11582AFFC61736736EAE8A8ED1D017A68C6AF8345F +37A0B20E85D4B25D61371C06112231166D457F08E188D95FC410BC5468366D8E +93741A4C1FB84124D5F9BB1FB1585EE99FD49D0BF5C9B5586FFE8A1B1ADDE7DE +E99868A3CDCEFE583BB52FECB20F13A38EAC51CFBB7124D87EAD421EC0C6484D +C0B9108FBDECDEC924E2694432A2E8058C01AA77FFB36D65AC678459F1770219 +50694B571ACC97D3F5E34AE3660D5C4C4B218F9B7AE961A7F4B692CBCBE50B60 +6F08F42558D2D1846987428044C677132FD4C5CB8308955A1DEE8764E4C2A344 +633DD93001B7721A8D68D0252B40A0DC20C1D5F5582C4D4B589B8BBE400C7EDD +A0E5FD838FCBF3911574C4C970E4D9BD6BFA8A80DCC689F9566A0DE3D63C5243 +1A65E478FF0C916F7B76282672EC173561C0C632F670F5DEAC046F35EB2636E6 +21530773D3653C9865BCD81F0D6663AC4B0288339BAD6EF922ABE427471BA9F1 +730452A8F3E9B611CA4A9E713E81C289B8919A64ACCA143561645BC8D45F4E6F +5C6488D48B87C1355BF15154E8D4DB0AEBF35A2AEB0A879CA6E6D86A6065AAC9 +62D26847B0C7242FDF5115D36951E39295F87BFEFD0F80603562EE1C00C93D30 +AF46D4C192786B6E27A3A4CDE600D685E658D4128E55DBEEF0D46178456DE916 +14CCC4AB6848A80FEBBECC37FCFFA98DC52C5A8A9CB796AD626B987F94AB3A70 +8D2BE2CA084DA99CA1D9F212A63B7E244E9274D6DB8C406BF8B71004860E8E6C +C916C66B1F0C351CE766EDD8BE8F69E5BF7D75231D8BE5B2D4B5449A16391934 +BA9A764BC3650C989CF25DDA437ED571D067EDDF122A4AA44FD71827B7DE2E03 +6141216BF5D5EF773A57203C0DE6916573CC3B75A9E1106658A7A473F02990A1 +A24E23E00DE4CCF342930249E6379C3091B6FB68CC04B71CB6801296E3BC0C34 +6DC331DB0525E61CF68C89F359DBEA1B2A3A76E7EC35D197E2F9758181D8DCFA +8EF73ABF373060EEE33A7BF668AC395FB38FB91E8496F70401D488013037CCC3 +1C23AFDEE715E866899CFC5FEBB46BD6D3518C76E9958A7100269B4340B40C6C +B5C4BE9E6EE4B1A6F0F76183D6F20EA84AD2FADFB285A85B6CB9D049387EDA75 +8AD232D663BE4CEC9E4106C355FE14B475E2A39BB166C4CD50983A1E94630693 +083C54DFE7D9533A766C23D6B77735D6B9D9782950B53AA7285727B3089C17BA +AEA088C8C57FE85159BF0E1C30839784EFFB3C8B32836D7A8DD616C38BA55D08 +9B39A425D899A881F67B846BDD490EA2DEA2FF25A526C662079EEE8097A410A0 +340B15BC34C21954FBECE4294E49F4B9985C5359F94510E52A95B589BB79E23D +DA5BE8C746881222551B2B4D0BFFB7349F60E4B9627AA7BCF1610EAE3670B71E +406E62A183600D59B4ADED6C960552AA910F101589733024558056AF38354367 +27119F4ABB3259E4A4B7A67D70FD8D0EF66E16738D5F6D595FEB07BF0645F4CE +72BC8914C443CC9992D3DFB95F8F40F76BBF74833EE3D8BFB28C7427F6BD769D +95FBB92A8ECB72DD837DED47FF824A9F1CAD8B31A931CCA7A1CE39877D7607C2 +78D66E997F6B0404398E6E784B34ED26BDA0EF6499C3919307C65E3B9C778BFC +EB2F0CA498994F27FEB1D9F838C028BB9025796FB962E145D2980B707890F934 +9DA718C1BADA4C3A7C703D76BE9754B9BC76A374FD7E696111C6784398A6B993 +8B88C136653A30C759E4A12E7009F4D26AA070606D6B3EE8FBB04ECA771E3DB9 +DBA6C09E73912740AD5720485A4734C6C3B877F141E0A53BFD6128C6D689E79E +2A618E3E6FDFDDCBECD3A1F9E102E8622B3B97C603FD3F441A31BE631FC8F923 +72C3B9A58700E2408EE422205F06E53DDE7DC2367523A7E371B6FA1F8FA0FF13 +E6CD6149A2018E63901EDCF8E0536F1E315883902B4E1665B7E60D93C1D74C78 +A366D12A7F261180870EE9206A14F87CFBCD04C8EB8090679A0AAB83C4C7E515 +88041F1166E1F634F3FF6872A61348225C7190D42E0947314DEE4B2AA0D78837 +D471B49CA213FE1FC68D0D135F968E5840D32212F7DCC1C6FF59824136850419 +7ED83F0173EB382D5C9AE201C72F1CF3116B9AAF4D5FD693A278543F8C919BA7 +CA55BB17AC1A8DD8CB0396724F69FEB1EFB73F732AAB5D69D4B3342DB4160B2C +8A328058258481C92987BF5693ABE477D98879AF4A0285FB83C5EA58CB9CA862 +84D5B1047D961A1FC15394931118595CAA6C23D8D374D22E40041051B6EA7DCA +DCF56E6B16AE5984D1C6CFF61F7861035A6DBCE0DDB5AF2599F25A6218DDCDEB +75434FD3280C1877D0E38EDBBF2455AC3E30C361EA4CAB239F872DDE55FF44FC +6BBAAD5630294C50C251504BB224FAA6C5B2428DA6278DC5EE803EEBE036BF4D +39A076C1B6A0598288E48D697DD82A5CAA1CDECCAB7B11E07463D61B3CAD6846 +4F9E2A82FC86698A98A861F102E034896696CB15AB0D2CBA5A0ED57BBE1CA421 +C3A0E19589BA559B91158E1FB4F928AFB7485CBFBF627546E4CBDB5385DB88E6 +383487B4E54C110F8C447C0DA289CCDD9A56E20DB4D95CEC8EA8DBC221C453F8 +2CCCF60DE084BB87F375D8CE42D32462F1C3D58FC08C1C1829EEBC3DB014188B +E6CF894EDA6A844D735605B19576C6E996F73014905C6B1992738BE9680ED0AF +048E05E7F72873DDCE2CF2A3E9928B2A44EE213BDEF78A11B1BC2E1EBC71F24A +1BD50967B0076E8D7BC9C84328997836AFDDEDB9161360B2AEC3BC7E25108902 +BD0AEFCE39AD25E6038ADACF9545196C77F76F4F39EA753EC976D33278587D1F +82D049A4496CD8BEB66CB518B519A969D94AB036E7773177115543623D2E9507 +5F6FB859EA249A42BFF0B2C147FE30801CB2CFC301061317EAA5E4F9A712DF6F +7F45EA4F797E88CDA7BE2707FFC11AA74FD1FA0BEF490DA3742811AF109413BC +0B29DF6191142138258FE2EADF561340EB8C93904335AADFF0A5F06F01B16055 +3243B469BC0AEE6A390DE05D767DB0DBDF9F8AF8CDDB3D005336002BE8052103 +D8919615F6C1C0FF2E1488D3C79601217D77E9B3F3A3B217A720155554C7DFA6 +A8AAF5BA056618353B53FABF9FD4B4DDFC00D98E345CD210EBBD41A4AB0C35EE +0284D8788868EC9940843DDE7CF177F105109C9B8C394A4E7C532403CE4F909D +95FF90EF628D1EE3A6BBF18865650B6FCADDB9EC69FE3FE441A1772ABF9DEE85 +2FC6608737E7ACFA8BA78999E211A4511B30EF41F4BDE20A1D44481761D0CFDF +3028044C9858407B4EC0E3DC4C8782D62DA118527D7847E5BE4D370F2A3A1E68 +8B855652C87D3671BB2C0DF36AECB257B8990E8D3B473EF47116D511D53544A4 +AC7A7204401871B6AB27D3574555BA1C468685029B26DAEFD0BF420106481EEC +37407D44468B5D7134EBB6247C6A85C9882C8DAF3F01E7A89506A6AF94319189 +C58527B0078EB6BC84BCAE2090E83E13D07B45B46394156D044657AB2859DFB8 +AC2AA066D7059656980DCCA78F5D765F2F94AA4FA23C0ADA3AFE7421655ADC95 +2787AF954D0EABDF01663308A8F703C80ADF1894BA38DC9BECF503EA4B2C2196 +D40D3569303E38F3231E4491254E65B765682B4164A1151E2AB4FF83A81BF408 +5713E05E832DB6EE623E96C2EC5EFF288A7C4785D45EE8561E78D899BB113B86 +0B5E4AC0F43FECB1AE1DEAC9A2EA4F990890CDCFBDE19A3A6599CCECB0E8BA2C +011AD8D9926443ABE042864A1D5AA1A65FA8A70E9FE89FFDF5DAD574A959153A +16E4E9273021C71EF12B80AC39CE26CEC4EDFEB813E3616D303D67BCD755FA77 +4BB2D52CF54D7B5806CC74261E4410E75A165AD2D4B58112210A42A86D467D45 +1A5EAAF3EB99500F4711647F314EBD8B5889378A93D35467F35145019FE5DF8B +D92BAA553691D73D69E851470FDAFDCF959EEB915436137CB6EF082F894C0586 +B9ECF3382EC6691401FB5ADA41A656D5524B14273B0FC7B27CB88C82803EC794 +37F223E9C10101D277B6074249BA9ACCECBA4E4A789FB86DA67B33D704AD34E3 +1CBA4F163AC417B0BA129284A50ECBC7177C69E8C643452EBF467CA82A963E48 +0EABA5F1A87EB189C58DFE93C6030C71DC03CCD2550A189381A3E84C3E122D4D +F1DAFDC2079856C3B39A6B9B91525E753BAD61943242767F2470EB7D417FC07D +5960CD15D4525F2588328239B5B04BF7CFC2FFEA822810C686E0965E718305D3 +E9D259B0A89FE6BB645C05493ACE02FFAB67E3CF895F4E4091599141CDEED12E +65F9264649722E29A5C4C754A2EC24C9D1D083F1B599B2907D05DB2E029DB677 +7C5D5C35C00D51544BAD19868BE3BBD61B36402E7BC5C33C6AA6BB05F5D16C5B +49FC81775C9B912C06355FB2231A78C2391EF2E83DABE950804EE51CC1D49288 +F8FB00A6030C9F19C87E31E2ECE16909ADC25E5F594C6916B2F3D648BA9BDD32 +2EB4431B806BC3C6CC7B670228721A619D7127B94CDFC22697EEB0FB0EEAFC80 +E8C3E8AEE15F54B7AC99B31DFD60813DA6E3A24F06EEA84385AEE03F083CF710 +10D8C6AD73B3A3C3E6540A82FB89B797E0A7317E069E8080C28227DF1B8DFB66 +FA876C97B265D5A302F2500976633FD02880645AF4158A86473D40D55A715742 +BE83214D523C6535BB783D29CBEB162E092658E4ED70CB60B1E0CBECC799B31C +973F13C9C948079AA5809F6D43CDB4BEF03D4E3242D9A72DD6D94F98F8AB40C9 +1FC2688632BA024922A34DC4C15F6CAF8BC5CF74403C5DCEFFB7DDAC4B5C5F8C +B9CE19B45F4865BE3E388D04071201F95442062CE3720449E215CF856BA3554E +9DB7011AD643DE7E553889BCEE2D5C7ED73B8217087C7F090C4C06B1E4AD1576 +4255983C3016C84E896E1FA498AB5D1D4704C62901113CC846CCA3FD911D0F55 +0AACA18CD14FD7041B657195A0D094FC997B3D29E86D90602FF8A637E2DA191C +C42E08F69CB8DC67B9D15C9E5137A409334E3AB3BD84A30BAA2C99DAAFC1FCBE +CD5737A54F42E5544306F49E57DD52E571C9E732B59F27688B0DC75E69647145 +E6B54844DFC660D66AA743F9DE3A3F3BC29FEE0A4E3507A37675375B1A38F115 +B2DD67A699A0A7C72D96FC7BF4D173A040D1223B416C798A1610824D9DD63429 +B7FB20654D9E97727C9FA599761CD959CC90800FB64D740B7B530CA2CA002116 +C8CA92763CE6FDE99BD7C7E58C77F350745419978A5EAC4935E79D337791BC33 +BDF3FF312A01ECC3D9B58E1EA51EF4EC75E872A129D99C9387A609618DEEDE0B +09A6F4ACFC6FD5BAF7AB1F6CC35DCC54ED2957908807C022082FCF4CFF4B0194 +85623B77ABE30FB064928B6B7DD25426C4022B108B0B357C8018818D45C5C9FD +4BD711DAC5513C4C54CB239F4FFE23AB6654D76965628DC4EFA8809D965B9215 +62106878133CA0842C59D11E66AFC6A4FAD394EB975E2E4918F926DE22BCE13D +1410FD78DB6E47E385AF2A16B5FB82279C8732CC8806C10DEEF836A92E401BAB +E1E5ACB80FBC12AD3D9EF3C72B2F4D4B589B8BBE400C7EDDA0E5FD8385DD7C08 +75252E8CED0A6137CF5B686990B9DE976A5D129F96A46EDF78A3A16B901C82E8 +151AF9149E39583C9519AD6A182381D7D9B79B5FD675DACA850E51A8A926A626 +246FC810985BAEF652CF4FBEE1AAFB943DA61A4F13F07948097F65C8B6E05AFB +775299BFAE4730B4AE0AE0E053DA4FE3B7D97FB6BCC56744D3058B297A459BFE +5FA041022BC39F96901E870F2A99727E9B742C6F3C2AF38779693C484E86E0B7 +2FD3EDE39DE065FE3F5061C376B68F6328A0D8CFBC443633EF66A9861E24297F +610CA06395445C8D9D44F0652A41A2DAACCF78184450788700B06BF940C9D2C3 +516B02EEC6649B6058B2FDFD09B1BFB8075262223B171873FE01EAD6BD532B4B +D12FBB26487C1391B89116151660B838601530C9E5A66071A7D4D9B490673720 +FD7AAA642D69A32FE0033C6AAFDA475B518220B949907BB3E7B2C6A02EDBF420 +29F90F5478C62B86F8DF4CA2265E3ED60E4BFCCD21C541FF71FF5FB1897D254C +8097E44D43DDC787FD905E60E745D73A25A207BFD8AC1AE45F1C046E7B342ADE +BEB96708DF7404667090910A9D3DE172CFA00DB4828C16E21FE1FD71A5844B36 +523788C22DE6942CC138448C37F4A4453F77751566E69EA4C25AAE8584E61BCC +2DA3560B73E174920E108B7278BD9C785DCF018162B5F89BB344535C5248234C +F92C09C7BB9ADD012864D9AE93C8A3FFF28ED73B010AB154BB4973C6F6ABE55E +58A9EF6D192C2037240EF667AD49B28DBC35BE525A61FFEED923EA27EAEB8606 +431760A1463EC3CF8C36B2EBCC5C64987D6CE90D91932D1F99D0506C9A9FC184 +1BB0B6213ED78695FDF4A2402F8A7548AB9F1E8B352C7CB83523CCE94C53CC56 +2ED6B9676A91007F808199C442817660341B29E2D65C54DB4338583E1D059A7A +7C488D97EB926DCDBB423B7FEE07B714AC2D98DE543B6BC1825B5770DF10BAE2 +EE8A8DBD8D19CA691A7FBC1EE9476FB0F676D527ED5D305897803177ACED8C05 +0CFA6D615BB019526A7710491A203C9E3DD0C76B9E2C03476B5FDD78C4104D6E +3E529553CF93819AB673C87D615925574D6F9364D8058028995937A97C50746F +1DEDBA5CBD888FBEE7395D8710E242DAF135E350026E5725E89CA88E5F1C5CA9 +A1DBD1BA0F4F94F17AB9ED2AEE79CDE44C1E1EB4D3FCB27B436598F94802A345 +7CE180DEDB9E267C575FFEA05997C6703C2D85F5362165916826A2E400C936F5 +EBE68622562948C3E38C2F503FD1C7D665E60DA9F571CE58F1F9695B0678D1AD +DD97FA205223E3920B649E68B6C3596AD5B76323D5EA47103BFB5EA3EF6D7A25 +4626325582AA4ED393AE0DA2AF55D8FC2AC7FCD235411116827426F01F8C4954 +182116538604F5CA15C2FF5832CBF3AECFA6CD2FC60BC0B55C08AD38E35B8A03 +C0683525D02165FDC9BC2AC5C698625CDC122B5C26F73353B2B178F07748EB6F +DCB0B599E9D6AF5AE575BF78992E2BC1D508589CD0932EEB2BBA8646E00976B9 +1930601FA276BEFEA4D97A2204DE4FD36B08A75400359736A68FB479184FC281 +804EEBA95F6D67C828F042A7A1C0F6D97B7D2E3451EF0E7FF803A78A5EE0A079 +F83E8FE15486A21F56087243E9287866E237994D9E3BB3BA9385F5976ED23456 +AC3D4C879F9446FED59ECA6D053D9E879EEBCD9C390B9922AE213BFBCDBDCD96 +CBBED1D13E534D760B81F171E0DBBBE9F9F51F34BDD076DD78B19A667CE54354 +3538EA7D20E51721CF6AB2EAA3CB60D79E23F54B876DD8797D292A28C2708C1E +23A5EC9CD2638D71FAECF6BB7662E0A0A1B035CDC20019E76A7776F3E728401A +77A210597E5353D19FD21D6BFB93F429D6F6CA659675D149051CF35156393391 +DED7D84C0DEB5E7CB52FC8FAA96231F88065DCF3D8AFEE1D979478829E0C4DD8 +24FFEE5A65FB6F6F04918616275D53AA32542DC7583589D3E980DCD5B45022C2 +12203DDA6170F0361D60AB8CD84CDD725F9AA215ECDADA16A39742596FB69C1F +8EBE330CB2BDB5A8A96FCFB635513649918FEE4D9EF7C396B69B5392D6079124 +08F177EC337EB89B0D6A68BA35C246375D0E8E157B98AE724B8A554A8F1A0484 +33A91BF5664E400643C65F71420C59DF84DC27B11B312E7DA4437787E72E52BC +9461950F9DE73C637B63ABAF28FA6AB8317DBEAAFE36D39E08608D6998421E4E +F59443622A9652257E03B77CB9D1B9D4A50B8877A678F591B0BA28CCD77E4E88 +DFCF68602DD867563247DEEB6001D6FF57DD76E61D94F03151EB9F0544ED0B29 +51AB6BA227F4B025E2709855D07F9CDAE97E08179522872F228F6823D5BCC753 +A3214F791D6C8E217CE5F72FF6A8ADFA062A4EFF710C928D72508F7E7F720722 +566FE1AC4C1A47D8D201C7775AEF178D322A1D2D427CE3773057AABC817A74BF +FE3BE651E9411C7A2A1F36F7BA2B5BE5C7E7316199A3FF24410BD61AB42B1DEF +E167854654F1128D8EB9415B91763C95C6BE6CA90B13FD7A8F697A832BD25B06 +3B730B9880B8F5FC26C02688AECA95B1465A7BD8631FB6ADCFAAAD0D1FC5819F +C9BB9D8225ED78467C772A19AFFB507C6D6B65DC64461585B8453D855787ECEE +982634FCD3A034E3207234AD2D0CC97C731045C9D7E0CD879B9C6D5E51340F71 +849A259AEDEC98663B091C37B817A12B3F134A627E469C10AE179F63460A5270 +DFCA7AF281390C864C18AEA81E9FB2242C7C6253776965A2DE15500F281FDD75 +F5CA707933CD98EF706460832D64B6BF32B2F0E49F8B0CEB5DFB419C9C9EA635 +16AEBCEDA14553BCC09E0210A6E81B848B33A9153F08A794E9CBF5AF0F1E4F89 +3C9185CD1160D5C0D13E8FD9631308A9F3E86149F2126B9FEC013516F454AC5F +434DFBD7B7CA6839850E7B06EB092F3A5B8292EAC8693ADF3452162A35A353B7 +22839B5D76C73E8879CEE8A0C14CDCE2E1AEA9A1E80EFBDD292E18138F314122 +BFCAE54E6B1552C08B4D4B025438D7424853B162A9EB1409B5A3C0692644C578 +26F66818422E6F172BF651693A5BBAD8C05BE2A342487B79AB412E0F31DEA076 +5DE68BD63C0BF24A91156AA427F1B137A4996AF266AEC35353443B41ACD0635B +A38E0B4FFBF7D404766698A5F4EAA1372C41A4F16555D9E363BB015893E25183 +B2E47EE4627F41E20B449D3D8AD0FB57C6EBF725B95B9FD181E2BA4E6604E7D4 +72D1510F44AD5B2686B09A71C7D6B094B14FB887F780E7462F9CD9C54C348D79 +405EDFB951F8F8298B99FECD2246B58EF4993A3F7C018CE51A09D4A384921BE2 +B6EFA6CD05437BCDCFEBCA6151D282424C23C4B9C00855D59ED8957797F60CB6 +2E72A0CDF05C62FB75CFFFE2C36C0D34E237C9582217693A543383195F70C6A5 +5B7159AE831E4152EC9B793BF2D53367B1E6FBFF5AF6E5E4D192A58383AE91EC +FD67C4736B0FF2EBAD5EACD7ACFF8BAB7FA82E77FFEF495378CC4B76FCBD8E09 +1A6A6C3F15E321A8281A2A331FD74562907A6B3FB59E2630BF0BD422AB9AF80F +4C752C2E1C3621482AA69170D8C568BC826E976282F36AFCE7674FC839A896AC +F9601B7F3402C606DC447906C342ED5688431B4A5884F19F5F9D32D7C36999F9 +9AA0A79E571C78B8FCA478EE7FE229BDE02F74CD54F5703E556A0EFEE8E2F748 +2604F556EE58F280B44B3F03E5B41A497CDD105442236E77C9814154BE482469 +5F958E5805EA0498784A0AF7E514CFADCC0825A72B9052D12560F939A9F2F0D0 +7EBFF2B1E990D07CD27FA7C9F60AD9B71E44E5D1F0F33BDAFB31923682FBDF9A +818A99F8259826F363FA85629262C35CB0F6545EC6C6AE763CA422D736057868 +522023F378096F1F47F1A85B49BC1BF8B9393A03E15B55CF0A88149C84C402DF +56CF9EC35F0C956AC0DCE9993C76197BCA4E03FE5BDBF8BA6986F47917C66C7E +2612596D4542E14283424C7C6ECA114DD7A091EAA9FE65FA941853BC88158688 +1C1F9BC6BE7DD6D130249EA91F4E34AF897017BD08CF775DE1403EDCDDF342E1 +84BCC24CE9E0C5494CFF536C7E3302A322A2995D6D1D9BFAD5E02AB2E4B32257 +1F48D6F212356B377BD98222DB27A35F597BA5312E5195AB370D623DE874E422 +23B91075DD808C5870DD80EB0197008F9A28C650E3F6C38E004AD2C9BBD8C39C +81F21C56B2623C58374441F7EE5A65FB6F6F04918616275D53AA35E1A4BEEACF +0F20ABD7B189BE15C3FA96CFC7FD11815C1FB3625D7511DD852CE7E520BC6D77 +AEF465A629E404193C392C7D7403977D4F23BB9F698DE694994DEAF0039BFE42 +C42EE1D31E06373CC1A239519B2B7A75D11226596E952453219BCC71B0CAD1E5 +477B27A7643561F33145C58C1F0B5B22C63D8BFED17E524C96C5DB98947B60DC +612AFEB805F33D687F455A89F882C28588C18236C70040B5122CB0B191402F07 +562905FC69ABCA15FC1597A826ABCF197EA977B02A371C84720C265DF004489E +242831A288160C4C898405F69C6631D8C42132E28AB2B0E688AF61487E99C47D +0DDE7728EF86C23136F36B5C88A93B0287C1173D0E483CAB7EE2C16801A08985 +A01D861615D236E560C6645804DD325CD55B0063464AAC5DEC8FF6C4A66FCC9D +03F2118A1BDDE0767AD09AA9EEB6126A705DE23C3772F9C64D4F7E587BAE310F +646847DBC2683798CB6FA5EF4ED2D0F2E6C7CB5FC6905CE4812937D461EF019B +F93E970D8772C94C4B2F7DBF533F4F66E975B533E947302946217DAC4604A968 +08B058BB802747F5A501B0D2C3B93F057E59658B73A447E57217E085AD5F0023 +63255E772B201CD20AD7EBFBA34B06DC47BCCEC2FA2C16E5AB466B3679C080F9 +055B426B1CEB2D97B2CC9EC2DDF1ADC7E1846EBD47D78BBBC247B5C1D853202B +9045E1F2FC3FF4B4691670B5F7CCE5B7769CEDAA96D6B48174EBFF56724239EA +5AF8B2653446BE332D4FE8D9901B80DBB525D36D66FAB2CBA34119168FCF5ADA +42FCBA1EFC466235824DDCA7B641D02E0683AEB78281FFF69663FFDEA4D5F5D7 +A25E9CD97E1E4DB055DC86637A13077DAD37CD2D4D036337A1D2AA8496C5E64B +514B6D9BED63F0B8B975C1C2526861601251FE0738C56BD11D3E0E7102CF7D56 +855FAD52FBCDBDD35046AA1833340952C7F290BCD891BB19EA5D98637ED5C642 +4C6D0F129F45B209431E02569089612BC578D3C537EAFB243FA21C800F4B91B5 +0946432A4B4653D384DAA5D28722DDD8079DF50A4798705A8665218FEF3D3AF6 +7C872D90478F13CDDA998A5DD4D958135EF43360E849EC86CBC56929098D0F4F +7EE7EABA27D325DF088DEFEA3B4584439D34DDD10C20B0E29BF9AA2CF6CB05F2 +117C2BF5F6390B4641F2700D90ABC234EC1C90AD11E6CD36404D977924849293 +9740A3F3926D1C3FAFF112EC216EA049088143F1AFAC689973815A3AA97EE430 +0FB87CF551E3CB42939C4A75DB0DBAFFD3B474718963EB8518DC88DF32159097 +097DBE20D4255E38D6B30517B787EAB3390ACA6536BFEC998442FD18F45D29A6 +B34AA742A02B4D568D41399F655803061FE1931912495DFECA687198C2103560 +EC8070F7A31C6B9FEC013516F454AC5F434DFBD7B06C6396DB6D599382B527CE +C0A3F3999658DB2C830B37508D41EE2C919144CC9C39DFC1AC5B8C662810D425 +6F6AADFAE25688890C08AEF697FFE9D252C287426208A50CE1F0C88B9F1C3F5C +60ED024F57E82DD0F836357DC291B1154F467E3AA6A3DD52017F44BD5E340A33 +23DACCCA644D873E9AFD34DBB9BB4DC9F1318E795EFF8519398751D8E58A28AD +95A88EE5097395FA3F54FC400D50D8D3C5FE84137017A6EB6D66CE90D66F75B5 +AAE49CAC93EFF62AECD56AE90725D1E6E44570ABCBD756DEB4D9B7310834A0C6 +D7830B3F70482597F93C05E78C1E42A8910EE6F87020FEEC2DD71FEF907FDABC +9B780A8A3167BB4A8BD75F29F547DC0CADBA83120A28F364FF6A8FF7A6875560 +2573F4AB0BE56BA2765C4F3288DF26DC78A89DCEB95365D25A38C44652324C00 +622C36D240C5DF0BF04D8452ADEB43FED9A4B69F4881D91D839C608CA9EA7106 +AA51704D965AD7A4ACD99EE437DA62F7E7ABA1EB681ABEC649ABFAF9EACA657A +7ECBC000893D9E8BCF2B58881BBF47EC404A81B6A9BB2D9C19FB99AF7B8FD3E8 +0F08257CCCE9E820C676AD59744243E221FC106E25F9B8264B66F25512A49A75 +66EDC50B84328C615C958884EE230B6F12958E1B7CAA4D5567CCF509EAFD6CD2 +83A8F2F53E731E3486F3AEF7B3423A172E86D014689F5348577422111BB81D4C +8B5CC196E484C84C18A83C7E354CF67772E6CA44029DBEF2456260EC81DB308E +78F05DBC9C0495582598BE040F6219E70C5AA468707DFF638E9EAC5120298ECF +B4F73F14B335008DB7019DCE6AF876074797CCCA4FE1A343CD0369C5B1A6EECF +E99F8441B5B6FE9D74694A77D5C9660000C37D5EABF66B268EFEC16AB14C5291 +EA697C5A2C643C0A7B21BD1BF3525DA9F7A7747E1F3AC1AB7592836AFA6B0644 +C3D2E632838FF7E92558E57DE94D33FA69991C73E952EF06E6238C39A65DB440 +9911662C427A8EB594692572B00A8FA0CDE260E2F82564B714D43DEE9C4100CF +35A15B8F1B5AE07971CB9E40267EE1B0A873DD9D5E944A4B403C80A46F92701B +8891ED61A7F4B692CBCBE50B606F08F4255AB6A6BF7614E76EA87B67762AEA55 +6116751D6C6A90C0F27E9F0CCBB4346A3CA6A77F93D0C127F45889DB56DEFDE0 +F026FC3AD69E4DA0F8B29A013A83DA08D29972E847854456EB95D65CD399454F +73E2A945D007DA280A2C35FDD6825D6F96EA5F0D6EC848B7D0981AEF2C1227C8 +E651AA2E5F8CAEC9D5DAC8E660E7CE09CB4359739E83CE1430E49848E89E52FC +0F5F6F942354AB4521EAB6B12177B6A994E8EFCEDA9F95542D5E464DFEDB5368 +59314C2D6464C49BB59C4ADF00EE6CA2A9577F3700C4BDB7CD07D076306A23C5 +757DB075231885980113ACAB1D2ABE55678E22F4EE561ECBAC6B74F6B4620EFD +B42431E355F54A024225834F2E921D2553A308202EEE0303EBF47707ECA0EA73 +E1EC6AD79A1866FEEA2D4BCBFA4821EB2DEAD502C301F20E9FEA7872B3775E1F +E556DB1446BB104823F78C49A1CB2A7BB63A967713DA83DE770672A0F63069FC +EDBF29C1E6DFD17CE34B1C2E81E24DAC917E30F41CE95B78779CE5C835CFADDD +DCBE351F4D749EDE804FA0FB6A332946D68AA74CA233E2C2592F0190720043C8 +D9674FBA5BDB44B28010A488D250DC6A85C3FF736F7D096DC2576C834586CC36 +DFD25686D44CA34B00B0F3D4681D7F37FA77D390B0541A6C4D482154A21DABA7 +EAB87C34A0B238C36CF97A9DD83AF1DF3783D87F5FBAA8CAF045383306CED2D7 +5E51CC28AA6F19997B6054D59077B886BD0FB60F08C7D6A1FD1085D189BC8EEC +74EFB081B44ADA464FBD9459756FFD8F5C7D8B66758FB998DA57F004BEFB4BFA +8E2E4FBAD731240D73C246F1DE23CE4B5A6697DD7B621C7C748961B3EDBA4877 +0D0A5EEBDFEB33DCB53293157F7E4CAF42C67D2146183624A37B4B7B953E1A65 +1EB58CD9A51ECECEA158F1CE2D9EA092A7A7D594AFF8C59B47C1AADE53745A07 +CE9D68E5FA8B3C8F4AD127CA3B3B0AF9B65D397BEBCE1572CBFE2B33A2B5C718 +9C9C0B48E1BE9F377BE69E0AF010040628CA412C78877F7EDAEB65D26C18D395 +87518860D9576C3412987F9D18F3EB4E180FC3DDA50EC32EC2C33127357E91DB +AA760AE03F986ED15174F96DB394B7CFA0DBDB96466731D94595CD7FE4F2F92C +55615582BC712F2F50B93BF851F4C62218D50BA3CDC389E387C6077FFFC1556A +37F3B333A43DA135E97C3E6D439D3B8A2E27BA87234C821CECB8B3288C07A013 +A2DD21516A967F022225B17BD1E1BFE09BED045DEA5802FF7346FCB4162D57A9 +BD44CA1B3C87D724C67E3419BE6CACFDF4A396768284C66322DA9AE789E42C28 +F7C3A6365ABB15891383865B4254BD6CFECF558E6418C80F457EDA698C165698 +4DB029444F6DE6DDB7E348C957F30616144B502B30A79590B14D337D1D25CB17 +7FA2DD809E0E520BECCFCC49AA54AE1946E75E8AFC7F8B22A10690EA3081B081 +B70301BC3AF983F629AA7C0FE58A6B05A78F8AFACE98EF2327263012F9F28C0D +8B7977BA7ABB370B09EBE71CA5DE4E232900C021C15494978306B7449F059AE8 +18125C7854F7079FDE5DCA0993CE33FC4F49F6783C619F33B316DFA9B30FAE7F +4A952D07839747F52D5456B31A45B5E03A6D5C35E233C362246E23C078F3B782 +074D8BD9BD31AD28299DF7A89C5FA1039BA22A2D2F326F87F3074C4B4777E120 +CB75EF11E395B90DBE91104F8390E0BF5E1A194F88BB05F899CEA21623EB7ADF +2D4AFB328D8654B7651A9E45B48EF9D01AD7EA7B125599564D1378D97326F095 +01396706B9C59CDC172946DEFB245F63628E49507A3DB2390B732BE2423D4BDD +9AF5E39658B3DAC8BC23B0EF135977DE43A11A39BA53810E584D473A1A8EB69D +6BB0CAFA629EF90F51301680CB83FF01E183E50DDC83CC3DDFF93BA686CF408C +84BCC89E5776278128297540CA0CBA130D77DA337690B37837B7A577FD2BF400 +4B8ED7717A06E0E05A83921CC663F7A79B25BB0D0AB9BFBFBB1AEE419F5EF4AA +D6612EB38E12D069F56424D42970FA684738079812EE1A4B61F5B691F05E7955 +5EE44D702273A4F7C5F91247BA7417F3742AEBFCD0C9110BD2EFB94C0024CE3B +D723C2606A9025D48AA2E246DFDC900AAC08C5FF5A66AED00AC96B264412889B +03449E7F2F0E53AD0E8F56D63457063B224458EDA924AE18876BAC3AB7785DF0 +512B2EE401B80E679223C71231436F1E9821878BA5334030AA15C66D500F84FD +05D8986E3B0E46682E2AD2AE9AD3A2C38147859BD41D9AE4D3F3809544F5291C +D3DA59ADA65C98E1296099C62C42B8B0B79CB0095D51D38721265B43A0DEFAF2 +F95020D068AFD94F0A0DC6DC6972EAE33CFF7AC70981F0F06C642E892906BE23 +EAABF43283AF36B0FC25654C6A3EF6908754242EC768901C844158BA2008BC0D +8DE43DA423364C9C5158BC6EF268217885347B262FC98FCD9784ECF53224B231 +404C7D41C302903686E8886623FA0804E58DF492831E9B146052945092EB48DB +5E01A8BE1AE06231CEEFE6C65D367E1AA2D7414F6DF3B26B7144D6D13635B63D +FE4F6638176D30DDDD0AEB348AAF9F0837E6A489C985815A070CC1EB384B6D40 +DBF79E2D6EA43F1344EDBADA9369E2E689F59BBDE3BC5B2F2075AEF496466B3B +7B615570DF10BA01AEC9C185DB2E6097142F3A543C2E3A86FBFCFAEC0A7568FC +DCFC5A8A6E58D10D8A0606DD9B1E97754343BB04EC35503C0A39B5A13254A672 +AC2EF3B9C07FC8D3BBA23AFCFD2C9F0B209BFDC57718BB5A15B4A594D2246459 +E7AFCAA16731446DCA2CBAD9EAE3798D95B1D64C91164A8FF32950D061EDBC64 +D9123BEC7E4764A5CD766A3BAEC04B495F20F6850371A0A5B53E6B90BE34710C +D9DE080A73E12116216CC3D119072B35BBF2B974D094C0FE9323342BA4F4C549 +825DCF3681B201A678ADF35885F657994C6DCF956A299899A31B5A5947C62C33 +F5E866E4A7377622B56F79FEF068EB4BE9EE14800A66B499E910F7F6E629DD1E +0C7B8C7327ECDB2E8224911A017983616E417268DA48613AC8E68BDAA2865E7E +07AA6962594714807B43DFD848D12712C9C5F93C891D4DC4D433BBFE1B129C72 +7C455FAB09AA2066A46A548EC53C567618FD5BD6B19425088A6F5DDE6381EB7E +8BC51C1C5FA8D75EE9D717378B14E3CF5CB04E46E3C6CFE75BE53F9CDF31CB2D +F8F2762BBE01C57C65156F8D83D3FEC999B4B8304CF3C87679FCC9A8ABB85FED +5D34B47DC120CE6C0A5D11C2DD14739B373D444D40AAC906BFDAA2FDED6108BF +8475049ED307C730A02A1821BDA638B481FB0DD6E60C5A52EF7E67187DB3DD35 +C2DDDFEA260E50B4D1E46134906A5A4E8114C9BFB36AC9A49A2FE89E3DC947B0 +D1C89580813A4D7D411C52FA69B57CF5AF5D6C2F29105B4FDB78466EFF0C6040 +D66C2B66E1DCBE9981A23516331D6990199AD9E6DAD12AFCA25496578F46BE8E +FD3B205CACB2605BEE33352421E79A5C0BAFFDF6EE49622BDA68CB47D50503F9 +0EC2091BAA804FCE7C18166C60BF5AD328803FDA27B6BD4A888FDB55EA9CE7F6 +35C6C492D54A87296DA5087C8B021D3696F1B71E67D30D17F0214200C4EC0D36 +5BF2DC34E173D1606E6FA7336DC53F74E04A36147CB948C5DA51121A24769389 +B62401142B171E180FED3E89BAF9DC8ED1F4782E29288AB0A7F8572F2590A31E +05F6EFE9FED819BEB1AE1E2A09AF634CF62560FBE995021BFF53009296B593DF +282E10B1EF56E0B52BF9055784A0588F6E03DA82AFAAA67E2CB48A432062529B +8C92B1B7E87D9AD0394044E42E9C4674EF314567EF7B10AF5793F52AEB5D7457 +5C5AD1C2AE645AC768E49024DA3E3E0780FF641A70AC1C6404253E567DFE2EAC +C09DB5906BCDE88AFEB128AC8277D947D08705DE402C9A1A7FBEA38FD84EDFF9 +0FBCADDB428A5DB747E46FEE92CF64E7E6A79BDCFCB2DBA25B73A8B3C76F8827 +FBFCDF4F074A1339C978C5F8E09DCB81B36BFB0B0C5768BBF8C84A5F9F382997 +3BA00CB10996976387A8CFEA90346E09C688577A9B225ABCCC421651C8B076C4 +6186DFE5B7E6EFDA4B07B97F18F39F5E744971D93162554D7F57586B491A97D9 +32FB8432164A26B50F8BE5776C1D844077F9865728D7AB71B04201067C362417 +89F4BFD3DEBC2233C5E5A805412F5976B36E92DFD786EDA348639FC3A0B1DC90 +549C56A3D8AE9E7C4921FE539E4BD4E11E1D650865355A9B6334C6A158F3406F +EA951DEFB37140CC60C841E7C9F250F58B0221CA07557129914BA6B94FD59F43 +A946D0F8048917282E5B3B5A2F475CE8F0D3BF4A2657F44337F8F8F140A361A9 +FD262DF82DD25DAA8A1054AB696B5966951A8DFAE56EFD49CE9D13A506E0FDD6 +F646B3AE4A670E4EB6C3E78DFED13FEB495DB2346E7588B9457300AEF8CE8071 +3FEAC47BD88E49686B661F0C8092FC5DA011506E721D1550A313D30CDE8C8EAE +B0EA6DA4009321558D70B5534E7EDA878EC802B5870CC72340F02646EA470F4D +1E500BB76ED2C509962EDF958E7257BB1404F7E1CDD1FC5A69E450C3BDAECF93 +E556955F5983E47770348B73332A47C0C1054646AD370B0F0F80EEBC29E4E3E8 +812D983AA806F512E966FCD3823955C3AEC7B92B82E15214879E35101D92E780 +65FD63845AF2822D6BA986796A20E5DDE591CB23C05E31DA60F55432929A1C08 +169CB9C24FE6BDEDD4C2AD68A1CE112D7CA4AD4FE93AFB58E225C51FE22F7947 +82F47EF7178459786A6E3FD78756176FBA2009B952A829C76DEC28B2255D3C87 +5619D7B88222EBF0B9E60EE68DB27668EE883BE32BBE8A4A77DC75D7FF4D59FD +DF2400FDD502B5622919CC52A1EC14C45C290B985DE9717E289BAA75BCE09623 +23963F7F1BC549BBEE2C50DB45105FFF6226EAFF416E5B378976945E19AFB1E8 +330EEF63D681339FB4D7FE2935E62B400AEF939C69F5C44FD632D3D09B4505AB +40977429F5A23B6680051CDB190E4D0045E5FE6AFCADF079CD0BE67C38AAC695 +2E45488EB703D4931F7398C12C99D5D3A5AF27929BCB664D1A46FCABAC1D0179 +79602FD842905905E11A8328327C6C8E9CE5EC89312CCCE14B1D320BFFA473D6 +94318AC24FD5694F2C5C17E2AB9130B642421543DC7750B7526DAE0821069239 +A6DEDA1B7481AAC68545D10704ADB2CF73D6219B3A9D82BE7966B72E9F7D8AFC +2CC5E68C1BD727624233853B8603BDC1497FB83CB092607B30F8A456A6277C65 +33D90C7DFB3CC8DD08009B2EC97224D88B8C6A4DC0D8266E574E9C1E336393DA +4D5F3D2FD8E9DED806B9A1B84FDBFFB36A82A6EA2037398698C5CB1FDE6F0B0B +9E9CC0CDD8A66316D779FE5EBE3C809B5D4B8BE5B41168F812E62F82A1EC56CD +1007591490A8E4B15CDB01E23C25D0C7DC1252BA8D1C8CE08EB42E42EAB45BE3 +E8B2574122C4365082DA0B6C4F5D12ACC5C78220CFAA1D8A868C91C2E9B0F420 +9B0CF464A44AAB1FBB1686CE6A3D04C446A44F31EEAA0D0BC0E487DEC1FA2F73 +3B2F05F3A6247D0DAE05D71120469BEA61685440EA9B780D68287554595003B0 +7C3220D370C6CB6615080D485CA98042FC738A2DBA2BBF0E35FC96345361F284 +D35C6F2541089E97CA93CBF9681ADA6A7F23E2633113BAF00FFE537C3319391C +9C003F327A4D8370FCD2448CA10249176182441971DFA38D3B9996B7356154D4 +BC31F74131BC3DB5E823F21A2F0A652B618815B78BD08CE5F5E4942DDDEFF105 +1C7400FA3A6FD1C58BD738A1E3E82BFC0D2C9C548E69764F616D3087C7868398 +F88126C17A44D68B8BF95F40966FCC8D5A1A4199CC9D7FE6CAD80BC85D30FFD8 +20C3EE2A22D28720199F1F58E44F4754A74EAB46A4B789D2FA6DE4413EFC18DA +0863BED70FE8FE3E5467CB00A1CE8C185B49240C74B7C1DB492B7B1E25262366 +7F204F1D2AAAEC26E634DF49028EB437787A6867CF7EA72F4FB565E736CBF058 +A6C2785262E41C5A37A6A184F781387785659F345B51CFE107F02AFF9917ECD2 +BACD55B79106AFD1CC526FACD5AE28C23D313121A1A5E6AD0536F96CB9F58D76 +07AF6DDE622841708884606E5B9F3FA214AA1CEAF5B91DD64335400C21CE4722 +61A39F09FAB4141E411146ED37EE4B04643B2C692A7D40BAC7CD6F80989B78BF +803E1CD4FB8DEE828BADC7065F82A6E2596046606BB577FE4CF6F28C17F26684 +2E3EF093518718FB6F24BF86419175E891A9235CAF2355E11B89A25711449809 +7B94D7A13A0C582E8EBA60639A27F1B83B0B1A69081CF1306C5C40608203A5C5 +B6D00A9B886A4898B7347E8A840FE39FBF00559DC251FF508B06F8AD9BE81238 +3104BDFF6A2EC738963B7BE79BDD6F3FAE90F974B4DEEEED886F1E62BCECC4A9 +0327065A94595AD1C2AE645AC768E49024DA3E3E06D14E0ABDCA18A2D8B86A68 +7900FDB1DA05C9F826C2AB2629797D1B4BA7FD5A42D035D9ABC17CC0E1226B67 +16C8E7541BBEB01878895A94DB6543BBCE190725155B73D6D51A4929FABC9F69 +7FF6ACAFF4DCA56A2106199D61E59EA146816659080A1B663AA360F0B192BE53 +1B16D36AD31A870CCB24CCCC7C8B5B24DC02224CC15A7E9550D55D4475EC462C +2EC73FFBD250D6D671CB9C01CADAFCEDD494AC7435B54278CAC231A6B14C8601 +4465672DE58F2B890F203C399853E3F9C473CA695F6879FA975B336471717543 +C8DEED28D66D929A3B349887C13516B7DE209A9F760CD10243875FF0566E52F8 +B65FBCAAFC7EA121ED0D0684781D9875FB35501D4D030D7C1A76AE68B60DF72F +17CC437AD453D819AB0F99AA094404D5A7FFD3F36E09F9964DF675613E8A5790 +1A8EAE499D44D9668965A371DCE0B672884620654FF33B15A6ACB26B7A309A0A +546616A453D813CA8F45DF8D1243BF04609B7B8E3A77C033FA2565388867694A +F2323B50185D2897B4830993654B0674457A70FC6C685550F4F7A1483E8A2DAB +C60998CF48396F50B7E54047267A1C2A8C3AFCE0E7AA4631F37C169DC36830E6 +C111559EE4868F7C189462D2C34D36BFD5CD5E63310A8BE10334BF2258C80CA6 +049E35637257BFB4DC8C4601AD31868248959988F614773EC4E3C42DA0948AE2 +28142CD7CE64E04EC3B40659CEE8B92C56FE0F690FD0A427D2A45364ED1ECE2E +54AAE89F31E19A0700C22ECDF483BD392B6F93AB77C10207D2C8B193113E6DD3 +211554AEE505B64074AEBF878BFD79FD8AFB6C2526FC59C6342024FBFD400EB7 +04C041D5B657F4A9B36674E07898EB92D0B0FD36A215D0FA6F80F2C41EF0C380 +768172B27732D08F44537826013AC84FE965012AFAEBF7863B4BDA6B02D7A33D +F8ACC3D9AA7248350993CF97060444E5840999765C6FA78C63E8A5E58E0E7317 +ADFFCE60ACD056257C9516694B46C642094F9C4EBD9C46BBD1AF0A94251752B5 +733EF9691EF15E595CAA6C23D8D5E7ED8A1C9133F66B66E5A67C531CC9C77CDC +47BC630570F6620FB4437D05370D0986D28C44C416D38CB0AC5C1F80B0B718EC +E7A0D6CB04210917CEE9E7745FAF602AADC52E4C4C477A17EC905C92D39EE440 +03DF099917609D900FABCE2B6B557D0308BA044520C9851065D524E964D8BDF5 +F6E19481040D2A6247F6C48155A878F1E43C5D4B26E3E641CDB563EE2749CA17 +83B959B62D846A0808AE2CFDC479DCBB2F2A5B7F5C0316283F94FB3D1FB2A1E0 +E2C3B4E51B2B870087D5166077D365F57C15B96EE89A304DC16EF1A023686C06 +1D35CE47276A59664B01DFBB9E8889859CDBC6BB8778E2FFBE30D5D8613BBE28 +2BD8F18C9C66A976BB86C3960736D8D89E03D370F6DC344171FD3E1239D377C6 +085A589C35257ECF5ADB2A129C0120B7722CCB4DB44AC9EBC0C22A4FBBD29E87 +F41AE3BD0B3ED33B57BD8AC7D6B0AC0562680130D7821BCE05EECEE107F02A6F +B8B45169B0E585591299AA2A4BF6E5D382A23DD35F15E60E0F8A9740811E7A07 +060412BED62DA439803C762EAAFBE9CCD641F61A417E7F8E6568570067327A3F +7E06B9FA1C460DF8F469561347F8C34EDA65F83130FBFA8902769F4B888FE582 +FB25C069D100DD7C66CE7F02CB3F258D2B99B1BBBDAA109DAA86991296023CD6 +E983816A8E2C891F8D6F15A2F8D1CC31014776B3E48B527D7177CA4358F2F9EF +D7EFA3F690601757F1A7750BBF2B1799608881A81C1DFA6B7F2C6C36383668CB +18CCA974673C28686B0014422ED8EC630FD949B7EEC2606ABF123E440C40CC11 +7BBCFAED5DD3C3D5F4CF1959C955ACDF543AC88220BB8B9E59E1B4B828DBF369 +79804DCF7A6DA8AE9C4E28CCA839CB4657327B08DE300FDA2814DF4898990923 +B2DCD91AECC07689341A875FB9EDD1916963A974E345D3C9FD52C185D6764445 +9C2E880540086FD9F9CECB4574455952440604E1D1C9E670014BCD36A18E4A88 +10A60E694B7B2A37D4B3683E1B849E352286CD7622AE5A33C6003F232923FC42 +D35FC8D40F1064D97FE8B87D7FE41C6E8CD4721D7299F0AC94000B2D142F6540 +A80019A685B6A0B3270F9734A6EBF5F64FA981A0B6D5DF32C7EC31F085189121 +8E47ABEB8C6152E4CBA12A0827F5F28207671D731A57C3F360EC08ED808D14E3 +39FA60C754F7A8B6512BD1D87B7DCDB0326172364A05599C680053E8B0F45008 +93815438A3C4653E01CE4B7064ACD338513CAC81E5336F562B4EF172A8AC6344 +93233FCDEBB2918B9FB68EF83CE40B3E32ABBAB71D621945DFBEDF299252E710 +C6488ADF2C40726B1EC0F764231207FE0AB4DBF7CD2F9AF2636D9E9E42420C85 +1AA7DC688FA530DD4F4AF7C95209C3118211D5BD541E58EAE230DAD77D93A504 +C352F86AEF7C8FFE93B50F1A7BFA31564351982AD455C30DF382C634DB5A4ECA +B6AC5D75EAF586A0A944C0D4B5C158C66164D03B43A75A1E3C0E337C40648818 +1727DD5AC6F2427B99C6B45051EFC2D11114E9D11FF147285EF1F9BCE3693FF9 +C18181AA1B0868BF3C19EFC14172F9730B03862FD97A6EEFEE6C628FB5CF55C1 +AE258D3881138AD5B484ABCFC4EA21F7482DA536D37C998D134C8CBBE69BC4CB +A126D53B0FB569ADFA910C9F0A7E6E0047D28E14AA15B11DB03B13C745DBFA8A +CCFC3B9534BF2679B9D4AFB5224770D9FFCC17806B7B621E47A5AEACC54237F7 +25F577F1189DC1316B596B2FA6E37EFEFB31BCA1719E778B0C365F2AFB05A5D4 +9FDB762BB9E89BC5D93EAC5D923E8161DEF9432A8745EF0063C30681D00B75B6 +D90E1712D3ED9EBDF71ED2CBED1CD27EFB7AE7988153918BBEE97031DCEB3F8A +9ABE71A47B686A7C185BA2103F17918D4DC14439DEE1610D2E28A9497C5F6636 +F015680655AEF49A3D4F288D9D325E5D1F65D5F7AEE972D2D63D8FA4B0B159FD +21F34EF10091C79CAAF2B982A1B2C64834B92074A46E86F7C9DDFF920F968DF0 +71D65A4079F4AC51BA4EF7E5C0FE8A188F54A4B5E876012B6BE5904E35AE868E +40D1FFDAA1495A46507A852F131AEF971DFE561285A3A9193379ADC9842D5CCB +89A3FB6063886AC1485D64C7B13E925724B1EE2512A0DB8E4CACACDB3FFE94FD +BA3ACEF5545D45BDFEB49ACAAB75414B2C2CD5AC91E820DDDE43C92BA6B17EC8 +82F83A1F08C8B3C3C122A998A8B3D64ED1A5FF50D03EAFF3E5B8223626B77355 +D1B32B98859FDCFC049234E7D7E32C0027A4FF932E36ABEE8768B66441C70535 +00FB896A14652F8158051FEF7949C2F805F7A0245399990FF42FFAAE8DDBD90F +E9A730AB8D44104EDD2A345EE25B02783F345CDBA402E28EB19B1265FC859031 +2761A9985575ACAB28A466B57DAAD2A9A24463E0CFCE383962C8C1B53A1B8A7C +21F60B95EB5EF2AB257A683FB2F217D70156B2F9F55B3999EAB704C171A04517 +5BB92781874A52171A29F5AE52AB8C75C296009E826E06FBF06EEDB301F732B2 +B8E0A0BB9CE60BC653C246875C03C583127EEE40E5DD1E46DD64A69051327544 +2D16C9E7C2A4EBA4E6A6E736C5B8637BF988EA98896C39CDAB0AC7B8C8886CD5 +16757A7130A640FF33932A80C7318C498E5A68F3AC44101D873F0A7AC0BBAEBB +079E86ED68CDBBDCD9430AFC77CBC6C99736B9D18D595F89376600006DBC3C4B +0FDED371AA67319B6262F9D6474093D1B68FBC1D7AA4D59758523EF7330DF1E4 +9EA6892531FDC76A82E53214F5A9112936C2184C36BE54CB428D3B01E47E35D4 +2698CEDA6DA0F2A69F2927A36FF5B2668D2BF0AD02350D91F4C1B9D02EA3947D +A3D0AB269CEE826F6408BEA40B95260CC33D0F1A853AA4B64DC5B0AC45135F17 +C3B1FA857840EBC6DF03CCC0D42EE92432A7CE5C3D1C53814D8D785F318976E1 +EFDA08BAEE4F755F41762C9D292D73E0FAC23A27AA1BDD155691B97D2C1021C2 +A876C02ED087B5CD0D7BE1BB305E0554716FFFF339AEF3FF7704568E28891C95 +BAEA1B689E99D443D9FED91774B1A665412F4CC300586F0A4FD4E9426B304A32 +10CE27570E544BC8757FB8E064F4DFDEE29F83D65A7E44E10F19DB24405824B9 +363805979811E2B3FB3244DFB4C22EE38950630E4399C09696A8364AF6941C73 +FF08544037ABC68FDC7940EB81944D7F3DE5AE712CDCF576A0689E9EAA03A024 +8148F9ECAD2A93F7EDE373D0E54D5D16E325B7D86A13444735F92BF68422A39F +1D9F5844D3E1C497C4E1D75C48DD0004FF0247731B05B17E7261B866841B773E +2F336756FF7A90B642E2FF04137C706B0CC8EF09256299F1E73E43A93082587A +0E788665948EBD5314D15685534B666BB174AF181DD77CC69D092185D5B6B713 +BA39FE8350086A1CAFBC7C84542909306F969288B1C22566A4E0CCFBE2BC5AAE +AC570E47C61AB12497B4B664EDD99AB53039E2E933F65C25B16803FA84A3CB22 +278E1C5DC3B29A1E3FA9A814BFEDBC0423D0EB58677B103477AE2C4DDFDECE3F +75D7A67EBFC0454110A0FB775F0BDA71642B081685DB9EB4E464115D7C714AB4 +9C15C0DABAACDEE7682FA43EBDB5D8E8BF70B383B5573944408980D057C627AE +CCD10B7261B0E20556C47A8F74305BEB9C2EAA7713E83C630D01C326D3DEAE92 +DBBDA93D3A1379C736D07A87F9DBCCBF9C0FFB197FBF1A3D26C03641019D760F +F0420C41D09BC5DAA56A6D192A347B6AC25C11BE6E3030273F291F617F1E8ACC +BF9C2FCE43065942B397F0F2C6B5D27A5D36507C80983C0D44BC395C24BCB97A +2A875DA7DA6BDCA2513D4D2668749143D43EE2347506C5DB7FB60F9FD9BEEB62 +A76900B8BA9E14D90BBE41E98FDF95109E6768EEF21F93365BD845E161BDDA5F +6520B6D18AB935CE361A84866EA8DB49242DAA39D750288CC3C4DD0273052104 +F8D229B13E1FEE775A7C3966E50535DBFDBA4E3307DD612C811D1F5EF4154E89 +6EBD669785DA8493230A6B1A98DEEB675586215F72FBF8472E707DEFFC1061CD +06F4FD8CF44C79880D9455B60C94E5598E11FD194BF4E390796CE3A78132C60C +C5F446534C15B938957FF2566583C6FBF0BC4F42A075D1F1662445FBBED36267 +96CA1F967E7E9EF276CED9A727E12FF80FC956A77930F967E100297598A92982 +A084E9CC4A062D5E4E718FC2D7745A728C31B3352016AE88DC87BB6FC299C48D +3BF406A132ECADD81ADA83F1ED76997F59B0C6F18FECCA731D756C1035B23F2D +01F9E29D6F1DE7D048E0D1CA8ABE871270FD09E4C1B5EF7BFFA8A530D36A0AEB +CFB3459E58C36D52E68C6E3A1090F933AB5A5450F9A59E02997BE6F936AB54D5 +5A25842E96B9AAE4E31A621D7F13C4991B05EC32268B1BD8A34F199D35EDEFF5 +5F5B4B0BCDE326C9F97FB8112AE9DA3C7E35DDC640803E1D7D2B8C80D7F98E16 +7824952676BA193B11402B9276E210822420A9A4CC699630BDC290E2B4D1A090 +A7AAA9947632760B1E11073B216811497108CF0AE8B3365858C8AD72188096CE +1FC788A6CFF0978132D2EEF144598408C66D136B8FAE2765F3526084274579C9 +2E18C8FA4E67D56C07204A33A8F9E13136D71203D05AF8E86B2E0A5490F2F0C0 +B8B0E35AD377CE0D9202E19F77D6E6CA68DAAE9135F376AEBDCFF96A8B1BE613 +0049E414CE8042538B6BBA42ED55BF3CE69D9E052BB719CF9E2FD073701F40D9 +EB015A2B8A7A685D23599F69D60EF70B14BAC6FC4D49CB80710B3A009F72EABF +CDAD42C5350BE10ADD66CCC937B729745270D30D747881E45B2ED61486AC188B +E84D9ABBF413B9FB602C343F4608AC9063FF903C6A4C4E89415986407DCA5706 +D64F37B546C688801B70683CB889F665F7E70091606531DEE1D0449180082E7D +B9AB152EBD7755674162CF125642593F4C2257BBEA8051FFC3780B295DEE369B +64E6617A17622D1797A899BFF0EA57C8EEC26EE8A9C025DDBBD2A09364F0071B +5D1D8C538EFA146AA26433DA671C41E45F7F61CC55F702F5B1A8BFD8B8825038 +E7D1AC1A0CB1EBF45EBFD571194D12309C0F7F22BC03056147A5DC391E906EFE +78F57E196E990462095BB2F8CC0739A5FFDB2A220D2E0CD9024ED33185588A72 +CEACB0E0DFFC722D561C0776C5BB9A84A692B038BDE2D47D16F4DD2F7A306178 +678842D17051DB23A8F721B06CDFFF81DFDE2C769852052CBA4D227736686792 +412A15A95F8AFDC029FD0DDC423BB2228D2E21D4251364B3FCBB3037BB6E9ECB +2F04A8B44252F1C91368CCF435AC4FE8C83C0BC38248A8833E10F32A623C70A5 +20953132FA6DA70D7BAF2BC5ECE2C1B1982972A1EF0FE5927569CB2EB20409F2 +95F67DCCC14C6CBAB8A7BF0B547A42D25984C23227D1F2A70EB85F8A399CFF19 +C60B61F1B418E56D70A2604FEE68D195884677488AADC877F82360A328545313 +EEFCB7C512232E0695F2203491B6FB687707404F63EE56792E071F557EB74965 +FE6593DE3A3B943697C3C2AE7DAF2476A28AD1F7242082F65438E29E4261F2C4 +2FC7E7B94EBA58C53EFDA875157338A395A025596279FE73A703DB7B1D651CB1 +8C70997216496CB2275D1B0C6508D07EB0699250AD3E03483604D0896F1A61F1 +088B59FA560DA5FFC2A0A717F915EC2AC69C0C453992E9C749162D797B148B89 +4E523BE338DDC0AB495E1A1AA2450AB5778426954FB733F568D6E438B0ED97AF +F68EEA7F00FE17D6BA2661062983FFC3D0003EDF1AE22502606D642F96E5BF91 +DA5AE8EB3F2277C35ABD70AD476499E9E1DF623E1CDE6D1C73EB737B792AAEC6 +3F5ABD8CC4C5663BBEAC3EAC1CCFC44EA2ED60543A50546B12D2FB358C39E936 +1274CF3DDE60E6818C16225423B942CA4DF7197A5F9D5FB6FFFC5B17C0E5AC1B +A179D20FFC744E812A3F22F4B3113BDB5D6030ACB0761A4C3476C49ACB078368 +109F23655F1A43D1A7FAF2036FCDC2AEEE1911EF6F38A7D9891306AA9B33591B +38C40C1D18DB4345F6450883DECCA7EF1F0E3B0DC0A67446B081E7E422FE5F23 +D291A2781A949E58852D677C3D2EE713CE384BACB4FB90578EC532FE36BB809C +91FF3FD1322AA99B6390DD9AA792E42030CA813316722B3E1857293975CE826E +FB1EA0CEAE24771CB2E352F3C98E953BFCCBE388CB1CE86973B852D7A9010D2A +B4D800702A0055528A426DB1477A7E7BF78257CE77F34043C917339B61672D1C +842589D89A115F3B7CC7D48B942CAC8AE29C48B0A57157A0C2191B57442C2CD5 +AC91E820DDDE43C92BA6B17769D75431A8E6CC435CBEB3B4714EC451AB5DA29E +4EF26A005AEE72DDAC12F5658A9CA19FE9A67CE95BE942C1771B1721F4EFFE58 +14226DA1FD2FB292F30D853DC5E6BA25574158ADE4519D18672655B38B4667DF +74AD12C745D2BED84A74844A2467D0A1E03446BD8D4DDB4946A8D0C60A205391 +37B9A35BF9298A753B46F2650AEBA50240D281E26D09B00E22038992E6A78FBC +68FC7BCFDBAF6C8CED3E1145BF102564DE337996BDDFB84E8BBB23AB548C2BEA +8D052AEEE02446990E6C97D32873563D5F802032DD18F2A59498FBCB4AC8F6D2 +5203B7290FA842FFCFADC36ECFE9BF72D4813A3064682ADE3C49530F81871BCB +FB2548561FF5E7C0A9A3C054144F811B6161396E9417455C5DF4E8B1BE65EB8E +B4784775090D06AA74CAC58FFDE49DB63AF43BEBB427C1FCC3B184E4743D5F0E +9EA582D7C49CD15DAD18E0EB09FFF000CAF912686A6E231F48B56A0FF2B82A16 +026B5A4FA307C3E2CA72D8CE8AAE909A1D825725B0A253B75AA569B6CAFAE547 +713D0F7BA5103EFC320087347ED5150C398E56602451495F52695E1654035A3F +D53F41E10CFF5C14B050EB36817112A4ECA25C99E56B379116A14AF3F9FF0BB3 +915CFAE397656FFE10C285C6EF4BA95088963AF8FF8191AB586764C524C2A316 +7F7A6867CF7EA72F4FB565E736CBF058A6C4D9E4CED9E67963016A0C51A2BFE7 +DB9C9A177328192624A13FF4988BB54242DBF175D18D7121EBC6D3C774DD8064 +E43B5E5CC23A30F8244391E6BB645C05493ACE02FFAB67E3CF8A0DC47D295A22 +390FCA70E3F6D31438FDA62519BCD6DDDB9562137F7A907C2216EE842B1C270D +A7FABF79CA427CCB631F22F0B461336C2247274DFCD4B0C907F1B1D017F10A31 +9F44FA287B48839F12ED58B451BF29E8EF0DE16027D98F67137866C865E4C1BF +AB7A2DA47E196546CB185DEDF00E2F1AC98CCFA815C7966DE3EEDE3E20EEFFE2 +BEDD77B75562F3D48650D5D6D6FA60F2D75DBFC29D6ED4F1646CD21FF720E30A +31FA7384F1616D325A4F1E267E7C3800E6E810586CDFEF2BBFB654FA0B1F4C15 +732BD7904A4195CDC51A19E8A3348F9E2976615886E1210A23CC6188C5CDF301 +B370A547F5CEA8776B58D20983A4C3A70E3E69D117EC656C7C1CC26C95DB6350 +871F43249D4A6D0DE7D669DC7BC396F01D732DF5DDFDE71208ACBB183565343A +7151BB602CBF0E6741D8BCCC5A3F19DA82514B97DE0FAF5EE685C5F8A2985467 +72464FA5B3DEF8094B40A5F0E38B4A1574B032732C3045A69FA8BD15FC3CFD65 +308AC376EDA25F4A8D50BBB23E8347BF5B6F6AD3653DB6521116B1DE07ABD279 +FDC5A27F934FAC835A76D39333596F62D7AC278FB9B8E12D20E7FB5781C4859B +00F773BDED23DB0D3AB9B5068C7E5E1564B5EB1C185B84F4ED86640E1EF5C303 +C6DFE72D774921E958F4A959459C2BF926B0AA04B230B1CAF03D385EF294FE51 +15D23E1CB7231B90B4FBEF4BD42CE5148E2E8A78E4705A3DE32D75B69FE24C6E +DBB18D44409F5B7C4251D4853ABB17909E57392327D259DE5D730EAA97E51200 +1DDC75509F64E99D5F22E03CE03B4544963E53BFDE5A28210BA42209C7AFF7CA +DE6533526BC0DFCF6BEFA01F7A1D7D461F63CEE3356E447D279816BC7FD2EE42 +8780FB202CC050A1BA04BABE46707343C92347547C33373105AE0E871939D028 +7304BDDB05D6C5C8E3ECB1D62C432122C52BBFB6939A37084AFAF971A39755B7 +6E99FED552E9BBD32A4923CCA2E1380DC1662883849E7CC9464B57BB15757016 +786D6DE2C3E9374E5D2F1B544B326FEA00B5E6F87CDB14A33E4F65F09A829CFE +91B390F4D31387850C385903B44995F23ADB5801C26C97E7C16E9B21C62F2B7B +0F928D537877B9BBF27F494FCF8D02FF01654853BB810381ED64C8880352F216 +FCEC8EEF0A3C1A456D2C4AEB8830C92F99CB8EADEC0F065411D067BE43A05F38 +63EE9B7A881D2F241E94D0FA64AEE3B225DED7E13C0C3C3AB1F31D476C621D78 +87E6D25DAC343737B9E9E6D048D7E3E500BCA93E165A9C01C3415AC78560201B +3FFD97F4DBF72516AA792DD7293D1D3A9C96C4729B2C1DB0D0E971498AC6B29D +FE3C426CDA037F24BEC0CF60F1E536D545E9C61285EA9F46914854C124199C6C +AD8B4B3C3CCA3DCA23CFEE52B8316EBAE4CEA6C3F956DD94E39743609B910AC9 +8DC1C649691C3E5A6DD07CD085F58D1B7E72E773B24176C9184F8DAC50086EB3 +645354674E9D05C2A2F21919F232572858A80877148F5B8A78130679CB4C01ED +4E4E8628FCF55B867ED19FDFFD5543301C77A4FA11D8E095D7601BC877C2B25C +AD1B04BF4387EB5970FC637BCF883E8E01FA70803FEAF9B7B5ECF652A10CE320 +6E80B49EA77AFFD0B1ADB26EF1ABD101A43E90EDFFBEE8A6DEC8E1D9E4D91465 +975363E9377BE8BD5D23814422F8F09689E9158E33ACF20D42E5DC4AB2B33AF8 +21619319394EC4C54102787C0F22DF0F74EA1A3BEA38599DB2063DD57E53AB49 +18EDB8A7D63143AEAB60E0CECB20C035BE26A14FBD5012B5F645132D01ECBDFB +42EEFF2C7558A44DA5784B4DC1AB49A97AD5E9E77B6982E219E2F879C3A4D0E7 +F4419B1A8B7868C178B1F8A00163A337127B661554FB3831472E387D107D3085 +588A72CEACB0E0DFFC722D561C0F84218057698A28F152C444ACF028E491BDE9 +DDB4FA671CA6DF05AE8A910B180E6F9B009D02F907CFD6EE4210E3251E0CF193 +0E183237F247D2F0C494BEDBFEAF66812654A976F06C961F2C7AE821555C7F50 +8E0EBABA09D5377A58040B6602D9B929FF4CE2D1F66C28E1A266614E236550E3 +AF9E777E9E1449CEF79998C0C103FE9DF177ED829F5CDB03B156E051F2D87CBE +8B6FAA4B302EA7787F5D78972ACEE54805F2DE6BDF1A6AC943A60C0DB64F4CCB +E092EE69561E4E80965E2199BCDA6525C35B1752DA35F7C2FA1823264E5A5B8F +93B6C6929BA4773A44DC65E571CAF6DD363C8A29A53C6F2AEAF8973198BA54FC +D9566CA95FB3D8891C1B15E454485A06EB1182939D7DABE9ABDF14ABD41377C0 +FA195AE6C38853F770366AD98D5D76463645C882306E6F1BAAD5FF87E07BAC01 +204270FEE345C4D18E333CDF16A935049BF87E3ADC4029121E495BE6848A2386 +4E553A23E70582B7E2E9128CAAF9010A7F20E4430D538EF6CC2022BB9C2109B7 +FF6B4E53B82F334520A647CDFFF31361E2F70FF0B3F560C5391ADE371101B5E5 +96FB6D0D839F23EC3B3EDCDF152FB6906A4CE19E5057DA6FBFF510B167E04CAF +EB9B08476D0181D30DDD4A6519488062A8057BCEE994A026B5D22020290A1A79 +82F4BAF6B4A400C2B5E8397E23A0BBAC78BBA0A17FE4542257EC3FDD18F24CD6 +532E87B80606CEB7F76043CDE343508ADA042B4D5758925A0F21BB5466D40EAB +56FA691B2AD7DB3B5F82797079B51F75246DFA0E87E3AC6CEC9EB9F6242110E6 +577D120C8C9875555DFEF225DBB0E4C2988F62D5A281667907F3A697683ECBD2 +52ED5E639194E3FDF847FBA289F6043C0D2C9A490957B06C16B14A1A7CD004B1 +2E0026B13266CDEEFDB885B39C5C6BC1FBE4BF99F3743A6C1FC5DDC448D32F8B +2CB27EF9CC6498377EFD128E827A9A0D611D1417541EA61390950CFACB0B11EE +0303EBF47707ECA0EA73E1E82E2A24538F71E2A3D4FC57BEBCCF128F345D57DE +62C8C1F07E420A655E30D632FCE69B4CA02AA64B5EC0AC9E789AB3688730FC94 +AF5AE6126F28CA946C1CAA7BB3D72CB20A8A6569ABAFC62F08FF6C08D4D741A6 +1BCD23DE6414217D1E495A0587F63EE611C953911DE26972309B15464BEACB41 +D41742CC0C91D6056457B457B72460A2C761DCD77BFE723E90E176A341192881 +895138C2DF073F9D118179748A711092AFF1C79944E9038388EEBBCBC65EF993 +2A9696DD4E14A49792A41FCDB0429A0F9DC855D0F40510BE83816A26B4205EF4 +AF15C3444FD600F7FD65D5660CFA5E5E98E65EE3D70354124138903DF60A79D4 +6B3883938BB1554FD069D45C7366A3EFE4F0CDDDD8AE32B1AF866F602B73FA96 +4AAFB8A819BA4E14685ACD85FDEAD0A55DC35DAB60C7F787967BB12F93773F71 +D022BE1B12C6471303D166EDA1201BB47A0E0C6D0AF1F8A2F5DB8B30376787DC +CC4192F3EA3B27B2E237DBDFECEDF19E342389DC97088D6A4238891CD887211D +8C6E6FB8AABF72532FBC4BF718F8049D9E62BC7B0BE5614DAAF473FC7B0C7DD2 +C8B8827DED65838696F8AEA61B5B0ECEF799D976FD5AF41A8DB91E6144C64A32 +21D2A9C46CF0E2E8717F0CE7E9B3FAFF8C2CED551A946B3521E438D41D58EEEA +31280407FE30B28F6DDFB302C5B9627428074A0ED9A916DEEDF52D9D95F79281 +41D3E5403BC99A4814E4022EB4C8ECF80C851E4D571D2948C5DAC2C0755BB106 +3EB92B24F1AE4D3D462125D60D332092489B4F51ADC3A90F91F7AE99AE3E78B3 +D71B77472305E0FECFBF56C777415D24AA72AE9F5298B896F8A6F0F131C0837C +FC7B19849EF3C2B7569637850D2AE40CB37ED812FE9C7A00AE3900BB52829621 +20B9FAFA1249594FE46BCD50C36AD2BD09D8972D55A4BE389EA863F330EE657C +508B0076DF179ECDA368E8D4D674F1CED8D74FB698F2DE0578087EFBBF78E6EE +37345196875A3706D05D8034A9A40B40CED873F58E8388BBF04AFE158D09D5EC +09625E8289235E9F7C97284940D5A522054EDFCF0349EBEE072435C8E3740FB6 +17D6A579059DCCED73F941986C67201AC4BF8AD6F4E06038C26A1707FF9C4FF7 +6A65D3ADCFE5D9C90ADE3440C83D6FBF64BA6446D5B8ACCAAF59E6A016F2BBD1 +5B051F270C8B923B6E57E24F74CC7F05923825D45BDEBB9FE410496FAAE7CD20 +3CD6138A1E4A481A602CFA2CD6CBB0034DC3E66AF0B38E9FDE9003CCB87CF450 +A9D7D12A2BCA32173A19DD82C80647CA1753F69BECFE9FFC97B37936B9F7EB03 +301D7A0EEA935CE23C401A55170F95D6191F3282F5AAD6F48360371D61B0D523 +C06678F93163AAB037E08EC788B28203D1C766829AB49A45AE9454270FD3D2E2 +DF5E4A9A409D4903CF3464BA7DC66EC8B3BF174EA931FBD031C430A97A3C7A99 +B04AD778AAF6CEC7B0B61DADB95DDD93E83C03EBC57CC75551DDA39E0E690272 +ACA30CE04D553812A6556F5BEE64A8035ECA1C3A2E67752993C0246BEFCA5905 +8620D20FA970ED3C1FFC6F07FBFBCA29A9F8DAB063527A7E3535B63DFE4F6638 +176D30DDDD0AEB33DE8A6204071442F005548C964176A0260ED461D517F50D7E +6BE0C38A556DA239A35712BE7FB7F4CB6F38B45D1050BC9AADE804ED2E6610C9 +D5351F0EE256CA1F05480839E2CA355A9F075408CA98D02160A9D7A757720280 +BC29DDE829D6DD1E293C06686EC7D47B97E25432C74EAF282E0BF56182388329 +3D2EEED7CFA0B0ECF40BA2317D331B3BE6E6664848446493B8E18AD3B3B2A13C +0560C3CF0FCAE8581E5DE40F3FE812582F237A736BE41EB9F482ECA76A4EF429 +DF456C367C833A2821A1921D95499359F02EFD5E6EB4AE91467C00810535C37D +1994989CE8E9FB78EE0EFC3B8C25B4914EEB7FBF3F2F2C2DA103283C85BEF43A +C008D108155B971DE933DC842427E42CEEBC17CB6A7F0D40BAFA9E432789ECFB +5CF58B06B3E387F500C83620CBAFAEA88DAF72913D889D2E3E988478E2F14F54 +EDC3C2F2D5EC3B449FCBD7D23FEF469A94F17FC3F61F74651670A17524A2A462 +E9C8ADE3AC27B00BCD3D79E7B87F0C8BB15F1DCB34F7BB2844FBA68287D97F3D +D765EC4B2259F120934EB01C5B68E84D3DD291F5D1D223FD28489D697DC8D47D +3EFB16C4DB451D779D785CC9CE17A71AD638BC26CD25BDEF303DAFB0912E7406 +C9A55B7CB1149DC397A691DED88F3D182E922AE2A122A36D71C26405EE079F45 +AE936BE7338B1B05F2E629B58E765DFE047F9E59A00F9576E7900B43027AFAE7 +DAA0A8643721669ED4A28147C584351B404C6219C8AD137EC35FC6C7CA82C64B +7ABAC7317C67924722964C457907EF857768FA8288D1E1FDDA5D757A13FF4926 +E8364817A932327610D068815C96ADE88E3AEB0105CA91B3F0531690D947558E +A0FE913C18CFF8D23E99F4B2FA8C87C5EDFD5C1420B9635BDFF798B08ABC2938 +D01FEF514CB22CA53B5EFD6019A590A1B3D1D2313EF5F3DF48470309EF09261C +2809B984E388869D72940D4C62C19E602D5A3226ED4CC7BAA2ABD7964FAB84A3 +BCE88C9848FC24E968CF66EB831D76606863D43B026518F41A0B004EC327F3C9 +2801E8630CFC5F2F18822FCA8FE6CAC2CC2D23B0D6074A6C8C0C1CC6DBDD5976 +44C8A11D24B7B6988AA37A99FC0015ABA8FF30C36861D74311E5B7E98FD9BBC9 +CD68327A4D95297A6A2F12E3BAF4728CB62C8E0031A235CF90F361ACF356A32C +B485DCD91570145A54C3EF7B3D36EA153871530E51C3FBC84B157B3560E1EC18 +68EBD6D9574AF1ED16A6D386FA4A56069DAF63536D7830D1BA66A5BC8C42238C +DD9553917143A735EC4E379641B473E0C231CF77ECAF1A0091A86BA7112FC8BE +CD3723362C94CE676BAC410578848A2CAD425186844DF6BCF7F684E9E91DF382 +4DA89EBE12AA3850417EF1048B73B08D9F192ABF2851AF345CCB7A94E30569A2 +E652E13CB5DE10243FFD4F8803E91B95B44764B64744FDECA2EF76180AB1C768 +D13130B636216CA1395A9CC13969C5D1F375A935D07926CD142F3A97EE1B6F6D +AE22715293751808E4B2D8C5B129ACEC802799C3E653C45B27679DA07B31C95D +68EFEB1E2037D0747183BC623665CF555993D3E0BDE3A35FF0B06F03D843DEF0 +9458B1805D1D1870D258DDA77DF15C2831FDE148D08C862D1B16DBCBA22AA033 +E6A289CD4BEBBD1FC084C7D229D6862B4671CA1FA6F1FF7B64BEC658AD00DA6B +FE9033529AE565FC2CB41F178EC4D59D4948025908929BB0F3F5E3CD23079D2F +8BD8B73C0242216B0FEBFB273E7DE5B7CCA7924B7E6747D3D28F73C3175DDF8D +2311A705863DD2210F2223BC03281056FE40F6227FD6585E910287CCB532F89F +474CA8E2C404AAA87C30E11E70CBEEBDB367CF9FF0F2AD07B7DC05639C1F122C +F65AAAAB9D41904270904ED3667C8AE36DD4412B10D39C3AA0908FB095875989 +504F14B68BDB1AF538C3DC408ABC75D9173AD744EEB73F5C7AFC30327B5E1966 +D8DC6697EA0DF962AE7F0FC0C08E2D6E9FF6161873711FD4F5C4D08AAAA7554A +33430CBB04F11AA330CEA0DA6187BD9BBEDC4A170D34E6562626A8555DA0434F +E8DD24516A7381744766AD1189608F0643B0865DB634FE6B163C2DCA2BBCDFA0 +B16BEFF97BC88E74CD950EE1644001DB7B30C508998AF0932AC0B711E7A3737D +84E2C93D5AC202B8667771B14A2D278876759A82C8F44C7F902E251BE1345EDF +5EA543283A2FC88156634130A25DB408DF2A17404BDEB8970824CCB21B136298 +EAEBB3BA644DC6497A88313EB28E6E7B71CE7A8672BFF07647C518C79F216F0A +A0899944731F90B7FCD19A94F06295B3007C0C132B4D315FB72F33AD75C36971 +2558516DE7FE13FE931D3A0B84F6124729C0A0396F97B6FA4024D889B489C8A1 +F62C51D4D73AD8F96FCC6267B2E348A5BF3BFBC646E0730969CF22D739E0F5F6 +73FA8639D9E8E6F6F878317BE21E73A65AC954FE0F509F0EDF9D52B8DF51C92A +1EE097B5222EF6CCE4BBC6C666BCEF1DE312880EF5CAF1EA7D33FE06BDCB4E82 +622025E2650A75D6F9F64320AF7253FD32FAAC56422D45900C62EEED949D2487 +5ED224AAF30661EF5B393FFA467685DE52D31C5828F0F05F7F1082386B0985CC +2864C06FC4B868C3FCFEE21E2FD6857DDB6DCDE840E302B37BC3A863F161AA66 +260CF8A4D8DD4918F58ED172E8A01B052FDFCD3C99FA2323F5E3245BB8193C58 +AD43FDDEEB193137362D24247C05C0EC6338794512F1F1167946B87F588AD02A +327CDC98EE8E0A3590C32CF10AFB7833A4007265C8D65B660928A21E993E7218 +17D53BA5CA19C8ECD9E1858E135D7707CA62CB7FBD667A791116A9DF8BA01E09 +8F2DFAE4F13CA5BB044F7152FFD3145874A5E3EEEA353F05A213CB38284EAA84 +48A40FAFC62BFE830329609C82E2FF8BBD389B56E4389D5849A1076AA9176563 +2A411FD9C5CDBF90557E172FDBBADA8C3A1A66F58F9DCF960997431A6B01FF7A +FD0443CD5BE0DC89251173FF5FCF43E60A13774113700B2D02968684CEEA5767 +6886E5F17A438BC634A681CEC20694B5E87EC0B2148A4EAC54AF2BDD2F186CD3 +7605E493AA8D5D41BBC781892C336CC6290F97D10DDEE7C5D4E30D01A9D867B9 +A384B5B17A89257C21F95A97E5816940A515A07645D155D5B6C550A5B3D12F82 +CFFE793CE1B92D55BA6C370266D858C5BE5CE6A4A316AFF192953849965B54FF +BD7D349B4F13B3C2B55382401357EAF34476910F96961D4F97D0D1C47B1FAC56 +E4E17E28D472D65452D1249DA4758B75E5F2EDDEE7AEDFD6B9EF39BBDD8D6506 +6940CF9AAAD075E15393AFF66F3ADB673E1539DFFA76A9187543E453E88F5F07 +3A6911FD76566251B9721715825889DE169181EB4E64FC17A73AF2242E5EA064 +2B12B2D33808D45DCC54B60F6893CE23D83BA562A2A7D212E85537A0B2EC517D +6384F0E1B33ED32567BBB42CA972BE0052E223208298561166F627EBFFC55D51 +371F3EB317A82C80F9DCEA594D2830C81056BB944ACDD1E62984B95C63ACE844 +4895A936E7FF2B673B7DE0A49172F4C3FD47AE5A6EC8B4595EDD9D62E2438A62 +72D99F6F2CA4881A70C0DBD77221ADEEA15F3F1B5B944DAC3AED692DE8CB8EA7 +F736D6938EA059710249DD884F5F9FF4D88A37151E59371F605727317CDB1B84 +B4E0890021C31C068A7A9D4082737590F2510940B527313FA39E7BA416B63082 +8441BB54BF85B1C2CEF2118F149F030C4B17B19162541FA53BEDCC52CCE2FC66 +4524B020D1BA006DE00B78B5433B1D95ED5E4E986B935EFBC1C73E2B6DD8EBE0 +8D81212FE34499B12338CE4C19C56E25884367C54F2BDE09A3AFE376D6925FD5 +B3F9D8D73899C7108582698DC9E9BD26640218270C8134A0976670BAE365AFE8 +22B176EB2AEE020EE823D0E50CDEAFCC164E5469DFACDC2AB27677E7ACB0A489 +A3A488BAAF14C268665E798EDDD6B073AB4DD1BC54DD820422A23D91ABC97689 +D1C167633AADAA32617BB8609FBEBC2B26F6EEEC6600D03A9406042DC49D9B31 +0783F69564B2239EC143CD3F15979B92894CAB6C46EEE9BBD82F8587D1B14F5C +C02226C5EAAD1EEAE5BF0BDE5B4379AF6F1C51E29EDE48E4F97BEEE3FA6DDECC +F3C8D6A5CA1BABB1BC3C07FB2663CD3704355E865F24312F92FA706009CF0F86 +B9C03A970A0A8A47B8B1CEAB8702FA6A7AC07715311CD22B54053B5CB0C5F503 +E4BCCC5854C86A92062762FFE8F78A1F4D504DCC6E7A53FAA34184F4A1AACEA5 +C73A9A412A7B39663DDEDB4BD5DFBFA4AC57EFF97D65CC0675DA3F27EA93968C +502AE52A30E98A565DFC53C2066FD7443534ACE410CDA187E2CA5A0757E8F960 +92BB7E1C4B78C6F21C98C508E87C89C975182E1CD3CDBC68A06D0CBCC68909CC +4C2F1ECFB7F1B95C31378A658581482BBB219250DC16AA9104C84F0C9D2EB89C +35DE265B010B241F1636D88803DF10D42619844AD15B3639D195688CC0B8A39B +B6723126EEC0C7757D8052015B8BAE6E77139407C19000909FF68235B665ED37 +259885AF1242822E3E8FC3C653B6BD764B471F62B5C9CE9071229A17B4640E0A +5C39D836F4E727A3D263312BDEBD3F98B5F3FFF7C58CFEF8A901BAC3D75F3864 +A0A874587B82C08D5A2487D538DE42412CB612BE142F82E8F71E9C3784089AC3 +A5BC119E83BB0358F4BDDF7F83C3E0948EE462F0FE8F455DFD4F794263EF8710 +3F93C1D303E6AC3ABB9E4ADFCD7A2917485C242215969D3D29BA334928DED714 +B5AAFF3B23E684B77E494FC22B2785786FBEE41537CEE9E08C324E024A1CC0EE +BA26AAC5C8EA8F14AF609D5CF8377BA6251520B789C3EBAE6AC549C1EA529640 +80A8EBF665464270A690F4333D0C2433196F4C448F3A8397F9FC0EE0C8218C1D +2BE0A88E408401B388282409CAD9994D6E04F51760A575BF548CCCED060A7519 +AE2EE6CCBA642DAA9C3414E3EE72EEAD3CAC06EECAE30955364BD367403FDF29 +743E5BCEE2661421123FBF337A4D70BD233A7DB2F4072383E450A505BE74A003 +03EA5BA06562759EA86BC65D412D0F772BAACA95C91956FF17F780B21B08EB75 +7F8EB0FD76813E007149B4104A8C78BC78D40796B66CE8B102295DC63E5B0717 +E34847D465FFAF906187C832E3086021FFEDD986998951A8A23C4C3C2C674134 +56117F20430CF4E5ABBB6104D01550AE1C993A31EC610763158D12E30CFDE627 +CAAE8278574F9319E760743335FB5040DEFCDAE336ADFD36C64948198B63C855 +BF9B50208BFEC45BDE2E2CA9C7B8BE80DFA2C9FC6AF44532D90A468A1AD97F42 +DEB2FE5AB2D3B6D06D1948B03855168FAF556E0B3B2957D8263C8A1C04A7996F +C5BD628446335887DD7E36B608D86A0B3BBD38C78440E21D4C97D2362404DFE4 +280740D754BFAE39159E7FA7AFACAE70EEA663AF1D69E6520C5D7A5383A11586 +82A896D213643D7E6B74BCE43EDCD287733785D72E9A25A07B60848345966106 +D012050134B179D8D97870B59B26B3D25651789B6AF559B3BBD68AD0ACCABA64 +95808A1594DF5AE0C27827E3941DFDC0E160B7F1AD9DE5A089EB85CB31D8D037 +D6AB80A975ED3EC67760948AB70763EEC302D5417F191B7B81888492029740A9 +32A408FE8BFE685C73482289C9DD0590991F42D8AED259BDCF35C04B2F151E79 +97A3CDA6177E94B81715DE9BCBFC03453D60FB57638CE77F9BEAECCE6F6FF756 +2F0BA1D406509193B2C41C97EE66ECC916C81CBC5B04297528DA1A29768B2311 +FDEDA27DB1E224736FA4ED3EABB3AD6CBE019068F2C467EF93231E14531AC2CC +9058846F0105F5145B245A7F46F6D3D95170D08C4807E43530662B2CE9D42104 +87BFEAE7568266FBC98DA5574AD7A3917562D0DEE81824AEA4C55FB271440E60 +DFA160CD8FC867940D42E0C8CE1E410D1061F74561CFB01834CF969AD1635476 +11C320A2B91354CF0C7574FE69A3FC4C4AB67F65797CB8E33D403F15ACC3C606 +2C593463A90E8971FCF808E39CF186C4BE898EB7ECE3D47CEA04D9231C0A8B91 +5BE3C490947B7BA85ACFFEE02B76CC3416DA0C2B158715E153133178300F78AC +66D588AFDDB25F0A42C589BC8E5B8EFE49CA14A244B77395D8A987FF7ACC3334 +B73FEB4CF6FB06D8CCB1919F896924639E193A96036A0E177C9A6ADAA34DDE0A +3ACD4957292BE0770D9FB8985CD5E792EA8C78F78C6AF0D8B635536901BF8AEF +529C8608F83256CB2B0E0B4F7C9AF88EE09C515A5A166F6C97E89F7A376D4DE9 +13B00BE59032B6DE2C1EBF75C59BCCF1C80657251CC6479CA1711DF9D1A263C7 +2D17D566E3DA286C956DF54EE78009A73BEEF0C8270DF52249EB12E0836A1078 +F5A67749C7610120D69234F91C017C10B6804BAE22B34667A45B9BCDD9AA169A +D0441C616C703B6201DDFA25B7CC2CD1B4F3801F447436B87B954FAF5B546BCC +3FC4ADCB8E1FC1268B4C4643156E8C81A0264549F62FB38DAF2A26907EB0B390 +B3FA6C04387362817DDE37E5CC69F23E7361F18E3F2F511B2A4BCB769F3BB27E +FD21BB276FED50E3666E9E02FA631D0F2AFBA3DEC0331EE3BBEA81CB2458D1DF +9EB355C2818F495CAA7C3C051975A9BDAD96E833B0A9ABAE6AD23D73F0297931 +0BDF6D32E1ED7BFCA399CAA01BA9DDFC0DF151499947007670D099AA97938BDB +A20B6C4A4CE294D769C04A118522A56D67C5AF365B284CDAA3E9441A9FEF16CD +64230AF763BCFEB86EEE92C359FF4BA69D03D52F2B6A68646CB9A9BD339188EB +149C74873DF5814A6F96481B8A5DDBB72D5BCCFFA7F7B71C654437D3771B8413 +4CBDCAAE054C6993F9DB88F22767F43A20AA8ADCB66D81B2E28360793ECFA9D9 +31F3977F670C352B6966D0773F986997A9559BF6157EC59D23E476C42C4E55D8 +B8BA55620DC5765F97A3BA00C517B0CC87A05E253CA0E4EEA183EF0387BFD054 +38BC5804F3233F60F571F818F5D8EE17637DA6F5E9FB7C2F9E3007EA6E97A21D +60592E799DB4BCBE481CC89482CD9A57D58CB6E5BB0055DEC5808D44EF95D20A +C962FF818736FC35ACFBF979962F5302F880E65DA2BD5B837C4344DB65A0368D +C30BAA37D5650578051CC334E02B1CA682021193D89933C5A0B7AD5619B60556 +D74787D2081ABBB5E1B0276E328E85C908ED7DCE8DD4C290C731C46394D3FFB2 +A366443B6982549D3E66F34A56D8F71D6C8C8657A4CE7A0B5F7D555F1820A196 +2A0840ECECB4819C3F8973CF4652DDE14129BDC5551BA43F0BA20B2977F47835 +27077F48B9EBF7DB2D613D1F5E5FC4B791F31B6B7DE24C156846F8CEFA554C20 +A590DC6D5C41DF112AAC13A66833844D1A38125D0600ED556F04D625D9E831EB +DA0921A079C47BD8412AD3B751B8211BBD71B026B97578F875FA96A5945A1D5B +C27289CFB23AA03F46D6C76B39CD62FC7091573A3B0BBCD3D6D43AC6165B0864 +53DBB18858E696F1F1A071A4B809650C186DF959428C204346A262986124C14B +DEDC5DBE1BA1B2AC61F29699F713AB4D1BADF3A5786FDC3C3CABC9ED0FF5E41F +CE3C8CEFC5A6BB1DD3389909B05D8CACF56C48036F3B62C6FA3ECBE2B426774B +0B63809F02A354DF7A4B1F019E045C58F964E37CBCC5D141C0EF4092C946289C +E325CF5B7E40B60C86779ABB59B750CBDDCF161A6E5AFDDF1D731D1FF94F8114 +B02AA26EBCB500F5551AC653D7C39E1CC2E96439560A4E813CD8698A64226EF6 +25054C44B041F1634AD7FE207DBC8BCC0AD314154D092B4051AC47D03C947929 +761CA3D21937F28DA056D3C4C3FCEDE3BD4E73B1DCDD49558472177877B2ADD2 +623A143D3AFD598080BF5D2B9AC6C0A5921994065D74FDC777720E5091F31776 +0887285DB30924343BCA12675F47B87C3CA4F66AAD227B3F28E90AFF3A26456B +FAD5D0EBDBDF53A6141728DF7A78DEF36F373BDFC78117ECF61BB1947471728E +70048A8AA99670BA51556416B66B4269282BC901055696B05140C4D8AB53E3F2 +94606EAC2D541F165A4BE5F3726809076C2C28E7128860A0E9B67F863449FC48 +0073D672CF7C273585AF57B9B88A8AA8059FA4DD1A41CA1D8E154C5246D218D1 +B40063BE4C70FB17913BC3C16AA3D687EBBC586FB52F9F1A8A7E6FC76DE2ABDF +BE78F6ED7050E39860FF6A098C5DAFE567CE5CF372FCB21589515CBAF0006842 +7CC4AEB9FC25924287EDA94080E07608F708E789363819D9678DA7E1E41AE54F +39F7F70E289C2D0669ACD1EA6D4A920B317BA3AC8CEECFC1D945F72C2EBF348E +B73832A1D7E9ED2090883DB4C34397F424E89CEBE8F3D1E5F0B8B9B174F6F8CF +1224C869908E55374AEA32B40D20664CBE15F547200BB075922DB429691478C6 +B51568A6F9303F249C502C501AD6BC0E9FBEE274B6439BE53C6ADDDD0463D517 +419A6A687B202BD5CBFFE6042002B5665E03BA3C29579B18A62F8000A56DB0D1 +3C562BAA0A364B6E30F6459611BC99EFD85B5530DDF7994246198A290B33CDC6 +9EB44A10191660F52AA1A4E56AC1322E2869F4C1EA67480CEAD323BC8A084E8F +73510C7E1AE5F0A83839C4A31775D7A8004120558509DAE3FE0FF22451D23901 +CBDE9EE9B4BA45C3D63ACEE6502B34BED38AD88E759841519C87322855E11BA9 +FAC62555E9E0DF87E2FDA0495C6F8040AA6FE52DFCA6AD11BF4D9F932F309FA7 +7C31C2AB84955BF2837719C69FD4B023EAD645B686FB43B0800CC5DEFBC7A1C7 +5D1ED7DCB9622E7296C65BFA3E1BFEAC4DC250CCC8530CA99429179CA2031F70 +4F1D2B7783705A45A9831195353F60ABB9B4A1F07BB4DDBB1D5BED84BE6710CB +0F9B08AAC15D6F798C9A7C4CAC3077595BFB6FD16825630BBF11350C4BF9F25C +EE1B7C09A38EF95DDB5BF3BD537C816429D201FD43AC5BCDBC89D34775168878 +ED577CEB0185BBCB3484895543AC8FB932F9FCA25F3C25EDCAEA3767998A5F9E +06CCBF55D08E1C782A1C5E7F56B2A5C3F37D3F0723B3F1E54237CA1C283EFC9E +E2302033DC899EDCAF1443955806D35448F557C202EB3AEA9FA5F0AE27367707 +7648EEAC074BAADC9BD342FEA9BCF76F08B71B0A2213EF2B50B858F40ADB93E1 +1FDB781B7A8F3318D46ED50D9EA2D0E0372FCB84DB793D03781BDB2C575BE83F +AD2CAC0A5D13E1E12A99C0C94C988FB79FC4C8CA56C45657FAB7C6CA0498DABF +A6592B5C5EF214BE3294012808C0740D0ABBD9532C04E12E48C89CA374C21B6C +7C7BBDBEFD34BAD70953E567629132AA7B0394259CC96B6A1EB16150031C1A0D +ABE25823FA171581C80CA5001DA10CB75C2644BCCC36DE45252C92999D68399F +5ED7DF374DC065C80154F5F8FE5B3E96DB13EC6C0C90BF576AC7BED2FF5D3E08 +AEBA565715ABDFAD151E627AE512B9C7ABA49EC63C2856ACF9162467CBAE13EC +1FEC1929AAFDD3C7F0058C4B7C432812775C03BE83B1855080AB58872C16759F +7D77322886915B608FED7A6FD6BB668A7B7BB06A32E45D3936759698164FA704 +777406D0459B9347E099BBF8C7C214341A07F060D20E9044EB567CFFDEF9DF25 +9CD609D98BEA6247CCF8A054224BE5D3F15BC9103FCBE56AD7D6D97790B1BB40 +EEDFEFC5EB9C904D66E4BAB7B3EAA4029104BBE097D8000E9B924E7EAC83DA0B +4AF841503711018A17B0A1DFEF9A297122DE4DE99F7416A44D5AB9BCB663FB8F +0A98E11436CE5B47E7403375F10F802B7D796E6299A5033ECDB69D252A720BE9 +81C10154937A1D12B7F5EF5B1C1A906E5CAA20774243D41EE42A8CC108FD3163 +A8DD35E3DF729511E206FF00ED7CE7FF615D392DE6711C52302FFA2A2D4A0902 +5A73D6A63CE7813E06A4131B1BC7A405A3E585CDFB8AAD28062F1E0F8C2FE52B +99D680FA7F37230BE69D0374490D52127951C0DB69D1F748356CF68C4B6B2990 +FC855E91C1B9AE7A974CC215883B3A12712C2147D1971B61F5D80AC5B8B5B6B7 +9B9DD858E1FDD8422BE87392FB5AA1CA612792DA969FE9E659CD75C07BC75EFE +6D6C931C2DA5A6B607C938D8D184C60A8A90BCCB49A0DBD9FCEF1130F8125744 +6E32AD04D4E51151733BD4E4BFBEC8CAD6D4F28D65BFD45E585B1A64E366167D +6C0D7BF177BCF5F8103053FE01E1C0DF75D85B832785D0BB299FD09F3389D055 +DCAC6874F2D58259F3CFA258E067252A118E20CD00948E445D24A1E1C8D0C15F +253DDBC4312B4E96FE714F9C8FB8B0C28A08418C4ED3D1D35448968A95309355 +FD6A18C0D3522E6D66E52B8DD5D754878CBF8F7133AA67444EC398B59BB4BEDA +DCFAB52EC87A37F44AF69424C64E007FCDBE6748C9FC9F06B91F27169E862B47 +F04090857B84DB38EC1BB9377C86B00986DCDDDAD4A2EACAD80A856045CA52CC +A0E08803D18E7B4683E11B31E5CC61CE44E549323C6562A24E4C376D442EB151 +17A6826C70C6C43912A7C5FBB15135AB24B6BF407B6DFC51D679DD0335FED149 +B297332E630A7F1820A57B1E5E817B2E7DB48638E67E0603F3EE3966454D45C6 +BA034EB7B77E50683792A3AD261CBE437E7DA9760B5AD9C7495D04AB6DFA35D2 +D24E408764E09239691C7081E53203E80ED6F2C3E0B496ABE6F53070BA14400A +9AD4ED99217315E1F823367F305EC4F0C695E474E8AD5899F6BA90A7C23A3C6F +D12562132955C697401BCEE61A74FC2B79CD7B7381219FC1A246755C79B36606 +99191D2217BDA56669AEC63A652621F1E7AE394C56B018BC8C70A14BBA8E0746 +DFD90ED684F073AD7D89D8D0F46A69CED185D291DEC4B32704E9DD5467F46918 +66A44C0B4DB5BA4D3B96A27BB3661EE765143B05F7141B1146DD454F799BE576 +0EDDD1D307A960B9BDC3A4E08BE8C7B6FA862B1BF812F6DCCFEDB1977485C839 +E05ADC0576444E72288F18004A1D5252942AAC71A6C43A2A4798A75F46D43C2A +6E3BED2D3317DD1A13125B7A25762C387700EAC9299BB9A8B021AF4008DF07BB +80F3AAC15834DC3FBBA893EBCE25AF27EA5F699751F20CE4CC467D523C29C932 +328FFCD6D6B42B7C0BA76191708C6E2D9F8027EA5D04EC834D4522862EFB5FA7 +AB92D48E0AA09D411500A81A6E4A4C655A0579237FD81C43B1C477AC12E98647 +CBC046F4B3D7DCF8A759795CF2BB32EABE9232C4794D04F2807B56B58DD61971 +F13C370EBE7DE907903456546863B3AA3060279C1A020F107C64E8C7AECCCBC3 +C8E72E2FFE1726C890418643203323EF0CE39196F06BC0B49B7A6770FDA61A4B +EF56594736F829CB6808C21762987134AFF57EE9BF9700C04FCB6D0CC88BCE65 +7F724E9BB9E3617D72C99C08515EADF3EF81B7E3AF61DB21F46FCDC79FE2FC72 +7DBD553ADAB9AA81FB2A998B9510724865800A69654618915A270265DA13A9D4 +5AEA95F454DDEF97D9B9F6B7879845D33BA3DE7C3A028611CABB41F95FF5A859 +9628BA8314FD19FCB16633A31D8E62BBC0BC1EFF89FAD489E68C7FD469A0EECB +DBF1C58D4579BD16AC008FF857D2459C213C6C2D0DEC6D0164FFC50902DCD52B +2EA5CE68C45CFC1DD5C6D799EEABA0A64901910147BC505F2B738A3D1514D3FE +0E6543D79AADA7F71ABDBA26B16066A40F0B8D9529358C784FDCF22BC29D936D +0B762457971BFA178D32658474231DD8CDC2A2273C9C12C1F7D8A54D2313284C +E1B453BAE9306156D9DE33D7E016732C70412E442E9752B3A6F46DEA7F181E9F +8B059E6EE1A24F306245864D8B0C614B82BBC2E8F4F7618E8D23DBB4668813DB +3619158DF2ED92D4D90DB159C6915F5D12E9DEB68A298E791DC779B2AFDA185C +EF92A3EC9C7BF25AE782CFBD88337C9A5A36348759A18F741B5B7A40BAA67252 +87BD13783AAF93B482E26AE70BB3156CBDFEE9D3F7D448DB03C14974720C6846 +E0259C3C3CA30EACDA8FBE6A16991575CE0928EE0E6D628B4F2B74C0EDA47902 +718BC1635CB05C54CF6D7AA070A157FDF6C32DFF0504B094A17BD9E2C7843649 +B038A15C41E47838D1F2BD69E805AC3FE3263963B870FBC5077EF55DC33A984E +D6CD3E97E69BA5E4C1208D17E599B002367DCB35F4D81FB979481EC2EE26D709 +3F7CC1137F68AB88A4BA381EAFBAB39EE3D0F5A642CEC106BFE92B368A55A97F +CCA59F0142B8FE6A8E9677A63E60C7FFB7D1A2E86C456F399650B9BE214EFE5D +2DB0369B61A6DFDE5CAF75EA142431D1637C670F5618252220965B1DC856141E +EA982C66CB5DB47644CC86A697C8EB78383C35F41F1FAD99B0B52E3A03F89840 +3CDC738F80146DD833062D92362438BAB1BD2000212876822D929188C92E759E +97173058E07DE8B0DA50C38C0F75AB6199D966C30C955292EA2854C6A5CC9718 +EEE7E0824699CCE9C9E7873B5CA50CC1F4AD1D7246CCC94943E67B2A0CF44E0D +83DFC0A14EF2F265D71911E684E97AA57683887F7AD32120FBD1A4ACC19E0165 +EC931037761DD32E530045D9969BED739DF25DFA712898E1263A5D68AA67D7B8 +7663C31DFEDBD8EBB2A468779A49E0564FB3595489660614B9C93E558420851A +A1D04017933DA3DB5E298218D8E4689FB149AC49C5B3B0830C4FB58CF94A8797 +FF9980E00799487F9EF341C478C8910BF0C9604E8C979E72B7C4C66A674B0E9A +0B2E112B8236E8701199CD112A599115DA61198404A9B11FDA3EF159A81F906A +6CA54C650DD41E5AEFD131C3468EEC978F7439CAEB8AD2C95F938D74698E1222 +665D934ACC19C048B748075DC557626F24A9968A06A59A2EA77731E5F7C95785 +228B1BAFF66D4035023DAC3EF389A70000948B09FC41CA1F2D0C39BDF5E89624 +AD43414865C7EB55008093E5B6BF5CC22B179CE08106F85D0F1B30E826B7C0F8 +83AB81E36E055FA645A4076E113C017A9A7260C1BA285874B62630FF107C6EC1 +8DE94CF315DBB20E1B2FA89CAD84D1F63AAD2BAD7444715996B7F58D2CCAD1A9 +A52E79E81EEC85F531E4911E50E7657A7DE13B7F97B47BAD26A9192205941D88 +0704B0F64920DEBF91D3093C7BC2982D645F4A6DFA13725ECEE84E560AF82BE7 +DF510A455DA502D8F08EB57C22E17B11F10B252483670941C1F23CA41C8DD8FE +49FF286039277A377A0F8DEE41F08EBE1DD4329AD08CAD68D3E9ABE03F78E501 +B2B2F8E285DADFBCA2E7DB53144C2D2F2FC31EF632CEA8E4419B59E252AEB93F +849424AC1B367A154FCEFE96ECB533CB6F0BC3F08EFF0581ED5A819AC41DE2B8 +6EA15730886BD550899307805C71951846D3EE36A67A27FCE6442479ECF60E23 +01E9EA27EEBDB893700DFA5951949DCDC17AA0945243933F081ADA7B0F946727 +1955FD62FF837769F1D7028C17BED0ABCB79D434EC8A36B22387180D6DF5EC99 +C02529EB57F80FD9FF278D808EBB51E687BB9A276724A62E389C61BB67444623 +2C935D11F006BA387BA768A22B91C4DC15B7339534A6FED4B4A5C71EB13553BF +E0C65962A9B1F173B8C3D88A10EE59280FDC6E665778284E4432CD82180C6D82 +73F22A36294E14EBE8E69CBF71B8CB02DA63ED5719AC95EA78D8FD2495232166 +96D89A031426C23A8495BE3FE91EBFBC76DB8785F8AF2ED6AAA7EFF933470CB8 +5D641ABDE3ECC6D9A9313CB585EFDED9AD3A340EAE7BE8C600CE75C865A5D4BD +3290F98A2D539C216E9C2F62E2E00E2C4D0BE2025C3D0CCC8D5FF90D44B3468D +0AB1D0AA34EE2938237B64BEB4FCF82BC8648E3619920EE0658114FBDC52BA87 +2359EC8E7D1A86A2CE26CBF9EA2E217C0629A08EA9883D7F1018D0F72777BFDC +3B6DF66773D2664EB5A4AEA293B0F7591472E26431AC4E0D02AD79E997BEC84B +B1019A7915A89AB7EADC08750510CC5B927B13AEDCABA72E80A3B87F6CA4BEE3 +A75417AAEAA3F6BEBE1F140361A8B541526F0D21E512E8F5C417DE26C40A6934 +286308BCCDAE86A4D36FDF31B233B924069233E8BBDC243B4EEF6A3B6ADD086D +68DAC857259F9211836A8E1E4EFCA60B8AAE094888B01B0DB15B7E047B2A8FF4 +E462AB25E7BA8806D3AC183A7D38A0018E67F84A20D002D2198B4766F052820E +094066472610CF7AFB86FC46CC6DAA24B8ABBE4B15B23E46834A6DD07FAC2E1B +377203634ADB6FEEC730ECD015F94DD2925D027E286323D8AE69E3DC802DB3B6 +9C40A997ED04F9C5B4E9614FE24D3783DD1F54EDA86BA3EAAFDA1B3A21ADBF04 +5E1AC450264171F7CEE41235A13E39FA31885A8287E05F3AAC33C9E7ACB7F5FB +6DFA1FE1622267FFF124A204994A69A1BF61145B54C74F9B241B094A34BF0E68 +E2CEF09519DE8ECFE9CF693FB52BCC1F89B35E3917EF9D14E7921956EC9BE50C +F4F810BA11CB703F229497EFFEB71400DE59C73D8BF0F0E4D7BAE36D02BA6D66 +58A22EE7B84CF92EF147D30E665E76E0DCB612F4B95F9BC8B4B2174A30B8DEA0 +BFC05E22C0B95D33E00157AC6E4EA0CA0DD4E6E68F27D7FCE56F28A1C6E91B9B +41C1CE1C423AE3BBE2C0DCEFDE0914EE12D5AE7F6F841A8FD853115405543965 +CC57591049EB97391CAAD1DBB9A2C2FE645FB7BD9FE362AD6E2EC17641CA232C +A8CEB9EA8B3EF6FA778FB46EFEA532FAF66B0D369A6C27FA45A951F96ACE2F0C +11C8596DCF61B0AA54DB014C7FA5B774D55A7A9527EF061725700DFB6D8FCE8B +034BDB15378F68CA538BF5E05D15FAAEBDCA17AA8F8ED873382D61B8A9357CD9 +548725C5573C5F1349DEF5C4DB13DC594340AC136CCAB2F73E9BFEF62F9641B2 +2D01B60172E81C09C6858B9B220C2408F1B9DE7B4FC329A8FF6E038F8B4C2940 +6D45CF29A83046572A42E45CF11742942C956A6B88685CD033674614F6B166E6 +72B8C93C0430157978AD32688C5B275F8C26495DECD494FE09D96B8C18D732B2 +609CDD3735847B591BFF495EBAF4553D899A937BA97B6ADC9BF4112CB9E1D082 +E7183C38F4512820C0C8DB0032E99B1B62F00CBB4F6BF1D565A620C4AA875908 +9580C8A36ED85124759C5A42BBBBC081A088A494310F074FE07F0D8874053E10 +B99CCDABAC9CBBFAC825A5261320680B2C66616291CC1BD2BF9A74C3169E5885 +6B1981DBC62F738C6A37C941717E62DDE17697862A5AC048E363377C715F07A2 +C2764961B912C465389A0877D6A2F05C3F7553DCDB2B928CA260FC6D10BF6210 +FD0548C1932693A0D1A107ABE8CD8EB2186C7088EA21A280CDC60237F155F7EE +8241BE489EF508FF04C6024669895A26A74E9E6A69AFEE5B107930141EF5FEDA +EAF1F69E238C56CE50D2EA726657843A0D47FAC1CC67EE60ABBC3EC3F1ED9845 +767F8D8688A0897118F14764E1E6B5C0BD9545C73729A6828C47A6A211651C14 +E1C6CF860C848E13F06D8BE8E3D36A00CAD9AD3EF0EF7B8F93D7AFE80BB27638 +06481CE11BBA1283334CCDE8D24B6D116AEA19824D790A5F3AC6B5A1F7D45FD1 +9C7BDB9D6912271F85DF1D4E5985801953D306C2F8368486B2047E2EFB04EBEC +F17281A9EBE93248264C047A2DDD140599A3DEACA47455C23053BC74E18F5D36 +2E230D677ED29BF57B4E68B1402827FCEFBD06A5A4A3FA478A1A3336C6DEF272 +D3CC2094FAE88D58A3446718AC0583C604705A543DCF8CCD46CB075539CBE9A0 +D1639D8EA50A20A2270F0561E58F29D4F2AD5C2B7FE2B8E1D39E7F9436964915 +B3C1FF1DB89E0EB77CD4A6DC09392E6AE781BCB680E5D1A91D9C06D809ED7407 +B80840118F2B2E438952906259FF4E20D227A5AD8CD5B91ECEE67D13C864FE95 +FC902C049395C317B31BFAB3180657FA745D9DB38B2A374ADEA9CB1906AADAD4 +F84DB44216CF726B17F73DF113C42746E97FEE45494EAB23B149FAF5ECD36C5C +E4195BECF8A07E1BAA413295A144CB47F1A9B23B085128FA5F5D54F8714A80A5 +FF41017945EC670A8F3299D42C57B8F14CD11B385FE072DC68C23364BB16A650 +862F8E74B1190B5B035F9AD88DCEE784AD9D6F177C055071E827D2239049B591 +AE14F924FD8A71060731C552FA9B8BC40E7260F00D35AEC953D55899BE2B468E +415BB409DC54B3FFCE1B05A01AF5145F8166AEC826465B0B3227406F29E62E85 +18EF8185A2C73FD451528F2CC48AB0B05B7428A75ED2144AFA390935A06C5B16 +D62C9303A8733194CE135E70EFC34B35D945139DFEA8FA1C54129C8EAD20DD0D +87D7D61B59625700FA02BB6010C079DF0D8150FD3FF81E7A6F822BE2079291FF +3E3E0275CC3729EB7318FB84BA1E5F972E65C61FA81514D88D726A3271DC6B86 +7737AD3A5128A7FDBCF78B4928EB7C2E145649F860137843BDC8BDC7605A7F42 +AD980CF12588E2F48F343D1C29AF4105A9C578E95992F9DF70BD32805F5764CC +18CA188C1E84F8D2071FCE944E3CDF94EA38C2A8C420F9718FADDB42635631C9 +CDBDE63FA2351A6A37E20E5429FE07E08193AFCFE1BED31F22C760D92D588332 +5A6DCB5192331599A4A492C81CC04083456BFD48A1C180C459E2F671E03AF6B2 +D940B174E505117F01000D755C953CDC11D2A97A62E4A9A07F686E8E60672FA1 +AFFB040FC1F003F4D8F52DAAE1E712E630F4D2DADE0725EBEB0977BF22F64812 +A84D20D3B247E807A48438F18959A90353158ABF1F1FF2927A119AA3168D0C95 +242D9DE25477B9F8DADACB25B931B1A51C7D29FA318289C100776EE1B3985AD2 +66E472B3B55582B99E32CA77A491D8D39E5A4B70C686C76F154FC43D691E69DD +813E980BF61B958FFAE6066F18ADC6F6FAFCCBC40BE7C13D6210EDAEB37D02C2 +9FC2D811D91746FAD645D56A3F445EBD29F43FD3D6F9EB5E092758FA3954C2A8 +F89220BA2374244F7D93450B9B034138AB601353986ED727923F218465779C19 +97EE69CCBF7BD4B5F0ADA70CF031F67499ED2693DCDA8BA8DB110C79347FC504 +55576EF1E1919FBDAED8720617C8E77FC05A5C03AA2BDC83C531ABF40A3D77D7 +7E4FA88468988A62213E18032FCD8FD5FED01C769CA0EC8E9405405AF8F9A199 +10C73EC37010B02AAB20EEEF0D5DEF52CE50D461C3240601E077E5212B5534AD +CFEC48581DE9FCD2C1617C1EB687AC77373D6234EF64E4A038D742D0232EB2DA +E2153BF1F4BF41303C5AFE82FF1BB0ACE3D9F1002219A010F05E4E3CCBD7A297 +A5FC2917C8087745DEC22C5910E27F8B53F93F1B863312D409A38AC377FC10C4 +6B20CF1E9CC7629F44BA1A1CD37D46DC0217AF81B96F4264EE293DDF1905FED4 +8A0EAE2C90DF661A258CB91FB5CB784C1ACCEE1B80600CFB7C78995237F333BA +3ACE475F04636ADDD910D2676439A55885DF8F43CF61B26101278DF1266AD531 +4993AC61B48A36A52B3495B7F754E4B50B8035FF1D2B2E27BBA6F4FD2699D7D2 +44F597E1BADD0B00A6135D45E190EB532C23129C2BB845577141A263AAAD645C +F0170C7E11B2975281638074B03778BA2B41370168BAA72F5A9FBE41210BBDF0 +42C3CCAA25E748026512E5199172F4E4D71CDBC8AEED813B2705AFDF0E62220F +4EE5B02E01C12B5949E9B3FBF7EA6BD12AF486E69E7BFED39D11199A3A23F2B2 +24C7AF9781C87A411131B4FFC89094BF4E2C256E6A39C1952EFF2B3A50949F79 +6733BEDB683BF9D6FE8F48C0DC55696757B39836BBC8CBBC16DC7301AA59C99C +FB1D61B5FCF5CFD2FA7206F1F2586388DFB9788F6216CE4D090EB3F94B59EF1C +F1DF6132F2543ED7205FE29BBA058866BDEAF6DA3F5094520D95A33606F64C9D +5634F7F7D50BA60804DF30FC45605CED86D9FF3CFA05AEC1F65DB1DCA30EC0F4 +76C8F4723E4566D6013B46AF9D5EDCD62B97536207316E158878CA470244B337 +7F99B288DCF8AB29704F50C81E4877E6A2039C5A74A97FD2988070A96811ABC3 +8632D6366543F07F074CF793B5A71CD50706CD507C258C9A59F72DF340280F56 +AF574E761270563A9808507006CA8F30B17BE7697A2117658FCF4564455EFD6A +AEC5945AF70E553143FEFF2EC7D851E575D369A92029E53BEB6D5D0086B47DB8 +AC8717A7E20033E198C51E79354523C0308B82389CB140CB455C8A3CEDCDA203 +A8AA3302D19BA003D8D98A3DF964F1804E867347B61947C03DDC981FB62DDEF3 +4CF42473AF16E28FB7C16D8E8DC27DF67D58CA16C7633B5152918B224322BFF5 +AED8D2A6DF9A4BDF1528213F3ED79655933A6BB78E971E3C395B8321F204CE40 +52A3D96D7DB79427E629665767817FEB328E8E0AB8552781121117A7F1A168CA +0B86B9E1FA3688B323084DE74D870886ECB7E7B38FF6D74283F2555383CC745A +9D6003B8DEEB957AE750C841ED577C933096B11CC146B095E257266DD5352962 +83D38818629685313678FB3449ADDC77FD0E644C311AA030A4BC294BC7E25937 +0EB39A096BA64A4E012FF2A7CE7EF54D9A7FE9B3B61CDE083B2C2A2B6E898E9E +3F4198DBA81095536BB4110A6D720DFF7252147A5192B195115238B0ACA76987 +9CEA5203590C9B2736187544D849AC809746EAC2EDE9F2FFF05FC9D61169C920 +7695D6B8591055E1430061256A2A539BF648BF10A56044376D7B02784BC14BD4 +0B525BBA114AA26A9760981FB5E25915B7792663316B2A4FFA99860365FC301D +96819157D21555286D0D4A0352A734EC8CB04D086C27EE6B854A8362DF6AC0E6 +2A780DBCD8B257AC9BC5315E5261998EB9CCDA341BAB9EFEE13C892B1AF08633 +AB857023CFF0BAF4CF077DFF720655A7D3D06CC71FBFD1F81B31CFE4B548CB38 +6E00A8A4E88B30C79B944368C4C7892737A7178BF4EE09E6EB9648B8581DCC99 +3795228D0A79E2D9CCE347C7011ACDA95AD008F3A88980E905E6F96BCA2C7EA9 +551A8A1E6A53BDDD24BC90874D3F7E279500CDFADDE96B174A32E0DCD08B4243 +370412AEA9247DE985655416187DF8E0F21A3493A7BC70F04D78E79E92140506 +F9D5B23A2694572EAE55394C9BD78C8DA0BE5DB017AED073F99CC72B775EE123 +0C77F59ABF9E9C7F3FD9FA41CE798D909FE6C1447E7E7C6536308A82436732C6 +0DC4D2EBDA12B3E3001ED58F91F38299C49EDA0271D681E7ADF369FA83B220AC +4DD68368CC63075EE022B8F429E53AB6A5B6E24D27E4E149E8A1F0D6A7E05114 +CDD86C5ECEDE032D36C19A23A5D90FD33819D9489D6C6C6D397B4D1C7F0D9C6D +13C5A19790CD7C7DA475898D3A4B9601F340A5F9217AEE43F23374868A8B970E +5CA974254C475A9D0D2830C1DB1376EA705312167F0CA67E929BFEC2D7FD228B +C645A2EF49FD6EF133FB988C27D92D9E708B6F327C4B5D4613533C8EADAAE20D +DADCCAFFC6CB3F21A6DFD17DE3BFD3F0C528AEF8D9185E39005B3385354CCF61 +FC00063159A569B6CA56F9ACF52844ED76DE6D3770273D97D59315E6320DA790 +D8CF9B9C193CE0D71708357DD5E72CB691C5C25377D626BB67D72A0D87B0AC45 +90B58A27AEDA490EB932A0BA42D717CA4B9085142CC5C876A8DBFD7D26252181 +60215689DB2DFF2350D2AF1D35CB5757D1439E397597F7EC2C900003D7D97201 +17495418C4A49DA1A5D85A914627270A05BDA80B39F877B8A267AC3BC9AA34A2 +A198B1CA74D94B03B5307BCCBBA18F1748859C15694B6AA314BD3C521C03A854 +31025DF1349C738F37A4E5B667945F887A4DC9D1FBAB65938AF94EFA24DE7B3A +A215FBD40B6B0171BDA4ADB6DE43F7221299E4E83E5749985B68AC155E37E190 +3EF9FD36C5D5A98CF218A1C8571BA91E56DF02E00A0BEE4951F3644393C626A4 +884054DC4603AAAEB31E3A93AADFE688C27019BECABAC944DA40641EBF441DBA +41814C9A836B02B49CD86F767B33339B73566B5D745F21C58196E735811B4830 +5C7D2D21A8AF8833AD224FA6956E0EFF7E72E25F1D512D846BBA3524D880E81C +EC42D3543F49F1C9008C1925D85C0F8E3B8D67462528750F462C5FF6B1045461 +0EF97E8B022090A21196A1FDEA5527AF0B5986F59348E2F270DDED8CBB1C090A +CA90E4287CC1C80E2072D572C4CCD44C401E5DFBE9201DA727978664FBD179BE +F76B883E803B44FBE873416E24E67C3013808C74F6ACA64573A71CB30ED53F8D +7EC5945CB4DEF6D5F02F6A53EC8DC250B708CF65398B6F1BB1F7389683993E4F +389E3751D824CE6492D059E36D58C252AA6685707B680BA7B94D3CCFAC0D1FC5 +8133ADD39C76DD50563B028757E4CDD8B38E63076F0F31E021225E3003DBE60D +CEDD1D52E9570970EC6C332B576EA4838E7BF06D5A5C0D2C0050BBDE28E7A3F3 +DAD8DB3FE44B2FD93BA323A3CF58777ADFEADB9BE6BFB7E07640F0FB5CAEBE4C +045F9958B5BBC019D04B5AD0CBF4A301C5A0C4AE02F3248B032CE8F1E3F794BD +A0BC691958272350C8047AB6B07132E488089C56046F556E10C1E6DA7A377A70 +E0C390EFD9D67A89B76B0A7C2A7C7813EE5AC54E5A17D5E9BC1A7B752FF7735D +F67ED5609DAE910077326AF32F15EC013F1CCB33905DAC54CEE84C4CB1CEC564 +F4349AA7658364DF1651D46D7F3F235552638EC444E4641E4D23E1C73F0F7AEF +A69B94E3D4B14B56E825539CBBC5FB45A36F07E475831875398ECBE1DC1DF2CF +81C9A6C1C9059B3844C938983029FA27EFD65C6472455CB6AC4A3050B02788BF +B02DC0F6B7DAC33BB5ADEA407DF17EB3F238E60FF23CE480EBE6D81653F8F69E +F7FC9A3525DD889E4349F53F4E4F2E9AFE3110D824A69D048B820E5ACCE0F45D +F543A536492699BE1B70D3508129B26C25F8B5ADF648216947ACFDEC896F469F +10C63755BF3E69401E99DE07B4B7D36B4309484892A58B8481290F9E2FB8E9BA +E9197A92931107B9C698538876D167EFC34E373BDF12E0022CBE8AC79C65A9BD +93237E9FC307A19A4C5C3102007DCAA4C1076F0262896596E85D37DCF92E2B5D +A2D735D8447E65D2FA033A478B6D0BF82DFE67E6F8160D68953147B80C520E55 +2278E94E354058FB791D9522A26FCDFA988691D17F9EE00888F63A078E6E1DCF +2F9B3C8FB1B42C3BADAF8032E4647EEAD3B008D1218289F4B2D5872F65BCF34A +1C1E6AFBF1AE81B2C8392322D35ACE6D9ED46A807F804BDE2FE795D9F7829223 +9664594850339D6E7F02471C791F4E96EA408A6007EB70655F3D1FBBDA29BE92 +4C961D5A347380D5B509EB7EFCB3C72179B343B2A21ED8E5BF387E69F3C89630 +95AEE58E43557930F664BF2BE2EFA5F70979929792C4105144993164D37A09C5 +EB957983D51256974ADA78B4EA5154406D1AD966F9101D99816924A968812C28 +FB785E497A1EF0FDA1BA40679F94B35CC07DA8AE01106C3CFF30C966A01E828E +5F38D6869622600CFBE31325BB0353FA74DE31F7E43106DDD75D332F63181DBE +6AA9FEE979CA8C76435E5CC59A8066E381A2B815985BFC843916931287E54B07 +1871D79A78FD1D1E9B2DAAD830C38954BFC84BDD5E32E24C1809A3880DC42638 +0B1FCE1E224570759273C94CC51AB7B98B54F84D59556547D311324923E1A098 +86EADC68A31A0027C4E5C7071895FEBDE70E1A8545DD081CCEB2B0926C174BD0 +49906E8E338F019ECDAF55DFAF051D796E3C637DD96852178F9D7350587983EC +8CE986E1C55C450C91EC970BEE12966F0C6500964E41E7737810219D397E65C8 +6BB077B4D670F910D6105903BAD3A5D5A6F14EB2032220DEAB4DD9215C907051 +731FD358E51C04DD17BCCED0C6E3B0D91CD84CA3D4808E7B66134A7ABA4AC326 +3F909CAB47B296B0762EE51D5B3A0081A7F6294CEB187EB1E6D8E07459291BB3 +DD6B680D6413612C90A1221049E86D83DA16AC3CA5991E212E1A90D0D10C1B0E +71EF314A24868F70FF89AE2127C80974ED8B552939D7F6830DEE869712D1EFBB +A138463FF61D07D07F366B55D500A72EE92DCCD2A9FC55B9CCDDA81B597A7587 +E7A8CC616566D24FA69D0D20AC00548575774E912AD3E0180287A09D1DA3ECC3 +BA99FCE477B0768E9B5C36AAF71838F80342CC39189B69CCFC7322BDEF9C3A22 +46BF6DE52F0785A1D8D5C85B7A187ECB3713742FA2637D462D655CB6334614ED +68D356D3082FF62520C805CF49B1AE108D6F2F1C80011DEC5D4263705AD01E90 +FC3B798930EA1F40C40DC8D03F738D967400F634FC20D8F55C1C35FEF923D712 +B9FD2202703CECA062C6C0B69C30EBFFA7C11D7AC240FE8224F64C4BE2CA688D +B7E0BDC35327A012CB44F603FD5B46C506236A5B285C46B305300E7C3301ED78 +EEEFFB3E8D45ADDECDC5DC674F5EEDFBEFF33880AB6DB879FD0BA7790D4408B1 +C8A64B132CF3F23255C6EABF0D3228E012367F03609099C4A85135CE4906EC29 +11E112A98CE5BEE755D4C8546A8B603823EE277FBDD68D71166F5575801CA181 +357BC9C7EBD7639C19FB93FB2AC42552D679E8514941707E23D4A08D445AD12C +042B9F11A50942844C5261852539727BD368E07D43742B27E07946E1AADB1AD5 +1196988DD920441175653F736D156CB1D3285DD762073D4E60F417B054DA4F58 +CEE068D1B8B1392185D03225E4C112A80E5810D31FB68F4091684005EF3F5AE9 +0C3D494EBD6255098CC2C0D893CBA4BBAA776432C71A73088C7214F70AC54D80 +B61C750FE6F9D2003EA7F9447FC5B93E07C10B6F239A0603EC58D5C77AFB525D +AE4FFD5113F7AA4C0CD8CF0D5E9E2F70A5ED2A24166CFD9970CC9DB432314483 +70C52C0AEDC10361101206CC95A6BE2D754BBEEE4237F6B7B5603195F022D66F +224F3951B00FC3615B682594FBA90952BA76D30D49BE5801AB803B66CDA3DA03 +882FE0AE9D1CB1B96A56F15E86FAADADBF72956E3D932FBEF5677A55974DB0D1 +3557CEC32D2F26DEBEC28A798163355BE8F9193E307976CFE7CB2697FA4B4B14 +385257B9B83223ED165E8508FE4A97 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFBI1000 +%!FontType1-1.0: SFBI1000 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecbi1000, tcbi1000, labi1000, lbbi1000, lcbi1000, rxbi1000. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Bold Extended Italic) def +/FamilyName (Computer Modern) def +/ItalicAngle -14.04 def +/isFixedPitch false def +/Weight (Bold) def +end readonly def +/FontName /SFBI1000 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-127 -321 1684 931}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E48759F267FFC21CA227CB409171FCCB3E7210398059EF +83FD1138BA4386043D94704A332C42359C72F282369127FE644A94FF3F9FF01A +3CE593E50746F547ADE70EEED31C2B343E9AE180ECCB1A902C8EC58336B6714B +C85B5D2843B39772578498ECB4E93B21061D4B60C4B956E83107E8FA2A086E17 +2D52021D2A99882DEAE3BC20C0FF5B8B4B35900E68C90E18FA6A156BAA4A8383 +582974AECE4F555CF275F89497FB59F385D4DF5EDB13A15259FA67D9D1C6F45B +793BFD1A8B0FF404A63084201E6F05E01860C4F53FA46EBC1D05A410E1BB9786 +9EA72C5C685C734E982CD637B94EE5A5B2BBAC3C0EB6B2CFFCBE42A8BC458D9A +CE2A99F03551D86231E26CE1F2928FC141BA25EE3ACEB4CF2502B0CC02D7F37F +AFA6C47B3A63BD1E8B3F196E0AC326BCA1E63FF4B3F3D8C57D9DACF03BDABAC0 +759F3A98CC2FA23C727CDA0F65A85F6907B958B755A4860810FB437E2EC46928 +5B43096C992110DAC53AA5DDE1368EADE492AEC21782DCD0DB5D66FDB9AC7C15 +417AE98C3C60C1B19BA65393D7315E748AC380B91F966BABBDF8D7E350734462 +B05B865C692A880A61E4EB600D00B167F2F89E5F3D0440465638695299F9C4BE +DD6206FF39EB2FD86A27E0191332877C9577E8B754A6EBF0CF69B2947FFBAC04 +C2AC9F917CFEF3F9FE06D357FCD91DB5DD2FEB4A0AD0BED76452CEAF1C1E1B50 +478BB3E97FF3D3E9B8FEB04DDE1D91B63849CA746D4F1662EAB46B0D36D45D84 +969AD38ED798EE0972FCA88D83E193453957D2434ADB71105122A7F245BE7D8F +7A6BEDF4BB34D2423CC0659123C6BE12F207770DFA96848186987A899E28EBE2 +BF7079D74C9FFB84F3AAD3ABA246FC5154DEE350F9399B9476EF2221C78F8F2E +ED99D22AF2954D5AAFEF355D8F0B55872E2A8FEAEE6F3EFE6765295576F263D4 +4A556948BC4C4261AD761741C2916C1DD36D5B81311845FB6A52C64C9AB22D0C +60A56459BEE6955D3E4A1CC2AB3E640EFDC38C74B161A800FDF8303D8103A221 +E146BFA1A66DC41B5259FB318AD221C5CE59F369683C239700CD406CEF385F61 +A3FC8D49F8BFCFF80F21CE468994FA22D65D1CE1593D63DEF772B3FDE5BD56C9 +528B0C6C79D701BBBF34B6591BB36E9DA10854B29BBFED7EFD6B398B9ADF9FFF +770F714455E211E675143512EB75BC835C43DBAAA0F90F572D4600A73AE67391 +3418B6A6D8ED8670C6C7456098D9EC779497F352E85ACC8102ED803AA4491A40 +CD06B17AFBFE1DA1466139A3AD1227690298F09D0F40A4179A6259BC73DC6ECD +4B2C973FA5264B6277B58C9C7C0D311A8358A70F6DC6CB6210326082BFBA5C40 +8B11F851C9ADF7D0CD1C66AFA7BDED664D70C8DF501977899347B32A7267DAFA +80629EC1672902C0442A7B16CF2453E2FA3067876280CF987C7ADADE60A6744E +21E659E7F7731A353F93AF022BDCF275C7B551B8C6F6FF275D15044258602DD6 +ABF90026C231610AB9789035258CFF95B4F9EDCE065EA0CAA4C2FEED7CA7E924 +3E9B76EF0F3E1C939E06CF16DB54E8B70B06DF5E60F059F014BB1DACD6DB9E78 +4FA3BD659797B79D0F03B2F288208BA01EA22B69288E707897BF858ED04F6C8A +28878ABBD7FF0D82F2E3B995D1BF70FE5743DE0A0782BEF6721F8427350E33E0 +5FCDDEE1EE1EDDB0B6F2ECF764FDEF7746CF8C764A7A43966ED4DFA430396F44 +232AC0C4B4F4DCE651542562F345A33653C64546E560F1515875D00488E72C81 +E3A4BA5BF6E400F8E6B3AAE49923C1740822037B8793DBC56747152A14806AFA +952440F95E97DD9B83E877E26BD9D4FC3F5713C48F34E6654EDC23EAF2970FE1 +6B2DA11016690D1F50D4DEBD04879C7498AC8B95E994FF0C6A60111098BE193B +00152F3057855BBEF5F67DB140DBAB955C35E52FD50E7C2E945633154C9CF361 +71F8C1BD16B6FFB4B95672D118264818A6B9225354D9D00AEDB2495DBD8FC681 +9913CAC6A8379EE7D87EDA6AE2928BB9D500A0361C7666BA337619983C2EFB2F +A7783218CA143066E107E6EFEFCF0D58129B8FE701BFB6C1B68DC7964703FC21 +0C57B1B36F7335FDFC53EF9BA65DBE9B3690962ABA415230C059632959DF6540 +681DC2ED0F38588227F64AF4D2798121591269B709385B88D9E1629FE10A8C8D +E7CB320777E09104B5A5FCAABF637EC7AE94CAF2D9BE9D6B06C831DA61776FDA +8E81578AC250762E982969BF060A5F0B84C29A0D35D078CF4722304AE1462B55 +AE6781011A7F8DD8C0093D8DEE2666920341A32B031775B8A3048E8DF953D94D +E4D27F3C464816AE987258CD13B77C35BC867A2DD3D65F56FC7028D6DD1E293C +06686EC7D47B97E25434A01F9DCAC1831DFE679C1C926F1F6CD590D7EBC50A0B +AD11F32ABF989CEC3ECDE832B18D24FADA7E6BBE5F1926F3A7B3CFB8393D8192 +65F1B514EAD5C8185DB6E7C09337B7A6EF264A48663AF7A14D567D809D79C1B7 +FD37C92E7DBFE4659DEBFACA72B0D54DE25E8FA33401965C946529F142BFBDE5 +EFCAAB878FD8D5711B8429D2008F552502BBC48A9F9FFED6FB3C405838C68FF0 +150A4059B0C6F18FECCB3D148C0C52FCD5AA407D765AEE960120B0E306B060F9 +DB99BF3BAB92EBE58A4CAD82CB36D9C3924663E50C8F12C9C9155A18D84D47FF +1DC0C733932030C47C025B5C24DB390B13CBC0E99664036AAE2888055E57C2FB +2E0B5C3B301E6A2B3EB6B9B745C7F795625646ABEBFCA05BCEF795D8676CF776 +7315F1B315231BA851F277431CACC8B58B95042CF485C8B7DC202C726D9364D8 +056335D97580B62E6B558100DC0087A766B63644E536EC77A074CED21B2B161D +D7285FE0ABDEE0D89E4EF6FE9BAF8095C11FE67769717F22A05C9A3851103BC1 +C33C3E5BD9D8C3D213188D999D41E54758425C1DBAE78B3581209DBD29CE5836 +4B5D980D4A5965ABBF945DB14D43C252C9A3E7DA8EBF491EC59FCC32B9054FF7 +0083D6C4C21C1E6F27E530A435889980301BDE9700F4262663EA24F48AFB6C25 +26FC59C6342024FBFD400EB15773CEE812E81C409D5B739EFE36171711494469 +0C790C0FB5EA7EAE88A88398390BA1B4D27E51684145B3C0E60A55961A476067 +3B4BA81AAEF295D65298CA2D81A942C68AABD0B28E0E1210793D00DB52404757 +01372143E198B649B8CD992478D62CF47120EEB58B1EFD70414E472D542B0597 +8D992997E6C439C72171B0E19E9FE841F0256A9254C0FD9339FC823A6BF9CEBC +34D15E5DF291EB018BEF074A17C9FC5A4640990DA80E7B7D393D9248E23F1F14 +C6B18A0ECB0B83328325E1B3E3B7F86E8773FE82B7E0A62212FD085FD69CAC31 +B138C313575624E0B4103B7DFBC3B937AB8A93873CE97AE2F4DB604CAD26FA99 +EF57A99711F3982180C732404E66AA2B9547F0672CBEE2D1C6AD444BFA2263E6 +E071C5234DD8F8620EE569599E9A9667F5B865621CD5E63744B1BD592D452789 +A7A313EB6B1CE9497C042921C72B8ECDB633E68F9BCB46477FC1F6D500E92372 +AB73DD9D5E944A4B403C80A46F92701B8CEBE9632C953FE4ACB85D37889376D2 +6BE793299A06C34EE200E9428E7F096F99C841C045F8C0D3C5187D854BBC8D2D +4339EF9CD803CFA6AC99B7F102EF3C1DE6C11079E4A1CD774F09928C902C0014 +B81829312A186E26137A027937F13B1FF65A82401F255420BDB026AB922329CE +255479D8E1AA7A59F5D99ED26FD0F1E4F48A3F0F223E6A0CC08A908C92A64133 +025A44D47E5C18B4B4BD8B3055DBC13913D07B45B46394156D04465C9392A6F0 +F2DBD5586D3882EA4A2A264401C427F3887DA412CDC7DCB0AF2F35E7B4FCD108 +44BA9A56C18BD83EB8AE31CE2CB89BD2657F99F2E269AAF87E1A9573CC39E8A6 +ADD238307031AF300E577D4DED551FEE090E10825FFD2D738D0E388EDEA82764 +5022ECCCE260310D4107618B29FF94C41CF084589B5ACBC44942606E15EBA812 +C50D0BA91DEB0963A268AF762E28E56F26766ABC2BABAEDBC9A62B4A9391B20A +9745747E08C154713D51F6400DC95DDBDE5CE57978C7753909C5D890D4C80FA5 +5A8396EFEC2829898FC8202EAB3FBE1EFAC9E9849D674A1A8281282E0F6CF621 +A4755202C38A082AD86E2155723623D895ECEE138C0213688E65CFEB0B8B5BEE +14600BACADCC92240795E50D4ECD4C82DE83BDD6492D3F0B4715869720149163 +559FCDC9C6B2C971B5E71F57DE2E952CB05DA5AF20A5AAFA2A0D2ED22E36A7A6 +126DDD4B139649053B7D4B10EFC83B290D41CD0FA17906AD8C2FDDBEED7FD8F4 +348BC7C327ED4A474AFEAEA28B48E370607810A4F1B94B335492FC6D739D3BBC +75D6DBD645A26A73BFEAF486FBFF4A5199B53F278437C43D7E2AAFE3E163DACC +BA63D4888068B399D3E21121F3C028D1C9AB15C0130F121140AB19923A59153F +DD1A335B99493DB957C7665B046A53AC3B9FA6618A09D9A440DB08F40451ABC2 +9286C4F958DB61B6045A11EEFE4E9368460672B94714890420FCA959B9D6959E +3828163121C63AA4DECBBFC66F68E574906961E7972AEEACC0F30846F7DF8AC6 +A6DA34FC0EBD3EB6E69DEF0B1D262290E6F139F89BCDFAFE770FD2E543F55762 +E6E084CDAA3C7D51901589C53182FE1246F92B349BBEFB0E6FCF572883143577 +3FB61EF34C70CC982FBBF74F876028A5A6CC514E9070A1619C63CFA8C1DD510C +AEF718D51D60BC88B8518074543D00A6C8263796F3ED481BC222D16C82FDC118 +33C9315AC3D6B8BD4F787AC0BF79381ACF661CD21D78534F10E08E6378D4553E +C689B5125CAA3FAB2477A8D8C1A0B6C0AA31C5741780C11AF4FD664CF4A14B47 +910425E1C1A55186D4629F4CBC2ADDBC9620B6441B03DFC2EBF77274C6725DE0 +7EAEF8412493E0CDB7DA9BC7DDC203F6D662A2D9462FC528DFDC520B86750D42 +A296CB255719DF0EDB778450C6493AE1F9780464BB5FB94ACC38F871B9B336F8 +E2A9DA46FACE6DD9D60E8E244F5C50419E822E60BB55795F4D2D090457DD2F74 +7A0BDDD302BED9C949686B6D30A4F6324739F1EA6386DAFA0027EE740B4A1080 +C24B10FF1E600D521D656D9D9BA7C99747EDBA26B41DE77028E8068D9415D8AA +4275FA301E8CF8969D8D27C98BA46A6161F9ADCE69ED128C5622A47440314AEE +FA5457E6BBAB699246DE3E22BA8C826D42023BE0E998E6C46A0DEB152CCE97A8 +02E45496D7C99A237C9DCFEE98A7FFC10FD101B48FA7CB65FAE8468E55261DBD +844A6B48CEBE7990B32AA06700572785D5C391E071AA7232D73C28E0F4B0AFAF +712C8FB0C0ABC55E08BF1BD1F6D6E6D58E8621EA626B47EE5C6C46EA0E661FAC +C93617117D54E39521E1028D3C307BD5C6118E305874DC8265F3D767F8EA74E2 +6AE57A5419E1DBCD5A2FDB5D2EBE82675D17F4305D749B3659AB24DFF6BC7A3A +8FA17F552F9306977082FEE8F2884ED0617CD97CC8BC4D846B8C96F4A69193C8 +464DCBE994E4256DFB2A5B9E56CD1A08F629A428D5B3FF77D030E037C83C1682 +30EED60114A396FF20A2B49F1EF3BF09F285EEFE560BB0CD6052A4B14E8FF80B +271BABE424538007C8149EBFAF63C5D6DBF2F7E039F6640E173E4C2CAA862F8B +6ED82C460F5521CA2A32709E7442F9F696B909C937323EB4D1BDF00320FC8AA9 +8E5096844429BD3B58437EB8FC762F44B7504D9BBB1090E9EE6A0D04F2C5142E +337267C4F0AA92EA63C2A0B84EF1C25CC7131F4E167E3C5FD5ABF3DB89BF4F4C +5AC640F549097ED2E47A9725EF8180832A80B7D1C518A41ACBEEC17D5A5F5EE8 +084876A7D9D91B32ECF19EFB00353467C14C9D6A4BFA4C26695FE68516B5714F +D1D886E1020438F4DF47635601EF69F81C65EC290E50E2E962936DD2E0C3327C +FFED7A453F80CDA52DCCF630CE7D9AC63400136831CBFC3CFE4FB3E4D7D97069 +E9178CAAC47072F02782E682F21B720133712788FD28F9FCE5BEBB1A3B91C65F +C1C9F66893197C72C66F49076B7D7C4B15ECD39E1A356530330F08C34C1B0963 +335C8687B0522044E3CC64DE2B5330FCF157BD4709C3FC1A172F2C4895F54DF7 +01AF923BF1F0DB37E3FA7EE23B24F9B76270DDAEDACFD7980DF59C01C28306FA +46FEF4490A628F14FCED37AFAFE6C7CADE72564CB02A28FBD48EAC90FCCA6AA5 +D8A42E6B8BBE852F23301C4413669399A5809F6D43CDB4BEF03D4E3242D9A72C +2654EB2EEB19E497C18222102AE68685AADA687C919880FC3A496AA47764358D +7E135876EE63372242C5AA40B95245008332E1488E17C5A197902156CBF3050B +C32098BEE80CB01417844B8467BD3606704433208E2B5294214481C12B8C0280 +FC67A306D16250517C34AE54BBB049E04049B8C28C82470F2ED774FF0807858B +5274F8896687CBF1D35EF7FD123562C5F34209414E329D0F0B278B87C6F187B9 +287BE15D70E4A43CB0124F110935B920279B6DCF4496A866D0C9E825970849E9 +DD01F772DA03589D4D8062509686501261E93D3B77F016A771552DF160CBA2E6 +0DC211256DA8941967E58ABF56769F22E1B528FE210ABED6635C7ABD2363DBC4 +502776440877FD3ACE295613268FECFA56AD5DB15A73B6D71C0E3903C9A02FB0 +FD7B01099A13691112C23EA20A3068D8402FCCB3D301459B943D6041BF900704 +EB611898CE98C5499E73B1A3A9688FAFA81FF51507BCB2C94093D459EF25EF48 +E7E56CA6FC107F6800542AD54BB5AD7922BF5BB090A20E5239988A3C93848EFC +0D9B2454293A5C33DF459777340D66DD7139F018998F22AAB79A6935D0ACFBBE +96212F4F23F6F7EDAF9F0A0F7AA4E149EF1AE79AD4F9A371EB3932FB43EC903A +AABD4DD42B5E597B9C268EC5E78DFED13FEB495DB2346E7588B941242B818698 +CD1F2735B72B1E1637F543A9C31793B813E1584C07CDD3E9568C0E6EF09218F6 +60022F0BF9B7E94ACC731777E1E5FAEDF3AD67463350219C6559B46661FA8AC8 +02341DD85046D8D180522A90FBB1D6441200FCDE1906F8586968B5C6EB026B89 +1CC36F89ADC5947B51D5F5ACCFAC6D5546F977C2923AFB08EFD5F0DED0963342 +019ACE47563B767E89B51F60C7A34102DC43A42E47E82B16F74265AA5ED01565 +E2CAFA4378A018B2194468EF8BD633E726A5AE326CFCEE604DB96BE3CDCFCB56 +E63BA8093A81FAA063F3275757AD4D6A4B234EFBAAF7E6E655AE914E3C26F506 +76D14A201A794385482EBA2B6AFFD80283572A9FF0C168479B68D73433332731 +CF1D21DA7ECF410AB3F3A1CB6287560581E09532B6429F716F0319307940DA28 +FE4334A6A050332ACE6E53FF049B99D7ECBB8E8FDD9D799EFEE232D4192057F6 +45BD791B1F5EE681DFF83E7AF220D40726E4E37E04CFC869330EDA0A83B36C95 +3C50D11FE75618FD15766B7B739EAAF07B0C66BFE9CB455AF06A1EFC36CDCC02 +8EFB377C038FA9EBF200324574AB5F54BA9DF6AC2CD9BC2AD969EBE9CB684554 +E52BC8DFF43B6B94BC2D60CBD811D2EEB18D4FA03E6945C40A21CAB57C4ECEAA +463832323BD47EFA27507535FDD20AD4D106EEB85412A26CA2D4BC7A7CF1A9BE +CFC174B5E419A5747A47D4E80E24D069F6A258594AE3ACB0EB402826384948F9 +711BA80D25A1577850F035FA4668EF25C04BD9F952D4FF02B658FCD4D5940614 +4243DF39BDE3F089B8367EC02F9507DFF43DB60982027209A25CB68EBF933D44 +BE7DDDED8F914556119BDFBDC3A0B1BC85C145C3D259EA79D170DE44B561BC86 +542EABA05239945005330239328466F7BA357A49C7A7A5790B67F0CB8B33D8D6 +5C433DF09D4A7681A457265BC13AD37F8247D2D9E4402B7BBADC1200708A5BC1 +850FEDF49C1EA682D63E90E510E49BA9CE2DA27BE17911161C1392E7CAFED734 +31A9C936BB420B4C2605C905125E5BDF87B2E8551B43669D2C0097DD7A353CC2 +3B060FF2853B2F113884CB34901D3C0DB208B1E2A278771B732DBB6EEF290818 +924DDE1F3C35894F79F3688A8289705295B18448D6298026C4069C57875F3DE6 +A8401A435C5EB7C713DAF21EDEDDDB9562137F7A907C2216EE842B1E8509A788 +C83F264CC64A6D403FD460619569380F067EBB85D983B2378622A7A5D1984C04 +AA6A99A472F4CCD492A71B391AA41A12E113D42212D38A70772BA2A21D43EBD4 +FAD3DDDB9562137F7A907C2216EE842B1E850CD332EFBC0A1FF8F47189C1D183 +6F6A53E2281502C2BEC2C053D9FA3F59048FD0388316FFCD6CACB3C5BA574EF4 +0AE1A59A831358DF6E6DBE89B25BB821AB550DB7F64D4BF01DAD62C29D6D4DEF +058DE583647259C30CBC3ACE475FAF039F5A3FE8DF5B24D67A79FBC534487853 +1627318A206241A81AED42C2DE9C02A7DEEF4D18652CEA4519D94AA4B445FFB3 +F1B20CB27D67C5807A41654005660BBC96D6D1CE7B7453FF94AE63EAC40D9880 +301C03CC2A82D3FA80BF130646A32FF73123D49006F54CF8BA929C597D19198F +4BC3E0A6FFC411CCFFBA9018C10F94B5CC88272F13B6F4B7E0A048A1AEA30F07 +C92EE16033D479E59B8E3D2D54576AA3197C8CEFA84D08D89C09066141790179 +03ACE2573EF9C6234B6BCEF3E7194022C27E4FA7642D15AEA22EC86453C36AB8 +8C65647732DCE678C8745A7B189441774BC20AAF6842875B3416729E4144860F +483D2CCA1789058B8C773DDDA782668A0F4AB8C27EF3B0367623B31715A8ED1C +ADB828028E2630BFE298A9A575C8820B8E826C6FF5F775F9AB43937CA045248B +2A4AAB9BEC6B48A9C2480958AC737D1C1362D1A178EC12E8AA4F6586832B010A +4F79CA3122BEEA272FC93475599E8F49B7DCD197623A6BE30B16AC9712030AF5 +B35C3CD3F51D893615FFD23F22832BB2FC87F2ED7405C1B49B48B94474AF89A4 +555C27C73D19F9792928C013A3BF8055ADDBDA155FA928DD5411849D2D1EBE44 +C806C5DA0BEEDC746105D7504F626A4AE870D29F7E425F4A71F052E0F2966C76 +AB57315E4F29AE3F9AF575D58C7AF3094DF38DE3462E62460699E12AE1A276ED +5AA7BAEA3FCA4658D0ECD0C1521B4E434B7002E64EB94753D34BA8D3322B9DF4 +F9D8196B6AD69DC16BACD22A504DDD667147E1D403E19686D564D205F8D9E45E +8DDBEF263E1949E6BE6C4E632AA9BDD8A5FC678456404A37F9E87B4166C8DD6B +726BB854AF9EBF109095E291BCCF0375EF971A062D122EA62177717739E38DC2 +E21C2C6E97CDECB51495B56EB347359EAAAB63330C9130332300B94740B4B110 +48714800184D27449E99E8FA8D864DF990F3117E1D6DAAF602E631BD20B06669 +9D80FF2A72AAEA5211FF754A82A584DEA5B8E91413D442963A978CBFB965C82A +66BCA6F1796AD56BDF8A0F1FDB4ACB39837D7630B64FB685AC44C4277072846F +1570C10D22ADC6EEE73C3A12F852D5D348F7CB926C247FCEC6DB99920B292835 +9F6175535799AF8E1C849DF7C91166566E456099191CF21D580ECF6E288F2646 +BAAE0BC57BB243FD1EAFE6AAC7B7FF78F49A6C669965C39EE80028A96CBF2B45 +CBD12F4B3007E7EE693F0811FCA548F7F144D76AEEC25AFF2605D77D69E8860F +3E421E3D2BE056D20AEC2D611B646103415231272AAEB7D2196F268B19D1C766 +50A7D1AA8D1BEEE91DF8E2DC641DFDA867EDFFE39A045F3841E352111EB369F7 +2A3387C36544E2FF576BE5C494D3B8B044519DDAF6BEA9C84D7928EB4E2FC015 +6E00A504BE94904B3ACC3A965CA4B0D9F911FE7A3F8259CF20A1EFB32AB56AA0 +119CCC153743AAE7AAB8A94C48170E0D91C3AD05490F32ACAE284A925DED3979 +05EFB38ED3105A49BE09257DE8BDAA8F31824A89D7A2E8757240BD50609AAAFD +65EA43C1406FC1A9E0AF536893B0386F6F70BD2D1AC2659C580DE28DE22D74A9 +238CC738185A229B64034C5647B2CA61392919250C3890457563CF6DE00CFAAB +7E2E7CC49020829081CAC38B92C1E2C4AE27017CCD7926BA32815BF322B15232 +24DA1D8B3E3D43EF22050DB36BBADB70948770720A3770D9D1DD0C6F1F686B5C +8A2E22096CD50116E33853F181E6738CA3B73EDD58006144CC0F77A025329F4A +9E3497B58E38DECDF814407BC40581199EEAA3B80188A60EB7AFC625BAD1C1C0 +DFE849C34F8E0B446AE0F4236BEB835BD15CF3FC1131F5AB4BE5AF1E967456AF +84581D8B42F018BD12A0005BC676F41C5E45B3DC0FDE7D571FB57B9BF0AE2521 +2A52D33A099F829028E6257337634B27F62620A76D2FD49C871BD38ACC4F3B3E +50CE7B5DCCEE399C69985ED69D2DBDA8C87BDAFB1629719BEB2A0A8D93948AA1 +06E37643AFFAADDDBFE8F749788BE8F7D31D3D75A80D47C776CC02A1743A960C +99358A19233ED4130D20DEE2C05978263612A2A9432F01A550980BF1C48D857E +7ACE895A6F25C54A33671706212983B1A007BE0DAD608F4AB5B05C531CB967F2 +859BF17E42FDB2A96A6E72502FF6261439BDED887A5F697C7F6299C49CAB1B3E +7FCC272E5D3760D225BD930FAA27BC25E3A839EF7073F37CA81EEF97C704C1DB +36EA616398F006A4F2912A3985DB3AD7B7D53E00368C4757B0F181388ADCF492 +65B094B0C1564F2B3327D780C5658A0F18579FA9E341AD844F607A2E64B9B7F9 +6B252C77342E3B4C05373D8359F0699D8F5B7BD9E4187A65BCC31652D03DB347 +E0AB5FB1003C099A6D1D888F7F14DDCA8603A6AE1E493C4B60B9A94F1CCA3F24 +142F0EA994DC152E5884304BD71B9B9DE91E4A5BE456F4FDA49C60627C7F8DE1 +93DD5348A764201DDD7E184D35A0CF3832B8A12006BE2986C124C0DEA0EEF900 +C7A25B48EA76EB838DD2D9B46E1EDB48F0E9DC5EE9EFCF5B13CB8E97F39B4554 +1823F3D7BCA602DD0E70D68DF5A2AA0E48CBC751F27B7B6FBAE3EBC418175796 +1C07D3C5E2B352E3D552B3DE731DCB114ECB11D6B4DEF2F5DB67C2689BF74B98 +D7388651C1DE9F945574DA467D4B68699442FA8F09B3B6694129DB89BA1744AF +6CEFD61645A3BE9E5E851A85A86C0AAD52F75E9E3A6683FC8C87C5EDFD5C1420 +B9635BDFF798B5F304624503FF1F8ABAC9B1A9ACC5F02B868AD3831AE1A7082D +87794A43BBB2D9CA0F8B094C2480C19A4FFABB808210BA22E3120621308B5499 +BE052B36DBBFA790DEE60DFEE77D3EF2A2EA836F48C1A0F177717D59A0632EDD +671E43B0F18D4FEB6F83D2CECF867C5B79A6D478AA4181695BB10DC043C9755D +3408FC8DD4103B435896E7D07A5E1F2331ED6DFC78D15C8A772F6AAD1780B179 +98B9CDE75D2D19EFB8BA59728D15009512BF0FC2C734929A2E7AC96F5101EEE8 +6C71F83D93B3E12DB311F6598ACD1C1E1DAEE2651F492AC371128177C9C2E17A +046E6D02E8F9CF4640B2C78544B6350F26774B50E5DCBF6BFF65DB2A3CA3A9C0 +490A066D109FE95DCF99468E99CD41E30525A4C86135D6866CBE5ECF79F4F67D +374500FACDE591FB425F79016F38C70091C3FF620FD9DDBF793C8CE9042701C5 +D20660A651C229D30910E5B65F4082BB6BFD5F16D7BE33FBE5BC90E92E13CF73 +ED7DBF183BA82348893BB54946550BC11B4C563D69F5D4FB11CF19C87EC39E71 +446B581332B872F0154E4B79B1621007440EC4067167E2F94439CD79387161A8 +52777C7AC946366A88528B742B87CF1C7439D0C15D2ACD8E3E336D8D742FDE62 +9415BB222C6880FD0377E12DFDDC54827C9CA9A3F70CFBAF96C829855CB5ADA7 +DCC9E4CEC80140105C5C915E74E3EA1489C57E44EED31D0CDB555FDF278FB597 +4FF7B2472742953B379EB1559F6792F442EE498596FEF516CCDB7AEECE8DC777 +1718DBB01E4B3DA7CD9E0E782986C281A66B8851762DBCD2B464C4B4A8B2633B +74B01B822780D96A5CE035154DD0366B94439A309323EDACAF44DF26964A30F7 +E73F6F647039F1FDA13CB0F698EE3786AE2772C2D4DC12775BAED77EA8907817 +01FF18739942A1FA7F8109E7A02B51C1708D6208BD5372B05287C3764AE4E6E8 +E787BEF2EBF491EBC46C8BA72ED4E58859ED1AF67CCA0BBEECA6EA498BF279BE +D56A90C55F115D2B85859292DD6F706BCE3CEAD1663C74CC79974078A37FAC42 +0C7CEB71C8A479CE8AB6DF8C1900D6497B38B27094243A825A167FC91FC26886 +32BA024FD17393DF2B52B6D5B17F47A3BFD44765F305C92F080CD8E9860EB8C9 +203C3F857F7278C3EA20764142C59EF134ACF650F8DED690F71F8BF42CDB8BE2 +D9077EBC356F8516D09079717A17D6B6B77F47567A9AA1CD0BC7B8C56EC99478 +3DF78266BF5BB7758DA66A22692B8DC7FC5626D68B5221D2A3772D616A589E8B +C97D737A251FB14FF2F91B7796EAB704D723916C0158441BA9970D09F47B8ACA +77EEBED273A1C1DBADB6657DCEFEBA57645B6137D19F493F93D4857290DC157A +FD7CA4F59A9404BC3B1D4A86E70CD8A650ED149DABDD8DFC8D946848ACFB10D3 +81B6804B45A62016B0560F8002F3DEB82BF875A7126A6472EF9232B80AE4C107 +DB8AFF0A702EA6632DDB8B3DB39237BB6E42B8FCBE4DEF8FE43D13D2FE0EBE97 +18243DB1F4586A062BD9A18B1C274CC67000F63CA5B949C48AD45B098DCC8783 +C40850B49E6AE5BA5D6ACA3FABE2A780B1527D439BC23545E2239A09C979A56B +9ED142B1A2B451142394E73487967126A4C51E3181C607DDC246B12DD1F481DF +4F6B015928B7EA8A00B2A5D1B7AFCB9DF8A89FFE3EC07F3B3E52F662EC435F54 +1CD490F8104AA7D07DC68D87C42C93CCF484BFB10D483EFA0FD5560B7E86FBC0 +5D34F91237E73F6FB93875C469C277AE49F349324C057B6A31926CD45CCCEDC4 +B173093078BB816191B899844022274F5A66C018419B34AD6BEC6C2623660BE0 +3D06E0EFA52385E8A0D51E7056C9AF72F866C3CB11E0402DF667AF201FA772AB +42EC1569F084BC983E89208FD1A6509EC4EFA51199627546FEEA876A3ABDD0F7 +5CFB4C451D37C03B5CC59E6F0BB351D019791CD367DFB43DFC993537919D8C1B +DC4FA074B44B977A4A0BA2A22B35A3FEA73AEAEA2218584FB8C44DEF24BAB105 +09B0D8D701B24DE0A3A861D298026FF18F93449AB8588A619F41D5658274E962 +DF06B22A14A7760EC06E605DA8420AF624201E5675EA37BA5FECC46CC6CAE184 +B62FEE48064ACCB0FA90667FA6D82701E2F74980ECE85DD3D9557CE129F9C992 +FEA341648400A80231C69295F2B8E409E73E461B3B08C35379F99BA2C6E1643F +070730D8E3932C069EC53FD5E9D76CD30C2768667D42C1085343DC8CA18AD076 +2214CA100965B59BE21B9A14B05F45BAEE1D7C7FBFB9FE6CB386131E92340E5E +4258D9AA9A634B5BDC234D27A736F901F2573B47FBCCF1DE7752E40B2ED9AC56 +D45DE682C2DAE1B08D2025E31E066B483D366B6A4870ED04CEAD7FC5043F18FA +DC383E9741950FCDC5B31FA668668CFE312E548758D71815DD87A8CB6D208322 +19A2CAC913B12355331747473ED6CEA0EFA0D8A78E9B512C93FB95D880A41CF0 +01854B121EE8C2179D37410FF38F25E56ECEA827CC19AA5822F28B803AB78AFC +746BCFF92BF837D27982CC1133B810916A7AE038C7D55D4171E9E51E1E1460CB +EDDC58F3949B9729D5FC36FE39C71279BC34EE3830FEF7A94661E8C7771BA4C9 +1524F36531117B959D3AA61032D599D0582A2C892128356DED1791291CE6E742 +B1BEB48B3DD05D0A86F7194B491D4256C9B6B947790DBA13B050559783A8D2AC +FA47FABEDD3CF197130BFAA16CA4E761B9A1F7E2EFD9EEB415FBACC66E8B2F1D +D7DF94C725AB78E8C5B3C3D38C71BA697F3719A9599396A13B7E9A88348D5D50 +03B07C3220D370C6CB6615080D4A38FF9BBF343CBF85DCC2F0557CED2F1C17CA +2EA20E0CA6697874A4657436975414FBD81B239C49BF853184208463E72B847A +40981D306CE5DC037ABAD5636CFB29DA29F4BA30E6715E62F98C6BCF67649BA8 +805D26F236C7905C7743198444E417AFF8BC6A7A2D59170E750789D23FA49AAF +401A90A10C3299FD3777981ED5ECBC2189FEB0A609729AC7B539B3205D20BF9E +5D58DA0D0A1DE0F553FE1D42C50BDD9C6A35A9B492C09FEFD6FDFA76A244D197 +E9D4D629DED8AA458C3DAD1EE47DEC18EC62DA4B0D5A8504893E84DA5A4DE35F +9A0DBC39EAF31BF97974FC52EE48924C567A102008FB27EA249870A5E696419D +D73E1C338797557B24736E6F71916BC8467E5DE9090355D108AAC29369A6AC28 +54462CD1188762677F90BBF4660CA2E48B37F8BB16C513A80E7DD1ED43E222E6 +35F5806879CF0DDA3F12AA5547EFA9579729FC99474D480E3C90EE2B8557C968 +90E47B48D58986D2C4AB3C8DA0D757A0E72B2C3B40EADF62BAA73D0269FE3B90 +95F351CC0D93D513E721D9828F4377FFC21B29817A25C002DEECF1FF97E321E4 +EBEA95FAF5CDCED356241A50B10A08140D3D681885B8D074A7642D5D01F730C0 +9354A9961852D9AEDEE6941CE726EBBF9FB0EBF59B2B665A112B9DE60C2FD5A1 +85AC932C8D17AEA8293F44EFDFEA92F66650E9F9F061714B28D9280FE5690CC7 +9B01C4FDCF5439981CFFF0A9387FCAB26ED98AE06528D3573765526415CA118A +1F48D5822378F9854755A2EB6846AE0761DDAEEAEE8EA8845351237ED9839319 +1A1534B96FE0AE95A7AA91571C53C27BC61EF207DF65E9F0ACE83B90FE0547A2 +039F72977875DA30D0C0DC565AFC9F86C40B618FA651F880A12DA329F8E2BD66 +5B85F87A6A97405F0B90055B1DE93C4CCE072919B5B7F5A932BAEDA94D95AE79 +0BC0ADA383BC3E3DC359230F374D194F9845480A6163D1FEFB4F487887B57FA1 +AE8A5303FF4C5BEB38346E31378E663977F648C9AFD2C9E1DA366BBAC34BA330 +D36A0AEBCFB3459E58C36D52E680950501E9CA4BA20B8A5540721D5CBE87BF10 +740D8AA7DCA3D75336AC35C60EFAC0D79F9DB3B3B5D11F420569FD3F9715B4D1 +53705B4AFA75EF1A38DD9E1489F3BB3F0F07CE61D939425066EC16FA957D327C +7F3817FDE1A1B55FAFA579721AF077195A50ADCBBD47A1C78DB2A16CBA634DE9 +2E9D587A968CA1600ED22DD3D65F56FC728F0BF5A3696EB49439A5FA29B47701 +8D55A5399537BE8BC617EED6A1284F2D0E9F04E04C0C521FB74265C9A5C688A7 +A3362B77381451D49DE799BEFB5BAC093D74FC73C099265D8FDDF9BD9F901F25 +694819EA9FDC45535005345653A94FA32758B6ED119B88402C04F3DF44CDF00E +33CD35559B552FD6F633DD7BC5B074C3FE538EE066E94FB49E7AA352AF92EA03 +2FF71CD16FA473DA220341661DBFDE680F839B58C2993262CE40C25D7AE6E398 +AB9CBAE1E6D5B9613F04A7AC6DFC6658C238952A0CCD16138237886822F9633D +88857E7ACE895A6F25C54A336717062386D385524A6F83932842227607F8F83B +7881FBFDDC952D0E56D91792124D00B4AF833B918B0E8DDDDA14042C3DAAB569 +9A6E39657B11080A1AA6CCF3A6A922E357E7010A72B81BED83D18B2A50B39F36 +7FBB51DE13B08FB4052635D23B9385355787DC9F82B6BE0CD82624B931DC3A6C +976DA3B956DC956676156096793EF1007D570B96192C7972B293AD5DEDF02229 +491BC1B1BCB48BC643EAAA929A1D4FDEFF6F828A4B14A1C9EDFD67A367669D0F +2F8ABF67B5EC596DAA33E6F389159E80FF68EA480A48696E70C71A3380DC9576 +ECEAF1CEC99779717A17D6B6B77F47567A9AA1CD0953FA8C8644EADBCD843FC5 +42FF32DF2483E50E66D0BF717F2354D6290B809C36455079442777F39A945249 +29BC6C34FAC4077EF8EADF55B68CC2F155478E78F747692877849B59D347E415 +2A8607EAD9ECFF2EAD2413CC617C235562BB04E89C31A0167D93B676A43945E0 +163456643444FAEA7A34B37CD0AF603E3A96319402EA1503A941EA209788BE24 +6196A63BB690FCBE83B62DCCC0AEC390CEC8551088F3FA9B8DC45A14C3DABFC0 +4E3EA210F5B169B832616A6C0B4E1A39515C332EFA4F0EC67924869FCFC7C1AA +01F8FE6C94BBC9DAA9B6A04FC4386AD34C05FB0A63EE17668340788D23BAE081 +3944CDA16F1EB0607BFA31AA396399C4EE2418D4F9FEBDFAEE44DCB3B60CB0F9 +BDF60A3865025D7468E2942E4627EEA57F01D7B319FCCDABAA4D944565FCE1A9 +A67F00F2385A1D4F1A647D15B8ED1C07FC3C7F52B7D55F101C5E81FAEB384D5A +2A7914297DB82A1C7BB674E0492600FA8ED8E24C92166C90766D50838A498FBE +8B175F8B0D9C63DAFFFF812D74AE18C1F9C79308F407D94BD1425E433C934CDB +CC46CB5214086187EC0AAA3EC961D51FA78BD115BB117B5C90F489E2E4ECA19F +3FCCFE8E201D126735111943B874CFB073F07CAFBBAA39411BD6AAEE07A9367B +D2DB224E360B0192737B64942E545544F287E72FF971C36359D5FB8F4E5CA7A8 +69D06F036E872B2A07696AFBDB209A818A99F8259826F363FA80679EE3D952A2 +0F34E2E9EAA488381A17E7F380D95A868F6339F114CE20C2ED8F04F60590633F +6CED2F10671008939C9D50106AD4AD1AE3F83E01AD1DDE1AE69B3F43335608E2 +7A562D0210297B4D4347F1E55E05D8058A7CD800D7970F74C91384CEEEC397F1 +277BCEB7CC260BF3C36DC32D2E5A6DE68E197986AECAA35C48AB7E641ED33E94 +02039A34F1F762C697C2F93E0D9B7A12D79FC787ED1F99BF4EB07D046A7F4426 +2EEDB6798C38F1F3FD113969C70CDDD8B5476EEC0C93AE57DE3229922240324A +ED065383ADA9347C3592C467C6E59029734BBAC063F1D0722050347E461C1B42 +60290CD8996538831478CBCB8F472F1DD41A54A3638212ADBA6B4F4D1F7E77C7 +5B70936EBEB646249611A3D2D6EA783479625783AB73C02F794757C6B052A5B1 +8E24340F238E8CB78F9E859BE6FB9F4B8FD8612B8C468B6249A951CD1AB6EAC8 +A64E395A7D111093FA2540D77225DF91E101D0D61C9E632C33138BC8621836C0 +8235455B98FB767CF32EA695E8DBE8A6CC2901C78FFECD298979C11037BA85ED +49D86A5FB931E805A96D0229779A26FC98D6539493DDE9A5F0377C5F6D381245 +1BA9E1F38574F2482494A16B2DA18A74CFF6605B45B2B0E3EFA240803CF44B1A +2EA8744C5E50BB385F27D90A79428D242AFF44EB6C23A2082DD4FDCC48B96119 +C73AE8EA6BF831DB6A519D8358451110F672D0C116766AC319CAF97CDD957E95 +5D0B860AFD8156CB4E65D9B9B1C05A5F99C5DAA7DFDBF54EE7B6EB62E35F19A5 +A6BBE2005ACED5F2A31D3A99977443FEF4870E5C0601419CC245052BC539D65F +BCD34F3ABDDCA82869341D68BFF322B95C3694B2B09C309DD963F1B333559D71 +446B581332B872F0154E4B79B160BF2ECB13C5A2DE5DFA65D71A4A5E6C8CFBD7 +464E89415986407DCA5706D64F37B5496CC12385F7DEC3936237A0B69DCD7880 +77DE8B8C6CD39B5C3A1E23C5846B0C9C8DBC33E359A57C1B1D67A5D21EF2E689 +7F39A9663EC971FB1E0D4BB02B13493C27EFAED0B0B263990B75F1178E8A65F0 +02E1148BFA4016F50A8669FCCADC1A42DFE02C0150A4C168F011878B66455AEE +425EEF76A3EB40B1E44FD49ECBEE3E9043D99F573E7EE66A2898248482D2ABE2 +EA52E8BE2AD8034CE3E81E1FEF9BC8A723F08827BD9280E2EDB91D52684776A1 +15BC48CA60998B467A6F54CF51E896DB6A86DFC38F2640A68E4799E0F0D30E87 +8E8004638153C41756192A4CCF18016B4AE0038CA5E93FC02E5996D6403B6805 +752AD46912EA065022CA6B3278A7FD03A73D92463BE906375A80C03DCDA82B3B +AF2492765568DF45E747C9635017DA64B14005994A85AB4510641707075A546E +38A3B38CDA4F6D94A8D7F3E1C56DA1A8975F58752AAC437650893FD921D33DC6 +C26645F3E6124D4AAD25730449352FC8C32CB796CB75AFCF7E8073F3B3F2B3A0 +D5822BEAF3188350D876FE3EA0DD5382793F097C753CCD836FCB2D3103CF2B56 +2A20024881EBF194A937C2948F8BFA46C14DB12F2AB25779F6249574DA233358 +11A89F3F1E0D451FC7A72D6E691686F0383670A99D28BDBE1ED38AA717F4326D +4119AC5A35455154D1626E7B77A9DF1EDC53A47FFDD7D891353C1E8D2CA7F167 +0423C1DDCC09941308CDFF578042CC624BFF08AC34D8F34EBA9DF28DFD02FBFB +3F45BF2AD9D980FDEA5766B9A292DC73480762D5E2F2655CCB85FB2D4C84ED72 +F8BCAAFA433EFE03B12B4A5AF9B171D39EF592578BCB79390BED73EE7BF0E065 +6A93C6FCDDECC4F7856F481E25637009583284DF72563F9245573C8854C48938 +22C24A45A7046A62B5C42EC23DE44D0A1643DFF09452F544142B9F70574393F7 +5493D27F0D5CCD3353432FAD28C3104E28F1BA38C80B43C22EF42F10570B5E2E +37512DF10D3B0BFCA90F419151D5408BDDB68BEA3BCCB306FFB29906CF0AD698 +9DFAFC8C0849C60FBA9B061EF6853508962DC9DC3E4F38673AA1569F0A6DFFD7 +7622DB1BC66DBC4E9A8927869323C277E6CDC7CEF4104155695B88875DA7FB8C +5E9F27F4AB3A68D361EB443919410DFCE5AFEF3ED1A369A2E1FFA4403F7C9D8E +96DA3CD41DBA6FFBDF6D566CF5A666F786B2E1824EF0FA6B697C52C79DF05522 +D62397136238C13A96E0D11F0F660D49172E098CD4E36877959B0A689FBA7307 +DB03BF0427DA76D0296143C156176CA532DB2C42CBEC9CA29AF7F60445268DB6 +2EEEA2D352E0A1E6DA3C51F592CA12DADDC73E25A7F87B1F8057BC4FC5659B3F +3B3D6C7C5FF38730E2C28E4C1D34B17FE63C3AC705B04F5FDA21D1E36A095985 +604DA504761A2A33A50ABCC19D199EF75E441590EB25F1BD51B2D7FD6E85139C +C659859E069F70F39A2C4EA5909902A489A36ABC40CE5118E4C5FA584A826FC2 +40B1C09BD5F86AB267E7E66E78380F1A0358B804D40DD47373B2F47B0BF8D3AA +B829FFF2D72DB2DCC11D878A395D3F6362003FFC46781CEB7B94FC6FB0379BAB +724DF2FB93A1247A67030CDF3493F3D59D48A70867881969612AFEB2FD437EE7 +8B7208B777EEBA64E87FDB6F3B56AFE0872325C32D9E237EF1BDA33B522DADD1 +6E1E7AAE12D2F059C2E655EEAB69381C9B2C72E4F436F434A68AD634CBD20CA2 +21758A70194A05460AE1688DA3BB72A06A03C92556117DE5E44A535DC9644C7B +083B38298B541F57E233C21AB0545A4870EB8BD3975B63EC043D7ECA92230C76 +BC76B5AAE89692F9ADC17E37F9B5701A752C0407B5F2CAE19CF0A22743FD3082 +3B0D18CD2106773B412AF2C2FA1823264E5A5B8F93B6C6929BA29C9BA172E055 +1A37D540C1F607C614359FDAC3487123E336C0172A0B8D543A28FD44D28AD551 +5C47A3028EBF958EF7FEA5F546DB873B815145D32D428D3620ED1C32F02DE73A +339DF5200335A4410551E7F28E41B8E3E7840CEC82A0CB6DA00C6CECC8759005 +D2376536BFEC998442FD18F45D29A6B349F763004651849511BCE5B61A8115CF +0DD100BFE9190325FE92D49F2F3B01F3B878BD23B950D6D48985754369A13F97 +843B172E4438179FE06BC162F728F406B3E19297EDFEBD8FADB4F68C4956EB35 +19172AE7E16FAFB679B6A7AC1118E169C484747D6E5D2CBDC7496A24DCE03F1E +2065B4D74A7E487129D45429AB5C9DB44E8D3031F622A6C37780132C993E88A7 +B7E34F93F9EAB5E6E8503534345BC224E9930C61865AD6D13FFC9D188217D4DF +5DEC4DFE85705F8015B05CBAA4C723537DA267577C52B9EC4D1154426A0A2461 +955190A8977652080F3323EA950D39F9B6F00428C405781EF01F2A68B268DB5F +2FA54A6CA0404496AA57E38AFBB5932FF8ED738D445B018E2C02DC723B3CED8B +0B9BA8ADFC8AAD2A83A008CA1FD50BB9E677CA6E4F5DFA061DBC9D174E411E0C +7813C40C7179FD4A3CBBDBF64C26EA303ACE987617CBF847AAEA25177DA75BA9 +59917DF9DBAC0CEE08E0E61EB4151D8659A891FFCDE4EB20465F44833C421DCA +C7B4250B3B4DED97186ECF7AE371F41EBA3BF88C1BC49F098D64093FB20C4D06 +03E84EC63BB4735632B64BC01C954051D5D740C26F0A5DF57CED9A8CB2699139 +22934C8FFE3774342D788CCF4499D03BEE393D6347E3E6D9AFB6B9225CA6A599 +B626C8AB954D2E45FB4B4704B7A939F9AF0D1C7C6FBE5FB3018E8EEB2F42CDE7 +2E2818087A0358404402377EFC9209609259D2C6100D3781676D9F654511CB0B +20B3B80C4F4AC5424A0F8AA439F193E4F4617E6485B058A4C57E61BAFB497EAA +A77F833C2CAE9C6B724969CC2BD3050FC9D5576B13498A95DD2816A07B58E59D +BDAC801A672205071379D9CCC9E2AAE1431C515236AFEFDC40EA140CDED1BC72 +EA59EA0C75173E55E284C950A2328B9CF3D6DB7692A30E47C8E630172CB5442A +6FC553C1FA5A97C3A88B147590B2AC97749DD783ACDC25907F2791BFAC975D0A +AACC09F71F2B4C1EC7E91B965438C80A0928BFB891DB65EACFBAE82CAEEAAB35 +9861CD5C2E93DBD608B29962681212A024D35109A15F5FA7EAD1994EBE88DAC3 +7D3336B0B8FD18C2B93FC8810063764E937A689289E77B22B80A23C2D6CF2CAE +288184A18CC89B89B01909EE55639B9EF53C16A39A49B13B619471104FDEDDCD +B3B2B92C46388C98F2263BA71BCC4E6AF1EA50CEE99565B911B17DDA6620138B +EB2D0574B6C6494B9B30C89A34E37951DD263A1B88F17EFBB57AB664D554677B +7112BFDD17CEE5800381200CC96A66EE851DBD730448648E388ACE2E9A59AB4B +66A26EBAF342B90794FFF12CAABF0D9D9856EA271F903D7011E093F3C2E66BCB +2801A8D24400671CDA60B4A6894A97EA26EEB88204F80A9FDC453A2F0CC09994 +8E18CBFDEC30F706A0892DAFDC33C8FB3575863FBA8207DEC4257E764ECCEA3D +BB2E5CC47FE3A74432266F916D8BE5A774D4E491C225D5A00D169323C878B006 +0934344474BEAE785E27D5A1C4B1A95B8D9BD3F364DBE529D0DA3EAE1CDEBEDB +E90D7ABB56F710B17C595D705207AF5D954D62DCDDCDD5D87DF1BE87D4EFA0BD +65CFC48004995477A27EDFCD93112678869F927BE43B58F8DBF49179D539242C +2CC6BFC211C466F73E7157A998CEE3CB9F98E76423B8A8E0AF0594BD995002D3 +AE0268BBFB80DEA80E7D0BCB1C361FA77A4F9D4A077B5BA14677674F90A9F3E6 +3996C18B87248FE75337FD9673D0416BBD21B80AF0DF3BEEA88F5F55892F577C +48979B05C584E536D0351B1A6B6D72E59CCEBDFBD10E9E9A6D79523A14CEE3E1 +E522BAA6190E88CDA6B20E3848EA801F200C82C2831B3824F2805232A5BC4BDC +CEE4E4A7DD865CB7184B30DA0E922542ABD3E10EB4DE447823E19F3A3904E1A8 +976D3FD8E8DD4E60D84B4BFFEDD14039945DDE1AC7EDFC332239DA92FB22F192 +D875BDCC8FE919D55E03AB6A69A4B91682D23330D90336992D6E69C66BF9953B +6EC5E631A076A2CF969687934DDF3A3AB3757D2523952E3733D2298EC8F4D2B5 +9B435F3A49F0C171BE7191E2B5FE298927FA18E5C77A8DE7F439FA2662EE2448 +80CC6F85A6E45E36B101C4E9D9D4889DB534E0B2B745E356A09D0C453992E9C7 +49162D797B148B894F0D33CE58E350571FD0A73B92182167184C2FA1B8D931EE +E5FF68C587F31B62E3BE1230B5317E563103515C13C08A13012C6B82DB2358A2 +84AFA22FD41124E129244B19CE052AF7234BBAAAA9C44D1F8665F1538F2441B5 +AB0E691DF450900AEFAF1F22BD3E333196F16646F6A148E330DB0CF100E2D4D8 +845FC2365E00CE5D4796F1A3C57B6E596743123EFC0CF728FF4C30B74F5F89D7 +54633F15723CCF1EB5E23C3CDF63EE8744991DF8977DCC90A9E6ADC64D183E04 +A62B730A4932AA7B397107C2BB57268128664A8F1D14E0A240803CF44B1A2EA8 +744C5E50BB36F921ACEB3610ACB558FDBFFB4A0185E38C39BD1018E1A1443CA8 +E39245AFFEE4A23F79F3E2B8AEF1FAB9A3DF7D536993F03924A40163A337127B +661554FB3831472E3874E9EF90FF45C1568270892DA8E03F79D0695A5DD44C22 +4381B084DAA9858019428DCB3D87A7D5DB986A59BA0652A206A7ABC43370E9C0 +7D41883A14C19BF0370B95A56E00EF099C152B12D50AE4FA2C9D09BAD4E0A211 +690BD2EFF62330DFF7D506E9D890A82A7E86DA05BAD3227B50908ADE64F72F68 +F35287EA939FC9262B4698B8EC4E0AB01285B0E0C9B220B5E6B8EE385C36E2C5 +B7BF6D249D2BF5FD6C097D903E87B291F94D0DF9D3284FCEAE24B3FF2F49101E +18BEC7A478575FA05C938E87FBC25A7FB16C84D37A6334BF1A16C9D75747E869 +76156096793EFF4C31771805121F59C3FAE246F97DD10CFD9755ABE9B24D5D52 +0A3BBBADB149B0E8F247FC8171541089CF21C37991122AE51D1DC52A4567392A +ECBD1B80930E0150053C660D4B261AC39A38779CBA625A7D952E71672AD46C6D +24DD618B6804EFFCDF0035EEAC4051A806F322C4F1BBEFB7D2179A38B8273330 +A9D3E2A14B549BEDECD5BC7A2D67C624BE54649D642C43D19C7F2CFD2FF2ECF3 +0445D2C5CA7E3A4EF20D2B4C8B69A24AF96A430ED82E0F6F47D14C8F37EA53E0 +871C60947F0294638D218A0E3B2EDD2479BDB1BB2793EB5B54B5FD36956A73CC +2CA839E70845EDB45E7977B97498A80257BC69181DCCDDAC49D7548E5F35E367 +8CC52F9267BE6D8CC2FF55F7C6660C531F30E444779009BFF9D7C08B2F81E298 +8C8509D8BD1E3C5B1F73142AF45C8641D4D8192B796382901EB0081E2B211C90 +C58A074440DBA437589F4FD88A07294FAEA035E283D0E4B4C930704FFC4CA94D +8E9CA854EC185D3369D34FBE81C1FB28081B2EAFE01E791AC63C78F50CB5EDC4 +6A5B7F804FF0570F06A9907DF8E8EE50676ABCCB56D3AC3B7A7DA70D25CD2F94 +BE5CFBBA030CBFD445E8034BEDA3DB9160446BF331703053C7B96D56DFE0D783 +48F936601CF746ADE462513190113137D4F12BE7D6B30CEC157C2900C54D48C1 +EC30A9C64B3AB76E42EF2D8402C184A4941811E65A67660647A3341CF8F71CB0 +3BC1DB36E7D53D759365BBD978DE9D1326C9D3A73431E3220277AE0937E0D3C3 +42540277D26CC8D3D877461116BA62FDE2EB16458E2ABCDEF94712636E4C4AD6 +F9CE6CBDBA5FF88D8EB800B2E7291357F24351EB5F7F61CC55F70509341A1FF6 +5790EF826D036E4AA1220A3339F4275673599B0B960AACC2011E8425D54AF5CF +C13278D0A9C269B4D125FC3B756FBD56EA1E87EF5EBAF6A529F2E389124222F0 +EFE75804C70BB9AE4309B34137B9051FD7CE8723654616AF9C3F5472030108C0 +F1F152BCA358529E4680D789E7E8106F1F044257ABBD91CAD9605D4D9324C5DC +A1CDD0B27783451E38A003A9A3D38C134DE8CA715F6A9B7EE808EA3C36CCE406 +9B1FCA4402B501C7A2041B4AF8C944848EA6901AD21DFB16E93C1F23A609D25B +7BDB40CD6718F43375C7B0CD83B1A2F0448C3D53F22AACB0654520166DC5DDD3 +728E10405C9B5CD6964D1AFC1237786026C8F1B3F48F2ABD3AFE437820F9B14C +C65FC31B479D9917E1C36B8E8C6E0A09A1A26560806834AAB075B0A962730276 +0CBED2B14075077D035218EB7FD664A0301C34EADD98EB6581A50B6A6FB6DF65 +9DC61D66CCFB65D0B2484432310E2986C3B8645F4DCD69E3FD70C1312811BDA7 +65FC69EA1CA34420FE07B150D25BFB113A8888932B4AE47117F5F04ED68C27DD +8F13DB191A85E0112218A9F662021467C395302DDA98B0E7F90443A6D7C35323 +94EE48EE869D386F4E111424A85440D6DD0F83377AE26E093BAA6332E7289CA3 +0343707103EE9BF92CB78F0ABABD36F6AA937D6625C9CF3919B72543D280C659 +EB0928F84166B855B723075EA030A58670DE0521FBF91652DB600A4B2DA57B8D +9BF8DB4DB698442A462A101D9B9457F1CCB2C5C30320B1B6AF5F24118FFEC480 +1C85D0865CB5187331B375E335C721B0B6AD0223D63407E2EBB95CB107584246 +FC76065A30F6D0330E0BDE887DAA77C69FD95D9DC289D5DC6EFF38D244857ED5 +84A90C34E1BEDD84906B773D779AD9F69623AB0236098AB59593042533CD81AB +9A15456FA4719625ACAEC07496FF7028E3D901FC841B184B6BE8507EF8D681F4 +50BE2A959FBB603B68CB734528995ABF545E65D826E72ABA318DA97BF05D0543 +438D9F909436DB92AC86F327841D9C019286DB90BA1F58A07E5A068EE3854023 +A848019A377594A52A8C47E731EDBD70E9799F28DD02A498B9620D8B51D85D53 +0F0AE401CBEB546D0B37F51E630BD1BF64D508707249754906D177075BED8764 +67F93F32CEF2F838199B0B1A500CE2F51474488C3122CC3AE41D0BAFCF7CDDFB +3834C6CD1A27C1D1C3524F6F89E7225E43DB3D6B4C50CE0C2C73CAC3FC50F41E +5142CC0A7179CE505E1E02B6C01C4B41DF9E534A7B12AC9C3325FDFB8D58455C +9B8D30C28D9C7B64FFE07A91B2F891F10CE4DE20153C12110E0CDDFD0E3ED23D +C57892FC9CBB6F5C0D904CF1CEC2CF4067B7469607816635D24120266D66BFBB +C0A5DB12BE5AD609C29290665535823E601D913AABDA30E1349DE4BDFB8F5CB9 +EF266573BAD749B169A312C95C6F2EA5933834993EBAFEA33B79516CF4256C11 +B15B0DE30E763D974014061C405E1F866A8A9EB358231F2BD650B07D872CBC01 +CED3D0CD4A1564B27E259CF30231C6DFD8E9E4237870D61E78B3D6D8FCB26B3F +82991461FA382CC451FC0FED808D14E339FA60C755A470BB4088A41BADB45BC3 +8D2D4339EF9441AF87B817F602C96A322AC30706437086F67B92282C53F6D69B +AAC7BC03CC81999D4C790EB59B8C15995764F5E74FA60B385E523BCBD236AC66 +A80F61FB85BBAAF9A808F355DD87AD5C55356E5370C82B73A4E02E3B352D0D4C +1D1C51BE78562A77DB8BB3999AE757885FA868BF72A7726F7AFB3A6CAB15D599 +5069309914E9040DEA69F7F4587672565164448BD3E8F46EA5ABD14B96D6784D +6F8BF504C6B5B3FE99C6AB9AFDF06388FBC29B5DCED2F5B707B039DBC4F4E508 +7F6E21758B205A3B02D075FFA57F8B98BACCF33CC0C3874AB9B065AC27BD8F6E +6139055E784445CF430BA9E5264975B49214D16429C567DDDBD49B5DEB67F486 +B60814F453C9C6F32B47134B7E19C3310F3D35A3C8822F36097A07682AF265A0 +81DF3AEF0275DFB41B920AF228CF6B957404DEE3029E4261B92472AB0A3F8541 +07D2DB27832902F673ACACE6A7400417F44D02485975AEA265E0986B52087DFB +03782EB8B0CF4B0BDD9FD7586DF89430308EA6DFD0DB7AC80EE7407398C9C295 +DCBF21EC6F5A1973F879D23F82BCBF48283B454384BF69B64E373885A0DE42B3 +C60A6425681A295AE76A0B49E24419C84298B6BD703859B6A48366423E4EF2A3 +CBCE03E6EB1E52EC01AFAC90B42DCBB3AF1B53D8AF6501E206A4FF3F616E384B +FFE1C98E2A4BCB9F93E8C821DF78F392C401B2DF8E727D9E5AF97682D03D6E3B +A07AE2D534C7912C6C33471EBF1BFFC62A1F5EDEF6900737362CBD719DD22E01 +0E373EF77554DAEE940561F098738C2A5DB5911CC6B38C3F750DA7E21B9F631A +B9124ACFEB39FB4C522DF2189046BCB425F14940690F0E65185355333CD32157 +6BA39EF2C88304817E2362968C15E5FFC1F0976248355272EB032C338C6D8E25 +54A8CDE6ED7A75133F42AE79F0CFD761B742C3A629123A82E1D1D43FB9621204 +39F2E9A940809E43FFF72A9471FC47FF6BD457455E61C19C5FE7046B3F113938 +B1B948376D120FD68C3F123268BE630531FB5AB81B3329E6CA91DB37DE38A7C9 +A3DEEDB40590C6B5699FA383082C8EB36CCDCDA88FC6F74BAAEE2A6425BA8B26 +F3B3063D8C8D0181239B321567D5CDCACB85FAEA334955414AC5CE9E3F34E8D9 +3CE4BB394755F5F7044F50D2F7B1FB17E5CBA09A2A88E589503CADBAD56807CA +4BE9316A5124D91A2FE18320E3B33091801FCA2499973318C6219116F3114C0A +FCA54AB2AD758877E3915675F5DFA75CDC7C458A7C5A7E1A3C9BAB20A7242857 +8EDBA6AB21C87EC8FC2ED43FD47DAAED0272B0F39AA45096D59817D920AEF82E +340F0CBFFDF8341051BE7581BC493EAF169B51908A9899F04F2060F5D469EFB1 +88AFF23ABDC13035FD63E82AF46E165D781916256E62A084AC26E6F3FDA683DA +04372640C5886057CE80CF733571824919A5F9A4AA2B44204E1050FB5BBD063A +52BBA8ADAEC6E718D33F2AA4BB8437978994A693044160BA6A829B8F99C3076F +431684F23A980ED043E9DB36B4EC7F89BF408AFE16074EC5F52F1CDCEECE8A8D +FB299924F6C0B58370ED94F0398A6E10C8D38A55989EED05A6CF1199D6430FF0 +B032216BDB4F679CDCE020132AEB87CB499F62FB11A4601B6351C9B7AC059B81 +127097F7A097844DA070FCE4B4FFFB1FF15A21F973C4757758691D43C8426F88 +F779D48023A6C59FB2D6DEB421187B1840D761B4F1F1FD5DBF3CD3D7CC20E88C +1843CB891AA59F6118D92EBC9C8AE7199D7F786E08831A57C5C28C5F686EF1B4 +AAA8EA96995B8DB171FE96FB7C972BA94C31AD05E8F375741320815B1162EBCE +CBC14A971DB96511545DC47D2137841B1040152DE1E95AE81734AF5B7700A348 +0F5441731A04E2D5558EEDD0725CFCB326D05CC9C93ED6B36D5C824593B3E1D3 +355949A5F626B455398A9DC5801765508B85965A63A3E2A4F8E09B0128CD3840 +A67AE253A8A088D5929AF9A5AFD5439A72BBBBCC64EBB45DEB15FA6216E36F7F +767F917F8EF32367CBF3B2C94845A9CBDABCB9CDE279A86EEA7BB40859EE09D3 +F24E680CC1727DACD30EA43FBA89D11BDB360389E2E557938F85B1F7B33E41BF +18B6B6941E8278DD12EEE6FC6E536123552D6D68BDFE1DCFF117D94B1E217142 +30819CC52699EEFC00B83DD1783D9A62771BF4E241978C0CCB3A3F318001CDDC +B0010AAEB73EBBB8BBB7EB33FE8E46489A6CEC646AF8D2691D5B2D750262BA57 +C34780D4EFBC0CBDAC6266B1206FFE14D789FF5251B298C026219A9C8326B147 +1E6966DB8971D9B7709A0D24B8424F1986702182C0A693B32A6AC9D1B8304F6F +392B8CF1EA5A2DDD6E3B7BD3327E998804E41652AAC80F17A0DE61E8ACEF72D2 +BD1FAF1EE9CA9512407B1E474C98CE2DC579AD2911530036B7CEDC71980A1291 +6F1B7499FDE8ED7062117E92EA226230793BAACAF28D1230AA317F7A7133F829 +F93FD3BB68E8BD122CB30C7BF35B338BE7E753E91983C752F72010D159DC6AA8 +71364BF2C73D7C6EDE5D2FC985CDC440047283D32D759A82D73404891BA342EF +A8DEF182643C668C7755E978E85A8EB607652162AC3D98886F15AD6A88790E6E +D60793B63A7D19C1D9FABB1DE0AF7EC6C238390AD78F8F88F22F87ADFF9844F7 +3F8894C072D8EC6B8C5123A4A8351F7FF480189F58DBB4212FAA8D1A1B3BC55D +DBF6912039AE51C378A0874D9043B51C9E5B6B55D855D805AF9D8C4197A6A956 +5CB8767470C60784D1E34912D6F1B82A0EF7543BD6408BC94E32E2618B43F614 +17518D11F630101504714AEBB2A7D01149AE3823308A669143643E7FE49A37A4 +53079886136980C3EBEDE5D1F2CB7E996CB340609E2917FB9719D3174008A769 +0B58105050570B52DA48D2FFAB55AB3BB7E74880D2B269D5B1B9D421B07474C2 +53061D5DBA19F4F57E82AD5D83A7274A94703C5D2C85BC644249AC4B13736846 +4FEA9691D3A6EE333F02C52304EA1FC64E6EA909A35D2A539C64F33F119A02EA +0B1929272B73F6E5CB713C19FD305742056A8543ACFB24CB2442C7FD2FB01B2C +46E1E032943C3F08D3FC112D418F59AF9D08738280C58414375016F482E34432 +5F300C848091070331B4A9B8785A114E53DAA6AFAE96CA7824B11A126C11F293 +F9C33C92068CEB651D2C5B33B84CAFDC035DED5E7BE8C2BB4F309C8D5566C2F6 +628CB39ECF0D689152FF7F61E2EDB6EE1A30EEB3607CB788137F1BAE17C7736A +3C3B9A963338A965748BFEBA6034FF245C63987A30FCDFED92D1AC21355CF1A0 +AE268668D3FC2CF280628F6B1328D54C5CE5F5611A1B25BB55076C5DFB4EC954 +2DCA93DBE7F755A1831B425D3D725E3C0EDFD759DA4B3A521527FF04BE5EA912 +6E140796B66CCEBAF5772C11E4D58F6A50BC9AE494FBE7B5F2F68919EC355476 +0DECB25AD8CDDFE896D0EDF80628D245319191D7D7A8E4604506EF4900881538 +64C8B397FA830E6AB0522F549733F412AC621FEDA9B3798D97AA000AF4EFDB37 +9D88355945D363E53EC470F106A70F3896123EA6CAF5D4E9FB69DBD6D9D0612E +AEB238941B10C9DF14E39194577737056952BC5000D6231E1A5AE383FD9B147B +51B9A62EE5E374481A64960B65386EB61DC056B5A73F653A9C512002B8F7D9E9 +54BAD54AB84F92B5B18CA965E64707B3F3D4CAAB6407A7A69735A5CE455BC6E8 +189FCFD2A917013691AE7F798D2B1CE1A3C12E70809E096EB7271FB33FC35EAC +36F164467DFC993E47AB6D7FC32B17ACDDD3F4EC6DE4B987DD8AB08FF4BC88A9 +C51447EB7762277A6EE2B1CEEB3ECC0BAE327BE1B5F662F5947FF153ECFE3BD0 +E0897CC852E7E358B45329BF76BEDF2EF3C40FF14BA504C9187AC58973E3395F +73E4738AD6AC6B64BE29F3DF24A181D4F3518755E0E20E5F986A3B743E8EEBDC +7AE295DEDB96D6A6B8E9D523D9375E00C1B6609FB9C375C90DF2A2826A7BDA2D +52CA5C10F1040754E7DC6C169FE38069BE42F24F860C36CD6ADE608D1F88A2BE +D9C3DE7BBD53C1F61B6DBAD5997E10FEC2C31E161FEEEB7DE738B36CA39F1AC2 +45FB2C4DFAEBC4227AB26F184329CCFADBF1790FD75D5E6C3DAE4BCDA2AE0F48 +F0587D164F97065ED8AE3417298D8EF5C99AF77C6F908175FEDB2C22022A36ED +74CF4FDB4384E999B57A5C42B326DC3AB0AE012669B352C1000BEEB760AEC76B +B3D024FB5A0B841A040C1950229FEA16CDF6A23807624B54C250D51F2BADD6C1 +962154F7838A69C10E96CB1F1665661D9AA8CF9AC2199CE175314F5C9A52604E +70A6E89C327D4B17ED09102DA254CCDEDF902A6DBA1990F11385FC17EEEC0240 +1C8AC474C5BC3164C2EAC36B4D030729A74CDDF1787ED8B12F05FE16CA446D6A +CAA72EA4FD8A0AAD5A985A0DA638E4A1DF62523572C605BE2A1AB904F13A9120 +E29053C9E95F4875D9887708B009D37FEB67E8C8D5F8E1BDD26E6142E5F3BF46 +3CB8CCBF95522DF3C35ADEEAACDFB42756648FFF4016375769B2D54468E4A000 +F418411122CEE8EAFCE8A2C55AC57D0F98CB07CE437D066B60C95D193BBA2877 +005F0D384EF67C81D5CD88DE79E50645DF99816505348A30A3BA2948F0FC432F +5989676250AAE8BF880D5E79D7ED78A9AD803C26935A3AAA0ED8DE4522996A15 +6F4681C0CCDC24C8635B787A165C1EA07F9FBD0DA8DDA298EC0BB51D9BAC72E4 +BA954F05375F785E73B2F049C0C31C25856D1EAE53AECB7F7BD678DABF443BEF +13558C36C155D3C5126F980C320A045A12FE3DCE461FF0BA3F7A45B67F0B9A31 +026479101CD20498F921A2C6C9B31E1E814DBDC25905EBD878EB5F4D6C3F1B45 +56CEDFC0BA68018038A76155802935CF3E07F68524291F2D6D1E574F6A614B27 +17878F4B558A4163D17DB1D9F15B865108AD043F58580CAE4F2CF3ACEE22E6F6 +2184DE28328181F42642B78E4D4270A963965FF469FF76BD7386B2E4FACE4325 +10FCDE88004B9432E3C1A03FD29155C5E40F83806E867E2DDE5ABC67A6495E25 +4919205E1997F77A9A650970C992CF55721266A487503AAF47460A691A026437 +5FCB312A2213FEA190FF03C551E07CDA2CAF0E0A0671D8B9D4428E5FD62EAA85 +B091EED679B1921CD592B94242E97712F753BE6968116D5126FA3F5429EB3BFB +2593838A95001CAC320089E1958E76B577662F91AC7F271573384440D1AB91C6 +62AB0BE7270B026C3B4D7FF9C83109198A198959C47188AA3276532369DD078C +84D1FD84B08D0771CAE20FB49D8014E41BB5684DDC5CC5230F9DBFF82B377738 +95590CEAF436D04B86D7B526DB6CF2E3AA7FCA6704111FAB5184E3008CCD3649 +000512E87BF7DABBC698BC075A091C21DEE1FBCA3EE55319F1CA05AE699E006C +A96AF8878F9F561152D616EF575B3978D30C0657AA9E399A50F0C12EC33174F6 +6C40D6EC9B6BB6D164AD2829BB51FF99A1479C3250CFD8CAA7C4BD96CEC5F108 +56A340CB5FA963A75309F5FAD0870DF219619D1FF99E44F0C38C630C3D011111 +7B00A94FFED3A2A39D8E752BF6E6CCB91911BB0C061EE43121A7BCDD5FC0F051 +A8C32C3B3C51777EB848ECA1D361CFA3180E7C71AFCE548F35BE43D5C0E6FBA3 +01508D39085C2688EF29A8E317EDF5C148326F1B53D99C69E3F1571EA2935C0B +C5C7A0AAFF40FC96C1D701A464F751166355C97A67F93B98B291779F5164E2EA +1105D2D0509DD21FE85C8FC4AE7F9821E5C274E612B81AA260C630976421DCB7 +B97045CACCA48D2377320B27015F379D1509B3C8354A5AF316A7F11B8B8C5C5F +639A6D6BCD32DAEE70065BCC8ACB0420A92ABE5EB8D3106F702A2FBB3E668FD4 +269621AF1A2C0939E72CA49A7BE3446BA8430BB31FE1328504B3415828E06BC5 +391013AE571BEAF12DACEAFF5B8BE80F20B4A2B4667F33BF8DEBEFD4B088D993 +5755B43122B2B5762F2ACE20B8FFF50151C325BC5C41EBADA4AA9B6095A9632E +BE7AADDFA447AEAEB844E2F414A776E3EC5BEFAE5D4EAC832406A9F524F32DF3 +8A54F1ACB9D198C5B33D30CF083C7BB2FD7CD4E3F0F192E2878105F2DB6AAEDA +BE725AE8183364728411978A9F68747F3C91A86C6952AB1D5027CE3F20E83977 +0B7C7DF4B8F480BAA862608E71C3EC1EAE27BBC07D428570AFDDF7935B8B7ECA +F3544B3F7AC6AA4100DD8EECDF4908FE6989FB55E7E47C3CB59F0C133219131D +A5C76DFD43836856785AEE31763693AEEBB1EBB2EE5B2D66FE9EEAC0C31177A8 +6576ACCDCC63B75701742F2A9B25BE030D0AE25437A0A850026509F5FB61329A +76EBA18611F7C2D9FD47ACF7FA59A77A48F7DB13E4E0208EA5E6DC99AE442311 +9C6426A1D9D22E7A9DC258409A25E0FB20F75BB7D8C5124A4B81B5768F87CB8B +DDE13CB5B08FC7C62EA528E003306978895EFD5F28F8313E25EAB2921B3F5AA2 +529C17294B5E7F95A28A07E65C7282078DE1F90B1DF51B5A3F5939A16701550F +16CEBE6CD8125ED43091E1CD8E3A3A7AFB79B0FC52512C8F89470E7721C8843B +AFB19BF7526D7786CD8A16866C3EF0456C9B49DFE9604B95AE951ACC98AB2ACB +3302D01BD8C274E63269E16DA8C41F92327F4DA6E1183CE5CF341A6ED1605315 +0C4C5D6291AB1B1B2EA2C3A68285F865C5E676E97C9CE74DAC0FA386C207844D +929D5B49F1066CAC88A7E50285B88A84FDA917BC1407BA0BCD4EAA49613211B9 +4E2327D4DEE3766174DF6A706241C4510B6627773CCA52E881B73F233D567693 +70CF88B1294AC6DA8BA83BF0F5BD9012B53C8DED7080600D86EF5EADA36833E4 +AB1EF5836C99CF02F4861D2558A30E55F4654864E2B2836EB3B2A8ED94F5FFF4 +52951B065CB60CC5D75F4210B29CA07B7CC849151A2F83E4E251A1F96F01395C +9511B2444FF1EA3ECAB6C69C9F7CE247E09D438E9E50CE5F700D1972A0BFF43E +B613FA6D02337792939987828C60226360F463B9185D1FE5242F7BADEF96E47B +89A7E146CC2E36B0C636696E8EE86F6D7A0F82FC70F192DA4AF1B6D8A4B5CD29 +8C2C25285A4E51E48177419D964F80E4AFABEC81F12E3C89B1343CC2DC474A59 +0B90C935F78A5CAA418BF75CEB8E39C9D5EA06AFC3FCA3A4CAEBFFD6FB3789B0 +4FA24FE75B4DA7114863AA4D1E76CE08A69876D4CFD10765486F3344FF13FF7A +4CC74735176C335E5922D1281B5CC4C9D49CC6AC635BF5922AB90A527186CDB7 +C3052AFFFA83BFDB7CAEAFCA6B6F94A4544D8DCB3775D698EFF4120AC93AF2C2 +AD6FBFD446EBC62AECA7F6347A219D943E0D0005C78CFC2208AC174E5950AC99 +934E1BAD5AD24E550ECC698EC78E88DA8C3CCD3D0F5BB3D6C87BB6F7358B0884 +C2CEACD502171BE2FF353D3BFB2A83B0EB3EAB823C727E578DDD4E732A6891C7 +4D36DCDBBD4D867B3209D95FDD73BE1512E436F1DCAA4CC9B0085F21B118EDBC +5F90BE9FC00121E01AA3512F8323B178D8579773B77C8E12BDEBAA8FF5DAC885 +6A46A11BB25752767B9F22752CB131261C635D9BA0D5301449FC590B2EC47E62 +91DE09204C5D9822EA0073542881D7E29B03DC23BAD92300EC7D615AB5329F7A +B1EF7D6675FCFAECC30CF23B30F38E26CA161A166C6AE7E2484ECF6214254F22 +72CEFB72FD340C4E730877B8809C1346CE040C6AC93A80251727040E96894AFE +907360B55CCF271B139BFC8C3E663E3D57BAE3034DFD0702186CC9885FFEFAA6 +D2B31219F262BFA9BB613AF1D19E7D76586718CFB8CD057B3A57D97CAD1E4404 +ED733B41CB1C7F0FEF044F8E8154071F489DBF9A94CAC5951E89A46CB06E480D +D97A2E49A66D12282965DA10841828E9360D739E28A74054936D059E24A23B97 +B528960C51C1D56F600F89E5D7C59CBDC128B5FC4EFB56663C27E325049645B9 +7BC5CF39B6ED7FF2E556C77034EE1ECFFF60E62ACEA3FBD5A85D888E5D3A2267 +EDF8061B0D5651585CBCCD1D8B45EFD8F5E2A2F693D8588B3833449D23362EA5 +396745F6F73E693C7F5DBE32FBD1052107631C73810C777626FBBFC3D911920A +3C364F341327B8F961CEF38C06C305A1D9D3B2D20F8DE5D2AB5D4B23A9AFED15 +14C5BEBD22D76EAA5B09AE248A5B67F1F33D6417766552BD66E2F2409C41AA16 +74F609A69783801E38856F82D2788E6FEDC9E178E2C6AA15090DFCF4B4F50493 +EC73C96763B6F185669747B79258356FFAC771904F1DA010DE2C94C81867F5B7 +B15DC3D19AEA6C86C37264D366213510413A0AE56BF6716A562191C9968C8D7F +498BD9C2DFF262B1981D7064B9E738C8BAC1AB6DE81B22EBBEA3B0FE1A525ACD +0F78C8F36202DCFAAE54DD6C8A9E0A212829A36921768BC3CA0F7E7F0DD96305 +DA312D958E90058323AC43E7E8AB0377961F8C341BEF39FD44CA73922F112AE7 +6AE3C72CC335D454C20F8E316BC710C5773D71BEE139C21237BDAB190BDF6A22 +66B9F24E6042CB045F2FFBEC67FB4F9D8F9B5E27E15B07A60EA34A8E1557F336 +22417B8A16F381BB94992C3FAA18CA6BBDE49348B83A430457BEE87861D93F28 +1B52FE4AC9353059C8E523C1274D7A8D678210DF5FC7D76E653D9A187C384FB0 +18229450D32CF1633F8CAD74BE316A6B6CC874B2BD854820FE51317BF4D2D8EB +5BEFE9E720CC3873B820FD629D57E1FB610BF5BE6CCE5FE8A9DBFAE3E5A9E94B +808D212A5437F9770AE527CFA2F2B3C7AAD04E122CD8CA04841B3C495D8D28AE +D65D299AAB8E362203F9AB9E239F2B249C1D5DB22E2C19EE5F744DDDDD20472B +FA108856A62B65DE7FFF76B05C0209D3E11190EF97051D950454ABA7A686A3B6 +6F68BC018AB5DCCD21466960A96F9AD57868B208C9F699B500773B0179EBACE4 +0BA2F66465E7A02F5115F15CFC5F728FB371062BBC7A390196A05718AB77366D +AF15DB5AC91BBD6ACD23DC8539D362BEECB9CEFB5618E08D1CAB013F12BD9CF5 +D5F3A7448648D1E0160A5974BCB4B8DAA96C5963BA8DED9E93F28D1FF164C2BB +8AC9B6E916F21A6676DD1FDDB686B94A553EADEC4E3B5AF6AB041535D65010C8 +25F9ECCA1DA739019C45D2ACCE64A2CCAF99C88C7DC6996E6A92999BB4C6250E +F152195BCF114AE99FCDC09423FA5D366941C4B30CCD34A6C64AE048D71F369B +D22F57E777663496C05B55C3FBBE034A79549361F9A2F5C0AE9D2F5A70E12E68 +8524F87734E1F1F730565553C204D80986B8290EC53A03887DFF2AA6EA5B061B +380DB7C421A5A702101F1E089E16F5126772DB17FAB9F6375C61C368F6B6D2EB +68AD26141DFBD7E71CA7C44832C7BBC2BA684F6CE855A82F37147D58DB9D8694 +BE39A2646567666D092647837F28FD82139A662CCAC33C03E998296145A9E616 +D7B11DD838644E46DC726FEF4789C8E68A58BA609057CB3DB79EE43963CEC795 +D79ADE27AB1493BA5E6A275D10414A6CA89B47F676E7B84202F4FC71033E80B7 +C048660A84AC92B025AF4C7B5D647F8C4ECEF4E733FEEDF365B0BAA2C604E999 +E8D03A2F3ECDB80CA1D3DED08B8E6218BE8B65652FBE6801C218666A343F97C8 +3686FABCA8831A77601CAE7BD52BC707ADA499EFC2A07D65C7C9561C85DDCBCF +E82FB5C408AB48DB52FFF101DF309B0D813A7110829A041F011923AB1E421226 +DD7F9722AA488804E545BAE530CF143218E735C941BBE13BF2C69175947EC94D +0B7128323B9EB8DE5D48A05973F6E99C5426FE4914B6B605BEFBFCED7AE4923A +4561012CAF462F8DD59512DA6EF9D32F805250AED8645A557C871F82FAF23017 +AEC6D0B3646C5F64205B04349ABC3D47124AB4F9738518F790DA28D4E883FF92 +50446BE65104FB3E085CC52004F0E206B28E93F3BFA0CAF034C95EF34E0CB6DD +8AD0DA79C2AA5ED182399725DE5E52FA49ABC027D381E73BF22B686AB0A967E8 +7097F255B4C93D10EE95CA522C0C453A82A2DECF53CC081789319799BDE98910 +383EB2E9F366E908D75262183B48343F409419D44695D89BCCFC42DF754AC7A1 +E6C9972738693E477D30B68FDB06C59F88F6BB7BEDAE859A99FA4559BEBE3505 +B9AF549CE914BD400DE32C92BF0660EEC557C1D16D40F7C910290839778F6595 +632D426E01E98FCD76AD646B1714783AB5DF1BA0C4347FF580FE7CA4BA5CA87D +FB3D367370A9AF188E0E7208AF07AC9FC95257620540031755190DD6AF3E1143 +C2B9C5B4BD875D71B940ABA64654F594AB7EFA3893BE7ECBA000062C99DD70D9 +45D0F0304B85706CC412F1E900E4A3EF24749B8F99CE66AA8A80F5521829E187 +A182890FE96C7B5197343347618BA64F2206087C0B7316BD394C97BE53311D76 +CB01D10F4C7C4609946E0E76E69524644E4891 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI12 +%!PS-AdobeFont-1.1: CMMI12 1.100 +%%CreationDate: 1996 Jul 27 08:57:55 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 60 /less put +dup 62 /greater put +readonly def +/FontBBox{-30 -250 1026 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67 +3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993 +EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F +4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59 +2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A +323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C +2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1 +D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA +5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F +0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D +A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77 +2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60 +00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8 +CA0DA1186446DD565542BCCC7D339A1EB34C7F49246E8D72E987EB477C6DB757 +99AF86CEBCD7605C487A00CD2CD093098182DC57B20D78ECE0BECF3A0BF88EBA +C866DB19F34BBBED6634AFC0F08D2AFB2A92578A6F8B4ADCD6594737FF6EED7D +5B536DA9E3E2CADB40DB7C600EA4D100D33C3B92B1CF857E012C4EB370BA8295 +55B50047CD58E912E67E22C1B92F41D0BEE742201DF198F3766AE35EA71D8195 +A8C94D661C40D718CB09497485FAA34204229AECFE644C93FFDA54C789E4F751 +3D2519F7CB9E79B2ABE3101DF2EBFAD375469CDC687FB3DC2833EDC0F946B41F +F28D72FFF2A9B8B0D76DC542537612E2BE0F3FB9601C897386359C55E867A547 +F872005F5C56C6EC5E9685E03D7A82653BE8B69741C4DF332AEEB2AA450B23F3 +EABD5ED060606CC7DB1762632EC3C6C4A66ADAF61A97D949DEA5156B4CF34765 +67AC3F10AE17199A710A882D47979F9D41AA2CB794648BE47479F0B00E18BF04 +923F54CEC1214BAFA39BB65ECB013875899E9901B7882D16D2E2C97AD3353668 +A6070081E4DC627AF9192599F5876369908FBDFA11E8D6CB2E83896E9C897CEC +FD1D25651D66A333AF531FF74E1B0DEB1E3D1B5B7D3FB9D1C8BF60517B31C8D2 +1C264F44BC9AF3D9BA5280D1618EED96C11ED24F789FAA263394C658DFCA8DE9 +D47D9E188E212F9EC1DCF449DFDAB8437FAB9EA9AF01AE1714E8F932855182 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY8 +%!PS-AdobeFont-1.1: CMSY8 1.0 +%%CreationDate: 1991 Aug 15 07:22:10 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 3 /asteriskmath put +readonly def +/FontBBox{-30 -955 1185 779}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0 +5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F +80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107 +1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB +DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20 +9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1 +CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA +F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B +133F1E59AA9B568B69ECCFC0900517036FE3D4C09BBFD937BC5A9C0B89894A8F +63BCCA3746BA056D1B408B16E976D7BAA7D0F7693814ECF52D90BDB3398CF007 +CAD14DF246B4D1886070D41A28110F88C9D3EB1F30B1823E0EAA1A35733AD321 +E6338D62C26AB6FCD4BBB703248CD7C5CEE83E0167A63F89ACC9D09117C4D017 +E773665CB7FA79D22231C8F858735B554E2ED612A436D299491FD31F810F202C +C865B87083F980C8DF6A3DD43D437617A69D3E58FFE85F106F7E7F6E50D4D25E +328F7A76B73078B3604C51CCDEAEFA74ADFB9A6C3A5A0EBDCFB578CCBC3553F8 +44D4B2853DC7C8415AE3174A4C2209F4107C23000ECC343882C5E2ECA42D8B33 +F4846EB85076770BD7E5AF795E1EEEFDC5F0229761DE6BA728FA78549D6E31AC +55ECFE0C64351DCC357F619E3771692B7DF8FFD7FAF48B4299C702F866374FDC +696E83BF09BDB1C40B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFRM0800 +%!FontType1-1.0: SFRM0800 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm0800, tcrm0800, larm0800, lbrm0800, lcrm0800, rxrm0800. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFRM0800 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-203 -320 1554 938}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E48759F33528B839DFD4B92DF0482493852D12053A7904 +BF6E144B948894BA0E437691D4618A0FFB62E3630B93DD190EBC8F306BB78955 +34955AD847F95B1923B90644A4707B718BCB527F8D5F617EC559C70A91900E72 +9A9D881D02E289B0B0725B43F5FE653ECE8C5F062BD2C10F4B9B0ED3938F84D7 +FD5D3725C3F438E46A270FD43270689A5F30B1FD8CD61E7CB544F07FE57D719E +17CB8A7A146AC514A35380CC6D93840A2DCFBE40307F2FFD8AFC0E54D066DAFC +025AD2A93593551D363563A2208329634F6BD80400775EA44ED4F59B0F767946 +25D1A692A6C9197B50C369ADC30DACF14BB7FBF9EFA9AC4894FE3E0A6B3245B0 +7E7353569A285310D32E52C36FE2A2827319227E0B024A615243399486706FF6 +9E76827C1ED6ED10CA2C9E369D5A507991070CB699F666AFA47FB9EE3D968112 +38D5F4624378D9B34F8B00E280EA3F61E4CB33EDCC35F0433A4EF6D267C08A0C +5D5A95A531D8A0E1DB1394DA5F72EF2ACE4CFDF20871C679418FB1B481CC5EAC +C1733601DE79FE5D9B793234D4DE58546A5068CACB9EB1D82644358DAE105ED7 +BAAF89A47AF526E481D3E105141FC7EB61A5E5602412613D25A39EFCD8AC6ECB +1ED92210690BA38F6A1E1D49AF1B6C8D7904633F0CA55E1E951E9BEED4339DE1 +5C97307776C6238E3C3749F55276DE11CA2924CC66A4E4A9EB28E8967A14F6F2 +E8F89D4F1E8C0C10B7CE849A7418C2EBCE1DEC56863E893BFD8F6D83848600CE +2860BE518520A55FF29A64523AD060DBE25482E167AB91C938B5A37FA2944348 +4AC18A3E7192D917E2BBBF49B38C61C3085E1463612B219A339BC195E8AFFE85 +CE94090E9A0F892D94E3E01067B3015625EEAEC3151BF076AD971B63A484C137 +205DEC4DFE85705F8015B05CB5AAE1498BD00791B1F6C3E5BADFAB982DDD6863 +5FBC23F3CF29553FE07A7E72447D197D259E6991BCFA71FB5A983EA2A620CB59 +B10867A2D8E9B0FAFA718E5A943EB5EDC50330418245421B52AA33B3CF9F86ED +BB14A9BAB6A49FE620EF6A17CBB0FEED6204B881F5C4E42B4E3B156A6339DD5C +9C41927DC29C5CB1A52B91FB3ECC457F56949042DAE6AB8A606CA254FE13AB49 +D8F005C84829420D18C7BCC1532ED12212041C55B3E8E880F406254C4E4322B2 +7410EDBADE0C8F83109F99528F5B5DC8BCCA04F0CCEB54EC3A08DB5DDF752403 +66EE0AC51A212754DBCE93BB183056C8FE0008BF33E68F9BCB46477FC1F6D500 +E92372A043978BC7FDFF5128D16F0539158D30F9A5845ADA9F80D7BB8D1DDD81 +276D70F978BB583C58A99395F56B969C8038FEFE941EAA80902E2B2DBA3AA154 +3F24A00DFB05C3494D63EAB87C15C1A44F3B070E96051098AB8AD4324DC08AA2 +5635081D08EE11269EFE6AC8E07B5E8140DC045219689B22D3B8FB5FF08A013B +EBF5810B795F27B1ECEEA0AAF4EE462228AA22D3C90C16785E0F345A0270CD53 +E7237121263B143EFD536D21E01D769077B1EAF77D9F48A1359821E7DFBD1F17 +FD7FF96633EB1DE8AC98F91DF932DDED7BDBA0A529FEA6AE5D4C60B3A2B62954 +760A1D85B56048467FBBAF50EB8FD8FE90C958ED622DD4741C2C8281E8CD4B2A +1E816D5712D175CCE980A0486D974A71CB811E74FBCF33BC82BE0227163F8C9B +AFED7BB25D172313BC57751D115579FA3914989E37680015ACA744663888593B +ED53DBBB7205AA2A514AE928744FC9A89E55F409D09DDF6E232A5DF14A55D1C8 +3D5CCC35F912E4CD38E228DCD9A5B9FAA9386BC58D1ADB4BC3109AD387FB176F +E06D2C54E0F2E5C5B1246801627ACDC2FA5E38C43C1A0FBF9B0E8C25880635EF +C9F56BBDBFBA9853A52647ED165AF16EF4C3051FF7305CCBDB9450FEFBBFEF27 +CE979E4DE4886646669C4A60FB31D933B9911640A8BEEF5409B9AE4A76028201 +42A58F773034EA575806C134D4B3BB450F099ECE77037AF0A01B8533E61CE4ED +B88C254DFEBD7AD2DCC86A82188CE782CEFF5D634601567CBF7D292A3D727C05 +0C43842A7270C4C7FD6E470BB95D213C9E856998863DCB081FC10B2911BE7935 +01531D222AE43890E644A9542DA6218507ED78D448BB25078CBABF8C4F0D045A +0A8364E22431C96F961275A7E33DA067187BFCC83BE1671347BDDA64417C84F8 +4EC767BD94F3F012E67CD5D66055041DF9C1E3F079C09B5BF36355C62305948C +87E6D5AD1B0D48F8FF5BF8CEBDFA50BD6FD7DEB1CA2BBBFB489A5D5A1562035B +BEAAFF481C598F5A1E6EABB33EC4DAD40434282088159F644CC8DF7BAA579582 +8552EE15B03A73AB76650F270C932DC2529DEE90F52A3E7772997F1CBBC57110 +49650C3BF89847547401EDD3BDC03AAA977CC49699FB8BA93CF50276FF5A7296 +5850E7A362F6FA7163958EFAA37D5EAE86C7CEF88CB7D68A0D02D79634A50424 +0E622128AC2856A9EB94859A4B75013A692E059332426C92512E8AC92FE3CA9D +939CADA3A188E7E393FC29E12BA3BA84B9F7481E466BE9E09E242910F4B3A63C +55F6957790D18EE968B467BF7DF1420D74A8D6F6C456D1DE0C1B9A99EC0B7AF6 +A98FA610C2F9A622DB6903CBA1BE3C5A69A100CCD8CBA1EC7F94CA620D5704FC +E129AB0965CEA21B8FE272FE313CB6CE69E6F4FAD275CFA870587865EF3DADE8 +B9E790B4FB7C6FB8582DB79385124F49FAF4BA8116CCC5D81A689A0D8DAAD0D2 +08634FB48450816304B7CFB6FCA553FE29EB50399A5957D151463BE399D5CBAF +4B0D544E74601D8A613FD6C457BC4917D6838562D8535AAC5093E098AED8B8D8 +D9C3E8C3E0551C2928CD9084A0A44B3CC9797A54EFCADDA62FFE9B0421A92E73 +D429069ED0D12B1C3A267E23833B43359ADDCF41D0D543370A6BFD6DB5194CE7 +5E5A4862F0911B8DDD5A81A1F0ED57CC0B442507A1378AF64667D75E3DDCC125 +7ACE18A054F5759E55FA749412F7A84F7CC6F4373CC02EC96851B1DA828F903A +1E8CE2D951739BB8D026A641EE939D4D4AD7054F29702128709641C6E991A9EC +F17456E04EDB0F0E9413B513E1ECFADB45749206A4179260F7A7B9D8A6B9736B +8D743AC3CF741664C6A4794E491E52865C4E98C7ECEC7F32A6A7AFCE2A8E2078 +1E3A8A16C2088787862501EFF8433C4DDBEE092C8F1040AE138A895338770EA4 +F63B4633663995CE61372238B13412F77FFE1CB1CE9661537A84C43D32A51D5E +33F0CED9BBF86A457CA84CDB59906021FE9051D62424C590DC62D75E92E964AA +FEF96D53FAC002F68E91A612DF1DCD4820D537D2990823C01E2F58448630EE5B +300E8DE954BCAF292623E1AB058CA2951AF0C5293814C37CBD273482C3BC2068 +0FDC5FCE4E3B9815B8D3BC63C328A8336CE9F0CA7D0B08F6DD1C2A4BA6881650 +89897077D8C4423D10F8AF41B69C0C09A047C69B41EA2B5F2372252912D3DFED +47EB9F6B05098787D96D82043575D98C9CAA9C7C49D42EBDD432F837DF1018FE +91AFC08D5D82433D2FAA8F6A4B990E89B9F22F1C825EF2714E974749A238CDCF +CA9F576DEBE5516096E31DD043E88E28FFFAB7622312EFE7CB2F5EA46AFBBA15 +B5FB82279C8732CC8806C10DEEF835FE3A350044DFB99F92D4F28A725E6339AC +D2CAF1FB7EE5411C9E68A5AA693B55069B9A84D95FB6604F9EF690F844F6C502 +219637B834DF5A9BD41BF1C99A7B6294F4F8CCE992714723F6C0293CA466BA0C +061E8509A1B8E7C5A9AB11C7278778CEDFC72A14124F2B9C41B26E9EBDDC0473 +DAFE8ABD88CAA0C76DE3C486E0234B1F99101E1C975A8BA0B8389C3DC09E8235 +3F91CE2B983AD037B178118F70DBF2E1716D4D937BD700E7EB3616EAFB50CA05 +1C2FDB688DD37BF06CB320EBB17CABE6C9922016EA18C26F0A5DF57CEB347F37 +154787E7A0848ECE0AA30FF8DA716C4A22EDA60F02B8869DBFB0954243E49E2E +24E206A2FE66F68DBE8367DA9CDD98220C0F82094EB677EF96A3984BDFB1E92A +0B73FD2409928512387FC9AEEF9B5614224F98B83E51B556BBEC72EF70B3490F +78DF04044DC353944656EDFDD3A7ECF49D9964F2610C8B4510355DD458DAC1CE +89B914E7DF7A43D407E0FEF35985FEEB5D4A9ADEB7AF9509CCD8A77E28BE235E +25DA3D226C58A233B549A2054E03102FF6F0D8FEE52BBB8E1F3FBCFD768744B5 +5153451C02C6F15FBF7783451E38A003A9A3D38C134DE8C2FD4AC709DCC9B4B0 +8A43E22ADB1B7390B1B9EF9620DDB62D651709E14D4201384F2228021208B496 +0B9E6CCB97D9293D62238AA4ABBD3F2D4158697DC0006BF19D8EF0CC195E4FFB +D0CE5A8C71A920A3F5CF1FFB748A57DFA748E0CDD0D09EFBF7DAEBF8092F5507 +BF103510AD9187C606F5C9317680A137638099BD3466C24A28D9DF31CA0AF4D3 +E9C3E335E3704AD94EED04CA18CD9013BE7F03D819A2AA8C84FFC6EB886AC750 +4F9ECDEAB4772AF49A3690233D484DA293AAA585C4E6671BAC2A8284747325C7 +6E0550BE3B3A19D259C37A437FBD2461D974DC68D0AD06B4867BE2F780130FEF +5E34404FCE19BA725280467D102CC9E71C5553A14C59526222E5C0BACD2283AE +75FEC3B7581BC955B8AEC226724D1B574A198E18F0C2CD3FFAC04F9B443AF786 +12252B9039F5FB23526E58454DDFCF56B4E00B45361A68C4191BBCF7304EBCF2 +9B163A252224D3042B7CC8E678997A39427A74D7A5FD4B315E4118D72F61BBDC +6B25216F2FE574FC99A660B676650D663A410B3EF78B723B3DE776A912E6CAA4 +B056CA62751D68625A277C68B46026654E2172ADDD15DF4EE53E2BBDF04A8E16 +675E31F93E917A1D9163559FCDC9C6B2C971B5E71F57DE2E941DFE3A63BF4F37 +4AA2B33CB9E6053D3A2EFD84D0F4A2A5CBD48EFF2EA4BD68A67B7781283D2AF2 +AC0CFCEC31CB4CE13C2625E8EF1C2C7870AE6D7B74FE5CE174118E505BE64E07 +17E7B0663E9449B4CD288D698DA4E605AB55D9802B609A3F376AD9409E97765B +A936FFC51080EE81B9AD52BCD0D3A69AB0F695B64BF065778650252B780CD5E1 +67C988773F5A2CAC039EED99160E3E7295D4F3C492766B4DC1599AF98436A0B7 +BB0455615AE1DA81431FBE7F650228C5A190DB46418BA9E5E37BCD6B40F38FC8 +562EEF9C6C618CA886561642319ADF6A0D1E7496FBD02E427CAC70827D750C09 +528DDF1BC4E60B66EC91C4B9327CBFF158869960793CAB83221C3C698512700B +84C8FB7257630404D989FD1236FF073C1CE501B8CCF101C98F6FCC9A4B559380 +321E6053A3C983853F5B50FD2A7D59364C79AC33D2FC5D972E122FDED2112F66 +E7CAD5DFBE37193F2BA023C2E04997791047869A88F0E9AF05FCF286FE190339 +82EBEA90B8C3F7F2804EA60A7E4997377A493370A16E12800C6827F7D5AC4C96 +6A89DAA84D6638A415E49E919F3B11446761231B3A48869E4551427219E0E2F7 +CEDD4D5A030887932D7275697206D7CEC99E5EC4BF253613BE7CF74B8689754F +0DF1E171BF1EA09C2A21AA9EB54C0F31EA7BF81B7A03F38EBD8995A59F3EFECD +EB0D9F00DAE4E8FECCFA6183E7A9A4340D67B1EE8DB5C6A13C6E697602ECC9F1 +611A0D4AA2A268EC7D89745FA57067136FCBA04D1A0BDA7FBC4E223BF905F73E +5669FABED5C979A6638C0A769953F81EED03E02542CD6C109DB683D4775A0642 +5968E65D9AE12C53BB3DB165E6F90E828245404DA66567768FD3A3398EBC68FC +7BCFDBAF6C8CED3E1145BF102DFD39043D20E63447C671D7605F9D20596A39DD +71C6829FF46F59BB1384DC2E6373BF4ADA2D3CB1E7929136AD46C835CE2E3CEB +DB80B8F938F2C8F6324A248801FA6BFC0671803173922F118C668B2A50B39F36 +78DF0AEBD544059FDFB4D8D3840792065DEF10B4AC68A1029BD6D77F4282845D +720CD9A824A4845B3E2522B01B280870B95BAE5B606D0C9DFE7E94713AC59603 +C2E0ED549E974FF0163985D4FEA874147E1B345A8123929D3D0AE0E79FADEC97 +AA35B0769DBBCF1A09226657CB0B003B765F40D1A093ACFD1553570E1D82266A +AB793D0C125B8F75C4152574D497FA2052B455033975C5EAFB95B6326F85CF5C +C88A73AD65481CE38557F649310441902C88376A876EDE63682A24C3F155E34E +56037638DFA48489FDB971BDBC024D2B35FE3B3FF295A8DB383D154BB5E75D73 +4B972A641B00DEDE85C3299C13270CB85D676B3D5E37F6B17ACE851965E55433 +ECCCCFE812554DBC8F6BAD0458E2756AE96BA4AC804D860DB6F53854C664F257 +49580B9F4D3164C1080F0DCBB5532A4F584E73ADF7C24A518AA4D56F0EF23434 +5EA18A02D4350BFD2A83B0EBC380A8F5B79B9C0735FD64EC87BB132235F29882 +185A6CA1703F6AED043BF9C355A5D2857A40CB97B66680AE73363ADB4A40DE13 +7306109DA8B55B5C61E6BBC60B0C1C014962AEC019B8B8539A3A4A0254EAF189 +EC9F6B50DD11C600E830E1A293658B0EC289B0E6EABAF51D01EB9062A003B7DB +BCF6367E72ADB62A2E9974E374343EF494ACFDE216F1ACCD776CCC521C07A328 +5A231D63BC7C057B86BF9CE95E9FBCBC1B7001A618CBE64FE3908AB3F675F9D7 +AE022A5BCB5B34DB386A900C1CFD1FCE7A1E02AD30BD6B0F985A3EDD1B17A8E6 +AE5952C10CA8A814A54C6F6232AFF7EEA4D9DFFF711D947F7BBFCA5A29D22370 +0B79EE3E2746F1B4A2A76076D91C7A71C06148C5A83C4F666482749AD44DC2C8 +853BB3E2BAEC51E34CD11B385F0F95247E153C354CF06E7538C339CAF82E095A +BE6DD364A1D0A33733D907F2D9292200FEB9BE3BCDABFC4E7A900F2881956228 +FB6B9095B97314FBD5C71B4F6D9840A29722869645AA1E939DFE3F047AEB2663 +C41EFDE544D0E8F5DD1D4E5FE038F79E02DF55CD72E4F3399F07B6C87F33670A +033955CB3B67E1F49CCECF81719A71F8BF7919570536F0162BA99A7AB77A6886 +134C9DD7B6F1016E3BD08C10F4DC9F85C20D677ABC87A1B6F398E8414211B971 +C8ED36709B2BDC52239E2DF0413547027AD40D77D8510B01B9425E998C840313 +AC97F488D31825D18ABE4059C38261BB77AFE0062E8A78370B7414048A901AFE +19165F8BC74F0178B1EF3C9A955FBA556DEFD53B346691FEC2F9C91DA0CA56E6 +EE19FD0C6CBF0FA147821F4FEF44188B78CB7F97E4D8A83E88FC47A86E49036E +E187987ADAE9E0DC7E92207F70C5AABD728E0A4FA065C0B2CE393432A326191A +8CEDCFB195416FBEEA99D37FB09962DC2BA9A377C4E10B6C92AD04ADD7073BF7 +9AE5149B40DBC4406550C1E65CC7BCF633BC9D6A232D08382EF8F0841AB983F8 +6C74D2BD01B9C20C8DE516D18010577DF4B05017C8CBBE32B386AB3787C9DAC1 +30ECC1E9694F31D0541599DD68E0DAE6449520AFFF4D9613309C5A43E0A3FBA8 +A96E783E0031F0A13AA103A30D1414B33B391CA3D7008CF5893C3CFD765A69F3 +2289DF6A643B0AE1CBECBA7BCE44379C031C3F36304D0898D16423AF9DAC7EF3 +49CC39D3997CDBECD9008017A8EE5071BBBD6D42C75C281B3FD78E6E9B6E9945 +015E9DEEB9EB254FDCC2D193328DCF27825090DBED77EE17786DBD30F4472841 +583BF1C35687CF41E6A62F6F8CC5420AABE8DD46149F67857321A4E16BD7E375 +132CCADA4ED62A64720208B056982C0FA2742304B9011F974E42BCB15E06202E +EE0303EBF47707ECA0EA73E1EBBC5471381422A747C5190A77B1AC66D2B24E6C +C0F65D89FC7AFFA08F9CBBE5E41172F37EE4A3CF248DC57523F5726CF2A49D42 +68D435FF17DCD7B8F9EA2293C4E2551F1E1F2988237921F661DB59E97409B25D +E986D0BB7F49C4C74356CA372D65192F0C199D5847A63F960D6555FFA7332333 +C9056CEC9A9C936E0637DAB72C38F0A5CC6D1E11BC534AC4D65021E8B59DA83A +763EE0F5092D538742A5738EA533E727B8F63BA7AD480766254C6F1FB0B2D497 +1F24421D1582EA20947AC9314D59DA9E7244251C0A6701288584C558D1C3C12D +2DD38EE6FACB1880D07BD3968FC36867A627BC42ECC98E953BFCC85053C298A7 +1A88053B258BBE0B7EE204C0619E7A36890F3CFDBCDF21353F370B358394452A +0B15A517032EBFBA68F44292B23FFE3099F76DECADA8BD9CE057CC271657BDD0 +14961AED9382E121A3DD099DA1BF5D60C31F2A10C459AD9ED10F588799D49C30 +656A9E874A2179E9EB0381D66D058BE17FEA75B4899BA16EFBF32838A0B1C032 +2CCB72624B4B5648961F74F742D0B481EC493BB4DB06B438BE88C899F55F958B +977D156390F4BD7E3A4278FFC5BA87A627F32BBBB40876556673A5CCAE878423 +98FEE159A7BD1E7532E69F639189364EA5A322D80EDA1C26E65005CA994B7954 +747201F0E2362CCDF6CA73D4F82D7D8BED6AAE57901741578486BBD1D94DA0EA +D1D8A9FDF740E1853D4FF063EB6F93B622807181242CF041FBF55B8627FD895B +330DF795D51ED4CB9221317C8D9A3BDB56C999937CFC6886F40EB540CD50D757 +323731577C3B70F5CC88725F37CD5FAEEDAF5E66C20A44576F0ADE432ABC8F6B +366DA3529556776BAD320F339D9456E29A5E348E7AB9C68F4488B98BEC882C32 +556466DB8C5CE7C4B22CEFE8029ACFC032BA9B0E82094EB677EF96A3984BDFB1 +E92A0B711FEB1FF44A49C4B613A386B6D57C09F26DF10B453DEA34070BF2E2EA +B9CE383B7C599C445525EFB3747F59BEC2D8B44F8F931039928D4095F5DEC33B +B94E671FEDEEAED43E94FF3F58C546330555E9C78C7DCAB3F77CE8D16B790B08 +CDC6B04C83FB8EF288D06A486D99F7B8634FBB8E4A071D85D21F343751869735 +3E460832328FC3356C5A1D64A69F41FBB33246F3072B4A8AC5DE573D507770BB +F18273450591B3BD5E0678897FC591ABBB060CDAB120B90D404B2E4338930E23 +B3165A365F62CCE601BA31D8A0E1DB0F9C8EF6E44D728A2D68663886FC65ECA3 +E36ADD8DE730602251AAAAA032CA6A6C6F8F317042278DC06C985E70EA3CDE61 +3C9A7A6E13366827BF92AB5793EA5D0357949E07487D0AF8EE47D96357B9EF7A +40EA032F223D0D145CBB085A46C1EB6ADA9F3D3B8DC891FBA0BFB73296E71AA1 +69447091D9D01E9E9D497014E3273D78624D8458C84ACBB969DCD6BDFA03562E +8583CA346518C73305B86FAD5241827219E998891390E6D2ECFDB22890ECA0C4 +C8F5B007D40C2313118CD937F55B5F9C18B7D7351C3B8B7CA02251778854D966 +EA1FE463B9B7AF56296934D03D05BF11A39D28E56B23796A0C71EDBC4D81E154 +C985EF566EE0124495C2ED3225AFDAFE8E548581C8A83B6DFF2F3E617C4E9E9B +C24A6FEC7EF998C16E7486A30B1535E3FAAACD73F39FB718B4171F032F842199 +87AA755DAFC5EA3D178A1AE9862EC54DC6C94FF1BD4155983624B4B409577086 +25D0FEC549586518398B98EF87CB2D07E5999E8DBB968FDDE57370C4BADF896E +D8F2F4A85CD073028B8A00B7FBB65F3C273ED7CFA73F133946C32F69E5998086 +2A3DFA5F439C6173DAB4EE7D271919B177610905562E926658E02D15B4BD483B +C4D236426540D5A2602E67FF5062A8A3828F63BB54AEF57E8A5CAAD07BE26AE5 +7A5419E1DBCD5A2FDB5D2EBFB4747EC59946B08EE491385112D36848960AF1A1 +CB405BFCDACD080CA9C04B43955A9631768E378D645FFB5768D9D4835F7F3775 +FFC7314EF032F1EBBCC096D61BD7D1ABD5E2C3708B3ACE52890AF71E5706DDC1 +6B23260C72DD73D02E6D15E08308220151C8D2735950F117AA4592EE24C0373A +7CAC1CBF7A3A441EA6604FF4C5A6E2DA33E79976945E3ED893E679B384D8E13F +E274EFE7CA5550B9C31FE2F900D2F3E06D60881693C6ACCEA7CF3805650248E0 +5684E9A79FE1FDE0BF857151C7BF6E20F3CD95441C0322F16EC6E27512B968AC +D62F9C5DE49C03FB70AE221031A83B03E2674204F89D0C92DE64EA131CBF5B4C +EB8CFC307FE6B9688648C371C109DD6EA33C8B13AD8A159DAF45EC32E6ADC3B0 +EC3450E776ED4BEAC4C723068E293AFD9673D0416BBD21B80AF0DF3BEEA382DA +BD0508105697FFD2B67A551426924D3690C4780279E4D724EB4BEBD86676AF12 +3F22C2A3870EBDA97CEC103F4D58409B6CDFFCEC079ED6349CDB83A8F7B17599 +C1270FB82492DC9FF93B5B17B5785482A577F821C2B9473D54D8A3C0224BE453 +7DA0FA7F35813CFF1318844E24651A5E8B0C46E6F3960373E17CDEEAE4A7F095 +9FFA480FF4A19AEDCB26DFACE554BA0AE1F33EC8821B528419C998160FB9F151 +8B63CCA4D5C10FF2C7C1DF28AE3C51A23D10CF9C166F966893371C1678BCA02D +C95684BEC046257CAC1CBD86B2CDD20616687C40E334CF9BA5D7AE20298FF059 +14D50EA08D178224D77F85F413F5C9B71DE7C3706E01433C934CDBCC43B5EFF1 +53DFB465BF17BECDD416F7AD7339A3984CD39DE18B8855249203329FB9B40FB7 +67C1D2969041B113A6E6866A64E553D633764837A7848FD9D1BFD2BAFE8EA3EF +4CBCBAAD12D3D4AE429CD837A1E5BF9897E5EA683EBC9D788A40CDDA9E89265F +D8D01D1394911C757A2194BAB6166EEAFEA964B4AA1128DAC0875DAB15FD7ECA +65303AB426995AB3330D7C06EEA95AE223089253F14C0E74C4E43784090D8B30 +AA0B6E310854CFE1AD64FBFB95A7D0356097926C483E82D296364EBA6E32ADDA +4BB24DA98DB4A692642B347874C28E71E061D368BA08C9F096AFE789E6D5957E +F9D7DEBAA5BE0EDD15F26035C8429DBE1FFF5E5EB2F5A7048BE25A704FF848BC +F65FCD5C74929D4747369E0379925FDE1A15F2B4B32A41389937E5B2316E8935 +F09CC9E272CF39620B9907E39B68AF66632004E86B1797A6D13B6DEA4E100EA1 +1BDDBC5C4C0BB1401E4CCCB8F2BECEC0A2990E93A0FC4E93B501B12AF7CADABD +B3E4B1BE353B5D223DCDB6813847205847E954B6A98965DE0C83DE575DAA8818 +3FD9E2B52F46F7B40AA571997802CB88A0B966B6BEAEA21E7180609CE5EA5021 +B67B0F3DD5A7B7218139EA4493649A1AA943D844B4F85EA040EB630F7C570B3B +942C38F287AF766898522257EC3FDD18F24CD6532E87B80603A33EAE8938EDEE +4C875D9B062CD1F1E94C2E941F82FB8244F0B00A35324AFA8E7B0365B2A29C00 +1000F4982648F44C24F7644667479361CFB07A6E9D4EBC8F2FC9BABDFA325B1A +43D1A7FAF2036FCDC2AEEE1911EA66F10079334773199F3909A18051A0C0C4BC +9EC64F8BFE14BB2301FF297B398A16DDF51214228AB6A546BF9DC64B16D6EE1A +060A2EF5BEFBD6314D80AAAEEE584117FC87F3D53D767C40173CB9135365ACD7 +E6E3A415916E151EE943E311C07608CA2A245C39D76C8CBA29F49B110DCA1C1E +B6A81029F011D31E66132420A36F92A6D278952CEC5231FB4FDB120D3E44478E +6AC167002FBE286678CEB7CC260BF3C36DC32D2E5A6DE68CBD67B4F053D485ED +6B2FCB2343AD613C0AC4FBB4DA37992C12F98C614BF0BCF9866E9E8A745F77D7 +D7D783B2E4B8E94D2D8BE4B8B365EC922847C710337618F93EE02DA647E28F34 +C9BF4A27D6A7843FC926E4E499E13DFF0083687C7AC67D21BAB7AD3B0F967919 +D735A50BA9D0843C1AA99370C24B1240F8BA4CAE1FA73B1FA419AC2F519FA7AB +F445D8D5E5F3015FC8E2F4A93B2BB05DC2DFE9C91EB83A25203D790E32BA259F +C90ED835E2C201587140C477606B412ABEC735C68409FE2E45F28F9675A90888 +2A7F1AC9EE017AEC9C2CE2DE328F59C50C5F7E311CC424D07A24B8FCDF5B10C7 +D3E55F65BF2AEB55B8E89C2967D340D076574DE45CCD51AD2DD2B1D627D9F3D0 +991E8D41B17F7A1D1FA66C71DCBCF6E92E0A1938C5E0D0672F024FE1616B224D +EC0F5FE450B55F5AB7CA5F6F1FDB01E5FE652738F588D612DEBF78D924E63B94 +C6D0B1E88CBD5697207FAE5119E030AC157149FE231EBEA1C9B8FB083472E44A +3E5C8E404E477A99D9350DA919E03C70B37BE634011C09ACAD73E82B508A726D +1616AD49BA595950486C3ABAD61C11E9DA524B6D28862D80A38D1146E96C9744 +12F0E38F85312C1F9DF88FC0FC7ABAAB13A613799D0FFA34F4470C567EE520C9 +6C0E1315676A900ED0A44CFF07C89BB0BC85A60667B6F927062C125BA0E47876 +8BA86963ECD6A21D478BF53F44409CFD7519C05FD39067363458094A2C3B9B78 +B7548EB4F8FDE5806CF040484A76F69068FBDAA18888C8F8A2ABA8C53B317707 +B5FED2141242589D010A7D1960649E62784520A4601E0BCC65DE0EDDE1E087F0 +71105B611CDD52912F3D174810374125499ABB5B300421612964B30D8B63F652 +5A1C6B2BE978ED8A7081BB58498A3DFA36F070EF947A07A18A48074357B4DD46 +4212FEE057266F1C858F6E6E37B1F09F462F21D3C0579D3F825BA3AB32CE9C7E +D4E5152B75D38846B1FCBADB2BBAEF975A46E4EDCDDC0B32CBE80082E92C35EE +39157E2FC80560121680BB2B6CB7477B87FACABEE29A2CC0256AACD0BE384526 +6E23D69E3234E72BA8FD823AA63212DFF11182E78B1FD07024C744D404F6F0CC +D926876A97AD3A54E4783EAF74868A9A7697F3A954AD95640589047164FE3E4B +D8AAA162EB802052243B5F765ECAD823E5D7D9CDD4EC5A431C4705DCD4D48B4D +8E56C7FF6F9AD39C9FC9843F0F04070C1F54FAB8275645120A7F29356450180D +9BA23E6E31978CEB2E24EC8C09324AE1462B55AE6781011A7F8DD8C00B95EE84 +DA9FD024FC5C21DCC84EB946AB428F05B43DFC6D8B529545549C89D8733DC9EF +DECB23E4F8FE82FB0CF235DD2DC448E66129A200004A1F0993760AB8829412E3 +B9791B0962DB76DF56229F45A1CA039A6FBB2C3D96FF5E90258AC6722D4C9812 +74A212905B3A0885A610A2A4CEF201947FA513293C50633F393060892D561FEF +EB128E9E92D4586E1C3ED46CEB34782460534B071057F29E58C10F14C5CD9EB6 +B3815154FF8FEC5DEFB3A50C3C91643A8C3F6BB81B78ABE2E0491F09EF9D67C1 +F0040D17DB6961C0F2A1DD706C8997773BC80B8A21752AE4D5E2480661F22113 +6A705DE23C3772F9C64D4F7E587BAE3AB9E6E8EE3FE354A6A79B6196E3504988 +5C5B63AF6A918C92559088451E0260FEF5AA012D10C326B7B55D3A5F87999BEC +ED0F39951AEEAB9F744AC4961963B468EA89336DD0C3AD82DA3A68C895E2EDF7 +D8FFC0B06964197F2E6FF03260A61CF93DD0D7DEAD4D6C921EACC93617117D54 +E39521E10288C49B5B54AC89A060775A90F5B87853A391046FE313A142295A8C +7F0556BD268608FB9D5F488A9621814FF1D8104389E300E2247E4AAD5881E18C +2DBEE77FD88969A3F3DBB7B74840B8AFFC859A89D49A6986A70B5F42B06FEDB2 +3CA26559B71ED83A216241DDBB741FA5BE041156DE55F5FF4898D9706EB378BA +6582F021A9AFA21F9CCF16751CBDF285A31928B0BD2058D93648ED07D54A9B79 +D62E427CAC70827D750C09528DDF1BC0A73F62259F4C7C402E2EA3A50A352029 +5C34B679BAD6442D15997DDD5B686826B5EE4C955F107F77AFCE07E53EFA8954 +C3ADE3E33C309C7661873820E61EEEDA3DFF2E985ABFFAD125CFCE43F79E9303 +31BB6CA7861EBAC19268182C2BAA4BB06A252FCF5F1BF5A3827D87972D6AAEC1 +D6DE8DA7C0F7C047A31F9C9682AEB730FCE36C832EBA5B2BC3212AF9B9392927 +9F29FAF0563A26851AC413E68242BE9D690718B45F1D7F03B11397D90454E95E +FAEA4FCF8F1E35448577FAD6529D95BAE40430D74895721DCBDF10EB17CE03C6 +DFE72D774921E958F4A9594598D049984979F0389CD83F5E642BD80270A9DBC9 +67A1B0EF8889C24A68201F5886E386D97C1F7276515015D5380EC67D7C3AF711 +B87937E67F6CE71E36F89EC4F0EF5A35DFCAF4C9E6DED5825EC6E3E12DF15E9C +C37C6E1593BA974EF6964398684A193D5360D194228901373339B2EA41F6B213 +46AF2FEB4223A21FDB317BFF3BBCF91B8031B5BA4B68463283DBDF889ADF32AF +DE2858E791FBEF9BF92CB78F0ABABD36F6AA937D6625C5F00A6886639B945284 +629519660191C51691A88CC726786CF6414C0E4FA3C5F0785A7FB0CAB8609B97 +E6A333F1161168565E045EBA39267F83EC08A49A16C0C9F6154C4D4836E5A506 +0488E8D22F4C691F9E8A3361A6F08703BDB20B982CEEA0A86C9C89D9BD6505AB +4B5DA0E61A894B694EE2281BDBBFBF9F4817EA0C8CF2D3D03CC74064EF022DCD +988A4A921CAA9770217AB71345AC51FC5C8C6AF66DED2E3439D5A5D07F9F7B71 +ADDE0C0E4CE01B4F956235D869924573D54CF9044A0189A816292FECDB963E3E +020F323AE5DC44A62197A92C4E3E26FE504620FA46BFCEC15F12A4F8C9975F66 +60D9AB5E2D45B88FDDF6BB59E7C5896A1190E7A6800417BCCB911EC038377DF0 +558A20487BEA2FF4DD8F206F730F24F1FC4FF99C29C798D5E221CB1244B88C6D +2863F88AD36C39363F823620F1E2FAC66951F8E658E88C81FCB36DB5F614B122 +3159B5D1DD88DE5EEF0941D583CE600BB84E9CCD4DCA3BB78B7DC14E995DB503 +62E94003181FAEC1822A630996DF1FEC62DA4B0D5A8504893E84DA5A4DE35F9F +1535600038A4CF90BA7A50FB5E53F242466DCB71A60908A2211AE0E9313F4B66 +F13E00810127740D0B133AB269223DAD3149930C4770B49CFC207608F4F1B2E0 +162FBBBA718E3B22AFF685B67FCB78FFAD6ED0FA5D424834BA1C6DE4AED25C30 +096F41703DA9C3E7F14AA6E05171D2E2380125D05C9A2F173D4A52477F69602E +E49524B86A2A9B01344C26078ADFC00B714D9697419ECBA80AC683C76A925351 +1A6A454B745938BEF5841580D71AC33D99815331E8858BFE5C945F1936D476FF +B4D89B459D07E116C341F39E85C50159F2793FEFDEE37F337A7BA0DFB15F4082 +BB6BFD5F16D7BE33FBE5BC919C96FA0BF68078536F7731EA930145DA9BFC4FA9 +6C1FB3FB6718869C8D9B02969B70FC63EEDAF47269B920CC36EFB4E69ECA91F6 +6E5E73647A7F27C5369C0F41988BC0660883896CD5C39E0528FF4A170C35D1CB +9DD8654777C3DB226067A3C30E09F0F148A7E34D0C7506F56E81173924E6DC3D +1D819572E51ABD054D776EAF960D7B1795F136AA72E0143445B5B66DF4C585AA +469204CB38056502FAFCFF64BB13DAE2F709993A8FA2016C5FF0578713AC50C6 +6C37EE0B929E988FE6A8F9B9C27FE98463D66AA743F9DE3A3F3BC29FEE0A4E32 +FF885099AC2362EBD7DDF0A2E208DE8955A91BC055FF8FA189B4A13149C62DDA +A7032C4888B8F410180257C44D6369FBBA1C2D32533235ACAFA943689CAB5225 +D8B82A8568D371057D51A6387E248457781F5EE01500F6D3B411BA64F2371EB1 +62B5F3E69CD36B71FFDD14780C23260C3767B543BFCC11DA7BD4F6F6CFE3428C +295586F4932783C2D3D4EA34D08C4F16FD3723C6DBDD597640F8D79BA4667982 +D2224354EF7FE3F3841246E108FA74E1A5E41D2B9FF03C4DEC14751679F969EB +B7BE3D9AF57B7CC30B6CE0F06ED8007C6DBB2E928A387C4D23A7A4F544A70F3E +19C8F34D9B55305ECFB83AE2AF62F81A0C7D5AF716A0656248B17D898289FE5F +B106E1699CEA86BCD356944BBF51C1E625C447E5479E46B5A06F17811C17274A +34E050515600C9F06F4B53A989AA0B5C558BDF6C8E7CC7C519814731A8CF0096 +1835048F39949A57D512E493A476511ED2E7B70B8FE368CAEDF3773BB8D1E80F +147DF871D63A7AA33FD869924573D54CF4197569C06F7AD2B6262CFF295A300B +D63A17E5DC4620921199D222F957C38602526A87221D5C655518EBC083CF9C3A +902AFF8F42422C78EDF829392A430C15DD45C0F5014FA70C350A65C562DCC779 +7CBD872B6EA66349F3AEB7008FFA40B336DE42BB4029FFBC88A24F0939877218 +D3FA95C618E70D2D9671B645D6C0B4A9A1DE9CD3808E96868298A3C7BAA2F5DC +1BF73EFA806D649D1931C953D48A52116D292B7DF2891910C66AF37785AEC21A +1E5E7DF63EE137C11A24DED4B67CFEDAEB68F90CA02A746CF3C55327ECCF5ECF +9F21242F878AE5F9C12A12D9D63884D999112DA02850760D188271AE52F5F0DF +3BEEA62FE3A524C628A1DD43CB8439D3B977C478938597324452A73C6E0A989B +F301194F49D811455A16872E3BADAF80314B0A23855DF54B66BD64A976357047 +8BC1478730060C93832789778DA4C3DE600A44DC7B442DAFDD72BC556B03B6FD +F824F9FD63B394E78542AE65A90A19D8B3E6627B82238E876E0D03EC5F43B4DF +7238B1745949E2884306CDF9FC3A7279A4313424BB83B85D16A287D3D937E1A9 +5053BD57F47C4B5F437C6B7EA37FC25DAF99784261EF26176DD9DAC0304D7523 +30E7F138E98C17E5757008CA513F9CAD6180433243428F17E71FF213A445A760 +21D7F914209AE128DE9633BEB62F8D1681DE9E39567BD0521E87F008F106A73B +B7BCB7FE3E006ECB282A3C1D11106954C59C45019557A4A5B85146FE1A1B1156 +2682ABBC1963F6B79AC8744425E47A8A7965CD3A9D7FA9A4C21B389F46A6872B +F385D0781B65F973BDBB333D136B9DD9F3C513C5ADCC2800C42115455DC6607D +EB640696AECAA8F7501F83CA46EE9C7027CB08E168652A118EDBEE23A55FBF61 +0CF5D71F2F9DA4C2E8C04C36B5BB343C3BA4B062B43EFEEF766A80F524729C46 +C85123FDD64570A38787A93FC15129389161E740B91F7B7B271BE0A8FE7F85E6 +1AEB6C096640EE42C4153336D5EAEEBCAD438A22F57B54F2EC05A791232B415A +550305F97BFFD638364012FF1B4BDD0BF417E77361CEDA021CF1ACF4A1D16251 +3FF8490D834DA175A0BA4B46BFFDAD19882067922C25E906446A90B0389F2A84 +B753AE640B989E0752A84B81FEFD0FB0D6499B50000BD4D17370D21F993C375B +C0FFD7B362335C8687B0522040A4F54087A0A87B8EF2C63AE7D56CEAD87FE1A5 +25F9C9FBDC40096053C13D34B4A0D7316AB84801670A050336E203EA6D6A3CDD +656571302A42565A2DB4D258FC26FAB5DC5513B21BBB96590EDFFCFC13A1628B +63E54301304177D48E8505D63D92E4238E710A2F1230271446381FE8C55D4D2E +9046B3D89CB0E2FA148D62DF24597B0E0ACDF45490533A309F7C13D8E7A3320E +DAD8CD3CB4250CF96653E874E1787E50F3CF3F625B87326697706CA03D2EFCA2 +BB9E185D1DDF9A5C08BA2919FE504E9445E0AAE6AE747AD18F9D1FE5773AE5AF +9A16506583F1390445F37ABD4841F520D28088EA130E7DD65846290ACBA998B8 +1E7B1195F534EE43FBFB8DD3A50D8B7A53EA0F04DDAF9F0C5AB452A3132BDBE4 +937353FBE11265ED64915837A3B800C172463F338B3478C650497F9AC90EE5A0 +BEFFE3ADA580F01C12947B258B8929F4CFB5CF6CD9E1FEC91B4C563DFD8B6AF9 +811047DEB8A873C17480250EDB8DF36C66CE46D16111E81EBD73C2DE8195C281 +EB878F81E478922495CA761669EA11D9D64E324AED065383ADA80AC383D00444 +18A3C042B0EF62DD652452695948F66C0E05465F5990D72A65F33BA8744B91F9 +1DFB578D42FF4F50126E0AC887405C474FF1F2D3E5C4E497F0E16AF779DB5E9F +7E7772674823178BE5C7618D2411E57A52E3F4D12E8E95F0F8EBDBFF3E7261CF +36017B1197779E7BD2B7DE0A2CA7C579EA6EFE3E2D31E04FCBB58A8916C2BFA9 +548D54E7B6043D21BD1A37395717089FB28B7C58DFF951BA6D3AFF1597A4CFBD +CCFF1BED30B9A5D21C11081F76E9F486A8A7A13CCCA4C65F82F7C39A9454FBC1 +15A0EFD1E1B5FB37A31F3382D3AF5E213CD5759EAEAC2AD1CADC4BDAE7DD3DD0 +F2FC67F53E41FBE1AC782560B1951FF1F25EFE4A5A442CC81037A263C4897CF9 +E56BE0FE75A0CE5CD5CD05544030F4155CD41C3E0679345E7D5254E154C7FF34 +EFAC572DF13EBC755B1116C3118EF6BE5C3BE1C67CDA939BA4A4E00DDC30853D +E999459166C4829BE47582BD25399080F975C9B0553BED559EC533265AA83ABA +DB6719AE00AF92E82A77AE7874BE7D6199ED8EBA3C780831B62200C8EE611FF6 +1A419017F0F36465A53F5B8CAA9F3EF6B4D9A9E9C1942A8EC97546EBDD463A19 +A922F03B3B0CBB96D331A3D319F5A2C3548E50390A3E30210D2674A5E1664AEB +24C96DA36CB84D7E9FDBB5A99C380C11B0D3D8C04FD34B03C03E57507D65FD58 +E0F746526F29DE2B4EB1AE2D1DB7CAE8D5B263A7B25749CECA80FF41B8EFDD95 +8B95EDE2BED305A92A9B92C239C0E811B034E421AD66D3AD87129F3D0457F24F +D1AD42E49FA1D60F018122E4B691A2193AE0775C0754B156921AABFE5A5C2545 +34B8A71CBA2CAA4909C756EC73C6C29E5F05042CE27B540CB0DE9F99A91E88D4 +24F75C38D74248E9626A4680A3E0111AD76E867615E87E9C5B568B58D6237E52 +C3F5DCE6C46C28D00EE5FE90ACD882A413502167AF647BF313ECBF29611E1EB4 +D3FCB27F8413E1BEF69A0D6AB5DF1D3602A127C3BBF6CE62A10A3A6072427971 +1FCA1514B3EE8D776A6FFB006FEFF483251256BF2EC454EF43459D36EE002115 +441BB40517E28C85B86FB450144ECDC2F1825919E58323105D6A76477F73E8C2 +C74384E251DB2217A856F22CFAD0EE09D36BD9663FC1160306B0DBE8AD932546 +C695625F2A963D55A3CA0D69559B3CBDCB64C4043946EC5A65DD49A6586B4354 +A5AE0388D9D43F72B4196B5B885308D457545C2881095037150965B3993511F1 +B92774624DA5DFE2041A771D1B98B28DBB1CFD21D5A12C9D365D59B0E8D4181A +83F4F247CFA26E99B621C468308590E1006BB1FD1F6547637A1BF10E212971C5 +323F961649FD3FF72C48AAE4250DD63B953449898476D604F392A942AD83DCB5 +FC7BD4937E1BE2BFEE831B6B240F0D1B88461C66039DBE28E5B501E83FC820C6 +AC44922482052F65988B70B76DF3E9419D085953AA427F2F9856FBE9AAE85B0F +DAAAC06288ECF5D7AFA72ECFEB8047907EE51193C88774ECB0039E601DF93CFF +3D70DF2278B54E36E6A5E539FFEE7A41CE503CAC9200B46BC69A886B9796299F +7BBC7ECEFF3A1FA73F96FFEA2E57F9C8C21FCB1072F0EFBF530820AD6620C38F +2640A68E4799E0F0D6BA060D3E3FF5FA9AA9281936DF74F3CDC886E735082D39 +01965E5B56B380917507D974B1EBD3125C1F86A3D4B669BC65CE4CCBBDEF0CAC +869DDEFDE714796C6BA457ED0DD5BB76C8C72E04651F22228A26B03271DFA55F +3B6A826786B594B6C033ADC43EBAD1AAA7CDAF8BFD5B5B8FEC5847D3E6BA9BF9 +551D3AEDEC14E81AE0336BC012FD28735C64896CD6B7197C248A93AB9974D376 +EDB1A7B5C4B9371E220EAE7B9FA2A1C49BE9A28E1EFCD97D8EF6826593E0E862 +5B0EB435A79CF0C5819A8AE5C1111BB98B0A34498888AEC87AF39D0D4EF02C7B +3F4693D47069277040BCD7079030EC40E6B64CF1B0ECE8A7AA577DBB49F1DC54 +CC0994D3927F2D0A9CF76B116F0172A6C0991A5CDC8C3665448FA4C886317977 +A2832A86A99F4D5120044F3694C0C2BBE7FB11A6EFB0DCABC705DFC455FD33FB +4E6F7A92752FB55CDFEE524A909FD9BDAE805F5BB09796D831E3310EFE9B53A1 +1CE2915436137CB6E96A4BCD48AD7144B83EC1EFBE1E663ECD5FE4950A80959A +DF41FE9EE621CAF1B632F149542C3AA9B456C3358544C9A6708B3954137DA6DB +D92EB8B45BC3807C4BD63C4973B66A51188E44A67DDC680691A07022D477EB6F +5BB294023285A9E1C2E665FDE8E735D6CF4D8B5608431B0E995909564FF34157 +5C11BDE810A42C0A8F0DF323457DB3A2DC2F8E6480D4D34F32B0E619B4F0D7B9 +B45AE749E00499E387E8438D258D13F2D46A47EE4CDBD095F44F95DE4AD97CE9 +B52FE0E8F3C150DAF6B9DD30136A27F2FA85AF22CBE939E0F7C66B8E87889135 +BA6F07C7AD70D6C36082D7B02BDC85FCE3E5E6CE761CA3F873B61D70DB270091 +9E5BE239C5BCC78E5249A0B7C731FBE2BF39F45158FEBE4C96CE956DE5E5AE6E +4E58A3219489D5C013FD349F4455B72B4BB60963981BC9F134D3A9ABCCA06DF4 +46406D3BBA2B749BC90420FF4B887910F2A82B970E7B6D6C49896D7407CDFC01 +85C94F7D65D21AD17983B7ADA60888B21CB968EC433CB0CC2D7E927764CAC582 +C8F55DC5C8E8A59792A41FCDB0429A0F9DCE08567B8438225EE6BE8BEF77E829 +EB5FF0B7DD2E2E0BA83FBE69DABD78E652C2F30FF492AD4A8D20B3AF1F926F91 +B7B84E228308662193EDC74A5C5EB3D953FEF3F84D70A81316AD49BA59595048 +6C3ABAD61C11EA8FB2F471A38606AF973F1F7F8F93BB3B8E0D75AD6B19805ACD +BDFCB4E87AB110217AC9822CED551A946B3521E438D41D58EEECAE276DEB7CB2 +7791412666DCD6594737FB2658F87857A4DFC9280377DC32AFD8FB34833C7C33 +002E8ABA848675227B3C40E10D5F2B900DD9D9C621CABC798BC87422F3221657 +F0FFED6653578907967FDB90C16C7A26636AC291835C966097A8D1C84E90DCC2 +15CF0E4A95B4427D787B40A84838EE9A0A6C0087F22A8B3CE0E5AB08A30C0822 +06DAA520BF93DC73FD8663879976C928A3895B80C1B143F891DDE38B5C51851A +4BFD3CAE8ADDAE8D03AF1BC34139F871354A256C554C63BB600BA39CEBE809C7 +5C417B3185CB22451FEA81D5D75C14A7803DD88C4A93581C5B4EC6CF84E0C766 +EF29081828136018920EF906CA1DD113D43FF7FA6C17512B6AA31C8E894217C5 +4231A159FB5E274D72C8DBF15046698E587EB0D7BD1AD6A43B74734FC227188F +0F203378C4B00B79397115726548F7509BBEA5EBDA1EB27229C3CC849F891C29 +74914936DD8C2E51BD867002E1CEDAEC008062DBFA11FFA35BBB6C536725069B +85B33AEC147B3D00B89E457500360AE5EE8FC3B14D3467723BBA9C2F0FAA41AD +911335D4A422F2E0E9E3C049E7A49AD1B709A32517CF1ADAB6E4DAB389404741 +48AD5D4E64B92C3E3196A1B019B45E21C93BE1F7F95FC1BDDC07A07510941905 +8512552AEFCBB91DFE95FF34647199222FEB9267DA859E3C7F8E9D84DF00B277 +E4ABF40C00B938C457CB192CD799402124F1A7D9D15B15BF5749C368C30A0CE1 +F30EF239C28E04678D8B6A3D02C777124B81A22696AE5D814F6387F3A25CAD1F +48F59F48E71FCE9398B68B1E1C0E998FE6E5178D6E02C4D42BF8B182DF4E0F91 +1F26757D4A5D62FF1B13740C24145222539FB7772F7BD8C9170E21849BF24261 +A570D067907CAB448E3AF3BA3161417B4084078C59D8C6F885EA2756B903EAE6 +61BABDDA3D91A2CDF3424641018D65AA2CF962E0CEBE46F07FD555CD80CF6E51 +C0F50799E2368FAA980F7B2F5F3C83B78CAEAC1581D5D73881F13780F52BBCEB +B34298EAE109B1D1BC2B4707286AB31231B2AC74529892C076F7EDD0CC8425F5 +561ABDEDEAEEDBE99A3FD4420DD929CB00FF6E85C6F634E8E212C22994BCC391 +0390B661A287F09476ECD88D9042055F3F7FA97147937F4FEBDBC20B7B1686F8 +D16DA65FBCAAFC7EA121EC520F683AC8FBDD5C672EFD4D10B6BB5762BEC23689 +8905D20E9DA6FA4E55FF0216C7EC462D20F68A088F3A2922766FF4558F437FF1 +A8F1D108A573F2D3416E4A74DAF14217ED9AEA566B92AFC9558D2CB37263CA69 +AAA08EADD2C913B66FDC781E1A9AC78E7D6819766BAF62247293A39AE440B2C9 +52BDD61FF2851C89FECCF5F8F3B7151B096BFE41FBDA126D3127FD846D44721E +E2E0064BE22A5B977EBA3C57F343E143AF3DF0552F7F63440D713A877C027FFB +0F542B817A9023B62FE16BDBE1FE1ED34594F67140AD343DB3E67371533923F7 +48787969B1B71728E12C225CC6C44EEE6C80038598875EFF3F5D09A96A9AA7B1 +BA22E733B3FDA9F9B21E328A19BD6685B8AEADE7A8340018B57B2A3620283770 +2863BB4D6A0B63F6A69CDA5E108DFE5F4B218F45D040E144CBD1DC6DD1F83FA5 +097C3547B08405E16761E87AF4ACA332BDCD3B394E0AA8AB122325D807C81395 +F39D9E936D089059AE34B0A3255F89CAF1DABBA4CDB0B025F5F359C1DAA7E681 +DC21F59D90FEDD5500F456BE47CD89155E893486EEFC44E724F61162E46882F9 +691A2E501EAEE10C15F05320CEFD10C01C64189D085A7DE7E6CBF206CCDBE81D +7866E33C03CC24D05EA0F5B40C51C1A83684A224B845AB92F0C05B16925CE300 +67761336D0ACD74368BDAF6CA2058FA887D70F193E0886CDF5154ECA545D79B3 +6D7B4DC658D1AE088AE29EC817002287CAB2EA7B3A06856A14231A275835FD94 +0CF4312389FD595912AD77C5E8835431A4E7CA6887439C282F353A8EDB7A5800 +D7823793F7B41B15909A6D182F8636310D54E608295390AED33A53B9ECB870DC +D89BD046973AF79B66E01F30C77BC05AE15070A9665220B47AB77FEFAE7EF275 +86F8CD1DEC52AFA545563FD2989E631538416DE271F80302CA9C94DF683F5586 +557C55E72738FA965828270889C69CEEDB908D61DC742DE985061CF0227B1456 +9C545315E5B7C883DA1963D2F84330EE84477FA5B19FD37F0BC635042D5F8D4B +5FACCDF3AA901217BEF1C15FC4ECAF42833467565EEE35A7F1FC8241D047FBAF +4E5AF4DB7E04FED3E0DAD61883694775529B87C76AB5FB9081462E3708B86919 +9D1BD512A0607258484791223B799C5417E27A4011C0DB293E503F892E2ADA71 +194C880E7ECC8A71F82CEC0550084F4A95B7721FCA3CDC3DD7E469B37CE1EB1D +1904FC6D8C13F733CE88F1931E3064C18D220F7A4885D7C51D5EAAC791EDCD86 +C7C8584767E539108CE3D7D6FDEAB3594E3B700F678091B2610EDE8FFE3163EC +34C3F7364009838C81858EE388E3E9EAA488381A17E956637E610BBB972F3659 +1F3CCF344D425DF7B5A657832BEBA6CA055DBF8A0A732BB1634546D1B000A7E4 +252C594F625930B2FE3E392C94EC55A2481DC4614CC91E86284AAFCA35BDBFA4 +C959B2B1739116482D6BD36CB6A0ECC225608717EA369E2968A144019E8006C8 +3363AE012F0B069B569FFB88DCEF82B830E6552AC64A26E71DB1432C32D769F3 +6EB86D04027D04F1CB38E5C03799E19575FE76483BE867727D29E17417A4F4D1 +C99603A4FF884D399B65AE5873EA9BDF6929B1C79BB45121CBA7D378A7A1830C +C75242CB2E375637AE56B38A4A09E14431132B75D460E4BB3C992048DC9D4598 +F89F13A3EA73CE5625D59BE5901D49BEB92B97EE5768533F96E6C2FB8ED1843F +C5F661445A34DC4ED2A004B4754C2165DC4BF27C58AF7C5902AB0DF98684BDEC +F188505F6A8976C443A622DDA84372F4C4902972E22AAB108F172E4CB4CC9551 +34548563A265B46DA801A10AB7741FD07F83B740A5B574094C484A8757F424D6 +0DDCBE578D95720BC582559514AFC6F3888E94E584FDB3A7F1A4F454E044F42E +C01F8541EA0022287F60C9BC97E5B51B80F29D446165198CAF504584F57C6F29 +39EFA8ED0DE7EA7CCF476235DC5975612FE9B6FDF91F3D744C1E048160160A42 +ED07E7E9710565DE423324F64F790910BA674BB6F4A133A9C0660DD4207DE3FD +5748761858C1BF26A96D24DC6363A3B14E0B3AB19E27E96950FA889498702D27 +757402E83AA70256291DD390F57119CCA9A7F95C1D6D0BFE4665B4EC4566EAB6 +B59FFE3798118085E551FD53882F09567E877B3A477B4BD0880C9D0E793201CB +FDDFB7E3AF195A23FCE0B9198D7CC5486746549B188C0766F4FA087FAA57809E +EDD3CE8E3D74CC7D3D57BFB4A59CD9E5A311B539ED10EDE77EEDCF5FB59B9804 +8DDC591B28CA1A996D29B4A7055B2CE5DE114B03AA7EA065EEC0DFD78D555A6E +9841D855199872760360C956BB81B9568DD1DDDBD8E19EB52A9B8DDAF1C1C8B6 +5E96681D86A1323AF83FB1DAAF3E8AC39FFF38405CDB86AD0AAF0CDC256CDBD1 +DC8BE388661FC9C430BAC41205B04F32015A111FDAC6B6B9554D28EEBCBD5B44 +CF5C678F54658369A44F18173452048A574A5F7F1F29AD26EF5970B118530DF2 +4E339CFE7AAEAD9CEFB01F45948868A17149684B2223D6351C7E6F1ED705E4A4 +D5FB9B2964DD43C9DEA2CCED32AC73912F0958C2E6E2965F85F4806708AF59C9 +532876F34DFD046F12B9440A72B9EE14860AB4944345BCA7EF1C4F8FF8BB1408 +5FB78B697700ACF00EC25ED54D611FEC5171298DDDFB846A3B98770DE01F3B42 +FAF63FE1B4F308993226F59A6F44DE3FAA2DD148CAED9F8FA65DF6B1D606E8E4 +3DDE1E648D6BEA09CE9979A02FAC3C4FC45050F3FF7C5174CA37958F1BDA875B +E44EC6C77D6F8A62CD0A2F580DB2BF84375A5B8302E642A2094B2E89C89A1295 +1E80F571B74506E096CE7B19B22A876D43986E6243AE858EB92B43FDE9BC06A8 +4B35887A2340E21AEDE6B1B3576DB39F0C3991D32CB08E341A3413E99D432728 +6E217CC683A990EB62B3F7520E2C4057E210657C650EFCC6D79265B890251206 +1C4ED926D0756D802F28B414323D127981C2569B439C1EC69CFC84C80D3BAEFF +0ADC2B3ACD2B834A6D01E0B5F1EFE7F4B94EF973D8D713FD820D857B26A559F2 +D1798E2DCFC3305151638A8C70516C2CEE5C3C5844F7B333048988B1C9AF1BF5 +9A27C87FC598625CDC85DC266B84B61022511C61BE41FA04A03637D5F98FEA35 +76D098A5101A36D36D7C8A8421237F5E84C46AFFB890944D371843610D65CAC7 +FA3C2732931C34EA28ED49A5873507B270D928085C4B5DD66AB250C6ECB7DBD0 +EEC148FF48843641C7640EC090E39018561DBE5BB722452864620F613926A512 +7342A9A713A005746D70A07B58B154AF8553DF46169951A878DD91D3FE5389BB +B96DCA94FF5C951A90ED6014141810D79BADFCDB2BBB4664DB65557B9D0573E0 +EECB4AE82961300D90BFAA5B3DB2DF4D3ED4907B6AEEC25AFF260E19B1E0A556 +AB6FA70D405E879A7F38BF159BD877110F6D77AD92C4DCB73CBFF5CABFC55516 +820E7A851EA4E4C87ABEB2896319DCF793F4C615D6B72EEDBE27EABE61529E92 +EC1603F269EF8CF2C8024D14BBA67CD757F5DDB27840C7B5F0FC99A106F63E9D +A3AA4C5B37C1E0A0838B1D67BBE788FD518B14D3959A87500ECC5B6FA87C343F +501DEE4DD62A2BC2C0D49CDFE7FA0DBB95F7E8CB48A8E04A11348D3046B244BB +13BCFD4F55272621B9E871AFE0F69F29187B3FD3D8520FE29FBBF7401765C165 +850765B94457F98305A4E413A916559252B3B429E4C527130F2E075C503B3959 +EE5C291BF7DC94043E38E7FF32781DFAF8B61656CDB76C9CF8784940B74BE195 +3269FE1406751D2DE44F7C04BB96655EF2906B5485CFC38A25D00720F67B1021 +5B59524AEA349A8030F025C965DB4E15891A5784D1F397090B2F6B52CABB4B20 +C519CC86B4A4DDBF70C062A45ED4420DFCA7C766EF913BD4501EA004CBAFB33C +5E1DE75054CC9275AB8D36BC6DD3703A8BDA04381B8A89CCFFBFA86407A133C8 +E7FF7FD443934CBC8EE90AF4F02BBEC777E34630E95E638D06C40E3F800F9A94 +776EB4396C4F6F738064B335609CA323FA1A4D08882D63587DBA6D26E4B4B222 +990D8767E29A14F255754B8B9F9E1AFDCEC9C384DB92BC63E7BC58F97B7E38DE +7C9170AE46B8001BE32A998632C4C41BC1DFF13B6DD9A916912E04A1EDAE7D85 +22A5EE6D643EE1FA7B0EAA0484C31B81C4FF697C5CCB9D2BBDA229F9630945CE +FF1954A1FF65B0715EDC97AC3DCC1FBA3BCE2872CF885EE8816E50E6F3C6CD88 +FE4365D5C807298D6E4242362F7AA829A4DA42EBA1FC619435B8AF80119639E3 +DDEE0DE84FE25767C311CEFEC79F3B99EFD8BD10DADBA506F4B9E48287968295 +B34004BD036269EB3074E0D4D87ED327299EDBFD1CF5842CDDBF74140C32A0DF +28EE5B0546A05775158573D65BFE427C3D7B776C524ADBC2109A8642A9D79D65 +69ECCCE0296FEC2D99D9C473E0925B68305344040CD32DA373B7D43F17A296EB +73A703948D4095F5DEC33BB94E671FEDEEAEDE2DC058EF4F0F98A4721A37B909 +84CAAF6290767ABEF55413678734863351A29F7E24D4DA8DAAE3CF8D34F12A79 +3EDC3BC73D9BDAB4A98A360EBCB743ACADE94DE475D67FB2C06ED8A76ECA6FBD +B5C190777036BCAD9F8B5FE8DFEEC833C5EB13A39CC45F5CF7E67EBD50DC5342 +672C679076AE5CEDA84204A530C9777AD0A7F088D2F138963121FF2C358A9E10 +E1101E835FC312976B6DB6D0DDF1CE250F72D21E7286E6D05C1326ED3B6C502A +135A2EC8D5B36A969FD8A342E92AC1175263448EE175347C3ED55F11AE5AEEE3 +F21DC411929384D4F428456B4FB0FA31A7F5C11764218F3AA47D70E5692E9E99 +F6A1FA0FEE061CB4F460BD8283DC9CD1C81B9BCD0D2BABF0A2EB2C2FEA5EA0D1 +8DF926BE0101C99691074DF354C58100851CC85FB995C7886FDB00A623A4272A +729E1FB63B8505C5AD71487B4B93E9C2FD3BA07154D1F83F0CA500C266461530 +4E31E0E1B857F2AE732F16AE4C187FBFCF4A18897E2C25C9630CD1D94F98F8AB +40C91FC2688632BA02425FB1F927062C125BA0E478768BA86963E131D62A89AE +C36DF3A21C6939909D5294CA03BB785C6FAE9A7244F0B90046C9C4A8C7633711 +5A4619F51C5495B7DA541D3F3F7569FA35F61EB27A6E4247E7AE6939D00EC7D6 +C7E6626B20D066A11741030844DFDAE1DE8883FA5D8F1305A3160C473D6FAEBE +7AD92F2F7F8CBD3885DEF4741537610B95BD5FD29F30A91C0FD065E0F1027CDF +5266EE041A5936400C5D2545A8A3D0AEDDF8F563EA31572F5CD259B74419324E +20F5E34DCDBD6DF987D87DE3C33836CF854B1BBF8BA3DE75BA37B7B500DAC190 +09D10788A7AAD34D9ACB99480AE0FF6AC7FCCF64AC5BCC73232D036C00043A2B +49CA60EA821CC5FE77102CDCED39A2CDA20655EAE3D9A9FA3B741C7F45229B8B +0E6F8B5819F1FD8DA05FB0872708B7D8DDC394D9D26913CE55BA9EE6D8F34E2F +EF669D0FD8BB385AA8902B8D6F91429FB2BD9E9CC3E7D50C99D19B44295AC889 +BAB399C0C74E7877D539421DD3A65559E0DDEC6A071CEE913CB80D0D2789E99D +8E4FB5A00522033498539A4E42B73A9B8A41A28936526A08829FC8D7E0927016 +41598911BB3C764288C418A4CF51908A322171DEAFF64EEF97C9FF625827AC88 +EA178A5861776F2EB77EFCB30D2BF4B72BB65CDD6D00080BBDBCD5ECD4EAEFA7 +F3AC52BD2CDDA576289592B9466E53AABFD4A9F111909C186DEA006B753F1E70 +A9270BF7C049F57C067A9E3465299229F1F9EECBFAEB6FE802E2C6ECA6F717AE +3C88127D60F4476B1FB903EAEF0321C0A911A7BD6B818628AF051FB29D6E1661 +D04C7628D0DAED25978A39AD945C5AA03EB130C13D74E792976737C4E0582B97 +A82481E49A6B96E53FED60C90219ACBEA700C1022B64A452ADB5D7FEFB9C0393 +EE007EF2D6DC33D40FA83E4FC7A8FB2CAA9DE794E478D8F030BA85A30BD85817 +5CAD24A1248B9B7A84F5559045A841EB3B9EBA8C2CE998BB5C449CD74C506506 +EDE0A7C7CC83B5BD48E829D816F9F8C72AD8DEDF27ECDC44A62197A92C4E3E26 +FE504620F6008BF490939CCF4ECE0561B376D4861E88F305F5A5EE8472AAFC7B +405EE88D02485EE4C2078429A4AA0CDFFDE0CC8C2F3ACB0A925211004A1F0993 +95F1D44B7C1C08FAEE2FA830A1F01D735B8C7E2274CAFDFCFA1773B4F8CE7EA4 +E7787D1C2F53B07F96CD7065A779D447570A166BFFD97BFEFA0FBA5DD322B184 +F904567EE73F57C77E51E1E4C5E56F8067F6482E817D76F017BB10A7889E3F50 +9F169EB250BCDEF9517F4E7742FD3474F7A3D02E59FEA07D8072D767F4D533BE +A62CEF822441B447390A79CE9ADD196DA18E49642E6616B3BF0ED776FF218280 +05E45C482B3CD00E879D955834D8B57860EB209E5D38A51BD5503D55BB7FE1D2 +428B2D6DAE2C3C67CF64C0242E5EAE84175F8B0D9C63DAFFFF8616F420FCDC96 +3190AD9E2FBAEB5ACFD9AD1803F20D97AD61064ECE76114B0A75D4877A111DC0 +29F085E729BAA338D328EDACB8E3A599A614B1790959990DB0004191188036F0 +ABBEF1A21BC442D8C8EBA32A26CB71AB92E0198BE8E7426E558CCA7810A83B29 +BE85D1DF560E0ED5D05D9ACC5DF8B4D91CB92CB9AE8BA6D3F49BBAF56B73CBB8 +D9C3936ACD1F7E80ED30D5F188AEAEC1D680D8605E314F053CECAF32CCDF4555 +87F8204C92C042E7FE0F4541F5A6B440641D8D2D8B467BAC19BF6E34E5623D68 +85D921D843F29DE2CA844E6E1C6218C453AC663BDE11861AA567EA7E1A60A26C +ED51F1B1C491A60D004DA8D3E5DB224844AFF9AA7F7138EBCB3E8FAC4B8D77DA +229A701D0563A37B881E63CCCADADD0CC437C5EA6D314A9A4AFB7064CB6C5712 +64B723588A2A0FFB07DE6B02992F0D8DAC413257EDB54931E73BB6F7E0A546AD +3945C7CB40919D73C6127941CCEBD1DDBF808D720AEE18ABF16DE6AD8F3C7E4B +3D8D66F3161B43D043DFC21FE593BDBE5AEE9EFAB4004BD0FCECCE0E9E616114 +10FB0947FF73568AB52D045277A3E76EBA27511B4CF0FF6A4E3973396DD40DA8 +F8197A54E044F42EC016455B3DE270D51977C30AB9AF519C586F6BCF6B6326F1 +1005BC921F1465C2545B39C06FDFDAB8E87E15B9AA3BB82BB207A966DDE41AE2 +67005BB9C19AFBF25B6AE7F7F8350951EBBCC7AEFA1490F7B4C909759B0930E9 +787D1CB2F68D4E8A8B82820660508ACAE74BE7E3358889F5C8B3D301459B943D +6041BF900704EB62CBA83E0411009687C4CAB66F9FD75C1D03151A334146A3EC +0B8CA27154866A305C8C2635D1319FDB768727A15A5094CE09C5F74C4588B10B +FE9403DA9D33AC919103A9D61F2EF71E0F9087A4719B2A623ED9E24DBE49E96D +B2FB941C183385123FBD0EBFDE38783E9CB13DA3547CDA3732A3C24D35931AFF +26DC91479072E3E7734E788808F85C15141AF04B49F1D87086CFC2E75E720F01 +C9B54FF14B765D10F4EA9FAEF2085E5595C15119A9F78E45BE340985BA287E4B +66672FA0913C2E444BFE08C9D31835D744B6CC4EF2FAB77A4F0A8161B9A03DDC +5FB1D7F18C9C66A976BB86C3960736D8D897BE4F38FFB03C91ECA5A184A519C3 +DEA688997B5E9785C778C7C79E882E7FE722341BD44DB37A5A4B3AE046B43746 +35E32FF316DC4A6A609EF78347EAC4FC5742EAA9779C962E6F1671A22A7BC0EB +5669BF60295F39FA1C3DBA62DA6BD467E419FBCA21CFAC69F00CF9C96E4ECBC9 +E0C6D18F9D4BFA60590A3D44ED08CB77FD6B11B49FC53E54F0180C3F20BED95B +ABFA441DAF077036225F0F35DB0B208EC71CFA493D45AA3D03EAE12FFA7B7AE5 +C84A1760A739F3C1A61F679498D29B8D6C44A5870CA8EF1EA1E258023D7F7DC2 +9C4192AF69322B6309C10CA0B117EAF149AAE7B321BE3606C2DD6B0551B2F400 +77AE5F364DD0BAF550A70713AE1BDB20E85E2917276ED528A02FC94B5A135004 +A33E1C6A73A371375FB8F34BD699C2FD288D7BF2E8BF6F6E21A391E2887EB839 +F7A2A9E0D87897A3FC6B1AF9D1E8EFF1BB9BAF9477454B45A330D36A0AEBCFB3 +459E58C36D52E684D7E984857FFC86938F0777A4278110F6132AE590BBAA1459 +76701D9403480EAB1BDC36EC90F15E26B0A1CD2A33CC8FD4860E31EB5605F361 +57FF62747E6A778E40877A26A46FF9C82D5D1915EEAE7EAF60C47400D400D1F7 +9C0C12E9EC5B197B600BD18CAB41C46C8813407778C0BA29E622CFC80743167C +F47D6C1BB06D5EDE6495103F14487BF3745195F2CA95993E757DAC2B882CF498 +FE6B3C7B9818D3B7D3B401876532CA4058BB3B02C85BCFEFB8533666FF0AA984 +E08294E0400FDF5B16C77AECA32FE95775E87E2F70328B7E161D4DD32EC80211 +5E42052E0BC69E86ED6BE21B925694954EE766F05E2478F97600ACA52ECECF74 +BD96A2FF35572E381F0C67A977C0CED793D3548358D080AF520628617E765E20 +C540D33E727B293113B3A4454FA6949F134B71DB79F22BBC904207AFDDB9FB72 +B8EABF48C7B556C5822207E80FD8FCA912631AA40A444C12438FA7115926B2FE +05D0337278541B2ACC97D99BFAEFDDE1D59680AC5B7B957E7AC7B1E6E0F8BF9E +D8F0A3B365DD824FCCB58D284666F3523974378D975515B0C2307ED79A67226F +BADD57DA590135E7BB6D3569EDDEAD70BE5D268088C019400924A7F3B1D262A1 +C40208542D0CEAAE542A7100FA346FEACD0CA9BB95EE0788CBAE0C0419B54298 +16311DB5E3ABA49690631557257BA0865454C3AC053B555F3975AF92E9606476 +F113B100BAA5D7770531B4C6D47B45692A49102F3582FBDF9A818A99F8259826 +F363FA87C822C98006097A804B87EA3C105FEC8DBF24809E5F3953478E98F11A +0DD112D949C7221DAFC467C93AC8F5CE97C367B0F308A0BA859BE0AE80E762DD +2B77F0518C47789ECECE188350A0FB78B89FF1EBF6DA094B59EC16209E840888 +E136A15F31A32C34E611A85863D9936E17FF19812154063EE2BB53905A6C5681 +1F2C86D232D79F74EBB11CC2BDB31A8646DEB04845D2DFBA03D214A8C1B7E422 +973829FA62080D4F47DA2F735B5EC478A3C795A88E93D136E8B8720621DDB1EA +6EC1E2FFB85160322A183FA20369B0CC233DCED255FBEE470674E961C8A60846 +14E64BCC96A551159F13B93D9B554BFA2BA54CA41870F88F9A746FB1A55007F8 +2CBB88A1607E7C41306759091609D31B340A22683B6D1D96FA21AD6B75658966 +87DD28431F919D04CD539A05F25546AB9EBFE2E5DC390F940A366F5B7DB836ED +E0C4B19453C20138122DB634A324D00985EC53D012DA2D13F4BA5C20D31139DF +083B5780161705E23ABF87EE3B8D72C746921E271D633E4496BF31686649EDC4 +663D41949042DA054D62E52F4B02A5C2548AB39EF5325A49C4C744AD69330C24 +A4E3C382BE555FE0A0CB700F8398DB30D313BD817821D4B8CC4C8A553D690220 +D291372C1B017BC1EAECBF8FB030C011B9A7E61D4FF95132C67BADADFF905F83 +E5EE0B68B6DC10555D27824A1F3BEC6F63AD2BCDA34F7503A6265C8FCFEAEB36 +DF5A45D5AD22634F18648507B20F49D32C8B54BEE7537146F31A83C9BF396E85 +DEE428F9DB21FFD2E0F2D3EACE8A5DDBB1D59630F42080C9E0F54AACB5DE7348 +B1CDE9043677DC191C0AEB17B0579089B2216D70B911ABE9E7037038B9713762 +1891A5AFDB24648062C7980FF7E8549C064BD38288840CAA741998900ADB4BDB +CB3211D3415617DA725C3AF1FB8534E8B56FF433CF95ADB766EA4D2CAFA65833 +04660592E4FD09646BBA971E35DE1AEB6160039F26CA2A02DD6391138BAD62DB +170DFFAFD05FE72159AB1E44BD96C2A4CAC74A169F12C5C922EC76DC5451C65F +C41BDDF9C8B0C753D396B02341E91238E4D2CF0E1390DD4C7C9B8A6FC77C8556 +1BFD9CE20B991E8535188B49EABF966FC25F0B6B841D4416D35EB039680E972D +C7B27E911F90AED861AA9E621AF91ACDA0B0CA4C85C13AF52E30AE69184E07CB +AA719A667797852676BBBCA67E2CB48A4327C8EDD5892746315814FD158BA57D +AAEBC5A9C1F349215582AD704C69DE9BDFF494CE61F240E7595551D20978FAA9 +18C45963992567EACEE64BD7DCC61AEE0B67BC4CBC1AA949AEFD03A73D280A78 +FB0DFC4A09C24B47ED59DB2EE02DB4DC96E14F16755A3320203208C99A653BC3 +17F89A8948EC9C66880B2B1086E4E4480D023DC1D2845139790DAC9C4E581458 +D5D0B58D3A9C5DCB6C57614534FD87450DB7C07200F138434B420B5D9445A1D6 +39CA526357BA576F559C18F50CFA1C7AD9CC53E8328613584202C6BC4DF02601 +FC4F93A16F908983F29DE9652183A01CAF6DE4348661C63083CC9EB2AF82B3F7 +DBB9375E529F53436B3D6BF16F7B1C3EB1A05032C934FA0459BCCF9D7E3A51E2 +A8C98B1E002AD6661334764D9750812CE413BCEB2B5323CF2F7A94E29AB7BC6F +E01F55893EA6F6DDBECD0A58C05E3F59B02ECCC72287A108CAF4031C11F9452D +E28D505D57CD53B0C517D2EEB97339222BC8F30504E2E560431EAAAF6E6E28FA +D8B73F0861EDD9EF5FB1F77E899F2E2633DB4A40DEF04ED2D611482DF775906F +FBBB859BB57D92EA7BF34AA4A8BAA18D1AF32C0D836DF690145F746B3CBF938F +B14D5CA4732AC5C8E2AA3438FAC6F9D58286FDDF49D3313EDA8F5546DDAC1A9A +E70B283D70A4C5495DB1B899A2E7D1463F1CCFBFBC76295E77A58448A63B7CAD +7AA7B6B878F4566912B86D98BF918AC4F49A6EEC7A100C7CCF020413D30481F5 +416BE865D65F0F97674ED8481F8CD8D5C4A23AF8217740A8AAE36231396EB21D +DDC17EDC6190FE5626C85484119714C817872F302031346AF5823D5BC67802CA +56A3874DBA0D06E190833A80157BB75CA24E95175821FE7902DFB643CDBDFD18 +C7BD16840D28C094CEC2400F8697DD510D7E4A1B068F0ACA3611D3561D61AEBE +0B511A1693B6FFA9DF3C45894E8A9733188CB2956D9B2FF7C74571897FE4D95C +C74A10A5C89A42E804C2202BE352CBA9DA9C0A8E27EC2C0FAF40D4309109325E +0008A8E2F47B5A75B3851758215970E9BA41CA91948929736623FD0457E0ED83 +8E2DAAEC88D1CBFA301D1743D3FACB524E63F71C5816F06937D1DD5C9ADED136 +172ADD09947170E6225F2C688A0E9A20212D9A162A4C9FE6AE4AABCA5DE659FC +DEDD67EA042A5116D19DBD10D2804B68181F2C8E5D238990642826A3D426C75F +E58A0DB1AFF5DAC2CCA1E61B379F56EC81E741C143F7177CD6380C3431E4806A +85303DA768D26B884224D46C6F79471C53B0C7A0DDAE6B3EA5AB39A6791715FC +EAED070E795D291709CEB9A3181F7563BC7081DC45A5E5BDE68D5C21F1D7FE33 +D8FD012FDFF1CEA1F554B1C14CC202EF70137C78380237E88C3DDFC18AC2AD64 +17CDC970519B7ED5A60E1FAAEF19109236FBF8A267BB4A8AA158E74D44544B23 +55594CA80472AD3BCD59D200DBA47D48C4A53844816B47677017AC0D3AC9B7C8 +91BC90583F47E99624142557B9F11B2A6DD99C389F519E09289A75B3CDE40215 +DD09B325AA705C88EA7274C1D59830DD8EED36CB75DBCD737F44212A8B941FC1 +7D142689E2A143E5D2CEE997C97A5DF787C21B7CD32CA62174159B863ABE5B93 +27B396953C3CBC5AE01F9F94351DDB4E847BB103B724154D2B503E826F8F5A7A +208BAAB9C537CF629A7C2336CF254DCD1856ED1F832894C8865BC66A5A14B831 +C46131B3C36E6DE005168AB6505D72A8961E6FD189CC5CA6EC250F19C5D20E69 +A4BBCB927D77FE33C3501A15600E8B4E17013103AD88B87B08CF732E692C94AE +2378AA86A52DBD4ED85DD5C0085792635DBA03362C81895FC9185771D41D49AC +555B7A331683B2234FB110A7A0252D10BEC2C3AF22B887986080097A5B131CDE +06E5DE66CB59D8B8614B618B44486CBC6CBF5AC2A5747F2EBF40EDFC40445A7F +977EF84D984D8AB6BA2FA64D73D438AB2D8FD0E714F9F85CE300CC10A818A5D0 +167484EFBA0EDE046B0B39860E799803BDC641A5164E90796CAD1E8124A2C4DA +B4254B2AE0920AE4A20DF9C8D151FA365A6BAC6CF01FD63DC2186F5D69A3A7C1 +6397C30497B2020D89CF6C8BD037AEC63E890EA7542374EEE070A2288CB690F9 +1C60DB470A92D97A4F176C3CE7789B6080FA12ECCEDAEC9CB33CC40FFC0A78D7 +BF19ABE1AD9FAA1A02183D6B060E86BC1E74EC5E2423061258837B1E8D14ED7C +244F69EF7F960929E2901E481A265062FB47B8C63DBB5336E7CE76A260979853 +642B679A18455DF4DF2EF5FDC0E9A81775A2DE8D754556EE74B4F8037915B680 +619A697CF50EEB41366D9706304D6F871A4E65AEB516A2EF242C2703A67E4A22 +0BE713B571D5B54C1B3E4A13C0FD0EE12B75B371B97C7F19EBCB07E11079E547 +72B8B1BA66D7B951735932ACFBDDA3A12F5D7508231A66D95993C8DC66011622 +6B7959C476D1B032E60272551E5A6ADC1A389CC6F685690F8C08FEFEBC933B66 +8FA36FA4810C2D790C532E3972D7E14D0E556A33A05FDB4F96AACCC59C679123 +1F6F2FF47CAB5A2C994ADDEF7322414A3B5E5E43D4AA7945A3B6BDDB3FC176AD +BF2471290BA906E63A845A1C5DD8546858B84276E3C89619518FCB328A44F521 +6018E3E7B353842DAC0538089F875011D7E5357F1921CC8C5419D13B6E6B46FB +31A57C60804E13311F6CDCCF5DF4B3880063490091DC378B326F12F6659C3B31 +98B21DA25F2B1F8B3060F03A8A241BDDE276FC90A95342B2684D74AB9842C063 +C00FA4E8C5B6B13A21D993F3F509D10872585538CF50D2FA56888E362930221B +C3D6BB78415F04DF021CE25F793D673AE3A646C121C6928AC3BFB2F221940EB2 +8E7DD2CC1E1F16464556DF2B4F2CD3E2A2FC44D93A96E9F5DAD70DD46F5A1C59 +A34113C2A73D4F789CE0AE581E068157304B354473E82F07539D9583B83E24CB +022CFB6FC049ADC2BEE8C77F8FD0BCD5D334841A1FF15267822B7BBB7A5E563B +15D3F1A401A3724C9FF67C95C73CFF46D85BC21DD68A3975929FD4F9D44135CC +02B90E561DDABBB4BA912389E996691AEF0925E01FA4CB430568E501CCD7F4AB +E026EC683344F9CF41E94558439B2E54DD546E1525D944DEB3687709D947D3D4 +62A681DC77E382E3DFF3F5B7B54D6E77C825FA87BA6BFAC8C2D850A93D4019A7 +2BD7A143D64D68F68E6D99EC4E0BBF509EFD7A2A93C1635632A1D26EECEAE727 +4AE092B99A8A82FD57CDED7A9D0BE8A199BEC9B7681E2CE8C21479D291158F25 +2E9145F6D83EF8157594845708143254DE84424E740C4808D0C3A2C1F49BDD0B +73F193031F606C189B834A6346E55EE7042F68160D777DECA34C3CAD2648BA83 +EBE2AEF347B1EBF4A43C3BAA354DD376A867476EECFF8EE3D8556EC6C19D377A +1A194CDFB5B3214AC5571ED0A520169E4DF0165FDD3602D787AA4775BE622F9E +7B803581B691D4EB6004E00F12A4DDE19ECD32005D389472359DE97337402B78 +BC5D5A66E39706C83CBA73B36B3CA855FC5F89E131E0809D71958586224E74C8 +B7CBBD8F72F4AF98CB869A80F73FD6C62EA45D8EF9513D7261D8281A405E3BA8 +6127DFD57468E73311F6FC33222CF5C13033C01AB4BC11E905440B0A141B25D9 +4E63B7A2BBB342C357D0E2E12864CBC4B6804BE5028F74DEFEE49E238E4343F4 +7E725FCB191917EF42293A043160AAE8D42A5C88904C5DA2BC095206CB892548 +62881DD316141B4724ADFE8115FC5E6BED8A4A89D5D9FF37AF482B703A0D49EC +F05F58F150700666DC29F3CF6CF42CD7674F2DAB1F79C846AFC9ADC42EA679D5 +61D6A14378425406F90BF6166FC40A882EAFF33FE52F059F255CB188CB5B1708 +0B792D7C6A55195447B5141B629931F809F9CFFFB2B67266ACF695AB7C3C55D1 +569F40C78AB69D6BACCDF8FAAAEC1AAEAA3FE4833FA6FB2766B5B61EC0F47A47 +0FE76E716B25747DA28C5B61D8DB215DB10F893152F028D105BB09AF84F7039F +C976852EA1447026D42E5CE45AFC046A666DA0EAE18FAED1AB484CF2085B58A9 +76AAC39F514BE8AC48BCA9A99DCC5391E7B728109D1C906EAAF29B093D5CD345 +E3484F46C07F6FC37B23C6DDCEBD5D99D6A1EE3E5EBF13C4F6A1370023C0C2D6 +2C937CDD2F19488834B8497F75B99C7E9F60C1B88AB3A10563F2A93187A74E5B +F800EDDC14EF5DFA52D530CA27B261ABBBC84DECA8940B5B2EE1E45CC8190E5F +841932C4A5876687AC5BFC2E9B3C05A0AB1E65376812A4DDEC1220611029FC4B +6365567A4AD966B584F0E478BC191580D9C64A76C2D3ED831AAD05C902DCFB48 +9897F48525D8402C7782706872BDB1345561C9A339FCF8B0CADE48EA8FA41BBE +C68730F10B2558F4E20DD99A1894B8D4F9A4C55991E00FCE7A4327D8AF0A4DC2 +26CDC82A308A3D216AD3967711EDE2E82AACFAF12CB6E02B93D958EB5D26C885 +312537DD1C2748EDC81CA07BBF2F9D928E6C50DFF19017525C71FB48C1290789 +F2C5CDB4A2BFDAAED5C85968C9B3F6AC30E6E3A52227281079FD6192DED35C7D +13A2F20DE482A59B6B3F750A3A7DCD5260F5ED9752C4B5C45AEC8ADDE819250F +8705C467F91BA99EA46A7ED13C722203F9C8375B036EC7A1EDE79212BE056757 +3A8212ED3B2521AC7E944EA92A2C6658CE2BAF011A4E1EE3679C839DE9248056 +17E02BDDB3F5B7D07DD709031DB38B53DF0A64BF74C705FF5CFFD8AC8C0BAF09 +18572308A51CABB72D87FA83D5AA5D429CC20B1F9A50D8A8614BDD09B64C7472 +594F99A219169AD201151B2ACE41128F1A8B6AA1A66A302503AB7FD9524952F6 +CD69D5F71DCFA697FBC2EDCD3BD67415D7C811B2FD38DA2495A5DCF06A7926DF +FBFBB69A6D0331DE671233332D1619003D452E14439C6CB20A4BA0C1BB5F3058 +E53E573678CA4CF2CB9B85D97987A3EDD4B20C2E00AAFE4CE1ABFF81F08654D2 +571A280B14B8AB911DFE0297ABDC29A83FF48D1E34DDAB21C4DF50E844AAC3FE +AE1E7BD279C7C8525BBE108AEE9BF7A843CEA325BBFFC5ECECDE0F7F6B1ED17B +439AA0B9966CB1D9603FDFF20C8A17BC1E241DEBA011542179125114C11EB6F9 +C29522B6412BC71BF4CFAF6472077116ABE4A3817A25F52B22902D3CF15D95C2 +C5D7EBF161DF6761D71F678C6758611604323466ACC326A50DBC5BDEE1AB0AF9 +4C384C1646E8D9A41BE98BEC37E7B17DDCDEDDE80A902E3BCB970EFEDBE9881A +E0DA8BDA171CF5DFA972F7095F2E3318E0E2C470C74749B041326477E93DFA3A +F1990A6DB3791999405231DD14770D3CC0FAFF3401C927C28A6B75ED92FD8A56 +06E09D2CFC52E11474466E26A75EA71E5CE45484A962105C6FE87E5330333D79 +C157E492D4B24982D221CE46643D907733E8A8ADA042FA57813651E70F2DB2E4 +077D2F00D5C4E2061CD915F5753446D291F9A576DE011A0E167C3546AE5A7139 +6DDF07FAD088296CE238B41DE27A2EB9FF32C399253BCA153AFE85BFACFEA8BA +E313EB6DA8D4EAF0FBECC4902E63FD80B9BB660B005A2086F88C081A5F1DA2F6 +EAF5AFCD405240BED7F652DAB2650DD896FE64CFEC5B4519CB35302D52D1B7B4 +7BF3F706ED1157AC04C40E1A62C75C7D62EF6913982360E6DFD016F57AF94245 +DD88D7C3FE39F2794EEE26EDB1EC5A04870455FCF108CE4C4A1CC6306D059F2A +812FB1B2B1B4093AC0DFE954C47AECD503C81D5C61B307C19B2376F817407B54 +322ADE75B3F86B0777FF0D3A909496B754E551B3D31837C62C39CA9E0C243C03 +E73502AD2B25C9EF46081872D73581CDD5598112DFF57902258DF66F6928EB0D +84E3A0D5FE0D936B48A397C26BFE6A85466F5FC8C3668DCF78679D0E89C44BC5 +30D847A862CE07DBED180657AE397330C75AFBD05AF7D4CF4E2F5AD8EE35646E +BAED8903385144495D34CB3A48E545E10C446FE1D8450B296B0DF3137F53A7FE +3ECBC6104588780647BA7649251224081435256787FF526601365BEFC6E51B5A +D1F4E39D21B8BAEEA6C11522F01D522C76FECDE3CEA421F04473641928736305 +B07E9DD4B821382D9C42B40A73E0E2DCDBCE3C58E49312EF30B91AB87D1C1857 +D43AC0FB6194245273DC037628FB616CA369109E6DCB94C36243BDAB3C817DA1 +4291A8F3C627E767FECDBEE68D036E262307EBE15630D5485DFA7D0904569232 +DDF3221E53FA4807B11F7CB14812FF495E35A19CAE2B845EAD275B7CBD174533 +F8D87FB0FC007A0342F24190602CCC038263D6405AD0593EC44A1AD2ECE66A10 +0001C3153CE730C147A35E3627F222AE85C6B86DA228B243829FD60FD79E1459 +3F930C783BFAA286DB7CDC90614D550DAB0ADDEE4D2FA8B266696628AC91D144 +0A8D1CE880929A89DC720C01FACE7AE940484A76F62C32006B7F76CA2C804754 +C363AC0AE4CD4140C2627B77AB9BCB7CA9CCAA639C3DB77698C410E0ACF26209 +E9C0051CE020072DB74794F7483F964AB97B9842AA1C12AE9C4C846653F7A873 +3D40AA88A7C345B70A7C553F9B30EE0901D81381BF788079A6B4FD98BABD3C28 +EDE3A011930E2C7AF3AF7FFEDE1324263C69753886F4106D44DEB814B0FF1221 +C91AA0E19C6DC07202893290FC8D1906BE2A6C96220F24ABFF087F846972E517 +DC907CB0FF31117DA65F3368D1D15DAA736C1E0586FF89ADE2C8558256768443 +0F3E3627A3220F8B16286E034A8000B69E4EDEAF6F7515144A204AB4C236D3B5 +B275E47D1016D16A61065DE25A13C26822F1C9DDF4B167630A37907396338776 +6AEB4C48CB9A93186899149F6DF77981673DF970907E39CA75008E9F2B317B91 +CE96E895CA2DB3FC37A54CCBD47675BB91EEB2BE82CEACF986532B507DF58047 +1EDFD568C20C15004F784C6C33B236F0D89251019578AE7D8613955328311F2A +9EBC13AA6DEC565FAC59EC971893029582B73FA54472DDBF3EB18604179E16D9 +1BEB8BD040A80452DF6FE5BF34E1A9C9A885976724B0D41E332B58A01BD1F884 +F75804AC2591EA720089EEC0CB229332EFBDFBB71C14B2427BF3FC038CDAD569 +854CDAA685E7389C985042EFD38CBDA7BDA40C4ECC794D7DEEC9EE81C06F85DF +7FB57D7A5FD416BEDC167E55EED4B05C6E4B708FB6116FB5AD6B05540764D741 +F628588F08BA975D072656A082F26AD7021B042AC1F435AE6782A0D0B1EAA29B +BE24A03DB3EB402E90E263C2F2656830D3B01ED22426393734A7FA8099FD536B +71C9BA405293BC6B7571650421F9D2D6F876FC5F1452787CEEB3F5AD47E53C84 +F73509D09FACB9DCEC4FB382A9DA8A64A0860E149F381151DD1B15B6A6DE4B93 +F775766AF7534AC8CDECF956B5F9C565437BF2575F95BC630B0749BF93D6C664 +C3417107856446603E85AA00BDEF1672B60C77C699776D733E4228729AB3CCE2 +DB8A0181F654F24E6F4CE10B9B88625E0750D54FD8B3EEB862CE538AFAF7BD14 +890DC0B8D5CDA32555B998E0B13FA0A9B370F72E8722DC740C644772CA48E564 +24A92047761BBA4BB0824C1FEB5BC71BF9FE1EB3E0DACD3088E0F6F171335C4A +0EC4AE1A5F75A2617728DFFBE369413A147CEAA6320B3CF7806852990155D679 +52BEEA5372EBA8F2432E4C1FB8D2391EEC1189DDF42E0D00F3E5B531E1F97029 +388EC7D5887CA77680A26A72C399937EE8EEB69CC23F9C83CDADDE76A3AF79BB +EFDC776F9B5393B95DB4514AB80F961241D2AE29061364C0596730C6D9D0D2ED +1C068FCFF5533EDD6AFE8DB6AEA4E8298E7395F0C80DDD70EA21F60F1D2FE421 +413659940A0BB0D0616AB8DC684A11002029C7C8EA80F4CBAFAD6E7C8980BDCB +96616F701D7FA36EEAC9098E917D7FDD183C47035E0EA61465407FDED0349540 +622BCD24AB313E899BEDE4C7218999192F023CE948D7051AEFEB0450026FA1CC +3A6259E265E626A3207450F85A6B4BFD932D9B8F55F826EEE962BDE9435C4C8C +DD0A771058BF5A9E33A5B45866FB2A99B17BA7A8CBAD873AE21052EA8AC000D6 +117DA155DE177742CD5CA61A104A720B4D907C3E8F85EAF8BD45033CFF79A5A2 +B0EB9005239A3ACEF9B42F991DE4013C85BB73F8EA3F6DDB5DD05C914DA4DA0D +17F64051227942FC2C18944E198609C18220C499E0189D260C9B1F90DB37B026 +A7A29CE7067D0FB0D0DF95F753474A0AADDDDAB2D1DB3AE4F75240971EF5C4A2 +610126D8AC1FBD924FBD9C79BC01274645E54B499FFDE025F136193E6163C4EF +FFD56C768400E4E401DE98F71D208448FF47A303BF894A19B7E65B5D405D3213 +7BEFC435F2F12101C5E440FD3ECFA98C3ADF63431A8FE7F288C6338A1BB228C1 +80A3A1759760EEE0E235B910A0EAC3F3FB23808CF2290B4E242B539FAA2D8500 +F8A14509745E60F9B6CACDFAD0B2B13708A234CD91F167F67270551B9196EC2E +A8DCFEA2149590360ABE3C846082F9EFF81842440A5426B01CB4D3FC1CEC8179 +92360A00B0256D2DA366B34C616FE8E53B1B03DFA6DFD237F7C2F2BD34603AC2 +0C66EF3EA4594535A09B111A8BE1F2543529312C514CE93938BAE812080D0BB4 +A1B12841168BBFF661472F8A638DF9CD3EF15D136BBE74DF3D2B16B05A0C0C61 +D0A7CEBD271CE50BF780A2FEC42E1EA5DE8F32C088E79513E069CB3B37391CBD +E872983B36B71A12C55F7F3BB0ECDE27E903DB5D940023E98C08E4DD407251C6 +89774788B001D4A4C0A642CF6B1A4577744354E5EF88B09A38E95A695BC9664A +C7A933D2BF2AFA4470EA55EBD8D584290C5600641F2F38B9630F7DA813C39262 +5AD8DA9A06649C67678B57E653B59E9F333D571C3F81F2A2283F1624201D3109 +49AEED672599A66A12E9DE40B89FAC61801E45E7B3B4E266EFEF24F0070228AF +2BB8BF3B0C05BC8BE65662B8B699E6023D2C7B5CF332DB428C5ABC340C0D43F5 +33B61955956A608592216D35EBEE24E9E1DA1C3887E0AFC3A40ABD858527F58A +BFAB55CB5EDA6A3750E4CDD01F7C386571DADF41A4DC500B347DB3B1D6F02FDB +9E543C92329BA4EE22C326AD8C8D51EA11D63DD82C6E08E5A3EA2FB63E0772ED +6B292B6990E79F79E1F55980644A6435FD8CA3953C7390A0DC799D175145F647 +0B7825BACBA33F1F24AD85427204C7CAC2ECEB0488F0CA160B39B084086E55F6 +372FCCA90D695F5667A85AA50609BE43FBEC0535337CC93C98ABB2CC44941408 +AFA0B8F1282A5DDC7BFDBB4BF842AEEE77B3FFA7FEE93F31A8BAF5B2B779E5C5 +CDD778A0AA2233112DFE5A29530DB3D7F74536C1A7B3D06B7EAC7E28B73BFC6A +1D7D54A13B44D5F050870AEE48A599A3B1A5EC95263D297C932D9E31872F872A +35882C4310C51B5C1ABEB45CF40B581FF32642ACD3FA5907ADD28550F073FF12 +CA199AC7BCB30E85D4AFF28EF77FB99E15BE8999D0A6125B2B2FB7C36416ECD0 +B393452A6495809CF42A847C34DA978303B827C7EF47B62339B46C476BB3E834 +729B0D64671D40F4D6068DF9411C80A1AA82CFCC06DE03C837FD2249164F0D67 +D6B337D1D478E63A0D27188F2D25959BB0F366DA494EBD21DBF0CFF1851C70FA +68DBB4C703B12A06D85CE0DB314C4E1DCB01ACBF4AE4764D3DC5104D0F0BA78A +1624400CF09E15934E99388CBDACD65F555B5FFF2526A6D56764C76502B91833 +44963A9AD49F93852BD2726EE202BB48142C3C24D7B4AD07BD283D21AC1E1F03 +9B4E521ECBE87D354031626ACC7351F10E51FBF821D735BD234243F7E458CBF3 +A8A145D7CDA0D61BF057315FEBFCA4ED9850B317EEE2A60F2A83F71669A2939B +46A376DF77A133F9BC17FC0DAAAB57D2FDD3E26E6274D5F1B2A328238DB3A824 +D94E4018D0E7916066135408D988707A06DD7AE29497D532055E8C50EF3F1847 +E473A5DDED12E0AF0BCF29631E9B98BDECD2E752637DBF419C1CCFC153D55EC2 +04D27C3E75C2EC9484C7E4E078D6563CFE8DD086D1E0D25788A34FAECB57F5A9 +3AB7567E4D47A4B439ACF4BF1250E578440E2137F0D44BA4F53FF5012CB7AD15 +99827C6DDB95EA10316149FFD2C3E3732174983EF8D58106B57B678EB83A04A8 +5435C83EE266D46389FA52BAD9C882C80B9F1827E7E34567C530FAA2DC3C01D5 +07F34D8766FE11FD9FFDF3F7EA03687B227D7A69D0D485A08BC575FE4798CD8B +D3D11E3C7AE1C97E06CC939183E311D33F03B051CCC6C03AB3A0CCA4E1173AB7 +29C190A13892BEA97AB39911F5EE76D30F0DC334EA6BE377E824158173DE8ED4 +00240AA070892E7185E482657ADBFC9A316E56B9BED34137658788AFDADB4E08 +E3D980091A0BE77A90E1552C5B5D8CFB98F16A7902094BC33B322209D7AB5316 +7AE4567C42B67E08405EE37914ADDB8E48F9C844FE97D276CA94C9DFDFA60C89 +33EA232C471B37FB867323C635698336DAB70B2F9BBB3E9DDB3B3CBBC82E9214 +1899FABBAAAA5D08D25F7781EC1DB7F679017E2528AE5DDFD0ACA2E2F82A972B +6A75CA1970E154F1200D2B6FA1C6F6B35E6747970BC08391D4446EB325511DB0 +ED2BD0B8EC7122A09AFEE5B3FBCFBBDADC7FEB5E8E986BEF7BA16C61E6ED0DFF +21D834703C1C3F48AD373BD52B369D06993CDEA6CB2E93C457E6F7D4A6ED1AFB +B713C03B9391E8406E928A1A7082154BDC84D5BF064DB12BE2528DDA640D6C63 +21E2870A0B8B2612C342F898ACE6AA4F1D9861762C88656DE2EC1FBE75EDCFBD +90B7A8C3D7818985F3B9450AB0AC3504A1BA27C0B37C0E2B1036C7A4D735F6E3 +54B7383EB0CBE9A2CA02FF9698A095371993BED6598C7B48FC93BD359375B931 +99E5AF5538437FCF63552220113E8AB0D1C1F6DFE11BA80B9EE7F21C1248596E +654C39062AE10CDA6D1E36DBDC0A1C2C4A3F2A066336D9B7BE4AB375D7B2D4BF +B5F8D2671A1E989BEF76952DC01496EBB9FE693854E1FEC435B3D2A7D78D008F +E4FC1D3C2B21A7B60AF053CD4E02D6C211D55F7CE60D862B16E4476BDCA5D009 +108AE6686FC3716FD7F7B43F97D3F3354FF29AFBE89F2FF4289AA60FA1EACBE4 +73647BCEADCCE1F6467D1D0BB917FD7B3435AEDF6BCD4942E16B9529908791EC +24F8DF862594C04B835B5DD3DEB08534BFED74E44BBB4AEBBD6E3EE1721C201E +3A1C23576BA8FFE0A03914FA9A522DFEDD4FC11038CB4226E2741FC5094ABDA1 +948C30F9F056E4869A84C0240EFF94795892884A6AAC3B31BD041066C85D05A9 +4EACB9A4A613E3023E9AC57DD6D80E9BF696A28F63FBE07F3B63EC55FEED84F1 +FD3EB15343FFEA8B17E6C2FDE99AD29B20A00E697F369DD23E8B9FDFD839076D +1DBA041C35263196C0A1516C43DDBD903824B21E4E472A0A9BEB8505232CF212 +ACE900CD81C4C10C4C68C3C1783BA1E5F77E8200E2563FD96036D75F9EF7EFCC +B1A15D9B81FE87168743B78457C513C7953FBCF9E479DC913117B1B2B383E13C +41766D51F5640698C43D4076B84E2A06C1887BB3293770F168329D6E2402570F +85BD7AC7FE40DCD0362EF9CA871BEC4CC456852658D92338D98896A5A65373B0 +B3F4519AC14C7878FA273975B611D7F89B653DC1A5EFF63385E58188042A054D +D36600B5448171C980022E87064943A3DCCEA463399B81AB0DF571911371D0E3 +7880A9625C69A3233EE5C226A828CC4C5271CC8422A50F9A534EC17117AC35F5 +36151670664F6FB22E8BD6773B2C4F7590609E729398CEE508A0634F4B5A9380 +FB5E40387816D86CC918FBC7F540335DAD612C87D0A274B18FCADC94A208B684 +B32475AA1B8A4EE611C161DDA50AEA13A6E8FB7299FC66269FFFEEE225ADD4E6 +A637DD4D48FFBF4D369E5DDD812C93EAF8B6E696EDE49A8A172CD2A84F2A26F6 +B60536427CA2B4530BE30BF2703A8391E1E6DB8DCC0B7A4D537C797C16B9FDD7 +313A2D864CA1CB3F14E25A3A88E60485D2E7508D040D91A32C5AEDD2531D6B28 +1B4D6B4E5A0A47C559D57499893371CDEE8DFDC4A78209BFE5E0A3A2FC704AA2 +945E8E57563B7D1ACA466D4DAB8E510896A6D3E0036A023AF0952CF348822CCA +2E4CFB7A1320E3CF792525CF7147D898D430B2F564CA0AC838E01F3CC4594116 +8797F5DCBC9B547149CA82031141D81C9FE125361893CA3FD8599ADE6BB8170B +8BECB4BF94A1FF6DED96AFB185C5C0CFCB281EA78AABED711255B23FA9444AE9 +96AC6E57DB7D31C628CDF0F06EC5212FF030821FB968F47B9B3E9F47A45EEAEF +8D780696F761CBFBF2D74FB500B7AFB63B9B68F1483910D3CBFAEBB2F5F0CAD1 +FCC3B15DF947514A7DA9A70F2D2FEA972192E2A60E9F06049F945FD5A6B1AB66 +8F8520A1D97A8317E199AC14377476D6A15E876C2AB215F27E6C9F11B0ECE5A4 +F75F081492881E170AD687A079E5D01883927E74F5EF261397DF4437EFBB6297 +DD21A562D645575703FA857159E454F642106729F28E1FA7EA21EAE0C989EED7 +E5EE7B369761CA15DEEA23F11C2A68EB7948F6CFBF5CBD6DA98627C02CACA9D8 +DBBB9BCA18F87396E212C2D5E4B24C81B9A7A26C1ACBE57F53204D27C7900209 +8BE721264AAC969D61BEF512A6FBB041FCB6A05030FFE35BADC0F21E3E1E9D99 +396D1DFCD7CD979AB3B1D4DB0C64E1BC6B7613964A2072F5436C034CFCE52353 +588244AC7D5F3B28F168897620C1CCD41EC983247DA8577FC7F642022FAF9B8C +DEBCFD51CF5E7A155D9B647EC50BFBADB36A8E370FE8635C74E3689E17AB23A4 +BD014ECDCF5CBE836929CF6E84D14CADED69201E48C82E4F51D83F6326A45D29 +E7F216511EE09BF83A8628F767A0539B6E3210B25729A46B445C9273FC8C0896 +041E8875DFD0C1F5F52456695CE3151EB3202B60C677DED47B957AA84EE4795F +729CCF0E5474076B915731F745938C53D632DA862EC90C21858F395AE5C34499 +0E94C3F53A395AA007C45305D154EC532EBDE1D864CB8267FA533A53A0E67C4E +6F8628FDF01F6719C613831EBE4A2308E8D41406FD695CDBA7EDE7A9BC250628 +4AC284C2FD0712FB58CD6568D53D26B7A8703B94CFA2E63732E46F3EAC1E8A65 +E2C791A1D9C3706D3240668A4A4380AE4C4A02FC0BD520EDEB10CEC17CEEC5C4 +71A045176745F2E9EEE9E265CBD52062B105AAE9475A893D81981945D20F3329 +B4C363DD69E2721E5DA376335B3AD1281820D4FAB8D8542723C4A23DD9CBD809 +D0DDAAC4FC02E3D326BB88154207B1199AF49CE4A7AEF189B0C1E6326483A277 +F8032D400F3C550BFD7D665ED8AEE61D096D9B37C3B1B7594F6F9E655900F279 +21EF747F309E9A25C8DC522D9B2A817F65B577AA52FC76F2B3D07BDC0800C7EC +90F93EBD348184BD39985F8BBA5250ADAB0F90D8FE5DB188A6A45C070D9ED3B2 +B6B2DA5FBC6E98518C4C7D956A3A342607E56082C1ECDCE3ECFD67FB6A994768 +150679204AA92F87AB95AA8B3DA3A34357AA76A7559AA25F35C60A448169731F +1E4C8F767755DF0B1C5405FD5A1751C1398DB4730F178EB891E034EE94DB7847 +05BDFF8E5CA422D613DBBD6B045808C13B911EC91F3782FB1CCAED285D436399 +5B163A71CBB8664F9DED28BF3ABAF95324FB1B805BD84033F01BE6CAB0E7557F +C15BEF7E3463B7C540A49D32357FDBC8B94FA41EA5E9ABF31D5C4562CA003914 +F5BDC4B38B67668A980B039D93F5DA83237DBE6B17AF8B40649CEE44F317272A +A133BE530BA5253497C7BBDFCECFFE87FB6E916CF791A0AC38E0108AD6F43C0D +5BDA526148328F0D580273E7B8EFAF55726464755AB4BC2B01D116603B3F0AEC +069BD7B5000DF7C6127DAFFC19E97F6A74C2CE8A261E6887A146392765962E5B +F8B6FCFAD5D31BA23978552B46BB1173A3014EB37BE21E09634AF79087890FF1 +7AC1507F127F662D467AAA8B58A3743F89436436E60B2BDB7D7A00BDA2ABCC4C +0EC154A590FCC548EE21A21C88CD728C6B3B79F7D3946D2A6AF3AF35B6C6B7B4 +8F93468CD1B4D68018BAD5FC043F22D64A8DA627FCD639B05DB850C3AEF4EAE6 +C77D9D78E77B3C58E5A29544EC6E3E79730A991460FDEC0CAE9FBEC9251C1AEE +7B0294E369BD4294F7CF87E6B4347B40B69AB5C5AF7C5047A154F58CAEFB8F8C +0483F6EE89D10F1C7DBAB89997C214244CBEC960BC0D2C3EC13E64AA0F374647 +86A3687CDB149753F7E3667A1965687A6CE24BCCFF2BB469C11359FD855E7F51 +28D6C01F8AD61D04A69AEA4FD60D58C64EA22DBFB15EA6F74BD0374473B08EAC +7D05AF3422CC2BC2F95A9C588199C00D6AACE9ED6EA8BA4CBA18291E3328D229 +4E1660F5242948D546C375153CE4A4AA0AE24B17BC225ADD17154BD2808DB8B6 +CA9FDF744C71B8FC0E7FCB41CB56916C14873258818291CC6DE0FB29E225AB35 +8A7F07138A2ED613A4155AC9ADB5B816D48771B67EB5335AC67BB5CD354540A7 +975B5E353B909E50A17D8F48218F606FA2F33C37184A603F71D5025BF830DAA7 +C1ABC323DE50AED8B4F6B4A9B3B451C5BD3C21AE09417BE02EA2B68D499BA77F +DCD174BE1E12F3E66B7ADAE9FEAFFD88285EB26FE7856745424FD0F056EFC310 +631532DB5C77B88144A8B0644F67F66256B9ECB18B1B3C4CADAC90CC3FB57E19 +ADED518A3583DF4C5047CCF63A5DB63B667B88C396960FED4D6E3F59C94FCE61 +A2D2397A4A6C88549E44D47858BB7AD9986B49F64D34849BAAB02668E8DDB37E +BB184DA627CEABE7E22DDADF2A6A9CBF2A12BFC75E421C6401E91A5D2A88BFA6 +1CE4D5CF505C0E197A5F03BCD6537E8BD91FAF4D78414AE1F53111D721C34946 +959343CF268A0867C6746124B7B389C74B33971751161008D6040CE53C500C07 +CCB418C8F69C85417C17AE8F93241D0DF04D75B2BD761F3F6487F08738863340 +472FA65C5A1F7EA308E1C089A29797E2CE41D6BAFAB98C70AA53C31791BFBD6A +227B02EF591B506DDBC1CE439A763ED0F32ECA71D99F93E049E54086D9329F67 +A6914A05A01DED55EDBA4AA7826EA5A035A80220A77507700C2BC0EF55E61C3C +919C827B421DFBF804FDE31339BE3271FDD38F586E10FC849D03EF1614E5E86B +1CBB7E24338797ECB52C20C76A65254CDDA1868F025CF318AD30F11BA6471DDE +0A1FDB5C8198B066D8185A4ECD8A26128C307B43533272317634CD023905B466 +66F709052AC38010AFF2807231176B33A6344F9D453B16BB69F41159D2DE73EF +A3643D479562091DDE268961255AB6C446DE8CCE31EDF2C22E4DFE40B3155BAF +2574B4006F81AD81F20BA40C903B8060B7B3ACD5D1670333861C2560CF6E3790 +CACE839418534E4CDA121522E2A98D04CD3EDE1A6C43E8A3F0CC807FAA6CA9C6 +5D2E4CA3CA24FA758CDF73396BDFA8BC109171A7A5A641D119B1C932E023AE72 +EE8F53975D083C32F09A55C5D232EC55948872C034743676F495B850FE957317 +E54E22C18A8951B607EB6523B6399F1CE3C49416DB0B52786DEACA285B941042 +AD5E5211B322F84CDE67EACA02EF846C534F201001201C7EF0C397E872C055EF +06A5B85B9BD4CAD36EEF8BC51A1E2C7E6F28DDB8B1DC9315934BCA2C75CE4534 +C9ED0F3BA5C4F3A06C5FD0F00D38BFBB0A987BD2DF1818BFADDDEB4CB421AD26 +1186DA99C8BA94FEC74805D3F5B1AE1AD60A0EEA91FAF340BE2E1D65B3D35F62 +A43D3B4AD2FA06AE7D13AE23E682F2B1B81A6C699F4BE42E95DEED52C34C0A75 +348C8323844424C1D4495758DD952F94738AE11A239FC7871116F2376F5DBCBD +94E00AB49DF43FC91811BBC9D2E250954809064341734D0CA2CE695224E6606E +ECA731A23899A8C94B5A79063FFE3E5E3590B4E0F4535FC33850546D4F7EA265 +5BCF9B5B6EF538298505E9D4DA457802CB4018EA75A20224D5D84BA2105E3E6E +6FD4667918BF6EEE483279C33B208633782A9D09266F7F4C2C191CBC13FAB687 +A3FCD078AFE1324E27C165E2110445B10BC4369FDF5C8D18DF5EBEF2BF458170 +8A147D2CB5863B5E17A9AB83C200D3A8EF788A97EF68E067A0BA4697ABC44B33 +1114CABA919B2EAA972E670ADEC778E78FAC45C9469A0284654F24DD44D48859 +F8C411E9BA84BB8E5AE066F0B2BB567E1B7B6BBFEC501B7DDE45CE602675E203 +3A81862D8618DF97E400EBCCAAE601844B098705B683DB1ED62CF5A5F2406E7F +0420A0DD1B61DE56380EA530E9650474149EA315843888D567B2BE3BE48914E9 +69EAFE75331AB3926ED60DD9E889DFB485EFEFA6FD7513368DC5C73B64453D7B +AA0858DC010DE29FB96F5AF482AD01E2AFECF52CDD6E0530143842EF6A034C39 +4A2AD4A2380DB4D9E9118EC3C3BA78C0C65ECC931B3409CBD29B3108CA38D903 +C502450D052EC74E563B43F6B4A4BCC514AB9BB667AA8DAE3FEDAD9FD907A75C +ABAF5D5690C9FFCCBABDB21AFDCD2FDDD5E30D57C692FBE3A2826A9FB8D183B0 +F160227DAF2643CFA6C785552F847181F888B7C35B59210A1787181AFF2A6C8A +59ACBE35E0A5E362A89813112E28874416D3E6D9A80477AD0AAD5D0617A19F52 +6F58E24CF775B41C06903C8D99CB26ABEEBFCA23716EDCB6420B5B1054E090A7 +0B93A8F854283B6DA419859C5A22776097C3C1D23CD55F75DE8016A30699C5B1 +6FDAEE8F0AFD0E94DB8A6791FE19C8DE0596FFB900B175A61BC9F8C0943D7FFD +E2FA6FC8C54EBF26C499A5B5A8E722C4DA18D71A8A3FBA64F1319062310609BA +DCD10F8088899CDB6B0A0D1F074CF35442B074F719E17B0D6FF8C844C0CB1ABA +3AF7BB27458A4226A12CB4357530CF70251EA68FCB009C4543E804AD2600C358 +643646D6487E45EBBFBC697557245D095F142E4F7DE7C079B28337675F561D77 +DB0A2E7D03BD6ED882EB5498958BA4E3DB85A60BC051A4D2C41ABC09F2299ACB +7E3C9BF6AB22F8703780CD1BE8D8EAE2F2CB68CC9EBD2248C109C11B92904094 +D50284EE2EABF474CAE5B5F2A7B9A337AB7B1313AB74ADE4074AD2B062AF02F3 +DEC0C4AA90161607FD1C985C5563EA92008DB7F5FA5E1F3FCD905D2F0B54D7B7 +AC7E5A736350E20A32CF313D86D946992BA67C7642221F47E6F5234CCFC5CF86 +FAB556ED8ADD5BFFFE402FDD9988A5E55A51904D8555805AF8EB2CA838098E2B +07861EE120741333CECB4CDACB29BC4B897BCA1BE8AC83E137A62378C056A1FF +926835C2B30647135C409043316E75271ADE8BC9A5DC7B02BE8163D6CE151A49 +F93ED755074DD156150A18B4FEDF42E642E63562C114DF2AB8306B01996851ED +DEE9BE208C5932C7DE0594F112FAECC122F8390FD415BBBF74D26093958B0D87 +B586619E6E36A49F87D08A4560B67CEACDAD45E89646348252E94ACFCFC5C23F +87E72F31DADFB088D96B6D9F7FB05EA135EAF81472A489C31EC40173D2B24007 +0B558F11C21EAE352299536D5D7B6B723D95655ADA2EB120D1DDF6C664322942 +56535434FD8AA48405BE903489FAC3E6DE4AF96A67A1E01B82A65A97986A3918 +93A2F3EF5945B3BFB5FF4134B881317CF2AEC1AC9D9B9E955AC2D68F9E938636 +0B6D2965586691406AEE02F3AEC8D390B341A2575CE8BB1EB4C387B79238D1CB +3B41F01F3B3EDE4E856E810D88BAB1CD5AB694967366223495FDC147D5E4A215 +E9DB7C0CE698722943BE32FC9A71347EEB214C4473125345D1F628769E2236E3 +E95D8294BEDC47562742A8CFF1D5F77C14F4BE357DD244D3FACF0C01627812AC +22BF1BD5654D4F254D80A854150934BC6B7C39D59C1E649895612BF940D499E1 +2B8027C89FE0A25B8783E6CDFECD6ED49AF52E3D7759819CB161C2DE2EBC6438 +F681B10F8D8981CD81E69D641B09910B60C2E2E332D3E674B142DC0D17B543CC +57BD12F540E4FEE1997A0C2BC6B8C725487F2E2E78F4F9440EF27C79E0407110 +F55CFA479DCBF2598D4D16E88211D1383BB180D40168BFEAA474780C1AB07E1D +02BF1757063FA247819AF48DC1146FCA5B57314E642637716DB1877C1C63E67B +A5D057D739092F4A0C76C665712C9C10E14468B5F73CC1F5388F66947058C848 +C7E1924C07CD12387BCEA7A48C6F7E28CAA5C4231844F683C700C4E0A5E34BDE +0FEDB1A6C9C9C5C042B1453FF7BE189E094C7E0C3EA159E0DB61EFD566554A63 +41B5C01B05F0DE3806AD6A6FE9177665458775CDE227FB85228418ECBD551075 +47B27E10321E8A4C97DA80F4D33E1D7C97E091A374D2AD773CDC90F3F1DE602B +4765784731CA63C3A3343B53B121703D081F58C7BA24ADAA35DFDDB843A56A8C +993002AFBF6FA0D54380CF83568997851DB0FF9F93CFE18398933AF97D0B5DEA +6B96C80BE591EB9180D4869075DC0A5B3B81FB154572977C19B6A47069D3BBBC +BCE08D4294E89554ECBEEE403CAC04731A2EF9B80AE551DDAE7E5F09CE3E1A9D +B218227086A260AE9AE1F90F269A0485886D7D21F171CF7333021E689BB976BF +6E7C9E84D896FAF7CD9049EAFFB1F0C77E345F8E72084B28330D215EFAEDE178 +8400DDA4010DA721B01B4AEEBEE99A591D4B8BDE1079A72ABFD983C2F47BD666 +F872D7846F61E746D55480861B6B11F70D2253AE049B7F0A20697E799A5A92B4 +2C07BB0DF2B329ED49DE1FBD848AF588D1617B9E879E345BC205603A4FF2E51F +EED15CCD4F0446A86A02D910FEF3489619BACF0A84A25F18B54E842725FF2CE9 +63286128F4E2B4FDFF123D558EC464A3374E9A3C28E9B22BC3E278317C4EB5F3 +7AB1A5DD5B0D9FE0227B9CF2F8BF2DF43D8C33C1CA68EE0EB83844CCEB5274AF +7A9C788C4C2683609C260C89102B446D72F4634F0C2862455F6E595AE5889206 +1FE553348203A93FE958ADAA18B11CED17AE028709D9FBB1F77BD0838F7FB6A0 +80B6EE79BF4DDF1FD43E854D54E9B34CD9F7C219B8FF40B58132AF6A50749017 +D0611A404C991D366461A4E12F15B0CA831BED7F7297BE9F06D2B2FED22863BC +3C8167E1E9082117BE04B343785F9DEB1214864C21E4C74D6DB63595C457F3DD +8A14C64B6420FF6665C5134643138913624797F6ED3C9C09EDE5B53DEBA6BE9F +88CE04C5971AEC723A455C1C6A04CF323FCB5A6153067500642EA969B14C128A +374B3B0840C16BB830B22E573827822F68ECE52A4D3144124E32FD10B5DB1A60 +49FE6F1B98EBF61DFB396461CFB6A403C01D69F1114CF1A93FCBC010A269C176 +3D3696F682FD3F99308CC60E19096906049D6E7DBB83A213F3D9A4F555D210A9 +63DB39FACF953B663E4BBD43E8AB52D3BB44E10B163191C10AE6D9FF10399E5D +76D1FF0229823D72721B9692F0B155B45306B714CF4B88B83704F6347C6E1B54 +8ABE5F2561215118E3B13AF58EB992769171E73C97A3E1D23BD05F44A969432E +90284920CD8ACE1F6384E870E0EBBFFDDF889AC7F72D709BF52F966B7C8F764A +46A0B611B4B7B45EBA2CB0D7EE27F5158413DFF3A1FE883898F59D8A914363B1 +EC8ED96758F9CC054FCC9A44493315C3BA518126D6F89CE6BD33F9094EE64E94 +9A84BBC704825928DC2287D9AF712EF5C89013642DEB608C5D7E9D7908600558 +04FF2573C9D6C6C4CA36FDFDC1DECEEC545A9E2AB54DFF51BB7358A20433D0F0 +9B47827E85A5FE7FB89E24AFE87D4B6CF8FC32485BC2C008FA754D8B4DB7B992 +C2CE4B8483F5F7E9F1354D3E85EF0AB663CBCF59CDB199D038E4CD0A3F62B413 +D41E68F30FB4290CA2D7DBC9340463038898A616D5BC5F9E259F700F32D44259 +19B4264CA5EEFF3B4AE7E40F5433CE809BFEF52585D16CC8B983FA7DA6292E8D +A6EF1875ACB0B023DD89AD6DE3F6772B6B02B57EB8BB3E03170B66302F23EFBF +88B0405AFF46912BE91BF70869F7A3449C60D0508135BD5280842ED80A85F60B +BB1A2DE9C91C25238ED28A41A02E6772B5E2DEF2900C16D4BACE843E637B5C5C +A415E2A100CD604D4D032FD41A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFBX0800 +%!FontType1-1.0: SFBX0800 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecbx0800, tcbx0800, labx0800, lbbx0800, lcbx0800, rxbx0800. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Bold Extended) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Bold) def +end readonly def +/FontName /SFBX0800 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-246 -350 1853 950}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA5EB3AC33571812909B4FE3AA96865CB76A37E92 +E6ED37182A5C77040AAC191D5A1A9126D69B3C0BC22E1E14A8475A14539E6349 +92BC8AE49A4AE70DF37A86112C687DFA3B60702A4FC38130F0168B5422720CF0 +7004978CC042A54B14E4EAA2A9C5DF867330CF128C29C4E005174E606D2FAAE5 +F9458F236D29B6E80DC5970519D47C575D81157F9AADD62B26E5C6C6F6582326 +1F8D305CD032347C142C4EB301CC7708CE12451577309FA8F8B1E5D7AE962F89 +3A064D3877AC325DB26289E3E293B9844CBB1027EBED20E7D0640AF389DC6EA3 +000D93A628E71A095755F8B518BAC99369619544A556A07087054044F8BBF179 +228066A99C753CF0754083324EE8028967864C91EF5ED2A40E7E138BF7545D6C +A24209B802475C580C56657A957C4CA2F4456CDA958D234854436A9E6837EEC2 +A4F548FDF4C3513E0136AA5349EEC939D072BB7CC7E07D88D2F86A559713D10E +9EE73DF0D9EEB415FBB671AF4E834E8B025C1DEB393FDF89D248284CBEE366BE +A3536B4916A5F9049ACF4B3CD8AC5C651012743572EFED05B73E9874FAAFCEA4 +B9C6961194D3FB71C72FE488F11D4598262F3E1AB99EC29B49C7CC872B1F9564 +FB47A114891E3072F3389D966EB6AA99EFC793D6953288DFCE9E4A3000F63902 +9A69C5FD509B860B5AE8E1DAA8CE8A4686CADAE11D82DA5756FB5382E07A0333 +DDC06881092BB9099B6B893462917DC8F23363EC34C3F736495DE9986B6C5AF0 +2BB52FBD500A0100F19785D47360B57ABF59F002974941125B96B6B311A6760C +7F4F4E8431F0103E0A79E972993DF60A79437354AD9E0D49A8899959A3000F63 +F29BC538452B9CA27973FF22A0D0A43F8741580547A78B9ABC7684724C6050BB +EED01B285C434753AF9F34FFD4D22CBF34648A934B630747A3C6E73B9005A1E4 +0C5F6D92A5B77292DB05270EA119292B15E7E7CF01D3A2B352DF1DDC5D66807A +0946EBEE0FC555A7BA87D348A7145BBF16463E8CF493676DE5025DF089893E2D +3E409A60CD66E3A9B9177045CE098A62BF4E2A8E7D98A8EB4181F164722C309B +A54D0496AD20749D58D4205D3BA74E201DC4EA0727D573C2E4B683E581AD17CC +C0269CA5DA126B8A392F9F65DFDB46767C44EA6E9F6E62F6AADF23F6B28280E7 +9CCD90724A915E22117073D431F47790B0070FD33E08DE70870D9400C5DB8C91 +6D3001297DB3684E4A333CFD1A72861376536BBB063ED3771923006419CD5D9E +A19721045E14960AC4ED766BCEEF86323A8C3BAC9F15C4556EA67B298B553F7B +62C5D56F313881605DC0245FED1DAFAB605366464EA039A19FE0572478936373 +69C762F83F6E4DF93B37E5A896C6114C02527FD97C48146B5F31ECC9B77135D9 +BC7A6BB37FC9038539930FA3969987579E8A81E7DD2A15F01E9158DE9C6AE939 +1A64B644BF7386246EC44628762872730DECB549E68CACDEFCAF9BD3B1C3A600 +15149BDB4508EF61EAE2E17FD2039A8B3090B4A0A82348893BB54E4F87282E4D +514ADD9C10AE0A4719DEEA7DA38BCBD89AF390E5FDFD18B021DBB0889AF7B94F +7AFF3A3AC1EA1115846E0F4507BF50BAF9416F8FF4439789FD52FCBBAB0B2EC4 +4BC5ED8E8ADF0D346F84359FD9F36BA1C25937E9213B76B889D24988A7D5688D +0B970033D3425821DAAABDE8E5B1B674A6436BD2E5FBA8B7F9D8DBB698B098FF +E8F62B6D49888921E4560D342A5D9AD29CDB0E7D6172EC63B04209C64CC8BDCD +211A1F1BB5284434C917AD07E71A08BD11B4C27F9988416118607A81966F7897 +F53159A8A08C578549FF74AC7FB4DF607F87E6240C36FF9C5C423F2C2E02CD4C +6FF4C8A6A91993F1B4BD148E99CC02A7EB2FCF1571F9F6492435790F78679C01 +924D113D7B9BFE305B9AA679FCCABF4EFD2A9EA5DA6C2C6D8FDE693048AD59AB +6E3E7FA1499BC8DF77FB412524B764EC58E1842B72A752F4C5C7CDB160397BBA +0772C68F2B177AF767B83BE20B5A978031774FE05578C4908A3725EE86116590 +BC6D19F6804FFE58DDE52B3D34293A98B1B432C0BC450FD1452BD2AC17D06335 +5BF764A4A55773952F4CFCF87974B4489B9666F1EB7201D4CD35282278615C22 +3E29CB5E6E7B0CCC771786025B0DCA43DB0B52810D3D474C7D71AE5ED3211AD0 +499A4BF8EFD409420B4919854D6BA348F1B590FDA16D14A40F26EA3E7F333F18 +91914E9343630EFACBA3E3EDA0DDE45DAFD803957463391C91A7C32FF4433EC8 +80CEB701C9F46491EE8653E4297031157184F19965A9845BBFD1CAC0E4FC3480 +BC6B0E9F7EBC50A113A79F71D5D155572049EEF27DFBDF81FD9E004B0ADC792D +0A8C5F51ECEA367CBC72711778FD9D439FB1C71A1853DE568EC48B856C1CE855 +5BCF4DEFF1268EB9D594326E2E2EAAD62801A80A2EC6B7541941582667A7816E +820FF3278CE9FC368AACA8DC227D032D54E46C2CAF5998B36EC36C3B58E748A9 +B57239835490EC3F52F1E843C3B7E5AFDD101911C412C90C00263C3C9F1B558F +07C6DD68BDAAD47B4F11C845ECA7BB457469D677CAF806199F508EB12237E478 +0935B61CAC1800CCE8D4DE24CADB65121A86BA0F98D8694E82F318B1F51BAB1A +EC67CA58305C5401ECAECA4F3AC8AB55E9421FD8DDA02675767762FE227865BA +2C4AF59DE093BE7325B646D3235BCAECA6EAC6A2DD41168F5C1424A6D49E42C9 +6A1CA4406098B8B1EE5047D5A37CC93934FB5CAA3D39A47EBE6BD5E3C4F6EF02 +5AE365D9ADB782CE3CC46227A84A8571C4E8F3C7981974B5429C93291AC0EA84 +DBAE4133D073F253C4FBB485151A4C22EE0069F9F06580060074021E63F391DC +7A448BF4BEF86169EE4AC1F2C37FB75F3566AA4850C4BE34C0585DE52349E2BA +85FC0C0CFA5856C18A5DF15699A579EC88E8B0252EB0F8B0AD327F20ACB3E109 +E5C69AE559FDC3A56810D1AE98C5B32BF8976ACCE231C6997B43D32393F164F5 +2E157BE9B017AD50E0D16B6EBB2B11DBBFA306F062529CF427532D52B5ACCF7E +B0093FF36C008456589E8BC97D737A251FB14FF2F91B7A2EEFAAB1A421E50252 +8420A630ACE9D5521C995DC082F35BEF2716D7C4D77CA937CF03978F5196DD8D +03F8905BAA1B69DEF90D74A025DA1E90471D52712B846F6976FD318DD8D3B312 +12C15AF14F86FF69740989F5589B4730F1E9BA4BDA9A001251638B49D106D09C +5DA64C6E7F5368BFCA0543D69259029C5449C474F0AA4D566F5C5327373B83A1 +23BB462074F798EABE3095AF2CFCE99595CCEE99D0E1C1685FF5374BFD8AD317 +AA359886403C5893E06EFA0F579F8A1BA1FB992DB6D1B8FA6CC5A283B3A8C6A0 +DC6901D60DD0A499BAB280D18F70784AFE4A284B77872620A1267492DA80A20A +FD44FF96D7BAF4C28472A3B75AE8F42867137EEF2497D9355384A746B38B3D9C +B2C1B402F33ABB357F8FCB7BC47AC03BE6CEE22FF979A9F6B1D1CBDD04451F3E +116C6091E1403D4108C68EB32E7F60BD2117A94A65D60D226EB20B9C5911FB98 +940D4933B6AA4CC26C395DF1BE136CA0F12595AE47730F34A2B2B15CFCBDE18F +40C3F25AAAB3B0B477418E268185956F6B4558ECC58B8597A6480B6838B49B0A +C20CC5539ADB4973FEDDC9FE903275C52C641A2497BB4BDAD51797ECDB96FAB5 +694232569216567155154AD303034B5D01AE34646FEB3BB0E345D1A4984570B1 +C043569A7D4D1825990AA936BAED12384FF384A0A1C31B8CED826DB1D6077818 +FA9D94F4742BD8EFB6B8FCB73FFEA7EAB05FF42055C4AF55DFAFB98F2C889772 +49C809C97CB6AC2AB13D031B561E17180D4BBDA87B4CE3EA756E5A3DBA9371C4 +936FCC0464C617BB8D5E39E0F325B94FDCDED18D6B78C06872FA96995130C863 +6F16FCE7C04A3D4A0869B0CC233DCED255FBEE470674E961CA071720F6676C0B +2202E2BE9E532FA80B23C7D2FAB3FC555F405578BEA826E96D9C21590E0D00ED +43E6660CCBEB86547851EC207FF9997B5E7A193F392E8330F91062E6F3CC16D8 +4EFE86A349434C7F4C0B854F7DD71F93B6DBBD70DEB19EADDDD7E10A9FB1D48A +ABAEC31E636E5AE5D73CA1A507FC6AF91F41919988C7819958C26485FC184E9F +B4C909D831EF664B4FEB3D89021D60151436FE55180A3B7278F97EA37D3A5BD9 +29EF9AC5480C7DF1091C5F7BD29E13B8BC0F4ABD488D3DC43182134CA931A98B +FBB545BCECC880A7D861AA9E81F2C53A0CEFB9EC02B5DC7AF2CC54EF9A685F74 +A2D4E08CA6D03F75455952440604E1D1C9E670014BCD3FE0CB9C3AA7744DC5E1 +A39A9549E7E411C2946EE8CBE8A5E2A6649D2CD508B81DDDF1F1BA57C7D89155 +5544A542318CA3DBEB233B30BF220B0559DB64CA0123D3237BF2A379205BB750 +C425BF826FF654557DA4B62E8414E5783E1913793AB38D60E6B246FC932C977C +EE1FEF06B82488619BC090DA2B25CAD4506C16759781AFF8CFD924CFD804CCC7 +7A2348D031D5557E56FE7518EC1912CBAD1DC7458FCE101E2058923D283BE2AF +95B2208210E69BBCBFAC75FDA79BA985B305FC8DAC8BBD5E0D0436F1FA3166AD +DB5CB205E3581BC1AD1FB7B60A3B7EAD188847E28EB8C23C5093A6163809DAF9 +102551498A835FFF7E453FFF5AEC7EFC356B116DF441AC43E7A88DE9C218B9CC +6338E19D26A74079A5E4CD6F28659B5E21DEF08811C66BD0793A1C04A444FA4A +FD0636A9954C8C41A1A1563269AA3DCD7B2B0326CC19A52DFAFE701657144D0A +379E0ECE15B7FC1A6DA06716005985710E8159A2E8BD1E25370499A37250E708 +E4AAD408B304244B353062263FEA657AA3001A5FB39FAC7F1EC8F491AF5C3867 +839BF3A7B2BB4C8693B835B72F954F799369AE5760000FB82BBDC79835F6A045 +A7F43858F972B851CBBB96FA134AEF156BF33CBD0C3EFA51E4D76F3360C35569 +8E37C76BFC37233D56767F60D76AEFDBE92E6B25D63A99E8EC34DE7DE8CD4ACD +C0E0FC2713D51FF08EBD3EC18228C3B45A26663E149B7DC9CF19AAAB6A7014F7 +CAB05DD41566B10AF96000E6FA1F0A2C88C88B3080AC180C6143BD88A24F09AD +8AB2582BDD2EB2D8D95E2CF0BF7446B16CAA107669EEA5C46D0B77BA94910703 +EE593DBA371F4CF244893AB6095CD05F10549544C33B575960E66A4E3365842E +4D3640800CC0DB944577917D68403253991A2E61195899D21F6CFD57C2307954 +A8BA33619EF88EDD1276660C3F6ECC6A50B732914D25FCA5B5310A0DAF0C0593 +D9940B52246B7ADC99CE0A5E0355AA31710F7AEAA5EFEA930DE28F0BA6976F13 +CC7443B7291FAC2FE201D2A9EBFE7949B847273852C9ED837383847388D79838 +62931EE0199462D2C34D36BFD5CD5E63310A8BE72BECAAA64CA50484708849FC +2EA4BD68A677384BAA517013292B7D58AA416C667FCD164BAC9D2064C7C10938 +5BDD1CB32951C3B4007EA6785469810C1473739E1F09D5C5D0B87D9360930725 +C939FBB41B2CB300792A113665EC95FC46341A732D3BF4689476B51714F0704E +C5918843E1BD0567637ED0C5ED4BB9BAEE63EF419E7A5869F375D093E8FFE973 +7C90B40B04DDE0C3BF224D4C26C024E4E2FCE39813345885FEB908544B917DC0 +29C6D8432C36B3EA288E066A74236C338D47290E5A92A510D16F5FF5374BFD89 +25024BCDFBE51AFE328CFA829EB00947C8DDBFB5DA36B5DFB259404529626217 +F6F21EAC72B23DFBD3F971CAA70AF94B47510E69BFE9164B8CD647B6ECF445C8 +84413A42E2F3CAC1A1727EB9D9CCA93808E163160D8450D384DAA5D28722DDD8 +079DF50A479E2D3750F2640205DE8C16112ACB0A383AF460F50D769838A4E2EB +D3F23909DA113265320EFA2808AEFDE0EE5C3C58A8907ED43B4B63A5DD545A2B +7E4610C1E17BF86E72691D26C9DEB76C265EF862755F81BC20AF08624CACCD63 +FF658A9C7FA899E3FB8440F5E7FD8BAC42A5B045316D40FD04169C828D50D5C7 +3488252BC073BBFF44F7B9757953B78F865FF1BA89431151441FB33550D3C88D +E66F62F2D460CF843DFDE42BA1351FA7BAFA5677729228F90CD38EFC48EBD258 +2B402F12D36D54CAFCC3DA9C41D7B68FA79F09403F310D7ECDE6E15FECC354CE +0EC01874FB89247C706B4D7679A669608A9B382F8C179F8F4960AFB143257CE7 +2C99406ECB31CB4DF265B5C9575CC19D5574DC1FEEC4621FEFC619F484DB054C +7E49EEF89C2443D152AFC5EA3D178A1AE9862EC54DC6C94EC606851718FD95B5 +504D4932479E48E7E85BB9C92D54FB0E40E4C77F82469123169E38BEC8CD9587 +C25E18460E9C62E68CA7CF4EABDF695E6C2ECD13D80EC239ACEDFE77E6E4769F +5784E49C935812AD051FE81BDE45726A769DC1905BD893BE2C8473128443F3E9 +02E527963DFA1CB34B28FB5F6A563D3F953552C8B63AF5E43551384B8E746F81 +5BEF95C7935B3927327D503B6481CF7F0A77C52352FC2EF078C67FE97C4D9349 +C686DED7828F4377FFC21B29817A25C002DEEBCD1534E306C9577DC478F9AC2A +249D44E768FE3E3852D507551DD69370170825BD612E45D4E80E24D069F6A258 +594AE3ACB0EB4DA65790610A4B7491D2754A7B27E37B5B9BD084784829298B7B +DBFBB3F037498544694F7769D40F24AFEC49CCBE30982AD2AFDC4FAE05EC2FCE +3A9EC04FFABB71AEB4A6D7C2508450D6039B7EB158A5EF039C8EC1CE704C436E +498349B22F506291B18D211E59BA6A32B2EE0DCCB88000FFB4D4FBE7926CF67C +76EAFA146B134A56C0247834B454D4BEA5C9F9B9E36C4B787F0CDF6B37AE435D +648C0CE7FACB3C7733054F11F5D48A2FC479BB407AB443421C488F87FAA82124 +765888436A754751D76B51DC4A2BEE307B91C42ACBE02A70E25106483BEB0021 +7E5323CB5259F68C25740F33D5F4B8569DAEAE66F3765C82B7A9EEDC5C972872 +2C04F19A38AB6AE0E20CFB779E92D5D6260EA13D49E20045EAD4C49A3F8F8F84 +5A4ABC44BA3828D220E38A0900476B0E05F76EF52427E0B1F86EFF97A630258E +CB77BC76E0908328E9C61F5B0ECEF799D976FD5AF41A8DB91E627528C038960E +60BF128E7AFD37163201B95E18949111B356F9AFB755C8D5CDD137A9EB9239FF +1541F40CB67CE50418BA7012183B8B8B70BFADD6912C3F9448D07EDE0C113449 +AE00AF1B5FB4BB410504A3D613BE2BE16D3FCA9D0F372E9A5954E5CEC8CA5BF1 +E212327BCEAB4376746DDA53FD1F267F5B9A1EAFB4E31B4E6C788104A68EFFBD +0C158952528BB63AD47DA09FED9429FD1AD35350D75C712EC8933F2256C4A831 +DAD661E5C4FB0C1BE92E4EAA56A06C320B96A8CCB6B2FC0DA2ABC5EF1960CBE7 +C21733BDE3622E199B9FB7F85DCCE090563928EB7B19D637A2588F215FBB3E57 +14A83BEF3B3DB3C5CB434AAD5762C8D5BA224C0C7881088CC1CC7EED468BF58A +187BEDA5C96057B3408455DBF1239C3DBD5CD157C1596BC92BDCAA856940D6B9 +35E1CC1F04B7974D3E6419A3251744A52482E0930926CF3E4C6725EEDDFA7694 +6A495413E21B73B1792DA8AA542F09605E75E990354A305B95DB6751F7C318CF +DBF677E280D70EA290C342F36DB75064341930230A208B42F72C8A4D8C462D8E +432791972D9189F3A6184002CA4E6E8D58BC47F41C5B6509988A81590675AB90 +7C4F9172E761A43BD44AF83F894A1A6578FA0C8FA4974D9CE89333C95550FAC1 +ABDAA045D90E57553B806DF4EB554BD2E51B1FEC64F8495005CF89589C565B8A +2B647427475D11F0C82FA968FB6DEA1D9A4716987D62B6E8337F4194D3FDB1BB +43917AAD27D93969EFF47820E8AD164551E5E45D98E73357DD961BC5E8EA728F +26CDCEDFC6A6C652186D62A68549DF1F338B4F472C707E3CC5C40B846D2BD37B +16D2C09E88E098DC953DEFC225BAECEE275A371776EB53CC6B32D9D1999681C2 +58EDD5383B3CF5CE110CEE6B46717BF03E85247ECC1257FBEA1C5788A6AFBF6E +0284957324C4422EECB0F96F9A2CECCAA38AFE7BEB994EF5BBD69839783DB864 +303A55A2437766A6B517FF39996D7AEE5FCC7B90D617CDEC6F5CBEA548AA7DD5 +980ED1DB130063A07FF5507A24CD1FB81B8961F03AC8D4309A3F923825086C68 +782CB641271D05C124E1B4C704580EA63D1089F167B79660FCCA707933CD98EF +706460832D64B6BF37B126B95ABA4E4EE6666AF00388F75E60765A031741DEEE +E8BC87AAEE5D21DBD34CDA3DBF4078399520BC94586979F4DD1D1D72C98306FA +46FEF4490A628F14FCED37AEFC602F6AB0990778CBB30F18098C4BE32E1B5ABF +D1B54D638DEC0080549FBEAEF52D3207DC0437E09693C04103D1A6086DFCD414 +DD2367D7E9AACA45A1FF4C34ADB130C63DC9EBE96CD3E81845B7CE41375DBC82 +3AD4A792A63D02BB936FE3FC1B514C17ABB4CB65E922AD6A5163E8C3E0C848A8 +A56F92482B2BD136C09C821EAAD9F363A593AF5F1F66F9346C3E850287915EA8 +40C5D661E416D2CC4EF9443709A499321715A18BF8445E650A47BE5FD984D7B9 +102FE3B76F5D29E0837D65C7FB93E42A523209576C023ED67486E3783FB06BF9 +40C9D2C3516B02EEC713CEE14A9BE91B69E9E68748A4628EC397AE80C5F19BCD +688387A9C911B51A5A93B5A02E90BCD058875B24833A89074E8EB7AE94C47625 +EA3898BC665C699524D93A92E0D5CA91DEF8E61760F4F3334AEC220744688431 +7C6390648FA98C9B5E0BB1C42C9A97B504173E4C2CAA862F8B6ED82C460F5520 +1FA5FF824A275DDB7AAF93A3A7FD94B0B4991BE02E340EF2B24CD9E3664940FA +FDE34D8DD6FBE496F4D5448B08C9813C036CEC746765FFB642D1A37308DB0525 +E61CF68E65C6D2FD6B15B6ADD47980173A1859C7477F09456A731F177F7F8073 +4CB08B7DB3B825F91F3D3747C30D92E25AFD33DE7F7281FF1F428D9FC1E1AB4C +6B1EB1485A15873CAF37B77A62E0823D0BF85A440B9864E747A1F2545279FEDE +C6DA16A8E8AE202EEC5745900DD1385C6B589E25B677FD6B341C708F3FB0DD3F +0601B6A2A0A7EE8D58B32C0B79DE16BF5F30D78C09783425062E84BF5BF88800 +A98338B200F83DDDEE4FE8ED4FE4034A3E7280D32632A289CD36634EFB88A37B +DDDC2F24AF327E59BFA675969B80351FA004DEFAD1D35D6FB227C9FDEFABC0A2 +3EDF7A9B579190F177BA04D63516D012A2C4E6176B9C33A7479D842DEEDA15C9 +0D564EF0AC975ED7E11BD714FDC99E42FFFA745309C44A45A7046A62B5C42EC2 +3DE44D0A120DC06C898C80DD46FF0B0CAB3DAA1D2A0D3282BEA0A587D1618E76 +94082239DC409E8E3AF500D73C814C51AC3A262EABE2E3D3AD159C5ACBB6394C +C9C95BCE1483052A0B7BED09040BF098AE5B456E636D325E79F7BAAA0007A436 +35FCF064927FD8E766F803F01244A7A86B8344E9ED2BDFE8A447843CAB852483 +BFD0298F27C8F2DF2FF6342EA51E2EDE24F38A8574D46E98508DDDFCB0220367 +00F84FC6ED9230B55E914BBE9E89290537B24497218073CA424008DA3B7FC06D +2BD8C8119014149A44CE4954DD298CE8B45F7C5F31BDF19D907563D649704D42 +BDDF502B6DB47832022621CDC8D9241802B72A6D9F9D6DEEC749414459C10E31 +A74143E56D05E1A912215A7EE54ABB7A5793953E279FC06701D5F7EFFC1FE9D0 +85E56461FA36DF84BC6A33E9A1316E46F95A535E0B2C2D26976A5A4E8114C9BF +B36AC9A49A2FE89BA975399DA4B9548864526B7D79AF990E5625B8AB0B2EC44B +C5ED8E8ADF0D346F843590D55CA1BE01952940DBA878BF941F1F764036D85802 +759C5055D8F11E567F2853197007EC35503C0A39B5A13254A672AC2EF6C10036 +81542535A236D544E6887D1A3A48D60FAA3CDB4B0C7E5EAEB2413D1DC2AC8847 +14A063448A07DBEE19025157FB5FAF058B41C56957C8C329E3CC50B9BF382CB9 +A084BCC8CC149D713D57158CD4849962B186FB92D64273C32818E9996CFD9B80 +4FA14693AEEAADBA36DCEA40AD7AF9812F3D1F70811377D10DB1897F4D4B24A3 +845FF656EFD9F22E8DDA1B8D66CD600D1F2C244EF9CE4DF0F85615B6221ACDB5 +DACBCDFBD90B6B17F8590B94D152656CE0A277C180BB5751D72714570AA9B960 +795874F06FC41A77CEA75E7496EDB4748F1F95CF14177FB453CB259BDEA980EE +67A69397BDB0E5060513F356D14BB5FEC2D9EC74E73FB67CE7FA22F86B91D7EA +43723641ACC8CBCEC0813D3F7D5318946353575D59560615774EC5D2A5379CC1 +C782383CCFFF61D7B38EE8C9F376DAF89D543A4D0D7C87FBFB17912D34199D92 +7E91EDD64670B853F37DBC2067EC814CCE91A48322098E0ABA622F1805B3E415 +E9406C0864CC882063C83AE834F0139932876FF7464138AFFF98C397C5C58316 +C88BEEFC7757168983E19345A97E64CD49837AB3B8810951DCC72887DD482C23 +2B45DFA048BF9768029EC848D09BDF7F3FE6F3845521A4A26B24DC470AE00C1D +FC902AEDC874B4CD39B9DA15586DAB0F2DE9799E5FB1691BF17FE9AD06F04391 +4F94135F9F38141B8B4EAE0CA39FF872B9AD3BF599F6719EAC28B1E181893DC6 +8CFA0967A1F43D482CDF7EF6B964EB783A5554CF327301F3C0772DBD35189EB5 +AFE313BED8A67DDB17817F3007F8631FCA202C629955EFC693152FE8233BB990 +79002DA1ED1DEC68ACD9F3DE2DC36D53740DE406AF1FA6DF199F1F58E44F4754 +A43ED5C8440DE3D0ABFB02A302BA4A00DF77C176E65B38DA08FA2D249E3AA85A +3232672E7173EB2B0BD779E6CE1C1B554BC721F7B1A01624C020A2B49F1EF3BF +09F285EEF8BE43261AC39A38779CBA625A7D952E716B7D054588A17FD6BF44C7 +5BCC095B22141C6C5A0C366AA0F714380ABE95A351BA9BB827F3243E7DE709C3 +DB2777C505BB0A5E9D5DFE6294CF38E4AA77B29234A540CC0B85611676F453DA +9B16D6B82C21C593C2475F1D97473E5E059654CEF4D15C31ED493C96C0064EAE +0B8679FDA6771BC0CBCED5F162ED439204DE47CAA08EE34A122055DBC4CDE3E5 +780763BD089B1D7EEFB99D7E681A9E5C5AF1DDAB700B6CD6821F93F96AB10B55 +F12337F61E7CA924637FBEA70F6073CE5F309C7FD1FB3D040B4C08EAD8080518 +943B1916AE5FE829BA15070DCC4FE58DB79963C1DB9D4BAD3A8729AE08C65426 +022112C5430F09373A7694DF6549F90B27558998789B4175401FDBDBDEED9611 +4D71719C11825550DAF1E55A61A05D305B20B161236859BB03ED2C1A775C87AD +A49A5B115E46DCD1BAD73484DD0AB063CBA90BA451103E26FF9465719CE2534E +467DB93146EC76A522D7F16FDE2EEF671E9BB731D34333CA08BD3C0C2ED3785E +B5089706A4CBA9DAA9F9DF7F2FD79283F8703CBBCF9A0866AF31CDD0B2D779AC +AC7E45DF14E4A72E5C85F501F4DC0DB1DA462B7F01DAC2117D60BA66CB7B4B0F +DEAF2BE977DE9B23F71212674A53B3A06F58332C83C19926F0797EE3EF415F3B +EE833D631FAE444F578BFCC76B6648EFA4DE9C16B9BBA64D895904F87A9A204D +9624FB4C6A588610DA592051A752412B3CD258A3016BF19E9D6F7312B89C0C38 +5D0EE6CD85C35C0416543C52C4F27C1AAAEA363AF841F9E3D12D71A8B0868108 +E2CB4241177353670634A1C65CAB6D723CB9867CF4DB84FB19A69BA968093A75 +79DB5094C5CBCF69C1952D62AE93E6A14A7B954B38CABDC0471ED87CBB71DD00 +9C92D9E34FDD65D87F32CD5EA970590BAC71495F98E00CBDF7857C0A6824B115 +FED86D1EFD996D7C7DE6D67A6048096260497433E093DEAEEFCD36EED1C09E80 +0EB1AC7FE659696388C9866424505623842225E59106A3D328B3AEDA50057C2D +55F381EF29D8155A5A7ACA6BE7F090867363947E0323FE426A7686789182855D +EC14BBB3E5ABCADDA38D4EA22B2FEA0C3B0F9995EC0DFF2F7AE5E6B3272B4719 +2C02CEB0144F2D5401EBD410C65F5B986546338A2239F279FD478B194C91D92A +F7696EA51A97C577203986EE9E4E38C3483B505A3B36705655AA33F6E79FD4CB +E333EB28FEB8E7897EDDA897A175E63AD6C738B5A21601AE737ACE2D0A64225B +F58F4DDE66BE04A4516DD56368785BCC3506D9665B38656B1C6735F2E49524F6 +AD1F872F3020D2EF523885B8EBDC304EF4551CC67B6E2D612AF12BE530536303 +7B08A39FF872B9AD3BF599F6719EAC28B1E6F51777C56F540FE52B031D8B7F9C +0DCE31046249FF8315710155E4A76D16591A313422B91DEEA1E9F7306818C7BC +C1532ED448922E891F3C1909BCEADE336F1994F814446B5AE721572B7DEFAF17 +DBBF27066BF64A6CFDF364502DAEDB630DCCE324DBD53046126AA5DC7B15AED2 +728DF4D9414F1CA7D74A3BC07E0087419A601F72C0A870FCD5EFEDBAB707C50F +F660E82FD77B4516E2574F2E401A2AFF273AD932A876B9275789BF2B56F62093 +53F4A66EC1426ADACA3982063368FD416727119FDD7A16AD079A9D626F9F8BF9 +E683FD79626FD924D57E0BE99050FE4C2852AC88D4C0349125EA311F492954CA +1DF8E808E480C87724DA4A9A860C3B903C5D270C1B01B5E64BA2F314DA2144FB +E1C6DC3D9762DEF2A02A2893DF0AD31AD80CFB1D1112A07E0AF26B9E21D8CA39 +0CFD1332D16B7315C561DDF3108B1C28EDFC157A6CF9B8C7DB2260674F451A01 +A993B66419534223EA2FCC25D2951E40441D29E047376A1B90A7738F26800360 +A182D9CFF3776626E2CB89A93A813AA5B19EB9A6BE50571224BEF8C84A5F9F38 +29973BA00CB10996958E146300E4A14A785D8C418E6FF03E9C4B6426A067F3EB +DBCDD7922FD97A6EEFEE61477EDA878EC802B5870CC72340F02646E99FAB2F44 +FFD0BD03E25321B119518F89124B9896CE890A74C6A822AF7359BA3562E48A0B +A661FC84C4918F75B17B2F16E43F5D73BC74504C570F291598CE0B324996DD0D +BDA6C89D53C2F53F02C6DE4A6425D4C7A8D5A96FA2615370D28D2CB621AFADEE +DBAF500D69B0CC233DCED255FBEE470674E965031F5DF935E5584F54E574CE08 +B25D363133C02D539CF52CC6B6D3A523B80543E5C1616B374E1BC9FF4753B246 +45877CF940CD9C7CF1D00496857FFDE8F6DC195E944C6777AD8BB8A5D1B3145B +1F3CE9D787E7D4BA9436073E3158CD5B1D84DB32FB41F87A61CC37A43AE8CE08 +EF05788E1C2B4D9FC0922978464D6EEE29D1D941526C7811B7A83F020BA06BFB +17FFFE35C6CDF22EBA8031443E1CFFD59DE61885871B3E17A24453CA53B851DF +75E7D187078C192A4734F4D56F2E594FF20F3B4C1D8112FCD195A0110B5E03A7 +23CB8B5ED1EF859B76CCEA01146EB93CB56A14B95876D39333596F62D7AC278F +B9B8E129E571A27362FF66E60CB9B31849B48375796494B5925E2142E2F4D867 +9F04375B9CFE8DF741E0A53BFD6128C6D689E79E2A618AE16B03F981DD806D8A +65514E26057622C0B9612DE45BE4BE0F1700C19A7C4447E7EEBE971EDD797462 +C47E629E9471B2C7A7A60B595ABE95A2ED6068756B7B00A3527AB6850ABDAE1D +FF61D342D322BAE17A94457670222BA378E4710533B643BB8D1E9AEBF81F1C12 +BD6A4EC1DA3EFD701E3E022AE56DC9510B0F87700186A4C20EB527774A74ADAD +1601E26F8F20911A57B64DE22ED7C5519162907BEC217B17BBCFBCA1CA9D765A +8A77E683E5C08CA4D92B219CF0C32108EF8A3AA8BA2B54FA8DF40528E90B34C8 +3623FF9BAA5A93D8DAC10C74CB8806960705C7B976770579E35795F2D7D9AC21 +1EB6FFCA06F3192DF7325A9498FA22E0703B3D6E178C69C4AB868EC983AF2E00 +16E05A12F0D237BFB8A1BFB62E0C1DCBAD4F21FFFA0E5FF76E83358F0DB79960 +220CE6120060255F6AE97C0F9188C537703CBFAF5D46A69D1C4A81538CDB8188 +CFE39DBBF434C53562765E67A7D9860D14EDE9D8E94379A2D2DB98004723ED57 +2B867E908A46423D70F8B0AEA990EACB57E24E49F95B5D04F2E84D2EE6479A41 +71844C6D0585E824B8F4380B74072502191A69CE1DBB931C10D34491C8A26625 +D963C8DF39C4E969F8A173487DF644CC70B8D8C484BEF298ADEC4A658735295C +FFA34DECE145DC8D22172D0A640F55E6619305C85131DCE442BCA4E670B93B4B +89397E969F3FEF0FC69C09FA2D9654A0D5DABB7B1DA527F75512667EADE711CA +7FD4A6528AC2AF85A4A3A27B8DDC703D559213082338DBC401C80B1329E92399 +BA13726632F177668C57B6925DDDE9D73BD246789FA2F37D71EC08ED5CE94044 +450221ABCB6364E90F8D1BBB7F4D80909A30A28B94CD7FAB420992042E64C3ED +824FCF860D1459BD662814CA9096755D5BA7E4F6A46CE82B1EC1B77D62FAEB61 +1EEC44F1774A8BFACDBC3557957A4E091021026DEA8A6BADBC940CF59B289E8F +6C44014B09C17C68D7EFBEC5211D5D40996D0FC1DBFAEE0911C14472B826A633 +A17FA898A3D9344524E2C51E71141BA2B5FCB642D1A3E70360D9F894AE2013EB +A70299250EF19470F8FB05CFC2DAE1B08D2025E75697321AC75EF70D3FFBA465 +D438AF81BDC705933FC54986A81EB684F98AD6F5BF332EA23C11BAC2BAD1B9D4 +A5E88485C6B6EB520F3007908A42C18618F3E624EBCCC7E874DF3C2D253EEDED +E9DC7CD4DE6CFA14796902C4AD926798E24D6E9DD8B526FF28A6960DF68C0C0F +E133C814CA49A3064A5278097E479EE81FD41907271C1DA10D95DCC9929E1BB1 +D4C7DB94FDE9781F6726B0187CF78E246AFA8742E1318B544A14ED27CD197CAF +8519881C110B818A544B95E6FDB824B647B4E462D3EB16FCA4DBC0A47E2E2F87 +56D5937DAAC2D49E8AFA59B5B96B8176EB44885F944CAAC5BFFF365FBB1EF37B +8D1CAFDD020D7B274BDA89FF49D878AD96CD4CA75D32FE863FDC1962F6BF788D +DD9CF82A6FFA0C1E746F83C5EE48C1BBAD05C2B35C6FBA117CB7727A2C7D49C5 +7E35BB7A4C5F5EE0F40D261F683E078D22F6C1057B5432BE5777AFDE90A0D8FD +C2079856C3B39A6B9B91525E753C536FD2ABE7D1463FFF315C84854A1EB635D9 +4B79EC2A2506958EF2C0573B375CF759485B040E0A436F5FF861927DDEF5CFC3 +03B608A9913DA34CAA545E8CFD2DC1D147259BDCE20BED379F8325A8556C09CB +74B3EBC142CB7924C88959425B3AD83CA1303AF94EEACDC0DE2D416975512BBA +B3555B26513354E555063AA1F8797A36B813F06C4EA39741A290BFDD8148E7EB +B72D912D0075417B69C93ABAC5933ECBF64902C7C3E99B4E7FF0D64762CF5D6A +9F539AFDF9361520D4498BDDE97D9180ABB364AD55D1AAAF6A1DBA1AD2B88037 +ADDDEA0FAF86A9CB5709C9D008DCA25A6F265DDC4E508626FF33812F64C90C06 +8DDD25BBC76A600914C44CE566BFB792D0002D8F9D2C5D6994408AD1128C92D0 +0843C416D38C0B2D6CB66CD6BF4C7201C03BFD8F756A74EF0FAC337A4EE5A955 +FFAB7FE31ED04F893C345012FCE3DB7EF2076F110282F6314AE0F8679BC13B77 +48AEF59F8950C3E836135428D632F98837F99C51828872056BA273B76152A553 +E90C85A26295B66CBBE74C668AB708BD9A18C85C1A9ABFE558406F2F28F43410 +45978D34A9AA450759892DDB36640E575C6ADE5FA46BD02E1B274F42A9F8CC07 +E6229625BCB3CB684307BBF4FD6D8B0418D11A842E751568F1A30368545C4A69 +B4580BE84694D27E18F1DA16F385E5E1D8DC6FFD626714F5D76BB3E9D2766853 +0477A5DF72882149633DF4B4C6423D4F2A50E6E7E3210978899D3A79ABDD207E +56FA046417F7119652D61D606F5E1B5348789BE20F8BEB6232C5F5C85B1F8787 +81BF9C9617CC27E8EB411A32BA1C10AB0CCEEE1063F752F661E95474D786C875 +225C38E0B9D9C7ACDB716465FFD7039C9B149F57A06CD67E226BF72D92892F81 +30B9A883165B9432DC75675CDFA9BF6E42EF4559C2155E58FA101D55C00FEDFC +03A0E647EFD79F875020231F61613A1794893C96E83253B37B08E03DB71DCBBA +71E64046CA64B07041A32A2CD4E568DBADD21E7A2828F5B5190A470C355EDE6D +2BF089A3FA3199263318CA47CA1A93C5D176EFCF1206AA29FAEA6E82AF3CC8E8 +2A9228CD3841C3CD86B52551DD10E2B4D77594BE7E6CFC795228922E278087B3 +58D2BBBFC35BB15DA42E27EF39410E18561EB03BEECD8160235EFAE26E9F2DBC +1ED2F8F6F798D8BAAB4959F81ABEB65A37506BC27607D497B4548B76B15EBE13 +7FF134434643B493CF52A33FF44BCF7B06709C44F011D14CBCFF3793FFEB5759 +87CAE5484BCA81A54124BCFAEFA92D1CABDDACD1B3F78C5A2426FA4054A5B8DA +534B9D42F0AFB220FE18FA5CDD2038AEA57D027310B61F15D3F92BFA3BC78AAF +25336FC061416234FB98DB85EF797F8BAAC930DBD8F9529B9BA37245CDA125CC +BE116EBC03E1D17E12E6C66A69FC6AB3BE4D2D14A7E9E64C30C5A95D86E66584 +3C2BB888F23F336555C4FA0324852EFB36660A1832B5DA52DCE29D51300C269B +27AB7C54D6854E4C55416A847395A3D68625713CFFEFB82FDF423CD938C8D3F1 +27A14B315D8509B145CE1964862F225D0455FB1AFA0D5BDA2F10A9DA35CDC30E +377B78459CD2197DFE3DC0A791E0D3455CBDD171190EFF3225A73710FEE10B45 +81EEFA264993D725503D2C6F9627E4E428A2923A91B2F7795796C00A71DA032B +B8771F8B7A205499FCE3E5D3A1EA10C4C45D1015233A6D79FF19D17C63D6C138 +40CB8294B83CA932CF05595A67E6475ED42B17733139ED7BFAD3CABAF149CB75 +683C6E8385A74CD62B0F2F6DC69F107BACBA375D76CC3ADCC0DE305E7AD6016D +E7A0C8836BC647A5F192F2646BF7F257E99106A3D328B3AEDA50057C2D55F383 +43ABA641F1BB55E3C80B23D2C2F18D67B801A578F80E4CFCD0C17150D9DDFC74 +A510E8F9EE8DADAE2FE1E5AB72D9D04A7D6DEDA6C722766489C6320EEA7D7007 +7DD44B9BDFBABFFAD53F8082CC9D5110166304B2C3511FC7CE8702A549A6A894 +5D118C875764CB3D441083DE2E587226ADD5FD1B0A8DAB5747E373A1D22813AE +431E7824AD632DDE0CA39CE0C9AF3BC901CDA6B253E6F9E0316680BB7DB63B13 +1A1F7FD8A4D0E5C53AD27FB1C5C9A53FC1F74D6E94A480795DAB27885183DCF4 +8A3151B0AF644135FE0028EC66BA70701641A8647A9D309DE3ABDE8AE906726E +2866F6FDD399BE7298EF4FBF5845174C9B5846B7524F11D5401ED7608C9766CA +F77D9D5F9EA9F2BED6B4EC91B836983606624F93A6A380C1DF5531307FA0CC19 +D2F18E61F20E2DD1D8CABC65EC82F51FC5204DFE59BBC83093AA0097057E9851 +10E52CC9AAB8C85BE7C57C88D2B2C32C494F50DCF548AFB0E911345969AB8194 +BE9FCF8CB5ADF35D8AF8739EBE557A32CE4179F56FACED0C5C2E15E85E7D4EF7 +23CDA26986BBE03B57F4A7FC73938763C2F34BF902F7ACE7C7CF1B93B006E385 +1E250DC3AC668A793880C14970BE8FA0F3F63E76BE9897BE8D0443B38CB2AE1C +732ED8BFA0AE8260E54604B60DD151712EDD0388C695E910BDC9A09B543A4D0D +7C87FBFB17912D34199D977734E7FA112D32194435E1E46DBAF38F08B3AAD269 +F4CD60146C464AF992111236F30112B483F3AB444D8B5D4003093961B824F5E8 +9106A3D328B3AEDA50057C2D55F3834E4E0BC945B1C82CD79756EB3A88AA0A7B +136EC8DEB870A8B4EC453D6E4FB1CEC558DE2B06CCD0DEBB631A8A964603B10A +F174E00F0A43C3327E0CE381DA1580D51504D61EA2B418C1AC9D1C2ACBB32CEE +F28A858A8646948868A17149684B2223D6351C7E61D85CF56287982C11DDF7DB +422443EB3A089189744060805DA8C0DF15C1AE3946453C584A91266178B2ADD6 +2EB8A0F4EB05673171A3C3B4A8C1A1E3A0FEDD7CE3FCD6FC5B6E8C30A42AC346 +E20941F1EE7BAB40854B55F5911EF98C554E4B2DB620CB5E8460B314B7ABBEE1 +8694E7185F8835EF8D03A4E0312F66487B3994B7986A2279197F001EEAF5F78A +036E86105FBEB00803488CF2897B88EE3843BB129D7374EB97A3449553CD8270 +4B0EB70A137E4959F501A412815540156AC4B0B9334CF2C11BB6851BDD8BF192 +A2CC1E405651415ACBDB697B719B29FD1BC03ED4332F0F80D6D43ADE072361A0 +A553FFA955283BC0824983DDC29A2D06690385935DF7F49393B0B1373AF05510 +AD65CB930AC8B12016F9F0BB521F7C8363E971E2305961546D05F5EEAD0B8DB1 +C2F2A3EBDBCDC337201ECD64078335D0FCA727506D02726A1AF6D24770B97519 +1C20F76D668D0ED1F47EFCB8D869371DF15D36E1E16B417F667D057574DA4C87 +0AFC9DBA381D130F9C4330568581BA9806FAA2051B5DC30DE857C30322641F10 +4F43DE3B1AAE2943365C54951719DAD19997E6FE3ACF357B27903482513D21B7 +66D56530B33B1C2FB8B5DCFC2B4B82908B71FCC1E69EEDF1B8858606089E4B00 +9838722E7BAAF05DCF5599FAD0B8A347154D46A86FCBCBB880B657D848467628 +5F7F6DA99688C145D4882932BDEA2B6468B24D4CB2F8D01C4CC28E4294EC0991 +B31E897D6799FB7C19B6AB508DBCDA407B3C75F1D99E074247A41AFB7CD5E803 +81E1920CBC206C8FCCE78BD758DF4143BE17E8AEDC3720339AF0C748651DC4B4 +9AA7F51CEABDA3D7B1932195F2E3E91D4096EF1F89F20051FC10A562CB14D476 +0D07891586DBA34D2C3BD9D129B072FFD5818679CEE6F9C59A65D1904D47878A +F871CA558D02102F63C327D6EA37694230D90C1E1CFB309F60FBAC4B913A32C7 +98A3DEF61E1A98906EA8DEFC0D831B575C7DDD6B5BDE06689C5EAE9419970B3F +BB31592910DE36F76F469837D28E49C75B7798D02A7B1AF1584C468E57ED154F +2911826BFE65E34ACE090D211C0405D280C581A2A1B709385B88D9E0B1E152D5 +1776E8BAE8E6285BD6F4244410E67DEDEB08853CB946E209669955C8A135610C +3E738F670A1A5077B12B313E86E900BF0CEF7AC935081B7C64C4E0FF258241CF +E5B1582B8077D37722113410EC6A5B093DE56F023288C895D6D55705BA5B5ECE +B14640DE288E2229A58D195FFA8AFF15BA927747C7187C947AB58DF6D610979E +6EB12BFB15193F7F69F12E81771C8708721563C7FE5B0C35FA969B194947380A +F14218019901AE75A0C29140CF3B51370D15CCE9ACCDF2C02B2729316D4EF5AF +4BDF15E992500213B7EB50469AA55BDCA54BAD11DC029C33A545E1F2FC3FF4B7 +FB85B7E662535199A890E0443FF654C3373002D5C45F242DFDEC2EC840A8E5E0 +072F36EF12305C14AB2C2E716C8D8442D4B5BE11D5EC583FE312296ACBAD454D +474EBFF4BF53E2E7C825292E210DA06ED33498ADFD748C4E194D98C118955C26 +917F43DD6F40E084B8321F507835239CD827F3824A8AB29A75BE92FDDF256F74 +6D5C86A45D90356B9D25154950982E8F5F883A421FAAD881EA29861D6DA1F0D4 +BFCF255FDCCA410963F9C9FA7DA986B7D24E93EF23255ACBD8B1EBAFB0EF2C26 +320FBFAC0AC433092A27A5AE85B3B56EC9E5D8D19B5E71E4AC556E4644E66664 +F618AE5AF8D8FE86A0064EFB9F8B01DC9558D281C9FFF9C07BC7B002DB51B991 +870F52E6780763BD089B1D7EEFB99D7E681A9D94C5828C8A08FE98D983A8BA9B +AF4130F6477A099F5312667EAD3194AACF92002B814D717FC3DDB705ABC47DE3 +E8A909519EA78A927E320A4FF4A0BA1A48C8DFFE880896A6D2D841291A146323 +48855D713098305A217A68111FCBB09783EEA4B56AE9CDBACED002DDA9A0C614 +F6DB84343C3BA5649DAD4B1958B2B8FE35B1E889B0B520EB7FB5695F16D1CC02 +56D689E79E2A6188031727B30E5F8BCAD03A086A953ADFD951D4672EF1EDC13C +B13D2FBE8678A22E2EF4B2BC7BF7911CABF3742044C7FC77F413673DB0863CCC +E5BD5411DCA1D950E0F49D0C374B3663E2FED3D84E3FF8089377081DA84298E6 +B003B3B495E00168BB085A613AEF71E302F7D481A5F497A66FB01A957B813E81 +1B6BD22246BBFEA8CA8375AE8C489F039156BE4513B59F476E4D498C0863709B +6BDEBDF3686B2890B28E3223FABDC040F660C33449E17688BD7227EF853AA642 +10D51820FDD95A6600839DB507623C5D4DA1D5D065E0C3D5C01B95731FD32724 +9C9BE494F1975838B55B0A0D22B1CA739995B0F695B64BF065778650252B780C +D30D0171CB6F2A2D343854A3C48745D92842712760081D2D848D3EE6728594B1 +3E0957546108726CE31F8E1431FF71A4A0FF6459EED11B86C7DA1F31E6F422F2 +E07B6974D4F9D817986D962099827699299035A87E124D7CD2721EE5FB89F014 +CD05C467F05ADE99150C918B168CFA094A5C08618C6D25A98EFEFAAF0DC9A6C9 +E8011BB61AF83216665FBD4F4F127F9ED974082918D163A4D2236CB72C46388C +98F2263BA71BCC4E6AF1E56E1FB5FB82279C8732CC8806C10DEEF83306D0DAD8 +DE7FAE0570A198165D6103ABD2ED195ED2B6567B2304C6E2FDE688FEAD14A781 +F46288FC4FB52C398982A2C7C994E1DF9107DFA77E597DD8DBD45CC1E5A6817A +BE0CD695780E8434B5F1D0366E3AD523DAFC069C48A86C82B80D9A52D0849BE7 +D6233D2DFD35EBAA2B99D294F085AEA94441AA9B8919FC131839BAAE88EB1EBA +E8F6D2C9F42EE103844D52479F0C60F55FE74E6490793D9C57908F020BFD9915 +A591AA3CD978717C43EC497C954ED876CCA25EC67059906560D72586F2EE504C +6428A5F95C1354C69268A6371F05029340A32BB6477A053349D102BF14A4ED23 +28A15CFF9D1820E68CCF2C7F53FC830929422A718CE98FC71CAD8B0F11DB5E41 +20CB0A92E3F3370A0216FE0E9DB211A9909F11699B985223C59D2CE7B911773F +C1B0C9349229B72D9F0A4C553C7E808181A5E0DC032F646416976328E1F0D542 +88A7D5688D0B970033D3425821DAAABE9FB344892206B95E04E3C00B666F6A3B +B51636686734CEF19C3264D6FF860CA83C482DDC2F0BC5B5399CD980FCA042E1 +88EB1DCF91A4D926862E29632F1921CF9765A452764F67842DDA6AC4C3883034 +57FDC09D3E1C21A09B3E8973D757A235A790B00D04ACCA191C09E1C5281C9585 +356BE260790E2CFB437F107C96C42BB50428F390A9E7BC94F16C7AA2BF6B74CA +554F16B84ACCE6EC1473EC7D3A435C530ACF1D4BA61A91B741BA90626C18E752 +1C65734D91B70BCCC4F8360B026E9B2E985E7200D38C78F05D9A410F814A0C52 +1FB74265C9A5C688A7A3362B7A5DF5C60547DC7C14E289381B957450D55BB988 +4DC9DA77CDFBFBCD502E559095B97314FBDF3543DFC3F23C0AF85B5E2F81D240 +1E98DDE8A6DE8B522C8F1F52711FE8B0F3A45ADE77FA6195F2A7DCBA5479223F +430943A3A51F292075291986492DAA0D4CFE3376D9EA0855979B4022453A99F3 +75C64DE59EF04B890490B3665EC515CCF18D89FED890A5B8677A935DB8F608C0 +432B8AA770B792A29C1007111A060379E1348114F95C7E225DCEBBEFF13F7962 +D4246CA015538FC832BE53C3E9B70CC1CBF8E09F2CCC023AE35E7E89F7803628 +E0AA2C3B7035850291C482E1F146977B58B669BEA35A80B01DAC10070178809F +B0EBF59B2B665A112B9DE60C2257132F7BCFC2CEE11971E8F42EBED74368FD8F +581044BA5486334EE04D1063186038E7BAA4D1AE7F287850DF97D528ADB44331 +D86F12AC17CD4241F72C38C460BB788A05121EF5D9ED283D61BC009673F0A396 +FE67A4E516B46FA1C7B9BD37D974AC8B12D71AD9D3ED6411ABD75C8875B2875D +E4F790322D120D5993DE256BB7B4ED36340CD545EE7FD49FCCF13454EC5D07AA +01FC4D79B52A977916CEF082F0FF0DF5FFB4E64A8D0B25352E5D2B4F2D75BD37 +5D5C0436249A31F9EF7498275041840ECA90B48B5909B8DAAB8CAFAC804D860D +B6F53854C664F257495256B5DBA514BEB2689CD18C799992D38EB4037C06216A +AA4DD8276F6BC9160EE2835F5B6D4F5DFA061DBC9D174E411E0C7813CBD21EA2 +0889C8B30AA980137E48616690B5792D0C735EC71204343C2D1436D9D50882BB +750BD72D25045DD71486F95DC58EE4F241E549923C5C69D3976073DC378F9CA5 +2548A3F613AD8F6BA8147E3C90AF2313F59FDB38917A6ADAF8498468561F49CA +66CB1CF2A1743F861C50F01B8FBE7F3F77333AF1285CE4A88E00BF9A7EFF8107 +DFB9C648BB5AA7969806AC8225ECC3E6BB39F621AF0153B5C580C25C2AB4CB22 +A58E5CBDE7B1B36EED74199E5A60522DAD4206D8B0C5CC03B07DFAA17FB0172C +7015C3A82BFDB4478CE6738D5CF1C6CE312ADF95665CE7BA79EC269C355D64F0 +DAE901032FF71CD16FAA2A9278E0EFA4DBBF8CBA85D2480C471EFB2CC8967C79 +06B1C6E94931C175E7ACB314E90EE2830444DDF14677FAAEAA31A1557BA35F58 +5B9AB08A51F90301B128F18E1C3224EFAC2E2EAE06FE76C3F33D0302534B27B0 +552648DD1AD49214C5D6B13F6DECC0CB9B8BD94A35F727AA9A71C33D368CE037 +AF35DA7E3F614770852FB62006DECA4E4B3A6112DE9169A2742E9094CED18AA5 +245039EE88699B3DBEB8425F7D398D360D6B488DD126C85EFD2E4FB4E473A751 +137683DA5B97CCF484BFB10D483EFA0FD5560B7E8BE00B5171431FBB91EBB961 +E24D16AF01511B3E9B7851BAF866F2E9D84192525D19A1B00599152C8537B692 +B1F61C1A74828612870F0E1B5A5EC17580A143531F4A3F9C463211BC19E3E969 +992AE7AE58282175C08AA5AB9D30AA60F5647908841B04192C71960CC3BE7AC7 +E8F683B4DE41B4BE959640B192AF29830206C6E14E8EAF88984C1426FA420284 +6C4B9C30CC8A468D72D0ED54B7BFED6FE9E58BD68A041BEC8D06F7BD599CB4B4 +F5A4C0D0627BA111B6ED6709EE8C6D1C5DFD2BDCBC72711778FD935F7CEC3AD4 +492D2632BBE5509646EB41264C0A3428AF298951924BE58E0D110FAADCD6ECDC +120DF3DD9D4B176CF73174B4459396A43C5730C7BED6B1E29CD1ABA5E5F553D5 +507EE18E885BB6EC900FEC3FCD26320965DCFDD1C6EC90F7E38CA5FD221BE05E +832DB6EE623E96C2EC5EFF288396072F9288B42A8B2916E799AD04298D9DC975 +A97C3D3BCD2AAC52AA2981CC5EF5DEDBA70774A4E92675615130750B3E0DD995 +910F21AA82D5F08B242140D5055CD7F529C0B48D8AF2E78C2E1547FA61ABF9A7 +2CA9A52092202031797AC1008A586429159B55FD10C057442D211F95768C99EA +E8CEA00B9D06AB12612DD54F895903EE120C7BA60558C6E9C2EFC5812831FBF8 +6840369D28E7E1CD8947582B494784B67EAF2336D298B10A441FC26948B215B2 +6D6AA34CF8BB86FDFD63B51C6F3A3C129CC73D365882421127DAB08EE42A76F1 +1617EE023427A92F9CE1FD9D19F21768FCC9B7042968A144019E8003A7880E21 +B530C3B1241D3DAC963DE5963665F964FBA707D5F84E4E5266E58B9BA52FFC0C +1CA09F202C6C226BA6AC65DEFBC7803FE36D5DFBAEDBA30120D3745599B7AAB9 +776B5357BF105735353FD9A6BA6B3E1A75963FF3531E5327758236AE95F3A08C +F449CA65874AD04844A513317674EC23DA8CAE33F78005F7FE81B25B8CC342ED +83528BDEFCE1FF27D34BC46AD697C6CB366E08CCAA455C31C9747E9556CC0B03 +DAD34EEB68EA6DB15924980DBFF244E1930AA7D07B2CB60EAD2DAFB59D9BFACB +E40AE92FF3A9698AE84CB0328E699879C32CCF962E2B848A6F7FF060E52E90BA +99B69BE478EDA450EF8A01DBBE0300A06F6A7DCF6C409392FE554D9A2972C70F +61684872862881CBE305F0CC179185589F507C35B2DE0562B465FAEEB2946B79 +87FC29756E29E7F085C8D33946558639AF089DE24CD27CC0A4FB07CB3803C83F +C4BE0B6908DE72D60677AE1EE03C0D11AFF3A15C83B173BD6AA9855D55D3BD0A +D41ADC9F7505FE499E34ACC2231C41B3187F017A7316718E577481D22E6E96E9 +302664272640D993911A3E50E363A6563DB556E660B7CF8545BE11B77F7D00BD +BF86CBD8298AB1948295BF7F0D31648924230FD4D3FE4C329DE2E968C40EEF5C +572DC37B2AEBFCD0C91DEF30ACE0B9EC95CC2783E9EA759F2F395E258DFDA01F +80A958214AF8EFEA168F36C8E570C9314D59DA9E7244251C0A6701288ECD7472 +F21F90B8B6CF9D690162B7373CC7E63C634C387DDF0B57B16014275309AAFF9E +117C866FB1D6971115AE152142BAE76231B352134D5A278768066402F999D739 +F7F1C7429B47905B9108A6EC7D2CCA6C0BED17DCEA84B7A9394324BA326D8AC3 +C275E62F7C2221B7DAE705B0CF1096F968FAA7B97F4725226B79D2B9076D55FC +8F79C3158A9384ED7379308445979DCD9FF5DA6479842FA46FD4281CE7C389D4 +F98C14FD6E83D27C0B02C7A120C676FDEDD3267D0F21C3536CBD0A08140D3D68 +1885B8D074A7642D51B82CC8B0E9551CB7B408BEAB7B01E9712257160D396F4E +C6EDF82A6F1B0CE3EA01399171335BC27B1E396E41D12D948114EEA12ACC60E0 +EF1E6FE18AE099F8A2F49AF5456BA11704F5B99378373371341CED9DECA0DBCB +5EFEF310191E3B2D13FE6E927177145C0999E25E47A2996A1591BB471640E8AF +FCC1427C983CECDC5261719413590B9E2E6D1E647F99018C116DC9C82987DDAD +25084E3B3E4653CC0514D17DC73091C42F7AC80DAF5DA03C3A4C7E91BEA442FB +FA0CDAF333973F227282CE74CF72E5684B7899AB6633EA5209EF7FBCEC8D79FB +20200C8B45747108CAF3CF37E576F8FEC755CEFDACC6B6F250BE2A83163E4A87 +EB2766A7B9144A78C7617BCF96E916562FB9FB9D1D00AA7695FFFE941EAA8090 +2E2B2DBA3AA1543F24AB2E2A11F8EA83238F80D5328776F8B18AECFE9AC88237 +D841BD400C2C5417B155807E94B3B8BCC7CFD0C4F308FC38C3174BB4802CFF34 +9DA718C1BADA4C3A7C703D76BE9FE885F86C2659FBC49834E32C1DDEB46F7F52 +674DD49F62B2FE5D1376C25B6E250D219CD5435C8EE13209A5CDF75D6CA4115A +0A1A1B35D82687A87E2345D2F945E28E9C8E0652CEBF444976F9E5B4DD545EEE +457EAEFF15BB8D5E39E0F325B94FDCDED18D6B70B4EBF1579B41212C6C9550AD +CC1E0EEBC6B9AE32240C6F38FC47F9259B04301E65ED1BE0D7AC5A8C7A6C19F6 +357B11E1B0AAD984299164587DBA6DCA468475CE4A1167979C522257EC3FDD18 +F24CD6532E87B8060E4693BC9FC01682CAB9020E2132EA465875E50C0969C1CD +BAEEB20E7ADA891F6B6C255AEDC2E335594CA23F1245C9112FBF73595432BC40 +8740F8B65CB80758EDB8556D0B7A97251483CA2BFCAE33A006F8F578B493839E +5FE559BE96D5B46BA7281D8EA05D68140D616611A90F96F9A205C985387B0503 +4986F0D541AAF4C5A5A357E4E8ACDF1703E0941925326D792E23BD3C0DF71184 +DFF5B7354FC6366EC4C0915649EFA251BBF7C5DD53878F409795AC710052F014 +766A31EA5275562EDBEDF7647B0A02B8E25C29B36CD1D6F4525C44A583C454C3 +86100AA9C795363796433AF1774D2B10D5C4B19B9AD0A0AA2C563D04304BD583 +B4AC018DAA9E22D51FCF9F6931A3F8B9A25E74A3AF8A5C4C8342D71F424DDD46 +E0C11F17B6187D9C0F08E9E3B98F96274540EFAE7EF27586F8CD1C3B3B241608 +CD9E5C4995B95BDB0AD3FDE1D388E3C200741CC02E1468636CABA978DD6AF03D +71BD64E59530B4C5C85636E79B44E7DAEFBCD41DBF4A6E091571DD61EADBD0BD +A523A38AEF35395623AF724518CA9383B9FD0B8E96279013311DCED20F02C44D +6570C109DD6EA33C8B13AD8A159DAF45EC389181B046CF2F1AC9BFC17AB3D8DA +07F9854FD46FCEF80BE718F6080192581F94F9B0136BCB0FCD92FD5D30F53F6C +106FE77840C3155CCDC8511C67A4511473D837EDDC8C5F271FE52D83B62704B7 +849AB14673D37B052235BEB5B4352370EC61FDCE1FC1024B9EAB8996645A84FA +BB5C03EB4701E7EC1AEBA065B846C155A71BB6A731A371A521F140438C75FB1D +C7F92EA55562933CBC8590604BF34BB7EB44F945058EB3D44929CC9341BA328A +D2924D97A9517794A198A70F1F47C683BBB03E1F3726A5F55A83246B63EF8C5D +549064563D4E423D657C65597085525629653A7A546FFD5C93E58E1AF521B149 +C8CBE67E7D1B6F53CBBAB318BB7291381A01AB0B7F9198D304A02119C4DDAFB8 +3D7929FCEB28ED3B95919EE3ED44591984D9E053CE64DD75B0A4695432243E66 +A9837BB500D38D1A004B586D39934F9AF66E6A3A5FAF9FB7E7999EE5A430A3D2 +F22F4D824685C51C287A2E692C940DE1AB5EDDC5A753684C45DEE8FB39BD0D93 +63CE8CB54B3765563E12CD8724499B97828542FB3DD2AF1E63C4BD1B73FAE499 +BF07DCFE5E9119FD1EAA6343AF91EB9944A055739F6B02C66505DFE8F6AB6923 +FA5B4BAAFB29F04614DDA70DA8105049D278C4CC10E2379734E9F49C0E6A6458 +69A2B2DAE2723FF405DD5A2EFDC3E9659B38D544F7A8012A922D43D7706D4D91 +6BDCA07FA412B3B9FFBFE13A2890B28E3223FC1582B5C0E6BEB99E4422C01912 +C764B686F8C7692A4F8117C16B810D4830D830D0DABE025EE301DBFBE137FA75 +75EFC7BC9927ADAF8C61D9756A78D4EAA76CA44EB41C89F3ECDC350448839573 +7188974BEE988F5FEA5AF6530D0DFA664E30E26944220E2CD8BDA6BCEB6C7283 +6AE95E5C942182AB611285D38B3AEFB108350FC57042E7B5F2E04870F6572B26 +01547FFBE5A133B549A2054E03102FF6F0D8FEE52BB9110D8C05F1F45B49615D +4EBE48F5FA88A0016AA1A267F1A364F82435E6C84A6165B4620BAD2C7AE76BBA +5C3651E885B6D6504FB3AAE54EE5D7DF55BC7FE47240E10C8D9673FE2691DCCE +DFF89925CFC5C8B30DD02E62A1BF8586F4A1F4AA6106FCC26B39CF8672FC59BF +467B6A746AC7C500AC1A9B2FB504EAB292E679AE1AFCA58998BF5AC587D44DCE +78FD299609DBF208E96E0FD6BAA853677D7EC9B53D7DB5B145F409EB888B656A +EC20C59BE732D6518A53702D4BC53668B6C9DED0F3942BCABB96853DED6FF3F3 +B86496FCD3BC73431EBD722806CA4B9A049A58EBFD0BAD89CEAF1BEAEAA1AA4B +17BCC958E7C13721FEF806A967B12AAFA8909BB1672296E2823BC2C72D57F5D6 +25228C2B44BD3AD55B080CD2FF8FC0A3D0A82B2004F81FF263F3445F48395915 +EDC11ED538F0F86939AE26D502AF7AB5189CBED9F8B4CE14C413A2754F250022 +AC168CD5E13DE00E9BAF2820E26B82BD35215D8D93499BB9DB269FBAD0542367 +27D3BDFA280E385B476B4DFBF3D68A08295A5538C726B4D5B7F038555572D81B +7651BC241848913A1DB0BB438138B428A2F6BEEACA8CCCFC3B9534BF2679B9D4 +AFB52247791E439AAF9DDEBBF58A1EA5FCAE6285563D80DEB8BD0474F39552FC +FE0468CB1395A056C4BE70F675D496910DD180408B221CFBE92AAFBC7AC59238 +83CCF6FEE0731ABAE42B05FB70CDF1A31C3A8E876CBBB97ACBFE4003BED0D0EB +EF5747914773001D15E75C7E00F2E580F4BCCFA0B1EDDDA188C9E113474D367A +A58DB1BEFDC54F7DB79955E8914DDECD64A2F09D9BEACBC540F8FCF9704727EE +F043C756A23824EBDE5EA41927AC3BC9F5B0F2552DA7A34C74DD95F59FAB4A2F +ED9CE1F38BAEE47502E92CBAD85F3DFE91A020792E7F24F4EBF2D95DDD232464 +73D519525602963F692731409EE7F0B27A5590611E08C8C0E1A6FB34C62EDED4 +A8F0E01A175583790C2443EFD1ACD66F22FBBC62C6BEC006B66DA03FDB576DAD +8A569A91A52BF0F868A8A589519566F2CF2EE2D28136769E78A5C25BF1CA152F +6F167A773210743F053082C4FD9339FC823A6BF9CEBC34D15E5DF2903E3287AF +3DF0FB21BA8D6619054D3AC99E195C8D00ABFAA687A5728683DEC945EC195410 +3F55881C88417827C6B8DBD142D0E8D87A55C99D35257ECF5ADB2A129C0120B7 +722CC20A25A9D6574E8217A7C294028EA0BF2233265380EA7EE65A72DD6F9944 +1DADD217940B2404E4C9D0C751AEE7895F088F2B37B3D6B872FA3BAB1345E7BA +34C9A46CE7E02ACEF37735C69BFE6A2A0BF82FA885EED1ADAA9536982740B30A +E65FF41A77C1C1888260840594A8212F9DD3D94DA0EAD1D8A9FDF740E1853D4F +F3F61DA2FAED4401056DA1C51FBD334AEBE7CA78A7841E77B3649129435E9AA8 +D13F6A0D3CBAA7266161524D1751472AA9E06839D169AE475184E8FDC9ABEC57 +AF56E86E5AE79F74B1FBD276700B71D5B94E2B10203FAA11C1548BA52256845F +3F2E8B96C2E7201D5FE90A001E69EA5FB03C8AC06D017124893A413B5E9947E3 +D54B2B347D308A74259F155418E202D933CFA7CA9DE3900F93FC8CA00FB20AD5 +9BD541AD444F8E194AA8CC9A62E5C865FAADFA4BF3F887023683D9437E626EE5 +CBC857D99DF780B5A32B401A77A210597E5353D19FD21D6BF935F7708D7BED58 +3B1F9FE81501AF57C7DB93E094EE769F5784E49C935812AD051FE81BDD98A133 +571044C99AE12A54FAC3E0DB4906846871C8C8FAC6191DB6A99B545037A4B619 +4B863E708D7FA965BE77B49B9DA7471032F2AECE3D72DD9D5E944A4B403C80A4 +6F92701B8CE905013807F682F4B729FEB26A248413954A6EF4ED188800B13719 +5A4DF4213B477A704CF35786D174E3E4A0850EB9AC02E701CA4270B6DCD9659C +451B722EDE84917765AF40D48F463AF5A19B3E7B6321EA0D329043D7770D3066 +12D375DD427C47DF3EADD3781195A1B1A62A91656C19DB0DFE29277DFE7D88F8 +7E5E193B1D762BC5D3CBDC9B21F5954F244D365B76FE405C721216606D644D44 +361B4C2B70956BAD2504489B353DFFE8505DAAC5369650A0642A04E77E197577 +5B62121C9DD9C4208BDE9D4D8E4DB3680FD2726E4FE5339CFBD0B23C19DAC577 +7833503ED1310E9575D8FF6F8B61ADF7DB9411AD4C15FCADCD7B5780B54EBAE4 +8AEB4FC4D77E4E88DFCF68602DD867563247DC0B44C1987DDE0B7C833FBB1BEC +DCB23458C7C6DB635F9C025870649DE125319475804FAC972B11535AF1CB97F7 +B868EC0355E52AEC8527F0CC3E2DA3D5FB28066BD935A6E8BD186AC233ADD40F +BA8779FDF1570F53EEE2BE85997D93D135B0FD0EB25D58F5309529F24EB9BFDD +5D7A424382B822ABD1002D16634DF8773089D1DC5D6986643A2FBBABDD69221A +28B3924F716D9E501BF2B86A6420F1C8B4AAE9F225710DFF117E0CD2211F9576 +8C99EAE8CEA002581E1C5A4746CD33CBE9818B9EF5C5033D4DD69170D3CFB82B +97FB65955BBC1BD97582F63EDF4F2C2C88E972B10EAEC4F29C792E455F835F4E +5DBD8FC6819913CAC6A8379EE7D87A8388A40EAFD22AA2C64B198F24E59A8110 +7B94DBC651E23786D1D3758D763586E7B93E6B8BBCA804601960BD18A435BC1A +E23B20461FC7EE162BBEC8D19356F179CAD3E02209C9F0DBC8401623FD7A4DC6 +0DF1BA781A06B58C38C5703D8C4757B0F181388ADCF49265B094B5C9EBAED59A +384ED1F9777B6E0088B5786E7917F4CD6DFFD6F9BA04BFBF87D7CDE1BED4ADCD +D957E2524F347BC1C7462AE367580D62A1A29FAAD59BB97128255509750AD501 +BDF6EE585AC367D2F6C456D164AB482B687E017901333FA6E246DFDC900AAC08 +C5FF5A66AED00D54E0B792A3B69956C30E74F651F4A3453C953A4C91FB35ECDD +21C3CCBE906FABAB6A8B831B63644E642EDDB5765A521C91F96B32977B4BF11A +F9C6C6654897AB06A88DC601CE3DA2013F9C81B8F8D46486D63640E04FEC2575 +8A6DE3967CA039E9A5E9E519A2FCB73500DFC7FD7A5999D7B015482F5DB2F49B +161E015DD06E0B20505F30503EF6061B67B9E50D9A56CC89D79B84E8462D20F6 +1EB9574FC830F54155893177CFC21429E8C79B6855F3BBC478D2E71DBA7D3CCF +DC0B7D9F03D7D22CB03DE9CF86B08AE0E90C5F7B3D28AE0874EF011BE0E24934 +194DD7462DA7432664B63038FDCC6778918F81A19055EEB54747359A918CEA4A +D8DA1B89771A6C29F9B59BE5D76E4FB7BC2C470BBF11085EA05A0E10A56209A8 +69F642DD8A886D46D4AC030715A6133C6903048F80CA8CC9A9A77E0255CC262E +93058AB45E96E0EE3EE6F8CBF32A4C5007AF7F48905C54AAB2DF1A89C76778E0 +411D2F84078D06F8F86FD5E647C80B027B462197A88C1E113B90E82875230FFC +3837224914B82C56FE0F690FD0A427D2A45362087E893790F18A87ABB2E339DA +3F03FDCA050EB1E6B4A535941AA2FE90ABA712CCC0EE9E5FFE91AC365093F01B +A9E1E3E1A4F748D40A871276B9BC827CB5674D0F7BDB1C51488DB24FF60AF9C6 +9D3B8C5C0B2D0BD6D2049F2F0C6D71710DB4A2D53348FB09971CC5A9F32DD6E5 +7C328B937A24BC9380415B8A33902EE881E849DA85124EC40EA62A99967FC41B +4A5B02E1EAD203BC15CD2633CCA616311D5E85B0E8266DF974BACB155B06600E +13B7F04A266A93D7B3306D16D9BA25F80026ABA1BCB27FE733CF8B365CF72E2F +8CA91B7C75ED7CA335E007BC208850A7810E9B0244C871F2B164331D773F2171 +415659FA51F69D5447893A34E41F90C585E0A007BE79694E771D0E68AFE2F77E +6FA4E17073E0B168DA8CCCC2317CEF2174897932A77E7ABE66678BF465729B9E +EBE05E1A26117A12E0479D931C7E4FF8D16233C75B47979509A80E7278B53BF6 +FA2C973E50A70B6A38B7C283D623E1CF3494E8FC5290FF6E609CF2A969386F22 +CC0D3952BF0E230FC9DDB8A835BD7CC2D8ACFDC1B6B67463B18FCD3291A3C713 +0A5A8C0A5EDFA50676B0E6E86824F23F6A094E0E4E759F0DBA1C84A6A97F250F +02FC7296485E6D35BC212DEF18807FA72E736DE5C1A321F5BACD2E5F9B12B521 +5CBD3185CD032A00F80985F672D45198B47C36AF06A06E4D488EFAE859AD3C39 +067FF577FBB7B6D6A865FA095BAD166CB39393A954696256F303310B28283ECE +29ECFDD870CF36728E2BED0747B6BA9212E2F95435D0B96E8015BA47602F704D +AE596B0D36275572FF94CA087F68CD4F0952B8E6C205F41CA11351821AF067B6 +EBFF024D01CDDF65A678C22335C15CE37560B7410ABA848F3F643059D377CA8B +8BE16D396CD7514CDDC0D40401316AC08593E372214764D154037CC575749BC6 +3E70942582FD0A2AD8EDCA219E82FA476AFE29D866E5207BB5BCAB18A01C215B +A9C4DAB4D96A521BBC16D2E5CF251B9CA3CBE65C1908993127D5B60A070EC13E +524C472189FE703A231A0173E70176616BF3D988BD21ACB221C516EB60AB99E8 +CC76FA2ED0F576E044128280AB783956B90CA525B81347C783414BF26E997F79 +091333482B57E2DBBFF33B74131CDA654D8B3E88176321BE0E25FB0C36D4D318 +5B6B5BE30D62F1E98BA0392E33A94FF966CF56D8694D3B0DFE2065732BF513C8 +2C6558250A13F4E1C6EB7E4BB8BF25F054529699FB571707AF509FF1B1CEB5EF +652CFF08BAEC0D1681AE7D087C55AC69A42448560771A0C3140D9ABF03619A93 +6A8E5DD078C4BA13C4D487EBBDFFEC34672390F33E7449FE244DD67C5F2FD8CF +57F1A22B26532B4027A6EA47363D16D297C1C40890B9D85B7B732AFB6B595CBC +01F32A03F1811D69AAED03D131320AB53E6C72B4AF3B94B512C819F809157571 +259146002ACE0601BA1F3C523B37A8A9FD6212AE71259ABBEE59938EC49B6001 +2422667B2318FBEBA14450CA34506CF594B51062B6A0D976F70EE1A3A13740D5 +4849F019E5F6F6D0808E7343C214B3BC3C0D7238762CDDDD2E8CDB5B2C485C2F +1B5B10E8BCD87BC647E6515411D33F5A643B126F1D0F7B7D3A7DB3E630238B3C +77C506568309F7F69EADD2D910D68E8101AFD04617FD675C0CB2D9B1F5C45702 +5BE5E62BA3FE7985F97887986F7B0FCC587C9262A39C420A68CB4B7546E38333 +2081DFCE71B3AE7304E10FDB1798CFCEF7FA6D2AEE5B549ED6A02A1FC77C6B5D +9E2BC37D8CA884205B4E9AFCED41E0B347C91CC85F8A073A0284E7F38F3CF4E8 +D998E56A4835DEF793EE4067C8B584E755607C79217945C04577219C6D1FC125 +8596B86A08CF1CE7F0764B129A4B6836650B7B64012CC1EEC1745A5E5EA249F8 +1B2DBC328D94D9CF4B20BB1A1C4605F245F45D7BEAD25EB97889E7538A93016C +1C000A43AF0EBC2FA8178F920D7EAE27A60129B76DEAE5AB7230743427CF7141 +2BA48D97E13E70F3E0E5231E60654851E33EB846A71BB1F7D89D044674EBAA06 +DA5BB9555DAD6DB074310AF1F9F8ADA2EBBEAA52E923E7C8FD2D6824F0CC04C0 +294A734837A0ABF56ABD67A71926215605088944F65079933ED85ECAA624374F +3BCF62E931B1F8EB78DD194FC58A6478FE3967F966F7AB4355236D9583A4DCFE +C6075460550511AFB16C8E25B49F114803319B8C802F3CC16C99DAC97FC6EC18 +75564EF6906E20083A406EDC500DD2A4101F36668BFA0BECB0300617B02E6A98 +ACF4D45E138726CE7CB2963CB9AC186F8576BAFD9CEB1869240600A4A7F8C663 +1DF560421225CE8386441849361454D585017E8D99AB0B5FC22E54CBCA745C17 +C9E13958371B6A39ECC4787A66ED46D23508BE452D01813513D68ACB6D50E205 +85A570B49B51F459FEA002CB6A76C5F7C4702F4F1DFF2943B7BA0D9D0ACF088F +D6D5F715EEEF1C2661D92B2B34921D33C70C8A1BB20AE9A7E5A44135A2687BAB +7B1FA9BD40EE40079FD0CF1EA5BCD81DB39B51694EB43B76028F27923CE7A8E2 +33A75D973BFA227FB31D7D1B56452A371FDBF2116AF3DF9ED40E0920DF9F58CD +D9A734505C6A3C24A54498E256C771746BFDD7FB10C248833ACE989313015F25 +9ECFD08C2282F3FA0E4DFC78ABE2875FD60629C971672254CC5E7984EB36767F +787E241CA1B7BF4B8050083BC9D9A4FC7CABF595E041211EDB57AED727A0D200 +D4986D6DFD43D41F6F02EE395DAA26957E85AFE184130576C64D6FF3370AFF23 +2AF306282AA8FFE8EB5F793EBC46D7CB82E8F6D64CFD1781FC9B951C24EAE42A +33452BFD6EE1866CF3899F893BEE17D77CE813ACDA88FE70B5EE00DF2FD9795F +5D9E773DE06489077B2A400057DAED0014F0E59EE1AAF94D9324BB1BE8ACF36E +1A4C412B9E7EE8DE7CADC520F067B3F856B87C31B3EA87EF840C4114C08C601A +EBBC483F2860EE3F7E556C977A12300CDC4C343D6D67B2A24282374858FC8953 +DDE055A5A41F7F368F2966985A47466434AE6984933FDBDB98825691F4266E75 +055C059E31D8982536209560F03027BA47E0744C5EFA7FDD580D4A5C1EC9AD87 +E729DA3C00944B1B32F3E50867B914CCA78072A56FAD89FA5B6C09ADA010379B +0987B999BEA4BC3F748F015A92E093100E3C0CE07C0E36FE5E03C09DAF2F1A2F +1326E9A4E5CC007335D8946D761992E5DC230EFF08A9DAA9B3E2F593E475E745 +C16821B2EB470CF0EDAC5B1A1A05A2EC70E78BD72A03CDDF0D4306C97B6CB37F +412412E65A2391F011C115468F8A6EE312039E2C271932F7DB5F487A20A50617 +A0A12E30F36CDF36D9451242B288E8799F83F538022AAAE3AC6388FD1B11EE1C +258C7DC64BE3B1DED763ABED14CBC67F375FD92DFD701B116B4819F45FBDCD22 +773B168CB84791280A65899427AD0F89C609E8BE0559DEC946902F942129D52F +02B9CC84679A05C9AE4194B0A8066B9D09CCF063E0D9D3083D01E49615F1F60A +9FDC0681C8BB7A0D87B0B7FFA9C0C96C2B9D64FED2E580055D2D2E9ECB3531B5 +C194510266F79FC04BB3F6E5A229EDB4CED916F29E6C7626060A5FA552BC2ABF +6AE5600D6670CAA60FEE45DB144328AF8F1C0263D0C09C2FE6C5275F3C65880E +066F4563D5A939A2604A865570408F0CD6654FCD68C47143E82BA79864AEBC3C +322DD359723B01432ECED1164DB5CDF9FE865582CE3526F0E273BE3A2661C78A +B03A3E38B9292BF9968A27B2B7B3FB0EA696C456070F43717B4ABCDB1ACFDEDA +0C66DE391B690EE00FCD61F1425541A3EC2EF6F09DE353D5D698ECA7076F7706 +1AA032AF8643B8267A50956CC571339DA2615498ECFDD0A35863B7534FA3249C +CE673E1516A40FEF1F8CBF267FE6C79D9E92661C8AB87B808DCDC990353107D9 +99281BB2D6A757C1FAD127C5DE074F9D228F7EABC1CED51925B8F3CE083A3379 +D3CD2959610481D7A9632EA062ADE7FDB9AA2ED778F00004FCAB42A7789E4F8D +E7E8EB8FF82A7EA0019D7975FE89CD7884F205290A5D3A5FBEBD8DA5CC963B43 +E3EB7D90C55343864893026A8530239AEA62BE12A1407FBA81EF0610DCD47442 +9015AD85F1A7A54068513BF294B3F83EEAAE25BB22B591813E7E7A2EBD51B90B +5101E0305B54CE4A2EE230D0C35223BEF5AEB25C71A358AE55A0B0208CCFF8CA +5183415EDAF2D31BA1A190D0B73C907F888BF0DEEEADAB47A9A9BC755A354BCF +06F8F727550CE6562931C0B94E25CA82923B2B6DFC8122185443F209B0B9084E +D16215D5A2316E4290D7410D0411FEAAECBBAC579EFA82F02829F7F4529AF233 +5FFACA73AE09D56D34CF0447AEF2B9F25A01CDCB8F06C3B34FA77EFF2D298E20 +6492395B34E17616B8D9E92CEB796016FE14EE1CBF1DFB3F19F0DD6726D01141 +C62DAA5F53EA7D712FEAC1B122134879045C8F52620FB015206870EBB5DE65D0 +C7D8BFD42E4D13852D3FCC9BD826953F3746D6D1412092656270A4D3BDE2DCF9 +674C4F40BD45B96627CA32E7A874E9839190AD3EA9C769CC5408EB39D9C2A8F8 +BFE1E37355F58E8966F78090104B05DCA67F9D228DEDAD13AB1B03F2B4FE656E +7B516DB3375A8D68C99DCB47C396B8F6181EB6B4EE5DA16E69091E63B4D454AE +2A12F112737CC67F35F524E46C6006178537AB2DF8149F08E7CDC7AA0C0CB26A +2E480034123FFB83FE58F5FBA21B443BC8183E00F37A97430D6C28CDC7009667 +EAD03818FBC122E20A1886F945C30F1087CE66516156ED6F8792D8569F2B8605 +DBA7924B43875BF0A5A020697B4FAF650E7FDFB7E7A0767AE0F31738EF6680E4 +9453D5CC4B4875DC67B0A0E5E4DB419232B89BCD0BFA6A946D1BB14F60FD6BDF +30D284D8FE1FB7404735B51362CDAD8CD197582705ADDBB92B9786A9EA4993E0 +E92724D4809C2A7E7B99FE3026DEA655922DD6B0925691B6F17AB7118FA8AD52 +F19326CFACEDBC99EF2BB04564AE3E6C1BD8C20686F1536DF152BBC4387F9C01 +B0DEC4B18F770F682CA33243D3FC41A5CDD0D9704B5A891C3D61576593BCC82A +F7984CDC0D31355714B744BE84F91634F552E43FA5ECB262D4EE764A7AAD95C4 +A2F6E0C661EB18F305F49CE45C95825FD88F32929DE669050499AF4B17613725 +9EEA238F3647DCD46B4C082ECE201B85245C50B7A565D90082BB85E85E4F6AE5 +A4C376FEA850B5ACA0F950FA91CFBCAB1670EE9F1AD34BE409B73791709FFD80 +60D1D493613B998062E294AB1A1ED302F069191CEF891048951EF0506F7DBA9D +2F942D822D1E5907F2B503E23CD2D8233BE65426B5DFE028ACD4997792404CFD +454EEE226F77E4899682762E006B576121986E7CA286F231B6A034264A990D21 +C0321AC55BAE3BC840D1C8ED29A7944F4242A3CB7D84BB6607DBA17297F7805E +FEF56C31FC39121A4476512818584B6D9724A895C9655A8CC54BE99D209C304E +AD4F299D19871CF69F2C82F05ADAD4E1F3F8E1E92630AA901609E2C3C1E7C9AC +5DDBB655CE6C754ACDF1D0E632AAFFAB186B9AA2A71377F089AE735E4BE838BE +FEEC98221E0919FCA104B2F7FC2F6D171D52EAAFB847082EA426769E4C97D3E5 +637FA7FA02E88A350D49A88B406EBB8983B05C2D019EFEABDD7B3264464BBF1F +54BE798631ACFBCFB5387FB42C471E7A5A8562690B0072E1E2FD9F325A2784D4 +6C26B41A8B474B8CE1685B1CE1AC08E4626308E59E7A7CFBD3A5A037DCEC70A7 +CE4E2A64FA647316B5042788B672F291D6E9203011F2B69780C3BEFC27C61119 +09F9960BB71B83947F9DAD7A2F74E68303D338E8D2E0E6ADBDF87541A4C89D4F +56940FC6FB3521A0103C16B4A0CD55CF31FDB64BB9391B7EDC6F3D9F331B1232 +77AC271E85B0C222A4387AC7582262E7CF8AC4C31FCA52747AB5B2BA81308C20 +C7E591D2F319542D4A2D2EEF643101994A5F0520CF05D9E96C245FA3114C9726 +A0E43BC9F37F0AE877F62DECA41886B6AB64DBE6A695612783A3330D32C402F3 +AD7CB3C57B5B8A9A6D27E18CDEB315B1B5C2480E6D1F69B85AB61216030FF526 +DCA80375F909F639DFD251B795FA2442D3AAA3E19A9A1C439C62CE1F3E8625C1 +910AAD5C8B2B41D259789FE122F720FB80D0528A6F12D0A12BCEA566525ED338 +E0E46E2EACF0508B26BDED095C75D5978F82E6389138730BC465A3AAA712B252 +3E88C7FDACEE53ABF1E7121D8D438E1A2EDC7DBE0A088790784C66CD2B2C26E1 +2EA0E38B012820D0B752D7502252127234E267CEFF288DE19BE37677817B5C06 +B58EA5116269A46B1D50112AAC529F4F7144C7EA7C5FA6F85907367A5FC22093 +07B9EEE131112E0A0F3FF6E3FC1669727D657EE9969277B8EB41846E7703BF54 +C998C7DC1344031AAA5C6F7F03AD1E6380051103C47C427FD8D4FAD25FCF0BFA +5606760272E68E35A8DC1709C428506A92439B561209AE5A104F7227639D9755 +CF946BD9827B492D3380A9F07344E20B02265F2DCECCCB9606F3D0F03E4CA079 +1803BA561B3B6032EA44D77C91465EC878E7653483718BB64E6186AF97861B3B +7ADEACC50DD4D14816FF0610AA7A24D28A24121081DA50860BD41B863A6B26C9 +EDD12AF0BCDF4446D35EB07FC427E52A8342891AADEFF02AF21433508840ED2E +43D2CF53399401F9E0E72141E3B4EBF0D8618A0A5F366E85101F2318E6BB2493 +B1B54E3CC6376C48D8497A9CC0889F1EAC5A54EAB661409FAB115BC3161B65F6 +3458252FEBC6704B65909541F7991DDB0C4AF91F399736D3DDA075FBFDD167FD +359A3BE7FE52C6F79D8396F67A63515DDBABBC3C1CE2530261D66398900B1290 +22A3C4B5B445481E39D65ACB4F3CA8B757FBC0722109328C5005F8F6CED7764F +875E0D3E8807BDADCD4A150B87A3081666902DC7FD0CEDBFF1DCFBDB4F362FAF +1A135F26793C0C4EF3A24C764CA5888B575E3CA09FA2CA57CBE610E418C07A77 +5FF54EA43698415F1E51955E11954A75B3C43B4D48BDB1782DB2EE9D3701846F +A5EE858C177C9DF7C8BE78ADEC98B6B9379D00F5FA9135FC2981189234FC53BE +94778E86A5810EAD0FE43FA6F083AA4DD5CD18FBE5358F33CA0E025B5A48DA53 +3FBFEC6CAFB41F2B2AE6B6B39E84A18BC221BF6DA2CF147587241616BE425D54 +B4411A27657F583BFC911850A4409D66C810674F61A5101E44D79FA7CDDED0BB +512B5EB01EB8B6CF526B6A8E5111EC1D3D0B3B2144A8CF4C1AC6CE33E84859E6 +31C777DBDFC81FF7BAEEF22B7F11DAE622AE9CF94538C6A757A0B3463B8FFC9D +F909B398BF30B0E23F0292D675DDA10DC444A9942515FC9AD00FC10A3B7996C9 +43FAC4D4E53E66A331CEFBD856273B637DA77BBEBC7EDCC733BC6A016FEFF483 +621EF209E43372EDBEC6AAA01918AC6EFB115E4C5146E5E6002056497B855450 +6B6D17BBD990B397519186628AE2AF770AF25D73A3487B7AF0E42C9DFEB45EF8 +F410A9C7E1C1E2B4B5152B1DFA3A515C297CA55DC38F9ADB502310FFE74C5103 +8998906D5F2BBACF9F16792B6F5C8EAF83F2E361AABCAC23C58321590BE8C4F6 +8906B307E7CB7EAD32D1047AE808283B65C8E9F1F2EB4DAF3D67EB426697A30D +76DA8F5A254D1BAC147E13969E99AC14E8D887D41DEEF71DF03F5A8BC39528F5 +17EF613172EB1D4E6A2E3C17C5DE954C8CDBD49BB6A8D4E6A881733AB96767A6 +7D2A66C866F71C94B7FC5A9B0CFA0520DB2B6129521DD15702FCBA675CD01126 +0DC530B5A8BD9DAC4BB5143BC5445A92CCF5643DCCE0C7A7E42988F25ADB61EF +6A440785B81B6FE0CA94B7EDC5B0CA0995C765DDFB4ED0AF819F566773B23630 +210D26C65E6667419874BBA3EDC5B497CBD12C98CA4B19758BCA778765487C8C +B36688FC1B90AA763D74F478A41271064C8AE58DC2EFB14D9EEC793419BFF5DB +B228F997E4A2DAF1B59690FEADE1C3CEE8B9C39C17D505186594907D5096EB9B +C8EE2B025E505051C2E26D7A362DAA0C879EDC3D5A91CEA1540926C21DE524EB +9C3FBA5797FA68880A1C4465F6C6EEF41841AE35CA1A761133CADB76A7DA2F54 +AB7905B789114DB64F73B1CD4DFE349611607D8A25BE291F9B0C76239B585E81 +B36E1B267294C5B02AD10E756192E663E384777074284815B07EACE58B089257 +DC4347DED965FCC142BC73FFD058745989B5B640D49384FF23DE37F8FC7C918B +4BD7F5E8666C5FDD244DD4687400BC66E078059512D400D7D3120D6E309CF1D1 +88C3D07E73B38BED905320E7AAC647B5940E7E4ECC1701B55FFB301476053D30 +D2FAE0AAFFC81E47B60DE99CE16F60D0A02C2B6A0665C146B2D875B06C796E9E +2F500D629285EF48353C9E0236032FEBE06FDA863225610D06C42D1B41A590B8 +D4D6AE87BC32347761E93EF7AD5DF0BE5F3150E54FA42F8DBF0F20C8E230ED7A +4EE4AD6D060CA65B997CF27072E32CB312B4407F5A0AC1D541336DC5493AE7C7 +4B1B27F4C237C8EF19AFCE1EDB7EAF7687B01E799C231E98CA7BF212A93BC508 +5EF53EC0AEECAD9661D17251022BC06C1DBF672529A1A11B570191E26AB0FAEF +9FB2FECE9F2A2D597D8260745BFF8D23558F387A5F6B155F2E6744A72BD47250 +20F5AB5DE17BA4D8E02C6CDC3D320C07F6B8C2867E37B35A7D97C01CBEE1B556 +6A3C21C3EE4112F745184A0D1B14E6E42C889A0726538310580E14C6BCCFBC3C +4196316ADB7BED717AB0C9EDCE28023C6FD827CBE602E878CB9E9A6322323B6E +B6CCF7B10B908E5B0692C33503970BA3A0539BEC21F5A59B788D46D3098310AB +3389B218FF0383E8417C9FC9EEDFAD906639A8F98BE4396C9F12AF6CF0EF590E +ADE54228FA487A9FB75AF77F898F112C30D819D607248AA1C254F8F1A9B7AB61 +E2356F0E7CDBDAC96BE7075BE45881FD998E05BE6D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 3 /asteriskmath put +dup 24 /similar put +dup 33 /arrowright put +dup 106 /bar put +dup 110 /backslash put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC57033D79919697C81395D5B94C3AAAB11 +52D7393B7810FB3A048DB26F99398B6402C264B13FEFEE92BA387801BC9699A2 +E43D69AAA3CB2DD7C81617501B0618651E0850CB5C173082CDC1D1372741FC2E +7AB2116FB69984ECBCE8EC5515E9F234C273AEB8F9C222E448AF3CCDC35A428F +9A267F67CAD67819A64BB630671647A63A11636808CB93ADF3D6833ABBA85CD1 +B9C0C37370FCEC157D06072F9E783EEBFA8F2322912210FA9669F870FEA1DEE3 +0E5A8A230609D077AF8FF69E4915D3918778846363DD98E76B0A64AA884D759A +18068F08DFCDAC51EC16C3557D73FBFEFE9BB8A64B66E6549132818D3E50513A +D3E1DBC2F82B8DDD95669D5549734FE3888864727042DCE379120FCB621EB089 +663A44FDA0D3AA29C98FA1EE9B971B3DF008A2914D1E98376C894ADC819B3989 +C6E049F6391C6DA92441BE6E4136526F20D966238320F38AF35045D01E129A96 +9ADF423D9E39450FD1C6335BDB3DBE83BECADE53162172CD4BF9BFFD0D3B4F57 +CB948EDC97219D316C47BAC50CB302B614BE89CD0BEB2EC47E6C7A632230C428 +D5774869ED907EA4FE8C96FDD359BFB633BD476FEA4B7852E848AA18F8333A7A +FDC4C09905095B0B3CFC54028D0EC9021087DC9274F51D359B7BC69E6176AEED +E7AA19D80D375E1D4E517E41798A7F73ADF3EAA1DC396BE9F0BA85DE87D12693 +33CFC1F61902C53BCFC9081657B39A3B6BB0DEC10D851BA3C8927B88EDB02436 +40422D2E89B92AB3711F5F11A0FEB8FC8E215E38F97FB5C06960F413DE954B09 +0DE95DDB2347D038A357B0CF8F5329B52E7242F837B4F28D011BAE1113A81A4B +D18A04774C01554434AF251F7F45AACCDDBECB6BAA8D9ED85BD173C8CDB68651 +3F40431BAA79DB9B8054A07282050709911C3B15BD67E2773B5FCA26650C86E8 +B01C6AF2A5EC53E91D2B84311DE96545AA55B177CFE4F4EA3E249556492E625C +AF0EF4FFB1D1312AD32B7E7B6657C1101788048AD40767989EECFEAFCF109DAB +19AE7C5AB60FE3576778A21DE17684EF37DEE52CFB829EBEA262F08344AF309B +E8E64CBADA06B71D089EA6 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFIT1000 +%!FontType1-1.0: SFIT1000 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecit1000, tcit1000, lait1000, lbit1000, lcit1000, rxit1000. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Typewriter Italic) def +/FamilyName (Computer Modern) def +/ItalicAngle -14.04 def +/isFixedPitch true def +/Weight (Medium) def +end readonly def +/FontName /SFIT1000 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-70 -360 1392 838}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA1B1EC5CA76F3FA433922B4C840F1C54D4B410FA +232DA4932F27F16BF8CDB753CD6792A9900A99C9E3BD6F918ACE957247053A6D +CDE451BCC8152EC7EDF3B9CE759577DD04909FD40AB24CC6AA440A56F2CB9532 +A73D218580C6DCD7E84886ADCE804D9F56F691CA8CF6E04FCDECDC50E89D7302 +BB4D479AA36196E44A9D011AD1C00057557163AA01AA4B4C20C209D06ABB835D +1F5282F47D7332C6619F4935B9829E8079E6C4C87C5A575D0C55C7DCF7AFD6BC +F67CF36212DA945EDC9224B1ECE9EB6152E6B57F3BF4792E91CDADD900B003C9 +38CB162E3C1D4A8A925425634B2B530A17B104E9A21ECC2F6A30B3231C7C27BA +3EAB9BF231CED0440B8597B3A35E21A3E66C525B80AB147ECFE4E152371A4334 +7DBF05A7A1276CB46FB64FE8C2484AFADBBD17B2F94A506A34A9BA0352A91B3D +EFCBC9CA192F4D8DE86416ADB1869D73AD1A69D249329EDA2D1D461E41213E6B +67BC4EDEDB56018F4037D72E6541578BFDD16144EC5F060B95A21772C4119DE4 +65FFB95D789B8CB67F10DE655754C0E291F5D1FB382E99E176828D613909BD2E +070F7DEF8E24A4F500B585D8B6CDC52556327CE9C1CC1340A4FE7C15A9E0DE60 +0581DE277AD86FA6713EBFE15B8999EDD0406BBB0F061882534458E05F47E30F +9EDC56CB842043ACD59A49D8868BE564EC641A02B181720A2F543A525AFA8E7D +10B202E20B53723BC48A9EBBABB3D619A48B52CD876988AC8FC498650C76CD60 +6A0B758191ABADEA326633C565E0E94227FF4DC5DC4955489F4ECC57B9B88333 +4F5792E37673139B85434505D6FA9C016825C40ED537AD0F8853617D0479526A +04C103831C4DBE103674C881EE58F957FB92419B69110282F6314AE0F8679BC1 +3B7748A05B3C80DC07349D438AB778AF995CC9569A1EB57B28ED43C1F0966D4A +7F53E0C9B598FCF2EB518FA74941DD8BE4FDDA037D5FD25FA64DEF809DC3F442 +97935579E1781A9E1FCA2A7E2B98CDC9902B4C70C8B7C079685D71CDCD3804FC +F1AABBDEEF21582A64BB6C325B221716F310E2F2B3584E61071396B072105278 +4D1033C5E7EF1D6C03F43B0720FE01B307955EA294899E426D31D7C24D4DF2FA +84E466EDB164E81175CF71021D94EC9526CA8C4991390DFB4C26DC44EDA5CBB9 +12584B34A753C8BD3AFA046A4FC59801746A20F9ADD6EEA3B6C1FC5D9070DB1E +340B75B455E87562C59A36588F082C19E6E2942CB191E845638544188DB3C86B +E4B0848D2ADF539137B9A35BF9298A753B45C6623805A56CC65B083F270378D8 +17B9893DA392C0C3241B9F18F01A8F3E17F9D66C6FA97BDCA782B3CFBC34234A +EDFE8C9BB34E996FBA43925E5EE1E8617FCD5CA80774B6697617F2907E31E870 +02081088F0EB4492082AB3EAABDAABB083F4159618B6CECD677E433C43BD8C79 +08E8EA569259AFB5A97A32CE7F64649BE087656481A7C866F2306B796628295F +5FC9F1B59619EE36A1D84235FDDAD7999D49C51DA8FAA13C8D44B10DD6DFCE20 +133D6293D9372E35F3636EC434D7135E30F0009AC387BE36037B55CBF0206FF6 +3B6365FB09BE9AA6F52B6E2D256B7CED1EDD785DFEF474340E82F2C5775A927F +2EE0C36929098D0F4F7EE7EABA27D325DF0889BF9A811A35B468ED4CFD67FCBF +929C505E9151219C86DB6C785B49091D1687053960AD99B69592B53AD363B9BF +EFB6D17FAF2312879A8A327135F705BC2A9A6D84F4AAA2006DA3C8CB7DC9CB00 +06F621B3DBB9E4050B4CFB9DBACD469FC37CF591D2859E3C7F1A9185B9AFD9BF +3906BDC0E977E47261A31D032DBA833118BD287DF97EE708E79C38760571E67A +52C2EB12476CF0E5C628527C67DCE9D17E2D5CC31318FF123B4CED0AF62D11AB +45A37C34B3C357E365EFF41FA045451587F78DE905A9DE8A1EBA3CB2C5C1CE36 +719679991C2358290905EDC46FA40B544AB29DEFE1A549C3115E5CC330C1AD48 +4DB56C8A87C7D5D4861AEC3223C1459E3787D21F43CEC7905D01F6E765F21458 +005D7AFFDC93E4FC2D3D95149C3EE8DFE85A213A848C83DBC4426A84CC3FBCBA +674B77BB4340C201F961680A2C71EEBF9EEAC2FB2D38CC7A99CED048FE298BF6 +3477535E90D0ADC23B04820869815377244E4BA96C1FB3FB6718869C8D9B0296 +9B7301E6F0A3AE881C26180205F6835AA84E7A2D17292A4947497DA5F2CAC7C0 +013CC1CFEA96227C6C68938BAB840852C69C3B6863851C063858955C10E0B69D +C1F312492AC371128177C9C2E17A046E6D0079398153B26817515E8F9D2C5D50 +CA50892097A990A068F8A120F1881601EF26ED043A853ACA9B38DFFB63E0F902 +6E2F9D9A5B4DBC7495036AA6B0EECCCBC6EE6812AC17CD4241F72C38C460BB78 +8A0A1F8BF1DE8CA0AF7B6332A98B34D8DAEAC93E2C22D300396685454A5525C6 +D2384CF4D3FA880DC7D724B568EAF96E73411CDD93EF0C918554A5E57B58CD56 +7F3D0B5F9B3F92EDBE20BBC686A00D25806E5AE6105A54B6D97C6A24F9CFA0F4 +5AA1C127F0CF366B21383BF696C5C43CC6354DACCAAAB09A79A1B0B5ECBD5080 +F513ED41BB5233C56887365B2C9B201C49BE3AFE22C51E6136A27A767048B608 +6DC0ECEB42D043295BA814933C4B8C0F9780B3D2CFB90FE4C85706169254DC03 +4E61125E0319BB3BD4C323DEF28A9FDBF612F458FE0483AF93C9247310B9458B +6B73BE24631BA9AE15614ED0638E55474C5D4BE64CD0E044A8DEEE696F566A83 +5973A925F6112FAE7D06307184EC54E446AE480257F0E345D0A4DAA4B1C2B92F +34A9C6B70F07E381201BE1F85186394E0A19BC8387CB99932F31A993F0661E82 +55B6703BD55A24B88D78E48B42322217B0674A3C3A8AC36B8096D91F05BC555A +CB16123C7BBA783E042051EEAE04EB142AE70ED2D6ED2B86B33A70537EA4AF07 +1B0E45E94D02486106F76F7960EA4FE44E36806999FAC520ED89BDC80187EA77 +5CC40CA3969987579E8A81E7DD2A15F01E915ABCB669A999D5E985970AEE83A4 +475CEAFEDB902A7A2C21BD5F26752BA385333CEAE57442A262C2D23851918A0C +C23A8013455A45E73DAFB8BB1644BB7075B86FE2842D837C06C278039076BAE3 +00D1B6FDFEF44126492159CF4EF37B0359C27C33544CC77111B00BDD814CBDAB +D68AA19CD9C5050670A80378BA98006C9DA331252ACCA90E75B245DB1604E3A1 +8A4F12329FBB3FF8964839333248836EEBD6D957F7368EA1DAA2649DECECD0A1 +327279D514E0EB03A043886A42803AE9CE377C2C5263E8B6075996F8CD29074B +8B893D13DD009CD44BFB3D1E1B9865CF9CC8D13E71BB2C0D100FED17EA056D12 +D37CA4650A0450E7DB90DCCBC5FF6EB74EE0D3EA8611D729ABE057E2CB1B9046 +CAD64AFBAC11DE92721CAE7272B2D64975DC69CC956BF8DD0BC34C1B09D8DE37 +167C8AAF1DCF6BECE99D8209061B2556A6817111B2F8615CDD6B81DABAF3D927 +4893EA17E6E1CE8EE707017DFCE96A4BF10252A8694952C9A2EF3B46FE26358F +45C9A083B06F5AF66C76E8AEAC7135FF56C3B591D2949B596BEB615C72A937ED +B6EC99C4997BEF9D59E1DA8143FC82DFBB4292BE38F285621D8A612AE12C9483 +B8B2D5905B38D5C5C3DD478FCB6D88C78BE10277C2E6ABDF8B746D4DCA7C3A48 +DAE65C047D0DB107CDD3570059646BDB1C4EDC17D318C02015AF0FF78746CB51 +C345921BA40B612F18C80A39605C93C53D42673B12CB1A83902B17B51AAC0CB2 +5966DEB175E2A08142FFE0CE8E958E03940A66A964E7CDC3794E1D22C3459228 +9E81CDEEA0D8A78E9B512C93FB95D880A41CF45FDC18F2A59498FBCB4AC8F6D2 +5203B7290C1DAF0770F2B2401E3FF3BA875E7365342995D4DAA78F67F1DA0CAB +2E8860AB6F61FCE29D5F07F217B8D898E5397C79645EE64ED2382EF7ECDFD55D +1DC5F57E41C25DA8A08A44F571531B0E86AD0DD462D8286E2152A88A11D552BC +FF1E6523D5AC55F22E60D1211127C9B2F29BDB767CBE7858F5790BCD5D7858B3 +D08B9962E6AC1684D2C335416008DBF91C348448E4B576E35D7122F1EFDA55A9 +63E46F0F6AA3C95CD690515B24EE49BE5E3303786A7617A41D1A7215A0BD4CB8 +94CF2260A4EAD5A7C125F826DCF07D76FDE894BA49A64CF9ABFB2A1C147FB5FC +15F585C9FFF5EEA0D747C0662966BAA5D3D3A6243E459C1CFF11ED59DCE46351 +F57E6E55E5FA7B0EAA0484C31B81C4FF697C5CC30D179CF9EFFE60A93348D587 +E12ED82156AD7D63DD7694F9E97D99EC8C78B8282471A0D34D8D3E9C4983FE46 +C5BA9C877122742B03E9818A579D619FE64DB80B78261A29F8712AEB1FEB0A21 +5353567D13B2A921494657DD22BDC591C6E29610D46DB4FCB966927004ED5EE7 +042FCB5A2AFE661A4BD09EE3E3CCE260310D4107618B29FF94C41CF085010F7B +D455BE95E0D0E5F89F88C9ECE9CB9215385BF41F79D8DE870B14C732C930DE53 +85087D0101B5868B539014942319CEB4357C9ED24CBF5B7BCA0004138D6BEE4F +63AA3A0EEBBF4D834E29C2A86767D2874FC7146AA3E53AC69535F016DE195907 +2243499533EA4A406963D126323F15A881F6A2FE14EFC9D2560611329F68E7C5 +5F697AE4A42C8E364F8AA60DAB81F03F482C8C373F0E5C37EDF3B69219D53692 +1C36397A2A2D4E02770DA4E413A9F54DBE0040F5ACA6EC289FBCCC4A0E79295A +7B818EFA4530AD6B0FA4058BECFA1AA7C7D2656B106857BA91417B293CF51D70 +FB2F9900F70467645A2A0A99EAC9622B0972DA723F85D583919D2A6D685195F0 +16DF009AF4E294CF640488B667565AD2C50C8B4D1F6A4B02C50A9C7BEF43565B +CF4DEFF1268EB9D594326E2E2EACB4E67D3CBB98D97C9A6378A9B1FE313B0567 +AACC2262ED888AEE05A8DFD048A6FB5240337C33002E8ABA848675227B3C40E1 +0BF92386EE78CD8F996031E61B58E0F0721E5E3F670B842013D42771E0482BEF +B1750AFA7E2862978941F656B856D7D816629D1D0C60DA5983291C3BE0E2454F +6C02E32E9A18A8022DA08902FC01D94D7EDB931969D1E992254413EDE4E5CD3A +DDEC125FC8E450D27490AFEAB7BF19C14B53245AA757A20B5992838E0E2FA801 +B50F6288F2CF6E93EB432A51053372FE551B1C48063B0E4937FAC12A44D6B7BE +93795C0A542D7E93AD542AB6B4095FD5B8587F52434634EF8C82D88E9E4D24C9 +21027240C42A23283407962BE0F91A5591E47512D187806438B333EF11AFC91A +1E424D1382C870E48FB8659DBD711A9793279A52F99332D188253ED0DAB9F7CC +1EDF191D8B926A05EEBCC565FFDE0940AF3B7F9438758EAB6FAB286A3524FCFB +9E43FE46FFCE2CD8EE5A48159447B6EE1479E3B683865FF1BA89431151441FB3 +3550D3CB1373946A3C7AE3B132C239DE7285F1C1C72CAE6D51D261A627617B7A +E9927C936DF7F54EF251E7A19B3B7932CD50BDD780DDD4CA709DDAE73D114E56 +E8D5BAF95D944D89A77C0D2C8B4E500D6D192BFB05F63FF80E1A677CF8FE7488 +F9EF9888F7E840DD53DC03370CD6AB4D0F22C93A8C2E912F859AE152036C446E +3875D45132D5C35C47D639FDD59B2D7818A95D059AA30E91937E69830E2C8C80 +497067F457FDF161FE27B6F1ED06372594A9A7F1A49619869DA9B056402EB871 +809FDE150FB93F72A75961C9675B8A966CC01485C84F602CF1F77297F12D7026 +336C53F5934BE6E2D0C4AB2BBD9DC974B5275E2C5C303F1BD91502D0E2A9D210 +57958D5C11A75293DA28C594407FBEA91A5C184C366FF2692B1E38D20B91FDE4 +EE7A69488544069AF70437F641BCB2C690161DD0A5E6006E81CE7643B5039693 +7FEABC93239F060357ACB962FC61E261BCE6EC7A9FEBF92974ED556CABC84C95 +7FA4ACCE1DBB15CD06CBCD8F468A46B5527E6A7D1D4D704E6724A37CA8283B4B +68687E62AB58DB12BA006856943D6895B8B3B5EEB8731408AEBCDCC9BF94EC93 +99B001CA100C362812921ABF4F4AD5DE0B5DD693126EE873EC04639787CAA9B5 +6AA7064F4268762ED374AA78C963D36872E6EA405D2CC5E46BE9689B91268333 +0A41661DBF3DC92ACAA2CB08BE16E6E01559406EAE5CEC7D19FE3A7CC3A470E7 +924CD2A906E6EB0E6B8BDA20700DB0844121EBD0085A43DA06CE6BAA1F2F0E51 +6AF84C252167CA981BBC04DAFC705468B2FF2099439016599AD6D6FECE6C9777 +557C8AE43D63B19E3EBF912490E9349A37796226BECB78A8C1D239AD01C41742 +B699C5237A1A575EAF9A3DBF9489C222A8853E8A16050D5AFC831B8BE5062E70 +F9F3355F7442685F2C928F2B40D8F9C5232C42AFE54BD33330E89F9334D7F133 +8DE265454909CB0B57D0C4AC1995938A104D79B165C2C163CD6FF97052858331 +EE0C61E184F87B4EE44DC1BD403AE8B4BA45C36AB8A6DBC34A135EDFCF775941 +07F3903E04808CA607EB12F34285B58D56F3409831CE9319B2A0F95CD0349734 +D13A6715B0BEE33D8A5E15E6BB75DA41F354500270DB3D81D6168DE1D9C33133 +3C6ADA2403822FF5926B54D6C568F71404101DCD8368BCDE5BB1C78972B31491 +F9B806365710925D05970167974D58D6E0EF2624692EAE9B0620A5E33502ADD8 +20721F4A9B760652B083DD38BD1E38D5A5640E776430D9695999CB9E588DC273 +6E0C2E80C3C823D77326F09501396706B9C59CDC172941EA4CD419A5F7B4C4BA +D5CEB7D651B09FAE88F2E06038C26A1707FF9C4FF76A65D3AEF97F6077B2CDCD +69F16524FC2F4C014C16F1991894B0E1EA7FDE4BA6B7078D6097DE951A09CBCB +3004F5F424013B718F41E71FFF38B3BA214C1046381ACDB7645ECC5F4F7572F7 +14B0DED88E80D61561AE5C061621B813888F7F14DDCA8603A6AE1E493C4B666A +4C171AD4EF68CC4B154BBB5807FE2889F1E2B34B0AF0998A82DB3EBAA8236520 +2BCC28FB10A43D7EF0A6D9C24CA4B282C8E26A5F7213976AEC2AFAE98AD6F5BF +332EA543A93ABFE54A5242B7BD0E5FD2E9D3B5C0E0B5C1C379253E7B5F7F165D +62AC570F0E97197A016ED439FE88565033F549D3055BD982DAB6365556543938 +44AA1AF3A022D56C4E04D8427F3D2A224CC034D5947C9F8105D23810612C0982 +98D66A38BCA0E82AAD0A054B7C460252762E426C3EFE551EFF33CE32A3ACDE17 +4B8DFBAA8ED325F02C783BACA6EB84B6451E53DD622DDA627133EC6CC1579B5D +8433B54A1F6CC08DFD08CA2F19F648A4B445FFB3F1B20CB27D67C5807A40BEAF +38379F28EBA7D7C1162573F54297DD8F6E1BD38C222F66E2FA28D50D9B6D7AB4 +67519F18D665F341C89D6A2C960C4353447A41B5A27CA9A9340199BE2840FCA3 +7270F37AD08DD57201859FB92EA58FD66612061FFED3B545FE312960F96CA751 +6D83EA6C734DC2854EE8B354B453343FA6844ADA6F43B5AF99632083D34FBF01 +1B53CB86D761B672F1074EB3E50C1393574644855D593ADF57323731577C3B70 +F5CC88725F37CD5EE83BE69C1D0330348F56579B6462C898A01F936BE64E01A4 +EC8449470236D719FF6024640BA7EAC1355C6AE742531892BB3AAC16F52FEBCE +2A52D23070F2F90F450E7B23CD86E60966020B1AC5069A272613C152B0D2CB38 +1B51BE410E21BE26E563564FC1EA1DBC3B60ACB433A30C0F44FDD4DF74A8F4E9 +A0B8D7F9AACF2CD6164D3A869CE5E2470A4FE3B676CBBD39DDA12B01150F646B +613FC1A85C4123C11554273DF931022D46B88F91448D51EBFAAFF141EE43367B +2619CEA0C9EC75B13E1EDCF28FC4A7DBD18A8B9DD5845C4E7B3DE356EFC5AF79 +9C43F169DA2E41A747E3F7FF9B2F2285CD12066878AD3C34599794E744F7C2EA +D21921F975BFF1BEFDB56689C7B3070A231D325357A2463705C57625EA3898BC +665C699524D93A92E18C8EA4719B2A623ED9E24DBE49E96DB2F937C68C2BEE52 +7208D394A6DD05090D2AD58A725F6344D9A9FF2B8DE5DF93BD5BB18D5CE6CE69 +03348CF7A4D21DD718CB10253A36A6DBDC4C612EB8C07AC38E5518B94CAAB9CE +59C95B53B5FA96970C2C7DBEE6061471A2394227B4BBA21C3E0D55F6C8C1C857 +1A8C6AF2B1C075B103C410FAFAC56DCBE1164AE4956819AD2460FCCD46CD6181 +C42659CF8AA4CB669B8E4863468D175D44E7193C070F745F2E1B2490897B1C3E +B1A050306A029793473D814CACB3178BAFE9DE406D752319A2CAC913B1235533 +1747473ED6C88C2DB52A63FB1D03CDACBA00B037D6E18739E5C7CADE72564CB0 +2A28FBD48EAC90FDF9EF7A2B9B78840419528FE6E6EAE70E6204E9BE72E64784 +0FD6BD545FF9C0952D3A85E5CDC15FA1B111F4570CB3EF56B97381FAEE825789 +6BC944C221610CA7D89ED2FD0247BD871CED84D39DDAAC203A62ADA5F28552EA +BB6133D42B6866ED2CAB51089E2AF27CB0699250AD3E03483604D0896F1A6BEA +AF5B8DE8E0A832D8C33D8120EE924576EE33D9B5330AAB07A49BFAEE406E3ECD +29AC1D456CABF63F35F9D39B3343F5FD681856F3C9E6DED5825EC6E3E12DF15E +9CC37A8DD9D7C5C79ED0A5BB25ACDDD048F9023D74206EC3F9C89CD4A2D2192F +BDE6EB1E0EA5E3C5494CFF536C7E3302A322A2995D6AF03B20F15552E6B18151 +7F04289EEB2139BAC0C39622FCDBB9557B27AB65FB6F4D4BEE6ECDF23E81DCDE +E02A192428D4C5BDF79F6D5473C5681798C2E68FBB7BBAFD7E3F8BEE5EFBB93F +ED446A9E73F41162443F76F2C910C67C883541A3D3B38DC1D4064188587B12C2 +BF9B2734EB9A070D3419710D61329321877C14DF02C2B60F1A0B0AACA7752366 +4AD85D74AEF3E5C503BBC0EE740CD4DD4A978BDF715A0657C2D0EEB2667DCB44 +F57D83AC94301774A2348AAD8C236C2F7D3CE0E2EE313B7AE71CA77F6FBC914A +6FF292F652EB2FCCDAABFFFEC718B09AC71830A86044C41498A90572A315E423 +290FF87EFB65B84A78ED8252918929E057650C001E8A1EBCE51180042AE24A6B +C3614F7E4C8624DF68ADE20EBB753CBC4F8DA2C6489A0D0BF3161618E2AAB50A +EFEE1F9903195EAF2B74CFC5CD8BFF8C9503492AC7CAE0A879FF26FEF0ABD644 +C832782929A466C6A31653D9B6F8BBB550CEC52E6795586D2366DA523038E4F9 +00598B1AE9D1F228951E05687EF09FADCF45ABB3769E6A2CC10A99281C868B22 +EC67FAECABE1E162BEB008B52B2FF3B041571D399F87E1E85111990750232B68 +BBAD451B1492EA692EE72543A191750CAB27A1225323B52F8CB14C82E7EFA02D +CCB7270D9DFD1581F0F5A86B8B6249A125B59260C0481C293E7DD2619A3E5307 +AE41EA791AB9055752E47AA4EA885CD9DF121103BD2E24B6E31986D39E0EE371 +1D05B6EACDAD1EEDF1926090CBCA6402B351B6558150E6F0B59B56BD4A284DD5 +989D88365E7B7ADD86F18178AC7207646C537C6FAE7E6837DF62EBAE7082C838 +1BEA6BE6529B2B2DB73CF9A19D751C18E5BCD79AC7D43D95ADD5A7A50F3A2320 +EEF025C8F097D8DCDA6E10DED97AF34D2BF66586B75C1C071BAF5F0179E13671 +CF6FA989CEB5DBD6AC1A5FF9679BC5C7853E2E847ED71043985FB09548A5AA18 +1DC99F7609373117C3178AE85EEF95B89C5A7E661566C6F7C2F57EE57F50C5A3 +3CF2F77E4B285CC23645C49F5B790895B5A6915C15BE73F5BE75C8DEFB1D9F40 +700308CD41BE7F0A929D7CFB8EE78F2BE1A10874704912AD791A905E75C786A0 +5E8F7748785B4E6D99A4BD878918894AA3C6F4E4AC3346C923E513BDAFBCC900 +CBF17E8709D91A41E64BCC4DE956337D514644D6A811998E4414EF30D6734C0A +4C2451AA63AC4A5E71F7021B3D4FA11D86C965BE407C85D3D60611EEEA20769D +AA9DFD5284EFB59598C0EF0A2951A73024B35D3C26129CB619B506AEFF7D6CFD +5DA7A975FE3D85D758C54FD3EB17DEF3DA1FD5A0D0D3A2861CDBFEE4CDD216A6 +75565CF5D7D8FCFD3FE4F4BD5FE4E7F052ED66918F25376E2BF158FFE415CF52 +A25C46C4C7F14AAE6A1762074169263A3E8DDF6A14F87CFBCD04C8EB8090679A +083A6A3AE03CFCD3FC11C8FDEADC6DB9D49303CBAE9A6686C25DFCDED22B5288 +06F4D6158661EE19AF21361E73B57211E5081EBA9BF7B1AC7BE543E19DBDBC9D +5C57F4B14CF02EE1D1DD1135B1C9BC7939833E865A576454F4BB804A00CAD0E2 +A27150995524031ECEACE23E946F6917076529679EF111D555A6C61909D66BDD +42BF51B2619576A07E636D0BA02897083FB911847B04FBE05797221A1A3217D2 +75BD375D5C0436249A31F2011438EDF252776859B47391B1AB66CFECECB63AD3 +D601D7753AB50AFA99B797CE571F799E6B6A7E15FD11C8484D32D0D91533BB7B +93DF2B52B6D5B17F47A3BFD44765F302B53F6B4CE01D5799357481E202CB5BF6 +BEB3E0D4A543A8CE5346A7D6BC6579118FCE38759365BBD978DE9D1326C9D3A7 +343C82B5E4907808C00331B47B00E98E582046DB4849D0266713900928444F32 +D311455815A6C3E66F8DABBFBB9F3DD28A41208CBB3C69D8BC78E1AB9379D456 +45ECC6B9F49E7E32D9007D52EDC506C46736B3D0F2C4A269C5E03E60A6668BB9 +953FBAAFD8EB6637AFA173C2756180E0045BFBEA0383B80487EC00854D8A2E22 +096C360C1032E960CA253929A189C56E41279AC10E2A6B612C8C5354BEBB1EDD +958AA10D6C548C7C972DA35722C36EB7193BCF07429FFF3E6C26E80764D8EAEE +6F40754C186BE82080C7827C4A552236D12C6C20F59423E14F44F36A36925CE3 +64A6B74EC515100F93AFF40959E3AD8D21F15E4F0489411A07EF9D22EBAAF87E +D273E006257800820BBCF0318D0849978AF22CC9B63AA83904FFDFC472576301 +F67A6F5F7AB7394DD5F72940A15D38764D8CA4D7008CF5893C3CFD765A69F322 +89D9BA714CF4EB34062FB4813F52748E70B4C8DB2E63B895CD19384CEFD2C8E2 +F136646016888FCCE383CC3D3CAF4ECA0423E5B04536FFD58B4D758402861055 +FB2A1CF6C4722591F52219BF835B2706244A8CF09712165EA74784561108646C +E18623BB65C781A2DD349C560F844D8DFF66B98F9F45C2ED71960507FE30B28F +6DDFB302C5B96274280241C8671E2AE2B8CF125673EE9307549F881AD2A46438 +B2DD9C4E3149197EF81E8C726B0763A1C01B4BDD0BF417E77361CEDA00A2926B +E64E01A4EC8449470236D719FF66C08A73661EFE95661219F29636A134F6380C +B1B0527FEB502135C97F8DD052B2D4C6E3E29C627231B7CFCCDB811ED4C507F8 +946305E4BA3241A8D09BD665189D45C424863988091A6A6C3F15E321A8281A2A +331FD0EBC91510D917F4EF111E19376F1FA3BC54168D209BD888547089E26025 +2AA2E7CD00DC6C422DCD2785088B3439EF45983A3E07AAA869C051F98C9BF912 +FCD4050278151ED68FA28999D6E4A20F93AF696D3E2E001C671BB45139C080CC +3EBA7B90C27ED6842ADF6D452A48F5C54671C30E226B3AC588192AE475C94163 +D67630131CEF2261DE72EEBFCB4638375342B8752BBD854DB724227DE543AD48 +549E8B47FC3641E1D759C1240C807E8700F41F3591168B49FF17A1410294BF1D +8E8620A52EC3A8AB31FF9050AEFC925A66DE431FD5A12CAD1DB93DC1AAAEC463 +7F79BB83108E0FC735A9AF05C4F84AE523A10B1192BE2C496CB4EFE2884EE772 +FC60334B585AAADBCE70EB2900DBCA57F353D50679D62071EF0634548E8673E6 +F6BD04DBDD12B26FE7913E39C859B9F0727F3CB9506A9A30B165F8B121FB9033 +37D686FF98C40FA899503B85CB889E27F71A9B1F82FB8244F0B00A35324AFA8E +7B03617FD8B27B23BC42361F94F3172250DCEF2EA1A0B10D0110786F708E16F2 +EED84DCA3C9E09E41461EF79EFFF07B07DDA99390DD7AA712AFA49FFAED4789C +7A58CD0337BC7645040A9C0BE998208206E8311C43372F12F17EFCB8D869371D +F15D36E1E16B417CDCAFCD01A1E68951DA293E07BC5711AF73583C0695974667 +E4891D6570EC6078E5A66C823794FA1AC64C36CBF528015F2C12A9498A2D97C7 +B0772066BD2008108FD2BEB22A0211E187F3B9948A36B5B6C48B3BB4204B00CB +E8A17846B4B1CF11B216A5C27D634999C47CFE1D102928FA6EE9C4C5BEDB9FF8 +20986406968BBBA1DB38CBEC45468CB3D551029A59CF521E7B5CB9994F56D69D +69D5CCF36185ADDA494FED05D60D85375C56C4A87BF80C048C5F87F52BC51C6C +FF8FA8BC7EF1D27B1C6FE3B2A2C6DB953ED292A11ACAC9A4869AAA1F1D15A83A +0B408603CC1468A02151A650633AA85A8C2816E4F17DE63222C432A5782CF9D9 +A705604EFD0DBD51F26EE883AFA30B13943BF3F246E5094EF0B16CDB5E597C4C +53AFE6E66913D3A890BB16958EA8848EFDAA2A30A4B7538AA37694942B54E1D6 +3AD88F9DD4E29F24577C83DBD1C60C1793B28A7432737C313B4F646D1A39AB24 +77A8D8C1A0B6C0AA31C5741785C733EBB718DE9EF5C525A93099A987EA3B0C7F +FD270383A87BDE4D234999FC5108D0E803C80ADF1894BA38DC9BECF503EA4B29 +956BA995F89E2C13050CE841FF305ABE6EC64DE64A4B4AC7C6D2E7CBCB600466 +02A6F4DF7CCC918D3B80F7598BE81A846E5358BBFCDF597259E25BB78532CF94 +A72E8720EEE5CE6903348CF7A4D21DD718CB10253D4B6198F17A4D1EE50D3B0B +EB120E320A2A64CE6DB14B3B067FC47844071CA1862056F32B759CE0D4739BA3 +95EB787B17C4355BC77B44C64BBDF6379A06043FB0D175888F123C768FB94A67 +335CE1E36A85AA31C1BE8F94F00D8FFB4C846A0B8C75985F4FB0CE4D436D99F7 +B8634FBB8E4A071D85D21F33017938A5199A744725392AD8D7E20E0C275A5240 +76E7A92A805370E8F502E4EB60250EE3A9E0C84A9F4CAB2E74215D05298EF505 +1BFC74991F4179667E2A31951C63F5EA0117033B0793BCBA8A7C5664D4A2C86B +EA9BE8DC416BE814D1D58E3504D16DBC6748BF01B18935402C37DFA5683AB86B +8D550F0ED1FDC47FD4DC34430AB11A87E974FE23D9B1460AFA3671CC98E20B66 +AD793BD03F33CD266788E2DEC92F3540E1232B7450242B02BB24923FE5D5A2D1 +3573DC8F7B8C10C44942E4D3CF24F542CEFB055A6E255B9681C91B3E4A50CB88 +FA873A39376A8639A284E70373F11BF2CC60F362CB47CB9B8C89AF469128E5C1 +E5629E64605F95054EB0CEF3C869F4361E5273DA715BE8EBBBFC636197342809 +92EA0CA133296F5544899E9BC69D2993EB5B54B5FD36956A73CC2CA839EAAADB +0E24137DD680C4E4167CAC25E8A1DCF15363AF6A918C92559088451E0260FEF4 +F47847DC1B49DA9005744BBF9CD44C4940FF3D143A204085691E359C0C635B43 +7AE8B08999CACB30573C4EA15FA179EE0DE003EB34B9FEFA61AE093C1B01FB77 +BC1215D9408F9745BD75C013D00A83A10DAAB8ED7AE04C5EC90B0D9EC8C93205 +4FA639F8424B7C39A60DB50C5335911882E64A02890FE99098CADB7CD7DBDC69 +3F249827D7B0C791F1009AC387BE36037B55CBF0206FF63B65C8DC49CEB2E8FF +43961E93E8B4E0C280486320C27345452DA30E11C20FD9971FAC65F7D290FB88 +67810ABF6EFE11A5BBED13117818E8AB4423C676A3B5DE21037B11163D066D0F +CA3855552B376AE7E1D39D16881F1FAD841CD851C7D1A88EF099096AC0CE90DC +EABD16292BCA4007626E083FF2EAE5F1B45E449E80E18D09E57C84D8EA2256CF +0ED47C7AD74C7D14E3763C772D06D80F724BC02DA6A8D35E94283B20AF70088E +031572188A88738612F5C7EF42DF8F2251827A441B727006340118E85394C81F +D692FBC2395F8BA288182FFCEC12E14DBF2D3CE3DC3CC240EEC42398B8C8B6D1 +DE94CCCBB0CDA260AF2AAD27D18847DDB8299A2C0FC15DAFB22C9AD865D3E5BC +AACBD442E91C82E42B6D882A624953C121799E16C206FC306E6165669DA914BC +357620A160C90B12E10F8B9A76074EB7EE129FDD2DD168E308DDAD124107FFA5 +0DA8881B195CDE29B2BB843A3402FDDF8B3905B76DB6311CCC48F8B90155FEC6 +AE38D07CC29CF6DF05E63CA91A99D0A8D69B7423E732585EB639B781EF82A764 +7382A92B3A4B09E2B4A9B9E5B204745C703ABD386D63D8E34F821E98BBA740CA +D47189B2258FF181F4B9AC8751B9BE47440633D711A3947B5BFFBB2479B8C9C8 +18825446815DE1C83490D295982204C585DE92E03D8E49E1329F2A60B9D2DED5 +B483A4DB3B370E7759255FDE36B3F2FFAFC93110751B5825A7347814569A856F +3A03CA4D8A20BD919F87CB506E276782D9B9BCED2C48785637577A15A709E553 +80ADF606FB71F8026DC9AA0E839083EEB0034C5B3A15A50B543CA28589DF6A14 +F87CFBCD04C8EB8090679A0EEFDCBF899FC35E306E9422488636BF6987C31BAB +F99E00178F3D64D00C21944F0930ED19DFE8AD164551E5E45D98E73357DD912C +9476DC0DD4ECD3CD0C054762580CF95E1C325711C6819D7188607B4CBE10AB37 +6C765A51639B4C7F93DF44B1C7CCA5CF8B0AF3A50AA32FE554974883E3A284AB +0522460F677304ADD1003BAF239203C7C33CB54911CE0751ACD94575BF8F3387 +7635AD1520900E3A2A3A48C18B4ADB54CDEC59A4699BD7F4C0721154CC2FC7E6 +8C5434949A65C85A0BF8D0F203016692E9FD230281E2EE9F59C2FE5D7849D734 +ACF129915AEA5D922F803B60EBDFE9ADA568512DE96AA157139FB8958013ED3C +E631F22712233F9E8753324FC01AC52516191F923BD57C512C2C654F799AF64D +EC3189A6395227F2E2305082FA383A84CD6C48B1EC3BAFFFA8F7E50CD99BF3B5 +21824D87D8B4DD8A5169AE0E77E97B6DAB6D9C320C24B008F0D1AC01C613D993 +6C9545B9CB8D78358ED4FFC84013DC49C75F4A5C5E1A0D41DF383CDA43CE0B6A +1BF00B2088524893A3C7A3E8BD68F7A2C30618AE58F04A44758282128CB3665A +F8A5A7AD95B20B95472310738660CFFBB7E4176DA88FC55FD8F5517AC6FA346C +17D2A82AB72539E678D10D62E7C8521626157E9EFBC0B2EC29DA99317B086BC8 +923748B24D078D69030AE68C7E33D19CE47A0E32F548517D16223472632469D8 +569FA750992E8920BFEE113A9BCB3E414D1E65F7F638371B463A58633B96E069 +9D64ADFDFA827389D260CF04D3649434C6DFE03EF1C4BE3D8E28FC591EA03A4D +2E6EB21D3724A2499AF5C78794A42CF048E6FD65FBF06B57C406BD94A569D8FA +38A1802EE5431D40E12B0A56406FF96BE1845FD67E02637691688FDB895E9AB1 +06A073AD4658EBE1DFC39A2771876577C9CFCC1A683AB35AD590FF78C7D0BC45 +E6F07A21D8488348B85E9355B1CA0918D2B3187287779143B27FF6B3F60B6188 +50833D5A5DA56EF8A07F82EF17E9726A2F7864887B4E79A114131C29D7ABACC7 +C75C1BF6CF23838050B96541192E4A5DBD396F2B74BD7783451E38A003A9A3D3 +8C134DE8C50B1BE010EBA01F62838C32790BEAFCC3107E0BC8B872A7346C3A5D +CCC087B068721A00CAD0952CEC1D52846075D4CC3DBBADE2CDE94D47B432C309 +9A16CE37FFAE98EF7926BDB161EAA3F4591FB8E51CA3D456A8C9C0010CD3A20A +C71ED6DAC343C29B67D3BACC6B1362C9289BB8C2EB2F6E8F63B049A386470D0B +437E3A0D93092CB106D88B292E536956133C3EBE726F2B13909F85747285DA35 +F877BF91811B87F049D969648D6C97489C0BFFB3321639397784940F6F3489CB +75D372529BD6CFCA81395B42FF28E34681D863C7CD5BDB0F88D15DD8B1279F1C +618CB1B5D9F936A02117D31C00C0748C650EBE2CE90F497E27D4554D6263411B +7B62470937529707C164C34DD9F6D5654769CF6486B9BE78C6CCDB53CDA92D70 +7508A39E7CB3C1BEEB93163E01EEBFB445C7B81E9165BECA82E46319F276A4A5 +B45E2F4FA376AEC6DEF14599359CF6B4676C38FD54A4D85984C13DFE592FBD45 +6CDFF5F73938AC0826DFFFD3FB18437B1C50BDEB138619E0236E3912FF12FE8B +AB91691CCDE8F3917C8CBC4D39CFB32F614CFBF3A643288D8C9582921B98200B +E86F8AC7936E181AF74E74E4E2ACCC908B81B6E82A6698C4A15F37E2D12DA195 +184FD47721774C77C883AF05B6A0D07EBE9DE17F8F542B25DB14BCAC61D4F5D7 +FD407E730728A447A0885E4683BB5A9DA425885AE5999DD5B627B385C1604D51 +A3F7A80BC33536BF6D2CF0BA567F0249311BC6179A114A1CFF50452877198507 +2F6868CE951860324C5538D5CB42055E660BB84E9C21BA88E5D5F1E594B9D5FE +DCFEE0E110F6D4241289F8C3909D8A7ABEF5C0A48B4240B0BA88568A2BA6645E +A229495EF06D8750B46D31BEA943F47770F042F17767AF18A6AFEFFE226C1A9C +D16D3F7DD500B88B30B18365ECDC880FB01EE255A440D00057E87CB3EE043B5A +3EE49A640B2815BFEB4E64BE94D21214679553E6E402293115FF8EF180C2D74E +617D5094802F53EEB266257088A433B53E166F8CA88A751C6BC3F16C8B7D1B68 +7893F7CCCE2225412D069626F9E937BA077221660FA8180DD6C24065DBF17595 +CE4D1F45D3F9A45AA55756E164FB2A6423EB9471C67E34D207D52D2F25B41653 +BAE025BDCC27D9F5142A7FA70F43BD9202898EA43217F661C1042CC195AD9356 +8BB3A3EAEDA0D91ED933FE3DCB0FB7CB2F463984736EE5D4BF91B90646BA6B6F +6DEC0BAEE17F274303F6F2CF99788C1779C2C8B67FA64EDB2E4A9E1804E39B9B +520AD83852757D806884199974147636A9803AE2519C023FB9D533A7C9A6184A +8FE4DBDF78678D3A2AAEF348120CAF35FCCCEA4AE39FDD3A811EC52CEB705DCE +76C9CDDCFB658A1D7068975DB66A418AF1DBC58128DFAE18ABBCB67757E55509 +D03C2AA68FA50862E106136541587B0BECB3DFE31102A76BF028AB15418F58E4 +8B0B9ACC49815E177E1EA7BFE9A697C97E1C4222C42B3AEBB4CF7AEF2C9B9DD6 +B6C5D4A3919D174DD98047B03E839A508FA4C60D652651E64C5B7A6CA7B2F520 +A254388E46A5960DCB8A3CB279C46FA44BBD392E1FB8E458A3F9CA0EA73C80C7 +E5C460CEE255D8ACDA93B8673932F67B4F0BB28ED239C023210743CD6F9D836F +73649D3ED55E43AAF1D516D86B18D58E23B36FBC03CDA58986FA1BDFD45C78AA +A57925BFDCB60BE17D0FFC0377CC8990DA6A79D0FA0BEF313797B336157A8149 +CF2DD99DD35E7F6437F912EA38C05A499713C91159D83A1424E5894ECF4DF71A +242F8ABB0D3F07C64595A9985177A4133B1EC5014FF3D80933CC8FFFBB0875AC +153077AA377B7EF62449E72FDF59C0214775BEC2071128A6384DA43ECA416FA3 +2331D1AF22BE8B075CF242294D34DBB9AD2669CE756BB87F9B9AC74650CE8367 +F8B609E26787A02577D7DF475E091D38B3DFA4E5FFF5CDBD6BFFE211AFCBDF0D +53B0201EA0A1111F18BA307B871A8752B145783404D0691541981F339122B695 +023DBD5DB5081E4E1B4B5D8253B6B0519647DD01632404D22E2E149FD8944CBD +F1C4EA1B10FDC1554F41952F3125A8A86E73C7794E7999E22176EBC70B722FDA +BECD85BA189AFB841CEEFD4B3DFE16A7E819E25D81245DF04223B38E44A6DA15 +0F03670EFEB347D719C660B7C0531198630906C30ADA5C34086CA2FE3DB21D25 +5D05ABF8E3BF6264026CD57CDE5859B649E9EBF23F0BE0BC4A4D6C7B545FB5AA +869E2C5D957CB5F9C12158B83C94C5D23E670B96AF44502E65D37FA340B030B7 +CBFD350C9351A0FBBBD3AB11ED63DAC2098E854B9A7F0DD9E19FAE834D70F2C8 +75739ABE15397140D0AA6FDD389C85AE2FD4BD55978209CD1DBA2439154FF10E +FA8B9B6179D5FE5B689C41C2EB09FA67B47CB6C49AED682C6F474F2F7C734BE7 +905B5E64DAF10BE0C141399EF6A7763B5A9576044DDAFD4BB4BE91D0B94F5FC1 +B6F0BFF3B5F6052372BFF9147F39EA2E506A616D56B170F8BD1DD332F07B7FDD +21FB0C4EBE1B39CF2DE4D404C72C8834932792171BCC2E0DB98A5991AA7D2955 +5D0BED4430100F63E7288FE49B141B81C8AB1007A7853E9D2C5B4E9C6C287386 +C50DB59331AF80347101448D26882282D1CE60544EC1E3CC6CBDC05DE8DBE990 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFTT0800 +%!FontType1-1.0: SFTT0800 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ectt0800, tctt0800, latt0800, lbtt0800, lctt0800, rxtt0800. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Typewriter) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch true def +/Weight (Medium) def +end readonly def +/FontName /SFTT0800 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-213 -359 1395 851}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E487523ED893FF1D49A63FB2225741EECBA49D37968D1B +D80F527BECDD2FF294AE86DA4D8C1C0F8EED32ACC0F899A2AD6E456C987C333B +BFBDC568BAAF5F3A3FB56A339B7A337C6B1C79960E2F1059B926A0D0F92B5C65 +BEF09B3397ACC8A14C1EDA8FC6A6FF0117BFF0D6514D3BA351EBB2E2F807E773 +CA9F69270304D523CF2D31251B62FC39495EB28F391D0F755B5C52F65FD95141 +722AEF498CAD0855B82AD875EF66CEF84631F1B7AAE09F427A68C0F6266F2989 +624621010457FF652CF41C0393F55F6155378DD426C2888C6F4B6DACEE499AD9 +D9841B46FCDA3E05EED3EB4CB4922F46C3D141F515D2E74B1391C6850BA09D6D +3BC4CE33B7F81BEAE956BF3B701B41BB371362BD9E2353B73319B9B89E3F52B1 +DC889B2EB9D3A0C34B9859AD13D1134BF95C48CCB1625D2C0C63E2EE5ABEC1D2 +D1266EFB376EB961F2E6BE6EF605779C48EBD0E667B58C3CC409842CF76FEB33 +1F6413FD8EA5BE8A570AD74823E7DB2101BF7D0B4F459423DB46CEC47DC1E934 +1996ABF333AFFF3DD1A218A56890EA1F4E3180AAEA6A9723FD3C978559B21BEF +D8823C2F80992D614A4E890555AB3F3ED3BD74CCD6FE9283C69E046B7DA9F373 +C0C5AE40B65225CE2491A9AB3755F3F05716A06D4E4E654C5AE440753E98493A +8B5500721657EEEFC3F9EF31078136165AF2A3EC4464CA03968C7A4E64E41AE3 +EF80E46A1A19CDFEA5159562865AAA81D0E914D73854A1A13AF4EACC6C90DF1F +A02FFCAF8978E2579AB1281B9256EF7E0F20E702CAF3CF37E576E88B5026B2BA +6981739ED4C61B8E81217EF10D9FC302E6846F44FC45B58D3894EB4EE954B1C3 +49F4435ABEBDD0D0AA717A7DA70D25CD20ACED7C1091951D77A2AA673807D2C1 +F25EE8D378CFB30DDED98AF16EEF04264BBC83C0E1173DFB19C954B5B9917883 +595FDBB0F00C1BFBA6FC021D801BFFA9368C6E316CA14168D7CE22ABE468E013 +D07495EE5AD62767A31E9977DFB633C70BE7AA2069A157A03263A9C62CC9B7BB +A167370F1773CF0D3F0084D1E14E64CF75F70F6E333F04FEA54B38635DD95CD6 +4355677BC7E75FEB6D59B102F4291AA634AFD9D55D4DCEE2FAC3DC2F9D8714DE +B4431799C5CA3A43E34173204A565366213A3D6CC05D38F018C7BF0A068F0ACA +3681685148B5A11B07D0DD91A4B97FCE0FCB1044FD07C22F29F49C28F3871989 +62026D50DC6886A867EB9AD8933F3CD369F796B95AC00C6D0CDE3A6537F3D360 +CCE5CD8B549A8D8054448BB046CF2F1AC9BFC17AB3D8DA07F98E8AC0D652BDF9 +93A0A306D4D73780FA7DABCC275FDC6F2899693FE82CFB4AAC70B1869A6F133B +5F09649627965D2B38A9EEE501F0ECD4C674EF110B5E03A723CCBD7374C56EDB +362524A1C6FE77C016E246F93AAC1DD9A616421ECE4982A6E06F5CEABAE0BFFA +A07F750E319C02486B3453881D09D51DABD274555D838A9506C23508E8D176F9 +854A6CB34369AD260BA09AD3E3502CFB487A7D975B417137A72674FD59BD803A +C2A824248056F1F1323E2E0BE35D2F96E115BDE8C27688B2FFF55015DD8C4345 +A056F4A1668C93BCA4787FEE732C4D3004DCD9AFC181360FF0E5EEBB944443AE +FE0D032F5B274091578A1F19D84C6274B742A0C444C6C3EAF7D8D3ECDDFCA409 +5795351AFFA20A22DCAD72419B47275F12D547B702E2D402850606E406AF1FA6 +DF199F1F58E44F4754A379FA2684744B44E53995A57FFD2AF29CFB6985603555 +C8D6A25D2D0840346545DD48A0E4D1F55CC63258DF1865E6B044DBB7A3FC3843 +AB28DE6C18FD77C17145A4E77A81EA1FDF930FC5A914353F9B574868E1DED13B +3360A5384DD5A9AE100907271C39891C8BC40256BAA74303D3F5A9BB04D5A74A +7A854E6F38BE2FD1865745D1BB8674490D1FB1C97642F42A032C17262522B364 +13443925F4EA1E06811E5B15DD8C4345A056F4A1668C93BCA47E1376F759C4C4 +4B295C81E72E04427C573A339EAC90A6A4ACBC820635F14888FF07526B12B355 +9D3E0152F3EAC944D973C3B17C38DC89F754B5F4857EC3B61259D0194ED1CA5C +0B8FED4E719D39E5C3E127D5E4521B172F6FC9CA50B2FBCD9B1A7A9F116D1883 +772550085992A0EC32261986D6957FC57719A24CD5D25484B3B77C3D58F69256 +AF8C4AD53517B5AD2EF1985E6A7C55EF9B744DE7AA35C3F6DA4388AEDF853C4B +6AE0029F09D6F82000FAC2ED80F9544667429868F84195CC472112B16E50A823 +6C8CDF30087D62B042D93B10623BA00473E0A1D31E83E1FA20A24C30182A0D50 +5546A7B8DF3D9BB2161C71EAE96D37762DB7F9AB5702C05640EE0FE4B675E769 +47D2CD907011340E49D79C899E9C8C0D1774B6DBD117EA4C4AE813AC05ED3350 +E4D6EEBF4223A46C1815DE7103F97F11F904A3E6846F44FC45B77ACB021800EA +EFC8A9097D260AB9E6C45FC8C8E67C27D42AA3883640ABAF6B732E2356B7978A +13929EB2A058B6A330AAAB3B9BDF9E7E7D67B07288ECB71CC87F1ECD85EC057C +82C09A5F60F7F1D3AC68A8319B80E289029B272E3A2EA97D0B4F9A1D1E7F9A12 +34329A8CB90819774D58300B4DB1FF9E3F752F13F9D164A307C8688CBE4E90D1 +4C77D7A4132618032FB9899EC693CE9F802310E2601D882A9F6B05A240909FD5 +43979B5AE033CAE4FB2FF118A8C1661B54915575BF24F2D5079219AA89FAEB04 +3D677B76282691252629D136E90EC54CD89D48ECD67DCF74344DBD2325B000AF +EE8F80017A32DCE5DB1EAFDC2EC726DF55E25202715525F7BA424F61160966A3 +557DBC0A1B2D06B50C02BBC09D2A62106EA4FF237DE46766251A9019C9AA9EB0 +E5840C39D278193D37B0E20556C47A8E405EC88AB9F1D4E8ED2AB3B538C0212D +23E1B0442B568AAE2475906FFBBB85927A6B545BD3DB8C59481FD63B6921517D +E6566020A5D75A40E5803D91C6E71951DA957E2304F105550D0B3191166ED090 +41A63EA253B96425443D6E1C3FDB66925E37EBBBDFF84C2467E2103BADA0E978 +24063109BA16439F5B21626241291FD728498FD290D0114241D47C520180CB48 +D652A28813C00BBA30E6187AA3C9475F692770328C943B79E51DC37AC9C62DCF +DD7636D91F8BE8815E2D87747CEDD0E996406FC1A28D9ADEFE78899CE46B9005 +BC9EF22CA8F00F055CD83E7D52E442EA039B8262B8506BF5D608BB0F79650251 +CB35E1B3FF7FB909F50A1CA42D36D3C1FE6161292BD136C09C821EAAD9F363A5 +93AF5DA01430240E5483E006102C514439893A8142A83DEF26614F9F13C6822F +DECFF5AFCB3A925B58685A8AE8D3B18B33E6C393F4837036190931A6C7BAD9CB +C58FF9B3CFDF3AC1E52E28CBF89A45497E89AEAB3ED00E7A42F28C88BB102545 +B437DCC64F9446C352E858483DE7EB3536019825D6D65D9F18F20979492EBE82 +00716F7487CF4EBF022832161834FE24464E7AD55EB5D0DB70D62671A5AFE46B +D8F0A84D6BBF4ABBEE79E19BFFF254AEEBE8FFDEC7E7D2615602761EF93ECA56 +3AFFC72CCFA44942699D993861B7C7CD2778C16E12BA607AD97E73F91C3DC872 +EE01AEF8CE80713FEAC47BD88E49686B612F201816CA4EE59C9C4CF426D0748F +D49CAC2B9CF3AF9B7CF7016AF7C006F2E69CA8301DBAC19997D7ABAFA13BE391 +E92EC656A022A1250C6EBFE3FA40B5DF6DB27C986924D3665A51D206286F1BA2 +ADBB9EBE4B1D89198F4D48EBA5E8D96B9BA4659EF349BE68FF9936ED273E2C6B +5DFA7CE49B563FD8574302847A9845C833F932D90AD2994C7EAE0A4942EF2274 +FDA0C64C47885F4105DD63AE4FEAA5DB10B501A28FF1463AACD07738D8F10D88 +0E1D881D0EBC56994A3CDA090CC5A1727EB94EB8FEE310F04FECA1C020D72152 +491B6B59B33F6485A213E3F308B7757188D8F04F5BB4EAE246DC0312A8FE48C5 +88C53332359B87738F1DEAF8A7B0944A84502450D9B14FF00E693CF8BE014FE8 +66E528CCAF36840A815C49AB169B6163E38FF1E99D5CDF7858C957E4B6EF0266 +BF9CD2AF645AAFB67BB3785EA670BB334F76008514408528BC806767608076C2 +483ACFE54AC457D222E562F4D53FA252386B6E049C6BD28C248A39194CAEB075 +E3210DCE4CE7AB090E92DC2EE30112DB57354AFCE430290311B1A7ECBE4839A2 +03CAEC81761FD4C5EFF86E090C53F3B8ABBDC0545FF3E3090D2A4A465455DDC5 +E2F4523567DBDE067194780DA1CE878654392450E86B5181FF5DC58BA9E9D6BC +5CA05DBB79504AB4616EEF7E8F990948E05DD1F9B1E2A19D2B9D2E2E1F96F008 +3F2405BC4A8F0241FD4F17DFFFC578A77D40EDE7DC7394392A8A2D5F83D18DF5 +6F31B250826057A7E195B8A5993333227904D8D5F1B9D57F836732715A557C61 +9E78AB817883E4BEA5E17788F8C3DD4FFCFC95483BB6F8419CD529B680F5DEC5 +0B2B4E4BCCF9E6C4D5B59FC4DACE4ECD84ED9D41199B130BADD2CA9A4CCCB636 +E923D56791014712DB43CF74EEB223B1771670AB8068A9224DB97FD734204F7E +609082898664FAAC7952C9F96290C724FD5444999C953786E1FD81021586663B +AE983480F0A7819206027739C05589254F43C08B7ED75EB6FC1E778A3C057A96 +BC3183198BE7658A73AF96268E80A40A88963DB12AC04CE5E7BD6884B791DB35 +B7F61C5BB382627AD95E177CA3B5D2C0A0C572E26EA106E2416760829319C957 +57E5F93B6B94BC2D60CBD811D2EEB18D4FA03DB6D881937CCD8C45E538B1093E +1F9990481FF5C5FB4A3E82A69951CC685C1474012CCAB76B4CE6052EC5ABA612 +095314744F99BB444DC1797A7188BED43B6C417A05E5512BAE37AD92B47E761B +A5ADC1830FFE95EC06D3940B52246B7ADC99CE0A5E0355AA317FB32AA734B191 +EF31EF2D5E80DB2C9CED69B5DE05B786FAA8E0AF654A1E6E6282433833F90FB2 +AD31D6F7D088B666C54EDCA21BF9245A736D0D350E4585E2A6ACCDF4312333CD +7F63B44A9563699D3AA808B9349DB17D16339C45BB9F4143A2525888557F6997 +162BDAB17C31C4DE61951934BC6F0BB4C7B5218161AA3986D01D1DE86B549656 +FFB74A41EFBC6F107B676DB3B59761D2072A6879C6F55C1DE35D6283EFE6C2C6 +626ACD5947128F8585FEBFF5596B7806A1B5A4978593C9887A2340E21AE4B836 +A3DD9920668E4C14724AD8818318F0EA18615A1F1DF02A6BE1B4D9E55A0F603C +275A1F76EFF31F5FCE8664FEEB56DEF88AF1C70D5A1F61C268D39A819B68123D +6386ACCA7A73530D6C43226408858C800487F71A2D07B9C4B889F3E306A73984 +CAB31DDDD08B74CF408D38C8E6A9D60ABE56587062B40AA38D053F96BD81DCCF +FA09B610E4F2361A0B5BEBBDAD5B62261ECCF7ED121263B578DBD5866D12256F +2049437E66BAD358199F7DF4AF7A3ADBB5F52A2C81C0A44A1A8EF98D8B2AC85D +7A354BFFC36DCCDB21A2AB643C62911DDB85C60188F4964E42B5463702A985D5 +C37A9580B22876B6B149B369897387E10009058F574EB84800CECF85C293B958 +3D425587492AC7CAE0A87B5018A033EDE44A535D72A8291B6613FE0243F34A83 +C5E8F54A1CDF3D8E79CA5CCDC91B66A0454CF409AA008021DDE9D3847BA8A5B7 +5E71D13BF2DF2E89F36B0E883FD8A04665AC7DC4E5A137C3E4F8E5545C04E8F9 +D021791585D4C8F3ADCAC25444FB675BDD727265B07A3BA09429A3AB653FA788 +16CCFE2B5E88D0D766D6C08659CFCE7C8C724398898949C524BF5F1B115B1288 +30797DAC0068B11776231923D53DADC1EE468EB325522F64B5411572B6DBAFF1 +D75E9BEA7CF5A6E527088F2E27654D0AA1BD8207E310130679CB4C01ED47EEAA +D98DB058A4C59D52ED219DD5023FC457683206257789DE6D9A67461C3744A1F8 +A910038A749A642EBBF6FB5A01FBD7F3901211DFCD238904BE8C304230A4B753 +8AA3737928D60E2E180A418E524E5FAE026C74DDFDF1EA7C17BFFBC1F4BDBE2E +9AF347B9DC2660A34E3E43B3267F1C3F46FAAE2F23B0DDA62A772224EE6631D0 +DF92F9C640672801A45C37F6ACFDA24B398C0B6DA148FECCE175C5600A1A8BF9 +407EC9DE18A8590223348E5833FDA9110627A673CF0C584622074FABC046F9E4 +27EDF30EFD169A4F704F9165B1EF14DB2697D8B4DFAADCC93DEDC8AA92340FC5 +9EE4ADBF62C7CDD6C59BF6213A632E310F6B5839203FBC4394A7555A24F5E48C +F6C0CCEB3B2274195272BD8F7D4F2DBED85F14F728C724F830C2C9CD88D5F494 +91982FFF41D1B70CC0198B785F96E48E020D21CA5A38617E12C04DF650E240B8 +52051A7602C5B96274280742FDEE8AB5FB60E18D29164BCA6A20BA0334ED7FFA +5519D94ACA804AE16D07B4C1B60E19A4C4314D6577DB7F17987BC9EA21973902 +2860C11DBEBE1CDC157D382CD10E102F98DD2B211B3DD3DC2CB700D899CEDC63 +E876A35D6280574B6CA732F3DE9BBFE9E94EBA49FC92804C362DF5A1EC53E39C +2353552D5D6A0D3EF8B7BD49A7CDF333EF2E7ADD1C24093D72C18E609FFDC2C3 +E226D68D5B171B8A6D6D9CA6FCDC3889AB0112AABDB6CD26559D1C31097524CA +06DFA9AB38FF75816A9553C9F91AD615599B32D410938C5BC5DCA1C60D257EA5 +7505FB3A38031A9531C4F38A553636C45D7485192C1F08FAF48AED17DBE81B87 +53ADF7C79E087D0B341160906A798B71F9605E5D024B220DAA367F548020D1E7 +D1613FCA9D0F372E9A5954E5CEC8CA5BF1E5A3ED0E9481AC42411E0A709FF083 +B868485081FE1ABDBA264899FD8BB1A26E4C2204143B1E89AB5F7B96FDA0F401 +034AA3CE8000DA6E608DB5618056F0DE55F701A63D85BBC62A9DF4B29185C35A +A6157DFE1892E52755C4AF55DFAFB98F2C88977249C80AF8F4CFFAB57B37F0CC +64514EEB85DCCE95EDBBDFCCAB9AB2DCCD0728FD0D8236E1A0B43CB850A815FA +2CC12AD3E2CD87485599111D4C8D3ED348BEB23DEA7EBACA3D7DB67D169E9335 +3B78638B3AF9336173B743345EEEC30F1FCA4BC7152365B6D1247B02D52269D5 +0BFD96A1920E64E737AF47A894E83D13CB1F2B2CD05E9951622984B12DAAD5BD +A959431C017A5DCDCA745065C8AE67A9DB0E37395E1E3850004FEC6BD567889F +F477531712CEAD75EC6D1BFA20539C54AF05F0458CAFB02616CB069623E3941A +A9A1DE01F5067AF08AC7022108618159378E43E6188065B9ABD3AA46325701C3 +546CABF63F356EB2C3C4EEE9526BD95A9D38D5A5640E776437A0ABD981B6449D +C7C12658B58226F606629A625D9C1F70AD759640CFECE9DF50B96F6DB9C6BCFB +3279708EC4CFBB673921AFDF8EF8BBECF0139619269AA53D387C80DDEEB7DE07 +46005A67B6D619AF7C314418F2079291013FFD63DBF0A0E08D087C4C5DE71A73 +08B40135BA997CDCCE777B796FAB9681D81DC6FDB18A8F43B31E330BE53C36CE +9B91D5A129222B4E281AB0D9024A90EDDF5C903AD1E1329765AB5BBB88BA7DC8 +A0A801D34F8887222B915455A26FAFBF8B4820EA12D9EA08B850563964E18BA8 +931160685160973E5CD1F0AE11CDD6585CCBE7F93F07B3E6EC87FC78CD2BE80D +F9632AC09144F4551870CB2536DB2A43730EDC6ADA2C41B5D2591E9166CEFE37 +424C1879C263F53833C577B017BB3DA9F074EDB74C92D3F5BE7F28A699F495AE +662DDA624B8C48801A09F2A1A02D21299A5146CE180DB8C804E70501594074FA +64EA5B55364915084F016F79C7D0E51FB31ED38AA717F4326D4119AC5A354554 +FB664B51D70EF433DC71AB834E7BD5B71AD7BDEF26D85F1A47AB7E1A05ED1672 +C9A69D1D09C9935843DB7DEA95906C9A0AC65F08E11A70028A6CBDE13CF06AE3 +0A94113AF8DB9C6EF35FCF21181D32FF147266263E12A8254903FDA3D4A150E1 +6B2E995F93075C2CB8F184CFF361C6759A354B2CDD077E7E87868F402AD78258 +A8F2B885D397C8408AA0844E9F1DC97ABEFE7C8215D7503410EB441877C5D851 +5C5046A5AF8000D828F162F6DB9B68CEE73A35D107CD2B57ABD9E3E4B9255D9D +8DD8C80DF021270B420A6EF7077055698C10C8BC504905B1E7DFD42DD8939846 +90C7C0B1819463D1287DB8D742D5FC04818C8B6C191BD6688F83543BFC3DB177 +D4AF5FE7C52CD35133B97F3DBE73F5B64D8D65DCA615FB55CB6CD58D5BDA3E3E +034AE30B88E204AFFDE1A8C2C32714C079D859C84A13E058961E0D6747595CCD +064AAECE0035768FAFF64D4C66F710613A860B10D11DB248052A9227C8697BF9 +F2F1D127CBDF671D897029E64769CEF395DC2A70940CF535E44815DBD178DB15 +1757FC8ABFFF4318A50AD2F0DBA6620A2A134EC9DBEC4060C20E5D2E89062C7F +662E852F6F61640C71198C403A3435B4729CBDC3E5BED447B2B626F172A81226 +9DE2869FF03087C4764D42A0ED8C22F6D62D48BAEB7235F756077542B9846028 +DBE9A845E37FE749DC4F8600659A1993E855AAEF3629253110FCE1045F510121 +7C6A866AFE4D4049ACFDF6993996A2E5152DF202E1B5832C56C501F630BA5061 +81B09786E207A5C81ED2FC7A7C0FEFD2349934FA6B3BC379A1B3C99CE97727F9 +A7DB9ED066A05FB5FC63AEF7E764F44664D1AC5242EA74181E6F4A7E66BD4F4D +703C78190885C1462413757E05B14F2DCB2032EAF44C1D9AB19145D689E1E2D0 +329E8D06175579B19110840E0799D9054E53A05E8E36BE2546EFEB137F3BAFA8 +D47FC2ABCF741690B33531A07CD04DD2A304A9DB1E4DA2AAD9B6DCAD1A0D8D31 +9EEC6C9D6AE941FADA4B215AA4943010158831980F02B9533447DF8C3247BAB0 +F11B66A881BAB9FF79365286C3133A409DFA285FC63BC278E46D82410EAD0B66 +7E684DAD59EC426A65F9AD537861CB2A35042EBDEE74544BD5BEA27F95C3AA61 +A240D7208F41C65FB37B9181871638BBA7B6C14EA2EC98E6252470B21F217E89 +D290F35E9B5A8AE2066C151F0038F25BF00BC34D2A0E4E8A09D729A83824297B +A5DD0530EE95ABAE6716C1006893BA410B81806591E6FE5E5579357D7E638F00 +6C053C1D7EE9210C8A692602D99B70DA211B440BD33819A72244F9624902B158 +720BBACB04B0952353B26F0CDC21777F212982E5A6CB86666F4B7EA8705F34B5 +F23AB1257D27179C1327AD276C7EBDD958E9F298136B48F817D8C1E2471E1937 +11545D0014ED36A35CAC3B9FA6618A09DB1F58B66096101CFAC59536D2FFBDC8 +8282248C07C458CDD6F4F82547EDA4208F9A013CDE37825774AA3B6E335FD53C +0B2413385440A35C914610E5B8CE2A651E5887FE8A78129E91FDF7F61020EF89 +656E64E8E61C77B04FFE0A8FD56B88B1FC0B22385B47D0DF8159BFC935CE516D +7569300D17BDE9A334D2735BBCBDE727F637713649519A904B7882D2F2D7AB4D +0F222A56A7822FB875047220272A11A9616CCBE573F09002589DFAE6B65D086D +A106A5CE2B0C456848957F70A283860E5FF004086EE5E3881FB673B9D49874E1 +C75CB39F1352524B4406C3C998E63FA1B1251A1FEA5E35986C56E52B2D1E66EA +6A8CE118CB1EB7D69FBEF9593663AC861E5E7FA10C89A54DDE8C52FB3B634F65 +6E97438EEB137A03A68F6059A6A304ADA49CAFD61DEB90C47BFAEEA5EA01803C +0FF1033BE01612145358BA218A67D4D047D69FD39E64A2CA0D096484397D45F7 +9DA8BD45AF96FB8DE0CE7EED1B247645FD56DB2F2009B41DB6A8782563CD351F +E7367E39F45158FEBE4858A56D810167B61633C847183D35D4156BC7F5DB9FA0 +A6B2CE2D89940BD35D79200FD4311F0480795CD6F31F607ABFAE18160A0734A5 +0CECD0653933C6538F984F0520883B4AFECFB019A5F7CBB32CA2FB71EC82B015 +BA69CFD455CCA8C8CF8C27274052F301BCC2FA58A1A505589D2E3A448365D1F4 +573497D3911F41A6B3516F3271FC60BE9F979EF79BC36A534A55FBA90A260164 +A7BEA283E74F82383FDCB1B2B7E7E5ED64E13472D2E92453EE5A7E9CF0910DA8 +6F7C5E1A46DFEE5F01FCDC4BB3052CC39E097D9B3FBFA352A7E4254826AEC52A +D93ADBE1F5153E5B9426C4015F3041108B114D622D8629E4ECCBB25C4A4DACFE +064A737F7240613B189DF91035EC65DFBCE76AE8A2E9B166645FCCE1C41B0A47 +59C550C80684467C96A1A6057D0DFCEB462DA12B4A08A7053D2F6D7B66DA87A1 +533DB0EDA6435D41DD8DBF848012272D0D0FC290D982665F5C6202DCCAB0A929 +A11365E6034F7ABBEFD96AE3131FC978766EBE596869FAF56B8BC1D3D76D5AD9 +8130A8AF0A94E5D193828F12BFF6312093F1B6BAAD298CB839DFA2A2F335FADB +80CB26ECC331122ABB1E389447E7834FD4A5833CEF03E26C8C9F8C6B793C10B8 +2AD5AF8F67EAB607ABD3BACC7974487257EDD61DBE6E27E53AE0B35E28093E1D +2416C038E161D70E8DEE6AE7437664A9C57277D6CC000290A0A5CDDC8600DA60 +5F2389A56BABF07B0465EF1C06A550EB524A38F94740B9B386E29E3D4C07194C +F1DBA7E57AA2DA2A48685A1066561D4FD8CFD7A7E7E2A60143FAEB062D3C34B5 +493D7E350234779B36FE05E1BBFFC614E738F37AF1AFE9F6A24C87F47833791F +154990874B078B417E631DDAF683168DD5333B547D3322BDC34248FE16EF462B +3110A506E0FD6D9E52E353C337D2908A6EABCA57D4BF8A30320FF2C9EB09F40A +155C8B9ED6D25DCFA7B47BE0B962A2C7667E07BA5B28D19D2A68718348A91BAB +B19D0B7F325EE4BD9DD5FB3082AB0165E1AFCFF73D74386EC4B242E9BD269B02 +F6F4EC383EB9FF67EB26AD61D749DC0DC956979F60F499CFE94717D19021FF59 +1776CAC92B079707390F5B43A02751A5546A786C1D65BF4173D22A16914BD6FF +860CA83C4C7B083C63649FDC8CAF160FAA8A00773A692A3FE803258460071215 +AF317E848D42987C67D7F91F974FAC9FB1A7340312939F6302E2307B1CDCD4D7 +81B06FEC97AE75953A0B81FCF6ED6204B83A20AE54FC8B20BEF3C617BE6C6918 +3343853B8112E1955C9588194C2D098F0B4B82D3FFAD3540FBA36F91CF30C12D +34082E154839D2D146296AA6AAA66D75567E77A8B6149A4A61DF84FCD8AC25D0 +575B231CE23085742109B87E6267D6C10EB5E422CEFCE7495F2FCEE08AB4E79F +6C8884D52025B188F015B1B12CA97F4312C0EADFF259C641D1709F4E2AC1F6C8 +A5685B0949F8A90932CD1163AB27FD7C001FC45FF1B6F00428C405781EF01F2A +68B268DF9521E0560C25532C5F69F4726DD73FFCC4719010B3AA354A8BF6A5D5 +7EFF261DA974A62D11B7D3917950AF2CE3B416648E14DC4BD32BFEA552ED125E +71357666762FE89C0D0F790D883B17340EC5569B2DB1289E293BB17AD9A0288E +B8F2CAE11F3A66BA352BE711DA7B17E5B81BDA0AF460C5467FE3FA085D52370D +43480C28FE67FE24FDF01150087CDBFE4CD3A87F4FC16D1DED415F2D891301BD +C31198C36703D91BC4957C78DF27A678919505F1488A8731AF46279B22729DC2 +F01B7D76EEDD966E77D75506A96D9092AAEAB7C5427BAF4FF9F769068B96F5C7 +6D01A10A19B080D9BAA099E65F64A379F6379EDA59B171E42D8C064B62BAF5C7 +D4BC986A5713480B68DFB6636435D089AE69A344C1D9574A64E13A43AAC254CE +BCF49A42C505009F4AFCBFE7F8667FB5914F07FE4EB3805AC58464FF8026FA43 +973C6C9197E14CD8A619454139F44EA191A19A2C08922E3560EA5DD0DCE57F9F +F8A0B223B1189C9B1C8C194B8C21EE962CAF2F3CEE9D5D39883884CDB90F9934 +6E456001D08AA572C03F4D331BE1A68FD408D1C293A75860E50C502B5C610FB2 +D6482D1A7B9D373539E8AD0C53CF968D40FC6DAEB149E68A4ABBFD0F913FC973 +328D1587CB7CE4AF1CC348988ADAF02ACE4EF032F1EBBCC096D61BD7D1ABD93A +F50158B0F0A5F2A33E8E6C913C881064948D2CA43FFBE21235ECF0F5BA7AC1F9 +24F15FEACB4AE8298D3605FCD08612B8EDF4CDBCF3F895A19481060193C18E41 +E6255085699AFDAB98393605EB377F7EBD25E24E077BC9568AF4BC4C85AF0CCD +8D5B824EC163676204A8E9FBFC4F37D2FED84DC32556934E593E15CA50F009E6 +10CBF667B8F51B72EC6A041EA45A5403B4F469068B96F2A46182BFBA5C408B11 +F851C9ADF7D0CD1AF20993A0FC4E93B501B12AF7CADABDB3E4B1B750A64500D6 +CC7A14A31F7053697D4269C17299A71A3D71AD2ECB23102B682023DA0CB9EC56 +B26E065A344F0A7750DE134BB8406E29F966F1FBF7177F94AE4D6997AD6BA451 +5185F636AA6D7DF1ED5D706EEBE8830874A9443D307D3375C90737CE43B15FEF +282D2715F9FDA7D830E1FBAEC50F70CDAE8514ABC525BA138323948002637CA1 +2C62255FC54F60B3689D52009FB5EFE995BC2C2A928EAACCFE6E79F57F244EEF +2BB5BF8A251BF2152327F77587B653647EB6D776EBC73D315C6A5C6E5A582F1C +1634BCD70A705DE6FC9648E0BA10DCA233ACE1F665E81955D969A2B50DAAC091 +ECD37B466C88F081D0996F2887AEBAD7CDE1802A3EB8BBAC059E77843AB97773 +16722096264722C4B12E5B8C74880A7413F80A74EE2DDDDF061BD838C5066539 +A10755FFDAD06F8E219B56522E1A9B23B06E0883845F6AD316123626A38E4BE4 +801F49E96AB0CC12DF0DD89994AB5E81FE1ABDBA264899FD8BB1A26E4C24E310 +FC74991F4179667E2A31951C63F5EBCC5FC0B03C91ECA5A184A519C3DEA6889C +857AD9AC0B80B5CC23C8A2EB23C7AFC9EB6B25DE5443C81AC49BB845E88D0973 +2D3AB025320FBFAC0AC433092A27A5AE85B3B61B91E91DFFBBAEAEFE7B416516 +C34C54B8C95AFB7499527F98A013FDF3307FB0987405AB3913D833F2B5EC4588 +3D2C700A1D58F29B04CB1B2376425D2B2CA27C4CDEAC89067F873BDE97692C46 +4A97F10A7E363AFC6CAA2FF6B0AC66DF75780C08A94D675FC50E7BCC7FD6D67B +FC9BCA4E8B6809C79D5EE388DDE92F1DB6FF7FE607B8ECA12177C12AAEC1CF1F +576EE13E3F394927F97628D38D537C44898FAC9543994CE65A13C4E5F804DDE8 +1C8CF706812CE4516169FB0C68E45DF2EACC5D48EDFD758372D6FE28B419FD4B +8F0DDBE73C97A68D1E9910A33BCC14C3DBBF67231776925E79C60EB64E687E93 +4B8488DAE97E08179522872F228F6823D5BB1132C42C6489BEEA0B329B34A10B +A4315EA90E28C56224CB5AA25A314DC836B1FFF326F8E5E6B879B9C277756308 +626093D94BFE63C2301E3DE6321E7660A5B914E04456DE7357ED6336562187DB +43DACF1B88468C2A1997C3D6AAC538B46E5206D47649CBEC5B926E142A0E9EC7 +52170AC6AD5A3469192C1E619ECC0CD90A356CAD073EBCBB4383A7FBAB972E9A +DB647C425FFF6966BD9327B961FC67B2A5A18268560917B2A7265C3F17EF9266 +8FF0C733EC605B82B2D44AC5AC3524A37B4B7B953E1A651EB58CD9A51ECFFC73 +7C414F5A26AB21E3BF960485EAB571D3BF49B8393A4EB57E0C19E903D3CCD64E +5FDD75AD3F4E276F2127FC7673E221C87555817BE0A9FF49785C0A0A2B1C95F2 +81E01090DD4E14A49792A41FCDB0429A0F9DCD5AC28AD40E4A31CE8F31DEA82E +2D45D45AE9736E3568888C89C095374BC2D791D851CA4C7F107C96C42BB50428 +F390A9E7BC970252D1EA958BB8AC1EA0D59CA135B69808A948A35B8EE066E9A3 +E3965EA1A04E90C57C65AD828414C293BCBD09883E3130C656F405E235E4549E +8BADA21D558DD0ABF07C81926CC308FC26DFE02935889CAA3A54DD05634B839E +FBF0D663234E3798CBF687F1F8222CCF81D370EA6C68BA95130DFB44512F8ED3 +1B9D180162D6D64C5179A1F2639330DD91A53B81938EFBF6EFD4DF196C462A2E +51A1BBFB61AD2DF56574E1532DACF52B3768D801FFB9324B0D88C63D583D1AA7 +FE5B6FFF97A630258ECB77BC76E0908328EFFFF31B3020EDF59FD7809C81B143 +BD48B95306C634890978CD0A657BFF310056D426E4D24C90B622366C77049435 +49541DE225885E0C366AA0F714380ABE95A351BA9BB82DAD11C1CA782B89E1E6 +89C8C563B8FAAA1CCE9F6AE886EBE51F9F1D1094E29D5FBAE51101B464EC0DCD +C4ADA03CB2AFBE309437DDAF5AAA31F6BCF32E01D40022B4AB98C15CFA4C68FD +387F042C2DC9196A7B32A7B4F5215CAC7F2AB00F301CCD238D7A64AC4D6B1056 +8B505F8FC581E3A0B9C7B2590D3D5642FBB229C405CA23DB576384D456A06FAC +18CAE62EFE233240986D7BC3B3B23CE34B34A2A35C990AA0DD077BE121B35091 +DA8FBAE25A826AEACDE99E785C1A8B26301F2BC0391782D70C793F7CFEEEB699 +048230D71B375452E6FE4DB29C241102646DE3383DD214B72FD82A415B39BCE7 +8F8DE2725BD7F0934E467D0826C06AD19614EB0F5F133D8C1590C4B9406CE746 +1AD5BAB068D87A8859BD9213144AF94AB817FA67F292A7E0C906762991F88B89 +C82E722DAF3AE4D75B5F59448FB8C0819958C26485FC184E9B776AF10AD5AB91 +E580DF80FCEFE43D6B2459CFB1CB9BB3D33A9CFE3515DB1B2049F83AA204C02B +5168A341869171F44A2A99BF11BC01959BF7AAD4F69E93B1997469D73D4AEFE1 +F461F65667E54064CF54C8E0A9861D1BE57D7B2C537FBCF8706FE1823BC63805 +C34CCAF497CDC4A3EA3AED7A01EA4CB3EAA898EAD761ABFAF15984D2B044BCBC +8433D77C7AA5A37C53BF4715E339375D60A52A74E175C64DE59E1090401224A2 +9D191940E81FF44A49C4B613A386B6D57C09F26B15AC2CE715377E5C4D03BC67 +9A219E5E1152A79A54D989D5DC6A80CA4B11F62A03FEEF0818BB2F3733893708 +967EC7F18E90B1F1A12CE715377E5C4D03BC679A219E5E1152A8A8788FAD2E87 +BD53E7448D3F583661A0363B4654679360DE94A091A27E7846269577431F6461 +DDD6CB51BFDC58A24D65F629BA7377BE3E711EB159429A5A869916E9AFED62CE +0D7ECDE6E15FECC354CE0EC01FD94DCF30BA11A75A560531DA6C89E780F6BD87 +7E42030D4826C8B7A389209BC7192A3435B4CB994AF8C73EA46713C28573A8F3 +7DB9DD44A5DD3F3FE40E6867A00156D51B0CD513DDDB4F0AC076F5D2B487A033 +99B49695B68AE836CF1E4D95BF4AD2E4DF3C2979CD52AB80EF33C600054689DC +D272268665A35076028EBB5B66E6B136A46E5DFCC01551E25487EF37BDFF180D +6275CA7F8ADE9B36F8122A5F0F7CC5FAE60EC412240A4D2354CEECCE954971F0 +9F24646BB6027B53669A2BF5FD6C097D903E87B291F94D0DF4EF9D5B56E3534D +6A361629643BE95D94675309B202E4A68D9C51734F671F3FDAFDB2E478074EB7 +EE129FDD2DD168E308DDAD1246012DFE762D7D2CFF974F873CCD5C71A9DC4AF3 +48FEBCAEB26F2E3054A705AE4325C7C39348FBDF8DAEA6AE3FF4E0C9A5C6D5DD +CDCA80FF41B8EFDD958B95EDE2BED3065902565768547B24209BD3D810926D8B +5694E1626389C0234922B0DFEF215E559F899E73074AFBDDC51569FD1157F31A +1B749C0A4F72FFD31EBB90CFE470069F7013E01B4962EDE2AAC1A0873017C20B +65C4CD9D53423EA9D09CD2ED2B07EA1BF25540F71DFC55988B0BE4AA2722B21D +A5486F6C7E2388D435E805A96D0229779A26FC98D65394904AB44842F006C8AF +078126E4FA8ABB03A01FE032E58C488CCF26014F57BD2707948D36AA99C610D5 +739BFDCDD9C72073F273A3C10AB202E4A68D9C51734F671F3FDAFDB2E29603D5 +0858C7636D63DE6FD2822C03FC92F7043445D4E0ECD9DBD4A906A01B06F3D485 +A7D5DB986A59BA0652A206A7ABC43E1020A1F27153C874C9C11EE19DBF11EB72 +6EEF50809569A754628938A720257FFEF74B4151CAA470B5F7F6259B99859A65 +C143C8FD8954BE35310605EF8CB42BB7DDD62B2A2AB7949382A87B8C889C323A +067FB3098FF161EC94A7B673BA54C6226DAFAD36DB76A780F7B22B40FC951443 +856541DAF493D83C6C218FEF84D154BC982842784C178B6D02717B7B2F494AE9 +E9E6FDE07B162D1A252F1FB0ADE8AF9C5E20FA47D454352897835C5005345653 +A94FA32758B6ED119B884F15848056125696D317E1A9D2C72DF5CD1F3C1F15C2 +C062E837FF8D88E6A57C4592D9E75CD5BC97D92B6E98B199BD156464C24C54F9 +50D4E2C55F7490D6C8B22B497F56BFF110067E64500537718B74B841330A2844 +60169AA4B8DAE16D4B7217D38C76F5B755E11A71838D96BF029FCAF29D00C325 +FA16CB52AB80EF33C600054689DCD2722686616E6A620331C5B7386B2BF7C9E6 +494D072E4DA028946B1CA6098516B587F21FEB918BB7C0B4F7CD6603550E9C04 +F3D2E9322393199948F718AE3F2811090818078B97D73732F691C6FFDB6B8E22 +6096B1ABB917C123F0B59850B3EB48C71BD29A6DDE8802B8B9A44F198FE67452 +4DE4988C85E46121022AB514B6F412E7ADC63F0834F31E53D51A3276A114EC8B +B11850DC37561DCC11519538CE78D9846B799D8AE3FA9B105AF0132A6F89E18C +410ED9FB59E79E79C5755890D210A10AD0B9319AA1B972F0678BF43D83CBA067 +0D46EEDCA741D01C0F44E27C670038CB1E8B8F7D2F9A5AB094A92C5DB56F5E03 +566F1D57A97CE3C21C61DEB9317FCF4A5D62EC766D90D8106BC2D90B737C5292 +17C9AA9346C4C5566034793611603BEA4173B6302A8796B3461BF5AE38C83FF4 +56B5C435CE8BCE30C854EABA1498CDEF8BD9F3DBA70F422DBDC46F556B5633BE +9CA9C20B62EB463E4AFFDCEB24EF02F10B1F205407839B3EDAAF5DB023B3AEF3 +444FC2C65B633801219279DCFE20A390C6F427C6A79A2DB1F88B93911DF7322B +C952C8931486A8CBBAE4FA737C414F5A26AB21E3BF960485EAB573B214399868 +C99D30F228F6493A6A242F6CEF3C7A18032A418AF4826546A32BADCDAAD35C24 +AA72AE9F5298B896F8A6F0F131C767DF438A9981B11495D7A23752762CA027D2 +4DFD16E33C47B289C0A632CA1902B7509546FDF9A4B7DBAC044C7D2DD24979B3 +BB594850D116CFBF802E5A0A3C6099B6D3B0749EC555FC2F71C41035F23CDB0D +D546C72D112DF7325A9498FA22E0703B3D6E178FF77CF9686A8CDB1A279AEE00 +761CB99C9F4B06AF02333E47B16D2B84012920F318C2D83174E871F8791F238E +D37F663D8A18589D7D3E056E8449D581B2367B42568636720E1B77BF14C9A9A4 +F3974D03A50105C5635A2CC39B1F984FAF3FB033DCA43DFE85D838577E9DCE8A +7DB790FBDAD6ADFF676568D96C31A06E36F445DBFF0C8368A9D0420FA967C016 +557D69AAAE203233222F1F99A34BBE482EBFE75215D6B910D2342C13A68553CA +09ABA7F639066BA401006CCFEBD0E76CC1124E63873EC90A67F71347F42BAC73 +E7962B54E1D63AD88F9DD4E29F24577C81755BE196BAEA1B6872CA56A95F558E +B0B8A80E02C9262BC51F55C7FF123FE5CEF55EC5AC65D96B13EBD840CD15B41E +36C19D3F94FC3828B789FB635CF3B90397E5EF6996592E6C5C84306C376C4038 +9ECD5BB2834F17B362081CBAB8103D4A9E082E09037CB7D9DF4593804226B009 +7145C2356F93886581FAF9B1CEBE18C61D53C386A53E3314FA7F94C837400FA6 +77C305B2C38FDE31F2A970E8FFFF566E55DC836247A9F121A12E2FEED96986D5 +8243998831DFB45CF3C4E82989068F18C8F00517261B62D5380FCCB5CCB44F4C +B2059F95B1598E6E885C6207D74CFF47E31A57FFA78AD7B5CC1F6650249E8513 +07F57021BBF4611463FBD948427FF67D2878FEE345C4D18E333CDF16A935049B +FFC04F752C2E1C3621482AA69170D8C568B97BD4280027034258F178E6266B7F +D3420152E1BD4A750D8B4E3B3E05FA9E962DC65E66F47D9E84A54BE3678F947D +6F52481693F73813927CF20515FD380773AC3BCB38880D15924113E9EFF26ED9 +2B3D78706987CEA28480FB6D901187B6A576D1F082D7E51435376C52D5C7E67F +D88DFE356A3D2733F05D50C0E2C36C0D34E237C9582217693A51AD7D63DD7694 +F9E97D99EC8C78B8282476A86AE569E0AF983BCA83BA18E4F5728198DE69065D +E0F67F0ABBB2D3658A1117CD469FCF121D8FE4FF4042E05A4F981E33CA2A3D1D +14F0704EC5918843E1BD0567637ED41B06B0609AD46F23B19B4D0C7F398DA905 +FAB4DBA514BEB2689CD18C799992D38EBA3D9A9F725C9F22B1C63D9326B73B17 +B66408FBE7681D9B46963FD5F63D4F16AE2506A7CF2D521BF20A768752618964 +1875C81F7EC4C2B864928B6B916594A29E0E16FBAE770882E9BC228429ADD497 +8BC0A27D0FD1B75EC9532876F34DFD046F12B9440A72B7084ADD5D2F4E7C32EC +AE7C793CC44311285896CDEC1C094B840455E98A7696168BFDA0806EFEE13AC0 +E7BACFBC5739C8802417EC23CB153CBA7135EFE32530B02636A114D28B671073 +05F5FEE7658763641336AE12BBAA2E3BEF1290614B8D33D662DAE00DB1280A4E +DC16A1CF2936EA04C81DADA7046A035589C4705E278ABD524E03A42C91FF483C +861AB9A995697B4A13CE21A6312D755E2978C02DE70F8435D1865DD0E6305207 +F1E959F1D7B89D9C1384A837EA9D6A443A5890CD113E9E64339B68114C12F1BA +77AE8160BC8CAAFDF0665259D89E8FD7BB304B9CA27AE6F95C171CFC0E86F85E +90258AC6704F84C94EFBC3A6B5B97E0F0E584DE6D4A6E5DBCE25DA868880E33C +A6A2348E1D30482B6E842208AAB675E3240832F4578998C8B34A690EFD95A6A7 +4379B059DCE0D9FAD18308EC3147ACCB855A1BF8D94A1A3FEE76E521C3CF1D6E +61513E77405CB38C7A634A163916758FA93230718AC63F5BEE429ECB69FBBEDA +E378D9CBADCE8459A9754CAD9C718B6F78D10BDFE819DFAD491DC49938285E42 +803C256E22E5020411CCB229C4467BD081EB8C6BB72235109F6B2422FCC15F41 +B9A08D9BCE353360AA204DF185DE9B347370E65E99DC21DE65D39AE8EE1DDF81 +4692A30AD647BCE7ECE5D82E0CD62913AC93C2E1D653DFB3F4DEAC5B9C553E27 +5067A972F70AB118DFF54F714F90D6807D8ECC3B6765B6BD246B289D0AC044AB +7E5F1EC379D553953849282CCCC9BA822F9D945E59543464ADCEE59AFB323431 +22337E742979B4BC35B218888E83F8664FF2DFF10C46749D3E72C037DA1A35D9 +1A66810993B28FE58CC805DEE1774DE3E07D9180AB50D783602B59A682B773C7 +7760FD5A70925AFEDE15599B3237B67CA29A0F1539C9476943E00696C6F12ACD +61364A8A9B48C053712C8BC6F293085CB54FF1C9FA34E9B2ABBF587BC56E86E7 +54EFDA16BCA54C1097C23028235330CDEF4C4DBB7943AAC99F499C0077A4442D +A677863908F768B6866A964AC86C2BC64059875CA3B906A9176343F84C33EB31 +3E70DFFD0B0C90C0A012926E1E7D4C00313429483C283A61B6ECA13C64763F69 +325E013CFA0B99D004477C8686EFAC60A84F3F9F280E1AA9A3036535A5AF2902 +011CEBD73E5C4961CFB0F9428E7A63180718D15FD9DCE3E7E279FF54F3D41ADD +1CC142E36FA11127279FFBAF2B795B7A0F8FDA3E8FE730FE95710515A4CDE998 +9B81F3D1279BBE1DA81A890B9FEBE156696CA8E587497FDEC0C0394B21FD7F59 +58D8736435CBD2A956D695BF80425C836BB2FE5CB2E8DED423AFAC1A9A796D69 +BFEADC70E9E4E29ACCE3F05E1C89F96C6712FCF85C95571926E6D9FF512FFFB7 +A1A92FDB2922A4ADD703C2BB60218D2DFF0A29945D6BF45E730F9DA07A61F1B8 +74BA6AB0F43F3A7274F742BBF92E4D31DB05369F62CB781BF422D60E37548AE7 +64096AFFD5B2E65600C1ADEB887216070D774EC44831F8AF160740ECB1C76DFF +049DF6DE2135CD1C89F2B2A17DDFA1089D1EFAC797B31D609D0ED4BFC7975375 +3D44CA1443C144EBDF1EFABE4ADEF19939F3D199418C777EE1EDDB98DE646B42 +57AB70D26D0DA64CEEFEDAD6C697F2749F4A3CC98E7DA8CAB834362ED2CF4436 +3C40932BB8468C530A501423A20145713A3BEF04C54E773764ACEA02956C90C0 +BCAD56FE2546C66916A90E3E9118F75C093AA734B26AB810A0895DF75CBC15E3 +244330D831533B41086F2AB69CC065C969F4361E5273DA715BE8EBBBFC636370 +F21007FF6F0652C8440E9D463548AB422C2551BBA009DDB2ABE0E00449643C29 +5B2C5D7C15C8CD09CCBA759CCA28A1E598E9228898D5798664FE29D8627E0185 +E7D59C864D443B66E2FC9C842ED277F7AB2E72FFBA16DEF1E3DF492E31AA77AD +96270F0C267CBE3EAE36ACDF1C6DB54A0F8D9620B7531A5EACAED041A430A808 +D7D95CC4907AFA32066CB2F8E9AB73CAB5CB605B4B3809C7E3ECFE72D0B608BE +01D36B4B2E3B862C3AFC9EC243CB707BA1B2105085D1553D0C4E9DF81B2CF4F3 +95DDFF0E73C16B84B1A26121744435A0286EAD53C28594E9412FD225E5D4B24C +AA380B5EBFC65565CAB2143ABDFA4A73702A47639D774DF033CD11D6902DCF90 +282DE4A72FEF7BA32755ACEC988D179B2EA3602BAEA4B040DC8FEADD285B9C2E +839A610501693CC8E7EDD5916134F4A403284E8596205304EE061CB4F460BD82 +83DC9CD1C81B9513AF2F44B26DA284919A6E27C71C390C344CE928E0307D8A44 +3E8D8D78F70AFFEE9BFB4DA35888F63501324490FE5626C85482B7710623A21D +85FBC05801A766219CD91B60F690434B97E9CAE9826F4AA8FF66FC0EC76C77C3 +A618C1C7F83112DC134D23DCAAB91C740DA51F07A0C3A8757BDEA4E71E771F3F +B13412F77FFE1CB1CE9661537A84CB9A7A44CA074E759E91E17525909FD73ADD +3EE089F7D24725E552A2361CA16F2E2F8EA67E1119D43C307C17A0D83B1D23ED +27CBE515B3D5859FBE0682043A56ADC48EE3995B7222813CE3E32A46986D1902 +9F54CA525B1C70B0BA38AFF2D98A53E2E7C825292E27299301E392ADA9147D59 +B677CEB6C24BB8CC2A20E3972BE91D9AF51BF070E12C42728026DDBACE1EBCE9 +F812C3AD445193BC62EAF60A8505E00CC262DB1D363EB5DBC98B7DB51CBCF92E +3F41F31BF88F7B480E1956704E79FCD1EE08A51B8A5305D47C7236A44EB69A87 +062DE8F50800760C11AF00791984158514BBEB9A6A14AD0EC93784B7C627561D +54F1C74FBD95E78500879B375DFC83FF8BAEBAE13EBD4C84CB5397D179434508 +253338E680D589BACA955A6F03B58AE5C5DE1F41966C6DB970DC7D560442A175 +D37A71691E9CE5D30FC88D5B02223D1466A6D2E7EF015C74AFCE52C532750A97 +2AB4473353E256FE1580955744286F89E913D024B8F3B4BE56F3E344A751CEEF +082E9870B6EB3E98EFFD2F1F68C427222392E1CC7C2EE0EC7EB9DDF509AAB519 +91D3B35C94EEF01CF85913172D2FD2797602592D517B2DA362642504CD532525 +01C269442C1747473ED6CCC170A6CB7D5CFD47527E825B1ACB2EBBFE581A6DD1 +A129222BF5660DC9507357B0C5D68878B068AD48561DD5AFC45D88054B8FB0ED +BAEB532CF9119CC8201090E753792EE23B7A4846BC2665C2697FA09AB668003A +7A5D59448FB8C0819958C26485FC184E9992DD7C9B4B54128764534F2E040D45 +8B5BC1CBD16EB37C370017E4FE42BF0ADACC467D1820124F804FC126E4A0FCB1 +710F35988C8379A9415DCEC74C9E741C3E03AB9EB0BB16B88AE79F0B314D756E +04CC485B2C61F6564CF99A5FD751608A6DBDF48E56E9326C2F31E45968E23C7F +A311E058456E0E11D1573565EDF91F7C78DCDC18A9E14590A68C7C12C585205D +8C76E6540FE896E01C6D371EDFBB23CA066C86B234E6232BC798A497406E558C +CA7810A83B29BE85D1DF56085EF495AAAA002172C3555030176418639630E20E +3D9D1DCAE34DABADCD76886046F6D0F8C3A3D3E95AD641030CFE6DBE4B43B4F1 +666FFA98C1933B66837DEDD0ED2C921A81B52D045277A3E76EBA27511B4CF0FF +6C22FD66545EB33D02AC5B154BCF99217F8DE0C73E2DA3D5FB28066BD935A6E8 +BD18637EC58B31929781880608A5E06E4F7ADDA78B75175DED074B726841D354 +8078A1D22EE340948AEDDFE8AD142D69D9077600B034AC0BA148387E259C2073 +A8E26B9880367015E85506E704FE9646D327DA01637CEEED32FF895777600523 +860C129A348707645EEC2C8E3418E15D1F24C629AC94BB8D404CFD46612764D8 +E273443DBBACDD038E74E3014C4D0C2C9DD587271A7F44DE6832985E68B8286F +3EA1D67C86CDA81C2EA065FA8DB08A030A9C5E546098F5C4199570C607C1BEBF +60837B3207073770A7D8EDD301193CA72A2EB3C71B994C95962826C313F48E1A +FFD161A56F1882CE652F68BC166B910151D060952E960143C1D3B913722B2F6C +2CC2C06E326AAE51977595407F0B79150E4DA4D7E16592962E5BECAE4BB58A45 +B825449E30F975D496910DD180408B221CFBE92AA67B4902373E3A5348F79AFD +8ADD64A0A7A3E3C3211C4B7D15FF59574B169BDC648AA30B2C9B628074FBFDD9 +759F185C3972FFB870E6E098F242169281079AD5F94F4D4619AB0DF74930F123 +E263D401DCB7FFB35DCC27A148FEF013A88CD22A9B509481AD0A8F3812C07B82 +B28B4E9182DA905D4E3E633D60C6EC3B27AB0ACB1C43AE465486C289172FD5ED +0EDE750AE8FAACB2E810095C85461F01ABA0776F0D0D4F4427567283F4CCC57F +A79FF058B6B2A5EBF203ECC9C8902209068FADEFD34FC0043B23ED74E65B1A33 +74FD4E587E3DFA3BE04171938BB8A2138E2DB585C3DF1DFC79896CC8B8E67BA1 +4B4395CB6BE6E5EBFDDA10B61D47A808750BA94CE6D34CCC91B66CBBE74C668A +B708BD9A18C85C14E06F2F3732CEA7241CD77537FC3D5A6F21813FEB05A8FA36 +ACE060A4DDCB10080AE65C8D242034EB1D5B452273112220F8300FDA6CB20B9C +5911FB98940D4933B6AA4CCBAC228D082A56AC235BC19ACED21DA77976FC12D8 +FEDD026C0410A2A1ACA0475A65528262FBBBBCD5A100442D5A1A3CE5CF1EC934 +056855908E36EBFBAFB5ED919E552574B5F8A9F26BA6055086D8902C26CD5282 +F5690DA03C6F4DCAF45A6D3AB54B0A1F4B31A23C79368E8AE855FAA75C808A6B +CBBEC220A84BB201CF6BC4387E07C3F143E2EC549D04CAAA4150D435DC2AE653 +F1BC6121E34D88F09F7D9E42C994A5F6B35C9711651ED82325C6BCCCCE92270D +87206CC6D152A2DA3F3B398338F4E761FC7F111A4A2B31021616D0CBE2AB0CC3 +75A64D2912C93FB5E6FB4570D680A3E8112B67C5DBC28972DA8C42C4D44E3D14 +BE8911C50F492878B0CB8B244DE202F1328DBAA3CB6149918B3DCD84EC45AFB8 +B11C8E2CE1F25F4F698426C4EAB2299AEA936CCBEF41837DDAE1A9E381B10D1A +14B567793B3917C4E5A98BD831E8A9DE3EA3F65056A62319E86D43489A6DF110 +1A87CA08BC6040842D63CDF563C96C8FA1A29BEE5F9C284C70B3887781810212 +1DBD6F72999A2DCDFC954D60ECA4DAB226C822B73B5B1BB430CC446F6FD2D886 +9194FDB0535D5601FA2B757F02EF627C84BB019222FE508BB4A04E6F8FFE3B37 +1C166AA3554E9DB7011AD643DE7E553889B6338A6388EB91B40C21808A739687 +22570F8F59127F24227FAD9CE8ED36C2D36F8B42F2CCE685F61639E0391B3A6C +1F6C01960B2F90470E1805B3578CC148D74B874CBDABD61A2CCFDB7ED0A192C6 +E3D3FD38B22BF1C06ECC47AD630FA79A7C7C51DD10E2B4D77B4B7B9CFD452C5C +C60AF55BD8F9B6D159B105D17B6ED0B4F2FEEE434C96C3FE565820DD1B943DF8 +971CCC3C488D8D4756AC6FAAADEC028715272A3291C255F310F7ED59FC9E048D +94DA58641482D0DEEA55F6EF21A36F45612CC46E078752E48C1A08AFCECA8B99 +F742BEEF53E3DAEA26BA56E9A849C1D912023F74C359FC48197C52FE08EE1BA1 +FC26E7005353AD1C60C658D68DB925410AFADCFF626663380089CA092865535B +6399553AB9982FD72BF46E4880E1EA6D0C707A105FDD79A9E39C505CC538E94A +41EB8E78E6F68AED4CC8E4733785B60C92444DC2A6B49DA91E22F07BB1F079A3 +81A4729F5E5B6A9B976F41123E5CA484D2DF130BB9BC156B1C7FD24E03637B45 +90A8F07330281523A24D3FE3D8A87EC7D1CB438BE9042701C5D20660A651C229 +D3091C4AF21B31144C001AC0C9FB55FFE818E62635687D07D21ABE6A7BF9718A +5AED5F1BF7F3BBAFCD61B6C7D5546DDF27B3E316B423A7F0A49100BEBFAAD5FC +505262ACAA5785C91FE74A9725CF12193C4108D9470B9A634B865129ADDB0CB2 +9BF130A8E39FA995CD0413E5AAC597C3D5041D2C0CB6F43790A6B053222628BD +156C381329B7E996AC8703D6A8B38EA6086071F80FA36F167C7C033A3F4065B0 +1C9C4626B4D48F1BD5BB3282BC7AD2E037DCF90962E945389B6CFA3CC382269C +8EEA251C1C20144F4E256E9BA7C0C23D272D8C092E4324F101970D74E07898EB +92DF9A2445333B54DA9BD31481D93E7E4BF0548344A02B4D568D41399F655803 +061FE19FE5D0A22F073AA09C0993A852F4AD90CAC202D73A94ABD8C5C4A82393 +2F3A12464B730555CD4001B06BABB4E94FEDA09E64E8A834031E2C25B3B563C8 +2556A0D4E6482404454DF62A429CE3257D57E11AB564A93AC274424370A5CFF7 +D902138F759E13390EB0A58C4115B77D01DC0B0247E7619B8C69FD617547ADD7 +021DB9A4892B8C0BBB48D5AA92EFE363E231549D89915D01A9A2B777CF374EC1 +6C8D7D334D5F9E8F69756410EE5FB2D28379705EDA2D28D2F0E3C08518261595 +6985745AAA5AFA54450CA312C837B7DC70ED379BDD2EE09FDBFC01F3C46C0132 +9CB382656452F7186B8612975540EBA76DC59C4B08ABB7857197D4C61B8EFA96 +5502F57A381D8BD10654DD00AA45A7999AB3807085955800D2CD6EC194A376F8 +6CBAD1A79209ABCA57DC5719FBB20EF716E3ADFC5BCFB0880B90BCD0F1E86408 +9EF521150829331E757DDB683159A3986FA225F6C3C9BCDF018ED61BF32D8F4B +04D8F60F4824DBE03BAC5F59B4395881CCB58A2CB3D70A87FBD1EAF16F58DCE3 +112AE637823DD9C778254D3D06CB38D0C557EC9CD63183D4A0BA520601338117 +3924E6DC314C6F921C7527B57EC271061170A1A5CF4A26E78B7B3CD1836A2735 +95B8317E4E50F6325DAA2FA8E3635ACCA09CDE93BCDA243FEB778391F7B71160 +F6F5A9D1E2F89F771993B321824D87D8B4DD8A5169AE0E77E9772DACAF675C93 +440CFD9831080237AAB4AF3C60C68601287BA8CF40CA8DF9B076E697FD268B87 +B99789376B08E26923ADB7239A42946F7312B89C0C385D0EE6CD85C35C09183C +06624F93A6A380C1DF5531307FA0C3DF15953C3020418649370B3B7D5CFC972C +1EF1D3B7C947D04B7C3499BD1FC5191C90BBC7F060F277ED829FB0DB2C57805B +19E0C2B6FC7C8A7F4A3878F51B2A53A6EE2CAA7DC3183FD89C9CC009B0D3CE3D +011A8DCEAD1C0601345A380FE5B6936318B7120EEA2B1F783A4423219A8D5765 +1BE74AECAB27216DA5316B3332839B427F591CCB4BB59BEFCBB468011141AC72 +B6EF26624B980A4F80A93FFF8ED41F4BB1B9B6C1A2C9E034C891A8CB51E6C84A +49755F7F84539A68152D9E4011B86E33E63252900347360F2593FFBF71F481D9 +5FD2A7D940A222CAC0E51A6BC119CC23F185A5CFD3D059A7E8184B1F0F9D158E +83ED469F29B7FD6686D415CA492CBAF81DE7173A3EAB208C69325CF4F5E0DC76 +896F1A3A94B5B400ACD9D5FDCD521319B3A7ACF879C09B34A10BA431538D340D +30763C12F66526FD925D482FFF9FCACCE0234229DB7C9BE4815E7B28EA439C56 +BEFA1E1C15121B36FB490F8D44A7B984B9CDD76179541D92D76367A784AF0AFB +C8246983947E38189E0591873D92BA5A04ECCBB30EC2CF06179166F4443C2D1A +2560CD47CF9B910DCF6AF992DB96196652FBBD2AD9671A2635BCEF556086DED9 +81849F5808CCFC59A67FF99F198B4ECA3BE2711921C3207D794B4CFD846EE663 +0A7D25115DD6CE6BE4FC4FC65678F283BA8721A589F3418F05471E4D253B4E1D +8369A17F3F3D64DEFADD07EB514B18AD7CE0AF9818645B15D84AF3C14DBAF28A +F1CB5492CCD3834A50D4B97B6CF8F8071CD84A3A3ADF983B86E1BF79D5B87DC2 +18F277E52D0399FB15135215E436CFC8443C2C91D411E017EACDE657CEFF63AA +9FB6BA2820E40EB93E569334A8B3B1880A3CB36EE0B2BD4B300010F291855FB2 +6CF971021DDA850AB6CE69A78672D323718C729F4370FEE345C4D18E333CDF16 +A935049BF0E9B099DC6EA38FD2C0EE15B0DB3AFD1899FCB28F0EDCBF3EC06545 +B5D84AC8E0F7075BF25A359F0FEB6717C761F66454B72604302988194A3F0EF3 +FD42DE8E35B0D4764ABAABFDF132F2674F18F0C3549205C343B05D4D80EC1C50 +5262ACAA5784160827E80DE1CBECBA98F22C55159D3794CE68155D397A410CFE +7AAEAD9CEFB1CCA77062F1F013C20DF46672EEEE8CA21C0AC8CCBC8D4BDBEA4D +19DDE02E07486E9E71CBCDC51B3F5CADA8AD07ACC60C6E6866A0048B5C357810 +9C3C4DFDBC5BB43C615A8B5E866268401CCB3632DFB732A74067A4F854BFD4F0 +8A354034AB5F523DB3259603CB1E2AE0F88270FC60EF9ED8D93CC801952CD5B9 +FAC0FDDB1AF966FA3C96586FA88B7E644056B2A41CB83157F61D290E01C2CAD1 +52176B9EB8DD33D9467DF8829E6603AB0B3C3254B1EF9480ADFBF47302944B8E +6890D0A7D6574E8217A7C294028EA0BF22332EE003204F94345FFB71C8D808BF +16665988E300DB4BDBCB3211D3415617DA725C3AF90A0572558A4E9C3C2614BE +46673B0800098054DBEDECA19F3F75E12DA071501004DAA23FE570D4E60DB995 +E902850B2C6AF6905E02E62078DC1DFD661536F52AB3DA27600F6411E7C7D6D7 +D730DF49616D8D3F749AB24AA1D07C600AF6178B18E50243714D4A770E598571 +0E8159A2E8BD1E25370499AB80B176D6CD641D800858F6CB95856B01E0F848AF +C12EFDA830451320EF4FE96FEA4A53FA2C09906F674143D4BB49A9D0A5FE8EA2 +F86C6731BD6A335137FCDD88882DCDFAE75ABFD3EC16DA20462C77C69E5A25A6 +6F7AB745E31B714DB57D8BA4F9E064B2CA7A3C715DFF75C875C3093777207F8A +83303CF54ABB4E20ABEEBFCA45E1B121953402C81BBBF737E9717E289BAA7B5A +5AD932F93F58725C385F1429FF3136C0785FC42780292F38AB2EFFBD24533F8A +C1EFC9C378F601E46A79ADA30CF9450883DECCA7EF1F0E3B0DC0A6744ECB72D4 +F72A9F9E490BCFAAF4D2504B044557AC82CDBB773E0180526295892F8AB22CFF +03818E1014EC40ACC879417D4499D22688251E58AC8C2371A041B5DE896F7F3E +4F5EB5356D647368EB24978C08979407171749FCFA7D454CF0E9DC18C661BA15 +B33C1E9D1E40B9CE6CAC661A89FD795431ADC678E943839FAE6F191ACA7A1C98 +95AA3F6C157A8B98BE029077962A36250AA25E8D003C115A746AD9D57D8BA176 +E7439BC970F97B12E71D0E139E6D4314D85C32AF4018D63BF88A06D1240091F2 +53F8F124ECCA3C460B019D69070E7B771C75922C2E68717EA1D47C0958BF09FE +EA958A3F26F714680156DD6924BF2E39D03BE51CFE6113549AE8D3AB2CFA6440 +D50E5EEC8E7623E6B1CBE36333C8CA4F0EB95C1C4AD06C865F625827B0B149D4 +97E78E29C78F4576A5A1C66A7FD7C15D8487D71D5788F094FF4AF02D98FF8C54 +642691BCFD7AEE0D76E1DB241AD5CEC933B7F566D32F137CCF9C0C452B55D99F +D00BED6C028FB9ED384077A71E1875A27025040630854600B12ABB49BB6D98B0 +7D6101E2D5CA98C5293A52C5D6D0CC7B4731E425A8AF6BA03C3FEE2CBEC882E9 +ACBECE2832BD989259DE293121C8B3A280F0C08D92F33A612C3ACC7F74ABE25D +CC464A70BAEC341F1C7EFE2D50B722E7D3060F8AD3C5B2578FA6D07EBB2F3269 +E885F3C181467DC6546CF35CD896C1AD91D8D58791448D51EBFAAFF141EE4336 +7B2619CDFBF187290CCCDF378F8BBB4D5A168A1A4DA0442CF245BD791B1F5EE6 +81DFF83E7AF220D79A5E798B4489E6B93AFA21C59AA714DA5508EA08AB0A9D7F +61875C62F36EBAE12A6858A593640971F5CDDCCBCA52BCF2B2444391221D7EDD +2F112AA65E1F41BCB2C690161E809FD4B53DEDFADA79D4D4CCDED02861512AD7 +7028EEE68330377C7859A6D73166E3EFD461C34A47878AF8E1050CA8B537F0D3 +4E183471C6459675D4134D0136CA2B0CCBC74A45B11920DC4DB972DF205E9DAA +FF7B404936A944311C9755D84E02F4D625AAF7B7EF060D49363102AC4CF84054 +E1DFD234CC9A1FA8B813EC8605C490A58E1920F5E030BEF3F8A2A7ACA7EB1E0E +9CE578869E97F4834BFA4006CF3642047B54B82F0851DCC72887DD482C232B45 +DFA048BAAF830647A35DCED596F46D0388624EFCE4318A791DA2B6BD49B44A1E +EB53972E2941C99681713212EB83AC5AF8D3CCF8B7FB7FA71528AD822FF034BF +EE600E7FFC218085FA97FE6F8BEA4AE194248CFC4D305AB283F218D108E02DCF +C21D6EFEF3EA9F9175BB880ABB5901661EF1F28E5C123412EB826BBA76F75125 +8E51CA55B73D71DA6227CC0E59D451C1223C63336148253D51484AABE8BBC592 +8BB2B1DF66E247FC6DB74C03224D7DC5794906DC50B57BFBC140385FC7F5C670 +34F6A53FE417DDA53634E0BBA55CA183F8AF1088DBBC390A4DA68BC3F91B3398 +EBC6A0CC44D80803E7B5F94CD0E6E13AB4ACACC86DC3384607DB5245749E13E6 +748CD286BF0318446968E4DF9EA51078393906217A5EB9224A0888F4BD685A98 +64F05F1EAB04AA252B18125BCDDBD50D0D7E8214F30327A829B8D40E24137DD6 +80C4E4167CAC25E8A1D8B65DF3EA9C1AF6004453B3DF9F517A6D2F7CC34062CB +A2001BD839DBE859D283503D108C1EDE039A73216540DA56DEB21C8D4B202B90 +444C68E3E5B63297C3413675FE8E849CF8FF4B01B598FEB167885D0E15061F26 +283F54A8AA03F605113F17918DDD20225005D5FE3AD3C6721632AD951419AD06 +0101E0F3862D618F71F3031B4E8323540063396868C2225E94605D5B443A1849 +44B1EAA75E7AEF02FC4EB766985C70CB05084235A2609D2872A1ECDD91328969 +5C74FF40767FF54827AF3EA1B200A24BF7B92D989950D45605EB4CBBEB6F7316 +5B45DF289B2ED56F9EDC97F50E034EAA1AA7E77A81EA1FDF930FC5A914353F9B +52443F19AFE72B5BC76240995222E14EC36745102C4D3F6F088D0F9C39124626 +8801A72428BC468E156EDE52111A294C72C576DE83DDA75ADE0840D37FC0854F +41BB0D319DE62226F9D894CD39A498F35C5E3E94310F96B18F1908A02D48EAD5 +456EB2A085F2CA5A2C788223349FC8BD805609459E7012C681039B3A37809E3F +8170234DC00128D42E1F50739B6EEAD71C8D7E17E8A6076FE882420C7FF8AE88 +D8AF9E84A655452DCBFEA90A5BB3D48C41B0FEEE9CDBDBA13BCDFE7CB90A1E07 +E416C129864C3C42BD1DB73F32C664D59A6AFD9FD95E0A2280C34F4DAC9F09F8 +296C32D5582F55E928037F42EA2D06FCB592FEFB86AFFEE819C266F05CD9C6DA +EF895F2DC2A769507489E1478D84E6328B73FD2989718F28F73CB682C1470BAC +AD855D9AA9B45DD69A8C83E7C5934BC165F96B1684293040E40D34A48BA1F4D7 +A066890F4DFB4B9DEF64A98457F419F619B21D487D1736567177207FCE9CF7D8 +E17363864CC8ADCF6B6FF1FCF97047C5C6E36DF1B952F1080CE29AD1F7A83836 +43171D8C0536811EF84DB5B3BC8322AA91F4C14A49755F7F845391926799BBB6 +6AB2C2CE7127010DC5F832C40726B991EF08B659586D459054791DCF9CAADF8A +F3E1CE64C3423F3392948BBDE9ABCD8FC6B682CA64D97603C38500C171F9E769 +1647CE5A30AE4742E84771874BAD4745F085609153E002DAC54F1C22D2E20049 +35C38BF44E50647F37A368E4CFF035FB5C14DB4A54E8D49EAC202FC8AFB9C0CC +89499082AAFF14F45E03015795FA9562CB01D97451B4EA7009C5A575977FEDD0 +B29E3DC32E4DAC83D8659F56FACD9D11622AF8551415C055FF8FA189B4A13149 +C62DDAA70765E830B6B1A41E8730B874BF14E532D888A795BBE9C5445CEF95CC +D45DD1EA7E0890575DB845EFFC1C97DFF618E4A39F785395668136F466412887 +2BED9B0984FB352B7356EA857ADC0CD64931B4D1566B57B5F6CDCE2CA7DDEC7A +2947E7D7CB3F24C7DF532F13010889FE5A90712500216E6E0BB2353C2D66739B +D457CC87C1279F805C5234B34324EB8230F9DE24876BD144C3FA04808C17FE74 +5C4453233C5A7E005C5D0D489663C19FE12604F449C63A6ED75C1D24E60A2553 +E618FF546389CFE7573D032F55B107BFC2DB8AF0E5CF8836B9473533269ECDC9 +8B79F779B9D0401442F1B56AF040484A76F69068FBDAA18888C8FDAF24875B25 +5D91CEDF6B3FDA4DB77DDFB68922DF4CF7074ACFF90DD05B04F0ED220668133A +600070D15F1CBB92F0C1127DF0A2C22BF395DA8C0F106ACFB231B0C42886C1EB +BD183C0579500F9871E9E4551069B6ED90BA08D8A484B08646CB792EC80BBD6B +9D25F40114881D19E6855454FE14070FBFDD54CFEFF5DDAB9363291366E69EA4 +C25AAE8584E61BCC2DA3555F56FDE7681D9B46963FD5F63D4F16AE2501BB2439 +0E2B86F6354EFD038B66C6CE38A97DAFC7C42101ADD20399FB15135215E436CF +C0CCD160952E960143C1D3B913722B2F6C2CCB0352940302653AEFB83C99AA34 +DC48F6EF5971338299CFFBEA5C548DC4EF82C04D17AC92E14100D360070A9EC4 +0DF29E15C418E45E81A3D4E0E5B1B674A6436BD2E5FBA8B7F9D8DEC20424C5EE +E503AE51162A0A611190E892D8A6EC48D02CCE5FC609257EE0E668886402A5A9 +2F0031EC8352869E355D6240611505FAE9996D453250201CDCF44C4435FFA48A +F001C93739D95729A917C05BCAE6EE62A23CCB48B1157F37B884F47F0C268B7E +CC02A992E251526D3F61C5AE77263B5024656522496D357B6201622D63E761C5 +073A82E7DE363A04FABAF010FB1135DC55BFC76836A59813825D8E1D7266D209 +B547001CD83C7BE7E5D75EB726F41E7174B5101B5A0B5640DE4AC3D55C499106 +717B7CCD02BB9749B3724E62AD6B69E19F7326E19237662ECA455BCC91F437F2 +4F80D0975F1A863B2EE998655EA4049F191CA800EF635174A26CF4EA8F994E54 +EB0A80019A93A7A1672E7776D1493715C7F445091CC5BCC1A675A2DE1219492B +37EAEDDFA0BBEF2876075B3BEDE11DF4FADE1B4F9E81FC92700ACAD8E57393A2 +344A2D098F0B4B82D3FFAD3540FBA36F93A7C4A9A954C8B70615FEB908BCF1D8 +FD899BB069B2A10EBC03138A0404605BE7AF77190536765A517DB551E5E4A2C0 +42A412CD417BCBCA641A8A95AEB82FED29BDEDE3A421F0C5315E224D9E25C8A8 +A460C7AA42E04E45B561EA4CC927D488951299EC32BFAEE47366095EC643E04D +C65CF29EDD351DF3259F78035093E8F3A7271ACD5D48A229E788CEAC05CDA985 +3772A482CB846D4BF9233CF5EFD5B2112E08919CEBD352A309E7C83E5BC75AA0 +D66DBD9042DBD0FE823DA50D2944AD3A97ECEB0B630D6FE30CFFC3D54D966E0D +547A8DA606F7BF9654CDEB543239687800B061C275EF00278C49398FB79741FD +3835B952D0B794B6339B61066009FF361F183D4F571874B62648553A7A28D491 +76563D2EA6BB6C62047367B175F1BBD947716B0A40D079D654E774387D6829BE +D50C4761B597C0A0D00897B267BEB94DB325318C02FACBA3C17E37F9B5701A75 +2C0407B5F2CAE74F64AE29B296B7CB8DC3C8C6A90BC4FA26B77244EA1ECCD9AB +9794EDBDA80A8B741F645B70073C146FA0EF9A2CE6F8B1436B65B80B3EF36334 +081AB834161B8799E6448E139EF8FD75A4A647809A44E82745A6DB8A0F749660 +19ACBEAB7B26EAE83DF4DD45E5B15CA078787527C0D7441924CC860D5D6ADE6A +BAC1A2B9F192EA144EA2D752C23B571541002A0798629A1EE85B8331711781EF +9E5A3DB1A794168CD7033F599517B3BE8D4ACE080DB5F5641CDE1B5806DFE81F +446C368A50E60F2B1E6293D776C65043D107511038FFE765D23741D9345287EB +4CFF73309B60E6A190A446F9C2FE922A89BF950A68545C4A69B4580BE84694D2 +7E18F6C2E67072F3E07CD0430BD3EE71781A85E66535C172265F613554ECAFCC +BFF5A25E8D003484620D4D1E500BB76ED2C509962EDF958E75EB99F15D9745A5 +B7500D77567B1408D4DA1C5E13915E68F7527488B25CA376EC614BEA49832C7D +F27ADFBDC0D2B53C0483DEF88E7D5E077BBE18922CAF80ED554A39A3E3ED3802 +64C7A6E89D43360DF66CE37758FBFA88369D0B2FF6BBB1B026F7928555265A68 +D76F7427FC1268FEA2F4F5E5CBE0ADAC21C8DB890D11DB492B6B9B3FE408F50D +D391460CACA7DC16114B569A9118B9A93FBF75C8288336BD21D97D2DD4235C93 +D7A30197B1849A5F552E934295168F29E4B03580C36A7904409E9FF99BC9BBC9 +E1303458094A2C3B9B78B7548EB4F8FDE09CDF099245CEC5C803874336186EEA +1CA1B995BCCF8BCCE62C372BFAE8A7F402E498D91F44A134B853AE07B610EEDB +C9413584CD0A763667B203EAE661BABDDA3D91A2CDF34246473F6309E592AF9F +C47E642BD9D8ACB7A8160566BFFB65776199CE7128617C56CAA782B3B2B81932 +DB8D805A175BF0F4C69DED9CA2889A304617CCDB2D2B1B9572977694A27CF34D +A95D055C59F4085C0F7DE18F73A87CFE2F881E1C455FCBD883F06C7DC272EA3F +EF39B8BA4CBFDFD855A04F01AB04046F238198F2075554EC506CCFCD441CBC37 +5917B45C3F3E02C1D946899CC19A9FBC675605B785A1DEFB7346279B778B0AD8 +308B4B5BE013910ACE10B99E1CCE1AD3D136F91068E9A75F5E9BC49C59E29934 +05CCDB8C4D2466A7BF9F42A1B304C5FA750A4B56C26BDD9934811CF5A166FF8E +F5DBA39E8AFF5B2DD5AFD96CE4AFB609393FD526BF5C36330694165FA99A1603 +21ACF9BC45510FF38C69C8AE75FE8ED2C7E082785A49E09111923A4DB33B853A +78626E57EC117AF693E5EFA1865631DF5D24097091D4F238359C63DB25929CBC +61137C2A878E4463E5B38A080F61425AE89D45E608E64FC60E25EA1409D14482 +1634807B396DD40DA8F8197A54E044F42EC01647365565196DCE3774AD9FE993 +C90728B12FB170DC037B68EDDF89BE86C0F1380AA0744A0E88E33827B3159823 +501B4DEA9580E54EF0F3C18CD19408970447A60A903D291F4FDD9C78529CC887 +74ECB0039E601DF93CFF3D70D8444A61BBFF2DD2DAB0C08DA856287492A54063 +5EBCCB605AFADC7F8ABF906ED76DBCB408307EB8E22CFCB761C71CD16B5BE272 +1C721509DDCC0D963C0C792A6669EC0272C7BE8C87D775AA52489CCCEE4F20A9 +EF1F982FD30A717AA67F5F81B2826356008732CEB053DC8EB7B29B2C008ABC24 +05B83BA1B705CC49DC25115A1576504C59FD29BC33E27F28B9A87CE293200E2A +47B745FFFDF6CCD3F9DEE6E3D142094674AE6632B61C6213F659D4C6BDA43FCF +AFB68D11994A2E8E130551518DBFB8817CEBB3FBCA71719233F3E815A437399C +C26C9FFCB66CEB8EBD47EE88BA32223ABE4EA4BD6E30599FB5701E4609E99B07 +0133D39C10590C070D172ECFB7ADAB65BD1B5B8020B98910441699B3FAD1D854 +478CD058CD23DF6B9D30ECB1B9CD48BFBBEAD174328DF2C71E90E421B6313F0E +DE1AD3C448133330720B3B2CD2FFCE07965FB13D6C218FEF84D154BC98284278 +4C178FA6A6D6060F8AD3C5B2578FA6D07EBB2F3269EA63BAC3E8F42893034224 +98F94BFB42344DBA4741B36A46F425646A9ADDC84DC5D3805E92D6E9BEA95DBF +140F513EF2E9181891177B937E4F5A0C9760959EE82C47E9D26AB983168B02BE +2151FAE39A4A113F4216C93E9B1186DF88DF25BA5E2E148DB8135259BE7A2B30 +122A76F4469607B0B968E1775F43B7724669B2438E0465F6BEC19413360DBD88 +15D319AF73ACEC3A02D487C5E640583CD57F37FE6C3D89A8AD16A753C6495243 +2E2C26B7599E300320F94F8B57340A8232514DE57C398E2A60F51FF38C7E660D +097E7DF2EEF69B8ABC9E6FC088984298999449683FC54E544640681AEA50C4A0 +A646D0FAB417144C7DB5ED3667865BD397ED092ED098C4D6D1287999EE014915 +A91070476F8670898A0530456A9D8F5B7BD9E4187F6EE5A2C4C377FD91FDFA47 +596223F2FF5B5160C15CE8329A028E9372993D239ED7D6C47810AAB90B638077 +43D411D168F4405709FAE711BF08F7F771514C100FCD7D0A67435DB5499678AB +030715A6133C6903048F80CA8CC9A9A4EB72ED494313E3F675D5DFBD741E3FF0 +F4AFE17CC33DD14726C199C571D4821E9C70F74F6F5CDCC6BAA2F5DCA13E2AC5 +484FB0E9D7D93A2B1DCAE2B9E9A480B3190845815873E4D6EABDF17F1D26430C +AF7D865C0FEAFE482EAD72C973F39FB718B4171F032F84219987A89BEC63D1E4 +55A4D8FEF844FF846625D4B99C1B61D87AF34D2BF66586B75C1C071BAF5F03D9 +414715764548F4119ECA9E22092502FED2375622299C8868810D5E5E3FFA5EB8 +2DFB09AC069F871C89A59B4A1280E05D07ACEA1E0F81381DB249862DB4B6CAA0 +981731AFD808897467D9D167BD7E5305E60D85D6EB6A1411D332BB07BE895360 +FCB7C96BF078100DFE9725081F23A09ABD3A2AF3CD56EAE2C50ED4DC55D456E9 +4683E13F89FAF4935FB67016A5054897512E25AFAF2F3FE78D8A64D4F5BD7BBB +326B50DED1846987428044C677132FD4C5CB85FC9C80D4A5A58A4D8E0402EB35 +028B31B8409B43C75725A0878248E0F94B379DE46AB4329ECAB917B5EF472B22 +B70D95B165E060B5F194528F1E752F9FEE30E8F418581BAC224F8E12F807E1A7 +DAFD0731FD927116F8AEFE052179DB56D352A092CF381BEA6BE6529B2B2DB55F +F915374229FC2A975E709F6900589DDDD7CB053275C7B0CD83B1A2F0448C3D53 +F22AA43CC36793D9372E35F3636EC434D7135E30F2E653D187D99A05DB2F1413 +81DECB128DAF42B38DBB490AF8CE6120CC762F6A72001B247DFBD9BDFF372090 +2A7E465D0625DBBC9A1CFFDB3F8CC22CB250673E29458362F00E36C573506803 +A75B8B579C052E71DCD275488BD6D6F8CAD90D7E0F8D5D0C94E94C4DC225404F +3BC357206832B4D71A1BD7E990CDA82A2973053D98A6E3BEEE81A4850CC41034 +FF9DDD7C0F8A2694F61C28B4BA46ACC435C4D792FAE7903B8C4BD8A4945D046E +1F66003E0D1366574B1656831EC7A760ABF9D585CAFAD20E8C5FDBBF5E76D4FA +65D4E5BF493B4FA4AFDAA2C9B3B32D0C4259548C76B5CF9E4DBDF036C839190B +6AD8B002E4F40093475663B2CCB36DD6ADCE54231BF5CE9DD8635638E6B5906B +761B5DF9D7039B3AA859D0374D712A9B07EDE637DECA4F3279807E5E79F0A0A8 +2DE6900AC2B65B88442E891A505BA717977D3185396E7C5D3F3BBB99EDA6F7C0 +0E4A9598F79D4DE96F37F2B3F62303CE5678F283629CFAE9ABCDD6CEC9C48B81 +50CAF21BF2BE708BA9CCC2020107ECC85E6B289BD29C5C3DBE4F9C70AEF0927B +00FEEC02E95372559B2F8778B17A86D619FE072AA74257DA7E536D755BD40823 +6DAFE0AF978CCC23E11E14ECB5D74BB3E6E309E0AFC3DC513A374C8453B16D2D +60A97CCEDAE7659CF16B50FFBD4F650204C2B8D306A3F26BE495BA8575E41A0E +A15853FAB6675D63D6D9B7823DB6E6A2C0B52B9D210902B20DD102A8E3C00422 +F2B69CBA4448AA594E87705FF2D23C1A5DFF236E5A06571DE7C495C2649725BD +3457EB8DE2D5FE5389BBB96DCA94FF5C951A90ED695D5AE3F184B281675D61A8 +99398776E6126BF63E622193A000CC6534A4B42AB1C0D49992D7AE322FC21892 +E6DD2A10D58B5D41193311210632AC0131065CB510DF0297769D57AB2B2B8246 +76BDDDE9AE81975ADE78AF879D60E770D9ABED0C0F6BF6DEEA0ECBD5EE19CE50 +99BF519E4DCDACF98B766EF0B20ECB0CB937CEFF746DD0270FCC203E85915D8C +343010FAFF49CC827725373AFDD2450E4B5A45C9C58406EA06AF3ECA2CDA6A11 +1343B23DF1F3A9B58261BBFFC3A48A5968F6F1E9DFA90177800098C55D566B58 +1698AF4126BE77F584D4963DC663C7ACFC25BF412B9392B7016E83DFB4705314 +81F65032D8373A9095009EE2DD94C933D9085081F948AD353C11700C6F1EDE2A +8F39759A74C714339C982735F023186F9F0FE9DF970FDBE43438E5BCB621172D +6A36BECCF3785C7CCD8F1B625AA42838E6A2B583A9780ACB75A5D5EDAC2E7277 +54188ACE398A99303C380EFF3200FC92B8BF13EA30BEC92CE628CB5457A5D81D +67DF1DB7F182970CB51EC5A83FBA355346C151B2F570EC34ABB9CCCC90B8843B +2DE10525928EAACCFE6E79F57F244EEF2BB5BA81E5492C427DC7C43DEE818A21 +BB7A2850BBB2C6B94C1D4DFB0BE51AA330D3D122FAB354A62C24F7244F2E70E7 +CD38152AD630F185A13220CCC48EBAFD76D407531C90E5C8260563C288AC7817 +4F7355719611DCDEEEB596F4524FDE04BF14F150A946089B37FAFEC3EF8FC6B0 +3EA9ECE32CB9D34EC30ED34574EEA2B1783C1911A6C7817D55875817BBA49922 +824A46B9EC82720C7300E1D7D58AF1F4F85653AD93308A96775630AFD1B071F0 +5AAA40C583DAC457E736F8B307C7847543B6E6ED879EBB3828A466E9018A6D4F +4022BE49DC99A22855EF77F5B52D830B37508D41EE2C919144CC9C39DADEC86F +0658A3230D2443A28CFE4BF80988B57FB87ADC0F67D72C6D9F03AA07329268F4 +42AE741B8453CC7AF118AB6D721284DF66C1191FD96A89A650690EC190D4F11D +2F853285E750EA2C401CAE4797DBBA90C6EE5761B51B3107D28517DAD2305A98 +54FEF6EA01CB260407B2492369FBAAA104740DBEDA64BCE4148D328740A1872E +2C813A10055BF4829CFB026CD1FC6D6961F10E2C67626675BF17FB58DA05268E +F676C8ADBBA4755029E7468929DE4EE215DCAC06E1FAEFA865126F82BFD5F134 +07764CAE7414F04976689E15BA0AC3408DAB0177FF6640D91CFC689BDDDF0032 +4E896E1FA498A8303E1D363FA2A946D3EA0AD4249C71A64C51D9DC1B25612137 +1FAAA7B2B5C70BF0C17CF4C8037EDB2E1E783B389678BE81B2F4BC3DF2CE5D69 +9146FB9CEB8E4F6839C9B660518C4CDBC0B46846AC81116DA448F69AB74FE6CE +05B447B5B836D54EA46EF292835D61F25BDF4D0B8559D6F2775F80D8D3CF52B0 +BB65DC728138B31C54F2ACE5E1ECAE49FF349640BD48EB516AC01072919A4816 +4012A3DB712CA4FFF4237138BD515C649EBDE4387F883BBD1F6A8C6C3B83A516 +FB849B502507E6892FF82E532DF218904BEBB0FF9802FEBA7A1054F7CFB59AC6 +DDC13B26E70DBC9C13B32C54FDBFE4E8515BF45F01304AE21FC0D07E01A51CD2 +A44E9FA5B0EF02DB9400B2B30D034ED485E5269A02E4317DDF5388DC14CBE3EC +99D21F6CFD57C23B1B7CE341B1F98F7AC06D2D62A8A74D90192FBDE6EB1E0CC9 +913482F1822623010C6A9EC87203D4AB5098854899BDB45EC9BF7544DF8D7366 +235436C66B0BC6204E715540308E63E0B3A74B07E419FCC9C8897E78ED962E19 +40E026BCEA24D63DBB3B272C78763D38D7DF5A4F29C35CF461E78628D3078A7E +DB5456E5BBCF6245900A74E0B62F691E10809AD0F0E13F09BDF18B340720E38B +7D280A9CE82E0F36283EB997E387545042FA3127D068EAB51C452D5F272EDE78 +2C4F1952BD9DA126469B1840457B886313687BDA5F0ECBAA719A85FEE0CF62D0 +91D52084D00F00F20FE3D7C3D6F202369C03C964E133362E44D8EE43DCB016E1 +9DA3039D9C58028F7D2BD513648C841C205A59C8D74928A385CE2749EB67CBBC +53C01FE62416D0D3A21CF48A0734F1F9FAB31AE979DEA58D35DBACB95D0F13CF +8588CDC44866399877B3DDF7350A2D1D78AFDF67DA3A075AE6856EDC61E235A2 +0EA8F8746DABCE631E4C714A3722EFD41FF3FFFF0C1886D99B69F6204D68BF79 +F918E62247DEB98F590F50E29F1C2B4D56C375945F75398009B29501E27B223E +8793DB9EAD05AA870CF9A83B61C697C9D191D3A818301BA52C5192F95ACEB305 +5B16A3E3A17F526D5C64DA4CD0372047DCCE32CA5805840B2CA6E258D28D8F3D +1F4CE618D15D4F537D63365140E0073F8112345A92E7E070442A7799431295C1 +5C74DE551A30D7CE20B90689B5516C43D4BDB87F039A121B459578A7D137418C +A33E36DE8C8CBEBD22812BE40E74A9179C25EFB24A2CF593CA2FA3BE23B6B445 +208E22E771B3E2FAB79663DF0C2DCE5DA45FB926FDABDA6084924156181177F6 +179A688C9014D19531EF71302BA7E9F7E3B83BB508FEA906DE08ED65234E37A8 +49A632CDA3F5C3473B0684CC7397F46338E66F2DAC3F818150E57A425BC1276D +1A97F902EE8188823980A3EB25705779DB7F63581EA00DA5B4A3137DF88EDF6A +FA634D0000DEDAEFBA27171F9456192CB188F6C10A13B9A4C95A8272B3462FF3 +98A2E9B625B02AAF1D4FAB79E8A3278759A581931E320A7134D5A03590941471 +648D13797E996229454431DBEB66ED784CA138190C59D2FB46A44DC9EF939940 +508AA0FB6BA053296833E5B24F5F6E1E986B2645FF36ACA9A587BEFF23CFD199 +63CC029D397409E8788DE834BF956DD345C559064D2A46BF57E130FFFE2B0F84 +E5F3671DDDD5D5E19274539041B028F017F35CA2C83E476EEA06FBABC1AB18AE +6E8F4DE6089C37DD3A0C3B826CC7D540E60674C3E159FCC047A208EC011F5161 +EC95B1BED2915DBC8916C7C90DEF4BC2A2D93269F7D27CD8C59B137F4C82D145 +4422E4293026BCA6A832904819599306A9FEF6749207930D693AF3B97CE24E91 +C6C26F9BECFABAE6FA3FA0106EBB63BA756E69216DB1B1E23D7AEF5527AF650C +B22F0788C81C44DD24DDEAB582CF8E938E0CB05660459E3D50DA07690CB68E6B +9E67EDE4F033D40DB7C0D4C3F7FE43F094CC9B3522B4D3A82FB5F466CFE7AF3B +EB3D53BE8AB29911A3E22AC33648E828852C4C90D5C1DA4D230FFA3497408348 +B92C0E98B3D19C6E1BF48DFCCC9F1A18D30F12031B1F5174412E1342A1002ADF +3D142D26A36D657B63E328BDA5E8A7ABB02E27D48A1DF60CEE3D55ED047F34D4 +0E21021399D32C7C465B00F453767B37148A0DA5DD29B410E53B66D08D15D88F +3059FB052535CAE3B3222204D02B31198ADFA74651CFD2798664FEA93DB48BFF +E5F95DC9E74FB8900A049AD40312B8DED6FC23DCC14C64CBDB84A579B24B1A06 +550D0A1EC56BB796A4FC940E792D37D3C57AB8778095346B224FCAA214591755 +749CB61FAD7B5EA8A70F839E1924BE0F76E3891FA36167BCF379304C3E2F26B8 +9197361857CBBE69F21C50BA5E613C8F31CF45A5D560DEDE425E2A8220BB2BE2 +61D4B09308A33C9EDA6A29203FFAFBE35BA45A332F509747F8A4893D71820C1D +8ADB0A32D01B19299FE706E860F622644E220D4E60C6796F5CA3EBF2261DB5A5 +D275EB4D3D84B9B91727279BB518F392F3F773FD35DA2EE2719A8A32A7ECA21B +2960F35EDA9E3E641BB17C485AE39D79C85DE7040AC151E98288412FC915E0EA +36BA101FDA4D69A2E9B2F4E01692FCF70C125D06A01613ECA9A4C73C3591B4A0 +8BAAB94E7C282FC55E3AB0F09A647C723167CBEC77AB0CEC45BB8027B05D75CC +A5642FA35AB368DDBFFCF20F4D72C326402F5AB936BDC108A46B663697946C24 +092BD3F91863470550EAB16493614754880BEA9F03356AC6A76F575228C01EC7 +1FA986BB548D41F489025907B0DF0E81784D0CC6540663CA49B0DA03AB74839A +EFAA57395F349871B113DADB63B9652B0161BFD3821CA413D07DED01BC728D28 +D45A3CCB8F6D04ED89551BAB45466250215CF0B50DFB7D127281ADE5F43987D9 +1C0834F224ACFF92DEF892623EBAB4E4968440E38B85541359F55ABF453BD964 +B59F565897C662F0CE114D7A0992F9CC1921382B103E6C9E60DF0F5E25490DC7 +C7FB87C9A33A9775ED492FED29747BDF120F4DC2A723113EEC4B811EE5F08425 +803878185AC98E4F851517FF1524BD2E28B8CB9F253C1A4ECE175312ACA3415A +2D6E38CE0A329CA3976D983D31DAF10B03DAD0CF312A448E1A16E80AD2A04F72 +FF52C4C5ABC90493727D36144143C91AA0E193233F8B62B2FBBF6950E74BFFB1 +9619A5D920BB89754D39C6E6B9E240A4B7EDEF1613919B3F29310D350AFBE31C +7D17431CC92A78124389A8335F3CABB85EDC5B5A849821429A837852C7ABA19E +099A0C834467FFB796F6CC5BEC76E1A3C0985DAC1312E5098B152BAE65FC1431 +1B465114CBE808AF291DDC341EEB11360179AE9961C2FF058295838ED39301B0 +1D3FEF051A07C3974D08E72B597AEDF1EDE824530112E38807AAD51CF2804DD7 +3992EC8CC305189E9682BCE0B56D3A6CE4E3E7E0542BE443AB7A60C92F30A0FE +A0598A890D6C8141D1FEBFA740899D829885D2C56B8FC76C5F0931BC8D90BC93 +F23B1A2B5FDFA69B565394DF5B837CD9FD363B0C9BCB3A82E16678D6CCEA04EC +538F867624EFDF556772FA9E74D348A7084F7FC17CB89E36241C7B02E33B7E50 +C986BB94A2A1D27C0B7B10D94577B3E2ED0BA5997770D2A956D197B2A872750C +2C92F3E240A0740C514A310EF56FB72FB146A8A5BCF54477D8B1ED7EA0561B14 +9C4DC75CEABF4684ADE688D13EF148E6CB5CE0AA15B738E0C9F6EB1A42557B13 +70DF52BF76581E8759810B5FCCBE9CBD8ACA8902A413491E799AB7F4E4568569 +C335C86AC0F6F78E0DCDEE0E292CBD34EA3B4EB0F67988DA40A60DB6BD4223E0 +9A37A99D769890809A8B42BB41668350C4C18C0A7C2BA4EC988CBE5EC7A7CCEC +002025DE7669DB935D3C9E13FAE6194C64E3DA30BC21FB16F3EC7F09493B6805 +75FDD62DBFE5E372BE91C672E58F5F5796E5F9B80B8687D4AD406CFD0153E368 +E44E9307616D7545D018C222AE1E035D3C033EF0ECBAB6034A075AAEEEDBD643 +AC97360E7FB9DC84431A33F9E318288DDD29318CE3161F97F84FA8C3BA8C3F84 +C61DF8763E84ABC93E725C6FAD3C52BEBEF0B32F4BB753CAAFCB277066BD685D +1D3041E06792F24F8DF16674303FED7EED4708F1A6CBDC1E239F430ED4EE5EFA +8DAE330DE940F60D14388D0CB135DDB3FD89D3C6EC46E3B6DD07C57A4810E651 +E7A2238A003EABC438317479CD0B9C66A83F9A8037098BDEFA96D2CA762B086A +DDADC7840F5236F9110725D12FCBE3644699B83EAB9B61F412AC9FD5A2097CE0 +C41C23774E622801DCA357F792BDF60DDDA05B4F722E09DA5D4A76CAADF5145C +E1E3460F5204B0FD8C04BC61D0798ADF8AED4CC315726F71F275B2C3F8B52D16 +41CB7565EEF7C3B1D2556E8A8D2E1F366BF06E0BE3BC33CC06C085D775D8FB78 +92DA2FA2AFD2AB6F87468471A2AB1E7B1B1F32BEA2155493FBF0433010FD8D6A +476C97AE92B2793CD1836A94339D446722367BDA03157D0E2DD1B76925B5CCC1 +2EF038915E090A2F2AB9A7F00C2FFA6A0E1B59691EBEB4570153E1BA66360C04 +CE76EA11629A0672C6F41C5C2D86B7BAB8FDCC90B5AED3D3641D4E394AC17EFB +0204D45DA7CE4483AD631FDEEF1194CAA9D26EB5AC751C04B5994D972A1209EE +B8360C97A4B342F5019C2E236787C8F1DB8C6BE7CE943A2F87356640C9445C24 +6DDBF6AB24DC10ACEF15B716C08429A2821657455FA63876A872C7A232C42D4D +F42156339AA85E819A50283CA977F6CBE4957B094E6E0336899AF84F45ECA205 +6DBEAD6EE3F20F7280599580FB750B92DB84D1FD9EBB05403497BCD9D22600DF +F87D52E595E7DF5ACD62FD780BEF6E36F785BB183270E21CE8965873E6449E57 +82CE7EB322A1F2B2ACAD0A0B90ADF6A67D5DB9EC5C097FAFC6A45DFC3FB5E0FA +CA88186B9F8A842640654F53D4641493077A6C2CA859183226926F10E81450C9 +1F3108F5B3FDD65956DD5CE9E89E4913111E189D7F4BCC00DEDC9AB6B16D374D +337D959DE92289E14406DD0577A23FD042AB2C0E3418BBCF66DEA4482F3174CD +F6FE2C66961B0B486EB69F6FFF247262886A40A12D2C072396330CC06A38B1CE +4C5778537141B471ACB97A8E68C9E9D57966E568079C37C0577298BFADB864B7 +B4628A15E4C750998C08420AF9A548DDD171C11571C303C8E76FBCED8CC601E4 +B35526DD07AED21625372CD3EFDD8474F545197227B2F3F9D32524E744BECB5C +4FA3D4FA59A83B887C5940552373A8997C182AB4D9B9F89E242A44B46F31FF2E +461CDD97111B47D141FD15B39842B4DEFE187B102D8C0149C0B86849D224E735 +59951FAA36362E1820A63A378CB5B1DBA5168AEACA976CB78F7B764278A0D568 +8258BCE1EC6A225B4F919E4CE5CDF70BA0894377430DE127F720D480FC8D7EDF +AE9C9D1A9FD5FC93E2206B9BF53728F96B45FBEBD3DD669F60E2C1E816736C1C +CEB1BFF53E66AFE220ED30EFE7F68F9E16C6289D7FCDCECC0FEE3AE6A668373B +49940DC241EEA1855C5AC4509FDB33CDF3B1F0C60C28DC1E5BFE78B6F2E92CCE +00B41C28637314A2FF5A7425CAA7E733682A7E141E256B9AD2633EFFEFCBFD2A +1A6AA29F152559F73EF32FFEB638A85FDB24F37B7B27B05E8B8FC1325D13CECF +BC67761DB838B65E234B24A90F59341C94E6FE8148566BE18B7D2054A2712338 +471A460EE3ACF370AD7DEC26F1C6A1A415A233110A83C922024AC112C54050E9 +16415FCAD02DC30AC6E6A586A19BF2E601179F3EC866B14B16045420F17BF7EE +B4FF95A54B0C9DB5583A486D8B8E15523EAD2250FDBEDADC45B6365BC423BCDE +325916F4E56D496D195C0DE465D6E595F6B5CB5A87867B7863078ADBD4718306 +680659857C79EC18195E0D52767C4791A5DD605E05AE7FFBA19AA804B9A960AE +8242CBEF9672467FE93226B20D1B8F24823649411EB0D76D4C68CE0E407C2135 +157B6A3C374064199F6F9E5079FC348B94BEF3D0630D08CA1BE9233EC2487DC4 +80EACBD21F7320E27450C3B7BAE187363ED8482F5039FFFC36CA7A9FB5F50CA0 +8CE9D160EDEB7B90CF89966F3D7D6F28A05CD8540695656F1F4A7FEAA3B4DF56 +F35FB4366B8FF1CBA72C85341767060ED5A3E1704555DD08800A38B0B45BC12E +84EA916DA637DBD1A52B5D1CAF185EAA407AB443429993059597E4672F9636C4 +0F13BC98CEFE7F8ADC1397A3F998EC855C7B85DBE4938855910424D576299423 +0EFC85B045F70B300B5DA0704E9FDA88D02F5C9235D02A3A3053CC2CE5B9BB25 +72CD19959E5781557B829FBE1F74516FB9BF45582EF6AF05254A165045557D02 +A48EF7894C38B2EBE131663141C46B5410D2EA0F0796E5B586D935498CD4A42D +61ABC19D76BC064AFD539F7B52F51EE3DCC7D6DCFA64107BEC8521342D7C00E3 +CAB136BE0BE349E1C727404F68AC5C6C5AF94373986FB4B67D4C0FAAEB9D211F +E90509F169F9C04F021353E6FAA58341D1A2E190E55B19D748F841E96BA037E0 +50EEAB1E1C2A054762A44BAD1C9E8927E298D68E3AB3F66F6C93CC6BDDD8326B +CF18ED832D9942754775EF41B986194311FA933451797E6CBA6B043FE9E182EB +0C41A4435339C7DD1F2CFD73B744E45786EC17CEBC7130AF57A70E6BC7C5E1AD +60CE9DB74505D8107BC60DDC3B543AA5C1D8FA300E32510866545C9F465F8FE5 +6A32DB3C2E86489B530AB4A32743AFC135A75FE92D5D5638EA9DD64E5C0725CD +F96B2251E65F14E0AACD61637D27D8E837B5A668A6B0F13DFD9BAC849A4591DC +6BFF774D91E4FE656A4DE7DEA8C8636E17F48D09B0AFF4495120D018E58DF8DC +F1A57DD3F447FF6D71E819FF15B0F683F2925992546F5B6E8AED750BF12CDEC0 +E7D2DD71490CFB58F137773526D39F3F9FCCDF7CC85D7C7142AB1D2913704B15 +9FB79D80ACB93D036CAAE4589108AD9A3CCB526ED6D84433E33F44640FEF553A +A42F8E1370197E92AC3520BF0E56F4E533DC391092F4239C53A04CB5472BB393 +35FF1B081C417630E9827E15011A114CEEAE1B24DC6F18BC4161ACF3A8FC9203 +44D9376C6C5117762C1B3893017724BD35382E340ACFA125E7659935084A6AC1 +2B0CCEE754E23153BB75F1266D31062072FA4329938579DF3A300154CAA68F16 +87512FD8949A11BF8EAFF117D678B4A888D3DD79A0DBDB36A078AE2B406704D1 +C8295FAAF3A411D9512231B2E77284794838AD24BF733D7CD84AE4067E3FBCB3 +FDAB21154C0513CD52308581B97A07DA8F535A16FD05778218553AD12B9B81F3 +6298A13EBED53A02C1F53D621ED6613D9CB413528A9FC20BEC87D7E6D1F372F2 +7AED260BB309997D42298863C61E0CE9EF01DC0FCC040B91488A634AD3889DC3 +5B5CD2B5FFA7595F9E28C94458D64E71D424EA86C2B3BF87FCBF43CD1E6AA830 +5CDF4FB28FF62FCD26C28830E35B011EE34C8BBCC42205C08207D2B172A8673A +E205446CCA8F868B2EC633FAD949B2BDFEDE0B29FE08927A3F55EFC8649F7E32 +AF4308AAFE0C39F17BB549ED1E42E9304ADE1D23D456943E5B705689A82F5A1F +EDFBE6CB6BC7331572112BC7EF639DBB61173DB88C1330887C4FAAB1843ED3E1 +061B003C040D7872D7D5E2931B11BBE0B411A64302E71AED68125082E8355859 +2BFD92D2AC045DA9418B3311A8E17EE55818871077C46E19213078FB10B87854 +4080CF7EA094D428DDF2DB80B6E6529659B5FBB5DB46F8495A3C614413F76D12 +7CDC026DA7B3B182275FA41B9BE04B32EDFC3802D4A96C2149AFBFE66D80CF12 +BF6A25FAB0D436870B05110C433704F3B041296049895085B645FBFAEC69DE7E +3D073675119238FC990C0B19265CAB9EC8EC2827CB1A45AFA13AFEA777F9EC7B +3D419F2FF0BAC228088A359308CE71A8A09E89BE9B99342C490428BC91A24DBA +88F57A54C98DF43E830517E3551969C62C384CD0ED19511C309424E273D774EA +61EA2C018503E1A857CFF0DBAF51B4509DFDAD2B95F8EBBE015C890BE1EE8EB5 +C95501FB131C309E265C12CB6D6406B71218C4DE4712B94D502CEF7B98A7E546 +7BBA6C0C7FD36E65DDB548EFB0E8BFB6A748B7BCA00E4A83055CB4CA32BF188C +AAB442C5DD86D299171097CFA8556F63D38A061443F1509C893F1C469F502AE3 +D276763150969EEB8C5E383952EE3B259B2DF1600114043F80D290F880091063 +AFE7962A6E8BDDA6DD4BFC3470F0B15FD86A1EE782B8F51956D0A3F442F0BA4F +05D90BD709018D998AD6AD9705CEFA554C2173D9EF6E26587ACB460099874672 +7BEDE4EB86657CFBC7F8EF2D5C6B6BEB21E47D0D2DCD1607AA7E0EA0BA12B885 +80013A821BDCB7B63165B1DFAFF428B2830E9C7C3294AABDF89944483E207C6A +C53EA8112206306BE2168381E89BBAEE0AEF8556A2A121F5EB1396FC89F351EC +691AB178073801C035A73D0FB63AF7344D02C37A50BBEDBA0518DC8E90642057 +5128100F1C1975FEBA8986833B29A5742CBBFF01084B0D9DD76198E4F14A177A +A18B7A840F3A2887263D278EA4A0D5172E503049D80208D9ECB65067B363DE3A +75FCB4EE0CF2330C7EE015E574A87C5870157D0A4DB9ED21A91D9795614A5373 +F6F860EDCBC84DDC3428E2F0B68EAF94ECA6B8532DB52FCF6EC22257A161E316 +3238BDC51C400F01D4FBA0FEA923F3F1453A0F2F15505BD18A7E2F8CDAA2EEC3 +37A3AB6FDD143C648939C1D65B7EC264E0EFB02565EDBEE88830ABA687EE1C16 +FF5FA87A2FD370B8671ADF13C101F0501CCA9210C13994AA1A94C8258BD06F07 +97B949360295308DC9AAFC199C4415E514B386D4F2EC502DB2558B044DA587F5 +C6A5DFCA904B5A0519371F7494818A372445627A23E419719758DF8B94509183 +2FEE3D14092FA8ACFA99448F04B276E6209023088D511FFF4EEBEC08F603D96F +9B86BA8DDB449C7DCF7DA85AF05520CCC6F0C4E815034EDFEC5B2BB91E50EAD8 +69170FE6DECBE0C363B9E5C042AEBFD93DFF85B1CB9E9D401F552BEB2C80F928 +54941E1E27361F8D40F5202DD991CA7009F3BE5FDB5342253F2F0D411D875BC5 +8927FF22D4AB46B87D4CBA129C0C2DAD50DA4BA61F4477D7B687A48C197E1EC6 +AA232DCD7DDEE671B94F93FF4F153704952A85CE55C4AB50D0518885D7405B53 +D0D4C893732B7DCE9E899EFFF9EB3D6C514612F39ADDF69E9A7FF45479550E4D +554C10574420128F29F3B5E13FE68751F72EC2CF6324D491FDC56384A246097A +A727737E8821E5369738AFD218ABC9A27F070B5DFAC31481305A8E24014B6FCB +9B1EBBCDE3F8439FC1E9766394199F9E99D1DC7866786AD0D540D98635349DFC +6D8A863E8847DF073DBDCB023FF6CA8401A9033B17484D52233E6536C5B112F4 +653060AEA4A2421AF5235D7D8EF2FB56596326FD668421940925FADEFD50E9C1 +BA7109E30CCF85363B6FFF74968299F54F59A766BE6A09385CF773B885B3A0FC +83DCA4B5D775E9A1B0FFA049C868503542175F1346BF72BB34F4C69890A2A500 +7AE746F5FA3B92AF877F60EDD364DDE422E4260936AB0F94DDDB423DE81E7A0E +70689C27401C7FF28414C2C9B49E6667E946D42BDE8B8167718BB0CEC7933221 +ABFE400ACECF2392146A6B8EF709001607E09E23B14914DA4A023D738A7C30EC +25A8600664DDBC1A69116BA80A764E68177A75451DBA6F63647A45B7D05EAEEB +C755C596F74FDF2C55149B59CF110905CF58FA1121075D61ADD96DAD9465B0D9 +D3221B750FAAC14BF98A704CB1F98CDAE97A1EDBD89852C44CC4DED5432E6EA2 +654EE618D657D00E3A43420658B671C1469E82C47C54465C090A061E490B4BC3 +7F8F9C6696941B9772DE87893A64D5701B35C12B73D8E9FD756FADB77904EA0D +B23E3E3810DF42B74D5A2E620F7AD377CCF12FEE83F59A9241A362ED9F143547 +77D99FB232328952DFC258231F97142C754A7C7964FF62C6E3B026632D2D34E4 +A837855ADC782F9BA7A8C68AD0FCE8A014FCCFB1C000766289BC9CEF057709A6 +F291FD28C362770CC1CD966A2EA866404D888701A52F2FA7A1F250C8AAEB8038 +87DD9A32A38B31B957329DBA9D0E518BBCA1C9E77579DCC0D8F8EABA81523705 +6180C5B8DFDDA9F1738223473CA8901F8FEA9502B4A639C07BB5FE06639FCD2F +0F9FF80E4F76D53DAE424AA74C20C63C3244380DFBBA99A0E285ED2B87FF9AE8 +9CCF4F0CAF8FCD7B23F504843C98EC0803A9B9A58B4D365D671E71B2B471C66A +129951CCCD73C29B258F46BDEE87F41B450FADA248B1F26E498686356A2D2675 +EE94AF31DA5C603E10AEBE33226BEC99DF6821B9B59E322F43E62D0B46EF1B8D +14B8AB912F16D8B93790E55EA9271CED5545D3B5B23BE61B6131B8F82B9B1F68 +F6148E6593E1FC630F8048C6239B7F2837F9C181301972D0FE8A9C430C9339BE +512D14C6151B3556D596E203D4205C20433FA80D24C290A196CBB24BDBC55B58 +C84AFB034950D431A95AD4A97501CA302395CBC21D9D1551627B9AF84D19F657 +72DCFAC86A3E7F825C13401764491B61502FE7546674BBB8F2C2775660D1B9C9 +3E6DDBD6F065BB0A69237DA0837EB284FB0E83ABBF351D97FEDF48D1AC284E12 +F89195A3573AA364E57DBD074BD5FE4CE251F38DAFE45D3B8919A235D127D606 +9C8548A05A0A8ACC3006BF75646282405358AE69E8859CA53A869F88C27BADDE +1D3153C43E8D674E4A6E43FCCCA120C6551C25CAEFC8A6C41B42B6D5381A15D0 +8D742306B366874A4AD424CA52D5856E8BA2FAA8D0D408F41DACE6E530878112 +7F6468B46067E33FBA835653D93B8212C33650A7A2C19FAE45D05A93AEEC3992 +672EDDCA4B55EFA48B2F7BDE6C9608A61D2369E576D234B0BEE63DC04288B74E +4D19B7597BC3261384B3CBD1D589EB94860A5D288B3D656E75872628BC49CC20 +8F79EF8AB4F7EA1060E5466ADF641E0818B8364698CE288C1F4D61EA73A15119 +666345F32BC765D184B3831CA54981ED1E989FFD8C6C66D1CCC043A8358A511D +50E93CFA5577CA312143A331148FD3502DCF3E9A85112CC3F2F44A297A971E7A +BEF65B2DC42EFCB747D3C6D533B6E1154A862271B1E103DDCBDADDE2F5C208F8 +3DB170949C4C1E191AF7D3E8BB733ADF3EA449A971608ACE6D9A903D93CD8C70 +8E1ACA38311E88DC32336CEEEF15EEB1724218955308D9C9591217BE5D6222CE +1C5976B5A0E108B702A4D61AA23F670BDFAC45FA6E69711CE775E123D009D271 +811105BE8F947AE0F3EFFB1D78D09A9F50A1C40C7A959F9CC6C38F398A920856 +A26BF7F53B6E43F09A914E92517141D9BB3214ABD4CB56127026E7F327A117C3 +3B07A836899CC0A3D79AF8FE8E8BB40489D72D970E88B8A2E2F9F51AC44E6E93 +F4AC7D3815B5D4C5810F029CFF7593D4E37B1942DB256A823EEBDA6F3437FC71 +CE48E3C7308265B7FEB45679F2F7C8AEE724687E1901285335DDC25EC278D513 +1D9F382D5BBF5FADC177D327F5E07EE92D0D2F50DD0CEC5C65300199D055DF87 +D77D1FDB27A333FED04D39CA24DF3DD76E11447D5C4C38FCB2D88B87781068F3 +87720346E5E5155FE5F2635BA199C35FA5A0E2A963C148DF18412D4475D4CD39 +660F25613BD84EC7B14DB5558CDB77AA9A22B19E7BB36A8CAE346C43511BBE71 +EDEFA8B2877A4D3F1C20D00CA4928E0C4E6121C4D75F0D5695512AA41088B14B +B0CB39BFA3EE6927C0490FE45D039995A5045BF99D2DE00CE51B09943B9C2281 +9E2778D373C488BF1847945C1F2DA5493E2915FCD18C787E6B936CCD4ABC6AA6 +F70EE8F9E6EC8D50BF1412AB61C574D37E83BBB144CEFC54BDC50E72F7C3655D +410DC4E49685037725DEF006654F3BDEE5ADFBF8AB5C3E64A6AD4F88833885AC +4743CE9DF8FB270143DB3E0DB457485BAF7195A5BBD9DB24CC247519EAEA858B +EE66F7FBFDCC46E2011325EC81055356BA338DB3FD90261722A46245AE1B2829 +25813F973116922A5BACEDAFF01433E9F2CE8F786120FE1EE871A2196F600C32 +1BFA94440113CE6CF52D1D67D7BB0D498FEC5720C2E211CC78064E752B47EC79 +208E4A0C2A3B454D064CE6F786908F1A278A25BD67378BCA1EF859A8A13D4B60 +27DD225BEF1E6891A60D6CBAEEA43E0D4BCF356CF66DB8C85C72D47002F828BD +26155E837E01048E8CB760220DCE31835E54FCD3A43492B64F87EA5DFDAE7A3F +6D8E650E47C684EA7F4E08516D769088BF32177E8D4987467DD86C804CAC00DA +72B3A311ECCCD23E954B903CE364CE499ACC5B2F7BE723F5E791F067F96B1CD5 +C597C42089554BCC38FEF786B9EA1AEA6116F4A9082F1DF33AEAE2333FEC3E7A +73617C358EF1C31E69462558700BE9BE6A88586F3A41DFAB1C443B787A1EF92F +4D9B465D128C53AD26282E0FD7E872D3A5E07D270BA7C0401AD8F83466AB1B06 +58DCA65BD2E7C18456A3237C32AC5A8DE7830676E3C37DB57B809FE1998631CC +AFC2C450206756C855950404808C69F6E722B1F8FC528BA4F0FA09B8E9A5C838 +800AC6D81DED060FA3E0C110AB344546BF14141C1B8850617EAD223EB3B202EC +529A502763DD55F8947B9D1985639822E43AD680FFA2C8FD4FBA1720558AEE50 +5FB9783A76C9F4D7252DE9B6A5B9EB2BD560DD3CDB2C00805A78325CE5BC9B7F +5CA8A03A01774FE74B3E35EF86EEC9330DB70971289F6B496BEC97935E92ACE6 +CD0ED475DF2087C603E7D95742E7C3A8254E7817CACF0B8C7EAA41CEB9176716 +B03A83DA86BF2BFE8826C879B760D2A3D49B4653EEF775085D4E6EECFCE26AD9 +F7606EE52FD59AE40C65477FC1FA37F3D7BCA602006257204BF9E6B21A1DEE9D +DCC90D40C95AC4ECDAF194CE2DD48403D188D4672B650094C3A78D522C36A947 +EA9D99F48C467AC7BD37A6DB0F7A04DAFEFCC46BF4460378F6C751E505AE0929 +45EEC3A2EAA87C11A5E24BCF1112054E48E61934458D129F3CBDF7FFBB9B6120 +67FF59E424C6ECDE34A7A847AE559E16A5E189144AE96EBBEAE6AE593380B1A0 +B661AE38FA46F549D5202EAC863DFF174B8A6858666DDC3393E0AE5293DBCDDC +49C01197E00E986032660C9D7C4DC442FE741EF4C19647BE7097BF99BF9B2C46 +A6706895F486B49E471FF8BA0488C0B334D5C616B0B03724218CC6D8CC7F1FA1 +5B1EAA0C7F6EE0E71727C05FBC129DA53C8F7B1AD80C379F0148A979CE8AAC8D +1D4E4AD3F7EEACEEC806FAD6747FDCEE053BDF4176FC0EB0E5942D91EC89E9EC +D71B2C9526E1FE03CFB2A7A7EAC384BDA8EDEDFDDB1FB19DDD304E22ED6CC5E9 +D279963B2AAEB2B6C69F85EB0E0C72BA61E9F7260AE9F8846E63001B5A1F6138 +9EC92EF7DF4D5873BF2251177BF1BB3AA2EA14D7D99F73C561759067AAF3B677 +939C15E3E8D8401226271D28A9325763A66CF03DEC5326E210633ECCE9006B89 +FBBD0AB905359319CD25524119CEB19ACB43784F785DAE7B31A41654DA480B5E +C40E35C5DCDC766FC7EB0358C66CF81795E050D30F76D65C90B09EB9FE65D29E +E115D8B65ADB5DD45D8662E31BEB1C32B3EB76DECE8E08A7274BC6F6F7797AF7 +DA2638EE50E51B7D002E15466FDB22C52356E44FB44B5B1253E67A65250D15AE +473A5C49DB593ACA5F6D1F4D94BEEEF37559A51AE820D4FD4D4B6916A095F292 +06BB20B61392C7C085B1FF7613A6DCFF9D362E29ED73D5E28CEDB154996BA84C +5B25A471AE0BDECB40B485D980AE34B7F195013AC7A6513FF39B2D21B35EC055 +8458C8DB1ADE06472B0BF13DB18CE0DEEED8E75A4C404F63CA66C3BD510EF4AD +A438446CBE896F27A446EE97C0A823FA5117EC39DDD8AFD77C7118ED56DB1D35 +B3F949A5C24BC1DDD314AF18EE7CE5CE3AFCBA2901A54BBF0C9C39BC49402A46 +E963A963FAE601B3C4025D2A1D0F204482E1063317BFA1AF9244D5024E71D784 +FA1DAD48D15CE5BC11BA4A4228FF423522FF6BEB53F487D1692C9B9CE59555AE +7D10053724FE71954053C280DE429386E6BBE2810EE56C4FC305D57F986B609F +2D02041931ABED40EA0227A1130C888F3C5292A7A48292ADB5CDD8DE52025318 +D0A82E383B1C97863DAFB587E01AE6167EFD0E7E841663DEF7612864646DD8AB +BE4649277CEAFDD8FE707ADFAF5A0F92039802201089506BFFA3492568F36319 +F27BF41E45AEBA1C671C17DFA9D3D7D5E2E94404F15AB8B10C9E21E1B7799025 +B0B5E85C4218D46F6BEC80CF3DEFF6601085541AA476CBA5FF4398F76384DBEE +B50300010E413B96091D1B0FD6EEED3F90FBA14559AF37C3B0EF5951B2F5373A +FE11A40E7DC16B9DA2EA11629B245D4DDD794A99F4EEA2A5BC8C0A38BE9AA1D1 +CBA3C34F8E1FE1DAE8476978B7A15887BB2059029F69BB64823AE891F4CC7EAE +8491CD67AD85CA10814BB4C870C76674317C5E237B1310EE5350783F3B848145 +4DDC5A6EF4A3D2E6D530D0E193CD4EB54A633BE141A220CCC00D1295CF5F5000 +C0782626908D179154DE4B00AB0E07776C6DB351E054E8DA638A4CEAEE052F09 +8B556498C4AE43DD92F96699EE15068132537359CF7C1D791C40CD3071001AD9 +CB7E5417307F16C270F9FF24171DCFAB4619ADB06E78521991DBE0D58BA56F98 +9DC6A912044455066A7A9C04F6FBF9D3D44EEF9CD27392C38B0C16F47E22E0B7 +035EFE51843B3FF3818C8B5FDAFD5FC21B7C3A5FEAF6FE4B63D281650239A3AA +3D10CA3AFC56483ECD72690F9CCDA4C53BB2C9BC3C1E4DDF64DE8F3C9FD666E0 +A8DADF7FFAC60C07F8DEB7F85519A02D57CBFDA3516273AABF818BE0B06247DA +0A33BA921C367CC3994C8FCC388518CC721DDCEB75DE266CBD82FB2D8DABEE25 +48C9D436A080F67E51E2C85563B22E6A48148E5051B6380A1D72860B061A2360 +F7BB0CC9BA717CD2AEE3DBF67354FBAA22B9DD74B45E4DEED40CED6A5D224E4E +4665952DD4657EBD6B4C01E5B29C7B072E59CEBFF55B8784BE30EDFEFFEB7804 +C60916976E480018C4AAD72FE10A36C3C2E17440254D74C984BD2796896BB559 +35216C046990E59D4C664C06CD81DD749CA7FA6C332CEFF54032B0E4A8943CB9 +7454763A04901AE1B84C73F34A2F3ABC5145A96C6031563A55F0E55E70880A16 +74043FF522CAE95DA8EFA7AD2EED74CC2704B6B1E55D0E8CC706966083118917 +9DD26F1725345A19F20B84DBE057420B3EAEAFE73AD168B4ADD9F78851B73A3B +7B056D37B96D41222162913E62CBE728694D2FAD91BA28E01ABBC4AF1A730E1B +A6A2362C9D8F7868C5D8DC2ACE3ADDF703A642CF60270F4B6E33F4FF11F7D6EE +0797940480A59566249D99E1A6C143FA65DFB4709A6EBD26336F10C6A79012D2 +309C911890B7D5B5A80748CB88DFC49BE987E6647EF43ED460A07E8FD14BFC0C +0E924318FD4125A6E8165900FE08ED50103E11D0E7CFF2B27E0F3906747741E4 +FF1220CE43C70865466E5AF95AE3BFC55B57E6CFBDFF8951E988DBC46BB148BC +3A0D10780AF0CEF048CD8A305603548A85FA3BE38124FEF47AC8CC8ADD5764F0 +B20E661964C90617F52928861B333CFCE7067B6707A355AA1D5C880285FF00F1 +8C9160F2AA580A243314248D672E5F01673D50EEFF58CE984843AFCC5D13D37F +CAAAF2D9097E7EF4AC9A5BAA0E40801593265A3D30E11F19031F70D50DD4ECD3 +35AA9627ADB638861FF94425E920742A05EDE0E8231DA2438241483D38CFD6A5 +93D74D3685B42A2422FC7E893DC484075B8870E535E876721A56872D27F585F6 +F61946F053299D8C31C402E3C91A889E9EFF4B9E90F834C0C54ED73267BB343F +D856AFD746B5CADCAFE92ED41E5ECD6054C100A03BA9D37784E0917501D33BD1 +6755E3C58523F6AEF8C07833D3DEE9CAC170C53B769F52839998DF7E6224388D +79A4FCF0B6A8E4AF7A03FA423B1145EA2591275DEAEFE97E5B1557138B91668D +13677554E62D299C5E72139258296B561936A30A4C0B492DC55E92B0AF80BD06 +AAB6668D8C058CF408037912DD837106B670773ECB73AD4575CF5B465936340B +34E5384DC62FE06C0FCBE8A2E3B2A9B4526C7AD178571D2235DA40427C2FAE49 +3D50737CD5D53BA527A1D2F44EDE6CE4CDD87EC771B97CCA9A92F9B0D1596CA9 +D20BB223802B472A6702EC67FA8BA6744C2F2A3801C630768CE1078BB20F1753 +E3A6E8A6CFFB34A29AE81BD5DAE91A3BC4392E897113700E90CB91392B154D64 +57E90D14D3D89516F8B484AB55441F88EDB741D271A15560609AEE089CF0A14A +8FF5291D5C88D318339C454204FA8431DCCAAAD6211E6180B6D784EB50281D02 +EF10A5C4BD4E30C4D36153D681DAF1521DCB4D2734248712CD7810C11AFBAD9E +CABD869081BD6AA851E932A7460D815D6B0F3E853CC95AABA9A433FA9F3C998D +1D22BC12A666EA16213FE02E03D01A3FFED86FD8978A2C11C9EC1558C07469DC +F8D9898A6A6947ECE61705743B2025E36F7AD2FAB0B01C09D609F728037F04BB +CBB1770560AEF2287BA18CB8609FF8D849532B5B217F88FFE60FD9DBDE047D57 +EBE4D59E21E4064D870FED20A4C7F54DE217DFD613A6BC03988EDF1A27BAD8E0 +8B3E71B894F918FDF4B92D49763A3E7E13FC70BEF4A77379899A8D0D2C3D6ACB +DACD6AE1DEEC603AF997527EA6EB9BEF57A571400069C4284899BCDDD465D0F8 +50E9667C406AF29839AAFD924E561D525C51F3708AC328C5FBAB979768664354 +4B2FBA8E71E5C870B9AA56985B13D2D2011EE13DF7DCF5AE5F87813BFA0432A6 +AB62BFB388CF43E825A9E6F68C7A04A789D19B6C4B2449D6BC7431D651AAEF74 +FAF035770F3E64958710EF22FA4C7BFAB77A6164C5B6BACC8EBB521E0106020C +30C1B6ACFC0892BDCC4F661B5ED72FB3DDA5B5A15F078C764A7C904762C6D1FA +E0F69DF747D5E631A21B21D44124D0A88721E12F4ADC0E1C5BF9E7F811D91534 +F57D41DB09005C74AFCECC474F6121DC4D7CEFA6C3C9E89784CA8731989CA858 +D271C51FE6DDF094F4159A0F4D285E7AD1E6FEF92E8CC15120A81E5597A4569E +DF1BC7A6B75888D0FD50F8DCABC60641C4C99FDAA14CD8B58CEB6E4FD6234905 +17D96A29B94A39BBA888EC79F856D450C296E9ADF4428E738C3CEC6072E84AE2 +35DF70169771C81BE37EF5B02B377EE4375435CD43A2678D56AA34D9D85B0E5A +661FF0ECC39DAD27C6577B2C82D43E9BB5A9A47BB37E36DFCBB46757D8371757 +AB1319E7BF6E0E637D88916D23790C66DF9B5A1B58AD6D9B94F2DF4A3E0E227B +7B5E5413BB066275E88F9A58D107CE24E335E46781FBB7DA00F5CCBA0252AFE7 +643AC20E6096CB6AE182A818F1EE73E1C961903E3A388196FEA7727CC076C601 +D52546E7E28B975E4A2E4E5548C76B3C94C4E40BA5C2059BF18D9BEDD29F76F7 +94040A168B91CC1E04BD2FCE91867B345208F4F24F351ECEFC74CC39DF9BDFA8 +BA374506B80BA4BD35D42B303BA2FEB2C14DFEA9138CB651486CDF102730C6F4 +0E2A874FF08A85722836DDF510DAD787134D4A53C5B2073FEAFB0322A5A5336A +93D375BD8BC773F8F9A42176843C243313E954CCEE9806C0F1BEC797FA3FBE1B +046487C5BE987E3F8227F05DCB71606AF5CE9E659DAEA5FF94F9C957514AB3AE +BB4734578087F96809C9A7EE7BDCBE291F6C37D8113D60FF836CAF27FC59A9B8 +D1B1EFE2AF4550A367C294298111716DF767B350C5ABB73B04D08134C7494150 +E088259864D7E04033A7A3B33D7861C104B57045F727C0267024D84A34583A41 +3B15234E2900B391731B11B1EE9ED55BD20ACC587940BEDC273F2294DD29D771 +1683E83AF1038820E6ABF3CB5CF059A1A0D71A7A89FA080F574874E02A729C72 +F4C46EAE3481886D556497C22668244F7CC12DA8DC287CC14D04A01AB9AE5455 +BDDE03352C7BF01050415459EF4094B0E6E9D29A9CA78AD9499FB30C4930880D +739126678D733E17797D95E9AE4DB10CC4E5B4AED5575615ED3E9267AD1D3D70 +C632515B39C14BF407CDF21A2B8256EB67C010E7078F00C54C3B5ABFB9D3513F +31BA4554C36A768140BFDA697D5358E87A4064D1A7EF635F17CC646309F1DABA +0B2896500292FEE852ADFE956F9D27D394BCA0987A9AAD9601B4124A52D411AD +E476E8DAAEE4E48462EC4581EF4E7F2F08BD7CC15C209C67D0AF1B7EC03B972B +CE68BF6B21625DD95922C8EDC26BE0679DC60D7C258A3385251C4F10E7581FB0 +E9B4E00434F1A2B3F7E8B5759203B42C9445BC98599A86B3E9EF17C5CBF3C3D0 +AEE11CF06F091E7E8EC2E8F89BB662BDF92C593DD841617258F1235735976ABB +824130CC72B8C6AF3FAF1795A6A0D326810CFDF067F2D2585BB82FE5C24271BF +A2C718CD2B999E307AB849F892D881F1B38345D1F547BC946F839421F6F7AB93 +163E86ED53A538B8687274B2E3751F9B2F394BCB0607CF0944043F48FC5FCD53 +5158CB4AEB9A72FC22527AA5456044E26BD408C9F85321D924E244D6950E97BD +F59B1B2F45D5E7A952499F8913E4950325E669E2E9C1A40FAFAB4B5B32D29BBD +33F871F0300E04038ADCFD728AC2F1D45A80C952EEEA4BF406EB12E60A4E8FAB +973C739DC0D8A741EF9A5719C97949B5DF5EF9D522E96552955C8295E3E71780 +3B315504D4A016C45ACE08422AC7402118A67907E89800AB243BB1923D3E1E0A +8B556B8CB0B65CA806EF179B0E0CEF4185E11E42763FF31FF98D131C9AAD393F +C0872C8B9DB73D92067B739E0CB8C97038A00C4191138136A9A41BE4818A3AB4 +4A486A4D5050FD16DD480FE71D1F6F949378BFF6300A511F778FBF4F92084A4A +F001342B0E1E4B1B112539DBE2AD73386F453F121EA433D445971F8272E0C84A +DC793987F972DD86C65BF92846E48018279D55AE420DD2D617FDADDD14AA98BC +1946CB7AE60EC5EF705D65CBAE6367B30FCB3CD9D8D2E9CF2E8C10D2A6ED35E6 +A1C5153CD86ECA3077B2600864D5E1F4268B75E7AB2AE74F85525C9701861504 +4A1D987FA72DC9840B984D396F1769628B42BB273D6A9E061EF685CA2AF2A7AD +B0F67D35B98A32922F35E6C2E3B05C4AA47541F33FA458C24D23E1D5FFF5B8C0 +A4EB57B4234E53ED891153E17E61EB2E62955442199728F0B50DC948F6650BAE +3DF3EA68C7720485A8E64FFB09F07C5875A05F19739A03E5AD8F7F28990246D3 +31B3391D0EFA562CF203745126DE5E57B2A066B8F81D6DC15A7A43E4A96C40E9 +0770C3602E4127BB4A2434D6DE61953BE5D7BFB38DEDB63129BDF82D75E2C395 +CCB734C4C6E36AF77FDA63669009A8EBF79DC3BF7BD05D2B04461005EE562049 +A5FBCD888DD68D14C53D9C0BEF187DBC2489763F94012E727F4A351153C6AED8 +FF3E2CF3DCFC61DF397D9AD9C058376829692B1619BE4BC5236D29C9F349760B +40F07E8141F78A2DA1781919F7D1BA58323FD6F80B20537C9BEF0678EA1E03BC +ECD6B3C37B015AB681EA1F44972AF6E997B6E240FBB6245C5D40C5E2F25443F1 +3EC73393DF8AFFA6EE8083BFE81C462611C9EEB8FB202F760BEA70F31C616203 +A60EE1F73231C68D961C2606405E5C4BCD2B1D414F46DD96776591CD91B0EE5D +F80622B906033DB1E5A6C2CC283C9820F21362FDE58858C08FCE11D957BD466B +9BB409509567702DD1302F4C51CF2F3F794085E02F70AEB54AFE10BA265F3ED5 +4211ACD0DE7A87A7FF30870B6D6E5C8976D9F85EF765664D826F49120B66ADF5 +2358CA8958419372FC2AECD9EBABC1AC5710EB96F9FAEDC8DD36DB4D5523AFA2 +662B5104B595EBF3F3ADCBB5799618A6748EFD80F334F4A54BC9CA938E5D2763 +0493FE169A0456C3151038BF718F6F55099EB62B5D55E71E68611A4174B771E1 +69CC6DEEB2722DFAE4F35CD623F4CAE4B54155D992DA62EA34730F1E09F4DA32 +F664CF313B852C6AD7C1B0000DF80850FC09EA9B8DEC9072202737292465B71E +7A3651F97359BE4A2F24D7EB2D330F8C6478D1095263E199690023C7FA8D0A66 +E8E2B0F19EE60829C33FF81883477B679A85396F6584BF85BAC25A7636CCE50A +5F9C3C2B491F67F35C2FC1149456AE95E00A1183CE24385A5704B14197775585 +8EEE037ECFB2DAD4AE0A8136B49515B91CF4E90EFAFA79476FD89FAC7B968C70 +80B3D7A846048B96B1B0A40944D8AB05A6944E0613D19380563024C731183EDB +A19B2A17973396B219133D8621DB6B8A212E017BF6BE5B2669884CF21F495C85 +54A211426672C5AF375C420F70C9395804DBA4941F752DFCC4041B745C1D6613 +414AC136B547CD774F227D85616347346A4DE31ED0D39F7883E35927553237EF +D18E29CBD64218DB5E9A6120C3AD31C1AC51FB03C9A5FC1A3F94EC1E0AA0A921 +4E0FB129C4B2AF3F7E4E1207E05EDE69BE902D3BC375B727F69C48FF449BCFE0 +54B7978A137E921B3C5F7A8B6EF322A14C4CE7A455E302CEF31D4AFF4106C7CB +1D97222E8D919302696626A32BB668226C6B429EFE8BF98952CB7CA99A268DCF +52EF73C32033D9010DC1DA3E62AE80CBA0475FCB2181C765039E126F8D118B3A +16C564D63DA6A183D2A6D2BD3C5769D153BE4C5C5575D51F6620568FA3CEBF20 +2E8DBB53C3E98B608A4E8B49B8576B74FA0B501676122BBB8BC86E500F3699A8 +EF0597F519EA0CE85AED229EDB768BF2A24ED776AF349E0D8F93670FDF3F37DC +D1CF0A227108EDBCB1A4D65D2CAEA869CE07701542428CDED76919BB16425DF1 +052CB151F3BFEFB889D1F3B77162E12931F43C25F15D26A9A13D6AD05F5C5E25 +25C62F0FD56BB77233BF120BEE205FE966B5BADE1B5064CE049F9691C4906879 +E373835AB40153D23800FAFE50E418C6A7CCA1BEE680736EFFD14118259E8C56 +EBD6D9571BE53A3C81FD67F3924F9B3731068FA91C900468AB8629DBC444ACC8 +DA812F3C2F08FF0909B361461ADCC694C5A810736D1F36F3ED7BC01C40A76065 +F372672298E5E923401F1814F2A61FBB2A3B716D13341936795254AE8BFB9A21 +E56677198C318C67245C14806FD7F45992353F836CA3C7608B66C7BD609E5C47 +957999788A95CD36111E1BF75256633433AC4825DF63A9478A53090F0896065E +D94425F40F6F5D70257E708A358B0911E9BD8596BC93C40C405739C04EC654C7 +F844798E6BA09F66B76DFB3FA60A0922CC93C4029CB6658862226B515867BBC9 +44981CB2CCDC450ECAED50CFD5829279CED70A3578714FC62098761C83BAE915 +3FE3551FD84D12F8B02A6E6C0EAE737B4E6F8BB10A9AC6922EA6E9A719D88422 +CB051E2CEB4259A53957DB904D6A2EE2880A1DFA2BCB56785C3B3659E8FB7DEF +C15543BF475AC26B43E30086F00841EEE48FA4D04905D0750146CE87639C4AA9 +8AEEE6E79F5A6C30E3ED510E048178B15DCDEAD5A074BCC990BE96F795E26142 +608E3734451242469C5DF2CC8BD0F785B26EA819D28B4638516CD5DBA1D4EC58 +7F5B6B41F4C2805F1C59B9033CF49E6B608FB3BC8E00BCD9265E36BFB581F692 +079D366AD9C63BF46D79E7909DA0BE17E12ED1ADA8FA7495B946DE3514E64776 +6EBB2D42A08B5659914609035BE9C4822ED6D0EBA04B475A4FD25472EC46E32F +B0ABFAE2D5C5C06775669BA018A3C14954738309835E293A3015C9E77B1188CB +B87E4557520B0E0A4CD898439A84A89057CED908D83DE282B03C2F19712DE0AD +6C60308008C7A66E920BF87746964770BFEBBCC082BAFD70D514C11723B32457 +40DD1E9540C4FD1D8EDC4B569C730DDC06FE2C30AE2E4928086D1E0685B5A90E +49E62805EBE776DC9AB2FBCED50850E181DA8F2C1C30BF811A7DFCB6F6E258D4 +5EA9569C06319DA6D772F37238E8C5193B56EAA52BEC26D3BD868B6185562DDC +2368C4BF0157291E2594BC837EFA85F4E6036020A8ADF4F8524073FFB642D1A3 +D589424926AEAF200753CF388F9F95A38BAD70150812906FA0DE8C4EEBD50711 +387BCCBADA66D610A65E306F6BDEBEADA41B21C4007C0D547B37443C5AA31DD6 +4C0647C6A62567F16C858D9BD92A07F9A911F477C56A0767D28433576E1D27EA +FF13C789D85A0140CC2067A0C88B3BACA9E5CA578FF6FE3AA07055BF5DAA7244 +068EAE62AC0CB9AA7E6D356EADEA71B5389F63B532CA769BF44EC4DB281E5821 +66F33DA438B46AAA6E1C40DFA0D20362931D4C60ABEF9B73397D764B48EC5FA5 +0DCD9AA9BD9318177B7F2B8DDF05C4FBE696FD127CEC673C0C299824C686094A +A3A22CAEAE17C5CEC4FD894A42F54C0CF44A1715ADAE6B08475054299226608A +B72C8219990FB0AA1ED36EEDFC1315B7090C6425375899390DDC5D27B6790B5C +4EF13F86496842E7F15E2EC4899E6D4586D110615D483C8013729CA65600D49D +796F4045FA722812A326E946693F30DA9EA58C4949BFA68CF323719FB188AAAF +D9116C6E2D1CC442B14E408DBA7C1F5B2628EB316A07C1AF01E8D041D80970CD +A32A459B83EAD1429142EAF688C11F976D3FFED572DEBB37BAA22EDE13EA2570 +FC74F562DECD1DF51107C1D5E94932B96EC2045BEECEBE39306FE42329E5CD38 +8C6C652F24E4FBE560CD7477039DAD305D53755B925592DA6A30B086D3CFB9C8 +BD1B365719E113FC7234F20B9060C33ED663054E2D0F6818B7E3B8818B55276E +73D5F7DB7A44B41A7ADDE1B27312D5A03A00A069632BB961356BBEAF30A289DB +E16CEA3A2631D5844D99C3003E0560B8AABFDE5A342E9F736AB9E151A7AA5996 +219725DD616D5AE581A2AB221867DE247A470B6B2B373FF8DDB1AFA315F8BE28 +00787F402504EC7CD6EB25891FAF60F82EA920EC05271A789E1441F2D3737D4E +18EEC74CEF7D63873386CA1207398D97F7348C08FDBC490D626775ABB83180CE +488AA69F0EAA4AF79FAE3F8579B2D96496F14641CA64F4DD63C5AD3FCAB25172 +7898F721A91A2FF2FE12E379D9E253FFCD899B229339EBB3975839617F4B5CDE +EE4F5AB352462D85CC6FB61FA522EB4B1B6B344E5BE64381EB9AD1E954F5E539 +5F660E94D79A37A98CB0ABBA168D9E2391FF11C5F86166C3674F383F4205F6A2 +8DE7D3AC88D7B35F9A02150CC460AFD9E32CE6D0BC501F5FF45CB7FBEEBB9CFF +0C244D80CF880EB7B1ADAE703B252E58C29903DA4BE52A4EA11015B40B2899F7 +2E76A560F2707D2F5ACB43E662014874D4D5CA98C1D2DC7C2067609FE3CCFB36 +B0FBC480B9C38B68987CB8D6E631FA1D2E7318A66F93CD969F03B34DE925962A +CAD5CEE92762DA6925CD5F61D54FCE391A6D62E04BE5C85049236F1D30CA49DF +92735B8E357C29660D0A784C480B6739BE46C7195744962B55C11F30D4DB6389 +860C0527659D4BA0C2858C218E692598CFC2E7122BBBD43EBC756F669B0A4942 +2688846693C33557E67DD19559CEEDD27AFC710753E1DA8143A0A1C65B9A7D79 +A0955D9F1F47F364AEB4EEF2E6B614E9AEB618C0724FE1D3A71DE48919A9228B +951B863D6DAAA35110D555D2DF53E675614486A39EC579A361A77C1510AE837D +3392384CB22599DA0D9CED3DF2777CA0DFE9F801B84BD248A534572C3348794C +24BDB6049A50D040A0EB4F43870BF67914081F5891C91C9C92AF4CFAFF8CCE5A +F11281CE61D1E4CB0B26EC43CF25104545C684FD914DEB6C4D548918FCEFF5CF +DF4E3346587E7871BDEF94A1A7AE281A2801072A69A57A366198594CFEE38AFC +14D62D7574D5AFAF6BBF54C2592F54089DEA76A1BB4DA9063C33032DFB15FE9E +231F40BCA30551F2A9FBEC6955ED4695D062998048EA469D9A4E45CE5818F729 +B926A18F147B0729C89468AF68E544B2D63B33FAD1345FEE6A5B4B49816066A1 +7299FB3828789C29BBABFCDF480A6C4099C340FABAE3FCE4104282DE330DE556 +A8714138D8CC9F4F1538A258408DE114DAAAC70325B8AB9E91FD5E2988047523 +F4749595D996F7F45F5D2248EB3750508463F74001B12BA1C32B12DE8C818523 +CDE407E5B8ECA60A2B0FEA066404C9B3DC7A7FA244BE54EFDA12FFC3DD3F2892 +7CE57865887885D7246681AE8C423D616C34D8B876FE3DE7950C4EE77FA31486 +7EA794030F881F055B69F00EF4DA632C362F99A0B448CFF7EC06D7A5142AE408 +9F84ED10E7C3C5DFAA15AF0643D5E842CCA9F57A8B88D0E938F74645AF925270 +33E51BF2600216664B6EFD1F9BFFF2EBD92290720A1CC30A3C0CD764448A360B +5CA85ADE9D1B30E2DC38915CDBB1E9F04BFB4E4527E1B6BA8DAC9DA7579527A5 +764663E279786504A754CEB5BEF23AB4B4C0F38A7926947C859C382D096C3B71 +8F5BBA186866DC80F5EACECF0CC9B1A62A0F2DE2C06DF86CC054896D303A012A +4E554B8170287F2E9F0DBD499A3E5B428D7BE3BA2DA1FE53BCDD57BB101E2B50 +B7BF6C7AB3834E92B6123C037E3D32ACE0244E271EF724A7A48AD16B402CCB6E +96C1374D3744DEA3EB5E8612C6D839747566A809FA1C8288E58CA1D6528A520A +9D646F8822A756C30A1C7BBBDED3027FAAA806B8EF763A3AF74C777A20B9F0FE +1CAE652A97D0FD6819824AD663271312CAF72AD64BF90663406B48B17207EDFB +518DA8C1DBFF5E724AA46C9C81239BFE5BFD15FE5451CFAA3B28C217FD545633 +117EBBD6445F4AFA469ACF8C6F0EDFD007AFB4F8A00B5AB1B19D2F5534D1AD04 +16E7510AB7885CCC61EEB420D1F2BD09C274284EAD04DD26884D7686B6F71D82 +8C89EC8355BA3BF63CCF3EEE4DA080D0B2EAB81F59B919BC4E0274642AA8B55F +E677167DD680C11B367B5D400F52A9D160B9525E286BAEB9419864C155DA9813 +44B78F4494B3FEA574D54305553CCB283F05EFA583EDA6BE041561A9EB522AC1 +431F7674721ED2C5DD9337BB12358B1879E5F404760D8A724B6D6CC47DFE49EA +21DAAAB58CAEE6DC575C653F292BD46CE3204FED7AD7D9AFEB9C0F9BF0C299AD +64F5A90D1D8FB5DAA6C2D81CC58F82A4AF65C0202822B55F86B26E1AD25A67C6 +48F94E05194324E8BECC27FFA4C11C00068F08A880A06FAE3E7E279297E6E838 +AA2D0F6FF9F5C77BA9C27181B77A12B097AC7FBB2BD11B9E44428EEE36F8FC49 +D98716D5C5DC0F746745EC5532C09DBE7CB2827381C9BC12C7E6D0BA5543424B +374DEB0E1068984D01EF4ED39A2980AAA6B4A00BD9C0556797D099A57953D439 +31F686180F867278E86F0222825C664951C0F4967A4BA2CBFB1FBFA3D0F8B1F9 +BA3E2A713B374D84C810237AB9715975B1482D2304EC98F7149540F81709489E +69EA42D45D354C4657C7D87203AAF9DE6D4F026717439BC559357F546B0C6CA3 +1F87B568C61A5B5821E91DFDDFD6CC8029D2DE5378FBB12D21603D58B667926B +000E45870DD78E3DDCDD3E2F7FD9C16053686741D7C6ED9A3CB9A7332DAF3BB1 +4D74A363FF6D4D2661AFB2F5BB102E5445DDFF984A52C83493CE3279D6755C4D + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFRM1000 +%!FontType1-1.0: SFRM1000 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm1000, tcrm1000, larm1000, lbrm1000, lcrm1000, rxrm1000. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFRM1000 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-189 -321 1456 937}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E48759F267FE330B57DF626EBF73D2779A4A6B462AE6E5 +19E5878939A488F2FE1094A76925CD24DAD4573AD3CF34E426708CF06E7EBFFC +BEF5595408106E2189F418D17AD510ED5B6A528E8902AA3A5F0FF52AE3DEAB07 +32F06B63E28BB88229E046F4FF8A356BBDDE82DF2A197F2E26CA00D5594725A1 +83A89A36487EAAE1AC312C929CDCE50722FA6C596C261E4D78D6C6ABF77F5CCE +0E410ED74287A0F201140F8D9674A7AC585D3CBC72CCB824F9E1CEBD08AEDB3A +A4015CADF471F7ABD9B0F0AF73A8274FD441BC1988A61799856E4770155341D6 +516CD0E25BFA59B67AB7E0571DF3F5BA70AB52137D9E6A79EFADBE70CA05AC8D +991D0895C8FFC747FBC0E9A7212BAE6560B9E2B64FFCC58112E64A3B4CF7ECF7 +595F51C34AD1342F5678FE1E62EC5A389CF04E82B5F832914B91F921F30A7E32 +CA3919F57A2D9DE844CAAAC0DC751C255C9916595E8C9532E7A0A84A0AEFCACD +83EDE059FD06EEE9951473180B517F25F609F347DBA012AE9F004DC3C771777B +BE812787C3C50315D67254A384EB65F260943C6E16B2CDC64E15EEEDC67C5544 +8ADE9981A6867405E46222CACCEF79F9DC8674268BBBE1EFEC2187A75FB7FBF8 +CB2DB2134848DEA2F9CED443DCF561E7272B38F830871B2A5196A787924EF556 +4B7E9093ADD414ACBC10147944D216D351CC744DBC13B0749FD0A129D7C47983 +7FEC7FDDECB3FF4166FE295814B8EF751B79196DF6FB2F28CA8CB00807F682E5 +1F37B8DBFA6963E77ACF4A16586D58C87B0F882FD7BAD0A5173202958267F567 +6D66D0511364EB31556C37BA1973151C35046863FB4F3F5E6434479279EE110A +575DAF0531FC103AB31262966A1202DE769ABD9ACF510F5722B50C78881F3D44 +A1BA2AB9F9046142524FB20ACAF0176B4420C6C9F9229FCBF7E30D6DBC3C4B0F +DED371AA67319B6262F09C605B63B27E725F9203A8F3F9BB87D0F0A9F26BA605 +5086D8902C26CD5282FC30A061C0E7E6890CC2948DC96CED6B17F7A0D07D445E +A8764031870432822FDB248B3648BC1322E819AD1EAACF26C015440DFCC096DE +D2F52316EB67B4D572BE512E79B54D5957BE45C65C9BB13DB1136820C3E09D2A +4CC3CF09A45EDAED476AD160D159C0D790238F434A80480E90F6F90AC82FA23F +8A38AF1ECA5A7FB7D52181998509EAD65EBFD53A14724429FBD747A6BC999040 +EAFFE139386D7616395AC722D29053C0BC9A9BE91F3629F3D78920E591CCB5EE +D236B22917793A90FDF9C6E47200F0601ACF574AC27E01005AE706E26FDC9AC1 +D861718B296A187D3B717640AE8EA99AB61BCC1CEB22BEC207AC0A427058108D +B1991AA76FD8A0B8A4966072B0FC05B94A26C598AF576349A1C3A791CED6A7D3 +76AD6138DC521206E2640CCACF6AA5E16CA42238B17C0645366907480874F1BC +354AADCC275FDC6F2899693FE82CFB4AAC70BB96AB2AB3048E7C5F683EFCEED6 +16163D7A4FFB8C5473DE2D8757A9D9BEDD1C642648CEC89629415C1C9ECAAA93 +18570EC41A0D98A54E20AAD3CBC7EE740CD4DC8EC0B1D20114816D785A75C369 +FE5D0CD3CE3720E27DF57AB2803B20AD604872679603CF160E35DCEF4E053C9A +36AA27176A6192857D79100C5B9F1A4F8D63EBAF5EB38166419EDB91F8A569CF +E3C0B469AB1D0F0E592FB72C2692041C4FF5DC7AF688617314B6294A8BD979D0 +E18BFDAAA1DA0C332A8D352143F5E2B9EE5E01D720494DC237AAE86FF84195CC +47238C06BDCC9711D7C61CB52B5A523877A188FF28F80357578E37E956BBA773 +F09851DC770756F4A8975120AA80B3AA3DAE73399AEC03FDDCF64B4239C1A9F1 +A8DADBAE9E95BEDAE2C458068A685ADFDBC0B9F70E40CDDD080132E84E045BD8 +CDEF883763B42236B932B082A46E0B4ECD8BE43B2282092A5D2C314CA5524656 +A9A33B7108B85B438D96836E2ECEBE6792F6D9E087D0F52331365750321156CF +52EA21C2A48AEC3F2E9C130AC470C8F9697C1DCE4EF860E3C497B700F1C779E9 +13123264DA6F861012F31ED3A05C0EA432E619BF1628C60E4CDD6755F0A5BFD2 +AC55AD69C30917E57998AFD887B22532E8977ED36F34BD68FCE6E6DAD81E3B82 +9D12E33ACCB3CF94A7AFF12BD9AA37DA5DD9B4CC8BF710156DCCF646937AEE68 +FD77F476355F8616BBC385DEF28A9FDBF61F07142DFA4E42A53A8699E0D111D9 +EACE7B136FA03D799039F5EA06E5981D948905FD3C54002FDD0DFA26555F767B +792627B91A35C49975E41C02061CA00527AE90B106A073AD4658EBE1DFC39A27 +7187612DE5C9504E13989062EFDCDB59B399384402B856999B184C2882FDE2F1 +8803080DDD2D42455162B20FABE84124EC3F82DDFD82B72A7E40E89F929B2000 +3FD035ACD8C4A21EAEBDC6BFE405CDF9244042DDBD85E3BA4FD9478B5AA4199A +BB5C36ACEF621BA2F39AF2EAC66EAA99DBF849D7FC5285C3F343EF94B34A9778 +0F50543AB94D5BEA476C882647C4DB8DF589EFEC0332E73B03FB45F947FEA50E +8D135444A5F025AFA04AD42A7D259F9091BEF39827335A4E3AD99E41C9381A1D +7BAA3D97836F35EB3575F45055A0F03ADC8F33AD7381DD71F0378DCA1D4C8D4C +C320E9CDEA8214EF37FC9FBB48651E2C2A9A56472748414FC96496F90AB154AC +639E100D3A7BE1AD6ED055B86BA8E038EBA1B2F1C9AF1FFAC75BBE8B58EB60A8 +BA6C19D0FF4F26D0037F3786D492702CEE8BF8C9827A7C9B1146540DBDD8EE83 +40479DAD68AAFC7528EE02ADF52641A26373682FD73FB193A4214C10818B3AEB +FE824B0BB25B106572605F1472CA8889EDC5A5E75AD2863EE2BD777E6FB60F8C +56D9893071CA5012E1FE78EFC1A19CB1E86D0D55FD4289EF1737634F7C143443 +8D6D530A86691FB6A5BCD1D7FA7DCB7657EA1DA39ADD3311B1018F6210E7B40F +8D906FBF7421DC64F47114A9B084DA59967370A7D562FB29845025DE74A792B2 +6A558FA5EAD5F2215249880BF61BAA37CEF87EE4C09013AA2A45F89E12CBD794 +FC5E7DC1B579AECF1E4DD24A7CC42560AB4C127E1C113A0FE7EFFCF06FE0FD05 +E1D8D31676E3074229C51E25A0D553847CD393E6C446D720EE5D3853C9A21302 +04CBD6CA057740A81D5BB743ED2A2A6BFE962EC7B36ECAF512EEA0D23E23F4E9 +13FA21AC9B62EF29ECBB0E963198BA54FCD9566CA95FB3D8891C13860243156A +C4B02DBE2116D50CB7FFFA0DBA7BE16CC0092740FAB7F9A7E71D1D6EBFE6C55B +2908F85E5D7CCAAF6D21D25D92ECFC86DC23E0047893114304D571E00A3343AF +A1991B4AC865473CA2C30D20D6366F1E2283CAA454B42A64DF7284A73AE5A9DD +0D86FB28182F3978C391ADF818062CA588EC97AB519DDFE2DA57359590722818 +1EAB622A755BAB74106E6E26E635BEE16C5DF665D0513D44A1053CFC1235AF80 +1E9EE7F47D34C4191ACB3FB465F09757135EA96FA15A36EEA22ACFC141649A1A +F1E28BDD6DD0043E90A866340CA4E480D6327B3A5608D50778A512759AFC4168 +0B655133404EA58C71FBC8CF0BBAD29F774A1EE14141DBC4B350822CA97BF2B1 +DCBDAED2D85F1EA9F37D1CB4C4300DF22065E224A2B7EC37CAB195372FAE4B1C +A5FF548CCBF9096620F3F0F69FF5805B57DED1846987428044C677132FD4C5CB +85FF20A8109F925DC30007C2AC6894F03C8CE485560C99FF3AB58BC055D128AF +38AD3688384E0870F0EBF5BDA604AFA61AF0CD1B3FA9B2C9A3BD9C0FDFAEDB24 +D242E49D323E6779121158C9E34C2AA41D07CEFE0193B126C1190CB6CDC0E765 +D23741D9345287E83F5BB9D562A05B735B2B5640324695590B3F72309C456966 +70166CD8F39F442BD9BF5B5258BB0AD778DA21B6C7CD4C926329487CD36F34BD +68FCE6E6DAD81E3B829D163F70B098E1488624C5386B091724D0FDEBEF78D69C +BC803A0FF9DA3FC6DE822ABE5DD905761394DE240F463E4E498DEB47B3DCAEE8 +3B58F8DBF49179D539242C2CC6BFCB57E888C82C6BAAE2EA9F2DF32707FA6CD9 +7481F30850FED01BF3BE36C4D7EF91B7D59098EDA9FC3C8AD7586C55A00798C6 +F180E490DF34DF0A02222B8F61358A267105EA4458C598188A66450F8E80EB28 +FC471CA8E8621EE52DD6227D992ED0F2FE162CD1B199B4B50C50FD894E3ABD91 +C424CBD36A884A4257DD379E772A174D07FA9DB2C058F2C20F5F96C2E836A0BC +ADAFF7B26EF4C31A1DD13CBC9FA1FBCDD364FBD9BB39FDA70151EDC7CC15E15F +57DC9FD9B1F3E105BBE24DD674E3C08FEC5DEFB3A50C3C91643A89A80843B511 +B5221C402AAA0FA2AF035F5589E342A62844220A2FEE570C7BE1396078A16EA6 +326F997372B9D307CF356EDF8260275EBB162B13A1AA939540C234C4F66BFEF0 +22404D72524E93EE3F00C5BB3A34201DAB63223A82E9239931E5DE809984881E +532E17B7634DA556EFFEE713D22A147E3E46470C4A0189A816292FECDB963E3E +020F367C4FEAD880A7C3B5F2B1D1330D163CF0F796F7FD0FB0D6499B50000BD4 +D17370D2183019C057442D211F95768C99EAE8CEA0025C5AD0F3BE11A407A51C +6E0C7368C5E7328EE3E9BFDEBCF58DBD025E2A2E41B4F6039A3D8E9ADD5659E1 +85AC7B57137873AE88D1E4B611CA4A9E713E81C289B8919A64A57B7E0EB87DD9 +A66432ECCE06E3CC7AF6AA0A5DC1DC9280E13DD6B0A4E61F04E09FBBA38C8E05 +A2C861DF76ACD1366E775F2BDAA4ECE5B3ED192525519BBDB25258FDA3443887 +74F09976BAD8A0BF3338F37B025300E351E53658171E409F5DE92439DE7BB6EE +868F521F80D9383366D6CE65FB34AF4C93AA4D897E7872E31F02BD40B5E72F5B +E5C824DBB0D454E4BAE52D8C504DCC3DF5328C4019FFD224E9FD0C046A463F02 +2433C3F18BA22DBEC7BECAC38299E06A863D331504E0C4E9C4733EDB25280937 +B6A1D0581D685A2F47BB0188F013C21D48016E8554B9B6C28891E7E087164FC3 +0DEFA88A0633B81317C73D60AB1DDA825DE5277A027A91E51C9A8EADB076C776 +8EA1754E091F0E4F77D992EC02B7DC8144F2F9A81729AD861D4246EB951898DE +CB8205D79FDE84DD1B240591CBCB798343D1652E38E5885021D2F6BEFC3231D6 +A5A4A100BDB3BFD7DBF11307E00BF8A5A599B626C8AB954D2E45FB4B4704B18D +EB312692EE0914D73B6FB37C97E610E7DF9A49A268F4DD5988845B51D9D3F07E +81B9194251691E4207C5ED8217384099CF4EB2D8C6DDC3647EAE0CFA25492A45 +09171C13930F5454DDE7575B7C6646A2373AB54FAF6224A37CA8283B4B68687E +62AB58DB11842135D0AE7CE0624D934247F2DEB90606890C879E9D279B62A7D8 +2A16D2AB62148A9FD55CA1BE01952940DBA878BF941F1F74E25A1DF395C68550 +6D764DEC9CC7B9F5F76B77A27362FF66E60CB9B31849B483757DA8DCBA04D688 +0B9460344749F239036A6A755F785935754A69DA784B6F8C9E0B72B123C9858D +0A65E31551ECC81727528710C95B15B605599B8AA27DBE0E5EFEA39202B2353F +1FE764A569DC24E8EAA563C249F33C2C909A3DAE4B8D2A1F0AC2525DA402976D +EB35CA81407069C88F42FCE5085DA46C33FC5A393E959B19969EE08D7484BC23 +105D261F2B0D4C38BD0C774E7A36A8AF511CBF420EA4284528580B892F10AA5B +C2885F0B5A3709C2D2E60E95DC0DDE5183DAA9D88617AE4D95F2ED54290D1866 +9353307B572EF6909D501CD60CAFFBF2A4004A089BAECC3D74EAE920708EE65D +0BEE82C0F00CBBB32E3E5D3F29D356DC31101F17185E95A7C1A5E00E3CA9A382 +42A09C8DC4940A7282F8A460CC9CD0F3A3BD2D6871F5BBD8D6B0F99339DE8B3A +6ECAEE554956C1381B4007169890019A5902FA8C97F87A069B3B0B53EC6F3F15 +4914F6FC3A8ED19FF8A39F36447879FBF49FBF611DBE110D2678D585115EDCEE +1C91609C50017C706026749A1436FEB05B9E2152FD33A807BA33467C0DA4A116 +B4D8B220A9CD1EB7D97DEB2E78602EA080B0CDD664D46E2162FB5EB42F43AD53 +23879F002B3348AD97BCD6CD33D78790B63F230C69293878FF979758FA89AD6B +8FDB502A31951C63F5EDAD91D899201B3A9BCDAE2E1AC5C520D7EC8C5CCFC14B +5478C574D675B333E6F2E388BBC3C79AF2A6F39613E60E0ABE18790BD45BDEBB +9FE413D6E99C313E581AE460F64CBB75ED74041943D8595479AEB9C37A0691D2 +7E8CD0430F259C8997FDAA1DDD1AAF89955B2DCAE6F05AB723A1B2CB96E24C1F +8C3544F0EB5B07B48DE067F29A6E068BEB96FF245FBC4599CC66DD9E15C31899 +4BAFB16A9EFC4A085DD627628FF3A59A863E0A5C2B4F76C86706D2A3C2AD4AAF +964D05CFB1E75C93E4D62441099602440EB61FBEF065893049EC7B4439A9CEB5 +001A65EC1F8C05EC7BA28AF22143CC91DD905C14979D53F051CF23CD6AFA33AA +7E2DFB57BAA66FDD4CA03D24D9E70C19B7D8B2FE169B4651FE495CCB45F2AC14 +C8195FF8CE2D4E3355EA02008314C2F3055C9D3FC28E9F650F590A4EA06F1903 +5A0234C2B3896A58752F3C8726567A3041010E6BF1D358F2583269AA3DCD7B2B +0326CC19A52DFAFD45E2EA390D2DE1C38A0828FC2A6D8B6285F5CE96F53762ED +F389B984841964645B059B2CF441BA9788DB555CC5B3962B4FBFB2CC79B1F054 +4FDD2096499819371CF255F116E78287084ACD31469426112DF5B37EEEA51685 +9093472F780F0AD6A86B16726DC4D8215FC059A9E9E8CB06EBBD40B51B2B4E83 +5F0FE1D8F0641DB83A2520AD8BB38979D0837C88E55DB1570293AC0EB8D25B0E +0BBC480D2C20DDE6E1D2050E48DBFA3870593EF8AF91E704098FD9C9446A5260 +AE055952761F1507240B9C57773FFB718D7F705F303CCE463776B5F1F90F0B10 +B97664ECE39DE065FE3F5061C376B68F6328A0DAABE9B1B32B40AFEA90028229 +4488D85C1856E611DB5F6B577269475B5E4B670FA188FB3F4652E8B0011B57B7 +693FDCF8F40C4C797851BDD2A6CF28F2E77879A80950BFDB8C1F6FFEA6D759E9 +05AA076DA15AF38374B157C6E4367E5CF378E742872E6AA786FD9FF77660B5C5 +53472AF4B4550D5216A9A031D90336992D6E69C66BF9953B6EC5ECEF5ACBDC7F +661FF61B7E98BF55BEEF99C190DC89FF49D878AD96CD4CA75D32FE8638737A5B +75EA0B8DBE44C83EAEFC12D6088827DF0F01CD4E367FB5BD5807444395130CDC +907815CA48217EF03C9A8B91B9057A7B8EDFF18E61F20E2DD1D8CABC65EC82F5 +1B8D4AB1B2AB6D4CE131522B68A0635F43165126E059C587627E4A11066F3661 +0CF1C6366282BE38879C17407B7DC70DE1120706FF542B9646DCC15DF32ABEE3 +7A07A6CA7CEFAC5074CB1BEA0FB13DEA2D839B35D993B37F534C0AF65DBB06EB +48845ED9EC42BBE1E216B46FA1C7B9BD37D974AC8B12D710EEF99DF22D8C4454 +84D49EDE91E7A5A4CA9E2893EC11770F7330527441734D404645889ED7B8BC6B +2B6D49751E10C76409A0F8E982CC2D527F333B9AF7420BBE3DE513459992F2F1 +42C2009DF01FB515FCE4DA65A2695E38C92C6A29E913656C7120359E05B3C7ED +9650607FF03F033A71E7C1B59DC21C85D54028DE4996C46C71709B2D9784067E +7BA331CFBED4711755A762FD38F6228B40676B5DE65E36E69EC65E12A9C12F90 +E2BCA0A1AC35965E06A36225C94F55752CF013A6B304A8F2391DB2EC4704E4C7 +DB807BBCF155D0221FFF60AA585F1C4FDE0541624A9AE275A3514E5EAC321378 +426488C60CE3D54FFF9C656CE8764F5363B0C2B8AD99539EB25B85702A2CD83A +031469E3095E3991B1C59BADD1C18787F8857287C219B4C2F837B533E58B643F +C2AF640430EF891F67390652DFA84C1430E0DCF8BED277B49B8B614E961539DC +FFCDBF400B9BF23C4C6B1B44B6C4C3C7E67EA3387AB59E69D6C55924D2BC83FE +60F05B827AC47BA4D4B3F5B529A5FD5AEC8EB11107FFA7F65576C6BC954571D4 +21E105EE7A37149673895A12A7B4A02C8E2B80B38DB491337E128E6F1B467B90 +218769C7AE696D12EE91D94892C97F04605AB3F900F2CF7F9B68DC2157479AA5 +9E601F104F4363CCC81B2B26102438A26C36C50F7F0267F7F7AFF7661506374B +21799ED74304A65FB7C4DADB768721109F33112821FB6FD416180CCA3182AAE6 +1A0F23E26AA0A3D7F6E292731C737240095D1339D57AE2F88C602FDB684FC5A6 +C1F3DF8DBEA02CA06C10B85533BCBDBA1EA2A3D26C2F975E6F60D40067F132C3 +D31F15B98FAFEB9B135E40565C6A63D4E868BBF63E39DE89E1E2D08972520096 +0631338FADDA91A3C3F84571F2545DC0F78182DB6D4868B6C0A8413227ED44A5 +AD8616B4153F9BA60CF96EF6FB23E31E7B4D27FCFA754E4CEAA88CBFD6ED2D76 +93885B27367C0DF7E9D5E3D3027540174597353D70D739986032446ED70FFE70 +0EA2E4C4E7A8CB440AA4FB796E2FF6B427EA0C835A1BE80A9D6C15CFCD3ED8A1 +A2F0300BCF767863C484768D5BCD99D82B177CA7F98638D83D859C06AD98E39D +F12A2E918083EF1BFF1C0B7B16777C520AE0E5A9D9DDC74C35A99620B2750981 +4014EDF9A071484CB7CBA56FECEF8937694D77661C628BEDA5E728D9798A83E2 +D42E1CA849DAE119E0D4497E4F2CDA8B52AF45DCB315BE8260A33CC68D66C01C +B1166CC1A7B7AD6D4C3B6B9A753F6A9688B0CFA983FCAC42C2818B6D4535853B +D69677E526A2BD9A7FB27C2064D2D5E18A7B0A2A6BD8C8C86C787C43EFE69999 +A23F26F08E49DA8EFFEB8986772A4AAFB4935A15E304DE26D609A3FD47B8B312 +36DAC1F782E8420C2CDDD501CCBB79748C4304FE4E32F83B0F09F547DA4DA7D7 +3E1F52279AE365913F508C06D96B00A10AD98E6AC5F3436D6AD63C3986764FD7 +1D11BF819A83A01205E71A63A45564205650F4A06CB5CB22F05212801CD80430 +3646261F7EC086AB5D3FB2FBAC48793E17AC0931F85C73253B2701FDB0FFFBE2 +EF4BBBF1B07DCBC73259FB34147D958445ABF4785AF0D123908928C43BCA562C +94F8C1152C786302464B40A37C911B616DEA71B84511F65F00CD41900B94ADA2 +911BDB4806150221DF8FEB084E496A4AAE22E098B8BE60E88091E8933734971D +1C1095920917E68F20B8FC12826CA8713D1B162F37A13D40E2727B29636B88F3 +40198ED89B9258E728F72A8336234C62644B187181C067B9B77BB0896D71CAE9 +DB48F44256FAE48B8C4C89A26BE4501C0E3AB40201CC766B4F414BA0493D1E7F +DDEC92AAC0B45F5E18C430D8384EE3E265DC647D4A33EA09D476263B9DE7B048 +DB7890533FD9FC5D35957CF25029BDB53780E394D9D25667F91307FD266069C2 +6702B2A871F588D26F5A340BB42AC67AB980B6A05B63D75B845B158B22F73ABB +8ADAE775D48C16037308030C6C436A844B59BF36F70351F9DA69CC0DCF8D0727 +0608CA2604AF24AFFC61266FB6AEB9CE831938A0B04320FD73B51A92E491B1C2 +5102862435410757C374B0F3967E280DDCA38E522495DB87A27F703D2377C086 +D7D7774EB6D4D0CD2D813C55BDA12A8757D997E2D09D13AFC8C6E0D9C40D084C +32A9D08A5BEC4D9582F61240C2B6DA02514340DD6AC03BC6C118B65ED8CF2117 +5E62B255EEC6D083C51C6E4B796D7EBDA1A48D5237009C7C45DE5992A22FE5AD +2DDA35AE369885F99C355F29DFE999E95C1BC42AE747100DEDE157E1E76E8846 +2A7B6EFA4357ABBD91CAD9605D4D9324C5DCA1C73E02D085EB92B005C7F090C8 +90687069F0C1DD1F1107E4812474A7A8FD26D3794264C9A4DEBDA753088FE843 +710C0C9F53EE1F1F63259CC0DB23E160E997C70B7AA122F415D9609395CBD8CE +7411FD7FC66E06ACCC9E574F28625B8D45B0A50541EFE291C9E498792B96DE88 +5694654D1BFF1C0B7B16777818DC0974B735969B18E3D0399338CB07EFEDE9DC +7CD4DE6CFA14796902C4AD9261E387FD04401EE935B269D46791B443AD9C5273 +ACDBCA8A7F3C9F33FE54E74DC1322C0ACD569899B200D5F9CF506E448C5466E4 +E18532FE268EBEEB17DF025A582564C9926E7B2707455C5C44355D16F314499D +44DD9A7AB015B35CDD346BD6EBF9DEE6E3D1420B243D19D394F0C5819A69FAFE +D96BD9A9B688BF28A9BF15E3C6DA6118215B8BBD40BB5AAE9FD98E85D2F47E56 +3FD52C41D778B61E0DAB92A63D02BB936FE3FC1B514C17ABB4CFA3110EF40898 +D7F2206E9C8751A1DCF6A9522AEF8D006DAE683E4092B409383CCD6A332680C5 +3CDF9E71106112583633A6CF04AD22464CFF01F373D061A1454568CE46F3CFA1 +3C6E697602ECC9F1611A0D4AA2A0853B88865F54C2F423DD656BDD01BFC02589 +FCB411A12A188C6E505C6B083C93E891FECD5342FDF3CE81F2384245D6FCC8A8 +9124EE28558F4B0E0C34451912D58C40DCB82C063981DB956C613DE4AE03AED7 +C3ADDDEFA25FDE9857AA68798E10736D3F43EE49D70ECA491D8E6F9F835D61F2 +224E2B020DDECBC111D973D24E2B96C2B96AB6B0BC35CF17E93640D8BBA7CD03 +A8D1370042CE857D8EC76875A4B94219A3D52FDFDBFA0120E03558D34A064D63 +01D64EB629A54E9A1D1E7F9A1234329A8CB90819774D5C77E2800381200CC96A +66EE851DBD7304437B7F90AFEAB7BF19C14B53245AA757A209F2E9BAEC10A773 +4E900805AF7BBC623F2E585C3B8007CB08177ACEEBEB71A83D9CBB7FA2ED68C2 +89E7F194C9238F676A2E5FA082686089DF8C404F55F00686403678EE290115AF +675BD1F1DBD7802F663FD46D6C80A921D1895E780983FF7A4D623AE7E069D20C +C82E43728507A3E1775D439D8A055B4B68B3904FA81CD4384DD5316CA6DF9A46 +A3D291F37A4CC96C95080D2AAA50C73B2F3C8B751A40ADEC53A4E1DA73D1752C +C323C7AE1C96AD58B0946C6E1783ADE4745599F81406D28CB7B7F400E99B1BAA +9FA6E75A84098A3DC7471C53D6ABEB63089059AE34B0A3255F89CAF1DABBA08C +8D10BFF01F3A26161BBF1F3FAA1BF231C5D5E20CF1ABFB1EEF068C88E79ED815 +349FC9AE6A972896E0BEDC70C1C09AD68EB9A70DA500C2664615304E31E0E1B8 +57F2A40E91D1AA667DCA0CDA80FDCC858BC7B4D1BC9BCB3486A9DD953D608C83 +56F07039706CB1BB1F23EC79C6F9B3FFAA2C575D1C09645FC957E4B6EF0266BF +9CD2AF645AAFB49391CEC9D61B3D72C9C2B73BBA20C72A906351CC348545C2E5 +72321C72C214A0BC521BEAE2D2CD1B906F677E349371A4D6A0E603EA1A53D43D +4B8D7191AD14B90C8C4CB045CF7536DD1F77F094EFFDD8B069090BF5CAD8E573 +91CE7D4B671C102B67D1F45268D620214DCE09D3D9000ABCEFBD9CCBAA0C4C79 +8FB611FB60A894139955A759E5C9DE723810A43CD7739ABE030FED2B2AF3A750 +81694D1A365C1FC55067E8FA0C4CB9B25C4938DD6F45E91F1DC9EFBA2B76B6D6 +30A2E7F6F259B8E90454D406DA58F8D9743DB472B6051F9C72DEA2F728CCAB1B +27BA58761134C2BE5253ADC946CEC322F446438EE4F829CCF0965EAF1A97EE25 +E9362ABC519125069CE9B7A887FDB78598416738626B5C6661604092F8B3B533 +1EFFC8F3D24D3A109C42CAC0D3A56B5A2FA27559800855406A66628B70A857FF +8365454F6C02E32E98BA32182B25C341CF4F82494D322DE3779E3790FB60F1F2 +DAFAE22BB3D72CE49301548B0A1A8087F701EEAB0F1B12C683F56B29C633BB67 +F92B2BC1EA562C7DB8F3314CF074241C00E8BB0781D28C69BBE333A7D19DDB0F +BFFEA829258642FC87931B81EA6501F69BBFAF4FFA882174A9705ADBF51F3DFF +CD7E6E8217C72FB2819E0E520BECCFCC48FEBD8746D99CB33BBC4E0A863F790F +E3B3DBBE5B8339011DBB715C0EAA8BE59F75AF5F886966B2169469B1F7DE9D57 +3EB051F7CE819D5893DE77E42C0BFC25098B4CAEF124FE2033DB976A554818F4 +174BD1099207B3AB699246DE3E22BA8C826D42023BE0EC3D74EA17619AD46F23 +526BE5010B7CD4F53F394F3468153422319D9F12A79D5BC89BDAA176E784DCD7 +8B53CA1B9790B087ADD6D28045934208D32EEA00ECCBB8FCA8042756FE670C14 +11E816D4315D641E07EABD7ECE2244B867F334D3F47F73E20C8E7F06D46E13E7 +0D305C02D807E5DEA64D4FF8F9BE4031E060FC4E0822B86BB8B85AC0B31D21CC +5FA0FD1C81C768166F346E1BB0056FA2EDE0E338362766776954EA06E5981D94 +8BE091A8632512A90EBA22213DC374DA9B2185464E5EAA00C69B4CF9B5F81C3E +234CBE8F73697C9B9A9CC180BAF1B2D4D06807FD3043E4B251E54E62B1FAEC0A +7568FCDE591F6073E58525269F51D37DBA67EAFBB8CFA87DD3CFB969C83F1DF9 +3BEF3ED8F432021797C911C79C34C775A49FDBB431BCB856E7CF52B739B03D87 +4C7193A2A3A74FF148379E8F07D1B3CC6C81116873B9AE47E3041EBF0544C119 +C9AD5607CFEFCE0C19ED2299CF3FAE49B5E2B53F9A568EEC979062310BE77223 +DE59ADE6928BB9D5E334121F714098DCD6A27F863001D951D6FAD0B318555C7F +6DA98373758D8D6F01AD326A9AFEBEFE676DD71784CD09A2196D7DBB8128F43D +72944C18CA529733170AC60DFB148AE93867D1F077A1589CF50BA27931FABC34 +B0108680EF67F946F1E50BFD4124A21957F94CC63C71755CF2AD36B7F2139ECC +58BFCA1923A592A447043CE44E65F6FDE561069897D0138B9F53F8489BDE53D9 +4933F814BD018CEDB9CF3DD50D831BFA482969D77AFA936078F7F9222D437188 +1AB72D1133396D9641633CB09B612082055B1F180872D18A4298D252B37F5024 +233FF435172665BA6BD8E218A4B985EDFCD485CCC889472608A83942188C5C67 +0AA0B84EE4FD48909A8EAA2D1A62BF98DEC385C5933EF5F303A800C887667885 +49FDD788EFEA78314EB20ECFDADE08FD91A7A27C7E3DAFF96721FA73476D990D +CA0DEE64F44664D1AC5424E4FE83D5411824BBF2256089DE923DE3B96032EF14 +DE873956316A7F0D40BAFA9E46B40CEBA50240D281E26D09B00E22038997EAE2 +C46C92013EE19FBF39609F5F30FEE7D8B312332BFA5DCB89828CA0967703105B +830EE2312814A2D624EC2EB5E8B293C2B516B5AF7B36919EE88B8371CAC8CE84 +E149E1BB028FAACCB35AB9771823CA65D644597663FEEF6BBF242DD8C69E20DC +470F094500892EF13FE433B419D037F72B5A6A05D71D8A8A484C1EAAAF6E61D4 +5A1AF57B7F07E1C9FE18F09CBFC1DDDFA9017780009DCA412167CFCB334D08D8 +ADA17249484D0792DD2D0EC5ACDBC37FCD4624A9A77CA9B8FC59CBC747C0CB3A +8E51CA55B73D74631D43166CE59817F09881A3095C755E483494F00B5703C0F0 +9A2B707F1003E5B41823817C0A5BB1C3D033A7C56FDBFF1B2D1874CBE3514C56 +8E5D0D21A58F30FB958830802E145941723005F8EDCDFADDFAF3D5943D33B00C +E1BAE6B90A5F9BB7A435663117E78B80466A7538C66BEAA34FF0B2E1718F81BA +451078D20D89AFA662FDCD3B7435B1183E297EE861B914AF2B1A435AAD17488F +88F65B5C2303F2D07F000365F49426F8DE5B85868D0901C0F1A6D8DE936E063A +86D9BC4552F45A2800E86AB1B760B4696B15B0FE2BCC0FD93F0601B641ED842A +F18005974961FE16AC98670A10987F3AF63CC0E199858BA3FE780563C2C61594 +33DB09F86AD3FD2D51D30DC751699D83EEBDB230B4DC9DE51D5ADB10DF9E2BB3 +5660FF98A6734F39E9D8E17363864CCD9330BE97472148DAA479968F05C3924C +95A8FE4D8586911F73EB546533E1E097ADD13C0286A3187D26F908169809D504 +203A408169332949ECAB747C9D37E4268D2ABD6467946BE110BCE5EF9F134A0D +D6E0E029EAA738F04911B3DD3910FD857B639945C901C9A721A41C2C25CFF2F2 +AEB149E8FE9FFC9753DA0DDF6197C3C73C7799F03A2FE5AC49C9EA48C69A5D39 +FBF00F1BD01F34B3D1CAD7566BA1C6029FE6A9BCF8230D05A5B9744C4E8E0583 +EC77EAE6F2F7D6C10B31B9F8D7AC0AAA018054CAA7D5FA03193ACCA2F24B7124 +2CC62600301076763AAB50CF970ED7349DE7B048DB7890533FDEE191CA0ADDD0 +BAA7E46C7493B8491EB8B13DF917C57566CBB895EAE6A39A649CFCBDA6152659 +6E952453219BCC71B0CAD1E54772FCFAAB506FD21E9C64600D48329329A838C8 +4A1564B27E259CF30231C6DFD8E9E925C4DDA616E5A6C2DFE33797676042C992 +12871E76327DDB5334C457574F60E61F9D3AEA7D88F3CB969B488166BC45AE15 +C26D75517B3941116088CF3733A1556A83E696427C504F122868778E8DC4A5D8 +254A3EEC46F930726317DDBC4416D2EB5152EB5124B8919C7495E917B298BBF6 +7FF83A5661CA9E4D9A6BB9B94E9DE961E85C282783F6700F6CE64355445714C8 +89C4BB064779C78AFDB5CC3AB84EAFBBFC96B546D6D2235AE2C14E48F672BAB2 +D85332D6EF975CAA1FF25115E3524ED380D63F412C6601802F57A06CD0EA8538 +3D49E6058B74B63F686FD09CE9A3159E61A9B2CC2EB2574007088A67BB03727D +B798E281920238A94C73FC58A39629A073912F0958C2E6E2965F85F48067051F +B23C8ABEA37424211C47FF72D385A5FFB1A224813B9EC7DEF9BC6AB4D041902F +EB404AE008368289996165ABD441F2AA90E5383DD2B411C9AB9C0ED0DD89B284 +E3195E7E641BB46B30E7F80D0773C49196DD8C350803734ED86FFE50E759E0AF +12CBC1C77DBE3C57FE05E7CA83110AC6052A54548AC32B0393D4FB925B4205AB +6E119263FD591E7BA92073495CA295AE424AFC2DC0504D427EC30A32FCCDB5DB +F0DA8C152EF4B01161ABABBFC24CD6FD195518F3B3269E9FE970146C3EBC9D78 +8A40CDDA9E89265FD8D01BBF2C39794465201D6C335DA2DC7981C82B8E6B8EF1 +DB6370B27BD36C6DE515EFCB9F17012F677597F65A43DC4388FDB8F030E3C995 +F5525B6051D1659FAAE782B22828C902A58637624E73ABCF7F94A57845186769 +2A0FC2770032C3E7A4B7A858994798F6ADF29FAD49D67039DECE7988D35B006C +E68CED97F94AE4DE1A6044E3093EDE6068C67EA3479DCFF96E810F872E8167DE +A1649F5446991C52BA70AEF090B97C153C99FBFF33F526432F0371A642FCD812 +C47D7DBBF0D82C0EC1EBAE7BE17AA72035DF86B62F46E2DF4556E3686A6DB5B4 +09A24463E0CFCE35914B9A6B6CFAF17E07B0976A9C5FFF29E378F367FF675642 +AECF2FA4CCC17B6CD45304039A71E921297922159C00BF64F572191EF748BABF +B556FD6B4A384AB9E02C217AD38EB8AFE12AB1891CA3349A8EA4D9B7ED448988 +C123D6C21C3106596CE042981780E4C4B9B367D2FB02D2CEC60E1267B40DB5E5 +B60F4C03FB4974A5212CF5822E446BC6A93D172438E18821B27DC5869F05E610 +6C1B5D411799A57DC3F5CF1386B1CC8E64F52E011649CA09E0E1AF3AA8499B8C +5888AAD2A5DAE249895800B4BFC41609FD726FD4EAB1516C959F40A8AB8FA2A5 +629F272D3963B837F416D5A3A3777CD2E466BCD377C91DF14D6431E22EACAFA7 +54F9B9BCC754A93AA6DC058421AB41F36751956553560597EFB2CD39F7509049 +50EF41F7D2DA309CD19A673CAA210263E652F1AB44B5B459E66E1118BE5C2602 +096E39E3C67E5B88C3146A4F2C046EC17F8E936016544D3284873A8D918E5F81 +22A7C7C81849BD377958316937716F0B46B07226B941ED9F7B3E87A0BFC7FBA1 +9E1B66208B5CDC5E593954F018C8E91E99FF9A1890A5BE1F58CC3EBB25539E04 +26081BAAA83C9CCC57CC72986D7ED7DAB3D34239B2DBD7F9C3183670D033989A +C1DEC903F59E2B273D23BFEEA84CC895EBA155B0986E6DF630246541635DBF43 +C5E051429B46F838E9C093A9197913587457E9F04445580BACC39D0CA00C473F +919003FBABF937B0A980152BB2D4B053E9389AC60DDAD0573A5AD0FB01842259 +8ACC4CD6924E9E3C68089300D8C9F8D3857BE940F30C16E88345CF4C2441E6F5 +0A29933E023BA65E18AA94C0A074C6DA5F9D91EFB1FFCA1A2361104A236F82B3 +998720436456F458BFAAAFAB3A9F4259AB4CE9C771AD6B8A1F6F864DF17EDE5C +D7DEBC30A47E974BF4F8E8A7221ECB7B23CA5E742D896ACC7CBD0CA3F8440774 +D2ED1E04B74A146BF295E2CD4B641F19AC1A4E549AEF58F653566F2C4931EEC4 +5ED48F97C386992F81981E710D94BEC8279D9794DE3A229932AE2622A948B6CF +08B85F22DF90AED2AE82CAA022B26D72D13B5D9C5E10F617EBF4961C9EB2A88E +E698A6BE6185341382B57FCADE459ADF234716410FB20847F1165FAD977186DB +36F2B290C2AC0CB329F48B5BBAA2033FAE2DC090F40E312B048016A2AE0A918D +0D716A746F7E9E147BA6427B05E5ECE4426350531B294209CD71013B95FC0A6B +64CE66D7CF38735E9BE33CBBE48DAFAB4BF647E1927844181A9225D1D6F5043C +FB2A4DE20DD8EA8E91A4A07B83CD82404574428DD55A51D27D55360D4A040FD1 +8D58C70DFB18D1B07435E203F1DC805C80126C767905BD15331E857A35DEEDFE +9E28BA7A8D486E7F8C856FDE331DD021266D3626E0EFFC372723C18F0B3381DC +BB6B4ABCB639C93CB9B837C444F9A7BD27154C11B0C168D0A37498533E020AC6 +5F36B32D2300C59CA5F0DABA54495615C3C7F5060ED63B5A7B14AE43F97E9B59 +74229E8EF6375AE93829BD8357F9C75F075FDB01506F4DC7B84074AA159418B7 +F3503AEC71BDFBA3F32F005006F3AA06AADDFD2DAC39A73EF4B4FDFF6BA0393F +96D217F62AACE609F67AFF4C9FF208A3C2090F020A80ED07838E034CCD6E485B +04BD75C98D4DCBD2A0F93EAE866CCADE4FF34CD009E859611653F51F63DC8A05 +F569E5330FBD8AAF8B715A5B8B52533A52674210DDE50390F9BB1660A927FCD4 +FCDAB72AFFD7939A22FF0F96E33D28DF3CE2A4609BC8A7B684CA8DC066F581EE +1DF34FCC4D14DF1EBC3D29C2CDFA5178618519A2AF7987820BAD8ADAE95AF9FA +23768F5DCE5B4764F9654538101CABBABF885CF5EAB8D0CED305F9E94E93CDE9 +13169D7B77C2FF4B80AD3894BDC11B6FCAC809BD483DA7FA35790A6040A04D8C +22B6C915207755CEF10D382A58A60114E5B172EEE29B9DB58057AE0F45386203 +48773104FF428DF0C63D2B10872DBC6A4D3EA056B233E91D6F701040E96C2684 +1562F98E027FDB951405124BFD942E0C3F6947895AD10DAEB8505D8D181CB7F0 +CCFB474759A604EFF3E4CFB0399319CBF497527764F399CF9D3AB22F58B09CCB +C1DE28E9E0EDC90CE74DFBA6B0EF87C987B03174F85148B3454329F52CCBBDC3 +45CD47F78B64914801FF69751784DB34B636BCBF9B377656FC4A68560F4D6FD9 +5F97F9ECEDF58FDE8844F1BD6CEDF906D801C4ACCEB6B3DCB7265CD0695602FE +39C1E59227AD3DE5CD4ED126CBFF687358C8B076C4D6717AB69C35D1D4AB120A +252EEA46E8D08CC5830055542718B534667E448EC7009DE0E7F2C85F3A3B2D06 +71FBCC613B2E3BE2826B6BCE897C1F025FC646E32D143B4A94B7CFEAC393CB36 +D8D2109461CF386FE3915DAA086A040B7C3004C74B6AB85E3994FD074B900E20 +1485B49B9383E370F113414899BBEE0E0896ECEB935B1FFFC0719E9B26DC4C87 +C914A0DF44267320E404F7CC2710F025167CE11BA1CEA0D53EC3FC0B928C43D2 +25CCA08A7E7ACA4916393425ECEFDD3CF2AF0479612C1A621692F4E4200D3173 +842FD6FBB75CBB4C237B78293E8C3BCF3FFC1E16B3626553B0C9273979CDA1E8 +635BBCB5F9BA84A5D48406CB2930E1CC9B9C312A6C033CF85EAC6E45BF241322 +6C236188EC0E07A3E44000D20C69D9ADA16C661640092B28BAEC01AEF8773342 +EB7BD7619582A6185ED7467047F10320D83EF408AA09E79CCE1A96EE22BD2AA8 +7FEDA20143FE0FCCE3E8E187EF85E3FC9E6D3028C884B8A00C14C5A450FA6225 +6F42379FF022E56780D4E434B52194E8C13F83561A0939E5B16A88F3DAEB5072 +898418484F9881DE0CC513FBFEC4F7BB403B73E11EF3EB44BE9300ED503A977D +0208491CDA3533070977F69E9DA65A617AD146095BD5ADE22C6C972A34AC6728 +4E149BD3EB0A3837B89FE98E1A8A41E38FF4AD4F5B92C30DC84C791D503162D2 +95B8D25BAE9240302119B1865D3B5426F9F64878A56B6CFD80BF9F0515B2BBFB +1FC668E061FB41F0AFF1CE52455B5CF7B973D32CEE929C76881277D1FB41C42A +F2A5978742F74FFAA757F1CBC71AA6C18A105A27575746319BD4019F34C146EC +3B1B5E4F219336B4A07696CCA15EFDF829D9BA18325ED8EAAFFA4C22D8C20DDB +71B6D81D6672439AC3F0AB05DBD404602570D378175F7DC041BF06347EC872A0 +18841C3988CE5BB1D072F2D349C9427C4FBCD8519DAE1CB363E8B1BF6100EE43 +78D744669D0669EAC56E2C8C184C3B6D9DB61E347DA02CD3E031EF1C2180FB4B +F88C3FEE4D74F5F67793B8744005DA55A26421182048F5A1ADC63D42E0860083 +B677F1C1DB657C5000D0E403039467A4EB5790AC4E6B4EC3C1C96E41CFDE138D +8AD43E6D18E736A4196AF848D9FDA9D79D5188B638A43C7D6BC4A60082B4A3B1 +874A7F986BBB1432AFDBF7AACBFCF8885E8FC203A2F8F480A8D723C3165AF545 +2C2F3B288E7B0B16D4E600196B2D89002B6AADB8A1F3B9FC6A5B0B5EFB0E7E59 +F091EC799C0074A38989877954FC20BB1846E6DB66D3BEC568D95D418169A1B9 +BEB3D4B53D391897CCA949A29192B0E443899D6F78D61A3227E63A11A3B564FF +0264406632989D66B05FD0D7D1F5A2658857F0CCBD24E679DC1CEAE1778AED2F +FF77523698A4B0F2964E02F76FF5B203FF12C1BF794F11EE764D284DCEBAE64A +9EEC78B0FD9C1A5190460D7730254E93FD7BAB7D9E7D5F3F3DA3D52312990880 +7DD35FDE58815F8E59973C2805BC198F8AE26DE067994B05C6017BD591049A61 +E6E60FD97641320A7B6DC203437B2F248406BD11E531CD92430F1267AACF607D +B5876DFCDC692C845113304CA46D365781AB12559BEBCCAF67E40FF7543FA340 +A284A00A781338F6FB96A0F57501EE5C0CC2F6D0FD1FCE82815C77AE346C2EFB +13B703CC62DFB6345C4BE9FE596981F59E90098A14D6E20C53FEBEA6EEA792DB +8189E58FE26EE8B11E06D8B5B60CF3A58A39102C9D76AFD1A3A9060A79A7D341 +9279466075F48A4A0F5E9E6250DAD6CD6A143D8D08E36384A3B6FD63406DDB05 +1E08F61619BCE561937AE1737BC244CF13EF3CA2FA999379B9CAF5DA59B10AD9 +B3DA65CDA3D35776E63528CA0B3F0D597221766861527DEE6DFDD7CD841B2DBD +FECA159063CD8B4E207C14244908454F7971773CA9CD6C5A01B90C4488A3177D +A98AF2754394710AAA76B967E15871882328DFB93B93B894225CAB3F867C5826 +47D69E5401D52A496BE7987BAC164A460B07548B69270EB9EF9108EA89817102 +C37DC38A88B95A2A7B09296D07A6E2C6BF1274573EE68BEA6791EA5D1277C0B9 +583665D94BF436AA862C83D4DF2223E524AF7C0FC03C449DB7D0AF307A553BF6 +6BEF254D37851D6A34437F413F1D8A2718EBB9E432751843E6D5A72187C2E417 +FE3CF9EC2C1F87C90BF8DCE1C65D8656D52D614457422E51ECDBCF09BE4E849A +090E7F5384EC47C3FEE8C723F20784C315B271CA20FE78ECA80889FAF5EB3C77 +5F5FA85766B58910E8A2F9C731C3E534C0C0D8E88F33996AB6B02E26E25CB756 +16C2178B2EF135830A8B3F7023A9ED553DAC80FE56AD8DD7D710D6778984BFD3 +51A36BEED2F378EC543CF57A2445720B914A32C6678AEEC5983F1C6ECE5FA66F +516B4151CDFBE2A39DD6D4C18D4F7975E332E11329B2E26B07420AED2888B453 +A03A9A23B60B286251B6B301F6D0A8DF9983E6C52C61AE2A74AFBBC5B55479CF +191CEB3D7A3E092B23B314F53BED47782A724371F330015DD8D9D5C3740E4389 +F2C58D342E1CE683F363142C77C73E1B8B14BEBDF776E7F8AC7E676109D1C2A3 +A3CF83C48AF9BFCE10B68509DA250872CAE446217AFE02D52C81386416A40C2D +DBA01A28EFB3CBFAAAE3F7290542D2D306AD50BFB831556EA2A2125BBB60824F +9BA99DB92F8A2A76BAC01B64D2E1CF1F9A4CCFC283E61F8365413A0E01A78F51 +E3C8FBCCDD20EBB3B3DED1C25C79A9BB6306C1F858A54FE3BD396457073DD40A +FBB6D163244538BBFB159D08839959CC09CCB1BF06B4A63850667EF590F3B945 +88914CA1BCAA37E69B03E45B8A12ED6277207518F2FE845A079FD670DC4CF7CE +59B7881D080665322D9626C48AD4C46340155A1AF5BF78C4BCF7834B2A6E77C5 +579342368A6A50F86046FEBE63F3B0394C0AE4912CEC3EC153A09DBB1AE67D63 +CD20BB495833A93D37C728B0E136ACA8E1B0847ABFE88F308331555C1AAA52F6 +C78AC2A189CA66206626FB140B6E6765BA528AF5D26B566362C234207B0B6779 +5E37284EAE9163707FC1A5D6D1B3EB9E5D41D224AB35CD711618790A88063350 +BAA6AAD3A37FFAA89AADFB0B3694C5A2F156CF9D0CAB100A0DB00834A6B0E1F9 +84B1F791654776A09B229770692761AD85A30CB52D78E3220F31F3105AC7AB8E +B16CFAEA8A62495350DBB3656045D84B1D67E18A48B4716FA1527145A7169F27 +D43D865D715AB7C6DF2476CFA5A36D90A3D6E904FCC665D3230B541D71B04DCA +D0EBEE5D764D4816ED35480A3F257FAE1C6469E716AFEEB92D21E780959139B5 +8E3D855193EC1DA1F84C8C3CBC28D5E221EDE8C1953F5885B590473282927589 +E77B37667B0C9975A29B595A79C745FF71C27DA15AA34D8601B980859F9F468E +F336CB5600598CA8D069FEE942BA2E927809373973512B9975F48FF5F056C2AD +1756FDE4831596E9A71A45068ED063907216193CD5CBF2426C7A7D0BE6DA6118 +D9C375599A059E7C6F8A7F04B079787F25249E2416FD3921491BB361500C5D30 +21DA874B450CDE167F03EC8075A6A220270E190873D6E808E7F7F730109AD383 +74E96E1E2A384E8210EFA5571163DC9B2A989C81F0125D319FD68C9791E6C0AB +E154F991577BFED1A97C5732C4C33BC4FD585D48A08EC3A64D049B6C88BE9713 +FDEA2F1FDA1B0574198C93D88876C9E5BAE5155B5D9EA5E1B11637CB41BCFC26 +DEBBEFD9F47EE07964657AEE395E7AB0080330D60A5B5C2AB3BF1B26CDD4D440 +A0A96B165120C6E0803F446085E835ADD0ADA10544EF985AF183CF2642A593D0 +48E3414ECED635945F93F64566CAED8874917ECAEBCA21C4C3B0D79B4A263658 +C51A82D39E7D52F6A342545327683AC517EA72DA5CD29AF48DA41E7066B39D77 +6D66F099A4B1F124F53AB6A5ABAC17CA4261A2650322D0DDCF4A87C25A191193 +61A3C91D7455F743C8AA69D62070CB6BDE4D96259D896C4A08DDD155F20ECF76 +B3F58B41437EB0B62A40B41740F3C338EE7B6CA51C47F1F08AE3CFE5B7FAC116 +76D789E1200DE9D969B5022907A95A65CBEE51ECBF5B6722BA1E2B679C862FD8 +11140D842B24E7249E969F3693F5BB637DD2A113909F687E614E799F0ADE5931 +B28ABE2973ADEBB59F3D2CD95AE1E8595EB2695B187C466B93D0271C291E7F9F +CC87F9FE30C6107731A8D5A3AA57E564A47D6FE31FE38E1A32C1F9509DB96E31 +DCBCB9C7065FFC048952F585CAA7E41BFF57CB68AA2870F10D9804D76B5A4F84 +7C02360EF6ED3463ED5DBD0449949FCE058A354923077F6DEE7CB1FB4B62C10C +97948E6F26AF528B36BFBAD6C8096565E3300CC0015FC61B016959D48B0ED01B +0AD14679F6C4F86CE8905829A22E6CC0385952DC7D82E8DF200BD1B19364A80E +596E7ACFDBCD6F9ABDFB1E219C41C51D6B395FCEC965DD50EC1FC042E3259F24 +E9FB337647AB3CCD5AF58F6CA18C2DA78D21B200E979CB69CCF486EC4060B176 +FD5530CFBFDB2907A3375449D2EF7E0CC45399FA2F13756E18BC3B64D2D947CD +DAE3F82E64B567690878E25B0602F1E166F2BB407B7A49B1DFEB831E20341D93 +DA44637112C57D2D42FA46D1C249C71D141965436C9A56577823E938469FAEBB +EC2B0F1D1020606E17E43DF470B7FB38AD7CE5610133ED922CC1A04117991E60 +4E2752D386CB6B27CF506226FA838DF5DE3F02227DE0DC2A9FD27CF406C566FF +A3F6BBAE9972DF14745661D900754B6F2BFC47A01CE787355F26AB96CB391E44 +908478C24ECC19A48DB442396FDA03246BFE47CD7D15287743E3C42CBD19D69C +B3D8E9EE51FFF968BA5D5F82AFCDE4B2403F1C736D5E1E4AD1E6CCBDD8E190CD +1BB2EEB4F7BE1A22C15B3504D4C485E793D0B140FCC09864ABEB2DEA4374F3EC +956A82FB1BF6DEFFA04FCFEB89381F925FFCAF35803FD284A80BD942ABF7EB1F +D2EC1D1C0026B7BE1AF402E210A9FB386824533A00EF4600116C9985C5BFEF9F +340E0BBB8E220B9DF4A8DCA134B49A89AA6FBB2F5FBEC43DA7E0FDB92548FE57 +9CFE569DA868149541CCB21550B9000D0F6C0E31F25999A7827C2F090294E78A +1BD4EC774CC5B0F995D2DFEBE4408DE3619E3E3D318FCDBB46825C0DF634FD3F +CEFFA3135B7A3AF09DAB0B22E78910F1B0E4268CC624C6638D428E6F85C96DBD +591AAFB0EA27CBB9C88B6CA4ED0ECEF191B6BAB901088C92E4198FAA182CF8BD +9127416684E5E7C730778F26261DE4224776AE0B72F795C8A68D1E2AFEFB9E4D +7D0F331682D16A4B687556CBB2C30CE12BD8D61DD551DC1290CB3B8BB8684F9A +B60874E87781F047713B3DB696C57700A7B1A0572AFE428BC55DAA04F819A5C2 +34F3187692449FC2A29D981FD6662A99B59A09EDD40C94789F8BF2807D8FED5E +7CC7B10184D020F32FB6D89D35ADC47EF28301DFAD2D626BEC3B93605997C5D6 +3D6BBCBED8D8D0894562DD152312B607ABFDB4A4B95BC9D8FBFC7834D2AEBAD5 +B1DF4934F9019CB58527D4B9CB44D9D138A41902CE152F985BC12A455E5F6EB1 +9DB1B08B802E2BCFAC1D3F0018D69656729F7C4A4F845497F3E185B4BE50D2B1 +81943DE5DEBF363E0529A1BE63DA9C9553DCA7FB82F39B08D8F83AC667A8B40C +2AC1FCE60235D1E0AAF26C666693B5EB4582EDA1CB800A3CC9311F0F91972858 +DC919648F86A18B31C0893231B07844EEB7420C55E552CE8C041301A39A22BC2 +99F42AF30F2ADF39A2C73855DE52950230B1159716CEEE34DBCA65F7E7074BF3 +97F8B2E3117CA2FC407B2B83D4BA307AE8B6D4268A3067360ED076862D58B50A +1CE931CC311E6FDE8910F479E2F28B53A56CB967540B1F954140A853C7EFB6C7 +838D3B78CE1A10DF5D8DB0FCFF72313FEB1B1F7D29E761F63EF3F2912FE3801E +8F5D15D05593E236B7A475F98796B1829AE5A868931EEA6C51913C74EE3C7852 +AB56088ED5D45933C4120CD7D3A2456371A043092CD4DB2B5F4EBEB674CCB692 +5298B13925EE17C50EF7C3EC06751AA8B98523AE6DE97C9FB3AB4833E13CEA50 +23F22647E568E2A4000B6C9DE6DD02D86754A33C1DA125CA6FE5F5D5FCAD496B +450B7816C59E90AE1420F433097A90C74B2524E782EFA6BCC8288A5A12F11159 +301FB5581911B24010A7601C816ABB38C2C56930F549EFB81234ED20F1854EF5 +521109E703DE424E2A58BCA2965D8E51D6634BB36B3A4B726201092822763A0D +F02AE169CEAA1F8C3F7D45CC507F819398EF2DBFBB7C536AD0A13D982E25223D +40C1C644ADBE3DF1F4FA432221531A9B2C080ABCF6DAEF418922A7FE047B4742 +15CB4B0A1E3499ACEDFD5959CF0F11E95AEFE2822A9C32E9064FD400ACAE205B +9ED8C71AF8A3F9687936E363D6652FBBCC2931AE7BB57AD769BC790A31DFB6FE +8E32525C885287FEE3EC3C57FF5526715C2CB37CC09E658ED5B988167674825A +EF0ACA059AFFE8C71B946A949416EA760B132389BEBED428ECB4E171CC46F87D +BE1F06F1C2380F7D1FACB5085CE0A7762213CA44DFFC0238FE87747684C84B5B +E47D04670088A19BF7A5B6851CEC2A87D27807D4FEB56302C958DA731F7780A4 +A0A265060B43348223EBCE26984E48D72E48BC09C23BEAD0597F4C5F93B3A531 +DFC6D99C8486B3302036419C6DC51A29EFB0DB92AA649FC2098CD6939FCE9987 +83A792584054C2D6453E95B86EEC7AB7F4728D51F15DE50310EE8B0B86914A07 +92B7AEDD582F4A5CFA037648B566A2BE11EA65CF7CA187F154D42F675F6CDBD0 +9B4F39F435E44D48CC93C88C676A6CBD6D725ED6F035DB32C36D31567FF9EB37 +F65487A04A34CCB8FCEF58502C128FF9CE10F05CB9C7783767C78866DEE58F86 +93DBF5BEF70EE36336407B2A8B6CF2C9B00FCBABC3F286D6B65ABAB98C31B8E1 +8D32BDB5DD1235064EC5F92B13F17A4BCAD94220A50AE9D376246C9FA7A37D56 +16119F6CF9C4763CAF77BA338D84F7B4BB47BB6FBD1013B20B370CB1773415FC +78400671F9E8C7DD49FF136F0EAEC8D25619EF0050E99AE3EBDD48BA9FE16745 +5928C1E6BC06B67210C7E18D7B7FC51C2CFEEF24E9D78DF0ECFBA05712B15521 +F295C50340515BE4037B06834EBAA056F0FB87938436CED6D68DEF454B982A72 +CC081C0BBB7F27F8889381D6583498DCAE462F9A514A51CACB93178AF97F0069 +36C047B4B202A425422C7E7A9D479C86A8E8BCE45AD1704249F42A8EAC44484D +400021EFD1690CD30848653C371387014C84FA7E9E4A4DDB5ACA2559D320215D +AB0AF71C4EF411F6D0A121C6072F78F127039EF104D04AA93F839C89A6B12097 +D3989521D7A1B08CEF9A83C0917FD0DB63196BD33FEEDDD7313C8931E3B84665 +184C971E339B81DED1160B11513A30099C94675780DB1CE0893B1D10858B8CFE +DF73785BE540798A54DA6E64D90AA94B8B6F5062E61473FA0EEA019D04E0A14C +FE08DF559394A40330F283B9944D9095F9EB6A1CE259C2AC9E16F2DD127169A2 +165F9CCC0062695D75DE66AC72BE63CED5AA4618E1B59A01B7474593D2EA0196 +87B632EB09BC2B09CB6FA4BAED7095A2FCD31ECD988F711AC63BD57B0A3559DF +791D40AD2BCF3B9652844B4FA28270F9750A607C45176CA638138E45503C7E36 +94C30A9285D8417D0612C4A075B503BB77B4068278C9117FEB63EC612CB982BD +6C0708549C7CA9798EAD777F8DB011A49A933ADC36772B81A72099ED7047023F +8D74F3AEF21EE566F9FFF9F94DCD962264F57B0FA4323929F1C245FCD5B38F10 +C34284E6F2C5222ED2DB18E691BC0C9051C5CCA59E6BF226A6CAC4BC61BB313D +FCA42AA138B40F229F2CB718381FDEC6C6768D33EEAC517C93D356F37497E9CE +2A137FBBA7ADF9D8CC06202A0507F4BFBC67C30814CFE5427588D4AD13C74976 +07E428966C01A8494E5929349C8FCB7ABB551C537670E358B9913F71268C2B34 +B2164E069B141AB3CFD083A6D10AE53F9179162023146C1DF8CCDEBF4D4D92C0 +2A4F11BEB9F8FC8B5DC80BB555C951B1D5A8D6AFD58DA4BB9EF4997704E77651 +4F773AD6D3D47B07493BB480258EC98C82F8710EC66B07428D42DAB825AC9CBE +2189F09FA9317711A2F1F36C7632C14974E42614B693E51938C04DBD46510FF0 +223751FBDE743E38AC48C57FED740D970572A3D7630C3AF1BC5684D055CD58CA +90300A6BF2FF22F542E9B54A4078142E3ECFD4E8008D3C9D0B7B00AFBFBEA0FE +BEAF8C8C0EA2E9FF5298CC9804EC71397D8D973D34BEA50D1E54B73A38E0D160 +161B9A9417663957A7D5A0635DE638F0B66F54E8E311831A0D6DD069318AC119 +9C085F9BC603D62F7B7BDD4BB5CB4D503151AD25F7D3ED6F9D5D41B322D3D841 +862DB4B67DE6D88A2D6966692A8D4268DAEBD63097E3A7BB694C656DFAB0E548 +ADDE062875C3EF87E8FE3324A2F3B2560AA26983E9416BFE0BC10A3D790241AE +E2C08C2EDAA07313EA9093AE897E191F843BF0766A1EF7BAAFCFF254D33FEFF3 +222A3391BD95813FBE3F58A6642C55165472EEDFDE407BFCEF1B505F8399F749 +CCA5465791B69CD1C2C6CA024724AFA0109C16D50BC935E915DBE9A6BF3DC729 +369A4B8CE922992176B1D16A49133188CE1C0778BB844E60C8B0C81B8F29EC55 +D43C598881E6ABC805DFB8AB8954CA7F55C2A8B0636D72E24334E24BB3781C86 +6D641362095AE84C8F60A8CA81991408D7D5324922FF36207A522A4AE1D1D6C8 +EDCA499B55AEC41BED2ABEE9DECF435E1E7128CCD19381877C17CBE3F4400D6E +0B68836125EEFBEEDF19F0C19B45B1720E47AD51BF57FB31528B73CB7BD8A391 +E4C19ABB1EF7E07FA5E89FBA73EBAB366FF796F5775C18AF3A9CA42D32B29827 +146E8FA3BE490814DD02ED5ACEF2BB0B12C72CF1462ECBF3945F1FAACABDA2D4 +15C6D814EA1C318FBD7B6DCB841E02B1A906CD6F04A719F33ECC00EC721EA234 +60C78F1600B2390A1465238B2ABF74A9B0F62A75153813169318C82C823821B7 +5B38DC481C48771B50C266EF7F42CE0DDC34FF2CB12FA57D68F8139DB72357B4 +796282CCD9A58C2AF04C5E082B822CD7AFC0D1D910005CFB451268471DA6AFEE +97D54F710C9D52796A03DD06504DEECEE047E4137AC847687A0E9FBFB76709E1 +247378F5F1C9113FDAC2E4F7B049566C75C453C362DBAEAEA661A7AC92B8822A +CFDD6C057703B397339D4B1E8A098ABB05041A7AE9BB4143BD36C154DD5A42BB +AD9331F3CFADC7CE0DCB31E9A0D273B5D4F05F3EBCCD5724D4B8F15CDAAF4567 +7E90EC43E28CD3DC7F0E30663CBBA47F90020B42BBFFB625447B562C1C611E9A +22EE26B7C7BFDA4B38FD1AE32F254F893673E5A409E11421513CF45E27427FD6 +8FA8A74FD94E0A0121F20A0EC14F9E63311602799225F5A5D07D81B4A4A45BD8 +AF983CF921E4D72E622FCE4CBAFE92192853ECF6978A553A6E61FEE79A8C1801 +C0281382EDFF7F04343F5D71D072687B787CC0DEF421D87228FFC9971E0CF78B +83617E2CCCB5E31ACDE06C600D6A54BEA1A73395B5288FF9174ECF8F875DC26F +79DC5A1FCCC6F6EC94518DC4E61B7315F46929E3EB67E619C5A7426E818BB22A +AA7660E3A9C44BE29B22155B2DF82709E4C531449B6402D9B77CB964D964E8C6 +B33FF2608453CFF914940B0482BC5F0C1F90CA60749746143B48F5B1BB4C19EE +738DE26AD48B9A51131254217BCA11E828CE9A79B9B452EDE85DC073422A342E +F2D50938857154501F0A2D7974AED4BEBFE66A6E5278A727D795DC1B59A41584 +5144B30B7EFE1C1C43D5A15503D4CC0B267F0CBD644A61835AD4051BA948301B +F89F6D33B31C1C318ED3D5342954954A6B3D10B5269CDFDBA41089FDE4CF5EB3 +70042A8FB022E435E12417932BFCA8AD7EAA890099D6DD782542D5F21CB18C9F +690BA65EE338985F24CD56089CD329D63AEF29A04978277DAA54E18365154BA8 +49EACFC2DCF01B28C56F14A624A26153B27BE4763FDE9473213AF42F64D76366 +162FCE577762817513515BC278E971D77CEB174101523ADB022161FE96CCBA2B +8934F96C1E7FD74231354E5D93D44D7BC57546AC2578B726633AB79624084F63 +6502DAA1A8B00F675BCDC461A02282DEE85F8AC9AEF2D942B935800B9973166A +56889CDEAD57F1B2EC700729433EE37B72EAE0212649185DD336B8DB888055CC +305E3A4ADD612AD1F59CAE99291B607314DB4E756D06A60AE4ADA1590B7F39B9 +F11B5A0EE675D617BC452E0116CFF6FDEB0A3DAB529822FF9B948FF563AB1BDC +9EA4C181FBE267185F39500E5EF75C45833D7DDF523FBC692C6C78CCD56BC004 +1EA79BE50272BA986AFADFF94ADCD2219DDCE61FC645E76D096A479218D545B1 +28DAEE94CFF4429F4700830B712A41F19F4A0E141B6CCC9592F2B4BDEECDC22C +5ABC24CC6567BC19E4A7799960A68374A0BE74E286ED5EE5B0AFF67E0EF8AEE7 +0DB512A933231FA651CCDE82F23FED12C51D8D4CEBB370864B6A355988A59B89 +5E3FF9B833DE0765C2CD35C840C6A199B48D313ECE1E04710D05FF5FF81BBDA2 +757F2604501AC0D1362654F2D61E40F1E9A227148ABC293E9158AD1040B944B8 +98D6A6E03E3A7F61DBF821FB9BABAF8B3913DD0D2CD3D8A160022BEFFD0BC782 +16E36E36E1227CBBEE7DCFC3D657FD7C59EEE6E2F76815417BD4BBA05C4138D0 +710527A00C34129CBAA5CA0DC09B427D864CE9FEA62E8607DDBEE9C3BC68CD4A +C622426F0F6811DA2C7D6D163D111F2597EAD0ED95FD10506CD5142B0F1B45F5 +0DA3AEE5E5F2D4CC7EF0DA60A3328372F6D589FD0FE734736E220A0C97E40F54 +29365108E73E4191C14D073995C2FD52974B20E769F404B0AD54031FF4892B73 +8BB3820795CF5BEBD3FBC550E8992FE8A1E4B7DDB9F69B38A6E38BDB6AFE17D5 +B426A9E5A0F3B0411D02B75D8BE7E8681F03E1B95F478D52F3D465351094B38B +43A2621F978AD625BCB4B7F7400A686DDC1552485F05E2AD39241D765381CC6B +C76CC4F96C1995D5CBA94155669F28DA849B5455D481475B5FB92EFCC9C84AFC +AA90147A127B26FF7FBF2BEFC147582F273E7DBFADACF50076A454B00430959D +3F4E82B423E2F62B97BE7AAC5A83E8318899ECA197B568DB0BDA1408E5347B7B +D9A767FAFC7C6F1C317CC0163379932A6E8E04563B779925ACBEC181BF1A2EAF +60AD6D115A17D73803EAA8F6D9A30AC7458620C7044B90D54B22D9A91036505E +A0F80E1BAC4FAD65EA7B4D43671C125FC9F755819492780FEFE90EF065A59660 +5F690BAE1F5FDB119D07686297116D28A564D91B92634BA0C81E7C25A758A90F +2DCA601630B356ACE4AA4DDE111A025A4C805F9712DFDD39544F1BBA083FE05C +59A586B6F1949BACD27D112B60C7AF5A22A6B59777CA8C24457E7AEF83651B81 +9250AB5E0244291D949A8FE17C3F8E7B1D05DD014FB102A221653D1A9781AB49 +8C16B0918F62719653C8C13A1F0C53A3A06C42CB297DA647971061392435F8F4 +C8D8A8CBA28ECBA1DB2707CDBD0DCE99CEC3C72B7932EBAC88C7E4B705E7FE51 +6351E99F060A3F7B7CE09DF21FF6904D462D2AC6B606F74AFA8BFCBC0169D278 +83F773B5DF307701F19AD512B752E098C0607DB7A08B3B0EF1A2DC602BEA4193 +CFD0AA049AA0CAF4F287BCC38032F4EC464781BB10DADE4A3365B46000C6BA58 +0E9E50BFC960704F32EC630E20E1EE95AC93F545FB2CB52A3ED81E1BA3E3C595 +E3852E5F20026487EBBC440FA3A8745DC4FD155FF1F2E8CD6A1EDF041C3D191A +6F963498F5B651D46FD922EFC1ECB5B090893C117FD8714996AF01E0FEE4FC14 +D5B2679EBB374A6F0D1124760065F40D34367E63D71C83F6600B7C5BB17101D1 +0F2F97A46A1C5EC9F5C0BC86020849F871D50382F3C6CE8F947F9BE4F4DA924A +FE22ECCCE25CA56FD1FA7CC1F86A367F93E385071B1E057B7B350641E6D88BAA +0A40DAB8F91A26C6AC40665C4F56C9803F06E0BDE28A0CC305F751591FD49634 +D40926CE9CD3B79C0465E337A6BCF298FC779013388A9AAFEDDC0727F62BE75E +CEF42EB54204400FC3F096D4207A3B7B7D8C314661524C9B12E6D43F876F792B +E71E5110B0AEACE2609C1E860302D4045F16A696DD24969C433158E245F3BEF7 +120CD5E2B6CF6EE5A5BDFE2A3EDC4938F06AA0D4321D3EA052A9D844C696BE73 +DF59725085E76CBE1A34F859BD447550A0D7712219A21A31006A491EB9CBE43B +0E89E68C46BF2827C746C6801EA6C5E7448E9C9A37CDF85D2763257146F5F3FA +2A72A65B9A63E3112873EA0FA0F786A1427BE93EF40B04DA2A71469492C4FA16 +2AC173A4FF1B0F9BC19D34FCA571824F5F7C00D2AF77A072D329242973141F1B +81EE618467D1DF214FCE7CBC386D9D6AC655C2BFAD8686C084144B5F0CE4AEAB +3E624B46A3CECBDC35B2C004469427B880F4A32DD503A19809F74F7B74B300F6 +7FA04BF885EC98972BADD99B6176ED07C2DF37FF41810462A6FE2905214D1887 +7E845AD0A940022AB58F7B64C0E2417E5F5CAB3654E86C3C9378BEEFF4CB98A8 +61FCFB6AB9B30FED57F126109545DF93604762F7F7A4076A422C1DD393F10E11 +4D57215E1DAA4A7ADA56F2A53E38787525236D9B6BCA18E41399FA84CEAAFB45 +61E6C3D6125F612378A46B88ADB34C0545854C6C957E1EEDFF6D19BDC50B87FF +0614E84113626C95D3EF165C272AD8CC8DBC2047A258A7550EE7F87FD54E52ED +8F33C0A323B76BA39C8BA8B7CE46EAD8658E9DD6666465C28DCDEBD775625D34 +4ACDEBA90CC1F44282D62E32BE88F654029B6F34D45755E805642308399A4C9B +2AF5FC7E3C331A770FC45FCE184FC758DE1BF2CEDF82BA4661810C6707F8BC40 +D03AC5B0F1C5076A48FA959BD4AF08C981C0229D8A449F435D5C01B642ED505D +19DD28BCA855C08D5B4681FA621A943648DC3AFB5052C8B2F1DA1D001EE87101 +7EBB85D96F699615652611E454C0A2BBAE8D07BB339013C4DD13550D612366D1 +FBF16464F4909B86886D746AFB8F96ACF5FF56E6E7D0FD1D5EF559A2C95C3622 +DC85F4508A485AA83D9E4C69A169E23001FB83845891212ED83F4FAA99E910BE +B1A5F56D114773C4728BCDFFFF56DBFA25F6C1B642F9CEA0085E173A4A3A33C3 +6BC27E70D607F0B883ADA745597A7C9546D153ABFB5FEE19464F0D41B4ADFA83 +A4D663E679B2120C86AB89479B8726BEC978645DA0C49D41BB5F40A98C591E4D +9649EE2CDDDAEC44E07A72D622272FFC9E0AC16C0D2FDD26C828057F3A809755 +7B24AB754896A30FFE9FDFE505E78EF8AB41986D99B94CA85BEEAAE7A9238837 +AE08E71A9E2D3CC52FA95618F424CC66C3B8621EF265DC9348CFB3D77CD1E60C +5A4EDC8DC362836564C7D29A74BE78C05320C464EEFBE319568E277BE874FCE7 +A1262E3B0F4736ACAFA3A429F41A6E4AA593758CC1C8708FBF20758AD17A6FC6 +C1D05A1442C3F5DD9AF1AECC62EF471A12BF56FAFE9B211B3B1D25C7FD33A7E7 +055D25197E0D8E9209B7366C196B279E85DFF510C9275043FF59A60027FD08FD +C7C5A27F58185D327AD8248736F3353660260854567A4E31E018DA913F34E20B +CEEF06A92B692A2521A47C058BB9FA4A9A0B38AF26F34920BB62BFE65BCA3DE2 +AE2F58EAA7AEA828A97F91E1215C2B4AB12B8FF7A1D34E912232D87259AD5568 +AC28B842FA584FBCB1FF7736D8CAF2230CEE9979A818C4145F8BDA7C9C5FF1B9 +646A1B0406C307C47AC43800DB08DC18E528FC4E2A8C44750A8E8443084A79A9 +B2E316F793E47FA9BEED20769DAA1031F1CB9C6FCAE3BC7DE0229043EA642616 +C43AAF2B3389D55F203A976D4D28DDA8F261F656675257C5246A00B40800A744 +13C77EC45E74CE713ABE7DAA25A727E04E47AFDE58DD54B42C89B72544DCD4FB +B8936D103BF3C510C54517DFA76CE56E7998E247863B7B0506E41922BB05ABAF +179E5A3FA338421D365D822EB4B913793F09DED5C4B2DC076090328EBE9A9512 +C2CB98E9F4E5444A327C9C8C26D55ABDEBC7207FD089EA4165EB8946A9C6C345 +6FE8DFC8DB430A42D3C4900DEA8FEADE1871F55799010CBBD1009BA753410D2F +65B4DF34F8D228E4271373B3BC597757141D59A8756BE256C1243FE0A54997CB +548EF031A3D72AD4A8D2DCCADDAEFCE75EBFFCC9729509CBEC4739D41D61C9AB +ABF7E383A5D168D32575211A66E537AB34633A607653B293C1F6ED19C6F1554C +B40B4DF552090EAD534C70FDE86FB4D3418D404EDA492106A0704D4692427A19 +D9D37B850FE8BAB545AACAD0EC712F7E0CB9B9D667B365A78A5CE5D9347F8DCA +E865CEDB629665E4B488E97FEFE9FCACFD6924EC1CEDB753FC381BC3155DDB96 +861979D91C2B9E83A16F3C2B375CD2C8355A4F64167DDAB75897BD303F23E105 +A4A6DEF998668292F4B364BC15F4DAF522BC31F74D8F390173C261AB1432BC8E +9B3B35E229919B41D32B5C75A3E9ADEC2BF734654ACF3ED3FF611A827DE06A0D +5A5315620501CFB95E08244551D73630E002E3C3AE96236911C12C2BA84A04F3 +48F485B2DC8E93507124A7A0952BCD45198B81CA76BFAC80688183B99438FF1F +2AD3E92B5030649529A7BEA5371AB4892B54755A5C3667C05F142BD138134129 +4BFDEB5BDD0EF00D9DF9C06B6DAE23FD9362BC47EFDA0769F25EFCF1D751CE06 +DE9440EC6233F835FA4BC301BAB1A21171EEC6309B8AA5FE2780C8B7CDCBB2FE +8DAE3FD396B8087798C1090D8983239F0C77019CA3F13ADB3833630685EB1347 +E06A8284905A65F5572FE4300B382C2AB0100FC159440ED2DBA7E3C9777BB460 +0CF27E02AD1A4ACC87B456317AB0C8372770E3F93EA649A2C04764D02C1C6033 +8F0738FC1955001AE7D51BDE22A9DB8276F4D35FA02D333EC22445FE748BA061 +070CFB5D7977C61AC7170ABC15F73E0DFDEC4C4A4A92AEEF2B507DF9C6E18597 +EDACE3ADCFC29FF55E081AFD6EB796EAE2BCAB6571A6293FF5ECDB29CFD98AD6 +EC2F6D6498464E6B4F96BC9141AE822E5B413B6322ED8DD225D7BAC9D847AF43 +C86D5D24653FA7A200E7A6BBA8AF6E9F04A093EFCDB811B8463C9E86650CEE73 +ECF22FBFFB03C74EDA723780C9D9890280328754AD6216176D83277CAA7A8DB4 +A7E00EC059EAE8AFEEDE34AA69BBB6FA13EB198721D1EE28DCF9D2A27D7B3410 +1BF0A87CFA7FBC93B55732DA9E63E12880395039ACCEA9A012FB4612F396ADE8 +D300AA8CFA44C6C79BBB52C6D23407D21F04B3DE44C270E62297A8168B8719B4 +C9298C817D436AAFFE18FE96898AA12A4FC70A0F1624E3149530ACCCDAB0164D +596BDEC2DE043A58D5DDF14B520AA161C95E70656E64074E85FC368D7098F18A +63815B9B7B087A0B8CBA97C281D48F1205AEFF6D77B105312C94B291CAEC58B6 +ADAC4A9BEC1E15B17E1FEB8BD6480D11D20509C8902C22FBA9BA18FC632D918B +4AC9BC1B3DDC5BCFAE1F1539C0FFFD7AFC81BCCC1BB14DC2CE3EBD11AADC0E7B +5EC5D6557C0FC4FAEAF99656F760195AF6BC69A82759DCD9B9213A492E7D8A10 +3F28E06955D5C0C5C3A636EFE0BB9831062D3FB9AF90AE062302A74C1550E395 +6B38485C0CD94F753B4B4E293933A768B56225CA6762CF6CA0D0D242F30A8845 +AD78DE0EECA4F33890ADA4E0005F59174F3B11B82FC0814B7296B96D25AAB0EE +22B344D13EC677B93469696386D90ECB7318BEF0E78A714FD900D013A50CC8B6 +EB6641029545EBCB132B7D0D4FD3092A3552ABE24D45C5B5AE22FCE459889702 +F7D8B678D108B29C6F0237A390A1252EA6F2AC566456F201AE54A7AE50B3F333 +889E66E03F76E15AAB1FD246DDCA6D0B2DD19FFF7DD9B267BF0A52E403190AE6 +FB9DFC970CFE7F853A3BF8C6736E7FAAAE6E2C67D4C6B816AFF492A6543D01A7 +4E2A62AC5E0C8F979933F3B4DDD872F420A0190030CF5ED62C07F3DF7157E507 +18AD7D4841FF5C0F7BAF2F4DFDE54D3045CF33409FCCC41635804BC1B0A656E6 +9FCBD6D943CD76A563E48B78F7F09B113E55CAA2564EC2A48833A9CBA3CCADE0 +B68A75C74D470D6DCFC502FB4FAEC95CB9EB5C0E5B8C602BAA0D5EDBAE7E939F +1ABE6ED885653239C9DF749A995E5CD4F9B8494C3905B652C3F55C8A1320BE69 +E60FF5AE06C6483E0529F4E659FF7380051678137B02D278C33B085F23C25B52 +6269B95D6C7E76796F73CBFAABFA2F90C8CEC56D987FFE956EBF39D14690760F +1D7EAE048ECE78AF6A8B5818FEDB7EEF059CED9D7D51290772A37B02D711E801 +5935FB372EEE02EADC9E0DE32CE448CAF1F161903F1EAC7F1A51C9949A4F4210 +019825341B4293E2988F8AE2F8546CEB777C7F51AF766AD5CC93741D2DF2BD9A +F7C6433B45F0CEAF95BA9B32E296A124A8D27CE2B6C98B1B626D7FDE3EEBCCE3 +0FCC254C5671C362DFF4252654896518E2C8F861618C91B0C9C6FEFCC707947E +98F6D026B9D2F81DE2B2F698288F4BCC294B16198FEB928F30D4C29C8EA3B1DB +D9D1DC96BF159D94EEBA8A975921133C0DDE63EB0E25D549FE6849B7017A7B8D +D768B1EBCB603A505CF04EA41C3E40FDA2A4067685EF8673F607DA4AC12589DA +CA9137D378C6D43727548C85B83F9C8E023F912AAF8DA7A90DC6E74B390D2E55 +DAF2AF92272707CA982F57001273E00F629E744C82A7BBBCCE59BB9B64C089FE +40F48913964866683FC966872B4BC88B863F0B01B4E8E71E3295B03F51C12638 +7486EA56FEE548EAA5FB37A5151E6A591DD32E41258314EE0B97F70F1C2D862C +6A901C736C53C470487AA82A0D3846151834E6E2CD8E27AC04A2E4151F15CEF2 +BFF4BF529E0FDC6E10DD759658A9509AD19476884B4AE9662F3FC349C8FE0281 +A5DF241AFE22994B99B002604568E3BD2A6F2F39A2806B532959C8D9FACED87B +D19A2387CFCA95500E146CD1CB4573EE5AAE7710951F271B5D7243DF8E5BF45D +A84CF4C9716593B83CF0FC44C7A98DD6E137FB00977DD10962F675BF1A7BDD96 +A2B9E70A6633AD01B8CD06FAB87435EE399442A6FB76D279365B7E05F0ECA604 +ACB422A475A64695F26E39FCE5CC71BB27E959C2651CAF622ECB9914BCA3C924 +00FD8EE693DB949216BFB3027BCB01718FC2D586CC544CAE2E8D1AEB21E75375 +61ADE8483B2522F537027662C6BF53E3A7E62DD5CF039B1F5746CE76153C35E0 +99C2595C8ED339960D9D593937F69DA3681CEC1A92B65BB64446C8200EBA0F98 +1DDFF450EDE8F8C72A46C5B477C0C3E8F15F16E292B284DD4816B0AB2C083967 +3A20FF6AA098078560B91909E6DD985098CC43E1DFF9860B374B222BA296C4EE +51969B1734C7F2A9241A1BDE2E3EBCE2547C169FF3C12543BF6102B4A71AC498 +8F5DB79CFDD8CE84BC59EB26288233B0020800AE575F5A89E5F8046BA0B7D33B +82D1F930AC705D5632A6CE091A9B750E4CBB1BA29EE9623DEF4E264986065FAB +87C0A5EA6CE65CA0FF760DEBF53F3D67B06BEB38B27E93B77747BF5EE5392766 +1F4FCEF750E29C9D96188A1DD3A13CDB5D152B481BB8EBD4B6A9BE213D66F01A +CE22F7026855BF791BBDE753D042FA3FB1EF80F144A9AF60EC02DBC2CDCD8EBF +6591A692E6B1C809A0EED2ABF4A1E3D88B16773AB0684D4772F4F85A180F70A7 +A1C7872FBB9A535A1608C3286F1B00ABDC36EBD7A05A2D1F00C6741D4A9ED168 +1A27FF21FE7AADBF36F76D75241D3E5ED014D5219F15133E87A22E9642BE2F6D +C30A28D08EBD50E71336A1B176E34FAA361A64C30BCD133CC893E412E9AEC085 +E9DF769412087276287D2D0BD502A43FBCC535A5812A8FF94FF7D0A52FBF49FD +EABE69077987EF26AB0465FA54BE59700AC2C5077176FE2399F8EB94362FFAD7 +09FB193E601263E5E1AC85E2A3CE175A8B461767F7F87BF0803DDE0F9555579C +83B01B364679100400156E3C45E18795438E40A8B5B480F7B192DA3F72ECC3BB +44A96758C1527AD3D935BE1CE21F50CCB7DD2FB4492BE13160920E56064844F7 +4009D7073C2388F429E93A63DEF7966AEB9DFEA2D4DB69C2581054EC935C7FB8 +EEC54BA003156D696C26FDA91106CBFFC46F90E005E024880A6A893BA1E150A8 +706F81C37FD8F88A09162F06975074531D75158C6F64350F1EBAF6264E2D6443 +55ABA7FC327A16F0D005624EBA8D57EBE296F639F93450AA8282857F70D9E609 +B16008E34E4E8855E2EE3568EAD08F0237183577CC935B56C9113D20E66C4769 +3B40D5DC86B05009186799EE6241B68C049680CDCEA36A968B764EF39EA9ECFA +FC0F52EA7514CE72833469566D668EBB84634857D5364CC564CBCC8C525D9225 +656B9390D09247442D4EC289BE54E7516EC925BCFEA1583A43158F1A9636F3D7 +471EB38F69277DAD9504D99350339C86223DACCA6BE59077A3E50A1D4F0D5279 +086E23C350F7B881533F9B06D08074A049C5F3F5D40048BA70557891375A1190 +61F5AB3B4222E816C5305CCEB49FD3D6FD998DED091686E50A8AB6BBDF1230E6 +145328A778F03D2ECDED4E7019751B17290D30D613CCC0A969F99A7F221F8746 +49791253C0630ED22EEB593CAE2630C65C6E6F9FA3DCCD6102867A003218F4F8 +3CFB1708CEF4BE0281440F4B0378902BC878CDA68134B99824A9E6A3F87342F4 +2E89D29C1435EB4B0FEF98E16C5051C028ACDC300F62BE950E62ECF2B9BF3260 +AAC82780756C15F71383331E5580C4F956588059789DCACC294969A2B768BE9A +FF69E43A464D5FC71E9F65E7CC6032386D09255A81822072EDF3B23BBD794B17 +E3DE5502C5A98FC5F30C552D651BE3AB135F27E176BF5DAD526A643AA266FFBF +5A606B56B0309E9A6EF11340736E5C46D4823405FD958DE9D2EC49B93CA100EF +F9A40753B03E1A4116E4923ED9EFBF422BF1CCA445CBCF534E3547029C3C3C56 +2CFE6362A01370E07890486C626D611DA8F123CBF550B11C6FD80EDC8C945B7A +454AC3B95BE02E2358D929AB52B69CEF8A5BF2C146AE0CA9B38F23025AFCD64F +5088FA89DDEF5057CC598E165CB364A3C518DCF49FB256A570C7FBA1F6E2F125 +3B194C7746B3648782244679807C8DAE579E0DCDBFCC95E8008477DCC1F5E7AF +6B819CCE5328542221523B79998A00DDABC5518C9A76686A9AF916A8AD87965A +15BCE86F8F898157B74D54ADC79A3EDEFB5DF4E04B6AE2F10E4641F926A953F2 +E225146A760E0926E0845D44AD4AE305185ACE30E337041C5C48ED6D39A5B239 +E88800DC5AFA6BE74188ED67DA1E2E87DE9CE2703934471E67F5DA88067061B9 +F61EB0512C973CC868671E9B81EED0A410066A21DCDA1E286304CD34985E4725 +47432CDDFED05763076484E9F329297B76B5BB302896EC7712856BC59C14965C +0627D1FE822F6F5322CA61CF0132054000E3788317BBD723DFD906BD0AD9CA1A +5D091EB836DE214995E6FC27F75EFF4FA735E6B9BE3314576062F696E4B066E7 +212EAAA7EB9B0A00FD3524A22BC10686751DE36A2FE864BA9D93275A8B9AA45A +888D442EC2587D685136B00E318385D7FF412EDAC25FECCC7C4BEC8DFA09C45E +55565BECA56B8C87DE5D170915C2694852F869F343F195231009AE32023F6AFF +1011FF1A94155BFC1EFDD252B2BE9A30A18CE3454B79928DFEF2584E853C9BC5 +09C3CFB7603377AD3DFC3EEDFF9848BBD84E879395B546E62CDBED7972DE0EFE +4306B09061536DF6074F39EF43CBDEB962921DCE7C70143F4D56505A96666D41 +3C3A960814967CAEBDBE5B8065E27C4736E819D6BAC40D153864DACA9E7A8750 +80A6FB8490D1D8C93D8CDD27750EFEDBD456437B6549274DDB18B6A14BCADD64 +41A2AAADD886BAEDD01FC125B8E7187D14A5EA11CACC573ACA03518D2D7B52FA +901C8730A78F86B59151241A11F5BB35073053FFCF2A18DEEBD58C8250198560 +4E3BA1EC144A97936161DE390FC6B0979F1896672B31DD05F709A5853D13D333 +5816DA8C7FEF7F309CCB7CD2028BF7B9B428C50C2D679F51412F531BB26E50FA +80EDC1063BC99D315D27B10C55B90B0BF4EC44E47EE5B3411679DE53D599D207 +1CB15604E1AADC95687DFE5AB9DCCF4E0714363D326896FFB63CD1C2AD68A134 +D71E8A3E64B9F41893AD4A5CB6ADE17C346728DECB79F781541BE72AF75E08A6 +1FB11C8248ABD96F91499BDDE25121905ECFEA06B5226A03B49ED59AF459A53A +2C91C767533F9B45CBC06CC5F8E2441B90538C40CD9BAAE5C53068FCD06C1D56 +2916305B85CAC90E70D8B6DC6314BF324BC2B6CBDD5D0D6BB1272B3D897B952C +47666EF2D75AEC66CD95DE3ACDA8ACF70A9F2C0049ECD37014B95DF854688B69 +51EEE8740FFE0440415150B9458C6CF7EAA7394A22570A208BCAC7FB8061BE69 +B0EBA819F32AF2D2867DC8A6A21104FD5ED85036F670D5DDDE2A6646A28D95E2 +45A26BD449E8AA9A18DA0EFED551683ECF043CC04CB544B12CF47F41FE0D907C +509F5BE00F4B141AD631282E4A54AEEE025B6602560206A529E35797ED1FF42E +81F151BDD02AEB39D8B28BB88F7BB4B2F029EE79A18EC46493FE3FFE4316F9D1 +A5C5F872BF4A4B01BEFBC2E63D0B4D8BEF5B9CA22FC0FCDF2044D41DFE5FD237 +B756A2DA4CB73713C69FD45C057C34C64E0A205B45ACDB444FAE77FF47B4B339 +4405FC8520927B194374C069D17EAD431705B67D0EBF7C5AD117A5E53F817E07 +9088019B2624D60D3015D7A929D1465A529649EE0E940866B10E4A899FF9CB79 +7073185481ED66EF402E4343829BC61AB02282719C1767369ED992A3B9B8014F +56B95B5033E43EA4E02D86ECD676FF52F1BDDAC439CD4EFB5A3072C21AFBB4E6 +21BFAB3B21D68543AE6C53F61BFC159FB7818D978CFE01258EF5234AC13F747E +90474B2AF85D8BB965B586BB4CA78B5C77D5FEE453D48B506FB5BEB969E20363 +64E9F889DFFF029022DF40B8230F595EB6595C99D809DB565BD8405B9E445255 +FF410350946D7BE5A15DAF24F71E97B932E22043C9F1FF5E1771408EBB881646 +B31BCA8423CDB1F0ED5EA38381FE63484D6EB0BCD3025DC10ED34D46E8551DB9 +08B2F56AD0140296D652AC96FB1A62E0C11E0B0B5704682874DAAF26A325D026 +A3E8F62ABD3D31389E533396A82F1E21A81B95B34ACF539B86EB8DB036BD2266 +44071F7F9B4A2F4B59CE984379F512B2FC0DACA58AC8A98D896607FCA1D9FD95 +7D90CB16363C2104EEF6AF9E6FCC1BF26FD0A9BF3BE1CF608457C4BE1C4E40A7 +150455BF4EF0A727AB70A700DCDDB4AEF35FAE7845A1FE551C6B4FAFA18BEA59 +E577441DE0535B5DF3BC93B1C54AD259354CD7365EA1BE355F8FBAD00E870BEA +E65FFDAABCCF3CC971008932489D5EAEBDB8851A1BB501053E5DCE4190DCBA82 +595E0772B4996436E2C76F69C4C00999314C8E90B3B6D200A9970FEF79F8FB31 +5FE3730D74F077675771D2834EC766D29E79E026CD1A1190D564835E7A8F06ED +DBC1904067439E92FA299A1A0A6E92FE5892CC5F3B9CA333C8D991CCE4A8DC0F +A324429D89337AF83CC3AC406FC98E7BA12D84E153378E141F48C13A22722932 +C198667064D067D0B027271E4DE0A57BB61BAE3DA471A4E612B730DF089FF806 +AC205FD45BEBBB56C781E8F8B15BAC7D4B01CD5F8B704F93E5C00724429FADD1 +FEE849719A956D6F822914D0D98C900E78186293702FDA430B138E842D989210 +1A623F7F623BBD4972735088EE6BAA0167D9A2F8F9E9C3FC1B0B5851115D19C4 +37227B4C4A80A8CB7881765792B96E9981F1F60058EC18AECAB7ED96B5AFBAD6 +D7A320685609AD6A70BEBA380B82C5439BA131B9E880DF1125E691BDAE8BD9F6 +C3C8496AC6DBF2B6D9A4360E40C919E0BF937D6C48DD1845F6863ED2CB3CE355 +079AF9F875185D80BC66842A270349CC7BB4592133CB0B893993F23EE44AF9C2 +0FFAF5C468E96CAF78732868386DE74AFB511FACB763B20740392E7F81B79EED +BBBD0F1BD0939059626A239663293C60735E3DD552C1DEB268848C2CB7846677 +02E42AA7A0FF800F860E5E8C1A69FA557ECEEDFE601B00742A02864D92D36A69 +7105CAB58A599A048706120BB48A8CB7A26603375B0EC207EED761B15BD86288 +607FECB985C7C4F05BF6ED9611280FB95B3554A7504D923B800C5D6457CC3E60 +A244D41E065AB667AA57A4F9A38944A689932ABFBA62ED58DE444A9AB2C03755 +EF2DB682EE37DFEB8D6D4F40223829145711D222C604EBB32E6AEB26FAC84EE2 +21F03C63000CB9A30CBD7AAD834B0DA7E2119D9668950B75536CB6A44C6D445C +AE46CA9B74234100AD21864A42E9162BEFF56D3A27CCFFCF1A2B5444DC3FDCF0 +222D84246A6B278144431642134AE0899843C0090CB1DE2951E652C2B8A6B2C8 +5459389BBCACC575DEEC3C8430BAA53526FDFAC63F7A38C97BED499C95D5E852 +1B6FF8CF1C39311D9E8B61EEB36745FD584C994FCC9DE4B821E4DBE60E557FBD +4FE9199313155685BDC5F1108440DFFC2BB41055B9232AA3F62F379599F15E29 +312E92531FF4FCB21B8981AB09AC4BA9561EC73CDB2AD1227C65877237170DE6 +C4F1B96768D1C337D8EC55AA2F0E3EA6386D99130815DDDB927FCCEE7B156A1C +89D5DD432ABCBE31F72605AB843C65C2F2A9F9E85E8C7F39B5E5E34649E6C01D +79394002E62DDC07A24088948E5E00C00ADCE5B0E6E4055AEAE044F0C1203B97 +0D8E60021BA42A4EBF535739DE15E85BD95EDEC0F2CDD1590F722C6B09AD3EBF +A84CCBBBBDC7929EF16B2C70916402F9918B7639741DD147A9F0D8B409E4F34F +906F289F0C56DB1A13366A9BB21151CD2A064A0C34C91F03FCFF4CB095C1AFA3 +EF44FAEBCE632DF677332BA0265C171E8BCDEACB80CBC3952501FDF794623FDA +88D72F33B201F8EC8CDC24F0F1A7A3CCA4194BF0F51A97FD572674EBA4D59C09 +5D8E7C2922FE95FB94D91A01CA2FC7DED0F1E1AF7C52762F2D155852860B13CD +D190374AD23DDC89F18951D56650566A65E9EF82DDFF7071DD24EAB4D40C3F93 +2F26A9FE53EC60678300345BB3EE08B756406713958C8DCDB3BD320499501F75 +2DF38D1B0BBED114142A2FFAD6131493303C57A945C8A8DE2FA294212927147E +BB4DE9E837A559326EA6DE8002BD98A46C876CC853AB5175A206354B7869AF60 +A81B407E0D389A9364C951258E83006D3D5DA266D05255337A5520AC1B9ABF92 +1BEE3AF1A888D32AF5A43762C8461262BD1FB44BB2654115046CA96B64097E03 +E817B12852A6363B8C2E36EB1C2F2FFD18704FCCE81A0C161E2172B87A7E2C04 +6E55BBC4A9D91B24984470C698FD86DF00585E66D52F2BA0EAFC9D1A731E79C5 +B45F76E8FC5750247C2CD68C02B5F49DA350CD0709678E3073ADB223F7D26DBA +5EA6CD9C9EBFA0261CB70083538ACB34D04BBC626BCA17DA80476E3C9ADFFD9F +EDBC73F5CB3DB389E47E2A09E92E75EE73C5D9AD51D11B08DCD121781FB874B8 +667ED0A4AD8E19AA4DB0BE23381329D1B718AC0B2F67B2BE9DDC5C2C1B03A679 +4FBDC95E68A35B5CCA947AF346893A4B881136F5F4BB52CD5921B203675A8AFC +4F851A90C5B727BFB43ABCB420F7E82E8D511AA6752ADE94E7F46A5688369E6B +7F31490DD51B6CE0593BC4137661BC95174E8C1D6B9ED395BADE94A2D887DB2B +2CF82B29DDC5381A3888AC882A5955DEBD1134EF1A53C3CAFFFA4825221F9A79 +068660F347DFC65A95F207726A48E3E9C28B8A9E19C3AC37C0A0E390B983793E +84049D1BACF8C0A6439DE19D9DF8ACA0238CB2DF9ADCA4DE5030DEBF41BB539C +81660B44F9E448AFD6 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFTI1000 +%!FontType1-1.0: SFTI1000 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecti1000, tcti1000, lati1000, lbti1000, lcti1000, rxti1000. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Italic) def +/FamilyName (Computer Modern) def +/ItalicAngle -14.04 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFTI1000 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-95 -321 1415 932}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E48759F159DB0CEB42017533BBB306E6672F8DDDEE8A3B +6B9B323FB49A7ADEE78446D461D84AE14D25E874C4C6E2F7E5E414E33B0ED6AC +0D50F9DE6403F4F07ACC25F73FD6CF8E8559149283213ADD971C6291D253EE57 +FE797DC5B048D77F8A6C67F6E1BC8D444F21352F8B40F8FCB04ADDEF61553ABF +CAC7218544A040752E1D2986BFA83E6657CDD90F0CFAE380B190912E11F1DAA5 +6096AABD25AC2B2BC4C55FA614150C4000AA534AB54407AF21CF9A585E5EFB83 +75B1260FF4E2C4B60381F0928586EE907BB5B429C77F26C2F465D9A446F37812 +979C16CC88722B2987C591425AFD9F8FEA9C58721871A6E7EC6BE3F18FDF86D3 +0B8AF67B4F85462B2FD36D2597E0FE6B51FB815C60EBAC4EE74FF39D2ED1AC54 +D8BF48EF8880B3287DABEC5B42A4CD6871D7B6113093D2537534232EDB905BD0 +5B8CC6AE3BFEDD03F66E1BFD36EA084928AFFF5E581E5242AF3A53F074CD73CF +E69205EB4A9DE53E47B8FA10A72196E929AA846F30EB340889302C5E1C22431B +224AFFC5BE98FFB8FD189565808D376E5EDB684FC5BB9457782371D2AB1A5E76 +88ED3D1E0FAA8AD34EC1FDBB1C0B2F7605609E8013C3690F488F6A4CAA3AA124 +1138F4B84F810945C8631658C04BFAF05B6C63FCF69FE937267F86087C411546 +10875BB42FF45E8B9B582137E76B19869A7AD5FDC57736B0B35A37506BC2707F +20B9F8D7AC0A3F6EA3634CB8F1848E39C2426BBE1EFE79052BAF29AF82245080 +55E3CF581F1A77DBFF8FF19910CDECCBD5C48FB4EBA97443E951A14351CAF137 +9D3E78FB8306BB0A102A2C94C61D66CC6CDAD54A20F4642BE4661BE65734E509 +095E477C447FD61A32B0F47B405E12D4813C1A9AAC2D295A425583E663943254 +FEA58927EDFEB0383C22148F4E1E79D3055FA7447A5B4FCDBB2840B2C0BDB03F +98BD3E9A634CEEA58CC8BFCB6E64B9111A3469A4772B854BA924CFC56935AA8F +EC43D9D6D06781FB8EDAAC5D73AAFCB50982FB3C27E56223E4F96117DE25C67A +48695894F0C79051D6653343F6B262FAE3C6BAD0D26F25385F50C939A6670F01 +19E599EC0D322E96242C26D84634CA0E705F28A97D67924722964C457907EF85 +7768FA8288C4641A4B5716F11AD9EF207A09A1D42B8545644A2AC8FBB5C0AB14 +FB9BBB31632DE58F2B890F203C399853E3F9C475AFE7783CD001A31107668683 +7B4A93A2575E90D0ADC23B048208698153772449476BF435E7274DEC215D4416 +756677B43C8DD1D17BC1BD2FDEBF505042CD6689C748DA2324379925FFE94532 +27D0FC8DE1576FBD2CE696A8D00305BA98AF862C13D54F9A77851D4D96A214E3 +614CC6801D9E312BF499DA9291B1EEE859A2E5B6130CDCEB505AFB2077F3B799 +75EAD0E0334AE1462B55AE6781011A7F8DD8C00D0AD78ACAB804215DC970CAC9 +A2CAA288B38414A10D24B115ACF5F4FB0387D88E46C7EDE159168E10275820B2 +08068E4BAF748CC2E39D26F63855E2B0F9F79398FBD619A49399D381C0F450A0 +6FDC706A51CAE2AF3DD20EA3C4874DF31358F020AE98BBC8D28F4F90572C7CA5 +81759DB23606C5DAD844CCFE5F4755E0AABE2DCCE31305795931B9E14B4E5064 +7F37A36A45D7FA628B86506EF7569D63DB60BD04BB645FDC8926BF83F0FF0416 +E6BA194BF9EFB359E1F0B72BB3EBB7CF6357CCA9190EB01333309925B2A4940D +4037B813005985710E8159A2E8BD1E25370499A19E8F949C6FB9F5C36CDF703F +C79A130F107B919D4C7EB7917C4EF44D186BDDCEC43751111C821D48596ECBA1 +21403FA1C949392BAB3942CDD9BADC5D8D10E3E4A1DD4220A61CD01F01048F55 +CC3673EEF73AC1B3A86FA82A236BA11607EC857EECFFE1C0DDCA2814A551BAA6 +B894DAAEA5579259181D68C1E643C8DEED28D66E43AF91EB9944A055739F6B02 +C66505D26EB675F1192BD428EE50A479EFC113496BF964FBA707D5F84E4E5266 +E58B9BA8B3246552735B609FE73154A62141A81377AA87C3113E3C4430054DA4 +B30354796841333DD349992F23697EDC3EE66D9A3C692F49905A6806982479AA +6AA248BF39631CF62F2279DD1B26C54D2E45D2025DB9C019F03DAFD5AB7D9AAB +4A64AD731766E95793F4D2F7604EF214712F0012C2FB2BC02732C5FBB6597050 +98D4582CCCD52F763A923525258572B07B5E6DA47CE6587FEF9FC0F64530DEA1 +DB2820B2942DACA4147BB86D9A2DF68736F187FEB167545DAE84A4A7437C1894 +9FD9BF66AD7817594E718FC23491DD631F2CAA52EEC7E8443DDE2F9FCAD1AB7F +466606CD98CADAA2E754966A92617EDE1E2DD42D1CBBAE47E1C086A4C960053A +D6CB2425C572F7590823416FA674207046CC53A19D5045ADF933DF97A19BFFBA +4607E9818A579D619FE64DB80B78261A2EE378059ED070EB89CB8EF17916F259 +4962EBAD6C6E05768121D331D71DA9FE823D081A6B71F0EC7C175209AE2D7E50 +8897F58E1EDC25BABAAE3CA1B14C33FAFF6DE7BC67EFA76F5BD84D7FBEB18685 +3BA8E9B0322092961022300A7FE832B1225BB428E0E52396ECED2FD021B8CB1F +3877BA68FD92590A6E9CF4FE75371240A38382CE7032ACB141704455B72B4BB6 +09645AE65FA9409745513A79100212026AE70CE69700C11910ACA50049142817 +4093C2F7DDAF2E869198A7A941BFB2EFE056BFD1B54D638DEC0080549FBEAEF5 +29F0DD02B2F98F2DB87686A237EFCFBE06D1E039A14A6E47D0CB1BA4BEF78AD5 +2269A637ACADE2F80F0A1F2B7B3B428824F47051CFD5DEB9A5984F876F473543 +172DE5ADBD9114B29E2C594847E28D80DBB8591A7F2AD06A6DD1A3A02E734151 +B6CCACE4829B709025C591E357648BB4743E2EE8176234A2FB56D764B10B5F14 +F973B6DBB65B43DB22E3BFE0D6F0A9B6F6237D16BD6C75290A6B3BD63DE90FD7 +10CD4CCB756A12B6461C8C86E1299D306E77C9814154BE4824695F958E5805EA +0E80D62A4632A6862A9B7F2DD155061B017CD1E70DDDFC527A2963E0178E51D2 +E703E2671EF952C17573E56B29B99A1B5CA77395EB4954B70B223AADCB21A84A +490A28C5D533EC872F8A8A2F687C9C0E2C90CF25D9BD7147D508BAE3AAEC9294 +0071E018D501D0DD71BD7A961AFC377DB1F295A872A954BAAB01D3F861E84890 +7BF1C4CE9BB69A7BE90083F551597F0B1BFA359EDBCC6C4BF9701D62C19CA815 +451DA50BB22173B122722FA0771421FBBF3A16F75E9BD88F991A731D57F2871D +BA70876EBFE17FC26A675FC50E14657ED0972D1DC808842621CA93DF0C7A9B76 +074B555419BF92609ECCD2A05DE277A2B5D7284D4AC14DEA28F388CEEC531F41 +F324DB90C99D415FD7702166A6C473EE19107A6B2190F30E2EFD930AFFB09FD3 +8C65CDE4BEA95DBF140F513EF2E9181891177B9199260B18F601ED8F7BBC2610 +2990E067BC187000011D58AD5F027DCB0F552D820C2B684523CFCFD46E2E94D9 +0527BF0AA0F8A2E9AA0AAD86A52FE97542D6C800EC8322188B3793F7B41B1590 +9A6D182F8636310413CE5741559A0B2EAE043062C88CD8FF8EAF143FD845DE3F +3E8D00A5834CA315127B952DD21F5925847B30000834F31E53D51E7587B3F8CB +21775F4D01F41E5142CC0A798E8E45D1F7794D15D0FB6FF4164D26BC061AC21E +837D7A77B7439425D499C3B01F3D268232FE268EBEEB17DF025A582564C9908F +899F715939E3539AB928797A8DD688A7C379DC759502E47C11288A3A04E1FA87 +ED3A42E5109CCEAD6AB188ABE3C8FF2BA27B42F32DE266FFA681CF865251E6D4 +41AD7FFB66AEC5CEB7CCE8714449DE2BA7E422D29A06D728CA6A0D7E48B2B0BA +B032584B3D581AE4601ADA863FC89F4F0320F94F9DCABB85FC2BB9F82186C498 +54C81C5033CCD53A8BEADADB30E250A98EE53C2568605C8E5DDAE81D2D062082 +81FEEDE827F94FA87018A4950D4291C455C8EC0A4F1209D929CB15E3262195C8 +76F7F296FAE914014DA87508B5822E71D8EF9E157567538F63BCE911DD8925A3 +036863554794DFD1184AF757886F39374C7E8A98C9234FF659BDFC6DD579E68A +4B863164AA9465D80487319E7372F40C4B5B596817F2352CD386FE17DD515FF0 +F24A7E0AF18066F6AE844B121EE8C2179D37410FF38F25E56AF7758FE2F2FF32 +05F921FCC7F4272D921DE57B93DDF43CEAE9884C4CDF432A0FA968B1866A27D1 +3AB23F7861B4BF1D5888DAC352AE443EED9A46951319F3B2424B7CC45824B2EA +70838DE15398B7B24C7FCDCD4BE002AFCC57E165FD245E481D5DC2DE545CCA1B +B7D328C386E13F1E935226253E1AA574C120970849E9DD01F772DA03589D4D80 +61A21AC2DA0DD7EA5277AA0A9B02B10BCD4A293BB00A1CBB399DE5AED3784CB8 +73F37C02BBC006B66DA03FDB576DAD8A569A91A52FCAB07147C0882B26070F4E +CFE8B485CD7F5C9D907DD096E5869D2949345DBD2BF823E9A135786B91783741 +81395D681A059A1E366F6E252435A2E4BD48245FD0D20791CFD2E2DD0F538350 +1E5A676716C278816C72ED116BE6596675F57FDAB9365F73661066C8B558223B +D6C2C9432B0CE54B0FF347EE4AAEB32D18EE14EA1C5D01D476F631901735EF73 +2B69E3A50D4225129C65CF388ADB4A71530634DDC7E6515F5A718B090641546A +F8A6A22855AF8355BC3919EB6C563C96D594091A4DD09F48BE1E8A677A7DCEFB +2238C06F9A8ED56A635B8015CCE2A38F37DA5BE4DB8930BC9E8B64B98D9DDEED +ECE066DAD4967D866AEC412D55372BE821B752386DC4D29579B6B20FE1A5127B +D552B9E4C966E647111177FECF047E235B4B64AE501F4414EA007D2D0D1190F6 +C75933CF06BB836F5192EA6486DE5467D35D0BEF08CA1B6B78A2D5BC4AB728C3 +75543A6744E1DBBA39482E44A9718E63851E0FB188644B8B64D42014DF2B20F4 +1470E53AD0B0C0F84314C5B7A9E30E919FF6741111E81C8D58C6C7072BFE1C08 +7BCE1C4C3D58C47BA28F63DAF08C1C16A1E88432471C1C17D912BDD82C44B6EE +678188C7773716143E4250C492D4809DDD97C738521434E306C9577DC478F9AC +2A249D44E4C6FE3AACC1D0BC27BBFD49091C5D41071216F0B1DCBDAED2D85F1E +A9F37D1CB4C4300B17142E1FAEF7A8058A6057D8CFF0BA1E17180D4BBDA87ED5 +2A3E28CA0B3F010C8C224F49501916031BB54AC96284B58BBA98FF3B9127F68F +2AA91B5CF291A16B44FAC0B9F0065178754F96C406A1746EF259ABCF22401625 +52A51A8B5B954399129ECDFD122D6A2352AE928AF3AB7A8D39A3838532F2A90E +757179D78AA1A253BDDE6FB5446A9665CE146DC8D47267FBA13D06F677D2A936 +89DB3A6A99029E5B534E213CF7969DDA59AED3A584598BE77F03CA78B376643D +852A92D8DB4298636804E08CB5287A7265023BE8B3562AD30325EF34296DDEF6 +19B8690651FE1B4485C69A82302539F8A2F290F796FB129E7B239CF8DDABE788 +02BCF52409F900260FB64D740B7B50F4E002E0A17B8E3897E658BDE9BE46606C +0C0151D97D9B52E7A92E74BC31703D00B80E3418BD07615340200BA9C29C80D6 +489456C14AC12D7639A6CABF9459BCA146C4A98E5E38F0CAE6720BCF775DE140 +3EDCDDF342E184BCC249577AFFAB4D8F68C9AA954AB17CE6792930C9CC5D559F +045FC941E58159AD71A3EA6BCD4F001C01ADB37833782A35C98A57B5F8D04E2C +2E194A1879439CC90D4F699365DF74C8D64116C985EA62A0B19CE44106FAFF40 +F1E2AAD67FC75188EDE9559B24260BE337C787C16E529B6D950E56C3D355D5DB +0F0212AD53F05B0E6F106BF8A2919F6031A019BC12722EACF4877079C0FA195A +E6C38853F770366AD98D5D7EDDBC5DCD32D2F7488642FA598F92F6DB3ADAFF4D +59FDDF2400FDD502B5622919C9C67EF4B05017C8CBBE32B386AB3787C9DAC441 +7188083EEFBB813EDCC20B11FDB0F11B74EF9E01759DACC64DCDC7C5B7562B0C +08C112FCA4673629B0C950BFFDA8248427FBFD92CB51AC6A97E305AECECFB6EF +2B84ADE94E180FC3DDA50EC32EC2C331273579AC93B4E79BC756839C446D4473 +42C7736AF5765DFEF474340E82F2C5775A927F2EE6FA78E93DC96DDDB8986A6D +4CB723B3506AFB0A63A337127B661554FB3831472E387EC1939FD1B3CAFA17CB +73EFD037FFD9F1B517A1FE697F01D5870F7B7B04EEE74BE8E43F0E4BBC02B9ED +BD1AA356A42ABDBBED3B231EF490284B9E1529CB552DC32217E8D64443650E57 +23A96091C8373A4BDA94CB4FBF282A5822BD311717E1BA5EDBB86D2867D2243C +898C5F12F17BF311CAD21873F8CB4A0C07BD8C4949F3104F1A3AF51E606FE121 +02C1B738A41B2049FF9E596126E3443D41F16E97FF2A12FDAEBEBA32C6C328F1 +CD6C4604F524D5A61FC313DAA385A88A5CEB75D3355FD48B3ED3EE373D601412 +5E1E3031E8F3357EAC2414615E7AC998CF09B5CCE633040315E45F1353E73736 +C5B9E462B791D6E2F3816983D1F2F01CCF2992D93FC8A79E40D824DD8B76A516 +2B9E80FF9C88C53D9D7DE22E4AF1F3B741217D1D3FBD147308DC89BFE80B6B40 +7F8451C393470525FDB77F8C3EED0AC734005CEFB687F8C72C65E6F1116B7909 +35D25EFB35E3CBB479287F2FEF85CFB895ED80159929B6114C39B5A334C3B7E8 +5701685FF5374BFD8927EC6F90EC04264BBCDA65F5DB330191FDF51326B990C4 +E3D619F6395FCC64C8DC9FD228F01FA6BB929B7D27832219A2CAC913B1235533 +1747473ED6C9B8053BB871ED2CAF314214DA6B918A38195D6556FBCB21C1A4E4 +6E439D7699001937E8177E0C901294D9704CFED94BADCE1E96BC1915EF2FF21E +CC5C7CB4B6C439A2E90D062A76F80FE71EC250A595773493EDA922DFD5ED67C9 +74DC17D53647484955D1156B1AF65B408436836F0891E0B859F8A683E368BC08 +35C443840C8200F646205B9F1434687F9F43F2579C8AF34A2C6AD816AB1E50F8 +EEA7CC879D1C9F95191E6C4659923298C85291903C9EB3A1B499A1D7C01255B1 +E64012FF40D7F43073AD578977B6104B3C3EEAF0BA2857B870C18C7BBA82DFA7 +32C2B6DE41B3187F017A79324B7AC9F0E857E48A985FE57EDBFB2EF279DAA927 +8B7D0DA3402E9602317B95041E2C305D3E767FB867366F96484ABDF4BA49AA55 +0BCBF43D482CDF7EF086ABFC8ED96583F593506CE1CB0272A98D10983DE433CE +5C0B236C04B7C52909EE998887F680620554F28B53AD9DCAEF883AF97D367F6D +2DD21780DE83CB5131C3CB5F9E5CF55120E7034E1FD5224DBF0FF56C69C17DE2 +C28C4AD035FFAC8A92B714F67882D105E016730A4642CE4F8B283E441B151376 +D5EDDA8A7BCA1C18D916AE585B22388E7E26BF086F32282A9E5393439FB7FB63 +29E44BA4BB7D31EFCD46C80EA0DEBE1EBF80FBC25A7FB16C84D37A69EFC12EFE +28050D9FDF2F4F091E2AE2CAD6DFD3932B5C621FF48088EC2606DCF3DCC9B2EE +3FE16D407317569BC3FEB57E167D0D522C137C8794E5132CD8B146CBE6493F70 +80E1C7CADE72564CB02A28FBD48EAC90FCCCC032B63F26F49D5376FB27B5BFC0 +09FD75344F642DF961845ED7B8ABB45C02594368793BD01D1049072AB4CE4775 +C2952BE038182C69FC7A4E21310C899E84A773A3DDC1D5DB825067425D151337 +1166547B306E206A84F52B311FE4E1A03BE0B3ABB83B89E6B6C4A74192D3F0EC +F502E71501DEDC2280269CF3AF9B7CF7016AF7C006F2E69CAB5AE7A88711D839 +C0674733794504BF7C7377F522BB21829737BFD4E9ADA1387512E8DCF7DCF797 +0D19A59E8F374F06C7E883272F0401EAE7450F90F4BE84344432F60E76B5A296 +9806AC8225ECC3E6BB39F621AF0B462136CEEC6C66B3EC46211A01A524673123 +5504A07A62D2C9C57E044B639F70190AE886ABAC8BA761AC81E2B61854A07D5D +3F8B6ADEFC55F6456D3614611FAB63AB6E061AE84F75000CC9DE482B3F7E7C0D +6AACEB4BD6C9EE567CE891DBD79254353F36F4E15EA4C53D83BFB269B9B36A1B +7C228958EF1BA26381F593D01026AD7D9AE659559E929B56F8C38C30C2DA3F7E +E4A96379C955E2E726263D793DDD1A3B7D03D7E5AF7951EF09D7297DE5D1471A +54969B77366802EF226DEC7A29A36AB210E92BAF2C5EA9C228100BBB0AB6082E +D82925877E0A666EE9AE05381CBCE6153436D889DF33A8E1101310260B1E1039 +20420120E11D967529A4BAD588773B504066C0422B4C058A451D7BCB8B736F44 +3255D03F7B13FF3C4494BDCBA10A6169B5088326C6BDE9EE09EC0F393D1D07D2 +D3B0EB9B160C705F4E832CD22E6C0CEDB7D0209F805C5234B34324EB8230F9DE +2484C9D76FCA3CCB7811B42994334346BA37CCDB51785B6C1FC1C921159CB693 +B5C41860E7928FC725C17BA046C58D3B270AB88AB1FDFCC85CA4F76A0B2E6D98 +51611B1DACAD2AD99D48A70867881969612AFEB2FD437B51CE09D831EF664B4F +EB3D89021D60151754FBF9038DDE21B465BA74A5E081E6A9504361A2A9577F37 +00C4BDB7CD07D076306D4515821D5B6DA9D8B2B13CA3BC741690912B5FC6F019 +E6F2EF1D496CE85D239345776DC05CDA7BF3D23E5F83855C0832ED8BB9907FFF +7A8A7797BF0360A182D9CFF3776126E3AA0AAD86A52FE97542D6C800EC8320BC +F0DAD29E1800073723622AFDD9CFD89C05FB2128ADD8CB00E1D34678C97BB968 +A991F28171541089CF21C37991122AE51D167DFC8470D1543FD4C0A0ECC2707B +EB48F9944E004F4AD1B4B91F7E9EA944138C5413B4C1468994FA22D65D1CE159 +3D63DEF770D6D1DC119B7CD32391FD50009042207C292DE27273103CC038B623 +8A90D5D4A4573C0CA9B05C2ED4A5F7ADB58C471BA96CC444290F46132F67B36B +E2F7CF2B82A38A9BADE85EFDFD61111A8704062F458FF43F071B0343E56E1263 +B088F7071E0D2C81AA5DCE613E9EAA17CC7621829EBC90C0E77E0EF8573B0CA4 +E480D6327B3A5608D50778A510994D22F0D296940239721ABBFF11D172010A21 +798A2CF51A19535F2112926D48FA59B5F69C9BFB2F72DF2A0F3C318333382EA0 +0A349EAC4E912B5BA99594792BDF922E4783E2BC50A699B33A45B2A737E1E6A5 +A3EF0F778C00B420BA10EC666649F755B02FE963BF7095ECE0ADC5C37A72C8CD +FB2C2614B87CBA67FA0CE5239B6F4B0F8CBDF2B8EFA75087F0ECA8AEC7F5FFFF +60D2D3A2CF45C5C0E75FF3362241B9BCD6607E25DC3135476807EBD7B75F94AE +90735E1D7E8116B914FFFB391A6239823FC9D80B9D576708B6BC46835014FCC4 +3566D53523CC317961CB6ADA87A65256DD281E8903FFE59642F9610F1693BBCB +B2F172D2C38C1D08AF8F62869E4CEF8B28FDA478393284B025BBB49635333B61 +C5204ED80CCFCECC80C3A2CE1EC1D2425CF04A4B413B3D7FCE8672A37BD8F4DA +BAE47CFA590E1FFDE46024816DAE80ECF36BC3F9148F2A780640B3A83A36DBB8 +7350C3A217A4ED6EFC37CA122E79609CAC4A2010B5F93D6D1F58A7255CE88571 +AC7D8A5BBA2077063F6ACB2F34AF8FC1D75FBA7DD408ECCE9225CB0D32E27FDF +A3919067E6E162525184921BBA06EBFEFC041141C380FFD2E5D1DAC4A2C04675 +71A3AC2A2BF8A9E1A059E8251E5D7E34AC430E1E2A35E4D6E64AB8EE8F495EAB +15B03904D3E851A0670C0326F20789C06ACA9590B19B4C29CE1C9FE9931182E2 +DA11911D5E2C3457AAFDABB3B1594B03AC31639239588E6778F8D57CE7532224 +F10FD8E0915205BC216CBD42A99C6A0329E4A9DA39C4CF0BC780AC0244987294 +CB9711606851839E0816DF5DECABA6E4B2E25AB9C247FDB0A7ED986547967100 +8ED297EB0B446E46B4372ED22C944CF66D441201E3F0B641090E9EE1210E57E5 +A1D85B355D52260FCFCC15DF0012C9388C4C9B1E9D6416B5E4B5849BFEE7175F +3E1E612B2D65C35838D5C5C3310890326D9D0B73DA25F026C4E399F7B9AE89CF +CB303E06CB749A582539CB573167A80431DB40B4E3077617762C6C36383668CB +18CCA974673C286367C3F79F6F11730659C0B5A4984E5D647F29A2DA10A8E6DF +7463074CB37A148CE5D5AB63A2ACDF7B66BEB92BBEE3B52A780CA49D6B9F4B1E +A565650472CEE87060FC7E3E01942F1238F1703538067B34ADD96E296A70C340 +F677428F1B6BAE0564A1A9472235FD60C0499DD02633CE440D7103A3A34AF318 +299864F92AAA7598FFC87C846E94E394998C711397B996D57AC1E711AE61D7EA +754D80E60966020B1AC5069A272613C152B18FA12DA329F8E2BD665B85F87A6A +9740596B5E6FB5F8D06F944125CDF74583DD9807FCAFC9440DAD0769E6B3A85E +D8FAF19EF619BB126E201FDA73F60FF71BF765EF0307ADE5904092A8B6844ABA +D43EAE696FD1F746D786FE17DD515FF0F24A7E0AF18066F437B9C89E57762781 +28297540CA0CBA130B85C6CB2A9A15EA0D88ACD5F916F91539507EEA06D200D3 +487025E22B7DEEE932B2039225FC0BF569ED551425E199AC7D748CF76DF4E15A +BA26CD8CBAC9FC7D8983EDC4AF06D01F45057A3057834C51A2079B1EEE7715D0 +1215A5041837D4FFB0D1BD0F94149B54629FFC9B10218D5E8468ED6AF03CA441 +54A3DC39D0B2409D85AEF0D6A65B67F36B827B400D1153CD086E9D8DC76ABE9A +1B8078F7251AC329B0AF1E5EAB97E34E14CAE11E0648696E70C71A3380DC9576 +ECEAF1CBB58A37C43D7E2AAFE3E163DACCBA63D48A6BA640673C852514DDF642 +08D863BFC85A5D166B9DB4AE330BEFEC45FBCDEA39CB00D1F93828B789FB635C +F3B90397E5EF6993C61F1C0B66CD9BFF71B8538459AC97D82069E7499502E5FD +0A803F755911A900FED6E06A716F18A21411D4C7272F496F0CED0BABE9D85494 +73EEB8E14C320D8BDAF66CD859748847590F9EC87ED2DF0CF38F782C91B71EF4 +E115463FB70C1A2C02385E5E7285BE1994C4DB708985060A6C7F40E90051CFE9 +9BC00F612A8833AEF48B5C0A0AAD834B65D8536C15C267C838336FB460063E42 +F47F1DCAF24E0C0226D61A91A7A9B5200FAB356E253A8176C16CF3D8C713E7BB +5FDB2F2D2B3B4ECC3DAFF57989DFE7B1D0F320AC68A48359C0FE0BE671B0C4A3 +67B561339FE84D102C7BC2FC5386D7FFCA429E466241064D75115E186C00548F +F7E097AD3FBD91C79D45E789E971559E74C2B0E7DF81E6900E3A8838D780C6C6 +D2347BEE2EB1058D6A92402835C09E8235DDF11BFE38A7AF80EAE4584E9CE85C +333F47647FF03FAD50F50943DDBD0508105697FFD2B67A551426924AA4B9B710 +487F931A4D257D03CB03226F493A2E7D4488AB58231EDAD7FD489E95ED61F4F4 +9D274DE6E099FE501470FAF171A3C42A81FAA0609C95FF2027036C55C0678820 +E7D509A330CEA0DAE7DF6334B63553B3A06A5D38CBB18115722D1024E6C6E150 +97A1EC40370676FF5A720288C5C455A6398D7E0B38FE25BE2E6200B060BAF86B +39EFC0A6537462E0A0A1B035CDC20019E76A7776F496541CC9E03F8AD63316D9 +3F833F07277E9C525DB4974AAF6BECDF139D158B9CA2FE86D2F82FBE82B69903 +6829C23C5D0B2DB336E0B4D67BCC0CA89FC12C4F3B4CB98AB64D0DBAC88F95BB +A6D9C0DE4ED8F7853E887FAFADFE0F54CD58C9B4F1FEA56902F018B76345413C +4FA279F77FDBC524C89B8DEC81D7B86F73CE3B2BFF9833304CB4345C86052AA6 +A8D35E94283B20AF70088E031573C9379A1F9ABFABD56E8D7EA5B2708D4DF77D +C457F2D24161F47B7E29D8D0351C31AED999714723F6C0293CA466BA0C061E85 +0CCF5C2C235A30D2F970486820AD219033AEA8D3BEC1498788803DC84619730C +97F54ACFB2869A22ACEB906E64778152B9917A2277701809E4A591E3581DC662 +1C8FEF38317D88F86F2C4BB7287CD3C240F1AA5867DBAE501C98DC4C1399E9B1 +D835A7CC092ADC73D2A91D53E5EA41B43A8F7D0E99953A6C90432DEBCF0EA684 +97581770F83952F50F9A5B5538C726B4D5B7F038555572D81B73C2ED25D24B1A +40805A1E590FEA12378847A54C32509368D49D05DFA828AF5EDDE76123560170 +3AE6AB93B40D9AD1857CFBB808DC3CCB48C7A45DF5371CE90583906515E1407A +562F5D36E7F9641535E9047E99ADA2D7CB384C9797D0A0D357C2644AE96C571D +D0F611CCBC584A6FC890BAB76E5248A3C9C2228138695DD51BF24A0E9902B646 +FE133F20E38B8A0BF4E33F7136BDF8CE3C652B4A82330A41661DBF3DC92ACAA2 +CB08BE10CB4239F0697807C78317A9408FA4D85B5C0119E1B8FC450172753E3E +6F221BA9AD0FA152B2A7BBA5F64980AC2B631756B1FB6D6402854BA4A945AA07 +8487872867CC5732EECD51B070DAFC00D66198A57AC0CEA9F2063458D8072503 +4634A71BD1DDF0F725592BAFB32069332AA17510B106240C3A8205D9C79E7159 +4CE475D3355FD48B3ED3EE3103C7FACFB0A3D75684D2D743C31F70320180F56C +953C5DEACC6D5FC5B2EDEA366C4BA7F3B266D8F2774BE32E5E1E07C9503B4A53 +5A8A3EC9DC9EF6E1FA2F3D083625FFCD171BBF42FC738A2DBA2BBF0E35FC9634 +50D174C2C378C1B0A689A287DD00DDC694114680F18178AC7207646C537C6FAE +7E6830720B1CD9CCF2D23D33C845A068E7AF13A495D525BC95F35E9504F076FE +8DA3DA8F96461CBB88603823EE90BB4472260A0C8089B94D92D284BAE83A9B86 +74077DB66E401EC16A80386AA6BB0516D252EC9D6E9C1B5150D0CFE11B861C86 +FC419D331D717C54194B927DC861B13238FA05031400647CF1418F068F46862C +3B31EC6223EB09921F1BBD386A0A1476E8BAE872318B18F5FF28B9A2765C7E69 +82A3C4D80A8348D70CA13D96B85271761A8BEDB8B37A518777CF2E2BFA2AA372 +3E02689A186C8F15DDE7B3A9E1899C50AB61487E99C47D0DDE7728EF86C23136 +F905FBE44A9220970F54B17CFFD239B90EED2C14570AA9B960795874F06FC41A +77C9AE3CD3DC2CB700D899CEDC63E876A35D64758EBB0D807CD51735899EB6CC +03D46CC436A4AAB078428E0051551C93FBD68E47B62DDAAA70167C5BB5C27EB5 +DC8F7DC87CDE7C0C2E070A5E8A387003B2772ED03B3F7A74A7F196D57E8DDDEF +4C2E45885C5CEFC171E194BCCEDD6F29A51747F2B4EADE7D93F8707B929FCE69 +4F5A0D6630023BEA9A26265929430DE2049E6D4C0BFCD17A869E7539915E3DF2 +BC5B6F6C4C0AD09EF99C25B973979BEB09C956D41B3683591FE504A266B838E7 +F7D60B2E142323B962B29E516AA07BF4C6B62B4D31604C131D43EBEA32B09890 +314AE1462B55AE6781011A7F8DD8C00B9B999802563AD91074C82836F1F67FCE +FC72E760488CDFA3897AE9614C558A8EFA98F8D6E05488062C8C849324C94F41 +7CA515F8116617E7E3A6B1FDF8058D4AD1B6F85D17269B95BBC859B0F8BB86CE +6B4C714A15F2D313BFEE802B3FF1C3DA809F9529595CB2EA6E04FE0571B7F2B0 +EE515A46A3FCFB0E52A08F8EBE84FFDFE5FF69257E42AA6834E36D2473559AD3 +623B69B2B9D9E09FBFBAC09CA996240743555E1BA21A4D7B2F057B2C224CFE60 +4784CDC350C8E0FE5D93D65F140BE77D68C6C33736FAF326C62CC70A2B10D319 +4194A4D791F756EEF52E2D28196C95334CF2322FAB047819D34C96B63DFA2514 +7C28BFB42CB8071B25802B4A5E99C82900E8A5EA8978F58EA8D52240E36BD6AF +3146F59A9ACEF50FAE0EB69D1BC1F6749DC35F595095B1E8AAE808C893C86FAD +50FD0DB7808EE78D73260B8DB91769061FB89748327970B0166207F7F13471F1 +E92A36C2C5768F18E3C5DEF64D7D71D04E1C8BF1DE8CA0AF7B6332A98B34D8DA +E8511E54B2A560A5BD213D1E51495D697C3853856CC8B95F89DD9F7C4A4D3149 +97390E78D6D5F0B587742A6179FD54E0955DF11E3CE94A8CCB82EF5A49969DF4 +719F2DB45BB856CAE3E3603BFBEAE718ADD05ED33880465ED2C4963A6D17571C +307B42A3174AC6AA2412B4BEE355EFFD660A22C4B85FDC0227CB35B875515171 +457211D30F0346E71C18566549AFB33237DE71A43BEC8E087ACC4F5DBC736903 +D5EF17DCA114ECD6D83B304CC0C9D9F83063638C7257D7DFCFA10CE24F8C6102 +DD2E3E7EFEDC05E43296A0548B24313B4B92C85378A2E55D9BC5709E9535AB0D +D050DE539213E79EE8C6E41197EA86AAC384C24976CD54B11961CFBB8504D3F5 +6286290D4E612D5D2147981FA08A4088292F15D90BFA45B7270538F8154BD644 +83769C78B67BE4CF848855977F7DA14915258C79EA578DEA7C248179BAC57B97 +156C9B66E9592910C5A29389C7879C8C8004101CC971F7520B2692F52DE8F5B1 +92671386A21CF2784940B74BE1953269FE1406751D2DE88D84CF8F5A7A6CF5EA +EB5C2E30198E8839CEAFC302E18AF3B86B63A1E87F8AFA13AC1BA10B5D45AAAA +A881F8E0FC4AFC3342DA85C1A191E075B2F14A002C84F1FB7A40EA2CF50D6875 +4195A7A096E4A2A8A7A13CCCA4C5A8CB5F0B5A2F9BA6A9974505531E67991A25 +713E42B1F8324BCE841388A0C65C626C894F2055753C2D3FE9B61A4A98EAEB07 +5F2175F190F780FBFB26824E1F81C8DB3FA8EBAFC3051E760943C7C7350422FA +C82C374A36779ADAE96553590CA2AD100A7AABBF98AA291671D39DDD3674C055 +22B117EB0E7B42C46538F6B14D6F1F651C8D425842D20C55102D2590F68AC8C6 +C08E97EA3C8C9C8D843905B89024F8E33DBCFDC2DC6575563146DBB56A455DCC +42E9EE0EB9208A27D9CF26EB24281E4BA70AF4E9DC099D542E9DC312A65C4B01 +6755D8C74F95792B28DC9BE1C916D9DDCF50F0EF1CC8F8CABD064949F1216BD5 +0A7CEF4FCCF3F688BFE943C25C045ADE23690FD220F61EB9574FC830F541514A +F4AEC8728A5DFA18F8FC167C762789DF1F73A366BC1BB19B3621E5476D354034 +48FBB1B1B073BAB1FDE564ED7F99EC32C1BCFA21A8406E48024F2A8EC86C95BF +C3E9BC402F0FBEBCD86F2606BAE5767B7B3638761D8FBC67F8C79D2C36E88FBA +D27A8582599971CD5CA04627DC40BD8849496A33F2AB731AF2742C7374D3FA9F +D03ADA152A9B3BBC4C6B436BE8664AD0C9535F2F288CE75EE65AFED762812F04 +8EBEFCA6F34D79C33719A1F8657D1F6B2ACDA3FCAE379FBADD077BE010704273 +C1618D03EC2D10B2617D34B9D0DFC0864DBFDD30DDD31D9470ACE41700557ABB +7078558459A8545A54C78B79B67A92DA69906955E354ED5E3235C616556CB5ED +994EF5BB368220C0EBEAC043E5B4DACF25462AA0DC34B8A26187F677C4A59B4C +6439A262F4F16448A2E37BAB21A8A04CBA6FA50F46E9EB637691688FDB89506D +F655134B017391D22A667786F6967E04738E56F30D6206A51D52B8DAF0F445E6 +C42E4D4C5B7970AEBF00908000E49A10A9043ABB33FB5511AC5992FDD95412A6 +1ECF4BDBF85FC0E21D08956C3D51A012779EAE46086A0C7828BB706BC619CD20 +2D499074EDFC5750F35C875DB801743D3768019395817AD805BB4AB09078E2BC +40F003E92212C8D164D735AD5950CC011C2B44FA2589D9D6B43C5BFDE1D1884E +2662DB76DF56229E97229B95C82B7CCC3EA0D19A6EB3FCB5DDA2BEC92B1DD1C9 +6A1883F15AF366220D2C10C186169605D50157C5311CA723188D86D999052527 +05C3546F29095AB985B37056E771A0899B1EC7F8B737DD3F5351E6C89F1012F7 +5C093AA734B26AB810A0895DF75E127290DF7A5E7B75AFE0E6F6982403D934B9 +F62D601041A5742218FDA392ECE3E3A7131A35DDD6A67DFE13BDE41B5AB9FFB7 +2BC1A6715DF579FCB3B25169F92404F6B14B949B6EE24349248DAD13AE2BF981 +212D102E053E1D849C76D05BF4035C26BCB2EF11136D22887FA77907046DA7DE +2320F7D401885C0954E529BBBE321F440F8CBDF2B8E98614D15E47605D45F4A6 +EDEA771A3852861DE81CF752A0938A3E35EA73AB9C4B486C645869A2B2DAE272 +3FF405DD5A2EFDC3EE6D13426E3110AF168E8A1A2CDECCBC03A3788DCCF87FC8 +14D592225BC778405F3A88079C82603335B4BF5F5B8D6B74D2B54D32A426995E +D64E84A10764EAD2D65F03B4F3507BA696FDA58A03A022FDE22D2D4630474BF5 +2D90520A343E3EB2FA8AD288EC56054607FE499E34ACC2231C41B3187F017A7D +0F9250AC85677C29A9CAF1600662AA1241F3F9590B94D152656CE0A277C180BB +57546BE7B8658438FCF847091DE0BA4C800DC192AECCF77CB90A1E81D976005A +1EDEBC9AC12151B8E7C232FE3BBCAE37BCF5B4CDA25D0CD507139179B152604D +CB00489343B5FA60B1D2F47A1C83530D8C78462552BFB2651391821D1629465F +0F213B1AE7365A5876F649E4B17C5E8664EDFE62E1EB61E8A96D713059222569 +609123DCE11A8B4DE68E19101904A6D59FB1D70CCF6BD5D97E0A3A9AEDB29E49 +409AD04EF7C91F970B9886C0858943DD35D6114830337DDA78DF1E87B13F6BA8 +7C97D225CA38427AC650A0390379E49A826C8F2FABFCF2F30533930C66354628 +C214711E4BF5B62B806F763320D74FB698F2DE02EDF2FB3DC1812EB3107D9C57 +4BE01E31887BE0BECA7A25AACF7723B3550E5683AFAC669C1C21134DFE7CB0C5 +18B17E14F871D857FBD6E37A565198B84B142D132F62EEB3ECCCB2DE1E59875E +D5F11C4B36E9D261217540A1B8141CFC59E6BACD02A7FBF89D4F9565D2F728DC +E09710AE65C7F2726F83AD4FFAE682982FF1D658ABE4A39927BFE1EF69E59D9F +6E3FC66B37536297759E9896040F7220FD750AA13F1328A850EB200D2DA2A647 +809A44E82745A6DB8A0F7496601E96E379AEF23D64DD42720C0CEDC0AAE2E93A +603A155CD6A023A629A7BDABD12521947DBAEC4454661158524BCEE0C1B754A6 +73154CB1E5F3C0096A51F7030D2A06C44FD6BF296AD375DC1F42C06D0C5C8291 +E76A3891BAD7B28A34B8765EC19F9CB5EC916B755F2DC2A00C05B583571545C8 +835336C7C849FA1D396C6B99E4097AC99BB90BCBBDB3CC4FB8656B5C8514C1B8 +479CB19A17F28132BA1C106EAF88C4646B5B6813BB2C0883CB59CA8B3A72D023 +43FC9716B920D778B095DBB6D8F3C61779DE2D95667D7FAD1909D38B97D97712 +12F3E45C7DD062CDB83B64C9D847992C1FEF8B02FBE5B2166CBD8AF8B8BD2FAA +0B9A061F77128371BDE3B60EC51916B443AEB565F3D87694FE8B08C6EA3EE340 +EF71BBF18273450591B3BD5E0678897FC0AC66310F723F5519E25C424A4A49F2 +347275EF962323963F7F1BC549BBEE2C50DB4467C4AD7380D2A5A62623BE31DB +5D3C332DBF724ECB75D43DB5DA4F9A4C15425B7DF920B56FBB38800C597895AA +84AC2CFF3C2E2BE2974706339230E76CEEBD2D561B34DB19F322A3635941C8A0 +983465E871F26D1FA888521213DD4A65194880653008223A7114396BD5023317 +60C594ABB669CD68985E4047D1CB202B1EACC98F343FDE7CEEF020D15B677C2B +9930149404F024713B8F3A5B734EF4FD0A7302A8A27F742A848B43A4D6B4CFA0 +DBDB96466731D94595CD7FE4F2F92FF8A06818E92EFC5EAE82D8ED2688529F88 +F26BD8ECBAAA3A5CBB78FD55FB93C294116ED89DF6E9B9388289A891C938B5A3 +7FA78A55340F71849A259AEDEC98663B091C32B260B1104C2314786CEC6D6130 +A132BE551171EC6C89B429AFE2605A156F109C74B428B47E50EBD75A24E98AF6 +146BDB01C7EA6097C47CE852CE8207FF9777ED10CEC938096BAF3B2BE063E8CA +B6F0862FE612C86BDF0CAD71D6DE93C3F926D321A3B255FF4712636E4C4AD6F9 +CE6CBDBA5FF88D8139C1A3A4B5082ED829C7726B93D65353DEB61713DAD625E7 +5395AAA2CA119B35FBF487BEE6AD302DE8FB2E7FB87EE3F74BB1ECEE6F9E9FCA +D0907A6CB215993E878E86B7DE8D6F4F4074EBEC25F3E95E54AA26BE128E2EA2 +C63472D00C2DE569626641AE2056F4BD0572A003FB2541F38ED4E2751FFB5AE8 +329A028E9372993D239ED7D6C47FF041872D76354F9099F4E188D97E2B329E15 +2015E288871EFE83AA5DDE077781A9E3E227599D9229F2CFEE8BE7E803B4CD9F +1BD061D164AD451FB14C78148EDC103ECFCCB8C4379D7B319174E69301C5AE41 +F4FB9041A829D50305F5AF14E70AAEF997E0DB8413F3109A447699E1E4C25D31 +A73589CC361AD12773AF4A752E5C0D50EF5BF872A45ACEB5459C034480C7CEAB +CB79C7BD00CA3DA85D44128F8A53495FE8A03BD8B3E423D286C404C1BBE3AA3E +9EF094046F8B2E2975A4FF1575D29228C8E58E19EC3FDDDC4BCE2C64BF285DF6 +B5CD27B129C2CAD21B2B161DD7285FE0ABDEE0D89E417F2AFC0D2C9C548E6976 +4F616D3087C787BD3E5E4BF2733642C89C8670B595334551884B0F85187FA290 +C5731D47994008386547892A64CD3B2D9D93E4D6114131410D55939758291BEB +B98BE5147BE27BFA25D69F0E7AA5BE33A846D2ED2BADAB1F2CB58598A25CCAFE +7451524CB3ADAEEB8C149E081778B8189175FED8D8A3039DC126314700F5DE1B +B46D4B82C6C57B27E78BB846C142D7C4241A9F52A822101C78DC32951F69E712 +C70FAF0366ACC825C53780BBA8202D430E1749A290CDCD58E5417FC2127C7018 +C59DEB2B0D6BE8D413C91F53716BAD1448D45B23DBE0841829EEF6296BD35F40 +ECD773CA57581DF5CDB984B1F00B628E30A9CA12F61894EF2FD1E8DAF2B545A2 +032C863869EA22ADA0B10D0110786F708E16F2EED84DC90A8EFDA2F6117F9E66 +823B9C87E64990800FC11B16D94C61165CAD784B3BF145974A839340F0AB5F19 +EA1ADD62A8B22F168682119E8EEFA3052264C716144203195372C05E1C5D85FB +A8F9927D223D5752A6F6A7A22B1E79D2E2E7F87146A695186B8191F31EF99E0C +5A078D7F0A43DF8A4C7E7523F3DBD7F915BAFB4B8F7C2AD35098B48201897A62 +2492947E2464DB2B18EACC024965695C529AEA79FE00844D07B301C0D332291C +F611A193CD14810C0F647788CF1CC9BD04C4512F55AB331F0FC7D93C64CD61A6 +A0946805D30D329899863C4A0F410FDF7FC059FDF17AD9CF3E5D33FC7E42A3D2 +CFD0D1237B3FD6206854C6A0B69956C3E6CA369FD66916AF99408B3A0F38EB1A +32AFB760A4A0296EE741F16B176AD394D7C0D70280B72B13FF17D3177850B495 +FE9032E9A17FFBE1B1354266A57D3C32C02A5072E86AF47EB9E70A55E3AB079A +F1D597E9D4D629DED8AA458C3DAD1EE47F44D9B16099F01B7152260AB1E11B36 +1B11A1F1AF87FF448694848D19B6E47C18B5029B8D8561B385AF9775D194E995 +D3321EFECFDCC9BD100725792C7DAEDABA4741F36837BBC7A50880B7039EAD62 +AF2A244A3D8A0A5F15AB12271E6E02D8B5BD126D2F0B087D82CDD9F6B54BF1DC +12BA9F8D10469A08B672E34997274464A09766CA6EAD2890CF21B4BB1F23EC79 +C6F9B3FFAA2C575D1C0DA63B83D1657D7820B4D8D3840792065DE9605811EF32 +1F7C21D6ABC8B822F07B115A325357A285B091EE15DB0F3A64DDE6524B3C0D14 +5CBB085A46C1EB6ADA9F3D3B8DCCEE00063443EF9D7B3930BC6BD6C4851070EC +7DE861DA45FE03258F064AF9DE5A5040510B65F5BA5230096A21300B53164C8F +E10A85164A1706AFFC8A5A95D88187D73525F71E0FDFA25680F23DD8553B2B4A +9E06AAC4E640F34A48F815AB6E0BFB7367DD9F75AECB48DFD3C79570C3571F32 +519EE201643B3A38E4079D1FD60E8DA386136A2CA71723911A016B74BE913BA9 +3F4527426997D00DB73EC3E8F6CDBA2D6AED291F0B78C203C07B98F27EE07964 +E389619AEC6AC60E628300E230297CBA6C4E2C658A78FB18A1691F6A9DCF7DA1 +E68C4BD4531AD3C52A7F7768C83FCADF396C7D04EAE51DCD3108D69ED93694EB +75E143D4021E77A09B4773503CAD6548D0F2F5B6E556C3AADD8ED8B46A0ED7B2 +105A740A522DBC4BAA55DA9CFFCF56AAB007CD23C1C65BFE0738C56BD11D3E0E +7102CF7D56860F9E767DAF1100F5A4D4E4DEB8DE95405BA14C30182A0D505546 +A7B8DF3D9BB2161D26DFDA798D67D1F10F5C84838452A6F1829DD46893C825B8 +DC11BF67D8277BDD2E85DD65F1EFCE9A8C95F46EE796CBDDBE2086F5DEC24E0D +009760D39D11FF43BD4DC9666707B842C1B7669A32669D8AB8418651E7010223 +4311A6C3B5A0EC523EFBF17115FDF9A4BE1860BE053D7329B1ADE08C34A8B787 +55230330ED98A920B1C2226397F98EE595968EBA9BFF39591A4BE40B2B951CCD +28A8C51E85B41C636E9410FF7518391DF7EFB6C21765A2B65BDB66CC7F3DC004 +D6F4C1A2FA4FD85A94445D29F6D8A2EB659F0F181D8601660EC824F4EB6DB46A +204F0B48F1CB890D0C807D56E3C8FED6280C8538B7347008C8BA583DD9A269D4 +B38CEDA90AFAE2F9C4480EB49A520ACE9BA16E3C7D49BB21D655FF64AB002016 +52204ADEDE8735D679FB10568D3890232BF6E7167E197F53A51DEDA17CB4219E +C83680348D49198C3940BB3A2440FF6FDFC513216E81D0AB7EC59A2ECB1FD15E +95F45DCA6DEE35CE41F5FE9116CFEBEC0F1679DF080266AC491EB93BA3604F3A +241608CD9E5C4995B95BDB0AD3FDEF18500268920284E01972CCA137ECC98C68 +63700D5D4E865ED3F222EB83144C542042A17140EF51575F903C2F28E48BD3E0 +A0E428ED0516FEE665DDF08C6B3EF2D6224162FE2DD4551810F9CD2CAEC74080 +77B9CAC6EE2CEE1F334E811227E05DE8F78898E7241483F2285BCB09BBD849D8 +229B736986EB80D9698663446733019AA2C480AD837EE8235C8CA7826435CFA9 +10FDF1355C3BD6CBFAD9AF2964D82D9AF264416C1C3C83FC0F1F41DF93EE283C +054318445D2791793D9BA0A17B29A3D7703A014835F96605E97397DC72B456EB +DBA14F4F5BEA92208CFB1D4EBC1CD4F0B6E8FC30823A4E999D20CD6BB846C61D +A7048E05E74C9AE644F9720545403D2CC11319C331E37CA9D77343EA55CD33B0 +B2328DD7CEFAB5E70CA241D0CDEF403403F2980ACD233D8046C8EDBE34D08A8A +A4681D3997645A3926159A4B8CC353E83E7E8E5EAEE82F1D0166478943B752A9 +72337868F96A40B386A9E6968BF6DAA0E1A671EF92D5929FCAC7470D1BF59EDA +5E6206FB7813C7ED9FD00797AEF53D7CFCEC4B5D63DB579E7066AD4E54B817D0 +D677F19A8C6891325B1BBCE3CEB9442F1F519FDF264EF8AC14EB7E1438A34F0A +C95E6C33BCF60A454C4CE8CA7BA9673A2E9F97BF351E6927915ADE40D02E0683 +AEB78281FFF69663FFDEA82B232BD5F2000B1B3CB475C422FF302043E16D1FDC +F79C65D5DB41538B3820AF578261D2191FC2B7B737F652E63E44EE5EF0379953 +80529B43E9F26F5A9FCC670D60B0D10C064EAF7FAE3D3B3F340771773A22CA40 +EB8F4FBCA4F36D58EDC16AD0B3F60BA1DCC063B421E9D68F9FA00ED5C55AD867 +DA91DA5C3C53454628410DDBC47D9E1FB63B84524708C6DC073673D33643804E +789DDA7FD82367A7A30FF2B368ED012E1D8F212951E91DCD82347811F7D3CCAD +E31E226BD217919F530FE1BB6705E97F9119649A69BDAF365D724795F8A50405 +F0259D7E11B99F71FBB3EECC0D78094813031CD91F1C967EB9B484C0DA0E4E78 +7A755FBE6E34A8F8C31137B123B95CE3BE0C77013581C12718DCCD65792704E3 +433E0CA83ED4532E4A4E5F6D98627E6089114AB162420623DD3B2F1992463B9D +1C200FCB15688A1F4DD1510066D67BD9EB4F85BE37AC9681F2B015C731EDF0A8 +CF741D446F2C9529B56600839DB5076DDA42B1E6A9E3630D01E1A9DAEB0115E4 +A46ED033CBC14204BCE7FA2D0AAF03297DDB13D207397332B2EDF5F85B60274B +B4A25EA459EF52ED1D6DAC2713DBB1F129E5AC8D58913886123D401B712C63E3 +2710DB20726188548581C8A83B6DFF2F3E617C4E9E902008E565257326A3B971 +5F90769F2EDD5CB9B2E460E8610B1FF975E5187B871627057B831EC62679EDF0 +E9BAF8FC3B56C5E37F19D048D32C11D9C32453BB17F8AF60922D78FACFF48112 +F034FB89B7792E8CF7A04B291E7926ECD14BD2E3C330F68205E2650257C8CCBD +0EDF78FC99C8D1A4272FCF119AB7DD2F0A44B3468DAAD96F09A7890B8CC9E0DF +E082932182F82CA4C3ED2D2CC5A31E1C3332D6A31BB90AFE1B6DE181D826EA0B +F0B5CC3AB84EAFBBFC96B546D6D2235AEE92E58925FD7B196648061E02D3D4F3 +6FE22DD6DD0BAB0A7FD5CC8AF8585187CDFC4F7C7750B1F2217FCE60F19A62E8 +7168ACE2E0D35426A5523EA7130767ADFEE9ED030EEE860DD6AA6884E9F9FB60 +3DC89D78925F266144924C1E8E4362226A9ABE08037B5D2D2BCA89AA1ED6BB98 +68A5E78792EC3F5BE38F52D115EB6BCECF12117ADB430557D38CBD73C52D9F9C +C4037C7C690DB088FC0CB2A97B265D405D3C92471ECBE9E1B82201E82E6AD7E4 +59679EFF804A6913C95B139F6CF4CF2A4A05A397D0202727D9E1AA2D934907FA +8DCAB985DAFA4D6BC2F863BB5A399ACF32B63F26F49D5376FB27B5BFC009F75F +8A36EBBC235049113FF7BFD88AF285A86C5277CDA20862F5807A2F1BB179D974 +2F27F506081689197C2FFF94DCC51ABAF464A00790A0FEB767035690DBEEBD52 +5766EC69E1CE6882A07C54DB1BD7BBD35F531B4AA36D253B02CA0342DA8DAC19 +2C27876562EBDA45C18B7DA973048EDBEE43181ACD191642174A163D900F754A +8072E1250A760475F56E1ADD781FA319C380E5F11E54305CA0D4A8213FBF8B18 +7BA061EAFD87E0B8013B5E3C3212055CB7597D48CB1E86D5B0F4DE1147D431E9 +5022519D3A3731E5B2E4352324B184F904567EE73F57C77E51E1E4C43AEA4E18 +5C87318696D5DBF5A42B5F5DFAF09076DC0DD4ECD3CD0C054762580CF9537CF8 +4B1FD2A4031F58473BE822E3957633F4F5AD03B558F4AC536500886C93F399D5 +6B76B5B39CA3BC1B5BCD656F8761C063836907035927C341828CE348EA8B89AC +8F8BAC1FC7F3D17CC180226F1BC4DCCB6B308F4E9726DC39C7320E8EDDB5BE6B +ABA56EBDD1935DAEA7A7CA16C70BC378B5907B74019C587E684E7C9A619AA919 +5F3DB251C3337F75298FA247F28D6EB37C299F7A6109C9C50EFEE4497B96A7A8 +B14B296CB735C41F8B27F9AB9FC45D65B636FA5D68B90E1AF1E9A26D9E69D16E +B9267DFD51557CD0E219867C89BFDA0EFA22C6C816D74DC29EBEA616F6FDA1E0 +6CC165972780AE547DA592601EF1B1DBC72B7D2833B0315BF007734107795818 +BCE537F8F08EF8804E5575DAE43C5FE198A720DFD88ED3A9B18AB5FAFCA8A251 +3CD9D36055F1CEFB6308F82C9C1687377C0D09624D17CB1EFD32F461E52B04E0 +03CFCE0E417CFDE1A43218A078EDF6C2650626FA2C05D442AEFDE027B912A241 +9CB00C5698605B63B27E725F9203A8F3F9BB87D93A0364C819A7DCB60439E329 +BC0C5CC4271B5E2F549E20551D530F31253B978E02040D4EF86001CA4EA344C0 +64E1843D354DE6B5669376AD252D33137EEE92220832FB0A3AC7A18A9EAECED2 +54BBB47C88FBB7CACB495304D14BAB14A420B42286360C27040F98828BA54CA7 +CC4A07CE64426805353EBD0AA33D0269FE3B9095F351CC0D93D513EB61C02743 +0F2AE7A19125BB5AC7A57F25CD885C83352D2043FDB32B0D0DC0157687A7C7C2 +44054ACE2D7FB1C09BD5F86AB267E94264F6846262DA78290370748311C9CB88 +61BCC56EC994783DF78266BF5BB7758DAB6A22599E8BBA3F8B1D231747CD66DC +826BBC46D5C10D874401D52D26B645FFFDD40993EF09D0AF79BE48A20DF6AEB7 +E7D62AA6758EC5961E128844DB7D7018B783E48462ADE6F23423779E6B4B8105 +91C84F6845418BA9E5E37BCD6B40F38FC8562EE706A42A91D659501A0879CC53 +9C09DC52EABB9583F226681393A95422DC7897E3FD097D1F994978EF49DD0A80 +EF15EE526112BDA2373A6F58D08C3EB4DDFA96C0E5A79C6AF4F4778FA913581A +46DF8380747FF70F6482568740238158525F9A965F908CC249B30CA9AB46A1C0 +2E3D9A07A2A7ACF01E35FD8EC2B7E783BE36826BC22CF389091720AEA6540D7D +F1E033C8556B069B890C2CDA802A2B0317CA7B6E57C81393D8D1DAFBEC28F705 +AB85FD4363D28A91775DC30B57E9B4FAEA40D6828EB1C7643FF9D7450327CC70 +2BE8A4C35AD92383EF21BA0382B655C542632986DC0CC315092B76E01757E5A0 +4BA45306D34FA2E63372CC1C49FF92E08AF4E428A54787F9427CD19E35451782 +38063D12A452C4C56FF4729AADAF6941FEEC1EE994FE62D2B94AE98B1ADAC457 +0E4D821241CCCB9819132167EDFCEB21DF992E164261D7F27A8086D67C0A871C +82E23E67B6FDF21443AC1B98CF4A2032FF0EAC2EDA699F4648477AEB988B3436 +50A6E408AE58596742ED0441AB7FB5080923A95A02290394BA7D4DC6F8E5EF6E +490BEB916FC9BC7DDC8593A4B91C1F2F113C2308025F093EE92A1BBA1690E968 +A281404D4DE102FBB847D1A7FAF2D398882C8E1BAF477DF4F7D8BE8F04224DDD +A0432EFB39AACA52362724AC6ACA1F4C58D884B64DD30864F22E68DEB5D2B682 +C65DD9FC59F5B9F44B5C0D4757C6CD25D6219943EF7AC0FB0D225E18EBC59A0F +107288CD98F47825CBF7BFE1ECA391358E292090253CD64212C806E2B3ADD42D +399DC1F501F1AF40A7694200167031C225F966E16B5C3A810B56004E25F83E75 +B52F25AEE1619C67C28E3F89EAE9A7BF750F37BBC0501B4002F1709D281F5D22 +6D5E2E66C0C992BF0902F48EEFFA130FB291216EEA05EF062523C6030751A952 +C9D7BAFB83767937BFB7465DBB61045F3017FB00A5432ADE7EC1CFCD89000112 +72D164F26EEE28A6A91A557B418A019FD64A4CC40570FCFE8D2C7EE668BFB11A +C882D42CE1ACD6FAE49D86AE6DD1CF1A640F386348FC62FC3440899B8C12EEA9 +0094F578650B04149D09BBDCD15BD7AE974AB672EE6F8931CD90AF6B287F9F32 +3B75A7BB81B6C67761C8C89BEA8269E429EEC1A3FCFE878DC92C4AAEE1A50C77 +FE402002BF22D2131547505493E4E909852373D989F0CEACBF06710D985D5D19 +C23C6DC6D2ABF8089059D520E9763E5913F472B2A7457354DC3F7BA8102AF783 +B93CAB5A2453139B75BD457F5680BC848249DDF02E2F1A1DAFBBBDFA29498232 +B480ADFD317A6418FA3390E8342F8F567CD32AA137246B41BC619B14220D46DC +2B5B147D209868A2D8480B0E552B05B6FCDA128254DDEC23457A9A29BE40091F +C9EBB8ECEF64CCA005D72F1DA8552AB5B8712567A8DA69B641849C021B58BC83 +9859083B277D74251159C01C195F485576D9CF52C66A6FF84245E8D478057785 +06277F896C624DCBE20B14DBDD91AE0978213D92A498463C5E9BE73991D56106 +096DBF548B3E8D942D07A73253DC531334AB03A32E2E0DF8CD1B77CA423A0733 +977EB93B61DCBD2F599971F0C539CD505DAAAC4FF4954CBBE5E7DC7A9FE257A5 +728AEE6F92E1C2E8429B795F509C6EC8F73FBCDD12B4BDE4F82E980224A53370 +38A468D36E22BDEF05854175798A0587798E9FBDC4F9F6CA6B172F09F27314A6 +0DC1661D4B4448004F4059E488FF581E46B43B217B3404A135A94D75BFFEFCFA +508096A17CE0836069033DF56B3B22F68877367330956574AEB6FAC044DF5FBE +693DCFF7CE8E3FA89857112BB70EBD7CCBEE3A21D010545462DBE1DC1EBDCAE3 +9042EF34F850E71647D687796D4A2B1EFD48FC26184FFC92224DA46A3F3C19C7 +47723D27D233F4F91468603D4AD059478D97067432182FC26344271972EDDD04 +9C2B5853B91241491D12106FEF716C5FE831AF1E5FD1D677E2813EF90A4F342E +53452BD47A7ECD832B493FE18C76613EA1E5553E7C3F5DAA05D2E50F33178E20 +DAC13C1793121684BA35B0144505284E8F04C1967A72B1D7DC7E2CEA1D799DD2 +C5910DDDF946C05556B9844E3267F112EC981211C83107E0B449A1031FCE7FAC +4FF659E50A278BAC9261202F880C0B56D510492E30332D2AD665EFEEA02609FF +9B3098167C55D70F6338DF52FADE5AA11A4C81D7705965F5C22D615E797639C5 +C941E4C353AE1F0194348ED1D6507E262021A3DB6CFECD6DA2F139DB2881DEC4 +D82FA13C58573A06E4358628406CCEBE927CA30657B9C5162523D95837D06515 +D87D5B8CA0FA18F33193D8E8DEF3B0BFE2BFF7C22726CE5ECF7B1A2B0EE4C192 +38665C0831B300622BB6ACBA6A808C04FD49B25A497393E1FB4D6384E12AB40B +7C828C92D7AB820B0F70073CF2C3A200B69B0118D91717144ADF6EEEA847F86A +45C91609104DC1B95DE5D984BC0042869DF5CCAA5AC6B59D150919BADFAE9439 +432BACD52B6982D16291349219E692709F080316DBEF8D825C0ECA6853916182 +325ECDC5B887EC5987DA2EFA98D022EF74A8F76A4283EAECFB2AF3F3ED19CEAE +84768827470384A6383B8F19EB86774D44DF9F255AE0B827AB0806650E2107C7 +6D2AD71C50AA0AC1EF9F44DCD75C94F82A553C8A4E9ABC268A085FF1EED9D7BF +944DE41C8C27AF9CA6827F5516A0EF1E726A7DA43DFF1D2520F00354F414F9FF +5A03DBA833ECE07617F88AF78971AC463537F36D5AD5296F8F6FB17387A343FC +B8B179086FD9132D4780830101C9BED8A8FB28C74FC3810A8A5F94348B511A0F +2C49E0F3D65ACA880163DB791C39DFAD12999E73030D2442E6DDE3036D9D1170 +8A067467AE88004572BA1DEFA072C891FF95707C5FAEF4C1077BF695A152C241 +6380F69E33820AD8C85DD27AE106C698F890843B085D95F6209D9F33F6548904 +9060BA13506E76E744EE81C335651109CD0D574AB11A3151169C1363E5113BA3 +10A3A02EB182990D617AA81906177E34629DA2F4DA3310CAC751252B399E965B +3F40F5223DD79D6BFA1C7E552DEB5ACC3D504BB2D98CD0F1BA8C6041C5CAB47B +2FFA673C0D7F51ED04FCBD4D843996FBDB5D04331CFA1C8F84DA6E8E57FFE09E +F03262805DF48DF4BEE825F5CD2AEC20923E2756AEA86C3216169D4FAB40107A +D7712BDE84AFBB746040172A3924629AE9213852B7571DCD6FB0DE4C9781CEEA +5B5ED83BCE19D4BC4AC60083DEE913592048F66EE7683AB7B9E2F618A819448B +7C5AD01650DA15DA5E4B0603810A159E0C3F0531CE40AAB9019DE135210FC245 +28F3EF78BE835DB890745547C17EF151A9CAD669BD845EB2929F6BB032B3D4BD +74C6B512285D548541B3D31EA9CE6FB9B5CE029FD671F892135764F1CED34E94 +B97E1B65941D0DA3C69486DB3E31FED9D9858783B9FF0D57E2DAEE92223C732A +F51DFEB39E84DCA6410F7B50A38EFDEFF9D613E6C59E34EB5C0788D1F95B83BA +822B658259772C2D21316A14138C7F39DFABAA298364E9D9C22547C4362CC053 +27CAEE2DF4CF925A861BFD65561BF2EEE48D59893515612EACE87780F534BFFB +955EAF30F526F61704C58B10EA35824003916EA1F7E70164C497FD5199B86D6B +BF0387540EF42BB4A1C33E31966BFF107A71140E82B26363FA3D2BD5B76969B2 +BF9663274F5A49627AE6E6584F56E8E3EC0C955F1EEB573E9366574C8462C29C +9DD0E163F96A33C3FC17B2874729F22D4D11010CAAB13962F67746CB4F3948F6 +F4DD5FA123B87163F510123F733AF7BC77BB2264257821ED8A76504BDE953475 +B6D28A384504170BCB241AB58B7DD389FD493FE5A1B73389AFC137338E311A2F +571913F173821AC301B48D473D86F129B5A71F736DE5408DBA9ADFD01193657C +DCA79A5CCBEFC90E636259AAAA2ABDE9BECC6E934C780253AC91738F8C84DA1E +9C90158CFED3876AB9AF20D546E1E8CDC9C5A72382359E7282468046A2399E3D +2F648B397AD8192C9BC539114BD3FFB94DD3359CA105F542A0F3795FB2E54DB1 +5E8F3358C66B27E8F95B9542D55FD417768541B52C8094724311CC1ED629A85A +CF8415A973329687F466B3AA0B56F4FBBB67E4EB26B9CCFE299BDE8CF2AAE76A +191CBF31F9401D760058054441FAAAE1083B596F3112A538786642BFA5D25CB3 +3A284872BF93A06588D99043A93354F2C0BD8C2A6EB716FC164A907EA319E2C9 +DA8114B3E8DCE194EC247D0466E45EDDE852D1BA09FD283D6A08F5D885C83967 +B396E33EFBD3ABED8899DA5AC6DD3B271CCA01BAEC41F2235A4F714A067B41A0 +DA3A69812EFDE15D996AC58B0DAD06BF14F55C39445418A13300CBCF5496F6FF +ECAC49466BE570AB76FA24D111D657134777DB6F9D99952858623C21C47D4D25 +DECCA2E464246DBDD74E7F63FC9DFADF4C6A4417DE648A2B0575086C16BE370C +4AF78524192C4BCC8D12D8985869ED5B8B75DF781388F343B084FD769E6DF354 +5DE342B55E80121255278E85D19E57F60EAA2508B2F460947DA327ABE78B7284 +C36A2AF91D3CA8A3710D9B60509B50F558EDDA49A2667DE183DF4A1B97E64FA9 +AEBD2E3000B1DD803B490CE1688336026C773CC7FC082B3730EC974DEAEB3B51 +E4BB226BED9A29F71CABA299077BD326AE3469EC287A937AEF1D208C27AD7D79 +79DCCF443534B83EFF73FD7BED2DB09C7C22B4FAB99E95017F0179473B62C415 +5A1ED51AAE93EDBF9DF92608E4F33E3C6F27557D5199E59AE023C351F0CEDEC3 +288377762EA98563A7FA17E4F3527DB2E20849C5360E47C5371C87628BB2BC4D +B7D5CB712717DAB6C57C8D5ABEFD19C7EB0CB128C5836ACC395DA6AFF5E63173 +D9BBAC63F55E0D20C446E88B090AACCE9877055AD3113E207104C6A39E807D5A +7DE4B8BCBA3C748B5E999E66B6D3475142A932731A034E75E989C0A53257EF00 +C83CE8D5669FCCF68E1D9A28CC078CDF75DE07F9945C3FEFADAEF508C4A25983 +A5653E0B398ACEFF4ABF39B117F5AF2EF1B8A3E3E1A2EFFB4294C3BC30788A1D +2DC4556673A34769C5092E1EDABF471044F71D63E0D7EEE4D04AF6621C94502C +649B82D8ADFFF21CA21469532F4512783CF22811245372D5FF72E43CB5379BD4 +7D090B3008672FFAF8BB014DE70B3A4B523E93083D535B0326DFCC5900029BC2 +1C91120ABD1CB30DB2A3BE442CD1F57E171C786E5592B6B34096C96B9E02562F +8E31CF53D117604EB4938DE07E2F259CA405CFAFDC6307DEF541DF6046A0502B +8F6A7FE026C6CB1D3A13F247A1370755D9BEBDD0C372488A468CD972A0878F28 +B1BC8BBA7B5FE6532C985567A5B19978AD84C4E7DB8D423FD84CCE1CAD936C85 +E2C2953609E00A8DA50895943CFDD88482AB65AF636739CF4E4C758C32F54CEA +698F1700361711D76AE6C719E160A814F6EF9044EACE6323E7BB98521E53C76A +35B9976890A4B13BDFA7286C1D9B4696F131DB884CA17BCC7C6DA814621475A1 +8CF6A06B622C673F1E28BCD926AC3B898D1FCE038A4E29D073477B6E75F0B0B7 +358586B39E819ACA0323C52DBBF2CD9C887249C9F130CC17111E92A6F73F12BB +F2D2DA501E1678AF8CA0AEDC003ED3B5C9BCF57BA219B647CB9E8FE99E959496 +3E4D6C4FCAC3C236C1ACE4CE4B3F945A7D7588D26BB4FC7FA409254759E5C2AA +578CBEC3C67F5F558220564DC5089F3C5357AB558C2DBDB09E1AA2B429E23248 +710C53AA3C7A8F1C65D09421C8CF0549303793A5CFAF42DE9C3F5F3EBC6A20AE +6666BCF467CF9F35ED7582543C3DC76412C328CF1E470CF16769EC8253E47D8E +7BB1CF01E4F40093AB47DFF330F181F8E07A0D45B96D02898690F6087A2C51B7 +AEA787DBA52C3DB4A5C8CE25479C129C7452689372BEAE3F427A62B8B5526D6F +FF85E1E03697AF767C10302DC548EEB30FACF3E26A35AD72AB643D3C7CAD9C4D +01F76997E3E1EDC62B4797FE41A89C7045D7B279DEE79A745F5860D7C9E853A1 +44B66650472ABB354E1C92CA0D9ED31CC5EE2DA1AA61210B7D6CC902D085FF93 +E84D32FDBB7518099877D1B9EAB43E43194888BCBB3A9313FF2470291DB4B147 +DAB22E0A05B396871AD2A83E5889D34EF0E075C42ECB523BD8A87BD3F794C74E +5650B5EAA6B7B13ACEAA5296815A4EC1F5F8CE86ABE6339104F4517B2213FF7E +1368AFDEA2ADD5783ED189C7EEF0C40E6D064075CCD6DB085FAFD94C0DA6A911 +23784BC52A4D2EB41BE8C59704FE6720625FB2261A8F005F101DD541D7363FC5 +4A1A8B0CBE456EA4357601F6DC3D88695DB03796E889A37DFE2C35786B72A464 +4320DA670612BB1167F322360CEB9297E980F4A7045E140AED709A325EC62B0E +65D220518A17AAB9BC75EDA61F302C52A8DDABEF14EC22E1489867EFEC4B3E94 +AE769AC64E52422474DFDF41AA25A164318C1D640EE347658589A79A96B1BBB8 +825478DD5F12D302EE7E768225A6C60BC3B4F84CE6082907146C7177F4B9A2AE +346C8A798976951F92F64DDC2DD631746E2A2E108BFD7D97E5A7E513CE045D13 +04FDD2ECBAF91F7F02C5A51D1EABD8CCC32C7684AFF2CB496EF639C97B05C3F2 +1EFABF57CB25C633E916595061AA02CA54AE3B136FC35380EE9DDC978F2997CD +2114C9882189283350F8632B5D23595E7B77ECA33591311FECD3A1D7DC42A9D2 +D37B812F689BF99CDCC76B04964AF74C74F88C2452302B89E6195C36EB7E06E8 +20DB4DC05BA22A5A8E4D6D7362FA0A914DDC653942F3830D0B893150D7B61CF0 +AE01F3897BD982878835B602BEF760BD5D3FC58AF7A38C34574ADFFB19548952 +CDA6C80FA4234AF1F74B8D4B535DB51751B0F71D0AFBF2F5ABACB92551EC9959 +F8A94132C59F22AEB5C2040D692609AC4E2FA94A1CCCE69A0292EF50E7306138 +8B77B77DB8DD77C6D61A4F4AD35D39B361ACF5E7EA978866D0611FDCC7CE099A +B0485DFA7D450A0704896645A99680B3308D69DF0314AEE5F9393C50E258A5FB +3070E5CF19EEBD42056F764A48E8F735CC70C57E16EAD84E43E516DA389EC52C +DEE860344994D166AA3DCD6232F60E577BE1A5B9F51816712B5CD5A809867FB7 +FE6A7638E71DFCA4B4CEA3E2787C329BC79CABA72541714A24085E8547D5820E +0118802105B3902FFFB11C49B729A23784FF01B7AC94994E7B0A533C00C3F86B +E56B7D599345B58D17BB2C326C7014C3A2EF2FFB9ACCA369DC5A8300096394C8 +540D096116A8F2DFB3B89A0C85CC6B95D6A5ABE65BA0F04C5730FCE927E4FE8B +C227C339E3DFB6B3A3CB040078D2DCA437EDD6CC3BC06289CC1671F9A658F948 +D7062DDFC7A1B2AC033F478A0D5CE31476B87C821CE61446AD91F30F6F08ABC4 +B51C6CF972EC93728EA73F45C50ABB04D79AF672403C265E03BBC9011D5DB883 +AFAEA0C95D2837DE2EE78B8395850A31BD8FC47EA220339C91B8A081484C9B0F +178480E556E1EA5927D74384C4C6DD42232C310C21B7FBBCCBD0C2A022003FF5 +098063DB72A1CE2AC4974D707E05199CD0390E42D4768DE6E8C3D55E074E9F0B +A2480E83DDDAB38D00B31504E42F7A66B4BA6EBA8EF16E5462A5C3C0F4699CA7 +F99E5B6A313B889FB2BD394E3F61F3E6B59F50166263D6AEA1839770DE1E84BC +B0CAD56551FCAEA5F050AC51D5AFAB8B043A2B86764B99D0E5E8C83578151A9B +03C11D96BE2E816D28A6247A6657FE93448C92D5099459C305371A31FC1EDFB4 +0C43556D2D62C27EEF2C6AA9BBBD1C1A25386D52C38A2CE1B3E48D2E7EB79F43 +3695D90A37471C2E3A29E573D4C8871DC39D6A9E47E34740D4E1B7FA19D71DF8 +03D2A35A87667EEF84CF5CA58E3B86C5B93E5AC356388C95DE53D81B4044E29D +9A5975EDB4C462C9317AA231BDCA2E92947354F68E035D4EEEC80B3E76C59668 +311268D8774AA99AA66263CCB7D086976DFC1AC3D203C577409783AB13507520 +4108B4487DAD653B8DB264BCB1DCCAE5D813ACF063DC4620D5B44AF66241AF03 +51D18E16FF6402DDAB367D4901948E110D517A0BC5D1BF480F4D0174173EA138 +A34D7B23F0CDE3D783E894D399BD3528A668D9B3909AE5650AFB3052859F5D80 +6EED26624B985DFCEF54D8081653F3C27F2164B1C7D32626D6F1F5C03B15649E +F9F0AAEE29455FE4944350BA4BBFB3D1FC3BE879A6CDB775AE2AE6CE9FE09A1F +4A2ECFC279859FA95CA15F333F1B1815CB20CAB0C6710163485912E171FB2CA4 +08F8D690D14975331D7652C2AF29BB203F4C5CD02E358F1523A541F5E104E565 +ECAA2F0D45658ED30F9EDC279BCA4DAF705D7BF1B5DCA1636FA39E2C6F36DC8E +1D6716A79B1FE24C581BA13270424C4A9EDFD62F7B89CDA21A934A5DAABC40A4 +7FE0EC48377F05A542C90E00FCD9E198A8FACCE38918C4FF3C4177A6D0E6983C +450A306F39B2E4858CD73A25476EED2D29288784CA9502A568CD862AFCEBA4BD +7D3830E771921649DBC7DD4B727D0F097A14504C172D1AF4F6B13484AC92B544 +8E11883129F6D37FA81D156218A9904AFE2E6B4C5533AEEFE96CABEB46197CA8 +DD1E5794B0784DCB7FC5BD696949133C2839E880D0C46BC028D159CB2C534FFC +64664F5704F25C94C6B67AF7A8EC474F495F52694F302C22E9EDC81F05CF2A43 +49C7E2B7C52C3790227528A8C77A6B8F16BAFF4326688D614F916ED6E534B1E1 +4DC78591C5900FFEBBFEB124FEB8DE3363AFC002931A1B36F77C5A469675097C +9D0E99D670DBF80EC9317F0EA0D261F653CDCB34965755D2E496E95E2C3B500F +1894243F4BB28A17D5F30F19E00D6E6C78DABC08E3FDA0067ECAFD7AD0DEAB20 +043D36B4FA727E3552C30F4411C53359838D273C351EFBB7AAE7BD82C4C6FE86 +2B101E22E311EA72E352C52B838A9CB104F6063FFCC19AC3DB3DEDE67730090B +274AB8CDBF36095ECDE76A75DA2024E5686F265A7256625FC283307595E8E856 +8E3D75E9204FC6289B7AAE68ECC42BD3E3BE56189B360DCA6039C0068D428A00 +2082D084A54EC8D68744CD0852DDFAAB18D99A3DF0CC46424499E5124F177C28 +CAE74A564BF551958F259EC18C1DA1BA9514ADDD4A239E4F6E7465FAD08E2378 +26F187D9FF6AFF8AB0E2FA37774B38A7BA59C2D62586AAC2127A0B7E567A19A2 +F8A8B006246EAF1BAB8C6765EBA7DD7D969E291AA2230B0E97E6704AEA5E5E13 +CC56C99E80D49C5621886A32656D51E175CA1F41FD21001565805A1C43FC1650 +0C75EBA47ECA703326AEB89EE913CCCCB1A8B51F60382FD27E88DE85D01A67CB +103CE7CC960146CB10AE35D3C0906E705675E2CDFE6E84BCBAE6004F2B28CCB4 +D38C9DA29B0D0433C80BADFC68E0B65752384E51E70CE961145712A11552B52E +4664D794B50AE7B236393DA7213C282B5689A3E99A00D97D927F06FAF58EDFFD +6C326461E6BA78FF13A571F4D2741AFCF74A4B5159FF1776FA85FE1CAB4A166A +02ED170E565A277D8A3519691E4310D2F48430322719B159E1DED9A56178C3E3 +F6E3C87208E6EC45C82B25F7C0288A1B22661CEB9BE73E1D47A6EEAEC54A6471 +2CA818060CB8F6BC92B6F1C286A9656DA24BD6BD23E3243C665FB9791CE7D6C5 +3EFD28A1E11836DB8E93ABB7D528D0601103896B6EDCB540C284ED514EE1FF82 +D3B593377F9F1D305C8F8B2DAEDB1C2D2E5F4C461599369E1333500C682A23A9 +A894A5B2F33131C3AB413FA885A7A771E9997B2BFE3CFC738EEE1D52F116594E +718FC2BE0AD9AE08693C5C0363B0ED4DAD5CCEB87A32FBB0F3868968A09CDCC1 +52DA6CB8D2CEC834FB6450DEFC9D9DEB0313343377B8BABAE6DD8D132A39AB60 +D23F4E9BFD0A34444884960C23EF160F05B47AC50BD3029D930580CB4E49C3B4 +39C86BFB2BCFBDE2C949BCCD8CF503D84A3C518343CA97E9294F7419B029613B +8E2ACCDF445B09A348433E72BF26C9838DB07149372843E4858838E66666FD9D +AFF3FB64DAF5224CB86C521157991A494EDB052B998D120B4205EF2DA159E682 +1C1AD28E78A02C0956BA015684DE2D8CDF9912FC6C0349060ED969BFC2902DDB +E161957ADDDE8018AF97A2116DDCF5444D55A517E1F64126A80A57C284627A2F +1BDCF7E0A6679CD5E85A21917E8B4D0C0340130D4B995FC015237D02B20011CB +2532C17202AE6733C107604BF69879BA1DC5DF640052A1478252BF1FB051519A +78CF969C58FF68ADF8EF5B8C8CC85A74A948268F8B762ECC0390E339B208D29A +80DAD0AA878D1FAE36942CCCBEEA14C00BC9D16776EDCC80C3C4AF671875FB70 +C36CF1B42232899EF172BF7F40CD258572C37269E46C17658B20F64251305C6C +BA95875CD251EBB697ECD80AFAC9EAB8940C191A82ADB228C53CEB5131C722CE +A8C559CEE10DE02DBD7A6C899684F5C50F5D5C50BDB7D664F95CE8BD7C20989F +DC7CFF7C295EDD75A21E1E475FD270CCFB52EF0AB1FB73B71FC191329141B100 +CC5447AED536772198C109F980A41DFEEE2F7BBA42F8FCC0BB58E795353FD8DC +37D29CFC9A08974C6B945E3B12D6DEB7DF4B6A0FFB4677188D58FEC7CB042D50 +74D4BFF451BB44A8AFD49099D0591AA3A29EFC256430BAB5D7B54DAF5A677804 +9DD4BCA49825DA3A56EA4DB49D30F7303A9D59E5B20DA3FE190AA352DAC7D1AB +8F1A6AEEB733CAB373988192CF00F8BA8CAF791C0555A61F37DAD98D9BC61B0C +8831FB5B9BF1E43E1AEB3582BE82B31070F202B14A43D59973F34B136FA693A0 +E95B284D1F186EA681BEE6F51451AC47321F7EEF2BA41C57D991D07D68A3E337 +4202BA20E0380F631E1434E236C4162B58894D51BE25529DDCE1B9C9007B91FE +B904F3403B761EDA53AEB3BAACEEB40B18DA4610CF5D5B8E5CCB1E4A669618B2 +099923B535B39E1C064F5F79FD12B157E372C3DDFF2C1D741A2EFEFD8C68CF9E +30C612488E0994E2E77B7D380EF96FF255DBA5D1CE559868258EC52725C2917E +0EDFA1C1A90480CB7C73D9AABB11C172B617A6DA60DB68A554C978DEA649EAD7 +332CB9A737D59A1F98E3011D656023B7EAB2A7FD021A87F4F372B714B87513E6 +17E0D5E74FEB624160FFEE043CC3E680DA3F2DE732C8365CD3EBBB114DDC8368 +7CE56D8F51B4FBC2805A8485C50EEEE37E04BE57C7C213E009DE85A14FC3F139 +3D93452E410F5346F3F956DF3E1F59FF45F46DC94D9D521733D65FBF06086520 +12C4DE38BA6C5A75B3BE3024F786817BD734972AA9C27FB2B43F8B9071403634 +FDBC70257CC39DD71B43B4DB802D3CBEE91D7032F78D26A73D34CBC0E8B288FA +1819179CB82346A515EE1F7EDE4352ACB29389CC5135C05E936F476D1549032B +C010AAECC4C5C935F432AD2535C02A3288C575BC1DCF6F4D554A03D50B809DAB +86BBD2E319EA31C6C6096B2BAAC4B3E2A09AEA990512BAE476E9514EF8E3A453 +5C50826FD2D634F350BCFCB5B47FEACEEAFC68EF44FE0771D0685F983544C516 +CFDB356152EFD0FA439F13F5EFC084B4B07958AF953CDDB6AF77564399BA97D8 +0B94A4350F8800124326F55B650145D59B76D56C5F827DB1DF231D25D8842851 +FD2A273FA14C5711FD4467E3ED05DE939DE1F148321BA3D4A6BCE5E655D5E9BA +3BD3040FB41C180F17D15ECE812B26BC7A933577CEEC056AF773378CCF6E8099 +7143E7367AB782BAA226B06F951260C8B7C4F2AEA4F333B78F48C9B8BFD905AE +08C6885A168C1FBE98EDC0CB93ED7B8F8192892892F56C8D400D429DDBF1C0B0 +A314974E4A5BEE085AB14CFD5E289B95EC05EC7C04CE2BA9C2A27BB1D2F1AF96 +9F2048DE5E56F2C420EC4306B78434F8A28EADD5D4383BBF2A0D0DBADFD9B0CB +F644A88914AE6D83EBC3BA2A0E77D2C3FB2DC2CBC400F7D7442EF82DDFCD87AD +BF46285FFE97C68CB99FDC1B5F64DE6DCD298C45C89DFF699370F941BB54781B +2838B53FC1C5A64E964B7A69CE049E45E3C8C2128C768396D48F5042A8B7E0BB +E3685E96C31E68AA3B838271F299755EA746B496D1ADF5121E042B3FAB13FA3E +F3F23C87F93037156D55E5676F341867F0A1F12580B41CD81D80B98B0E5B3B01 +EC461CB7D0A8E17111EA65C091CF96C4EE40CA6EE5C59E512E4A97A16A329BEE +2D5ADF6CF764E32D8787E137F44FE4BF43C594437514AF5EDE676D2598CAB543 +79D01227F0054376CA6A9D7F05F6A5F824D66226DE2F558FB2F907763F5C603C +749915C54B32936B658C8C3223D0F2E5E9847C87B1ECA1E99C218A53D760AD71 +4D5436C4B6D66690AB2D35BBFAFAEDD9A26E2389650008024C7FA6BC5EB3DA04 +8D9B578B40D90F96E4462B00087F918DF2E94B18AABD0A093F9D342216D54947 +2ACC2E721C69DB892A3E48D4314F056C2C5973790ED064CDD9770E3F1838E2AA +204F255E1775679593E826DA9CD80BDA5D1959A7B3776DC4BA825BC72699A165 +36FB037D23A7E643E6E15C3670EDE69CA9D59EE9EA44282D758D8BE18A503EBD +07A4932BEA6B49CD96DF57472B0683F57020A238417DEA08BA779E37D80D5AB9 +FEB7E62E4C00345E1FC83A9209FD3800A6D6DCB0BFA92DC1BDB45AC7A352A790 +C12DCEEDB3FC536B44ADF567703755F822970C31D4F1ED0B0430CEB5C8DD1D01 +F7B6E3B3EDA1D63F611EAC45A0FC54417DF05BE44B0CC9DF9E1ED1AABF01ABBF +98E4B58774DF1EFACA1CF5F37BCC12366727362D1C6ED8765C9D2B08DBE32C4D +3C9AF01A1649D48B897915C9CB06C7FEA4D8E8C197338558153FB6BF0D7C0E8B +A6E8B10CFD6D623FA9E5F6672E79A6041E768A622748044CD84C52E374AC4D86 +BE7858E4E824147F74B14F2778261B6DD26F0F130C00C8FBBB2479775922DC00 +1733AC811F6B3E3B5FAECB7F8E70E24F7CA53D965D85A4DA520B209EBB869DAD +76F29FA86D8D3611F73CE8EB0C1AA6A9B1C948E368A2ADA2C8FB86EAB8E4BB73 +F097EE07ECB77A82E5C634F68BF0A11DF7CF7D026F68730B9EF1E199F589D55A +42F6A236D10A895105039876485CA1CCC9FFB595F24983E2A69C077351BF6179 +36B7AAD0ECADE6D0498B2B8D32BC4E13404FD89E0D2D71722664C17E4564055E +51C6D8CCDB9FD8B5E55B2DE569590021B301DFA5D75A332E1E745805BC4D5E04 +412D94FA26D6A914A955243B497052936E420FCDD747923C11E2951F82257404 +E7A0CD6DB68B0E9604EA31BB8187BBB2F0AFDAC7C96A8A9EBE0F6241E850E01D +14F0CEEF8E04ABA2B67F775FD209A1FCCB9BD1A40AE3414A14844E9C52908E41 +5AC51E9472A5DE161BA53C2FF58331BC267C47B6F448C77E21BE8BF63C973DE6 +622065B10C0A5DFB2DFF00D5899F9C4978A9F513F21577451001DEEBCA2E3ABF +45D777DBD8C5ABD9D95EC8EB15798C519AA846CB54654EBD8F0C1E63D097F0E2 +9147907FC794C2154242C4EBB20DD0A216272AF8E06E0581D68EA58E9522A7F7 +17EE6BED36FF1FB1750A06DD26AFB153275C899B9C465CBB3CB7BA921D4199FC +68FA599A3B2D95B4D86D14DD6F8537A560B952E1E51DDD31564C40E9E8E40D82 +FB0CD3BB03367424EFECB40151B0CFFBB45FEC737D7E3259568059AF40B94B92 +70A717478E3C741859BB8D463D83EF80AA05C8B0D11629EC498391F82B75A7CB +3EC6B37D52ED357C84083593756FC58692CB74A1DD3177DD2E709745DA91F215 +63FE735C7EA845580FBC03BC08C50CE7240495F83E305EEA8C7B1EC3FAEE2E19 +5876BC2ACE24F403C55EA03FF85FC0A78655F42FE0D5DFDBA97200AE023EC281 +91EFE71A99B7820339EBCF5B93C11365163F78C63CEFB38668FE6FD88069EA82 +25347234C5F8EEA69182CF45C41A69D7BC511F6390F82E5B4D1E62EDCEF2F792 +B5175AC2E7F17CA0259D0AD3AA522447D0AE47402EC080787BB655F40D57BBBE +5167C2A69E9E984EA3193F2AC4A05E0D9540642D98DA5F648030EA82BD83B878 +296D9CFFB42299C652DC0C136137F1B30A8435606DE19ADED6655B0E2DC3DE4F +94CFB14BF1C02E778D5F3D94003F11DCB39FEDBF094DD87975DC18348F1B95F7 +F8CEF1A11D69A0DA8E1C0C4294E83F66234391E338A268B79212F5954A160B4F +64176547446F9E41733EAC6E15B0002C5C19B61DB1A1376829DA08ABBD1D2EEE +80612A78CCB4BE50E1BC1D1375E7A2EEC03AB19871B73853D91121FDEF489065 +54FD33EB946AF44C36DB30C86D25552B7EABFD9E59C9F5672FC8E962CC104211 +2E48A45D4FBA37B183ED108B3C8C779DE2F1F22C304351C8F0F73F4CB6FA52A8 +03621D200562D5AA72709AD25D76372032C40DE94C8D1B2F693785B3AAC48CA4 +AD916681C7C60EC439B64A3EC319051DBC7A88235BBC192952D8879295B9A906 +E3A8EC35A8A6CDC2842FCB20B68808F2C306286B2B67B8B3C97B20EFA7785674 +75F3D0B5AE1DCF632C1D81B865FF938CE2E504AF58D68F9C8AF6E49B6980B4EC +7AE8DE840540DDE9F1F372D633693267E6FA88920E8C30DFB62C5715BB47F6FF +EB2EE3E8CF99DC096CD39EC17EAC21EB4815A27B83ED8FDFF277772B9D15D8D8 +13DA473DBD3304D6B9263A5B7AC83C3610BFB6D1AAAD91E8D3060BA11CB3FCB4 +5000A4149E155DC6A1071681758D3CAAA57248089D6617D03BBD1FDB364DFF3E +B6FA0E6F70DF712D65DB85E4DE579E8AF88B4A45D33DEAD4EEEB3B3415846985 +7568EDF6E3FAF81E508AF0C28B26248F12293D474888FE4976D9279C15FA62CA +8A4A49F485F6BDDCDFAA274EAC49CACEAB436179FC9C0052FE5703F8009CA1EE +A2A791E8EE92F03A1DA7DE09291B49906969DDCC2004E928E7906FDD5070FA4B +1A8A5B25B876C875B5F1008970AC3269D31A44B6E5301903D33712DFE1C35EA0 +D0ED4E2F854DE4B6E5CEB08910BF30A273F9A476EB25CEB9C5F7DE0FB6B8ADAD +032CF34A11C84F59303FE16C5D9572DB117F45A3373AD48FA71E279FA7A3B27E +6AC705EED2F5D80AA91F01D38F50BA4369F7981EB1663DE990C6FD770994130B +A73517F24C534F16406D3A04274223A47787472DD1A764541CB7B519CEC671C1 +A1756D2165187CC734CC113FE1CFAB9AF55580B429CC96824FAE18EFC195AB87 +6BBB3A85FA80D31BC196C2A9670C4BFEB03B36E14CCB8653D24B93138CEE4995 +89D2B2EA154011B0F9B16F0126AEA062DD6433AE979B17AD3FE35B463D20F5F9 +A3B0AD6274FBF30E44A8DB9417F450F4190100D237499B7CCB6926BD2C89D432 +FFBFB3570501B39781EB9214B4606986D992461EFC7EA267E39B1E2E4E598780 +D74FD2921FFA9C34CD2CD31B125CA820FA5AE713A337F6650DDCEBC23732211F +E0C6E0FF85001F7F11EA23748CD4EB02DBD446D33652273373F8C2D7E275EF93 +935698E37C2270DBC16F7D6ADC0F7762DEF2EA048534C79A6AB07F9EAD69FB7F +366500619E1D05451019AACB92EEF1F16F95E258D4E1F3CB8D75B1178B28814A +EA640A105964AAF973B38BE2FF11ADD66F16CC33109C7CE3CF95B54E823EE632 +BF77238C4C35134A98C55311D122582740753515EAF8EC29607D5D35B301409C +C99E8DDB9D9110B0003049FFAC8E8B7846B042A75889D0977459CEF744CE822B +AB889CCB091D74AEBF63BD329B330F559EB4E86EFC8192EA338BC599841FC0B4 +9DDED5107DF193BB80D6ACC884EFE30DFB9E838AD67AC006376B14223BFD88EE +4DB8EC8FC5016C30598F621CE59BAA722CCAE7F24128776F9925D9198738A246 +4A67B90F7F2FDE2DB326621A837782283C3002D26358BFE6C3942D5ED45D6453 +57BB6D02A2832AD9289465401D022E93533E569C6FBE0E04879A134526DA49A6 +51352A8518B5FD45B1B6CCB4F53B00056B89F277CFC333D8EA59C655B606E47E +758DE374FD9F3BEE2FDEBD1A693BFCA6B965F273919C90283D787E749DD05240 +7B85CFDB7680B6FEAB6842BCAAC32D7434BA93AE888440AC7AC0ACF35B9B4974 +7FF017B370782D75DE6A079F2B49E906CF67999FE5C5CFCF97C40F07E6BB0796 +336C672E4C4F3BCBF2AAAFBC0012985888C41146849384DCD117194118635066 +D181B5CCF43126CED07F99949EE20CE059D695A880ABB87A2CD84FA11A6BC942 +2D25EB0C9993BF16C17B8ECA834EE69C8D0C3EAEA4DA884058392FA5F9AA085F +35622C8371D8ECD9038D590D4FFAA725D2EC4A2BAC71140A1AA50E404FA74BED +AA345A92C49CC37D608768124CEF995F252C73EFB6A804755A42ACE56E0B0AF5 +121D2C584F8DF45777138748E8A49F521E5350FF3FAB9D10ECC30E07741260E4 +266C39BDABC2ADAB0107E05AFF0C43229A57E37075EE811D307FAE4C6B8DFABC +FCCA7F5AB96443AE3E23183CCFE110DBEF5B94D34131F29F02A465A222A4B276 +8164A4387BE0DCECCFE056A1FC2BBE2CE5BBDFD85F06500EB35E8D49A46041C8 +48455E299795F5376A554F78E148D676B3ACA073E6D6FCB24251E25703EC20F9 +442939B13A6A695182060293C865A44343AB9D90B9BC03D41A8E2A78FA4D99BB +A994982D08EB1340EA1D6309EC21D847B013B18EE054DFB7B831E37C537DF7A1 +AAB5EA22E24CC63C3B5E6269FBA862335B835449591F9C27C3EC9FC332FD9902 +B1F11250E14D9247BE8A086F1A6848B2878F2DB27917C43C82810C840C85D142 +F3A70D2637F1B7431C9FC09A57135E1BD5F6A9ECA980057BBD8793CA9E8AA985 +6E69FAFAF4ED3F1C9525573751B8859C61DBAFB24C99E0749F45A5012886C2B4 +87B3B74EB736EA0DBAE881377FC0BE8E54B7A24EC4E9679F7CD8749A1213566E +8FBB57EE2B135185FBDD33E764CB1425233E087E00EE7CF9487F709F01821FAE +D565E003318E34930728D305C6EC1A991596BB6D5CB4999D50B9BA22E7222324 +C1A355A8B0D28B59747710A9B77111C8619F3006729F6F56FE4842A47B89D022 +F13DB6CE26A6C7148AB76313726E33AD9E4F8460675F6CD45B81D2E79B043B88 +A51E76209BCEBC041B585CBB7C4BE8F56634B03CFB464D6730C6BCF32C371CC4 +D0C5125D70045A307C721FCAA6D7F2F5A4A5CE1002566B4C9E63FF7F06A9C9CC +4E0FEA7BCF7943285B3DA3EF64E74D5E2A15E4C34A93781653A39B5096B8CB90 +8EFF4BDA459405FD36B027A0B9FD5F36E3B362E3B2D480656389F9F93DF8A76C +A4919C0D9D65C679226843DFCE3DEC8E850B8F3F06AAAE7469DEEE63382A5047 +ED1C82FC96E08C5CFA99395200E56F8236AB236D3FD13135C05978C9F3B2442A +D53D47EF56CB0076BB4E9CDBB1F8D7F7EE360B0112F8FF05F8C463AD9CEDC522 +21CB111461E64A0AB7E188FE54111D716FB731E83054B3A6AF05881417D82CFB +B0D48D955B99D6029460A77E9CF73FF1967B2A775D59CC21A78E76B1EAF024CE +E7FC8847E58F5F4F0019B6BCA415B06F6AB7E8500A42393AB14C7792C3593817 +C73646D2881A3D4FEFACFBFC9E0030C809BCA5485335C333D928455D4775F999 +341489E7E12A6DFCDC3C2DB752BCBEE2112BC4BD1F4ACBB402DDE643080FF333 +977AA3EFECF27547458CB5CDE6774611146D2449C602C9C7F9DD3CA41D7DEB75 +7EA99AF5292CD39F0780656E5D1EA37E23F5630F1C829BD184E813DB614D3EC4 +B8815BC2268F64E77BC04B42418405F2946D0A9483AC0B817848BBAE8B953A57 +2E62B4B4BEB62AC24B8497D7A6F720AA412C42B24D91E7F1C336C95CFC29B316 +BC4476FCDBC67147C69F632DF8A2B523253F02D54DB44EE77962B2449188920C +1BDEE52E66D1DDBA644A51DC271EB8F430B058758B8847B7072E219623BE546D +2B5DE187CA59E247CD8C308D2A2592E1C9ABEEF9D1051D832D694807E4B96522 +D8E2E0406D28E13D0E496E186810CCC9488036952D43ED206B7A2EBE96FBBE2C +C0BC5FFAB93AE961F008A31FE7A37644AA3C2A828ACF77DFC17695D67087C6FA +2CDB32C7121DDB590643BD680626097CDFDF3CDC5265CE6C3639DDED190BFF4B +B5606723E7C167D6941A22BBA1E881E511F2559F8816BB28FBE8E4F7D176AD20 +D7498D8ABC8B949B7AB51B4D5212A7C41A70D618BB792742E9FC674CFD20E8DD +8C63D85124BA245F2E3B80213C0C1930BABD790307086004FF69EF50346FBE46 +FE3547A51482651F95C2DF83ABE4BC58798F48A89C840A936D6F6BB547BA5AD8 +BC6481D7F778C6033F0CC968E010166CE09950A4DF499E7A0F710518BD1DFE80 +85C637727E7134E3A72C477BB2723FEDA2449644BF2E489B35E5B876EEEF8F11 +2614EB57E0F3116E4E7ABFA3BBD54BE0689F06659CE120E17D5745FC6D3C1093 +312173498E434EB3752194E9A33EFEE1AAF4919E4B033E7F511215C295A9B417 +85A12B2A6E8C1241F9281144CED613417D40E971E0EC220487D6A76D1337941E +E89AB715EC42DCD8C636F1C4876B192BCE678C06C9607ACEA01E5CBCDAF7947C +E6F353A1D6367454BE72B6F5A4B683DAE079B9537DC24132AE4D60910E07218D +D4993B4CA3AA53413136B343AA108437520C65A816F51771E52496A84FC9E79A +A5B7FF90E58E111D0D8BD04D875D2C51389025534F244D66169807310689A09C +EA71E932C0CCBE506B4E945DB68032F84BC54AB793FD8D93BD4D2085238C11C3 +CF5A2A60DD98A2B8799470D22E1394685882A7EA4CB840E6E6D1847F1342636D +3D0DE32262D2F15D3321652FB0AEE3971601B4C7F3E345A5FF6C1D608EDC98D7 +368EB0AA1671B6A8A803E27414E25F95CBB0EE2199D47B00CDB9F66035F89C43 +E07E910EBAC51FC122060D9C7C21AF213515E6A0A929C0B1C89E3D0949E3AE8D +F6847C157317D2CF5CFD40CDE17451D1657EA981D5D51E1D07EDBF2E9F2212CF +8D37BE7236EA73E7E5A9B0D55D6C738870036113F7D0F16EAD7F78D797C1C698 +B03483CA4AB35E37D1AFC9159AA79C7AC74326011D1D95D6478A4216A99B3585 +64F8FF1D8B22A53E05E568852ED73F6FA1008915FC4134F73F40954E9A722843 +27BAF1D78839A16E8BB08FC613165A2D0C0F914BB7F2D5F389393218ADEC72A6 +7F367F6BDB30C9CD13D4C983176204A65009B04E79E73ED6B20574D5FE1FC594 +4EF1EAF62DB889D6A1265A40E2D99B2FE051AB40F9834E1F41F9A1E2771790C7 +EF62830CA752D5113C686FA426CB73D020457E86F7A327E583393DA1A9891833 +294CFC97D8EBEBD0989A708A4B4E69378095CE305CFC189483A1A97B1F263127 +081EFCBD5AFADD614460277292CA97D8DD3CA444B25677AC9C0865BCFD1DA27A +3EAE2D4B48C58AF61C509002D8F9BAEB2DA6CACCB91D3685F3F23ABA93B54490 +0F084515483313454EC23A5A3EA5461552F53729717BD7AB17B3270A08ADE73A +CE017A33B13FD2A514B7908D82B563E9684F55E4EB8BF10AB2D1D522ACFF5CD8 +661CBBB4C4BA97DBCEAD3A28B22BB5D2C0B8CB439F59F4C38796F7E91A19AD04 +25B686064CDD91340ABF0B9076B48BADAF3CE80408F764C75EDD874F22EFCB9E +58594BCE441A303D6AE7B72EA7668CDBFE643D6A4ECDBCEBCC44D8558E027A61 +A81A39F781D5E46847E5188314C4B561267BD081F6C20EA05EDA07A1EC221437 +1D0B4B9D84EDC755AC53D82BE73305DA975B4EA653648A73B910DB47C3B57DB4 +B178ABADCA8CD61B2A25C72B20D1223CFCFE373F415F97D16FE4C78D268972F2 +4A4B4BF673C4BA4E4DE340BB4976B73AE8AC1E08C5A52C243DF3E072F07A730A +D7FCE66724F9BAB9794AE10AF336981A7AD94DAEC320FA8DB2CBEDB47A1BDDDD +7800611FF81986772B41D319BCBD124E80F17D4E40BB5805015F9C23823C0CBE +62A8460317829697AC82289A386F1A190459F7362E81FC7D6E2270203A33B5A7 +4F9767B0FFC460E087DFE722984B43B458A4E73AC9FC56DA9AED9A65890F094F +82D687305A3D00354EBBE749C2DE0837A3888E0D5FA398114774570ADB8E4057 +D854C929206523F9F0E7331888B03712ECEE7AF3C13006D62B4E92D4613E9F64 +4D40AF2A26309EA7654E220FC086F508AA0A39CDF2270D9A2B39D35E37BFB1FA +9927B95931BBD8687223A338462F0A676A60484DEA57C455DA582F800A055695 +0BFDDE316167610A0609D6E9D997EE4B1F4A100314034F2480755849F79D40B2 +02F9A5C96100F48ED32ADAEF7E6C10B30793D3FC9E3A2301AF7F5DB183F469B7 +3EBD592628975F0C4B3C0DA4197D9FB29D27C4E1BEF6F582AA566064B1438839 +2ED2BAB0458F0D5840EC98AF3D12F18CBBC8CF9CDD57DA9A6C46CFCFC1F1651C +9EC05C2356F88DB05F8E4C6383E6823561CB32907A528D75F5E6027A8DD981F9 +53CC13371A4091FF5D2B9D9808E7F498261D044509D2FF84B8102FA003349D6D +999B2EA3426C490983B623F3967A052553704EBE90DCA7A1049AE400BB8E9DC6 +D501AC2C0191D0A69A776197DC1AC0EDC5468B5361AF295A14A1DE3C0E537923 +725ADE0CD1EF815E4FEA1F34A3D99FDD3F173FEF68E6E6C86DC9591FCD4FAC58 +556421B1F9EDA8D691A26599A90A42CEFB5FADDAAFCFE1BA16A6BA39F61605A0 +083D08189FA6F3A240EC3ACCD2B299462D61EB8CC990C3A1BDFF795B3B169292 +39516AA481450B241619AD0EE52B61EAC8B02394352CFB4CF4A5D0E4B995A601 +7B72EC5ACC321FF7209A4353FD3F84193C7A61023A43E6380B8CE0D896B3F1AA +8D4DB9DC4B276B9D49FD5B12F1F4CC4B4FBC5D53054FA9058E71DC5136F97236 +03CAA6B7B1F9AC78815AFA0AFA5D033F2CDC25E2286AFAC265C4ED1CBED6F041 +205C9D3016391C8793E0FA82C4E648ACAFC4BE2AFE540AD755DE5ABDFC514E5B +2245AD3676EBD10297C478104076DA49A38BCBD49D08D2C85719A9B90E632DF1 +AB4637E01294FAFC2E2BC9CD348BD9DA97E10CE011E36CD6917A475311647D78 +6DA5C30381CEA978FE554AFF9F617C7A0B6AE6AE810F3C4058557901E543A2F8 +9A15943645132F72636596FB788C37570D7AFE33ADCC51F99BA91E6B65BDD61F +2A3B2C5AED0CAF2C4BD49CB8015BEE8474A60CAB18129B55DD7E0B53696B019B +B740B4B76FDB3B5287261FA69D1644684EFC77E510309CD84DBD2FAE86FB125F +F3D66389D981A13F3F3F7D8CD367200C4971CDB540F3E29786AC26396988535D +38C05F4A60C2D6E0FF082B97467F351DF5790EA07D47FA59BF250E6B85178B44 +AA539FAA58664FF88A7E978429D49EAC1C841360A546292250908EE368CAEDA5 +BF83B465FE4122F6F607DA2FB6898E06FF5195233DC11FDDDF101F6C214F7F53 +1F33A3C6B327C05ADE803ACAE2B7D8A9DF5AFAFB091161FCE7D4C357FAA71E1B +121BBF1D21C1F9DBF3175FFB1887EB708D80407001C7EC013E949666848163EA +0A14A4E6ACCF35C38A5A0AEE4523568E99E532A8A81EC6F121392172A8DEB79A +6484ACEB86A37A24E33F7EC2CE9421F6FCF9158B6ED5B215F827B192C77FBF9B +53E425085E3C4C9CE151825DF3468AEA61B51A3F58CA6DCF4B5BE79F8C48D5B7 +86A3D50ACD7931F8B22CBEBADF1BC7A3E1DDCDA235DB2B5EF8F85C867BC3E409 +899A1ACBDDE155A62994F561B824768213639CC914D2614B +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFBX1200 +%!FontType1-1.0: SFBX1200 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecbx1200, tcbx1200, labx1200, lbbx1200, lcbx1200, rxbx1200. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Bold Extended) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Bold) def +end readonly def +/FontName /SFBX1200 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-223 -316 1694 925}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA0E2F461BA16EADB32842B6D00C76F8A3359BAB9 +9CCDA63EAB4501FF88DF4CE0D9DC9F071B528726352196D1D889EDDDF3B8AD19 +A05A98215C1A2AF1E98BA6D25E3EE92459564B169EE8915C4C3A77E21AD623DE +4B78A134EC9973C88752BA636665292269AE953747C9605B9769A15E719E8036 +4E368E46C8FCE60112D1F5FABB556AD834401D6250529F3A1BBAA7679464B857 +F4746C58E043D98AAFFB21E0368B3110A911F98D0C1B16A668D8B3CE65260AA7 +E9A3FA32A95349AF8AADB1AE65C05D8C83A10ABB656256C77C42E4E4E7DE2DCD +F47BD54EABD080A844C8E3D14CC76E40490EAA3E94371067AE92388A8875BCDE +93EFD646F6FEAE17E4C52BEE62060D2107B620D9A948B3B3D8D3E06E63A714AE +B5932E76384D2E2B15A5A7827EA3A3C15EE807555607FFAA1AE58C5A95B6956F +A16D46AE1028B81C056BAEE21114AE2C87B3419663837BB87F79416D58E30833 +1FF10EF0D5B2112E088F63D9E747D792CFF5B74F2F95DBF5C54245C517F937BA +90AFD6EAEBBEB6707C6C751315331053A0BEE3678476A7BCDA1F939D98923679 +067F136F7824411A8D5148998105E3E823D55A18FAA99F4AC12EF14C4BCA4736 +E465782FE9E81CE4F3BE271CE14CAC803470BF4D71CAA1DCB8F66E98C454EC3E +87EA1A0591FE3E17ABB7966756814704B71A38236D2EB8BCAAB70CA523FEEFC6 +0E8D2B42A7F7C95D006A98E4FAD6A04C18E8A25038A17FA33D0724A3A7605191 +6A1C448175C35E37CC63B84AFB8DD56C0438EF5BF8F86840369D28ECFE5208B1 +3AA70D140CBF6172F37938C98291194580F4E46B501146A6E4E30A8B4B52631C +ACB6722615340979B2C51F74EF7563DCF473340BE382BEC1EF09AE2E41E28F46 +D77A2E2CB25518C5AB7825AB4909F45A05457E3B898D3358330FCCB945C65C7B +77D7A2136551DE2AA7103D8C4022EE41AD579335B4A0FD935426E3046E845E5C +8F16E5E1D3187B1C219AF1125CCA53E95B0432ED1D2D1E7D8E99C9084EB68AF7 +1C569863299B22D35A6105099AC3BAF29BC012E4EC4F74322D640A9375BB32EB +477E0254C538A220FC9820CCC2FEC1DC4B9C061C2F8E2C89ACBF47EF7E2F96B3 +24EB7919B68D443679E69EA2F40078DBAB95BC7E3D32F68DD05909782A5CE2E2 +DB26F669B6C9D3732FD3052C4B4A1EADEAAAEB4173E16B1EB2F71F96830C0375 +AC11C6054B5DA36A1E58D7D4A0844A8D903A0FB86EAE56DA994803A19FEFCCCC +9218AC21ED1F901B8625E9546D758A7CC5FDC0D1C55BCDB22E1F984B73C2956D +2694CAA3E6F6DDFD318AA82BFC5C0655D4D6FC605743A72384610428BD56B8E4 +6330EADF4D1CE19E46C61A09CB7DF1C789330F59ADCF0219493B226C30BB6400 +E5B352318A31AC26E444B6BDAA79BEDEF347A3A58F2FDFB8DF16CC6765CCCADA +DD0CC437C5EA6D314A9A4AF8E253639AD5E97871313F29015CD4140970F871A1 +0B59DC81AD0E4D757CECF5575221C8A121929662E745FE2D7618C620C677B069 +B1D220F10C46749D3E72C032EA31294A076B30B139A6FD5A64D6903D4E7AC69F +71C63F1174E9C14FE0568AC6DFFCB8B62B46EB9EEA91EB94FE8B9E0DDBD18365 +13E7612057F954E575018D9D65598DE8374877374265EA8C144C8F17CB0397D0 +50F0A251B689696FBB73F3CC254C82CE8EC422209CB775F27C0256E1939E47A3 +412D1422A245D338BE71BE9900B9EE8E65092A33AF9873FC7031B45CDFADA30F +2718325EE43C66D8931BA1BD1A4DE784C198CAF3F63DEB0CF132A9A970B09D91 +F40DD669504A5809102BA715FB1F8BB17553198A8AE3DEED427E54B39D992B69 +316D70CDEFE83FE96580EA54B166C8DCF369EEB070444CB38F043B56B4C1A3C4 +38671F8B86681A2F346AED2246637DB49EE91932EE14C0E477D3E8BBF0A61C10 +38F99110FBDB3D54F2F5ECFCA09697477E2A86B2FCDF88D303ECD40D703891D7 +D68B146413EA2F8D923A4F25DCFCE681616FEACCB5DA798010F76FBEBB3EC3E8 +F6CDBA2D6AED291F0B78C200B0B8BA902ABC948F73E912D0DC8CFFB12F535AF1 +CB97F7B868EC0355E52AEC81EC100F76E02BF5414DF19A62E23446FAA3207349 +5CA295AE424AFC2DC0504D427D0C31F80BE718F6080192581F94F9BCE5D19CBF +609C323A0BA3BFE6E729430FD1D777588AFBD43F9038A3EC5210029E84D863B0 +2AC1A7846C997C95508948DB31A6719AC6D4683A18520919F96124E221A54F1C +2C04EF072DC778B71F64D0C891BCCC4A0E79295A7B818EFA4530AD6C37580B95 +35D834F2983093F0F9BDFE618BFCF72132C6913EE4F6D347B263664AED0849F8 +7F1106CF1FC021452229867F3F40E126C275621FC9DDDFC11F715B1D4FC176CD +415C21EB8E3B400D051B27DA1BB18DF18028ECB39014ECD34DCFE9050DA39FF8 +72B9AD3BF599F6719EAC28B35964896CD6B7197C248A93AB9974D37793AB95AA +F7B997DF4234D167F6AD72D96601A10A19B080D9BAA099E65F64A37D3819D797 +A46CB8184DB29C1D03E2D3F307308F1017345781971846BBB054A5EB31D7CFB6 +ACB5AA86203987018C30EDFF33738E39FA02CC1B96ADD64F49F46B297070B831 +B28E116FCC747C3D08EB14B9C335EA3C1D5B0DBCE8614D29B082C90E66ED128C +5622A47440314AEEFA5457E09CDD4A5898426CDA76830635420557A90D15BAAF +DB12EE4FCC2E7C1611FC07A04CFAE9888AE49D0AC68973964AB81D0DF6887FBC +EF3A65E850C87E5712EC5CCA4172D2D82CFA32D49CB253F765B919F85B14ACCA +0807E0E724F14F77ACD252BA729213B6BEABDCCE4DEF92E7C5FDE8670BFFEEC1 +2A5C7E65E2FDF8F5A3435D9554C128487A3328C74B1981C4E332C0C336622663 +BE0EC2CF06179166F4443C2D1A2560CC9019F51D1A55BF7CF667D5CF08646923 +B0D5AC5B90FC43952A32EFAAEE178CDEB299AAA7F7BA00F3C55757BAC2F85E6A +33E5A1973EB48252EDADEFC166DFD5383A768FB94A67335CE1E36A85AA31C1B3 +E9B34D419A10FDC748A7D1510D50924994BCCE81D02FCBEB7627FB3A2D301EF3 +58D8DB9993888C1768D115F624275312C47966CDEA0744006D5618371F4B6130 +50F6F0FE8692661DC3D0E9E5FC8771B46F05614C4303184E1BA65506192B1507 +A524CC1B923780A7493CF2A9FEE41596F6F6EFCB3A63B40B24013B718F41E714 +D5AB6C1D4B56ED7A5D9C2EFE0D82006B5C832A97C82BCF1441FE030812442BE5 +6638A47DAF7135FF5620171FC17E0756D67BD76CDD55C5D7526794A2CF56F221 +6D58A02FE317D729D45511ACBC58B3334F35D2ECBA866518648D3881C777EFD1 +9BC6E65243F7C075A884DA8F22432DCCC3FFE6DCA735A3E16636E7B5603871A6 +8E03B5E5DCA8195C5F7C8F82282C323A6DD4FEFED1EF2E0E2A3BF369ED27F84D +98443C3CCD7A0EA116064442141A44C4785922E6749780826E124E9FB1DCAC3D +1FB12133DAB2E79069748067DF9ADFAE70D755AE180532D57678572AEB68710A +C5F00A51A04D649D3DE61C23CC48AEB365A9392F429E96F7B4C909E5287D660C +7A3B85190BF0176739B5825DF2AFA8DF7BB61DFE3E94AD63822A22B75AD994C2 +B31CC6F518C7DA72CC7E3972CBB753853DF36DA9D8B0FD6C6731BD6A335137FC +DD88882DCDF25D67D801FFB9324B0D88C63D583D1AA7FBC97578309881B27005 +11176AB680AE19B2275A2EAADF7A9A1D31BC4D4552655D1037F9D1DCFF0F5483 +53BEC6A1CD14814E47DEF2D8D467BB36E301F780EAF42E0BDB28F0DC78A1E50B +4027DB24E9CE51260C8CEE4BA8D1ED67C974DC17D53647484955D115688CED66 +5CD5BBA0C3E560A9F2D4DF74A8F70EE5FA7A8DD69160DD139F54C22FAF542BF0 +A352F815906BAF706F51FA87EDCC6CC8AB1E3AF2A0CFA08D7766E5BC2C591869 +D062E7A2F2BD0D6DC412EAB84AD231C3D4A78EA4DC878DE4AE71D14238985C50 +64F396954E99BE018CEDB95FEDA818B81260A3A8719E706965E71016BF8BEFC0 +74023131096C6E40A7ABB4E1E4AC28B8A428B207C285128F1DE6E4357CD98F9C +F03630005730241DA1028D255164ECF0C9E4231463C898D17CFC4D85D3543D9C +2963F996C1D91A878EEC436CEC405D7C9C636559B949E8EC26D0D6EE2FD2372B +6F41916F98062E5D6F6EAE145BF641B9B205E9C04B52183462F00ABDAEC360B1 +E0CBECC799B31C973F13C9C94B9367AD2373E1A6C04480D5469F07521A66020B +C44A5013815FE2C5ACD84E0135EED011E0E814C7E9B4F9896803D956EB21B676 +E080F490939CCF4ECE0561B376D4861E80637721767657674D70BBFEEFEBB925 +45F055C727430F2AE7A19125BB5AC7A57F25C5700E7E76E8B2A4672C70FF3F1B +A62F2F890AE39EBA360566AB7B65AF9C4D3ADAFAD7719B69CC84B3DA00845C00 +48FD1456BB3B666D69B60C930CF3111BB9D34A687C0E28DA1B2A14806AFA9524 +40F95E97DD9B83ED62E895C7935B3927327D503B6481CF7F094038C73AC80841 +8FDD922B16D1B70F8A5B2717994DE768C869A09406E5DA8177D46AE3F059DA7E +1C6E7A23487D200BF30403E3FA6A77AEF465A629E404193C392C7D74062468F9 +8554957799C993149DA75BB9DEAD6EAC451BA806E63928A2F6675A4AE36F04E8 +2AD810AA2EB948D48662A7BABEA8C3C06723145941723005F8EDCDFADDFAF3D5 +91A844395D365C1A48B76C85995FB0E88F782232182DAA7E5F6CC1E4C701F55F +00D576CE427187521F5FB63E9DEFDD229F1EF1A6E2242BD239A614A181441A01 +7EAA8F1F489B64430A09793A4DD6789DD382CEC2720EBCBF7CB89D7A07C614F0 +1A86646EEAD71C8B9B7C0F4B860EDFFF7A5ED568D5B95B2E9DD0AE3058A6A578 +EFC080F8AB1444181D9DA7A622039DCF4FEADAE7294CC29F9AE6DA24109DAE6E +4DFAB0F6F9C40B669F0DC952447B23622379DE000D83513DB6A923CC0B155F7C +9E29659C7AF52D0956C520A7F3F9AB330045767D5FEC2E5F3A5C7123CD26CAC5 +EB1B79381B7EA3D57A1B6E99B21777D28D11672B7D85B1A6AC77AF9011131101 +A92F8B830AB1841FC0C56491E6ADF40B94D1557AC16D0E309686416D97216425 +EE0D985041516A622F9397A7F140E0A0A26F9222F44D345E513FD2989E631538 +416DE2785A31B5232036BC9F97119216817ECF497DDF24ED2564DAA9FEBC92DC +F088C4C2859099D5BC881F7364E72F8DEAA256FC5FB2E6B017139AF488BEE9EF +8AF5BF6FE01F558937DC32EA3DB4AC282CB69985E9F6DFE0C9AE6CA353162AEA +3C1F168D4CAB520B2E92911CF997F7BB595A7DD1FB0641EEAD894385C1D0775C +9D5B266DA7B06C9E2844A8E61190672651AB181BD5E71A26648DD1F19711A1D5 +9DF01BA0530BBC0FB52692B023C4FC4F1FC3EA7395381534588D0E32EFC302B3 +D5DCFA1F475F8390191AA35995B50C4B3551F34047D3E05B0076C1971B846D77 +023F0B18EAF0655635E1B5711C32E17928D7613101E0EBE83DA71286F38F5E39 +715665D6C0B70E866F12C7D52109A85CF598BEDE4623E63B47031DBA54F9CFD8 +41A9D8F9FD7A7969EB8C39D367CFD48C7BD62F4D3D8AA47C615570DF10BA01AE +C9C185DB2E6090B81545CEC2174D0E74C9C18810A6C4B29C17D2A52FF8061DC9 +B349E2C5F7D1E86660D74CBD3B240784E3B99EAA31735EB56578A2C76C8755FF +56BA94671538FA1F7518FEB327428568A26CB45CBACE43314F53B6075389CAA4 +785766714AF4AA4F83D3E585AE865DFC9F6CB1D05B6D226BF3E078103BD92D39 +E2DF93E57E4890E9FCCA4DC7AA32B049D010DA64BE5532408858B3174D266F48 +650CEF6054BAFF70FD3EC7C656854ADB4B9D75D381E0D53F3BEED0966D7F1B07 +4E38B7787F20A80E764D2B5E499993DF1C0DE11C849D560EA0F8B9FC9798200D +72175BCF118B3DA700191101E61030191552277DD656A26A20102DE05AE4CF51 +C7AF1347F5A1CB88DF3F0FCB211653A1538FAE45D1B02EFFD5DD0973531AE50F +F0D080CDBA62F8B2411607F6C61B9AA805D032D7148B9DBEAC632E333B5F6AAD +7D508EC343D683908227FD369C87D306150C0C99B8ECB95428EA0386DA93F881 +C2956C5277DEB45DD711488D92D8CACB5D9E56C30E74F651F4A3453C96E85F09 +59231F2BD650B07D872CBC01CED8DC9C73C8B5449D14A1FDFBBEC0ECBDA834E0 +6F7E9C4D83910936EE9A60B370DFB93E6B216194CF4FB6CFC3263E56A8E4CA39 +1A88213728B8ED16E6C408169D105E4738D58378DA89C592AF2DF767F2F3D5B0 +62FFBD8B34345A8EE0B0EF884808520A08D611A8FB3227FC036A22E2BEDBDF6C +F368FE63616A250EF96C8E56A873057B3581076879890C487CE1296FA119DA6A +B0A05A8F919A481121701660B9C206804F010A48EC241A28AA208ADA4EA95315 +D73A846D1C8E6E3F09C30215BCE7B2A5436B602E3125D2A68A1F21A196C4DAD9 +C5C5B4D0F9DCE465E3CF3A52C23752C7521FC5F083F8A9CA4FE72E693CB79B15 +2BA0AC7D57815E4D981E8611503645C594E901374DD13B69770125B5D86C6B09 +114D60746A73C286BB275AA6D6D566D7E25A9FFE7EE7B8EEEBAC121551249FFC +66F5665163DEF213C2D098E20EC3AB0A7E7AB61016AA9C2C13506CAAB4233E69 +308A3FEFD9FF5E43A57306430C6AAB94B430C15D4A66AB1F77AC6E82A8E045D3 +7C587DE0E0053C92721C1ADCFD865B50300F7E066195A57ACF97F2903EC9F39D +BFE5034F884AF82DA78449D5DEB88390E7A92AFE385677A84D0963C5A269D0B4 +B7D9F78D9EB5915A8D468C8E04EADF9DB4946FCF8A2D32DF5CC083CF8244C847 +A68F1A9E8E34F3C15082163FA6F752E74561656CD378FF296A08CA420F7E0DDD +937C344DD11EDE138DDE758218B82FD38C1FF2E594DD8E0A389EB04854D6538F +7228CDA775AFFBA5C8C7ABE7CD203CD6138A1E4A481A602CFA2F7AA8A1AA5B21 +430B8382E3A39F91D15855710B2C85A46F7A08218207F4271AD7D179DDB5F1C1 +5961D374CE3E21FC9FD8DDBE03972DF7221777132B533F85759243F24513F651 +0268920284E01972CCA137ECC98C6D6913DEF25915569A9FD143DDE55E91EB12 +4CDA2C0D4BD4377D8DFB32D945E18B4BBF0A34504066C0422B4C058A451D7BCB +8B736119D3C448133330720B3B2CD2FFCE0795A8F4FADC964498334108E891CF +1571EFA019281A98DD5095F0AE49395782E68839A71538293103897076B651B9 +ED215C9E3B5CD6B9B635428A008356A8F4EF5ACD55D678FF43D5C7007AE01EE4 +1397E47BFE7D375BA550881BD2A6789DC45B67153BA19E77E1B9E499852BEC1A +10CE4A183FAD8A5DF5D41C16647D15B8ED1C07FC3C7F52B7D55F145E357409EA +566A9BAFFF72920B26577B7C6F2E891D09867B3411886FE5FB6F899C3A65B9B2 +7AB3D54C79C87CE9CF339D33335C04C80C0BCBA7AB67237BE62034552666D5F3 +B8554157C37407CBA3F8E77A0521A4134DC96A1CA4406098B8B1EE5047D5A37C +C301784B62F8C1D93B5F854CEB69CFE870326D64A0541BF043EB99AD5CBD888F +BEE739539227981BD44600C9F204654BC2ED0944D0F5E73A12FBC669ACFFBC08 +86A20B66A8E3AF5AC2275FBFF51CC4BBE2016A73BA08C68F50991F9B45BAF0AB +C51FCBA6005E7868F5665716286D0A062010FD16FF24FEEC1522E7468FB9410E +D6CB197D83C3C70DDEF545AFAEB3933DF9A5056807A02417B42911F0F9E348A7 +CECEA88F8966C00A9A045AEC20173D97119C98FD1D3422E9C6092E9645A32A90 +54811881DBBC1D6C481FA61C4478336F8216E2A47945DFF2D4DAECA436BD408C +D7D9A2E145D1C0EFF80FD505A1343EE93B2F77A10FA048E2AF677D7FBC6085F4 +EFBC288CEA7C77C82EC1AD34DFA827D69ADBDC44E4D1868600033A71E7C1B59D +C21C8AC66C898C80DD46FF0B0CAB3DAA1D2A0C00FF245F63628E49507A3DB239 +0B732BE5DC367F950824CCB2A4A916B3B8878AE14BD693874A2179E9EB0381D6 +6D058BE17FEA7489420C8E97830C3C1856B035C835C8A4CDDC04566DB056FACB +4BACA2959D02E0B81342EC2FD3642178B0DF7139230C890D960D7057B8F6A594 +98FB281199DBEB65FCECCDEB1E989DF7699E2B2276C87FB9E6BD5182DE75B3ED +BB429EEFEED3AD43FD1BA88F150685E50AFFB09FD38C67AAFC75D75AEF7264E6 +B3DC8BD93A793BA720FC9E1BE85384DC5B3E46AACB54C22103813F43C93564D2 +89DC285EA30F1A6F1266E95793F4D2F7604EF214712F0014A276289592B9466E +53AABFD4A9F11190966809DCA5135A9778357E38E82C359BF2E824E4D559D34F +06567423F521766A4CB1560254ABBBA7ADDD257F595EE9CAD2D3D32CB644E25C +3EC5BA5C82C87CED6667D2D408F05DBD9E7EEF98A81B687FA17E1A3496D30A61 +31A2A6E92519F0497494A35168628E153BF9DF9D5A0C999FD226BFC865D7EDAA +C903363388E5E7EE45B93AB1BD481B70E03AA46CC56DC6D1CCD640B9CBDC84DE +FF1E8EF8BD4BB447E2350B2BB7B7D49B11CFD810BB2D577E9F8AFA38AEBDC65D +F1BE872B2A0EAE2EF0B4E62F06F52B3394632FD5286C6B691CB2ADCE17E44109 +AAC9DED32C80AB46D9E62ECEE16E00B9AC939EABC3722EBE15DC1D44C8F0A66B +CBFD0F92D06A18B18ADE98EA9C72962C977C4C139566DE3A93DD8ABC94F1EB85 +982E4858F1071B1752EC4AA33E9D93FF7ABB5BCD68B1609598EB650FA38C2194 +EFBF239759B51A55A2431BC29E70AC3872FF000F3F13C577E2A78C1F987A5CAE +A48390EBD23061CABB81AC095B4F0C3544CD8BB6DD9820FB79AC002FB6434587 +A628E56F26766ABE8E92B5C1C1E9DB507FEEA7BF96730548DC1526020180D01E +A04A05CA0B3EE82DDC0BC62C1882F0D61EC98A2DD050D99629393AFBE0BB3E8F +75C2E314187B83E6696FD9F1613F5F05DE886608C1472F3C28BF7633D8D3E636 +A6C976E492CC234E1CC86A13962440ADC8C177800A3728D93B37E428333B5F6A +AD7D508EC343D683908226CCD7E4F29BF3624C56E9B9569477046CECC85312CD +EFCE5E9264F1EA56F5D1EA5DA2593EE44748A921E00631DEF381F92EE8E922BC +8CE0EC366CF367F367893C1D06F7B252BE2980B08CDB6B0222054CD9313F91DA +B4CF3CEEF89D948C3DFA592B81F8CDEB63B5FA1F9E2DAD637B0BE6C143C758C6 +95D7ACA6438CDF769DAA7E026602A7D3C2A7D2426383A84D455B4D3425FB646F +A85D72D2C3E8AAC7931329F0BB9D23AD79BC8009923186355E912CE920C23325 +A9BC8F0F4D3549085D9B10FDAF94DEA21704F5B99378373371341CED9DECAACA +795D4BF354F709105FDD0CFDD1E4AA4DAF2A54B6610D97C22562BB06F6828695 +9DCDD6E067AC65BC0041A6D7761EFF3FF400A1280BB4D0EA5778A030978DCF7D +8EA7C80D93AD19948F0086F6D4D27F66E30BAD240E0B616ACDE90B4B62DD6C19 +D08C25E59A2AB4D80E356F46A88D1DB6366BC76F01E5C4A5A879C3902CFF4139 +20219A9C3DE1C13236DDC2999269A118763E3FCCCE3D3A142696785405CD04CA +661E3E856170E268F1D4B5CA2294AB8F23D84EFF0EC4753A89DB7F7D52EF288F +A3E77FF39C904DAAE2210347ACAFBB92A69294FB68CE02C81FA13DB2FEA8FC12 +54F8BA6A302E0C9A9A82F258AD87E36B2883B114CFDEC5A2A824F59FD5ECE71E +79E5268D7DC5049C0F92F7AC967900FEFCD7CE742774D918F8509B02D307C029 +D465A7DE342CC39BDD7F1570FC701F111B48BE8429FDD7739C0CE880CD47BF7D +3C14CA769B15F393249B88C6180A7D118E0EE3E998E86F0B6B8662601341062D +C65C9A3FF0196C24F0BBDB66342BCD1E825F6B448E2B9761B2608787C84C6A21 +3F2D63E24C8FFA00BAA84061F97988E5FA87693B20BC5258423E018D5812C803 +FA8DBCCE2F48E70A97A461427DE34B1C2E81E24DAC917E30F41CE95DDDDE0E54 +5526304036ADD5F83295BD84733AD7CACB5D9E56C30E74F651F4A3453C979DBF +B27D6B723D95CD9F37AAEE8A0237BAC5A06FD49A55CBD916FE63824D86E19365 +A40E89D34168FE34785AB7FD1281423735903A45D0447B6104C07F235ABEE6E6 +A8F6B8B7CDC5EDF2E420A4E813A907A616C790A3309BE9D704B2037459972C90 +3DBF450298061C9F0F3C62648A1100A99B30BA63022FE12D3D422BCA0420FBEB +3B96EDC5D4162FBDB74E6543DE2D85AAA7AE837C94E8D21AA81BDC16CBAAAF81 +473F50FBC5BE37E08BD2C945681EEE5B8F523BE7F41DA9ADECEA3E1FC9EE13BB +62953CFB25B8DA0B2C8F2491821C9F11629C23FCAC11DE92721CAE7272B2D649 +75DC69CE776F531BC40C8436FD419D8C87BC21D8034AEC9BDB6AF9F7BD184A51 +FD613802C1A87996A4A8D5870507804E1E2865C1F737A0D2B62B9C8623A4340C +904D5178CC9EBDB1FB02B903D378CB64D9077C5F5DA70889935824184556FDD8 +D91AB1786629028DCA333E77BE2491842A733EBF5D26F236C7905A9231A517A2 +A5FEF9124C1D02D39B438090BB41171FC4FC8C9C50F2DB41C31FC2ABAC71E832 +0093192EB05F0000C5BB3A34201F0BBDAC958C87A991E6660D2B80D98D09EF10 +D525FBB64E0A20981481437C26D57C33296B8F64D6D4378C46D77A2EBBF5B183 +495704C4944729C5B09D5C79E3EB08C92DE1B47A57EC73E5A6B7F99C9B721D83 +A764A47F2B0672E7FD7A15AEEAA01CBF7B937F50E1984F3562B6009A9C06D8C2 +0A2BA49A9FBE2FEFB115D26C38C805097CDD1A6A2E0382613467612D90C4A4CC +C17B6CD455EB9F739AAAA54CFBD3BD57FF6D08F61C9DEB262EB54C02A1C16189 +8A2C8A3F555689CE61093FB20C4D0603E84EC63BB4735636F0922FE3573D2416 +506B1172349C643724FB27DFE33B4A8FAE55DD18BF3C69D2737EC238078A7F44 +D729DEE0E1FA1BAC8A1B4F66724F11989615849BED9E43439B6ED4F6B2856E9B +22D3B86C254690FB8082E3323092F064B9D5D7D350A8B45C55E1BD8C393FB239 +C1E568BBFF2A1F488F63BB6519B3531BA8575C36C2EAF899B491DC1361F1A58A +59720E807D9848F9B127736A545FF3B5BAC2BECFCE54057A0F2C1AC23A6B6F17 +429FA809592906D00BC3255F01029528369AEE9ED8D431A2EF6D33022CDD55B9 +AAC17D4175328E1E15A94639169FD55D700087CFEE556C1D96F879FA1B1F3F3E +0316755E090CDB32AC9010FA55F83392CE86DEE7DE78FCD63100C53F5A602093 +30540E614EABD09BBB634E9FFAF39EA4A876EF7157B2AD40AA171D527592E7B8 +0276C23912414F015B4BDF6EE5089E9F354FE92AD13B1FE8A920BDE50CB24B39 +3FF4DEC6EF30F5492511B260F09CCAC9C8471175499CC12715940D78415185EA +BD0593AB05CE6A8EC279E6FF8666504A72983529975DEF2BD97F4E938B919111 +106A66BB8D484B7F6D9410ACD7E07F9EC97982C242B9C8B75252CA06AEA1C213 +38B1A3248952D45B63F9231A00129564D0E5D0831D5A098E27CBECFA34C70203 +8C771B1785135D3599489D0906B278A8099E2C3FBC30B6018A6D985E2277D88C +C2F21D2D624ED5C448DCC04128BC545C1BFC366180BBDA4BD4E10CEC84DAEBB9 +512A4C1F23D410B0A8DFD6A7491E15E7AFB193B4425174FFABE6D058F997EA68 +FAB7895D90AC79CA8158D0F139FB83C5D1B4EAAAC60817D68298120EE2DA127D +E7102FE0DCB3A725413184941645E54D9F9E3E019DC7D79DC6013255A4BBBA41 +3E2D9FDB74073FB6E71E7B82F8653B704B84915990F6B3C4ECAFC7C0DCD28952 +B375E36C218EC9174F7C133E259BF550CE0CC5BBFD3A3CFF3EA00F107E3B1014 +C567D1F250FBB247E18F08C0C5BC56711C132326286FA2754AA4BA56C615245B +C5BB6BCED3B54DAEA1ACBE499CF35B170D10B2E532E3072DDD0CCE9A0815B0EF +E711C543BECBADB43EDCDF276A2D314E10F33F9AECC5123A7E5DE64AB8EE16C7 +81D08D95467A2291252082114DC3E66AF05346EA0030D30916CAA11DFF3D5C87 +216C447707871CE19E46C61A0FFC49EC2BA44C3FCB3CEC7CEB983E71575B2D49 +B412CE0CD8E1BEDCC24EA63876BB32BD25072954F4C9C38118DF29ECD5D48EEC +80EB581A40AAF521BB0EDAA82CA1E71C3C25ABE855F622CAE0AC2B1818758E8F +6617D338961276EBB0F34BC013EAC804D0C0EB6EAD22E7A89EF467190710A388 +E8401848D50488FA5A2C4F86E823D45B6333C19C9479E0435597D29E12793B38 +7D1A561C785063F6E76E111FCBB02DCB036A4FB33262E6C1257D4B3D077C73B4 +9D196EBBF5032B61B203A458D45040291ACDD0489C50D8D3FBA603B488B284E3 +770082B8D6E5AEF8C554BF7F3D2B6C47B1E99BB1A14514BD26F0479C985CE0AB +7BE3B18DC9162339892CF2921481013B09DB2CBDAFFA4B804B0409836B6BC782 +5DC94EE6F80D55E638CBF9A44C70524FCBC754098A7079F3B7DF6369ABDDB9A8 +E28EAAFCEF702EDC821BE8983FF2513CE3AD552A601AA5B3706DD4615347D646 +C50533601D79EB01563BEC2E7B46F86C3BB4F2B192BE531B16D36AD31A870CCB +24CCCF81B288A0116F3D8FD8E29FEABEE76B8F14693A7F92508F6E0412A41E73 +A4A2B6C8880A10787C38995E046C68F3BC612446BF887DB325FC086832D0F25A +4455CE5B6D99B8C1DC48D3586F00EB41F0D25096824CC1771073586046DE7E8C +EC9E835CF4BBADF2A3FEB126888D01A30E2C8127556E556ADE69BAF8CCD5E216 +E43EB074174C9ED2CA50CC0FFC36D54CD589D0094D294EE59C0022F4714B401C +3B6B7283508309582F5389CB9C59A1851C1B6FFEDE9757E235270D4F296E325E +2C3340CEA6D5DB2E3F5A250592B50862F718C60EAF134466B34969DA85246DFF +8B3E14436B88A0E78F29C1F6883606559569A0122CBEFA9E0081ECEA2106BD45 +D506E7D3C9175864E191FC5CD4F15E2B2CFC3464C31226AE30048E279C576EF7 +93598A23E515E9F416353EF850791DDF910D4F02C02AD8911D972EE2784DA043 +24E11B19877F54B62158338581D625F002C85FC3662B61C59F2CAEDB49BCAC99 +D8B7AA80AFD5F86DB88FC6C28AB017E63509AE32DFF50D4F7042C9AA0634EDC0 +AC031B299C2631506C0FD85C86DC10C647B38961BDCC70E212CAAB246290E8CF +F91AD615599B32D410938C5BC5DCA1C0522AB88EB6F7CF2D8E4EC0466AC1752E +3179FDEBCD42B45094306D923FD9794A192C686EC2D700497476A0589E10DFDB +A9F91700A18499412E687FD5B99946B95E329798A4BEE315D88D12C3E11D2DB5 +A000FD7FE31D8CC96976DCDAEF2AC983B42E026FE4BE324677B2F2CA1A7BE47D +F2EDBC9A4453CB1955C7DC8AF85EC3434F8E5B341493B4705D4196AA3FAF27F6 +DC3CCA9F17BE8FD563B461301684359F2BE1B2A81DFECB27C6DDBA41CEE576CF +9A1EC0A03F140C44ECC17EC3CB666B4465B507041379EE885E16DA2E1FDEBBAA +F53774A492FE07491FD16DB6B31C5E86B6216ECFD45D80420D105217BD254772 +D6796F2C32C04C8D49588B3A47FFFB9D62BE81D250DC6A85C3FF736F7D096DC2 +576D46D4474831DABAF863DE5007A991FEF25C92E70B5CCF7BC3F4F5A6EEF665 +746752968EA4E7AC23DF5391375AA14C454CA817A7EC5FAF3EE35F2B5E683401 +9CD6CA9CE7247C944B287C77A992538A79D732FD6767A1674AC7BA76D66320CC +B38246667781CCFCC4AE9C33E59618A6E75220EB02B24F55B32C48661B98370A +8187D941B7973797B3DE1D186C74E9E22A08D6E4D2A8411DC88EE59B6247F6C4 +8155A43619F69400BDC3B1373F8F2C5A5134CB03B15C7C15C8CD09CCBA759CCA +28A1E598EAE7152C918BC4B57BC0A009794EA031544A7C6EDBFE9AA18497498C +79B3604ABE51A37D91E281D341ED90A91BD5350FC7CFD0F734BB2A148A6B7A41 +B7538DDFCE913239143CB599C192208F5D19FF212A75D62AE0A07C254D847416 +1132D54F57BD2707948C0C1521D2B58671839BA547FD59B10A81B9DD5D9CC370 +1AB71B9598D5B896F8A6F0F131C5837CD9AFC3ACEF3AD4B0F61DFE6F39368982 +31E36AE41141998EA2D07E8CE14C9FF11C9EE9ED29C0FED84BB3315A4FCD68E1 +059F360B1A69081CF1306C5C40608203A5C668A58E1A00348E7CA36455F61B61 +AC9873B46C62EB9030C7EDF9AB704403B7C69C7A485C26B0EF465F8274455844 +14BCA564BCDEEBCB56AE0A7C8213C077613C7179F4228B8E6FA995119ECFDAC4 +23654335981214B246E31B8B23A9C7F7B43781C7FBDDC7ADE0C2DFFB46B02679 +20598F0876FFF7FEC54C41EF8510C1635EE67111230573426EA0FBFAAAD8D8ED +A7708B36DE376A843245C6F985A71DDD1C901DC70A83FC660BED9AF2BC871DF6 +068000297C975CA531A5D7CE85581044BA5486334EE04D10631860355A316ABD +8035302ADE860E08A868EC0D076E303972D071B660647425B1A874789AEA1B83 +2485F6FA6F213D782A86C04073D13EB04C001D7575DE9D6B47D82099F4D9EFFA +507B3CCFDC0B7D9F03D7D22CB03DE9CF8276BEF5693B10FC1CF4032B90B0B672 +2BE2F6E5318B544A14ED27CD197CAF8519881C1726257040F3D602CF61A014B2 +A4EE6C748426F5D0F49EDC8C5C83D66C2124FD165C29E7113A22DC9646507C04 +4961104DE93A574E200A28DBE62A95671644E889CB71E5D61F97C19F80871AAE +19B922D16A67574C975606F9BF790EA9A57DDBDA18159F64A4789885C50159F2 +793FEFDEE37F337A7BA0DB79CD5B5D1FB206ED3B0EC11204E340629D13D8FCE6 +DD1D0B35DEB6C5C3357E48CCE81E9B9E36F1715E22BADCA9D13C11D38173336E +A6DD0F7A0581D1EEC074B1746250759FDF3063AFC0B5F17D0DC751699D83EF68 +AFBD8E129363F2E10A279A203E6BB52BC8ED36BE67EC5EDDA3F3F04CD406A5ED +CCCA405F57D5B6D8CBAC4D831CC93A43308AF1C13D959D72C245D5099E9CE099 +9C08163E48CAEA2744D04C98C9B435137D4D76FB5A9958F68D0EC160CEE55B1B +17DBE1B7FA91E634682883B1145A9EC8CB37D718E34836439205A04DBB3106D8 +BADD31C832B4812D7BEE707306F09B15CE0D445E3531719324CF11228C0DC643 +57BE61EF14D92C2A05404CF98C975E0547F1DD3878C3BBE529B0328C37C2C551 +1D90AE931E819EB6177E6F543707F08634BB8963CC7A6EDF37EE388D1110BE9F +B1CF4AEF5FADCFB041A69B24475E8D745F77D7D7D783B2E4B8E94D2D8BE56D96 +C3D05EEAD310D5497F6B79F694C12D71893B3E94B7C5511E5983CA34766751B3 +E38A963B2C8C45B0F5497A879C4BDC972C9A85322C842527FB315AFD1EE312E9 +8680C3F090F54800DB2C7414F536328FEDB5C3F7199DB688BFB73CDE20D0966D +23A12CD7E7D3B1AEB1AB668F2A482E959895287ECB4E81C164A9DB0E3782E877 +1E3EB16DD6DFC68F57358C5A6A2BE8F779FBFEC09764D66A827D68029DC837FF +4366F1E5E72A5E75736B166A62F7D7618C741E62D1AFBA823F0F5B43A03596E1 +5AAA17ECA53D49E72D754957E2577FE988886B7C091C43B948E32AEC4B5B3640 +FEE2BE833E921AFC4028F57C8775D03E729F80FF8F954C36850CA9188DEEDB69 +3BAC1D8FA04AC61D75A31BC100DBAAF3FB890E798965A31AA2FF958AE17E8831 +F3D53C5CDFB1700490A3347C1E8C514A4040D577593D2B60F8F38DDCF804353D +5DA75B9D908A33B90169F22947FBF908AE0027F90F4D62BD0829DB4D1E7A7039 +3F396C08202719FFCB3B29B7086D9B22BA82B6E3FB77B37AB2F0C9B4E88AF6DB +84343C3BA7DBF80E6FA452898854A31E70C66D023F35828C3DA700191101E610 +30191552277DD169D9C9EFD7676FEA1ECDD569C14E19E1CC78C5429DBE1FFF5E +5EB2F5A7048BE25A767BD6D3BB772D7CD0FAE103F49744F3F1DBE216E8D8CE4E +36320A8BD725E67F6FB76611A9A7BCAD5CEE8489A7AEEFC1B0C41587DE88D192 +D052BFA0E9F335CBE16973BC44D6BE967963C7CCFA9E065423965F9090F99196 +3197C303F5FA3BCC3BB2684EF827C408A72604E4A7593D6E327B39FCE99B64D5 +6C2D7704AB5A1CB7076E39A99013EA30A53D7BF668B9B8CD11F31FB75C3E973F +69ECE8A891E325AB358AA2F8CC3862063C0BD3EBE40216C04A4A85727C01ACC5 +658C9194018A76C762254541460EF99BA58FC9EE3A5B49E9FB43285967F99665 +AF3510245864D20A3653490AE717EA1BC438D77DDBFB34F1F280E7462F9CD9C5 +4C348D79405EDFBF04645BC29946668818E8EDF429DE136CB1D5AD942F18F903 +763205E6175FED418549BA6E8B11D44E3AE9B74E0F55204FB97C70614CF1A238 +7717E3249D98D2ADF82AEF32D219F50CFD976D3249B80C647CBC2F422FD6051B +FD45172AA77A34950A9E4A59A7259F699C1AE92FC8FE4474DF22648F56EA145D +F24445F88F9E2E7FF9C17E26BBB3BBA938A66B49ABCF4637C195E588693C547B +A82AD977108E99FC958BB709D9B7F9F720A04FA6FF8550D1B87069C49CFEB042 +3C4EC060EB1C15C45F718FCFE554B315C6B061EBB926339AF0C748651DC4B49A +A7F51CEABF170EA5B5B8A3255917194335C06A0069BA25E3F7943F3D9EFBCAC9 +5467ABF9FA7372CB0FB5E36C2FA5A4FE8EE35EC97CB96B0C40DA917730E10C10 +7ABE098B1C760B7B254A078B5DB66390BD88772EFD0F5B244B34A8FC1ECFDF55 +5D5ACD2110FC33D924B39305164AE786097A5120A856C573291E6E5198F61C52 +2461FE3C377C0116EA8EA6143DD3338681C091CC4AE618C278C037203147770C +8AC1A844580F177CC0E867F9CB65F030306082BFBA5C408B11F851C9ADF7D0CD +1815EDE6AC49BAABD2CE8EF21D2EA1E6F349F9582D02CE50F1CB5BF892AD5EC1 +36764D6998473D5BA7706F6A46F43A33C27165317B73A36D2640AD41021E32E1 +0E4C79277A6E3A1C3B325727342C1D4DD32EC8021647C03FE8A638764B436C3D +1B2FA123AF55BDE0BD04F643EC2518FF1EE14548C35416A9CBCB4BC3539446B4 +23F3C340DAA4B86BCEF0957301803C8C83D0B16AED2F8CA5543373EFEE75F66D +BDB6AEE92AE62E079AF21D92DCD5AB41380AAEC80007BCF6568D1B64E7181878 +D79DD51E9129C8F85A0B749C11BF8DF18958ACECE64B20D26599EC442AD03E9E +66FBA12EADDCF236081A45150C3638075956BE893F13318725A0DA6F7F541DB0 +4D8E11E249C39FE779E9A3CFB52B8F8A625FE6A0C63C73A1CF1F0952F2B9B644 +112C2B1955FEA7D520A00DF183367DA82EEA2137273E52745F7B041718B42487 +54B4CFDB98A747CA964E4E347D730842C94BDD2AF7BFAFC8D04657383912C108 +4987D56BE4DED4ED92DAEB63787E8AE7646B58C6308E80369DB824C56EEDBD71 +6B5A94B0F2C943D8AB0042ACB5AC675C95C42D54E8150F7B968C179B0DD6B11D +2FE84249C21204467BF6603BD8139EB2EB8F51CB9AE3F217B0CEE0423485B059 +571D966783FF2449C8F0D98FE25D39BDFE4F60756948EED585D09B5B41E8E16B +C6C4927DA3BE0C7328480256C42EA5AAEB380552B27301A25D1EA72B45E22E34 +EF79FC49F660CD8E0ADA9C72F23D5218CFFF469B2B1D22F485778F65F08916C4 +C7CF94ABFE1A90496E2C12C123B733158E7967BD55615304D87F5FAFFCF6466B +DFC31B8493096CA2101E720BCDE68F36F3593C49367D676CC1BCFF810D98D055 +8E6F0A30534C204E0AA10C4F962AA966C30EA2113FE104EF10879DFDF55F7B42 +72EECA53C6C5EE760906C508F562E6B81E499475A43110E7E6E1C9955CF8B408 +FF11E536A602F74636EA4B7D9FCE42D8599FFD8786A214B111604B7C900FB95C +148B0EA236777DA7E52DE9AE3DC10AB2419404B1BEAC9628E12B5632CA5296D8 +D27AD4CE0044D4A3E355FEEA00E675EE1CF09BAD3D67CE580357CCDB683D8D57 +9FC6258141A292E2BCF58C5E6A63739120181C8287F9BB96AE424FC1C7C9F39F +B84ED49DB9F88BB548961192F7699FE091DC5704A2DB3982F58E3823236D7F79 +7279ACF134813B5A9C717215651E9AEE6A88D45DDA8F678290EC58AFDE435ACE +1A2B7625BA3DDF776ACEF55BC0CFC97B4BB7AA11692184671D39964A25ED5B10 +3B7E785B279441D36FA7EE6CC3B6FBDE74202769748BD326BF7D254A843BE22B +C3FAB9B214614500DC103D7C00FA6A6C725DEA9CA73EC46D952835BEDBB601B3 +F7E40B5B19748D836116E20FDEBDB200FECB934E2AC76DD3CA07B68E68860F59 +A5DAF8480D425D8DC01955C2FB868E73FEE8F91632286256ED3D1F461A8680F6 +D23F6159EED7AA11EA8A9A65D256B50819191D14C29536D5FF299C696A100232 +4AE060D3098F641E780DDDB984B6A42ED3E86A12240B31FA3E008D5F538CED0D +E781D8B06C736E9EE5C77E8CB783E9AB3A4BCAE40A3517C04069097B0BD28688 +6856D394F9B544C376B3A10AFF160AB319406EF43761B613BF1E2CA37796A70D +86825F14217E0F227CAE3FEEE4E8DF94566DD2EB84C22B4B7B6009F0BA170794 +357B11D9CD521C975911E4CAE5A8DB27B4F8A76BBECF1B475B666A70A6E69299 +A5226DAE135BC3DCF9FC58DEE337C336C9A0FCE66A695C359F15C567B6DC1B42 +44BEBB52F3AA7626E4EEA3AD2F5723AD2A030EB94FC247BEE113A01526604DCF +D2EAD792CF75D53C61CD8FDC38A9F5A60D1FCB1FAA79931D53FBA6DE4DB9D24B +774DCAC2F6C67C75FE24F7C97E51C2CC5549BAA40371F9CAA0EA8A9B8B078871 +140A9D89CD8110E0EDCA5E486AADFCF1AD794841D6430F7E6383A8F665A57ED3 +C462FC74AC309EF77F5B935BA0818CC500D8469B5885050EA4B4F79E1ED3E1FA +DD1FC0BB2E861E5C5CBFF99BB12A7B50046526B5DBB00FE753EBC9C454DE3A85 +03150E18B736400A1C7F82687CBC40713C48F0E8AF8BE8CFC5DA740AB393F73E +1C2D03EB0574F3212F79B2BA22D9C2B0CCC6DA02749CE92DED0F7AB23331DB4D +EDEF8558F21D4F93CCBF8A6EAC40B38391963F875AB81AB2C86498C04B611E9C +5AA9CF26C3714E4EB79AC88A60A79D9CFFF2D0F88CCB72167D27D5879C11BB21 +837C3C25DFA63636F714FFF397A09E7FC8E3F838113D45D8ED6FD5B86A28CC8E +E82A78163977C14D920FB39A6B598EEDE88C22FCD09716B51B3877A10FA04848 +34275F697760B60F80FD4A9E4C4B70C920ED558C6FB93FB39BDBF0FB3C475529 +8CF85194279C747494D1ACCBD6BE41586986A1220BBD607A7AC5552373695A51 +5592F0F53A96FCA19B42F205CABBE5975E251A1E31F51B723ACAB0CC95BCAD63 +3182DA74D75A5C6F8D5FE1B318A592452382E22E8B56EC50998C58F09EEE784A +7056D3E3AFD47C67C60DBF840C1D0CBC62FFA60E0E1574BE0BB2B03749454906 +30C3BD8EAA59F4E92D5559DD6FA47ED18C0FF82E5662F6B990757C58A69B1DD9 +727FF6329606ECF7F7BF6E68AFC5ADBF18FA865CEDA04F8E1207122AD885A172 +D17616E9D9196995567C8FACC264F8E2700FC298D8D214D8C04C13AC329E0AA3 +ECA30EF311F3D2E4A322F75F180F225CF6321CA17D99C2A6FF0484FE69FC2ED2 +1DB87F9400820391042170D79A0AE113B8564E081CAE85BE9B333D2309DB12DE +3BF70803F625E3130956855D35D0E28520D8990A0B8141C18B9ABB9AC1FA10D6 +FB5FEBECBA1C76F2F5775CDD476907D774F272286E8F2AC1419680E411C4800B +13450DC3F51EE6E01F218F8481D8508703EF1A1E1096E50E8F30F5308A981605 +66C9C71CDA2F24CAEAB43814FD97C3E5EB5C552DC6D3BD715D2F1C0C27F791AA +2AFCF84B71322AEA9B965D1EB1C268CCEF3594622589727463F0CFD3CEF8FA8E +82488298E0BB38E9C2278101631BE5697B577F90E1BEB7519B607E028CF20123 +F27D69CE4448E16E40A19F8EF65FD6984F27B5DAF489BA9E90675C0D1803BAFC +3DBE3FE665E58E4B0779D1C5CF819328B9F7C6E555EFFF4AC91990D44A477BA3 +E442ADB3E051CD0FC6C36C58A796C4881B19889F2C11003988AC15C7D0AD4828 +A6768FBF7E6060ADB493515E0DF2E9D357F7B49736E73C4D079E04D1D0CBF5D2 +30DD00C95EFCE2D029BC849480DBC3DA0B83316F4B292B0F9BB2DEE2A22A611B +72E83EC05370A498F9520C2085053D1DF94659556EE12A89DE77B68BD105A873 +5E34836FFDC950696501BE7283142CB61E6BF72C7C49B4DE41C7216DB336043B +12EBDFFEAD6F1239B7E1AD3A72CAA642845A7231AB96D3F7CF5310733896F425 +CD29803F469E9091BEF34A0F5D99B9C107EC2A0034BF0BF1D35FD4F305A92DD0 +E3AC9DD4E8E7090706EBEB58865444CE40BC039C6895B0D6CC8D5462B42EB00D +ADEB49711631CEA82A6609076300870024A2E4D89D2790ED915279447F2E6B53 +4C609AD09DC83AE1D3D6B64E040F9E0DEC14EB9CF421AD2F6316214BA612A97A +5D356E918868496750E971841A20B3E2340D752353C9C5EBFCF29EA7860FDABC +5F2FCD7EEBBE7BAE8343889B0D3E3EEC83C1657AB7D05584C07EA86CD737C04E +0920EEE9F8AE907C328C774AEF0B6D52F4ABE77F84C365043CF1324770B9219B +DA288C036EB0F548A28E6075C7E0996C54867EFEBC8CBABC4A4FD3106FB68100 +B51727EA79F3460A0C73FCAF20DAF2B70CC4767473A4FEB002EC21FFDB585EB8 +2A8F78A30E3EA3B3B3262834F0CFC1F874BDC34F56C4812B344A57E08D7C0961 +1BD9FF99AB36EC57CE3A60FDAA565F05F4647E3A14780D8CA77D0D68CABC1504 +5FBE2085DB7953190787AD8955135227A592F7B66D7FEE1A1680F2B92190BF3F +D0F1AE87BEFCEAD92C69C168D4095F12722AC931BF5669AA2C36B4C35E4AB05C +13A087B549656ACA8E3D1AB91781F933F4CF448EC13141062DF39A40EE127AB9 +5BD13760B446E69C8841C2E889A67258A24CE2934ED2DB61D19F6416A4A40452 +C9BBB6B5BB7135D3E6EB0E727930844545B34D9DA9267E59A76E3DB6305A5C9A +A78C510CE0AFE9199FA45C9CE6797F6C88FA97315DDC916AFC205D88777D4A9D +D6F57A5C41C61943D3A0E49D31DF69092E592273BCFD02C4DF5AAA9694E4ECBB +EC5390C50ECE63311EB0EA0EF9291E4A11891E395BE217F2DEB61B26D792C7B3 +1EDD33F7CF9D3D5132F1EC73A6825F0B086493861C228A390F7DCFD6DA9B2983 +569F0692B6CF2C1437C5DAB2617FB02B9F3E22EA8807A637DE930B4C332D89FE +8F7F560DA31FB34193121E9DED8CBA1E97FA2BC1F330F327EF7509429BD6A886 +6E0D31BB84E108C26F2B8D2C8EDFBCEC919667E55B519769C7D80F4D8445DE21 +83E6C5DBA74BE6190D9A2105A40CF9E57318A1C599B5A14BDF8E4287314FC9AF +9B0263841F2C1C0704BA5E1BE914846728515ACB3421E186CFA68E5FD905072F +6BF3E9A9F10FE995ADAA7E7CF990134520DDA6F309886A37A619316A9F950EC2 +6AAA23870F623608DF2A17507234F727488BD163AB8AF8AECD123ACA5115E629 +FE48DB4E2E50B5563EE26665670E5646F06AD1D55D2BAE6A2694CBE0DE44C385 +6C87541D67255883F58F4A86BDDFBEAD894668E5214B7BFDABAB10486050EFBD +DD40E04D45BC448FD04D1FC22A499429A2FB9A99D9DEA2AD8FF794078C401424 +A9E95AFA2118ACFB123351A6B73D1799B11AA81A18B5552DFE9FC8C4175D40D9 +95A2F1FFED6CB4D5BFDFF60DB3A278183EE4C6AFA4BC8F4D29CEB41647D16657 +A5E4E7E5E1F7DBC103638E3A5491939B4FDD83D26F0D4079F215746A8834957E +DE5A3386A3C477672C221EB46E9609E35D51ECB10DC6E1F161E5E644377907AD +67AAD87E8F06B3D5171A8F4015F340DD8EBEDF112A9A36F99429ACCA79B03884 +29BB0A1AD2EE3201692F975E6FDA3A19E08367D18DE9997FBE7C008D52C0AA2C +25390EBA6E60C4893A554E20150E0BA2BCFBCFB1DEE98A08C9475E782E4ED619 +F73D109CD71F325365267E67FCABE0705C3B8F85E4F15ED8611ED693BB263566 +A3FCC724DBBEF6BFBEBD8CA5613329B2A7D15AFFAFF48067E6235C491C626DD0 +5FFDEC2D2969159392228BD58CB5A8211281EFB3D08D06316332B41562E8DB0D +E430D3B5D97C87A9BCB70E1CE47504B1F558A63C86B9D4D4E5D242A98A9D88B6 +2E715A1A22E0C77E714C4336D6A59368303E18D01669F0DA31C2EBA52E5A1098 +14FB591B33A88AA50232F533E8996F72F6E7D62A0A35BD17306075E75AF50218 +445E41253AB7A604066321B364A01D7C392C390BE5548AC482EBDDBAEE0D232A +E23ECAD740B00BB788C264B7064153279837B45BBDBBD94355B10D03520B68D0 +2FB521ED4710A153CDBAEC51C2CB6D95B0B17D3725B1BB0D269B1CD869C34EA5 +EE7F66EB549EE7669D3E67E60D29D5987445A4B594DC1B3A2BE73BBCD966B9C3 +E06B6FD8CD363A5F4002F377640823FCE881C6F6719E9A226BA2934334EAEA0B +0F6F58DCA3888D5615FDFC0866F50CCCF1CB7773FA8BD4D1C24666BBAD4A9922 +05677210E10AD68294A81F69EC2C1DFA4F12014333A8522D2B1E966B01EBE21F +A18537730B70ED4B222361A235809C830EC62A3DA4E53CB183144252DAD8CD06 +A36A6C6F3AF597A4E815760443D544D2AF2A592D7940CD6FC5C1C1D5698F9B3A +8836F3757482EB2FA28DB79F736A4863825797678066539ECE53F93DB0F51C30 +099740145C67BE79AC98C4BB182D6C3BD6BBD7DF37086C8FBFFF97C7061A17F4 +FD043F58C43084B2BDBC62F9DC36C7D56224C7B6782572DBEDA60564BE6FD7EF +9C546B298E71CB759F3E8479A59081F684D751841B2B5C77E130F0C0D995B4FD +E8E265FC537EAB3A6295544558674298576A6FD2535D5FC0756764D9AD2EE810 +C56DA855ED91ACF7A8C8B3D59E1563BC268BAE3952A7F239C4DD35A9363BDD9C +7E3F41C18F8276F9F38BEE06E16188AC75021A8322938400F7E49B724A693346 +E4C172B45D7C3C516F1C45CD9E6A56DA9CDEE880124F80315F70146FF7616562 +2A2AF03C76DA097AF2B4053E94F5B1D9D74E79B86794B1CBF3DA5729794CCD21 +A2B1AB0A662CE0A5911043D61D9D3C4950003BDE2B6E57FC95F171E0DBBB4213 +1BC45F8578BA3A288813D3E1DB271E2F7CFD064C2DDDA48AADE04133D9ECE594 +E7D6C80B3FA3DDA266B3130054EC159E72C50A5511503EBEB55668328BB2F3D4 +D507487C558EF50FD63F97D4F1E536BD6DCA5B5980A29A7BBC605C2421192229 +BD2D534426C34886D6322E2AE9C341A2DB07A5D21BAD46F50B5C00C07B5D91B1 +35406747BEAC18481B5A623725EC68313BC7EA3ACC957F74DE94C1DAE1E65F84 +AAC82ED3AEA8FEBDDAB733AE3B74C12ED6A44F023DFFFF3711FEC5877A67F9F4 +9FAB80F0C6A49CA7241508F5F838D8A51D25523A06FE1CDEFEE12A9D1796715F +924AC8B638DE35D9F4DFE00430EB2F9FCDCF5F0C1F33E01E942032A2F936FC34 +638675FDC0FE254E52157313A8C6087415E27B327694E1E08EB19A901B92B676 +2D073CAC6FB247701B4A567226F785950AD21DF6936356C6D4E7B972EA580A6A +9B3C47DA933B70C43A0E68CC72CCE7CAAFAC85C671BF561B9187C1533FAC252E +D47987E50675DF84D58B14214ABDE92C16A23A7351A2ABB6BE0CA861EF7C3566 +8B26516FDEB6D266F73250F3DA3FBA03BCE738AF0D83F54CAE3A159FA730751B +3F57A92815BEA666560055E2C4C2E9F24E190DA2731B90767A8E530F520FDC13 +CD1A38910601AD520E5EA3E5A9A5F08C7317497DE89A4829BBFFA3CF9ED5932E +0E45A027F727AFFADDC3DA24B1F7695543261F5122B7E48590C923B0195B1CC0 +97B1A9A6AFF600640E2ADFE06D0508C4CC36571C3EC7F25C13B21A5641E22DD4 +7C4F324C057BDB03CC8BE8074CE24402D549EB0D37124B51A71FE966450E413A +AE6FF95D64C8C2AF3926CDEF890F6233F3E2F4BEA63D0FBCE00B62FEEBBB4874 +217C23A3FBE45DFC7446FE4A3EE6B4F91128C0954E744BE4F3D25051BC972CD4 +A9DEF35F56D73643DD74CED92A303DB4D768E227D2B699E6340A02576E40B988 +0180B09A5E3C0511FB68AD70063C64518D7AE09C9FBA221D761DA4984F18C81B +0F117EE06FCDDADF7291A213BD9EAD09E5583D96854FD703441E558DA0F5F2AD +02FBFFA9E116AF938D9D3114A7D9761386780ACBE710B05D1C1F613C5BA7E904 +BC31011E834672971DE06958E1698833F9DFFE942E07950F07E7B5CA30F2CFEC +DD1BFC5F7D622D78C3658F86B083F922C0F84F80B566262CBE378B58A3E40618 +4AA46EF7FBFC63A84323342257F515DD226DEDA82DA903A22EC95945EAB9A759 +9F231FA7BE62D48F0CF76E24988EE53C2BA6EDB0DCFC65AE2DDE4043A540B05A +131D5B8C2D5FC455A73C12F6818CF39B308BC8E12F7B1096DB947B74886BA91F +05E0DD15E13F64C53ECC4DAF3295F84536D9C966D2136DC7A292F54213D96746 +05A25F6BACCD99FF9F4B25403D43FF714767B129970815546F9F0AF34126B15E +AAEBDA1D100542AB2E468316B21D5159F3F1878B4154348ABFB59174547D353D +111A54A46F571B358E93819AEE7A157BD4218F35820D5415BD597FA51DA133C5 +3265835FA59AC38A8D2FA71437022CDFFA7FC364440CC9B328F2A01D0E8DCC7B +1F0EDCBD991B42690B848619D758889F5400DA0ECAC65CF282CB8FBBFA386A4B +8AEB400FA8D6A67A8959171C250D702E5D3600272866CA0CFE58A7F096450636 +8D8B61DF9CA096F8D21935A21997AB6325A3215AC433D31A0E67D3497FC753E3 +433DE1CC62A043E8014375C9292010728E1639834DA20968D432191DA7FCD8CC +7A0F6FF2580BD7FF0157B151E1E02733DBA6BF04CD331E1F4CFAEF0C2D1CA39E +AE71B17BBA45873A8F34365BE1EDD264058AB5D4B7F1FE1B604A38920CD1C5D4 +5AC9C8A8E405806004558377BBBC93608ED29DA7EDC4347758B00743B41FAA73 +BBDCB669858DE55A8DD31C302CE1B3312770C19B82E5AB6665A0D7F6B4B75E15 +DEEBF1D2B12E451FC041FFC5D9CB491B4F573C8EFCA20662655ECD4624DAF178 +9E49E14B1037B7356937B573CEA79D19DC1730F38E52855E28A697D3A0C92A45 +87BFDF4F31B35A7D78B2D0621C301B83D4BA001982D24CA532CB2A9099D5D8F3 +4BAF0C5BF102E011EFB2340FA3C12CD0212AD422968A0DCA4DA3CC257E900CAA +E7D0C5B210EFB894B31AD9F8AAC2D60A47DF7965B3741F2D1B2397F8F83980CF +7693EE4263C3C61725457277F3393627294D49BA836E42DDCEF13FD0828C8C40 +42F7177C731DB0CDDB472D215F583904DA7961A556B92D2813567A92BE4D33BE +F099F88B5B56A2C4860CA894FC696881F566D5438E23D363B72C3B9C798A7A12 +C9D345351838820709967151C718A5F9C4BA96AEC54D49455A21F28BE7D5E25E +90D0A7688DBEDD8079FEA850B5AB2577BF9E0F94A9C0BE7D739F98829C003521 +F1D5D746252A8A91BB8F4071052C3D0897EA410F11F891D86DBB9E43D699336A +427A6E640ADEE10C9EDC3E179B3297BD75CCDE248D1E82A444F1BDCAB64C4D91 +504BD97F41EEDBCC7C45E7878C02AF344B88353D4DFBD439097515F4A5DD8955 +8C2236B7EEF9C107796D3EDE2185062E61714F7D793B2BA7CB408D8BE66C3B9C +ACE106E5D66FF3C3E5FE5F0EED9A7C0A9CB24E734D0714FB21EF922A42FA6BEA +D98C1ECC31183F9EC44C89EF61EAC68DCC91431813A332508F13AFBE392413FE +D608035D1EFE0F6F5E2072702FAA74DCE2E8AF38138382225DEC017FBA09F522 +75686B3AD7DE001ADEA0FFDD7B201DC94717822E9DA522E91FC3D2F682CCF54A +F3148FE36828CDB90061E7E2E44E895425A1A91C3DCB2A12445D63CE5CB0DB5E +FAA293473136B24F4C3F807CE5A9E7345402AC64403EC7A1CD52973462F53333 +FDED9142103D37DDF1D0E9375E67077AD48315E331256C35F2E0DC2F9D6ACD1A +96CA78B466CC0E270EEA42F1C34808CD5D9EA197908A10EDCB1FF4E496BF4752 +D779333E738CF52B4A23BD17A426F1AA906994A660D812A1E1E20A88A492B6D3 +C9ACB9DBA1E686C7F82EDA792495BA0D81278605DAD3878B2127DDDDE2CD644C +93810ECC2D9CD388221AF462DFC29FEE167C2B22115E6C0CB573A1CBFB38ED29 +5B4D055295A87AEAB5A807C9D841B07F5961FFEF8A2F9D7ACF6A55C3F76585DB +6A752F29321A1353E17F2D2C8351DAB33DDBD9B97A0D957160F0C50357F7D48B +B4D3AB826131E5A82AC7C7836C71A49DB4BC556418FD59CF1B3CD2C82B23A712 +57B4CA19741428468601DEA786DCF934F6A49EDFCEDAA67FAB522F8EBB629FB9 +8BFD472765D0D32CAA4D4AC8AAD481A3968931D57BBF6F4D7A017586EF118AA1 +00876FEE7D6D4216B1E83F9F443E5C5191EEB838224E0E794A4C5A44F990C8D8 +090C080497AF89AB3FD9100A2E86593ED150936F77155DD3A5E6991E54FBAF59 +C213855DEE72C03DDB9E2EFBDF02BFBE1F11523E6868A8580633388633498512 +F1D96F12256A10786205C189FECABB0EC1603E4B6E80DA199A9BAB38105E79A5 +B5FCB415ACFCACB04D2130BEB1F213204684B9AC0FE99DF2F44EDEB95121713F +07E9A098DC7C1707EB11740DB97CD8FF88D0D67233D0D44B30214841EF80AFC5 +13D15B6BBEE9B13963AAAED3556416F01AF3179331DCBFE5EFEBC47C0A4A0C9A +BB1CD3BAA85C41F28ECDFDD9E423262312B053E35E785AD59BAF18F29144177A +02316A06D55FBCD900A4CEC943547B129BE0EC770D500BAA6FF1726EBFDE9CEF +E2882480ED5089F66E5A3165E621B8ECB447935662D8FCF1C4A6FF5E6AD12358 +37A7C3C663BAB9EFB2F20C04F3F4CE99B39EC25158B5D31FD6C0E5BAE28E481C +BF4B4EAD3A872902082054E1F982122899CB2A89C9B9A2D98EFFA445540236D4 +AFAE91E548F4FB712FB4ED096C3543E666D9B414980B76872E0FA49E12F4DF08 +F72FFB69026C0A17276FC914EC2F38365F44B63544015D6DE95826814F02C2AC +69512CB30B9A9300199ADF9A1732847A9DA73D6AE72A6720B3C4BC8FEB57786B +76B5F5D326368F9ACE4F549796685919FFDC4FB564047ACD93BB8CB84CC6C881 +1CA34183EC8AD2334233D8F786E70397503568FEE4E375CA7EFCCD63C0F93830 +111742B8F770EF1E0672E4329B1A7B9A03AD84B26D08903D0C0FD0FAEFE4113D +E2C1B1E914455C8103B2C6FFF06D9EED5EA741F6BB9A8FB59A7D00B7F98B1F68 +E01B30DC519CE32F5B53A6D70F7E8C6D4F40220BE02F239A2E0DC970A7C5B5A2 +05B95C265EDCF997ADB35F817D67E4A6BBA90FDCD30B1EDDBEBA6F4BF9F31E8D +9BBEFA94A419C034FBBD11146935074BB0DC3B3748CDFBC349DA438D360A2994 +27FC490B319437C652D005D7F8CAD438647CB604540F1008D195AAAD2F821403 +28276B050D4EC7AFE0FEC9C0DC94835E32709B48FFDF2F0037B7251A79FB6242 +1DF2ABC707452CDFB39F5E8A96BE12834C61FADBE9A4359FC175D8B0CD1D1C7A +29EAD464A153CD825272B9FDAF9EDC395F832104E8FA40995C20464278097BE2 +7B3AEE452F6919DCC6CEC21EF623DFDD4410FA4EE5707E70ECCAAB9AB2DC63B5 +60946C9066553069DFBCF69CE71979D6A1FDA130C930EC2E98B43FB6B54724C8 +D89DC9A50E5469EDB94853F1C0CDC85373243EA5896846F4F7E665FDF38EC284 +6679DF5C341D46454C07B75ADD77AB1223DC20AFF402F8E1C7DC70978C3A4C0A +35C618BAD755EC224D82FE9C01AA06B495E17E3DD658D99EBDFD4C9E9CE22286 +AE9F9339D713DB4F45A6DEA745B8739BDD3F5A8D5C9BF9896C133934781E1CCF +DF48CCC517CD7B05ADA06C84E710789BFB66FF3ACB054F02545E04C861316DC0 +92F179F707C69DE4DBBF3DF277428F1BC53AEA0DE0093606B7A11786D2A9DB08 +75084B2E51D29FD01735A30CF5BA8102A271E3086581BB32648486C6380A560B +64288F37C608E05FA31700D5087E472761D1F7A82E5A1A64BE402D91A7313A76 +C847EC3BD947658C7726F83CD3F497513331F3241FD9609C5FFB28F3A2107636 +D8AC6FE1E69A29F3A2ECE2E82033A14DE01F173A460374ED755513669DDA6041 +0F2A063F680B63E07C39B74916C7D91C389B957346AF545C042D4A0C26BDE2AA +B5301A2F834BD509D8AE36812FCCDE97F786A7E51C4113C670510E5E3E95C2FA +2F1FB38306D3C619CE8B8AE29B60AE50DD2758C82EF5CBD5A526535431C7E644 +0E64EDCA05217AF5ACF329896B5767FA68D5D598A57A61E31C10F8E84F91093F +040F5A6E69E914ED29500DB8573F471B1CC80C547C5A3DD165D21E1817A31DAC +5040024579B755FEC3A489D270A829CA093B94A979EBF20215B3BDE1CA51A811 +57F3C9D75FB0E10427C9B9FB27394F7148EE64E46B58FD0DBBD1CE9C2268CD1B +7807884CBDF5DB571F6F5FF0D558818651EA39B0AD69917640C9E0916125437A +C16E06268203D0AD69D4C87721E17CEA7EDEF67B76726F6E3EA4692E2C4BDE17 +113BEBF1DAEEBB8CE1A77AC2625D5ACA7D5AFBD1F226885C4AF86FA027F1C494 +122868B72208291F4EF66810BB62BB3BCC649627BC4C370424AAE4D62801FB24 +5C269C7A14C85F7D9027B26FFB48E2606886A3BF571A71553951B461911386B2 +820D71CC8E3260A9ACA52F1D84AAF32C50133BDC590D4D54585BF8BC78E5E634 +B7BCEC043402B241C241E0CD7200376D8A2495A74359C09E7992304B0B48FD7F +704397B5675A57264B34818DBB7E3583AE864EDA86F8D62C9A63149BC56D151C +EFC02CB68A79F3B9243679631CCA489B2FFB2F8AC1950AA4680A01F877E93D24 +7F03E2E17E72883B421FEFAD727B9BE350492533FC59557FEE795A18FC15D84D +78A47A2B2BDD59150097476EAB969A24E25AA987F6E7362BD1B7B32D3D160B71 +788B6EAC9E1D6321A21E7C67BB6B507C39F9E0834BD5E190C91BCF3C22337E58 +A408F7CF06660E680D49FD8E0664A2121C0028AA396EBE336F824BB30B77E2A7 +6FAE4A898F2545D8FCC25E49829BE24E1C88799C63FD60E3FAA074AD823AC5D6 +36261ACBDD835EA0BEA912064377116F7A3E0BC92EBEEE571DC434CE69B316B2 +111C87FE6F7B1D50D8FA7BF0E45241C0A5017FA5A0EDAA668885E3D35B325B9E +94A13B57FCFD87AAD543DD0CC3B81DD64CEBF959BE5728742B87948DC9CBBA24 +5F46236BC489CA6636958A65EC94F92765DBAD67C0F746083E0A4E5F42D4F4EC +4CF2AA57EFD31B7F30E6AA6FD933AB0C350374361F638D67D20937EE6A094074 +AD074C7F047B31958A8E4C3616D329B7E970A547F0C2CA782B8954E6AC1D52AE +4B0D43448F96C60190ED1FE00A628920150AB6711B0B8B65F5E2F54F7B5B348B +C29B1DECA425C1576054D57198646D6F61D141B2BE442E3E771CA1253809237B +EE4A79E2BA3128AE7FFE4E5BBEF87DDF2494FD0E39048010F66BA73CCB54CF46 +D897EBD9CFA3F25B99BFEC9767E2F3CD50D14FB3D7BCEDABE97C4ABEA91079C6 +3404FCDBF2363C86F1219ADF78777CA9FCAD31E0A012EF575F578FB19BC6208E +F55B2D93F0C4E042E4DA5EEDA06AAA6A7EB6B5D2A7FCDB7EAECE70DF5DE9DF01 +9DD089A13FAE50E889D091BBD75AB108124A94B8FD4A198868DA266030D9081C +1D1D10BD025A1DD2B658DFCD22AD5E7A92DA70B9198CEF2AA65169F8E14D1E33 +EB43952A5BECF1384124468322271965B494229082B2DBFF8643EC5A9C4BBD7B +1648440470AEDD0FE63B6AC59F387972976F7266CF2CDA4B401AE1FBDF62A416 +F1DE47C727F2609B006B1822768E448226C8E2F6F56C4026E20E004CA48F4932 +CE81F481F2E01B229966432D15BDE24DFC7637B64BB1B80A5B4487BFE4A8D965 +885706FC8DA0C509E82725184BF98847DF3FA003D5242BB984FA2676C424E480 +5B802B13B8702608B084AF0BE113FCA6C6BD9678B6B30E9177E52FBA3B8C26AB +526B585FCF94CB247FDFB15E664E18DC02E078C9FF5CB3221466C462CDFE8677 +1C997E070D6B8FC876C5C60F4624388E8C05BFB369BBC4299483E73471C870E2 +36965ED25FD82EDC964C04975DD2520E4CF8170C8C2483A5E33C755D8223E0B5 +A5E52E06A65D296A06DED7B67DB5DC459B8FCDB684EE4BE8F129BEAE3405A22B +A9A00C303F005022E8D4E1DA7650C240F5F59FA71E30C6C15BC65706862F414C +BC89C860435A92DEB6095D2634CEF47AA2FD863BCAD0818A966E3003E63F175D +3FC0B0C8FF34C09CCB762418C1459112394BBE872A0A4F869582230FEDF2808D +D158C12BCBE640CE4A117BE90E8C28809600984D415BB3FF73EAB687D6E24F69 +E0266011DC931B91F2B146FAB6D7814C1E109A1680F4825E244C46514B97F541 +709A7AD6AC5F8E87D4DDA7AB1751E8E6591AB2A21287CB508DDBEBEF42A95B72 +A8973ACBE86B4F030F2F8E21AB9EF3896A968DFC0A564BA2F9E49A315F04BD13 +391BFB88201322974AD2411425EEA1065A24651FA2FAA1D5BFFAC188A4212B6D +7E1AE5140D24B5D036BCB1AD1E8FF4223A7B80C90FDA8A9FB399517C19441F5D +AB1992C582AF00C9D7DFCB44523147412A17674CB5D06905C6587CFDBE5C14B1 +2C243E093A541A0EADBBF420311CEE3EA860DECC7AB53668315FD296AEA7B61A +64EEF559721C24BE7333BFCFC78C441510D1B5E2CC0B5D66CC402958E44EE39C +C02806230F55164CF5A86DD444C66BD2A89379758B829AF52856AD4CA18AA690 +A51FC39B73E2507D6B139B2623D7DA3C52E26F9B42192A9D001D42C96171A840 +EB21241832CC954D0B0196F28D800CB42B327215184A72CABBF41679DCAECFD6 +2E8049C3ED61404CAF89BC7A02C9156CAD85EEF7E1381DF229ABF414364D51FE +440C2FB21C6FE4082560014C074352EFD265931A7C8631FD8B4CD24AB6D207D1 +7ADBA1E846D2572BB4F2887FFEFD0F807CD517F17C5E577156E09F6C975F88E6 +4A5A444119504B093A487202A392D610A7566BA9E37CC4312A2C95C17B1EFBC5 +52E1C1870E8B3CC9BE9CC01DD21B294A13CBCF58EBF68E73950514548C4C0510 +2AAA77DE8644F5863EA4917FEEE93F9345B01518F5BFD98D49A977490C46316F +238E8A16E48D28EB6D5A21892DCECE0A8E0421FDB1D07D353C3AC8B74E8BEAD5 +43663BE10BF0238BEC8879FDFA67BF9149FC7C1938C48E513C80BE7DF8582922 +A9C719B5FC5E10DB16D53F5BF97ACB244D2626CC62403FE9F16256100202987E +4806C75111115323F96A0A8DC0E530365034B79D14E8CBD01851B484557EAA83 +B0998C7210F111FA1A83FBA25749033278A726E681FDB1AD69BAFD9D3797E0F6 +A44E1E0F125A223CCA4BAECF652F119BBAA3198BFB6CE6DFC2261CB9C5E104F5 +CA316D9EACD4957CE40654BEA43AF2E53437CC6D7431D92E3229D0C801EA8679 +49F8B117667DD2475331FED839E4100ADDDD7D2731C13EA879CE89FE9931D9D8 +9DBEDCC5D43BB500F7E9B381A2D7644919D6390A9C918412F0AFF6417F32B7BB +B9156870D4A3FB982A7F7018B8248D4D2424B7AC177A4DF278A0410C3044B4C7 +13A86E6E39B1F86922D15838D304C23D380CE3BFF57FCD450695EE50016F2D75 +F47973ECAA454E1CD46CF569FE960A0EF42FF9CEBF8FA784ECBAC8DC7BB29A2B +F96E8E28B115B091F59FD9F74442FB657B28176E297C21D5C5E04955E9AC8AD9 +288E18124426A10E53F1726256ADFF906557E27A72F0B15A9415DE6B0D11A414 +DB75A3C6154191B771DC0B09B934A69161600EBFF5B42A52DB3242BC2A35FDC8 +D23B0366C1E0CCD61946608F844EB8B35DD60C36068EF053FC92441487860D14 +7E01C47EE21AA2EA058D6EFC8B624A3FE5E6F083B8B74C5E50DC105F9AAEB3E2 +73349D8247D2CE14795580CC339F7313DDC4881CFD712E2EC82D8EC2F5DEFB8E +4D93DFE8B480A7DF3B06AE8DEDE68E2D3DB182944BCCB324E4ACF91DA27AC5EB +BCB7350ECB7CEAA314FD52F249B71BD2FBBD477858B3D129197AD9A73C8FB651 +019B38FFCDEBC51C8E87DB84FB8D0DD14B85B21C7A0E0F16042EF1D00F41F480 +F71E42A8368A0B8FFC3F07DAB64798EAF4E898A49CEF8B2E8BA4045BDEFF2AAD +5E6BCC5C2285EAD35EE18340E91BF355E4BCF07571C1BDB826D2A5726B002754 +7CB050F8800A9AA79876347DF64E7BBE6FC67BBA0ABD37652912555268E64102 +4DA3DB67C5B330D8C4801B2518BEFEF31069D23AFE4EEE6CC18F7474CE83A755 +324BDA7829F891D0FD1FFE00A71C242E2C90675E9FF92F98DA742FEEDEA0866F +851B875745A8DB088628E4AD8E80016455CCF0796AD7D45E1B7EF21ACA4B20CC +22818A27CD3DCDE4F09836BFF9C2E8FF7B5EEADC5A425705438EBDADD4844024 +B00534CDAA41CF7D9A5EB59467CF10F24B913324805DB1C11BE49830E2045CC8 +62326BA093776F2DC94120B89CAA39E8A50BAB40E6C42698DADAEC8DD88D0034 +62875C3C96FD8A2BDEB03A7F416598D765D5D2E3384FD84494B4C257D1E13351 +EBB4F17562FAAFFD966317FA3CB9AC060DD737D9352A205BF0AA1C6EB176B0D4 +8848A20A83FA27DC6D0B3037FEF380BF52C817179F6EA3C4DD34B8B8CF64179B +98821893E5E7CB946260D4FAE37EF346B8EC65642E5ACC407C43F96BDEE89108 +BE4B9746EE1BE152ADFC818DE3740C144C17FEC0B2B8BBCF91EB2B4DB7B37E34 +85D7AD378B43F78C87A3015895A5DFB40E2859061E738981DF763C2D79F5BEC7 +956DCB8463497032A47D5820C8424A235D3FA985BF7AC4C4C049B8432B22FD31 +FDCD0892A0030A95532B84E8BD9100720FE6E3FA078E73AF760635C40F6F5DE3 +24A9999380D530E0106F3EEB9009BB564768CB42580794FC1765352ED7FF5A5B +CBD4B069D34FAE973E272FDA32DF3B916AAAE68A4114C2D13268B1AD64CBB118 +1FA189F1B5AC7A3F83F1B7A564D49F69A5D558E8748305AA5645B2E29868C3A3 +EC093D156B030FD8061EB9EC752D5DE61177DE968910A60F6051FBBA589F4BE2 +F69DAB0785D0BFAAE7300B5B4A9A51A7B5915399C6D7909BAE1CB504CBC5BDF3 +1A1539FBA6FEBC13836B276C35A258BF69BFD1605CD5B1224206C8B2F6061A8B +CE4C6DD1E90D5A85897BC365E9F7404CCD30D2451CC86AAF7FA70EB5EBA5A841 +35AFAE39EF98DFA176A6731733BFF13A918D5ABA3AC5F96B2A032AB1E6F79314 +0BF0D6CB64B69ACECF05D0BDB134F53772502CE7BFB541AA809B76F4D65577BA +DDD4FC2B6D650D93E542B87F097EFCB1250EEE6BA4528988A542388F414DBA9D +BB1B753F685AA05057C30F1B22DE2E25E49FFADA96A7CD22C64B6B5A6BDAB9F5 +727EE86BFDF41FB642A92CD59E2444214D195329556CD5B8D1CBDD04FD4C81AE +E091039D0F40B41425DB74D5C9F4911F15B894ADF8B804147E633625B4327980 +4F4AA2DE46AB4C638D8DCD376B06B52CF9401110885D5ABCE243685999761B97 +AC1E16AD9E60C81E40AA951C9E974776C4E4188E78FD129342E63FDE8B501C7A +10740DED2A4D06F2925A968C843EA801B19F7ECFE09F5CC53A70CFDB68AAA318 +A0DF5FE7EC8A533858985177D11473103C76331D4B47803307CAFBF579EF92AF +A700B558E356E41652AC4ED9FC10853D3566C41B3F44C70EE4FF68F8D8A43D71 +4EE6A8B677E178DF22EFAB7BA6790E5587DE38E20E73104AE7A1F8790D4320E7 +706BB8F0D32CF45C96B7F45864C9589B28AD11CD90BCCF68530FC9A2FB2B65DD +93C6CF73301236E3EDC2F2F9B8ED0740A34C893A7222BD55F0163324059FD09E +558C0A0DE6E039F684C213BCFA874337A6BFC0C1DE9BCB9F75EB9BAE9B82857D +7DF8414C737474B52CE42804799D8724E141836E10D9E920B5EBFAB370D901A8 +B2FDE67C2FFC253DD66DD0F667405AB890D951CABF7C8C73FEE62240A543D154 +ED788C03C12A18AE8BAFFBA3FFF885A4FD47E896C7ECC07DCDE0C4D1D15F8749 +4FFEAB87AAB95575808749B0300D8466F1732134A8B40A5E649712382AC2E12E +9F3110B6F9642B4AA113462884B44078AD740405277EF50AB21586E2BAD773B4 +BC14714D7F44A895A353537B3B3EAB6412FD05267DB95928B7AA02D93ADE975D +F0C5F433768243AC6E3A077D3F1D6FE522A705AC53D518CD7739464C0759147D +AEF049071FDA2DBCF49CAE44EE8C013068DFE29C0A47B7D5E8528764129A75A6 +26D95F5AF9D5E92B9B6B9979EA071F6ADA5DC2E3C0227F4986CF51F9D9E3CAA8 +4F0E544177CFEF904205A08FA0C52FA83647FE92097BE76A4C016F4620C7C0AE +07E4AD10C9B6341AF00E0FA9EF7279420EB9A9EC46D79108E1809C6DC9271210 +D5096283FA235B1996B3BB56A8FED42D07A20645EE84FBC0722D10504F2F2FA1 +70E90A50BB4068AC55575BAAE4C6AABF140F33CE9D2CEB97E9FB3358F5D4EC1B +AD08F13234FDFAF0E48C6576FA9050B18666C3C00055A44730E7A7CD461DA1CF +E4BC0DB871C5DCAC4289BDD9EA8AEA2D81148F10F898514EB104583EF4241AB2 +4BEE5CB1A81A7372108737DD021BB2E09902978C348C21B651CFFDAC1620F9BE +C57F6603537EEB74AFC17CDC5BDEABD07CFA782357A869EE72FA7D2D1B4A1085 +75AD991A02648A420662625BDA06CBF8E804D2E7804EF56314AC060A5918446F +2C9585BBB22F16AFB8EDE51C7333328D6C8E089DF4192BFAB0B9095929B7EC90 +9432432887DDDAF65EAA8230184FC80293831252F3FF8D03D71F6593786BDBC0 +084F0C2589BA8E741ACDCAE91B71477FCCA8AA57AA3667709128CAF90D1FC11E +0627E26CC3EC18151CB7FB4868EB6596832109444D3C291124AC23312529D97D +46193105D51978E6950854D8F5C8820325A872E22133E6FB9317EC1F63710509 +2313E3655B06CE94D1D2A14E116A74F5DF1DF6851C6E05069FB9C69598F5D0BE +8E3DEF1E30426E5087877652C0526985044B050A91CB9BBF4BED47C561E61C14 +E2CF6A56CFC1E5D29037EE8D35A97732037669DB981B71CA7DB234F35AF31FB3 +02082E7AE08DE8E7C6F508F5 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 60 /less put +dup 62 /greater put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +95601766777978D01677B8D19E1B10A078432D2884BB4F7B8C3293B68BB78100 +16724E495064BA0168CC86D413CB48560D6D318357397832F7A858CD82030C7D +8A4A1919716E8B26AFF8789AAF489EE4E0A88DC477551A87C7DF2856189E4596 +FE015956AFE5CC019F5CA6323A12B763B7B08B92C1A2940D3C566C43729E5482 +63C6DC5E834AEB4DAFB5AE8F0B8931A4687C94D11587B9071C8D81DA14F12776 +53A1985A3EBE37827656BD4635E03F09C3231F906874645E7DB3E59045A59D67 +E745D8487CF73FC50F64060544F624F357BC998A87FBE468DEBB38A09449EBCA +D041D7C29225ACD16CB8A59E87924D15A9125F064710A6CCCA3AD3103D8FCC94 +CC3571C6F9192774FCFE5BB42A14B27960903144D28BF047BF4C77646EA7BF6F +440D4EDEB712C63F2E8080419E42D1D58EED685EB5CDD49F80DB6E5553B519FA +C6A39A093155802F3EC607721F390307E91ECB597ABA60A537E3F8C045BF5DD3 +D88CF6518D37FCD95D2F295D902D617440D23516D962F47750A682A319ACE1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFBX0700 +%!FontType1-1.0: SFBX0700 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecbx0700, tcbx0700, labx0700, lbbx0700, lcbx0700, rxbx0700. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Bold Extended) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Bold) def +end readonly def +/FontName /SFBX0700 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-252 -374 1940 957}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA0E2F461BA16EADB32842B6D00C76F8A335A614F +892F1B79F1632A63C7AEB9B12A614AC7515A95CD6DB2AB4CF59847EF96024D09 +3574B24F0808E796BB0999CA105F4EAA0C1CB53265E0E2546950028DE65CBDF9 +B74A2AE92074643F9862D4E43C7A10CB05608FF1563AF1EA6594BA4427CC7D4F +1B78659882184656A67E67979258294CEE91EB0847EB20FFC9A09CBF2A3C64DA +03FA0245F17334D0B50D7F45C3FA462EB394891AFB88631108A4F31A3D423B8E +D058FCE1FFEB2C0AAF5CAB12FB5FD75D6D37161C57AB56E3C12273DDDE6679A3 +6F456C9BAACFC179B2F68DF99802D281DD2DE4E68B58C261104EDB8A69646A8D +26E9EDB8159C6EBAA665B6CD1684EF96FB4ECB59D8A89C2DD34867C6E6B40A4C +7F3AE11C6737A7B40F2796B357F69774666FBC1E7D1319A2456200BA905B5750 +04884DD8F69ED493D65797488B3E34B2CD5868762840392E2B44DAD917158BA7 +9F99484D91BD78559ACA0A99EEEAFF3F3A4A136CE497EE552060D37A48BF783D +18ECDAB506F1FF8011749FAA4DDCE05644A6259AE5A2227E32B02B0E643FF9D2 +1B18750179E442F7CCA8D64FBF2F546E9B66AD753ACF8CAEAA1475639F512BB3 +B8DF4DDA8FC2F8E46922D1E7735631D5D5CF4B449C7FADE6AF6157F3A17E7F96 +AFB15C413487228AC7DA92BCFE99DB802938147420D533DE3B82B989F287F7AD +1F963B2BBF75A4D4CF22A8E5EC6253BD1DD8734F6931BD791BE2F9F3A9F5EA74 +66BDEC0AE5A42548B9D247FFE9BF4FFA2163D3DD36DBBCC1C6BFE739375A7F59 +8004D9CAFFE9D75627B6D2389F249C88C9C3B6E7FB237564B1FFF324232476F2 +AF5F5534C5FF72842C8A882CF26F613CC1E568BB685B314D3A68BFC49A77843A +B9777316722096264722C4BDE9470EC4DC99F9A088340BAA063C6796D67D48A6 +E1C80C078EA3689D75ACAED0B310503BCC5A76A540F89B5C7F37EB61D736C4EB +A0C56147AE8F8DE783275499048CF805A956A150EE991160A5E0D816BF5F30D7 +8C09783425062E84BF591B753993AE7AB4F332FBC84621D27FB1427A76386F45 +3FFEAFBAB0550FD7BCCF15FB4AE3A75A18DB5FF55EC7BB9535B0EAF1536CA906 +FD7EB3276A13CBC0EB3EA6D9539089EC0EFB905B0C0BA6C712219188A785B15D +0E2F5F326A7DFDD8349B33F2D53367B1E6FBFF5AF6E5E4D192A4D7FB8F4E5CA7 +A869D06F036E872B2A0311DF1DBF5848EAC03D8DFA178282D91A30617B20F73C +55AD54205B94223849126330427A679BDDE1AC068167CE1B3F371401E4F42510 +85321B0727107B7CF39F334AE193EE09C787D498923EEE9B65CEC1656B3F87A0 +CE0D5E07401C36C3D583CE7B0C93BF5532931B909BF79C0F2F5DA64A83514A16 +2491FDA289217F14F9516D884C186803F4991AA9F608A676020455836570BAB3 +41768E5B029DA47528066D0FCA3855552B376AE7E1D39D1688196660C5215262 +69C35B63BF8BEE6DB3D5746901872F8367873609A7312EE7E4985F6B26026854 +C06D014210583707791F86F4934CCA3615E819FC86629220B422D2904D2D2D35 +66C3ED0DA87E2A53C75A312B1E8A2A669C07F90BF0B3F3342C6D4791F7A8EA61 +0BD24A215B3D9E52EED6DFA33EB903946E8D513CE480FB161356F8F4CD8ABF00 +6B7A778429292BC3DBC64E1BD48F4DA5D6740AF00072C465538B548976C11406 +E620DFA6A86E554A2C868ABAE5A0115CCF87733F84F13CDA0B635CCA4C83717D +5F912782D18DBB716F817BB78039009C2EC8D60A180F4035419EE62F0585574D +BA46CC31CEB1349D2818A4AF6993B5FE14325192DCF9AF7F4409C2C54A4F0FFF +F5A1992D407177ABD6058DD832ECDCA076A0317B3E89FE3A8E51DA211554AEE5 +05B64074AEBF878BFD7B511EB1E230695B3DA29F7937F9DF00DA5ADA5E341576 +E5486D95B4C56C828F8829F979D74A4371FEBF1BEE0993D38EECCCE03C9BDA33 +87B36BA3612090F755F51D6B6CF11194DBB8DB8E5CDA66C7BFCF6430463630F2 +B608EC8D23811D47A6AB4D52F2D5209525845512A38F8096C24AC4732539B1E1 +56EDC203B9C5CFBABEDF463AB6EDCE0D829DC65AA1AAAB6BE71752B75B26FD5A +804DF75A45EE4D2FC29D1AF5D86C2152811B7006160E0C10C9308B355A8D9CCB +977C0C1F15A38887ED570E916A4B9DB1C5C185D66E23A2EB893159C878F260DF +0DEB2FA17D3B3C9B12E4CEB22472839A943C9F6A2FA7C43F18058EC133D6CEA8 +49AFECFCB4B58826FFCE94CECA8C3ACE05CE9F37E704C2DE46A91FB82D8DC4BB +B7D69BE41CBF1AF913FA75C35D75E934DC344AF3C355A362A6DD1FE7FF4E5290 +8EF873682A89467CA60BC92D539CF52CC6B6D3A523B80543E5C3DC9F9E33A449 +1F31BB6A7B0187BE46624468132A5E8EF0593BF2EE7AB6BE273A096AACD30EA4 +3FD9E298820FDAC002446529585DAD3EA6F6D173CACF66DB19F6E3C2E6709626 +888BCD57B74F4D4C6C176C1A2769E086F4B0078A0AC1B8AEF5E76FD50FB9A325 +0B9A1222617B120CB7F2A82FF834818FD7A9FDA5DBCCBBE4CDB522571809D7E4 +A32BA7CCB39365CF46930E916BBFA5479FCD4B026146AA109B8618647E181E9F +8BAE2391E4B4350148221188F1DF272E0D12116AE5F9E080732F222A294ECBB6 +E6F9FDDD209B70104DDCD2BC5DCD32D2F7488642FA598F92F6D2F450972784B1 +17F97BF0106177F0F23463F0412EDDDAC6DFAB560BE718608D35EC9ACABADEFF +0B3A92E14D4895ADF103DAC3E3714D8E448D3890232B6689EFD3931251515BF1 +BE0F96D05AE16D0274470CAC8CECB597CFF54C6CEEB7CB51001CDD3529059487 +E756ABBF7614E76EA87B67762AEA556116795699D9E73E5FFF3D82A44CA3DA52 +D547765F330217E29DA4CB79437FC3B5360A3CA6DFD8EC2677A921C47EF74592 +B6F01BE0402DF667AF201FA772AB42EC1565BC7CE8DF3FCC1E436036A002B983 +934052F8751C6E62ADAEDE948640D0E934744AFAE2131C80260F1D8E053EBD8F +16DF1BDA33DE769E86C452FB3915AB87E8EE3144BFFF9AE8F0EBBDA443DF49C8 +4B1B0B1A837FF15A6CC35994BD493853D06912D47AF688617314B6294A8BD979 +D0E18917EE1169AFB77ABEAD0437CA7F9663DFE025BC8BD052B9B2677015882C +948093629F5C4BFEA3D71E0B1770FAA8B62F0E5DDFBAB275B12426216ED4B132 +B0E1ACBF20AE2FB521D0CCC2A45822A7AB8CAB56FB40FD3EC8E88E78358C9A77 +2DC014F2559DAF8ABC72E6840CEC82A0CB6DA00C6CECC87590037AED59746B49 +7D5AC966C96EC223C08E0737FD80E6C55B2908F85E5D7CCAAF6D21D25CE471E8 +74047B1DA85949EE39E78362381491DC850849311E2C84C8B0B3B89FE45FE4AF +10B501DBDEBBED68DCD752E7FFF9F5FDD8A6B73C464726B4861430544D48FD38 +346A38A8549C85932C3EB09C1EE7DC5CB385CBD21873F8CB4A0C07BD8C4949F3 +104CF1A8A04CA7FB021A77EB7C2523BC02292E1FECE144E9E3F0694CC0615A7D +58A46950F1DC8B949FB818B7B6FDEF871F3BD4C8379CCED85FC4A754692C22D7 +AFB537D8D9F0A0E3BBC60B0C1C014962AEC019B8B853990F04A42AC9B1F7B019 +60F608B0E1418730B2107E0EC8CABCDD8D4A8B8D6D8B6B5D5B8035241DBDDD37 +DD53E2C528A02E13A44A7F188E5134A27E8A4A695373D5EADA826562AF058D24 +3EA38C1A5A17730962F63C882BE891D8B88333AED96061797568761CB909F776 +95E83C97192599557D1C23EE03044E34B13649996AE72E0CE1F295882A6DC294 +4ADEE92FCEA136E570B81C8B7E1B1401AF67065C1F6B99E83BB38E8C5A324D31 +B9EB4EA0F7AE66099CEF20748BCE485A83A647B679B9609B445E80C43FC8DC61 +3D035FCA0A510D1EE032561627A9337F7B399825DFA707A331D22BC59642F48A +03A679E33D08FC42DBA8939FC28A56515F282602FD4B7040948868A17149684B +2223D6351C7E66DA39205A75E8BBC3EF44549D6D2C384886C9E987ECF3B70C00 +89910AFC67FC6D190F30A10AA5B40075DDE65BAE827500CCB8AAB0D73B8E7A4C +9D19894C4DFB98D39D0813605EF65C57DDE5601A8D4189D2DA0BB5BE5A8D72DB +0DD6688A90C742567F7A65B7C543973B64DA48C4B5F66DFCEFF42E239079A076 +265D2A13A2850808507A37AE0523EDF3540173F2B24BED102B9C53336FAF9A4D +F2E0536021DC97A2C0232F9124DBBF37CA24311CB91B69CD4A00DCFF7AADC801 +637F8EA3B418C1AC9D1C2ACBB32CEEF28A858D1E50E0ECFB3C38EB4ADEB44026 +6A3ECAF61C1ADD67DBAD61C0B0A6544647364BFCAE9F3EC9C06E133407712045 +B9E2AEF564F09E7019C0366A7D54C442E4ABD8D3F08C91B156F6F0FE8692661D +C3D0E9E5FC8771BCF8455303AE34C2DD8C17F53081B66089B32045AEB66851FF +6ABD216D26ED6F9FFB5D6F8BE2E83E98B69547557F019DF489FBFA09F23C14DA +2B71C1C38AFFA0B3071E866534CC19EB71AA518F702657190A61F2906BD89D3F +F25D8B79C0B9564298581B5D753BDCD1DAD9A06569FD5E95632F1413B4C6B709 +752F83DE68BD1D8C83752079B66CFBFD77740623A21D85FBC05801A766219CD9 +1DC72278955AB0F7AFFDF9E9ABDA5E20918526BCB27AB3D54C79C87CE9CF339D +33335FA832F90CFA34AA41200D1B6D20927C4E0ABE729C116EB39E30F3A9FFFE +714BC12E520C4EA63BDA61A9759FF135C80384B80762588B0F4232493FC90BE8 +F85C95571926E0279006B018DBD0CF1B46BDF91F6A2A228B2F4DA5AF9515E57A +F7307C410DC9BF548EF8589F1760B8410DCADEDC1B8FB3F8FA0091F6AB9D2148 +1B061E8E2A0985CEC6E0C5EDB7D96AA5C41F946B9A294F6B673D04B8C9C7B86B +C41FE30BA0DC23CF2E78D333EF6DA8347A4B784CEC0FEC8C077445CDB87D70D3 +1E6795FCED8BD4316AE6537F776BC41C124BC187B9F30B5BB2F0D067A4C16056 +31890778AD2BF151B856417C03535C3E4DD045937D21D9C9BD7D867D92777280 +3D9585353458094A2C3B9B78B7548EB4F8FDE095720297D1B4135853CCD791D1 +E9D4911A2610AA33A0B045FF4BABA91AF4CB1A21C8F60F6C11A3D877559C7116 +F049CDBACD72B736C8494A60AE55D3EB0FDBED8135D5D47EF63AC1B3A86FA82A +236BA11607EC857B557BB67BE4CF848855977F7DA1491525882815C81EB91E7A +A046123D5EEDBE11EBCB41A6E9006C598C6B94A05260950E1CEE77FFE66DF8A2 +3BFF5868E74137C37865B91A2C98DD4CDD36BD08CBA214DE190F01064553EF3D +78C11ACA0452D37A1888CF924931AD65FC69EA1CA34420FE07B150D25BFB1944 +AD4B2AB42E0E55627C5ED76A531AF232202DBE3174F64A01EB453AC29836F93E +DFE0392B0759988C242A0C910E02FB4F43028B132FCA42D72A3A28146AAAADBB +3A47ABCC5F5D05527622EE97ADB13AA5AD4F5C84F799D922CD70E5E0E5AB2050 +07ADBE32E69691A5316C4EC71677EDF92BB7D6B0C6BAA25468F6BBB5053ADC6C +836A67D26ABECDE100D9A42123315AD1E63155BAC0218069723C0EFA237E333A +7E22BDD9F9A8223F781C05B2B4E1D23D6578D4A002851FCE51F6FAD1E6C9B23B +574EFAC945A0DAAD30374B57A6A34072F945BFD9BB8BEF6EFE726C531996942A +DA8A22C540B468865DE7308E8AD95585BCB265139160360EC4723429BCDAED35 +3C71CBABF2935389953BF1A2C1CFF2D8CD91713C7D2F928BB986CF1C19C21C3D +AACE75C62FCA59AEB791488DA1E2FB3A034FF4F77C1370C8BFF0A8654F362B12 +47917E9BE0784EDBC5C45DC3650F540287D85C488D9026618F8303AF9073AB52 +A3B20DA54816A75314AEA30AF65EB2FADB7A25F0412EC828B6E0B9EB9C93E5BA +C2B1873C725F3A88FB6B6F076C554CD4B4E1AF689A22DC8734DE3C0A3DF37520 +A2447AD54A7FA484F86A032CDF1D5E5CF665750CD39AC23467344C872CF5A637 +FE3A49B5887AD4D12DDE2424AF4C10E3D6E7AF1DFDAF0AE162ED84D05A70DFCA +7AF281390C864C18AEA81E9E8B35DF178C57EE716691178C0D596E1098D9AC96 +6283D7BEAE46AF47B0C8CA4D1CA7B8FC0AC2D19D29B99330A3A461F426952C4C +35F8176820D3BA2C3629B20D494FCA2CBF1E9C2BFCC7ED20491EB52AB11DFE89 +9B06968D8EADAC60E36D3CC945DBF5CC63570ACBB0D2CFFDB300AE5F5AD05639 +24032E7CD3297B6149DE48217CC895794B2EE28792A9E8572E66E0B3B4577F00 +F4B7BCF0DE94237A1977F20042D88B3673D31EAA8AEF0E153999E9F0BEA851B2 +44122629F3C628E0379B7B57A42A709D009B903268006A98C1C87AE12A8633FC +FC4E53218FB837E7B6E2E31DA0909BCA6BEA6617BD35CA0C79E984EF3844AD36 +8A838CE265083322176390B348159533F0A776551EFDAF45F42DE4DCC9A9198B +F8908EC816A38B85FE3341FE4504E5360D38BA6C62C9A7430266BC78DB5BB87F +01D9C5FD0C0DDABF7DE3E8A909519B1CE8D16AF8B7634C0496632E31FD6843FC +D757E86699A1F71544388C2F3A6FFD57947F952515056FEAFA8567BE5253ADC9 +46CFFC93B0FA514300B8EA7D1536894DBD4667FF8975BDDECD03946DE0A3931D +012BC2C850E9B833FDD1ED2C7E867DEFD268E21170F6E7DE7BB44F2B2798365E +CB446B6A381DE9D7B58DEF05838CC3BCC8065CE83795F0416453E87681D0F622 +7CC9B19628F781B658196B9AAF4D5FD693A278543F8C919BA4A6A4C25A70C32A +4FB65940531976089A99B9BA3DE2710A39D17CBC91C5386A266731F3496F1FCC +641E9CD3C6ED09FA7F55293521FC90F290EB3C4A85E9AA937D32FACAB6B3D1E2 +0FA9C0270198F0523B9BC63324DA9B4779012275A1643C61244C8A754E31B564 +A32DBEC7BECAC38299E06A863D3315077494863F9AA3BD84E919FDA2BFD79F8F +3E8576B2EBE51C4C383297E17679FFFF591B70A62247CDE1C6CA9EA1970ED119 +5074A3E1B04FE0C1266549069AA043DC9DC3A191601DB7CA16C4320FABBF8CA6 +07EB12F34280B081B70301BC3AF983F629AA7C0FE58DFEBC57C7665B046A53AC +3B9FA6618A09DA57C0DC4B6E4820CEE63730D124AAF56EA0BA83772795B9A91C +C9ED9EE4A21DCDF0EB03E3EFC1EDEFEE9C9F6587F34CD6ACD7F664D76AA9FC4A +23CC6FAB0DE4F8B78FCE9BF97A619905F38F54489F9B9FD05F2040F1A77F7376 +60D66870BEA87472B5ECD9E8A74DB6DD348CA0054F2A2860FE65279D7C5926D1 +B602339C841AA49B49F61810BC8C8A942A858DAE2E3A6E6B3D8D4464C89DE944 +C25FE3902C4F81C9E33E6F64907E6A664B28A2AAA54C31745A01FFA2A6C3A0F0 +CD388ED13C2E3BDCB0F4BDDBFF06C7C707660D60FE46E6515F881B786322F63A +D2D062C59ED0A58A55B1FA03B8F8671E376B0EAD9A7C3C73E2D54261086E6FEF +E7CA2489D97FAC2C7268BC530C9C08A046BAED3A9218D70EF87CB8F2243E7DE7 +09C3DB2777C505BB0A5E9BEB298E65DBACE7D84303C2A3D66C3C979BA9406971 +DFC9BBBA769942F6EE512C166B1057B78CDF20E990BFF5C7B825558AF4898D49 +0AEA5431FCF44889EE69F967F3ED018A63D6993484042C65E6B1E55298253B0D +C401B3DCBC37AFA1AD3FBEFEAB15171D21038B9EB2BEE2894F4779B52CBFBF2C +E285A7A7B66CC8C17CC5D2355EC8662A6949F25917F353DE53DD27A71B8417C9 +3F1C9D9295D636D8988E841AFFEA6C5BBCF9471A53E91DAD7E717D1D6E0157B3 +A133943BAF0F145430FE26DD67C71C1E1B7EA9C08745AF5C543DE1BC4C300481 +D2D27C565961C2A6C372010A9E87C5ECD3619B45795C4D2C82DDE4B611CA4A9E +713E81C289B8919A64A625BFD57FD1FB32F6B37D7AE8BE3169428061C34D2778 +8DAECD35AF9C3AA9EDC1A1C3A2EB9B08476D0181D30DDD4A6519488061F27BEE +D27D45D8FC64136E522876168F0A69BA899D2611D50C78CBEA1CB8112A4CFEA2 +FF4024D6C2D258CEA4E1672E3FE980F109D18B942CAC8AE29C48B0A57157A0C2 +1BF8FC6F953B2AF3D5F69DAF0532ECC754850CED71E4C55AA8BC19BE2E55EAFB +D3CB9B353F7C807C1111EF6A1FE7874CA19128B1AC527858B3D08B9962E6AC16 +84D2C33543C1932CB05DA5AF20A5AAFA2A0D2ED22E34C5A84E20C3D0C2636FD8 +4038EF3B8F2CC63E8DD6FD699E670BDE7C8C4871200746A11EE5DF24F3777DED +500CD702B48EE3C53F0E5E5E795D06E8C9ABB863E05B4AB326FE34EE841DB5A0 +31E42E31A5CFED8409D99143616832DFF3C492766B4DC1599AF98436A0B7B9A4 +06B6736DC721C788517B5D810E7E050452A9FDED35FEFACCB500E43C0F9C6B05 +D134CC987D90B7748FCCAF1A2AD022FB8EE35DCA020F8DB32F5ADDD0F2880571 +73C0336D0D6B37A19BDF6A6717AC930FC9BE78B52E6E839BF3A7B2BB4C8693B8 +35B72F954D8028E1B2BC67DCFC7AF9C3A198FF5739C68A3469F1FB748A311412 +9D2D648ED51EAF814FBCAAA29B2A904C91C5C213A951CE104AC4F9D3A9540ECF +0EDF088D1BEFA38DFC7A29E4B2BA3E73E3B0ED8E4918A8ECE0DFFFB36A82A6EA +2037398698C5CB1FDE6F0F4195DF65E224A2B7EC37CAB195372FAE49A25801DD +80A54683F90991590ABBA7581BCBA97A9A187596A5602185718AB74E76FEB50C +E2626E4DCBD081C2701BDD305F5578C2F9AD023451089111A7C80B3070A8741A +21A5F86634CF726914D1B8AFE8B5E7C4931EA668BB3DA8E55155D70EC31DF3A3 +8284283DB850A815FA2CC12AD3E2CD87485598662AD09D01776436F2979F3EE3 +68F0F87F638EB9862A8EC3BE35E7AAEDFB196606327689A0054F2A2860FE6527 +9D7C5926D1B730824C7012BBE55EA61303C2DE3216EC2143C5581EEEA7ADE82E +FEB1FD865FF57A9010952AC6C24419F68518D88EB02E56FDB864A94C96143444 +F125AFFDE220C701F07507715578A05727AFE0E0679C7A09A625DEB891F0F853 +85C21F70401680B4095C08F393D24869358971F2EA85AF5D63555B4C11F7ECFB +7B49A95CD0CEDC9BC253246A1E6C327AC0E934F6A01502182A1138F3EC19B15C +A26AFF3A56AE8849151785C6F0B4B4366F0E86CE9CF8612CA946EA096486BC61 +D5E3D6161FF6264619A9E45BFDF2091B9A5BE79FD6E1566AE80C2E5BE583C485 +E6D4856E611777ABF5636BB2833130BDA375006F647039F1FDA13CB751F69DF0 +F6197AECE4483E74C30C6B87C58EE1119B7660BB98E5FE701E68DA4F3982BB8C +24529461FA9EEE5C5F8C2FB004C461608AA5AC52BEBADC9497498134C0A5DC22 +9E9D659DB5F62D63AA49CBB1D3DCBBA934F1EB53BC01274AD039EDA0B3EC5CF4 +63B15517DA21F12131684FABA3D6551F5C636E91812F55B742D984C5AC991DF4 +3B30FCC77942D5FB8183EB2C6D08077FEEDE9629F2CFEE6BE1304D3B4D3A16CC +D345E833CE4163796304EC5FDEBE556F5AB65518BCE537F8F08EF8804E5575DA +E4376A85DC3C58C4C5A79903AB7CF1862E8A87CA4672E539CFC101BF81EB6C5D +597CF8B7CE2FBC4CAD3B53491302382C61D87C901D442CE38905EC118532CE50 +6F582F60F9AE244C9B47F2802F0433B7275759BD37EBC18422A48264F9A14CFA +CA295C846272F1FAC3B76D642B7D3A9DE62F479E98418A0D658B21E747100DED +E157E1E76E88462A7B6EFFB6168FB5D4D12985875928F63B8A148122E740231F +FEE7515658825297D0F8F7A21BE6DF5442E4C5F09829FB1CE5EC69F979A4A468 +E8D4D674F1CED8D74FB698F2DE07D109660592E4FD09646BBA971E35DE1AE985 +1F28DAC0875DAB15FD7ECA65303AB42696C6F9D3A9540ECF0EDF088D1BEFA38D +FC7F132A427E2B52D2823572530E41B7567B43078F1B33C1E0A0832CF9EFE9F1 +96B67FB77D05354BCEB87971DC7B2AEC2D550F182453E7FD07547945058DC133 +8AC897CD9D6F4DC4A4E0C288742FA54D25EF0CA4D2865EFC5983C22F4D124A7E +81FBD3B5931E12497664B563B823536257046177B2AA37519058625F9BE81F4B +C3F3C0D6A582932F7521BCE86FEFEF43B0828C6F8CC631E5A53AE43025DD7225 +A47089D95E425B4DBDE67840A9233144A053A6F0F24940B3409EA1437D71FF22 +F317EB80DF28EFDC0FC5660CE0C751C53056C2DFBA163B1C898B1244728ABCE5 +A0AE42161968E25306679E42C28566108E1DC26B66A73D5F571A697785553231 +2BBB8EFC9E00F43D8344D989BCAECAD779F1D00496857FFDE8F6DC195E944C61 +5707372DF45CD1150FBC0D30B9931E01AC4FECAD0B2DE38AAB0293ACC8580ABD +A2F5C8F7D006D1E04BC0C945F2F42A610E752D12E602B7DC8144F2F9A81729AD +861D424407A1C6154D05EC73F8C024DDEDD6D7DF3167CC429DBE1FFF5E5EB2F5 +A7048BE25A704FFC81DCD822178A5414AE673CC00C8D3FB8968C65DD95ED8363 +D0BEEBE9E2BB72A7ADBBBAF279DB1DFAC616AA6DA6742CA27A69A768E8D4D674 +F1CED8D74FB698F2DE07DE991AEDA76B839194716463616218D2CA36BD681D27 +1CE0AB9E7DE27B8F43A76953A8BD00B820B92DB768EB8494081463075F363028 +D78652D7EEB8BB3D2E6E8CBD8C84FEB4F3E3992EABE0A2C2BFAA67B0569BCB0A +8B04678D8B6A3D02C777124B81A22695FC876EB0DBD12E98D479D774222A56FF +821B7D9A3D2F5D98B39234801954331378FE1F8C0D34838868CB60A310ACE9C9 +67B1C8599D4CA423453D2D5D8A5E496D6E4EE3C5EE6DE5761B6881C0AAEED9EE +7B65B824D5289C5E8743F566FD52905B409DF1132A3A697F2913623626116B33 +66013629BBF8FD05CCC9D8437F7E3172682B6DAAD517BA4694445F938F01E266 +0E40F9C11AB86FC2E9C3DC165A58FD440DD94FF35AB6A2D55C6FB79CDAE80130 +36B0B3B83949B1CC8EA024349C57908F020BFD9915A591AA3CD97B845CE1C731 +321F550639DDEDF50092203DF394420417EFB11E46E74EC71EEA9AFA676E8693 +8C2556AF84E425421E0EBE2ED99DA89C2DAA208CA061EE7593E11940EFF64A79 +B1D04AEE8CB7587625BDDBFB17AA6A4D22F0497654C63C3E8CCDA45423AEBB50 +321C2D64C2D9F7389E5328D2C4B6B40F8BB24BB8034C42FFACE6E51A3BC5B449 +60014E288157394867ED03DCD95C8E37926B072D7A03598674EC03DE3D7AF258 +86EACBFF2CF664A4E0190BC27A69B0D37A4E26CD6CCCB41F8CEBED8473863BFD +2064A45E3F43EF0859D8DA17DA574A3D08404E8FA08109DA4C95D8C967DE0DFC +A4EDC8E031363111852BCD49BF320CB030996BC46F4EF5CC1A205F68F78A9A7F +11448806EF11DD23B73233222F1F99A1EEFF8956F6ED590A13951FAFD3B9C99B +0621EA2424EFC6CF0C2BE403F1C4CCB5E84E65EC9A2CC0256AACD0BE3845266E +23D69E36056B86D4BE1CBDF4657B480F336F73429FA46F04FD211DC5F7C3D859 +6330893FBCDEEB1886C84DEBDAC4178CD686041177A902E76D2DC2123967A3CC +0F8D56A1FD2E9B426301D60DD0A499BAB280D18F70784AFB3CCB9239F79557DC +32912123D72E780E28E5C6468A97584157D422ECAA97CA287AA467A57B586491 +88DB1B323E0DF559F1BD80CFA6EC4588AADFCA8784A8A5A74282463DA715D84D +A1CE262C62ACDDBA8B9E065A097F1D93BBCBB2F172D2C38C1D08AF8F62819130 +154C9CF36171F8C1BD16B6FFB4B957205D46028F5ABADFB21F6CC7A175FEABDF +8BEF67E6509C871759CD644343AE644DF9BD7173EC3983BDEB9EC38DAA800D5A +ED0C1C2A05515B4376672D2615A85645C630166D9A97173B53DBA680EFFD0264 +163D35020ABC90A4A8F545F220BEEBCE9EBC2D42DAC2EEFF2D7C0AF355897648 +E558E2A726F94FA68196CD177D142AD6E69933737037244D1B58C07D20286D1F +C2AAD084A4A189F3FA78B41F6D6AA442FBFA0CDAFED4225FC3178918605BBCF4 +37DB53D1C47911A74C04C34E976D2DA1636E1226A5379DAA2ACD6C7F3AE7FCC9 +476F8937409FC218EA9700BED3EBD63A9114F30272752554A147DA8F3EB84C32 +882A99B7C4EF5821393ED32F8DD94982C089B617EB40549496AA71B2C61840A7 +55D4A0D7C50FD29A563527B33DC891DC817842FC5B5C73992110DAC521982C21 +0331F12286F2CC46CE18C3988C8A32A60B613BBDBE9E743D5AB23257F9484402 +E9177DF813B148D14BAB9A08709139B8B237FD6868316364A9D52A6115E87642 +6C3E99484830F665785A04FB1786AB04B97BA473CA2D5396BD98346D45C0F861 +E429B2DA39B5225FD9F3BBD2DC0ECCE2408EC84F1E5153E4BAF41B81C5D793CD +ADF56B75C9A1D3A49203C9074924B6EE5D0D6F49D4586C663DF74D2E71C3F48E +826C6FF5F775FE96A51EA33AF2726A83794450CA543604EFFBC4EE2A946B6FEE +8849F31D2DCDA032E2ED2EDE55B790456989E7885307AC3C6AC2EBF53B5BFEC5 +25CDCD5EBDF6055A56F8EC22BDAEEE6F60B7200BF24F9E2A82FC866C1027AA67 +EC9BC077C87EB1152D6C0DC98AF498F009D32E9F6C563309F70102C8091BAC60 +92FF36BEB5C4F5C1638CFA5B1303F17177792D1F52A58D75646F162FEAA8A162 +FDB1356F5C41DF11978E575A123239565A80E71B6DD75F1BA31BB81C479A2455 +05752852C26BDD9934811CF5A166FF8EF5DBA62D5321CCAB474727D169215273 +96132BCEA8B39A8762635BC535C2897159B87DF03FDF5D21CCAB474727D16921 +527396132BCEA78C8D498D711CB1C7BE9460ECCFB206BD8FC01E85B41C636E94 +10FF7518391DF7EC2D8263397869151474B8A33FC1AE4CFA2E74ED5B4746BF23 +D60397436DF6CD99E6C23DA710E9007FA971D337D45762A0881760421B34FD20 +D2808850E7F331CBF3900394513E33CF6F29E7A20853CFB9D435CB9B04E4AEAE +DBC9A62B4A9391B20A9745747E0DC59CD8C445B39045FA1C00DF9610932E475C +8E9D869EFEBEFC2D23BA89EDA836270C5569B9A4B093EC16117D091F21FF313C +64120A4AEF3D64BC3FC2C4822CF8F223E475C53670FE538EF3A7246ED0B8814E +A6FDAFCF2CA51CD4EC20481BB25C6CA4081CEDE9F47820E8AD164551E5E45D98 +E73357DD90724C642654F712E92B839694A6B454A7550F55777F3334E81FA1A9 +11EC03D1F5A404F67D3FAD7FA9FA044C5A574B9489FEFBCF91A59FD62A998F77 +DBA3A320DE1C232DE215F079C3A4D0E7F4419B1A8B7868C178B53311257F6D6A +72484D383FD83D481291F5D65E29114631AB5BC3F81A8CDDB5880CBCD574930F +0EF11892D02387F47833791F13D07C5BC58C2B40D8F9103CA7DF50B1323FD7FF +80F8F28E7BCE01645F1D3DF67E58EE6B666316007C1E3E85E3EF6E1A95AD668A +3CB9430A6E272F9C5DDD215323B52F1B1204F58A256B1F9860C4F180AC1F7C1C +713C5D631F0CC9792EC80B5193BE0E2E0B076A9BE36295B732C91B233C05C64C +81905BE1D53EDFE9DAE60211B154A5E956A05C47455AD26DB3A96B8A8E037FB1 +314987AC57BFC85F5F4411ABD990024BBE8078F34087ED6F63D690DF2B3904A6 +D968D1658D355A40D9A42C9BDC25F2B1769D6E7485A009FBF484766218D64196 +EF68407F36151664AF698CD4C3EB890CC31ED465EBD756D57D58638D06C4E298 +DF43C837324B9DF8C03A820849E6F7E07842D05FAAC5784807C0C783B9274F74 +96C264E1F6FAA1EA9C892931E04FCBB58A8916C2BFA9548D54E42997C3EA2B08 +8E277819C90D6918118727A5046B8756C375626A290AB3E386723DCBF0BFBD20 +D50EAA7B8DFCCB120DD85CD390DE7434B9F7BC588FC573D3BE317C76109452B7 +3C884735A73396569AFFFBBC97BDB258737196EF3357EED11DF3BFDE9B949049 +1FCB97EE45B95F25469CFC69F443133F6271A5EC4407A3F35CC2762D2331F145 +758255878CCF5EAD897A29028CD8F7D7A4E37EEFFB76615D0693A9DCEB08737E +D9957FDEBD5B812C06822DBEB4F6495F235BD056D155FC61EA5D8268B2169F73 +BAD96B899AB61482A56EE609C160CEE55B1B17DBE1B7FA91E38925B0B431DE78 +AB99EEF1B534EA1357D4402C9A1A7FBEA38FD84EDFF90FBCAE881B447460B4F9 +33D20999C906F97AE339871508009DCFEBF21EC9DCB38D6DAA116EFF8D2CEBD0 +135F610B1E22C2614EFC317A0F45F9398CE8E129BE54784D09FEB19E7161844B +66EB5485BDCAC61AD3C0B67655CA63B82532DAECD7C85FC252EB0C4F03A47E29 +FB0EBDE77D8926CA04E79EED3C13682B37DB110D36885604BC92AC7CEA947457 +36395AE80D144581AAA81AE1F19E42A648A6E95484ABEC0673EFD310D8E1AF66 +560CDB43136023513957B83DA89B4CB80958E74C3EA705FC87AAC56D5766AA7C +3CA75CF182910F9A54F00A4C23BB56F30CE1B917E1C6BDAA4B848545A6085AB2 +0F77D2D30B1EC777F3BE382D95F8E162AFD991B8C6FDE9D734060F4C05089C1E +69422DCD2785088B3439EF45983A3E06FB66907A6B3FB59E2630BF0BD422AB9A +FE39CC6DFF639284D4B9EF000D2BA97AAB20290F6601D6DB3C5CBF342894F60D +3490D82E9F972C1086C9A32D609EE6431DD24BFECD4BB7F40C547C49B3B05AED +0C46468A65498C6689DED9CA26907BB52F9DFD820D9CEF3A77EAA76A0298DEC0 +DC0649677554F85DFA052A58BFC5E34E9F0E5D642CEBA1AF03409D7C0C2C6126 +B14C41C029E9A4E73208817B2ED449F7F197AB343451EFCAE6D14E9CD01C30EE +9B070133D39C10590C0709D916961DA6DE842293C04E8D702007937AFECA8774 +C94C878EFC6D7729B216AF6B2F62D6A912EEA20E8ED9ACD81DAB03B2AF2E61D4 +8FC049304932831F4F985A891A32B18208862AA81953B1C6CCEA973F19BF41A5 +5E0FD41B45FE7F8F1B606256F303D2A4D4209ED49D5978E0CA83B5BD48E829D8 +16F9F8C72AD8DED347576B2B7F8125106354DD50A8E7026A69FA83D865E7CC42 +40EA70147CAEF216A5A0C8E4220567B616332B9C10D02931932BE649FCEC02A1 +E755F1709B0BB440C0CAEDC68F6DA4FC6A36A451C0D6A9D442D6F6CE74A6DE98 +C0D0659D11019FC9D641FCF55E61860FE6F19709D2A7ED1D909A13BA20AB4B87 +8F282E5CD3DAB1EC48E802A2AC1D7B8221AB5B3DF3D7AFEB7D980867837CF7FB +AE1FD6FA933A1742F54A8A8783F49CF037D0F5BD2072C8C9C1F2C36EA7D99613 +EC675E9D50EAED28FCDF70A7746931E1E0E926D712656123A85D6A7D7C985A92 +A278BCC9B334D94260879AF4D7DFEE6A8B6322EF1ED8DC437DAA354A38AF855B +D2405D01D18D8A635B1685C606C277C9B2751763F16FE1D50178B81577CCBC21 +7BE0F74ED7606D9EC66A4840C1DC511758511709BABFE9264F5A9B6A54753C60 +7593DB88862B2BE3AF10DAFECE244C8BF9D1836657417FE127C2158195BE62DA +BEB20ABCE5F8B0275FD32BD38D49918EEB5E341FE62A5199200DCFCEA610B77F +BD96C7B1F0A61EF15E523E9772E36AC25F340A41D3DCE453248E5B44D5A4E5B6 +BEF59968C28314C840655C45B8A0E597F7214CEE90247426A72A244E83F9B14A +B9EBCD9862752C73293FF042D1D0DDF0A49EB9AC6353198D6BCEA448C1F57FF9 +1EA2A00BDD92D8C6BDCFE812571F904BE747CE927B74DD22DDCA75A8B7830273 +15D022A84728D88214ABC525BA138323948002637CA12D1B5EFF33652B5A4204 +2A65608248E964F86E1D0D879EF97B5715A551F448EF7C84CF7718DA30660F5C +BB05691126CBA8DCB4B6FB725A1CB6B949BD9668FA6D9E2897EFBE90A965D47B +02FD6990E5B89A772C8480DD7F7A0A2F452FE8C9CC6CD829EC27C0DE73D4285E +E894F413C481A4A323BC5D249C4D478348E24AED240071256C049219FC028931 +69105991421BF32B6FC67EF66017F71FC05C5E7DD371B5F740CAB67C8F9062C2 +A5EE816FDC12FCC55E68E3FD274604BE610DEF6C138A888FADF1B340774EBE13 +E3944738A8BB078DDDDA14E72A18183A7BC46FDD56C2DB6F530B07F5F6267F35 +500897F21C1397F47662E2FF2F675AED3FB8BBD4E18359BE29187C98445FACBF +E2D67F9DA4FF163B4F2E97C6ACEDC3DDE0D6141C5A0DD35B50173C7943F254E0 +7AF2CD95090958F9C5A434C2066761E3120C483720EC38E6DEBA2D7D26FB00DB +DF965B36C4755908E5D4E8CCE69C62BFF46B68BAE8138058B5A0E098938E33D9 +1B997801DB5689F1A9FFB71AA3AEBAC0B57841408EB055B3A6C90A3A7259FE41 +81181EEC09161F1E158C0EE0905FD2D301D12A4992D71AD66972629414ECB8A0 +C3780D8E94FFEB09CC992BC0308D173F63184DAEB5B2B6FE120A8F65FDC80E3F +59461D90AD4C111A01617FC8897D0CC0A750873E81E85E712BACF69BCE93C625 +523524D031915CE4DA13FEE0EFDD45086905342286161D1BE1745695F1CA1DFB +2F24F7BC44E71AAB773A4700D4959C9E619156AA78257002F17664985FD115BC +569160E1D3B1927B807BDFBF9E5D58DA0D0A1DE0F553FE1D41132A429E81C5E2 +890EB730EED0EC58FEFCB8B10B6504A83BC772E7E821D9E0D61AD64C7D1C7278 +99C0854537A99E4DE89C32EA8BFAA83629624845006C733EFF49721736BFE77B +B79A2A631936FBFE9495FCB311650AD46B0EFC62A8CA9632BAD5821F1DFC99F0 +27148B083F68944197844C1A663BBF1A2221E27E4016A408C13093C53E2E360F +C40DCB58BC11BF2DB8C76C285617B0D434CF4CD168AE5844558FC1C5B080C962 +D5D7BA5D4EB5A179CBBC901D926D6E7D4C105DB0F991F9FAAAA64F0CF22FE4D6 +7B449516E9B64C5F53A69EF65E5AF6CA0B62165B529BC3298F5E69A2BE9F91E0 +9188B6DC71C84FBAD0996F754ACDF1099DAD80396BA6046B64D629AA6FCE353C +F60241BB5C5C335F333EBE6F08B9F29B0D4110C328177D4FFB05A160BE41FA04 +A03637D5F98FEA3576D096C266B7536196CDB6B383B066E969C0D0EA37F81919 +CF145F64AB8A63CDBFD347616EC6C6A4CF3A4DD4E40EBDF032FCEC52BE9B3E20 +0C7166F1106288B70F055702D827919A0F5AE12E349947714D905EA1F2C73A73 +6C6211E4C2FAC2B029C293653F266B625B42304FC9EFC84868BD70C437B55086 +E8EE6369093BF663259FC09E5059B8A6F45B34C6F41AA44EECFBDB9B814DF522 +3B94F37F2A9A8F91A1BAA3A330A4B6AE0959BE0499EB35DB8D805A175BF0F4C6 +9DED9CA2889D596ABCD7AA6839D539D07EC62AC3A626A9306274632305BDA503 +199A8DCA401224A933631D844077F9865728D7AB71B04201067E924814E4022E +B4C8ECF80C851E4D571A9BBE092B8A67802E7057E6E943CE6E9288503B64A929 +AEB684842567F8B7E59935482F694D04B50B4C9A48824A694EDC070A1B84E2C8 +56B07350100C49C8F6609524749620F7AAEFF3B4CB8EEF8435680C28C4450485 +A9776B0B6FEEB1D760008F86DB2D053604D6F0C9D172B13E00C416269AEE0925 +278E73C9CE98D7660AB100E78309079CDE35D03CEFA0B5B480F7061A830C6F28 +32057134DDC6DEB9EB95C98785930BA086CED7A22F270E49A626257560D0BC57 +6B1DE985AFABDDEA53BE3465E603856541404FB4F2400143D33E228F39480D89 +5F050F420D81EEC57BBCEB51E7B22823CF9073F795F8C1C772122DF384B9ED1C +52DC300EB34672AA7A05F3ACF719E5F6F67F39C3127303002CF61F7B0D2D0CDD +FDAEEA90B72B8B1C12E53063E35A9F0B2A969EE89F2CD70A2658568E53E7DB37 +9ACD1ECB37669C1D758D8C8838F083C7C42B004AC8310401ED4FEF2B67C91AA5 +13465DF0D603D4AAEB0582BC3F61578FBCCC5A6A80FC28194DB2E9523460F113 +2B710653E4C7AA6F58E27640C9286D0699E5EF9106A3D328B3AEDA50057C2D55 +F3834E4FD99F25FF2267BB6A6AFD9FD95E0A2524A3C7BE14C9F47816228221BE +2B99735E1819717C7E8DFC8A63CB96B2FEDC321C72CA286E60BC176A6F0693FC +BC24C0033AEDBC392E1AB1933E62D956889846E440FBEE5A99FEC73669815B26 +85B0144AFDC37E444ADF19EC7408700F3ECC8A9A47D8619ABA8A29D84A0A1DF8 +08EC868A70CF3E6292EA19ED2A9D2D35B6F5C856DA403582DA47593059388C96 +0DC5E417A6AFF751439679AC13C9248C1F78EBB8E1DA459DDC905D2BEB7D8576 +4AB434DD0454A1DC7694F0F5158C73DE6C8C6BA093E21FCEE10F6CFFBA5265AE +81771280A05B7E3A7F4E067B35810768798D41A01C381D44BCD4A7DCBDBD17D3 +843C03ACDC482689F52741B9343E725BBD6793DBAFCD1D69A7ED0875F8154160 +3AA9C7FAB549A34C12EE82A603F7F0BA1EE3B29FC95F6948B0A4327C45AA1601 +8BD2EADE30894F75F8154F2ED766F8E9BF4FFA5207706C85DC812E7F53A8C0BA +A519DB28841A147A3C408D356E9E73D9DFFCD14AC22B28F79A1184AE8A4559E5 +1BC0E5ADA2DF079B125A6FD8C1F0AC6CA4009F481724A324D009857C0815DACB +B16A94596C3FB731FCA01BA5A87216BB47EA1E94ECA3321BC6CB30BB145AFA8C +334E235B098FC21054B627761FEFE53E5450C376D9CB0C2D50C83C5315B312D9 +3672AE4D46CF443EE8EABE39681D146177DA4E1F123D4179D032A41A7A5953B1 +0A16F7D2DB36552211147BF43F20C60117CCDA239FAD201281FD1A922EC156B2 +4B0438F4D4726D6C7E1FBB75C2E85A970E5485E50C54FA5DACB546F4B2106876 +33DF8F377F3A3A4867ED0311361D3A90FD41D7D004E6AB91582A6DB922C00FAD +AC89C3FBF4CD88D71DF2D474A142632B3957EC2C9E2CC829527B5FBE0C94A61C +16854FA9E7CAD4E73A00CDC28EAF287D915D88BDD764CCD2A6457CFEB693461A +A7CD29589E8312B891BDD5C96B87D889261962FF3C7687AF8C33E100E665D447 +D155A5099B5FFC685FB82EB0F69FE25AA510E2A259029FB1D8B85EBEF343D9B9 +328CBD16AFC651DD81C4471C8C6DCCE359194D24B61DEADF7E80AE9472D24D1A +D173E3A0E8EC079FC7306DF007F959CB1D924BA76FC4153FF854CD935E4FD3DE +DDF1323EB6CF432C0BF82FA85A14D7AB83828D817ED27C0CA502786A3CDA53E1 +A04A271E6E155A178EDB2481372D2DFC3B7508CE8F7B996CAABFF1E139E4A100 +DC061622D252B15D14BE233ED760DCF8A41EC5DB20A1A31E65D2B72B6CD27253 +241FE708DC379A97E9CFBB48E2D179E446F62FDDE1628C3189D8BB90674A63C7 +F375C98B35A9BC9DB6238E3666DAAD62E44748515D10599BEAAF61DF959B0891 +F77206E7BE430171D9366916261F53F976AA0F0D15E96A704E02DA482A9AC0C4 +6F6F916CC45D5DAD3EA6417145F1CDAAD7F316ABB1B8E92D58D92B559C651701 +9E9F5E1D5FAA8C968A067D18A24C92AEDE370D90AAE2FC2DF35875695032BC15 +12AF941F02F3965FDF7154AC82BE82ED03A16A56CD54498438FF0029899B29F0 +6A7F47A1BA1B4A0E6D11CA31DE2E57C724D1040B9F29BF4592CA56027EC1E1F7 +212C46666CAF64067BF71A790E671A4FED4AF70FEAD43D1BA538A56F28532E1C +C292AAE0933945FE289D35150AB86DF1652FCF1A594722B35DA26D2CC4946AB3 +16E545C3D62648B98BC5B01719B6BA360CF40EC94FC7C57A58A84FB87CCA0B0D +114099AA744225D210E3C7B7C7164A1787CE359F0D2D1B7E3335CFD598D473F4 +9CF86B56856A57B32D13B7CCD5778B74CA5EA41238366D6D8FC58CA3EF85C6FA +58661BC609B91C08894191282A998B64531F3430214245506F61619DD529D7EA +C23ED74A6CFBED5BF10E47DE48BDB93FCB6A080CA1560266940A5F065DB4CC1A +8D103A8378BB04646FA81518FC8442B2B043560BC474AFB52D5B21FDA0F7E796 +31BF1C84AE44E422BD0A81D08C9DA024A018D8F192C78564E1D528F25113007F +E8CC6DA373B1FF3D770FC6E5B9CEE80ACDA82CAFBA1010D0C1569F7A44BAA6CD +F6DC04270CDAD544B4DA1D154AB7B5ABA2275B19CCB53C773648A008C1FEABD6 +1F4D52618D9D0CDC82BEDFD4F24D032ECA7EE847E2BF866A9703A021D92BE7AE +13958848FD12CC334099EA508F6062F527E56ECB2B8C06C4A8209B019D377E6C +6C3CE6041D3196E6D4F739DAE0CEA04F107E23A4CEA03121CA257AB808C2F410 +6CC02BDEF3B6879C7FBE7107292843A30AD10DFD2FA2FBAFD9F21FED3AEAAB72 +527D34F7C2C6D815C8730D0B2385DE91901D35E15A4C3E20E34D945DF1062751 +BECD293A234E4EF37DBC3536EA62486F252D4B5B649AD7205C7C3E54914C21E9 +24CAD4C8A38ED8C9A7BA4184A2109F826D375D768BEF6F5457F17446E9F0CF33 +5653BDA5E6A34031CF04776AB70F702C48B70912535F4D6B7E93D73E1D2563D5 +E2EAE63436C18507CB85A979E943CE83B683B7B717C013BE30B25E005A2761C4 +665FFF334C1ED88F726095ACB67C1C9975FC904460B5F7B5515EFBFB631F557B +E9D7523EAC0C4D48DFB41373520BC295888E160246A4BB5582391595BA44287E +555C8B1C4A1AEBAA798689D57728352BF499DA66B6BD0CA54326AD24F75C3C2A +99F3BAE69C3AF328B7E368FE328282620FD0FD606F16DC5DEE56FA7F5D97134C +9301E6EA68E7D2AD63BD8ED084DE7F118DBEB6022A43C45070A16936372872AE +FFF73938FC17B54CF998914E8E5270198BFF37423F58931A8672404301A4018C +5DF7054306715ABB311CAFBB78FEECE2702A94D29F10D31E70CCF6C3768538C8 +BDF8D84FCE7AE99AE090BED4D00278AD9F6B511C051D97DEEB48281EF13EED0C +2BC1626159C4CE5F5A2234465BF364472721EAB27253F23650E2831390157D4B +08321EDC2CEDE7BBE078D36C5F076048AE36DBC5D85292600527DD90B33260B6 +C998121B28C932B88A921857F588C736B45263649551FC449C55F25E58294F74 +6FFB2F422D5A9E6AFDD5BB621B3C162D8CE6D76B3884D6CC3EA5C508C76ABE65 +50B8F700BFC17EDA8B4C46E64DB807A02B2ABC4E536DF0F51D0870CB412B6FA7 +A30764551532AC7A4C15327D1C8749EA2F2FB990DB033AA56072D4CB53A73352 +F85DB407E2A0DA68BFB1D5623ADF9B3BE33CF7840E2847AC6ACC195052C745FE +97E72217D2EE9C77EFD2BE59F66B3077D3030996D30DC9BCC8D943B8F296EF6C +5030649EC8C4EEF9AF1A7488E54DB60F2E9E3DC02DFA6D8064A7E8AC5A715FC0 +9124EEDB082A036F11D334A32CFD353C6E865272F6A2E89BD0882F73BEEE1B96 +DEBE48D9641E954D942674858972DFF2D5BE4D69ED9C0B716B693F34BCFB37CF +8F1AB4D5A441B7BC953A520EF8094C8D7D3A6D7A374144BDCDA00F2E8AF61F6D +E3ED7C478C30EE1C263851F22DB0419E5088349484DE2981847B5C893892DECF +43C82CBD168924FB67CC02FC8F74A3C38276A77F3F684D25D7FC0FA2EFC59EBB +6B64F6E884CB38F830AB55E6CE294F1CF3120E92A24130CA32426365C1F31FE0 +C0EF0A22C323CB296853213A566CA9531FB0935EC45D4BC084CB1360D06C6E57 +BB1E994F38B6007B199AF42CC5EF58D2C3F1D82B8F654A4A769D0C8D5BA71EDB +8F17CB6EE1EB367275168024B7AD184D360552CB3D84EE25C9E3D8CBD2BB2887 +219C916F2AAF75F5741D0EF52D690565C1ADF82FB850E23C10EA528A873A89B9 +6DD0950AFE103E57D152CC28351F8D3C42E31E19EB2B51868E470C879464E798 +637D3520D40247C092A07F7BF394495E705AE6BEEB1604455DA167E6D9CFEE5F +D0F5DF863B635BA3D931A4CC7B1AAAF2436D440160F87E499D310584514792E0 +80F79BB39E01267BD682256B8D1677C6CEF77DD93F347093D694FDFAFD14C58B +668B63C71ED6DAD9ABAFF21600CE7C374A93D9A122DFBF0712022549F1C238FD +49CA54165FBFF1752595C99D8D81DE530D04E61D5EE66E3969EA152D36B9D9D1 +7F0D7CE57B9AC11EC12150D245207B5E5CA1AEE7341D524F394B2B16C6E6D022 +C4B40C9E2CBE1006B1A7CA889878A0ECCBF584862848E8E0FE7BEA2DB97B4D60 +2144BF1FBBD9C4624F7A59F4B848421B25C3A488C7869995AC8543FE64292291 +AAF6389D9EC70C32EC34BE6F634C3CCBF9642EF2D3B1C98DDF12E07034B91829 +FB5D73183F2EE43309D3D295D881D334F7606C44CEBC88E5DC7B7A4E6FEC8EC5 +5889D66DDB7DE9E64A883239F5F91D81821EA2EF97D9E7D19CDAFBEC3F36C8B8 +5F6A853BFE3F8AA5483B78BB043C948C56590C009465D59425C20DBE2293D254 +DC4F748E15C8FBFA3CC5B72A9EBBC799C4CD77F7FD6ACAA4E2181F84A5560D1D +BBACEC388A465951FA900F6474631EDDD5BE985B41D888B368CA2ADCC0017A25 +D55C65B4672C2C7D54303AD2C2F98240EEEC8C2045B9C70CE4EAF97E27638658 +BC2C0F75478126372FA0A4563E73662117F368487B2C4C089F7867ACC744991C +AD2B22FF23B9C05FAD99AFC50F84B48956AFD2E2876010F4EAC9F047B46E7612 +EC88F0A73014B5C0A181E608E91B7945182D6DE474E538A069B37A5D7B72D289 +E6C40ABE975C5985BF8044F1B2C5AD2D02B3F32BAF75F468B69E2B9A39489EF7 +4674BAAC63B696FFEA62A32F01D59FFC0CE7DDF3F5E490B8DE2052508A71BF0B +CED996F90521F5FFA74EACD1F2A26595996A744FFD3DB8F6A7D5DB5FE708FE27 +47E6F9F3B0EE281D70C9080D2E7A95F141B71594B9BF56ADF18898AA3F797511 +C0CBA6B5A60057AA7A010D40140A208F13F63B540926BAED140C2E5031FF0734 +0FEA6FB90C7B6AE67DE03E648DAB8D0997711D567E326C2567E3A6635382FD2F +77948AF208BC1FCC383F6FCDEAB1346BFF3ABED3B6EB1ADB3FCD1F42DE5BAAEA +9578FA36DB4F842DEAEE01E564962AF86DEB1B1D3B90196DB3F20317AA978C92 +28626A79357028E6171DFD10C7D433994354B97EE9FB6B3BD8148D546EF7BB68 +0FFF9D9EF509C8A6097F7298AD3429535C61B93EE5A721153F5BB77D006DDF00 +B795A260F6364EE5583BDC2441CB644FC9A38844AD5128C54368AE606FC20A5A +BA27296E402867D8D0D8D3F9B52821DDFD05A6F6697807C72AF2F535326A6BF4 +F1280213FB87B20C8608E7538AA8A4D3BE39BA00C8E42C52FB1AC3368A85C714 +80A55816CFCB6CCE147399B341555C1A57C4D490AB264CDA843E61285F0679A3 +FAE4D2891DBD8920FC62BD0F57799E40435B02A583B1824F4A53C6221FC654D2 +ABAEFE5CE9F09AEA3B2DD30F8FA202F32B8269C0B331CE6DF26B475123EB706C +16D49253D26926507E8B34CB956F5EC559AA28C4351435FAAA1DF544FDEE3BB2 +B9976DFFD447EAF9CD6B1523A957E696856047B7C8CB5A8FC2DB216F7AFB12F0 +F72218A0F75D00CE3CEC87E9C3C8BD733D2857B8AF7845E631F58EA8672ED5F1 +87BAD16A8848E15805406479FD7AAB7D3CCB345DFE2CF3EB005269A00DECD9DE +5EFD41A68119B19664E4689852424A356B6314103F965BA08A3F406607796D6C +17951974CF745C4E5E4E82F457ABFEDCFFF50A793DCBC2F7E7D15060D0F213A7 +9A72135C4942EF7899AE863A8826DC364FC4F2446D3076B6461FBC2ADF3862B3 +FE16F1D7EEBF8F69AEB7AA0E7415AC3D824F26CE9E90C5FBA54EBBDE5396D69A +831F44BD2B1D36C32B5375C39F084DFDC98E83155C216284D3C81340EC3E2AFA +D23BFA7A80E189A16930080002807AA10E86C325F92526ACD1FE1A8EB1CDEB14 +BB426634206653A83AF8359A8CDB2A106BEF7A6638462265FCD2214C570CB35C +03C30B1441650D05DFB608A4F188AEF43EB8D4D3CD8210F062B2EDA3E0B1D4E4 +6F38189F63E5011DC9323B31DF71E337B9D1503D98F8B9F781CF2CB1CE1DFB46 +7A02D0579E227BFB9B245321F311BEF412E89D5B33BD1A920AB36868454F5BAD +B50474BAB0E1AEBA710C97E1934B6165EAF0D8F349D9D6C84F2229949F6A0384 +DC52D36684D189E5A4884B7C984F17DA96977020A15D73997026432AB5E57A31 +9FF5FDE8DDA59C95FAFF01A1429C68A031CF9F03D81310A240EA66670A2A0E15 +474A38EA2FFAD21364F9330594E3E13B2355AE5E394994CF886910D38ECFE2CD +DD6F76BF08F7F69EC05406CCCEC2A5890996BF9CCEE685D8970548D36B1F1FE1 +1051DDBEA60E3615BAE38C09C54D095FB89056C4952ABF6C6BA4ED888385E986 +374B6C412D8ECFDE3A391451E289DB65337024378F046C01D81E9F90FE600DF1 +05B2903A796C8DF5340B575B0E866C80249540D0F536F8CF37D2851AD2075562 +786F40D55606966C5BA81FA7B3A0A067F69C702C3A2BC742DDF96F69A81B3BCB +A1D9A9A7A85CA323D0CA0A907E1297B386668E5C42970FD39ABB0D80367C3016 +EA999909CBFD2329ADD9F88996485AD0E8602AE8C16C38E00BD50558B797C636 +920B0E56DD2856985FD264068AE21F910DDBC4CDC3974F48D0A83D05744AC318 +B23C33F61AD47CE2F6E987300921EF57200B15158D6C72DD5A62207E7C265CDA +8C1FDDA40525D4D7A8D30C5D25326DCAE68CCFC4F594F746A3A690BE8E93A838 +9B0A6C0EF4CB250A32146D17B6AD5F89C77E70E0D8CEEC2D5D07306D89791006 +7FF6CD111E1FEC70683FB607EDCD56ECB17D002122578FC737799EAB3F0E9E04 +DC1D9969CB1B6A7A33B9DBBDD75866ACBAD21FF10C1B0CD2A69247CDEE497931 +1DDE8FB1D84C1FF4B8D878B4681997BC71F885219098F3514FDFFC021E6E5442 +9326C2C04C9338999A4DC515299B69E6D4E85A029E39225F7450F601923BF882 +04AAAEACB76EB5A2B053A771315FB5AA1F1FCD1ABEEDAC20222A35676CA2C981 +F2CE0AE95650DD9C8A5DFB903AE19052DAE900D525427A07AD144C06229AE5B0 +5199686E3765942FA5B7117B9AD528B42357E76197012FDE1F648F647052E6A7 +76C4DF1E293C65335C7C32FC4A10634813AC4D66567E8646A22DD3A7EAF12D85 +AD9D99112995C8FA4DF5EAF60BCB4B55F831EA17210CB075BD7F356476E59C4C +3978C98178149E8ED21B7DF788F058429A81FDB587346126EB9EA1F18D8F609C +DA3C02736F9A2F4AD662FE135CF9A8AA0AB46556310351EF7297170678466D85 +B5EB39104414C3FE40E74F2C0AAC846F2AEAD9A6117CE3E99BACC5421D866B4E +2A3C520CFEACB66E4DCE01F203D6422834186D2298BA7DE872DCB6A73B1502E2 +50F725646959B9A0694C62D7D6BE174F41B205C4D70E2ED1CE29AE6718471DAB +4D7A02EB6F0253FBA3943E822AF386A0B9B7EDD31C8F27874F26CA72CE04F393 +124D9645950F0C0CF2A26F7076061ED6D1972426E1A27A14E2C4C73395B4DDA5 +EB02C250BF7B53C0E3D842BBF23C3DA12D22E5366A6EDACAF0DF89A0CCA3AB4F +8447BCE602F04CB49A89CEAF19426BFE3CE91F0F77574591B426AA342760E381 +72D69B567218FACFABF7570ACE9CB7D14C353A73015F2E71BD57BD9F2C0613FF +2A19F7748047B88AF8E3AC739CA8FB696B9B9546398FF98C3EE3687DC684D3A3 +06507CE6E21E9DA24E03CDA81E0961BB8AFBBF04BA7B0943924BB104A6AF0B7F +E831A28CB24BA2D838D011528B7B30EAB56C0EA54A79FCBADB09C995940380E0 +D3A9978FC429959076DA6F71FEA5EECCA6D56AE393C600C910D1CD1BE23C1D68 +012E155BDE1F13E7FDD1F45B70EBE12B8C95FFD29B5CD7D90B03750715B74039 +2F2A40A9823C0F78A59797BD20C84D3F38D7B9156D5216CB4C5AAD80D755DD65 +9E297CDAA54DD5B71D18DD01326BF540487DEEF99D36EC +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFBX1440 +%!FontType1-1.0: SFBX1440 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecbx1440, tcbx1440, labx1440, lbbx1440, lcbx1440, rxbx1440. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Bold Extended) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Bold) def +end readonly def +/FontName /SFBX1440 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-218 -316 1652 915}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA0E2F461BA16EADB32842B6D00C76EFC613FE56C +378A7118B0589B3EE5425457AE310AFB3829876138A59F58D965843B709A0F4F +D1AD54875BBADFC803A755669491D9E98262991B9634084E8E2BE46EF805B219 +D18DE35ADE9A8DBAB7AB761864BFB6A27E5B421C32CEE4569624D9308A32B426 +FCFA5CEB883444393CD7A58F9CD522BA73E17492DDABB7E00B2F6BE47F585EB7 +FDDBFF33F1B5E5465287717D1580105BF3929C09EC621CEE9606EC49D7051A00 +11935EE728A2FD47BFCCF00C93EE54910F77C1CB8622B9CA129D466746BFE1B0 +594A9F0C785F6CA67161EA1480AD4EC6781B9CAE9536F5D3AC6D447F16821F77 +AE2705279CF3DF4E1E9AED81A0CBEFBD61808E2D59AD970264A5B66D1F399DA2 +55BA0AAC8EF1A1E16FD8240D577F5E00E0040EEBCC193F074FEC48DF30882551 +E23D64EF84283F9640AC5F60EB1F26CDB79078AB0C0D97D1D6297D092380D4B6 +6A2099F06A513A78A3C3B82A6DBD985A0DCED7150B19FA42991A3D408FF95978 +15D309AACEA8C5C0AE812F50330CCBF47B4759C550D49173127DECF05D783DB0 +978A366ABD3CA7D9BBB6652459A5E19F9630CE75C2BC7BDFBFE0EA3D8098CBB1 +98CBE02F196C0A0C5E976DECE72778358CF8D0A79A8B5629A6322716CBFBDEE4 +934E8782E716185235712845BBD03896BB5C45F3ABFC920F7595F7E64231EC76 +6FD974A9546D7D4EF18E899A4ED4599128805F5F221014E3FCFA9DED61B94339 +41A5D49FDE9003CCB87F12C13E9071E75E133F9A94746DB7CB534D1AEC95D57B +12D2EEE881D8E9EF87B4DD2118087A03CF79E3F4CB04601265FAB3AFF04E83D0 +E9927B7F75AC1DFC3692B957A6C0DC4955489F4EDC32F829B64C360D586E5642 +E5470B87312CAE26AA137B3284CD6C48B1EC3BAFFFA8F7E50CD997B1D34F6D0B +B47D8B5AE4EB0C6234F7F0161AD5F05F3EC4BE9B7EC2113DCBD52A2CCA91C3B9 +2FDC81309BD22D737952612F69F095B2FC7E8A633B37DEED9817C00D9407F9FC +B92C6E1A2D011076FC5016FB2C48AECF55413A0733974FF83A354E95980719A3 +F5CE5E98386DA3F39D1C5022CC1FCAAFB4773ED903F96B173332151C97B07E45 +285C04E572EF13D5A07D77E0D3D41A299E671D9EF6A5F84C790BC50D72DF622F +023F409A2BB048C7085BC69220BFCBC9FAD3E25E0027B850A64500D6CC7A14A3 +1F7053697D475935C68246BF07AF4083B295E46F4C3E427FFEEFAF3C20703BD8 +18AEC10A09F0C2A604BDB0437F19107C082B956F145440BA8BDA1AC294D85160 +62FE9472309CC2C0962425B7B7868B9D951AF23FF685CBA6D5DB2E3F5A250592 +B50862F718C050111E93186210A10DF2350FE3E8BC90745922E6749780826E12 +4E9FB1DCAC3ECADF4B8BFB4E08804D3A7F560F297B6C4E1AFCC5E735348E6324 +4F68CA1024DFEA4634F086ED65837CA5F3ADE54C2F3664D50A7CEF4FCCF3F688 +BFE943C25C02E27E18F4E34BFF49A8FDB7C56C4F15048FB4EF05D9B8A873ED36 +DCB298D02021559443FA1C8E000326A18C82839F55A28CCB5079C973DD7031D9 +F2C15DCCE282F708A3DC49CD6F11256563D365236AC1BF5A76EF8372A75D9DE9 +ED5767C311C48B1B606256F303D2A4D4209ED49D597E9979DD7FB440E1EE5B58 +AF99DF6CF3664AA80E6AB44D714042BE5459B26B5028C391713C7D2F928BB986 +CF1C19C21C3CF42FB4CAAA72F53BCF9B820D5EFC490F4252F2D5209525845512 +A38F8096C24BF11777C56F540FE52B031D8B7F9C0DCE3728D6049ACCEAF8797B +440FD0C45FFB5599050D4F4427D79AB78AB7B3BDBC505DE9118C53A7C57F551B +8B7F001843D7D04572288EBCB3789C4E2B6A36937998DC02002EA742CA673362 +71C5DB81E42B90BBD2BB7FCEC27B2878ECF3801E5C20435301299ED2298608CE +8AAF3A48C729EE14CF735FA64BDC3391F1099AE95AC5B313FADF9B0216050A73 +C6931CB240822322AE7DD3DE695AE830FEC7280100B74A6E200CBF28E5A13045 +567B7E0DACCF77FB1E1CC6FDFE35137D118D4F24365DD0CE85ECF6D3A8457EE3 +86D9C2503E2BF9E0CCF0D3620357C369B7B7F73CA69C7BBF18AC181025BFBA58 +567035ACECB908F748AEAC673B8A15DF2E4F2275FE23ACB74D323C798F1C1248 +6A7658A901586E4B30E4561B10CFCB21EC683B5554006EDA27FCC1DF2A40DAC5 +9E47DE705EFA5426E56EA88BAD4BE449F1E32B00231B7CD80344DC704D14774E +0B19F8E058F6C4D3D467A8805EC5B053EB6AA32E84F740875DB98CC148394DAE +D44CEEAB043AC606ABA93F4A0E257A5191BE5CA1D9126E01A1236F3D88E0F285 +8833DDDA5C5D104BB8E03E80BFDEAEA7B25F4EFB10315C8C992ECA8947582B49 +4784B67EAF2336D298BFB0E228F211E5787C9BBB3D833C0135330332C34A5AD7 +00343EA9483F86D1F47027D7342373D4E52A527DDC93BDAEF846DD962D92ED0E +291417C55B71C4B9F6D5188AC238508C65A7891ED5A200D311ABFD9C9439FD4E +5AD894A10E6F2B3837106D199B2494C2FAFA97495BEF2710A5AEFFF9B1CEBE18 +C61D53C386A53E3314FB2F9EC509C609B839EC7F8B9F4747E6F7BBEA0E9538A6 +DAE6EB0178018466DB240D5F948A313C0FFD9798200D72175BCA20EFAD6A9354 +2B36E973566ECD661D7BD32BB05E890365254359B2334B6D011DDB4718A13369 +0E721062398BB6CC8ED980122544177588B3DDA4B3CCB0149CEE233FA08BF23E +8AA533F5D9B9600F5004CEB7DA344C04D2A9C1D0EF96B5C7F9100918E8B943A3 +000BF693CE0781919E0E329C5559EA83A939031BB14D7743D97FDCBDB5CE6E28 +DDB3E1729921C79017734CFEA19FA70956890744F6BF1261BF56D809D13BE9F7 +D439D161A061F6AB3B2CC687C1374E870128C3760AD42D77350F7C2AE7DD26D5 +D0CE0774E0A8975588465E93BF82675EBF55CCA0E07B7444A1C2011E4DD24A7C +C42560AB4FAA93994CCF7CA8F8FAE9D043A31A81BE420A932F73A835C3E0CB22 +86E7BBB9DF2DC211C193A563333AFF574CD2ED6AE0AB3FB9D02F31E355F54A02 +4225834F2E921D255F0A2F32F68DD059EA86B3B7D3A09203A6AA22E7A89EF467 +190710A388E84018454CCF313BE5AEBFB8A966A7858330EF39EE435169CB6BD3 +468F4D510D62F881BA610FCEF5AACA1914B64B2AC5FD5FB3CA0CFE190EFE3C35 +FF44FF4B0194856238E8DC98908D92BB15B5A821CFFD4DCAD23D7DF2AF8407D7 +E69A54FC2E1023CBEE603CD2F86D8C13F733CE88F1931E3064C18D2BB0BE5B9E +8972CF88FFB78D11258412B9737B7809502AF2CFA1A8C268A8A3577618287D5B +023983CCAB2A52CBF2D8DA4E014B8A57C89DE3900F93FC8CA00FB20AD59BD541 +AD445ABD910F92E0B81E3A69B687EB8F76BF4BE3ED2D84B5CEA691A4A86F49BE +122B6777BF18AC181025BFBA58567035ACECBD460F9E99751E959783F96A265C +2617B2D2DF2D51076B259A087FC0029333F29AF1F153C0E692AEBB7771ED0FFE +6E87144F70BD7E61976937AF2725514D4A5EBA7CAAA85283F6BBD8ADCE78A045 +91C938D292F8AFC9B4D5E754761F60DBC93ED165947B449F26DB8BD64BDEAB94 +3343FD1910C5F90752F44BDAD7C5BABC140FA3C39CFF94968EF45D9D72FA47A9 +811296495278BF516641EF95C25020A0D4CC2D8E18570098932B9F66F967DD8F +3F39C0A1E2842A8E0AC324DEB5610AAA42BB04685A3C43F83CCE1C184163D093 +4EACCAAAB09A79A1B0B5ECBD5080F51AB6737832CFAAC18E987471A0CED5D721 +59633ACD9CCFEF19337B39725C13676E097E005AC8C859D4DBDD76FBDD723B8E +6688246F18D111304A34AABECF0CEF5235E1EADED21CED404B9668D113D69149 +1B08704C697E64E2864E5BA00D945BC0EDFCF123E6F7C58794E2A18BC898E9B2 +C39B564606B5A3EE555B7AA964F2D7885EDF817CF7182D1FB2B39147065CBDBF +52F05816979CD2644B26A8E3BF22565F8F17D942630FDE180344D8F0F00E9174 +EF24A42646C1D3470F561FAD619487662712FB4DB418EFBCC86A8822EB31B4C8 +2103F3793FA2993DFB40774010687B1CC16861E23797D4F0F1991BCFAAD08F01 +AD9F17160941B7BEF1AA91F6F0D717CCB3FDB30356A4B493343298F34461B135 +5517EFC25D2B992E794865D621BE879C38362348C7BC392FD584EC09EB13E333 +6B838DAE63516555407965FDB613F5F35981221E1FCC78F0E5C6CDE3C690C627 +2AF549BFBA0A83C23D7866BEF46490FBF6485130574232FCA0604E225B5B7AE9 +CD3117B29101F0B23C5BFDE1D1884E2662DB76DF56229A4162A42E850F3F5EE2 +C6972E21934F06557D338F26AF5624244BD106A1F74850D4524BD0E722AF535E +B2727035E0ECE6A43A7A2EF325E99D40A7AAEC9971C05FF15EE71F500BD69048 +540C4BB078508B3AF8FCAAE0DD3844BFFF9AE8F0EBBDA443DF49C84B138AFD51 +2FED3E63B758FCD495A44E006FB0DD72D8B645FCB5729D3E371B43BA4B41CF53 +D659DE39C56B8452ECC9337359272C890A4583835D61D1EFC6AB25713AABEDFB +95AB049ECC3FA8E4286330FD4F460F8E24FAD81695215F6EF4E92D89A5053625 +1C4C16CC567496EDB4748F1F95CF14177FB453C94A72E629716E0A091902E902 +A1C8B0CDD52F4AC4D887CBF476EE8DA74EAC4A163E0B77F680E48EB1B2D5B334 +7898197A9A796A9F6AA996AEB9FBBA1A00232636239BFCE6973AC693E6A3105A +9A68A72F62BC765632C2EE72C1BF95630350D1FC7B5035E3216D0FAEBB09C5B4 +6D7C544BD2A8CCC94C0322662C0A8B5CF3CD6A1DB344C0F9453189A2833E0B4A +F946AC88F14975B0FF64BB5D939E9C14DF11992B3A2995735BBDD2758559E843 +A231BC5E0E60A658BABBDAF34C42570B730653E4C7AA6F58E27640C9286D069E +D2BF97251A8059F17659AC0FAE7F4A9529C04F4CB080949687EE54B5EA44570B +7FFEF8F79CC84563A05C9F166469162DE96A3C76D1D30CC2DB9B17F24DB93D8C +ADD372D2B6C5CB4050BFC25574711D44BB03C1ED77FF1A5400F5BAD977B222A1 +C767537CFC7106AA6E48289C5612872C047171660B96910779977AD8AC96C935 +B2FC0A4EFDC5C30D3FB8D35B0BC65A887B6BB98845B8788B680008D695780E84 +34B5F1D0366E3AD523DC50875B236651AD4B212D0F370C82E423A2110F2ED9AC +56D45DE682C2DAE1B08D2021A08AC0AB4D8F68C9AA954AB17CE6792930C804BD +DF20993AFD6D030A79B71C2BA4FC72BA3C2936818F8AEE52ED8D539F62B13295 +62B1104C2314786CEC6D6130A132BE52835633422B787189DAE859804696B14F +0FFCA959EA1C5E7ED100F0260A1C5FC6AC895E61FD426A85C5EE04F8FEAB0171 +C4832D6072302A4EBB29FED574595677EDBDA9134F54AF7503EC13FCA503EC5C +F8ECA2B283EDCE5998981BA8C22E13D70E9E49038148F7D7DF8FF537A32D5149 +50D6FBB41FF7B8DFC578DCFF052655A6A6B7B48DBDF15D0A0808374AA0E58EB4 +94B9CDEB5716FC08836A501BEDA607606D8E9385BBAAF9A808FBECB4B1B1A7FE +7E334443F2F5D335199E8C88C9F15F12DA07E381A227598A2B32041AA32B505F +30503EF6061B67B9E50D9A56CF13BD1B7001A618CBE64FE3908AB3F675F9D5CE +9B7C5BD8228E7BDA62797474023612A2A6126DDD4B139649053B7D4B10EFC838 +81574A70A02757E3C97F4B197D07A9AADAB3FB37CA309E21078E6FF0655E808C +D6065A22CC0E4B878FD8B5EB10E25BA41EE9124AD6CACB5D9E56C30E74F651F4 +A3453C96E902E6F0A3AE881C26180205F6835AA84A2521616256E07102EEBE8C +F0666B13E894214869705EC691B79BA1923BF6DF3D26F92FC3427D1A4144462E +9D44276DFFF44156E5433ED48940FEF200ECE301BC05463936385838C6733F54 +3E752FC013519213294400B41A184D08BA19717B6F2F761AE694105CBBBF791A +962CC0C1D6AAF09EFA9F7685E381AC8BBD5E0D0436F1FA3166ADDB5CB1558D03 +0B1EE37BE839FD7177607237A69E11C40F1DDE902B5A8DC0AB01F3DC34532D1E +62A6371F05029340A32BB6477A05334C65D39892C5455639AD21CA6934AB31C2 +942BB545E31B714DB57D8BA4F9E064B2CA71F0C83393F93062071C8BC9894BB6 +597DE3C0A0C4C071F333BFD7CA81B09536AE22A322D41545E65619D95C99A560 +1E45AA1ADDA2DDCA96DEB465CC3631F461AA0478A60D4FE161DBF3DA24C073BB +FF44F7B9757953B47D73BBE8273919A969E2120540E9B6537017DB43A396158D +0B2C89D4B906997D56E4B4B4FC858550692FA555BFFF61E504C31B86635521D0 +B86F4D30B0E75D74A63FE6EB79660D097E7DF2EEF69B8ABC9E6FC08B2665EDE5 +627EC01677EDF92BB7D6B0C6BAA1A410E7C83A5D78472221373A56C6FE7F7FFF +7C722EBA18B6AACF192DB3EFE5D987521F311F5EF29D41814084DA272871F2D7 +79083EE62D81EF5C7158CAD7246FF880288BB0A7B37FE7085A34B33261751AE6 +213FA00EACA1D9959CC040C4AAAA6BF374F45A8D6E12DF12FD462A705A911011 +6BAF971B800DD206CFB809F4ED2686995EDCA2CD0CB41D3355D0E90913CB0EC8 +4A3F8143BCB12EE7FE8788DF52C65E421297D36AB8A7DF9D0956F40AD8EBFE42 +BB0D828BF269ECC91D887F0A59491D87196A45C63F0DF55137D38FB7B11692E7 +464EBAD95ECDB46CFD3678F465AB603C6B75F40BB27216168904F6878FCE63C3 +448BF5D24D733D65CAC4A7A7965D21C8EEE4462F59F6C9EFFB1B3DB781B6E720 +3AD1954E514B9EDB35A5414D985B1615C1B16FF1652A73DEFBBD6E5E186ACEC6 +28B6B85ABBCF488E2872F146155E344D5ACE617DA45FE14114DA2B3C64D1161E +1DBA505618FD4CC4B78A7E1ECD23DEC40E64DB9F9F725C9F22B1C63D9326B73B +17B660364E34A7E1261F492C98235118938FCE5FDED9796851DF5DD2D58D5168 +053B9A33CB7259040E0A436F5FF861927DDEF5CFC30469F72B5A2186DFBE8EE8 +712C9C187AE05E5A9DB104689BE4397933B10C9F7CE2061857C54DF5DEB2E50B +F65DCE4E73ADC58A451E55B5065D5DC4D321B423A24296CEC91B272EFCA897ED +5DC2E4E0191F8ED22F8D61431F71AA49CBB1D33F90EE1B26154221082B0A0684 +781D9875FB35501D4D030D7C1F7FD578A30243C88CA4B1E861486F0DC8906F05 +1CDA82ED6B60323BFA5EC1E77D32A38F0F2D2D081967248F3BE20CFFA9A4A246 +687F77A40521B52FDE76CC51279788C2BE66AB14D0657DCA5985043F25D69BF3 +460E98F29656A1A6FBCD2D306AE7369DE4871319337BD6CA85EA8BD767A48F30 +AE04C7E8E6B71407FCC2DAC7E1142BFE6521EFADF8BE20176A6192857D79100C +5B9F1A4F8D6238ADBEE7473326366FC4A23A7FDB6B9552EA2F462E80B555E187 +61AC4C7EE832FEE32FB33648DC7DE0B0142CD0F0FCA8D2C5873E1DDFEB658FCC +5394C4328ACE4B92604A99617CF8EB27459CECDBFDB6BE7AB8E9A1EC77BAF215 +579328BCBBE1FFF89A1DB7DA137473F37CA88E1E253FA493B55CC4261339D0D9 +7214904BB943CBEEBA8D3DD61A40A8782FFCEF08BCBFEA40FC113943B92DCEB2 +C36CF97A9DD83D08EBD16881092BB99C98A1BE0C561289A4013E4C85D4B8588C +71F6655177EC3CB06AB9B850AB82D47677D2B223FCC809E40776EC52C1BC6E30 +E64FD2BB8F451FE65A47D62BE3D6B006E2B69CA3468CE4AB11C078B38BBDCD14 +BA8F08434AC1F6D46AAD795274D144D7FBE3B2A7C8CDEEC58A1C243F368BEE24 +F5EE4A467827116B7D788B4525A508CC9278E3B00077A28A26A69403FF86C780 +16F2FDDECCF6193CBDCF1336F8E4D8E154CC693FC9274257C3BC8F7C23EABBFD +7F1A1A762C3E78DF65419D5A8FED3CAA1D77C8D91C22695DF59F17F09881A309 +5C755E4EE1F749788BE8F7D31D3D75A80D47C776CAAC41DC63AD9EF93A3EB476 +3D36C13E3BA3207ABD94421B6CF285C604C268E3045EC87D53909217A2CAC6D7 +246A8534353B20E8E35B2B95AD443D307DA386CD9C233F5C789339101973479E +33AD9B51E31EB158A064D3902DFA75BC4290AF92DB643A59A3EE117BF921D25D +49F333A8D2A72C54B4C88B4C5CEAD41D0A1987AFFDF4A50907AFD3037DED0B93 +FA08C9E8EA7673552C9B8BC19C6B6A8D547328D2A17BC2C6F1058719575EAF9A +3DBF9489C222A8853E8A160440DF81643DEE3894A217F7B44BF54B6B84950B0E +1F01771657F42B90E5A545798E3F87F86DF34CE1CC0FBEF91E71CEBF94782D90 +BA99B69BE478EDA450EF8A01DBB5C9461D4395C825B8DCF2DC64693C537B563C +1D1C28C32A5B3B36D7A7B3A760EE2A079E71AA6A8ACE63BB82560068594C5B56 +554526B7923656285B92ECBDCBAE73627C260A6D026C56A4B495AE9B49D7FA62 +8B86506EF7569D63DB60BD04BE96AF6CCDEE4EEFA8D88AE41A25F0C95DDD5A8F +0726EF13FB9847C8F465753B6608E53E6B924491D64E133F4332E61F3DBA35CA +87406BF8B71004860E8E6CC916C66B1DAE42D577593D2B60F8F38DDCF804353D +5BC5516C07B8EB962585D61B5348789BE20A83556B5BCF7AF7545F473ACC165E +F655F3EBE1C7CB5FC6905CE4812937D461EF019CA86171CF2A93C77CE392CDE3 +A0E93D890DD517D675D4E7D946FA1B1DFDA3ECF14ACA0A6066D434DB4B0C7E94 +916543FA22A9B8A798D445B8389BFA9B15B7F14FA9D6617B708DC071EDF535E7 +274D7BF2D4E5BEE571CED5724FD3544D55688F0DDC474ABF2240E2A71EBDFE0D +70F5CAD9228F4C0ECABC50A99EA54E50871FF3F937E9606D7217EBBB73746A13 +92188F83A188558B9D51A6AD4DBC158F1A41624B4E1A565B639F306B92B0407C +91C19460871AA77A699CE410D469A7862460E4708771CD539545A7D7970E1AB7 +58DAF9450B89C92C63936CEE370FE267830E85FF64EF4BAA48048AC223B4AA42 +ED70CEDD1693E855AAEF3629253110FCE1045F505A79E4D69A045A365DD3742E +9A9B3EF96B5ADADF40E82FC80CD93F5F80478B53FA21FE2E04464F08BACB5704 +9919363B318E594000F5D531E8D63AE3D907CBF17E8709D91E82BA17FA3D0567 +BCEF05D09C214FD2D0477C8DC9AAB261C47DE1294A53A585C8FDB42C227EED09 +C4FBA7F900B9940DC68329B7865E56E238F91CA4E561426C007E5683B291F880 +A54D0B6B7FB5EF79EFCF03E92EEA1847A26A3CB87B71E213D1D17DDA9FA2177D +35C04263A1C52EC4587F197C1A3A1DBDB8E86C9A160CC3E6552BE846015AE523 +CCC3A1FFD94BFF471B4E3CB24AC8ACE5EF7E99881D6036D1AB89B5E3C11F10FF +ABD53A405015BA2D21D28B4024C04A769FE6D1B6870C41D87253E446C5E9E947 +51D552D27D5C1FD51781E2DA1DDAA339E1483533A69A92EDCCA27AFB41044612 +94B4A5A0A62133CF9ADD6AB74B4DAC068CE6B0F1F95D32AA7045E7A9BB9C9435 +BD246015BF7DACDAE24EDA66C9C1C9B3AE5EA8D75EE9D717378B14E3CF5CB04E +43514299A0ABC7B6E3948B4016CBF7E8B1B9D24D50BE28968E17AF299DCE63B7 +362019FF63A023D50EF50F1BF4BA2EF63BDD5B561C8B3793F7B41B15909A6D18 +2F863631068A18D67990B037183EB99D4FF676F11A49F9ABE77BF5B24A44E4B8 +212A30C907A4B4CA6E755936EC6DE011C32133C6D91CFE069A33233E928C2F80 +8733EA4DB2F5DA454C17A450AE07DD0A65DF4B37809AB75715DD53F3ABC838CE +010D494F254893B6C1A5EB2D8A3970F98F49355C8E53F83A2A9E663932EA14F8 +A96631E679D11142EBF8F3C5D2F524C51049DDDC9352ADC3C874DF1EC80B1DCD +77F115000CC5EEA5ED22CD9D3DCDDDA050CE9CAB64AA186B1BCD04170B4C54A2 +EF66661F70AD3FB24C1A948C0ABBD9CAE2AD1600AE404389DB657E173A4BD94F +6E7845B1B28D923A76AAE21418FD4AE20F00C8E94B900DFAB5723A2EE94A9059 +0C965E216C18318591C19DB71562EBB02E40E73E732B3D73FD3EADCC0716C4F4 +938658D7A5BDFD52EFC98B70B11C03399795C58AB3F596DA96030D5DBBD09322 +905B2BA6D916AF093B9CFD1321ED56BF2DCEA211C51ACCE7788FA0884BAB3E56 +688B194D252A337AF5745030058A91B0C4B9371EB5A659489CF10B6D5E00F5DA +A4D1F9FB8306BB0A102D415C3F3483F31BF1A39D013D2FE0B714110C13A2035E +46C414D3E3A1CD8A96F4483AE807E1C45CFC935B71566E70CEBEBF820618E9ED +876991FDAE2052019F55265BA9EA75728D604133B471B2D72DD8062C5CE506CC +C7532536BE1A3E09A2196D7DBB8615477799A4BAA23AA1F657BE55B994DB86A5 +038A9071E42395C0325A0667E1336DDA55911A1C44C4C67051B4ADCE6C3B474D +B39E6579C243D16604410A983E0D7AD1784D9CDFFF89F143D748EED767BABEA1 +2D2BBD10BAD1F5A823482F0A0BA9D250CD891923265FC97C0B7764A8C80FBAC1 +8E72FC351544AC539B2AD1B22427E8A3CDA975536A3AFDFBA7D7963CE84DD983 +1E5DEF94F0ADC796B081E9C62A64BF210351AFB879A64AB5AD2CED19CFAC2B08 +B82ECE4C75851E69ABF73C6BC318EF571A87322DF73C3A7031D5FAE49B3D8B81 +CC39B6FDE5BD56C9528B0C6C79D701BBBF36130D2A1AB36F1E2D74131128C98C +D7E3D9625D6D7EC5C22F6226C70E647C09131AF0A13FADA8CEB68940CC5995D8 +57CF8E51024C5BA74B5F3FF6CF50C2D10A59D6AD28E29410FC7751B56BFCE075 +E27DC133ACE8E34B175936400C5D2545A8A3D0AEDDF8F5698E4FB6CB98D369E4 +D8ECA34947E30E0D1DA2725BA630CDA5EF25C9D440EF225854075818F14A3637 +3733621A0E3E6E213C54D46C999A5DD2DBECD5F69DAF0532ECC7548505078216 +264B602A7D060D0753B55039CA4D4882701FC8CE42981D5B80450F8F00363D96 +1645582A7D27179C1327AD276C7EBC283AB94FB51253EC594B7F55A146D8BD2A +338D436D7B71E52E513A5C3071D204F98E6DF2D4AE939E96D926A0CE48C2D458 +AC060F3B0FB87CF551E3CB42939C4A75DB0DBAF93AB61C6ED6B6F0E5C6948E22 +074AF338BE7C3A47D67200A951B16130735E62DDAEA0B5585173CF074B6C06B4 +F66B8D3BB8E401FBC85CA4F76A0B2E6D9851611B1DACAB472D308A3B853ACA9B +F276DB1899749C4EC512FC91D33F634ECB4F409534988C3E857FCDCB13E2C4C3 +4344AD331A8AD53300618E99F7B5F5307FC9ABF796F6199E24CBF49BD6526B9B +1D1319DD8936808F61B8A85B7F11B88341681CD9A89D9F64ABB45CA739E00B18 +30FA4FC878DFB873F1C79F72FB76777454D42090EACA618F023B03B48C27626C +AB57FFD339D6AA74D2BFEA82F0A69DE64C8257C7F7498675EDAE791A42C26F8A +6E0491B2A9F7627FE87FA734C052C9347C05235A55351B89ED2D8A0E0062F83A +309CC5C0E5213AE98BEDC5BD04BB9377BC03E3E2334113162A4702BF3B0B7921 +7C48BC4B45150CC8977AD936A6C7FF0B351A27DE20E8047CF033F91DE7CB4539 +A46E2954145125FB0AB8306AEA1252D109D358A4A5F5513D6634C03A0EBE9F40 +5CF050AB218085FA97FE6A82A44377D98D1D3618B50D86CF716C68549C5C0C89 +63984CCEC7E32DA35722C36EB71930306FEC495BCE140FF301194F49D81320F0 +72A70EB2D7A49E8FE461B8A93035C0A58A5A961298A9523DF5E88D51C674C81E +F859B14853F2FF4AF3DDEE2D53B21CC59C17AEFDECB354AD4E7678C38F2811A9 +C0AAE19AE8F014D90B5CCAE639C467502382EAE65FDC97AC3DCC1FBA3BCE2872 +CF885EE5774D362DF5A1EC53E39C2353552D5D6A0B43963C42985A0F79254F77 +E797A327685F458C8ED3085BBD6E2664306176FEC09C94A5CD1840B276CBBD39 +31778FD0EB542D244B838C392C878EAD44CE5BB1A70B1F7D08A97131B0B8A320 +375342B8752BBD823C339F2D6419C891F6AC7DD1402EE89DBB95F9FFE80B3CAE +7DDD116B5D08E759E3263EA3AC91506346170D7788EE8FDB5E32E5DB499E7027 +66A69216BBA57C400F062A9E7BCAF78AFC4E0CF1AD42918C8C67320A7A010968 +40CA90EBC0498B8D3264DF633CF74D053444F32758F4FFFE4485A77247B4A3DC +2367D7E9AACA45A1FF4C34ADB130C1371B8FFF45142C28451848051DD7BE711E +A9D3F3749E7A51BE002B4B96EB130B5C46F3A31AE528FB0F7F66C9C30742415B +4B1FB39735005E20E479A0957150296B0B418C5BBA6D32B177EAC38E11985E73 +93AFD8874E7E31D175EFD6DE6A52A5C19BA05A0975ADB373D795E073330DB761 +715459512B75228E7014D8AA8F7A565F9610FA9F9C6D61D5AAA63535F8FD6DCF +79DEC48939873ECEB7D8308F037F6473975B1323FFA28FD1BBA5D2A333972193 +DE338A352A3D2BBECC716386454D40FD1171F2FFBF62B9CB5097F820186C4ED3 +3D7539B5B2E9470EC4DC99F9A088340BAA063C6A158ADC3F1062E543FF0DDB06 +BFB7420353D7ADBE18B4D561A4A299A62B717C098AEF7522BF704B27F773010B +1B9B74509EE24E3B3B60B42071642B5A8F2424C513950A5F0C31405407E875FB +6760734C1952760A1A676F910FF29095C409B990F913EE0CF4B5284F19EED9E1 +C83616CD2AF5F51DFF437FF7529A24D37C1A468F1EB847160EB87FE3614AFFE7 +B3FD077D8330BA29F00CEB40DC2ACC2E64E6F65665CAEBB54ACA39B50D8F4EE9 +9C2765535B6399553AB9982FD72BF46E444808357354164DC018F4BF4E16211A +12CDDD55FF33652B5A42042A65608248E964F9135A9782272BC4045307A9E555 +4E9E55EBB94F16F1A3A945F7C25CF43082AB0165E6940D6F42F0077E7E1A479F +D2FC8AAE99DC9A3635CFCB48022505F1F940B24672F73D275BB75D06A4E58C2F +DE62422B1DF66BE743A31CF6F0C7AC04562CC39F8ABC8D9194DA3C970B4F9B36 +F72F9B7DFAE541F3A3FC4A30735EF7A4BA2B105AB6F2363367FCDFB0A323A37D +8C7CED057A56657DE220EC3C7C2699407F5DCF2341ED099900F9CBF3D1103720 +F061F3DAFB0F0857C29192867A158249842A7270C4C7FD6E470BB95D213C9FB3 +C249392BAB3942CDD9BADC5D8D10E3E4A5076DBD708EA65CE9F5B2B9D278001C +908EF536D722134CE37AF005D372D558AD6526866FDADAB8AF8B41781E12C156 +A0C138DD9D2C1FA13765E5E71D944DEFD0C7F2F8BA6DA8BBF659093FBA928D2B +C5F2734A2B055019691CB67089D9675775DD67F8D29B5D9AC00CA98D9F0AF1AE +257377258E81CAFD38E8D1D848C6ECDC151BCD27DA3CB90CA9F0A867EDFFE39A +045F3841E352111EB41A9EFC5D868FAECDFAE378765816492E0CF4439E5892FA +2332533A5D5CB464AA16079E0FA39CF240990C3B93488FA3691EC1DF0E28C9AC +F0A01C812B1F5310F7C8C0EC1FE7B98FDD0366DA889DC216249FCF4E88F20FE4 +E126BC50BBE9EA4DC081442B2266DD27E72CA5AF7BE01E377912FA2BF0762C97 +389FC4797601B3B3C4394E9E2B6649661ABCF01493FDA6856DDBF7D79A6F9749 +15BD2B5B59F94510E52A95B589BB79E23DDA5E7D477C1CB190F60B5F21DE4D46 +0DB6E43E19E93156D4533EA76D7FB87BFAA3AFBDED4A3F7DFBC3B937AB8A9387 +3CE97AE2F4DE8463A668A5C6E75AFBE8A741D28561050212B2F1C15961D374CE +3E21FC9FD8DDBE0506553C3750EE76696421D56596E6D3C833F8570BC1CE3F75 +D7A67EBFC0454110A0F607208136E45A62BC20BD8D1D08F846F0896B7135C1C3 +6A8D731D60FB28D7D835AD3E2D4BB9ADA93C4C8F73AA057BE2C823A414C27098 +25CC6C63892067DC210CE8292EDB75A45ECF3E31C1B251D1FD87450DB7C0765B +BFAD12D3D4AE429CD837A1E5BF9897E305B210FD9A0FE7A7D102AA045CE90BA9 +6E7196FAD868B007215FCBEEC4A95C05EDBF1C97963241125C816D47DCEBBC78 +56F66115B21F311123D77051A67A4F22C2D72A7D7283627E1A470877A233F1C4 +79252D94517538D391CCE88BDAF84BEEFFBDF432F8A4F982379276B220934219 +DC8BBD73164070399C84ED7686663584F04D1B7B354AE32B3D9F8BD58E68D098 +3E522685DFD13A979EA613008837891D348572A5463EF6D0CDD42660096C3C25 +A8F046DACBDAB35155314A37A26052B8F5967E74DABBFB489A5D5A161159056A +C7FC91FDAF6765D3C2F1DFE0CDE1DD7715CBAC3C6E5F94782BCA6356A391936C +7F2892EF8A0DAD7A2560375835946E675A948E1C40C93681B596FE57C97EB0DC +58FF6655DFB53011D2C0E2F133DD294C2EFC1780C5043954EFFCE4678FDB3567 +0D69210FCBB69A2BDC9FEE5D20F4E8415EDFE229D19E074247A41AFB7CD5E803 +81E1920E19E4A00DB9F0CC0FC90ECF9DBF326C93E94B9A7503F6D2E4A08BA977 +AD5B108A1E547C60A387A291D3F215D85C8F0AAB881155400D9B6B6B91DEFDD2 +3A86E6541A3DB6A2EFD5514618BABA9597A5298E70D1CF6A47E17FF27CA40E25 +8A0F37C0CDDE3DE2B355A1F4C6D783019AFCD1C7D7E176C468E63CDA92DAEA42 +DB728152EE90C939A9173873C77D9A78529F835EC76584C32A7059E8DD6FB1E7 +C5F66E37E4988BA15DE5277152AD663F78C271F0350015E28030059F04637E37 +D4AA7485F802CD72E3A4A43C54F3095B8F8E3A72D02343FC9716B920D778B095 +D824554B5189BAEDCD8EB01F35336696BA010EDD2CD879762A1DB28DB4895F1F +95D5F7B48DAA00FE5A593068D679FF32E4308FE162F80E3075D884212459C6D2 +7DC1FFFC23D9187344DC7F5D353655DB2C42CBEC9CA03F1A655BD339B6F98AE9 +041A7B8642144748950ECA47A948060D1E708F72AEC944F0D73743F33ADD080C +6DCC295E86E8F3BFDF490BEA4A483938EAD3B0A0ED2BADB20B554263A741F057 +3924ED453E7574D949072B4E2FD812E1F06885CF39FB7B86D66C05D417F61241 +2CED9A2D5D669BF548EC241A2F0A739F4334C4E564119961E1EB0E3A74C1E7CE +7DF04686090C6E4ECC6E933E21F0F694C14DF7A31E8098F62150B4689FC0FF8F +A9358C4757B0F181388ADCF49265B094B18B43E7D7CB3F24C7DF532F13010889 +FE5EEF7FBD973B2B6DFC3717C2BED52E7A45C3871CCFD9F44C776370A5E3FB1F +54474C2D22128DA4C9EB824ED5F64597929BD1F88032D6831F91D29A5B2FB69B +CD78F3DE751A1872691CA5A4833BC348A1E61CA45D55796C79CD59D81747D6AA +7FFD0612A89E2416920E90A0FEB767035690DBEEBD525766E1B4938AFA59B5B9 +6B8176EB44885F944CAAC48C05400EC116FA71C9BCA50E8DCED4C186F64CA819 +4AD7E5143A6A93E254921B8DEF25F6C9CD8EC53EF44B41C0FE765F2AFA287F4D +BD278CF6044E0F8FC56EF423357883D9C6AD73B3A3C3E6540A82FB89B797E70D +27339B715B5888B4A215E5077C139E3BBF7D7162A328A79AC02FFAA39719AB32 +B45079B8FF2E45A7FB18F718080B57E1325DD379CBB4B45C3298DB5C2B4BE62F +FC40912B5733BC5037F4AB198A14F46FED6BECE92BFA86405DF0D603369CBE4B +A6FB86793280CC0FCDF004A0F293B2EA79CFDEDBD90C331F8B8DAAFB3F8A5482 +8F131054F67984C924CDCF4EED4E32965413E75F0B22A73D2E39ED148D816C07 +A2927BFBAA12FFFB06B2BCD652A1CEE0F208E55326E98AFA5457A24FC4B5EF51 +DD073C902F9DEF6F8728EC977C4DEC876C7F0121A3B9C68E08A87410306FCB1F +96028099258A9B5481D704AE72A80607D48FC4CEBA63985914F5C9EEB9C8A860 +169B5EF7200AA199ADB6D24BA1A3C7BF15D4EE6FA3F8A49546FADE455FBE8516 +A610960D2A4C1642F4438182C6FC01038772F6E12D6249F7A0846A521EF86275 +3162DB7D0D65E938BA45A60582AD11ECEB50AF6AC0EE566FFBBE6D7086C94E32 +6B4AD5AA8EB2EB2EF893326BF811A43069F9DEF3319A986132F1F71A91A84395 +058CE5262FF71510C9C4A77936ACB167EB54498596B74315789A1D77BD6FCA95 +53051D8168EC621108395D3A7223BA6CE30129A05A5BFBB8F782748FF7302966 +247B212FDB8009DF0CC6C3EB4E530D65F05CF04159CFF03F42F897CB365F3E5C +E55AF4BE8D23F50A1E04376451D519784810887E2EC019D3070626B8E6F543AC +19D7CB3BCE14BB09B72BBF7BB99D4BE99458196B38FBEB28F4F7735E5E5110ED +972413C957418A6E62B4F9E3547A3CC4906569BFE30C54805432D3BD75765313 +EABE0F357A9E8965B9853CB34929C07F618B7F924793B5AD3F6421B3462B482E +90A1D26337404A78B7EFF19B4A20FA9C493BEA44BC52330DDD12C56D1CC92F6C +5D333A198121C41E6CDB939DA1B099ACD81307D3D0B298E83854D36B3DF95C10 +3976D68F7361EF034DE25DAD7AF434B93FD4BF8D559404B1E99F9FAC1D7D008E +7A1627CF9E9439AA8B40B3266B807B6712F7B05D28D5AF8F675E96FF365420FB +AADE483E7705D3EA84DAC446B585E871C7B3627EECDA467DCEA7F07E380C664B +789B7087C57FD8911FB6D83273B790E4793A19E8EA83F2EE620B7736CA1E4B40 +57859CEC926246713A6926D1EC6F9D322FFD0F280FEC39A9574699597AF2DE44 +B74EB0F20326CB081FEE42B0F24DC45ECC70223572B9A4C2EA19F1B1D51474C5 +25C36D59B5BB00A6C13534B91A31E6ECDC59ADF9BF49752B60A5AD1B3660D4C6 +3F355435BDEAB1BF40ED3C73B33928EE7F72DAD33CAD5B16FA1DA68EFA8E2EDA +716F048E144592CC7791D3FD19675720732D6ACFB01E0380A0C6D91AA7EF837E +2BACA2E47A0D11B28BFF5DEC56E855DDA14A1CF9E9CA9B84ADD1AEF302D1379D +7E59E2099501CE0DFB20C5F50347D2B57BE8115F303B437C17F387C6CC2C6282 +A067B5964F58EBA2407E13F4E3018D74596EA37D660FB606B3FAA2C9AEB847B6 +AF20692001764C231B223B543992ED20B278E39263228428AEB3744124DE2151 +6C8D767AAE4FE98552C18F861C2CD38AD871953F8590853A4EAE3A0520CC7CA3 +6A657341A9E6B810BFC0566EAD57D51DA73AB503EE959E529D14EE575B954273 +4B1627429442EA522CB562652166F75A1FD2C2CEF89EA4D089F1CCF51695C85E +4FB64B954591720C965A752BD8EFB60D0B17D1DA82C80489370453DC3B20BAD7 +31576DDFB3B09B1769342347D14226B4EACFB7AFD5627EBBD88445905B7251B5 +89F54E9F2124B7B5D9DC524C3B72BB569D84E403D70856BA8FC79B733A886D46 +DAC48C9280C56F564AA860CCCEA61B73EF3892D83DB2634F081F33B3A2553476 +A0D4863C5DF94C79F2A466076F02630872C981B76A22B89B8C363D935E297641 +C92F554185DF6F2B631CD821BAC47F09974AE131F22A8DFB29508F6DE5AC022B +C5112A80303D9D4F89609E9CF30350FBE90F8ADFD4409E0B91CC2E46512DA403 +E5A8DE82C6542089DB5D98D7555CC4FD18483993898C5FE72042DA68715073C3 +855F3907D284D55A49D498EACE3BE5BD37ADA51851C9AA53FA641F8769621FA7 +46C5F0200952BE6D24F4AB201E47685488CA0F4E52987E538FAD6080AED19B4A +3B0E200C703D120238F0FBC6664263A4AD61335999D91E05EEF78DF5924D20BD +96312E90B57E879C4FC820A41B4082F4CF67777AFE8B214AAA706ED45CBA271B +FC3159BDE62EB6F0EC6CD7598E7C9F576C9632AC88C6951BF2021A60A8A4E851 +1F2F4FEC8D60C8E90ECDCD8D773D58AB3CEF3A365E688C0692FE875E7E1E5373 +D3C05515857A184CB97F2F8E4F240FB968DC40DFB9C7B357784FC3539446E38D +61019F28FD0F9ABBBFC0F0E6A33567CBCD853251FE0EA3BCF0F4F163D6E4ACF2 +9A0B3F509A779825CA71CC5F3F0DA605A23B16815D0D7007FF5E151AC0DE748A +F80FBF89D3273A698F4CE1EEEB6D0CD9116978422FC65935BB519F12BB20E91D +92E542229F06B65C850D6AF38DE933B3290556DDBC2DDA54B96760D18BA313FC +2507525F5323052DB193C7FCC9772294C9F23B4E1E24F73939D79DAB5FD06B07 +9DCF36198A94572C0A7FF86CB0441D063BD54DE2055CDC2F4166AE61DBBB782C +33F4C46BF5753248F9F8A4A719E10D1AB51CDEA24A446FE74C9877906C579323 +79F46F652A94724B2F71FEB4288281E0875B26F7B6FF784D8C638FCB5C41859F +FEB7987D28F7D6E4B410C66E40020B31298E1049B923E94537284FDB1B43AD7E +CABBF9E0D65EFED93EE06CFE04A7E700EB095D609DC58E8281F2633360A543ED +3DEC3C5BB2893C6AE0F27A114F158844F23E9D500061CA8B6BCD31A6267883E0 +B804C5BC9392DCD04A859A55C287B6EE599FF1CA99393FC3E9CAC29BB0B0081F +5DF8104CAFA0D1E66707522F55D6F1F395EB55ECE27F0DCD416472AD7A197B77 +9B70ED635D860D955D73E8F4CE4ADC626EAE73761CA9148CD3BFF76B62DE6D8F +B7AFF27078AE2D7038B8475518493CDDB95D970DCDF6370A01A127BAD3356E72 +68F31457B952315E641C9F82EDC4EC3CF2A9E8BCE451D07C1F4CBEFE1EFFE73B +976560DA201DD3700349CB8480067BDCB4C89C667D277A474FE93C10C8F85C51 +37D0CCE257C2FDF10DCDBD020E8F9BE22F5A35E9ADAB6E7BB330E0297BA21A53 +12FED911825B56825B7A3D239DFBC7105BDC2EF85AE3D8FBC2126FC7D7FD00F7 +D62EC73F969DCE22DB55FBC237763FA988A0F418EFBA6D0824933AFA3BB3351A +41BA4799890EDF0F7ECD06D5A15E2D3D78C9C5DD982A575B56C77519776C10C4 +1A3315A971A22F8173B7FAAC8BB6987DEF7C299273E2E4D47CA406BFF480A6F0 +BD505E1645E1C2412009E128AA3AE8037DB3FC6CDABA751170B231BAEAC3B543 +F83136A8FCF9AF908CD019546C429C17371A596E79664985FFC617C6B34EE84B +504178A9997AE56035FCD626C93D484870209A50996CBFECB370CA5F312B297E +476BC99C5F35FAA3FAE454AC3AABDD1702AB84C372674281F185362099277087 +FB0F20B074F5C8CE718EFA1E47D8A2D6677DAA528022729E1583A0491B51F838 +B1E11E6A7BCC238378BFF0452A2B2C36D30DFD13A0E73BCAA1AE5241C15A4121 +2A84E1BD1787412D763C0ACD5660BF86D506DA0D23818C57CA309ECF8C63D280 +8B9F9686EBF6EDA9F4BC100AA1134927971B842BA0F30211FDF7A52D03CC63EF +B5E8ABD6ED6992935B998AC3023FA499297A055A304F2C1831B402E0CE493523 +5EDC728B5C1B2C5E765350A69613E3476E65DA479ABA2CA1348A6EC4B252AF42 +A6C0A6CF942EE74A822D62D68A687039C28300947B1708660BEF0E4A820DF07B +22AC49B41B6740AF06A4857991AACFD2AD6A97A696C486E244BDC62D784A900A +56780AB55F7FC156F12D29278EDAEE153251653B92F5AB0471A46557A4284E50 +EAD5D7BF578BEFD600E6761324E1B7164B7E4A2BD3185D7A4334459362D59F17 +7594766B00AEA14B73246E7E603A6044C00360A6CFED4512779087DE2957EA72 +272AFA47AA936A586AC1E24C2C038235729DDC147F6CC3C2CE47BFD7FA41A679 +AD1C3E9A9CE4630E7FBB549D8A4DDD3C9F32B1B2FFF454E180CD02F10C28DC26 +D266218B02425CC93D6352ABBCAEDB02EBCEA9FDFDA0149B56ACB90FC96573C4 +4023B51CAB7019AC98026C5321B582D539AFD276903E0361F1C6937E675D96DF +9E5D90E2DAE495A27B507C5BA278D3120A41A01771A1C2CF0A4F5981F87071B4 +459DC4D4C0401D2E24E655AB2A6C7452A8C4E159DC4889A8E4A7A80B1EE85700 +FBCB96790B7D5FA213AE6BF3936EC1BB0C86CAAE6562156EC163D4D8309D9A7E +7E96D774CEF60DB1EFBC0B55505469C437E987E12F2ED11F6CC067CFC9028C75 +2BE6B85052A5059F3E381227AAEB347C553127C37618FCDD57202FA169AFEF70 +4C319D30F2C7D8D9A8332C1FB26A6D2B27B84437901427AE46E453C0370E0A0B +320626E71378C275604B7958DB352F6CBE673FB7637F7F2DCC2759FA37D01C91 +CD6922CED2607DB0CC9BE575520ACA13F2A3B3669D785730E3F9A0ED553E55B9 +0ABB4DC828283CE4C19113CF6992A0127E4134159E5AC8563DAF5862664D1AB4 +B622AB8CA3B55C091D8E1E6F82734801A47ED41EDB1E6C050DBFEC2182512956 +3A9C172D01B9500E2D31A6B5C861387352AC7F2E8976994ACFAF0F19E772FBAB +9398B7A5AE056374DC93B67803AE8DEC1F5AE2E40DEC6EF021A4D0D410090902 +F983098E56B17369A5D2321742ECD42E5301DF5470C4958443055F38D0383A06 +9DDEBB64A7115BA237B175C2AC89BEBF8E89FD006C2C0C6FEDE78772F84636F7 +5FD8C94DDEBB11A232FF4B97E787BD2A6430BD1F740A376E62DE7F335B889DE9 +CEBA8B9AB7F35F5FD5F840DE581895886EC75E3EA6E3FF939086113BA0466137 +41A7179B99BDA7A701AF7F2BB88F707382F90B7912CB0F1BA3577EBED3E7EB3E +B63C2DFD8B24326120F72E970CF6D2B9E1C78F535ECDD47CB8CF8994E4B8B25A +AFA6DBD24FC3AFAE127B31C4631186AD423A11E870D164DE0BC0038EFBC1CD1E +3B75A663750B3654F8879CEC62DB759671098706C2A2B75D7E7F52174D89FA6F +C93E026E6174112D2FA187520187FD421220A28CEF40A8CE787E03CD05343166 +4B2EE39884D3E0DF80A00B096C1DFAD62BDAE905D590FC06AE8CDAA5D2878928 +939971DCBBBD5D2A955243A77B7DD0DDC98CD1A13F53B7EC6A02DC5FA15518BC +A9724A986842DC50722E2A30B036CDFED13BFD750854E74C7C611930405047A2 +C54A93E97C7ED8A91C812011176D51795B4E0E6661441A08BA2E759B3321AE3F +E2ACB2A0EE1EED0503E336DCEBC7FC92408CB3A4B24FE52351032E55A3EC198D +E86D5C86FE7DD84BFE9ECFEBA3F90F837D95C010B180F9BE5050CD2F82B0A271 +3F3D25DC948D06D90F485D87506D8C41E9300AE5AB46DEB51879DE03582BE69F +BEDFD121EDA3593C53DF0F4E432FA8620D63C2A29C4E1F7A020220D104B037A4 +FA4DE74BC8EB88DC057392AA6F190A3DD5D512BD05BCB9A0FB04A13797853E59 +83D7D85DC52B36DA00A975294004ABF26E6B986547567C34E355F99BBA8013DF +49723625381685CDAD295A033F1F9C0FD60A43E69210DFE098A6284055299DA7 +91BC8922673BBB02CD0D29F26AD86FDB538CD70CCD812D77512E31F72DF0B754 +620436A119F8559E87E1BAFA803E05CE00BB2F0159CEA4EB16464A4101E7785C +40B2BEC045B51D82BFD14100325CAA0BC320413F36669A1068059BA48CA64BFA +7B038D3A5DFC74C659291EEE2553D250E0DF3D24B31C6D132A531CFDEA4D23D4 +9824EE53C18E0F043853E17504B7695616B7B7B0156DC9A99971C950ED7D20B4 +8F5CB71481B75D2DC58C74E6FF3BC5B5132CFBC5DB1385FA958C665F9063CBED +4F80EF4196B42D48874F7E5CAD1DE70CE27A8AAB908753F257EB17E25B69B75A +73DE2A20417722EFE4B08F4A93E9E5A2F5AF6024ED068E05AD8234097CFD327D +CC9C4266B1578FB486731E20093B690D4708C2359E1F2F8580139ADAAFBB6042 +445C5E92CDEC2AE35CB8B9C139BC2529D1F46056F9AFDF38026FD1040C264D88 +CA32F56100680F4FD75BA009752739E97DD0F24284E9F3F7CAA143FE50E60C99 +1956788FECE91526935DA1E467134D488D795B0E107745040CAA64F258050EF4 +AE94FE439B52163AED93CD66F71E4702E086B4CFE8A89F21A71A08E338A3A352 +20A8CC582AF357BB10913505E4ADFC68566FABDD7148AB877FDC30EEBD3F1E51 +1C10C598C16285643CA472E5E621506AEF9660FAC7F27F6B3FC2F07BF048F2A6 +75B39D036A820395D9060AB0DA73338ED1596A02D0C159ECF00744B1C908AFB5 +C265D806C6A034C7ADF88913D1525BD420210601D41C6C696B14CF13DD63FE29 +90F61E6681C7AE1E08B110338107CA0B900F84512B041A1F7C520DF7C4D5A23F +932FED44C0D7020A13ED4B977D0B99FDD710A5B6388F3D1119B3BA69B964220A +CECC68209C1C81C05AA2B813C8945D1E298A7CEE6C6666900541F438A209553A +C152B55532BAA30B3807E0E533329C1AB346C53AD47EC1AD0F421F88D184A7AE +F097A77397D19B1B23E4F9AC6B2AD8C64E07E6D3E059FE96D655A2D62E03FE47 +27C85DED58ED7F2C47329E2E3F4C93490CE0368E43A390565187CAE6C107B4B6 +89D2C5BC170BBD44B0C3C52576651141E513BD2C4805578A2968CA08F3EF1323 +03853F3DFEEA2F3423DB9BE418DAE5AF90CB764F6E4B76C3023B8CF9D08E35E5 +95329726CC39BF821F9E571FC381916302B55F37CB81F48CFD71D642F7D3129F +2C72176E80F2E87394C4C08CD17116A34A5481C092E5D89BBEEEC6A4CA35C7A9 +851F79CA1B6AD3289C03217523ED54FE20BC61CBEA2D2CB101B4531143489D8A +6E54F7DA2AB6D47C26062EAAD405865C38C3F2291924793F9DE14F167564F158 +06283E1F8824F3CA36D05DCF689DF15C09BB127F0152A3F27BA03467307FF807 +19975C759C921B8445C7D4B9778DA52A7BA05E5C8355C88AA90156EE6912E8E7 +9B610B97E29B7B9E72E3BDCAE23A6691CA743306B3026512741B487509FBAA31 +C29335CC28C466D565D4379BDD8ABD89E689FFF0C9D0E6C0E61122CD14F87A70 +CBEA255DC48B2C3850F90A260DDF270493F85D53E26596850235CA0D58D028E4 +AD04D6783CA272A505FD6B74E3374BD7A9B6FC124451368557960054B1AE748B +DA2AD86CD7D5D85E9B251BF800FAAEFB7C3C5E5DA5E0C39BF5D92B89972FCC20 +345F8FA74871176AEBEE07AEAF0905A8DF899015860240864C1441AC45E7F4BD +76D7A270FC89A619FA99561D594377BDB6371A11274D7FC67960B9BE66A7667A +4133E38E639D792CA66206CC5166BF1FEB18A28E13FD82DC764931D82A21A1A8 +BC02AA861A15E5D5F86F4E563383AD132BB332FA49F3645B4B19694D6DFED1EF +41A570EFE5B822040166308DADBA3FA863E1CA41360422CB64A1EED71FB4ADC7 +55F84D09E9740BF12F8019D8DE380801F832B28B386DE73D7FC58CC5861C2B21 +566889335B4E0E20E56DC93E7F65A22AE5322DCAEB2110BA110999A4020E1A44 +57B863030E8154361E1117D886CCE2F9B9A6FA7BBA733877F33A6AC8207D2E6D +196B19BD9FAA34BE2F9924853C7F0FBE1A5AE95AF8417DF96E8F3DB8F7335686 +E9472CB4D2C332FA86E4A39EB220E53D603D2BEAD5DDF67B6D40F57A74A9BD27 +D7EC482DFD7549DD483C2160680C1099E0F429065B5AF423069AF656D805D765 +CE832389D2559F93F54B468CFFA0D447DC8F5BFA1669022D980E477860CA2743 +4FBCE50397C6E6EB8C4336061B83C377139DDF7309B2716CE04FA52D6A1BDD7A +CF1E8FD67AF69A5C507E9DC708DC037B08B5789F4C6473C05D8B3AF6C0637D6B +1AC4896619AED2D3414837457DF091C6CD8BA6997E33CA48AA0D675BD2FDFB4C +D33280F00B824057F318CF15C781C55EBE91C38B030907557E76B5B674966B1E +0DE04446EB8FF9E0370BD1E77E647F1DFBC7F91316C402AF027D39FFA0670107 +F31104564013F392553FC238FFC6A887A76188DCE0A686E6D8C294CFD2FE17ED +D12320A31D81BF721AD5BE60F08F4BABF73EAE74754E11C6B44CB30D2ABE5B87 +72E8AD82586A5F707C00E17712260F133E1BF30EE1B5574D81D1E014A7097335 +6F668AF0D914F587DCE5C520C2A0A888CAA90D9F38FA85E8D6289D7D31A1D969 +CA5CE3F0CA22F1B71674ECB97DBB418434D21E0A25A12BF26B1B3B8CAD4BBFEA +AF4BB1E4DE2B7AAE7C102A47E4E3893CF0B97D16493E9F270946647B452807A5 +B48CA5F9291EA5BCB8AC6E494FA540A65EBCA3D57335D6C2D0193A3CADB75339 +D1D9DA44E52BFFE1ED9988DE294C61FF75CCBCEEE6313C1B92E2CCBE5BEDC3CD +73EFCB83A3F3B7BA6397BDE871663F30A4D50A9ABAFC0E41AF4AF4FC2557FFA2 +329195D573EE120F6C28E2DD161755D2AEA4C3AD9BAE9ACD2787643AE128EE41 +940DD963522D111DE22CE1C961D88E90995EE8769C53D95BE978B85B8D3B3430 +2B5C7CB5E5EBB94E09CBB37230C4919348F4C703BC2683A39A9C3A74F7886E47 +2E713B4AE4ED1C5A2DFFE4F188888963150593068EC85AE5537BBEC5C720DC26 +B8A33CE79924CCA65C853AE82E82A4098ED52286DFE6A08E7E51AA72CEF1663E +99BE46C90D37153D78B9C58E0F19DC01B147B70B056373FD45B6BE1BA07C41B1 +19BE5BC0A05F56A70A99636AAD9079167BA3111C31C50F01A6804A53A37A721E +BB8BD1F5BCBFBA6098A327727B08A5ECE22BA670F232A5245A81BB2C7071F848 +741C1CB850765773B09A885AED6336C96D8C4E5BD5AE2F8B975F6EBD99E9D9F0 +4F772C84C7851CB5E3779DACB7E782993DF509660B39B3669F89238F5D71E1B9 +D34C26FCC7977FF93E0BE98F610F2C9EAF0CA61976B0FA849225F3B87FBD3705 +A21F59CB091D2116DE2E730011ED6B88718AB6466CBBAF755880F1D18E1B8397 +E525FFA40F71FE8694126D7496D11E19AE1C49F5D24A774500279C17EC7142E0 +99687B6ED73C53377B037B2E507BCBF495219686BDFD6A04FA337CE88ACBBA80 +C6B34015847340106AD2B880EA88DE04CC4BFD2CB3F60DBC08ECE022940BE353 +D7E3C59D12D9026D9A29CA5AE133359EC37B96036E28EC241EA77F3E6640FD5B +5E59F0AD660FA329D3E28764D6E3F2CF78AABEF4F970C54B2C8E6595052653D2 +B342C5503558BC64587CA56CAC76AE234D453093E9C771AF7BBF5A63D823F103 +B4B767129D002ADAF7B1C41E8C572BA7EA03ACCFFA8E7FA5B2BDA69481D49B12 +98FA4B3F327D06BFB393D0D90330D68EF6E3C59D7D0E2BF6CDA4778BBFC6B7E8 +E4CEA564DE310B456368E9997DCB818D860AFEEDC5C604CA32C58F93E20F31CB +4E8946FEB49FD950B9672D8FE01842264B8D214755AABCD42DA50AC5DFEAD5B9 +84BDDFD45391538FF341CDF07258A8DD434764652E40B5BB44B517E9BF839B77 +285BE59FFC48E04CC1AB93906BA5A90B77B0A331F1F264BB6CA37E6B7B08F773 +1707ACA32B2BD30118643BF8DED8F3DD3258ADA32BB8D505593D57C2189741EE +C2712C869E8C2A17D0C4DC4612775A4871592F0F6A15441E6905838FC640D4F5 +4462547A8FCC7F5C8D1726EEA80A13E1E1A4B6667E43C0C8D6C4EAA9A7CEDB5E +176AE1CC9F671BF6A4FE98B98B77EB6C63811DA69217ABE5E2D2BCC57E0D96EF +CA7F1F13699F5D65C1DB5A936A8D4D96FCBBB43A4ECB47979B41035AD96CB65B +D9502950CABA68E13E7CC9282CE57E1BDA85B9B40B04BA8DBF130EDBC1D8DFAF +6D8BCAD1FBE7617F1FD90C23AC733F9D05356CEE5D8C0E01FEE185738C2514ED +F2C3AB5504DC9D2478D070400B903A552019D6629F9658620F2C4FAD37129A2D +036579D134A3141F3A323E22CD54B002D6BDE0B64C45FE625A91F7FD6FF0C91C +02C1DC4141E3191FC08218B7FF610398F5AC398EF1426BC23D9E3C3DD6FEF809 +460661A84600BEB91B7C01CB9F7D87770AB345E7F966E0C5CE541DE3525E1CBD +95ADD10009B494F63661B895CC6F28431906096F8606BE5159485983DDA33CD1 +12F2111A2FA9370D31C97317E98699F593228D4487514DC58B343DA68BFA817B +DD38C42F0E8DA6AD76F4A0286A933997DD197070EBF9752BB973A2B1DCB0EDB6 +C7469F4F638E26D27ADDA0D267588C4B09E7970C0EEB1F83EC478B4D987722FB +458A8DEE38187104D91AC4B03A0C8570CBD67D194AD72FBE8D2980C1160F7781 +1EB2774CC2E3AA65388EA3D2DAEFC951C8529EBFEFF661E54686176C062BEC33 +703063B13916A6F9D6876B700C369A87C96C8C9C319B9B6BFBCE25482065FCD5 +6AF9DBF0A7E217036E310439E02AD7677CE5F04544BAD3E4C21710BBA83DC808 +86490300BBF22565D7F3B686ADAE17C56ED644CDBD7496D96B2A7BD010EF7434 +5483EDD8D7280D5F8A98BDEA752622A7BD40861CB2E5333CF1F578499AB714CA +39F81EC97538ED274DC5D77A309529A9E9AA0121478A3C1E8ECDC12F30A0AC6A +75A75C0B167F47AC36FBF8F00E0C56A0A43BB9B88CBEAFA91C2A22530F5DFDB9 +0ECA727857E291B0BD41BDA39587F2A2A0E32EEB9FBD0356F8AF6ABD94AD49A1 +E0EE97E6321B25D822C2CD6E33850AC31AD7FB003372434021860F51BB46528B +05252049AD267B95D3EF2FC03E71BB2C0D9447A35A19D21922C0F43505C25143 +B13A22E52D2AFD6D4AA2690C96815BDA1021E2482D7F3790B39EC528A7867C15 +D26A00C661071C97DC924FF83FA6CF061EA01F27B769138D3E002CC3D73DD7C0 +C1E624129A534BD6E0A1E412317B41A2B3510EF6E5284461EB2674CCA2FB3811 +0F7065F4D481110FCAEA96C3AE8FDAD87EBF6C68929F453DFF62FD9F2B4D3213 +4762DA1A193E89F9450AB68A45CD5CC0BA82E3DC4A35F86C03B4807E597FD12B +5ABEB4D8673D0F0B5CA1013A30ABA3CB7851C2F747BB278AD01463A7908307F8 +D0EE0C0FD6213394C7EDDE9E4513756A7568FCA28B39C3E3719B995B9CF6F266 +C88CE456160AFD7EDF929A961FC4E6CAEC912D492D325D056FA61DFD12384052 +C24B7FCA8592FD0741BC553CE7E4363363812061121C5EE4F4897D21D34FB383 +8A1E2BA419E10CA75B18F26B1ABE89D51E9BAA76A2DFA04AF27B0522993AB07B +8CDAB04F683EBE0CDF99CE6FAB0A65A4844CA770FC13CCC3A9796EB1CD943755 +449685FE57A7DB08F73826C6D4B1291E7249719A92827D10C644084112D0221A +857504FC3A39E4B77582C4F433263B290E725F694D7641499BD2FC4387FA9E0B +DA8D11C7061C6973B7CF798D06F32B43FEC04A922C6CE0DBBE5CD7EECE8F8A1C +274A1CD31EEB390BE56DE4F8232037B252F87D7018F8E6177B4008B2AA8DD919 +61B6A41409BBB3AD1DAFDE528B800A581B0A1C2771E47095FA3CD96F18D2CD5C +D9B295F44C94FEC1BE7CC8751F9BE7B5E8D28676B7405801E366739523A293C1 +E0FB8457C347ADB4C4802C0DF0193494F75C984326E49ADC10A113D8AC1E8556 +C7818C170053B788E928C8A920AADB50E70D71271E920CBE2E5D8A02AF1B5FB4 +0108AFE7861BC9CB0ED5DE317DC6018E5AE7FCDC9372E9D0C0FEEF035F7431EE +F3BE7EEED2D717630663FDFFB44BE13B4D5BC2F207C37FF8FE546EDF6D82E86E +95A965D18261F5B09E55B81C5190E6E123135B544D0BDC864ABAFAA2D999639F +2D1BA9AB7E9D3B1C160660B255A01C84785A23ADAADFF7EB2A6AABA51ECA3D2E +B2083D5208B184AC9428348A20364C1A8590AF04AAA6FC35A7DE78EB1F82A9CD +28B9C4910B7275FB8634219E8687EFE7B8F1FB81E0DCAA9AB825B9E0E6EC5202 +D57E62AD305E144B4775649AB7F8413997206E6275FA19B2CBA8A936B4DC8675 +9369931E68690E3EFA009E45B88E8657816E0FE62A07D6E41A05CA76CAA6AD00 +4B1CAE7301EAC7DE182F62E296101A265E7456815DB1052BDB69A8F664F230B0 +79360AA91B4FE0F719642BAF1C4DAE57A1322593F5FB2A08CF759EE3CF67695A +8B0833C293EB080A693036B6ED5F42AFA9C2164B9DAF9DFC2534913BFE74F376 +89A1310B848DC8DFD864923883D9D563504CCB174E37DF90E99D90CEB43E3526 +AECB7C7FC3B81E00E28FC522D8BD9D3E3220C4FEB5D2CCABE33FF4835A05A1A0 +5F0920B0C8C29F54A1C095FFEB9EFBFE175F788752DD1FA1498CF2F963B4024E +15C94621483D01971904BFAA67A7C993783AD7EED2510524E9D2D21994ACDB70 +A0E2F584699146E3630BA572CDF90CA2A61624DBC707F05C21F8A82D8B429F9C +D434974F43E81C547A7D41A59B0C4887112AAF800B21CF2DD0BD29D4A8B4BCB4 +8BC6F881461D45B8849E3C4A850926113AC62D3149C2706A62AB60E5EAED4F69 +4AD408519ED1C7402A978FEDC91E1B49678F4E3EC309462FB821D6B06C20D5DD +2546659762C954C9458D07ACC8D021E927185EEE3AE2671523635B461244E2D7 +6A9C8F81AA4AAB413F78677258DF96123F7A7DA5155B33641901FF96682E98F2 +C5D6D2F66C37EC0528448DCBADFFC346D32C998CB10CFBE8A0C7B50AEEC23D83 +CC4EC6739D0883ED3A38B693D31764FC4638BBA8C950348FBB90CDD6B657F4A9 +1E6CF09803A0579ED7E63C8F3D864B347AED85463B5C86B47322CDF40BC3E6BB +0EA2EE8D4AFA020343C7032F2625195E0BBBB30AB5FDF8F1DF36913743EF307C +DFD7D09A0ED9B198864568AF7AF819E4E8F4326FA799EEAD701C8CC105B55304 +B8DCCF60403181E35119DE57F0C094AD89B5F97D9707399A28FE6EB3FC70192D +2A96FCDA54ED30408DEE4D39B17E0240DE0D65F7D9CFB48AE349A70AC495F908 +C4C1828184FF8D9625400E986604251B55AF24534E4E30E3693CCD3099CBC0EC +2E562079CA068514D5F099BAB905D7BBE1C5827A77D4838DAEC3D11CBBE1078E +02A0ED9F852DE856494B997171F58E86E8B43A82C1B1A70179127D748726D004 +A18140E752839862D5C2BC5C25C9F009AC9A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFBX1000 +%!FontType1-1.0: SFBX1000 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecbx1000, tcbx1000, labx1000, lbbx1000, lcbx1000, rxbx1000. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Bold Extended) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Bold) def +end readonly def +/FontName /SFBX1000 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-229 -316 1737 939}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA1B1ED6A435C02C357D527BF5BAE9F3163F8850F +4267F16F7320BDD6979C2F8C665632114CE1D7FCD000F5FBD3E05848929A6E47 +97361D305E2B3EF0D3289006D6D4A92B4915A07861EFFD2EAD6D0E44D7F2BC50 +0393AB5D4E20487C48DB19B78C49FB68EBB7ECED723428C77D753A22B7D69614 +D9508C82BA58E2D874CC9F68A68F2A40B655CEC8A6308B67DD6ABE39F97FAD75 +03DA383F4C166B7EAF7A3ED4BB7FC5E6B5D2832CD0A6587B17539297FED807CA +ED127D2F0B4D1835845D8E3FA03981EE7410C5EDBF3C000051861E7C98A1CD97 +D8CFEF6B875885BFF5832E8FCD91B4780EBE0E908E59EF5D3FA8CC9D67787EB9 +9FF5335E365F2B9EEE281ACC85039C952D301529C2A7B52B3A174115FDBB2268 +D98A22B25EAAC4F57C64C0C1DBC34B0FE96C1D9DAC2B7FF6749250D8502C5C28 +3B8CE334C9E727CD19A3AB4FF6D3339E7E9C3F43BAD7A78D4C7113CD45530995 +E6A70147ED0D3BE8A22B346818368B4AA3AB2ECEBDF089D4134F08780B4CE5F1 +D96EA7AF6FC84DD5FDF8C9EB273059C87A568B0E6B0D41B1745D6DB55C621F11 +5E7797466B74ECA431199CB2C9D974DB020DE52EB9C39B2CE83FEEE98D229076 +8C6B6237B150DFDDCB233858DB62479384302233B6472BCE3E34BAAE8F821E9C +4B6ACF55A88DCA7FB297973FA132DA117DBA249E9555E8D93D54712FDB8107D7 +8EC5FB3670F0C73194913DE194E9827FC5885666F81538768DC8AB9AB2DC5D8F +87F467F5383063C18A4BC658B8A8BF0F5572096DABE6377DA1F5B665AD553A52 +0F2666DD0DD11F2CBFB23C53974DFBF98AD666010011512F3CB87C93AEFD7DC1 +B4F6E91182EEE4BD6E358C45A3367623B31715A8ED1CADB828028E2634E5D35E +EB4C69DE34761BDF081F4D7877D6CC000290A0A5CDDC8600DA605527DAC1E8E5 +B0643C1EA3247E4386A7C489FB52C995F9377C705112259C54C95F03A9A25EF9 +9D015509BA7F8A405B8F794216517EA81346A7B69CD1CF2AAAC8CE05C77279C0 +C7770FDBFB486D254F1E4982BC18B81B8961F03869329ADAA8921D3A266273B0 +6B4F38E38E25D7C7A71B0E52C2BDEA8C761E157CAD1E44C4FC5E460303A726D9 +F256EE64A9FDA88085E26289FEEBEB4F995A09C806EEB95FECED055E1E5CA644 +C7B3F33D0250ED87C2B0E7DF81E6957358C5E04F1751F4C4C2316AEDA07CC234 +3F04EC2C85E883A13C44123D05F1743AD5172059A4C69A3574D32F41B39AF3E5 +14CB6939F13BF650694B82F991CDABF3FE69E8D754E890CC69608D763570BA51 +DB1A16658030B9F5C051C58D0E6FEC9A2E85A226D4DF0ABE8B9F9E1AFDCEC27F +8788CCE0FB8650E884AAA0F61F3B75BC288A65C652CB2603C4D647B0FFC92AB3 +43AB65C5572E8576E9C349D20D4CB3396863851C063858955C10E0B69DC1F752 +4E8117144127D25D825F5E9B7B21BAAEE8572E66E0B3B4577F00F4B7BCF0DE9F +D17A9787C2115DDA18BD3256784F94A4D236F9DDC74C374C694E5D0DA086466F +199B96D29EA092A7A7D594AFF8C59D3EC6AFEF55A5A41F2E07C8FE86AB76CBB1 +6B5F09D89E85D792D34FB4DEEE7EFB11DFAAC25A79F99BA27D515136161F845F +8BD0799BF65FD0669B944B4F6EDA3094983C6B925C36EEEA92038B359D0CEB49 +5A1746BDB3FC39751C1094B3413C3847ED2852EC2335FD859749448E8C76C25F +324EA209E3F764FC5FE3239F80DE989B3FD5A2D0CC1E690E3329617AE100DA8E +491D33F98312DD85DEA50F44A32C81C2F455F1EF09D72E5CC4D2059FCFC18662 +C3C1355BEEA82D1226ECBFFBD267C00B1B90626329F9C77C6DD40397F151EB8F +2B985A12CF0C12B4A0B49E2A92BD4D7006A26478D03B374642130A400EEC0071 +C59FC4EAA00B42452F9B180105AB62872DAFA2D1A22FFA4FC35F25F4B78D910E +195BC8D45381C764CEA207D6ECFFBFCCF21DF869D0551AEF01E506C01C6DF2C6 +56423B52A7FF940304C3C4C17124ED6C4682EC63E191FC5CD4F15E2B2CFC3464 +C31226A097F0FADDC671DA73233188A55927B4541F77B2007639FB7847A7F342 +ADA85457AA5DB383E37461521421CE0C6950293E934FBCB6531F805789A74A7F +2AD8A586094EB677EF96A3984BDFB1E92A0B77362680B8C240A53952D5E60D3E +BEFB80310D32ADC1F14982AEA03F90ECE5DAE4AA32F43AB9E0BD31B7770B2921 +B541722C144CAC167789C184F2DC9A7EBDC799DB693F127CCBE42A6EB6D2D1FC +836C9F79F61A1CF019F96A665F9E6AF285432BAF01EBD043CACF6EA6F94FA260 +D6280C8538B736DB8D1B820362A2D1537DDCCEC032C7FCD05A88AB633C1FEE84 +344CF76BE6CC502C3CAD4140145C135B499F0DFD0046D2EBAC2E25B06CD04712 +887F0F2383A602814146FD5A5A0C97DF2BEF1FB6302D4A5D3ED60E4BFCCD21C5 +41FF71FF5FB18DB0BD82DF4D925BDA953BF21FBA716EAC8EDF6A0300EBC37203 +ACC343ECDA06C5E01300A7D2FD0886B6F130F1F1D20304A384B0681FB133A11E +93CFF14D63BB87B62DE7433B912F8565F7E9AFC81FF938E0FB521C788122B560 +2BC2F4713BF580806D5CB8A54202B16D79D75334BCE8038E8DBC472A26E01DC4 +1B03273DA05DA1AED7E4C9B28E27FBE7B481110F9B06AA39534FDD6D51F58688 +54274B18EDDECE23E2B3213C5E50A43CBCA7253322BF361796058B3B10F5F16A +E21621F9618F6BEDC19A3953DA9B47C4333D013565011BFC11D3F2FFBCDE3D98 +5DFBAE3A9DA8FCF0AD1F55CF3226BCBECBC508D4EE3032D5ED782D0A71929943 +7C6332293A0E97AF58479E224A9F093D45C14DFEE2495B37C1E0A0838B1D67BB +E788FD5184B0522E6BD3E974B51E8ECB6B4E498A793B1731A3132949767C5191 +E95AF7AEE51609CD503B0B125C5833C7E416D29B10B4D2CFC66EDADA202EF230 +86E3B533ABF45CB85317CFD5BA6F91B2FC07702E13DFBC5911F26B64FED56150 +911D347558709CE20F5B13E44335DE585E482EE3E9DD297A2D0511E442B33B49 +90833C2265242FDD1C7EB17ABC8811DBD195EF7BB3953879D4580394759C0301 +1861F65B2D7F77F992B57D9465ED543713BF03ED41553F7FB5A43AEAE4CF4A0C +F49CBDF95041B8C4C96D6801FDCB686B33244B47D77AE13F748779DF00E8D5EF +65A86158727ED21AE9260574F16C89C6B147D97CAEE49A2775A56849868EEA52 +E4F9C7DDEE59C31B4CA1D152B689BBB4F12FD991AEBB04D5A74A7A854E6F38BE +2FD1865AEFF5E02083116B1E340B39006E78E1EFBC1D46093C727B98AE47B1A3 +5F0E7FF4107DE5E44A535DC9644C7B083B382985BFF288208BA01EA22B69288E +707897B59AB5AEAF2F8ABBA05A378904EEEBCC2C0D1080DAFABA016A739DD6E2 +F900365690DEA84CAA9A6FF0E073F613E8C5CD01BCE0D22024308F3A7742D132 +A2873ACEF9B7F3127BB0A820A62B6F1A289C1403465F685B90D29599650B1CA5 +4943AA2C3AE3E5BED3F9AF4896C340B5016F672352A15ED97BCFC1114B03AA7E +A065EEC0DFD78D5C23023E19C8F34D9B55305ECFB83AE2AF66CA49667D1454D2 +6B8BE73EAB9DC7B89967EEC051E141024DA309D506A32CA53FD08B8EAA3F24A9 +A714148B512A9E663932EA165A55976EF63F3157317AF778A53161CB1610767F +5CDD209FD868CD0E603FD1A9BABBD2707EC4A5E4124E565B2D853F7F1EA8A7DE +E0273B171CA21A00310A26B5061CE7ACE0BE08CA6DD3B0F9F98BA675AE7AAC01 +6E33F2D4E8CFFF2811331D10FB0F10FABC5549A452F780FB91A6364996474D99 +E383BD78FA92D59BC87995ABA0F82B0BEE90353AF67ADD26AE2A567A3C96ED90 +804870B3C2C9D905FF68679CD1419595FD349D0D64C835E7C196F254580888C3 +35B9EBDD118A797D0760DDA666B64326393AB1BDCB8CF52B00216E6E0BB2353C +2D66739BD457CC86127925E8BD800ABEED8A86E566386C4CF7A0C9F88F749ED4 +A3051A5AE5233ACEB7DEBEC4C2F669ED0798EC0EBEFDA8D1EA7BE1D6C1292BCF +1DA2F3262F9391A0ED0E7C9897FDE9781F6726B0187CF78E246AFA830E4CBBE0 +D5442E710A4535FEC02697503D1A68C3F65B405E18D9EA2767BB5867F445643C +9868C2D687702956C032CD7D3C7C2D0CA524CC1B923780A7493CF2A9FEE4159E +733038E4079D1FD60E8DA386136A2CA71173BF06FD7BF71A1836FCE2419E2284 +8160523AE69D9E052BB719CF9E2FD073701F486CFA40526E96273134E283864A +217029655C0B9B3D60F656B571A0B581AF8EE6A597218DB26810372F841D283F +7C07AB3D35AE5A7F1804F4544154870A4B58083F708A73953F18F8585365C6F6 +41F36355C6230590485EF1D9EFA7AC8CBE844B777E28EEF2F52D9FBCCC4A0E79 +295A7B818EFA4530AD6B0AACB44B09EC17B4C07D23E2F105BBCE9A5ACF2FD9AB +4D5AF65FA8A79B5C062C6CE7955D17FE4B01A623F7BB26F825F8A3708FA93279 +5273BEF944BCA8D3C9C560604F657503103564B183076BA31D54AAB23F63A8BD +00E71A08BD11B4C27F9988416118607F886B3AE1BEB4D5BE3FCC8BA675AE7AAC +016BA372B6AC74529806A3E0585AF0DB9680E40F369EA947408F2F779DD0AC05 +ABE2EFA6550F9DAF72D09F9A433A1C7186F5BA2070CB1B23FA9AEB504F5B35F5 +2B949B4107C43CE961D961AA51C6470D730DBAD665A3202947B8485D1CC90DA1 +CA8310F453DE21ADB02133DAB2E79069748067DF9ADFAE70D318D421CCBC53B3 +F86DA8337F2EA913D073D4D5F1361B844EE9599395BF80FBAC67480CB8F57F18 +25975FA4636B473B5F02ABEC923C5EEA16DB4948FA691A99B211EEAB268310BC +37A283EAB74D2BB8468C530A56C9934A9FF0C5D313753AFB7AA3B19AADA406C3 +51B1F1DCF0DDCFFB753C5356214C5C6F85BEBCC30B850ECB1128A9F9BE1CC312 +81B8C3188A8B640E7C79A2A66D111E69BE95087E79A1F9E43D2592661A9EEF8C +A3700DED9C83A57283991D7F8013C5AFCF78EC88484E36952448DD093F4965A0 +0712528A23AF9667C0EB2D87BCD273B50BC27AF8E38090104E64E8C6CE5A74DE +B5C64631867147BAB99513FFC2C1B9555EEF08BC5570B4601DE984C5EC7CA3FA +D47F38A85B06C5658DF0AE787E8E4B5D7BC96FA23F67673A849AC1376F5A199D +052FF2E65C2C7CD975B1FC561E1E7EB6BD2164C7A1CC3032E4386832E7A61FD9 +BA25F8E3FB0C86C8D8E7AA4C0464BE5F50CC074C88DA0B72980E67CA361C0278 +965DC3CA771FD3E1336AECEC76C0F9CEC2BB6A9CEA78CCEB65A549EA5111F5B8 +9CDB744F4FD80DEBE2F2280688A88612CC6EA996AEB9FBBA1A00232636239BFC +E6960C142EB069092D80477A859103CB5CEF1D77F96633EB1DE8AC98F91DF932 +DDED797A2DFE40329FF3102C678C3D2EFF80D463AA2854E828F95CF1C528547B +DB9245562475CC75C9E8A41699EEEE0C2493FED90E9AEFE06C33332FB1D97FED +ABB89F31BF6983831941C05A4A6BECF7FBB4E95E04A726AFB66E83996E086C58 +EC4061204CC6D61ED824077257C110BDFD84304EEDA172A99BD9FD03A9C3C439 +12A77103B2C0A90CF14796E144CA1FEC7EF283BDE33A33FCEDD3B87477AA4785 +D718F43F0145D585B4BAB5F16B9ADFD94DA0EAD1D8A9FDF740E1853D4FF3FF5D +BD6D38B7A59487C43EAC87B96A7170415AEE77E7A9DF191869600EA2AE82D3D9 +BD4835CE3A724DB406EF420C1D801AE1C9AC4624C921027240C42A2328340796 +2BE0F8613B0EEB6818F0C4F5094B6D96C9E54D4BE56D5C832CEA4ECBBE42FC93 +0B429917A8FA9EEFB582600356426006329D340EE9575A9CB2CC21764379FF83 +98AAA049AB16C444CF836758C3ABF74F86BAD5DEF2C0EBB7DCC84357C07E3C9E +B28AC56D6DE146AB981163B79159BE995183D4EBE24EC20B374EA4AA4F194DD1 +FAEE16A319C717FB2DA748E4B70893CC4EF4711AB045726F023EA52D7B913780 +BDE4942BB8C7FD5EBC64404FB97403216C935A67FA17D93EAFF0911FF0CB5242 +F97B047EF82E199099F4E035A4449766B9D9308ACACF64AD1070F88ABCACF022 +A58356071C2EB2801D05A24A789A87AAC947FF6D16741688D077BB6E64C24E8B +2827D915F7E490E510DFADF0D7B9B45AE74C0DD83DC7A4838AF52CA68A7BCA5F +06C89500A6D87A92FFE43F6E30AC3F2D05C451577A009F28026E18F1E089602D +D9ED792653F050F341BBFBAB7F4A10238D433CAEDE942E39544A85B820740BB8 +C45D78CE03E83390F2F6010AE948B2DF8E96F6A0834A8A32FF1A5044225EEE82 +4009D3950AED31E65E2FE752086E740F745C0DB5CC98316C94774223CA89AA1E +D6BB9868A5E78792EC3F51F7EFAC109C41731872AFE11206243547D82BDF5724 +6C43B51216BDE9EEA9F569F1E15942EDE9DDF178F2E8385E796A7C9CC1F783A4 +14A023B8FD3A8F52131E4AA97827F9FD2F296AC1BCAC7AB0DDAAA2FB8ABA276E +8451B14D43C252C9A3E7DA8EBF491EC59425F2248FF2EA0F008B4643587E8F5E +D4F2D7C6FA33688B8A07B87D2A315A09B88C3AC51D789DD24E3B124EAC92855E +DE27C68BF6DC7B01200D034FD828594E8553266219B6CAF9D52E5F0DF8AFB838 +AAB8E9264F5D3CBF4732B898886CB3AA4F2768C2988B90AE633C9BDEB5316C71 +46ECCBFB7204DC610D1332ACA1B50E853E465AD8C50485E42FCB95D1A8E20B38 +F652FC2A6876ABF67E6C447621A48F66570FE72D78E99222860678E8B8389AEC +5668A46E10B9714800B306BACC9A32136B82785126D9E48E1BE994C9BD5603EC +33CCCA0D722AD502FBA1C6F5C0EA161430230A208B42F72C8A4D8C462D8E432C +96E3A910F87F0E675E3023C23EFAC7D1D0550AE35D7D09987EC00177E79AD37B +F6461E3FA73F4ADFA26853A90DA78F1A51CD8BDAB1915C098DBE975B7741AC9B +FE1176B41A050E0A0D9E16EB9C83D458F0DC3F42FB8A9CCC010CC8C264C27AB2 +C43B27E28874D28A0BE58FAA15117EED251FA8EDFCF2E86282EC03C2BDE699FD +0290E254E493664D88D56DAD4D58BF710C1EBCED986A2716C52BA0C651AF60E2 +4140F72BE615EEEF43E02CC4F892D7625367BA76EC22331C2DEC755979B320B4 +65BF17BECDD416F7AD7338F8A87B26EAE83DF4DD45E5B15CA0787876D196ECFC +443320FA160680505B3B45685ABDE66107196B4B2B922C5F3B371BF36035E1F3 +47F33841FFCF6B57EFB1EECD4C53115FF133A2A4A1B516D37E59B1DA90C2478A +B4C497048E20B253AF5865E0133671E9ADFA78C63AC96C5CBFC11C6455AB5A82 +266593FDEACF15E6A12D50C7AD309B15B7AABDC1A91D478BF53F44409CFD7519 +C05FD3961EF66B0DF9D36483368B666831368E653A10842A94101FCBFDE8E3DB +E5B57B4024BC66A30649F8B24FA46224E66D6241D713E3A62E4893BEAB0BDD67 +4D3E27D16964F9A86561BB2D8B490EB712219955A4BA1A2E7B95E40A623F6756 +34C4D264F20DDDC334678E571101CB06C70A4293401C0CE6A08C877CA0094B2E +89C89A12951E80F571B7450C9AF4CE6C7ED659BAA94C9B6E608AEDB1B54E3A39 +73040606493B4F768E2D4D83EFDADB75B5B02478231ACE364FBBE8685F311945 +4E8F70BC014B71F1D3E9A257D08497019F95579F0DA17A614C12399730911378 +58D6EF8F8279B6B80EBA2E1F10943FA782559036D13AB5EE0CA3B6F1D083A36F +2D86CBF10528A96CBF2B45CBD12F4B3007E7EE680E2D1CEEA956D6959D1FD520 +C8FEAE3B21B1FDB6439136D6B20B730E36FEB80F752F4EF636A215D0FA6F80F2 +C41EF0C380768481546D7DC27C1D6EB6E46D7B0C7399B0058A64FDF2E3DC5323 +78A8EEA769D94B8CB620952DDB308B966FA7754DED7769F5DD27B47DF1D178BE +48EFA90CB9C15859CDC7C180C6B6E5A2ECA3B809DF0A06AE7022A33778B3E6E4 +32FF744D6516199AC7480C14B9FA161A679778341006DCFD325D6FAAC3C29AFC +EE582D00489099A66E14F3C046A1F5B32A12D36D54CAFCC3DA9C41D7B68FA79F +03A5D236F9DDC74C374C694E5D0DA08647157818B829050C830B405ADC394324 +393BD9E8A8809D965B921562106878133CA08421B2323EE28A02EBC95E9105C9 +CD7597E31C99E34AC40416E7064DAF472D4C24426A0039E0F7968AA7BA4126C0 +9071D4FA3BC758535CA3B89193EE4D730C09BE0DE85BCA016BD810EE4D467124 +1A61E60DED771BDE14ACA25D23ABDA4CDEA91FB461FE49094FD7C70137263F43 +437475DFF9C4A2B82CBA82B08B0C2DB492A3B69956C30E74F651F4A3453C96E0 +C4E6932F0EED9F827255ACEA830AB4468E20931A3C680419B9CB7F8FD2D83375 +53B0C0C2BAE90845474B32DE5ECF30A3C9066B2178C0ED9F0FE80AB1D4DE5374 +A7A856B6A954CE1D6FE24AF415B6D64BF071A2E72411D908F5686C5B8C31DD33 +686110E9F02B166AA3E53AC69535F016DE1959072241D2DE3908AB58A7A6D5FF +B1FDF088978B90DA46C1AB4CAB1BFCB8658C33B10548BDA8D4B399DDA2E75496 +D115646EAC834805A85C28E6863E2CBC25209AEF2CA999760B4E9DCACF1D6460 +11096F1E4CC91E86284AA429B53B7DF2D3612728FA231A72D8C331872FDABDB5 +CE6E28DDB3E1729921C7901778B213E8DD0BEF5E8FC400D92173A54E93A24841 +7CB065008FF05ABCFB9F4A745A14F7ECB85DD6BF261DC541E82C80E034A90CB6 +BD6895FC2E4426C2A5F210E971961454C3C0C909A8EF59BB3C2E839B7B61B0A7 +EB477762526FCDEE99832629C9FFEACBC97E5D286CF984603A986D7348699925 +69E9AED97D369611727754188ACE398A99303C380C1E6477AE01D1876F0D81D0 +21A2F8D90C40F64BA8714CE86244EDA872DE3383CB75BE286ED740EDF40B556E +F4F63EA1A434F7465D8F73651A4AD689BB4B09780F2D9BFB5D704D1594B27C30 +E9603F7953D9DD5A9F587E81711397B996D57AC1E711AE61D7EA75489D052AA0 +DC7551BD30225D7B09FB6ADE9877F4BD1F22D49A6327B443603E41B1BC8519E9 +86771EF8061AAE3E033A2613775BE150A6F80047BFFC49FE05B87FF208E0CE33 +921648CBDB6FF222A61C83BC773C29D0B4C73EBDF6F894A2432A2B90961AA977 +526B27909A920E2AD39DFC208418415F80983F6486E400A501580CA854EC3A9B +7E4F3DD6147427243C8A736A57370A1722563A6F27FBFA72E80886C7C6713FC2 +B886FCAA38A787538D728D824993B7F20588C855D2EF8FB49EF3AE60FA44BD29 +47EF117AFA0B67472905D20137D6B317604A4AE4955F7617BA79DFBF9E5D58DA +0D0A1DE0F553FE1D44BEFAD5865D649F955FF368F3E3153D1BB4D5D4236DCB6D +2F77F8FDDC044F75DEA0EBB7CC5A22E510741DA9DA529EFAFE44BA7890FF706E +24C0AF00A8E0E64085A38D7B0B261728A8EB2B878F61C6B84CD8468B69202CB7 +BD555521ED4815FCE6092FE2119CEA8BB576D8049B4D77357F1C84FFDAB17F04 +14D6D85391ED0F055306C61B97483486C2B4503AB17B22F022C20C554B95622C +F9876A6592B02957789145E226A9286987A49E5AF1E3C13CA51FB2EDBB2C205C +205B35DA97CB6A1CA4406098B8B1EE5047D5A37CC253E5A9E0C84A9F4CAB2E74 +215D05298EF3ACA544F1B6EB45D58CA9C51DC93BC429BAA73F7C3048B1CF36D2 +06EE816F47E2A95733AD841F919CC91219EF91D44B433185E470B3D4B4C30672 +4329EF34A278BAAC6E003F5CF32A918872AD4173F77DFD57D62B57EA55E8671A +35067D9374C088A5EA75D82BCB26A841A28CCF33329B706ACAA51EE95E5CED37 +99EAD412EDD02A766FE35B2A7ECDFE1D63035C757B6E9D004859EDB9D667F9DA +9178E5350B764BE2ADEAF899B491DC136D56E5800B2B623E14AFA787F13F130A +E7672FE5DEC3654ACE7161BFCE2B045FAA6C101A6CF434830429C6B60C7A140B +2DE64113931310676CEEB2FC761820F4B02BD7408361F5A8284AE6A8FD0B5DBB +569C2DB5B9A15743D7ECC67F1810FBFC10C32CA8463287BA8026C6610010C4D9 +5A0E16926FC20D951320459777340D66DD7139F018998F235B506390B1C24D95 +EA5A2AA1FC3D4B68F3DF60FF48F3F791E425E2F322B68B7C9A7468FBFC6DB97B +5DA1A5FFD48FE0EA0855979B40292C24B153B32F88364EF317E49DBC2B8750FA +67CEEFD4870554436DE56F6D3C578E8377C33750908872FA0C85666C75B51E4E +9910ECDADA16A39742596FB69C1F8EBE330CB7A51F6ACFD1E222DDE5FD21D5A0 +43B8F4F1136AD375DC1F42C06D0C5C8291E76A3D9D0A5876EFD6DE6AB1F6FAE0 +20CA50ECC4A969B1FEFF5C247807B4DBD7804181BAA0585BAA2B396686DD4FDE +BA8CB89756E1BE0299CC13B84054645B6D3BD167A542ED2CE38255E131975DC6 +A0B3677FB4BD0946A254978F62D5A281667907F3A697683ECBD0FE64166F1262 +37025F742F68709A54C7F72A35ACB32F415F7449249552FF9A88ACE58602D032 +3E348F58EA879760E3AB70FBF55DAAFB992DB6D1B8FA6CC5A283B3A8C6A2B1EC +6CCF7BC7C5A67D6F4C1708FC9D021C82028905F26FB3BD75C9C1C52E192282EC +86EB2EF5FAC00CC5AEE0E5EBB904C13D05D1FEA5845ADA9F80D7BB8D1DDD8127 +6D71AE4042E460E0312D2CB339B5547BD1FB6612D2F46EFBC45BE4269E32C7E5 +0A4654EDE694A01A2D5F0D05528551BE5416FE8C7908D79BA2E1760F73E59FD3 +895787CE65A8564FC533C12CBB4FF7A6B724BDFEBE5DF7A75A18EB10550ACC7E +82E9C5CE673CDA6861141911C41259EA636A7E0AB3FF945C504853C45C45674D +4C79B5F775DC45C552223A55C94570F032861069EF231AF32E618F185115DDD7 +4AC44FFCACC70E9B25183486A6694110669CADA6BA98134ED58E1BB41020B49C +AD1A5E9DD79C098DAF390C7A536837513B64D21A8A6CE541C65CF29EDD351DF3 +259F78035093EA662ECE47C2993D5A24841E3AC159FDA3F60C069C47F24DF221 +6BF147D25B03A443509F5FEAB99D75BC5B7A963C0547A0C0F58A5AAE66333793 +6417014E40A7F2697F3D6E1662F57C065C240A4C3A1E8435275A3F9A7CCD571A +BFCD3DB99D69CFA4B5EAEEF3DAAF36891A1FFD87CFB96C248833557C25B1FCCE +805938270C2E7503222BCFBD1D9B5590E33F154C06C34A0FCE9DF1D5589BFD85 +A2C447F596B2722967421DEFC75FB98D42D4F32C96FB974F6B6EAAEB7A93AE0D +F09AC32B5693CD8E718595958A47E66704D03333C21A1B34A1A5FA705980BBDB +58CEBCFD0C306DFF37F0B546E139430722ED94D5FF033724D1B4012236C997F2 +E345464123E873F52E5E493C7029B19A15E411D162B1C1B946C96C9B2584C499 +D5C2F2980D677F5F07CCD317D20910D235469F87A8E329B66DF0E93CD967F877 +DFF595F30D611C8CE90611DC2D9EC1607DC8CBE522EF5951BF2F74838F1143EB +A4D474C6EC2C4254FBF25A6D925B20B161236859B9A953A44D0BD4A377916CB8 +5B08DD0325D4E0C652A38D5CED4273D00015540739851D03C05564AA7073A8B0 +868108E2CB4241177353670634A502FA8DCAB985DAFA4D6BC2F863BB5A354402 +D363C0E4E80AEFED2994F529E8FF50E91BA5E77F6F2F75B7D3A64EAD2E627D4E +B9C08DB2B0491673859FF0E7A864595323596CCFCD441CBC375917B45C3F3E02 +C1DCD25CA3200EBC1D326A69D3E51EC561116A0EA33E2FFBFE9618F72BCA255B +15BC235AF11C4B36E9D26381D9433CD1B657F4A924EFBBD1E9A360816F04DCCF +D6EF266EA41C28E5F5F41FFA368E053EBD8F16D282013274F236C833BBC910DF +4EC7862D3C95FF1D0E53D31D7430CA354050A8F9EA7505001D61BE66B58CD190 +8DD7C8E40B141B1774F7DE1D5A70E6678DC244961A2AB0F3AC849B5E308EF065 +77BFFDD81C6DA119C22A395D7A1F5AE36A368B9876A983504D7426B1BCE07651 +C7BE781BC87A7B37139A89305381FF36BEB5C416D9B61E3F10AA9167E66A4B1B +AF8F83ACDE5D1DA638BB8222997710D1672C88694232A1A63547774B3AF92650 +E0F6CCDABFF750E51C8E430F2BFC28949CEA563B72EAE548AEAC673B69E8BD7F +078BE0FA9F2DA45D53F7B78FB672D7B0E8DE7B8DC4C5D864F189AF8B343446F1 +B137900D259841FC474126E65E1B79295DBA79516320E16A7834304796ABBF09 +B290DDFF1B92301138FEC10EB5F5B1AD9F607C9191E91DA6DF05AE1DD4448579 +DF4AF8A13C30B7E821216FFCB30310254B345C3C32CB836CBE8D5BEC4D956033 +639D38159C847016CA4C982DB75204D99EA63CBCF0FCFC526DC22055A192C700 +2EB220AFBB4B88F1A241B93313E40923C3E8338FAA0D71F8111745803C256E22 +E5020411CCB229C4467978BF1C6C088DBD901E13E2CB2D86E4739729B02E7E58 +7973C1CCBE459BCEED8D80A2C36CFB09BF576890D071B1CFBADC376B0C90747B +3B5AF57FBBE7E7ADE7DF0D559A1C28051CD771BE1E3C82E0574A86BED26C7076 +0A547B268F49487216D17437956BBD2E631C9B2ED16BC149DE1D1AB9FEFFF55A +7EB42F83BC3BFA8E8118AA5FD157392180C2964898CB31CF959B8111513C494E +399BD636616F6722C8DA959A662D8624299D09FC25C31C6129102220A5E816A8 +3ABC1037EFB5D62F9FC05B76A47DA0CF019F07ABA8DBBC79FCB876E2B431CA70 +8229F245BD791B1F5EE681DFF83E7AF220D296040101B0B2B04FE2AA3F4443FF +F918C43710257A2F80BFB32FBF06EF866BDC207DD7EB5429F15CA0E7763190E1 +D9695A4E3710C4CC1298E673A90CE763E33A5185C3A6B25CB86FF8FB3EF47B01 +03EDAA35AFC04F85EB7B8EAB015145A6F7B61A281FD77B1C0066B22D0D4CC6CC +FD602FE97562B73D1209DB5591C0F5DACD50BE0B65DB5929EE4D92A5BB141ADA +CC7693542E7625CEECDE1DFCEDD83D68845A83A95D585D5F471315D215F50CA1 +C9FEF8C0210A2618A6F7C791737F3C67BD558775BCA677DA95A20E337F0D36E1 +944222C1D081D40769D134992E49522ABF1884109125702BA923BA890E05A8E6 +A0FB2C846743A8A22E647372F2798F2B33844F1FF57996D5C90EC3777E8D0BA6 +E69984AA1940CF4E01409C220B8A6640FE90A893744409E083A536CC4627E104 +C77ED99175ABFECE28297CC615584AE44B5A6C81DC8F047935BA5DEA4F93E861 +4966D5922FF6C9CD8EC53EF44B41C0FE765F2AFBD9994393CE659D5ECC5EBCEA +17E949ECCB71ACD4BDFB6771DEB21F22CDF2560422F57E98871D0A39ABEDF33E +10F6F851C5E21FB68C627866A781B795EBCA5F44252B5C8FFFC7042527582EDC +95CBD7966E070D8BE0B36A1FACB5DB6255FB38B0902B7AA7C46F038F4117B174 +9E05028D56047724ABE44EA7FAC256C414D80BA4C4107571EF0634548E86705C +E0ED6A3AFF15976F6F35EEEE57D563FFF381CD290668475C725DF295DAAD41A3 +E00E3FED96FEC8CD789A3443A723E377325BA223E575BD17213EBBBC0E6BD37F +FFAC16F517A8C06176A645F05D0AD9F223694EF4328CA207AAF378D56015D375 +120862ACC34B6D685759A14039388D0763433141C027DAE813D06646E1929338 +2BE76889E53BCDA6FEFF40E46BC71082F0FEF9A4742DCB0B373A9C550C26992B +D949D94EDE050EE86BF2B0DCCA756B93B0EE4B498DA00E281EE7273946F339AA +1222181C4E42774A0E978D78E985359EC625BE665BD0CC27C5DADC54A203587C +E35A63979E9F46694C514BF8D768247C6FC4CF80D0FF918FAD8DCADBE1574F53 +FC80159929B6F332462328847E728616C16644BFA37B7BEFFD38B6AE8519D680 +49C29F9D30C65CFB76F833FAFC446056567DB253BA6A9D6BC5E8510BAFA7FF18 +9A7B7F9C908E662EC2CB046635E9992A167618F957731F9DB9F4DA13B49647EE +AD645F671114B0F1D92978E7829B7090B28F95411B64AC88563EA60263DBF499 +2D89BD9D04FF85E92F951E522CC0FE0F4E22B0B6AD02B4FA3E2C454BCABD92A8 +79CFB222664F9A8948753DEFCF5A2EE7EA03B084D06ED2AE5255E12F9BC75068 +6AB31904F2B3EE648CAE4E291B33E5388C5462E4860BAA23C88DDF1AA97D7DC3 +05646D372977AF4C08DEBB763265EF75666FB562801ED5B97A106683824E45B2 +3F776512F282E58F6E49A69F4120DEB6BD038BFB05014271364B923A150A2581 +FF4486941397B71EB4BE34D54865CCAE4EBBEF598BD62403795AB213798D7721 +3A14269C79605757C90F2EE794E79827E07F5B6CBBAF78417E393B7DB2898278 +4E9079C2B3F636A97CBCE373DDCE18D163DCB74E5830B358BAA30A21C0FD33C3 +4FAD07DF7560D6D7E5AAC43057DEF417707EC59946B08EE491385112D3684891 +0FF9E9A1472E6D0C4F7E8FEAE77A96BC8D71B4062C8F0D1725BE395715DE7E2D +6A659FF2714F0D564B395B189914E7BE15A7F9A9EF4685D87C173679365C378B +1A9116D575D5FCBAD7112AE5696A3B1558C419A4B3878CAA62A723C8EDBEE660 +3C56F64BBC432E470A46779FE5411EF10DD42032364003B089656C6201CE4F2C +309D3C2795C7F6D5B7BF037363C52D836C61E0B2AF0F6B0711B42AFEB827699C +186547637A8FFF242E77F9848F897FB399DEA61BBF46A24F493DD01511DD5629 +4A46BC046E69C05127EDB324C6DFF22B854DB4444835F1EB51DCE48B4FBC1BE8 +6606F3CFFAB57B37F0CC64514EEB85DCCE924443B6CDCFF51C9A5E22C1D273C9 +794C30A391EDA9FC3C8AD7586C55A00798C6F1842038E44A8DC0B41EA38BAA5E +0E4B3BB3D58EDAC82696B42E26F4D2C2A82A7BECABA7761A8CEDE43B92438244 +B4638577FFB87F0AC55DD1AA7E78B5F5731533BEFE633BD87AF58583852241EE +ECD4D817E396C0F12492206DF42CC5AA25088E7CA630483CF518AC05ED3350E4 +D6EEBF4223A46C1816846DCC9BCC5C7F2E21BBC7A2FD4637BA625DE43CE03B45 +44963E53BFDE5A28210BA0E9092A1AB36F1E2D74131128C98CD7E3DF00360A83 +24998B80ECE40F291325A17D6EEE78F4E6D4D1E7F56D565A27CBA95D0106B15A +57A00015149B60E26FFC865E74410B1C161EF395B37DCABB05BAE17D78E2F617 +F52A2639CA73DC14358B661FB6A99122BBB18C61D1049142DA50AD1DB78F38C7 +7D33DDFD155D3C9CFF7759838787FD0C0106F7AACBA6A2576E945833F487850D +233930D7F5E4860089AED162CE8C4DBF3F6831AC835B36A8DF0CB8EAF899B491 +DC15C7000FABAAF1DA240D2F87596CB49304E2F43985ECEDE134411289680911 +1BE23FCE56F6247BB62A06A1F74850D4568BDB13DFA6FB854679971943EC7A47 +F86055FDADD00A5165762583E3B93788AEABE8CECBFCCC56144E11C93E48CA45 +19D49A181FA5FB0375FAC684B4684EE5BB1DC1FE1683F5AD6814F9FCB2E8D435 +5033092BFE8E4C6E202E744CC3B65C0932816DE9EB8762BC00E075521A8C020B +41D5D3098782553880E51550DB59E4322C116CF3F3B86496FCD3BC73431EBD72 +2802F32E3412E8C136C5F833DA963F1248D0857B03FE46253F1C58A4A2722C93 +AB0EB50A88857725373AFDD2450E4B5A45C9C5840293923169AB01EC23E809ED +64AA57C5E456688DAF3B87B1634AD3002E8F1BEEEF87F84B36D82A452E1C3C0C +3106A52B6C090D4BBEFDB1AAF6E2C83BBBC8CE1843BBCC7A56BFC06644BFA37B +7BEFFD38B6AE8519D6817353F04F742FFA6CE0F3380545252B0FCB28F4481C1B +3385A0FB57BB11BA3E3907192CBE6697699D6AF0E144B7F27B0ADA88689323AF +537FAAFE6449A554DDBAF911A410A3CDC58D3F5804BDC2902DDB6B63B9C7C21C +73F4E4DE33BCF064B59D7559F0D0BFB29A6C4EED051DAB032D64C4066E913D6A +CDBC5E825DABD72F3FBCC0A024A92B1420180D9951AE234A46B51F8EB821CB14 +BB26CCB073A593F6A5BCEC4849F2E3FE32F6DDAE6335FF65DCADE9EB87235A8D +376B0E7102CF7D5684A99056A296800D7300FC6CB696DB74EC414C74A929DF50 +0E45D0EBB8D0AEBFA29856CEA06B5E1482603F238A159430F50F33D27C8016B3 +ECB1F2BBFAB05FF0512B2E086FFD4D4ED407121770E5BFD98E4EB69B4ADCA04C +29176C58D3D55095463849920F9A073DEF1C4BAF8EF1405968330DBEFE8C3E17 +2D3C9E0D0F790D883B17340EC5569B2DB12EB5758FB3E3A85871E59F8031AE62 +DA3B368F6299EC0DB3519921F62E14674EAB94BEC5A300D78E6E9B6E9945015E +9DEEB9EB223BCB46571A5E2DC20AB95C1E01F539C74D9172E29F656D69C299B7 +B36B3FDF302402F7776DDADCE11877456ECCF0F1BCF8AA14C2FFE9A503FB22D7 +7931353AF93A550668D19522B1725153A823E8E7195D12F3B2A96206E4B8AD5E +6A7BF8AE22D7AFB4A1FB529A01E74A4A667246CA9C879CE81135532B720976FE +4FCA3491B20953C91F7BCA627E33C839A5CB6150F7140687B8CAE372D82FE4C5 +DF2A332722274A9B7A591230B56C932C942900990A1F03732651DD436420D720 +DD9E9D6DA100CCD85FD0CB2E528EC29E11B43A91CA0B2ECA5A8A1D16CC8CC785 +1E8F2EAC8A9E3A2541A193A300D2355614D8320053D265EE6196B13E6EA9331C +EFB8C46BBF61A0C1F87EE042F4BC7F9B7FA5EE756D0C8C4E23B6C15C451E1A14 +072AAA64E6E96EF990662C6F9417D29C71CA3AD3C10E3E3E998A3355E15F4FBE +A19CA8F6FD708FFE1AA95A140AC4A34300BFEA146531A1A27AC24ABD97B94503 +B719B66547D3A9180D9A6D3E3A514782D150C374DD77DDF92FE2EFB659984A7F +B63A3FD4CB6FA0B126BBC78234B59A99556FC25BDC162B909ADC692AFDA1151A +21F8CF99D8DB478902386AB9C4681041042B491DB2565E849AE5C76F68523D0F +C052C6C5FF923220659819589476BD8FF7257761C224F449706ACAA51EE958A5 +2E90BF6E1EFD996D908B3A7766320D9B74AD9B0FEA6F91ACBA178CCF54CA1CF1 +F85044E957BCB437735332F8EDEEF9F4A62118514F9B7E86D8336D508275FCBA +F3D0661D9FD2FB7117E65C38D74248B167844853AC5A81C4CC88725F37CD59F0 +4AA27721DE5E2D2C2EF5530F6E808D0870467828ECBA2E15B324926A41EF30E9 +758DA5AD5CB45786ECD4E1406A4478FEE9906F51F59C1D3A2D2AED2AC8ECD2CE +C413B9B448F90D98C4B17E298DD83780BD9D788A402E0D9DB9A0E7C22EFD0DA7 +CE60B248CB1330BBB5A4881EF3502D214F3E50F358FDDF71C309F71F2B4C1EC7 +EB87CE1A94AF9DFC25B556E747DE68FF8CC9F852FA4B651FBE6D1BF8FD8FF44D +2B065ECC313CA08C650A067AD2DAEC4140AC4E1C51BF09FD2CC88C3527270241 +205A1E1B08FA99243613D904050C2BFB1EE76ACABD462E74E3F95D8E47E5AA6E +0ADF27790610153CE8043D7ECA92230C76BC76B5AAE8969009EE2FD0C0D0726F +542EE02E1853473BBD87004F3694C0C2BBE7FB11A6EFB0DCABC5AEC8EE4943DC +71A985EDEDF1C80CBB6EECE5C65A56E4B7681BC2BE97B7151637D8B6DBBE132A +F5A073CDA69288443ABFF10E72449B49A27F4549759D993159C5E18E04FFB6A2 +EC15C80B4E39FAF7F5DD9E18FD2DF97077ABAD81F022853A997DDDAA4E563739 +9BB1C682FF2C089747A41D0AF9AEB9887962FFB88A41A762963A85D4F8227777 +FC77E98DB00ECB144CF592A3A04583F3C44D1311F42E4327DA1FA08BD4EAC0F9 +BBEB9715EBBCD7AE0C3664D1A5234DBA4AD8EC56AF0F89D46868E3B3233BC80C +B800A297A25A03150A34E227F079C9B7D4980F2C2A8DC6E3355628026C80F493 +1887387A2937774A609C48FA3B40853C1AFBD8CE3FC594A535471D9D1EC58073 +0EE6C0DAFBC40852BE6D29F742C64FBC882BCC9ADEFD471CD0F3C3757DFD3842 +4FBF4992D1EA7166753672DA48A269D832ADBCCBCF2673F7190951C4D6C3AACA +BC4CA82C9C66B6D0402E35CF4E02CD202A35676C17059DC0BD55AC360A9D0CD7 +3DDCAFDD9659344EEEC85770D85FF6674B3521F743EDC23D4332AB08B88BDA8B +3A504066C0422B4C058A451D7BCB8B77A067EB796E99210662B38149BEC1A5CC +E2BF645B608F03B4896CC05C7690741C8334659895D57BCF0A26779BBF367797 +96A91C8EFE610BD5AB47E0763F23270A69DC6F0BB4A5CDB059AD39933471D411 +430E0A4B5E1BD8D91DD10CDEDDC549895AD2EAD722B264514E81CAC4FF36CC8D +5F074443951308829299908C8E318B7EA4FB87B4A4D21B7DBA8742A525351020 +9B71C08E56A3B492CB9417EE1F334E811227E05DE8F78898E725C84EC4096B2B +5E39F3164BF79359D1B296E364C57D31CEA08D249349ABFF7C516F5DE5389C55 +0C26992BD949D94EDE050EE8691BC09C3C9EB59C0AF7DFBBABAB38C14A3D1FDA +32EEFA85915ABD4070E7C2A9F04C4998323B4B92C85378A2E55D9BC5709E9536 +554A5DBA89D4C4E6EE0BBB09C8ACC305F24AE7A00F3EFBD29D016353C094F774 +04598E0E82E9BC228429ADD4978BC0A27D0FD1B250BB473C3D4EC72A07B4F1DD +4E042B63E24FBD386BD9B16ED339A35131E0F8E91074552222BA656101D326E1 +98C82E2A9F4B47001BFE498A5782262AADA839528F7AF8C897AC213C12CA3F16 +64D87C5C1935010A3F84BDF2768EF528B486678B60C24B7830B36511B4BFC416 +096D1BA07A5A482C1EE66DC72B4DAD3AD12EB9F6A40DA6E47D339BB24DA27F54 +CB05C4E116A079C13C76BDBDFF4BF1C25CC7131F4E167E3C5FD5ABF3DFC561E6 +F552F1FC396216C95C66E4B7C858A3706A77D1049AFE54638888E512ED42BEC1 +16A3607C34D2FBF420BD2BF4BFE16F01394D070A4D1CC7F801DCF8123E00A6BB +C3103FB4974E31F83CB264AC49A3C48F0C019065166DDA3E4EC5E116F2E6069A +4B374AF85703464F5FEF9F30609156300DA794ED51C2C4207DE542780F7196DD +6DB0A566389140A99CA1D9F212A63B7E244E9274D6D4252C502D69E4CD60119C +C2806011CFFE9B428C8ED3085BBD6E2664306176FEC09C9601D44BD56283F7CB +5A846A663D6B56106EA256EDEBA25D1BF20F5BA0D7C110693722C76593AB2C0F +1D1CF047AD1E2B4F57723E8AD16DF9238F393BEF510A836CE183D4350C3BB61C +BB95130F5D6817631AB2F750DFE783D582E20060DE693D5D0DB8CE763A3872A6 +A23933D3F55BB9763477105175EF7411BBC92925C3F777B9D0A699E733AA64B0 +3D041E5F20A3565EEA7543FD3B57466FF5CF8F9D5B4C05ED4F275C20F5CC9590 +B7D36556E9118C53A7C57F551B8B7F001843D571AFD624062F5BEDCB2EC294CA +4BE214D7DD7CD271A8AF594F5566E859C89A760970A1CB98CFFCCEB1D4969EB0 +2CE8EC07EF3B7E3DD8F42140840DAEFB2E11071E652BD2508EABCFE8A85D047E +8FE934288972EA8C118EC94B8026D143F4A786B3741FA0DCF025CEBA0E8427A3 +920FE5E870D6CC1CA8D2B918210C1FC5002FB5F566CF858A46BB2ECFD47D59E4 +B4277C73E488A23396BF06D3E1C08BCCE62C372BFAE8A7F402E498D918E7F481 +DCD822178A5414AE673CC00C8D3A40EC542AAE22E0F6C525F40446181DAD8DBE +FEA0BCFF95A54BD33FAE1FD33EE749DE3F5CF5627AB90422799D33E3C7C77416 +A0BCAB33034B60AE0810A024BEF6F7E34D908AE64FD49ECBEE3E9043D99F573E +7EE66A289A81D99EC927078D3B2C09E451C0BED58F535AD347514666EB385FD6 +9666B6859B81C1AD70C7E7348BCD320B3EDD8FCDF7A9CAAAD4D12C13A04E221F +A06760D9FEE551EBC39317C2C12E0849D0730493F2B71BC8623EF39A432CA1EE +C8AAED9A67CD1792EE7571DCA0D6356C3BDDA040B3AE8446D1F8E7F87020FEEC +2DD71FEF907FDABC9B78082C32CA81407069C88F42FCE5085DA46C34AD62032A +5AE70742DFBD070BF388E89B4A635E2301ABE52CAA698162F4B4EE15553DEE42 +C8C42A3C2B60AD93D2038D94BB4C7C0950F4B8C82D4870EAD56DC4900F9BB003 +42FC6DF078F64F615089E705F32CBBB7ED67AEEB3607EC10A9F419FA01B48C7E +6DEC48C24E027D50253ED6627C5605273C5534A2BE50A64500D6CC7A14A31F70 +53697D41BA9C3B85C0C672D64A33C1EF29D69BD30ECCCF8B9CA3558B104D2B3E +01024931731C79389BC9C74EE0BC58AC36C802A06B3A52FD20A90DB495BD99A3 +959821E14F973B451415AE8CBF85019E1D2FE37DC05E387527038DE6A60957C7 +60CD645198858503F7B0BB1CBF4BA86D0305BE3D9A8ABD7295F454565418DB53 +718C6207AA8438449C729EDC52E24D500718E6E5CF3C5AB316BA24DA51791E9D +D5285265C5EA53807B39632F0D40C94F4B5411CC726966963FA5EBCBC8635FA2 +7A8A98E8EC86577824857394CE61440CF48EE6D5957EF9D7DEBAA5BE0EDD15F2 +6477ABE1365A92C49C454EDA0526DBBE8E0CEF885A948EA6E61CB2DBDC198C07 +B86D88A540362C74BEF868750494F8A03F05F01E4523BC4BF718F8049D9E62BC +7B0BE5614BCF543A1C0511D15401FCF34FA8F2153C342F562589B1A2A0151DA9 +406CA23F0447CA8DE5C6A5FC39BC3154739F1ECD20D872D766E8BF501709F4E5 +604ED0114183DA45B2236B08C09C205686E26AA95DB02C498F12BD15E2CBEC69 +988D22D9949A1E96F4F6F2CE2832DCE37E9DFC2029CB278720165611620C3F70 +482597F93C05E78C1E42A8910D221313C8FFAB98EB1569B468EBD29C9ED512BA +1408B3B2B68B96853677170EE1A719E6B8C4A6C01F9317ACA57DE8B90414D80B +453F89B2B4FE2342C62BB51A570359B46878D6626E7B77A9DF1EDC53A47FFDD7 +D89136EBD5270C6CF74AAEB754ACB8ED7DE1B2B7061BFD45172AA77A34950A9E +4A59A7277092CC457F0C5E00B2D51CB552AE00FF3625DBD3DB29675C6C12C8FE +F6C24D1574CDDAAD246C4906EAF1F139E8F89A5F4E07F988DDC7378ED7125F6C +5EE1B4EDEE8DBECEB788C61C430B5CB8B04BAF43DA1C74EFA658000C9902E879 +B747505080B4555FE345551B05C11F33D554529BBED98E9B33E1A46E6211B604 +6A22555656056C518B5F7BCC23DC2EE09FDBFC01F3C46C01329CB3826B1F5285 +EB3E98013BFAF63A4FD761EE98BC309BE5E1F91DC0EF231075F61FB93A488212 +BE4D7785F983C64822CCE955AB4DD42BB72ECFA0B979B8E6486CB2EAB4E3C8B1 +B8AEF3E2B6772F4BCE71D4A4B506A966D120E3CCA9B73A190D4A9416BF6C29BC +51B4C829E6320093192EB05F0000C5BB3A34201B37A6B8D931EEE5FF68C587F3 +1B62E3BE1DD63B4D11A74E052C6667251BE71BE45DA2DB28A1F3E6EA85A3B061 +FFC1C6BB0418BFED8EF627DEB90160633B59C2DD7E71B812BE81BAE00943B865 +9DD7D7207B4EFCA1CAFFA857CC9CEA97173400073C27406DC5AD81A37A60D5E4 +BAC246252A33F25921F089E77269C6366E92084AC8028DA19A63503B1432585D +4B1EC09B97FD98077FE82FEF9DFF93244F87CFFDD82416A7A096B9160D14EC4C +36806DDD12E717A8502BB711D7A04732B27B637A05D55D2212D34796BD59E34B +14FB93722AF9C2D23D7510E252E20245144F96A64F816F9C207054C877F805FC +7683DA0966AB0576625B1E0676DFB53A728E3ACD292828D4080BD7FE616C5773 +5F40064F6F3215EF35B949E3DF850B38340402A94D4E98BB105E42C06A2FC965 +4BF113FCFDC7471FB0E818C9980EE32EBA909154BEAC032878F7A86C1847A1E5 +7C2A1604A583887067513972D4956A8DFE0FD2C6023D8F4068FD9A72C651C112 +EE0E5238BFB35B5A8F80522BB391BAF9611EBD85A2EF451C310859326F9C8145 +30AD965998CB36487F5D2EB3F2F94DE3A0A720A672CE00F752B1E85B53FB0F5C +668D69503DE12546744D9DF8745862D913614AF09090B4D32A4A5CB2506EFF1E +EAD99AD9DED3D5BAB3ED3B427618C9E004B4D8E09FA4D51D63679BEC4EEABE22 +EC9CA47C6947385318C92B9F214FDF523A816C34813DB51905F6CFCEC7D2780B +9EA9E3EE9B6FBDAA09BFC4F7127EE928419A87FD2A55DB1D07C3711824AD97FB +24DFEDADA4EB458E2B056E2914BF81D51FE7FE442B4EB8410FEB901AE7C7DB14 +CCC452E76A49788FD46A78607F8E15DF9A3322905E103EA1C9D883CCAE8913D9 +E949DE3A8DAD9B518351A69BBE171BB414549FE3234AFF0D5E29DDDEF2419914 +0D5996F4F5B4DC0F58557C4A74B10C19F19B4CAAD893157A802CD8B816121795 +AA1702FAB22A539876260695C86BB9B4DE2D9DB566EC642A981CFB43BDC67F7A +AD2AD00E00BD2CB533D4672AD3F1B6305F9B5CED61F52F767217488994F29EB6 +8B335E7A22B98012E4225EC2B4D04E4717428AB1D8A7BF151B01409197B5D672 +59AFBDABC64132CC065B59134B263519FA6323BD3069C5A112323E865FA0F6EA +D3094A630EDC7E95C1862D6E954437413B30DDEDB70EBCD11828C1E2898318B8 +7AD9A028270CF7394059907BFAD426DD5AB64CF2E195059D7E9AAB264DF554FE +A11F6EED8A5AB54F90FC651FF86D1218812D33826302D78E31B2A5CD1E32E340 +8D4089BC1DE1EFCED1FCE3C9CBB3EDE3C7810C45BA35D5AA54A2414BB65D7391 +2459A3F857BCF9F6F997C162727F9449F3F11589F7A86A9DBC0F179603C70F2D +9DDA903786B7842793A25EC35CD0606770B6A53E55A9C3F8560ECE480229FCB5 +E07044A88103FB8985B6FED2E7938D9EFBBD8092A12B16C50133EBDAFE6EC982 +47B135F007652F42A7C52410E4DCABC606ECF0CBDCFEB62E2349535AAC1D871A +C73C23B571D5351D82ED415929C97398DD42327A365A6C3713506DADFD23CCA3 +6A8FE0EC1F27CB06F3FAA6E990FD16417D33D786BC743E8EEC0EBEEEDAADE4D6 +43E439F68C048C512A5CB82673A072965046BCEC64EC2BBFA8C6064A880C06C2 +9462674EE9EC23EAD58469FFA2A0A0743EA7CAC75E1B511350CE3847D2A3BCB3 +83EA832B5C4916F001478C4DC7E68FC6279EA96E989B7AF31BD19615D69B1ECD +EF727E3FB25E838C0AA1CC3DE588FDD4D27CE86EB6462DA926BE28890535B8A6 +008A8A1546E2ABC576CB4D8C6693146A592ED4FCCADC0B60D43440CFB14C09C7 +751F0097C8FAA02CFC3CD01FEB2A91A5988029E187094ED4B56BC6A6D1991F40 +C6BF4655332F616209319F89408A43D3DB610E956BA6DDA1147B2B80CCA271D2 +66C1A91981B42836CA973F8BBA2F6859DEB035CB2FCCC530D72E3D9670CB69A4 +F40025A6D53FF9E71CA21DB309F2486D6D9F4CCD4AA20E1BA188FE620760183C +10D5EA51C17B08812DACCC5A677ACFBD38E50B4445314B68DBAE5A6C1FE5D422 +486BE72829C938940BC238EF7DC64B3E3BC4FDAE6A23CFC1A4622C11B55EEE02 +3E83A4FE4FBCAC1B3F1AED2C1D9580C00DF6B9D0F00269DFAE5717B74956032C +5B8AC980A06F480C77574767E09980F92A68977EF54857520371224F63749CB5 +6C81C7D5262302199BCB3274548972B8F74C33A1799122DD41C222832369E219 +03835EAF6E645F17F896067460843A78AF9DE441ACA9699690B6B85E36E167E0 +A331FDF614CE765DF2C910702A570451E019CD1ECED92E24BDF18E84A6FFA151 +A59011F2E19DB9840F40EB1FEE852CF7D78072D26AD3F3D0C720B976F3A37491 +B03BEFBFB2C7944EE88A0CA9D6123D1EC4C0A8E54E0EE8BA9D1AE4E13DCD92FA +18F0C20AA4604CA319AE07BF7A1B680FE955498DBC9B4BB870C551D5F60BF077 +5D144864AF4FA0FABDEB7606C11CF8C811CCD55E6CAA29ABEE6D5128C3126409 +C27740A6BB05F5D8258346E21A675B21E0A1B299A472E4F0A7085A40B2EE7E27 +B223EFE11F594130ADB91D25324034C3340949149E9A187C108630D71685E36C +FB19F744B856AB6A09AB00CC65E452541F37A3D6649E08D62C8430E3E1E723C5 +FA71CF1F7C104B1638BBB9C2A88E15C75DB9256914ECA21CEC7985A61488C4EA +493B12B0188C1C0D752CEAFA237B6C334F85E638FAB5A0D9E969677752E00D77 +3CFB4E59D4530C0797B0FC7A288EC335C6675839D543599E11AC9932AB0AB3B2 +57493D3095AB41BE365457AF849EBF9B462C5ADF12D990285DB2FF6568989ACE +AA11B4E88D59782283634888AC2A44ACD29422CED63BCFC660FDA0D513850ED1 +C036B089959435AEAFF2A24C657C02E178389BC4760B3A1D07A370B50627D30A +631D22979D88B2E62511494B1D54560A843299AF772C419A673521112ED28D30 +2E9BD35F4C8056FD07DFEB46EF54EC29BEE1B42A1DCC1A67571FA6FAE7A95355 +158719B27CDA73C7810F83EC5EF5CB158C808B30D000208AD29D6865A06B47FA +675844F49B15B3B80F6AAF52C63451B07E08F51FB37ADEA408EDB61EF86CAA7C +1DB316B9EBD6088386F865DEB16DD7AB4240F5020D8383A608B3D5373976F8A3 +B800C0544C4571384D13238E9236A0EB7B247A805D35B7201CF497A06A2B2364 +1B720892CDD8CBFEBF4AC650196BA1434B799ABCA6F835E6CF672AF617B13A3D +2197BDA515D3F7DF5EB8C5A68533A6D55FA8AAD6A815F16D7508E6C749F81879 +13D00274ED30A6FE46017684A58215E9D2996B5A6F9E9D0E8D7C415C90F35B28 +03D2C36C2E96EB766FF882DDCA9E4C9B12B1F1DA1981A8AFCBBED7F54FA99C85 +48FCC33A85755F3F0AEC617A62067DCA8A7D3C810D5028ED0EE786C4826C0596 +37E15723BF0B9D6303654277B526CAD10CF3E4CB43160E598AC9F2DA95E3C004 +6E433966F5C8C621AA2BFA768D61C22C52F8E650F9263EA5EB0B803A6DF44C58 +50813DAB7428B0E05B441C6146CEF489165D8DF1F2433F24B97DC141B36991E5 +D024B58B4AA7D85587686C469619DAE78A83D56CD7250E11BEF2E4954CC2D288 +8DF9FE37A0AFD6404F47C1612F944E1E66CA184CA67ED38C703CC0FA8FAF4E42 +11B99D4DF0809520428AD907A4BEA7FE4B5D82370AFFBBB4AD91BA6D6622AD99 +87CAAE64082D3561B06C7F76CB74762AC7ED26F3A221214258D45881A6E45C06 +0F7A47191359E92420020C5BCA33050C00C9D3245723BF6C19FF296BD145AE8A +8B6055DABF62D0D6A2C21B8D8787CC99905FF27698AF88E1EE31F1600976D3A3 +10552E4F5A1964E920CE13559FCCCA43DAB08C39D16A164921D9B00437DB78DC +21DCFAC83152608E9203915507EFA470F354F3EECF74D8D2C084BB209854C72E +2BD809E6401028FF9F86988C2C3FE8795A90F9E66816307A105E42E8A9C4746D +6A84EE7A008497E85EF32C4FD2DBA505373DC2ED24813D8BA57524B7F44D32D1 +75E1B476C8B04507249CD7AF525610D627AC32E35A605138F2761A8C23A943AD +F7BA4CBA074C824A60432A9BEE54A386DFF590B000702979F245242269A29D7B +6D011AEF89C0D6105ADBB8F57356519056A9D1DBED5EEA34142EEF38F46398DF +43BE6734195EA04E3CCF93009DEF758288F67CE63B5E91F15AFB059D3D818E46 +FCF303A2F92228B78D48E6EE122BB8984A197721A6F27A6188275705D915A6B7 +36AAE76CE9CD83E3580B30CF27C2DA0DE67E92E1B836714BA9BFABA90A7C0BE9 +B82A6533741113245EB272F47051198822FB78D88AB03331BC95467971AE0FE2 +AAC7B7FFD11E4DF3F757E3D1ED35F7955C6115E636B3189F895A00D1877947D6 +A0C0AC3985CC000A6A0D8DEA677381A55B38BF9700F8AE4760962ACD1F1EE54D +2E9A0018B67913726DCC3A8EB70253D42A9570EBEBDCF1A83B5CE92D7D474ABF +E1EEF5B6DC239D3B81574FF0202DCA148F8431D3C9950C777C6662149B1D8611 +2407EC085084C6F5BBEC5D4B4E82224FE41DEA554CF039EFAC27D1D5043E0DBA +A41D951E154A76D4B4095C206456E78D139D90A9E8F0E419997817A17127360E +097284EB9C5835B14D9A705AC9105A3F476C0A6279CB85DC19EB63D871B9C208 +029D2C391F547062C985DE07D58686729E84D3DF5ADED3F0E192FDA38B4A172A +331AE35C4426EAA164636881656A9CE3F5860B07021431B5312C4C2E1818B8C8 +D24F442008AE8496BD33907E9D8B9F83364295C25A644B95A180CBABDBB70274 +13AD4EA5A2D24757146AEE45854C4EDD8B01BAF259A29C23F37812531ADDD515 +CFE5F5BE9CD9FD93F15CE53626DFB1473504AFCC3103C3B53ADB3A18D0C983C5 +36CC530E55311859DE592CBA71C3435E74FF171FEDF4A7FB13318943F628C7F6 +D9420706327C6A5EFE34A800A63AD0B87DB1D60A976F47E007F4921B6800AFC8 +1288E0C09F75F742C581AAC4FA387303E6347DE2F7F5DB3232F77CAE9FAEC3C9 +391D01FB9152AE7A06F55A03FF952979E3A2E53B476280C15A404BDE34E3D8D0 +29C144F427CB423768BF2B60357BF01714D59DE1E335ABE63B56EA2B2B8A3C27 +D129A4DBF569AFE6F0D991C9787D3167601FA64CF6B3BD16A179F954DA890142 +C810D0BAE4AD76CB687BF45CB9EC97EC3FB031FF82027DD5AA8CDAA5D2878B2E +975FCCED2EC287454749038A0C748DC2A9C91E7BBE77BD53ABFA8C03E81A47BA +5F4AF82DAA5E6045623FB5E21357EA9F2010B9C4CAA3150E13F9CD195AD72FDD +0C13754F97A7E50F23C48A9DF5C281340EE82B18AA636E613E0C35764DE3BAC6 +3A8A230047F4C2F118DD1B79B641470AD5D8E0CEB70321C47C332ED1D63C69F0 +C69C1E3B6FB22B08F569ED55AACD2C5F7836A15F3C3607627AA8D61BC3D68516 +02C6FAB56BA7F30F067A0537ABD46641B7BE8341D789016C139E1B0BFA232969 +07613AB43470B787001F180A0A2DBBC4BE0D058667B32047EE40D099BF47003C +3DDA397B5077E5C385DE154381FB0CBA35E7AB18B932D19C859AD6671B401851 +7D6312DF17ABB9EAF465ED6035F49C633E755F9BF61E862C5E616771274016BD +7A3A47EC9383FD4D6A1FA418522B5B848820306FF80E85BFD34B6A28FA897D66 +106C8C6C3667FEEC21228E639B7306A4DD289DB7A1E4414C2B3EB927EE40B5B1 +28F82250DF3AF9B6E2E1EBEF26E129A6071873F22E5D847D9100716AB0B1FCE1 +0CF190576CF4935174C9CF97E702EA902FA3ED004BB951CAF9ED7EC254100A45 +01D1DDFA4362007D303D0AE44770EEAE5363E0E7DFAEEBA834C9C9A27CBF3141 +99FFF14C998D1CF83B8EB81A4B7716F2F9E2507331758FF86FA1CF0161D00532 +2D3F95C6E68721E0A23B3655E40F35EFCDD22E4D189A9D37B062ECF64BCD53C2 +EC51DE1AE5C37FFC04F72E06EA591F366A6748D51EA4E434CF96480AC2BA33A4 +9EE83BE30A8C2B65AC653350005BE5891A0DF0D5B9298DBAD424759EADC18FC1 +10BFBC80713000067DE91C89C63B9253452293CE84824B93A073D02ABC8A6419 +E3F31440E4A2B210EA6E561A69CD8CC28A529ADE56818EF7EF326248D813269C +A7F586E237A0C4942E023EBBA3BC718FE540F3C98D206E27FF02376342E6DDBE +01B19189DCE29301A7F689EABC11B60E373B8DA04089C1209BF474F5BB7E09D0 +146660C3423EA79B27EE8233DCEA025F97921EBB9BAFA7794EC0A9AEB4FCAB72 +C0CC88B61D31989A1D3D845CC8735032CB6E9FEBC6DBA85DE3498F1FB9CF8BDC +14DC6DBC9120036D1BA396171CDD2E18F4157525D3DAF6BE35333DAF63199373 +B5AA07AD97CCE1DD0725A8A9568AE5861A2E2B186DADDB259DB0C816AFF23BDD +682CD52811B84F2A82FD249E98C55D951779A5A71D617A9A86CA0712B90E2EEC +3B509BF73D1F5D02122C21CFD476467A0EB6A1D2CA580ED1C570FB50CADF5C1C +9FC075403F2AC07DFEFA09E76BBF242D08BE446C2CA0104882C38EC4399E284A +8168DE921D7BCB6DF3F51D96FE2D224FE96D8B505DA5D6CBA6454A7AAE19ED34 +D4F6E7B7B100EE88FC7CA388FBFC4D3DEFA22DB66A126E44F4E0696C612ECF5D +A2456D18830F179C490BF9087EC110E0E5876FB492C76BF19D7E24019EA573EB +C139D0E4EA7E8F8E18F5224E025FA9FEF31497943229691CA4423819EB2248D5 +5A9AD9E37BAAA57AD2F994333CD5C8F00BFA85EC9C8B7D99B8AF5F299510450D +3A8AF4618FFF81F5A891E72A44BC864D207C869284053275B206E2152315ECE2 +5695EC0FF93D0B8BBA63194F601041F40FD5DC33B89C4735255A3F5742DDF4ED +C48B4E4DC2492FDD1538F6D73575EC0C148C5729D895D85CC56FC501B4BBED87 +51BDF217C2F28B7AC4461B81EDDB6B682C9D0D9548E24013B515F86B164DBA1B +4B8782049C251B6D23FF73B86815D4CD4A8D5C1A3FED0ABB46206D14D8E72386 +4E0439B7557B759E6D4251D4853A1B7684C05B9931D156D78155AB10EE033777 +67E4DB5D22E8526DE3EC370CB6671D1D3B062DA84E4C63A0F2B395A92B997BDD +82D76F6FD96342896EF2BD87172D0BAC4363DD7B424534C800403CC8264748B4 +D377999E91E6CAC1A6AB197429650B2A642982C6512FD628FA1C8BEC3A6A4301 +A4F2F1AC75255F27C902CDE11642119685788E126F946B62F88989BF0E02690B +CF6FAE905E112AEC95C02D830FDEBEAF023401E9E283F76C5C8460749F7A139E +AFD6F612FB87267EE83C2B543EA7C9377C7D312222C24F236C7DD2BAD09BE57E +9C5712AE02ADE790E43391F5125867E030A07D2B93BDCBD6DF16350ABA3EB769 +B7BFBBA7812A66EEC7EF665883462B58B9ECF5614F31D99A8C14D3B2FE15B992 +97C959161E5391B2F24C813B4D5963CDC8EC1CB341A032D81C5857D99D166832 +CA3B3C957D8BA73E3DB7C2E6ABC04BBC2A6A02D89D4CBAC9FE8C6E39A5C3D635 +B68D486C6A5DA4B117F399EC674DE676A904157E48AD08908CA186C66B5B7459 +504F15E8E8C3B8D8EB864CE3541ACAAFED0BB3BE8DDF480AC20EE24033010F7D +EB4522F33CF88D65661C7E42D5F017BBDD550906416FE404052CB70ADBAE2CB1 +081B96DBBD24960FC966FAE89D0BB248D2041C0ADF3CB98A0C6D279F4C92BD2A +FCB66A5A077319CED34C132E3239376B2EBC5F0AC23F6B099787DBC7C7CDD927 +EFCF22A42F8CF6EB72D092FC30CECE665052F7AE1745A6D3BD93A81F4B1CA4ED +5201B529E65ABE65D4F77A51B5BC26778B3B3FB4D7A190C83C27723B9BE1ADB6 +83B2D608CD9D6482B7F651EF82F6A3C7A88B9B773ACF9A5403A7C43E4B101F20 +8562720454A2C40DFB8F06E7B897540EE0E24EC7A08907E5B3D5CAA9D6D0C750 +6A41B678B6B8CF2FDAEA2ADFE283CA482AD4D863676934B54887D3EBB76E6C22 +172F9AA6E63ADCC95C3BB792E9AA3CB00E7A68A2C6A214BDCEDCED8EB6EE0DFC +9509F79CC1ED8AF783E18E76D5CCCB9F19DF9434F54995D9BA8DF34B080C13EF +86EFABBFD005C68922F20B6DAB9D2696E40C7DE58ABD527142A489D418537926 +9C3B1A9C8A3666C5384D83ACEFC13AAAE13A3FEAE1F13A6168754FE9CDBACFCD +F5ADDFAD9116EDE645E538C57D89D15BC23052E13CD05B00DCB1B844FEE2B3F3 +443D801E5A1C2B9523EDEEA6B5C426586DFB7179E6EDEEA8738ADB09694E832F +81DB0DE30A31F67111AEC554FFAC4B1963DA2FA845B89932A178E5F23E7EDB4A +CD40B2EC6554320C39BB412813D40A6F592833E3BF9EA3F2056814708C1C2B48 +6505ED71BE9375DC673F00FB9C61D7567948FA8E16C634CD2F05AF82687E3493 +074F40FB715710015A9B20FD01D88E245393E728755B3F5DF88E9CDDB1BF8B36 +5C471091E832F12CD3A10F921DA8D07ADC18C357F7ACF57C10C537ACEBA2D22B +DE19FC00D516CD428E181F6459D3C3FEF7992C7AB344D3E4D62C77C550A212F0 +378A1B339EA3ED88F2CF43EC0A063F20E53D1E50AF1A569D112F592B9EDC63FF +BE552A40815D070FE0589C9D1B880F54BDCB51125C53AD619B1568502655CF81 +14801C2E61471CD5FA97BC19BF697F826101357F47A2A80BA0B8AFBB957C18C3 +11084237820D00E9B089B8B0C66FFE1618672FC2BE06DF3A87E9FC8F5824B7FD +EA58A4E2E859CE3619904552C7FD609200F6B315A06321F3E28FB1080E5F7A7D +5E05146E68ACFCD18A9F304CD5C8130BE0F9ABE090545739C4A2A5C64515D63A +32B55C32B435EF2F4AD55381C680AEC5104E5B1906AD0C39F300E3C3A18C2C58 +C0B23337585ABA6E66BB8D488C604C38FA24756D95623F4807BF22F003AA198B +ED1786A64170082547F61B8A0023D114768843392295EE5AB46B4C843465CA00 +2050CC6237DA4E9B3052924084BB6A7D05510EB9D8DCCA5C4CF8E3E69A18F69D +45DA42024F5C4259F782C768166F7247EDB29101702CBCB4FAF0BEC75CA4D674 +50D76CA869684CDC683C8D33303826618D51DD5FD052B6327024DCBA59535243 +6FF81824548F909E02FE76207BD1E3278351E01798FFF8BEB0F5F8046C6F072A +73027021FD7DE81F14531A861237E077DFD01215433659B7A863EFACF4C78F09 +742B42B44011ADBA05DABFDC1666121B1E45D9F9C223A16F63E5B7F10FBE400D +754C6F18CC1BC2B1C52B11E841363C901B7DDEFEB1D8015BCED8D2428906B4CF +6D4E80707078C80D72226B1792EE48B8D3445598F9DC97224111B648F776332E +4B1EB665CBD2C6FB0AE4A2B8676827A650A39D04D1E17EE9C90CF1864ED8220D +0B8ED5B2C4AB122FA2D1EB9C5575CF2945D40922D840D74954F62E6C619EF016 +AAE2B3C3AEEE99573F38B3BA4864C8C4C3902B274EEF5D7F3B6F480F7AAC06EF +F0E14EBDA2723DD41F458311FB3EBC5CB8BF8640EBD23495FE72B9B6DF1D22C9 +EAA4438F2D8BF03A9577A6D305BB41C54A9BC339F4F1468A076F182A0CCE939E +DB20A9D4C77E16B2B8DD50BBA74AD0F33A19845BC3D11F0DAAEFC9DF2F367214 +55131BD8C44BFABDB773D3376CE7E4BFAFAE9C09FE7AB6542A673460F867FB06 +6AA1CD75BD6395ED0A560FDB8C6CE77B58875A1F27B5E5C31604B5DAD6D37FDC +C30C532D952D0F14B932D1ED8A960BE7A5288043200C68BA46867A646C8BB111 +7FB08043410B4833D1384530910416957B12AD6532DFB7AF295BA68CE138A227 +ADAE81C34CFF1E4E3874A7AB32694A7226E191504F655782F6F6BD79BBEFC660 +088BFD6DB2E64186AE7384F32152452299B2F6D95A0D071A9AF15CF1D9550ECF +C88A06DA2975CA0678F0D0CFA552D1F5A22BC18D280691B65DE43B6F41A884B3 +D2CF9FAFFE116B8612978584E2CF5EFA8B588178E34A1802CFED6E3820B01B9F +1B0BA8EC368184F84AA9AC162EFAAA1EF6FC64D84EC70835ACE381ECC6DAA53C +C34134B1CD46477D7712BDD296B1F655E51C5D1E02A25BC14CA08EABDB3B1B65 +27C00B81048D169A218164845205297024F42FDB1FF530A33CB4D3E513AAE661 +F7DEB418D22DC808675AA21A093E6BC6D0E22F92B506551CFDD85892D8B2D424 +F6B1E06A2E4DAD03C7A4006F70B76312B9E4EA781FA79433722E753ED4EF650C +F504CE0D54F662FA374A77BD333F48A903229640233B261035BF3D92A2FAA0DB +D067EF263238417F5CBD6278D817673C1B77327476BC464BDC6D78F13D76E980 +D2B52377E8AAF1269FA7D6CC06B0FFBACBCA0F8C01A597EEFF2F64C1CC39F54A +2E98292434CF47C6DFD507A1225E34D49ECB24D08C05E340D09088D47BFF29CA +411FABF580A396A976CA31BE1FFF1833D492FBC749BA442AFAED67F5A224ED55 +647D9E0F1C1AEFEFA4E95847D702A8C6C3F9BC207EB094BEFC59692B062B3947 +E02176C8AF5EF754E790D1AF826390E212271EE3F052455658137F5D7AD889C7 +9C0C5B2071E03706FCBE623122FCEBEA0431FFA3D365F890C75817DCAA5E0FF7 +CD3F0F7FF6F61E8F8399C84D914E58C2EE083830DA63A15D404FA95F829E2BAE +D77E2FBDAE4FE23F312B0334C5DF65B1AFB3E64CF47CB8E80E08282E3E88203F +B45F071BA4D9A5E1F8A0992543685798C774A84B0C8E7A0CD166F183592658BB +4D729EFF44F63811BD7F1B7F251BDE927FBF6A0C9298094E59BFC79CB636E561 +4048EB7D5E8E410BB92CF54FE9A4D2674E8D00E3A5DBD27BC7D0728310D42AF7 +C11737CFE2DD62441E6B6D5C324EC3F1C53E5C8822D9CDA4EB53C4ACB8DC3B3D +D1EDA9951431FC4A88FEA1DCCECFF7E09DC2746599AEC4CB0F0EFE61AC9F2A53 +D9EAEB951898279E7EF734163F7794C48EBC9EB0A3C77FCFB30DFAAA62EB29D5 +B992C6BBD61C942C50926F7255D37C9333F7C8EC27E5BF11E8CE4AF38601448C +97D3B705556C8E1544DA5CAA6FB6467780935E133AE219C6C32B8D8BBE9AC45D +7C9F8B18D707441283E9196ACD41E79E6D229DE551D92576AE075386950941D3 +746699393D9E1013B3DA00DED93CDBC77DC9521D6C491ADF8CF70922DBD6F198 +DCAE1CF85348AA0EAC36E8531D385B80E42BAE31A9AF116D57360E1AB720E433 +B62D63507A4A85D5A5E26EA49E45B979DDB60A730B64674E18D4F9FF414102DE +F4A80F8929410A059A8438AEE26CA1E566B6AE875A5A7401085187CD89A7168A +F14ADD5BD17DE1118524E7138BC127D7D0589A9A361788BEE8B426C180D9F629 +FA30D4B2EBBEFEBFEE986824D61DE5C28756922CC692CA8291EF0710A9F6612C +3135CD5DE56E8AF3006EE8EDB0CCB425B34BEE1BA99AB84F377998641FD7DB78 +9D5F406C191E316FB07000CCA2D7BEA019199BDB291772EE070125CEA0C56240 +D730881D47C1339A8612C2ACEB900B1335DF945DBCE19F26ED63BB37B032A48F +0636E4ED2C022FE18B208D7F794D1100429FD9D936728A086E03D30AB6D4FD3D +48CBBF873C50FD2D5370DF69C00B71671F74C1413529EA2063DE152C43E14989 +E68D1A4E689CD1134FD83BB29A861D523508BA44AE4BB964620E74BABABD6C9D +862CFA7DCA92D65095CC0A74A7244C4EED281C0D487A78385C20066B8A3EFEFE +675BB7FAE79E2DF4AE6C41823B3D73FB3F1D4998D510A4208D79D1AD80E14A0F +72ACA4CCA0558985969A6C1B0162CCD3B8C1F538DE81100A1B3774810CEAADEA +70C8A484305BBB03BFF5B06960A554CD257BAE0616FB80F4173BD6752B5EC45A +620D744321CF456E3CDA40CEF2A11D1DF3C42F6BCF8CCBC04B6C8A43D810EE79 +79FAE5AC5F3CC0264619E0A3D987A519E523E8EAB21D8867C09FC80CAEE8F954 +1CA5B781147F54A2C950CDA499E3829E097F92E04EA71C5723B870885095EAA8 +4087FF9F62881CAEA764C8A19B684FC9138B3F5AABE3083BEBCA27968FD1291C +F87C4B9A96C0F149B41DEC8BB4B3F1A0B11F7A956B933CB13B335962E10A62B3 +817B1769D7D0E9B105508D8E3587988781A9B1FF153EF1D22808B73222A79DCE +AA9CBE97E1234C93F3A4958402C78CE8B0B4FD39D7736F76A3DC55C3FBBD78B5 +2077FE0CF728FFFCA6499B65C8A1DDD72B66D4DD18F02B816C4EDF36DBE92ABB +063BC96BCF743BB86FF1DC58666FF6D3C2980B65CFBE6A77695DE21390A4F90D +CE349AA8526F951659456B71CDF29EED3FD808F2F4DC29CAB7041BCEE17791B5 +56B0D75C8B1DEADF821615A89493F95CEE3678145449EB8AF143EC15008CE40F +E5B96737C5AA4756D5491DFAA91739891E919FBEE28DD33F06F76E8B49B9B370 +A08DB772BC850F714ED1AE45694FCE85C24A6D598F3FB37F0B7A12AC13A689AB +E64AC55AEAC46A2A93621BBC3D9CB5E8478BEFB31141919227AC2196DBCCFC92 +6D50E1912F5DD429E548220ACB0E7D6FF629E60133FAC139FE19374B29239BB7 +D8F61744BA7DACC7E894795C1E0800E65AC102DC00E536CFFCAE9D31CA5967E4 +C75C264A6DA6FD50131564274BD488629ED22911FA8EAC2C48EB4A2E4A9C83C2 +8CCBA5F9910F484307E583544ACF3019431545EA22514E4D7554E147C245300B +0959ADD47E7844600213D82939226F860E8D8E8426960D84234C822D0C92A3D8 +B80CBF3240B5A4C1342B3E5A84A1AE49B1403CD5340EAE7151E4581663435C1E +2E0F56198522C48723E51BE1AEE25B06E82BA5AEF4CAE751C11AA18A09116F29 +2BED6C04858493C2D9F8990A4F03BC7928E6D60753461CC4C066BE549750DC9C +E3DDBDFAF6A26296AC072939586C64057E166E57F1E3A5560313DC7812AED1D8 +2BC507F421D8795D53EC2CF63022B7598E72C05BA9FB94E02E46C05B99D35EA6 +54CB95763F4DA196D70BF80FFCC1421893A687542B6B7A1A9F1263A903AFC4F0 +50C62980640A38042ADFA48970436ACE5EC0B9B23D184DAAF0B44528DDEA95C7 +9EA168E4BB2D3E3DB4E2A28650EF0802F277430B1632969C021599AD88157E1A +27F04CA31A1EB535ABE1318D76083782AD0EF7A90BC5C7115363C86AB89B0343 +320429762AF50844E538364CC83A18763024AA36C1E7EB9DB3B662E4A9D41E4F +AC20D912C2F4DB38577A2F95E21FD10A1282842A31C97DCA4B570AF8DDE96D68 +8A614DF20A77FC8F592DF47961B1F044D890A1B6D4F03085ADDD50E11EA26D8E +8E36510E87CB0D51F04C85028D76456EE4DE0291DD0A32EB10179E005EE73897 +32E7096C4ADDB94450BF7C6861F670A1E8588FADDFAC01CFB088F65DC536CEA7 +1BC8D27825AEA7CEC6FCFEF20810199BA82D6FDA141792EBBC132E2EA5FB3DB0 +ED4779B58AAD69D4B5DDDA06F56292A046BA5AC253BB42D15B0B84E00929842C +E6058536825F3551B3033642496883629BBF356EAE38574B81FE16A7741E396F +8E4671123FFF97A040A0DE09A86571FBC4B08AE826EFEBC36985A03E3B727FAB +ED02103255E2A5633DD4A63B701CE01C00C738CB523826BDC473580F4665C909 +024E23C1192031EE21FD2084D4987F474B02153C0B428183CC126D7CEA19BB6C +D09C71B88CA942A46A39E8BC400303656EF69B19EFC3E40DBF2F73827230B6D7 +EABA61C7F790E81C510977BBB893522927B56B3C6FC86E108162EE6E2A79D6DD +FC0EDB625ADEDC75BB85A87EAB9BBE068464D7EA9FF29D2D70A39F8AE46183A3 +024B968D8A59538D529C537E301D0CF1D022C43962C6A7F3D471F7FB15219DF9 +49F18D6CE59EF550A937D8DF74053312EA91988DB8DAA6F1BA043D6697CFD87D +F1526AE8CF2686AD3635A5DAF5687395FAA14436864045C452F20BC50B40998A +045CCC1505E86B6553647EE5EF8D75DF8B8478922AC054BCAA70C4CADE79828D +07D72254F9CCA25B03817446E12DA74EEF71DA79C8AAB920AD921219796572DF +532EF29348DFF127765702E38330BF14AFF999D179C29D879B324568DD720834 +E0B056E655A5A41F6FA32618D079ABE91B8AA9B6C5FD7C8E0FBCD5A191946DB6 +D53E1D729529DE05B8FB42EC149CF35D9A9BCD6AF1F1A116FD866202764A0DC2 +7638FD8AA654B7E23B6546BE33305E1115F8849EB77F8CE97988A8F9F8250F93 +9B98D4898AF167FFBBA9C062A7D204102E88C1A97FCE7318BBD4AE45AB586F9C +319FC8F0D6370AC89018C3F6FB76F4246F9998CFE6C388407069C82FBD46199E +D843E606987FD81F97D94E0BFC13AED8202BBE6A17D538B5BBBA86968B3B673F +D390A13733D07052101D9411576B43687E159F37B605E63EA30231008EDC95A3 +8532CC61FE8B5EDC1E84C00246446360E9BB9BC800C6162CB0D484280BAAED14 +4290BED70AFA167044AE1ED22A9B84FC76984D798FB0E6168CD292F599A4B461 +E746A6137E9D378353F41ADD828F17BEA1774FCEBC887018AF8C03DE3317B86D +694F01B33BEFF7156522EF1E451564EFA58BC62E2A7BCB8C1A653F62F7F37054 +F7EAB68AEE133F363D859247A3EDFD31CD3579B159706569846AAFAC81AAE5FE +D16F76743FE17EA76058478B317F8F43C84EEE5C91AC426829FAC297A2D06786 +03C384F9B475B41FCD9DC9B6B971737972A1CE5C89CB90C4E981C579668B1644 +DAF84AF991DB3878E22C9DC5C91F95E701844EE31E57018C84D11AEC3E292663 +CAFF4BD5421D55E82BA73DC36C0F6DBA64A6C8DABC39C0D6779C3BEE7CF5564C +416745BB0C0A3E5CE760B43DBCC84AB39EE91AE157B944AE4ADF4F31A77ABFD8 +D02807A3005C043A1AC175373A33CED34F648C336E57A4B7D57FC0D8A650D52F +E19D478FE80D08995C1BEDF5479227F94C7DFC504BA61E71453284A392AB6704 +278DD5332101809E046F32EDD866A9B45294A99A6C7CFEDA52BD74FB80ED70BD +44A63E6266D1AB4F28C4878FF97472D67997C8C8AF93BE5E00D6ACF46F836AA0 +2695B1E137E68EE19680850DDD8BACCF3ADFE67C3CCF03BF7802E326351DA6B3 +B3616C97AD289D023ED2AE676849E129C334BD7ECE886CD4E81B544A54DBD87B +BD8CF4B7D1C791AD1173CD4C0E0043B3A5634E3E41032AEE273AB5CC4F9F033E +266662A485A15F5B81E8ACD7AA1C19FD97CF3D3D987D4628144585F14C34ECA1 +7202B56DD7D779EA53861AEF5BC55C4CD68A9DB581F26CE8CEAE18AF83454670 +22EA65873649E486EA14D862874DAE7BE757250884D2A40A178291DFC3391582 +8471E294ED60159202EF30BF1113B756C80B2FAA79145451D67A4F3D818DC6DA +86FB03582ABA91CB6D4D38B44FFEF096A5A911843EB47A46616E06F3456D84EA +2C03AF27A894F8E93EE1AE627B86B9B3F9309397146930C9EDA09366BA570CD4 +23CF662212B703A960A9C60FD384284FDAC302089D4B1E27F96C7AB99ACB3D01 +A3C02EF162F2C69B39A851E9744D193E07441A71C61355EEE6D29A45E538F74B +792CC35A393CF3FEE22ED5D93802D4F16E0940230968122E085C0BC1C4C3121E +475CD696A3874EEEE026F6A5D3A7FA6CA1766A9914DBEB609E5203D4411A960E +744E0F56FE45F2AE8B46966CEAB38D6B17C20F308506017E88AC200789FBE7B4 +0AB473D425D99EA83ECFCB6994C6012591842A73D2EB21693B8E353B75E3FFE6 +096E719289F83F13A860104FA395BA6BD425C5986AC60234D01A4CB9B4E3D3F0 +E4A6AD0F85D3F05851B80C3569453F43D35493FF54972D9584B08F4F8B68781E +7B83C2F8F24F7DC535B5E62DB30F22C9F0C8425E5F73ADB1B1822EA9D3C42061 +DB7EC37CB41087CF6BFE8D60D2BA4A8D138DF8BC8AE6FD6D9D39C4E425153984 +5B7820F700173D6F0BFBC4D62F86910F728D2D60F13D13830BF0FE19B393B053 +8C82B1EEF2BB8382AE05A5169AF17F07BE51382176D74CFD569F5051DCD0E7E5 +5386EA014AFDE81DE248AE2475976D88C8DACBE44C9E2D138682F820B8DA3F5E +9D8ED46EF750DF420B3AD2A1B8F01308581D8F842144B19926B89CC9BDFFCBDF +EE3220BDC8AF0D0EBCAD1101FD23992996AB4C95889BB4C52ADB726306E79D3E +2AD44E18F58662AEDA63C4DD4D833ACDC842A7EB9DF07E83A7C1DA4BB8777F42 +DED83BF7FBC3EF0CE8EB179711ABC1AA77FB4A6AE090F5DAFC9A922E99DBD1E4 +AB7A2C3A5F3EE718DFBE05EE591368569FB3A2C800D50526EB34A166CBE21880 +A6A58D43FF62DBABD96C9186D7B261EDF707E00E4551DA8275D938BF2CD08680 +4663C375C6B49A68E2708D02ECA3B497E5346846517DE074EF97533291ED75A3 +0EA66EB52025829905F20725DE2692A75B2AB85C3740775293510BA9108A6EFA +78A0EC3E64534F27CD257E15A51B789F3B295C021F3C7918D54DD2D0B2DFD9AD +D9637A43A5DC2EA3AD973D0D1F709AFC383823BB3BC5D93B3DDA861F708300D9 +28920FDF1D75C358ABAA61FDE4959CFFAFEE9BF79B45CE7EDD5B08151BAB7884 +01F9F4B4625C591B47019D34F843A93B4B44472F484244D29A70E737D970081F +DB192BA5C436C9C8E73B23B0A9F69B58743128F4805312773EB5ECE1E3216845 +483BDC6D7A3F08BB473710C65BBD87E5AF62FD1EB9B646E0FFB2BE8534768DA5 +0625F221724917179A6313874021457FB81EB1A82ABCDED5075ABBCEA65B3852 +DAF83C2FB5578CC643C9740D618CBBE1E754BAECBF65585AD2BD4ABE32C221B6 +74CCB46C79A319FA06E049233433488517844F6EC0AB330BBFE04116B1BE0CEA +979755F24839B05DA6C7C21D3803003D42D38C17B2B7122D7FC9553F8AF33863 +2FE05CD5ED294ADAE119E07E45C72C664251254EE7EF6EBB60D01D3BBAB2920F +00936AA270360478A5057BAFDB27FE11AF08E0A533C7A2F157A681A07E3133A8 +86D4E08DE24F8D20216A4F21B1C4EC1CC83A569D9E889339EA5781FE78B3060B +82D44B725801D66532B5B36643DCEFC157F01B9864F579111BE65ADD411536EA +9C1FB8468A631DF7A251EDA6BEBCF1C71CDE3D296267DEAFAE7228E3F9E10DF5 +17DA46E0E02089C5C63350F98A3540743EE57229A67423013F86156F2EB2A982 +AAD2BC1DD0CACEEBF58544E93824266FF54C12F2EA1DC5B3FC871DE0291844B5 +F68E4B0139C87FBD3FB7675CD8F49005DB3E785CEB8DC610A9BF058AB5496CD9 +8E100FC2B051ED7669263176B948C7D9699644944D28B53E8644ABE82E228B52 +3D60479468150A31DF6307352BEC2EC39B4602D5FC05200FC75FA988046E9DC6 +07C223444B3620D6765A842F935DED7C0DA09C422DDEFAD9CE61AA3CEC0203FD +C8F23816B6FE1FFBF003F153E40B809085B6BAFC42FD8910A695DBC83FCE4505 +3FD16DAEE8EA8CCCE4D2F829B7C6DAA78F67F136E1A7AE4A53E2C5DEDDA4598D +D6A2A2193906D2FC990E68CC7564185139F1B38A78FE33D20A7624C26BACB107 +31F283D1B40BCEA403F9C32F41512D633C19957C9B179E957AB1572DDD66388C +1F73AF61542F9D86144F5A5111F9441981ACF683C5A2B08A6EB85B595940DA6E +7A36516D98441F92C57B1C3CF3707E0F3B893FEA5F51903B84EEF1C096312822 +7753DB379BEE2FB058F4D86092EAC58B0A9DA387621D6DEC81A932EC4E3339C8 +10FD266BA0E3C10C9217D23732223B2F77BAA41FA1A6B359D1CF7BA74A07718C +66504F3E4FDE674FC257D076E216716C1D346EECE9FE1B14DFBF5C1A29276DDB +F1F472FEA9D1AEFC4486411C85881554943B7E86413813418BB3E3FA758ABED6 +0ACAB745D0F8CA50A6711D4C4D01691BE2B242ADC4E60325C75E4E824992979D +DB398210F5E39ADC259745BA0E197C9634B3129B47968E44E715A4FA0FA3C531 +6DBE14772F5469A3EF01C2973E49FF57DFA41ECEF0730A2D34FB9D6AD1F1543C +5A2D63D6EE419AE3498AD1EFEBFB7AD147946EB39EBC5C016B3888996641AE12 +9BB0CFE1D69183B7DA86AAE72012A3DF0FA280F4607B973C5FD16C544D5CCFFD +356FEB9CC5FCCA1F34F1AF7DC85F9FBF83CE45147A4B7AF574D3837D546C6A05 +C04BA623AFFBCE0CF83274160ABB00061ED80E20CF416938DE77BEF01C88AF63 +BE06BFC4DE5222B0AEEE07479A899242CBC8EB2DC4E9F2C089A51408C4312C8B +D30C332AC892886B24A20C78C17AF59A9D6C74A928C6EFBA39E442E9046567FC +D839AF6FA38CF1E7BEBCD74ACF682000ED3FE98F805682E8C31C86C9ED086212 +76E4BFFF814A97CFC6D4BD614003E2255590F7CD5515E1F490B1F39BE2EE43A6 +4F9CA8B43151FF4E133AD757C540D137CF791E93DA8970C5DBF5EB2F277261FE +D075AC3FAA3D49E2A85DB416B0FB76DA9DF9FBF1A7B251B7281E2F9F44CDAA09 +2787A1500C4CBEF53055DA30633E5D5689FBC24F71E32AFCD3F12BC4550AFAAE +AFFA76D448F95E1149A459D36841A69216D0D0B709F19E7B09CF0BA85BC74096 +811B944C02CD3D16E562D4C28AA9F549C4605FF03939A09E5CD82CBEB9C3F550 +0C3EB2164D6519AD1B0CF2E82D381A62C811463D15823F531302E825E40FF1ED +ADFBE288429593E61711F69A3A80CB2592ED353E74EEF5DB567D12F6FF0B6903 +9E16D1801B6EEA8439B65DCC39209AF30DFB19D6FA6C542A6CA97D69C00ECF16 +D56199EBC0A947C96E79420F2540819A8148E4E85A643058CEB72EF59613CB38 +EB6CA5249AC572209DB1F4B7788D10E38CAAD979CCC9244A9B46004118EE11A7 +4A23BC0B551F5425218703614E939066B4364A99F63BCA8495D6B2EF5F82DEFA +9A7C01DDC093A4549D8F79831E0D85476B8D8315DA4100D0D9F76F110C4C3292 +BF5A4DFD83A6086F7A51A32EFA3821E529A7378A4D50CC6D357B51AE690E7A08 +ED3448C8AB9C2F79BEABB1BCCD98BE00C7511E814453F10300179FD5F0C53D68 +C32EC77218FACBC714919B60B698B7D601EEDE68297990CE14ACBB1350F8CEA0 +16BA60E8BF7BA17998CB3DC89994586D77B2272AED1228FF65E4E5482B1725F9 +A5454D1C0D5BA8E043CA022BBC9A9D3F07199842E27B3B09DBDE2169810E10C4 +8395112D886309AB26F2E0200334F497B1F5156052D67BB1D64139423373CBE8 +87FB91C767816BD6A8E8181A991207A152C2F11522063287408BAC7941DC7FD1 +B333EA43EBE644F44DFCAC37B0163158B863473C26B225B31046734096D06F07 +07B599A16146476FF3953447F30455ECAC4235631CED23B4323B9EAA9A2E1142 +881B87F5FB978A16DE4C61E309912B5FB21A9EE9DFBBD430F96852417F350234 +BC226475D616EB8E6023688A7D2F8AFC0C8E3A57674B6C37D8BB60E35C35754E +5BB1375BCD55B84C95EAA87776D85EF25AA2121274D621B163CECA6C6089371B +81BAD6A064E4D997C775CD6EE95250DADCEA756725E8309E89B29B9CD5B82B27 +9C04230D7EC990F2AB431C6AB44503663D4515A36F650D0630CDE8F1C1FEF2D2 +213DA51EE99B4EC433FF3518790F9E971325CC69B9E5CBE3A582369E1FC301ED +212196C271EEE913000D7F1B3BC2027D0D110BF5AA492BE3AF82FA1F5356842E +60345F8D9A95A1669FDA90A7C2DEF93A6F9F143DFD3052E19DF5306475EA2D8E +AF17A142460E4D0C167FCD9064823E867AE37F94389C2055A2B6AC87D58B3CE4 +B0066653F3FAA2615E13AF197CC82270BC525A95179CB4A26610F185D5318C18 +89F81161EEC78D3963D293BFDC48C05BC418AA3CD07221865DC9D85B8C048036 +22D594A96D42B1D13824BACF956E8AB18E01979DA6728CFA50C340BEE5136FAA +EC20A86FA00AEA6E33F9506EAEFDA472EC5606267BF1D24041E2D72CECB1581D +3E9DCBAFB3D2A936EE5903E76D9038920E697B574E29234E697A6E5FD00ED881 +651B0E1F05EFF0E332CF0043467DEF9C373A420569CC694C14DB372B7BB7AD00 +8164F737E321C23C8A729F978DCEA834B3025521E7B6A51A9CDE55F6AF034A04 +554444B8D45FDB568A7DDB15020AB2C0D08760D9D4F75135078BD6A08FAB98EC +EE90A4C014A75F3D622AD7EBD4C4CE5F969397180905BD57E0B62B134DF1AE5D +0DE917DFD56A628FF0C7331C45B69AB34BA508AA31D0958072B514A77BFB614E +2239B9A718790D6FC44D1F719A038DE889ED459B62BD7B99F793710FDAFA60B8 +FEF62D6AB43CAFD00E593B0A7029F24DC74B46B31C1850E8893241B7693478DA +DCE372C294A8AEB9AA924793DCA27CD4859329596CA3505B2931926A6D56193B +290D357756302AC1A087A3322F0E5A49101823FE8D5F9648A438605FFB24B57C +A7986347D869BEEAB9FB320650BC1AACD32B14C09B9185BB7713986D7A1BA31D +8749127CA7FAC8C6CB65AC7A02925576110F786E9943DCC010538DF5D095BAAD +724B0D752AD9FCF7886148CEE6617DCF87C54807684EF2D18486847E5047BB96 +11CAFCE1C8FC0D1AA156BA04AC8881D571521807BA5343CBB9AFBB97A16751B4 +82EC07A82EDCB351DB2CC604ED14C4E348EA082CDDC6316C0400D0B044888914 +3366DD2C14233804FBA89E7DE589501D6BC67037B672151FA488514127E1F80D +B0E15FC3DF171C9FA4B60D0971B3E749194A7220A619C48981902B75D80A7491 +9CA1A25D88069A324A80AF4C0F58E56D8461BCF994AC5287CDC4CCFEEE7D322B +ABEF3822018BB376D6BC3111EAEA051A2AC1AE3C4BDF0332C927BEB590247830 +20E65A0B4AF445DB83ADE577588DBBE37354FCEEE9329F77124CD64EFE86EDCD +F1B92F2522CBA91263BF77A51BCBD97F3D7F108DBFD9CF69C68C18D3BB3D6451 +CE686C131F6FD00566D80651088FCACD68EC00292403DAB0D59ED62C47E1F2F6 +726FDDD2DF8D9591516B509B3297265879C02EA8F9803D509257708E50CF9893 +5F18EC7EDB0FC55CEC4781CCE33C38256DC2D83E04D6CAE0F8308BE22D37E52E +3F3509E508A590F46C4F105439F4F4250D38548C20F27E471CF86484620A3B8C +B120D0F066FC2A36AC2CADD3839E4EB7FB13AC999B562F3D9EC20C71269E2571 +7F30FFE9B30B5FFF218067A14E41A3D47B9CE0F25867B8F8306C1099E754A5C0 +D8049B5984BA9D32611F96774FB9ED0BBB25B17C3E590E1D9F35C1005F7178F0 +A8556B78F23CB97E5FDABE71B73EEA4922EB90A3BF3C4DD3A97A3D3318A5A944 +515246CECA52D011E56A5070E7EDD86ACAECC9575F81EF49FD3866F7E9251501 +E84BB33CC1F52D2F15ABEE0A3AA6B575387261E25FB6C785C51650E718036FA2 +627BC68131436F080F32071F467F3C593404F6CEF75DCB62ADCD535194D3243A +FD9CF13F6E36C34836FE593D9551358F98DDCE5475380019867C1BFA2507AF25 +1ADB665655E7DE942DE986B48460AB7B9DA640F2815309140519F7642BE99E84 +BBEB373EADAA36A866B56CA3810CFDF36C11FC2A6C09426050313B28094D26A2 +EDA059C4FF32811112065A07DF5552E7A0DCBC9E478CF7CB261F01359D503768 +958C26D87A643C6BA65FB8AED251AE379963FA6D9B875DFF848185BB80F5C8E4 +28B238350DD3180CA24845848F3DFE46B6C328085C1C27D2A2EB7EB983961C57 +1B4EB8042A3F39965E431D875DE92F56E3E420746356A53916BFAD9E4FD29944 +C7F05EABB6A82AD2467664C26C187B45F28E2BE9C048B7A43A75C6A29CCB5F14 +FB582DD097EA687BC568CBB2D387CA82418425A2E8606CAD37DF090CC1EB4B57 +E5E9A58A1A29D5B7DE5AC9F2C229673307B818E8C86CFE7CB8EA97A28F4078F9 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFRM0900 +%!FontType1-1.0: SFRM0900 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm0900, tcrm0900, larm0900, lbrm0900, lcrm0900, rxrm0900. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFRM0900 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-196 -322 1502 937}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E48759F267FE330B57DF626EBF73D2779A4A6B462AE6E5 +19E5878939A488F2FE1094A76925CD24DAD4573AD3CF34E426708CF06E7EBFFC +BEF5595408106E2189F418D17AD510ED5B6A528E8902AA3A5F0FF52AE3DEAB07 +32F06B63E28BB88229E046F4FF8A356BBDDE82DF2A197F2E26CA00D5594725A1 +83A89A36487EAAE1AC312C929CDCE50722FA6C596C261E4D78D6C6ABF77F5CCE +0E410ED74287A0F201140F8D9674A7AC585D3CBC72CCB824F9E1CEBD08AEDB3A +A4015CADF471F7ABD9B0F0AF73A8274FD441BC1988A61799856E4770155341D6 +516CD0E25BFA59B67AB7E0571DF3F5BA70A82798D4CE6D9F23F52CF97CA370D5 +FFD6359959DB68E52196D89FFB84700E1CCF3E2E6A52CCB43303FEB31F296C29 +34B019803C53D8D5DCFDE72099BFBA29C176DA3AA9F20106D6AE6D530A490578 +AA65868A24DD5024A28C6E372C33EA2F6573A6592AE985F03A99884CCF7CA096 +043D8D33EC0550084F5D85656F821D8E06996DB3E47A7C4E20CB4FA8F9A1FDBA +8A8D5E42F16B4FE307D36B86A652C196C9968BB436C9CB66C9CA27658DDBDFD5 +28224AA3A9BDE394CE703771433B4BD8B2867327DCED10CD89FDAAA5663DD04C +0F4EDA21B96627D495493471C6F0A2BFEBFC2951896E3A52824E1B82EC39B16B +F11A8545D54E1C5AF4BC701B47E1D8D4D073272FC1D51635571A371ECA95C12E +E1C25D2B992EEC97DFBD6FF62F64C001793DBD8BEC957386CF5BDEF6C38A4DBD +F39E9464426805353EB6B50E527BEA12C147153B2080AC1F7C1C713AF14688A8 +62D83B9557A4A5B851441290AF825C4C92C6C50EF812CEEC88EC5847D3E6B82E +9EFC37F08E89C667E72BA1E3134EABD353D1BE1FB5C7DA308F5C5C3C732AEBD1 +8A8297D49CCEF57A08E04B49AB05EE14113EE3D78B0056DED9C4C2ADC17DE809 +C67A18E798C9B19235FE3316D513A048F35538E5AE6A1D3DBB5EC0F6A2E847D5 +AC058042FE9D02470FA6CB3D601D24740E1701A5360FED33DD9AF6F5F9F766F2 +D66C8A1DC9EFBA2B76B4665EA3F4B0830718D081BC7FF15A2B0A8644260A9146 +92731B956FB5FCCFB1DE1444A7A86B8344E9ED2BDFE8A447843E0DA2A2707C9D +FE6947DF3E7E3631228398055A9B44EF7FDC49297465AF931B3457EE75B08725 +129457319CC4ECBF2DCD61749365CEE1FEF30C4048487185D766D2A0A9E6CF8B +201F5DC092924B8AACE73F5E18AA9C7F5BD695D95688A154C084087222429BDC +8A14337B3818F678B2407C6510819F6D4430EDB088B45034BDCB2C397A4898EA +764922CDF57BED0818A48A355A40D9A42C9BDC25F2B1769D6E73D16019BD6DF6 +22C00AD86443341719658D8A1B849F6CDB1C6966F99490B2A9446E46EA101273 +F76D5493A806A353E32704F36F2F2B195E9530F233D6EE10BE28379EADCF9816 +3A7002193DA29EB6D491B44A987CA3E139299657F7FD8227DE2C010CCBC9CB8F +95A41E347F87C989B83A0D18184E6D041C59CA0472980E67CA34BB129C2B3EF1 +3C12F76F0B1D30B335F89D000E5A53B6D6DD3A80BA07E9AE56AC0CA2A223B97E +87AA6AC7EBF6977DFA340BA09FFABB5F96210542C1039ED2627101DCD5551F5C +638DF35810519394220B67219168A900CFB9F261AC5557A602EC1F9F5844D3E1 +C497C4E1D75C48DD0009E5632ECCC001FAD8033F3A8A826BEFAD518367A75C9F +3936535F0867405783ACD1965F59597F2CF966BAABABEF97AA710FFF710FDB30 +74F940B4B329FB463D8BD83143AEAB60E0CECB20C035BE26A14AB36D6478202B +AFE354BB16E40CC682CBDD149637646E420F904FD5D734481D3580CDD874FC12 +3C688161E8874E54DE3A4465B253A6565F41D6816E6AD8769DB5133745E18996 +70CC4B02140158EF09126731A1EF391EDBD6FB6DCD1B73300A2AC4923DC080CC +3E59128C27C59089DB380B95249943EACE962F0F31939D505D2CC53B2EA8E01B +D608CFFB0446CFD36D39B14840B8AFFC859A89D49A6986A70B5F45CC83B647E5 +4B15FA1E37695B92C5171B462B457C455AC431C728A7C6F669ADCB9348FBDF8D +AEA6AE3FF4E0C9A5C6D6882F4B73C42FB3AD594FD82858951852DBA792F4D5E0 +EC14E75C2D09248172CC2ECA86F2E17D6AD503DEA5D79632DA3D9E633BB0C076 +8C78E439C57BF3DC3E631EB82B56223A71A8F0F5627D4347562257D11FE75618 +FD15766B7B739EAAF07F5827AD7721A51157AD1CAB9A60F28F0990BFAF9CB9E5 +ED362DB036A543B2705566707290C071F8DB7BAB3F2050025DD6D125BE1AFBC9 +C5CAB6B990C4E3D619F3909D9FB5B38182110BAAB191FF5B038F5C52282BCCD4 +BCF668D5837386F411D254881BD2A6789DC45B67153BA19E77E4C9A9B37E4CED +0D8DEA3869B0C3DBE760D719B13223DB28CF1A991730CB8CC9D27EB2EC5B5A79 +EE2CF8F7473B92B508468381D522128043C3A34E691EF7A85BFFDBAFFA52A723 +DB265EA371823F08028306CBB953164D0D68DC84A513F352B24E70B3CB9AAF49 +B0452C7775672B3C00231440E8DDA35062C33AE328D8B9C63B59DE3064BC15ED +EAE4974AB098935575916CAFA7BDED664D70C8DF50197789934D525191E6F0BF +D15BF44E20E4A3AAE675007869D32AA1EA0C6AF1D108A573F2DC8D355CC4A6DB +103B91CCC4B5D0A21DD90206373CBF3A089C1AAD0A95DE4DC415F78C6BCF6764 +9BA8805D26F236C790515B1D24AE4CDE4AA40568CA3F6E7E958F3FE36D5DFBAE +DBA30120D3745599B7AB7F3DF61AB8F22FC1280477B76050B07D79E704760D8A +72FCBCBA6F781036AE4B1BB82AD5AF8F67EAB607ABD3BACC797EBF1ED0D17879 +39F802A295E4248C4A1ACB2BE81895323E3AF598EB9149B3472B54CD457E2809 +80045894BD1E328A19B378108D8FD0CCC626549F1D6B75D752EFF0DAD0A7D875 +D095AD02D9E467BA41B9D10FB14612B3CC2F33CBD3E07FA1D550C63F06234252 +E2AFAD0680837BF7F8CB13BE84E388869D72940D4C62C19E602D5A30471C6259 +400D08F231616B40364AE0FB33B5D5617B9C8D02D4ABCEE477BE97BB7ECBD939 +08AB58A7A6D5FFB1FDF088978B92B75B0DE30E763D974014061C405E1F866278 +6182EC03C2BDE699FD0290E254E493659B3C5CC5509B359BBFA1DE2A141C4B62 +15D0AAA641F1BB55E3C80B23D2C2F18D67BFE9E67A29A36AB210E92BAF2C5EA9 +C22813AEFF2672B72A17DD04CA71D121B94CEBA2586028315266C0F5625EE0A8 +F8162C84F23473399F29A063E1EBD4D51BFC92F398E0CB47D292CF4E35D6F51B +C2B8968BB436D733C0D15323AEB2CD4A46AE3A1595A412F97BE0435597D29E12 +793B387D1A561C785569AB3B689615E41F5159676430F0C5C494FBCB8E7CF0E8 +41AB2FD10F89A0081A6846E47D3BD19E1BFE3207584B11CE6B9D74B0A634B776 +A6D42D968104394AB80C5A40B9DFCFC51C446F7FDCDE6A003B7260FB6208DDA1 +4733ECDFE98953DDCA6F6BBD4476109C7AB9DA3439FCF963DD6D25C68AB8F0DE +BD2677B72A686387AC2391AA0255105471525044333CB8F58B3A79BFC798878E +5D558D92E8F29974F34E19ACA2B1C6F6CA9D590600BDAC26BE128EC0445C0CA5 +03DCE487932CD125D77501D606D116DD87E534985549FF1AA5CF9717131FAD84 +3B95C9D36BE4DB8F3463B66AA62A017A06717082BE36A2078A8230F1E78D0A5C +EB3156137BCCE7801932AF12D1ECD718AEA74582543BA9F60CEF13A9D75E5ACA +FE0B3D8344D989BCAEC861C04BD1A6F63A62DB0BC0155F3C47F05FB38EB26BC8 +C3F9F7EB6B3FEB02AC3AE5CCFE2657FBBDE30B3733193941E27EEB978F88BAC7 +A203A4A29D178391772A98DBF4945C366BCB80C9DF7CD4688D58678817EEA764 +3BA3AC91506346170D7788EE8FDB5E37ED58EAEE9F7E982990780A8B1306671D +CF816A461A263BD47ECD69789556A974B884B37203F38EBD8995A59F3EFECDEB +0D9F00D93E732AAB5D69D4B3342DB4160B2C8A32810A9A0FFC7D9AB03344911A +FD2474342DE3906CC1D0B808987D7F63A4A4E2AB542D73C6B61578D0463ED375 +EDC58C72FE198A90A6D26AF7534028FEA6993EE193DB060343567C44898FAC95 +43994CE65A13C4E5FD0C579E210CBFDD7F38ADD3CA5E7FC82E20F4B0EF2B15FF +13A4D2865EFC5983C22F4FF6B4F6433D515D584A19D9EC4224F95B83FE506A7E +C70A09757A2486E84A6D87A7317EA8A32E854275496E09CBE984EEB174110478 +19AE3CECBC6B86B3189334EAF808336A864503C4E26D3C3582FA23721D38E3F6 +F083933882E8A20C892E2DC8702A0376BFB77262FE3780C20E088F64D1958D36 +E1750602CD51EEB7BCC683188DFD2CEDAC61D46B07F5D4AF4615C61924AB78BD +DF1775252D6C50E878C940FA11CAC53371DDD08041ED2A7D4B3D077C73B49D19 +6EBBF5032B64DB22D5E4521B172F6FC9CA50B2FBCD9B1EB0858E05A2C861DF76 +ACD1366E775F2BDAA772142AF45C8641D4D8192B7963829017D25E50D0226C55 +6BA045F95B37A237066E948BE43ED060DBE2C40BC1316BC6EEB5C47390939E48 +F87327725E8BD59300C44EF44A301B5DEB8869225B0F2E9E610CFDBA8EB73C46 +2015087BAC747A88D2401A80CE2343FA39E4F9F2DE6471993C0742C0C991B277 +D9B7D40219636D3D023580EDF91E8CA5296E7A0E18A7938C66F7A40CC2915A0E +E042B66035CCC845D9482E98AA0FCDF5FDE2D2C67C97DC4EDA912108A291A0A1 +B0D7A249F1A58BCF40E25FCD919C38730BEA3912F2F32B2BD21DB87F3EDD7D51 +6E7307BD387C9F697D12D9BAFA9422AA52EB3D0DDBD5F46D102880B10DA773F8 +E3BC936787F848B9244ED85BF867C0020B07D80245F249EC52287C9C4DD6FDCC +05315415D8BA1CB39F045FBEF8B6ED17C2038B253B054860006E9E62DBB3FBB3 +198D0977508824D32872286C5EF65C57DDE5601A8D4189D2DA0BB5BE56B7E6E7 +EB596B088E6E0C5CFD1917BB18A8038CE8E79A42DEC18D5EAE86C7CEF88B8D4A +667A5B69615012BC07452B837DC5B530B6D1D53728262EE6F6E9FAD73A5F027C +74DB929C1165311712B0EAA8897F9E44E54AF4FFF4669FE2C8534AEB53596D23 +D81ECC740BD72D25045DD71486F95DC58EE4FB8C84B10F586A5EF2E3FF500376 +1FF20709505AF8C48F9601373F448CFA436CB8AB982822D513648C841C205A59 +C8D74928A385C4326641448175F7B32F518ED45BCDB8AB3C61BD938C78E01F53 +0E985C06CAA73CB135698BE13F09033F55114FB265E238F5DF86E64711AB32F1 +5920C8A0A3D3093085E9A37AAD341473C522D6AAE40F6E3717180D464B4CB379 +A72ABC3C96FF0D996CC2560F4B5AA1ED8249B91D3CB39128E2DD1BE58289FF41 +B3DBBE73BCC4E693633184CB857DBCB10585AC9736F594250AB6BEAA35BDCACD +9AE52E31AE57CEC4ACBC83442AA19931A0650BA076684B2CBFB614D511140375 +41985C915A1F65D5F74C358C2D3F4C69964CD27C30FBEC1FEA5FC1F420CBBAA3 +3C6B6D09F650946F6F84387177D9E09E418B68C5D3EA78D391CB4943DFBC235F +3965AF7B0105C41AC6298A742CA9C9582F444AACED9A4F06FD888C7218F72079 +68C5A4EFFB389E632AA7369DADD335CB09A1387E31A3179214B3ABBCAAFD8191 +E69138A2087B61FD6AA6984F04B427F855C9B79C21B1667E274B68153EFD8DFE +1BD24C3C82398F0ECD902AF9701EF9871DD08E32BB6AB465E68F07526B11DCBB +72F6F95E5F3369C5A43825AB1F6AA0BC94437F8F16309A92E55DC7F2AED23880 +45000CD669E601D02CE45BF5E62E6E54BF5495A0069016861B3D0BBDAAE3FEAB +E2F0B6F00428C405781EF01F2A68B268DEE5C0DAC0888255EB30BDE573A8E3CA +36B57C89D83067A6B43BB0631A5F3CD9235704BC50FC35EBF9CDBEE9AAE9D2D7 +334976E21B895A97938329C7DE1F6A46AD7CF22490200CA11671B22373E8D17B +776C43AC4D3F535BE8329A028E9372993D239ED7D6C47BBFBF9FEA84C466F0BD +F6AAFC42D933764EF3E3B4D67BCC0CA89FC12C4F3B4CB98AB09BB592A3B69956 +C30E74F651F4A3453C96EBEA2DCCC856673F3601A7CAF81DBFDDD3C387254B87 +37035384D5828B9A2A19558EA92DD90CB1358C058B35D221A151698B81E9EFBB +938D93346EBF216E4239C618F1DAD80DBD7B529FCE7287E2B4D1B82FD0AA18B1 +62DA56CAE271F4CC62D4B534249B0DC84EAFF31E61867385CCC3EABC2E11AA69 +6F0E7BF2CD8CE4AF4C4E69502F7E922C5B60CF4626B123174909530449150316 +EB0D00349EE4346165D44E113C97EF3B632DD509BE5823B52E2F6201DCDB24D7 +78E57338EB3214D7515A1E3344FCD64B49FD662131D2D45CA8D5DAB7A870B6E2 +A512B5CAD20ECEDA2D51076B259A087FC0029333F29AF1F205956BB486871FDA +CACD9F4BB11F6298661D03AE2A6883FB82ABEE288BA6CE8FAB85A6CA4EEFED8B +B03DFB76CA2268CFE94C0B3EA9ED0AD8F4F0D43A52D533DDDC891E9D2B788F01 +E63FD9A14D00634BF670E3642C3535B7AB73B2213C0349CF5E62AE2E8113060B +C3547D6D62AE05BF0C17BD930186606A1680C24BF2A9A79396D904BED3487D1F +CE91C6E07A96C507FCA731AE21CA6F5EB156DEE2D81F4296AF11F291D76497FD +980274CE6643BCDD30869554D24575C2E872B7F5B71F7EA9D7C739D176D06A59 +B3EC49D7181E14F5605E7C4D7F6A2621648D9F06AEE95A0312040A4ED00954B3 +A7AC28A6FF2DC9BCF3E51ED613BAB04ACB96D1EE2F23B7CD252B039DCF361959 +CC80967B02ED9D82FBE68EA781CD710FEC661B65E3AE472313943DA18622F2C4 +9FE5AC0BA68EA20601A858FEFE3897A1F7A37E004D2DA38C110B0CD80809677D +C944FE2E154C1CDA2C40EF97E8DA68AFD94F0A0DC6DC6972EAE33CFF7E07FBC8 +5CA4F76A0B2E6D9851611B1DACAD25D0575B231CE23085742109B87E6267D7F3 +1213C932AA0E6BCE039B402213DF9BB444E1EA6950A71CD13BD68AE58394BD83 +16E7597CE360308CF5207B37C7E69DD5C478591966E95793F4D2F7604EF21471 +2F001556ADE77CF8106836F02234B26FE6DB7F1FCD08A788154F9ACAA265ED2C +78DFA328173BF1007B6A68F73A3AF84B81FC646BA90A9140730DA663EDF495A7 +F78C7B18CCCAA69050EC25646921887636B74B1B0A47FD3865B301969E55C954 +BC10F71A138301219AB947CF62417979394B694C2B6BD94955983F365AF28355 +D26C979545E24B979DB7A2113D55A93AA34EE132D32C959A62CACF5FAA322F70 +9FEF2F0E3F4EE2C648FCF0869FC5DE6016C513041E825AEA933B8A61A1272EB8 +2795939D9BEE64F7F51C1B692431A3823AA9A1DB10B50119E2E249D328BA0C1B +4462DE129DAB52395DD1AD937937B0E43C3E8B0E36695C094E008C0F109906EF +64FB78FE69849FDD7D9089C5CE1FD0DEF1577A9DEA00315A3D2A0559C1988643 +8D247D010CC84045FA0BE520E4E411A8EEC5B53ADDE29F12568A4CD5B20AF299 +46DCEFE11EA3F53B8C498E5A68F3AC44101D873F0A7ACAAB8633A660729F9E3E +019DC7D79DC601343855C3445ED4D87CD4DB7ACA9A6F6CBF2BEF63FA40352820 +F2ADC6FDEB4548266CE8C85426E521E4361007102D7DB84C8245920EAF254903 +FDA3D4A150E16B2E995F93075058F641B9B205E9C04B52183462F00ABE525390 +640C827C099C1AF8DEE7C73D21C62CDE626FFC7E954D615AA377C0AC759565A8 +EA0CB3CC20F5F79B1B8DFF2E6B0DB9CE851460A0408B83F460EAF6DF2A16E396 +9A4FD5D2FE6F8911CC0863FD5E91CCF9B8B9A4D7567D65325812D53AD699411A +9F800ACD2931E40B94135CCD216337948B63263EF2BAFEDC94C8510138F28A36 +40E45FADCC993DEEE5611AA45700864E1D4133C6B3F4F9FCB7EDD9FD077EB83D +944E41D2BF4AF09BE3F8F2349D76D0951F2B959DC637E01B23F8B4DA44FBB64B +2468C6CC89CBAD30CF87CD2BED55A9A185BCD43A400DC83E5BC6EA203A848C83 +DBC4426A84CC3FBCBA674E832E931DF5CA1BDE265CD476AD6F2CAAF3D536C12B +AF01F104FEAC59113402DEDAEA4B74B734C1E3E8074F4184C56318C377503561 +CBD17FC383CE66B0716DE6BC5E10369C99C2F361F09277D86D611704BC0AA1D6 +597F1960649E62784520A4601E0BCC65D903322C928A3304A84932DC178E2012 +4CFB668F5CEED6039F8E4D13D3F43680759C56A4B579BB57DB6532FB8A48D2F5 +B92469BBB09E26BC94EFD4B8494D51AD9144F3A402FD3F3A6A1B1C21704FE57D +96AAF73F063FCBA8025BABA81985806934D916A30EC70A2AACC257277D55EEBF +AEA7EA764EC615DE15AC99EB83437B8AD4F2F3CC59A7F80D151A071038CBDBC3 +F7B0D343F4DAD69C7086EFB76DD8121521C4292970E3AD762FC13F9424B8B7EF +A47CD8B27B23BC42361F94F3172250DCE84428AA63305BC482BA1C6CC490B271 +80A0598FF47E9AD7B0C2736CF31BF4C8C223AB08372BE81895323E3AF598EB91 +49B347216217E5C6AD6D53EB3CE838BB8222997717BA399EDCDE2FBE1C1669B4 +BA30854D6D08061211476DD43ADAB75F015150434EF29262CF2A8FA1639D0D45 +CC83E5F0777259952477C1B62E2D9BB673A14F75D1E089C674CCBE82ADC95831 +B8C4E93EAAB970DBFD0B099FAAB971ECB35648A4B82E8421467F81463FFA3BE0 +4171938BB8A2138E2DB585C8C5041443621C24CB844D8A6334F85FAFB7D29DFD +B630A8409639A33321C6772E26158DD3F46EFBC45BE4269E32C7E50A4654EDEC +4220DA13C09A0113283E0741EF2F23E0994CBA54638F83F6FBCD8A487579162F +546DE76BD5AB820C5801FA7659434FB3497AA16F752AAA791454AA1B30B5BAAD +873A8138EB75A0980354F7652519751C717DAFFD261D327A4DA1BCA9CF7F49D6 +9B9ABC11CC02F31C2AA2F0267DE93E1F7CA9C108D2660030F42BC5CC3FE4EDD8 +1D819FAA8BA46E183E8529BC5134C2AA27D040EC76529B31C162E89A24287D29 +5886E52CADD6114790FA8B2485F6FA6F213D782A86C04073D1389E6C8676C28F +F29993E653AAB530481B4FBC9CA1C54D3B05D61B359FAC16B6E3061A870DFFC1 +F66B69FE7AAAB765CC2AD57E26D57AE1738E9A4A4D895A94BC75FDDD194197B0 +B50A19DBD767CC510D2C7D0BE9DD12E366B3979CD9378E1C1333BBF6F62FDAF7 +2B6F791680D4703B2ED2F28B1B9EDBF53D1AF252EAAE789828396B76148D99CF +927E5E602B7FDBFFCDCD3073532FAF5C06C8C66F7AF0285C62CDE864FB392C60 +E40979EE917B4C40696C38FD638D7D4C4F791D4ADCE59BC4CBA126D53B0FB569 +ADFA910C9F013F1012EEFD6A3EE8A9ECFDD0C11221AA26C363D72405CBCDD858 +DE5E61CBE2F070C4F50229532C3B2A019D2E20757CA37AFCBD5B744B982E9BA6 +F6371B06CE52FF958ABA14A40F3BA42B9C8A8718DDE1024D89E149964B0254EA +F189EC9F6B50DD11C600E831A8019C44EC4393D40E8F6BECC774D5CCF1354EFF +9E5CAD3F823DC7633F3BABEDAEDB3620E8D18B85A7B5BAFF104B389CCF9385C1 +ED3D7A386DC8B903B12A40A078BD25BAA0A40D07C101288692191BCF9C3FF4D5 +AC2220299F4157B453FE74520290F38D6641C85DF96EAA93E85EF5E23914C298 +500CDE5FFA629297411CCC52C6CBCFDB8FC93B6C6D43092312A90EBAB23F67F3 +E689B2B26439F993F4C615D6B72EEDBE27EABE6152955D8A36EBBC235049113F +F7BFD88AF285A366A99086347F56E1806E10075EA14B305EEA70960154CF4D4B +4579B4018A310214ECCACE457B93119F2BD81515D2FB653AA5BC4E24BA772630 +4F403EDD7D516E7307BD3AD0A95DA0EFEA0A2037BEC800A3861FBA8811951313 +205B214BA405BA3315AFDE3B8745C49AE495D5E4A55369FA6CBB0A2A531B7280 +F1CF10DEFDAB855E7E5A77989E7F78DFB4CBC0CA0C1AB2F52412CA6E669BACCA +B4B797D5BFDA9CB54DE3021D1A112A1144A0216DFAF062D004E1DC7266545502 +F32EBFF217F648AC5EC0B4DC29C10BA973C5114B03AA9249563D4FA224152B3C +D7F2EFA7DB17912D34199D927E96F61C28B4BA46ACC435C4D792FAE7929FBDE5 +58330DA51C7F19C8E1DB2ADED175E647CC52F279FEEA987A7C6FBF4238921104 +B20BC589E4A84243D3D0FB4195790057D320D488951299EC32BFAEE47366095E +C4ECD1F735EF6EE23CC9F480995D35324DECC4576D90FF3C889FA0C12535CF9B +F81ED7470D21AA82D5F08B242140D5055CD7F522686B33F8E5FAC431BA280CE7 +A398A633DE6649B2A18812F4EBA0AB8DB6351BF489C96C5DEEC9D3BB5767AB88 +94C3C25DE1E168479E8C3191B2FEC255E2144AF4BA7A0E2E223A36AFC95EF5D6 +6120A2E0DD954ABFE5CA944E593E15CA50F009E610CBF667B8F51B73BB4340C2 +01F961680A2C71EEBF9EE86642D8A421769C4E2D163710FD88E772B235630231 +0CC7DB81319C0817B39B9A83E95B5829114631AB5BC3F81A8CDDB5880CBD83FA +A70E6B98A2F16929BF0F08F586A85D9DA0123A22892B520445DA68BD3AE4E605 +926D34EF79D1C6DB94971268A9DC74A9D5232691998BC4B57B2213D5758591EA +CAEB3B5DCF65476B351D50D8A00E3D757E8DB8895536F2A24AB83FCC2D2D1ADE +17E43F81C1F4F24940B3409EA1437D71FF22F317ECB7D7DE6659461CCD7E823A +8EDCD3F3DF7B52C2DDA491E2336392EB7AA4DCCE229791CFE74E4F1343BD8149 +3B9A88B37BAF7CA8F4E4EA3655B4EF504DE6678EC7AAF562090EB914B9AD5920 +71A571084530BB6D83D8428EF19D3C333E4563A28F9E859BE6FB9DD31A0FDDDD +CAB7C10411164E99A03A35943E672A0454F37FFB7CB2429D0486EE22E2FF4F9B +F27B57B73455A5941EC234FED7B756BD522FECDAD5E28A53F134FAB24DCA5925 +3D5F791731B9039243DABB63C31D8696454D2E9289987E7D14DCA0BFE0D68778 +DD1938CB47C4C67051D0B74ABC4C9F19DA448A16E74A9725CF12193C4108D947 +0B9A6F12C2692294B5485FA257D01C820D7A4BDDB792F5506423CB0976CFCDAF +E48A6325C618DCECA87C1EEBBA1519410D86F3813393C58821F060EF50708B57 +354447371F90366212BC18AFA59CA2148F62509039E8A408BC69A27914E42516 +51EC1BFDA72418906096D3DD0973531AE50FF0D080CDBA62F8B43EDAFCE702F5 +0CFB4FB696F9BA931D2552F14BF6298CFD19503FF92CEF1B7E9D687A51B36BFD +E0D3BF7A1913DCD9835D8D0209BA9A65D378BC8165026B8877CBD1EF75B23767 +649EBC81B4A445420F0B8D462CB20C9725C14696DD7A4253C280FAB65C54852B +96C2155EF29F5E816F4A883E85BEA75A6BC814FD9DCFB4660D53E2657F36421D +FD914BBB4D91B8C163F266971DF2C336C28E89F96062D48EED4DB5A214303832 +B19B3ED328975B14EDD0DCDFBFDA407AC0812BFDFC4B5E0CE13B1ACEE58FAC77 +E79FC4876E46194F9BCB692B3A7FFFEA762911F42E4327DA1FA08BD4EAC0F9BB +E93E1EC50CA51CBF49424DA7806D89E7739685F599376EBBE20F6354928D3870 +F6E301D9347BA577729133FC0FA1EB238A2554A147DB5D69790A3CAD5161715B +BE6577DA7AADDEF06543A6FEAA2E50BB66F44593DF8BDDCF80A7D861AA9E81F2 +C53A0CEFB9EC07BCA041F1C47C6E7DCCE8041A08AB37026292711FD38942C57D +0E5FEBBBC8675CE5722747E7A87FFEE2BE833E921AFC4028F57DB410C059BB58 +F863AD9156EF7E0F20E705602F8AA908702A1B8ACB8E42C225939689AD5612C6 +7B1112CB91F4E417EEAFC6E54A9413A390CCE904337746F2F708A7F73C5E7E04 +B5167C9A135D248173F2D869B2B6F1439AD2551A5869D11CCA7BC423D376E2C7 +1F98D01C30EE9B070133D39C10590C07082B0B879E9D279B62A7D82A16D2AB62 +148F993A314769109C4944067076F88B3EC71C70D0F452E9EC8609E38273FD29 +89718F2DF99D3E67914F206455C49E7382EDC9D928F105D085EB92B005C7F090 +C890687069F7AC0E734ED86FFE50E759E0AF12CBC1C77C898A07786064099C3A +934832474DFE6A55F0FD16E7B7141C0ADE8A5169AE0E77E97AB034A67019DF1E +664F46FE2E11BFFA2ECAAF45EEC067CF616E945D3C5B8E6211C3F1BC9DBBA0F4 +B3C42691FCBFAEDB827957FB8D90C19A9FBC675605B785A1DEFB734622954179 +1CC03B89AAE4DCB6C591E015E6142E2DA6A954D20B08A3157BEDD43A41ABF37A +0C9C176237235DDF8492926315049E5D5A3571A946B8DE0BA110537A3607969E +D20057FF30ACFC51E8930216E224B0E4605523A040960B74701EB0D79FE440B2 +63D9A538ACFA0D7B8B7E21D039A1DC277E410104C4BC83588CBA3EB0A7E11F5A +E6CAAA4F72A4B1ED051965873AA47DDABECCBD655D5A5E0B58C8DB20999CA4CC +5DFC5A672F5C8C4E4C86CE6EB665BE0B90FF52ADC10A564BCC221D7C73A50C33 +C5E164ED6FD0E0EE9F834C8A5DB747E46FEE92CF64E7E6A79BDE503E0CD72CC0 +48D6F89AA8B3C8B5EBBFC74CC6EA8DAF2A769496724938F45332458160419E5A +CAADBE435CA9D4D06EAAD43B61B6BF60837B3207073770A7D8EDD3011930D0D9 +2D347BCB0D7336C36D7F403ADD5B2C9C3380A5E0123F165A4FBC8E5424456605 +447FB145CBBB4C18241801F9753691F4872D85905F5D1D362254D70DA7C173D5 +BC34F8833B8104867661F36DAD065A6869DD7CF06879E4B353AEA675FFD6DE52 +905B69119B9FF880A54D0B6B7FB5EF79EFCF03E929E8B71891283B2520885902 +C2DF16622A224C5A11EF321F7C21D6ABC8B822F07B115854A4F0EE9BBAE2C213 +6DF4229DF208FEA7000D27BA1006A4EDA12C4CB8D969B2680C145646090452AF +747134EACD303237D2A4B36DFC67B2A5A18268560917B2A7265C3E64671D8A74 +5CA880395AAFAE7EB5185BC9CC76CF732EC95E9158C314FC3DD1ABF1517AD1CD +78EF81ABDD84E7E2F9A2B89179CE854EE9FC475C5185C78919017F8EDC6CAB40 +3594DB6EBDAEB2B97FA0DC20C1D5F555806AF041C94C69C53A367D690D0D92DE +91FD0426F20789C06ACA9590B19B4C29CE1A3F730BB9C0A40F45CDD73EB87322 +DC2D7F49BF6FB6FB60E18DCAF7333487DAAB5D9A5FFE887B3E1E55CFE08E8FA2 +C1225FF0F42D25F8B04E98EE2D9BDB414649B9442624CE2B5C3180B99D68FB98 +2D4155DB034B8C58817725373AFDD2450E4B5A45C9C5840291318529BC5134C2 +AA27D040EC76529B37FAD7CDC6D14D399094BF8DC253D15626523D80D865E7CC +4240EA70147CAEF216A5A0CC389BCB3E414D1E65F7F638371B463A586825DC1F +0627C4F45BEE437A3BEE98855717B2F59D3AB45C342926CA6A8DD12C7DA6E58D +254C8BAB5E1F25479D3FC7623589A5D9ADEE68CC87B752819A78176F13818AD3 +C82219A09216E29C9F8236C60C596F6C2FAA42E9FF3F5E364D8668573B65651C +DF73AD93DC6E1FB133A189F35A95FE9B0A14B93D5A8D354C7B9422363C2E8DAE +9464492413814EF6213340B87F8B5B03068010326DF7A1981F29998F84F908AD +AD503BF9EA74EE631C9126BC4B036F62FB2BB51E91185393360A9EC25F73C695 +C09C4E1370FC23D08532B522EC61099BC36534DF5410EEECE53D07882D2812D7 +41C2706D4873AC449198CB115561A2B045B2888CE2308BCA2AFFC3EF8D22EC67 +FAECABE1E162BEB008B52B29C317821A55634B99DD7E5A2E66BB265F6B6D7C24 +D7882EB6EB1D995CC1D43CC2A8CA6801BA7C57AAEE8D68F5DB43CD16C8F0A1AC +0DD050DE539213E79EE8C6E41197EA86AD6EC939C4410F8E70273BB54A16ACA1 +3362938A2E2A59F8B1742AEB3CDEB3B476604A17BFF9EA82A203A9D278D68A91 +356CF83103649DC650A35B7D83D2A49064FDE916DC799DAB8C5BE9D168090AAB +2EC29A4A33E5116E5C38DB8B371A6F7C9D69828818428D8ADDAB9441D02113ED +C0DB5D55206262B3CBD2916098E20602B368855B777F26BE291F9B53F2D23CC0 +4E1F2103BB7A9FA5450A4559E2CDFCCBAB7933E9CE226B56372997E8DA476FA0 +146537CD2BEA504C976E84AEF73EA0C3728F2DB7FC6C62F41D71D684EB2609BB +2B9692CA8A284F316299CE2393C0988726A31D7C152D333CD50C1C7D4A2B5FE2 +D318B5FA421ABFA8F83725B803C9B683B5351299E0C9FCDCEF55B7E1D3BE1EA9 +D96FBC174C525BD4AF6FA2A9577F3700C4BDB7CD07D076306A24F652EC32AD5A +F9FF8738F65C347E47E818446EF2AF45C8DD23626404329268F446E2A1E8577B +253DD29E0FC72DFE00FF01943293EB54748050668FA7F8976ACCE231CAD517D3 +C74E1D923DAEA0562B040C71F73FCD2CC727A200D3700156C850BC4C84C9023E +30AA7AC5DFE1196FB98F940B773F20E22D2E9833B3F245DDF448E1BE9F377BE6 +9E09C36DE3C486E0234B1F99101E1C975A8FFDC4F0630C9D1C763E71871E9AAA +881126D068310CBA86F8711A270474D19630E3F936574C15631B259633E923BF +CD96E60F8F846D3FCA2BF6165FBCAE93A0C123C0DBC62E8A73679FE05B9E94DB +E5949F4D5AD4F7E2F4BA4FB40EC8C10DF41BAE286EC2551792AE966408DEFB2B +A697B7C5900C4305DEE56C6062563712166DB98E88E6F7F5EF5CCE4218A97E94 +4E0488C0A6E1419122ED16AE9C8879BA7B340FF98DFA8DEF6706FF9AA70158A8 +B7506B036BA67EF78D43A892639EED4BE60422FC0A8732105B2FD805839AE457 +2B69FD5EA29366F27CD73DE941821C407135DED823E35746A5F076A67920DBB1 +E18E826EEB655162C3ED3398F26014A44E0167984040DDEC66AF44C7E263002D +39831476F10516D8889960E4368B717A6973F2F8680A172FD7ED2EA648AB99E2 +505AC7F5CB57A806F322C4F1BBEFB7D2179A38B82A4EAD7390AEB5B34124C9DB +A89EB8D3865454D86BDCA2513D4D2668749143D43EE238B94657DCC364C9429A +1FD12F97E36F3B4A8A561A10D6B7587CB3127370B84D5618E5B7BF1C9F5060B2 +0C2DEB401571D506413CF1432E993DA7E61C0DB56FE9364998A2F9AD76F63877 +F7C9C337C6CE1EFC903C8732BED510AC193A4AFD0057601DAAD9BDC21C08031B +FE498A5782262AADA839528F7AFB5EC8F5E49B153459C967AC483A55C252B778 +C91E6E8BE22FAC4181B42F9ED1C700A91C70C66F49076B7D7C4B15ECD39E1A35 +62AEE7BD4CACD7C5B4EA7F916A933BBEACF4C6ACA9529192B990CDE2FAD548E3 +AEE8B73C704476E4CEB868E18439136D44AB7575FB194F6D9840A29722869645 +AA1E939DFAE20C0C97BD456CC2E9D4D4A2E9F96F4F86C16C89A909547F9C6CCD +5E540440EA91FA44E9043CFCA142C908B2BF8178BFB8E2B3340E85181C11CB1C +B494AE4C7D41C3B93F70F64CAD095BBC12B62A2E277493408093A25CF8C48F96 +01373F448CFA436CB8AB9F862FEC78EC20F9FCBC20DBA1971E39FD52F35F3F64 +D8CDAC034E1073712129F18F09C40A86A7D4BD22AE7070359652536BC11310AE +E7C8302C184561EC73502F2F1C38C001D068C1D3C49F6438A5F90D98C4B17E2A +B5FAFF44A0341DAF4CDB5874941F6AC36BD5D5272719BDBB0277E211AE9F92D5 +C5505ED7629F4CBC2ADDBC9620B6441B03DFC57984AAB5B432459796225942D2 +4BFDFDB7F2674E95F1893939A633F6E5AF6EA9E6AD7ECC9929D49BAE65FF55F1 +370BE73E380899440AED0CAE4D679725B9138695EED59009A9880E6E7856E029 +617CA09B5971E03AE31B824BA6912379DE9C2F750FC0A519E0C2756540C41188 +F4061B14617CBEE762A1786A458E5365C4AF01C37E65D14F360C65BB48407E1F +6C99EBDBDE36FB60F72DE3E41F426737F1EB89E29354CE9DBFE1AE36D8B5DF54 +F458E3B81D8E7810B3BF89F4FE0B89B018C26E10F395D7D3A17B3DBBBD6AF98E +6C46E88C38526EF162CB329E8B0238938CCE2508A070B77B23479974517228E3 +E3A676FA414E34B92074A512A2AFC2511727C1C6FC935D0696375D4F1168B772 +10012EA35513471FC3EA7395381534588D0E32EFC305C50E374869C3D4DAD6FC +517EA536BC8953E361FC992C52B688F505A06C3135387F3A9C739ADAE9655359 +0CA2AD100A7AABBF9B3AA57B5B6A8345CD1B488474EAE77412EC4284CDB95129 +7F61411BAA6E382568846E2045E4C6FB34FB9ECA112FF15BA85E1CDADCCFEC74 +3037337C10612F0312588A1218BC38BDED887A5F697C7F6299C49CAB1B3C820A +CE4C749B3F8FD9D6F863B7C86D689B72678FECA128568AF90469201E64134B68 +AE31847E880C47CE21C45D42DD70875A55471A5BA17191E2B5FE298927FA18E5 +C774D620D9A0D8B0198E15648D5EA5F95D79F397A329B58BF78DD00BB1C2C883 +25E8E2DE16F0D45BBF3AF107557297F12D702637A26AC65725F8AD14F543596D +F5CD2EDC4A3338772F8A86376871013CE6B3FDB9B4C223877CC101FBE4310DBF +6768D98EBE8B8BB4EF5F1F03E971AF33DDB8DCDDCE90BEC18F893A69874A2F1B +0D12657DB21DB0691BF6663566362966B715F04AA6E8784EC48DAF88C3174C32 +4D748A6BDBAF071B01340DE04DE240F643411E554444D7299E54F767D1B593D4 +19F364A62119AFBAB852BAACEF68C2D6AA170378D1F514A69D62B30CBFCE58ED +622DD4741C2C8281E8CD4B2A1B7C4043712643D1A49FC3A863FF8967E35F32FA +CB3AB952316409A7D029E70F1D17F9563121E8AC32F07DFAAED015F7189AEA87 +F81C2A15F4335BF3B8B7AE4A3BFF8B9F6F00691BB46B30E7F80D0773C49196DD +8C363021C1499CCF3774F8FFAB0689AFA703C599FC402463F7D6051C8D900426 +DA3CC71E0674EB71F671BFEB6380CDD611170967810A0808DAB76EA350556504 +33CDCF08803B0195FDE8050489C4192672F7F771B6DC2FB5486B4134C7E3E336 +8EC6EFF8B80E1A4AB4B45E92547012806A0D090E5F37B5BBACE4FD8D130A45E8 +28617BC4E232465908E83B9C74567E85B8ABF212525E5435E5A6F4ABA465D734 +493EA001A725C10A8C4A879B80BD4DC9F1318E795EFF8519398751D8E76EF116 +49A1C81767510617BE8FD563B463931E688ADF769DAA9DFD5284EFB59598C5D7 +D047F92BE1BCD67CB931F454BD990120ACA37B28211FD9178599E539AFF3EA59 +BEC8479BFB27715DE1D5BCC2DE25A0C58C98A1FC50371554D110D4C7D441C23B +766D187FA40F8D9035884D1D68CD6D383B9D93FF71792ED46ECDE8137C751351 +B3DCC1AF6A34B0F40C0A431D262F3B5240045F10F3890F12C2DEC91750EAC406 +991B30154E150E231C05DE74ADEE20FF7A5ED568D5B95B299B7746B0D22C2355 +5609C02BF71E56683B4C34342BBF362C237CD622A72F5529C68121FB68A7A22B +9D3347B944CCAC62892B1CDAC3FACFB0A3D75684D2D743C31F7032036B3B0050 +7DBD525894B3C22D2F3EB9248BC6A031CD39BEBBF39B1D0A7172091476049C82 +44F43D6C4C53CD737DD88AF0E5CF8F938F79A9415DCEC74C9E741C3E03AB9EB1 +68FD29A080392D50221DD9E9E16AC846C848DE4CCC799E0AD5FD8B83892C68B6 +248970CE87C3BBD6EFB2FC29DB532F2E9BAC4CC471EED27D45D8FC64136E5228 +76168F0F58ED971C24F344C24D62AC4F5C2EAE78A5608EB3F54324112DD61569 +8EC35D335F640AFC6FC4FC1B46FDB0F432DDB9B003555EEC55B9736B48B2C861 +77818D61BAF6222D160EA507843DC5CCC6B001BF048D62CEF1EBBBCBC3987DFC +B535EDB6B4F9F0BEB9F5F53F9E7850037241E18CC0FDE314BC8E0B6DC71E8077 +48571643B2A38C80CB0D5523027D30F730DF83CB11648FD3241C59C9CE7FDDBB +CC4B1331F83699F9C3B6B1397247A98C0E65F566A1C685D1EC4FAFAA990BF245 +72C5708A83D5889E36A873EE3837CEE2E970EEA23AF2BC706F824479739F7E84 +9B5DA2C002FA40EF2FCC92873DCC986EE320F481DE7044B78D38C70694FB8609 +25BE5829E286116590BC6D19F6804FFE58DDE5295F7AB2ECE8E2245CB6034562 +3667C89B04F570876D57CED1DFBA8E49FB9D0C92DE6092F1185046A500CC54BF +F9CB2509B6551A780F57D1C425BB6FFCCB10E1C1B41B3B7E884EDBD7DB9936F9 +50F8E60F6D53CAB8AC5F471932183603527827E54329B65E14F617082565523C +54F1778D70097192DC61B1EDA8F31DABE7A95D0A5ABF89EF17F259FBB27F9DDD +A068E597CB975868D0B7F045141D6D6A953E85243896520BAEC3ABC7B17508B9 +F644F3E7934600DE7488E87E3AF5DBD93AB94E346BF811EEDAE595738B082B32 +F27266ED125B5C4022C29601C7C0E4B8DE86AE8C942B486FF23428DA343DCA5A +E9827A268214A2A47DFF8A5818D5A1793EB1456358477F4E8B20410AE070566F +541B1E1B8FDFC81246376F4CB9DBD97DC4971A485BBD0B86725417CEF973CC1D +242A501B1BBB68F67FA57421A7483C88B77EFB84F698B53F806AF56A0FACAF18 +E0655BE1EB677173F88DFC4627675EA3FFC38BF5E3299C87A0A804D5BB76C8C7 +2E04651F22228A26B0332458558A33CAA9A384702850D1453A1CC559BC9D376C +3F075D8683CB50B107CCC7C391B2EDD543214B6D87E515060A13B56F72AB9059 +022949EAAF5EBFA44D54979C5CD8C7BC064C335484F873CD01D09229C80132F9 +B345E29AFD732A125D177D87188FE35771C8BC29CFBC517B4162B16F7CBAAFCF +E56ECC8C2A6DA88415166DF9F12B4487AF40536A256B448FC89B3E505E3C95CC +A984DC3BDBE20BED379F8325A8556C09CB74B3E9684E500C2B6ADF5E07679505 +C9D52884F2D972876D57CED1DFBA8E49FB9D0C92DE6097FFA6B2FF748F116FBE +648A8D2F3ABE26FF67960D87810F3AD002FB61AA0478A60841B03C8839056426 +017DB115F2EC5327E6D39C78E0F7D53074AE60C02061DFB90765B87DC572C1A4 +593DB9126FC8C20FA44026246779E76BC9A210365CCA87548BF00223591D9AA3 +B0EDC13FC00FB4A227DE741A65ADDC6BDF1A6AC943A60C0DB64F4CCBE09449B1 +4437AAD1B71850694AE73296A054894F4A9A6C7069C0FA4BFB4FFE29397D8ADA +3D2FE80F18F485371A6A45105B9738CEB0D7C86C540D08D499AB0517BF631384 +DDA2217DF636F2CC95D091F18447490B82EE2C64F186F8D76D82B929AFA62E8F +6AA87BB250896B0051A3DB0EF2E06DCACEDF26EBAB9A1CBFF7B22B40FC951443 +856541DAF491678676C866593D9FC98FD7260DCDF7347722646C19DB0DFE2927 +7DFE7D88F87E5E1FD413CBFE80AF523BD0F3954C460C35EB761D3896103FC172 +D52E1FA3CAFE2322B8498947BBE512E5553FED4C2C122F9A948F565EFF5B2F0C +C21201943DA0B2594EE9642D7BE69579642B5A8FC7767F0D40BAFA9E4584DA96 +5824B7FDEA9F6CE917E89E253C6CE1F823C56584F4BBD51730CBE72D83A5FC55 +03178E41F99E3D4C5E9BB4C6F79EB004985B7C110C8D0D18904B61DFAA3503BF +A7EB50D3579DDD7EECF9AC54F1B90CACAB352B1FAFB430AB8928D1683DA1B06B +72A06781AFFE7702897152FDF4C2991AA96DDF4A2622FD64AC6443BAA25D90F6 +A6475B41943BAF2857E87B26F54C43514200535F51B80652A963E46F0F6AA3C9 +5CD690515B24E891CA0C08C5B5EE75221719850266322C576BF8AD0234510891 +11A7C80B3070A8741E7C5946B83C471346394E91B637868345A89F17A48E0A6A +70128C65A77E9ECF4FE40102398C4451865DAA080162D25EB096A30075806D84 +9BAF9B9B991221452EE6690A8CAF3F56833CE0E5AB9C7B653B909CD1083D4BD9 +5A87F540EA1C02BED90F03DC4316C18E638757868B67A1CA5502C062206BD450 +20A97FB3DC8292649AA752C168E01E794969D8B17FF0E88C7F42E13EF85CE0A0 +7D6BF9CE96F8BF7E51CDB9F3448E3873FBC7A23258E61312F26BD702A2FE2023 +6CBB0BF797E381AA5E86B704BA42E806E6238C39A4E90D8FE72F1C35C604C106 +5AE88E593C70BF107AB25E7B3E0304BC60C0F2544D7E72CD1746288DC6820237 +7436BC5777E258894EF6FE9BAF8095C11FE67769717F22A052A7B9FEAC5207B8 +91EA4539A6438E26C04E2B8D7D358460EC9941942B10206BBE5A374E19E71F45 +70B9AF6CF91CB3542A09B69CA89A8653CBC3FF332C618177382DFF490DCFC44B +0F34F73786E7A6F90C843AE02AC9769D125586D80E38AEA3B7CA2508355C5C55 +357262F059BA2114AA78066437CB4D608C77010D57CDD7D026F31F578FA818A1 +B2D69D7C0F4B860EDFFF7A5ED568D5B95B2736944393CE659D5ECC5EBCEA17E9 +49ECC73D7063DD7694F9E97D99EC8C78B82824780A1E89E9B71AE0A7D283B3B5 +D13A5E991192542947BCC311268A0BDAF83CFFEA552154E87CC222B632462539 +DF61E35F61C3883AB656B8E46330EADF4D1CE19E46C61A0310C5B83A01532AD1 +DAC25B1C3ACBD801925AEF3C1FE9D01061E2A001EE1A2EE7A43D764191EB7032 +FD31080237AAB4AE0F477DAA2058C98E6DCBF33EFF5E9E3B8CC75D15C659149C +FD55FB93C2941F930123430430EC1E143982125A832B17C6D95E984D5A4893D9 +653E017D1B67867DC5B84E795DAF38FF5BC7C5CC550D9092AB831389BD034CFE +3B29C526E7BDEEDE57851C8EACACFE70222E55B6A1699250AD3E93AED479F686 +7D3D6141D27D17E20026B2A4D79F645A84FA113DD8E75452F00F4E8E37B00323 +D23A56BE81096AF698F5306F011F270DAB8DC017F4549F68DBC3B19D35114656 +F70A3D10E2999C8E879BD2BA34EF02C2E890AF6D233C175693BF32BA3B76BE0C +A8D09750C7FC4E3E872C396C2658D350FF88E3A08803CA62D09DDBCD646192DC +A27545C906F776EAC3D3BE409550B855130DAB570F8AE47C78F88FC17F51ABED +0342F782EDACFF25AFD80C9BF2457B2F83078AE271E75C74D4AE8FC6871E7862 +0A6ADE3CF3081E36691AC6B06583EC522CEDD5605410A9D0F75AF6625E3F1FE4 +0F08CE6BC98F9EF186FBF47EE2D6DDE3EA7FEE07996314D1094B4B3446A3653E +5EE671BE8FCEC7BA3F49702017E3D8ED76E456262A6871A976C9991C80629B5F +4485F13B0A45B2A0A92F445808B47EA2C637DD401F196C8219EC83A0375FDEDA +E5FF2B95213FE3D0C3C756972C59E0F88A65A6C24A744565C29254CCFA7698F7 +40EDDC32332AA291B062EFD9294597325D79E353A2E544A2C03BDA5916E7F414 +347EA959F86FA74096B7FC98A17EF73F16D91547B4CD686796FD021F656342F1 +3D5B9E099F5B03C6F83D4B0FE60721BB90B50773D75B58EBE0825D89AC3DBA56 +C10C6873674DF56A1D319B10D78F3A5998D5CEF79C0CEB5405BEE722827F5FA2 +35FA6A0952F2804570C5906FDD507D60A3C9A7D3BDEF9BC45805B1F8576A4C6B +176FD7038B67902268C49D907B9CFDACF013B31F0BE45F6F0D0E3FAB90041D2E +9B59D4D24DDF18794F185FFA86643882D2DA11396330068323F3192906DBA39F +A3E86DE2A2FFAD6C2AC66C3AD44438D223A0E9B8465C89448C54F063B1416614 +EC8E71C8F3B24A911143E4C82B2C054057D56FCCC5279414C5E5557D55AF6CAB +835058D86A9431660150E8B23347E9B2B6A8094DF98869D1C6C20A3EF3E189E7 +BBD0A830DF64EECE7D5E9B25A572F49C88A5EF038E0F677E8243F2CA8FD76167 +D41879CE4776180AD3D5724CD70C4E0862670966CAC42437EB5674223BB6E36D +44D23D8183F9AF2D77CA29253B72CD71D00372EC5935D09850085B7375DA64B0 +073305D32D172476674EFBDC441C2F6B42F563F003AD9770C18D15CD18F5415B +121C329385580221A3661BAFDC92D0E9BDA9F39ED8D9A514B5FBB522CE90D842 +7ACE99D14CF6E9BBBBD6F63634811E983C821BC4D3480630170949F44E88725C +29A51F73437869C9589A70C4B16BC6D5E822402E334B973E4BCD554657E37A1B +E28EC553EFF1AF7EE01EE5047D2F359F011E616276819EE9F80D018B39ABB295 +256468A03C89BC13A795FA7D10C68AEE434A8D26A3903FEA65727F00A844E584 +FFF684EEE4DEF18CCEA55761242530C4CA03B682CFE4792AF5FAC45849D7BA85 +EF768ADC5639F573968348B5BF772AC380762D9FC7E43774D3BE776C540F5975 +C9D3E960EB6D97823155C9D0F70CB3522E2D1E3B8A6ABCEE95AAB13F363D8B3E +75A71F9C0CA700F31A7BE8608E7C37856176372E04A572D98A8E0638A33291A9 +B293FEA1FB8D72F2D17F1D7E8696DCC2B65A6779F24FB4E61E873C38C93733E0 +D780852230476420C1F27D7EA6533E8038EFCC43318EF470376E572A1D87E579 +A81EB65BEFD5A6CCF2344B27CEEA739223890444B0FDE7EFD450D992804528E6 +A513D5115E1E7AADA5703EA1DCEDE191C79507B7D3E756E6599CB93D00C8D82F +A9D0B2F91FCA41D64560BE72D44A374F012636C7F9A11D8A9C6A935983CA5384 +C041CD3B70E99A76FAD522ED503FB4E97B99356519FBC8E7B26F542777737A34 +E6A2BD86A14CD8EADC92375180B95AAB856CBCD27CEABA28C7AED111BAA348DF +FF669FE26CB28F030283F6038086B472EB50D30DF66AE00FC3BAB7B9A72E75E4 +635081DEEE4941F942F4CD02B404F3420C6910598B13A8412EE7D45254EAEA25 +A5222A72C9A34E7BF8BCF44EDE2EEACF5A15BB520DB39A4CA101E4A591E3EA0D +575B66ED51E404A1E2E8C7434A434C06E781F2278FE8025417D61F3394214BF5 +8C8F9ABF42242594929623AFE46AC5987A448D43F81E94503753B040DBF5214F +FD8809C5D84DA58BCBE0C179B5EBCF6936C685CDAB67019F0DE870667062E864 +1708C51749877108E8C97C1149F6825687FE6076B0B1A49B838C75C3B822D74F +ACF7104211D6820A7A424AA2FC74331E4E3FC1D14D39906778B9FC192DFF979B +A255683DEE5569940A21907A2BFFF2E7101DA81BCB0877674F634EEC6E7817B3 +AA3A92EC4FE0CD81CAF050C7CBB28E56FF1636B9638E68642572CEEB85871A25 +CEEBBAAC153EB620890BD096AA44D10F05D4001ED5AAC061FBA68649AF333C87 +4CEF76E6EA9477C6C2CBCB1DFD91D319547650680D4F6C4136839EE282BBA1A3 +EB9C0D8F1B5DA9AC6E845C861BC53FB51EB2A3EB3ACE78A38276B648DC1CDEB8 +CEC98485546ED83137A91CCD7D7840BC93AF2FCE4A2A8B0334CD02152B6CDBCC +962B62212BFB4954FAA9540ABE8DD8A872DEDA1048E30563878E452DEC7299E1 +33D7B62801BDB9461BC94DD8012C78D072EFE922163F15DD3F4DC5A16F5D7A6E +8E9DB74DF7363ABAC1363DFF6498C814CA380CC4F4C857132A5F0F7C68912735 +08EF1CF6382C87E7E424F6FEEA485E540FB9F1FBFD8BF28873633AA4FFD1994F +6863CC5CADCDB89C430F3DEA7DCBB951032D5F6BDC170A954EEB3C6C5AA5BDCE +D9696940AA97BD3D693AE971132839E173D76ADE816337EADDFFE9BC4333F7E0 +8D72621F155BE6B9E69499F1CF6A4FEEEFCB4952F83090B9A13193592A415556 +95DCA817CE708BE6FCD58A26D027273E7B842A8AA78B630BE454A77BA5154CEA +638BDAF136E6698AB8728249801962E217C036B23B72B40AC9DB116607AB281A +A83C1499C2DE82902C47F903BB52CB70B082CEF62DA48F51D5992B345083C36B +6DB18E6272AE82DD72FC540796356AB41942D0C2C810CD51ADACE78981516951 +C2CC289FEF7E08D135848F1D1D67A9FAB7C4B5219867FC7683E86F22F8AFFDFF +4E6856F5764DAD25F940F1087DB6642F0CB3445675296ADCB900F45052CEE23F +00D2B7D1E9811E3ED74C942123F1816EB1088CAAA9A8529E370EA22547401CE3 +044565EB8D35E9AFF8F0E86304151A8AED108E2DFA8EE2B7499A3E745F4DA168 +B3EA7E8DCE99D2F939477A73FCF8B0947477049E494CBC7FC90CF55BE7CBD741 +4D2FC18FDAB59CC77E88CDF3E858CE147A4264921AD7BF5C215ABF0718BD358A +748C3323B46C6E4EE92653C84666AD1A7156488B3B155AECC31F1050C898C982 +867EA38BD76DF24136ADFAE62E13C3B2DC0E3C1F55AF76C4C158133F830205E6 +EB0561E4984EFD024ACFAE79F18BF80DD7E8DF883F77CF23B8E8B59A979F8EF2 +85937A9083E8AEBA82DBF4CC88EEC22D6ECF40DEEE39DFAC45A6F5B6137043BA +691299A5DD7438B5F3A71789729524AD6CC85AE8E0CF9EB2DBB87490E69F69BB +60FA45D7468B79C494DF227204B3D7FA890F5B40ADC1CA8166DFD7E99995D74B +1F57ADE1C20C3FB69238C5F8DCDE67E2BD7AC4BE6E36C7B782246293E14127E4 +B4ED76273E522863DD4F7A4D1E910F8162F604DF4AC205FEEBB70960E6C7B9ED +51E796471BE1FA847B93EAEDE45C367029712CEE956640F462DEA26772DEA12C +6DD33581E447C0D2DBB60E453241A69119F3E596D1A65F82EF1AF195A55FBA33 +54C81DE12A800906D1BD0D1736453B1D70C3540621525D71A6 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFRM1200 +%!FontType1-1.0: SFRM1200 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm1200, tcrm1200, larm1200, lbrm1200, lcrm1200, rxrm1200. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFRM1200 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-185 -320 1420 942}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E48759F33528B839DFD4B92DF049F26DBA77FA20B6513D +285BE588908C3BAD6A1BF20F213E587F1372774EF31D66B237AD60712D60BCFA +83574CC5F88A6B4676356ABC2DCCBA498F4272476923789659CA8836F2FDA94D +38271FA2CA8B77D7099705602FEB41085F6674B7AA0DC588C9ABCCBD9115601F +CDFBCD7A8E3CFC8B1E718E576254F5F05FAB25DC253CB561EC3604749243AED5 +76898EC99BDB1760B0CA75CEAE3FE6FFF1700F64F585BE9267ACBD5F155F3122 +732792E17022F23B1F46FEFB0696E5C2B78DE0479F09B6512035B9C488042B62 +98525003ACCAB6C8F36BBDDBF6E82F5CFCCB418706BBEC1D4E42086E70847405 +3ADD1383ADD34574F2C6C64907B0561F107A259A649BB525F0B74CC3B1F42412 +C4F81A7ACDC6A3F37DE7FC06DEF21B9821DD39D75432AE3881E431569A012092 +38FCECF1BE90B0B199DC4D56EE18658B2818B69FB6836486BA302CE7F6EB18CD +7AC5AC6648097F65C8AB851E9BD1696B9703230711F68FD82E1DF92936A4B1A2 +CCE51645573EB0E762D68A417AB6C0A2EC8756FC9BFE5972DFC4C794E948A970 +918BBB1BD7B31F9B1B323EB2AF8D41A153CB1B1511F43560825DB6ECE30C16E4 +902BFD1EFF59F06984F36F284553AB3F2C7901B37ECE058F5E477EC9C629847E +1C7A3628DB7C47C099A0DF53F05ABEF94B2720F92A5E53C1CA065DCC84E2D64D +881F9B803766A5D9E12CD0A193F1A8FDD09A1451912F4A74CFC7CF01CC66C12E +7030B09BDF6929B1C79155F3D60B2E14B3793C85AB6C92D88C731548BBB34B38 +BE68F780967B02ED9D844A6107AAB682964DF17D8AD18065587C3B3FD3EF15C2 +C1F422CB093B96FB97DB3C7DD9D70D7F90B47F52416C003AC9232EEB7E837FFD +39C349477DF9A9CA98BE49CD051E760943C7C7350422FAC82C3746E86F913D6A +CD501148A4AEE64F7F6E505DB74FE36BCAB193C69F5A8595EA84A6EE96D7A6CF +2981CAF8B4E5561AF40B1A50491F896E03BBC4D491D27089923DA01989805400 +63F2385767A972F70AB61C033982EBEA90B8C3F7F2804EA60A7E4B62BE88A080 +0B154D05B35CA24FEA18973DEAE9C0B41D3E68CA744721243ED158A4E8434D73 +AC26DFA4601E0BCC65DBF7DCF7970D19A59E8F374F06C7E8832494FF8DBAFFF3 +C67C1EF53F4AE4ACB34841E197EE2E537D8BF4EDA2E7250CAD258F0C4FE87216 +77F6FFFFBD3D43D4B260371093FF3D0A3AD175ED8B19C61B51CD4245F674E322 +693F54A2B9A0A8C6E374CA771FC75C7A1B67FBE8891D68A761DA5F9A30FA7043 +D2E8EE0E6CE35B7CF75A8B3FFAD4B3122CC9594526FBA26021B7CE0EF1F534A5 +AEAF5E25DAD0349A965955231F02630D51F008020B23C3575BA254BA38BAC412 +0550D0192CDFA1107C4676A5A0EAC23087B169262631F6D3AD4821E2AED0AC41 +01D0EF51C36B43FAFDB1B5EE7D271919B177610905562E926658E79EBDFB5772 +DFA685BEAD2FCF9AB81C0D548F4E53B9D82588C5298471BC814EF449186B4B78 +E662FEFA8CF15DBCB3DD459272E79724F6F5F52C89A9F6C07714FA4D477B4F17 +C68748F02A7CA455D9F6EAD267511B0B0B2D33F18348B5D5E8AD261878E85647 +CD5100C91D344ED6CB6F0E08D09F80311996E8A30AFF123B5EEC2E0CE36F223F +E59EE2AAD6DCE266E951DEACD1EE1AB160F1F0A9406E35FA76EC8AFBFBDB7BA6 +E90924D488951299EC32BFAEE47366095EC336A8F52420EEA37A442271699CD9 +BFA979501D4AAF1117C486BFEE84EF32C05AB557C95D9892D3E1C0D7FA6E43AB +2423A87C00EC290A9C3B14BCCDDCB68CC671998C305D4F327AEFFE1C62608997 +8C8B154EA30B62E0B067BF9DFEE2E0E999C3F3149534D4F442750C6EA111EA4B +21D33208EBD6533C7080F1E06217567E4232E926935DDC68DE6C781BC3A90F49 +453D77002F2694C151CEF64D071868A4CE3EE0E1F8DE6376EE2F2E9C528A2E08 +5DE98ADC8C3FE6A833E4F1138F534C157498B4424FF583C132C2A7917DDFE923 +EF6C11DD97ABD94651E556865498019581C314E5AB466B3679C080F9055B426B +1CEA797D07D21ABE6A7BF9718A5AED5F1BFA189AA0AAE36231DAB9BD09D47C0A +CEAD474F1118F94E0AC8DDF81D8FB730E04F4E79EFE387141714B72FC754CDB8 +48EBA83CF74E32FB4D43BF510F589FB14A50741FA43D1D5BC06C80CEF22DC62C +985B916BE4C91E67259444C21F3A790C500B0F39315EE140F18CF527C109AB89 +6DE6810824A44842A5E86E9D2721E619A338559E210CBFDD7F38ADD3CA5E7FC8 +2E2753CEBD0C96DA06897FB6FBB9B91CB421B7135D3DE0E450FDF55B66D01BD5 +9A88FF2ACFCFFBE037E032A0068DAAD15CE0627DD088795C8B6977E034C891A8 +CB5F2E24B3A8C0D5430AE0C3A90864CA602312E8DDFE23EB149AFFCAA4C6526A +E5DC23569E8C2D0B08A3157BEDD43A41ABF0D1B3194304CC6899968A881B9F5C +42891499FDADF3C21F06788F384091223B767477A8C161B1E4B2A1E3F9A2F51B +416A08E562DF10BA6186C7E8251D2D384833849A565DACBDDAEE1AE67FCEE64C +E04B1D7E0D12B455E07B7341CB43730DB05E102C69FC7A4E21310C899E84A773 +A3D710AF194583439A94DE450B4FD774FA623F7562A1AD8E5A6D22198A65ADDB +E9E36CBFB43EDCDF27A1EA8BFD930B94121CEEB95DCF7A42FB3F8782BDE021B4 +AC2DAC42E88EB42E427A4170E6EE63CED9F3A9403583C928AC4173A43A7B825C +2C6D18D6C6CB41126984FFCBC3866DAF29A67CAD37CD2D4D036337A1D2AA8496 +C5EA817BFF80AED1AF55DC35DD4924475D48F0E391AD50175734B4CBBB060A0F +1F994738903DF60A79D46B3883938BB155475F4D701157CAAEFBF38F51CAA601 +BA83B4E0A4D5D7F55D3DA106271029E32852A3B353B1E67FA2DF73210E56DA81 +E33DDD94D67FB179A162279194A4FCC106D9EB30CA4280F594CFE2FBF0567790 +6C9516DCBFE173414D3B3FE900A7DEAD9637966807C81751C53106C9A4C737E5 +A4B2DCBDE748177BB741DFECE5A3997AC78498F0BA4F50CF8DC045475206CB28 +89ADD59053A05065C63409567AE00FF68B30306009EC3147ACCB855A1BF8D94A +1A3FEE71E40FB6DEF1908A11690D08E28822E7347F983B350400E87A207BE1DB +FB4DB60AF26F200F4BCB764F95E942B0DBD54B40F95492F7E86F7F453E7EA1B2 +37D81F33C4446DBC2CB634A324D00985EC53D012DA2D13F4BA5DE8E4F4605FFD +46359B746FECCBCD3B3E848BB7E3DDCD03222B421C8708721563C1C69BB4E6A7 +64F340ACC879417D4499D22E151CA48D07852E2B94339C5E0220FB8FDDE74F23 +B868008DB97C07F0011B043066ED036F14E289EB39EEEA3C50CF5FA0C948B0C1 +820ADBE9650012582A496F8C4DA01916DBFFCE6F371D04C19C3F1AA8EA33F541 +27CA2502A73D02684CBA5C4D93E94596735BAD41B2C0AB206549CBCE7C9CED42 +43271DABB2F28D1DFA4D2C0E98D67A1F3D5558C30D5CD80D33EDE9B90F9DFE90 +525DB68F9849892A994DD3361E7D158BCC380735F029CFCFB2F410C55C0A6264 +C0D006978CBDEF1E3432D5ED782D0A719299437C6332293CE7D40A9B886A4898 +B7347E8A840FE39FB96CEABAE60C05B134B8887059AD56F623B04E74ED4454A8 +DDBCB9BA472BEC39E49ECCED4257918EB281AC095B36ADDD749C8B376760CDB8 +41089CF30573607A0D7103A3A34AF1A0B3ADF35D8AF8739EBE557A32CE4179F2 +DF2FFA574891D4C92B79147A7476DAE2FC8A97254413EDE4E5CD3ADDEC125FC8 +E450D825BB2158CA8958EBFA88BB7AC68A26630B3B0D35B3F3117D303EA4281F +0AF776D75DDD2441D92F6F43148B1FF3F937E9606FEE66E312205B73C4123768 +69A676906BA08D8B403BB53CA7459D57DC36C89027D2AFB0793BD19E1BFE3207 +584B11CE6B9D74B0A45BF563FBA0C2582BFCE4C14C34C363897FAF55FD03B84B +01D4ACB2902AD3C45E85337FA0899B1EC7F8B737DD3F5351E6C89BDD39DDAD8A +0F8F053AA4172FEC24DAF9FB3F004EAD08203A72B49EFD77E43BD16807DBB52A +7030311C04E8FF006813C8DA871A463052A949CAE5B3CAEF598F0FC4FD7904BD +518D62D687042B59F9741689406DE2CD65BDA342F646AD31B2B9C45C642F2391 +55F91A1C0D5D0D27C439B6EDE43A2FB584A30D3840E126C275621FC9DDDFC11F +715B1A2450A41DE3EC37BE1BBF132DE70D992D36A7D4D0DDAF35424D2466FE67 +F4977F3144A51D19AD3A13FA2805EA65BA0DFA1F5945D61BD9DDCF50F0EF1CC8 +F8CABD064949F57AB3850FA4E58C2F322A07160D28C43821946D36240A90C505 +CBA4DC908A0C47C11A1AFA22066B2ADDAD77B0CAEFFA27CA8C9ACB77ACDF8657 +9FE6F14E9CC2B83BB642DA6103CFD63B92E85EBB77194F0EA9B44087B540F62C +C73A5E548E455C0FBB29DF2FB185488CDE080D9F718954D4C55BBCB42751E3F6 +3AC33853D5B72E3A6E5ADF4234D75B1C8F3C4DC88E75571699B2F10CFE04F29E +2AB8906D041F25267D56FD69EBD2EE17EEB9AEFE78063DA2B2043B583F6BC297 +629DD1992513CD2BCCB313A41F9EC90324A6667BBD709234D73C596AE8DB94C1 +DFD6B105FC3380A228469E6EE9E2F0E16AF779DB59945FA66EE5256C9FBA61FF +86610BFE93695133BC13F049ABC3F9B6AADDD481DA478CD827DC007B6A166E61 +5658A2D2145BE010FD278D0CE691B0075A3364A47680E82D0E177D144B9A7176 +583C70A2F51B663AA366AA8B61B3D7F572BC164B3E71305AB9DE7FA83AEBE42F +1F7D4AD8792DD0F08DA33F13C39D3E64D9D13660429D97CB771FBEB2856E8A7A +552AF39A3226A85688257A0ACAEA309984BA2ED3A5F40ED864FEF722A5E8E426 +EB2505661FBD1264D89B3FFBF6CB06BC5C4295E498B54E4DD9AA46ABFC1D6F29 +3AA981EA95D7A0B980DCF55F2E61DB62F5D162DB7FA930BFE08ED563676A6EC0 +C35157AFA2D4EF824E4E8DF8744CC6CA25AE8C233D2416AE3F39574F51AABDAD +BD1EFF555FF7210FA21D59E845701AB7ADE117A3CE689AD7F377E4C975C34471 +7F52C70B1CECF00ACDEFD27C618BEFED775A2397E6D2ECFF25A697215EF76654 +DCE0D508EF485539C7EC79C2AE864909E4FC39EA7D93D0487E79F631154B996D +EC7B6100AF3A14B157050E4F5F1DF5CDB984B1F00B628E30A9CA12F0696F486E +E01C4F980166B39029FF9F7966028A1DE6E4357CD98F9CF036300057302416D5 +F8FCE37DA2DFC93C5477DA020A9A981B03EA481114F398247FCBFAD11510C1BF +3F9D58F7C14D9538DB36ED1F9AE7F2F8CC1E918EEA6A55450CFE19A5987FA54B +40D366F65066644CABC4501626D8D5662A85EE60E0512D6880B26FF99059C57F +4AAF4D3A873971D49922CD7C3731F4B3F7EF5B1112F715C20CA744F9210BF164 +48A2E37BAB25E1C5B6E79AE2D3FE59582EF04050CCF0A0D81D6DD06DEAE2D329 +70A8E069121F3565F4411D5C68580DF6661A5E224350C95D76F5A5058BECFA1A +A7C7D2656B106857BA9275FA2CD77627B53107592EF326227FAD7BFA8DAF3697 +A076A9D67EA899B19687E505F0861ABBE0BFAF8D89C74AC16305389F110578A4 +437787E72E52BC9461950F9DE73D2FCC52DB10B61D47A808750BA94CE6D34618 +EB0B28D0D45CA41BB86F9EFCCB1509854119456D2C4AEB8830C92F99CB8EADEC +0CFB1B619C47961F811648DE1276B0F2BA2632BDEE7CA685090DC55B6766327E +4D75577537F756169A76CC9F2120DF58AD198056730D5952761F1507240B9C57 +773FFB718D7D9DB407DFA89DCC75DEFF6415EE850755019E7CBDD92563CBDA13 +4FBD216D3ECEB11FC85CA9E84BD2D26952C74F847FE19CD8A0A8F478E71855CE +DB467AD76C2C39A36A120793D7C13B884F46F8419D057A413F75BC16658CA60B +A8F45DA70D25766949D3621B07E71C8C0A7926BA7D24F59CCF307F6C4758DAF2 +E9C9C5AA39023704D721A6C545D455B39F1352524B4406C3C998E63FA1B07780 +98D4F8322AEEE5C85CD774A47F9708368FF2F6006855DC308FABF1714CC0D532 +D40DCEEB189A75A395E0E24F4C186B6AD744F9212DEAEFCDB2A52A8A4232D15A +E1B9773B8B3651F379CCEEB0FAC40A823273EF4BC39D14A9BAA7CD95AF7EFDC6 +35611ACE79A2B08EF537ED32639CFA3A3C33B647F1FA7B4EC4B319959667251B +BC5D810EBE122AACFEA9C9E884D0FDDC56411BAB23A8BC15E69E06C1F3FF98DA +041CD83BC8D134C84614F42FCE0912C20C722E4D3F85ED159AAE30F45B5596BC +BC0D98D55F11AE5AEEE8FA9150DE4CD0EF6309A8BB7F6E7846D73CFB001440AA +E629BFD30D926691B79CE6954850258830B85767E5338AFF9EE7A2C46CCCA28D +237646845B7514F58377DE82C1F3C6C3B945C65C7B77D7A2136551DE2AA7134B +F12ACE4EF032F1EBBCC096D61BD7D1AA22DB2A89611C2527996A2384F822BF82 +880F7B6CFF64F6A777CC39F81477A8BCF7C9E0AAD343F57D447FBA3E2E33939F +289D755F4962D1038DB8FD856412EFE0C12ECFC8F5A8DD101911C412C90C0026 +3C3C9F1B508520C8E2B001F1F67988F4912AD08CC15C161C71AF869FBD2B1597 +EA5E291A762322500394CE8ABD38D2991FD0035CEA0FD5C2CF85FCFA1CE77104 +17E2815C787C37A4474C6D5EC297192C2CB67857D39B489E5444CBE9840CEC82 +A0CB6DA00C6CECC8759000EA6F976407FAA6AB0801ADA133E6B4D9FA39806747 +77856A3CE6A0389D6BACF7EAA2003E9BC742D09AE993013300CCF8D475B135B5 +64F1FFE56AF2362A5061388B92A6E89AA0E77FB15F34160BC07EB4CDE5F6B5DE +DFA0F1CD8C3B4F91A5E11EED406DE854CD5AE2C7CB5FC6905CE4812937D461EF +019D52AEE6D31124D773F1D121E834CD0FDE04561258C31C5159E078F0570F59 +266719A28098F64F706B3C64527CBB19FE1F2563A70D490E0BBC1CB0CFCD5CF5 +A93A375C05DDB077DBE6781EE58B8717FA0725E18E2BE8B36BABECED8A37B7BF +3AE8FB789C7531FB07C3F43FECB1AE1DEAC9A2EA4F990890CEF3039A725F7F84 +530D75D9E1072D4D4BCADBD985237C72E0CBF274508ED53F194AC3A42B694B31 +6E7527C17A71530F2504362D3CCE9700D217F0458BEFC57558171C332CC6AEB9 +33FCCC34226BF06321F4026AADC6D09F62C35CB0F6545EC6C6AE763CA422D677 +3BFB49E014BF4479FE9FEF9BEE08C93DB0A885AB904EA0F4BDF42D0EE379908B +C78D3B2A2D5869115C1E059A2440412E36277F0CD42A47A500BF36DA202C6A35 +909BA598BF2F28CA947F55E21953142B939B7E03DEA11AE3F83E01AD1DDE1AE6 +9B3F433352358EF0A3BA4222F9BF182E876B0FD46A5997D87A42531D96011E91 +8AD9CF6A1B1F7AAFEAFAC739BA73B977CEEA1EBBCD7164D9B669806A31122468 +1687D4D5857311A80A90C829C9DDBF3DE43FBEC565290341D0300CDC0BF37B56 +363ACE401B7D810BA7902DD21877EFE4EB37BB7B802358B4662E40A503A13AA0 +DB11368DF7F7718BC35C7F5A2C378C4088A4DF07E621A07D38A9E24821DB20F0 +11636F50CC2D430FD861E3A8381E4A880E5AB15E8882991CFE0C808A6B7AD79E +A58A31502161F8C0D238BF6BD40FF1476BBF4B3AB9F3F8A2A74E70470AA5B281 +ECA531C04E1E4F262C882A4C7216FF46354221D60023114AF5F6119F3E31DF84 +4B80FD909453C627F02BD6A73DC0BFA86407A133C3F6ED98779D17B787EA983F +6BEE30A0B65C6E8A06ED5CBE949EEFDF0D51B2F874A2E19A6CC042680EE16BD2 +C8B44AD71187BE791B48FC3A1D8DB7E6FA7E5146B69C49C353356CB48F26BB4B +00C8BE471C0DDB42372E9A4F0536BC0FEA04A85093F816F894ADD5E7E522D4D1 +2B1C3AC4CE272A31A235CFC073FCCECC10D9BBD50122D92C435281D07AE91DA9 +D4E5F0B8B968E9BD1E90918329C46B65A387154984A0FAD51092859961557586 +C9CA324FDBC4E8176EDCD31E8912D75CF681B3272AEA4FC882955105AEC38EE0 +3DE7B3ADF7195718B0A52B6EFFD7395CA45DFC9252E6F2E278071B062E3E6250 +7492844633D7CD313666C0018A93BA623B59103BDA736799FB7C19B6AB508DBC +DA407B3C71B6D37FAEA29EA59C0F040CF9D08057C9C9D16DEBAD6C6E05768121 +D331D71DA9FE873D15F63237901C934D10725514567FEB00D43205EBD89BACE1 +C1D130AF04E8DB2C1C80CA1E51B68E3F7677F18F577B7F8EA6A1D41778CDA124 +0E032AC324DE1424D2420BF2B64E82CD17A1AC1630CAB5C9AD96FDC54B7FB2EC +5B5A79EE2CF8F7473B92B508424D98CB36FDD4BBD261234D2B6AE5D6AAEA9EF8 +5395A16AB3B904E980E2173FDEC779DE8D7BFCC763CF6E8862F0CEEB631E12C4 +8F10167B8138B31CC33E27382663283EEEDB8872BCEC5B31B7B8FBD382CE9E7C +4BD49AB6222AE4AF9E2AB34C42EF173E0B55255BA268E8D4D674F1CED8D74FB6 +98F2DE07D55843A572AA50B34A1F99C6F1C21E2F277E0C1EFA7E5634C3B6D43E +0BBCB1872EFF93457F13416EAD40188E24CDFE2779CA6D4E5A20BC26151D6699 +2481CB09448C465B3CA56053EC38986EEA63640710D369A3756DBDE3D4A31A38 +1127E1418483CADDD891B0C319B82821BF24CA6D6D4EEC20824BD311D387D45D +7133E73A7FC9B390059F800ACED60BF73763B9138370D9363899F97A92EBB641 +246292852FED31B851F83DAA632E621551A58E505C7CB08F81430973E848F843 +E416B3B8F14EF7104A549929A97CE2DCA6C5B1CE63FDE9D49A52B0512DA066D6 +DC64FB4999B1CB02B534B9F2B52D8028486C433FFD9BB0E4B0F10370B0AC0D97 +DB0885414AAE0367B180F4B17BB167CCD897B64B73C3EE484FD62049353DE521 +C0AC1D7B3A156AE2258B5CE872072DBC5CF82C166F964C45B67D831F4DAC7FB5 +E19DEDD5400F5AD7438CF719D7A6C59C616076D8EB983710DB50C92EF9CB6BEC +0C257B8A4038FD870C5BA165EC014BE2D781094F0C49442650EAB7C76D13A4EC +A2771CB4D1698B2FAA7F2B8C36855B511453A952D5EC4293915F5AC9E2206F64 +6167706041DA5923992E463158141E2B98A8D2C6AC693C1E1AEB061D2F4C2618 +1AD29B41053DB6791C5E9E3AA50CA8F8CE874E1DBCBB84ED82422986BDE5448E +51D827C06681A6414288294D5EC8D77C109EB7E38AEA50796A9EC7F238D82A37 +3E44D1C7E1655A0D1979852B0CF686F8D76D82B929AFA62E8F6AA87BB6AB4A74 +35D7D06BDCEBDED922D68614EF808A623BA10EDD037D4C18F9FAC104D598B5BA +EB0D90090B1F03CE2D2E26C3C6F029480C006C436A844B59BF36F70351F9DA69 +CC0ABFD7B4C1D9CD75EB5381872F693579FD3051615B62AEF4155A50A03B5D6A +D116475723F84EA0EB9D79A6EDE949D8F732F745DB5BE5346001B95ECAE55528 +267D5EBE398172F5AF5D6C2F29105B4FDB78466EFF09DF21FB10A43D7EF0A6D9 +C24CA4B282C8E31C15F78F51E932E96201932071393EDE16A4D3F5FE699F33AB +75FC753F3197223C9957B4B8BD49116432FBD8BC0125E3465D42765FEABB6133 +D42B6866ED2CAB51089E2AF6B0C833D20A5D93D29834953438A7BF83A1211129 +00203797A195EA5C2F290D7485B0BF57C7665B046A53AC3B9FA6618A09DB19A9 +68EA0B45EF405CF89549E663B43E98E8DD1139DF083B5780161705E23ABF87EC +5AB741246292852FED31B851F83DAA632E66504DD2A83DCEE4B95082A10E8E04 +BE40770A60DE7BA3E215506BC7EA13E2B29FA92D229B997795791A5A4C11EACA +DC3D7497506463A93FAE9834801385E1B83802133A0EB95358FC6A6F17B9F2BF +304D1D630D240D8B78F039F79CC2BC2B2BF923DBC1F1CB91A5E733D05AF8E86B +2E0067DB435D1A17394888F291D7F89C96F064278D14649550E25068CB9F4DBF +B1FBD4698C1656984DB029444F6DE6DDB7E52BF3711ADB30AF5F8DB069FD9820 +1ECD2D3BFCEE8B28304D088740D5EA78FB55C05B00D1E4F5E146BB4F318CF966 +417E5C380F5E4D6EF2AF45C8DD23626404329268F44038D77D57AD926DE1889E +B8E80A77ED62759F559CB9413869EE89BCE5274F718632BBFA11EDF3C90A08CC +BA827E090D204C72217EE217AFBFDCB528725DA7395222C1E9B99DAE134466B3 +4969DA85246DFF8B3E144415C52EFE28050D9FDF2F4F091E2AE2CAD7818DECEB +A3A6F99640A292E989037E08EB376F3656837FD042EFACB767CE9029093F931F +DA83D272B0223D7747A41D0AF9AEBC1A54E9F194FCA2F75E27E8ECAF1BDF49C2 +FCF5887B26E6B707AC9F03E53809A5D9837D99A0013DC3424850C00DB46C5F38 +7BEA1A5CD1B4A227DE741A61667734E641F08EBE90A96D0B1E140095EA281034 +2EF96BBA81F90A2A26C15B61C06E685DA7F81F94072868699857A7055B3CCB9F +78A3362D93C50578D012D86D63E9FF50B217A204CD3F2B1FE412B3483B4E3E83 +CE8FEB55E9A89C2D6FC0D3FFC924672E41864D5579E0F787BD7DB83E7F9C5E2F +62303E09CF2276760032BA0E1B11DADB2DC08CCBA1F02FE8C83895DF66CA024F +162655033E75A9D0E3521500F73F8A2DE569626641AC4A3F042F9656C123FD75 +3593F2B6373BD74D430B799F0EB5477889DFAA9B0A2EC1A4EC1914422ED8EC63 +0FD949B7EEC2606AB3436200F9D0C917687DC1E471AFD57FD3D9634726ED59DE +E755C086B9FF8DFD39C294CCF42360A328545313EEFCB7C512232E0B842216C3 +3E93BA3AAAE6A0FEB3FF04F3FFA6E91E9DCA145A51E9571771DC8C76A8F12960 +FBBC72F43198CF52A02585BBD1019A9E58D1EA958BB8AC1EA0D59CA135B69808 +AF7B6150327A8E376906652934045E4EC4F5E007CCCFFA67B1BB429E5E7CB7D0 +88AE2B110B02D379447D2680891A23677CF06DC2349925CB0BDB315CE274CFB1 +86696DB34077D444F88C56AABB940AFEDC511F8B1F1BF34055260F19A471057A +2993AA3BB06D0B81560ED156065EFD5E636FBB0AD7B96A78AB1C37534E5C749A +B5E575E26F8057F3713CC14A52EEC7794366F6F4FA2F411726751C4DE2470D2D +3CA07386A035608BB2F37BB3E18190439554CD73CF405215F6A4D6038A582EDA +7A954A1C36D1C8E3D582A3A03240B72783DDFA0BE41D6060637A09C97AD528AB +C200E7500CAAD0CE6D3FD1BF868164326D72FB0EDF1A11006C240C828961A4D4 +698ACB3D0F2A81702C0A9B06F9041319034056D85D9D858B67EE75D9D0E7E6EB +689A0EBEFF8D158FE3F826811A5B86F66BE7285DB5F7F77ADCC220E8A12FAC89 +8C855166128C5B3DFE44FD37DAB2623067E7E16CEA40DC4D294A03E37CC00946 +188FBDC32A12AADB6FEEACE95222A120C3CBCD6EA6948866008EB4D1C9F2D3A6 +C114DDE740B263D9A533A1D7008CF5893C3CFD765A69F32289D9BB38303CB113 +3168409AD22D19B7ECAA3BFB1EB15E353CA76812B860BD929EA9F4D619B11971 +4DC27004A1D0334AE54FC95392A0E27227CC6C881AC83F063D89BCD9FA406505 +391AFB29671B935EBBF96D35704507EAC305E422ABE468BB38018E54544690AE +3F95DC7D05F0E1B5DD3B86CE252AB0735EB33D7AA72A420216D739E309E40CE1 +D652C31730FD53FB7D968BB31574D09E99E26466878673DD15AF3A1CD0465B92 +332D2DFE1EC9A47CD546596270D11A2C5E22563CCBB74143233E1565B36776AD +AEEAD6D1B2544395BB1BFEDD484B297DD7956837A7E3C32558D2413714E0EC3A +9F951FED7D3873E68D5D71C9752E0657C1694D84CA0194C5935CDDAC2609C935 +3286AEED50061B4452AB10CB1567900A98331E4E37A484A75831A4D2F58C91D8 +CE8E587DE3174C769D7558BF35457DCB4F2A2E16C440F1BED41D262644F26517 +2CA3F87FCA37BDF5387EA4E778A7BA94F6083CBD0E748E0EFE821E777214A14D +4CDFC638326850E4290AC0ABCAB711FABB2277933A361F35C9D0C526F2E0702E +C7874917291E35B36B08A849E1E0681C06AFF6D26706A644AF8ADA77D39F1E24 +C34F58B056EF19A401C27C9386423451F7275B2D7C6F50D5EFB6EF41BAFED93E +707B0F2EADB22EB75CED4D1011DE29AD441706F99EFAEFDCA063867C5EA4CDEA +A62243FCD171CD249BF774A6BA70CF6ABBB1388D5D372E693015FDEAA7E8C5D7 +83A3D86A0690315E7BD22E3B7ED40F7FC885D3A06B431168F7796A9A4D718C32 +DFA8AD1CD6746311191EDBF4F4B3C5A65FDD9832BDA079389EEA9E7C69A1EE4C +EEE186E1859FE7F83AEBB9CEFDCE6EE0BA1D5D80B7225C97E253955B633B0AEC +F5DAC3281A353E1507BB3B1EEF3E48C5531C3F89EA57086409C5CA4BA997CDF2 +93DEE3577CE7DC54F166893BD0EA788C8AC5D50DAF4784893E6DDF673A91192A +9B0C32E16E7BD5E7004BDCACB5B4F6E10EBB3CD19732624A9EF661E97E9E2D30 +0881636272D05DAA67B36A5B32D19BA5968E7D1937D9C120C4B0C14E62663288 +58D31E18401342FC57305AE782982FF16AF5E088212ED5D7980CB77815005AD2 +3533742C37D2CFB4604FA778D8F55A5CBE9745134CA0B6C555DD20A64751C629 +45BEB08555767335BD79B6949E589DC72FE437975E79D595614408788CC42580 +A54613071C84A501440206D41B34B9EF2A7B4AF2EBC88761DA23C16BE0D61117 +A4D7C566EAD4E2A0436FC9FD7070BB2A70C590821B82E365EAD964E89F8B15F4 +E6D3D143FFF032991AF419FAE207BDB2B6FE12BF503D3433BB3BF7202874AA2F +73372FC38EA9984D09B9399AC71614D5A73F3E74E41F7272EA74D702BEA79E65 +144648DFF3005CC55B8DAAEE8FFC3FB31868A4F32E938E6D1C67E44C41C35DC1 +61B8D031408313A08B6331AB6E86FD77CD2C7FE549A493FF620EFB864F218437 +5D64D4F9169696D0AF97677131888C914B6E84DC74EAEFA7DB09C4E98BC2AFA7 +73703B73A9B4664215CA935B33A7407DF265D4E5BFFA1C60273AEA370812D870 +61856D5F1DBBBCDE1EF00DC28780D8366EC142B8E353C475DC7ADDE0875FCE7F +E1508B4895245FF88D9E5CBEFA3081782C6C4BD15A558DEBA8897851EAC209D8 +EF97D7368AC9CBABDB1A75FF38788BB9D2541763CABE6041B316CE2DA67BD25B +40AF9893E41FCB98D5E73919DF3436D2F90E0EE9E8A46D96AA2721AEFB76FA84 +BD59D2D8AB36EC680959E2B72E812A6D5E5F175C817D05D8480B9E898E856F14 +AB2A04430DDBDFD4E2FC42DDC6E4950EE991AEEDF8E5324D35F946DFF81285BF +CF54ADC277A2F85386038D1EFE9F68E858967EDAE8FCE8587BA09F4DAA45F9B7 +5CA6CDDD8DF8FB1D24F0A13D98777BC5D4EFD2F9D71DF7FE70649EF9EE8A46D8 +510BC416BD0A2AD5FC6EE41AAC796CA81D8074427A509F8D19EE7837DEDF88CE +C1407176AE9E0562A863193F6BCBE7B0E59BC05371226BB33260C50CDEA9D8FA +B00792F4246F14D9541D5DB83D857ABE4CF8D0C916C653ADAFC91AF581B3C55D +8F43D5D6B2CEF90DF1FA6A0ECE74166CC2576634B73A83B6D54980615FAF1EDC +4D9ACA9B19E247C0329AF3623E3BF75288B0B84090D71E31E14347C910B4ADB4 +54E72576881F5BED25F738F6A22515AF103B297CF3F7F59B09F0976D18210FDD +74CB96B0D2E35C2077CD7A79D46C05BFB8AB7A33E34847CFB4994CD4D662240B +E36390792AB507472D45540C284B47D5AC64A913936F4CA795FA9608E9BD0375 +0E4538F034DE36CAADF5A493DE6D30C811721FAF420413BDE1BF155EC27635E8 +A7ED37BB94DC252AA3F04BFCA5461085FB2E7E59ED29633692E7E1643A535CBB +5F5F2B35DF22D4B674E66AE215B6BA911F4AB30CDD55296B817972BE4212F33B +3E8747294F7AB3BADDC5A001E8EE2ECF96D6EBF5D1FAB2D29023530F8DB3A532 +14AF65E9CDDFAB3683F37EB09BE41BC6170F5596A8834CB47A2B3BA37A2D820C +839B15275B115D891E012BBC5042EFB5854850DA32E30B188F05D42881EDE9A7 +C95EF1556FBB7CDC1F05E25C19E544B3164CFB9F2AF703E68042070118EE8957 +9EC05F7639C8C67E94C8F43894CB84F55502D35F39D6EC971CCCD09255560CD3 +EC0C6831F0018AC460D453ED18D1ACBF72B5590A6CBD0DECC8C63EB34A08866B +DFE5F12B30F0393069D727313E3785A3FBF1156CEFE827C1709B7C3C63F15F8E +D215FFEF0FF3EDA331F29448D5BF8720EFB72606A68EADBADFBC4E6C2C087937 +97701DCDEF6938BA7C8FEDE17C79A815FC109A59339A4C18B32CF4DA9363CE98 +1DA005E469B73D0665A6B522045EE3E334D6BE78E56E937EC9360D58ABE2FDCC +593491191206E6C7B114491995CD813D247ED65EB13A9F2072E7ACBE105234DB +9C7A4A1270BB05E9F670E1F453D6CBE68B650B6217BF6467B28244CC21AB2980 +D70A4C1A5F7B4154F5734BBBB3789FFF348EC9D5FA7F0EC928DD574813D11469 +E4282104A510BEA2F0EE12ABD31792EB4C3DFC909CF70163F7D812524BFDFF26 +C15360DAC2DCEEE1ACFD66F13E6D9291AF4F0E75B56A0EFCB81FF008E27B223E +7E766EE8C9E8F4E27B7D9652D11284EEA82975E85045A70703912A3EA8240DF7 +CDD6115060E197F212264F9BD9FA182C142820C3C2ADF9951B6A929FD6080876 +0DB6A298F62A433E9CD6E92C841B078CAD3DC575CFC8606B7074A380C736FD76 +F9AE061F0DDCABA500E066A61D6827016542DF72B3268B14AD604EA12A5D409F +C272484B97CC75CF7B93BABFEC488D6F618D68165B4178A44CF0704C4D1815A7 +6B2F596C978D76757789F8F9FE64634EF3C32D0F954E23CC5EAE66EE7D3FCD46 +9405C3D8C5C10724643AC57440E6BC605C61F97A4F4A94DB1B1D3F21D07822C2 +F02866745DDBA87C47F73DA4ABE84366921D434F861F0E901C1101AAA6B801F1 +DB5C5C6CD0DF42856E6BA749E255F1093283C00A48068C3076BD2524370C597C +F868D52A46290F98D9AA8346DD4AFF70E822D90F3C39EAF5D5EF4E2747F9398A +5166FDE0FB7F6720ED90AD1106DB008D930C3F6BDCAF65CB7BED5DCE8070C530 +10E910AF322385C2DF0311F154C3A4F8CBCC99C1B250BDBB221ED3F7FFB1E53D +A1D2A77C0ED000F52FD65AEA8BB57DBCF0DEBF89407069C80920A886976710EC +9F7ADC7B9B3D85C9BB59959830D24538CD3E606BB9C7C4B02EBF51BBB8A696A9 +62A2869B22F4612B627F3B77F18F92A6F515BFCF112434DBF3D29E56B5255E2E +D1C692499A45B7F6599E9B785C83DB13FF222E34688638C732E1F6CE91E261FC +A0EB3A5030B8B99E9250F518CB2E234B91F34B52473201BC97CB96AA79649566 +4D882D6C8CB2BF97B64E3443F2110D1CD2D0DCBB15AA8F5A70481EC183C8ED0D +13C445FFFBF009B049EE2E91A4E99DF0AD5D763B80CAA94E863CDFF643668FB5 +1FCA0942C8E32C585D3E6EB2E866E917591DBB1A9ABE824FEEAA259ACB8EC5C4 +1EC60C74A22DF9529D669964D198C34A40F94202677DD5B38FBA8598F287D783 +A7EACFF2D26D3712BEE5D7EBBB41E75D3ABD53F778680CB1961EAF2DD0591BA1 +23BA31218AE9434AE9A613C9C2E392A0FE9C5F0C250D4A65BF46C155A7951E32 +A9ACA1ACCE6C5B832EE456E30439F1679E1754AF40549BC14E926FD7065F6DD4 +ABC364BD126FCADE0CBAE786BF7EF159C6B64A6E129226119FDBF02BCE1F4DA9 +5E2EF290542037C43FA64E107494A1AEDCF29C50DC1706EADEF8426279A1A825 +61A98072A861FC4E6B559FCEAEB3A6A61E9C4EC145EFED39766B8F7539EAF1C8 +C2FAECA7AB1A18B93218842A5ACEB3233A7240F451D05808F9191AB7DACDCB0C +C23105D1B3135AC849A5AB3F8C8C8BC0F7B034F3E4109DE383C6408599A26594 +F298D2682161FD47E33501C6F3158C540102716AF116DE24D531AAFE4B2FF353 +EFF0272E7BE8BAB7D44BB2597A1468CB98D2C301E68B3E639446B90F98FCB341 +6CE8544D0C6B07549A20AE13E53C048F1E4C852F921E0FAC4C3F30DDC5723C51 +860C12BF8C65020D68D65032978F859E0A1C1F454A2CD745281FF7FA1A61CDF0 +B9C05A441E7D4D82BED9BA9805A1826CD7495750797027833D8542AA7C03E6A2 +359F3224F393D24D7231A13978B5791D58B36E15C5A53E2522F41324A8B0F576 +39EC6B9659EB99197B78719E96EB583B401422CC0FD2E5DE4A1BA0D6410A0B2C +6F29FDDBBEEB4AD5EB03284CA7B60B3135503678618851B6173613F637ACBAD0 +21FD757D6856FCE04F4899C6F3CC7A38EEE55BD8761D2024 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: SFRM1440 +%!FontType1-1.0: SFRM1440 0.3 +%%CreationDate: Wed Sep 12 2001 +% Copyright (c) 2001 Vladimir Volovich . +% See the file COPYING (GNU General Public License) for license conditions. +% Converted from METAFONT EC/TC and LH fonts: +% ecrm1440, tcrm1440, larm1440, lbrm1440, lcrm1440, rxrm1440. +11 dict begin +/FontInfo 6 dict dup begin +/version (0.3) def +/FullName (Computer Modern Roman) def +/FamilyName (Computer Modern) def +/ItalicAngle 0 def +/isFixedPitch false def +/Weight (Medium) def +end readonly def +/FontName /SFRM1440 def +/Encoding StandardEncoding def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/FontBBox{-178 -319 1370 944}readonly def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052BD0CE60552BD63101D7CDBEEF5B11 +69C468645FE4ED1AF2541AA0770C1DCF81623DE0ECDF49F2B522618F650CE6CB +CC8C21885DD61AF8A523AA677EAEDDFA51A1F9B1885EEE0456196D634E04EF89 +F17499DAD982502ACC349B9EEAAE4A71A73D1147318C60A8BAC10510DE90D8D3 +F46E47295D27129A5AFE0C65E22BAD10D06885A2EE623FF8E1D90287A083E00C +EF25195F68A2A98170E4875AA6B96583CD5632BAD9EB3D511DF934CD36447A31 +D420FA313B5721C37085F478B27E13191957AD30B8B082BCE733AF8402AA3B7D +EC69807BBAA8142AF1CE151D99F5A59AD18798F94781EFAD48BEC8C62C05C56A +336D71AB584F6DF014C56523108606FADE931125496247870E980A65AB33C0C6 +D5B074864D0F58CBE333EFA1201AF335FBDBFB1CC8B1294856C250F222BFB8BE +5DE74F808904F7678552F213C674497F829E96812D340939F73737731D289801 +54E5A8F7F5067ACD9D768F4649B51E54513F2F7878141FC719627C23FC5FBBB6 +3F663343D902E95C56C559B588088227B22378FAAB29392FA62933283D2FB2EA +FDAEC6C1A94ABA0B5BEFA1E728A2052434BFBF6D9759D02A2C6092D4EF794241 +CC28BC939A424AFA193F96530985EE89E2731F6A99BC84C6551A3FEA1342509D +D389F786C8EAF972B8C98B79003B6C71E6696518BE4CAD2A317C5D29621031B4 +00A035445D8CFB67D6C136B3F6D82396E11A3679BC82498519C27601236F1FCA +073DA7817B529424CAF49A0AEE8FF7520C0F204A3B1725F46C2C6953C20E93B6 +2F3EED0EEDF87A350CB841516107D9571503A3D62A2F81840070D43392160783 +D111F3463760EBE634515DA1A1B6C3A5D14FC475F277BAC792FB69B4219E9BF5 +E6F8520584096A7B7BFE439A1604C2BBBD776B6D919CB2FACE12783BF1258E23 +C42097146ABD785B0D84E036C8E656F83CA9483F86D1F477E3FD97FF347957D7 +542EB7C3470AA749FA5BF68A970851AE87B9A6C467E263E96A16488F2B5E4FE8 +B2789DB9F86BECEB1AB5B8E5F253F1BD8E6F9FAFFB57CD921B54AE0BA1503793 +E5A899B1C27C60D523AECB58B21E4C8D4CC320E9CDEA8214EF37FC9FBB5E3303 +786A7617A41D1A7215A0BD45C7B69D7443D53D8CA972455534CD82388FFE8316 +4D48F8ED5325D93A4476F4EACE9412993A535BDD5CCDB5EDF6FC20266DC8C132 +C0C7470E9F4027E09BFE7080CEBF3E7002ED3D8BB77F47D006E5840B85A8D378 +1A59CB9DB4906AF58FC1F03ADE889DF544BF2BBD8A420AB29712609C1C21134D +FE7CB0C518B17E14F876C467D0BF22D53974FF20157DBAAF8176046886639B94 +5284629519660191C51250E584C76B5EF30F0D7FFB8CC9D91F845915DC581FAD +73549E22E4F80F05C1ABE20E3F61D8DC379787B3B6F81F2408C143F561843A78 +AF2A9128766072E48BEFDD3EF15A7B3815ECD5BC53C58C8DE2A1DD97B5D5B290 +44DDB9C2DFCE777B796FAC5C47455AD26DB3A96B8A8E037FB136B4294B7788E5 +074A045079096EC5355D7BB51F75246DFA0E87E3AC6CEC9EB9F570E26EA106E2 +416760829319C95757E6A2A04E2B2D94AC70BF41D33D9E3568F1283BE4F8E963 +EE25C9897C287DAAF60FCA56698B0C45975BE914E42C9E9B2D36C92022BB9C21 +09B7FF6B4E53B82F33479CE484C84C18A83C7E354CF67772E6CDDBED34CE44DF +13D8B9C334CA6EA3F43AC1757B78821D52B026EB8CAE97BD823B53AE1946E75E +8AFC7F8B22A10690EA36BBC7A50880B7039EAD62AF2A244A3D8E4614EEAF42CE +C868B29AA4D0AC102C2B321A30930F90A9D30472BFF0E7C2CE906C621D2BC0FE +8B88946A73924FC20C15648A390A4D2DA8D67F8C4A73AF4A83C638306C33EF65 +2245A93435353368D8108D19FD94028ADC21AE17DB4D791F82A3642B7E5AF418 +21406DEBABD9B75D399031F3CE41A2B74C41BD89557FB4E93AB9971DE17269C6 +368C1F7CA10CB64487854ADBD5E38B5C513FAB045F019946616D46E64F881ED3 +DE9F7B6763D281D68BDE355963489C3175CBB6BABC3862AECE835DD0F503B4B1 +FBBDA2C09F59F293550675DE4954644ACD54BF4BC713FEA091B887C134DA7DE2 +E7F2CEC2909680E472B2AD448FD5703A3AC3498593E505B0F765EE8D1F7EB17A +BC64E6B0D92D75C3AA032D846672347D4186BD6E7F47D2A1F3094688B928203E +2A223FE6641F3F2CC93D282BA072FA405C0F97F3EA71460082A20CF572A6D1B2 +381C6F70D5653C091F91BE5850F27832DD02111287AD00D2E826F1F24577849E +9CBA64AACE3F6D27219661C35BF0E6C1EA5A80D43A69A5AF81CCD463F8F6CF2E +E96C699E46DE6B388A9C7DA9CB2E5038BA520005A88CD39230CE8002400F780F +84C78AFD2FF6750E6A301FBE3C27572F34398860224F213FE620126916B204BE +802EE7B25D42BA4C5C32C6B17C38DC89F754B5F4857EC3B6125A84ABAEC31E63 +6E5AE5D73CA1A507FC6D001694B11815F848868DCE06FEB594B766820D6F5E20 +72C2D4DC12775BAED77DE1DCF4DF97BA494CB6E7092E0E5E3A88B5833B20403A +555F465610873C04482E07A9C3C43912A77103B2C0A90CF1479031C9A5FAA23F +6B6E049C6BD28C248A3F34FDCCF6DD767DC62E157E1A500DB4133F339EF9578F +BA995DEA9DB194030EDCD49233C4903317C14CE40A576EDAEB57D81A77C39375 +11B0BAAE35B2F2617402C81F2F50E19CCC39648018245D025ABAAA025CAFDC12 +F2B8B89114540A1F3EDF40056890DADF9608A393416A86F976DD9B1EA8F95D56 +E6697ED712DB06411FB21C1E419770F70322070A7BEC1DB4C525ADDBAB0608D0 +228B8E58BEB44068BDDD26A0C909C48DC1C9440EEE7D67DC8356EBB47777BB82 +7D642CBD758E02FE25232BA2EAC9CFD0B7DC08B7477D5A7CA9B75C54AF7BEA86 +052742774953BB6790B40896E49751335D72D8E83666FFA6D2FE8900DE770D89 +175D899762EDA276008B29661A701E46FE2F9655CC08B08685865C00E0383887 +789203F9EC0B69DC22B9F403A8F31D7164431C8F26E0A57B69570B4EAD08203A +72B49EFD77E43BD1680F6F6A6377D957985734A354911091A9433FF6AA1F746B +4F09BC0EA931DA293B04E5545EAD4181FF88E34B39934FC130DE725A1D370DF5 +1072C1EABD012E823A3B4EB20ED6B2979C552F7A132ABB51B1668922002BC78D +0DFD974E2ECA66D922B3BA3C41DD2D29537C6F209E387345C9FC48BBF95141E7 +B426D3B2B49D4228DDDDCFF3AF43E31A0A382AF424376273321DC5FF5858601E +E76589BD8E9BF826A454C1E99D83B41E8A942DB1437F544955A5ECA3F8156076 +2B11F7E66F58C7CFF126F5CD890470AA5ADE26C9DFE4E452713911620588A8D3 +D13D7746E3CDDCEEEAE518BF12ACAA9B901B90E5A0D8F44DF0E92F7E41674334 +C47FBC19383973529B3480A547C6C1F4215147062C676CE884C62D7BBB8362F7 +8A93B8E846CAB17609E86E93B1452CC18E55CF8FACE3AECC48DA2324379925FF +E9453227D0FC8EAEC171A11C776391A8D363EAF332C19BB59727C2A253CBBBB9 +1F8CAE93785364A5FF33DFBF8D0E29997C40E05920B11492D5F22BBCF9F6EFF9 +1D05F56EE7E3080F67CB12557CF0F60251626BF45EB0B39A6BC253AC9213EFC4 +22B7FE1316BC05C1415B4811FCB447E94A49025756627B7A3A1B51C0CB35156A +6B8D48AD96C98092F09A63C6815369C8A0650A0450E7DB90DCCBC5FF6EB74EE0 +D0430EDDDE2E3D622B3B025C2790F8B11E1133E806AD80973816B5613DCF35CE +7CA8A374F1B58F131681C7D909FE62C24ACF77F909E5902A614D1AB84992227C +15BF2128BF4F3AE67D9136A6A002B8BC39F53DD1E7481E90D7C2521A320D1388 +7E2BDC5A51A29BE50DAFD30F258B2BCBACC4ECF89E1C4E900509373A7694DF65 +49F90B275589987D832FA7809D249DE4CF3D3E6FF7A05EAE58600C2564D1A97A +B3D71ED5209DF0314DD1B6467CB1E7D98B2C430F8E6C04960DFBDE09A26E2AFB +E050DC331295B2FE8226C328E5C00A36B89E9FA45FE27524BC50D349A2C8A951 +6D9729176C3947EEFD4006211447CDE2C82926277D98F1E4B028B477CE8019F3 +F4887E795766248EBA6E7D4554B341E30EF1A22743FD30823B0D18CD2106773B +47C612E74F873586CDA911E1AD17E5B6ED61C3970913746F89CB653001850BD3 +1A8B4A860616976A47B321C73D8CDF09FFD55214442886EABC2008C55DC2822D +61D9FD8AF7C591A7B8F1B3C54F9B3DFDABD7F3AE4C922EB8A624883B4AFE2C13 +D6E2C86A1A034287C712FCA4673629B0C950BFFDA82484246BEAEFEE4E0A3682 +3A8CA4AF81E4B2E3C36027148D8D5526ABD6308009DE710899BE15FA742E660A +9A0C24FAC12C5458AED85759790652B083DD38BD1E38D5A5640E77675AAB1DE5 +2E3AA80BB13F66D426E8849C3AB20601EEA316F0446E0D59F2A114F7BFAB346E +27BE18B22BE20387E237AEBC396E303E19568676D508FAD24A136CB29E1EF04A +51E7E2D2DF92F1769E6F486F8D21E6DAE1D2EB9F652937DDC6DAA486B13F1E17 +BB472988164B9808A3996B969A6B000E4588282D6644C41498A90572A315E423 +290FF87C075A34BC7E21FB34F853756CD283AD3C1F1F8DDC3DD9CF7BF4124F7D +D2E55EE43257425BBFD3EC16DA20462C77C69E5A25A667F92B15E3FCAFE19C4C +7C118FE2BCAFD3BF57B3407AA3240D28BC35128C03F4B60485EC7BB376F6244A +A171556A06CC4B9458B431371095365042AD50E0FC6A4DFA72DDC32474D8B645 +FCB5729D3E371B43BA4B41CF5041A59384F0204E09CACC875032E159EA0AD8A7 +6332D671152CD7180C4F274EF8D0E4DC25EE5CBCCD1376BBFCA764A54500F485 +22A8FE5FFBADB2B98DB0C15C9669D200988AA3E4D54BBD60C9A826EC69C2987E +B1F208E68EB5D41C503C838F40C757238500D1D7763A4864F738A7B5E3462B8C +46CCC744DCED30C5F4FC3BAAE6F33199AEC1CD0A982DEFAAB1A421E502528420 +A630ACE9DDEA95EE3605A4A1742D0F938D3F29A8376A0A5525887E0C5F1C8617 +F9FBA5684EEA1B6D825C1EEB1A223ADA666C704C0F8A68C95DFD2E5FCF787B70 +C691F21F29C1EF9022B1F3A5845ADA9F80D7BB8D1DDD81276D730B0E19C5733E +89AC2DCEAE0EC8533878806657AC92F0A46BA0A38AB13C1E1A165DB38BB50DEB +860CF66BC694534DC319B4B599C917486076F4825A1A9745935F062BC327EAFE +5C08DA7387518B0D502A92B3447869CBA6277EEAA92849768933D4355629B720 +7E1360D20777BB35C21821F45AB5BE7630818C3916138748F83E08416ADBAE86 +8F8AE827EA42D1A4B1A0850045BD25A5D100A2DAFF514065FFB69A7B84678882 +8D97DCFE971F8A93291DB2081550B057DE0C572DF36FCF272F917B2D0955FD13 +E8CE2AD4D56774DAE722AF535EB2727035E0ECE6A43A7A23DF626D78913193E6 +43101236880DC34F975CD6336EB49D655B6C5724EA082C8B2FB3A10F8D903588 +4D1D68CD6D383B9D93F8984D516B1397AA1DD4644AFBCF5161148D6668AA41EF +3CE5D6CE8C752E2E45B8C16F806634A1A1C3C8F2109B282362B27ECF038E5914 +E3FCE21F8D0FE849A61B3899D82086D9438A26BA7FE0B6ADFE822D40E023A49E +27E4E2FCE39813345885FEB908544B917DC1F79CB7FBA61FCDB27AFA1A3BD35F +47F9872378F9854755A2EB6846AE0761DDA9E5F8AB68A267E547691BA3C9D749 +7ADCB1BB125688FB738B09E180F55C89355A821C77B09CBA4448AA594E87705F +F2D23C1A5EAA141A380B56FA57F37B47A142E6C2CE640407C08C45F2A5F0419D +977E32CCDC0E9ADFC0211F039ACDC627D5A1281CAA541FD2C5A13771CE0A5F18 +DA6B9BF6A2587F0A3C1739816C67D3E4137E2A444E8993B9C4837FB52DD46FD1 +727070C2CC267C2BD4636F70E5861594887075AAA3B1DB2E1FFE7A6278974E5B +832EB2E7004E470FFCFFC9708436291F4EBF16396A43CA64927852E3D9856EE0 +75A2CF250E51F1890406AECDD9AEA0F2CF4A42EED92BA77BB59F75FBE9E9942D +D9DE66599A626218DFA8C8B9CBC486B946562C440884235B58FBE938BAAEE703 +45F45BFBAECB2BF1D3A80A05A77AE8C432CA2EBD451AE174E4738A9504E26F62 +40554BDDDC6978380F1A0358B804D40DD47373B2F1EFC466F342C3CCAA8E4FB3 +BA34DD2E646FBFD7D94E1620DE84206A3D5752193778832547E31B8B23A9C7F7 +B43781C7FBDDC7AA5799B7E5A259CC40563EF170607C4FFA2A191651D49DE799 +BEFB5BAC093D74FC73C777E76407CA92FF941D43ACF10389782A58256E621BF3 +9C1521F10B63AA4D893D3A44B86F63C5927121445F9FB2A08B48360A29941520 +44164C516A34A15BFE8B206165502365256DC925B88E84915D3382AA809988A1 +C052DFBF9497E35E8EBF98755417A2C608F4BE0FF670F34BB4E6E826774F1A0B +ACBAF0693438FA03274E097D65D1F22B1B03077264648B0F43153CC59ACA2CFE +CE06B956B365EF4A41358345384267425303B80674F10E9F33A4FEF8F624B7EC +BCC9EB81EE479918CB67A26D8FCAF5644A1F42A8444F0EE0A6B1FC96A2EDAD16 +0D623BD5FFA3413CE4ECA146B7DF64721AB1618F4F76617575E6AC41A03021D7 +797E7AEB9C77529C2C198BB29B58EA7C11055A10640C7DE47E890F921ED83CA0 +57BA95E94D691EA52F310F3137C48C36157589D833938AE26C48F97C4BA6779E +D52C2002A51FCEDC852C945EF7A4E29622A2029AFAA876916CD402A087A3A9C8 +2F080CD8E9860EB8C9203C3F857F74E97FB6D8FE2218E26EBEB6A6D4E7C9DDEA +EB53D710AB337225491B548B049CCD0F2D273CA2B10BD83509BA317FE1ECE725 +875563EC79CDA191CC5AF0F5AA4EAF95370108E1E5F8F2349D76D0951F2B959D +C637E01A707E49E0123AFB9FD63ECF36DCF9F0844425791A5DECEC84D2705126 +856CE5DA669E532A12D2EB33062C1415FDFDADE4CBA28B965C5F87A46C7C8A49 +E8DE829B0317676F0A9768D1F202877FFEDB214B643A36A4446F503E099C5846 +6A9615D577871CC667400622404E753034519C81A3E84C3E122D4DF7F1278138 +4DD5C03513CF9E1059BA3B88835F0DE28DE22D74A9238CC738185A229ABBF241 +E29C788B5C91768E12BD428B67BC8DB2F56A3F845F2F428C9D5BA28781C1F0E1 +A4EADEC08AD8B606EEA9278C5988DB3CF05B20BE1D5A364A31DDCD085D78394C +40D594C301F5B596D2158E7FC0EADF3FAA51A2DFBDB6840929343A09D4BDA431 +2FAD2333B3AB0AACA2517D8A80C5673448C6C6EEA7A71624C020A2B49F1EF3BF +09F285EEFE5104C72EE69A426BBEA2C1BB75AD763F006A1EFFD224E9FD0C046A +463F022433C3F2BC822BF2042E883521695AC66585599E625E8845EECC526FAC +D5AE28C23D313121A4CB67E7D310C3DC499E89241DEF322453488C9BE3AB4850 +7AB8BFEC54BEE42E887A2D43E695CB4F64FBA2A1D3B145718A88BABD78425EC7 +D3C8E69068F30CD463BC757AF84E31855787ECEE982634FCD3A034E32073F742 +811D5C7133355B1BF9E57F37B1C07527757882C3A6D4F8BBEA8FA43A98760A53 +4DA814730C78BF3D48E3B7275F869ABF3B8DA748FE5C1B6B9A83F7EDADA3A7DD +72A2859829ED568DF576EE7F9745A93A475EBE0883A3E9C558E131A156EC1617 +2C6715E1E1E58003CFB40C4E502A9F4299F3DABA4A1A392D5D98E5CD606CE302 +EA6C22210F60DDC37A2F5621EC6DB8E33513DD86621E85F19569CC84B3DA0084 +5C0048FD1456BB38DE79812747A6031D175C326873FA855BB2754F5E96C3CDB9 +93131BBA489B78A8214B64421C95E198245498B6CF62192A347B6196B7C58155 +A1F6EBF7044A3F97C2D67D97ABCECA6A6EC7CE55135FDC321715A9DBBB39F433 +05A668FF64CB2BF390D01D5F1FF5F2B242B884FFF32A6AB8D082F3EF34545962 +7D0791088B27EA5F1C842FC7FD6CA0E217FE3AB3D081DC2AF5986352C0E0EEFE +A31354A887E81D443A235B1427CC32DF790067097B0AC39F23E5957AF7B751FC +CA9CBAE586F7FB77700DD745D03A5438734F9B211750C3D77AF0B7D69265A495 +C4E340A500038CC6B86F7B8236C30B567B70E1AC1B2C6C1BE98FE1578289AE3D +2F51B23E0FF5A18E4382C5DEB53927A4311EFF645B7EB5CE84853F5A31AB08AE +564993F08049015EAC604C63ACDB563B7A46968D3A6B2E45947C736BECCE69A8 +D1AA1297AE281CB2E13917AA81C9858DE6547DA22DBC577242C64E07BA1C939B +11A0AEA93B84181FD84A13476B9EA069033D42614B423AFBFC5FC801677A8EEA +B6288262776DB6E49EF3BAC94ECD3775B12DCDA0BF86190DA52AE742F1173F21 +2E516429211D5BEE4E9256755A4D7EC1CA3C262F88610F0AF8F49B97B5295FFB +E582BCCA66D5C7D29D3D2561BDCF11A9A29FC6D18FE1E4D44D73DEC080B89BE9 +FB1546FABF34ACA7412934E093D39AC382BB7AD2DBFA06460A92A611FB9F8C28 +83B456A318956A114A429606E95137BC5D5373419A32FC70567066FC97E91D7B +043760390C9A17AA9B56C6F6396928DAAA5A648A17D3DDA28829176E08BCA1CA +478F13CF9F460D12C0C02C7D19AAB03356A7A4FA69945329D25B850B2ACFFCD3 +5E5304D483C3016F81D61F606168F4A94411958D0392452F6452341E10B4CBDD +62CA7B68E0B01BD1FECF7E4536E786718A944526FEF3FF6E620F76BAAB61CBDE +8EC8D46DD0E1969075C3363AF29B1487298DCACA7C6A4C891C7E78690A17B9BF +49E067417763C71DB035D4921C470681B410803FD1B5561A22801A050CC41BAC +48B8F9721AD1B79285FA7EB6D86F3577865AB35D6DAB99B0062BE97E9189E5E4 +3E71AA1510C2FAB125C4DA86DE998C74029D5306251A4D1777B609925E8F3968 +2724449DADBAFF767244EB681EECE347340921664F98ABE02F939DBC1B5DDD0F +47F858DE6596906B86B0617FCE78A9BC67EC9BC077624B09CCE9B9EA4DB158A3 +2A4C740DE49EBA2781E2CDB819E59268B31FB5780276672CB095EBBD378BC5F2 +439952138525078549CDD0D558CB7B4F899715DF7E7E430712136838B015D609 +BCC18D44E9276DB117A2C5CD3F6B3406191C89C05860FD2F3E0629761E64C8D7 +5ADA0E5EE6AC889542C5E94A431B59F6EC65A859DA6D3F186E55B7132DE00FDB +F7771FCA474962B327F07BFC283FA05191C2A22186FF8EF3943BAFA7AC27A876 +86FCB58B49B43B5F267C194114C6007C0BE2E8DA3CD6DEE84D15E71B43A27FDA +E803AC1ACECC46D64E92BB8156D90D856D78A0B73C1AE1E5E8075F019126D0EB +770139AFFF5517A9CAAE7677A0557C2C23BB6C6569C7E1B8533292A21167B7CF +96A334B5DB5E2B3F7C6073C2EC9593745AB7551B529929CE2C4BFCB17D7E2B99 +9FB116BEB5159AE58F9ED4342B05A4E150FDC520B3229D531EADE1EE7F8FB10E +DAF437B85E046FFACD54DC4694874E13044E5DEB8DA905020443ECF0AF9BE3B7 +DBB62658426AE5FFBE7D6F6FFBC1896DF5E69E106395B1ACA5CF1D8E731237C1 +926D7AA85E68D9A29DFFDFF8AC2E0E24839DBE52C44874D54A223B7490BF92FC +AE6AAE5C +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258431 52099146 1000 600 600 (refman.dvi) +@start /Fa 161[45 94[{}1 58.1154 /CMSY7 rf /Fb 78[44 +177[{ TS1Encoding ReEncodeFont }1 83.022 /SFTT1000 rf +/Fc 133[41 47 47 64 44 52 32 40 42 1[49 49 54 78 25 44 +30 30 49 44 33 44 49 44 44 49 1[74 44[49 49 2[30 34 3[39 +39 10[58 29[{ T1Encoding ReEncodeFont }33 83.022 /SFBI1000 +rf /Fd 193[76 1[76 60[{}2 99.6264 /CMMI12 rf /Fe 252[35 +3[{}1 66.4176 /CMSY8 rf /Ff 133[31 37 37 51 37 39 27 +28 27 37 39 35 39 59 20 37 1[20 39 35 22 31 39 31 39 +35 1[55 1[20 1[20 1[53 53 72 53 53 51 39 52 1[48 55 53 +65 44 2[25 53 55 46 48 54 51 50 53 7[35 35 35 35 35 35 +35 35 35 35 35 20 24 20 2[27 27 1[55 59 2[35 4[39 1[41 +27[{ T1Encoding ReEncodeFont }71 66.4176 /SFRM0800 rf +/Fg 135[43 59 43 45 32 32 34 1[45 41 45 68 23 2[23 2[25 +37 45 36 45 40 10[61 62 3[61 55 61 1[77 3[30 2[51 1[62 +2[61 11[41 41 1[41 50[{ T1Encoding ReEncodeFont }32 66.4176 +/SFBX0800 rf /Fh 145[42 3[23 72[83 8[65 20[42 3[{}5 83.022 +/CMSY10 rf /Fi 140[44 44 1[44 44 9[44 44 44 1[44 18[44 +78[{ T1Encoding ReEncodeFont }9 83.022 /SFIT1000 rf /Fj +129[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 +35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 +35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 +35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 +35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 +35 35 35 35 35 33[{ T1Encoding ReEncodeFont }94 66.4176 +/SFTT0800 rf /Fk 74[46 44[42 93[42 42[{ TS1Encoding ReEncodeFont }3 +83.022 /SFRM1000 rf /Fl 133[34 40 39 55 38 45 28 34 35 +38 42 42 47 68 21 38 25 25 42 38 25 38 42 38 38 42 1[64 +6[62 83 1[62 59 47 61 1[56 64 62 74 52 2[32 1[64 54 56 +63 59 58 62 3[64 2[25 42 1[42 42 1[42 42 1[42 42 42 25 +30 25 64 1[34 34 25 8[73 49 47 28[{ T1Encoding ReEncodeFont }66 +83.022 /SFTI1000 rf /Fm 133[44 44 44 44 44 44 44 44 44 +44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 +1[44 1[44 44 44 44 44 44 44 44 44 44 1[44 44 44 44 44 +44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 1[44 44 44 +44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 44 +44 44 44 44 44 12[44 21[{ T1Encoding ReEncodeFont }83 +83.022 /SFTT1000 rf /Fn 133[50 59 59 81 59 62 44 44 46 +59 62 56 62 93 31 59 34 31 62 56 34 51 62 50 62 54 1[87 +6[85 116 85 86 78 62 84 84 77 84 88 106 67 2[42 88 88 +70 74 86 81 80 85 1[53 4[31 56 56 56 56 56 56 56 56 56 +56 56 31 37 31 87 1[44 44 31 3[93 56 34 3[62 62 65 27[{ + T1Encoding ReEncodeFont }75 99.6264 /SFBX1200 rf /Fo +193[65 1[65 60[{}2 83.022 /CMMI10 rf /Fp 134[40 40 1[40 +1[29 1[31 2[38 42 1[21 2[21 1[38 23 34 42 33 42 37 9[77 +8[58 6[59 2[57 9[21 1[38 1[38 38 1[38 38 38 38 2[25 45[{ + T1Encoding ReEncodeFont }29 58.1154 /SFBX0700 rf /Fq +130[42 1[42 37 44 44 60 44 46 32 33 33 44 46 42 46 69 +23 44 25 23 46 42 25 37 46 37 46 42 23 65 1[23 1[23 51 +62 62 85 62 62 60 46 61 65 56 65 62 76 52 65 43 30 62 +65 54 56 63 60 59 62 65 39 1[65 1[23 23 42 42 42 42 42 +42 42 42 42 42 42 23 28 23 65 1[32 32 23 65 69 42 69 +42 23 1[69 69 46 46 48 5[42 46 46 1[28 28 16[{ T1Encoding ReEncodeFont } +97 83.022 /SFRM1000 rf /Fr 134[69 69 95 69 73 51 52 53 +69 73 66 73 110 37 69 1[37 73 66 1[60 73 58 73 66 10[99 +101 91 73 98 99 90 99 103 125 79 2[48 103 103 83 1[101 +95 93 99 7[66 66 66 66 66 66 66 66 66 66 2[44 3[51 51 +40[{ T1Encoding ReEncodeFont }55 119.552 /SFBX1440 rf +/Fs 130[48 1[48 42 50 50 69 50 53 37 38 39 50 53 48 53 +80 27 50 29 27 53 48 29 44 53 42 53 46 1[74 1[27 1[27 +58 72 72 99 72 73 66 53 72 72 65 72 75 91 57 75 49 36 +75 75 60 63 73 69 68 72 1[45 1[74 1[27 27 48 48 48 48 +48 48 48 48 48 48 48 27 32 27 74 1[37 37 27 74 80 1[80 +48 29 1[80 1[53 53 56 5[48 21[{ T1Encoding ReEncodeFont }89 +83.022 /SFBX1000 rf /Ft 137[41 6[38 9[34 43 12[79 8[58 +19[21 1[38 1[38 38 1[38 38 38 38 48[{ T1Encoding ReEncodeFont }14 +74.7198 /SFRM0900 rf /Fu 134[51 51 3[38 1[38 2[49 54 +6[49 1[43 54 1[54 49 25[77 2[74 13[49 49 1[49 1[49 2[27 +46[{ T1Encoding ReEncodeFont }18 99.6264 /SFRM1200 rf +/Fv 137[60 3[44 5[32 2[32 5[51 63 57 51[38 45[{ + T1Encoding ReEncodeFont }8 119.552 /SFRM1440 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 1759 2456 a Fv(a)m(vr-lib)s(c)1847 +2607 y Fu(1.6.3)1342 2943 y(Generated)33 b(b)m(y)g(Do)m(xygen)i(1.5.6) +1521 3161 y Ft(W)-6 b(ed)25 b(No)n(v)g(5)h(21:03:06)j(2008)p +eop end +%%Page: 1 2 +TeXDict begin 1 1 bop 515 203 a Fs(CONTENTS)2298 b(i)p +515 236 2865 4 v 515 523 a Fr(Con)l(ten)l(ts)515 753 +y Fs(1)76 b(A)-11 b(VR)32 b(Lib)s(c)2273 b(1)639 900 +y Fq(1.1)84 b(In)n(tro)r(duction)25 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)131 b(1)639 1047 y(1.2)84 b(General)27 +b(information)g(ab)r(out)g(this)h(library)46 b(.)41 b(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)131 b(2)639 1194 +y(1.3)84 b(Supp)r(orted)28 b(Devices)61 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)131 b(2)639 1340 y(1.4)84 b(a)n(vr-lib)r(c)26 +b(License)42 b(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)131 +b(8)515 1570 y Fs(2)76 b(T)-8 b(o)s(olc)m(hain)32 b(Ov)m(erview)1866 +b(9)639 1717 y Fq(2.1)84 b(In)n(tro)r(duction)25 b(.)42 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)131 b(9)639 +1864 y(2.2)84 b(FSF)28 b(and)g(GNU)76 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)90 b(10)639 2011 y(2.3)84 b(GCC)37 b(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(10)639 2158 y(2.4)84 b(GNU)28 b(Bin)n(utils)45 b(.)c(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)90 b(11)639 2305 y(2.5)84 b(a)n(vr-lib)r(c)75 +b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(12)639 2451 y(2.6)84 b(Building)28 b(Soft)n(w)n(are)d(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(13)639 2598 y(2.7)84 +b(A)-9 b(VRDUDE)60 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +90 b(13)639 2745 y(2.8)84 b(GDB)28 b(/)f(Insigh)n(t)g(/)h(DDD)48 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(13)639 2892 y(2.9)84 +b(A)-9 b(V)i(aRICE)59 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)90 b(14)639 3039 y(2.10)42 b(Sim)n(ulA)-9 b(VR)35 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(14)639 3186 y(2.11)42 b(Utilities)63 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(14)639 3333 y(2.12)42 +b(T)-7 b(o)r(olc)n(hain)27 b(Distributions)g(\(Distros\))49 +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)90 b(14)639 3480 y(2.13)42 b(Op)r(en)28 b(Source)80 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(14)515 +3709 y Fs(3)76 b(Memory)31 b(Areas)h(and)h(Using)e(mallo)s(c\(\))1189 +b(15)639 3856 y Fq(3.1)84 b(In)n(tro)r(duction)25 b(.)42 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(15)639 +4003 y(3.2)84 b(In)n(ternal)27 b(vs.)36 b(external)27 +b(RAM)g(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(16)639 4150 y(3.3)84 +b(T)-7 b(unables)27 b(for)g(mallo)r(c\(\))86 b(.)41 b(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)90 b(17)639 4297 y(3.4)84 b(Implemen)n(tation)28 +b(details)k(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(19)515 4527 +y Fs(4)76 b(Memory)31 b(Sections)1920 b(20)639 4674 y +Fq(4.1)84 b(The)28 b(.text)g(Section)44 b(.)e(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)90 b(20)639 4821 y(4.2)84 b(The)28 b(.data)f(Section)h(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(21)639 4967 y(4.3)84 +b(The)28 b(.bss)f(Section)78 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +90 b(21)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 2 3 +TeXDict begin 2 2 bop 515 203 a Fs(CONTENTS)2272 b(ii)p +515 236 2865 4 v 639 523 a Fq(4.4)84 b(The)28 b(.eeprom)f(Section)55 +b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(21)639 670 y(4.5)84 +b(The)28 b(.noinit)g(Section)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(21)639 817 y(4.6)84 b(The)28 b(.initN)g(Sections)35 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(22)639 964 y(4.7)84 +b(The)28 b(.\034niN)g(Sections)44 b(.)d(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(23)639 1111 y(4.8)84 b(Using)27 b(Sections)h(in)g(Assem)n(bler)e(Co)r +(de)82 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)90 b(24)639 1257 y(4.9)84 b(Using)27 b(Sections)h(in)g(C)f(Co)r +(de)69 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(25)515 1487 y Fs(5)76 +b(Data)33 b(in)f(Program)g(Space)1663 b(25)639 1634 y +Fq(5.1)84 b(In)n(tro)r(duction)25 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)90 b(25)639 1781 y(5.2)84 b(A)28 b(Note)g(On)f(const)55 +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(26)639 1928 +y(5.3)84 b(Storing)27 b(and)g(Retrieving)g(Data)g(in)h(the)g(Program)e +(Space)47 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(26)639 +2075 y(5.4)84 b(Storing)27 b(and)g(Retrieving)g(Strings)g(in)h(the)g +(Program)e(Space)35 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)90 +b(28)639 2222 y(5.5)84 b(Ca)n(v)n(eats)65 b(.)42 b(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(30)515 2451 y Fs(6)76 +b(a)m(vr-lib)s(c)32 b(and)h(assem)m(bler)d(programs)1285 +b(30)639 2598 y Fq(6.1)84 b(In)n(tro)r(duction)25 b(.)42 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(30)639 +2745 y(6.2)84 b(In)n(v)n(oking)26 b(the)i(compiler)76 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(31)639 2892 y(6.3)84 +b(Example)28 b(program)22 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(31)639 3039 y(6.4)84 b(Pseudo-ops)27 b(and)g(op)r(erators)58 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)90 b(35)515 3269 y Fs(7)76 b(Inline)31 +b(Assem)m(bler)g(Co)s(okb)s(o)s(ok)1488 b(36)639 3416 +y Fq(7.1)84 b(GCC)28 b(asm)f(Statemen)n(t)48 b(.)42 b(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)90 b(37)639 3563 y(7.2)84 b(Assem)n(bler)27 b(Co)r(de)d(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(39)639 3709 +y(7.3)84 b(Input)28 b(and)g(Output)g(Op)r(erands)e(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)90 b(40)639 3856 y(7.4)84 b(Clobb)r(ers)29 +b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(45)639 4003 y(7.5)84 b(Assem)n(bler)27 b(Macros)78 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(47)639 4150 +y(7.6)84 b(C)28 b(Stub)g(F)-7 b(unctions)36 b(.)42 b(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)90 b(48)639 4297 y(7.7)84 b(C)28 b(Names)f(Used)h(in)f +(Assem)n(bler)g(Co)r(de)75 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(49)639 4444 y(7.8)84 +b(Links)24 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)90 b(50)515 4674 y Fs(8)76 b(Ho)m(w)32 b(to)f(Build)g(a)h +(Library)1660 b(50)639 4821 y Fq(8.1)84 b(In)n(tro)r(duction)25 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(50)639 4967 y(8.2)84 b(Ho)n(w)27 b(the)h(Link)n(er)f(W)-7 +b(orks)46 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(50)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 3 4 +TeXDict begin 3 3 bop 515 203 a Fs(CONTENTS)2245 b(iii)p +515 236 2865 4 v 639 523 a Fq(8.3)84 b(Ho)n(w)27 b(to)h(Design)f(a)g +(Library)h(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(51)639 670 y(8.4)84 +b(Creating)27 b(a)g(Library)55 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(51)639 817 y(8.5)84 b(Using)27 b(a)h(Library)33 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(52)515 1047 +y Fs(9)76 b(Benc)m(hmarks)2135 b(53)639 1194 y Fq(9.1)84 +b(A)28 b(few)g(of)f(lib)r(c)i(functions.)21 b(.)41 b(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)90 b(53)639 1340 y(9.2)84 b(Math)28 b(functions.)k(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(55)515 1570 +y Fs(10)28 b(P)m(orting)k(F)-8 b(rom)32 b(IAR)f(to)h(A)-11 +b(VR)32 b(GCC)1270 b(56)639 1717 y Fq(10.1)42 b(In)n(tro)r(duction)25 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(56)639 1864 y(10.2)42 b(Registers)20 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(56)639 2011 y(10.3)42 +b(In)n(terrupt)27 b(Service)g(Routines)h(\(ISRs\))h(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(57)639 2158 y(10.4)42 b(In)n(trinsic)27 b(Routines)f(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(57)639 2305 y(10.5)42 +b(Flash)27 b(V)-7 b(ariables)50 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)90 b(58)639 2451 y(10.6)42 b(Non-Returning)27 +b(main\(\))53 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(59)639 +2598 y(10.7)42 b(Lo)r(c)n(king)27 b(Registers)j(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(59)515 2828 y +Fs(11)28 b(F)-8 b(requen)m(tly)33 b(Ask)m(ed)f(Questions)1470 +b(60)639 2975 y Fq(11.1)42 b(F)-9 b(A)n(Q)27 b(Index)80 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(60)639 3122 y(11.2)42 b(My)31 b(program)e(do)r(esn't)j(recognize)d(a) +i(v)-5 b(ariable)30 b(up)r(dated)i(within)g(an)f(in-)830 +3222 y(terrupt)c(routine)64 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)90 b(62)639 3368 y(11.3)42 b(I)28 b(get)f("unde\034ned)h(reference)e +(to...")h(for)h(functions)f(lik)n(e)h("sin\(\)")i(.)42 +b(.)g(.)f(.)h(.)90 b(62)639 3515 y(11.4)42 b(Ho)n(w)27 +b(to)h(p)r(ermanen)n(tly)f(bind)h(a)f(v)-5 b(ariable)26 +b(to)i(a)f(register?)79 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(63)639 3662 y(11.5)42 b(Ho)n(w)27 b(to)h(mo)r(dify)g(MCUCR)g(or)e +(WDTCR)j(early?)48 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +90 b(63)639 3809 y(11.6)42 b(What)28 b(is)f(all)h(this)g(_BV\(\))f +(stu\033)i(ab)r(out?)76 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)90 b(64)639 3956 y(11.7)42 b(Can)27 +b(I)h(use)f(C++)g(on)g(the)h(A)-9 b(VR?)60 b(.)42 b(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(64)639 4103 y(11.8)42 b(Shouldn't)28 b(I)g(initialize)g(all)f(m)n(y)g +(v)-5 b(ariables?)66 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)90 b(65)639 4250 y(11.9)42 b(Wh)n(y)28 +b(do)f(some)g(16-bit)g(timer)g(registers)f(sometimes)h(get)h(trashed?) +61 b(.)41 b(.)h(.)90 b(66)639 4397 y(11.10Ho)n(w)27 b(do)g(I)h(use)g(a) +f(#de\034ne'd)h(constan)n(t)f(in)g(an)h(asm)f(statemen)n(t?)f(.)42 +b(.)g(.)f(.)h(.)90 b(67)639 4543 y(11.11Wh)n(y)33 b(do)r(es)g(the)g(PC) +g(randomly)f(jump)i(around)d(when)j(single-stepping)830 +4643 y(through)27 b(m)n(y)g(program)f(in)i(a)n(vr-gdb?)55 +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)90 b(68)639 4790 y(11.12Ho)n(w)27 b(do)g(I)h(trace)f(an)g(assem)n +(bler)f(\034le)i(in)g(a)n(vr-gdb?)j(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)90 b(68)639 4937 y(11.13Ho)n(w)27 b(do)g(I)h(pass)f(an)g +(IO)g(p)r(ort)h(as)f(a)g(parameter)f(to)h(a)g(function?)57 +b(.)42 b(.)g(.)f(.)h(.)90 b(70)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 4 5 +TeXDict begin 4 4 bop 515 203 a Fs(CONTENTS)2248 b(iv)p +515 236 2865 4 v 639 523 a Fq(11.14What)28 b(registers)e(are)g(used)i +(b)n(y)f(the)h(C)g(compiler?)57 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)90 b(72)639 670 y(11.15Ho)n(w)27 b(do)g(I)h(put)g(an)g +(arra)n(y)d(of)i(strings)g(completely)g(in)h(R)n(OM?)67 +b(.)41 b(.)h(.)g(.)f(.)h(.)90 b(74)639 817 y(11.16Ho)n(w)27 +b(to)h(use)f(external)g(RAM?)68 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(76)639 +964 y(11.17Whic)n(h)28 b(-O)f(\035ag)g(to)g(use?)72 b(.)41 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)90 b(76)639 1111 y(11.18Ho)n(w)27 +b(do)g(I)h(relo)r(cate)f(co)r(de)g(to)g(a)h(\034xed)f(address?)33 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(77)639 1257 y(11.19My)29 b(UAR)-7 b(T)29 b(is)g(generating)e +(nonsense!)40 b(My)28 b(A)-7 b(Tmega128)27 b(k)n(eeps)h(crash-)830 +1357 y(ing!)37 b(P)n(ort)27 b(F)h(is)f(completely)h(brok)n(en!)44 +b(.)e(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)90 b(78)639 1504 y(11.20Wh)n(y)28 b(do)f(all)g(m)n(y)h("fo)r +(o...bar")d(strings)i(eat)g(up)h(the)g(SRAM?)j(.)42 b(.)f(.)h(.)g(.)f +(.)h(.)90 b(78)639 1651 y(11.21Wh)n(y)27 b(do)r(es)g(the)g(compiler)g +(compile)g(an)f(8-bit)h(op)r(eration)f(that)i(uses)e(bit-)830 +1750 y(wise)h(op)r(erators)f(in)n(to)h(a)g(16-bit)g(op)r(eration)g(in)g +(assem)n(bly?)44 b(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(80)639 +1897 y(11.22Ho)n(w)27 b(to)h(detect)g(RAM)g(memory)e(and)i(v)-5 +b(ariable)26 b(o)n(v)n(erlap)g(problems?)71 b(.)42 b(.)90 +b(80)639 2044 y(11.23Is)28 b(it)g(really)e(imp)r(ossible)h(to)h +(program)d(the)j(A)-7 b(Ttin)n(yXX)29 b(in)f(C?)40 b(.)h(.)h(.)g(.)f(.) +h(.)90 b(81)639 2191 y(11.24What)28 b(is)f(this)h("clo)r(c)n(k)f(sk)n +(ew)f(detected")i(messsage?)40 b(.)i(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)90 b(81)639 2338 y(11.25Wh)n(y)28 b(are)e(\(man)n(y\))i(in)n +(terrupt)f(\035ags)g(cleared)f(b)n(y)h(writing)g(a)h(logical)e(1?)e(.) +42 b(.)90 b(81)639 2485 y(11.26Wh)n(y)28 b(ha)n(v)n(e)e("programmed")f +(fuses)i(the)h(bit)g(v)-5 b(alue)28 b(0?)43 b(.)e(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)90 b(82)639 2632 y(11.27Whic)n(h)28 b(A)-9 +b(VR-sp)r(eci\034c)28 b(assem)n(bler)e(op)r(erators)f(are)i(a)n(v)-5 +b(ailable?)37 b(.)k(.)h(.)g(.)f(.)h(.)90 b(83)639 2778 +y(11.28Wh)n(y)27 b(are)e(in)n(terrupts)h(re-enabled)g(in)h(the)g +(middle)g(of)f(writing)g(the)h(stac)n(k)830 2878 y(p)r(oin)n(ter?)53 +b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(83)639 3025 y(11.29Wh)n(y)28 b(are)e(there)i(\034v)n(e)f(di\033eren)n +(t)g(link)n(er)g(scripts?)40 b(.)h(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)90 b(83)639 3172 y(11.30Ho)n(w)27 b(to)h(add)f(a)g(ra)n(w)g +(binary)f(image)h(to)h(link)n(er)e(output?)40 b(.)i(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)90 b(84)639 3319 y(11.31Ho)n(w)27 b(do)g(I)h(p)r(erform)f(a) +g(soft)n(w)n(are)f(reset)h(of)h(the)g(A)-9 b(VR?)49 b(.)41 +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(85)639 3466 +y(11.32I)22 b(am)g(using)g(\035oating)f(p)r(oin)n(t)h(math.)36 +b(Wh)n(y)22 b(is)g(the)g(compiled)g(co)r(de)g(so)f(big?)830 +3565 y(Wh)n(y)28 b(do)r(es)f(m)n(y)g(co)r(de)h(not)f(w)n(ork?)45 +b(.)d(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)90 b(86)639 3712 y(11.33What)28 b(pitfalls)g(exist)f(when)h +(writing)f(reen)n(tran)n(t)f(co)r(de?)66 b(.)42 b(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)90 b(86)515 3942 y Fs(12)28 b(Building)i(and)j(Installing)d +(the)i(GNU)g(T)-8 b(o)s(ol)31 b(Chain)768 b(89)639 4089 +y Fq(12.1)42 b(Building)28 b(and)f(Installing)g(under)g(Lin)n(ux,)h(F) +-7 b(reeBSD,)27 b(and)h(Others)20 b(.)42 b(.)f(.)h(.)90 +b(89)639 4236 y(12.2)42 b(Required)27 b(T)-7 b(o)r(ols)60 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(90)639 +4383 y(12.3)42 b(Optional)27 b(T)-7 b(o)r(ols)68 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(90)639 4529 +y(12.4)42 b(GNU)28 b(Bin)n(utils)g(for)f(the)h(A)-9 b(VR)28 +b(target)35 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)90 b(91)639 4676 y(12.5)42 b(GCC)28 b(for)f(the)h(A)-9 +b(VR)28 b(target)f(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(92)639 +4823 y(12.6)42 b(A)-9 b(VR)28 b(Lib)r(c)52 b(.)41 b(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(93)639 4970 y(12.7)42 +b(A)-9 b(VRDUDE)60 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +90 b(93)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 5 6 +TeXDict begin 5 5 bop 515 203 a Fs(CONTENTS)2275 b(v)p +515 236 2865 4 v 639 523 a Fq(12.8)42 b(GDB)28 b(for)f(the)h(A)-9 +b(VR)28 b(target)d(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(94)639 +670 y(12.9)42 b(Sim)n(ulA)-9 b(VR)35 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)90 b(94)639 817 y(12.10A)-9 b(V)i(aRICE)59 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(95)639 964 y(12.11Building)28 b(and)f(Installing)g(under)g(Windo)n +(ws)81 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(95)639 1111 y(12.12T)-7 b(o)r(ols)27 b(Required)g(for)g(Building)h +(the)g(T)-7 b(o)r(olc)n(hain)26 b(for)h(Windo)n(ws)72 +b(.)42 b(.)g(.)f(.)h(.)90 b(96)639 1257 y(12.13Building)28 +b(the)g(T)-7 b(o)r(olc)n(hain)26 b(for)h(Windo)n(ws)65 +b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 +b(99)515 1487 y Fs(13)28 b(Using)j(the)h(GNU)g(to)s(ols)1705 +b(105)639 1634 y Fq(13.1)42 b(Options)27 b(for)g(the)h(C)g(compiler)f +(a)n(vr-gcc)50 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)48 b(105)830 1781 y(13.1.1)k(Mac)n(hine-sp)r(eci\034c)26 +b(options)h(for)g(the)h(A)-9 b(VR)84 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)48 b(105)830 1928 y(13.1.2)k(Selected)28 +b(general)e(compiler)h(options)37 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(110)639 2075 y(13.2)42 b(Options)27 +b(for)g(the)h(assem)n(bler)e(a)n(vr-as)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(112)830 +2222 y(13.2.1)k(Mac)n(hine-sp)r(eci\034c)26 b(assem)n(bler)g(options)51 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(112)830 2368 y(13.2.2)k(Examples)44 b(for)g(assem)n(bler)f(options)h +(passed)g(through)f(the)i(C)1096 2468 y(compiler)33 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(113)639 2615 +y(13.3)42 b(Con)n(trolling)26 b(the)i(link)n(er)f(a)n(vr-ld)37 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(114)830 2762 y(13.3.1)k(Selected)28 +b(link)n(er)e(options)43 b(.)f(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(114)830 2909 +y(13.3.2)k(P)n(assing)26 b(link)n(er)h(options)g(from)g(the)h(C)g +(compiler)77 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(115)515 +3139 y Fs(14)28 b(Using)j(the)h(a)m(vrdude)h(program)1440 +b(116)515 3368 y(15)28 b(Release)i(Num)m(b)s(ering)h(and)h(Metho)s +(dology)1015 b(118)639 3515 y Fq(15.1)42 b(Release)27 +b(V)-7 b(ersion)27 b(Num)n(b)r(ering)g(Sc)n(heme)f(.)41 +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(118)830 3662 y(15.1.1)k(Stable)27 b(V)-7 b(ersions)47 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(118)830 3809 y(15.1.2)k(Dev)n(elopmen) +n(t)27 b(V)-7 b(ersions)59 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(118)639 3956 +y(15.2)42 b(Releasing)27 b(A)-9 b(VR)28 b(Lib)r(c)68 +b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(119)830 4103 y(15.2.1)k(Creating) +26 b(a)h(cvs)g(branc)n(h)61 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(119)830 +4250 y(15.2.2)k(Making)26 b(a)i(release)55 b(.)42 b(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(120)515 4480 y Fs(16)28 b(A)m(c)m(kno)m(wledgmen)m(ts)1851 +b(122)515 4709 y(17)28 b(T)-8 b(o)s(do)32 b(List)2196 +b(123)515 4939 y(18)28 b(Deprecated)33 b(List)1930 b(123)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 6 7 +TeXDict begin 6 6 bop 515 203 a Fs(CONTENTS)2248 b(vi)p +515 236 2865 4 v 515 523 a(19)28 b(Mo)s(dule)i(Index)2012 +b(124)639 670 y Fq(19.1)42 b(Mo)r(dules)k(.)c(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(124)515 900 y Fs(20)28 +b(Data)33 b(Structure)g(Index)1696 b(126)639 1047 y Fq(20.1)42 +b(Data)27 b(Structures)h(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(126)515 1277 y Fs(21)28 b(File)j(Index)2172 b(126)639 +1423 y Fq(21.1)42 b(File)28 b(List)46 b(.)c(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(126)515 1653 y Fs(22)28 +b(Mo)s(dule)i(Do)s(cumen)m(tation)1607 b(130)639 1800 +y Fq(22.1)42 b Fo(<)p Fq(allo)r(ca.h)p Fo(>)p Fq(:)35 +b(Allo)r(cate)28 b(space)e(in)i(the)g(stac)n(k)70 b(.)42 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(130)830 1947 y(22.1.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(130)830 2094 y(22.1.2)k(F)-7 b(unction)28 +b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(130)639 2241 +y(22.2)42 b Fo(<)p Fq(assert.h)p Fo(>)p Fq(:)35 b(Diagnostics)49 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(131)830 2388 y(22.2.1)k(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(131)830 2534 +y(22.2.2)k(De\034ne)28 b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(131)639 2681 y(22.3)42 b Fo(<)p Fq(ct)n(yp)r(e.h)p +Fo(>)p Fq(:)36 b(Character)26 b(Op)r(erations)77 b(.)41 +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(132)830 2828 y(22.3.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(132)830 2975 y(22.3.2)k(F)-7 b(unction)28 +b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(133)639 3122 +y(22.4)42 b Fo(<)p Fq(errno.h)p Fo(>)p Fq(:)35 b(System)28 +b(Errors)i(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(134)830 3269 y(22.4.1)k(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(134)830 3416 +y(22.4.2)k(De\034ne)28 b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(135)639 3563 y(22.5)42 b Fo(<)p Fq(in)n(tt)n(yp)r(es.h)p +Fo(>)p Fq(:)36 b(In)n(teger)27 b(T)n(yp)r(e)g(con)n(v)n(ersions)56 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(135)830 3709 y(22.5.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(135)830 3856 y(22.5.2)k(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(138)830 4003 +y(22.5.3)k(T)n(yp)r(edef)28 b(Do)r(cumen)n(tation)45 +b(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(147)639 4150 y(22.6)42 b Fo(<)p Fq(math.h)p +Fo(>)p Fq(:)36 b(Mathematics)81 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(147)830 4297 y(22.6.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(147)830 4444 y(22.6.2)k(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(148)830 4591 +y(22.6.3)k(F)-7 b(unction)28 b(Do)r(cumen)n(tation)21 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)48 b(149)639 4738 y(22.7)42 b Fo(<)p Fq(setjmp.h)p +Fo(>)p Fq(:)37 b(Non-lo)r(cal)26 b(goto)j(.)42 b(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(154)830 4884 y(22.7.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(154)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 7 8 +TeXDict begin 7 7 bop 515 203 a Fs(CONTENTS)2222 b(vii)p +515 236 2865 4 v 830 523 a Fq(22.7.2)52 b(F)-7 b(unction)28 +b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(155)639 670 y(22.8)42 +b Fo(<)p Fq(stdin)n(t.h)p Fo(>)p Fq(:)37 b(Standard)27 +b(In)n(teger)f(T)n(yp)r(es)54 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(156)830 817 y(22.8.1)k(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(156)830 964 y(22.8.2)k +(De\034ne)28 b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(160)830 +1111 y(22.8.3)k(T)n(yp)r(edef)28 b(Do)r(cumen)n(tation)45 +b(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(165)639 1257 y(22.9)42 b Fo(<)p Fq(stdio.h)p +Fo(>)p Fq(:)36 b(Standard)27 b(IO)g(facilities)41 b(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(168)830 1404 y(22.9.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(168)830 1551 y(22.9.2)k(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(173)830 1698 +y(22.9.3)k(F)-7 b(unction)28 b(Do)r(cumen)n(tation)21 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)48 b(176)639 1845 y(22.10)p Fo(<)p Fq(stdlib.h)p +Fo(>)p Fq(:)37 b(General)27 b(utilities)82 b(.)42 b(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(188)830 1992 y(22.10.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(188)830 2139 y(22.10.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(190)830 2285 +y(22.10.3)10 b(T)n(yp)r(edef)28 b(Do)r(cumen)n(tation)45 +b(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(191)830 2432 y(22.10.4)10 b(F)-7 b(unction)28 +b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(191)830 2579 +y(22.10.5)10 b(V)-7 b(ariable)26 b(Do)r(cumen)n(tation)41 +b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(200)639 2726 y(22.11)p Fo(<)p Fq(string.h)p +Fo(>)p Fq(:)36 b(Strings)81 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(200)830 2873 y(22.11.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(200)830 3020 y(22.11.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(201)830 3167 +y(22.11.3)10 b(F)-7 b(unction)28 b(Do)r(cumen)n(tation)21 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)48 b(202)639 3314 y(22.12)p Fo(<)p Fq(a)n(vr/b)r(o)r(ot.h)p +Fo(>)p Fq(:)34 b(Bo)r(otloader)26 b(Supp)r(ort)i(Utilities)e(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(213)830 +3460 y(22.12.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(213)830 3607 y(22.12.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(215)639 3754 +y(22.13)p Fo(<)p Fq(a)n(vr/eeprom.h)p Fo(>)p Fq(:)33 +b(EEPR)n(OM)c(handling)60 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)48 b(220)830 3901 y(22.13.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(220)830 4048 +y(22.13.2)10 b(De\034ne)28 b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(222)830 4195 y(22.13.3)10 b(F)-7 b(unction)28 b(Do)r(cumen)n(tation) +21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(222)639 4342 y(22.14)p Fo(<)p Fq(a)n(vr/fuse.h)p +Fo(>)p Fq(:)35 b(F)-7 b(use)27 b(Supp)r(ort)21 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(223)639 4489 y(22.15)p Fo(<)p Fq(a)n(vr/in)n(terrupt.h) +p Fo(>)p Fq(:)34 b(In)n(terrupts)84 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(227)830 +4635 y(22.15.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(227)830 4782 y(22.15.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(252)639 4929 +y(22.16)p Fo(<)p Fq(a)n(vr/io.h)p Fo(>)p Fq(:)34 b(A)-9 +b(VR)28 b(device-sp)r(eci\034c)f(IO)g(de\034nitions)52 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(256)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 8 9 +TeXDict begin 8 8 bop 515 203 a Fs(CONTENTS)2195 b(viii)p +515 236 2865 4 v 639 523 a Fq(22.17)p Fo(<)p Fq(a)n(vr/lo)r(c)n(k.h)p +Fo(>)p Fq(:)34 b(Lo)r(c)n(kbit)27 b(Supp)r(ort)34 b(.)41 +b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)48 b(257)639 670 y(22.18)p Fo(<)p Fq(a)n(vr/pgmspace.h)p +Fo(>)p Fq(:)33 b(Program)26 b(Space)h(Utilities)75 b(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(260)830 +817 y(22.18.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(260)830 964 y(22.18.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(262)830 1111 +y(22.18.3)10 b(T)n(yp)r(edef)28 b(Do)r(cumen)n(tation)45 +b(.)c(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(265)830 1257 y(22.18.4)10 b(F)-7 b(unction)28 +b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(267)639 1404 +y(22.19)p Fo(<)p Fq(a)n(vr/p)r(o)n(w)n(er.h)p Fo(>)p +Fq(:)33 b(P)n(o)n(w)n(er)26 b(Reduction)i(Managemen)n(t)h(.)41 +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(274)639 1551 +y(22.20A)n(dditional)28 b(notes)f(from)g Fo(<)p Fq(a)n(vr/sfr_defs.h)p +Fo(>)34 b Fq(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +48 b(276)639 1698 y(22.21)p Fo(<)p Fq(a)n(vr/sfr_defs.h)p +Fo(>)p Fq(:)34 b(Sp)r(ecial)27 b(function)h(registers)19 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(278)830 1845 y(22.21.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(278)830 1992 y(22.21.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(279)639 2139 +y(22.22)p Fo(<)p Fq(a)n(vr/sleep.h)p Fo(>)p Fq(:)34 b(P)n(o)n(w)n(er)26 +b(Managemen)n(t)h(and)g(Sleep)h(Mo)r(des)83 b(.)41 b(.)h(.)g(.)f(.)h(.) +48 b(280)830 2285 y(22.22.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(280)830 2432 y(22.22.2)10 b(F)-7 +b(unction)28 b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(281)639 +2579 y(22.23)p Fo(<)p Fq(a)n(vr/v)n(ersion.h)p Fo(>)p +Fq(:)33 b(a)n(vr-lib)r(c)26 b(v)n(ersion)g(macros)68 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(282)830 2726 y(22.23.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(282)830 2873 y(22.23.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(282)639 3020 +y(22.24)p Fo(<)p Fq(a)n(vr/wdt.h)p Fo(>)p Fq(:)35 b(W)-7 +b(atc)n(hdog)26 b(timer)i(handling)34 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(283)830 3167 y(22.24.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(283)830 +3314 y(22.24.2)10 b(De\034ne)28 b(Do)r(cumen)n(tation)46 +b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(285)639 3460 y(22.25)p Fo(<)p Fq(util/atomic.h)p +Fo(>)20 b Fq(A)n(tomically)h(and)g(Non-A)n(tomically)f(Executed)i(Co)r +(de)830 3560 y(Blo)r(c)n(ks)49 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(287)830 3707 y(22.25.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(287)830 +3854 y(22.25.2)10 b(De\034ne)28 b(Do)r(cumen)n(tation)46 +b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(289)639 4001 y(22.26)p Fo(<)p Fq(util/crc16.h)p +Fo(>)p Fq(:)35 b(CR)n(C)27 b(Computations)51 b(.)42 b(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(291)830 +4148 y(22.26.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(291)830 4294 y(22.26.2)10 b(F)-7 b(unction)28 +b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(292)639 4441 +y(22.27)p Fo(<)p Fq(util/dela)n(y)-7 b(.h)p Fo(>)p Fq(:)36 +b(Con)n(v)n(enience)26 b(functions)i(for)f(busy-w)n(ait)f(dela)n(y)h +(lo)r(ops)72 b(294)830 4588 y(22.27.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(294)830 4735 +y(22.27.2)10 b(F)-7 b(unction)28 b(Do)r(cumen)n(tation)21 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)48 b(295)639 4882 y(22.28)p Fo(<)p Fq(util/dela)n(y_basic.h)p +Fo(>)p Fq(:)34 b(Basic)27 b(busy-w)n(ait)g(dela)n(y)f(lo)r(ops)39 +b(.)i(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(296)p 515 5179 V +515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06) +e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 9 10 +TeXDict begin 9 9 bop 515 203 a Fs(CONTENTS)2248 b(ix)p +515 236 2865 4 v 830 523 a Fq(22.28.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(296)830 670 y(22.28.2)10 +b(F)-7 b(unction)28 b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(296)639 817 y(22.29)p Fo(<)p Fq(util/parit)n(y)-7 b(.h)p +Fo(>)p Fq(:)35 b(P)n(arit)n(y)27 b(bit)h(generation)53 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(297)830 964 y(22.29.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(297)830 1111 y(22.29.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(297)639 1257 +y(22.30)p Fo(<)p Fq(util/setbaud.h)p Fo(>)p Fq(:)36 b(Help)r(er)28 +b(macros)e(for)h(baud)g(rate)g(calculations)37 b(.)k(.)h(.)48 +b(298)830 1404 y(22.30.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(298)830 1551 y(22.30.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(299)639 1698 +y(22.31)p Fo(<)p Fq(util/t)n(wi.h)p Fo(>)p Fq(:)36 b(TWI)28 +b(bit)g(mask)f(de\034nitions)55 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(300)830 1845 y(22.31.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(300)830 1992 +y(22.31.2)10 b(De\034ne)28 b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(301)639 2139 y(22.32)p Fo(<)p Fq(compat/deprecated.h)p +Fo(>)p Fq(:)35 b(Deprecated)27 b(items)51 b(.)42 b(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(304)830 2285 y(22.32.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(304)830 +2432 y(22.32.2)10 b(De\034ne)28 b(Do)r(cumen)n(tation)46 +b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(306)830 2579 y(22.32.3)10 b(F)-7 b(unction)28 +b(Do)r(cumen)n(tation)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(307)639 2726 +y(22.33)p Fo(<)p Fq(compat/ina90.h)p Fo(>)p Fq(:)34 b(Compatibilit)n(y) +27 b(with)h(IAR)g(EWB)h(3.x)i(.)41 b(.)h(.)g(.)f(.)h(.)48 +b(308)639 2873 y(22.34Demo)28 b(pro)5 b(jects)80 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(308)830 3020 +y(22.34.1)10 b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(308)639 3167 y(22.35Com)n(bining)27 b(C)h(and)f(assem)n(bly)f(source) +h(\034les)33 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(309)830 3314 y(22.35.1)10 b(Hardw)n(are)25 +b(setup)30 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(310)830 3460 +y(22.35.2)10 b(A)28 b(co)r(de)f(w)n(alkthrough)60 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(310)830 3607 y(22.35.3)10 b(The)27 b(source)g(co)r(de) +77 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(313)639 3754 y(22.36A)28 +b(simple)g(pro)5 b(ject)68 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(313)830 3901 y(22.36.1)10 b(The)27 b(Pro)5 b(ject)36 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(313)830 4048 +y(22.36.2)10 b(The)27 b(Source)g(Co)r(de)41 b(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(316)830 4195 y(22.36.3)10 b(Compiling)27 b(and)g(Linking)22 +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)48 b(317)830 4342 y(22.36.4)10 b(Examining)27 +b(the)h(Ob)5 b(ject)28 b(File)81 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(318)830 4489 +y(22.36.5)10 b(Link)n(er)26 b(Map)i(Files)45 b(.)d(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(324)830 4635 y(22.36.6)10 b(Generating)26 b(In)n(tel)i(Hex)g(Files)d +(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)48 b(326)830 4782 y(22.36.7)10 b(Letting)27 b(Mak)n(e)g(Build)h(the) +g(Pro)5 b(ject)33 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(327)830 4929 y(22.36.8)10 b(Reference)27 +b(to)g(the)h(source)f(co)r(de)78 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(330)p 515 5179 V +515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06) +e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 10 11 +TeXDict begin 10 10 bop 515 203 a Fs(CONTENTS)2275 b(x)p +515 236 2865 4 v 639 523 a Fq(22.37A)28 b(more)f(sophisticated)g(pro)5 +b(ject)72 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(330)830 670 y(22.37.1)10 +b(Hardw)n(are)25 b(setup)30 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(330)830 817 y(22.37.2)10 b(F)-7 b(unctional)27 b(o)n(v)n(erview)68 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(334)830 964 y(22.37.3)10 b(A)28 +b(co)r(de)f(w)n(alkthrough)60 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(335)830 +1111 y(22.37.4)10 b(The)27 b(source)g(co)r(de)77 b(.)42 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)48 b(338)639 1257 y(22.38Using)27 +b(the)h(standard)f(IO)g(facilities)48 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(338)830 +1404 y(22.38.1)10 b(Hardw)n(are)25 b(setup)30 b(.)41 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(338)830 1551 y(22.38.2)10 +b(F)-7 b(unctional)27 b(o)n(v)n(erview)68 b(.)42 b(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(340)830 1698 y(22.38.3)10 b(A)28 b(co)r(de)f(w)n(alkthrough)60 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(340)830 1845 y(22.38.4)10 b(The)27 +b(source)g(co)r(de)77 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(346)639 +1992 y(22.39Example)28 b(using)f(the)h(t)n(w)n(o-wire)e(in)n(terface)h +(\(TWI\))d(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(346)830 2139 y(22.39.1)10 b(In)n(tro)r(duction)27 b(in)n(to)g(TWI)35 +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)48 b(346)830 2285 y(22.39.2)10 b(The)27 b(TWI)h(example)f +(pro)5 b(ject)34 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(347)830 2432 y(22.39.3)10 +b(The)27 b(Source)g(Co)r(de)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(347)515 2662 y Fs(23)28 b(Data)33 b(Structure)g(Do)s(cumen)m(tation) +1291 b(351)639 2809 y Fq(23.1)42 b(div_t)28 b(Struct)f(Reference)g(.)41 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(351)830 2956 y(23.1.1)k(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(351)830 3103 +y(23.1.2)k(Field)28 b(Do)r(cumen)n(tation)f(.)42 b(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(351)639 3250 y(23.2)42 b(ldiv_t)28 b(Struct)g(Reference)67 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(352)830 3397 y(23.2.1)k(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(352)830 3543 +y(23.2.2)k(Field)28 b(Do)r(cumen)n(tation)f(.)42 b(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(352)515 3773 y Fs(24)28 b(File)j(Do)s(cumen)m(tation)1767 +b(352)639 3920 y Fq(24.1)42 b(assert.h)27 b(File)g(Reference)48 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(352)830 4067 y(24.1.1)k(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(352)639 4214 +y(24.2)42 b(atoi.S)27 b(File)h(Reference)53 b(.)42 b(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(353)830 4361 y(24.2.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(353)639 4508 y(24.3)42 b(atol.S)27 +b(File)h(Reference)53 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(353)830 4655 y(24.3.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(353)639 4801 y(24.4)42 b(atomic.h)27 +b(File)h(Reference)76 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(353)830 +4948 y(24.4.1)k(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(353)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 11 12 +TeXDict begin 11 11 bop 515 203 a Fs(CONTENTS)2248 b(xi)p +515 236 2865 4 v 639 523 a Fq(24.5)42 b(b)r(o)r(ot.h)28 +b(File)g(Reference)d(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(353)830 670 y(24.5.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(353)830 817 y(24.5.2)k(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(355)639 964 y(24.6)42 +b(crc16.h)26 b(File)i(Reference)67 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(360)830 1111 y(24.6.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(360)639 1257 y(24.7)42 b(ct)n(yp)r(e.h)28 +b(File)g(Reference)60 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(360)830 1404 y(24.7.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(360)639 1551 y(24.8)42 b(dela)n(y)-7 +b(.h)27 b(File)h(Reference)74 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(361)830 1698 y(24.8.1)k(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(361)639 1845 y(24.9)42 b(dela)n(y_basic.h)26 +b(File)i(Reference)80 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(361)830 1992 +y(24.9.1)k(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(361)639 2139 y(24.10errno.h)26 b(File)i(Reference)67 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(361)830 2285 y(24.10.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(361)639 +2432 y(24.11fdev)n(op)r(en.c)28 b(File)f(Reference)72 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(362)830 2579 y(24.11.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(362)639 2726 +y(24.12\033s.S)28 b(File)g(Reference)46 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.) +g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(362)830 2873 y(24.12.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(362)639 3020 y(24.13\033sl.S)28 +b(File)g(Reference)23 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(362)830 3167 y(24.13.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(362)639 3314 y(24.14\033sll.S)28 +b(File)g(Reference)64 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(362)830 3460 y(24.14.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(362)639 3607 y(24.15fuse.h)28 b(File)g(Reference) +50 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(362)830 3754 +y(24.15.1)10 b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(362)639 3901 y(24.16in)n(terrupt.h)28 b(File)f(Reference)60 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(362)830 4048 y(24.16.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(362)639 4195 +y(24.17in)n(tt)n(yp)r(es.h)28 b(File)g(Reference)h(.)42 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)48 b(363)830 4342 y(24.17.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(363)639 4489 +y(24.18io.h)28 b(File)f(Reference)63 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)48 b(366)830 4635 y(24.18.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(366)639 4782 y(24.19lo)r(c)n(k.h)27 +b(File)h(Reference)46 b(.)c(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(366)830 4929 y(24.19.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(366)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 12 13 +TeXDict begin 12 12 bop 515 203 a Fs(CONTENTS)2222 b(xii)p +515 236 2865 4 v 639 523 a Fq(24.20math.h)28 b(File)g(Reference)67 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(366)830 670 y(24.20.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(366)639 +817 y(24.21memccp)n(y)-7 b(.S)28 b(File)g(Reference)55 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(368)830 964 y(24.21.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)639 1111 +y(24.22memc)n(hr.S)27 b(File)h(Reference)k(.)42 b(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(368)830 1257 y(24.22.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(368)639 1404 y(24.23memc)n(hr_P)-7 +b(.S)28 b(File)f(Reference)47 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)830 +1551 y(24.23.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(368)639 1698 y(24.24memcmp.S)28 b(File)g(Reference)58 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(368)830 1845 y(24.24.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)639 1992 +y(24.25memcmp_P)-7 b(.S)29 b(File)e(Reference)73 b(.)42 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)48 b(368)830 2139 y(24.25.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(368)639 2285 y(24.26memcp)n(y)-7 +b(.S)28 b(File)g(Reference)f(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(368)830 2432 y(24.26.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(368)639 2579 y(24.27memcp)n(y_P)-7 +b(.S)28 b(File)g(Reference)35 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)830 +2726 y(24.27.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(368)639 2873 y(24.28memmem.S)28 b(File)g(Reference)35 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(368)830 3020 y(24.28.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)639 3167 +y(24.29memmo)n(v)n(e.S)27 b(File)h(Reference)23 b(.)41 +b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)48 b(368)830 3314 y(24.29.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)639 3460 +y(24.30memrc)n(hr.S)27 b(File)h(Reference)64 b(.)41 b(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(368)830 3607 y(24.30.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(368)639 3754 y(24.31memrc)n(hr_P)-7 +b(.S)27 b(File)h(Reference)79 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)830 +3901 y(24.31.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(368)639 4048 y(24.32memset.S)28 b(File)g(Reference)43 +b(.)f(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(368)830 4195 y(24.32.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)639 +4342 y(24.33parit)n(y)-7 b(.h)27 b(File)h(Reference)46 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)830 4489 y(24.33.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(368)639 +4635 y(24.34pgmspace.h)27 b(File)h(Reference)34 b(.)41 +b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)48 b(369)830 4782 y(24.34.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(369)830 4929 +y(24.34.2)10 b(De\034ne)28 b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(371)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 13 14 +TeXDict begin 13 13 bop 515 203 a Fs(CONTENTS)2195 b(xiii)p +515 236 2865 4 v 639 523 a Fq(24.35p)r(o)n(w)n(er.h)27 +b(File)g(Reference)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(377)830 +670 y(24.35.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(377)830 817 y(24.35.2)10 b(De\034ne)28 +b(Do)r(cumen)n(tation)46 b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(378)639 964 y(24.36setbaud.h)28 +b(File)g(Reference)38 b(.)k(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(378)830 +1111 y(24.36.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(378)639 1257 y(24.37setjmp.h)29 b(File)e(Reference)78 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(378)830 1404 y(24.37.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(378)639 +1551 y(24.38sleep.h)28 b(File)g(Reference)80 b(.)41 b(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)48 b(379)830 1698 y(24.38.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(379)639 1845 y(24.39stdin)n(t.h)28 +b(File)g(Reference)46 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(379)830 1992 y(24.39.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(379)639 2139 y(24.40stdio.h)28 b(File)g(Reference) +80 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(382)830 2285 y(24.40.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(382)639 +2432 y(24.41stdlib.h)28 b(File)g(Reference)53 b(.)41 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(384)830 2579 y(24.41.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(384)639 +2726 y(24.42strcasecmp.S)27 b(File)h(Reference)51 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(387)830 2873 y(24.42.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)639 3020 +y(24.43strcasecmp_P)-7 b(.S)27 b(File)h(Reference)67 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) +f(.)h(.)48 b(387)830 3167 y(24.43.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)639 3314 +y(24.44strcasestr.S)26 b(File)i(Reference)42 b(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(387)830 3460 y(24.44.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(387)639 3607 y(24.45strcat.S)27 +b(File)h(Reference)48 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(387)830 3754 y(24.45.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(387)639 3901 y(24.46strcat_P)-7 +b(.S)27 b(File)h(Reference)63 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(387)830 4048 y(24.46.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(387)639 4195 y(24.47strc)n(hr.S)27 +b(File)h(Reference)45 b(.)c(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 +4342 y(24.47.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(387)639 4489 y(24.48strc)n(hr_P)-7 b(.S)27 +b(File)h(Reference)60 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 +4635 y(24.48.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(387)639 4782 y(24.49strc)n(hrn)n(ul.S)27 +b(File)h(Reference)61 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 +4929 y(24.49.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(387)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 14 15 +TeXDict begin 14 14 bop 515 203 a Fs(CONTENTS)2198 b(xiv)p +515 236 2865 4 v 639 523 a Fq(24.50strc)n(hrn)n(ul_P)-7 +b(.S)27 b(File)h(Reference)76 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 +670 y(24.50.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(387)639 817 y(24.51strcmp.S)28 b(File)g(Reference)70 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 964 y(24.51.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)639 +1111 y(24.52strcmp_P)-7 b(.S)28 b(File)g(Reference)21 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(387)830 1257 y(24.52.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)639 1404 +y(24.53strcp)n(y)-7 b(.S)27 b(File)h(Reference)41 b(.)g(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)48 b(387)830 1551 y(24.53.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(387)639 1698 y(24.54strcp)n(y_P)-7 +b(.S)27 b(File)h(Reference)49 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(387)830 1845 y(24.54.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(387)639 1992 y(24.55strcspn.S)27 +b(File)h(Reference)61 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 +2139 y(24.55.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(387)639 2285 y(24.56strcspn_P)-7 b(.S)27 +b(File)h(Reference)76 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 2432 +y(24.56.1)10 b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(387)639 2579 y(24.57strdup.c)28 b(File)f(Reference)j(.)41 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(387)830 2726 y(24.57.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(387)639 +2873 y(24.58string.h)27 b(File)h(Reference)48 b(.)41 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)48 b(388)830 3020 y(24.58.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(388)639 +3167 y(24.59strlcat.S)27 b(File)h(Reference)d(.)41 b(.)h(.)f(.)h(.)g(.) +f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h +(.)48 b(390)830 3314 y(24.59.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)639 3460 y(24.60strlcat_P)-7 +b(.S)27 b(File)h(Reference)40 b(.)h(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 +3607 y(24.60.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(390)639 3754 y(24.61strlcp)n(y)-7 b(.S)27 +b(File)h(Reference)82 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 +3901 y(24.61.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(390)639 4048 y(24.62strlcp)n(y_P)-7 b(.S)27 +b(File)h(Reference)e(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 4195 +y(24.62.1)10 b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)639 4342 y(24.63strlen.S)28 b(File)f(Reference)53 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 4489 y(24.63.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 +4635 y(24.64strlen_P)-7 b(.S)28 b(File)g(Reference)67 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(390)830 4782 y(24.64.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 4929 +y(24.65strlwr.S)27 b(File)h(Reference)43 b(.)e(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 15 16 +TeXDict begin 15 15 bop 515 203 a Fs(CONTENTS)2224 b(xv)p +515 236 2865 4 v 830 523 a Fq(24.65.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 670 y +(24.66strncasecmp.S)27 b(File)h(Reference)70 b(.)42 b(.)f(.)h(.)f(.)h +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)830 817 y(24.66.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)639 964 y(24.67strncasecmp_P)-7 +b(.S)27 b(File)h(Reference)21 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 1111 +y(24.67.1)10 b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)639 1257 y(24.68strncat.S)27 b(File)h(Reference)66 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 1404 y(24.68.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 +1551 y(24.69strncat_P)-7 b(.S)27 b(File)h(Reference)81 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)830 1698 y(24.69.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 1845 +y(24.70strncmp.S)28 b(File)g(Reference)c(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)830 1992 y(24.70.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)639 2139 y(24.71strncmp_P)-7 +b(.S)28 b(File)g(Reference)39 b(.)j(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 +2285 y(24.71.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(390)639 2432 y(24.72strncp)n(y)-7 b(.S)27 +b(File)h(Reference)59 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 +2579 y(24.72.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(390)639 2726 y(24.73strncp)n(y_P)-7 b(.S)27 +b(File)h(Reference)67 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 2873 +y(24.73.1)10 b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)639 3020 y(24.74strnlen.S)28 b(File)g(Reference)70 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) +h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 3167 y(24.74.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 +3314 y(24.75strnlen_P)-7 b(.S)28 b(File)g(Reference)21 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(390)830 3460 y(24.75.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 3607 +y(24.76strpbrk.S)27 b(File)h(Reference)54 b(.)42 b(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)830 3754 y(24.76.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)639 3901 y(24.77strpbrk_P)-7 +b(.S)27 b(File)h(Reference)69 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 +4048 y(24.77.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(390)639 4195 y(24.78strrc)n(hr.S)26 b(File)i(Reference) +77 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 4342 y(24.78.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 +4489 y(24.79strrc)n(hr_P)-7 b(.S)26 b(File)i(Reference)g(.)41 +b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)48 b(390)830 4635 y(24.79.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 4782 +y(24.80strrev.S)27 b(File)h(Reference)45 b(.)c(.)h(.)f(.)h(.)g(.)f(.)h +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)830 4929 y(24.80.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 1 17 +TeXDict begin 1 16 bop 515 203 a Fs(1)31 b(A)-11 b(VR)32 +b(Lib)s(c)2318 b(1)p 515 236 2865 4 v 639 523 a Fq(24.81strsep.S)27 +b(File)h(Reference)43 b(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 +670 y(24.81.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(390)639 817 y(24.82strsep_P)-7 b(.S)27 +b(File)h(Reference)58 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 +964 y(24.82.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(390)639 1111 y(24.83strspn.S)27 b(File)h(Reference)34 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)830 1257 y(24.83.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 +1404 y(24.84strspn_P)-7 b(.S)28 b(File)f(Reference)49 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) +f(.)h(.)g(.)f(.)h(.)48 b(390)830 1551 y(24.84.1)10 b(Detailed)28 +b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(390)639 1698 +y(24.85strstr.S)27 b(File)h(Reference)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f +(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +48 b(390)830 1845 y(24.85.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)639 1992 y(24.86strstr_P)-7 +b(.S)27 b(File)h(Reference)76 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)830 2139 y(24.86.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)639 2285 y(24.87strtok.c)27 +b(File)h(Reference)50 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 +b(390)830 2432 y(24.87.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(390)639 2579 y(24.88strtok_r.S)26 +b(File)i(Reference)73 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(391)830 +2726 y(24.88.1)10 b(Detailed)28 b(Description)49 b(.)42 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)48 b(391)639 2873 y(24.89strupr.S)27 b(File)h(Reference)34 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) +f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(391)830 3020 y(24.89.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(391)639 +3167 y(24.90t)n(wi.h)28 b(File)g(Reference)78 b(.)42 +b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f +(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(391)830 3314 y(24.90.1)10 +b(Detailed)28 b(Description)49 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(391)639 +3460 y(24.91wdt.h)28 b(File)g(Reference)53 b(.)42 b(.)f(.)h(.)f(.)h(.)g +(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) +h(.)48 b(392)830 3607 y(24.91.1)10 b(Detailed)28 b(Description)49 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) +h(.)g(.)f(.)h(.)48 b(392)515 3929 y Fr(1)131 b(A)-15 +b(VR)44 b(Lib)t(c)515 4175 y Fn(1.1)112 b(In)m(tro)s(duction)515 +4375 y Fq(The)104 b(latest)f(v)n(ersion)g(of)h(this)g(do)r(cumen)n(t)g +(is)g(alw)n(a)n(ys)e(a)n(v)-5 b(ailable)102 b(from)515 +4475 y Fm(http://savannah)o(.no)o(ng)o(nu)o(.or)o(g/)o(pr)o(oje)o(ct)o +(s/)o(avr)o(-l)o(ibc)o(/)515 4622 y Fq(The)32 b(A)-9 +b(VR)32 b(Lib)r(c)g(pac)n(k)-5 b(age)30 b(pro)n(vides)g(a)i(subset)f +(of)h(the)g(standard)f(C)h(library)e(for)h Fm(Atmel)515 +4721 y(AVR)42 b(8-bit)f(RISC)h(microcontrollers)p Fq(.)31 +b(In)c(addition,)h(the)g(library)e(pro)n(vides)g(the)i(ba-)515 +4821 y(sic)f(startup)g(co)r(de)h(needed)f(b)n(y)h(most)f(applications.) +515 4968 y(There)33 b(is)h(a)f(w)n(ealth)g(of)h(information)f(in)h +(this)g(do)r(cumen)n(t)g(whic)n(h)g(go)r(es)f(b)r(ey)n(ond)g(simply)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 2 18 +TeXDict begin 2 17 bop 515 203 a Fs(1.2)94 b(General)32 +b(information)f(ab)s(out)g(this)h(library)982 b(2)p 515 +236 2865 4 v 515 523 a Fq(describing)33 b(the)i(in)n(terfaces)e(and)h +(routines)g(pro)n(vided)f(b)n(y)h(the)h(library)-7 b(.)56 +b(W)-7 b(e)34 b(hop)r(e)h(that)515 623 y(this)28 b(do)r(cumen)n(t)h +(pro)n(vides)d(enough)i(information)f(to)h(get)g(a)g(new)g(A)-9 +b(VR)29 b(dev)n(elop)r(er)e(up)h(to)515 722 y(sp)r(eed)c(quic)n(kly)g +(using)f(the)i(freely)f(a)n(v)-5 b(ailable)23 b(dev)n(elopmen)n(t)g(to) +r(ols:)35 b(bin)n(utils,)25 b(gcc)e(a)n(vr-lib)r(c)515 +822 y(and)k(man)n(y)g(others.)515 969 y(If)63 b(y)n(ou)e(\034nd)i(y)n +(ourself)e(stuc)n(k)h(on)g(a)g(problem)g(whic)n(h)h(this)f(do)r(cumen)n +(t)h(do)r(esn't)515 1068 y(quite)55 b(address,)61 b(y)n(ou)55 +b(ma)n(y)f(wish)h(to)g(p)r(ost)h(a)e(message)g(to)h(the)h(a)n(vr-gcc)d +(mailing)515 1168 y(list.)97 b(Most)47 b(of)h(the)g(dev)n(elop)r(ers)e +(of)i(the)g(A)-9 b(VR)48 b(bin)n(utils)g(and)f(gcc)g(p)r(orts)h(in)g +(addi-)515 1268 y(tion)43 b(to)g(the)g(devleop)r(ers)f(of)h(a)n(vr-lib) +r(c)f(subscrib)r(e)g(to)h(the)h(list,)j(so)42 b(y)n(ou)g(will)i +(usually)515 1367 y(b)r(e)50 b(able)f(to)g(get)h(y)n(our)e(problem)h +(resolv)n(ed.)101 b(Y)-7 b(ou)50 b(can)f(subscrib)r(e)g(to)g(the)h +(list)g(at)515 1467 y Fm(http://lists.no)o(ngn)o(u.)o(or)o(g/m)o(ai)o +(lm)o(an/)o(li)o(st)o(inf)o(o/)o(avr)o(-g)o(cc)o(-li)o(st)26 +b Fq(.)52 b(Before)31 b(p)r(ost-)515 1567 y(ing)f(to)h(the)g(list,)h(y) +n(ou)e(migh)n(t)h(w)n(an)n(t)f(to)h(try)f(reading)g(the)h +Fs(F)-8 b(requen)m(tly)36 b(Ask)m(ed)g(Ques-)515 1666 +y(tions)26 b Fq(\(p.)14 b(60\))28 b(c)n(hapter)e(of)i(this)g(do)r +(cumen)n(t.)506 1883 y Fs(Note:)676 2032 y Fq(If)20 b(y)n(ou)e(think)h +(y)n(ou'v)n(e)f(found)h(a)g(bug,)i(or)d(ha)n(v)n(e)g(a)g(suggestion)g +(for)g(an)h(impro)n(v)n(emen)n(t,)g(ei-)676 2132 y(ther)i(in)h(this)g +(do)r(cumen)n(tation)f(or)f(in)i(the)g(library)e(itself,)j(please)e +(use)g(the)h(bug)f(trac)n(k)n(er)676 2231 y(at)29 b Fm +(https://savannah)o(.no)o(ng)o(nu)o(.or)o(g/)o(bu)o(gs/)o(?g)o(ro)o +(up=)o(av)o(r-l)o(ib)o(c)23 b Fq(to)29 b(ensure)g(the)676 +2331 y(issue)e(w)n(on't)h(b)r(e)g(forgotten.)515 2611 +y Fn(1.2)112 b(General)38 b(information)h(ab)s(out)f(this)f(library)515 +2811 y Fq(In)28 b(general,)f(it)i(has)e(b)r(een)i(the)g(goal)d(to)j +(stic)n(k)e(as)h(b)r(est)g(as)g(p)r(ossible)g(to)g(established)g(stan-) +515 2911 y(dards)i(while)h(implemen)n(ting)g(this)h(library)-7 +b(.)45 b(Commonly)-7 b(,)32 b(this)f(refers)f(to)h(the)g(C)g(library) +515 3010 y(as)38 b(describ)r(ed)g(b)n(y)g(the)i(ANSI)f(X3.159-1989)c +(and)j(ISO/IEC)g(9899:1990)d(\("ANSI-C"\))515 3110 y(standard,)25 +b(as)f(w)n(ell)h(as)g(parts)f(of)i(their)f(successor)e(ISO/IEC)i +(9899:1999)d(\("C99"\).)34 b(Some)515 3210 y(additions)40 +b(ha)n(v)n(e)g(b)r(een)i(inspired)f(b)n(y)f(other)h(standards)f(lik)n +(e)g(IEEE)j(Std)f(1003.1-1988)515 3309 y(\("POSIX.1"\),)d(while)e +(other)g(extensions)f(are)g(purely)h(A)-9 b(VR-sp)r(eci\034c)37 +b(\(lik)n(e)g(the)h(en)n(tire)515 3409 y(program-space)24 +b(string)j(in)n(terface\).)515 3556 y(Unless)f(otherwise)f(noted,)h +(functions)h(of)f(this)g(library)f(are)g Fl(not)34 b +Fq(guaran)n(teed)24 b(to)i(b)r(e)h(reen-)515 3655 y(tran)n(t.)43 +b(In)31 b(particular,)e(an)n(y)g(functions)h(that)h(store)e(lo)r(cal)g +(state)h(are)f(kno)n(wn)g(to)h(b)r(e)h(non-)515 3755 +y(reen)n(tran)n(t,)d(as)h(w)n(ell)h(as)f(functions)h(that)f(manipulate) +h(IO)f(registers)f(lik)n(e)h(the)h(EEPR)n(OM)515 3855 +y(access)36 b(routines.)66 b(If)37 b(these)h(functions)g(are)e(used)h +(within)h(b)r(oth)g(standard)f(and)g(in)n(ter-)515 3954 +y(rupt)27 b(con)n(texts)f(unde\034ned)h(b)r(eha)n(viour)e(will)i +(result.)37 b(See)26 b(the)h(F)-9 b(A)n(Q)27 b(for)f(a)g(more)g +(detailed)515 4054 y(discussion.)515 4334 y Fn(1.3)112 +b(Supp)s(orted)38 b(Devices)515 4534 y Fq(The)27 b(follo)n(wing)f(is)h +(a)g(list)h(of)f(A)-9 b(VR)28 b(devices)f(curren)n(tly)f(supp)r(orted)h +(b)n(y)g(the)h(library)-7 b(.)35 b(Note)515 4634 y(that)29 +b(actual)g(supp)r(ort)g(for)f(some)h(new)n(er)f(devices)h(dep)r(ends)h +(on)f(the)g(abilit)n(y)g(of)g(the)h(com-)515 4733 y(piler/assem)n(bler) +25 b(to)i(supp)r(ort)h(these)f(devices)g(at)h(library)e(compile-time.)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 3 19 +TeXDict begin 3 18 bop 515 203 a Fs(1.3)94 b(Supp)s(orted)32 +b(Devices)1813 b(3)p 515 236 2865 4 v 506 497 a(megaA)-11 +b(VR)32 b(Devices:)639 889 y Fk(\210)41 b Fq(atmega103)639 +1054 y Fk(\210)g Fq(atmega128)639 1219 y Fk(\210)g Fq(atmega1280)639 +1383 y Fk(\210)g Fq(atmega1281)639 1548 y Fk(\210)g Fq(atmega1284p)639 +1713 y Fk(\210)g Fq(atmega16)639 1877 y Fk(\210)g Fq(atmega161)639 +2042 y Fk(\210)g Fq(atmega162)639 2207 y Fk(\210)g Fq(atmega163)639 +2371 y Fk(\210)g Fq(atmega164p)639 2536 y Fk(\210)g Fq(atmega165)639 +2701 y Fk(\210)g Fq(atmega165p)639 2865 y Fk(\210)g Fq(atmega168)639 +3030 y Fk(\210)g Fq(atmega168p)639 3195 y Fk(\210)g Fq(atmega2560)639 +3359 y Fk(\210)g Fq(atmega2561)639 3524 y Fk(\210)g Fq(atmega32)639 +3689 y Fk(\210)g Fq(atmega323)639 3854 y Fk(\210)g Fq(atmega324p)639 +4018 y Fk(\210)g Fq(atmega325)639 4183 y Fk(\210)g Fq(atmega325p)639 +4348 y Fk(\210)g Fq(atmega3250)639 4512 y Fk(\210)g Fq(atmega3250p)639 +4677 y Fk(\210)g Fq(atmega328p)639 4842 y Fk(\210)g Fq(atmega48)639 +5006 y Fk(\210)g Fq(atmega48p)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 4 20 +TeXDict begin 4 19 bop 515 203 a Fs(1.3)94 b(Supp)s(orted)32 +b(Devices)1813 b(4)p 515 236 2865 4 v 639 523 a Fk(\210)41 +b Fq(atmega64)639 689 y Fk(\210)g Fq(atmega640)639 855 +y Fk(\210)g Fq(atmega644)639 1021 y Fk(\210)g Fq(atmega644p)639 +1187 y Fk(\210)g Fq(atmega645)639 1353 y Fk(\210)g Fq(atmega6450)639 +1519 y Fk(\210)g Fq(atmega8)639 1685 y Fk(\210)g Fq(atmega88)639 +1851 y Fk(\210)g Fq(atmega88p)639 2017 y Fk(\210)g Fq(atmega8515)639 +2183 y Fk(\210)g Fq(atmega8535)506 2395 y Fs(tin)m(yA)-11 +b(VR)33 b(Devices:)639 2791 y Fk(\210)41 b Fq(attin)n(y11)27 +b Fs([1])f Fq(\(p.)14 b(7\))639 2957 y Fk(\210)41 b Fq(attin)n(y12)27 +b Fs([1])f Fq(\(p.)14 b(7\))639 3123 y Fk(\210)41 b Fq(attin)n(y13)639 +3289 y Fk(\210)g Fq(attin)n(y13a)639 3455 y Fk(\210)g +Fq(attin)n(y15)27 b Fs([1])f Fq(\(p.)14 b(7\))639 3621 +y Fk(\210)41 b Fq(attin)n(y22)639 3787 y Fk(\210)g Fq(attin)n(y24)639 +3953 y Fk(\210)g Fq(attin)n(y25)639 4119 y Fk(\210)g +Fq(attin)n(y26)639 4285 y Fk(\210)g Fq(attin)n(y261)639 +4451 y Fk(\210)g Fq(attin)n(y28)27 b Fs([1])f Fq(\(p.)14 +b(7\))639 4617 y Fk(\210)41 b Fq(attin)n(y2313)639 4783 +y Fk(\210)g Fq(attin)n(y43u)639 4950 y Fk(\210)g Fq(attin)n(y44)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 5 21 +TeXDict begin 5 20 bop 515 203 a Fs(1.3)94 b(Supp)s(orted)32 +b(Devices)1813 b(5)p 515 236 2865 4 v 639 523 a Fk(\210)41 +b Fq(attin)n(y45)639 689 y Fk(\210)g Fq(attin)n(y461)639 +855 y Fk(\210)g Fq(attin)n(y48)639 1021 y Fk(\210)g Fq(attin)n(y84)639 +1187 y Fk(\210)g Fq(attin)n(y85)639 1353 y Fk(\210)g +Fq(attin)n(y861)639 1519 y Fk(\210)g Fq(attin)n(y88)506 +1731 y Fs(Automotiv)m(e)32 b(A)-11 b(VR)32 b(Devices:)776 +1881 y Fk(\210)41 b Fq(atmega32c1)776 2014 y Fk(\210)g +Fq(atmega32m1)776 2146 y Fk(\210)g Fq(attin)n(y167)506 +2358 y Fs(CAN)32 b(A)-11 b(VR)32 b(Devices:)639 2738 +y Fk(\210)41 b Fq(at90can32)639 2904 y Fk(\210)g Fq(at90can64)639 +3070 y Fk(\210)g Fq(at90can128)506 3266 y Fs(LCD)33 b(A)-11 +b(VR)32 b(Devices:)639 3645 y Fk(\210)41 b Fq(atmega169)639 +3811 y Fk(\210)g Fq(atmega169p)639 3977 y Fk(\210)g Fq(atmega329)639 +4143 y Fk(\210)g Fq(atmega329p)639 4309 y Fk(\210)g Fq(atmega3290)639 +4475 y Fk(\210)g Fq(atmega3290p)639 4641 y Fk(\210)g +Fq(atmega649)639 4807 y Fk(\210)g Fq(atmega6490)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 6 22 +TeXDict begin 6 21 bop 515 203 a Fs(1.3)94 b(Supp)s(orted)32 +b(Devices)1813 b(6)p 515 236 2865 4 v 506 497 a(Ligh)m(ting)32 +b(A)-11 b(VR)32 b(Devices:)639 884 y Fk(\210)41 b Fq(at90p)n(wm1)639 +1047 y Fk(\210)g Fq(at90p)n(wm2)639 1210 y Fk(\210)g +Fq(at90p)n(wm2b)639 1373 y Fk(\210)g Fq(at90p)n(wm216)639 +1535 y Fk(\210)g Fq(at90p)n(wm3)639 1698 y Fk(\210)g +Fq(at90p)n(wm3b)639 1861 y Fk(\210)g Fq(at90p)n(wm316)506 +2064 y Fs(Smart)33 b(Battery)f(A)-11 b(VR)33 b(Devices:)639 +2451 y Fk(\210)41 b Fq(atmega8h)n(v)-5 b(a)639 2614 y +Fk(\210)41 b Fq(atmega16h)n(v)-5 b(a)639 2777 y Fk(\210)41 +b Fq(atmega32h)n(vb)639 2940 y Fk(\210)g Fq(atmega406)506 +3143 y Fs(USB)33 b(A)-11 b(VR)32 b(Devices:)639 3514 +y Fk(\210)41 b Fq(at90usb82)639 3677 y Fk(\210)g Fq(at90usb162)639 +3840 y Fk(\210)g Fq(at90usb646)639 4002 y Fk(\210)g Fq(at90usb647)639 +4165 y Fk(\210)g Fq(at90usb1286)639 4328 y Fk(\210)g +Fq(at90usb1287)639 4490 y Fk(\210)g Fq(atmega32u4)639 +4653 y Fk(\210)g Fq(atmega32u6)506 4857 y Fs(XMEGA)32 +b(Devices:)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 7 23 +TeXDict begin 7 22 bop 515 203 a Fs(1.3)94 b(Supp)s(orted)32 +b(Devices)1813 b(7)p 515 236 2865 4 v 639 523 a Fk(\210)41 +b Fq(atxmega64a1)639 689 y Fk(\210)g Fq(atxmega64a3)639 +855 y Fk(\210)g Fq(atxmega128a1)639 1021 y Fk(\210)g +Fq(atxmega128a3)639 1187 y Fk(\210)g Fq(atxmega256a3)639 +1353 y Fk(\210)g Fq(atxmega256a3b)506 1565 y Fs(Miscellaneous)30 +b(Devices:)639 1945 y Fk(\210)41 b Fq(at94K)26 b Fs([2])h +Fq(\(p.)14 b(8\))639 2111 y Fk(\210)41 b Fq(at76c711)25 +b Fs([3])i Fq(\(p.)14 b(8\))639 2277 y Fk(\210)41 b Fq(at43usb320)639 +2443 y Fk(\210)g Fq(at43usb355)639 2609 y Fk(\210)g Fq(at86rf401)506 +2805 y Fs(Classic)31 b(A)-11 b(VR)32 b(Devices:)639 3184 +y Fk(\210)41 b Fq(at90s1200)24 b Fs([1])j Fq(\(p.)14 +b(7\))639 3350 y Fk(\210)41 b Fq(at90s2313)639 3516 y +Fk(\210)g Fq(at90s2323)639 3682 y Fk(\210)g Fq(at90s2333)639 +3848 y Fk(\210)g Fq(at90s2343)639 4014 y Fk(\210)g Fq(at90s4414)639 +4180 y Fk(\210)g Fq(at90s4433)639 4346 y Fk(\210)g Fq(at90s4434)639 +4512 y Fk(\210)g Fq(at90s8515)639 4678 y Fk(\210)g Fq(at90c8534)639 +4844 y Fk(\210)g Fq(at90s8535)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 8 24 +TeXDict begin 8 23 bop 515 203 a Fs(1.4)94 b(a)m(vr-lib)s(c)32 +b(License)1946 b(8)p 515 236 2865 4 v 506 497 a(Note:)676 +647 y([1])28 b Fq(Assem)n(bly)h(only)-7 b(.)42 b(There)29 +b(is)g(no)h(direct)f(supp)r(ort)g(for)g(these)g(devices)g(to)g(b)r(e)h +(pro-)676 746 y(grammed)g(in)i(C)g(since)f(they)g(do)h(not)f(ha)n(v)n +(e)f(a)h(RAM)h(based)f(stac)n(k.)47 b(Still,)33 b(it)f(could)676 +846 y(b)r(e)c(p)r(ossible)f(to)h(program)d(them)j(in)g(C,)g(see)f(the)h +Fs(F)-11 b(A)m(Q)28 b Fq(\(p.)14 b(81\))28 b(for)f(an)g(option.)506 +1132 y Fs(Note:)676 1282 y([2])36 b Fq(The)i(at94K)d(devices)i(are)f(a) +h(com)n(bination)g(of)g(FPGA)h(and)g(A)-9 b(VR)37 b(micro)r(con-)676 +1382 y(troller.)71 b([TRoth-2002/11/12:)55 b(Not)39 b(sure)g(of)g(the)g +(lev)n(el)g(of)g(supp)r(ort)g(for)g(these.)676 1481 y(More)27 +b(information)g(w)n(ould)g(b)r(e)h(w)n(elcomed.])506 +1768 y Fs(Note:)676 1917 y([3])23 b Fq(The)i(at76c711)c(is)k(a)f(USB)g +(to)g(fast)h(serial)e(in)n(terface)h(bridge)f(c)n(hip)i(using)f(an)g(A) +-9 b(VR)676 2017 y(core.)515 2295 y Fn(1.4)112 b(a)m(vr-lib)s(c)38 +b(License)515 2496 y Fq(a)n(vr-lib)r(c)h(can)h(b)r(e)h(freely)f(used)g +(and)g(redistributed,)k(pro)n(vided)39 b(the)i(follo)n(wing)e(license) +515 2595 y(conditions)27 b(are)f(met.)515 2798 y Fj(Portions)37 +b(of)f(avr-libc)i(are)e(Copyright)h(\(c\))f(1999-2008)515 +2877 y(Werner)h(Boellmann,)515 2956 y(Dean)f(Camera,)515 +3034 y(Pieter)h(Conradie,)515 3113 y(Brian)f(Dean,)515 +3192 y(Keith)g(Gudger,)515 3271 y(Wouter)h(van)f(Gulik,)515 +3350 y(Bjoern)h(Haase,)515 3429 y(Steinar)g(Haugen,)515 +3508 y(Peter)f(Jansen,)515 3587 y(Reinhard)h(Jessich,)515 +3665 y(Magnus)g(Johansson,)515 3744 y(Harald)g(Kipp,)515 +3823 y(Carlos)g(Lamas,)515 3902 y(Cliff)f(Lawson,)515 +3981 y(Artur)g(Lipowski,)515 4060 y(Marek)g(Michalkiewicz,)515 +4139 y(Todd)g(C.)g(Miller,)515 4218 y(Rich)g(Neswold,)515 +4296 y(Colin)g(O'Flynn,)515 4375 y(Bob)g(Paddock,)515 +4454 y(Andrey)h(Pashchenko,)515 4533 y(Reiner)g(Patommel,)515 +4612 y(Florin-Viorel)i(Petrov,)515 4691 y(Alexander)e(Popov,)515 +4770 y(Michael)g(Rickman,)515 4848 y(Theodore)g(A.)f(Roth,)515 +4927 y(Juergen)h(Schilling,)515 5006 y(Philip)g(Soeberg,)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 9 25 +TeXDict begin 9 24 bop 515 203 a Fs(2)31 b(T)-8 b(o)s(olc)m(hain)32 +b(Ov)m(erview)1911 b(9)p 515 236 2865 4 v 515 523 a Fj(Anatoly)37 +b(Sokolov,)515 602 y(Nils)f(Kristian)i(Strom,)515 681 +y(Michael)f(Stumpf,)515 760 y(Stefan)g(Swanepoel,)515 +839 y(Helmut)g(Wallner,)515 917 y(Eric)f(B.)g(Weddington,)515 +996 y(Joerg)g(Wunsch,)515 1075 y(Dmitry)h(Xmelkov,)515 +1154 y(Atmel)f(Corporation,)515 1233 y(egnite)h(Software)g(GmbH,)515 +1312 y(The)f(Regents)h(of)f(the)g(University)i(of)e(California.)515 +1391 y(All)g(rights)h(reserved.)621 1548 y(Redistribution)i(and)d(use)g +(in)g(source)h(and)f(binary)h(forms,)g(with)f(or)g(without)621 +1627 y(modification,)i(are)f(permitted)g(provided)h(that)e(the)g +(following)i(conditions)g(are)e(met:)621 1785 y(*)f(Redistributions)40 +b(of)35 b(source)i(code)g(must)f(retain)h(the)f(above)h(copyright)691 +1864 y(notice,)g(this)g(list)f(of)g(conditions)i(and)e(the)g(following) +i(disclaimer.)621 2022 y(*)d(Redistributions)40 b(in)35 +b(binary)i(form)g(must)f(reproduce)i(the)e(above)h(copyright)691 +2100 y(notice,)g(this)g(list)f(of)g(conditions)i(and)e(the)g(following) +i(disclaimer)g(in)691 2179 y(the)e(documentation)j(and/or)e(other)g +(materials)g(provided)h(with)e(the)691 2258 y(distribution.)621 +2416 y(*)f(Neither)i(the)f(name)h(of)f(the)g(copyright)h(holders)h(nor) +e(the)g(names)h(of)691 2495 y(contributors)i(may)d(be)g(used)g(to)g +(endorse)h(or)f(promote)h(products)h(derived)691 2574 +y(from)e(this)h(software)g(without)h(specific)f(prior)g(written)g +(permission.)621 2731 y(THIS)f(SOFTWARE)h(IS)f(PROVIDED)i(BY)e(THE)g +(COPYRIGHT)h(HOLDERS)h(AND)e(CONTRIBUTORS)i("AS)e(IS")621 +2810 y(AND)g(ANY)g(EXPRESS)h(OR)f(IMPLIED)h(WARRANTIES,)h(INCLUDING,)g +(BUT)e(NOT)h(LIMITED)g(TO,)f(THE)621 2889 y(IMPLIED)h(WARRANTIES)h(OF)e +(MERCHANTABILITY)j(AND)d(FITNESS)h(FOR)f(A)g(PARTICULAR)i(PURPOSE)621 +2968 y(ARE)e(DISCLAIMED.)i(IN)e(NO)g(EVENT)g(SHALL)h(THE)f(COPYRIGHT)i +(OWNER)e(OR)g(CONTRIBUTORS)j(BE)621 3047 y(LIABLE)d(FOR)h(ANY)f +(DIRECT,)h(INDIRECT,)h(INCIDENTAL,)g(SPECIAL,)f(EXEMPLARY,)h(OR)621 +3126 y(CONSEQUENTIAL)g(DAMAGES)g(\(INCLUDING,)g(BUT)e(NOT)g(LIMITED)h +(TO,)f(PROCUREMENT)j(OF)621 3205 y(SUBSTITUTE)f(GOODS)e(OR)g(SERVICES;) +i(LOSS)e(OF)g(USE,)g(DATA,)h(OR)f(PROFITS;)h(OR)f(BUSINESS)621 +3284 y(INTERRUPTION\))i(HOWEVER)g(CAUSED)f(AND)f(ON)f(ANY)i(THEORY)g +(OF)e(LIABILITY,)j(WHETHER)g(IN)621 3362 y(CONTRACT,)f(STRICT)g +(LIABILITY,)h(OR)e(TORT)g(\(INCLUDING)j(NEGLIGENCE)f(OR)d(OTHERWISE\)) +621 3441 y(ARISING)i(IN)f(ANY)g(WAY)g(OUT)g(OF)g(THE)g(USE)g(OF)g(THIS) +g(SOFTWARE,)i(EVEN)e(IF)g(ADVISED)h(OF)f(THE)621 3520 +y(POSSIBILITY)i(OF)e(SUCH)g(DAMAGE.)515 3842 y Fr(2)131 +b(T)-11 b(o)t(olc)l(hain)43 b(Ov)l(erview)515 4088 y +Fn(2.1)112 b(In)m(tro)s(duction)515 4288 y Fq(W)-7 b(elcome)27 +b(to)h(the)g(op)r(en)f(source)f(soft)n(w)n(are)g(dev)n(elopmen)n(t)h +(to)r(olset)g(for)g(the)h(A)n(tmel)g(A)-9 b(VR!)515 4435 +y(There)19 b(is)i(not)f(a)g(single)g(to)r(ol)g(that)g(pro)n(vides)f(ev) +n(erything)g(needed)h(to)h(dev)n(elop)e(soft)n(w)n(are)g(for)515 +4535 y(the)26 b(A)-9 b(VR.)26 b(It)g(tak)n(es)f(man)n(y)g(to)r(ols)g(w) +n(orking)f(together.)35 b(Collectiv)n(ely)-7 b(,)25 b(the)h(group)f(of) +h(to)r(ols)515 4634 y(are)f(called)i(a)f(to)r(olset,)h(or)e(commonly)h +(a)h(to)r(olc)n(hain,)f(as)g(the)h(to)r(ols)f(are)g(c)n(hained)g +(together)515 4734 y(to)h(pro)r(duce)g(the)h(\034nal)g(executable)f +(application)g(for)g(the)h(A)-9 b(VR)28 b(micro)r(con)n(troller.)515 +4881 y(The)34 b(follo)n(wing)e(sections)i(pro)n(vide)e(an)i(o)n(v)n +(erview)e(of)i(all)f(of)h(these)g(to)r(ols.)56 b(Y)-7 +b(ou)34 b(ma)n(y)f(b)r(e)515 4980 y(used)28 b(to)g(cross-compilers)e +(that)i(pro)n(vide)f(ev)n(erything)g(with)i(a)f(GUI)h(fron)n(t-end,)f +(and)g(not)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 10 26 +TeXDict begin 10 25 bop 515 203 a Fs(2.2)94 b(FSF)32 +b(and)g(GNU)1940 b(10)p 515 236 2865 4 v 515 523 a Fq(kno)n(w)22 +b(what)h(go)r(es)f(on)h("underneath)f(the)h(ho)r(o)r(d".)35 +b(Y)-7 b(ou)23 b(ma)n(y)f(b)r(e)i(coming)e(from)h(a)g(desktop)515 +623 y(or)36 b(serv)n(er)e(computer)j(bac)n(kground)d(and)j(not)g(used)f +(to)h(em)n(b)r(edded)g(systems.)64 b(Or)36 b(y)n(ou)515 +722 y(ma)n(y)30 b(b)r(e)h(just)h(learning)d(ab)r(out)i(the)h(most)e +(common)h(soft)n(w)n(are)e(dev)n(elopmen)n(t)h(to)r(olc)n(hain)515 +822 y(a)n(v)-5 b(ailable)27 b(on)h(Unix)h(and)f(Lin)n(ux)g(systems.)39 +b(Hop)r(efully)29 b(the)g(follo)n(wing)f(o)n(v)n(erview)e(will)j(b)r(e) +515 922 y(helpful)f(in)g(putting)g(ev)n(erything)e(in)i(p)r(ersp)r +(ectiv)n(e.)515 1201 y Fn(2.2)112 b(FSF)38 b(and)h(GNU)515 +1402 y Fq(A)n(ccording)29 b(to)h(its)h(w)n(ebsite,)g("the)f(F)-7 +b(ree)31 b(Soft)n(w)n(are)e(F)-7 b(oundation)30 b(\(FSF\),)i +(established)e(in)515 1501 y(1985,)21 b(is)i(dedicated)f(to)h +(promoting)e(computer)h(users')g(righ)n(ts)g(to)g(use,)i(study)-7 +b(,)23 b(cop)n(y)-7 b(,)23 b(mo)r(d-)515 1601 y(ify)-7 +b(,)32 b(and)g(redistribute)e(computer)h(programs.)46 +b(The)31 b(FSF)h(promotes)e(the)i(dev)n(elopmen)n(t)515 +1701 y(and)g(use)g(of)g(free)g(soft)n(w)n(are,)g(particularly)f(the)h +(GNU)h(op)r(erating)f(system,)h(used)f(widely)515 1800 +y(in)26 b(its)h(GNU/Lin)n(ux)f(v)-5 b(arian)n(t.")25 +b(The)i(FSF)g(remains)e(the)i(primary)e(sp)r(onsor)g(of)i(the)f(GNU)515 +1900 y(pro)5 b(ject.)515 2047 y(The)35 b(GNU)h(Pro)5 +b(ject)35 b(w)n(as)f(launc)n(hed)h(in)h(1984)d(to)i(dev)n(elop)g(a)g +(complete)g(Unix-lik)n(e)g(op-)515 2146 y(erating)f(system)h(whic)n(h)f +(is)h(free)g(soft)n(w)n(are:)50 b(the)36 b(GNU)f(system.)60 +b(GNU)35 b(is)g(a)g(recursiv)n(e)515 2246 y(acron)n(ym)27 +b(for)i(\024GNU's)h(Not)f(Unix\023;)h(it)g(is)f(pronounced)f(guh-no)r +(o,)g(appro)n(ximately)f(lik)n(e)515 2346 y(cano)r(e.)515 +2492 y(One)g(of)h(the)h(main)f(pro)5 b(jects)27 b(of)h(the)g(GNU)h +(system)f(is)g(the)g(GNU)h(Compiler)f(Collection,)515 +2592 y(or)g(GCC,)i(and)f(its)g(sister)g(pro)5 b(ject,)29 +b(GNU)h(Bin)n(utils.)41 b(These)29 b(t)n(w)n(o)g(op)r(en)g(source)f +(pro)5 b(jects)515 2692 y(pro)n(vide)36 b(a)h(foundation)h(for)f(a)g +(soft)n(w)n(are)f(dev)n(elopmen)n(t)h(to)r(olc)n(hain.)66 +b(Note)38 b(that)g(these)515 2791 y(pro)5 b(jects)26 +b(w)n(ere)h(designed)g(to)g(originally)f(run)i(on)f(Unix-lik)n(e)g +(systems.)515 3071 y Fn(2.3)112 b(GCC)515 3271 y Fq(GCC)38 +b(stands)f(for)h(GNU)g(Compiler)f(Collection.)68 b(GCC)38 +b(is)f(highly)h(\035exible)g(compiler)515 3371 y(system.)d(It)24 +b(has)f(di\033eren)n(t)g(compiler)g(fron)n(t-ends)f(for)h(di\033eren)n +(t)h(languages.)33 b(It)24 b(has)f(man)n(y)515 3471 y(bac)n(k-ends)29 +b(that)j(generate)e(assem)n(bly)g(co)r(de)g(for)h(man)n(y)g(di\033eren) +n(t)g(pro)r(cessors)d(and)j(host)515 3570 y(op)r(erating)h(systems.)53 +b(All)33 b(share)f(a)h(common)g("middle-end",)h(con)n(taining)e(the)h +(generic)515 3670 y(parts)27 b(of)g(the)h(compiler,)f(including)h(a)f +(lot)g(of)h(optimizations.)515 3817 y(In)36 b(GCC,)g(a)f +Fl(host)44 b Fq(system)36 b(is)g(the)g(system)g(\(pro)r(cessor/OS\))d +(that)j(the)g(compiler)g(runs)515 3916 y(on.)j(A)29 b +Fl(tar)l(get)36 b Fq(system)28 b(is)g(the)h(system)f(that)h(the)g +(compiler)e(compiles)h(co)r(de)g(for.)39 b(And,)29 b(a)515 +4016 y Fl(build)39 b Fq(system)29 b(is)g(the)h(system)f(that)g(the)h +(compiler)f(is)g(built)h(\(from)f(source)f(co)r(de\))i(on.)42 +b(If)515 4116 y(a)27 b(compiler)g(has)h(the)g(same)f(system)h(for)f +Fl(host)36 b Fq(and)28 b(for)f Fl(tar)l(get)8 b Fq(,)28 +b(it)g(is)g(kno)n(wn)f(as)g(a)h Fl(native)515 4215 y +Fq(compiler.)34 b(If)22 b(a)f(compiler)g(has)g(di\033eren)n(t)h +(systems)f(for)g Fl(host)30 b Fq(and)21 b Fl(tar)l(get)8 +b Fq(,)23 b(it)f(is)g(kno)n(wn)f(as)f(a)515 4315 y(cross-compiler.)33 +b(\(And)24 b(if)g(all)g(three,)g Fl(build)9 b Fq(,)25 +b Fl(host)8 b Fq(,)25 b(and)f Fl(tar)l(get)31 b Fq(systems)23 +b(are)g(di\033eren)n(t,)i(it)515 4414 y(is)h(kno)n(wn)g(as)g(a)h +(Canadian)e(cross)h(compiler,)g(but)h(w)n(e)g(w)n(on't)f(discuss)g +(that)h(here.\))37 b(When)515 4514 y(GCC)24 b(is)g(built)h(to)e +(execute)h(on)g(a)g Fl(host)32 b Fq(system)24 b(suc)n(h)f(as)h(F)-7 +b(reeBSD,)24 b(Lin)n(ux,)g(or)f(Windo)n(ws,)515 4614 +y(and)k(it)h(is)g(built)g(to)g(generate)e(co)r(de)i(for)f(the)h(A)-9 +b(VR)28 b(micro)r(con)n(troller)d Fl(tar)l(get)8 b Fq(,)28 +b(then)g(it)g(is)f(a)515 4713 y(cross)j(compiler,)h(and)g(this)h(v)n +(ersion)d(of)j(GCC)f(is)g(commonly)g(kno)n(wn)g(as)f("A)-9 +b(VR)31 b(GCC".)515 4813 y(In)39 b(do)r(cumen)n(tation,)i(or)d +(discussion,)j(A)-9 b(VR)39 b(GCC)g(is)f(used)h(when)g(referring)e(to)i +(GCC)515 4913 y(targeting)28 b(sp)r(eci\034cally)g(the)i(A)-9 +b(VR,)30 b(or)e(something)h(that)h(is)f(A)-9 b(VR)29 +b(sp)r(eci\034c)h(ab)r(out)f(GCC.)p 515 5179 V 515 5255 +a Fp(Generated)c(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 11 27 +TeXDict begin 11 26 bop 515 203 a Fs(2.4)94 b(GNU)32 +b(Bin)m(utils)1970 b(11)p 515 236 2865 4 v 515 523 a +Fq(The)29 b(term)g("GCC")g(is)g(usually)f(used)i(to)f(refer)f(to)h +(something)g(generic)f(ab)r(out)i(GCC,)f(or)515 623 y(ab)r(out)e(GCC)h +(as)f(a)g(whole.)515 770 y(GCC)39 b(is)g(di\033eren)n(t)g(from)g(most)g +(other)f(compilers.)71 b(GCC)39 b(fo)r(cuses)g(on)g(translating)e(a)515 +869 y(high-lev)n(el)27 b(language)f(to)i(the)g(target)g(assem)n(bly)e +(only)-7 b(.)38 b(A)-9 b(VR)29 b(GCC)f(has)g(three)f(a)n(v)-5 +b(ailable)515 969 y(compilers)31 b(for)g(the)i(A)-9 b(VR:)32 +b(C)g(language,)g(C++,)g(and)g(A)n(da.)50 b(The)32 b(compiler)f(itself) +h(do)r(es)515 1068 y(not)27 b(assem)n(ble)g(or)f(link)i(the)g(\034nal)g +(co)r(de.)515 1215 y(GCC)j(is)f(also)g(kno)n(wn)g(as)g(a)g("driv)n(er") +e(program,)i(in)h(that)g(it)g(kno)n(ws)e(ab)r(out,)j(and)e(driv)n(es) +515 1315 y(other)h(programs)e(seamlessly)i(to)h(create)f(the)h(\034nal) +g(output.)50 b(The)32 b(assem)n(bler,)f(and)h(the)515 +1415 y(link)n(er)22 b(are)g(part)g(of)h(another)f(op)r(en)h(source)f +(pro)5 b(ject)22 b(called)g(GNU)i(Bin)n(utils.)35 b(GCC)23 +b(kno)n(ws)515 1514 y(ho)n(w)k(to)h(driv)n(e)f(the)i(GNU)g(assem)n +(bler)d(\(gas\))h(to)h(assem)n(ble)f(the)i(output)f(of)g(the)h +(compiler.)515 1614 y(GCC)e(kno)n(ws)g(ho)n(w)g(to)g(driv)n(e)g(the)h +(GNU)g(link)n(er)f(\(ld\))i(to)e(link)h(all)f(of)h(the)g(ob)5 +b(ject)27 b(mo)r(dules)515 1713 y(in)n(to)g(a)g(\034nal)h(executable.) +515 1860 y(The)j(t)n(w)n(o)g(pro)5 b(jects,)31 b(GCC)h(and)f(Bin)n +(utils,)h(are)f(v)n(ery)f(m)n(uc)n(h)h(in)n(terrelated)f(and)h(man)n(y) +g(of)515 1960 y(the)d(same)f(v)n(olun)n(teers)f(w)n(ork)g(on)h(b)r(oth) +h(op)r(en)g(source)e(pro)5 b(jects.)515 2107 y(When)26 +b(GCC)g(is)g(built)h(for)f(the)g(A)-9 b(VR)27 b(target,)e(the)i(actual) +e(program)f(names)i(are)f(pre\034xed)515 2206 y(with)36 +b("a)n(vr-".)57 b(So)35 b(the)h(actual)e(executable)h(name)g(for)g(A)-9 +b(VR)36 b(GCC)f(is:)52 b(a)n(vr-gcc.)58 b(The)515 2306 +y(name)29 b("a)n(vr-gcc")d(is)j(used)g(in)g(do)r(cumen)n(tation)g(and)g +(discussion)g(when)g(referring)f(to)h(the)515 2406 y(program)c(itself)j +(and)g(not)f(just)h(the)g(whole)f(A)-9 b(VR)29 b(GCC)e(system.)515 +2553 y(See)20 b(the)h(GCC)g(W)-7 b(eb)21 b(Site)g(and)g(GCC)g(User)f +(Man)n(ual)g(for)g(more)f(information)h(ab)r(out)h(GCC.)515 +2832 y Fn(2.4)112 b(GNU)37 b(Bin)m(utils)515 3033 y Fq(The)e(name)h +(GNU)g(Bin)n(utils)g(stands)f(for)g("Binary)f(Utilities".)62 +b(It)36 b(con)n(tains)e(the)i(GNU)515 3132 y(assem)n(bler)22 +b(\(gas\),)i(and)g(the)h(GNU)g(link)n(er)e(\(ld\),)j(but)e(also)f(con)n +(tains)h(man)n(y)f(other)g(utilities)515 3232 y(that)h(w)n(ork)f(with)i +(binary)e(\034les)h(that)h(are)e(created)g(as)h(part)g(of)g(the)g(soft) +n(w)n(are)f(dev)n(elopmen)n(t)515 3332 y(to)r(olc)n(hain.)515 +3478 y(Again,)g(when)g(these)g(to)r(ols)f(are)g(built)h(for)f(the)i(A) +-9 b(VR)23 b(target,)g(the)g(actual)f(program)f(names)515 +3578 y(are)39 b(pre\034xed)h(with)h("a)n(vr-".)72 b(F)-7 +b(or)40 b(example,)j(the)d(assem)n(bler)f(program)f(name,)44 +b(for)39 b(a)515 3678 y(nativ)n(e)28 b(assem)n(bler)f(is)h("as")f(\(ev) +n(en)h(though)g(in)h(do)r(cumen)n(tation)f(the)h(GNU)g(assem)n(bler)e +(is)515 3777 y(commonly)e(referred)g(to)i(as)e("gas"\).)35 +b(But)26 b(when)h(built)g(for)e(an)h(A)-9 b(VR)27 b(target,)f(it)h(b)r +(ecomes)515 3877 y("a)n(vr-as".)33 b(Belo)n(w)27 b(is)g(a)g(list)h(of)g +(the)g(programs)d(that)j(are)e(included)i(in)g(Bin)n(utils:)506 +4068 y Fs(a)m(vr-as)676 4218 y Fq(The)g(Assem)n(bler.)506 +4414 y Fs(a)m(vr-ld)676 4563 y Fq(The)g(Link)n(er.)506 +4739 y Fs(a)m(vr-ar)676 4888 y Fq(Create,)f(mo)r(dify)-7 +b(,)28 b(and)f(extract)g(from)g(libraries)f(\(arc)n(hiv)n(es\).)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 12 28 +TeXDict begin 12 27 bop 515 203 a Fs(2.5)94 b(a)m(vr-lib)s(c)2236 +b(12)p 515 236 2865 4 v 506 497 a(a)m(vr-ranlib)676 647 +y Fq(Generate)27 b(index)h(to)f(library)f(\(arc)n(hiv)n(e\))h(con)n +(ten)n(ts.)506 858 y Fs(a)m(vr-ob)5 b(jcop)m(y)676 1024 +y Fq(Cop)n(y)27 b(and)g(translate)g(ob)5 b(ject)27 b(\034les)h(to)f +(di\033eren)n(t)h(formats.)506 1231 y Fs(a)m(vr-ob)5 +b(jdump)676 1396 y Fq(Displa)n(y)27 b(information)g(from)g(ob)5 +b(ject)28 b(\034les)f(including)h(disassem)n(bly)-7 b(.)506 +1603 y Fs(a)m(vr-size)676 1753 y Fq(List)28 b(section)f(sizes)g(and)g +(total)h(size.)506 1923 y Fs(a)m(vr-nm)676 2073 y Fq(List)g(sym)n(b)r +(ols)f(from)g(ob)5 b(ject)27 b(\034les.)506 2280 y Fs(a)m(vr-strings) +676 2445 y Fq(List)h(prin)n(table)f(strings)f(from)i(\034les.)506 +2652 y Fs(a)m(vr-strip)676 2818 y Fq(Discard)f(sym)n(b)r(ols)g(from)g +(\034les.)506 3025 y Fs(a)m(vr-readelf)676 3174 y Fq(Displa)n(y)g(the)h +(con)n(ten)n(ts)f(of)g(ELF)i(format)e(\034les.)506 3381 +y Fs(a)m(vr-addr2line)676 3531 y Fq(Con)n(v)n(ert)f(addresses)g(to)i +(\034le)f(and)h(line.)506 3721 y Fs(a)m(vr-c++\034lt)676 +3882 y Fq(Filter)g(to)f(demangle)g(enco)r(ded)h(C++)e(sym)n(b)r(ols.) +515 4161 y Fn(2.5)112 b(a)m(vr-lib)s(c)515 4361 y Fq(GCC)31 +b(and)g(Bin)n(utils)g(pro)n(vides)e(a)i(lot)g(of)g(the)g(to)r(ols)g(to) +g(dev)n(elop)f(soft)n(w)n(are,)g(but)h(there)g(is)515 +4461 y(one)c(critical)g(comp)r(onen)n(t)g(that)h(they)g(do)f(not)g(pro) +n(vide:)36 b(a)27 b(Standard)g(C)h(Library)-7 b(.)515 +4608 y(There)26 b(are)f(di\033eren)n(t)h(op)r(en)h(source)e(pro)5 +b(jects)25 b(that)h(pro)n(vide)g(a)g(Standard)f(C)i(Library)d(de-)515 +4707 y(p)r(ending)h(up)r(on)g(y)n(our)f(system)g(time,)i(whether)f(for) +g(a)f(nativ)n(e)g(compiler)h(\(GNU)h(Lib)r(c\),)g(for)515 +4807 y(some)f(other)h(em)n(b)r(edded)h(system)f(\(newlib\),)h(or)e(for) +h(some)g(v)n(ersions)e(of)i(Lin)n(ux)g(\(uCLib)r(c\).)515 +4907 y(The)k(op)r(en)g(source)f(A)-9 b(VR)30 b(to)r(olc)n(hain)f(has)h +(its)g(o)n(wn)g(Standard)f(C)h(Library)f(pro)5 b(ject:)41 +b(a)n(vr-)515 5006 y(lib)r(c.)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 13 29 +TeXDict begin 13 28 bop 515 203 a Fs(2.6)94 b(Building)30 +b(Soft)m(w)m(are)1807 b(13)p 515 236 2865 4 v 515 523 +a Fq(A)-9 b(VR-Lib)r(c)37 b(pro)n(vides)e(man)n(y)i(of)f(the)i(same)e +(functions)h(found)g(in)g(a)g(regular)e(Standard)515 +623 y(C)h(Library)e(and)i(man)n(y)g(additional)f(library)g(functions)h +(that)h(is)f(sp)r(eci\034c)g(to)g(an)g(A)-9 b(VR.)515 +722 y(Some)34 b(of)h(the)g(Standard)f(C)h(Library)e(functions)i(that)g +(are)f(commonly)g(used)h(on)f(a)h(PC)515 822 y(en)n(vironmen)n(t)25 +b(ha)n(v)n(e)f(limitations)i(or)f(additional)h(issues)f(that)h(a)g +(user)f(needs)h(to)g(b)r(e)g(a)n(w)n(are)515 922 y(of)h(when)h(used)g +(on)f(an)g(em)n(b)r(edded)h(system.)515 1068 y(A)-9 b(VR-Lib)r(c)58 +b(also)f(con)n(tains)g(the)i(most)f(do)r(cumen)n(tation)f(ab)r(out)h +(the)h(whole)f(A)-9 b(VR)515 1168 y(to)r(olc)n(hain.)515 +1448 y Fn(2.6)112 b(Building)38 b(Soft)m(w)m(are)515 +1648 y Fq(Ev)n(en)d(though)f(GCC,)h(Bin)n(utils,)h(and)f(a)n(vr-lib)r +(c)e(are)h(the)h(core)f(pro)5 b(jects)33 b(that)i(are)f(used)515 +1748 y(to)h(build)h(soft)n(w)n(are)e(for)h(the)h(A)-9 +b(VR,)36 b(there)f(is)h(another)e(piece)i(of)f(soft)n(w)n(are)f(that)i +(ties)g(it)515 1847 y(all)d(together:)49 b(Mak)n(e.)55 +b(GNU)35 b(Mak)n(e)e(is)h(a)f(program)f(that)i(mak)n(es)f(things,)j +(and)d(mainly)515 1947 y(soft)n(w)n(are.)h(Mak)n(e)26 +b(in)n(terprets)f(and)h(executes)g(a)g(Mak)n(e\034le)g(that)g(is)h +(written)f(for)g(a)g(pro)5 b(ject.)515 2047 y(A)22 b(Mak)n(e\034le)e +(con)n(tains)h(dep)r(endency)h(rules,)g(sho)n(wing)e(whic)n(h)i(output) +g(\034les)f(are)f(dep)r(enden)n(t)515 2146 y(up)r(on)25 +b(whic)n(h)f(input)h(\034les,)g(and)g(instructions)f(on)g(ho)n(w)g(to)h +(build)g(output)g(\034les)f(from)g(input)515 2246 y(\034les.)515 +2393 y(Some)19 b(distributions)g(of)g(the)g(to)r(olc)n(hains,)h(and)f +(other)g(A)-9 b(VR)19 b(to)r(ols)g(suc)n(h)g(as)g(MFile,)i(con)n(tain) +515 2492 y(a)28 b(Mak)n(e\034le)h(template)g(written)g(for)f(the)i(A)-9 +b(VR)29 b(to)r(olc)n(hain)f(and)h(A)-9 b(VR)30 b(applications)e(that) +515 2592 y(y)n(ou)f(can)g(cop)n(y)f(and)i(mo)r(dify)g(for)f(y)n(our)f +(application.)515 2739 y(See)h(the)h(GNU)h(Mak)n(e)d(User)h(Man)n(ual)g +(for)g(more)g(information.)515 3019 y Fn(2.7)112 b(A)-12 +b(VRDUDE)515 3219 y Fq(After)31 b(creating)e(y)n(our)h(soft)n(w)n(are,) +g(y)n(ou'll)g(w)n(an)n(t)g(to)g(program)f(y)n(our)g(device.)46 +b(Y)-7 b(ou)31 b(can)f(do)515 3319 y(this)19 b(b)n(y)h(using)f(the)g +(program)f(A)-9 b(VRDUDE)21 b(whic)n(h)e(can)g(in)n(terface)g(with)h(v) +-5 b(arious)18 b(hardw)n(are)515 3418 y(devices)27 b(to)g(program)f(y)n +(our)g(pro)r(cessor.)515 3565 y(A)-9 b(VRDUDE)21 b(is)f(a)f(v)n(ery)f +(\035exible)h(pac)n(k)-5 b(age.)33 b(All)20 b(the)g(information)e(ab)r +(out)i(A)-9 b(VR)20 b(pro)r(cessors)515 3665 y(and)27 +b(v)-5 b(arious)25 b(hardw)n(are)g(programmers)f(is)j(stored)f(in)h(a)g +(text)g(database.)35 b(This)27 b(database)515 3764 y(can)g(b)r(e)g(mo)r +(di\034ed)h(b)n(y)f(an)n(y)g(user)f(to)i(add)f(new)g(hardw)n(are)f(or)g +(to)h(add)g(an)g(A)-9 b(VR)28 b(pro)r(cessor)515 3864 +y(if)g(it)g(is)f(not)h(already)e(listed.)515 4144 y Fn(2.8)112 +b(GDB)37 b(/)g(Insigh)m(t)h(/)f(DDD)515 4344 y Fq(The)26 +b(GNU)h(Debugger)f(\(GDB\))h(is)f(a)g(command-line)g(debugger)f(that)i +(can)f(b)r(e)g(used)h(with)515 4444 y(the)k(rest)f(of)h(the)g(A)-9 +b(VR)31 b(to)r(olc)n(hain.)46 b(Insigh)n(t)30 b(is)h(GDB)g(plus)g(a)f +(GUI)i(written)f(in)g(T)-7 b(cl/Tk.)515 4543 y(Both)21 +b(GDB)i(and)f(Insigh)n(t)f(are)g(con\034gured)g(for)g(the)i(A)-9 +b(VR)22 b(and)g(the)g(main)g(executables)f(are)515 4643 +y(pre\034xed)29 b(with)i(the)f(target)f(name:)42 b(a)n(vr-gdb,)28 +b(and)i(a)n(vr-insigh)n(t.)42 b(There)30 b(is)g(also)f(a)g("text)515 +4743 y(mo)r(de")34 b(GUI)i(for)e(GDB:)i(a)n(vr-gdbtui.)58 +b(DDD)36 b(\(Data)f(Displa)n(y)g(Debugger\))f(is)h(another)515 +4842 y(p)r(opular)27 b(GUI)h(fron)n(t)f(end)h(to)f(GDB,)h(a)n(v)-5 +b(ailable)26 b(on)i(Unix)f(and)h(Lin)n(ux)f(systems.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 14 30 +TeXDict begin 14 29 bop 515 203 a Fs(2.9)94 b(A)-11 b(V)j(aRICE)2141 +b(14)p 515 236 2865 4 v 515 523 a Fn(2.9)112 b(A)-12 +b(V)j(aRICE)515 724 y Fq(A)g(V)i(aRICE)38 b(is)g(a)g(bac)n(k-end)f +(program)f(to)i(A)-9 b(VR)39 b(GDB)f(and)g(in)n(terfaces)f(to)h(the)h +(A)n(tmel)515 823 y(JT)-7 b(A)n(G)27 b(In-Circuit)g(Em)n(ulator)g +(\(ICE\),)i(to)f(pro)n(vide)e(em)n(ulation)h(capabilities.)515 +1103 y Fn(2.10)112 b(Sim)m(ulA)-12 b(VR)515 1303 y Fq(Sim)n(ulA)j(VR)30 +b(is)g(an)g(A)-9 b(VR)30 b(sim)n(ulator)f(used)h(as)f(a)h(bac)n(k-end)f +(with)h(A)-9 b(VR)31 b(GDB.)f(Unfortu-)515 1403 y(nately)-7 +b(,)27 b(this)h(pro)5 b(ject)27 b(is)g(curren)n(tly)g(unmain)n(tained)g +(and)h(could)f(use)g(some)g(help.)515 1682 y Fn(2.11)112 +b(Utilities)515 1883 y Fq(There)34 b(are)f(also)h(other)g(optional)f +(utilities)j(a)n(v)-5 b(ailable)33 b(that)i(ma)n(y)f(b)r(e)g(useful)h +(to)g(add)f(to)515 1983 y(y)n(our)26 b(to)r(olset.)515 +2129 y Fm(SRecord)21 b Fq(is)j(a)g(collection)g(of)g(p)r(o)n(w)n(erful) +f(to)r(ols)h(for)g(manipulating)g(EPR)n(OM)h(load)e(\034les.)36 +b(It)515 2229 y(reads)18 b(and)h(writes)g(n)n(umerous)f(EPR)n(OM)i +(\034le)f(formats,)i(and)e(can)g(p)r(erform)f(man)n(y)h(di\033eren)n(t) +515 2329 y(manipulations.)515 2476 y Fm(MFile)26 b Fq(is)i(a)f(simple)h +(Mak)n(e\034le)f(generator)f(is)i(mean)n(t)g(as)f(an)h(aid)g(to)g(quic) +n(kly)f(customize)g(a)515 2575 y(Mak)n(e\034le)f(to)i(use)f(for)g(y)n +(our)g(A)-9 b(VR)28 b(application.)515 2855 y Fn(2.12)112 +b(T)-9 b(o)s(olc)m(hain)38 b(Distributions)g(\(Distros\))515 +3055 y Fq(All)33 b(of)g(the)g(v)-5 b(arious)31 b(op)r(en)i(source)e +(pro)5 b(jects)32 b(that)h(comprise)f(the)h(en)n(tire)f(to)r(olc)n +(hain)g(are)515 3155 y(normally)d(distributed)j(as)e(source)f(co)r(de.) +47 b(It)31 b(is)f(left)i(up)f(to)g(the)g(user)f(to)h(build)g(the)g(to)r +(ol)515 3255 y(application)39 b(from)g(its)h(source)f(co)r(de.)73 +b(This)39 b(can)h(b)r(e)g(a)f(v)n(ery)g(daun)n(ting)g(task)g(to)h(an)n +(y)515 3354 y(p)r(oten)n(tial)27 b(user)g(of)h(these)f(to)r(ols.)515 +3501 y(Luc)n(kily)33 b(there)g(are)g(p)r(eople)h(who)f(help)h(out)g(in) +g(this)g(area.)54 b(V)-7 b(olun)n(teers)33 b(tak)n(e)g(the)h(time)515 +3601 y(to)41 b(build)h(the)g(application)f(from)g(source)f(co)r(de)h +(on)g(particular)f(host)i(platforms)e(and)515 3700 y(sometimes)20 +b(pac)n(k)-5 b(aging)19 b(the)i(to)r(ols)f(for)g(con)n(v)n(enien)n(t)f +(installation)h(b)n(y)h(the)g(end)g(user.)33 b(These)515 +3800 y(pac)n(k)-5 b(ages)19 b(con)n(tain)i(the)h(binary)f(executables)g +(of)g(the)h(to)r(ols,)g(pre-made)f(and)g(ready)g(to)g(use.)515 +3900 y(These)g(pac)n(k)-5 b(ages)19 b(are)i(kno)n(wn)f(as)h +("distributions")f(of)h(the)h(A)-9 b(VR)22 b(to)r(olc)n(hain,)f(or)g(b) +n(y)g(a)g(more)515 3999 y(shortened)27 b(name,)g("distros".)515 +4146 y(A)-9 b(VR)38 b(to)r(olc)n(hain)f(distros)f(are)h(a)n(v)-5 +b(ailable)36 b(on)i(F)-7 b(reeBSD,)38 b(Windo)n(ws,)h(Mac)f(OS)f(X,)h +(and)515 4246 y(certain)27 b(\035a)n(v)n(ors)e(of)i(Lin)n(ux.)515 +4525 y Fn(2.13)112 b(Op)s(en)38 b(Source)515 4726 y Fq(All)c(of)g +(these)g(to)r(ols,)h(from)f(the)g(original)f(source)g(co)r(de)g(in)i +(the)f(m)n(ultitude)h(of)f(pro)5 b(jects,)515 4825 y(to)27 +b(the)h(v)-5 b(arious)26 b(distros,)h(are)f(put)j(together)d(b)n(y)h +(man)n(y)-7 b(,)27 b(man)n(y)g(v)n(olun)n(teers.)36 b(All)28 +b(of)f(these)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 15 31 +TeXDict begin 15 30 bop 515 203 a Fs(3)31 b(Memory)g(Areas)i(and)f +(Using)f(mallo)s(c\(\))1234 b(15)p 515 236 2865 4 v 515 +523 a Fq(pro)5 b(jects)29 b(could)i(alw)n(a)n(ys)d(use)j(more)f(help)h +(from)f(other)g(p)r(eople)g(who)h(are)e(willing)i(to)f(v)n(ol-)515 +623 y(un)n(teer)j(some)f(of)i(their)f(time.)55 b(There)33 +b(are)f(man)n(y)h(di\033eren)n(t)g(w)n(a)n(ys)f(to)h(help,)i(for)e(p)r +(eople)515 722 y(with)28 b(v)-5 b(arying)26 b(skill)i(lev)n(els,)e +(abilities,)i(and)f(a)n(v)-5 b(ailable)26 b(time.)515 +869 y(Y)-7 b(ou)27 b(can)f(help)h(to)g(answ)n(er)e(questions)h(in)h +(mailing)g(lists)f(suc)n(h)h(as)f(the)h(a)n(vr-gcc-list,)d(or)i(on)515 +969 y(forums)32 b(at)g(the)h(A)-9 b(VR)34 b(F)-7 b(reaks)31 +b(w)n(ebsite.)52 b(This)32 b(helps)h(man)n(y)f(p)r(eople)h(new)g(to)f +(the)h(op)r(en)515 1068 y(source)26 b(A)-9 b(VR)28 b(to)r(ols.)515 +1215 y(If)22 b(y)n(ou)g(think)h(y)n(ou)e(found)i(a)e(bug)h(in)h(an)n(y) +e(of)i(the)f(to)r(ols,)h(it)g(is)f(alw)n(a)n(ys)e(a)i(big)g(help)g(to)h +(submit)515 1315 y(a)i(go)r(o)r(d)h(bug)g(rep)r(ort)f(to)h(the)g(prop)r +(er)f(pro)5 b(ject.)36 b(A)26 b(go)r(o)r(d)g(bug)f(rep)r(ort)h(alw)n(a) +n(ys)e(helps)i(other)515 1415 y(v)n(olun)n(teers)h(to)i(analyze)f(the)i +(problem)e(and)h(to)g(get)g(it)g(\034xed)g(for)g(future)g(v)n(ersions)f +(of)h(the)515 1514 y(soft)n(w)n(are.)515 1661 y(Y)-7 +b(ou)31 b(can)g(also)f(help)h(to)h(\034x)f(bugs)g(in)g(v)-5 +b(arious)30 b(soft)n(w)n(are)f(pro)5 b(jects,)32 b(or)e(to)h(add)g +(desirable)515 1761 y(new)c(features.)515 1908 y(V)-7 +b(olun)n(teers)27 b(are)f(alw)n(a)n(ys)g(w)n(elcome!)36 +b(:-\))515 2229 y Fr(3)131 b(Memory)43 b(Areas)h(and)g(Using)f(mallo)t +(c\(\))515 2475 y Fn(3.1)112 b(In)m(tro)s(duction)515 +2675 y Fq(Man)n(y)23 b(of)g(the)h(devices)f(that)h(are)e(p)r(ossible)h +(targets)g(of)g(a)n(vr-lib)r(c)f(ha)n(v)n(e)h(a)g(minimal)h(amoun)n(t) +515 2775 y(of)34 b(RAM.)g(The)g(smallest)g(parts)f(supp)r(orted)h(b)n +(y)g(the)g(C)g(en)n(vironmen)n(t)f(come)h(with)g(128)515 +2875 y(b)n(ytes)i(of)g(RAM.)h(This)f(needs)g(to)h(b)r(e)f(shared)g(b)r +(et)n(w)n(een)g(initialized)h(and)f(uninitialized)515 +2974 y(v)-5 b(ariables)25 b(\()p Fs(sections)g Fq(\(p.)14 +b(20\))26 b(.data)f(and)h(.bss\),)h(the)f(dynamic)g(memory)g(allo)r +(cator,)e(and)515 3074 y(the)h(stac)n(k)f(that)h(is)g(used)f(for)h +(calling)f(subroutines)g(and)g(storing)g(lo)r(cal)g(\(automatic\))h(v) +-5 b(ari-)515 3174 y(ables.)515 3320 y(Also,)26 b(unlik)n(e)g(larger)f +(arc)n(hitectures,)g(there)h(is)g(no)g(hardw)n(are-supp)r(orted)e +(memory)i(man-)515 3420 y(agemen)n(t)c(whic)n(h)h(could)f(help)i(in)f +(separating)e(the)j(men)n(tioned)f(RAM)g(regions)e(from)i(b)r(eing)515 +3520 y(o)n(v)n(erwritten)j(b)n(y)h(eac)n(h)g(other.)515 +3667 y(The)22 b(standard)g(RAM)h(la)n(y)n(out)e(is)h(to)h(place)f +(.data)g(v)-5 b(ariables)21 b(\034rst,)i(from)f(the)h(b)r(eginning)f +(of)515 3766 y(the)g(in)n(ternal)f(RAM,)i(follo)n(w)n(ed)e(b)n(y)g +(.bss.)35 b(The)22 b(stac)n(k)f(is)h(started)f(from)h(the)g(top)g(of)g +(in)n(ternal)515 3866 y(RAM,)40 b(gro)n(wing)e(do)n(wn)n(w)n(ards.)72 +b(The)40 b(so-called)e("heap")h(a)n(v)-5 b(ailable)39 +b(for)g(the)h(dynamic)515 3965 y(memory)29 b(allo)r(cator)g(will)i(b)r +(e)g(placed)f(b)r(ey)n(ond)g(the)h(end)g(of)g(.bss.)45 +b(Th)n(us,)31 b(there's)g(no)f(risk)515 4065 y(that)k(dynamic)g(memory) +g(will)g(ev)n(er)f(collide)h(with)h(the)f(RAM)h(v)-5 +b(ariables)33 b(\(unless)h(there)515 4165 y(w)n(ere)26 +b(bugs)g(in)h(the)h(implemen)n(tation)e(of)h(the)h(allo)r(cator\).)35 +b(There)26 b(is)h(still)g(a)f(risk)h(that)g(the)515 4264 +y(heap)i(and)g(stac)n(k)f(could)h(collide)f(if)i(there)f(are)f(large)g +(requiremen)n(ts)g(for)g(either)h(dynamic)515 4364 y(memory)i(or)g +(stac)n(k)g(space.)49 b(The)32 b(former)f(can)g(ev)n(en)g(happ)r(en)i +(if)f(the)g(allo)r(cations)f(aren't)515 4464 y(all)g(that)h(large)f +(but)h(dynamic)g(memory)f(allo)r(cations)f(get)i(fragmen)n(ted)f(o)n(v) +n(er)f(time)i(suc)n(h)515 4563 y(that)i(new)h(requests)f(don't)g(quite) +h(\034t)g(in)n(to)f(the)h("holes")e(of)h(previously)f(freed)i(regions.) +515 4663 y(Large)19 b(stac)n(k)h(space)h(requiremen)n(ts)f(can)g(arise) +g(in)i(a)e(C)h(function)h(con)n(taining)e(large)g(and/or)515 +4762 y(n)n(umerous)26 b(lo)r(cal)h(v)-5 b(ariables)26 +b(or)h(when)h(recursiv)n(ely)d(calling)i(function.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 16 32 +TeXDict begin 16 31 bop 515 203 a Fs(3.2)94 b(In)m(ternal)33 +b(vs.)42 b(external)32 b(RAM)1423 b(16)p 515 236 2865 +4 v 506 497 a(Note:)676 647 y Fq(The)24 b(pictures)f(sho)n(wn)g(in)h +(this)g(do)r(cumen)n(t)f(represen)n(t)g(t)n(ypical)g(situations)g +(where)g(the)676 746 y(RAM)34 b(lo)r(cations)f(refer)g(to)g(an)g(A)-7 +b(Tmega128.)53 b(The)34 b(memory)f(addresses)f(used)h(are)676 +846 y(not)28 b(displa)n(y)n(ed)e(in)i(a)f(linear)g(scale.)1061 +2129 y @beginspecial 0 @llx 0 @lly 415 @urx 252 @ury +2126 @rwi @setspecial +%%BeginDocument: malloc-std.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: malloc-std.fig +%%Creator: c:\Program Files\GnuWin32\bin\fig2dev.exe Version 3.2 Patchlevel 5 +%%CreationDate: Wed Nov 05 21:02:58 2008 +%%For: eweddington@CSOLT0054 (CSOLT0054) +%%BoundingBox: 0 0 415 252 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def +/col32 {0.812 0.812 0.812 srgb} bind def + +end +save +newpath 0 252 moveto 0 0 lineto 415 0 lineto 415 252 lineto closepath clip newpath +-24.5 308.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Helvetica /Helvetica-iso isovec ReEncode +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 150 +% Polyline +0 slj +0 slc +7.500 slw +n 4185 1800 m 7200 1800 l 7200 3150 l 4185 3150 l + cp gs col32 1.00 shd ef gr gs col0 s gr +% here ends figure; +% +% here starts figure with depth 100 +/Helvetica-iso ff 180.00 scf sf +4590 3645 m +gs 1 -1 sc (RAMEND) col0 sh gr +% Polyline +0 slj +0 slc +0.000 slw +n 3375 3150 m 4185 3150 l 4185 1800 l 3375 1800 l + cp gs col26 1.00 shd ef gr +% Polyline +n 450 3150 m 1350 3150 l 1350 1800 l 450 1800 l + cp gs col3 1.00 shd ef gr +% Polyline +n 1350 3150 m 2250 3150 l 2250 1800 l 1350 1800 l + cp gs col14 1.00 shd ef gr +% Polyline +n 2250 3150 m 3150 3150 l 3150 1800 l 2250 1800 l + cp gs col23 1.00 shd ef gr +% Polyline +7.500 slw +gs clippath +4170 3421 m 4170 3270 l 4110 3270 l 4110 3421 l 4110 3421 l 4140 3301 l 4170 3421 l cp +eoclip +n 4500 3600 m 4140 3600 l + 4140 3285 l gs col0 s gr gr + +% arrowhead +n 4170 3421 m 4140 3301 l 4110 3421 l 4170 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3405 3421 m 3405 3270 l 3345 3270 l 3345 3421 l 3345 3421 l 3375 3301 l 3405 3421 l cp +eoclip +n 3690 3600 m 3375 3600 l + 3375 3285 l gs col0 s gr gr + +% arrowhead +n 3405 3421 m 3375 3301 l 3345 3421 l 3405 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3180 3421 m 3180 3270 l 3120 3270 l 3120 3421 l 3120 3421 l 3150 3301 l 3180 3421 l cp +eoclip +n 3600 3915 m 3150 3915 l + 3150 3285 l gs col0 s gr gr + +% arrowhead +n 3180 3421 m 3150 3301 l 3120 3421 l 3180 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2280 3421 m 2280 3270 l 2220 3270 l 2220 3421 l 2220 3421 l 2250 3301 l 2280 3421 l cp +eoclip +n 3600 4230 m 2250 4230 l + 2250 3285 l gs col0 s gr gr + +% arrowhead +n 2280 3421 m 2250 3301 l 2220 3421 l 2280 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +1380 3421 m 1380 3270 l 1320 3270 l 1320 3421 l 1320 3421 l 1350 3301 l 1380 3421 l cp +eoclip +n 2700 4770 m 1350 4770 l + 1350 3285 l gs col0 s gr gr + +% arrowhead +n 1380 3421 m 1350 3301 l 1320 3421 l 1380 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +480 3421 m 480 3270 l 420 3270 l 420 3421 l 420 3421 l 450 3301 l 480 3421 l cp +eoclip +n 2700 5085 m 450 5085 l + 450 3285 l gs col0 s gr gr + +% arrowhead +n 480 3421 m 450 3301 l 420 3421 l 480 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2280 4366 m 2280 4215 l 2220 4215 l 2220 4366 l 2220 4366 l 2250 4246 l 2280 4366 l cp +eoclip +n 2700 4500 m 2250 4500 l + 2250 4230 l gs col0 s gr gr + +% arrowhead +n 2280 4366 m 2250 4246 l 2220 4366 l 2280 4366 l cp gs 0.00 setgray ef gr col0 s +% Polyline +0.000 slw +n 3150 3150 m 3375 3150 l 3375 1800 l 3150 1800 l + cp gs col32 1.00 shd ef gr +/Helvetica-iso ff 180.00 scf sf +3690 4275 m +gs 1 -1 sc (*\(__malloc_heap_start\) == __heap_start) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +3735 3960 m +gs 1 -1 sc (*\(__brkval\) \(<= *SP - *\(__malloc_margin\)\)) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2835 5130 m +gs 1 -1 sc (__data_start) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2835 4815 m +gs 1 -1 sc (__data_end == __bss_start) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2835 4545 m +gs 1 -1 sc (__bss_end) col0 sh gr +/Helvetica-iso ff 720.00 scf sf +3150 2565 m +gs 1 -1 sc (!) col4 sh gr +/Helvetica-iso ff 180.00 scf sf +3780 3645 m +gs 1 -1 sc (SP) col0 sh gr +% here ends figure; +% +% here starts figure with depth 50 +/Helvetica-iso ff 180.00 scf sf +630 1620 m +gs 1 -1 sc 90.0 rot (0x0100) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2385 2700 m +gs 1 -1 sc (heap) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +3555 2700 m +gs 1 -1 sc (stack) col0 sh gr +/Helvetica-iso ff 270.00 scf sf +1305 1530 m +gs 1 -1 sc (on-board RAM) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +1620 2430 m +gs 1 -1 sc (.bss) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +1440 2700 m +gs 1 -1 sc (variables) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +675 2430 m +gs 1 -1 sc (.data) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +540 2700 m +gs 1 -1 sc (variables) col0 sh gr +% Polyline +0 slj +0 slc +15.000 slw +gs clippath +3647 2190 m 3360 2190 l 3360 2310 l 3647 2310 l 3647 2310 l 3407 2250 l 3647 2190 l cp +eoclip +n 4050 2250 m + 3375 2250 l gs col0 s gr gr + +% arrowhead +n 3647 2190 m 3407 2250 l 3647 2310 l 3647 2190 l cp gs 0.00 setgray ef gr col0 s +/Helvetica-iso ff 180.00 scf sf +4140 1665 m +gs 1 -1 sc 90.0 rot (0x10FF) col0 sh gr +/Helvetica-iso ff 270.00 scf sf +4815 1530 m +gs 1 -1 sc (external RAM) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +4365 1665 m +gs 1 -1 sc 90.0 rot (0x1100) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +7155 1665 m +gs 1 -1 sc 90.0 rot (0xFFFF) col0 sh gr +% Polyline +gs clippath +2833 2310 m 3120 2310 l 3120 2190 l 2833 2190 l 2833 2190 l 3073 2250 l 2833 2310 l cp +eoclip +n 2385 2250 m + 3105 2250 l gs col0 s gr gr + +% arrowhead +n 2833 2310 m 3073 2250 l 2833 2190 l 2833 2310 l cp gs 0.00 setgray ef gr col0 s +% Polyline +7.500 slw +n 450 1800 m 4185 1800 l 4185 3150 l 450 3150 l + cp gs col0 s gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF + +%%EndDocument + @endspecial 1004 2312 a(Figure)g(1:)37 b(RAM)28 b(map)f(of)h(a)f +(device)g(with)h(in)n(ternal)f(RAM)515 2657 y(On)k(a)h(simple)g(device) +f(lik)n(e)g(a)h(micro)r(con)n(troller)d(it)j(is)g(a)f(c)n(hallenge)g +(to)h(implemen)n(t)g(a)f(dy-)515 2757 y(namic)21 b(memory)g(allo)r +(cator)f(that)i(is)g(simple)g(enough)f(so)g(the)h(co)r(de)g(size)f +(requiremen)n(ts)g(will)515 2856 y(remain)31 b(lo)n(w,)i(y)n(et)g(p)r +(o)n(w)n(erful)e(enough)h(to)g(a)n(v)n(oid)f(unnecessary)g(memory)h +(fragmen)n(tation)515 2956 y(and)j(to)g(get)g(it)h(all)f(done)h(with)g +(reasonably)d(few)j(CPU)g(cycles.)59 b(Micro)r(con)n(trollers)33 +b(are)515 3056 y(often)24 b(lo)n(w)g(on)f(space)h(and)g(also)f(run)h +(at)g(m)n(uc)n(h)g(lo)n(w)n(er)e(sp)r(eeds)i(than)g(the)h(t)n(ypical)e +(PC)i(these)515 3155 y(da)n(ys.)515 3302 y(The)34 b(memory)f(allo)r +(cator)f(implemen)n(ted)j(in)f(a)n(vr-lib)r(c)f(tries)g(to)h(cop)r(e)g +(with)g(all)g(of)g(these)515 3402 y(constrain)n(ts,)29 +b(and)h(o\033ers)f(some)h(tuning)g(options)g(that)g(can)g(b)r(e)g(used) +g(if)h(there)f(are)f(more)515 3501 y(resources)c(a)n(v)-5 +b(ailable)26 b(than)i(in)g(the)g(default)g(con\034guration.)515 +3781 y Fn(3.2)112 b(In)m(ternal)38 b(vs.)50 b(external)38 +b(RAM)515 3982 y Fq(Ob)n(viously)-7 b(,)20 b(the)g(constrain)n(ts)e +(are)g(m)n(uc)n(h)i(harder)e(to)i(satisfy)f(in)h(the)g(default)g +(con\034guration)515 4081 y(where)29 b(only)g(in)n(ternal)g(RAM)i(is)e +(a)n(v)-5 b(ailable.)43 b(Extreme)30 b(care)e(m)n(ust)i(b)r(e)g(tak)n +(en)g(to)f(a)n(v)n(oid)f(a)515 4181 y(stac)n(k-heap)j(collision,)i(b)r +(oth)g(b)n(y)g(making)f(sure)g(functions)h(aren't)f(nesting)h(to)r(o)f +(deeply)-7 b(,)515 4280 y(and)29 b(don't)h(require)f(to)r(o)h(m)n(uc)n +(h)f(stac)n(k)g(space)g(for)g(lo)r(cal)h(v)-5 b(ariables,)29 +b(as)g(w)n(ell)g(as)g(b)n(y)h(b)r(eing)515 4380 y(cautious)d(with)h +(allo)r(cating)e(to)r(o)h(m)n(uc)n(h)h(dynamic)f(memory)-7 +b(.)515 4527 y(If)26 b(external)e(RAM)j(is)e(a)n(v)-5 +b(ailable,)25 b(it)h(is)f(strongly)f(recommended)h(to)h(mo)n(v)n(e)e +(the)i(heap)f(in)n(to)515 4627 y(the)35 b(external)g(RAM,)h(regardless) +d(of)i(whether)g(or)g(not)g(the)h(v)-5 b(ariables)34 +b(from)h(the)h(.data)515 4726 y(and)24 b(.bss)g(sections)g(are)g(also)f +(going)h(to)g(b)r(e)h(lo)r(cated)f(there.)36 b(The)24 +b(stac)n(k)g(should)g(alw)n(a)n(ys)f(b)r(e)515 4826 y(k)n(ept)29 +b(in)g(in)n(ternal)g(RAM.)h(Some)f(devices)f(ev)n(en)h(require)f(this,) +i(and)f(in)h(general,)e(in)n(ternal)515 4925 y(RAM)39 +b(can)f(b)r(e)h(accessed)e(faster)h(since)g(no)g(extra)g(w)n(ait)g +(states)g(are)f(required.)69 b(When)p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 17 33 +TeXDict begin 17 32 bop 515 203 a Fs(3.3)94 b(T)-8 b(unables)32 +b(for)g(mallo)s(c\(\))1653 b(17)p 515 236 2865 4 v 515 +523 a Fq(using)27 b(dynamic)f(memory)h(allo)r(cation)f(and)h(stac)n(k)f +(and)h(heap)g(are)f(separated)g(in)h(distinct)515 623 +y(memory)f(areas,)g(this)i(is)g(the)g(safest)f(w)n(a)n(y)f(to)i(a)n(v)n +(oid)e(a)h(stac)n(k-heap)f(collision.)515 902 y Fn(3.3)112 +b(T)-9 b(unables)39 b(for)e(mallo)s(c\(\))515 1103 y +Fq(There)e(are)f(a)h(n)n(um)n(b)r(er)g(of)g(v)-5 b(ariables)35 +b(that)g(can)g(b)r(e)h(tuned)g(to)f(adapt)g(the)h(b)r(eha)n(vior)e(of) +515 1202 y Fs(mallo)s(c\(\))g Fq(\(p.)14 b(195\))35 b(to)g(the)g(exp)r +(ected)h(requiremen)n(ts)e(and)h(constrain)n(ts)f(of)h(the)g(appli-)515 +1302 y(cation.)65 b(An)n(y)37 b(c)n(hanges)f(to)h(these)h(tunables)f +(should)g(b)r(e)h(made)f(b)r(efore)g(the)g(v)n(ery)f(\034rst)515 +1402 y(call)29 b(to)g Fs(mallo)s(c\(\))f Fq(\(p.)14 b(195\).)41 +b(Note)29 b(that)h(some)f(library)e(functions)j(migh)n(t)f(also)f(use)h +(dy-)515 1501 y(namic)h(memory)g(\(notably)h(those)f(from)g(the)h +Fo(<)p Fs(stdio.h)p Fo(>)p Fs(:)47 b(Standard)37 b(IO)e(facilities)515 +1601 y Fq(\(p.)14 b(168\)\),)36 b(so)f(mak)n(e)f(sure)h(the)h(c)n +(hanges)d(will)j(b)r(e)g(done)f(early)f(enough)g(in)i(the)f(startup)515 +1701 y(sequence.)515 1847 y(The)d(v)-5 b(ariables)30 +b Fm(__malloc_heap_sta)o(rt)c Fq(and)31 b Fm(__malloc_heap_end)25 +b Fq(can)32 b(b)r(e)g(used)g(to)515 1947 y(restrict)25 +b(the)h Fs(mallo)s(c\(\))f Fq(\(p.)14 b(195\))25 b(function)h(to)g(a)f +(certain)h(memory)f(region.)35 b(These)25 b(v)-5 b(ari-)515 +2047 y(ables)33 b(are)f(statically)h(initialized)h(to)g(p)r(oin)n(t)f +(to)h Fm(__heap_start)28 b Fq(and)34 b Fm(__heap_end)p +Fq(,)d(re-)515 2146 y(sp)r(ectiv)n(ely)-7 b(,)33 b(where)f +Fm(__heap_start)27 b Fq(is)33 b(\034lled)f(in)h(b)n(y)f(the)h(link)n +(er)f(to)g(p)r(oin)n(t)g(just)h(b)r(ey)n(ond)515 2246 +y(.bss,)38 b(and)e Fm(__heap_end)d Fq(is)j(set)g(to)g(0)g(whic)n(h)h +(mak)n(es)e Fs(mallo)s(c\(\))h Fq(\(p.)14 b(195\))35 +b(assume)h(the)515 2346 y(heap)27 b(is)g(b)r(elo)n(w)h(the)g(stac)n(k.) +515 2492 y(If)22 b(the)g(heap)g(is)f(going)g(to)g(b)r(e)i(mo)n(v)n(ed)d +(to)i(external)f(RAM,)h Fm(__malloc_heap_end)15 b Fl(must)29 +b Fq(b)r(e)515 2592 y(adjusted)h(accordingly)-7 b(.)42 +b(This)31 b(can)e(either)h(b)r(e)h(done)e(at)h(run-time,)h(b)n(y)f +(writing)f(directly)515 2692 y(to)g(this)h(v)-5 b(ariable,)29 +b(or)f(it)i(can)f(b)r(e)h(done)f(automatically)f(at)h(link-time,)h(b)n +(y)f(adjusting)h(the)515 2791 y(v)-5 b(alue)27 b(of)h(the)g(sym)n(b)r +(ol)f Fm(__heap_end)p Fq(.)515 2938 y(The)e(follo)n(wing)e(example)i +(sho)n(ws)e(a)i(link)n(er)f(command)g(to)h(relo)r(cate)e(the)j(en)n +(tire)e(.data)g(and)515 3038 y(.bss)g(segmen)n(ts,)g(and)h(the)f(heap)h +(to)f(lo)r(cation)g(0x1100)e(in)i(external)g(RAM.)h(The)g(heap)f(will) +515 3137 y(extend)j(up)h(to)g(address)e(0x\033\033.)515 +3347 y Fj(avr-gcc)37 b(...)f(-Wl,--section-start,.dat)q(a=0x)q(801)q +(100,)q(--d)q(efsy)q(m=__)q(hea)q(p_en)q(d=0x)q(80f)q(fff)42 +b(...)506 3557 y Fs(Note:)676 3707 y Fq(See)28 b Fs(explanation)f +Fq(\(p.)14 b(22\))28 b(for)f(o\033set)g(0x800000.)34 +b(See)28 b(the)g(c)n(hapter)e(ab)r(out)i Fs(using)676 +3806 y(gcc)g Fq(\(p.)14 b(111\))27 b(for)g(the)h Fm(-Wl)e +Fq(options.)676 3906 y(The)36 b(ld)g(\(link)n(er\))f(user)g(man)n(ual)g +(states)g(that)h(using)f(-T)-7 b(data=)p Fo(<)p Fq(x)p +Fo(>)34 b Fq(is)h(equiv)-5 b(alen)n(t)676 4005 y(to)39 +b(using)g(\025section-start,.data=)p Fo(<)p Fq(x)p Fo(>)p +Fq(.)68 b(Ho)n(w)n(ev)n(er,)40 b(y)n(ou)f(ha)n(v)n(e)f(to)h(use)g +(\025section-)676 4105 y(start)24 b(as)f(ab)r(o)n(v)n(e)g(b)r(ecause)h +(the)h(GCC)f(fron)n(tend)g(also)f(sets)h(the)h(-T)-7 +b(data)24 b(option)g(for)f(all)676 4205 y(MCU)h(t)n(yp)r(es)f(where)g +(the)h(SRAM)h(do)r(esn't)e(start)g(at)h(0x800060.)31 +b(Th)n(us,)25 b(the)e(link)n(er)g(is)676 4304 y(b)r(eing)28 +b(faced)g(with)g(t)n(w)n(o)f(-T)-7 b(data)27 b(options.)37 +b(Sarting)27 b(with)i(bin)n(utils)f(2.16,)f(the)h(link)n(er)676 +4404 y(c)n(hanged)f(the)h(preference,)e(and)i(pic)n(ks)f(the)h("wrong") +d(option)i(in)h(this)g(situation.)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 18 34 +TeXDict begin 18 33 bop 515 203 a Fs(3.3)94 b(T)-8 b(unables)32 +b(for)g(mallo)s(c\(\))1653 b(18)p 515 236 2865 4 v 530 +1554 a @beginspecial 0 @llx 0 @lly 626 @urx 246 @ury +3401 @rwi @setspecial +%%BeginDocument: malloc-x1.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: malloc-x1.fig +%%Creator: c:\Program Files\GnuWin32\bin\fig2dev.exe Version 3.2 Patchlevel 5 +%%CreationDate: Wed Nov 05 21:02:58 2008 +%%For: eweddington@CSOLT0054 (CSOLT0054) +%%BoundingBox: 0 0 626 246 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def +/col32 {0.812 0.812 0.812 srgb} bind def + +end +save +newpath 0 246 moveto 0 0 lineto 626 0 lineto 626 246 lineto closepath clip newpath +-26.3 303.3 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Helvetica /Helvetica-iso isovec ReEncode +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 100 +% Polyline +0 slj +0 slc +7.500 slw +gs clippath +5115 3421 m 5115 3270 l 5055 3270 l 5055 3421 l 5055 3421 l 5085 3301 l 5115 3421 l cp +eoclip +n 6435 4680 m 5085 4680 l + 5085 3285 l gs col0 s gr gr + +% arrowhead +n 5115 3421 m 5085 3301 l 5055 3421 l 5115 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +0.000 slw +n 4185 3150 m 5085 3150 l 5085 1800 l 4185 1800 l + cp gs col3 1.00 shd ef gr +% Polyline +n 5085 3150 m 5985 3150 l 5985 1800 l 5085 1800 l + cp gs col14 1.00 shd ef gr +% Polyline +n 5985 3150 m 6885 3150 l 6885 1800 l 5985 1800 l + cp gs col23 1.00 shd ef gr +/Helvetica-iso ff 180.00 scf sf +7425 4185 m +gs 1 -1 sc (*\(__malloc_heap_start\) == __heap_start) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +7470 3645 m +gs 1 -1 sc (*\(__malloc_heap_end\) == __heap_end) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +6570 5040 m +gs 1 -1 sc (__data_start) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +6570 4725 m +gs 1 -1 sc (__data_end == __bss_start) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +6570 4455 m +gs 1 -1 sc (__bss_end) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2745 3915 m +gs 1 -1 sc (RAMEND) col0 sh gr +% Polyline +n 450 3150 m 3375 3150 l 3375 1800 l 450 1800 l + cp gs col32 1.00 shd ef gr +% Polyline +n 6885 3150 m 7200 3150 l 7200 1800 l 6885 1800 l + cp gs col32 1.00 shd ef gr +/Helvetica-iso ff 180.00 scf sf +2745 3645 m +gs 1 -1 sc (SP) col0 sh gr +% Polyline +n 3375 3150 m 4185 3150 l 4185 1800 l 3375 1800 l + cp gs col26 1.00 shd ef gr +% Polyline +7.500 slw +gs clippath +4170 3421 m 4170 3270 l 4110 3270 l 4110 3421 l 4110 3421 l 4140 3301 l 4170 3421 l cp +eoclip +n 3645 3870 m 4140 3870 l + 4140 3285 l gs col0 s gr gr + +% arrowhead +n 4170 3421 m 4140 3301 l 4110 3421 l 4170 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3405 3421 m 3405 3270 l 3345 3270 l 3345 3421 l 3345 3421 l 3375 3301 l 3405 3421 l cp +eoclip +n 3060 3600 m 3375 3600 l + 3375 3285 l gs col0 s gr gr + +% arrowhead +n 3405 3421 m 3375 3301 l 3345 3421 l 3405 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6915 3421 m 6915 3270 l 6855 3270 l 6855 3421 l 6855 3421 l 6885 3301 l 6915 3421 l cp +eoclip +n 7335 3870 m 6885 3870 l + 6885 3285 l gs col0 s gr gr + +% arrowhead +n 6915 3421 m 6885 3301 l 6855 3421 l 6915 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6015 3421 m 6015 3270 l 5955 3270 l 5955 3421 l 5955 3421 l 5985 3301 l 6015 3421 l cp +eoclip +n 7335 4140 m 5985 4140 l + 5985 3285 l gs col0 s gr gr + +% arrowhead +n 6015 3421 m 5985 3301 l 5955 3421 l 6015 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6015 4276 m 6015 4125 l 5955 4125 l 5955 4276 l 5955 4276 l 5985 4156 l 6015 4276 l cp +eoclip +n 6435 4410 m 5985 4410 l + 5985 4140 l gs col0 s gr gr + +% arrowhead +n 6015 4276 m 5985 4156 l 5955 4276 l 6015 4276 l cp gs 0.00 setgray ef gr col0 s +/Helvetica-iso ff 180.00 scf sf +7470 3915 m +gs 1 -1 sc (*\(__brkval\)) col0 sh gr +% Polyline +gs clippath +4215 4006 m 4215 3855 l 4155 3855 l 4155 4006 l 4155 4006 l 4185 3886 l 4215 4006 l cp +eoclip +n 6435 4995 m 4185 4995 l + 4185 3870 l gs col0 s gr gr + +% arrowhead +n 4215 4006 m 4185 3886 l 4155 4006 l 4215 4006 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7140 3421 m 7140 3270 l 7080 3270 l 7080 3421 l 7080 3421 l 7110 3301 l 7140 3421 l cp +eoclip +n 7335 3600 m 7110 3600 l + 7110 3285 l gs col0 s gr gr + +% arrowhead +n 7140 3421 m 7110 3301 l 7080 3421 l 7140 3421 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +% +% here starts figure with depth 50 +% Polyline +0 slj +0 slc +7.500 slw +n 4185 1800 m + 4185 3150 l gs col0 s gr +/Helvetica-iso ff 270.00 scf sf +4815 1530 m +gs 1 -1 sc (external RAM) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +4140 1665 m +gs 1 -1 sc 90.0 rot (0x10FF) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +630 1620 m +gs 1 -1 sc 90.0 rot (0x0100) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +3555 2700 m +gs 1 -1 sc (stack) col0 sh gr +/Helvetica-iso ff 270.00 scf sf +1305 1530 m +gs 1 -1 sc (on-board RAM) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +4410 1665 m +gs 1 -1 sc 90.0 rot (0x1100) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +7155 1665 m +gs 1 -1 sc 90.0 rot (0xFFFF) col0 sh gr +% Polyline +n 450 1800 m 7200 1800 l 7200 3150 l 450 3150 l + cp gs col0 s gr +% Polyline +15.000 slw +gs clippath +3647 2190 m 3360 2190 l 3360 2310 l 3647 2310 l 3647 2310 l 3407 2250 l 3647 2190 l cp +eoclip +n 4050 2250 m + 3375 2250 l gs col0 s gr gr + +% arrowhead +n 3647 2190 m 3407 2250 l 3647 2310 l 3647 2190 l cp gs 0.00 setgray ef gr col0 s +/Helvetica-iso ff 180.00 scf sf +6120 2700 m +gs 1 -1 sc (heap) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +5355 2430 m +gs 1 -1 sc (.bss) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +5175 2700 m +gs 1 -1 sc (variables) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +4410 2430 m +gs 1 -1 sc (.data) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +4275 2700 m +gs 1 -1 sc (variables) col0 sh gr +% Polyline +gs clippath +6568 2310 m 6855 2310 l 6855 2190 l 6568 2190 l 6568 2190 l 6808 2250 l 6568 2310 l cp +eoclip +n 6120 2250 m + 6840 2250 l gs col0 s gr gr + +% arrowhead +n 6568 2310 m 6808 2250 l 6568 2190 l 6568 2310 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF + +%%EndDocument + @endspecial 654 1737 a Fq(Figure)27 b(2:)37 b(In)n(ternal)26 +b(RAM:)j(stac)n(k)d(only)-7 b(,)27 b(external)g(RAM:)h(v)-5 +b(ariables)26 b(and)i(heap)515 2080 y(If)g(dynamic)f(memory)g(should)g +(b)r(e)h(placed)g(in)g(external)e(RAM,)i(while)g(k)n(eeping)f(the)h(v) +-5 b(ari-)515 2179 y(ables)30 b(in)i(in)n(ternal)e(RAM,)i(something)f +(lik)n(e)g(the)g(follo)n(wing)f(could)h(b)r(e)h(used.)48 +b(Note)31 b(that)515 2279 y(for)25 b(demonstration)g(purp)r(oses,)g +(the)i(assignmen)n(t)d(of)i(the)h(v)-5 b(arious)24 b(regions)g(has)i +(not)g(b)r(een)515 2379 y(made)i(adjacen)n(t)g(in)h(this)g(example,)g +(so)f(there)g(are)g("holes")f(b)r(elo)n(w)h(and)h(ab)r(o)n(v)n(e)e(the) +i(heap)515 2478 y(in)34 b(external)f(RAM)h(that)h(remain)e(completely)h +(unaccessible)f(b)n(y)g(regular)f(v)-5 b(ariables)33 +b(or)515 2578 y(dynamic)25 b(memory)g(allo)r(cations)g(\(sho)n(wn)g(in) +h(ligh)n(t)f(bisque)h(color)e(in)i(the)g(picture)g(b)r(elo)n(w\).)515 +2781 y Fj(avr-gcc)37 b(...)f(-Wl,--defsym=__heap_star)q(t=0x)q(802)q +(000,)q(--d)q(efsy)q(m=__)q(hea)q(p_en)q(d=0x)q(803)q(fff)42 +b(...)530 4181 y @beginspecial 0 @llx 0 @lly 575 @urx +244 @ury 3401 @rwi @setspecial +%%BeginDocument: malloc-x2.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: malloc-x2.fig +%%Creator: c:\Program Files\GnuWin32\bin\fig2dev.exe Version 3.2 Patchlevel 5 +%%CreationDate: Wed Nov 05 21:02:58 2008 +%%For: eweddington@CSOLT0054 (CSOLT0054) +%%BoundingBox: 0 0 575 244 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def +/col32 {0.812 0.812 0.812 srgb} bind def +/col33 {1.000 0.969 0.745 srgb} bind def + +end +save +newpath 0 244 moveto 0 0 lineto 575 0 lineto 575 244 lineto closepath clip newpath +-24.5 287.1 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Helvetica /Helvetica-iso isovec ReEncode +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 100 +/Helvetica-iso ff 180.00 scf sf +6435 4185 m +gs 1 -1 sc (*\(__malloc_heap_start\) == __heap_start) col0 sh gr +% Polyline +0 slj +0 slc +0.000 slw +n 3375 3150 m 4185 3150 l 4185 1800 l 3375 1800 l + cp gs col26 1.00 shd ef gr +/Helvetica-iso ff 180.00 scf sf +6615 3645 m +gs 1 -1 sc (*\(__malloc_heap_end\) == __heap_end) col0 sh gr +% Polyline +n 450 3150 m 1350 3150 l 1350 1800 l 450 1800 l + cp gs col3 1.00 shd ef gr +% Polyline +n 1350 3150 m 2250 3150 l 2250 1800 l 1350 1800 l + cp gs col14 1.00 shd ef gr +% Polyline +n 2250 3150 m 3375 3150 l 3375 1800 l 2250 1800 l + cp gs col32 1.00 shd ef gr +% Polyline +7.500 slw +gs clippath +2280 3421 m 2280 3270 l 2220 3270 l 2220 3421 l 2220 3421 l 2250 3301 l 2280 3421 l cp +eoclip +n 2700 4140 m 2250 4140 l + 2250 3285 l gs col0 s gr gr + +% arrowhead +n 2280 3421 m 2250 3301 l 2220 3421 l 2280 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +1380 3421 m 1380 3270 l 1320 3270 l 1320 3421 l 1320 3421 l 1350 3301 l 1380 3421 l cp +eoclip +n 2700 4410 m 1350 4410 l + 1350 3285 l gs col0 s gr gr + +% arrowhead +n 1380 3421 m 1350 3301 l 1320 3421 l 1380 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +480 3421 m 480 3270 l 420 3270 l 420 3421 l 420 3421 l 450 3301 l 480 3421 l cp +eoclip +n 2700 4725 m 450 4725 l + 450 3285 l gs col0 s gr gr + +% arrowhead +n 480 3421 m 450 3301 l 420 3421 l 480 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +3405 3421 m 3405 3270 l 3345 3270 l 3345 3421 l 3345 3421 l 3375 3301 l 3405 3421 l cp +eoclip +n 3060 3600 m 3375 3600 l + 3375 3285 l gs col0 s gr gr + +% arrowhead +n 3405 3421 m 3375 3301 l 3345 3421 l 3405 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4170 3421 m 4170 3270 l 4110 3270 l 4110 3421 l 4110 3421 l 4140 3301 l 4170 3421 l cp +eoclip +n 3645 3870 m 4140 3870 l + 4140 3285 l gs col0 s gr gr + +% arrowhead +n 4170 3421 m 4140 3301 l 4110 3421 l 4170 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +0.000 slw +n 4995 3150 m 5895 3150 l 5895 1800 l 4995 1800 l + cp gs col23 1.00 shd ef gr +/Helvetica-iso ff 180.00 scf sf +2835 4770 m +gs 1 -1 sc (__data_start) col0 sh gr +% Polyline +7.500 slw +gs clippath +5925 3421 m 5925 3270 l 5865 3270 l 5865 3421 l 5865 3421 l 5895 3301 l 5925 3421 l cp +eoclip +n 6345 3870 m 5895 3870 l + 5895 3285 l gs col0 s gr gr + +% arrowhead +n 5925 3421 m 5895 3301 l 5865 3421 l 5925 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +5025 3421 m 5025 3270 l 4965 3270 l 4965 3421 l 4965 3421 l 4995 3301 l 5025 3421 l cp +eoclip +n 6345 4140 m 4995 4140 l + 4995 3285 l gs col0 s gr gr + +% arrowhead +n 5025 3421 m 4995 3301 l 4965 3421 l 5025 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6330 3421 m 6330 3270 l 6270 3270 l 6270 3421 l 6270 3421 l 6300 3301 l 6330 3421 l cp +eoclip +n 6525 3600 m 6300 3600 l + 6300 3285 l gs col0 s gr gr + +% arrowhead +n 6330 3421 m 6300 3301 l 6270 3421 l 6330 3421 l cp gs 0.00 setgray ef gr col0 s +% Polyline +0.000 slw +n 4185 3150 m 4995 3150 l 4995 1800 l 4185 1800 l + cp gs col33 1.00 shd ef gr +% Polyline +n 5895 3150 m 6300 3150 l 6300 1800 l 5895 1800 l + cp gs col32 1.00 shd ef gr +% Polyline +n 6300 3150 m 7200 3150 l 7200 1800 l 6300 1800 l + cp gs col33 1.00 shd ef gr +/Helvetica-iso ff 180.00 scf sf +2835 4455 m +gs 1 -1 sc (__data_end == __bss_start) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +6480 3915 m +gs 1 -1 sc (*\(__brkval\)) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2835 4185 m +gs 1 -1 sc (__bss_end) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2745 3915 m +gs 1 -1 sc (RAMEND) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +2745 3645 m +gs 1 -1 sc (SP) col0 sh gr +% here ends figure; +% +% here starts figure with depth 50 +/Helvetica-iso ff 180.00 scf sf +4410 1665 m +gs 1 -1 sc 90.0 rot (0x1100) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +7155 1665 m +gs 1 -1 sc 90.0 rot (0xFFFF) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +675 2430 m +gs 1 -1 sc (.data) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +1440 2700 m +gs 1 -1 sc (variables) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +540 2700 m +gs 1 -1 sc (variables) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +1620 2430 m +gs 1 -1 sc (.bss) col0 sh gr +/Helvetica-iso ff 270.00 scf sf +1305 1530 m +gs 1 -1 sc (on-board RAM) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +3555 2700 m +gs 1 -1 sc (stack) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +630 1620 m +gs 1 -1 sc 90.0 rot (0x0100) col0 sh gr +% Polyline +0 slj +0 slc +7.500 slw +n 4185 1800 m + 4185 3150 l gs col0 s gr +% Polyline +15.000 slw +gs clippath +5578 2310 m 5865 2310 l 5865 2190 l 5578 2190 l 5578 2190 l 5818 2250 l 5578 2310 l cp +eoclip +n 5130 2250 m + 5850 2250 l gs col0 s gr gr + +% arrowhead +n 5578 2310 m 5818 2250 l 5578 2190 l 5578 2310 l cp gs 0.00 setgray ef gr col0 s +/Helvetica-iso ff 180.00 scf sf +5175 2700 m +gs 1 -1 sc (heap) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +5085 1665 m +gs 1 -1 sc 90.0 rot (0x2000) col0 sh gr +/Helvetica-iso ff 270.00 scf sf +4815 945 m +gs 1 -1 sc (external RAM) col0 sh gr +/Helvetica-iso ff 180.00 scf sf +6345 1665 m +gs 1 -1 sc 90.0 rot (0x3FFF) col0 sh gr +% Polyline +7.500 slw +n 450 1800 m 7200 1800 l 7200 3150 l 450 3150 l + cp gs col0 s gr +/Helvetica-iso ff 180.00 scf sf +4140 1665 m +gs 1 -1 sc 90.0 rot (0x10FF) col0 sh gr +% Polyline +15.000 slw +gs clippath +3647 2190 m 3360 2190 l 3360 2310 l 3647 2310 l 3647 2310 l 3407 2250 l 3647 2190 l cp +eoclip +n 4050 2250 m + 3375 2250 l gs col0 s gr gr + +% arrowhead +n 3647 2190 m 3407 2250 l 3647 2310 l 3647 2190 l cp gs 0.00 setgray ef gr col0 s +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF + +%%EndDocument + @endspecial 742 4364 a Fq(Figure)27 b(3:)36 b(In)n(ternal)27 +b(RAM:)h(v)-5 b(ariables)26 b(and)i(stac)n(k,)e(external)h(RAM:)h(heap) +515 4707 y(If)22 b Fm(__malloc_heap_en)o(d)16 b Fq(is)22 +b(0,)h(the)f(allo)r(cator)e(attempts)i(to)g(detect)h(the)f(b)r(ottom)g +(of)g(stac)n(k)515 4807 y(in)27 b(order)f(to)h(prev)n(en)n(t)g(a)g +(stac)n(k-heap)e(collision)i(when)g(extending)g(the)h(actual)f(size)f +(of)i(the)515 4907 y(heap)f(to)h(gain)f(more)f(space)h(for)g(dynamic)h +(memory)-7 b(.)36 b(It)28 b(will)g(not)g(try)f(to)h(go)e(b)r(ey)n(ond)i +(the)515 5006 y(curren)n(t)34 b(stac)n(k)g(limit,)k(decreased)c(b)n(y)h +Fm(__malloc_margin)29 b Fq(b)n(ytes.)60 b(Th)n(us,)37 +b(all)d(p)r(ossible)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 19 35 +TeXDict begin 19 34 bop 515 203 a Fs(3.4)94 b(Implemen)m(tation)31 +b(details)1587 b(19)p 515 236 2865 4 v 515 523 a Fq(stac)n(k)38 +b(frames)g(of)h(in)n(terrupt)f(routines)g(that)h(could)g(in)n(terrupt)f +(the)i(curren)n(t)e(function,)515 623 y(plus)25 b(all)f(further)h +(nested)g(function)h(calls)e(m)n(ust)h(not)g(require)f(more)g(stac)n(k) +g(space,)h(or)f(they)515 722 y(will)k(risk)e(colliding)h(with)h(the)g +(data)f(segmen)n(t.)515 869 y(The)g(default)h(v)-5 b(alue)28 +b(of)f Fm(__malloc_margin)22 b Fq(is)27 b(set)h(to)f(32.)515 +1149 y Fn(3.4)112 b(Implemen)m(tation)39 b(details)515 +1349 y Fq(Dynamic)32 b(memory)f(allo)r(cation)g(requests)g(will)h(b)r +(e)g(returned)f(with)i(a)e(t)n(w)n(o-b)n(yte)g(header)515 +1449 y(prep)r(ended)f(that)h(records)d(the)j(size)f(of)g(the)h(allo)r +(cation.)43 b(This)31 b(is)f(later)f(used)i(b)n(y)g Fs(free\(\))515 +1549 y Fq(\(p.)14 b(193\).)60 b(The)35 b(returned)g(address)g(p)r(oin)n +(ts)g(just)h(b)r(ey)n(ond)g(that)f(header.)60 b(Th)n(us,)38 +b(if)e(the)515 1648 y(application)25 b(acciden)n(tally)h(writes)g(b)r +(efore)g(the)g(returned)g(memory)g(region,)f(the)i(in)n(ternal)515 +1748 y(consistency)f(of)i(the)g(memory)f(allo)r(cator)e(is)j +(compromised.)515 1895 y(The)20 b(implemen)n(tation)h(main)n(tains)f(a) +g(simple)h(freelist)g(that)g(accoun)n(ts)e(for)h(memory)g(blo)r(c)n(ks) +515 1994 y(that)i(ha)n(v)n(e)g(b)r(een)h(returned)f(in)g(previous)g +(calls)f(to)i Fs(free\(\))g Fq(\(p.)14 b(193\).)34 b(Note)22 +b(that)h(all)f(of)h(this)515 2094 y(memory)e(is)h(considered)f(to)h(b)r +(e)g(successfully)g(added)g(to)g(the)g(heap)g(already)-7 +b(,)22 b(so)f(no)h(further)515 2194 y(c)n(hec)n(ks)29 +b(against)g(stac)n(k-heap)f(collisions)h(are)g(done)h(when)g(recycling) +f(memory)g(from)h(the)515 2293 y(freelist.)515 2440 y(The)e(freelist)f +(itself)i(is)e(not)h(main)n(tained)g(as)f(a)g(separate)g(data)g +(structure,)g(but)i(rather)d(b)n(y)515 2540 y(mo)r(difying)35 +b(the)g(con)n(ten)n(ts)g(of)g(the)g(freed)g(memory)f(to)h(con)n(tain)f +(p)r(oin)n(ters)h(c)n(haining)f(the)515 2639 y(pieces)23 +b(together.)35 b(That)24 b(w)n(a)n(y)-7 b(,)23 b(no)h(additional)f +(memory)g(is)h(reqired)f(to)g(main)n(tain)h(this)g(list)515 +2739 y(except)31 b(for)f(a)g(v)-5 b(ariable)30 b(that)h(k)n(eeps)g +(trac)n(k)e(of)i(the)g(lo)n(w)n(est)f(memory)g(segmen)n(t)g(a)n(v)-5 +b(ailable)515 2839 y(for)29 b(reallo)r(cation.)42 b(Since)30 +b(b)r(oth,)h(a)e(c)n(hain)g(p)r(oin)n(ter)h(and)f(the)i(size)e(of)h +(the)g(c)n(h)n(unk)f(need)h(to)515 2938 y(b)r(e)24 b(recorded)f(in)i +(eac)n(h)e(c)n(h)n(unk,)i(the)f(minim)n(um)h(c)n(h)n(unk)f(size)g(on)g +(the)g(freelist)g(is)h(four)e(b)n(ytes.)515 3085 y(When)36 +b(allo)r(cating)g(memory)-7 b(,)37 b(\034rst)f(the)h(freelist)f(is)g(w) +n(alk)n(ed)f(to)h(see)g(if)h(it)g(could)f(satisfy)515 +3185 y(the)29 b(request.)40 b(If)29 b(there's)g(a)f(c)n(h)n(unk)h(a)n +(v)-5 b(ailable)27 b(on)i(the)g(freelist)g(that)g(will)g(\034t)h(the)f +(request)515 3284 y(exactly)-7 b(,)39 b(it)f(will)f(b)r(e)h(tak)n(en,)h +(disconnected)e(from)g(the)g(freelist,)j(and)d(returned)g(to)g(the)515 +3384 y(caller.)62 b(If)37 b(no)f(exact)g(matc)n(h)g(could)g(b)r(e)h +(found,)i(the)e(closest)f(matc)n(h)g(that)h(w)n(ould)f(just)515 +3484 y(satisfy)30 b(the)h(request)g(will)g(b)r(e)g(used.)47 +b(The)31 b(c)n(h)n(unk)f(will)h(normally)f(b)r(e)h(split)h(up)f(in)n +(to)f(one)515 3583 y(to)e(b)r(e)h(returned)e(to)i(the)f(caller,)g(and)g +(another)f(\(smaller\))h(one)g(that)h(will)f(remain)g(on)g(the)515 +3683 y(freelist.)52 b(In)33 b(case)f(this)h(c)n(h)n(unk)g(w)n(as)f +(only)g(up)h(to)g(t)n(w)n(o)f(b)n(ytes)h(larger)e(than)h(the)i +(request,)515 3782 y(the)25 b(request)f(will)h(simply)g(b)r(e)h +(altered)e(in)n(ternally)g(to)h(also)e(accoun)n(t)h(for)h(these)g +(additional)515 3882 y(b)n(ytes)i(since)g(no)h(separate)e(freelist)h +(en)n(try)g(could)g(b)r(e)h(split)g(o\033)g(in)g(that)g(case.)515 +4029 y(If)i(nothing)f(could)g(b)r(e)h(found)g(on)g(the)f(freelist,)h +(heap)g(extension)f(is)g(attempted.)44 b(This)29 b(is)515 +4129 y(where)i Fm(__malloc_margin)25 b Fq(will)32 b(b)r(e)g(considered) +e(if)i(the)g(heap)g(is)f(op)r(erating)g(b)r(elo)n(w)g(the)515 +4228 y(stac)n(k,)26 b(or)h(where)g Fm(__malloc_heap_en)o(d)22 +b Fq(will)27 b(b)r(e)h(v)n(eri\034ed)f(otherwise.)515 +4375 y(If)g(the)g(remaining)f(memory)f(is)i(insu\036cien)n(t)g(to)f +(satisfy)h(the)g(request,)f Fm(NULL)f Fq(will)i(ev)n(en)n(tu-)515 +4475 y(ally)g(b)r(e)h(returned)f(to)g(the)h(caller.)515 +4622 y(When)e(calling)f Fs(free\(\))h Fq(\(p.)14 b(193\),)25 +b(a)g(new)g(freelist)h(en)n(try)e(will)i(b)r(e)g(prepared.)35 +b(An)25 b(attempt)515 4721 y(is)f(then)g(made)g(to)g(aggregate)d(the)k +(new)f(en)n(try)f(with)i(p)r(ossible)f(adjacen)n(t)f(en)n(tries,)h +(yielding)515 4821 y(a)31 b(single)h(larger)e(en)n(try)i(a)n(v)-5 +b(ailable)31 b(for)g(further)h(allo)r(cations.)49 b(That)33 +b(w)n(a)n(y)-7 b(,)32 b(the)g(p)r(oten)n(tial)515 4920 +y(for)27 b(heap)g(fragmen)n(tation)f(is)i(hop)r(efully)g(reduced.)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 20 36 +TeXDict begin 20 35 bop 515 203 a Fs(4)31 b(Memory)g(Sections)1965 +b(20)p 515 236 2865 4 v 515 523 a Fq(A)30 b(call)f(to)g +Fs(reallo)s(c\(\))h Fq(\(p.)14 b(196\))28 b(\034rst)i(determines)f +(whether)h(the)g(op)r(eration)e(is)i(ab)r(out)f(to)515 +623 y(gro)n(w)j(or)i(shrink)g(the)h(curren)n(t)e(allo)r(cation.)57 +b(When)35 b(shrinking,)g(the)g(case)f(is)g(easy:)50 b(the)515 +722 y(existing)32 b(c)n(h)n(unk)g(is)g(split,)j(and)d(the)h(tail)f(of)h +(the)g(region)e(that)i(is)f(no)h(longer)e(to)h(b)r(e)h(used)515 +822 y(is)27 b(passed)g(to)g(the)g(standard)g Fs(free\(\))g +Fq(\(p.)14 b(193\))27 b(function)h(for)f(insertion)f(in)n(to)h(the)h +(freelist.)515 922 y(Chec)n(ks)c(are)g(\034rst)h(made)g(whether)g(the)h +(tail)f(c)n(h)n(unk)f(is)h(large)f(enough)h(to)g(hold)g(a)f(c)n(h)n +(unk)h(of)515 1021 y(its)30 b(o)n(wn)g(at)h(all,)g(otherwise)e +Fs(reallo)s(c\(\))h Fq(\(p.)14 b(196\))30 b(will)h(simply)f(do)g +(nothing,)h(and)g(return)515 1121 y(the)d(original)e(region.)515 +1268 y(When)g(gro)n(wing)e(the)i(region,)f(it)h(is)g(\034rst)g(c)n(hec) +n(k)n(ed)e(whether)i(the)g(existing)g(allo)r(cation)e(can)515 +1367 y(b)r(e)34 b(extended)g(in-place.)56 b(If)34 b(so,)h(this)f(is)g +(done,)i(and)d(the)i(original)d(p)r(oin)n(ter)i(is)g(returned)515 +1467 y(without)28 b(cop)n(ying)f(an)n(y)h(data)g(con)n(ten)n(ts.)38 +b(As)28 b(a)g(side-e\033ect,)g(this)h(c)n(hec)n(k)e(will)h(also)g +(record)515 1567 y(the)g(size)f(of)g(the)h(largest)f(c)n(h)n(unk)g(on)g +(the)h(freelist.)515 1713 y(If)34 b(the)h(region)e(cannot)h(b)r(e)g +(extended)h(in-place,)g(but)g(the)f(old)g(c)n(h)n(unk)g(is)g(at)g(the)h +(top)f(of)515 1813 y(heap,)g(and)f(the)g(ab)r(o)n(v)n(e)f(freelist)h(w) +n(alk)f(did)h(not)g(rev)n(eal)f(a)g(large)g(enough)g(c)n(h)n(unk)h(on)g +(the)515 1913 y(freelist)g(to)g(satisfy)g(the)h(new)g(request,)g(an)f +(attempt)h(is)g(made)f(to)g(quic)n(kly)g(extend)h(this)515 +2012 y(topmost)26 b(c)n(h)n(unk)h(\(and)g(th)n(us)g(the)h(heap\),)f(so) +f(no)h(need)g(arises)f(to)h(cop)n(y)f(o)n(v)n(er)f(the)j(existing)515 +2112 y(data.)45 b(If)31 b(there's)f(no)g(more)g(space)g(a)n(v)-5 +b(ailable)29 b(in)i(the)g(heap)f(\(same)h(c)n(hec)n(k)e(is)i(done)f(as) +g(in)515 2212 y Fs(mallo)s(c\(\))c Fq(\(p.)14 b(195\)\),)27 +b(the)h(en)n(tire)g(request)e(will)i(fail.)515 2358 y(Otherwise,)j +Fs(mallo)s(c\(\))g Fq(\(p.)14 b(195\))30 b(will)i(b)r(e)f(called)g +(with)h(the)g(new)f(request)g(size,)h(the)g(ex-)515 2458 +y(isting)k(data)g(will)h(b)r(e)g(copied)f(o)n(v)n(er,)h(and)f +Fs(free\(\))h Fq(\(p.)14 b(193\))36 b(will)g(b)r(e)h(called)f(on)g(the) +h(old)515 2558 y(region.)515 2879 y Fr(4)131 b(Memory)43 +b(Sections)506 3098 y Fs(Remarks:)676 3247 y Fq(Need)28 +b(to)f(list)h(all)f(the)h(sections)f(whic)n(h)h(are)e(a)n(v)-5 +b(ailable)27 b(to)g(the)h(a)n(vr.)506 3443 y Fs(W)-8 +b(eak)33 b(Bindings)676 3609 y Fq(FIXME:)c(need)f(to)f(discuss)g(the)h +(.w)n(eak)f(directiv)n(e.)515 3838 y(The)g(follo)n(wing)g(describ)r(es) +g(the)h(v)-5 b(arious)26 b(sections)h(a)n(v)-5 b(ailable.)515 +4118 y Fn(4.1)112 b(The)38 b(.text)f(Section)515 4319 +y Fq(The)26 b(.text)h(section)g(con)n(tains)e(the)i(actual)f(mac)n +(hine)g(instructions)g(whic)n(h)h(mak)n(e)e(up)i(y)n(our)515 +4418 y(program.)53 b(This)34 b(section)g(is)g(further)f(sub)r(divided)i +(b)n(y)e(the)i(.initN)f(and)g(.\034niN)h(sections)515 +4518 y(dicussed)27 b(b)r(elo)n(w.)506 4714 y Fs(Note:)676 +4863 y Fq(The)d Fm(avr-size)d Fq(program)h(\(part)i(of)g(bin)n +(utils\),)i(coming)d(from)h(a)g(Unix)g(bac)n(kground,)676 +4963 y(do)r(esn't)g(accoun)n(t)g(for)f(the)i(.data)e(initialization)h +(space)f(added)h(to)g(the)h(.text)f(section,)p 515 5179 +V 515 5255 a Fp(Generated)h(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 21 37 +TeXDict begin 21 36 bop 515 203 a Fs(4.2)94 b(The)32 +b(.data)g(Section)1812 b(21)p 515 236 2865 4 v 676 523 +a Fq(so)33 b(in)h(order)e(to)h(kno)n(w)g(ho)n(w)g(m)n(uc)n(h)g(\035ash) +g(the)h(\034nal)g(program)d(will)j(consume,)g(one)676 +623 y(needs)29 b(to)h(add)f(the)h(v)-5 b(alues)29 b(for)f(b)r(oth,)j +(.text)e(and)h(.data)f(\(but)h(not)f(.bss\),)h(while)g(the)676 +722 y(amoun)n(t)d(of)h(pre-allo)r(cated)e(SRAM)i(is)f(the)h(sum)g(of)f +(.data)h(and)f(.bss.)515 996 y Fn(4.2)112 b(The)38 b(.data)g(Section) +515 1197 y Fq(This)32 b(section)f(con)n(tains)g(static)h(data)g(whic)n +(h)g(w)n(as)f(de\034ned)h(in)g(y)n(our)f(co)r(de.)50 +b(Things)31 b(lik)n(e)515 1297 y(the)d(follo)n(wing)e(w)n(ould)h(end)h +(up)g(in)g(.data:)515 1474 y Fj(char)36 b(err_str[])i(=)d("Your)i +(program)g(has)f(died)h(a)e(horrible)j(death!";)515 1632 +y(struct)f(point)f(pt)g(=)g({)f(1,)h(1)g(};)515 1830 +y Fq(It)28 b(is)g(p)r(ossible)g(to)g(tell)g(the)h(link)n(er)e(the)i +(SRAM)g(address)d(of)i(the)h(b)r(eginning)f(of)g(the)h(.data)515 +1929 y(section.)75 b(This)40 b(is)h(accomplished)e(b)n(y)h(adding)g +Fm(-Wl,-Tdata,)p Fi(addr)49 b Fq(to)40 b(the)h Fm(avr-gcc)515 +2029 y Fq(command)d(used)g(to)g(the)h(link)g(y)n(our)e(program.)67 +b(Not)39 b(that)g Fm(addr)e Fq(m)n(ust)h(b)r(e)h(o\033set)f(b)n(y)515 +2128 y(adding)31 b(0x800000)d(the)k(to)g(real)f(SRAM)h(address)f(so)g +(that)h(the)g(link)n(er)f(kno)n(ws)g(that)h(the)515 2228 +y(address)27 b(is)i(in)g(the)h(SRAM)f(memory)f(space.)40 +b(Th)n(us,)29 b(if)h(y)n(ou)e(w)n(an)n(t)g(the)h(.data)g(section)f(to) +515 2328 y(start)h(at)h(0x1100,)d(pass)i(0x801100)e(at)i(the)i(address) +d(to)i(the)g(link)n(er.)43 b([o\033set)30 b Fs(explained)515 +2427 y Fq(\(p.)14 b(22\)])506 2612 y Fs(Note:)676 2761 +y Fq(When)29 b(using)h Fm(malloc\(\))40 b(\()p Fq(p.)14 +b Fm(195\))28 b Fq(in)h(the)g(application)f(\(whic)n(h)h(could)f(ev)n +(en)h(hap-)676 2861 y(p)r(en)f(inside)g(library)e(calls\),)h +Fs(additional)k(adjustmen)m(ts)d Fq(\(p.)14 b(17\))27 +b(are)g(required.)515 3135 y Fn(4.3)112 b(The)38 b(.bss)g(Section)515 +3336 y Fq(Uninitialized)28 b(global)e(or)h(static)g(v)-5 +b(ariables)27 b(end)g(up)h(in)g(the)g(.bss)f(section.)515 +3610 y Fn(4.4)112 b(The)38 b(.eeprom)g(Section)515 3810 +y Fq(This)27 b(is)h(where)f(eeprom)f(v)-5 b(ariables)27 +b(are)f(stored.)515 4084 y Fn(4.5)112 b(The)38 b(.noinit)f(Section)515 +4285 y Fq(This)21 b(sections)f(is)i(a)e(part)h(of)g(the)h(.bss)f +(section.)34 b(What)22 b(mak)n(es)e(the)h(.noinit)h(section)e(sp)r +(ecial)515 4384 y(is)27 b(that)h(v)-5 b(ariables)26 b(whic)n(h)i(are)e +(de\034ned)i(as)f(suc)n(h:)515 4562 y Fj(int)36 b(foo)g(__attribute__)j +(\(\(section)f(\(".noinit"\)\)\);)515 4760 y Fq(will)28 +b(not)f(b)r(e)h(initialized)g(to)f(zero)g(during)g(startup)g(as)g(w)n +(ould)g(normal)f(.bss)i(data.)515 4907 y(Only)39 b(uninitialized)g(v)-5 +b(ariables)38 b(can)h(b)r(e)h(placed)f(in)h(the)f(.noinit)h(section.)72 +b(Th)n(us,)42 b(the)515 5006 y(follo)n(wing)26 b(co)r(de)i(will)f +(cause)g Fm(avr-gcc)e Fq(to)i(issue)g(an)h(error:)p 515 +5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 22 38 +TeXDict begin 22 37 bop 515 203 a Fs(4.6)94 b(The)32 +b(.initN)e(Sections)1739 b(22)p 515 236 2865 4 v 515 +523 a Fj(int)36 b(bar)g(__attribute__)j(\(\(section)f +(\(".noinit"\)\)\))g(=)e(0xaa;)515 753 y Fq(It)d(is)g(p)r(ossible)g(to) +g(tell)g(the)h(link)n(er)e(explicitly)h(where)f(to)h(place)g(the)g +(.noinit)h(section)e(b)n(y)515 853 y(adding)19 b Fm +(-Wl,\025section-star)o(t=)o(.n)o(oin)o(it)o(=0)o(x80)o(20)o(00)14 +b Fq(to)20 b(the)g Fm(avr-gcc)d Fq(command)j(line)515 +952 y(at)25 b(the)h(linking)g(stage.)35 b(F)-7 b(or)25 +b(example,)g(supp)r(ose)h(y)n(ou)e(wish)i(to)f(place)h(the)g(.noinit)g +(section)515 1052 y(at)h(SRAM)h(address)f(0x2000:)515 +1261 y Fj($)35 b(avr-gcc)i(...)g(-Wl,--section-start=.noini)q(t=0)q +(x802)q(000)42 b(...)506 1555 y Fs(Note:)676 1704 y Fq(Because)19 +b(of)i(the)g(Harv)-5 b(ard)19 b(arc)n(hitecture)g(of)h(the)h(A)-9 +b(VR)21 b(devices,)g(y)n(ou)f(m)n(ust)g(man)n(ually)676 +1804 y(add)f(0x800000)c(to)k(the)h(address)e(y)n(ou)g(pass)g(to)h(the)g +(link)n(er)g(as)f(the)i(start)e(of)h(the)g(section.)676 +1903 y(Otherwise,)35 b(the)g(link)n(er)e(thinks)i(y)n(ou)e(w)n(an)n(t)h +(to)g(put)h(the)f(.noinit)h(section)f(in)n(to)g(the)676 +2003 y(.text)28 b(section)f(instead)h(of)f(.data/.bss)f(and)i(will)g +(complain.)515 2233 y(Alternativ)n(ely)-7 b(,)28 b(y)n(ou)f(can)h +(write)g(y)n(our)f(o)n(wn)h(link)n(er)g(script)g(to)g(automate)f(this.) +40 b([FIXME:)515 2332 y(need)27 b(an)h(example)f(or)f(ref)i(to)f(do)n +(x)g(for)g(writing)g(link)n(er)g(scripts.])515 2612 y +Fn(4.6)112 b(The)38 b(.initN)f(Sections)515 2813 y Fq(These)c(sections) +f(are)h(used)g(to)g(de\034ne)h(the)g(startup)f(co)r(de)g(from)g(reset)f +(up)i(through)f(the)515 2912 y(start)27 b(of)g(main\(\).)38 +b(These)27 b(all)g(are)g(subparts)f(of)i(the)g Fs(.text)k(section)26 +b Fq(\(p.)14 b(20\).)515 3059 y(The)34 b(purp)r(ose)g(of)g(these)h +(sections)f(is)g(to)g(allo)n(w)g(for)g(more)f(sp)r(eci\034c)i(placemen) +n(t)f(of)g(co)r(de)515 3159 y(within)28 b(y)n(our)e(program.)506 +3371 y Fs(Note:)676 3520 y Fq(Sometimes,)40 b(it)d(is)h(con)n(v)n +(enien)n(t)e(to)h(think)g(of)h(the)f(.initN)h(and)f(.\034niN)h +(sections)f(as)676 3620 y(functions,)28 b(but)g(in)g(realit)n(y)f(they) +g(are)g(just)h(sym)n(b)r(olic)f(names)g(whic)n(h)h(tell)g(the)g(link)n +(er)676 3719 y(where)34 b(to)h(stic)n(k)f(a)h(c)n(h)n(unk)f(of)h(co)r +(de)f(whic)n(h)h(is)f Fl(not)43 b Fq(a)34 b(function.)59 +b(Notice)35 b(that)g(the)676 3819 y(examples)28 b(for)g +Fs(asm)g Fq(\(p.)14 b(24\))28 b(and)g Fs(C)h Fq(\(p.)14 +b(25\))28 b(can)g(not)g(b)r(e)h(called)f(as)g(functions)g(and)676 +3919 y(should)f(not)h(b)r(e)g(jump)r(ed)h(in)n(to.)515 +4148 y(The)e Fs(.initN)f Fq(sections)h(are)g(executed)g(in)h(order)e +(from)i(0)f(to)g(9.)506 4344 y Fs(.init0:)676 4494 y +Fq(W)-7 b(eakly)25 b(b)r(ound)h(to)g(__init\(\).)36 b(If)26 +b(user)f(de\034nes)h(__init\(\),)g(it)h(will)e(b)r(e)i(jump)r(ed)f(in)n +(to)676 4593 y(immediately)i(after)f(a)g(reset.)506 4805 +y Fs(.init1:)676 4955 y Fq(Un)n(used.)37 b(User)27 b(de\034nable.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 23 39 +TeXDict begin 23 38 bop 515 203 a Fs(4.7)94 b(The)32 +b(.\034niN)f(Sections)1749 b(23)p 515 236 2865 4 v 506 +497 a(.init2:)676 647 y Fq(In)23 b(C)g(programs,)f(w)n(eakly)f(b)r +(ound)j(to)e(initialize)h(the)h(stac)n(k,)f(and)f(to)h(clear)f +(__zero_-)676 746 y(reg__)k(\(r1\).)506 954 y Fs(.init3:)676 +1103 y Fq(Un)n(used.)37 b(User)27 b(de\034nable.)506 +1290 y Fs(.init4:)515 1660 y Fq(F)-7 b(or)29 b(devices)f(with)i +Fo(>)f Fq(64)g(KB)g(of)g(R)n(OM,)g(.init4)h(de\034nes)f(the)h(co)r(de)f +(whic)n(h)g(tak)n(es)g(care)f(of)515 1760 y(cop)n(ying)33 +b(the)i(con)n(ten)n(ts)f(of)g(.data)g(from)h(the)g(\035ash)f(to)g +(SRAM.)h(F)-7 b(or)34 b(all)h(other)f(devices,)515 1859 +y(this)25 b(co)r(de)g(as)f(w)n(ell)h(as)g(the)g(co)r(de)g(to)g(zero)f +(out)h(the)g(.bss)g(section)g(is)g(loaded)f(from)h(libgcc.a.)506 +2062 y Fs(.init5:)676 2212 y Fq(Un)n(used.)37 b(User)27 +b(de\034nable.)506 2398 y Fs(.init6:)676 2548 y Fq(Un)n(used)h(for)f(C) +g(programs,)f(but)i(used)f(for)g(constructors)f(in)i(C++)f(programs.) +506 2750 y Fs(.init7:)676 2900 y Fq(Un)n(used.)37 b(User)27 +b(de\034nable.)506 3087 y Fs(.init8:)676 3236 y Fq(Un)n(used.)37 +b(User)27 b(de\034nable.)506 3423 y Fs(.init9:)676 3572 +y Fq(Jumps)h(in)n(to)f(main\(\).)515 3850 y Fn(4.7)112 +b(The)38 b(.\034niN)f(Sections)515 4051 y Fq(These)20 +b(sections)g(are)g(used)h(to)g(de\034ne)g(the)g(exit)g(co)r(de)g +(executed)f(after)h(return)f(from)h(main\(\))515 4150 +y(or)k(a)h(call)g(to)g Fs(exit\(\))g Fq(\(p.)14 b(193\).)36 +b(These)26 b(all)g(are)f(subparts)h(of)g(the)h Fs(.text)j(section)25 +b Fq(\(p.)14 b(20\).)515 4297 y(The)27 b Fs(.\034niN)g +Fq(sections)g(are)f(executed)i(in)g(descending)f(order)f(from)h(9)g(to) +h(0.)506 4500 y Fs(.\034nit9:)676 4649 y Fq(Un)n(used.)37 +b(User)27 b(de\034nable.)37 b(This)27 b(is)h(e\033ectiv)n(ely)f(where)g +(_exit\(\))h(starts.)506 4857 y Fs(.\034ni8:)676 5006 +y Fq(Un)n(used.)37 b(User)27 b(de\034nable.)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 24 40 +TeXDict begin 24 39 bop 515 203 a Fs(4.8)94 b(Using)31 +b(Sections)g(in)h(Assem)m(bler)e(Co)s(de)1118 b(24)p +515 236 2865 4 v 506 497 a(.\034ni7:)676 647 y Fq(Un)n(used.)37 +b(User)27 b(de\034nable.)506 843 y Fs(.\034ni6:)676 992 +y Fq(Un)n(used)h(for)f(C)g(programs,)f(but)i(used)f(for)g(destructors)g +(in)g(C++)g(programs.)506 1204 y Fs(.\034ni5:)676 1353 +y Fq(Un)n(used.)37 b(User)27 b(de\034nable.)506 1549 +y Fs(.\034ni4:)676 1699 y Fq(Un)n(used.)37 b(User)27 +b(de\034nable.)506 1895 y Fs(.\034ni3:)676 2044 y Fq(Un)n(used.)37 +b(User)27 b(de\034nable.)506 2240 y Fs(.\034ni2:)676 +2389 y Fq(Un)n(used.)37 b(User)27 b(de\034nable.)506 +2585 y Fs(.\034ni1:)676 2735 y Fq(Un)n(used.)37 b(User)27 +b(de\034nable.)506 2931 y Fs(.\034ni0:)676 3080 y Fq(Go)r(es)d(in)n(to) +f(an)h(in\034nite)h(lo)r(op)e(after)h(program)d(termination)j(and)f +(completion)h(of)g(an)n(y)676 3180 y(_exit\(\))k(co)r(de)f(\(execution) +h(of)f(co)r(de)h(in)g(the)f(.\034ni9)h(-)p Fo(>)f Fq(.\034ni1)g +(sections\).)515 3459 y Fn(4.8)112 b(Using)38 b(Sections)g(in)f(Assem)m +(bler)h(Co)s(de)515 3660 y Fq(Example:)515 3869 y Fj(#include)f +()797 4027 y(.section)g(.init1,"ax",@progbits)797 +4105 y(ldi)248 b(r0,)36 b(0xff)797 4184 y(out)248 b +(_SFR_IO_ADDR\(PORTB\),)40 b(r0)797 4263 y(out)248 b +(_SFR_IO_ADDR\(DDRB\),)40 b(r0)506 4468 y Fs(Note:)676 +4618 y Fq(The)d Fm(,"ax",@progbits)30 b Fq(tells)37 b(the)g(assem)n +(bler)e(that)i(the)g(section)g(is)f(allo)r(catable)676 +4717 y(\("a"\),)22 b(executable)f(\("x"\))g(and)g(con)n(tains)f(data)h +(\("@progbits"\).)33 b(F)-7 b(or)21 b(more)f(detailed)676 +4817 y(information)27 b(on)g(the)h(.section)f(directiv)n(e,)g(see)g +(the)h(gas)f(user)g(man)n(ual.)p 515 5179 V 515 5255 +a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 25 41 +TeXDict begin 25 40 bop 515 203 a Fs(4.9)94 b(Using)31 +b(Sections)g(in)h(C)f(Co)s(de)1480 b(25)p 515 236 2865 +4 v 515 523 a Fn(4.9)112 b(Using)38 b(Sections)g(in)f(C)h(Co)s(de)515 +724 y Fq(Example:)515 901 y Fj(#include)f()515 +1059 y(void)f(my_init_portb)j(\(void\))e(__attribute__)i(\(\(naked\)\)) +f(\\)656 1138 y(__attribute__)h(\(\(section)e(\(".init3"\)\)\);)515 +1296 y(void)515 1375 y(my_init_portb)i(\(void\))515 1454 +y({)797 1532 y(PORTB)e(=)e(0xff;)797 1611 y(DDRB)h(=)g(0xff;)515 +1690 y(})506 1860 y Fs(Note:)676 2010 y Fq(Section)27 +b(.init3)g(is)g(used)g(in)g(this)g(example,)g(as)f(this)h(ensures)f +(the)h(inernal)f Fm(__zero_-)676 2109 y(reg__)f Fq(has)i(already)e(b)r +(een)i(set)g(up.)37 b(The)27 b(co)r(de)g(generated)f(b)n(y)h(the)g +(compiler)f(migh)n(t)676 2209 y(blindly)i(rely)f(on)g +Fm(__zero_reg__)c Fq(b)r(eing)28 b(really)e(0.)515 2525 +y Fr(5)131 b(Data)43 b(in)h(Program)f(Space)515 2771 +y Fn(5.1)112 b(In)m(tro)s(duction)515 2972 y Fq(So)34 +b(y)n(ou)f(ha)n(v)n(e)g(some)h(constan)n(t)f(data)h(and)g(y)n(ou're)f +(running)h(out)g(of)g(ro)r(om)f(to)h(store)f(it?)515 +3071 y(Man)n(y)k(A)-9 b(VRs)39 b(ha)n(v)n(e)e(limited)i(amoun)n(t)f(of) +g(RAM)h(in)g(whic)n(h)f(to)g(store)f(data,)k(but)e(ma)n(y)515 +3171 y(ha)n(v)n(e)24 b(more)g(Flash)h(space)g(a)n(v)-5 +b(ailable.)34 b(The)26 b(A)-9 b(VR)25 b(is)h(a)e(Harv)-5 +b(ard)24 b(arc)n(hitecture)g(pro)r(cessor,)515 3270 y(where)g(Flash)h +(is)g(used)g(for)f(the)i(program,)d(RAM)j(is)f(used)g(for)f(data,)h +(and)g(they)g(eac)n(h)f(ha)n(v)n(e)515 3370 y(separate)29 +b(address)h(spaces.)46 b(It)32 b(is)f(a)g(c)n(hallenge)e(to)i(get)g +(constan)n(t)g(data)f(to)h(b)r(e)h(stored)e(in)515 3470 +y(the)d(Program)e(Space,)i(and)g(to)g(retriev)n(e)f(that)h(data)f(to)h +(use)g(it)h(in)f(the)g(A)-9 b(VR)28 b(application.)515 +3617 y(The)g(problem)f(is)h(exacerbated)e(b)n(y)i(the)g(fact)g(that)g +(the)h(C)f(Language)e(w)n(as)h(not)h(designed)515 3716 +y(for)21 b(Harv)-5 b(ard)20 b(arc)n(hitectures,)h(it)h(w)n(as)f +(designed)g(for)g(V)-7 b(on)22 b(Neumann)g(arc)n(hitectures)e(where)515 +3816 y(co)r(de)30 b(and)g(data)f(exist)h(in)h(the)f(same)g(address)f +(space.)43 b(This)30 b(means)g(that)g(an)n(y)g(compiler)515 +3915 y(for)g(a)g(Harv)-5 b(ard)29 b(arc)n(hitecture)g(pro)r(cessor,)g +(lik)n(e)i(the)f(A)-9 b(VR,)32 b(has)d(to)i(use)f(other)g(means)g(to) +515 4015 y(op)r(erate)c(with)i(separate)f(address)f(spaces.)515 +4162 y(Some)20 b(compilers)g(use)g(non-standard)f(C)h(language)f(k)n +(eyw)n(ords,)h(or)f(they)i(extend)g(the)g(stan-)515 4262 +y(dard)28 b(syn)n(tax)g(in)i(w)n(a)n(ys)d(that)j(are)e(non-standard.)40 +b(The)29 b(A)-9 b(VR)29 b(to)r(olset)g(tak)n(es)f(a)h(di\033eren)n(t) +515 4361 y(approac)n(h.)515 4508 y(GCC)37 b(has)g(a)g(sp)r(ecial)g(k)n +(eyw)n(ord,)g Fm(__attribute__)32 b Fq(that)38 b(is)f(used)g(to)g +(attac)n(h)g(di\033eren)n(t)515 4608 y(attributes)d(to)h(things)f(suc)n +(h)h(as)f(function)h(declarations,)g(v)-5 b(ariables,)35 +b(and)f(t)n(yp)r(es.)58 b(This)515 4707 y(k)n(eyw)n(ord)21 +b(is)i(follo)n(w)n(ed)f(b)n(y)h(an)g(attribute)h(sp)r(eci\034cation)f +(in)g(double)g(paren)n(theses.)34 b(In)24 b(A)-9 b(VR)515 +4807 y(GCC,)27 b(there)h(is)f(a)g(sp)r(ecial)g(attribute)h(called)f +Fm(progmem)p Fq(.)34 b(This)27 b(attribute)h(is)f(use)g(on)h(data)515 +4907 y(declarations,)h(and)h(tells)h(the)g(compiler)e(to)h(place)g(the) +h(data)f(in)h(the)f(Program)f(Memory)515 5006 y(\(Flash\).)p +515 5179 V 515 5255 a Fp(Generated)c(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 26 42 +TeXDict begin 26 41 bop 515 203 a Fs(5.2)94 b(A)32 b(Note)f(On)h(const) +1838 b(26)p 515 236 2865 4 v 515 523 a Fq(A)-9 b(VR-Lib)r(c)38 +b(pro)n(vides)f(a)h(simple)g(macro)f Fm(PROGMEM)f Fq(that)i(is)g +(de\034ned)h(as)e(the)i(attribute)515 623 y(syn)n(tax)28 +b(of)i(GCC)g(with)g(the)g Fm(progmem)d Fq(attribute.)43 +b(This)30 b(macro)e(w)n(as)h(created)g(as)g(a)g(con-)515 +722 y(v)n(enience)h(to)h(the)g(end)h(user,)f(as)f(w)n(e)h(will)g(see)f +(b)r(elo)n(w.)47 b(The)31 b Fm(PROGMEM)d Fq(macro)i(is)h(de\034ned)515 +822 y(in)d(the)g Fo(<)p Fm(avr/pgmspace.h)37 b(\()p Fq(p.)14 +b Fm(369\))p Fo(>)26 b Fq(system)h(header)g(\034le.)515 +969 y(It)c(is)g(di\036cult)h(to)f(mo)r(dify)h(GCC)f(to)g(create)f(new)h +(extensions)g(to)g(the)g(C)h(language)d(syn)n(tax,)515 +1068 y(so)30 b(instead,)i(a)n(vr-lib)r(c)d(has)i(created)f(macros)f(to) +i(retriev)n(e)f(the)h(data)g(from)f(the)i(Program)515 +1168 y(Space.)i(These)19 b(macros)g(are)g(also)g(found)h(in)g(the)h +Fo(<)p Fm(avr/pgmspace.h)37 b(\()p Fq(p.)14 b Fm(369\))p +Fo(>)k Fq(system)515 1268 y(header)26 b(\034le.)515 1547 +y Fn(5.2)112 b(A)37 b(Note)g(On)g(const)515 1748 y Fq(Man)n(y)19 +b(users)h(bring)g(up)g(the)h(idea)f(of)g(using)g(C's)h(k)n(eyw)n(ord)d +Fm(const)g Fq(as)i(a)g(means)g(of)g(declaring)515 1847 +y(data)33 b(to)h(b)r(e)g(in)g(Program)e(Space.)55 b(Doing)33 +b(this)h(w)n(ould)f(b)r(e)h(an)g(abuse)f(of)h(the)g(in)n(tended)515 +1947 y(meaning)27 b(of)g(the)h Fm(const)e Fq(k)n(eyw)n(ord.)515 +2094 y Fm(const)f Fq(is)i(used)g(to)g(tell)h(the)f(compiler)g(that)g +(the)h(data)f(is)g(to)g(b)r(e)g("read-only".)34 b(It)28 +b(is)f(used)515 2194 y(to)k(help)h(mak)n(e)f(it)h(easier)e(for)h(the)h +(compiler)f(to)g(mak)n(e)g(certain)g(transformations,)g(or)f(to)515 +2293 y(help)e(the)g(compiler)e(c)n(hec)n(k)h(for)g(incorrect)f(usage)h +(of)g(those)g(v)-5 b(ariables.)515 2440 y(F)e(or)22 b(example,)i(the)g +(const)f(k)n(eyw)n(ord)e(is)j(commonly)e(used)i(in)f(man)n(y)g +(functions)h(as)e(a)h(mo)r(di-)515 2540 y(\034er)c(on)h(the)g +(parameter)f(t)n(yp)r(e.)34 b(This)20 b(tells)h(the)f(compiler)f(that)i +(the)f(function)g(will)h(only)e(use)515 2639 y(the)30 +b(parameter)f(as)h(read-only)f(and)h(will)g(not)h(mo)r(dify)f(the)h +(con)n(ten)n(ts)f(of)g(the)h(parameter)515 2739 y(v)-5 +b(ariable.)515 2886 y Fm(const)26 b Fq(w)n(as)h(in)n(tended)i(for)f +(uses)g(suc)n(h)g(as)f(this,)i(not)g(as)e(a)h(means)g(to)g(iden)n(tify) +h(where)f(the)515 2985 y(data)c(should)h(b)r(e)g(stored.)35 +b(If)26 b(it)f(w)n(ere)f(used)h(as)f(a)h(means)f(to)h(de\034ne)g(data)g +(storage,)e(then)j(it)515 3085 y(loses)j(its)h(correct)f(meaning)g(\(c) +n(hanges)g(its)h(seman)n(tics\))g(in)g(other)f(situations)h(suc)n(h)f +(as)h(in)515 3185 y(the)e(function)g(parameter)e(example.)515 +3464 y Fn(5.3)112 b(Storing)37 b(and)i(Retrieving)e(Data)h(in)f(the)h +(Program)f(Space)515 3665 y Fq(Let's)27 b(sa)n(y)g(y)n(ou)f(ha)n(v)n(e) +h(some)g(global)f(data:)515 3874 y Fj(unsigned)37 b(char)g +(mydata[11][10])i(=)515 3953 y({)797 4032 y({0x00,0x01,0x02,0x03,0x0)q +(4,0x)q(05,0)q(x06)q(,0x0)q(7,0)q(x08,)q(0x09)q(},)797 +4110 y({0x0A,0x0B,0x0C,0x0D,0x0)q(E,0x)q(0F,0)q(x10)q(,0x1)q(1,0)q +(x12,)q(0x13)q(},)797 4189 y({0x14,0x15,0x16,0x17,0x1)q(8,0x)q(19,0)q +(x1A)q(,0x1)q(B,0)q(x1C,)q(0x1D)q(},)797 4268 y +({0x1E,0x1F,0x20,0x21,0x2)q(2,0x)q(23,0)q(x24)q(,0x2)q(5,0)q(x26,)q +(0x27)q(},)797 4347 y({0x28,0x29,0x2A,0x2B,0x2)q(C,0x)q(2D,0)q(x2E)q +(,0x2)q(F,0)q(x30,)q(0x31)q(},)797 4426 y({0x32,0x33,0x34,0x35,0x3)q +(6,0x)q(37,0)q(x38)q(,0x3)q(9,0)q(x3A,)q(0x3B)q(},)797 +4505 y({0x3C,0x3D,0x3E,0x3F,0x4)q(0,0x)q(41,0)q(x42)q(,0x4)q(3,0)q +(x44,)q(0x45)q(},)797 4584 y({0x46,0x47,0x48,0x49,0x4)q(A,0x)q(4B,0)q +(x4C)q(,0x4)q(D,0)q(x4E,)q(0x4F)q(},)797 4663 y +({0x50,0x51,0x52,0x53,0x5)q(4,0x)q(55,0)q(x56)q(,0x5)q(7,0)q(x58,)q +(0x59)q(},)797 4741 y({0x5A,0x5B,0x5C,0x5D,0x5)q(E,0x)q(5F,0)q(x60)q +(,0x6)q(1,0)q(x62,)q(0x63)q(},)797 4820 y({0x64,0x65,0x66,0x67,0x6)q +(8,0x)q(69,0)q(x6A)q(,0x6)q(B,0)q(x6C,)q(0x6D)q(})515 +4899 y(};)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 27 43 +TeXDict begin 27 42 bop 515 203 a Fs(5.3)94 b(Storing)31 +b(and)i(Retrieving)d(Data)j(in)f(the)f(Program)h(Space)413 +b(27)p 515 236 2865 4 v 515 523 a Fq(and)25 b(later)g(in)g(y)n(our)g +(co)r(de)g(y)n(ou)f(access)g(this)i(data)f(in)h(a)f(function)h(and)f +(store)f(a)h(single)g(b)n(yte)515 623 y(in)n(to)i(a)g(v)-5 +b(ariable)27 b(lik)n(e)g(so:)515 832 y Fj(byte)36 b(=)g(mydata[i][j];) +515 1062 y Fq(No)n(w)25 b(y)n(ou)h(w)n(an)n(t)f(to)h(store)f(y)n(our)g +(data)h(in)g(Program)f(Memory)-7 b(.)35 b(Use)27 b(the)f +Fm(PROGMEM)d Fq(macro)515 1161 y(found)32 b(in)h Fo(<)p +Fm(avr/pgmspace.h)k(\()p Fq(p.)15 b Fm(369\))p Fo(>)30 +b Fq(and)i(put)h(it)g(after)f(the)h(declaration)d(of)j(the)515 +1261 y(v)-5 b(ariable,)26 b(but)i(b)r(efore)g(the)g(initializer,)f(lik) +n(e)g(so:)515 1470 y Fj(#include)37 b()515 +1549 y(.)515 1628 y(.)515 1707 y(.)515 1786 y(unsigned)g(char)g +(mydata[11][10])i(PROGMEM)e(=)515 1864 y({)797 1943 y +({0x00,0x01,0x02,0x03,0x0)q(4,0x)q(05,0)q(x06)q(,0x0)q(7,0)q(x08,)q +(0x09)q(},)797 2022 y({0x0A,0x0B,0x0C,0x0D,0x0)q(E,0x)q(0F,0)q(x10)q +(,0x1)q(1,0)q(x12,)q(0x13)q(},)797 2101 y({0x14,0x15,0x16,0x17,0x1)q +(8,0x)q(19,0)q(x1A)q(,0x1)q(B,0)q(x1C,)q(0x1D)q(},)797 +2180 y({0x1E,0x1F,0x20,0x21,0x2)q(2,0x)q(23,0)q(x24)q(,0x2)q(5,0)q +(x26,)q(0x27)q(},)797 2259 y({0x28,0x29,0x2A,0x2B,0x2)q(C,0x)q(2D,0)q +(x2E)q(,0x2)q(F,0)q(x30,)q(0x31)q(},)797 2338 y +({0x32,0x33,0x34,0x35,0x3)q(6,0x)q(37,0)q(x38)q(,0x3)q(9,0)q(x3A,)q +(0x3B)q(},)797 2417 y({0x3C,0x3D,0x3E,0x3F,0x4)q(0,0x)q(41,0)q(x42)q +(,0x4)q(3,0)q(x44,)q(0x45)q(},)797 2495 y({0x46,0x47,0x48,0x49,0x4)q +(A,0x)q(4B,0)q(x4C)q(,0x4)q(D,0)q(x4E,)q(0x4F)q(},)797 +2574 y({0x50,0x51,0x52,0x53,0x5)q(4,0x)q(55,0)q(x56)q(,0x5)q(7,0)q +(x58,)q(0x59)q(},)797 2653 y({0x5A,0x5B,0x5C,0x5D,0x5)q(E,0x)q(5F,0)q +(x60)q(,0x6)q(1,0)q(x62,)q(0x63)q(},)797 2732 y +({0x64,0x65,0x66,0x67,0x6)q(8,0x)q(69,0)q(x6A)q(,0x6)q(B,0)q(x6C,)q +(0x6D)q(})515 2811 y(};)515 3041 y Fq(That's)28 b(it!)39 +b(No)n(w)28 b(y)n(our)f(data)h(is)g(in)h(the)g(Program)d(Space.)39 +b(Y)-7 b(ou)28 b(can)g(compile,)h(link,)f(and)515 3140 +y(c)n(hec)n(k)e(the)i(map)g(\034le)g(to)f(v)n(erify)g(that)h +Fm(mydata)d Fq(is)i(placed)g(in)h(the)g(correct)e(section.)515 +3287 y(No)n(w)31 b(that)h(y)n(our)f(data)h(resides)f(in)h(the)g +(Program)f(Space,)h(y)n(our)f(co)r(de)h(to)g(access)e(\(read\))515 +3387 y(the)35 b(data)g(will)g(no)g(longer)e(w)n(ork.)58 +b(The)35 b(co)r(de)g(that)g(gets)g(generated)f(will)h(retriev)n(e)f +(the)515 3487 y(data)27 b(that)h(is)f(lo)r(cated)h(at)f(the)h(address)e +(of)i(the)g Fm(mydata)d Fq(arra)n(y)-7 b(,)26 b(plus)h(o\033sets)h +(indexed)f(b)n(y)515 3586 y(the)d Fm(i)f Fq(and)g Fm(j)h +Fq(v)-5 b(ariables.)34 b(Ho)n(w)n(ev)n(er,)22 b(the)i(\034nal)g +(address)e(that)i(is)f(calculated)g(where)g(to)h(the)515 +3686 y(retriev)n(e)k(the)h(data)g(p)r(oin)n(ts)g(to)g(the)h(Data)f +(Space!)41 b(Not)29 b(the)h(Program)d(Space)i(where)g(the)515 +3785 y(data)i(is)h(actually)g(lo)r(cated.)50 b(It)32 +b(is)g(lik)n(ely)g(that)g(y)n(ou)f(will)i(b)r(e)f(retrieving)f(some)g +(garbage.)515 3885 y(The)22 b(problem)g(is)h(that)f(A)-9 +b(VR)23 b(GCC)g(do)r(es)f(not)g(in)n(trinsically)g(kno)n(w)g(that)g +(the)h(data)f(resides)515 3985 y(in)28 b(the)g(Program)d(Space.)515 +4132 y(The)36 b(solution)f(is)h(fairly)f(simple.)62 b(The)36 +b("rule)f(of)h(th)n(um)n(b")g(for)f(accessing)g(data)g(stored)515 +4231 y(in)g(the)g(Program)e(Space)i(is)g(to)f(access)g(the)h(data)f(as) +h(y)n(ou)f(normally)f(w)n(ould)i(\(as)f(if)i(the)515 +4331 y(v)-5 b(ariable)26 b(is)i(stored)e(in)i(Data)g(Space\),)f(lik)n +(e)g(so:)515 4540 y Fj(byte)36 b(=)g(mydata[i][j];)515 +4770 y Fq(then)28 b(tak)n(e)f(the)h(address)e(of)h(the)h(data:)515 +4979 y Fj(byte)36 b(=)g(&\(mydata[i][j]\);)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 28 44 +TeXDict begin 28 43 bop 515 203 a Fs(5.4)94 b(Storing)31 +b(and)i(Retrieving)d(Strings)h(in)h(the)f(Program)i(Space)321 +b(28)p 515 236 2865 4 v 515 523 a Fq(then)30 b(use)f(the)g(appropriate) +f Fm(pgm_read_)p Fh(\003)d Fq(macro,)j(and)h(the)h(address)e(of)h(y)n +(our)f(data)h(b)r(e-)515 623 y(comes)e(the)h(parameter)e(to)h(that)h +(macro:)515 815 y Fj(byte)36 b(=)g(pgm_read_byte\(&\(mydata[i])q([j]\)) +q(\);)515 1027 y Fq(The)i Fm(pgm_read_)p Fh(\003)33 b +Fq(macros)j(tak)n(e)h(an)h(address)e(that)i(p)r(oin)n(ts)g(to)f(the)h +(Program)e(Space,)515 1127 y(and)28 b(retriev)n(es)f(the)i(data)f(that) +g(is)h(stored)e(at)i(that)f(address.)38 b(This)29 b(is)f(wh)n(y)g(y)n +(ou)g(tak)n(e)g(the)515 1226 y(address)d(of)h(the)h(o\033set)f(in)n(to) +g(the)h(arra)n(y)-7 b(.)34 b(This)26 b(address)f(b)r(ecomes)h(the)h +(parameter)e(to)h(the)515 1326 y(macro)c(so)h(it)h(can)g(generate)e +(the)i(correct)f(co)r(de)g(to)h(retriev)n(e)e(the)i(data)f(from)h(the)g +(Program)515 1426 y(Space.)36 b(There)26 b(are)f(di\033eren)n(t)h +Fm(pgm_read_)p Fh(\003)c Fq(macros)j(to)h(read)g(di\033eren)n(t)g +(sizes)g(of)g(data)g(at)515 1525 y(the)i(address)e(giv)n(en.)515 +1802 y Fn(5.4)112 b(Storing)36 b(and)i(Retrieving)e(Strings)h(in)f(the) +h(Program)f(Space)515 2002 y Fq(No)n(w)i(that)g(y)n(ou)g(can)g +(successfully)f(store)h(and)g(retriev)n(e)f(simple)h(data)g(from)g +(Program)515 2102 y(Space)29 b(y)n(ou)g(w)n(an)n(t)g(to)h(store)f(and)g +(retriv)n(e)g(strings)f(from)i(Program)e(Space.)43 b(And)30 +b(sp)r(eci\034-)515 2202 y(cally)c(y)n(ou)g(w)n(an)n(t)g(to)h(store)f +(and)g(arra)n(y)f(of)h(strings)g(to)h(Program)e(Space.)36 +b(So)27 b(y)n(ou)f(start)g(o\033)515 2301 y(with)i(y)n(our)e(arra)n(y) +-7 b(,)25 b(lik)n(e)j(so:)515 2493 y Fj(char)36 b(*string_table[])k(=) +515 2572 y({)656 2651 y("String)d(1",)656 2730 y("String)g(2",)656 +2809 y("String)g(3",)656 2887 y("String)g(4",)656 2966 +y("String)g(5")515 3045 y(};)515 3258 y Fq(and)27 b(then)h(y)n(ou)f +(add)g(y)n(our)g(PR)n(OGMEM)h(macro)e(to)i(the)g(end)f(of)h(the)g +(declaration:)515 3450 y Fj(char)36 b(*string_table[])k(PROGMEM)d(=)515 +3529 y({)656 3607 y("String)g(1",)656 3686 y("String)g(2",)656 +3765 y("String)g(3",)656 3844 y("String)g(4",)656 3923 +y("String)g(5")515 4002 y(};)515 4214 y Fq(Righ)n(t?)g(WR)n(ONG!)515 +4361 y(Unfortunately)-7 b(,)27 b(with)h(GCC)g(attributes,)f(they)h +(a\033ect)f(only)g(the)h(declaration)e(that)i(they)515 +4461 y(are)23 b(attac)n(hed)g(to.)36 b(So)24 b(in)g(this)g(case,)g(w)n +(e)g(successfully)g(put)h(the)f Fm(string_table)19 b +Fq(v)-5 b(ariable,)515 4560 y(the)26 b(arra)n(y)e(itself,)j(in)f(the)h +(Program)d(Space.)36 b(This)26 b(DOES)h(NOT)f(put)h(the)f(actual)g +(strings)515 4660 y(themselv)n(es)i(in)n(to)g(Program)f(Space.)40 +b(A)n(t)29 b(this)g(p)r(oin)n(t,)h(the)f(strings)e(are)h(still)h(in)g +(the)g(Data)515 4760 y(Space,)e(whic)n(h)g(is)h(probably)e(not)i(what)f +(y)n(ou)g(w)n(an)n(t.)515 4907 y(In)j(order)e(to)i(put)h(the)f(strings) +f(in)i(Program)d(Space,)i(y)n(ou)f(ha)n(v)n(e)g(to)h(ha)n(v)n(e)f +(explicit)h(decla-)515 5006 y(rations)c(for)h(eac)n(h)g(string,)g(and)g +(put)h(eac)n(h)f(string)g(in)h(Program)e(Space:)p 515 +5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 29 45 +TeXDict begin 29 44 bop 515 203 a Fs(5.4)94 b(Storing)31 +b(and)i(Retrieving)d(Strings)h(in)h(the)f(Program)i(Space)321 +b(29)p 515 236 2865 4 v 515 523 a Fj(char)36 b(string_1[])i(PROGMEM)f +(=)f("String)h(1";)515 602 y(char)f(string_2[])i(PROGMEM)f(=)f("String) +h(2";)515 681 y(char)f(string_3[])i(PROGMEM)f(=)f("String)h(3";)515 +760 y(char)f(string_4[])i(PROGMEM)f(=)f("String)h(4";)515 +839 y(char)f(string_5[])i(PROGMEM)f(=)f("String)h(5";)515 +1068 y Fq(Then)27 b(use)h(the)g(new)f(sym)n(b)r(ols)g(in)h(y)n(our)e +(table,)i(lik)n(e)f(so:)515 1278 y Fj(PGM_P)36 b(string_table[])k +(PROGMEM)d(=)515 1356 y({)656 1435 y(string_1,)656 1514 +y(string_2,)656 1593 y(string_3,)656 1672 y(string_4,)656 +1751 y(string_5)515 1830 y(};)515 2060 y Fq(No)n(w)j(this)i(has)e(the)i +(e\033ect)g(of)f(putting)g Fm(string_table)c Fq(in)k(Program)e(Space,) +45 b(where)515 2159 y Fm(string_table)17 b Fq(is)23 b(an)f(arra)n(y)e +(of)j(p)r(oin)n(ters)f(to)g(c)n(haracters)e(\(strings\),)k(where)e(eac) +n(h)g(p)r(oin)n(ter)515 2259 y(is)27 b(a)g(p)r(oin)n(ter)g(to)h(the)g +(Program)e(Space,)h(where)g(eac)n(h)g(string)g(is)g(also)g(stored.)515 +2406 y(The)i Fm(PGM_P)f Fq(t)n(yp)r(e)i(ab)r(o)n(v)n(e)e(is)h(also)g(a) +g(macro)f(that)i(de\034ned)g(as)e(a)i(p)r(oin)n(ter)f(to)g(a)g(c)n +(haracter)515 2505 y(in)f(the)g(Program)d(Space.)515 +2652 y(Retrieving)k(the)h(strings)e(are)h(a)g(di\033eren)n(t)h(matter.) +43 b(Y)-7 b(ou)30 b(probably)e(don't)i(w)n(an)n(t)f(to)h(pull)515 +2752 y(the)38 b(string)g(out)g(of)g(Program)e(Space,)41 +b(b)n(yte)d(b)n(y)f(b)n(yte,)k(using)d(the)g Fm(pgm_read_byte\(\))515 +2851 y(\()p Fq(p.)14 b Fm(263\))26 b Fq(macro.)37 b(There)27 +b(are)g(other)h(functions)g(declared)f(in)h(the)g Fo(<)p +Fs(a)m(vr/pgmspace.h)515 2951 y Fq(\(p.)14 b(369\))p +Fo(>)37 b Fq(header)h(\034le)h(that)g(w)n(ork)f(with)h(strings)f(that)h +(are)f(stored)g(in)h(the)g(Program)515 3051 y(Space.)515 +3198 y(F)-7 b(or)36 b(example)g(if)h(y)n(ou)f(w)n(an)n(t)f(to)i(cop)n +(y)e(the)i(string)f(from)g(Program)f(Space)h(to)h(a)f(bu\033er)515 +3297 y(in)30 b(RAM)h(\(lik)n(e)g(an)f(automatic)g(v)-5 +b(ariable)29 b(inside)h(a)g(function,)i(that)f(is)f(allo)r(cated)g(on)g +(the)515 3397 y(stac)n(k\),)d(y)n(ou)f(can)i(do)f(this:)515 +3606 y Fj(void)36 b(foo\(void\))515 3685 y({)656 3764 +y(char)g(buffer[10];)656 3921 y(for)g(\(unsigned)i(char)e(i)g(=)f(0;)h +(i)g(<)f(5;)h(i++\))656 4000 y({)797 4079 y(strcpy_P\(buffer,)k +(\(PGM_P\)pgm_read_word\(&\(st)q(ring)q(_tab)q(le[)q(i]\)\))q(\);)797 +4237 y(//)c(Display)h(buffer)g(on)f(LCD.)656 4316 y(})656 +4395 y(return;)515 4474 y(})515 4703 y Fq(Here,)27 b(the)h +Fm(string_table)23 b Fq(arra)n(y)j(is)h(stored)g(in)h(Program)e(Space,) +i(so)f(w)n(e)g(access)g(it)h(nor-)515 4803 y(mally)-7 +b(,)26 b(as)g(if)h(w)n(ere)e(stored)h(in)h(Data)f(Space,)g(then)h(tak)n +(e)f(the)g(address)g(of)g(the)h(lo)r(cation)e(w)n(e)515 +4903 y(w)n(an)n(t)h(to)h(access,)f(and)h(use)f(the)i(address)d(as)i(a)f +(parameter)g(to)h Fm(pgm_read_word)p Fq(.)k(W)-7 b(e)27 +b(use)515 5002 y(the)i Fm(pgm_read_word)24 b Fq(macro)k(to)h(read)g +(the)g(string)g(p)r(oin)n(ter)g(out)g(of)g(the)h Fm(string_table)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 30 46 +TeXDict begin 30 45 bop 515 203 a Fs(5.5)94 b(Ca)m(v)m(eats)2228 +b(30)p 515 236 2865 4 v 515 523 a Fq(arra)n(y)-7 b(.)46 +b(Remem)n(b)r(er)31 b(that)g(a)g(p)r(oin)n(ter)g(is)g(16-bits,)h(or)e +(w)n(ord)g(size.)48 b(The)32 b Fm(pgm_read_word)515 623 +y Fq(macro)e(will)h(return)g(a)g(16-bit)g(unsigned)g(in)n(teger.)47 +b(W)-7 b(e)32 b(then)g(ha)n(v)n(e)e(to)h(t)n(yp)r(ecast)g(it)h(as)e(a) +515 722 y(true)c(p)r(oin)n(ter)f(to)h(program)e(memory)-7 +b(,)25 b Fm(PGM_P)p Fq(.)f(This)i(p)r(oin)n(ter)g(is)f(an)h(address)f +(in)h(Program)515 822 y(Space)g(p)r(oin)n(ting)g(to)g(the)h(string)f +(that)h(w)n(e)f(w)n(an)n(t)g(to)g(cop)n(y)-7 b(.)36 b(This)26 +b(p)r(oin)n(ter)g(is)g(then)h(used)g(as)515 922 y(a)j(parameter)g(to)h +(the)g(function)h Fm(strcpy_P)p Fq(.)c(The)j(function)h +Fm(strcpy_P)27 b Fq(is)k(just)h(lik)n(e)f(the)515 1021 +y(regular)21 b Fm(strcpy)g Fq(function,)k(except)e(that)h(it)g(copies)e +(a)h(string)g(from)g(Program)e(Space)i(\(the)515 1121 +y(second)k(parameter\))f(to)h(a)h(bu\033er)f(in)h(the)g(Data)f(Space)h +(\(the)g(\034rst)f(parameter\).)515 1268 y(There)38 b(are)g(man)n(y)h +(string)f(functions)i(a)n(v)-5 b(ailable)37 b(that)j(w)n(ork)d(with)j +(strings)e(lo)r(cated)h(in)515 1367 y(Program)28 b(Space.)45 +b(All)31 b(of)g(these)f(sp)r(ecial)g(string)g(functions)g(ha)n(v)n(e)g +(a)g(su\036x)g(of)g Fm(_P)g Fq(in)h(the)515 1467 y(function)k(name,)h +(and)f(are)f(declared)g(in)h(the)g Fo(<)p Fs(a)m(vr/pgmspace.h)f +Fq(\(p.)14 b(369\))p Fo(>)34 b Fq(header)515 1567 y(\034le.)515 +1846 y Fn(5.5)112 b(Ca)m(v)m(eats)515 2047 y Fq(The)22 +b(macros)f(and)h(functions)g(used)g(to)g(retriev)n(e)f(data)h(from)f +(the)i(Program)d(Space)i(ha)n(v)n(e)f(to)515 2146 y(generate)28 +b(some)g(extra)g(co)r(de)h(in)h(order)d(to)i(actually)g(load)f(the)i +(data)f(from)f(the)i(Program)515 2246 y(Space.)36 b(This)27 +b(incurs)f(some)g(extra)g(o)n(v)n(erhead)e(in)j(terms)f(of)h(co)r(de)f +(space)g(\(extra)g(op)r(co)r(des\))515 2346 y(and)39 +b(execution)g(time.)72 b(Usually)-7 b(,)43 b(b)r(oth)c(the)h(space)f +(and)g(time)h(o)n(v)n(erhead)d(is)i(minimal)515 2445 +y(compared)e(to)h(the)h(space)f(sa)n(vings)f(of)h(putting)h(data)f(in)h +(Program)e(Space.)69 b(But)39 b(y)n(ou)515 2545 y(should)25 +b(b)r(e)i(a)n(w)n(are)c(of)j(this)g(so)g(y)n(ou)f(can)g(minimize)i(the) +f(n)n(um)n(b)r(er)g(of)f(calls)h(within)g(a)g(single)515 +2644 y(function)36 b(that)h(gets)e(the)i(same)e(piece)i(of)f(data)f +(from)h(Program)e(Space.)63 b(It)36 b(is)g(alw)n(a)n(ys)515 +2744 y(instructiv)n(e)27 b(to)g(lo)r(ok)g(at)h(the)g(resulting)e +(disassem)n(bly)h(from)g(the)h(compiler.)515 3066 y Fr(6)131 +b(a)l(vr-lib)t(c)44 b(and)f(assem)l(bler)g(programs)515 +3311 y Fn(6.1)112 b(In)m(tro)s(duction)515 3512 y Fq(There)33 +b(migh)n(t)i(b)r(e)f(sev)n(eral)f(reasons)f(to)i(write)g(co)r(de)g(for) +g(A)-9 b(VR)35 b(micro)r(con)n(trollers)c(using)515 3612 +y(plain)c(assem)n(bler)f(source)h(co)r(de.)36 b(Among)27 +b(them)h(are:)639 3841 y Fk(\210)41 b Fq(Co)r(de)32 b(for)g(devices)g +(that)h(do)f(not)g(ha)n(v)n(e)f(RAM)i(and)f(are)g(th)n(us)g(not)g(supp) +r(orted)g(b)n(y)722 3941 y(the)c(C)g(compiler.)639 4107 +y Fk(\210)41 b Fq(Co)r(de)28 b(for)f(v)n(ery)f(time-critical)h +(applications.)639 4273 y Fk(\210)41 b Fq(Sp)r(ecial)28 +b(t)n(w)n(eaks)e(that)i(cannot)f(b)r(e)h(done)f(in)h(C.)515 +4503 y(Usually)-7 b(,)24 b(all)h(but)g(the)f(\034rst)g(could)g +(probably)g(b)r(e)g(done)g(easily)g(using)g(the)h Fs(inline)h(assem-) +515 4603 y(bler)h Fq(\(p.)14 b(36\))27 b(facilit)n(y)h(of)f(the)h +(compiler.)515 4750 y(Although)35 b(a)n(vr-lib)r(c)e(is)i(primarily)f +(targeted)g(to)h(supp)r(ort)f(programming)f(A)-9 b(VR)35 +b(micro-)515 4849 y(con)n(trollers)26 b(using)i(the)h(C)f(\(and)h +(C++\))e(language,)g(there's)h(limited)h(supp)r(ort)f(for)g(direct)515 +4949 y(assem)n(bler)e(usage)g(as)h(w)n(ell.)37 b(The)27 +b(b)r(ene\034ts)h(of)g(it)g(are:)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 31 47 +TeXDict begin 31 46 bop 515 203 a Fs(6.2)94 b(In)m(v)m(oking)33 +b(the)e(compiler)1635 b(31)p 515 236 2865 4 v 639 523 +a Fk(\210)41 b Fq(Use)31 b(of)f(the)h(C)f(prepro)r(cessor)e(and)i(th)n +(us)g(the)h(abilit)n(y)f(to)g(use)g(the)h(same)f(sym)n(b)r(olic)722 +623 y(constan)n(ts)35 b(that)i(are)e(a)n(v)-5 b(ailable)35 +b(to)h(C)g(programs,)g(as)g(w)n(ell)g(as)f(a)h(\035exible)g(macro)722 +722 y(concept)d(that)h(can)e(use)h(an)n(y)f(v)-5 b(alid)34 +b(C)f(iden)n(ti\034er)g(as)f(a)h(macro)f(\(whereas)g(the)h(as-)722 +822 y(sem)n(bler's)e(macro)g(concept)h(is)g(basically)f(targeted)g(to)h +(use)g(a)g(macro)f(in)h(place)g(of)722 922 y(an)c(assem)n(bler)e +(instruction\).)639 1088 y Fk(\210)41 b Fq(Use)29 b(of)g(the)g(run)n +(time)g(framew)n(ork)e(lik)n(e)h(automatically)g(assigning)g(in)n +(terrupt)g(v)n(ec-)722 1187 y(tors.)72 b(F)-7 b(or)39 +b(devices)g(that)g(ha)n(v)n(e)g(RAM,)h Fs(initializing)j(the)j(RAM)e(v) +-5 b(ariables)722 1287 y Fq(\(p.)14 b(22\))28 b(can)f(also)f(b)r(e)i +(utilized.)515 1566 y Fn(6.2)112 b(In)m(v)m(oking)38 +b(the)f(compiler)515 1767 y Fq(F)-7 b(or)20 b(the)h(purp)r(ose)g +(describ)r(ed)f(in)h(this)h(do)r(cumen)n(t,)g(the)f(assem)n(bler)f(and) +h(link)n(er)f(are)g(usually)515 1867 y(not)25 b(in)n(v)n(ok)n(ed)e(man) +n(ually)-7 b(,)25 b(but)g(rather)f(using)g(the)i(C)f(compiler)f(fron)n +(tend)g(\()p Fm(avr-gcc)p Fq(\))f(that)515 1966 y(in)28 +b(turn)f(will)h(call)f(the)h(assem)n(bler)e(and)i(link)n(er)e(as)h +(required.)515 2113 y(This)g(approac)n(h)f(has)h(the)h(follo)n(wing)e +(adv)-5 b(an)n(tages:)639 2343 y Fk(\210)41 b Fq(There)22 +b(is)g(basically)f(only)h(one)g(program)f(to)h(b)r(e)h(called)f +(directly)-7 b(,)23 b Fm(avr-gcc)p Fq(,)d(regard-)722 +2443 y(less)27 b(of)h(the)g(actual)f(source)f(language)g(used.)639 +2609 y Fk(\210)41 b Fq(The)30 b(in)n(v)n(ok)-5 b(ation)28 +b(of)h(the)h(C)f(prepro)r(cessor)e(will)i(b)r(e)h(automatic,)f(and)g +(will)h(include)722 2708 y(the)e(appropriate)e(options)h(to)g(lo)r +(cate)g(required)g(include)h(\034les)f(in)h(the)g(\034lesystem.)639 +2874 y Fk(\210)41 b Fq(The)34 b(in)n(v)n(ok)-5 b(ation)31 +b(of)j(the)f(link)n(er)g(will)g(b)r(e)h(automatic,)g(and)f(will)h +(include)f(the)h(ap-)722 2974 y(propriate)c(options)g(to)h(lo)r(cate)g +(additional)f(libraries)g(as)g(w)n(ell)h(as)f(the)i(application)722 +3074 y(start-up)27 b(co)r(de)h(\()p Fm(crt)p Fl(XXX)13 +b Fm(.o)p Fq(\))25 b(and)i(link)n(er)g(script.)515 3303 +y(Note)39 b(that)h(the)g(in)n(v)n(ok)-5 b(ation)38 b(of)h(the)h(C)f +(prepro)r(cessor)e(will)j(b)r(e)f(automatic)g(when)h(the)515 +3403 y(\034lename)27 b(pro)n(vided)e(for)i(the)g(assem)n(bler)f(\034le) +h(ends)g(in)g(.S)g(\(the)h(capital)e(letter)h("s"\).)36 +b(This)515 3503 y(w)n(ould)20 b(ev)n(en)h(apply)f(to)h(op)r(erating)f +(systems)g(that)h(use)g(case-insensitiv)n(e)e(\034lesystems)h(since)515 +3602 y(the)25 b(actual)f(decision)g(is)h(made)f(based)g(on)h(the)g +(case)f(of)g(the)h(\034lename)g(su\036x)f(giv)n(en)g(on)h(the)515 +3702 y(command-line,)i(not)g(based)g(on)h(the)g(actual)f(\034lename)g +(from)g(the)h(\034le)g(system.)515 3849 y(Alternativ)n(ely)-7 +b(,)87 b(the)77 b(language)d(can)i(explicitly)h(b)r(e)f(sp)r(eci\034ed) +g(using)g(the)h Fm(-x)515 3948 y(assembler-with-)o(cpp)21 +b Fq(option.)515 4228 y Fn(6.3)112 b(Example)38 b(program)515 +4429 y Fq(The)32 b(follo)n(wing)e(annotated)i(example)f(features)g(a)h +(simple)g(100)e(kHz)i(square)f(w)n(a)n(v)n(e)f(gen-)515 +4528 y(erator)e(using)h(an)h(A)-7 b(T90S1200)27 b(clo)r(c)n(k)n(ed)i +(with)i(a)e(10.7)g(MHz)h(crystal.)43 b(Pin)30 b(PD6)h(will)f(b)r(e)515 +4628 y(used)d(for)g(the)h(square)e(w)n(a)n(v)n(e)g(output.)515 +4837 y Fj(#include)37 b()462 b(;)35 b(Note)h([1])515 +4995 y(work)142 b(=)247 b(16)495 b(;)35 b(Note)h([2])p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 32 48 +TeXDict begin 32 47 bop 515 203 a Fs(6.3)94 b(Example)31 +b(program)1805 b(32)p 515 236 2865 4 v 515 523 a Fj(tmp)177 +b(=)247 b(17)515 681 y(inttmp)72 b(=)247 b(19)515 839 +y(intsav)72 b(=)247 b(0)515 996 y(SQUARE)72 b(=)247 b(PD6)460 +b(;)35 b(Note)h([3])1644 1154 y(;)f(Note)h([4]:)515 1233 +y(tmconst=)h(10700000)h(/)d(200000)214 b(;)35 b(100)h(kHz)g(=>)g +(200000)h(edges/s)515 1312 y(fuzz=)107 b(8)812 b(;)35 +b(#)h(clocks)h(in)e(ISR)i(until)f(TCNT0)h(is)f(set)797 +1469 y(.section)h(.text)797 1627 y(.global)g(main)989 +b(;)36 b(Note)g([5])515 1706 y(main:)797 1785 y(rcall)107 +b(ioinit)515 1864 y(1:)797 1943 y(rjmp)142 b(1b)1059 +b(;)36 b(Note)g([6])797 2100 y(.global)h(TIMER0_OVF_vect)604 +b(;)36 b(Note)g([7])515 2179 y(TIMER0_OVF_vect:)797 2258 +y(ldi)177 b(inttmp,)37 b(256)f(-)g(tmconst)h(+)f(fuzz)797 +2337 y(out)177 b(_SFR_IO_ADDR\(TCNT0\),)41 b(inttmp)178 +b(;)36 b(Note)g([8])797 2495 y(in)212 b(intsav,)37 b +(_SFR_IO_ADDR\(SREG\))217 b(;)36 b(Note)g([9])797 2653 +y(sbic)142 b(_SFR_IO_ADDR\(PORTD\),)41 b(SQUARE)797 2731 +y(rjmp)142 b(1f)797 2810 y(sbi)177 b(_SFR_IO_ADDR\(PORTD\),)41 +b(SQUARE)797 2889 y(rjmp)142 b(2f)515 2968 y(1:)212 b(cbi)177 +b(_SFR_IO_ADDR\(PORTD\),)41 b(SQUARE)515 3047 y(2:)797 +3205 y(out)177 b(_SFR_IO_ADDR\(SREG\),)41 b(intsav)797 +3284 y(reti)515 3441 y(ioinit:)797 3520 y(sbi)177 b +(_SFR_IO_ADDR\(DDRD\),)41 b(SQUARE)797 3678 y(ldi)177 +b(work,)37 b(_BV\(TOIE0\))797 3757 y(out)177 b(_SFR_IO_ADDR\(TIMSK\),) +41 b(work)797 3914 y(ldi)177 b(work,)37 b(_BV\(CS00\))320 +b(;)35 b(tmr0:)72 b(CK/1)797 3993 y(out)177 b(_SFR_IO_ADDR\(TCCR0\),)41 +b(work)797 4151 y(ldi)177 b(work,)37 b(256)f(-)f(tmconst)797 +4230 y(out)177 b(_SFR_IO_ADDR\(TCNT0\),)41 b(work)797 +4388 y(sei)797 4545 y(ret)797 4703 y(.global)c(__vector_default)569 +b(;)36 b(Note)g([10])515 4782 y(__vector_default:)797 +4861 y(reti)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 33 49 +TeXDict begin 33 48 bop 515 203 a Fs(6.3)94 b(Example)31 +b(program)1805 b(33)p 515 236 2865 4 v 797 523 a Fj(.end)506 +706 y Fs(Note)32 b([)o(1])515 1088 y Fq(As)24 b(in)h(C)f(programs,)f +(this)i(includes)g(the)f(cen)n(tral)g(pro)r(cessor-sp)r(eci\034c)e +(\034le)i(con)n(taining)g(the)515 1188 y(IO)e(p)r(ort)h(de\034nitions)g +(for)g(the)g(device.)35 b(Note)23 b(that)h(not)f(all)f(include)i +(\034les)f(can)f(b)r(e)i(included)515 1287 y(in)n(to)j(assem)n(bler)f +(sources.)506 1470 y Fs(Note)32 b([)o(2])515 1853 y Fq(Assignmen)n(t)c +(of)h(registers)f(to)h(sym)n(b)r(olic)f(names)h(used)g(lo)r(cally)-7 +b(.)40 b(Another)29 b(option)g(w)n(ould)515 1952 y(b)r(e)f(to)f(use)h +(a)f(C)g(prepro)r(cessor)e(macro)h(instead:)550 2143 +y Fj(#define)37 b(work)g(16)506 2326 y Fs(Note)32 b([)o(3])515 +2709 y Fq(Our)38 b(bit)h(n)n(um)n(b)r(er)f(for)g(the)h(square)e(w)n(a)n +(v)n(e)g(output.)70 b(Note)38 b(that)h(the)g(righ)n(t-hand)e(side)515 +2808 y(consists)28 b(of)g(a)h(CPP)g(macro)f(whic)n(h)g(will)h(b)r(e)h +(substituted)f(b)n(y)g(its)f(v)-5 b(alue)29 b(\(6)g(in)g(this)g(case\)) +515 2908 y(b)r(efore)e(actually)g(b)r(eing)g(passed)g(to)h(the)g(assem) +n(bler.)506 3107 y Fs(Note)k([)o(4])515 3489 y Fq(The)23 +b(assem)n(bler)e(uses)i(in)n(teger)f(op)r(erations)f(in)j(the)f +(host-de\034ned)g(in)n(teger)f(size)g(\(32)h(bits)g(or)515 +3589 y(longer\))i(when)i(ev)-5 b(aluating)26 b(expressions.)35 +b(This)27 b(is)f(in)h(con)n(trast)e(to)i(the)g(C)g(compiler)f(that)515 +3688 y(uses)21 b(the)g(C)h(t)n(yp)r(e)f Fm(int)g Fq(b)n(y)g(default)g +(in)h(order)e(to)h(calculate)g(constan)n(t)f(in)n(teger)h(expressions.) +515 3835 y(In)27 b(order)f(to)h(get)g(a)g(100)f(kHz)h(output,)h(w)n(e)f +(need)g(to)h(toggle)e(the)h(PD6)h(line)f(200000)e(times)515 +3935 y(p)r(er)35 b(second.)59 b(Since)35 b(w)n(e)g(use)f(timer)i(0)e +(without)i(an)n(y)e(prescaling)g(options)g(in)h(order)f(to)515 +4035 y(get)25 b(the)i(desired)e(frequency)g(and)h(accuracy)-7 +b(,)24 b(w)n(e)i(already)e(run)i(in)n(to)f(serious)g(timing)h(con-)515 +4134 y(siderations:)53 b(while)36 b(accepting)g(and)g(pro)r(cessing)f +(the)h(timer)h(o)n(v)n(er\035o)n(w)d(in)n(terrupt,)k(the)515 +4234 y(timer)e(already)e(con)n(tin)n(ues)h(to)h(coun)n(t.)61 +b(When)36 b(pre-loading)e(the)j Fm(TCCNT0)c Fq(register,)j(w)n(e)515 +4333 y(therefore)28 b(ha)n(v)n(e)h(to)g(accoun)n(t)g(for)g(the)h(n)n +(um)n(b)r(er)f(of)g(clo)r(c)n(k)g(cycles)g(required)f(for)h(in)n +(terrupt)515 4433 y(ac)n(kno)n(wledge)24 b(and)j(for)f(the)h +(instructions)f(to)h(reload)e Fm(TCCNT0)g Fq(\(4)h(clo)r(c)n(k)g +(cycles)h(for)f(in)n(ter-)515 4533 y(rupt)j(ac)n(kno)n(wledge,)d(2)j +(cycles)f(for)g(the)i(jump)f(from)g(the)g(in)n(terrupt)f(v)n(ector,)g +(2)g(cycles)h(for)515 4632 y(the)f(2)f(instructions)g(that)h(reload)e +Fm(TCCNT0)p Fq(\).)35 b(This)27 b(is)h(what)f(the)h(constan)n(t)f +Fm(fuzz)f Fq(is)h(for.)506 4836 y Fs(Note)32 b([)o(5])p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 34 50 +TeXDict begin 34 49 bop 515 203 a Fs(6.3)94 b(Example)31 +b(program)1805 b(34)p 515 236 2865 4 v 515 523 a Fq(External)23 +b(functions)g(need)h(to)f(b)r(e)h(declared)e(to)i(b)r(e)g(.global.)34 +b Fm(main)22 b Fq(is)h(the)h(application)e(en-)515 623 +y(try)h(p)r(oin)n(t)g(that)h(will)f(b)r(e)h(jump)r(ed)h(to)e(from)g +(the)h(ininitalization)f(routine)g(in)g Fm(crts1200.o)p +Fq(.)506 840 y Fs(Note)32 b([)o(6])515 1240 y Fq(The)24 +b(main)g(lo)r(op)g(is)g(just)h(a)f(single)g(jump)h(bac)n(k)e(to)i +(itself.)36 b(Square)23 b(w)n(a)n(v)n(e)g(generation)g(itself)515 +1339 y(is)c(completely)g(handled)h(b)n(y)f(the)h(timer)g(0)f(o)n(v)n +(er\035o)n(w)e(in)n(terrupt)i(service.)33 b(A)20 b Fm(sleep)e +Fq(instruc-)515 1439 y(tion)29 b(\(using)g(idle)g(mo)r(de\))g(could)g +(b)r(e)h(used)e(as)h(w)n(ell,)g(but)h(probably)d(w)n(ould)i(not)g +(conserv)n(e)515 1539 y(m)n(uc)n(h)e(energy)f(an)n(yw)n(a)n(y)g(since)h +(the)h(in)n(terrupt)f(service)g(is)g(executed)h(quite)g(frequen)n(tly) +-7 b(.)506 1756 y Fs(Note)32 b([)o(7])515 2156 y Fq(In)n(terrupt)25 +b(functions)h(can)f(get)h(the)g Fs(usual)j(names)c Fq(\(p.)14 +b(230\))25 b(that)h(are)e(also)h(a)n(v)-5 b(ailable)24 +b(to)515 2255 y(C)e(programs.)32 b(The)22 b(link)n(er)f(will)h(then)g +(put)g(them)h(in)n(to)e(the)h(appropriate)e(in)n(terrupt)h(v)n(ector) +515 2355 y(slots.)35 b(Note)25 b(that)g(they)h(m)n(ust)f(b)r(e)g +(declared)f(.global)g(in)h(order)f(to)h(b)r(e)g(acceptable)f(for)h +(this)515 2455 y(purp)r(ose.)35 b(This)26 b(will)f(only)g(w)n(ork)f(if) +i Fo(<)p Fm(avr/io.h)39 b(\()p Fq(p.)15 b Fm(366\))p +Fo(>)23 b Fq(has)i(b)r(een)h(included.)36 b(Note)515 +2554 y(that)i(the)h(assem)n(bler)e(or)h(link)n(er)f(ha)n(v)n(e)g(no)i +(c)n(hance)e(to)h(c)n(hec)n(k)g(the)h(correct)e(sp)r(elling)h(of)515 +2654 y(an)f(in)n(terrupt)g(function,)k(so)36 b(it)i(should)g(b)r(e)f +(double-c)n(hec)n(k)n(ed.)65 b(\(When)39 b(analyzing)d(the)515 +2753 y(resulting)i(ob)5 b(ject)40 b(\034le)f(using)g +Fm(avr-objdump)c Fq(or)j Fm(avr-nm)p Fq(,)i(a)f(name)g(lik)n(e)g +Fm(__vector_)p Fi(N)515 2853 y Fq(should)27 b(app)r(ear,)g(with)h +Fl(N)41 b Fq(b)r(eing)27 b(a)h(small)f(in)n(teger)f(n)n(um)n(b)r(er.\)) +506 3075 y Fs(Note)32 b([)o(8])515 3475 y Fq(As)26 b(explained)f(in)h +(the)g(section)f(ab)r(out)h Fs(sp)s(ecial)i(function)i(registers)25 +b Fq(\(p.)14 b(276\),)25 b(the)h(ac-)515 3574 y(tual)j(IO)g(p)r(ort)g +(address)e(should)i(b)r(e)h(obtained)f(using)f(the)i(macro)e +Fm(_SFR_IO_ADDR)p Fq(.)c(\(The)515 3674 y(A)-7 b(T90S1200)28 +b(do)r(es)j(not)g(ha)n(v)n(e)f(RAM)h(th)n(us)g(the)g(memory-mapp)r(ed)f +(approac)n(h)f(to)i(access)515 3774 y(the)24 b(IO)f(registers)e(is)j +(not)f(a)n(v)-5 b(ailable.)34 b(It)24 b(w)n(ould)f(b)r(e)h(slo)n(w)n +(er)d(than)j(using)f Fm(in)f Fq(/)h Fm(out)g Fq(instruc-)515 +3873 y(tions)k(an)n(yw)n(a)n(y)-7 b(.\))515 4020 y(Since)23 +b(the)g(op)r(eration)f(to)h(reload)f Fm(TCCNT0)f Fq(is)i +(time-critical,)g(it)g(is)g(ev)n(en)g(p)r(erformed)f(b)r(efore)515 +4120 y(sa)n(ving)30 b Fm(SREG)p Fq(.)g(Ob)n(viously)-7 +b(,)31 b(this)h(requires)f(that)h(the)g(instructions)f(in)n(v)n(olv)n +(ed)f(w)n(ould)h(not)515 4219 y(c)n(hange)26 b(an)n(y)h(of)g(the)h +(\035ag)f(bits)h(in)g Fm(SREG)p Fq(.)506 4436 y Fs(Note)k([)o(9])515 +4836 y Fq(In)n(terrupt)f(routines)f(m)n(ust)i(not)f(clobb)r(er)g(the)g +(global)g(CPU)h(state.)48 b(Th)n(us,)32 b(it)f(is)h(usually)515 +4936 y(necessary)20 b(to)i(sa)n(v)n(e)e(at)i(least)f(the)h(state)g(of)g +(the)g(\035ag)f(bits)i(in)f Fm(SREG)p Fq(.)e(\(Note)i(that)h(this)f +(serv)n(es)p 515 5179 V 515 5255 a Fp(Generated)j(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 35 51 +TeXDict begin 35 50 bop 515 203 a Fs(6.4)94 b(Pseudo-ops)31 +b(and)h(op)s(erators)1470 b(35)p 515 236 2865 4 v 515 +523 a Fq(as)27 b(an)g(example)g(here)g(only)h(since)f(actually)-7 +b(,)27 b(all)g(the)h(follo)n(wing)f(instructions)g(w)n(ould)g(not)515 +623 y(mo)r(dify)h Fm(SREG)e Fq(either,)h(but)h(that's)g(not)g(commonly) +e(the)i(case.\))515 770 y(Also,)k(it)g(m)n(ust)f(b)r(e)h(made)f(sure)g +(that)h(registers)e(used)h(inside)g(the)h(in)n(terrupt)f(routine)g(do) +515 869 y(not)e(con\035ict)g(with)h(those)f(used)g(outside.)42 +b(In)29 b(the)h(case)e(of)h(a)g(RAM-less)g(device)g(lik)n(e)g(the)515 +969 y(A)-7 b(T90S1200,)28 b(this)i(can)g(only)g(b)r(e)g(done)g(b)n(y)g +(agreeing)e(on)i(a)g(set)g(of)g(registers)f(to)h(b)r(e)g(used)515 +1068 y(exclusiv)n(ely)24 b(inside)i(the)g(in)n(terrupt)f(routine;)g +(there)h(w)n(ould)f(not)g(b)r(e)h(an)n(y)f(other)g(c)n(hance)f(to)515 +1168 y("sa)n(v)n(e")h(a)i(register)f(an)n(ywhere.)515 +1315 y(If)39 b(the)g(in)n(terrupt)g(routine)f(is)h(to)g(b)r(e)g(link)n +(ed)g(together)f(with)h(C)g(mo)r(dules,)j(care)c(m)n(ust)515 +1415 y(b)r(e)d(tak)n(en)g(to)g(follo)n(w)f(the)i Fs(register)j(usage)h +(guidelines)33 b Fq(\(p.)14 b(72\))35 b(imp)r(osed)g(b)n(y)g(the)g(C) +515 1514 y(compiler.)61 b(Also,)37 b(an)n(y)f(register)e(mo)r(di\034ed) +i(inside)g(the)g(in)n(terrupt)g(sevice)f(needs)h(to)g(b)r(e)515 +1614 y(sa)n(v)n(ed,)26 b(usually)h(on)g(the)h(stac)n(k.)506 +1831 y Fs(Note)k([)o(10])515 2231 y Fq(As)23 b(explained)g(in)h +Fs(In)m(terrupts)h Fq(\(p.)14 b(227\),)23 b(a)g(global)g("catc)n +(h-all")e(in)n(terrupt)i(handler)g(that)515 2330 y(gets)18 +b(all)h(unassigned)f(in)n(terrupt)h(v)n(ectors)f(can)g(b)r(e)i +(installed)f(using)g(the)g(name)g Fm(__vector_-)515 2430 +y(default)p Fq(.)32 b(This)23 b(m)n(ust)h(b)r(e)f(.global,)g(and)g(ob)n +(viously)-7 b(,)23 b(should)g(end)g(in)h(a)f Fm(reti)e +Fq(instruction.)515 2530 y(\(By)27 b(default,)h(a)f(jump)i(to)e(lo)r +(cation)g(0)g(w)n(ould)g(b)r(e)h(implied)h(instead.\))515 +2809 y Fn(6.4)112 b(Pseudo-ops)39 b(and)f(op)s(erators)515 +3010 y Fq(The)27 b(a)n(v)-5 b(ailable)26 b(pseudo-ops)g(in)i(the)g +(assem)n(bler)e(are)g(describ)r(ed)h(in)h(the)g(GNU)g(assem)n(bler)515 +3109 y(\(gas\))i(man)n(ual.)45 b(The)31 b(man)n(ual)f(can)g(b)r(e)h +(found)g(online)g(as)f(part)g(of)h(the)g(curren)n(t)f(bin)n(utils)515 +3209 y(release)c(under)h Fm(http://sources.r)o(edh)o(at)o(.co)o(m/)o +(bi)o(nut)o(il)o(s/)o(.)515 3356 y Fq(As)34 b(gas)e(comes)h(from)h(a)f +(Unix)i(origin,)f(its)g(pseudo-op)f(and)g(o)n(v)n(erall)f(assem)n(bler) +g(syn)n(tax)515 3456 y(is)27 b(sligh)n(tly)g(di\033eren)n(t)h(than)f +(the)h(one)f(b)r(eing)h(used)f(b)n(y)g(other)g(assem)n(blers.)35 +b(Numeric)28 b(con-)515 3555 y(stan)n(ts)g(follo)n(w)g(the)h(C)f +(notation)g(\(pre\034x)h Fm(0x)f Fq(for)g(hexadecimal)g(constan)n +(ts\),)g(expressions)515 3655 y(use)f(a)g(C-lik)n(e)g(syn)n(tax.)515 +3802 y(Some)g(common)g(pseudo-ops)f(include:)639 4032 +y Fk(\210)41 b Fq(.b)n(yte)28 b(allo)r(cates)e(single)h(b)n(yte)h +(constan)n(ts)639 4261 y Fk(\210)41 b Fq(.ascii)27 b(allo)r(cates)g(a)g +(non-terminated)g(string)g(of)g(c)n(haracters)639 4491 +y Fk(\210)41 b Fq(.asciz)27 b(allo)r(cates)f(a)i Fh(n)p +Fq(0-terminated)e(string)h(of)g(c)n(haracters)e(\(C)j(string\))639 +4721 y Fk(\210)41 b Fq(.data)27 b(switc)n(hes)g(to)h(the)g(.data)f +(section)g(\(initialized)h(RAM)g(v)-5 b(ariables\))639 +4951 y Fk(\210)41 b Fq(.text)28 b(switc)n(hes)f(to)h(the)g(.text)g +(section)f(\(co)r(de)g(and)h(R)n(OM)f(constan)n(ts\))p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 36 52 +TeXDict begin 36 51 bop 515 203 a Fs(7)31 b(Inline)g(Assem)m(bler)g(Co) +s(okb)s(o)s(ok)1533 b(36)p 515 236 2865 4 v 639 523 a +Fk(\210)41 b Fq(.set)28 b(declares)e(a)h(sym)n(b)r(ol)g(as)g(a)g +(constan)n(t)g(expression)f(\(iden)n(tical)i(to)f(.equ\))639 +747 y Fk(\210)41 b Fq(.global)26 b(\(or)h(.globl\))f(declares)g(a)h +(public)g(sym)n(b)r(ol)g(that)g(is)g(visible)g(to)g(the)g(link)n(er)g +(\(e.)722 846 y(g.)37 b(function)28 b(en)n(try)f(p)r(oin)n(t,)h(global) +e(v)-5 b(ariable\))639 1070 y Fk(\210)41 b Fq(.extern)d(declares)f(a)i +(sym)n(b)r(ol)e(to)i(b)r(e)g(externally)e(de\034ned;)44 +b(this)39 b(is)f(e\033ectiv)n(ely)g(a)722 1170 y(commen)n(t)21 +b(only)-7 b(,)22 b(as)e(gas)g(treats)g(all)h(unde\034ned)g(sym)n(b)r +(ols)f(it)h(encoun)n(ters)f(as)g(globally)722 1269 y(unde\034ned)28 +b(an)n(yw)n(a)n(y)515 1493 y(Note)i(that)g(.org)e(is)i(a)n(v)-5 +b(ailable)28 b(in)i(gas)f(as)g(w)n(ell,)h(but)h(is)e(a)h(fairly)f(p)r +(oin)n(tless)g(pseudo-op)g(in)515 1593 y(an)j(assem)n(bler)f(en)n +(vironmen)n(t)g(that)i(uses)f(relo)r(catable)g(ob)5 b(ject)32 +b(\034les,)i(as)d(it)i(is)g(the)g(link)n(er)515 1692 +y(that)28 b(determines)f(the)h(\034nal)f(p)r(osition)h(of)f(some)g(ob)5 +b(ject)27 b(in)h(R)n(OM)f(or)g(RAM.)515 1839 y(Along)38 +b(with)h(the)g(arc)n(hitecture-indep)r(enden)n(t)f(standard)g(op)r +(erators,)h(there)g(are)f(some)515 1939 y(A)-9 b(VR-sp)r(eci\034c)32 +b(op)r(erators)f(a)n(v)-5 b(ailable)31 b(whic)n(h)h(are)f +(unfortunately)h(not)h(y)n(et)f(describ)r(ed)g(in)515 +2038 y(the)c(o\036cial)f(do)r(cumen)n(tation.)36 b(The)28 +b(most)f(notable)g(op)r(erators)f(are:)639 2262 y Fk(\210)41 +b Fm(lo8)27 b Fq(T)-7 b(ak)n(es)26 b(the)i(least)f(signi\034can)n(t)g +(8)g(bits)h(of)f(a)h(16-bit)e(in)n(teger)639 2486 y Fk(\210)41 +b Fm(hi8)27 b Fq(T)-7 b(ak)n(es)26 b(the)i(most)f(signi\034can)n(t)g(8) +g(bits)h(of)g(a)f(16-bit)g(in)n(teger)639 2710 y Fk(\210)41 +b Fm(pm)24 b Fq(T)-7 b(ak)n(es)24 b(a)g(program-memory)d(\(R)n(OM\))k +(address,)f(and)g(con)n(v)n(erts)f(it)i(in)n(to)f(a)h(RAM)722 +2809 y(address.)35 b(This)26 b(implies)g(a)g(division)f(b)n(y)h(2)g(as) +f(the)h(A)-9 b(VR)27 b(handles)e(R)n(OM)h(addresses)722 +2909 y(as)21 b(16-bit)g(w)n(ords)f(\(e.g.)35 b(in)21 +b(an)h Fm(IJMP)d Fq(or)i Fm(ICALL)f Fq(instruction\),)i(and)g(can)f +(also)f(handle)722 3008 y(relo)r(catable)26 b(sym)n(b)r(ols)h(on)h(the) +f(righ)n(t-hand)g(side.)515 3232 y(Example:)515 3435 +y Fj(ldi)36 b(r24,)g(lo8\(pm\(somefunc\)\))515 3514 y(ldi)g(r25,)g +(hi8\(pm\(somefunc\)\))515 3593 y(call)g(something)515 +3817 y Fq(This)25 b(passes)g(the)h(address)e(of)i(function)g +Fm(somefunc)c Fq(as)j(the)h(\034rst)g(parameter)e(to)i(function)515 +3916 y Fm(something)p Fq(.)515 4237 y Fr(7)131 b(Inline)43 +b(Assem)l(bler)g(Co)t(okb)t(o)t(ok)515 4466 y Fq(A)-9 +b(VR-GCC)515 4613 y(Inline)28 b(Assem)n(bler)e(Co)r(okb)r(o)r(ok)515 +4760 y(Ab)r(out)i(this)g(Do)r(cumen)n(t)515 4907 y(The)21 +b(GNU)g(C)g(compiler)f(for)g(A)n(tmel)i(A)-9 b(VR)21 +b(RISC)g(pro)r(cessors)d(o\033ers,)k(to)e(em)n(b)r(ed)h(assem)n(bly)515 +5006 y(language)32 b(co)r(de)i(in)n(to)g(C)g(programs.)54 +b(This)34 b(co)r(ol)f(feature)h(ma)n(y)f(b)r(e)h(used)g(for)g(man)n +(ually)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 37 53 +TeXDict begin 37 52 bop 515 203 a Fs(7.1)94 b(GCC)32 +b(asm)f(Statemen)m(t)1684 b(37)p 515 236 2865 4 v 515 +523 a Fq(optimizing)22 b(time)h(critical)e(parts)h(of)g(the)g(soft)n(w) +n(are)f(or)g(to)h(use)g(sp)r(eci\034c)h(pro)r(cessor)d(instruc-)515 +623 y(tion,)27 b(whic)n(h)h(are)e(not)i(a)n(v)-5 b(ailable)26 +b(in)i(the)g(C)g(language.)515 770 y(Because)d(of)h(a)g(lac)n(k)g(of)g +(do)r(cumen)n(tation,)h(esp)r(ecially)e(for)h(the)h(A)-9 +b(VR)27 b(v)n(ersion)e(of)h(the)h(com-)515 869 y(piler,)21 +b(it)g(ma)n(y)e(tak)n(e)h(some)g(time)g(to)h(\034gure)e(out)h(the)h +(implemen)n(tation)f(details)g(b)n(y)g(studying)515 969 +y(the)27 b(compiler)f(and)g(assem)n(bler)f(source)h(co)r(de.)36 +b(There)26 b(are)g(also)f(a)h(few)h(sample)f(programs)515 +1068 y(a)n(v)-5 b(ailable)20 b(in)j(the)f(net.)35 b(Hop)r(efully)23 +b(this)f(do)r(cumen)n(t)g(will)h(help)f(to)g(increase)e(their)i(n)n(um) +n(b)r(er.)515 1215 y(It's)29 b(assumed,)h(that)g(y)n(ou)f(are)f +(familiar)h(with)h(writing)f(A)-9 b(VR)30 b(assem)n(bler)e(programs,)g +(b)r(e-)515 1315 y(cause)22 b(this)h(is)f(not)h(an)g(A)-9 +b(VR)23 b(assem)n(bler)e(programming)f(tutorial.)35 b(It's)23 +b(not)g(a)f(C)h(language)515 1415 y(tutorial)k(either.)515 +1561 y(Note)37 b(that)g(this)g(do)r(cumen)n(t)g(do)r(es)f(not)h(co)n(v) +n(er)e(\034le)i(written)g(completely)g(in)g(assem)n(bler)515 +1661 y(language,)26 b(refer)g(to)i Fs(a)m(vr-lib)s(c)k(and)g(assem)m +(bler)f(programs)d Fq(\(p.)14 b(30\))27 b(for)g(this.)515 +1808 y(Cop)n(yrigh)n(t)f(\(C\))i(2001-2002)23 b(b)n(y)k(egnite)h(Soft)n +(w)n(are)e(Gm)n(bH)515 1955 y(P)n(ermission)36 b(is)h(gran)n(ted)f(to)h +(cop)n(y)g(and)g(distribute)g(v)n(erbatim)g(copies)f(of)h(this)h(man)n +(ual)515 2054 y(pro)n(vided)27 b(that)i(the)g(cop)n(yrigh)n(t)e(notice) +h(and)h(this)g(p)r(ermission)f(notice)g(are)g(preserv)n(ed)e(on)515 +2154 y(all)d(copies.)34 b(P)n(ermission)22 b(is)h(gran)n(ted)f(to)h +(cop)n(y)f(and)h(distribute)g(mo)r(di\034ed)h(v)n(ersions)d(of)i(this) +515 2254 y(man)n(ual)i(pro)n(vided)f(that)i(the)g(en)n(tire)f +(resulting)g(deriv)n(ed)g(w)n(ork)g(is)g(distributed)h(under)g(the)515 +2353 y(terms)h(of)h(a)f(p)r(ermission)g(notice)g(iden)n(tical)g(to)h +(this)g(one.)515 2500 y(This)c(do)r(cumen)n(t)h(describ)r(es)f(v)n +(ersion)f(3.3)h(of)h(the)g(compiler.)35 b(There)24 b(ma)n(y)g(b)r(e)h +(some)f(parts,)515 2600 y(whic)n(h)37 b(hadn't)h(b)r(een)g(completely)f +(understo)r(o)r(d)g(b)n(y)h(the)g(author)e(himself)i(and)g(not)f(all) +515 2699 y(samples)24 b(had)h(b)r(een)h(tested)g(so)e(far.)36 +b(Because)24 b(the)i(author)e(is)i(German)e(and)h(not)h(familiar)515 +2799 y(with)35 b(the)h(English)f(language,)h(there)f(are)f +(de\034nitely)i(some)e(t)n(yp)r(os)h(and)g(syn)n(tax)f(errors)515 +2899 y(in)c(the)h(text.)44 b(As)30 b(a)g(programmer)e(the)i(author)f +(kno)n(ws,)h(that)g(a)g(wrong)e(do)r(cumen)n(tation)515 +2998 y(sometimes)36 b(migh)n(t)g(b)r(e)h(w)n(orse)d(than)j(none.)63 +b(An)n(yw)n(a)n(y)-7 b(,)37 b(he)g(decided)f(to)g(o\033er)g(his)g +(little)515 3098 y(kno)n(wledge)d(to)h(the)h(public,)i(in)e(the)g(hop)r +(e)g(to)f(get)h(enough)f(resp)r(onse)f(to)i(impro)n(v)n(e)e(this)515 +3198 y(do)r(cumen)n(t.)62 b(F)-7 b(eel)37 b(free)f(to)g(con)n(tact)f +(the)i(author)e(via)g(e-mail.)62 b(F)-7 b(or)36 b(the)h(latest)f +(release)515 3297 y(c)n(hec)n(k)26 b Fm(http://www.ethern)o(ut)o(.d)o +(e/.)515 3444 y Fq(Herne,)h(17th)g(of)h(Ma)n(y)e(2002)g(Harald)h(Kipp)g +(harald.kipp-at-egnite.de)506 3656 y Fs(Note:)676 3805 +y Fq(As)55 b(of)h(26th)e(of)i(July)f(2002,)60 b(this)c(do)r(cumen)n(t)f +(has)g(b)r(een)g(merged)g(in)n(to)g(the)676 3905 y(do)r(cumen)n(tation) +i(for)f(a)n(vr-lib)r(c.)124 b(The)57 b(latest)g(v)n(ersion)e(is)i(no)n +(w)g(a)n(v)-5 b(ailable)55 b(at)676 4005 y Fm(http://savannah.)o(no)o +(ngn)o(u.)o(org)o(/p)o(ro)o(jec)o(ts)o(/a)o(vr-)o(li)o(bc)o(/.)515 +4284 y Fn(7.1)112 b(GCC)37 b(asm)i(Statemen)m(t)515 4485 +y Fq(Let's)27 b(start)g(with)h(a)f(simple)h(example)f(of)h(reading)e(a) +h(v)-5 b(alue)28 b(from)f(p)r(ort)g(D:)515 4694 y Fj(asm\("in)37 +b(\0450,)f(\0451")g(:)g("=r")g(\(value\))h(:)f("I")g +(\(_SFR_IO_ADDR\(PORTD\)\))41 b(\);)515 4924 y Fq(Eac)n(h)27 +b Fm(asm)f Fq(statemen)n(t)i(is)f(devided)h(b)n(y)f(colons)g(in)n(to)g +(\(up)h(to\))g(four)f(parts:)p 515 5179 V 515 5255 a +Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i +(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 38 54 +TeXDict begin 38 53 bop 515 203 a Fs(7.1)94 b(GCC)32 +b(asm)f(Statemen)m(t)1684 b(38)p 515 236 2865 4 v 616 +523 a Fq(1.)41 b(The)28 b(assem)n(bler)e(instructions,)h(de\034ned)h +(as)f(a)g(single)g(string)g(constan)n(t:)758 717 y Fj("in)36 +b(\0450,)g(\0451")616 932 y Fq(2.)41 b(A)31 b(list)f(of)h(output)f(op)r +(erands,)g(separated)f(b)n(y)h(commas.)44 b(Our)30 b(example)g(uses)g +(just)722 1032 y(one:)758 1226 y Fj("=r")36 b(\(value\))616 +1441 y Fq(3.)41 b(A)32 b(comma)f(separated)f(list)i(of)f(input)h(op)r +(erands.)48 b(Again)31 b(our)f(example)h(uses)g(one)722 +1541 y(op)r(erand)c(only:)758 1735 y Fj("I")36 b +(\(_SFR_IO_ADDR\(PORTD\)\))616 1950 y Fq(4.)41 b(Clobb)r(ered)27 +b(registers,)f(left)i(empt)n(y)g(in)g(our)f(example.)515 +2179 y(Y)-7 b(ou)26 b(can)f(write)g(assem)n(bler)g(instructions)g(in)h +(m)n(uc)n(h)f(the)h(same)g(w)n(a)n(y)e(as)h(y)n(ou)g(w)n(ould)g(write) +515 2279 y(assem)n(bler)32 b(programs.)54 b(Ho)n(w)n(ev)n(er,)34 +b(registers)f(and)h(constan)n(ts)f(are)g(used)h(in)g(a)g(di\033eren)n +(t)515 2379 y(w)n(a)n(y)f(if)h(they)h(refer)e(to)h(expressions)f(of)h +(y)n(our)f(C)h(program.)54 b(The)35 b(connection)e(b)r(et)n(w)n(een)515 +2478 y(registers)f(and)i(C)g(op)r(erands)f(is)g(sp)r(eci\034ed)i(in)f +(the)g(second)g(and)f(third)i(part)e(of)h(the)g Fm(asm)515 +2578 y Fq(instruction,)k(the)e(list)g(of)h(input)f(and)g(output)h(op)r +(erands,)g(resp)r(ectiv)n(ely)-7 b(.)61 b(The)37 b(general)515 +2677 y(form)27 b(is)515 2886 y Fj(asm\(code)37 b(:)f(output)h(operand)g +(list)f(:)g(input)g(operand)i(list)e([:)g(clobber)h(list]\);)515 +3115 y Fq(In)f(the)g(co)r(de)g(section,)i(op)r(erands)c(are)h +(referenced)h(b)n(y)f(a)h(p)r(ercen)n(t)f(sign)h(follo)n(w)n(ed)f(b)n +(y)g(a)515 3215 y(single)24 b(digit.)36 b Fm(0)24 b Fq(refers)g(to)g +(the)h(\034rst)g Fm(1)f Fq(to)h(the)g(second)f(op)r(erand)f(and)i(so)f +(forth.)36 b(F)-7 b(rom)24 b(the)515 3314 y(ab)r(o)n(v)n(e)i(example:) +515 3461 y Fm(0)h Fq(refers)g(to)g Fm("=r")42 b(\(value\))25 +b Fq(and)515 3608 y Fm(1)i Fq(refers)g(to)g Fm("I")42 +b(\(_SFR_IO_ADDR\(POR)o(TD)o(\)\))o Fq(.)515 3755 y(This)31 +b(ma)n(y)f(still)h(lo)r(ok)f(a)h(little)g(o)r(dd)g(no)n(w,)g(but)h(the) +f(syn)n(tax)f(of)h(an)f(op)r(erand)g(list)i(will)f(b)r(e)515 +3855 y(explained)g(so)r(on.)47 b(Let)31 b(us)g(\034rst)g(examine)g(the) +g(part)g(of)g(a)g(compiler)g(listing)g(whic)n(h)g(ma)n(y)515 +3954 y(ha)n(v)n(e)26 b(b)r(een)i(generated)e(from)i(our)e(example:)797 +4163 y Fj(lds)36 b(r24,value)515 4242 y(/*)g(#APP)g(*/)797 +4320 y(in)g(r24,)g(12)515 4399 y(/*)g(#NOAPP)g(*/)797 +4478 y(sts)g(value,r24)515 4707 y Fq(The)31 b(commen)n(ts)f(ha)n(v)n(e) +f(b)r(een)i(added)g(b)n(y)f(the)h(compiler)f(to)h(inform)g(the)g(assem) +n(bler)e(that)515 4807 y(the)23 b(included)g(co)r(de)g(w)n(as)f(not)g +(generated)g(b)n(y)h(the)g(compilation)f(of)h(C)f(statemen)n(ts,)i(but) +f(b)n(y)515 4907 y(inline)33 b(assem)n(bler)d(statemen)n(ts.)52 +b(The)32 b(compiler)g(selected)g(register)f Fm(r24)h +Fq(for)g(storage)e(of)515 5006 y(the)25 b(v)-5 b(alue)24 +b(read)f(from)i Fm(PORTD)p Fq(.)d(The)j(compiler)e(could)h(ha)n(v)n(e)g +(selected)g(an)n(y)g(other)g(register,)p 515 5179 V 515 +5255 a Fp(Generated)h(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 39 55 +TeXDict begin 39 54 bop 515 203 a Fs(7.2)94 b(Assem)m(bler)31 +b(Co)s(de)1872 b(39)p 515 236 2865 4 v 515 523 a Fq(though.)47 +b(It)31 b(ma)n(y)f(not)h(explicitely)g(load)g(or)f(store)g(the)h(v)-5 +b(alue)31 b(and)g(it)g(ma)n(y)g(ev)n(en)f(decide)515 +623 y(not)j(to)h(include)g(y)n(our)f(assem)n(bler)f(co)r(de)h(at)h +(all.)55 b(All)34 b(these)g(decisions)f(are)g(part)g(of)h(the)515 +722 y(compiler's)i(optimization)h(strategy)-7 b(.)65 +b(F)-7 b(or)36 b(example,)k(if)e(y)n(ou)e(nev)n(er)g(use)h(the)h(v)-5 +b(ariable)515 822 y(v)g(alue)37 b(in)h(the)f(remaining)g(part)g(of)g +(the)h(C)f(program,)h(the)g(compiler)f(will)g(most)h(lik)n(ely)515 +922 y(remo)n(v)n(e)27 b(y)n(our)g(co)r(de)i(unless)f(y)n(ou)g(switc)n +(hed)h(o\033)g(optimization.)40 b(T)-7 b(o)28 b(a)n(v)n(oid)f(this,)j +(y)n(ou)d(can)515 1021 y(add)g(the)h(v)n(olatile)f(attribute)g(to)h +(the)g Fm(asm)e Fq(statemen)n(t:)515 1230 y Fj(asm)36 +b(volatile\("in)i(\0450,)f(\0451")f(:)f("=r")i(\(value\))g(:)e("I")h +(\(_SFR_IO_ADDR\(PORTD\)\)\);)515 1460 y Fq(Alternativ)n(ely)-7 +b(,)23 b(op)r(erands)e(can)h(b)r(e)h(giv)n(en)f(names.)35 +b(The)22 b(name)h(is)f(prep)r(ended)h(in)g(brac)n(k)n(ets)515 +1560 y(to)j(the)h(constrain)n(ts)d(in)j(the)g(op)r(erand)e(list,)i(and) +f(references)f(to)h(the)h(named)f(op)r(erand)f(use)515 +1659 y(the)37 b(brac)n(k)n(eted)f(name)h(instead)g(of)h(a)f(n)n(um)n(b) +r(er)g(after)f(the)i(\045)g(sign.)65 b(Th)n(us,)40 b(the)d(ab)r(o)n(v)n +(e)515 1759 y(example)27 b(could)g(also)g(b)r(e)h(written)f(as)515 +1968 y Fj(asm\("in)37 b(\045[retval],)h(\045[port]")f(:)656 +2047 y([retval])g("=r")g(\(value\))g(:)656 2126 y([port])g("I")f +(\(_SFR_IO_ADDR\(PORTD\)\))41 b(\);)515 2356 y Fq(The)28 +b(last)g(part)g(of)g(the)h Fm(asm)e Fq(instruction,)i(the)f(clobb)r(er) +g(list,)h(is)f(mainly)g(used)h(to)f(tell)h(the)515 2455 +y(compiler)k(ab)r(out)i(mo)r(di\034cations)e(done)h(b)n(y)h(the)f +(assem)n(bler)f(co)r(de.)57 b(This)34 b(part)g(ma)n(y)g(b)r(e)515 +2555 y(omitted,)28 b(all)g(other)g(parts)f(are)g(required,)h(but)h(ma)n +(y)e(b)r(e)i(left)f(empt)n(y)-7 b(.)39 b(If)29 b(y)n(our)e(assem)n +(bler)515 2655 y(routine)37 b(w)n(on't)h(use)f(an)n(y)g(input)i(or)e +(output)h(op)r(erand,)h(t)n(w)n(o)e(colons)g(m)n(ust)h(still)g(follo)n +(w)515 2754 y(the)e(assem)n(bler)f(co)r(de)h(string.)61 +b(A)37 b(go)r(o)r(d)e(example)h(is)g(a)f(simple)i(statemen)n(t)f(to)g +(disable)515 2854 y(in)n(terrupts:)515 3063 y Fj(asm)g +(volatile\("cli"::\);)515 3343 y Fn(7.2)112 b(Assem)m(bler)38 +b(Co)s(de)515 3543 y Fq(Y)-7 b(ou)30 b(can)g(use)g(the)g(same)g(assem)n +(bler)e(instruction)i(mnemonics)g(as)g(y)n(ou'd)f(use)h(with)h(an)n(y) +515 3643 y(other)h(A)-9 b(VR)33 b(assem)n(bler.)51 b(And)33 +b(y)n(ou)f(can)g(write)h(as)f(man)n(y)g(assem)n(bler)f(statemen)n(ts)h +(in)n(to)515 3742 y(one)27 b(co)r(de)g(string)g(as)g(y)n(ou)g(lik)n(e)g +(and)g(y)n(our)g(\035ash)g(memory)g(is)g(able)g(to)h(hold.)506 +3954 y Fs(Note:)676 4104 y Fq(The)g(a)n(v)-5 b(ailable)26 +b(assem)n(bler)g(directiv)n(es)h(v)-5 b(ary)26 b(from)h(one)h(assem)n +(bler)e(to)h(another.)515 4334 y(T)-7 b(o)27 b(mak)n(e)g(it)h(more)e +(readable,)h(y)n(ou)f(should)i(put)g(eac)n(h)f(statemen)n(t)g(on)g(a)h +(sep)r(erate)e(line:)515 4543 y Fj(asm)36 b(volatile\("nop\\n\\t")973 +4622 y("nop\\n\\t")973 4701 y("nop\\n\\t")973 4780 y("nop\\n\\t")973 +4858 y(::\);)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 40 56 +TeXDict begin 40 55 bop 515 203 a Fs(7.3)94 b(Input)32 +b(and)h(Output)f(Op)s(erands)1365 b(40)p 515 236 2865 +4 v 515 523 a Fq(The)34 b(linefeed)i(and)e(tab)h(c)n(haracters)d(will)j +(mak)n(e)f(the)h(assem)n(bler)e(listing)i(generated)e(b)n(y)515 +623 y(the)27 b(compiler)f(more)g(readable.)35 b(It)27 +b(ma)n(y)f(lo)r(ok)g(a)g(bit)h(o)r(dd)g(for)f(the)h(\034rst)f(time,)i +(but)f(that's)515 722 y(the)h(w)n(a)n(y)e(the)i(compiler)f(creates)f +(it's)i(o)n(wn)f(assem)n(bler)f(co)r(de.)515 869 y(Y)-7 +b(ou)27 b(ma)n(y)g(also)g(mak)n(e)f(use)i(of)f(some)g(sp)r(ecial)g +(registers.)p 515 944 V 515 1044 4 100 v 568 1014 a Fs(Sym)m(b)s(ol)p +1945 1044 V 1119 w(Register)p 3376 1044 V 515 1047 2865 +4 v 515 1147 4 100 v 568 1117 a Fm(__SREG__)p 1945 1147 +V 1078 w Fq(Status)h(register)e(at)i(address)e(0x3F)p +3376 1147 V 515 1150 2865 4 v 515 1349 4 200 v 568 1220 +a Fm(__SP_H__)p 1945 1349 V 1078 w Fq(Stac)n(k)h(p)r(oin)n(ter)g(high)h +(b)n(yte)f(at)h(address)1998 1319 y(0x3E)p 3376 1349 +V 515 1353 2865 4 v 515 1552 4 200 v 568 1422 a Fm(__SP_L__)p +1945 1552 V 1078 w Fq(Stac)n(k)f(p)r(oin)n(ter)g(lo)n(w)g(b)n(yte)h(at) +f(address)1998 1522 y(0x3D)p 3376 1552 V 515 1555 2865 +4 v 515 1754 4 200 v 568 1625 a Fm(__tmp_reg__)p 1945 +1754 V 946 w Fq(Register)g(r0,)g(used)g(for)g(temp)r(orary)1998 +1725 y(storage)p 3376 1754 V 515 1758 2865 4 v 515 1857 +4 100 v 568 1828 a Fm(__zero_reg__)p 1945 1857 V 902 +w Fq(Register)g(r1,)g(alw)n(a)n(ys)e(zero)p 3376 1857 +V 515 1861 2865 4 v 515 1973 a(Register)d Fm(r0)g Fq(ma)n(y)g(b)r(e)i +(freely)e(used)h(b)n(y)g(y)n(our)f(assem)n(bler)f(co)r(de)i(and)g(need) +g(not)g(b)r(e)h(restored)515 2073 y(at)e(the)g(end)g(of)g(y)n(our)f(co) +r(de.)35 b(It's)22 b(a)g(go)r(o)r(d)f(idea)h(to)g(use)g +Fm(__tmp_reg__)17 b Fq(and)22 b Fm(__zero_reg_-)515 2173 +y(_)30 b Fq(instead)g(of)h Fm(r0)e Fq(or)h Fm(r1)p Fq(,)g(just)h(in)g +(case)f(a)g(new)g(compiler)g(v)n(ersion)f(c)n(hanges)g(the)i(register) +515 2272 y(usage)26 b(de\034nitions.)515 2552 y Fn(7.3)112 +b(Input)37 b(and)i(Output)e(Op)s(erands)515 2752 y Fq(Eac)n(h)i(input)h +(and)f(output)g(op)r(erand)g(is)g(describ)r(ed)g(b)n(y)g(a)g(constrain) +n(t)f(string)g(follo)n(w)n(ed)515 2852 y(b)n(y)30 b(a)g(C)h(expression) +e(in)i(paran)n(theses.)45 b Fm(AVR-GCC)27 b Fq(3.3)j(kno)n(ws)g(the)h +(follo)n(wing)e(constrain)n(t)515 2952 y(c)n(haracters:)506 +3148 y Fs(Note:)676 3297 y Fq(The)24 b(most)f(up-to-date)g(and)h +(detailed)f(information)g(on)h(con)n(train)n(ts)e(for)h(the)h(a)n(vr)e +(can)676 3397 y(b)r(e)28 b(found)g(in)g(the)g(gcc)f(man)n(ual.)676 +3496 y(The)k Fm(x)g Fq(register)e(is)i Fm(r27:r26)p Fq(,)e(the)i +Fm(y)g Fq(register)e(is)i Fm(r29:r28)p Fq(,)e(and)i(the)g +Fm(z)g Fq(register)e(is)676 3596 y Fm(r31:r30)p 515 5179 +V 515 5255 a Fp(Generated)c(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 41 57 +TeXDict begin 41 56 bop 515 203 a Fs(7.3)94 b(Input)32 +b(and)h(Output)f(Op)s(erands)1365 b(41)p 515 236 2865 +4 v 515 443 V 515 543 4 100 v 568 513 a(Constrain)m(t)p +1468 543 V 510 w(Used)31 b(for)p 2422 543 V 598 w(Range)p +3376 543 V 515 546 2865 4 v 515 646 4 100 v 568 616 a +Fq(a)p 1468 646 V 912 w(Simple)d(upp)r(er)f(registers)p +2422 646 V 141 w(r16)f(to)i(r23)p 3376 646 V 515 649 +2865 4 v 515 848 4 200 v 568 719 a(b)p 1468 848 V 908 +w(Base)e(p)r(oin)n(ter)h(registers)1522 819 y(pairs)p +2422 848 V 2475 719 a(y)-7 b(,)28 b(z)p 3376 848 V 515 +852 2865 4 v 515 951 4 100 v 568 922 a(d)p 1468 951 V +908 w(Upp)r(er)f(register)p 2422 951 V 430 w(r16)f(to)i(r31)p +3376 951 V 515 955 2865 4 v 515 1054 4 100 v 568 1024 +a(e)p 1468 1054 V 917 w(P)n(oin)n(ter)e(register)g(pairs)p +2422 1054 V 189 w(x,)i(y)-7 b(,)27 b(z)p 3376 1054 V +515 1058 2865 4 v 515 1157 4 100 v 568 1127 a(q)p 1468 +1157 V 910 w(Stac)n(k)f(p)r(oin)n(ter)i(register)p 2422 +1157 V 171 w(SPH:SPL)p 3376 1157 V 515 1161 2865 4 v +515 1260 4 100 v 568 1230 a(r)p 1468 1260 V 921 w(An)n(y)f(register)p +2422 1260 V 506 w(r0)g(to)g(r31)p 3376 1260 V 515 1264 +2865 4 v 515 1363 4 100 v 568 1333 a(t)p 1468 1363 V +922 w(T)-7 b(emp)r(orary)26 b(register)p 2422 1363 V +256 w(r0)p 3376 1363 V 515 1367 2865 4 v 515 1566 4 200 +v 568 1436 a(w)p 1468 1566 V 894 w(Sp)r(ecial)h(upp)r(er)h(register) +1522 1536 y(pairs)p 2422 1566 V 2475 1436 a(r24,)e(r26,)h(r28,)f(r30)p +3376 1566 V 515 1569 2865 4 v 515 1669 4 100 v 568 1639 +a(x)p 1468 1669 V 910 w(P)n(oin)n(ter)g(register)g(pair)h(X)p +2422 1669 V 133 w(x)h(\(r27:r26\))p 3376 1669 V 515 1672 +2865 4 v 515 1772 4 100 v 568 1742 a(y)p 1468 1772 V +910 w(P)n(oin)n(ter)e(register)g(pair)h(Y)p 2422 1772 +V 133 w(y)h(\(r29:r28\))p 3376 1772 V 515 1775 2865 4 +v 515 1875 4 100 v 568 1845 a(z)p 1468 1875 V 917 w(P)n(oin)n(ter)e +(register)g(pair)h(Z)p 2422 1875 V 144 w(z)h(\(r31:r30\))p +3376 1875 V 515 1878 2865 4 v 515 1978 4 100 v 568 1948 +a(G)p 1468 1978 V 889 w(Floating)c(p)r(oin)n(t)i(constan)n(t)p +2422 1978 V 102 w(0.0)p 3376 1978 V 515 1981 2865 4 v +515 2180 4 200 v 568 2051 a(I)p 1468 2180 V 924 w(6-bit)h(p)r(ositiv)n +(e)g(in)n(teger)1522 2150 y(constan)n(t)p 2422 2180 V +2475 2051 a(0)g(to)h(63)p 3376 2180 V 515 2183 2865 4 +v 515 2383 4 200 v 568 2253 a(J)p 1468 2383 V 911 w(6-bit)f(negativ)n +(e)f(in)n(teger)1522 2353 y(constan)n(t)p 2422 2383 V +2475 2253 a(-63)g(to)i(0)p 3376 2383 V 515 2386 2865 +4 v 515 2486 4 100 v 568 2456 a(K)p 1468 2486 V 889 w(In)n(teger)e +(constan)n(t)p 2422 2486 V 364 w(2)p 3376 2486 V 515 +2489 2865 4 v 515 2589 4 100 v 568 2559 a(L)p 1468 2589 +V 902 w(In)n(teger)g(constan)n(t)p 2422 2589 V 364 w(0)p +3376 2589 V 515 2592 2865 4 v 515 2692 4 100 v 568 2662 +a(l)p 1468 2692 V 931 w(Lo)n(w)n(er)f(registers)p 2422 +2692 V 405 w(r0)i(to)g(r15)p 3376 2692 V 515 2695 2865 +4 v 515 2795 4 100 v 568 2765 a(M)p 1468 2795 V 878 w(8-bit)g(in)n +(teger)f(constan)n(t)p 2422 2795 V 173 w(0)h(to)h(255)p +3376 2795 V 515 2798 2865 4 v 515 2897 4 100 v 568 2868 +a(N)p 1468 2897 V 892 w(In)n(teger)e(constan)n(t)p 2422 +2897 V 364 w(-1)p 3376 2897 V 515 2901 2865 4 v 515 3000 +4 100 v 568 2971 a(O)p 1468 3000 V 889 w(In)n(teger)g(constan)n(t)p +2422 3000 V 364 w(8,)h(16,)g(24)p 3376 3000 V 515 3004 +2865 4 v 515 3103 4 100 v 568 3073 a(P)p 1468 3103 V +898 w(In)n(teger)f(constan)n(t)p 2422 3103 V 364 w(1)p +3376 3103 V 515 3107 2865 4 v 515 3505 4 399 v 568 3176 +a(Q)p 1468 3505 V 889 w(\(GCC)h Fo(>)p Fq(=)g(4.2.x\))g(A)1522 +3276 y(memory)f(address)g(based)1522 3376 y(on)h(Y)h(or)e(Z)i(p)r(oin)n +(ter)f(with)1522 3475 y(displacemen)n(t.)p 2422 3505 +V 3376 3505 V 515 3509 2865 4 v 515 3708 4 200 v 568 +3578 a(R)p 1468 3708 V 893 w(\(GCC)g Fo(>)p Fq(=)g(4.3.x\))1522 +3678 y(In)n(teger)f(constan)n(t.)p 2422 3708 V 2475 3578 +a(-6)h(to)g(5)p 3376 3708 V 515 3711 2865 4 v 515 3824 +a(The)37 b(selection)g(of)g(the)g(prop)r(er)g(con)n(train)n(t)f(dep)r +(ends)h(on)g(the)h(range)d(of)j(the)f(constan)n(ts)515 +3923 y(or)d(registers,)h(whic)n(h)g(m)n(ust)h(b)r(e)f(acceptable)g(to)g +(the)g(A)-9 b(VR)36 b(instruction)f(they)g(are)f(used)515 +4023 y(with.)43 b(The)29 b(C)h(compiler)e(do)r(esn't)i(c)n(hec)n(k)f +(an)n(y)f(line)i(of)f(y)n(our)f(assem)n(bler)g(co)r(de.)43 +b(But)29 b(it)h(is)515 4123 y(able)d(to)g(c)n(hec)n(k)f(the)i +(constrain)n(t)e(against)g(y)n(our)g(C)i(expression.)35 +b(Ho)n(w)n(ev)n(er,)25 b(if)j(y)n(ou)f(sp)r(ecify)515 +4222 y(the)32 b(wrong)f(constrain)n(ts,)g(then)h(the)h(compiler)e(ma)n +(y)g(silen)n(tly)h(pass)f(wrong)f(co)r(de)i(to)g(the)515 +4322 y(assem)n(bler.)43 b(And,)31 b(of)g(course,)e(the)i(assem)n(bler)d +(will)j(fail)f(with)h(some)e(cryptic)h(output)h(or)515 +4422 y(in)n(ternal)22 b(errors.)33 b(F)-7 b(or)23 b(example,)g(if)h(y)n +(ou)e(sp)r(ecify)i(the)f(constrain)n(t)f Fm("r")g Fq(and)h(y)n(ou)f +(are)g(using)515 4521 y(this)f(register)e(with)i(an)f +Fm("ori")f Fq(instruction)h(in)h(y)n(our)e(assem)n(bler)g(co)r(de,)j +(then)f(the)g(compiler)515 4621 y(ma)n(y)33 b(select)g(an)n(y)g +(register.)53 b(This)34 b(will)f(fail,)j(if)e(the)g(compiler)e(c)n(ho)r +(oses)h Fm(r2)f Fq(to)i Fm(r15)p Fq(.)53 b(\(It)515 4720 +y(will)27 b(nev)n(er)f(c)n(ho)r(ose)f Fm(r0)h Fq(or)g +Fm(r1)p Fq(,)h(b)r(ecause)f(these)h(are)f(uses)g(for)h(sp)r(ecial)f +(purp)r(oses.\))36 b(That's)515 4820 y(wh)n(y)31 b(the)i(correct)d +(constrain)n(t)h(in)h(that)g(case)f(is)h Fm("d")p Fq(.)49 +b(On)31 b(the)h(other)g(hand,)h(if)f(y)n(ou)f(use)515 +4920 y(the)i(constrain)n(t)f Fm("M")p Fq(,)i(the)f(compiler)f(will)i +(mak)n(e)e(sure)h(that)g(y)n(ou)f(don't)i(pass)e(an)n(ything)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 42 58 +TeXDict begin 42 57 bop 515 203 a Fs(7.3)94 b(Input)32 +b(and)h(Output)f(Op)s(erands)1365 b(42)p 515 236 2865 +4 v 515 523 a Fq(else)29 b(but)i(an)f(8-bit)g(v)-5 b(alue.)44 +b(Later)29 b(on)h(w)n(e)g(will)g(see)g(ho)n(w)f(to)h(pass)f(m)n(ultib)n +(yte)i(expression)515 623 y(results)c(to)g(the)h(assem)n(bler)e(co)r +(de.)515 770 y(The)59 b(follo)n(wing)f(table)g(sho)n(ws)g(all)h(A)-9 +b(VR)59 b(assem)n(bler)f(mnemonics)g(whic)n(h)h(require)515 +869 y(op)r(erands,)31 b(and)g(the)h(related)f(con)n(train)n(ts.)47 +b(Because)30 b(of)h(the)h(improp)r(er)f(constrain)n(t)f(def-)515 +969 y(initions)38 b(in)h(v)n(ersion)e(3.3,)j(they)f(aren't)f(strict)g +(enough.)69 b(There)38 b(is,)k(for)c(example,)i(no)515 +1068 y(constrain)n(t,)28 b(whic)n(h)h(restricts)f(in)n(teger)g(constan) +n(ts)g(to)h(the)h(range)e(0)g(to)h(7)g(for)g(bit)g(set)g(and)515 +1168 y(bit)f(clear)e(op)r(erations.)p 515 1243 V 515 +1442 4 200 v 568 1313 a Fs(Mnemonic)p 1087 1442 V 134 +w(Con-)1140 1412 y(strain)m(ts)p 1659 1442 V 2231 1442 +V 2284 1313 a(Mnemonic)p 2803 1442 V 135 w(Con-)2857 +1412 y(strain)m(ts)p 3376 1442 V 515 1446 2865 4 v 515 +1545 4 100 v 568 1515 a Fq(adc)p 1087 1545 V 447 w(r,r)p +1659 1545 V 2231 1545 V 1055 w(add)p 2803 1545 V 439 +w(r,r)p 3376 1545 V 515 1549 2865 4 v 515 1648 4 100 +v 568 1618 a(adiw)p 1087 1648 V 401 w(w,I)p 1659 1648 +V 2231 1648 V 1031 w(and)p 2803 1648 V 439 w(r,r)p 3376 +1648 V 515 1652 2865 4 v 515 1751 4 100 v 568 1721 a(andi)p +1087 1751 V 415 w(d,M)p 1659 1751 V 2231 1751 V 999 w(asr)p +2803 1751 V 465 w(r)p 3376 1751 V 515 1754 2865 4 v 515 +1854 4 100 v 568 1824 a(b)r(clr)p 1087 1854 V 431 w(I)p +1659 1854 V 2231 1854 V 1114 w(bld)p 2803 1854 V 458 +w(r,I)p 3376 1854 V 515 1857 2865 4 v 515 1957 4 100 +v 568 1927 a(brb)r(c)p 1087 1957 V 408 w(I,lab)r(el)p +1659 1957 V 2231 1957 V 918 w(brbs)p 2803 1957 V 415 +w(I,lab)r(el)p 3376 1957 V 515 1960 2865 4 v 515 2060 +4 100 v 568 2030 a(bset)p 1087 2060 V 424 w(I)p 1659 +2060 V 2231 2060 V 1114 w(bst)p 2803 2060 V 462 w(r,I)p +3376 2060 V 515 2063 2865 4 v 515 2163 4 100 v 568 2133 +a(cbi)p 1087 2163 V 466 w(I,I)p 1659 2163 V 2231 2163 +V 1061 w(cbr)p 2803 2163 V 457 w(d,I)p 3376 2163 V 515 +2166 2865 4 v 515 2266 4 100 v 568 2236 a(com)p 1087 +2266 V 424 w(r)p 1659 2266 V 2231 2266 V 1111 w(cp)p +2803 2266 V 490 w(r,r)p 3376 2266 V 515 2269 2865 4 v +515 2369 4 100 v 568 2339 a(cp)r(c)p 1087 2369 V 450 +w(r,r)p 1659 2369 V 2231 2369 V 1055 w(cpi)p 2803 2369 +V 467 w(d,M)p 3376 2369 V 515 2372 2865 4 v 515 2472 +4 100 v 568 2442 a(cpse)p 1087 2472 V 419 w(r,r)p 1659 +2472 V 2231 2472 V 1055 w(dec)p 2803 2472 V 453 w(r)p +3376 2472 V 515 2475 2865 4 v 515 2575 4 100 v 568 2545 +a(elpm)p 1087 2575 V 397 w(t,z)p 1659 2575 V 2231 2575 +V 1052 w(eor)p 2803 2575 V 461 w(r,r)p 3376 2575 V 515 +2578 2865 4 v 515 2678 4 100 v 568 2648 a(in)p 1087 2678 +V 503 w(r,I)p 1659 2678 V 2231 2678 V 1058 w(inc)p 2803 +2678 V 467 w(r)p 3376 2678 V 515 2681 2865 4 v 515 2781 +4 100 v 568 2751 a(ld)p 1087 2781 V 503 w(r,e)p 1659 +2781 V 2231 2781 V 1051 w(ldd)p 2803 2781 V 458 w(r,b)p +3376 2781 V 515 2784 2865 4 v 515 2884 4 100 v 568 2854 +a(ldi)p 1087 2884 V 480 w(d,M)p 1659 2884 V 2231 2884 +V 999 w(lds)p 2803 2884 V 471 w(r,lab)r(el)p 3376 2884 +V 515 2887 2865 4 v 515 2987 4 100 v 568 2957 a(lpm)p +1087 2987 V 434 w(t,z)p 1659 2987 V 2231 2987 V 1052 +w(lsl)p 2803 2987 V 494 w(r)p 3376 2987 V 515 2990 2865 +4 v 515 3089 4 100 v 568 3060 a(lsr)p 1087 3089 V 483 +w(r)p 1659 3089 V 2231 3089 V 1111 w(mo)n(v)p 2803 3089 +V 420 w(r,r)p 3376 3089 V 515 3093 2865 4 v 515 3192 +4 100 v 568 3163 a(mo)n(vw)p 1087 3192 V 359 w(r,r)p +1659 3192 V 2231 3192 V 1055 w(m)n(ul)p 2803 3192 V 437 +w(r,r)p 3376 3192 V 515 3196 2865 4 v 515 3295 4 100 +v 568 3265 a(neg)p 1087 3295 V 447 w(r)p 1659 3295 V +2231 3295 V 1111 w(or)p 2803 3295 V 498 w(r,r)p 3376 +3295 V 515 3299 2865 4 v 515 3398 4 100 v 568 3368 a(ori)p +1087 3398 V 474 w(d,M)p 1659 3398 V 2231 3398 V 999 w(out)p +2803 3398 V 453 w(I,r)p 3376 3398 V 515 3402 2865 4 v +515 3501 4 100 v 568 3471 a(p)r(op)p 1087 3501 V 436 +w(r)p 1659 3501 V 2231 3501 V 1111 w(push)p 2803 3501 +V 402 w(r)p 3376 3501 V 515 3505 2865 4 v 515 3604 4 +100 v 568 3574 a(rol)p 1087 3604 V 474 w(r)p 1659 3604 +V 2231 3604 V 1111 w(ror)p 2803 3604 V 465 w(r)p 3376 +3604 V 515 3608 2865 4 v 515 3707 4 100 v 568 3677 a(sb)r(c)p +1087 3707 V 454 w(r,r)p 1659 3707 V 2231 3707 V 1055 +w(sb)r(ci)p 2803 3707 V 432 w(d,M)p 3376 3707 V 515 3710 +2865 4 v 515 3810 4 100 v 568 3780 a(sbi)p 1087 3810 +V 470 w(I,I)p 1659 3810 V 2231 3810 V 1061 w(sbic)p 2803 +3810 V 434 w(I,I)p 3376 3810 V 515 3813 2865 4 v 515 +3913 4 100 v 568 3883 a(sbiw)p 1087 3913 V 410 w(w,I)p +1659 3913 V 2231 3913 V 1031 w(sbr)p 2803 3913 V 461 +w(d,M)p 3376 3913 V 515 3916 2865 4 v 515 4016 4 100 +v 568 3986 a(sbrc)p 1087 4016 V 423 w(r,I)p 1659 4016 +V 2231 4016 V 1058 w(sbrs)p 2803 4016 V 428 w(r,I)p 3376 +4016 V 515 4019 2865 4 v 515 4119 4 100 v 568 4089 a(ser)p +1087 4119 V 469 w(d)p 1659 4119 V 2231 4119 V 1098 w(st)p +2803 4119 V 508 w(e,r)p 3376 4119 V 515 4122 2865 4 v +515 4222 4 100 v 568 4192 a(std)p 1087 4222 V 461 w(b,r)p +1659 4222 V 2231 4222 V 1042 w(sts)p 2803 4222 V 475 +w(lab)r(el,r)p 3376 4222 V 515 4225 2865 4 v 515 4325 +4 100 v 568 4295 a(sub)p 1087 4325 V 447 w(r,r)p 1659 +4325 V 2231 4325 V 1055 w(subi)p 2803 4325 V 425 w(d,M)p +3376 4325 V 515 4328 2865 4 v 515 4428 4 100 v 568 4398 +a(sw)n(ap)p 1087 4428 V 393 w(r)p 1659 4428 V 2231 4428 +V 2803 4428 V 3376 4428 V 515 4431 2865 4 v 515 4544 +a(Constrain)n(t)i(c)n(haracters)f(ma)n(y)h(b)r(e)i(prep)r(ended)f(b)n +(y)g(a)g(single)g(constrain)n(t)f(mo)r(di\034er.)42 b(Con-)515 +4643 y(train)n(ts)27 b(without)h(a)f(mo)r(di\034er)g(sp)r(ecify)h +(read-only)e(op)r(erands.)35 b(Mo)r(di\034ers)27 b(are:)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 43 59 +TeXDict begin 43 58 bop 515 203 a Fs(7.3)94 b(Input)32 +b(and)h(Output)f(Op)s(erands)1365 b(43)p 515 236 2865 +4 v 515 443 V 515 543 4 100 v 568 513 a(Mo)s(di\034er)p +1945 543 V 1072 w(Sp)s(eci\034es)p 3376 543 V 515 546 +2865 4 v 515 746 4 200 v 568 616 a Fq(=)p 1945 746 V +1365 w(W)-7 b(rite-only)27 b(op)r(erand,)f(usually)h(used)f(for)1998 +716 y(all)i(output)g(op)r(erands.)p 3376 746 V 515 749 +2865 4 v 515 848 4 100 v 568 819 a(+)p 1945 848 V 1365 +w(Read-write)f(op)r(erand)p 3376 848 V 515 852 2865 4 +v 515 1051 4 200 v 568 922 a(&)p 1945 1051 V 1365 w(Register)g(should)g +(b)r(e)h(used)g(for)f(output)1998 1021 y(only)p 3376 +1051 V 515 1054 2865 4 v 515 1167 a(Output)34 b(op)r(erands)e(m)n(ust)i +(b)r(e)g(write-only)f(and)g(the)h(C)g(expression)e(result)i(m)n(ust)f +(b)r(e)h(an)515 1267 y(lv)-5 b(alue,)28 b(whic)n(h)g(means)f(that)i +(the)f(op)r(erands)f(m)n(ust)h(b)r(e)h(v)-5 b(alid)28 +b(on)g(the)g(left)h(side)f(of)g(assign-)515 1366 y(men)n(ts.)36 +b(Note,)28 b(that)f(the)g(compiler)g(will)g(not)g(c)n(hec)n(k)f(if)i +(the)f(op)r(erands)f(are)g(of)h(reasonable)515 1466 y(t)n(yp)r(e)g(for) +h(the)f(kind)h(of)g(op)r(eration)e(used)i(in)g(the)f(assem)n(bler)f +(instructions.)515 1613 y(Input)31 b(op)r(erands)e(are,)h(y)n(ou)g +(guessed)f(it,)j(read-only)-7 b(.)43 b(But)31 b(what)f(if)h(y)n(ou)f +(need)g(the)h(same)515 1712 y(op)r(erand)h(for)h(input)h(and)f(output?) +54 b(As)33 b(stated)g(ab)r(o)n(v)n(e,)g(read-write)f(op)r(erands)g(are) +g(not)515 1812 y(supp)r(orted)i(in)g(inline)g(assem)n(bler)f(co)r(de.) +55 b(But)35 b(there)e(is)h(another)f(solution.)56 b(F)-7 +b(or)33 b(input)515 1912 y(op)r(erators)24 b(it)j(is)f(p)r(ossible)f +(to)i(use)f(a)f(single)h(digit)g(in)h(the)f(constrain)n(t)f(string.)36 +b(Using)26 b(digit)515 2011 y(n)32 b(tells)g(the)h(compiler)e(to)i(use) +f(the)g(same)g(register)e(as)i(for)f(the)i(n-th)f(op)r(erand,)h +(starting)515 2111 y(with)28 b(zero.)36 b(Here)27 b(is)g(an)g(example:) +515 2320 y Fj(asm)36 b(volatile\("swap)j(\0450")d(:)g("=r")g(\(value\)) +h(:)f("0")g(\(value\)\);)515 2550 y Fq(This)e(statemen)n(t)g(will)g(sw) +n(ap)g(the)g(nibbles)h(of)f(an)g(8-bit)g(v)-5 b(ariable)33 +b(named)h(v)-5 b(alue.)57 b(Con-)515 2650 y(strain)n(t)36 +b Fm("0")g Fq(tells)h(the)g(compiler,)h(to)f(use)g(the)g(same)f(input)i +(register)e(as)g(for)g(the)h(\034rst)515 2749 y(op)r(erand.)e(Note)27 +b(ho)n(w)n(ev)n(er,)e(that)i(this)f(do)r(esn't)h(automatically)e(imply) +i(the)g(rev)n(erse)e(case.)515 2849 y(The)31 b(compiler)f(ma)n(y)g(c)n +(ho)r(ose)g(the)h(same)f(registers)f(for)i(input)g(and)g(output,)h(ev)n +(en)f(if)g(not)515 2949 y(told)21 b(to)h(do)f(so.)35 +b(This)21 b(is)h(not)f(a)h(problem)f(in)h(most)f(cases,)h(but)g(ma)n(y) +f(b)r(e)h(fatal)f(if)i(the)f(output)515 3048 y(op)r(erator)31 +b(is)i(mo)r(di\034ed)g(b)n(y)f(the)i(assem)n(bler)d(co)r(de)i(b)r +(efore)f(the)i(input)f(op)r(erator)e(is)i(used.)515 3148 +y(In)e(the)h(situation)g(where)f(y)n(our)f(co)r(de)h(dep)r(ends)h(on)f +(di\033eren)n(t)h(registers)e(used)h(for)g(input)515 +3247 y(and)h(output)i(op)r(erands,)f(y)n(ou)f(m)n(ust)h(add)g(the)g +Fm(&)g Fq(constrain)n(t)f(mo)r(di\034er)g(to)h(y)n(our)f(output)515 +3347 y(op)r(erand.)k(The)27 b(follo)n(wing)g(example)g(demonstrates)f +(this)i(problem:)515 3556 y Fj(asm)36 b(volatile\("in)i(\0450,\0451") +143 b("\\n\\t")973 3635 y("out)37 b(\0451,)f(\0452")71 +b("\\n\\t")973 3714 y(:)36 b("=&r")h(\(input\))973 3793 +y(:)f("I")g(\(_SFR_IO_ADDR\(port\)\),)41 b("r")36 b(\(output\))938 +3872 y(\);)515 4102 y Fq(In)27 b(this)h(example)f(an)g(input)i(v)-5 +b(alue)27 b(is)g(read)g(from)g(a)g(p)r(ort)g(and)h(then)g(an)f(output)h +(v)-5 b(alue)27 b(is)515 4201 y(written)f(to)g(the)g(same)g(p)r(ort.)36 +b(If)27 b(the)f(compiler)f(w)n(ould)h(ha)n(v)n(e)f(c)n(ho)r(osen)g(the) +h(same)g(register)515 4301 y(for)39 b(input)i(and)f(output,)j(then)e +(the)f(output)h(v)-5 b(alue)39 b(w)n(ould)h(ha)n(v)n(e)f(b)r(een)h +(destro)n(y)n(ed)e(on)515 4400 y(the)29 b(\034rst)f(assem)n(bler)f +(instruction.)40 b(F)-7 b(ortunately)g(,)29 b(this)g(example)f(uses)g +(the)h Fm(&)f Fq(constrain)n(t)515 4500 y(mo)r(di\034er)d(to)g +(instruct)g(the)g(compiler)g(not)g(to)g(select)g(an)n(y)f(register)g +(for)g(the)i(output)f(v)-5 b(alue,)515 4600 y(whic)n(h)23 +b(is)f(used)h(for)g(an)n(y)f(of)h(the)g(input)h(op)r(erands.)34 +b(Bac)n(k)22 b(to)g(sw)n(apping.)35 b(Here)22 b(is)h(the)g(co)r(de)515 +4699 y(to)k(sw)n(ap)g(high)g(and)h(lo)n(w)f(b)n(yte)g(of)h(a)f(16-bit)f +(v)-5 b(alue:)515 4908 y Fj(asm)36 b(volatile\("mov)j(__tmp_reg__,)f +(\045A0")f("\\n\\t")973 4987 y("mov)g(\045A0,)f(\045B0")319 +b("\\n\\t")p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 44 60 +TeXDict begin 44 59 bop 515 203 a Fs(7.3)94 b(Input)32 +b(and)h(Output)f(Op)s(erands)1365 b(44)p 515 236 2865 +4 v 973 523 a Fj("mov)37 b(\045B0,)f(__tmp_reg__")j("\\n\\t")973 +602 y(:)d("=r")g(\(value\))973 681 y(:)g("0")g(\(value\))938 +760 y(\);)515 984 y Fq(First)27 b(y)n(ou)f(will)h(notice)g(the)g(usage) +f(of)h(register)e Fm(__tmp_reg__)p Fq(,)e(whic)n(h)j(w)n(e)h(listed)g +(among)515 1083 y(other)34 b(sp)r(ecial)h(registers)e(in)i(the)g +Fs(Assem)m(bler)k(Co)s(de)34 b Fq(\(p.)14 b(39\))35 b(section.)58 +b(Y)-7 b(ou)35 b(can)f(use)515 1183 y(this)i(register)d(without)j(sa)n +(ving)e(its)i(con)n(ten)n(ts.)60 b(Completely)35 b(new)h(are)e(those)h +(letters)g Fm(A)515 1283 y Fq(and)c Fm(B)h Fq(in)g Fm(\045A0)f +Fq(and)g Fm(\045B0)p Fq(.)49 b(In)32 b(fact)g(they)g(refer)f(to)h(t)n +(w)n(o)f(di\033eren)n(t)h(8-bit)f(registers,)h(b)r(oth)515 +1382 y(con)n(taining)26 b(a)h(part)g(of)h(v)-5 b(alue.)515 +1529 y(Another)27 b(example)g(to)h(sw)n(ap)e(b)n(ytes)h(of)h(a)f +(32-bit)g(v)-5 b(alue:)515 1732 y Fj(asm)36 b(volatile\("mov)j +(__tmp_reg__,)f(\045A0")f("\\n\\t")973 1811 y("mov)g(\045A0,)f(\045D0") +319 b("\\n\\t")973 1890 y("mov)37 b(\045D0,)f(__tmp_reg__")j("\\n\\t") +973 1969 y("mov)e(__tmp_reg__,)h(\045B0")f("\\n\\t")973 +2048 y("mov)g(\045B0,)f(\045C0")319 b("\\n\\t")973 2127 +y("mov)37 b(\045C0,)f(__tmp_reg__")j("\\n\\t")973 2206 +y(:)d("=r")g(\(value\))973 2285 y(:)g("0")g(\(value\))938 +2363 y(\);)515 2587 y Fq(Instead)29 b(of)h(listing)f(the)h(same)f(op)r +(erand)g(as)g(b)r(oth,)i(input)f(and)g(output)g(op)r(erand,)f(it)h(can) +515 2687 y(also)h(b)r(e)i(declared)f(as)g(a)g(read-write)f(op)r(erand.) +52 b(This)32 b(m)n(ust)h(b)r(e)g(applied)g(to)f(an)h(output)515 +2787 y(op)r(erand,)27 b(and)g(the)h(resp)r(ectiv)n(e)f(input)h(op)r +(erand)f(list)g(remains)g(empt)n(y:)515 2990 y Fj(asm)36 +b(volatile\("mov)j(__tmp_reg__,)f(\045A0")f("\\n\\t")973 +3069 y("mov)g(\045A0,)f(\045D0")319 b("\\n\\t")973 3148 +y("mov)37 b(\045D0,)f(__tmp_reg__")j("\\n\\t")973 3227 +y("mov)e(__tmp_reg__,)h(\045B0")f("\\n\\t")973 3306 y("mov)g(\045B0,)f +(\045C0")319 b("\\n\\t")973 3384 y("mov)37 b(\045C0,)f(__tmp_reg__")j +("\\n\\t")973 3463 y(:)d("+r")g(\(value\)\);)515 3687 +y Fq(If)j(op)r(erands)f(do)h(not)f(\034t)i(in)n(to)e(a)h(single)f +(register,)j(the)e(compiler)f(will)h(automatically)515 +3787 y(assign)29 b(enough)h(registers)f(to)i(hold)g(the)g(en)n(tire)f +(op)r(erand.)46 b(In)31 b(the)g(assem)n(bler)e(co)r(de)i(y)n(ou)515 +3887 y(use)23 b Fm(\045A0)g Fq(to)g(refer)g(to)h(the)g(lo)n(w)n(est)e +(b)n(yte)i(of)g(the)g(\034rst)f(op)r(erand,)h Fm(\045A1)e +Fq(to)i(the)g(lo)n(w)n(est)f(b)n(yte)g(of)515 3986 y(the)29 +b(second)g(op)r(erand)f(and)h(so)g(on.)41 b(The)29 b(next)g(b)n(yte)g +(of)h(the)f(\034rst)g(op)r(erand)f(will)i(b)r(e)f Fm(\045B0)p +Fq(,)515 4086 y(the)f(next)f(b)n(yte)h Fm(\045C0)e Fq(and)i(so)f(on.) +515 4233 y(This)22 b(also)e(implies,)k(that)e(it)g(is)g(often)g +(neccessary)e(to)i(cast)f(the)i(t)n(yp)r(e)f(of)g(an)f(input)i(op)r +(erand)515 4332 y(to)k(the)h(desired)f(size.)515 4479 +y(A)33 b(\034nal)f(problem)g(ma)n(y)g(arise)f(while)h(using)h(p)r(oin)n +(ter)f(register)f(pairs.)50 b(If)33 b(y)n(ou)f(de\034ne)g(an)515 +4579 y(input)c(op)r(erand)515 4782 y Fj("e")36 b(\(ptr\))515 +5006 y Fq(and)27 b(the)h(compiler)f(selects)g(register)f +Fm(Z)h Fq(\(r30:r31\),)f(then)p 515 5179 V 515 5255 a +Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i +(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 45 61 +TeXDict begin 45 60 bop 515 203 a Fs(7.4)94 b(Clobb)s(ers)2178 +b(45)p 515 236 2865 4 v 515 523 a Fm(\045A0)26 b Fq(refers)h(to)g +Fm(r30)g Fq(and)515 670 y Fm(\045B0)f Fq(refers)h(to)g +Fm(r31)p Fq(.)515 817 y(But)37 b(b)r(oth)f(v)n(ersions)f(will)i(fail)g +(during)f(the)g(assem)n(bly)g(stage)f(of)i(the)g(compiler,)h(if)f(y)n +(ou)515 916 y(explicitely)27 b(need)h Fm(Z)p Fq(,)f(lik)n(e)g(in)515 +1117 y Fj(ld)36 b(r24,Z)515 1339 y Fq(If)28 b(y)n(ou)f(write)515 +1539 y Fj(ld)36 b(r24,)g(\045a0)515 1761 y Fq(with)26 +b(a)f(lo)n(w)n(er)f(case)h Fm(a)g Fq(follo)n(wing)g(the)h(p)r(ercen)n +(t)f(sign,)h(then)g(the)g(compiler)f(will)h(create)f(the)515 +1861 y(prop)r(er)h(assem)n(bler)g(line.)515 2139 y Fn(7.4)112 +b(Clobb)s(ers)515 2339 y Fq(As)21 b(stated)g(previously)-7 +b(,)22 b(the)g(last)f(part)f(of)i(the)g Fm(asm)e Fq(statemen)n(t,)i +(the)g(list)g(of)f(clobb)r(ers,)h(ma)n(y)515 2439 y(b)r(e)30 +b(omitted,)h(including)g(the)f(colon)f(sep)r(erator.)43 +b(Ho)n(w)n(ev)n(er,)29 b(if)i(y)n(ou)e(are)g(using)h(registers,)515 +2539 y(whic)n(h)25 b(had)g(not)h(b)r(een)g(passed)e(as)h(op)r(erands,)g +(y)n(ou)g(need)g(to)g(inform)h(the)f(compiler)g(ab)r(out)515 +2638 y(this.)35 b(The)24 b(follo)n(wing)e(example)g(will)i(do)f(an)g +(atomic)f(incremen)n(t.)35 b(It)24 b(incremen)n(ts)e(an)h(8-bit)515 +2738 y(v)-5 b(alue)29 b(p)r(oin)n(ted)h(to)g(b)n(y)f(a)g(p)r(oin)n(ter) +g(v)-5 b(ariable)29 b(in)h(one)f(go,)g(without)h(b)r(eing)g(in)n +(terrupted)f(b)n(y)515 2837 y(an)h(in)n(terrupt)f(routine)h(or)f +(another)h(thread)f(in)i(a)e(m)n(ultithreaded)h(en)n(vironmen)n(t.)44 +b(Note,)515 2937 y(that)31 b(w)n(e)f(m)n(ust)g(use)h(a)f(p)r(oin)n +(ter,)h(b)r(ecause)f(the)h(incremen)n(ted)f(v)-5 b(alue)30 +b(needs)h(to)f(b)r(e)h(stored)515 3037 y(b)r(efore)c(in)n(terrupts)g +(are)f(enabled.)515 3237 y Fj(asm)36 b(volatile\()656 +3316 y("cli")530 b("\\n\\t")656 3395 y("ld)36 b(r24,)g(\045a0")248 +b("\\n\\t")656 3474 y("inc)36 b(r24")389 b("\\n\\t")656 +3553 y("st)36 b(\045a0,)g(r24")248 b("\\n\\t")656 3632 +y("sei")530 b("\\n\\t")656 3711 y(:)656 3790 y(:)35 b("e")h(\(ptr\))656 +3868 y(:)f("r24")515 3947 y(\);)515 4169 y Fq(The)27 +b(compiler)g(migh)n(t)h(pro)r(duce)f(the)h(follo)n(wing)e(co)r(de:)656 +4370 y Fj(cli)656 4448 y(ld)36 b(r24,)g(Z)656 4527 y(inc)g(r24)656 +4606 y(st)g(Z,)f(r24)656 4685 y(sei)515 4907 y Fq(One)24 +b(easy)h(solution)f(to)h(a)n(v)n(oid)f(clobb)r(ering)g(register)f +Fm(r24)h Fq(is,)i(to)f(mak)n(e)f(use)h(of)g(the)g(sp)r(ecial)515 +5006 y(temp)r(orary)h(register)g Fm(__tmp_reg__)d Fq(de\034ned)28 +b(b)n(y)f(the)h(compiler.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 46 62 +TeXDict begin 46 61 bop 515 203 a Fs(7.4)94 b(Clobb)s(ers)2178 +b(46)p 515 236 2865 4 v 515 523 a Fj(asm)36 b(volatile\()656 +602 y("cli")813 b("\\n\\t")656 681 y("ld)36 b(__tmp_reg__,)j(\045a0") +248 b("\\n\\t")656 760 y("inc)36 b(__tmp_reg__")392 b("\\n\\t")656 +839 y("st)36 b(\045a0,)g(__tmp_reg__")251 b("\\n\\t")656 +917 y("sei")813 b("\\n\\t")656 996 y(:)656 1075 y(:)35 +b("e")h(\(ptr\))515 1154 y(\);)515 1384 y Fq(The)c(compiler)g(is)g +(prepared)f(to)h(reload)f(this)h(register)f(next)i(time)f(it)h(uses)f +(it.)51 b(Another)515 1484 y(problem)31 b(with)h(the)h(ab)r(o)n(v)n(e)d +(co)r(de)i(is,)h(that)f(it)g(should)f(not)h(b)r(e)h(called)e(in)h(co)r +(de)g(sections,)515 1583 y(where)21 b(in)n(terrupts)g(are)g(disabled)g +(and)h(should)f(b)r(e)h(k)n(ept)g(disabled,)g(b)r(ecause)f(it)i(will)e +(enable)515 1683 y(in)n(terrupts)d(at)h(the)g(end.)34 +b(W)-7 b(e)19 b(ma)n(y)f(store)g(the)h(curren)n(t)f(status,)i(but)g +(then)f(w)n(e)f(need)h(another)515 1782 y(register.)33 +b(Again)21 b(w)n(e)g(can)g(solv)n(e)f(this)i(without)f(clobb)r(ering)g +(a)g(\034xed,)h(but)g(let)g(the)g(compiler)515 1882 y(select)27 +b(it.)37 b(This)28 b(could)f(b)r(e)h(done)g(with)g(the)g(help)f(of)h(a) +f(lo)r(cal)g(C)h(v)-5 b(ariable.)515 2091 y Fj({)656 +2170 y(uint8_t)37 b(s;)656 2249 y(asm)f(volatile\()797 +2328 y("in)g(\0450,)g(__SREG__")391 b("\\n\\t")797 2407 +y("cli")813 b("\\n\\t")797 2486 y("ld)36 b(__tmp_reg__,)j(\045a1")248 +b("\\n\\t")797 2564 y("inc)36 b(__tmp_reg__")392 b("\\n\\t")797 +2643 y("st)36 b(\045a1,)g(__tmp_reg__")251 b("\\n\\t")797 +2722 y("out)36 b(__SREG__,)i(\0450")354 b("\\n\\t")797 +2801 y(:)35 b("=&r")i(\(s\))797 2880 y(:)e("e")i(\(ptr\))656 +2959 y(\);)515 3038 y(})515 3268 y Fq(No)n(w)26 b(ev)n(ery)g(thing)h +(seems)f(correct,)g(but)h(it)g(isn't)h(really)-7 b(.)35 +b(The)27 b(assem)n(bler)e(co)r(de)i(mo)r(di\034es)515 +3367 y(the)i(v)-5 b(ariable,)28 b(that)h Fm(ptr)f Fq(p)r(oin)n(ts)g +(to.)41 b(The)28 b(compiler)g(will)h(not)g(recognize)e(this)i(and)g(ma) +n(y)515 3467 y(k)n(eep)20 b(its)g(v)-5 b(alue)21 b(in)f(an)n(y)g(of)h +(the)g(other)e(registers.)33 b(Not)21 b(only)f(do)r(es)g(the)h +(compiler)f(w)n(ork)f(with)515 3566 y(the)32 b(wrong)f(v)-5 +b(alue,)34 b(but)f(the)f(assem)n(bler)f(co)r(de)h(do)r(es)g(to)r(o.)51 +b(The)32 b(C)h(program)d(ma)n(y)h(ha)n(v)n(e)515 3666 +y(mo)r(di\034ed)25 b(the)g(v)-5 b(alue)24 b(to)r(o,)h(but)g(the)g +(compiler)f(didn't)i(up)r(date)f(the)g(memory)f(lo)r(cation)g(for)515 +3766 y(optimization)j(reasons.)35 b(The)27 b(w)n(orst)g(thing)h(y)n(ou) +e(can)h(do)h(in)g(this)f(case)g(is:)515 3975 y Fj({)656 +4054 y(uint8_t)37 b(s;)656 4133 y(asm)f(volatile\()797 +4211 y("in)g(\0450,)g(__SREG__")391 b("\\n\\t")797 4290 +y("cli")813 b("\\n\\t")797 4369 y("ld)36 b(__tmp_reg__,)j(\045a1")248 +b("\\n\\t")797 4448 y("inc)36 b(__tmp_reg__")392 b("\\n\\t")797 +4527 y("st)36 b(\045a1,)g(__tmp_reg__")251 b("\\n\\t")797 +4606 y("out)36 b(__SREG__,)i(\0450")354 b("\\n\\t")797 +4685 y(:)35 b("=&r")i(\(s\))797 4763 y(:)e("e")i(\(ptr\))797 +4842 y(:)e("memory")656 4921 y(\);)515 5000 y(})p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 47 63 +TeXDict begin 47 62 bop 515 203 a Fs(7.5)94 b(Assem)m(bler)31 +b(Macros)1785 b(47)p 515 236 2865 4 v 515 523 a Fq(The)36 +b(sp)r(ecial)g(clobb)r(er)f("memory")f(informs)i(the)h(compiler)e(that) +h(the)h(assem)n(bler)d(co)r(de)515 623 y(ma)n(y)23 b(mo)r(dify)i(an)n +(y)f(memory)f(lo)r(cation.)36 b(It)24 b(forces)g(the)g(compiler)g(to)g +(up)r(date)h(all)f(v)-5 b(ariables)515 722 y(for)40 b(whic)n(h)g(the)i +(con)n(ten)n(ts)d(are)h(curren)n(tly)g(held)h(in)g(a)f(register)f(b)r +(efore)h(executing)h(the)515 822 y(assem)n(bler)30 b(co)r(de.)48 +b(And)32 b(of)f(course,)g(ev)n(erything)f(has)h(to)h(b)r(e)f(reloaded)g +(again)f(after)h(this)515 922 y(co)r(de.)515 1068 y(In)41 +b(most)g(situations,)i(a)e(m)n(uc)n(h)g(b)r(etter)g(solution)g(w)n +(ould)f(b)r(e)h(to)g(declare)f(the)i(p)r(oin)n(ter)515 +1168 y(destination)27 b(itself)h(v)n(olatile:)515 1375 +y Fj(volatile)37 b(uint8_t)g(*ptr;)515 1604 y Fq(This)28 +b(w)n(a)n(y)-7 b(,)28 b(the)h(compiler)f(exp)r(ects)g(the)h(v)-5 +b(alue)29 b(p)r(oin)n(ted)f(to)h(b)n(y)f Fm(ptr)f Fq(to)i(b)r(e)g(c)n +(hanged)e(and)515 1703 y(will)h(load)e(it)i(whenev)n(er)f(used)g(and)h +(store)e(it)i(whenev)n(er)f(mo)r(di\034ed.)515 1850 y(Situations)32 +b(in)i(whic)n(h)e(y)n(ou)h(need)g(clobb)r(ers)f(are)g(v)n(ery)f(rare.) +52 b(In)33 b(most)f(cases)g(there)h(will)515 1950 y(b)r(e)26 +b(b)r(etter)h(w)n(a)n(ys.)34 b(Clobb)r(ered)26 b(registers)e(will)i +(force)g(the)g(compiler)g(to)f(store)h(their)g(v)-5 b(alues)515 +2049 y(b)r(efore)28 b(and)h(reload)f(them)h(after)g(y)n(our)f(assem)n +(bler)f(co)r(de.)41 b(A)-9 b(v)n(oiding)28 b(clobb)r(ers)g(giv)n(es)g +(the)515 2149 y(compiler)f(more)f(freedom)h(while)h(optimizing)g(y)n +(our)e(co)r(de.)515 2428 y Fn(7.5)112 b(Assem)m(bler)38 +b(Macros)515 2629 y Fq(In)31 b(order)f(to)g(reuse)h(y)n(our)e(assem)n +(bler)h(language)f(parts,)i(it)h(is)f(useful)g(to)g(de\034ne)g(them)h +(as)515 2728 y(macros)23 b(and)h(put)h(them)g(in)n(to)g(include)g +(\034les.)35 b(A)-9 b(VR)25 b(Lib)r(c)g(comes)f(with)h(a)f(bunc)n(h)h +(of)f(them,)515 2828 y(whic)n(h)34 b(could)f(b)r(e)h(found)h(in)f(the)g +(directory)f Fm(avr/include)p Fq(.)51 b(Using)33 b(suc)n(h)h(include)g +(\034les)515 2928 y(ma)n(y)20 b(pro)r(duce)h(compiler)f(w)n(arnings,)h +(if)g(they)g(are)f(used)h(in)h(mo)r(dules,)g(whic)n(h)f(are)f(compiled) +515 3027 y(in)27 b(strict)g(ANSI)h(mo)r(de.)37 b(T)-7 +b(o)27 b(a)n(v)n(oid)e(that,)j(y)n(ou)e(can)h(write)g +Fm(__asm__)d Fq(instead)j(of)g Fm(asm)f Fq(and)515 3127 +y Fm(__volatile__)c Fq(instead)28 b(of)f Fm(volatile)p +Fq(.)34 b(These)27 b(are)g(equiv)-5 b(alen)n(t)27 b(aliases.)515 +3274 y(Another)37 b(problem)g(with)h(reused)f(macros)g(arises)f(if)i(y) +n(ou)f(are)f(using)i(lab)r(els.)67 b(In)37 b(suc)n(h)515 +3373 y(cases)44 b(y)n(ou)h(ma)n(y)g(mak)n(e)f(use)i(of)f(the)h(sp)r +(ecial)g(pattern)f Fm(=)p Fq(,)50 b(whic)n(h)45 b(is)h(replaced)e(b)n +(y)h(a)515 3473 y(unique)39 b(n)n(um)n(b)r(er)f(on)h(eac)n(h)f +Fm(asm)f Fq(statemen)n(t.)71 b(The)39 b(follo)n(wing)e(co)r(de)i(had)g +(b)r(een)g(tak)n(en)515 3573 y(from)27 b Fm(avr/include/ioma)o(cr)o(os) +o(.h)p Fq(:)515 3780 y Fj(#define)37 b(loop_until_bit_is_clear\()q +(port)q(,bit)q(\))77 b(\\)797 3859 y(__asm__)37 b(__volatile__)i(\()459 +b(\\)797 3938 y("L_\045=:)37 b(")e("sbic)i(\0450,)f(\0451")g("\\n\\t") +214 b(\\)1114 4017 y("rjmp)37 b(L_\045=")531 b(\\)1114 +4096 y(:)36 b(/*)g(no)g(outputs)h(*/)1114 4175 y(:)f("I")g +(\(_SFR_IO_ADDR\(port\)\),)1185 4253 y("I")g(\(bit\))797 +4332 y(\))515 4560 y Fq(When)27 b(used)g(for)g(the)g(\034rst)g(time,)h +Fm(L_=)e Fq(ma)n(y)g(b)r(e)i(translated)e(to)h Fm(L_1404)p +Fq(,)e(the)i(next)g(usage)515 4660 y(migh)n(t)g(create)g +Fm(L_1405)e Fq(or)i(whatev)n(er.)35 b(In)28 b(an)n(y)f(case,)f(the)i +(lab)r(els)g(b)r(ecame)f(unique)h(to)r(o.)515 4807 y(Another)37 +b(option)h(is)g(to)g(use)g(Unix-assem)n(bler)e(st)n(yle)h(n)n(umeric)h +(lab)r(els.)68 b(They)38 b(are)f(ex-)515 4907 y(plained)f(in)g +Fs(Ho)m(w)41 b(do)h(I)f(trace)i(an)f(assem)m(bler)f(\034le)f(in)i(a)m +(vr-gdb?)63 b Fq(\(p.)14 b(68\).)62 b(The)515 5006 y(ab)r(o)n(v)n(e)26 +b(example)h(w)n(ould)g(then)h(lo)r(ok)f(lik)n(e:)p 515 +5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 48 64 +TeXDict begin 48 63 bop 515 203 a Fs(7.6)94 b(C)32 b(Stub)g(F)-8 +b(unctions)1820 b(48)p 515 236 2865 4 v 515 523 a Fj(#define)37 +b(loop_until_bit_is_clear\()q(port)q(,bit)q(\))797 602 +y(__asm__)g(__volatile__)i(\()797 681 y("1:)d(")g("sbic)g(\0450,)g +(\0451")g("\\n\\t")1114 760 y("rjmp)h(1b")1114 839 y(:)f(/*)g(no)g +(outputs)h(*/)1114 917 y(:)f("I")g(\(_SFR_IO_ADDR\(port\)\),)1185 +996 y("I")g(\(bit\))797 1075 y(\))515 1353 y Fn(7.6)112 +b(C)37 b(Stub)h(F)-9 b(unctions)515 1553 y Fq(Macro)29 +b(de\034nitions)h(will)h(include)g(the)g(same)f(assem)n(bler)f(co)r(de) +h(whenev)n(er)f(they)i(are)f(ref-)515 1653 y(erenced.)42 +b(This)29 b(ma)n(y)g(not)g(b)r(e)h(acceptable)f(for)g(larger)e +(routines.)42 b(In)30 b(this)g(case)e(y)n(ou)h(ma)n(y)515 +1753 y(de\034ne)f(a)f(C)g(stub)h(function,)g(con)n(taining)f(nothing)g +(other)g(than)h(y)n(our)e(assem)n(bler)g(co)r(de.)515 +1951 y Fj(void)36 b(delay\(uint8_t)j(ms\))515 2030 y({)656 +2109 y(uint16_t)e(cnt;)656 2188 y(asm)f(volatile)h(\()797 +2267 y("\\n")797 2345 y("L_dl1\045=:")h("\\n\\t")797 +2424 y("mov)e(\045A0,)h(\045A2")f("\\n\\t")797 2503 y("mov)g(\045B0,)h +(\045B2")f("\\n")797 2582 y("L_dl2\045=:")i("\\n\\t")797 +2661 y("sbiw)f(\045A0,)f(1")g("\\n\\t")797 2740 y("brne)h(L_dl2\045=")g +("\\n\\t")797 2819 y("dec)f(\0451")g("\\n\\t")797 2898 +y("brne)h(L_dl1\045=")g("\\n\\t")797 2976 y(:)e("=&w")i(\(cnt\))797 +3055 y(:)e("r")i(\(ms\),)f("r")g(\(delay_count\))797 +3134 y(\);)515 3213 y(})515 3432 y Fq(The)c(purp)r(ose)g(of)g(this)g +(function)h(is)f(to)g(dela)n(y)g(the)g(program)e(execution)i(b)n(y)g(a) +g(sp)r(eci\034ed)515 3532 y(n)n(um)n(b)r(er)20 b(of)g(milliseconds)g +(using)g(a)g(coun)n(ting)g(lo)r(op.)34 b(The)20 b(global)f(16)h(bit)g +(v)-5 b(ariable)20 b(dela)n(y_-)515 3631 y(coun)n(t)i(m)n(ust)h(con)n +(tain)f(the)h(CPU)g(clo)r(c)n(k)f(frequency)g(in)h(Hertz)g(divided)f(b) +n(y)h(4000)e(and)h(m)n(ust)515 3731 y(ha)n(v)n(e)28 b(b)r(een)h(set)g +(b)r(efore)g(calling)f(this)h(routine)g(for)f(the)h(\034rst)g(time.)42 +b(As)29 b(describ)r(ed)f(in)i(the)515 3831 y Fs(clobb)s(er)h +Fq(\(p.)14 b(45\))32 b(section,)h(the)f(routine)g(uses)f(a)h(lo)r(cal)f +(v)-5 b(ariable)31 b(to)h(hold)g(a)f(temp)r(orary)515 +3930 y(v)-5 b(alue.)515 4077 y(Another)22 b(use)g(for)f(a)h(lo)r(cal)g +(v)-5 b(ariable)21 b(is)h(a)f(return)h(v)-5 b(alue.)35 +b(The)22 b(follo)n(wing)f(function)i(returns)515 4177 +y(a)k(16)g(bit)h(v)-5 b(alue)27 b(read)g(from)g(t)n(w)n(o)g(successiv)n +(e)f(p)r(ort)h(addresses.)515 4375 y Fj(uint16_t)37 b(inw\(uint8_t)i +(port\))515 4454 y({)656 4533 y(uint16_t)e(result;)656 +4612 y(asm)f(volatile)h(\()797 4691 y("in)f(\045A0,\0451")h("\\n\\t") +797 4770 y("in)f(\045B0,\(\0451\))i(+)d(1")797 4848 y(:)g("=r")i +(\(result\))797 4927 y(:)e("I")i(\(_SFR_IO_ADDR\(port\)\))797 +5006 y(\);)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 49 65 +TeXDict begin 49 64 bop 515 203 a Fs(7.7)94 b(C)32 b(Names)f(Used)g(in) +h(Assem)m(bler)e(Co)s(de)1107 b(49)p 515 236 2865 4 v +656 523 a Fj(return)37 b(result;)515 602 y(})506 803 +y Fs(Note:)676 953 y Fq(in)n(w\(\))28 b(is)g(supplied)f(b)n(y)h(a)n +(vr-lib)r(c.)515 1232 y Fn(7.7)112 b(C)37 b(Names)h(Used)g(in)g(Assem)m +(bler)g(Co)s(de)515 1433 y Fq(By)29 b(default)i Fm(AVR-GCC)c +Fq(uses)j(the)g(same)g(sym)n(b)r(olic)f(names)h(of)g(functions)g(or)f +(v)-5 b(ariables)29 b(in)515 1532 y(C)d(and)h(assem)n(bler)e(co)r(de.) +36 b(Y)-7 b(ou)27 b(can)f(sp)r(ecify)h(a)f(di\033eren)n(t)h(name)f(for) +g(the)h(assem)n(bler)e(co)r(de)515 1632 y(b)n(y)i(using)g(a)g(sp)r +(ecial)h(form)f(of)g(the)h Fm(asm)f Fq(statemen)n(t:)515 +1841 y Fj(unsigned)37 b(long)g(value)f(asm\("clock"\))j(=)c(3686400;) +515 2071 y Fq(This)23 b(statemen)n(t)g(instructs)g(the)h(compiler)f(to) +g(use)g(the)g(sym)n(b)r(ol)g(name)g(clo)r(c)n(k)g(rather)f(than)515 +2171 y(v)-5 b(alue.)74 b(This)40 b(mak)n(es)f(sense)g(only)h(for)f +(external)g(or)g(static)h(v)-5 b(ariables,)42 b(b)r(ecause)e(lo)r(cal) +515 2270 y(v)-5 b(ariables)34 b(do)h(not)g(ha)n(v)n(e)f(sym)n(b)r(olic) +g(names)h(in)h(the)f(assem)n(bler)f(co)r(de.)60 b(Ho)n(w)n(ev)n(er,)35 +b(lo)r(cal)515 2370 y(v)-5 b(ariables)26 b(ma)n(y)h(b)r(e)h(held)g(in)f +(registers.)515 2517 y(With)h Fm(AVR-GCC)d Fq(y)n(ou)i(can)g(sp)r +(ecify)h(the)g(use)f(of)h(a)f(sp)r(eci\034c)g(register:)515 +2726 y Fj(void)36 b(Count\(void\))515 2805 y({)656 2884 +y(register)h(unsigned)h(char)e(counter)h(asm\("r3"\);)656 +3041 y(...)f(some)g(code...)656 3120 y(asm)g(volatile\("clr)j(r3"\);) +656 3199 y(...)d(more)g(code...)515 3278 y(})515 3508 +y Fq(The)30 b(assem)n(bler)e(instruction,)j Fm("clr)42 +b(r3")p Fq(,)29 b(will)i(clear)e(the)h(v)-5 b(ariable)29 +b(coun)n(ter.)44 b Fm(AVR-GCC)515 3608 y Fq(will)20 b(not)f(completely) +h(reserv)n(e)e(the)i(sp)r(eci\034ed)g(register.)32 b(If)21 +b(the)f(optimizer)f(recognizes)f(that)515 3707 y(the)26 +b(v)-5 b(ariable)25 b(will)h(not)g(b)r(e)h(referenced)e(an)n(y)g +(longer,)g(the)h(register)f(ma)n(y)g(b)r(e)h(re-used.)36 +b(But)515 3807 y(the)c(compiler)f(is)h(not)g(able)g(to)g(c)n(hec)n(k)f +(w)n(ether)g(this)h(register)f(usage)g(con\035icts)g(with)i(an)n(y)515 +3906 y(prede\034ned)c(register.)40 b(If)29 b(y)n(ou)f(reserv)n(e)g(to)r +(o)g(man)n(y)h(registers)e(in)j(this)f(w)n(a)n(y)-7 b(,)28 +b(the)i(compiler)515 4006 y(ma)n(y)d(ev)n(en)g(run)g(out)h(of)f +(registers)f(during)h(co)r(de)g(generation.)515 4153 +y(In)33 b(order)e(to)h(c)n(hange)g(the)h(name)f(of)h(a)f(function,)i(y) +n(ou)e(need)h(a)f(protot)n(yp)r(e)g(declaration,)515 +4253 y(b)r(ecause)23 b(the)i(compiler)e(will)h(not)g(accept)g(the)g +Fm(asm)f Fq(k)n(eyw)n(ord)f(in)i(the)g(function)h(de\034nition:)515 +4462 y Fj(extern)37 b(long)f(Calc\(void\))i(asm)e(\("CALCULATE"\);)515 +4692 y Fq(Calling)28 b(the)h(function)g Fm(Calc\(\))d +Fq(will)j(create)e(assem)n(bler)g(instructions)h(to)h(call)f(the)h +(func-)515 4791 y(tion)e Fm(CALCULATE)p Fq(.)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 50 66 +TeXDict begin 50 65 bop 515 203 a Fs(7.8)94 b(Links)2327 +b(50)p 515 236 2865 4 v 515 523 a Fn(7.8)112 b(Links)515 +724 y Fq(F)-7 b(or)43 b(a)h(more)g(thorough)f(discussion)g(of)h(inline) +h(assem)n(bly)e(usage,)48 b(see)43 b(the)i(gcc)f(user)515 +823 y(man)n(ual.)110 b(The)52 b(latest)g(v)n(ersion)f(of)h(the)h(gcc)f +(man)n(ual)f(is)h(alw)n(a)n(ys)f(a)n(v)-5 b(ailable)51 +b(here:)515 923 y Fm(http://gcc.gnu.)o(org)o(/o)o(nl)o(ine)o(do)o(cs)o +(/)515 1245 y Fr(8)131 b(Ho)l(w)44 b(to)f(Build)h(a)f(Library)515 +1490 y Fn(8.1)112 b(In)m(tro)s(duction)515 1691 y Fq(So)21 +b(y)n(ou)g(k)n(eep)g(reusing)g(the)h(same)f(functions)h(that)g(y)n(ou)f +(created)g(o)n(v)n(er)f(and)i(o)n(v)n(er?)33 b(Tired)21 +b(of)515 1790 y(cut)h(and)f(paste)g(going)f(from)h(one)g(pro)5 +b(ject)21 b(to)g(the)h(next?)35 b(W)-7 b(ould)22 b(y)n(ou)e(lik)n(e)h +(to)g(reduce)g(y)n(our)515 1890 y(main)n(tenance)33 b(o)n(v)n(erhead?) +55 b(Then)35 b(y)n(ou're)d(ready)i(to)g(create)f(y)n(our)g(o)n(wn)h +(library!)55 b(Co)r(de)515 1990 y(reuse)24 b(is)h(a)f(v)n(ery)g +(laudable)g(goal.)35 b(With)26 b(some)e(upfron)n(t)h(in)n(v)n(estmen)n +(t,)g(y)n(ou)f(can)g(sa)n(v)n(e)g(time)515 2089 y(and)38 +b(energy)e(on)i(future)g(pro)5 b(jects)37 b(b)n(y)h(ha)n(ving)f +(ready-to-go)e(libraries.)66 b(This)38 b(c)n(hapter)515 +2189 y(describ)r(es)h(some)f(bac)n(kground)g(information,)j(design)e +(considerations,)i(and)e(practical)515 2288 y(kno)n(wledge)26 +b(that)i(y)n(ou)f(will)g(need)h(to)f(create)g(and)g(use)h(y)n(our)e(o)n +(wn)h(libraries.)515 2568 y Fn(8.2)112 b(Ho)m(w)37 b(the)g(Link)m(er)h +(W)-9 b(orks)515 2769 y Fq(The)20 b(compiler)g(compiles)f(a)h(single)g +(high-lev)n(el)f(language)g(\034le)h(\(C)h(language,)f(for)f(example\)) +515 2868 y(in)n(to)39 b(a)f(single)h(ob)5 b(ject)39 b(mo)r(dule)g +(\034le.)71 b(The)40 b(link)n(er)e(\(ld\))i(can)e(only)h(w)n(ork)f +(with)h(ob)5 b(ject)515 2968 y(mo)r(dules)29 b(to)h(link)g(them)g +(together.)43 b(Ob)5 b(ject)29 b(mo)r(dules)h(are)f(the)h(smallest)f +(unit)i(that)f(the)515 3067 y(link)n(er)d(w)n(orks)e(with.)515 +3214 y(T)n(ypically)-7 b(,)27 b(on)g(the)i(link)n(er)e(command)g(line,) +h(y)n(ou)f(will)h(sp)r(ecify)g(a)g(set)g(of)g(ob)5 b(ject)27 +b(mo)r(dules)515 3314 y(\(that)33 b(has)e(b)r(een)i(previously)e +(compiled\))i(and)f(then)g(a)g(list)h(of)f(libraries,)g(including)h +(the)515 3414 y(Standard)23 b(C)g(Library)-7 b(.)34 b(The)24 +b(link)n(er)f(tak)n(es)f(the)i(set)g(of)f(ob)5 b(ject)24 +b(mo)r(dules)f(that)h(y)n(ou)f(sp)r(ecify)515 3513 y(on)29 +b(the)h(command)f(line)g(and)g(links)h(them)g(together.)41 +b(Afterw)n(ards)28 b(there)i(will)f(probably)515 3613 +y(b)r(e)d(a)f(set)g(of)h("unde\034ned)g(references".)34 +b(A)26 b(reference)f(is)g(essen)n(tially)g(a)g(function)h(call.)36 +b(An)515 3712 y(unde\034ned)g(reference)f(is)h(a)f(function)h(call,)i +(with)e(no)g(de\034ned)g(function)g(to)g(matc)n(h)g(the)515 +3812 y(call.)515 3959 y(The)29 b(link)n(er)g(will)g(then)h(go)f +(through)f(the)i(libraries,)e(in)i(order,)e(to)i(matc)n(h)f(the)h +(unde\034ned)515 4059 y(references)22 b(with)h(function)h +(de\034nitions)f(that)g(are)f(found)i(in)f(the)h(libraries.)33 +b(If)24 b(it)f(\034nds)h(the)515 4158 y(function)j(that)f(matc)n(hes)g +(the)h(call,)f(the)h(link)n(er)f(will)g(then)h(link)g(in)f(the)h(ob)5 +b(ject)26 b(mo)r(dule)h(in)515 4258 y(whic)n(h)i(the)h(function)g(is)g +(lo)r(cated.)42 b(This)30 b(part)f(is)g(imp)r(ortan)n(t:)40 +b(the)30 b(link)n(er)f(links)h(in)f(THE)515 4357 y(ENTIRE)d(OBJECT)f +(MODULE)g(in)h(whic)n(h)f(the)g(function)h(is)f(lo)r(cated.)35 +b(Remem)n(b)r(er,)26 b(the)515 4457 y(link)n(er)32 b(kno)n(ws)g +(nothing)h(ab)r(out)g(the)g(functions)g(in)n(ternal)g(to)g(an)f(ob)5 +b(ject)33 b(mo)r(dule,)i(other)515 4557 y(than)20 b(sym)n(b)r(ol)g +(names)g(\(suc)n(h)h(as)f(function)h(names\).)34 b(The)21 +b(smallest)f(unit)h(the)g(link)n(er)f(w)n(orks)515 4656 +y(with)28 b(is)f(ob)5 b(ject)28 b(mo)r(dules.)515 4803 +y(When)i(there)f(are)f(no)h(more)f(unde\034ned)i(references,)e(the)i +(link)n(er)f(has)f(link)n(ed)h(ev)n(erything)515 4903 +y(and)e(is)h(done)f(and)g(outputs)h(the)g(\034nal)f(application.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 51 67 +TeXDict begin 51 66 bop 515 203 a Fs(8.3)94 b(Ho)m(w)32 +b(to)f(Design)g(a)h(Library)1512 b(51)p 515 236 2865 +4 v 515 523 a Fn(8.3)112 b(Ho)m(w)37 b(to)g(Design)h(a)g(Library)515 +724 y Fq(Ho)n(w)33 b(the)h(link)n(er)g(b)r(eha)n(v)n(es)e(is)i(v)n(ery) +f(imp)r(ortan)n(t)g(in)i(designing)e(a)g(library)-7 b(.)55 +b(Ideally)-7 b(,)35 b(y)n(ou)515 823 y(w)n(an)n(t)30 +b(to)i(design)f(a)g(library)f(where)h(only)g(the)g(functions)h(that)g +(are)e(called)h(are)g(the)h(only)515 923 y(functions)23 +b(to)f(b)r(e)h(link)n(ed)g(in)n(to)f(the)h(\034nal)g(application.)34 +b(This)23 b(helps)f(k)n(eep)g(the)h(co)r(de)g(size)f(to)515 +1022 y(a)k(minim)n(um.)37 b(In)27 b(order)e(to)h(do)g(this,)i(with)f +(the)f(w)n(a)n(y)g(the)h(link)n(er)e(w)n(orks,)g(is)i(to)f(only)g +(write)515 1122 y(one)36 b(function)h(p)r(er)g(co)r(de)f(mo)r(dule.)64 +b(This)37 b(will)g(compile)f(to)g(one)h(function)g(p)r(er)f(ob)5 +b(ject)515 1222 y(mo)r(dule.)56 b(This)34 b(is)g(usually)g(a)f(v)n(ery) +g(di\033eren)n(t)h(w)n(a)n(y)f(of)h(doing)g(things)g(than)g(writing)f +(an)515 1321 y(application!)515 1468 y(There)e(are)g(alw)n(a)n(ys)g +(exceptions)g(to)h(the)h(rule.)50 b(There)32 b(are)f(generally)f(t)n(w) +n(o)i(cases)f(where)515 1568 y(y)n(ou)c(w)n(ould)g(w)n(an)n(t)f(to)i +(ha)n(v)n(e)e(more)h(than)h(one)f(function)h(p)r(er)f(ob)5 +b(ject)28 b(mo)r(dule.)515 1715 y(The)g(\034rst)h(is)f(when)h(y)n(ou)f +(ha)n(v)n(e)f(v)n(ery)g(complemen)n(tary)h(functions)g(that)h(it)g(do)r +(esn't)g(mak)n(e)515 1814 y(m)n(uc)n(h)43 b(sense)h(to)g(split)g(them)h +(up.)86 b(F)-7 b(or)43 b(example,)48 b Fs(mallo)s(c\(\))43 +b Fq(\(p.)14 b(195\))43 b(and)h Fs(free\(\))515 1914 +y Fq(\(p.)14 b(193\).)68 b(If)39 b(someone)e(is)h(going)f(to)i(use)f +Fs(mallo)s(c\(\))f Fq(\(p.)14 b(195\),)40 b(they)f(will)f(v)n(ery)g +(lik)n(ely)515 2014 y(b)r(e)c(using)g Fs(free\(\))g Fq(\(p.)14 +b(193\))33 b(\(or)g(at)g(least)h(should)f(b)r(e)h(using)h +Fs(free\(\))e Fq(\(p.)14 b(193\)\).)55 b(In)34 b(this)515 +2113 y(case,)c(it)g(mak)n(es)f(more)h(sense)f(to)h(aggregate)d(those)j +(t)n(w)n(o)g(functions)g(in)g(the)h(same)e(ob)5 b(ject)515 +2213 y(mo)r(dule.)515 2360 y(The)22 b(second)g(case)f(is)h(when)g(y)n +(ou)g(w)n(an)n(t)f(to)h(ha)n(v)n(e)f(an)h(In)n(terrupt)g(Service)f +(Routine)i(\(ISR\))g(in)515 2459 y(y)n(our)f(library)g(that)h(y)n(ou)g +(w)n(an)n(t)f(to)h(link)h(in.)35 b(The)24 b(problem)e(in)i(this)f(case) +g(is)g(that)g(the)h(link)n(er)515 2559 y(lo)r(oks)j(for)h(unresolv)n +(ed)e(references)h(and)h(tries)g(to)g(resolv)n(e)f(them)h(with)h(co)r +(de)f(in)h(libraries.)515 2659 y(A)g(reference)f(is)i(the)f(same)g(as)f +(a)h(function)h(call.)41 b(But)29 b(with)h(ISRs,)g(there)f(is)g(no)g +(function)515 2758 y(call)d(to)g(initiate)h(the)g(ISR.)g(The)g(ISR)f +(is)h(placed)f(in)h(the)g(In)n(terrupt)f(V)-7 b(ector)26 +b(T)-7 b(able)26 b(\(IVT\),)515 2858 y(hence)33 b(no)f(call,)i(no)f +(reference,)g(and)g(no)f(linking)h(in)g(of)g(the)g(ISR.)h(In)f(order)e +(to)i(do)g(this,)515 2957 y(y)n(ou)24 b(ha)n(v)n(e)h(to)g(tric)n(k)g +(the)g(link)n(er)g(in)h(a)f(w)n(a)n(y)-7 b(.)34 b(Aggregate)24 +b(the)i(ISR,)f(with)h(another)f(function)515 3057 y(in)33 +b(the)h(same)f(ob)5 b(ject)32 b(mo)r(dule,)j(but)f(ha)n(v)n(e)e(the)i +(other)f(function)g(b)r(e)h(something)f(that)g(is)515 +3157 y(required)21 b(for)g(the)h(user)f(to)h(call)f(in)h(order)f(to)g +(use)h(the)g(ISR,)g(lik)n(e)g(p)r(erhaps)f(an)g(initialization)515 +3256 y(function)31 b(for)g(the)h(subsystem,)f(or)g(p)r(erhaps)f(a)h +(function)g(that)h(enables)e(the)i(ISR)f(in)h(the)515 +3356 y(\034rst)27 b(place.)515 3636 y Fn(8.4)112 b(Creating)38 +b(a)f(Library)515 3836 y Fq(The)d(librarian)g(program)e(is)j(called)f +Fm(ar)g Fq(\(for)h("arc)n(hiv)n(er"\))c(and)k(is)f(found)h(in)g(the)g +(GNU)515 3936 y(Bin)n(utils)24 b(pro)5 b(ject.)36 b(This)24 +b(program)f(will)i(ha)n(v)n(e)e(b)r(een)i(built)g(for)g(the)g(A)-9 +b(VR)25 b(target)e(and)i(will)515 4035 y(therefore)h(b)r(e)i(named)g +Fm(avr-ar)p Fq(.)515 4182 y(The)j(job)g(of)f(the)i(librarian)d(program) +g(is)i(simple:)43 b(aggregate)28 b(a)j(list)g(of)g(ob)5 +b(ject)30 b(mo)r(dules)515 4282 y(in)n(to)k(a)g(single)g(library)f +(\(arc)n(hiv)n(e\))h(and)g(create)g(an)g(index)g(for)g(the)h(link)n(er) +f(to)g(use.)58 b(The)515 4381 y(name)35 b(that)i(y)n(ou)e(create)g(for) +g(the)h(library)f(\034lename)h(m)n(ust)g(follo)n(w)f(a)g(sp)r(eci\034c) +h(pattern:)515 4481 y(lib)p Fl(name)6 b Fq(.a.)47 b(The)30 +b Fl(name)38 b Fq(part)30 b(is)h(the)g(unique)g(part)f(of)h(the)g +(\034lename)g(that)g(y)n(ou)f(create.)515 4581 y(It)i(mak)n(es)g(it)h +(easier)e(if)i(the)f Fl(name)39 b Fq(part)32 b(relates)f(to)i(what)f +(the)h(library)e(is)h(ab)r(out.)51 b(This)515 4680 y +Fl(name)31 b Fq(part)25 b(m)n(ust)g(b)r(e)g(pre\034xed)f(b)n(y)h +("lib",)g(and)g(it)g(m)n(ust)g(ha)n(v)n(e)f(a)g(\034le)h(extension)g +(of)f(.a,)i(for)515 4780 y("arc)n(hiv)n(e".)33 b(The)25 +b(reason)e(for)i(the)g(sp)r(ecial)g(form)f(of)h(the)h(\034lename)e(is)h +(for)g(ho)n(w)f(the)h(library)515 4880 y(gets)i(used)g(b)n(y)h(the)g +(to)r(olc)n(hain,)e(as)h(w)n(e)g(will)h(see)f(later)g(on.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 52 68 +TeXDict begin 52 67 bop 515 203 a Fs(8.5)94 b(Using)31 +b(a)i(Library)1892 b(52)p 515 236 2865 4 v 506 497 a(Note:)676 +647 y Fq(The)24 b(\034lename)f(is)h(case-sensitiv)n(e.)33 +b(Use)24 b(a)f(lo)n(w)n(ercase)e("lib")i(pre\034x,)h(and)f(a)h(lo)n(w)n +(ercase)676 746 y(".a")i(as)h(the)h(\034le)g(extension.)515 +973 y(The)f(command)g(line)h(is)g(fairly)f(simple:)515 +1178 y Fj(avr-ar)37 b(rcs)f()g()515 1404 y Fq(The)27 b Fm(r)h Fq(command)f(switc)n(h)g(tells) +h(the)g(program)e(to)h(insert)g(the)h(ob)5 b(ject)28 +b(mo)r(dules)f(in)n(to)h(the)515 1504 y(arc)n(hiv)n(e)36 +b(with)j(replacemen)n(t.)67 b(The)39 b Fm(c)e Fq(command)h(line)g +(switc)n(h)g(tells)h(the)f(program)e(to)515 1604 y(create)29 +b(the)h(arc)n(hiv)n(e.)42 b(And)31 b(the)f Fm(s)g Fq(command)f(line)h +(switc)n(h)g(tells)g(the)h(program)c(to)j(write)515 1703 +y(an)24 b(ob)5 b(ject-\034le)23 b(index)i(in)n(to)f(the)g(arc)n(hiv)n +(e,)f(or)h(up)r(date)g(an)g(existing)g(one.)35 b(This)24 +b(last)g(switc)n(h)515 1803 y(is)j(v)n(ery)g(imp)r(ortan)n(t)g(as)g(it) +h(helps)f(the)h(link)n(er)f(to)g(\034nd)h(what)g(it)g(needs)f(to)h(do)f +(its)h(job.)506 2011 y Fs(Note:)676 2161 y Fq(The)20 +b(command)g(line)g(switc)n(hes)f(are)g(case)g(sensitiv)n(e!)34 +b(There)20 b(are)f(upp)r(ercase)g(switc)n(hes)676 2260 +y(that)28 b(ha)n(v)n(e)e(completely)i(di\033eren)n(t)f(actions.)676 +2360 y(MFile)i(and)g(the)g(WinA)-9 b(VR)30 b(distribution)e(con)n(tain) +g(a)h(Mak)n(e\034le)e(T)-7 b(emplate)29 b(that)g(in-)676 +2460 y(cludes)35 b(the)g(necessary)f(command)g(lines)h(to)g(build)h(a)e +(library)-7 b(.)58 b(Y)-7 b(ou)35 b(will)g(ha)n(v)n(e)f(to)676 +2559 y(man)n(ually)d(mo)r(dify)g(the)h(template)g(to)f(switc)n(h)g(it)h +(o)n(v)n(er)d(to)j(build)f(a)g(library)f(instead)676 +2659 y(of)e(an)f(application.)515 2885 y(See)g(the)h(GNU)h(Bin)n(utils) +e(man)n(ual)g(for)g(more)g(information)g(on)g(the)h Fm(ar)f +Fq(program.)515 3164 y Fn(8.5)112 b(Using)38 b(a)g(Library)515 +3365 y Fq(T)-7 b(o)33 b(use)h(a)g(library)-7 b(,)34 b(use)g(the)g +Fm(-l)g Fq(switc)n(h)f(on)h(y)n(our)f(link)n(er)g(command)g(line.)57 +b(The)34 b(string)515 3464 y(immediately)26 b(follo)n(wing)e(the)i +Fm(-l)g Fq(is)f(the)h(unique)g(part)g(of)f(the)i(library)d(\034lename)i +(that)g(the)515 3564 y(link)n(er)h(will)g(link)h(in.)37 +b(F)-7 b(or)27 b(example,)g(if)h(y)n(ou)f(use:)515 3769 +y Fj(-lm)515 3996 y Fq(this)h(will)f(expand)h(to)f(the)h(library)e +(\034lename:)515 4201 y Fj(libm.a)515 4428 y Fq(whic)n(h)h(happ)r(ens)h +(to)f(b)r(e)h(the)g(math)g(library)e(included)i(in)g(a)n(vr-lib)r(c.) +515 4574 y(If)g(y)n(ou)f(use)g(this)h(on)f(y)n(our)f(link)n(er)h +(command)g(line:)515 4780 y Fj(-lprintf_flt)515 5006 +y Fq(then)h(the)g(link)n(er)f(will)g(lo)r(ok)g(for)g(a)g(library)g +(called:)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 53 69 +TeXDict begin 53 68 bop 515 203 a Fs(9)31 b(Benc)m(hmarks)2180 +b(53)p 515 236 2865 4 v 515 523 a Fj(libprintf_flt.a)515 +753 y Fq(This)27 b(is)h(wh)n(y)f(naming)g(y)n(our)f(library)h(is)g(so)g +(imp)r(ortan)n(t)g(when)h(y)n(ou)f(create)f(it!)515 900 +y(The)k(link)n(er)e(will)i(searc)n(h)f(libraries)f(in)i(the)g(order)e +(that)i(they)g(app)r(ear)f(on)g(the)i(command)515 999 +y(line.)37 b(Whic)n(hev)n(er)27 b(function)i(is)e(found)h(\034rst)g +(that)g(matc)n(hes)f(the)h(unde\034ned)h(reference,)e(it)515 +1099 y(will)h(b)r(e)f(link)n(ed)h(in.)515 1246 y(There)d(are)g(also)h +(command)f(line)i(switc)n(hes)e(that)i(tell)f(GCC)g(whic)n(h)h +(directory)d(to)i(lo)r(ok)g(in)515 1346 y(\()p Fm(-L)p +Fq(\))h(for)g(the)h(libraries)e(that)i(are)f(sp)r(eci\034ed)g(to)h(b)r +(e)g(link)n(e)f(in)h(with)g Fm(-l)p Fq(.)515 1492 y(See)38 +b(the)h(GNU)g(Bin)n(utils)f(man)n(ual)f(for)h(more)g(information)f(on)h +(the)h(GNU)g(link)n(er)e(\(ld\))515 1592 y(program.)515 +1914 y Fr(9)131 b(Benc)l(hmarks)515 2143 y Fq(The)27 +b(results)f(b)r(elo)n(w)h(can)f(only)h(giv)n(e)f(a)g(rough)g(estimate)h +(of)f(the)i(resources)d(necessary)g(for)515 2242 y(using)33 +b(certain)h(library)f(functions.)57 b(There)33 b(is)h(a)g(n)n(um)n(b)r +(er)g(of)g(factors)f(whic)n(h)h(can)g(b)r(oth)515 2342 +y(increase)26 b(or)h(reduce)g(the)h(e\033ort)f(required:)639 +2572 y Fk(\210)41 b Fq(Exp)r(enses)28 b(for)f(preparation)f(of)h(op)r +(erands)g(and)g(their)h(stac)n(k)e(are)h(not)g(considered.)639 +2802 y Fk(\210)41 b Fq(In)29 b(the)f(table,)g(the)h(size)e(includes)i +(all)e(additional)h(functions)g(\(for)g(example,)g(func-)722 +2902 y(tion)g(to)f(m)n(ultiply)h(t)n(w)n(o)f(in)n(tegers\))g(but)h +(they)g(are)e(only)h(link)n(ed)h(from)f(the)h(library)-7 +b(.)639 3131 y Fk(\210)41 b Fq(Exp)r(enses)h(of)f(time)h(of)f(p)r +(erformance)f(of)h(some)g(functions)g(essen)n(tially)f(dep)r(end)722 +3231 y(on)c(parameters)e(of)i(a)f(call,)i(for)f(example,)h +Fs(qsort\(\))g Fq(\(p.)14 b(195\))34 b(is)i(recursiv)n(e,)g(and)722 +3331 y Fs(sprin)m(tf\(\))28 b Fq(\(p.)14 b(181\))27 b(receiv)n(es)f +(parameters)g(in)i(a)f(stac)n(k.)639 3561 y Fk(\210)41 +b Fq(Di\033eren)n(t)29 b(v)n(ersions)d(of)i(the)g(compiler)f(can)h(giv) +n(e)f(a)g(signi\034can)n(t)g(di\033erence)h(in)g(co)r(de)722 +3660 y(size)35 b(and)h(execution)f(time.)60 b(F)-7 b(or)35 +b(example,)i(the)f Fs(dtostre\(\))f Fq(\(p.)14 b(192\))35 +b(function,)722 3760 y(compiled)d(with)h(a)n(vr-gcc)d(3.4.6,)i +(requires)e(930)h(b)n(ytes.)50 b(After)32 b(transition)g(to)g(a)n(vr-) +722 3859 y(gcc)27 b(4.2.3,)g(the)h(size)f(b)r(ecome)g(1088)f(b)n(ytes.) +515 4139 y Fn(9.1)112 b(A)37 b(few)h(of)f(lib)s(c)h(functions.)515 +4340 y Fq(A)-9 b(vr-gcc)26 b(v)n(ersion)g(is)h(4.2.3)515 +4486 y(The)f(size)h(of)f(function)h(is)g(giv)n(en)f(in)h(view)f(of)h +(all)f(pic)n(k)n(ed)g(up)h(functions.)37 b(By)26 b(default)h(A)-9 +b(vr-)515 4586 y(lib)r(c)32 b(is)h(compiled)f(with)g +Fm(-mcall-prologues)26 b Fq(option.)50 b(In)33 b(brac)n(k)n(ets)d(the)j +(size)f(without)515 4686 y(taking)27 b(in)n(to)h(accoun)n(t)f(mo)r +(dules)g(of)h(a)g(prologue)e(and)i(an)f(epilogue)g(is)h(resulted.)37 +b(Both)28 b(of)515 4785 y(the)g(size)f(can)g(coincide,)g(if)h(function) +h(do)r(es)e(not)g(cause)g(a)g(prologue/epilogue.)p 515 +5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 54 70 +TeXDict begin 54 69 bop 515 203 a Fs(9.1)94 b(A)32 b(few)g(of)g(lib)s +(c)e(functions.)1576 b(54)p 515 236 2865 4 v 515 443 +V 515 522 4 79 v 568 499 a Fg(F)-7 b(unction)p 1087 522 +V 261 w(Units)p 1659 522 V 378 w(A)e(vr2)p 2231 522 V +402 w(A)g(vr25)p 2803 522 V 362 w(A)g(vr4)p 3376 522 +V 515 526 2865 4 v 515 762 4 237 v 568 581 a Ff(atoi)24 +b(\("12345"\))p 1087 762 V 132 w(Flash)f(b)n(ytes)1140 +660 y(Stac)n(k)i(b)n(ytes)1140 738 y(MCU)e(clo)r(c)n(ks)p +1659 762 V 1712 581 a(82)h(\(82\))1712 660 y(2)1712 738 +y(155)p 2231 762 V 2284 581 a(78)h(\(78\))p 2803 762 +V 354 w(74)f(\(74\))2857 660 y(2)2857 738 y(149)p 3376 +762 V 515 765 2865 4 v 515 1002 4 237 v 568 821 a(atol)g(\("12345"\))p +1087 1002 V 132 w(Flash)f(b)n(ytes)1140 900 y(Stac)n(k)i(b)n(ytes)1140 +978 y(MCU)e(clo)r(c)n(ks)p 1659 1002 V 1712 821 a(122)i(\(122\))1712 +900 y(2)1712 978 y(221)p 2231 1002 V 2284 821 a(118)g(\(118\))p +2803 1002 V 284 w(118)f(\(118\))2857 900 y(2)2857 978 +y(219)p 3376 1002 V 515 1005 2865 4 v 515 1242 4 237 +v 568 1061 a(dtostre)568 1139 y(\(1.2345,)g(s,)f(6,)568 +1218 y(0\))p 1087 1242 V 1140 1061 a(Flash)g(b)n(ytes)1140 +1139 y(Stac)n(k)i(b)n(ytes)1140 1218 y(MCU)e(clo)r(c)n(ks)p +1659 1242 V 1712 1061 a(1184)i(\(1072\))1712 1139 y(17)1712 +1218 y(1313)p 2231 1242 V 2284 1061 a(1088)g(\(978\))p +2803 1242 V 249 w(1088)f(\(978\))2857 1139 y(17)2857 +1218 y(1152)p 3376 1242 V 515 1245 2865 4 v 515 1482 +4 237 v 568 1301 a(dtostrf)568 1379 y(\(1.2345,)g(15,)g(6,)568 +1458 y(s\))p 1087 1482 V 1140 1301 a(Flash)f(b)n(ytes)1140 +1379 y(Stac)n(k)i(b)n(ytes)1140 1458 y(MCU)e(clo)r(c)n(ks)p +1659 1482 V 1712 1301 a(1676)i(\(1564\))1712 1379 y(36)1712 +1458 y(1608)p 2231 1482 V 2284 1301 a(1548)g(\(1438\))p +2803 1482 V 214 w(1548)f(\(1438\))2857 1379 y(36)2857 +1458 y(1443)p 3376 1482 V 515 1485 2865 4 v 515 1722 +4 237 v 568 1540 a(itoa)g(\(12345,)h(s,)568 1619 y(10\))p +1087 1722 V 1140 1540 a(Flash)e(b)n(ytes)1140 1619 y(Stac)n(k)i(b)n +(ytes)1140 1698 y(MCU)e(clo)r(c)n(ks)p 1659 1722 V 1712 +1540 a(150)i(\(150\))1712 1619 y(4)1712 1698 y(1172)p +2231 1722 V 2284 1540 a(134)g(\(134\))p 2803 1722 V 284 +w(134)f(\(134\))2857 1619 y(4)2857 1698 y(1152)p 3376 +1722 V 515 1725 2865 4 v 515 1962 4 237 v 568 1780 a(ltoa)g(\(12345L,) +568 1859 y(s,)f(10\))p 1087 1962 V 1140 1780 a(Flash)g(b)n(ytes)1140 +1859 y(Stac)n(k)i(b)n(ytes)1140 1938 y(MCU)e(clo)r(c)n(ks)p +1659 1962 V 1712 1780 a(220)i(\(220\))1712 1859 y(9)1712 +1938 y(3174)p 2231 1962 V 2284 1780 a(200)g(\(200\))p +2803 1962 V 284 w(200)f(\(200\))2857 1859 y(9)2857 1938 +y(3136)p 3376 1962 V 515 1965 2865 4 v 515 2202 4 237 +v 568 2020 a(mallo)r(c)f(\(1\))p 1087 2202 V 258 w(Flash)g(b)n(ytes) +1140 2099 y(Stac)n(k)i(b)n(ytes)1140 2178 y(MCU)e(clo)r(c)n(ks)p +1659 2202 V 1712 2020 a(554)i(\(554\))1712 2099 y(4)1712 +2178 y(196)p 2231 2202 V 2284 2020 a(506)g(\(506\))p +2803 2202 V 284 w(506)f(\(506\))2857 2099 y(4)2857 2178 +y(178)p 3376 2202 V 515 2205 2865 4 v 515 2442 4 237 +v 568 2260 a(reallo)r(c)g(\(\(v)n(oid)568 2339 y Fe(\003)p +Ff(\)0,)g(1\))p 1087 2442 V 1140 2260 a(Flash)f(b)n(ytes)1140 +2339 y(Stac)n(k)i(b)n(ytes)1140 2418 y(MCU)e(clo)r(c)n(ks)p +1659 2442 V 1712 2260 a(1152)i(\(1040\))1712 2339 y(20)1712 +2418 y(303)p 2231 2442 V 2284 2260 a(1042)g(\(932\))p +2803 2442 V 249 w(1042)f(\(932\))2857 2339 y(20)2857 +2418 y(280)p 3376 2442 V 515 2445 2865 4 v 515 2682 4 +237 v 568 2500 a(qsort)h(\(s,)568 2579 y(sizeof\(s\),)f(1,)568 +2658 y(cmp\))p 1087 2682 V 1140 2500 a(Flash)f(b)n(ytes)1140 +2579 y(Stac)n(k)i(b)n(ytes)1140 2658 y(MCU)e(clo)r(c)n(ks)p +1659 2682 V 1712 2500 a(1242)i(\(1130\))1712 2579 y(38)1712 +2658 y(20914)p 2231 2682 V 2284 2500 a(990)g(\(880\))p +2803 2682 V 284 w(1008)f(\(898\))2857 2579 y(38)2857 +2658 y(16678)p 3376 2682 V 515 2685 2865 4 v 515 2922 +4 237 v 568 2740 a(sprin)n(tf_min)d(\(s,)568 2819 y("\045d",)j(12345\)) +p 1087 2922 V 1140 2740 a(Flash)f(b)n(ytes)1140 2819 +y(Stac)n(k)i(b)n(ytes)1140 2898 y(MCU)e(clo)r(c)n(ks)p +1659 2922 V 1712 2740 a(1216)i(\(1104\))1712 2819 y(59)1712 +2898 y(1846)p 2231 2922 V 2284 2740 a(1090)g(\(980\))p +2803 2922 V 249 w(1086)f(\(976\))2857 2819 y(59)2857 +2898 y(1711)p 3376 2922 V 515 2925 2865 4 v 515 3161 +4 237 v 568 2980 a(sprin)n(tf)g(\(s,)568 3059 y("\045d",)g(12345\))p +1087 3161 V 1140 2980 a(Flash)f(b)n(ytes)1140 3059 y(Stac)n(k)i(b)n +(ytes)1140 3138 y(MCU)e(clo)r(c)n(ks)p 1659 3161 V 1712 +2980 a(1674)i(\(1562\))1712 3059 y(58)1712 3138 y(1610)p +2231 3161 V 2284 2980 a(1542)g(\(1432\))p 2803 3161 V +214 w(1498)f(\(1388\))2857 3059 y(58)2857 3138 y(1528)p +3376 3161 V 515 3165 2865 4 v 515 3401 4 237 v 568 3220 +a(sprin)n(tf_\035t)g(\(s,)568 3299 y("\045e",)g(1.2345\))p +1087 3401 V 1140 3220 a(Flash)f(b)n(ytes)1140 3299 y(Stac)n(k)i(b)n +(ytes)1140 3378 y(MCU)e(clo)r(c)n(ks)p 1659 3401 V 1712 +3220 a(3334)i(\(3222\))1712 3299 y(66)1712 3378 y(2513)p +2231 3401 V 2284 3220 a(3084)g(\(2974\))p 2803 3401 V +214 w(3040)f(\(2930\))2857 3299 y(66)2857 3378 y(2297)p +3376 3401 V 515 3405 2865 4 v 515 3641 4 237 v 568 3460 +a(sscanf_min)568 3539 y(\("12345",)568 3618 y("\045d",)g(&i\))p +1087 3641 V 1140 3460 a(Flash)f(b)n(ytes)1140 3539 y(Stac)n(k)i(b)n +(ytes)1140 3618 y(MCU)e(clo)r(c)n(ks)p 1659 3641 V 1712 +3460 a(1540)i(\(1428\))1712 3539 y(55)1712 3618 y(1339)p +2231 3641 V 2284 3460 a(1354)g(\(1244\))p 2803 3641 V +214 w(1354)f(\(1244\))2857 3539 y(55)2857 3618 y(1240)p +3376 3641 V 515 3645 2865 4 v 515 3881 4 237 v 568 3700 +a(sscanf)568 3779 y(\("12345",)568 3858 y("\045d",)g(&i\))p +1087 3881 V 1140 3700 a(Flash)f(b)n(ytes)1140 3779 y(Stac)n(k)i(b)n +(ytes)1140 3858 y(MCU)e(clo)r(c)n(ks)p 1659 3881 V 1712 +3700 a(1950)i(\(1838\))1712 3779 y(53)1712 3858 y(1334)p +2231 3881 V 2284 3700 a(1704)g(\(1594\))p 2803 3881 V +214 w(1704)f(\(1594\))2857 3779 y(53)2857 3858 y(1235)p +3376 3881 V 515 3885 2865 4 v 515 4121 4 237 v 568 3940 +a(sscanf)568 4019 y(\("p)r(oin)n(t,color",)568 4098 y("\045[a-z]",)f +(s\))p 1087 4121 V 1140 3940 a(Flash)g(b)n(ytes)1140 +4019 y(Stac)n(k)i(b)n(ytes)1140 4098 y(MCU)e(clo)r(c)n(ks)p +1659 4121 V 1712 3940 a(1950)i(\(1838\))1712 4019 y(87)1712 +4098 y(2878)p 2231 4121 V 2284 3940 a(1704)g(\(1594\))p +2803 4121 V 214 w(1704)f(\(1594\))2857 4019 y(87)2857 +4098 y(2718)p 3376 4121 V 515 4125 2865 4 v 515 4361 +4 237 v 568 4180 a(sscanf_\035t)568 4259 y(\("1.2345",)568 +4337 y("\045e",)g(&x\))p 1087 4361 V 1140 4180 a(Flash)f(b)n(ytes)1140 +4259 y(Stac)n(k)i(b)n(ytes)1140 4337 y(MCU)e(clo)r(c)n(ks)p +1659 4361 V 1712 4180 a(3298)i(\(3186\))1712 4259 y(63)1712 +4337 y(2187)p 2231 4361 V 2284 4180 a(2934)g(\(2824\))p +2803 4361 V 214 w(2918)f(\(2808\))2857 4259 y(63)2857 +4337 y(1833)p 3376 4361 V 515 4364 2865 4 v 515 4601 +4 237 v 568 4420 a(strto)r(d)568 4499 y(\("1.2345",)h(&p\))p +1087 4601 V 1140 4420 a(Flash)e(b)n(ytes)1140 4499 y(Stac)n(k)i(b)n +(ytes)1140 4577 y(MCU)e(clo)r(c)n(ks)p 1659 4601 V 1712 +4420 a(1570)i(\(1458\))1712 4499 y(22)1712 4577 y(1237)p +2231 4601 V 2284 4420 a(1472)g(\(1362\))p 2803 4601 V +214 w(1456)f(\(1346\))2857 4499 y(22)2857 4577 y(971)p +3376 4601 V 515 4604 2865 4 v 515 4841 4 237 v 568 4660 +a(strtol)568 4738 y(\("12345",)h(&p,)568 4817 y(0\))p +1087 4841 V 1140 4660 a(Flash)e(b)n(ytes)1140 4738 y(Stac)n(k)i(b)n +(ytes)1140 4817 y(MCU)e(clo)r(c)n(ks)p 1659 4841 V 1712 +4660 a(942)i(\(830\))1712 4738 y(29)1712 4817 y(1074)p +2231 4841 V 2284 4660 a(874)g(\(764\))p 2803 4841 V 284 +w(808)f(\(698\))2857 4738 y(21)2857 4817 y(722)p 3376 +4841 V 515 4844 2865 4 v 515 5179 V 515 5255 a Fp(Generated)h(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 55 71 +TeXDict begin 55 70 bop 515 203 a Fs(9.2)94 b(Math)32 +b(functions.)1886 b(55)p 515 236 2865 4 v 515 523 a Fn(9.2)112 +b(Math)38 b(functions.)515 724 y Fq(The)c(table)f(con)n(tains)g(the)h +(n)n(um)n(b)r(er)f(of)h(MCU)g(clo)r(c)n(ks)f(to)h(calculate)f(a)g +(function)h(with)g(a)515 823 y(giv)n(en)25 b(argumen)n(t\(s\).)36 +b(The)26 b(main)g(reason)f(of)h(a)g(big)g(di\033erence)g(b)r(et)n(w)n +(een)g(A)-9 b(vr2)25 b(and)h(A)-9 b(vr4)515 923 y(is)27 +b(a)g(hardw)n(are)f(m)n(ultiplication.)p 515 998 V 515 +1097 4 100 v 568 1068 a Fs(F)-8 b(unction)p 1468 1097 +V 589 w(A)d(vr2)p 2422 1097 V 755 w(A)g(vr4)p 3376 1097 +V 515 1101 2865 4 v 515 1300 4 200 v 568 1170 a Fq(__addsf3)26 +b(\(1.234,)568 1270 y(5.678\))p 1468 1300 V 1522 1170 +a(113)p 2422 1300 V 827 w(108)p 3376 1300 V 515 1303 +2865 4 v 515 1503 4 200 v 568 1373 a(__m)n(ulsf3)g(\(1.234,)568 +1473 y(5.678\))p 1468 1503 V 1522 1373 a(375)p 2422 1503 +V 827 w(138)p 3376 1503 V 515 1506 2865 4 v 515 1705 +4 200 v 568 1576 a(__divsf3)g(\(1.234,)568 1675 y(5.678\))p +1468 1705 V 1522 1576 a(466)p 2422 1705 V 827 w(465)p +3376 1705 V 515 1708 2865 4 v 515 1808 4 100 v 568 1778 +a(acos)g(\(0.54321\))p 1468 1808 V 435 w(4648)p 2422 +1808 V 785 w(2689)p 3376 1808 V 515 1811 2865 4 v 515 +1911 4 100 v 568 1881 a(asin)h(\(0.54321\))p 1468 1911 +V 444 w(4754)p 2422 1911 V 785 w(2790)p 3376 1911 V 515 +1914 2865 4 v 515 2014 4 100 v 568 1984 a(atan)g(\(0.54321\))p +1468 2014 V 426 w(4710)p 2422 2014 V 785 w(2271)p 3376 +2014 V 515 2017 2865 4 v 515 2117 4 100 v 568 2087 a(atan2)f(\(1.234,)g +(5.678\))p 1468 2117 V 229 w(5270)p 2422 2117 V 785 w(2857)p +3376 2117 V 515 2120 2865 4 v 515 2220 4 100 v 568 2190 +a(ceil)h(\(1.2345\))p 1468 2220 V 510 w(177)p 2422 2220 +V 827 w(177)p 3376 2220 V 515 2223 2865 4 v 515 2323 +4 100 v 568 2293 a(cos)g(\(1.2345\))p 1468 2323 V 518 +w(3381)p 2422 2323 V 785 w(1665)p 3376 2323 V 515 2326 +2865 4 v 515 2426 4 100 v 568 2396 a(cosh)g(\(1.2345\))p +1468 2426 V 472 w(4922)p 2422 2426 V 785 w(2979)p 3376 +2426 V 515 2429 2865 4 v 515 2529 4 100 v 568 2499 a(exp)g(\(1.2345\))p +1468 2529 V 503 w(4708)p 2422 2529 V 785 w(2765)p 3376 +2529 V 515 2532 2865 4 v 515 2632 4 100 v 568 2602 a(fdim)h(\(5.678,)e +(1.234\))p 1468 2632 V 268 w(111)p 2422 2632 V 827 w(111)p +3376 2632 V 515 2635 2865 4 v 515 2735 4 100 v 568 2705 +a(\035o)r(or)g(\(1.2345\))p 1468 2735 V 466 w(180)p 2422 +2735 V 827 w(180)p 3376 2735 V 515 2738 2865 4 v 515 +2838 4 100 v 568 2808 a(fmax)h(\(1.234,)f(5.678\))p 1468 +2838 V 252 w(39)p 2422 2838 V 869 w(37)p 3376 2838 V +515 2841 2865 4 v 515 2940 4 100 v 568 2911 a(fmin)i(\(1.234,)e +(5.678\))p 1468 2940 V 268 w(35)p 2422 2940 V 869 w(35)p +3376 2940 V 515 2944 2865 4 v 515 3043 4 100 v 568 3014 +a(fmo)r(d)i(\(5.678,)e(1.234\))p 1468 3043 V 247 w(132)p +2422 3043 V 827 w(132)p 3376 3043 V 515 3047 2865 4 v +515 3146 4 100 v 568 3116 a(frexp)h(\(1.2345,)f(0\))p +1468 3146 V 354 w(37)p 2422 3146 V 869 w(36)p 3376 3146 +V 515 3150 2865 4 v 515 3249 4 100 v 568 3219 a(h)n(yp)r(ot)h(\(1.234,) +f(5.678\))p 1468 3249 V 222 w(1556)p 2422 3249 V 785 +w(1078)p 3376 3249 V 515 3253 2865 4 v 515 3352 4 100 +v 568 3322 a(ldexp)i(\(1.2345,)d(6\))p 1468 3352 V 343 +w(42)p 2422 3352 V 869 w(42)p 3376 3352 V 515 3356 2865 +4 v 515 3455 4 100 v 568 3425 a(log)i(\(1.2345\))p 1468 +3455 V 523 w(4142)p 2422 3455 V 785 w(2134)p 3376 3455 +V 515 3459 2865 4 v 515 3558 4 100 v 568 3528 a(log10)f(\(1.2345\))p +1468 3558 V 440 w(4498)p 2422 3558 V 785 w(2260)p 3376 +3558 V 515 3561 2865 4 v 515 3661 4 100 v 568 3631 a(mo)r(df)i +(\(1.2345,)e(0\))p 1468 3661 V 354 w(433)p 2422 3661 +V 827 w(429)p 3376 3661 V 515 3664 2865 4 v 515 3764 +4 100 v 568 3734 a(p)r(o)n(w)h(\(1.234,)f(5.678\))p 1468 +3764 V 284 w(9293)p 2422 3764 V 785 w(5047)p 3376 3764 +V 515 3767 2865 4 v 515 3867 4 100 v 568 3837 a(round)h(\(1.2345\))p +1468 3867 V 417 w(150)p 2422 3867 V 827 w(150)p 3376 +3867 V 515 3870 2865 4 v 515 3970 4 100 v 568 3940 a(sin)g(\(1.2345\))p +1468 3970 V 528 w(3347)p 2422 3970 V 785 w(1647)p 3376 +3970 V 515 3973 2865 4 v 515 4073 4 100 v 568 4043 a(sinh)h(\(1.2345\)) +p 1468 4073 V 481 w(4946)p 2422 4073 V 785 w(3003)p 3376 +4073 V 515 4076 2865 4 v 515 4176 4 100 v 568 4146 a(sqrt)f(\(1.2345\)) +p 1468 4176 V 488 w(709)p 2422 4176 V 827 w(704)p 3376 +4176 V 515 4179 2865 4 v 515 4279 4 100 v 568 4249 a(tan)g(\(1.2345\))p +1468 4279 V 510 w(4375)p 2422 4279 V 785 w(2420)p 3376 +4279 V 515 4282 2865 4 v 515 4382 4 100 v 568 4352 a(tanh)h(\(1.2345\)) +p 1468 4382 V 463 w(5126)p 2422 4382 V 785 w(3173)p 3376 +4382 V 515 4385 2865 4 v 515 4485 4 100 v 568 4455 a(trunc)f +(\(1.2345\))p 1468 4485 V 436 w(178)p 2422 4485 V 827 +w(178)p 3376 4485 V 515 4488 2865 4 v 515 5179 V 515 +5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 56 72 +TeXDict begin 56 71 bop 515 203 a Fs(10)31 b(P)m(orting)h(F)-8 +b(rom)31 b(IAR)h(to)g(A)-11 b(VR)32 b(GCC)1267 b(56)p +515 236 2865 4 v 515 523 a Fr(10)131 b(P)l(orting)43 +b(F)-11 b(rom)43 b(IAR)i(to)e(A)-15 b(VR)45 b(GCC)515 +769 y Fn(10.1)112 b(In)m(tro)s(duction)515 969 y Fq(C)31 +b(language)e(w)n(as)h(designed)h(to)g(b)r(e)g(a)g(p)r(ortable)f +(language.)46 b(There)30 b(t)n(w)n(o)g(main)h(t)n(yp)r(es)g(of)515 +1069 y(p)r(orting)19 b(activities:)32 b(p)r(orting)19 +b(an)h(application)e(to)i(a)f(di\033eren)n(t)h(platform)f(\(OS)g +(and/or)f(pro-)515 1168 y(cessor\),)25 b(and)h(p)r(orting)g(to)h(a)f +(di\033eren)n(t)g(compiler.)36 b(P)n(orting)26 b(to)g(a)g(di\033eren)n +(t)h(compiler)e(can)515 1268 y(b)r(e)i(exacerbated)e(when)i(the)h +(application)e(is)h(an)f(em)n(b)r(edded)i(system.)36 +b(F)-7 b(or)26 b(example,)h(the)515 1368 y(C)j(language)f(Standard,)h +(strangely)-7 b(,)30 b(do)r(es)g(not)g(sp)r(ecify)h(a)f(standard)f(for) +h(declaring)f(and)515 1467 y(de\034ning)k(In)n(terrupt)g(Service)g +(Routines)g(\(ISRs\).)55 b(Di\033eren)n(t)34 b(compilers)f(ha)n(v)n(e)f +(di\033eren)n(t)515 1567 y(w)n(a)n(ys)23 b(of)i(de\034ning)g +(registers,)e(some)h(of)h(whic)n(h)g(use)g(non-standard)e(language)g +(constructs.)515 1714 y(This)j(c)n(hapter)f(describ)r(es)h(some)g +(metho)r(ds)g(and)h(p)r(oin)n(ters)e(on)h(p)r(orting)g(an)g(A)-9 +b(VR)27 b(applica-)515 1813 y(tion)e(built)h(with)f(the)g(IAR)h +(compiler)e(to)h(the)h(GNU)f(to)r(olc)n(hain)f(\(A)-9 +b(VR)26 b(GCC\).)g(Note)f(that)515 1913 y(this)j(ma)n(y)e(not)i(b)r(e)g +(an)f(exhaustiv)n(e)g(list.)515 2193 y Fn(10.2)112 b(Registers)515 +2393 y Fq(IO)31 b(header)g(\034les)h(con)n(tain)f(iden)n(ti\034ers)g +(for)g(all)h(the)g(register)e(names)h(and)h(bit)g(names)g(for)515 +2493 y(a)f(particular)f(pro)r(cessor.)47 b(IAR)32 b(has)f(individual)h +(header)e(\034les)i(for)f(eac)n(h)g(pro)r(cessor)e(and)515 +2592 y(they)e(m)n(ust)h(b)r(e)f(included)h(when)g(registers)d(are)h(b)r +(eing)i(used)f(in)h(the)f(co)r(de.)37 b(F)-7 b(or)27 +b(example:)550 2802 y Fj(#include)37 b()506 +2997 y Fs(Note:)676 3147 y Fq(IAR)f(do)r(es)f(not)g(alw)n(a)n(ys)f(use) +h(the)h(same)e(register)g(names)h(or)g(bit)h(names)e(that)i(are)676 +3246 y(used)28 b(in)f(the)h(A)-9 b(VR)28 b(datasheet.)515 +3476 y(A)-9 b(VR)28 b(GCC)g(also)f(has)g(individual)h(IO)g(header)f +(\034les)h(for)f(eac)n(h)g(pro)r(cessor.)36 b(Ho)n(w)n(ev)n(er,)26 +b(the)515 3576 y(actual)21 b(pro)r(cessor)f(t)n(yp)r(e)i(is)g(sp)r +(eci\034ed)h(as)e(a)h(command)g(line)g(\035ag)f(to)h(the)h(compiler.)34 +b(\(Using)515 3676 y(the)c Fm(-mmcu=)p Fi(processor)38 +b Fq(\035ag.\))44 b(This)31 b(is)f(usually)f(done)h(in)g(the)h(Mak)n +(e\034le.)43 b(This)31 b(allo)n(ws)515 3775 y(y)n(ou)c(to)g(sp)r(ecify) +h(only)f(a)g(single)g(header)g(\034le)h(for)f(an)n(y)f(pro)r(cessor)g +(t)n(yp)r(e:)550 3984 y Fj(#include)37 b()506 +4186 y Fs(Note:)676 4335 y Fq(The)23 b(forw)n(ard)e(slash)h(in)i(the)f +Fo(<)p Fs(a)m(vr/io.h)f Fq(\(p.)14 b(366\))p Fo(>)22 +b Fq(\034le)h(name)g(that)g(is)g(used)g(to)g(sep-)676 +4435 y(arate)h(sub)r(directories)g(can)h(b)r(e)g(used)h(on)f(Windo)n +(ws)f(distributions)h(of)g(the)h(to)r(olc)n(hain)676 +4534 y(and)i(is)f(the)h(recommended)f(metho)r(d)h(of)f(including)h +(this)g(\034le.)515 4764 y(The)22 b(compiler)f(kno)n(ws)g(the)h(pro)r +(cessor)e(t)n(yp)r(e)i(and)g(through)f(the)i(single)e(header)g(\034le)h +(ab)r(o)n(v)n(e,)515 4864 y(it)34 b(can)f(pull)i(in)f(and)g(include)g +(the)g(correct)e(individual)i(IO)g(header)f(\034le.)56 +b(This)33 b(has)h(the)515 4964 y(adv)-5 b(an)n(tage)32 +b(that)i(y)n(ou)g(only)f(ha)n(v)n(e)g(to)h(sp)r(ecify)g(one)g(generic)f +(header)g(\034le,)i(and)f(y)n(ou)f(can)p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 57 73 +TeXDict begin 57 72 bop 515 203 a Fs(10.3)94 b(In)m(terrupt)33 +b(Service)f(Routines)e(\(ISRs\))1077 b(57)p 515 236 2865 +4 v 515 523 a Fq(easily)22 b(p)r(ort)i(y)n(our)e(application)g(to)i +(another)e(pro)r(cessor)f(t)n(yp)r(e)j(without)g(ha)n(ving)e(to)h(c)n +(hange)515 623 y(ev)n(ery)j(\034le)i(to)f(include)h(the)g(new)g(IO)f +(header)g(\034le.)515 770 y(The)21 b(A)-9 b(VR)21 b(to)r(olc)n(hain)f +(tries)g(to)g(adhere)g(to)h(the)g(exact)f(names)g(of)h(the)g(registers) +e(and)i(names)515 869 y(of)39 b(the)g(bits)g(found)g(in)g(the)h(A)-9 +b(VR)39 b(datasheet.)70 b(There)38 b(ma)n(y)g(b)r(e)i(some)e(descrep)r +(encies)515 969 y(b)r(et)n(w)n(een)23 b(the)i(register)d(names)h(found) +h(in)g(the)h(IAR)f(IO)f(header)g(\034les)h(and)g(the)g(A)-9 +b(VR)24 b(GCC)515 1068 y(IO)j(header)g(\034les.)515 1348 +y Fn(10.3)112 b(In)m(terrupt)37 b(Service)g(Routines)h(\(ISRs\))515 +1549 y Fq(As)d(men)n(tioned)h(ab)r(o)n(v)n(e,)g(the)g(C)g(language)e +(Standard,)j(strangely)-7 b(,)37 b(do)r(es)e(not)h(sp)r(ecify)f(a)515 +1648 y(standard)25 b(w)n(a)n(y)g(of)h(declaring)g(and)g(de\034ning)g +(an)g(ISR.)h(Hence,)g(ev)n(ery)e(compiler)g(seems)h(to)515 +1748 y(ha)n(v)n(e)g(their)i(o)n(wn)f(sp)r(ecial)g(w)n(a)n(y)f(of)i +(doing)f(so.)515 1895 y(IAR)h(declares)e(an)h(ISR)h(lik)n(e)f(so:)515 +2104 y Fj(#pragma)37 b(vector=TIMER0_OVF_vect)515 2183 +y(__interrupt)h(void)e(MotorPWMBottom\(\))515 2262 y({)656 +2340 y(//)g(code)515 2419 y(})515 2649 y Fq(In)27 b(A)-9 +b(VR)29 b(GCC,)e(y)n(ou)g(declare)g(an)g(ISR)h(lik)n(e)f(so:)515 +2858 y Fj(ISR\(PCINT1_vect\))515 2937 y({)656 3016 y(//code)515 +3095 y(})515 3325 y Fq(A)-9 b(VR)24 b(GCC)f(uses)g(the)h +Fm(ISR)e Fq(macro)h(to)g(de\034ne)h(an)f(ISR.)h(This)f(macro)f +(requries)g(the)i(header)515 3424 y(\034le:)515 3634 +y Fj(#include)37 b()515 3863 y Fq(The)23 +b(names)f(of)h(the)h(v)-5 b(arious)22 b(in)n(terrupt)g(v)n(ectors)g +(are)g(found)h(in)h(the)f(individual)g(pro)r(cessor)515 +3963 y(IO)k(header)g(\034les)g(that)h(y)n(ou)f(m)n(ust)g(include)h +(with)g Fo(<)p Fm(avr/io.h)40 b(\()p Fq(p.)14 b Fm(366\))p +Fo(>)p Fq(.)506 4175 y Fs(Note:)676 4325 y Fq(The)41 +b(names)e(of)i(the)g(in)n(terrupt)f(v)n(ectors)e(in)j(A)-9 +b(VR)41 b(GCC)f(has)g(b)r(een)h(c)n(hanged)e(to)676 4424 +y(matc)n(h)28 b(the)h(names)f(of)g(the)g(v)n(ectors)f(in)i(IAR.)f(This) +h(signi\034can)n(tly)e(helps)h(in)h(p)r(orting)676 4524 +y(applications)e(from)g(IAR)h(to)f(A)-9 b(VR)28 b(GCC.)515 +4803 y Fn(10.4)112 b(In)m(trinsic)37 b(Routines)515 5004 +y Fq(IAR)28 b(has)f(a)g(n)n(um)n(b)r(er)g(of)h(in)n(trinsic)f(routine)g +(suc)n(h)g(as)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 58 74 +TeXDict begin 58 73 bop 515 203 a Fs(10.5)94 b(Flash)31 +b(V)-8 b(ariables)1865 b(58)p 515 236 2865 4 v 515 523 +a Fm(__enable_interr)o(upt)o(s\()o(\))21 b(__disable_interru)o(pt)o +(s\(\))g(__watchdog_rese)o(t\(\))515 670 y Fq(These)27 +b(in)n(trinsic)g(functions)h(compile)f(to)h(sp)r(eci\034c)f(A)-9 +b(VR)28 b(op)r(co)r(des)f(\(SEI,)i(CLI,)f(WDR\).)515 +817 y(There)f(are)g(equiv)-5 b(alen)n(t)27 b(macros)f(that)i(are)f +(used)g(in)h(A)-9 b(VR)28 b(GCC,)g(ho)n(w)n(ev)n(er)e(they)h(are)g(not) +515 916 y(lo)r(cated)g(in)h(a)f(single)g(include)h(\034le.)515 +1063 y(A)-9 b(VR)60 b(GCC)h(has)e Fm(sei\(\))42 b(\()p +Fq(p.)14 b Fm(255\))59 b Fq(for)g Fm(__enable_interrup)o(ts)o(\(\))p +Fq(,)j(and)e Fm(cli\(\))515 1163 y(\()p Fq(p.)14 b Fm(253\))35 +b Fq(for)h Fm(__disable_inter)o(rup)o(ts)o(\(\))p Fq(.)57 +b(Both)36 b(of)h(these)f(macros)f(are)h(lo)r(cated)g(in)515 +1263 y Fo(<)p Fm(avr/interrupts)o(.h)p Fo(>)o Fq(.)515 +1409 y(A)-9 b(VR)42 b(GCC)g(has)f(the)i(macro)d Fm(wdt_reset\(\))f(\()p +Fq(p.)14 b Fm(285\))41 b Fq(in)h(place)f(of)h Fm(__watchdog_-)515 +1509 y(reset\(\))p Fq(.)59 b(Ho)n(w)n(ev)n(er,)36 b(there)g(is)g(a)f +(whole)h(W)-7 b(atc)n(hdog)35 b(Timer)h(API)h(a)n(v)-5 +b(ailable)34 b(in)j(A)-9 b(VR)515 1609 y(GCC)27 b(that)h(can)f(b)r(e)h +(found)g(in)g Fo(<)p Fm(avr/wdt.h)39 b(\()p Fq(p.)15 +b Fm(392\))p Fo(>)p Fq(.)515 1884 y Fn(10.5)112 b(Flash)39 +b(V)-9 b(ariables)515 2085 y Fq(The)25 b(C)h(language)e(w)n(as)g(not)i +(designed)f(for)g(Harv)-5 b(ard)24 b(arc)n(hitecture)g(pro)r(cessors)g +(with)i(sep-)515 2185 y(arate)g(memory)h(spaces.)37 b(This)28 +b(means)f(that)h(there)f(are)g(v)-5 b(arious)27 b(non-standard)f(w)n(a) +n(ys)g(to)515 2284 y(de\034ne)i(a)f(v)-5 b(ariable)26 +b(whose)h(data)g(resides)g(in)h(the)f(Program)f(Memory)h(\(Flash\).)515 +2431 y(IAR)h(uses)f(a)g(non-standard)f(k)n(eyw)n(ord)g(to)h(declare)g +(a)g(v)-5 b(ariable)26 b(in)i(Program)e(Memory:)550 2618 +y Fj(__flash)37 b(int)f(mydata[])i(=)d(....)515 2826 +y Fq(A)-9 b(VR)28 b(GCC)f(uses)h(V)-7 b(ariable)26 b(A)n(ttributes)i +(to)g(ac)n(hiev)n(e)e(the)i(same)f(e\033ect:)550 3013 +y Fj(int)36 b(mydata[])i(__attribute__\(\(progmem\)\))506 +3202 y Fs(Note:)676 3351 y Fq(See)24 b(the)g(GCC)g(User)f(Man)n(ual)g +(for)g(more)g(information)f(ab)r(out)i(V)-7 b(ariable)23 +b(A)n(ttributes.)515 3559 y(a)n(vr-lib)r(c)j(pro)n(vides)g(a)h(con)n(v) +n(enience)f(macro)h(for)g(the)h(V)-7 b(ariable)26 b(A)n(ttribute:)515 +3746 y Fj(#include)37 b()515 3825 y(.)515 +3904 y(.)515 3983 y(.)515 4062 y(int)f(mydata[])h(PROGMEM)h(=)d(....) +506 4250 y Fs(Note:)676 4400 y Fq(The)41 b(PR)n(OGMEM)g(macro)e +(expands)h(to)h(the)g(V)-7 b(ariable)39 b(A)n(ttribute)i(of)g +Fm(progmem)p Fq(.)676 4499 y(This)30 b(macro)f(requires)g(that)h(y)n +(ou)g(include)g Fo(<)p Fm(avr/pgmspace.h)37 b(\()p Fq(p.)15 +b Fm(369\))p Fo(>)p Fq(.)42 b(This)676 4599 y(is)28 b(the)g(canonical)e +(metho)r(d)i(for)f(de\034ning)g(a)h(v)-5 b(ariable)26 +b(in)i(Program)e(Space.)515 4807 y(T)-7 b(o)77 b(read)f(bac)n(k)g +(\035ash)h(data,)89 b(use)77 b(the)g Fm(pgm_read_)p Fh(\003)p +Fq(\(\))d(macros)h(de\034ned)j(in)515 4907 y Fo(<)p Fm(avr/pgmspace.h) +37 b(\()p Fq(p.)14 b Fm(369\))p Fo(>)p Fq(.)49 b(All)32 +b(Program)f(Memory)g(handling)h(macros)e(are)h(de-)515 +5006 y(\034ned)d(there.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 59 75 +TeXDict begin 59 74 bop 515 203 a Fs(10.6)94 b(Non-Returning)30 +b(main\(\))1560 b(59)p 515 236 2865 4 v 515 523 a Fq(There)26 +b(is)h(also)f(a)h(w)n(a)n(y)f(to)h(create)f(a)h(metho)r(d)h(to)f +(de\034ne)g(v)-5 b(ariables)26 b(in)i(Program)d(Memory)515 +623 y(that)38 b(is)g(common)f(b)r(et)n(w)n(een)h(the)g(t)n(w)n(o)f +(compilers)g(\(IAR)h(and)g(A)-9 b(VR)38 b(GCC\).)h(Create)d(a)515 +722 y(header)26 b(\034le)i(that)g(has)f(these)h(de\034nitions:)515 +910 y Fj(#if)36 b(defined\(__ICCAVR__\))k(//)c(IAR)g(C)g(Compiler)515 +989 y(#define)h(FLASH_DECLARE\(x\))j(__flash)d(x)515 +1068 y(#endif)515 1147 y(#if)f(defined\(__GNUC__\))k(//)c(GNU)g +(Compiler)515 1226 y(#define)h(FLASH_DECLARE\(x\))j(x)35 +b(__attribute__\(\(__progme)q(m__\))q(\))515 1305 y(#endif)515 +1513 y Fq(This)f(co)r(de)h(snipp)r(et)g(c)n(hec)n(ks)e(for)h(the)h(IAR) +g(compiler)f(or)g(for)g(the)h(GCC)f(compiler)g(and)515 +1613 y(de\034nes)41 b(a)g(macro)f Fm(FLASH_DECLARE\(x\))35 +b Fq(that)41 b(will)h(declare)e(a)h(v)-5 b(ariable)40 +b(in)i(Program)515 1713 y(Memory)d(using)h(the)h(appropriate)e(metho)r +(d)i(based)e(on)i(the)f(compiler)g(that)h(is)f(b)r(eing)515 +1812 y(used.)d(Then)27 b(y)n(ou)g(w)n(ould)g(used)h(it)g(lik)n(e)f(so:) +550 2000 y Fj(FLASH_DECLARE\(int)40 b(mydata[])d(=)f(...\);)515 +2276 y Fn(10.6)112 b(Non-Returning)38 b(main\(\))515 +2477 y Fq(T)-7 b(o)27 b(declare)f(main\(\))j(to)e(b)r(e)h(a)f +(non-returning)f(function)i(in)g(IAR,)g(it)g(is)g(done)f(lik)n(e)g +(this:)515 2665 y Fj(__C_task)37 b(void)g(main\(void\))515 +2744 y({)656 2822 y(//)f(code)515 2901 y(})515 3110 y +Fq(T)-7 b(o)27 b(do)g(the)h(equiv)-5 b(alen)n(t)27 b(in)h(A)-9 +b(VR)28 b(GCC,)g(do)f(this:)515 3298 y Fj(void)36 b(main\(void\))i +(__attribute__\(\(noreturn\))q(\);)515 3456 y(void)e(main\(void\))515 +3535 y({)656 3614 y(//...)515 3692 y(})506 3873 y Fs(Note:)676 +4022 y Fq(See)28 b(the)g(GCC)f(User)g(Man)n(ual)g(for)g(more)g +(information)g(on)g(F)-7 b(unction)28 b(A)n(ttributes.)515 +4231 y(In)22 b(A)-9 b(VR)24 b(GCC,)e(a)g(protot)n(yp)r(e)g(for)g +(main\(\))h(is)g(required)e(so)h(y)n(ou)g(can)g(declare)g(the)h +(function)515 4331 y(attribute)f(to)h(sp)r(ecify)g(that)f(the)h +(main\(\))g(function)g(is)g(of)f(t)n(yp)r(e)h("noreturn".)33 +b(Then,)24 b(de\034ne)515 4430 y(main\(\))k(as)f(normal.)35 +b(Note)28 b(that)g(the)g(return)f(t)n(yp)r(e)h(for)f(main\(\))h(is)f +(no)n(w)g Fm(void)p Fq(.)515 4706 y Fn(10.7)112 b(Lo)s(c)m(king)38 +b(Registers)515 4907 y Fq(The)26 b(IAR)h(compiler)f(allo)n(ws)g(a)g +(user)g(to)g(lo)r(c)n(k)g(general)f(registers)g(from)i(r15)e(and)h(do)n +(wn)g(b)n(y)515 5006 y(using)h(compiler)g(options)g(and)g(this)h(k)n +(eyw)n(ord)e(syn)n(tax:)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 60 76 +TeXDict begin 60 75 bop 515 203 a Fs(11)31 b(F)-8 b(requen)m(tly)33 +b(Ask)m(ed)f(Questions)1467 b(60)p 515 236 2865 4 v 515 +523 a Fj(__regvar)37 b(__no_init)h(volatile)f(unsigned)h(int)e +(filteredTimeSinceCommuta)q(tion)42 b(@14;)515 751 y +Fq(This)26 b(line)g(lo)r(c)n(ks)f(r14)g(for)h(use)g(only)g(when)g +(explicitly)g(referenced)g(in)g(y)n(our)f(co)r(de)h(thorugh)515 +850 y(the)j(v)-5 b(ar)27 b(name)h("\034lteredTimeSinceComm)n(utation".) +38 b(This)28 b(means)g(that)h(the)g(compiler)515 950 +y(cannot)e(disp)r(ose)g(of)g(it)h(at)g(its)g(o)n(wn)f(will.)515 +1097 y(T)-7 b(o)27 b(do)g(this)h(in)g(A)-9 b(VR)28 b(GCC,)g(do)f(this:) +515 1304 y Fj(register)37 b(unsigned)h(char)e(counter)h(asm\("r3"\);) +515 1531 y Fq(T)n(ypically)-7 b(,)26 b(it)i(should)g(b)r(e)g(p)r +(ossible)f(to)g(use)h(r2)e(through)h(r15)f(that)i(w)n(a)n(y)-7 +b(.)506 1741 y Fs(Note:)676 1890 y Fq(Do)32 b(not)f(reserv)n(e)f(r0)h +(or)f(r1)h(as)g(these)g(are)g(used)h(in)n(ternally)e(b)n(y)i(the)g +(compiler)e(for)h(a)676 1990 y(temp)r(orary)26 b(register)g(and)i(for)f +(a)g(zero)f(v)-5 b(alue.)676 2089 y(Lo)r(c)n(king)26 +b(registers)f(is)h(not)h(recommended)f(in)h(A)-9 b(VR)27 +b(GCC)g(as)f(it)h(remo)n(v)n(es)d(this)j(reg-)676 2189 +y(ister)36 b(from)g(the)h(con)n(trol)e(of)h(the)g(compiler,)i(whic)n(h) +f(ma)n(y)e(mak)n(e)h(co)r(de)g(generation)676 2289 y(w)n(orse.)f(Use)28 +b(at)f(y)n(our)g(o)n(wn)g(risk.)515 2610 y Fr(11)131 +b(F)-11 b(requen)l(tly)44 b(Ask)l(ed)g(Questions)515 +2856 y Fn(11.1)112 b(F)-12 b(A)m(Q)37 b(Index)616 3056 +y Fq(1.)k Fs(My)32 b(program)f(do)s(esn't)f(recognize)h(a)h(v)-5 +b(ariable)32 b(up)s(dated)f(within)g(an)h(in-)722 3156 +y(terrupt)h(routine)27 b Fq(\(p.)14 b(62\))616 3321 y(2.)41 +b Fs(I)32 b(get)g("unde\034ned)f(reference)h(to...")e(for)i(functions)f +(lik)m(e)h("sin\(\)")26 b Fq(\(p.)14 b(62\))616 3486 +y(3.)41 b Fs(Ho)m(w)32 b(to)f(p)s(ermanen)m(tly)h(bind)g(a)g(v)-5 +b(ariable)32 b(to)f(a)h(register?)37 b Fq(\(p.)14 b(63\))616 +3651 y(4.)41 b Fs(Ho)m(w)32 b(to)f(mo)s(dify)g(MCUCR)h(or)f(WDTCR)h +(early?)37 b Fq(\(p.)14 b(63\))616 3816 y(5.)41 b Fs(What)32 +b(is)f(all)h(this)f(_BV\(\))h(stu\033)f(ab)s(out?)37 +b Fq(\(p.)14 b(64\))616 3981 y(6.)41 b Fs(Can)32 b(I)g(use)g(C++)g(on)g +(the)f(A)-11 b(VR?)28 b Fq(\(p.)14 b(64\))616 4147 y(7.)41 +b Fs(Shouldn't)31 b(I)h(initialize)e(all)i(m)m(y)g(v)-5 +b(ariables?)36 b Fq(\(p.)14 b(65\))616 4312 y(8.)41 b +Fs(Wh)m(y)52 b(do)e(some)g(16-bit)g(timer)g(registers)g(sometimes)e +(get)j(trashed?)722 4411 y Fq(\(p.)14 b(66\))616 4576 +y(9.)41 b Fs(Ho)m(w)32 b(do)f(I)h(use)g(a)g(#de\034ne'd)e(constan)m(t)j +(in)e(an)i(asm)e(statemen)m(t?)37 b Fq(\(p.)14 b(67\))575 +4741 y(10.)40 b Fs(Wh)m(y)34 b(do)s(es)d(the)i(PC)g(randomly)g(jump)g +(around)g(when)g(single-stepping)722 4841 y(through)f(m)m(y)g(program)g +(in)f(a)m(vr-gdb?)38 b Fq(\(p.)14 b(68\))575 5006 y(11.)40 +b Fs(Ho)m(w)32 b(do)f(I)h(trace)h(an)f(assem)m(bler)f(\034le)g(in)h(a)m +(vr-gdb?)38 b Fq(\(p.)14 b(68\))p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 61 77 +TeXDict begin 61 76 bop 515 203 a Fs(11.1)94 b(F)-11 +b(A)m(Q)32 b(Index)2046 b(61)p 515 236 2865 4 v 575 523 +a Fq(12.)40 b Fs(Ho)m(w)32 b(do)f(I)h(pass)g(an)g(IO)g(p)s(ort)g(as)f +(a)i(parameter)f(to)g(a)g(function?)37 b Fq(\(p.)14 b(70\))575 +689 y(13.)40 b Fs(What)32 b(registers)f(are)h(used)f(b)m(y)i(the)f(C)g +(compiler?)j Fq(\(p.)14 b(72\))575 855 y(14.)40 b Fs(Ho)m(w)32 +b(do)f(I)h(put)g(an)h(arra)m(y)h(of)d(strings)g(completely)g(in)g(R)m +(OM?)c Fq(\(p.)14 b(74\))575 1021 y(15.)40 b Fs(Ho)m(w)32 +b(to)f(use)h(external)g(RAM?)27 b Fq(\(p.)14 b(76\))575 +1187 y(16.)40 b Fs(Whic)m(h)32 b(-O)f(\035ag)h(to)g(use?)37 +b Fq(\(p.)14 b(76\))575 1353 y(17.)40 b Fs(Ho)m(w)32 +b(do)f(I)h(relo)s(cate)g(co)s(de)f(to)h(a)g(\034xed)g(address?)37 +b Fq(\(p.)14 b(77\))575 1519 y(18.)40 b Fs(My)27 b(UAR)-8 +b(T)28 b(is)e(generating)h(nonsense!)39 b(My)27 b(A)-8 +b(Tmega128)26 b(k)m(eeps)h(crash-)722 1619 y(ing!)42 +b(P)m(ort)33 b(F)e(is)g(completely)g(brok)m(en!)38 b +Fq(\(p.)14 b(78\))575 1785 y(19.)40 b Fs(Wh)m(y)33 b(do)e(all)g(m)m(y)h +("fo)s(o...bar")e(strings)h(eat)h(up)g(the)g(SRAM?)27 +b Fq(\(p.)14 b(78\))575 1951 y(20.)40 b Fs(Wh)m(y)48 +b(do)s(es)d(the)i(compiler)f(compile)f(an)i(8-bit)f(op)s(eration)g +(that)i(uses)722 2051 y(bit)m(wise)31 b(op)s(erators)g(in)m(to)h(a)g +(16-bit)f(op)s(eration)g(in)g(assem)m(bly?)37 b Fq(\(p.)14 +b(80\))575 2217 y(21.)40 b Fs(Ho)m(w)j(to)g(detect)g(RAM)g(memory)f +(and)h(v)-5 b(ariable)44 b(o)m(v)m(erlap)f(problems?)722 +2316 y Fq(\(p.)14 b(80\))575 2482 y(22.)40 b Fs(Is)32 +b(it)f(really)h(imp)s(ossible)c(to)k(program)g(the)g(A)-8 +b(Ttin)m(yXX)33 b(in)e(C?)d Fq(\(p.)14 b(81\))575 2648 +y(23.)40 b Fs(What)32 b(is)f(this)g("clo)s(c)m(k)h(sk)m(ew)g(detected") +g(messsage?)j Fq(\(p.)14 b(81\))575 2814 y(24.)40 b Fs(Wh)m(y)d(are)g +(\(man)m(y\))g(in)m(terrupt)g(\035ags)g(cleared)f(b)m(y)i(writing)d(a)i +(logical)e(1?)722 2914 y Fq(\(p.)14 b(81\))575 3080 y(25.)40 +b Fs(Wh)m(y)33 b(ha)m(v)m(e)g("programmed")d(fuses)h(the)h(bit)g(v)-5 +b(alue)31 b(0?)37 b Fq(\(p.)14 b(82\))575 3246 y(26.)40 +b Fs(Whic)m(h)32 b(A)-11 b(VR-sp)s(eci\034c)32 b(assem)m(bler)e(op)s +(erators)i(are)g(a)m(v)-5 b(ailable?)37 b Fq(\(p.)14 +b(83\))575 3412 y(27.)40 b Fs(Wh)m(y)27 b(are)f(in)m(terrupts)g +(re-enabled)f(in)h(the)g(middle)e(of)i(writing)f(the)h(stac)m(k)722 +3512 y(p)s(oin)m(ter?)37 b Fq(\(p.)14 b(83\))575 3678 +y(28.)40 b Fs(Wh)m(y)33 b(are)f(there)g(\034v)m(e)g(di\033eren)m(t)f +(link)m(er)h(scripts?)37 b Fq(\(p.)14 b(83\))575 3844 +y(29.)40 b Fs(Ho)m(w)32 b(to)f(add)i(a)f(ra)m(w)h(binary)f(image)f(to)h +(link)m(er)f(output?)37 b Fq(\(p.)14 b(84\))575 4010 +y(30.)40 b Fs(Ho)m(w)32 b(do)f(I)h(p)s(erform)g(a)g(soft)m(w)m(are)h +(reset)e(of)h(the)f(A)-11 b(VR?)28 b Fq(\(p.)14 b(85\))575 +4176 y(31.)40 b Fs(I)g(am)f(using)g(\035oating)g(p)s(oin)m(t)g(math.)65 +b(Wh)m(y)40 b(is)e(the)i(compiled)e(co)s(de)h(so)722 +4276 y(big?)j(Wh)m(y)32 b(do)s(es)f(m)m(y)h(co)s(de)f(not)h(w)m(ork?)38 +b Fq(\(p.)14 b(86\))575 4442 y(32.)40 b Fs(What)32 b(pitfalls)f(exist)g +(when)h(writing)f(reen)m(tran)m(t)i(co)s(de?)k Fq(\(p.)14 +b(86\))p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 62 78 +TeXDict begin 62 77 bop 515 190 a Fs(11.2)94 b(My)32 +b(program)g(do)s(esn't)e(recognize)h(a)i(v)-5 b(ariable)31 +b(up)s(dated)h(within)f(an)515 290 y(in)m(terrupt)h(routine)2057 +b(62)p 515 323 2865 4 v 515 523 a Fn(11.2)112 b(My)55 +b(program)g(do)s(esn't)h(recognize)f(a)g(v)-6 b(ariable)56 +b(up)s(dated)826 639 y(within)38 b(an)g(in)m(terrupt)f(routine)515 +840 y Fq(When)28 b(using)f(the)h(optimizer,)f(in)h(a)f(lo)r(op)g(lik)n +(e)g(the)h(follo)n(wing)f(one:)515 1049 y Fj(uint8_t)37 +b(flag;)515 1128 y(...)515 1207 y(ISR\(SOME_vect\))i({)585 +1285 y(flag)e(=)e(1;)515 1364 y(})515 1443 y(...)797 +1601 y(while)i(\(flag)f(==)g(0\))g({)1079 1680 y(...)797 +1759 y(})515 1989 y Fq(the)26 b(compiler)f(will)h(t)n(ypically)g +(access)e Fm(flag)h Fq(only)g(once,)h(and)g(optimize)g(further)g +(accesses)515 2088 y(completely)d(a)n(w)n(a)n(y)-7 b(,)22 +b(since)i(its)f(co)r(de)g(path)h(analysis)e(sho)n(ws)g(that)i(nothing)f +(inside)h(the)g(lo)r(op)515 2188 y(could)29 b(c)n(hange)e(the)j(v)-5 +b(alue)29 b(of)f Fm(flag)g Fq(an)n(yw)n(a)n(y)-7 b(.)39 +b(T)-7 b(o)29 b(tell)g(the)g(compiler)g(that)g(this)g(v)-5 +b(ariable)515 2287 y(could)26 b(b)r(e)i(c)n(hanged)d(outside)i(the)g +(scop)r(e)g(of)g(its)g(co)r(de)f(path)h(analysis)f(\(e.)37 +b(g.)f(from)26 b(within)515 2387 y(an)h(in)n(terrupt)g(routine\),)h +(the)g(v)-5 b(ariable)26 b(needs)i(to)f(b)r(e)h(declared)f(lik)n(e:)515 +2596 y Fj(volatile)37 b(uint8_t)g(flag;)515 2826 y Ff(Bac)n(k)24 +b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 +3106 y Fn(11.3)112 b(I)55 b(get)g("unde\034ned)i(reference)e(to...")g +(for)h(functions)g(lik)m(e)826 3222 y("sin\(\)")515 3422 +y Fq(In)37 b(order)f(to)h(access)f(the)h(mathematical)g(functions)h +(that)f(are)f(declared)h(in)g Fo(<)p Fm(math.h)515 3522 +y(\()p Fq(p.)14 b Fm(366\))p Fo(>)p Fq(,)37 b(the)f(link)n(er)g(needs)g +(to)g(b)r(e)h(told)g(to)f(also)f(link)i(the)f(mathematical)g(library)-7 +b(,)515 3622 y Fm(libm.a)p Fq(.)515 3769 y(T)n(ypically)g(,)33 +b(system)f(libraries)f(lik)n(e)i Fm(libm.a)d Fq(are)h(giv)n(en)h(to)h +(the)g(\034nal)f(C)h(compiler)f(com-)515 3868 y(mand)23 +b(line)h(that)f(p)r(erforms)g(the)h(linking)f(step)g(b)n(y)h(adding)e +(a)h(\035ag)g Fm(-lm)f Fq(at)h(the)h(end.)36 b(\(That)515 +3968 y(is,)22 b(the)g(initial)g Fl(lib)28 b Fq(and)21 +b(the)h(\034lename)f(su\036x)h(from)f(the)h(library)e(are)g(written)i +(immediately)515 4067 y(after)32 b(a)g Fl(-l)42 b Fq(\035ag.)51 +b(So)33 b(for)f(a)g Fm(libfoo.a)e Fq(library)-7 b(,)33 +b Fm(-lfoo)d Fq(needs)j(to)f(b)r(e)i(pro)n(vided.\))51 +b(This)515 4167 y(will)28 b(mak)n(e)e(the)i(link)n(er)f(searc)n(h)f +(the)i(library)e(in)i(a)f(path)h(kno)n(wn)f(to)g(the)h(system.)515 +4314 y(An)g(alternativ)n(e)f(w)n(ould)h(b)r(e)g(to)g(sp)r(ecify)g(the)h +(full)g(path)f(to)g(the)g Fm(libm.a)e Fq(\034le)i(at)g(the)h(same)515 +4414 y(place)d(on)g(the)h(command)f(line,)h(i.)37 b(e.)f +Fl(after)h Fq(all)26 b(the)h(ob)5 b(ject)26 b(\034les)h(\()p +Fh(\003)p Fm(.o)p Fq(\).)36 b(Ho)n(w)n(ev)n(er,)24 b(since)515 +4513 y(this)g(requires)e(kno)n(wledge)h(of)h(where)f(the)h(build)h +(system)e(will)h(exactly)g(\034nd)g(those)f(library)515 +4613 y(\034les,)k(this)h(is)g(deprecated)e(for)h(system)h(libraries.) +515 4760 y Ff(Bac)n(k)c(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 63 79 +TeXDict begin 63 78 bop 515 203 a Fs(11.4)94 b(Ho)m(w)31 +b(to)h(p)s(ermanen)m(tly)g(bind)f(a)h(v)-5 b(ariable)32 +b(to)g(a)g(register?)399 b(63)p 515 236 2865 4 v 515 +523 a Fn(11.4)112 b(Ho)m(w)37 b(to)g(p)s(ermanen)m(tly)i(bind)f(a)g(v) +-6 b(ariable)38 b(to)f(a)h(register?)515 724 y Fq(This)27 +b(can)g(b)r(e)h(done)g(with)515 918 y Fj(register)37 +b(unsigned)h(char)e(counter)h(asm\("r3"\);)515 1133 y +Fq(T)n(ypically)-7 b(,)26 b(it)i(should)g(b)r(e)g(safe)f(to)g(use)h(r2) +e(through)h(r7)g(that)h(w)n(a)n(y)-7 b(.)515 1280 y(Registers)29 +b(r8)h(through)g(r15)f(can)h(b)r(e)h(used)g(for)f(argumen)n(t)f +(passing)h(b)n(y)g(the)h(compiler)f(in)515 1380 y(case)37 +b(man)n(y)g(or)g(long)h(argumen)n(ts)e(are)h(b)r(eing)i(passed)e(to)h +(callees.)67 b(If)38 b(this)h(is)f(not)g(the)515 1479 +y(case)23 b(throughout)h(the)h(en)n(tire)f(application,)g(these)h +(registers)d(could)i(b)r(e)h(used)g(for)f(register)515 +1579 y(v)-5 b(ariables)26 b(as)h(w)n(ell.)515 1726 y(Extreme)21 +b(care)g(should)g(b)r(e)h(tak)n(en)f(that)h(the)g(en)n(tire)f +(application)g(is)g(compiled)h(with)g(a)f(con-)515 1825 +y(sisten)n(t)32 b(set)g(of)g(register-allo)r(cated)d(v)-5 +b(ariables,)32 b(including)g(p)r(ossibly)g(used)g(library)f(func-)515 +1925 y(tions.)515 2072 y(See)c Fs(C)32 b(Names)f(Used)h(in)f(Assem)m +(bler)f(Co)s(de)d Fq(\(p.)14 b(49\))27 b(for)h(more)e(details.)515 +2219 y Ff(Bac)n(k)e(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 2496 y Fn(11.5)112 b(Ho)m(w)37 +b(to)g(mo)s(dify)h(MCUCR)g(or)f(WDTCR)f(early?)515 2696 +y Fq(The)31 b(metho)r(d)h(of)f(early)f(initialization)h(\()p +Fm(MCUCR)p Fq(,)f Fm(WDTCR)f Fq(or)h(an)n(ything)h(else\))g(is)g +(di\033eren)n(t)515 2796 y(\(and)23 b(more)g(\035exible\))h(in)f(the)h +(curren)n(t)f(v)n(ersion.)34 b(Basically)-7 b(,)23 b(write)g(a)g(small) +g(assem)n(bler)f(\034le)515 2896 y(whic)n(h)27 b(lo)r(oks)g(lik)n(e)g +(this:)515 3090 y Fj(;;)36 b(begin)g(xram.S)515 3248 +y(#include)h()797 3406 y(.section)g(.init1,"ax",@progbits)797 +3563 y(ldi)f(r16,_BV\(SRE\))j(|)c(_BV\(SRW\))797 3642 +y(out)h(_SFR_IO_ADDR\(MCUCR\),r16)515 3800 y(;;)g(end)g(xram.S)515 +4015 y Fq(Assem)n(ble)23 b(it,)h(link)g(the)f(resulting)g +Fm(xram.o)e Fq(with)i(other)g(\034les)g(in)h(y)n(our)e(program,)g(and)h +(this)515 4115 y(piece)f(of)g(co)r(de)g(will)h(b)r(e)f(inserted)g(in)h +(initialization)f(co)r(de,)h(whic)n(h)f(is)g(run)g(righ)n(t)g(after)g +(reset.)515 4214 y(See)29 b(the)g(link)n(er)g(script)f(for)h(commen)n +(ts)g(ab)r(out)g(the)g(new)g Fm(.init)p Fl(N)41 b Fq(sections)28 +b(\(whic)n(h)h(one)515 4314 y(to)e(use,)h(etc.\).)515 +4461 y(The)39 b(adv)-5 b(an)n(tage)37 b(of)i(this)g(metho)r(d)g(is)g +(that)g(y)n(ou)f(can)g(insert)h(an)n(y)f(initialization)g(co)r(de)515 +4560 y(y)n(ou)27 b(w)n(an)n(t)h(\(just)h(remem)n(b)r(er)f(that)g(this)h +(is)f(v)n(ery)f(early)h(startup)g(\025)g(no)g(stac)n(k)f(and)h(no)g +Fm(__-)515 4660 y(zero_reg__)21 b Fq(y)n(et\),)27 b(and)e(no)h(program) +d(memory)i(space)g(is)h(w)n(asted)f(if)h(this)g(feature)f(is)h(not)515 +4760 y(used.)515 4907 y(There)d(should)h(b)r(e)g(no)g(need)g(to)g(mo)r +(dify)g(link)n(er)f(scripts)h(an)n(ymore,)f(except)h(for)f(some)g(v)n +(ery)515 5006 y(sp)r(ecial)33 b(cases.)52 b(It)33 b(is)h(b)r(est)f(to)g +(lea)n(v)n(e)f Fm(__stack)e Fq(at)j(its)g(default)h(v)-5 +b(alue)33 b(\(end)h(of)f(in)n(ternal)p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 64 80 +TeXDict begin 64 79 bop 515 203 a Fs(11.6)94 b(What)32 +b(is)f(all)g(this)g(_BV\(\))i(stu\033)e(ab)s(out?)1003 +b(64)p 515 236 2865 4 v 515 523 a Fq(SRAM)19 b(\025)f(faster,)i(and)e +(required)f(on)i(some)f(devices)f(lik)n(e)i(A)-7 b(Tmega161)16 +b(b)r(ecause)i(of)g(errata\),)515 623 y(and)27 b(add)h +Fm(-Wl,-Tdata,0x80)o(11)o(00)21 b Fq(to)28 b(start)f(the)g(data)h +(section)f(ab)r(o)n(v)n(e)f(the)i(stac)n(k.)515 770 y(F)-7 +b(or)27 b(more)g(information)g(on)h(using)f(sections,)g(see)h +Fs(Memory)j(Sections)c Fq(\(p.)14 b(20\).)38 b(There)515 +869 y(is)c(also)g(an)h(example)f(for)g Fs(Using)40 b(Sections)f(in)h(C) +g(Co)s(de)34 b Fq(\(p.)14 b(25\).)58 b(Note)35 b(that)g(in)g(C)515 +969 y(co)r(de,)f(an)n(y)e(suc)n(h)g(function)h(w)n(ould)f(preferrably)f +(b)r(e)j(placed)e(in)n(to)g(section)h(.init3)g(as)f(the)515 +1068 y(co)r(de)27 b(in)h(.init2)g(ensures)e(the)i(in)n(ternal)f +(register)f Fm(__zero_reg__)d Fq(is)k(already)f(cleared.)515 +1215 y Ff(Bac)n(k)e(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 1492 y Fn(11.6)112 b(What)37 b(is)h(all)g(this)g +(_BV\(\))e(stu\033)h(ab)s(out?)515 1693 y Fq(When)d(p)r(erforming)g(lo) +n(w-lev)n(el)e(output)j(w)n(ork,)f(whic)n(h)g(is)g(a)g(v)n(ery)e(cen)n +(tral)i(p)r(oin)n(t)g(in)g(mi-)515 1793 y(cro)r(con)n(troller)d +(programming,)j(it)g(is)g(quite)h(common)e(that)i(a)f(particular)e(bit) +j(needs)f(to)515 1892 y(b)r(e)j(set)g(or)f(cleared)g(in)h(some)g(IO)f +(register.)64 b(While)38 b(the)f(device)g(do)r(cumen)n(tation)f(pro-) +515 1992 y(vides)c(mnemonic)g(names)g(for)g(the)h(v)-5 +b(arious)31 b(bits)h(in)h(the)g(IO)f(registers,)g(and)g(the)h +Fs(A)-11 b(VR)515 2091 y(device-sp)s(eci\034c)34 b(IO)h(de\034nitions) +29 b Fq(\(p.)14 b(256\))30 b(re\035ect)g(these)g(names)g(in)h +(de\034nitions)g(for)515 2191 y(n)n(umerical)g(constan)n(ts,)h(a)f(w)n +(a)n(y)g(is)h(needed)g(to)g(con)n(v)n(ert)e(a)i(bit)g(n)n(um)n(b)r(er)g +(\(usually)f(within)515 2291 y(a)e(b)n(yte)h(register\))f(in)n(to)h(a)g +(b)n(yte)f(v)-5 b(alue)30 b(that)h(can)e(b)r(e)i(assigned)d(directly)i +(to)g(the)h(register.)515 2390 y(Ho)n(w)n(ev)n(er,)37 +b(sometimes)g(the)g(direct)g(bit)g(n)n(um)n(b)r(ers)f(are)g(needed)h +(as)g(w)n(ell)f(\(e.)66 b(g.)e(in)37 b(an)515 2490 y +Fm(SBI\(\))24 b Fq(instruction\),)i(so)g(the)g(de\034nitions)g(cannot)g +(usefully)g(b)r(e)h(made)f(as)f(b)n(yte)h(v)-5 b(alues)26 +b(in)515 2590 y(the)i(\034rst)f(place.)515 2736 y(So)34 +b(in)h(order)e(to)i(access)e(a)h(particular)f(bit)j(n)n(um)n(b)r(er)e +(as)g(a)g(b)n(yte)g(v)-5 b(alue,)37 b(use)d(the)h Fm(_BV\(\))515 +2836 y(\()p Fq(p.)14 b Fm(279\))29 b Fq(macro.)43 b(Of)30 +b(course,)g(the)g(implemen)n(tation)h(of)f(this)g(macro)f(is)h(just)h +(the)f(usual)515 2936 y(bit)g(shift)g(\(whic)n(h)g(is)g(done)f(b)n(y)g +(the)i(compiler)d(an)n(yw)n(a)n(y)-7 b(,)29 b(th)n(us)g(do)r(esn't)h +(imp)r(ose)g(an)n(y)f(run-)515 3035 y(time)f(p)r(enalt)n(y\),)g(so)e +(the)i(follo)n(wing)f(applies:)515 3230 y Fj(_BV\(3\))37 +b(=>)e(1)h(<<)g(3)f(=>)h(0x08)515 3446 y Fq(Ho)n(w)n(ev)n(er,)25 +b(using)j(the)f(macro)g(often)h(mak)n(es)e(the)i(program)d(b)r(etter)j +(readable.)515 3593 y("BV")e(stands)i(for)f("bit)g(v)-5 +b(alue",)27 b(in)h(case)f(someone)f(migh)n(t)i(ask)e(y)n(ou.)36 +b(:-\))515 3740 y Fs(Example:)e Fq(clo)r(c)n(k)24 b(timer)g(2)g(with)h +(full)h(IO)e(clo)r(c)n(k)g(\()p Fm(CS2)p Fl(x)33 b Fq(=)24 +b(0b001\),)g(toggle)f(OC2)h(output)515 3840 y(on)31 b(compare)f(matc)n +(h)i(\()p Fm(COM2)p Fl(x)40 b Fq(=)31 b(0b01\),)h(and)f(clear)g(timer)g +(on)h(compare)e(matc)n(h)h(\()p Fm(CTC2)515 3939 y Fq(=)c(1\).)37 +b(Mak)n(e)26 b(OC2)h(\()p Fm(PD7)p Fq(\))g(an)g(output.)797 +4134 y Fj(TCCR2)37 b(=)e(_BV\(COM20\)|_BV\(CTC2\)|_BV)q(\(CS)q(20\);) +797 4213 y(DDRD)h(=)g(_BV\(PD7\);)515 4429 y Ff(Bac)n(k)24 +b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 +4706 y Fn(11.7)112 b(Can)38 b(I)f(use)h(C++)g(on)f(the)h(A)-12 +b(VR?)515 4907 y Fq(Basically)28 b(y)n(es,)i(C++)f(is)g(supp)r(orted)h +(\(assuming)f(y)n(our)g(compiler)g(has)g(b)r(een)h(con\034gured)515 +5006 y(and)k(compiled)g(to)h(supp)r(ort)f(it,)j(of)d(course\).)57 +b(Source)33 b(\034les)h(ending)h(in)g(.cc,)h(.cpp)e(or)g(.C)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 65 81 +TeXDict begin 65 80 bop 515 203 a Fs(11.8)94 b(Shouldn't)31 +b(I)h(initialize)e(all)h(m)m(y)h(v)-5 b(ariables?)914 +b(65)p 515 236 2865 4 v 515 523 a Fq(will)38 b(automatically)e(cause)h +(the)h(compiler)f(fron)n(tend)g(to)h(in)n(v)n(ok)n(e)e(the)i(C++)f +(compiler.)515 623 y(Alternativ)n(ely)-7 b(,)20 b(the)g(C++)f(compiler) +f(could)h(b)r(e)h(explicitly)g(called)f(b)n(y)g(the)h(name)f +Fm(avr-c++)p Fq(.)515 770 y(Ho)n(w)n(ev)n(er,)41 b(there's)f(curren)n +(tly)f(no)i(supp)r(ort)f(for)f Fm(libstdc++)p Fq(,)h(the)h(standard)e +(supp)r(ort)515 869 y(library)25 b(needed)i(for)f(a)g(complete)g(C++)g +(implemen)n(tation.)36 b(This)27 b(imp)r(oses)f(a)g(n)n(um)n(b)r(er)g +(of)515 969 y(restrictions)g(on)h(the)h(C++)f(programs)e(that)j(can)f +(b)r(e)h(compiled.)37 b(Among)27 b(them)h(are:)639 1187 +y Fk(\210)41 b Fq(Ob)n(viously)-7 b(,)25 b(none)g(of)g(the)h(C++)e +(related)h(standard)f(functions,)i(classes,)f(and)g(tem-)722 +1286 y(plate)j(classes)e(are)h(a)n(v)-5 b(ailable.)639 +1504 y Fk(\210)41 b Fq(The)34 b(op)r(erators)e Fm(new)g +Fq(and)i Fm(delete)d Fq(are)i(not)h(implemen)n(ted,)i(attempting)e(to)f +(use)722 1604 y(them)21 b(will)f(cause)f(the)h(link)n(er)f(to)h +(complain)f(ab)r(out)h(unde\034ned)g(external)f(references.)722 +1704 y(\(This)28 b(could)f(p)r(erhaps)g(b)r(e)h(\034xed.\))639 +1922 y Fk(\210)41 b Fq(Some)26 b(of)g(the)h(supplied)f(include)h +(\034les)f(are)f(not)h(C++)f(safe,)h(i.)37 b(e.)f(they)26 +b(need)h(to)f(b)r(e)722 2021 y(wrapp)r(ed)h(in)n(to)758 +2202 y Fj(extern)36 b("C")h({)e(.)h(.)f(.)h(})722 2404 +y Fq(\(This)28 b(could)f(certainly)g(b)r(e)h(\034xed,)g(to)r(o.\))639 +2622 y Fk(\210)41 b Fq(Exceptions)49 b(are)f(not)h(supp)r(orted.)101 +b(Since)49 b(exceptions)f(are)g(enabled)h(b)n(y)f(de-)722 +2721 y(fault)38 b(in)g(the)f(C++)g(fron)n(tend,)i(they)f(explicitly)f +(need)h(to)f(b)r(e)h(turned)f(o\033)g(using)722 2821 +y Fm(-fno-exceptions)32 b Fq(in)38 b(the)g(compiler)f(options.)67 +b(F)-7 b(ailing)37 b(this,)k(the)d(link)n(er)f(will)722 +2921 y(complain)23 b(ab)r(out)h(an)f(unde\034ned)h(external)f +(reference)g(to)g Fm(__gxx_personalit)o(y_)o(-)722 3020 +y(sj0)p Fq(.)515 3238 y(Constructors)j(and)h(destructors)f +Fl(ar)l(e)34 b Fq(supp)r(orted)28 b(though,)f(including)h(global)e +(ones.)515 3385 y(When)d(programming)e(C++)h(in)h(space-)f(and)h(run)n +(time-sensitiv)n(e)f(en)n(vironmen)n(ts)g(lik)n(e)g(mi-)515 +3485 y(cro)r(con)n(trollers,)j(extra)i(care)g(should)h(b)r(e)h(tak)n +(en)e(to)h(a)n(v)n(oid)f(un)n(w)n(an)n(ted)g(side)h(e\033ects)h(of)f +(the)515 3584 y(C++)37 b(calling)g(con)n(v)n(en)n(tions)f(lik)n(e)h +(implied)i(cop)n(y)e(constructors)f(that)i(could)f(b)r(e)h(called)515 +3684 y(up)r(on)31 b(function)h(in)n(v)n(o)r(cation)d(etc.)48 +b(These)31 b(things)g(could)g(easily)f(add)h(up)g(in)n(to)g(a)g +(consid-)515 3784 y(erable)g(amoun)n(t)i(of)f(time)h(and)g(program)d +(memory)i(w)n(asted.)52 b(Th)n(us,)33 b(casual)f(insp)r(ection)515 +3883 y(of)37 b(the)i(generated)d(assem)n(bler)g(co)r(de)i(\(using)g +(the)g Fm(-S)f Fq(compiler)g(option\))h(seems)f(to)h(b)r(e)515 +3983 y(w)n(arran)n(ted.)515 4130 y Ff(Bac)n(k)24 b(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 4407 +y Fn(11.8)112 b(Shouldn't)38 b(I)g(initialize)g(all)g(m)m(y)g(v)-6 +b(ariables?)515 4608 y Fq(Global)27 b(and)h(static)g(v)-5 +b(ariables)26 b(are)h(guaran)n(teed)f(to)i(b)r(e)g(initialized)g(to)g +(0)g(b)n(y)f(the)i(C)f(stan-)515 4707 y(dard.)35 b Fm(avr-gcc)22 +b Fq(do)r(es)j(this)g(b)n(y)g(placing)g(the)g(appropriate)f(co)r(de)g +(in)n(to)h(section)g(.init4)g(\(see)515 4807 y Fs(The)35 +b(.initN)f(Sections)c Fq(\(p.)14 b(22\)\).)46 b(With)31 +b(resp)r(ect)f(to)h(the)g(standard,)f(this)h(sen)n(tence)f(is)515 +4907 y(somewhat)i(simpli\034ed)h(\(b)r(ecause)g(the)g(standard)f(allo)n +(ws)f(for)h(mac)n(hines)g(where)h(the)g(ac-)515 5006 +y(tual)d(bit)i(pattern)e(used)h(di\033ers)f(from)g(all)h(bits)g(b)r +(eing)f(0\),)i(but)f(for)f(the)h(A)-9 b(VR)31 b(target,)g(in)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 66 82 +TeXDict begin 66 81 bop 515 203 a Fs(11.9)94 b(Wh)m(y)32 +b(do)g(some)e(16-bit)h(timer)g(registers)g(sometimes)e(get)i(trashed?)q +(66)p 515 236 2865 4 v 515 523 a Fq(general,)e(all)g(in)n(teger-t)n(yp) +r(e)g(v)-5 b(ariables)28 b(are)h(set)h(to)g(0,)g(all)f(p)r(oin)n(ters)g +(to)h(a)f(NULL)h(p)r(oin)n(ter,)515 623 y(and)d(all)g(\035oating-p)r +(oin)n(t)g(v)-5 b(ariables)26 b(to)i(0.0.)515 770 y(As)34 +b(long)g(as)f(these)i(v)-5 b(ariables)32 b(are)i(not)g(initialized)g +(\(i.)58 b(e.)f(they)34 b(don't)h(ha)n(v)n(e)e(an)h(equal)515 +869 y(sign)i(and)g(an)g(initialization)g(expression)f(to)i(the)g(righ)n +(t)e(within)j(the)e(de\034nition)h(of)g(the)515 969 y(v)-5 +b(ariable\),)32 b(they)g(go)e(in)n(to)i(the)g Fs(.bss)e +Fq(\(p.)14 b(21\))32 b(section)f(of)h(the)g(\034le.)49 +b(This)32 b(section)f(simply)515 1068 y(records)g(the)i(size)f(of)h +(the)g(v)-5 b(ariable,)33 b(but)g(otherwise)f(do)r(esn't)h(consume)f +(space,)h(neither)515 1168 y(within)c(the)h(ob)5 b(ject)28 +b(\034le)i(nor)e(within)h(\035ash)g(memory)-7 b(.)40 +b(\(Of)30 b(course,)e(b)r(eing)h(a)f(v)-5 b(ariable,)29 +b(it)515 1268 y(will)f(consume)f(space)f(in)i(the)g(target's)f(SRAM.\)) +515 1415 y(In)d(con)n(trast,)f(global)g(and)h(static)f(v)-5 +b(ariables)23 b(that)h(ha)n(v)n(e)f(an)g(initializer)h(go)f(in)n(to)g +(the)i Fs(.data)515 1514 y Fq(\(p.)14 b(21\))28 b(section)h(of)g(the)g +(\034le.)41 b(This)29 b(will)g(cause)f(them)i(to)e(consume)h(space)f +(in)h(the)g(ob)5 b(ject)515 1614 y(\034le)39 b(\(in)h(order)e(to)h +(record)f(the)i(initializing)f(v)-5 b(alue\),)42 b Fl(and)49 +b Fq(in)39 b(the)h(\035ash)f(R)n(OM)f(of)i(the)515 1713 +y(target)32 b(device.)52 b(The)32 b(latter)h(is)f(needed)h(since)g(the) +g(\035ash)f(R)n(OM)g(is)h(the)g(only)f(w)n(a)n(y)g(that)515 +1813 y(the)37 b(compiler)f(can)g(tell)h(the)g(target)f(device)h(the)g +(v)-5 b(alue)36 b(this)h(v)-5 b(ariable)36 b(is)h(going)e(to)i(b)r(e) +515 1913 y(initialized)27 b(to.)515 2060 y(No)n(w)c(if)h(some)f +(programmer)e("w)n(an)n(ts)h(to)h(mak)n(e)g(doubly)g(sure")f(their)i(v) +-5 b(ariables)22 b(really)g(get)515 2159 y(a)30 b(0)g(at)g(program)f +(startup,)i(and)f(adds)g(an)g(initializer)g(just)i(con)n(taining)d(0)h +(on)g(the)h(righ)n(t-)515 2259 y(hand)d(side,)f(they)h(w)n(aste)f +(space.)37 b(While)29 b(this)f(w)n(aste)f(of)h(space)f(applies)g(to)h +(virtually)f(an)n(y)515 2358 y(platform)34 b(C)h(is)g(implemen)n(ted)g +(on,)h(it's)f(usually)g(not)f(noticeable)g(on)h(larger)e(mac)n(hines) +515 2458 y(lik)n(e)28 b(PCs,)i(while)f(the)g(w)n(aste)f(of)h(\035ash)g +(R)n(OM)f(storage)f(can)i(b)r(e)g(v)n(ery)f(painful)h(on)g(a)f(small) +515 2558 y(micro)r(con)n(troller)d(lik)n(e)i(the)h(A)-9 +b(VR.)515 2705 y(So)25 b(in)g(general,)f(v)-5 b(ariables)24 +b(should)h(only)g(b)r(e)g(explicitly)g(initialized)h(if)f(the)h +(initial)f(v)-5 b(alue)25 b(is)515 2804 y(non-zero.)506 +2994 y Fs(Note:)676 3143 y Fq(Recen)n(t)f(v)n(ersions)e(of)i(GCC)g(are) +f(no)n(w)g(smart)g(enough)h(to)f(detect)i(this)f(situation,)g(and)676 +3243 y(rev)n(ert)i(v)-5 b(ariables)27 b(that)g(are)g(explicitly)h +(initialized)g(to)f(0)g(to)h(the)g(.bss)f(section.)36 +b(Still,)676 3343 y(other)h(compilers)g(migh)n(t)h(not)g(do)g(that)g +(optimization,)i(and)e(as)f(the)h(C)g(standard)676 3442 +y(guaran)n(tees)26 b(the)h(initialization,)h(it)g(is)f(safe)g(to)h +(rely)f(on)g(it.)515 3666 y Ff(Bac)n(k)d(to)g Fg(F)-9 +b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 3945 y Fn(11.9)112 +b(Wh)m(y)48 b(do)f(some)i(16-bit)f(timer)f(registers)h(sometimes)g(get) +826 4061 y(trashed?)515 4262 y Fq(Some)33 b(of)g(the)g(timer-related)f +(16-bit)h(IO)g(registers)e(use)i(a)g(temp)r(orary)f(register)f +(\(called)515 4361 y(TEMP)j(in)f(the)g(A)n(tmel)h(datasheet\))f(to)f +(guaran)n(tee)f(an)i(atomic)g(access)e(to)i(the)h(register)515 +4461 y(despite)i(the)g(fact)f(that)h(t)n(w)n(o)f(separate)f(8-bit)h(IO) +h(transfers)e(are)h(required)f(to)i(actually)515 4560 +y(mo)n(v)n(e)h(the)j(data.)70 b(T)n(ypically)-7 b(,)41 +b(this)e(includes)g(access)f(to)g(the)i(curren)n(t)e(timer/coun)n(ter) +515 4660 y(v)-5 b(alue)32 b(register)f(\()p Fm(TCNT)p +Fl(n)6 b Fq(\),)33 b(the)h(input)f(capture)f(register)f(\()p +Fm(ICR)p Fl(n)6 b Fq(\),)34 b(and)e(write)h(access)e(to)515 +4760 y(the)g(output)g(compare)e(registers)g(\()p Fm(OCR)p +Fl(nM)14 b Fq(\).)30 b(Refer)g(to)h(the)g(actual)f(datasheet)g(for)g +(eac)n(h)515 4859 y(device's)d(set)g(of)h(registers)e(that)i(in)n(v)n +(olv)n(es)d(the)j(TEMP)h(register.)515 5006 y(When)d(accessing)e(one)h +(of)h(the)g(registers)e(that)i(use)f(TEMP)i(from)e(the)h(main)g +(application,)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 67 83 +TeXDict begin 67 82 bop 515 203 a Fs(11.10)94 b(Ho)m(w)31 +b(do)h(I)g(use)f(a)h(#de\034ne'd)f(constan)m(t)h(in)g(an)g(asm)f +(statemen)m(t?)74 b(67)p 515 236 2865 4 v 515 523 a Fq(and)22 +b(p)r(ossibly)g(an)n(y)f(other)h(one)g(from)g(within)h(an)f(in)n +(terrupt)g(routine,)h(care)e(m)n(ust)i(b)r(e)g(tak)n(en)515 +623 y(that)d(no)f(access)f(from)h(within)h(an)g(in)n(terrupt)f(con)n +(text)g(could)g(clobb)r(er)g(the)h(TEMP)h(register)515 +722 y(data)27 b(of)g(an)h(in-progress)d(transaction)h(that)i(has)f +(just)h(started)f(elsewhere.)515 869 y(T)-7 b(o)28 b(protect)g(in)n +(terrupt)h(routines)f(against)f(other)i(in)n(terrupt)f(routines,)g +(it's)h(usually)g(b)r(est)515 969 y(to)37 b(use)h(the)g +Fs(ISR\(\))g Fq(\(p.)14 b(253\))37 b(macro)f(when)i(declaring)f(the)h +(in)n(terrupt)f(function,)k(and)515 1068 y(to)35 b(ensure)h(that)g(in)n +(terrupts)f(are)g(still)h(disabled)f(when)h(accessing)f(those)g(16-bit) +g(timer)515 1168 y(registers.)515 1315 y(Within)h(the)f(main)g +(program,)g(access)f(to)h(those)g(registers)e(could)i(b)r(e)g +(encapsulated)g(in)515 1415 y(calls)28 b(to)h(the)h Fs(cli\(\))f +Fq(\(p.)14 b(253\))29 b(and)g Fs(sei\(\))f Fq(\(p.)14 +b(255\))29 b(macros.)40 b(If)30 b(the)f(status)g(of)h(the)f(global)515 +1514 y(in)n(terrupt)23 b(\035ag)g(b)r(efore)h(accessing)e(one)h(of)h +(those)f(registers)f(is)i(uncertain,)g(something)f(lik)n(e)515 +1614 y(the)28 b(follo)n(wing)e(example)h(co)r(de)h(can)f(b)r(e)h(used.) +515 1821 y Fj(uint16_t)515 1900 y(read_timer1\(void\))515 +1979 y({)797 2057 y(uint8_t)37 b(sreg;)797 2136 y(uint16_t)g(val;)797 +2294 y(sreg)f(=)g(SREG;)797 2373 y(cli\(\);)797 2452 +y(val)g(=)g(TCNT1;)797 2531 y(SREG)g(=)g(sreg;)797 2688 +y(return)h(val;)515 2767 y(})515 2995 y Ff(Bac)n(k)24 +b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 +3274 y Fn(11.10)112 b(Ho)m(w)33 b(do)h(I)g(use)g(a)h(#de\034ne'd)g +(constan)m(t)f(in)g(an)h(asm)g(state-)882 3391 y(men)m(t?)515 +3591 y Fq(So)27 b(y)n(ou)g(tried)g(this:)515 3798 y Fj(asm)36 +b(volatile\("sbi)j(0x18,0x07;"\);)515 4026 y Fq(Whic)n(h)27 +b(w)n(orks.)34 b(When)27 b(y)n(ou)f(do)g(the)h(same)f(thing)h(but)g +(replace)f(the)h(address)e(of)h(the)h(p)r(ort)515 4126 +y(b)n(y)g(its)h(macro)e(name,)h(lik)n(e)h(this:)515 4333 +y Fj(asm)36 b(volatile\("sbi)j(PORTB,0x07;"\);)515 4560 +y Fq(y)n(ou)27 b(get)g(a)g(compilation)g(error:)35 b +Fm("Error:)84 b(constant)40 b(value)i(required")p Fq(.)515 +4707 y Fm(PORTB)24 b Fq(is)i(a)f(precompiler)g(de\034nition)h(included) +h(in)f(the)h(pro)r(cessor)c(sp)r(eci\034c)j(\034le)h(included)515 +4807 y(in)22 b Fm(avr/io.h)40 b(\()p Fq(p.)15 b Fm(366\))p +Fq(.)33 b(As)22 b(y)n(ou)g(ma)n(y)f(kno)n(w,)i(the)f(precompiler)g +(will)g(not)g(touc)n(h)g(strings)515 4907 y(and)h Fm(PORTB)p +Fq(,)e(instead)i(of)g Fm(0x18)p Fq(,)f(gets)h(passed)f(to)h(the)h +(assem)n(bler.)34 b(One)22 b(w)n(a)n(y)g(to)h(a)n(v)n(oid)f(this)515 +5006 y(problem)27 b(is:)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 68 84 +TeXDict begin 68 83 bop 515 190 a Fs(11.11)94 b(Wh)m(y)32 +b(do)s(es)e(the)i(PC)g(randomly)g(jump)g(around)g(when)515 +290 y(single-stepping)c(through)k(m)m(y)g(program)g(in)f(a)m(vr-gdb?) +738 b(68)p 515 323 2865 4 v 515 523 a Fj(asm)36 b(volatile\("sbi)j +(\0450,)d(0x07")g(:)g("I")g(\(_SFR_IO_ADDR\(PORTB\)\):\);)506 +704 y Fs(Note:)676 853 y Fq(F)-7 b(or)34 b(C)g(programs,)g(rather)f +(use)h(the)h(standard)f(C)g(bit)h(op)r(erators)d(instead,)k(so)e(the) +676 953 y(ab)r(o)n(v)n(e)22 b(w)n(ould)i(b)r(e)g(expressed)e(as)h +Fm(PORTB)42 b Fh(j)p Fm(=)h(\(1)f Fo(<<)h Fm(7\))p Fq(.)35 +b(The)24 b(optimizer)f(will)h(tak)n(e)676 1053 y(care)h(to)g(transform) +g(this)g(in)n(to)h(a)f(single)g(SBI)h(instruction,)g(assuming)e(the)i +(op)r(erands)676 1152 y(allo)n(w)h(for)g(this.)515 1358 +y Ff(Bac)n(k)d(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 +b(60\).)515 1634 y Fn(11.11)112 b(Wh)m(y)59 b(do)s(es)i(the)e(PC)g +(randomly)i(jump)f(around)g(when)882 1750 y(single-stepping)39 +b(through)f(m)m(y)g(program)g(in)f(a)m(vr-gdb?)515 1950 +y Fq(When)24 b(compiling)g(a)g(program)e(with)j(b)r(oth)f(optimization) +g(\()p Fm(-O)p Fq(\))g(and)g(debug)g(information)515 +2050 y(\()p Fm(-g)p Fq(\))f(whic)n(h)f(is)h(fortunately)g(p)r(ossible)f +(in)h Fm(avr-gcc)p Fq(,)f(the)h(co)r(de)g(w)n(atc)n(hed)f(in)h(the)g +(debugger)515 2150 y(is)32 b(optimized)h(co)r(de.)52 +b(While)33 b(it)g(is)f(not)h(guaran)n(teed,)f(v)n(ery)f(often)i(this)g +(co)r(de)f(runs)h(with)515 2249 y(the)28 b(exact)f(same)g +(optimizations)g(as)g(it)h(w)n(ould)f(run)g(without)h(the)g +Fm(-g)f Fq(switc)n(h.)515 2396 y(This)h(can)g(ha)n(v)n(e)g(un)n(w)n(an) +n(ted)f(side)i(e\033ects.)40 b(Since)28 b(the)h(compiler)f(is)g(free)g +(to)h(reorder)d(co)r(de)515 2496 y(execution)40 b(as)f(long)h(as)g(the) +h(seman)n(tics)e(do)h(not)h(c)n(hange,)h(co)r(de)e(is)g(often)h +(rearranged)515 2595 y(in)33 b(order)e(to)i(mak)n(e)f(it)h(p)r(ossible) +g(to)g(use)f(a)h(single)f(branc)n(h)g(instruction)g(for)h(conditional) +515 2695 y(op)r(erations.)i(Branc)n(h)26 b(instructions)h(can)g(only)h +(co)n(v)n(er)d(a)i(short)g(range)f(for)h(the)h(target)f(PC)515 +2795 y(\(-63)j(through)h(+64)f(w)n(ords)g(from)i(the)g(curren)n(t)e +(PC\).)j(If)f(a)f(branc)n(h)f(instruction)i(cannot)515 +2894 y(b)r(e)38 b(used)g(directly)-7 b(,)41 b(the)d(compiler)g(needs)f +(to)h(w)n(ork)f(around)g(it)h(b)n(y)g(com)n(bining)g(a)f(skip)515 +2994 y(instruction)e(together)f(with)i(a)e(relativ)n(e)g(jump)i(\()p +Fm(rjmp)p Fq(\))f(instruction,)h(whic)n(h)g(will)f(need)515 +3093 y(one)27 b(additional)g(w)n(ord)f(of)i(R)n(OM.)515 +3240 y(Another)23 b(side)g(e\033ect)h(of)g(optimzation)f(is)g(that)h(v) +-5 b(ariable)22 b(usage)g(is)i(restricted)e(to)i(the)g(area)515 +3340 y(of)33 b(co)r(de)h(where)f(it)h(is)f(actually)g(used.)55 +b(So)33 b(if)i(a)e(v)-5 b(ariable)32 b(w)n(as)h(placed)g(in)h(a)f +(register)f(at)515 3440 y(the)26 b(b)r(eginning)f(of)h(some)f +(function,)h(this)g(same)f(register)f(can)h(b)r(e)h(re-used)f(later)f +(on)i(if)g(the)515 3539 y(compiler)33 b(notices)g(that)g(the)h(\034rst) +f(v)-5 b(ariable)33 b(is)g(no)h(longer)e(used)h(inside)h(that)g +(function,)515 3639 y(ev)n(en)c(though)h(the)h(v)-5 b(ariable)30 +b(is)h(still)h(in)f(lexical)f(scop)r(e.)48 b(When)31 +b(trying)g(to)g(examine)g(the)515 3738 y(v)-5 b(ariable)26 +b(in)i Fm(avr-gdb)p Fq(,)d(the)j(displa)n(y)n(ed)e(result)h(will)h +(then)g(lo)r(ok)f(garbled.)515 3885 y(So)37 b(in)i(order)d(to)i(a)n(v)n +(oid)e(these)i(side)g(e\033ects,)j(optimization)c(can)h(b)r(e)g(turned) +g(o\033)g(while)515 3985 y(debugging.)c(Ho)n(w)n(ev)n(er,)22 +b(some)g(of)g(these)h(optimizations)f(migh)n(t)g(also)g(ha)n(v)n(e)f +(the)i(side)g(e\033ect)515 4085 y(of)33 b(unco)n(v)n(ering)e(bugs)i +(that)h(w)n(ould)f(otherwise)f(not)h(b)r(e)h(ob)n(vious,)g(so)e(it)i(m) +n(ust)f(b)r(e)h(noted)515 4184 y(that)27 b(turning)f(o\033)h +(optimization)f(can)g(easily)g(c)n(hange)f(the)i(bug)g(pattern.)36 +b(In)27 b(most)f(cases,)515 4284 y(y)n(ou)h(are)f(b)r(etter)i(o\033)g +(lea)n(ving)e(optimizations)h(enabled)g(while)h(debugging.)515 +4431 y Ff(Bac)n(k)c(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 4706 y Fn(11.12)112 b(Ho)m(w)37 +b(do)g(I)h(trace)f(an)h(assem)m(bler)h(\034le)e(in)h(a)m(vr-gdb?)515 +4907 y Fq(When)33 b(using)f(the)h Fm(-g)f Fq(compiler)g(option,)h +Fm(avr-gcc)d Fq(only)i(generates)f(line)i(n)n(um)n(b)r(er)f(and)515 +5006 y(other)18 b(debug)h(information)g(for)f(C)h(\(and)h(C++\))e +(\034les)h(that)h(pass)e(the)i(compiler.)33 b(F)-7 b(unctions)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 69 85 +TeXDict begin 69 84 bop 515 203 a Fs(11.12)94 b(Ho)m(w)31 +b(do)h(I)g(trace)h(an)f(assem)m(bler)f(\034le)g(in)g(a)m(vr-gdb?)597 +b(69)p 515 236 2865 4 v 515 523 a Fq(that)27 b(don't)f(ha)n(v)n(e)g +(line)g(n)n(um)n(b)r(er)h(information)e(will)i(b)r(e)g(completely)f +(skipp)r(ed)h(b)n(y)f(a)h(single)515 623 y Fm(step)g +Fq(command)h(in)h Fm(gdb)p Fq(.)40 b(This)28 b(includes)h(functions)g +(link)n(ed)g(from)f(a)h(standard)e(library)-7 b(,)515 +722 y(but)33 b(b)n(y)g(default)h(also)e(functions)h(de\034ned)h(in)f +(an)g(assem)n(bler)f(source)g(\034le,)i(since)f(the)h +Fm(-g)515 822 y Fq(compiler)27 b(switc)n(h)g(do)r(es)g(not)h(apply)f +(to)g(the)h(assem)n(bler.)515 969 y(So)c(in)i(order)d(to)i(debug)g(an)f +(assem)n(bler)f(input)j(\034le)f(\(p)r(ossibly)g(one)f(that)h(has)g(to) +g(b)r(e)g(passed)515 1068 y(through)g(the)h(C)f(prepro)r(cessor\),)f +(it's)i(the)g(assem)n(bler)e(that)i(needs)g(to)f(b)r(e)h(told)g(to)g +(include)515 1168 y(line-n)n(um)n(b)r(er)37 b(information)h(in)n(to)f +(the)i(output)f(\034le.)69 b(\(Other)37 b(debug)h(information)f(lik)n +(e)515 1268 y(data)24 b(t)n(yp)r(es)g(and)g(v)-5 b(ariable)24 +b(allo)r(cation)f(cannot)h(b)r(e)h(generated,)f(since)g(unlik)n(e)h(a)f +(compiler,)515 1367 y(the)f(assem)n(bler)f(basically)g(do)r(esn't)h +(kno)n(w)f(ab)r(out)h(this.\))36 b(This)24 b(is)f(done)f(using)h(the)h +(\(GNU\))515 1467 y(assem)n(bler)i(option)h Fm(\025gstabs)p +Fq(.)515 1614 y(Example:)585 1822 y Fj($)36 b(avr-as)h(-mmcu=atmega128) +i(--gstabs)f(-o)d(foo.o)i(foo.s)515 2051 y Fq(When)h(the)h(assem)n +(bler)e(is)h(not)g(called)g(directly)f(but)i(through)f(the)g(C)g +(compiler)g(fron-)515 2151 y(tend)31 b(\(either)f(implicitly)h(b)n(y)f +(passing)g(a)g(source)f(\034le)i(ending)f(in)h(.S,)f(or)g(explicitly)g +(using)515 2250 y Fm(-x)42 b(assembler-with-cp)o(p)p +Fq(\),)27 b(the)33 b(compiler)e(fron)n(tend)h(needs)f(to)h(b)r(e)h +(told)f(to)g(pass)f(the)515 2350 y Fm(\025gstabs)19 b +Fq(option)i(do)n(wn)h(to)g(the)g(assem)n(bler.)33 b(This)22 +b(is)g(done)f(using)h Fm(-Wa,\025gstabs)p Fq(.)30 b(Please)515 +2450 y(tak)n(e)25 b(care)f(to)i Fl(only)33 b Fq(pass)25 +b(this)h(option)f(when)h(compiling)f(an)h(assem)n(bler)e(input)i +(\034le.)36 b(Oth-)515 2549 y(erwise,)c(the)g(assem)n(bler)e(co)r(de)h +(that)h(results)f(from)g(the)h(C)g(compilation)f(stage)f(will)i(also) +515 2649 y(get)27 b(line)h(n)n(um)n(b)r(er)f(information,)g(whic)n(h)g +(confuses)g(the)h(debugger.)506 2860 y Fs(Note:)676 3009 +y Fq(Y)-7 b(ou)24 b(can)f(also)f(use)h Fm(-Wa,-gstabs)c +Fq(since)k(the)h(compiler)f(will)h(add)f(the)h(extra)e +Fm('-')h Fq(for)676 3109 y(y)n(ou.)515 3338 y(Example:)585 +3546 y Fj($)36 b(EXTRA_OPTS="-Wall)k(-mmcu=atmega128)f(-x)d +(assembler-with-cpp")585 3625 y($)g(avr-gcc)h(-Wa,--gstabs)i +(${EXTRA_OPTS})f(-c)e(-o)g(foo.o)h(foo.S)515 3854 y Fq(Also)29 +b(note)h(that)f(the)h(debugger)f(migh)n(t)g(get)h(confused)f(when)h(en) +n(tering)f(a)g(piece)h(of)f(co)r(de)515 3954 y(that)38 +b(has)f(a)h(non-lo)r(cal)f(lab)r(el)h(b)r(efore,)i(since)e(it)g(then)h +(tak)n(es)d(this)j(lab)r(el)f(as)f(the)h(name)515 4053 +y(of)31 b(a)h(new)f(function)i(that)f(app)r(ears)e(to)i(ha)n(v)n(e)e(b) +r(een)i(en)n(tered.)49 b(Th)n(us,)33 b(the)f(b)r(est)g(practice)515 +4153 y(to)37 b(a)n(v)n(oid)f(this)i(confusion)f(is)g(to)h(only)f(use)g +(non-lo)r(cal)g(lab)r(els)g(when)h(declaring)e(a)h(new)515 +4253 y(function,)26 b(and)f(restrict)f(an)n(ything)h(else)g(to)g(lo)r +(cal)f(lab)r(els.)36 b(Lo)r(cal)24 b(lab)r(els)h(consist)g(just)g(of)g +(a)515 4352 y(n)n(um)n(b)r(er)j(only)-7 b(.)38 b(References)28 +b(to)g(these)h(lab)r(els)f(consist)f(of)i(the)f(n)n(um)n(b)r(er,)g +(follo)n(w)n(ed)g(b)n(y)g(the)515 4452 y(letter)23 b +Fs(b)g Fq(for)f(a)h(bac)n(kw)n(ard)e(reference,)i(or)f +Fs(f)h Fq(for)g(a)g(forw)n(ard)e(reference.)34 b(These)23 +b(lo)r(cal)f(lab)r(els)515 4551 y(ma)n(y)k(b)r(e)h(re-used)f(within)h +(the)h(source)d(\034le,)i(references)f(will)h(pic)n(k)g(the)g(closest)f +(lab)r(el)h(with)515 4651 y(the)h(same)f(n)n(um)n(b)r(er)g(and)g(giv)n +(en)g(direction.)515 4798 y(Example:)515 5006 y Fj(myfunc:)37 +b(push)142 b(r16)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 70 86 +TeXDict begin 70 85 bop 515 203 a Fs(11.13)94 b(Ho)m(w)31 +b(do)h(I)g(pass)f(an)i(IO)e(p)s(ort)h(as)g(a)g(parameter)g(to)g(a)g +(function?)110 b(70)p 515 236 2865 4 v 797 523 a Fj(push)142 +b(r17)797 602 y(push)g(r18)797 681 y(push)g(YL)797 760 +y(push)g(YH)797 839 y(...)797 917 y(eor)177 b(r16,)37 +b(r16)283 b(;)35 b(start)i(loop)797 996 y(ldi)177 b(YL,)36 +b(lo8\(sometable\))797 1075 y(ldi)177 b(YH,)36 b(hi8\(sometable\))797 +1154 y(rjmp)142 b(2f)495 b(;)35 b(jump)h(to)g(loop)h(test)f(at)g(end) +515 1233 y(1:)212 b(ld)g(r17,)37 b(Y+)318 b(;)35 b(loop)h(continues)i +(here)797 1312 y(...)797 1391 y(breq)142 b(1f)495 b(;)35 +b(return)i(from)f(myfunc)h(prematurely)797 1469 y(...)797 +1548 y(inc)177 b(r16)515 1627 y(2:)212 b(cmp)177 b(r16,)37 +b(r18)797 1706 y(brlo)142 b(1b)495 b(;)35 b(jump)h(back)h(to)f(top)g +(of)g(loop)515 1864 y(1:)212 b(pop)177 b(YH)797 1943 +y(pop)g(YL)797 2022 y(pop)g(r18)797 2100 y(pop)g(r17)797 +2179 y(pop)g(r16)797 2258 y(ret)515 2478 y Ff(Bac)n(k)24 +b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 +2756 y Fn(11.13)112 b(Ho)m(w)33 b(do)h(I)f(pass)i(an)f(IO)f(p)s(ort)g +(as)i(a)f(parameter)g(to)f(a)h(func-)882 2872 y(tion?)515 +3072 y Fq(Consider)26 b(this)i(example)f(co)r(de:)515 +3271 y Fj(#include)37 b()515 3350 y(#include)g() +515 3508 y(void)515 3587 y(set_bits_func_wrong)j(\(volatile)e(uint8_t)f +(port,)g(uint8_t)g(mask\))515 3665 y({)656 3744 y(port)f(|=)g(mask;)515 +3823 y(})515 3981 y(void)515 4060 y(set_bits_func_correct)41 +b(\(volatile)d(uint8_t)f(*port,)g(uint8_t)g(mask\))515 +4139 y({)656 4218 y(*port)f(|=)g(mask;)515 4296 y(})515 +4454 y(#define)h(set_bits_macro\(port,mask)q(\))k(\(\(port\))c(|=)f +(\(mask\)\))515 4612 y(int)g(main)g(\(void\))515 4691 +y({)656 4770 y(set_bits_func_wrong)k(\(PORTB,)e(0xaa\);)656 +4848 y(set_bits_func_correct)j(\(&PORTB,)c(0x55\);)656 +4927 y(set_bits_macro)i(\(PORTB,)e(0xf0\);)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 71 87 +TeXDict begin 71 86 bop 515 203 a Fs(11.13)94 b(Ho)m(w)31 +b(do)h(I)g(pass)f(an)i(IO)e(p)s(ort)h(as)g(a)g(parameter)g(to)g(a)g +(function?)110 b(71)p 515 236 2865 4 v 656 523 a Fj(return)37 +b(\(0\);)515 602 y(})515 832 y Fq(The)g(\034rst)g(function)h(will)g +(generate)e(ob)5 b(ject)37 b(co)r(de)g(whic)n(h)h(is)f(not)g(ev)n(en)g +(close)g(to)g(what)515 931 y(is)j(in)n(tended.)77 b(The)40 +b(ma)5 b(jor)40 b(problem)g(arises)f(when)i(the)g(function)g(is)g +(called.)76 b(When)515 1031 y(the)30 b(compiler)f(sees)h(this)g(call,)h +(it)f(will)g(actually)g(pass)f(the)h(v)-5 b(alue)30 b(of)g(the)h +Fm(PORTB)d Fq(register)515 1131 y(\(using)d(an)f Fm(IN)g +Fq(instruction\),)i(instead)f(of)g(passing)e(the)j(address)d(of)i +Fm(PORTB)e Fq(\(e.g.)36 b(memory)515 1230 y(mapp)r(ed)e(io)f(addr)g(of) +h Fm(0x38)p Fq(,)f(io)h(p)r(ort)f Fm(0x18)f Fq(for)h(the)i(mega128\).) +53 b(This)33 b(is)h(seen)f(clearly)515 1330 y(when)27 +b(lo)r(oking)g(at)g(the)h(disassem)n(bly)f(of)g(the)h(call:)656 +1539 y Fj(set_bits_func_wrong)40 b(\(PORTB,)e(0xaa\);)550 +1618 y(10a:)107 b(6a)36 b(ea)388 b(ldi)178 b(r22,)36 +b(0xAA)248 b(;)36 b(170)550 1697 y(10c:)107 b(88)36 b(b3)388 +b(in)213 b(r24,)36 b(0x18)248 b(;)36 b(24)550 1776 y(10e:)107 +b(0e)36 b(94)g(65)f(00)177 b(call)143 b(0xca)515 2006 +y Fq(So,)26 b(the)h(function,)g(once)e(called,)i(only)e(sees)h(the)h(v) +-5 b(alue)26 b(of)g(the)g(p)r(ort)g(register)f(and)h(kno)n(ws)515 +2105 y(nothing)h(ab)r(out)h(whic)n(h)g(p)r(ort)f(it)i(came)e(from.)37 +b(A)n(t)28 b(this)g(p)r(oin)n(t,)h(whatev)n(er)d(ob)5 +b(ject)28 b(co)r(de)f(is)515 2205 y(generated)i(for)g(the)i(function)f +(b)n(y)g(the)g(compiler)g(is)g(irrelev)-5 b(an)n(t.)43 +b(The)30 b(in)n(terested)g(reader)515 2304 y(can)f(examine)g(the)h +(full)g(disassem)n(bly)e(to)i(see)f(that)g(the)h(function's)g(b)r(o)r +(dy)g(is)f(completely)515 2404 y(fubar.)515 2551 y(The)39 +b(second)f(function)i(sho)n(ws)e(ho)n(w)g(to)h(pass)g(\(b)n(y)g +(reference\))f(the)i(memory)e(mapp)r(ed)515 2651 y(address)23 +b(of)h(the)h(io)f(p)r(ort)g(to)g(the)g(function)h(so)f(that)g(y)n(ou)g +(can)g(read)f(and)h(write)g(to)g(it)h(in)g(the)515 2750 +y(function.)37 b(Here's)27 b(the)h(ob)5 b(ject)27 b(co)r(de)h +(generated)e(for)h(the)h(function)g(call:)656 2959 y +Fj(set_bits_func_correct)41 b(\(&PORTB,)c(0x55\);)550 +3038 y(112:)107 b(65)36 b(e5)388 b(ldi)178 b(r22,)36 +b(0x55)248 b(;)36 b(85)550 3117 y(114:)107 b(88)36 b(e3)388 +b(ldi)178 b(r24,)36 b(0x38)248 b(;)36 b(56)550 3196 y(116:)107 +b(90)36 b(e0)388 b(ldi)178 b(r25,)36 b(0x00)248 b(;)36 +b(0)550 3275 y(118:)107 b(0e)36 b(94)g(7c)f(00)177 b(call)143 +b(0xf8)515 3505 y Fq(Y)-7 b(ou)35 b(can)h(clearly)e(see)h(that)h +Fm(0x0038)e Fq(is)h(correctly)f(passed)h(for)g(the)h(address)f(of)g +(the)h(io)515 3604 y(p)r(ort.)g(Lo)r(oking)26 b(at)g(the)i(disassem)n +(bled)d(ob)5 b(ject)27 b(co)r(de)f(for)h(the)g(b)r(o)r(dy)g(of)g(the)g +(function,)g(w)n(e)515 3704 y(can)g(see)g(that)h(the)g(function)g(is)f +(indeed)h(p)r(erforming)f(the)h(op)r(eration)e(w)n(e)i(in)n(tended:)515 +3913 y Fj(void)515 3992 y(set_bits_func_correct)41 b(\(volatile)d +(uint8_t)f(*port,)g(uint8_t)g(mask\))515 4071 y({)585 +4150 y(f8:)107 b(fc)36 b(01)388 b(movw)143 b(r30,)36 +b(r24)656 4229 y(*port)g(|=)g(mask;)585 4307 y(fa:)107 +b(80)36 b(81)388 b(ld)213 b(r24,)36 b(Z)585 4386 y(fc:)107 +b(86)36 b(2b)388 b(or)213 b(r24,)36 b(r22)585 4465 y(fe:)107 +b(80)36 b(83)388 b(st)213 b(Z,)35 b(r24)515 4544 y(})550 +4623 y(100:)107 b(08)36 b(95)388 b(ret)515 4853 y Fq(Notice)27 +b(that)h(w)n(e)f(are)g(accessing)f(the)i(io)f(p)r(ort)g(via)g(the)h +Fm(LD)f Fq(and)h Fm(ST)e Fq(instructions.)515 5000 y(The)h +Fm(port)f Fq(parameter)g(m)n(ust)i(b)r(e)g(v)n(olatile)e(to)i(a)n(v)n +(oid)e(a)h(compiler)g(w)n(arning.)p 515 5179 V 515 5255 +a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 72 88 +TeXDict begin 72 87 bop 515 203 a Fs(11.14)94 b(What)32 +b(registers)e(are)j(used)e(b)m(y)h(the)g(C)g(compiler?)620 +b(72)p 515 236 2865 4 v 506 497 a(Note:)676 647 y Fq(Because)33 +b(of)g(the)h(nature)f(of)h(the)g Fm(IN)f Fq(and)g Fm(OUT)g +Fq(assem)n(bly)f(instructions,)j(they)e(can)676 746 y(not)26 +b(b)r(e)g(used)f(inside)h(the)g(function)g(when)g(passing)e(the)i(p)r +(ort)g(in)f(this)h(w)n(a)n(y)-7 b(.)35 b(Readers)676 +846 y(in)n(terested)27 b(in)h(the)g(details)f(should)h(consult)f(the)h +Fl(Instruction)h(Set)35 b Fq(data)27 b(sheet.)515 1076 +y(Finally)33 b(w)n(e)h(come)f(to)h(the)g(macro)f(v)n(ersion)f(of)i(the) +g(op)r(eration.)55 b(In)34 b(this)g(con)n(triv)n(ed)f(ex-)515 +1176 y(ample,)f(the)h(macro)d(is)i(the)g(most)g(e\036cien)n(t)f(metho)r +(d)i(with)f(resp)r(ect)g(to)f(b)r(oth)h(execution)515 +1275 y(sp)r(eed)27 b(and)h(co)r(de)f(size:)656 1484 y +Fj(set_bits_macro)39 b(\(PORTB,)e(0xf0\);)550 1563 y(11c:)107 +b(88)36 b(b3)388 b(in)213 b(r24,)36 b(0x18)248 b(;)36 +b(24)550 1642 y(11e:)107 b(80)36 b(6f)388 b(ori)178 b(r24,)36 +b(0xF0)248 b(;)36 b(240)550 1721 y(120:)107 b(88)36 b(bb)388 +b(out)178 b(0x18,)36 b(r24)248 b(;)36 b(24)515 1951 y +Fq(Of)25 b(course,)g(in)h(a)f(real)g(application,)g(y)n(ou)g(migh)n(t)h +(b)r(e)g(doing)f(a)g(lot)h(more)e(in)i(y)n(our)f(function)515 +2050 y(whic)n(h)i(uses)f(a)h(passed)f(b)n(y)h(reference)f(io)g(p)r(ort) +h(address)f(and)h(th)n(us)g(the)g(use)g(of)g(a)g(function)515 +2150 y(o)n(v)n(er)j(a)i(macro)f(could)i(sa)n(v)n(e)e(y)n(ou)g(some)h +(co)r(de)g(space,)h(but)g(still)g(at)f(a)g(cost)g(of)g(execution)515 +2250 y(sp)r(eed.)515 2397 y(Care)d(should)h(b)r(e)h(tak)n(en)f(when)h +(suc)n(h)f(an)g(indirect)h(p)r(ort)f(access)f(is)i(going)e(to)h(one)g +(of)h(the)515 2496 y(16-bit)h(IO)h(registers)f(where)g(the)i(order)e +(of)h(write)g(access)f(is)i(critical)e(\(lik)n(e)h(some)g(timer)515 +2596 y(registers\).)45 b(All)31 b(v)n(ersions)f(of)g(a)n(vr-gcc)f(up)i +(to)g(3.3)f(will)h(generate)f(instructions)g(that)h(use)515 +2695 y(the)h(wrong)f(access)g(order)g(in)i(this)f(situation)g(\(since)h +(with)g(normal)e(memory)g(op)r(erands)515 2795 y(where)c(the)h(order)e +(do)r(esn't)i(matter,)f(this)h(sometimes)f(yields)g(shorter)f(co)r +(de\).)515 2942 y(See)18 b Fm(http://mail.nong)o(nu)o(.or)o(g/)o(ar)o +(chi)o(ve)o(/ht)o(ml)o(/a)o(vr-)o(li)o(bc)o(-de)o(v/)o(20)o(03-)o(01)o +(/m)o(sg0)o(00)o(44.)o(ht)o(ml)515 3042 y Fq(for)27 b(a)g(p)r(ossible)g +(w)n(ork)-5 b(around.)515 3188 y(a)n(vr-gcc)25 b(v)n(ersions)g(after)i +(3.3)f(ha)n(v)n(e)g(b)r(een)i(\034xed)f(in)h(a)f(w)n(a)n(y)f(where)g +(this)i(optimization)f(will)515 3288 y(b)r(e)f(disabled)g(if)h(the)g +(resp)r(ectiv)n(e)e(p)r(oin)n(ter)h(v)-5 b(ariable)25 +b(is)i(declared)e(to)h(b)r(e)h Fm(volatile)p Fq(,)c(so)j(the)515 +3388 y(correct)g(b)r(eha)n(viour)g(for)h(16-bit)g(IO)g(p)r(orts)g(can)g +(b)r(e)h(forced)f(that)h(w)n(a)n(y)-7 b(.)515 3535 y +Ff(Bac)n(k)24 b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 +b(60\).)515 3814 y Fn(11.14)112 b(What)37 b(registers)h(are)f(used)i(b) +m(y)e(the)g(C)h(compiler?)639 4015 y Fk(\210)j Fs(Data)33 +b(t)m(yp)s(es:)722 4147 y Fm(char)27 b Fq(is)i(8)f(bits,)i +Fm(int)d Fq(is)i(16)e(bits,)j Fm(long)d Fq(is)h(32)g(bits,)h +Fm(long)f Fq(long)f(is)i(64)f(bits,)h Fm(float)722 4247 +y Fq(and)e Fm(double)d Fq(are)h(32)h(bits)h(\(this)g(is)f(the)h(only)g +(supp)r(orted)f(\035oating)g(p)r(oin)n(t)g(format\),)722 +4347 y(p)r(oin)n(ters)35 b(are)f(16)g(bits)i(\(function)g(p)r(oin)n +(ters)f(are)f(w)n(ord)g(addresses,)h(to)h(allo)n(w)e(ad-)722 +4446 y(dressing)c(up)i(to)f(128K)e(program)g(memory)i(space\).)47 +b(There)31 b(is)g(a)g Fm(-mint8)d Fq(option)722 4546 +y(\(see)d Fs(Options)j(for)h(the)f(C)h(compiler)e(a)m(vr-gcc)g +Fq(\(p.)14 b(105\)\))25 b(to)f(mak)n(e)h Fm(int)e Fq(8)i(bits,)722 +4646 y(but)j(that)f(is)f(not)h(supp)r(orted)g(b)n(y)f(a)n(vr-lib)r(c)g +(and)g(violates)g(C)h(standards)e(\()p Fm(int)h Fl(must)722 +4745 y Fq(b)r(e)i(at)g(least)f(16)g(bits\).)37 b(It)28 +b(ma)n(y)f(b)r(e)h(remo)n(v)n(ed)e(in)h(a)h(future)g(release.)639 +4975 y Fk(\210)41 b Fs(Call-used)31 b(registers)f(\(r18-r27,)h +(r30-r31\):)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 73 89 +TeXDict begin 73 88 bop 515 203 a Fs(11.14)94 b(What)32 +b(registers)e(are)j(used)e(b)m(y)h(the)g(C)g(compiler?)620 +b(73)p 515 236 2865 4 v 722 523 a Fq(Ma)n(y)40 b(b)r(e)h(allo)r(cated)f +(b)n(y)g(gcc)g(for)g(lo)r(cal)g(data.)75 b(Y)-7 b(ou)41 +b Fl(may)48 b Fq(use)41 b(them)g(freely)f(in)722 623 +y(assem)n(bler)30 b(subroutines.)49 b(Calling)31 b(C)h(subroutines)f +(can)g(clobb)r(er)g(an)n(y)g(of)h(them)g(-)722 722 y(the)c(caller)f(is) +g(resp)r(onsible)g(for)g(sa)n(ving)f(and)h(restoring.)639 +935 y Fk(\210)41 b Fs(Call-sa)m(v)m(ed)32 b(registers)f(\(r2-r17,)g +(r28-r29\):)722 1064 y Fq(Ma)n(y)24 b(b)r(e)g(allo)r(cated)g(b)n(y)g +(gcc)f(for)h(lo)r(cal)f(data.)36 b(Calling)23 b(C)i(subroutines)e(lea)n +(v)n(es)g(them)722 1164 y(unc)n(hanged.)34 b(Assem)n(bler)19 +b(subroutines)f(are)h(resp)r(onsible)g(for)g(sa)n(ving)f(and)i +(restoring)722 1264 y(these)28 b(registers,)f(if)h(c)n(hanged.)37 +b(r29:r28)25 b(\(Y)k(p)r(oin)n(ter\))e(is)h(used)g(as)g(a)f(frame)h(p)r +(oin)n(ter)722 1363 y(\(p)r(oin)n(ts)c(to)g(lo)r(cal)g(data)f(on)h +(stac)n(k\))f(if)h(necessary)-7 b(.)34 b(The)24 b(requiremen)n(t)f(for) +g(the)i(callee)722 1463 y(to)30 b(sa)n(v)n(e/preserv)n(e)25 +b(the)30 b(con)n(ten)n(ts)f(of)g(these)g(registers)f(ev)n(en)h(applies) +g(in)h(situations)722 1562 y(where)d(the)h(compiler)f(assigns)f(them)i +(for)f(argumen)n(t)g(passing.)639 1775 y Fk(\210)41 b +Fs(Fixed)32 b(registers)e(\(r0,)i(r1\):)722 1904 y Fq(Nev)n(er)27 +b(allo)r(cated)g(b)n(y)g(gcc)g(for)g(lo)r(cal)g(data,)g(but)h(often)g +(used)g(for)f(\034xed)g(purp)r(oses:)515 2117 y(r0)e(-)h(temp)r(orary)f +(register,)g(can)h(b)r(e)g(clobb)r(ered)g(b)n(y)g(an)n(y)f(C)h(co)r(de) +g(\(except)h(in)n(terrupt)f(han-)515 2217 y(dlers)c(whic)n(h)i(sa)n(v)n +(e)d(it\),)k Fl(may)32 b Fq(b)r(e)23 b(used)h(to)f(remem)n(b)r(er)g +(something)f(for)h(a)g(while)h(within)f(one)515 2316 +y(piece)k(of)h(assem)n(bler)e(co)r(de)515 2463 y(r1)f(-)h(assumed)f(to) +i(b)r(e)f(alw)n(a)n(ys)e(zero)h(in)i(an)n(y)e(C)h(co)r(de,)h +Fl(may)34 b Fq(b)r(e)26 b(used)h(to)f(remem)n(b)r(er)f(some-)515 +2563 y(thing)j(for)g(a)g(while)h(within)g(one)f(piece)h(of)f(assem)n +(bler)f(co)r(de,)i(but)g Fl(must)35 b Fq(then)29 b(b)r(e)g(cleared)515 +2662 y(after)35 b(use)g(\()p Fm(clr)43 b(r1)p Fq(\).)59 +b(This)36 b(includes)f(an)n(y)g(use)g(of)g(the)h Fm([f]mul[s[u]])31 +b Fq(instructions,)515 2762 y(whic)n(h)24 b(return)g(their)h(result)f +(in)g(r1:r0.)34 b(In)n(terrupt)25 b(handlers)e(sa)n(v)n(e)g(and)h +(clear)g(r1)f(on)i(en)n(try)-7 b(,)515 2862 y(and)27 +b(restore)f(r1)h(on)g(exit)h(\(in)g(case)f(it)h(w)n(as)e(non-zero\).) +639 3074 y Fk(\210)41 b Fs(F)-8 b(unction)32 b(call)g(con)m(v)m(en)m +(tions:)722 3204 y Fq(Argumen)n(ts)e(-)g(allo)r(cated)f(left)i(to)f +(righ)n(t,)g(r25)f(to)h(r8.)44 b(All)31 b(argumen)n(ts)e(are)g(aligned) +722 3303 y(to)24 b(start)g(in)g(ev)n(en-n)n(um)n(b)r(ered)f(registers)f +(\(o)r(dd-sized)i(argumen)n(ts,)f(including)i Fm(char)p +Fq(,)722 3403 y(ha)n(v)n(e)j(one)g(free)h(register)e(ab)r(o)n(v)n(e)g +(them\).)41 b(This)29 b(allo)n(ws)e(making)h(b)r(etter)h(use)g(of)g +(the)722 3502 y Fm(movw)d Fq(instruction)i(on)f(the)h(enhanced)f(core.) +515 3715 y(If)h(to)r(o)f(man)n(y)-7 b(,)27 b(those)g(that)h(don't)g +(\034t)g(are)e(passed)h(on)g(the)h(stac)n(k.)515 3862 +y(Return)c(v)-5 b(alues:)34 b(8-bit)24 b(in)g(r24)f(\(not)h(r25!\),)g +(16-bit)f(in)h(r25:r24,)e(up)i(to)g(32)f(bits)h(in)g(r22-r25,)515 +3962 y(up)f(to)g(64)g(bits)g(in)h(r18-r25.)32 b(8-bit)23 +b(return)g(v)-5 b(alues)22 b(are)h(zero/sign-extended)d(to)k(16)e(bits) +h(b)n(y)515 4061 y(the)32 b(called)g(function)g(\()p +Fm(unsigned)41 b(char)30 b Fq(is)i(more)f(e\036cien)n(t)h(than)g +Fm(signed)41 b(char)31 b Fq(-)h(just)515 4161 y Fm(clr)42 +b(r25)p Fq(\).)35 b(Argumen)n(ts)23 b(to)g(functions)i(with)f(v)-5 +b(ariable)22 b(argumen)n(t)h(lists)h(\(prin)n(tf)g(etc.\))36 +b(are)515 4260 y(all)27 b(passed)g(on)g(stac)n(k,)g(and)g +Fm(char)f Fq(is)i(extended)f(to)h Fm(int)p Fq(.)506 4442 +y Fs(W)-8 b(arning:)676 4608 y Fq(There)29 b(w)n(as)f(no)h(suc)n(h)g +(alignmen)n(t)g(b)r(efore)g(2000-07-01,)c(including)k(the)h(old)f(patc) +n(hes)676 4707 y(for)40 b(gcc-2.95.2.)72 b(Chec)n(k)40 +b(y)n(our)f(old)h(assem)n(bler)e(subroutines,)43 b(and)d(adjust)h(them) +676 4807 y(accordingly)-7 b(.)515 5006 y Ff(Bac)n(k)24 +b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 74 90 +TeXDict begin 74 89 bop 515 203 a Fs(11.15)94 b(Ho)m(w)31 +b(do)h(I)g(put)g(an)g(arra)m(y)i(of)e(strings)e(completely)h(in)g(R)m +(OM?)188 b(74)p 515 236 2865 4 v 515 523 a Fn(11.15)112 +b(Ho)m(w)59 b(do)h(I)f(put)g(an)h(arra)m(y)g(of)g(strings)g(completely) +g(in)882 639 y(R)m(OM?)515 840 y Fq(There)35 b(are)g(times)i(when)f(y)n +(ou)g(ma)n(y)f(need)h(an)g(arra)n(y)e(of)i(strings)f(whic)n(h)h(will)h +(nev)n(er)e(b)r(e)515 939 y(mo)r(di\034ed.)g(In)22 b(this)h(case,)f(y)n +(ou)f(don't)h(w)n(an)n(t)f(to)h(w)n(aste)f(ram)h(storing)e(the)j +(constan)n(t)e(strings.)515 1039 y(The)27 b(most)h(ob)n(vious)e(\(and)i +(incorrect\))e(thing)i(to)f(do)h(is)f(this:)515 1246 +y Fj(#include)37 b()515 1404 y(PGM_P)f(array[2])i +(PROGMEM)f(=)f({)656 1483 y("Foo",)656 1561 y("Bar")515 +1640 y(};)515 1798 y(int)g(main)g(\(void\))515 1877 y({)656 +1956 y(char)g(buf[32];)656 2035 y(strcpy_P)h(\(buf,)g(array[1]\);)656 +2114 y(return)g(0;)515 2192 y(})515 2420 y Fq(The)g(result)g(is)h(not)f +(what)g(y)n(ou)g(w)n(an)n(t)g(though.)66 b(What)37 b(y)n(ou)g(end)h(up) +f(with)h(is)g(the)f(ar-)515 2520 y(ra)n(y)29 b(stored)i(in)g(R)n(OM,)g +(while)g(the)g(individual)h(strings)e(end)h(up)g(in)h(RAM)f(\(in)h(the) +g(.data)515 2619 y(section\).)515 2766 y(T)-7 b(o)27 +b(w)n(ork)f(around)h(this,)g(y)n(ou)g(need)h(to)f(do)h(something)f(lik) +n(e)g(this:)515 2973 y Fj(#include)37 b()515 +3131 y(const)f(char)h(foo[])f(PROGMEM)i(=)d("Foo";)515 +3210 y(const)h(char)h(bar[])f(PROGMEM)i(=)d("Bar";)515 +3368 y(PGM_P)h(array[2])i(PROGMEM)f(=)f({)656 3447 y(foo,)656 +3525 y(bar)515 3604 y(};)515 3762 y(int)g(main)g(\(void\))515 +3841 y({)656 3920 y(char)g(buf[32];)656 3999 y(PGM_P)g(p;)656 +4078 y(int)g(i;)656 4235 y(memcpy_P\(&p,)i(&array[i],)g +(sizeof\(PGM_P\)\);)656 4314 y(strcpy_P\(buf,)h(p\);)656 +4393 y(return)e(0;)515 4472 y(})515 4700 y Fq(Lo)r(oking)32 +b(at)g(the)i(disassem)n(bly)e(of)h(the)g(resulting)g(ob)5 +b(ject)32 b(\034le)i(w)n(e)e(see)h(that)g(arra)n(y)e(is)i(in)515 +4799 y(\035ash)27 b(as)g(suc)n(h:)515 5006 y Fj(00000026)37 +b(:)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 75 91 +TeXDict begin 75 90 bop 515 203 a Fs(11.15)94 b(Ho)m(w)31 +b(do)h(I)g(put)g(an)g(arra)m(y)i(of)e(strings)e(completely)h(in)g(R)m +(OM?)188 b(75)p 515 236 2865 4 v 585 523 a Fj(26:)107 +b(2e)36 b(00)388 b(.word)108 b(0x002e)72 b(;)35 b(????)585 +602 y(28:)107 b(2a)36 b(00)388 b(.word)108 b(0x002a)72 +b(;)35 b(????)515 760 y(0000002a)i(:)585 839 y(2a:)107 +b(42)36 b(61)g(72)f(00)1447 b(Bar.)515 996 y(0000002e)37 +b(:)585 1075 y(2e:)107 b(46)36 b(6f)g(6f)f(00)1447 +b(Foo.)515 1264 y Fm(foo)26 b Fq(is)i(at)f(addr)g(0x002e.)515 +1411 y Fm(bar)f Fq(is)i(at)f(addr)g(0x002a.)515 1558 +y Fm(array)e Fq(is)j(at)f(addr)g(0x0026.)515 1704 y(Then)g(in)h(main)g +(w)n(e)f(see)g(this:)656 1872 y Fj(memcpy_P\(&p,)38 b(&array[i],)g +(sizeof\(PGM_P\)\);)585 1951 y(70:)107 b(66)36 b(0f)388 +b(add)178 b(r22,)36 b(r22)585 2030 y(72:)107 b(77)36 +b(1f)388 b(adc)178 b(r23,)36 b(r23)585 2109 y(74:)107 +b(6a)36 b(5d)388 b(subi)143 b(r22,)36 b(0xDA)248 b(;)36 +b(218)585 2188 y(76:)107 b(7f)36 b(4f)388 b(sbci)143 +b(r23,)36 b(0xFF)248 b(;)36 b(255)585 2267 y(78:)107 +b(42)36 b(e0)388 b(ldi)178 b(r20,)36 b(0x02)248 b(;)36 +b(2)585 2346 y(7a:)107 b(50)36 b(e0)388 b(ldi)178 b(r21,)36 +b(0x00)248 b(;)36 b(0)585 2425 y(7c:)107 b(ce)36 b(01)388 +b(movw)143 b(r24,)36 b(r28)585 2503 y(7e:)107 b(81)36 +b(96)388 b(adiw)143 b(r24,)36 b(0x21)248 b(;)36 b(33)585 +2582 y(80:)107 b(08)36 b(d0)388 b(rcall)108 b(.+16)424 +b(;)36 b(0x92)515 2771 y Fq(This)e(co)r(de)f(reads)g(the)i(p)r(oin)n +(ter)e(to)h(the)g(desired)g(string)f(from)g(the)i(R)n(OM)e(table)h +Fm(array)515 2871 y Fq(in)n(to)27 b(a)g(register)f(pair.)515 +3018 y(The)c(v)-5 b(alue)22 b(of)g Fm(i)g Fq(\(in)h(r22:r23\))c(is)k +(doubled)f(to)g(accomo)r(date)f(for)g(the)i(w)n(ord)e(o\033set)h +(required)515 3117 y(to)28 b(access)f(arra)n(y[],)f(then)j(the)g +(address)e(of)h(arra)n(y)e(\(0x26\))h(is)i(added,)f(b)n(y)g +(subtracting)g(the)515 3217 y(negated)h(address)f(\(0x\033da\).)43 +b(The)29 b(address)f(of)i(v)-5 b(ariable)28 b Fm(p)i +Fq(is)f(computed)h(b)n(y)f(adding)g(its)515 3316 y(o\033set)h(within)h +(the)g(stac)n(k)f(frame)g(\(33\))g(to)g(the)h(Y)g(p)r(oin)n(ter)f +(register,)g(and)g Fs(memcp)m(y_P)515 3416 y Fq(is)d(called.)656 +3584 y Fj(strcpy_P\(buf,)39 b(p\);)585 3663 y(82:)107 +b(69)36 b(a1)388 b(ldd)178 b(r22,)36 b(Y+33)248 b(;)36 +b(0x21)585 3742 y(84:)107 b(7a)36 b(a1)388 b(ldd)178 +b(r23,)36 b(Y+34)248 b(;)36 b(0x22)585 3821 y(86:)107 +b(ce)36 b(01)388 b(movw)143 b(r24,)36 b(r28)585 3900 +y(88:)107 b(01)36 b(96)388 b(adiw)143 b(r24,)36 b(0x01)248 +b(;)36 b(1)585 3978 y(8a:)107 b(0c)36 b(d0)388 b(rcall)108 +b(.+24)424 b(;)36 b(0xa4)515 4167 y Fq(This)27 b(will)h(\034nally)f +(cop)n(y)g(the)h(R)n(OM)f(string)g(in)n(to)g(the)h(lo)r(cal)f(bu\033er) +h Fm(buf)p Fq(.)515 4314 y(V)-7 b(ariable)29 b Fm(p)h +Fq(\(lo)r(cated)g(at)g(Y+33\))f(is)h(read,)g(and)g(passed)g(together)f +(with)i(the)f(address)f(of)515 4414 y(buf)f(\(Y+1\))g(to)f +Fs(strcp)m(y_P)p Fq(.)i(This)f(will)g(cop)n(y)e(the)i(string)f(from)g +(R)n(OM)h(to)f Fm(buf)p Fq(.)515 4560 y(Note)37 b(that)g(when)g(using)g +(a)g(compile-time)g(constan)n(t)f(index,)k(omitting)d(the)g(\034rst)g +(step)515 4660 y(\(reading)30 b(the)h(p)r(oin)n(ter)g(from)f(R)n(OM)h +(via)f Fs(memcp)m(y_P)p Fq(\))i(usually)f(remains)f(unnoticed,)515 +4760 y(since)22 b(the)i(compiler)e(w)n(ould)h(then)g(optimize)g(the)g +(co)r(de)g(for)g(accessing)e Fm(array)g Fq(at)i(compile-)515 +4859 y(time.)515 5006 y Ff(Bac)n(k)h(to)g Fg(F)-9 b(A)n(Q)28 +b(Index)c Ff(\(p.)12 b(60\).)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 76 92 +TeXDict begin 76 91 bop 515 203 a Fs(11.16)94 b(Ho)m(w)31 +b(to)h(use)f(external)h(RAM?)1301 b(76)p 515 236 2865 +4 v 515 523 a Fn(11.16)112 b(Ho)m(w)37 b(to)g(use)h(external)g(RAM?)515 +724 y Fq(W)-7 b(ell,)42 b(there)d(is)g(no)f(univ)n(ersal)g(answ)n(er)f +(to)i(this)g(question;)45 b(it)39 b(dep)r(ends)g(on)g(what)g(the)515 +823 y(external)26 b(RAM)j(is)e(going)f(to)i(b)r(e)g(used)f(for.)515 +970 y(Basically)-7 b(,)40 b(the)f(bit)g Fm(SRE)e Fq(\(SRAM)j(enable\))e +(in)h(the)g Fm(MCUCR)d Fq(register)h(needs)i(to)f(b)r(e)h(set)515 +1070 y(in)f(order)f(to)h(enable)g(the)h(external)e(memory)h(in)n +(terface.)68 b(Dep)r(ending)39 b(on)f(the)g(device)515 +1169 y(to)31 b(b)r(e)g(used,)h(and)f(the)g(application)f(details,)i +(further)f(registers)e(a\033ecting)i(the)g(external)515 +1269 y(memory)23 b(op)r(eration)g(lik)n(e)h Fm(XMCRA)f +Fq(and)h Fm(XMCRB)p Fq(,)e(and/or)h(further)h(bits)h(in)f +Fm(MCUCR)e Fq(migh)n(t)j(b)r(e)515 1369 y(con\034gured.)35 +b(Refer)28 b(to)f(the)h(datasheet)f(for)g(details.)515 +1515 y(If)19 b(the)g(external)f(RAM)h(is)g(going)e(to)i(b)r(e)g(used)f +(to)h(store)f(the)h(v)-5 b(ariables)17 b(from)h(the)h(C)g(program)515 +1615 y(\(i.)37 b(e.,)27 b(the)g(.data)f(and/or)g(.bss)g(segmen)n(t\))h +(in)g(that)g(memory)f(area,)f(it)j(is)e(essen)n(tial)g(to)h(set)515 +1715 y(up)22 b(the)g(external)e(memory)h(in)n(terface)g(early)f(during) +i(the)g Fs(device)i(initialization)c Fq(\(p.)14 b(22\))515 +1814 y(so)26 b(the)h(initialization)f(of)g(these)h(v)-5 +b(ariable)25 b(will)i(tak)n(e)f(place.)36 b(Refer)27 +b(to)f Fs(Ho)m(w)k(to)h(mo)s(dify)515 1914 y(MCUCR)i(or)g(WDTCR)g +(early?)42 b Fq(\(p.)14 b(63\))29 b(for)f(a)h(description)f(ho)n(w)h +(to)f(do)h(this)g(using)515 2014 y(few)36 b(lines)g(of)g(assem)n(bler)f +(co)r(de,)j(or)d(to)h(the)g(c)n(hapter)f(ab)r(out)h(memory)f(sections)h +(for)f(an)515 2113 y Fs(example)c(written)h(in)f(C)c +Fq(\(p.)14 b(25\).)515 2260 y(The)29 b(explanation)g(of)36 +b Fs(mallo)s(c\(\))29 b Fq(\(p.)14 b(195\))29 b(con)n(tains)g(a)g +Fs(discussion)f Fq(\(p.)14 b(16\))29 b(ab)r(out)h(the)515 +2360 y(use)23 b(of)h(in)n(ternal)f(RAM)i(vs.)35 b(external)23 +b(RAM)h(in)g(particular)f(with)h(resp)r(ect)g(to)f(the)h(v)-5 +b(arious)515 2459 y(p)r(ossible)38 b(lo)r(cations)f(of)i(the)g +Fl(he)l(ap)45 b Fq(\(area)37 b(reserv)n(ed)g(for)h Fs(mallo)s(c\(\))f +Fq(\(p.)14 b(195\)\).)69 b(It)39 b(also)515 2559 y(explains)22 +b(the)h(link)n(er)f(command-line)g(options)h(that)g(are)f(required)f +(to)i(mo)n(v)n(e)f(the)h(memory)515 2659 y(regions)j(a)n(w)n(a)n(y)f +(from)i(their)h(resp)r(ectiv)n(e)f(standard)f(lo)r(cations)h(in)h(in)n +(ternal)f(RAM.)515 2805 y(Finally)-7 b(,)30 b(if)h(the)g(application)e +(simply)h(w)n(an)n(ts)f(to)h(use)g(the)h(additional)e(RAM)i(for)e(priv) +-5 b(ate)515 2905 y(data)28 b(storage)g(k)n(ept)h(outside)g(the)g +(domain)g(of)g(the)h(C)f(compiler)g(\(e.)42 b(g.)f(through)29 +b(a)g Fm(char)515 3005 y Fh(\003)39 b Fq(v)-5 b(ariable)38 +b(initialized)i(directly)f(to)g(a)h(particular)e(address\),)j(it)f(w)n +(ould)f(b)r(e)h(su\036cien)n(t)515 3104 y(to)d(defer)g(the)h +(initialization)f(of)g(the)g(external)g(RAM)h(in)n(terface)e(to)h(the)h +(b)r(eginning)f(of)515 3204 y Fs(main\(\))p Fq(,)32 b(so)e(no)h(t)n(w)n +(eaking)f(of)h(the)h(.init3)g(section)e(is)i(necessary)-7 +b(.)46 b(The)31 b(same)g(applies)g(if)515 3304 y(only)f(the)h(heap)f +(is)h(going)e(to)i(b)r(e)g(lo)r(cated)f(there,)h(since)g(the)f +(application)g(start-up)g(co)r(de)515 3403 y(do)r(es)d(not)h(a\033ect)f +(the)h(heap.)515 3550 y(It)21 b(is)f(not)g(recommended)g(to)h(lo)r +(cate)f(the)h(stac)n(k)e(in)i(external)e(RAM.)i(In)g(general,)g +(accessing)515 3650 y(external)32 b(RAM)h(is)g(slo)n(w)n(er)e(than)i +(in)n(ternal)f(RAM,)h(and)g(errata)e(of)i(some)f(A)-9 +b(VR)34 b(devices)515 3749 y(ev)n(en)27 b(prev)n(en)n(t)f(this)i +(con\034guration)e(from)h(w)n(orking)f(prop)r(erly)h(at)g(all.)515 +3896 y Ff(Bac)n(k)d(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 4176 y Fn(11.17)112 b(Whic)m(h)37 +b(-O)h(\035ag)g(to)f(use?)515 4376 y Fq(There's)h(a)h(common)f +(misconception)g(that)i(larger)d(n)n(um)n(b)r(ers)h(b)r(ehind)i(the)f +Fm(-O)f Fq(option)515 4476 y(migh)n(t)f(automatically)g(cause)f("b)r +(etter")h(optimization.)67 b(First,)40 b(there's)d(no)h(univ)n(ersal) +515 4575 y(de\034nition)h(for)g("b)r(etter",)i(with)f(optimization)f +(often)g(b)r(eing)g(a)g(sp)r(eed)g(vs.)71 b(co)r(de)39 +b(size)515 4675 y(tradeo\033.)46 b(See)31 b(the)g Fs(detailed)k +(discussion)29 b Fq(\(p.)14 b(110\))31 b(for)f(whic)n(h)h(option)f +(a\033ects)h(whic)n(h)515 4775 y(part)c(of)g(the)h(co)r(de)g +(generation.)515 4922 y(A)20 b(test)h(case)f(w)n(as)f(run)h(on)g(an)h +(A)-7 b(Tmega128)18 b(to)i(judge)h(the)f(e\033ect)h(of)g(compiling)f +(the)g(library)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 77 93 +TeXDict begin 77 92 bop 515 203 a Fs(11.18)94 b(Ho)m(w)31 +b(do)h(I)g(relo)s(cate)f(co)s(de)h(to)f(a)h(\034xed)g(address?)670 +b(77)p 515 236 2865 4 v 515 523 a Fq(itself)34 b(using)g(di\033eren)n +(t)g(optimization)g(lev)n(els.)55 b(The)34 b(follo)n(wing)f(table)h +(lists)g(the)h(results.)515 623 y(The)23 b(test)h(case)f(consisted)g +(of)h(around)e(2)h(KB)h(of)f(strings)g(to)g(sort.)35 +b(T)-7 b(est)24 b(#1)f(used)h Fs(qsort\(\))515 722 y +Fq(\(p.)14 b(195\))28 b(using)h(the)g(standard)f(library)h +Fs(strcmp\(\))g Fq(\(p.)14 b(206\),)29 b(test)g(#2)g(used)g(a)g +(function)515 822 y(that)d(sorted)f(the)h(strings)f(b)n(y)g(their)h +(size)g(\(th)n(us)g(had)g(t)n(w)n(o)f(calls)g(to)h Fs(strlen\(\))f +Fq(\(p.)14 b(208\))25 b(p)r(er)515 922 y(in)n(v)n(o)r(cation\).)515 +1068 y(When)e(comparing)d(the)j(resulting)e(co)r(de)i(size,)g(it)f +(should)g(b)r(e)h(noted)f(that)h(a)f(\035oating)f(p)r(oin)n(t)515 +1168 y(v)n(ersion)29 b(of)h(fvprin)n(tf\(\))i(w)n(as)d(link)n(ed)i(in)n +(to)f(the)h(binary)f(\(in)h(order)e(to)i(prin)n(t)f(out)h(the)g(time) +515 1268 y(elapsed\))e(whic)n(h)g(is)g(en)n(tirely)f(not)h(a\033ected)g +(b)n(y)g(the)h(di\033eren)n(t)f(optimization)f(lev)n(els,)h(and)515 +1367 y(added)e(ab)r(out)h(2.5)e(KB)h(to)h(the)g(co)r(de.)p +515 1426 V 515 1625 4 200 v 568 1496 a Fs(Optimization)568 +1596 y(\035ags)p 1230 1625 V 1283 1496 a(Size)k(of)f(.text)p +1945 1625 V 214 w(Time)g(for)h(test)1998 1596 y(#1)p +2660 1625 V 2714 1496 a(Time)f(for)h(test)2714 1596 y(#2)p +3376 1625 V 515 1629 2865 4 v 515 1728 4 100 v 568 1698 +a Fq(-O3)p 1230 1728 V 580 w(6898)p 1945 1728 V 547 w(903)27 +b Fk(\265)p Fq(s)p 2660 1728 V 484 w(19.7)f(ms)p 3376 +1728 V 515 1732 2865 4 v 515 1831 4 100 v 568 1801 a(-O2)p +1230 1831 V 580 w(6666)p 1945 1831 V 547 w(972)h Fk(\265)p +Fq(s)p 2660 1831 V 484 w(20.1)f(ms)p 3376 1831 V 515 +1835 2865 4 v 515 1934 4 100 v 568 1904 a(-Os)p 1230 +1934 V 589 w(6618)p 1945 1934 V 547 w(955)h Fk(\265)p +Fq(s)p 2660 1934 V 484 w(20.1)f(ms)p 3376 1934 V 515 +1938 2865 4 v 515 2137 4 200 v 568 2007 a(-Os)568 2107 +y(-mcall-prologues)p 1230 2137 V 1283 2007 a(6474)p 1945 +2137 V 547 w(972)h Fk(\265)p Fq(s)p 2660 2137 V 484 w(20.1)f(ms)p +3376 2137 V 515 2140 2865 4 v 515 2258 a(\(The)i(di\033erence)g(b)r(et) +n(w)n(een)g(955)f Fk(\265)p Fq(s)h(and)f(972)g Fk(\265)p +Fq(s)h(w)n(as)f(just)i(a)e(single)h(timer-tic)n(k,)f(so)h(tak)n(e)515 +2358 y(this)g(with)g(a)f(grain)f(of)i(salt.\))515 2504 +y(So)22 b(generally)-7 b(,)22 b(it)h(seems)e Fm(-Os)43 +b(-mcall-prologue)o(s)16 b Fq(is)23 b(the)f(most)h(univ)n(ersal)e("b)r +(est")g(opti-)515 2604 y(mization)k(lev)n(el.)36 b(Only)26 +b(applications)f(that)h(need)g(to)g(get)g(the)g(last)g(few)g(p)r(ercen) +n(t)g(of)g(sp)r(eed)515 2704 y(b)r(ene\034t)i(from)f(using)g +Fm(-O3)p Fq(.)515 2851 y Ff(Bac)n(k)d(to)g Fg(F)-9 b(A)n(Q)28 +b(Index)c Ff(\(p.)12 b(60\).)515 3130 y Fn(11.18)112 +b(Ho)m(w)37 b(do)g(I)h(relo)s(cate)f(co)s(de)h(to)f(a)g(\034xed)i +(address?)515 3331 y Fq(First,)28 b(the)g(co)r(de)g(should)g(b)r(e)h +(put)f(in)n(to)g(a)g(new)h Fs(named)k(section)27 b Fq(\(p.)14 +b(20\).)38 b(This)28 b(is)g(done)515 3430 y(with)g(a)f(section)g +(attribute:)515 3639 y Fj(__attribute__)39 b(\(\(section)e +(\(".bootloader"\)\)\))515 3869 y Fq(In)g(this)g(example,)i(.b)r(o)r +(otloader)d(is)h(the)g(name)g(of)g(the)g(new)g(section.)65 +b(This)37 b(attribute)515 3969 y(needs)24 b(to)h(b)r(e)g(placed)f +(after)g(the)h(protot)n(yp)r(e)f(of)g(an)n(y)g(function)h(to)f(force)g +(the)h(function)g(in)n(to)515 4069 y(the)j(new)f(section.)515 +4278 y Fj(void)36 b(boot\(void\))i(__attribute__)h(\(\(section)f +(\(".bootloader"\)\)\);)515 4508 y Fq(T)-7 b(o)37 b(relo)r(cate)f(the)i +(section)f(to)h(a)f(\034xed)g(address)f(the)i(link)n(er)f(\035ag)g +Fm(\025section-start)31 b Fq(is)515 4607 y(used.)36 b(This)27 +b(option)f(can)g(b)r(e)h(passed)e(to)i(the)f(link)n(er)g(using)g(the)h +Fs(-Wl)j(compiler)f(option)515 4707 y Fq(\(p.)14 b(111\):)515 +4916 y Fj(-Wl,--section-start=.boot)q(load)q(er=)q(0x1E)q(000)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 78 94 +TeXDict begin 78 93 bop 515 190 a Fs(11.19)94 b(My)31 +b(UAR)-8 b(T)33 b(is)e(generating)g(nonsense!)41 b(My)32 +b(A)-8 b(Tmega128)31 b(k)m(eeps)515 290 y(crashing!)42 +b(P)m(ort)33 b(F)f(is)f(completely)f(brok)m(en!)1150 +b(78)p 515 323 2865 4 v 515 523 a Fq(The)33 b(name)h(after)f +(section-start)f(is)i(the)g(name)f(of)g(the)h(section)g(to)f(b)r(e)h +(relo)r(cated.)54 b(The)515 623 y(n)n(um)n(b)r(er)27 +b(after)g(the)h(section)f(name)h(is)f(the)h(b)r(eginning)f(address)g +(of)g(the)h(named)g(section.)515 770 y Ff(Bac)n(k)c(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 1047 +y Fn(11.19)112 b(My)33 b(UAR)-9 b(T)31 b(is)i(generating)g(nonsense!)50 +b(My)33 b(A)-9 b(Tmega128)882 1164 y(k)m(eeps)38 b(crashing!)51 +b(P)m(ort)36 b(F)i(is)g(completely)g(brok)m(en!)515 1364 +y Fq(W)-7 b(ell,)32 b(certain)e(o)r(dd)h(problems)g(arise)e(out)i(of)g +(the)h(situation)e(that)i(the)f(A)-9 b(VR)31 b(devices)g(as)515 +1464 y(shipp)r(ed)c(b)n(y)g(A)n(tmel)g(often)g(come)g(with)g(a)g +(default)g(fuse)g(bit)h(con\034guration)d(that)i(do)r(esn't)515 +1563 y(matc)n(h)g(the)h(user's)f(exp)r(ectations.)36 +b(Here)27 b(is)h(a)f(list)h(of)f(things)h(to)f(care)g(for:)639 +1782 y Fk(\210)41 b Fq(All)27 b(devices)f(that)h(ha)n(v)n(e)f(an)g(in)n +(ternal)g(R)n(C)g(oscillator)f(ship)i(with)g(the)g(fuse)f(enabled)722 +1882 y(that)38 b(causes)f(the)i(device)e(to)h(run)g(o\033)g(this)g +(oscillator,)h(instead)e(of)h(an)g(external)722 1982 +y(crystal.)49 b(This)32 b(often)g(remains)f(unnoticed)g(un)n(til)i(the) +f(\034rst)f(attempt)i(is)f(made)f(to)722 2081 y(use)d(something)f +(critical)g(in)g(timing,)h(lik)n(e)g(UAR)-7 b(T)28 b(comm)n(unication.) +639 2243 y Fk(\210)41 b Fq(The)34 b(A)-7 b(Tmega128)31 +b(ships)j(with)g(the)f(fuse)h(enabled)f(that)h(turns)f(this)h(device)f +(in)n(to)722 2343 y(A)-7 b(Tmega103)38 b(compatibilit)n(y)h(mo)r(de.)73 +b(This)40 b(means)f(that)g(some)g(p)r(orts)h(are)e(not)722 +2442 y(fully)27 b(usable,)f(and)g(in)h(particular)d(that)j(the)f(in)n +(ternal)g(SRAM)h(is)f(lo)r(cated)g(at)g(lo)n(w)n(er)722 +2542 y(addresses.)63 b(Since)37 b(b)n(y)g(default,)i(the)e(stac)n(k)f +(is)h(lo)r(cated)f(at)h(the)g(top)g(of)g(in)n(ternal)722 +2641 y(SRAM,)29 b(a)f(program)e(compiled)h(for)h(an)g(A)-7 +b(Tmega128)26 b(running)h(on)h(suc)n(h)g(a)f(device)722 +2741 y(will)35 b(immediately)f(crash)g(up)r(on)g(the)h(\034rst)f +(function)h(call)f(\(or)g(rather,)h(up)r(on)g(the)722 +2841 y(\034rst)28 b(function)g(return\).)639 3002 y Fk(\210)41 +b Fq(Devices)28 b(with)h(a)f(JT)-7 b(A)n(G)29 b(in)n(terface)e(ha)n(v)n +(e)g(the)i Fm(JTAGEN)d Fq(fuse)j(programmed)d(b)n(y)i(de-)722 +3102 y(fault.)37 b(This)26 b(will)g(mak)n(e)f(the)h(resp)r(ectiv)n(e)g +(p)r(ort)f(pins)h(that)h(are)e(used)g(for)h(the)g(JT)-7 +b(A)n(G)722 3202 y(in)n(terface)27 b(una)n(v)-5 b(ailable)27 +b(for)g(regular)e(IO.)515 3421 y Ff(Bac)n(k)f(to)g Fg(F)-9 +b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 3698 y Fn(11.20)112 +b(Wh)m(y)75 b(do)h(all)g(m)m(y)g("fo)s(o...bar")h(strings)f(eat)f(up)h +(the)882 3815 y(SRAM?)515 4015 y Fq(By)24 b(default,)h(all)g(strings)e +(are)g(handled)i(as)f(all)g(other)g(initialized)g(v)-5 +b(ariables:)34 b(they)25 b(o)r(ccup)n(y)515 4115 y(RAM)e(\(ev)n(en)f +(though)g(the)h(compiler)e(migh)n(t)i(w)n(arn)e(y)n(ou)h(when)g(it)h +(detects)g(write)f(attempts)515 4214 y(to)31 b(these)g(RAM)h(lo)r +(cations\),)g(and)f(o)r(ccup)n(y)f(the)i(same)f(amoun)n(t)f(of)i +(\035ash)e(R)n(OM)h(so)g(they)515 4314 y(can)h(b)r(e)i(initialized)f +(to)g(the)g(actual)g(string)f(b)n(y)h(startup)g(co)r(de.)53 +b(The)33 b(compiler)f(can)h(op-)515 4414 y(timize)i(m)n(ultiple)h(iden) +n(tical)e(strings)g(in)n(to)h(a)g(single)f(one,)i(but)g(ob)n(viously)e +(only)g(for)g(one)515 4513 y(compilation)27 b(unit)h(\(i.)37 +b(e.,)28 b(a)f(single)g(C)h(source)e(\034le\).)515 4660 +y(That)35 b(w)n(a)n(y)-7 b(,)35 b(an)n(y)g(string)f(literal)g(will)h(b) +r(e)h(a)e(v)-5 b(alid)35 b(argumen)n(t)f(to)h(an)n(y)f(C)h(function)h +(that)515 4760 y(exp)r(ects)27 b(a)g Fm(const)42 b(char)g +Fh(\003)27 b Fq(argumen)n(t.)515 4907 y(Of)k(course,)h(this)g(is)g +(going)e(to)i(w)n(aste)e(a)i(lot)f(of)h(SRAM.)g(In)g +Fs(Program)37 b(Space)g(String)515 5006 y(Utilities)23 +b Fq(\(p.)14 b(260\),)25 b(a)g(metho)r(d)h(is)g(describ)r(ed)f(ho)n(w)g +(suc)n(h)g(constan)n(t)f(data)h(can)g(b)r(e)h(mo)n(v)n(ed)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 79 95 +TeXDict begin 79 94 bop 515 203 a Fs(11.20)94 b(Wh)m(y)32 +b(do)f(all)h(m)m(y)g("fo)s(o...bar")e(strings)g(eat)i(up)g(the)g(SRAM?) +223 b(79)p 515 236 2865 4 v 515 523 a Fq(out)23 b(to)h(\035ash)f(R)n +(OM.)h(Ho)n(w)n(ev)n(er,)e(a)i(constan)n(t)e(string)h(lo)r(cated)h(in)g +(\035ash)f(R)n(OM)g(is)h(no)f(longer)515 623 y(a)e(v)-5 +b(alid)23 b(argumen)n(t)d(to)i(pass)g(to)g(a)f(function)i(that)f(exp)r +(ects)g(a)g Fm(const)41 b(char)h Fh(\003)p Fq(-t)n(yp)r(e)22 +b(string,)515 722 y(since)e(the)g(A)-9 b(VR)20 b(pro)r(cessor)e(needs)i +(the)g(sp)r(ecial)g(instruction)g Fm(LPM)e Fq(to)i(access)f(these)h +(strings.)515 822 y(Th)n(us,)32 b(separate)e(functions)i(are)f(needed)h +(that)g(tak)n(e)f(this)h(in)n(to)f(accoun)n(t.)48 b(Man)n(y)31 +b(of)h(the)515 922 y(standard)27 b(C)h(library)e(functions)j(ha)n(v)n +(e)d(equiv)-5 b(alen)n(ts)28 b(a)n(v)-5 b(ailable)26 +b(where)i(one)f(of)h(the)h(string)515 1021 y(argumen)n(ts)h(can)h(b)r +(e)h(lo)r(cated)f(in)h(\035ash)f(R)n(OM.)h(Priv)-5 b(ate)31 +b(functions)h(in)g(the)g(applications)515 1121 y(need)c(to)g(handle)h +(this,)g(to)r(o.)38 b(F)-7 b(or)28 b(example,)g(the)h(follo)n(wing)e +(can)h(b)r(e)h(used)f(to)h(implemen)n(t)515 1220 y(simple)e(debugging)g +(messages)f(that)i(will)f(b)r(e)h(sen)n(t)g(through)f(a)g(UAR)-7 +b(T:)515 1430 y Fj(#include)37 b()515 1508 +y(#include)g()515 1587 y(#include)g()515 +1745 y(int)515 1824 y(uart_putchar\(char)j(c\))515 1903 +y({)585 1982 y(if)c(\(c)g(==)g('\\n'\))656 2061 y +(uart_putchar\('\\r'\);)585 2139 y(loop_until_bit_is_set\(U)q(SR,)42 +b(UDRE\);)585 2218 y(UDR)36 b(=)g(c;)585 2297 y(return)h(0;)f(/*)g(so)g +(it)g(could)g(be)g(used)g(for)g(fdevopen\(\),)j(too)d(*/)515 +2376 y(})515 2534 y(void)515 2613 y(debug_P\(const)j(char)d(*addr\))515 +2691 y({)585 2770 y(char)h(c;)585 2928 y(while)g(\(\(c)f(=)g +(pgm_read_byte\(addr++\)\)\))656 3007 y(uart_putchar\(c\);)515 +3086 y(})515 3244 y(int)515 3322 y(main\(void\))515 3401 +y({)585 3480 y(ioinit\(\);)i(/*)e(initialize)i(UART,)f(...)f(*/)585 +3559 y(debug_P\(PSTR\("foo)k(was)c(here\\n"\)\);)585 +3638 y(return)h(0;)515 3717 y(})506 3918 y Fs(Note:)676 +4068 y Fq(By)25 b(con)n(v)n(en)n(tion,)e(the)j(su\036x)e +Fs(_P)i Fq(to)e(the)h(function)h(name)e(is)h(used)g(as)f(an)g +(indication)676 4167 y(that)32 b(this)h(function)f(is)g(going)f(to)h +(accept)f(a)h("program-space)c(string".)49 b(Note)32 +b(also)676 4267 y(the)c(use)f(of)h(the)g Fs(PSTR\(\))g +Fq(\(p.)14 b(265\))27 b(macro.)515 4497 y Ff(Bac)n(k)d(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 80 96 +TeXDict begin 80 95 bop 515 190 a Fs(11.21)94 b(Wh)m(y)32 +b(do)s(es)e(the)i(compiler)f(compile)f(an)i(8-bit)f(op)s(eration)g +(that)i(uses)515 290 y(bit)m(wise)d(op)s(erators)i(in)m(to)f(a)i +(16-bit)d(op)s(eration)i(in)f(assem)m(bly?)514 b(80)p +515 323 2865 4 v 515 523 a Fn(11.21)112 b(Wh)m(y)40 b(do)s(es)h(the)f +(compiler)h(compile)g(an)g(8-bit)f(op)s(eration)882 639 +y(that)i(uses)g(bit)m(wise)g(op)s(erators)g(in)m(to)f(a)h(16-bit)g(op)s +(eration)882 756 y(in)c(assem)m(bly?)515 956 y Fq(Bit)n(wise)26 +b(op)r(erations)f(in)i(Standard)f(C)g(will)h(automatically)f(promote)f +(their)i(op)r(erands)e(to)515 1056 y(an)i(in)n(t,)h(whic)n(h)f(is)h +(\(b)n(y)f(default\))i(16)d(bits)i(in)g(a)n(vr-gcc.)515 +1202 y(T)-7 b(o)22 b(w)n(ork)f(around)h(this)h(use)g(t)n(yp)r(ecasts)f +(on)g(the)h(op)r(erands,)g(including)g(literals,)g(to)f(declare)515 +1302 y(that)28 b(the)g(v)-5 b(alues)27 b(are)f(to)i(b)r(e)g(8)f(bit)h +(op)r(erands.)515 1449 y(This)f(ma)n(y)g(b)r(e)h(esp)r(ecially)f(imp)r +(ortan)n(t)g(when)h(clearing)e(a)h(bit:)515 1658 y Fj(var)36 +b(&=)g(~mask;)72 b(/*)36 b(wrong)g(way!)h(*/)515 1888 +y Fq(The)31 b(bit)n(wise)f("not")g(op)r(erator)f(\()p +Fh(\030)p Fq(\))i(will)g(also)f(promote)g(the)h(v)-5 +b(alue)31 b(in)g Fm(mask)e Fq(to)i(an)g(in)n(t.)515 1988 +y(T)-7 b(o)27 b(k)n(eep)g(it)h(an)f(8-bit)h(v)-5 b(alue,)27 +b(t)n(yp)r(ecast)g(b)r(efore)g(the)h("not")f(op)r(erator:)515 +2197 y Fj(var)36 b(&=)g(\(unsigned)h(char\)~mask;)515 +2427 y Ff(Bac)n(k)24 b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 2706 y Fn(11.22)112 b(Ho)m(w)40 +b(to)h(detect)f(RAM)g(memory)i(and)f(v)-6 b(ariable)42 +b(o)m(v)m(erlap)882 2822 y(problems?)515 3023 y Fq(Y)-7 +b(ou)37 b(can)g(simply)g(run)g Fm(avr-nm)e Fq(on)i(y)n(our)f(output)h +(\(ELF\))i(\034le.)65 b(Run)38 b(it)g(with)f(the)h Fm(-n)515 +3123 y Fq(option,)g(and)e(it)h(will)g(sort)e(the)i(sym)n(b)r(ols)f(n)n +(umerically)f(\(b)n(y)i(default,)i(they)e(are)e(sorted)515 +3222 y(alphab)r(etically\).)515 3369 y(Lo)r(ok)h(for)h(the)h(sym)n(b)r +(ol)e Fm(_end)p Fq(,)j(that's)e(the)h(\034rst)f(address)f(in)h(RAM)h +(that)g(is)f(not)g(allo-)515 3469 y(cated)29 b(b)n(y)g(a)g(v)-5 +b(ariable.)41 b(\(a)n(vr-gcc)27 b(in)n(ternally)i(adds)g(0x800000)d(to) +j(all)g(data/bss)f(v)-5 b(ariable)515 3568 y(addresses,)32 +b(so)g(please)f(ignore)h(this)g(o\033set.\))52 b(Then,)34 +b(the)f(run-time)f(initialization)g(co)r(de)515 3668 +y(initializes)d(the)h(stac)n(k)e(p)r(oin)n(ter)i(\(b)n(y)f(default\))h +(to)g(p)r(oin)n(t)f(to)h(the)g(last)f(a)n(v)-5 b(aialable)27 +b(address)515 3768 y(in)33 b(\(in)n(ternal\))f(SRAM.)h(Th)n(us,)h(the)f +(region)e(b)r(et)n(w)n(een)i Fm(_end)e Fq(and)h(the)h(end)g(of)g(SRAM)g +(is)515 3867 y(what)e(is)f(a)n(v)-5 b(ailable)30 b(for)g(stac)n(k.)46 +b(\(If)32 b(y)n(our)e(application)g(uses)g Fs(mallo)s(c\(\))g +Fq(\(p.)14 b(195\),)31 b(whic)n(h)515 3967 y(e.)36 b(g.)g(also)25 +b(can)g(happ)r(en)h(inside)g Fs(prin)m(tf\(\))g Fq(\(p.)14 +b(180\),)26 b(the)g(heap)f(for)h(dynamic)f(memory)g(is)515 +4066 y(also)h(lo)r(cated)h(there.)37 b(See)28 b Fs(Memory)j(Areas)h +(and)g(Using)f(mallo)s(c\(\))c Fq(\(p.)14 b(15\).\))515 +4213 y(The)31 b(amoun)n(t)g(of)h(stac)n(k)e(required)h(for)f(y)n(our)h +(application)f(cannot)h(b)r(e)h(determined)g(that)515 +4313 y(easily)-7 b(.)43 b(F)-7 b(or)30 b(example,)g(if)h(y)n(ou)e +(recursiv)n(ely)f(call)i(a)g(function)h(and)f(forget)f(to)h(break)f +(that)515 4413 y(recursion,)22 b(the)g(amoun)n(t)g(of)g(stac)n(k)g +(required)f(is)h(in\034nite.)36 b(:-\))23 b(Y)-7 b(ou)22 +b(can)g(lo)r(ok)f(at)i(the)f(gener-)515 4512 y(ated)29 +b(assem)n(bler)e(co)r(de)i(\()p Fm(avr-gcc)41 b(...)86 +b(-S)p Fq(\),)28 b(there's)h(a)g(commen)n(t)g(in)g(eac)n(h)f(generated) +515 4612 y(assem)n(bler)f(\034le)j(that)f(tells)g(y)n(ou)g(the)g(frame) +g(size)g(for)g(eac)n(h)f(generated)g(function.)42 b(That's)515 +4711 y(the)29 b(amoun)n(t)g(of)g(stac)n(k)f(required)g(for)h(this)g +(function,)i(y)n(ou)d(ha)n(v)n(e)g(to)h(add)g(up)g(that)h(for)e(all)515 +4811 y(functions)g(where)f(y)n(ou)f(kno)n(w)h(that)h(the)g(calls)f +(could)g(b)r(e)h(nested.)515 4958 y Ff(Bac)n(k)c(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 81 97 +TeXDict begin 81 96 bop 515 203 a Fs(11.23)94 b(Is)31 +b(it)h(really)f(imp)s(ossible)e(to)i(program)h(the)g(A)-8 +b(Ttin)m(yXX)33 b(in)f(C?)160 b(81)p 515 236 2865 4 v +515 523 a Fn(11.23)112 b(Is)34 b(it)g(really)h(imp)s(ossible)i(to)d +(program)h(the)f(A)-9 b(Ttin)m(yXX)33 b(in)882 639 y(C?)515 +840 y Fq(While)23 b(some)f(small)g(A)-9 b(VRs)23 b(are)f(not)h +(directly)f(supp)r(orted)g(b)n(y)h(the)g(C)f(compiler)g(since)h(they) +515 939 y(do)32 b(not)g(ha)n(v)n(e)f(a)h(RAM-based)f(stac)n(k)h(\(and)g +(some)g(do)g(not)g(ev)n(en)f(ha)n(v)n(e)g(RAM)i(at)f(all\),)i(it)515 +1039 y(is)29 b(p)r(ossible)g(an)n(yw)n(a)n(y)f(to)h(use)h(the)g +(general-purp)r(ose)d(registers)h(as)h(a)g(RAM)h(replacemen)n(t)515 +1139 y(since)d(they)h(are)e(mapp)r(ed)i(in)n(to)g(the)g(data)f(memory)f +(region.)515 1285 y(Bruce)k(D.)h(Ligh)n(tner)f(wrote)g(an)g(excellen)n +(t)g(description)g(of)h(ho)n(w)f(to)g(do)h(this,)g(and)g(o\033ers)515 +1385 y(this)d(together)e(with)i(a)f(to)r(olkit)h(on)f(his)h(w)n(eb)f +(page:)515 1532 y Fm(http://lightner)o(.ne)o(t/)o(av)o(r/A)o(Tt)o(in)o +(yAv)o(rG)o(cc)o(.ht)o(ml)515 1679 y Ff(Bac)n(k)d(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 1958 +y Fn(11.24)112 b(What)37 b(is)h(this)g("clo)s(c)m(k)f(sk)m(ew)g +(detected")h(messsage?)515 2159 y Fq(It's)21 b(a)g(kno)n(wn)g(problem)f +(of)i(the)f(MS-DOS)h(F)-9 b(A)i(T)21 b(\034le)h(system.)34 +b(Since)22 b(the)f(F)-9 b(A)i(T)22 b(\034le)f(system)515 +2259 y(has)33 b(only)g(a)g(gran)n(ularit)n(y)e(of)i(2)g(seconds)g(for)g +(main)n(taining)g(a)g(\034le's)g(timestamp,)i(and)f(it)515 +2358 y(seems)g(that)g(some)g(MS-DOS)g(deriv)-5 b(ativ)n(e)34 +b(\(Win9x\))g(p)r(erhaps)g(rounds)g(up)g(the)h(curren)n(t)515 +2458 y(time)40 b(to)f(the)h(next)g(second)f(when)h(calculating)f(the)h +(timestamp)g(of)f(an)h(up)r(dated)g(\034le)515 2557 y(in)35 +b(case)e(the)i(curren)n(t)f(time)h(cannot)f(b)r(e)h(represen)n(ted)e +(in)i(F)-9 b(A)i(T's)34 b(terms,)i(this)f(causes)e(a)515 +2657 y(situation)27 b(where)g Fm(make)f Fq(sees)h(a)g("\034le)g(coming) +g(from)g(the)h(future".)515 2804 y(Since)i(all)g(mak)n(e)f(decisions)g +(are)g(based)g(on)h(\034le)g(timestamps,)h(and)f(their)g(dep)r +(endencies,)515 2904 y(mak)n(e)c(w)n(arns)h(ab)r(out)g(this)h +(situation.)515 3050 y(Solution:)40 b(don't)30 b(use)f(inferior)g +(\034le)g(systems)g(/)g(op)r(erating)g(systems.)42 b(Neither)29 +b(Unix)h(\034le)515 3150 y(systems)d(nor)g(HPFS)h(\(ak)-5 +b(a)27 b(NTFS\))i(do)e(exp)r(erience)g(that)h(problem.)515 +3297 y(W)-7 b(ork)i(around:)32 b(after)21 b(sa)n(ving)f(the)i(\034le,)g +(w)n(ait)f(a)g(second)g(b)r(efore)g(starting)f Fm(make)p +Fq(.)34 b(Or)20 b(simply)515 3397 y(ignore)32 b(the)i(w)n(arning.)54 +b(If)34 b(y)n(ou)f(are)g(paranoid,)h(execute)f(a)g Fm(make)42 +b(clean)g(all)32 b Fq(to)i(mak)n(e)515 3496 y(sure)27 +b(ev)n(erything)f(gets)h(rebuilt.)515 3643 y(In)k(net)n(w)n(ork)n(ed)e +(en)n(vironmen)n(ts)g(where)i(the)g(\034les)g(are)e(accessed)h(from)h +(a)f(\034le)h(serv)n(er,)f(this)515 3743 y(message)37 +b(can)i(also)f(happ)r(en)h(if)h(the)f(\034le)g(serv)n(er's)e(clo)r(c)n +(k)i(di\033ers)f(to)r(o)h(m)n(uc)n(h)g(from)g(the)515 +3842 y(net)n(w)n(ork)24 b(clien)n(t's)i(clo)r(c)n(k.)36 +b(In)26 b(this)h(case,)e(the)i(solution)e(is)h(to)g(use)g(a)g(prop)r +(er)f(time)i(k)n(eeping)515 3942 y(proto)r(col)g(on)h(b)r(oth)h +(systems,)g(lik)n(e)f(NTP)-7 b(.)30 b(As)e(a)g(w)n(ork)-5 +b(around,)27 b(sync)n(hronize)g(the)i(clien)n(t's)515 +4042 y(clo)r(c)n(k)e(frequen)n(tly)g(with)h(the)g(serv)n(er's)d(clo)r +(c)n(k.)515 4188 y Ff(Bac)n(k)f(to)g Fg(F)-9 b(A)n(Q)28 +b(Index)c Ff(\(p.)12 b(60\).)515 4468 y Fn(11.25)112 +b(Wh)m(y)40 b(are)h(\(man)m(y\))g(in)m(terrupt)e(\035ags)j(cleared)f(b) +m(y)f(writing)882 4584 y(a)e(logical)g(1?)515 4785 y +Fq(Usually)-7 b(,)33 b(eac)n(h)e(in)n(terrupt)h(has)g(its)g(o)n(wn)g +(in)n(terrupt)g(\035ag)f(bit)i(in)f(some)g(con)n(trol)f(register,)515 +4884 y(indicating)24 b(the)g(sp)r(eci\034ed)g(in)n(terrupt)g(condition) +g(has)f(b)r(een)i(met)f(b)n(y)g(represen)n(ting)f(a)g(logi-)515 +4984 y(cal)i(1)f(in)i(the)g(resp)r(ectiv)n(e)e(bit)i(p)r(osition.)36 +b(When)26 b(w)n(orking)d(with)j(in)n(terrupt)f(handlers,)g(this)p +515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 82 98 +TeXDict begin 82 97 bop 515 203 a Fs(11.26)94 b(Wh)m(y)32 +b(ha)m(v)m(e)h("programmed")e(fuses)g(the)g(bit)h(v)-5 +b(alue)31 b(0?)462 b(82)p 515 236 2865 4 v 515 523 a +Fq(in)n(terrupt)27 b(\035ag)g(bit)i(usually)e(gets)h(cleared)f +(automatically)g(in)h(the)g(course)f(of)h(pro)r(cessing)515 +623 y(the)36 b(in)n(terrupt,)i(sometimes)d(b)n(y)h(just)h(calling)e +(the)h(handler)g(at)g(all,)i(sometimes)d(\(e.)62 b(g.)515 +722 y(for)29 b(the)h(U[S]AR)-7 b(T\))31 b(b)n(y)f(reading)e(a)i +(particular)e(hardw)n(are)g(register)g(that)i(will)g(normally)515 +822 y(happ)r(en)e(an)n(yw)n(a)n(y)d(when)j(pro)r(cessing)e(the)i(in)n +(terrupt.)515 969 y(F)-7 b(rom)20 b(the)i(hardw)n(are's)c(p)r(oin)n(t)j +(of)g(view,)i(an)d(in)n(terrupt)h(is)g(asserted)f(as)g(long)g(as)h(the) +g(resp)r(ec-)515 1068 y(tiv)n(e)28 b(bit)i(is)e(set,)h(while)g(global)f +(in)n(terrupts)g(are)g(enabled.)40 b(Th)n(us,)29 b(it)g(is)g(essen)n +(tial)f(to)g(ha)n(v)n(e)515 1168 y(the)34 b(bit)g(cleared)f(b)r(efore)h +(in)n(terrupts)f(get)g(re-enabled)g(again)g(\(whic)n(h)h(usually)f +(happ)r(ens)515 1268 y(when)27 b(returning)g(from)g(an)h(in)n(terrupt)f +(handler\).)515 1415 y(Only)34 b(few)i(subsystems)e(require)g(an)h +(explicit)g(action)g(to)g(clear)f(the)h(in)n(terrupt)g(request)515 +1514 y(when)f(using)g(in)n(terrupt)g(handlers.)57 b(\(The)34 +b(notable)g(exception)g(is)g(the)h(TWI)g(in)n(terface,)515 +1614 y(where)c(clearing)f(the)h(in)n(terrupt)g(indicates)g(to)h(pro)r +(ceed)e(with)i(the)g(TWI)g(bus)f(hardw)n(are)515 1713 +y(handshak)n(e,)26 b(so)h(it's)h(nev)n(er)e(done)i(automatically)-7 +b(.\))515 1860 y(Ho)n(w)n(ev)n(er,)32 b(if)h(no)g(normal)f(in)n +(terrupt)g(handlers)g(are)g(to)g(b)r(e)i(used,)g(or)e(in)h(order)e(to)i +(mak)n(e)515 1960 y(extra)c(sure)g(an)n(y)g(p)r(ending)h(in)n(terrupt)g +(gets)f(cleared)g(b)r(efore)h(re-activ)-5 b(ating)28 +b(global)h(in)n(ter-)515 2060 y(rupts)j(\(e.)53 b(g.)f(an)32 +b(external)g(edge-triggered)e(one\),)k(it)f(can)f(b)r(e)i(necessary)c +(to)j(explicitly)515 2159 y(clear)24 b(the)i(resp)r(ectiv)n(e)f(hardw)n +(are)e(in)n(terrupt)i(bit)h(b)n(y)f(soft)n(w)n(are.)35 +b(This)25 b(is)g(usually)g(done)g(b)n(y)515 2259 y(writing)j(a)g +(logical)f(1)i(in)n(to)f(this)h(bit)g(p)r(osition.)40 +b(This)28 b(seems)h(to)f(b)r(e)h(illogical)f(at)g(\034rst,)h(the)515 +2358 y(bit)j(p)r(osition)f(already)f(carries)g(a)h(logical)f(1)h(when)g +(reading)g(it,)h(so)f(wh)n(y)g(do)r(es)g(writing)g(a)515 +2458 y(logical)26 b(1)h(to)h(it)g Fl(cle)l(ar)37 b Fq(the)28 +b(in)n(terrupt)f(bit?)515 2605 y(The)21 b(solution)g(is)g(simple:)34 +b(writing)20 b(a)h(logical)f(1)h(to)g(it)h(requires)d(only)i(a)g +(single)g Fm(OUT)f Fq(instruc-)515 2705 y(tion,)34 b(and)e(it)h(is)g +(clear)e(that)i(only)f(this)h(single)f(in)n(terrupt)g(request)g(bit)h +(will)g(b)r(e)g(cleared.)515 2804 y(There)21 b(is)i(no)e(need)i(to)f(p) +r(erform)g(a)f(read-mo)r(dify-write)g(cycle)h(\(lik)n(e,)h(an)f +Fm(SBI)f Fq(instruction\),)515 2904 y(since)30 b(all)h(bits)g(in)g +(these)g(con)n(trol)e(registers)g(are)h(in)n(terrupt)g(bits,)i(and)f +(writing)f(a)g(logical)515 3003 y(0)j(to)h(the)h(remaining)e(bits)h +(\(as)g(it)h(is)f(done)f(b)n(y)h(the)h(simple)f Fm(OUT)f +Fq(instruction\))h(will)g(not)515 3103 y(alter)21 b(them,)j(so)e(there) +g(is)g(no)g(risk)f(of)i(an)n(y)e(race)g(condition)h(that)h(migh)n(t)f +(acciden)n(tally)f(clear)515 3203 y(another)26 b(in)n(terrupt)i +(request)e(bit.)38 b(So)27 b(instead)g(of)h(writing)515 +3412 y Fj(TIFR)36 b(|=)g(_BV\(TOV0\);)i(/*)e(wrong!)h(*/)515 +3642 y Fq(simply)27 b(use)515 3851 y Fj(TIFR)36 b(=)g(_BV\(TOV0\);)515 +4081 y Ff(Bac)n(k)24 b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 4360 y Fn(11.26)112 b(Wh)m(y)37 +b(ha)m(v)m(e)i("programmed")f(fuses)h(the)e(bit)g(v)-6 +b(alue)39 b(0?)515 4561 y Fq(Basically)-7 b(,)24 b(fuses)g(are)g(just)h +(a)f(bit)h(in)g(a)f(sp)r(ecial)h(EEPR)n(OM)g(area.)35 +b(F)-7 b(or)24 b(tec)n(hnical)g(reasons,)515 4660 y(erased)h(E[E]PR)n +(OM)i(cells)g(ha)n(v)n(e)e(all)h(bits)h(set)f(to)g(the)h(v)-5 +b(alue)26 b(1,)h(so)e(unprogrammed)g(fuses)515 4760 y(also)f(ha)n(v)n +(e)f(a)i(logical)e(1.)36 b(Con)n(v)n(ersely)-7 b(,)23 +b(programmed)g(fuse)i(cells)g(read)f(out)h(as)f(bit)i(v)-5 +b(alue)24 b(0.)515 4907 y Ff(Bac)n(k)g(to)g Fg(F)-9 b(A)n(Q)28 +b(Index)c Ff(\(p.)12 b(60\).)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 83 99 +TeXDict begin 83 98 bop 515 203 a Fs(11.27)94 b(Whic)m(h)31 +b(A)-11 b(VR-sp)s(eci\034c)32 b(assem)m(bler)f(op)s(erators)g(are)h(a)m +(v)-5 b(ailable?)156 b(83)p 515 236 2865 4 v 515 523 +a Fn(11.27)112 b(Whic)m(h)40 b(A)-12 b(VR-sp)s(eci\034c)40 +b(assem)m(bler)i(op)s(erators)e(are)h(a)m(v)-6 b(ail-)882 +639 y(able?)515 840 y Fq(See)27 b Fs(Pseudo-ops)k(and)h(op)s(erators)27 +b Fq(\(p.)14 b(35\).)515 987 y Ff(Bac)n(k)24 b(to)g Fg(F)-9 +b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 1266 y Fn(11.28)112 +b(Wh)m(y)25 b(are)h(in)m(terrupts)f(re-enabled)j(in)e(the)f(middle)i +(of)e(writ-)882 1382 y(ing)38 b(the)f(stac)m(k)g(p)s(oin)m(ter?)515 +1583 y Fq(When)30 b(setting)g(up)h(space)e(for)g(lo)r(cal)h(v)-5 +b(ariables)28 b(on)i(the)g(stac)n(k,)g(the)g(compiler)g(generates)515 +1683 y(co)r(de)d(lik)n(e)g(this:)515 1892 y Fj(/*)36 +b(prologue:)h(frame)g(size=20)g(*/)797 1971 y(push)f(r28)797 +2049 y(push)g(r29)797 2128 y(in)g(r28,__SP_L__)797 2207 +y(in)g(r29,__SP_H__)797 2286 y(sbiw)g(r28,20)797 2365 +y(in)g(__tmp_reg__,__SREG__)797 2444 y(cli)797 2523 y(out)g +(__SP_H__,r29)797 2602 y(out)g(__SREG__,__tmp_reg__)797 +2680 y(out)g(__SP_L__,r28)515 2759 y(/*)g(prologue)h(end)f(\(size=10\)) +i(*/)515 2989 y Fq(It)29 b(reads)f(the)h(curren)n(t)f(stac)n(k)g(p)r +(oin)n(ter)g(v)-5 b(alue,)29 b(decremen)n(ts)g(it)g(b)n(y)f(the)i +(required)e(amoun)n(t)515 3089 y(of)23 b(b)n(ytes,)g(then)h(disables)e +(in)n(terrupts,)i(writes)f(bac)n(k)f(the)h(high)g(part)g(of)g(the)g +(stac)n(k)f(p)r(oin)n(ter,)515 3188 y(writes)32 b(bac)n(k)g(the)h(sa)n +(v)n(ed)e Fm(SREG)g Fq(\(whic)n(h)i(will)g(ev)n(en)n(tually)f +(re-enable)g(in)n(terrupts)g(if)h(they)515 3288 y(ha)n(v)n(e)26 +b(b)r(een)i(enabled)f(b)r(efore\),)h(and)f(\034nally)h(writes)f(the)h +(lo)n(w)f(part)g(of)g(the)h(stac)n(k)f(p)r(oin)n(ter.)515 +3435 y(A)n(t)40 b(the)g(\034rst)f(glance,)j(there's)d(a)g(race)f(b)r +(et)n(w)n(een)i(restoring)e Fm(SREG)p Fq(,)g(and)h(writing)g +Fm(SPL)p Fq(.)515 3535 y(Ho)n(w)n(ev)n(er,)25 b(after)i(enabling)f(in)n +(terrupts)h(\(either)g(explicitly)g(b)n(y)g(setting)g(the)g +Fm(I)g Fq(\035ag,)f(or)g(b)n(y)515 3634 y(restoring)19 +b(it)j(as)e(part)h(of)g(the)g(en)n(tire)g Fm(SREG)p Fq(\),)f(the)h(A)-9 +b(VR)22 b(hardw)n(are)d(executes)h(\(at)i(least\))f(the)515 +3734 y(next)k(instruction)g(still)h(with)g(in)n(terrupts)f(disabled,)g +(so)g(the)h(write)f(to)g Fm(SPL)g Fq(is)g(guaran)n(teed)515 +3833 y(to)20 b(b)r(e)g(executed)h(with)f(in)n(terrupts)g(disabled)g +(still.)34 b(Th)n(us,)22 b(the)e(emitted)h(sequence)f(ensures)515 +3933 y(in)n(terrupts)j(will)g(b)r(e)h(disabled)f(only)g(for)g(the)h +(minim)n(um)g(time)g(required)e(to)h(guaran)n(tee)f(the)515 +4033 y(in)n(tegrit)n(y)k(of)i(this)g(op)r(eration.)515 +4180 y Ff(Bac)n(k)c(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 4459 y Fn(11.29)112 b(Wh)m(y)37 +b(are)h(there)f(\034v)m(e)h(di\033eren)m(t)g(link)m(er)g(scripts?)515 +4660 y Fq(F)-7 b(rom)27 b(a)g(commen)n(t)g(in)h(the)g(source)e(co)r +(de:)515 4807 y(Whic)n(h)32 b(one)f(of)h(the)g(\034v)n(e)g(link)n(er)f +(script)g(\034les)h(is)g(actually)f(used)h(dep)r(ends)g(on)g(command) +515 4906 y(line)c(options)e(giv)n(en)h(to)h(ld.)p 515 +5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 84 100 +TeXDict begin 84 99 bop 515 203 a Fs(11.30)94 b(Ho)m(w)31 +b(to)h(add)g(a)g(ra)m(w)h(binary)g(image)d(to)i(link)m(er)g(output?)385 +b(84)p 515 236 2865 4 v 515 523 a Fq(A)26 b(.x)g(script)g(\034le)g(is)g +(the)h(default)g(script)e(A)i(.xr)e(script)h(is)g(for)g(linking)g +(without)g(relo)r(cation)515 623 y(\(-r)33 b(\035ag\))g(A)h(.xu)f +(script)h(is)f(lik)n(e)g(.xr)g(but)h Fh(\003)p Fq(do)p +Fh(\003)f Fq(create)f(constructors)g(\(-Ur)h(\035ag\))g(A)h(.xn)515 +722 y(script)22 b(is)g(for)g(linking)g(with)h(-n)f(\035ag)g(\(mix)g +(text)h(and)f(data)g(on)g(same)g(page\).)34 b(A)23 b(.xbn)f(script)515 +822 y(is)27 b(for)g(linking)h(with)g(-N)f(\035ag)g(\(mix)h(text)g(and)f +(data)g(on)h(same)f(page\).)515 969 y Ff(Bac)n(k)d(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 1247 +y Fn(11.30)112 b(Ho)m(w)37 b(to)g(add)h(a)g(ra)m(w)f(binary)i(image)f +(to)f(link)m(er)h(output?)515 1448 y Fq(The)31 b(GNU)g(link)n(er)g +Fm(avr-ld)d Fq(cannot)j(handle)f(binary)g(data)h(directly)-7 +b(.)47 b(Ho)n(w)n(ev)n(er,)30 b(there's)515 1547 y(a)e(companion)h(to)r +(ol)g(called)f Fm(avr-objcopy)p Fq(.)37 b(This)29 b(is)g(already)f(kno) +n(wn)g(from)h(the)h(output)515 1647 y(side:)43 b(it's)32 +b(used)f(to)f(extract)h(the)g(con)n(ten)n(ts)f(of)h(the)h(link)n(ed)f +(ELF)g(\034le)g(in)n(to)g(an)g(In)n(tel)g(Hex)515 1747 +y(load)c(\034le.)515 1894 y Fm(avr-objcopy)h Fq(can)33 +b(create)g(a)f(relo)r(catable)g(ob)5 b(ject)33 b(\034le)h(from)f +(arbitrary)e(binary)h(input,)515 1993 y(lik)n(e)515 2196 +y Fj(avr-objcopy)38 b(-I)e(binary)h(-O)f(elf32-avr)h(foo.bin)h(foo.o) +515 2419 y Fq(This)23 b(will)g(create)f(a)g(\034le)i(named)e +Fm(foo.o)p Fq(,)g(with)i(the)f(con)n(ten)n(ts)f(of)h +Fm(foo.bin)p Fq(.)33 b(The)23 b(con)n(ten)n(ts)515 2519 +y(will)h(default)h(to)f(section)f(.data,)i(and)f(t)n(w)n(o)f(sym)n(b)r +(ols)h(will)g(b)r(e)g(created)g(named)g Fm(_binary_-)515 +2618 y(foo_bin_start)g Fq(and)29 b Fm(_binary_foo_bin)o(_en)o(d)p +Fq(.)36 b(These)29 b(sym)n(b)r(ols)f(can)h(b)r(e)h(referred)e(to)515 +2718 y(inside)f(a)h(C)f(source)f(to)i(access)e(these)i(data.)515 +2865 y(If)k(the)g(goal)f(is)g(to)h(ha)n(v)n(e)f(those)g(data)h(go)f(to) +g(\035ash)h(R)n(OM)f(\(similar)g(to)h(ha)n(ving)f(used)h(the)515 +2965 y(PR)n(OGMEM)25 b(attribute)f(in)h(C)f(source)f(co)r(de\),)j(the)e +(sections)g(ha)n(v)n(e)f(to)h(b)r(e)h(renamed)f(while)515 +3064 y(cop)n(ying,)i(and)i(it's)f(also)g(useful)h(to)f(set)h(the)g +(section)f(\035ags:)515 3267 y Fj(avr-objcopy)38 b(--rename-section)i +(.data=.progmem.data,conte)q(nts,)q(all)q(oc,l)q(oad,)q(rea)q(donl)q +(y,d)q(ata)i(-I)35 b(binary)i(-O)f(elf32-avr)i(foo.bin)f(foo.o)515 +3490 y Fq(Note)i(that)g(all)g(this)g(could)g(b)r(e)g(con)n(v)n(enien)n +(tly)f(wired)g(in)n(to)h(a)g(Mak)n(e\034le,)i(so)d(whenev)n(er)515 +3590 y Fm(foo.bin)19 b Fq(c)n(hanges,)j(it)h(will)f(trigger)f(the)i +(recreation)d(of)i Fm(foo.o)p Fq(,)g(and)g(a)g(subsequen)n(t)g(relink) +515 3690 y(of)27 b(the)h(\034nal)g(ELF)g(\034le.)515 +3836 y(Belo)n(w)e(are)g(t)n(w)n(o)g(Mak)n(e\034le)g(fragmen)n(ts)f +(that)j(pro)n(vide)d(rules)i(to)f(con)n(v)n(ert)g(a)g(.txt)i(\034le)f +(to)f(an)515 3936 y(ob)5 b(ject)27 b(\034le,)h(and)f(to)h(con)n(v)n +(ert)e(a)h(.bin)h(\034le)g(to)f(an)g(ob)5 b(ject)28 b(\034le:)515 +4139 y Fj($\(OBJDIR\)/\045.o)39 b(:)c(\045.txt)797 4218 +y(@echo)i(Converting)h($<)797 4296 y(@cp)e($\(<\))g($\(*\).tmp)797 +4375 y(@echo)h(-n)e(0)h(|)g(tr)f(0)h('\\000')h(>>)f($\(*\).tmp)797 +4454 y(@$\(OBJCOPY\))i(-I)e(binary)h(-O)f(elf32-avr)i(\\)797 +4533 y(--rename-section)i(.data=.progmem.data,conte)q(nts,)q(allo)q +(c,l)q(oad,)q(read)q(onl)q(y,da)q(ta)i(\\)797 4612 y(--redefine-sym)d +(_binary_$*_tmp_start=$*)j(\\)797 4691 y(--redefine-sym)d +(_binary_$*_tmp_end=$*_en)q(d)i(\\)797 4770 y(--redefine-sym)e +(_binary_$*_tmp_size=$*_s)q(ize)q(_sym)j(\\)797 4848 +y($\(*\).tmp)37 b($\(@\))797 4927 y(@echo)g("extern)g(const)f(char")h +($\(*\)"[])g(PROGMEM;")h(>)e($\(*\).h)797 5006 y(@echo)h("extern)g +(const)f(char")h($\(*\)_end"[])h(PROGMEM;")g(>>)e($\(*\).h)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 85 101 +TeXDict begin 85 100 bop 515 203 a Fs(11.31)94 b(Ho)m(w)31 +b(do)h(I)g(p)s(erform)f(a)h(soft)m(w)m(are)h(reset)e(of)h(the)g(A)-11 +b(VR?)456 b(85)p 515 236 2865 4 v 797 523 a Fj(@echo)37 +b("extern)g(const)f(char")h($\(*\)_size_sym"[];")j(>>)c($\(*\).h)797 +602 y(@echo)h("#define)g($\(*\)_size)h(\(\(int\)$\(*\)_size_sym\)")j +(>>)36 b($\(*\).h)797 681 y(@rm)g($\(*\).tmp)515 839 +y($\(OBJDIR\)/\045.o)j(:)c(\045.bin)797 917 y(@echo)i(Converting)h($<) +797 996 y(@$\(OBJCOPY\))g(-I)e(binary)h(-O)f(elf32-avr)i(\\)797 +1075 y(--rename-section)i(.data=.progmem.data,conte)q(nts,)q(allo)q +(c,l)q(oad,)q(read)q(onl)q(y,da)q(ta)i(\\)797 1154 y(--redefine-sym)d +(_binary_$*_bin_start=$*)j(\\)797 1233 y(--redefine-sym)d +(_binary_$*_bin_end=$*_en)q(d)i(\\)797 1312 y(--redefine-sym)e +(_binary_$*_bin_size=$*_s)q(ize)q(_sym)j(\\)797 1391 +y($\(<\))36 b($\(@\))797 1469 y(@echo)h("extern)g(const)f(char")h +($\(*\)"[])g(PROGMEM;")h(>)e($\(*\).h)797 1548 y(@echo)h("extern)g +(const)f(char")h($\(*\)_end"[])h(PROGMEM;")g(>>)e($\(*\).h)797 +1627 y(@echo)h("extern)g(const)f(char")h($\(*\)_size_sym"[];")j(>>)c +($\(*\).h)797 1706 y(@echo)h("#define)g($\(*\)_size)h +(\(\(int\)$\(*\)_size_sym\)")j(>>)36 b($\(*\).h)515 1936 +y Ff(Bac)n(k)24 b(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 +b(60\).)515 2216 y Fn(11.31)112 b(Ho)m(w)37 b(do)g(I)h(p)s(erform)g(a)f +(soft)m(w)m(are)h(reset)f(of)h(the)f(A)-12 b(VR?)515 +2416 y Fq(The)21 b(canonical)e(w)n(a)n(y)g(to)i(p)r(erform)f(a)h(soft)n +(w)n(are)e(reset)h(of)g(the)i(A)-9 b(VR)21 b(is)f(to)h(use)g(the)g(w)n +(atc)n(hdog)515 2516 y(timer.)36 b(Enable)28 b(the)f(w)n(atc)n(hdog)f +(timer)h(to)g(the)g(shortest)g(timeout)g(setting,)g(then)h(go)e(in)n +(to)515 2615 y(an)h(in\034nite,)h(do-nothing)f(lo)r(op.)36 +b(The)28 b(w)n(atc)n(hdog)e(will)i(then)g(reset)f(the)h(pro)r(cessor.) +515 2762 y(The)22 b(reason)e(wh)n(y)i(this)h(is)f(preferrable)e(o)n(v)n +(er)h(jumping)h(to)g(the)h(reset)e(v)n(ector,)h(is)h(that)f(when)515 +2862 y(the)k(w)n(atc)n(hdog)d(resets)i(the)h(A)-9 b(VR,)26 +b(the)g(registers)d(will)j(b)r(e)g(reset)f(to)g(their)g(kno)n(wn,)h +(default)515 2961 y(settings.)51 b(Whereas)31 b(jumping)i(to)g(the)f +(reset)g(v)n(ector)f(will)i(lea)n(v)n(e)e(the)i(registers)d(in)j(their) +515 3061 y(previous)26 b(state,)i(whic)n(h)f(is)g(generally)f(not)i(a)f +(go)r(o)r(d)g(idea.)515 3208 y Fs(CA)m(UTION!)37 b Fq(Older)e(A)-9 +b(VRs)37 b(will)f(ha)n(v)n(e)f(the)i(w)n(atc)n(hdog)e(timer)h(disabled) +g(on)g(a)g(reset.)515 3308 y(F)-7 b(or)31 b(these)h(older)g(A)-9 +b(VRs,)33 b(doing)f(a)f(soft)h(reset)g(b)n(y)g(enabling)f(the)i(w)n +(atc)n(hdog)d(is)i(easy)-7 b(,)33 b(as)515 3407 y(the)f(w)n(atc)n(hdog) +d(will)j(then)g(b)r(e)g(disabled)f(after)g(the)h(reset.)48 +b(On)31 b(new)n(er)g(A)-9 b(VRs,)33 b(once)e(the)515 +3507 y(w)n(atc)n(hdog)g(is)h(enabled,)h(then)g(it)g Fs(sta)m(ys)38 +b(enabled,)g(ev)m(en)g(after)g(a)g(reset)p Fq(!)51 b(F)-7 +b(or)32 b(these)515 3606 y(new)n(er)c(A)-9 b(VRs)29 b(a)f(function)h +(needs)g(to)f(b)r(e)h(added)g(to)g(the)g(.init3)g(section)f(\(i.e.)40 +b(during)29 b(the)515 3706 y(startup)k(co)r(de,)j(b)r(efore)e +(main\(\)\))g(to)g(disable)g(the)g(w)n(atc)n(hdog)e(early)h(enough)h +(so)f(it)h(do)r(es)515 3806 y(not)27 b(con)n(tin)n(ually)g(reset)g(the) +h(A)-9 b(VR.)515 3953 y(Here)28 b(is)h(some)f(example)g(co)r(de)h(that) +g(creates)e(a)i(macro)e(that)i(can)f(b)r(e)i(called)e(to)h(p)r(erform) +515 4052 y(a)e(soft)g(reset:)515 4261 y Fj(#include)37 +b()515 4419 y(...)515 4577 y(#define)g(soft_reset\(\))285 +b(\\)515 4656 y(do)917 b(\\)515 4735 y({)952 b(\\)656 +4813 y(wdt_enable\(WDTO_15MS\);)76 b(\\)656 4892 y(for\(;;\))601 +b(\\)656 4971 y({)811 b(\\)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 86 102 +TeXDict begin 86 101 bop 515 190 a Fs(11.32)94 b(I)31 +b(am)g(using)f(\035oating)h(p)s(oin)m(t)g(math.)42 b(Wh)m(y)31 +b(is)g(the)g(compiled)f(co)s(de)h(so)515 290 y(big?)42 +b(Wh)m(y)32 b(do)s(es)e(m)m(y)i(co)s(de)g(not)g(w)m(ork?)1308 +b(86)p 515 323 2865 4 v 656 523 a Fj(})811 b(\\)515 602 +y(})35 b(while\(0\))515 820 y Fq(F)-7 b(or)25 b(new)n(er)g(A)-9 +b(VRs)26 b(\(suc)n(h)g(as)f(the)h(A)-7 b(Tmega1281\))23 +b(also)i(add)h(this)g(function)g(to)g(y)n(our)e(co)r(de)515 +920 y(to)j(then)h(disable)f(the)h(w)n(atc)n(hdog)e(after)h(a)h(reset)f +(\(e.g.,)g(after)g(a)g(soft)h(reset\):)515 1117 y Fj(#include)37 +b()515 1274 y(...)515 1432 y(//)f(Function)h(Pototype)515 +1511 y(void)f(wdt_init\(void\))j(__attribute__\(\(naked\)\))j +(__attribute__\(\(section\(".i)q(nit)q(3"\)\))q(\);)515 +1669 y(...)515 1827 y(//)36 b(Function)h(Implementation)515 +1905 y(void)f(wdt_init\(void\))515 1984 y({)656 2063 +y(MCUSR)g(=)g(0;)656 2142 y(wdt_disable\(\);)656 2300 +y(return;)515 2379 y(})515 2597 y Ff(Bac)n(k)24 b(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 2874 +y Fn(11.32)112 b(I)46 b(am)g(using)h(\035oating)g(p)s(oin)m(t)f(math.) +76 b(Wh)m(y)46 b(is)h(the)e(com-)882 2990 y(piled)38 +b(co)s(de)g(so)f(big?)51 b(Wh)m(y)37 b(do)s(es)h(m)m(y)g(co)s(de)f(not) +h(w)m(ork?)515 3191 y Fq(Y)-7 b(ou)35 b(are)g(not)g(linking)g(in)h(the) +g(math)f(library)f(from)h(A)-9 b(VR-LibC.)36 b(GCC)g(has)e(a)h(library) +515 3291 y(that)29 b(is)g(used)g(for)g(\035oating)f(p)r(oin)n(t)h(op)r +(erations,)g(but)g(it)h(is)f(not)g(optimized)g(for)g(the)h(A)-9 +b(VR,)515 3390 y(and)34 b(so)f(it)i(generates)d(big)i(co)r(de,)i(or)d +(it)i(could)f(b)r(e)g(incorrect.)55 b(This)34 b(can)g(happ)r(en)h(ev)n +(en)515 3490 y(when)26 b(y)n(ou)f(are)g(not)h(using)g(an)n(y)f +(\035oating)h(p)r(oin)n(t)g(math)g(functions)g(from)g(the)h(Standard)e +(C)515 3589 y(library)-7 b(,)26 b(but)i(y)n(ou)f(are)g(just)h(doing)f +(\035oating)f(p)r(oin)n(t)i(math)g(op)r(erations.)515 +3736 y(When)d(y)n(ou)f(link)h(in)h(the)f(math)g(library)f(from)g(A)-9 +b(VR-LibC,)25 b(those)g(routines)f(get)h(replaced)515 +3836 y(b)n(y)i(hand-optimized)g(A)-9 b(VR)28 b(assem)n(bly)f(and)g(it)h +(pro)r(duces)f(m)n(uc)n(h)g(smaller)g(co)r(de.)515 3983 +y(See)33 b Fs(I)39 b(get)g("unde\034ned)f(reference)h(to...")e(for)i +(functions)f(lik)m(e)h("sin\(\)")32 b Fq(\(p.)14 b(62\))515 +4082 y(for)27 b(more)g(details)g(on)g(ho)n(w)g(to)g(link)h(in)g(the)g +(math)g(library)-7 b(.)515 4229 y Ff(Bac)n(k)24 b(to)g +Fg(F)-9 b(A)n(Q)28 b(Index)c Ff(\(p.)12 b(60\).)515 4507 +y Fn(11.33)112 b(What)37 b(pitfalls)i(exist)e(when)h(writing)f(reen)m +(tran)m(t)g(co)s(de?)515 4707 y Fq(Reen)n(tran)n(t)23 +b(co)r(de)h(means)f(the)i(abilit)n(y)e(for)h(a)f(piece)h(of)g(co)r(de)g +(to)g(b)r(e)h(called)e(sim)n(ultaneously)515 4807 y(from)29 +b(t)n(w)n(o)f(or)g(more)h(threads.)41 b(A)n(tten)n(tion)29 +b(to)g(re-en)n(terabilit)n(y)f(is)h(needed)g(when)h(using)e(a)515 +4907 y(m)n(ulti-tasking)i(op)r(erating)g(system,)i(or)e(when)i(using)f +(in)n(terrupts)f(since)h(an)g(in)n(terrupt)g(is)515 5006 +y(really)26 b(a)h(temp)r(orary)g(thread.)p 515 5179 V +515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 87 103 +TeXDict begin 87 102 bop 515 203 a Fs(11.33)94 b(What)32 +b(pitfalls)e(exist)i(when)f(writing)g(reen)m(tran)m(t)i(co)s(de?)412 +b(87)p 515 236 2865 4 v 515 523 a Fq(The)25 b(co)r(de)f(generated)g +(nativ)n(ely)g(b)n(y)h(gcc)f(is)h(reen)n(tran)n(t.)34 +b(But,)26 b(only)e(some)h(of)f(the)i(libraries)515 623 +y(in)g(a)n(vr-lib)r(c)f(are)g(explicitly)h(reen)n(tran)n(t,)f(and)h +(some)g(are)f(kno)n(wn)g(not)h(to)g(b)r(e)h(reen)n(tran)n(t.)35 +b(In)515 722 y(general,)d(an)n(y)g(library)f(call)h(that)h(reads)e(and) +i(writes)f(global)f(v)-5 b(ariables)31 b(\(including)i(I/O)515 +822 y(registers\))26 b(is)i(not)f(reen)n(tran)n(t.)36 +b(This)28 b(is)g(b)r(ecause)f(more)g(than)h(one)f(thread)h(could)f +(read)g(or)515 922 y(write)g(the)g(same)f(storage)f(at)i(the)h(same)e +(time,)i(una)n(w)n(are)d(that)i(other)f(threads)h(are)f(doing)515 +1021 y(the)i(same,)f(and)g(create)g(inconsisten)n(t)g(and/or)f +(erroneous)f(results.)515 1168 y(A)d(library)e(call)h(that)h(is)g(kno)n +(wn)f(not)g(to)h(b)r(e)g(reen)n(tran)n(t)e(will)i(w)n(ork)e(if)i(it)g +(is)g(used)f(only)g(within)515 1268 y(one)k(thread)g +Fl(and)35 b Fq(no)25 b(other)g(thread)g(mak)n(es)g(use)g(of)h(a)f +(library)f(call)i(that)f(shares)g(common)515 1367 y(storage)g(with)j +(it.)515 1514 y(Belo)n(w)e(is)i(a)f(table)g(of)h(library)e(calls)h +(with)h(kno)n(wn)f(issues.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 88 104 +TeXDict begin 88 103 bop 515 203 a Fs(11.33)94 b(What)32 +b(pitfalls)e(exist)i(when)f(writing)g(reen)m(tran)m(t)i(co)s(de?)412 +b(88)p 515 236 2865 4 v 515 443 V 515 643 4 200 v 568 +513 a(Library)33 b(call)p 1468 643 V 468 w(Reen)m(tran)m(t)f(Issue)p +2422 643 V 2475 613 a(W)-8 b(ork)j(around/Alternativ)m(e)p +3376 643 V 515 646 2865 4 v 515 1044 4 399 v 568 716 +a(rand\(\))29 b Fq(\(p.)14 b(195\),)568 815 y Fs(random\(\))28 +b Fq(\(p.)14 b(196\))p 1468 1044 V 1522 716 a(Uses)25 +b(global)h(v)-5 b(ariables)24 b(to)1522 815 y(k)n(eep)j(state)g +(information.)p 2422 1044 V 2475 716 a(Use)h(sp)r(ecial)f(reen)n(tran)n +(t)2475 815 y(v)n(ersions:)35 b Fs(rand_r\(\))2475 915 +y Fq(\(p.)14 b(196\),)27 b Fs(random_r\(\))2475 1015 +y Fq(\(p.)14 b(196\).)p 3376 1044 V 515 1048 2865 4 v +515 1944 4 897 v 568 1117 a Fs(strto)s(d\(\))27 b Fq(\(p.)14 +b(197\),)568 1217 y Fs(strtol\(\))27 b Fq(\(p.)14 b(197\),)568 +1317 y Fs(strtoul\(\))27 b Fq(\(p.)14 b(198\))p 1468 +1944 V 1522 1117 a(Uses)27 b(the)h(global)1522 1217 y(v)-5 +b(ariable)26 b Fm(errno)g Fq(to)1522 1317 y(return)h(success/failure.)p +2422 1944 V 2475 1117 a(Ignore)f Fm(errno)p Fq(,)g(or)2475 +1217 y(protect)h(calls)g(with)h Fs(cli\(\))2475 1317 +y Fq(\(p.)14 b(253\)/sei\(\))27 b(or)2475 1416 y Fs(A)-8 +b(TOMIC_-)2475 1516 y(BLOCK\(\))28 b Fq(\(p.)14 b(289\))27 +b(if)2475 1616 y(the)h(application)f(can)2475 1715 y(tolerate)g(it.)37 +b(Or)27 b(use)2475 1815 y(sccanf\(\))h(or)f(sccanf_P\(\))2475 +1914 y(if)h(p)r(ossible.)p 3376 1944 V 515 1948 2865 +4 v 515 3044 4 1096 v 568 2017 a Fs(mallo)s(c\(\))f Fq(\(p.)14 +b(195\),)568 2117 y Fs(reallo)s(c\(\))27 b Fq(\(p.)14 +b(196\),)568 2217 y Fs(callo)s(c\(\))27 b Fq(\(p.)14 +b(192\),)568 2316 y Fs(free\(\))28 b Fq(\(p.)14 b(193\))p +1468 3044 V 1522 2017 a(Uses)27 b(the)h(stac)n(k)e(p)r(oin)n(ter)1522 +2117 y(and)h(global)f(v)-5 b(ariables)27 b(to)1522 2217 +y(allo)r(cate)f(and)i(free)1522 2316 y(memory)-7 b(.)p +2422 3044 V 2475 2017 a(Protect)28 b(calls)f(with)h Fs(cli\(\))2475 +2117 y Fq(\(p.)14 b(253\)/sei\(\))27 b(or)2475 2217 y +Fs(A)-8 b(TOMIC_-)2475 2316 y(BLOCK\(\))28 b Fq(\(p.)14 +b(289\))27 b(if)2475 2416 y(the)h(application)f(can)2475 +2516 y(tolerate)g(it.)37 b(If)28 b(using)f(an)2475 2615 +y(OS,)h(use)f(the)h(OS)2475 2715 y(pro)n(vided)f(memory)2475 +2814 y(allo)r(cator)f(since)h(the)h(OS)2475 2914 y(is)g(lik)n(ely)f(mo) +r(difying)g(the)2475 3014 y(stac)n(k)g(p)r(oin)n(ter)g(an)n(yw)n(a)n(y) +-7 b(.)p 3376 3044 V 515 3047 2865 4 v 515 4641 4 1595 +v 568 3117 a Fs(fdev)m(op)s(en\(\))28 b Fq(\(p.)14 b(177\),)568 +3216 y Fs(fclose\(\))27 b Fq(\(p.)14 b(176\))p 1468 4641 +V 1522 3117 a(Uses)27 b Fs(callo)s(c\(\))g Fq(\(p.)14 +b(192\))1522 3216 y(and)27 b Fs(free\(\))h Fq(\(p.)14 +b(193\).)p 2422 4641 V 2475 3117 a(Protect)28 b(calls)f(with)h +Fs(cli\(\))2475 3216 y Fq(\(p.)14 b(253\)/sei\(\))27 +b(or)2475 3316 y Fs(A)-8 b(TOMIC_-)2475 3416 y(BLOCK\(\))28 +b Fq(\(p.)14 b(289\))27 b(if)2475 3515 y(the)h(application)f(can)2475 +3615 y(tolerate)g(it.)37 b(Or)27 b(use)2475 3714 y Fs(fdev_setup_-)2475 +3814 y(stream\(\))h Fq(\(p.)14 b(175\))27 b(or)2475 3914 +y Fs(FDEV_SETUP_-)2475 4013 y(STREAM\(\))2475 4113 y +Fq(\(p.)14 b(174\).)2475 4213 y(Note:)37 b Fs(fclose\(\))27 +b Fq(\(p.)14 b(176\))2475 4312 y(will)28 b(only)f(call)g +Fs(free\(\))2475 4412 y Fq(\(p.)14 b(193\))27 b(if)h(the)g(stream)2475 +4511 y(has)f(b)r(een)h(op)r(ened)g(with)2475 4611 y Fs(fdev)m(op)s +(en\(\))g Fq(\(p.)14 b(177\).)p 3376 4641 V 515 4644 +2865 4 v 515 5142 4 499 v 568 4714 a(eeprom_)p Fh(\003)p +Fq(\(\),)26 b(b)r(o)r(ot_)p Fh(\003)p Fq(\(\))p 1468 +5142 V 133 w(A)n(ccesses)g(I/O)h(registers.)p 2422 5142 +V 130 w(Protect)h(calls)f(with)h Fs(cli\(\))2475 4814 +y Fq(\(p.)14 b(253\)/sei\(\),)2475 4913 y Fs(A)-8 b(TOMIC_-)2475 +5013 y(BLOCK\(\))28 b Fq(\(p.)14 b(289\),)27 b(or)2475 +5112 y(use)h(OS)f(lo)r(c)n(king.)p 3376 5142 V 515 5146 +2865 4 v 515 7039 4 1893 v 568 5215 a(pgm_)p Fh(\003)p +Fq(_far\(\))p 1468 7039 V 461 w(A)n(ccesses)f(I/O)h(register)1522 +5315 y(RAMPZ.)p 2422 7039 V 2475 5215 a(Starting)f(with)h(GCC)g(4.3,) +2475 5315 y(RAMPZ)h(is)2475 5415 y(automatically)f(sa)n(v)n(ed)f(for) +2475 5514 y(ISRs,)i(so)f(nothing)2475 5614 y(further)h(is)f(needed)h +(if)2475 5714 y(only)f(using)g(in)n(terrupts.)2475 5813 +y(Some)h(OSes)e(ma)n(y)2475 5913 y(automatically)h(preserv)n(e)2475 +6012 y(RAMPZ)h(during)2475 6112 y(con)n(text)f(switc)n(hing.)2475 +6212 y(Chec)n(k)g(the)h(OS)2475 6311 y(do)r(cumen)n(tation)f(b)r(efore) +2475 6411 y(assuming)g(it)h(do)r(es.)2475 6511 y(Otherwise,)f(protect) +2475 6610 y(calls)g(with)h Fs(cli\(\))2475 6710 y Fq(\(p.)14 +b(253\)/sei\(\),)2475 6809 y Fs(A)-8 b(TOMIC_-)2475 6909 +y(BLOCK\(\))28 b Fq(\(p.)14 b(289\),)27 b(or)2475 7009 +y(use)g(explicit)f(OS)h(lo)r(c)n(king.)p 3376 7039 V +515 7042 2865 4 v 515 9433 4 2392 v 568 7112 a Fs(prin)m(tf\(\))h +Fq(\(p.)14 b(180\),)568 7211 y Fs(prin)m(tf_P\(\))29 +b Fq(\(p.)14 b(180\),)568 7311 y Fs(vprin)m(tf\(\))29 +b Fq(\(p.)14 b(187\),)568 7411 y(vprin)n(tf_P\(\),)28 +b Fs(puts\(\))568 7510 y Fq(\(p.)14 b(180\),)27 b Fs(puts_P\(\))568 +7610 y Fq(\(p.)14 b(180\))p 1468 9433 V 1522 7112 a(Alters)27 +b(\035ags)f(and)1522 7211 y(c)n(haracter)f(coun)n(t)i(in)1522 +7311 y(global)f(FILE)i Fm(stdout)p Fq(.)p 2422 9433 V +2475 7112 a(Use)g(only)f(in)h(one)f(thread.)2475 7211 +y(Or)g(if)h(returned)2475 7311 y(c)n(haracter)e(coun)n(t)h(is)2475 +7411 y(unimp)r(ortan)n(t,)h(do)f(not)2475 7510 y(use)h(the)g +Fh(\003)p Fq(_P)f(v)n(ersions.)2475 7610 y(Note:)37 b(F)-7 +b(ormatting)27 b(to)g(a)2475 7709 y(string)g(output,)h(e.g.)2475 +7809 y Fs(sprin)m(tf\(\))g Fq(\(p.)14 b(181\),)2475 7909 +y Fs(sprin)m(tf_P\(\))29 b Fq(\(p.)14 b(181\),)2475 8008 +y Fs(snprin)m(tf\(\))28 b Fq(\(p.)14 b(180\),)2475 8108 +y Fs(snprin)m(tf_P\(\))2475 8208 y Fq(\(p.)g(180\),)27 +b Fs(vsprin)m(tf\(\))2475 8307 y Fq(\(p.)14 b(188\),)2475 +8407 y Fs(vsprin)m(tf_P\(\))2475 8506 y Fq(\(p.)g(188\),)27 +b Fs(vsnprin)m(tf\(\))2475 8606 y Fq(\(p.)14 b(188\),)2475 +8706 y Fs(vsnprin)m(tf_P\(\))2475 8805 y Fq(\(p.)g(188\),)27 +b(is)g(thread)g(safe.)2475 8905 y(The)h(formatted)f(string)2475 +9005 y(could)h(then)g(b)r(e)g(follo)n(w)n(ed)2475 9104 +y(b)n(y)f(an)h Fs(fwrite\(\))f Fq(\(p.)14 b(179\))2475 +9204 y(whic)n(h)28 b(simply)f(calls)g(the)2475 9303 y(lo)n(w)n(er)f(la) +n(y)n(er)g(to)h(send)h(the)2475 9403 y(string.)p 3376 +9433 V 515 9436 2865 4 v 515 10034 4 598 v 568 9506 a +Fs(fprin)m(tf\(\))g Fq(\(p.)14 b(178\),)568 9606 y Fs(fprin)m(tf_P\(\)) +29 b Fq(\(p.)14 b(178\),)568 9705 y Fs(vfprin)m(tf\(\))29 +b Fq(\(p.)14 b(181\),)568 9805 y Fs(vfprin)m(tf_P\(\))28 +b Fq(\(p.)14 b(184\),)568 9905 y Fs(fputs\(\))28 b Fq(\(p.)14 +b(179\),)568 10004 y Fs(fputs_P\(\))28 b Fq(\(p.)14 b(179\))p +1468 10034 V 1522 9506 a(Alters)27 b(\035ags)f(and)1522 +9606 y(c)n(haracter)f(coun)n(t)i(in)h(the)1522 9705 y(FILE)g(argumen)n +(t.)1522 9805 y(Problems)f(can)g(o)r(ccur)g(if)1522 9905 +y(a)g(global)f(FILE)i(is)g(used)1522 10004 y(from)f(m)n(ultiple)h +(threads.)p 2422 10034 V 2475 9506 a(Assign)f(eac)n(h)g(thread)g(its) +2475 9606 y(o)n(wn)g(FILE)h(for)f(output.)2475 9705 y(Or)g(if)h +(returned)2475 9805 y(c)n(haracter)e(coun)n(t)h(is)2475 +9905 y(unimp)r(ortan)n(t,)h(do)f(not)2475 10004 y(use)h(the)g +Fh(\003)p Fq(_P)f(v)n(ersions.)p 3376 10034 V 515 10037 +2865 4 v 515 10436 4 399 v 568 10107 a Fs(assert\(\))h +Fq(\(p.)14 b(131\))p 1468 10436 V 337 w(Con)n(tains)26 +b(an)h(em)n(b)r(edded)1522 10207 y Fs(fprin)m(tf\(\))h +Fq(\(p.)14 b(178\).)36 b(See)1522 10306 y(ab)r(o)n(v)n(e)26 +b(for)h Fs(fprin)m(tf\(\))1522 10406 y Fq(\(p.)14 b(178\).)p +2422 10436 V 2475 10107 a(See)28 b(ab)r(o)n(v)n(e)e(for)h +Fs(fprin)m(tf\(\))2475 10207 y Fq(\(p.)14 b(178\).)p +3376 10436 V 515 10439 2865 4 v 515 10738 4 299 v 568 +10509 a Fs(clearerr\(\))29 b Fq(\(p.)14 b(176\))p 1468 +10738 V 258 w(Alters)27 b(\035ags)f(in)i(the)1522 10609 +y(FILE)g(argumen)n(t.)p 2422 10738 V 2475 10509 a(Assign)f(eac)n(h)g +(thread)g(its)2475 10609 y(o)n(wn)g(FILE)h(for)f(output.)p +3376 10738 V 515 10741 2865 4 v 515 11040 4 299 v 568 +10811 a Fs(getc)m(har\(\))i Fq(\(p.)14 b(175\),)568 10911 +y Fs(gets\(\))27 b Fq(\(p.)14 b(179\))p 1468 11040 V +1522 10811 a(Alters)27 b(\035ags,)f(c)n(haracter)1522 +10911 y(coun)n(t,)g(and)h(unget)f(bu\033er)1522 11010 +y(in)h(global)g(FILE)h Fm(stdin)p Fq(.)p 2422 11040 V +2475 10811 a(Use)g(only)f(in)h(one)f(thread.)2475 10911 +y Fh(\003\003\003)p 3376 11040 V 515 11044 2865 4 v 515 +12139 4 1096 v 568 11113 a Fs(fgetc\(\))h Fq(\(p.)14 +b(178\),)568 11213 y Fs(ungetc\(\))28 b Fq(\(p.)14 b(181\),)568 +11313 y Fs(fgets\(\))27 b Fq(\(p.)14 b(178\),)568 11412 +y Fs(scanf\(\))28 b Fq(\(p.)14 b(180\),)568 11512 y Fs(scanf_P\(\))29 +b Fq(\(p.)14 b(180\),)568 11611 y Fs(fscanf\(\))29 b +Fq(\(p.)14 b(179\),)568 11711 y Fs(fscanf_P\(\))29 b +Fq(\(p.)14 b(179\),)568 11811 y Fs(vscanf\(\))29 b Fq(\(p.)14 +b(187\),)568 11910 y Fs(vfscanf\(\))29 b Fq(\(p.)14 b(185\),)568 +12010 y Fs(vfscanf_P\(\))29 b Fq(\(p.)14 b(187\),)568 +12110 y Fs(fread\(\))28 b Fq(\(p.)14 b(179\))p 1468 12139 +V 1522 11113 a(Alters)27 b(\035ags,)f(c)n(haracter)1522 +11213 y(coun)n(t,)g(and)h(unget)f(bu\033er)1522 11313 +y(in)h(the)h(FILE)g(argumen)n(t.)p 2422 12139 V 2475 +11113 a(Assign)f(eac)n(h)g(thread)g(its)2475 11213 y(o)n(wn)g(FILE)h +(for)f(input.)2475 11313 y Fh(\003\003\003)2475 11412 +y Fq(Note:)37 b(Scanning)27 b(from)g(a)2475 11512 y(string,)g(e.g.)36 +b Fs(sscanf\(\))2475 11611 y Fq(\(p.)14 b(181\))27 b(and)2475 +11711 y Fs(sscanf_P\(\))i Fq(\(p.)14 b(181\),)2475 11811 +y(are)27 b(thread)g(safe.)p 3376 12139 V 515 12143 2865 +4 v 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 89 105 +TeXDict begin 89 104 bop 515 203 a Fs(12)31 b(Building)f(and)i +(Installing)f(the)h(GNU)g(T)-8 b(o)s(ol)30 b(Chain)766 +b(89)p 515 236 2865 4 v 515 523 a Fh(\003\003\003)19 +b Fq(It's)j(not)f(clear)f(one)g(w)n(ould)h(ev)n(er)f(w)n(an)n(t)g(to)h +(do)g(c)n(haracter)e(input)i(sim)n(ultaneously)f(from)515 +623 y(more)26 b(than)i(one)f(thread)g(an)n(yw)n(a)n(y)-7 +b(,)26 b(but)i(these)g(en)n(tries)f(are)f(included)i(for)f +(completeness.)515 770 y(An)41 b(e\033ort)f(will)g(b)r(e)h(made)f(to)h +(k)n(eep)f(this)g(table)h(up)g(to)f(date)g(if)h(an)n(y)f(new)g(issues)g +(are)515 869 y(disco)n(v)n(ered)25 b(or)i(in)n(tro)r(duced.)515 +1016 y Ff(Bac)n(k)d(to)g Fg(F)-9 b(A)n(Q)28 b(Index)c +Ff(\(p.)12 b(60\).)515 1333 y Fr(12)131 b(Building)42 +b(and)i(Installing)e(the)i(GNU)g(T)-11 b(o)t(ol)43 b(Chain)515 +1562 y Fq(This)d(c)n(hapter)g(sho)n(ws)f(ho)n(w)h(to)g(build)h(and)g +(install,)i(from)d(source)g(co)r(de,)j(a)d(complete)515 +1662 y(dev)n(elopmen)n(t)20 b(en)n(vironmen)n(t)h(for)g(the)g(A)-9 +b(VR)22 b(pro)r(cessors)d(using)i(the)h(GNU)g(to)r(olset.)35 +b(There)515 1762 y(are)30 b(t)n(w)n(o)g(main)h(sections,)g(one)g(for)g +(Lin)n(ux,)g(F)-7 b(reeBSD,)31 b(and)g(other)g(Unix-lik)n(e)f(op)r +(erating)515 1861 y(systems,)d(and)g(another)g(section)g(for)g(Windo)n +(ws.)515 2136 y Fn(12.1)112 b(Building)44 b(and)g(Installing)g(under)f +(Lin)m(ux,)j(F)-9 b(reeBSD,)43 b(and)826 2252 y(Others)515 +2453 y Fq(The)25 b(default)h(b)r(eha)n(viour)e(for)h(most)g(of)h(these) +f(to)r(ols)g(is)g(to)g(install)h(ev)n(ery)e(thing)h(under)h(the)515 +2552 y Fm(/usr/local)g Fq(directory)-7 b(.)44 b(In)30 +b(order)f(to)h(k)n(eep)g(the)h(A)-9 b(VR)31 b(to)r(ols)e(separate)g +(from)h(the)h(base)515 2652 y(system,)j(it)f(is)g(usually)g(b)r(etter)g +(to)g(install)g(ev)n(erything)f(in)n(to)h Fm(/usr/local/avr)p +Fq(.)47 b(If)34 b(the)515 2752 y Fm(/usr/local/avr)22 +b Fq(directory)k(do)r(es)h(not)h(exist,)g(y)n(ou)f(should)g(create)g +(it)h(b)r(efore)f(trying)g(to)515 2851 y(install)j(an)n(ything.)46 +b(Y)-7 b(ou)30 b(will)h(need)g Fm(root)e Fq(access)h(to)g(install)h +(there.)46 b(If)31 b(y)n(ou)e(don't)i(ha)n(v)n(e)515 +2951 y(ro)r(ot)c(access)g(to)h(the)h(system,)f(y)n(ou)g(can)g +(alternativ)n(ely)f(install)h(in)g(y)n(our)f(home)h(directory)-7 +b(,)515 3051 y(for)28 b(example,)g(in)h Fm($HOME/local/avr)o +Fq(.)34 b(Where)28 b(y)n(ou)g(install)g(is)h(a)f(completely)g +(arbitrary)515 3150 y(decision,)f(but)h(should)f(b)r(e)h(consisten)n(t) +f(for)g(all)h(the)f(to)r(ols.)515 3297 y(Y)-7 b(ou)36 +b(sp)r(ecify)h(the)f(installation)g(directory)f(b)n(y)h(using)f(the)i +Fm(\025prefix=dir)32 b Fq(option)k(with)515 3397 y(the)30 +b Fm(configure)c Fq(script.)44 b(It)30 b(is)g(imp)r(ortan)n(t)g(to)f +(install)h(all)g(the)g(A)-9 b(VR)31 b(to)r(ols)e(in)h(the)h(same)515 +3496 y(directory)i(or)g(some)h(of)h(the)f(to)r(ols)g(will)h(not)f(w)n +(ork)f(correctly)-7 b(.)56 b(T)-7 b(o)34 b(ensure)g(consistency)515 +3596 y(and)27 b(simplify)i(the)f(discussion,)f(w)n(e)h(will)g(use)f +Fm($PREFIX)e Fq(to)j(refer)f(to)h(whatev)n(er)e(directory)515 +3696 y(y)n(ou)i(wish)h(to)g(install)f(in.)41 b(Y)-7 b(ou)29 +b(can)g(set)g(this)g(as)f(an)h(en)n(vironmen)n(t)f(v)-5 +b(ariable)28 b(if)h(y)n(ou)f(wish)515 3795 y(as)f(suc)n(h)g(\(using)g +(a)g(Bourne-lik)n(e)f(shell\):)515 3978 y Fj($)35 b +(PREFIX=$HOME/local/avr)515 4056 y($)g(export)i(PREFIX)506 +4297 y Fs(Note:)676 4446 y Fq(Be)f(sure)f(that)h(y)n(ou)e(ha)n(v)n(e)h +(y)n(our)f Fm(PATH)g Fq(en)n(vironmen)n(t)h(v)-5 b(ariable)34 +b(set)i(to)g(searc)n(h)e(the)676 4546 y(directory)24 +b(y)n(ou)h(install)g(ev)n(erything)f(in)i Fl(b)l(efor)l(e)33 +b Fq(y)n(ou)24 b(start)h(installing)g(an)n(ything.)36 +b(F)-7 b(or)676 4645 y(example,)24 b(if)f(y)n(ou)f(use)h +Fm(\025prefix=$PREFIX)p Fq(,)17 b(y)n(ou)22 b(m)n(ust)h(ha)n(v)n(e)f +Fm($PREFIX/bin)c Fq(in)23 b(y)n(our)676 4745 y(exp)r(orted)k +Fm(PATH)p Fq(.)f(As)i(suc)n(h:)515 4927 y Fj($)35 b +(PATH=$PATH:$PREFIX/bin)515 5006 y($)g(export)i(PATH)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 90 106 +TeXDict begin 90 105 bop 515 203 a Fs(12.2)94 b(Required)31 +b(T)-8 b(o)s(ols)1869 b(90)p 515 236 2865 4 v 506 497 +a(W)-8 b(arning:)676 663 y Fq(If)35 b(y)n(ou)e(ha)n(v)n(e)g +Fm(CC)g Fq(set)h(to)g(an)n(ything)f(other)h(than)g Fm(avr-gcc)d +Fq(in)j(y)n(our)f(en)n(vironmen)n(t,)676 763 y(this)e(will)f(cause)g +(the)g(con\034gure)f(script)h(to)g(fail.)45 b(It)31 b(is)f(b)r(est)h +(to)f(not)g(ha)n(v)n(e)f Fm(CC)h Fq(set)g(at)676 862 +y(all.)506 1043 y Fs(Note:)676 1192 y Fq(It)e(is)f(usually)g(the)h(b)r +(est)g(to)f(use)h(the)g(latest)f(released)f(v)n(ersion)g(of)i(eac)n(h)e +(of)i(the)g(to)r(ols.)515 1469 y Fn(12.2)112 b(Required)38 +b(T)-9 b(o)s(ols)639 1670 y Fk(\210)41 b Fs(GNU)32 b(Bin)m(utils)722 +1799 y Fm(http://sources.re)o(dh)o(at)o(.co)o(m/)o(bi)o(nut)o(il)o(s/) +722 1929 y Fs(Installation)27 b Fq(\(p.)14 b(91\))639 +2144 y Fk(\210)41 b Fs(GCC)722 2273 y Fm(http://gcc.gnu.or)o(g/)722 +2403 y Fs(Installation)27 b Fq(\(p.)14 b(92\))639 2618 +y Fk(\210)41 b Fs(A)-11 b(VR)32 b(Lib)s(c)722 2747 y +Fm(http://savannah.g)o(nu)o(.o)o(rg/)o(pr)o(oj)o(ect)o(s/)o(av)o(r-l)o +(ib)o(c/)722 2877 y Fs(Installation)27 b Fq(\(p.)14 b(93\))515 +3154 y Fn(12.3)112 b(Optional)38 b(T)-9 b(o)s(ols)515 +3355 y Fq(Y)i(ou)30 b(can)h(dev)n(elop)e(programs)f(for)i(A)-9 +b(VR)32 b(devices)e(without)h(the)f(follo)n(wing)g(to)r(ols.)45 +b(They)515 3454 y(ma)n(y)27 b(or)f(ma)n(y)h(not)h(b)r(e)g(of)f(use)h +(for)f(y)n(ou.)639 3669 y Fk(\210)41 b Fs(A)-11 b(VRDUDE)722 +3799 y Fm(http://savannah.n)o(on)o(gn)o(u.o)o(rg)o(/p)o(roj)o(ec)o(ts)o +(/av)o(rd)o(ud)o(e/)722 3928 y Fs(Installation)27 b Fq(\(p.)14 +b(93\))722 4058 y Fs(Usage)32 b(Notes)27 b Fq(\(p.)14 +b(116\))639 4273 y Fk(\210)41 b Fs(GDB)722 4402 y Fm(http://sources.re) +o(dh)o(at)o(.co)o(m/)o(gd)o(b/)722 4532 y Fs(Installation)27 +b Fq(\(p.)14 b(94\))639 4747 y Fk(\210)41 b Fs(Sim)m(ulA)-11 +b(VR)722 4876 y Fm(http://savannah.g)o(nu)o(.o)o(rg/)o(pr)o(oj)o(ect)o +(s/)o(si)o(mul)o(av)o(r/)722 5006 y Fs(Installation)27 +b Fq(\(p.)14 b(94\))p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 91 107 +TeXDict begin 91 106 bop 515 203 a Fs(12.4)94 b(GNU)32 +b(Bin)m(utils)e(for)i(the)g(A)-11 b(VR)32 b(target)1090 +b(91)p 515 236 2865 4 v 639 523 a Fk(\210)41 b Fs(A)-11 +b(V)j(aRICE)722 654 y Fm(http://avarice.so)o(ur)o(ce)o(for)o(ge)o(.n)o +(et/)722 785 y Fs(Installation)27 b Fq(\(p.)14 b(95\))515 +1063 y Fn(12.4)112 b(GNU)37 b(Bin)m(utils)h(for)f(the)g(A)-12 +b(VR)36 b(target)515 1263 y Fq(The)27 b Fs(bin)m(utils)e +Fq(pac)n(k)-5 b(age)25 b(pro)n(vides)g(all)i(the)g(lo)n(w-lev)n(el)e +(utilities)i(needed)g(in)g(building)g(and)515 1363 y(manipulating)j(ob) +5 b(ject)30 b(\034les.)44 b(Once)30 b(installed,)h(y)n(our)e(en)n +(vironmen)n(t)g(will)i(ha)n(v)n(e)e(an)h(A)-9 b(VR)515 +1462 y(assem)n(bler)29 b(\()p Fm(avr-as)p Fq(\),)i(link)n(er)f(\()p +Fm(avr-ld)p Fq(\),)g(and)h(librarian)f(\()p Fm(avr-ar)f +Fq(and)i Fm(avr-ranlib)p Fq(\).)515 1562 y(In)e(addition,)h(y)n(ou)f +(get)h(to)r(ols)f(whic)n(h)g(extract)g(data)g(from)g(ob)5 +b(ject)30 b(\034les)f(\()p Fm(avr-objcopy)p Fq(\),)515 +1662 y(dissassem)n(ble)23 b(ob)5 b(ject)25 b(\034le)h(information)e(\() +p Fm(avr-objdump)p Fq(\),)e(and)j(strip)g(information)f(from)515 +1761 y(ob)5 b(ject)28 b(\034les)g(\()p Fm(avr-strip)p +Fq(\).)37 b(Before)28 b(w)n(e)g(can)g(build)h(the)g(C)f(compiler,)g +(these)h(to)r(ols)f(need)515 1861 y(to)f(b)r(e)h(in)g(place.)515 +2008 y(Do)n(wnload)e(and)i(unpac)n(k)f(the)g(source)g(\034les:)515 +2207 y Fj($)35 b(bunzip2)i(-c)f(binutils-.tar.)q(bz2)42 +b(|)35 b(tar)h(xf)g(-)515 2286 y($)f(cd)h(binutils-)506 +2477 y Fs(Note:)676 2627 y Fq(Replace)27 b Fo(<)p Fm(version)p +Fo(>)d Fq(with)k(the)g(v)n(ersion)e(of)i(the)g(pac)n(k)-5 +b(age)25 b(y)n(ou)i(do)n(wnloaded.)676 2726 y(If)d(y)n(ou)e(obtained)g +(a)h(gzip)g(compressed)e(\034le)j(\(.gz\),)g(use)f Fm(gunzip)d +Fq(instead)j(of)g Fm(bunzip2)p Fq(.)515 2946 y(It)j(is)f(usually)g(a)g +(go)r(o)r(d)g(idea)g(to)g(con\034gure)f(and)i(build)g +Fs(bin)m(utils)e Fq(in)i(a)f(sub)r(directory)f(so)h(as)515 +3046 y(not)k(to)h(p)r(ollute)f(the)h(source)e(with)i(the)g(compiled)g +(\034les.)42 b(This)29 b(is)h(recommended)f(b)n(y)g(the)515 +3145 y Fs(bin)m(utils)d Fq(dev)n(elop)r(ers.)515 3345 +y Fj($)35 b(mkdir)i(obj-avr)515 3423 y($)e(cd)h(obj-avr)515 +3643 y Fq(The)e(next)g(step)h(is)f(to)g(con\034gure)f(and)h(build)h +(the)f(to)r(ols.)56 b(This)34 b(is)h(done)e(b)n(y)h(supplying)515 +3743 y(argumen)n(ts)26 b(to)h(the)h Fm(configure)c Fq(script)j(that)h +(enable)f(the)h(A)-9 b(VR-sp)r(eci\034c)28 b(options.)515 +3942 y Fj($)35 b(../configure)k(--prefix=$PREFIX)h(--target=avr)e +(--disable-nls)515 4162 y Fq(If)k(y)n(ou)g(don't)g(sp)r(ecify)g(the)h +Fm(\025prefix)c Fq(option,)45 b(the)e(to)r(ols)e(will)i(get)e +(installed)h(in)h(the)515 4262 y Fm(/usr/local)28 b Fq(hierarc)n(h)n(y) +i(\(i.e.)52 b(the)33 b(binaries)e(will)i(get)f(installed)g(in)h +Fm(/usr/local/bin)p Fq(,)515 4361 y(the)k(info)f(pages)g(get)g +(installed)h(in)g Fm(/usr/local/info)o Fq(,)c(etc.\))65 +b(Since)36 b(these)h(to)r(ols)f(are)515 4461 y(c)n(hanging)e(frequen)n +(tly)-7 b(,)37 b(It)f(is)f(preferrable)f(to)h(put)h(them)g(in)g(a)f(lo) +r(cation)g(that)h(is)f(easily)515 4560 y(remo)n(v)n(ed.)515 +4707 y(When)24 b Fm(configure)d Fq(is)j(run,)g(it)h(generates)d(a)i +(lot)g(of)g(messages)f(while)h(it)g(determines)g(what)515 +4807 y(is)36 b(a)n(v)-5 b(ailable)35 b(on)g(y)n(our)g(op)r(erating)g +(system.)63 b(When)36 b(it)h(\034nishes,)h(it)f(will)f(ha)n(v)n(e)f +(created)515 4907 y(sev)n(eral)22 b Fm(Makefile)p Fq(s)e(that)25 +b(are)e(custom)g(tailored)g(to)h(y)n(our)f(platform.)35 +b(A)n(t)25 b(this)f(p)r(oin)n(t,)h(y)n(ou)515 5006 y(can)i(build)h(the) +g(pro)5 b(ject.)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 92 108 +TeXDict begin 92 107 bop 515 203 a Fs(12.5)94 b(GCC)32 +b(for)g(the)f(A)-11 b(VR)32 b(target)1458 b(92)p 515 +236 2865 4 v 515 523 a Fj($)35 b(make)506 724 y Fs(Note:)676 +874 y Fq(BSD)24 b(users)f(should)g(note)g(that)h(the)g(pro)5 +b(ject's)23 b Fm(Makefile)d Fq(uses)j(GNU)h Fm(make)e +Fq(syn)n(tax.)676 973 y(This)28 b(means)f(F)-7 b(reeBSD)27 +b(users)g(ma)n(y)g(need)g(to)h(build)g(the)g(to)r(ols)f(b)n(y)g(using)g +Fm(gmake)p Fq(.)515 1203 y(If)34 b(the)h(to)r(ols)f(compiled)g(cleanly) +-7 b(,)36 b(y)n(ou're)d(ready)g(to)h(install)g(them.)58 +b(If)34 b(y)n(ou)g(sp)r(eci\034ed)g(a)515 1303 y(destination)26 +b(that)h(isn't)g(o)n(wned)f(b)n(y)h(y)n(our)e(accoun)n(t,)h(y)n(ou'll)g +(need)h Fm(root)e Fq(access)h(to)g(install)515 1403 y(them.)37 +b(T)-7 b(o)27 b(install:)515 1612 y Fj($)35 b(make)i(install)515 +1842 y Fq(Y)-7 b(ou)33 b(should)h(no)n(w)f(ha)n(v)n(e)f(the)i(programs) +d(from)j(bin)n(utils)g(installed)f(in)n(to)h Fm($PREFIX/bin)p +Fq(.)515 1941 y(Don't)d(forget)f(to)h Fs(set)36 b(y)m(our)g(P)-8 +b(A)g(TH)32 b Fq(\(p.)14 b(89\))31 b(en)n(vironmen)n(t)f(v)-5 +b(ariable)30 b(b)r(efore)g(going)g(to)515 2041 y(build)e(a)n(vr-gcc.) +506 2253 y Fs(Note:)676 2402 y Fq(The)61 b(o\036cial)e(v)n(ersion)g(of) +i(bin)n(utils)g(migh)n(t)f(lac)n(k)g(supp)r(ort)g(for)g(recen)n(t)g(A) +-9 b(VR)676 2502 y(devices.)150 b(A)66 b(patc)n(h)f(that)g(adds)g(more) +g(A)-9 b(VR)66 b(t)n(yp)r(es)f(can)g(b)r(e)h(found)f(at)676 +2602 y Fm(http://www.freeb)o(sd)o(.or)o(g/)o(cgi)o(/c)o(vs)o(web)o(.c)o +(gi)o(/po)o(rt)o(s/)o(dev)o(el)o(/av)o(r-)o(bi)o(nut)o(il)o(s/)o(fil)o +(es)o(/p)o(atc)o(h-)o(ne)o(wde)o(vi)o(ces)515 2881 y +Fn(12.5)112 b(GCC)37 b(for)h(the)f(A)-12 b(VR)36 b(target)506 +3067 y Fs(W)-8 b(arning:)676 3233 y Fq(Y)h(ou)37 b Fs(m)m(ust)g +Fq(install)h Fs(a)m(vr-bin)m(utils)f Fq(\(p.)14 b(91\))37 +b(and)g(mak)n(e)f(sure)h(y)n(our)f Fs(path)43 b(is)f(set)676 +3332 y Fq(\(p.)14 b(89\))27 b(prop)r(erly)g(b)r(efore)g(installing)g(a) +n(vr-gcc.)515 3562 y(The)g(steps)h(to)f(build)h Fm(avr-gcc)d +Fq(are)i(essen)n(tially)f(same)h(as)g(for)g Fs(bin)m(utils)f +Fq(\(p.)14 b(91\):)515 3771 y Fj($)35 b(bunzip2)i(-c)f +(gcc-.tar.bz2)41 b(|)36 b(tar)g(xf)g(-)515 3850 +y($)f(cd)h(gcc-)515 3929 y($)f(mkdir)i(obj-avr)515 +4008 y($)e(cd)h(obj-avr)515 4087 y($)f(../configure)k(--prefix=$PREFIX) +h(--target=avr)e(--enable-languages=c,c++)k(\\)656 4166 +y(--disable-nls)d(--disable-libssp)g(--with-dwarf2)515 +4245 y($)c(make)515 4323 y($)g(make)i(install)515 4553 +y Fq(T)-7 b(o)38 b(sa)n(v)n(e)e(y)n(our)h(self)i(some)f(do)n(wnload)f +(time,)k(y)n(ou)d(can)g(alternativ)n(ely)f(do)n(wnload)g(only)515 +4653 y(the)31 b Fm(gcc-core-)p Fo(<)p Fm(versio)o(n)p +Fo(>)o Fm(.t)o(ar.)o(bz)o(2)25 b Fq(and)31 b Fm(gcc-c++-)p +Fo(<)p Fm(versio)o(n)p Fo(>)o Fm(.t)o(ar.)o(bz)o(2)25 +b Fq(parts)515 4753 y(of)30 b(the)h(gcc.)44 b(Also,)31 +b(if)f(y)n(ou)g(don't)g(need)h(C++)e(supp)r(ort,)i(y)n(ou)f(only)f +(need)i(the)f(core)g(part)515 4852 y(and)d(should)g(only)h(enable)f +(the)h(C)f(language)f(supp)r(ort.)p 515 5179 V 515 5255 +a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 93 109 +TeXDict begin 93 108 bop 515 203 a Fs(12.6)94 b(A)-11 +b(VR)32 b(Lib)s(c)2085 b(93)p 515 236 2865 4 v 506 497 +a(Note:)676 647 y Fq(Early)27 b(v)n(ersions)f(of)h(these)h(to)r(ols)f +(did)h(not)g(supp)r(ort)f(C++.)676 746 y(The)g(stdc++)g(libs)g(are)f +(not)i(included)f(with)h(C++)e(for)h(A)-9 b(VR)28 b(due)f(to)g(the)h +(size)f(limi-)676 846 y(tations)g(of)h(the)g(devices.)676 +946 y(The)69 b(o\036cial)f(v)n(ersion)g(of)h(GCC)g(migh)n(t)g(lac)n(k)f +(supp)r(ort)h(for)f(recen)n(t)h(A)-9 b(VR)676 1045 y(devices.)150 +b(A)66 b(patc)n(h)f(that)g(adds)g(more)g(A)-9 b(VR)66 +b(t)n(yp)r(es)f(can)g(b)r(e)h(found)f(at)676 1145 y Fm +(http://www.freeb)o(sd)o(.or)o(g/)o(cgi)o(/c)o(vs)o(web)o(.c)o(gi)o +(/po)o(rt)o(s/)o(dev)o(el)o(/av)o(r-)o(gc)o(c/f)o(il)o(es)o(/pa)o(tc)o +(h-)o(new)o(de)o(vi)o(ces)515 1425 y Fn(12.6)112 b(A)-12 +b(VR)36 b(Lib)s(c)506 1591 y Fs(W)-8 b(arning:)676 1757 +y Fq(Y)h(ou)24 b Fs(m)m(ust)g Fq(install)g Fs(a)m(vr-bin)m(utils)g +Fq(\(p.)14 b(91\),)25 b Fs(a)m(vr-gcc)h Fq(\(p.)14 b(92\))24 +b(and)g(mak)n(e)f(sure)g(y)n(our)676 1856 y Fs(path)33 +b(is)e(set)c Fq(\(p.)14 b(89\))27 b(prop)r(erly)f(b)r(efore)i +(installing)f(a)n(vr-lib)r(c.)506 2073 y Fs(Note:)676 +2222 y Fq(If)j(y)n(ou)e(ha)n(v)n(e)g(obtained)h(the)h(latest)f(a)n +(vr-lib)r(c)f(from)h(cvs,)g(y)n(ou)g(will)g(ha)n(v)n(e)f(to)i(run)f +(the)676 2322 y Fm(bootstrap)21 b Fq(script)j(b)r(efore)g(using)g +(either)g(of)g(the)h(build)g(metho)r(ds)f(describ)r(ed)g(b)r(elo)n(w.) +515 2552 y(T)-7 b(o)27 b(build)h(and)f(install)h(a)n(vr-lib)r(c:)515 +2761 y Fj($)35 b(gunzip)i(-c)f(avr-libc-.tar.g)q(z)41 +b(|)36 b(tar)g(xf)g(-)515 2840 y($)f(cd)h(avr-libc-)515 +2919 y($)f(./configure)k(--prefix=$PREFIX)g(--build=`./config.guess)q +(`)i(--host=avr)515 2997 y($)35 b(make)515 3076 y($)g(make)i(install) +515 3356 y Fn(12.7)112 b(A)-12 b(VRDUDE)506 3522 y Fs(Note:)676 +3672 y Fq(It)26 b(has)f(b)r(een)i(p)r(orted)e(to)h(windo)n(ws)f(\(via)g +(MinGW)i(or)e(cygwin\),)g(Lin)n(ux)h(and)f(Solaris.)676 +3771 y(Other)i(Unix)h(systems)f(should)g(b)r(e)h(trivial)f(to)h(p)r +(ort)f(to.)515 4001 y Fs(a)m(vrdude)39 b Fq(is)e(part)g(of)h(the)g(F)-7 +b(reeBSD)37 b(p)r(orts)h(system.)66 b(T)-7 b(o)38 b(install)f(it,)k +(simply)c(do)h(the)515 4101 y(follo)n(wing:)515 4310 +y Fj(#)d(cd)h(/usr/ports/devel/avrdude)515 4389 y(#)f(make)i(install) +506 4585 y Fs(Note:)676 4734 y Fq(Installation)44 b(in)n(to)h(the)h +(default)f(lo)r(cation)g(usually)f(requires)g(ro)r(ot)g(p)r +(ermissions.)676 4834 y(Ho)n(w)n(ev)n(er,)28 b(running)g(the)i(program) +c(only)j(requires)f(access)f(p)r(ermissions)h(to)h(the)h(ap-)676 +4934 y(propriate)c Fm(ppi\(4\))f Fq(device.)p 515 5179 +V 515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 94 110 +TeXDict begin 94 109 bop 515 203 a Fs(12.8)94 b(GDB)32 +b(for)g(the)g(A)-11 b(VR)32 b(target)1454 b(94)p 515 +236 2865 4 v 515 523 a Fq(Building)29 b(and)h(installing)f(on)h(other)f +(systems)g(should)h(use)f(the)i Fm(configure)26 b Fq(system,)k(as)515 +623 y(suc)n(h:)515 832 y Fj($)35 b(gunzip)i(-c)f +(avrdude-.tar.gz)42 b(|)35 b(tar)i(xf)e(-)515 +911 y($)g(cd)h(avrdude-)515 990 y($)f(mkdir)i(obj-avr)515 +1068 y($)e(cd)h(obj-avr)515 1147 y($)f(../configure)k(--prefix=$PREFIX) +515 1226 y($)c(make)515 1305 y($)g(make)i(install)515 +1585 y Fn(12.8)112 b(GDB)37 b(for)g(the)h(A)-12 b(VR)35 +b(target)515 1785 y Fq(GDB)28 b(also)e(uses)h(the)h Fm(configure)c +Fq(system,)j(so)g(to)h(build)g(and)f(install:)515 1994 +y Fj($)35 b(bunzip2)i(-c)f(gdb-.tar.bz2)41 b(|)36 +b(tar)g(xf)g(-)515 2073 y($)f(cd)h(gdb-)515 +2152 y($)f(mkdir)i(obj-avr)515 2231 y($)e(cd)h(obj-avr)515 +2310 y($)f(../configure)k(--prefix=$PREFIX)h(--target=avr)515 +2389 y($)35 b(make)515 2467 y($)g(make)i(install)506 +2669 y Fs(Note:)676 2818 y Fq(If)g(y)n(ou)e(are)h(planning)g(on)g +(using)g Fm(avr-gdb)p Fq(,)f(y)n(ou)h(will)g(probably)f(w)n(an)n(t)h +(to)g(install)676 2918 y(either)26 b Fs(sim)m(ula)m(vr)h +Fq(\(p.)14 b(94\))26 b(or)f Fs(a)m(v)-5 b(arice)28 b +Fq(\(p.)14 b(95\))26 b(since)g(a)n(vr-gdb)f(needs)h(one)g(of)g(these) +676 3018 y(to)i(run)f(as)g(a)g(a)g(remote)g(target)g(bac)n(k)n(end.)515 +3297 y Fn(12.9)112 b(Sim)m(ulA)-12 b(VR)515 3498 y Fq(Sim)n(ulA)j(VR)28 +b(also)e(uses)i(the)g Fm(configure)23 b Fq(system,)28 +b(so)f(to)g(build)h(and)g(install:)515 3707 y Fj($)35 +b(gunzip)i(-c)f(simulavr-.tar.g)q(z)41 b(|)36 +b(tar)g(xf)g(-)515 3786 y($)f(cd)h(simulavr-)515 +3865 y($)f(mkdir)i(obj-avr)515 3943 y($)e(cd)h(obj-avr)515 +4022 y($)f(../configure)k(--prefix=$PREFIX)515 4101 y($)c(make)515 +4180 y($)g(make)i(install)506 4381 y Fs(Note:)676 4531 +y Fq(Y)-7 b(ou)38 b(migh)n(t)f(w)n(an)n(t)g(to)g(ha)n(v)n(e)f(already)g +(installed)h Fs(a)m(vr-bin)m(utils)h Fq(\(p.)14 b(91\),)39 +b Fs(a)m(vr-gcc)676 4630 y Fq(\(p.)14 b(92\))29 b(and)f +Fs(a)m(vr-lib)s(c)h Fq(\(p.)14 b(93\))29 b(if)g(y)n(ou)f(w)n(an)n(t)g +(to)g(ha)n(v)n(e)g(the)h(test)g(programs)d(built)k(in)676 +4730 y(the)e(sim)n(ula)n(vr)e(source.)p 515 5179 V 515 +5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 95 111 +TeXDict begin 95 110 bop 515 203 a Fs(12.10)94 b(A)-11 +b(V)j(aRICE)2045 b(95)p 515 236 2865 4 v 515 523 a Fn(12.10)112 +b(A)-12 b(V)j(aRICE)506 689 y Fs(Note:)676 839 y Fq(These)25 +b(install)g(notes)f(are)g(not)h(applicable)f(to)h(a)n(v)-5 +b(arice-1.5)22 b(or)i(older.)35 b(Y)-7 b(ou)25 b(probably)676 +939 y(don't)31 b(w)n(an)n(t)g(to)g(use)g(an)n(ything)f(that)i(old)f(an) +n(yw)n(a)n(ys)d(since)j(there)g(ha)n(v)n(e)f(b)r(een)i(man)n(y)676 +1038 y(impro)n(v)n(emen)n(ts)26 b(and)i(bug)f(\034xes)g(since)g(the)h +(1.5)f(release.)515 1262 y(A)-9 b(V)i(aRICE)28 b(also)e(uses)h(the)h +Fm(configure)c Fq(system,)k(so)e(to)i(build)g(and)f(install:)515 +1466 y Fj($)35 b(gunzip)i(-c)f(avarice-.tar.gz)42 +b(|)35 b(tar)i(xf)e(-)515 1545 y($)g(cd)h(avarice-)515 +1623 y($)f(mkdir)i(obj-avr)515 1702 y($)e(cd)h(obj-avr)515 +1781 y($)f(../configure)k(--prefix=$PREFIX)515 1860 y($)c(make)515 +1939 y($)g(make)i(install)506 2135 y Fs(Note:)676 2284 +y Fq(A)-9 b(V)i(aRICE)35 b(uses)e(the)i(BFD)f(library)f(for)g +(accessing)g(v)-5 b(arious)32 b(binary)i(\034le)g(formats.)676 +2384 y(Y)-7 b(ou)26 b(ma)n(y)g(need)g(to)g(tell)h(the)f(con\034gure)f +(script)h(where)g(to)g(\034nd)g(the)h(lib)f(and)g(headers)676 +2483 y(for)j(the)h(link)f(to)h(w)n(ork.)41 b(This)29 +b(is)g(usually)g(done)g(b)n(y)h(in)n(v)n(oking)d(the)j(con\034gure)e +(script)676 2583 y(lik)n(e)37 b(this)g(\(Replace)g Fo(<)p +Fm(hdr_path)p Fo(>)c Fq(with)38 b(the)f(path)h(to)f(the)g +Fm(bfd.h)e Fq(\034le)j(on)e(y)n(our)676 2682 y(system.)f(Replace)21 +b Fo(<)p Fm(lib_path)p Fo(>)d Fq(with)k(the)g(path)g(to)g +Fm(libbfd.a)c Fq(on)k(y)n(our)e(system.\):)515 2886 y +Fj($)35 b(CPPFLAGS=-I)41 b(LDFLAGS=-L)g +(../configure)e(--prefix=$PREFIX)515 3164 y Fn(12.11)112 +b(Building)38 b(and)h(Installing)f(under)g(Windo)m(ws)515 +3365 y Fq(Building)33 b(and)g(installing)g(the)g(to)r(olc)n(hain)g +(under)g(Windo)n(ws)g(requires)f(more)g(e\033ort)h(b)r(e-)515 +3465 y(cause)f(all)h(of)g(the)h(to)r(ols)f(required)f(for)h(building,)h +(and)g(the)f(programs)e(themselv)n(es,)j(are)515 3564 +y(mainly)k(designed)g(for)g(running)h(under)f(a)g(POSIX)h(en)n +(vironmen)n(t)f(suc)n(h)g(as)g(Unix)h(and)515 3664 y(Lin)n(ux.)d(Windo) +n(ws)27 b(do)r(es)h(not)f(nativ)n(ely)g(pro)n(vide)f(suc)n(h)i(an)f(en) +n(vironmen)n(t.)515 3811 y(There)38 b(are)g(t)n(w)n(o)h(pro)5 +b(jects)38 b(a)n(v)-5 b(ailable)38 b(that)h(pro)n(vide)f(suc)n(h)h(an)g +(en)n(vironmen)n(t,)i(Cygwin)515 3910 y(and)26 b(MinGW/MSYS.)h(There)f +(are)f(adv)-5 b(an)n(tages)24 b(and)i(disadv)-5 b(an)n(tages)25 +b(to)h(b)r(oth.)37 b(Cygwin)515 4010 y(pro)n(vides)c(a)h(v)n(ery)g +(complete)g(POSIX)i(en)n(vironmen)n(t)d(that)i(allo)n(ws)f(one)g(to)g +(build)i(man)n(y)515 4110 y(Lin)n(ux)25 b(based)f(to)r(ols)h(from)g +(source)f(with)h(v)n(ery)f(little)i(or)f(no)g(source)e(mo)r +(di\034cations.)36 b(Ho)n(w-)515 4209 y(ev)n(er,)e(POSIX)h +(functionalit)n(y)f(is)f(pro)n(vided)g(in)i(the)f(form)g(of)f(a)h(DLL)g +(that)h(is)e(link)n(ed)h(to)515 4309 y(the)g(application.)54 +b(This)33 b(DLL)h(has)f(to)h(b)r(e)g(redistributed)f(with)h(y)n(our)e +(application)h(and)515 4408 y(there)23 b(are)f(issues)g(if)i(the)f +(Cygwin)g(DLL)g(already)f(exists)h(on)f(the)i(installation)e(system)h +(and)515 4508 y(di\033eren)n(t)29 b(v)n(ersions)d(of)j(the)g(DLL.)g(On) +g(the)g(other)f(hand,)h(MinGW/MSYS)h(can)e(compile)515 +4608 y(co)r(de)38 b(as)g(nativ)n(e)g(Win32)g(applications.)68 +b(Ho)n(w)n(ev)n(er,)40 b(this)e(means)g(that)h(programs)d(de-)515 +4707 y(signed)27 b(for)f(Unix)i(and)f(Lin)n(ux)g(\(i.e.)37 +b(that)28 b(use)f(POSIX)h(functionalit)n(y\))f(will)h(not)f(compile)515 +4807 y(as)g(MinGW/MSYS)h(do)r(es)g(not)f(pro)n(vide)g(that)h(POSIX)g +(la)n(y)n(er)e(for)h(y)n(ou.)36 b(Therefore)26 b(most)515 +4907 y(programs)36 b(that)i(compile)g(on)g(b)r(oth)h(t)n(yp)r(es)f(of)h +(host)f(systems,)i(usually)e(m)n(ust)g(pro)n(vide)515 +5006 y(some)22 b(sort)h(of)g(abstraction)f(la)n(y)n(er)g(to)h(allo)n(w) +f(an)h(application)f(to)i(b)r(e)f(built)h(cross-platform.)p +515 5179 V 515 5255 a Fp(Generated)h(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 96 112 +TeXDict begin 96 111 bop 515 203 a Fs(12.12)94 b(T)-8 +b(o)s(ols)30 b(Required)h(for)h(Building)e(the)i(T)-8 +b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)125 b(96)p 515 +236 2865 4 v 515 523 a Fq(MinGW/MSYS)36 b(do)r(es)f(pro)n(vide)f +(somewhat)h(of)g(a)g(POSIX)h(en)n(vironmen)n(t)f(that)h(allo)n(ws)515 +623 y(y)n(ou)f(to)g(build)h(Unix)g(and)g(Lin)n(ux)f(applications)g(as)g +(they)g(w)n(oud)h(normally)e(do,)j(with)f(a)515 722 y +Fm(configure)28 b Fq(step)k(and)g(a)f Fm(make)f Fq(step.)50 +b(Cygwin)32 b(also)f(pro)n(vides)f(suc)n(h)i(an)f(en)n(vironmen)n(t.) +515 822 y(This)25 b(means)g(that)g(building)g(the)h(A)-9 +b(VR)26 b(to)r(olc)n(hain)e(is)h(v)n(ery)f(similar)h(to)g(ho)n(w)f(it)i +(is)f(built)h(in)515 922 y(Lin)n(ux,)32 b(describ)r(ed)f(ab)r(o)n(v)n +(e.)47 b(The)32 b(main)f(di\033erences)g(are)g(in)h(what)f(the)h(P)-7 +b(A)g(TH)33 b(en)n(viron-)515 1021 y(men)n(t)26 b(v)-5 +b(ariable)25 b(gets)g(set)h(to,)h(pathname)e(di\033erences,)h(and)g +(the)g(to)r(ols)g(that)g(are)f(required)515 1121 y(to)i(build)h(the)g +(pro)5 b(jects)27 b(under)g(Windo)n(ws.)37 b(W)-7 b(e'll)28 +b(tak)n(e)f(a)g(lo)r(ok)g(at)g(the)h(to)r(ols)f(next.)515 +1400 y Fn(12.12)112 b(T)-9 b(o)s(ols)33 b(Required)g(for)f(Building)i +(the)f(T)-9 b(o)s(olc)m(hain)33 b(for)g(Win-)882 1517 +y(do)m(ws)515 1717 y Fq(These)19 b(are)f(the)h(to)r(ols)g(that)g(are)g +(curren)n(tly)f(used)h(to)g(build)h(WinA)-9 b(VR)20 b(20070525)15 +b(\(or)j(later\).)515 1817 y(This)26 b(list)g(ma)n(y)f(c)n(hange,)g +(either)h(the)g(v)n(ersion)e(of)i(the)h(to)r(ols,)e(or)g(the)i(to)r +(ols)e(themselv)n(es,)h(as)515 1916 y(impro)n(v)n(emen)n(ts)g(are)g +(made.)639 2146 y Fk(\210)41 b Fs(MinGW/MSYS)722 2279 +y Fo(<)p Fm(http://downloads)o(.s)o(ou)o(rce)o(fo)o(rg)o(e.n)o(et)o(/m) +o(ing)o(w/)o(Mi)o(nGW)o(-5)o(.1.)o(4.)o(ex)o(e?u)o(se)o(_-)722 +2379 y(mirror=superb-eas)o(t)p Fo(>)816 2545 y Fs(\025)g +Fq(Put)87 b(MinGW-5.1.4.exe)d(in)i(it's)g(o)n(wn)g(directory)e(\(for)i +(example:)905 2644 y(C:)p Fh(n)p Fq(MinGWSetup\))816 +2777 y Fs(\025)41 b Fq(Run)28 b(MinGW-5.1.4.exe)816 2910 +y Fs(\025)41 b Fq(Select)28 b("Do)n(wnload)e(and)h(install")816 +3043 y Fs(\025)41 b Fq(Select)28 b("Curren)n(t")d(pac)n(k)-5 +b(age.)816 3176 y Fs(\025)41 b Fq(Select)28 b(t)n(yp)r(e)f(of)h +(install:)37 b(F)-7 b(ull.)639 3406 y Fk(\210)41 b Fs(Install)32 +b(MSYS-1.0.10.exe)c(pac)m(k)-5 b(age.)722 3538 y Fo(<)p +Fm(http://prdownloa)o(ds)o(.s)o(f.n)o(et)o(/m)o(ing)o(w/)o(MS)o(YS-)o +(1.)o(0.)o(10.)o(ex)o(e?d)o(ow)o(nl)o(oad)o Fo(>)816 +3705 y Fs(\025)41 b Fq(Default)28 b(selections)816 3837 +y Fs(\025)41 b Fq(Batc)n(h)27 b(\034le)h(will)f(ask:)977 +3970 y Fk(*)41 b Fq("Do)28 b(y)n(ou)g(wish)h(to)g(con)n(tin)n(ue)f +(with)h(the)g(p)r(ost)g(install?")f(Press)h("y")e(and)1060 +4070 y(press)g(en)n(ter.)977 4186 y Fk(*)41 b Fq("Do)27 +b(y)n(ou)g(ha)n(v)n(e)f(MinGW)j(installed?")e(Press)g("y")f(and)i +(press)e(en)n(ter.)977 4302 y Fk(*)41 b Fq("Where)51 +b(is)g(y)n(our)f(MinGW)i(installation?")e(T)n(yp)r(e)h(in)h("c:/mingw") +1060 4402 y(\(without)28 b(quotes\))g(and)f(press)g(en)n(ter)977 +4518 y Fk(*)41 b Fq("Do)c(y)n(ou)g(wish)h(for)f(me)h(to)g(add)g(moun)n +(t)f(bindings)h(for)f(c:/mingw)g(to)1060 4618 y(/mingw?")27 +b(Press)g("y")f(and)i(press)e(en)n(ter.)977 4734 y Fk(*)41 +b Fq(It)28 b(will)f(displa)n(y)f(some)g(messages)f(on)i(the)h(screen,)e +(then)h(it)h(will)f(displa)n(y:)1060 4834 y("Press)g(an)n(y)g(k)n(ey)f +(to)i(con)n(tin)n(ue)f(.)37 b(.)g(.".)f(Press)27 b(an)n(y)g(k)n(ey)-7 +b(.)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 97 113 +TeXDict begin 97 112 bop 515 203 a Fs(12.12)94 b(T)-8 +b(o)s(ols)30 b(Required)h(for)h(Building)e(the)i(T)-8 +b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)125 b(97)p 515 +236 2865 4 v 639 523 a Fk(\210)41 b Fs(Edit)31 b(c:)p +Fh(n)p Fs(msys)p Fh(n)p Fs(1.0)p Fh(n)p Fs(msys.bat)722 +653 y Fq(Change)c(line)h(\(should)f(b)r(e)h(line)g(41\):)1004 +830 y Fj(if)36 b(EXIST)h(rxvt.exe)g(goto)g(startrxvt)722 +1107 y Fq(to:)1004 1285 y Fj(rem)g(if)e(EXIST)i(rxvt.exe)h(goto)e +(startrxvt)722 1562 y Fq(to)f(remark)e(out)h(this)h(line.)58 +b(Doing)35 b(this)f(will)h(cause)f(MSYS)h(to)g(alw)n(a)n(ys)d(use)j +(the)722 1661 y(bash)27 b(shell)h(and)f(not)h(the)g(rxvt)f(shell.)506 +1842 y Fs(Note:)676 1992 y Fq(The)j(order)e(of)i(the)g(next)g(three)f +(is)h(imp)r(ortan)n(t.)43 b(Install)29 b(MSYS)h(Dev)n(elop)r(er)f(to)r +(olkit)676 2091 y(b)r(efore)e(the)h(autoto)r(ols.)639 +2306 y Fk(\210)41 b Fs(MSYS)32 b(Dev)m(elop)s(er)f(T)-8 +b(o)s(olkit)31 b(v)m(ersion)h(1.0.1)816 2480 y(\025)41 +b Fq(This)27 b(is)h(needed)g(to)f(build)h(a)n(vr-lib)r(c)e(in)i(MinGW.) +816 2607 y Fs(\025)41 b Fo(<)p Fm(http://download)o(s.)o(so)o(urc)o(ef) +o(or)o(ge.)o(ne)o(t/m)o(in)o(gw)o(/ms)o(ys)o(DT)o(K-1)o(.0)o(.1)o(.ex)o +(e?)o(us)o(e_-)905 2707 y(mirror=internap)p Fo(>)816 +2834 y Fs(\025)g Fq(Single)27 b(\034le)h(installer)f(executable.)36 +b(Install.)639 3049 y Fk(\210)41 b Fs(auto)s(conf)32 +b(2.59)f(from)g(the)h("MSYS)g(Dev)m(elop)s(er)f(T)-8 +b(o)s(olkit")30 b(release)816 3223 y(\025)41 b Fq(auto)r(conf)27 +b(2.59/2.60)d(is)k(needed)g(to)f(build)h(a)n(vr-lib)r(c)e(in)i(MinGW.) +816 3350 y Fs(\025)41 b Fo(<)p Fm(http://download)o(s.)o(so)o(urc)o(ef) +o(or)o(ge.)o(ne)o(t/m)o(in)o(gw)o(/ms)o(ys)o(-a)o(uto)o(co)o(nf)o(-2.)o +(59)o(.t)o(ar.)o(bz)o(2?u)o(se)o(_-)905 3449 y(mirror=internap)p +Fo(>)816 3576 y Fs(\025)g Fq(Extract)27 b(to)h(c:)p Fh(n)p +Fq(msys)p Fh(n)p Fq(1.0)639 3791 y Fk(\210)41 b Fs(automak)m(e)33 +b(1.8.2)816 3965 y(\025)41 b Fq(automak)n(e)26 b(1.8/1.9)f(is)j(needed) +f(to)h(build)g(a)n(vr-lib)r(c)e(in)i(MinGW.)816 4092 +y Fs(\025)41 b Fo(<)p Fm(http://download)o(s.)o(so)o(urc)o(ef)o(or)o +(ge.)o(ne)o(t/m)o(in)o(gw)o(/ms)o(ys)o(-a)o(uto)o(ma)o(ke)o(-1.)o(8.)o +(2.)o(tar)o(.b)o(z2?)o(us)o(e_)o(-)905 4192 y(mirror=internap)p +Fo(>)816 4318 y Fs(\025)g Fq(Extract)27 b(to)h(c:)p Fh(n)p +Fq(msys)p Fh(n)p Fq(1.0)639 4534 y Fk(\210)41 b Fs(Install)32 +b(Cygwin)816 4707 y(\025)41 b Fq(Install)d(ev)n(erything,)j(all)d +(users,)i(UNIX)g(line)f(endings.)69 b(This)39 b(will)g(tak)n(e)e(a)905 +4807 y Fh(\003)p Fq(long)p Fh(\003)31 b Fq(time.)52 b(A)33 +b(fat)g(in)n(ternet)f(pip)r(e)h(is)g(highly)f(recommended.)51 +b(It)33 b(is)f(also)905 4907 y(recommended)j(that)h(y)n(ou)f(do)n +(wnload)f(all)i(to)g(a)f(directory)f(\034rst,)k(and)e(then)905 +5006 y(install)27 b(from)h(that)f(directory)g(to)g(y)n(our)f(mac)n +(hine.)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 98 114 +TeXDict begin 98 113 bop 515 203 a Fs(12.12)94 b(T)-8 +b(o)s(ols)30 b(Required)h(for)h(Building)e(the)i(T)-8 +b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)125 b(98)p 515 +236 2865 4 v 506 497 a(Note:)676 647 y Fq(GMP)29 b(is)e(a)g(prequisite) +g(for)g(building)h(MPFR.)h(Build)e(GMP)i(\034rst.)639 +874 y Fk(\210)41 b Fs(Build)31 b(GMP)h(for)g(MinGW)816 +1055 y(\025)41 b Fq(V)-7 b(ersion)27 b(4.2.3)816 1187 +y Fs(\025)41 b Fo(<)p Fm(http://gmplib.o)o(rg)o(/)p Fo(>)816 +1318 y Fs(\025)g Fq(Build)28 b(script:)1187 1462 y Fj(./configure)74 +b(2>&1)36 b(|)g(tee)g(gmp-configure.log)1187 1541 y(make)319 +b(2>&1)36 b(|)g(tee)g(gmp-make.log)1187 1620 y(make)h(check)107 +b(2>&1)36 b(|)g(tee)g(gmp-make-check.log)1187 1699 y(make)h(install)g +(2>&1)f(|)g(tee)g(gmp-make-install.log)816 1942 y Fs(\025)41 +b Fq(GMP)30 b(headers)f(will)h(b)r(e)g(installed)f(under)h(/usr/lo)r +(cal/include)d(and)i(library)905 2041 y(installed)e(under)h(/usr/lo)r +(cal/lib.)639 2269 y Fk(\210)41 b Fs(Build)31 b(MPFR)g(for)h(MinGW)816 +2449 y(\025)41 b Fq(V)-7 b(ersion)27 b(2.3.2)816 2581 +y Fs(\025)41 b Fo(<)p Fm(http://www.mpfr)o(.o)o(rg)o(/)p +Fo(>)816 2713 y Fs(\025)g Fq(Build)28 b(script:)1187 +2857 y Fj(./configure)38 b(--with-gmp=/usr/local)k(2>&1)36 +b(|)f(tee)i(mpfr-configure.log)1187 2935 y(make)319 b(2>&1)36 +b(|)g(tee)g(mpfr-make.log)1187 3014 y(make)h(check)107 +b(2>&1)36 b(|)g(tee)g(mpfr-make-check.log)1187 3093 y(make)h(install)g +(2>&1)f(|)g(tee)g(mpfr-make-install.log)816 3336 y Fs(\025)41 +b Fq(MPFR)24 b(headers)e(will)i(b)r(e)g(installed)f(under)g(/usr/lo)r +(cal/include)e(and)i(library)905 3436 y(installed)k(under)h(/usr/lo)r +(cal/lib.)639 3663 y Fk(\210)41 b Fs(Install)32 b(Do)m(xygen)816 +3844 y(\025)41 b Fq(V)-7 b(ersion)27 b(1.5.6)816 3976 +y Fs(\025)41 b Fo(<)p Fm(http://www.stac)o(k.)o(nl)o(/)p +Fh(\030)p Fm(d)o(im)o(it)o(ri/)o(do)o(xyg)o(en)o(/)p +Fo(>)816 4108 y Fs(\025)g Fq(Do)n(wnload)26 b(and)i(install.)639 +4335 y Fk(\210)41 b Fs(Install)32 b(NetPBM)816 4516 y(\025)41 +b Fq(V)-7 b(ersion)27 b(10.27.0)816 4647 y Fs(\025)41 +b Fq(F)-7 b(rom)18 b(the)h(GNUWin32)f(pro)5 b(ject:)32 +b Fo(<)p Fm(http://gnuwin3)o(2.)o(sou)o(rc)o(ef)o(org)o(e.)o(ne)o(t/p)o +(ac)o(ka)o(ges)o(.h)o(tml)o Fo(>)816 4779 y Fs(\025)41 +b Fq(Do)n(wnload)26 b(and)i(install.)639 5006 y Fk(\210)41 +b Fs(Install)32 b(\034g2dev)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 99 115 +TeXDict begin 99 114 bop 515 203 a Fs(12.13)94 b(Building)30 +b(the)h(T)-8 b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)939 +b(99)p 515 236 2865 4 v 816 523 a(\025)41 b Fq(V)-7 b(ersion)27 +b(3.2)f(P)n(atc)n(hlev)n(el)h(5)816 655 y Fs(\025)41 +b Fq(F)-7 b(rom)18 b(WinFig)g(2.2:)32 b Fo(<)p Fm(http://www.schm)o(id) +o(t-)o(web)o(-b)o(er)o(lin)o(.d)o(e/)o(win)o(fi)o(g/)o +Fo(>)816 786 y Fs(\025)41 b Fq(Unzip)29 b(the)g(do)n(wnload)e(\034le)i +(and)f(install)h(\034g2dev.exe)e(in)i(a)f(lo)r(cation)g(of)g(y)n(our) +905 886 y(c)n(hoice.)639 1113 y Fk(\210)41 b Fs(Install)32 +b(MiKT)-8 b(eX)816 1293 y(\025)41 b Fq(V)-7 b(ersion)27 +b(2.7)816 1425 y Fs(\025)41 b Fo(<)p Fm(http://miktex.o)o(rg)o(/)p +Fo(>)816 1556 y Fs(\025)g Fq(Do)n(wnload)26 b(and)i(install.)639 +1783 y Fk(\210)41 b Fs(Install)32 b(Ghostscript)816 1964 +y(\025)41 b Fq(V)-7 b(ersion)27 b(8.63)816 2095 y Fs(\025)41 +b Fo(<)p Fm(http://www.cs.w)o(is)o(c.)o(edu)o(/)p Fh(\030)o +Fm(gh)o(ost)o(/)p Fo(>)816 2227 y Fs(\025)g Fq(Do)n(wnload)26 +b(and)i(install.)639 2454 y Fk(\210)41 b Fq(Set)20 b(the)h(TEMP)g(and)e +(TMP)i(en)n(vironmen)n(t)d(v)-5 b(ariables)19 b(to)g +Fs(c:)p Fh(n)p Fs(temp)g Fq(or)g(to)h(the)g(short)722 +2553 y(\034lename)28 b(v)n(ersion.)35 b(This)27 b(helps)h(to)f(a)n(v)n +(oid)g(NTVDM)h(errors)d(during)j(building.)515 2832 y +Fn(12.13)112 b(Building)38 b(the)f(T)-9 b(o)s(olc)m(hain)39 +b(for)e(Windo)m(ws)515 3033 y Fq(All)23 b(directories)e(in)h(the)h(P)-7 +b(A)g(TH)24 b(en)n(viornmen)n(t)d(v)-5 b(ariable)21 b(should)i(b)r(e)f +(sp)r(eci\034ed)h(using)f(their)515 3132 y(short)i(\034lename)i +(\(8.3\))f(v)n(ersion.)34 b(This)25 b(will)h(also)e(help)i(to)f(a)n(v)n +(oid)f(NTVDM)i(errors)e(during)515 3232 y(building.)37 +b(These)27 b(short)g(\034lenames)g(can)g(b)r(e)h(sp)r(eci\034c)g(to)f +(eac)n(h)g(mac)n(hine.)515 3379 y(Build)h(the)f(to)r(ols)h(b)r(elo)n(w) +f(in)h(MSYS.)639 3606 y Fk(\210)41 b Fs(Bin)m(utils)816 +3786 y(\025)g Fq(Op)r(en)28 b(source)e(co)r(de)h(pacakge)f(and)i(patc)n +(h)f(as)g(necessary)-7 b(.)816 3918 y Fs(\025)41 b Fq(Con\034gure)26 +b(and)i(build)g(in)g(a)f(directory)f(outside)h(of)h(the)g(source)e(co)r +(de)i(tree.)816 4050 y Fs(\025)41 b Fq(Set)28 b(P)-7 +b(A)g(TH,)29 b(in)f(order:)977 4181 y Fk(*)41 b Fo(<)p +Fq(MikT)-7 b(ex)27 b(executables)p Fo(>)977 4297 y Fk(*)41 +b Fq(/usr/lo)r(cal/bin)977 4412 y Fk(*)g Fq(/usr/bin)977 +4528 y Fk(*)g Fq(/bin)977 4643 y Fk(*)g Fq(/mingw/bin)977 +4759 y Fk(*)g Fq(c:/cygwin/bin)977 4875 y Fk(*)g Fo(<)p +Fq(install)27 b(directory)p Fo(>)p Fq(/bin)816 5006 y +Fs(\025)41 b Fq(Con\034gure)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 100 116 +TeXDict begin 100 115 bop 515 203 a Fs(12.13)94 b(Building)30 +b(the)h(T)-8 b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)891 +b(100)p 515 236 2865 4 v 1187 523 a Fj(CFLAGS=-D__USE_MINGW_ACC)q(ESS) +77 b(\\)1187 602 y(../$archivedir/configure)42 b(\\)1328 +681 y(--prefix=$installdir)f(\\)1328 760 y(--target=avr)e(\\)1328 +839 y(--disable-nls)g(\\)1328 917 y(--enable-doc)g(\\)1328 +996 y(--datadir=$installdir/d)q(oc/b)q(inu)q(tils)j(\\)1328 +1075 y(--with-gmp=/usr/local)f(\\)1328 1154 y(--with-mpfr=/usr/local)h +(\\)1328 1233 y(2>&1)37 b(|)e(tee)h(binutils-configure.log)816 +1473 y Fs(\025)41 b Fq(Mak)n(e)1187 1614 y Fj(make)c(all)f(html)g +(install)h(install-html)i(2>&1)d(|)g(tee)g(binutils-make.log)816 +1854 y Fs(\025)41 b Fq(Man)n(ually)27 b(c)n(hange)f(do)r(cumen)n +(tation)h(lo)r(cation.)639 2076 y Fk(\210)41 b Fs(GCC)816 +2253 y(\025)g Fq(Op)r(en)28 b(source)e(co)r(de)h(pacakge)f(and)i(patc)n +(h)f(as)g(necessary)-7 b(.)816 2383 y Fs(\025)41 b Fq(Con\034gure)26 +b(and)i(build)g(in)g(a)f(directory)f(outside)h(of)h(the)g(source)e(co)r +(de)i(tree.)816 2513 y Fs(\025)41 b Fq(Set)28 b(P)-7 +b(A)g(TH,)29 b(in)f(order:)977 2642 y Fk(*)41 b Fo(<)p +Fq(MikT)-7 b(ex)27 b(executables)p Fo(>)977 2757 y Fk(*)41 +b Fq(/usr/lo)r(cal/bin)977 2872 y Fk(*)g Fq(/usr/bin)977 +2986 y Fk(*)g Fq(/bin)977 3101 y Fk(*)g Fq(/mingw/bin)977 +3216 y Fk(*)g Fq(c:/cygwin/bin)977 3330 y Fk(*)g Fo(<)p +Fq(install)27 b(directory)p Fo(>)p Fq(/bin)816 3460 y +Fs(\025)41 b Fq(Con\034gure)1187 3600 y Fj(CFLAGS=-D__USE_MINGW_ACC)q +(ESS)77 b(\\)1187 3679 y(../gcc-$version/configur)q(e)41 +b(\\)1328 3758 y(--prefix=$installdir)g(\\)1328 3837 +y(--target=$target)f(\\)1328 3916 y(--enable-languages=c,c+)q(+)h(\\) +1328 3995 y(--with-dwarf2)e(\\)1328 4074 y(--enable-win32-registry)q +(=Win)q(AVR)q(-$re)q(leas)q(e)i(\\)1328 4152 y(--disable-nls)e(\\)1328 +4231 y(--with-gmp=/usr/local)i(\\)1328 4310 y(--with-mpfr=/usr/local)h +(\\)1328 4389 y(--enable-doc)d(\\)1328 4468 y(--disable-libssp)h(\\) +1328 4547 y(2>&1)d(|)e(tee)h($package-configure.log)816 +4787 y Fs(\025)41 b Fq(Mak)n(e)1187 4927 y Fj(make)c(all)f(html)g +(install)h(2>&1)g(|)e(tee)h($package-make.log)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 101 117 +TeXDict begin 101 116 bop 515 203 a Fs(12.13)94 b(Building)30 +b(the)h(T)-8 b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)891 +b(101)p 515 236 2865 4 v 816 523 a(\025)41 b Fq(Man)n(ually)27 +b(cop)n(y)g(the)h(HTML)g(do)r(cumen)n(tation)g(from)f(the)h(source)f +(co)r(de)g(tree)905 623 y(to)g(the)h(installation)f(tree.)639 +853 y Fk(\210)41 b Fs(a)m(vr-lib)s(c)816 1035 y(\025)g +Fq(Op)r(en)28 b(source)e(co)r(de)h(pac)n(k)-5 b(age.)816 +1168 y Fs(\025)41 b Fq(Con\034gure)26 b(and)i(build)g(at)f(the)h(top)g +(of)f(the)h(source)f(co)r(de)g(tree.)816 1301 y Fs(\025)41 +b Fq(Set)28 b(P)-7 b(A)g(TH,)29 b(in)f(order:)977 1434 +y Fk(*)41 b Fq(/usr/lo)r(cal/bin)977 1550 y Fk(*)g Fq(/mingw/bin)977 +1666 y Fk(*)g Fq(/bin)977 1782 y Fk(*)g Fo(<)p Fq(MikT)-7 +b(ex)27 b(executables)p Fo(>)977 1899 y Fk(*)41 b Fo(<)p +Fq(install)27 b(directory)p Fo(>)p Fq(/bin)977 2015 y +Fk(*)41 b Fo(<)p Fq(Do)n(xygen)26 b(executables)p Fo(>)977 +2131 y Fk(*)41 b Fo(<)p Fq(NetPBM)28 b(executables)p +Fo(>)977 2247 y Fk(*)41 b Fo(<)p Fq(\034g2dev)26 b(executable)p +Fo(>)977 2364 y Fk(*)41 b Fo(<)p Fq(Ghostscript)27 b(executables)p +Fo(>)977 2480 y Fk(*)41 b Fq(c:/cygwin/bin)816 2613 y +Fs(\025)g Fq(Con\034gure)1187 2758 y Fj(./configure)d(\\)1328 +2837 y(--host=avr)g(\\)1328 2916 y(--prefix=$installdir)j(\\)1328 +2995 y(--enable-doc)e(\\)1328 3073 y(--disable-versioned-doc)j(\\)1328 +3152 y(--enable-html-doc)e(\\)1328 3231 y(--enable-pdf-doc)g(\\)1328 +3310 y(--enable-man-doc)g(\\)1328 3389 y(--mandir=$installdir/ma)q(n)h +(\\)1328 3468 y(--datadir=$installdir)g(\\)1328 3547 +y(2>&1)c(|)e(tee)h($package-configure.log)816 3792 y +Fs(\025)41 b Fq(Mak)n(e)1187 3937 y Fj(make)c(all)f(install)h(2>&1)f(|) +g(tee)g($package-make.log)816 4182 y Fs(\025)41 b Fq(Man)n(ually)27 +b(c)n(hange)f(lo)r(cation)h(of)g(man)h(page)e(do)r(cumen)n(tation.)816 +4315 y Fs(\025)41 b Fq(Mo)n(v)n(e)26 b(the)i(examples)f(to)h(the)f(top) +h(lev)n(el)f(of)h(the)g(install)f(tree.)816 4447 y Fs(\025)41 +b Fq(Con)n(v)n(ert)26 b(line)i(endings)f(in)h(examples)f(to)g(Windo)n +(ws)g(line)h(endings.)816 4580 y Fs(\025)41 b Fq(Con)n(v)n(ert)26 +b(line)i(endings)f(in)h(header)f(\034les)g(to)g(Windo)n(ws)h(line)f +(endings.)639 4810 y Fk(\210)41 b Fs(A)-11 b(VRDUDE)816 +4993 y(\025)41 b Fq(Op)r(en)28 b(source)e(co)r(de)h(pac)n(k)-5 +b(age.)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 102 118 +TeXDict begin 102 117 bop 515 203 a Fs(12.13)94 b(Building)30 +b(the)h(T)-8 b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)891 +b(102)p 515 236 2865 4 v 816 523 a(\025)41 b Fq(Con\034gure)26 +b(and)i(build)g(at)f(the)h(top)g(of)f(the)h(source)f(co)r(de)g(tree.) +816 654 y Fs(\025)41 b Fq(Set)28 b(P)-7 b(A)g(TH,)29 +b(in)f(order:)977 784 y Fk(*)41 b Fo(<)p Fq(MikT)-7 b(ex)27 +b(executables)p Fo(>)977 900 y Fk(*)41 b Fq(/usr/lo)r(cal/bin)977 +1015 y Fk(*)g Fq(/usr/bin)977 1130 y Fk(*)g Fq(/bin)977 +1245 y Fk(*)g Fq(/mingw/bin)977 1360 y Fk(*)g Fq(c:/cygwin/bin)977 +1475 y Fk(*)g Fo(<)p Fq(install)27 b(directory)p Fo(>)p +Fq(/bin)816 1606 y Fs(\025)41 b Fq(Set)28 b(lo)r(cation)f(of)g(LibUSB)h +(headers)f(and)g(libraries)1187 1748 y Fj(export)37 b +(CPPFLAGS="-I../../libusb)q(-wi)q(n32-)q(devi)q(ce-)q(bin-)q($lib)q +(usb)q(_ver)q(sio)q(n/in)q(clud)q(e")1187 1827 y(export)g +(CFLAGS="-I../../libusb-w)q(in3)q(2-de)q(vice)q(-bi)q(n-$l)q(ibus)q +(b_v)q(ersi)q(on/)q(incl)q(ude")1187 1906 y(export)g +(LDFLAGS="-L../../libusb-)q(win)q(32-d)q(evic)q(e-b)q(in-$)q(libu)q +(sb_)q(vers)q(ion)q(/lib)q(/gcc)q(")816 2148 y Fs(\025)k +Fq(Con\034gure)1187 2290 y Fj(./configure)d(\\)1328 2369 +y(--prefix=$installdir)j(\\)1328 2447 y(--datadir=$installdir)g(\\)1328 +2526 y(--sysconfdir=$installdi)q(r/bi)q(n)g(\\)1328 2605 +y(--enable-doc)e(\\)1328 2684 y(--disable-versioned-doc)j(\\)1328 +2763 y(2>&1)37 b(|)e(tee)h($package-configure.log)816 +3005 y Fs(\025)41 b Fq(Mak)n(e)1187 3147 y Fj(make)c(-k)e(all)h +(install)i(2>&1)e(|)g(tee)g($package-make.log)816 3388 +y Fs(\025)41 b Fq(Con)n(v)n(ert)26 b(line)h(endings)g(in)h(a)n(vrdude)e +(con\034g)h(\034le)h(to)f(Windo)n(ws)g(line)g(endings.)816 +3519 y Fs(\025)41 b Fq(Delete)24 b(bac)n(kup)e(cop)n(y)g(of)h(a)n +(vrdude)f(con\034g)g(\034le)i(in)f(install)g(directory)f(if)h(exists.) +639 3744 y Fk(\210)41 b Fs(Insigh)m(t/GDB)816 3923 y(\025)g +Fq(Op)r(en)28 b(source)e(co)r(de)h(pacakge)f(and)i(patc)n(h)f(as)g +(necessary)-7 b(.)816 4054 y Fs(\025)41 b Fq(Con\034gure)26 +b(and)i(build)g(in)g(a)f(directory)f(outside)h(of)h(the)g(source)e(co)r +(de)i(tree.)816 4185 y Fs(\025)41 b Fq(Set)28 b(P)-7 +b(A)g(TH,)29 b(in)f(order:)977 4315 y Fk(*)41 b Fo(<)p +Fq(MikT)-7 b(ex)27 b(executables)p Fo(>)977 4430 y Fk(*)41 +b Fq(/usr/lo)r(cal/bin)977 4546 y Fk(*)g Fq(/usr/bin)977 +4661 y Fk(*)g Fq(/bin)977 4776 y Fk(*)g Fq(/mingw/bin)977 +4891 y Fk(*)g Fq(c:/cygwin/bin)977 5006 y Fk(*)g Fo(<)p +Fq(install)27 b(directory)p Fo(>)p Fq(/bin)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 103 119 +TeXDict begin 103 118 bop 515 203 a Fs(12.13)94 b(Building)30 +b(the)h(T)-8 b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)891 +b(103)p 515 236 2865 4 v 816 523 a(\025)41 b Fq(Con\034gure)1187 +668 y Fj(CFLAGS=-D__USE_MINGW_ACC)q(ESS)77 b(\\)1187 +747 y(LDFLAGS='-static')40 b(\\)1187 826 y(../$archivedir/configure)i +(\\)1328 905 y(--prefix=$installdir)f(\\)1328 984 y(--target=avr)e(\\) +1328 1063 y(--with-gmp=/usr/local)i(\\)1328 1142 y +(--with-mpfr=/usr/local)h(\\)1328 1220 y(--enable-doc)d(\\)1328 +1299 y(2>&1)e(|)e(tee)h(insight-configure.log)816 1544 +y Fs(\025)41 b Fq(Mak)n(e)1187 1689 y Fj(make)c(all)f(install)h(2>&1)f +(|)g(tee)g($package-make.log)639 1998 y Fk(\210)41 b +Fs(SRecord)816 2181 y(\025)g Fq(Op)r(en)28 b(source)e(co)r(de)h(pac)n +(k)-5 b(age.)816 2314 y Fs(\025)41 b Fq(Con\034gure)26 +b(and)i(build)g(at)f(the)h(top)g(of)f(the)h(source)f(co)r(de)g(tree.) +816 2447 y Fs(\025)41 b Fq(Set)28 b(P)-7 b(A)g(TH,)29 +b(in)f(order:)977 2579 y Fk(*)41 b Fo(<)p Fq(MikT)-7 +b(ex)27 b(executables)p Fo(>)977 2696 y Fk(*)41 b Fq(/usr/lo)r(cal/bin) +977 2812 y Fk(*)g Fq(/usr/bin)977 2928 y Fk(*)g Fq(/bin)977 +3044 y Fk(*)g Fq(/mingw/bin)977 3161 y Fk(*)g Fq(c:/cygwin/bin)977 +3277 y Fk(*)g Fo(<)p Fq(install)27 b(directory)p Fo(>)p +Fq(/bin)816 3410 y Fs(\025)41 b Fq(Con\034gure)1187 3555 +y Fj(./configure)d(\\)1328 3634 y(--prefix=$installdir)j(\\)1328 +3713 y(--infodir=$installdir/i)q(nfo)h(\\)1328 3792 y +(--mandir=$installdir/ma)q(n)f(\\)1328 3870 y(2>&1)c(|)e(tee)h +($package-configure.log)816 4115 y Fs(\025)41 b Fq(Mak)n(e)1187 +4261 y Fj(make)c(all)f(install)h(2>&1)f(|)g(tee)g($package-make.log)515 +4569 y Fq(Build)28 b(the)f(to)r(ols)h(b)r(elo)n(w)f(in)h(Cygwin.)639 +4799 y Fk(\210)41 b Fs(A)-11 b(V)j(aRICE)816 4982 y(\025)41 +b Fq(Op)r(en)28 b(source)e(co)r(de)h(pac)n(k)-5 b(age.)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 104 120 +TeXDict begin 104 119 bop 515 203 a Fs(12.13)94 b(Building)30 +b(the)h(T)-8 b(o)s(olc)m(hain)32 b(for)g(Windo)m(ws)891 +b(104)p 515 236 2865 4 v 816 523 a(\025)41 b Fq(Con\034gure)26 +b(and)i(build)g(in)g(a)f(directory)f(outside)h(of)h(the)g(source)e(co)r +(de)i(tree.)816 654 y Fs(\025)41 b Fq(Set)28 b(P)-7 b(A)g(TH,)29 +b(in)f(order:)977 785 y Fk(*)41 b Fo(<)p Fq(MikT)-7 b(ex)27 +b(executables)p Fo(>)977 900 y Fk(*)41 b Fq(/usr/lo)r(cal/bin)977 +1016 y Fk(*)g Fq(/usr/bin)977 1131 y Fk(*)g Fq(/bin)977 +1246 y Fk(*)g Fo(<)p Fq(install)27 b(directory)p Fo(>)p +Fq(/bin)816 1377 y Fs(\025)41 b Fq(Set)28 b(lo)r(cation)f(of)g(LibUSB)h +(headers)f(and)g(libraries)1187 1520 y Fj(export)37 b +(CPPFLAGS=-I$startdir/lib)q(usb)q(-win)q(32-d)q(evi)q(ce-b)q(in-$)q +(lib)q(usb_)q(ver)q(sion)q(/inc)q(lud)q(e)1187 1599 y(export)g +(CFLAGS=-I$startdir/libus)q(b-w)q(in32)q(-dev)q(ice)q(-bin)q(-$li)q +(bus)q(b_ve)q(rsi)q(on/i)q(nclu)q(de)1187 1678 y(export)g +(LDFLAGS="-static)j(-L$startdir/libusb-win32-)q(devi)q(ce-)q(bin-)q +($li)q(busb)q(_ver)q(sio)q(n/li)q(b/gc)q(c)h(")816 1920 +y Fs(\025)g Fq(Con\034gure)1187 2063 y Fj(../$archivedir/configure)h +(\\)1187 2142 y(--prefix=$installdir)f(\\)1187 2220 y +(--datadir=$installdir/do)q(c)g(\\)1187 2299 y +(--mandir=$installdir/man)h(\\)1187 2378 y(--infodir=$installdir/in)q +(fo)g(\\)1187 2457 y(2>&1)37 b(|)e(tee)h(avarice-configure.log)816 +2699 y Fs(\025)41 b Fq(Mak)n(e)1187 2842 y Fj(make)c(all)f(install)h +(2>&1)f(|)g(tee)g(avarice-make.log)639 3146 y Fk(\210)41 +b Fs(Sim)m(ulA)-11 b(VR)816 3326 y(\025)41 b Fq(Op)r(en)28 +b(source)e(co)r(de)h(pac)n(k)-5 b(age.)816 3457 y Fs(\025)41 +b Fq(Con\034gure)26 b(and)i(build)g(in)g(a)f(directory)f(outside)h(of)h +(the)g(source)e(co)r(de)i(tree.)816 3588 y Fs(\025)41 +b Fq(Set)28 b(P)-7 b(A)g(TH,)29 b(in)f(order:)977 3719 +y Fk(*)41 b Fo(<)p Fq(MikT)-7 b(ex)27 b(executables)p +Fo(>)977 3834 y Fk(*)41 b Fq(/usr/lo)r(cal/bin)977 3950 +y Fk(*)g Fq(/usr/bin)977 4065 y Fk(*)g Fq(/bin)977 4180 +y Fk(*)g Fo(<)p Fq(install)27 b(directory)p Fo(>)p Fq(/bin)816 +4312 y Fs(\025)41 b Fq(Con\034gure)1187 4454 y Fj(export)c +(LDFLAGS="-static")1187 4533 y(../$archivedir/configure)42 +b(\\)1328 4612 y(--prefix=$installdir)f(\\)1328 4691 +y(--datadir=$installdir)g(\\)1328 4770 y(--disable-tests)f(\\)1328 +4848 y(--disable-versioned-doc)i(\\)1328 4927 y(2>&1)37 +b(|)e(tee)h(simulavr-configure.log)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 105 121 +TeXDict begin 105 120 bop 515 203 a Fs(13.1)94 b(Options)30 +b(for)i(the)g(C)g(compiler)f(a)m(vr-gcc)996 b(105)p 515 +236 2865 4 v 816 523 a(\025)41 b Fq(Mak)n(e)1187 668 +y Fj(make)c(-k)e(all)h(install)i(2>&1)e(|)g(tee)g(simulavr-make.log) +1187 747 y(make)h(pdf)f(install-pdf)i(2>&1)e(|)g(tee)g +(simulavr-pdf-make.log)515 1148 y Fr(13)131 b(Using)43 +b(the)g(GNU)h(to)t(ols)515 1377 y Fq(This)32 b(is)g(a)f(short)h +(summary)f(of)h(the)h(A)-9 b(VR-sp)r(eci\034c)32 b(asp)r(ects)f(of)i +(using)e(the)i(GNU)g(to)r(ols.)515 1477 y(Normally)-7 +b(,)20 b(the)g(generic)f(do)r(cumen)n(tation)g(of)h(these)g(to)r(ols)f +(is)h(fairly)f(large)f(and)i(main)n(tained)515 1576 y(in)31 +b Fm(texinfo)d Fq(\034les.)47 b(Command-line)31 b(options)f(are)g +(explained)h(in)g(detail)g(in)g(the)h(man)n(ual)515 1676 +y(page.)515 1955 y Fn(13.1)112 b(Options)38 b(for)f(the)h(C)f(compiler) +h(a)m(vr-gcc)515 2156 y Fs(13.1.1)93 b(Mac)m(hine-sp)s(eci\034c)31 +b(options)g(for)h(the)g(A)-11 b(VR)515 2356 y Fq(The)31 +b(follo)n(wing)f(mac)n(hine-sp)r(eci\034c)h(options)g(are)f(recognized) +g(b)n(y)h(the)h(C)f(compiler)g(fron-)515 2456 y(tend.)37 +b(In)27 b(addition)g(to)g(the)g(prepro)r(cessor)d(macros)i(indicated)h +(in)g(the)g(tables)g(b)r(elo)n(w,)g(the)515 2556 y(prepro)r(cessor)h +(will)k(de\034ne)g(the)f(macros)f(__A)-9 b(VR)31 b(and)h(__A)-9 +b(VR__)30 b(\(to)h(the)h(v)-5 b(alue)31 b(1\))515 2655 +y(when)36 b(compiling)f(for)g(an)h(A)-9 b(VR)36 b(target.)61 +b(The)36 b(macro)e(A)-9 b(VR)37 b(will)f(b)r(e)g(de\034ned)g(as)f(w)n +(ell)515 2755 y(when)24 b(using)g(the)h(standard)f(lev)n(els)g(gn)n +(u89)f(\(default\))i(and)f(gn)n(u99)f(but)i(not)g(with)g(c89)e(and)515 +2854 y(c99.)639 3084 y Fk(\210)41 b Fm(-mmcu=)p Fl(ar)l(chite)l(ctur)l +(e)515 3314 y Fq(Compile)27 b(co)r(de)g(for)h Fl(ar)l(chite)l(ctur)l(e) +6 b Fq(.)37 b(Curren)n(tly)26 b(kno)n(wn)h(arc)n(hitectures)f(are)p +515 3433 16492 4 v 515 3433 V 515 3533 4 100 v 568 3503 +a(Arc)n(hitecture)p 1070 3533 V 102 w(Macros)p 13482 +3533 V 12149 w(Description)p 17003 3533 V 515 3536 16492 +4 v 515 3536 V 515 3636 4 100 v 568 3606 a(a)n(vr1)p +1070 3636 V 396 w(__A)-9 b(VR_AR)n(CH__=1__A)g(VR_ASM_ONL)i(Y____A)e +(VR_2_BYTE_PC__)21 b([2])p 13482 3636 V 9442 w(Simple)28 +b(CPU)h(core,)d(only)h(assem)n(bler)f(supp)r(ort)p 17003 +3636 V 515 3639 16492 4 v 515 3639 V 515 3739 4 100 v +568 3709 a(a)n(vr2)p 1070 3739 V 396 w(__A)-9 b(VR_AR)n(CH__=2__A)g +(VR_2_BYTE_PC__)23 b([2])p 13482 3739 V 10424 w("Classic")j(CPU)i +(core,)f(up)h(to)f(8)g(KB)g(of)h(R)n(OM)p 17003 3739 +V 515 3742 16492 4 v 515 3742 V 515 3842 4 100 v 568 +3812 a(a)n(vr25)d([1])p 1070 3842 V 241 w(__A)-9 b(VR_AR)n(CH__=25__A)g +(VR_HA)g(VE_MO)n(VW__)23 b([1]__A)-9 b(VR_HA)g(VE_LPMX__)27 +b([1]__A)-9 b(VR_2_BYTE_PC__)25 b([2])p 13482 3842 V +8024 w("Classic")h(CPU)i(core)f(with)h('MO)n(VW')f(and)h('LPM)g(Rx,)f +(Z[+]')h(instruction,)f(up)h(to)f(8)g(KB)h(of)f(R)n(OM)p +17003 3842 V 515 3845 16492 4 v 515 3845 V 515 3945 4 +100 v 568 3915 a(a)n(vr3)p 1070 3945 V 396 w(__A)-9 b(VR_AR)n +(CH__=3__A)g(VR_MEGA__)24 b([5]__A)-9 b(VR_HA)g(VE_JMP_CALL__)26 +b([4]__A)-9 b(VR_2_BYTE_PC__)25 b([2])p 13482 3945 V +8171 w("Classic")h(CPU)i(core,)f(16)f(KB)h(to)h(64)e(KB)h(of)h(R)n(OM)p +17003 3945 V 515 3948 16492 4 v 515 3948 V 515 4048 4 +100 v 568 4018 a(a)n(vr31)p 1070 4048 V 354 w(__A)-9 +b(VR_AR)n(CH__=31__A)g(VR_MEGA____A)g(VR_HA)g(VE_RAMPZ__[4]__A)g(VR_HA) +g(VE_ELPM__[4]__A)g(VR_2)o(_B)o(YTE_PC__)22 b([2])p 13482 +4048 V 7305 w("Classic")k(CPU)i(core,)f(128)f(KB)h(of)g(R)n(OM)p +17003 4048 V 515 4051 16492 4 v 515 4051 V 515 4151 4 +100 v 568 4121 a(a)n(vr35)e([3])p 1070 4151 V 241 w(__A)-9 +b(VR_AR)n(CH__=35__A)g(VR_MEGA__)24 b([5]__A)-9 b(VR_HA)g +(VE_JMP_CALL__)26 b([4]__A)-9 b(VR_HA)g(VE_MO)n(VW__)26 +b([1]__A)-9 b(VR_HA)g(VE_LPMX__)26 b([1]__A)-9 b(VR_2_BYTE_PC__)25 +b([2])p 13482 4151 V 5771 w("Classic")h(CPU)i(core)f(with)h('MO)n(VW')f +(and)h('LPM)g(Rx,)f(Z[+]')h(instruction,)f(16)g(KB)g(to)g(64)g(KB)g(of) +g(R)n(OM)p 17003 4151 V 515 4154 16492 4 v 515 4154 V +515 4254 4 100 v 568 4224 a(a)n(vr4)p 1070 4254 V 396 +w(__A)-9 b(VR_AR)n(CH__=4__A)g(VR_ENHANCED__)26 b([5]__A)-9 +b(VR_HA)g(VE_MO)n(VW__)26 b([1]__A)-9 b(VR_HA)g(VE_LPMX__)26 +b([1]__A)-9 b(VR_HA)g(VE_MUL__)27 b([1]__A)-9 b(VR_2_BYTE_PC__)25 +b([2])p 13482 4254 V 5862 w("Enhanced")i(CPU)h(core,)f(up)h(to)f(8)g +(KB)g(of)h(R)n(OM)p 17003 4254 V 515 4257 16492 4 v 515 +4257 V 515 4357 4 100 v 568 4327 a(a)n(vr5)p 1070 4357 +V 396 w(__A)-9 b(VR_AR)n(CH__=5__A)g(VR_MEGA__)24 b([5]__A)-9 +b(VR_ENHANCED__)28 b([5]__A)-9 b(VR_HA)g(VE_JMP_CALL__)26 +b([4]__A)-9 b(VR_HA)g(VE_MO)n(VW__)26 b([1]__A)-9 b(VR_HA)g(VE_LPMX__) +27 b([1]__A)-9 b(VR_HA)g(VE_MUL__)26 b([1]__A)-9 b(VR_2_BYTE_PC__)25 +b([2])p 13482 4357 V 3609 w("Enhanced")i(CPU)h(core,)f(16)g(KB)g(to)g +(64)g(KB)g(of)g(R)n(OM)p 17003 4357 V 515 4360 16492 +4 v 515 4360 V 515 4459 4 100 v 568 4430 a(a)n(vr51)p +1070 4459 V 354 w(__A)-9 b(VR_AR)n(CH__=51__A)g(VR_MEGA____A)g +(VR_ENHANCED____A)g(VR_HA)g(VE_MO)n(VW__)23 b([1]__A)-9 +b(VR_HA)g(VE_LPMX__)27 b([1]__A)-9 b(VR_HA)g(VE_MUL__)26 +b([1]__A)-9 b(VR_HA)g(VE_RAMPZ__[4]__A)g(VR_HA)g(VE_ELPM__[4]__A)g +(VR_HA)g(VE_ELPMX__[4]__A)g(VR_2_BYTE_PC__)23 b([2])p +13482 4459 V 1670 w("Enhanced")k(CPU)h(core,)f(128)f(KB)h(of)h(R)n(OM)p +17003 4459 V 515 4463 16492 4 v 515 4463 V 515 4562 4 +100 v 568 4533 a(a)n(vr6)e([2])p 1070 4562 V 282 w(__A)-9 +b(VR_AR)n(CH__=6__A)g(VR_MEGA__)24 b([5]__A)-9 b(VR_ENHANCED__)28 +b([5]__A)-9 b(VR_HA)g(VE_JMP_CALL__)26 b([4]__A)-9 b(VR_HA)g(VE_MO)n +(VW__)26 b([1]__A)-9 b(VR_HA)g(VE_LPMX__)27 b([1]__A)-9 +b(VR_HA)g(VE_MUL__)26 b([1]__A)-9 b(VR_HA)g(VE_RAMPZ__[4]__A)g(VR_HA)g +(VE_ELPM__[4]__A)g(VR_HA)g(VE_ELPMX__[4]__A)g(VR_3_BYTE_PC__)23 +b([2])p 13482 4562 V 102 w("Enhanced")k(CPU)h(core,)f(256)f(KB)h(of)h +(R)n(OM)p 17003 4562 V 515 4566 16492 4 v 515 4566 V +515 4782 a([1])f(New)h(in)g(GCC)f(4.2)515 4929 y([2])g(Uno\036cial)g +(patc)n(h)g(for)h(GCC)f(4.1)p 515 5179 2865 4 v 515 5255 +a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 106 122 +TeXDict begin 106 121 bop 515 203 a Fs(13.1)94 b(Options)30 +b(for)i(the)g(C)g(compiler)f(a)m(vr-gcc)996 b(106)p 515 +236 2865 4 v 515 523 a Fq([3])27 b(New)h(in)g(GCC)f(4.2.3)515 +670 y([4])g(New)h(in)g(GCC)f(4.3)515 817 y([5])g(Obsolete.)515 +964 y(By)g(default,)h(co)r(de)f(is)h(generated)e(for)h(the)h(a)n(vr2)e +(arc)n(hitecture.)515 1111 y(Note)37 b(that)h(when)f(only)g(using)h +Fm(-mmcu=)p Fl(ar)l(chite)l(ctur)l(e)j Fq(but)d(no)f +Fm(-mmcu=)p Fl(MCU)g(typ)l(e)6 b Fq(,)40 b(in-)515 1210 +y(cluding)22 b(the)h(\034le)g Fo(<)p Fm(avr/io.h)40 b(\()p +Fq(p.)14 b Fm(366\))p Fo(>)20 b Fq(cannot)i(w)n(ork)f(since)i(it)g +(cannot)f(decide)g(whic)n(h)515 1310 y(device's)27 b(de\034nitions)g +(to)h(select.)639 1540 y Fk(\210)41 b Fm(-mmcu=)p Fl(MCU)28 +b(typ)l(e)515 1770 y Fq(The)43 b(follo)n(wing)f(MCU)h(t)n(yp)r(es)g +(are)f(curren)n(tly)g(understo)r(o)r(d)h(b)n(y)f(a)n(vr-gcc.)81 +b(The)43 b(table)515 1869 y(matc)n(hes)27 b(them)i(against)e(the)i +(corresp)r(onding)d(a)n(vr-gcc)g(arc)n(hitecture)h(name,)h(and)g(sho)n +(ws)515 1969 y(the)g(prepro)r(cessor)d(sym)n(b)r(ol)i(declared)f(b)n(y) +i(the)f Fm(-mmcu)f Fq(option.)p 691 2088 2513 4 v 691 +2088 V 691 2188 4 100 v 744 2158 a(Arc)n(hitecture)p +1306 2188 V 162 w(MCU)i(name)p 1969 2188 V 243 w(Macro)p +3200 2188 V 691 2191 2513 4 v 691 2191 V 691 2290 4 100 +v 744 2261 a(a)n(vr1)p 1306 2290 V 456 w(at90s1200)p +1969 2290 V 304 w(__A)-9 b(VR_A)i(T90S1200__)p 3200 2290 +V 691 2294 2513 4 v 691 2294 V 691 2393 4 100 v 744 2364 +a(a)n(vr1)p 1306 2393 V 456 w(attin)n(y11)p 1969 2393 +V 362 w(__A)e(VR_A)i(Ttin)n(y11__)p 3200 2393 V 691 2397 +2513 4 v 691 2397 V 691 2496 4 100 v 744 2466 a(a)n(vr1)p +1306 2496 V 456 w(attin)n(y12)p 1969 2496 V 362 w(__A)e(VR_A)i(Ttin)n +(y12__)p 3200 2496 V 691 2500 2513 4 v 691 2500 V 691 +2599 4 100 v 744 2569 a(a)n(vr1)p 1306 2599 V 456 w(attin)n(y15)p +1969 2599 V 362 w(__A)e(VR_A)i(Ttin)n(y15__)p 3200 2599 +V 691 2603 2513 4 v 691 2603 V 691 2702 4 100 v 744 2672 +a(a)n(vr1)p 1306 2702 V 456 w(attin)n(y28)p 1969 2702 +V 362 w(__A)e(VR_A)i(Ttin)n(y28__)p 3200 2702 V 691 2706 +2513 4 v 691 2706 V 691 2805 4 100 v 744 2775 a(a)n(vr2)p +1306 2805 V 456 w(at90s2313)p 1969 2805 V 304 w(__A)e(VR_A)i +(T90S2313__)p 3200 2805 V 691 2809 2513 4 v 691 2809 +V 691 2908 4 100 v 744 2878 a(a)n(vr2)p 1306 2908 V 456 +w(at90s2323)p 1969 2908 V 304 w(__A)e(VR_A)i(T90S2323__)p +3200 2908 V 691 2911 2513 4 v 691 2911 V 691 3011 4 100 +v 744 2981 a(a)n(vr2)p 1306 3011 V 456 w(at90s2333)p +1969 3011 V 304 w(__A)e(VR_A)i(T90S2333__)p 3200 3011 +V 691 3014 2513 4 v 691 3014 V 691 3114 4 100 v 744 3084 +a(a)n(vr2)p 1306 3114 V 456 w(at90s2343)p 1969 3114 V +304 w(__A)e(VR_A)i(T90S2343__)p 3200 3114 V 691 3117 +2513 4 v 691 3117 V 691 3217 4 100 v 744 3187 a(a)n(vr2)p +1306 3217 V 456 w(attin)n(y22)p 1969 3217 V 362 w(__A)e(VR_A)i(Ttin)n +(y22__)p 3200 3217 V 691 3220 2513 4 v 691 3220 V 691 +3320 4 100 v 744 3290 a(a)n(vr2)p 1306 3320 V 456 w(attin)n(y26)p +1969 3320 V 362 w(__A)e(VR_A)i(Ttin)n(y26__)p 3200 3320 +V 691 3323 2513 4 v 691 3323 V 691 3423 4 100 v 744 3393 +a(a)n(vr2)p 1306 3423 V 456 w(at90s4414)p 1969 3423 V +304 w(__A)e(VR_A)i(T90S4414__)p 3200 3423 V 691 3426 +2513 4 v 691 3426 V 691 3526 4 100 v 744 3496 a(a)n(vr2)p +1306 3526 V 456 w(at90s4433)p 1969 3526 V 304 w(__A)e(VR_A)i +(T90S4433__)p 3200 3526 V 691 3529 2513 4 v 691 3529 +V 691 3629 4 100 v 744 3599 a(a)n(vr2)p 1306 3629 V 456 +w(at90s4434)p 1969 3629 V 304 w(__A)e(VR_A)i(T90S4434__)p +3200 3629 V 691 3632 2513 4 v 691 3632 V 691 3732 4 100 +v 744 3702 a(a)n(vr2)p 1306 3732 V 456 w(at90s8515)p +1969 3732 V 304 w(__A)e(VR_A)i(T90S8515__)p 3200 3732 +V 691 3735 2513 4 v 691 3735 V 691 3835 4 100 v 744 3805 +a(a)n(vr2)p 1306 3835 V 456 w(at90c8534)p 1969 3835 V +300 w(__A)e(VR_A)i(T90C8534__)p 3200 3835 V 691 3838 +2513 4 v 691 3838 V 691 3938 4 100 v 744 3908 a(a)n(vr2)p +1306 3938 V 456 w(at90s8535)p 1969 3938 V 304 w(__A)e(VR_A)i +(T90S8535__)p 3200 3938 V 691 3941 2513 4 v 691 3941 +V 691 4041 4 100 v 744 4011 a(a)n(vr2/a)n(vr25)23 b([1])p +1306 4041 V 102 w(at86rf401)p 1969 4041 V 321 w(__A)-9 +b(VR_A)i(T86RF401__)p 3200 4041 V 691 4044 2513 4 v 691 +4044 V 691 4144 4 100 v 744 4114 a(a)n(vr2/a)n(vr25)23 +b([1])p 1306 4144 V 102 w(attin)n(y13)p 1969 4144 V 362 +w(__A)-9 b(VR_A)i(Ttin)n(y13__)p 3200 4144 V 691 4147 +2513 4 v 691 4147 V 691 4246 4 100 v 744 4217 a(a)n(vr2/a)n(vr25)23 +b([1])p 1306 4246 V 102 w(attin)n(y13a)p 1969 4246 V +320 w(__A)-9 b(VR_A)i(Ttin)n(y13A__)p 3200 4246 V 691 +4250 2513 4 v 691 4250 V 691 4349 4 100 v 744 4320 a(a)n(vr2/a)n(vr25) +23 b([1])p 1306 4349 V 102 w(attin)n(y2313)p 1969 4349 +V 278 w(__A)-9 b(VR_A)i(Ttin)n(y2313__)p 3200 4349 V +691 4353 2513 4 v 691 4353 V 691 4452 4 100 v 744 4422 +a(a)n(vr2/a)n(vr25)23 b([1])p 1306 4452 V 102 w(attin)n(y24)p +1969 4452 V 362 w(__A)-9 b(VR_A)i(Ttin)n(y24__)p 3200 +4452 V 691 4456 2513 4 v 691 4456 V 691 4555 4 100 v +744 4525 a(a)n(vr2/a)n(vr25)23 b([1])p 1306 4555 V 102 +w(attin)n(y25)p 1969 4555 V 362 w(__A)-9 b(VR_A)i(Ttin)n(y25__)p +3200 4555 V 691 4559 2513 4 v 691 4559 V 691 4658 4 100 +v 744 4628 a(a)n(vr2/a)n(vr25)23 b([1])p 1306 4658 V +102 w(attin)n(y261)p 1969 4658 V 320 w(__A)-9 b(VR_A)i(Ttin)n(y261__)p +3200 4658 V 691 4662 2513 4 v 691 4662 V 691 4761 4 100 +v 744 4731 a(a)n(vr2/a)n(vr25)23 b([1])p 1306 4761 V +102 w(attin)n(y43u)p 1969 4761 V 316 w(__A)-9 b(VR_A)i(Ttin)n(y43U__)p +3200 4761 V 691 4765 2513 4 v 691 4765 V 691 4864 4 100 +v 744 4834 a(a)n(vr2/a)n(vr25)23 b([1])p 1306 4864 V +102 w(attin)n(y44)p 1969 4864 V 362 w(__A)-9 b(VR_A)i(Ttin)n(y44__)p +3200 4864 V 691 4867 2513 4 v 691 4867 V 691 4967 4 100 +v 744 4937 a(a)n(vr2/a)n(vr25)23 b([1])p 1306 4967 V +102 w(attin)n(y45)p 1969 4967 V 362 w(__A)-9 b(VR_A)i(Ttin)n(y45__)p +3200 4967 V 691 4970 2513 4 v 515 5179 2865 4 v 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 107 123 +TeXDict begin 107 122 bop 515 203 a Fs(13.1)94 b(Options)30 +b(for)i(the)g(C)g(compiler)f(a)m(vr-gcc)996 b(107)p 515 +236 2865 4 v 691 453 2513 4 v 691 453 V 691 553 4 100 +v 744 523 a Fq(Arc)n(hitecture)p 1306 553 V 162 w(MCU)28 +b(name)p 1969 553 V 243 w(Macro)p 3200 553 V 691 553 +2513 4 v 691 653 4 100 v 744 623 a(a)n(vr2/a)n(vr25)23 +b([1])p 1306 653 V 102 w(attin)n(y461)p 1969 653 V 320 +w(__A)-9 b(VR_A)i(Ttin)n(y461__)p 3200 653 V 691 656 +2513 4 v 691 656 V 691 756 4 100 v 744 726 a(a)n(vr2/a)n(vr25)23 +b([1])p 1306 756 V 102 w(attin)n(y48)p 1969 756 V 362 +w(__A)-9 b(VR_A)i(Ttin)n(y48__)p 3200 756 V 691 759 2513 +4 v 691 759 V 691 858 4 100 v 744 829 a(a)n(vr2/a)n(vr25)23 +b([1])p 1306 858 V 102 w(attin)n(y84)p 1969 858 V 362 +w(__A)-9 b(VR_A)i(Ttin)n(y84__)p 3200 858 V 691 862 2513 +4 v 691 862 V 691 961 4 100 v 744 932 a(a)n(vr2/a)n(vr25)23 +b([1])p 1306 961 V 102 w(attin)n(y85)p 1969 961 V 362 +w(__A)-9 b(VR_A)i(Ttin)n(y85__)p 3200 961 V 691 965 2513 +4 v 691 965 V 691 1064 4 100 v 744 1034 a(a)n(vr2/a)n(vr25)23 +b([1])p 1306 1064 V 102 w(attin)n(y861)p 1969 1064 V +320 w(__A)-9 b(VR_A)i(Ttin)n(y861__)p 3200 1064 V 691 +1068 2513 4 v 691 1068 V 691 1167 4 100 v 744 1137 a(a)n(vr2/a)n(vr25) +23 b([1])p 1306 1167 V 102 w(attin)n(y88)p 1969 1167 +V 362 w(__A)-9 b(VR_A)i(Ttin)n(y88__)p 3200 1167 V 691 +1171 2513 4 v 691 1171 V 691 1270 4 100 v 744 1240 a(a)n(vr3)p +1306 1270 V 456 w(atmega603)p 1969 1270 V 273 w(__A)e(VR_A)i +(Tmega603__)p 3200 1270 V 691 1274 2513 4 v 691 1274 +V 691 1373 4 100 v 744 1343 a(a)n(vr3)p 1306 1373 V 456 +w(at43usb355)p 1969 1373 V 254 w(__A)e(VR_A)i(T43USB355__)p +3200 1373 V 691 1377 2513 4 v 691 1377 V 691 1476 4 100 +v 744 1446 a(a)n(vr3/a)n(vr31)23 b([3])p 1306 1476 V +102 w(atmega103)p 1969 1476 V 273 w(__A)-9 b(VR_A)i(Tmega103__)p +3200 1476 V 691 1479 2513 4 v 691 1479 V 691 1579 4 100 +v 744 1549 a(a)n(vr3/a)n(vr31)23 b([3])p 1306 1579 V +102 w(at43usb320)p 1969 1579 V 254 w(__A)-9 b(VR_A)i(T43USB320__)p +3200 1579 V 691 1582 2513 4 v 691 1582 V 691 1682 4 100 +v 744 1652 a(a)n(vr3/a)n(vr35)23 b([2])p 1306 1682 V +102 w(at90usb82)p 1969 1682 V 296 w(__A)-9 b(VR_A)i(T90USB82__)p +3200 1682 V 691 1685 2513 4 v 691 1685 V 691 1785 4 100 +v 744 1755 a(a)n(vr3/a)n(vr35)23 b([2])p 1306 1785 V +102 w(at90usb162)p 1969 1785 V 254 w(__A)-9 b(VR_A)i(T90USB162__)p +3200 1785 V 691 1788 2513 4 v 691 1788 V 691 1888 4 100 +v 744 1858 a(a)n(vr3/a)n(vr35)23 b([2])p 1306 1888 V +102 w(attin)n(y167)p 1969 1888 V 320 w(__A)-9 b(VR_A)i(Ttin)n(y167__)p +3200 1888 V 691 1891 2513 4 v 691 1891 V 691 1991 4 100 +v 744 1961 a(a)n(vr3)p 1306 1991 V 456 w(at76c711)p 1969 +1991 V 342 w(__A)e(VR_A)i(T76C711__)p 3200 1991 V 691 +1994 2513 4 v 691 1994 V 691 2094 4 100 v 744 2064 a(a)n(vr4)p +1306 2094 V 456 w(atmega48)p 1969 2094 V 315 w(__A)e(VR_A)i(Tmega48__)p +3200 2094 V 691 2097 2513 4 v 691 2097 V 691 2197 4 100 +v 744 2167 a(a)n(vr4)p 1306 2197 V 456 w(atmega48p)p +1969 2197 V 269 w(__A)e(VR_A)i(Tmega48P__)p 3200 2197 +V 691 2200 2513 4 v 691 2200 V 691 2300 4 100 v 744 2270 +a(a)n(vr4)p 1306 2300 V 456 w(atmega8)p 1969 2300 V 357 +w(__A)e(VR_A)i(Tmega8__)p 3200 2300 V 691 2303 2513 4 +v 691 2303 V 691 2403 4 100 v 744 2373 a(a)n(vr4)p 1306 +2403 V 456 w(atmega8515)p 1969 2403 V 231 w(__A)e(VR_A)i(Tmega8515__)p +3200 2403 V 691 2406 2513 4 v 691 2406 V 691 2506 4 100 +v 744 2476 a(a)n(vr4)p 1306 2506 V 456 w(atmega8535)p +1969 2506 V 231 w(__A)e(VR_A)i(Tmega8535__)p 3200 2506 +V 691 2509 2513 4 v 691 2509 V 691 2609 4 100 v 744 2579 +a(a)n(vr4)p 1306 2609 V 456 w(atmega88)p 1969 2609 V +315 w(__A)e(VR_A)i(Tmega88__)p 3200 2609 V 691 2612 2513 +4 v 691 2612 V 691 2711 4 100 v 744 2682 a(a)n(vr4)p +1306 2711 V 456 w(atmega88p)p 1969 2711 V 269 w(__A)e(VR_A)i +(Tmega88P__)p 3200 2711 V 691 2715 2513 4 v 691 2715 +V 691 2814 4 100 v 744 2785 a(a)n(vr4)p 1306 2814 V 456 +w(atmega8h)n(v)i(a)p 1969 2814 V 232 w(__A)c(VR_A)i(Tmega8HV)e(A__)p +3200 2814 V 691 2818 2513 4 v 691 2818 V 691 2917 4 100 +v 744 2888 a(a)n(vr4)p 1306 2917 V 456 w(at90p)n(wm1)p +1969 2917 V 290 w(__A)g(VR_A)i(T90PWM1__)p 3200 2917 +V 691 2921 2513 4 v 691 2921 V 691 3020 4 100 v 744 2990 +a(a)n(vr4)p 1306 3020 V 456 w(at90p)n(wm2)p 1969 3020 +V 290 w(__A)e(VR_A)i(T90PWM2__)p 3200 3020 V 691 3024 +2513 4 v 691 3024 V 691 3123 4 100 v 744 3093 a(a)n(vr4)p +1306 3123 V 456 w(at90p)n(wm2b)p 1969 3123 V 244 w(__A)e(VR_A)i +(T90PWM2B__)p 3200 3123 V 691 3127 2513 4 v 691 3127 +V 691 3226 4 100 v 744 3196 a(a)n(vr4)p 1306 3226 V 456 +w(at90p)n(wm3)p 1969 3226 V 290 w(__A)e(VR_A)i(T90PWM3__)p +3200 3226 V 691 3230 2513 4 v 691 3230 V 691 3329 4 100 +v 744 3299 a(a)n(vr4)p 1306 3329 V 456 w(at90p)n(wm3b)p +1969 3329 V 244 w(__A)e(VR_A)i(T90PWM3B__)p 3200 3329 +V 691 3333 2513 4 v 691 3333 V 691 3432 4 100 v 744 3402 +a(a)n(vr5)p 1306 3432 V 456 w(at90p)n(wm216)p 1969 3432 +V 206 w(__A)e(VR_A)i(T90PWM216__)p 3200 3432 V 691 3435 +2513 4 v 691 3435 V 691 3535 4 100 v 744 3505 a(a)n(vr5)p +1306 3535 V 456 w(at90p)n(wm316)p 1969 3535 V 206 w(__A)e(VR_A)i +(T90PWM316__)p 3200 3535 V 691 3538 2513 4 v 691 3538 +V 691 3638 4 100 v 744 3608 a(a)n(vr5)p 1306 3638 V 456 +w(at90can32)p 1969 3638 V 296 w(__A)e(VR_A)i(T90CAN32__)p +3200 3638 V 691 3641 2513 4 v 691 3641 V 691 3741 4 100 +v 744 3711 a(a)n(vr5)p 1306 3741 V 456 w(at90can64)p +1969 3741 V 296 w(__A)e(VR_A)i(T90CAN64__)p 3200 3741 +V 691 3744 2513 4 v 691 3744 V 691 3844 4 100 v 744 3814 +a(a)n(vr5)p 1306 3844 V 456 w(at90usb646)p 1969 3844 +V 254 w(__A)e(VR_A)i(T90USB646__)p 3200 3844 V 691 3847 +2513 4 v 691 3847 V 691 3947 4 100 v 744 3917 a(a)n(vr5)p +1306 3947 V 456 w(at90usb647)p 1969 3947 V 254 w(__A)e(VR_A)i +(T90USB647__)p 3200 3947 V 691 3950 2513 4 v 691 3950 +V 691 4050 4 100 v 744 4020 a(a)n(vr5)p 1306 4050 V 456 +w(atmega16)p 1969 4050 V 315 w(__A)e(VR_A)i(Tmega16__)p +3200 4050 V 691 4053 2513 4 v 691 4053 V 691 4153 4 100 +v 744 4123 a(a)n(vr5)p 1306 4153 V 456 w(atmega161)p +1969 4153 V 273 w(__A)e(VR_A)i(Tmega161__)p 3200 4153 +V 691 4156 2513 4 v 691 4156 V 691 4256 4 100 v 744 4226 +a(a)n(vr5)p 1306 4256 V 456 w(atmega162)p 1969 4256 V +273 w(__A)e(VR_A)i(Tmega162__)p 3200 4256 V 691 4259 +2513 4 v 691 4259 V 691 4359 4 100 v 744 4329 a(a)n(vr5)p +1306 4359 V 456 w(atmega163)p 1969 4359 V 273 w(__A)e(VR_A)i +(Tmega163__)p 3200 4359 V 691 4362 2513 4 v 691 4362 +V 691 4462 4 100 v 744 4432 a(a)n(vr5)p 1306 4462 V 456 +w(atmega164p)p 1969 4462 V 227 w(__A)e(VR_A)i(Tmega164P__)p +3200 4462 V 691 4465 2513 4 v 691 4465 V 691 4565 4 100 +v 744 4535 a(a)n(vr5)p 1306 4565 V 456 w(atmega165)p +1969 4565 V 273 w(__A)e(VR_A)i(Tmega165__)p 3200 4565 +V 691 4568 2513 4 v 691 4568 V 691 4667 4 100 v 744 4638 +a(a)n(vr5)p 1306 4667 V 456 w(atmega165p)p 1969 4667 +V 227 w(__A)e(VR_A)i(Tmega165P__)p 3200 4667 V 691 4671 +2513 4 v 691 4671 V 691 4770 4 100 v 744 4741 a(a)n(vr5)p +1306 4770 V 456 w(atmega168)p 1969 4770 V 273 w(__A)e(VR_A)i +(Tmega168__)p 3200 4770 V 691 4774 2513 4 v 691 4774 +V 691 4873 4 100 v 744 4844 a(a)n(vr5)p 1306 4873 V 456 +w(atmega168p)p 1969 4873 V 227 w(__A)e(VR_A)i(Tmega168P__)p +3200 4873 V 691 4877 2513 4 v 691 4877 V 691 4976 4 100 +v 744 4946 a(a)n(vr5)p 1306 4976 V 456 w(atmega169)p +1969 4976 V 273 w(__A)e(VR_A)i(Tmega169__)p 3200 4976 +V 691 4980 2513 4 v 515 5179 2865 4 v 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 108 124 +TeXDict begin 108 123 bop 515 203 a Fs(13.1)94 b(Options)30 +b(for)i(the)g(C)g(compiler)f(a)m(vr-gcc)996 b(108)p 515 +236 2865 4 v 691 453 2513 4 v 691 453 V 691 553 4 100 +v 744 523 a Fq(Arc)n(hitecture)p 1306 553 V 162 w(MCU)28 +b(name)p 1969 553 V 243 w(Macro)p 3200 553 V 691 553 +2513 4 v 691 653 4 100 v 744 623 a(a)n(vr5)p 1306 653 +V 456 w(atmega169p)p 1969 653 V 227 w(__A)-9 b(VR_A)i(Tmega169P__)p +3200 653 V 691 656 2513 4 v 691 656 V 691 756 4 100 v +744 726 a(a)n(vr5)p 1306 756 V 456 w(atmega16h)n(v)i(a)p +1969 756 V 190 w(__A)c(VR_A)i(Tmega16HV)e(A__)p 3200 +756 V 691 759 2513 4 v 691 759 V 691 858 4 100 v 744 +829 a(a)n(vr5)p 1306 858 V 456 w(atmega32)p 1969 858 +V 315 w(__A)g(VR_A)i(Tmega32__)p 3200 858 V 691 862 2513 +4 v 691 862 V 691 961 4 100 v 744 932 a(a)n(vr5)p 1306 +961 V 456 w(atmega323)p 1969 961 V 273 w(__A)e(VR_A)i(Tmega323__)p +3200 961 V 691 965 2513 4 v 691 965 V 691 1064 4 100 +v 744 1034 a(a)n(vr5)p 1306 1064 V 456 w(atmega324p)p +1969 1064 V 227 w(__A)e(VR_A)i(Tmega324P__)p 3200 1064 +V 691 1068 2513 4 v 691 1068 V 691 1167 4 100 v 744 1137 +a(a)n(vr5)p 1306 1167 V 456 w(atmega325)p 1969 1167 V +273 w(__A)e(VR_A)i(Tmega325__)p 3200 1167 V 691 1171 +2513 4 v 691 1171 V 691 1270 4 100 v 744 1240 a(a)n(vr5)p +1306 1270 V 456 w(atmega325p)p 1969 1270 V 227 w(__A)e(VR_A)i +(Tmega325P__)p 3200 1270 V 691 1274 2513 4 v 691 1274 +V 691 1373 4 100 v 744 1343 a(a)n(vr5)p 1306 1373 V 456 +w(atmega3250)p 1969 1373 V 231 w(__A)e(VR_A)i(Tmega3250__)p +3200 1373 V 691 1377 2513 4 v 691 1377 V 691 1476 4 100 +v 744 1446 a(a)n(vr5)p 1306 1476 V 456 w(atmega3250p)p +1969 1476 V 185 w(__A)e(VR_A)i(Tmega3250P__)p 3200 1476 +V 691 1479 2513 4 v 691 1479 V 691 1579 4 100 v 744 1549 +a(a)n(vr5)p 1306 1579 V 456 w(atmega328p)p 1969 1579 +V 227 w(__A)e(VR_A)i(Tmega328P__)p 3200 1579 V 691 1582 +2513 4 v 691 1582 V 691 1682 4 100 v 744 1652 a(a)n(vr5)p +1306 1682 V 456 w(atmega329)p 1969 1682 V 273 w(__A)e(VR_A)i +(Tmega329__)p 3200 1682 V 691 1685 2513 4 v 691 1685 +V 691 1785 4 100 v 744 1755 a(a)n(vr5)p 1306 1785 V 456 +w(atmega329p)p 1969 1785 V 227 w(__A)e(VR_A)i(Tmega329P__)p +3200 1785 V 691 1788 2513 4 v 691 1788 V 691 1888 4 100 +v 744 1858 a(a)n(vr5)p 1306 1888 V 456 w(atmega3290)p +1969 1888 V 231 w(__A)e(VR_A)i(Tmega3290__)p 3200 1888 +V 691 1891 2513 4 v 691 1891 V 691 1991 4 100 v 744 1961 +a(a)n(vr5)p 1306 1991 V 456 w(atmega3290p)p 1969 1991 +V 185 w(__A)e(VR_A)i(Tmega3290P__)p 3200 1991 V 691 1994 +2513 4 v 691 1994 V 691 2094 4 100 v 744 2064 a(a)n(vr5)p +1306 2094 V 456 w(atmega32c1)p 1969 2094 V 236 w(__A)e(VR_A)i +(TMEGA32C1__)p 3200 2094 V 691 2097 2513 4 v 691 2097 +V 691 2197 4 100 v 744 2167 a(a)n(vr5)p 1306 2197 V 456 +w(atmega32h)n(vb)p 1969 2197 V 181 w(__A)e(VR_A)i(Tmega32HVB__)p +3200 2197 V 691 2200 2513 4 v 691 2200 V 691 2300 4 100 +v 744 2270 a(a)n(vr5)p 1306 2300 V 456 w(atmega32m1)p +1969 2300 V 204 w(__A)e(VR_A)i(TMEGA32M1__)p 3200 2300 +V 691 2303 2513 4 v 691 2303 V 691 2403 4 100 v 744 2373 +a(a)n(vr5)p 1306 2403 V 456 w(atmega32u4)p 1969 2403 +V 227 w(__A)e(VR_A)i(TMEGA32U4__)p 3200 2403 V 691 2406 +2513 4 v 691 2406 V 691 2506 4 100 v 744 2476 a(a)n(vr5)p +1306 2506 V 456 w(atmega32u6)p 1969 2506 V 227 w(__A)e(VR_A)i +(TMEGA32U6__)p 3200 2506 V 691 2509 2513 4 v 691 2509 +V 691 2609 4 100 v 744 2579 a(a)n(vr5)p 1306 2609 V 456 +w(atmega406)p 1969 2609 V 273 w(__A)e(VR_A)i(Tmega406__)p +3200 2609 V 691 2612 2513 4 v 691 2612 V 691 2711 4 100 +v 744 2682 a(a)n(vr5)p 1306 2711 V 456 w(atmega64)p 1969 +2711 V 315 w(__A)e(VR_A)i(Tmega64__)p 3200 2711 V 691 +2715 2513 4 v 691 2715 V 691 2814 4 100 v 744 2785 a(a)n(vr5)p +1306 2814 V 456 w(atmega640)p 1969 2814 V 273 w(__A)e(VR_A)i +(Tmega640__)p 3200 2814 V 691 2818 2513 4 v 691 2818 +V 691 2917 4 100 v 744 2888 a(a)n(vr5)p 1306 2917 V 456 +w(atmega644)p 1969 2917 V 273 w(__A)e(VR_A)i(Tmega644__)p +3200 2917 V 691 2921 2513 4 v 691 2921 V 691 3020 4 100 +v 744 2990 a(a)n(vr5)p 1306 3020 V 456 w(atmega644p)p +1969 3020 V 227 w(__A)e(VR_A)i(Tmega644P__)p 3200 3020 +V 691 3024 2513 4 v 691 3024 V 691 3123 4 100 v 744 3093 +a(a)n(vr5)p 1306 3123 V 456 w(atmega645)p 1969 3123 V +273 w(__A)e(VR_A)i(Tmega645__)p 3200 3123 V 691 3127 +2513 4 v 691 3127 V 691 3226 4 100 v 744 3196 a(a)n(vr5)p +1306 3226 V 456 w(atmega6450)p 1969 3226 V 231 w(__A)e(VR_A)i +(Tmega6450__)p 3200 3226 V 691 3230 2513 4 v 691 3230 +V 691 3329 4 100 v 744 3299 a(a)n(vr5)p 1306 3329 V 456 +w(atmega649)p 1969 3329 V 273 w(__A)e(VR_A)i(Tmega649__)p +3200 3329 V 691 3333 2513 4 v 691 3333 V 691 3432 4 100 +v 744 3402 a(a)n(vr5)p 1306 3432 V 456 w(atmega6490)p +1969 3432 V 231 w(__A)e(VR_A)i(Tmega6490__)p 3200 3432 +V 691 3435 2513 4 v 691 3435 V 691 3535 4 100 v 744 3505 +a(a)n(vr5)p 1306 3535 V 456 w(at94k)p 1969 3535 V 461 +w(__A)e(VR_A)i(T94K__)p 3200 3535 V 691 3538 2513 4 v +691 3538 V 691 3638 4 100 v 744 3608 a(a)n(vr5/a)n(vr51)23 +b([3])p 1306 3638 V 102 w(atmega128)p 1969 3638 V 273 +w(__A)-9 b(VR_A)i(Tmega128__)p 3200 3638 V 691 3641 2513 +4 v 691 3641 V 691 3741 4 100 v 744 3711 a(a)n(vr5/a)n(vr51)23 +b([3])p 1306 3741 V 102 w(atmega1280)p 1969 3741 V 231 +w(__A)-9 b(VR_A)i(Tmega1280__)p 3200 3741 V 691 3744 +2513 4 v 691 3744 V 691 3844 4 100 v 744 3814 a(a)n(vr5/a)n(vr51)23 +b([3])p 1306 3844 V 102 w(atmega1281)p 1969 3844 V 231 +w(__A)-9 b(VR_A)i(Tmega1281__)p 3200 3844 V 691 3847 +2513 4 v 691 3847 V 691 3947 4 100 v 744 3917 a(a)n(vr5/a)n(vr51)23 +b([3])p 1306 3947 V 102 w(atmega1284p)p 1969 3947 V 185 +w(__A)-9 b(VR_A)i(Tmega1284P__)p 3200 3947 V 691 3950 +2513 4 v 691 3950 V 691 4050 4 100 v 744 4020 a(a)n(vr5/a)n(vr51)23 +b([3])p 1306 4050 V 102 w(at90can128)p 1969 4050 V 254 +w(__A)-9 b(VR_A)i(T90CAN128__)p 3200 4050 V 691 4053 +2513 4 v 691 4053 V 691 4153 4 100 v 744 4123 a(a)n(vr5/a)n(vr51)23 +b([3])p 1306 4153 V 102 w(at90usb1286)p 1969 4153 V 212 +w(__A)-9 b(VR_A)i(T90USB1286__)p 3200 4153 V 691 4156 +2513 4 v 691 4156 V 691 4256 4 100 v 744 4226 a(a)n(vr5/a)n(vr51)23 +b([3])p 1306 4256 V 102 w(at90usb1287)p 1969 4256 V 212 +w(__A)-9 b(VR_A)i(T90USB1287__)p 3200 4256 V 691 4259 +2513 4 v 691 4259 V 691 4359 4 100 v 744 4329 a(a)n(vr6)p +1306 4359 V 456 w(atmega2560)p 1969 4359 V 231 w(__A)e(VR_A)i +(Tmega2560__)p 3200 4359 V 691 4362 2513 4 v 691 4362 +V 691 4462 4 100 v 744 4432 a(a)n(vr6)p 1306 4462 V 456 +w(atmega2561)p 1969 4462 V 231 w(__A)e(VR_A)i(Tmega2561__)p +3200 4462 V 691 4465 2513 4 v 691 4465 V 691 4565 4 100 +v 744 4535 a(a)n(vrxmega4)p 1306 4565 V 222 w(atxmega64a3)p +1969 4565 V 187 w(__A)e(VR_A)i(T)g(xmega64A3__)p 3200 +4565 V 691 4568 2513 4 v 691 4568 V 691 4667 4 100 v +744 4638 a(a)n(vrxmega5)p 1306 4667 V 222 w(atxmega64a1)p +1969 4667 V 187 w(__A)e(VR_A)i(T)g(xmega64A1__)p 3200 +4667 V 691 4671 2513 4 v 691 4671 V 691 4770 4 100 v +744 4741 a(a)n(vrxmega6)p 1306 4770 V 222 w(atxmega128a3)p +1969 4770 V 145 w(__A)e(VR_A)i(T)g(xmega128A3__)p 3200 +4770 V 691 4774 2513 4 v 691 4774 V 691 4873 4 100 v +744 4844 a(a)n(vrxmega6)p 1306 4873 V 222 w(atxmega256a3)p +1969 4873 V 145 w(__A)e(VR_A)i(T)g(xmega256A3__)p 3200 +4873 V 691 4877 2513 4 v 691 4877 V 691 4976 4 100 v +744 4946 a(a)n(vrxmega6)p 1306 4976 V 222 w(atxmega256a3b)p +1969 4976 V 99 w(__A)e(VR_A)i(T)g(xmega256A3B__)p 3200 +4976 V 691 4980 2513 4 v 515 5179 2865 4 v 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 109 125 +TeXDict begin 109 124 bop 515 203 a Fs(13.1)94 b(Options)30 +b(for)i(the)g(C)g(compiler)f(a)m(vr-gcc)996 b(109)p 515 +236 2865 4 v 691 453 2513 4 v 691 453 V 691 553 4 100 +v 744 523 a Fq(Arc)n(hitecture)p 1306 553 V 162 w(MCU)28 +b(name)p 1969 553 V 243 w(Macro)p 3200 553 V 691 553 +2513 4 v 691 653 4 100 v 744 623 a(a)n(vrxmega7)p 1306 +653 V 222 w(atxmega128a1)p 1969 653 V 145 w(__A)-9 b(VR_A)i(T)g +(xmega128A1__)p 3200 653 V 691 656 2513 4 v 691 656 V +515 863 a([1])27 b('a)n(vr25')e(arc)n(hitecture)i(is)g(new)h(in)f(GCC)h +(4.2)515 1009 y([2])f('a)n(vr35')e(arc)n(hitecture)i(is)g(new)h(in)f +(GCC)h(4.2.3)639 1227 y Fk(\210)41 b Fm(-morder1)639 +1388 y Fk(\210)g Fm(-morder2)515 1606 y Fq(Change)26 +b(the)i(order)f(of)g(register)f(assignmen)n(t.)36 b(The)28 +b(default)f(is)515 1753 y(r24,)j(r25,)g(r18,)h(r19,)f(r20,)h(r21,)f +(r22,)g(r23,)h(r30,)f(r31,)g(r26,)h(r27,)f(r28,)g(r29,)h(r17,)f(r16,)g +(r15,)515 1852 y(r14,)c(r13,)g(r12,)g(r11,)h(r10,)f(r9,)h(r8,)f(r7,)h +(r6,)g(r5,)g(r4,)f(r3,)h(r2,)g(r0,)g(r1)515 1999 y(Order)f(1)h(uses)515 +2146 y(r18,)j(r19,)g(r20,)h(r21,)f(r22,)h(r23,)f(r24,)g(r25,)h(r30,)f +(r31,)g(r26,)h(r27,)f(r28,)g(r29,)h(r17,)f(r16,)g(r15,)515 +2246 y(r14,)c(r13,)g(r12,)g(r11,)h(r10,)f(r9,)h(r8,)f(r7,)h(r6,)g(r5,)g +(r4,)f(r3,)h(r2,)g(r0,)g(r1)515 2392 y(Order)f(2)h(uses)515 +2539 y(r25,)j(r24,)g(r23,)h(r22,)f(r21,)h(r20,)f(r19,)g(r18,)h(r30,)f +(r31,)g(r26,)h(r27,)f(r28,)g(r29,)h(r17,)f(r16,)g(r15,)515 +2639 y(r14,)c(r13,)g(r12,)g(r11,)h(r10,)f(r9,)h(r8,)f(r7,)h(r6,)g(r5,)g +(r4,)f(r3,)h(r2,)g(r1,)g(r0)639 2857 y Fk(\210)41 b Fm(-mint8)515 +3074 y Fq(Assume)33 b Fm(int)e Fq(to)i(b)r(e)g(an)g(8-bit)f(in)n +(teger.)52 b(Note)32 b(that)i(this)f(is)f(not)h(really)f(supp)r(orted)g +(b)n(y)515 3174 y Fm(avr-libc)p Fq(,)40 b(so)g(it)h(should)f(normally)f +(not)i(b)r(e)f(used.)76 b(The)40 b(default)h(is)f(to)h(use)f(16-bit)515 +3273 y(in)n(tegers.)639 3491 y Fk(\210)h Fm(-mno-interrupts)515 +3709 y Fq(Generates)e(co)r(de)h(that)h(c)n(hanges)e(the)h(stac)n(k)f(p) +r(oin)n(ter)h(without)h(disabling)f(in)n(terrupts.)515 +3808 y(Normally)-7 b(,)25 b(the)i(state)f(of)h(the)g(status)f(register) +f Fm(SREG)g Fq(is)h(sa)n(v)n(ed)f(in)h(a)g(temp)r(orary)g(register,)515 +3908 y(in)n(terrupts)h(are)f(disabled)i(while)f(c)n(hanging)f(the)i +(stac)n(k)f(p)r(oin)n(ter,)g(and)g Fm(SREG)f Fq(is)i(restored.)515 +4055 y(Sp)r(ecifying)k(this)h(option)f(will)g(de\034ne)g(the)h(prepro)r +(cessor)c(macro)i Fm(__NO_INTERRUPTS_)o(_)515 4154 y +Fq(to)c(the)h(v)-5 b(alue)28 b(1.)639 4372 y Fk(\210)41 +b Fm(-mcall-prologues)515 4589 y Fq(Use)24 b(subroutines)g(for)g +(function)i(prologue/epilogue.)32 b(F)-7 b(or)24 b(complex)g(functions) +h(that)g(use)515 4689 y(man)n(y)34 b(registers)f(\(that)j(needs)e(to)h +(b)r(e)g(sa)n(v)n(ed/restored)d(on)i(function)i(en)n(try/exit\),)g +(this)515 4789 y(sa)n(v)n(es)25 b(some)i(space)g(at)h(the)g(cost)f(of)g +(a)g(sligh)n(tly)g(increased)g(execution)g(time.)639 +5006 y Fk(\210)41 b Fm(-mtiny-stack)p 515 5179 2865 4 +v 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 110 126 +TeXDict begin 110 125 bop 515 203 a Fs(13.1)94 b(Options)30 +b(for)i(the)g(C)g(compiler)f(a)m(vr-gcc)996 b(110)p 515 +236 2865 4 v 515 523 a Fq(Change)26 b(only)i(the)g(lo)n(w)e(8)i(bits)f +(of)h(the)g(stac)n(k)e(p)r(oin)n(ter.)639 750 y Fk(\210)41 +b Fm(-mno-tablejump)515 977 y Fq(Do)23 b(not)h(generate)e(tablejump)j +(instructions.)35 b(By)23 b(default,)i(jump)g(tables)e(can)g(b)r(e)i +(used)e(to)515 1077 y(optimize)d Fm(switch)f Fq(statemen)n(ts.)34 +b(When)21 b(turned)g(o\033,)h(sequences)e(of)g(compare)f(statemen)n(ts) +515 1176 y(are)29 b(used)h(instead.)44 b(Jump)30 b(tables)g(are)f +(usually)g(faster)h(to)g(execute)g(on)f(a)n(v)n(erage,)f(but)j(in)515 +1276 y(particular)38 b(for)i Fm(switch)d Fq(statemen)n(ts)j(where)f +(most)h(of)g(the)h(jumps)f(w)n(ould)g(go)f(to)h(the)515 +1376 y(default)28 b(lab)r(el,)f(they)h(migh)n(t)g(w)n(aste)e(a)h(bit)i +(of)e(\035ash)g(memory)-7 b(.)639 1603 y Fk(\210)41 b +Fm(-mshort-calls)515 1830 y Fq(Use)29 b Fm(rjmp/rcall)c +Fq(\(limited)31 b(range\))d(on)h Fo(>)p Fq(8K)f(devices.)42 +b(On)30 b Fm(avr2)d Fq(and)j Fm(avr4)e Fq(arc)n(hitec-)515 +1930 y(tures)i(\(less)g(than)h(8)f(KB)f(or)h(\035ash)g(memory\),)h +(this)f(is)h(alw)n(a)n(ys)d(the)j(case.)44 b(On)30 b +Fm(avr3)f Fq(and)515 2029 y Fm(avr5)d Fq(arc)n(hitectures,)g(calls)h +(and)h(jumps)h(to)e(targets)g(outside)g(the)i(curren)n(t)e(function)h +(will)515 2129 y(b)n(y)k(default)h(use)g Fm(jmp/call)c +Fq(instructions)k(that)g(can)f(co)n(v)n(er)f(the)i(en)n(tire)f(address) +f(range,)515 2228 y(but)d(that)g(require)e(more)h(\035ash)g(R)n(OM)g +(and)h(execution)f(time.)639 2455 y Fk(\210)41 b Fm(-mrtl)515 +2683 y Fq(Dump)30 b(the)f(in)n(ternal)g(compilation)f(result)h(called)f +("R)-7 b(TL")29 b(in)n(to)f(commen)n(ts)h(in)g(the)h(gen-)515 +2782 y(erated)d(assem)n(bler)f(co)r(de.)36 b(Used)28 +b(for)f(debugging)f(a)n(vr-gcc.)639 3009 y Fk(\210)41 +b Fm(-msize)515 3236 y Fq(Dump)32 b(the)g(address,)f(size,)h(and)f +(relativ)n(e)f(cost)h(of)g(eac)n(h)g(statemen)n(t)g(in)n(to)g(commen)n +(ts)g(in)515 3336 y(the)d(generated)e(assem)n(bler)g(co)r(de.)37 +b(Used)27 b(for)g(debugging)g(a)n(vr-gcc.)639 3563 y +Fk(\210)41 b Fm(-mdeb)515 3790 y Fq(Generate)27 b(lots)g(of)g +(debugging)g(information)g(to)g Fm(stderr)p Fq(.)515 +4053 y Fs(13.1.2)93 b(Selected)31 b(general)h(compiler)e(options)515 +4253 y Fq(The)d(follo)n(wing)g(general)f(gcc)h(options)g(migh)n(t)g(b)r +(e)h(of)g(some)f(in)n(terest)g(to)g(A)-9 b(VR)28 b(users.)639 +4480 y Fk(\210)41 b Fm(-O)p Fl(n)515 4707 y Fq(Optimization)27 +b(lev)n(el)h Fl(n)6 b Fq(.)37 b(Increasing)27 b Fl(n)34 +b Fq(is)27 b(mean)n(t)h(to)g(optimize)g(more,)f(an)g(optimization)515 +4807 y(lev)n(el)j(of)h(0)g(means)f(no)h(optimization)f(at)h(all,)h +(whic)n(h)f(is)g(the)g(default)g(if)h(no)e Fm(-O)h Fq(option)f(is)515 +4907 y(presen)n(t.)37 b(The)28 b(sp)r(ecial)g(option)g +Fm(-Os)e Fq(is)i(mean)n(t)g(to)g(turn)g(on)g(all)g Fm(-O2)e +Fq(optimizations)i(that)515 5006 y(are)e(not)i(exp)r(ected)g(to)f +(increase)f(co)r(de)i(size.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 111 127 +TeXDict begin 111 126 bop 515 203 a Fs(13.1)94 b(Options)30 +b(for)i(the)g(C)g(compiler)f(a)m(vr-gcc)996 b(111)p 515 +236 2865 4 v 515 523 a Fq(Note)20 b(that)g(at)g Fm(-O3)p +Fq(,)h(gcc)e(attempts)i(to)f(inline)h(all)e("simple")h(functions.)34 +b(F)-7 b(or)20 b(the)g(A)-9 b(VR)21 b(tar-)515 623 y(get,)j(this)g +(will)g(normally)e(constitute)i(a)f(large)g(p)r(essimization)g(due)h +(to)f(the)h(co)r(de)g(increase-)515 722 y(men)n(t.)35 +b(The)22 b(only)f(other)h(optimization)f(turned)h(on)g(with)g +Fm(-O3)f Fq(is)h Fm(-frename-regist)o(er)o(s)p Fq(,)515 +822 y(whic)n(h)27 b(could)h(rather)e(b)r(e)i(enabled)f(man)n(ually)g +(instead.)515 969 y(A)h(simple)f Fm(-O)g Fq(option)g(is)h(equiv)-5 +b(alen)n(t)27 b(to)h Fm(-O1)p Fq(.)515 1116 y(Note)23 +b(also)g(that)h(turning)f(o\033)g(all)h(optimizations)f(will)g(prev)n +(en)n(t)g(some)g(w)n(arnings)f(from)h(b)r(e-)515 1215 +y(ing)g(issued)g(since)g(the)g(generation)f(of)h(those)g(w)n(arnings)e +(dep)r(ends)j(on)e(co)r(de)h(analysis)f(steps)515 1315 +y(that)k(are)e(only)h(p)r(erformed)g(when)h(optimizing)f(\(unreac)n +(hable)g(co)r(de,)h(un)n(used)f(v)-5 b(ariables\).)515 +1462 y(See)33 b(also)g(the)h Fs(appropriate)39 b(F)-11 +b(A)m(Q)40 b(en)m(try)35 b Fq(\(p.)14 b(68\))34 b(for)f(issues)g +(regarding)e(debugging)515 1561 y(optimized)c(co)r(de.)639 +1791 y Fk(\210)41 b Fm(-Wa,)p Fl(assembler-options)639 +1957 y Fk(\210)g Fm(-Wl,)p Fl(linker-options)515 2187 +y Fq(P)n(ass)27 b(the)h(listed)f(options)g(to)h(the)g(assem)n(bler,)e +(or)g(link)n(er,)h(resp)r(ectiv)n(ely)-7 b(.)639 2417 +y Fk(\210)41 b Fm(-g)515 2647 y Fq(Generate)27 b(debugging)f +(information)h(that)h(can)f(b)r(e)h(used)f(b)n(y)h(a)n(vr-gdb.)639 +2877 y Fk(\210)41 b Fm(-ffreestanding)515 3107 y Fq(Assume)35 +b(a)h("freestanding")d(en)n(vironmen)n(t)i(as)g(p)r(er)g(the)h(C)g +(standard.)60 b(This)36 b(turns)f(o\033)515 3206 y(automatic)21 +b(builtin)i(functions)g(\(though)f(they)g(can)g(still)g(b)r(e)h(reac)n +(hed)e(b)n(y)g(prep)r(ending)h Fm(__-)515 3306 y(builtin_)17 +b Fq(to)k(the)g(actual)f(function)i(name\).)34 b(It)21 +b(also)f(mak)n(es)g(the)h(compiler)f(not)h(complain)515 +3406 y(when)41 b Fm(main\(\))e Fq(is)j(declared)e(with)i(a)f +Fm(void)f Fq(return)h(t)n(yp)r(e)g(whic)n(h)h(mak)n(es)e(some)h(sense) +515 3505 y(in)e(a)g(micro)r(con)n(troller)e(en)n(vironmen)n(t)h(where)h +(the)h(application)e(cannot)h(meaningfully)515 3605 y(pro)n(vide)34 +b(a)h(return)f(v)-5 b(alue)35 b(to)h(its)f(en)n(vironmen)n(t)f(\(in)i +(most)f(cases,)h Fm(main\(\))d Fq(w)n(on't)i(ev)n(en)515 +3705 y(return)23 b(an)n(yw)n(a)n(y\).)34 b(Ho)n(w)n(ev)n(er,)22 +b(this)i(also)f(turns)g(o\033)h(all)f(optimizations)g(normally)g(done)g +(b)n(y)515 3804 y(the)30 b(compiler)f(whic)n(h)h(assume)f(that)h +(functions)g(kno)n(wn)f(b)n(y)g(a)g(certain)g(name)h(b)r(eha)n(v)n(e)f +(as)515 3904 y(describ)r(ed)h(b)n(y)h(the)g(standard.)46 +b(E.)32 b(g.,)g(applying)e(the)h(function)h Fs(strlen\(\))f +Fq(\(p.)14 b(208\))30 b(to)g(a)515 4003 y(literal)f(string)g(will)g +(normally)g(cause)f(the)i(compiler)f(to)h(immediately)f(replace)g(that) +g(call)515 4103 y(b)n(y)j(the)h(actual)f(length)h(of)f(the)h(string,)g +(while)g(with)g Fm(-ffreestanding)p Fq(,)28 b(it)33 b(will)g(alw)n(a)n +(ys)515 4203 y(call)27 b Fs(strlen\(\))g Fq(\(p.)14 b(208\))27 +b(at)g(run-time.)639 4433 y Fk(\210)41 b Fm(-funsigned-char)515 +4662 y Fq(Mak)n(e)32 b(an)n(y)h(unqual\034ed)g Fm(char)f +Fq(t)n(yp)r(e)i(an)f(unsigned)h(c)n(har.)53 b(Without)34 +b(this)g(option,)h(they)515 4762 y(default)28 b(to)f(a)g(signed)g(c)n +(har.)639 4992 y Fk(\210)41 b Fm(-funsigned-bitfie)o(ld)o(s)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 112 128 +TeXDict begin 112 127 bop 515 203 a Fs(13.2)94 b(Options)30 +b(for)i(the)g(assem)m(bler)f(a)m(vr-as)1099 b(112)p 515 +236 2865 4 v 515 523 a Fq(Mak)n(e)26 b(an)n(y)h(unquali\034ed)h +(bit\034eld)g(t)n(yp)r(e)g(unsigned.)36 b(By)28 b(default,)g(they)f +(are)g(signed.)639 753 y Fk(\210)41 b Fm(-fshort-enums)515 +983 y Fq(Allo)r(cate)27 b(to)g(an)g Fm(enum)f Fq(t)n(yp)r(e)i(only)e +(as)h(man)n(y)g(b)n(ytes)g(as)g(it)g(needs)h(for)e(the)i(declared)e +(range)515 1082 y(of)f(p)r(ossible)g(v)-5 b(alues.)36 +b(Sp)r(eci\034cally)-7 b(,)26 b(the)f(en)n(um)h(t)n(yp)r(e)f(will)h(b)r +(e)g(equiv)-5 b(alen)n(t)25 b(to)g(the)h(smallest)515 +1182 y(in)n(teger)g(t)n(yp)r(e)i(whic)n(h)g(has)f(enough)f(ro)r(om.)639 +1412 y Fk(\210)41 b Fm(-fpack-struct)515 1642 y Fq(P)n(ac)n(k)26 +b(all)i(structure)f(mem)n(b)r(ers)g(together)g(without)g(holes.)515 +1921 y Fn(13.2)112 b(Options)38 b(for)f(the)h(assem)m(bler)g(a)m(vr-as) +515 2122 y Fs(13.2.1)93 b(Mac)m(hine-sp)s(eci\034c)31 +b(assem)m(bler)g(options)639 2322 y Fk(\210)41 b Fm(-mmcu=)p +Fl(ar)l(chite)l(ctur)l(e)639 2488 y Fk(\210)g Fm(-mmcu=)p +Fl(MCU)28 b(name)515 2718 y Fq(a)n(vr-as)i(understands)h(the)i(same)f +Fm(-mmcu=)e Fq(options)h(as)h Fs(a)m(vr-gcc)i Fq(\(p.)14 +b(105\).)51 b(By)32 b(default,)515 2818 y(a)n(vr2)24 +b(is)h(assumed,)h(but)h(this)f(can)f(b)r(e)i(altered)e(b)n(y)g(using)h +(the)g(appropriate)e(.arc)n(h)h(pseudo-)515 2918 y(instruction)i +(inside)h(the)g(assem)n(bler)e(source)g(\034le.)639 3148 +y Fk(\210)41 b Fm(-mall-opcodes)515 3377 y Fq(T)-7 b(urns)34 +b(o\033)h(op)r(co)r(de)f(c)n(hec)n(king)g(for)g(the)h(actual)g(MCU)g(t) +n(yp)r(e,)i(and)d(allo)n(ws)f(an)n(y)h(p)r(ossible)515 +3477 y(A)-9 b(VR)28 b(op)r(co)r(de)f(to)h(b)r(e)f(assem)n(bled.)639 +3707 y Fk(\210)41 b Fm(-mno-skip-bug)515 3937 y Fq(Don't)55 +b(emit)g(a)f(w)n(arning)f(when)h(trying)g(to)g(skip)h(a)f(2-w)n(ord)e +(instruction)j(with)f(a)515 4036 y Fm(CPSE/SBIC/SBIS/)o(SBR)o(C/)o(SB)o +(RS)30 b Fq(instruction.)63 b(Early)36 b(A)-9 b(VR)37 +b(devices)f(su\033ered)g(from)g(a)515 4136 y(hardw)n(are)25 +b(bug)j(where)f(these)g(instructions)g(could)h(not)f(b)r(e)h(prop)r +(erly)f(skipp)r(ed.)639 4366 y Fk(\210)41 b Fm(-mno-wrap)515 +4596 y Fq(F)-7 b(or)24 b Fm(RJMP/RCALL)d Fq(instructions,)k(don't)g +(allo)n(w)e(the)j(target)d(address)h(to)h(wrap)f(around)g(for)515 +4695 y(devices)j(that)h(ha)n(v)n(e)e(more)h(than)g(8)h(KB)f(of)g +(memory)-7 b(.)639 4925 y Fk(\210)41 b Fm(\025gstabs)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 113 129 +TeXDict begin 113 128 bop 515 203 a Fs(13.2)94 b(Options)30 +b(for)i(the)g(assem)m(bler)f(a)m(vr-as)1099 b(113)p 515 +236 2865 4 v 515 523 a Fq(Generate)38 b(.stabs)h(debugging)f(sym)n(b)r +(ols)g(for)g(assem)n(bler)g(source)g(lines.)71 b(This)39 +b(enables)515 623 y(a)n(vr-gdb)27 b(to)j(trace)f(through)f(assem)n +(bler)g(source)h(\034les.)43 b(This)29 b(option)g Fl(must)i(not)37 +b Fq(b)r(e)30 b(used)515 722 y(when)22 b(assem)n(bling)f(sources)g +(that)i(ha)n(v)n(e)e(b)r(een)i(generated)e(b)n(y)h(the)h(C)f(compiler;) +i(these)e(\034les)515 822 y(already)e(con)n(tain)h(the)h(appropriate)e +(line)i(n)n(um)n(b)r(er)f(information)g(from)h(the)g(C)g(source)e +(\034les.)639 1030 y Fk(\210)41 b Fm(-a[cdhlmns=)p Fl(\034le)6 +b Fm(])515 1239 y Fq(T)-7 b(urn)27 b(on)g(the)h(assem)n(bler)e +(listing.)37 b(The)28 b(sub-options)e(are:)639 1447 y +Fk(\210)41 b Fm(c)28 b Fq(omit)f(false)g(conditionals)639 +1605 y Fk(\210)41 b Fm(d)28 b Fq(omit)f(debugging)g(directiv)n(es)639 +1762 y Fk(\210)41 b Fm(h)28 b Fq(include)f(high-lev)n(el)g(source)639 +1920 y Fk(\210)41 b Fm(l)28 b Fq(include)f(assem)n(bly)639 +2077 y Fk(\210)41 b Fm(m)28 b Fq(include)f(macro)g(expansions)639 +2235 y Fk(\210)41 b Fm(n)28 b Fq(omit)f(forms)g(pro)r(cessing)639 +2392 y Fk(\210)41 b Fm(s)28 b Fq(include)f(sym)n(b)r(ols)639 +2549 y Fk(\210)41 b Fm(=)p Fl(\034le)34 b Fq(set)27 b(the)h(name)g(of)f +(the)h(listing)g(\034le)515 2758 y(The)23 b(v)-5 b(arious)22 +b(sub-options)g(can)h(b)r(e)g(com)n(bined)g(in)n(to)g(a)g(single)g +Fm(-a)f Fq(option)h(list;)i Fl(=\034le)k Fq(m)n(ust)515 +2858 y(b)r(e)f(the)g(last)f(one)g(in)h(that)g(case.)515 +3117 y Fs(13.2.2)93 b(Examples)36 b(for)h(assem)m(bler)f(options)f +(passed)h(through)h(the)g(C)f(com-)854 3216 y(piler)515 +3417 y Fq(Remem)n(b)r(er)27 b(that)i(assem)n(bler)d(options)h(can)g(b)r +(e)i(passed)e(from)g(the)h(C)g(compiler)f(fron)n(tend)515 +3517 y(using)c Fm(-Wa)f Fq(\(see)h Fs(ab)s(o)m(v)m(e)h +Fq(\(p.)14 b(111\)\),)24 b(so)f(in)g(order)f(to)i(include)f(the)h(C)f +(source)f(co)r(de)i(in)n(to)f(the)515 3616 y(assem)n(bler)h(listing)i +(in)g(\034le)h Fm(foo.lst)p Fq(,)c(when)j(compiling)g +Fm(foo.c)p Fq(,)e(the)j(follo)n(wing)e(compiler)515 3716 +y(command-line)i(can)g(b)r(e)h(used:)515 3904 y Fj($)35 +b(avr-gcc)i(-c)f(-O)g(foo.c)h(-o)f(foo.o)g(-Wa,-ahls=foo.lst)515 +4112 y Fq(In)e(order)g(to)g(pass)g(an)g(assem)n(bler)f(\034le)i +(through)e(the)i(C)g(prepro)r(cessor)d(\034rst,)k(and)e(ha)n(v)n(e)515 +4212 y(the)28 b(assem)n(bler)f(generate)g(line)i(n)n(um)n(b)r(er)f +(debugging)f(information)h(for)f(it,)i(the)g(follo)n(wing)515 +4311 y(command)e(can)g(b)r(e)h(used:)515 4499 y Fj($)35 +b(avr-gcc)i(-c)f(-x)g(assembler-with-cpp)k(-o)c(foo.o)h(foo.S)g +(-Wa,--gstabs)515 4707 y Fq(Note)31 b(that)h(on)f(Unix)h(systems)f +(that)h(ha)n(v)n(e)e(case-distinguishing)g(\034le)h(systems,)h(sp)r +(ecify-)515 4807 y(ing)f(a)g(\034le)h(name)f(with)h(the)g(su\036x)f(.S) +h(\(upp)r(er-case)e(letter)i(S\))g(will)f(mak)n(e)g(the)h(compiler)515 +4907 y(automatically)e(assume)h Fm(-x)43 b(assembler-with-)o(cp)o(p)p +Fq(,)27 b(while)k(using)g(.s)h(w)n(ould)f(pass)g(the)515 +5006 y(\034le)c(directly)h(to)f(the)h(assem)n(bler)e(\(no)i(prepro)r +(cessing)d(done\).)p 515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 114 130 +TeXDict begin 114 129 bop 515 203 a Fs(13.3)94 b(Con)m(trolling)30 +b(the)i(link)m(er)g(a)m(vr-ld)1274 b(114)p 515 236 2865 +4 v 515 523 a Fn(13.3)112 b(Con)m(trolling)37 b(the)h(link)m(er)g(a)m +(vr-ld)515 724 y Fs(13.3.1)93 b(Selected)31 b(link)m(er)h(options)515 +924 y Fq(While)22 b(there)g(are)f(no)g(mac)n(hine-sp)r(eci\034c)h +(options)f(for)g(a)n(vr-ld,)h(a)f(n)n(um)n(b)r(er)h(of)g(the)g +(standard)515 1024 y(options)27 b(migh)n(t)g(b)r(e)h(of)g(in)n(terest)f +(to)g(A)-9 b(VR)28 b(users.)639 1249 y Fk(\210)41 b Fm(-l)p +Fl(name)515 1475 y Fq(Lo)r(cate)33 b(the)h(arc)n(hiv)n(e)e(library)g +(named)i Fm(lib)p Fl(name)6 b Fm(.a)p Fq(,)33 b(and)h(use)g(it)g(to)f +(resolv)n(e)f(curren)n(tly)515 1575 y(unresolv)n(ed)c(sym)n(b)r(ols)g +(from)h(it.)42 b(The)29 b(library)f(is)i(searc)n(hed)d(along)h(a)h +(path)g(that)h(consists)515 1674 y(of)39 b(builtin)g(pathname)g(en)n +(tries)f(that)h(ha)n(v)n(e)f(b)r(een)h(sp)r(eci\034ed)g(at)g(compile)g +(time)g(\(e.)71 b(g.)515 1774 y Fm(/usr/local/avr/)o(lib)15 +b Fq(on)22 b(Unix)h(systems\),)g(p)r(ossibly)f(extended)g(b)n(y)g +(pathname)g(en)n(tries)515 1873 y(as)27 b(sp)r(eci\034ed)h(b)n(y)g +Fm(-L)f Fq(options)g(\(that)h(m)n(ust)g(precede)f(the)i +Fm(-l)e Fq(options)g(on)h(the)g(command-)515 1973 y(line\).)639 +2199 y Fk(\210)41 b Fm(-L)p Fl(p)l(ath)515 2424 y Fq(A)n(dditional)27 +b(lo)r(cation)g(to)g(lo)r(ok)g(for)g(arc)n(hiv)n(e)f(libraries)g +(requested)h(b)n(y)g Fm(-l)g Fq(options.)639 2650 y Fk(\210)41 +b Fm(\025defsym)g Fl(symb)l(ol=expr)515 2876 y Fq(De\034ne)28 +b(a)f(global)f(sym)n(b)r(ol)h Fl(symb)l(ol)37 b Fq(using)28 +b Fl(expr)36 b Fq(as)27 b(the)h(v)-5 b(alue.)639 3101 +y Fk(\210)41 b Fm(-M)515 3327 y Fq(Prin)n(t)28 b(a)f(link)n(er)f(map)i +(to)f Fm(stdout)p Fq(.)639 3553 y Fk(\210)41 b Fm(-Map)h +Fl(map\034le)515 3778 y Fq(Prin)n(t)28 b(a)f(link)n(er)f(map)i(to)f +Fl(map\034le)6 b Fq(.)639 4004 y Fk(\210)41 b Fm(\025cref)515 +4230 y Fq(Output)28 b(a)f(cross)g(reference)f(table)i(to)g(the)g(map)f +(\034le)h(\(in)g(case)f Fm(-Map)f Fq(is)i(also)f(presen)n(t\),)g(or)515 +4329 y(to)g Fm(stdout)p Fq(.)639 4555 y Fk(\210)41 b +Fm(\025section-start)d Fl(se)l(ctionname=or)l(g)515 4781 +y Fq(Start)27 b(section)g Fl(se)l(ctionname)34 b Fq(at)28 +b(absolute)f(address)f Fl(or)l(g)7 b Fq(.)639 5006 y +Fk(\210)41 b Fm(-Tbss)h Fl(or)l(g)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 115 131 +TeXDict begin 115 130 bop 515 203 a Fs(13.3)94 b(Con)m(trolling)30 +b(the)i(link)m(er)g(a)m(vr-ld)1274 b(115)p 515 236 2865 +4 v 639 523 a Fk(\210)41 b Fm(-Tdata)g Fl(or)l(g)639 +689 y Fk(\210)g Fm(-Ttext)g Fl(or)l(g)515 919 y Fq(Start)27 +b(the)h Fm(bss)p Fq(,)e Fm(data)p Fq(,)h(or)f Fm(text)g +Fq(section)h(at)h Fl(or)l(g)7 b Fq(,)28 b(resp)r(ectiv)n(ely)-7 +b(.)639 1149 y Fk(\210)41 b Fm(-T)i Fl(script\034le)515 +1379 y Fq(Use)i Fl(script\034le)52 b Fq(as)44 b(the)i(link)n(er)e +(script,)50 b(replacing)43 b(the)j(default)f(link)n(er)g(script.)89 +b(De-)515 1478 y(fault)48 b(link)n(er)f(scripts)g(are)f(stored)h(in)h +(a)f(system-sp)r(eci\034c)g(lo)r(cation)g(\(e.)98 b(g.)e(under)515 +1578 y Fm(/usr/local/avr/)o(lib)o(/l)o(ds)o(cri)o(pt)o(s)32 +b Fq(on)38 b(Unix)g(systems\),)j(and)d(consist)f(of)h(the)h(A)-9 +b(VR)515 1678 y(arc)n(hitecture)30 b(name)i(\(a)n(vr2)e(through)i(a)n +(vr5\))e(with)i(the)h(su\036x)e(.x)h(app)r(ended.)51 +b(They)31 b(de-)515 1777 y(scrib)r(e)c(ho)n(w)g(the)h(v)-5 +b(arious)26 b Fs(memory)31 b(sections)c Fq(\(p.)14 b(20\))27 +b(will)h(b)r(e)g(link)n(ed)f(together.)515 2040 y Fs(13.3.2)93 +b(P)m(assing)32 b(link)m(er)f(options)g(from)g(the)h(C)g(compiler)515 +2241 y Fq(By)25 b(default,)h(all)g(unkno)n(wn)f(non-option)f(argumen)n +(ts)g(on)i(the)g(a)n(vr-gcc)d(command-line)i(\(i.)515 +2340 y(e.,)32 b(all)f(\034lename)g(argumen)n(ts)e(that)j(don't)f(ha)n +(v)n(e)f(a)h(su\036x)g(that)g(is)g(handled)g(b)n(y)g(a)n(vr-gcc\))515 +2440 y(are)24 b(passed)g(straigh)n(t)g(to)i(the)f(link)n(er.)36 +b(Th)n(us,)25 b(all)g(\034les)g(ending)g(in)h(.o)f(\(ob)5 +b(ject)25 b(\034les\))g(and)g(.a)515 2540 y(\(ob)5 b(ject)27 +b(libraries\))g(are)f(pro)n(vided)h(to)g(the)h(link)n(er.)515 +2687 y(System)38 b(libraries)e(are)h(usually)h(not)g(passed)f(b)n(y)h +(their)g(explicit)g(\034lename)g(but)g(rather)515 2786 +y(using)24 b(the)h Fm(-l)f Fq(option)h(whic)n(h)g(uses)f(an)g +(abbreviated)g(form)h(of)f(the)i(arc)n(hiv)n(e)d(\034lename)h(\(see)515 +2886 y(ab)r(o)n(v)n(e\).)62 b(a)n(vr-lib)r(c)35 b(ships)h(t)n(w)n(o)g +(system)g(libraries,)h Fm(libc.a)p Fq(,)f(and)g Fm(libm.a)p +Fq(.)61 b(While)37 b(the)515 2985 y(standard)24 b(library)g +Fm(libc.a)f Fq(will)j(alw)n(a)n(ys)e(b)r(e)i(searc)n(hed)e(for)h +(unresolv)n(ed)f(references)g(when)515 3085 y(the)i(link)n(er)g(is)g +(started)f(using)h(the)g(C)g(compiler)g(fron)n(tend)f(\(i.)37 +b(e.,)27 b(there's)e(alw)n(a)n(ys)g(at)h(least)515 3185 +y(one)f(implied)h Fm(-lc)f Fq(option\),)h(the)g(mathematics)g(library)e +Fm(libm.a)g Fq(needs)h(to)h(b)r(e)g(explicitly)515 3284 +y(requested)h(using)g Fm(-lm)p Fq(.)35 b(See)28 b(also)f(the)g +Fs(en)m(try)33 b(in)f(the)f(F)-11 b(A)m(Q)29 b Fq(\(p.)14 +b(62\))27 b(explaining)g(this.)515 3431 y(Con)n(v)n(en)n(tionally)-7 +b(,)27 b(Mak)n(e\034les)g(use)h(the)h Fm(make)e Fq(macro)g +Fm(LDLIBS)f Fq(to)j(k)n(eep)f(trac)n(k)f(of)h Fm(-l)g +Fq(\(and)515 3531 y(p)r(ossibly)22 b Fm(-L)p Fq(\))h(options)f(that)i +(should)f(only)f(b)r(e)i(app)r(ended)f(to)g(the)g(C)h(compiler)e +(command-)515 3630 y(line)33 b(when)g(linking)g(the)g(\034nal)g(binary) +-7 b(.)53 b(In)33 b(con)n(trast,)g(the)g(macro)f Fm(LDFLAGS)e +Fq(is)j(used)g(to)515 3730 y(store)e(other)g(command-line)h(options)f +(to)h(the)h(C)f(compiler)g(that)g(should)g(b)r(e)g(passed)g(as)515 +3830 y(options)25 b(during)g(the)h(linking)f(stage.)35 +b(The)26 b(di\033erence)f(is)h(that)g(options)e(are)h(placed)g(early) +515 3929 y(on)34 b(the)i(command-line,)g(while)f(libraries)e(are)h(put) +i(at)f(the)g(end)g(since)g(they)g(are)f(to)h(b)r(e)515 +4029 y(used)27 b(to)h(resolv)n(e)d(global)i(sym)n(b)r(ols)g(that)g(are) +g(still)h(unresolv)n(ed)e(at)h(this)h(p)r(oin)n(t.)515 +4176 y(Sp)r(eci\034c)e(link)n(er)g(\035ags)f(can)g(b)r(e)i(passed)e +(from)h(the)g(C)g(compiler)g(command-line)f(using)h(the)515 +4275 y Fm(-Wl)g Fq(compiler)h(option,)h(see)f Fs(ab)s(o)m(v)m(e)i +Fq(\(p.)14 b(111\).)36 b(This)28 b(option)f(requires)g(that)h(there)f +(b)r(e)h(no)515 4375 y(spaces)34 b(in)h(the)g(app)r(ended)g(link)n(er)g +(option,)h(while)f(some)g(of)g(the)g(link)n(er)f(options)g(ab)r(o)n(v)n +(e)515 4475 y(\(lik)n(e)24 b Fm(-Map)e Fq(or)i Fm(\025defsym)p +Fq(\))d(w)n(ould)j(require)f(a)h(space.)35 b(In)24 b(these)g +(situations,)h(the)f(space)f(can)515 4574 y(b)r(e)28 +b(replaced)f(b)n(y)g(an)h(equal)f(sign)g(as)g(w)n(ell.)37 +b(F)-7 b(or)28 b(example,)f(the)h(follo)n(wing)f(command-line)515 +4674 y(can)h(b)r(e)g(used)g(to)h(compile)f Fm(foo.c)e +Fq(in)n(to)i(an)g(executable,)g(and)g(also)f(pro)r(duce)h(a)g(link)g +(map)515 4774 y(that)g(con)n(tains)e(a)h(cross-reference)e(list)j(in)g +(the)g(\034le)f Fm(foo.map:)515 4983 y Fj($)35 b(avr-gcc)i(-O)f(-o)g +(foo.out)h(-Wl,-Map=foo.map)j(-Wl,--cref)e(foo.c)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 116 132 +TeXDict begin 116 131 bop 515 203 a Fs(14)31 b(Using)g(the)h(a)m +(vrdude)h(program)1437 b(116)p 515 236 2865 4 v 515 523 +a Fq(Alternativ)n(ely)-7 b(,)43 b(a)c(comma)h(as)g(a)g(placeholder)f +(will)h(b)r(e)h(replaced)e(b)n(y)h(a)g(space)f(b)r(efore)515 +623 y(passing)f(the)i(option)f(to)h(the)g(link)n(er.)72 +b(So)39 b(for)g(a)g(device)h(with)g(external)e(SRAM,)j(the)515 +722 y(follo)n(wing)35 b(command-line)h(w)n(ould)h(cause)f(the)h(link)n +(er)f(to)g(place)h(the)g(data)f(segmen)n(t)g(at)515 822 +y(address)26 b(0x2000)f(in)j(the)g(SRAM:)515 1021 y Fj($)35 +b(avr-gcc)i(-mmcu=atmega128)j(-o)c(foo.out)h(-Wl,-Tdata,0x802000)515 +1241 y Fq(See)29 b(the)g(explanation)f(of)i(the)f Fs(data)35 +b(section)28 b Fq(\(p.)14 b(21\))29 b(for)f(wh)n(y)h(0x800000)d(needs)j +(to)g(b)r(e)515 1341 y(added)21 b(to)h(the)g(actual)f(v)-5 +b(alue.)35 b(Note)22 b(that)g(the)g(stac)n(k)e(will)i(still)g(remain)f +(in)h(in)n(ternal)g(RAM,)515 1440 y(through)d(the)h(sym)n(b)r(ol)f +Fm(__stack)d Fq(that)k(is)g(pro)n(vided)e(b)n(y)h(the)h(run-time)g +(startup)f(co)r(de.)34 b(This)515 1540 y(is)26 b(probably)f(a)h(go)r(o) +r(d)f(idea)h(an)n(yw)n(a)n(y)e(\(since)i(in)n(ternal)g(RAM)g(access)f +(is)h(faster\),)h(and)f(ev)n(en)515 1640 y(required)j(for)g(some)h +(early)f(devices)g(that)i(had)e(hardw)n(are)f(bugs)i(prev)n(en)n(ting)f +(them)h(from)515 1739 y(using)c(a)g(stac)n(k)g(in)h(external)f(RAM.)h +(Note)f(also)g(that)h(the)g(heap)f(for)g Fm(malloc\(\))40 +b(\()p Fq(p.)15 b Fm(195\))515 1839 y Fq(will)24 b(still)g(b)r(e)g +(placed)g(after)f(all)h(the)g(v)-5 b(ariables)22 b(in)i(the)g(data)g +(section,)g(so)f(in)h(this)g(situation,)515 1938 y(no)j(stac)n(k/heap)f +(collision)g(can)i(o)r(ccur.)515 2085 y(In)37 b(order)f(to)h(relo)r +(cate)f(the)h(stac)n(k)g(from)f(its)i(default)f(lo)r(cation)g(at)g(the) +g(top)g(of)h(in)n(terns)515 2185 y(RAM,)24 b(the)g(v)-5 +b(alue)24 b(of)f(the)h(sym)n(b)r(ol)g Fm(__stack)c Fq(can)k(b)r(e)g(c)n +(hanged)e(on)i(the)g(link)n(er)f(command-)515 2285 y(line.)55 +b(As)33 b(the)h(link)n(er)f(is)g(t)n(ypically)g(called)g(from)g(the)h +(compiler)f(fron)n(tend,)i(this)f(can)f(b)r(e)515 2384 +y(ac)n(hiev)n(ed)26 b(using)h(a)g(compiler)g(option)g(lik)n(e)515 +2583 y Fj(-Wl,--defsym=__stack=0x80)q(03ff)515 2803 y +Fq(The)j(ab)r(o)n(v)n(e)e(will)j(mak)n(e)e(the)h(co)r(de)g(use)g(stac)n +(k)f(space)g(from)g(RAM)i(address)e(0x3\033)g(do)n(wn-)515 +2903 y(w)n(ards.)k(The)21 b(amoun)n(t)f(of)g(stac)n(k)g(space)g(a)n(v) +-5 b(ailable)19 b(then)i(dep)r(ends)g(on)g(the)g(b)r(ottom)f(address) +515 3003 y(of)29 b(in)n(ternal)f(RAM)i(for)e(a)h(particular)f(device.) +41 b(It)29 b(is)g(the)g(resp)r(onsibilit)n(y)g(of)g(the)g(applica-)515 +3102 y(tion)f(to)h(ensure)f(the)g(stac)n(k)g(do)r(es)g(not)h(gro)n(w)d +(out)j(of)f(b)r(ounds,)h(as)f(w)n(ell)g(as)g(to)g(arrange)f(for)515 +3202 y(the)d(stac)n(k)f(to)h(not)g(collide)g(with)g(v)-5 +b(ariable)23 b(allo)r(cations)f(made)i(b)n(y)g(the)g(compiler)g +(\(sections)515 3301 y(.data)j(and)g(.bss\).)515 3622 +y Fr(14)131 b(Using)43 b(the)g(a)l(vrdude)i(program)506 +3840 y Fs(Note:)676 3989 y Fq(This)28 b(section)f(w)n(as)f(con)n +(tributed)i(b)n(y)f(Brian)f(Dean)i([)g Fm(bsd@bsdhome.com)21 +b Fq(].)676 4089 y(The)49 b(a)n(vrdude)e(program)f(w)n(as)h(previously) +g(called)h(a)n(vrprog.)97 b(The)48 b(name)g(w)n(as)676 +4189 y(c)n(hanged)38 b(to)h(a)n(v)n(oid)f(confusion)h(with)g(the)h(a)n +(vrprog)c(program)h(that)j(A)n(tmel)f(ships)676 4288 +y(with)28 b(A)-9 b(vrStudio.)515 4508 y Fm(avrdude)29 +b Fq(is)i(a)h(program)e(that)i(is)f(used)h(to)g(up)r(date)g(or)f(read)g +(the)h(\035ash)f(and)h(EEPR)n(OM)515 4608 y(memories)i(of)h(A)n(tmel)h +(A)-9 b(VR)36 b(micro)r(con)n(trollers)c(on)j(F)-7 b(reeBSD)35 +b(Unix.)60 b(It)36 b(supp)r(orts)f(the)515 4707 y(A)n(tmel)25 +b(serial)e(programming)f(proto)r(col)h(using)h(the)h(PC's)f(parallel)f +(p)r(ort)h(and)h(can)f(upload)515 4807 y(either)32 b(a)g(ra)n(w)f +(binary)h(\034le)h(or)e(an)h(In)n(tel)h(Hex)f(format)g(\034le.)52 +b(It)33 b(can)f(also)f(b)r(e)i(used)g(in)f(an)515 4907 +y(in)n(teractiv)n(e)c(mo)r(de)h(to)h(individually)f(up)r(date)h(EEPR)n +(OM)g(cells,)g(fuse)g(bits,)g(and/or)e(lo)r(c)n(k)515 +5006 y(bits)35 b(\(if)i(their)e(access)f(is)i(supp)r(orted)f(b)n(y)g +(the)h(A)n(tmel)g(serial)e(programming)f(proto)r(col.\))p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 117 133 +TeXDict begin 117 132 bop 515 203 a Fs(14)31 b(Using)g(the)h(a)m +(vrdude)h(program)1437 b(117)p 515 236 2865 4 v 515 523 +a Fq(The)38 b(main)g(\035ash)f(instruction)h(memory)f(of)h(the)g(A)-9 +b(VR)38 b(can)g(also)f(b)r(e)h(programmed)e(in)515 623 +y(in)n(teractiv)n(e)23 b(mo)r(de,)j(ho)n(w)n(ev)n(er)d(this)i(is)f(not) +h(v)n(ery)f(useful)h(b)r(ecause)g(one)f(can)g(only)h(turn)g(bits)515 +722 y(o\033.)59 b(The)34 b(only)h(w)n(a)n(y)f(to)g(turn)h(\035ash)g +(bits)g(on)f(is)h(to)g(erase)f(the)h(en)n(tire)f(memory)g(\(using)515 +822 y Fm(avrdude)p Fq('s)24 b Fm(-e)j Fq(option\).)515 +969 y Fm(avrdude)37 b Fq(is)i(part)g(of)h(the)g(F)-7 +b(reeBSD)40 b(p)r(orts)f(system.)73 b(T)-7 b(o)39 b(install)g(it,)44 +b(simply)39 b(do)h(the)515 1068 y(follo)n(wing:)515 1258 +y Fj(#)35 b(cd)h(/usr/ports/devel/avrdude)515 1337 y(#)f(make)i +(install)515 1548 y Fq(Once)28 b(installed,)g Fm(avrdude)d +Fq(can)j(program)e(pro)r(cessors)g(using)i(the)h(con)n(ten)n(ts)e(of)h +(the)h(.hex)515 1648 y(\034le)c(sp)r(eci\034ed)g(on)f(the)h(command)g +(line.)36 b(In)25 b(this)g(example,)g(the)g(\034le)g +Fm(main.hex)c Fq(is)k(burned)515 1747 y(in)n(to)i(the)h(\035ash)f +(memory:)515 1937 y Fj(#)35 b(avrdude)i(-p)f(2313)h(-e)f(-m)f(flash)i +(-i)f(main.hex)515 2095 y(avrdude:)h(AVR)f(device)h(initialized)i(and)d +(ready)g(to)g(accept)h(instructions)515 2253 y(avrdude:)g(Device)g +(signature)h(=)d(0x1e9101)515 2411 y(avrdude:)i(erasing)g(chip)515 +2489 y(avrdude:)g(done.)515 2568 y(avrdude:)g(reading)g(input)g(file)f +("main.hex")515 2647 y(avrdude:)h(input)g(file)f(main.hex)i(auto)e +(detected)i(as)d(Intel)i(Hex)515 2805 y(avrdude:)g(writing)g(flash:)515 +2884 y(1749)f(0x00)515 2963 y(avrdude:)h(1750)g(bytes)f(of)g(flash)h +(written)515 3041 y(avrdude:)g(verifying)h(flash)f(memory)g(against)g +(main.hex:)515 3120 y(avrdude:)g(reading)g(on-chip)h(flash)e(data:)515 +3199 y(1749)71 b(0x00)515 3278 y(avrdude:)37 b(verifying)h(...)515 +3357 y(avrdude:)f(1750)g(bytes)f(of)g(flash)h(verified)515 +3515 y(avrdude)g(done.)72 b(Thank)37 b(you.)515 3725 +y Fq(The)23 b Fm(-p)43 b(2313)21 b Fq(option)i(lets)g +Fm(avrdude)e Fq(kno)n(w)h(that)i(w)n(e)e(are)h(op)r(erating)f(on)h(an)g +(A)-7 b(T90S2313)515 3825 y(c)n(hip.)45 b(This)30 b(option)g(sp)r +(eci\034es)h(the)f(device)g(id)h(and)f(is)h(matc)n(hed)f(up)g(with)h +(the)g(device)f(of)515 3925 y(the)g(same)f(id)h(in)g +Fm(avrdude)p Fq('s)d(con\034guration)h(\034le)i(\()g +Fm(/usr/local/etc/a)o(vrd)o(ud)o(e)p Fq(.co)o(nf)25 b(\).)515 +4024 y(T)-7 b(o)30 b(list)h(v)-5 b(alid)31 b(parts,)g(sp)r(ecify)h(the) +f Fm(-v)f Fq(option.)47 b(The)31 b Fm(-e)f Fq(option)g(instructs)h +Fm(avrdude)d Fq(to)515 4124 y(p)r(erform)21 b(a)g(c)n(hip-erase)f(b)r +(efore)h(programming;)h(this)f(is)h(almost)f(alw)n(a)n(ys)f(necessary)f +(b)r(efore)515 4224 y(programming)k(the)j(\035ash.)36 +b(The)26 b Fm(-m)42 b(flash)24 b Fq(option)h(indicates)h(that)g(w)n(e)f +(w)n(an)n(t)g(to)h(upload)515 4323 y(data)g(in)n(to)h(the)g(\035ash)g +(memory)-7 b(,)26 b(while)h Fm(-i)43 b(main.hex)23 b +Fq(sp)r(eci\034es)k(the)g(name)g(of)g(the)g(input)515 +4423 y(\034le.)515 4570 y(The)38 b(EEPR)n(OM)h(is)e(uploaded)h(in)g +(the)g(same)g(w)n(a)n(y)-7 b(,)39 b(the)g(only)e(di\033erence)h(is)g +(that)g(y)n(ou)515 4669 y(w)n(ould)27 b(use)g Fm(-m)43 +b(eeprom)25 b Fq(instead)i(of)h Fm(-m)43 b(flash)p Fq(.)515 +4816 y(T)-7 b(o)27 b(use)g(in)n(teractiv)n(e)g(mo)r(de,)g(use)h(the)g +Fm(-t)f Fq(option:)515 5006 y Fj(#)35 b(avrdude)i(-p)f(2313)h(-t)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 118 134 +TeXDict begin 118 133 bop 515 203 a Fs(15)31 b(Release)f(Num)m(b)s +(ering)h(and)h(Metho)s(dology)1012 b(118)p 515 236 2865 +4 v 515 523 a Fj(avrdude:)37 b(AVR)f(device)h(initialized)i(and)d +(ready)g(to)g(accept)h(instructions)515 602 y(avrdude:)g(Device)g +(signature)h(=)d(0x1e9101)515 681 y(avrdude>)515 839 +y(The)h('?')g(command)h(displays)h(a)d(list)i(of)e(valid)515 +917 y(commands:)515 1075 y(avrdude>)i(?)515 1154 y(>>>)f(?)515 +1233 y(Valid)g(commands:)585 1391 y(dump)107 b(:)36 b(dump)g(memory)72 +b(:)36 b(dump)g()i()f()585 1469 +y(read)107 b(:)36 b(alias)g(for)h(dump)585 1548 y(write)72 +b(:)36 b(write)g(memory)h(:)f(write)h()g()g()g() +f(...)g()585 1627 y(erase)72 b(:)36 b(perform)h(a)f(chip)g(erase) +585 1706 y(sig)142 b(:)36 b(display)h(device)g(signature)h(bytes)585 +1785 y(part)107 b(:)36 b(display)h(the)f(current)h(part)g(information) +585 1864 y(send)107 b(:)36 b(send)g(a)g(raw)g(command)h(:)f(send)g +()g()h()f()585 1943 y(help)107 b(:)36 +b(help)585 2022 y(?)212 b(:)36 b(help)585 2100 y(quit)107 +b(:)36 b(quit)515 2258 y(Use)g(the)g('part')h(command)g(to)f(display)h +(valid)g(memory)g(types)f(for)g(use)h(with)f(the)515 +2337 y('dump')h(and)f('write')h(commands.)515 2495 y(avrdude>)515 +2817 y Fr(15)131 b(Release)42 b(Num)l(b)t(ering)g(and)i(Metho)t(dology) +515 3062 y Fn(15.1)112 b(Release)38 b(V)-9 b(ersion)37 +b(Num)m(b)s(ering)h(Sc)m(heme)515 3263 y Fs(15.1.1)93 +b(Stable)32 b(V)-8 b(ersions)515 3463 y Fq(A)26 b(stable)f(release)g +(will)h(alw)n(a)n(ys)e(ha)n(v)n(e)g(a)i(minor)f(n)n(um)n(b)r(er)h(that) +g(is)f(an)h(ev)n(en)f(n)n(um)n(b)r(er.)36 b(This)515 +3563 y(implies)k(that)g(y)n(ou)f(should)g(b)r(e)i(able)e(to)h(upgrade)e +(to)i(a)f(new)h(v)n(ersion)e(of)i(the)g(library)515 3662 +y(with)d(the)g(same)f(ma)5 b(jor)35 b(and)h(minor)g(n)n(um)n(b)r(ers)h +(without)f(fear)g(that)h(an)n(y)f(of)h(the)g(APIs)515 +3762 y(ha)n(v)n(e)32 b(c)n(hanged.)53 b(The)33 b(only)g(c)n(hanges)f +(that)i(should)f(b)r(e)g(made)h(to)f(a)g(stable)g(branc)n(h)f(are)515 +3862 y(bug)f(\034xes)f(and)h(under)g(some)g(circumstances,)g +(additional)f(functionalit)n(y)h(\(e.g.)48 b(adding)515 +3961 y(supp)r(ort)27 b(for)g(a)g(new)h(device\).)515 +4108 y(If)35 b(ma)5 b(jor)34 b(v)n(ersion)f(n)n(um)n(b)r(er)i(has)g(c)n +(hanged,)h(this)f(implies)g(that)g(the)h(required)e(v)n(ersions)515 +4208 y(of)h(gcc)g(and)h(bin)n(utils)g(ha)n(v)n(e)e(c)n(hanged.)60 +b(Consult)36 b(the)g(README)h(\034le)f(in)g(the)g(toplev)n(el)515 +4307 y(directory)26 b(of)h(the)h(A)-9 b(VR)28 b(Lib)r(c)g(source)f(for) +g(whic)n(h)g(v)n(ersions)f(are)g(required.)515 4570 y +Fs(15.1.2)93 b(Dev)m(elopmen)m(t)31 b(V)-8 b(ersions)515 +4771 y Fq(The)34 b(ma)5 b(jor)32 b(v)n(ersion)h(n)n(um)n(b)r(er)g(of)h +(a)f(dev)n(elopmen)n(t)h(series)e(is)i(alw)n(a)n(ys)e(the)i(same)g(as)f +(the)515 4871 y(last)27 b(stable)g(release.)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 119 135 +TeXDict begin 119 134 bop 515 203 a Fs(15.2)94 b(Releasing)30 +b(A)-11 b(VR)32 b(Lib)s(c)1608 b(119)p 515 236 2865 4 +v 515 523 a Fq(The)23 b(minor)f(v)n(ersion)f(n)n(um)n(b)r(er)h(of)h(a)f +(dev)n(elopmen)n(t)g(series)g(is)h(alw)n(a)n(ys)d(an)j(o)r(dd)g(n)n(um) +n(b)r(er)f(and)515 623 y(is)27 b(1)g(more)g(than)h(the)g(last)f(stable) +g(release.)515 770 y(The)21 b(patc)n(h)g(v)n(ersion)f(n)n(um)n(b)r(er)h +(of)g(a)g(dev)n(elopmen)n(t)f(series)h(is)g(alw)n(a)n(ys)e(0)i(un)n +(til)h(a)f(new)g(branc)n(h)515 869 y(is)29 b(cut)i(at)e(whic)n(h)h(p)r +(oin)n(t)g(the)g(patc)n(h)g(n)n(um)n(b)r(er)f(is)h(c)n(hanged)f(to)h +(90)e(to)i(denote)g(the)g(branc)n(h)515 969 y(is)c(approac)n(hing)e(a)h +(release)g(and)h(the)h(date)f(app)r(ended)g(to)g(the)h(v)n(ersion)d(to) +i(denote)g(that)h(it)515 1068 y(is)g(still)h(in)g(dev)n(elopmen)n(t.) +515 1215 y(All)e(v)n(ersions)d(in)j(dev)n(elopmen)n(t)f(in)g(cvs)g +(will)h(also)e(alw)n(a)n(ys)g(ha)n(v)n(e)g(the)i(date)f(app)r(ended)h +(as)e(a)515 1315 y(fourth)j(v)n(ersion)f(n)n(um)n(b)r(er.)37 +b(The)27 b(format)g(of)h(the)g(date)f(will)h(b)r(e)g(YYYYMMDD.)515 +1462 y(So,)f(the)h(dev)n(elopmen)n(t)f(v)n(ersion)f(n)n(um)n(b)r(er)h +(will)h(lo)r(ok)f(lik)n(e)g(this:)515 1671 y Fj(1.1.0.20030825)515 +1901 y Fq(While)h(a)f(pre-release)e(v)n(ersion)h(n)n(um)n(b)r(er)h(on)g +(a)g(branc)n(h)f(\(destined)i(to)f(b)r(ecome)h(either)f(1.2)515 +2000 y(or)f(2.0\))h(will)h(lo)r(ok)f(lik)n(e)g(this:)515 +2210 y Fj(1.1.90.20030828)515 2489 y Fn(15.2)112 b(Releasing)38 +b(A)-12 b(VR)36 b(Lib)s(c)515 2690 y Fq(The)23 b(information)g(in)g +(this)h(section)f(is)g(only)g(relev)-5 b(an)n(t)23 b(to)g(A)-9 +b(VR)24 b(Lib)r(c)f(dev)n(elop)r(ers)f(and)h(can)515 +2789 y(b)r(e)28 b(ignored)e(b)n(y)h(end)h(users.)506 +3001 y Fs(Note:)676 3151 y Fq(In)33 b(what)f(follo)n(ws,)h(I)f(assume)g +(y)n(ou)g(kno)n(w)f(ho)n(w)h(to)h(use)f(cvs)g(and)g(ho)n(w)g(to)g(c)n +(hec)n(k)n(out)676 3250 y(m)n(ultiple)22 b(source)e(trees)h(in)h(a)f +(single)g(directory)f(without)i(ha)n(ving)f(them)h(clobb)r(er)f(eac)n +(h)676 3350 y(other.)35 b(If)25 b(y)n(ou)e(don't)h(kno)n(w)g(ho)n(w)f +(to)h(do)g(this,)h(y)n(ou)e(probably)g(shouldn't)h(b)r(e)h(making)676 +3450 y(releases)h(or)h(cutting)h(branc)n(hes.)515 3713 +y Fs(15.2.1)93 b(Creating)32 b(a)g(cvs)g(branc)m(h)515 +3913 y Fq(The)27 b(follo)n(wing)g(steps)g(should)h(b)r(e)g(tak)n(en)e +(to)i(cut)g(a)f(branc)n(h)g(in)g(cvs:)616 4143 y(1.)41 +b(Chec)n(k)27 b(out)h(a)f(fresh)g(source)g(tree)g(from)g(cvs)g(HEAD.) +616 4309 y(2.)41 b(Up)r(date)33 b(the)g(NEWS)h(\034le)f(with)g(p)r +(ending)g(release)e(n)n(um)n(b)r(er)i(and)f(commit)h(to)g(cvs)722 +4409 y(HEAD:)722 4541 y(Change)19 b("Changes)g(since)h(a)n(vr-lib)r(c-) +p Fo(<)p Fq(last_release)p Fo(>)p Fq(:")14 b(to)20 b("Changes)e(in)j(a) +n(vr-lib)r(c-)722 4641 y Fo(<)p Fq(this_relelase)p Fo(>)p +Fq(:".)616 4807 y(3.)41 b(Set)28 b(the)g(branc)n(h-p)r(oin)n(t)f(tag)f +(\(setting)i Fo(<)p Fq(ma)5 b(jor)p Fo(>)26 b Fq(and)h +Fo(<)p Fq(minor)p Fo(>)f Fq(accordingly\):)722 4940 y('cvs)h(tag)g(a)n +(vr-lib)r(c-)p Fo(<)p Fq(ma)5 b(jor)p Fo(>)p Fq(_)p Fo(<)p +Fq(minor)p Fo(>)p Fq(-bra)o(nc)n(hp)r(oin)n(t')p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 120 136 +TeXDict begin 120 135 bop 515 203 a Fs(15.2)94 b(Releasing)30 +b(A)-11 b(VR)32 b(Lib)s(c)1608 b(120)p 515 236 2865 4 +v 616 523 a Fq(4.)41 b(Create)27 b(the)h(branc)n(h:)722 +656 y('cvs)f(tag)g(-b)h(a)n(vr-lib)r(c-)p Fo(<)p Fq(ma)5 +b(jor)p Fo(>)p Fq(_)p Fo(<)p Fq(minor)p Fo(>)p Fq(-br)o(anc)m(h')616 +822 y(5.)41 b(Up)r(date)23 b(the)f(pac)n(k)-5 b(age)20 +b(v)n(ersion)g(in)i(con\034gure.ac)e(and)h(commit)h(con\034gure.ac)e +(to)i(cvs)722 922 y(HEAD:)722 1054 y(Change)27 b(minor)g(n)n(um)n(b)r +(er)g(to)h(next)f(o)r(dd)h(v)-5 b(alue.)616 1220 y(6.)41 +b(Up)r(date)28 b(the)g(NEWS)h(\034le)f(and)f(commit)h(to)f(cvs)h(HEAD:) +722 1353 y(A)n(dd)g("Changes)e(since)h(a)n(vr-lib)r(c-)p +Fo(<)p Fq(this_release)p Fo(>)p Fq(:")616 1519 y(7.)41 +b(Chec)n(k)27 b(out)h(a)f(new)h(tree)f(for)g(the)h(branc)n(h:)722 +1652 y('cvs)f(co)h(-r)e(a)n(vr-lib)r(c-)p Fo(<)p Fq(ma)5 +b(jor)p Fo(>)p Fq(_)p Fo(<)p Fq(minor)p Fo(>)p Fq(-bra)o(nc)n(h')616 +1818 y(8.)41 b(Up)r(date)23 b(the)f(pac)n(k)-5 b(age)20 +b(v)n(ersion)g(in)i(con\034gure.ac)e(and)h(commit)h(con\034gure.ac)e +(to)i(cvs)722 1918 y(branc)n(h:)722 2051 y(Change)k(the)h(patc)n(h)f(n) +n(um)n(b)r(er)g(to)h(90)e(to)h(denote)h(that)g(this)f(no)n(w)g(a)g +(branc)n(h)g(leading)722 2150 y(up)i(to)g(a)f(release.)35 +b(Be)28 b(sure)e(to)i(lea)n(v)n(e)e(the)i Fo(<)p Fq(date)p +Fo(>)f Fq(part)g(of)g(the)h(v)n(ersion.)616 2316 y(9.)41 +b(Bring)27 b(the)h(build)g(system)f(up)h(to)g(date)f(b)n(y)g(running)h +(b)r(o)r(otstrap)e(and)i(con\034gure.)575 2482 y(10.)40 +b(P)n(erform)33 b(a)h('mak)n(e)f(distc)n(hec)n(k')g(and)h(mak)n(e)f +(sure)g(it)h(succeeds.)55 b(This)34 b(will)g(create)722 +2582 y(the)h(snapshot)f(source)g(tarball.)57 b(This)35 +b(should)f(b)r(e)h(considered)f(the)h(\034rst)g(release)722 +2682 y(candidate.)575 2848 y(11.)40 b(Upload)27 b(the)h(snapshot)f +(tarball)g(to)g(sa)n(v)-5 b(annah.)575 3014 y(12.)40 +b(Announce)28 b(the)f(branc)n(h)g(and)g(the)g(branc)n(h)g(tag)f(to)h +(the)h(a)n(vr-lib)r(c-dev)e(list)h(so)g(other)722 3113 +y(dev)n(elop)r(ers)f(can)i(c)n(hec)n(k)n(out)e(the)i(branc)n(h.)506 +3325 y Fs(Note:)676 3475 y Fq(CVS)g(tags)f(do)g(not)h(allo)n(w)e(the)i +(use)f(of)h(p)r(erio)r(ds)f(\('.'\).)515 3738 y Fs(15.2.2)93 +b(Making)32 b(a)g(release)515 3938 y Fq(A)c(stable)f(release)f(will)i +(only)f(b)r(e)h(done)f(on)h(a)f(branc)n(h,)f(not)i(from)f(the)h(cvs)f +(HEAD.)515 4085 y(The)g(follo)n(wing)g(steps)g(should)h(b)r(e)g(tak)n +(en)e(when)i(making)f(a)g(release:)616 4315 y(1.)41 b(Mak)n(e)27 +b(sure)g(the)h(source)e(tree)h(y)n(ou)g(are)f(w)n(orking)g(from)h(is)h +(on)f(the)h(correct)e(branc)n(h:)722 4448 y('cvs)h(up)r(date)h(-r)f(a)n +(vr-lib)r(c-)p Fo(<)p Fq(ma)5 b(jor)p Fo(>)p Fq(_)p Fo(<)p +Fq(minor)p Fo(>)p Fq(-bra)o(nc)n(h')616 4614 y(2.)41 +b(Up)r(date)28 b(the)g(pac)n(k)-5 b(age)26 b(v)n(ersion)g(in)i +(con\034gure.ac)e(and)h(commit)h(it)g(to)f(cvs.)616 4780 +y(3.)41 b(Up)r(date)f(the)g(gn)n(u)f(to)r(ol)g(c)n(hain)g(v)n(ersion)f +(requiremen)n(ts)g(in)i(the)g(README)h(and)722 4880 y(commit)28 +b(to)f(cvs.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 121 137 +TeXDict begin 121 136 bop 515 203 a Fs(15.2)94 b(Releasing)30 +b(A)-11 b(VR)32 b(Lib)s(c)1608 b(121)p 515 236 2865 4 +v 616 523 a Fq(4.)41 b(Up)r(date)30 b(the)f(ChangeLog)e(\034le)j(to)e +(note)h(the)h(release)d(and)i(commit)g(to)g(cvs)g(on)g(the)722 +623 y(branc)n(h:)722 756 y(A)n(dd)f("Released)e(a)n(vr-lib)r(c-)p +Fo(<)p Fq(this_release)p Fo(>)p Fq(.")616 922 y(5.)41 +b(Up)r(date)28 b(the)g(NEWS)h(\034le)f(with)g(p)r(ending)g(release)e(n) +n(um)n(b)r(er)h(and)h(commit)f(to)h(cvs:)722 1054 y(Change)19 +b("Changes)g(since)h(a)n(vr-lib)r(c-)p Fo(<)p Fq(last_release)p +Fo(>)p Fq(:")14 b(to)20 b("Changes)e(in)j(a)n(vr-lib)r(c-)722 +1154 y Fo(<)p Fq(this_relelase)p Fo(>)p Fq(:".)616 1320 +y(6.)41 b(Bring)27 b(the)h(build)g(system)f(up)h(to)g(date)f(b)n(y)g +(running)h(b)r(o)r(otstrap)e(and)i(con\034gure.)616 1486 +y(7.)41 b(P)n(erform)33 b(a)h('mak)n(e)f(distc)n(hec)n(k')g(and)h(mak)n +(e)f(sure)g(it)h(succeeds.)55 b(This)34 b(will)g(create)722 +1586 y(the)28 b(source)f(tarball.)616 1752 y(8.)41 b(T)-7 +b(ag)27 b(the)h(release:)722 1885 y('cvs)f(tag)g(a)n(vr-lib)r(c-)p +Fo(<)p Fq(ma)5 b(jor)p Fo(>)p Fq(_)p Fo(<)p Fq(minor)p +Fo(>)p Fq(_)p Fo(<)p Fq(pa)o(tc)n(h)p Fo(>)p Fq(-)o(relea)o(se')616 +2051 y(9.)41 b(Upload)27 b(the)h(tarball)f(to)h(sa)n(v)-5 +b(annah.)575 2217 y(10.)40 b(Up)r(date)28 b(the)g(NEWS)h(\034le,)f(and) +f(commit)h(to)g(cvs:)722 2350 y(A)n(dd)g("Changes)e(since)h(a)n(vr-lib) +r(c-)p Fo(<)p Fq(ma)5 b(jor)p Fo(>)p Fq(_)p Fo(<)p Fq(minor)p +Fo(>)p Fq(_)p Fo(<)p Fq(pa)o(tc)n(h)p Fo(>)p Fq(:")575 +2516 y(11.)40 b(Generate)27 b(the)h(latest)g(do)r(cumen)n(tation)f(and) +g(upload)g(to)h(sa)n(v)-5 b(annah.)575 2682 y(12.)40 +b(Announce)28 b(the)g(release.)515 2912 y(The)i(follo)n(wing)g(h)n(yp)r +(othetical)g(diagram)f(should)i(help)g(clarify)f(v)n(ersion)f(and)h +(branc)n(h)g(re-)515 3011 y(lationships.)p 515 5179 V +515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06) +e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 122 138 +TeXDict begin 122 137 bop 515 203 a Fs(16)31 b(A)m(c)m(kno)m(wledgmen)m +(ts)1848 b(122)p 515 236 2865 4 v 515 3044 a @beginspecial +0 @llx 0 @lly 430 @urx 372 @ury 3600 @rwi @setspecial +%%BeginDocument: releases.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: releases.fig +%%Creator: c:\Program Files\GnuWin32\bin\fig2dev.exe Version 3.2 Patchlevel 5 +%%CreationDate: Wed Nov 05 21:02:58 2008 +%%For: eweddington@CSOLT0054 (CSOLT0054) +%%BoundingBox: 0 0 430 372 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 372 moveto 0 0 lineto 430 0 lineto 430 372 lineto closepath clip newpath +-54.4 450.7 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Courier /Courier-iso isovec ReEncode +/Times-Roman /Times-Roman-iso isovec ReEncode +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Polyline +0 slj +0 slc +7.500 slw +gs clippath +2369 4623 m 2370 4740 l 2430 4739 l 2429 4622 l 2429 4622 l 2400 4713 l 2369 4623 l cp +eoclip +n 2398 2624 m + 2400 4725 l gs col0 s gr gr + +% arrowhead +n 2369 4623 m 2400 4713 l 2429 4622 l 2399 4593 l 2369 4623 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4544 1847 m 4544 1964 l 4604 1964 l 4604 1847 l 4604 1847 l 4574 1937 l 4544 1847 l cp +eoclip +n 3900 1725 m 4574 1724 l + 4574 1949 l gs col0 s gr gr + +% arrowhead +n 4544 1847 m 4574 1937 l 4604 1847 l 4574 1817 l 4544 1847 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4544 2596 m 4543 2713 l 4603 2714 l 4604 2597 l 4604 2597 l 4574 2687 l 4544 2596 l cp +eoclip +n 4575 2475 m + 4574 2699 l gs col0 s gr gr + +% arrowhead +n 4544 2596 m 4574 2687 l 4604 2597 l 4574 2567 l 4544 2596 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +n 3330 2700 m 3225 2700 3225 3120 105 arcto 4 {pop} repeat + 3225 3225 5820 3225 105 arcto 4 {pop} repeat + 5925 3225 5925 2805 105 arcto 4 {pop} repeat + 5925 2700 3330 2700 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +gs clippath +4545 3423 m 4545 3540 l 4605 3540 l 4605 3423 l 4605 3423 l 4575 3513 l 4545 3423 l cp +eoclip +n 4575 3225 m + 4575 3525 l gs col0 s gr gr + +% arrowhead +n 4545 3423 m 4575 3513 l 4605 3423 l 4575 3393 l 4545 3423 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +4545 3947 m 4545 4064 l 4605 4064 l 4605 3947 l 4605 3947 l 4575 4037 l 4545 3947 l cp +eoclip +n 4575 3749 m + 4575 4049 l gs col0 s gr gr + +% arrowhead +n 4545 3947 m 4575 4037 l 4605 3947 l 4575 3917 l 4545 3947 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2370 6573 m 2370 6690 l 2430 6690 l 2430 6573 l 2430 6573 l 2400 6663 l 2370 6573 l cp +eoclip +n 2400 5250 m + 2400 6675 l gs col0 s gr gr + +% arrowhead +n 2370 6573 m 2400 6663 l 2430 6573 l 2400 6543 l 2370 6573 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6569 4997 m 6569 5114 l 6629 5114 l 6629 4997 l 6629 4997 l 6599 5087 l 6569 4997 l cp +eoclip +n 3975 4875 m 6599 4874 l + 6599 5099 l gs col0 s gr gr + +% arrowhead +n 6569 4997 m 6599 5087 l 6629 4997 l 6599 4967 l 6569 4997 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +7995 6948 m 7995 7065 l 8055 7065 l 8055 6948 l 8055 6948 l 8025 7038 l 7995 6948 l cp +eoclip +n 3975 6825 m 8025 6825 l + 8025 7050 l gs col0 s gr gr + +% arrowhead +n 7995 6948 m 8025 7038 l 8055 6948 l 8025 6918 l 7995 6948 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +2370 7397 m 2370 7514 l 2430 7514 l 2430 7397 l 2430 7397 l 2400 7487 l 2370 7397 l cp +eoclip +n 2400 7199 m + 2400 7499 l gs col0 s gr gr + +% arrowhead +n 2370 7397 m 2400 7487 l 2430 7397 l 2400 7367 l 2370 7397 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +gs clippath +6570 5747 m 6570 5864 l 6630 5864 l 6630 5747 l 6630 5747 l 6600 5837 l 6570 5747 l cp +eoclip +n 6600 5549 m + 6600 5849 l gs col0 s gr gr + +% arrowhead +n 6570 5747 m 6600 5837 l 6630 5747 l 6600 5717 l 6570 5747 l + cp gs 0.00 setgray ef gr col0 s +% Polyline +n 3330 4050 m 3225 4050 3225 4470 105 arcto 4 {pop} repeat + 3225 4575 5820 4575 105 arcto 4 {pop} repeat + 5925 4575 5925 4155 105 arcto 4 {pop} repeat + 5925 4050 3330 4050 105 arcto 4 {pop} repeat + cp gs col0 s gr +% Polyline +n 5430 5850 m 5325 5850 5325 6270 105 arcto 4 {pop} repeat + 5325 6375 7845 6375 105 arcto 4 {pop} repeat + 7950 6375 7950 5955 105 arcto 4 {pop} repeat + 7950 5850 5430 5850 105 arcto 4 {pop} repeat + cp gs col0 s gr +/Courier-iso ff 150.00 scf sf +4574 2174 m +gs 1 -1 sc (cvs tag -b avr-libc-1_0-branch) dup sw pop 2 div neg 0 rm col0 sh gr +/Courier-iso ff 150.00 scf sf +2398 1799 m +gs 1 -1 sc (cvs tag avr-libc-1_0-branchpoint) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +2400 2025 m +gs 1 -1 sc (set version to 1.1.0.) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +4575 2400 m +gs 1 -1 sc (set version to 0.90.90.) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +4575 2925 m +gs 1 -1 sc (set version to 1.0) dup sw pop 2 div neg 0 rm col0 sh gr +/Courier-iso ff 150.00 scf sf +4575 3150 m +gs 1 -1 sc (cvs tag avr-libc-1_0-release) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +6599 1499 m +gs 1 -1 sc (1.2 Branch) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +4574 1499 m +gs 1 -1 sc (1.0 Branch) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 240.00 scf sf +2398 1499 m +gs 1 -1 sc (HEAD) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +4575 3675 m +gs 1 -1 sc (set version to 1.0.0.) dup sw pop 2 div neg 0 rm col0 sh gr +/Courier-iso ff 150.00 scf sf +2398 4949 m +gs 1 -1 sc (cvs tag avr-libc-1_2-branchpoint) dup sw pop 2 div neg 0 rm col0 sh gr +/Courier-iso ff 150.00 scf sf +2398 6899 m +gs 1 -1 sc (cvs tag avr-libc-2.0-branchpoint) dup sw pop 2 div neg 0 rm col0 sh gr +/Courier-iso ff 150.00 scf sf +6599 5249 m +gs 1 -1 sc (cvs tag -b avr-libc-1_2-branch) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +2400 5175 m +gs 1 -1 sc (set version to 1.3.0.) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +2400 7125 m +gs 1 -1 sc (set version to 2.1.0.) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6600 5475 m +gs 1 -1 sc (set version to 1.1.90.) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +4575 4275 m +gs 1 -1 sc (set version to 1.0.1) dup sw pop 2 div neg 0 rm col0 sh gr +/Times-Roman-iso ff 180.00 scf sf +6600 6075 m +gs 1 -1 sc (set version to 1.2) dup sw pop 2 div neg 0 rm col0 sh gr +/Courier-iso ff 150.00 scf sf +6600 6300 m +gs 1 -1 sc (cvs tag avr-libc-1_2-release) dup sw pop 2 div neg 0 rm col0 sh gr +/Courier-iso ff 150.00 scf sf +4575 4500 m +gs 1 -1 sc (cvs tag avr-libc-1_0_1-release) dup sw pop 2 div neg 0 rm col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF + +%%EndDocument + @endspecial 1548 3226 a Fq(Figure)26 b(4:)37 b(Release)27 +b(tree)515 3644 y Fr(16)131 b(A)l(c)l(kno)l(wledgmen)l(ts)515 +3873 y Fq(This)25 b(do)r(cumen)n(t)g(tries)f(to)h(tie)g(together)f(the) +h(lab)r(ors)f(of)g(a)h(large)e(group)h(of)h(p)r(eople.)36 +b(With-)515 3973 y(out)e(these)f(individuals')h(e\033orts,)h(w)n(e)e(w) +n(ouldn't)h(ha)n(v)n(e)e(a)i(terri\034c,)h Fs(free)e +Fq(set)h(of)g(to)r(ols)f(to)515 4072 y(dev)n(elop)26 +b(A)-9 b(VR)29 b(pro)5 b(jects.)35 b(W)-7 b(e)28 b(all)g(o)n(w)n(e)e +(thanks)h(to:)639 4284 y Fk(\210)41 b Fq(The)27 b(GCC)g(T)-7 +b(eam,)27 b(whic)n(h)f(pro)r(duced)h(a)f(v)n(ery)g(capable)g(set)h(of)g +(dev)n(elopmen)n(t)f(to)r(ols)722 4384 y(for)h(an)h(amazing)e(n)n(um)n +(b)r(er)h(of)h(platforms)f(and)g(pro)r(cessors.)639 4595 +y Fk(\210)41 b Fq(Denis)50 b(Chert)n(yk)n(o)n(v)c([)k +Fm(denisc@overta.r)o(u)43 b Fq(])49 b(for)f(making)h(the)g(A)-9 +b(VR-sp)r(eci\034c)722 4695 y(c)n(hanges)26 b(to)i(the)g(GNU)g(to)r +(ols.)639 4907 y Fk(\210)41 b Fq(Denis)30 b(Chert)n(yk)n(o)n(v)e(and)h +(Marek)g(Mic)n(halkiewicz)f([)i Fm(marekm@linux.org)o(.pl)23 +b Fq(])30 b(for)722 5006 y(dev)n(eloping)d(the)h(standard)e(libraries)g +(and)i(startup)f(co)r(de)g(for)g Fs(A)-11 b(VR-GCC)p +Fq(.)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 123 139 +TeXDict begin 123 138 bop 515 203 a Fs(17)31 b(T)-8 b(o)s(do)31 +b(List)2194 b(123)p 515 236 2865 4 v 639 523 a Fk(\210)41 +b Fq(Uros)27 b(Platise)h(for)f(dev)n(eloping)f(the)i(A)-9 +b(VR)28 b(programmer)d(to)r(ol,)i Fs(uisp)p Fq(.)639 +750 y Fk(\210)41 b Fq(Jo)r(erg)20 b(W)-7 b(unsc)n(h)21 +b([)g Fm(joerg@FreeBSD.OR)o(G)15 b Fq(])21 b(for)g(adding)f(all)h(the)g +(A)-9 b(VR)22 b(dev)n(elopmen)n(t)722 850 y(to)r(ols)41 +b(to)f(the)h(F)-7 b(reeBSD)41 b([)g Fm(http://www.freeb)o(sd)o(.o)o(rg) +34 b Fq(])41 b(p)r(orts)g(tree)f(and)h(for)722 949 y(pro)n(viding)26 +b(the)i(basics)f(for)g(the)h Fs(demo)j(pro)5 b(ject)28 +b Fq(\(p.)14 b(313\).)639 1176 y Fk(\210)41 b Fq(Brian)26 +b(Dean)h([)g Fm(bsd@bsdhome.com)20 b Fq(])27 b(for)f(dev)n(eloping)g +Fs(a)m(vrdude)i Fq(\(an)e(alternativ)n(e)722 1276 y(to)34 +b Fs(uisp)p Fq(\))g(and)f(for)h(con)n(tributing)g Fs(do)s(cumen)m +(tation)g Fq(\(p.)14 b(116\))33 b(whic)n(h)h(describ)r(es)722 +1375 y(ho)n(w)27 b(to)h(use)f(it.)37 b Fs(A)-11 b(vrdude)29 +b Fq(w)n(as)e(previously)f(called)h Fs(a)m(vrprog)p Fq(.)639 +1602 y Fk(\210)41 b Fq(Eric)g(W)-7 b(eddington)42 b([)f +Fm(eweddington@cso.)o(at)o(me)o(l.c)o(om)35 b Fq(])41 +b(for)f(main)n(taining)h(the)722 1702 y Fs(WinA)-11 b(VR)31 +b Fq(pac)n(k)-5 b(age)29 b(and)i(th)n(us)g(making)f(the)i(con)n(tin)n +(ued)e(impro)n(v)n(emen)n(ts)g(to)h(the)722 1801 y(op)r(en)d(source)e +(A)-9 b(VR)28 b(to)r(olc)n(hain)f(a)n(v)-5 b(ailable)26 +b(to)i(man)n(y)f(users.)639 2028 y Fk(\210)41 b Fq(Ric)n(h)31 +b(Nesw)n(old)f(for)g(writing)g(the)h(original)e(a)n(vr-to)r(ols)f(do)r +(cumen)n(t)i(\(whic)n(h)h(he)g(gra-)722 2128 y(ciously)g(allo)n(w)n(ed) +g(to)g(b)r(e)i(merged)d(in)n(to)i(this)g(do)r(cumen)n(t\))g(and)g(his)g +(impro)n(v)n(emen)n(ts)722 2228 y(to)c(the)g Fs(demo)j(pro)5 +b(ject)28 b Fq(\(p.)14 b(313\).)639 2454 y Fk(\210)41 +b Fq(Theo)r(dore)26 b(A.)h(Roth)f(for)g(ha)n(ving)g(b)r(een)g(a)h +(long-time)e(main)n(tainer)h(of)g(man)n(y)g(of)h(the)722 +2554 y(to)r(ols)f(\()p Fs(A)-11 b(VR-Lib)s(c)p Fq(,)27 +b(the)f(A)-9 b(VR)27 b(p)r(ort)f(of)g Fs(GDB)p Fq(,)h +Fs(A)-11 b(V)j(aRICE)p Fq(,)27 b Fs(uisp)p Fq(,)e Fs(a)m(vrdude)p +Fq(\).)639 2781 y Fk(\210)41 b Fq(All)32 b(the)g(p)r(eople)f(who)g +(curren)n(tly)f(main)n(tain)h(the)h(to)r(ols,)g(and/or)d(ha)n(v)n(e)h +(submitted)722 2881 y(suggestions,)38 b(patc)n(hes)f(and)g(bug)g(rep)r +(orts.)65 b(\(See)37 b(the)h(A)n(UTHORS)f(\034les)h(of)f(the)722 +2980 y(v)-5 b(arious)27 b(to)r(ols.\))639 3207 y Fk(\210)41 +b Fq(And)21 b(lastly)-7 b(,)22 b(all)e(the)h(users)e(who)i(use)f(the)h +(soft)n(w)n(are.)32 b(If)21 b(nob)r(o)r(dy)g(used)f(the)h(soft)n(w)n +(are,)722 3307 y(w)n(e)k(w)n(ould)h(probably)e(not)h(b)r(e)h(v)n(ery)f +(motiv)-5 b(ated)25 b(to)h(con)n(tin)n(ue)f(to)g(dev)n(elop)g(it.)37 +b(Keep)722 3406 y(those)27 b(bug)h(rep)r(orts)e(coming.)37 +b(;-\))515 3728 y Fr(17)131 b(T)-11 b(o)t(do)43 b(List)515 +3957 y Fs(Group)32 b(a)m(vr_b)s(o)s(ot)g(\()p Fq(p.)16 +b Fs(213\))73 b Fq(F)-7 b(rom)28 b(email)h(with)g(Marek:)38 +b(On)29 b(smaller)f(devices)g(\(all)722 4056 y(except)39 +b(A)-7 b(Tmega64/128\),)39 b(__SPM_REG)h(is)f(in)g(the)h(I/O)e(space,)j +(accessible)722 4156 y(with)27 b(the)g(shorter)e("in")g(and)h("out")g +(instructions)g(-)g(since)g(the)g(b)r(o)r(ot)h(loader)e(has)g(a)722 +4256 y(limited)k(size,)e(this)h(could)f(b)r(e)h(an)f(imp)r(ortan)n(t)h +(optimization.)515 4577 y Fr(18)131 b(Deprecated)43 b(List)515 +4806 y Fs(Global)31 b(SIGNAL)h(\()p Fq(p.)16 b Fs(256\))73 +b Fq(Do)23 b(not)f(use)h Fs(SIGNAL\(\))h Fq(\(p.)14 b(256\))21 +b(in)i(new)g(co)r(de.)35 b(Use)722 4905 y Fs(ISR\(\))28 +b Fq(\(p.)14 b(253\))27 b(instead.)p 515 5179 V 515 5255 +a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 124 140 +TeXDict begin 124 139 bop 515 203 a Fs(19)31 b(Mo)s(dule)f(Index)2009 +b(124)p 515 236 2865 4 v 515 523 a(Global)31 b(ISR_ALIAS)i(\()p +Fq(p.)16 b Fs(253\))72 b Fq(F)-7 b(or)53 b(new)g(co)r(de,)59 +b(the)53 b(use)g(of)g(ISR\(...,)60 b(ISR_-)722 623 y(ALIASOF\(...\)\)) +38 b(is)28 b(recommended.)515 936 y Fs(Global)j(timer_enable_in)m(t)g +(\()p Fq(p.)16 b Fs(307\))515 1248 y(Global)31 b(enable_external_in)m +(t)h(\()p Fq(p.)16 b Fs(306\))515 1561 y(Global)31 b(INTERR)m(UPT)h(\() +p Fq(p.)16 b Fs(306\))515 1874 y(Global)31 b(inp)g(\()p +Fq(p.)16 b Fs(306\))515 2187 y(Global)31 b(outp)h(\()p +Fq(p.)16 b Fs(307\))515 2500 y(Global)31 b(in)m(b)h(\()p +Fq(p.)16 b Fs(306\))515 2813 y(Global)31 b(outb)h(\()p +Fq(p.)16 b Fs(307\))515 3126 y(Global)31 b(sbi)g(\()p +Fq(p.)16 b Fs(307\))515 3439 y(Global)31 b(cbi)h(\()p +Fq(p.)16 b Fs(306\))515 3761 y Fr(19)131 b(Mo)t(dule)42 +b(Index)515 4006 y Fn(19.1)112 b(Mo)s(dules)515 4207 +y Fq(Here)27 b(is)g(a)h(list)f(of)h(all)f(mo)r(dules:)633 +4389 y Fo(<)p Fs(allo)s(ca.h)p Fo(>)p Fs(:)40 b(Allo)s(cate)31 +b(space)h(in)g(the)f(stac)m(k)968 b(130)633 4572 y Fo(<)p +Fs(assert.h)p Fo(>)p Fs(:)40 b(Diagnostics)1607 b(131)633 +4755 y Fo(<)p Fs(ct)m(yp)s(e.h)p Fo(>)p Fs(:)41 b(Character)34 +b(Op)s(erations)1190 b(132)633 4937 y Fo(<)p Fs(errno.h)p +Fo(>)p Fs(:)41 b(System)31 b(Errors)1503 b(134)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 125 141 +TeXDict begin 125 140 bop 515 203 a Fs(19.1)94 b(Mo)s(dules)2099 +b(125)p 515 236 2865 4 v 633 523 a Fo(<)p Fs(in)m(tt)m(yp)s(es.h)p +Fo(>)p Fs(:)40 b(In)m(teger)32 b(T)m(yp)s(e)h(con)m(v)m(ersions)940 +b(135)633 706 y Fo(<)p Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1568 +b(147)633 888 y Fo(<)p Fs(setjmp.h)p Fo(>)p Fs(:)40 b(Non-lo)s(cal)30 +b(goto)1433 b(154)633 1071 y Fo(<)p Fs(stdin)m(t.h)p +Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)f(T)m(yp)s(es)1090 +b(156)633 1254 y Fo(<)p Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 +b(IO)e(facilities)1227 b(168)633 1436 y Fo(<)p Fs(stdlib.h)p +Fo(>)p Fs(:)39 b(General)32 b(utilities)1415 b(188)633 +1619 y Fo(<)p Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1789 +b(200)633 1801 y Fo(<)p Fs(a)m(vr/b)s(o)s(ot.h)p Fo(>)p +Fs(:)41 b(Bo)s(otloader)30 b(Supp)s(ort)i(Utilities)754 +b(213)633 1984 y Fo(<)p Fs(a)m(vr/eeprom.h)p Fo(>)p Fs(:)41 +b(EEPR)m(OM)30 b(handling)1024 b(220)633 2167 y Fo(<)p +Fs(a)m(vr/fuse.h)p Fo(>)p Fs(:)41 b(F)-8 b(use)32 b(Supp)s(ort)1423 +b(223)633 2349 y Fo(<)p Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p +Fs(:)42 b(In)m(terrupts)1339 b(227)633 2532 y Fo(<)p +Fs(a)m(vr/io.h)p Fo(>)p Fs(:)41 b(A)-11 b(VR)32 b(device-sp)s(eci\034c) +f(IO)h(de\034nitions)635 b(256)633 2715 y Fo(<)p Fs(a)m(vr/lo)s(c)m +(k.h)p Fo(>)p Fs(:)42 b(Lo)s(c)m(kbit)32 b(Supp)s(ort)1292 +b(257)633 2897 y Fo(<)p Fs(a)m(vr/pgmspace.h)p Fo(>)p +Fs(:)41 b(Program)32 b(Space)h(Utilities)736 b(260)633 +3080 y Fo(<)p Fs(a)m(vr/p)s(o)m(w)m(er.h)p Fo(>)p Fs(:)42 +b(P)m(o)m(w)m(er)33 b(Reduction)e(Managemen)m(t)606 b(274)633 +3262 y Fo(<)p Fs(a)m(vr/sfr_defs.h)p Fo(>)p Fs(:)42 b(Sp)s(ecial)31 +b(function)h(registers)746 b(278)751 3445 y(A)m(dditional)31 +b(notes)g(from)h Fo(<)p Fs(a)m(vr/sfr_defs.h)p Fo(>)801 +b Fs(276)633 3628 y Fo(<)p Fs(a)m(vr/sleep.h)p Fo(>)p +Fs(:)40 b(P)m(o)m(w)m(er)33 b(Managemen)m(t)f(and)g(Sleep)f(Mo)s(des) +367 b(280)633 3810 y Fo(<)p Fs(a)m(vr/v)m(ersion.h)p +Fo(>)p Fs(:)41 b(a)m(vr-lib)s(c)33 b(v)m(ersion)e(macros)880 +b(282)633 3993 y Fo(<)p Fs(a)m(vr/wdt.h)p Fo(>)p Fs(:)42 +b(W)-8 b(atc)m(hdog)32 b(timer)f(handling)920 b(283)633 +4176 y Fo(<)p Fs(util/atomic.h)p Fo(>)69 b Fs(A)m(tomically)i(and)h +(Non-A)m(tomically)f(Executed)757 4275 y(Co)s(de)31 b(Blo)s(c)m(ks)1958 +b(287)633 4458 y Fo(<)p Fs(util/crc16.h)p Fo(>)p Fs(:)40 +b(CR)m(C)32 b(Computations)1087 b(291)633 4640 y Fo(<)p +Fs(util/dela)m(y)-8 b(.h)p Fo(>)p Fs(:)98 b(Con)m(v)m(enience)62 +b(functions)e(for)i(busy-w)m(ait)f(dela)m(y)757 4740 +y(lo)s(ops)2262 b(294)633 4923 y Fo(<)p Fs(util/dela)m(y_basic.h)p +Fo(>)p Fs(:)40 b(Basic)32 b(busy-w)m(ait)g(dela)m(y)g(lo)s(ops)484 +b(296)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 126 142 +TeXDict begin 126 141 bop 515 203 a Fs(20)31 b(Data)i(Structure)g +(Index)1693 b(126)p 515 236 2865 4 v 633 523 a Fo(<)p +Fs(util/parit)m(y)-8 b(.h)p Fo(>)p Fs(:)41 b(P)m(arit)m(y)33 +b(bit)e(generation)1014 b(297)633 706 y Fo(<)p Fs(util/setbaud.h)p +Fo(>)p Fs(:)39 b(Help)s(er)31 b(macros)h(for)g(baud)g(rate)g +(calculations)101 b(298)633 888 y Fo(<)p Fs(util/t)m(wi.h)p +Fo(>)p Fs(:)39 b(TWI)32 b(bit)g(mask)g(de\034nitions)944 +b(300)633 1071 y Fo(<)p Fs(compat/deprecated.h)p Fo(>)p +Fs(:)41 b(Deprecated)33 b(items)782 b(304)633 1254 y +Fo(<)p Fs(compat/ina90.h)p Fo(>)p Fs(:)40 b(Compatibilit)m(y)30 +b(with)i(IAR)g(EWB)f(3.x)326 b(308)633 1436 y(Demo)31 +b(pro)5 b(jects)1992 b(308)751 1619 y(Com)m(bining)30 +b(C)i(and)g(assem)m(bly)f(source)h(\034les)853 b(309)751 +1801 y(A)32 b(simple)e(pro)5 b(ject)1785 b(313)751 1984 +y(A)32 b(more)f(sophisticated)g(pro)5 b(ject)1268 b(330)751 +2167 y(Using)31 b(the)h(standard)h(IO)e(facilities)1168 +b(338)751 2349 y(Example)31 b(using)g(the)h(t)m(w)m(o-wire)f(in)m +(terface)i(\(TWI\))619 b(346)515 2671 y Fr(20)131 b(Data)43 +b(Structure)i(Index)515 2917 y Fn(20.1)112 b(Data)38 +b(Structures)515 3117 y Fq(Here)27 b(are)g(the)g(data)h(structures)e +(with)i(brief)g(descriptions:)633 3300 y Fs(div_t)2362 +b(351)633 3482 y(ldiv_t)2335 b(352)515 3804 y Fr(21)131 +b(File)42 b(Index)515 4050 y Fn(21.1)112 b(File)38 b(List)515 +4250 y Fq(Here)27 b(is)g(a)h(list)f(of)h(all)f(do)r(cumen)n(ted)h +(\034les)f(with)h(brief)g(descriptions:)633 4433 y Fs(assert.h)2281 +b(352)633 4616 y(atoi.S)2365 b(353)633 4798 y(atol.S)g(353)633 +4981 y(atomic.h)2243 b(353)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 127 143 +TeXDict begin 127 142 bop 515 203 a Fs(21.1)94 b(File)31 +b(List)2108 b(127)p 515 236 2865 4 v 633 523 a(b)s(o)s(ot.h)2331 +b(353)633 706 y(crc16.h)2304 b(360)633 888 y(ct)m(yp)s(e.h)2297 +b(360)633 1071 y(dela)m(y)-8 b(.h)2314 b(361)633 1254 +y(dela)m(y_basic.h)2026 b(361)633 1436 y(errno.h)2300 +b(361)633 1619 y(fdev)m(op)s(en.c)2160 b(362)633 1801 +y(\033s.S)2429 b(362)633 1984 y(\033sl.S)2402 b(362)633 +2167 y(\033sll.S)2375 b(362)633 2349 y(fuse.h)2359 b(362)633 +2532 y(in)m(terrupt.h)2144 b(362)633 2715 y(in)m(tt)m(yp)s(es.h)2187 +b(363)633 2897 y(io.h)2448 b(366)633 3080 y(lo)s(c)m(k.h)2356 +b(366)633 3262 y(math.h)2307 b(366)633 3445 y(memccp)m(y)-8 +b(.S)2143 b(368)633 3628 y(memc)m(hr.S)2188 b(368)633 +3810 y(memc)m(hr_P)-8 b(.S)2057 b(368)633 3993 y(memcmp.S)2144 +b(368)633 4176 y(memcmp_P)-8 b(.S)2013 b(368)633 4358 +y(memcp)m(y)-8 b(.S)2185 b(368)633 4541 y(memcp)m(y_P)-8 +b(.S)2046 b(368)633 4723 y(memmem.S)2115 b(368)633 4906 +y(memmo)m(v)m(e.S)2103 b(368)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 128 144 +TeXDict begin 128 143 bop 515 203 a Fs(21.1)94 b(File)31 +b(List)2108 b(128)p 515 236 2865 4 v 633 523 a(memrc)m(hr.S)2149 +b(368)633 706 y(memrc)m(hr_P)-8 b(.S)2018 b(368)633 888 +y(memset.S)2200 b(368)633 1071 y(parit)m(y)-8 b(.h)2282 +b(368)633 1254 y(pgmspace.h)2119 b(369)633 1436 y(p)s(o)m(w)m(er.h)2273 +b(377)633 1619 y(setbaud.h)2199 b(378)633 1801 y(setjmp.h)2242 +b(378)633 1984 y(sleep.h)2317 b(379)633 2167 y(stdin)m(t.h)2281 +b(379)633 2349 y(stdio.h)2320 b(382)633 2532 y(stdlib.h)2288 +b(384)633 2715 y(strcasecmp.S)2064 b(387)633 2897 y(strcasecmp_P)-8 +b(.S)1933 b(387)633 3080 y(strcasestr.S)2125 b(387)633 +3262 y(strcat.S)2284 b(387)633 3445 y(strcat_P)-8 b(.S)2153 +b(387)633 3628 y(strc)m(hr.S)2278 b(387)633 3810 y(strc)m(hr_P)-8 +b(.S)2147 b(387)633 3993 y(strc)m(hrn)m(ul.S)h(387)633 +4176 y(strc)m(hrn)m(ul_P)-8 b(.S)2017 b(387)633 4358 +y(strcmp.S)2234 b(387)633 4541 y(strcmp_P)-8 b(.S)2103 +b(387)633 4723 y(strcp)m(y)-8 b(.S)2275 b(387)633 4906 +y(strcp)m(y_P)-8 b(.S)2136 b(387)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 129 145 +TeXDict begin 129 144 bop 515 203 a Fs(21.1)94 b(File)31 +b(List)2108 b(129)p 515 236 2865 4 v 633 523 a(strcspn.S)2223 +b(387)633 706 y(strcspn_P)-8 b(.S)2092 b(387)633 888 +y(strdup.c)2261 b(387)633 1071 y(string.h)2281 b(388)633 +1254 y(strlcat.S)2257 b(390)633 1436 y(strlcat_P)-8 b(.S)2126 +b(390)633 1619 y(strlcp)m(y)-8 b(.S)2248 b(390)633 1801 +y(strlcp)m(y_P)-8 b(.S)2109 b(390)633 1984 y(strlen.S)2285 +b(390)633 2167 y(strlen_P)-8 b(.S)2154 b(390)633 2349 +y(strlwr.S)2274 b(390)633 2532 y(strncasecmp.S)2011 b(390)633 +2715 y(strncasecmp_P)-8 b(.S)1880 b(390)633 2897 y(strncat.S)2231 +b(390)633 3080 y(strncat_P)-8 b(.S)2100 b(390)633 3262 +y(strncmp.S)2181 b(390)633 3445 y(strncmp_P)-8 b(.S)2050 +b(390)633 3628 y(strncp)m(y)-8 b(.S)2222 b(390)633 3810 +y(strncp)m(y_P)-8 b(.S)2083 b(390)633 3993 y(strnlen.S)2232 +b(390)633 4176 y(strnlen_P)-8 b(.S)2101 b(390)633 4358 +y(strpbrk.S)2214 b(390)633 4541 y(strpbrk_P)-8 b(.S)2083 +b(390)633 4723 y(strrc)m(hr.S)2239 b(390)633 4906 y(strrc)m(hr_P)-8 +b(.S)2108 b(390)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 130 146 +TeXDict begin 130 145 bop 515 203 a Fs(22)31 b(Mo)s(dule)f(Do)s(cumen)m +(tation)1604 b(130)p 515 236 2865 4 v 633 523 a(strrev.S)2276 +b(390)633 706 y(strsep.S)e(390)633 888 y(strsep_P)-8 +b(.S)2143 b(390)633 1071 y(strspn.S)2265 b(390)633 1254 +y(strspn_P)-8 b(.S)2134 b(390)633 1436 y(strstr.S)2295 +b(390)633 1619 y(strstr_P)-8 b(.S)2164 b(390)633 1801 +y(strtok.c)2285 b(390)633 1984 y(strtok_r.S)2161 b(391)633 +2167 y(strupr.S)2264 b(391)633 2349 y(util/t)m(wi.h)2201 +b(391)633 2532 y(wdt.h)2364 b(392)515 2854 y Fr(22)131 +b(Mo)t(dule)42 b(Do)t(cumen)l(tation)515 3099 y Fn(22.1)112 +b Fd(<)p Fn(allo)s(ca.h)p Fd(>)p Fn(:)51 b(Allo)s(cate)38 +b(space)g(in)f(the)h(stac)m(k)515 3300 y Fs(22.1.1)93 +b(Detailed)31 b(Description)515 3500 y(F)-8 b(unctions)639 +3687 y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(allo)s(ca)h +Fq(\(size_t)f(__size\))515 3950 y Fs(22.1.2)93 b(F)-8 +b(unction)32 b(Do)s(cumen)m(tation)515 4150 y(22.1.2.1)92 +b(v)m(oid)p Fh(\003)32 b Fs(allo)s(ca)f(\(size_t)h Fc(__size)p +Fs(\))515 4297 y Fq(Allo)r(cate)27 b Fl(__size)34 b Fq(b)n(ytes)27 +b(of)h(space)e(in)i(the)g(stac)n(k)f(frame)g(of)g(the)h(caller.)515 +4444 y(This)i(temp)r(orary)f(space)g(is)i(automatically)e(freed)h(when) +g(the)h(function)g(that)f(called)g Fs(al-)515 4544 y(lo)s(ca\(\))f +Fq(\(p.)14 b(130\))28 b(returns)h(to)g(its)h(caller.)41 +b(A)-9 b(vr-lib)r(c)28 b(de\034nes)i(the)f Fs(allo)s(ca\(\))g +Fq(\(p.)14 b(130\))29 b(as)f(a)515 4643 y(macro,)c(whic)n(h)i(is)f +(translated)g(in)n(to)g(the)h(inlined)f Fm(__builtin_alloca\()o(\))19 +b Fq(function.)37 b(The)515 4743 y(fact)28 b(that)h(the)g(co)r(de)g(is) +f(inlined,)i(means)e(that)h(it)g(is)f(imp)r(ossible)h(to)f(tak)n(e)g +(the)h(address)e(of)515 4843 y(this)h(function,)g(or)e(to)i(c)n(hange)e +(its)i(b)r(eha)n(viour)e(b)n(y)i(linking)f(with)h(a)f(di\033eren)n(t)h +(library)-7 b(.)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 131 147 +TeXDict begin 131 146 bop 515 203 a Fs(22.2)94 b Fo(<)p +Fs(assert.h)p Fo(>)p Fs(:)40 b(Diagnostics)1460 b(131)p +515 236 2865 4 v 506 497 a(Returns:)676 647 y(allo)s(ca\(\))27 +b Fq(\(p.)14 b(130\))25 b(returns)h(a)g(p)r(oin)n(ter)g(to)h(the)f(b)r +(eginning)h(of)f(the)h(allo)r(cated)f(space.)676 746 +y(If)i(the)g(allo)r(cation)f(causes)f(stac)n(k)h(o)n(v)n(er\035o)n(w,)e +(program)g(b)r(eha)n(viour)h(is)i(unde\034ned.)506 944 +y Fs(W)-8 b(arning:)676 1110 y Fq(A)f(v)n(oid)27 b(use)g +Fs(allo)s(ca\(\))h Fq(\(p.)14 b(130\))27 b(inside)g(the)h(list)g(of)g +(argumen)n(ts)e(of)h(a)g(function)i(call.)515 1387 y +Fn(22.2)112 b Fd(<)p Fn(assert.h)p Fd(>)p Fn(:)50 b(Diagnostics)515 +1588 y Fs(22.2.1)93 b(Detailed)31 b(Description)550 1767 +y Fj(#include)37 b()515 1983 y Fq(This)27 b(header)g(\034le)h +(de\034nes)f(a)g(debugging)g(aid.)515 2130 y(As)37 b(there)g(is)h(no)f +(standard)f(error)f(output)j(stream)f(a)n(v)-5 b(ailable)36 +b(for)g(man)n(y)h(applications)515 2230 y(using)26 b(this)h(library)-7 +b(,)25 b(the)i(generation)e(of)i(a)f(prin)n(table)g(error)f(message)g +(is)h(not)h(enabled)f(b)n(y)515 2330 y(default.)59 b(These)34 +b(messages)g(will)h(only)f(b)r(e)h(generated)f(if)h(the)h(application)e +(de\034nes)h(the)515 2429 y(macro)550 2624 y Fj(__ASSERT_USE_STDERR)515 +2840 y Fq(b)r(efore)51 b(including)g(the)g Fo(<)p Fm(assert.h)40 +b(\()p Fq(p.)14 b Fm(352\))p Fo(>)49 b Fq(header)i(\034le.)107 +b(By)51 b(default,)58 b(only)515 2940 y Fs(ab)s(ort\(\))28 +b Fq(\(p.)14 b(191\))27 b(will)g(b)r(e)h(called)g(to)f(halt)h(the)g +(application.)515 3201 y Fs(De\034nes)639 3384 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(assert)p Fq(\(expression\))515 +3645 y Fs(22.2.2)93 b(De\034ne)32 b(Do)s(cumen)m(tation)515 +3845 y(22.2.2.1)92 b(#de\034ne)31 b(assert\(expression\))506 +4048 y(P)m(arameters:)676 4198 y Fc(expr)-5 b(ession)42 +b Fq(Expression)26 b(to)i(test)g(for.)515 4414 y(The)36 +b Fs(assert\(\))h Fq(\(p.)14 b(131\))35 b(macro)g(tests)i(the)g(giv)n +(en)e(expression)g(and)h(if)h(it)g(is)f(false,)j(the)515 +4513 y(calling)25 b(pro)r(cess)f(is)h(terminated.)36 +b(A)26 b(diagnostic)f(message)f(is)h(written)h(to)g(stderr)e(and)i(the) +515 4613 y(function)i Fs(ab)s(ort\(\))g Fq(\(p.)14 b(191\))27 +b(is)g(called,)g(e\033ectiv)n(ely)h(terminating)f(the)h(program.)515 +4760 y(If)g(expression)e(is)h(true,)h(the)g Fs(assert\(\))f +Fq(\(p.)14 b(131\))27 b(macro)f(do)r(es)i(nothing.)515 +4907 y(The)23 b Fs(assert\(\))g Fq(\(p.)14 b(131\))22 +b(macro)g(ma)n(y)g(b)r(e)h(remo)n(v)n(ed)f(at)g(compile)h(time)h(b)n(y) +e(de\034ning)h(NDE-)515 5006 y(BUG)28 b(as)e(a)i(macro)e(\(e.g.,)h(b)n +(y)h(using)f(the)h(compiler)f(option)g(-DNDEBUG\).)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 132 148 +TeXDict begin 132 147 bop 515 203 a Fs(22.3)94 b Fo(<)p +Fs(ct)m(yp)s(e.h)p Fo(>)p Fs(:)41 b(Character)34 b(Op)s(erations)1043 +b(132)p 515 236 2865 4 v 515 523 a Fn(22.3)112 b Fd(<)p +Fn(ct)m(yp)s(e.h)p Fd(>)p Fn(:)50 b(Character)37 b(Op)s(erations)515 +724 y Fs(22.3.1)93 b(Detailed)31 b(Description)515 924 +y Fq(These)c(functions)h(p)r(erform)f(v)-5 b(arious)26 +b(op)r(erations)g(on)i(c)n(haracters.)550 1133 y Fj(#include)37 +b()515 1396 y Fs(Character)c(classi\034cation)e(routines)515 +1597 y Fq(These)19 b(functions)g(p)r(erform)g(c)n(haracter)e +(classi\034cation.)32 b(They)19 b(return)g(true)g(or)g(false)f(status) +515 1696 y(dep)r(ending)25 b(whether)g(the)g(c)n(haracter)e(passed)h +(to)h(the)g(function)g(falls)g(in)n(to)g(the)g(function's)515 +1796 y(classi\034cation)33 b(\(i.e.)59 b Fs(isdigit\(\))33 +b Fq(\(p.)14 b(133\))34 b(returns)h(true)f(if)i(its)f(argumen)n(t)e(is) +i(an)n(y)f(v)-5 b(alue)515 1895 y('0')28 b(though)h('9',)g(inclusiv)n +(e\).)41 b(If)29 b(the)h(input)f(is)g(not)g(an)g(unsigned)f(c)n(har)g +(v)-5 b(alue,)29 b(all)g(of)g(this)515 1995 y(function)f(return)f +(false.)639 2208 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isaln)m(um)f +Fq(\(in)n(t)h(__c\))639 2316 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(isalpha)f Fq(\(in)n(t)h(__c\))639 2424 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(isascii)e Fq(\(in)n(t)j(__c\))639 +2532 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isblank)f Fq(\(in)n(t)h(__c\))639 +2640 y Fk(\210)41 b Fq(in)n(t)28 b Fs(iscn)m(trl)g Fq(\(in)n(t)g(__c\)) +639 2748 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isdigit)e Fq(\(in)n(t)i +(__c\))639 2856 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isgraph)f +Fq(\(in)n(t)i(__c\))639 2964 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(islo)m(w)m(er)f Fq(\(in)n(t)h(__c\))639 3072 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(isprin)m(t)f Fq(\(in)n(t)h(__c\))639 +3180 y Fk(\210)41 b Fq(in)n(t)28 b Fs(ispunct)g Fq(\(in)n(t)g(__c\))639 +3288 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isspace)f Fq(\(in)n(t)h(__c\))639 +3396 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isupp)s(er)f Fq(\(in)n(t)h(__c\)) +639 3504 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isxdigit)e +Fq(\(in)n(t)i(__c\))515 3767 y Fs(Character)33 b(con)m(v)m(ertion)g +(routines)515 3967 y Fq(This)28 b(realization)f(p)r(ermits)h(all)g(p)r +(ossible)g(v)-5 b(alues)28 b(of)h(in)n(teger)e(argumen)n(t.)38 +b(The)28 b Fs(toascii\(\))515 4067 y Fq(\(p.)14 b(134\))23 +b(function)i(clears)e(all)h(highest)g(bits.)36 b(The)24 +b Fs(tolo)m(w)m(er\(\))h Fq(\(p.)14 b(134\))23 b(and)h +Fs(toupp)s(er\(\))515 4166 y Fq(\(p.)14 b(134\))29 b(functions)g +(return)h(an)f(input)h(argumen)n(t)f(as)g(is,)h(if)g(it)g(is)g(not)g +(an)f(unsigned)g(c)n(har)515 4266 y(v)-5 b(alue.)639 +4479 y Fk(\210)41 b Fq(in)n(t)28 b Fs(toascii)f Fq(\(in)n(t)h(__c\))639 +4587 y Fk(\210)41 b Fq(in)n(t)28 b Fs(tolo)m(w)m(er)g +Fq(\(in)n(t)g(__c\))639 4695 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(toupp)s(er)f Fq(\(in)n(t)h(__c\))p 515 5179 V 515 +5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 133 149 +TeXDict begin 133 148 bop 515 203 a Fs(22.3)94 b Fo(<)p +Fs(ct)m(yp)s(e.h)p Fo(>)p Fs(:)41 b(Character)34 b(Op)s(erations)1043 +b(133)p 515 236 2865 4 v 515 523 a(22.3.2)93 b(F)-8 b(unction)32 +b(Do)s(cumen)m(tation)515 724 y(22.3.2.1)92 b(in)m(t)32 +b(isaln)m(um)f(\(in)m(t)h Fc(__c)p Fs(\))515 870 y Fq(Chec)n(ks)44 +b(for)h(an)f(alphan)n(umeric)g(c)n(haracter.)88 b(It)45 +b(is)g(equiv)-5 b(alen)n(t)45 b(to)g Fm(\(isalpha\(c\))39 +b Fh(jj)515 970 y Fm(isdigit\(c\)\))p Fq(.)515 1233 y +Fs(22.3.2.2)92 b(in)m(t)32 b(isalpha)g(\(in)m(t)f Fc(__c)p +Fs(\))515 1380 y Fq(Chec)n(ks)54 b(for)h(an)g(alphab)r(etic)g(c)n +(haracter.)117 b(It)56 b(is)f(equiv)-5 b(alen)n(t)55 +b(to)g Fm(\(isupper\(c\))39 b Fh(jj)515 1480 y Fm(islower\(c\)\))p +Fq(.)515 1743 y Fs(22.3.2.3)92 b(in)m(t)32 b(isascii)f(\(in)m(t)h +Fc(__c)p Fs(\))515 1889 y Fq(Chec)n(ks)18 b(whether)g +Fm(c)h Fq(is)f(a)g(7-bit)h(unsigned)f(c)n(har)g(v)-5 +b(alue)18 b(that)h(\034ts)g(in)n(to)g(the)g(ASCI)r(I)g(c)n(haracter)515 +1989 y(set.)515 2252 y Fs(22.3.2.4)92 b(in)m(t)32 b(isblank)g(\(in)m(t) +f Fc(__c)p Fs(\))515 2399 y Fq(Chec)n(ks)26 b(for)i(a)f(blank)g(c)n +(haracter,)e(that)j(is,)g(a)f(space)g(or)f(a)i(tab.)515 +2662 y Fs(22.3.2.5)92 b(in)m(t)32 b(iscn)m(trl)g(\(in)m(t)g +Fc(__c)p Fs(\))515 2809 y Fq(Chec)n(ks)26 b(for)i(a)f(con)n(trol)f(c)n +(haracter.)515 3072 y Fs(22.3.2.6)92 b(in)m(t)32 b(isdigit)e(\(in)m(t)i +Fc(__c)p Fs(\))515 3219 y Fq(Chec)n(ks)26 b(for)i(a)f(digit)g(\(0)h +(through)f(9\).)515 3482 y Fs(22.3.2.7)92 b(in)m(t)32 +b(isgraph)g(\(in)m(t)g Fc(__c)p Fs(\))515 3629 y Fq(Chec)n(ks)26 +b(for)i(an)n(y)e(prin)n(table)h(c)n(haracter)f(except)h(space.)515 +3892 y Fs(22.3.2.8)92 b(in)m(t)32 b(islo)m(w)m(er)f(\(in)m(t)h +Fc(__c)p Fs(\))515 4038 y Fq(Chec)n(ks)26 b(for)i(a)f(lo)n(w)n(er-case) +d(c)n(haracter.)515 4301 y Fs(22.3.2.9)92 b(in)m(t)32 +b(isprin)m(t)g(\(in)m(t)f Fc(__c)p Fs(\))515 4448 y Fq(Chec)n(ks)26 +b(for)i(an)n(y)e(prin)n(table)h(c)n(haracter)f(including)h(space.)515 +4711 y Fs(22.3.2.10)92 b(in)m(t)32 b(ispunct)g(\(in)m(t)f +Fc(__c)p Fs(\))515 4858 y Fq(Chec)n(ks)36 b(for)i(an)n(y)e(prin)n +(table)h(c)n(haracter)f(whic)n(h)h(is)h(not)f(a)g(space)g(or)g(an)g +(alphan)n(umeric)515 4958 y(c)n(haracter.)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 134 150 +TeXDict begin 134 149 bop 515 203 a Fs(22.4)94 b Fo(<)p +Fs(errno.h)p Fo(>)p Fs(:)41 b(System)31 b(Errors)1356 +b(134)p 515 236 2865 4 v 515 523 a(22.3.2.11)92 b(in)m(t)32 +b(isspace)f(\(in)m(t)h Fc(__c)p Fs(\))515 670 y Fq(Chec)n(ks)i(for)g +(white-space)h(c)n(haracters.)57 b(F)-7 b(or)34 b(the)h(a)n(vr-lib)r(c) +f(library)-7 b(,)36 b(these)f(are:)51 b(space,)515 770 +y(form-feed)27 b(\(')p Fh(n)p Fq(f)6 b('\),)29 b(newline)f(\(')p +Fh(n)p Fq(n'\),)g(carriage)d(return)i(\(')p Fh(n)p Fq(r'\),)h(horizon)n +(tal)e(tab)i(\(')p Fh(n)p Fq(t'\),)g(and)515 869 y(v)n(ertical)e(tab)i +(\(')p Fh(n)p Fq(v'\).)515 1127 y Fs(22.3.2.12)92 b(in)m(t)32 +b(isupp)s(er)f(\(in)m(t)h Fc(__c)p Fs(\))515 1274 y Fq(Chec)n(ks)26 +b(for)i(an)f(upp)r(ercase)g(letter.)515 1533 y Fs(22.3.2.13)92 +b(in)m(t)32 b(isxdigit)e(\(in)m(t)i Fc(__c)p Fs(\))515 +1679 y Fq(Chec)n(ks)c(for)g(a)h(hexadecimal)f(digits,)h(i.e.)40 +b(one)29 b(of)g(0)f(1)h(2)f(3)h(4)f(5)h(6)f(7)g(8)h(9)f(a)h(b)g(c)g(d)g +(e)g(f)g(A)g(B)515 1779 y(C)e(D)h(E)h(F.)515 2037 y Fs(22.3.2.14)92 +b(in)m(t)32 b(toascii)f(\(in)m(t)h Fc(__c)p Fs(\))515 +2184 y Fq(Con)n(v)n(erts)22 b Fm(c)j Fq(to)f(a)g(7-bit)g(unsigned)g(c)n +(har)g(v)-5 b(alue)24 b(that)h(\034ts)f(in)n(to)h(the)g(ASCI)r(I)g(c)n +(haracter)d(set,)515 2284 y(b)n(y)27 b(clearing)f(the)i(high-order)e +(bits.)506 2468 y Fs(W)-8 b(arning:)676 2634 y Fq(Man)n(y)31 +b(p)r(eople)h(will)g(b)r(e)g(unhapp)n(y)g(if)g(y)n(ou)f(use)h(this)g +(function.)50 b(This)32 b(function)g(will)676 2734 y(con)n(v)n(ert)26 +b(accen)n(ted)h(letters)g(in)n(to)h(random)e(c)n(haracters.)515 +3047 y Fs(22.3.2.15)92 b(in)m(t)32 b(tolo)m(w)m(er)g(\(in)m(t)f +Fc(__c)p Fs(\))515 3194 y Fq(Con)n(v)n(erts)26 b(the)i(letter)f +Fm(c)g Fq(to)h(lo)n(w)n(er)e(case,)g(if)j(p)r(ossible.)515 +3453 y Fs(22.3.2.16)92 b(in)m(t)32 b(toupp)s(er)f(\(in)m(t)h +Fc(__c)p Fs(\))515 3599 y Fq(Con)n(v)n(erts)26 b(the)i(letter)f +Fm(c)g Fq(to)h(upp)r(er)f(case,)g(if)h(p)r(ossible.)515 +3874 y Fn(22.4)112 b Fd(<)p Fn(errno.h)p Fd(>)p Fn(:)50 +b(System)38 b(Errors)515 4075 y Fs(22.4.1)93 b(Detailed)31 +b(Description)550 4254 y Fj(#include)37 b()515 +4457 y Fq(Some)20 b(functions)i(in)f(the)g(library)f(set)h(the)g +(global)f(v)-5 b(ariable)19 b Fm(errno)g Fq(when)i(an)g(error)e(o)r +(ccurs.)515 4557 y(The)i(\034le,)i Fo(<)p Fm(errno.h)40 +b(\()p Fq(p.)14 b Fm(361\))p Fo(>)p Fq(,)21 b(pro)n(vides)f(sym)n(b)r +(olic)h(names)f(for)h(v)-5 b(arious)20 b(error)g(co)r(des.)506 +4741 y Fs(W)-8 b(arning:)676 4907 y Fq(The)36 b Fm(errno)e +Fq(global)h(v)-5 b(ariable)34 b(is)i(not)g(safe)f(to)h(use)g(in)g(a)f +(threaded)h(or)f(m)n(ulti-task)676 5006 y(system.)60 +b(A)36 b(race)f(condition)g(can)g(o)r(ccur)g(if)h(a)f(task)g(is)g(in)n +(terrupted)g(b)r(et)n(w)n(een)h(the)p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 135 151 +TeXDict begin 135 150 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(135)p 515 236 +2865 4 v 676 523 a Fq(call)30 b(whic)n(h)f(sets)h Fm(error)e +Fq(and)i(when)g(the)g(task)f(examines)h Fm(errno)p Fq(.)41 +b(If)31 b(another)e(task)676 623 y(c)n(hanges)i Fm(errno)f +Fq(during)i(this)g(time,)i(the)f(result)f(will)g(b)r(e)h(incorrect)e +(for)g(the)i(in)n(ter-)676 722 y(rupted)28 b(task.)515 +985 y Fs(De\034nes)639 1172 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(EDOM)f Fq(33)639 1280 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ERANGE)f Fq(34)515 1543 y Fs(22.4.2)93 b(De\034ne)32 +b(Do)s(cumen)m(tation)515 1743 y(22.4.2.1)92 b(#de\034ne)31 +b(EDOM)g(33)515 1890 y Fq(Domain)c(error.)515 2153 y +Fs(22.4.2.2)92 b(#de\034ne)31 b(ERANGE)g(34)515 2300 +y Fq(Range)c(error.)515 2580 y Fn(22.5)112 b Fd(<)p Fn(in)m(tt)m(yp)s +(es.h)p Fd(>)p Fn(:)50 b(In)m(teger)37 b(T)m(yp)s(e)h(con)m(v)m +(ersions)515 2780 y Fs(22.5.1)93 b(Detailed)31 b(Description)550 +2960 y Fj(#include)37 b()515 3190 y Fq(This)e(header)g +(\034le)h(includes)f(the)h(exact-width)f(in)n(teger)g(de\034nitions)h +(from)f Fo(<)p Fm(stdint.h)515 3289 y(\()p Fq(p.)14 b +Fm(379\))p Fo(>)p Fq(,)30 b(and)i(extends)f(them)h(with)g(additional)f +(facilities)g(pro)n(vided)f(b)n(y)h(the)h(imple-)515 +3389 y(men)n(tation.)515 3536 y(Curren)n(tly)-7 b(,)24 +b(the)i(extensions)e(include)h(t)n(w)n(o)f(additional)g(in)n(teger)g(t) +n(yp)r(es)h(that)g(could)g(hold)f(a)515 3635 y("far")f(p)r(oin)n(ter)h +(\(i.e.)36 b(a)24 b(co)r(de)g(p)r(oin)n(ter)g(that)h(can)f(address)f +(more)h(than)g(64)g(KB\),)g(as)g(w)n(ell)g(as)515 3735 +y(standard)29 b(names)i(for)f(all)g(prin)n(tf)h(and)f(scanf)h +(formatting)f(options)g(that)h(are)e(supp)r(orted)515 +3835 y(b)n(y)g(the)h Fo(<)p Fs(stdio.h)p Fo(>)p Fs(:)44 +b(Standard)35 b(IO)f(facilities)28 b Fq(\(p.)14 b(168\).)42 +b(As)30 b(the)g(library)e(do)r(es)h(not)515 3934 y(supp)r(ort)i(the)i +(full)f(range)f(of)g(con)n(v)n(ersion)f(sp)r(eci\034ers)h(from)g(ISO)h +(9899:1999,)d(only)i(those)515 4034 y(con)n(v)n(ersions)25 +b(that)i(are)g(actually)g(implemen)n(ted)h(will)g(b)r(e)g(listed)g +(here.)515 4181 y(The)i(idea)f(b)r(ehind)i(these)f(con)n(v)n(ersion)d +(macros)h(is)i(that,)h(for)e(eac)n(h)g(of)h(the)g(t)n(yp)r(es)g +(de\034ned)515 4280 y(b)n(y)d Fo(<)p Fs(stdin)m(t.h)f +Fq(\(p.)14 b(379\))p Fo(>)p Fq(,)26 b(a)h(macro)g(will)g(b)r(e)h +(supplied)g(that)f(p)r(ortably)g(allo)n(ws)f(format-)515 +4380 y(ting)j(an)g(ob)5 b(ject)29 b(of)g(that)h(t)n(yp)r(e)f(in)h +Fs(prin)m(tf\(\))g Fq(\(p.)14 b(180\))28 b(or)h Fs(scanf\(\))h +Fq(\(p.)14 b(180\))28 b(op)r(erations.)515 4480 y(Example:)656 +4689 y Fj(#include)37 b()656 4847 y(uint8_t)g(smallval;)656 +4925 y(int32_t)g(longval;)656 5004 y(...)p 515 5179 V +515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06) +e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 136 152 +TeXDict begin 136 151 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(136)p 515 236 +2865 4 v 656 523 a Fj(printf\("The)38 b(hexadecimal)g(value)f(of)f +(smallval)h(is)f(\045")g(PRIx8)903 602 y(",)g(the)g(decimal)h(value)g +(of)e(longval)j(is)d(\045")h(PRId32)h(".\\n",)903 681 +y(smallval,)h(longval\);)515 943 y Fs(F)-8 b(ar)32 b(p)s(oin)m(ters)f +(for)h(memory)f(access)i Fo(>)p Fs(64K)639 1129 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(in)m(t32_t)g(in)m(t_farptr_t)639 +1236 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t32_t)g(uin)m +(t_farptr_t)515 1498 y(macros)k(for)g(prin)m(tf)g(and)g(scanf)h(format) +f(sp)s(eci\034ers)515 1698 y Fq(F)-7 b(or)34 b(C++,)h(these)f(are)g +(only)g(included)h(if)g(__STDC_LIMIT_MA)n(CR)n(OS)d(is)j(de\034ned)515 +1798 y(b)r(efore)27 b(including)h Fo(<)p Fs(in)m(tt)m(yp)s(es.h)e +Fq(\(p.)14 b(363\))p Fo(>)p Fq(.)639 2008 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRId8)g Fq("d")639 2115 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIdLEAST8)g Fq("d")639 2222 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIdF)-11 b(AST8)29 +b Fq("d")639 2329 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIi8)f +Fq("i")639 2436 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiLEAST8)g +Fq("i")639 2543 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiF)-11 +b(AST8)28 b Fq("i")639 2650 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRId16)f Fq("d")639 2758 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIdLEAST16)g Fq("d")639 2865 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIdF)-11 b(AST16)28 b Fq("d")639 2972 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIi16)f Fq("i")639 3079 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIiLEAST16)g Fq("i")639 3186 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiF)-11 b(AST16)28 +b Fq("i")639 3293 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRId32)f +Fq("ld")639 3400 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIdLEAST32)g +Fq("ld")639 3507 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIdF)-11 +b(AST32)28 b Fq("ld")639 3614 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIi32)f Fq("li")639 3721 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIiLEAST32)g Fq("li")639 3828 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIiF)-11 b(AST32)28 b Fq("li")639 3935 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIdPTR)g Fq(PRId16)639 4043 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiPTR)g Fq(PRIi16)639 +4150 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIo8)f Fq("o")639 +4257 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoLEAST8)g +Fq("o")639 4364 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoF)-11 +b(AST8)28 b Fq("o")639 4471 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIu8)g Fq("u")639 4578 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIuLEAST8)g Fq("u")639 4685 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIuF)-11 b(AST8)29 b Fq("u")639 4792 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIx8)g Fq("x")639 4899 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIxLEAST8)h Fq("x")639 5006 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxF)-11 b(AST8)29 +b Fq("x")p 515 5179 V 515 5255 a Fp(Generated)c(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 137 153 +TeXDict begin 137 152 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(137)p 515 236 +2865 4 v 639 523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIX8)g +Fq("X")639 630 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXLEAST8)h +Fq("X")639 737 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXF)-11 +b(AST8)29 b Fq("X")639 843 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIo16)f Fq("o")639 950 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIoLEAST16)g Fq("o")639 1057 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIoF)-11 b(AST16)28 b Fq("o")639 1163 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIu16)f Fq("u")639 1270 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIuLEAST16)g Fq("u")639 1377 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuF)-11 b(AST16)28 +b Fq("u")639 1484 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIx16)g +Fq("x")639 1590 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxLEAST16)g +Fq("x")639 1697 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxF)-11 +b(AST16)29 b Fq("x")639 1804 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIX16)g Fq("X")639 1911 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIXLEAST16)g Fq("X")639 2017 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIXF)-11 b(AST16)29 b Fq("X")639 2124 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIo32)f Fq("lo")639 2231 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIoLEAST32)g Fq("lo")639 2338 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoF)-11 b(AST32)28 +b Fq("lo")639 2444 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIu32)f +Fq("lu")639 2551 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuLEAST32)g +Fq("lu")639 2658 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuF)-11 +b(AST32)28 b Fq("lu")639 2765 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIx32)g Fq("lx")639 2871 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIxLEAST32)g Fq("lx")639 2978 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIxF)-11 b(AST32)29 b Fq("lx")639 3085 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIX32)g Fq("lX")639 3192 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIXLEAST32)g Fq("lX")639 3298 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXF)-11 b(AST32)29 +b Fq("lX")639 3405 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoPTR)g +Fq(PRIo16)639 3512 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuPTR)g +Fq(PRIu16)639 3619 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxPTR)h +Fq(PRIx16)639 3725 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXPTR)g +Fq(PRIX16)639 3832 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNd16)f +Fq("d")639 3939 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNdLEAST16)g +Fq("d")639 4046 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNdF)-11 +b(AST16)28 b Fq("d")639 4152 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNi16)f Fq("i")639 4259 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNiLEAST16)f Fq("i")639 4366 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNiF)-11 b(AST16)28 b Fq("i")639 4473 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNd32)f Fq("ld")639 4579 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNdLEAST32)g Fq("ld")639 4686 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNdF)-11 b(AST32)28 +b Fq("ld")639 4793 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNi32)f +Fq("li")639 4899 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNiLEAST32)f +Fq("li")639 5006 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNiF)-11 +b(AST32)28 b Fq("li")p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 138 154 +TeXDict begin 138 153 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(138)p 515 236 +2865 4 v 639 523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNdPTR)g +Fq(SCNd16)639 631 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNiPTR)f +Fq(SCNi16)639 739 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNo16)f +Fq("o")639 847 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoLEAST16)f +Fq("o")639 955 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoF)-11 +b(AST16)28 b Fq("o")639 1063 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNu16)f Fq("u")639 1171 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuLEAST16)g Fq("u")639 1279 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuF)-11 b(AST16)28 b Fq("u")639 1386 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNx16)f Fq("x")639 1494 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNxLEAST16)g Fq("x")639 1602 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNxF)-11 b(AST16)28 +b Fq("x")639 1710 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNo32)f +Fq("lo")639 1818 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoLEAST32)f +Fq("lo")639 1926 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoF)-11 +b(AST32)28 b Fq("lo")639 2034 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNu32)f Fq("lu")639 2142 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuLEAST32)g Fq("lu")639 2250 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuF)-11 b(AST32)28 b Fq("lu")639 2358 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNx32)f Fq("lx")639 2466 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNxLEAST32)g Fq("lx")639 2574 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNxF)-11 b(AST32)28 +b Fq("lx")639 2682 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoPTR)g +Fq(SCNo16)639 2790 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNuPTR)g +Fq(SCNu16)639 2897 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNxPTR)g +Fq(SCNx16)515 3160 y Fs(22.5.2)93 b(De\034ne)32 b(Do)s(cumen)m(tation) +515 3361 y(22.5.2.1)92 b(#de\034ne)31 b(PRId16)h("d")515 +3508 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n(t16_t)515 +3771 y Fs(22.5.2.2)92 b(#de\034ne)31 b(PRId32)h("ld")515 +3918 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n(t32_t)515 +4181 y Fs(22.5.2.3)92 b(#de\034ne)31 b(PRId8)h("d")515 +4328 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n(t8_t)515 +4591 y Fs(22.5.2.4)92 b(#de\034ne)31 b(PRIdF)-11 b(AST16)33 +b("d")515 4737 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n +(t_fast16_t)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 139 155 +TeXDict begin 139 154 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(139)p 515 236 +2865 4 v 515 523 a(22.5.2.5)92 b(#de\034ne)31 b(PRIdF)-11 +b(AST32)33 b("ld")515 670 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g +(in)n(t_fast32_t)515 933 y Fs(22.5.2.6)92 b(#de\034ne)31 +b(PRIdF)-11 b(AST8)33 b("d")515 1080 y Fq(decimal)27 +b(prin)n(tf)h(format)f(for)g(in)n(t_fast8_t)515 1343 +y Fs(22.5.2.7)92 b(#de\034ne)31 b(PRIdLEAST16)h("d")515 +1490 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n(t_least16_t)515 +1753 y Fs(22.5.2.8)92 b(#de\034ne)31 b(PRIdLEAST32)h("ld")515 +1900 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n(t_least32_t)515 +2163 y Fs(22.5.2.9)92 b(#de\034ne)31 b(PRIdLEAST8)i("d")515 +2309 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n(t_least8_t)515 +2572 y Fs(22.5.2.10)92 b(#de\034ne)31 b(PRIdPTR)h(PRId16)515 +2719 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(in)n(tptr_t)515 +2982 y Fs(22.5.2.11)92 b(#de\034ne)31 b(PRIi16)g("i")515 +3129 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f(for)g(in)n(t16_t)515 +3392 y Fs(22.5.2.12)92 b(#de\034ne)31 b(PRIi32)g("li")515 +3539 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f(for)g(in)n(t32_t)515 +3802 y Fs(22.5.2.13)92 b(#de\034ne)31 b(PRIi8)g("i")515 +3949 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f(for)g(in)n(t8_t)515 +4212 y Fs(22.5.2.14)92 b(#de\034ne)31 b(PRIiF)-11 b(AST16)32 +b("i")515 4359 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f(for)g(in)n +(t_fast16_t)515 4622 y Fs(22.5.2.15)92 b(#de\034ne)31 +b(PRIiF)-11 b(AST32)32 b("li")515 4769 y Fq(in)n(teger)26 +b(prin)n(tf)i(format)f(for)g(in)n(t_fast32_t)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 140 156 +TeXDict begin 140 155 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(140)p 515 236 +2865 4 v 515 523 a(22.5.2.16)92 b(#de\034ne)31 b(PRIiF)-11 +b(AST8)32 b("i")515 670 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f(for)g +(in)n(t_fast8_t)515 933 y Fs(22.5.2.17)92 b(#de\034ne)31 +b(PRIiLEAST16)h("i")515 1080 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f +(for)g(in)n(t_least16_t)515 1343 y Fs(22.5.2.18)92 b(#de\034ne)31 +b(PRIiLEAST32)h("li")515 1490 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f +(for)g(in)n(t_least32_t)515 1753 y Fs(22.5.2.19)92 b(#de\034ne)31 +b(PRIiLEAST8)h("i")515 1900 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f +(for)g(in)n(t_least8_t)515 2163 y Fs(22.5.2.20)92 b(#de\034ne)31 +b(PRIiPTR)h(PRIi16)515 2309 y Fq(in)n(teger)26 b(prin)n(tf)i(format)f +(for)g(in)n(tptr_t)515 2572 y Fs(22.5.2.21)92 b(#de\034ne)31 +b(PRIo16)g("o")515 2719 y Fq(o)r(ctal)c(prin)n(tf)h(format)f(for)g(uin) +n(t16_t)515 2982 y Fs(22.5.2.22)92 b(#de\034ne)31 b(PRIo32)g("lo")515 +3129 y Fq(o)r(ctal)c(prin)n(tf)h(format)f(for)g(uin)n(t32_t)515 +3392 y Fs(22.5.2.23)92 b(#de\034ne)31 b(PRIo8)g("o")515 +3539 y Fq(o)r(ctal)c(prin)n(tf)h(format)f(for)g(uin)n(t8_t)515 +3802 y Fs(22.5.2.24)92 b(#de\034ne)31 b(PRIoF)-11 b(AST16)32 +b("o")515 3949 y Fq(o)r(ctal)27 b(prin)n(tf)h(format)f(for)g(uin)n +(t_fast16_t)515 4212 y Fs(22.5.2.25)92 b(#de\034ne)31 +b(PRIoF)-11 b(AST32)32 b("lo")515 4359 y Fq(o)r(ctal)27 +b(prin)n(tf)h(format)f(for)g(uin)n(t_fast32_t)515 4622 +y Fs(22.5.2.26)92 b(#de\034ne)31 b(PRIoF)-11 b(AST8)32 +b("o")515 4769 y Fq(o)r(ctal)27 b(prin)n(tf)h(format)f(for)g(uin)n +(t_fast8_t)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 141 157 +TeXDict begin 141 156 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(141)p 515 236 +2865 4 v 515 523 a(22.5.2.27)92 b(#de\034ne)31 b(PRIoLEAST16)h("o")515 +670 y Fq(o)r(ctal)27 b(prin)n(tf)h(format)f(for)g(uin)n(t_least16_t)515 +933 y Fs(22.5.2.28)92 b(#de\034ne)31 b(PRIoLEAST32)h("lo")515 +1080 y Fq(o)r(ctal)27 b(prin)n(tf)h(format)f(for)g(uin)n(t_least32_t) +515 1343 y Fs(22.5.2.29)92 b(#de\034ne)31 b(PRIoLEAST8)h("o")515 +1490 y Fq(o)r(ctal)27 b(prin)n(tf)h(format)f(for)g(uin)n(t_least8_t)515 +1753 y Fs(22.5.2.30)92 b(#de\034ne)31 b(PRIoPTR)h(PRIo16)515 +1900 y Fq(o)r(ctal)27 b(prin)n(tf)h(format)f(for)g(uin)n(tptr_t)515 +2163 y Fs(22.5.2.31)92 b(#de\034ne)31 b(PRIu16)g("u")515 +2309 y Fq(decimal)c(prin)n(tf)h(format)f(for)g(uin)n(t16_t)515 +2572 y Fs(22.5.2.32)92 b(#de\034ne)31 b(PRIu32)g("lu")515 +2719 y Fq(decimal)c(prin)n(tf)h(format)f(for)g(uin)n(t32_t)515 +2982 y Fs(22.5.2.33)92 b(#de\034ne)31 b(PRIu8)h("u")515 +3129 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(uin)n(t8_t)515 +3392 y Fs(22.5.2.34)92 b(#de\034ne)31 b(PRIuF)-11 b(AST16)32 +b("u")515 3539 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(uin)n +(t_fast16_t)515 3802 y Fs(22.5.2.35)92 b(#de\034ne)31 +b(PRIuF)-11 b(AST32)32 b("lu")515 3949 y Fq(decimal)27 +b(prin)n(tf)h(format)f(for)g(uin)n(t_fast32_t)515 4212 +y Fs(22.5.2.36)92 b(#de\034ne)31 b(PRIuF)-11 b(AST8)33 +b("u")515 4359 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(uin)n +(t_fast8_t)515 4622 y Fs(22.5.2.37)92 b(#de\034ne)31 +b(PRIuLEAST16)h("u")515 4769 y Fq(decimal)27 b(prin)n(tf)h(format)f +(for)g(uin)n(t_least16_t)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 142 158 +TeXDict begin 142 157 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(142)p 515 236 +2865 4 v 515 523 a(22.5.2.38)92 b(#de\034ne)31 b(PRIuLEAST32)h("lu")515 +670 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(uin)n(t_least32_t)515 +933 y Fs(22.5.2.39)92 b(#de\034ne)31 b(PRIuLEAST8)h("u")515 +1080 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(uin)n(t_least8_t)515 +1343 y Fs(22.5.2.40)92 b(#de\034ne)31 b(PRIuPTR)h(PRIu16)515 +1490 y Fq(decimal)27 b(prin)n(tf)h(format)f(for)g(uin)n(tptr_t)515 +1753 y Fs(22.5.2.41)92 b(#de\034ne)31 b(PRIX16)h("X")515 +1900 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n(tf)h(format)f(for)g +(uin)n(t16_t)515 2163 y Fs(22.5.2.42)92 b(#de\034ne)31 +b(PRIx16)h("x")515 2309 y Fq(hexadecimal)26 b(prin)n(tf)i(format)f(for) +g(uin)n(t16_t)515 2572 y Fs(22.5.2.43)92 b(#de\034ne)31 +b(PRIX32)h("lX")515 2719 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n +(tf)h(format)f(for)g(uin)n(t32_t)515 2982 y Fs(22.5.2.44)92 +b(#de\034ne)31 b(PRIx32)h("lx")515 3129 y Fq(hexadecimal)26 +b(prin)n(tf)i(format)f(for)g(uin)n(t32_t)515 3392 y Fs(22.5.2.45)92 +b(#de\034ne)31 b(PRIX8)h("X")515 3539 y Fq(upp)r(ercase)26 +b(hexadecimal)h(prin)n(tf)h(format)f(for)g(uin)n(t8_t)515 +3802 y Fs(22.5.2.46)92 b(#de\034ne)31 b(PRIx8)h("x")515 +3949 y Fq(hexadecimal)26 b(prin)n(tf)i(format)f(for)g(uin)n(t8_t)515 +4212 y Fs(22.5.2.47)92 b(#de\034ne)31 b(PRIXF)-11 b(AST16)33 +b("X")515 4359 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n(tf)h(format) +f(for)g(uin)n(t_fast16_t)515 4622 y Fs(22.5.2.48)92 b(#de\034ne)31 +b(PRIxF)-11 b(AST16)33 b("x")515 4769 y Fq(hexadecimal)26 +b(prin)n(tf)i(format)f(for)g(uin)n(t_fast16_t)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 143 159 +TeXDict begin 143 158 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(143)p 515 236 +2865 4 v 515 523 a(22.5.2.49)92 b(#de\034ne)31 b(PRIXF)-11 +b(AST32)33 b("lX")515 670 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n +(tf)h(format)f(for)g(uin)n(t_fast32_t)515 933 y Fs(22.5.2.50)92 +b(#de\034ne)31 b(PRIxF)-11 b(AST32)33 b("lx")515 1080 +y Fq(hexadecimal)26 b(prin)n(tf)i(format)f(for)g(uin)n(t_fast32_t)515 +1343 y Fs(22.5.2.51)92 b(#de\034ne)31 b(PRIXF)-11 b(AST8)33 +b("X")515 1490 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n(tf)h(format) +f(for)g(uin)n(t_fast8_t)515 1753 y Fs(22.5.2.52)92 b(#de\034ne)31 +b(PRIxF)-11 b(AST8)33 b("x")515 1900 y Fq(hexadecimal)26 +b(prin)n(tf)i(format)f(for)g(uin)n(t_fast8_t)515 2163 +y Fs(22.5.2.53)92 b(#de\034ne)31 b(PRIXLEAST16)h("X")515 +2309 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n(tf)h(format)f(for)g +(uin)n(t_least16_t)515 2572 y Fs(22.5.2.54)92 b(#de\034ne)31 +b(PRIxLEAST16)h("x")515 2719 y Fq(hexadecimal)26 b(prin)n(tf)i(format)f +(for)g(uin)n(t_least16_t)515 2982 y Fs(22.5.2.55)92 b(#de\034ne)31 +b(PRIXLEAST32)h("lX")515 3129 y Fq(upp)r(ercase)26 b(hexadecimal)h +(prin)n(tf)h(format)f(for)g(uin)n(t_least32_t)515 3392 +y Fs(22.5.2.56)92 b(#de\034ne)31 b(PRIxLEAST32)h("lx")515 +3539 y Fq(hexadecimal)26 b(prin)n(tf)i(format)f(for)g(uin)n +(t_least32_t)515 3802 y Fs(22.5.2.57)92 b(#de\034ne)31 +b(PRIXLEAST8)h("X")515 3949 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n +(tf)h(format)f(for)g(uin)n(t_least8_t)515 4212 y Fs(22.5.2.58)92 +b(#de\034ne)31 b(PRIxLEAST8)i("x")515 4359 y Fq(hexadecimal)26 +b(prin)n(tf)i(format)f(for)g(uin)n(t_least8_t)515 4622 +y Fs(22.5.2.59)92 b(#de\034ne)31 b(PRIXPTR)h(PRIX16)515 +4769 y Fq(upp)r(ercase)26 b(hexadecimal)h(prin)n(tf)h(format)f(for)g +(uin)n(tptr_t)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 144 160 +TeXDict begin 144 159 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(144)p 515 236 +2865 4 v 515 523 a(22.5.2.60)92 b(#de\034ne)31 b(PRIxPTR)i(PRIx16)515 +670 y Fq(hexadecimal)26 b(prin)n(tf)i(format)f(for)g(uin)n(tptr_t)515 +933 y Fs(22.5.2.61)92 b(#de\034ne)31 b(SCNd16)g("d")515 +1080 y Fq(decimal)c(scanf)g(format)g(for)g(in)n(t16_t)515 +1343 y Fs(22.5.2.62)92 b(#de\034ne)31 b(SCNd32)g("ld")515 +1490 y Fq(decimal)c(scanf)g(format)g(for)g(in)n(t32_t)515 +1753 y Fs(22.5.2.63)92 b(#de\034ne)31 b(SCNdF)-11 b(AST16)32 +b("d")515 1900 y Fq(decimal)27 b(scanf)g(format)g(for)g(in)n +(t_fast16_t)515 2163 y Fs(22.5.2.64)92 b(#de\034ne)31 +b(SCNdF)-11 b(AST32)32 b("ld")515 2309 y Fq(decimal)27 +b(scanf)g(format)g(for)g(in)n(t_fast32_t)515 2572 y Fs(22.5.2.65)92 +b(#de\034ne)31 b(SCNdLEAST16)h("d")515 2719 y Fq(decimal)27 +b(scanf)g(format)g(for)g(in)n(t_least16_t)515 2982 y +Fs(22.5.2.66)92 b(#de\034ne)31 b(SCNdLEAST32)h("ld")515 +3129 y Fq(decimal)27 b(scanf)g(format)g(for)g(in)n(t_least32_t)515 +3392 y Fs(22.5.2.67)92 b(#de\034ne)31 b(SCNdPTR)h(SCNd16)515 +3539 y Fq(decimal)27 b(scanf)g(format)g(for)g(in)n(tptr_t)515 +3802 y Fs(22.5.2.68)92 b(#de\034ne)31 b(SCNi16)f("i")515 +3949 y Fq(generic-in)n(teger)25 b(scanf)i(format)g(for)g(in)n(t16_t)515 +4212 y Fs(22.5.2.69)92 b(#de\034ne)31 b(SCNi32)f("li")515 +4359 y Fq(generic-in)n(teger)25 b(scanf)i(format)g(for)g(in)n(t32_t)515 +4622 y Fs(22.5.2.70)92 b(#de\034ne)31 b(SCNiF)-11 b(AST16)32 +b("i")515 4769 y Fq(generic-in)n(teger)25 b(scanf)i(format)g(for)g(in)n +(t_fast16_t)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 145 161 +TeXDict begin 145 160 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(145)p 515 236 +2865 4 v 515 523 a(22.5.2.71)92 b(#de\034ne)31 b(SCNiF)-11 +b(AST32)32 b("li")515 670 y Fq(generic-in)n(teger)25 +b(scanf)i(format)g(for)g(in)n(t_fast32_t)515 933 y Fs(22.5.2.72)92 +b(#de\034ne)31 b(SCNiLEAST16)g("i")515 1080 y Fq(generic-in)n(teger)25 +b(scanf)i(format)g(for)g(in)n(t_least16_t)515 1343 y +Fs(22.5.2.73)92 b(#de\034ne)31 b(SCNiLEAST32)g("li")515 +1490 y Fq(generic-in)n(teger)25 b(scanf)i(format)g(for)g(in)n +(t_least32_t)515 1753 y Fs(22.5.2.74)92 b(#de\034ne)31 +b(SCNiPTR)g(SCNi16)515 1900 y Fq(generic-in)n(teger)25 +b(scanf)i(format)g(for)g(in)n(tptr_t)515 2163 y Fs(22.5.2.75)92 +b(#de\034ne)31 b(SCNo16)g("o")515 2309 y Fq(o)r(ctal)c(scanf)g(format)g +(for)g(uin)n(t16_t)515 2572 y Fs(22.5.2.76)92 b(#de\034ne)31 +b(SCNo32)g("lo")515 2719 y Fq(o)r(ctal)c(scanf)g(format)g(for)g(uin)n +(t32_t)515 2982 y Fs(22.5.2.77)92 b(#de\034ne)31 b(SCNoF)-11 +b(AST16)32 b("o")515 3129 y Fq(o)r(ctal)27 b(scanf)g(format)g(for)g +(uin)n(t_fast16_t)515 3392 y Fs(22.5.2.78)92 b(#de\034ne)31 +b(SCNoF)-11 b(AST32)32 b("lo")515 3539 y Fq(o)r(ctal)27 +b(scanf)g(format)g(for)g(uin)n(t_fast32_t)515 3802 y +Fs(22.5.2.79)92 b(#de\034ne)31 b(SCNoLEAST16)g("o")515 +3949 y Fq(o)r(ctal)c(scanf)g(format)g(for)g(uin)n(t_least16_t)515 +4212 y Fs(22.5.2.80)92 b(#de\034ne)31 b(SCNoLEAST32)g("lo")515 +4359 y Fq(o)r(ctal)c(scanf)g(format)g(for)g(uin)n(t_least32_t)515 +4622 y Fs(22.5.2.81)92 b(#de\034ne)31 b(SCNoPTR)g(SCNo16)515 +4769 y Fq(o)r(ctal)c(scanf)g(format)g(for)g(uin)n(tptr_t)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 146 162 +TeXDict begin 146 161 bop 515 203 a Fs(22.5)94 b Fo(<)p +Fs(in)m(tt)m(yp)s(es.h)p Fo(>)p Fs(:)40 b(In)m(teger)32 +b(T)m(yp)s(e)h(con)m(v)m(ersions)793 b(146)p 515 236 +2865 4 v 515 523 a(22.5.2.82)92 b(#de\034ne)31 b(SCNu16)g("u")515 +670 y Fq(decimal)c(scanf)g(format)g(for)g(uin)n(t16_t)515 +933 y Fs(22.5.2.83)92 b(#de\034ne)31 b(SCNu32)g("lu")515 +1080 y Fq(decimal)c(scanf)g(format)g(for)g(uin)n(t32_t)515 +1343 y Fs(22.5.2.84)92 b(#de\034ne)31 b(SCNuF)-11 b(AST16)32 +b("u")515 1490 y Fq(decimal)27 b(scanf)g(format)g(for)g(uin)n +(t_fast16_t)515 1753 y Fs(22.5.2.85)92 b(#de\034ne)31 +b(SCNuF)-11 b(AST32)32 b("lu")515 1900 y Fq(decimal)27 +b(scanf)g(format)g(for)g(uin)n(t_fast32_t)515 2163 y +Fs(22.5.2.86)92 b(#de\034ne)31 b(SCNuLEAST16)h("u")515 +2309 y Fq(decimal)27 b(scanf)g(format)g(for)g(uin)n(t_least16_t)515 +2572 y Fs(22.5.2.87)92 b(#de\034ne)31 b(SCNuLEAST32)h("lu")515 +2719 y Fq(decimal)27 b(scanf)g(format)g(for)g(uin)n(t_least32_t)515 +2982 y Fs(22.5.2.88)92 b(#de\034ne)31 b(SCNuPTR)h(SCNu16)515 +3129 y Fq(decimal)27 b(scanf)g(format)g(for)g(uin)n(tptr_t)515 +3392 y Fs(22.5.2.89)92 b(#de\034ne)31 b(SCNx16)g("x")515 +3539 y Fq(hexadecimal)26 b(scanf)i(format)f(for)g(uin)n(t16_t)515 +3802 y Fs(22.5.2.90)92 b(#de\034ne)31 b(SCNx32)g("lx")515 +3949 y Fq(hexadecimal)26 b(scanf)i(format)f(for)g(uin)n(t32_t)515 +4212 y Fs(22.5.2.91)92 b(#de\034ne)31 b(SCNxF)-11 b(AST16)32 +b("x")515 4359 y Fq(hexadecimal)26 b(scanf)i(format)f(for)g(uin)n +(t_fast16_t)515 4622 y Fs(22.5.2.92)92 b(#de\034ne)31 +b(SCNxF)-11 b(AST32)32 b("lx")515 4769 y Fq(hexadecimal)26 +b(scanf)i(format)f(for)g(uin)n(t_fast32_t)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 147 163 +TeXDict begin 147 162 bop 515 203 a Fs(22.6)94 b Fo(<)p +Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1421 b(147)p +515 236 2865 4 v 515 523 a(22.5.2.93)92 b(#de\034ne)31 +b(SCNxLEAST16)h("x")515 670 y Fq(hexadecimal)26 b(scanf)i(format)f(for) +g(uin)n(t_least16_t)515 930 y Fs(22.5.2.94)92 b(#de\034ne)31 +b(SCNxLEAST32)h("lx")515 1077 y Fq(hexadecimal)26 b(scanf)i(format)f +(for)g(uin)n(t_least32_t)515 1338 y Fs(22.5.2.95)92 b(#de\034ne)31 +b(SCNxPTR)h(SCNx16)515 1484 y Fq(hexadecimal)26 b(scanf)i(format)f(for) +g(uin)n(tptr_t)515 1745 y Fs(22.5.3)93 b(T)m(yp)s(edef)32 +b(Do)s(cumen)m(tation)515 1945 y(22.5.3.1)92 b(t)m(yp)s(edef)32 +b(in)m(t32_t)g(in)m(t_farptr_t)515 2092 y Fq(signed)27 +b(in)n(teger)f(t)n(yp)r(e)i(that)g(can)f(hold)h(a)f(p)r(oin)n(ter)g +Fo(>)g Fq(64)g(KB)515 2353 y Fs(22.5.3.2)92 b(t)m(yp)s(edef)32 +b(uin)m(t32_t)g(uin)m(t_farptr_t)515 2500 y Fq(unsigned)27 +b(in)n(teger)g(t)n(yp)r(e)g(that)h(can)f(hold)h(a)f(p)r(oin)n(ter)g +Fo(>)g Fq(64)g(KB)515 2777 y Fn(22.6)112 b Fd(<)p Fn(math.h)p +Fd(>)p Fn(:)51 b(Mathematics)515 2977 y Fs(22.6.1)93 +b(Detailed)31 b(Description)550 3157 y Fj(#include)37 +b()515 3371 y Fq(This)27 b(header)g(\034le)h(declares)e(basic)h +(mathematics)g(constan)n(ts)g(and)g(functions.)506 3552 +y Fs(Notes:)776 3702 y Fk(\210)41 b Fq(In)31 b(order)e(to)h(access)g +(the)h(functions)g(delcared)e(herein,)j(it)f(is)f(usually)g(also)g(re-) +859 3801 y(quired)k(to)h(additionally)g(link)g(against)f(the)h(library) +f Fm(libm.a)p Fq(.)57 b(See)35 b(also)f(the)859 3901 +y(related)27 b Fs(F)-11 b(A)m(Q)32 b(en)m(try)e Fq(\(p.)14 +b(62\).)776 4028 y Fk(\210)41 b Fq(Math)29 b(functions)h(do)e(not)i +(raise)e(exceptions)g(and)h(do)g(not)g(c)n(hange)g(the)g +Fm(errno)859 4127 y Fq(v)-5 b(ariable.)45 b(Therefore)29 +b(the)i(ma)5 b(jorit)n(y)30 b(of)g(them)i(are)d(declared)h(with)h +(const)g(at-)859 4227 y(tribute,)d(for)f(b)r(etter)h(optimization)f(b)n +(y)g(GCC.)515 4487 y Fs(De\034nes)639 4671 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(M_PI)g Fq(3.1415926535897)o(93)o(23)o(84)o(62)o +(64)o(3)639 4776 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(M_SQR)-8 +b(T2)27 b Fq(1.4142135623730)o(95)o(04)o(88)o(01)o(68)o(87)639 +4881 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(NAN)f Fq(__builtin_nan\(""\)) +639 4985 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INFINITY)h +Fq(__builtin_inf\(\))p 515 5179 V 515 5255 a Fp(Generated)c(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 148 164 +TeXDict begin 148 163 bop 515 203 a Fs(22.6)94 b Fo(<)p +Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1421 b(148)p +515 236 2865 4 v 515 523 a(F)-8 b(unctions)639 704 y +Fk(\210)41 b Fq(double)28 b Fs(cos)f Fq(\(double)h(__x\))639 +807 y Fk(\210)41 b Fq(double)28 b Fs(fabs)g Fq(\(double)f(__x\))639 +910 y Fk(\210)41 b Fq(double)28 b Fs(fmo)s(d)f Fq(\(double)g(__x,)g +(double)g(__y\))639 1012 y Fk(\210)41 b Fq(double)28 +b Fs(mo)s(df)f Fq(\(double)g(__x,)g(double)g Fh(\003)p +Fq(__iptr\))639 1115 y Fk(\210)41 b Fq(double)28 b Fs(sin)f +Fq(\(double)g(__x\))639 1218 y Fk(\210)41 b Fq(double)28 +b Fs(sqrt)g Fq(\(double)g(__x\))639 1320 y Fk(\210)41 +b Fq(double)28 b Fs(tan)g Fq(\(double)g(__x\))639 1423 +y Fk(\210)41 b Fq(double)28 b Fs(\035o)s(or)f Fq(\(double)h(__x\))639 +1526 y Fk(\210)41 b Fq(double)28 b Fs(ceil)f Fq(\(double)g(__x\))639 +1628 y Fk(\210)41 b Fq(double)28 b Fs(frexp)g Fq(\(double)g(__x,)e(in)n +(t)i Fh(\003)p Fq(__p)r(exp\))639 1731 y Fk(\210)41 b +Fq(double)28 b Fs(ldexp)f Fq(\(double)h(__x,)e(in)n(t)i(__exp\))639 +1834 y Fk(\210)41 b Fq(double)28 b Fs(exp)g Fq(\(double)f(__x\))639 +1936 y Fk(\210)41 b Fq(double)28 b Fs(cosh)f Fq(\(double)h(__x\))639 +2039 y Fk(\210)41 b Fq(double)28 b Fs(sinh)f Fq(\(double)g(__x\))639 +2142 y Fk(\210)41 b Fq(double)28 b Fs(tanh)g Fq(\(double)g(__x\))639 +2244 y Fk(\210)41 b Fq(double)28 b Fs(acos)g Fq(\(double)f(__x\))639 +2347 y Fk(\210)41 b Fq(double)28 b Fs(asin)f Fq(\(double)h(__x\))639 +2450 y Fk(\210)41 b Fq(double)28 b Fs(atan)g Fq(\(double)g(__x\))639 +2552 y Fk(\210)41 b Fq(double)28 b Fs(atan2)g Fq(\(double)g(__y)-7 +b(,)27 b(double)g(__x\))639 2655 y Fk(\210)41 b Fq(double)28 +b Fs(log)e Fq(\(double)i(__x\))639 2758 y Fk(\210)41 +b Fq(double)28 b Fs(log10)e Fq(\(double)i(__x\))639 2860 +y Fk(\210)41 b Fq(double)28 b Fs(p)s(o)m(w)f Fq(\(double)h(__x,)e +(double)i(__y\))639 2963 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(isnan)f Fq(\(double)h(__x\))639 3066 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(isinf)f Fq(\(double)g(__x\))639 3168 +y Fk(\210)41 b Fq(double)28 b Fs(square)g Fq(\(double)g(__x\))639 +3271 y Fk(\210)41 b Fq(static)28 b(double)f Fs(cop)m(ysign)h +Fq(\(double)f(__x,)g(double)g(__y\))639 3374 y Fk(\210)41 +b Fq(double)28 b Fs(fdim)f Fq(\(double)g(__x,)g(double)g(__y\))639 +3476 y Fk(\210)41 b Fq(double)28 b Fs(fma)g Fq(\(double)f(__x,)g +(double)g(__y)-7 b(,)27 b(double)h(__z\))639 3579 y Fk(\210)41 +b Fq(double)28 b Fs(fmax)g Fq(\(double)g(__x,)e(double)i(__y\))639 +3682 y Fk(\210)41 b Fq(double)28 b Fs(fmin)f Fq(\(double)g(__x,)g +(double)g(__y\))639 3784 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sign)m(bit)f Fq(\(double)g(__x\))639 3887 y Fk(\210)41 +b Fq(double)28 b Fs(trunc)g Fq(\(double)g(__x\))639 3990 +y Fk(\210)41 b Fq(static)28 b(in)n(t)g Fs(is\034nite)e +Fq(\(double)i(__x\))639 4092 y Fk(\210)41 b Fq(double)28 +b Fs(h)m(yp)s(ot)g Fq(\(double)f(__x,)g(double)h(__y\))639 +4195 y Fk(\210)41 b Fq(double)28 b Fs(round)g Fq(\(double)f(__x\))639 +4298 y Fk(\210)41 b Fq(long)27 b Fs(lround)g Fq(\(double)h(__x\))639 +4400 y Fk(\210)41 b Fq(long)27 b Fs(lrin)m(t)h Fq(\(double)f(__x\))515 +4659 y Fs(22.6.2)93 b(De\034ne)32 b(Do)s(cumen)m(tation)515 +4859 y(22.6.2.1)92 b(#de\034ne)31 b(INFINITY)i(__builtin_inf\(\))515 +5006 y Fq(INFINITY)28 b(constan)n(t.)p 515 5179 V 515 +5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 149 165 +TeXDict begin 149 164 bop 515 203 a Fs(22.6)94 b Fo(<)p +Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1421 b(149)p +515 236 2865 4 v 515 523 a(22.6.2.2)92 b(#de\034ne)31 +b(M_PI)h(3.14159265358979323846264)o(3)515 670 y Fq(The)27 +b(constan)n(t)g Fm(pi)p Fq(.)515 933 y Fs(22.6.2.3)92 +b(#de\034ne)31 b(M_SQR)-8 b(T2)31 b(1.41421356237309504880168)o(87)515 +1080 y Fq(The)c(square)g(ro)r(ot)f(of)i(2.)515 1343 y +Fs(22.6.2.4)92 b(#de\034ne)31 b(NAN)h(__builtin_nan\(""\))515 +1490 y Fq(NAN)c(constan)n(t.)515 1753 y Fs(22.6.3)93 +b(F)-8 b(unction)32 b(Do)s(cumen)m(tation)515 1953 y(22.6.3.1)92 +b(double)31 b(acos)h(\(double)f Fc(__x)p Fs(\))515 2100 +y Fq(The)f Fs(acos\(\))h Fq(\(p.)14 b(149\))29 b(function)i(computes)f +(the)h(principal)e(v)-5 b(alue)31 b(of)f(the)g(arc)g(cosine)f(of)515 +2200 y Fl(__x)10 b Fq(.)35 b(The)26 b(returned)g(v)-5 +b(alue)25 b(is)h(in)h(the)f(range)f([0,)h(pi])g(radians.)35 +b(A)26 b(domain)g(error)e(o)r(ccurs)515 2299 y(for)j(argumen)n(ts)f +(not)i(in)f(the)h(range)e([-1,)h(+1].)515 2562 y Fs(22.6.3.2)92 +b(double)31 b(asin)h(\(double)f Fc(__x)p Fs(\))515 2709 +y Fq(The)37 b Fs(asin\(\))h Fq(\(p.)14 b(149\))37 b(function)h +(computes)g(the)g(principal)f(v)-5 b(alue)37 b(of)h(the)g(arc)f(sine)g +(of)515 2809 y Fl(__x)10 b Fq(.)38 b(The)29 b(returned)f(v)-5 +b(alue)28 b(is)h(in)f(the)h(range)e([-pi/2,)h(pi/2])g(radians.)38 +b(A)29 b(domain)f(error)515 2908 y(o)r(ccurs)e(for)h(argumen)n(ts)g +(not)g(in)h(the)g(range)e([-1,)h(+1].)515 3171 y Fs(22.6.3.3)92 +b(double)31 b(atan)i(\(double)e Fc(__x)p Fs(\))515 3318 +y Fq(The)25 b Fs(atan\(\))h Fq(\(p.)14 b(149\))23 b(function)j +(computes)e(the)h(principal)g(v)-5 b(alue)24 b(of)h(the)g(arc)f(tangen) +n(t)g(of)515 3418 y Fl(__x)10 b Fq(.)35 b(The)28 b(returned)f(v)-5 +b(alue)28 b(is)f(in)h(the)g(range)e([-pi/2,)h(pi/2])f(radians.)515 +3681 y Fs(22.6.3.4)92 b(double)31 b(atan2)i(\(double)e +Fc(__y)p Fs(,)62 b(double)30 b Fc(__x)p Fs(\))515 3828 +y Fq(The)f Fs(atan2\(\))g Fq(\(p.)14 b(149\))28 b(function)h(computes)g +(the)g(principal)f(v)-5 b(alue)29 b(of)g(the)g(arc)f(tangen)n(t)515 +3927 y(of)c Fl(__y)j(/)h(__x)10 b Fq(,)24 b(using)g(the)h(signs)f(of)h +(b)r(oth)g(argumen)n(ts)e(to)i(determine)g(the)g(quadran)n(t)e(of)515 +4027 y(the)28 b(return)f(v)-5 b(alue.)36 b(The)28 b(returned)f(v)-5 +b(alue)28 b(is)f(in)h(the)g(range)e([-pi,)i(+pi])f(radians.)515 +4290 y Fs(22.6.3.5)92 b(double)31 b(ceil)g(\(double)g +Fc(__x)p Fs(\))515 4437 y Fq(The)e Fs(ceil\(\))f Fq(\(p.)14 +b(149\))28 b(function)h(returns)f(the)h(smallest)f(in)n(tegral)g(v)-5 +b(alue)28 b(greater)f(than)i(or)515 4537 y(equal)e(to)g +Fl(__x)10 b Fq(,)27 b(expressed)f(as)h(a)g(\035oating-p)r(oin)n(t)g(n)n +(um)n(b)r(er.)515 4800 y Fs(22.6.3.6)92 b(static)76 b(double)e(cop)m +(ysign)h(\(double)g Fc(__x)p Fs(,)170 b(double)74 b Fc(__y)p +Fs(\))515 4899 y Fm([static])p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 150 166 +TeXDict begin 150 165 bop 515 203 a Fs(22.6)94 b Fo(<)p +Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1421 b(150)p +515 236 2865 4 v 515 523 a Fq(The)23 b Fs(cop)m(ysign\(\))g +Fq(\(p.)14 b(149\))22 b(function)i(returns)e Fl(__x)32 +b Fq(but)24 b(with)g(the)f(sign)g(of)g Fl(__y)7 b Fq(.)35 +b(They)515 623 y(w)n(ork)26 b(ev)n(en)h(if)h Fl(__x)36 +b Fq(or)27 b Fl(__y)35 b Fq(are)26 b(NaN)i(or)f(zero.)515 +886 y Fs(22.6.3.7)92 b(double)31 b(cos)h(\(double)f Fc(__x)p +Fs(\))515 1033 y Fq(The)c Fs(cos\(\))h Fq(\(p.)14 b(150\))27 +b(function)h(returns)f(the)h(cosine)e(of)i Fl(__x)10 +b Fq(,)27 b(measured)f(in)i(radians.)515 1296 y Fs(22.6.3.8)92 +b(double)31 b(cosh)h(\(double)f Fc(__x)p Fs(\))515 1442 +y Fq(The)c Fs(cosh\(\))h Fq(\(p.)14 b(150\))27 b(function)h(returns)f +(the)h(h)n(yp)r(erb)r(olic)f(cosine)g(of)g Fl(__x)10 +b Fq(.)515 1705 y Fs(22.6.3.9)92 b(double)31 b(exp)h(\(double)f +Fc(__x)p Fs(\))515 1852 y Fq(The)c Fs(exp\(\))h Fq(\(p.)14 +b(150\))27 b(function)h(returns)f(the)h(exp)r(onen)n(tial)f(v)-5 +b(alue)27 b(of)h Fl(__x)10 b Fq(.)515 2115 y Fs(22.6.3.10)92 +b(double)31 b(fabs)h(\(double)f Fc(__x)p Fs(\))515 2262 +y Fq(The)37 b Fs(fabs\(\))g Fq(\(p.)14 b(150\))36 b(function)i +(computes)e(the)i(absolute)e(v)-5 b(alue)37 b(of)g(a)f(\035oating-p)r +(oin)n(t)515 2362 y(n)n(um)n(b)r(er)27 b Fl(__x)10 b +Fq(.)515 2625 y Fs(22.6.3.11)92 b(double)31 b(fdim)g(\(double)g +Fc(__x)p Fs(,)62 b(double)31 b Fc(__y)p Fs(\))515 2772 +y Fq(The)e Fs(fdim\(\))g Fq(\(p.)14 b(150\))29 b(function)h(returns)e +Fl(max\(__x)i(-)h(__y,)h(0\))s Fq(.)43 b(If)30 b Fl(__x)38 +b Fq(or)29 b Fl(__y)36 b Fq(or)515 2871 y(b)r(oth)28 +b(are)e(NaN,)i(NaN)g(is)f(returned.)515 3134 y Fs(22.6.3.12)92 +b(double)31 b(\035o)s(or)g(\(double)g Fc(__x)p Fs(\))515 +3281 y Fq(The)21 b Fs(\035o)s(or\(\))g Fq(\(p.)14 b(150\))20 +b(function)i(returns)e(the)h(largest)f(in)n(tegral)g(v)-5 +b(alue)21 b(less)f(than)h(or)g(equal)515 3381 y(to)27 +b Fl(__x)10 b Fq(,)27 b(expressed)f(as)h(a)g(\035oating-p)r(oin)n(t)g +(n)n(um)n(b)r(er.)515 3644 y Fs(22.6.3.13)92 b(double)31 +b(fma)h(\(double)f Fc(__x)p Fs(,)62 b(double)30 b Fc(__y)p +Fs(,)62 b(double)31 b Fc(__z)p Fs(\))515 3791 y Fq(The)g +Fs(fma\(\))g Fq(\(p.)14 b(150\))30 b(function)h(p)r(erforms)f +(\035oating-p)r(oin)n(t)f(m)n(ultiply-add.)46 b(This)31 +b(is)g(the)515 3890 y(op)r(eration)c Fl(\(__x)i Fh(\003)h +Fl(__y\))g(+)g(__z)10 b Fq(,)28 b(but)h(the)f(in)n(termediate)g(result) +g(is)g(not)g(rounded)g(to)515 3990 y(the)22 b(destination)g(t)n(yp)r +(e.)36 b(This)22 b(can)g(sometimes)f(impro)n(v)n(e)g(the)i(precision)e +(of)h(a)g(calculation.)515 4353 y Fs(22.6.3.14)92 b(double)31 +b(fmax)h(\(double)f Fc(__x)p Fs(,)62 b(double)31 b Fc(__y)p +Fs(\))515 4499 y Fq(The)24 b Fs(fmax\(\))g Fq(\(p.)14 +b(150\))23 b(function)h(returns)f(the)h(greater)e(of)i(the)g(t)n(w)n(o) +f(v)-5 b(alues)23 b Fl(__x)33 b Fq(and)24 b Fl(_-)515 +4599 y(_y)7 b Fq(.)36 b(If)27 b(an)f(argumen)n(t)f(is)h(NaN,)g(the)h +(other)e(argumen)n(t)g(is)h(returned.)36 b(If)27 b(b)r(oth)f(argumen)n +(ts)515 4699 y(are)g(NaN,)i(NaN)g(is)f(returned.)p 515 +5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 151 167 +TeXDict begin 151 166 bop 515 203 a Fs(22.6)94 b Fo(<)p +Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1421 b(151)p +515 236 2865 4 v 515 523 a(22.6.3.15)92 b(double)31 b(fmin)g(\(double)g +Fc(__x)p Fs(,)62 b(double)31 b Fc(__y)p Fs(\))515 670 +y Fq(The)21 b Fs(fmin\(\))h Fq(\(p.)14 b(151\))20 b(function)i(returns) +f(the)h(lesser)f(of)g(the)h(t)n(w)n(o)f(v)-5 b(alues)21 +b Fl(__x)31 b Fq(and)21 b Fl(__y)7 b Fq(.)515 770 y(If)29 +b(an)f(argumen)n(t)g(is)g(NaN,)h(the)g(other)f(argumen)n(t)g(is)g +(returned.)40 b(If)29 b(b)r(oth)g(argumen)n(ts)e(are)515 +869 y(NaN,)g(NaN)h(is)g(returned.)515 1132 y Fs(22.6.3.16)92 +b(double)31 b(fmo)s(d)g(\(double)g Fc(__x)p Fs(,)62 b(double)31 +b Fc(__y)p Fs(\))515 1279 y Fq(The)36 b(function)g Fs(fmo)s(d\(\))g +Fq(\(p.)14 b(151\))35 b(returns)g(the)i(\035oating-p)r(oin)n(t)e +(remainder)f(of)i Fl(__x)h(/)515 1379 y(__y)7 b Fq(.)515 +1642 y Fs(22.6.3.17)92 b(double)31 b(frexp)h(\(double)f +Fc(__x)p Fs(,)62 b(in)m(t)32 b Fh(\003)f Fc(__p)-5 b(exp)p +Fs(\))515 1789 y Fq(The)24 b Fs(frexp\(\))h Fq(\(p.)14 +b(151\))24 b(function)h(breaks)e(a)h(\035oating-p)r(oin)n(t)f(n)n(um)n +(b)r(er)h(in)n(to)g(a)g(normalized)515 1888 y(fraction)38 +b(and)g(an)g(in)n(tegral)f(p)r(o)n(w)n(er)g(of)i(2.)69 +b(It)39 b(stores)e(the)i(in)n(teger)e(in)i(the)g Fm(int)e +Fq(ob)5 b(ject)515 1988 y(p)r(oin)n(ted)27 b(to)h(b)n(y)f +Fl(__p)l(exp)5 b Fq(.)515 2135 y(If)33 b Fl(__x)42 b +Fq(is)33 b(a)g(normal)f(\035oat)h(p)r(oin)n(t)g(n)n(um)n(b)r(er,)h(the) +g Fs(frexp\(\))g Fq(\(p.)14 b(151\))32 b(function)i(returns)515 +2234 y(the)e(v)-5 b(alue)32 b Fm(v)p Fq(,)h(suc)n(h)e(that)h +Fm(v)g Fq(has)f(a)h(magnitude)g(in)g(the)g(in)n(terv)-5 +b(al)32 b([1/2,)f(1\))h(or)f(zero,)h(and)515 2334 y Fl(__x)f +Fq(equals)22 b Fm(v)g Fq(times)h(2)g(raised)e(to)i(the)g(p)r(o)n(w)n +(er)e Fl(__p)l(exp)5 b Fq(.)35 b(If)23 b Fl(__x)32 b +Fq(is)23 b(zero,)f(b)r(oth)h(parts)f(of)515 2434 y(the)28 +b(result)f(are)g(zero.)35 b(If)28 b Fl(__x)37 b Fq(is)27 +b(not)h(a)f(\034nite)h(n)n(um)n(b)r(er,)g(the)g Fs(frexp\(\))g +Fq(\(p.)14 b(151\))27 b(returns)515 2533 y Fl(__x)36 +b Fq(as)27 b(is)h(and)f(stores)f(0)h(b)n(y)h Fl(__p)l(exp)5 +b Fq(.)506 2748 y Fs(Note:)676 2898 y Fq(This)26 b(implemen)n(tation)h +(p)r(ermits)f(a)g(zero)g(p)r(oin)n(ter)g(as)f(a)h(directiv)n(e)g(to)g +(skip)g(a)g(storing)676 2997 y(the)i(exp)r(onen)n(t.)515 +3343 y Fs(22.6.3.18)92 b(double)31 b(h)m(yp)s(ot)h(\(double)f +Fc(__x)p Fs(,)62 b(double)31 b Fc(__y)p Fs(\))515 3490 +y Fq(The)h Fs(h)m(yp)s(ot\(\))i Fq(\(p.)14 b(151\))32 +b(function)h(returns)f Fl(sqrt\(__x)p Fh(\003)p Fl(__x)f(+)j(__y)p +Fh(\003)p Fl(__y\))s Fq(.)51 b(This)32 b(is)515 3590 +y(the)g(length)f(of)g(the)h(h)n(yp)r(oten)n(use)f(of)g(a)g(righ)n(t)g +(triangle)f(with)i(sides)f(of)h(length)f Fl(__x)40 b +Fq(and)515 3690 y Fl(__y)7 b Fq(,)39 b(or)e(the)g(distance)g(of)g(the)h +(p)r(oin)n(t)f(\()p Fl(__x)10 b Fq(,)39 b Fl(__y)7 b +Fq(\))37 b(from)g(the)g(origin.)65 b(Using)37 b(this)515 +3789 y(function)32 b(instead)f(of)g(the)h(direct)g(form)n(ula)e(is)i +(wise,)g(since)f(the)h(error)d(is)j(m)n(uc)n(h)f(smaller.)515 +3889 y(No)c(under\035o)n(w)g(with)h(small)f Fl(__x)36 +b Fq(and)28 b Fl(__y)7 b Fq(.)37 b(No)27 b(o)n(v)n(er\035o)n(w)e(if)j +(result)g(is)f(in)h(range.)515 4152 y Fs(22.6.3.19)92 +b(static)32 b(in)m(t)g(is\034nite)e(\(double)h Fc(__x)p +Fs(\))70 b Fm([static])515 4299 y Fq(The)34 b Fs(is\034nite\(\))f +Fq(\(p.)14 b(151\))33 b(function)h(returns)f(a)h(nonzero)e(v)-5 +b(alue)34 b(if)g Fl(__x)43 b Fq(is)34 b(\034nite:)50 +b(not)515 4398 y(plus)27 b(or)g(min)n(us)h(in\034nit)n(y)-7 +b(,)28 b(and)f(not)h(NaN.)515 4661 y Fs(22.6.3.20)92 +b(in)m(t)32 b(isinf)f(\(double)g Fc(__x)p Fs(\))515 4808 +y Fq(The)26 b(function)g Fs(isinf\(\))f Fq(\(p.)14 b(151\))25 +b(returns)g(1)h(if)g(the)g(argumen)n(t)f Fl(__x)35 b +Fq(is)25 b(p)r(ositiv)n(e)h(in\034nit)n(y)-7 b(,)515 +4908 y(-1)27 b(if)h Fl(__x)36 b Fq(is)28 b(negativ)n(e)e(in\034nit)n(y) +-7 b(,)28 b(and)f(0)h(otherwise.)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 152 168 +TeXDict begin 152 167 bop 515 203 a Fs(22.6)94 b Fo(<)p +Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1421 b(152)p +515 236 2865 4 v 515 523 a(22.6.3.21)92 b(in)m(t)32 b(isnan)f(\(double) +g Fc(__x)p Fs(\))515 670 y Fq(The)23 b(function)h Fs(isnan\(\))g +Fq(\(p.)14 b(152\))22 b(returns)h(1)g(if)h(the)g(argumen)n(t)f +Fl(__x)32 b Fq(represen)n(ts)22 b(a)h("not-)515 770 y(a-n)n(um)n(b)r +(er")j(\(NaN\))i(ob)5 b(ject,)27 b(otherwise)g(0.)515 +1033 y Fs(22.6.3.22)92 b(double)31 b(ldexp)g(\(double)h +Fc(__x)p Fs(,)61 b(in)m(t)32 b Fc(__exp)p Fs(\))515 1179 +y Fq(The)24 b Fs(ldexp\(\))g Fq(\(p.)14 b(152\))24 b(function)g(m)n +(ultiplies)h(a)f(\035oating-p)r(oin)n(t)f(n)n(um)n(b)r(er)h(b)n(y)f(an) +h(in)n(tegral)515 1279 y(p)r(o)n(w)n(er)i(of)i(2.)515 +1426 y(The)j Fs(ldexp\(\))h Fq(\(p.)14 b(152\))30 b(function)i(returns) +f(the)h(v)-5 b(alue)31 b(of)g Fl(__x)40 b Fq(times)32 +b(2)f(raised)f(to)i(the)515 1526 y(p)r(o)n(w)n(er)26 +b Fl(__exp)5 b Fq(.)515 1789 y Fs(22.6.3.23)92 b(double)31 +b(log)g(\(double)g Fc(__x)p Fs(\))515 1935 y Fq(The)c +Fs(log\(\))g Fq(\(p.)14 b(152\))27 b(function)h(returns)f(the)h +(natural)f(logarithm)f(of)h(argumen)n(t)g Fl(__x)10 b +Fq(.)515 2198 y Fs(22.6.3.24)92 b(double)31 b(log10)f(\(double)h +Fc(__x)p Fs(\))515 2345 y Fq(The)e Fs(log10\(\))e Fq(\(p.)14 +b(152\))28 b(function)h(returns)f(the)i(logarithm)d(of)i(argumen)n(t)e +Fl(__x)38 b Fq(to)29 b(base)515 2445 y(10.)515 2708 y +Fs(22.6.3.25)92 b(long)31 b(lrin)m(t)h(\(double)f Fc(__x)p +Fs(\))515 2855 y Fq(The)e Fs(lrin)m(t\(\))g Fq(\(p.)14 +b(152\))28 b(function)i(rounds)e Fl(__x)38 b Fq(to)29 +b(the)g(nearest)f(in)n(teger,)h(rounding)f(the)515 2954 +y(halfw)n(a)n(y)23 b(cases)g(to)i(the)g(ev)n(en)f(in)n(teger)f +(direction.)35 b(\(That)25 b(is)g(b)r(oth)f(1.5)g(and)g(2.5)g(v)-5 +b(alues)24 b(are)515 3054 y(rounded)k(to)h(2\).)41 b(This)29 +b(function)h(is)e(similar)h(to)g(rin)n(t\(\))g(function,)h(but)f(it)h +(di\033ers)f(in)g(t)n(yp)r(e)515 3154 y(of)e(return)g(v)-5 +b(alue)28 b(and)f(in)h(that)g(an)f(o)n(v)n(er\035o)n(w)e(is)j(p)r +(ossible.)506 3366 y Fs(Returns:)676 3515 y Fq(The)20 +b(rounded)f(long)g(in)n(teger)g(v)-5 b(alue.)34 b(If)20 +b Fl(__x)28 b Fq(is)20 b(not)g(a)f(\034nite)h(n)n(um)n(b)r(er)f(or)g +(an)h(o)n(v)n(er\035o)n(w)676 3615 y(w)n(as,)27 b(this)h(realization)e +(returns)g(the)i Fm(LONG_MIN)d Fq(v)-5 b(alue)27 b(\(0x80000000\).)515 +3961 y Fs(22.6.3.26)92 b(long)31 b(lround)g(\(double)g +Fc(__x)p Fs(\))515 4108 y Fq(The)c Fs(lround\(\))f Fq(\(p.)14 +b(152\))26 b(function)i(rounds)e Fl(__x)36 b Fq(to)26 +b(the)i(nearest)d(in)n(teger,)h(but)i(rounds)515 4207 +y(halfw)n(a)n(y)36 b(cases)g(a)n(w)n(a)n(y)g(from)h(zero)f(\(instead)h +(of)h(to)f(the)h(nearest)e(ev)n(en)h(in)n(teger\).)66 +b(This)515 4307 y(function)28 b(is)f(similar)g(to)g Fs(round\(\))h +Fq(\(p.)14 b(153\))27 b(function,)h(but)g(it)g(di\033ers)f(in)h(t)n(yp) +r(e)f(of)h(return)515 4407 y(v)-5 b(alue)27 b(and)h(in)f(that)h(an)g(o) +n(v)n(er\035o)n(w)d(is)i(p)r(ossible.)506 4619 y Fs(Returns:)676 +4768 y Fq(The)20 b(rounded)f(long)g(in)n(teger)g(v)-5 +b(alue.)34 b(If)20 b Fl(__x)28 b Fq(is)20 b(not)g(a)f(\034nite)h(n)n +(um)n(b)r(er)f(or)g(an)h(o)n(v)n(er\035o)n(w)676 4868 +y(w)n(as,)27 b(this)h(realization)e(returns)g(the)i Fm(LONG_MIN)d +Fq(v)-5 b(alue)27 b(\(0x80000000\).)p 515 5179 V 515 +5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 153 169 +TeXDict begin 153 168 bop 515 203 a Fs(22.6)94 b Fo(<)p +Fs(math.h)p Fo(>)p Fs(:)41 b(Mathematics)1421 b(153)p +515 236 2865 4 v 515 523 a(22.6.3.27)92 b(double)31 b(mo)s(df)g +(\(double)g Fc(__x)p Fs(,)62 b(double)31 b Fh(\003)g +Fc(__iptr)p Fs(\))515 670 y Fq(The)26 b Fs(mo)s(df\(\))f +Fq(\(p.)14 b(153\))25 b(function)h(breaks)e(the)i(argumen)n(t)f +Fl(__x)35 b Fq(in)n(to)25 b(in)n(tegral)g(and)g(frac-)515 +770 y(tional)34 b(parts,)i(eac)n(h)d(of)i(whic)n(h)f(has)h(the)g(same)f +(sign)g(as)g(the)h(argumen)n(t.)56 b(It)35 b(stores)f(the)515 +869 y(in)n(tegral)26 b(part)h(as)g(a)g(double)h(in)f(the)h(ob)5 +b(ject)28 b(p)r(oin)n(ted)f(to)h(b)n(y)f Fl(__iptr)9 +b Fq(.)515 1016 y(The)27 b Fs(mo)s(df\(\))g Fq(\(p.)14 +b(153\))27 b(function)h(returns)f(the)h(signed)f(fractional)f(part)i +(of)f Fl(__x)10 b Fq(.)506 1233 y Fs(Note:)676 1382 y +Fq(This)28 b(implemen)n(tation)f(skips)g(writing)g(b)n(y)h(zero)e(p)r +(oin)n(ter.)515 1728 y Fs(22.6.3.28)92 b(double)31 b(p)s(o)m(w)g +(\(double)h Fc(__x)p Fs(,)61 b(double)31 b Fc(__y)p Fs(\))515 +1875 y Fq(The)c(function)h Fs(p)s(o)m(w\(\))g Fq(\(p.)14 +b(153\))27 b(returns)g(the)h(v)-5 b(alue)27 b(of)g Fl(__x)37 +b Fq(to)27 b(the)h(exp)r(onen)n(t)g Fl(__y)7 b Fq(.)515 +2138 y Fs(22.6.3.29)92 b(double)31 b(round)h(\(double)f +Fc(__x)p Fs(\))515 2285 y Fq(The)e Fs(round\(\))h Fq(\(p.)14 +b(153\))28 b(function)i(rounds)e Fl(__x)38 b Fq(to)29 +b(the)h(nearest)e(in)n(teger,)h(but)h(rounds)515 2384 +y(halfw)n(a)n(y)24 b(cases)h(a)n(w)n(a)n(y)f(from)h(zero)g(\(instead)g +(of)h(to)g(the)g(nearest)f(ev)n(en)g(in)n(teger\).)35 +b(Ov)n(er\035o)n(w)515 2484 y(is)27 b(imp)r(ossible.)506 +2696 y Fs(Returns:)676 2846 y Fq(The)d(rounded)e(v)-5 +b(alue.)36 b(If)23 b Fl(__x)33 b Fq(is)23 b(an)g(in)n(tegral)f(or)g +(in\034nite,)j Fl(__x)32 b Fq(itself)24 b(is)g(returned.)676 +2945 y(If)k Fl(__x)37 b Fq(is)27 b Fm(NaN)p Fq(,)f(then)j +Fm(NaN)d Fq(is)h(returned.)515 3291 y Fs(22.6.3.30)92 +b(in)m(t)32 b(sign)m(bit)f(\(double)g Fc(__x)p Fs(\))515 +3438 y Fq(The)24 b Fs(sign)m(bit\(\))g Fq(\(p.)14 b(153\))23 +b(function)i(returns)e(a)h(nonzero)f(v)-5 b(alue)24 b(if)h(the)f(v)-5 +b(alue)24 b(of)h Fl(__x)33 b Fq(has)515 3538 y(its)25 +b(sign)f(bit)h(set.)36 b(This)24 b(is)h(not)g(the)g(same)f(as)g(`)p +Fl(__x)33 b Fo(<)25 b Fq(0.0',)f(b)r(ecause)g(IEEE)j(754)c(\035oating) +515 3637 y(p)r(oin)n(t)i(allo)n(ws)f(zero)g(to)h(b)r(e)h(signed.)36 +b(The)25 b(comparison)e(`-0.0)i Fo(<)f Fq(0.0')h(is)g(false,)h(but)f +(`sign)n(bit)515 3737 y(\(-0.0\)')i(will)h(return)f(a)g(nonzero)f(v)-5 +b(alue.)506 3954 y Fs(Note:)676 4103 y Fq(This)28 b(implemen)n(tation)f +(returns)g(1)g(if)h(sign)f(bit)h(is)g(set.)515 4449 y +Fs(22.6.3.31)92 b(double)31 b(sin)g(\(double)g Fc(__x)p +Fs(\))515 4596 y Fq(The)c Fs(sin\(\))g Fq(\(p.)14 b(153\))27 +b(function)h(returns)f(the)h(sine)g(of)f Fl(__x)10 b +Fq(,)27 b(measured)f(in)i(radians.)515 4859 y Fs(22.6.3.32)92 +b(double)31 b(sinh)g(\(double)g Fc(__x)p Fs(\))515 5006 +y Fq(The)c Fs(sinh\(\))g Fq(\(p.)14 b(153\))27 b(function)h(returns)f +(the)h(h)n(yp)r(erb)r(olic)f(sine)h(of)f Fl(__x)10 b +Fq(.)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 154 170 +TeXDict begin 154 169 bop 515 203 a Fs(22.7)94 b Fo(<)p +Fs(setjmp.h)p Fo(>)p Fs(:)40 b(Non-lo)s(cal)30 b(goto)1286 +b(154)p 515 236 2865 4 v 515 523 a(22.6.3.33)92 b(double)31 +b(sqrt)h(\(double)f Fc(__x)p Fs(\))515 670 y Fq(The)c +Fs(sqrt\(\))i Fq(\(p.)14 b(154\))26 b(function)j(returns)d(the)i +(non-negativ)n(e)e(square)g(ro)r(ot)h(of)h Fl(__x)10 +b Fq(.)515 932 y Fs(22.6.3.34)92 b(double)31 b(square)h(\(double)f +Fc(__x)p Fs(\))515 1079 y Fq(The)c(function)h Fs(square\(\))h +Fq(\(p.)14 b(154\))27 b(returns)f Fl(__x)j Fh(\003)g +Fl(__x)10 b Fq(.)506 1291 y Fs(Note:)676 1441 y Fq(This)28 +b(function)g(do)r(es)f(not)h(b)r(elong)f(to)g(the)h(C)g(standard)e +(de\034nition.)515 1782 y Fs(22.6.3.35)92 b(double)31 +b(tan)h(\(double)f Fc(__x)p Fs(\))515 1929 y Fq(The)26 +b Fs(tan\(\))i Fq(\(p.)14 b(154\))25 b(function)i(returns)f(the)h +(tangen)n(t)f(of)g Fl(__x)10 b Fq(,)26 b(measured)f(in)i(radians.)515 +2191 y Fs(22.6.3.36)92 b(double)31 b(tanh)h(\(double)f +Fc(__x)p Fs(\))515 2338 y Fq(The)c Fs(tanh\(\))i Fq(\(p.)14 +b(154\))27 b(function)h(returns)e(the)i(h)n(yp)r(erb)r(olic)f(tangen)n +(t)g(of)h Fl(__x)10 b Fq(.)515 2600 y Fs(22.6.3.37)92 +b(double)31 b(trunc)i(\(double)e Fc(__x)p Fs(\))515 2747 +y Fq(The)d Fs(trunc\(\))h Fq(\(p.)14 b(154\))28 b(function)h(rounds)e +Fl(__x)37 b Fq(to)28 b(the)h(nearest)e(in)n(teger)g(not)i(larger)d(in) +515 2847 y(absolute)h(v)-5 b(alue.)515 3126 y Fn(22.7)112 +b Fd(<)p Fn(setjmp.h)p Fd(>)p Fn(:)51 b(Non-lo)s(cal)38 +b(goto)515 3326 y Fs(22.7.1)93 b(Detailed)31 b(Description)515 +3527 y Fq(While)38 b(the)h(C)f(language)e(has)h(the)i(dreaded)e +Fm(goto)f Fq(statemen)n(t,)41 b(it)e(can)e(only)h(b)r(e)g(used)515 +3626 y(to)33 b(jump)h(to)f(a)g(lab)r(el)h(in)f(the)h(same)f(\(lo)r +(cal\))g(function.)55 b(In)34 b(order)e(to)h(jump)h(directly)f(to)515 +3726 y(another)27 b(\(non-lo)r(cal\))g(function,)h(the)g(C)g(library)e +(pro)n(vides)h(the)h Fs(setjmp\(\))f Fq(\(p.)14 b(156\))27 +b(and)515 3826 y Fs(long)s(jmp\(\))j Fq(\(p.)14 b(155\))30 +b(functions.)49 b Fs(setjmp\(\))31 b Fq(\(p.)14 b(156\))30 +b(and)h Fs(long)s(jmp\(\))g Fq(\(p.)14 b(155\))30 b(are)515 +3925 y(useful)e(for)f(dealing)f(with)i(errors)e(and)h(in)n(terrupts)g +(encoun)n(tered)g(in)g(a)g(lo)n(w-lev)n(el)f(subrou-)515 +4025 y(tine)i(of)f(a)g(program.)506 4233 y Fs(Note:)676 +4382 y(setjmp\(\))h Fq(\(p.)14 b(156\))27 b(and)h Fs(long)s(jmp\(\))f +Fq(\(p.)14 b(155\))28 b(mak)n(e)f(programs)f(hard)h(to)i(under-)676 +4482 y(stand)f(and)f(main)n(tain.)36 b(If)28 b(p)r(ossible,)g(an)f +(alternativ)n(e)f(should)h(b)r(e)h(used.)676 4581 y Fs(long)s(jmp\(\))i +Fq(\(p.)14 b(155\))30 b(can)h(destro)n(y)f(c)n(hanges)f(made)i(to)g +(global)f(register)f(v)-5 b(ariables)676 4681 y(\(see)28 +b Fs(Ho)m(w)j(to)h(p)s(ermanen)m(tly)f(bind)h(a)g(v)-5 +b(ariable)32 b(to)g(a)g(register?)k Fq(\(p.)14 b(63\)\).)515 +4907 y(F)-7 b(or)23 b(a)h(v)n(ery)e(detailed)i(discussion)g(of)30 +b Fs(setjmp\(\))23 b Fq(\(p.)14 b(156\)/long)r(jmp\(\),)25 +b(see)e(Chapter)h(7)f(of)515 5006 y Fl(A)l(dvanc)l(e)l(d)30 +b(Pr)l(o)l(gr)l(amming)g(in)g(the)g(UNIX)f(Envir)l(onment)8 +b Fq(,)27 b(b)n(y)g(W.)h(Ric)n(hard)f(Stev)n(ens.)p 515 +5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 155 171 +TeXDict begin 155 170 bop 515 203 a Fs(22.7)94 b Fo(<)p +Fs(setjmp.h)p Fo(>)p Fs(:)40 b(Non-lo)s(cal)30 b(goto)1286 +b(155)p 515 236 2865 4 v 515 523 a Fq(Example:)656 732 +y Fj(#include)37 b()656 890 y(jmp_buf)g(env;)656 +1048 y(int)f(main)g(\(void\))656 1127 y({)797 1205 y(if)g(\(setjmp)h +(\(env\)\))797 1284 y({)938 1363 y(...)f(handle)h(error)g(...)797 +1442 y(})797 1600 y(while)g(\(1\))797 1679 y({)903 1757 +y(...)f(main)g(processing)i(loop)f(which)f(calls)h(foo\(\))g(some)f +(where)h(...)797 1836 y(})656 1915 y(})656 2073 y(...)656 +2231 y(void)f(foo)g(\(void\))656 2310 y({)797 2388 y(...)g(blah,)h +(blah,)f(blah)h(...)797 2546 y(if)f(\(err\))797 2625 +y({)938 2704 y(longjmp)h(\(env,)g(1\);)797 2783 y(})656 +2862 y(})515 3125 y Fs(F)-8 b(unctions)639 3311 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(setjmp)f Fq(\(jmp_buf)i(__jmpb\))639 +3419 y Fk(\210)41 b Fq(v)n(oid)105 b Fs(long)s(jmp)e +Fq(\(jmp_buf)k(__jmpb,)124 b(in)n(t)106 b(__ret\))e(__A)-7 +b(TTR_-)722 3519 y(NORETURN__)515 3782 y Fs(22.7.2)93 +b(F)-8 b(unction)32 b(Do)s(cumen)m(tation)515 3982 y(22.7.2.1)92 +b(v)m(oid)32 b(long)s(jmp)e(\(jmp_buf)j Fc(__jmpb)p Fs(,)62 +b(in)m(t)32 b Fc(__r)-5 b(et)p Fs(\))515 4129 y Fq(Non-lo)r(cal)26 +b(jump)j(to)e(a)g(sa)n(v)n(ed)f(stac)n(k)h(con)n(text.)550 +4338 y Fj(#include)37 b()515 4568 y Fs(long)s(jmp\(\))21 +b Fq(\(p.)14 b(155\))23 b(restores)e(the)i(en)n(vironmen)n(t)f(sa)n(v)n +(ed)g(b)n(y)g(the)i(last)e(call)h(of)29 b Fs(setjmp\(\))515 +4668 y Fq(\(p.)14 b(156\))20 b(with)i(the)g(corresp)r(onding)d +Fl(__jmpb)27 b Fq(argumen)n(t.)33 b(After)22 b Fs(long)s(jmp\(\))e +Fq(\(p.)14 b(155\))20 b(is)515 4767 y(completed,)g(program)d(execution) +h(con)n(tin)n(ues)g(as)h(if)g(the)g(corresp)r(onding)e(call)h(of)25 +b Fs(setjmp\(\))515 4867 y Fq(\(p.)14 b(156\))26 b(had)i(just)g +(returned)f(the)h(v)-5 b(alue)27 b Fl(__r)l(et)8 b Fq(.)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 156 172 +TeXDict begin 156 171 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(156)p 515 236 2865 4 v 506 497 a(Note:)676 +647 y(long)s(jmp\(\))27 b Fq(\(p.)14 b(155\))28 b(cannot)g(cause)g(0)g +(to)h(b)r(e)g(returned.)39 b(If)d Fs(long)s(jmp\(\))27 +b Fq(\(p.)14 b(155\))676 746 y(is)28 b(in)n(v)n(ok)n(ed)e(with)i(a)f +(second)g(argumen)n(t)f(of)i(0,)f(1)g(will)h(b)r(e)g(returned)f +(instead.)506 958 y Fs(P)m(arameters:)676 1108 y Fc(__jmpb)41 +b Fq(Information)27 b(sa)n(v)n(ed)f(b)n(y)h(a)g(previous)f(call)i(to)f +Fs(setjmp\(\))g Fq(\(p.)14 b(156\).)676 1241 y Fc(__r)-5 +b(et)41 b Fq(V)-7 b(alue)27 b(to)h(return)f(to)g(the)h(caller)f(of)34 +b Fs(setjmp\(\))27 b Fq(\(p.)14 b(156\).)506 1462 y Fs(Returns:)676 +1612 y Fq(This)28 b(function)g(nev)n(er)e(returns.)515 +1958 y Fs(22.7.2.2)92 b(in)m(t)32 b(setjmp)f(\(jmp_buf)h +Fc(__jmpb)p Fs(\))515 2104 y Fq(Sa)n(v)n(e)26 b(stac)n(k)h(con)n(text)g +(for)g(non-lo)r(cal)f(goto.)550 2314 y Fj(#include)37 +b()515 2543 y Fs(setjmp\(\))23 b Fq(\(p.)14 +b(156\))23 b(sa)n(v)n(es)f(the)i(stac)n(k)f(con)n(text/en)n(vironmen)n +(t)f(in)i Fl(__jmpb)29 b Fq(for)23 b(later)g(use)515 +2643 y(b)n(y)35 b Fs(long)s(jmp\(\))e Fq(\(p.)14 b(155\).)55 +b(The)35 b(stac)n(k)e(con)n(text)h(will)g(b)r(e)h(in)n(v)-5 +b(alidated)33 b(if)i(the)g(function)515 2743 y(whic)n(h)27 +b(called)g Fs(setjmp\(\))h Fq(\(p.)14 b(156\))26 b(returns.)506 +2959 y Fs(P)m(arameters:)676 3109 y Fc(__jmpb)41 b Fq(V)-7 +b(ariable)21 b(of)h(t)n(yp)r(e)h Fm(jmp_buf)c Fq(whic)n(h)j(holds)g +(the)h(stac)n(k)e(information)g(suc)n(h)859 3208 y(that)28 +b(the)g(en)n(vironmen)n(t)e(can)h(b)r(e)h(restored.)506 +3404 y Fs(Returns:)676 3554 y(setjmp\(\))36 b Fq(\(p.)14 +b(156\))36 b(returns)g(0)h(if)g(returning)f(directly)-7 +b(,)39 b(and)d(non-zero)f(when)i(re-)676 3653 y(turning)27 +b(from)h Fs(long)s(jmp\(\))e Fq(\(p.)14 b(155\))27 b(using)g(the)h(sa)n +(v)n(ed)e(con)n(text.)515 3933 y Fn(22.8)112 b Fd(<)p +Fn(stdin)m(t.h)p Fd(>)p Fn(:)50 b(Standard)39 b(In)m(teger)d(T)m(yp)s +(es)515 4133 y Fs(22.8.1)93 b(Detailed)31 b(Description)550 +4313 y Fj(#include)37 b()515 4543 y Fq(Use)27 +b([u]in)n(tN_t)h(if)g(y)n(ou)f(need)h(exactly)f(N)h(bits.)515 +4690 y(Since)c(these)f(t)n(yp)r(edefs)h(are)f(mandated)g(b)n(y)h(the)g +(C99)e(standard,)i(they)g(are)e(preferred)h(o)n(v)n(er)515 +4789 y(rolling)j(y)n(our)g(o)n(wn)h(t)n(yp)r(edefs.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 157 173 +TeXDict begin 157 172 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(157)p 515 236 2865 4 v 515 523 a(Exact-width)32 +b(in)m(teger)f(t)m(yp)s(es)515 724 y Fq(In)n(teger)26 +b(t)n(yp)r(es)i(ha)n(ving)e(exactly)h(the)h(sp)r(eci\034ed)g(width)639 +936 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b(signed)f(c)n(har)g +Fs(in)m(t8_t)639 1043 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b(unsigned)g(c)n(har)e Fs(uin)m(t8_t)639 1151 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b(signed)f(in)n(t)h Fs(in)m(t16_t)639 +1258 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b(unsigned)g(in)n(t)g +Fs(uin)m(t16_t)639 1366 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b(signed)f(long)g(in)n(t)h Fs(in)m(t32_t)639 1474 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b(unsigned)g(long)f(in)n(t)g Fs(uin)m(t32_t)639 +1581 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b(signed)f(long)g(long)g(in)n +(t)h Fs(in)m(t64_t)639 1689 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b(unsigned)g(long)f(long)f(in)n(t)i Fs(uin)m(t64_t)515 +1952 y(In)m(teger)k(t)m(yp)s(es)g(capable)g(of)g(holding)e(ob)5 +b(ject)32 b(p)s(oin)m(ters)515 2152 y Fq(These)27 b(allo)n(w)f(y)n(ou)h +(to)h(declare)e(v)-5 b(ariables)26 b(of)i(the)g(same)f(size)g(as)g(a)g +(p)r(oin)n(ter.)639 2364 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t16_t)g(in)m(tptr_t)639 2472 y Fk(\210)41 b +Fq(t)n(yp)r(edef)28 b Fs(uin)m(t16_t)g(uin)m(tptr_t)515 +2735 y(Minim)m(um-width)h(in)m(teger)i(t)m(yp)s(es)515 +2935 y Fq(In)n(teger)26 b(t)n(yp)r(es)i(ha)n(ving)e(at)i(least)f(the)h +(sp)r(eci\034ed)f(width)639 3147 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t8_t)g(in)m(t_least8_t)639 3255 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t8_t)g(uin)m(t_least8_t)639 +3362 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(in)m(t16_t)g(in)m +(t_least16_t)639 3470 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(uin)m(t16_t)g(uin)m(t_least16_t)639 3578 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(in)m(t32_t)g(in)m(t_least32_t)639 +3685 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t32_t)g(uin)m +(t_least32_t)639 3793 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t64_t)g(in)m(t_least64_t)639 3900 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t64_t)g(uin)m(t_least64_t)515 +4163 y(F)-8 b(astest)31 b(minim)m(um-width)f(in)m(teger)h(t)m(yp)s(es) +515 4364 y Fq(In)n(teger)26 b(t)n(yp)r(es)i(b)r(eing)f(usually)g +(fastest)h(ha)n(ving)e(at)i(least)f(the)h(sp)r(eci\034ed)g(width)639 +4576 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(in)m(t8_t)g(in)m +(t_fast8_t)639 4683 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(uin)m(t8_t)g(uin)m(t_fast8_t)639 4791 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(in)m(t16_t)g(in)m(t_fast16_t)639 +4899 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t16_t)g(uin)m +(t_fast16_t)639 5006 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t32_t)g(in)m(t_fast32_t)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 158 174 +TeXDict begin 158 173 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(158)p 515 236 2865 4 v 639 523 a Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t32_t)g(uin)m(t_fast32_t)639 +631 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(in)m(t64_t)g(in)m +(t_fast64_t)639 739 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(uin)m(t64_t)g(uin)m(t_fast64_t)515 1002 y(Greatest-width)j(in)m +(teger)h(t)m(yp)s(es)515 1202 y Fq(T)n(yp)r(es)25 b(designating)g(in)n +(teger)g(data)h(capable)f(of)h(represen)n(ting)e(an)n(y)h(v)-5 +b(alue)26 b(of)g(an)n(y)f(in)n(teger)515 1302 y(t)n(yp)r(e)i(in)h(the)g +(corresp)r(onding)e(signed)h(or)g(unsigned)g(category)639 +1515 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(in)m(t64_t)g(in)m(tmax_t) +639 1623 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t64_t)g(uin)m +(tmax_t)515 1886 y(Limits)i(of)i(sp)s(eci\034ed-width)e(in)m(teger)h(t) +m(yp)s(es)515 2087 y Fq(C++)48 b(implemen)n(tations)h(should)h +(de\034ne)f(these)h(macros)e(only)h(when)g(__STDC_-)515 +2186 y(LIMIT_MA)n(CR)n(OS)26 b(is)i(de\034ned)g(b)r(efore)f +Fo(<)p Fs(stdin)m(t.h)f Fq(\(p.)14 b(379\))p Fo(>)27 +b Fq(is)g(included)639 2400 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT8_MAX)g Fq(0x7f)639 2508 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT8_MIN)g Fq(\(-INT8_MAX)f(-)g(1\))639 2615 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT8_MAX)h Fq(\(__CONCA)-7 b(T\(INT8_MAX,)27 +b(U\))h Fh(\003)f Fq(2U)h(+)f(1U\))639 2723 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(INT16_MAX)g Fq(0x7\033f)639 2831 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT16_MIN)f Fq(\(-INT16_MAX)g(-)h +(1\))639 2939 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT16_MAX)g +Fq(\(__CONCA)-7 b(T\(INT16_MAX,)27 b(U\))h Fh(\003)f +Fq(2U)h(+)f(1U\))639 3047 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT32_MAX)g Fq(0x7\033\033\033fL)639 3155 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(INT32_MIN)f Fq(\(-INT32_MAX)g(-)h(1L\))639 +3263 y Fk(\210)41 b Fq(#de\034ne)48 b Fs(UINT32_MAX)g +Fq(\(__CONCA)-7 b(T\(INT32_MAX,)46 b(U\))i Fh(\003)f +Fq(2UL)g(+)722 3363 y(1UL\))639 3471 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT64_MAX)g Fq(0x7\033\033\033\033\033\033\033fLL)639 +3579 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT64_MIN)f +Fq(\(-INT64_MAX)g(-)h(1LL\))639 3686 y Fk(\210)41 b Fq(#de\034ne)e +Fs(UINT64_MAX)h Fq(\(__CONCA)-7 b(T\(INT64_MAX,)37 b(U\))j +Fh(\003)e Fq(2ULL)g(+)722 3786 y(1ULL\))515 4049 y Fs(Limits)30 +b(of)i(minim)m(um-width)d(in)m(teger)j(t)m(yp)s(es)639 +4236 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST8_MAX)h +Fq(INT8_MAX)639 4343 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(INT_LEAST8_MIN)h Fq(INT8_MIN)639 4451 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST8_MAX)i Fq(UINT8_MAX)639 +4559 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST16_MAX)h +Fq(INT16_MAX)639 4667 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_LEAST16_MIN)g Fq(INT16_MIN)639 4775 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST16_MAX)h Fq(UINT16_MAX)639 +4883 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST32_MAX)h +Fq(INT32_MAX)639 4991 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_LEAST32_MIN)g Fq(INT32_MIN)p 515 5179 V 515 +5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 159 175 +TeXDict begin 159 174 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(159)p 515 236 2865 4 v 639 523 a Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST32_MAX)h Fq(UINT32_MAX)639 +630 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST64_MAX)h +Fq(INT64_MAX)639 736 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(INT_LEAST64_MIN)g Fq(INT64_MIN)639 843 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST64_MAX)h Fq(UINT64_MAX)515 +1105 y Fs(Limits)h(of)i(fastest)g(minim)m(um-width)d(in)m(teger)i(t)m +(yp)s(es)639 1290 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 +b(AST8_MAX)29 b Fq(INT8_MAX)639 1397 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST8_MIN)29 b Fq(INT8_MIN)639 1503 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT_F)-11 b(AST8_MAX)30 +b Fq(UINT8_MAX)639 1610 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST16_MAX)29 b Fq(INT16_MAX)639 1717 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 b(AST16_MIN)29 +b Fq(INT16_MIN)639 1823 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINT_F)-11 b(AST16_MAX)30 b Fq(UINT16_MAX)639 1930 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 b(AST32_MAX)29 +b Fq(INT32_MAX)639 2037 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST32_MIN)29 b Fq(INT32_MIN)639 2143 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT_F)-11 b(AST32_MAX)30 +b Fq(UINT32_MAX)639 2250 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST64_MAX)29 b Fq(INT64_MAX)639 2357 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 b(AST64_MIN)29 +b Fq(INT64_MIN)639 2463 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINT_F)-11 b(AST64_MAX)30 b Fq(UINT64_MAX)515 2725 +y Fs(Limits)g(of)i(in)m(teger)f(t)m(yp)s(es)h(capable)g(of)g(holding)f +(ob)5 b(ject)32 b(p)s(oin)m(ters)639 2910 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(INTPTR_MAX)h Fq(INT16_MAX)639 +3017 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTPTR_MIN)g +Fq(INT16_MIN)639 3124 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINTPTR_MAX)h Fq(UINT16_MAX)515 3385 y Fs(Limits)h(of)i +(greatest-width)f(in)m(teger)g(t)m(yp)s(es)639 3571 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTMAX_MAX)g Fq(INT64_MAX)639 +3677 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTMAX_MIN)g +Fq(INT64_MIN)639 3784 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINTMAX_MAX)h Fq(UINT64_MAX)515 4046 y Fs(Limits)h(of)i(other)g +(in)m(teger)f(t)m(yp)s(es)515 4246 y Fq(C++)48 b(implemen)n(tations)h +(should)h(de\034ne)f(these)h(macros)e(only)h(when)g(__STDC_-)515 +4346 y(LIMIT_MA)n(CR)n(OS)26 b(is)i(de\034ned)g(b)r(efore)f +Fo(<)p Fs(stdin)m(t.h)f Fq(\(p.)14 b(379\))p Fo(>)27 +b Fq(is)g(included)639 4554 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PTRDIFF_MAX)h Fq(INT16_MAX)639 4661 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PTRDIFF_MIN)g Fq(INT16_MIN)639 +4767 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SIG_A)-8 b(TOMIC_MAX)29 +b Fq(INT8_MAX)639 4874 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SIG_A)-8 b(TOMIC_MIN)28 b Fq(INT8_MIN)639 4981 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(SIZE_MAX)g Fq(\(__CONCA)-7 +b(T\(INT16_MAX,)27 b(U\)\))p 515 5179 V 515 5255 a Fp(Generated)e(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 160 176 +TeXDict begin 160 175 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(160)p 515 236 2865 4 v 515 523 a(Macros)32 +b(for)g(in)m(teger)f(constan)m(ts)515 724 y Fq(C++)48 +b(implemen)n(tations)h(should)h(de\034ne)f(these)h(macros)e(only)h +(when)g(__STDC_-)515 823 y(CONST)-7 b(ANT_MA)n(CR)n(OS)27 +b(is)g(de\034ned)h(b)r(efore)f Fo(<)p Fs(stdin)m(t.h)g +Fq(\(p.)14 b(379\))p Fo(>)26 b Fq(is)i(included.)515 +970 y(These)j(de\034nitions)g(are)g(v)-5 b(alid)31 b(for)g(in)n(teger)g +(constan)n(ts)f(without)i(su\036x)f(and)h(for)f(macros)515 +1070 y(de\034ned)d(as)f(in)n(teger)f(constan)n(t)h(without)h(su\036x) +639 1283 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT8_C)p +Fq(\(v)-5 b(alue\))28 b(\(\()p Fs(in)m(t8_t)p Fq(\))h(v)-5 +b(alue\))639 1391 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT8_C)p +Fq(\(v)-5 b(alue\))29 b(\(\()p Fs(uin)m(t8_t)p Fq(\))f(__CONCA)-7 +b(T\(v)i(alue,)27 b(U\)\))639 1499 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT16_C)p Fq(\(v)-5 b(alue\))28 b(v)-5 b(alue)639 +1607 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT16_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)26 b(U\))639 +1715 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT32_C)p Fq(\(v)-5 +b(alue\))28 b(__CONCA)-7 b(T\(v)i(alue,)27 b(L\))639 +1823 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT32_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)26 b(UL\))639 +1930 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT64_C)p Fq(\(v)-5 +b(alue\))28 b(__CONCA)-7 b(T\(v)i(alue,)27 b(LL\))639 +2038 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT64_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)26 b(ULL\))639 +2146 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTMAX_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)26 b(LL\))639 +2254 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINTMAX_C)p +Fq(\(v)-5 b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)27 +b(ULL\))515 2517 y Fs(22.8.2)93 b(De\034ne)32 b(Do)s(cumen)m(tation)515 +2718 y(22.8.2.1)92 b(#de\034ne)31 b(INT16_C\(v)-5 b(alue\))32 +b(v)-5 b(alue)515 2865 y Fq(de\034ne)28 b(a)f(constan)n(t)f(of)i(t)n +(yp)r(e)g(in)n(t16_t)515 3128 y Fs(22.8.2.2)92 b(#de\034ne)31 +b(INT16_MAX)h(0x7\033f)515 3275 y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 +b(alue)27 b(an)h(in)n(t16_t)e(can)i(hold.)515 3538 y +Fs(22.8.2.3)92 b(#de\034ne)31 b(INT16_MIN)h(\(-INT16_MAX)f(-)h(1\))515 +3684 y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 +b(an)f(in)n(t16_t)g(can)g(hold.)515 3947 y Fs(22.8.2.4)92 +b(#de\034ne)31 b(INT32_C\(v)-5 b(alue\))32 b(__CONCA)-8 +b(T\(v)j(alue,)32 b(L\))515 4094 y Fq(de\034ne)c(a)f(constan)n(t)f(of)i +(t)n(yp)r(e)g(in)n(t32_t)515 4357 y Fs(22.8.2.5)92 b(#de\034ne)31 +b(INT32_MAX)h(0x7\033\033\033fL)515 4504 y Fq(largest)26 +b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(an)h(in)n(t32_t)e(can)i(hold.)515 +4767 y Fs(22.8.2.6)92 b(#de\034ne)31 b(INT32_MIN)h(\(-INT32_MAX)f(-)h +(1L\))515 4914 y Fq(smallest)27 b(negativ)n(e)f(v)-5 +b(alue)28 b(an)f(in)n(t32_t)g(can)g(hold.)p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 161 177 +TeXDict begin 161 176 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(161)p 515 236 2865 4 v 515 523 a(22.8.2.7)92 +b(#de\034ne)31 b(INT64_C\(v)-5 b(alue\))32 b(__CONCA)-8 +b(T\(v)j(alue,)32 b(LL\))515 670 y Fq(de\034ne)c(a)f(constan)n(t)f(of)i +(t)n(yp)r(e)g(in)n(t64_t)515 933 y Fs(22.8.2.8)92 b(#de\034ne)31 +b(INT64_MAX)h(0x7\033\033\033\033\033\033\033fLL)515 +1080 y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 b(alue)27 +b(an)h(in)n(t64_t)e(can)i(hold.)515 1343 y Fs(22.8.2.9)92 +b(#de\034ne)31 b(INT64_MIN)h(\(-INT64_MAX)f(-)h(1LL\))515 +1490 y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 +b(an)f(in)n(t64_t)g(can)g(hold.)515 1753 y Fs(22.8.2.10)92 +b(#de\034ne)31 b(INT8_C\(v)-5 b(alue\))32 b(\(\(in)m(t8_t\))g(v)-5 +b(alue\))515 1900 y Fq(de\034ne)28 b(a)f(constan)n(t)f(of)i(t)n(yp)r(e) +g(in)n(t8_t)515 2163 y Fs(22.8.2.11)92 b(#de\034ne)31 +b(INT8_MAX)h(0x7f)515 2309 y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 +b(alue)27 b(an)h(in)n(t8_t)f(can)g(hold.)515 2572 y Fs(22.8.2.12)92 +b(#de\034ne)31 b(INT8_MIN)h(\(-INT8_MAX)g(-)f(1\))515 +2719 y Fq(smallest)c(negativ)n(e)f(v)-5 b(alue)28 b(an)f(in)n(t8_t)g +(can)g(hold.)515 2982 y Fs(22.8.2.13)92 b(#de\034ne)31 +b(INT_F)-11 b(AST16_MAX)33 b(INT16_MAX)515 3129 y Fq(largest)26 +b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(an)h(in)n(t_fast16_t)e(can)h(hold.) +515 3392 y Fs(22.8.2.14)92 b(#de\034ne)31 b(INT_F)-11 +b(AST16_MIN)33 b(INT16_MIN)515 3539 y Fq(smallest)27 +b(negativ)n(e)f(v)-5 b(alue)28 b(an)f(in)n(t_fast16_t)f(can)h(hold.)515 +3802 y Fs(22.8.2.15)92 b(#de\034ne)31 b(INT_F)-11 b(AST32_MAX)33 +b(INT32_MAX)515 3949 y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 +b(alue)27 b(an)h(in)n(t_fast32_t)e(can)h(hold.)515 4212 +y Fs(22.8.2.16)92 b(#de\034ne)31 b(INT_F)-11 b(AST32_MIN)33 +b(INT32_MIN)515 4359 y Fq(smallest)27 b(negativ)n(e)f(v)-5 +b(alue)28 b(an)f(in)n(t_fast32_t)f(can)h(hold.)515 4622 +y Fs(22.8.2.17)92 b(#de\034ne)31 b(INT_F)-11 b(AST64_MAX)33 +b(INT64_MAX)515 4769 y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 +b(alue)27 b(an)h(in)n(t_fast64_t)e(can)h(hold.)p 515 +5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 162 178 +TeXDict begin 162 177 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(162)p 515 236 2865 4 v 515 523 a(22.8.2.18)92 +b(#de\034ne)31 b(INT_F)-11 b(AST64_MIN)33 b(INT64_MIN)515 +670 y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 b(an)f(in)n +(t_fast64_t)f(can)h(hold.)515 933 y Fs(22.8.2.19)92 b(#de\034ne)31 +b(INT_F)-11 b(AST8_MAX)33 b(INT8_MAX)515 1080 y Fq(largest)26 +b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(an)h(in)n(t_fast8_t)e(can)h(hold.) +515 1343 y Fs(22.8.2.20)92 b(#de\034ne)31 b(INT_F)-11 +b(AST8_MIN)33 b(INT8_MIN)515 1490 y Fq(smallest)27 b(negativ)n(e)f(v)-5 +b(alue)28 b(an)f(in)n(t_fast8_t)g(can)g(hold.)515 1753 +y Fs(22.8.2.21)92 b(#de\034ne)31 b(INT_LEAST16_MAX)i(INT16_MAX)515 +1900 y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 b(alue)27 +b(an)h(in)n(t_least16_t)d(can)j(hold.)515 2163 y Fs(22.8.2.22)92 +b(#de\034ne)31 b(INT_LEAST16_MIN)h(INT16_MIN)515 2309 +y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 b(an)f(in)n +(t_least16_t)f(can)h(hold.)515 2572 y Fs(22.8.2.23)92 +b(#de\034ne)31 b(INT_LEAST32_MAX)i(INT32_MAX)515 2719 +y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(an)h(in)n +(t_least32_t)d(can)j(hold.)515 2982 y Fs(22.8.2.24)92 +b(#de\034ne)31 b(INT_LEAST32_MIN)h(INT32_MIN)515 3129 +y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 b(an)f(in)n +(t_least32_t)f(can)h(hold.)515 3392 y Fs(22.8.2.25)92 +b(#de\034ne)31 b(INT_LEAST64_MAX)i(INT64_MAX)515 3539 +y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(an)h(in)n +(t_least64_t)d(can)j(hold.)515 3802 y Fs(22.8.2.26)92 +b(#de\034ne)31 b(INT_LEAST64_MIN)h(INT64_MIN)515 3949 +y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 b(an)f(in)n +(t_least64_t)f(can)h(hold.)515 4212 y Fs(22.8.2.27)92 +b(#de\034ne)31 b(INT_LEAST8_MAX)i(INT8_MAX)515 4359 y +Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(an)h(in)n(t_least8_t) +e(can)h(hold.)515 4622 y Fs(22.8.2.28)92 b(#de\034ne)31 +b(INT_LEAST8_MIN)i(INT8_MIN)515 4769 y Fq(smallest)27 +b(negativ)n(e)f(v)-5 b(alue)28 b(an)f(in)n(t_least8_t)f(can)h(hold.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 163 179 +TeXDict begin 163 178 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(163)p 515 236 2865 4 v 515 523 a(22.8.2.29)92 +b(#de\034ne)31 b(INTMAX_C\(v)-5 b(alue\))32 b(__CONCA)-8 +b(T\(v)j(alue,)32 b(LL\))515 670 y Fq(de\034ne)c(a)f(constan)n(t)f(of)i +(t)n(yp)r(e)g(in)n(tmax_t)515 933 y Fs(22.8.2.30)92 b(#de\034ne)31 +b(INTMAX_MAX)h(INT64_MAX)515 1080 y Fq(largest)26 b(p)r(ositiv)n(e)h(v) +-5 b(alue)27 b(an)h(in)n(tmax_t)f(can)g(hold.)515 1343 +y Fs(22.8.2.31)92 b(#de\034ne)31 b(INTMAX_MIN)h(INT64_MIN)515 +1490 y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 +b(an)f(in)n(tmax_t)g(can)g(hold.)515 1753 y Fs(22.8.2.32)92 +b(#de\034ne)31 b(INTPTR_MAX)i(INT16_MAX)515 1900 y Fq(largest)26 +b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(an)h(in)n(tptr_t)f(can)g(hold.)515 +2163 y Fs(22.8.2.33)92 b(#de\034ne)31 b(INTPTR_MIN)h(INT16_MIN)515 +2309 y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 +b(an)f(in)n(tptr_t)g(can)h(hold.)515 2572 y Fs(22.8.2.34)92 +b(#de\034ne)31 b(PTRDIFF_MAX)i(INT16_MAX)515 2719 y Fq(largest)26 +b(p)r(ositiv)n(e)h(v)-5 b(alue)27 b(a)h(ptrdi\033_t)g(can)f(hold.)515 +2982 y Fs(22.8.2.35)92 b(#de\034ne)31 b(PTRDIFF_MIN)h(INT16_MIN)515 +3129 y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 +b(a)f(ptrdi\033_t)h(can)f(hold.)515 3392 y Fs(22.8.2.36)92 +b(#de\034ne)31 b(SIG_A)-8 b(TOMIC_MAX)33 b(INT8_MAX)515 +3539 y Fq(largest)26 b(p)r(ositiv)n(e)h(v)-5 b(alue)27 +b(a)h(sig_atomic_t)d(can)i(hold.)515 3802 y Fs(22.8.2.37)92 +b(#de\034ne)31 b(SIG_A)-8 b(TOMIC_MIN)32 b(INT8_MIN)515 +3949 y Fq(smallest)27 b(negativ)n(e)f(v)-5 b(alue)28 +b(a)f(sig_atomic_t)f(can)h(hold.)515 4212 y Fs(22.8.2.38)92 +b(#de\034ne)26 b(SIZE_MAX)h(\(__CONCA)-8 b(T\(INT16_MAX,)27 +b(U\)\))515 4359 y Fq(largest)f(v)-5 b(alue)27 b(a)g(size_t)h(can)f +(hold.)515 4622 y Fs(22.8.2.39)92 b(#de\034ne)31 b(UINT16_C\(v)-5 +b(alue\))32 b(__CONCA)-8 b(T\(v)j(alue,)32 b(U\))515 +4769 y Fq(de\034ne)c(a)f(constan)n(t)f(of)i(t)n(yp)r(e)g(uin)n(t16_t)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 164 180 +TeXDict begin 164 179 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(164)p 515 236 2865 4 v 515 523 a(22.8.2.40)92 +b(#de\034ne)21 b(UINT16_MAX)h(\(__CONCA)-8 b(T\(INT16_MAX,)21 +b(U\))515 623 y Fh(\003)31 b Fs(2U)h(+)g(1U\))515 770 +y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(t16_t)e(can)i(hold.)515 +1033 y Fs(22.8.2.41)92 b(#de\034ne)31 b(UINT32_C\(v)-5 +b(alue\))32 b(__CONCA)-8 b(T\(v)j(alue,)32 b(UL\))515 +1179 y Fq(de\034ne)c(a)f(constan)n(t)f(of)i(t)n(yp)r(e)g(uin)n(t32_t) +515 1442 y Fs(22.8.2.42)92 b(#de\034ne)21 b(UINT32_MAX)h(\(__CONCA)-8 +b(T\(INT32_MAX,)21 b(U\))515 1542 y Fh(\003)31 b Fs(2UL)h(+)h(1UL\))515 +1689 y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(t32_t)e(can)i(hold.) +515 1952 y Fs(22.8.2.43)92 b(#de\034ne)31 b(UINT64_C\(v)-5 +b(alue\))32 b(__CONCA)-8 b(T\(v)j(alue,)32 b(ULL\))515 +2099 y Fq(de\034ne)c(a)f(constan)n(t)f(of)i(t)n(yp)r(e)g(uin)n(t64_t) +515 2362 y Fs(22.8.2.44)92 b(#de\034ne)21 b(UINT64_MAX)h(\(__CONCA)-8 +b(T\(INT64_MAX,)21 b(U\))515 2461 y Fh(\003)31 b Fs(2ULL)i(+)f(1ULL\)) +515 2608 y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(t64_t)e(can)i +(hold.)515 2871 y Fs(22.8.2.45)92 b(#de\034ne)22 b(UINT8_C\(v)-5 +b(alue\))22 b(\(\(uin)m(t8_t\))h(__CONCA)-8 b(T\(v)j(alue,)515 +2971 y(U\)\))515 3118 y Fq(de\034ne)28 b(a)f(constan)n(t)f(of)i(t)n(yp) +r(e)g(uin)n(t8_t)515 3381 y Fs(22.8.2.46)92 b(#de\034ne)29 +b(UINT8_MAX)h(\(__CONCA)-8 b(T\(INT8_MAX,)30 b(U\))g +Fh(\003)515 3480 y Fs(2U)i(+)g(1U\))515 3627 y Fq(largest)26 +b(v)-5 b(alue)27 b(an)h(uin)n(t8_t)f(can)g(hold.)515 +3890 y Fs(22.8.2.47)92 b(#de\034ne)31 b(UINT_F)-11 b(AST16_MAX)34 +b(UINT16_MAX)515 4037 y Fq(largest)26 b(v)-5 b(alue)27 +b(an)h(uin)n(t_fast16_t)e(can)h(hold.)515 4300 y Fs(22.8.2.48)92 +b(#de\034ne)31 b(UINT_F)-11 b(AST32_MAX)34 b(UINT32_MAX)515 +4447 y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(t_fast32_t)e(can)h +(hold.)515 4710 y Fs(22.8.2.49)92 b(#de\034ne)31 b(UINT_F)-11 +b(AST64_MAX)34 b(UINT64_MAX)515 4857 y Fq(largest)26 +b(v)-5 b(alue)27 b(an)h(uin)n(t_fast64_t)e(can)h(hold.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 165 181 +TeXDict begin 165 180 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(165)p 515 236 2865 4 v 515 523 a(22.8.2.50)92 +b(#de\034ne)31 b(UINT_F)-11 b(AST8_MAX)34 b(UINT8_MAX)515 +670 y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(t_fast8_t)e(can)h +(hold.)515 933 y Fs(22.8.2.51)92 b(#de\034ne)31 b(UINT_LEAST16_MAX)i +(UINT16_MAX)515 1080 y Fq(largest)26 b(v)-5 b(alue)27 +b(an)h(uin)n(t_least16_t)d(can)j(hold.)515 1343 y Fs(22.8.2.52)92 +b(#de\034ne)31 b(UINT_LEAST32_MAX)i(UINT32_MAX)515 1490 +y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(t_least32_t)d(can)j +(hold.)515 1753 y Fs(22.8.2.53)92 b(#de\034ne)31 b(UINT_LEAST64_MAX)i +(UINT64_MAX)515 1900 y Fq(largest)26 b(v)-5 b(alue)27 +b(an)h(uin)n(t_least64_t)d(can)j(hold.)515 2163 y Fs(22.8.2.54)92 +b(#de\034ne)31 b(UINT_LEAST8_MAX)i(UINT8_MAX)515 2309 +y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(t_least8_t)e(can)h(hold.) +515 2572 y Fs(22.8.2.55)92 b(#de\034ne)30 b(UINTMAX_C\(v)-5 +b(alue\))31 b(__CONCA)-8 b(T\(v)j(alue,)31 b(ULL\))515 +2819 y Fq(de\034ne)d(a)f(constan)n(t)f(of)i(t)n(yp)r(e)g(uin)n(tmax_t) +515 3082 y Fs(22.8.2.56)92 b(#de\034ne)31 b(UINTMAX_MAX)i(UINT64_MAX) +515 3229 y Fq(largest)26 b(v)-5 b(alue)27 b(an)h(uin)n(tmax_t)f(can)g +(hold.)515 3492 y Fs(22.8.2.57)92 b(#de\034ne)31 b(UINTPTR_MAX)i +(UINT16_MAX)515 3639 y Fq(largest)26 b(v)-5 b(alue)27 +b(an)h(uin)n(tptr_t)f(can)g(hold.)515 3902 y Fs(22.8.3)93 +b(T)m(yp)s(edef)32 b(Do)s(cumen)m(tation)515 4102 y(22.8.3.1)92 +b(t)m(yp)s(edef)32 b(signed)f(in)m(t)h(in)m(t16_t)515 +4249 y Fq(16-bit)27 b(signed)g(t)n(yp)r(e.)515 4512 y +Fs(22.8.3.2)92 b(t)m(yp)s(edef)32 b(signed)f(long)g(in)m(t)h(in)m +(t32_t)515 4659 y Fq(32-bit)27 b(signed)g(t)n(yp)r(e.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 166 182 +TeXDict begin 166 181 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(166)p 515 236 2865 4 v 515 523 a(22.8.3.3)92 +b(t)m(yp)s(edef)32 b(signed)f(long)g(long)g(in)m(t)g(in)m(t64_t)515 +670 y Fq(64-bit)c(signed)g(t)n(yp)r(e.)506 840 y Fs(Note:)676 +990 y Fq(This)h(t)n(yp)r(e)f(is)h(not)f(a)n(v)-5 b(ailable)27 +b(when)g(the)h(compiler)f(option)g(-min)n(t8)h(is)f(in)h(e\033ect.)515 +1289 y Fs(22.8.3.4)92 b(t)m(yp)s(edef)32 b(signed)f(c)m(har)i(in)m +(t8_t)515 1436 y Fq(8-bit)27 b(signed)g(t)n(yp)r(e.)515 +1693 y Fs(22.8.3.5)92 b(t)m(yp)s(edef)32 b(in)m(t16_t)g(in)m +(t_fast16_t)515 1840 y Fq(fastest)27 b(signed)g(in)n(t)h(with)g(at)g +(least)f(16)f(bits.)515 2098 y Fs(22.8.3.6)92 b(t)m(yp)s(edef)32 +b(in)m(t32_t)g(in)m(t_fast32_t)515 2245 y Fq(fastest)27 +b(signed)g(in)n(t)h(with)g(at)g(least)f(32)f(bits.)515 +2502 y Fs(22.8.3.7)92 b(t)m(yp)s(edef)32 b(in)m(t64_t)g(in)m +(t_fast64_t)515 2649 y Fq(fastest)27 b(signed)g(in)n(t)h(with)g(at)g +(least)f(64)f(bits.)506 2820 y Fs(Note:)676 2969 y Fq(This)i(t)n(yp)r +(e)f(is)h(not)f(a)n(v)-5 b(ailable)27 b(when)g(the)h(compiler)f(option) +g(-min)n(t8)h(is)f(in)h(e\033ect.)515 3268 y Fs(22.8.3.8)92 +b(t)m(yp)s(edef)32 b(in)m(t8_t)g(in)m(t_fast8_t)515 3415 +y Fq(fastest)27 b(signed)g(in)n(t)h(with)g(at)g(least)f(8)g(bits.)515 +3673 y Fs(22.8.3.9)92 b(t)m(yp)s(edef)32 b(in)m(t16_t)g(in)m +(t_least16_t)515 3820 y Fq(signed)27 b(in)n(t)h(with)g(at)f(least)g(16) +g(bits.)515 4077 y Fs(22.8.3.10)92 b(t)m(yp)s(edef)32 +b(in)m(t32_t)g(in)m(t_least32_t)515 4224 y Fq(signed)27 +b(in)n(t)h(with)g(at)f(least)g(32)g(bits.)515 4482 y +Fs(22.8.3.11)92 b(t)m(yp)s(edef)32 b(in)m(t64_t)g(in)m(t_least64_t)515 +4629 y Fq(signed)27 b(in)n(t)h(with)g(at)f(least)g(64)g(bits.)506 +4799 y Fs(Note:)676 4949 y Fq(This)h(t)n(yp)r(e)f(is)h(not)f(a)n(v)-5 +b(ailable)27 b(when)g(the)h(compiler)f(option)g(-min)n(t8)h(is)f(in)h +(e\033ect.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 167 183 +TeXDict begin 167 182 bop 515 203 a Fs(22.8)94 b Fo(<)p +Fs(stdin)m(t.h)p Fo(>)p Fs(:)40 b(Standard)33 b(In)m(teger)g(T)m(yp)s +(es)942 b(167)p 515 236 2865 4 v 515 523 a(22.8.3.12)92 +b(t)m(yp)s(edef)32 b(in)m(t8_t)g(in)m(t_least8_t)515 +670 y Fq(signed)27 b(in)n(t)h(with)g(at)f(least)g(8)g(bits.)515 +926 y Fs(22.8.3.13)92 b(t)m(yp)s(edef)32 b(in)m(t64_t)g(in)m(tmax_t)515 +1073 y Fq(largest)26 b(signed)h(in)n(t)h(a)n(v)-5 b(ailable.)515 +1329 y Fs(22.8.3.14)92 b(t)m(yp)s(edef)32 b(in)m(t16_t)g(in)m(tptr_t) +515 1476 y Fq(Signed)27 b(p)r(oin)n(ter)g(compatible)h(t)n(yp)r(e.)515 +1732 y Fs(22.8.3.15)92 b(t)m(yp)s(edef)32 b(unsigned)f(in)m(t)h(uin)m +(t16_t)515 1879 y Fq(16-bit)27 b(unsigned)g(t)n(yp)r(e.)515 +2135 y Fs(22.8.3.16)92 b(t)m(yp)s(edef)32 b(unsigned)f(long)g(in)m(t)g +(uin)m(t32_t)515 2282 y Fq(32-bit)c(unsigned)g(t)n(yp)r(e.)515 +2538 y Fs(22.8.3.17)92 b(t)m(yp)s(edef)32 b(unsigned)f(long)g(long)f +(in)m(t)i(uin)m(t64_t)515 2685 y Fq(64-bit)27 b(unsigned)g(t)n(yp)r(e.) +506 2848 y Fs(Note:)676 2997 y Fq(This)h(t)n(yp)r(e)f(is)h(not)f(a)n(v) +-5 b(ailable)27 b(when)g(the)h(compiler)f(option)g(-min)n(t8)h(is)f(in) +h(e\033ect.)515 3288 y Fs(22.8.3.18)92 b(t)m(yp)s(edef)32 +b(unsigned)f(c)m(har)i(uin)m(t8_t)515 3434 y Fq(8-bit)27 +b(unsigned)g(t)n(yp)r(e.)515 3691 y Fs(22.8.3.19)92 b(t)m(yp)s(edef)32 +b(uin)m(t16_t)g(uin)m(t_fast16_t)515 3837 y Fq(fastest)27 +b(unsigned)g(in)n(t)h(with)g(at)g(least)f(16)g(bits.)515 +4093 y Fs(22.8.3.20)92 b(t)m(yp)s(edef)32 b(uin)m(t32_t)g(uin)m +(t_fast32_t)515 4240 y Fq(fastest)27 b(unsigned)g(in)n(t)h(with)g(at)g +(least)f(32)g(bits.)515 4496 y Fs(22.8.3.21)92 b(t)m(yp)s(edef)32 +b(uin)m(t64_t)g(uin)m(t_fast64_t)515 4643 y Fq(fastest)27 +b(unsigned)g(in)n(t)h(with)g(at)g(least)f(64)g(bits.)506 +4806 y Fs(Note:)676 4956 y Fq(This)h(t)n(yp)r(e)f(is)h(not)f(a)n(v)-5 +b(ailable)27 b(when)g(the)h(compiler)f(option)g(-min)n(t8)h(is)f(in)h +(e\033ect.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 168 184 +TeXDict begin 168 183 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(168)p 515 236 2865 4 v 515 523 a(22.8.3.22)92 b(t)m(yp)s(edef)32 +b(uin)m(t8_t)g(uin)m(t_fast8_t)515 670 y Fq(fastest)27 +b(unsigned)g(in)n(t)h(with)g(at)g(least)f(8)g(bits.)515 +933 y Fs(22.8.3.23)92 b(t)m(yp)s(edef)32 b(uin)m(t16_t)g(uin)m +(t_least16_t)515 1080 y Fq(unsigned)27 b(in)n(t)h(with)g(at)f(least)g +(16)g(bits.)515 1343 y Fs(22.8.3.24)92 b(t)m(yp)s(edef)32 +b(uin)m(t32_t)g(uin)m(t_least32_t)515 1490 y Fq(unsigned)27 +b(in)n(t)h(with)g(at)f(least)g(32)g(bits.)515 1753 y +Fs(22.8.3.25)92 b(t)m(yp)s(edef)32 b(uin)m(t64_t)g(uin)m(t_least64_t) +515 1900 y Fq(unsigned)27 b(in)n(t)h(with)g(at)f(least)g(64)g(bits.)506 +2095 y Fs(Note:)676 2244 y Fq(This)h(t)n(yp)r(e)f(is)h(not)f(a)n(v)-5 +b(ailable)27 b(when)g(the)h(compiler)f(option)g(-min)n(t8)h(is)f(in)h +(e\033ect.)515 2574 y Fs(22.8.3.26)92 b(t)m(yp)s(edef)32 +b(uin)m(t8_t)g(uin)m(t_least8_t)515 2721 y Fq(unsigned)27 +b(in)n(t)h(with)g(at)f(least)g(8)h(bits.)515 2984 y Fs(22.8.3.27)92 +b(t)m(yp)s(edef)32 b(uin)m(t64_t)g(uin)m(tmax_t)515 3131 +y Fq(largest)26 b(unsigned)h(in)n(t)h(a)n(v)-5 b(ailable.)515 +3394 y Fs(22.8.3.28)92 b(t)m(yp)s(edef)32 b(uin)m(t16_t)g(uin)m(tptr_t) +515 3540 y Fq(Unsigned)27 b(p)r(oin)n(ter)g(compatible)h(t)n(yp)r(e.) +515 3820 y Fn(22.9)112 b Fd(<)p Fn(stdio.h)p Fd(>)p Fn(:)50 +b(Standard)39 b(IO)e(facilities)515 4021 y Fs(22.9.1)93 +b(Detailed)31 b(Description)550 4200 y Fj(#include)37 +b()515 4463 y Fs(In)m(tro)s(duction)25 b(to)h(the)f(Standard)i +(IO)e(facilities)82 b Fq(This)22 b(\034le)g(declares)f(the)h(standard) +515 4563 y(IO)h(facilities)g(that)g(are)g(implemen)n(ted)h(in)f +Fm(avr-libc)p Fq(.)32 b(Due)24 b(to)f(the)h(nature)f(of)g(the)h(under-) +515 4663 y(lying)19 b(hardw)n(are,)g(only)h(a)f(limited)i(subset)e(of)h +(standard)f(IO)g(is)h(implemen)n(ted.)35 b(There)19 b(is)g(no)515 +4762 y(actual)25 b(\034le)h(implemen)n(tation)g(a)n(v)-5 +b(ailable,)25 b(so)g(only)h(device)g(IO)f(can)h(b)r(e)g(p)r(erformed.) +36 b(Since)515 4862 y(there's)g(no)h(op)r(erating)e(system,)k(the)e +(application)f(needs)h(to)g(pro)n(vide)e(enough)h(details)515 +4961 y(ab)r(out)27 b(their)g(devices)g(in)h(order)e(to)h(mak)n(e)g +(them)h(usable)f(b)n(y)g(the)h(standard)e(IO)h(facilities.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 169 185 +TeXDict begin 169 184 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(169)p 515 236 2865 4 v 515 523 a Fq(Due)33 b(to)f(space)g(constrain)n +(ts,)g(some)g(functionalit)n(y)g(has)g(not)g(b)r(een)h(implemen)n(ted)g +(at)f(all)515 623 y(\(lik)n(e)24 b(some)g(of)g(the)h +Fm(printf)d Fq(con)n(v)n(ersions)g(that)i(ha)n(v)n(e)g(b)r(een)g(left)h +(out\).)36 b(Nev)n(ertheless,)24 b(p)r(o-)515 722 y(ten)n(tial)30 +b(users)g(of)h(this)g(implemen)n(tation)g(should)f(b)r(e)h(w)n(arned:) +42 b(the)31 b Fm(printf)e Fq(and)h Fm(scanf)515 822 y +Fq(families)21 b(of)h(functions,)g(although)f(usually)g(asso)r(ciated)f +(with)i(presumably)f(simple)g(things)515 922 y(lik)n(e)41 +b(the)i(famous)e("Hello,)k(w)n(orld!")c(program,)i(are)e(actually)g +(fairly)h(complex)f(whic)n(h)515 1021 y(causes)25 b(their)i(inclusion)g +(to)f(eat)h(up)g(a)f(fair)h(amoun)n(t)f(of)g(co)r(de)h(space.)36 +b(Also,)26 b(they)h(are)f(not)515 1121 y(fast)i(due)g(to)g(the)g +(nature)f(of)h(in)n(terpreting)f(the)i(format)e(string)g(at)h +(run-time.)38 b(Whenev)n(er)515 1220 y(p)r(ossible,)33 +b(resorting)e(to)i(the)g(\(sometimes)g(non-standard\))e(predetermined)h +(con)n(v)n(ersion)515 1320 y(facilities)22 b(that)g(are)f(o\033ered)h +(b)n(y)f(a)n(vr-lib)r(c)g(will)h(usually)g(cost)f(m)n(uc)n(h)h(less)g +(in)g(terms)g(of)g(sp)r(eed)515 1420 y(and)27 b(co)r(de)g(size.)515 +1683 y Fs(T)-8 b(unable)28 b(options)e(for)i(co)s(de)f(size)h(vs.)40 +b(feature)28 b(set)83 b Fq(In)24 b(order)f(to)h(allo)n(w)f(program-)515 +1782 y(mers)38 b(a)g(co)r(de)h(size)f(vs.)71 b(functionalit)n(y)38 +b(tradeo\033,)j(the)e(function)h Fs(vfprin)m(tf\(\))g +Fq(\(p.)14 b(181\))515 1882 y(whic)n(h)31 b(is)g(the)g(heart)f(of)h +(the)h(prin)n(tf)f(family)g(can)g(b)r(e)g(selected)g(in)h(di\033eren)n +(t)f(\035a)n(v)n(ours)d(us-)515 1982 y(ing)g(link)n(er)g(options.)40 +b(See)28 b(the)h(do)r(cumen)n(tation)g(of)35 b Fs(vfprin)m(tf\(\))30 +b Fq(\(p.)14 b(181\))28 b(for)g(a)g(detailed)515 2081 +y(description.)57 b(The)34 b(same)g(applies)g(to)g Fs(vfscanf\(\))i +Fq(\(p.)14 b(185\))34 b(and)g(the)h Fm(scanf)e Fq(family)h(of)515 +2181 y(functions.)515 2444 y Fs(Outline)47 b(of)h(the)g(c)m(hosen)h +(API)83 b Fq(The)42 b(standard)f(streams)g Fm(stdin)p +Fq(,)j Fm(stdout)p Fq(,)f(and)515 2543 y Fm(stderr)36 +b Fq(are)j(pro)n(vided,)i(but)e(con)n(trary)e(to)i(the)h(C)f(standard,) +i(since)e(a)n(vr-lib)r(c)f(has)g(no)515 2643 y(kno)n(wledge)18 +b(ab)r(out)i(applicable)f(devices,)i(these)e(streams)g(are)g(not)h +(already)e(pre-initialized)515 2743 y(at)k(application)g(startup.)35 +b(Also,)23 b(since)g(there)f(is)h(no)f(notion)g(of)h("\034le")e(whatso) +r(ev)n(er)g(to)i(a)n(vr-)515 2842 y(lib)r(c,)32 b(there)e(is)h(no)f +(function)h Fm(fopen\(\))d Fq(that)j(could)f(b)r(e)h(used)g(to)f(asso)r +(ciate)f(a)h(stream)g(to)515 2942 y(some)23 b(device.)36 +b(\(See)24 b Fs(note)k(1)c Fq(\(p.)14 b(171\).\))35 b(Instead,)25 +b(the)f(function)h Fm(fdevopen\(\))39 b(\()p Fq(p.)15 +b Fm(177\))515 3042 y Fq(is)25 b(pro)n(vided)g(to)g(asso)r(ciate)f(a)h +(stream)g(to)g(a)h(device,)f(where)g(the)h(device)g(needs)f(to)g(pro)n +(vide)515 3141 y(a)36 b(function)i(to)f(send)g(a)f(c)n(haracter,)h(to)g +(receiv)n(e)f(a)g(c)n(haracter,)i(or)e(b)r(oth.)65 b(There)37 +b(is)f(no)515 3241 y(di\033eren)n(tiation)28 b(b)r(et)n(w)n(een)h +("text")f(and)g("binary")f(streams)h(inside)h(a)n(vr-lib)r(c.)39 +b(Character)515 3340 y Fh(n)p Fm(n)25 b Fq(is)h(sen)n(t)h(literally)e +(do)n(wn)h(to)g(the)h(device's)f Fm(put\(\))e Fq(function.)37 +b(If)27 b(the)f(device)h(requires)d(a)515 3440 y(carriage)j(return)j +(\()p Fh(n)p Fm(r)p Fq(\))g(c)n(haracter)e(to)i(b)r(e)g(sen)n(t)g(b)r +(efore)g(the)h(linefeed,)g(its)f Fm(put\(\))f Fq(routine)515 +3540 y(m)n(ust)e(implemen)n(t)h(this)g(\(see)g Fs(note)j(2)d +Fq(\(p.)14 b(171\)\).)515 3687 y(As)31 b(an)g(alternativ)n(e)f(metho)r +(d)i(to)g Fs(fdev)m(op)s(en\(\))f Fq(\(p.)14 b(177\),)32 +b(the)g(macro)e Fs(fdev_setup_-)515 3786 y(stream\(\))d +Fq(\(p.)14 b(175\))27 b(migh)n(t)h(b)r(e)g(used)f(to)h(setup)f(a)h +(user-supplied)e(FILE)i(structure.)515 3933 y(It)h(should)f(b)r(e)h +(noted)f(that)h(the)g(automatic)f(con)n(v)n(ersion)e(of)j(a)f(newline)h +(c)n(haracter)d(in)n(to)i(a)515 4033 y(carriage)h(return)i(-)g(newline) +g(sequence)g(breaks)f(binary)h(transfers.)47 b(If)32 +b(binary)e(transfers)515 4132 y(are)18 b(desired,)i(no)f(automatic)f +(con)n(v)n(ersion)f(should)h(b)r(e)i(p)r(erformed,)g(but)g(instead)f +(an)n(y)f(string)515 4232 y(that)28 b(aims)f(to)g(issue)g(a)h(CR-LF)f +(sequence)g(m)n(ust)h(use)f Fm(")p Fh(n)p Fm(r)p Fh(n)p +Fm(n")e Fq(explicitly)-7 b(.)515 4379 y(F)g(or)27 b(con)n(v)n(enience,) +g(the)i(\034rst)f(call)g(to)g Fm(fdevopen\(\))39 b(\()p +Fq(p.)14 b Fm(177\))27 b Fq(that)h(op)r(ens)g(a)g(stream)g(for)515 +4478 y(reading)33 b(will)h(cause)g(the)g(resulting)g(stream)f(to)h(b)r +(e)h(aliased)e(to)h Fm(stdin)p Fq(.)55 b(Lik)n(ewise,)35 +b(the)515 4578 y(\034rst)24 b(call)h(to)g Fm(fdevopen\(\))39 +b(\()p Fq(p.)14 b Fm(177\))24 b Fq(that)h(op)r(ens)g(a)f(stream)g(for)h +(writing)f(will)i(cause)e(the)515 4678 y(resulting)k(stream)g(to)h(b)r +(e)g(aliased)f(to)h(b)r(oth,)h Fm(stdout)p Fq(,)d(and)i +Fm(stderr)p Fq(.)38 b(Th)n(us,)29 b(if)h(the)f(op)r(en)515 +4777 y(w)n(as)h(done)i(with)g(b)r(oth,)h(read)e(and)g(write)h(in)n(ten) +n(t,)h(all)e(three)h(standard)e(streams)h(will)h(b)r(e)515 +4877 y(iden)n(tical.)59 b(Note)35 b(that)g(these)g(aliases)f(are)g +(indistinguishable)h(from)f(eac)n(h)h(other,)h(th)n(us)515 +4977 y(calling)30 b Fm(fclose\(\))40 b(\()p Fq(p.)14 +b Fm(176\))29 b Fq(on)g(suc)n(h)h(a)f(stream)g(will)h(also)f +(e\033ectiv)n(ely)h(close)f(all)g(of)h(its)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 170 186 +TeXDict begin 170 185 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(170)p 515 236 2865 4 v 515 523 a Fq(aliases)26 b(\()p +Fs(note)32 b(3)27 b Fq(\(p.)14 b(171\)\).)515 670 y(It)24 +b(is)h(p)r(ossible)f(to)g(tie)h(additional)e(user)h(data)g(to)g(a)g +(stream,)g(using)h Fs(fdev_set_udata\(\))515 770 y Fq(\(p.)14 +b(174\).)33 b(The)18 b(bac)n(k)n(end)g(put)h(and)g(get)f(functions)h +(can)f(then)h(extract)f(this)h(user)f(data)g(using)515 +869 y Fs(fdev_get_udata\(\))28 b Fq(\(p.)14 b(174\),)25 +b(and)h(act)g(appropriately)-7 b(.)35 b(F)-7 b(or)25 +b(example,)h(a)g(single)f(put)515 969 y(function)h(could)f(b)r(e)i +(used)e(to)h(talk)f(to)h(t)n(w)n(o)f(di\033eren)n(t)h(UAR)-7 +b(T)g(s)26 b(that)g(w)n(a)n(y)-7 b(,)25 b(or)g(the)h(put)g(and)515 +1068 y(get)h(functions)h(could)f(k)n(eep)g(in)n(ternal)g(state)h(b)r +(et)n(w)n(een)f(calls)g(there.)515 1331 y Fs(F)-8 b(ormat)33 +b(strings)f(in)h(\035ash)h(R)m(OM)82 b Fq(All)29 b(the)g +Fm(printf)e Fq(and)h Fm(scanf)f Fq(family)i(functions)515 +1431 y(come)g(in)i(t)n(w)n(o)e(\035a)n(v)n(ours:)40 b(the)31 +b(standard)e(name,)h(where)g(the)h(format)e(string)h(is)g(exp)r(ected) +515 1531 y(to)36 b(b)r(e)g(in)g(SRAM,)h(as)e(w)n(ell)g(as)h(a)f(v)n +(ersion)g(with)h(the)g(su\036x)g("_P")f(where)g(the)i(format)515 +1630 y(string)42 b(is)g(exp)r(ected)h(to)f(reside)g(in)h(the)g(\035ash) +f(R)n(OM.)g(The)h(macro)e Fm(PSTR)g Fq(\(explained)515 +1730 y(in)34 b Fo(<)p Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)57 +b(Program)40 b(Space)g(Utilities)33 b Fq(\(p.)14 b(260\)\))33 +b(b)r(ecomes)h(v)n(ery)515 1830 y(handy)27 b(for)g(declaring)f(these)i +(format)f(strings.)515 2093 y Fs(Running)21 b(stdio)h(without)h(mallo)s +(c\(\))e(\()p Fq(p.)c Fs(195\))82 b Fq(By)19 b(default,)j +Fs(fdev)m(op)s(en\(\))e Fq(\(p.)14 b(177\))515 2192 y(requires)28 +b Fs(mallo)s(c\(\))g Fq(\(p.)14 b(195\).)41 b(As)29 b(this)g(is)h +(often)f(not)g(desired)g(in)g(the)h(limited)g(en)n(viron-)515 +2292 y(men)n(t)h(of)f(a)g(micro)r(con)n(troller,)f(an)h(alternativ)n(e) +f(option)i(is)f(pro)n(vided)g(to)g(run)g(completely)515 +2391 y(without)e Fs(mallo)s(c\(\))e Fq(\(p.)14 b(195\).)515 +2538 y(The)43 b(macro)e Fs(fdev_setup_stream\(\))j Fq(\(p.)14 +b(175\))42 b(is)g(pro)n(vided)g(to)h(prepare)f(a)g(user-)515 +2638 y(supplied)28 b(FILE)g(bu\033er)f(for)h(op)r(eration)e(with)i +(stdio.)515 2880 y Fs(Example)656 3073 y Fj(#include)37 +b()656 3230 y(static)g(int)f(uart_putchar\(char)k(c,)c(FILE)g +(*stream\);)656 3388 y(static)h(FILE)f(mystdout)i(=)d +(FDEV_SETUP_STREAM\(uart_)q(putc)q(har,)42 b(NULL,)2102 +3467 y(_FDEV_SETUP_WRITE\);)656 3625 y(static)37 b(int)656 +3704 y(uart_putchar\(char)j(c,)c(FILE)g(*stream\))656 +3783 y({)726 3940 y(if)g(\(c)g(==)g('\\n'\))797 4019 +y(uart_putchar\('\\r',)k(stream\);)726 4098 y(loop_until_bit_is_set\(U) +q(CSR)q(A,)h(UDRE\);)726 4177 y(UDR)36 b(=)g(c;)726 4256 +y(return)h(0;)656 4335 y(})656 4492 y(int)656 4571 y(main\(void\))656 +4650 y({)726 4729 y(init_uart\(\);)726 4808 y(stdout)g(=)f(&mystdout;) +726 4887 y(printf\("Hello,)k(world!\\n"\);)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 171 187 +TeXDict begin 171 186 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(171)p 515 236 2865 4 v 726 523 a Fj(return)37 b(0;)656 +602 y(})515 813 y Fq(This)18 b(example)g(uses)h(the)g(initializer)f +(form)g Fs(FDEV_SETUP_STREAM\(\))i Fq(\(p.)14 b(174\))515 +912 y(rather)28 b(than)i(the)f(function-lik)n(e)g Fs +(fdev_setup_stream\(\))h Fq(\(p.)14 b(175\),)29 b(so)g(all)g(data)g +(ini-)515 1012 y(tialization)e(happ)r(ens)g(during)g(C)h(start-up.)515 +1159 y(If)i(streams)f(initialized)h(that)g(w)n(a)n(y)f(are)g(no)g +(longer)g(needed,)h(they)g(can)g(b)r(e)g(destro)n(y)n(ed)e(b)n(y)515 +1258 y(\034rst)k(calling)f(the)h(macro)f Fs(fdev_close\(\))h +Fq(\(p.)14 b(174\),)32 b(and)g(then)h(destro)n(ying)d(the)i(ob)5 +b(ject)515 1358 y(itself.)56 b(No)34 b(call)g(to)g Fs(fclose\(\))g +Fq(\(p.)14 b(176\))33 b(should)h(b)r(e)g(issued)g(for)f(these)h +(streams.)56 b(While)515 1458 y(calling)32 b Fs(fclose\(\))f +Fq(\(p.)14 b(176\))31 b(itself)h(is)f(harmless,)h(it)g(will)g(cause)f +(an)g(unde\034ned)h(reference)515 1557 y(to)c Fs(free\(\))h +Fq(\(p.)14 b(193\))28 b(and)h(th)n(us)g(cause)e(the)j(link)n(er)d(to)i +(link)g(the)g(mallo)r(c)f(mo)r(dule)h(in)n(to)g(the)515 +1657 y(application.)515 1919 y Fs(Notes)506 2096 y(Note)j(1:)676 +2245 y Fq(It)26 b(migh)n(t)f(ha)n(v)n(e)f(b)r(een)i(p)r(ossible)f(to)g +(implemen)n(t)h(a)f(device)g(abstraction)f(that)i(is)f(com-)676 +2345 y(patible)k(with)f Fm(fopen\(\))e Fq(but)j(since)f(this)g(w)n +(ould)g(ha)n(v)n(e)f(required)h(to)g(parse)f(a)h(string,)676 +2445 y(and)k(to)g(tak)n(e)f(all)g(the)h(information)g(needed)g(either)f +(out)h(of)g(this)g(string,)g(or)f(out)h(of)676 2544 y(an)25 +b(additional)g(table)g(that)g(w)n(ould)g(need)g(to)h(b)r(e)f(pro)n +(vided)f(b)n(y)h(the)h(application,)f(this)676 2644 y(approac)n(h)h(w)n +(as)g(not)i(tak)n(en.)506 2916 y Fs(Note)k(2:)676 3066 +y Fq(This)k(basically)e(follo)n(ws)h(the)h(Unix)g(approac)n(h:)52 +b(if)36 b(a)f(device)h(suc)n(h)f(as)g(a)g(terminal)676 +3165 y(needs)28 b(sp)r(ecial)g(handling,)f(it)i(is)f(in)g(the)g(domain) +g(of)g(the)g(terminal)g(device)g(driv)n(er)e(to)676 3265 +y(pro)n(vide)34 b(this)h(functionalit)n(y)-7 b(.)59 b(Th)n(us,)37 +b(a)e(simple)g(function)g(suitable)g(as)g Fm(put\(\))e +Fq(for)676 3365 y Fm(fdevopen\(\))39 b(\()p Fq(p.)15 +b Fm(177\))26 b Fq(that)i(talks)f(to)g(a)g(UAR)-7 b(T)29 +b(in)n(terface)d(migh)n(t)i(lo)r(ok)f(lik)n(e)g(this:)656 +3570 y Fj(int)656 3649 y(uart_putchar\(char)40 b(c,)c(FILE)g(*stream\)) +656 3728 y({)726 3886 y(if)g(\(c)g(==)g('\\n'\))797 3965 +y(uart_putchar\('\\r'\);)726 4044 y(loop_until_bit_is_set\(U)q(CSR)q +(A,)41 b(UDRE\);)726 4122 y(UDR)36 b(=)g(c;)726 4201 +y(return)h(0;)656 4280 y(})506 4558 y Fs(Note)32 b(3:)676 +4707 y Fq(This)h(implemen)n(tation)f(has)g(b)r(een)h(c)n(hosen)e(b)r +(ecause)h(the)h(cost)f(of)h(main)n(taining)e(an)676 4807 +y(alias)23 b(is)i(considerably)d(smaller)i(than)g(the)h(cost)e(of)i +(main)n(taining)e(full)i(copies)f(of)g(eac)n(h)676 4907 +y(stream.)50 b(Y)-7 b(et,)34 b(pro)n(viding)d(an)g(implemen)n(tation)i +(that)f(o\033ers)f(the)i(complete)f(set)g(of)676 5006 +y(standard)21 b(streams)h(w)n(as)f(deemed)h(to)g(b)r(e)h(useful.)36 +b(Not)22 b(only)g(that)g(writing)h Fm(printf\(\))p 515 +5179 V 515 5255 a Fp(Generated)i(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 172 188 +TeXDict begin 172 187 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(172)p 515 236 2865 4 v 676 523 a Fm(\()p Fq(p.)14 b +Fm(180\))23 b Fq(instead)g(of)h Fm(fprintf\(mystream,)37 +b(...\))d Fq(sa)n(v)n(es)22 b(t)n(yping)h(w)n(ork,)h(but)g(since)676 +623 y(a)n(vr-gcc)30 b(needs)i(to)g(resort)f(to)h(pass)g(all)g(argumen)n +(ts)f(of)h(v)-5 b(ariadic)31 b(functions)i(on)f(the)676 +722 y(stac)n(k)20 b(\(as)h(opp)r(osed)g(to)g(passing)f(them)i(in)f +(registers)f(for)h(functions)g(that)h(tak)n(e)e(a)h(\034xed)676 +822 y(n)n(um)n(b)r(er)28 b(of)g(parameters\),)e(the)j(abilit)n(y)e(to)h +(pass)f(one)h(parameter)e(less)h(b)n(y)h(implying)676 +922 y Fm(stdin)e Fq(will)h(also)g(sa)n(v)n(e)f(some)h(execution)g +(time.)515 1183 y Fs(De\034nes)639 1369 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(FILE)g Fq(struct)g(__\034le)639 +1475 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(stdin)f Fq(\(__iob[0]\))639 +1582 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(stdout)g Fq(\(__iob[1]\))639 +1688 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(stderr)g Fq(\(__iob[2]\))639 +1795 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(EOF)f Fq(\(-1\))639 +1901 y Fk(\210)41 b Fq(#de\034ne)g Fs(fdev_set_udata)p +Fq(\(stream,)j(u\))d(do)f({)g(\(stream\))g Fh(!)g Fq(udata)g(=)g(u;)46 +b(})722 2001 y(while\(0\))639 2108 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(fdev_get_udata)p Fq(\(stream\))h(\(\(stream\))f +Fh(!)f Fq(udata\))639 2214 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(fdev_setup_stream)p Fq(\(stream,)f(put,)i(get,)e(rw\035ag\))639 +2321 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(_FDEV_SETUP_READ)h +Fq(__SRD)639 2427 y Fk(\210)41 b Fq(#de\034ne)28 b Fs +(_FDEV_SETUP_WRITE)h Fq(__SWR)639 2534 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(_FDEV_SETUP_R)-11 b(W)29 b Fq(\(__SRD)p +Fh(j)p Fq(__SWR\))639 2641 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_FDEV_ERR)f Fq(\(-1\))639 2747 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_FDEV_EOF)g Fq(\(-2\))639 2854 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(FDEV_SETUP_STREAM)p Fq(\(put,)i(get,)d(rw\035ag\))639 +2960 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(fdev_close)p +Fq(\(\))639 3067 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(putc)p +Fq(\(__c,)g(__stream\))e(fputc\(__c,)i(__stream\))639 +3174 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(putc)m(har)p +Fq(\(__c\))h(fputc\(__c,)f(stdout\))639 3280 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(getc)p Fq(\(__stream\))f(fgetc\(__stream\))639 +3387 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(getc)m(har)p +Fq(\(\))i(fgetc\(stdin\))515 3649 y Fs(F)-8 b(unctions)639 +3834 y Fk(\210)41 b Fq(in)n(t)28 b Fs(fclose)f Fq(\(FILE)h +Fh(\003)p Fq(__stream\))639 3940 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(vfprin)m(tf)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)e(const)h(c)n +(har)f Fh(\003)p Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(__ap\))639 +4047 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vfprin)m(tf_P)h +Fq(\(FILE)g Fh(\003)p Fq(__stream,)c(const)i(c)n(har)g +Fh(\003)p Fq(__fm)n(t,)g(v)-5 b(a_list)27 b(__ap\))639 +4154 y Fk(\210)41 b Fq(in)n(t)28 b Fs(fputc)h Fq(\(in)n(t)f(__c,)e +(FILE)j Fh(\003)p Fq(__stream\))639 4260 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(prin)m(tf)g Fq(\(const)g(c)n(har)e +Fh(\003)p Fq(__fm)n(t,...\))639 4367 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(prin)m(tf_P)h Fq(\(const)e(c)n(har)g Fh(\003)p Fq(__fm)n(t,...\)) +639 4473 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vprin)m(tf)h +Fq(\(const)e(c)n(har)g Fh(\003)p Fq(__fm)n(t,)f(v)-5 +b(a_list)27 b(__ap\))639 4580 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sprin)m(tf)g Fq(\(c)n(har)f Fh(\003)p Fq(__s,)f(const)h(c)n(har)f +Fh(\003)p Fq(__fm)n(t,...\))639 4686 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sprin)m(tf_P)g Fq(\(c)n(har)f Fh(\003)p Fq(__s,)f(const)h(c)n(har) +g Fh(\003)p Fq(__fm)n(t,...\))639 4793 y Fk(\210)41 b +Fq(in)n(t)28 b Fs(snprin)m(tf)g Fq(\(c)n(har)f Fh(\003)p +Fq(__s,)f(size_t)h(__n,)g(const)g(c)n(har)f Fh(\003)p +Fq(__fm)n(t,...\))639 4900 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(snprin)m(tf_P)g Fq(\(c)n(har)f Fh(\003)p Fq(__s,)f(size_t)h(__n,)g +(const)g(c)n(har)g Fh(\003)p Fq(__fm)n(t,...\))639 5006 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(vsprin)m(tf)g Fq(\(c)n(har)f +Fh(\003)p Fq(__s,)f(const)h(c)n(har)g Fh(\003)p Fq(__fm)n(t,)f(v)-5 +b(a_list)28 b(ap\))p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 173 189 +TeXDict begin 173 188 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(173)p 515 236 2865 4 v 639 523 a Fk(\210)41 b Fq(in)n(t)28 +b Fs(vsprin)m(tf_P)h Fq(\(c)n(har)d Fh(\003)p Fq(__s,)h(const)g(c)n +(har)f Fh(\003)p Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(ap\))639 +626 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vsnprin)m(tf)g Fq(\(c)n(har)f +Fh(\003)p Fq(__s,)f(size_t)h(__n,)g(const)g(c)n(har)g +Fh(\003)p Fq(__fm)n(t,)g(v)-5 b(a_list)27 b(ap\))639 +729 y Fk(\210)41 b Fq(in)n(t)32 b Fs(vsnprin)m(tf_P)g +Fq(\(c)n(har)e Fh(\003)p Fq(__s,)h(size_t)g(__n,)g(const)g(c)n(har)f +Fh(\003)p Fq(__fm)n(t,)i(v)-5 b(a_list)722 828 y(ap\))639 +931 y Fk(\210)41 b Fq(in)n(t)28 b Fs(fprin)m(tf)g Fq(\(FILE)h +Fh(\003)p Fq(__stream,)c(const)j(c)n(har)e Fh(\003)p +Fq(__fm)n(t,...\))639 1034 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(fprin)m(tf_P)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)e(const)h(c)n +(har)f Fh(\003)p Fq(__fm)n(t,...\))639 1137 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(fputs)g Fq(\(const)f(c)n(har)g Fh(\003)p +Fq(__str,)e(FILE)k Fh(\003)p Fq(__stream\))639 1240 y +Fk(\210)41 b Fq(in)n(t)28 b Fs(fputs_P)g Fq(\(const)g(c)n(har)e +Fh(\003)p Fq(__str,)g(FILE)i Fh(\003)p Fq(__stream\))639 +1342 y Fk(\210)41 b Fq(in)n(t)28 b Fs(puts)g Fq(\(const)f(c)n(har)f +Fh(\003)p Fq(__str\))639 1445 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(puts_P)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(__str\))639 +1548 y Fk(\210)41 b Fq(size_t)i Fs(fwrite)g Fq(\(const)g(v)n(oid)g +Fh(\003)p Fq(__ptr,)j(size_t)d(__size,)j(size_t)d(__nmem)n(b,)722 +1648 y(FILE)28 b Fh(\003)p Fq(__stream\))639 1751 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(fgetc)g Fq(\(FILE)g Fh(\003)p Fq(__stream\))639 +1853 y Fk(\210)41 b Fq(in)n(t)28 b Fs(ungetc)g Fq(\(in)n(t)g(__c,)f +(FILE)h Fh(\003)p Fq(__stream\))639 1956 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(fgets)g Fq(\(c)n(har)g +Fh(\003)p Fq(__str,)e(in)n(t)j(__size,)f(FILE)h Fh(\003)p +Fq(__stream\))639 2059 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(gets)g Fq(\(c)n(har)f Fh(\003)p Fq(__str\))639 +2162 y Fk(\210)41 b Fq(size_t)28 b Fs(fread)g Fq(\(v)n(oid)g +Fh(\003)p Fq(__ptr,)e(size_t)h(__size,)g(size_t)h(__nmem)n(b,)f(FILE)h +Fh(\003)p Fq(_-)722 2261 y(_stream\))639 2364 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(clearerr)i Fq(\(FILE)f Fh(\003)p +Fq(__stream\))639 2467 y Fk(\210)41 b Fq(in)n(t)28 b +Fs(feof)g Fq(\(FILE)g Fh(\003)p Fq(__stream\))639 2570 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(ferror)g Fq(\(FILE)h +Fh(\003)p Fq(__stream\))639 2673 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(vfscanf)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)e(const)h(c)n(har)f +Fh(\003)p Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(__ap\))639 +2776 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vfscanf_P)h Fq(\(FILE)g +Fh(\003)p Fq(__stream,)c(const)j(c)n(har)e Fh(\003)p +Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(__ap\))639 2878 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(fscanf)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)d +(const)j(c)n(har)e Fh(\003)p Fq(__fm)n(t,...\))639 2981 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(fscanf_P)h Fq(\(FILE)g +Fh(\003)p Fq(__stream,)c(const)i(c)n(har)g Fh(\003)p +Fq(__fm)n(t,...\))639 3084 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(scanf)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(__fm)n(t,...\))639 +3187 y Fk(\210)41 b Fq(in)n(t)28 b Fs(scanf_P)h Fq(\(const)e(c)n(har)g +Fh(\003)p Fq(__fm)n(t,...\))639 3290 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(vscanf)h Fq(\(const)e(c)n(har)g Fh(\003)p Fq(__fm)n(t,)g(v)-5 +b(a_list)27 b(__ap\))639 3393 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sscanf)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(__buf,)h(const)g(c)n +(har)f Fh(\003)p Fq(__fm)n(t,...\))639 3495 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(sscanf_P)h Fq(\(const)e(c)n(har)f +Fh(\003)p Fq(__buf,)h(const)h(c)n(har)e Fh(\003)p Fq(__fm)n(t,...\))639 +3598 y Fk(\210)41 b Fq(in)n(t)28 b Fs(\037ush)f Fq(\(FILE)h +Fh(\003)p Fq(stream\))639 3701 y Fk(\210)41 b Fq(FILE)28 +b Fh(\003)g Fs(fdev)m(op)s(en)f Fq(\(in)n(t\()p Fh(\003)p +Fq(put\)\(c)n(har,)h(FILE)g Fh(\003)p Fq(\),)g(in)n(t\()p +Fh(\003)p Fq(get\)\(FILE)g Fh(\003)p Fq(\)\))515 3960 +y Fs(22.9.2)93 b(De\034ne)32 b(Do)s(cumen)m(tation)515 +4160 y(22.9.2.1)92 b(#de\034ne)31 b(_FDEV_EOF)h(\(-2\))515 +4307 y Fq(Return)27 b(co)r(de)h(for)f(an)g(end-of-\034le)g(condition)g +(during)g(device)h(read.)515 4454 y(T)-7 b(o)27 b(b)r(e)h(used)f(in)h +(the)g(get)g(function)g(of)34 b Fs(fdev)m(op)s(en\(\))27 +b Fq(\(p.)14 b(177\).)515 4712 y Fs(22.9.2.2)92 b(#de\034ne)31 +b(_FDEV_ERR)h(\(-1\))515 4859 y Fq(Return)27 b(co)r(de)h(for)f(an)g +(error)f(condition)h(during)g(device)g(read.)515 5006 +y(T)-7 b(o)27 b(b)r(e)h(used)f(in)h(the)g(get)g(function)g(of)34 +b Fs(fdev)m(op)s(en\(\))27 b Fq(\(p.)14 b(177\).)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 174 190 +TeXDict begin 174 189 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(174)p 515 236 2865 4 v 515 523 a(22.9.2.3)92 b(#de\034ne)31 +b(_FDEV_SETUP_READ)i(__SRD)515 670 y(fdev_setup_stream\(\))28 +b Fq(\(p.)14 b(175\))27 b(with)h(read)e(in)n(ten)n(t)515 +933 y Fs(22.9.2.4)92 b(#de\034ne)31 b(_FDEV_SETUP_R)-11 +b(W)33 b(\(__SRD)p Fh(j)p Fs(__SWR\))515 1080 y(fdev_setup_stream\(\)) +28 b Fq(\(p.)14 b(175\))27 b(with)h(read/write)d(in)n(ten)n(t)515 +1343 y Fs(22.9.2.5)92 b(#de\034ne)31 b(_FDEV_SETUP_WRITE)i(__SWR)515 +1490 y(fdev_setup_stream\(\))28 b Fq(\(p.)14 b(175\))27 +b(with)h(write)f(in)n(ten)n(t)515 1753 y Fs(22.9.2.6)92 +b(#de\034ne)31 b(EOF)h(\(-1\))515 1900 y Fm(EOF)23 b +Fq(declares)h(the)h(v)-5 b(alue)24 b(that)h(is)g(returned)f(b)n(y)h(v) +-5 b(arious)23 b(standard)h(IO)g(functions)h(in)g(case)515 +1999 y(of)i(an)f(error.)35 b(Since)27 b(the)g(A)-9 b(VR)27 +b(platform)g(\(curren)n(tly\))f(do)r(esn't)h(con)n(tain)f(an)h +(abstraction)515 2099 y(for)g(actual)g(\034les,)g(its)h(origin)e(as)h +("end)h(of)f(\034le")g(is)h(somewhat)f(meaningless)f(here.)515 +2362 y Fs(22.9.2.7)92 b(#de\034ne)31 b(fdev_close\(\))515 +2509 y Fq(This)22 b(macro)e(frees)h(up)h(an)n(y)g(library)e(resources)g +(that)i(migh)n(t)g(b)r(e)g(asso)r(ciated)e(with)i Fm(stream)p +Fq(.)515 2608 y(It)k(should)f(b)r(e)h(called)f(if)h Fm(stream)d +Fq(is)j(no)f(longer)f(needed,)i(righ)n(t)f(b)r(efore)g(the)h +(application)f(is)515 2708 y(going)h(to)i(destro)n(y)e(the)i +Fm(stream)d Fq(ob)5 b(ject)27 b(itself.)515 2855 y(\(Curren)n(tly)-7 +b(,)37 b(this)g(macro)d(ev)-5 b(aluates)36 b(to)g(nothing,)i(but)e +(this)h(migh)n(t)f(c)n(hange)e(in)j(future)515 2954 y(v)n(ersions)25 +b(of)j(the)g(library)-7 b(.\))515 3217 y Fs(22.9.2.8)92 +b(#de\034ne)31 b(fdev_get_udata\(stream\))j(\(\(stream\))d +Fh(!)h Fs(udata\))515 3364 y Fq(This)26 b(macro)e(retriev)n(es)h(a)g(p) +r(oin)n(ter)h(to)g(user)f(de\034ned)i(data)e(from)h(a)f(FILE)i(stream)e +(ob)5 b(ject.)515 3727 y Fs(22.9.2.9)92 b(#de\034ne)22 +b(fdev_set_udata\(stream,)49 b(u\))22 b(do)g({)g(\(stream\))h +Fh(!)f Fs(udata)515 3827 y(=)32 b(u;)f(})h(while\(0\))515 +3973 y Fq(This)27 b(macro)f(inserts)h(a)h(p)r(oin)n(ter)f(to)g(user)g +(de\034ned)h(data)f(in)n(to)g(a)h(FILE)g(stream)f(ob)5 +b(ject.)515 4120 y(The)38 b(user)g(data)g(can)f(b)r(e)i(useful)g(for)f +(trac)n(king)e(state)i(in)h(the)g(put)g(and)f(get)g(functions)515 +4220 y(supplied)28 b(to)f(the)h Fs(fdev)m(op)s(en\(\))g +Fq(\(p.)14 b(177\))26 b(function.)515 4483 y Fs(22.9.2.10)92 +b(#de\034ne)31 b(FDEV_SETUP_STREAM\(put,)64 b(get,)f(rw\035ag\))515 +4630 y Fq(Initializer)27 b(for)g(a)g(user-supplied)g(stdio)g(stream.) +515 4777 y(This)21 b(macro)f(acts)h(similar)g(to)g Fs +(fdev_setup_stream\(\))h Fq(\(p.)14 b(175\),)22 b(but)g(it)g(is)f(to)g +(b)r(e)h(used)515 4876 y(as)27 b(the)h(initializer)f(of)g(a)g(v)-5 +b(ariable)27 b(of)g(t)n(yp)r(e)h(FILE.)p 515 5179 V 515 +5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 175 191 +TeXDict begin 175 190 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(175)p 515 236 2865 4 v 515 523 a Fq(The)48 b(remaining)g(argumen)n +(ts)f(are)g(to)h(b)r(e)h(used)f(as)g(explained)g(in)h +Fs(fdev_setup_-)515 623 y(stream\(\))27 b Fq(\(p.)14 +b(175\).)515 886 y Fs(22.9.2.11)92 b(#de\034ne)26 b +(fdev_setup_stream\(stream,)56 b(put,)g(get,)f(rw\035ag\))515 +1033 y Fq(Setup)28 b(a)f(user-supplied)g(bu\033er)h(as)e(an)i(stdio)f +(stream.)515 1179 y(This)e(macro)f(tak)n(es)g(a)h(user-supplied)f +(bu\033er)i Fm(stream)p Fq(,)d(and)i(sets)g(it)h(up)f(as)g(a)f(stream)h +(that)515 1279 y(is)i(v)-5 b(alid)27 b(for)f(stdio)h(op)r(erations,)f +(similar)g(to)h(one)f(that)h(has)g(b)r(een)g(obtained)g(dynamically)515 +1379 y(from)g Fs(fdev)m(op)s(en\(\))h Fq(\(p.)14 b(177\).)36 +b(The)27 b(bu\033er)h(to)f(setup)h(m)n(ust)g(b)r(e)g(of)f(t)n(yp)r(e)h +(FILE.)515 1526 y(The)34 b(argumen)n(ts)f Fm(put)g Fq(and)h +Fm(get)f Fq(are)h(iden)n(tical)g(to)g(those)g(that)g(need)h(to)f(b)r(e) +h(passed)e(to)515 1625 y Fs(fdev)m(op)s(en\(\))27 b Fq(\(p.)14 +b(177\).)515 1772 y(The)37 b Fm(rwflag)e Fq(argumen)n(t)h(can)h(tak)n +(e)f(one)h(of)g(the)h(v)-5 b(alues)36 b(_FDEV_SETUP_READ,)515 +1872 y(_FDEV_SETUP_WRITE,)55 b(or)d(_FDEV_SETUP_R)-9 +b(W,)54 b(for)f(read,)58 b(write,)h(or)515 1971 y(read/write)26 +b(in)n(ten)n(t,)h(resp)r(ectiv)n(ely)-7 b(.)506 2188 +y Fs(Note:)676 2337 y Fq(No)42 b(assignmen)n(ts)g(to)g(the)h(standard)e +(streams)h(will)g(b)r(e)h(p)r(erformed)f(b)n(y)i Fs(fdev_-)676 +2437 y(setup_stream\(\))28 b Fq(\(p.)14 b(175\).)38 b(If)29 +b(standard)e(streams)g(are)g(to)h(b)r(e)h(used,)f(these)g(need)676 +2537 y(to)e(b)r(e)g(assigned)f(b)n(y)h(the)g(user.)36 +b(See)26 b(also)f(under)g Fs(Running)k(stdio)g(without)h(mal-)676 +2636 y(lo)s(c\(\))d Fq(\(p.)14 b(170\).)515 2982 y Fs(22.9.2.12)92 +b(#de\034ne)31 b(FILE)h(struct)h(__\034le)515 3129 y +Fm(FILE)19 b Fq(is)i(the)g(opaque)f(structure)h(that)g(is)g(passed)f +(around)g(b)r(et)n(w)n(een)h(the)g(v)-5 b(arious)20 b(standard)515 +3229 y(IO)27 b(functions.)515 3492 y Fs(22.9.2.13)92 +b(#de\034ne)31 b(getc\(__stream\))h(fgetc\(__stream\))515 +3639 y Fq(The)25 b(macro)e Fm(getc)h Fq(used)g(to)h(b)r(e)g(a)g("fast") +f(macro)f(implemen)n(tation)i(with)h(a)e(functionalit)n(y)515 +3738 y(iden)n(tical)31 b(to)h Fs(fgetc\(\))h Fq(\(p.)14 +b(178\).)49 b(F)-7 b(or)31 b(space)g(constrain)n(ts,)h(in)g +Fm(avr-libc)p Fq(,)e(it)i(is)g(just)g(an)515 3838 y(alias)26 +b(for)h Fm(fgetc)p Fq(.)515 4101 y Fs(22.9.2.14)92 b(#de\034ne)31 +b(getc)m(har\(v)m(oid\))i(fgetc\(stdin\))515 4248 y Fq(The)k(macro)e +Fm(getchar)f Fq(reads)i(a)h(c)n(haracter)d(from)j Fm(stdin)p +Fq(.)63 b(Return)37 b(v)-5 b(alues)36 b(and)h(error)515 +4347 y(handling)27 b(is)g(iden)n(tical)h(to)f Fs(fgetc\(\))h +Fq(\(p.)14 b(178\).)515 4610 y Fs(22.9.2.15)92 b(#de\034ne)28 +b(putc\(__c,)60 b(__stream\))29 b(fputc\(__c,)i(__stream\))515 +4757 y Fq(The)25 b(macro)e Fm(putc)h Fq(used)g(to)h(b)r(e)g(a)g("fast") +f(macro)f(implemen)n(tation)i(with)h(a)e(functionalit)n(y)515 +4857 y(iden)n(tical)30 b(to)h Fs(fputc\(\))h Fq(\(p.)14 +b(178\).)46 b(F)-7 b(or)31 b(space)f(constrain)n(ts,)g(in)h +Fm(avr-libc)p Fq(,)e(it)i(is)g(just)g(an)515 4957 y(alias)26 +b(for)h Fm(fputc)p Fq(.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 176 192 +TeXDict begin 176 191 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(176)p 515 236 2865 4 v 515 523 a(22.9.2.16)92 b(#de\034ne)31 +b(putc)m(har\(__c\))k(fputc\(__c,)e(stdout\))515 670 +y Fq(The)27 b(macro)g Fm(putchar)d Fq(sends)k(c)n(haracter)d +Fm(c)i Fq(to)h Fm(stdout)p Fq(.)515 933 y Fs(22.9.2.17)92 +b(#de\034ne)31 b(stderr)h(\(__iob[2]\))515 1080 y Fq(Stream)42 +b(destined)i(for)e(error)f(output.)84 b(Unless)43 b(sp)r(eci\034cally)g +(assigned,)i(iden)n(tical)e(to)515 1179 y Fm(stdout)p +Fq(.)515 1326 y(If)37 b Fm(stderr)d Fq(should)i(p)r(oin)n(t)h(to)f +(another)g(stream,)i(the)f(result)f(of)h(another)e Fm(fdevopen\(\))515 +1426 y(\()p Fq(p.)14 b Fm(177\))28 b Fq(m)n(ust)j(b)r(e)f(explicitly)g +(assigned)f(to)h(it)h(without)f(closing)f(the)i(previous)e +Fm(stderr)515 1526 y Fq(\(since)e(this)h(w)n(ould)f(also)g(close)g +Fm(stdout)p Fq(\).)515 1789 y Fs(22.9.2.18)92 b(#de\034ne)31 +b(stdin)g(\(__iob[0]\))515 1935 y Fq(Stream)i(that)i(will)f(b)r(e)h +(used)f(as)f(an)h(input)h(stream)e(b)n(y)h(the)h(simpli\034ed)f +(functions)h(that)515 2035 y(don't)27 b(tak)n(e)g(a)g +Fm(stream)f Fq(argumen)n(t.)515 2182 y(The)36 b(\034rst)f(stream)g(op)r +(ened)h(with)h(read)e(in)n(ten)n(t)h(using)h Fm(fdevopen\(\))i(\()p +Fq(p.)14 b Fm(177\))35 b Fq(will)h(b)r(e)515 2282 y(assigned)26 +b(to)i Fm(stdin)p Fq(.)515 2545 y Fs(22.9.2.19)92 b(#de\034ne)31 +b(stdout)h(\(__iob[1]\))515 2691 y Fq(Stream)e(that)g(will)h(b)r(e)f +(used)g(as)g(an)g(output)h(stream)e(b)n(y)h(the)h(simpli\034ed)f +(functions)h(that)515 2791 y(don't)c(tak)n(e)g(a)g Fm(stream)f +Fq(argumen)n(t.)515 2938 y(The)33 b(\034rst)g(stream)f(op)r(ened)h +(with)h(write)f(in)n(ten)n(t)g(using)h Fm(fdevopen\(\))40 +b(\()p Fq(p.)14 b Fm(177\))31 b Fq(will)j(b)r(e)515 3038 +y(assigned)26 b(to)i(b)r(oth,)g Fm(stdin)p Fq(,)d(and)j +Fm(stderr)p Fq(.)515 3301 y Fs(22.9.3)93 b(F)-8 b(unction)32 +b(Do)s(cumen)m(tation)515 3501 y(22.9.3.1)92 b(v)m(oid)32 +b(clearerr)h(\(FILE)f Fh(\003)f Fc(__str)-5 b(e)g(am)p +Fs(\))515 3648 y Fq(Clear)26 b(the)i(error)e(and)h(end-of-\034le)g +(\035ags)g(of)g Fm(stream)p Fq(.)515 3911 y Fs(22.9.3.2)92 +b(in)m(t)32 b(fclose)f(\(FILE)i Fh(\003)e Fc(__str)-5 +b(e)g(am)p Fs(\))515 4058 y Fq(This)27 b(function)h(closes)f +Fm(stream)p Fq(,)e(and)i(disallo)n(ws)f(and)i(further)f(IO)g(to)h(and)f +(from)h(it.)515 4205 y(When)23 b(using)g Fs(fdev)m(op)s(en\(\))g +Fq(\(p.)14 b(177\))22 b(to)h(setup)g(the)g(stream,)g(a)f(call)g(to)h +Fs(fclose\(\))f Fq(\(p.)14 b(176\))515 4304 y(is)27 b(needed)h(in)g +(order)e(to)h(free)h(the)g(in)n(ternal)e(resources)g(allo)r(cated.)515 +4451 y(If)52 b(the)h(stream)e(has)g(b)r(een)i(set)f(up)g(using)h +Fs(fdev_setup_stream\(\))g Fq(\(p.)14 b(175\))51 b(or)515 +4551 y Fs(FDEV_SETUP_STREAM\(\))29 b Fq(\(p.)14 b(174\),)26 +b(use)i Fs(fdev_close\(\))f Fq(\(p.)14 b(174\))27 b(instead.)515 +4698 y(It)h(curren)n(tly)e(alw)n(a)n(ys)g(returns)h(0)g(\(for)g +(success\).)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 177 193 +TeXDict begin 177 192 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(177)p 515 236 2865 4 v 515 523 a(22.9.3.3)92 b(FILE)p +Fh(\003)37 b Fs(fdev)m(op)s(en)f(\(in)m(t\()p Fh(\003)p +Fs(\)\(c)m(har,)i(FILE)f Fh(\003)p Fs(\))f Fc(put)p Fs(,)74 +b(in)m(t\()p Fh(\003)p Fs(\)\(FILE)36 b Fh(\003)p Fs(\))515 +623 y Fc(get)p Fs(\))515 770 y Fq(This)27 b(function)h(is)g(a)f +(replacemen)n(t)g(for)g Fm(fopen\(\))p Fq(.)515 916 y(It)f(op)r(ens)f +(a)h(stream)e(for)i(a)f(device)g(where)g(the)h(actual)g(device)f +(implemen)n(tation)h(needs)f(to)515 1016 y(b)r(e)j(pro)n(vided)f(b)n(y) +h(the)h(application.)38 b(If)28 b(successful,)g(a)g(p)r(oin)n(ter)g(to) +g(the)g(structure)g(for)g(the)515 1116 y(op)r(ened)d(stream)g(is)g +(returned.)35 b(Reasons)24 b(for)h(a)g(p)r(ossible)g(failure)g(curren)n +(tly)f(include)i(that)515 1215 y(neither)j(the)h Fm(put)e +Fq(nor)h(the)h Fm(get)e Fq(argumen)n(t)h(ha)n(v)n(e)f(b)r(een)i(pro)n +(vided,)f(th)n(us)g(attempting)h(to)515 1315 y(op)r(en)e(a)f(stream)g +(with)i(no)f(IO)f(in)n(ten)n(t)h(at)g(all,)g(or)f(that)h(insu\036cien)n +(t)g(dynamic)g(memory)f(is)515 1415 y(a)n(v)-5 b(ailable)26 +b(to)h(establish)h(a)f(new)g(stream.)515 1561 y(If)h(the)g +Fm(put)e Fq(function)j(p)r(oin)n(ter)e(is)g(pro)n(vided,)g(the)h +(stream)f(is)h(op)r(ened)f(with)h(write)g(in)n(ten)n(t.)515 +1661 y(The)k(function)i(passed)d(as)h Fm(put)g Fq(shall)g(tak)n(e)g(t)n +(w)n(o)g(argumen)n(ts,)g(the)h(\034rst)g(a)f(c)n(haracter)e(to)515 +1761 y(write)c(to)h(the)h(device,)f(and)f(the)i(second)e(a)h(p)r(oin)n +(ter)f(to)h(FILE,)h(and)f(shall)f(return)h(0)f(if)i(the)515 +1860 y(output)d(w)n(as)g(successful,)g(and)g(a)g(nonzero)f(v)-5 +b(alue)25 b(if)h(the)f(c)n(haracter)e(could)i(not)h(b)r(e)f(sen)n(t)g +(to)515 1960 y(the)j(device.)515 2107 y(If)i(the)g Fm(get)f +Fq(function)h(p)r(oin)n(ter)f(is)h(pro)n(vided,)f(the)h(stream)f(is)h +(op)r(ened)g(with)g(read)f(in)n(ten)n(t.)515 2206 y(The)d(function)g +(passed)g(as)f Fm(get)g Fq(shall)g(tak)n(e)h(a)f(p)r(oin)n(ter)h(to)g +(FILE)g(as)g(its)g(single)f(argumen)n(t,)515 2306 y(and)33 +b(return)f(one)h(c)n(haracter)d(from)j(the)g(device,)i(passed)d(as)g +(an)h Fm(int)f Fq(t)n(yp)r(e.)53 b(If)33 b(an)g(error)515 +2406 y(o)r(ccurs)20 b(when)i(trying)f(to)g(read)f(from)h(the)h(device,) +h(it)f(shall)f(return)f Fm(_FDEV_ERR)p Fq(.)e(If)k(an)f(end-)515 +2505 y(of-\034le)26 b(condition)g(w)n(as)f(reac)n(hed)g(while)h +(reading)f(from)h(the)g(device,)g Fm(_FDEV_EOF)d Fq(shall)j(b)r(e)515 +2605 y(returned.)515 2752 y(If)f(b)r(oth)f(functions)h(are)e(pro)n +(vided,)h(the)h(stream)f(is)g(op)r(ened)g(with)h(read)e(and)i(write)f +(in)n(ten)n(t.)515 2899 y(The)h(\034rst)g(stream)g(op)r(ened)g(with)h +(read)f(in)n(ten)n(t)h(is)f(assigned)f(to)h Fm(stdin)p +Fq(,)f(and)i(the)f(\034rst)g(one)515 2998 y(op)r(ened)i(with)h(write)g +(in)n(ten)n(t)g(is)f(assigned)f(to)i(b)r(oth,)g Fm(stdout)d +Fq(and)i Fm(stderr)p Fq(.)515 3145 y Fs(fdev)m(op)s(en\(\))41 +b Fq(\(p.)14 b(177\))40 b(uses)h Fs(callo)s(c\(\))g Fq(\(p.)14 +b(192\))40 b(\(und)h(th)n(us)g Fs(mallo)s(c\(\))f Fq(\(p.)14 +b(195\)\))41 b(in)515 3245 y(order)26 b(to)h(allo)r(cate)g(the)h +(storage)e(for)h(the)h(new)f(stream.)506 3457 y Fs(Note:)676 +3606 y Fq(If)38 b(the)g(macro)d(__STDIO_FDEV)n(OPEN_COMP)-7 +b(A)g(T_12)37 b(is)g(declared)f(b)r(efore)676 3706 y(including)19 +b Fo(<)p Fs(stdio.h)e Fq(\(p.)d(382\))p Fo(>)p Fq(,)20 +b(a)e(function)i(protot)n(yp)r(e)e(for)g Fs(fdev)m(op)s(en\(\))h +Fq(\(p.)14 b(177\))676 3805 y(will)31 b(b)r(e)g(c)n(hosen)f(that)h(is)g +(bac)n(kw)n(ards)d(compatible)i(with)i(a)n(vr-lib)r(c)d(v)n(ersion)g +(1.2)h(and)676 3905 y(b)r(efore.)k(This)20 b(is)f(solely)g(in)n(ten)n +(ted)h(for)g(pro)n(viding)e(a)h(simple)h(migration)f(path)h(without)676 +4005 y(the)28 b(need)g(to)f(immediately)h(c)n(hange)e(all)h(source)g +(co)r(de.)36 b(Do)28 b(not)g(use)f(for)g(new)h(co)r(de.)515 +4351 y Fs(22.9.3.4)92 b(in)m(t)32 b(feof)g(\(FILE)g Fh(\003)f +Fc(__str)-5 b(e)g(am)p Fs(\))515 4498 y Fq(T)e(est)33 +b(the)h(end-of-\034le)e(\035ag)h(of)g Fm(stream)p Fq(.)51 +b(This)33 b(\035ag)f(can)h(only)g(b)r(e)h(cleared)e(b)n(y)h(a)f(call)h +(to)515 4597 y Fs(clearerr\(\))28 b Fq(\(p.)14 b(176\).)515 +4860 y Fs(22.9.3.5)92 b(in)m(t)32 b(ferror)h(\(FILE)f +Fh(\003)f Fc(__str)-5 b(e)g(am)p Fs(\))p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 178 194 +TeXDict begin 178 193 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(178)p 515 236 2865 4 v 515 523 a Fq(T)-7 b(est)28 b(the)h(error)e +(\035ag)h(of)g Fm(stream)p Fq(.)38 b(This)29 b(\035ag)e(can)i(only)f(b) +r(e)h(cleared)e(b)n(y)i(a)f(call)g(to)h Fs(clear-)515 +623 y(err\(\))f Fq(\(p.)14 b(176\).)515 886 y Fs(22.9.3.6)92 +b(in)m(t)32 b(\037ush)f(\(FILE)i Fh(\003)e Fc(str)-5 +b(e)g(am)p Fs(\))515 1033 y Fq(Flush)28 b Fm(stream)p +Fq(.)515 1179 y(This)41 b(is)f(a)h(n)n(ull)g(op)r(eration)f(pro)n +(vided)g(for)g(source-co)r(de)f(compatibilit)n(y)i(only)-7 +b(,)43 b(as)e(the)515 1279 y(standard)26 b(IO)h(implemen)n(tation)h +(curren)n(tly)f(do)r(es)g(not)g(p)r(erform)g(an)n(y)g(bu\033ering.)515 +1542 y Fs(22.9.3.7)92 b(in)m(t)32 b(fgetc)g(\(FILE)h +Fh(\003)e Fc(__str)-5 b(e)g(am)p Fs(\))515 1689 y Fq(The)33 +b(function)i Fm(fgetc)c Fq(reads)i(a)g(c)n(haracter)e(from)j +Fm(stream)p Fq(.)52 b(It)34 b(returns)f(the)h(c)n(haracter,)515 +1789 y(or)d Fm(EOF)h Fq(in)h(case)e(end-of-\034le)h(w)n(as)g(encoun)n +(tered)f(or)h(an)g(error)f(o)r(ccurred.)50 b(The)33 b(routines)515 +1888 y Fs(feof\(\))f Fq(\(p.)14 b(177\))32 b(or)f Fs(ferror\(\))i +Fq(\(p.)14 b(177\))32 b(m)n(ust)g(b)r(e)h(used)f(to)g(distinguish)g(b)r +(et)n(w)n(een)h(b)r(oth)515 1988 y(situations.)515 2251 +y Fs(22.9.3.8)92 b(c)m(har)p Fh(\003)31 b Fs(fgets)f(\(c)m(har)h +Fh(\003)e Fc(__str)p Fs(,)60 b(in)m(t)29 b Fc(__size)p +Fs(,)59 b(FILE)31 b Fh(\003)e Fc(__str)-5 b(e)g(am)p +Fs(\))515 2497 y Fq(Read)31 b(at)g(most)g Fm(size)42 +b(-)h(1)31 b Fq(b)n(ytes)g(from)g Fm(stream)p Fq(,)f(un)n(til)i(a)f +(newline)h(c)n(haracter)d(w)n(as)h(en-)515 2597 y(coun)n(tered,)e(and)h +(store)f(the)i(c)n(haracters)d(in)i(the)h(bu\033er)f(p)r(oin)n(ted)g +(to)g(b)n(y)g Fm(str)p Fq(.)40 b(Unless)29 b(an)515 2697 +y(error)d(w)n(as)h(encoun)n(tered)h(while)g(reading,)g(the)h(string)e +(will)i(then)g(b)r(e)f(terminated)h(with)f(a)515 2796 +y Fm(NUL)e Fq(c)n(haracter.)515 2943 y(If)i(an)g(error)e(w)n(as)h +(encoun)n(tered,)g(the)i(function)f(returns)f(NULL)i(and)f(sets)f(the)i +(error)d(\035ag)515 3043 y(of)f Fm(stream)p Fq(,)e(whic)n(h)i(can)g(b)r +(e)h(tested)f(using)h Fs(ferror\(\))h Fq(\(p.)14 b(177\).)35 +b(Otherwise,)25 b(a)f(p)r(oin)n(ter)h(to)515 3142 y(the)j(string)f +(will)g(b)r(e)h(returned.)515 3405 y Fs(22.9.3.9)92 b(in)m(t)32 +b(fprin)m(tf)h(\(FILE)f Fh(\003)f Fc(__str)-5 b(e)g(am)p +Fs(,)63 b(const)32 b(c)m(har)h Fh(\003)f Fc(__fmt)p Fs(,)62 +b Fc(...)p Fs(\))515 3552 y Fq(The)30 b(function)g Fm(fprintf)d +Fq(p)r(erforms)i(formatted)h(output)g(to)g Fm(stream)p +Fq(.)41 b(See)30 b Fm(vfprintf\(\))515 3652 y(\()p Fq(p.)14 +b Fm(181\))26 b Fq(for)h(details.)515 3915 y Fs(22.9.3.10)92 +b(in)m(t)42 b(fprin)m(tf_P)i(\(FILE)e Fh(\003)g Fc(__str)-5 +b(e)g(am)p Fs(,)89 b(const)42 b(c)m(har)i Fh(\003)e Fc(__fmt)p +Fs(,)515 4014 y Fc(...)p Fs(\))515 4161 y Fq(V)-7 b(arian)n(t)29 +b(of)37 b Fm(fprintf\(\))j(\()p Fq(p.)14 b Fm(178\))29 +b Fq(that)i(uses)f(a)g Fm(fmt)f Fq(string)g(that)i(resides)f(in)g +(program)515 4261 y(memory)-7 b(.)515 4524 y Fs(22.9.3.11)92 +b(in)m(t)32 b(fputc)h(\(in)m(t)e Fc(__c)p Fs(,)63 b(FILE)32 +b Fh(\003)f Fc(__str)-5 b(e)g(am)p Fs(\))515 4671 y Fq(The)22 +b(function)g Fm(fputc)e Fq(sends)i(the)h(c)n(haracter)d +Fm(c)h Fq(\(though)h(giv)n(en)g(as)f(t)n(yp)r(e)h Fm(int)p +Fq(\))g(to)f Fm(stream)p Fq(.)515 4770 y(It)28 b(returns)e(the)i(c)n +(haracter,)e(or)h Fm(EOF)f Fq(in)i(case)f(an)g(error)e(o)r(ccurred.)p +515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 179 195 +TeXDict begin 179 194 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(179)p 515 236 2865 4 v 515 523 a(22.9.3.12)92 b(in)m(t)32 +b(fputs)g(\(const)g(c)m(har)h Fh(\003)e Fc(__str)p Fs(,)62 +b(FILE)33 b Fh(\003)e Fc(__str)-5 b(e)g(am)p Fs(\))515 +670 y Fq(W)e(rite)28 b(the)f(string)g(p)r(oin)n(ted)h(to)g(b)n(y)f +Fm(str)f Fq(to)i(stream)e Fm(stream)p Fq(.)515 817 y(Returns)h(0)g(on)h +(success)e(and)i(EOF)g(on)f(error.)515 1080 y Fs(22.9.3.13)92 +b(in)m(t)32 b(fputs_P)g(\(const)g(c)m(har)h Fh(\003)f +Fc(__str)p Fs(,)62 b(FILE)32 b Fh(\003)f Fc(__str)-5 +b(e)g(am)p Fs(\))515 1227 y Fq(V)e(arian)n(t)26 b(of)34 +b Fs(fputs\(\))28 b Fq(\(p.)14 b(179\))27 b(where)g Fm(str)f +Fq(resides)h(in)h(program)d(memory)-7 b(.)515 1490 y +Fs(22.9.3.14)92 b(size_t)34 b(fread)h(\(v)m(oid)g Fh(\003)f +Fc(__ptr)p Fs(,)68 b(size_t)34 b Fc(__size)p Fs(,)68 +b(size_t)35 b Fc(__-)515 1589 y(nmemb)p Fs(,)64 b(FILE)32 +b Fh(\003)f Fc(__str)-5 b(e)g(am)p Fs(\))515 1736 y Fq(Read)26 +b Fm(nmemb)f Fq(ob)5 b(jects,)26 b Fm(size)g Fq(b)n(ytes)g(eac)n(h,)g +(from)h Fm(stream)p Fq(,)d(to)j(the)g(bu\033er)g(p)r(oin)n(ted)g(to)f +(b)n(y)515 1836 y Fm(ptr)p Fq(.)515 1983 y(Returns)e(the)i(n)n(um)n(b)r +(er)e(of)h(ob)5 b(jects)24 b(successfully)h(read,)f(i.)36 +b(e.)g Fm(nmemb)23 b Fq(unless)i(an)f(input)i(er-)515 +2082 y(ror)21 b(o)r(ccured)h(or)g(end-of-\034le)g(w)n(as)g(encoun)n +(tered.)35 b Fs(feof\(\))23 b Fq(\(p.)14 b(177\))22 b(and)g +Fs(ferror\(\))i Fq(\(p.)14 b(177\))515 2182 y(m)n(ust)27 +b(b)r(e)h(used)g(to)f(distinguish)h(b)r(et)n(w)n(een)f(these)h(t)n(w)n +(o)f(conditions.)515 2445 y Fs(22.9.3.15)92 b(in)m(t)31 +b(fscanf)h(\(FILE)g Fh(\003)e Fc(__str)-5 b(e)g(am)p +Fs(,)62 b(const)31 b(c)m(har)i Fh(\003)e Fc(__fmt)p Fs(,)61 +b Fc(...)p Fs(\))515 2592 y Fq(The)36 b(function)g Fm(fscanf)e +Fq(p)r(erforms)h(formatted)g(input,)k(reading)c(the)h(input)h(data)e +(from)515 2691 y Fm(stream)p Fq(.)515 2838 y(See)27 b +Fs(vfscanf\(\))i Fq(\(p.)14 b(185\))27 b(for)g(details.)515 +3101 y Fs(22.9.3.16)92 b(in)m(t)26 b(fscanf_P)h(\(FILE)f +Fh(\003)f Fc(__str)-5 b(e)g(am)p Fs(,)53 b(const)25 b(c)m(har)i +Fh(\003)f Fc(__fmt)p Fs(,)52 b Fc(...)p Fs(\))515 3348 +y Fq(V)-7 b(arian)n(t)26 b(of)34 b Fs(fscanf\(\))29 b +Fq(\(p.)14 b(179\))27 b(using)g(a)g Fm(fmt)g Fq(string)f(in)i(program)e +(memory)-7 b(.)515 3611 y Fs(22.9.3.17)92 b(size_t)27 +b(fwrite)g(\(const)h(v)m(oid)f Fh(\003)g Fc(__ptr)p Fs(,)54 +b(size_t)27 b Fc(__size)p Fs(,)55 b(size_t)515 3710 y +Fc(__nmemb)p Fs(,)63 b(FILE)32 b Fh(\003)g Fc(__str)-5 +b(e)g(am)p Fs(\))515 3857 y Fq(W)e(rite)35 b Fm(nmemb)f +Fq(ob)5 b(jects,)37 b Fm(size)c Fq(b)n(ytes)i(eac)n(h,)i(to)e +Fm(stream)p Fq(.)58 b(The)36 b(\034rst)f(b)n(yte)g(of)h(the)f(\034rst) +515 3957 y(ob)5 b(ject)27 b(is)h(referenced)e(b)n(y)i +Fm(ptr)p Fq(.)515 4104 y(Returns)21 b(the)h(n)n(um)n(b)r(er)f(of)h(ob)5 +b(jects)21 b(successfully)g(written,)i(i.)35 b(e.)g Fm(nmemb)19 +b Fq(unless)i(an)h(output)515 4203 y(error)j(o)r(ccured.)515 +4466 y Fs(22.9.3.18)92 b(c)m(har)p Fh(\003)33 b Fs(gets)e(\(c)m(har)i +Fh(\003)f Fc(__str)p Fs(\))515 4613 y Fq(Similar)k(to)h +Fs(fgets\(\))f Fq(\(p.)14 b(178\))36 b(except)g(that)h(it)g(will)g(op)r +(erate)f(on)g(stream)g Fm(stdin)p Fq(,)h(and)515 4713 +y(the)c(trailing)f(newline)h(\(if)h(an)n(y\))f(will)g(not)g(b)r(e)g +(stored)g(in)g(the)g(string.)53 b(It)33 b(is)g(the)g(caller's)515 +4813 y(resp)r(onsibilit)n(y)26 b(to)i(pro)n(vide)e(enough)h(storage)f +(to)h(hold)h(the)g(c)n(haracters)d(read.)p 515 5179 V +515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 180 196 +TeXDict begin 180 195 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(180)p 515 236 2865 4 v 515 523 a(22.9.3.19)92 b(in)m(t)32 +b(prin)m(tf)g(\(const)g(c)m(har)h Fh(\003)f Fc(__fmt)p +Fs(,)62 b Fc(...)p Fs(\))515 670 y Fq(The)51 b(function)h +Fm(printf)c Fq(p)r(erforms)j(formatted)g(output)g(to)g(stream)g +Fm(stderr)p Fq(.)105 b(See)515 770 y Fm(vfprintf\(\))39 +b(\()p Fq(p.)14 b Fm(181\))26 b Fq(for)h(details.)515 +1033 y Fs(22.9.3.20)92 b(in)m(t)32 b(prin)m(tf_P)h(\(const)f(c)m(har)h +Fh(\003)e Fc(__fmt)p Fs(,)63 b Fc(...)p Fs(\))515 1179 +y Fq(V)-7 b(arian)n(t)33 b(of)41 b Fm(printf\(\))f(\()p +Fq(p.)14 b Fm(180\))33 b Fq(that)i(uses)f(a)g Fm(fmt)f +Fq(string)h(that)g(resides)g(in)g(program)515 1279 y(memory)-7 +b(.)515 1542 y Fs(22.9.3.21)92 b(in)m(t)32 b(puts)g(\(const)f(c)m(har)j +Fh(\003)d Fc(__str)p Fs(\))515 1689 y Fq(W)-7 b(rite)25 +b(the)g(string)f(p)r(oin)n(ted)h(to)f(b)n(y)h Fm(str)p +Fq(,)f(and)h(a)f(trailing)g(newline)h(c)n(haracter,)e(to)h +Fm(stdout)p Fq(.)515 2052 y Fs(22.9.3.22)92 b(in)m(t)32 +b(puts_P)g(\(const)g(c)m(har)h Fh(\003)f Fc(__str)p Fs(\))515 +2198 y Fq(V)-7 b(arian)n(t)26 b(of)34 b Fs(puts\(\))28 +b Fq(\(p.)14 b(180\))27 b(where)g Fm(str)f Fq(resides)h(in)h(program)d +(memory)-7 b(.)515 2461 y Fs(22.9.3.23)92 b(in)m(t)32 +b(scanf)g(\(const)g(c)m(har)i Fh(\003)d Fc(__fmt)p Fs(,)63 +b Fc(...)p Fs(\))515 2608 y Fq(The)27 b(function)h Fm(scanf)e +Fq(p)r(erforms)h(formatted)g(input)h(from)g(stream)e +Fm(stdin)p Fq(.)515 2755 y(See)h Fs(vfscanf\(\))i Fq(\(p.)14 +b(185\))27 b(for)g(details.)515 3018 y Fs(22.9.3.24)92 +b(in)m(t)32 b(scanf_P)h(\(const)f(c)m(har)h Fh(\003)e +Fc(__fmt)p Fs(,)63 b Fc(...)p Fs(\))515 3165 y Fq(V)-7 +b(arian)n(t)26 b(of)34 b Fs(scanf\(\))29 b Fq(\(p.)14 +b(180\))27 b(where)g Fm(fmt)f Fq(resides)h(in)h(program)d(memory)-7 +b(.)515 3428 y Fs(22.9.3.25)92 b(in)m(t)32 b(snprin)m(tf)g(\(c)m(har)i +Fh(\003)d Fc(__s)p Fs(,)63 b(size_t)32 b Fc(__n)p Fs(,)62 +b(const)32 b(c)m(har)h Fh(\003)f Fc(__-)515 3528 y(fmt)p +Fs(,)63 b Fc(...)p Fs(\))515 3675 y Fq(Lik)n(e)33 b Fm(sprintf\(\))39 +b(\()p Fq(p.)15 b Fm(181\))p Fq(,)33 b(but)h(instead)f(of)g(assuming)g +Fm(s)g Fq(to)g(b)r(e)h(of)f(in\034nite)h(size,)g(no)515 +3774 y(more)22 b(than)i Fm(n)f Fq(c)n(haracters)e(\(including)j(the)f +(trailing)g(NUL)h(c)n(haracter\))d(will)j(b)r(e)g(con)n(v)n(erted)515 +3874 y(to)j Fm(s)p Fq(.)515 4021 y(Returns)33 b(the)h(n)n(um)n(b)r(er)g +(of)g(c)n(haracters)d(that)j(w)n(ould)f(ha)n(v)n(e)g(b)r(een)h(written) +g(to)g Fm(s)f Fq(if)h(there)515 4120 y(w)n(ere)26 b(enough)h(space.)515 +4383 y Fs(22.9.3.26)92 b(in)m(t)38 b(snprin)m(tf_P)h(\(c)m(har)h +Fh(\003)d Fc(__s)p Fs(,)78 b(size_t)38 b Fc(__n)p Fs(,)78 +b(const)38 b(c)m(har)h Fh(\003)515 4483 y Fc(__fmt)p +Fs(,)62 b Fc(...)p Fs(\))515 4630 y Fq(V)-7 b(arian)n(t)25 +b(of)33 b Fm(snprintf\(\))39 b(\()p Fq(p.)15 b Fm(180\))25 +b Fq(that)h(uses)g(a)g Fm(fmt)g Fq(string)f(that)i(resides)e(in)i +(program)515 4729 y(memory)-7 b(.)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 181 197 +TeXDict begin 181 196 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(181)p 515 236 2865 4 v 515 523 a(22.9.3.27)92 b(in)m(t)32 +b(sprin)m(tf)g(\(c)m(har)h Fh(\003)f Fc(__s)p Fs(,)62 +b(const)32 b(c)m(har)h Fh(\003)f Fc(__fmt)p Fs(,)62 b +Fc(...)p Fs(\))515 670 y Fq(V)-7 b(arian)n(t)24 b(of)32 +b Fm(printf\(\))40 b(\()p Fq(p.)15 b Fm(180\))23 b Fq(that)j(sends)f +(the)h(formatted)f(c)n(haracters)e(to)i(string)g Fm(s)p +Fq(.)515 933 y Fs(22.9.3.28)92 b(in)m(t)32 b(sprin)m(tf_P)g(\(c)m(har)i +Fh(\003)d Fc(__s)p Fs(,)63 b(const)32 b(c)m(har)h Fh(\003)e +Fc(__fmt)p Fs(,)63 b Fc(...)p Fs(\))515 1080 y Fq(V)-7 +b(arian)n(t)29 b(of)37 b Fm(sprintf\(\))j(\()p Fq(p.)14 +b Fm(181\))29 b Fq(that)i(uses)f(a)g Fm(fmt)f Fq(string)g(that)i +(resides)f(in)g(program)515 1179 y(memory)-7 b(.)515 +1442 y Fs(22.9.3.29)92 b(in)m(t)32 b(sscanf)g(\(const)h(c)m(har)g +Fh(\003)f Fc(__buf)p Fs(,)62 b(const)32 b(c)m(har)i Fh(\003)d +Fc(__fmt)p Fs(,)63 b Fc(...)p Fs(\))515 1689 y Fq(The)22 +b(function)h Fm(sscanf)d Fq(p)r(erforms)h(formatted)h(input,)i(reading) +d(the)i(input)g(data)f(from)g(the)515 1789 y(bu\033er)27 +b(p)r(oin)n(ted)h(to)g(b)n(y)f Fm(buf)p Fq(.)515 1935 +y(See)g Fs(vfscanf\(\))i Fq(\(p.)14 b(185\))27 b(for)g(details.)515 +2198 y Fs(22.9.3.30)92 b(in)m(t)37 b(sscanf_P)h(\(const)e(c)m(har)j +Fh(\003)d Fc(__buf)p Fs(,)75 b(const)36 b(c)m(har)j Fh(\003)d +Fc(__fmt)p Fs(,)515 2298 y Fc(...)p Fs(\))515 2445 y +Fq(V)-7 b(arian)n(t)26 b(of)34 b Fs(sscanf\(\))29 b Fq(\(p.)14 +b(181\))26 b(using)i(a)f Fm(fmt)f Fq(string)h(in)h(program)d(memory)-7 +b(.)515 2708 y Fs(22.9.3.31)92 b(in)m(t)32 b(ungetc)g(\(in)m(t)g +Fc(__c)p Fs(,)62 b(FILE)32 b Fh(\003)g Fc(__str)-5 b(e)g(am)p +Fs(\))515 2855 y Fq(The)18 b Fs(ungetc\(\))h Fq(\(p.)14 +b(181\))k(function)h(pushes)g(the)g(c)n(haracter)d Fm(c)i +Fq(\(con)n(v)n(erted)g(to)g(an)g(unsigned)515 2954 y(c)n(har\))40 +b(bac)n(k)g(on)n(to)g(the)i(input)g(stream)e(p)r(oin)n(ted)h(to)g(b)n +(y)g Fm(stream)p Fq(.)75 b(The)41 b(pushed-bac)n(k)515 +3054 y(c)n(haracter)25 b(will)j(b)r(e)g(returned)f(b)n(y)g(a)g +(subsequen)n(t)h(read)e(on)i(the)g(stream.)515 3201 y(Curren)n(tly)-7 +b(,)26 b(only)i(a)f(single)g(c)n(haracter)e(can)i(b)r(e)h(pushed)g(bac) +n(k)f(on)n(to)g(the)g(stream.)515 3348 y(The)38 b Fs(ungetc\(\))h +Fq(\(p.)14 b(181\))38 b(function)h(returns)f(the)h(c)n(haracter)e +(pushed)i(bac)n(k)e(after)i(the)515 3447 y(con)n(v)n(ersion,)20 +b(or)h Fm(EOF)g Fq(if)i(the)f(op)r(eration)f(fails.)34 +b(If)23 b(the)f(v)-5 b(alue)22 b(of)g(the)g(argumen)n(t)f +Fm(c)g Fq(c)n(haracter)515 3547 y(equals)27 b Fm(EOF)p +Fq(,)f(the)i(op)r(eration)e(will)i(fail)g(and)f(the)h(stream)f(will)h +(remain)f(unc)n(hanged.)515 3810 y Fs(22.9.3.32)92 b(in)m(t)25 +b(vfprin)m(tf)g(\(FILE)h Fh(\003)e Fc(__str)-5 b(e)g(am)p +Fs(,)51 b(const)25 b(c)m(har)h Fh(\003)e Fc(__fmt)p Fs(,)51 +b(v)-5 b(a_-)515 3910 y(list)30 b Fc(__ap)p Fs(\))515 +4057 y Fm(vfprintf)g Fq(is)j(the)h(cen)n(tral)e(facilit)n(y)h(of)h(the) +f Fm(printf)e Fq(family)i(of)h(functions.)54 b(It)34 +b(outputs)515 4156 y(v)-5 b(alues)34 b(to)g Fm(stream)d +Fq(under)j(con)n(trol)f(of)h(a)g(format)g(string)f(passed)g(in)i +Fm(fmt)p Fq(.)55 b(The)35 b(actual)515 4256 y(v)-5 b(alues)27 +b(to)g(prin)n(t)h(are)e(passed)h(as)g(a)g(v)-5 b(ariable)27 +b(argumen)n(t)f(list)i Fm(ap)p Fq(.)515 4403 y Fm(vfprintf)21 +b Fq(returns)j(the)h(n)n(um)n(b)r(er)f(of)h(c)n(haracters)d(written)j +(to)f Fm(stream)p Fq(,)f(or)h Fm(EOF)f Fq(in)i(case)f(of)515 +4502 y(an)29 b(error.)39 b(Curren)n(tly)-7 b(,)29 b(this)g(will)g(only) +g(happ)r(en)g(if)h Fm(stream)c Fq(has)j(not)g(b)r(een)h(op)r(ened)f +(with)515 4602 y(write)e(in)n(ten)n(t.)515 4749 y(The)k(format)f +(string)g(is)h(comp)r(osed)f(of)h(zero)f(or)g(more)g(directiv)n(es:)42 +b(ordinary)29 b(c)n(haracters)515 4848 y(\(not)23 b Fm(\045)p +Fq(\),)h(whic)n(h)g(are)e(copied)h(unc)n(hanged)f(to)h(the)h(output)g +(stream;)f(and)h(con)n(v)n(ersion)c(sp)r(ec-)515 4948 +y(i\034cations,)26 b(eac)n(h)f(of)i(whic)n(h)f(results)g(in)h(fetc)n +(hing)f(zero)f(or)h(more)f(subsequen)n(t)h(argumen)n(ts.)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 182 198 +TeXDict begin 182 197 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(182)p 515 236 2865 4 v 515 523 a Fq(Eac)n(h)28 b(con)n(v)n(ersion)e +(sp)r(eci\034cation)i(is)g(in)n(tro)r(duced)g(b)n(y)h(the)f +Fm(\045)h Fq(c)n(haracter.)37 b(The)28 b(argumen)n(ts)515 +623 y(m)n(ust)g(prop)r(erly)e(corresp)r(ond)g(\(after)i(t)n(yp)r(e)g +(promotion\))f(with)h(the)g(con)n(v)n(ersion)d(sp)r(eci\034er.)515 +722 y(After)j(the)g Fm(\045)p Fq(,)f(the)h(follo)n(wing)e(app)r(ear)h +(in)h(sequence:)639 952 y Fk(\210)41 b Fq(Zero)27 b(or)f(more)h(of)h +(the)f(follo)n(wing)g(\035ags:)816 1118 y Fs(\025)41 +b Fm(#)33 b Fq(The)g(v)-5 b(alue)33 b(should)g(b)r(e)h(con)n(v)n(erted) +e(to)h(an)g("alternate)f(form".)53 b(F)-7 b(or)32 b(c,)j(d,)905 +1218 y(i,)c(s,)f(and)g(u)h(con)n(v)n(ersions,)d(this)i(option)g(has)f +(no)h(e\033ect.)45 b(F)-7 b(or)29 b(o)h(con)n(v)n(ersions,)905 +1317 y(the)i(precision)f(of)i(the)f(n)n(um)n(b)r(er)g(is)g(increased)f +(to)h(force)f(the)h(\034rst)g(c)n(haracter)905 1417 y(of)d(the)g +(output)h(string)e(to)h(a)g(zero)f(\(except)h(if)h(a)f(zero)f(v)-5 +b(alue)29 b(is)g(prin)n(ted)g(with)905 1517 y(an)k(explicit)g +(precision)g(of)g(zero\).)53 b(F)-7 b(or)32 b(x)h(and)g(X)h(con)n(v)n +(ersions,)e(a)h(non-zero)905 1616 y(result)25 b(has)g(the)h(string)f +(`0x')g(\(or)g(`0X')g(for)g(X)h(con)n(v)n(ersions\))d(prep)r(ended)j +(to)g(it.)816 1749 y Fs(\025)41 b Fm(0)36 b Fq(\(zero\))g(Zero)f +(padding.)64 b(F)-7 b(or)36 b(all)g(con)n(v)n(ersions,)g(the)h(con)n(v) +n(erted)e(v)-5 b(alue)36 b(is)905 1849 y(padded)e(on)g(the)g(left)h +(with)g(zeros)e(rather)g(than)h(blanks.)56 b(If)34 b(a)g(precision)f +(is)905 1948 y(giv)n(en)26 b(with)h(a)f(n)n(umeric)h(con)n(v)n(ersion)d +(\(d,)j(i,)g(o,)g(u,)g(i,)g(x,)g(and)g(X\),)g(the)g(0)f(\035ag)g(is)905 +2048 y(ignored.)816 2181 y Fs(\025)41 b Fm(-)20 b Fq(A)g(negativ)n(e)f +(\034eld)i(width)g(\035ag;)h(the)e(con)n(v)n(erted)f(v)-5 +b(alue)20 b(is)g(to)g(b)r(e)h(left)g(adjusted)905 2281 +y(on)33 b(the)g(\034eld)g(b)r(oundary)-7 b(.)53 b(The)33 +b(con)n(v)n(erted)e(v)-5 b(alue)33 b(is)g(padded)g(on)f(the)i(righ)n(t) +905 2380 y(with)19 b(blanks,)i(rather)c(than)i(on)g(the)g(left)h(with)g +(blanks)e(or)g(zeros.)33 b(A)19 b(-)g(o)n(v)n(errides)905 +2480 y(a)27 b(0)g(if)h(b)r(oth)g(are)f(giv)n(en.)816 +2613 y Fs(\025)41 b Fq(')26 b(')h(\(space\))f(A)g(blank)g(should)g(b)r +(e)h(left)g(b)r(efore)f(a)g(p)r(ositiv)n(e)g(n)n(um)n(b)r(er)f(pro)r +(duced)905 2712 y(b)n(y)i(a)g(signed)g(con)n(v)n(ersion)f(\(d,)i(or)e +(i\).)816 2845 y Fs(\025)41 b Fm(+)20 b Fq(A)h(sign)e(m)n(ust)i(alw)n +(a)n(ys)d(b)r(e)j(placed)f(b)r(efore)g(a)g(n)n(um)n(b)r(er)g(pro)r +(duced)g(b)n(y)g(a)g(signed)905 2945 y(con)n(v)n(ersion.)34 +b(A)28 b(+)g(o)n(v)n(errides)d(a)i(space)g(if)h(b)r(oth)g(are)e(used.) +639 3175 y Fk(\210)41 b Fq(An)28 b(optional)e(decimal)g(digit)h(string) +f(sp)r(ecifying)h(a)g(minim)n(um)g(\034eld)g(width.)37 +b(If)28 b(the)722 3274 y(con)n(v)n(erted)19 b(v)-5 b(alue)20 +b(has)g(few)n(er)g(c)n(haracters)e(than)j(the)g(\034eld)f(width,)j(it)e +(will)f(b)r(e)h(padded)722 3374 y(with)i(spaces)e(on)h(the)h(left)g +(\(or)e(righ)n(t,)i(if)g(the)f(left-adjustmen)n(t)h(\035ag)e(has)h(b)r +(een)h(giv)n(en\))722 3473 y(to)28 b(\034ll)g(out)f(the)h(\034eld)g +(width.)639 3640 y Fk(\210)41 b Fq(An)33 b(optional)e(precision,)g(in)h +(the)h(form)e(of)h(a)f(p)r(erio)r(d)h(.)49 b(follo)n(w)n(ed)31 +b(b)n(y)g(an)h(optional)722 3739 y(digit)f(string.)47 +b(If)31 b(the)h(digit)f(string)f(is)h(omitted,)h(the)g(precision)e(is)g +(tak)n(en)h(as)f(zero.)722 3839 y(This)g(giv)n(es)f(the)h(minim)n(um)g +(n)n(um)n(b)r(er)f(of)h(digits)g(to)f(app)r(ear)g(for)g(d,)i(i,)f(o,)g +(u,)h(x,)f(and)722 3938 y(X)f(con)n(v)n(ersions,)d(or)i(the)h(maxim)n +(um)g(n)n(um)n(b)r(er)f(of)g(c)n(haracters)f(to)h(b)r(e)h(prin)n(ted)f +(from)722 4038 y(a)f(string)g(for)g Fm(s)h Fq(con)n(v)n(ersions.)639 +4204 y Fk(\210)41 b Fq(An)33 b(optional)e Fm(l)h Fq(or)g +Fm(h)f Fq(length)i(mo)r(di\034er,)g(that)f(sp)r(eci\034es)g(that)h(the) +g(argumen)n(t)e(for)722 4304 y(the)d(d,)g(i,)g(o,)f(u,)h(x,)f(or)g(X)h +(con)n(v)n(ersion)d(is)j(a)f Fm("long)41 b(int")26 b +Fq(rather)h(than)g Fm(int)p Fq(.)36 b(The)27 b Fm(h)722 +4403 y Fq(is)h(ignored,)e(as)h Fm("short)41 b(int")26 +b Fq(is)i(equiv)-5 b(alen)n(t)27 b(to)g Fm(int)p Fq(.)639 +4569 y Fk(\210)41 b Fq(A)28 b(c)n(haracter)e(that)h(sp)r(eci\034es)h +(the)g(t)n(yp)r(e)g(of)f(con)n(v)n(ersion)e(to)j(b)r(e)g(applied.)515 +4799 y(The)f(con)n(v)n(ersion)f(sp)r(eci\034ers)g(and)i(their)f +(meanings)g(are:)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 183 199 +TeXDict begin 183 198 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(183)p 515 236 2865 4 v 639 523 a Fk(\210)41 b Fm(diouxX)27 +b Fq(The)i(in)n(t)h(\(or)e(appropriate)f(v)-5 b(arian)n(t\))29 +b(argumen)n(t)f(is)h(con)n(v)n(erted)f(to)h(signed)722 +623 y(decimal)i(\(d)g(and)g(i\),)h(unsigned)f(o)r(ctal)f(\(o\),)i +(unsigned)e(decimal)h(\(u\),)h(or)e(unsigned)722 722 +y(hexadecimal)39 b(\(x)i(and)f(X\))g(notation.)74 b(The)40 +b(letters)g("ab)r(cdef")g(are)f(used)h(for)f(x)722 822 +y(con)n(v)n(ersions;)26 b(the)i(letters)g("ABCDEF")g(are)f(used)h(for)g +(X)g(con)n(v)n(ersions.)36 b(The)28 b(pre-)722 922 y(cision,)23 +b(if)g(an)n(y)-7 b(,)23 b(giv)n(es)f(the)h(minim)n(um)g(n)n(um)n(b)r +(er)f(of)h(digits)f(that)h(m)n(ust)f(app)r(ear;)i(if)f(the)722 +1021 y(con)n(v)n(erted)j(v)-5 b(alue)28 b(requires)e(few)n(er)h +(digits,)g(it)h(is)g(padded)f(on)h(the)g(left)g(with)g(zeros.)639 +1183 y Fk(\210)41 b Fm(p)34 b Fq(The)h Fm(void)42 b Fh(\003)33 +b Fq(argumen)n(t)h(is)g(tak)n(en)g(as)f(an)h(unsigned)g(in)n(teger,)h +(and)g(con)n(v)n(erted)722 1283 y(similarly)27 b(as)g(a)g +Fm(\045#x)f Fq(command)h(w)n(ould)h(do.)639 1445 y Fk(\210)41 +b Fm(c)25 b Fq(The)f Fm(int)g Fq(argumen)n(t)f(is)i(con)n(v)n(erted)e +(to)i(an)f Fm("unsigned)40 b(char")p Fq(,)23 b(and)i(the)g(result-)722 +1544 y(ing)j(c)n(haracter)d(is)j(written.)639 1706 y +Fk(\210)41 b Fm(s)g Fq(The)f Fm("char)i Fh(\003)p Fm(")d +Fq(argumen)n(t)h(is)g(exp)r(ected)h(to)g(b)r(e)g(a)f(p)r(oin)n(ter)g +(to)h(an)f(arra)n(y)e(of)722 1806 y(c)n(haracter)20 b(t)n(yp)r(e)i(\(p) +r(oin)n(ter)f(to)h(a)f(string\).)35 b(Characters)19 b(from)j(the)g +(arra)n(y)d(are)i(written)722 1905 y(up)32 b(to)g(\(but)h(not)f +(including\))g(a)f(terminating)h(NUL)g(c)n(haracter;)g(if)g(a)f +(precision)g(is)722 2005 y(sp)r(eci\034ed,)c(no)f(more)g(than)g(the)h +(n)n(um)n(b)r(er)f(sp)r(eci\034ed)g(are)g(written.)36 +b(If)27 b(a)f(precision)f(is)722 2105 y(giv)n(en,)d(no)g(n)n(ull)g(c)n +(haracter)d(need)j(b)r(e)g(presen)n(t;)h(if)g(the)f(precision)e(is)i +(not)g(sp)r(eci\034ed,)h(or)722 2204 y(is)j(greater)e(than)h(the)h +(size)f(of)h(the)g(arra)n(y)-7 b(,)24 b(the)i(arra)n(y)d(m)n(ust)j(con) +n(tain)e(a)i(terminating)722 2304 y(NUL)i(c)n(haracter.)639 +2466 y Fk(\210)41 b Fm(\045)36 b Fq(A)g Fm(\045)g Fq(is)g(written.)62 +b(No)36 b(argumen)n(t)e(is)i(con)n(v)n(erted.)61 b(The)36 +b(complete)f(con)n(v)n(ersion)722 2565 y(sp)r(eci\034cation)27 +b(is)h("\045\045".)639 2727 y Fk(\210)41 b Fm(eE)58 b +Fq(The)g(double)g(argumen)n(t)f(is)h(rounded)g(and)g(con)n(v)n(erted)f +(in)h(the)h(format)722 2827 y Fm("[-]d.ddde)p Fb(\261)p +Fm(dd")27 b Fq(where)k(there)h(is)g(one)g(digit)g(b)r(efore)g(the)h +(decimal-p)r(oin)n(t)f(c)n(har-)722 2927 y(acter)k(and)h(the)g(n)n(um)n +(b)r(er)g(of)f(digits)h(after)g(it)g(is)g(equal)f(to)h(the)g +(precision;)j(if)e(the)722 3026 y(precision)30 b(is)h(missing,)h(it)g +(is)f(tak)n(en)f(as)h(6;)h(if)g(the)g(precision)e(is)h(zero,)g(no)g +(decimal-)722 3126 y(p)r(oin)n(t)24 b(c)n(haracter)d(app)r(ears.)34 +b(An)24 b Fl(E)34 b Fq(con)n(v)n(ersion)21 b(uses)i(the)h(letter)f +Fm('E')f Fq(\(rather)h(than)722 3225 y Fm('e')p Fq(\))g(to)h(in)n(tro)r +(duce)f(the)i(exp)r(onen)n(t.)35 b(The)24 b(exp)r(onen)n(t)f(alw)n(a)n +(ys)f(con)n(tains)h(t)n(w)n(o)g(digits;)722 3325 y(if)28 +b(the)g(v)-5 b(alue)28 b(is)f(zero,)g(the)h(exp)r(onen)n(t)f(is)g(00.) +639 3487 y Fk(\210)41 b Fm(fF)25 b Fq(The)h(double)g(argumen)n(t)f(is)h +(rounded)f(and)h(con)n(v)n(erted)e(to)i(decimal)g(notation)f(in)722 +3587 y(the)30 b(format)f Fm("[-]ddd.ddd")p Fq(,)c(where)k(the)h(n)n(um) +n(b)r(er)g(of)f(digits)h(after)f(the)h(decimal-)722 3686 +y(p)r(oin)n(t)i(c)n(haracter)d(is)j(equal)e(to)i(the)g(precision)e(sp)r +(eci\034cation.)48 b(If)32 b(the)g(precision)e(is)722 +3786 y(missing,)23 b(it)g(is)f(tak)n(en)g(as)f(6;)j(if)f(the)g +(precision)e(is)h(explicitly)g(zero,)h(no)f(decimal-p)r(oin)n(t)722 +3885 y(c)n(haracter)28 b(app)r(ears.)42 b(If)31 b(a)e(decimal)h(p)r +(oin)n(t)g(app)r(ears,)f(at)h(least)f(one)g(digit)h(app)r(ears)722 +3985 y(b)r(efore)e(it.)639 4147 y Fk(\210)41 b Fm(gG)e +Fq(The)g(double)h(argumen)n(t)e(is)h(con)n(v)n(erted)f(in)i(st)n(yle)f +Fm(f)g Fq(or)f Fm(e)h Fq(\(or)g Fm(F)g Fq(or)g Fm(E)g +Fq(for)f Fm(G)722 4247 y Fq(con)n(v)n(ersions\).)50 b(The)33 +b(precision)f(sp)r(eci\034es)h(the)g(n)n(um)n(b)r(er)f(of)h +(signi\034can)n(t)f(digits.)53 b(If)722 4346 y(the)35 +b(precision)f(is)g(missing,)i(6)e(digits)g(are)g(giv)n(en;)j(if)e(the)g +(precision)f(is)g(zero,)h(it)g(is)722 4446 y(treated)22 +b(as)f(1.)35 b(St)n(yle)22 b Fm(e)f Fq(is)h(used)g(if)h(the)f(exp)r +(onen)n(t)g(from)g(its)g(con)n(v)n(ersion)e(is)h(less)h(than)722 +4545 y(-4)33 b(or)f(greater)f(than)j(or)e(equal)h(to)g(the)g +(precision.)53 b(T)-7 b(railing)32 b(zeros)g(are)g(remo)n(v)n(ed)722 +4645 y(from)26 b(the)g(fractional)f(part)h(of)g(the)g(result;)h(a)e +(decimal)h(p)r(oin)n(t)h(app)r(ears)d(only)i(if)h(it)f(is)722 +4745 y(follo)n(w)n(ed)h(b)n(y)g(at)g(least)h(one)f(digit.)639 +4907 y Fk(\210)41 b Fm(S)35 b Fq(Similar)g(to)g(the)h +Fm(s)f Fq(format,)i(except)e(the)h(p)r(oin)n(ter)f(is)g(exp)r(ected)h +(to)f(p)r(oin)n(t)g(to)g(a)722 5006 y(program-memory)24 +b(\(R)n(OM\))k(string)f(instead)g(of)h(a)f(RAM)h(string.)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 184 200 +TeXDict begin 184 199 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(184)p 515 236 2865 4 v 515 523 a Fq(In)22 b(no)h(case)e(do)r(es)h(a)g +(non-existen)n(t)g(or)g(small)g(\034eld)g(width)h(cause)f(truncation)g +(of)h(a)f(n)n(umeric)515 623 y(\034eld;)45 b(if)39 b(the)h(result)e(of) +h(a)g(con)n(v)n(ersion)e(is)i(wider)f(than)h(the)h(\034eld)f(width,)k +(the)c(\034eld)g(is)515 722 y(expanded)27 b(to)g(con)n(tain)g(the)h +(con)n(v)n(ersion)d(result.)515 869 y(Since)e(the)h(full)g(implemen)n +(tation)f(of)g(all)g(the)h(men)n(tioned)f(features)g(b)r(ecomes)g +(fairly)f(large,)515 969 y(three)33 b(di\033eren)n(t)g(\035a)n(v)n +(ours)e(of)39 b Fs(vfprin)m(tf\(\))c Fq(\(p.)14 b(181\))32 +b(can)h(b)r(e)h(selected)f(using)f(link)n(er)h(op-)515 +1068 y(tions.)i(The)24 b(default)h Fs(vfprin)m(tf\(\))g +Fq(\(p.)14 b(181\))23 b(implemen)n(ts)h(all)g(the)g(men)n(tioned)g +(functional-)515 1168 y(it)n(y)c(except)g(\035oating)f(p)r(oin)n(t)h +(con)n(v)n(ersions.)32 b(A)21 b(minimized)f(v)n(ersion)f(of)26 +b Fs(vfprin)m(tf\(\))c Fq(\(p.)14 b(181\))515 1268 y(is)32 +b(a)n(v)-5 b(ailable)31 b(that)i(only)f(implemen)n(ts)h(the)g(v)n(ery)f +(basic)g(in)n(teger)f(and)i(string)e(con)n(v)n(ersion)515 +1367 y(facilities,)23 b(but)f(only)g(the)g Fm(#)g Fq(additional)f +(option)h(can)f(b)r(e)i(sp)r(eci\034ed)f(using)g(con)n(v)n(ersion)d +(\035ags)515 1467 y(\(these)28 b(\035ags)e(are)g(parsed)h(correctly)f +(from)h(the)h(format)f(sp)r(eci\034cation,)g(but)h(then)g(simply)515 +1567 y(ignored\).)35 b(This)27 b(v)n(ersion)e(can)h(b)r(e)h(requested)f +(using)g(the)h(follo)n(wing)g Fs(compiler)i(options)515 +1666 y Fq(\(p.)14 b(111\):)621 1873 y Fj(-Wl,-u,vfprintf)39 +b(-lprintf_min)515 2101 y Fq(If)28 b(the)g(full)h(functionalit)n(y)f +(including)g(the)g(\035oating)f(p)r(oin)n(t)h(con)n(v)n(ersions)d(is)j +(required,)f(the)515 2200 y(follo)n(wing)f(options)h(should)g(b)r(e)h +(used:)621 2407 y Fj(-Wl,-u,vfprintf)39 b(-lprintf_flt)g(-lm)506 +2615 y Fs(Limitations:)776 2765 y Fk(\210)i Fq(The)27 +b(sp)r(eci\034ed)h(width)g(and)g(precision)e(can)h(b)r(e)h(at)g(most)f +(255.)506 2975 y Fs(Notes:)776 3124 y Fk(\210)41 b Fq(F)-7 +b(or)22 b(\035oating-p)r(oin)n(t)h(con)n(v)n(ersions,)e(if)j(y)n(ou)e +(link)i(default)f(or)g(minimized)h(v)n(ersion)859 3224 +y(of)35 b Fs(vfprin)m(tf\(\))30 b Fq(\(p.)14 b(181\),)29 +b(the)g(sym)n(b)r(ol)f(?)41 b(will)29 b(b)r(e)g(output)g(and)g(double)g +(argu-)859 3323 y(men)n(t)34 b(will)g(b)r(e)g(skip)r(ed.)55 +b(So)34 b(y)n(ou)f(output)h(b)r(elo)n(w)g(will)g(not)f(b)r(e)h +(crashed.)55 b(F)-7 b(or)859 3423 y(default)27 b(v)n(ersion)e(the)i +(width)g(\034eld)g(and)f(the)h("pad)f(to)g(left")h(\()g(sym)n(b)r(ol)f +(min)n(us)h(\))859 3522 y(option)g(will)h(w)n(ork)e(in)i(this)g(case.) +776 3654 y Fk(\210)41 b Fq(The)c Fm(hh)f Fq(length)h(mo)r(di\034er)g +(is)g(ignored)f(\()p Fm(char)f Fq(argumen)n(t)h(is)h(promouted)f(to)859 +3754 y Fm(int)p Fq(\).)52 b(More)32 b(exactly)-7 b(,)34 +b(this)f(realization)e(do)r(es)i(not)g(c)n(hec)n(k)f(the)h(n)n(um)n(b)r +(er)g(of)f Fm(h)859 3854 y Fq(sym)n(b)r(ols.)776 3986 +y Fk(\210)41 b Fq(But)24 b(the)g Fm(ll)f Fq(length)h(mo)r(di\034er)g +(will)g(to)g(ab)r(ort)f(the)h(output,)h(as)e(this)i(realization)859 +4085 y(do)r(es)i(not)h(op)r(erate)e Fm(long)g(long)g +Fq(argumen)n(ts.)776 4217 y Fk(\210)41 b Fq(The)f(v)-5 +b(ariable)38 b(width)j(or)e(precision)g(\034eld)h(\(an)g(asterisk)e +Fh(\003)i Fq(sym)n(b)r(ol\))f(is)h(not)859 4317 y(realized)26 +b(and)i(will)g(to)f(ab)r(ort)g(the)h(output.)515 4660 +y Fs(22.9.3.33)92 b(in)m(t)37 b(vfprin)m(tf_P)i(\(FILE)e +Fh(\003)f Fc(__str)-5 b(e)g(am)p Fs(,)76 b(const)37 b(c)m(har)h +Fh(\003)f Fc(__fmt)p Fs(,)515 4760 y(v)-5 b(a_list)31 +b Fc(__ap)p Fs(\))515 4907 y Fq(V)-7 b(arian)n(t)25 b(of)33 +b Fm(vfprintf\(\))39 b(\()p Fq(p.)15 b Fm(181\))25 b +Fq(that)h(uses)g(a)g Fm(fmt)g Fq(string)f(that)i(resides)e(in)i +(program)515 5006 y(memory)-7 b(.)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 185 201 +TeXDict begin 185 200 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(185)p 515 236 2865 4 v 515 523 a(22.9.3.34)92 b(in)m(t)31 +b(vfscanf)g(\(FILE)g Fh(\003)f Fc(str)-5 b(e)g(am)p Fs(,)62 +b(const)30 b(c)m(har)i Fh(\003)e Fc(fmt)p Fs(,)62 b(v)-5 +b(a_list)30 b Fc(ap)p Fs(\))515 770 y Fq(F)-7 b(ormatted)27 +b(input.)38 b(This)27 b(function)h(is)g(the)g(heart)f(of)g(the)h +Fs(scanf)g Fq(family)g(of)f(functions.)515 916 y(Characters)38 +b(are)h(read)g(from)h Fl(str)l(e)l(am)46 b Fq(and)40 +b(pro)r(cessed)f(in)i(a)e(w)n(a)n(y)g(describ)r(ed)h(b)n(y)g +Fl(fmt)8 b Fq(.)515 1016 y(Con)n(v)n(ersion)25 b(results)i(will)h(b)r +(e)g(assigned)e(to)h(the)h(parameters)e(passed)h(via)g +Fl(ap)5 b Fq(.)515 1163 y(The)31 b(format)g(string)g +Fl(fmt)39 b Fq(is)31 b(scanned)g(for)g(con)n(v)n(ersion)e(sp)r +(eci\034cations.)47 b(An)n(ything)32 b(that)515 1263 +y(do)r(esn't)39 b(comprise)f(a)h(con)n(v)n(ersion)e(sp)r(eci\034cation) +i(is)g(tak)n(en)g(as)f(text)i(that)f(is)g(matc)n(hed)515 +1362 y(literally)c(against)g(the)h(input.)63 b(White)37 +b(space)e(in)i(the)f(format)g(string)f(will)h(matc)n(h)g(an)n(y)515 +1462 y(white)26 b(space)g(in)g(the)h(data)f(\(including)h(none\),)f +(all)g(other)g(c)n(haracters)e(matc)n(h)i(only)g(itself.)515 +1561 y(Pro)r(cessing)31 b(is)g(ab)r(orted)h(as)f(so)r(on)g(as)h(the)g +(data)f(and)h(format)g(string)f(no)h(longer)e(matc)n(h,)515 +1661 y(or)c(there)i(is)f(an)h(error)d(or)i(end-of-\034le)g(condition)g +(on)g Fl(str)l(e)l(am)6 b Fq(.)515 1808 y(Most)23 b(con)n(v)n(ersions)e +(skip)i(leading)g(white)h(space)f(b)r(efore)g(starting)g(the)g(actual)g +(con)n(v)n(ersion.)515 1955 y(Con)n(v)n(ersions)28 b(are)i(in)n(tro)r +(duced)h(with)h(the)g(c)n(haracter)d Fs(\045)p Fq(.)47 +b(P)n(ossible)31 b(options)f(can)h(follo)n(w)515 2054 +y(the)d Fs(\045)p Fq(:)639 2284 y Fk(\210)41 b Fq(a)24 +b Fh(\003)f Fq(indicating)h(that)g(the)g(con)n(v)n(ersion)e(should)h(b) +r(e)h(p)r(erformed)g(but)g(the)g(con)n(v)n(ersion)722 +2384 y(result)k(is)f(to)g(b)r(e)h(discarded;)f(no)g(parameters)f(will)i +(b)r(e)g(pro)r(cessed)e(from)h Fm(ap)p Fq(,)639 2550 +y Fk(\210)41 b Fq(the)34 b(c)n(haracter)e Fm(h)h Fq(indicating)g(that)h +(the)g(argumen)n(t)f(is)g(a)g(p)r(oin)n(ter)g(to)h Fm(short)41 +b(int)722 2650 y Fq(\(rather)27 b(than)h Fm(int)p Fq(\),)639 +2816 y Fk(\210)41 b Fq(the)f(2)e(c)n(haracters)f Fm(hh)i +Fq(indicating)f(that)i(the)f(argumen)n(t)f(is)h(a)g(p)r(oin)n(ter)g(to) +g Fm(char)722 2915 y Fq(\(rather)27 b(than)h Fm(int)p +Fq(\).)639 3081 y Fk(\210)41 b Fq(the)d(c)n(haracter)e +Fm(l)h Fq(indicating)g(that)h(the)g(argumen)n(t)e(is)i(a)f(p)r(oin)n +(ter)g(to)g Fm(long)42 b(int)722 3181 y Fq(\(rather)36 +b(than)g Fm(int)p Fq(,)h(for)f(in)n(teger)f(t)n(yp)r(e)i(con)n(v)n +(ersions\),)f(or)f(a)h(p)r(oin)n(ter)f(to)i Fm(double)722 +3281 y Fq(\(for)28 b(\035oating)e(p)r(oin)n(t)i(con)n(v)n(ersions\),) +515 3510 y(In)19 b(addition,)i(a)e(maximal)g(\034eld)h(width)g(ma)n(y)e +(b)r(e)i(sp)r(eci\034ed)g(as)e(a)h(nonzero)f(p)r(ositiv)n(e)h(decimal) +515 3610 y(in)n(teger,)25 b(whic)n(h)h(will)g(restrict)f(the)i(con)n(v) +n(ersion)c(to)j(at)g(most)f(this)i(man)n(y)e(c)n(haracters)e(from)515 +3710 y(the)j(input)h(stream.)35 b(This)26 b(\034eld)h(width)f(is)g +(limited)h(to)f(at)f(most)h(255)f(c)n(haracters)e(whic)n(h)j(is)515 +3809 y(also)g(the)i(default)g(v)-5 b(alue)28 b(\(except)f(for)g(the)h +Fm(c)g Fq(con)n(v)n(ersion)d(that)j(defaults)f(to)h(1\).)515 +3956 y(The)f(follo)n(wing)g(con)n(v)n(ersion)e(\035ags)h(are)h(supp)r +(orted:)639 4186 y Fk(\210)41 b Fm(\045)28 b Fq(Matc)n(hes)e(a)i +(literal)f Fm(\045)g Fq(c)n(haracter.)35 b(This)27 b(is)h(not)f(a)g +(con)n(v)n(ersion.)639 4352 y Fk(\210)41 b Fm(d)27 b +Fq(Matc)n(hes)e(an)i(optionally)e(signed)i(decimal)f(in)n(teger;)g(the) +h(next)g(p)r(oin)n(ter)f(m)n(ust)h(b)r(e)722 4452 y(a)g(p)r(oin)n(ter)h +(to)f Fm(int)p Fq(.)639 4618 y Fk(\210)41 b Fm(i)22 b +Fq(Matc)n(hes)g(an)g(optionally)f(signed)h(in)n(teger;)h(the)g(next)g +(p)r(oin)n(ter)e(m)n(ust)i(b)r(e)g(a)f(p)r(oin)n(ter)722 +4717 y(to)28 b Fm(int)p Fq(.)36 b(The)28 b(in)n(teger)e(is)i(read)f(in) +h(base)f(16)f(if)j(it)f(b)r(egins)f(with)h Fs(0x)g Fq(or)f +Fs(0X)p Fq(,)h(in)g(base)722 4817 y(8)39 b(if)h(it)f(b)r(egins)g(with)h +Fs(0)p Fq(,)i(and)d(in)g(base)g(10)f(otherwise.)70 b(Only)39 +b(c)n(haracters)e(that)722 4917 y(corresp)r(ond)26 b(to)i(the)g(base)e +(are)h(used.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 186 202 +TeXDict begin 186 201 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(186)p 515 236 2865 4 v 639 523 a Fk(\210)41 b Fm(o)20 +b Fq(Matc)n(hes)f(an)g(o)r(ctal)g(in)n(teger;)j(the)e(next)f(p)r(oin)n +(ter)h(m)n(ust)f(b)r(e)h(a)g(p)r(oin)n(ter)f(to)g Fm(unsigned)722 +623 y(int)p Fq(.)639 778 y Fk(\210)41 b Fm(u)27 b Fq(Matc)n(hes)e(an)i +(optionally)e(signed)i(decimal)f(in)n(teger;)g(the)h(next)g(p)r(oin)n +(ter)f(m)n(ust)h(b)r(e)722 877 y(a)g(p)r(oin)n(ter)h(to)f +Fm(unsigned)40 b(int)p Fq(.)639 1032 y Fk(\210)h Fm(x)21 +b Fq(Matc)n(hes)f(an)g(optionally)g(signed)h(hexadecimal)e(in)n(teger;) +k(the)e(next)g(p)r(oin)n(ter)f(m)n(ust)722 1132 y(b)r(e)28 +b(a)f(p)r(oin)n(ter)h(to)f Fm(unsigned)40 b(int)p Fq(.)639 +1287 y Fk(\210)h Fm(f)35 b Fq(Matc)n(hes)f(an)g(optionally)g(signed)h +(\035oating-p)r(oin)n(t)e(n)n(um)n(b)r(er;)38 b(the)e(next)f(p)r(oin)n +(ter)722 1386 y(m)n(ust)28 b(b)r(e)g(a)f(p)r(oin)n(ter)g(to)h +Fm(float)p Fq(.)639 1541 y Fk(\210)41 b Fm(e,)i(g,)g(F,)f(E,)h(G)27 +b Fq(Equiv)-5 b(alen)n(t)28 b(to)g Fm(f)p Fq(.)639 1696 +y Fk(\210)41 b Fm(s)20 b Fq(Matc)n(hes)g(a)f(sequence)h(of)g +(non-white-space)f(c)n(haracters;)h(the)h(next)f(p)r(oin)n(ter)g(m)n +(ust)722 1796 y(b)r(e)34 b(a)f(p)r(oin)n(ter)h(to)f Fm(char)p +Fq(,)h(and)f(the)h(arra)n(y)d(m)n(ust)j(b)r(e)g(large)e(enough)h(to)g +(accept)g(all)722 1896 y(the)f(sequence)f(and)g(the)h(terminating)f +Fm(NUL)g Fq(c)n(haracter.)46 b(The)32 b(input)g(string)f(stops)722 +1995 y(at)d(white)g(space)e(or)h(at)h(the)g(maxim)n(um)f(\034eld)h +(width,)g(whic)n(hev)n(er)e(o)r(ccurs)h(\034rst.)639 +2150 y Fk(\210)41 b Fm(c)g Fq(Matc)n(hes)f(a)h(sequence)f(of)h(width)g +(coun)n(t)g(c)n(haracters)d(\(default)k(1\);)48 b(the)41 +b(next)722 2250 y(p)r(oin)n(ter)25 b(m)n(ust)g(b)r(e)g(a)f(p)r(oin)n +(ter)h(to)g Fm(char)p Fq(,)e(and)i(there)g(m)n(ust)g(b)r(e)g(enough)f +(ro)r(om)g(for)g(all)722 2350 y(the)32 b(c)n(haracters)e(\(no)h +(terminating)h Fm(NUL)e Fq(is)i(added\).)49 b(The)32 +b(usual)g(skip)f(of)h(leading)722 2449 y(white)c(space)e(is)h +(suppressed.)35 b(T)-7 b(o)27 b(skip)g(white)g(space)f(\034rst,)h(use)g +(an)g(explicit)g(space)722 2549 y(in)h(the)g(format.)639 +2704 y Fk(\210)41 b Fq([)e(Matc)n(hes)e(a)h(nonempt)n(y)g(sequence)g +(of)g(c)n(haracters)e(from)i(the)g(sp)r(eci\034ed)h(set)f(of)722 +2803 y(accepted)22 b(c)n(haracters;)f(the)i(next)f(p)r(oin)n(ter)f(m)n +(ust)h(b)r(e)g(a)g(p)r(oin)n(ter)f(to)h Fm(char)p Fq(,)g(and)f(there) +722 2903 y(m)n(ust)e(b)r(e)h(enough)e(ro)r(om)g(for)g(all)h(the)g(c)n +(haracters)e(in)i(the)g(string,)h(plus)f(a)g(terminating)722 +3003 y Fm(NUL)29 b Fq(c)n(haracter.)43 b(The)30 b(usual)g(skip)g(of)g +(leading)f(white)i(space)e(is)h(suppressed.)44 b(The)722 +3102 y(string)31 b(is)h(to)g(b)r(e)g(made)f(up)h(of)g(c)n(haracters)d +(in)j(\(or)f(not)h(in\))g(a)g(particular)e(set;)k(the)722 +3202 y(set)28 b(is)f(de\034ned)h(b)n(y)g(the)g(c)n(haracters)d(b)r(et)n +(w)n(een)i(the)h(op)r(en)g(brac)n(k)n(et)e([)i(c)n(haracter)d(and)722 +3302 y(a)31 b(close)f(brac)n(k)n(et)f(])i(c)n(haracter.)44 +b(The)31 b(set)g(excludes)f(those)h(c)n(haracters)d(if)j(the)g(\034rst) +722 3401 y(c)n(haracter)37 b(after)h(the)h(op)r(en)f(brac)n(k)n(et)f +(is)h(a)g(circum\035ex)2556 3371 y Fa(^)2605 3401 y Fq(.)70 +b(T)-7 b(o)38 b(include)h(a)f(close)722 3501 y(brac)n(k)n(et)33 +b(in)h(the)h(set,)h(mak)n(e)d(it)i(the)g(\034rst)f(c)n(haracter)e +(after)h(the)i(op)r(en)f(brac)n(k)n(et)f(or)722 3600 +y(the)27 b(circum\035ex;)f(an)n(y)g(other)f(p)r(osition)i(will)f(end)h +(the)f(set.)37 b(The)26 b(h)n(yphen)g(c)n(haracter)722 +3700 y Fm(-)35 b Fq(is)f(also)g(sp)r(ecial;)k(when)c(placed)h(b)r(et)n +(w)n(een)f(t)n(w)n(o)g(other)g(c)n(haracters,)g(it)h(adds)f(all)722 +3800 y(in)n(terv)n(ening)d(c)n(haracters)e(to)j(the)g(set.)50 +b(T)-7 b(o)31 b(include)i(a)e(h)n(yphen,)i(mak)n(e)e(it)h(the)g(last) +722 3899 y(c)n(haracter)i(b)r(efore)h(the)h(\034nal)f(close)g(brac)n(k) +n(et.)60 b(F)-7 b(or)35 b(instance,)i Fm([)2807 3869 +y Fa(^)2855 3899 y Fm(]0-9-])d Fq(means)722 3999 y(the)28 +b(set)g(of)g Fl(everything)i(exc)l(ept)g(close)h(br)l(acket,)f(zer)l(o) +h(thr)l(ough)f(nine,)g(and)g(hyphen)6 b Fq(.)722 4099 +y(The)27 b(string)g(ends)f(with)i(the)f(app)r(earance)f(of)h(a)f(c)n +(haracter)f(not)i(in)g(the)h(\(or,)e(with)h(a)722 4198 +y(circum\035ex,)32 b(in\))h(set)e(or)g(when)g(the)h(\034eld)g(width)g +(runs)g(out.)48 b(Note)32 b(that)g(usage)e(of)722 4298 +y(this)e(con)n(v)n(ersion)d(enlarges)h(the)i(stac)n(k)f(exp)r(ense.)639 +4453 y Fk(\210)41 b Fm(p)27 b Fq(Matc)n(hes)e(a)i(p)r(oin)n(ter)f(v)-5 +b(alue)26 b(\(as)g(prin)n(ted)h(b)n(y)f Fm(p)g Fq(in)h +Fs(prin)m(tf\(\))h Fq(\(p.)14 b(180\)\);)26 b(the)h(next)722 +4552 y(p)r(oin)n(ter)g(m)n(ust)h(b)r(e)g(a)f(p)r(oin)n(ter)g(to)h +Fm(void)p Fq(.)639 4707 y Fk(\210)41 b Fm(n)30 b Fq(Nothing)h(is)f(exp) +r(ected;)i(instead,)f(the)g(n)n(um)n(b)r(er)f(of)g(c)n(haracters)e +(consumed)i(th)n(us)722 4807 y(far)k(from)f(the)i(input)g(is)f(stored)f +(through)g(the)h(next)h(p)r(oin)n(ter,)g(whic)n(h)f(m)n(ust)g(b)r(e)g +(a)722 4907 y(p)r(oin)n(ter)f(to)g Fm(int)p Fq(.)52 b(This)33 +b(is)g(not)g(a)g(con)n(v)n(ersion,)f(although)g(it)i(can)f(b)r(e)g +(suppressed)722 5006 y(with)28 b(the)g Fh(\003)f Fq(\035ag.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 187 203 +TeXDict begin 187 202 bop 515 203 a Fs(22.9)94 b Fo(<)p +Fs(stdio.h)p Fo(>)p Fs(:)40 b(Standard)33 b(IO)e(facilities)1080 +b(187)p 515 236 2865 4 v 515 523 a Fq(These)26 b(functions)g(return)g +(the)h(n)n(um)n(b)r(er)f(of)g(input)i(items)e(assigned,)g(whic)n(h)g +(can)g(b)r(e)h(few)n(er)515 623 y(than)20 b(pro)n(vided)g(for,)h(or)f +(ev)n(en)g(zero,)h(in)g(the)f(ev)n(en)n(t)g(of)h(a)f(matc)n(hing)g +(failure.)34 b(Zero)19 b(indicates)515 722 y(that,)37 +b(while)e(there)g(w)n(as)e(input)j(a)n(v)-5 b(ailable,)36 +b(no)e(con)n(v)n(ersions)e(w)n(ere)i(assigned;)k(t)n(ypically)515 +822 y(this)d(is)g(due)h(to)f(an)g(in)n(v)-5 b(alid)35 +b(input)h(c)n(haracter,)f(suc)n(h)g(as)f(an)h(alphab)r(etic)h(c)n +(haracter)d(for)515 922 y(a)39 b Fm(d)g Fq(con)n(v)n(ersion.)69 +b(The)40 b(v)-5 b(alue)39 b Fm(EOF)f Fq(is)h(returned)g(if)h(an)f +(input)h(failure)f(o)r(ccurs)f(b)r(efore)515 1021 y(an)n(y)c(con)n(v)n +(ersion)f(suc)n(h)i(as)g(an)f(end-of-\034le)h(o)r(ccurs.)59 +b(If)36 b(an)f(error)e(or)h(end-of-\034le)h(o)r(ccurs)515 +1121 y(after)29 b(con)n(v)n(ersion)f(has)h(b)r(egun,)i(the)f(n)n(um)n +(b)r(er)g(of)g(con)n(v)n(ersions)d(whic)n(h)j(w)n(ere)f(successfully) +515 1220 y(completed)e(is)h(returned.)515 1367 y(By)22 +b(default,)j(all)e(the)g(con)n(v)n(ersions)e(describ)r(ed)h(ab)r(o)n(v) +n(e)g(are)g(a)n(v)-5 b(ailable)22 b(except)h(the)g(\035oating-)515 +1467 y(p)r(oin)n(t)33 b(con)n(v)n(ersions)e(and)i(the)h(width)g(is)g +(limited)g(to)f(255)f(c)n(haracters.)52 b(The)34 b(\035oat-p)r(oin)n(t) +515 1567 y(con)n(v)n(ersion)j(will)j(b)r(e)g(a)n(v)-5 +b(ailable)38 b(in)i(the)g(extended)g(v)n(ersion)e(pro)n(vided)g(b)n(y)h +(the)h(library)515 1666 y Fm(libscanf_flt.a)p Fq(.)29 +b(Also)21 b(in)h(this)g(case)f(the)h(width)g(is)f(not)h(limited)g +(\(exactly)-7 b(,)23 b(it)f(is)f(limited)515 1766 y(to)30 +b(65535)d(c)n(haracters\).)42 b(T)-7 b(o)30 b(link)g(a)g(program)d +(against)i(the)i(extended)f(v)n(ersion,)f(use)h(the)515 +1865 y(follo)n(wing)c(compiler)h(\035ags)g(in)g(the)h(link)g(stage:)691 +2075 y Fj(-Wl,-u,vfscanf)39 b(-lscanf_flt)g(-lm)515 2304 +y Fq(A)c(third)h(v)n(ersion)d(is)j(a)n(v)-5 b(ailable)33 +b(for)i(en)n(vironmen)n(ts)f(that)i(are)e(tigh)n(t)h(on)g(space.)59 +b(In)36 b(ad-)515 2404 y(dition)g(to)g(the)g(restrictions)f(of)h(the)g +(standard)f(one,)j(this)e(v)n(ersion)f(implemen)n(ts)h(no)g +Fm(\045[)515 2504 y Fq(sp)r(eci\034cation.)i(This)28 +b(v)n(ersion)e(is)i(pro)n(vided)f(in)h(the)h(library)d +Fm(libscanf_min.a)p Fq(,)d(and)k(can)515 2603 y(b)r(e)h(requested)f +(using)g(the)h(follo)n(wing)e(options)h(in)h(the)g(link)g(stage:)691 +2812 y Fj(-Wl,-u,vfscanf)39 b(-lscanf_min)g(-lm)515 3159 +y Fs(22.9.3.35)92 b(in)m(t)40 b(vfscanf_P)h(\(FILE)g +Fh(\003)e Fc(__str)-5 b(e)g(am)p Fs(,)83 b(const)39 b(c)m(har)j +Fh(\003)d Fc(__fmt)p Fs(,)515 3258 y(v)-5 b(a_list)31 +b Fc(__ap)p Fs(\))515 3405 y Fq(V)-7 b(arian)n(t)26 b(of)34 +b Fs(vfscanf\(\))29 b Fq(\(p.)14 b(185\))27 b(using)g(a)h +Fm(fmt)e Fq(string)h(in)h(program)d(memory)-7 b(.)515 +3668 y Fs(22.9.3.36)92 b(in)m(t)32 b(vprin)m(tf)h(\(const)f(c)m(har)h +Fh(\003)e Fc(__fmt)p Fs(,)63 b(v)-5 b(a_list)31 b Fc(__ap)p +Fs(\))515 3815 y Fq(The)h(function)h Fm(vprintf)c Fq(p)r(erforms)j +(formatted)g(output)g(to)g(stream)g Fm(stdout)p Fq(,)f(taking)g(a)515 +3915 y(v)-5 b(ariable)26 b(argumen)n(t)h(list)g(as)g(in)h +Fs(vfprin)m(tf\(\))h Fq(\(p.)14 b(181\).)515 4061 y(See)27 +b Fs(vfprin)m(tf\(\))i Fq(\(p.)14 b(181\))27 b(for)g(details.)515 +4324 y Fs(22.9.3.37)92 b(in)m(t)32 b(vscanf)h(\(const)f(c)m(har)h +Fh(\003)e Fc(__fmt)p Fs(,)63 b(v)-5 b(a_list)31 b Fc(__ap)p +Fs(\))515 4471 y Fq(The)36 b(function)h Fm(vscanf)d Fq(p)r(erforms)i +(formatted)g(input)h(from)f(stream)g Fm(stdin)p Fq(,)h(taking)e(a)515 +4571 y(v)-5 b(ariable)26 b(argumen)n(t)h(list)g(as)g(in)h +Fs(vfscanf\(\))h Fq(\(p.)14 b(185\).)515 4718 y(See)27 +b Fs(vfscanf\(\))i Fq(\(p.)14 b(185\))27 b(for)g(details.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 188 204 +TeXDict begin 188 203 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(188)p 515 236 2865 4 v 515 523 a(22.9.3.38)92 b(in)m(t)46 +b(vsnprin)m(tf)g(\(c)m(har)h Fh(\003)e Fc(__s)p Fs(,)97 +b(size_t)45 b Fc(__n)p Fs(,)96 b(const)45 b(c)m(har)i +Fh(\003)515 623 y Fc(__fmt)p Fs(,)62 b(v)-5 b(a_list)32 +b Fc(ap)p Fs(\))515 770 y Fq(Lik)n(e)d Fm(vsprintf\(\))39 +b(\()p Fq(p.)15 b Fm(188\))p Fq(,)29 b(but)h(instead)g(of)f(assuming)g +Fm(s)h Fq(to)g(b)r(e)g(of)g(in\034nite)g(size,)g(no)515 +869 y(more)22 b(than)i Fm(n)f Fq(c)n(haracters)e(\(including)j(the)f +(trailing)g(NUL)h(c)n(haracter\))d(will)j(b)r(e)g(con)n(v)n(erted)515 +969 y(to)j Fm(s)p Fq(.)515 1116 y(Returns)33 b(the)h(n)n(um)n(b)r(er)g +(of)g(c)n(haracters)d(that)j(w)n(ould)f(ha)n(v)n(e)g(b)r(een)h(written) +g(to)g Fm(s)f Fq(if)h(there)515 1215 y(w)n(ere)26 b(enough)h(space.)515 +1476 y Fs(22.9.3.39)92 b(in)m(t)34 b(vsnprin)m(tf_P)h(\(c)m(har)g +Fh(\003)f Fc(__s)p Fs(,)67 b(size_t)34 b Fc(__n)p Fs(,)67 +b(const)34 b(c)m(har)h Fh(\003)515 1576 y Fc(__fmt)p +Fs(,)62 b(v)-5 b(a_list)32 b Fc(ap)p Fs(\))515 1723 y +Fq(V)-7 b(arian)n(t)21 b(of)29 b Fm(vsnprintf\(\))39 +b(\()p Fq(p.)14 b Fm(188\))21 b Fq(that)i(uses)f(a)g +Fm(fmt)f Fq(string)h(that)h(resides)e(in)i(program)515 +1822 y(memory)-7 b(.)515 2083 y Fs(22.9.3.40)92 b(in)m(t)40 +b(vsprin)m(tf)g(\(c)m(har)i Fh(\003)d Fc(__s)p Fs(,)82 +b(const)40 b(c)m(har)i Fh(\003)d Fc(__fmt)p Fs(,)82 b(v)-5 +b(a_list)515 2183 y Fc(ap)p Fs(\))515 2330 y Fq(Lik)n(e)26 +b Fm(sprintf\(\))40 b(\()p Fq(p.)14 b Fm(181\))25 b Fq(but)j(tak)n(es)e +(a)g(v)-5 b(ariable)26 b(argumen)n(t)g(list)h(for)f(the)h(argumen)n +(ts.)515 2690 y Fs(22.9.3.41)92 b(in)m(t)28 b(vsprin)m(tf_P)g(\(c)m +(har)h Fh(\003)e Fc(__s)p Fs(,)56 b(const)28 b(c)m(har)h +Fh(\003)e Fc(__fmt)p Fs(,)55 b(v)-5 b(a_list)515 2790 +y Fc(ap)p Fs(\))515 2937 y Fq(V)e(arian)n(t)25 b(of)33 +b Fm(vsprintf\(\))39 b(\()p Fq(p.)15 b Fm(188\))25 b +Fq(that)h(uses)g(a)g Fm(fmt)g Fq(string)f(that)i(resides)e(in)i +(program)515 3036 y(memory)-7 b(.)515 3314 y Fn(22.10)112 +b Fd(<)p Fn(stdlib.h)p Fd(>)p Fn(:)51 b(General)38 b(utilities)515 +3514 y Fs(22.10.1)93 b(Detailed)31 b(Description)550 +3694 y Fj(#include)37 b()515 3911 y Fq(This)h(\034le)g +(declares)e(some)i(basic)f(C)h(macros)f(and)g(functions)i(as)e +(de\034ned)h(b)n(y)g(the)g(ISO)515 4011 y(standard,)26 +b(plus)i(some)f(A)-9 b(VR-sp)r(eci\034c)28 b(extensions.)515 +4272 y Fs(Data)33 b(Structures)639 4456 y Fk(\210)41 +b Fq(struct)28 b Fs(div_t)639 4561 y Fk(\210)41 b Fq(struct)28 +b Fs(ldiv_t)515 4822 y(Non-standard)k(\(i.e.)41 b(non-ISO)31 +b(C\))h(functions.)639 5006 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(ltoa)g Fq(\(long)g(in)n(t)h(__v)-5 b(al,)27 +b(c)n(har)f Fh(\003)p Fq(__s,)g(in)n(t)i(__radix\))p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 189 205 +TeXDict begin 189 204 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(189)p 515 236 2865 4 v 639 523 a Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(utoa)h Fq(\(unsigned)f(in)n(t)h(__v)-5 +b(al,)27 b(c)n(har)f Fh(\003)p Fq(__s,)g(in)n(t)i(__radix\))639 +631 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(ultoa)g +Fq(\(unsigned)h(long)f(in)n(t)h(__v)-5 b(al,)26 b(c)n(har)g +Fh(\003)p Fq(__s,)h(in)n(t)g(__radix\))639 739 y Fk(\210)41 +b Fq(long)27 b Fs(random)h Fq(\(v)n(oid\))639 847 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(srandom)g Fq(\(unsigned)h(long)f(__seed\))639 +955 y Fk(\210)41 b Fq(long)27 b Fs(random_r)h Fq(\(unsigned)g(long)f +Fh(\003)p Fq(__ctx\))639 1063 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(itoa)g Fq(\(in)n(t)h(__v)-5 b(al,)27 b(c)n(har)f +Fh(\003)p Fq(__s,)g(in)n(t)i(__radix\))639 1171 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(RANDOM_MAX)f Fq(0x7FFFFFFF)515 +1434 y Fs(Con)m(v)m(ersion)k(functions)h(for)g(double)f(argumen)m(ts.) +515 1634 y Fq(Note)k(that)h(these)f(functions)h(are)e(not)h(lo)r(cated) +g(in)h(the)g(default)f(library)-7 b(,)37 b Fm(libc.a)p +Fq(,)d(but)515 1734 y(in)29 b(the)h(mathematical)e(library)-7 +b(,)28 b Fm(libm.a)p Fq(.)39 b(So)29 b(when)h(linking)e(the)i +(application,)f(the)g Fm(-lm)515 1833 y Fq(option)e(needs)g(to)h(b)r(e) +g(sp)r(eci\034ed.)639 2047 y Fk(\210)41 b Fq(c)n(har)34 +b Fh(\003)h Fs(dtostre)g Fq(\(double)g(__v)-5 b(al,)36 +b(c)n(har)e Fh(\003)p Fq(__s,)i(unsigned)e(c)n(har)g(__prec,)i(un-)722 +2146 y(signed)27 b(c)n(har)g(__\035ags\))639 2254 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)h Fs(dtostrf)g Fq(\(double)g(__v)-5 +b(al,)27 b(signed)g(c)n(har)g(__width,)h(unsigned)f(c)n(har)g(__-)722 +2354 y(prec,)g(c)n(har)g Fh(\003)p Fq(__s\))639 2462 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(DTOSTR_AL)-11 b(W)g(A)j(YS_SIGN)30 +b Fq(0x01)639 2570 y Fk(\210)41 b Fq(#de\034ne)28 b Fs +(DTOSTR_PLUS_SIGN)i Fq(0x02)639 2678 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(DTOSTR_UPPER)m(CASE)h Fq(0x04)515 2941 y Fs(De\034nes)639 +3127 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(RAND_MAX)g Fq(0x7FFF)515 +3390 y Fs(T)m(yp)s(edefs)639 3577 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b(in)n(t\()p Fh(\003)g Fs(__compar_fn_t)h Fq(\)\(const)f(v)n(oid)f +Fh(\003)p Fq(,)g(const)g(v)n(oid)g Fh(\003)p Fq(\))515 +3840 y Fs(F)-8 b(unctions)639 4026 y Fk(\210)41 b Fq(v)n(oid)27 +b Fs(ab)s(ort)h Fq(\(v)n(oid\))f(__A)-7 b(TTR_NORETURN__)639 +4134 y Fk(\210)41 b Fq(in)n(t)28 b Fs(abs)g Fq(\(in)n(t)g(__i\))639 +4242 y Fk(\210)41 b Fq(long)27 b Fs(labs)g Fq(\(long)h(__i\))639 +4350 y Fk(\210)41 b Fq(v)n(oid)d Fh(\003)g Fs(bsearc)m(h)i +Fq(\(const)e(v)n(oid)g Fh(\003)p Fq(__k)n(ey)-7 b(,)39 +b(const)f(v)n(oid)g Fh(\003)p Fq(__base,)h(size_t)f(__-)722 +4449 y(nmem)n(b,)28 b(size_t)f(__size,)g(in)n(t\()p Fh(\003)p +Fq(__compar\)\(const)e(v)n(oid)i Fh(\003)p Fq(,)g(const)g(v)n(oid)g +Fh(\003)p Fq(\)\))639 4557 y Fk(\210)41 b Fs(div_t)28 +b(div)g Fq(\(in)n(t)g(__n)n(um,)f(in)n(t)h(__denom\))e +(__asm__\("__divmo)r(dhi4"\))639 4665 y Fk(\210)41 b +Fs(ldiv_t)23 b(ldiv)e Fq(\(long)h(__n)n(um,)h(long)f(__denom\))f +(__asm__\("__divmo)r(dsi4"\))639 4773 y Fk(\210)41 b +Fq(v)n(oid)50 b Fs(qsort)h Fq(\(v)n(oid)g Fh(\003)p Fq(__base,)k +(size_t)50 b(__nmem)n(b,)56 b(size_t)50 b(__size,)56 +b Fs(__-)722 4873 y(compar_fn_t)29 b Fq(__compar\))639 +4981 y Fk(\210)41 b Fq(long)27 b Fs(strtol)g Fq(\(const)h(c)n(har)e +Fh(\003)p Fq(__nptr,)g(c)n(har)h Fh(\003\003)p Fq(__endptr,)f(in)n(t)h +(__base\))p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 190 206 +TeXDict begin 190 205 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(190)p 515 236 2865 4 v 639 523 a Fk(\210)41 b Fq(unsigned)32 +b(long)g Fs(strtoul)g Fq(\(const)g(c)n(har)f Fh(\003)p +Fq(__nptr,)i(c)n(har)e Fh(\003\003)p Fq(__endptr,)h(in)n(t)g(__-)722 +623 y(base\))639 731 y Fk(\210)41 b Fq(long)27 b Fs(atol)h +Fq(\(const)f(c)n(har)f Fh(\003)p Fq(__s\))h(__A)-7 b(TTR_PURE__)639 +839 y Fk(\210)41 b Fq(in)n(t)28 b Fs(atoi)g Fq(\(const)f(c)n(har)f +Fh(\003)p Fq(__s\))h(__A)-7 b(TTR_PURE__)639 946 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(exit)h Fq(\(in)n(t)g(__status\))e(__A)-7 +b(TTR_NORETURN__)639 1054 y Fk(\210)41 b Fq(v)n(oid)27 +b Fh(\003)g Fs(mallo)s(c)g Fq(\(size_t)g(__size\))g(__A)-7 +b(TTR_MALLOC__)639 1162 y Fk(\210)41 b Fq(v)n(oid)27 +b Fs(free)h Fq(\(v)n(oid)f Fh(\003)p Fq(__ptr\))639 1270 +y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(callo)s(c)h +Fq(\(size_t)f(__nele,)g(size_t)g(__size\))f(__A)-7 b(TTR_MALLOC__)639 +1378 y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(reallo)s(c)g +Fq(\(v)n(oid)g Fh(\003)p Fq(__ptr,)g(size_t)g(__size\))f(__A)-7 +b(TTR_MALLOC__)639 1486 y Fk(\210)41 b Fq(double)28 b +Fs(strto)s(d)f Fq(\(const)g(c)n(har)g Fh(\003)p Fq(__nptr,)f(c)n(har)h +Fh(\003\003)p Fq(__endptr\))639 1594 y Fk(\210)41 b Fq(double)28 +b Fs(atof)g Fq(\(const)f(c)n(har)g Fh(\003)p Fq(__nptr\))639 +1702 y Fk(\210)41 b Fq(in)n(t)28 b Fs(rand)h Fq(\(v)n(oid\))639 +1810 y Fk(\210)41 b Fq(v)n(oid)27 b Fs(srand)h Fq(\(unsigned)g(in)n(t)g +(__seed\))639 1918 y Fk(\210)41 b Fq(in)n(t)28 b Fs(rand_r)h +Fq(\(unsigned)f(long)f Fh(\003)p Fq(__ctx\))515 2181 +y Fs(V)-8 b(ariables)639 2367 y Fk(\210)41 b Fq(size_t)27 +b Fs(__mallo)s(c_margin)639 2475 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(__mallo)s(c_heap_start)639 2583 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(__mallo)s(c_heap_end)515 +2846 y(22.10.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +3047 y(22.10.2.1)92 b(#de\034ne)31 b(DTOSTR_AL)-11 b(W)g(A)j(YS_SIGN)34 +b(0x01)515 3193 y Fq(Bit)28 b(v)-5 b(alue)27 b(that)h(can)f(b)r(e)h +(passed)f(in)h Fm(flags)d Fq(to)j Fs(dtostre\(\))f Fq(\(p.)14 +b(192\).)515 3456 y Fs(22.10.2.2)92 b(#de\034ne)31 b(DTOSTR_PLUS_SIGN)j +(0x02)515 3603 y Fq(Bit)28 b(v)-5 b(alue)27 b(that)h(can)f(b)r(e)h +(passed)f(in)h Fm(flags)d Fq(to)j Fs(dtostre\(\))f Fq(\(p.)14 +b(192\).)515 3866 y Fs(22.10.2.3)92 b(#de\034ne)31 b(DTOSTR_UPPER)m +(CASE)i(0x04)515 4013 y Fq(Bit)28 b(v)-5 b(alue)27 b(that)h(can)f(b)r +(e)h(passed)f(in)h Fm(flags)d Fq(to)j Fs(dtostre\(\))f +Fq(\(p.)14 b(192\).)515 4276 y Fs(22.10.2.4)92 b(#de\034ne)31 +b(RAND_MAX)h(0x7FFF)515 4423 y Fq(Highest)27 b(n)n(um)n(b)r(er)g(that)h +(can)g(b)r(e)f(generated)g(b)n(y)h Fs(rand\(\))h Fq(\(p.)14 +b(195\).)515 4686 y Fs(22.10.2.5)92 b(#de\034ne)31 b(RANDOM_MAX)g +(0x7FFFFFFF)515 4833 y Fq(Highest)c(n)n(um)n(b)r(er)g(that)h(can)g(b)r +(e)f(generated)g(b)n(y)h Fs(random\(\))g Fq(\(p.)14 b(196\).)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 191 207 +TeXDict begin 191 206 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(191)p 515 236 2865 4 v 515 523 a(22.10.3)93 b(T)m(yp)s(edef)32 +b(Do)s(cumen)m(tation)515 724 y(22.10.3.1)92 b(t)m(yp)s(edef)41 +b(in)m(t\()p Fh(\003)g Fs(__compar_fn_t\)\(const)h(v)m(oid)f +Fh(\003)p Fs(,)h(const)f(v)m(oid)515 823 y Fh(\003)p +Fs(\))515 970 y Fq(Comparision)26 b(function)i(t)n(yp)r(e)f(for)g +Fs(qsort\(\))i Fq(\(p.)14 b(195\),)26 b(just)j(for)e(con)n(v)n +(enience.)515 1233 y Fs(22.10.4)93 b(F)-8 b(unction)32 +b(Do)s(cumen)m(tation)515 1433 y(22.10.4.1)92 b(v)m(oid)32 +b(ab)s(ort)g(\(v)m(oid\))515 1580 y Fq(The)d Fs(ab)s(ort\(\))g +Fq(\(p.)14 b(191\))28 b(function)i(causes)d(abnormal)h(program)f +(termination)h(to)h(o)r(ccur.)515 1680 y(This)18 b(realization)g +(disables)g(in)n(terrupts)g(and)h(jumps)g(to)g(_exit\(\))g(function)g +(with)g(argumen)n(t)515 1780 y(equal)29 b(to)g(1.)42 +b(In)30 b(the)f(limited)i(A)-9 b(VR)29 b(en)n(vironmen)n(t,)g +(execution)g(is)h(e\033ectiv)n(ely)f(halted)g(b)n(y)515 +1879 y(en)n(tering)d(an)i(in\034nite)g(lo)r(op.)515 2142 +y Fs(22.10.4.2)92 b(in)m(t)32 b(abs)g(\(in)m(t)g Fc(__i)p +Fs(\))515 2289 y Fq(The)27 b Fs(abs\(\))h Fq(\(p.)14 +b(191\))27 b(function)h(computes)g(the)f(absolute)g(v)-5 +b(alue)28 b(of)f(the)h(in)n(teger)f Fm(i)p Fq(.)506 2489 +y Fs(Note:)676 2639 y Fq(The)h Fs(abs\(\))g Fq(\(p.)14 +b(191\))26 b(and)i Fs(labs\(\))f Fq(\(p.)14 b(194\))27 +b(functions)h(are)e(builtins)j(of)e(gcc.)515 2968 y Fs(22.10.4.3)92 +b(double)31 b(atof)h(\(const)g(c)m(har)h Fh(\003)f Fc(nptr)p +Fs(\))515 3115 y Fq(The)24 b Fs(atof\(\))h Fq(\(p.)14 +b(191\))23 b(function)i(con)n(v)n(erts)d(the)i(initial)h(p)r(ortion)e +(of)h(the)h(string)e(p)r(oin)n(ted)h(to)515 3215 y(b)n(y)j +Fl(nptr)36 b Fq(to)28 b(double)f(represen)n(tation.)515 +3361 y(It)h(is)f(equiv)-5 b(alen)n(t)27 b(to)h(calling)550 +3571 y Fj(strtod\(nptr,)39 b(\(char)d(**\)0\);)515 3917 +y Fs(22.10.4.4)92 b(in)m(t)32 b(atoi)f(\(const)h(c)m(har)i +Fh(\003)d Fc(s)p Fs(\))515 4063 y Fq(Con)n(v)n(ert)26 +b(a)h(string)g(to)g(an)h(in)n(teger.)515 4210 y(The)c +Fs(atoi\(\))g Fq(\(p.)14 b(191\))24 b(function)h(con)n(v)n(erts)d(the)j +(initial)f(p)r(ortion)g(of)g(the)h(string)f(p)r(oin)n(ted)g(to)515 +4310 y(b)n(y)j Fm(s)g Fq(to)h(in)n(teger)e(represen)n(tation.)35 +b(In)28 b(con)n(trast)e(to)550 4519 y Fj(\(int\)strtol\(s,)39 +b(\(char)e(**\)NULL,)g(10\);)515 4749 y Fq(this)i(function)g(do)r(es)f +(not)h(detect)g(o)n(v)n(er\035o)n(w)d(\()p Fm(errno)h +Fq(is)i(not)f(c)n(hanged)g(and)g(the)h(result)515 4849 +y(v)-5 b(alue)40 b(is)h(not)g(predictable\),)j(uses)c(smaller)g(memory) +g(\(\035ash)h(and)f(stac)n(k\))g(and)h(w)n(orks)515 4948 +y(more)26 b(quic)n(kly)-7 b(.)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 192 208 +TeXDict begin 192 207 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(192)p 515 236 2865 4 v 515 523 a(22.10.4.5)92 b(long)31 +b(atol)g(\(const)h(c)m(har)i Fh(\003)d Fc(s)p Fs(\))515 +670 y Fq(Con)n(v)n(ert)26 b(a)h(string)g(to)g(a)g(long)g(in)n(teger.) +515 817 y(The)d Fs(atol\(\))g Fq(\(p.)14 b(192\))24 b(function)h(con)n +(v)n(erts)d(the)j(initial)f(p)r(ortion)g(of)g(the)h(string)f(p)r(oin)n +(ted)g(to)515 916 y(b)n(y)j Fm(s)g Fq(to)h(long)f(in)n(teger)f +(represen)n(tation.)35 b(In)28 b(con)n(trast)e(to)550 +1126 y Fj(strtol\(s,)38 b(\(char)e(**\)NULL,)i(10\);)515 +1355 y Fq(this)h(function)g(do)r(es)f(not)h(detect)g(o)n(v)n(er\035o)n +(w)d(\()p Fm(errno)h Fq(is)i(not)f(c)n(hanged)g(and)g(the)h(result)515 +1455 y(v)-5 b(alue)40 b(is)h(not)g(predictable\),)j(uses)c(smaller)g +(memory)g(\(\035ash)h(and)f(stac)n(k\))g(and)h(w)n(orks)515 +1555 y(more)26 b(quic)n(kly)-7 b(.)515 1818 y Fs(22.10.4.6)92 +b(v)m(oid)p Fh(\003)31 b Fs(bsearc)m(h)h(\(const)f(v)m(oid)g +Fh(\003)g Fc(__key)p Fs(,)61 b(const)32 b(v)m(oid)f Fh(\003)g +Fc(__b)-5 b(ase)p Fs(,)515 1917 y(size_t)30 b Fc(__nmemb)p +Fs(,)62 b(size_t)31 b Fc(__size)p Fs(,)60 b(in)m(t\()p +Fh(\003)p Fs(\)\(const)31 b(v)m(oid)g Fh(\003)p Fs(,)f(const)h(v)m(oid) +f Fh(\003)p Fs(\))515 2017 y Fc(__c)-5 b(omp)g(ar)p Fs(\))515 +2164 y Fq(The)27 b Fs(bsearc)m(h\(\))i Fq(\(p.)14 b(192\))26 +b(function)i(searc)n(hes)e(an)h(arra)n(y)e(of)i Fm(nmemb)e +Fq(ob)5 b(jects,)27 b(the)h(initial)515 2263 y(mem)n(b)r(er)g(of)g +(whic)n(h)g(is)g(p)r(oin)n(ted)g(to)g(b)n(y)f Fm(base)p +Fq(,)g(for)h(a)f(mem)n(b)r(er)h(that)g(matc)n(hes)g(the)g(ob)5 +b(ject)515 2363 y(p)r(oin)n(ted)27 b(to)h(b)n(y)f Fm(key)p +Fq(.)36 b(The)27 b(size)h(of)f(eac)n(h)g(mem)n(b)r(er)g(of)h(the)g +(arra)n(y)d(is)j(sp)r(eci\034ed)f(b)n(y)h Fm(size)p Fq(.)515 +2510 y(The)g(con)n(ten)n(ts)f(of)g(the)h(arra)n(y)e(should)h(b)r(e)h +(in)g(ascending)f(sorted)g(order)f(according)g(to)i(the)515 +2610 y(comparison)f(function)j(referenced)e(b)n(y)h Fm(compar)p +Fq(.)40 b(The)29 b Fm(compar)e Fq(routine)i(is)g(exp)r(ected)g(to)515 +2709 y(ha)n(v)n(e)e(t)n(w)n(o)g(argumen)n(ts)f(whic)n(h)i(p)r(oin)n(t)g +(to)g(the)h(k)n(ey)e(ob)5 b(ject)28 b(and)g(to)f(an)h(arra)n(y)e(mem)n +(b)r(er,)i(in)515 2809 y(that)23 b(order,)f(and)h(should)g(return)f(an) +h(in)n(teger)f(less)g(than,)i(equal)e(to,)i(or)e(greater)f(than)i(zero) +515 2908 y(if)28 b(the)h(k)n(ey)e(ob)5 b(ject)28 b(is)g(found,)g(resp)r +(ectiv)n(ely)-7 b(,)27 b(to)h(b)r(e)h(less)e(than,)i(to)e(matc)n(h,)h +(or)f(b)r(e)i(greater)515 3008 y(than)e(the)h(arra)n(y)e(mem)n(b)r(er.) +515 3155 y(The)d Fs(bsearc)m(h\(\))i Fq(\(p.)14 b(192\))23 +b(function)h(returns)e(a)i(p)r(oin)n(ter)f(to)g(a)g(matc)n(hing)g(mem)n +(b)r(er)g(of)h(the)515 3255 y(arra)n(y)-7 b(,)24 b(or)h(a)h(n)n(ull)g +(p)r(oin)n(ter)g(if)g(no)g(matc)n(h)g(is)g(found.)37 +b(If)26 b(t)n(w)n(o)g(mem)n(b)r(ers)f(compare)g(as)h(equal,)515 +3354 y(whic)n(h)h(mem)n(b)r(er)h(is)f(matc)n(hed)g(is)h(unsp)r +(eci\034ed.)515 3617 y Fs(22.10.4.7)92 b(v)m(oid)p Fh(\003)31 +b Fs(callo)s(c)h(\(size_t)g Fc(__nele)p Fs(,)62 b(size_t)31 +b Fc(__size)p Fs(\))515 3764 y Fq(Allo)r(cate)j Fm(nele)g +Fq(elemen)n(ts)g(of)h Fm(size)e Fq(eac)n(h.)58 b(Iden)n(tical)34 +b(to)h(calling)g Fm(malloc\(\))40 b(\()p Fq(p.)15 b Fm(195\))515 +3864 y Fq(using)31 b Fm(nele)42 b Fh(\003)h Fm(size)31 +b Fq(as)g(argumen)n(t,)h(except)g(the)g(allo)r(cated)f(memory)h(will)g +(b)r(e)g(cleared)515 3963 y(to)27 b(zero.)515 4226 y +Fs(22.10.4.8)92 b(div_t)32 b(div)g(\(in)m(t)g Fc(__num)p +Fs(,)62 b(in)m(t)32 b Fc(__denom)p Fs(\))515 4373 y Fq(The)40 +b Fs(div\(\))h Fq(\(p.)14 b(192\))39 b(function)i(computes)f(the)g(v)-5 +b(alue)41 b Fm(num/denom)36 b Fq(and)k(returns)g(the)515 +4473 y(quotien)n(t)24 b(and)g(remainder)f(in)i(a)f(structure)g(named)g +Fm(div_t)42 b(\()p Fq(p.)14 b Fm(351\))23 b Fq(that)h(con)n(tains)g(t)n +(w)n(o)515 4572 y(in)n(t)k(mem)n(b)r(ers)f(named)g Fm(quot)f +Fq(and)i Fm(rem)p Fq(.)515 4835 y Fs(22.10.4.9)92 b(c)m(har)p +Fh(\003)31 b Fs(dtostre)f(\(double)f Fc(__val)p Fs(,)59 +b(c)m(har)32 b Fh(\003)d Fc(__s)p Fs(,)60 b(unsigned)28 +b(c)m(har)515 4935 y Fc(__pr)-5 b(e)g(c)p Fs(,)62 b(unsigned)31 +b(c)m(har)i Fc(__\035ags)p Fs(\))p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 193 209 +TeXDict begin 193 208 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(193)p 515 236 2865 4 v 515 523 a Fq(The)33 b Fs(dtostre\(\))g +Fq(\(p.)14 b(192\))32 b(function)i(con)n(v)n(erts)d(the)j(double)f(v)-5 +b(alue)33 b(passed)f(in)h Fm(val)f Fq(in)n(to)515 623 +y(an)d(ASCI)r(I)i(represen)n(tation)d(that)j(will)f(b)r(e)g(stored)f +(under)h Fm(s)p Fq(.)44 b(The)30 b(caller)f(is)h(resp)r(onsible)515 +722 y(for)d(pro)n(viding)f(su\036cien)n(t)i(storage)d(in)j +Fm(s)p Fq(.)515 869 y(Con)n(v)n(ersion)17 b(is)j(done)f(in)h(the)g +(format)f Fm("[-]d.ddde)p Fb(\261)p Fm(dd")14 b Fq(where)19 +b(there)g(is)g(one)h(digit)f(b)r(efore)515 969 y(the)36 +b(decimal-p)r(oin)n(t)g(c)n(haracter)e(and)i(the)h(n)n(um)n(b)r(er)e +(of)i(digits)f(after)f(it)i(is)f(equal)g(to)g(the)515 +1068 y(precision)30 b Fm(prec)p Fq(;)i(if)f(the)h(precision)e(is)i +(zero,)f(no)g(decimal-p)r(oin)n(t)g(c)n(haracter)e(app)r(ears.)47 +b(If)515 1168 y Fm(flags)31 b Fq(has)h(the)i(DTOSTRE_UPPER)n(CASE)h +(bit)f(set,)g(the)g(letter)f Fm('E')f Fq(\(rather)g(than)515 +1268 y Fm('e')h Fq(\))h(will)h(b)r(e)f(used)g(to)g(in)n(tro)r(duce)g +(the)g(exp)r(onen)n(t.)57 b(The)34 b(exp)r(onen)n(t)g(alw)n(a)n(ys)e +(con)n(tains)515 1367 y(t)n(w)n(o)27 b(digits;)g(if)h(the)g(v)-5 +b(alue)27 b(is)h(zero,)e(the)i(exp)r(onen)n(t)g(is)f +Fm("00")p Fq(.)515 1514 y(If)34 b Fm(flags)e Fq(has)h(the)h(DTOSTRE_AL) +-9 b(W)g(A)i(YS_SIGN)35 b(bit)f(set,)i(a)d(space)g(c)n(haracter)f(will) +515 1614 y(b)r(e)c(placed)f(in)n(to)g(the)h(leading)f(p)r(osition)g +(for)g(p)r(ositiv)n(e)h(n)n(um)n(b)r(ers.)515 1761 y(If)38 +b Fm(flags)e Fq(has)h(the)i(DTOSTRE_PLUS_SIGN)g(bit)f(set,)j(a)c(plus)h +(sign)g(will)g(b)r(e)g(used)515 1860 y(instead)27 b(of)h(a)f(space)g(c) +n(haracter)e(in)j(this)g(case.)515 2007 y(The)f Fs(dtostre\(\))g +Fq(\(p.)14 b(192\))27 b(function)g(returns)g(the)g(p)r(oin)n(ter)g(to)g +(the)g(con)n(v)n(erted)f(string)h Fm(s)p Fq(.)515 2270 +y Fs(22.10.4.10)92 b(c)m(har)p Fh(\003)31 b Fs(dtostrf)f(\(double)g +Fc(__val)p Fs(,)59 b(signed)29 b(c)m(har)j Fc(__width)p +Fs(,)59 b(un-)515 2370 y(signed)30 b(c)m(har)k Fc(__pr)-5 +b(e)g(c)p Fs(,)62 b(c)m(har)33 b Fh(\003)f Fc(__s)p Fs(\))515 +2517 y Fq(The)24 b Fs(dtostrf\(\))h Fq(\(p.)14 b(193\))23 +b(function)i(con)n(v)n(erts)d(the)j(double)f(v)-5 b(alue)24 +b(passed)g(in)g Fm(val)f Fq(in)n(to)h(an)515 2616 y(ASCI)r(I)32 +b(represen)n(tation)n(that)e(will)h(b)r(e)h(stored)f(under)h +Fm(s)p Fq(.)48 b(The)32 b(caller)e(is)i(resp)r(onsible)f(for)515 +2716 y(pro)n(viding)26 b(su\036cien)n(t)h(storage)f(in)i +Fm(s)p Fq(.)515 2863 y(Con)n(v)n(ersion)35 b(is)i(done)g(in)g(the)h +(format)f Fm("[-]d.ddd")p Fq(.)62 b(The)37 b(minim)n(um)h(\034eld)f +(width)h(of)515 2962 y(the)32 b(output)g(string)f(\(including)h(the)g +Fm(')p Fq(.')49 b(and)32 b(the)g(p)r(ossible)f(sign)g(for)h(negativ)n +(e)e(v)-5 b(alues\))515 3062 y(is)30 b(giv)n(en)f(in)h +Fm(width)p Fq(,)f(and)h Fm(prec)e Fq(determines)i(the)h(n)n(um)n(b)r +(er)e(of)h(digits)g(after)g(the)g(decimal)515 3162 y(sign.)36 +b Fm(width)26 b Fq(is)h(signed)g(v)-5 b(alue,)28 b(negativ)n(e)e(for)h +(left)h(adjustmen)n(t.)515 3309 y(The)f Fs(dtostrf\(\))h +Fq(\(p.)14 b(193\))27 b(function)h(returns)f(the)h(p)r(oin)n(ter)f(to)h +(the)f(con)n(v)n(erted)g(string)f Fm(s)p Fq(.)515 3572 +y Fs(22.10.4.11)92 b(v)m(oid)32 b(exit)f(\(in)m(t)h Fc(__status)p +Fs(\))515 3718 y Fq(The)g Fs(exit\(\))g Fq(\(p.)14 b(193\))31 +b(function)h(terminates)f(the)h(application.)49 b(Since)32 +b(there)g(is)g(no)f(en-)515 3818 y(vironmen)n(t)g(to)g(return)g(to,)i +Fm(status)c Fq(is)j(ignored,)f(and)h(co)r(de)f(execution)g(will)h(ev)n +(en)n(tually)515 3918 y(reac)n(h)i(an)i(in\034nite)h(lo)r(op,)h(thereb) +n(y)d(e\033ectiv)n(ely)h(halting)g(all)g(co)r(de)f(pro)r(cessing.)61 +b(Before)515 4017 y(en)n(tering)26 b(the)i(in\034nite)h(lo)r(op,)e(in)n +(terrupts)g(are)f(globally)h(disabled.)515 4164 y(In)g(a)h(C++)e(con)n +(text,)i(global)e(destructors)g(will)i(b)r(e)g(called)f(b)r(efore)g +(halting)h(execution.)515 4427 y Fs(22.10.4.12)92 b(v)m(oid)32 +b(free)f(\(v)m(oid)h Fh(\003)g Fc(__ptr)p Fs(\))515 4574 +y Fq(The)27 b Fs(free\(\))h Fq(\(p.)14 b(193\))26 b(function)i(causes)f +(the)g(allo)r(cated)g(memory)f(referenced)h(b)n(y)g Fm(ptr)f +Fq(to)515 4674 y(b)r(e)i(made)f(a)n(v)-5 b(ailable)26 +b(for)h(future)h(allo)r(cations.)36 b(If)28 b Fm(ptr)e +Fq(is)i(NULL,)g(no)f(action)g(o)r(ccurs.)515 4937 y Fs(22.10.4.13)92 +b(c)m(har)p Fh(\003)33 b Fs(itoa)e(\(in)m(t)h Fc(__val)p +Fs(,)62 b(c)m(har)34 b Fh(\003)d Fc(__s)p Fs(,)62 b(in)m(t)32 +b Fc(__r)-5 b(adix)p Fs(\))p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 194 210 +TeXDict begin 194 209 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(194)p 515 236 2865 4 v 515 523 a Fq(Con)n(v)n(ert)26 +b(an)h(in)n(teger)g(to)g(a)g(string.)515 670 y(The)f(function)h +Fs(itoa\(\))f Fq(\(p.)14 b(193\))25 b(con)n(v)n(erts)f(the)j(in)n +(teger)e(v)-5 b(alue)26 b(from)g Fm(val)f Fq(in)n(to)h(an)f(ASCI)r(I) +515 770 y(represen)n(tation)18 b(that)i(will)g(b)r(e)g(stored)f(under)g +Fm(s)p Fq(.)34 b(The)20 b(caller)f(is)g(resp)r(onsible)g(for)h(pro)n +(viding)515 869 y(su\036cien)n(t)27 b(storage)f(in)i +Fm(s)p Fq(.)506 1081 y Fs(Note:)676 1231 y Fq(The)e(minimal)f(size)g +(of)g(the)h(bu\033er)g Fm(s)f Fq(dep)r(ends)g(on)h(the)f(c)n(hoice)g +(of)g(radix.)35 b(F)-7 b(or)25 b(exam-)676 1330 y(ple,)31 +b(if)f(the)g(radix)f(is)g(2)h(\(binary\),)g(y)n(ou)f(need)h(to)f +(supply)h(a)f(bu\033er)h(with)h(a)e(minimal)676 1430 +y(length)d(of)f(8)h Fh(\003)f Fq(sizeof)g(\(in)n(t\))i(+)e(1)g(c)n +(haracters,)f(i.e.)36 b(one)25 b(c)n(haracter)f(for)h(eac)n(h)g(bit)h +(plus)676 1529 y(one)33 b(for)g(the)g(string)g(terminator.)53 +b(Using)33 b(a)g(larger)e(radix)i(will)g(require)f(a)h(smaller)676 +1629 y(minimal)28 b(bu\033er)g(size.)506 1825 y Fs(W)-8 +b(arning:)676 1991 y Fq(If)28 b(the)g(bu\033er)g(is)f(to)r(o)h(small,)f +(y)n(ou)g(risk)f(a)h(bu\033er)h(o)n(v)n(er\035o)n(w.)515 +2220 y(Con)n(v)n(ersion)g(is)j(done)g(using)g(the)g Fm(radix)e +Fq(as)h(base,)h(whic)n(h)g(ma)n(y)g(b)r(e)g(a)g(n)n(um)n(b)r(er)f(b)r +(et)n(w)n(een)515 2320 y(2)e(\(binary)h(con)n(v)n(ersion\))d(and)j(up)g +(to)g(36.)40 b(If)29 b Fm(radix)e Fq(is)i(greater)e(than)i(10,)g(the)g +(next)g(digit)515 2420 y(after)e Fm('9')f Fq(will)i(b)r(e)g(the)g +(letter)g Fm('a')p Fq(.)515 2567 y(If)g(radix)e(is)i(10)f(and)g(v)-5 +b(al)27 b(is)h(negativ)n(e,)e(a)h(min)n(us)h(sign)f(will)h(b)r(e)g +(prep)r(ended.)515 2713 y(The)f Fs(itoa\(\))h Fq(\(p.)14 +b(193\))27 b(function)h(returns)f(the)h(p)r(oin)n(ter)f(passed)f(as)h +Fm(s)p Fq(.)515 2976 y Fs(22.10.4.14)92 b(long)31 b(labs)g(\(long)g +Fc(__i)p Fs(\))515 3123 y Fq(The)k Fs(labs\(\))g Fq(\(p.)14 +b(194\))35 b(function)g(computes)g(the)h(absolute)f(v)-5 +b(alue)35 b(of)g(the)h(long)e(in)n(teger)515 3223 y Fm(i)p +Fq(.)506 3402 y Fs(Note:)676 3552 y Fq(The)28 b Fs(abs\(\))g +Fq(\(p.)14 b(191\))26 b(and)i Fs(labs\(\))f Fq(\(p.)14 +b(194\))27 b(functions)h(are)e(builtins)j(of)e(gcc.)515 +3881 y Fs(22.10.4.15)92 b(ldiv_t)31 b(ldiv)h(\(long)f +Fc(__num)p Fs(,)62 b(long)30 b Fc(__denom)p Fs(\))515 +4028 y Fq(The)37 b Fs(ldiv\(\))h Fq(\(p.)14 b(194\))37 +b(function)h(computes)f(the)h(v)-5 b(alue)38 b Fm(num/denom)33 +b Fq(and)38 b(returns)f(the)515 4128 y(quotien)n(t)f(and)h(remainder)e +(in)i(a)f(structure)g(named)h Fm(ldiv_t)k(\()p Fq(p.)14 +b Fm(352\))35 b Fq(that)i(con)n(tains)515 4227 y(t)n(w)n(o)27 +b(long)f(in)n(teger)h(mem)n(b)r(ers)g(named)h Fm(quot)e +Fq(and)h Fm(rem)p Fq(.)515 4490 y Fs(22.10.4.16)92 b(c)m(har)p +Fh(\003)31 b Fs(ltoa)f(\(long)f(in)m(t)i Fc(__val)p Fs(,)59 +b(c)m(har)32 b Fh(\003)e Fc(__s)p Fs(,)60 b(in)m(t)30 +b Fc(__r)-5 b(adix)p Fs(\))515 4637 y Fq(Con)n(v)n(ert)26 +b(a)h(long)g(in)n(teger)f(to)i(a)f(string.)515 4784 y(The)32 +b(function)i Fs(ltoa\(\))e Fq(\(p.)14 b(194\))32 b(con)n(v)n(erts)f +(the)i(long)f(in)n(teger)g(v)-5 b(alue)32 b(from)h Fm(val)e +Fq(in)n(to)h(an)515 4884 y(ASCI)r(I)e(represen)n(tation)d(that)i(will)h +(b)r(e)f(stored)g(under)g Fm(s)p Fq(.)41 b(The)29 b(caller)f(is)h(resp) +r(onsible)g(for)515 4983 y(pro)n(viding)d(su\036cien)n(t)h(storage)f +(in)i Fm(s)p Fq(.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 195 211 +TeXDict begin 195 210 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(195)p 515 236 2865 4 v 506 497 a(Note:)676 647 y Fq(The)26 +b(minimal)f(size)g(of)g(the)h(bu\033er)g Fm(s)f Fq(dep)r(ends)g(on)h +(the)f(c)n(hoice)g(of)g(radix.)35 b(F)-7 b(or)25 b(exam-)676 +746 y(ple,)31 b(if)f(the)g(radix)f(is)g(2)h(\(binary\),)g(y)n(ou)f +(need)h(to)f(supply)h(a)f(bu\033er)h(with)h(a)e(minimal)676 +846 y(length)34 b(of)f(8)g Fh(\003)h Fq(sizeof)f(\(long)g(in)n(t\))h(+) +f(1)g(c)n(haracters,)g(i.e.)55 b(one)33 b(c)n(haracter)f(for)h(eac)n(h) +676 946 y(bit)f(plus)g(one)f(for)h(the)g(string)f(terminator.)48 +b(Using)31 b(a)h(larger)d(radix)i(will)h(require)e(a)676 +1045 y(smaller)d(minimal)g(bu\033er)h(size.)506 1241 +y Fs(W)-8 b(arning:)676 1407 y Fq(If)28 b(the)g(bu\033er)g(is)f(to)r(o) +h(small,)f(y)n(ou)g(risk)f(a)h(bu\033er)h(o)n(v)n(er\035o)n(w.)515 +1637 y(Con)n(v)n(ersion)g(is)j(done)g(using)g(the)g Fm(radix)e +Fq(as)h(base,)h(whic)n(h)g(ma)n(y)g(b)r(e)g(a)g(n)n(um)n(b)r(er)f(b)r +(et)n(w)n(een)515 1736 y(2)e(\(binary)h(con)n(v)n(ersion\))d(and)j(up)g +(to)g(36.)40 b(If)29 b Fm(radix)e Fq(is)i(greater)e(than)i(10,)g(the)g +(next)g(digit)515 1836 y(after)e Fm('9')f Fq(will)i(b)r(e)g(the)g +(letter)g Fm('a')p Fq(.)515 1983 y(If)g(radix)e(is)i(10)f(and)g(v)-5 +b(al)27 b(is)h(negativ)n(e,)e(a)h(min)n(us)h(sign)f(will)h(b)r(e)g +(prep)r(ended.)515 2130 y(The)f Fs(ltoa\(\))h Fq(\(p.)14 +b(194\))27 b(function)h(returns)f(the)h(p)r(oin)n(ter)f(passed)f(as)h +Fm(s)p Fq(.)515 2393 y Fs(22.10.4.17)92 b(v)m(oid)p Fh(\003)31 +b Fs(mallo)s(c)g(\(size_t)g Fc(__size)p Fs(\))515 2539 +y Fq(The)h Fs(mallo)s(c\(\))g Fq(\(p.)14 b(195\))32 b(function)h(allo)r +(cates)e Fm(size)g Fq(b)n(ytes)i(of)f(memory)-7 b(.)51 +b(If)40 b Fs(mallo)s(c\(\))515 2639 y Fq(\(p.)14 b(195\))26 +b(fails,)i(a)f(NULL)h(p)r(oin)n(ter)f(is)h(returned.)515 +2786 y(Note)35 b(that)h Fs(mallo)s(c\(\))e Fq(\(p.)14 +b(195\))34 b(do)r(es)h Fl(not)43 b Fq(initialize)35 b(the)h(returned)f +(memory)f(to)h(zero)515 2886 y(b)n(ytes.)515 3032 y(See)27 +b(the)h(c)n(hapter)f(ab)r(out)g Fs(mallo)s(c\(\))k(usage)c +Fq(\(p.)14 b(15\))28 b(for)f(implemen)n(tation)g(details.)515 +3295 y Fs(22.10.4.18)92 b(v)m(oid)40 b(qsort)h(\(v)m(oid)f +Fh(\003)g Fc(__b)-5 b(ase)p Fs(,)85 b(size_t)40 b Fc(__nmemb)p +Fs(,)84 b(size_t)515 3395 y Fc(__size)p Fs(,)62 b(__compar_fn_t)33 +b Fc(__c)-5 b(omp)g(ar)p Fs(\))515 3542 y Fq(The)19 b +Fs(qsort\(\))h Fq(\(p.)14 b(195\))k(function)h(is)g(a)g(mo)r(di\034ed)h +(partition-exc)n(hange)c(sort,)k(or)f(quic)n(ksort.)515 +3689 y(The)27 b Fs(qsort\(\))g Fq(\(p.)14 b(195\))26 +b(function)h(sorts)e(an)i(arra)n(y)d(of)j Fm(nmemb)e +Fq(ob)5 b(jects,)26 b(the)h(initial)g(mem-)515 3788 y(b)r(er)e(of)g +(whic)n(h)g(is)g(p)r(oin)n(ted)g(to)g(b)n(y)f Fm(base)p +Fq(.)35 b(The)25 b(size)g(of)g(eac)n(h)f(ob)5 b(ject)25 +b(is)g(sp)r(eci\034ed)g(b)n(y)g Fm(size)p Fq(.)515 3888 +y(The)d(con)n(ten)n(ts)g(of)g(the)g(arra)n(y)e(base)i(are)f(sorted)h +(in)g(ascending)f(order)g(according)g(to)h(a)g(com-)515 +3988 y(parison)27 b(function)i(p)r(oin)n(ted)f(to)h(b)n(y)f +Fm(compar)p Fq(,)e(whic)n(h)j(requires)e(t)n(w)n(o)g(argumen)n(ts)g(p)r +(oin)n(ting)515 4087 y(to)g(the)h(ob)5 b(jects)27 b(b)r(eing)h +(compared.)515 4234 y(The)g(comparison)f(function)i(m)n(ust)f(return)g +(an)h(in)n(teger)e(less)h(than,)h(equal)f(to,)g(or)g(greater)515 +4334 y(than)h(zero)e(if)i(the)g(\034rst)g(argumen)n(t)f(is)g +(considered)g(to)g(b)r(e)h(resp)r(ectiv)n(ely)f(less)g(than,)i(equal) +515 4433 y(to,)d(or)g(greater)f(than)h(the)h(second.)515 +4696 y Fs(22.10.4.19)92 b(in)m(t)32 b(rand)g(\(v)m(oid\))515 +4843 y Fq(The)21 b Fs(rand\(\))i Fq(\(p.)14 b(195\))21 +b(function)h(computes)f(a)g(sequence)g(of)h(pseudo-random)e(in)n +(tegers)g(in)515 4943 y(the)26 b(range)e(of)i(0)f(to)h +Fm(RAND_MAX)c Fq(\(as)k(de\034ned)g(b)n(y)f(the)h(header)f(\034le)h +Fo(<)p Fs(stdlib.h)e Fq(\(p.)14 b(384\))p Fo(>)p Fq(\).)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 196 212 +TeXDict begin 196 211 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(196)p 515 236 2865 4 v 515 523 a Fq(The)37 b Fs(srand\(\))g +Fq(\(p.)14 b(197\))36 b(function)i(sets)f(its)g(argumen)n(t)f +Fm(seed)f Fq(as)h(the)h(seed)g(for)g(a)f(new)515 623 +y(sequence)27 b(of)h(pseudo-random)e(n)n(um)n(b)r(ers)h(to)h(b)r(e)g +(returned)f(b)n(y)i Fs(rand\(\))g Fq(\(p.)14 b(195\).)36 +b(These)515 722 y(sequences)26 b(are)h(rep)r(eatable)g(b)n(y)g(calling) +h Fs(srand\(\))g Fq(\(p.)14 b(197\))27 b(with)h(the)g(same)f(seed)g(v) +-5 b(alue.)515 869 y(If)24 b(no)g(seed)f(v)-5 b(alue)24 +b(is)g(pro)n(vided,)f(the)h(functions)g(are)f(automatically)g(seeded)g +(with)i(a)e(v)-5 b(alue)515 969 y(of)27 b(1.)515 1116 +y(In)h(compliance)f(with)h(the)g(C)f(standard,)g(these)h(functions)g +(op)r(erate)f(on)g Fm(int)f Fq(argumen)n(ts.)515 1215 +y(Since)34 b(the)h(underlying)f(algorithm)f(already)g(uses)h(32-bit)g +(calculations,)h(this)g(causes)e(a)515 1315 y(loss)c(of)i(precision.)44 +b(See)30 b Fm(random\(\))41 b(\()p Fq(p.)14 b Fm(196\))29 +b Fq(for)h(an)g(alternate)f(set)i(of)f(functions)h(that)515 +1415 y(retains)26 b(full)j(32-bit)e(precision.)515 1678 +y Fs(22.10.4.20)92 b(in)m(t)32 b(rand_r)h(\(unsigned)d(long)h +Fh(\003)h Fc(__ctx)p Fs(\))515 1824 y Fq(V)-7 b(arian)n(t)26 +b(of)33 b Fs(rand\(\))27 b Fq(\(p.)14 b(195\))26 b(that)h(stores)f(the) +h(con)n(text)f(in)h(the)g(user-supplied)f(v)-5 b(ariable)515 +1924 y(lo)r(cated)32 b(at)g Fm(ctx)f Fq(instead)h(of)g(a)g(static)g +(library)f(v)-5 b(ariable)31 b(so)h(the)g(function)h(b)r(ecomes)f(re-) +515 2024 y(en)n(tran)n(t.)515 2287 y Fs(22.10.4.21)92 +b(long)31 b(random)g(\(v)m(oid\))515 2434 y Fq(The)f +Fs(random\(\))h Fq(\(p.)14 b(196\))30 b(function)g(computes)h(a)f +(sequence)f(of)i(pseudo-random)d(in)n(te-)515 2533 y(gers)h(in)i(the)g +(range)e(of)h(0)g(to)h Fm(RANDOM_MAX)26 b Fq(\(as)k(de\034ned)h(b)n(y)f +(the)h(header)e(\034le)i Fo(<)p Fs(stdlib.h)515 2633 +y Fq(\(p.)14 b(384\))p Fo(>)p Fq(\).)515 2780 y(The)27 +b Fs(srandom\(\))g Fq(\(p.)14 b(197\))26 b(function)i(sets)f(its)g +(argumen)n(t)f Fm(seed)g Fq(as)g(the)i(seed)f(for)f(a)h(new)515 +2879 y(sequence)g(of)h(pseudo-random)e(n)n(um)n(b)r(ers)h(to)h(b)r(e)g +(returned)f(b)n(y)i Fs(rand\(\))g Fq(\(p.)14 b(195\).)36 +b(These)515 2979 y(sequences)i(are)g(rep)r(eatable)g(b)n(y)h(calling)h +Fs(srandom\(\))f Fq(\(p.)14 b(197\))38 b(with)h(the)h(same)e(seed)515 +3079 y(v)-5 b(alue.)515 3225 y(If)24 b(no)g(seed)f(v)-5 +b(alue)24 b(is)g(pro)n(vided,)f(the)h(functions)g(are)f(automatically)g +(seeded)g(with)i(a)e(v)-5 b(alue)515 3325 y(of)27 b(1.)515 +3588 y Fs(22.10.4.22)92 b(long)31 b(random_r)h(\(unsigned)f(long)g +Fh(\003)g Fc(__ctx)p Fs(\))515 3735 y Fq(V)-7 b(arian)n(t)25 +b(of)32 b Fs(random\(\))27 b Fq(\(p.)14 b(196\))25 b(that)h(stores)f +(the)h(con)n(text)g(in)g(the)h(user-supplied)e(v)-5 b(ari-)515 +3835 y(able)28 b(lo)r(cated)g(at)g Fm(ctx)f Fq(instead)h(of)h(a)f +(static)g(library)f(v)-5 b(ariable)27 b(so)h(the)h(function)g(b)r +(ecomes)515 3934 y(re-en)n(tran)n(t.)515 4197 y Fs(22.10.4.23)92 +b(v)m(oid)p Fh(\003)31 b Fs(reallo)s(c)g(\(v)m(oid)h +Fh(\003)g Fc(__ptr)p Fs(,)61 b(size_t)32 b Fc(__size)p +Fs(\))515 4344 y Fq(The)21 b Fs(reallo)s(c\(\))g Fq(\(p.)14 +b(196\))20 b(function)i(tries)f(to)g(c)n(hange)f(the)h(size)g(of)g(the) +h(region)e(allo)r(cated)g(at)515 4444 y Fm(ptr)h Fq(to)i(the)g(new)g +Fm(size)e Fq(v)-5 b(alue.)35 b(It)23 b(returns)f(a)g(p)r(oin)n(ter)g +(to)h(the)g(new)g(region.)34 b(The)23 b(returned)515 +4543 y(p)r(oin)n(ter)39 b(migh)n(t)g(b)r(e)h(the)f(same)g(as)g(the)g +(old)g(p)r(oin)n(ter,)j(or)d(a)f(p)r(oin)n(ter)h(to)g(a)g(completely) +515 4643 y(di\033eren)n(t)27 b(region.)515 4790 y(The)j(con)n(ten)n(ts) +g(of)h(the)g(returned)f(region)f(up)i(to)f(either)h(the)g(old)f(or)f +(the)i(new)g(size)f(v)-5 b(alue)515 4889 y(\(whatev)n(er)23 +b(is)h(less\))g(will)g(b)r(e)h(iden)n(tical)f(to)g(the)g(con)n(ten)n +(ts)g(of)g(the)g(old)g(region,)g(ev)n(en)g(in)g(case)515 +4989 y(a)j(new)h(region)e(had)h(to)h(b)r(e)g(allo)r(cated.)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 197 213 +TeXDict begin 197 212 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(197)p 515 236 2865 4 v 515 523 a Fq(It)39 b(is)g(acceptable)f(to)h +(pass)f Fm(ptr)g Fq(as)g(NULL,)h(in)g(whic)n(h)g(case)f +Fs(reallo)s(c\(\))h Fq(\(p.)14 b(196\))38 b(will)515 +623 y(b)r(eha)n(v)n(e)26 b(iden)n(tical)i(to)f Fs(mallo)s(c\(\))g +Fq(\(p.)14 b(195\).)515 770 y(If)29 b(the)f(new)h(memory)e(cannot)h(b)r +(e)h(allo)r(cated,)f Fs(reallo)s(c\(\))g Fq(\(p.)14 b(196\))28 +b(returns)f(NULL,)i(and)515 869 y(the)f(region)e(at)h +Fm(ptr)g Fq(will)h(not)f(b)r(e)h(c)n(hanged.)515 1132 +y Fs(22.10.4.24)92 b(v)m(oid)32 b(srand)g(\(unsigned)f(in)m(t)g +Fc(__se)-5 b(e)g(d)p Fs(\))515 1279 y Fq(Pseudo-random)26 +b(n)n(um)n(b)r(er)h(generator)e(seeding;)i(see)h Fs(rand\(\))g +Fq(\(p.)14 b(195\).)515 1542 y Fs(22.10.4.25)92 b(v)m(oid)32 +b(srandom)f(\(unsigned)g(long)g Fc(__se)-5 b(e)g(d)p +Fs(\))515 1689 y Fq(Pseudo-random)26 b(n)n(um)n(b)r(er)h(generator)e +(seeding;)i(see)h Fs(random\(\))g Fq(\(p.)14 b(196\).)515 +1952 y Fs(22.10.4.26)92 b(double)31 b(strto)s(d)g(\(const)h(c)m(har)h +Fh(\003)f Fc(nptr)p Fs(,)62 b(c)m(har)34 b Fh(\003\003)d +Fc(endptr)p Fs(\))515 2099 y Fq(The)24 b Fs(strto)s(d\(\))h +Fq(\(p.)14 b(197\))23 b(function)i(con)n(v)n(erts)e(the)i(initial)f(p)r +(ortion)g(of)g(the)h(string)f(p)r(oin)n(ted)515 2198 +y(to)j(b)n(y)g Fl(nptr)37 b Fq(to)27 b(double)h(represen)n(tation.)515 +2345 y(The)37 b(exp)r(ected)h(form)e(of)i(the)f(string)g(is)g(an)g +(optional)g(plus)g(\()h Fm('+')e Fq(\))h(or)g(min)n(us)g(sign)g(\()515 +2445 y Fm('-')g Fq(\))i(follo)n(w)n(ed)e(b)n(y)i(a)f(sequence)g(of)g +(digits)g(optionally)g(con)n(taining)f(a)i(decimal-p)r(oin)n(t)515 +2545 y(c)n(haracter,)26 b(optionally)h(follo)n(w)n(ed)h(b)n(y)f(an)h +(exp)r(onen)n(t.)39 b(An)29 b(exp)r(onen)n(t)f(consists)f(of)h(an)g +Fm('E')515 2644 y Fq(or)k Fm('e')p Fq(,)h(follo)n(w)n(ed)f(b)n(y)g(an)h +(optional)f(plus)h(or)f(min)n(us)h(sign,)h(follo)n(w)n(ed)e(b)n(y)g(a)h +(sequence)f(of)515 2744 y(digits.)515 2891 y(Leading)26 +b(white-space)h(c)n(haracters)e(in)j(the)g(string)f(are)g(skipp)r(ed.) +515 3038 y(The)g Fs(strto)s(d\(\))h Fq(\(p.)14 b(197\))27 +b(function)h(returns)f(the)g(con)n(v)n(erted)f(v)-5 b(alue,)28 +b(if)g(an)n(y)-7 b(.)515 3184 y(If)26 b Fl(endptr)35 +b Fq(is)26 b(not)g Fm(NULL)p Fq(,)f(a)g(p)r(oin)n(ter)h(to)g(the)g(c)n +(haracter)e(after)i(the)g(last)g(c)n(haracter)e(used)i(in)515 +3284 y(the)i(con)n(v)n(ersion)d(is)i(stored)g(in)h(the)g(lo)r(cation)f +(referenced)f(b)n(y)i Fl(endptr)9 b Fq(.)515 3431 y(If)32 +b(no)f(con)n(v)n(ersion)e(is)i(p)r(erformed,)h(zero)e(is)i(returned)f +(and)g(the)h(v)-5 b(alue)31 b(of)g Fl(nptr)41 b Fq(is)31 +b(stored)515 3531 y(in)d(the)g(lo)r(cation)e(referenced)h(b)n(y)g +Fl(endptr)9 b Fq(.)515 3677 y(If)32 b(the)f(correct)g(v)-5 +b(alue)31 b(w)n(ould)g(cause)g(o)n(v)n(er\035o)n(w,)e(plus)j(or)f(min)n +(us)g Fm(INFINITY)d Fq(is)k(returned)515 3777 y(\(according)19 +b(to)h(the)h(sign)f(of)h(the)g(v)-5 b(alue\),)22 b(and)f +Fm(ERANGE)d Fq(is)i(stored)g(in)h Fm(errno)p Fq(.)32 +b(If)22 b(the)f(correct)515 3877 y(v)-5 b(alue)27 b(w)n(ould)g(cause)g +(under\035o)n(w,)g(zero)f(is)i(returned)f(and)g Fm(ERANGE)e +Fq(is)j(stored)e(in)i Fm(errno)p Fq(.)515 4140 y Fs(22.10.4.27)92 +b(long)27 b(strtol)g(\(const)h(c)m(har)i Fh(\003)d Fc(__nptr)p +Fs(,)56 b(c)m(har)29 b Fh(\003\003)e Fc(__endptr)p Fs(,)56 +b(in)m(t)515 4239 y Fc(__b)-5 b(ase)p Fs(\))515 4386 +y Fq(The)27 b Fs(strtol\(\))g Fq(\(p.)14 b(197\))27 b(function)h(con)n +(v)n(erts)d(the)j(string)f(in)h Fm(nptr)d Fq(to)j(a)f(long)f(v)-5 +b(alue.)37 b(The)515 4486 y(con)n(v)n(ersion)29 b(is)j(done)f +(according)f(to)i(the)g(giv)n(en)f(base,)h(whic)n(h)g(m)n(ust)g(b)r(e)g +(b)r(et)n(w)n(een)g(2)f(and)515 4585 y(36)26 b(inclusiv)n(e,)i(or)e(b)r +(e)i(the)g(sp)r(ecial)f(v)-5 b(alue)28 b(0.)515 4732 +y(The)g(string)g(ma)n(y)g(b)r(egin)h(with)g(an)f(arbitrary)e(amoun)n(t) +j(of)f(white)h(space)f(\(as)g(determined)515 4832 y(b)n(y)g +Fs(isspace\(\))g Fq(\(p.)14 b(134\)\))27 b(follo)n(w)n(ed)g(b)n(y)h(a)f +(single)h(optional)f Fm('+')g Fq(or)g Fm('-')f Fq(sign.)38 +b(If)28 b Fm(base)e Fq(is)515 4932 y(zero)j(or)h(16,)g(the)h(string)e +(ma)n(y)h(then)h(include)g(a)f Fm("0x")e Fq(pre\034x,)j(and)f(the)h(n)n +(um)n(b)r(er)f(will)h(b)r(e)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 198 214 +TeXDict begin 198 213 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(198)p 515 236 2865 4 v 515 523 a Fq(read)27 b(in)h(base)f(16;)g +(otherwise,)g(a)g(zero)g(base)g(is)h(tak)n(en)f(as)g(10)g(\(decimal\))h +(unless)g(the)g(next)515 623 y(c)n(haracter)d(is)j Fm('0')p +Fq(,)e(in)i(whic)n(h)f(case)g(it)h(is)g(tak)n(en)f(as)f(8)i(\(o)r +(ctal\).)515 770 y(The)d(remainder)f(of)h(the)h(string)f(is)g(con)n(v)n +(erted)f(to)h(a)g(long)f(v)-5 b(alue)25 b(in)h(the)g(ob)n(vious)e +(manner,)515 869 y(stopping)29 b(at)g(the)h(\034rst)g(c)n(haracter)d +(whic)n(h)j(is)f(not)h(a)f(v)-5 b(alid)30 b(digit)g(in)f(the)h(giv)n +(en)f(base.)43 b(\(In)515 969 y(bases)29 b(ab)r(o)n(v)n(e)f(10,)i(the)h +(letter)e Fm('A')g Fq(in)i(either)e(upp)r(er)h(or)g(lo)n(w)n(er)e(case) +h(represen)n(ts)g(10,)g Fm('B')515 1068 y Fq(represen)n(ts)d(11,)g(and) +i(so)f(forth,)g(with)h Fm('Z')f Fq(represen)n(ting)f(35.\))515 +1215 y(If)k Fm(endptr)e Fq(is)h(not)h(NULL,)h Fs(strtol\(\))e +Fq(\(p.)14 b(197\))30 b(stores)e(the)j(address)d(of)i(the)h(\034rst)e +(in)n(v)-5 b(alid)515 1315 y(c)n(haracter)27 b(in)k Fh(\003)p +Fm(endptr)p Fq(.)40 b(If)30 b(there)g(w)n(ere)f(no)g(digits)h(at)g +(all,)g(ho)n(w)n(ev)n(er,)e Fs(strtol\(\))i Fq(\(p.)14 +b(197\))515 1415 y(stores)33 b(the)i(original)e(v)-5 +b(alue)35 b(of)f Fm(nptr)f Fq(in)i Fm(endptr)p Fq(.)56 +b(\(Th)n(us,)37 b(if)e Fh(\003)p Fm(nptr)d Fq(is)j(not)f +Fm(')p Fh(n)p Fm(0')f Fq(but)515 1514 y Fh(\003\003)p +Fm(endptr)24 b Fq(is)j Fm(')p Fh(n)p Fm(0')f Fq(on)i(return,)f(the)h +(en)n(tire)f(string)g(w)n(as)f(v)-5 b(alid.\))515 1661 +y(The)32 b Fs(strtol\(\))h Fq(\(p.)14 b(197\))31 b(function)i(returns)f +(the)h(result)f(of)g(the)h(con)n(v)n(ersion,)e(unless)i(the)515 +1761 y(v)-5 b(alue)33 b(w)n(ould)h(under\035o)n(w)e(or)h(o)n(v)n +(er\035o)n(w.)53 b(If)34 b(no)g(con)n(v)n(ersion)d(could)j(b)r(e)g(p)r +(erformed,)h(0)e(is)515 1860 y(returned.)h(If)22 b(an)f(o)n(v)n +(er\035o)n(w)e(or)i(under\035o)n(w)g(o)r(ccurs,)g Fm(errno)f +Fq(is)h(set)h(to)f Fs(ERANGE)g Fq(\(p.)14 b(134\))515 +1960 y(and)21 b(the)h(function)g(return)f(v)-5 b(alue)21 +b(is)h(clamp)r(ed)f(to)h Fm(LONG_MIN)c Fq(or)j Fm(LONG_MAX)p +Fq(,)d(resp)r(ectiv)n(ely)-7 b(.)515 2323 y Fs(22.10.4.28)92 +b(unsigned)32 b(long)h(strtoul)h(\(const)f(c)m(har)j +Fh(\003)d Fc(__nptr)p Fs(,)67 b(c)m(har)35 b Fh(\003\003)e +Fc(_-)515 2422 y(_endptr)p Fs(,)62 b(in)m(t)32 b Fc(__b)-5 +b(ase)p Fs(\))515 2569 y Fq(The)25 b Fs(strtoul\(\))g +Fq(\(p.)14 b(198\))24 b(function)h(con)n(v)n(erts)f(the)h(string)g(in)g +Fm(nptr)e Fq(to)i(an)g(unsigned)g(long)515 2669 y(v)-5 +b(alue.)76 b(The)41 b(con)n(v)n(ersion)e(is)i(done)f(according)f(to)i +(the)g(giv)n(en)f(base,)k(whic)n(h)d(m)n(ust)g(b)r(e)515 +2768 y(b)r(et)n(w)n(een)27 b(2)g(and)h(36)e(inclusiv)n(e,)i(or)e(b)r(e) +i(the)g(sp)r(ecial)f(v)-5 b(alue)28 b(0.)515 2915 y(The)g(string)g(ma)n +(y)g(b)r(egin)h(with)g(an)f(arbitrary)e(amoun)n(t)j(of)f(white)h(space) +f(\(as)g(determined)515 3015 y(b)n(y)g Fs(isspace\(\))g +Fq(\(p.)14 b(134\)\))27 b(follo)n(w)n(ed)g(b)n(y)h(a)f(single)h +(optional)f Fm('+')g Fq(or)g Fm('-')f Fq(sign.)38 b(If)28 +b Fm(base)e Fq(is)515 3114 y(zero)j(or)h(16,)g(the)h(string)e(ma)n(y)h +(then)h(include)g(a)f Fm("0x")e Fq(pre\034x,)j(and)f(the)h(n)n(um)n(b)r +(er)f(will)h(b)r(e)515 3214 y(read)c(in)h(base)f(16;)g(otherwise,)g(a)g +(zero)g(base)g(is)h(tak)n(en)f(as)g(10)g(\(decimal\))h(unless)g(the)g +(next)515 3314 y(c)n(haracter)d(is)j Fm('0')p Fq(,)e(in)i(whic)n(h)f +(case)g(it)h(is)g(tak)n(en)f(as)f(8)i(\(o)r(ctal\).)515 +3461 y(The)20 b(remainder)f(of)i(the)f(string)g(is)g(con)n(v)n(erted)f +(to)h(an)g(unsigned)g(long)g(v)-5 b(alue)20 b(in)h(the)f(ob)n(vious)515 +3560 y(manner,)32 b(stopping)g(at)g(the)h(\034rst)f(c)n(haracter)e +(whic)n(h)i(is)g(not)g(a)g(v)-5 b(alid)32 b(digit)g(in)g(the)h(giv)n +(en)515 3660 y(base.)i(\(In)26 b(bases)f(ab)r(o)n(v)n(e)f(10,)h(the)h +(letter)g Fm('A')e Fq(in)i(either)g(upp)r(er)f(or)g(lo)n(w)n(er)f(case) +h(represen)n(ts)515 3759 y(10,)h Fm('B')h Fq(represen)n(ts)f(11,)h(and) +g(so)g(forth,)g(with)h Fm('Z')f Fq(represen)n(ting)f(35.\))515 +3906 y(If)g Fm(endptr)d Fq(is)j(not)g(NULL,)g Fs(strtoul\(\))g +Fq(\(p.)14 b(198\))25 b(stores)g(the)h(address)f(of)g(the)i(\034rst)e +(in)n(v)-5 b(alid)515 4006 y(c)n(haracter)23 b(in)j Fh(\003)p +Fm(endptr)p Fq(.)34 b(If)26 b(there)f(w)n(ere)g(no)g(digits)h(at)g +(all,)f(ho)n(w)n(ev)n(er,)f Fs(strtoul\(\))i Fq(\(p.)14 +b(198\))515 4106 y(stores)33 b(the)i(original)e(v)-5 +b(alue)35 b(of)f Fm(nptr)f Fq(in)i Fm(endptr)p Fq(.)56 +b(\(Th)n(us,)37 b(if)e Fh(\003)p Fm(nptr)d Fq(is)j(not)f +Fm(')p Fh(n)p Fm(0')f Fq(but)515 4205 y Fh(\003\003)p +Fm(endptr)24 b Fq(is)j Fm(')p Fh(n)p Fm(0')f Fq(on)i(return,)f(the)h +(en)n(tire)f(string)g(w)n(as)f(v)-5 b(alid.\))515 4352 +y(The)35 b Fs(strtoul\(\))g Fq(\(p.)14 b(198\))35 b(function)h(return)f +(either)g(the)h(result)f(of)g(the)h(con)n(v)n(ersion)d(or,)515 +4452 y(if)e(there)f(w)n(as)f(a)h(leading)g(min)n(us)g(sign,)g(the)h +(negation)e(of)i(the)f(result)g(of)h(the)f(con)n(v)n(ersion,)515 +4551 y(unless)f(the)i(original)d(\(non-negated\))h(v)-5 +b(alue)30 b(w)n(ould)g(o)n(v)n(er\035o)n(w;)e(in)i(the)h(latter)e +(case,)h Fs(str-)515 4651 y(toul\(\))20 b Fq(\(p.)14 +b(198\))19 b(returns)g(ULONG_MAX,)i(and)f Fm(errno)e +Fq(is)i(set)h(to)f Fs(ERANGE)f Fq(\(p.)14 b(134\).)515 +4751 y(If)28 b(no)f(con)n(v)n(ersion)e(could)j(b)r(e)g(p)r(erformed,)f +(0)g(is)g(returned.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 199 215 +TeXDict begin 199 214 bop 515 203 a Fs(22.10)94 b Fo(<)p +Fs(stdlib.h)p Fo(>)p Fs(:)39 b(General)32 b(utilities)1220 +b(199)p 515 236 2865 4 v 515 523 a(22.10.4.29)92 b(c)m(har)p +Fh(\003)36 b Fs(ultoa)f(\(unsigned)f(long)g(in)m(t)i +Fc(__val)p Fs(,)70 b(c)m(har)37 b Fh(\003)e Fc(__s)p +Fs(,)71 b(in)m(t)515 623 y Fc(__r)-5 b(adix)p Fs(\))515 +770 y Fq(Con)n(v)n(ert)26 b(an)h(unsigned)g(long)g(in)n(teger)g(to)g(a) +g(string.)515 916 y(The)38 b(function)g Fs(ultoa\(\))g +Fq(\(p.)14 b(199\))37 b(con)n(v)n(erts)g(the)h(unsigned)f(long)h(in)n +(teger)f(v)-5 b(alue)37 b(from)515 1016 y Fm(val)e Fq(in)n(to)h(an)h +(ASCI)r(I)g(represen)n(tation)e(that)i(will)f(b)r(e)h(stored)f(under)g +Fm(s)p Fq(.)64 b(The)37 b(caller)e(is)515 1116 y(resp)r(onsible)26 +b(for)h(pro)n(viding)g(su\036cien)n(t)g(storage)f(in)i +Fm(s)p Fq(.)506 1291 y Fs(Note:)676 1440 y Fq(The)e(minimal)f(size)g +(of)g(the)h(bu\033er)g Fm(s)f Fq(dep)r(ends)g(on)h(the)f(c)n(hoice)g +(of)g(radix.)35 b(F)-7 b(or)25 b(exam-)676 1540 y(ple,)31 +b(if)f(the)g(radix)f(is)g(2)h(\(binary\),)g(y)n(ou)f(need)h(to)f +(supply)h(a)f(bu\033er)h(with)h(a)e(minimal)676 1639 +y(length)j(of)g(8)f Fh(\003)h Fq(sizeof)f(\(unsigned)h(long)f(in)n(t\)) +h(+)g(1)f(c)n(haracters,)g(i.e.)50 b(one)31 b(c)n(haracter)676 +1739 y(for)j(eac)n(h)f(bit)h(plus)g(one)g(for)g(the)g(string)f +(terminator.)55 b(Using)34 b(a)g(larger)e(radix)h(will)676 +1838 y(require)27 b(a)g(smaller)f(minimal)i(bu\033er)g(size.)506 +2013 y Fs(W)-8 b(arning:)676 2179 y Fq(If)28 b(the)g(bu\033er)g(is)f +(to)r(o)h(small,)f(y)n(ou)g(risk)f(a)h(bu\033er)h(o)n(v)n(er\035o)n(w.) +515 2372 y(Con)n(v)n(ersion)g(is)j(done)g(using)g(the)g +Fm(radix)e Fq(as)h(base,)h(whic)n(h)g(ma)n(y)g(b)r(e)g(a)g(n)n(um)n(b)r +(er)f(b)r(et)n(w)n(een)515 2471 y(2)e(\(binary)h(con)n(v)n(ersion\))d +(and)j(up)g(to)g(36.)40 b(If)29 b Fm(radix)e Fq(is)i(greater)e(than)i +(10,)g(the)g(next)g(digit)515 2571 y(after)e Fm('9')f +Fq(will)i(b)r(e)g(the)g(letter)g Fm('a')p Fq(.)515 2718 +y(The)f Fs(ultoa\(\))h Fq(\(p.)14 b(199\))27 b(function)h(returns)f +(the)h(p)r(oin)n(ter)f(passed)g(as)f Fm(s)p Fq(.)515 +2974 y Fs(22.10.4.30)92 b(c)m(har)p Fh(\003)38 b Fs(utoa)f(\(unsigned)f +(in)m(t)h Fc(__val)p Fs(,)74 b(c)m(har)39 b Fh(\003)d +Fc(__s)p Fs(,)76 b(in)m(t)37 b Fc(__-)515 3074 y(r)-5 +b(adix)p Fs(\))515 3221 y Fq(Con)n(v)n(ert)26 b(an)h(unsigned)g(in)n +(teger)g(to)g(a)h(string.)515 3368 y(The)e(function)g +Fs(utoa\(\))h Fq(\(p.)14 b(199\))25 b(con)n(v)n(erts)g(the)h(unsigned)g +(in)n(teger)f(v)-5 b(alue)26 b(from)f Fm(val)g Fq(in)n(to)515 +3467 y(an)k(ASCI)r(I)i(represen)n(tation)d(that)j(will)f(b)r(e)g +(stored)f(under)h Fm(s)p Fq(.)44 b(The)30 b(caller)f(is)h(resp)r +(onsible)515 3567 y(for)d(pro)n(viding)f(su\036cien)n(t)i(storage)d(in) +j Fm(s)p Fq(.)506 3742 y Fs(Note:)676 3891 y Fq(The)e(minimal)f(size)g +(of)g(the)h(bu\033er)g Fm(s)f Fq(dep)r(ends)g(on)h(the)f(c)n(hoice)g +(of)g(radix.)35 b(F)-7 b(or)25 b(exam-)676 3991 y(ple,)31 +b(if)f(the)g(radix)f(is)g(2)h(\(binary\),)g(y)n(ou)f(need)h(to)f +(supply)h(a)f(bu\033er)h(with)h(a)e(minimal)676 4091 +y(length)23 b(of)f(8)g Fh(\003)g Fq(sizeof)g(\(unsigned)g(in)n(t\))h(+) +f(1)g(c)n(haracters,)f(i.e.)35 b(one)22 b(c)n(haracter)e(for)i(eac)n(h) +676 4190 y(bit)32 b(plus)g(one)f(for)h(the)g(string)f(terminator.)48 +b(Using)31 b(a)h(larger)d(radix)i(will)h(require)e(a)676 +4290 y(smaller)d(minimal)g(bu\033er)h(size.)506 4449 +y Fs(W)-8 b(arning:)676 4614 y Fq(If)28 b(the)g(bu\033er)g(is)f(to)r(o) +h(small,)f(y)n(ou)g(risk)f(a)h(bu\033er)h(o)n(v)n(er\035o)n(w.)515 +4807 y(Con)n(v)n(ersion)g(is)j(done)g(using)g(the)g Fm(radix)e +Fq(as)h(base,)h(whic)n(h)g(ma)n(y)g(b)r(e)g(a)g(n)n(um)n(b)r(er)f(b)r +(et)n(w)n(een)515 4907 y(2)e(\(binary)h(con)n(v)n(ersion\))d(and)j(up)g +(to)g(36.)40 b(If)29 b Fm(radix)e Fq(is)i(greater)e(than)i(10,)g(the)g +(next)g(digit)515 5006 y(after)e Fm('9')f Fq(will)i(b)r(e)g(the)g +(letter)g Fm('a')p Fq(.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 200 216 +TeXDict begin 200 215 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(200)p 515 +236 2865 4 v 515 523 a Fq(The)27 b Fs(utoa\(\))i Fq(\(p.)14 +b(199\))26 b(function)i(returns)f(the)h(p)r(oin)n(ter)f(passed)g(as)g +Fm(s)p Fq(.)515 786 y Fs(22.10.5)93 b(V)-8 b(ariable)32 +b(Do)s(cumen)m(tation)515 987 y(22.10.5.1)92 b(c)m(har)p +Fh(\003)33 b Fs(__mallo)s(c_heap_end)515 1133 y Fm(malloc\(\))40 +b(\()p Fq(p.)14 b Fm(195\))26 b Fs(tunable)i Fq(\(p.)14 +b(17\).)515 1396 y Fs(22.10.5.2)92 b(c)m(har)p Fh(\003)33 +b Fs(__mallo)s(c_heap_start)515 1543 y Fm(malloc\(\))40 +b(\()p Fq(p.)14 b Fm(195\))26 b Fs(tunable)i Fq(\(p.)14 +b(17\).)515 1806 y Fs(22.10.5.3)92 b(size_t)32 b(__mallo)s(c_margin)515 +1953 y Fm(malloc\(\))40 b(\()p Fq(p.)14 b Fm(195\))26 +b Fs(tunable)i Fq(\(p.)14 b(17\).)515 2233 y Fn(22.11)112 +b Fd(<)p Fn(string.h)p Fd(>)p Fn(:)50 b(Strings)515 2433 +y Fs(22.11.1)93 b(Detailed)31 b(Description)550 2613 +y Fj(#include)37 b()515 2843 y Fq(The)27 b(string)g +(functions)h(p)r(erform)f(string)g(op)r(erations)f(on)h(NULL)h +(terminated)g(strings.)506 3055 y Fs(Note:)676 3204 y +Fq(If)37 b(the)g(strings)f(y)n(ou)f(are)h(w)n(orking)f(on)h(residen)n +(t)g(in)h(program)d(space)i(\(\035ash\),)j(y)n(ou)676 +3304 y(will)f(need)f(to)g(use)g(the)h(string)e(functions)i(describ)r +(ed)f(in)g Fo(<)p Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)676 +3404 y(Program)32 b(Space)h(Utilities)25 b Fq(\(p.)14 +b(260\).)515 3667 y Fs(De\034nes)639 3853 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(_FFS)p Fq(\(x\))515 4116 y Fs(F)-8 +b(unctions)639 4302 y Fk(\210)41 b Fq(in)n(t)28 b Fs(\033s)f +Fq(\(in)n(t)h(__v)-5 b(al\))639 4410 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(\033sl)f Fq(\(long)g(__v)-5 b(al\))639 4518 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(\033sll)e Fq(\(long)h(long)g(__v)-5 +b(al\))639 4626 y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g +Fs(memccp)m(y)h Fq(\(v)n(oid)g Fh(\003)p Fq(,)f(const)g(v)n(oid)g +Fh(\003)p Fq(,)g(in)n(t,)h(size_t\))639 4734 y Fk(\210)41 +b Fq(v)n(oid)27 b Fh(\003)g Fs(memc)m(hr)h Fq(\(const)f(v)n(oid)g +Fh(\003)p Fq(,)g(in)n(t,)h(size_t\))g(__A)-7 b(TTR_PURE__)639 +4842 y Fk(\210)41 b Fq(in)n(t)28 b Fs(memcmp)f Fq(\(const)g(v)n(oid)g +Fh(\003)p Fq(,)g(const)g(v)n(oid)g Fh(\003)p Fq(,)g(size_t\))h(__A)-7 +b(TTR_PURE__)639 4950 y Fk(\210)41 b Fq(v)n(oid)27 b +Fh(\003)g Fs(memcp)m(y)h Fq(\(v)n(oid)f Fh(\003)p Fq(,)g(const)h(v)n +(oid)e Fh(\003)p Fq(,)i(size_t\))p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 201 217 +TeXDict begin 201 216 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(201)p 515 +236 2865 4 v 639 523 a Fk(\210)41 b Fq(v)n(oid)22 b Fh(\003)f +Fs(memmem)f Fq(\(const)i(v)n(oid)f Fh(\003)p Fq(,)i(size_t,)g(const)e +(v)n(oid)h Fh(\003)p Fq(,)h(size_t\))e(__A)-7 b(TTR_-)722 +623 y(PURE__)639 731 y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g +Fs(memmo)m(v)m(e)g Fq(\(v)n(oid)g Fh(\003)p Fq(,)g(const)g(v)n(oid)g +Fh(\003)p Fq(,)h(size_t\))639 839 y Fk(\210)41 b Fq(v)n(oid)27 +b Fh(\003)g Fs(memrc)m(hr)h Fq(\(const)g(v)n(oid)f Fh(\003)p +Fq(,)g(in)n(t,)h(size_t\))f(__A)-7 b(TTR_PURE__)639 946 +y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(memset)f +Fq(\(v)n(oid)h Fh(\003)p Fq(,)h(in)n(t,)g(size_t\))639 +1054 y Fk(\210)41 b Fq(in)n(t)28 b Fs(strcasecmp)g Fq(\(const)g(c)n +(har)e Fh(\003)p Fq(,)h(const)g(c)n(har)g Fh(\003)p Fq(\))g(__A)-7 +b(TTR_PURE__)639 1162 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(strcasestr)h Fq(\(const)f(c)n(har)g Fh(\003)p +Fq(,)g(const)g(c)n(har)g Fh(\003)p Fq(\))g(__A)-7 b(TTR_PURE__)639 +1270 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strcat)i +Fq(\(c)n(har)d Fh(\003)p Fq(,)h(const)h(c)n(har)e Fh(\003)p +Fq(\))639 1378 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g +Fs(strc)m(hr)i Fq(\(const)e(c)n(har)g Fh(\003)p Fq(,)g(in)n(t\))h(__A) +-7 b(TTR_PURE__)639 1486 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strc)m(hrn)m(ul)i Fq(\(const)e(c)n(har)f +Fh(\003)p Fq(,)i(in)n(t\))g(__A)-7 b(TTR_PURE__)639 1594 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(strcmp)g Fq(\(const)f(c)n(har)g +Fh(\003)p Fq(,)g(const)g(c)n(har)f Fh(\003)p Fq(\))i(__A)-7 +b(TTR_PURE__)639 1702 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(strcp)m(y)i Fq(\(c)n(har)d Fh(\003)p Fq(,)i(const)f(c)n +(har)f Fh(\003)p Fq(\))639 1810 y Fk(\210)41 b Fq(size_t)f +Fs(strcspn)g Fq(\(const)f(c)n(har)g Fh(\003)p Fq(__s,)i(const)e(c)n +(har)g Fh(\003)p Fq(__reject\))f(__A)-7 b(TTR_-)722 1910 +y(PURE__)639 2017 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g +Fs(strdup)h Fq(\(const)f(c)n(har)g Fh(\003)p Fq(s1\))639 +2125 y Fk(\210)41 b Fq(size_t)27 b Fs(strlcat)i Fq(\(c)n(har)d +Fh(\003)p Fq(,)h(const)h(c)n(har)e Fh(\003)p Fq(,)h(size_t\))639 +2233 y Fk(\210)41 b Fq(size_t)27 b Fs(strlcp)m(y)i Fq(\(c)n(har)d +Fh(\003)p Fq(,)i(const)f(c)n(har)f Fh(\003)p Fq(,)h(size_t\))639 +2341 y Fk(\210)41 b Fq(size_t)27 b Fs(strlen)g Fq(\(const)h(c)n(har)e +Fh(\003)p Fq(\))i(__A)-7 b(TTR_PURE__)639 2449 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(strlwr)g Fq(\(c)n(har)g +Fh(\003)p Fq(\))639 2557 y Fk(\210)41 b Fq(in)n(t)20 +b Fs(strncasecmp)g Fq(\(const)f(c)n(har)f Fh(\003)p Fq(,)j(const)e(c)n +(har)f Fh(\003)p Fq(,)i(size_t\))f(__A)-7 b(TTR_PURE_-)722 +2657 y(_)639 2765 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g +Fs(strncat)i Fq(\(c)n(har)d Fh(\003)p Fq(,)h(const)h(c)n(har)e +Fh(\003)p Fq(,)h(size_t\))639 2873 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(strncmp)g Fq(\(const)f(c)n(har)g Fh(\003)p Fq(,)g(const)g(c)n(har) +g Fh(\003)p Fq(,)g(size_t\))g(__A)-7 b(TTR_PURE__)639 +2980 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strncp)m(y)i +Fq(\(c)n(har)d Fh(\003)p Fq(,)i(const)f(c)n(har)f Fh(\003)p +Fq(,)h(size_t\))639 3088 y Fk(\210)41 b Fq(size_t)27 +b Fs(strnlen)g Fq(\(const)h(c)n(har)e Fh(\003)p Fq(,)i(size_t\))f(__A) +-7 b(TTR_PURE__)639 3196 y Fk(\210)41 b Fq(c)n(har)34 +b Fh(\003)g Fs(strpbrk)h Fq(\(const)f(c)n(har)f Fh(\003)p +Fq(__s,)i(const)f(c)n(har)f Fh(\003)p Fq(__accept\))g(__A)-7 +b(TTR_-)722 3296 y(PURE__)639 3404 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strrc)m(hr)i Fq(\(const)e(c)n(har)g Fh(\003)p +Fq(,)g(in)n(t\))h(__A)-7 b(TTR_PURE__)639 3512 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(strrev)h Fq(\(c)n(har)f +Fh(\003)p Fq(\))639 3620 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strsep)g Fq(\(c)n(har)g Fh(\003\003)p +Fq(,)f(const)i(c)n(har)e Fh(\003)p Fq(\))639 3728 y Fk(\210)41 +b Fq(size_t)g Fs(strspn)g Fq(\(const)g(c)n(har)f Fh(\003)p +Fq(__s,)k(const)c(c)n(har)h Fh(\003)p Fq(__accept\))e(__A)-7 +b(TTR_-)722 3827 y(PURE__)639 3935 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strstr)h Fq(\(const)f(c)n(har)g Fh(\003)p +Fq(,)g(const)g(c)n(har)f Fh(\003)p Fq(\))i(__A)-7 b(TTR_PURE__)639 +4043 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strtok)h +Fq(\(c)n(har)e Fh(\003)p Fq(,)i(const)f(c)n(har)f Fh(\003)p +Fq(\))639 4151 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g +Fs(strtok_r)h Fq(\(c)n(har)f Fh(\003)p Fq(,)g(const)g(c)n(har)g +Fh(\003)p Fq(,)g(c)n(har)f Fh(\003\003)p Fq(\))639 4259 +y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strupr)h +Fq(\(c)n(har)f Fh(\003)p Fq(\))515 4522 y Fs(22.11.2)93 +b(De\034ne)31 b(Do)s(cumen)m(tation)515 4723 y(22.11.2.1)92 +b(#de\034ne)31 b(_FFS\(x\))515 4869 y Fq(This)c(macro)f(\034nds)i(the)g +(\034rst)f(\(least)h(signi\034can)n(t\))f(bit)h(set)g(in)f(the)h(input) +h(v)-5 b(alue.)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 202 218 +TeXDict begin 202 217 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(202)p 515 +236 2865 4 v 515 523 a Fq(This)25 b(macro)f(is)h(v)n(ery)f(similar)g +(to)h(the)h(function)f Fs(\033s\(\))g Fq(\(p.)14 b(202\))25 +b(except)g(that)g(it)h(ev)-5 b(aluates)515 623 y(its)26 +b(argumen)n(t)e(at)i(compile-time,)g(so)f(it)h(should)g(only)f(b)r(e)h +(applied)g(to)f(compile-time)h(con-)515 722 y(stan)n(t)31 +b(expressions)g(where)g(it)h(will)g(reduce)g(to)g(a)f(constan)n(t)g +(itself.)51 b(Application)32 b(of)g(this)515 822 y(macro)20 +b(to)h(expressions)f(that)i(are)e(not)i(constan)n(t)e(at)i +(compile-time)f(is)g(not)h(recommended,)515 922 y(and)27 +b(migh)n(t)h(result)f(in)h(a)f(h)n(uge)g(amoun)n(t)g(of)g(co)r(de)h +(generated.)506 1134 y Fs(Returns:)676 1283 y Fq(The)j +Fs(_FFS\(\))g Fq(\(p.)14 b(201\))30 b(macro)f(returns)h(the)h(p)r +(osition)f(of)h(the)g(\034rst)f(\(least)h(signif-)676 +1383 y(ican)n(t\))f(bit)h(set)g(in)f(the)h(w)n(ord)e(v)-5 +b(al,)31 b(or)f(0)g(if)g(no)g(bits)h(are)e(set.)46 b(The)30 +b(least)g(signi\034can)n(t)676 1482 y(bit)e(is)g(p)r(osition)f(1.)515 +1745 y Fs(22.11.3)93 b(F)-8 b(unction)32 b(Do)s(cumen)m(tation)515 +1946 y(22.11.3.1)92 b(in)m(t)32 b(\033s)f(\(in)m(t)h +Fc(val)p Fs(\))515 2093 y Fq(This)27 b(function)h(\034nds)g(the)g +(\034rst)f(\(least)h(signi\034can)n(t\))f(bit)h(set)f(in)h(the)g(input) +h(v)-5 b(alue.)506 2309 y Fs(Returns:)676 2459 y Fq(The)22 +b Fs(\033s\(\))f Fq(\(p.)14 b(202\))20 b(function)i(returns)f(the)g(p)r +(osition)g(of)h(the)f(\034rst)g(\(least)h(signi\034can)n(t\))676 +2558 y(bit)32 b(set)g(in)f(the)h(w)n(ord)f(v)-5 b(al,)32 +b(or)f(0)g(if)h(no)f(bits)h(are)e(set.)49 b(The)31 b(least)h +(signi\034can)n(t)e(bit)i(is)676 2658 y(p)r(osition)27 +b(1.)506 2870 y Fs(Note:)676 3019 y Fq(F)-7 b(or)20 b(expressions)e +(that)i(are)f(constan)n(t)h(at)g(compile)f(time,)j(consider)d(using)h +(the)h Fs(_FFS)676 3119 y Fq(\(p.)14 b(201\))27 b(macro)f(instead.)515 +3465 y Fs(22.11.3.2)92 b(in)m(t)32 b(\033sl)f(\(long)g +Fc(__val)p Fs(\))515 3612 y Fq(Same)c(as)g Fs(\033s\(\))g +Fq(\(p.)14 b(202\),)27 b(for)g(an)g(argumen)n(t)g(of)g(t)n(yp)r(e)h +(long.)515 3875 y Fs(22.11.3.3)92 b(in)m(t)32 b(\033sll)e(\(long)h +(long)g Fc(__val)p Fs(\))515 4022 y Fq(Same)c(as)g Fs(\033s\(\))g +Fq(\(p.)14 b(202\),)27 b(for)g(an)g(argumen)n(t)g(of)g(t)n(yp)r(e)h +(long)f(long.)515 4285 y Fs(22.11.3.4)92 b(v)m(oid)39 +b Fh(\003)f Fs(memccp)m(y)h(\(v)m(oid)g Fh(\003)g Fc(dest)p +Fs(,)81 b(const)39 b(v)m(oid)g Fh(\003)f Fc(sr)-5 b(c)p +Fs(,)81 b(in)m(t)39 b Fc(val)p Fs(,)515 4384 y(size_t)31 +b Fc(len)p Fs(\))515 4531 y Fq(Cop)n(y)26 b(memory)h(area.)515 +4678 y(The)e Fs(memccp)m(y\(\))h Fq(\(p.)14 b(202\))25 +b(function)h(copies)f(no)g(more)g(than)g(len)h(b)n(ytes)f(from)g +(memory)515 4778 y(area)h(src)h(to)g(memory)g(area)f(dest,)i(stopping)f +(when)g(the)h(c)n(haracter)e(v)-5 b(al)27 b(is)h(found.)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 203 219 +TeXDict begin 203 218 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(203)p 515 +236 2865 4 v 506 497 a(Returns:)676 647 y Fq(The)29 b +Fs(memccp)m(y\(\))g Fq(\(p.)14 b(202\))28 b(function)h(returns)e(a)h(p) +r(oin)n(ter)g(to)h(the)g(next)f(c)n(haracter)676 746 +y(in)e(dest)g(after)f(v)-5 b(al,)26 b(or)e(NULL)i(if)g(v)-5 +b(al)26 b(w)n(as)e(not)i(found)f(in)h(the)g(\034rst)f(len)h(c)n +(haracters)d(of)676 846 y(src.)515 1180 y Fs(22.11.3.5)92 +b(v)m(oid)32 b Fh(\003)f Fs(memc)m(hr)h(\(const)g(v)m(oid)g +Fh(\003)f Fc(sr)-5 b(c)p Fs(,)64 b(in)m(t)31 b Fc(val)p +Fs(,)63 b(size_t)32 b Fc(len)p Fs(\))515 1327 y Fq(Scan)27 +b(memory)g(for)g(a)g(c)n(haracter.)515 1474 y(The)k Fs(memc)m(hr\(\))g +Fq(\(p.)14 b(203\))30 b(function)h(scans)f(the)h(\034rst)f(len)h(b)n +(ytes)g(of)g(the)g(memory)f(area)515 1574 y(p)r(oin)n(ted)c(to)g(b)n(y) +g(src)f(for)g(the)i(c)n(haracter)d(v)-5 b(al.)36 b(The)26 +b(\034rst)g(b)n(yte)g(to)g(matc)n(h)f(v)-5 b(al)26 b(\(in)n(terpreted) +515 1673 y(as)h(an)g(unsigned)g(c)n(haracter\))f(stops)h(the)h(op)r +(eration.)506 1880 y Fs(Returns:)676 2029 y Fq(The)c +Fs(memc)m(hr\(\))h Fq(\(p.)14 b(203\))23 b(function)i(returns)f(a)g(p)r +(oin)n(ter)f(to)i(the)f(matc)n(hing)g(b)n(yte)g(or)676 +2129 y(NULL)k(if)g(the)g(c)n(haracter)e(do)r(es)h(not)g(o)r(ccur)g(in)h +(the)g(giv)n(en)f(memory)f(area.)515 2463 y Fs(22.11.3.6)92 +b(in)m(t)27 b(memcmp)e(\(const)i(v)m(oid)g Fh(\003)f +Fc(s1)p Fs(,)56 b(const)26 b(v)m(oid)h Fh(\003)f Fc(s2)p +Fs(,)56 b(size_t)26 b Fc(len)p Fs(\))515 2710 y Fq(Compare)g(memory)h +(areas.)515 2857 y(The)j Fs(memcmp\(\))f Fq(\(p.)14 b(203\))30 +b(function)g(compares)f(the)h(\034rst)g(len)h(b)n(ytes)e(of)h(the)h +(memory)515 2956 y(areas)25 b(s1)i(and)g(s2.)36 b(The)27 +b(comparision)e(is)i(p)r(erformed)g(using)g(unsigned)f(c)n(har)g(op)r +(erations.)506 3158 y Fs(Returns:)676 3308 y Fq(The)e +Fs(memcmp\(\))g Fq(\(p.)14 b(203\))23 b(function)i(returns)e(an)h(in)n +(teger)f(less)h(than,)h(equal)e(to,)i(or)676 3407 y(greater)f(than)h +(zero)f(if)i(the)g(\034rst)f(len)g(b)n(ytes)g(of)g(s1)g(is)g(found,)h +(resp)r(ectiv)n(ely)-7 b(,)25 b(to)g(b)r(e)h(less)676 +3507 y(than,)i(to)f(matc)n(h,)h(or)e(b)r(e)i(greater)e(than)i(the)g +(\034rst)f(len)h(b)n(ytes)f(of)g(s2.)506 3709 y Fs(Note:)676 +3859 y Fq(Be)h(sure)g(to)g(store)f(the)i(result)f(in)g(a)g(16)f(bit)i +(v)-5 b(ariable)27 b(since)h(y)n(ou)g(ma)n(y)f(get)h(incorrect)676 +3958 y(results)f(if)h(y)n(ou)f(use)g(an)h(unsigned)f(c)n(har)f(or)h(c)n +(har)f(due)i(to)g(truncation.)506 4160 y Fs(W)-8 b(arning:)676 +4326 y Fq(This)36 b(function)h(is)g(not)f(-min)n(t8)g(compatible,)i +(although)e(if)g(y)n(ou)g(only)g(care)f(ab)r(out)676 +4425 y(testing)28 b(for)f(equalit)n(y)-7 b(,)27 b(this)h(function)g +(should)f(b)r(e)h(safe)f(to)h(use.)515 4760 y Fs(22.11.3.7)92 +b(v)m(oid)30 b Fh(\003)f Fs(memcp)m(y)h(\(v)m(oid)g Fh(\003)g +Fc(dest)p Fs(,)61 b(const)30 b(v)m(oid)g Fh(\003)f Fc(sr)-5 +b(c)p Fs(,)60 b(size_t)30 b Fc(len)p Fs(\))515 5006 y +Fq(Cop)n(y)c(a)i(memory)e(area.)p 515 5179 V 515 5255 +a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 204 220 +TeXDict begin 204 219 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(204)p 515 +236 2865 4 v 515 523 a Fq(The)39 b Fs(memcp)m(y\(\))g +Fq(\(p.)14 b(203\))38 b(function)h(copies)g(len)g(b)n(ytes)f(from)h +(memory)f(area)f(src)h(to)515 623 y(memory)f(area)g(dest.)69 +b(The)39 b(memory)e(areas)g(ma)n(y)g(not)i(o)n(v)n(erlap.)67 +b(Use)38 b Fs(memmo)m(v)m(e\(\))515 722 y Fq(\(p.)14 +b(204\))26 b(if)j(the)e(memory)g(areas)f(do)h(o)n(v)n(erlap.)506 +939 y Fs(Returns:)676 1088 y Fq(The)h Fs(memcp)m(y\(\))g +Fq(\(p.)14 b(203\))26 b(function)i(returns)f(a)g(p)r(oin)n(ter)h(to)f +(dest.)515 1434 y Fs(22.11.3.8)92 b(v)m(oid)28 b Fh(\003)g +Fs(memmem)e(\(const)i(v)m(oid)g Fh(\003)f Fc(s1)p Fs(,)58 +b(size_t)28 b Fc(len1)p Fs(,)57 b(const)28 b(v)m(oid)515 +1534 y Fh(\003)j Fc(s2)p Fs(,)64 b(size_t)31 b Fc(len2)p +Fs(\))515 1681 y Fq(The)26 b Fs(memmem\(\))f Fq(\(p.)14 +b(204\))26 b(function)h(\034nds)g(the)g(start)f(of)g(the)i(\034rst)e(o) +r(ccurrence)f(of)i(the)515 1781 y(substring)g Fm(s2)f +Fq(of)i(length)g Fm(len2)d Fq(in)j(the)g(memory)f(area)f +Fm(s1)h Fq(of)g(length)h Fm(len1)p Fq(.)506 1993 y Fs(Returns:)676 +2142 y Fq(The)34 b Fs(memmem\(\))f Fq(\(p.)14 b(204\))33 +b(function)i(returns)e(a)h(p)r(oin)n(ter)f(to)i(the)f(b)r(eginning)g +(of)676 2242 y(the)h(substring,)h(or)d Fm(NULL)g Fq(if)i(the)g +(substring)f(is)g(not)g(found.)58 b(If)35 b Fm(len2)e +Fq(is)i(zero,)g(the)676 2341 y(function)28 b(returns)f +Fm(s1)p Fq(.)515 2687 y Fs(22.11.3.9)92 b(v)m(oid)39 +b Fh(\003)g Fs(memmo)m(v)m(e)f(\(v)m(oid)h Fh(\003)g +Fc(dest)p Fs(,)82 b(const)39 b(v)m(oid)h Fh(\003)e Fc(sr)-5 +b(c)p Fs(,)82 b(size_t)515 2787 y Fc(len)p Fs(\))515 +2934 y Fq(Cop)n(y)26 b(memory)h(area.)515 3081 y(The)32 +b Fs(memmo)m(v)m(e\(\))g Fq(\(p.)14 b(204\))31 b(function)i(copies)e +(len)i(b)n(ytes)f(from)g(memory)f(area)g(src)g(to)515 +3180 y(memory)26 b(area)h(dest.)36 b(The)28 b(memory)f(areas)f(ma)n(y)g +(o)n(v)n(erlap.)506 3392 y Fs(Returns:)676 3542 y Fq(The)i +Fs(memmo)m(v)m(e\(\))f Fq(\(p.)14 b(204\))26 b(function)i(returns)f(a)g +(p)r(oin)n(ter)h(to)f(dest.)515 3888 y Fs(22.11.3.10)92 +b(v)m(oid)32 b Fh(\003)f Fs(memrc)m(hr)h(\(const)g(v)m(oid)g +Fh(\003)f Fc(sr)-5 b(c)p Fs(,)64 b(in)m(t)31 b Fc(val)p +Fs(,)63 b(size_t)32 b Fc(len)p Fs(\))515 4035 y Fq(The)d +Fs(memrc)m(hr\(\))i Fq(\(p.)14 b(204\))28 b(function)j(is)e(lik)n(e)g +(the)h Fs(memc)m(hr\(\))g Fq(\(p.)14 b(203\))29 b(function,)i(ex-)515 +4134 y(cept)24 b(that)f(it)h(searc)n(hes)e(bac)n(kw)n(ards)f(from)i +(the)h(end)g(of)f(the)h Fm(len)f Fq(b)n(ytes)g(p)r(oin)n(ted)h(to)f(b)n +(y)g Fm(src)515 4234 y Fq(instead)k(of)h(forw)n(ards)d(from)i(the)h +(fron)n(t.)37 b(\(Glib)r(c,)28 b(GNU)h(extension.\))506 +4450 y Fs(Returns:)676 4600 y Fq(The)h Fs(memrc)m(hr\(\))h +Fq(\(p.)14 b(204\))29 b(function)i(returns)f(a)f(p)r(oin)n(ter)h(to)g +(the)h(matc)n(hing)e(b)n(yte)676 4700 y(or)e Fm(NULL)f +Fq(if)i(the)g(c)n(haracter)d(do)r(es)i(not)h(o)r(ccur)f(in)h(the)g(giv) +n(en)e(memory)h(area.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 205 221 +TeXDict begin 205 220 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(205)p 515 +236 2865 4 v 515 523 a(22.11.3.11)92 b(v)m(oid)32 b Fh(\003)f +Fs(memset)f(\(v)m(oid)i Fh(\003)f Fc(dest)p Fs(,)64 b(in)m(t)32 +b Fc(val)p Fs(,)63 b(size_t)32 b Fc(len)p Fs(\))515 670 +y Fq(Fill)c(memory)e(with)j(a)e(constan)n(t)f(b)n(yte.)515 +817 y(The)37 b Fs(memset\(\))f Fq(\(p.)14 b(205\))37 +b(function)g(\034lls)h(the)g(\034rst)f(len)g(b)n(ytes)g(of)g(the)h +(memory)f(area)515 916 y(p)r(oin)n(ted)27 b(to)h(b)n(y)f(dest)h(with)g +(the)g(constan)n(t)f(b)n(yte)g(v)-5 b(al.)506 1128 y +Fs(Returns:)676 1278 y Fq(The)21 b Fs(memset\(\))f Fq(\(p.)14 +b(205\))20 b(function)h(returns)f(a)g(p)r(oin)n(ter)h(to)f(the)i +(memory)e(area)f(dest.)515 1624 y Fs(22.11.3.12)92 b(in)m(t)32 +b(strcasecmp)g(\(const)g(c)m(har)h Fh(\003)e Fc(s1)p +Fs(,)64 b(const)32 b(c)m(har)h Fh(\003)e Fc(s2)p Fs(\))515 +1771 y Fq(Compare)26 b(t)n(w)n(o)h(strings)f(ignoring)g(case.)515 +1918 y(The)33 b Fs(strcasecmp\(\))i Fq(\(p.)14 b(205\))32 +b(function)j(compares)d(the)i(t)n(w)n(o)e(strings)h Fm(s1)g +Fq(and)g Fm(s2)p Fq(,)i(ig-)515 2017 y(noring)26 b(the)i(case)f(of)g +(the)h(c)n(haracters.)506 2229 y Fs(Returns:)676 2379 +y Fq(The)e Fs(strcasecmp\(\))h Fq(\(p.)14 b(205\))25 +b(function)h(returns)f(an)h(in)n(teger)f(less)g(than,)i(equal)e(to,)676 +2478 y(or)c(greater)f(than)i(zero)e(if)j Fm(s1)e Fq(is)g(found,)j(resp) +r(ectiv)n(ely)-7 b(,)22 b(to)f(b)r(e)h(less)g(than,)h(to)e(matc)n(h,)i +(or)676 2578 y(b)r(e)28 b(greater)e(than)i Fm(s2)p Fq(.)38 +b(A)28 b(consequence)f(of)g(the)i(ordering)d(used)i(b)n(y)g +Fs(strcasecmp\(\))676 2678 y Fq(\(p.)14 b(205\))30 b(is)h(that)g(if)g +Fm(s1)f Fq(is)h(an)g(initial)g(substring)f(of)g Fm(s2)p +Fq(,)h(then)h Fm(s1)e Fq(is)g(considered)g(to)676 2777 +y(b)r(e)e("less)f(than")g Fm(s2)p Fq(.)515 3123 y Fs(22.11.3.13)92 +b(c)m(har)33 b Fh(\003)e Fs(strcasestr)i(\(const)f(c)m(har)h +Fh(\003)e Fc(s1)p Fs(,)64 b(const)32 b(c)m(har)h Fh(\003)e +Fc(s2)p Fs(\))515 3270 y Fq(The)k Fs(strcasestr\(\))g +Fq(\(p.)14 b(205\))34 b(function)h(\034nds)g(the)g(\034rst)g(o)r +(ccurrence)e(of)i(the)g(substring)515 3370 y Fm(s2)27 +b Fq(in)g(the)h(string)f Fm(s1)p Fq(.)37 b(This)27 b(is)h(lik)n(e)f +Fs(strstr\(\))h Fq(\(p.)14 b(212\),)27 b(except)g(that)h(it)g(ignores)e +(case)h(of)515 3469 y(alphab)r(etic)g(sym)n(b)r(ols)g(in)h(searc)n +(hing)e(for)h(the)g(substring.)37 b(\(Glib)r(c,)28 b(GNU)g +(extension.\))506 3686 y Fs(Returns:)676 3835 y Fq(The)35 +b Fs(strcasestr\(\))h Fq(\(p.)14 b(205\))34 b(function)h(returns)f(a)h +(p)r(oin)n(ter)f(to)h(the)g(b)r(eginning)g(of)676 3935 +y(the)26 b(substring,)f(or)g Fm(NULL)f Fq(if)i(the)f(substring)g(is)h +(not)f(found.)36 b(If)26 b Fm(s2)f Fq(p)r(oin)n(ts)g(to)h(a)f(string) +676 4035 y(of)j(zero)e(length,)i(the)g(function)g(returns)f +Fm(s1)p Fq(.)515 4381 y Fs(22.11.3.14)92 b(c)m(har)33 +b Fh(\003)e Fs(strcat)i(\(c)m(har)h Fh(\003)d Fc(dest)p +Fs(,)64 b(const)32 b(c)m(har)h Fh(\003)e Fc(sr)-5 b(c)p +Fs(\))515 4528 y Fq(Concatenate)26 b(t)n(w)n(o)h(strings.)515 +4674 y(The)32 b Fs(strcat\(\))i Fq(\(p.)14 b(205\))32 +b(function)h(app)r(ends)f(the)h(src)f(string)g(to)g(the)h(dest)f +(string)g(o)n(v)n(er-)515 4774 y(writing)d(the)h(')p +Fh(n)p Fq(0')e(c)n(haracter)f(at)j(the)g(end)f(of)h(dest,)g(and)f(then) +h(adds)f(a)g(terminating)g(')p Fh(n)p Fq(0')515 4874 +y(c)n(haracter.)39 b(The)29 b(strings)f(ma)n(y)g(not)h(o)n(v)n(erlap,)e +(and)i(the)g(dest)h(string)e(m)n(ust)h(ha)n(v)n(e)f(enough)515 +4973 y(space)f(for)g(the)h(result.)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 206 222 +TeXDict begin 206 221 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(206)p 515 +236 2865 4 v 506 497 a(Returns:)676 647 y Fq(The)21 b +Fs(strcat\(\))i Fq(\(p.)14 b(205\))20 b(function)i(returns)f(a)f(p)r +(oin)n(ter)h(to)g(the)h(resulting)e(string)h(dest.)515 +993 y Fs(22.11.3.15)92 b(c)m(har)33 b Fh(\003)e Fs(strc)m(hr)i(\(const) +f(c)m(har)i Fh(\003)d Fc(sr)-5 b(c)p Fs(,)64 b(in)m(t)31 +b Fc(val)p Fs(\))515 1140 y Fq(Lo)r(cate)c(c)n(haracter)e(in)j(string.) +515 1287 y(The)j Fs(strc)m(hr\(\))h Fq(\(p.)14 b(206\))30 +b(function)i(returns)e(a)g(p)r(oin)n(ter)h(to)f(the)i(\034rst)e(o)r +(ccurrence)g(of)h(the)515 1386 y(c)n(haracter)25 b Fm(val)i +Fq(in)g(the)h(string)f Fm(src)p Fq(.)515 1533 y(Here)40 +b("c)n(haracter")d(means)j("b)n(yte")f(-)h(these)g(functions)h(do)f +(not)g(w)n(ork)f(with)i(wide)f(or)515 1633 y(m)n(ulti-b)n(yte)27 +b(c)n(haracters.)506 1845 y Fs(Returns:)676 1994 y Fq(The)h +Fs(strc)m(hr\(\))i Fq(\(p.)14 b(206\))27 b(function)h(returns)f(a)h(p)r +(oin)n(ter)f(to)h(the)h(matc)n(hed)e(c)n(haracter)676 +2094 y(or)g Fm(NULL)f Fq(if)i(the)g(c)n(haracter)d(is)j(not)f(found.) +515 2440 y Fs(22.11.3.16)92 b(c)m(har)33 b Fh(\003)e +Fs(strc)m(hrn)m(ul)i(\(const)f(c)m(har)i Fh(\003)d Fc(s)p +Fs(,)64 b(in)m(t)31 b Fc(c)p Fs(\))515 2587 y Fq(The)i +Fs(strc)m(hrn)m(ul\(\))h Fq(\(p.)14 b(206\))32 b(function)h(is)g(lik)n +(e)g Fs(strc)m(hr\(\))h Fq(\(p.)14 b(206\))32 b(except)h(that)g(if)h +Fm(c)e Fq(is)515 2686 y(not)26 b(found)g(in)h Fm(s)p +Fq(,)f(then)g(it)h(returns)e(a)h(p)r(oin)n(ter)g(to)g(the)g(n)n(ull)g +(b)n(yte)g(at)g(the)h(end)f(of)g Fm(s)p Fq(,)g(rather)515 +2786 y(than)h Fm(NULL)p Fq(.)f(\(Glib)r(c,)j(GNU)f(extension.\))506 +3002 y Fs(Returns:)676 3152 y Fq(The)i Fs(strc)m(hrn)m(ul\(\))i +Fq(\(p.)14 b(206\))29 b(function)i(returns)f(a)f(p)r(oin)n(ter)h(to)g +(the)h(matc)n(hed)f(c)n(har-)676 3252 y(acter,)25 b(or)g(a)g(p)r(oin)n +(ter)g(to)h(the)g(n)n(ull)g(b)n(yte)f(at)h(the)g(end)f(of)h +Fm(s)f Fq(\(i.e.,)i Fm(s+strlen)p Fq(\(s\)\))c(if)j(the)676 +3351 y(c)n(haracter)g(is)h(not)h(found.)515 3697 y Fs(22.11.3.17)92 +b(in)m(t)32 b(strcmp)g(\(const)f(c)m(har)j Fh(\003)d +Fc(s1)p Fs(,)64 b(const)31 b(c)m(har)j Fh(\003)d Fc(s2)p +Fs(\))515 3844 y Fq(Compare)26 b(t)n(w)n(o)h(strings.)515 +3991 y(The)g Fs(strcmp\(\))h Fq(\(p.)14 b(206\))27 b(function)h +(compares)e(the)i(t)n(w)n(o)f(strings)f Fm(s1)h Fq(and)h +Fm(s2)p Fq(.)506 4208 y Fs(Returns:)676 4357 y Fq(The)k +Fs(strcmp\(\))h Fq(\(p.)14 b(206\))31 b(function)i(returns)e(an)h(in)n +(teger)f(less)h(than,)h(equal)f(to,)h(or)676 4457 y(greater)i(than)h +(zero)f(if)i Fm(s1)f Fq(is)g(found,)j(resp)r(ectiv)n(ely)-7 +b(,)38 b(to)e(b)r(e)h(less)e(than,)k(to)d(matc)n(h,)676 +4556 y(or)c(b)r(e)h(greater)e(than)i Fm(s2)p Fq(.)52 +b(A)33 b(consequence)e(of)i(the)g(ordering)e(used)i(b)n(y)h +Fs(strcmp\(\))676 4656 y Fq(\(p.)14 b(206\))30 b(is)h(that)g(if)g +Fm(s1)f Fq(is)h(an)g(initial)g(substring)f(of)g Fm(s2)p +Fq(,)h(then)h Fm(s1)e Fq(is)g(considered)g(to)676 4756 +y(b)r(e)e("less)f(than")g Fm(s2)p Fq(.)p 515 5179 V 515 +5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 207 223 +TeXDict begin 207 222 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(207)p 515 +236 2865 4 v 515 523 a(22.11.3.18)92 b(c)m(har)33 b Fh(\003)e +Fs(strcp)m(y)j(\(c)m(har)f Fh(\003)e Fc(dest)p Fs(,)64 +b(const)32 b(c)m(har)h Fh(\003)f Fc(sr)-5 b(c)p Fs(\))515 +670 y Fq(Cop)n(y)26 b(a)i(string.)515 817 y(The)34 b +Fs(strcp)m(y\(\))i Fq(\(p.)14 b(207\))34 b(function)h(copies)e(the)i +(string)f(p)r(oin)n(ted)h(to)f(b)n(y)g(src)g(\(including)515 +916 y(the)23 b(terminating)f(')p Fh(n)p Fq(0')g(c)n(haracter\))f(to)i +(the)g(arra)n(y)d(p)r(oin)n(ted)j(to)g(b)n(y)f(dest.)35 +b(The)23 b(strings)f(ma)n(y)515 1016 y(not)i(o)n(v)n(erlap,)g(and)g +(the)h(destination)g(string)f(dest)h(m)n(ust)f(b)r(e)h(large)f(enough)g +(to)g(receiv)n(e)g(the)515 1116 y(cop)n(y)-7 b(.)506 +1293 y Fs(Returns:)676 1443 y Fq(The)30 b Fs(strcp)m(y\(\))i +Fq(\(p.)14 b(207\))29 b(function)h(returns)g(a)f(p)r(oin)n(ter)h(to)g +(the)g(destination)g(string)676 1542 y(dest.)506 1704 +y Fs(Note:)676 1853 y Fq(If)35 b(the)g(destination)g(string)e(of)i(a)f +Fs(strcp)m(y\(\))i Fq(\(p.)14 b(207\))34 b(is)h(not)f(large)g(enough)g +(\(that)676 1953 y(is,)f(if)g(the)g(programmer)c(w)n(as)j(stupid/lazy) +-7 b(,)32 b(and)g(failed)h(to)f(c)n(hec)n(k)f(the)i(size)e(b)r(efore) +676 2053 y(cop)n(ying\))f(then)g(an)n(ything)g(migh)n(t)g(happ)r(en.)46 +b(Ov)n(er\035o)n(wing)28 b(\034xed)i(length)h(strings)e(is)676 +2152 y(a)e(fa)n(v)n(ourite)f(crac)n(k)n(er)f(tec)n(hnique.)515 +2458 y Fs(22.11.3.19)92 b(size_t)31 b(strcspn)h(\(const)g(c)m(har)i +Fh(\003)d Fc(s)p Fs(,)63 b(const)32 b(c)m(har)i Fh(\003)d +Fc(r)-5 b(eje)g(ct)p Fs(\))515 2605 y Fq(The)30 b Fs(strcspn\(\))g +Fq(\(p.)14 b(207\))29 b(function)i(calculates)e(the)h(length)g(of)g +(the)h(initial)f(segmen)n(t)f(of)515 2705 y Fm(s)e Fq(whic)n(h)g +(consists)g(en)n(tirely)g(of)h(c)n(haracters)d(not)i(in)h +Fm(reject)p Fq(.)506 2885 y Fs(Returns:)676 3034 y Fq(The)35 +b Fs(strcspn\(\))g Fq(\(p.)14 b(207\))34 b(function)h(returns)f(the)h +(n)n(um)n(b)r(er)g(of)f(c)n(haracters)f(in)i(the)676 +3134 y(initial)d(segmen)n(t)g(of)f Fm(s)h Fq(whic)n(h)g(are)f(not)h(in) +g(the)g(string)f Fm(reject)p Fq(.)48 b(The)32 b(terminating)676 +3233 y(zero)27 b(is)g(not)h(considered)e(as)h(a)g(part)g(of)h(string.) +515 3539 y Fs(22.11.3.20)92 b(c)m(har)33 b Fh(\003)e +Fs(strdup)h(\(const)g(c)m(har)i Fh(\003)d Fc(s1)p Fs(\))515 +3686 y Fq(Duplicate)d(a)f(string.)515 3833 y(The)j Fs(strdup\(\))g +Fq(\(p.)14 b(207\))29 b(function)h(allo)r(cates)f(memory)g(and)h +(copies)f(in)n(to)g(it)i(the)f(string)515 3933 y(addressed)c(b)n(y)h +(s1,)g(including)h(the)g(terminating)f(n)n(ull)h(c)n(haracter.)506 +4110 y Fs(W)-8 b(arning:)676 4276 y Fq(The)20 b Fs(strdup\(\))g +Fq(\(p.)14 b(207\))19 b(function)h(calls)f Fs(mallo)s(c\(\))f +Fq(\(p.)c(195\))19 b(to)g(allo)r(cate)g(the)h(mem-)676 +4376 y(ory)g(for)g(the)h(duplicated)g(string!)34 b(The)21 +b(user)f(is)h(resp)r(onsible)e(for)i(freeing)f(the)h(memory)676 +4475 y(b)n(y)27 b(calling)h Fs(free\(\))g Fq(\(p.)14 +b(193\).)506 4658 y Fs(Returns:)676 4807 y Fq(The)37 +b Fs(strdup\(\))h Fq(\(p.)14 b(207\))36 b(function)i(returns)e(a)h(p)r +(oin)n(ter)g(to)g(the)g(resulting)g(string)676 4907 y(dest.)57 +b(If)41 b Fs(mallo)s(c\(\))33 b Fq(\(p.)14 b(195\))34 +b(cannot)f(allo)r(cate)h(enough)f(storage)f(for)i(the)h(string,)676 +5006 y Fs(strdup\(\))28 b Fq(\(p.)14 b(207\))27 b(will)h(return)f +(NULL.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 208 224 +TeXDict begin 208 223 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(208)p 515 +236 2865 4 v 506 497 a(W)-8 b(arning:)676 663 y Fq(Be)23 +b(sure)f(to)h(c)n(hec)n(k)f(the)h(return)f(v)-5 b(alue)23 +b(of)g(the)g Fs(strdup\(\))h Fq(\(p.)14 b(207\))22 b(function)h(to)g +(mak)n(e)676 763 y(sure)k(that)h(the)g(function)g(has)f(succeeded)g(in) +h(allo)r(cating)e(the)i(memory!)515 1109 y Fs(22.11.3.21)92 +b(size_t)28 b(strlcat)h(\(c)m(har)h Fh(\003)e Fc(dst)p +Fs(,)58 b(const)28 b(c)m(har)i Fh(\003)e Fc(sr)-5 b(c)p +Fs(,)58 b(size_t)28 b Fc(siz)p Fs(\))515 1255 y Fq(Concatenate)e(t)n(w) +n(o)h(strings.)515 1402 y(App)r(ends)c(src)f(to)g(string)g(dst)g(of)h +(size)f(siz)g(\(unlik)n(e)g Fs(strncat\(\))i Fq(\(p.)14 +b(209\),)23 b(siz)f(is)h(the)f(full)h(size)515 1502 y(of)30 +b(dst,)h(not)f(space)g(left\).)46 b(A)n(t)30 b(most)g(siz-1)f(c)n +(haracters)f(will)j(b)r(e)f(copied.)45 b(Alw)n(a)n(ys)29 +b(NULL)515 1602 y(terminates)e(\(unless)g(siz)h Fo(<)p +Fq(=)f(strlen\(dst\)\).)506 1818 y Fs(Returns:)676 1968 +y Fq(The)d Fs(strlcat\(\))h Fq(\(p.)14 b(208\))22 b(function)j(returns) +e(strlen\(src\))g(+)g(MIN\(siz,)i(strlen\(initial)676 +2067 y(dst\)\).)38 b(If)28 b(retv)-5 b(al)27 b Fo(>)p +Fq(=)g(siz,)g(truncation)g(o)r(ccurred.)515 2413 y Fs(22.11.3.22)92 +b(size_t)33 b(strlcp)m(y)i(\(c)m(har)h Fh(\003)d Fc(dst)p +Fs(,)69 b(const)34 b(c)m(har)h Fh(\003)f Fc(sr)-5 b(c)p +Fs(,)69 b(size_t)33 b Fc(siz)p Fs(\))515 2660 y Fq(Cop)n(y)26 +b(a)i(string.)515 2807 y(Cop)n(y)20 b(src)g(to)h(string)f(dst)i(of)f +(size)f(siz.)35 b(A)n(t)21 b(most)g(siz-1)f(c)n(haracters)e(will)k(b)r +(e)f(copied.)34 b(Alw)n(a)n(ys)515 2906 y(NULL)28 b(terminates)f +(\(unless)g(siz)h(==)e(0\).)506 3123 y Fs(Returns:)676 +3272 y Fq(The)i Fs(strlcp)m(y\(\))h Fq(\(p.)14 b(208\))27 +b(function)h(returns)g(strlen\(src\).)37 b(If)28 b(retv)-5 +b(al)27 b Fo(>)p Fq(=)h(siz,)f(trun-)676 3372 y(cation)g(o)r(ccurred.) +515 3718 y Fs(22.11.3.23)92 b(size_t)31 b(strlen)h(\(const)f(c)m(har)j +Fh(\003)d Fc(sr)-5 b(c)p Fs(\))515 3865 y Fq(Calculate)27 +b(the)h(length)f(of)h(a)f(string.)515 4012 y(The)34 b +Fs(strlen\(\))g Fq(\(p.)14 b(208\))34 b(function)h(calculates)e(the)i +(length)f(of)h(the)g(string)e(src,)j(not)e(in-)515 4111 +y(cluding)27 b(the)h(terminating)f(')p Fh(n)p Fq(0')g(c)n(haracter.)506 +4328 y Fs(Returns:)676 4477 y Fq(The)h Fs(strlen\(\))f +Fq(\(p.)14 b(208\))27 b(function)h(returns)f(the)h(n)n(um)n(b)r(er)f +(of)g(c)n(haracters)f(in)h(src.)515 4823 y Fs(22.11.3.24)92 +b(c)m(har)33 b Fh(\003)e Fs(strlwr)h(\(c)m(har)i Fh(\003)d +Fc(s)p Fs(\))515 4970 y Fq(Con)n(v)n(ert)26 b(a)h(string)g(to)g(lo)n(w) +n(er)f(case.)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 209 225 +TeXDict begin 209 224 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(209)p 515 +236 2865 4 v 515 523 a Fq(The)25 b Fs(strlwr\(\))g Fq(\(p.)14 +b(208\))24 b(function)i(will)f(con)n(v)n(ert)f(a)g(string)h(to)f(lo)n +(w)n(er)g(case.)35 b(Only)25 b(the)g(up-)515 623 y(p)r(er)d(case)f +(alphab)r(etic)h(c)n(haracters)d([A)k(..)35 b(Z])22 b(are)f(con)n(v)n +(erted.)33 b(Non-alphab)r(etic)21 b(c)n(haracters)515 +722 y(will)28 b(not)f(b)r(e)h(c)n(hanged.)506 934 y Fs(Returns:)676 +1084 y Fq(The)g Fs(strlwr\(\))f Fq(\(p.)14 b(208\))27 +b(function)h(returns)f(a)g(p)r(oin)n(ter)g(to)h(the)g(con)n(v)n(erted)e +(string.)515 1430 y Fs(22.11.3.25)92 b(in)m(t)26 b(strncasecmp)h +(\(const)g(c)m(har)h Fh(\003)e Fc(s1)p Fs(,)55 b(const)26 +b(c)m(har)i Fh(\003)e Fc(s2)p Fs(,)55 b(size_t)515 1529 +y Fc(len)p Fs(\))515 1676 y Fq(Compare)26 b(t)n(w)n(o)h(strings)f +(ignoring)g(case.)515 1823 y(The)i Fs(strncasecmp\(\))h +Fq(\(p.)14 b(209\))27 b(function)h(is)g(similar)g(to)g +Fs(strcasecmp\(\))g Fq(\(p.)14 b(205\),)28 b(ex-)515 +1923 y(cept)g(it)g(only)f(compares)f(the)i(\034rst)f +Fm(len)f Fq(c)n(haracters)g(of)h Fm(s1)p Fq(.)506 2135 +y Fs(Returns:)676 2284 y Fq(The)34 b Fs(strncasecmp\(\))g +Fq(\(p.)14 b(209\))33 b(function)h(returns)f(an)g(in)n(teger)f(less)h +(than,)j(equal)676 2384 y(to,)44 b(or)39 b(greater)f(than)j(zero)e(if)i +Fm(s1)e Fq(\(or)h(the)h(\034rst)f Fm(len)f Fq(b)n(ytes)h(thereof)6 +b(\))41 b(is)f(found,)676 2483 y(resp)r(ectiv)n(ely)-7 +b(,)20 b(to)g(b)r(e)g(less)f(than,)i(to)f(matc)n(h,)h(or)d(b)r(e)i +(greater)e(than)i Fm(s2)p Fq(.)33 b(A)20 b(consequence)676 +2583 y(of)32 b(the)g(ordering)e(used)h(b)n(y)i Fs(strncasecmp\(\))f +Fq(\(p.)14 b(209\))31 b(is)g(that)h(if)g Fm(s1)f Fq(is)h(an)f(initial) +676 2683 y(substring)c(of)g Fm(s2)p Fq(,)g(then)h Fm(s1)f +Fq(is)h(considered)e(to)i(b)r(e)g("less)e(than")h Fm(s2)p +Fq(.)515 3029 y Fs(22.11.3.26)92 b(c)m(har)31 b Fh(\003)e +Fs(strncat)h(\(c)m(har)i Fh(\003)d Fc(dest)p Fs(,)60 +b(const)29 b(c)m(har)i Fh(\003)e Fc(sr)-5 b(c)p Fs(,)60 +b(size_t)29 b Fc(len)p Fs(\))515 3275 y Fq(Concatenate)d(t)n(w)n(o)h +(strings.)515 3422 y(The)c Fs(strncat\(\))i Fq(\(p.)14 +b(209\))23 b(function)h(is)g(similar)e(to)i Fs(strcat\(\))h +Fq(\(p.)14 b(205\),)23 b(except)h(that)g(only)515 3522 +y(the)k(\034rst)f(n)h(c)n(haracters)d(of)i(src)g(are)g(app)r(ended)h +(to)f(dest.)506 3734 y Fs(Returns:)676 3883 y Fq(The)35 +b Fs(strncat\(\))i Fq(\(p.)14 b(209\))34 b(function)i(returns)e(a)h(p)r +(oin)n(ter)g(to)g(the)g(resulting)g(string)676 3983 y(dest.)515 +4329 y Fs(22.11.3.27)92 b(in)m(t)40 b(strncmp)h(\(const)f(c)m(har)i +Fh(\003)e Fc(s1)p Fs(,)84 b(const)41 b(c)m(har)h Fh(\003)d +Fc(s2)p Fs(,)85 b(size_t)515 4428 y Fc(len)p Fs(\))515 +4575 y Fq(Compare)26 b(t)n(w)n(o)h(strings.)515 4722 +y(The)c Fs(strncmp\(\))h Fq(\(p.)14 b(209\))23 b(function)h(is)f +(similar)g(to)g Fs(strcmp\(\))h Fq(\(p.)14 b(206\),)23 +b(except)h(it)g(only)515 4822 y(compares)i(the)i(\034rst)f(\(at)h +(most\))f(n)h(c)n(haracters)d(of)j(s1)f(and)g(s2.)p 515 +5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 210 226 +TeXDict begin 210 225 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(210)p 515 +236 2865 4 v 506 497 a(Returns:)676 647 y Fq(The)28 b +Fs(strncmp\(\))g Fq(\(p.)14 b(209\))26 b(function)i(returns)f(an)g(in)n +(teger)g(less)g(than,)h(equal)f(to,)g(or)676 746 y(greater)i(than)h +(zero)f(if)i(s1)f(\(or)f(the)i(\034rst)f(n)h(b)n(ytes)f(thereof)6 +b(\))30 b(is)h(found,)g(resp)r(ectiv)n(ely)-7 b(,)676 +846 y(to)28 b(b)r(e)g(less)f(than,)g(to)h(matc)n(h,)f(or)g(b)r(e)h +(greater)e(than)h(s2.)515 1170 y Fs(22.11.3.28)92 b(c)m(har)29 +b Fh(\003)f Fs(strncp)m(y)h(\(c)m(har)h Fh(\003)e Fc(dest)p +Fs(,)58 b(const)28 b(c)m(har)h Fh(\003)f Fc(sr)-5 b(c)p +Fs(,)57 b(size_t)28 b Fc(len)p Fs(\))515 1417 y Fq(Cop)n(y)e(a)i +(string.)515 1564 y(The)23 b Fs(strncp)m(y\(\))j Fq(\(p.)14 +b(210\))22 b(function)i(is)g(similar)f(to)g Fs(strcp)m(y\(\))i +Fq(\(p.)14 b(207\),)24 b(except)f(that)h(not)515 1663 +y(more)30 b(than)h(n)h(b)n(ytes)f(of)g(src)g(are)f(copied.)47 +b(Th)n(us,)32 b(if)g(there)f(is)g(no)g(n)n(ull)g(b)n(yte)h(among)e(the) +515 1763 y(\034rst)d(n)h(b)n(ytes)f(of)h(src,)e(the)i(result)g(will)f +(not)h(b)r(e)g(n)n(ull-terminated.)515 1910 y(In)g(the)g(case)e(where)i +(the)g(length)f(of)h(src)f(is)g(less)h(than)f(that)h(of)g(n,)g(the)g +(remainder)e(of)i(dest)515 2009 y(will)g(b)r(e)f(padded)h(with)g(n)n +(ulls.)506 2203 y Fs(Returns:)676 2352 y Fq(The)d Fs(strncp)m(y\(\))h +Fq(\(p.)14 b(210\))24 b(function)h(returns)f(a)g(p)r(oin)n(ter)h(to)f +(the)h(destination)g(string)676 2452 y(dest.)515 2776 +y Fs(22.11.3.29)92 b(size_t)31 b(strnlen)h(\(const)f(c)m(har)j +Fh(\003)d Fc(sr)-5 b(c)p Fs(,)64 b(size_t)31 b Fc(len)p +Fs(\))515 2923 y Fq(Determine)d(the)g(length)f(of)h(a)f(\034xed-size)g +(string.)515 3070 y(The)20 b(strnlen)g(function)h(returns)e(the)i(n)n +(um)n(b)r(er)f(of)g(c)n(haracters)e(in)j(the)f(string)g(p)r(oin)n(ted)g +(to)g(b)n(y)515 3169 y(src,)k(not)g(including)g(the)g(terminating)g(')p +Fh(n)p Fq(0')f(c)n(haracter,)f(but)j(at)f(most)f(len.)36 +b(In)24 b(doing)g(this,)515 3269 y(strnlen)j(lo)r(oks)g(only)g(at)g +(the)h(\034rst)g(len)f(c)n(haracters)e(at)j(src)f(and)g(nev)n(er)g(b)r +(ey)n(ond)g(src+len.)506 3462 y Fs(Returns:)676 3612 +y Fq(The)35 b(strnlen)f(function)h(returns)f(strlen\(src\),)i(if)f +(that)g(is)g(less)f(than)g(len,)j(or)d(len)h(if)676 3711 +y(there)27 b(is)h(no)f(')p Fh(n)p Fq(0')g(c)n(haracter)e(among)i(the)h +(\034rst)f(len)h(c)n(haracters)d(p)r(oin)n(ted)j(to)f(b)n(y)h(src.)515 +4035 y Fs(22.11.3.30)92 b(c)m(har)33 b Fh(\003)e Fs(strpbrk)i(\(const)f +(c)m(har)h Fh(\003)f Fc(s)p Fs(,)63 b(const)32 b(c)m(har)h +Fh(\003)f Fc(ac)-5 b(c)g(ept)p Fs(\))515 4182 y Fq(The)31 +b Fs(strpbrk\(\))h Fq(\(p.)14 b(210\))30 b(function)i(lo)r(cates)e(the) +h(\034rst)g(o)r(ccurrence)f(in)h(the)g(string)f Fm(s)h +Fq(of)515 4282 y(an)n(y)c(of)g(the)h(c)n(haracters)d(in)j(the)g(string) +f Fm(accept)p Fq(.)506 4477 y Fs(Returns:)676 4627 y +Fq(The)22 b Fs(strpbrk\(\))g Fq(\(p.)14 b(210\))21 b(function)h +(returns)e(a)i(p)r(oin)n(ter)f(to)g(the)h(c)n(haracter)d(in)j +Fm(s)f Fq(that)676 4726 y(matc)n(hes)34 b(one)f(of)i(the)f(c)n +(haracters)e(in)i Fm(accept)p Fq(,)g(or)f Fm(NULL)g Fq(if)h(no)g(suc)n +(h)g(c)n(haracter)e(is)676 4826 y(found.)37 b(The)26 +b(terminating)g(zero)g(is)g(not)h(considered)e(as)h(a)g(part)g(of)g +(string:)36 b(if)27 b(one)f(or)676 4926 y(b)r(oth)i(args)e(are)h(empt)n +(y)-7 b(,)27 b(the)h(result)g(will)f Fm(NULL)p Fq(.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 211 227 +TeXDict begin 211 226 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(211)p 515 +236 2865 4 v 515 523 a(22.11.3.31)92 b(c)m(har)33 b Fh(\003)e +Fs(strrc)m(hr)j(\(const)e(c)m(har)h Fh(\003)e Fc(sr)-5 +b(c)p Fs(,)64 b(in)m(t)32 b Fc(val)p Fs(\))515 670 y +Fq(Lo)r(cate)27 b(c)n(haracter)e(in)j(string.)515 817 +y(The)h Fs(strrc)m(hr\(\))h Fq(\(p.)14 b(211\))28 b(function)h(returns) +g(a)f(p)r(oin)n(ter)g(to)h(the)g(last)g(o)r(ccurrence)e(of)i(the)515 +916 y(c)n(haracter)c(v)-5 b(al)28 b(in)f(the)h(string)f(src.)515 +1063 y(Here)40 b("c)n(haracter")d(means)j("b)n(yte")f(-)h(these)g +(functions)h(do)f(not)g(w)n(ork)f(with)i(wide)f(or)515 +1163 y(m)n(ulti-b)n(yte)27 b(c)n(haracters.)506 1372 +y Fs(Returns:)676 1521 y Fq(The)d Fs(strrc)m(hr\(\))i +Fq(\(p.)14 b(211\))23 b(function)i(returns)e(a)h(p)r(oin)n(ter)f(to)h +(the)g(matc)n(hed)g(c)n(haracter)676 1621 y(or)j(NULL)h(if)g(the)g(c)n +(haracter)d(is)j(not)f(found.)515 1964 y Fs(22.11.3.32)92 +b(c)m(har)33 b Fh(\003)e Fs(strrev)i(\(c)m(har)g Fh(\003)f +Fc(s)p Fs(\))515 2111 y Fq(Rev)n(erse)26 b(a)h(string.)515 +2257 y(The)g Fs(strrev\(\))i Fq(\(p.)14 b(211\))27 b(function)h(rev)n +(erses)d(the)j(order)e(of)i(the)g(string.)506 2471 y +Fs(Returns:)676 2621 y Fq(The)35 b Fs(strrev\(\))h Fq(\(p.)14 +b(211\))34 b(function)i(returns)e(a)g(p)r(oin)n(ter)h(to)g(the)g(b)r +(eginning)g(of)g(the)676 2720 y(rev)n(ersed)26 b(string.)515 +3063 y Fs(22.11.3.33)92 b(c)m(har)33 b Fh(\003)e Fs(strsep)h(\(c)m(har) +h Fh(\003\003)e Fc(sp)p Fs(,)64 b(const)31 b(c)m(har)j +Fh(\003)d Fc(delim)p Fs(\))515 3210 y Fq(P)n(arse)26 +b(a)h(string)g(in)n(to)h(tok)n(ens.)515 3357 y(The)40 +b Fs(strsep\(\))f Fq(\(p.)14 b(211\))39 b(function)h(lo)r(cates,)i(in)f +(the)f(string)f(referenced)g(b)n(y)g Fh(\003)p Fm(sp)p +Fq(,)j(the)515 3456 y(\034rst)34 b(o)r(ccurrence)g(of)g(an)n(y)g(c)n +(haracter)f(in)i(the)g(string)f Fm(delim)f Fq(\(or)h(the)i(terminating) +e(')p Fh(n)p Fq(0')515 3556 y(c)n(haracter\))27 b(and)i(replaces)e(it)j +(with)f(a)g(')p Fh(n)p Fq(0'.)41 b(The)29 b(lo)r(cation)f(of)h(the)g +(next)h(c)n(haracter)c(after)515 3655 y(the)i(delimiter)f(c)n(haracter) +f(\(or)h Fm(NULL)p Fq(,)f(if)i(the)g(end)g(of)f(the)h(string)f(w)n(as)g +(reac)n(hed\))f(is)i(stored)515 3755 y(in)h Fh(\003)p +Fm(sp)p Fq(.)38 b(An)29 b(\020empt)n(y\021)35 b(\034eld,)29 +b(i.e.)40 b(one)28 b(caused)g(b)n(y)g(t)n(w)n(o)g(adjacen)n(t)g +(delimiter)g(c)n(haracters,)515 3855 y(can)i(b)r(e)i(detected)f(b)n(y)g +(comparing)f(the)h(lo)r(cation)g(referenced)f(b)n(y)h(the)g(p)r(oin)n +(ter)g(returned)515 3954 y(in)d Fh(\003)p Fm(sp)e Fq(to)h(')p +Fh(n)p Fq(0'.)506 4168 y Fs(Returns:)676 4317 y Fq(The)36 +b Fs(strsep\(\))f Fq(\(p.)14 b(211\))35 b(function)h(returns)f(a)h(p)r +(oin)n(ter)f(to)g(the)i(original)d(v)-5 b(alue)35 b(of)676 +4417 y Fh(\003)p Fm(sp)p Fq(.)h(If)28 b Fh(\003)p Fm(sp)e +Fq(is)i(initially)f Fm(NULL)p Fq(,)f Fs(strsep\(\))i +Fq(\(p.)14 b(211\))26 b(returns)h Fm(NULL)p Fq(.)515 +4760 y Fs(22.11.3.34)92 b(size_t)31 b(strspn)h(\(const)g(c)m(har)h +Fh(\003)e Fc(s)p Fs(,)64 b(const)32 b(c)m(har)h Fh(\003)e +Fc(ac)-5 b(c)g(ept)p Fs(\))515 4907 y Fq(The)27 b Fs(strspn\(\))h +Fq(\(p.)14 b(211\))26 b(function)i(calculates)e(the)i(length)g(of)f +(the)h(initial)f(segmen)n(t)g(of)g Fm(s)515 5006 y Fq(whic)n(h)g +(consists)g(en)n(tirely)g(of)g(c)n(haracters)f(in)h Fm(accept)p +Fq(.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 212 228 +TeXDict begin 212 227 bop 515 203 a Fs(22.11)94 b Fo(<)p +Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)1594 b(212)p 515 +236 2865 4 v 506 497 a(Returns:)676 647 y Fq(The)39 b +Fs(strspn\(\))g Fq(\(p.)14 b(211\))38 b(function)i(returns)e(the)h(n)n +(um)n(b)r(er)g(of)g(c)n(haracters)d(in)k(the)676 746 +y(initial)e(segmen)n(t)f(of)h Fm(s)g Fq(whic)n(h)f(consist)h(only)f(of) +h(c)n(haracters)d(from)j Fm(accept)p Fq(.)65 b(The)676 +846 y(terminating)27 b(zero)g(is)g(not)h(considered)e(as)h(a)g(part)g +(of)h(string.)515 1187 y Fs(22.11.3.35)92 b(c)m(har)33 +b Fh(\003)e Fs(strstr)h(\(const)g(c)m(har)i Fh(\003)d +Fc(s1)p Fs(,)64 b(const)31 b(c)m(har)j Fh(\003)d Fc(s2)p +Fs(\))515 1334 y Fq(Lo)r(cate)c(a)g(substring.)515 1481 +y(The)j Fs(strstr\(\))g Fq(\(p.)14 b(212\))30 b(function)g(\034nds)h +(the)f(\034rst)g(o)r(ccurrence)f(of)h(the)g(substring)f +Fm(s2)h Fq(in)515 1580 y(the)e(string)f Fm(s1)p Fq(.)36 +b(The)27 b(terminating)g(')p Fh(n)p Fq(0')g(c)n(haracters)e(are)i(not)g +(compared.)506 1793 y Fs(Returns:)676 1942 y Fq(The)37 +b Fs(strstr\(\))g Fq(\(p.)14 b(212\))36 b(function)h(returns)f(a)h(p)r +(oin)n(ter)f(to)g(the)h(b)r(eginning)g(of)g(the)676 2042 +y(substring,)28 b(or)g Fm(NULL)f Fq(if)i(the)g(substring)f(is)h(not)f +(found.)41 b(If)29 b Fm(s2)f Fq(p)r(oin)n(ts)g(to)h(a)f(string)g(of)676 +2142 y(zero)f(length,)g(the)h(function)g(returns)f Fm(s1)p +Fq(.)515 2483 y Fs(22.11.3.36)92 b(c)m(har)33 b Fh(\003)e +Fs(strtok)i(\(c)m(har)g Fh(\003)e Fc(s)p Fs(,)64 b(const)32 +b(c)m(har)h Fh(\003)e Fc(delim)p Fs(\))515 2630 y Fq(P)n(arses)26 +b(the)i(string)f(s)g(in)n(to)g(tok)n(ens.)515 2776 y(strtok)22 +b(parses)f(the)j(string)e(s)h(in)n(to)g(tok)n(ens.)34 +b(The)23 b(\034rst)g(call)f(to)h(strtok)f(should)h(ha)n(v)n(e)f(s)h(as) +f(its)515 2876 y(\034rst)30 b(argumen)n(t.)46 b(Subsequen)n(t)31 +b(calls)f(should)h(ha)n(v)n(e)e(the)j(\034rst)e(argumen)n(t)g(set)h(to) +g(NULL.)515 2976 y(If)c(a)g(tok)n(en)f(ends)h(with)h(a)f(delimiter,)g +(this)g(delimiting)h(c)n(haracter)d(is)i(o)n(v)n(erwritten)e(with)i(a) +515 3075 y(')p Fh(n)p Fq(0')d(and)h(a)g(p)r(oin)n(ter)f(to)h(the)g +(next)h(c)n(haracter)d(is)i(sa)n(v)n(ed)e(for)i(the)g(next)g(call)g(to) +g(strtok.)35 b(The)515 3175 y(delimiter)27 b(string)g(delim)h(ma)n(y)f +(b)r(e)h(di\033eren)n(t)g(for)f(eac)n(h)f(call.)506 3383 +y Fs(Returns:)676 3532 y Fq(The)c Fs(strtok\(\))g Fq(\(p.)14 +b(212\))20 b(function)i(returns)f(a)g(p)r(oin)n(ter)g(to)h(the)g(next)f +(tok)n(en)g(or)g(NULL)676 3632 y(when)28 b(no)f(more)g(tok)n(ens)g(are) +f(found.)506 3823 y Fs(Note:)676 3973 y(strtok\(\))d +Fq(\(p.)14 b(212\))22 b(is)g(NOT)h(reen)n(tran)n(t.)33 +b(F)-7 b(or)22 b(a)g(reen)n(tran)n(t)f(v)n(ersion)g(of)i(this)g +(function)676 4073 y(see)k Fm(strtok_r\(\))40 b(\()p +Fq(p.)14 b Fm(212\))p Fq(.)515 4414 y Fs(22.11.3.37)92 +b(c)m(har)33 b Fh(\003)e Fs(strtok_r)h(\(c)m(har)h Fh(\003)e +Fc(string)p Fs(,)63 b(const)31 b(c)m(har)i Fh(\003)e +Fc(delim)p Fs(,)62 b(c)m(har)515 4513 y Fh(\003\003)31 +b Fc(last)p Fs(\))515 4660 y Fq(P)n(arses)26 b(string)h(in)n(to)g(tok)n +(ens.)515 4807 y(strtok_r)d(parses)g(string)i(in)n(to)f(tok)n(ens.)36 +b(The)25 b(\034rst)h(call)g(to)f(strtok_r)g(should)g(ha)n(v)n(e)g +(string)515 4907 y(as)34 b(its)h(\034rst)g(argumen)n(t.)58 +b(Subsequen)n(t)35 b(calls)g(should)f(ha)n(v)n(e)g(the)i(\034rst)e +(argumen)n(t)g(set)h(to)515 5006 y(NULL.)25 b(If)h(a)f(tok)n(en)g(ends) +g(with)h(a)e(delimiter,)i(this)g(delimiting)g(c)n(haracter)d(is)i(o)n +(v)n(erwritten)p 515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 213 229 +TeXDict begin 213 228 bop 515 203 a Fs(22.12)94 b Fo(<)p +Fs(a)m(vr/b)s(o)s(ot.h)p Fo(>)p Fs(:)40 b(Bo)s(otloader)31 +b(Supp)s(ort)h(Utilities)559 b(213)p 515 236 2865 4 v +515 523 a Fq(with)37 b(a)g(')p Fh(n)p Fq(0')f(and)g(a)h(p)r(oin)n(ter)f +(to)h(the)g(next)g(c)n(haracter)e(is)i(sa)n(v)n(ed)e(for)h(the)i(next)f +(call)f(to)515 623 y(strtok_r.)54 b(The)34 b(delimiter)g(string)f +(delim)h(ma)n(y)g(b)r(e)g(di\033eren)n(t)g(for)f(eac)n(h)h(call.)55 +b(last)34 b(is)f(a)515 722 y(user)22 b(allo)r(cated)g(c)n(har)p +Fh(\003)g Fq(p)r(oin)n(ter.)34 b(It)24 b(m)n(ust)f(b)r(e)g(the)h(same)e +(while)h(parsing)f(the)h(same)g(string.)515 822 y(strtok_r)j(is)h(a)g +(reen)n(tran)n(t)f(v)n(ersion)g(of)34 b Fs(strtok\(\))29 +b Fq(\(p.)14 b(212\).)506 1007 y Fs(Returns:)676 1156 +y Fq(The)34 b Fs(strtok_r\(\))h Fq(\(p.)14 b(212\))33 +b(function)i(returns)e(a)g(p)r(oin)n(ter)h(to)f(the)i(next)f(tok)n(en)f +(or)676 1256 y(NULL)28 b(when)g(no)f(more)g(tok)n(ens)f(are)h(found.) +515 1565 y Fs(22.11.3.38)92 b(c)m(har)33 b Fh(\003)e +Fs(strupr)i(\(c)m(har)g Fh(\003)f Fc(s)p Fs(\))515 1712 +y Fq(Con)n(v)n(ert)26 b(a)h(string)g(to)g(upp)r(er)h(case.)515 +1859 y(The)33 b Fs(strupr\(\))i Fq(\(p.)14 b(213\))33 +b(function)h(will)g(con)n(v)n(ert)e(a)h(string)g(to)g(upp)r(er)h(case.) +54 b(Only)34 b(the)515 1958 y(lo)n(w)n(er)27 b(case)h(alphab)r(etic)h +(c)n(haracters)e([a)i(..)42 b(z])29 b(are)f(con)n(v)n(erted.)40 +b(Non-alphab)r(etic)28 b(c)n(harac-)515 2058 y(ters)f(will)h(not)f(b)r +(e)h(c)n(hanged.)506 2238 y Fs(Returns:)676 2388 y Fq(The)33 +b Fs(strupr\(\))h Fq(\(p.)14 b(213\))32 b(function)h(returns)f(a)g(p)r +(oin)n(ter)h(to)f(the)h(con)n(v)n(erted)f(string.)676 +2487 y(The)27 b(p)r(oin)n(ter)f(is)g(the)h(same)f(as)g(that)g(passed)g +(in)h(since)f(the)h(op)r(eration)e(is)i(p)r(erform)f(in)676 +2587 y(place.)515 2861 y Fn(22.12)112 b Fd(<)p Fn(a)m(vr/b)s(o)s(ot.h)p +Fd(>)p Fn(:)50 b(Bo)s(otloader)38 b(Supp)s(ort)g(Utilities)515 +3062 y Fs(22.12.1)93 b(Detailed)31 b(Description)656 +3241 y Fj(#include)37 b()656 3320 y(#include)g() +515 3518 y Fq(The)e(macros)f(in)i(this)f(mo)r(dule)h(pro)n(vide)e(a)h +(C)g(language)f(in)n(terface)g(to)i(the)f(b)r(o)r(otloader)515 +3618 y(supp)r(ort)27 b(functionalit)n(y)f(of)h(certain)g(A)-9 +b(VR)27 b(pro)r(cessors.)35 b(These)26 b(macros)g(are)g(designed)g(to) +515 3718 y(w)n(ork)g(with)i(all)f(sizes)g(of)h(\035ash)f(memory)-7 +b(.)515 3865 y(Global)20 b(in)n(terrupts)f(are)h(not)g(automatically)f +(disabled)h(for)g(these)h(macros.)32 b(It)21 b(is)f(left)i(up)e(to)515 +3964 y(the)25 b(programmer)d(to)i(do)g(this.)37 b(See)24 +b(the)h(co)r(de)f(example)h(b)r(elo)n(w.)35 b(Also)24 +b(see)g(the)h(pro)r(cessor)515 4064 y(datasheet)i(for)f(ca)n(v)n(eats)g +(on)h(ha)n(ving)f(global)h(in)n(terrupts)f(enabled)h(during)g(writing)g +(of)h(the)515 4163 y(Flash.)506 4328 y Fs(Note:)676 4477 +y Fq(Not)37 b(all)f(A)-9 b(VR)38 b(pro)r(cessors)c(pro)n(vide)i(b)r(o)r +(otloader)f(supp)r(ort.)64 b(See)37 b(y)n(our)e(pro)r(cessor)676 +4577 y(datasheet)27 b(to)h(see)f(if)h(it)g(pro)n(vides)e(b)r(o)r +(otloader)g(supp)r(ort.)506 4757 y Fs(T)-8 b(o)s(do)676 +4907 y Fq(F)h(rom)33 b(email)g(with)h(Marek:)47 b(On)33 +b(smaller)g(devices)g(\(all)g(except)g(A)-7 b(Tmega64/128\),)676 +5006 y(__SPM_REG)36 b(is)f(in)g(the)h(I/O)e(space,)j(accessible)d(with) +h(the)h(shorter)e("in")g(and)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 214 230 +TeXDict begin 214 229 bop 515 203 a Fs(22.12)94 b Fo(<)p +Fs(a)m(vr/b)s(o)s(ot.h)p Fo(>)p Fs(:)40 b(Bo)s(otloader)31 +b(Supp)s(ort)h(Utilities)559 b(214)p 515 236 2865 4 v +676 523 a Fq("out")29 b(instructions)g(-)g(since)h(the)g(b)r(o)r(ot)f +(loader)g(has)g(a)g(limited)h(size,)g(this)g(could)g(b)r(e)676 +623 y(an)d(imp)r(ortan)n(t)h(optimization.)506 835 y +Fs(API)33 b(Usage)f(Example)676 1000 y Fq(The)c(follo)n(wing)e(co)r(de) +i(sho)n(ws)e(t)n(ypical)h(usage)f(of)i(the)g(b)r(o)r(ot)g(API.)656 +1209 y Fj(#include)37 b()656 1288 y(#include)g +()656 1367 y(#include)g()656 +1525 y(void)f(boot_program_page)k(\(uint32_t)e(page,)f(uint8_t)g +(*buf\))656 1604 y({)797 1683 y(uint16_t)g(i;)797 1761 +y(uint8_t)g(sreg;)797 1919 y(//)f(Disable)h(interrupts.)797 +2077 y(sreg)f(=)g(SREG;)797 2156 y(cli\(\);)797 2314 +y(eeprom_busy_wait)k(\(\);)797 2471 y(boot_page_erase)f(\(page\);)797 +2550 y(boot_spm_busy_wait)h(\(\);)213 b(//)35 b(Wait)i(until)g(the)f +(memory)h(is)e(erased.)797 2708 y(for)h(\(i=0;)h(i)p Fs(:)40 b(Bo)s(otloader)31 +b(Supp)s(ort)h(Utilities)559 b(215)p 515 236 2865 4 v +639 523 a Fk(\210)41 b Fq(#de\034ne)136 b Fs(b)s(o)s(ot_spm_in)m +(terrupt_enable)p Fq(\(\))f(\(__SPM_REG)g Fh(j)p Fq(=)722 +623 y(\()p Fs(uin)m(t8_t)p Fq(\)_BV\(SPMIE\)\))639 731 +y Fk(\210)41 b Fq(#de\034ne)115 b Fs(b)s(o)s(ot_spm_in)m +(terrupt_disable)p Fq(\(\))f(\(__SPM_REG)h(&=)722 830 +y(\()p Fs(uin)m(t8_t)p Fq(\))p Fh(\030)p Fq(_BV\(SPMIE\)\))639 +938 y Fk(\210)41 b Fq(#de\034ne)d Fs(b)s(o)s(ot_is_spm_in)m(terrupt)p +Fq(\(\))e(\(__SPM_REG)h(&)g(\()p Fs(uin)m(t8_t)p Fq(\)_-)722 +1038 y(BV\(SPMIE\)\))639 1146 y Fk(\210)k Fq(#de\034ne)46 +b Fs(b)s(o)s(ot_rww_busy)p Fq(\(\))g(\(__SPM_REG)g(&)g(\()p +Fs(uin)m(t8_t)p Fq(\)_BV\(__-)722 1245 y(COMMON_ASB\)\))639 +1353 y Fk(\210)41 b Fq(#de\034ne)48 b Fs(b)s(o)s(ot_spm_busy)p +Fq(\(\))f(\(__SPM_REG)h(&)f(\()p Fs(uin)m(t8_t)p Fq(\)_BV\(__-)722 +1453 y(SPM_ENABLE\)\))639 1561 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(b)s(o)s(ot_spm_busy_w)m(ait)p Fq(\(\))g(do{}while\(b)r(o)r +(ot_spm_busy\(\)\))639 1669 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(GET_LO)m(W_FUSE_BITS)i Fq(\(0x0000\))639 1777 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(GET_LOCK_BITS)h Fq(\(0x0001\))639 +1885 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(GET_EXTENDED_FUSE_BITS)h +Fq(\(0x0002\))639 1993 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(GET_HIGH_FUSE_BITS)h Fq(\(0x0003\))639 2100 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_lo)s(c)m(k_fuse_bits_get)p +Fq(\(address\))639 2208 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(b)s(o)s(ot_signature_b)m(yte_get)p Fq(\(addr\))639 +2316 y Fk(\210)41 b Fq(#de\034ne)140 b Fs(b)s(o)s(ot_page_\034ll)p +Fq(\(address,)165 b(data\))139 b(__b)r(o)r(ot_page_\034ll_-)722 +2416 y(normal\(address,)26 b(data\))639 2524 y Fk(\210)41 +b Fq(#de\034ne)220 b Fs(b)s(o)s(ot_page_erase)p Fq(\(address\))d(__b)r +(o)r(ot_page_erase_-)722 2623 y(normal\(address\))639 +2731 y Fk(\210)41 b Fq(#de\034ne)215 b Fs(b)s(o)s(ot_page_write)p +Fq(\(address\))e(__b)r(o)r(ot_page_write_-)722 2831 y +(normal\(address\))639 2939 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(b)s(o)s(ot_rww_enable)p Fq(\(\))g(__b)r(o)r(ot_rww_enable\(\))639 +3047 y Fk(\210)41 b Fq(#de\034ne)159 b Fs(b)s(o)s(ot_lo)s(c)m +(k_bits_set)p Fq(\(lo)r(c)n(k_bits\))e(__b)r(o)r(ot_lo)r(c)n(k_bits_-) +722 3147 y(set\(lo)r(c)n(k_bits\))639 3254 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_page_\034ll_safe)p +Fq(\(address,)d(data\))639 3362 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(b)s(o)s(ot_page_erase_safe)p Fq(\(address\))639 +3470 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_page_write_safe)p +Fq(\(address\))639 3578 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(b)s(o)s(ot_rww_enable_safe)p Fq(\(\))639 3686 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_lo)s(c)m(k_bits_set_safe)p +Fq(\(lo)r(c)n(k_bits\))515 3949 y Fs(22.12.2)93 b(De\034ne)31 +b(Do)s(cumen)m(tation)515 4150 y(22.12.2.1)92 b(#de\034ne)73 +b(b)s(o)s(ot_is_spm_in)m(terrupt\(\))g(\(__SPM_REG)i(&)515 +4249 y(\(uin)m(t8_t\)_BV\(SPMIE\)\))515 4396 y Fq(Chec)n(k)27 +b(if)h(the)g(SPM)g(in)n(terrupt)f(is)h(enabled.)515 4659 +y Fs(22.12.2.2)92 b(#de\034ne)33 b(b)s(o)s(ot_lo)s(c)m(k_bits_set\(lo)s +(c)m(k_bits\))e(__b)s(o)s(ot_lo)s(c)m(k_-)515 4759 y(bits_set\(lo)s(c)m +(k_bits\))515 4906 y Fq(Set)d(the)g(b)r(o)r(otloader)e(lo)r(c)n(k)h +(bits.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 216 232 +TeXDict begin 216 231 bop 515 203 a Fs(22.12)94 b Fo(<)p +Fs(a)m(vr/b)s(o)s(ot.h)p Fo(>)p Fs(:)40 b(Bo)s(otloader)31 +b(Supp)s(ort)h(Utilities)559 b(216)p 515 236 2865 4 v +506 497 a(P)m(arameters:)676 647 y Fc(lo)-5 b(ck_bits)41 +b Fq(A)28 b(mask)f(of)h(whic)n(h)f(Bo)r(ot)g(Loader)f(Lo)r(c)n(k)h +(Bits)h(to)f(set.)506 864 y Fs(Note:)676 1013 y Fq(In)32 +b(this)g(con)n(text,)h(a)e('set)h(bit')g(will)g(b)r(e)g(written)g(to)g +(a)f(zero)g(v)-5 b(alue.)49 b(Note)32 b(also)f(that)676 +1113 y(only)c(BLBxx)g(bits)h(can)f(b)r(e)h(programmed)e(b)n(y)h(this)h +(command.)515 1338 y(F)-7 b(or)27 b(example,)g(to)g(disallo)n(w)f(the)i +(SPM)g(instruction)f(from)h(writing)f(to)g(the)h(Bo)r(ot)f(Loader)515 +1438 y(memory)f(section)i(of)f(\035ash,)g(y)n(ou)g(w)n(ould)g(use)h +(this)f(macro)g(as)g(suc)n(h:)656 1643 y Fj(boot_lock_bits_set)40 +b(\(_BV)c(\(BLB11\)\);)506 1843 y Fs(Note:)676 1993 y +Fq(Lik)n(e)27 b(an)n(y)g(lo)r(c)n(k)g(bits,)h(the)h(Bo)r(ot)e(Loader)f +(Lo)r(c)n(k)h(Bits,)h(once)f(set,)h(cannot)f(b)r(e)h(cleared)676 +2092 y(again)h(except)i(b)n(y)f(a)h(c)n(hip)f(erase)f(whic)n(h)i(will)g +(in)f(turn)h(also)f(erase)f(the)i(b)r(o)r(ot)f(loader)676 +2192 y(itself.)515 2533 y Fs(22.12.2.3)92 b(#de\034ne)31 +b(b)s(o)s(ot_lo)s(c)m(k_bits_set_safe\(lo)s(c)m(k_bits\))515 +2680 y(V)-8 b(alue:)515 2884 y Fj(do)36 b({)f(\\)656 +2963 y(boot_spm_busy_wait\(\);)817 b(\\)656 3042 y +(eeprom_busy_wait\(\);)887 b(\\)656 3121 y(boot_lock_bits_set)40 +b(\(lock_bits\);)462 b(\\)515 3200 y(})35 b(while)i(\(0\))515 +3425 y Fq(Same)f(as)g Fs(b)s(o)s(ot_lo)s(c)m(k_bits_set\(\))g +Fq(\(p.)14 b(215\))36 b(except)h(w)n(aits)f(for)g(eeprom)g(and)h(spm) +515 3525 y(op)r(erations)26 b(to)h(complete)h(b)r(efore)f(setting)h +(the)g(lo)r(c)n(k)e(bits.)515 3787 y Fs(22.12.2.4)92 +b(#de\034ne)31 b(b)s(o)s(ot_lo)s(c)m(k_fuse_bits_get\(address\))515 +3934 y(V)-8 b(alue:)515 4139 y Fj(\(__extension__\({)1521 +b(\\)656 4218 y(uint8_t)37 b(__result;)1343 b(\\)656 +4296 y(__asm__)37 b(__volatile__)1238 b(\\)656 4375 y(\()1905 +b(\\)797 4454 y("ldi)36 b(r30,)h(\0453\\n\\t")1201 b(\\)797 +4533 y("ldi)36 b(r31,)h(0\\n\\t")1236 b(\\)797 4612 y("sts)36 +b(\0451,)g(\0452\\n\\t")1237 b(\\)797 4691 y("lpm)36 +b(\0450,)g(Z\\n\\t")1272 b(\\)797 4770 y(:)35 b("=r")i(\(__result\)) +1202 b(\\)797 4848 y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,) +641 b(\\)867 4927 y("r")37 b(\(\(uint8_t\)__BOOT_LOCK_BITS)q(_SE)q +(T\),)465 b(\\)867 5006 y("M")37 b(\(address\))1272 b(\\)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 217 233 +TeXDict begin 217 232 bop 515 203 a Fs(22.12)94 b Fo(<)p +Fs(a)m(vr/b)s(o)s(ot.h)p Fo(>)p Fs(:)40 b(Bo)s(otloader)31 +b(Supp)s(ort)h(Utilities)559 b(217)p 515 236 2865 4 v +797 523 a Fj(:)35 b("r0",)i("r30",)g("r31")1095 b(\\)656 +602 y(\);)1870 b(\\)656 681 y(__result;)1625 b(\\)515 +760 y(}\)\))515 951 y Fq(Read)27 b(the)h(lo)r(c)n(k)f(or)g(fuse)g(bits) +h(at)g Fm(address)p Fq(.)515 1098 y(P)n(arameter)d Fm(address)e +Fq(can)j(b)r(e)h(an)n(y)e(of)i(GET_LO)n(W_FUSE_BITS,)f(GET_LOCK_-)515 +1198 y(BITS,)h(GET_EXTENDED_FUSE_BITS,)k(or)26 b(GET_HIGH_FUSE_BITS.) +506 1375 y Fs(Note:)676 1524 y Fq(The)i(lo)r(c)n(k)g(and)g(fuse)g(bits) +h(returned)e(are)h(the)g(ph)n(ysical)f(v)-5 b(alues,)28 +b(i.e.)39 b(a)28 b(bit)h(returned)676 1624 y(as)e(0)g(means)g(the)h +(corresp)r(onding)e(fuse)i(or)e(lo)r(c)n(k)h(bit)h(is)g(programmed.)515 +1925 y Fs(22.12.2.5)92 b(#de\034ne)119 b(b)s(o)s +(ot_page_erase\(address\))g(__b)s(o)s(ot_page_-)515 2025 +y(erase_normal\(address\))515 2172 y Fq(Erase)27 b(the)g(\035ash)h +(page)e(that)i(con)n(tains)f(address.)506 2345 y Fs(Note:)676 +2495 y Fq(address)f(is)i(a)f(b)n(yte)g(address)g(in)h(\035ash,)f(not)g +(a)g(w)n(ord)g(address.)515 2796 y Fs(22.12.2.6)92 b(#de\034ne)31 +b(b)s(o)s(ot_page_erase_safe\(address\))515 2943 y(V)-8 +b(alue:)515 3114 y Fj(do)36 b({)f(\\)656 3193 y +(boot_spm_busy_wait\(\);)817 b(\\)656 3272 y(eeprom_busy_wait\(\);)887 +b(\\)656 3350 y(boot_page_erase)39 b(\(address\);)638 +b(\\)515 3429 y(})35 b(while)i(\(0\))515 3621 y Fq(Same)h(as)h +Fs(b)s(o)s(ot_page_erase\(\))f Fq(\(p.)14 b(217\))38 +b(except)h(it)g(w)n(aits)f(for)g(eeprom)g(and)h(spm)515 +3721 y(op)r(erations)26 b(to)h(complete)h(b)r(efore)f(erasing)f(the)i +(page.)515 3977 y Fs(22.12.2.7)92 b(#de\034ne)33 b(b)s(o)s +(ot_page_\034ll\(address,)66 b(data\))34 b(__b)s(o)s(ot_page_-)515 +4077 y(\034ll_normal\(address,)c(data\))515 4224 y Fq(Fill)e(the)g(b)r +(o)r(otloader)e(temp)r(orary)g(page)h(bu\033er)h(for)f(\035ash)g +(address)f(with)i(data)f(w)n(ord.)506 4397 y Fs(Note:)676 +4547 y Fq(The)c(address)f(is)h(a)f(b)n(yte)h(address.)34 +b(The)23 b(data)g(is)g(a)f(w)n(ord.)35 b(The)23 b(A)-9 +b(VR)23 b(writes)g(data)f(to)676 4646 y(the)f(bu\033er)g(a)f(w)n(ord)f +(at)h(a)g(time,)j(but)e(addresses)e(the)h(bu\033er)h(p)r(er)f(b)n(yte!) +35 b(So,)21 b(incremen)n(t)676 4746 y(y)n(our)29 b(address)g(b)n(y)i(2) +f(b)r(et)n(w)n(een)g(calls,)h(and)f(send)g(2)g(data)g(b)n(ytes)g(in)h +(a)f(w)n(ord)g(format!)676 4846 y(The)f(LSB)f(of)h(the)g(data)f(is)g +(written)h(to)g(the)g(lo)n(w)n(er)e(address;)g(the)i(MSB)g(of)g(the)g +(data)676 4945 y(is)f(written)f(to)h(the)g(higher)f(address.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 218 234 +TeXDict begin 218 233 bop 515 203 a Fs(22.12)94 b Fo(<)p +Fs(a)m(vr/b)s(o)s(ot.h)p Fo(>)p Fs(:)40 b(Bo)s(otloader)31 +b(Supp)s(ort)h(Utilities)559 b(218)p 515 236 2865 4 v +515 523 a(22.12.2.8)92 b(#de\034ne)31 b(b)s(o)s +(ot_page_\034ll_safe\(address,)62 b(data\))515 670 y(V)-8 +b(alue:)515 879 y Fj(do)36 b({)f(\\)656 958 y(boot_spm_busy_wait\(\);) +817 b(\\)656 1037 y(eeprom_busy_wait\(\);)887 b(\\)656 +1116 y(boot_page_fill\(address,)41 b(data\);)496 b(\\)515 +1195 y(})35 b(while)i(\(0\))515 1424 y Fq(Same)27 b(as)g +Fs(b)s(o)s(ot_page_\034ll\(\))g Fq(\(p.)14 b(217\))27 +b(except)h(it)g(w)n(aits)f(for)g(eeprom)g(and)h(spm)g(op)r(er-)515 +1524 y(ations)f(to)g(complete)g(b)r(efore)h(\034lling)f(the)h(page.)515 +1787 y Fs(22.12.2.9)92 b(#de\034ne)117 b(b)s(o)s +(ot_page_write\(address\))f(__b)s(o)s(ot_page_-)515 1887 +y(write_normal\(address\))515 2034 y Fq(W)-7 b(rite)23 +b(the)h(b)r(o)r(otloader)d(temp)r(orary)h(page)h(bu\033er)g(to)g +(\035ash)g(page)f(that)h(con)n(tains)f(address.)506 2246 +y Fs(Note:)676 2395 y Fq(address)k(is)i(a)f(b)n(yte)g(address)g(in)h +(\035ash,)f(not)g(a)g(w)n(ord)g(address.)515 2741 y Fs(22.12.2.10)92 +b(#de\034ne)31 b(b)s(o)s(ot_page_write_safe\(address\))515 +2888 y(V)-8 b(alue:)515 3097 y Fj(do)36 b({)f(\\)656 +3176 y(boot_spm_busy_wait\(\);)817 b(\\)656 3255 y +(eeprom_busy_wait\(\);)887 b(\\)656 3334 y(boot_page_write)39 +b(\(address\);)638 b(\\)515 3413 y(})35 b(while)i(\(0\))515 +3642 y Fq(Same)h(as)g Fs(b)s(o)s(ot_page_write\(\))f +Fq(\(p.)14 b(218\))38 b(except)g(it)h(w)n(aits)e(for)h(eeprom)g(and)g +(spm)515 3742 y(op)r(erations)26 b(to)h(complete)h(b)r(efore)f(writing) +g(the)h(page.)515 4005 y Fs(22.12.2.11)92 b(#de\034ne)32 +b(b)s(o)s(ot_rww_busy\(\))i(\(__SPM_REG)f(&)h(\(uin)m(t8_-)515 +4105 y(t\)_BV\(__COMMON_ASB\)\))515 4252 y Fq(Chec)n(k)27 +b(if)h(the)g(R)-9 b(WW)28 b(section)f(is)h(busy)-7 b(.)515 +4515 y Fs(22.12.2.12)92 b(#de\034ne)31 b(b)s(o)s(ot_rww_enable\(\))g +(__b)s(o)s(ot_rww_enable\(\))515 4661 y Fq(Enable)d(the)g(Read-While-W) +-7 b(rite)27 b(memory)f(section.)p 515 5179 V 515 5255 +a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 219 235 +TeXDict begin 219 234 bop 515 203 a Fs(22.12)94 b Fo(<)p +Fs(a)m(vr/b)s(o)s(ot.h)p Fo(>)p Fs(:)40 b(Bo)s(otloader)31 +b(Supp)s(ort)h(Utilities)559 b(219)p 515 236 2865 4 v +515 523 a(22.12.2.13)92 b(#de\034ne)31 b(b)s(o)s +(ot_rww_enable_safe\(\))515 670 y(V)-8 b(alue:)515 868 +y Fj(do)36 b({)f(\\)656 947 y(boot_spm_busy_wait\(\);)817 +b(\\)656 1026 y(eeprom_busy_wait\(\);)887 b(\\)656 1104 +y(boot_rww_enable\(\);)922 b(\\)515 1183 y(})35 b(while)i(\(0\))515 +1402 y Fq(Same)28 b(as)g Fs(b)s(o)s(ot_rww_enable\(\))g +Fq(\(p.)14 b(218\))28 b(except)h(w)n(aits)f(for)g(eeprom)f(and)i(spm)g +(op-)515 1502 y(erations)d(to)h(complete)h(b)r(efore)f(enabling)g(the)h +(R)-9 b(WW)28 b(mameory)-7 b(.)515 1763 y Fs(22.12.2.14)92 +b(#de\034ne)31 b(b)s(o)s(ot_signature_b)m(yte_get\(addr\))515 +1909 y(V)-8 b(alue:)515 2107 y Fj(\(__extension__\({)780 +b(\\)726 2186 y(uint16_t)38 b(__addr16)f(=)f(\(uint16_t\)\(addr\);)181 +b(\\)726 2265 y(uint8_t)38 b(__result;)884 b(\\)726 2344 +y(__asm__)38 b(__volatile__)779 b(\\)726 2423 y(\()1447 +b(\\)797 2502 y("sts)36 b(\0451,)g(\0452\\n\\t")849 b(\\)797 +2581 y("lpm)36 b(\0450,)g(Z")g("\\n\\t")778 b(\\)797 +2659 y(:)35 b("=r")i(\(__result\))814 b(\\)797 2738 y(:)35 +b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)253 b(\\)867 +2817 y("r")37 b(\(\(uint8_t\))h(__BOOT_SIGROW_READ\),)111 +b(\\)867 2896 y("z")37 b(\(__addr16\))849 b(\\)726 2975 +y(\);)1412 b(\\)726 3054 y(__result;)1167 b(\\)515 3133 +y(}\)\))515 3351 y Fq(Read)28 b(the)g(Signature)g(Ro)n(w)g(b)n(yte)g +(at)g Fm(address)p Fq(.)36 b(F)-7 b(or)28 b(some)g(MCU)g(t)n(yp)r(es,)h +(this)g(function)515 3451 y(can)e(also)f(retriev)n(e)h(the)h +(factory-stored)d(oscillator)g(calibration)i(b)n(ytes.)515 +3598 y(P)n(arameter)f Fm(address)f Fq(can)i(b)r(e)h(0-0x1f)e(as)h(do)r +(cumen)n(ted)g(b)n(y)h(the)g(datasheet.)506 3784 y Fs(Note:)676 +3934 y Fq(The)g(v)-5 b(alues)27 b(are)f(MCU)i(t)n(yp)r(e)g(dep)r(enden) +n(t.)515 4252 y Fs(22.12.2.15)92 b(#de\034ne)34 b(b)s(o)s +(ot_spm_busy\(\))g(\(__SPM_REG)i(&)f(\(uin)m(t8_-)515 +4352 y(t\)_BV\(__SPM_ENABLE\)\))515 4499 y Fq(Chec)n(k)27 +b(if)h(the)g(SPM)g(instruction)f(is)h(busy)-7 b(.)515 +4760 y Fs(22.12.2.16)92 b(#de\034ne)125 b(b)s(o)s(ot_spm_busy_w)m +(ait\(\))g(do{}while\(b)s(o)s(ot_-)515 4859 y(spm_busy\(\)\))515 +5006 y Fq(W)-7 b(ait)28 b(while)f(the)h(SPM)h(instruction)e(is)g(busy) +-7 b(.)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 220 236 +TeXDict begin 220 235 bop 515 203 a Fs(22.13)94 b Fo(<)p +Fs(a)m(vr/eeprom.h)p Fo(>)p Fs(:)41 b(EEPR)m(OM)30 b(handling)829 +b(220)p 515 236 2865 4 v 515 523 a(22.12.2.17)92 b(#de\034ne)101 +b(b)s(o)s(ot_spm_in)m(terrupt_disable\(\))f(\(__SPM_-)515 +623 y(REG)31 b(&=)h(\(uin)m(t8_t\))p Fh(\030)p Fs(_BV\(SPMIE\)\))515 +770 y Fq(Disable)27 b(the)h(SPM)g(in)n(terrupt.)515 1033 +y Fs(22.12.2.18)92 b(#de\034ne)22 b(b)s(o)s(ot_spm_in)m +(terrupt_enable\(\))h(\(__SPM_REG)515 1132 y Fh(j)p Fs(=)32 +b(\(uin)m(t8_t\)_BV\(SPMIE\)\))515 1279 y Fq(Enable)c(the)g(SPM)g(in)n +(terrupt.)515 1542 y Fs(22.12.2.19)92 b(#de\034ne)66 +b(BOOTLO)m(ADER_SECTION)i(__attribute__-)515 1642 y(\(\(section)31 +b(\(".b)s(o)s(otloader"\)\)\))515 1789 y Fq(Used)k(to)g(declare)e(a)i +(function)g(or)f(v)-5 b(ariable)34 b(to)h(b)r(e)g(placed)g(in)n(to)g(a) +f(new)h(section)f(called)515 1888 y(.b)r(o)r(otloader.)h(This)26 +b(section)g(and)f(its)i(con)n(ten)n(ts)e(can)h(then)g(b)r(e)h(relo)r +(cated)e(to)h(an)n(y)f(address)515 1988 y(\(suc)n(h)i(as)g(the)h(b)r(o) +r(otloader)e(NR)-9 b(WW)29 b(area\))d(at)i(link-time.)515 +2251 y Fs(22.12.2.20)92 b(#de\034ne)31 b(GET_EXTENDED_FUSE_BITS)i +(\(0x0002\))515 2398 y Fq(address)26 b(to)h(read)g(the)h(extended)g +(fuse)g(bits,)g(using)f(b)r(o)r(ot_lo)r(c)n(k_fuse_bits_get)515 +2661 y Fs(22.12.2.21)92 b(#de\034ne)31 b(GET_HIGH_FUSE_BITS)i +(\(0x0003\))515 2808 y Fq(address)26 b(to)h(read)g(the)h(high)g(fuse)f +(bits,)h(using)f(b)r(o)r(ot_lo)r(c)n(k_fuse_bits_get)515 +3071 y Fs(22.12.2.22)92 b(#de\034ne)31 b(GET_LOCK_BITS)i(\(0x0001\))515 +3217 y Fq(address)26 b(to)h(read)g(the)h(lo)r(c)n(k)f(bits,)h(using)f +(b)r(o)r(ot_lo)r(c)n(k_fuse_bits_get)515 3480 y Fs(22.12.2.23)92 +b(#de\034ne)31 b(GET_LO)m(W_FUSE_BITS)i(\(0x0000\))515 +3627 y Fq(address)26 b(to)h(read)g(the)h(lo)n(w)f(fuse)h(bits,)g(using) +f(b)r(o)r(ot_lo)r(c)n(k_fuse_bits_get)515 3907 y Fn(22.13)112 +b Fd(<)p Fn(a)m(vr/eeprom.h)p Fd(>)p Fn(:)51 b(EEPR)m(OM)36 +b(handling)515 4107 y Fs(22.13.1)93 b(Detailed)31 b(Description)550 +4287 y Fj(#include)37 b()515 4517 y Fq(This)31 +b(header)f(\034le)i(declares)e(the)h(in)n(terface)g(to)g(some)f(simple) +i(library)e(routines)g(suitable)515 4617 y(for)i(handling)g(the)i(data) +e(EEPR)n(OM)i(con)n(tained)e(in)h(the)g(A)-9 b(VR)33 +b(micro)r(con)n(trollers.)50 b(The)515 4716 y(implemen)n(tation)29 +b(uses)f(a)g(simple)h(p)r(olled)g(mo)r(de)g(in)n(terface.)40 +b(Applications)29 b(that)g(require)515 4816 y(in)n(terrupt-con)n +(trolled)f(EEPR)n(OM)i(access)f(to)h(ensure)f(that)h(no)g(time)g(will)g +(b)r(e)h(w)n(asted)e(in)515 4916 y(spinlo)r(ops)e(will)g(ha)n(v)n(e)g +(to)g(deplo)n(y)g(their)h(o)n(wn)f(implemen)n(tation.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 221 237 +TeXDict begin 221 236 bop 515 203 a Fs(22.13)94 b Fo(<)p +Fs(a)m(vr/eeprom.h)p Fo(>)p Fs(:)41 b(EEPR)m(OM)30 b(handling)829 +b(221)p 515 236 2865 4 v 506 497 a(Note:)676 647 y Fq(All)34 +b(of)g(the)g(read/write)d(functions)j(\034rst)f(mak)n(e)g(sure)g(the)h +(EEPR)n(OM)g(is)g(ready)e(to)676 746 y(b)r(e)h(accessed.)50 +b(Since)33 b(this)g(ma)n(y)e(cause)h(long)g(dela)n(ys)f(if)i(a)f(write) +g(op)r(eration)f(is)i(still)676 846 y(p)r(ending,)43 +b(time-critical)c(applications)g(should)h(\034rst)f(p)r(oll)h(the)g +(EEPR)n(OM)h(e.)73 b(g.)676 946 y(using)41 b Fs(eeprom_is_ready\(\))f +Fq(\(p.)14 b(222\))39 b(b)r(efore)h(attempting)g(an)n(y)f(actual)h +(I/O.)676 1045 y(But)33 b(this)f(functions)g(are)g(not)g(w)n(ait)f(un)n +(til)i(SELFPR)n(GEN)h(in)e(SPMCSR)i(b)r(ecomes)676 1145 +y(zero.)i(Do)27 b(this)h(man)n(ually)-7 b(,)27 b(if)h(y)n(our)e(soft)n +(w)n(ate)h(con)n(tains)g(the)h(Flash)f(burning.)676 1245 +y(As)22 b(these)g(functions)g(mo)r(dify)g(IO)f(registers,)h(they)f(are) +g(kno)n(wn)g(to)h(b)r(e)g(non-reen)n(tran)n(t.)676 1344 +y(If)e(an)n(y)e(of)i(these)f(functions)h(are)e(used)h(from)g(b)r(oth,)j +(standard)c(and)h(in)n(terrupt)g(con)n(text,)676 1444 +y(the)j(applications)f(m)n(ust)h(ensure)g(prop)r(er)f(protection)g +(\(e.g.)35 b(b)n(y)21 b(disabling)h(in)n(terrupts)676 +1543 y(b)r(efore)27 b(accessing)f(them\).)676 1643 y(All)i(write)g +(functions)f(force)g(erase_and_write)e(programming)g(mo)r(de.)515 +1902 y Fs(IAR)32 b(C)f(compatibilit)m(y)g(de\034nes)639 +2083 y Fk(\210)41 b Fq(#de\034ne)33 b Fs(_EEPUT)p Fq(\(addr,)g(v)-5 +b(al\))32 b(eeprom_write_b)n(yte)e(\(\()p Fs(uin)m(t8_t)i +Fh(\003)p Fq(\)\(addr\),)722 2182 y(\()p Fs(uin)m(t8_t)p +Fq(\)\(v)-5 b(al\)\))639 2285 y Fk(\210)41 b Fq(#de\034ne)66 +b Fs(_EEGET)p Fq(\(v)-5 b(ar,)74 b(addr\))65 b(\(v)-5 +b(ar\))65 b(=)g(eeprom_read_b)n(yte)e(\(\(const)722 2385 +y Fs(uin)m(t8_t)28 b Fh(\003)p Fq(\)\(addr\)\))515 2643 +y Fs(De\034nes)639 2824 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(EEMEM)e Fq(__attribute__\(\(section\(".eeprom"\)\)\))639 +2927 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(eeprom_is_ready)p +Fq(\(\))639 3030 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(eeprom_busy_w)m +(ait)p Fq(\(\))g(do)g({})e(while)i(\(!eeprom_is_ready\(\)\))515 +3288 y Fs(F)-8 b(unctions)639 3470 y Fk(\210)41 b Fq(static)53 +b(__A)-7 b(TTR_PURE__)51 b(__inline__)g Fs(uin)m(t8_t)i(eeprom_read_-) +722 3569 y(b)m(yte)29 b Fq(\(const)e Fs(uin)m(t8_t)h +Fh(\003)p Fq(__p\))639 3672 y Fk(\210)41 b Fq(static)g(__A)-7 +b(TTR_PURE__)40 b(__inline__)f Fs(uin)m(t16_t)h(eeprom_read_-)722 +3772 y(w)m(ord)28 b Fq(\(const)g Fs(uin)m(t16_t)f Fh(\003)p +Fq(__p\))639 3874 y Fk(\210)41 b Fq(static)g(__A)-7 b(TTR_PURE__)40 +b(__inline__)f Fs(uin)m(t32_t)h(eeprom_read_-)722 3974 +y(dw)m(ord)28 b Fq(\(const)g Fs(uin)m(t32_t)f Fh(\003)p +Fq(__p\))639 4077 y Fk(\210)41 b Fq(static)23 b(__inline__)e(v)n(oid)h +Fs(eeprom_read_blo)s(c)m(k)h Fq(\(v)n(oid)f Fh(\003)p +Fq(__dst,)h(const)f(v)n(oid)722 4176 y Fh(\003)p Fq(__src,)k(size_t)h +(__n\))639 4279 y Fk(\210)41 b Fq(static)80 b(__inline__)e(v)n(oid)h +Fs(eeprom_write_b)m(yte)g Fq(\()p Fs(uin)m(t8_t)h Fh(\003)p +Fq(__p,)722 4378 y Fs(uin)m(t8_t)28 b Fq(__v)-5 b(alue\))639 +4481 y Fk(\210)41 b Fq(static)65 b(__inline__)f(v)n(oid)g +Fs(eeprom_write_w)m(ord)h Fq(\()p Fs(uin)m(t16_t)g Fh(\003)p +Fq(__p,)722 4581 y Fs(uin)m(t16_t)28 b Fq(__v)-5 b(alue\))639 +4684 y Fk(\210)41 b Fq(static)55 b(__inline__)e(v)n(oid)g +Fs(eeprom_write_dw)m(ord)i Fq(\()p Fs(uin)m(t32_t)f Fh(\003)p +Fq(__p,)722 4783 y Fs(uin)m(t32_t)28 b Fq(__v)-5 b(alue\))639 +4886 y Fk(\210)41 b Fq(static)19 b(__inline__)f(v)n(oid)g +Fs(eeprom_write_blo)s(c)m(k)h Fq(\(const)g(v)n(oid)f +Fh(\003)p Fq(__src,)h(v)n(oid)722 4985 y Fh(\003)p Fq(__dst,)27 +b(size_t)g(__n\))p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 222 238 +TeXDict begin 222 237 bop 515 203 a Fs(22.13)94 b Fo(<)p +Fs(a)m(vr/eeprom.h)p Fo(>)p Fs(:)41 b(EEPR)m(OM)30 b(handling)829 +b(222)p 515 236 2865 4 v 515 523 a(22.13.2)93 b(De\034ne)31 +b(Do)s(cumen)m(tation)515 724 y(22.13.2.1)92 b(#de\034ne)24 +b(_EEGET\(v)-5 b(ar,)52 b(addr\))26 b(\(v)-5 b(ar\))25 +b(=)g(eeprom_read_b)m(yte)515 823 y(\(\(const)32 b(uin)m(t8_t)g +Fh(\003)p Fs(\)\(addr\)\))515 970 y Fq(Read)27 b(a)g(b)n(yte)h(from)f +(EEPR)n(OM.)h(Compatibilit)n(y)g(de\034ne)g(for)f(IAR)h(C.)515 +1233 y Fs(22.13.2.2)92 b(#de\034ne)i(_EEPUT\(addr,)221 +b(v)-5 b(al\))94 b(eeprom_write_b)m(yte)515 1333 y(\(\(uin)m(t8_t)32 +b Fh(\003)p Fs(\)\(addr\),)g(\(uin)m(t8_t\)\(v)-5 b(al\)\))515 +1480 y Fq(W)e(rite)28 b(a)f(b)n(yte)g(to)h(EEPR)n(OM.)g(Compatibilit)n +(y)f(de\034ne)h(for)f(IAR)h(C.)515 1743 y Fs(22.13.2.3)92 +b(#de\034ne)48 b(EEMEM)f(__attribute__\(\(section\(".eeprom"\)\)\))515 +1989 y Fq(A)n(ttribute)28 b(expression)e(causing)h(a)h(v)-5 +b(ariable)26 b(to)i(b)r(e)g(allo)r(cated)f(within)i(the)f(.eeprom)f +(sec-)515 2089 y(tion.)515 2352 y Fs(22.13.2.4)92 b(#de\034ne)28 +b(eeprom_busy_w)m(ait\(\))h(do)g({})f(while)f(\(!eeprom_is_-)515 +2451 y(ready\(\)\))515 2598 y Fq(Lo)r(ops)f(un)n(til)i(the)g(eeprom)f +(is)h(no)f(longer)f(busy)-7 b(.)506 2794 y Fs(Returns:)676 +2943 y Fq(Nothing.)515 3272 y Fs(22.13.2.5)92 b(#de\034ne)31 +b(eeprom_is_ready\(\))506 3494 y(Returns:)676 3643 y +Fq(1)c(if)h(EEPR)n(OM)h(is)e(ready)g(for)g(a)g(new)h(read/write)e(op)r +(eration,)g(0)h(if)h(not.)515 3906 y Fs(22.13.3)93 b(F)-8 +b(unction)32 b(Do)s(cumen)m(tation)515 4107 y(22.13.3.1)92 +b(static)31 b(__inline__)e(v)m(oid)h(eeprom_read_blo)s(c)m(k)h(\(v)m +(oid)f Fh(\003)g Fc(__-)515 4206 y(dst)p Fs(,)63 b(const)32 +b(v)m(oid)g Fh(\003)f Fc(__sr)-5 b(c)p Fs(,)63 b(size_t)31 +b Fc(__n)p Fs(\))70 b Fm([static])515 4353 y Fq(Read)27 +b(a)g(blo)r(c)n(k)g(of)h Fl(__n)33 b Fq(b)n(ytes)27 b(from)g(EEPR)n(OM) +i(address)d Fl(__sr)l(c)31 b Fq(to)d(SRAM)g Fl(__dst)8 +b Fq(.)515 4616 y Fs(22.13.3.2)92 b(static)137 b(__A)-8 +b(TTR_PURE__)139 b(__inline__)d(uin)m(t8_t)515 4716 y(eeprom_read_b)m +(yte)32 b(\(const)g(uin)m(t8_t)g Fh(\003)f Fc(__p)p Fs(\))70 +b Fm([static])515 4863 y Fq(Read)27 b(one)g(b)n(yte)h(from)f(EEPR)n(OM) +h(address)f Fl(__p)5 b Fq(.)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 223 239 +TeXDict begin 223 238 bop 515 203 a Fs(22.14)94 b Fo(<)p +Fs(a)m(vr/fuse.h)p Fo(>)p Fs(:)41 b(F)-8 b(use)31 b(Supp)s(ort)1229 +b(223)p 515 236 2865 4 v 515 523 a(22.13.3.3)92 b(static)121 +b(__A)-8 b(TTR_PURE__)123 b(__inline__)d(uin)m(t32_t)515 +623 y(eeprom_read_dw)m(ord)32 b(\(const)g(uin)m(t32_t)g +Fh(\003)f Fc(__p)p Fs(\))70 b Fm([static])515 770 y Fq(Read)27 +b(one)g(32-bit)g(double)g(w)n(ord)g(\(little)h(endian\))g(from)f(EEPR)n +(OM)i(address)d Fl(__p)5 b Fq(.)515 1033 y Fs(22.13.3.4)92 +b(static)121 b(__A)-8 b(TTR_PURE__)123 b(__inline__)d(uin)m(t16_t)515 +1132 y(eeprom_read_w)m(ord)32 b(\(const)g(uin)m(t16_t)g +Fh(\003)f Fc(__p)p Fs(\))70 b Fm([static])515 1279 y +Fq(Read)27 b(one)g(16-bit)g(w)n(ord)f(\(little)j(endian\))f(from)f +(EEPR)n(OM)h(address)f Fl(__p)5 b Fq(.)515 1542 y Fs(22.13.3.5)92 +b(static)31 b(__inline__)f(v)m(oid)g(eeprom_write_blo)s(c)m(k)g +(\(const)h(v)m(oid)515 1642 y Fh(\003)g Fc(__sr)-5 b(c)p +Fs(,)63 b(v)m(oid)31 b Fh(\003)h Fc(__dst)p Fs(,)62 b(size_t)32 +b Fc(__n)p Fs(\))70 b Fm([static])515 1789 y Fq(W)-7 +b(rite)28 b(a)f(blo)r(c)n(k)g(of)g Fl(__n)33 b Fq(b)n(ytes)27 +b(to)h(EEPR)n(OM)g(address)f Fl(__dst)34 b Fq(from)28 +b Fl(__sr)l(c)5 b Fq(.)506 1987 y Fs(Note:)676 2137 y +Fq(The)41 b(argumen)n(t)f(order)g(is)h(mismatc)n(h)g(with)g(common)g +(functions)g(lik)n(e)f Fs(strcp)m(y\(\))676 2236 y Fq(\(p.)14 +b(207\).)515 2566 y Fs(22.13.3.6)92 b(static)44 b(__inline__)e(v)m(oid) +i(eeprom_write_b)m(yte)f(\(uin)m(t8_t)g Fh(\003)515 2665 +y Fc(__p)p Fs(,)62 b(uin)m(t8_t)32 b Fc(__value)p Fs(\))69 +b Fm([static])515 2812 y Fq(W)-7 b(rite)28 b(a)f(b)n(yte)g +Fl(__value)34 b Fq(to)27 b(EEPR)n(OM)i(address)d Fl(__p)5 +b Fq(.)515 3075 y Fs(22.13.3.7)92 b(static)34 b(__inline__)e(v)m(oid)h +(eeprom_write_dw)m(ord)g(\(uin)m(t32_t)515 3175 y Fh(\003)e +Fc(__p)p Fs(,)62 b(uin)m(t32_t)32 b Fc(__value)p Fs(\))69 +b Fm([static])515 3322 y Fq(W)-7 b(rite)28 b(a)f(32-bit)f(double)i(w)n +(ord)e Fl(__value)34 b Fq(to)28 b(EEPR)n(OM)g(address)e +Fl(__p)5 b Fq(.)515 3585 y Fs(22.13.3.8)92 b(static)29 +b(__inline__)f(v)m(oid)h(eeprom_write_w)m(ord)g(\(uin)m(t16_t)f +Fh(\003)515 3684 y Fc(__p)p Fs(,)62 b(uin)m(t16_t)32 +b Fc(__value)p Fs(\))69 b Fm([static])515 3831 y Fq(W)-7 +b(rite)28 b(a)f(w)n(ord)f Fl(__value)34 b Fq(to)27 b(EEPR)n(OM)i +(address)d Fl(__p)5 b Fq(.)515 4111 y Fn(22.14)112 b +Fd(<)p Fn(a)m(vr/fuse.h)p Fd(>)p Fn(:)51 b(F)-9 b(use)38 +b(Supp)s(ort)506 4302 y Fs(In)m(tro)s(duction)515 4681 +y Fq(The)d(F)-7 b(use)35 b(API)h(allo)n(ws)e(a)h(user)f(to)h(sp)r +(ecify)h(the)f(fuse)g(settings)g(for)g(the)g(sp)r(eci\034c)h(A)-9 +b(VR)515 4781 y(device)34 b(they)g(are)f(compiling)h(for.)56 +b(These)34 b(fuse)g(settings)g(will)h(b)r(e)f(placed)g(in)h(a)e(sp)r +(ecial)515 4881 y(section)27 b(in)h(the)g(ELF)g(output)g(\034le,)g +(after)f(linking.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 224 240 +TeXDict begin 224 239 bop 515 203 a Fs(22.14)94 b Fo(<)p +Fs(a)m(vr/fuse.h)p Fo(>)p Fs(:)41 b(F)-8 b(use)31 b(Supp)s(ort)1229 +b(224)p 515 236 2865 4 v 515 523 a Fq(Programming)21 +b(to)r(ols)j(can)f(tak)n(e)g(adv)-5 b(an)n(tage)22 b(of)h(the)h(fuse)g +(information)f(em)n(b)r(edded)h(in)g(the)515 623 y(ELF)35 +b(\034le,)h(b)n(y)f(extracting)e(this)i(information)f(and)g +(determining)g(if)h(the)g(fuses)g(need)f(to)515 722 y(b)r(e)29 +b(programmed)e(b)r(efore)i(programming)d(the)k(Flash)e(and)h(EEPR)n(OM) +h(memories.)40 b(This)515 822 y(also)29 b(allo)n(ws)h(a)g(single)g(ELF) +i(\034le)f(to)f(con)n(tain)g(all)h(the)g(information)f(needed)h(to)f +(program)515 922 y(an)d(A)-9 b(VR.)515 1068 y(T)i(o)36 +b(use)h(the)g(F)-7 b(use)37 b(API,)h(include)f(the)g +Fo(<)p Fs(a)m(vr/io.h)g Fq(\(p.)14 b(366\))p Fo(>)36 +b Fq(header)g(\034le,)j(whic)n(h)e(in)515 1168 y(turn)22 +b(automatically)f(includes)h(the)h(individual)f(I/O)g(header)f(\034le)h +(and)h(the)f Fo(<)p Fs(a)m(vr/fuse.h)515 1268 y Fq(\(p.)14 +b(362\))p Fo(>)j Fq(\034le.)34 b(These)18 b(other)h(t)n(w)n(o)e +(\034les)i(pro)n(vides)e(ev)n(erything)h(necessary)e(to)j(set)g(the)g +(A)-9 b(VR)515 1367 y(fuses.)506 1551 y Fs(F)h(use)32 +b(API)515 1917 y Fq(Eac)n(h)c(I/O)g(header)g(\034le)h(m)n(ust)g +(de\034ne)h(the)f(FUSE_MEMOR)-7 b(Y_SIZE)30 b(macro)d(whic)n(h)i(is)515 +2017 y(de\034ned)f(to)f(the)h(n)n(um)n(b)r(er)f(of)h(fuse)g(b)n(ytes)f +(that)h(exist)f(in)h(the)g(A)-9 b(VR)28 b(device.)515 +2164 y(A)40 b(new)h(t)n(yp)r(e,)j(__fuse_t,)e(is)f(de\034ned)f(as)g(a)g +(structure.)75 b(The)40 b(n)n(um)n(b)r(er)g(of)g(\034elds)h(in)515 +2264 y(this)i(structure)f(are)g(determined)h(b)n(y)f(the)h(n)n(um)n(b)r +(er)g(of)f(fuse)h(b)n(ytes)g(in)g(the)g(FUSE_-)515 2363 +y(MEMOR)-7 b(Y_SIZE)28 b(macro.)515 2510 y(If)38 b(FUSE_MEMOR)-7 +b(Y_SIZE)38 b(==)f(1,)i(there)e(is)g(only)g(a)g(single)g(\034eld:)57 +b(b)n(yte,)40 b(of)d(t)n(yp)r(e)515 2610 y(unsigned)27 +b(c)n(har.)515 2757 y(If)j(FUSE_MEMOR)-7 b(Y_SIZE)32 +b(==)d(2,)h(there)g(are)g(t)n(w)n(o)f(\034elds:)42 b(lo)n(w,)30 +b(and)g(high,)h(of)f(t)n(yp)r(e)515 2856 y(unsigned)d(c)n(har.)515 +3003 y(If)38 b(FUSE_MEMOR)-7 b(Y_SIZE)38 b(==)f(3,)i(there)e(are)g +(three)g(\034elds:)56 b(lo)n(w,)40 b(high,)f(and)f(ex-)515 +3103 y(tended,)28 b(of)f(t)n(yp)r(e)h(unsigned)f(c)n(har.)515 +3250 y(If)h(FUSE_MEMOR)-7 b(Y_SIZE)29 b Fo(>)f Fq(3,)g(there)g(is)g(a)f +(single)h(\034eld:)38 b(b)n(yte,)28 b(whic)n(h)g(is)g(an)f(arra)n(y)515 +3349 y(of)g(unsigned)h(c)n(har)e(with)i(the)g(size)f(of)h(the)g(arra)n +(y)d(b)r(eing)i(FUSE_MEMOR)-7 b(Y_SIZE.)515 3496 y(A)26 +b(con)n(v)n(enience)f(macro,)g(FUSEMEM,)j(is)e(de\034ned)h(as)e(a)h +(GCC)g(attribute)g(for)g(a)g(custom-)515 3596 y(named)h(section)g(of)h +(".fuse".)515 3743 y(A)34 b(con)n(v)n(enience)f(macro,)h(FUSES,)i(is)e +(de\034ned)g(that)h(declares)e(a)g(v)-5 b(ariable,)35 +b(__fuse,)g(of)515 3842 y(t)n(yp)r(e)27 b(__fuse_t)g(with)h(the)g +(attribute)g(de\034ned)g(b)n(y)f(FUSEMEM.)i(This)f(v)-5 +b(ariable)27 b(allo)n(ws)515 3942 y(the)h(end)f(user)g(to)h(easily)f +(set)g(the)h(fuse)g(data.)506 4141 y Fs(Note:)676 4291 +y Fq(If)e(a)e(device-sp)r(eci\034c)h(I/O)f(header)g(\034le)h(has)g +(previously)e(de\034ned)j(FUSEMEM,)h(then)676 4390 y(FUSEMEM)k(is)d +(not)h(rede\034ned.)39 b(If)29 b(a)g(device-sp)r(eci\034c)f(I/O)f +(header)h(\034le)h(has)f(previ-)676 4490 y(ously)f(de\034ned)h(FUSES,)h +(then)f(FUSES)h(is)e(not)h(rede\034ned.)515 4707 y(Eac)n(h)f(A)-9 +b(VR)28 b(device)g(I/O)e(header)h(\034le)h(has)f(a)g(set)h(of)f +(de\034ned)h(macros)e(whic)n(h)i(sp)r(ecify)g(the)515 +4807 y(actual)h(fuse)h(bits)h(a)n(v)-5 b(ailable)28 b(on)i(that)g +(device.)44 b(The)30 b(A)-9 b(VR)31 b(fuses)f(ha)n(v)n(e)e(in)n(v)n +(erted)h(v)-5 b(alues,)515 4907 y(logical)31 b(1)h(for)g(an)g +(unprogrammed)f(\(disabled\))i(bit)g(and)f(logical)f(0)h(for)g(a)g +(programmed)515 5006 y(\(enabled\))c(bit.)38 b(The)28 +b(de\034ned)h(macros)d(for)h(eac)n(h)g(individual)h(fuse)h(bit)f +(represen)n(t)f(this)h(in)p 515 5179 V 515 5255 a Fp(Generated)d(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 225 241 +TeXDict begin 225 240 bop 515 203 a Fs(22.14)94 b Fo(<)p +Fs(a)m(vr/fuse.h)p Fo(>)p Fs(:)41 b(F)-8 b(use)31 b(Supp)s(ort)1229 +b(225)p 515 236 2865 4 v 515 523 a Fq(their)34 b(de\034nition)g(b)n(y)g +(a)f(bit-wise)h(in)n(v)n(ersion)f(of)h(a)f(mask.)56 b(F)-7 +b(or)33 b(example,)i(the)g(FUSE_-)515 623 y(EESA)-9 b(VE)29 +b(fuse)f(in)g(the)g(A)-7 b(Tmega128)25 b(is)j(de\034ned)g(as:)656 +826 y Fj(#define)37 b(FUSE_EESAVE)215 b(~_BV\(3\))506 +1023 y Fs(Note:)676 1173 y Fq(The)27 b(_BV)g(macro)f(creates)g(a)h(bit) +h(mask)e(from)h(a)g(bit)g(n)n(um)n(b)r(er.)37 b(It)27 +b(is)g(then)h(in)n(v)n(erted)676 1273 y(to)g(represen)n(t)e(logical)g +(v)-5 b(alues)27 b(for)g(a)g(fuse)h(memory)f(b)n(yte.)515 +1497 y(T)-7 b(o)33 b(com)n(bine)g(the)h(fuse)f(bits)h(macros)e +(together)g(to)i(represen)n(t)e(a)h(whole)g(fuse)g(b)n(yte,)i(use)515 +1597 y(the)28 b(bit)n(wise)f(AND)i(op)r(erator,)d(lik)n(e)h(so:)656 +1800 y Fj(\(FUSE_BOOTSZ0)39 b(&)c(FUSE_BOOTSZ1)k(&)c(FUSE_EESAVE)k(&)c +(FUSE_SPIEN)j(&)e(FUSE_JTAGEN\))515 2025 y Fq(Eac)n(h)29 +b(device)g(I/O)f(header)g(\034le)i(also)e(de\034nes)h(macros)f(that)h +(pro)n(vide)f(default)i(v)-5 b(alues)29 b(for)515 2125 +y(eac)n(h)f(fuse)i(b)n(yte)f(that)h(is)f(a)n(v)-5 b(ailable.)41 +b(LFUSE_DEF)-9 b(A)n(UL)i(T)31 b(is)e(de\034ned)h(for)f(a)g(Lo)n(w)f(F) +-7 b(use)515 2224 y(b)n(yte.)35 b(HFUSE_DEF)-9 b(A)n(UL)i(T)27 +b(is)d(de\034ned)h(for)f(a)g(High)h(F)-7 b(use)24 b(b)n(yte.)36 +b(EFUSE_DEF)-9 b(A)n(UL)i(T)515 2324 y(is)27 b(de\034ned)h(for)f(an)g +(Extended)i(F)-7 b(use)27 b(b)n(yte.)515 2471 y(If)32 +b(FUSE_MEMOR)-7 b(Y_SIZE)32 b Fo(>)g Fq(3,)g(then)g(the)g(I/O)e(header) +h(\034le)g(de\034nes)h(macros)e(that)515 2570 y(pro)n(vide)25 +b(default)i(v)-5 b(alues)27 b(for)f(eac)n(h)g(fuse)h(b)n(yte)f(lik)n(e) +h(so:)35 b(FUSE0_DEF)-9 b(A)n(UL)i(T)28 b(FUSE1_-)515 +2670 y(DEF)-9 b(A)n(UL)i(T)28 b(FUSE2_DEF)-9 b(A)n(UL)i(T)29 +b(FUSE3_DEF)-9 b(A)n(UL)i(T)29 b(FUSE4_DEF)-9 b(A)n(UL)i(T)28 +b(....)506 2880 y Fs(API)33 b(Usage)f(Example)515 3270 +y Fq(Putting)c(all)g(of)f(this)h(together)f(is)g(easy)-7 +b(.)36 b(Using)27 b(C99's)g(designated)g(initializers:)656 +3474 y Fj(#include)37 b()656 3631 y(FUSES)f(=)656 +3710 y({)797 3789 y(.low)g(=)g(LFUSE_DEFAULT,)797 3868 +y(.high)h(=)e(\(FUSE_BOOTSZ0)k(&)d(FUSE_BOOTSZ1)i(&)e(FUSE_EESAVE)i(&)e +(FUSE_SPIEN)i(&)d(FUSE_JTAGEN\),)797 3947 y(.extended)j(=)d +(EFUSE_DEFAULT,)656 4026 y(};)656 4184 y(int)h(main\(void\))656 +4262 y({)797 4341 y(return)h(0;)656 4420 y(})515 4645 +y Fq(Or,)27 b(using)g(the)h(v)-5 b(ariable)26 b(directly)h(instead)h +(of)f(the)h(FUSES)h(macro,)656 4848 y Fj(#include)37 +b()656 5006 y(__fuse_t)g(__fuse)g(__attribute__\(\(section)42 +b(\(".fuse"\)\)\))c(=)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 226 242 +TeXDict begin 226 241 bop 515 203 a Fs(22.14)94 b Fo(<)p +Fs(a)m(vr/fuse.h)p Fo(>)p Fs(:)41 b(F)-8 b(use)31 b(Supp)s(ort)1229 +b(226)p 515 236 2865 4 v 656 523 a Fj({)797 602 y(.low)36 +b(=)g(LFUSE_DEFAULT,)797 681 y(.high)h(=)e(\(FUSE_BOOTSZ0)k(&)d +(FUSE_BOOTSZ1)i(&)e(FUSE_EESAVE)i(&)e(FUSE_SPIEN)i(&)d(FUSE_JTAGEN\),) +797 760 y(.extended)j(=)d(EFUSE_DEFAULT,)656 839 y(};)656 +996 y(int)h(main\(void\))656 1075 y({)797 1154 y(return)h(0;)656 +1233 y(})515 1439 y Fq(If)31 b(y)n(ou)e(are)h(compiling)g(in)g(C++,)h +(y)n(ou)e(cannot)h(use)g(the)h(designated)f(in)n(tializers)f(so)h(y)n +(ou)515 1539 y(m)n(ust)d(do:)656 1724 y Fj(#include)37 +b()656 1882 y(FUSES)f(=)656 1961 y({)797 2040 +y(LFUSE_DEFAULT,)j(//)d(.low)797 2119 y(\(FUSE_BOOTSZ0)j(&)c +(FUSE_BOOTSZ1)k(&)c(FUSE_EESAVE)k(&)c(FUSE_SPIEN)j(&)e(FUSE_JTAGEN\),)j +(//)d(.high)797 2198 y(EFUSE_DEFAULT,)j(//)d(.extended)656 +2276 y(};)656 2434 y(int)g(main\(void\))656 2513 y({)797 +2592 y(return)h(0;)656 2671 y(})515 2877 y Fq(Ho)n(w)n(ev)n(er)23 +b(there)j(are)f(a)g(n)n(um)n(b)r(er)g(of)h(ca)n(v)n(eats)e(that)i(y)n +(ou)f(need)h(to)f(b)r(e)h(a)n(w)n(are)e(of)i(to)f(use)h(this)515 +2977 y(API)i(prop)r(erly)-7 b(.)515 3124 y(Be)24 b(sure)f(to)h(include) +g Fo(<)p Fs(a)m(vr/io.h)g Fq(\(p.)14 b(366\))p Fo(>)23 +b Fq(to)g(get)h(all)g(of)g(the)g(de\034nitions)g(for)g(the)g(API.)515 +3223 y(The)f(FUSES)h(macro)d(de\034nes)i(a)g(global)f(v)-5 +b(ariable)21 b(to)i(store)f(the)h(fuse)h(data.)34 b(This)23 +b(v)-5 b(ariable)515 3323 y(is)25 b(assigned)e(to)i(its)g(o)n(wn)g +(link)n(er)f(section.)35 b(Assign)25 b(the)g(desired)f(fuse)h(v)-5 +b(alues)25 b(immediately)515 3422 y(in)j(the)g(v)-5 b(ariable)26 +b(initialization.)515 3569 y(The)37 b(.fuse)h(section)f(in)h(the)g(ELF) +g(\034le)g(will)g(get)f(its)h(v)-5 b(alues)37 b(from)g(the)h(initial)g +(v)-5 b(ariable)515 3669 y(assignmen)n(t)23 b(ONL)-7 +b(Y.)25 b(This)g(means)f(that)h(y)n(ou)f(can)g(NOT)h(assign)e(v)-5 +b(alues)25 b(to)f(this)h(v)-5 b(ariable)515 3769 y(in)28 +b(functions)f(and)h(the)g(new)f(v)-5 b(alues)28 b(will)f(not)h(b)r(e)g +(put)g(in)n(to)f(the)h(ELF)g(.fuse)g(section.)515 3915 +y(The)20 b(global)f(v)-5 b(ariable)19 b(is)h(declared)f(in)h(the)h +(FUSES)g(macro)e(has)g(t)n(w)n(o)h(leading)f(underscores,)515 +4015 y(whic)n(h)27 b(means)g(that)h(it)g(is)g(reserv)n(ed)e(for)h(the)h +("implemen)n(tation",)e(meaning)h(the)h(library)-7 b(,)515 +4115 y(so)27 b(it)h(will)f(not)h(con\035ict)f(with)i(a)e(user-named)f +(v)-5 b(ariable.)515 4262 y(Y)e(ou)29 b(m)n(ust)h(initialize)f(ALL)h +(\034elds)g(in)f(the)h(__fuse_t)f(structure.)42 b(This)29 +b(is)h(b)r(ecause)f(the)515 4361 y(fuse)34 b(bits)g(in)h(all)f(b)n +(ytes)f(default)i(to)f(a)g(logical)e(1,)k(meaning)d(unprogrammed.)55 +b(Normal)515 4461 y(uninitialized)30 b(data)g(defaults)h(to)f(all)g(lo) +r(cgial)f(zeros.)44 b(So)30 b(it)h(is)f(vital)g(that)h(all)f(fuse)g(b)n +(ytes)515 4560 y(are)f(initialized,)j(ev)n(en)e(with)h(default)f(data.) +45 b(If)31 b(they)g(are)e(not,)j(then)f(the)f(fuse)h(bits)g(ma)n(y)515 +4660 y(not)c(programmed)f(to)h(the)h(desired)f(settings.)515 +4807 y(Be)d(sure)g(to)g(ha)n(v)n(e)g(the)g(-mmcu=)p Fl(devic)l(e)32 +b Fq(\035ag)24 b(in)h(y)n(our)e(compile)h(command)g(line)h(and)f(y)n +(our)515 4907 y(link)n(er)h(command)g(line)h(to)g(ha)n(v)n(e)f(the)h +(correct)f(device)g(selected)h(and)g(to)g(ha)n(v)n(e)e(the)j(correct) +515 5006 y(I/O)f(header)h(\034le)h(included)g(when)g(y)n(ou)e(include)i +Fo(<)p Fs(a)m(vr/io.h)f Fq(\(p.)14 b(366\))p Fo(>)p Fq(.)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 227 243 +TeXDict begin 227 242 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(227)p 515 236 2865 4 v 515 523 a Fq(Y)-7 b(ou)26 b(can)g(prin)n(t)g +(out)h(the)f(con)n(ten)n(ts)g(of)g(the)h(.fuse)g(section)f(in)g(the)h +(ELF)g(\034le)g(b)n(y)f(using)g(this)515 623 y(command)h(line:)656 +797 y Fj(avr-objdump)38 b(-s)e(-j)g(.fuse)g()515 +992 y Fq(The)c(section)g(con)n(ten)n(ts)f(sho)n(ws)g(the)h(address)f +(on)h(the)h(left,)h(then)e(the)h(data)f(going)e(from)515 +1092 y(lo)n(w)n(er)26 b(address)g(to)h(a)h(higher)e(address,)h(left)h +(to)f(righ)n(t.)515 1366 y Fn(22.15)112 b Fd(<)p Fn(a)m(vr/in)m +(terrupt.h)p Fd(>)p Fn(:)50 b(In)m(terrupts)515 1566 +y Fs(22.15.1)93 b(Detailed)31 b(Description)506 1701 +y(Note:)676 1851 y Fq(This)24 b(discussion)f(of)h(in)n(terrupts)g(w)n +(as)f(originally)f(tak)n(en)i(from)f(Ric)n(h)h(Nesw)n(old's)g(do)r(c-) +676 1951 y(umen)n(t.)37 b(See)28 b Fs(A)m(c)m(kno)m(wledgmen)m(ts)g +Fq(\(p.)14 b(122\).)515 2208 y Fs(In)m(tro)s(duction)39 +b(to)g(a)m(vr-lib)s(c's)g(in)m(terrupt)g(handling)83 +b Fq(It's)34 b(nearly)e(imp)r(ossible)i(to)515 2307 y(\034nd)22 +b(compilers)f(that)i(agree)d(on)i(ho)n(w)f(to)h(handle)g(in)n(terrupt)g +(co)r(de.)35 b(Since)22 b(the)h(C)f(language)515 2407 +y(tries)e(to)g(sta)n(y)f(a)n(w)n(a)n(y)g(from)g(mac)n(hine)h(dep)r +(enden)n(t)h(details,)h(eac)n(h)d(compiler)h(writer)g(is)g(forced)515 +2506 y(to)27 b(design)g(their)h(metho)r(d)g(of)f(supp)r(ort.)515 +2653 y(In)36 b(the)g(A)-9 b(VR-GCC)35 b(en)n(vironmen)n(t,)i(the)f(v)n +(ector)f(table)g(is)h(prede\034ned)f(to)h(p)r(oin)n(t)g(to)f(in-)515 +2753 y(terrupt)f(routines)g(with)i(predetermined)e(names.)58 +b(By)35 b(using)f(the)h(appropriate)e(name,)515 2853 +y(y)n(our)22 b(routine)g(will)i(b)r(e)f(called)g(when)g(the)h(corresp)r +(onding)d(in)n(terrupt)i(o)r(ccurs.)34 b(The)23 b(device)515 +2952 y(library)31 b(pro)n(vides)h(a)g(set)h(of)g(default)h(in)n +(terrupt)e(routines,)i(whic)n(h)f(will)g(get)g(used)f(if)i(y)n(ou)515 +3052 y(don't)27 b(de\034ne)h(y)n(our)f(o)n(wn.)515 3199 +y(P)n(atc)n(hing)32 b(in)n(to)h(the)g(v)n(ector)e(table)i(is)g(only)f +(one)h(part)f(of)h(the)g(problem.)52 b(The)33 b(compiler)515 +3298 y(uses,)i(b)n(y)f(con)n(v)n(en)n(tion,)h(a)f(set)g(of)g(registers) +f(when)h(it's)h(normally)e(executing)h(compiler-)515 +3398 y(generated)20 b(co)r(de.)34 b(It's)21 b(imp)r(ortan)n(t)g(that)h +(these)f(registers,)f(as)h(w)n(ell)g(as)f(the)i(status)f(register,)515 +3498 y(get)26 b(sa)n(v)n(ed)f(and)i(restored.)35 b(The)26 +b(extra)g(co)r(de)g(needed)h(to)f(do)h(this)f(is)h(enabled)f(b)n(y)h +(tagging)515 3597 y(the)h(in)n(terrupt)f(function)h(with)g +Fm(__attribute__\(\(s)o(ig)o(nal)o(\)\))o Fq(.)515 3744 +y(These)21 b(details)h(seem)f(to)h(mak)n(e)e(in)n(terrupt)i(routines)f +(a)g(little)h(messy)-7 b(,)23 b(but)f(all)g(these)f(details)515 +3844 y(are)28 b(handled)i(b)n(y)g(the)g(In)n(terrupt)f(API.)h(An)h(in)n +(terrupt)e(routine)g(is)h(de\034ned)g(with)g Fs(ISR\(\))515 +3943 y Fq(\(p.)14 b(253\).)41 b(This)29 b(macro)f(register)f(and)i +(mark)f(the)i(routine)f(as)f(an)h(in)n(terrupt)g(handler)g(for)515 +4043 y(the)d(sp)r(eci\034ed)g(p)r(eripheral.)36 b(The)26 +b(follo)n(wing)f(is)h(an)g(example)f(de\034nition)i(of)f(a)f(handler)h +(for)515 4143 y(the)i(ADC)g(in)n(terrupt.)515 4317 y +Fj(#include)37 b()515 4475 y(ISR\(ADC_vect\))515 +4554 y({)656 4633 y(//)f(user)g(code)g(here)515 4711 +y(})515 4907 y Fq(Refer)23 b(to)g(the)h(c)n(hapter)e(explaining)i +Fs(assem)m(bler)i(programming)d Fq(\(p.)14 b(34\))23 +b(for)g(an)g(expla-)515 5006 y(nation)k(ab)r(out)g(in)n(terrupt)h +(routines)f(written)g(solely)g(in)h(assem)n(bler)e(language.)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 228 244 +TeXDict begin 228 243 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(228)p 515 236 2865 4 v 515 523 a(Catc)m(h-all)48 b(in)m(terrupt)g(v)m +(ector)84 b Fq(If)41 b(an)g(unexp)r(ected)h(in)n(terrupt)f(o)r(ccurs)f +(\(in)n(terrupt)515 623 y(is)f(enabled)g(and)g(no)g(handler)f(is)i +(installed,)i(whic)n(h)d(usually)g(indicates)f(a)h(bug\),)k(then)515 +722 y(the)34 b(default)h(action)f(is)g(to)g(reset)g(the)g(device)g(b)n +(y)g(jumping)h(to)f(the)h(reset)e(v)n(ector.)56 b(Y)-7 +b(ou)515 822 y(can)26 b(o)n(v)n(erride)e(this)j(b)n(y)f(supplying)g(a)g +(function)h(named)f Fm(BADISR_vect)c Fq(whic)n(h)27 b(should)f(b)r(e) +515 922 y(de\034ned)k(with)h Fs(ISR\(\))f Fq(\(p.)14 +b(253\))29 b(as)h(suc)n(h.)44 b(\(The)30 b(name)g(BADISR_v)n(ect)g(is)g +(actually)f(an)515 1021 y(alias)j(for)g(__v)n(ector_default.)50 +b(The)33 b(latter)g(m)n(ust)g(b)r(e)g(used)g(inside)g(assem)n(bly)e(co) +r(de)i(in)515 1121 y(case)26 b Fo(<)p Fs(a)m(vr/in)m(terrupt.h)j +Fq(\(p.)14 b(362\))p Fo(>)26 b Fq(is)i(not)f(included.\))515 +1297 y Fj(#include)37 b()515 1454 y +(ISR\(BADISR_vect\))515 1533 y({)656 1612 y(//)f(user)g(code)g(here)515 +1691 y(})515 1948 y Fs(Nested)44 b(in)m(terrupts)83 b +Fq(The)40 b(A)-9 b(VR)39 b(hardw)n(are)f(clears)g(the)h(global)f(in)n +(terrupt)h(\035ag)g(in)515 2048 y(SREG)34 b(b)r(efore)e(en)n(tering)g +(an)h(in)n(terrupt)g(v)n(ector.)51 b(Th)n(us,)35 b(normally)c(in)n +(terrupts)i(will)g(re-)515 2147 y(main)h(disabled)g(inside)g(the)h +(handler)e(un)n(til)i(the)g(handler)e(exits,)j(where)e(the)g(RETI)h +(in-)515 2247 y(struction)19 b(\(that)h(is)g(emitted)g(b)n(y)f(the)h +(compiler)f(as)g(part)h(of)f(the)h(normal)f(function)h(epilogue)515 +2347 y(for)29 b(an)h(in)n(terrupt)g(handler\))f(will)h(ev)n(en)n +(tually)f(re-enable)g(further)h(in)n(terrupts.)43 b(F)-7 +b(or)30 b(that)515 2446 y(reason,)g(in)n(terrupt)h(handlers)f(normally) +g(do)h(not)g(nest.)48 b(F)-7 b(or)30 b(most)h(in)n(terrupt)g(handlers,) +515 2546 y(this)i(is)h(the)g(desired)f(b)r(eha)n(viour,)g(for)g(some)g +(it)h(is)f(ev)n(en)g(required)g(in)h(order)e(to)h(prev)n(en)n(t)515 +2646 y(in\034nitely)26 b(recursiv)n(e)f(in)n(terrupts)g(\(lik)n(e)h +(UAR)-7 b(T)27 b(in)n(terrupts,)f(or)f(lev)n(el-triggered)f(external) +515 2745 y(in)n(terrupts\).)45 b(In)31 b(rare)e(circumstances)g(though) +i(it)g(migh)n(t)f(b)r(e)h(desired)f(to)g(re-enable)g(the)515 +2845 y(global)j(in)n(terrupt)g(\035ag)g(as)h(early)e(as)i(p)r(ossible)f +(in)h(the)h(in)n(terrupt)e(handler,)i(in)g(order)d(to)515 +2944 y(not)26 b(defer)g(an)n(y)f(other)h(in)n(terrupt)g(more)f(than)i +(absolutely)e(needed.)37 b(This)26 b(could)g(b)r(e)g(done)515 +3044 y(using)j(an)g Fs(sei\(\))g Fq(\(p.)14 b(255\))29 +b(instruction)g(righ)n(t)g(at)g(the)h(b)r(eginning)g(of)f(the)h(in)n +(terrupt)g(han-)515 3144 y(dler,)24 b(but)h(this)g(still)f(lea)n(v)n +(es)f(few)h(instructions)g(inside)g(the)h(compiler-generated)d +(function)515 3243 y(prologue)g(to)h(run)h(with)g(global)f(in)n +(terrupts)g(disabled.)35 b(The)24 b(compiler)f(can)h(b)r(e)g +(instructed)515 3343 y(to)32 b(insert)g(an)f(SEI)i(instruction)f(righ)n +(t)g(at)g(the)g(b)r(eginning)g(of)g(an)g(in)n(terrupt)g(handler)f(b)n +(y)515 3443 y(declaring)26 b(the)i(handler)f(the)h(follo)n(wing)e(w)n +(a)n(y:)515 3618 y Fj(ISR\(XXX_vect,)39 b(ISR_NOBLOCK\))515 +3697 y({)585 3776 y(...)515 3855 y(})515 4052 y Fq(where)33 +b Fm(XXX_vect)d Fq(is)j(the)h(name)f(of)g(a)g(v)-5 b(alid)34 +b(in)n(terrupt)f(v)n(ector)f(for)h(the)g(MCU)h(t)n(yp)r(e)g(in)515 +4151 y(question,)27 b(as)g(explained)g(b)r(elo)n(w.)515 +4408 y Fs(T)-8 b(w)m(o)27 b(v)m(ectors)h(sharing)e(the)h(same)f(co)s +(de)83 b Fq(In)23 b(some)g(circumstances,)g(the)h(actions)e(to)515 +4508 y(b)r(e)j(tak)n(en)f(up)r(on)i(t)n(w)n(o)e(di\033eren)n(t)h(in)n +(terrupts)f(migh)n(t)h(b)r(e)g(completely)g(iden)n(tical)g(so)f(a)h +(single)515 4608 y(implemen)n(tation)31 b(for)f(the)i(ISR)f(w)n(ould)g +(su\036ce.)48 b(F)-7 b(or)30 b(example,)i(pin-c)n(hange)e(in)n +(terrupts)515 4707 y(arriving)23 b(from)h(t)n(w)n(o)g(di\033eren)n(t)h +(p)r(orts)f(could)g(logically)g(signal)f(an)i(ev)n(en)n(t)f(that)h(is)g +(indep)r(en-)515 4807 y(den)n(t)g(from)g(the)g(actual)f(p)r(ort)h +(\(and)g(th)n(us)g(in)n(terrupt)g(v)n(ector\))f(where)g(it)i(happ)r +(ened.)36 b(Shar-)515 4907 y(ing)f(in)n(terrupt)f(v)n(ector)g(co)r(de)h +(can)f(b)r(e)i(accomplished)e(using)h(the)g Fs(ISR_ALIASOF\(\))515 +5006 y Fq(\(p.)14 b(254\))26 b(attribute)i(to)g(the)g(ISR)f(macro:)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 229 245 +TeXDict begin 229 244 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(229)p 515 236 2865 4 v 515 523 a Fj(ISR\(PCINT0_vect\))515 +602 y({)585 681 y(...)585 760 y(//)36 b(Code)g(to)g(handle)h(the)f +(event.)515 839 y(})515 996 y(ISR\(PCINT1_vect,)j +(ISR_ALIASOF\(PCINT0_vect)q(\)\);)506 1168 y Fs(Note:)676 +1318 y Fq(There)27 b(is)h(no)f(b)r(o)r(dy)h(to)f(the)h(aliased)f(ISR.) +515 1514 y(Note)k(that)g(the)g Fs(ISR_ALIASOF\(\))i Fq(\(p.)14 +b(254\))30 b(feature)g(requires)g(GCC)h(4.2)f(or)g(ab)r(o)n(v)n(e)515 +1614 y(\(or)36 b(a)h(patc)n(hed)g(v)n(ersion)e(of)i(GCC)h(4.1.x\).)64 +b(See)37 b(the)h(do)r(cumen)n(tation)f(of)g(the)g Fs(ISR_-)515 +1713 y(ALIAS\(\))27 b Fq(\(p.)14 b(253\))25 b(macro)g(for)h(an)g +(implemen)n(tation)g(whic)n(h)g(is)g(less)f(elegan)n(t)h(but)g(could) +515 1813 y(b)r(e)i(applied)f(to)h(all)f(compiler)g(v)n(ersions.)515 +2070 y Fs(Empt)m(y)i(in)m(terrupt)h(service)f(routines)82 +b Fq(In)26 b(rare)e(circumstances,)g(in)i(in)n(terrupt)f(v)n(ec-)515 +2170 y(tor)30 b(do)r(es)g(not)g(need)h(an)n(y)f(co)r(de)g(to)g(b)r(e)h +(implemen)n(ted)g(at)g(all.)45 b(The)31 b(v)n(ector)e(m)n(ust)h(b)r(e)h +(de-)515 2270 y(clared)18 b(an)n(yw)n(a)n(y)-7 b(,)18 +b(so)g(when)h(the)g(in)n(terrupt)g(triggers)e(it)i(w)n(on't)f(execute)h +(the)g(BADISR_v)n(ect)515 2369 y(co)r(de)27 b(\(whic)n(h)h(b)n(y)f +(default)h(restarts)e(the)i(application\).)515 2516 y(This)d(could)f +(for)h(example)f(b)r(e)h(the)h(case)e(for)g(in)n(terrupts)g(that)i(are) +e(solely)g(enabled)g(for)h(the)515 2616 y(purp)r(ose)i(of)g(getting)g +(the)h(con)n(troller)e(out)i(of)f(sleep_mo)r(de\(\).)515 +2763 y(A)j(handler)f(for)g(suc)n(h)h(an)f(in)n(terrupt)h(v)n(ector)e +(can)h(b)r(e)h(declared)f(using)h(the)g Fs(EMPTY_-)515 +2862 y(INTERR)m(UPT\(\))e Fq(\(p.)14 b(253\))27 b(macro:)515 +3038 y Fj(EMPTY_INTERRUPT\(ADC_vect\))q(;)506 3210 y +Fs(Note:)676 3359 y Fq(There)g(is)h(no)f(b)r(o)r(dy)h(to)f(this)h +(macro.)515 3617 y Fs(Man)m(ually)d(de\034ned)f(ISRs)83 +b Fq(In)22 b(some)e(circumstances,)i(the)g(compiler-generated)d(pro-) +515 3716 y(logue)24 b(and)h(epilogue)f(of)h(the)g(ISR)h(migh)n(t)f(not) +g(b)r(e)g(optimal)g(for)f(the)i(job,)g(and)e(a)h(man)n(ually)515 +3816 y(de\034ned)f(ISR)h(could)f(b)r(e)h(considered)e(particularly)g +(to)h(sp)r(eedup)h(the)f(in)n(terrupt)g(handling.)515 +3963 y(One)k(solution)f(to)h(this)h(could)f(b)r(e)h(to)f(implemen)n(t)g +(the)h(en)n(tire)f(ISR)g(as)g(man)n(ual)f(assem)n(bly)515 +4062 y(co)r(de)h(in)h(a)f(separate)e(\(assem)n(bly\))i(\034le.)40 +b(See)28 b Fs(Com)m(bining)j(C)i(and)g(assem)m(bly)f(source)515 +4162 y(\034les)26 b Fq(\(p.)14 b(309\))27 b(for)g(an)g(example)g(of)h +(ho)n(w)f(to)g(implemen)n(t)h(it)g(that)g(w)n(a)n(y)-7 +b(.)515 4309 y(Another)28 b(solution)f(is)h(to)g(still)g(implemen)n(t)h +(the)f(ISR)h(in)f(C)g(language)e(but)j(tak)n(e)e(o)n(v)n(er)g(the)515 +4408 y(compiler's)f(job)h(of)f(generating)g(the)h(prologue)e(and)i +(epilogue.)35 b(This)27 b(can)g(b)r(e)g(done)f(using)515 +4508 y(the)19 b(ISR_NAKED)h(attribute)f(to)g(the)g Fs(ISR\(\))g +Fq(\(p.)14 b(253\))19 b(macro.)32 b(Note)19 b(that)g(the)h(compiler)515 +4608 y(do)r(es)28 b(not)h(generate)f Fl(anything)37 b +Fq(as)28 b(prologue)f(or)h(epilogue,)h(so)f(the)h(\034nal)g +Fs(reti\(\))g Fq(\(p.)14 b(255\))515 4707 y(m)n(ust)22 +b(b)r(e)g(pro)n(vided)f(b)n(y)g(the)h(actual)g(implemen)n(tation.)35 +b(SREG)22 b(m)n(ust)g(b)r(e)h(man)n(ually)e(sa)n(v)n(ed)515 +4807 y(if)31 b(the)h(ISR)f(co)r(de)g(mo)r(di\034es)g(it,)h(and)f(the)h +(compiler-implied)e(assumption)g(of)h Fm(__zero_-)515 +4907 y(reg__)c Fq(alw)n(a)n(ys)h(b)r(eing)h(0)g(could)g(b)r(e)h(wrong)e +(\(e.)42 b(g.)g(when)30 b(in)n(terrupting)f(righ)n(t)f(after)h(of)g(a) +515 5006 y(MUL)f(instruction\).)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 230 246 +TeXDict begin 230 245 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(230)p 515 236 2865 4 v 515 523 a Fj(ISR\(TIMER1_OVF_vect,)41 +b(ISR_NAKED\))515 602 y({)585 681 y(PORTB)c(|=)f(_BV\(0\);)72 +b(//)36 b(results)h(in)f(SBI)g(which)h(does)f(not)g(affect)h(SREG)585 +760 y(reti\(\);)515 839 y(})515 1102 y Fs(Cho)s(osing)f(the)i(v)m +(ector:)56 b(In)m(terrupt)39 b(v)m(ector)h(names)82 b +Fq(The)33 b(in)n(terrupt)g(is)g(c)n(hosen)515 1201 y(b)n(y)27 +b(supplying)g(one)g(of)h(the)g(sym)n(b)r(ols)f(in)h(follo)n(wing)e +(table.)515 1348 y(There)19 b(are)f(curren)n(tly)g(t)n(w)n(o)h +(di\033eren)n(t)g(st)n(yles)g(presen)n(t)f(for)h(naming)g(the)h(v)n +(ectors.)32 b(One)19 b(form)515 1448 y(uses)29 b(names)g(starting)f +(with)i Fm(SIG_)p Fq(,)e(follo)n(w)n(ed)h(b)n(y)g(a)g(relativ)n(ely)f +(v)n(erb)r(ose)g(but)i(arbitrarily)515 1547 y(c)n(hosen)f(name)h +(describing)f(the)i(in)n(terrupt)f(v)n(ector.)43 b(This)31 +b(has)e(b)r(een)i(the)g(only)e(a)n(v)-5 b(ailable)515 +1647 y(st)n(yle)27 b(in)h(a)n(vr-lib)r(c)e(up)i(to)f(v)n(ersion)f +(1.2.x.)515 1794 y(Starting)35 b(with)h(a)n(vr-lib)r(c)f(v)n(ersion)f +(1.4.0,)i(a)g(second)f(st)n(yle)g(of)h(in)n(terrupt)f(v)n(ector)g +(names)515 1893 y(has)29 b(b)r(een)i(added,)f(where)f(a)h(short)f +(phrase)g(for)g(the)i(v)n(ector)d(description)i(is)g(follo)n(w)n(ed)e +(b)n(y)515 1993 y Fm(_vect)p Fq(.)33 b(The)23 b(short)g(phrase)f(matc)n +(hes)g(the)i(v)n(ector)e(name)g(as)h(describ)r(ed)g(in)g(the)h +(datasheet)515 2093 y(of)i(the)g(resp)r(ectiv)n(e)f(device)h(\(and)g +(in)h(A)n(tmel's)f(XML)g(\034les\),)h(with)f(spaces)g(replaced)f(b)n(y) +g(an)515 2192 y(underscore)33 b(and)i(other)f(non-alphan)n(umeric)f(c)n +(haracters)g(dropp)r(ed.)58 b(Using)35 b(the)g(su\036x)515 +2292 y Fm(_vect)27 b Fq(is)j(in)n(ten)n(ted)f(to)h(impro)n(v)n(e)e(p)r +(ortabilit)n(y)g(to)i(other)f(C)g(compilers)g(a)n(v)-5 +b(ailable)28 b(for)h(the)515 2392 y(A)-9 b(VR)28 b(that)g(use)f(a)g +(similar)g(naming)g(con)n(v)n(en)n(tion.)515 2538 y(The)j(historical)e +(naming)i(st)n(yle)f(migh)n(t)h(b)r(ecome)g(deprecated)f(in)h(a)f +(future)h(release,)f(so)h(it)515 2638 y(is)d(not)h(recommended)f(for)g +(new)g(pro)5 b(jects.)506 2850 y Fs(Note:)676 2999 y +Fq(The)34 b Fs(ISR\(\))f Fq(\(p.)14 b(253\))33 b(macro)f(cannot)i +(really)e(sp)r(ell-c)n(hec)n(k)h(the)g(argumen)n(t)g(passed)676 +3099 y(to)d(them.)47 b(Th)n(us,)31 b(b)n(y)f(missp)r(elling)g(one)g(of) +h(the)g(names)f(b)r(elo)n(w)g(in)g(a)g(call)h(to)f Fs(ISR\(\))676 +3199 y Fq(\(p.)14 b(253\),)29 b(a)g(function)g(will)h(b)r(e)f(created)f +(that,)i(while)f(p)r(ossibly)g(b)r(eing)g(usable)g(as)f(an)676 +3298 y(in)n(terrupt)21 b(function,)h(is)f(not)g(actually)f(wired)h(in)n +(to)f(the)h(in)n(terrupt)g(v)n(ector)f(table.)34 b(The)676 +3398 y(compiler)d(will)g(generate)f(a)h(w)n(arning)f(if)i(it)g(detects) +g(a)f(suspiciously)f(lo)r(oking)g(name)676 3498 y(of)j(a)g +Fs(ISR\(\))h Fq(\(p.)14 b(253\))33 b(function)h(\(i.e.)54 +b(one)33 b(that)h(after)f(macro)f(replacemen)n(t)g(do)r(es)676 +3597 y(not)c(start)f(with)h("__v)n(ector_"\).)p 515 3804 +2872 4 v 515 3804 V 515 3962 4 158 v 568 3859 a Fg(V)-7 +b(ector)568 3938 y(name)p 1019 3962 V 1072 3859 a(Old)53 +b(v)n(ector)1072 3938 y(name)p 1524 3962 V 1577 3859 +a(Description)p 2099 3962 V 165 w(Applicable)27 b(for)f(device)p +3383 3962 V 515 3965 2872 4 v 515 5179 2865 4 v 515 5255 +a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 231 247 +TeXDict begin 231 246 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(231)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2992 +4 2367 v 568 681 a Ff(ADC_v)n(ect)p 1019 2992 V 167 w(SIG_ADC)p +1524 2992 V 173 w(ADC)73 b(Con)n(v)n(er-)1577 760 y(sion)23 +b(Complete)p 2099 2992 V 2152 681 a(A)-6 b(T90S2333,)40 +b(A)-6 b(T90S4433,)39 b(A)-6 b(T90S4434,)2152 760 y(A)g(T90S8535,)335 +b(A)-6 b(T90PWM216,)2152 839 y(A)g(T90PWM2B,)244 b(A)-6 +b(T90PWM316,)2152 917 y(A)g(T90PWM3B,)315 b(A)-6 b(T90PWM3,)2152 +996 y(A)g(T90PWM2,)365 b(A)-6 b(T90PWM1,)2152 1075 y(A)g(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 1154 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega103,)131 b(A)-6 b(T-)2152 1233 y(mega128,)172 +b(A)-6 b(Tmega1284P)g(,)143 b(A)-6 b(T-)2152 1312 y(mega16,)82 +b(A)-6 b(Tmega163,)82 b(A)-6 b(Tmega165,)2152 1391 y(A)g(Tmega165P)g(,) +105 b(A)-6 b(Tmega168P)g(,)105 b(A)-6 b(T-)2152 1469 +y(mega169,)66 b(A)-6 b(Tmega169P)g(,)57 b(A)-6 b(Tmega32,)2152 +1548 y(A)g(Tmega323,)147 b(A)-6 b(Tmega325,)147 b(A)-6 +b(T-)2152 1627 y(mega3250,)153 b(A)-6 b(Tmega3250P)g(,)127 +b(A)-6 b(T-)2152 1706 y(mega328P)g(,)26 b(A)-6 b(Tmega329,)26 +b(A)-6 b(Tmega3290,)2152 1785 y(A)g(Tmega3290P)g(,)105 +b(A)-6 b(Tmega48P)g(,)105 b(A)-6 b(T-)2152 1864 y(mega64,)65 +b(A)-6 b(Tmega645,)64 b(A)-6 b(Tmega6450,)2152 1943 y(A)g(Tmega649,)129 +b(A)-6 b(Tmega6490,)130 b(A)-6 b(T-)2152 2022 y(mega8,)79 +b(A)-6 b(Tmega8535,)79 b(A)-6 b(Tmega88P)g(,)2152 2100 +y(A)g(Tmega168,)51 b(A)-6 b(Tmega48,)51 b(A)-6 b(Tmega88,)2152 +2179 y(A)g(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 +b(T-)2152 2258 y(mega1281,)161 b(A)-6 b(Tmega2560,)161 +b(A)-6 b(T-)2152 2337 y(mega2561,)172 b(A)-6 b(Tmega324P)g(,)143 +b(A)-6 b(T-)2152 2416 y(mega164P)g(,)154 b(A)-6 b(Tmega644P)g(,)154 +b(A)-6 b(T-)2152 2495 y(mega644,)139 b(A)-6 b(Ttin)n(y13,)139 +b(A)-6 b(Ttin)n(y15,)2152 2574 y(A)g(Ttin)n(y26,)109 +b(A)-6 b(Ttin)n(y43U,)92 b(A)-6 b(Ttin)n(y48,)2152 2653 +y(A)g(Ttin)n(y24,)127 b(A)-6 b(Ttin)n(y44,)127 b(A)-6 +b(Ttin)n(y84,)2152 2731 y(A)g(Ttin)n(y45,)127 b(A)-6 +b(Ttin)n(y25,)127 b(A)-6 b(Ttin)n(y85,)2152 2810 y(A)g(Ttin)n(y261,)74 +b(A)-6 b(Ttin)n(y461,)75 b(A)-6 b(Ttin)n(y861,)2152 2889 +y(A)g(T90USB1287,)240 b(A)-6 b(T90USB1286,)2152 2968 +y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p 3383 2992 V +515 2995 2872 4 v 515 2995 V 515 3232 4 237 v 568 3050 +a(ANALOG_-)568 3129 y(COMP_0_-)568 3208 y(v)n(ect)p 1019 +3232 V 1072 3050 a(SIG_-)1072 3129 y(COMP)g(ARA)g(TOR0)p +1524 3232 V 1577 3050 a(Analog)87 b(Com-)1577 3129 y(parator)26 +b(0)p 2099 3232 V 2152 3050 a(A)-6 b(T90PWM3,)365 b(A)-6 +b(T90PWM2,)2152 3129 y(A)g(T90PWM1)p 3383 3232 V 515 +3235 2872 4 v 515 3235 V 515 3472 4 237 v 568 3290 a(ANALOG_-)568 +3369 y(COMP_1_-)568 3448 y(v)n(ect)p 1019 3472 V 1072 +3290 a(SIG_-)1072 3369 y(COMP)g(ARA)g(TOR1)p 1524 3472 +V 1577 3290 a(Analog)87 b(Com-)1577 3369 y(parator)26 +b(1)p 2099 3472 V 2152 3290 a(A)-6 b(T90PWM3,)365 b(A)-6 +b(T90PWM2,)2152 3369 y(A)g(T90PWM1)p 3383 3472 V 515 +3475 2872 4 v 515 3475 V 515 3711 4 237 v 568 3530 a(ANALOG_-)568 +3609 y(COMP_2_-)568 3688 y(v)n(ect)p 1019 3711 V 1072 +3530 a(SIG_-)1072 3609 y(COMP)g(ARA)g(TOR2)p 1524 3711 +V 1577 3530 a(Analog)87 b(Com-)1577 3609 y(parator)26 +b(2)p 2099 3711 V 2152 3530 a(A)-6 b(T90PWM3,)365 b(A)-6 +b(T90PWM2,)2152 3609 y(A)g(T90PWM1)p 3383 3711 V 515 +3715 2872 4 v 515 5179 2865 4 v 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 232 248 +TeXDict begin 232 247 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(232)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2124 +4 1499 v 568 681 a Ff(ANALOG_-)568 760 y(COMP_v)n(ect)p +1019 2124 V 1072 681 a(SIG_-)1072 760 y(COMP)-6 b(ARA)g(TOR)p +1524 2124 V 1577 681 a(Analog)87 b(Com-)1577 760 y(parator)p +2099 2124 V 2152 681 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +760 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega103,)131 b(A)-6 +b(T-)2152 839 y(mega128,)26 b(A)-6 b(Tmega1284P)g(,)26 +b(A)-6 b(Tmega165,)2152 917 y(A)g(Tmega165P)g(,)105 b(A)-6 +b(Tmega168P)g(,)105 b(A)-6 b(T-)2152 996 y(mega169,)46 +b(A)-6 b(Tmega169P)g(,)41 b(A)-6 b(Tmega325,)2152 1075 +y(A)g(Tmega3250,)302 b(A)-6 b(Tmega3250P)g(,)2152 1154 +y(A)g(Tmega328P)g(,)115 b(A)-6 b(Tmega329,)137 b(A)-6 +b(T-)2152 1233 y(mega3290,)153 b(A)-6 b(Tmega3290P)g(,)127 +b(A)-6 b(T-)2152 1312 y(mega48P)g(,)73 b(A)-6 b(Tmega64,)84 +b(A)-6 b(Tmega645,)2152 1391 y(A)g(Tmega6450,)130 b(A)-6 +b(Tmega649,)129 b(A)-6 b(T-)2152 1469 y(mega6490,)46 +b(A)-6 b(Tmega88P)g(,)41 b(A)-6 b(Tmega168,)2152 1548 +y(A)g(Tmega48,)51 b(A)-6 b(Tmega88,)50 b(A)-6 b(Tmega640,)2152 +1627 y(A)g(Tmega1280,)112 b(A)-6 b(Tmega1281,)112 b(A)-6 +b(T-)2152 1706 y(mega2560,)161 b(A)-6 b(Tmega2561,)161 +b(A)-6 b(T-)2152 1785 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 1864 y(mega644P)g(,)17 b(A)-6 b(Tmega644,)19 +b(A)-6 b(T90USB162,)2152 1943 y(A)g(T90USB82,)310 b(A)-6 +b(T90USB1287,)2152 2022 y(A)g(T90USB1286,)276 b(A)-6 +b(T90USB647,)2152 2100 y(A)g(T90USB646)p 3383 2124 V +515 2127 2872 4 v 515 2127 V 515 3153 4 1026 v 568 2183 +a(ANA_-)568 2262 y(COMP_v)n(ect)p 1019 3153 V 1072 2183 +a(SIG_-)1072 2262 y(COMP)g(ARA)g(TOR)p 1524 3153 V 1577 +2183 a(Analog)87 b(Com-)1577 2262 y(parator)p 2099 3153 +V 2152 2183 a(A)-6 b(T90S1200,)40 b(A)-6 b(T90S2313,)39 +b(A)-6 b(T90S2333,)2152 2262 y(A)g(T90S4414,)40 b(A)-6 +b(T90S4433,)39 b(A)-6 b(T90S4434,)2152 2340 y(A)g(T90S8515,)49 +b(A)-6 b(T90S8535,)50 b(A)-6 b(Tmega16,)2152 2419 y(A)g(Tmega161,)147 +b(A)-6 b(Tmega162,)147 b(A)-6 b(T-)2152 2498 y(mega163,)83 +b(A)-6 b(Tmega32,)81 b(A)-6 b(Tmega323,)2152 2577 y(A)g(Tmega8,)164 +b(A)-6 b(Tmega8515,)165 b(A)-6 b(T-)2152 2656 y(mega8535,)122 +b(A)-6 b(Ttin)n(y11,)121 b(A)-6 b(Ttin)n(y12,)2152 2735 +y(A)g(Ttin)n(y13,)92 b(A)-6 b(Ttin)n(y15,)91 b(A)-6 b(Ttin)n(y2313,) +2152 2814 y(A)g(Ttin)n(y26,)101 b(A)-6 b(Ttin)n(y28,)100 +b(A)-6 b(Ttin)n(y43U,)2152 2892 y(A)g(Ttin)n(y48,)127 +b(A)-6 b(Ttin)n(y24,)127 b(A)-6 b(Ttin)n(y44,)2152 2971 +y(A)g(Ttin)n(y84,)127 b(A)-6 b(Ttin)n(y45,)127 b(A)-6 +b(Ttin)n(y25,)2152 3050 y(A)g(Ttin)n(y85,)92 b(A)-6 b(Ttin)n(y261,)92 +b(A)-6 b(Ttin)n(y461,)2152 3129 y(A)g(Ttin)n(y861)p 3383 +3153 V 515 3156 2872 4 v 515 3156 V 515 3393 4 237 v +568 3211 a(CANIT_-)568 3290 y(v)n(ect)p 1019 3393 V 1072 +3211 a(SIG_-)1072 3290 y(CAN_-)1072 3369 y(INTERR)n(UPT1)p +1524 3393 V 1577 3211 a(CAN)60 b(T)-6 b(ransfer)1577 +3290 y(Complete)117 b(or)1577 3369 y(Error)p 2099 3393 +V 2152 3211 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +3290 y(A)g(T90CAN64)p 3383 3393 V 515 3396 2872 4 v 515 +3396 V 515 3790 4 395 v 568 3451 a(EEPR)n(OM_-)568 3530 +y(READ)n(Y_-)568 3609 y(v)n(ect)p 1019 3790 V 1072 3451 +a(SIG_-)1072 3530 y(EEPR)n(OM_-)1072 3609 y(READ)n(Y,)1072 +3688 y(SIG_EE_-)1072 3767 y(READ)n(Y)p 1524 3790 V 2099 +3790 V 2152 3451 a(A)g(Ttin)n(y2313)p 3383 3790 V 515 +3794 2872 4 v 515 3794 V 515 4582 4 789 v 568 3849 a(EE_RD)n(Y_-)568 +3928 y(v)n(ect)p 1019 4582 V 1072 3849 a(SIG_-)1072 3928 +y(EEPR)n(OM_-)1072 4007 y(READ)n(Y)p 1524 4582 V 1577 +3849 a(EEPR)n(OM)1577 3928 y(Ready)p 2099 4582 V 2152 +3849 a(A)g(T90S2333,)40 b(A)-6 b(T90S4433,)39 b(A)-6 +b(T90S4434,)2152 3928 y(A)g(T90S8535,)42 b(A)-6 b(Tmega16,)40 +b(A)-6 b(Tmega161,)2152 4007 y(A)g(Tmega162,)33 b(A)-6 +b(Tmega163,)34 b(A)-6 b(Tmega32,)2152 4086 y(A)g(Tmega323,)33 +b(A)-6 b(Tmega8,)33 b(A)-6 b(Tmega8515,)2152 4164 y(A)g(Tmega8535,)73 +b(A)-6 b(Ttin)n(y12,)72 b(A)-6 b(Ttin)n(y13,)2152 4243 +y(A)g(Ttin)n(y15,)27 b(A)-6 b(Ttin)n(y26,)27 b(A)-6 b(Ttin)n(y43U,)26 +b(A)-6 b(T-)2152 4322 y(tin)n(y48,)77 b(A)-6 b(Ttin)n(y24,)77 +b(A)-6 b(Ttin)n(y44,)77 b(A)-6 b(T-)2152 4401 y(tin)n(y84,)77 +b(A)-6 b(Ttin)n(y45,)77 b(A)-6 b(Ttin)n(y25,)77 b(A)-6 +b(T-)2152 4480 y(tin)n(y85,)54 b(A)-6 b(Ttin)n(y261,)53 +b(A)-6 b(Ttin)n(y461,)54 b(A)-6 b(T-)2152 4559 y(tin)n(y861)p +3383 4582 V 515 4586 2872 4 v 515 5179 2865 4 v 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 233 249 +TeXDict begin 233 248 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(233)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2361 +4 1736 v 568 681 a Ff(EE_-)568 760 y(READ)n(Y_-)568 839 +y(v)n(ect)p 1019 2361 V 1072 681 a(SIG_-)1072 760 y(EEPR)n(OM_-)1072 +839 y(READ)n(Y)p 1524 2361 V 1577 681 a(EEPR)n(OM)1577 +760 y(Ready)p 2099 2361 V 2152 681 a(A)-6 b(T90PWM3,)365 +b(A)-6 b(T90PWM2,)2152 760 y(A)g(T90PWM1,)323 b(A)-6 +b(T90CAN128,)2152 839 y(A)g(T90CAN32,)115 b(A)-6 b(T90CAN64,)115 +b(A)-6 b(T-)2152 917 y(mega103,)26 b(A)-6 b(Tmega128,)26 +b(A)-6 b(Tmega1284P)g(,)2152 996 y(A)g(Tmega165,)137 +b(A)-6 b(Tmega165P)g(,)115 b(A)-6 b(T-)2152 1075 y(mega168P)g(,)23 +b(A)-6 b(Tmega169,)22 b(A)-6 b(Tmega169P)g(,)2152 1154 +y(A)g(Tmega325,)129 b(A)-6 b(Tmega3250,)130 b(A)-6 b(T-)2152 +1233 y(mega3250P)g(,)137 b(A)-6 b(Tmega328P)g(,)136 b(A)-6 +b(T-)2152 1312 y(mega329,)179 b(A)-6 b(Tmega3290,)178 +b(A)-6 b(T-)2152 1391 y(mega3290P)g(,)98 b(A)-6 b(Tmega32HVB,)96 +b(A)-6 b(T-)2152 1469 y(mega406,)85 b(A)-6 b(Tmega48P)g(,)73 +b(A)-6 b(Tmega64,)2152 1548 y(A)g(Tmega645,)129 b(A)-6 +b(Tmega6450,)130 b(A)-6 b(T-)2152 1627 y(mega649,)44 +b(A)-6 b(Tmega6490,)44 b(A)-6 b(Tmega88P)g(,)2152 1706 +y(A)g(Tmega168,)51 b(A)-6 b(Tmega48,)51 b(A)-6 b(Tmega88,)2152 +1785 y(A)g(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 +b(T-)2152 1864 y(mega1281,)161 b(A)-6 b(Tmega2560,)161 +b(A)-6 b(T-)2152 1943 y(mega2561,)172 b(A)-6 b(Tmega324P)g(,)143 +b(A)-6 b(T-)2152 2022 y(mega164P)g(,)23 b(A)-6 b(Tmega644P)g(,)22 +b(A)-6 b(Tmega644,)2152 2100 y(A)g(Tmega16HV)e(A,)247 +b(A)-6 b(T90USB162,)2152 2179 y(A)g(T90USB82,)310 b(A)-6 +b(T90USB1287,)2152 2258 y(A)g(T90USB1286,)276 b(A)-6 +b(T90USB647,)2152 2337 y(A)g(T90USB646)p 3383 2361 V +515 2364 2872 4 v 515 2364 V 515 2522 4 158 v 568 2419 +a(EXT_-)568 2498 y(INT0_v)n(ect)p 1019 2522 V 1072 2419 +a(SIG_-)1072 2498 y(INTERR)n(UPT0)p 1524 2522 V 1577 +2419 a(External)36 b(In)n(ter-)1577 2498 y(rupt)25 b(Request)g(0)p +2099 2522 V 2152 2419 a(A)-6 b(Ttin)n(y24,)24 b(A)-6 +b(Ttin)n(y44,)24 b(A)-6 b(Ttin)n(y84)p 3383 2522 V 515 +2525 2872 4 v 515 5179 2865 4 v 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 234 250 +TeXDict begin 234 249 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(234)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 3544 +4 2919 v 568 681 a Ff(INT0_v)n(ect)p 1019 3544 V 161 +w(SIG_-)1072 760 y(INTERR)n(UPT0)p 1524 3544 V 1577 681 +a(External)36 b(In)n(ter-)1577 760 y(rupt)25 b(0)p 2099 +3544 V 2152 681 a(A)-6 b(T90S1200,)40 b(A)-6 b(T90S2313,)39 +b(A)-6 b(T90S2323,)2152 760 y(A)g(T90S2333,)40 b(A)-6 +b(T90S2343,)39 b(A)-6 b(T90S4414,)2152 839 y(A)g(T90S4433,)40 +b(A)-6 b(T90S4434,)39 b(A)-6 b(T90S8515,)2152 917 y(A)g(T90S8535,)335 +b(A)-6 b(T90PWM216,)2152 996 y(A)g(T90PWM2B,)244 b(A)-6 +b(T90PWM316,)2152 1075 y(A)g(T90PWM3B,)315 b(A)-6 b(T90PWM3,)2152 +1154 y(A)g(T90PWM2,)365 b(A)-6 b(T90PWM1,)2152 1233 y(A)g(T90CAN128,) +316 b(A)-6 b(T90CAN32,)2152 1312 y(A)g(T90CAN64,)131 +b(A)-6 b(Tmega103,)131 b(A)-6 b(T-)2152 1391 y(mega128,)172 +b(A)-6 b(Tmega1284P)g(,)143 b(A)-6 b(T-)2152 1469 y(mega16,)82 +b(A)-6 b(Tmega161,)82 b(A)-6 b(Tmega162,)2152 1548 y(A)g(Tmega163,)147 +b(A)-6 b(Tmega165,)147 b(A)-6 b(T-)2152 1627 y(mega165P)g(,)154 +b(A)-6 b(Tmega168P)g(,)154 b(A)-6 b(T-)2152 1706 y(mega169,)66 +b(A)-6 b(Tmega169P)g(,)57 b(A)-6 b(Tmega32,)2152 1785 +y(A)g(Tmega323,)147 b(A)-6 b(Tmega325,)147 b(A)-6 b(T-)2152 +1864 y(mega3250,)153 b(A)-6 b(Tmega3250P)g(,)127 b(A)-6 +b(T-)2152 1943 y(mega328P)g(,)26 b(A)-6 b(Tmega329,)26 +b(A)-6 b(Tmega3290,)2152 2022 y(A)g(Tmega3290P)g(,)217 +b(A)-6 b(Tmega32HVB,)2152 2100 y(A)g(Tmega406,)157 b(A)-6 +b(Tmega48P)g(,)130 b(A)-6 b(T-)2152 2179 y(mega64,)65 +b(A)-6 b(Tmega645,)64 b(A)-6 b(Tmega6450,)2152 2258 y(A)g(Tmega649,)129 +b(A)-6 b(Tmega6490,)130 b(A)-6 b(T-)2152 2337 y(mega8,)64 +b(A)-6 b(Tmega8515,)65 b(A)-6 b(Tmega8535,)2152 2416 +y(A)g(Tmega88P)g(,)130 b(A)-6 b(Tmega168,)157 b(A)-6 +b(T-)2152 2495 y(mega48,)100 b(A)-6 b(Tmega88,)99 b(A)-6 +b(Tmega640,)2152 2574 y(A)g(Tmega1280,)112 b(A)-6 b(Tmega1281,)112 +b(A)-6 b(T-)2152 2653 y(mega2560,)161 b(A)-6 b(Tmega2561,)161 +b(A)-6 b(T-)2152 2731 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 2810 y(mega644P)g(,)159 b(A)-6 b(Tmega644,)191 +b(A)-6 b(T-)2152 2889 y(mega16HV)e(A,)75 b(A)-6 b(Ttin)n(y11,)87 +b(A)-6 b(Ttin)n(y12,)2152 2968 y(A)g(Ttin)n(y13,)127 +b(A)-6 b(Ttin)n(y15,)127 b(A)-6 b(Ttin)n(y22,)2152 3047 +y(A)g(Ttin)n(y2313,)92 b(A)-6 b(Ttin)n(y26,)92 b(A)-6 +b(Ttin)n(y28,)2152 3126 y(A)g(Ttin)n(y43U,)92 b(A)-6 +b(Ttin)n(y48,)109 b(A)-6 b(Ttin)n(y45,)2152 3205 y(A)g(Ttin)n(y25,)109 +b(A)-6 b(Ttin)n(y85,)110 b(A)-6 b(Ttin)n(y261,)2152 3284 +y(A)g(Ttin)n(y461,)29 b(A)-6 b(Ttin)n(y861,)29 b(A)-6 +b(T90USB162,)2152 3362 y(A)g(T90USB82,)310 b(A)-6 b(T90USB1287,)2152 +3441 y(A)g(T90USB1286,)276 b(A)-6 b(T90USB647,)2152 3520 +y(A)g(T90USB646)p 3383 3544 V 515 3547 2872 4 v 515 5179 +2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 235 251 +TeXDict begin 235 250 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(235)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2676 +4 2051 v 568 681 a Ff(INT1_v)n(ect)p 1019 2676 V 161 +w(SIG_-)1072 760 y(INTERR)n(UPT1)p 1524 2676 V 1577 681 +a(External)36 b(In)n(ter-)1577 760 y(rupt)25 b(Request)g(1)p +2099 2676 V 2152 681 a(A)-6 b(T90S2313,)40 b(A)-6 b(T90S2333,)39 +b(A)-6 b(T90S4414,)2152 760 y(A)g(T90S4433,)40 b(A)-6 +b(T90S4434,)39 b(A)-6 b(T90S8515,)2152 839 y(A)g(T90S8535,)335 +b(A)-6 b(T90PWM216,)2152 917 y(A)g(T90PWM2B,)244 b(A)-6 +b(T90PWM316,)2152 996 y(A)g(T90PWM3B,)315 b(A)-6 b(T90PWM3,)2152 +1075 y(A)g(T90PWM2,)365 b(A)-6 b(T90PWM1,)2152 1154 y(A)g(T90CAN128,) +316 b(A)-6 b(T90CAN32,)2152 1233 y(A)g(T90CAN64,)131 +b(A)-6 b(Tmega103,)131 b(A)-6 b(T-)2152 1312 y(mega128,)172 +b(A)-6 b(Tmega1284P)g(,)143 b(A)-6 b(T-)2152 1391 y(mega16,)82 +b(A)-6 b(Tmega161,)82 b(A)-6 b(Tmega162,)2152 1469 y(A)g(Tmega163,)137 +b(A)-6 b(Tmega168P)g(,)115 b(A)-6 b(T-)2152 1548 y(mega32,)61 +b(A)-6 b(Tmega323,)61 b(A)-6 b(Tmega328P)g(,)2152 1627 +y(A)g(Tmega32HVB,)79 b(A)-6 b(Tmega406,)94 b(A)-6 b(T-)2152 +1706 y(mega48P)g(,)34 b(A)-6 b(Tmega64,)37 b(A)-6 b(Tmega8,)36 +b(A)-6 b(T-)2152 1785 y(mega8515,)26 b(A)-6 b(Tmega8535,)27 +b(A)-6 b(Tmega88P)g(,)2152 1864 y(A)g(Tmega168,)51 b(A)-6 +b(Tmega48,)51 b(A)-6 b(Tmega88,)2152 1943 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 2022 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 2100 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 2179 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 2258 +y(A)g(Tmega16HV)e(A,)83 b(A)-6 b(Ttin)n(y2313,)99 b(A)-6 +b(T-)2152 2337 y(tin)n(y28,)65 b(A)-6 b(Ttin)n(y48,)66 +b(A)-6 b(Ttin)n(y261,)65 b(A)-6 b(T-)2152 2416 y(tin)n(y461,)78 +b(A)-6 b(Ttin)n(y861,)78 b(A)-6 b(T90USB162,)2152 2495 +y(A)g(T90USB82,)310 b(A)-6 b(T90USB1287,)2152 2574 y(A)g(T90USB1286,) +276 b(A)-6 b(T90USB647,)2152 2653 y(A)g(T90USB646)p 3383 +2676 V 515 2680 2872 4 v 515 2680 V 515 3941 4 1262 v +568 2735 a(INT2_v)n(ect)p 1019 3941 V 161 w(SIG_-)1072 +2814 y(INTERR)n(UPT2)p 1524 3941 V 1577 2735 a(External)36 +b(In)n(ter-)1577 2814 y(rupt)25 b(Request)g(2)p 2099 +3941 V 2152 2735 a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 +2814 y(A)g(T90PWM1,)323 b(A)-6 b(T90CAN128,)2152 2892 +y(A)g(T90CAN32,)115 b(A)-6 b(T90CAN64,)115 b(A)-6 b(T-)2152 +2971 y(mega103,)26 b(A)-6 b(Tmega128,)26 b(A)-6 b(Tmega1284P)g(,)2152 +3050 y(A)g(Tmega16,)164 b(A)-6 b(Tmega161,)165 b(A)-6 +b(T-)2152 3129 y(mega162,)83 b(A)-6 b(Tmega32,)81 b(A)-6 +b(Tmega323,)2152 3208 y(A)g(Tmega32HVB,)79 b(A)-6 b(Tmega406,)94 +b(A)-6 b(T-)2152 3287 y(mega64,)47 b(A)-6 b(Tmega8515,)47 +b(A)-6 b(Tmega8535,)2152 3366 y(A)g(Tmega640,)129 b(A)-6 +b(Tmega1280,)130 b(A)-6 b(T-)2152 3445 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 3523 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 3602 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 3681 +y(A)g(Tmega16HV)e(A,)247 b(A)-6 b(T90USB162,)2152 3760 +y(A)g(T90USB82,)310 b(A)-6 b(T90USB1287,)2152 3839 y(A)g(T90USB1286,) +276 b(A)-6 b(T90USB647,)2152 3918 y(A)g(T90USB646)p 3383 +3941 V 515 3945 2872 4 v 515 3945 V 515 4812 4 868 v +568 4000 a(INT3_v)n(ect)p 1019 4812 V 161 w(SIG_-)1072 +4079 y(INTERR)n(UPT3)p 1524 4812 V 1577 4000 a(External)36 +b(In)n(ter-)1577 4079 y(rupt)25 b(Request)g(3)p 2099 +4812 V 2152 4000 a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 +4079 y(A)g(T90PWM1,)323 b(A)-6 b(T90CAN128,)2152 4158 +y(A)g(T90CAN32,)115 b(A)-6 b(T90CAN64,)115 b(A)-6 b(T-)2152 +4237 y(mega103,)196 b(A)-6 b(Tmega128,)196 b(A)-6 b(T-)2152 +4315 y(mega32HVB,)123 b(A)-6 b(Tmega406,)148 b(A)-6 b(T-)2152 +4394 y(mega64,)65 b(A)-6 b(Tmega640,)64 b(A)-6 b(Tmega1280,)2152 +4473 y(A)g(Tmega1281,)344 b(A)-6 b(Tmega2560,)2152 4552 +y(A)g(Tmega2561,)328 b(A)-6 b(T90USB162,)2152 4631 y(A)g(T90USB82,)310 +b(A)-6 b(T90USB1287,)2152 4710 y(A)g(T90USB1286,)276 +b(A)-6 b(T90USB647,)2152 4789 y(A)g(T90USB646)p 3383 +4812 V 515 4816 2872 4 v 515 5179 2865 4 v 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 236 252 +TeXDict begin 236 251 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(236)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1257 +4 631 v 568 681 a Ff(INT4_v)n(ect)p 1019 1257 V 161 w(SIG_-)1072 +760 y(INTERR)n(UPT4)p 1524 1257 V 1577 681 a(External)36 +b(In)n(ter-)1577 760 y(rupt)25 b(Request)g(4)p 2099 1257 +V 2152 681 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +760 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega103,)131 b(A)-6 +b(T-)2152 839 y(mega128,)83 b(A)-6 b(Tmega64,)81 b(A)-6 +b(Tmega640,)2152 917 y(A)g(Tmega1280,)344 b(A)-6 b(Tmega1281,)2152 +996 y(A)g(Tmega2560,)344 b(A)-6 b(Tmega2561,)2152 1075 +y(A)g(T90USB162,)346 b(A)-6 b(T90USB82,)2152 1154 y(A)g(T90USB1287,)240 +b(A)-6 b(T90USB1286,)2152 1233 y(A)g(T90USB647,)25 b(A)-6 +b(T90USB646)p 3383 1257 V 515 1260 2872 4 v 515 1260 +V 515 1891 4 631 v 568 1315 a(INT5_v)n(ect)p 1019 1891 +V 161 w(SIG_-)1072 1394 y(INTERR)n(UPT5)p 1524 1891 V +1577 1315 a(External)36 b(In)n(ter-)1577 1394 y(rupt)25 +b(Request)g(5)p 2099 1891 V 2152 1315 a(A)-6 b(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 1394 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega103,)131 b(A)-6 b(T-)2152 1473 y(mega128,)83 b(A)-6 +b(Tmega64,)81 b(A)-6 b(Tmega640,)2152 1552 y(A)g(Tmega1280,)344 +b(A)-6 b(Tmega1281,)2152 1631 y(A)g(Tmega2560,)344 b(A)-6 +b(Tmega2561,)2152 1709 y(A)g(T90USB162,)346 b(A)-6 b(T90USB82,)2152 +1788 y(A)g(T90USB1287,)240 b(A)-6 b(T90USB1286,)2152 +1867 y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p 3383 1891 +V 515 1894 2872 4 v 515 1894 V 515 2525 4 631 v 568 1949 +a(INT6_v)n(ect)p 1019 2525 V 161 w(SIG_-)1072 2028 y(INTERR)n(UPT6)p +1524 2525 V 1577 1949 a(External)36 b(In)n(ter-)1577 +2028 y(rupt)25 b(Request)g(6)p 2099 2525 V 2152 1949 +a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 2028 +y(A)g(T90CAN64,)131 b(A)-6 b(Tmega103,)131 b(A)-6 b(T-)2152 +2107 y(mega128,)83 b(A)-6 b(Tmega64,)81 b(A)-6 b(Tmega640,)2152 +2186 y(A)g(Tmega1280,)344 b(A)-6 b(Tmega1281,)2152 2265 +y(A)g(Tmega2560,)344 b(A)-6 b(Tmega2561,)2152 2344 y(A)g(T90USB162,)346 +b(A)-6 b(T90USB82,)2152 2423 y(A)g(T90USB1287,)240 b(A)-6 +b(T90USB1286,)2152 2501 y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p +3383 2525 V 515 2528 2872 4 v 515 2528 V 515 3159 4 631 +v 568 2584 a(INT7_v)n(ect)p 1019 3159 V 161 w(SIG_-)1072 +2663 y(INTERR)n(UPT7)p 1524 3159 V 1577 2584 a(External)36 +b(In)n(ter-)1577 2663 y(rupt)25 b(Request)g(7)p 2099 +3159 V 2152 2584 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +2663 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega103,)131 b(A)-6 +b(T-)2152 2741 y(mega128,)83 b(A)-6 b(Tmega64,)81 b(A)-6 +b(Tmega640,)2152 2820 y(A)g(Tmega1280,)344 b(A)-6 b(Tmega1281,)2152 +2899 y(A)g(Tmega2560,)344 b(A)-6 b(Tmega2561,)2152 2978 +y(A)g(T90USB162,)346 b(A)-6 b(T90USB82,)2152 3057 y(A)g(T90USB1287,)240 +b(A)-6 b(T90USB1286,)2152 3136 y(A)g(T90USB647,)25 b(A)-6 +b(T90USB646)p 3383 3159 V 515 3163 2872 4 v 515 3163 +V 515 3399 4 237 v 568 3218 a(IO_PINS_-)568 3297 y(v)n(ect)p +1019 3399 V 1072 3218 a(SIG_PIN,)1072 3297 y(SIG_PIN_-)1072 +3376 y(CHANGE)p 1524 3399 V 1577 3218 a(External)36 b(In)n(ter-)1577 +3297 y(rupt)25 b(Request)g(0)p 2099 3399 V 2152 3218 +a(A)-6 b(Ttin)n(y11,)45 b(A)-6 b(Ttin)n(y12,)44 b(A)-6 +b(Ttin)n(y15,)44 b(A)-6 b(T-)2152 3297 y(tin)n(y26)p +3383 3399 V 515 3403 2872 4 v 515 3403 V 515 3639 4 237 +v 568 3458 a(LCD_v)n(ect)p 1019 3639 V 176 w(SIG_LCD)p +1524 3639 V 182 w(LCD)55 b(Start)i(of)1577 3537 y(F)-6 +b(rame)p 2099 3639 V 2152 3458 a(A)g(Tmega169,)137 b(A)-6 +b(Tmega169P)g(,)115 b(A)-6 b(T-)2152 3537 y(mega329,)179 +b(A)-6 b(Tmega3290,)178 b(A)-6 b(T-)2152 3616 y(mega3290P)g(,)18 +b(A)-6 b(Tmega649,)19 b(A)-6 b(Tmega6490)p 3383 3639 +V 515 3643 2872 4 v 515 3643 V 515 3879 4 237 v 568 3698 +a(LO)n(WLEVEL_-)568 3777 y(IO_PINS_-)568 3856 y(v)n(ect)p +1019 3879 V 1072 3698 a(SIG_PIN)p 1524 3879 V 205 w(Lo)n(w-lev)n(el)95 +b(In-)1577 3777 y(put)79 b(on)f(P)n(ort)1577 3856 y(B)p +2099 3879 V 2152 3698 a(A)-6 b(Ttin)n(y28)p 3383 3879 +V 515 3883 2872 4 v 515 3883 V 515 4119 4 237 v 568 3938 +a(O)n(VRIT_-)568 4017 y(v)n(ect)p 1019 4119 V 1072 3938 +a(SIG_-)1072 4017 y(CAN_-)1072 4095 y(O)n(VERFLO)n(W1)p +1524 4119 V 1577 3938 a(CAN)127 b(Timer)1577 4017 y(Ov)n(errun)p +2099 4119 V 2152 3938 a(A)-6 b(T90CAN128,)316 b(A)-6 +b(T90CAN32,)2152 4017 y(A)g(T90CAN64)p 3383 4119 V 515 +4122 2872 4 v 515 5179 2865 4 v 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 237 253 +TeXDict begin 237 252 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(237)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2203 +4 1578 v 568 681 a Ff(PCINT0_-)568 760 y(v)n(ect)p 1019 +2203 V 1072 681 a(SIG_PIN_-)1072 760 y(CHANGE0)p 1524 +2203 V 1577 681 a(Pin)134 b(Change)1577 760 y(In)n(terrupt)1577 +839 y(Request)25 b(0)p 2099 2203 V 2152 681 a(A)-6 b(Tmega162,)147 +b(A)-6 b(Tmega165,)147 b(A)-6 b(T-)2152 760 y(mega165P)g(,)23 +b(A)-6 b(Tmega168P)g(,)22 b(A)-6 b(Tmega169,)2152 839 +y(A)g(Tmega169P)g(,)115 b(A)-6 b(Tmega325,)137 b(A)-6 +b(T-)2152 917 y(mega3250,)153 b(A)-6 b(Tmega3250P)g(,)127 +b(A)-6 b(T-)2152 996 y(mega328P)g(,)26 b(A)-6 b(Tmega329,)26 +b(A)-6 b(Tmega3290,)2152 1075 y(A)g(Tmega3290P)g(,)217 +b(A)-6 b(Tmega32HVB,)2152 1154 y(A)g(Tmega406,)157 b(A)-6 +b(Tmega48P)g(,)130 b(A)-6 b(T-)2152 1233 y(mega645,)47 +b(A)-6 b(Tmega6450,)47 b(A)-6 b(Tmega649,)2152 1312 y(A)g(Tmega6490,) +138 b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 1391 y(mega168,)100 +b(A)-6 b(Tmega48,)100 b(A)-6 b(Tmega88,)2152 1469 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 1548 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 1627 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 1706 y(mega164P)g(,)154 +b(A)-6 b(Tmega644P)g(,)154 b(A)-6 b(T-)2152 1785 y(mega644,)113 +b(A)-6 b(Ttin)n(y13,)112 b(A)-6 b(Ttin)n(y43U,)2152 1864 +y(A)g(Ttin)n(y48,)127 b(A)-6 b(Ttin)n(y24,)127 b(A)-6 +b(Ttin)n(y44,)2152 1943 y(A)g(Ttin)n(y84,)45 b(A)-6 b(Ttin)n(y45,)44 +b(A)-6 b(Ttin)n(y25,)44 b(A)-6 b(T-)2152 2022 y(tin)n(y85,)67 +b(A)-6 b(T90USB162,)68 b(A)-6 b(T90USB82,)2152 2100 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 2179 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 2203 V 515 2206 2872 4 v 515 +2206 V 515 3468 4 1262 v 568 2262 a(PCINT1_-)568 2340 +y(v)n(ect)p 1019 3468 V 1072 2262 a(SIG_PIN_-)1072 2340 +y(CHANGE1)p 1524 3468 V 1577 2262 a(Pin)134 b(Change)1577 +2340 y(In)n(terrupt)1577 2419 y(Request)25 b(1)p 2099 +3468 V 2152 2262 a(A)-6 b(Tmega162,)147 b(A)-6 b(Tmega165,)147 +b(A)-6 b(T-)2152 2340 y(mega165P)g(,)23 b(A)-6 b(Tmega168P)g(,)22 +b(A)-6 b(Tmega169,)2152 2419 y(A)g(Tmega169P)g(,)115 +b(A)-6 b(Tmega325,)137 b(A)-6 b(T-)2152 2498 y(mega3250,)153 +b(A)-6 b(Tmega3250P)g(,)127 b(A)-6 b(T-)2152 2577 y(mega328P)g(,)26 +b(A)-6 b(Tmega329,)26 b(A)-6 b(Tmega3290,)2152 2656 y(A)g(Tmega3290P)g +(,)217 b(A)-6 b(Tmega32HVB,)2152 2735 y(A)g(Tmega406,)157 +b(A)-6 b(Tmega48P)g(,)130 b(A)-6 b(T-)2152 2814 y(mega645,)47 +b(A)-6 b(Tmega6450,)47 b(A)-6 b(Tmega649,)2152 2892 y(A)g(Tmega6490,) +138 b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 2971 y(mega168,)27 +b(A)-6 b(Tmega48,)26 b(A)-6 b(Tmega88,)26 b(A)-6 b(T-)2152 +3050 y(mega640,)30 b(A)-6 b(Tmega1280,)29 b(A)-6 b(Tmega1281,)2152 +3129 y(A)g(Tmega2560,)112 b(A)-6 b(Tmega2561,)112 b(A)-6 +b(T-)2152 3208 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 3287 y(mega644P)g(,)51 b(A)-6 b(Tmega644,)58 +b(A)-6 b(Ttin)n(y43U,)2152 3366 y(A)g(Ttin)n(y48,)127 +b(A)-6 b(Ttin)n(y24,)127 b(A)-6 b(Ttin)n(y44,)2152 3445 +y(A)g(Ttin)n(y84,)24 b(A)-6 b(T90USB162,)25 b(A)-6 b(T90USB82)p +3383 3468 V 515 3472 2872 4 v 515 3472 V 515 4260 4 789 +v 568 3527 a(PCINT2_-)568 3606 y(v)n(ect)p 1019 4260 +V 1072 3527 a(SIG_PIN_-)1072 3606 y(CHANGE2)p 1524 4260 +V 1577 3527 a(Pin)134 b(Change)1577 3606 y(In)n(terrupt)1577 +3685 y(Request)25 b(2)p 2099 4260 V 2152 3527 a(A)-6 +b(Tmega3250,)98 b(A)-6 b(Tmega3250P)g(,)84 b(A)-6 b(T-)2152 +3606 y(mega328P)g(,)143 b(A)-6 b(Tmega3290,)172 b(A)-6 +b(T-)2152 3685 y(mega3290P)g(,)154 b(A)-6 b(Tmega48P)g(,)154 +b(A)-6 b(T-)2152 3763 y(mega6450,)26 b(A)-6 b(Tmega6490,)27 +b(A)-6 b(Tmega88P)g(,)2152 3842 y(A)g(Tmega168,)51 b(A)-6 +b(Tmega48,)51 b(A)-6 b(Tmega88,)2152 3921 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 4000 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 4079 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 4158 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 4237 +y(A)g(Ttin)n(y48)p 3383 4260 V 515 4264 2872 4 v 515 +4264 V 515 4658 4 395 v 568 4319 a(PCINT3_-)568 4398 +y(v)n(ect)p 1019 4658 V 1072 4319 a(SIG_PIN_-)1072 4398 +y(CHANGE3)p 1524 4658 V 1577 4319 a(Pin)134 b(Change)1577 +4398 y(In)n(terrupt)1577 4477 y(Request)25 b(3)p 2099 +4658 V 2152 4319 a(A)-6 b(Tmega3250,)98 b(A)-6 b(Tmega3250P)g(,)84 +b(A)-6 b(T-)2152 4398 y(mega3290,)153 b(A)-6 b(Tmega3290P)g(,)127 +b(A)-6 b(T-)2152 4477 y(mega6450,)161 b(A)-6 b(Tmega6490,)161 +b(A)-6 b(T-)2152 4555 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 4634 y(mega644P)g(,)25 b(A)-6 b(Tmega644,)25 +b(A)-6 b(Ttin)n(y48)p 3383 4658 V 515 4661 2872 4 v 515 +4661 V 515 4977 4 316 v 568 4716 a(PCINT_-)568 4795 y(v)n(ect)p +1019 4977 V 1072 4716 a(SIG_PIN_-)1072 4795 y(CHANGE,)1072 +4874 y(SIG_-)1072 4953 y(PCINT)p 1524 4977 V 2099 4977 +V 2152 4716 a(A)g(Ttin)n(y2313,)57 b(A)-6 b(Ttin)n(y261,)57 +b(A)-6 b(Ttin)n(y461,)2152 4795 y(A)g(Ttin)n(y861)p 3383 +4977 V 515 4980 2872 4 v 515 5179 2865 4 v 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 238 254 +TeXDict begin 238 253 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(238)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 862 +4 237 v 568 681 a Ff(PSC0_-)568 760 y(CAPT_v)n(ect)p +1019 862 V 1072 681 a(SIG_-)1072 760 y(PSC0_-)1072 839 +y(CAPTURE)p 1524 862 V 1577 681 a(PSC0)48 b(Capture)1577 +760 y(Ev)n(en)n(t)p 2099 862 V 2152 681 a(A)-6 b(T90PWM3,)365 +b(A)-6 b(T90PWM2,)2152 760 y(A)g(T90PWM1)p 3383 862 V +515 866 2872 4 v 515 866 V 515 1181 4 316 v 568 921 a(PSC0_-)568 +1000 y(EC_v)n(ect)p 1019 1181 V 1072 921 a(SIG_-)1072 +1000 y(PSC0_-)1072 1078 y(END_-)1072 1157 y(CYCLE)p 1524 +1181 V 1577 921 a(PSC0)31 b(End)g(Cy-)1577 1000 y(cle)p +2099 1181 V 2152 921 a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 +1000 y(A)g(T90PWM1)p 3383 1181 V 515 1184 2872 4 v 515 +1184 V 515 1421 4 237 v 568 1240 a(PSC1_-)568 1318 y(CAPT_v)n(ect)p +1019 1421 V 1072 1240 a(SIG_-)1072 1318 y(PSC1_-)1072 +1397 y(CAPTURE)p 1524 1421 V 1577 1240 a(PSC1)48 b(Capture)1577 +1318 y(Ev)n(en)n(t)p 2099 1421 V 2152 1240 a(A)-6 b(T90PWM3,)365 +b(A)-6 b(T90PWM2,)2152 1318 y(A)g(T90PWM1)p 3383 1421 +V 515 1424 2872 4 v 515 1424 V 515 1740 4 316 v 568 1479 +a(PSC1_-)568 1558 y(EC_v)n(ect)p 1019 1740 V 1072 1479 +a(SIG_-)1072 1558 y(PSC1_-)1072 1637 y(END_-)1072 1716 +y(CYCLE)p 1524 1740 V 1577 1479 a(PSC1)31 b(End)g(Cy-)1577 +1558 y(cle)p 2099 1740 V 2152 1479 a(A)-6 b(T90PWM3,)365 +b(A)-6 b(T90PWM2,)2152 1558 y(A)g(T90PWM1)p 3383 1740 +V 515 1743 2872 4 v 515 1743 V 515 1980 4 237 v 568 1798 +a(PSC2_-)568 1877 y(CAPT_v)n(ect)p 1019 1980 V 1072 1798 +a(SIG_-)1072 1877 y(PSC2_-)1072 1956 y(CAPTURE)p 1524 +1980 V 1577 1798 a(PSC2)48 b(Capture)1577 1877 y(Ev)n(en)n(t)p +2099 1980 V 2152 1798 a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 +1877 y(A)g(T90PWM1)p 3383 1980 V 515 1983 2872 4 v 515 +1983 V 515 2298 4 316 v 568 2038 a(PSC2_-)568 2117 y(EC_v)n(ect)p +1019 2298 V 1072 2038 a(SIG_-)1072 2117 y(PSC2_-)1072 +2196 y(END_-)1072 2275 y(CYCLE)p 1524 2298 V 1577 2038 +a(PSC2)31 b(End)g(Cy-)1577 2117 y(cle)p 2099 2298 V 2152 +2038 a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 2117 +y(A)g(T90PWM1)p 3383 2298 V 515 2302 2872 4 v 515 2302 +V 515 4589 4 2288 v 568 2357 a(SPI_STC_-)568 2436 y(v)n(ect)p +1019 4589 V 1072 2357 a(SIG_SPI)p 1524 4589 V 219 w(Serial)45 +b(T)-6 b(ransfer)1577 2436 y(Complete)p 2099 4589 V 2152 +2357 a(A)g(T90S2333,)40 b(A)-6 b(T90S4414,)39 b(A)-6 +b(T90S4433,)2152 2436 y(A)g(T90S4434,)40 b(A)-6 b(T90S8515,)39 +b(A)-6 b(T90S8535,)2152 2515 y(A)g(T90PWM216,)245 b(A)-6 +b(T90PWM2B,)2152 2594 y(A)g(T90PWM316,)245 b(A)-6 b(T90PWM3B,)2152 +2672 y(A)g(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 2751 y(A)g(T90PWM1,)323 +b(A)-6 b(T90CAN128,)2152 2830 y(A)g(T90CAN32,)115 b(A)-6 +b(T90CAN64,)115 b(A)-6 b(T-)2152 2909 y(mega103,)26 b(A)-6 +b(Tmega128,)26 b(A)-6 b(Tmega1284P)g(,)2152 2988 y(A)g(Tmega16,)164 +b(A)-6 b(Tmega161,)165 b(A)-6 b(T-)2152 3067 y(mega162,)65 +b(A)-6 b(Tmega163,)64 b(A)-6 b(Tmega165,)2152 3146 y(A)g(Tmega165P)g(,) +105 b(A)-6 b(Tmega168P)g(,)105 b(A)-6 b(T-)2152 3225 +y(mega169,)66 b(A)-6 b(Tmega169P)g(,)57 b(A)-6 b(Tmega32,)2152 +3303 y(A)g(Tmega323,)147 b(A)-6 b(Tmega325,)147 b(A)-6 +b(T-)2152 3382 y(mega3250,)153 b(A)-6 b(Tmega3250P)g(,)127 +b(A)-6 b(T-)2152 3461 y(mega328P)g(,)26 b(A)-6 b(Tmega329,)26 +b(A)-6 b(Tmega3290,)2152 3540 y(A)g(Tmega3290P)g(,)49 +b(A)-6 b(Tmega32HVB,)47 b(A)-6 b(T-)2152 3619 y(mega48P)g(,)73 +b(A)-6 b(Tmega64,)84 b(A)-6 b(Tmega645,)2152 3698 y(A)g(Tmega6450,)130 +b(A)-6 b(Tmega649,)129 b(A)-6 b(T-)2152 3777 y(mega6490,)65 +b(A)-6 b(Tmega8,)64 b(A)-6 b(Tmega8515,)2152 3856 y(A)g(Tmega8535,)138 +b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 3934 y(mega168,)100 +b(A)-6 b(Tmega48,)100 b(A)-6 b(Tmega88,)2152 4013 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 4092 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 4171 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 4250 y(mega164P)g(,)154 +b(A)-6 b(Tmega644P)g(,)154 b(A)-6 b(T-)2152 4329 y(mega644,)151 +b(A)-6 b(Tmega16HV)e(A,)125 b(A)-6 b(T-)2152 4408 y(tin)n(y48,)67 +b(A)-6 b(T90USB162,)68 b(A)-6 b(T90USB82,)2152 4487 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 4565 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 4589 V 515 4592 2872 4 v 515 +4592 V 515 4829 4 237 v 568 4648 a(SPM_-)568 4726 y(RD)n(Y_v)n(ect)p +1019 4829 V 1072 4648 a(SIG_-)1072 4726 y(SPM_-)1072 +4805 y(READ)n(Y)p 1524 4829 V 1577 4648 a(Store)46 b(Program)1577 +4726 y(Memory)23 b(Ready)p 2099 4829 V 2152 4648 a(A)-6 +b(Tmega16,)51 b(A)-6 b(Tmega162,)51 b(A)-6 b(Tmega32,)2152 +4726 y(A)g(Tmega323,)33 b(A)-6 b(Tmega8,)33 b(A)-6 b(Tmega8515,)2152 +4805 y(A)g(Tmega8535)p 3383 4829 V 515 4832 2872 4 v +515 5179 2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 239 255 +TeXDict begin 239 254 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(239)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2203 +4 1578 v 568 681 a Ff(SPM_-)568 760 y(READ)n(Y_-)568 +839 y(v)n(ect)p 1019 2203 V 1072 681 a(SIG_-)1072 760 +y(SPM_-)1072 839 y(READ)n(Y)p 1524 2203 V 1577 681 a(Store)46 +b(Program)1577 760 y(Memory)24 b(Read)p 2099 2203 V 2152 +681 a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 760 +y(A)g(T90PWM1,)323 b(A)-6 b(T90CAN128,)2152 839 y(A)g(T90CAN32,)115 +b(A)-6 b(T90CAN64,)115 b(A)-6 b(T-)2152 917 y(mega128,)26 +b(A)-6 b(Tmega1284P)g(,)26 b(A)-6 b(Tmega165,)2152 996 +y(A)g(Tmega165P)g(,)105 b(A)-6 b(Tmega168P)g(,)105 b(A)-6 +b(T-)2152 1075 y(mega169,)46 b(A)-6 b(Tmega169P)g(,)41 +b(A)-6 b(Tmega325,)2152 1154 y(A)g(Tmega3250,)98 b(A)-6 +b(Tmega3250P)g(,)84 b(A)-6 b(T-)2152 1233 y(mega328P)g(,)26 +b(A)-6 b(Tmega329,)26 b(A)-6 b(Tmega3290,)2152 1312 y(A)g(Tmega3290P)g +(,)100 b(A)-6 b(Tmega406,)117 b(A)-6 b(T-)2152 1391 y(mega48P)g(,)73 +b(A)-6 b(Tmega64,)84 b(A)-6 b(Tmega645,)2152 1469 y(A)g(Tmega6450,)130 +b(A)-6 b(Tmega649,)129 b(A)-6 b(T-)2152 1548 y(mega6490,)46 +b(A)-6 b(Tmega88P)g(,)41 b(A)-6 b(Tmega168,)2152 1627 +y(A)g(Tmega48,)51 b(A)-6 b(Tmega88,)50 b(A)-6 b(Tmega640,)2152 +1706 y(A)g(Tmega1280,)112 b(A)-6 b(Tmega1281,)112 b(A)-6 +b(T-)2152 1785 y(mega2560,)161 b(A)-6 b(Tmega2561,)161 +b(A)-6 b(T-)2152 1864 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 1943 y(mega644P)g(,)17 b(A)-6 b(Tmega644,)19 +b(A)-6 b(T90USB162,)2152 2022 y(A)g(T90USB82,)310 b(A)-6 +b(T90USB1287,)2152 2100 y(A)g(T90USB1286,)276 b(A)-6 +b(T90USB647,)2152 2179 y(A)g(T90USB646)p 3383 2203 V +515 2206 2872 4 v 515 2206 V 515 2443 4 237 v 568 2262 +a(TIM0_-)568 2340 y(COMP)g(A_-)568 2419 y(v)n(ect)p 1019 +2443 V 1072 2262 a(SIG_-)1072 2340 y(OUTPUT_-)1072 2419 +y(COMP)g(ARE0A)p 1524 2443 V 1577 2262 a(Timer/Coun)n(ter)1577 +2340 y(Compare)1577 2419 y(Matc)n(h)24 b(A)p 2099 2443 +V 2152 2262 a(A)-6 b(Ttin)n(y13,)27 b(A)-6 b(Ttin)n(y43U,)26 +b(A)-6 b(Ttin)n(y24,)27 b(A)-6 b(T-)2152 2340 y(tin)n(y44,)77 +b(A)-6 b(Ttin)n(y84,)77 b(A)-6 b(Ttin)n(y45,)77 b(A)-6 +b(T-)2152 2419 y(tin)n(y25,)24 b(A)-6 b(Ttin)n(y85)p +3383 2443 V 515 2446 2872 4 v 515 2446 V 515 2683 4 237 +v 568 2501 a(TIM0_-)568 2580 y(COMPB_-)568 2659 y(v)n(ect)p +1019 2683 V 1072 2501 a(SIG_-)1072 2580 y(OUTPUT_-)1072 +2659 y(COMP)g(ARE0B)p 1524 2683 V 1577 2501 a(Timer/Coun)n(ter)1577 +2580 y(Compare)1577 2659 y(Matc)n(h)24 b(B)p 2099 2683 +V 2152 2501 a(A)-6 b(Ttin)n(y13,)27 b(A)-6 b(Ttin)n(y43U,)26 +b(A)-6 b(Ttin)n(y24,)27 b(A)-6 b(T-)2152 2580 y(tin)n(y44,)77 +b(A)-6 b(Ttin)n(y84,)77 b(A)-6 b(Ttin)n(y45,)77 b(A)-6 +b(T-)2152 2659 y(tin)n(y25,)24 b(A)-6 b(Ttin)n(y85)p +3383 2683 V 515 2686 2872 4 v 515 2686 V 515 2923 4 237 +v 568 2741 a(TIM0_-)568 2820 y(O)n(VF_v)n(ect)p 1019 +2923 V 1072 2741 a(SIG_-)1072 2820 y(O)n(VERFLO)n(W0)p +1524 2923 V 1577 2741 a(Timer/Coun)n(ter0)1577 2820 y(Ov)n(er\035o)n(w) +p 2099 2923 V 2152 2741 a(A)g(Ttin)n(y13,)27 b(A)-6 b(Ttin)n(y43U,)26 +b(A)-6 b(Ttin)n(y24,)27 b(A)-6 b(T-)2152 2820 y(tin)n(y44,)77 +b(A)-6 b(Ttin)n(y84,)77 b(A)-6 b(Ttin)n(y45,)77 b(A)-6 +b(T-)2152 2899 y(tin)n(y25,)24 b(A)-6 b(Ttin)n(y85)p +3383 2923 V 515 2926 2872 4 v 515 2926 V 515 3163 4 237 +v 568 2981 a(TIM1_-)568 3060 y(CAPT_v)n(ect)p 1019 3163 +V 1072 2981 a(SIG_-)1072 3060 y(INPUT_-)1072 3139 y(CAPTURE1)p +1524 3163 V 1577 2981 a(Timer/Coun)n(ter1)1577 3060 y(Capture)25 +b(Ev)n(en)n(t)p 2099 3163 V 2152 2981 a(A)-6 b(Ttin)n(y24,)24 +b(A)-6 b(Ttin)n(y44,)24 b(A)-6 b(Ttin)n(y84)p 3383 3163 +V 515 3166 2872 4 v 515 3166 V 515 3403 4 237 v 568 3221 +a(TIM1_-)568 3300 y(COMP)g(A_-)568 3379 y(v)n(ect)p 1019 +3403 V 1072 3221 a(SIG_-)1072 3300 y(OUTPUT_-)1072 3379 +y(COMP)g(ARE1A)p 1524 3403 V 1577 3221 a(Timer/Coun)n(ter1)1577 +3300 y(Compare)1577 3379 y(Matc)n(h)24 b(A)p 2099 3403 +V 2152 3221 a(A)-6 b(Ttin)n(y24,)45 b(A)-6 b(Ttin)n(y44,)44 +b(A)-6 b(Ttin)n(y84,)44 b(A)-6 b(T-)2152 3300 y(tin)n(y45,)24 +b(A)-6 b(Ttin)n(y25,)25 b(A)-6 b(Ttin)n(y85)p 3383 3403 +V 515 3406 2872 4 v 515 3406 V 515 3643 4 237 v 568 3461 +a(TIM1_-)568 3540 y(COMPB_-)568 3619 y(v)n(ect)p 1019 +3643 V 1072 3461 a(SIG_-)1072 3540 y(OUTPUT_-)1072 3619 +y(COMP)g(ARE1B)p 1524 3643 V 1577 3461 a(Timer/Coun)n(ter1)1577 +3540 y(Compare)1577 3619 y(Matc)n(h)24 b(B)p 2099 3643 +V 2152 3461 a(A)-6 b(Ttin)n(y24,)45 b(A)-6 b(Ttin)n(y44,)44 +b(A)-6 b(Ttin)n(y84,)44 b(A)-6 b(T-)2152 3540 y(tin)n(y45,)24 +b(A)-6 b(Ttin)n(y25,)25 b(A)-6 b(Ttin)n(y85)p 3383 3643 +V 515 3646 2872 4 v 515 3646 V 515 3804 4 158 v 568 3701 +a(TIM1_-)568 3780 y(O)n(VF_v)n(ect)p 1019 3804 V 1072 +3701 a(SIG_-)1072 3780 y(O)n(VERFLO)n(W1)p 1524 3804 +V 1577 3701 a(Timer/Coun)n(ter1)1577 3780 y(Ov)n(er\035o)n(w)p +2099 3804 V 2152 3701 a(A)g(Ttin)n(y24,)45 b(A)-6 b(Ttin)n(y44,)44 +b(A)-6 b(Ttin)n(y84,)44 b(A)-6 b(T-)2152 3780 y(tin)n(y45,)24 +b(A)-6 b(Ttin)n(y25,)25 b(A)-6 b(Ttin)n(y85)p 3383 3804 +V 515 3807 2872 4 v 515 3807 V 515 4044 4 237 v 568 3862 +a(TIMER0_-)568 3941 y(CAPT_v)n(ect)p 1019 4044 V 1072 +3862 a(SIG_-)1072 3941 y(INPUT_-)1072 4020 y(CAPTURE0)p +1524 4044 V 1577 3862 a(ADC)73 b(Con)n(v)n(er-)1577 3941 +y(sion)23 b(Complete)p 2099 4044 V 2152 3862 a(A)-6 b(Ttin)n(y261,)25 +b(A)-6 b(Ttin)n(y461,)24 b(A)-6 b(Ttin)n(y861)p 3383 +4044 V 515 4047 2872 4 v 515 4047 V 515 4836 4 789 v +568 4102 a(TIMER0_-)568 4181 y(COMP)g(A_-)568 4260 y(v)n(ect)p +1019 4836 V 1072 4102 a(SIG_-)1072 4181 y(OUTPUT_-)1072 +4260 y(COMP)g(ARE0A)p 1524 4836 V 1577 4102 a(TimerCoun)n(ter0)1577 +4181 y(Compare)1577 4260 y(Matc)n(h)24 b(A)p 2099 4836 +V 2152 4102 a(A)-6 b(Tmega168,)51 b(A)-6 b(Tmega48,)51 +b(A)-6 b(Tmega88,)2152 4181 y(A)g(Tmega640,)129 b(A)-6 +b(Tmega1280,)130 b(A)-6 b(T-)2152 4260 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 4339 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 4418 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 4496 +y(A)g(Tmega16HV)e(A,)83 b(A)-6 b(Ttin)n(y2313,)99 b(A)-6 +b(T-)2152 4575 y(tin)n(y48,)54 b(A)-6 b(Ttin)n(y261,)53 +b(A)-6 b(Ttin)n(y461,)54 b(A)-6 b(T-)2152 4654 y(tin)n(y861,)50 +b(A)-6 b(T90USB162,)50 b(A)-6 b(T90USB82,)2152 4733 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 4812 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 4836 V 515 4839 2872 4 v 515 +5179 2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 240 256 +TeXDict begin 240 255 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(240)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1809 +4 1184 v 568 681 a Ff(TIMER0_-)568 760 y(COMPB_-)568 +839 y(v)n(ect)p 1019 1809 V 1072 681 a(SIG_-)1072 760 +y(OUTPUT_-)1072 839 y(COMP)-6 b(ARE0B,)1072 917 y(SIG_-)1072 +996 y(OUTPUT_-)1072 1075 y(COMP)g(ARE0_-)1072 1154 y(B)p +1524 1809 V 1577 681 a(Timer)35 b(Coun)n(ter)1577 760 +y(0)159 b(Compare)1577 839 y(Matc)n(h)24 b(B)p 2099 1809 +V 2152 681 a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 +760 y(A)g(T90PWM1,)104 b(A)-6 b(Tmega1284P)g(,)88 b(A)-6 +b(T-)2152 839 y(mega168P)g(,)154 b(A)-6 b(Tmega328P)g(,)154 +b(A)-6 b(T-)2152 917 y(mega32HVB,)132 b(A)-6 b(Tmega48P)g(,)132 +b(A)-6 b(T-)2152 996 y(mega88P)g(,)73 b(A)-6 b(Tmega168,)85 +b(A)-6 b(Tmega48,)2152 1075 y(A)g(Tmega88,)164 b(A)-6 +b(Tmega640,)165 b(A)-6 b(T-)2152 1154 y(mega1280,)161 +b(A)-6 b(Tmega1281,)161 b(A)-6 b(T-)2152 1233 y(mega2560,)161 +b(A)-6 b(Tmega2561,)161 b(A)-6 b(T-)2152 1312 y(mega324P)g(,)154 +b(A)-6 b(Tmega164P)g(,)154 b(A)-6 b(T-)2152 1391 y(mega644P)g(,)159 +b(A)-6 b(Tmega644,)191 b(A)-6 b(T-)2152 1469 y(mega16HV)e(A,)127 +b(A)-6 b(Ttin)n(y2313,)153 b(A)-6 b(T-)2152 1548 y(tin)n(y48,)54 +b(A)-6 b(Ttin)n(y261,)53 b(A)-6 b(Ttin)n(y461,)54 b(A)-6 +b(T-)2152 1627 y(tin)n(y861,)50 b(A)-6 b(T90USB162,)50 +b(A)-6 b(T90USB82,)2152 1706 y(A)g(T90USB1287,)240 b(A)-6 +b(T90USB1286,)2152 1785 y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p +3383 1809 V 515 1812 2872 4 v 515 1812 V 515 2364 4 553 +v 568 1867 a(TIMER0_-)568 1946 y(COMP_-)568 2025 y(A_v)n(ect)p +1019 2364 V 1072 1867 a(SIG_-)1072 1946 y(OUTPUT_-)1072 +2025 y(COMP)g(ARE0A,)1072 2104 y(SIG_-)1072 2183 y(OUTPUT_-)1072 +2262 y(COMP)g(ARE0_-)1072 2340 y(A)p 1524 2364 V 1577 +1867 a(Timer/Coun)n(ter0)1577 1946 y(Compare)1577 2025 +y(Matc)n(h)24 b(A)p 2099 2364 V 2152 1867 a(A)-6 b(T90PWM3,)365 +b(A)-6 b(T90PWM2,)2152 1946 y(A)g(T90PWM1)p 3383 2364 +V 515 2367 2872 4 v 515 2367 V 515 3235 4 868 v 568 2423 +a(TIMER0_-)568 2501 y(COMP_v)n(ect)p 1019 3235 V 1072 +2423 a(SIG_-)1072 2501 y(OUTPUT_-)1072 2580 y(COMP)g(ARE0)p +1524 3235 V 1577 2423 a(Timer/Coun)n(ter0)1577 2501 y(Compare)1577 +2580 y(Matc)n(h)p 2099 3235 V 2152 2423 a(A)g(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 2501 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega103,)131 b(A)-6 b(T-)2152 2580 y(mega128,)83 b(A)-6 +b(Tmega16,)81 b(A)-6 b(Tmega161,)2152 2659 y(A)g(Tmega162,)147 +b(A)-6 b(Tmega165,)147 b(A)-6 b(T-)2152 2738 y(mega165P)g(,)23 +b(A)-6 b(Tmega169,)22 b(A)-6 b(Tmega169P)g(,)2152 2817 +y(A)g(Tmega32,)33 b(A)-6 b(Tmega323,)33 b(A)-6 b(Tmega325,)2152 +2896 y(A)g(Tmega3250,)302 b(A)-6 b(Tmega3250P)g(,)2152 +2975 y(A)g(Tmega329,)129 b(A)-6 b(Tmega3290,)130 b(A)-6 +b(T-)2152 3054 y(mega3290P)g(,)42 b(A)-6 b(Tmega64,)45 +b(A)-6 b(Tmega645,)2152 3132 y(A)g(Tmega6450,)130 b(A)-6 +b(Tmega649,)129 b(A)-6 b(T-)2152 3211 y(mega6490,)22 +b(A)-6 b(Tmega8515,)22 b(A)-6 b(Tmega8535)p 3383 3235 +V 515 3238 2872 4 v 515 3238 V 515 3396 4 158 v 568 3293 +a(TIMER0_-)568 3372 y(O)n(VF0_v)n(ect)p 1019 3396 V 1072 +3293 a(SIG_-)1072 3372 y(O)n(VERFLO)n(W0)p 1524 3396 +V 1577 3293 a(Timer/Coun)n(ter0)1577 3372 y(Ov)n(er\035o)n(w)p +2099 3396 V 2152 3293 a(A)g(T90S2313,)40 b(A)-6 b(T90S2323,)39 +b(A)-6 b(T90S2343,)2152 3372 y(A)g(Ttin)n(y22,)24 b(A)-6 +b(Ttin)n(y26)p 3383 3396 V 515 3399 2872 4 v 515 5179 +2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 241 257 +TeXDict begin 241 256 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(241)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 3149 +4 2524 v 568 681 a Ff(TIMER0_-)568 760 y(O)n(VF_v)n(ect)p +1019 3149 V 1072 681 a(SIG_-)1072 760 y(O)n(VERFLO)n(W0)p +1524 3149 V 1577 681 a(Timer/Coun)n(ter0)1577 760 y(Ov)n(er\035o)n(w)p +2099 3149 V 2152 681 a(A)-6 b(T90S1200,)40 b(A)-6 b(T90S2333,)39 +b(A)-6 b(T90S4414,)2152 760 y(A)g(T90S4433,)40 b(A)-6 +b(T90S4434,)39 b(A)-6 b(T90S8515,)2152 839 y(A)g(T90S8535,)335 +b(A)-6 b(T90PWM216,)2152 917 y(A)g(T90PWM2B,)244 b(A)-6 +b(T90PWM316,)2152 996 y(A)g(T90PWM3B,)315 b(A)-6 b(T90PWM3,)2152 +1075 y(A)g(T90PWM2,)365 b(A)-6 b(T90PWM1,)2152 1154 y(A)g(T90CAN128,) +316 b(A)-6 b(T90CAN32,)2152 1233 y(A)g(T90CAN64,)131 +b(A)-6 b(Tmega103,)131 b(A)-6 b(T-)2152 1312 y(mega128,)46 +b(A)-6 b(Tmega1284P)g(,)42 b(A)-6 b(Tmega16,)2152 1391 +y(A)g(Tmega161,)147 b(A)-6 b(Tmega162,)147 b(A)-6 b(T-)2152 +1469 y(mega163,)44 b(A)-6 b(Tmega165,)43 b(A)-6 b(Tmega165P)g(,)2152 +1548 y(A)g(Tmega168P)g(,)115 b(A)-6 b(Tmega169,)137 b(A)-6 +b(T-)2152 1627 y(mega169P)g(,)58 b(A)-6 b(Tmega32,)64 +b(A)-6 b(Tmega323,)2152 1706 y(A)g(Tmega325,)129 b(A)-6 +b(Tmega3250,)130 b(A)-6 b(T-)2152 1785 y(mega3250P)g(,)137 +b(A)-6 b(Tmega328P)g(,)136 b(A)-6 b(T-)2152 1864 y(mega329,)179 +b(A)-6 b(Tmega3290,)178 b(A)-6 b(T-)2152 1943 y(mega3290P)g(,)98 +b(A)-6 b(Tmega32HVB,)96 b(A)-6 b(T-)2152 2022 y(mega48P)g(,)73 +b(A)-6 b(Tmega64,)84 b(A)-6 b(Tmega645,)2152 2100 y(A)g(Tmega6450,)130 +b(A)-6 b(Tmega649,)129 b(A)-6 b(T-)2152 2179 y(mega6490,)65 +b(A)-6 b(Tmega8,)64 b(A)-6 b(Tmega8515,)2152 2258 y(A)g(Tmega8535,)138 +b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 2337 y(mega168,)100 +b(A)-6 b(Tmega48,)100 b(A)-6 b(Tmega88,)2152 2416 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 2495 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 2574 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 2653 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 2731 +y(A)g(Tmega16HV)e(A,)31 b(A)-6 b(Ttin)n(y11,)33 b(A)-6 +b(Ttin)n(y12,)2152 2810 y(A)g(Ttin)n(y15,)92 b(A)-6 b(Ttin)n(y2313,)92 +b(A)-6 b(Ttin)n(y28,)2152 2889 y(A)g(Ttin)n(y48,)21 b(A)-6 +b(Ttin)n(y261,)21 b(A)-6 b(Ttin)n(y461,)21 b(A)-6 b(T-)2152 +2968 y(tin)n(y861,)50 b(A)-6 b(T90USB162,)50 b(A)-6 b(T90USB82,)2152 +3047 y(A)g(T90USB1287,)240 b(A)-6 b(T90USB1286,)2152 +3126 y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p 3383 3149 +V 515 3153 2872 4 v 515 3153 V 515 3389 4 237 v 568 3208 +a(TIMER1_-)568 3287 y(CAPT1_-)568 3366 y(v)n(ect)p 1019 +3389 V 1072 3208 a(SIG_-)1072 3287 y(INPUT_-)1072 3366 +y(CAPTURE1)p 1524 3389 V 1577 3208 a(Timer/Coun)n(ter1)1577 +3287 y(Capture)25 b(Ev)n(en)n(t)p 2099 3389 V 2152 3208 +a(A)-6 b(T90S2313)p 3383 3389 V 515 3393 2872 4 v 515 +5179 2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 242 258 +TeXDict begin 242 257 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(242)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2834 +4 2209 v 568 681 a Ff(TIMER1_-)568 760 y(CAPT_v)n(ect)p +1019 2834 V 1072 681 a(SIG_-)1072 760 y(INPUT_-)1072 +839 y(CAPTURE1)p 1524 2834 V 1577 681 a(Timer/Coun)n(ter)1577 +760 y(Capture)f(Ev)n(en)n(t)p 2099 2834 V 2152 681 a(A)-6 +b(T90S2333,)40 b(A)-6 b(T90S4414,)39 b(A)-6 b(T90S4433,)2152 +760 y(A)g(T90S4434,)40 b(A)-6 b(T90S8515,)39 b(A)-6 b(T90S8535,)2152 +839 y(A)g(T90PWM216,)245 b(A)-6 b(T90PWM2B,)2152 917 +y(A)g(T90PWM316,)245 b(A)-6 b(T90PWM3B,)2152 996 y(A)g(T90PWM3,)365 +b(A)-6 b(T90PWM2,)2152 1075 y(A)g(T90PWM1,)323 b(A)-6 +b(T90CAN128,)2152 1154 y(A)g(T90CAN32,)115 b(A)-6 b(T90CAN64,)115 +b(A)-6 b(T-)2152 1233 y(mega103,)26 b(A)-6 b(Tmega128,)26 +b(A)-6 b(Tmega1284P)g(,)2152 1312 y(A)g(Tmega16,)164 +b(A)-6 b(Tmega161,)165 b(A)-6 b(T-)2152 1391 y(mega162,)65 +b(A)-6 b(Tmega163,)64 b(A)-6 b(Tmega165,)2152 1469 y(A)g(Tmega165P)g(,) +105 b(A)-6 b(Tmega168P)g(,)105 b(A)-6 b(T-)2152 1548 +y(mega169,)66 b(A)-6 b(Tmega169P)g(,)57 b(A)-6 b(Tmega32,)2152 +1627 y(A)g(Tmega323,)147 b(A)-6 b(Tmega325,)147 b(A)-6 +b(T-)2152 1706 y(mega3250,)153 b(A)-6 b(Tmega3250P)g(,)127 +b(A)-6 b(T-)2152 1785 y(mega328P)g(,)26 b(A)-6 b(Tmega329,)26 +b(A)-6 b(Tmega3290,)2152 1864 y(A)g(Tmega3290P)g(,)105 +b(A)-6 b(Tmega48P)g(,)105 b(A)-6 b(T-)2152 1943 y(mega64,)65 +b(A)-6 b(Tmega645,)64 b(A)-6 b(Tmega6450,)2152 2022 y(A)g(Tmega649,)129 +b(A)-6 b(Tmega6490,)130 b(A)-6 b(T-)2152 2100 y(mega8,)64 +b(A)-6 b(Tmega8515,)65 b(A)-6 b(Tmega8535,)2152 2179 +y(A)g(Tmega88P)g(,)130 b(A)-6 b(Tmega168,)157 b(A)-6 +b(T-)2152 2258 y(mega48,)100 b(A)-6 b(Tmega88,)99 b(A)-6 +b(Tmega640,)2152 2337 y(A)g(Tmega1280,)112 b(A)-6 b(Tmega1281,)112 +b(A)-6 b(T-)2152 2416 y(mega2560,)161 b(A)-6 b(Tmega2561,)161 +b(A)-6 b(T-)2152 2495 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 2574 y(mega644P)g(,)44 b(A)-6 b(Tmega644,)47 +b(A)-6 b(Ttin)n(y2313,)2152 2653 y(A)g(Ttin)n(y48,)18 +b(A)-6 b(T90USB162,)19 b(A)-6 b(T90USB82,)2152 2731 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 2810 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 2834 V 515 2837 2872 4 v 515 +2837 V 515 3074 4 237 v 568 2892 a(TIMER1_-)568 2971 +y(CMP)g(A_v)n(ect)p 1019 3074 V 1072 2892 a(SIG_-)1072 +2971 y(OUTPUT_-)1072 3050 y(COMP)g(ARE1A)p 1524 3074 +V 1577 2892 a(Timer/Coun)n(ter1)1577 2971 y(Compare)1577 +3050 y(Matc)n(h)24 b(1A)p 2099 3074 V 2152 2892 a(A)-6 +b(Ttin)n(y26)p 3383 3074 V 515 3077 2872 4 v 515 3077 +V 515 3314 4 237 v 568 3132 a(TIMER1_-)568 3211 y(CMPB_v)n(ect)p +1019 3314 V 1072 3132 a(SIG_-)1072 3211 y(OUTPUT_-)1072 +3290 y(COMP)g(ARE1B)p 1524 3314 V 1577 3132 a(Timer/Coun)n(ter1)1577 +3211 y(Compare)1577 3290 y(Matc)n(h)24 b(1B)p 2099 3314 +V 2152 3132 a(A)-6 b(Ttin)n(y26)p 3383 3314 V 515 3317 +2872 4 v 515 3317 V 515 3554 4 237 v 568 3372 a(TIMER1_-)568 +3451 y(COMP1_-)568 3530 y(v)n(ect)p 1019 3554 V 1072 +3372 a(SIG_-)1072 3451 y(OUTPUT_-)1072 3530 y(COMP)g(ARE1A)p +1524 3554 V 1577 3372 a(Timer/Coun)n(ter1)1577 3451 y(Compare)1577 +3530 y(Matc)n(h)p 2099 3554 V 2152 3372 a(A)g(T90S2313)p +3383 3554 V 515 3557 2872 4 v 515 5179 2865 4 v 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 243 259 +TeXDict begin 243 258 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(243)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2992 +4 2367 v 568 681 a Ff(TIMER1_-)568 760 y(COMP)-6 b(A_-)568 +839 y(v)n(ect)p 1019 2992 V 1072 681 a(SIG_-)1072 760 +y(OUTPUT_-)1072 839 y(COMP)g(ARE1A)p 1524 2992 V 1577 +681 a(Timer/Coun)n(ter1)1577 760 y(Compare)1577 839 y(Matc)n(h)24 +b(A)p 2099 2992 V 2152 681 a(A)-6 b(T90S4414,)40 b(A)-6 +b(T90S4434,)39 b(A)-6 b(T90S8515,)2152 760 y(A)g(T90S8535,)335 +b(A)-6 b(T90PWM216,)2152 839 y(A)g(T90PWM2B,)244 b(A)-6 +b(T90PWM316,)2152 917 y(A)g(T90PWM3B,)315 b(A)-6 b(T90PWM3,)2152 +996 y(A)g(T90PWM2,)365 b(A)-6 b(T90PWM1,)2152 1075 y(A)g(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 1154 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega103,)131 b(A)-6 b(T-)2152 1233 y(mega128,)46 b(A)-6 +b(Tmega1284P)g(,)42 b(A)-6 b(Tmega16,)2152 1312 y(A)g(Tmega161,)147 +b(A)-6 b(Tmega162,)147 b(A)-6 b(T-)2152 1391 y(mega163,)44 +b(A)-6 b(Tmega165,)43 b(A)-6 b(Tmega165P)g(,)2152 1469 +y(A)g(Tmega168P)g(,)115 b(A)-6 b(Tmega169,)137 b(A)-6 +b(T-)2152 1548 y(mega169P)g(,)58 b(A)-6 b(Tmega32,)64 +b(A)-6 b(Tmega323,)2152 1627 y(A)g(Tmega325,)129 b(A)-6 +b(Tmega3250,)130 b(A)-6 b(T-)2152 1706 y(mega3250P)g(,)137 +b(A)-6 b(Tmega328P)g(,)136 b(A)-6 b(T-)2152 1785 y(mega329,)179 +b(A)-6 b(Tmega3290,)178 b(A)-6 b(T-)2152 1864 y(mega3290P)g(,)98 +b(A)-6 b(Tmega32HVB,)96 b(A)-6 b(T-)2152 1943 y(mega48P)g(,)73 +b(A)-6 b(Tmega64,)84 b(A)-6 b(Tmega645,)2152 2022 y(A)g(Tmega6450,)130 +b(A)-6 b(Tmega649,)129 b(A)-6 b(T-)2152 2100 y(mega6490,)65 +b(A)-6 b(Tmega8,)64 b(A)-6 b(Tmega8515,)2152 2179 y(A)g(Tmega8535,)138 +b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 2258 y(mega168,)100 +b(A)-6 b(Tmega48,)100 b(A)-6 b(Tmega88,)2152 2337 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 2416 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 2495 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 2574 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 2653 +y(A)g(Tmega16HV)e(A,)83 b(A)-6 b(Ttin)n(y2313,)99 b(A)-6 +b(T-)2152 2731 y(tin)n(y48,)54 b(A)-6 b(Ttin)n(y261,)53 +b(A)-6 b(Ttin)n(y461,)54 b(A)-6 b(T-)2152 2810 y(tin)n(y861,)50 +b(A)-6 b(T90USB162,)50 b(A)-6 b(T90USB82,)2152 2889 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 2968 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 2992 V 515 2995 2872 4 v 515 +5179 2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 244 260 +TeXDict begin 244 259 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(244)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2992 +4 2367 v 568 681 a Ff(TIMER1_-)568 760 y(COMPB_-)568 +839 y(v)n(ect)p 1019 2992 V 1072 681 a(SIG_-)1072 760 +y(OUTPUT_-)1072 839 y(COMP)-6 b(ARE1B)p 1524 2992 V 1577 +681 a(Timer/Coun)n(ter1)1577 760 y(Compare)1577 839 y(Matc)n(hB)p +2099 2992 V 2152 681 a(A)g(T90S4414,)40 b(A)-6 b(T90S4434,)39 +b(A)-6 b(T90S8515,)2152 760 y(A)g(T90S8535,)335 b(A)-6 +b(T90PWM216,)2152 839 y(A)g(T90PWM2B,)244 b(A)-6 b(T90PWM316,)2152 +917 y(A)g(T90PWM3B,)315 b(A)-6 b(T90PWM3,)2152 996 y(A)g(T90PWM2,)365 +b(A)-6 b(T90PWM1,)2152 1075 y(A)g(T90CAN128,)316 b(A)-6 +b(T90CAN32,)2152 1154 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega103,)131 +b(A)-6 b(T-)2152 1233 y(mega128,)46 b(A)-6 b(Tmega1284P)g(,)42 +b(A)-6 b(Tmega16,)2152 1312 y(A)g(Tmega161,)147 b(A)-6 +b(Tmega162,)147 b(A)-6 b(T-)2152 1391 y(mega163,)44 b(A)-6 +b(Tmega165,)43 b(A)-6 b(Tmega165P)g(,)2152 1469 y(A)g(Tmega168P)g(,)115 +b(A)-6 b(Tmega169,)137 b(A)-6 b(T-)2152 1548 y(mega169P)g(,)58 +b(A)-6 b(Tmega32,)64 b(A)-6 b(Tmega323,)2152 1627 y(A)g(Tmega325,)129 +b(A)-6 b(Tmega3250,)130 b(A)-6 b(T-)2152 1706 y(mega3250P)g(,)137 +b(A)-6 b(Tmega328P)g(,)136 b(A)-6 b(T-)2152 1785 y(mega329,)179 +b(A)-6 b(Tmega3290,)178 b(A)-6 b(T-)2152 1864 y(mega3290P)g(,)98 +b(A)-6 b(Tmega32HVB,)96 b(A)-6 b(T-)2152 1943 y(mega48P)g(,)73 +b(A)-6 b(Tmega64,)84 b(A)-6 b(Tmega645,)2152 2022 y(A)g(Tmega6450,)130 +b(A)-6 b(Tmega649,)129 b(A)-6 b(T-)2152 2100 y(mega6490,)65 +b(A)-6 b(Tmega8,)64 b(A)-6 b(Tmega8515,)2152 2179 y(A)g(Tmega8535,)138 +b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 2258 y(mega168,)100 +b(A)-6 b(Tmega48,)100 b(A)-6 b(Tmega88,)2152 2337 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 2416 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 2495 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 2574 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 2653 +y(A)g(Tmega16HV)e(A,)83 b(A)-6 b(Ttin)n(y2313,)99 b(A)-6 +b(T-)2152 2731 y(tin)n(y48,)54 b(A)-6 b(Ttin)n(y261,)53 +b(A)-6 b(Ttin)n(y461,)54 b(A)-6 b(T-)2152 2810 y(tin)n(y861,)50 +b(A)-6 b(T90USB162,)50 b(A)-6 b(T90USB82,)2152 2889 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 2968 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 2992 V 515 2995 2872 4 v 515 +2995 V 515 3626 4 631 v 568 3050 a(TIMER1_-)568 3129 +y(COMPC_-)568 3208 y(v)n(ect)p 1019 3626 V 1072 3050 +a(SIG_-)1072 3129 y(OUTPUT_-)1072 3208 y(COMP)g(ARE1C)p +1524 3626 V 1577 3050 a(Timer/Coun)n(ter1)1577 3129 y(Compare)1577 +3208 y(Matc)n(h)24 b(C)p 2099 3626 V 2152 3050 a(A)-6 +b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 3129 y(A)g(T90CAN64,)131 +b(A)-6 b(Tmega128,)131 b(A)-6 b(T-)2152 3208 y(mega64,)65 +b(A)-6 b(Tmega640,)64 b(A)-6 b(Tmega1280,)2152 3287 y(A)g(Tmega1281,) +344 b(A)-6 b(Tmega2560,)2152 3366 y(A)g(Tmega2561,)328 +b(A)-6 b(T90USB162,)2152 3445 y(A)g(T90USB82,)310 b(A)-6 +b(T90USB1287,)2152 3523 y(A)g(T90USB1286,)276 b(A)-6 +b(T90USB647,)2152 3602 y(A)g(T90USB646)p 3383 3626 V +515 3629 2872 4 v 515 3629 V 515 3866 4 237 v 568 3685 +a(TIMER1_-)568 3763 y(COMPD_-)568 3842 y(v)n(ect)p 1019 +3866 V 1072 3685 a(SIG_-)1072 3763 y(OUTPUT_-)1072 3842 +y(COMP)g(ARE0D)p 1524 3866 V 1577 3685 a(Timer/Coun)n(ter1)1577 +3763 y(Compare)1577 3842 y(Matc)n(h)24 b(D)p 2099 3866 +V 2152 3685 a(A)-6 b(Ttin)n(y261,)25 b(A)-6 b(Ttin)n(y461,)24 +b(A)-6 b(Ttin)n(y861)p 3383 3866 V 515 3869 2872 4 v +515 3869 V 515 4106 4 237 v 568 3924 a(TIMER1_-)568 4003 +y(COMP_v)n(ect)p 1019 4106 V 1072 3924 a(SIG_-)1072 4003 +y(OUTPUT_-)1072 4082 y(COMP)g(ARE1A)p 1524 4106 V 1577 +3924 a(Timer/Coun)n(ter1)1577 4003 y(Compare)1577 4082 +y(Matc)n(h)p 2099 4106 V 2152 3924 a(A)g(T90S2333,)25 +b(A)-6 b(T90S4433,)25 b(A)-6 b(Ttin)n(y15)p 3383 4106 +V 515 4109 2872 4 v 515 4109 V 515 4267 4 158 v 568 4164 +a(TIMER1_-)568 4243 y(O)n(VF1_v)n(ect)p 1019 4267 V 1072 +4164 a(SIG_-)1072 4243 y(O)n(VERFLO)n(W1)p 1524 4267 +V 1577 4164 a(Timer/Coun)n(ter1)1577 4243 y(Ov)n(er\035o)n(w)p +2099 4267 V 2152 4164 a(A)g(T90S2313,)25 b(A)-6 b(Ttin)n(y26)p +3383 4267 V 515 4270 2872 4 v 515 5179 2865 4 v 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 245 261 +TeXDict begin 245 260 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(245)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 2992 +4 2367 v 568 681 a Ff(TIMER1_-)568 760 y(O)n(VF_v)n(ect)p +1019 2992 V 1072 681 a(SIG_-)1072 760 y(O)n(VERFLO)n(W1)p +1524 2992 V 1577 681 a(Timer/Coun)n(ter1)1577 760 y(Ov)n(er\035o)n(w)p +2099 2992 V 2152 681 a(A)-6 b(T90S2333,)40 b(A)-6 b(T90S4414,)39 +b(A)-6 b(T90S4433,)2152 760 y(A)g(T90S4434,)40 b(A)-6 +b(T90S8515,)39 b(A)-6 b(T90S8535,)2152 839 y(A)g(T90PWM216,)245 +b(A)-6 b(T90PWM2B,)2152 917 y(A)g(T90PWM316,)245 b(A)-6 +b(T90PWM3B,)2152 996 y(A)g(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 +1075 y(A)g(T90PWM1,)323 b(A)-6 b(T90CAN128,)2152 1154 +y(A)g(T90CAN32,)115 b(A)-6 b(T90CAN64,)115 b(A)-6 b(T-)2152 +1233 y(mega103,)26 b(A)-6 b(Tmega128,)26 b(A)-6 b(Tmega1284P)g(,)2152 +1312 y(A)g(Tmega16,)164 b(A)-6 b(Tmega161,)165 b(A)-6 +b(T-)2152 1391 y(mega162,)65 b(A)-6 b(Tmega163,)64 b(A)-6 +b(Tmega165,)2152 1469 y(A)g(Tmega165P)g(,)105 b(A)-6 +b(Tmega168P)g(,)105 b(A)-6 b(T-)2152 1548 y(mega169,)66 +b(A)-6 b(Tmega169P)g(,)57 b(A)-6 b(Tmega32,)2152 1627 +y(A)g(Tmega323,)147 b(A)-6 b(Tmega325,)147 b(A)-6 b(T-)2152 +1706 y(mega3250,)153 b(A)-6 b(Tmega3250P)g(,)127 b(A)-6 +b(T-)2152 1785 y(mega328P)g(,)26 b(A)-6 b(Tmega329,)26 +b(A)-6 b(Tmega3290,)2152 1864 y(A)g(Tmega3290P)g(,)49 +b(A)-6 b(Tmega32HVB,)47 b(A)-6 b(T-)2152 1943 y(mega48P)g(,)73 +b(A)-6 b(Tmega64,)84 b(A)-6 b(Tmega645,)2152 2022 y(A)g(Tmega6450,)130 +b(A)-6 b(Tmega649,)129 b(A)-6 b(T-)2152 2100 y(mega6490,)65 +b(A)-6 b(Tmega8,)64 b(A)-6 b(Tmega8515,)2152 2179 y(A)g(Tmega8535,)138 +b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 2258 y(mega168,)27 +b(A)-6 b(Tmega48,)26 b(A)-6 b(Tmega88,)26 b(A)-6 b(T-)2152 +2337 y(mega640,)30 b(A)-6 b(Tmega1280,)29 b(A)-6 b(Tmega1281,)2152 +2416 y(A)g(Tmega2560,)112 b(A)-6 b(Tmega2561,)112 b(A)-6 +b(T-)2152 2495 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 2574 y(mega644P)g(,)159 b(A)-6 b(Tmega644,)191 +b(A)-6 b(T-)2152 2653 y(mega16HV)e(A,)43 b(A)-6 b(Ttin)n(y15,)48 +b(A)-6 b(Ttin)n(y2313,)2152 2731 y(A)g(Ttin)n(y48,)21 +b(A)-6 b(Ttin)n(y261,)21 b(A)-6 b(Ttin)n(y461,)21 b(A)-6 +b(T-)2152 2810 y(tin)n(y861,)50 b(A)-6 b(T90USB162,)50 +b(A)-6 b(T90USB82,)2152 2889 y(A)g(T90USB1287,)240 b(A)-6 +b(T90USB1286,)2152 2968 y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p +3383 2992 V 515 2995 2872 4 v 515 2995 V 515 3547 4 553 +v 568 3050 a(TIMER2_-)568 3129 y(COMP)g(A_-)568 3208 +y(v)n(ect)p 1019 3547 V 1072 3050 a(SIG_-)1072 3129 y(OUTPUT_-)1072 +3208 y(COMP)g(ARE2A)p 1524 3547 V 1577 3050 a(Timer/Coun)n(ter2)1577 +3129 y(Compare)1577 3208 y(Matc)n(h)24 b(A)p 2099 3547 +V 2152 3050 a(A)-6 b(Tmega168,)51 b(A)-6 b(Tmega48,)51 +b(A)-6 b(Tmega88,)2152 3129 y(A)g(Tmega640,)129 b(A)-6 +b(Tmega1280,)130 b(A)-6 b(T-)2152 3208 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 3287 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 3366 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 3445 +y(A)g(T90USB1287,)240 b(A)-6 b(T90USB1286,)2152 3523 +y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p 3383 3547 V +515 3550 2872 4 v 515 3550 V 515 4103 4 553 v 568 3606 +a(TIMER2_-)568 3685 y(COMPB_-)568 3763 y(v)n(ect)p 1019 +4103 V 1072 3606 a(SIG_-)1072 3685 y(OUTPUT_-)1072 3763 +y(COMP)g(ARE2B)p 1524 4103 V 1577 3606 a(Timer/Coun)n(ter2)1577 +3685 y(Compare)1577 3763 y(Matc)n(h)24 b(A)p 2099 4103 +V 2152 3606 a(A)-6 b(Tmega168,)51 b(A)-6 b(Tmega48,)51 +b(A)-6 b(Tmega88,)2152 3685 y(A)g(Tmega640,)129 b(A)-6 +b(Tmega1280,)130 b(A)-6 b(T-)2152 3763 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 3842 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 3921 y(mega164P)g(,)23 +b(A)-6 b(Tmega644P)g(,)22 b(A)-6 b(Tmega644,)2152 4000 +y(A)g(T90USB1287,)240 b(A)-6 b(T90USB1286,)2152 4079 +y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p 3383 4103 V +515 4106 2872 4 v 515 5179 2865 4 v 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 246 262 +TeXDict begin 246 261 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(246)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1651 +4 1026 v 568 681 a Ff(TIMER2_-)568 760 y(COMP_v)n(ect)p +1019 1651 V 1072 681 a(SIG_-)1072 760 y(OUTPUT_-)1072 +839 y(COMP)-6 b(ARE2)p 1524 1651 V 1577 681 a(Timer/Coun)n(ter2)1577 +760 y(Compare)1577 839 y(Matc)n(h)p 2099 1651 V 2152 +681 a(A)g(T90S4434,)446 b(A)-6 b(T90S8535,)2152 760 y(A)g(T90CAN128,) +316 b(A)-6 b(T90CAN32,)2152 839 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega103,)131 b(A)-6 b(T-)2152 917 y(mega128,)83 b(A)-6 +b(Tmega16,)81 b(A)-6 b(Tmega161,)2152 996 y(A)g(Tmega162,)147 +b(A)-6 b(Tmega163,)147 b(A)-6 b(T-)2152 1075 y(mega165,)46 +b(A)-6 b(Tmega165P)g(,)41 b(A)-6 b(Tmega169,)2152 1154 +y(A)g(Tmega169P)g(,)131 b(A)-6 b(Tmega32,)156 b(A)-6 +b(T-)2152 1233 y(mega323,)47 b(A)-6 b(Tmega325,)47 b(A)-6 +b(Tmega3250,)2152 1312 y(A)g(Tmega3250P)g(,)100 b(A)-6 +b(Tmega329,)117 b(A)-6 b(T-)2152 1391 y(mega3290,)27 +b(A)-6 b(Tmega3290P)g(,)26 b(A)-6 b(Tmega64,)2152 1469 +y(A)g(Tmega645,)129 b(A)-6 b(Tmega6450,)130 b(A)-6 b(T-)2152 +1548 y(mega649,)83 b(A)-6 b(Tmega6490,)82 b(A)-6 b(Tmega8,)2152 +1627 y(A)g(Tmega8535)p 3383 1651 V 515 1654 2872 4 v +515 1654 V 515 3389 4 1736 v 568 1709 a(TIMER2_-)568 +1788 y(O)n(VF_v)n(ect)p 1019 3389 V 1072 1709 a(SIG_-)1072 +1788 y(O)n(VERFLO)n(W2)p 1524 3389 V 1577 1709 a(Timer/Coun)n(ter2)1577 +1788 y(Ov)n(er\035o)n(w)p 2099 3389 V 2152 1709 a(A)g(T90S4434,)446 +b(A)-6 b(T90S8535,)2152 1788 y(A)g(T90CAN128,)316 b(A)-6 +b(T90CAN32,)2152 1867 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega103,)131 +b(A)-6 b(T-)2152 1946 y(mega128,)46 b(A)-6 b(Tmega1284P)g(,)42 +b(A)-6 b(Tmega16,)2152 2025 y(A)g(Tmega161,)147 b(A)-6 +b(Tmega162,)147 b(A)-6 b(T-)2152 2104 y(mega163,)44 b(A)-6 +b(Tmega165,)43 b(A)-6 b(Tmega165P)g(,)2152 2183 y(A)g(Tmega168P)g(,)115 +b(A)-6 b(Tmega169,)137 b(A)-6 b(T-)2152 2262 y(mega169P)g(,)58 +b(A)-6 b(Tmega32,)64 b(A)-6 b(Tmega323,)2152 2340 y(A)g(Tmega325,)129 +b(A)-6 b(Tmega3250,)130 b(A)-6 b(T-)2152 2419 y(mega3250P)g(,)137 +b(A)-6 b(Tmega328P)g(,)136 b(A)-6 b(T-)2152 2498 y(mega329,)179 +b(A)-6 b(Tmega3290,)178 b(A)-6 b(T-)2152 2577 y(mega3290P)g(,)41 +b(A)-6 b(Tmega48P)g(,)40 b(A)-6 b(Tmega64,)2152 2656 +y(A)g(Tmega645,)129 b(A)-6 b(Tmega6450,)130 b(A)-6 b(T-)2152 +2735 y(mega649,)83 b(A)-6 b(Tmega6490,)82 b(A)-6 b(Tmega8,)2152 +2814 y(A)g(Tmega8535,)138 b(A)-6 b(Tmega88P)g(,)114 b(A)-6 +b(T-)2152 2892 y(mega168,)100 b(A)-6 b(Tmega48,)100 b(A)-6 +b(Tmega88,)2152 2971 y(A)g(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 3050 y(mega1281,)161 b(A)-6 b(Tmega2560,)161 +b(A)-6 b(T-)2152 3129 y(mega2561,)172 b(A)-6 b(Tmega324P)g(,)143 +b(A)-6 b(T-)2152 3208 y(mega164P)g(,)23 b(A)-6 b(Tmega644P)g(,)22 +b(A)-6 b(Tmega644,)2152 3287 y(A)g(T90USB1287,)240 b(A)-6 +b(T90USB1286,)2152 3366 y(A)g(T90USB647,)25 b(A)-6 b(T90USB646)p +3383 3389 V 515 3393 2872 4 v 515 3393 V 515 4024 4 631 +v 568 3448 a(TIMER3_-)568 3527 y(CAPT_v)n(ect)p 1019 +4024 V 1072 3448 a(SIG_-)1072 3527 y(INPUT_-)1072 3606 +y(CAPTURE3)p 1524 4024 V 1577 3448 a(Timer/Coun)n(ter3)1577 +3527 y(Capture)25 b(Ev)n(en)n(t)p 2099 4024 V 2152 3448 +a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 3527 +y(A)g(T90CAN64,)131 b(A)-6 b(Tmega128,)131 b(A)-6 b(T-)2152 +3606 y(mega1284P)g(,)143 b(A)-6 b(Tmega162,)172 b(A)-6 +b(T-)2152 3685 y(mega64,)65 b(A)-6 b(Tmega640,)64 b(A)-6 +b(Tmega1280,)2152 3763 y(A)g(Tmega1281,)344 b(A)-6 b(Tmega2560,)2152 +3842 y(A)g(Tmega2561,)292 b(A)-6 b(T90USB1287,)2152 3921 +y(A)g(T90USB1286,)276 b(A)-6 b(T90USB647,)2152 4000 y(A)g(T90USB646)p +3383 4024 V 515 4027 2872 4 v 515 4027 V 515 4658 4 631 +v 568 4082 a(TIMER3_-)568 4161 y(COMP)g(A_-)568 4240 +y(v)n(ect)p 1019 4658 V 1072 4082 a(SIG_-)1072 4161 y(OUTPUT_-)1072 +4240 y(COMP)g(ARE3A)p 1524 4658 V 1577 4082 a(Timer/Coun)n(ter3)1577 +4161 y(Compare)1577 4240 y(Matc)n(h)24 b(A)p 2099 4658 +V 2152 4082 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +4161 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega128,)131 b(A)-6 +b(T-)2152 4240 y(mega1284P)g(,)143 b(A)-6 b(Tmega162,)172 +b(A)-6 b(T-)2152 4319 y(mega64,)65 b(A)-6 b(Tmega640,)64 +b(A)-6 b(Tmega1280,)2152 4398 y(A)g(Tmega1281,)344 b(A)-6 +b(Tmega2560,)2152 4477 y(A)g(Tmega2561,)292 b(A)-6 b(T90USB1287,)2152 +4555 y(A)g(T90USB1286,)276 b(A)-6 b(T90USB647,)2152 4634 +y(A)g(T90USB646)p 3383 4658 V 515 4661 2872 4 v 515 5179 +2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 247 263 +TeXDict begin 247 262 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(247)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1257 +4 631 v 568 681 a Ff(TIMER3_-)568 760 y(COMPB_-)568 839 +y(v)n(ect)p 1019 1257 V 1072 681 a(SIG_-)1072 760 y(OUTPUT_-)1072 +839 y(COMP)-6 b(ARE3B)p 1524 1257 V 1577 681 a(Timer/Coun)n(ter3)1577 +760 y(Compare)1577 839 y(Matc)n(h)24 b(B)p 2099 1257 +V 2152 681 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +760 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega128,)131 b(A)-6 +b(T-)2152 839 y(mega1284P)g(,)143 b(A)-6 b(Tmega162,)172 +b(A)-6 b(T-)2152 917 y(mega64,)65 b(A)-6 b(Tmega640,)64 +b(A)-6 b(Tmega1280,)2152 996 y(A)g(Tmega1281,)344 b(A)-6 +b(Tmega2560,)2152 1075 y(A)g(Tmega2561,)292 b(A)-6 b(T90USB1287,)2152 +1154 y(A)g(T90USB1286,)276 b(A)-6 b(T90USB647,)2152 1233 +y(A)g(T90USB646)p 3383 1257 V 515 1260 2872 4 v 515 1260 +V 515 1812 4 553 v 568 1315 a(TIMER3_-)568 1394 y(COMPC_-)568 +1473 y(v)n(ect)p 1019 1812 V 1072 1315 a(SIG_-)1072 1394 +y(OUTPUT_-)1072 1473 y(COMP)g(ARE3C)p 1524 1812 V 1577 +1315 a(Timer/Coun)n(ter3)1577 1394 y(Compare)1577 1473 +y(Matc)n(h)24 b(C)p 2099 1812 V 2152 1315 a(A)-6 b(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 1394 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega128,)131 b(A)-6 b(T-)2152 1473 y(mega64,)65 b(A)-6 +b(Tmega640,)64 b(A)-6 b(Tmega1280,)2152 1552 y(A)g(Tmega1281,)344 +b(A)-6 b(Tmega2560,)2152 1631 y(A)g(Tmega2561,)292 b(A)-6 +b(T90USB1287,)2152 1709 y(A)g(T90USB1286,)276 b(A)-6 +b(T90USB647,)2152 1788 y(A)g(T90USB646)p 3383 1812 V +515 1815 2872 4 v 515 1815 V 515 2446 4 631 v 568 1870 +a(TIMER3_-)568 1949 y(O)n(VF_v)n(ect)p 1019 2446 V 1072 +1870 a(SIG_-)1072 1949 y(O)n(VERFLO)n(W3)p 1524 2446 +V 1577 1870 a(Timer/Coun)n(ter3)1577 1949 y(Ov)n(er\035o)n(w)p +2099 2446 V 2152 1870 a(A)g(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +1949 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega128,)131 b(A)-6 +b(T-)2152 2028 y(mega1284P)g(,)143 b(A)-6 b(Tmega162,)172 +b(A)-6 b(T-)2152 2107 y(mega64,)65 b(A)-6 b(Tmega640,)64 +b(A)-6 b(Tmega1280,)2152 2186 y(A)g(Tmega1281,)344 b(A)-6 +b(Tmega2560,)2152 2265 y(A)g(Tmega2561,)292 b(A)-6 b(T90USB1287,)2152 +2344 y(A)g(T90USB1286,)276 b(A)-6 b(T90USB647,)2152 2423 +y(A)g(T90USB646)p 3383 2446 V 515 2450 2872 4 v 515 2450 +V 515 2686 4 237 v 568 2505 a(TIMER4_-)568 2584 y(CAPT_v)n(ect)p +1019 2686 V 1072 2505 a(SIG_-)1072 2584 y(INPUT_-)1072 +2663 y(CAPTURE4)p 1524 2686 V 1577 2505 a(Timer/Coun)n(ter4)1577 +2584 y(Capture)25 b(Ev)n(en)n(t)p 2099 2686 V 2152 2505 +a(A)-6 b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 +b(T-)2152 2584 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 2686 V 515 2689 2872 4 v 515 +2689 V 515 2926 4 237 v 568 2745 a(TIMER4_-)568 2824 +y(COMP)g(A_-)568 2902 y(v)n(ect)p 1019 2926 V 1072 2745 +a(SIG_-)1072 2824 y(OUTPUT_-)1072 2902 y(COMP)g(ARE4A)p +1524 2926 V 1577 2745 a(Timer/Coun)n(ter4)1577 2824 y(Compare)1577 +2902 y(Matc)n(h)24 b(A)p 2099 2926 V 2152 2745 a(A)-6 +b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 +2824 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p +3383 2926 V 515 2929 2872 4 v 515 2929 V 515 3166 4 237 +v 568 2985 a(TIMER4_-)568 3064 y(COMPB_-)568 3142 y(v)n(ect)p +1019 3166 V 1072 2985 a(SIG_-)1072 3064 y(OUTPUT_-)1072 +3142 y(COMP)g(ARE4B)p 1524 3166 V 1577 2985 a(Timer/Coun)n(ter4)1577 +3064 y(Compare)1577 3142 y(Matc)n(h)24 b(B)p 2099 3166 +V 2152 2985 a(A)-6 b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 3064 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 3166 V 515 3169 2872 4 v 515 +3169 V 515 3406 4 237 v 568 3225 a(TIMER4_-)568 3303 +y(COMPC_-)568 3382 y(v)n(ect)p 1019 3406 V 1072 3225 +a(SIG_-)1072 3303 y(OUTPUT_-)1072 3382 y(COMP)g(ARE4C)p +1524 3406 V 1577 3225 a(Timer/Coun)n(ter4)1577 3303 y(Compare)1577 +3382 y(Matc)n(h)24 b(C)p 2099 3406 V 2152 3225 a(A)-6 +b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 +3303 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p +3383 3406 V 515 3409 2872 4 v 515 3409 V 515 3567 4 158 +v 568 3465 a(TIMER4_-)568 3543 y(O)n(VF_v)n(ect)p 1019 +3567 V 1072 3465 a(SIG_-)1072 3543 y(O)n(VERFLO)n(W4)p +1524 3567 V 1577 3465 a(Timer/Coun)n(ter4)1577 3543 y(Ov)n(er\035o)n(w) +p 2099 3567 V 2152 3465 a(A)g(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 3543 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 3567 V 515 3570 2872 4 v 515 +3570 V 515 3807 4 237 v 568 3626 a(TIMER5_-)568 3704 +y(CAPT_v)n(ect)p 1019 3807 V 1072 3626 a(SIG_-)1072 3704 +y(INPUT_-)1072 3783 y(CAPTURE5)p 1524 3807 V 1577 3626 +a(Timer/Coun)n(ter5)1577 3704 y(Capture)25 b(Ev)n(en)n(t)p +2099 3807 V 2152 3626 a(A)-6 b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 3704 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 3807 V 515 3810 2872 4 v 515 +3810 V 515 4047 4 237 v 568 3866 a(TIMER5_-)568 3944 +y(COMP)g(A_-)568 4023 y(v)n(ect)p 1019 4047 V 1072 3866 +a(SIG_-)1072 3944 y(OUTPUT_-)1072 4023 y(COMP)g(ARE5A)p +1524 4047 V 1577 3866 a(Timer/Coun)n(ter5)1577 3944 y(Compare)1577 +4023 y(Matc)n(h)24 b(A)p 2099 4047 V 2152 3866 a(A)-6 +b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 +3944 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p +3383 4047 V 515 4050 2872 4 v 515 4050 V 515 4287 4 237 +v 568 4105 a(TIMER5_-)568 4184 y(COMPB_-)568 4263 y(v)n(ect)p +1019 4287 V 1072 4105 a(SIG_-)1072 4184 y(OUTPUT_-)1072 +4263 y(COMP)g(ARE5B)p 1524 4287 V 1577 4105 a(Timer/Coun)n(ter5)1577 +4184 y(Compare)1577 4263 y(Matc)n(h)24 b(B)p 2099 4287 +V 2152 4105 a(A)-6 b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 4184 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 4287 V 515 4290 2872 4 v 515 +4290 V 515 4527 4 237 v 568 4345 a(TIMER5_-)568 4424 +y(COMPC_-)568 4503 y(v)n(ect)p 1019 4527 V 1072 4345 +a(SIG_-)1072 4424 y(OUTPUT_-)1072 4503 y(COMP)g(ARE5C)p +1524 4527 V 1577 4345 a(Timer/Coun)n(ter5)1577 4424 y(Compare)1577 +4503 y(Matc)n(h)24 b(C)p 2099 4527 V 2152 4345 a(A)-6 +b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 +4424 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p +3383 4527 V 515 4530 2872 4 v 515 4530 V 515 4688 4 158 +v 568 4585 a(TIMER5_-)568 4664 y(O)n(VF_v)n(ect)p 1019 +4688 V 1072 4585 a(SIG_-)1072 4664 y(O)n(VERFLO)n(W5)p +1524 4688 V 1577 4585 a(Timer/Coun)n(ter5)1577 4664 y(Ov)n(er\035o)n(w) +p 2099 4688 V 2152 4585 a(A)g(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 4664 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 4688 V 515 4691 2872 4 v 515 +5179 2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 248 264 +TeXDict begin 248 263 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(248)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1809 +4 1184 v 568 681 a Ff(TWI_v)n(ect)p 1019 1809 V 177 w(SIG_-)1072 +760 y(2WIRE_-)1072 839 y(SERIAL)p 1524 1809 V 1577 681 +a(2-wire)112 b(Serial)1577 760 y(In)n(terface)p 2099 +1809 V 2152 681 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +760 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega128,)131 b(A)-6 +b(T-)2152 839 y(mega1284P)g(,)42 b(A)-6 b(Tmega16,)45 +b(A)-6 b(Tmega163,)2152 917 y(A)g(Tmega168P)g(,)131 b(A)-6 +b(Tmega32,)156 b(A)-6 b(T-)2152 996 y(mega323,)192 b(A)-6 +b(Tmega328P)g(,)158 b(A)-6 b(T-)2152 1075 y(mega32HVB,)123 +b(A)-6 b(Tmega406,)148 b(A)-6 b(T-)2152 1154 y(mega48P)g(,)104 +b(A)-6 b(Tmega64,)124 b(A)-6 b(Tmega8,)2152 1233 y(A)g(Tmega8535,)138 +b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 1312 y(mega168,)27 +b(A)-6 b(Tmega48,)26 b(A)-6 b(Tmega88,)26 b(A)-6 b(T-)2152 +1391 y(mega640,)30 b(A)-6 b(Tmega1280,)29 b(A)-6 b(Tmega1281,)2152 +1469 y(A)g(Tmega2560,)112 b(A)-6 b(Tmega2561,)112 b(A)-6 +b(T-)2152 1548 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 1627 y(mega644P)g(,)75 b(A)-6 b(Tmega644,)87 +b(A)-6 b(Ttin)n(y48,)2152 1706 y(A)g(T90USB1287,)240 +b(A)-6 b(T90USB1286,)2152 1785 y(A)g(T90USB647,)25 b(A)-6 +b(T90USB646)p 3383 1809 V 515 1812 2872 4 v 515 1812 +V 515 2127 4 316 v 568 1867 a(TXDONE_-)568 1946 y(v)n(ect)p +1019 2127 V 1072 1867 a(SIG_-)1072 1946 y(TXDONE)p 1524 +2127 V 1577 1867 a(T)g(ransmission)1577 1946 y(Done,)196 +b(Bit)1577 2025 y(Timer)57 b(Flag)f(2)1577 2104 y(In)n(terrupt)p +2099 2127 V 2152 1867 a(A)-6 b(T86RF401)p 3383 2127 V +515 2131 2872 4 v 515 2131 V 515 2446 4 316 v 568 2186 +a(TXEMPTY_-)568 2265 y(v)n(ect)p 1019 2446 V 1072 2186 +a(SIG_TXBE)p 1524 2446 V 129 w(T)g(ransmit)1577 2265 +y(Bu\033er)62 b(Empt)n(y)-6 b(,)1577 2344 y(Bit)34 b(Itmer)i(Flag)1577 +2423 y(0)24 b(In)n(terrupt)p 2099 2446 V 2152 2186 a(A)-6 +b(T86RF401)p 3383 2446 V 515 2450 2872 4 v 515 2450 V +515 2686 4 237 v 568 2505 a(UAR)g(T0_-)568 2584 y(RX_v)n(ect)p +1019 2686 V 1072 2505 a(SIG_-)1072 2584 y(UAR)g(T0_-)1072 +2663 y(RECV)p 1524 2686 V 1577 2505 a(UAR)g(T0,)125 b(Rx)1577 +2584 y(Complete)p 2099 2686 V 2152 2505 a(A)-6 b(Tmega161)p +3383 2686 V 515 2689 2872 4 v 515 2689 V 515 2926 4 237 +v 568 2745 a(UAR)g(T0_-)568 2824 y(TX_v)n(ect)p 1019 +2926 V 1072 2745 a(SIG_-)1072 2824 y(UAR)g(T0_-)1072 +2902 y(TRANS)p 1524 2926 V 1577 2745 a(UAR)g(T0,)132 +b(T)-6 b(x)1577 2824 y(Complete)p 2099 2926 V 2152 2745 +a(A)g(Tmega161)p 3383 2926 V 515 2929 2872 4 v 515 2929 +V 515 3166 4 237 v 568 2985 a(UAR)g(T0_-)568 3064 y(UDRE_v)n(ect)p +1019 3166 V 1072 2985 a(SIG_-)1072 3064 y(UAR)g(T0_-)1072 +3142 y(D)n(A)g(T)g(A)p 1524 3166 V 1577 2985 a(UAR)g(T0)83 +b(Data)1577 3064 y(Register)1577 3142 y(Empt)n(y)p 2099 +3166 V 2152 2985 a(A)-6 b(Tmega161)p 3383 3166 V 515 +3169 2872 4 v 515 3169 V 515 3406 4 237 v 568 3225 a(UAR)g(T1_-)568 +3303 y(RX_v)n(ect)p 1019 3406 V 1072 3225 a(SIG_-)1072 +3303 y(UAR)g(T1_-)1072 3382 y(RECV)p 1524 3406 V 1577 +3225 a(UAR)g(T1,)125 b(Rx)1577 3303 y(Complete)p 2099 +3406 V 2152 3225 a(A)-6 b(Tmega161)p 3383 3406 V 515 +3409 2872 4 v 515 3409 V 515 3646 4 237 v 568 3465 a(UAR)g(T1_-)568 +3543 y(TX_v)n(ect)p 1019 3646 V 1072 3465 a(SIG_-)1072 +3543 y(UAR)g(T1_-)1072 3622 y(TRANS)p 1524 3646 V 1577 +3465 a(UAR)g(T1,)132 b(T)-6 b(x)1577 3543 y(Complete)p +2099 3646 V 2152 3465 a(A)g(Tmega161)p 3383 3646 V 515 +3649 2872 4 v 515 3649 V 515 3886 4 237 v 568 3704 a(UAR)g(T1_-)568 +3783 y(UDRE_v)n(ect)p 1019 3886 V 1072 3704 a(SIG_-)1072 +3783 y(UAR)g(T1_-)1072 3862 y(D)n(A)g(T)g(A)p 1524 3886 +V 1577 3704 a(UAR)g(T1)83 b(Data)1577 3783 y(Register)1577 +3862 y(Empt)n(y)p 2099 3886 V 2152 3704 a(A)-6 b(Tmega161)p +3383 3886 V 515 3889 2872 4 v 515 3889 V 515 4205 4 316 +v 568 3944 a(UAR)g(T_-)568 4023 y(RX_v)n(ect)p 1019 4205 +V 1072 3944 a(SIG_-)1072 4023 y(UAR)g(T_-)1072 4102 y(RECV)p +1524 4205 V 1577 3944 a(UAR)g(T,)160 b(Rx)1577 4023 y(Complete)p +2099 4205 V 2152 3944 a(A)-6 b(T90S2313,)40 b(A)-6 b(T90S2333,)39 +b(A)-6 b(T90S4414,)2152 4023 y(A)g(T90S4433,)40 b(A)-6 +b(T90S4434,)39 b(A)-6 b(T90S8515,)2152 4102 y(A)g(T90S8535,)24 +b(A)-6 b(Tmega103,)23 b(A)-6 b(Tmega163,)2152 4181 y(A)g(Tmega8515)p +3383 4205 V 515 4208 2872 4 v 515 4208 V 515 4523 4 316 +v 568 4263 a(UAR)g(T_-)568 4342 y(TX_v)n(ect)p 1019 4523 +V 1072 4263 a(SIG_-)1072 4342 y(UAR)g(T_-)1072 4421 y(TRANS)p +1524 4523 V 1577 4263 a(UAR)g(T,)167 b(T)-6 b(x)1577 +4342 y(Complete)p 2099 4523 V 2152 4263 a(A)g(T90S2313,)40 +b(A)-6 b(T90S2333,)39 b(A)-6 b(T90S4414,)2152 4342 y(A)g(T90S4433,)40 +b(A)-6 b(T90S4434,)39 b(A)-6 b(T90S8515,)2152 4421 y(A)g(T90S8535,)24 +b(A)-6 b(Tmega103,)23 b(A)-6 b(Tmega163,)2152 4500 y(A)g(Tmega8515)p +3383 4523 V 515 4527 2872 4 v 515 4527 V 515 4842 4 316 +v 568 4582 a(UAR)g(T_-)568 4661 y(UDRE_v)n(ect)p 1019 +4842 V 1072 4582 a(SIG_-)1072 4661 y(UAR)g(T_-)1072 4740 +y(D)n(A)g(T)g(A)p 1524 4842 V 1577 4582 a(UAR)g(T)118 +b(Data)1577 4661 y(Register)1577 4740 y(Empt)n(y)p 2099 +4842 V 2152 4582 a(A)-6 b(T90S2313,)40 b(A)-6 b(T90S2333,)39 +b(A)-6 b(T90S4414,)2152 4661 y(A)g(T90S4433,)40 b(A)-6 +b(T90S4434,)39 b(A)-6 b(T90S8515,)2152 4740 y(A)g(T90S8535,)24 +b(A)-6 b(Tmega103,)23 b(A)-6 b(Tmega163,)2152 4819 y(A)g(Tmega8515)p +3383 4842 V 515 4846 2872 4 v 515 5179 2865 4 v 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 249 265 +TeXDict begin 249 264 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(249)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 862 +4 237 v 568 681 a Ff(USAR)-6 b(T0_-)568 760 y(RX)n(C_v)n(ect)p +1019 862 V 1072 681 a(SIG_-)1072 760 y(USAR)g(T0_-)1072 +839 y(RECV)p 1524 862 V 1577 681 a(USAR)g(T0,)86 b(Rx)1577 +760 y(Complete)p 2099 862 V 2152 681 a(A)-6 b(Tmega162)p +3383 862 V 515 866 2872 4 v 515 866 V 515 1654 4 789 +v 568 921 a(USAR)g(T0_-)568 1000 y(RX_v)n(ect)p 1019 +1654 V 1072 921 a(SIG_-)1072 1000 y(UAR)g(T0_-)1072 1078 +y(RECV)p 1524 1654 V 1577 921 a(USAR)g(T0,)86 b(Rx)1577 +1000 y(Complete)p 2099 1654 V 2152 921 a(A)-6 b(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 1000 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega128,)131 b(A)-6 b(T-)2152 1078 y(mega1284P)g(,)143 +b(A)-6 b(Tmega165,)172 b(A)-6 b(T-)2152 1157 y(mega165P)g(,)23 +b(A)-6 b(Tmega169,)22 b(A)-6 b(Tmega169P)g(,)2152 1236 +y(A)g(Tmega325,)33 b(A)-6 b(Tmega329,)34 b(A)-6 b(Tmega64,)2152 +1315 y(A)g(Tmega645,)147 b(A)-6 b(Tmega649,)147 b(A)-6 +b(T-)2152 1394 y(mega640,)30 b(A)-6 b(Tmega1280,)29 b(A)-6 +b(Tmega1281,)2152 1473 y(A)g(Tmega2560,)112 b(A)-6 b(Tmega2561,)112 +b(A)-6 b(T-)2152 1552 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 1631 y(mega644P)g(,)25 b(A)-6 b(Tmega644)p +3383 1654 V 515 1658 2872 4 v 515 1658 V 515 1894 4 237 +v 568 1713 a(USAR)g(T0_-)568 1792 y(TX)n(C_v)n(ect)p +1019 1894 V 1072 1713 a(SIG_-)1072 1792 y(USAR)g(T0_-)1072 +1870 y(TRANS)p 1524 1894 V 1577 1713 a(USAR)g(T0,)93 +b(T)-6 b(x)1577 1792 y(Complete)p 2099 1894 V 2152 1713 +a(A)g(Tmega162)p 3383 1894 V 515 1897 2872 4 v 515 1897 +V 515 2923 4 1026 v 568 1953 a(USAR)g(T0_-)568 2032 y(TX_v)n(ect)p +1019 2923 V 1072 1953 a(SIG_-)1072 2032 y(UAR)g(T0_-)1072 +2110 y(TRANS)p 1524 2923 V 1577 1953 a(USAR)g(T0,)93 +b(T)-6 b(x)1577 2032 y(Complete)p 2099 2923 V 2152 1953 +a(A)g(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 2032 y(A)g(T90CAN64,)131 +b(A)-6 b(Tmega128,)131 b(A)-6 b(T-)2152 2110 y(mega1284P)g(,)143 +b(A)-6 b(Tmega165,)172 b(A)-6 b(T-)2152 2189 y(mega165P)g(,)23 +b(A)-6 b(Tmega169,)22 b(A)-6 b(Tmega169P)g(,)2152 2268 +y(A)g(Tmega325,)129 b(A)-6 b(Tmega3250,)130 b(A)-6 b(T-)2152 +2347 y(mega3250P)g(,)143 b(A)-6 b(Tmega329,)172 b(A)-6 +b(T-)2152 2426 y(mega3290,)153 b(A)-6 b(Tmega3290P)g(,)127 +b(A)-6 b(T-)2152 2505 y(mega64,)65 b(A)-6 b(Tmega645,)64 +b(A)-6 b(Tmega6450,)2152 2584 y(A)g(Tmega649,)129 b(A)-6 +b(Tmega6490,)130 b(A)-6 b(T-)2152 2663 y(mega640,)30 +b(A)-6 b(Tmega1280,)29 b(A)-6 b(Tmega1281,)2152 2741 +y(A)g(Tmega2560,)112 b(A)-6 b(Tmega2561,)112 b(A)-6 b(T-)2152 +2820 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 b(A)-6 +b(T-)2152 2899 y(mega644P)g(,)25 b(A)-6 b(Tmega644)p +3383 2923 V 515 2926 2872 4 v 515 2926 V 515 3715 4 789 +v 568 2981 a(USAR)g(T0_-)568 3060 y(UDRE_v)n(ect)p 1019 +3715 V 1072 2981 a(SIG_-)1072 3060 y(UAR)g(T0_-)1072 +3139 y(D)n(A)g(T)g(A)p 1524 3715 V 1577 2981 a(USAR)g(T0)1577 +3060 y(Data)69 b(Register)1577 3139 y(Empt)n(y)p 2099 +3715 V 2152 2981 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +3060 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega128,)131 b(A)-6 +b(T-)2152 3139 y(mega1284P)g(,)26 b(A)-6 b(Tmega162,)26 +b(A)-6 b(Tmega165,)2152 3218 y(A)g(Tmega165P)g(,)115 +b(A)-6 b(Tmega169,)137 b(A)-6 b(T-)2152 3297 y(mega169P)g(,)42 +b(A)-6 b(Tmega325,)45 b(A)-6 b(Tmega329,)2152 3376 y(A)g(Tmega64,)33 +b(A)-6 b(Tmega645,)33 b(A)-6 b(Tmega649,)2152 3455 y(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 3533 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 3612 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 3691 y(mega164P)g(,)25 +b(A)-6 b(Tmega644P)g(,)25 b(A)-6 b(Tmega644)p 3383 3715 +V 515 3718 2872 4 v 515 3718 V 515 3955 4 237 v 568 3773 +a(USAR)g(T1_-)568 3852 y(RX)n(C_v)n(ect)p 1019 3955 V +1072 3773 a(SIG_-)1072 3852 y(USAR)g(T1_-)1072 3931 y(RECV)p +1524 3955 V 1577 3773 a(USAR)g(T1,)86 b(Rx)1577 3852 +y(Complete)p 2099 3955 V 2152 3773 a(A)-6 b(Tmega162)p +3383 3955 V 515 3958 2872 4 v 515 3958 V 515 4747 4 789 +v 568 4013 a(USAR)g(T1_-)568 4092 y(RX_v)n(ect)p 1019 +4747 V 1072 4013 a(SIG_-)1072 4092 y(UAR)g(T1_-)1072 +4171 y(RECV)p 1524 4747 V 1577 4013 a(USAR)g(T1,)86 b(Rx)1577 +4092 y(Complete)p 2099 4747 V 2152 4013 a(A)-6 b(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 4092 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega128,)131 b(A)-6 b(T-)2152 4171 y(mega1284P)g(,)42 +b(A)-6 b(Tmega64,)45 b(A)-6 b(Tmega640,)2152 4250 y(A)g(Tmega1280,)112 +b(A)-6 b(Tmega1281,)112 b(A)-6 b(T-)2152 4329 y(mega2560,)161 +b(A)-6 b(Tmega2561,)161 b(A)-6 b(T-)2152 4408 y(mega324P)g(,)154 +b(A)-6 b(Tmega164P)g(,)154 b(A)-6 b(T-)2152 4487 y(mega644P)g(,)17 +b(A)-6 b(Tmega644,)19 b(A)-6 b(T90USB162,)2152 4565 y(A)g(T90USB82,)310 +b(A)-6 b(T90USB1287,)2152 4644 y(A)g(T90USB1286,)276 +b(A)-6 b(T90USB647,)2152 4723 y(A)g(T90USB646)p 3383 +4747 V 515 4750 2872 4 v 515 4750 V 515 4987 4 237 v +568 4805 a(USAR)g(T1_-)568 4884 y(TX)n(C_v)n(ect)p 1019 +4987 V 1072 4805 a(SIG_-)1072 4884 y(USAR)g(T1_-)1072 +4963 y(TRANS)p 1524 4987 V 1577 4805 a(USAR)g(T1,)93 +b(T)-6 b(x)1577 4884 y(Complete)p 2099 4987 V 2152 4805 +a(A)g(Tmega162)p 3383 4987 V 515 4990 2872 4 v 515 5179 +2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 250 266 +TeXDict begin 250 265 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(250)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1414 +4 789 v 568 681 a Ff(USAR)-6 b(T1_-)568 760 y(TX_v)n(ect)p +1019 1414 V 1072 681 a(SIG_-)1072 760 y(UAR)g(T1_-)1072 +839 y(TRANS)p 1524 1414 V 1577 681 a(USAR)g(T1,)93 b(T)-6 +b(x)1577 760 y(Complete)p 2099 1414 V 2152 681 a(A)g(T90CAN128,)316 +b(A)-6 b(T90CAN32,)2152 760 y(A)g(T90CAN64,)131 b(A)-6 +b(Tmega128,)131 b(A)-6 b(T-)2152 839 y(mega1284P)g(,)42 +b(A)-6 b(Tmega64,)45 b(A)-6 b(Tmega640,)2152 917 y(A)g(Tmega1280,)112 +b(A)-6 b(Tmega1281,)112 b(A)-6 b(T-)2152 996 y(mega2560,)161 +b(A)-6 b(Tmega2561,)161 b(A)-6 b(T-)2152 1075 y(mega324P)g(,)154 +b(A)-6 b(Tmega164P)g(,)154 b(A)-6 b(T-)2152 1154 y(mega644P)g(,)17 +b(A)-6 b(Tmega644,)19 b(A)-6 b(T90USB162,)2152 1233 y(A)g(T90USB82,)310 +b(A)-6 b(T90USB1287,)2152 1312 y(A)g(T90USB1286,)276 +b(A)-6 b(T90USB647,)2152 1391 y(A)g(T90USB646)p 3383 +1414 V 515 1418 2872 4 v 515 1418 V 515 2206 4 789 v +568 1473 a(USAR)g(T1_-)568 1552 y(UDRE_v)n(ect)p 1019 +2206 V 1072 1473 a(SIG_-)1072 1552 y(UAR)g(T1_-)1072 +1631 y(D)n(A)g(T)g(A)p 1524 2206 V 1577 1473 a(USAR)g(T1,)1577 +1552 y(Data)69 b(Register)1577 1631 y(Empt)n(y)p 2099 +2206 V 2152 1473 a(A)-6 b(T90CAN128,)316 b(A)-6 b(T90CAN32,)2152 +1552 y(A)g(T90CAN64,)131 b(A)-6 b(Tmega128,)131 b(A)-6 +b(T-)2152 1631 y(mega1284P)g(,)42 b(A)-6 b(Tmega162,)46 +b(A)-6 b(Tmega64,)2152 1709 y(A)g(Tmega640,)129 b(A)-6 +b(Tmega1280,)130 b(A)-6 b(T-)2152 1788 y(mega1281,)161 +b(A)-6 b(Tmega2560,)161 b(A)-6 b(T-)2152 1867 y(mega2561,)172 +b(A)-6 b(Tmega324P)g(,)143 b(A)-6 b(T-)2152 1946 y(mega164P)g(,)154 +b(A)-6 b(Tmega644P)g(,)154 b(A)-6 b(T-)2152 2025 y(mega644,)31 +b(A)-6 b(T90USB162,)30 b(A)-6 b(T90USB82,)2152 2104 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 2183 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 2206 V 515 2210 2872 4 v 515 +2210 V 515 2446 4 237 v 568 2265 a(USAR)g(T2_-)568 2344 +y(RX_v)n(ect)p 1019 2446 V 1072 2265 a(SIG_-)1072 2344 +y(USAR)g(T2_-)1072 2423 y(RECV)p 1524 2446 V 1577 2265 +a(USAR)g(T2,)86 b(Rx)1577 2344 y(Complete)p 2099 2446 +V 2152 2265 a(A)-6 b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 2344 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 2446 V 515 2450 2872 4 v 515 +2450 V 515 2686 4 237 v 568 2505 a(USAR)g(T2_-)568 2584 +y(TX_v)n(ect)p 1019 2686 V 1072 2505 a(SIG_-)1072 2584 +y(USAR)g(T2_-)1072 2663 y(TRANS)p 1524 2686 V 1577 2505 +a(USAR)g(T2,)93 b(T)-6 b(x)1577 2584 y(Complete)p 2099 +2686 V 2152 2505 a(A)g(Tmega640,)129 b(A)-6 b(Tmega1280,)130 +b(A)-6 b(T-)2152 2584 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 +b(A)-6 b(Tmega2561)p 3383 2686 V 515 2689 2872 4 v 515 +2689 V 515 2926 4 237 v 568 2745 a(USAR)g(T2_-)568 2824 +y(UDRE_v)n(ect)p 1019 2926 V 1072 2745 a(SIG_-)1072 2824 +y(USAR)g(T2_-)1072 2902 y(D)n(A)g(T)g(A)p 1524 2926 V +1577 2745 a(USAR)g(T2)44 b(Data)1577 2824 y(register)25 +b(Empt)n(y)p 2099 2926 V 2152 2745 a(A)-6 b(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 2824 y(mega1281,)22 +b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p 3383 2926 +V 515 2929 2872 4 v 515 2929 V 515 3166 4 237 v 568 2985 +a(USAR)g(T3_-)568 3064 y(RX_v)n(ect)p 1019 3166 V 1072 +2985 a(SIG_-)1072 3064 y(USAR)g(T3_-)1072 3142 y(RECV)p +1524 3166 V 1577 2985 a(USAR)g(T3,)86 b(Rx)1577 3064 +y(Complete)p 2099 3166 V 2152 2985 a(A)-6 b(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 3064 y(mega1281,)22 +b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p 3383 3166 +V 515 3169 2872 4 v 515 3169 V 515 3406 4 237 v 568 3225 +a(USAR)g(T3_-)568 3303 y(TX_v)n(ect)p 1019 3406 V 1072 +3225 a(SIG_-)1072 3303 y(USAR)g(T3_-)1072 3382 y(TRANS)p +1524 3406 V 1577 3225 a(USAR)g(T3,)93 b(T)-6 b(x)1577 +3303 y(Complete)p 2099 3406 V 2152 3225 a(A)g(Tmega640,)129 +b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 3303 y(mega1281,)22 +b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p 3383 3406 +V 515 3409 2872 4 v 515 3409 V 515 3646 4 237 v 568 3465 +a(USAR)g(T3_-)568 3543 y(UDRE_v)n(ect)p 1019 3646 V 1072 +3465 a(SIG_-)1072 3543 y(USAR)g(T3_-)1072 3622 y(D)n(A)g(T)g(A)p +1524 3646 V 1577 3465 a(USAR)g(T3)44 b(Data)1577 3543 +y(register)25 b(Empt)n(y)p 2099 3646 V 2152 3465 a(A)-6 +b(Tmega640,)129 b(A)-6 b(Tmega1280,)130 b(A)-6 b(T-)2152 +3543 y(mega1281,)22 b(A)-6 b(Tmega2560,)22 b(A)-6 b(Tmega2561)p +3383 3646 V 515 3649 2872 4 v 515 3649 V 515 4122 4 474 +v 568 3704 a(USAR)g(T_-)568 3783 y(RX)n(C_v)n(ect)p 1019 +4122 V 1072 3704 a(SIG_-)1072 3783 y(USAR)g(T_-)1072 +3862 y(RECV,)1072 3941 y(SIG_-)1072 4020 y(UAR)g(T_-)1072 +4099 y(RECV)p 1524 4122 V 1577 3704 a(USAR)g(T,)121 b(Rx)1577 +3783 y(Complete)p 2099 4122 V 2152 3704 a(A)-6 b(Tmega16,)51 +b(A)-6 b(Tmega32,)50 b(A)-6 b(Tmega323,)2152 3783 y(A)g(Tmega8)p +3383 4122 V 515 4126 2872 4 v 515 4126 V 515 4757 4 631 +v 568 4181 a(USAR)g(T_-)568 4260 y(RX_v)n(ect)p 1019 +4757 V 1072 4181 a(SIG_-)1072 4260 y(USAR)g(T_-)1072 +4339 y(RECV,)1072 4418 y(SIG_-)1072 4496 y(UAR)g(T_-)1072 +4575 y(RECV)p 1524 4757 V 1577 4181 a(USAR)g(T,)121 b(Rx)1577 +4260 y(Complete)p 2099 4757 V 2152 4181 a(A)-6 b(T90PWM3,)365 +b(A)-6 b(T90PWM2,)2152 4260 y(A)g(T90PWM1,)123 b(A)-6 +b(Tmega168P)g(,)104 b(A)-6 b(T-)2152 4339 y(mega3250,)153 +b(A)-6 b(Tmega3250P)g(,)127 b(A)-6 b(T-)2152 4418 y(mega328P)g(,)143 +b(A)-6 b(Tmega3290,)172 b(A)-6 b(T-)2152 4496 y(mega3290P)g(,)154 +b(A)-6 b(Tmega48P)g(,)154 b(A)-6 b(T-)2152 4575 y(mega6450,)161 +b(A)-6 b(Tmega6490,)161 b(A)-6 b(T-)2152 4654 y(mega8535,)46 +b(A)-6 b(Tmega88P)g(,)41 b(A)-6 b(Tmega168,)2152 4733 +y(A)g(Tmega48,)25 b(A)-6 b(Tmega88,)24 b(A)-6 b(Ttin)n(y2313)p +3383 4757 V 515 4760 2872 4 v 515 5179 2865 4 v 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 251 267 +TeXDict begin 251 266 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(251)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1099 +4 474 v 568 681 a Ff(USAR)-6 b(T_-)568 760 y(TX)n(C_v)n(ect)p +1019 1099 V 1072 681 a(SIG_-)1072 760 y(USAR)g(T_-)1072 +839 y(TRANS,)1072 917 y(SIG_-)1072 996 y(UAR)g(T_-)1072 +1075 y(TRANS)p 1524 1099 V 1577 681 a(USAR)g(T,)128 b(T)-6 +b(x)1577 760 y(Complete)p 2099 1099 V 2152 681 a(A)g(Tmega16,)51 +b(A)-6 b(Tmega32,)50 b(A)-6 b(Tmega323,)2152 760 y(A)g(Tmega8)p +3383 1099 V 515 1102 2872 4 v 515 1102 V 515 1575 4 474 +v 568 1157 a(USAR)g(T_-)568 1236 y(TX_v)n(ect)p 1019 +1575 V 1072 1157 a(SIG_-)1072 1236 y(USAR)g(T_-)1072 +1315 y(TRANS,)1072 1394 y(SIG_-)1072 1473 y(UAR)g(T_-)1072 +1552 y(TRANS)p 1524 1575 V 1577 1157 a(USAR)g(T,)128 +b(T)-6 b(x)1577 1236 y(Complete)p 2099 1575 V 2152 1157 +a(A)g(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 1236 y(A)g(T90PWM1,)123 +b(A)-6 b(Tmega168P)g(,)104 b(A)-6 b(T-)2152 1315 y(mega328P)g(,)23 +b(A)-6 b(Tmega48P)g(,)22 b(A)-6 b(Tmega8535,)2152 1394 +y(A)g(Tmega88P)g(,)29 b(A)-6 b(Tmega168,)31 b(A)-6 b(Tmega48,)2152 +1473 y(A)g(Tmega88,)25 b(A)-6 b(Ttin)n(y2313)p 3383 1575 +V 515 1579 2872 4 v 515 1579 V 515 2367 4 789 v 568 1634 +a(USAR)g(T_-)568 1713 y(UDRE_v)n(ect)p 1019 2367 V 1072 +1634 a(SIG_-)1072 1713 y(USAR)g(T_-)1072 1792 y(D)n(A)g(T)g(A,)1072 +1870 y(SIG_-)1072 1949 y(UAR)g(T_-)1072 2028 y(D)n(A)g(T)g(A)p +1524 2367 V 1577 1634 a(USAR)g(T)79 b(Data)1577 1713 +y(Register)1577 1792 y(Empt)n(y)p 2099 2367 V 2152 1634 +a(A)-6 b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 1713 y(A)g(T90PWM1,)152 +b(A)-6 b(Tmega16,)152 b(A)-6 b(T-)2152 1792 y(mega168P)g(,)58 +b(A)-6 b(Tmega32,)64 b(A)-6 b(Tmega323,)2152 1870 y(A)g(Tmega3250,)98 +b(A)-6 b(Tmega3250P)g(,)84 b(A)-6 b(T-)2152 1949 y(mega328P)g(,)143 +b(A)-6 b(Tmega3290,)172 b(A)-6 b(T-)2152 2028 y(mega3290P)g(,)154 +b(A)-6 b(Tmega48P)g(,)154 b(A)-6 b(T-)2152 2107 y(mega6450,)65 +b(A)-6 b(Tmega6490,)65 b(A)-6 b(Tmega8,)2152 2186 y(A)g(Tmega8535,)138 +b(A)-6 b(Tmega88P)g(,)114 b(A)-6 b(T-)2152 2265 y(mega168,)100 +b(A)-6 b(Tmega48,)100 b(A)-6 b(Tmega88,)2152 2344 y(A)g(Ttin)n(y2313)p +3383 2367 V 515 2371 2872 4 v 515 2371 V 515 2923 4 553 +v 568 2426 a(USI_-)568 2505 y(O)n(VERFLO)n(W_-)568 2584 +y(v)n(ect)p 1019 2923 V 1072 2426 a(SIG_USI_-)1072 2505 +y(O)n(VERFLO)n(W)p 1524 2923 V 1577 2426 a(USI)24 b(Ov)n(er\035o)n(w)p +2099 2923 V 163 w(A)-6 b(Tmega165,)137 b(A)-6 b(Tmega165P)g(,)115 +b(A)-6 b(T-)2152 2505 y(mega169,)46 b(A)-6 b(Tmega169P)g(,)41 +b(A)-6 b(Tmega325,)2152 2584 y(A)g(Tmega3250,)302 b(A)-6 +b(Tmega3250P)g(,)2152 2663 y(A)g(Tmega329,)129 b(A)-6 +b(Tmega3290,)130 b(A)-6 b(T-)2152 2741 y(mega3290P)g(,)143 +b(A)-6 b(Tmega645,)172 b(A)-6 b(T-)2152 2820 y(mega6450,)30 +b(A)-6 b(Tmega649,)29 b(A)-6 b(Tmega6490,)2152 2899 y(A)g(Ttin)n(y2313) +p 3383 2923 V 515 2926 2872 4 v 515 2926 V 515 3242 4 +316 v 568 2981 a(USI_-)568 3060 y(O)n(VF_v)n(ect)p 1019 +3242 V 1072 2981 a(SIG_USI_-)1072 3060 y(O)n(VERFLO)n(W)p +1524 3242 V 1577 2981 a(USI)24 b(Ov)n(er\035o)n(w)p 2099 +3242 V 163 w(A)-6 b(Ttin)n(y26,)27 b(A)-6 b(Ttin)n(y43U,)26 +b(A)-6 b(Ttin)n(y24,)27 b(A)-6 b(T-)2152 3060 y(tin)n(y44,)77 +b(A)-6 b(Ttin)n(y84,)77 b(A)-6 b(Ttin)n(y45,)77 b(A)-6 +b(T-)2152 3139 y(tin)n(y25,)65 b(A)-6 b(Ttin)n(y85,)66 +b(A)-6 b(Ttin)n(y261,)65 b(A)-6 b(T-)2152 3218 y(tin)n(y461,)25 +b(A)-6 b(Ttin)n(y861)p 3383 3242 V 515 3245 2872 4 v +515 3245 V 515 3955 4 710 v 568 3300 a(USI_-)568 3379 +y(ST)g(AR)g(T_-)568 3458 y(v)n(ect)p 1019 3955 V 1072 +3300 a(SIG_USI_-)1072 3379 y(ST)g(AR)g(T)p 1524 3955 +V 1577 3300 a(USI)25 b(Start)h(Con-)1577 3379 y(dition)p +2099 3955 V 2152 3300 a(A)-6 b(Tmega165,)137 b(A)-6 b(Tmega165P)g(,)115 +b(A)-6 b(T-)2152 3379 y(mega169,)46 b(A)-6 b(Tmega169P)g(,)41 +b(A)-6 b(Tmega325,)2152 3458 y(A)g(Tmega3250,)302 b(A)-6 +b(Tmega3250P)g(,)2152 3537 y(A)g(Tmega329,)129 b(A)-6 +b(Tmega3290,)130 b(A)-6 b(T-)2152 3616 y(mega3290P)g(,)143 +b(A)-6 b(Tmega645,)172 b(A)-6 b(T-)2152 3694 y(mega6450,)30 +b(A)-6 b(Tmega649,)29 b(A)-6 b(Tmega6490,)2152 3773 y(A)g(Ttin)n +(y2313,)70 b(A)-6 b(Ttin)n(y43U,)61 b(A)-6 b(Ttin)n(y45,)2152 +3852 y(A)g(Ttin)n(y25,)109 b(A)-6 b(Ttin)n(y85,)110 b(A)-6 +b(Ttin)n(y261,)2152 3931 y(A)g(Ttin)n(y461,)25 b(A)-6 +b(Ttin)n(y861)p 3383 3955 V 515 3958 2872 4 v 515 3958 +V 515 4116 4 158 v 568 4013 a(USI_-)568 4092 y(STR)g(T_v)n(ect)p +1019 4116 V 1072 4013 a(SIG_USI_-)1072 4092 y(ST)g(AR)g(T)p +1524 4116 V 1577 4013 a(USI)24 b(Start)p 2099 4116 V +279 w(A)-6 b(Ttin)n(y26)p 3383 4116 V 515 4119 2872 4 +v 515 4119 V 515 4277 4 158 v 568 4174 a(USI_STR_-)568 +4253 y(v)n(ect)p 1019 4277 V 1072 4174 a(SIG_USI_-)1072 +4253 y(ST)g(AR)g(T)p 1524 4277 V 1577 4174 a(USI)24 b(ST)-6 +b(AR)g(T)p 2099 4277 V 200 w(A)g(Ttin)n(y24,)24 b(A)-6 +b(Ttin)n(y44,)24 b(A)-6 b(Ttin)n(y84)p 3383 4277 V 515 +4280 2872 4 v 515 4280 V 515 4517 4 237 v 568 4335 a(W)e(A)i(TCHDOG_-) +568 4414 y(v)n(ect)p 1019 4517 V 1072 4335 a(SIG_-)1072 +4414 y(W)e(A)i(TCHDOG_-)1072 4493 y(TIMEOUT)p 1524 4517 +V 1577 4335 a(W)g(atc)n(hdog)1577 4414 y(Time-out)p 2099 +4517 V 2152 4335 a(A)g(Ttin)n(y24,)24 b(A)-6 b(Ttin)n(y44,)24 +b(A)-6 b(Ttin)n(y84)p 3383 4517 V 515 4520 2872 4 v 515 +4520 V 515 4993 4 474 v 568 4575 a(WDT_-)568 4654 y(O)n(VERFLO)n(W_-) +568 4733 y(v)n(ect)p 1019 4993 V 1072 4575 a(SIG_-)1072 +4654 y(W)e(A)i(TCHDOG_-)1072 4733 y(TIMEOUT,)1072 4812 +y(SIG_-)1072 4891 y(WDT_-)1072 4970 y(O)n(VERFLO)n(W)p +1524 4993 V 1577 4575 a(W)g(atc)n(hdog)1577 4654 y(Timer)112 +b(Ov)n(er-)1577 4733 y(\035o)n(w)p 2099 4993 V 2152 4575 +a(A)-6 b(Ttin)n(y2313)p 3383 4993 V 515 4997 2872 4 v +515 5179 2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 252 268 +TeXDict begin 252 267 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(252)p 515 236 2865 4 v 515 468 2872 4 v 515 468 V 515 +626 4 158 v 568 523 a Fg(V)-7 b(ector)568 602 y(name)p +1019 626 V 1072 523 a(Old)53 b(v)n(ector)1072 602 y(name)p +1524 626 V 1577 523 a(Description)p 2099 626 V 165 w(Applicable)27 +b(for)f(device)p 3383 626 V 515 626 2872 4 v 515 1888 +4 1262 v 568 681 a Ff(WDT_v)n(ect)p 1019 1888 V 148 w(SIG_WDT,)1072 +760 y(SIG_-)1072 839 y(W)-8 b(A)i(TCHDOG_-)1072 917 y(TIMEOUT)p +1524 1888 V 1577 681 a(W)g(atc)n(hdog)1577 760 y(Timeout)38 +b(In)n(ter-)1577 839 y(rupt)p 2099 1888 V 2152 681 a(A)-6 +b(T90PWM3,)365 b(A)-6 b(T90PWM2,)2152 760 y(A)g(T90PWM1,)104 +b(A)-6 b(Tmega1284P)g(,)88 b(A)-6 b(T-)2152 839 y(mega168P)g(,)154 +b(A)-6 b(Tmega328P)g(,)154 b(A)-6 b(T-)2152 917 y(mega32HVB,)123 +b(A)-6 b(Tmega406,)148 b(A)-6 b(T-)2152 996 y(mega48P)g(,)58 +b(A)-6 b(Tmega88P)g(,)57 b(A)-6 b(Tmega168,)2152 1075 +y(A)g(Tmega48,)51 b(A)-6 b(Tmega88,)50 b(A)-6 b(Tmega640,)2152 +1154 y(A)g(Tmega1280,)112 b(A)-6 b(Tmega1281,)112 b(A)-6 +b(T-)2152 1233 y(mega2560,)161 b(A)-6 b(Tmega2561,)161 +b(A)-6 b(T-)2152 1312 y(mega324P)g(,)154 b(A)-6 b(Tmega164P)g(,)154 +b(A)-6 b(T-)2152 1391 y(mega644P)g(,)159 b(A)-6 b(Tmega644,)191 +b(A)-6 b(T-)2152 1469 y(mega16HV)e(A,)51 b(A)-6 b(Ttin)n(y13,)58 +b(A)-6 b(Ttin)n(y43U,)2152 1548 y(A)g(Ttin)n(y48,)45 +b(A)-6 b(Ttin)n(y45,)44 b(A)-6 b(Ttin)n(y25,)44 b(A)-6 +b(T-)2152 1627 y(tin)n(y85,)54 b(A)-6 b(Ttin)n(y261,)53 +b(A)-6 b(Ttin)n(y461,)54 b(A)-6 b(T-)2152 1706 y(tin)n(y861,)50 +b(A)-6 b(T90USB162,)50 b(A)-6 b(T90USB82,)2152 1785 y(A)g(T90USB1287,) +240 b(A)-6 b(T90USB1286,)2152 1864 y(A)g(T90USB647,)25 +b(A)-6 b(T90USB646)p 3383 1888 V 515 1891 2872 4 v 515 +1891 V 515 2117 a Fs(Global)31 b(manipulation)f(of)i(the)g(in)m +(terrupt)g(\035ag)515 2318 y Fq(The)20 b(global)g(in)n(terrupt)g +(\035ag)g(is)h(main)n(tained)f(in)h(the)g(I)f(bit)h(of)g(the)g(status)f +(register)g(\(SREG\).)639 2519 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(sei)p Fq(\(\))639 2624 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(cli)p Fq(\(\))515 2884 y Fs(Macros)k(for)g(writing)f(in)m(terrupt) +h(handler)g(functions)639 3068 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR)p Fq(\(v)n(ector,)f(attributes\))639 3173 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(SIGNAL)p Fq(\(v)n(ector\))639 +3278 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(EMPTY_INTERR)m(UPT)p +Fq(\(v)n(ector\))639 3383 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_ALIAS)p Fq(\(v)n(ector,)g(target_v)n(ector\))639 +3488 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(reti)p Fq(\(\))639 +3592 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(BADISR_v)m(ect)515 +3853 y(ISR)j(attributes)639 4036 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_BLOCK)639 4141 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_NOBLOCK)639 4246 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_NAKED)639 4351 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_ALIASOF)p Fq(\(target_v)n(ector\))515 4612 y +Fs(22.15.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +4812 y(22.15.2.1)92 b(#de\034ne)31 b(BADISR_v)m(ect)550 +5006 y Fj(#include)37 b()p 515 5179 +2865 4 v 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 253 269 +TeXDict begin 253 268 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(253)p 515 236 2865 4 v 515 523 a Fq(This)22 b(is)g(a)g(v)n(ector)e +(whic)n(h)i(is)g(aliased)g(to)g(__v)n(ector_default,)f(the)h(v)n(ector) +f(executed)h(when)515 623 y(an)28 b(ISR)h(\034res)e(with)i(no)f +(accompan)n(ying)f(ISR)h(handler.)39 b(This)29 b(ma)n(y)e(b)r(e)i(used) +f(along)g(with)515 722 y(the)h Fs(ISR\(\))g Fq(\(p.)14 +b(253\))28 b(macro)f(to)i(create)f(a)g(catc)n(h-all)g(for)g +(unde\034ned)i(but)f(used)g(ISRs)g(for)515 822 y(debugging)d(purp)r +(oses.)515 1085 y Fs(22.15.2.2)92 b(#de\034ne)31 b(cli\(\))550 +1291 y Fj(#include)37 b()515 1519 y +Fq(Disables)h(all)h(in)n(terrupts)f(b)n(y)h(clearing)f(the)h(global)f +(in)n(terrupt)g(mask.)71 b(This)39 b(function)515 1618 +y(actually)g(compiles)g(in)n(to)h(a)f(single)g(line)h(of)g(assem)n(bly) +-7 b(,)42 b(so)d(there)g(is)h(no)f(function)h(call)515 +1718 y(o)n(v)n(erhead.)515 1981 y Fs(22.15.2.3)92 b(#de\034ne)31 +b(EMPTY_INTERR)m(UPT\(v)m(ector\))550 2187 y Fj(#include)37 +b()515 2415 y Fq(De\034nes)26 b(an)g(empt)n(y)g(in)n +(terrupt)g(handler)g(function.)37 b(This)26 b(will)g(not)h(generate)d +(an)n(y)i(prolog)515 2514 y(or)d(epilog)h(co)r(de)g(and)h(will)f(only)g +(return)g(from)g(the)h(ISR.)g(Do)g(not)f(de\034ne)h(a)f(function)h(b)r +(o)r(dy)515 2614 y(as)i(this)g(will)h(de\034ne)g(it)g(for)f(y)n(ou.)36 +b(Example:)550 2821 y Fj(EMPTY_INTERRUPT\(ADC_vect)q(\);)515 +3164 y Fs(22.15.2.4)92 b(#de\034ne)31 b(ISR\(v)m(ector,)64 +b(attributes\))550 3371 y Fj(#include)37 b()515 +3598 y Fq(In)n(tro)r(duces)32 b(an)h(in)n(terrupt)g(handler)f(function) +i(\(in)n(terrupt)f(service)f(routine\))h(that)h(runs)515 +3698 y(with)28 b(global)e(in)n(terrupts)h(initially)h(disabled)f(b)n(y) +g(default)h(with)g(no)g(attributes)f(sp)r(eci\034ed.)515 +3845 y(The)19 b(attributes)h(are)f(optional)g(and)g(alter)g(the)h(b)r +(eha)n(viour)e(and)i(resultan)n(t)f(generated)f(co)r(de)515 +3944 y(of)28 b(the)g(in)n(terrupt)g(routine.)38 b(Multiple)29 +b(attributes)f(ma)n(y)f(b)r(e)i(used)f(for)f(a)h(single)g(function,)515 +4044 y(with)g(a)f(space)g(sep)r(erating)f(eac)n(h)h(attribute.)515 +4191 y(V)-7 b(alid)65 b(attributes)f(are)g(ISR_BLOCK,)f(ISR_NOBLOCK,)g +(ISR_NAKED)i(and)515 4290 y Fs(ISR_ALIASOF\(v)m(ect\))29 +b Fq(\(p.)14 b(254\).)515 4437 y Fm(vector)24 b Fq(m)n(ust)i(b)r(e)g +(one)g(of)h(the)f(in)n(terrupt)g(v)n(ector)f(names)h(that)g(are)f(v)-5 +b(alid)27 b(for)e(the)i(partic-)515 4537 y(ular)g(MCU)h(t)n(yp)r(e.)515 +4800 y Fs(22.15.2.5)92 b(#de\034ne)31 b(ISR_ALIAS\(v)m(ector,)65 +b(target_v)m(ector\))550 5006 y Fj(#include)37 b()p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 254 270 +TeXDict begin 254 269 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(254)p 515 236 2865 4 v 515 523 a Fq(Aliases)21 b(a)g(giv)n(en)g(v)n +(ector)g(to)h(another)e(one)i(in)g(the)g(same)f(manner)h(as)f(the)h +(ISR_ALIASOF)515 623 y(attribute)34 b(for)g(the)g Fs(ISR\(\))h +Fq(\(p.)14 b(253\))33 b(macro.)55 b(Unlik)n(e)34 b(the)h(ISR_ALIASOF)f +(attribute)515 722 y(macro)22 b(ho)n(w)n(ev)n(er,)g(this)i(is)f +(compatible)g(for)g(all)g(v)n(ersions)f(of)h(GCC)h(rather)e(than)i +(just)g(GCC)515 822 y(v)n(ersion)i(4.2)g(on)n(w)n(ards.)506 +1018 y Fs(Note:)676 1167 y Fq(This)k(macro)e(creates)h(a)g(tramp)r +(oline)g(function)h(for)g(the)g(aliased)e(macro.)42 b(This)30 +b(will)676 1267 y(result)24 b(in)g(a)g(t)n(w)n(o)f(cycle)h(p)r(enalt)n +(y)g(for)g(the)g(aliased)f(v)n(ector)g(compared)g(to)h(the)g(ISR)h(the) +676 1366 y(v)n(ector)h(is)i(aliased)e(to,)i(due)g(to)f(the)h(JMP/RJMP)g +(op)r(co)r(de)f(used.)506 1583 y Fs(Deprecated)676 1749 +y Fq(F)-7 b(or)27 b(new)h(co)r(de,)f(the)h(use)f(of)h(ISR\(...,)g +(ISR_ALIASOF\(...\)\))38 b(is)28 b(recommended.)515 1979 +y(Example:)656 2188 y Fj(ISR\(INT0_vect\))656 2267 y({)797 +2345 y(PORTB)37 b(=)e(42;)656 2424 y(})656 2582 y +(ISR_ALIAS\(INT1_vect,)41 b(INT0_vect\);)515 2928 y Fs(22.15.2.6)92 +b(#de\034ne)31 b(ISR_ALIASOF\(target_v)m(ector\))550 +3137 y Fj(#include)37 b()515 3367 y +Fq(The)h(ISR)h(is)f(link)n(ed)h(to)f(another)g(ISR,)h(sp)r(eci\034ed)f +(b)n(y)h(the)f(v)n(ect)h(parameter.)68 b(This)38 b(is)515 +3467 y(compatible)27 b(with)h(GCC)g(4.2)e(and)i(greater)e(only)-7 +b(.)515 3614 y(Use)27 b(this)h(attribute)g(in)g(the)g(attributes)f +(parameter)f(of)i(the)g(ISR)f(macro.)515 3877 y Fs(22.15.2.7)92 +b(#de\034ne)31 b(ISR_BLOCK)550 4086 y Fj(#)36 b(include)h +()515 4316 y Fq(Iden)n(tical)28 b(to)h(an)f(ISR)h +(with)g(no)g(attributes)f(sp)r(eci\034ed.)41 b(Global)28 +b(in)n(terrupts)g(are)g(initially)515 4415 y(disabled)35 +b(b)n(y)g(the)h(A)-9 b(VR)36 b(hardw)n(are)d(when)j(en)n(tering)e(the)i +(ISR,)g(without)g(the)g(compiler)515 4515 y(mo)r(difying)27 +b(this)h(state.)515 4662 y(Use)f(this)h(attribute)g(in)g(the)g +(attributes)f(parameter)f(of)i(the)g(ISR)f(macro.)p 515 +5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 255 271 +TeXDict begin 255 270 bop 515 203 a Fs(22.15)94 b Fo(<)p +Fs(a)m(vr/in)m(terrupt.h)p Fo(>)p Fs(:)42 b(In)m(terrupts)1144 +b(255)p 515 236 2865 4 v 515 523 a(22.15.2.8)92 b(#de\034ne)31 +b(ISR_NAKED)550 732 y Fj(#)36 b(include)h()515 +962 y Fq(ISR)29 b(is)f(created)g(with)h(no)f(prologue)f(or)g(epilogue)h +(co)r(de.)40 b(The)28 b(user)g(co)r(de)h(is)f(resp)r(onsible)515 +1062 y(for)33 b(preserv)-5 b(ation)33 b(of)h(the)g(mac)n(hine)g(state)g +(including)g(the)g(SREG)h(register,)g(as)e(w)n(ell)h(as)515 +1161 y(placing)27 b(a)g Fs(reti\(\))g Fq(\(p.)14 b(255\))27 +b(at)h(the)g(end)f(of)h(the)g(in)n(terrupt)f(routine.)515 +1308 y(Use)g(this)h(attribute)g(in)g(the)g(attributes)f(parameter)f(of) +i(the)g(ISR)f(macro.)515 1571 y Fs(22.15.2.9)92 b(#de\034ne)31 +b(ISR_NOBLOCK)550 1780 y Fj(#)36 b(include)h()515 +2010 y Fq(ISR)32 b(runs)f(with)i(global)e(in)n(terrupts)g(initially)h +(enabled.)50 b(The)32 b(in)n(terrupt)f(enable)h(\035ag)f(is)515 +2110 y(activ)-5 b(ated)25 b(b)n(y)g(the)g(compiler)g(as)f(early)g(as)h +(p)r(ossible)f(within)i(the)g(ISR)f(to)g(ensure)g(minimal)515 +2209 y(pro)r(cessing)h(dela)n(y)g(for)i(nested)f(in)n(terrupts.)515 +2356 y(This)f(ma)n(y)f(b)r(e)h(used)g(to)g(create)f(nested)h(ISRs,)h +(ho)n(w)n(ev)n(er)c(care)i(should)h(b)r(e)g(tak)n(en)g(to)g(a)n(v)n +(oid)515 2456 y(stac)n(k)e(o)n(v)n(er\035o)n(ws,)e(or)i(to)h(a)n(v)n +(oid)f(in\034nitely)h(en)n(tering)f(the)h(ISR)h(for)e(those)h(cases)e +(where)i(the)515 2556 y(A)-9 b(VR)31 b(hardw)n(are)f(do)r(es)h(not)g +(clear)f(the)i(resp)r(ectiv)n(e)e(in)n(terrupt)h(\035ag)f(b)r(efore)h +(en)n(tering)g(the)515 2655 y(ISR.)515 2802 y(Use)c(this)h(attribute)g +(in)g(the)g(attributes)f(parameter)f(of)i(the)g(ISR)f(macro.)515 +3065 y Fs(22.15.2.10)92 b(#de\034ne)31 b(reti\(\))550 +3274 y Fj(#include)37 b()515 3504 y +Fq(Returns)31 b(from)f(an)h(in)n(terrupt)g(routine,)g(enabling)g +(global)e(in)n(terrupts.)47 b(This)31 b(should)g(b)r(e)515 +3604 y(the)19 b(last)f(command)h(executed)f(b)r(efore)h(lea)n(ving)e +(an)i(ISR)g(de\034ned)g(with)g(the)g(ISR_NAKED)515 3703 +y(attribute.)515 3850 y(This)f(macro)f(actually)h(compiles)g(in)n(to)g +(a)g(single)g(line)h(of)g(assem)n(bly)-7 b(,)19 b(so)f(there)g(is)g(no) +h(function)515 3950 y(call)27 b(o)n(v)n(erhead.)515 4213 +y Fs(22.15.2.11)92 b(#de\034ne)31 b(sei\(\))550 4422 +y Fj(#include)37 b()515 4652 y Fq(Enables)26 +b(in)n(terrupts)g(b)n(y)g(setting)h(the)f(global)g(in)n(terrupt)g +(mask.)35 b(This)27 b(function)g(actually)515 4752 y(compiles)g(in)n +(to)g(a)g(single)g(line)h(of)g(assem)n(bly)-7 b(,)26 +b(so)h(there)g(is)h(no)f(function)h(call)f(o)n(v)n(erhead.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 256 272 +TeXDict begin 256 271 bop 515 203 a Fs(22.16)94 b Fo(<)p +Fs(a)m(vr/io.h)p Fo(>)p Fs(:)41 b(A)-11 b(VR)32 b(device-sp)s(eci\034c) +f(IO)g(de\034nitions)441 b(256)p 515 236 2865 4 v 515 +523 a(22.15.2.12)92 b(#de\034ne)31 b(SIGNAL\(v)m(ector\))550 +732 y Fj(#include)37 b()515 962 y Fq(In)n(tro)r(duces) +32 b(an)h(in)n(terrupt)g(handler)g(function)h(that)f(runs)g(with)h +(global)e(in)n(terrupts)h(ini-)515 1062 y(tially)27 b(disabled.)515 +1209 y(This)g(is)h(the)g(same)f(as)g(the)g(ISR)h(macro)f(without)h +(optional)e(attributes.)506 1404 y Fs(Deprecated)676 +1570 y Fq(Do)i(not)f(use)h Fs(SIGNAL\(\))g Fq(\(p.)14 +b(256\))27 b(in)h(new)f(co)r(de.)37 b(Use)27 b Fs(ISR\(\))h +Fq(\(p.)14 b(253\))27 b(instead.)515 1849 y Fn(22.16)112 +b Fd(<)p Fn(a)m(vr/io.h)p Fd(>)p Fn(:)51 b(A)-12 b(VR)35 +b(device-sp)s(eci\034c)k(IO)e(de\034nitions)550 2029 +y Fj(#include)g()515 2259 y Fq(This)c(header)f(\034le)h +(includes)g(the)g(apropriate)e(IO)i(de\034nitions)g(for)f(the)i(device) +e(that)i(has)515 2358 y(b)r(een)f(sp)r(eci\034ed)g(b)n(y)f(the)h +Fm(-mmcu=)e Fq(compiler)h(command-line)g(switc)n(h.)52 +b(This)32 b(is)h(done)f(b)n(y)515 2458 y(div)n(erting)39 +b(to)h(the)h(appropriate)e(\034le)h Fo(<)p Fm(avr/io)p +Fl(XXXX)13 b Fm(.h)p Fo(>)35 b Fq(whic)n(h)40 b(should)g(nev)n(er)g(b)r +(e)515 2558 y(included)28 b(directly)-7 b(.)36 b(Some)28 +b(register)e(names)h(common)g(to)g(all)g(A)-9 b(VR)28 +b(devices)f(are)g(de\034ned)515 2657 y(directly)h(within)h +Fo(<)p Fm(avr/common.h)p Fo(>)p Fq(,)22 b(whic)n(h)29 +b(is)f(included)g(in)h Fo(<)p Fm(avr/io.h)40 b(\()p Fq(p.)14 +b Fm(366\))p Fo(>)p Fq(,)515 2757 y(but)28 b(most)f(of)h(the)g(details) +f(come)g(from)g(the)h(resp)r(ectiv)n(e)f(include)h(\034le.)515 +2904 y(Note)f(that)h(this)g(\034le)g(alw)n(a)n(ys)d(includes)j(the)g +(follo)n(wing)e(\034les:)656 3113 y Fj(#include)37 b() +656 3192 y(#include)g()656 3271 y(#include)g +()656 3350 y(#include)g()515 +3579 y Fq(See)23 b Fo(<)p Fs(a)m(vr/sfr_defs.h)p Fo(>)p +Fs(:)39 b(Sp)s(ecial)26 b(function)g(registers)c Fq(\(p.)14 +b(278\))22 b(for)g(more)g(details)515 3679 y(ab)r(out)27 +b(that)h(header)f(\034le.)515 3826 y(Included)h(are)f(de\034nitions)h +(of)g(the)g(IO)f(register)g(set)g(and)h(their)g(resp)r(ectiv)n(e)f(bit) +h(v)-5 b(alues)28 b(as)515 3926 y(sp)r(eci\034ed)23 b(in)h(the)g(A)n +(tmel)g(do)r(cumen)n(tation.)35 b(Note)24 b(that)f(inconsistencies)g +(in)h(naming)f(con-)515 4025 y(v)n(en)n(tions,)j(so)g(ev)n(en)h(iden)n +(tical)g(functions)g(sometimes)g(get)g(di\033eren)n(t)g(names)f(on)h +(di\033eren)n(t)515 4125 y(devices.)515 4272 y(Also)32 +b(included)h(are)f(the)h(sp)r(eci\034c)f(names)h(useable)f(for)g(in)n +(terrupt)g(function)h(de\034nitions)515 4371 y(as)27 +b(do)r(cumen)n(ted)g Fs(here)h Fq(\(p.)14 b(230\).)515 +4518 y(Finally)-7 b(,)27 b(the)h(follo)n(wing)f(macros)f(are)g +(de\034ned:)639 4748 y Fk(\210)41 b Fs(RAMEND)722 4881 +y Fq(The)28 b(last)f(on-c)n(hip)g(RAM)h(address.)p 515 +5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 257 273 +TeXDict begin 257 272 bop 515 203 a Fs(22.17)94 b Fo(<)p +Fs(a)m(vr/lo)s(c)m(k.h)p Fo(>)p Fs(:)41 b(Lo)s(c)m(kbit)33 +b(Supp)s(ort)1097 b(257)p 515 236 2865 4 v 639 523 a +Fk(\210)41 b Fs(XRAMEND)722 656 y Fq(The)g(last)f(p)r(ossible)g(RAM)h +(lo)r(cation)f(that)h(is)f(addressable.)74 b(This)41 +b(is)f(equal)g(to)722 756 y(RAMEND)c(for)e(devices)g(that)h(do)f(not)h +(allo)n(w)e(for)h(external)g(RAM.)h(F)-7 b(or)34 b(devices)722 +855 y(that)28 b(allo)n(w)f(external)f(RAM,)i(this)g(will)g(larger)e +(than)h(RAMEND.)639 1021 y Fk(\210)41 b Fs(E2END)722 +1154 y Fq(The)28 b(last)f(EEPR)n(OM)i(address.)639 1320 +y Fk(\210)41 b Fs(FLASHEND)722 1453 y Fq(The)28 b(last)f(b)n(yte)h +(address)e(in)i(the)g(Flash)f(program)e(space.)639 1619 +y Fk(\210)41 b Fs(SPM_P)-8 b(A)m(GESIZE)722 1752 y Fq(F)h(or)33 +b(devices)g(with)g(b)r(o)r(otloader)f(supp)r(ort,)j(the)e(\035ash)g +(pagesize)f(\(in)i(b)n(ytes\))f(to)g(b)r(e)722 1851 y(used)28 +b(for)f(the)h Fm(SPM)e Fq(instruction.)639 2017 y Fk(\210)41 +b Fs(E2P)-8 b(A)m(GESIZE)722 2150 y Fq(The)28 b(size)f(of)h(the)g(EEPR) +n(OM)g(page.)515 2430 y Fn(22.17)112 b Fd(<)p Fn(a)m(vr/lo)s(c)m(k.h)p +Fd(>)p Fn(:)50 b(Lo)s(c)m(kbit)38 b(Supp)s(ort)506 2621 +y Fs(In)m(tro)s(duction)515 3001 y Fq(The)c(Lo)r(c)n(kbit)h(API)g(allo) +n(ws)e(a)i(user)f(to)g(sp)r(ecify)h(the)g(lo)r(c)n(kbit)g(settings)f +(for)g(the)h(sp)r(eci\034c)515 3100 y(A)-9 b(VR)32 b(device)f(they)h +(are)e(compiling)i(for.)48 b(These)31 b(lo)r(c)n(kbit)g(settings)h +(will)f(b)r(e)h(placed)g(in)f(a)515 3200 y(sp)r(ecial)c(section)g(in)h +(the)g(ELF)g(output)g(\034le,)g(after)f(linking.)515 +3347 y(Programming)e(to)r(ols)h(can)h(tak)n(e)f(adv)-5 +b(an)n(tage)25 b(of)i(the)h(lo)r(c)n(kbit)e(information)g(em)n(b)r +(edded)i(in)515 3446 y(the)22 b(ELF)h(\034le,)h(b)n(y)e(extracting)f +(this)i(information)e(and)i(determining)f(if)g(the)h(lo)r(c)n(kbits)f +(need)515 3546 y(to)i(b)r(e)g(programmed)e(after)i(programming)e(the)i +(Flash)g(and)f(EEPR)n(OM)i(memories.)35 b(This)515 3646 +y(also)29 b(allo)n(ws)h(a)g(single)g(ELF)i(\034le)f(to)f(con)n(tain)g +(all)h(the)g(information)f(needed)h(to)f(program)515 +3745 y(an)d(A)-9 b(VR.)515 3892 y(T)i(o)27 b(use)h(the)g(Lo)r(c)n(kbit) +f(API,)i(include)f(the)g Fo(<)p Fs(a)m(vr/io.h)f Fq(\(p.)14 +b(366\))p Fo(>)26 b Fq(header)h(\034le,)h(whic)n(h)g(in)515 +3992 y(turn)22 b(automatically)e(includes)i(the)h(individual)f(I/O)f +(header)g(\034le)h(and)f(the)i Fo(<)p Fs(a)m(vr/lo)s(c)m(k.h)515 +4091 y Fq(\(p.)14 b(366\))p Fo(>)j Fq(\034le.)34 b(These)18 +b(other)h(t)n(w)n(o)e(\034les)i(pro)n(vides)e(ev)n(erything)h +(necessary)e(to)j(set)g(the)g(A)-9 b(VR)515 4191 y(lo)r(c)n(kbits.)506 +4387 y Fs(Lo)s(c)m(kbit)33 b(API)515 4766 y Fq(Eac)n(h)i(I/O)g(header)g +(\034le)h(ma)n(y)f(de\034ne)h(up)g(to)g(3)f(macros)f(that)j(con)n +(trols)d(what)h(kinds)h(of)515 4866 y(lo)r(c)n(kbits)27 +b(are)f(a)n(v)-5 b(ailable)27 b(to)g(the)h(user.)p 515 +5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 258 274 +TeXDict begin 258 273 bop 515 203 a Fs(22.17)94 b Fo(<)p +Fs(a)m(vr/lo)s(c)m(k.h)p Fo(>)p Fs(:)41 b(Lo)s(c)m(kbit)33 +b(Supp)s(ort)1097 b(258)p 515 236 2865 4 v 515 523 a +Fq(If)31 b(__LOCK_BITS_EXIST)d(is)j(de\034ned,)h(then)f(t)n(w)n(o)f(lo) +r(c)n(k)g(bits)h(are)f(a)n(v)-5 b(ailable)29 b(to)i(the)515 +623 y(user)c(and)g(3)g(mo)r(de)h(settings)f(are)g(de\034ned)h(for)f +(these)g(t)n(w)n(o)g(bits.)515 770 y(If)c(__BOOT_LOCK_BITS_0_EXIST)18 +b(is)23 b(de\034ned,)i(then)e(the)g(t)n(w)n(o)f(BLB0)g(lo)r(c)n(k)h +(bits)515 869 y(are)j(a)n(v)-5 b(ailable)27 b(to)g(the)h(user)f(and)g +(4)g(mo)r(de)h(settings)f(are)g(de\034ned)h(for)f(these)g(t)n(w)n(o)g +(bits.)515 1016 y(If)c(__BOOT_LOCK_BITS_1_EXIST)18 b(is)23 +b(de\034ned,)i(then)e(the)g(t)n(w)n(o)f(BLB1)g(lo)r(c)n(k)h(bits)515 +1116 y(are)j(a)n(v)-5 b(ailable)27 b(to)g(the)h(user)f(and)g(4)g(mo)r +(de)h(settings)f(are)g(de\034ned)h(for)f(these)g(t)n(w)n(o)g(bits.)515 +1263 y(If)78 b(__BOOT_LOCK_APPLICA)-7 b(TION_T)g(ABLE_BITS_EXIST)74 +b(is)k(de\034ned)515 1362 y(then)38 b(t)n(w)n(o)f(lo)r(c)n(k)g(bits)h +(are)e(a)n(v)-5 b(ailable)36 b(to)i(set)g(the)g(lo)r(c)n(king)e(mo)r +(de)i(for)f(the)h(Application)515 1462 y(T)-7 b(able)27 +b(Section)g(\(whic)n(h)h(is)g(used)f(in)h(the)g(XMEGA)h(family\).)515 +1609 y(If)24 b(__BOOT_LOCK_APPLICA)-7 b(TION_BITS_EXIST)21 +b(is)j(de\034ned)g(then)h(t)n(w)n(o)e(lo)r(c)n(k)515 +1708 y(bits)28 b(are)f(a)n(v)-5 b(ailable)27 b(to)h(set)g(the)g(lo)r(c) +n(king)f(mo)r(de)h(for)g(the)g(Application)g(Section)g(\(whic)n(h)g(is) +515 1808 y(used)f(in)h(the)g(XMEGA)h(family\).)515 1955 +y(If)h(__BOOT_LOCK_BOOT_BITS_EXIST)25 b(is)30 b(de\034ned)g(then)g(t)n +(w)n(o)g(lo)r(c)n(k)f(bits)h(are)515 2054 y(a)n(v)-5 +b(ailable)25 b(to)i(set)f(the)h(lo)r(c)n(king)f(mo)r(de)h(for)f(the)h +(Bo)r(ot)f(Loader)f(Section)i(\(whic)n(h)g(is)f(used)h(in)515 +2154 y(the)h(XMEGA)h(family\).)515 2301 y(The)j(A)-9 +b(VR)34 b(lo)r(c)n(kbit)e(mo)r(des)h(ha)n(v)n(e)e(in)n(v)n(erted)h(v)-5 +b(alues,)34 b(logical)d(1)h(for)g(an)h(unprogrammed)515 +2401 y(\(disabled\))22 b(bit)g(and)g(logical)f(0)g(for)h(a)f +(programmed)g(\(enabled\))h(bit.)35 b(The)22 b(de\034ned)h(macros)515 +2500 y(for)i(eac)n(h)g(individual)g(lo)r(c)n(k)g(bit)i(represen)n(t)d +(this)i(in)g(their)f(de\034nition)h(b)n(y)g(a)f(bit-wise)h(in)n(v)n +(er-)515 2600 y(sion)h(of)g(a)h(mask.)36 b(F)-7 b(or)27 +b(example,)g(the)h(LB_MODE_3)e(macro)g(is)i(de\034ned)g(as:)656 +2779 y Fj(#define)37 b(LB_MODE_3)73 b(\(0xFC\))515 2858 +y(`)515 3058 y Fq(T)-7 b(o)33 b(com)n(bine)h(the)g(lo)r(c)n(kbit)g(mo)r +(de)g(macros)f(together)g(to)h(represen)n(t)e(a)i(whole)g(b)n(yte,)h +(use)515 3157 y(the)28 b(bit)n(wise)f(AND)i(op)r(erator,)d(lik)n(e)h +(so:)656 3337 y Fj(\(LB_MODE_3)38 b(&)d(BLB0_MODE_2\))515 +3537 y Fo(<)p Fs(a)m(vr/lo)s(c)m(k.h)40 b Fq(\(p.)14 +b(366\))p Fo(>)38 b Fq(also)g(de\034nes)i(a)f(macro)f(that)i(pro)n +(vides)e(a)h(default)h(lo)r(c)n(kbit)515 3636 y(v)-5 +b(alue:)36 b(LOCKBITS_DEF)-9 b(A)n(UL)i(T)27 b(whic)n(h)h(is)f +(de\034ned)h(to)g(b)r(e)g(0xFF.)515 3783 y(See)23 b(the)g(A)-9 +b(VR)23 b(device)g(sp)r(eci\034c)g(datasheet)f(for)g(more)h(details)f +(ab)r(out)h(these)g(lo)r(c)n(k)f(bits)h(and)515 3883 +y(the)28 b(a)n(v)-5 b(ailable)26 b(mo)r(de)i(settings.)515 +4030 y(A)c(con)n(v)n(enience)f(macro,)h(LOCKMEM,)g(is)g(de\034ned)h(as) +e(a)h(GCC)h(attribute)f(for)g(a)g(custom-)515 4129 y(named)j(section)g +(of)h(".lo)r(c)n(k".)515 4276 y(A)f(con)n(v)n(enience)f(macro,)g +(LOCKBITS,)g(is)h(de\034ned)h(that)g(declares)d(a)i(v)-5 +b(ariable,)27 b(__lo)r(c)n(k,)515 4376 y(of)g(t)n(yp)r(e)g(unsigned)g +(c)n(har)g(with)g(the)h(attribute)f(de\034ned)h(b)n(y)f(LOCKMEM.)g +(This)g(v)-5 b(ariable)515 4475 y(allo)n(ws)26 b(the)i(end)g(user)f(to) +g(easily)g(set)g(the)h(lo)r(c)n(kbit)g(data.)506 4658 +y Fs(Note:)676 4807 y Fq(If)23 b(a)g(device-sp)r(eci\034c)f(I/O)g +(header)g(\034le)h(has)f(previously)g(de\034ned)h(LOCKMEM,)g(then)676 +4907 y(LOCKMEM)k(is)f(not)h(rede\034ned.)36 b(If)28 b(a)e(device-sp)r +(eci\034c)g(I/O)g(header)g(\034le)h(has)f(previ-)676 +5006 y(ously)i(de\034ned)h(LOCKBITS,)e(then)i(LOCKBITS)e(is)i(not)f +(rede\034ned.)39 b(LOCKBITS)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 259 275 +TeXDict begin 259 274 bop 515 203 a Fs(22.17)94 b Fo(<)p +Fs(a)m(vr/lo)s(c)m(k.h)p Fo(>)p Fs(:)41 b(Lo)s(c)m(kbit)33 +b(Supp)s(ort)1097 b(259)p 515 236 2865 4 v 676 523 a +Fq(is)33 b(curren)n(tly)f(kno)n(wn)g(to)h(b)r(e)h(de\034ned)f(in)g(the) +h(I/O)e(header)g(\034les)h(for)f(the)i(XMEGA)676 623 +y(devices.)506 819 y Fs(API)f(Usage)f(Example)515 1214 +y Fq(Putting)c(all)g(of)f(this)h(together)f(is)g(easy:)656 +1423 y Fj(#include)37 b()656 1581 y(LOCKBITS)g(=)f +(\(LB_MODE_1)i(&)d(BLB0_MODE_3)k(&)c(BLB1_MODE_4\);)656 +1739 y(int)h(main\(void\))656 1817 y({)797 1896 y(return)h(0;)656 +1975 y(})515 2205 y Fq(Or:)656 2414 y Fj(#include)g()656 +2572 y(unsigned)g(char)g(__lock)g(__attribute__\(\(section)k +(\(".lock"\)\)\))d(=)797 2651 y(\(LB_MODE_1)g(&)e(BLB0_MODE_3)i(&)d +(BLB1_MODE_4\);)656 2809 y(int)h(main\(void\))656 2887 +y({)797 2966 y(return)h(0;)656 3045 y(})515 3275 y Fq(Ho)n(w)n(ev)n(er) +23 b(there)j(are)f(a)g(n)n(um)n(b)r(er)g(of)h(ca)n(v)n(eats)e(that)i(y) +n(ou)f(need)h(to)f(b)r(e)h(a)n(w)n(are)e(of)i(to)f(use)h(this)515 +3375 y(API)i(prop)r(erly)-7 b(.)515 3522 y(Be)24 b(sure)f(to)h(include) +g Fo(<)p Fs(a)m(vr/io.h)g Fq(\(p.)14 b(366\))p Fo(>)23 +b Fq(to)g(get)h(all)g(of)g(the)g(de\034nitions)g(for)g(the)g(API.)515 +3621 y(The)h(LOCKBITS)g(macro)f(de\034nes)i(a)f(global)f(v)-5 +b(ariable)25 b(to)g(store)g(the)h(lo)r(c)n(kbit)f(data.)36 +b(This)515 3721 y(v)-5 b(ariable)28 b(is)h(assigned)g(to)g(its)g(o)n +(wn)g(link)n(er)g(section.)42 b(Assign)29 b(the)g(desired)g(lo)r(c)n +(kbit)h(v)-5 b(alues)515 3820 y(immediately)27 b(in)h(the)g(v)-5 +b(ariable)27 b(initialization.)515 3967 y(The)37 b(.lo)r(c)n(k)g +(section)g(in)g(the)h(ELF)g(\034le)f(will)h(get)f(its)g(v)-5 +b(alues)37 b(from)g(the)h(initial)f(v)-5 b(ariable)515 +4067 y(assignmen)n(t)23 b(ONL)-7 b(Y.)25 b(This)g(means)f(that)h(y)n +(ou)f(can)g(NOT)h(assign)e(v)-5 b(alues)25 b(to)f(this)h(v)-5 +b(ariable)515 4167 y(in)28 b(functions)f(and)h(the)g(new)f(v)-5 +b(alues)28 b(will)f(not)h(b)r(e)g(put)g(in)n(to)f(the)h(ELF)g(.lo)r(c)n +(k)f(section.)515 4313 y(The)33 b(global)e(v)-5 b(ariable)32 +b(is)h(declared)f(in)h(the)g(LOCKBITS)f(macro)f(has)i(t)n(w)n(o)f +(leading)g(un-)515 4413 y(derscores,)f(whic)n(h)h(means)g(that)h(it)g +(is)f(reserv)n(ed)f(for)g(the)i("implemen)n(tation",)g(meaning)515 +4513 y(the)28 b(library)-7 b(,)26 b(so)h(it)h(will)g(not)f(con\035ict)h +(with)g(a)f(user-named)f(v)-5 b(ariable.)515 4660 y(Y)e(ou)31 +b(m)n(ust)g(initialize)g(the)g(lo)r(c)n(kbit)g(v)-5 b(ariable)30 +b(to)h(some)f(meaningful)h(v)-5 b(alue,)32 b(ev)n(en)e(if)i(it)f(is)515 +4759 y(the)h(default)g(v)-5 b(alue.)48 b(This)32 b(is)f(b)r(ecause)h +(the)f(lo)r(c)n(kbits)h(default)g(to)f(a)g(logical)f(1,)j(meaning)515 +4859 y(unprogrammed.)k(Normal)27 b(uninitialized)i(data)f(defaults)g +(to)g(all)g(lo)r(cgial)f(zeros.)38 b(So)28 b(it)g(is)515 +4958 y(vital)33 b(that)i(all)e(lo)r(c)n(kbits)h(are)f(initialized,)i +(ev)n(en)f(with)g(default)g(data.)56 b(If)34 b(they)g(are)f(not,)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 260 276 +TeXDict begin 260 275 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(260)p 515 236 2865 4 v 515 523 a Fq(then)26 b(the)g(lo)r(c)n +(kbits)f(ma)n(y)g(not)g(programmed)f(to)i(the)g(desired)f(settings)g +(and)g(can)h(p)r(ossibly)515 623 y(put)i(y)n(our)e(device)i(in)n(to)f +(an)g(unreco)n(v)n(erable)e(state.)515 770 y(Be)f(sure)g(to)g(ha)n(v)n +(e)g(the)g(-mmcu=)p Fl(devic)l(e)32 b Fq(\035ag)24 b(in)h(y)n(our)e +(compile)h(command)g(line)h(and)f(y)n(our)515 869 y(link)n(er)h +(command)g(line)h(to)g(ha)n(v)n(e)f(the)h(correct)f(device)g(selected)h +(and)g(to)g(ha)n(v)n(e)e(the)j(correct)515 969 y(I/O)f(header)h(\034le) +h(included)g(when)g(y)n(ou)e(include)i Fo(<)p Fs(a)m(vr/io.h)f +Fq(\(p.)14 b(366\))p Fo(>)p Fq(.)515 1116 y(Y)-7 b(ou)26 +b(can)g(prin)n(t)g(out)g(the)g(con)n(ten)n(ts)g(of)g(the)g(.lo)r(c)n(k) +g(section)f(in)i(the)f(ELF)h(\034le)f(b)n(y)g(using)g(this)515 +1215 y(command)h(line:)656 1399 y Fj(avr-objdump)38 b(-s)e(-j)g(.lock)g +()515 1674 y Fn(22.18)112 b Fd(<)p Fn(a)m(vr/pgmspace.h)p +Fd(>)p Fn(:)52 b(Program)37 b(Space)h(Utilities)515 1875 +y Fs(22.18.1)93 b(Detailed)31 b(Description)656 2054 +y Fj(#include)37 b()656 2133 y(#include)g() +515 2337 y Fq(The)d(functions)h(in)g(this)f(mo)r(dule)h(pro)n(vide)e +(in)n(terfaces)h(for)g(a)g(program)e(to)i(access)g(data)515 +2437 y(stored)g(in)h(program)e(space)h(\(\035ash)h(memory\))g(of)g(the) +g(device.)59 b(In)36 b(order)d(to)i(use)g(these)515 2537 +y(functions,)28 b(the)g(target)e(device)i(m)n(ust)f(supp)r(ort)h +(either)f(the)h Fm(LPM)e Fq(or)h Fm(ELPM)f Fq(instructions.)506 +2723 y Fs(Note:)676 2873 y Fq(These)h(functions)g(are)e(an)i(attempt)g +(to)g(pro)n(vide)e(some)h(compatibilit)n(y)h(with)g(header)676 +2972 y(\034les)e(that)g(come)g(with)g(IAR)g(C,)g(to)g(mak)n(e)f(p)r +(orting)g(applications)g(b)r(et)n(w)n(een)h(di\033eren)n(t)676 +3072 y(compilers)34 b(easier.)57 b(This)35 b(is)g(not)g(100\045)e +(compatibilit)n(y)i(though)f(\(GCC)i(do)r(es)e(not)676 +3172 y(ha)n(v)n(e)26 b(full)j(supp)r(ort)e(for)g(m)n(ultiple)h(address) +e(spaces)h(y)n(et\).)676 3271 y(If)g(y)n(ou)e(are)g(w)n(orking)f(with)i +(strings)f(whic)n(h)h(are)f(completely)h(based)f(in)h(ram,)g(use)g(the) +676 3371 y(standard)h(string)g(functions)g(describ)r(ed)h(in)f +Fo(<)p Fs(string.h)p Fo(>)p Fs(:)40 b(Strings)27 b Fq(\(p.)14 +b(200\).)676 3470 y(If)33 b(p)r(ossible,)f(put)h(y)n(our)e(constan)n(t) +g(tables)g(in)i(the)f(lo)n(w)n(er)e(64)i(KB)f(and)h(use)g +Fs(pgm_-)676 3570 y(read_b)m(yte_near\(\))k Fq(\(p.)14 +b(263\))34 b(or)f Fs(pgm_read_w)m(ord_near\(\))i Fq(\(p.)14 +b(265\))33 b(in-)676 3670 y(stead)e(of)38 b Fs(pgm_read_b)m +(yte_far\(\))33 b Fq(\(p.)14 b(263\))31 b(or)f Fs(pgm_read_w)m +(ord_far\(\))676 3769 y Fq(\(p.)14 b(265\))29 b(since)g(it)h(is)f(more) +g(e\036cien)n(t)g(that)h(w)n(a)n(y)-7 b(,)28 b(and)i(y)n(ou)e(can)h +(still)h(use)f(the)h(upp)r(er)676 3869 y(64K)f(for)h(executable)g(co)r +(de.)45 b(All)31 b(functions)f(that)h(are)e(su\036xed)i(with)g(a)f +Fm(_P)f Fl(r)l(e)l(quir)l(e)676 3969 y Fq(their)c(argumen)n(ts)f(to)h +(b)r(e)h(in)f(the)h(lo)n(w)n(er)d(64)i(KB)f(of)h(the)h(\035ash)f(R)n +(OM,)f(as)h(they)g(do)g(not)676 4068 y(use)33 b(ELPM)h(instructions.)53 +b(This)33 b(is)g(normally)f(not)h(a)f(big)h(concern)f(as)g(the)i(link)n +(er)676 4168 y(setup)21 b(arranges)d(an)n(y)i(program)f(space)h +(constan)n(ts)f(declared)h(using)g(the)h(macros)e(from)676 +4267 y(this)30 b(header)e(\034le)i(so)f(they)h(are)e(placed)h(righ)n(t) +g(after)g(the)h(in)n(terrupt)f(v)n(ectors,)g(and)g(in)676 +4367 y(fron)n(t)j(of)h(an)n(y)f(executable)g(co)r(de.)52 +b(Ho)n(w)n(ev)n(er,)32 b(it)i(can)e(b)r(ecome)h(a)f(problem)g(if)h +(there)676 4467 y(are)e(to)r(o)g(man)n(y)g(of)h(these)g(constan)n(ts,)f +(or)g(for)g(b)r(o)r(otloaders)f(on)i(devices)f(with)h(more)676 +4566 y(than)c(64)e(KB)h(of)h(R)n(OM.)f Fl(A)n(l)t(l)j(these)g +(functions)g(wil)t(l)h(not)e(work)h(in)g(that)g(situation.)515 +4825 y Fs(De\034nes)639 5006 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PR)m(OGMEM)f Fq(__A)-7 b(TTR_PR)n(OGMEM__)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 261 277 +TeXDict begin 261 276 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(261)p 515 236 2865 4 v 639 523 a Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PSTR)p Fq(\(s\))g(\(\(const)g(PR)n(OGMEM)h(c)n(har)d +Fh(\003)p Fq(\)\(s\)\))639 631 y Fk(\210)41 b Fq(#de\034ne)49 +b Fs(pgm_read_b)m(yte_near)p Fq(\(address_short\))e(__LPM\(\()p +Fs(uin)m(t16_-)722 731 y(t)p Fq(\)\(address_short\)\))639 +839 y Fk(\210)41 b Fq(#de\034ne)207 b Fs(pgm_read_w)m(ord_near)p +Fq(\(address_short\))e(__LPM_-)722 938 y(w)n(ord\(\()p +Fs(uin)m(t16_t)p Fq(\)\(address_short\)\))639 1046 y +Fk(\210)41 b Fq(#de\034ne)180 b Fs(pgm_read_dw)m(ord_near)p +Fq(\(address_short\))f(__LPM_-)722 1146 y(dw)n(ord\(\()p +Fs(uin)m(t16_t)p Fq(\)\(address_short\)\))639 1254 y +Fk(\210)41 b Fq(#de\034ne)218 b Fs(pgm_read_\035oat_near)p +Fq(\(address_short\))e(__LPM_-)722 1353 y(\035oat\(\()p +Fs(uin)m(t16_t)p Fq(\)\(address_short\)\))639 1461 y +Fk(\210)41 b Fq(#de\034ne)71 b Fs(pgm_read_b)m(yte_far)p +Fq(\(address_long\))f(__ELPM\(\()p Fs(uin)m(t32_-)722 +1561 y(t)p Fq(\)\(address_long\)\))639 1669 y Fk(\210)41 +b Fq(#de\034ne)229 b Fs(pgm_read_w)m(ord_far)p Fq(\(address_long\))f +(__ELPM_-)722 1768 y(w)n(ord\(\()p Fs(uin)m(t32_t)p Fq +(\)\(address_long\)\))639 1876 y Fk(\210)41 b Fq(#de\034ne)202 +b Fs(pgm_read_dw)m(ord_far)p Fq(\(address_long\))g(__ELPM_-)722 +1976 y(dw)n(ord\(\()p Fs(uin)m(t32_t)p Fq(\)\(address_long\)\))639 +2084 y Fk(\210)41 b Fq(#de\034ne)240 b Fs(pgm_read_\035oat_far)p +Fq(\(address_long\))f(__ELPM_-)722 2183 y(\035oat\(\()p +Fs(uin)m(t32_t)p Fq(\)\(address_long\)\))639 2291 y Fk(\210)41 +b Fq(#de\034ne)204 b Fs(pgm_read_b)m(yte)p Fq(\(address_short\))f +(pgm_read_b)n(yte_-)722 2391 y(near\(address_short\))639 +2499 y Fk(\210)41 b Fq(#de\034ne)182 b Fs(pgm_read_w)m(ord)p +Fq(\(address_short\))d(pgm_read_w)n(ord_-)722 2599 y +(near\(address_short\))639 2707 y Fk(\210)41 b Fq(#de\034ne)132 +b Fs(pgm_read_dw)m(ord)p Fq(\(address_short\))e(pgm_read_dw)n(ord_-)722 +2806 y(near\(address_short\))639 2914 y Fk(\210)41 b +Fq(#de\034ne)201 b Fs(pgm_read_\035oat)p Fq(\(address_short\))d +(pgm_read_\035oat_-)722 3014 y(near\(address_short\))639 +3122 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PGM_P)g Fq(const)f +Fs(prog_c)m(har)j Fh(\003)639 3230 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PGM_V)m(OID_P)h Fq(const)e Fs(prog_v)m(oid)h Fh(\003)515 +3493 y Fs(T)m(yp)s(edefs)639 3679 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b(v)n(oid)f(PR)n(OGMEM)i Fs(prog_v)m(oid)639 3787 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b(c)n(har)f(PR)n(OGMEM)h Fs(prog_c)m(har)639 +3895 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b(unsigned)g(c)n(har)e(PR)n +(OGMEM)i Fs(prog_uc)m(har)639 4003 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t8_t)g Fq(PR)n(OGMEM)g Fs(prog_in)m(t8_t)639 +4111 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t8_t)g +Fq(PR)n(OGMEM)g Fs(prog_uin)m(t8_t)639 4219 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(in)m(t16_t)g Fq(PR)n(OGMEM)g +Fs(prog_in)m(t16_t)639 4327 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(uin)m(t16_t)g Fq(PR)n(OGMEM)g Fs(prog_uin)m(t16_t)639 +4435 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(in)m(t32_t)g +Fq(PR)n(OGMEM)g Fs(prog_in)m(t32_t)639 4542 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t32_t)g Fq(PR)n(OGMEM)g +Fs(prog_uin)m(t32_t)639 4650 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t64_t)g Fq(PR)n(OGMEM)g Fs(prog_in)m(t64_t)639 +4758 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t64_t)g +Fq(PR)n(OGMEM)g Fs(prog_uin)m(t64_t)p 515 5179 V 515 +5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 262 278 +TeXDict begin 262 277 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(262)p 515 236 2865 4 v 515 523 a(F)-8 b(unctions)639 +709 y Fk(\210)41 b Fq(PGM_V)n(OID_P)32 b Fs(memc)m(hr_P)h +Fq(\(PGM_V)n(OID_P)-7 b(,)33 b(in)n(t)f(__v)-5 b(al,)32 +b(size_t)f(__-)722 809 y(len\))639 917 y Fk(\210)41 b +Fq(in)n(t)d Fs(memcmp_P)g Fq(\(const)f(v)n(oid)g Fh(\003)p +Fq(,)j(PGM_V)n(OID_P)-7 b(,)39 b(size_t\))e(__A)-7 b(TTR_-)722 +1017 y(PURE__)639 1125 y Fk(\210)41 b Fq(v)n(oid)27 b +Fh(\003)g Fs(memcp)m(y_P)h Fq(\(v)n(oid)g Fh(\003)p Fq(,)f(PGM_V)n +(OID_P)-7 b(,)28 b(size_t\))639 1233 y Fk(\210)41 b Fq(PGM_V)n(OID_P)26 +b Fs(memrc)m(hr_P)g Fq(\(PGM_V)n(OID_P)-7 b(,)27 b(in)n(t)e(__v)-5 +b(al,)25 b(size_t)g(__-)722 1332 y(len\))639 1440 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(strcasecmp_P)h Fq(\(const)e(c)n(har)f +Fh(\003)p Fq(,)i(PGM_P\))g(__A)-7 b(TTR_PURE__)639 1548 +y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strcat_P)i +Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P\))639 1656 y Fk(\210)41 +b Fq(PGM_P)29 b Fs(strc)m(hr_P)g Fq(\(PGM_P)-7 b(,)29 +b(in)n(t)f(__v)-5 b(al\))639 1764 y Fk(\210)41 b Fq(PGM_P)29 +b Fs(strc)m(hrn)m(ul_P)g Fq(\(PGM_P)-7 b(,)29 b(in)n(t)f(__v)-5 +b(al\))639 1872 y Fk(\210)41 b Fq(in)n(t)28 b Fs(strcmp_P)g +Fq(\(const)g(c)n(har)e Fh(\003)p Fq(,)h(PGM_P\))i(__A)-7 +b(TTR_PURE__)639 1980 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(strcp)m(y_P)i Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P\))639 +2088 y Fk(\210)41 b Fq(size_t)35 b Fs(strcspn_P)h Fq(\(const)f(c)n(har) +f Fh(\003)p Fq(__s,)i(PGM_P)g(__reject\))e(__A)-7 b(TTR_-)722 +2187 y(PURE__)639 2295 y Fk(\210)41 b Fq(size_t)27 b +Fs(strlcat_P)i Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P)-7 +b(,)29 b(size_t\))639 2403 y Fk(\210)41 b Fq(size_t)27 +b Fs(strlcp)m(y_P)i Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P)-7 +b(,)29 b(size_t\))639 2511 y Fk(\210)41 b Fq(size_t)27 +b Fs(strlen_P)h Fq(\(PGM_P\))639 2619 y Fk(\210)41 b +Fq(in)n(t)58 b Fs(strncasecmp_P)h Fq(\(const)f(c)n(har)f +Fh(\003)p Fq(,)65 b(PGM_P)-7 b(,)59 b(size_t\))e(__A)-7 +b(TTR_-)722 2719 y(PURE__)639 2827 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strncat_P)i Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P)-7 +b(,)28 b(size_t\))639 2934 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(strncmp_P)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(,)h(PGM_P)-7 +b(,)29 b(size_t\))e(__A)-7 b(TTR_PURE__)639 3042 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(strncp)m(y_P)i Fq(\(c)n(har)e +Fh(\003)p Fq(,)g(PGM_P)-7 b(,)29 b(size_t\))639 3150 +y Fk(\210)41 b Fq(size_t)27 b Fs(strnlen_P)h Fq(\(PGM_P)-7 +b(,)29 b(size_t\))639 3258 y Fk(\210)41 b Fq(c)n(har)29 +b Fh(\003)g Fs(strpbrk_P)j Fq(\(const)d(c)n(har)g Fh(\003)p +Fq(__s,)g(PGM_P)h(__accept\))f(__A)-7 b(TTR_-)722 3358 +y(PURE__)639 3466 y Fk(\210)41 b Fq(PGM_P)29 b Fs(strrc)m(hr_P)g +Fq(\(PGM_P)-7 b(,)29 b(in)n(t)f(__v)-5 b(al\))639 3574 +y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strsep_P)h +Fq(\(c)n(har)e Fh(\003\003)p Fq(__sp,)g(PGM_P)i(__delim\))639 +3682 y Fk(\210)41 b Fq(size_t)c Fs(strspn_P)g Fq(\(const)g(c)n(har)f +Fh(\003)p Fq(__s,)i(PGM_P)f(__accept\))f(__A)-7 b(TTR_-)722 +3781 y(PURE__)639 3889 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(strstr_P)h Fq(\(const)g(c)n(har)e Fh(\003)p +Fq(,)h(PGM_P\))i(__A)-7 b(TTR_PURE__)639 3997 y Fk(\210)41 +b Fq(v)n(oid)28 b Fh(\003)h Fs(memmem_P)e Fq(\(const)i(v)n(oid)f +Fh(\003)p Fq(,)h(size_t,)g(PGM_V)n(OID_P)-7 b(,)29 b(size_t\))g(_-)722 +4097 y(_A)-7 b(TTR_PURE__)639 4205 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strcasestr_P)h Fq(\(const)g(c)n(har)e +Fh(\003)p Fq(,)h(PGM_P\))i(__A)-7 b(TTR_PURE__)515 4468 +y Fs(22.18.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +4668 y(22.18.2.1)92 b(#de\034ne)31 b(PGM_P)h(const)g(prog_c)m(har)h +Fh(\003)515 4815 y Fq(Used)27 b(to)h(declare)e(a)i(v)-5 +b(ariable)26 b(that)i(is)f(a)g(p)r(oin)n(ter)h(to)f(a)g(string)g(in)h +(program)d(space.)p 515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 263 279 +TeXDict begin 263 278 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(263)p 515 236 2865 4 v 515 523 a(22.18.2.2)92 b(#de\034ne)83 +b(pgm_read_b)m(yte\(address_short\))h(pgm_read_-)515 +623 y(b)m(yte_near\(address_short\))515 770 y Fq(Read)27 +b(a)g(b)n(yte)h(from)f(the)h(program)d(space)i(with)h(a)f(16-bit)g +(\(near\))g(address.)506 983 y Fs(Note:)676 1133 y Fq(The)h(address)e +(is)h(a)h(b)n(yte)f(address.)36 b(The)27 b(address)g(is)g(in)h(the)g +(program)d(space.)515 1475 y Fs(22.18.2.3)92 b(#de\034ne)189 +b(pgm_read_b)m(yte_far\(address_long\))j(__-)515 1575 +y(ELPM\(\(uin)m(t32_t\)\(address_long\)\))515 1722 y +Fq(Read)27 b(a)g(b)n(yte)h(from)f(the)h(program)d(space)i(with)h(a)f +(32-bit)g(\(far\))h(address.)506 1936 y Fs(Note:)676 +2085 y Fq(The)g(address)e(is)h(a)h(b)n(yte)f(address.)36 +b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)515 +2428 y Fs(22.18.2.4)92 b(#de\034ne)136 b(pgm_read_b)m +(yte_near\(address_short\))i(__-)515 2527 y(LPM\(\(uin)m +(t16_t\)\(address_short\)\))515 2674 y Fq(Read)27 b(a)g(b)n(yte)h(from) +f(the)h(program)d(space)i(with)h(a)f(16-bit)g(\(near\))g(address.)506 +2872 y Fs(Note:)676 3021 y Fq(The)h(address)e(is)h(a)h(b)n(yte)f +(address.)36 b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)515 +3348 y Fs(22.18.2.5)92 b(#de\034ne)44 b(pgm_read_dw)m +(ord\(address_short\))h(pgm_read_-)515 3448 y(dw)m +(ord_near\(address_short\))515 3594 y Fq(Read)27 b(a)g(double)h(w)n +(ord)e(from)h(the)h(program)e(space)g(with)j(a)e(16-bit)f(\(near\))i +(address.)506 3808 y Fs(Note:)676 3958 y Fq(The)g(address)e(is)h(a)h(b) +n(yte)f(address.)36 b(The)27 b(address)g(is)g(in)h(the)g(program)d +(space.)515 4300 y Fs(22.18.2.6)92 b(#de\034ne)150 b(pgm_read_dw)m +(ord_far\(address_long\))j(__-)515 4400 y(ELPM_dw)m(ord\(\(uin)m +(t32_t\)\(address_long\)\))515 4547 y Fq(Read)27 b(a)g(double)h(w)n +(ord)e(from)h(the)h(program)e(space)g(with)j(a)e(32-bit)f(\(far\))i +(address.)506 4761 y Fs(Note:)676 4910 y Fq(The)g(address)e(is)h(a)h(b) +n(yte)f(address.)36 b(The)27 b(address)g(is)g(in)h(the)g(program)d +(space.)p 515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 264 280 +TeXDict begin 264 279 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(264)p 515 236 2865 4 v 515 523 a(22.18.2.7)92 b(#de\034ne)97 +b(pgm_read_dw)m(ord_near\(address_short\))i(__-)515 623 +y(LPM_dw)m(ord\(\(uin)m(t16_t\)\(address_short\)\))515 +770 y Fq(Read)26 b(a)h(double)g(w)n(ord)f(from)g(the)i(program)d(space) +h(with)h(a)g(16-bit)f(\(near\))h(address.)506 970 y Fs(Note:)676 +1119 y Fq(The)h(address)e(is)h(a)h(b)n(yte)f(address.)36 +b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)515 +1448 y Fs(22.18.2.8)92 b(#de\034ne)81 b +(pgm_read_\035oat\(address_short\))i(pgm_read_-)515 1548 +y(\035oat_near\(address_short\))515 1695 y Fq(Read)27 +b(a)g(\035oat)g(from)g(the)h(program)e(space)h(with)h(a)f(16-bit)g +(\(near\))g(address.)506 1912 y Fs(Note:)676 2061 y Fq(The)h(address)e +(is)h(a)h(b)n(yte)f(address.)36 b(The)27 b(address)g(is)g(in)h(the)g +(program)d(space.)515 2407 y Fs(22.18.2.9)92 b(#de\034ne)188 +b(pgm_read_\035oat_far\(address_long\))i(__-)515 2507 +y(ELPM_\035oat\(\(uin)m(t32_t\)\(address_long\)\))515 +2653 y Fq(Read)27 b(a)g(\035oat)g(from)g(the)h(program)e(space)h(with)h +(a)f(32-bit)g(\(far\))g(address.)506 2870 y Fs(Note:)676 +3020 y Fq(The)h(address)e(is)h(a)h(b)n(yte)f(address.)36 +b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)515 +3366 y Fs(22.18.2.10)92 b(#de\034ne)110 b +(pgm_read_\035oat_near\(address_short\))j(__-)515 3465 +y(LPM_\035oat\(\(uin)m(t16_t\)\(address_short\)\))515 +3612 y Fq(Read)27 b(a)g(\035oat)g(from)g(the)h(program)e(space)h(with)h +(a)f(16-bit)g(\(near\))g(address.)506 3812 y Fs(Note:)676 +3962 y Fq(The)h(address)e(is)h(a)h(b)n(yte)f(address.)36 +b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)515 +4291 y Fs(22.18.2.11)92 b(#de\034ne)46 b(pgm_read_w)m +(ord\(address_short\))i(pgm_read_-)515 4391 y(w)m +(ord_near\(address_short\))515 4537 y Fq(Read)27 b(a)g(w)n(ord)g(from)g +(the)h(program)d(space)i(with)h(a)f(16-bit)g(\(near\))g(address.)506 +4754 y Fs(Note:)676 4904 y Fq(The)h(address)e(is)h(a)h(b)n(yte)f +(address.)36 b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)p +515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 265 281 +TeXDict begin 265 280 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(265)p 515 236 2865 4 v 515 523 a(22.18.2.12)92 +b(#de\034ne)153 b(pgm_read_w)m(ord_far\(address_long\))i(__-)515 +623 y(ELPM_w)m(ord\(\(uin)m(t32_t\)\(address_long\)\))515 +770 y Fq(Read)27 b(a)g(w)n(ord)g(from)g(the)h(program)d(space)i(with)h +(a)f(32-bit)g(\(far\))h(address.)506 986 y Fs(Note:)676 +1136 y Fq(The)g(address)e(is)h(a)h(b)n(yte)f(address.)36 +b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)515 +1482 y Fs(22.18.2.13)92 b(#de\034ne)99 b(pgm_read_w)m +(ord_near\(address_short\))j(__-)515 1581 y(LPM_w)m(ord\(\(uin)m +(t16_t\)\(address_short\)\))515 1728 y Fq(Read)27 b(a)g(w)n(ord)g(from) +g(the)h(program)d(space)i(with)h(a)f(16-bit)g(\(near\))g(address.)506 +1928 y Fs(Note:)676 2078 y Fq(The)h(address)e(is)h(a)h(b)n(yte)f +(address.)36 b(The)27 b(address)g(is)g(in)h(the)g(program)d(space.)515 +2407 y Fs(22.18.2.14)92 b(#de\034ne)31 b(PGM_V)m(OID_P)i(const)f +(prog_v)m(oid)f Fh(\003)515 2554 y Fq(Used)c(to)h(declare)e(a)i +(generic)e(p)r(oin)n(ter)h(to)h(an)f(ob)5 b(ject)27 b(in)h(program)e +(space.)515 2817 y Fs(22.18.2.15)92 b(#de\034ne)31 b(PR)m(OGMEM)f(__A) +-8 b(TTR_PR)m(OGMEM__)515 2964 y Fq(A)n(ttribute)28 b(to)f(use)h(in)g +(order)e(to)h(declare)g(an)g(ob)5 b(ject)27 b(b)r(eing)h(lo)r(cated)f +(in)h(\035ash)f(R)n(OM.)515 3227 y Fs(22.18.2.16)92 b(#de\034ne)31 +b(PSTR\(s\))h(\(\(const)g(PR)m(OGMEM)e(c)m(har)k Fh(\003)p +Fs(\)\(s\)\))515 3374 y Fq(Used)27 b(to)h(declare)e(a)i(static)f(p)r +(oin)n(ter)g(to)h(a)f(string)g(in)g(program)f(space.)515 +3637 y Fs(22.18.3)93 b(T)m(yp)s(edef)32 b(Do)s(cumen)m(tation)515 +3837 y(22.18.3.1)92 b(prog_c)m(har)515 3984 y Fq(T)n(yp)r(e)27 +b(of)h(a)f("c)n(har")e(ob)5 b(ject)28 b(lo)r(cated)f(in)h(\035ash)f(R)n +(OM.)515 4247 y Fs(22.18.3.2)92 b(prog_in)m(t16_t)515 +4394 y Fq(T)n(yp)r(e)27 b(of)h(an)f("in)n(t16_t")f(ob)5 +b(ject)27 b(lo)r(cated)g(in)h(\035ash)f(R)n(OM.)515 4657 +y Fs(22.18.3.3)92 b(prog_in)m(t32_t)515 4804 y Fq(T)n(yp)r(e)27 +b(of)h(an)f("in)n(t32_t")f(ob)5 b(ject)27 b(lo)r(cated)g(in)h(\035ash)f +(R)n(OM.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 266 282 +TeXDict begin 266 281 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(266)p 515 236 2865 4 v 515 523 a(22.18.3.4)92 b(prog_in)m(t64_t) +515 670 y Fq(T)n(yp)r(e)27 b(of)h(an)f("in)n(t64_t")f(ob)5 +b(ject)27 b(lo)r(cated)g(in)h(\035ash)f(R)n(OM.)506 885 +y Fs(Note:)676 1035 y Fq(This)h(t)n(yp)r(e)f(is)h(not)f(a)n(v)-5 +b(ailable)27 b(when)g(the)h(compiler)f(option)g(-min)n(t8)h(is)f(in)h +(e\033ect.)515 1381 y Fs(22.18.3.5)92 b(prog_in)m(t8_t)515 +1527 y Fq(T)n(yp)r(e)27 b(of)h(an)f("in)n(t8_t")f(ob)5 +b(ject)27 b(lo)r(cated)h(in)f(\035ash)h(R)n(OM.)515 1790 +y Fs(22.18.3.6)92 b(prog_uc)m(har)515 1937 y Fq(T)n(yp)r(e)27 +b(of)h(an)f("unsigned)g(c)n(har")f(ob)5 b(ject)27 b(lo)r(cated)g(in)h +(\035ash)f(R)n(OM.)515 2200 y Fs(22.18.3.7)92 b(prog_uin)m(t16_t)515 +2347 y Fq(T)n(yp)r(e)27 b(of)h(an)f("uin)n(t16_t")f(ob)5 +b(ject)27 b(lo)r(cated)g(in)h(\035ash)f(R)n(OM.)515 2610 +y Fs(22.18.3.8)92 b(prog_uin)m(t32_t)515 2757 y Fq(T)n(yp)r(e)27 +b(of)h(an)f("uin)n(t32_t")f(ob)5 b(ject)27 b(lo)r(cated)g(in)h(\035ash) +f(R)n(OM.)515 3020 y Fs(22.18.3.9)92 b(prog_uin)m(t64_t)515 +3167 y Fq(T)n(yp)r(e)27 b(of)h(an)f("uin)n(t64_t")f(ob)5 +b(ject)27 b(lo)r(cated)g(in)h(\035ash)f(R)n(OM.)506 3382 +y Fs(Note:)676 3532 y Fq(This)h(t)n(yp)r(e)f(is)h(not)f(a)n(v)-5 +b(ailable)27 b(when)g(the)h(compiler)f(option)g(-min)n(t8)h(is)f(in)h +(e\033ect.)515 3878 y Fs(22.18.3.10)92 b(prog_uin)m(t8_t)515 +4025 y Fq(T)n(yp)r(e)27 b(of)h(an)f("uin)n(t8_t")f(ob)5 +b(ject)28 b(lo)r(cated)f(in)h(\035ash)f(R)n(OM.)515 4288 +y Fs(22.18.3.11)92 b(prog_v)m(oid)515 4434 y Fq(T)n(yp)r(e)31 +b(of)g(a)g("v)n(oid")f(ob)5 b(ject)31 b(lo)r(cated)f(in)i(\035ash)f(R)n +(OM.)g(Do)r(es)g(not)g(mak)n(e)g(m)n(uc)n(h)g(sense)f(b)n(y)515 +4534 y(itself,)e(but)g(can)f(b)r(e)h(used)g(to)f(declare)g(a)g("v)n +(oid)f Fh(\003)p Fq(")h(ob)5 b(ject)27 b(in)h(\035ash)f(R)n(OM.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 267 283 +TeXDict begin 267 282 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(267)p 515 236 2865 4 v 515 523 a(22.18.4)93 b(F)-8 +b(unction)32 b(Do)s(cumen)m(tation)515 724 y(22.18.4.1)92 +b(PGM_V)m(OID_P)30 b(memc)m(hr_P)g(\(PGM_V)m(OID_P)g +Fc(s)p Fs(,)60 b(in)m(t)29 b Fc(val)p Fs(,)515 823 y(size_t)i +Fc(len)p Fs(\))515 970 y Fq(Scan)c(\035ash)g(memory)g(for)g(a)g(c)n +(haracter.)515 1117 y(The)c Fs(memc)m(hr_P\(\))h Fq(\(p.)14 +b(267\))23 b(function)h(scans)f(the)g(\034rst)h Fm(len)e +Fq(b)n(ytes)h(of)g(the)h(\035ash)f(mem-)515 1217 y(ory)33 +b(area)g(p)r(oin)n(ted)i(to)f(b)n(y)g Fm(s)h Fq(for)f(the)h(c)n +(haracter)d Fm(val)p Fq(.)56 b(The)35 b(\034rst)f(b)n(yte)h(to)f(matc)n +(h)g Fm(val)515 1316 y Fq(\(in)n(terpreted)27 b(as)g(an)g(unsigned)h(c) +n(haracter\))d(stops)i(the)h(op)r(eration.)506 1530 y +Fs(Returns:)676 1679 y Fq(The)20 b Fs(memc)m(hr_P\(\))h +Fq(\(p.)14 b(267\))20 b(function)g(returns)g(a)f(p)r(oin)n(ter)h(to)g +(the)h(matc)n(hing)e(b)n(yte)676 1779 y(or)27 b Fm(NULL)f +Fq(if)i(the)g(c)n(haracter)d(do)r(es)i(not)h(o)r(ccur)f(in)h(the)g(giv) +n(en)e(memory)h(area.)515 2121 y Fs(22.18.4.2)92 b(in)m(t)46 +b(memcmp_P)f(\(const)h(v)m(oid)f Fh(\003)h Fc(s1)p Fs(,)98 +b(PGM_V)m(OID_P)47 b Fc(s2)p Fs(,)515 2221 y(size_t)31 +b Fc(len)p Fs(\))515 2367 y Fq(Compare)26 b(memory)h(areas.)515 +2514 y(The)c Fs(memcmp_P\(\))g Fq(\(p.)14 b(267\))23 +b(function)h(compares)e(the)h(\034rst)h Fm(len)e Fq(b)n(ytes)h(of)g +(the)h(mem-)515 2614 y(ory)30 b(areas)g Fm(s1)h Fq(and)h(\035ash)f +Fm(s2)p Fq(.)48 b(The)32 b(comparision)e(is)h(p)r(erformed)h(using)f +(unsigned)g(c)n(har)515 2714 y(op)r(erations.)506 2922 +y Fs(Returns:)676 3072 y Fq(The)i Fs(memcmp_P\(\))g Fq(\(p.)14 +b(267\))32 b(function)i(returns)e(an)h(in)n(teger)f(less)g(than,)j +(equal)676 3171 y(to,)26 b(or)e(greater)g(than)h(zero)g(if)h(the)f +(\034rst)h Fm(len)e Fq(b)n(ytes)h(of)g Fm(s1)g Fq(is)g(found,)h(resp)r +(ectiv)n(ely)-7 b(,)25 b(to)676 3271 y(b)r(e)j(less)f(than,)h(to)f +(matc)n(h,)h(or)e(b)r(e)i(greater)e(than)i(the)g(\034rst)f +Fm(len)f Fq(b)n(ytes)i(of)f Fm(s2)p Fq(.)515 3613 y Fs(22.18.4.3)92 +b(v)m(oid)50 b Fh(\003)g Fs(memcp)m(y_P)h(\(v)m(oid)g +Fh(\003)e Fc(dest)p Fs(,)111 b(PGM_V)m(OID_P)51 b Fc(sr)-5 +b(c)p Fs(,)515 3713 y(size_t)31 b Fc(n)p Fs(\))515 3860 +y Fq(The)f Fs(memcp)m(y_P\(\))g Fq(\(p.)14 b(267\))29 +b(function)h(is)g(similar)f(to)h Fs(memcp)m(y\(\))g Fq(\(p.)14 +b(203\),)29 b(except)515 3960 y(the)f(src)e(string)h(resides)g(in)h +(program)d(space.)506 4168 y Fs(Returns:)676 4318 y Fq(The)j +Fs(memcp)m(y_P\(\))g Fq(\(p.)14 b(267\))27 b(function)h(returns)f(a)g +(p)r(oin)n(ter)g(to)h(dest.)515 4660 y Fs(22.18.4.4)92 +b(v)m(oid)23 b Fh(\003)f Fs(memmem_P)f(\(const)h(v)m(oid)h +Fh(\003)f Fc(s1)p Fs(,)49 b(size_t)23 b Fc(len1)p Fs(,)48 +b(PGM_-)515 4760 y(V)m(OID_P)33 b Fc(s2)p Fs(,)63 b(size_t)32 +b Fc(len2)p Fs(\))515 4907 y Fq(The)19 b Fs(memmem_P\(\))f +Fq(\(p.)c(267\))k(function)h(is)g(similar)g(to)g Fs(memmem\(\))e +Fq(\(p.)d(204\))k(except)515 5006 y(that)28 b Fm(s2)e +Fq(is)i(p)r(oin)n(ter)f(to)g(a)h(string)e(in)i(program)e(space.)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 268 284 +TeXDict begin 268 283 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(268)p 515 236 2865 4 v 515 523 a(22.18.4.5)92 b(PGM_V)m(OID_P)41 +b(memrc)m(hr_P)e(\(PGM_V)m(OID_P)i Fc(sr)-5 b(c)p Fs(,)82 +b(in)m(t)515 623 y Fc(val)p Fs(,)63 b(size_t)31 b Fc(len)p +Fs(\))515 770 y Fq(The)e Fs(memrc)m(hr_P\(\))i Fq(\(p.)14 +b(268\))28 b(function)i(is)f(lik)n(e)g(the)h Fs(memc)m(hr_P\(\))g +Fq(\(p.)14 b(267\))29 b(func-)515 869 y(tion,)i(except)g(that)g(it)g +(searc)n(hes)d(bac)n(kw)n(ards)h(from)h(the)h(end)g(of)f(the)h +Fm(len)f Fq(b)n(ytes)g(p)r(oin)n(ted)515 969 y(to)d(b)n(y)g +Fm(src)g Fq(instead)g(of)h(forw)n(ards)d(from)i(the)h(fron)n(t.)37 +b(\(Glib)r(c,)28 b(GNU)h(extension.\))506 1185 y Fs(Returns:)676 +1335 y Fq(The)36 b Fs(memrc)m(hr_P\(\))g Fq(\(p.)14 b(268\))35 +b(function)h(returns)e(a)i(p)r(oin)n(ter)f(to)g(the)h(matc)n(hing)676 +1434 y(b)n(yte)28 b(or)e Fm(NULL)g Fq(if)i(the)g(c)n(haracter)e(do)r +(es)h(not)g(o)r(ccur)g(in)h(the)g(giv)n(en)f(memory)g(area.)515 +1781 y Fs(22.18.4.6)92 b(in)m(t)32 b(strcasecmp_P)h(\(const)e(c)m(har)j +Fh(\003)d Fc(s1)p Fs(,)64 b(PGM_P)32 b Fc(s2)p Fs(\))515 +1927 y Fq(Compare)26 b(t)n(w)n(o)h(strings)f(ignoring)g(case.)515 +2074 y(The)32 b Fs(strcasecmp_P\(\))i Fq(\(p.)14 b(268\))31 +b(function)i(compares)e(the)i(t)n(w)n(o)e(strings)h Fm(s1)g +Fq(and)g Fm(s2)p Fq(,)515 2174 y(ignoring)26 b(the)i(case)e(of)i(the)g +(c)n(haracters.)506 2386 y Fs(P)m(arameters:)676 2535 +y Fc(s1)42 b Fq(A)28 b(p)r(oin)n(ter)f(to)h(a)f(string)g(in)g(the)h +(devices)f(SRAM.)676 2668 y Fc(s2)42 b Fq(A)28 b(p)r(oin)n(ter)f(to)h +(a)f(string)g(in)g(the)h(devices)f(Flash.)506 2880 y +Fs(Returns:)676 3030 y Fq(The)d Fs(strcasecmp_P\(\))h +Fq(\(p.)14 b(268\))24 b(function)g(returns)f(an)h(in)n(teger)f(less)h +(than,)h(equal)676 3129 y(to,)42 b(or)c(greater)f(than)i(zero)e(if)j +Fm(s1)e Fq(is)g(found,)k(resp)r(ectiv)n(ely)-7 b(,)41 +b(to)e(b)r(e)g(less)f(than,)k(to)676 3229 y(matc)n(h,)i(or)c(b)r(e)i +(greater)d(than)i Fm(s2)p Fq(.)76 b(A)41 b(consequence)f(of)h(the)g +(ordering)e(used)i(b)n(y)676 3328 y Fs(strcasecmp_P\(\))33 +b Fq(\(p.)14 b(268\))32 b(is)g(that)g(if)g Fm(s1)g Fq(is)g(an)f +(initial)i(substring)e(of)h Fm(s2)p Fq(,)h(then)676 3428 +y Fm(s1)27 b Fq(is)g(considered)g(to)g(b)r(e)h("less)f(than")g +Fm(s2)p Fq(.)515 3774 y Fs(22.18.4.7)92 b(c)m(har)33 +b Fh(\003)f Fs(strcasestr_P)g(\(const)g(c)m(har)i Fh(\003)d +Fc(s1)p Fs(,)64 b(PGM_P)32 b Fc(s2)p Fs(\))515 3921 y +Fq(This)g(fun)n(tion)h(is)f(similar)g(to)g Fs(strcasestr\(\))h +Fq(\(p.)14 b(205\))32 b(except)g(that)h Fm(s2)f Fq(is)g(p)r(oin)n(ter)g +(to)g(a)515 4021 y(string)27 b(in)g(program)f(space.)515 +4284 y Fs(22.18.4.8)92 b(c)m(har)33 b Fh(\003)f Fs(strcat_P)h(\(c)m +(har)h Fh(\003)d Fc(dest)p Fs(,)64 b(PGM_P)32 b Fc(sr)-5 +b(c)p Fs(\))515 4431 y Fq(The)35 b Fs(strcat_P\(\))i +Fq(\(p.)14 b(268\))34 b(function)i(is)f(similar)f(to)h +Fs(strcat\(\))h Fq(\(p.)14 b(205\))35 b(except)g(that)515 +4530 y(the)28 b Fl(sr)l(c)k Fq(string)27 b(m)n(ust)g(b)r(e)h(lo)r +(cated)g(in)f(program)f(space)h(\(\035ash\).)506 4747 +y Fs(Returns:)676 4896 y Fq(The)21 b Fs(strcat\(\))i +Fq(\(p.)14 b(205\))20 b(function)h(returns)g(a)f(p)r(oin)n(ter)h(to)g +(the)g(resulting)g(string)f Fl(dest)8 b Fq(.)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 269 285 +TeXDict begin 269 284 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(269)p 515 236 2865 4 v 515 523 a(22.18.4.9)92 b(PGM_P)32 +b(strc)m(hr_P)i(\(PGM_P)e Fc(s)p Fs(,)64 b(in)m(t)32 +b Fc(val)p Fs(\))515 670 y Fq(Lo)r(cate)27 b(c)n(haracter)e(in)j +(program)d(space)i(string.)515 817 y(The)22 b Fs(strc)m(hr_P\(\))i +Fq(\(p.)14 b(269\))21 b(function)i(lo)r(cates)e(the)i(\034rst)f(o)r +(ccurrence)e(of)i Fm(val)f Fq(\(con)n(v)n(erted)515 916 +y(to)k(a)h(c)n(har\))e(in)i(the)h(string)e(p)r(oin)n(ted)g(to)h(b)n(y)f +Fm(s)h Fq(in)g(program)d(space.)36 b(The)26 b(terminating)f(n)n(ull)515 +1016 y(c)n(haracter)g(is)j(considered)e(to)i(b)r(e)g(part)f(of)g(the)h +(string.)515 1163 y(The)f Fs(strc)m(hr_P\(\))h Fq(\(p.)14 +b(269\))26 b(function)i(is)e(similar)h(to)f Fs(strc)m(hr\(\))j +Fq(\(p.)14 b(206\))26 b(except)g(that)h Fm(s)515 1263 +y Fq(is)g(p)r(oin)n(ter)g(to)h(a)f(string)g(in)h(program)d(space.)506 +1475 y Fs(Returns:)676 1624 y Fq(The)k Fs(strc)m(hr_P\(\))j +Fq(\(p.)14 b(269\))28 b(function)i(returns)e(a)h(p)r(oin)n(ter)g(to)g +(the)h(matc)n(hed)f(c)n(har-)676 1724 y(acter)e(or)g +Fm(NULL)f Fq(if)i(the)g(c)n(haracter)d(is)i(not)h(found.)515 +2070 y Fs(22.18.4.10)92 b(PGM_P)32 b(strc)m(hrn)m(ul_P)h(\(PGM_P)g +Fc(s)p Fs(,)63 b(in)m(t)32 b Fc(c)p Fs(\))515 2217 y +Fq(The)d Fs(strc)m(hrn)m(ul_P\(\))i Fq(\(p.)14 b(269\))29 +b(function)h(is)f(lik)n(e)g Fs(strc)m(hr_P\(\))i Fq(\(p.)14 +b(269\))29 b(except)g(that)515 2316 y(if)e Fm(c)g Fq(is)g(not)h(found)f +(in)h Fm(s)p Fq(,)f(then)g(it)h(returns)e(a)h(p)r(oin)n(ter)g(to)g(the) +h(n)n(ull)f(b)n(yte)g(at)g(the)h(end)f(of)g Fm(s)p Fq(,)515 +2416 y(rather)f(than)i Fm(NULL)p Fq(.)e(\(Glib)r(c,)i(GNU)h +(extension.\))506 2632 y Fs(Returns:)676 2782 y Fq(The)38 +b Fs(strc)m(hrn)m(ul_P\(\))j Fq(\(p.)14 b(269\))37 b(function)i +(returns)f(a)g(p)r(oin)n(ter)f(to)i(the)f(matc)n(hed)676 +2881 y(c)n(haracter,)29 b(or)g(a)g(p)r(oin)n(ter)g(to)h(the)h(n)n(ull)f +(b)n(yte)f(at)h(the)g(end)g(of)g Fm(s)g Fq(\(i.e.,)h +Fm(s+strlen)p Fq(\(s\)\))676 2981 y(if)d(the)g(c)n(haracter)e(is)h(not) +h(found.)515 3327 y Fs(22.18.4.11)92 b(in)m(t)32 b(strcmp_P)g(\(const)g +(c)m(har)h Fh(\003)f Fc(s1)p Fs(,)63 b(PGM_P)32 b Fc(s2)p +Fs(\))515 3474 y Fq(The)25 b Fs(strcmp_P\(\))h Fq(\(p.)14 +b(269\))25 b(function)h(is)f(similar)f(to)h Fs(strcmp\(\))h +Fq(\(p.)14 b(206\))25 b(except)g(that)515 3574 y Fm(s2)i +Fq(is)g(p)r(oin)n(ter)g(to)h(a)f(string)g(in)g(program)f(space.)506 +3786 y Fs(Returns:)676 3935 y Fq(The)j Fs(strcmp_P\(\))h +Fq(\(p.)14 b(269\))28 b(function)i(returns)e(an)h(in)n(teger)f(less)g +(than,)i(equal)e(to,)676 4035 y(or)21 b(greater)f(than)i(zero)e(if)j +Fm(s1)e Fq(is)g(found,)j(resp)r(ectiv)n(ely)-7 b(,)22 +b(to)f(b)r(e)h(less)g(than,)h(to)e(matc)n(h,)i(or)676 +4134 y(b)r(e)31 b(greater)d(than)j Fm(s2)p Fq(.)44 b(A)30 +b(consequence)f(of)i(the)f(ordering)f(used)h(b)n(y)h +Fs(strcmp_P\(\))676 4234 y Fq(\(p.)14 b(269\))30 b(is)h(that)g(if)g +Fm(s1)f Fq(is)h(an)g(initial)g(substring)f(of)g Fm(s2)p +Fq(,)h(then)h Fm(s1)e Fq(is)g(considered)g(to)676 4334 +y(b)r(e)e("less)f(than")g Fm(s2)p Fq(.)515 4680 y Fs(22.18.4.12)92 +b(c)m(har)33 b Fh(\003)e Fs(strcp)m(y_P)j(\(c)m(har)f +Fh(\003)f Fc(dest)p Fs(,)64 b(PGM_P)32 b Fc(sr)-5 b(c)p +Fs(\))515 4826 y Fq(The)31 b Fs(strcp)m(y_P\(\))j Fq(\(p.)14 +b(269\))31 b(function)h(is)g(similar)f(to)g Fs(strcp)m(y\(\))i +Fq(\(p.)14 b(207\))31 b(except)h(that)515 4926 y(src)27 +b(is)g(a)g(p)r(oin)n(ter)g(to)h(a)f(string)g(in)h(program)d(space.)p +515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 270 286 +TeXDict begin 270 285 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(270)p 515 236 2865 4 v 506 497 a(Returns:)676 647 +y Fq(The)41 b Fs(strcp)m(y_P\(\))i Fq(\(p.)14 b(269\))40 +b(function)i(returns)e(a)h(p)r(oin)n(ter)f(to)h(the)g(destination)676 +746 y(string)27 b(dest.)515 1092 y Fs(22.18.4.13)92 b(size_t)31 +b(strcspn_P)i(\(const)f(c)m(har)h Fh(\003)e Fc(s)p Fs(,)64 +b(PGM_P)32 b Fc(r)-5 b(eje)g(ct)p Fs(\))515 1239 y Fq(The)26 +b Fs(strcspn_P\(\))g Fq(\(p.)14 b(270\))25 b(function)h(calculates)f +(the)h(length)g(of)g(the)g(initial)g(segmen)n(t)515 1339 +y(of)e Fm(s)f Fq(whic)n(h)h(consists)g(en)n(tirely)f(of)h(c)n +(haracters)e(not)i(in)g Fm(reject)p Fq(.)33 b(This)24 +b(function)h(is)f(similar)515 1439 y(to)34 b Fs(strcspn\(\))g +Fq(\(p.)14 b(207\))34 b(except)g(that)g Fm(reject)e Fq(is)i(a)f(p)r +(oin)n(ter)h(to)g(a)f(string)h(in)g(program)515 1538 +y(space.)506 1750 y Fs(Returns:)676 1900 y Fq(The)21 +b Fs(strcspn_P\(\))h Fq(\(p.)14 b(270\))20 b(function)h(returns)f(the)h +(n)n(um)n(b)r(er)g(of)f(c)n(haracters)f(in)i(the)676 +1999 y(initial)32 b(segmen)n(t)g(of)f Fm(s)h Fq(whic)n(h)g(are)f(not)h +(in)g(the)g(string)f Fm(reject)p Fq(.)48 b(The)32 b(terminating)676 +2099 y(zero)27 b(is)g(not)h(considered)e(as)h(a)g(part)g(of)h(string.) +515 2445 y Fs(22.18.4.14)92 b(size_t)31 b(strlcat_P)i(\(c)m(har)h +Fh(\003)d Fc(dst)p Fs(,)64 b(PGM_P)-8 b(,)63 b(size_t)32 +b Fc(siz)p Fs(\))515 2592 y Fq(Concatenate)26 b(t)n(w)n(o)h(strings.) +515 2739 y(The)g Fs(strlcat_P\(\))i Fq(\(p.)14 b(270\))27 +b(function)h(is)f(similar)g(to)g Fs(strlcat\(\))i Fq(\(p.)14 +b(208\),)26 b(except)i(that)515 2838 y(the)g Fl(sr)l(c)k +Fq(string)27 b(m)n(ust)g(b)r(e)h(lo)r(cated)g(in)f(program)f(space)h +(\(\035ash\).)515 2985 y(App)r(ends)c(src)f(to)g(string)g(dst)g(of)h +(size)f(siz)g(\(unlik)n(e)g Fs(strncat\(\))i Fq(\(p.)14 +b(209\),)23 b(siz)f(is)h(the)f(full)h(size)515 3085 y(of)30 +b(dst,)h(not)f(space)g(left\).)46 b(A)n(t)30 b(most)g(siz-1)f(c)n +(haracters)f(will)j(b)r(e)f(copied.)45 b(Alw)n(a)n(ys)29 +b(NULL)515 3184 y(terminates)e(\(unless)g(siz)h Fo(<)p +Fq(=)f(strlen\(dst\)\).)506 3401 y Fs(Returns:)676 3550 +y Fq(The)71 b Fs(strlcat_P\(\))i Fq(\(p.)14 b(270\))71 +b(function)g(returns)g(strlen\(src\))g(+)g(MIN\(siz,)676 +3650 y(strlen\(initial)28 b(dst\)\).)37 b(If)28 b(retv)-5 +b(al)28 b Fo(>)p Fq(=)e(siz,)i(truncation)f(o)r(ccurred.)515 +3996 y Fs(22.18.4.15)92 b(size_t)31 b(strlcp)m(y_P)i(\(c)m(har)h +Fh(\003)d Fc(dst)p Fs(,)64 b(PGM_P)-8 b(,)63 b(size_t)32 +b Fc(siz)p Fs(\))515 4143 y Fq(Cop)n(y)26 b(a)i(string)e(from)i +(progmem)e(to)i(RAM.)515 4290 y(Cop)n(y)20 b(src)g(to)h(string)f(dst)i +(of)f(size)f(siz.)35 b(A)n(t)21 b(most)g(siz-1)f(c)n(haracters)e(will)k +(b)r(e)f(copied.)34 b(Alw)n(a)n(ys)515 4389 y(NULL)28 +b(terminates)f(\(unless)g(siz)h(==)e(0\).)506 4606 y +Fs(Returns:)676 4756 y Fq(The)35 b Fs(strlcp)m(y_P\(\))h +Fq(\(p.)14 b(270\))34 b(function)h(returns)e(strlen\(src\).)57 +b(If)35 b(retv)-5 b(al)34 b Fo(>)p Fq(=)g(siz,)676 4855 +y(truncation)27 b(o)r(ccurred.)p 515 5179 V 515 5255 +a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 271 287 +TeXDict begin 271 286 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(271)p 515 236 2865 4 v 515 523 a(22.18.4.16)92 +b(size_t)31 b(strlen_P)h(\(PGM_P)g Fc(sr)-5 b(c)p Fs(\))515 +670 y Fq(The)33 b Fs(strlen_P\(\))g Fq(\(p.)14 b(271\))33 +b(function)g(is)h(similar)e(to)h Fs(strlen\(\))g Fq(\(p.)14 +b(208\),)34 b(except)f(that)515 770 y(src)27 b(is)g(a)g(p)r(oin)n(ter)g +(to)h(a)f(string)g(in)h(program)d(space.)506 982 y Fs(Returns:)676 +1131 y Fq(The)j Fs(strlen\(\))f Fq(\(p.)14 b(208\))27 +b(function)h(returns)f(the)h(n)n(um)n(b)r(er)f(of)g(c)n(haracters)f(in) +h(src.)515 1477 y Fs(22.18.4.17)92 b(in)m(t)24 b(strncasecmp_P)h +(\(const)g(c)m(har)h Fh(\003)e Fc(s1)p Fs(,)52 b(PGM_P)24 +b Fc(s2)p Fs(,)52 b(size_t)515 1577 y Fc(n)p Fs(\))515 +1724 y Fq(Compare)26 b(t)n(w)n(o)h(strings)f(ignoring)g(case.)515 +1870 y(The)54 b Fs(strncasecmp_P\(\))h Fq(\(p.)14 b(271\))53 +b(function)h(is)g(similar)f(to)h Fs(strcasecmp_P\(\))515 +1970 y Fq(\(p.)14 b(268\),)27 b(except)g(it)h(only)f(compares)f(the)i +(\034rst)f Fm(n)h Fq(c)n(haracters)d(of)i Fm(s1)p Fq(.)506 +2187 y Fs(P)m(arameters:)676 2336 y Fc(s1)42 b Fq(A)28 +b(p)r(oin)n(ter)f(to)h(a)f(string)g(in)g(the)h(devices)f(SRAM.)676 +2469 y Fc(s2)42 b Fq(A)28 b(p)r(oin)n(ter)f(to)h(a)f(string)g(in)g(the) +h(devices)f(Flash.)676 2602 y Fc(n)42 b Fq(The)27 b(maxim)n(um)h(n)n +(um)n(b)r(er)f(of)g(b)n(ytes)h(to)f(compare.)506 2814 +y Fs(Returns:)676 2963 y Fq(The)45 b Fs(strncasecmp_P\(\))g +Fq(\(p.)14 b(271\))44 b(function)h(returns)e(an)i(in)n(teger)e(less)h +(than,)676 3063 y(equal)30 b(to,)i(or)e(greater)f(than)i(zero)f(if)h +Fm(s1)f Fq(\(or)g(the)h(\034rst)g Fm(n)f Fq(b)n(ytes)h(thereof)6 +b(\))31 b(is)g(found,)676 3162 y(resp)r(ectiv)n(ely)-7 +b(,)37 b(to)e(b)r(e)h(less)f(than,)j(to)d(matc)n(h,)j(or)c(b)r(e)i +(greater)e(than)h Fm(s2)p Fq(.)60 b(A)36 b(conse-)676 +3262 y(quence)27 b(of)g(the)g(ordering)f(used)h(b)n(y)h +Fs(strncasecmp_P\(\))g Fq(\(p.)14 b(271\))26 b(is)h(that)g(if)h +Fm(s1)e Fq(is)676 3362 y(an)h(initial)h(substring)f(of)h +Fm(s2)p Fq(,)e(then)i Fm(s1)f Fq(is)h(considered)e(to)i(b)r(e)g("less)e +(than")h Fm(s2)p Fq(.)515 3708 y Fs(22.18.4.18)92 b(c)m(har)30 +b Fh(\003)d Fs(strncat_P)j(\(c)m(har)g Fh(\003)e Fc(dest)p +Fs(,)58 b(PGM_P)28 b Fc(sr)-5 b(c)p Fs(,)58 b(size_t)28 +b Fc(len)p Fs(\))515 3954 y Fq(Concatenate)e(t)n(w)n(o)h(strings.)515 +4101 y(The)22 b Fs(strncat_P\(\))i Fq(\(p.)14 b(271\))21 +b(function)i(is)f(similar)f(to)h Fs(strncat\(\))h Fq(\(p.)14 +b(209\),)23 b(except)f(that)515 4201 y(the)28 b Fl(sr)l(c)k +Fq(string)27 b(m)n(ust)g(b)r(e)h(lo)r(cated)g(in)f(program)f(space)h +(\(\035ash\).)506 4417 y Fs(Returns:)676 4567 y Fq(The)21 +b Fs(strncat_P\(\))i Fq(\(p.)14 b(271\))21 b(function)h(returns)e(a)h +(p)r(oin)n(ter)g(to)g(the)g(resulting)g(string)676 4666 +y(dest.)p 515 5179 V 515 5255 a Fp(Generated)k(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 272 288 +TeXDict begin 272 287 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(272)p 515 236 2865 4 v 515 523 a(22.18.4.19)92 +b(in)m(t)30 b(strncmp_P)g(\(const)g(c)m(har)h Fh(\003)e +Fc(s1)p Fs(,)61 b(PGM_P)30 b Fc(s2)p Fs(,)60 b(size_t)30 +b Fc(n)p Fs(\))515 770 y Fq(The)23 b Fs(strncmp_P\(\))i +Fq(\(p.)14 b(272\))23 b(function)h(is)f(similar)g(to)h +Fs(strcmp_P\(\))g Fq(\(p.)14 b(269\))23 b(except)515 +869 y(it)28 b(only)f(compares)f(the)i(\034rst)f(\(at)h(most\))f(n)h(c)n +(haracters)d(of)j(s1)f(and)g(s2.)506 1086 y Fs(Returns:)676 +1235 y Fq(The)d Fs(strncmp_P\(\))g Fq(\(p.)14 b(272\))23 +b(function)h(returns)f(an)h(in)n(teger)e(less)h(than,)i(equal)e(to,)676 +1335 y(or)f(greater)f(than)i(zero)f(if)h(s1)f(\(or)h(the)g(\034rst)f(n) +h(b)n(ytes)g(thereof)6 b(\))23 b(is)g(found,)h(resp)r(ectiv)n(ely)-7 +b(,)676 1434 y(to)28 b(b)r(e)g(less)f(than,)g(to)h(matc)n(h,)f(or)g(b)r +(e)h(greater)e(than)h(s2.)515 1781 y Fs(22.18.4.20)92 +b(c)m(har)34 b Fh(\003)f Fs(strncp)m(y_P)i(\(c)m(har)g +Fh(\003)d Fc(dest)p Fs(,)67 b(PGM_P)34 b Fc(sr)-5 b(c)p +Fs(,)66 b(size_t)33 b Fc(n)p Fs(\))515 2027 y Fq(The)d +Fs(strncp)m(y_P\(\))j Fq(\(p.)14 b(272\))30 b(function)h(is)g(similar)f +(to)g Fs(strcp)m(y_P\(\))j Fq(\(p.)14 b(269\))30 b(except)515 +2127 y(that)36 b(not)g(more)f(than)g(n)h(b)n(ytes)g(of)g(src)f(are)f +(copied.)62 b(Th)n(us,)37 b(if)g(there)e(is)h(no)f(n)n(ull)h(b)n(yte) +515 2226 y(among)26 b(the)i(\034rst)f(n)h(b)n(ytes)f(of)h(src,)f(the)h +(result)f(will)h(not)f(b)r(e)h(n)n(ull-terminated.)515 +2373 y(In)g(the)g(case)e(where)i(the)g(length)f(of)h(src)f(is)g(less)h +(than)f(that)h(of)g(n,)g(the)g(remainder)e(of)i(dest)515 +2473 y(will)g(b)r(e)f(padded)h(with)g(n)n(ulls.)506 2685 +y Fs(Returns:)676 2834 y Fq(The)35 b Fs(strncp)m(y_P\(\))i +Fq(\(p.)14 b(272\))35 b(function)g(returns)g(a)f(p)r(oin)n(ter)h(to)g +(the)g(destination)676 2934 y(string)27 b(dest.)515 3280 +y Fs(22.18.4.21)92 b(size_t)31 b(strnlen_P)h(\(PGM_P)g +Fc(sr)-5 b(c)p Fs(,)64 b(size_t)31 b Fc(len)p Fs(\))515 +3427 y Fq(Determine)d(the)g(length)f(of)h(a)f(\034xed-size)g(string.) +515 3574 y(The)22 b Fs(strnlen_P\(\))h Fq(\(p.)14 b(272\))22 +b(function)h(is)g(similar)f(to)g Fs(strnlen\(\))g Fq(\(p.)14 +b(210\),)23 b(except)g(that)515 3673 y Fm(src)j Fq(is)i(a)f(p)r(oin)n +(ter)g(to)g(a)h(string)e(in)i(program)e(space.)506 3885 +y Fs(Returns:)676 4035 y Fq(The)31 b(strnlen_P)g(function)g(returns)f +(strlen_P\(src\),)i(if)f(that)g(is)g(less)f(than)h Fm(len)p +Fq(,)g(or)676 4134 y Fm(len)e Fq(if)h(there)g(is)f(no)h(')p +Fh(n)p Fq(0')f(c)n(haracter)f(among)g(the)j(\034rst)e +Fm(len)g Fq(c)n(haracters)e(p)r(oin)n(ted)j(to)676 4234 +y(b)n(y)d Fm(src)p Fq(.)515 4580 y Fs(22.18.4.22)92 b(c)m(har)33 +b Fh(\003)e Fs(strpbrk_P)j(\(const)d(c)m(har)j Fh(\003)d +Fc(s)p Fs(,)64 b(PGM_P)32 b Fc(ac)-5 b(c)g(ept)p Fs(\))515 +4727 y Fq(The)27 b Fs(strpbrk_P\(\))i Fq(\(p.)14 b(272\))26 +b(function)i(lo)r(cates)e(the)i(\034rst)f(o)r(ccurrence)f(in)h(the)h +(string)e Fm(s)515 4826 y Fq(of)k(an)n(y)g(of)g(the)h(c)n(haracters)d +(in)i(the)h(\035ash)f(string)g Fm(accept)p Fq(.)42 b(This)31 +b(function)f(is)h(similar)e(to)515 4926 y Fs(strpbrk\(\))23 +b Fq(\(p.)14 b(210\))22 b(except)g(that)h Fm(accept)c +Fq(is)k(a)e(p)r(oin)n(ter)h(to)h(a)e(string)h(in)h(program)d(space.)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 273 289 +TeXDict begin 273 288 bop 515 203 a Fs(22.18)94 b Fo(<)p +Fs(a)m(vr/pgmspace.h)p Fo(>)p Fs(:)41 b(Program)32 b(Space)g(Utilities) +542 b(273)p 515 236 2865 4 v 506 497 a(Returns:)676 647 +y Fq(The)25 b Fs(strpbrk_P\(\))h Fq(\(p.)14 b(272\))24 +b(function)h(returns)f(a)g(p)r(oin)n(ter)g(to)g(the)h(c)n(haracter)e +(in)h Fm(s)676 746 y Fq(that)j(matc)n(hes)g(one)f(of)h(the)g(c)n +(haracters)e(in)i Fm(accept)p Fq(,)d(or)i Fm(NULL)g Fq(if)h(no)g(suc)n +(h)f(c)n(haracter)676 846 y(is)i(found.)38 b(The)28 b(terminating)f +(zero)g(is)g(not)h(considered)f(as)g(a)g(part)h(of)g(string:)36 +b(if)28 b(one)676 946 y(or)f(b)r(oth)h(args)e(are)g(empt)n(y)-7 +b(,)28 b(the)g(result)f(will)h Fm(NULL)p Fq(.)515 1246 +y Fs(22.18.4.23)92 b(PGM_P)32 b(strrc)m(hr_P)i(\(PGM_P)e +Fc(s)p Fs(,)64 b(in)m(t)32 b Fc(val)p Fs(\))515 1393 +y Fq(Lo)r(cate)27 b(c)n(haracter)e(in)j(string.)515 1539 +y(The)h Fs(strrc)m(hr_P\(\))j Fq(\(p.)14 b(273\))28 b(function)i +(returns)e(a)h(p)r(oin)n(ter)g(to)g(the)g(last)g(o)r(ccurrence)f(of)515 +1639 y(the)g(c)n(haracter)d Fm(val)i Fq(in)g(the)h(\035ash)f(string)g +Fm(s)p Fq(.)506 1812 y Fs(Returns:)676 1961 y Fq(The)e +Fs(strrc)m(hr_P\(\))j Fq(\(p.)14 b(273\))25 b(function)g(returns)g(a)g +(p)r(oin)n(ter)g(to)g(the)h(matc)n(hed)f(c)n(har-)676 +2061 y(acter)i(or)g Fm(NULL)f Fq(if)i(the)g(c)n(haracter)d(is)i(not)h +(found.)515 2361 y Fs(22.18.4.24)92 b(c)m(har)33 b Fh(\003)e +Fs(strsep_P)h(\(c)m(har)i Fh(\003\003)d Fc(sp)p Fs(,)63 +b(PGM_P)32 b Fc(delim)p Fs(\))515 2508 y Fq(P)n(arse)26 +b(a)h(string)g(in)n(to)h(tok)n(ens.)515 2655 y(The)f +Fs(strsep_P\(\))h Fq(\(p.)14 b(273\))27 b(function)h(lo)r(cates,)f(in)h +(the)g(string)f(referenced)g(b)n(y)g Fh(\003)p Fm(sp)p +Fq(,)g(the)515 2754 y(\034rst)34 b(o)r(ccurrence)g(of)g(an)n(y)g(c)n +(haracter)f(in)i(the)g(string)f Fm(delim)f Fq(\(or)h(the)i(terminating) +e(')p Fh(n)p Fq(0')515 2854 y(c)n(haracter\))27 b(and)i(replaces)e(it)j +(with)f(a)g(')p Fh(n)p Fq(0'.)41 b(The)29 b(lo)r(cation)f(of)h(the)g +(next)h(c)n(haracter)c(after)515 2954 y(the)i(delimiter)f(c)n(haracter) +f(\(or)h Fm(NULL)p Fq(,)f(if)i(the)g(end)g(of)f(the)h(string)f(w)n(as)g +(reac)n(hed\))f(is)i(stored)515 3053 y(in)h Fh(\003)p +Fm(sp)p Fq(.)38 b(An)29 b(\020empt)n(y\021)35 b(\034eld,)29 +b(i.e.)40 b(one)28 b(caused)g(b)n(y)g(t)n(w)n(o)g(adjacen)n(t)g +(delimiter)g(c)n(haracters,)515 3153 y(can)i(b)r(e)i(detected)f(b)n(y)g +(comparing)f(the)h(lo)r(cation)g(referenced)f(b)n(y)h(the)g(p)r(oin)n +(ter)g(returned)515 3253 y(in)f Fh(\003)p Fm(sp)f Fq(to)h(')p +Fh(n)p Fq(0'.)44 b(This)31 b(function)f(is)g(similar)g(to)g +Fs(strsep\(\))g Fq(\(p.)14 b(211\))29 b(except)i(that)f +Fm(delim)515 3352 y Fq(is)d(a)g(p)r(oin)n(ter)g(to)h(a)f(string)g(in)h +(program)d(space.)506 3525 y Fs(Returns:)676 3674 y Fq(The)32 +b Fs(strsep_P\(\))h Fq(\(p.)14 b(273\))31 b(function)h(returns)f(a)h(p) +r(oin)n(ter)g(to)f(the)i(original)d(v)-5 b(alue)676 3774 +y(of)28 b Fh(\003)p Fm(sp)p Fq(.)35 b(If)28 b Fh(\003)p +Fm(sp)f Fq(is)g(initially)h Fm(NULL)p Fq(,)e Fs(strsep_P\(\))i +Fq(\(p.)14 b(273\))26 b(returns)h Fm(NULL)p Fq(.)515 +4074 y Fs(22.18.4.25)92 b(size_t)31 b(strspn_P)h(\(const)g(c)m(har)i +Fh(\003)d Fc(s)p Fs(,)64 b(PGM_P)32 b Fc(ac)-5 b(c)g(ept)p +Fs(\))515 4221 y Fq(The)30 b Fs(strspn_P\(\))g Fq(\(p.)14 +b(273\))29 b(function)i(calculates)e(the)h(length)g(of)g(the)h(initial) +f(segmen)n(t)515 4321 y(of)d Fm(s)h Fq(whic)n(h)g(consists)e(en)n +(tirely)i(of)f(c)n(haracters)f(in)i Fm(accept)p Fq(.)35 +b(This)27 b(function)i(is)e(similar)g(to)515 4420 y Fs(strspn\(\))f +Fq(\(p.)14 b(211\))26 b(except)g(that)g Fm(accept)e Fq(is)j(a)e(p)r +(oin)n(ter)h(to)h(a)e(string)h(in)h(program)d(space.)506 +4598 y Fs(Returns:)676 4747 y Fq(The)h Fs(strspn_P\(\))h +Fq(\(p.)14 b(273\))24 b(function)i(returns)e(the)h(n)n(um)n(b)r(er)g +(of)g(c)n(haracters)d(in)k(the)676 4847 y(initial)38 +b(segmen)n(t)f(of)h Fm(s)g Fq(whic)n(h)f(consist)h(only)f(of)h(c)n +(haracters)d(from)j Fm(accept)p Fq(.)65 b(The)676 4946 +y(terminating)27 b(zero)g(is)g(not)h(considered)e(as)h(a)g(part)g(of)h +(string.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 274 290 +TeXDict begin 274 289 bop 515 203 a Fs(22.19)94 b Fo(<)p +Fs(a)m(vr/p)s(o)m(w)m(er.h)p Fo(>)p Fs(:)41 b(P)m(o)m(w)m(er)33 +b(Reduction)e(Managemen)m(t)412 b(274)p 515 236 2865 +4 v 515 523 a(22.18.4.26)92 b(c)m(har)33 b Fh(\003)e +Fs(strstr_P)i(\(const)f(c)m(har)h Fh(\003)e Fc(s1)p Fs(,)64 +b(PGM_P)32 b Fc(s2)p Fs(\))515 670 y Fq(Lo)r(cate)27 +b(a)g(substring.)515 817 y(The)38 b Fs(strstr_P\(\))g +Fq(\(p.)14 b(274\))37 b(function)i(\034nds)f(the)g(\034rst)f(o)r +(ccurrence)g(of)h(the)g(substring)515 916 y Fm(s2)c Fq(in)g(the)h +(string)f Fm(s1)p Fq(.)57 b(The)35 b(terminating)f(')p +Fh(n)p Fq(0')g(c)n(haracters)e(are)i(not)g(compared.)57 +b(The)515 1016 y Fs(strstr_P\(\))35 b Fq(\(p.)14 b(274\))33 +b(function)i(is)f(similar)f(to)h Fs(strstr\(\))g Fq(\(p.)14 +b(212\))34 b(except)g(that)g Fm(s2)f Fq(is)515 1116 y(p)r(oin)n(ter)27 +b(to)g(a)g(string)g(in)h(program)e(space.)506 1328 y +Fs(Returns:)676 1477 y Fq(The)e Fs(strstr_P\(\))h Fq(\(p.)14 +b(274\))23 b(function)i(returns)e(a)h(p)r(oin)n(ter)f(to)h(the)h(b)r +(eginning)f(of)g(the)676 1577 y(substring,)h(or)f(NULL)i(if)f(the)h +(substring)e(is)h(not)g(found.)36 b(If)26 b Fm(s2)e Fq(p)r(oin)n(ts)h +(to)g(a)g(string)f(of)676 1676 y(zero)j(length,)g(the)h(function)g +(returns)f Fm(s1)p Fq(.)515 1956 y Fn(22.19)112 b Fd(<)p +Fn(a)m(vr/p)s(o)m(w)m(er.h)p Fd(>)p Fn(:)50 b(P)m(o)m(w)m(er)37 +b(Reduction)g(Managemen)m(t)550 2136 y Fj(#include)g()515 +2366 y Fq(Man)n(y)31 b(A)-9 b(VRs)32 b(con)n(tain)g(a)f(P)n(o)n(w)n(er) +g(Reduction)h(Register)f(\(PRR\))j(or)d(Registers)g(\(PRRx\))515 +2465 y(that)i(allo)n(w)f(y)n(ou)g(to)h(reduce)g(p)r(o)n(w)n(er)f +(consumption)g(b)n(y)h(disabling)g(or)f(enabling)g(v)-5 +b(arious)515 2565 y(on-b)r(oard)26 b(p)r(eripherals)g(as)h(needed.)515 +2712 y(There)37 b(are)g(man)n(y)g(macros)f(in)j(this)f(header)f(\034le) +h(that)g(pro)n(vide)f(an)g(easy)g(in)n(terface)g(to)515 +2811 y(enable)27 b(or)g(disable)g(on-b)r(oard)f(p)r(eripherals)g(to)i +(reduce)f(p)r(o)n(w)n(er.)35 b(See)28 b(the)g(table)f(b)r(elo)n(w.)506 +3023 y Fs(Note:)676 3173 y Fq(Not)37 b(all)g(A)-9 b(VR)38 +b(devices)e(ha)n(v)n(e)g(a)h(P)n(o)n(w)n(er)f(Reduction)h(Register)f +(\(for)h(example)g(the)676 3272 y(A)-7 b(Tmega128\).)35 +b(On)25 b(those)h(devices)f(without)h(a)g(P)n(o)n(w)n(er)e(Reduction)i +(Register,)f(these)676 3372 y(macros)h(are)h(not)g(a)n(v)-5 +b(ailable.)676 3472 y(Not)31 b(all)g(A)-9 b(VR)32 b(devices)e(con)n +(tain)g(the)i(same)e(p)r(eripherals)g(\(for)h(example,)g(the)h(LCD)676 +3571 y(in)n(terface\),)44 b(or)39 b(they)i(will)g(b)r(e)g(named)f +(di\033eren)n(tly)h(\(for)f(example,)k(USAR)-7 b(T)41 +b(and)676 3671 y(USAR)-7 b(T0\).)63 b(Please)36 b(consult)g(y)n(our)f +(device's)g(datasheet,)j(or)d(the)i(header)e(\034le,)j(to)676 +3771 y(\034nd)28 b(out)g(whic)n(h)f(macros)f(are)h(applicable)g(to)g(y) +n(our)f(device.)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 275 291 +TeXDict begin 275 290 bop 515 203 a Fs(22.19)94 b Fo(<)p +Fs(a)m(vr/p)s(o)m(w)m(er.h)p Fo(>)p Fs(:)41 b(P)m(o)m(w)m(er)33 +b(Reduction)e(Managemen)m(t)412 b(275)p 515 236 2865 +4 v 515 443 V 515 601 4 158 v 568 499 a Fg(P)n(o)n(w)n(er)26 +b(Macro)p 1468 601 V 480 w(Description)p 2422 601 V 543 +w(Applicable)h(for)f(device)p 3376 601 V 515 604 2865 +4 v 515 2892 4 2288 v 568 660 a Ff(p)r(o)n(w)n(er_adc_enable\(\))p +1468 2892 V 309 w(Enable)e(the)g(Analog)g(to)1522 738 +y(Digital)f(Con)n(v)n(erter)j(mo)r(dule.)p 2422 2892 +V 2475 660 a(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 +738 y(A)g(Tmega1281,)2475 817 y(A)g(Tmega2560,)2475 896 +y(A)g(Tmega2561,)2475 975 y(A)g(T90USB646,)2475 1054 +y(A)g(T90USB647,)2475 1133 y(A)g(T90USB1286,)2475 1212 +y(A)g(T90USB1287,)2475 1291 y(A)g(T90PWM1,)24 b(A)-6 +b(T90PWM2,)2475 1369 y(A)g(T90PWM2B,)2475 1448 y(A)g(T90PWM3,)2475 +1527 y(A)g(T90PWM3B,)2475 1606 y(A)g(T90PWM216,)2475 +1685 y(A)g(T90PWM316,)2475 1764 y(A)g(Tmega165,)25 b(A)-6 +b(Tmega165P)g(,)2475 1843 y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 +1922 y(A)g(Tmega645,)25 b(A)-6 b(Tmega6450,)2475 2000 +y(A)g(Tmega169,)25 b(A)-6 b(Tmega169P)g(,)2475 2079 y(A)g(Tmega329,)25 +b(A)-6 b(Tmega3290,)2475 2158 y(A)g(Tmega649,)25 b(A)-6 +b(Tmega6490,)2475 2237 y(A)g(Tmega164P)g(,)2475 2316 +y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 2395 y(A)g(Tmega48,)24 +b(A)-6 b(Tmega88,)2475 2474 y(A)g(Tmega168,)25 b(A)-6 +b(Ttin)n(y24,)2475 2553 y(A)g(Ttin)n(y44,)24 b(A)-6 b(Ttin)n(y84,)2475 +2631 y(A)g(Ttin)n(y25,)24 b(A)-6 b(Ttin)n(y45,)2475 2710 +y(A)g(Ttin)n(y85,)24 b(A)-6 b(Ttin)n(y261,)2475 2789 +y(A)g(Ttin)n(y461,)25 b(A)-6 b(Ttin)n(y861)p 3376 2892 +V 515 2895 2865 4 v 515 5182 4 2288 v 568 2950 a(p)r(o)n(w)n +(er_adc_disable\(\))p 1468 5182 V 292 w(Disable)23 b(the)h(Analog)g(to) +1522 3029 y(Digital)f(Con)n(v)n(erter)j(mo)r(dule.)p +2422 5182 V 2475 2950 a(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 +3029 y(A)g(Tmega1281,)2475 3108 y(A)g(Tmega2560,)2475 +3187 y(A)g(Tmega2561,)2475 3266 y(A)g(T90USB646,)2475 +3345 y(A)g(T90USB647,)2475 3423 y(A)g(T90USB1286,)2475 +3502 y(A)g(T90USB1287,)2475 3581 y(A)g(T90PWM1,)24 b(A)-6 +b(T90PWM2,)2475 3660 y(A)g(T90PWM2B,)2475 3739 y(A)g(T90PWM3,)2475 +3818 y(A)g(T90PWM3B,)2475 3897 y(A)g(T90PWM216,)2475 +3976 y(A)g(T90PWM316,)2475 4054 y(A)g(Tmega165,)25 b(A)-6 +b(Tmega165P)g(,)2475 4133 y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 +4212 y(A)g(Tmega645,)25 b(A)-6 b(Tmega6450,)2475 4291 +y(A)g(Tmega169,)25 b(A)-6 b(Tmega169P)g(,)2475 4370 y(A)g(Tmega329,)25 +b(A)-6 b(Tmega3290,)2475 4449 y(A)g(Tmega649,)25 b(A)-6 +b(Tmega6490,)2475 4528 y(A)g(Tmega164P)g(,)2475 4606 +y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 4685 y(A)g(Tmega48,)24 +b(A)-6 b(Tmega88,)2475 4764 y(A)g(Tmega168,)25 b(A)-6 +b(Ttin)n(y24,)2475 4843 y(A)g(Ttin)n(y44,)24 b(A)-6 b(Ttin)n(y84,)2475 +4922 y(A)g(Ttin)n(y25,)24 b(A)-6 b(Ttin)n(y45,)2475 5001 +y(A)g(Ttin)n(y85,)24 b(A)-6 b(Ttin)n(y261,)2475 5080 +y(A)g(Ttin)n(y461,)25 b(A)-6 b(Ttin)n(y861)p 3376 5182 +V 515 5186 2865 4 v 515 5501 4 316 v 568 5241 a(p)r(o)n(w)n +(er_lcd_enable\(\))p 1468 5501 V 324 w(Enable)24 b(the)g(LCD)g(mo)r +(dule.)p 2422 5501 V 178 w(A)-6 b(Tmega169,)25 b(A)-6 +b(Tmega169P)g(,)2475 5320 y(A)g(Tmega329,)25 b(A)-6 b(Tmega3290,)2475 +5399 y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490)p 3376 5501 +V 515 5504 2865 4 v 515 5820 4 316 v 568 5560 a(p)r(o)n(w)n +(er_lcd_disable\(\).)p 1468 5820 V 287 w(Disable)23 b(the)h(LCD)g(mo)r +(dule.)p 2422 5820 V 164 w(A)-6 b(Tmega169,)25 b(A)-6 +b(Tmega169P)g(,)2475 5638 y(A)g(Tmega329,)25 b(A)-6 b(Tmega3290,)2475 +5717 y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490)p 3376 5820 +V 515 5823 2865 4 v 515 6218 4 395 v 568 5878 a(p)r(o)n(w)n +(er_psc0_enable\(\))p 1468 6218 V 281 w(Enable)24 b(the)g(P)n(o)n(w)n +(er)h(Stage)1522 5957 y(Con)n(troller)g(0)f(mo)r(dule.)p +2422 6218 V 2475 5878 a(A)-6 b(T90PWM1,)24 b(A)-6 b(T90PWM2,)2475 +5957 y(A)g(T90PWM2B,)2475 6036 y(A)g(T90PWM3,)2475 6115 +y(A)g(T90PWM3B)p 3376 6218 V 515 6221 2865 4 v 515 6615 +4 395 v 568 6276 a(p)r(o)n(w)n(er_psc0_disable\(\))p +1468 6615 V 264 w(Disable)23 b(the)h(P)n(o)n(w)n(er)h(Stage)1522 +6355 y(Con)n(troller)g(0)f(mo)r(dule.)p 2422 6615 V 2475 +6276 a(A)-6 b(T90PWM1,)24 b(A)-6 b(T90PWM2,)2475 6355 +y(A)g(T90PWM2B,)2475 6434 y(A)g(T90PWM3,)2475 6513 y(A)g(T90PWM3B)p +3376 6615 V 515 6619 2865 4 v 515 7013 4 395 v 568 6674 +a(p)r(o)n(w)n(er_psc1_enable\(\))p 1468 7013 V 281 w(Enable)24 +b(the)g(P)n(o)n(w)n(er)h(Stage)1522 6753 y(Con)n(troller)g(1)f(mo)r +(dule.)p 2422 7013 V 2475 6674 a(A)-6 b(T90PWM1,)24 b(A)-6 +b(T90PWM2,)2475 6753 y(A)g(T90PWM2B,)2475 6831 y(A)g(T90PWM3,)2475 +6910 y(A)g(T90PWM3B)p 3376 7013 V 515 7016 2865 4 v 515 +7411 4 395 v 568 7071 a(p)r(o)n(w)n(er_psc1_disable\(\))p +1468 7411 V 264 w(Disable)23 b(the)h(P)n(o)n(w)n(er)h(Stage)1522 +7150 y(Con)n(troller)g(1)f(mo)r(dule.)p 2422 7411 V 2475 +7071 a(A)-6 b(T90PWM1,)24 b(A)-6 b(T90PWM2,)2475 7150 +y(A)g(T90PWM2B,)2475 7229 y(A)g(T90PWM3,)2475 7308 y(A)g(T90PWM3B)p +3376 7411 V 515 7414 2865 4 v 515 7808 4 395 v 568 7469 +a(p)r(o)n(w)n(er_psc2_enable\(\))p 1468 7808 V 281 w(Enable)24 +b(the)g(P)n(o)n(w)n(er)h(Stage)1522 7548 y(Con)n(troller)g(2)f(mo)r +(dule.)p 2422 7808 V 2475 7469 a(A)-6 b(T90PWM1,)24 b(A)-6 +b(T90PWM2,)2475 7548 y(A)g(T90PWM2B,)2475 7627 y(A)g(T90PWM3,)2475 +7706 y(A)g(T90PWM3B)p 3376 7808 V 515 7812 2865 4 v 515 +8206 4 395 v 568 7867 a(p)r(o)n(w)n(er_psc2_disable\(\))p +1468 8206 V 264 w(Disable)23 b(the)h(P)n(o)n(w)n(er)h(Stage)1522 +7946 y(Con)n(troller)g(2)f(mo)r(dule.)p 2422 8206 V 2475 +7867 a(A)-6 b(T90PWM1,)24 b(A)-6 b(T90PWM2,)2475 7946 +y(A)g(T90PWM2B,)2475 8024 y(A)g(T90PWM3,)2475 8103 y(A)g(T90PWM3B)p +3376 8206 V 515 8209 2865 4 v 515 10181 4 1972 v 568 +8264 a(p)r(o)n(w)n(er_spi_enable\(\))p 1468 10181 V 327 +w(Enable)24 b(the)g(Serial)1522 8343 y(P)n(eripheral)h(In)n(terface) +1522 8422 y(mo)r(dule.)p 2422 10181 V 2475 8264 a(A)-6 +b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 8343 y(A)g(Tmega1281,)2475 +8422 y(A)g(Tmega2560,)2475 8501 y(A)g(Tmega2561,)2475 +8580 y(A)g(T90USB646,)2475 8659 y(A)g(T90USB647,)2475 +8738 y(A)g(T90USB1286,)2475 8817 y(A)g(T90USB1287,)2475 +8895 y(A)g(T90PWM1,)24 b(A)-6 b(T90PWM2,)2475 8974 y(A)g(T90PWM2B,)2475 +9053 y(A)g(T90PWM3,)2475 9132 y(A)g(T90PWM3B,)2475 9211 +y(A)g(T90PWM216,)2475 9290 y(A)g(T90PWM316,)2475 9369 +y(A)g(Tmega165,)25 b(A)-6 b(Tmega165P)g(,)2475 9447 y(A)g(Tmega325,)25 +b(A)-6 b(Tmega3250,)2475 9526 y(A)g(Tmega645,)25 b(A)-6 +b(Tmega6450,)2475 9605 y(A)g(Tmega169,)25 b(A)-6 b(Tmega169P)g(,)2475 +9684 y(A)g(Tmega329,)25 b(A)-6 b(Tmega3290,)2475 9763 +y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490,)2475 9842 y(A)g(Tmega164P)g(,) +2475 9921 y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 +10000 y(A)g(Tmega48,)24 b(A)-6 b(Tmega88,)2475 10078 +y(A)g(Tmega168)p 3376 10181 V 515 10184 2865 4 v 515 +12156 4 1972 v 568 10240 a(p)r(o)n(w)n(er_spi_disable\(\))p +1468 12156 V 310 w(Disable)23 b(the)h(Serial)1522 10318 +y(P)n(eripheral)h(In)n(terface)1522 10397 y(mo)r(dule.)p +2422 12156 V 2475 10240 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 10318 y(A)g(Tmega1281,)2475 10397 y(A)g(Tmega2560,) +2475 10476 y(A)g(Tmega2561,)2475 10555 y(A)g(T90USB646,)2475 +10634 y(A)g(T90USB647,)2475 10713 y(A)g(T90USB1286,)2475 +10792 y(A)g(T90USB1287,)2475 10870 y(A)g(T90PWM1,)24 +b(A)-6 b(T90PWM2,)2475 10949 y(A)g(T90PWM2B,)2475 11028 +y(A)g(T90PWM3,)2475 11107 y(A)g(T90PWM3B,)2475 11186 +y(A)g(T90PWM216,)2475 11265 y(A)g(T90PWM316,)2475 11344 +y(A)g(Tmega165,)25 b(A)-6 b(Tmega165P)g(,)2475 11423 +y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 11501 y(A)g(Tmega645,)25 +b(A)-6 b(Tmega6450,)2475 11580 y(A)g(Tmega169,)25 b(A)-6 +b(Tmega169P)g(,)2475 11659 y(A)g(Tmega329,)25 b(A)-6 +b(Tmega3290,)2475 11738 y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490,)2475 +11817 y(A)g(Tmega164P)g(,)2475 11896 y(A)g(Tmega324P)g(,)25 +b(A)-6 b(Tmega644,)2475 11975 y(A)g(Tmega48,)24 b(A)-6 +b(Tmega88,)2475 12054 y(A)g(Tmega168)p 3376 12156 V 515 +12159 2865 4 v 515 14368 4 2209 v 568 12215 a(p)r(o)n(w)n +(er_timer0_enable\(\))p 1468 14368 V 215 w(Enable)24 +b(the)g(Timer)g(0)1522 12293 y(mo)r(dule.)p 2422 14368 +V 2475 12215 a(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 +12293 y(A)g(Tmega1281,)2475 12372 y(A)g(Tmega2560,)2475 +12451 y(A)g(Tmega2561,)2475 12530 y(A)g(T90USB646,)2475 +12609 y(A)g(T90USB647,)2475 12688 y(A)g(T90USB1286,)2475 +12767 y(A)g(T90USB1287,)2475 12846 y(A)g(T90PWM1,)2475 +12924 y(A)g(T90PWM216,)2475 13003 y(A)g(T90PWM316,)2475 +13082 y(A)g(T90PWM2,)2475 13161 y(A)g(T90PWM2B,)2475 +13240 y(A)g(T90PWM3,)2475 13319 y(A)g(T90PWM3B,)2475 +13398 y(A)g(Tmega165,)25 b(A)-6 b(Tmega165P)g(,)2475 +13477 y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 13555 +y(A)g(Tmega645,)25 b(A)-6 b(Tmega6450,)2475 13634 y(A)g(Tmega164P)g(,) +2475 13713 y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 +13792 y(A)g(Tmega406,)25 b(A)-6 b(Tmega48,)2475 13871 +y(A)g(Tmega88,)24 b(A)-6 b(Tmega168,)2475 13950 y(A)g(Ttin)n(y24,)24 +b(A)-6 b(Ttin)n(y44,)2475 14029 y(A)g(Ttin)n(y84,)24 +b(A)-6 b(Ttin)n(y25,)2475 14108 y(A)g(Ttin)n(y45,)24 +b(A)-6 b(Ttin)n(y85,)2475 14186 y(A)g(Ttin)n(y261,)25 +b(A)-6 b(Ttin)n(y461,)2475 14265 y(A)g(Ttin)n(y861)p +3376 14368 V 515 14371 2865 4 v 515 16501 4 2130 v 568 +14426 a(p)r(o)n(w)n(er_timer0_disable\(\))p 1468 16501 +V 198 w(Disable)23 b(the)h(Timer)g(0)1522 14505 y(mo)r(dule.)p +2422 16501 V 2475 14426 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 14505 y(A)g(Tmega1281,)2475 14584 y(A)g(Tmega2560,) +2475 14663 y(A)g(Tmega2561,)2475 14742 y(A)g(T90USB646,)2475 +14821 y(A)g(T90USB647,)2475 14900 y(A)g(T90USB1286,)2475 +14978 y(A)g(T90USB1287,)2475 15057 y(A)g(T90PWM1,)24 +b(A)-6 b(T90PWM2,)2475 15136 y(A)g(T90PWM2B,)2475 15215 +y(A)g(T90PWM3,)2475 15294 y(A)g(T90PWM3B,)2475 15373 +y(A)g(T90PWM216,)2475 15452 y(A)g(T90PWM316,)2475 15531 +y(A)g(Tmega165,)25 b(A)-6 b(Tmega165P)g(,)2475 15609 +y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 15688 y(A)g(Tmega645,)25 +b(A)-6 b(Tmega6450,)2475 15767 y(A)g(Tmega164P)g(,)2475 +15846 y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 +15925 y(A)g(Tmega406,)25 b(A)-6 b(Tmega48,)2475 16004 +y(A)g(Tmega88,)24 b(A)-6 b(Tmega168,)2475 16083 y(A)g(Ttin)n(y24,)24 +b(A)-6 b(Ttin)n(y44,)2475 16161 y(A)g(Ttin)n(y84,)24 +b(A)-6 b(Ttin)n(y25,)2475 16240 y(A)g(Ttin)n(y45,)24 +b(A)-6 b(Ttin)n(y85,)2475 16319 y(A)g(Ttin)n(y261,)25 +b(A)-6 b(Ttin)n(y461,)2475 16398 y(A)g(Ttin)n(y861)p +3376 16501 V 515 16504 2865 4 v 515 18870 4 2367 v 568 +16559 a(p)r(o)n(w)n(er_timer1_enable\(\))p 1468 18870 +V 215 w(Enable)24 b(the)g(Timer)g(1)1522 16638 y(mo)r(dule.)p +2422 18870 V 2475 16559 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 16638 y(A)g(Tmega1281,)2475 16717 y(A)g(Tmega2560,) +2475 16796 y(A)g(Tmega2561,)2475 16875 y(A)g(T90USB646,)2475 +16954 y(A)g(T90USB647,)2475 17032 y(A)g(T90USB1286,)2475 +17111 y(A)g(T90USB1287,)2475 17190 y(A)g(T90PWM1,)24 +b(A)-6 b(T90PWM2,)2475 17269 y(A)g(T90PWM2B,)2475 17348 +y(A)g(T90PWM3,)2475 17427 y(A)g(T90PWM3B,)2475 17506 +y(A)g(T90PWM216,)2475 17584 y(A)g(T90PWM316,)2475 17663 +y(A)g(Tmega165,)25 b(A)-6 b(Tmega165P)g(,)2475 17742 +y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 17821 y(A)g(Tmega645,)25 +b(A)-6 b(Tmega6450,)2475 17900 y(A)g(Tmega169,)25 b(A)-6 +b(Tmega169P)g(,)2475 17979 y(A)g(Tmega329,)25 b(A)-6 +b(Tmega3290,)2475 18058 y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490,)2475 +18137 y(A)g(Tmega164P)g(,)2475 18215 y(A)g(Tmega324P)g(,)25 +b(A)-6 b(Tmega644,)2475 18294 y(A)g(Tmega406,)25 b(A)-6 +b(Tmega48,)2475 18373 y(A)g(Tmega88,)24 b(A)-6 b(Tmega168,)2475 +18452 y(A)g(Ttin)n(y24,)24 b(A)-6 b(Ttin)n(y44,)2475 +18531 y(A)g(Ttin)n(y84,)24 b(A)-6 b(Ttin)n(y25,)2475 +18610 y(A)g(Ttin)n(y45,)24 b(A)-6 b(Ttin)n(y85,)2475 +18689 y(A)g(Ttin)n(y261,)25 b(A)-6 b(Ttin)n(y461,)2475 +18768 y(A)g(Ttin)n(y861)p 3376 18870 V 515 18873 2865 +4 v 515 21240 4 2367 v 568 18929 a(p)r(o)n(w)n(er_timer1_disable\(\))p +1468 21240 V 198 w(Disable)23 b(the)h(Timer)g(1)1522 +19007 y(mo)r(dule.)p 2422 21240 V 2475 18929 a(A)-6 b(Tmega640,)25 +b(A)-6 b(Tmega1280,)2475 19007 y(A)g(Tmega1281,)2475 +19086 y(A)g(Tmega2560,)2475 19165 y(A)g(Tmega2561,)2475 +19244 y(A)g(T90USB646,)2475 19323 y(A)g(T90USB647,)2475 +19402 y(A)g(T90USB1286,)2475 19481 y(A)g(T90USB1287,)2475 +19560 y(A)g(T90PWM1,)24 b(A)-6 b(T90PWM2,)2475 19638 +y(A)g(T90PWM2B,)2475 19717 y(A)g(T90PWM3,)2475 19796 +y(A)g(T90PWM3B,)2475 19875 y(A)g(T90PWM216,)2475 19954 +y(A)g(T90PWM316,)2475 20033 y(A)g(Tmega165,)25 b(A)-6 +b(Tmega165P)g(,)2475 20112 y(A)g(Tmega325,)25 b(A)-6 +b(Tmega3250,)2475 20191 y(A)g(Tmega645,)25 b(A)-6 b(Tmega6450,)2475 +20269 y(A)g(Tmega169,)25 b(A)-6 b(Tmega169P)g(,)2475 +20348 y(A)g(Tmega329,)25 b(A)-6 b(Tmega3290,)2475 20427 +y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490,)2475 20506 y(A)g(Tmega164P)g(,) +2475 20585 y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 +20664 y(A)g(Tmega406,)25 b(A)-6 b(Tmega48,)2475 20743 +y(A)g(Tmega88,)24 b(A)-6 b(Tmega168,)2475 20821 y(A)g(Ttin)n(y24,)24 +b(A)-6 b(Ttin)n(y44,)2475 20900 y(A)g(Ttin)n(y84,)24 +b(A)-6 b(Ttin)n(y25,)2475 20979 y(A)g(Ttin)n(y45,)24 +b(A)-6 b(Ttin)n(y85,)2475 21058 y(A)g(Ttin)n(y261,)25 +b(A)-6 b(Ttin)n(y461,)2475 21137 y(A)g(Ttin)n(y861)p +3376 21240 V 515 21243 2865 4 v 515 22268 4 1026 v 568 +21298 a(p)r(o)n(w)n(er_timer2_enable\(\))p 1468 22268 +V 215 w(Enable)24 b(the)g(Timer)g(2)1522 21377 y(mo)r(dule.)p +2422 22268 V 2475 21298 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 21377 y(A)g(Tmega1281,)2475 21456 y(A)g(Tmega2560,) +2475 21535 y(A)g(Tmega2561,)2475 21614 y(A)g(T90USB646,)2475 +21692 y(A)g(T90USB647,)2475 21771 y(A)g(T90USB1286,)2475 +21850 y(A)g(T90USB1287,)2475 21929 y(A)g(Tmega164P)g(,)2475 +22008 y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 +22087 y(A)g(Tmega48,)24 b(A)-6 b(Tmega88,)2475 22166 +y(A)g(Tmega168)p 3376 22268 V 515 22271 2865 4 v 515 +23297 4 1026 v 568 22327 a(p)r(o)n(w)n(er_timer2_disable\(\))p +1468 23297 V 198 w(Disable)23 b(the)h(Timer)g(2)1522 +22406 y(mo)r(dule.)p 2422 23297 V 2475 22327 a(A)-6 b(Tmega640,)25 +b(A)-6 b(Tmega1280,)2475 22406 y(A)g(Tmega1281,)2475 +22484 y(A)g(Tmega2560,)2475 22563 y(A)g(Tmega2561,)2475 +22642 y(A)g(T90USB646,)2475 22721 y(A)g(T90USB647,)2475 +22800 y(A)g(T90USB1286,)2475 22879 y(A)g(T90USB1287,)2475 +22958 y(A)g(Tmega164P)g(,)2475 23037 y(A)g(Tmega324P)g(,)25 +b(A)-6 b(Tmega644,)2475 23115 y(A)g(Tmega48,)24 b(A)-6 +b(Tmega88,)2475 23194 y(A)g(Tmega168)p 3376 23297 V 515 +23300 2865 4 v 515 24010 4 710 v 568 23355 a(p)r(o)n(w)n +(er_timer3_enable\(\))p 1468 24010 V 215 w(Enable)24 +b(the)g(Timer)g(3)1522 23434 y(mo)r(dule.)p 2422 24010 +V 2475 23355 a(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 +23434 y(A)g(Tmega1281,)2475 23513 y(A)g(Tmega2560,)2475 +23592 y(A)g(Tmega2561,)2475 23671 y(A)g(T90USB646,)2475 +23750 y(A)g(T90USB647,)2475 23829 y(A)g(T90USB1286,)2475 +23907 y(A)g(T90USB1287)p 3376 24010 V 515 24013 2865 +4 v 515 24723 4 710 v 568 24068 a(p)r(o)n(w)n(er_timer3_disable\(\))p +1468 24723 V 198 w(Disable)23 b(the)h(Timer)g(3)1522 +24147 y(mo)r(dule.)p 2422 24723 V 2475 24068 a(A)-6 b(Tmega640,)25 +b(A)-6 b(Tmega1280,)2475 24147 y(A)g(Tmega1281,)2475 +24226 y(A)g(Tmega2560,)2475 24305 y(A)g(Tmega2561,)2475 +24384 y(A)g(T90USB646,)2475 24463 y(A)g(T90USB647,)2475 +24542 y(A)g(T90USB1286,)2475 24621 y(A)g(T90USB1287)p +3376 24723 V 515 24726 2865 4 v 515 25042 4 316 v 568 +24782 a(p)r(o)n(w)n(er_timer4_enable\(\))p 1468 25042 +V 215 w(Enable)24 b(the)g(Timer)g(4)1522 24861 y(mo)r(dule.)p +2422 25042 V 2475 24782 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 24861 y(A)g(Tmega1281,)2475 24939 y(A)g(Tmega2560,)25 +b(A)-6 b(Tmega2561)p 3376 25042 V 515 25045 2865 4 v +515 25361 4 316 v 568 25100 a(p)r(o)n(w)n(er_timer4_disable\(\))p +1468 25361 V 198 w(Disable)23 b(the)h(Timer)g(4)1522 +25179 y(mo)r(dule.)p 2422 25361 V 2475 25100 a(A)-6 b(Tmega640,)25 +b(A)-6 b(Tmega1280,)2475 25179 y(A)g(Tmega1281,)2475 +25258 y(A)g(Tmega2560,)25 b(A)-6 b(Tmega2561)p 3376 25361 +V 515 25364 2865 4 v 515 25680 4 316 v 568 25419 a(p)r(o)n(w)n +(er_timer5_enable\(\))p 1468 25680 V 215 w(Enable)24 +b(the)g(Timer)g(5)1522 25498 y(mo)r(dule.)p 2422 25680 +V 2475 25419 a(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 +25498 y(A)g(Tmega1281,)2475 25577 y(A)g(Tmega2560,)25 +b(A)-6 b(Tmega2561)p 3376 25680 V 515 25683 2865 4 v +515 25998 4 316 v 568 25738 a(p)r(o)n(w)n(er_timer5_disable\(\))p +1468 25998 V 198 w(Disable)23 b(the)h(Timer)g(5)1522 +25817 y(mo)r(dule.)p 2422 25998 V 2475 25738 a(A)-6 b(Tmega640,)25 +b(A)-6 b(Tmega1280,)2475 25817 y(A)g(Tmega1281,)2475 +25896 y(A)g(Tmega2560,)25 b(A)-6 b(Tmega2561)p 3376 25998 +V 515 26002 2865 4 v 515 27027 4 1026 v 568 26057 a(p)r(o)n(w)n(er_t)n +(wi_enable\(\))p 1468 27027 V 318 w(Enable)24 b(the)g(T)-6 +b(w)n(o)24 b(Wire)1522 26136 y(In)n(terface)i(mo)r(dule.)p +2422 27027 V 2475 26057 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 26136 y(A)g(Tmega1281,)2475 26215 y(A)g(Tmega2560,) +2475 26293 y(A)g(Tmega2561,)2475 26372 y(A)g(T90USB646,)2475 +26451 y(A)g(T90USB647,)2475 26530 y(A)g(T90USB1286,)2475 +26609 y(A)g(T90USB1287,)2475 26688 y(A)g(Tmega164P)g(,)2475 +26767 y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 +26846 y(A)g(Tmega406,)25 b(A)-6 b(Tmega48,)2475 26924 +y(A)g(Tmega88,)24 b(A)-6 b(Tmega168)p 3376 27027 V 515 +27030 2865 4 v 515 28056 4 1026 v 568 27086 a(p)r(o)n(w)n(er_t)n +(wi_disable\(\))p 1468 28056 V 301 w(Disable)23 b(the)h(T)-6 +b(w)n(o)24 b(Wire)1522 27164 y(In)n(terface)i(mo)r(dule.)p +2422 28056 V 2475 27086 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 27164 y(A)g(Tmega1281,)2475 27243 y(A)g(Tmega2560,) +2475 27322 y(A)g(Tmega2561,)2475 27401 y(A)g(T90USB646,)2475 +27480 y(A)g(T90USB647,)2475 27559 y(A)g(T90USB1286,)2475 +27638 y(A)g(T90USB1287,)2475 27716 y(A)g(Tmega164P)g(,)2475 +27795 y(A)g(Tmega324P)g(,)25 b(A)-6 b(Tmega644,)2475 +27874 y(A)g(Tmega406,)25 b(A)-6 b(Tmega48,)2475 27953 +y(A)g(Tmega88,)24 b(A)-6 b(Tmega168)p 3376 28056 V 515 +28059 2865 4 v 515 28453 4 395 v 568 28114 a(p)r(o)n(w)n +(er_usart_enable\(\))p 1468 28453 V 258 w(Enable)24 b(the)g(USAR)-6 +b(T)1522 28193 y(mo)r(dule.)p 2422 28453 V 2475 28114 +a(A)g(T90PWM2,)2475 28193 y(A)g(T90PWM2B,)2475 28272 +y(A)g(T90PWM3,)2475 28351 y(A)g(T90PWM3B)p 3376 28453 +V 515 28457 2865 4 v 515 28851 4 395 v 568 28512 a(p)r(o)n(w)n +(er_usart_disable\(\))p 1468 28851 V 241 w(Disable)23 +b(the)h(USAR)-6 b(T)1522 28591 y(mo)r(dule.)p 2422 28851 +V 2475 28512 a(A)g(T90PWM2,)2475 28591 y(A)g(T90PWM2B,)2475 +28670 y(A)g(T90PWM3,)2475 28748 y(A)g(T90PWM3B)p 3376 +28851 V 515 28854 2865 4 v 515 30037 4 1184 v 568 28910 +a(p)r(o)n(w)n(er_usart0_enable\(\))p 1468 30037 V 223 +w(Enable)24 b(the)g(USAR)-6 b(T)24 b(0)1522 28988 y(mo)r(dule.)p +2422 30037 V 2475 28910 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 28988 y(A)g(Tmega1281,)2475 29067 y(A)g(Tmega2560,) +2475 29146 y(A)g(Tmega2561,)25 b(A)-6 b(Tmega165,)2475 +29225 y(A)g(Tmega165P)g(,)25 b(A)-6 b(Tmega325,)2475 +29304 y(A)g(Tmega3250,)25 b(A)-6 b(Tmega645,)2475 29383 +y(A)g(Tmega6450,)25 b(A)-6 b(Tmega169,)2475 29462 y(A)g(Tmega169P)g(,) +25 b(A)-6 b(Tmega329,)2475 29540 y(A)g(Tmega3290,)25 +b(A)-6 b(Tmega649,)2475 29619 y(A)g(Tmega6490,)2475 29698 +y(A)g(Tmega164P)g(,)2475 29777 y(A)g(Tmega324P)g(,)25 +b(A)-6 b(Tmega644,)2475 29856 y(A)g(Tmega48,)24 b(A)-6 +b(Tmega88,)2475 29935 y(A)g(Tmega168)p 3376 30037 V 515 +30041 2865 4 v 515 31224 4 1184 v 568 30096 a(p)r(o)n(w)n +(er_usart0_disable\(\))p 1468 31224 V 206 w(Disable)23 +b(the)h(USAR)-6 b(T)24 b(0)1522 30175 y(mo)r(dule.)p +2422 31224 V 2475 30096 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 30175 y(A)g(Tmega1281,)2475 30254 y(A)g(Tmega2560,) +2475 30332 y(A)g(Tmega2561,)25 b(A)-6 b(Tmega165,)2475 +30411 y(A)g(Tmega165P)g(,)25 b(A)-6 b(Tmega325,)2475 +30490 y(A)g(Tmega3250,)25 b(A)-6 b(Tmega645,)2475 30569 +y(A)g(Tmega6450,)25 b(A)-6 b(Tmega169,)2475 30648 y(A)g(Tmega169P)g(,) +25 b(A)-6 b(Tmega329,)2475 30727 y(A)g(Tmega3290,)25 +b(A)-6 b(Tmega649,)2475 30806 y(A)g(Tmega6490,)2475 30885 +y(A)g(Tmega164P)g(,)2475 30963 y(A)g(Tmega324P)g(,)25 +b(A)-6 b(Tmega644,)2475 31042 y(A)g(Tmega48,)24 b(A)-6 +b(Tmega88,)2475 31121 y(A)g(Tmega168)p 3376 31224 V 515 +31227 2865 4 v 515 32095 4 868 v 568 31282 a(p)r(o)n(w)n +(er_usart1_enable\(\))p 1468 32095 V 223 w(Enable)24 +b(the)g(USAR)-6 b(T)24 b(1)1522 31361 y(mo)r(dule.)p +2422 32095 V 2475 31282 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 31361 y(A)g(Tmega1281,)2475 31440 y(A)g(Tmega2560,) +2475 31519 y(A)g(Tmega2561,)2475 31598 y(A)g(T90USB646,)2475 +31677 y(A)g(T90USB647,)2475 31755 y(A)g(T90USB1286,)2475 +31834 y(A)g(T90USB1287,)2475 31913 y(A)g(Tmega164P)g(,)2475 +31992 y(A)g(Tmega324P)p 3376 32095 V 515 32098 2865 4 +v 515 32966 4 868 v 568 32153 a(p)r(o)n(w)n(er_usart1_disable\(\))p +1468 32966 V 206 w(Disable)23 b(the)h(USAR)-6 b(T)24 +b(1)1522 32232 y(mo)r(dule.)p 2422 32966 V 2475 32153 +a(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 32232 +y(A)g(Tmega1281,)2475 32311 y(A)g(Tmega2560,)2475 32390 +y(A)g(Tmega2561,)2475 32469 y(A)g(T90USB646,)2475 32548 +y(A)g(T90USB647,)2475 32626 y(A)g(T90USB1286,)2475 32705 +y(A)g(T90USB1287,)2475 32784 y(A)g(Tmega164P)g(,)2475 +32863 y(A)g(Tmega324P)p 3376 32966 V 515 32969 2865 4 +v 515 33284 4 316 v 568 33024 a(p)r(o)n(w)n(er_usart2_enable\(\))p +1468 33284 V 223 w(Enable)24 b(the)g(USAR)-6 b(T)24 b(2)1522 +33103 y(mo)r(dule.)p 2422 33284 V 2475 33024 a(A)-6 b(Tmega640,)25 +b(A)-6 b(Tmega1280,)2475 33103 y(A)g(Tmega1281,)2475 +33182 y(A)g(Tmega2560,)25 b(A)-6 b(Tmega2561)p 3376 33284 +V 515 33288 2865 4 v 515 33603 4 316 v 568 33343 a(p)r(o)n(w)n +(er_usart2_disable\(\))p 1468 33603 V 206 w(Disable)23 +b(the)h(USAR)-6 b(T)24 b(2)1522 33422 y(mo)r(dule.)p +2422 33603 V 2475 33343 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 33422 y(A)g(Tmega1281,)2475 33501 y(A)g(Tmega2560,)25 +b(A)-6 b(Tmega2561)p 3376 33603 V 515 33606 2865 4 v +515 33922 4 316 v 568 33662 a(p)r(o)n(w)n(er_usart3_enable\(\))p +1468 33922 V 223 w(Enable)24 b(the)g(USAR)-6 b(T)24 b(3)1522 +33741 y(mo)r(dule.)p 2422 33922 V 2475 33662 a(A)-6 b(Tmega640,)25 +b(A)-6 b(Tmega1280,)2475 33741 y(A)g(Tmega1281,)2475 +33819 y(A)g(Tmega2560,)25 b(A)-6 b(Tmega2561)p 3376 33922 +V 515 33925 2865 4 v 515 34241 4 316 v 568 33980 a(p)r(o)n(w)n +(er_usart3_disable\(\))p 1468 34241 V 206 w(Disable)23 +b(the)h(USAR)-6 b(T)24 b(3)1522 34059 y(mo)r(dule.)p +2422 34241 V 2475 33980 a(A)-6 b(Tmega640,)25 b(A)-6 +b(Tmega1280,)2475 34059 y(A)g(Tmega1281,)2475 34138 y(A)g(Tmega2560,)25 +b(A)-6 b(Tmega2561)p 3376 34241 V 515 34244 2865 4 v +515 34638 4 395 v 568 34299 a(p)r(o)n(w)n(er_usb_enable\(\))p +1468 34638 V 308 w(Enable)24 b(the)g(USB)g(mo)r(dule.)p +2422 34638 V 185 w(A)-6 b(T90USB646,)2475 34378 y(A)g(T90USB647,)2475 +34457 y(A)g(T90USB1286,)2475 34536 y(A)g(T90USB1287)p +3376 34638 V 515 34642 2865 4 v 515 35036 4 395 v 568 +34697 a(p)r(o)n(w)n(er_usb_disable\(\))p 1468 35036 V +291 w(Disable)23 b(the)h(USB)g(mo)r(dule.)p 2422 35036 +V 171 w(A)-6 b(T90USB646,)2475 34776 y(A)g(T90USB647,)2475 +34855 y(A)g(T90USB1286,)2475 34934 y(A)g(T90USB1287)p +3376 35036 V 515 35039 2865 4 v 515 35513 4 474 v 568 +35095 a(p)r(o)n(w)n(er_usi_enable\(\))p 1468 35513 V +327 w(Enable)24 b(the)g(Univ)n(ersal)g(Serial)1522 35174 +y(In)n(terface)i(mo)r(dule.)p 2422 35513 V 2475 35095 +a(A)-6 b(Ttin)n(y24,)24 b(A)-6 b(Ttin)n(y44,)2475 35174 +y(A)g(Ttin)n(y84,)24 b(A)-6 b(Ttin)n(y25,)2475 35252 +y(A)g(Ttin)n(y45,)24 b(A)-6 b(Ttin)n(y85,)2475 35331 +y(A)g(Ttin)n(y261,)25 b(A)-6 b(Ttin)n(y461,)2475 35410 +y(A)g(Ttin)n(y861)p 3376 35513 V 515 35516 2865 4 v 515 +35989 4 474 v 568 35571 a(p)r(o)n(w)n(er_usi_disable\(\))p +1468 35989 V 310 w(Disable)23 b(the)h(Univ)n(ersal)1522 +35650 y(Serial)g(In)n(terface)i(mo)r(dule.)p 2422 35989 +V 2475 35571 a(A)-6 b(Ttin)n(y24,)24 b(A)-6 b(Ttin)n(y44,)2475 +35650 y(A)g(Ttin)n(y84,)24 b(A)-6 b(Ttin)n(y25,)2475 +35729 y(A)g(Ttin)n(y45,)24 b(A)-6 b(Ttin)n(y85,)2475 +35808 y(A)g(Ttin)n(y261,)25 b(A)-6 b(Ttin)n(y461,)2475 +35887 y(A)g(Ttin)n(y861)p 3376 35989 V 515 35993 2865 +4 v 515 36150 4 158 v 568 36048 a(p)r(o)n(w)n(er_v)l(adc_enable\(\))p +1468 36150 V 276 w(Enable)24 b(the)g(V)-6 b(oltage)25 +b(ADC)1522 36127 y(mo)r(dule.)p 2422 36150 V 2475 36048 +a(A)-6 b(Tmega406)p 3376 36150 V 515 36154 2865 4 v 515 +36311 4 158 v 568 36209 a(p)r(o)n(w)n(er_v)l(adc_disable\(\))p +1468 36311 V 259 w(Disable)23 b(the)h(V)-6 b(oltage)25 +b(ADC)1522 36288 y(mo)r(dule.)p 2422 36311 V 2475 36209 +a(A)-6 b(Tmega406)p 3376 36311 V 515 36315 2865 4 v 515 +38681 4 2367 v 568 36370 a(p)r(o)n(w)n(er_all_enable\(\))p +1468 38681 V 339 w(Enable)24 b(all)f(mo)r(dules.)p 2422 +38681 V 346 w(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 +36449 y(A)g(Tmega1281,)2475 36528 y(A)g(Tmega2560,)2475 +36606 y(A)g(Tmega2561,)2475 36685 y(A)g(T90USB646,)2475 +36764 y(A)g(T90USB647,)2475 36843 y(A)g(T90USB1286,)2475 +36922 y(A)g(T90USB1287,)2475 37001 y(A)g(T90PWM1,)24 +b(A)-6 b(T90PWM2,)2475 37080 y(A)g(T90PWM2B,)2475 37159 +y(A)g(T90PWM3,)2475 37237 y(A)g(T90PWM3B,)2475 37316 +y(A)g(T90PWM216,)2475 37395 y(A)g(T90PWM316,)2475 37474 +y(A)g(Tmega165,)25 b(A)-6 b(Tmega165P)g(,)2475 37553 +y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 37632 y(A)g(Tmega645,)25 +b(A)-6 b(Tmega6450,)2475 37711 y(A)g(Tmega169,)25 b(A)-6 +b(Tmega169P)g(,)2475 37790 y(A)g(Tmega329,)25 b(A)-6 +b(Tmega3290,)2475 37868 y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490,)2475 +37947 y(A)g(Tmega164P)g(,)2475 38026 y(A)g(Tmega324P)g(,)25 +b(A)-6 b(Tmega644,)2475 38105 y(A)g(Tmega406,)25 b(A)-6 +b(Tmega48,)2475 38184 y(A)g(Tmega88,)24 b(A)-6 b(Tmega168,)2475 +38263 y(A)g(Ttin)n(y24,)24 b(A)-6 b(Ttin)n(y44,)2475 +38342 y(A)g(Ttin)n(y84,)24 b(A)-6 b(Ttin)n(y25,)2475 +38420 y(A)g(Ttin)n(y45,)24 b(A)-6 b(Ttin)n(y85,)2475 +38499 y(A)g(Ttin)n(y261,)25 b(A)-6 b(Ttin)n(y461,)2475 +38578 y(A)g(Ttin)n(y861)p 3376 38681 V 515 38684 2865 +4 v 515 40971 4 2288 v 568 38739 a(p)r(o)n(w)n(er_all_disable\(\))p +1468 40971 V 322 w(Disable)23 b(all)g(mo)r(dules.)p 2422 +40971 V 332 w(A)-6 b(Tmega640,)25 b(A)-6 b(Tmega1280,)2475 +38818 y(A)g(Tmega1281,)2475 38897 y(A)g(Tmega2560,)2475 +38976 y(A)g(Tmega2561,)2475 39055 y(A)g(T90USB646,)2475 +39134 y(A)g(T90USB647,)2475 39213 y(A)g(T90USB1286,)2475 +39291 y(A)g(T90USB1287,)2475 39370 y(A)g(T90PWM1,)24 +b(A)-6 b(T90PWM2,)2475 39449 y(A)g(T90PWM2B,)2475 39528 +y(A)g(T90PWM3,)2475 39607 y(A)g(T90PWM3B,)2475 39686 +y(A)g(T90PWM216,)2475 39765 y(A)g(T90PWM316,)2475 39843 +y(A)g(Tmega165,)25 b(A)-6 b(Tmega165P)g(,)2475 39922 +y(A)g(Tmega325,)25 b(A)-6 b(Tmega3250,)2475 40001 y(A)g(Tmega645,)25 +b(A)-6 b(Tmega6450,)2475 40080 y(A)g(Tmega169,)25 b(A)-6 +b(Tmega169P)g(,)2475 40159 y(A)g(Tmega329,)25 b(A)-6 +b(Tmega3290,)2475 40238 y(A)g(Tmega649,)25 b(A)-6 b(Tmega6490,)2475 +40317 y(A)g(Tmega164P)g(,)2475 40396 y(A)g(Tmega324P)g(,)25 +b(A)-6 b(Tmega644,)2475 40474 y(A)g(Tmega406,)25 b(A)-6 +b(Tmega48,)2475 40553 y(A)g(Tmega88,)24 b(A)-6 b(Tmega168,)2475 +40632 y(A)g(Ttin)n(y24,)24 b(A)-6 b(Ttin)n(y44,)2475 +40711 y(A)g(Ttin)n(y84,)24 b(A)-6 b(Ttin)n(y25,)2475 +40790 y(A)g(Ttin)n(y45,)24 b(A)-6 b(Ttin)n(y85,)2475 +40869 y(A)g(Ttin)n(y261,)25 b(A)-6 b(Ttin)n(y461,)2475 +40948 y(A)g(Ttin)n(y861)p 3376 40971 V 515 40975 2865 +4 v 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 276 292 +TeXDict begin 276 291 bop 515 203 a Fs(22.20)94 b(A)m(dditional)31 +b(notes)g(from)g Fo(<)p Fs(a)m(vr/sfr_defs.h)p Fo(>)725 +b Fs(276)p 515 236 2865 4 v 515 523 a Fq(Some)31 b(of)g(the)g(new)n(er) +g(A)-9 b(VRs)31 b(con)n(tain)f(a)h(System)h(Clo)r(c)n(k)e(Prescale)g +(Register)g(\(CLKPR\))515 623 y(that)24 b(allo)n(ws)e(y)n(ou)h(to)h +(decrease)e(the)i(system)f(clo)r(c)n(k)g(frequency)h(and)f(the)h(p)r(o) +n(w)n(er)f(consump-)515 722 y(tion)29 b(when)h(the)g(need)g(for)f(pro)r +(cessing)f(p)r(o)n(w)n(er)h(is)g(lo)n(w.)43 b(Belo)n(w)28 +b(are)h(t)n(w)n(o)g(macros)f(and)h(an)515 822 y(en)n(umerated)e(t)n(yp) +r(e)g(that)h(can)f(b)r(e)h(used)g(to)f(in)n(terface)g(to)h(the)g(Clo)r +(c)n(k)e(Prescale)h(Register.)506 1026 y Fs(Note:)676 +1176 y Fq(Not)39 b(all)g(A)-9 b(VR)40 b(devices)e(ha)n(v)n(e)g(a)g(Clo) +r(c)n(k)h(Prescale)f(Register.)70 b(On)39 b(those)g(devices)676 +1275 y(without)28 b(a)f(Clo)r(c)n(k)g(Prescale)g(Register,)f(these)i +(macros)e(are)h(not)g(a)n(v)-5 b(ailable.)515 1476 y +Fj(typedef)37 b(enum)515 1555 y({)656 1634 y(clock_div_1)h(=)e(0,)656 +1713 y(clock_div_2)i(=)e(1,)656 1792 y(clock_div_4)i(=)e(2,)656 +1871 y(clock_div_8)i(=)e(3,)656 1950 y(clock_div_16)i(=)e(4,)656 +2029 y(clock_div_32)i(=)e(5,)656 2107 y(clock_div_64)i(=)e(6,)656 +2186 y(clock_div_128)j(=)c(7,)656 2265 y(clock_div_256)k(=)c(8)515 +2344 y(})g(clock_div_t;)515 2566 y Fq(Clo)r(c)n(k)27 +b(prescaler)e(setting)j(en)n(umerations.)550 2767 y Fj +(clock_prescale_set\(x\))515 2990 y Fq(Set)40 b(the)h(clo)r(c)n(k)f +(prescaler)e(register)h(select)h(bits,)k(selecting)c(a)g(system)g(clo)r +(c)n(k)g(division)515 3089 y(setting.)d(They)27 b(t)n(yp)r(e)h(of)f(x)h +(is)f(clo)r(c)n(k_div_t.)550 3290 y Fj(clock_prescale_get\(\))515 +3513 y Fq(Gets)c(and)g(returns)g(the)h(clo)r(c)n(k)e(prescaler)g +(register)f(setting.)36 b(The)23 b(return)g(t)n(yp)r(e)g(is)h(clo)r(c)n +(k_-)515 3612 y(div_t.)515 3890 y Fn(22.20)112 b(A)m(dditional)38 +b(notes)g(from)f Fd(<)p Fn(a)m(vr/sfr_defs.h)p Fd(>)515 +4091 y Fq(The)d Fo(<)p Fm(avr/sfr_defs.h)p Fo(>)28 b +Fq(\034le)34 b(is)h(included)f(b)n(y)g(all)h(of)f(the)h +Fo(<)p Fm(avr/ioXXXX.h)p Fo(>)28 b Fq(\034les,)515 4191 +y(whic)n(h)g(use)g(macros)f(de\034ned)i(here)f(to)g(mak)n(e)f(the)i(sp) +r(ecial)f(function)h(register)e(de\034nitions)515 4290 +y(lo)r(ok)j(lik)n(e)h(C)h(v)-5 b(ariables)30 b(or)g(simple)i(constan)n +(ts,)f(dep)r(ending)h(on)f(the)g Fm(_SFR_ASM_COMPAT)515 +4390 y Fq(de\034ne.)65 b(Some)37 b(examples)f(from)h +Fo(<)p Fm(avr/iocanxx.h)p Fo(>)30 b Fq(to)37 b(sho)n(w)f(ho)n(w)g(to)h +(de\034ne)g(suc)n(h)515 4489 y(macros:)515 4691 y Fj(#define)g(PORTA) +107 b(_SFR_IO8\(0x02\))515 4770 y(#define)37 b(EEAR)142 +b(_SFR_IO16\(0x21\))515 4848 y(#define)37 b(UDR0)142 +b(_SFR_MEM8\(0xC6\))515 4927 y(#define)37 b(TCNT3)107 +b(_SFR_MEM16\(0x94\))515 5006 y(#define)37 b(CANIDT)72 +b(_SFR_MEM32\(0xF0\))p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 277 293 +TeXDict begin 277 292 bop 515 203 a Fs(22.20)94 b(A)m(dditional)31 +b(notes)g(from)g Fo(<)p Fs(a)m(vr/sfr_defs.h)p Fo(>)725 +b Fs(277)p 515 236 2865 4 v 515 523 a Fq(If)33 b Fm(_SFR_ASM_COMPAT)26 +b Fq(is)33 b(not)g(de\034ned,)h(C)f(programs)d(can)i(use)h(names)f(lik) +n(e)g Fm(PORTA)f Fq(di-)515 623 y(rectly)25 b(in)h(C)g(expressions)e +(\(also)h(on)g(the)i(left)f(side)g(of)g(assignmen)n(t)e(op)r(erators\)) +g(and)i(GCC)515 722 y(will)35 b(do)f(the)h(righ)n(t)f(thing)g(\(use)h +(short)f(I/O)f(instructions)i(if)g(p)r(ossible\).)57 +b(The)35 b Fm(__SFR_-)515 822 y(OFFSET)25 b Fq(de\034nition)j(is)f(not) +h(used)f(in)h(an)n(y)f(w)n(a)n(y)f(in)i(this)g(case.)515 +969 y(De\034ne)34 b Fm(_SFR_ASM_COMPAT)27 b Fq(as)33 +b(1)g(to)h(mak)n(e)f(these)g(names)g(w)n(ork)f(as)h(simple)h(constan)n +(ts)515 1068 y(\(addresses)19 b(of)h(the)h(I/O)e(registers\).)33 +b(This)20 b(is)g(necessary)f(when)h(included)h(in)g(prepro)r(cessed)515 +1168 y(assem)n(bler)37 b(\()p Fh(\003)p Fq(.S\))i(source)e(\034les,)k +(so)d(it)i(is)e(done)g(automatically)g(if)h Fm(__ASSEMBLER__)33 +b Fq(is)515 1268 y(de\034ned.)k(By)26 b(default,)i(all)e(addresses)g +(are)g(de\034ned)h(as)f(if)i(they)f(w)n(ere)f(memory)g(addresses)515 +1367 y(\(used)j(in)g Fm(lds/sts)d Fq(instructions\).)41 +b(T)-7 b(o)29 b(use)g(these)f(addresses)g(in)h Fm(in/out)e +Fq(instructions,)515 1467 y(y)n(ou)g(m)n(ust)g(subtract)g(0x20)f(from)h +(them.)515 1614 y(F)-7 b(or)28 b(more)g(bac)n(kw)n(ards)f(compatibilit) +n(y)-7 b(,)29 b(insert)g(the)g(follo)n(wing)f(at)h(the)g(start)g(of)g +(y)n(our)e(old)515 1713 y(assem)n(bler)f(source)g(\034le:)515 +1923 y Fj(#define)37 b(__SFR_OFFSET)i(0)515 2152 y Fq(This)34 +b(automatically)f(subtracts)g(0x20)g(from)h(I/O)f(space)h(addresses,)g +(but)h(it's)f(a)g(hac)n(k,)515 2252 y(so)h(it)h(is)g(recommended)f(to)g +(c)n(hange)g(y)n(our)f(source:)52 b(wrap)35 b(suc)n(h)h(addresses)e(in) +i(macros)515 2352 y(de\034ned)30 b(here,)h(as)e(sho)n(wn)h(b)r(elo)n +(w.)44 b(After)31 b(this)f(is)g(done,)h(the)g Fm(__SFR_OFFSET)25 +b Fq(de\034nition)515 2451 y(is)i(no)g(longer)g(necessary)e(and)j(can)f +(b)r(e)h(remo)n(v)n(ed.)515 2598 y(Real)22 b(example)g(-)g(this)g(co)r +(de)g(could)h(b)r(e)f(used)h(in)f(a)g(b)r(o)r(ot)h(loader)e(that)h(is)g +(p)r(ortable)g(b)r(et)n(w)n(een)515 2698 y(devices)27 +b(with)h Fm(SPMCR)d Fq(at)j(di\033eren)n(t)f(addresses.)515 +2907 y Fj(:)39 b(#define)e(SPMCR)g(_SFR_IO8\(0x37\))515 +2986 y(:)i(#define)e(SPMCR)g(_SFR_MEM8\(0x68\))515 +3195 y(#if)f(_SFR_IO_REG_P\(SPMCR\))797 3274 y(out)177 +b(_SFR_IO_ADDR\(SPMCR\),)41 b(r24)515 3353 y(#else)797 +3432 y(sts)177 b(_SFR_MEM_ADDR\(SPMCR\),)41 b(r24)515 +3510 y(#endif)515 3740 y Fq(Y)-7 b(ou)26 b(can)h(use)f(the)h +Fm(in/out/cbi/sbi/)o(sbi)o(c/)o(sbi)o(s)20 b Fq(instructions,)27 +b(without)g(the)g Fm(_SFR_-)515 3840 y(IO_REG_P)d Fq(test,)29 +b(if)f(y)n(ou)f(kno)n(w)g(that)i(the)f(register)e(is)i(in)g(the)h(I/O)e +(space)g(\(as)g(with)i Fm(SREG)p Fq(,)515 3940 y(for)e(example\).)39 +b(If)28 b(it)h(isn't,)g(the)f(assem)n(bler)f(will)h(complain)g(\(I/O)f +(address)g(out)h(of)g(range)515 4039 y(0...0x3f)6 b(\),)27 +b(so)g(this)h(should)f(b)r(e)h(fairly)f(safe.)515 4186 +y(If)33 b(y)n(ou)g(do)g(not)g(de\034ne)h Fm(__SFR_OFFSET)28 +b Fq(\(so)33 b(it)g(will)h(b)r(e)f(0x20)f(b)n(y)h(default\),)i(all)e +(sp)r(ecial)515 4286 y(register)g(addresses)g(are)g(de\034ned)i(as)f +(memory)g(addresses)f(\(so)h Fm(SREG)f Fq(is)h(0x5f)6 +b(\),)37 b(and)d(\(if)515 4385 y(co)r(de)29 b(size)g(and)g(sp)r(eed)h +(are)e(not)i(imp)r(ortan)n(t,)g(and)f(y)n(ou)g(don't)g(lik)n(e)g(the)h +(ugly)f(#if)h(ab)r(o)n(v)n(e\))515 4485 y(y)n(ou)f(can)i(alw)n(a)n(ys)d +(use)j(lds/sts)e(to)i(access)e(them.)46 b(But,)32 b(this)f(will)f(not)h +(w)n(ork)e(if)i Fm(__SFR_-)515 4585 y(OFFSET)h Fq(!=)j(0x20,)h(so)e +(use)i(a)e(di\033eren)n(t)i(macro)d(\(de\034ned)j(only)f(if)h +Fm(__SFR_OFFSET)30 b Fq(==)515 4684 y(0x20\))c(for)h(safet)n(y:)797 +4893 y Fj(sts)177 b(_SFR_ADDR\(SPMCR\),)40 b(r24)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 278 294 +TeXDict begin 278 293 bop 515 203 a Fs(22.21)94 b Fo(<)p +Fs(a)m(vr/sfr_defs.h)p Fo(>)p Fs(:)41 b(Sp)s(ecial)31 +b(function)h(registers)552 b(278)p 515 236 2865 4 v 515 +523 a Fq(In)27 b(C)g(programs,)e(all)i(3)g(com)n(binations)f(of)h +Fm(_SFR_ASM_COMPAT)21 b Fq(and)27 b Fm(__SFR_OFFSET)22 +b Fq(are)515 623 y(supp)r(orted)i(-)g(the)h Fm(_SFR_ADDR\(SPMCR)o(\))18 +b Fq(macro)23 b(can)h(b)r(e)h(used)f(to)h(get)f(the)g(address)f(of)i +(the)515 722 y Fm(SPMCR)g Fq(register)h(\(0x57)h(or)f(0x68)g(dep)r +(ending)i(on)f(device\).)515 999 y Fn(22.21)112 b Fd(<)p +Fn(a)m(vr/sfr_defs.h)p Fd(>)p Fn(:)52 b(Sp)s(ecial)38 +b(function)g(registers)515 1200 y Fs(22.21.1)93 b(Detailed)31 +b(Description)515 1400 y Fq(When)e(w)n(orking)e(with)j(micro)r(con)n +(trollers,)d(man)n(y)h(tasks)g(usually)g(consist)h(of)g(con)n(trolling) +515 1500 y(in)n(ternal)j(p)r(eripherals,)i(or)f(external)f(p)r +(eripherals)h(that)h(are)e(connected)h(to)g(the)h(device.)515 +1599 y(The)23 b(en)n(tire)g(IO)g(address)f(space)h(is)g(made)h(a)n(v)-5 +b(ailable)22 b(as)g Fl(memory-mapp)l(e)l(d)28 b(IO)8 +b Fq(,)23 b(i.e.)36 b(it)23 b(can)515 1699 y(b)r(e)29 +b(accessed)e(using)i(all)f(the)h(MCU)g(instructions)g(that)g(are)e +(applicable)h(to)h(normal)f(data)515 1799 y(memory)-7 +b(.)36 b(F)-7 b(or)27 b(most)g(A)-9 b(VR)28 b(devices,)f(the)h(IO)f +(register)f(space)h(is)h(mapp)r(ed)f(in)n(to)h(the)g(data)515 +1898 y(memory)h(address)g(space)h(with)g(an)g(o\033set)h(of)f(0x20)f +(since)h(the)g(b)r(ottom)h(of)f(this)h(space)e(is)515 +1998 y(reserv)n(ed)21 b(for)i(direct)f(access)g(to)h(the)h(MCU)f +(registers.)34 b(\(A)n(ctual)23 b(SRAM)h(is)f(a)n(v)-5 +b(ailable)22 b(only)515 2098 y(b)r(ehind)27 b(the)h(IO)e(register)g +(area,)f(starting)h(at)h(some)f(sp)r(eci\034c)h(address)f(dep)r(ending) +h(on)g(the)515 2197 y(device.\))515 2344 y(F)-7 b(or)31 +b(example)h(the)h(user)f(can)g(access)f(memory-mapp)r(ed)g(IO)h +(registers)f(as)h(if)h(they)f(w)n(ere)515 2444 y(globally)26 +b(de\034ned)i(v)-5 b(ariables)26 b(lik)n(e)h(this:)797 +2638 y Fj(PORTA)37 b(=)e(0x33;)656 2716 y(unsigned)i(char)g(foo)f(=)f +(PINA;)515 2931 y Fq(The)27 b(compiler)g(will)h(c)n(ho)r(ose)e(the)i +(correct)e(instruction)i(sequence)f(to)g(generate)f(based)h(on)515 +3031 y(the)h(address)e(of)h(the)h(register)e(b)r(eing)i(accessed.)515 +3178 y(The)g(adv)-5 b(an)n(tage)28 b(of)g(using)g(the)i(memory-mapp)r +(ed)d(registers)g(in)i(C)g(programs)d(is)j(that)g(it)515 +3277 y(mak)n(es)c(the)i(programs)d(more)h(p)r(ortable)h(to)g(other)g(C) +g(compilers)f(for)h(the)h(A)-9 b(VR)26 b(platform.)515 +3424 y(Note)31 b(that)g(sp)r(ecial)f(care)g(m)n(ust)h(b)r(e)g(tak)n(en) +f(when)h(accessing)e(some)h(of)h(the)g(16-bit)f(timer)515 +3524 y(IO)c(registers)f(where)i(access)f(from)g(b)r(oth)h(the)h(main)f +(program)d(and)j(within)h(an)e(in)n(terrupt)515 3623 +y(con)n(text)g(can)g(happ)r(en.)36 b(See)27 b Fs(Wh)m(y)k(do)f(some)f +(16-bit)h(timer)f(registers)h(sometimes)515 3723 y(get)h(trashed?)37 +b Fq(\(p.)14 b(66\).)506 3929 y Fs(P)m(orting)32 b(programs)g(that)g +(use)g(the)f(deprecated)i(sbi/cbi)d(macros)515 4314 y +Fq(A)n(ccess)36 b(to)g(the)h(A)-9 b(VR)37 b(single)f(bit)i(set)e(and)h +(clear)e(instructions)h(are)g(pro)n(vided)g(via)g(the)515 +4414 y(standard)26 b(C)i(bit)f(manipulation)g(commands.)37 +b(The)27 b(sbi)g(and)h(cbi)f(macros)f(are)g(no)h(longer)515 +4513 y(directly)g(supp)r(orted.)37 b(sbi)27 b(\(sfr,bit\))i(can)e(b)r +(e)h(replaced)e(b)n(y)i(sfr)f Fh(j)p Fq(=)g Fs(_BV\(bit\))h +Fq(\(p.)14 b(279\))27 b(.)515 4660 y(i.e.:)37 b Fs(sbi\(POR)-8 +b(TB,)30 b(PB1\))e Fq(\(p.)14 b(307\);)27 b(is)g(no)n(w)g(POR)-7 +b(TB)28 b Fh(j)p Fq(=)f Fs(_BV\(PB1\))h Fq(\(p.)14 b(279\);)515 +4807 y(This)26 b(actually)g(is)h(more)f(\035exible)g(than)h(ha)n(ving)f +(sbi)g(directly)-7 b(,)27 b(as)f(the)h(optimizer)f(will)h(use)515 +4907 y(a)i(hardw)n(are)e(sbi)i(if)h(appropriate,)e(or)h(a)g +(read/or/write)d(op)r(eration)j(if)g(not)h(appropriate.)515 +5006 y(Y)-7 b(ou)27 b(do)h(not)f(need)h(to)f(k)n(eep)g(trac)n(k)g(of)g +(whic)n(h)h(registers)d(sbi/cbi)j(will)f(op)r(erate)g(on.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 279 295 +TeXDict begin 279 294 bop 515 203 a Fs(22.21)94 b Fo(<)p +Fs(a)m(vr/sfr_defs.h)p Fo(>)p Fs(:)41 b(Sp)s(ecial)31 +b(function)h(registers)552 b(279)p 515 236 2865 4 v 515 +523 a Fq(Lik)n(ewise,)26 b(cbi)i(\(sfr,bit\))g(is)g(no)n(w)f(sfr)g(&=)g +Fh(\030)p Fq(\()p Fs(_BV\(bit\))h Fq(\(p.)14 b(279\)\);)515 +786 y Fs(Mo)s(dules)639 972 y Fk(\210)41 b Fs(A)m(dditional)31 +b(notes)h(from)f Fo(<)p Fs(a)m(vr/sfr_defs.h)p Fo(>)515 +1236 y Fs(Bit)g(manipulation)639 1422 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(_BV)p Fq(\(bit\))h(\(1)f Fo(<<)e +Fq(\(bit\)\))515 1685 y Fs(IO)31 b(register)g(bit)h(manipulation)639 +1871 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(bit_is_set)p +Fq(\(sfr,)f(bit\))h(\(_SFR_BYTE\(sfr\))g(&)f(_BV\(bit\)\))639 +1979 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(bit_is_clear)p +Fq(\(sfr,)g(bit\))g(\(!\(_SFR_BYTE\(sfr\))g(&)g(_BV\(bit\)\)\))639 +2087 y Fk(\210)41 b Fq(#de\034ne)19 b Fs(lo)s(op_un)m(til_bit_is_set)p +Fq(\(sfr,)f(bit\))i(do)e({)g(})h(while)g(\(bit_is_clear\(sfr,)722 +2187 y(bit\)\))639 2295 y Fk(\210)41 b Fq(#de\034ne)49 +b Fs(lo)s(op_un)m(til_bit_is_clear)p Fq(\(sfr,)i(bit\))e(do)f({)g(})f +(while)i(\(bit_is_-)722 2394 y(set\(sfr,)28 b(bit\)\))515 +2657 y Fs(22.21.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +2858 y(22.21.2.1)92 b(#de\034ne)31 b(_BV\(bit\))h(\(1)g +Fo(<<)f Fs(\(bit\)\))550 3067 y Fj(#include)37 b()515 +3297 y Fq(Con)n(v)n(erts)26 b(a)h(bit)h(n)n(um)n(b)r(er)f(in)n(to)g(a)h +(b)n(yte)f(v)-5 b(alue.)506 3509 y Fs(Note:)676 3658 +y Fq(The)23 b(bit)g(shift)g(is)g(p)r(erformed)f(b)n(y)g(the)h(compiler) +f(whic)n(h)g(then)h(inserts)f(the)h(result)f(in)n(to)676 +3758 y(the)i(co)r(de.)35 b(Th)n(us,)24 b(there)f(is)g(no)g(run-time)g +(o)n(v)n(erhead)e(when)i(using)h Fs(_BV\(\))g Fq(\(p.)14 +b(279\).)515 4104 y Fs(22.21.2.2)92 b(#de\034ne)25 b +(bit_is_clear\(sfr,)54 b(bit\))26 b(\(!\(_SFR_BYTE\(sfr\))i(&)e(_-)515 +4204 y(BV\(bit\)\)\))550 4413 y Fj(#include)37 b()515 +4643 y Fq(T)-7 b(est)25 b(whether)f(bit)h Fm(bit)f Fq(in)h(IO)f +(register)g Fm(sfr)f Fq(is)i(clear.)35 b(This)24 b(will)h(return)f +(non-zero)f(if)j(the)515 4742 y(bit)i(is)f(clear,)g(and)g(a)g(0)h(if)g +(the)g(bit)g(is)f(set.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 280 296 +TeXDict begin 280 295 bop 515 203 a Fs(22.22)94 b Fo(<)p +Fs(a)m(vr/sleep.h)p Fo(>)p Fs(:)40 b(P)m(o)m(w)m(er)33 +b(Managemen)m(t)e(and)i(Sleep)e(Mo)s(des)172 b(280)p +515 236 2865 4 v 515 523 a(22.21.2.3)92 b(#de\034ne)49 +b(bit_is_set\(sfr,)106 b(bit\))49 b(\(_SFR_BYTE\(sfr\))h(&)g(_-)515 +623 y(BV\(bit\)\))550 799 y Fj(#include)37 b()515 +996 y Fq(T)-7 b(est)28 b(whether)g(bit)h Fm(bit)e Fq(in)i(IO)f +(register)e Fm(sfr)h Fq(is)i(set.)39 b(This)28 b(will)g(return)g(a)g(0) +g(if)h(the)f(bit)h(is)515 1096 y(clear,)d(and)i(non-zero)e(if)i(the)g +(bit)g(is)f(set.)515 1353 y Fs(22.21.2.4)92 b(#de\034ne)40 +b(lo)s(op_un)m(til_bit_is_clear\(sfr,)85 b(bit\))40 b(do)h({)g(})f +(while)515 1453 y(\(bit_is_set\(sfr,)30 b(bit\)\))550 +1629 y Fj(#include)37 b()515 1826 y Fq(W)-7 +b(ait)28 b(un)n(til)g(bit)g Fm(bit)e Fq(in)i(IO)f(register)f +Fm(sfr)h Fq(is)g(clear.)515 2083 y Fs(22.21.2.5)92 b(#de\034ne)51 +b(lo)s(op_un)m(til_bit_is_set\(sfr,)110 b(bit\))51 b(do)h({)f(})g +(while)515 2183 y(\(bit_is_clear\(sfr,)31 b(bit\)\))550 +2359 y Fj(#include)37 b()515 2556 y Fq(W)-7 +b(ait)28 b(un)n(til)g(bit)g Fm(bit)e Fq(in)i(IO)f(register)f +Fm(sfr)h Fq(is)g(set.)515 2830 y Fn(22.22)112 b Fd(<)p +Fn(a)m(vr/sleep.h)p Fd(>)p Fn(:)146 b(P)m(o)m(w)m(er)84 +b(Managemen)m(t)i(and)g(Sleep)882 2946 y(Mo)s(des)515 +3147 y Fs(22.22.1)93 b(Detailed)31 b(Description)550 +3326 y Fj(#include)37 b()515 3523 y Fq(Use)27 +b(of)g(the)g Fm(SLEEP)e Fq(instruction)i(can)f(allo)n(w)g(an)h +(application)f(to)h(reduce)g(its)g(p)r(o)n(w)n(er)f(com-)515 +3623 y(sumption)39 b(considerably)-7 b(.)70 b(A)-9 b(VR)40 +b(devices)f(can)g(b)r(e)g(put)h(in)n(to)f(di\033eren)n(t)g(sleep)g(mo)r +(des.)515 3723 y(Refer)27 b(to)h(the)g(datasheet)f(for)g(the)h(details) +f(relating)f(to)i(the)g(device)f(y)n(ou)g(are)f(using.)515 +3869 y(There)g(are)g(sev)n(eral)g(macros)f(pro)n(vided)h(in)h(this)h +(header)e(\034le)h(to)g(actually)f(put)i(the)f(device)515 +3969 y(in)n(to)j(sleep)g(mo)r(de.)47 b(The)30 b(simplest)h(w)n(a)n(y)e +(is)i(to)f(optionally)g(set)h(the)g(desired)f(sleep)g(mo)r(de)515 +4069 y(using)21 b Fm(set_sleep_mode\(\))15 b Fq(\(it)23 +b(usually)e(defaults)i(to)e(idle)h(mo)r(de)g(where)g(the)g(CPU)h(is)e +(put)515 4168 y(on)g(sleep)g(but)h(all)f(p)r(eripheral)g(clo)r(c)n(ks)f +(are)h(still)g(running\),)i(and)e(then)h(call)f Fm(sleep_mode\(\))p +Fq(.)515 4268 y(This)j(macro)g(automatically)f(sets)i(the)g(sleep)g +(enable)f(bit,)i(go)r(es)e(to)g(sleep,)i(and)e(clears)g(the)515 +4368 y(sleep)j(enable)g(bit.)515 4514 y(Example:)656 +4691 y Fj(#include)37 b()656 4848 y(...)726 +4927 y(set_sleep_mode\(\);)726 5006 y(sleep_mode\(\);)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 281 297 +TeXDict begin 281 296 bop 515 203 a Fs(22.22)94 b Fo(<)p +Fs(a)m(vr/sleep.h)p Fo(>)p Fs(:)40 b(P)m(o)m(w)m(er)33 +b(Managemen)m(t)e(and)i(Sleep)e(Mo)s(des)172 b(281)p +515 236 2865 4 v 515 523 a Fq(Note)26 b(that)g(unless)g(y)n(our)f(purp) +r(ose)g(is)h(to)g(completely)g(lo)r(c)n(k)f(the)i(CPU)g(\(un)n(til)g(a) +e(hardw)n(are)515 623 y(reset\),)i(in)n(terrupts)g(need)h(to)f(b)r(e)h +(enabled)f(b)r(efore)h(going)e(to)h(sleep.)515 770 y(As)22 +b(the)h Fm(sleep_mode\(\))18 b Fq(macro)j(migh)n(t)h(cause)g(race)f +(conditions)h(in)h(some)f(situations,)h(the)515 869 y(individual)j +(steps)h(of)g(manipulating)f(the)h(sleep)f(enable)h(\(SE\))h(bit,)f +(and)g(actually)f(issuing)515 969 y(the)34 b Fm(SLEEP)e +Fq(instruction,)j(are)e(pro)n(vided)g(in)h(the)g(macros)f +Fm(sleep_enable\(\))k(\()p Fq(p.)15 b Fm(282\))p Fq(,)515 +1068 y Fm(sleep_disable\(\))37 b(\()p Fq(p.)14 b Fm(281\))p +Fq(,)36 b(and)g Fm(sleep_cpu\(\))j(\()p Fq(p.)14 b Fm(281\))p +Fq(.)59 b(This)36 b(also)e(allo)n(ws)h(for)515 1168 y(test-and-sleep)h +(scenarios)g(that)h(tak)n(e)g(care)f(of)h(not)h(missing)f(the)g(in)n +(terrupt)g(that)h(will)515 1268 y(a)n(w)n(ak)n(e)25 b(the)j(device)f +(from)h(sleep.)515 1415 y(Example:)656 1606 y Fj(#include)37 +b()656 1684 y(#include)g()656 +1842 y(...)726 1921 y(set_sleep_mode\(\);)726 2000 +y(cli\(\);)726 2079 y(if)f(\(some_condition\))726 2158 +y({)797 2237 y(sleep_enable\(\);)797 2315 y(sei\(\);)797 +2394 y(sleep_cpu\(\);)797 2473 y(sleep_disable\(\);)726 +2552 y(})726 2631 y(sei\(\);)515 2843 y Fq(This)26 b(sequence)g +(ensures)f(an)h(atomic)g(test)g(of)g Fm(some_condition)21 +b Fq(with)26 b(in)n(terrupts)g(b)r(eing)515 2942 y(disabled.)47 +b(If)32 b(the)g(condition)f(is)g(met,)i(sleep)e(mo)r(de)g(will)h(b)r(e) +f(prepared,)g(and)g(the)h Fm(SLEEP)515 3042 y Fq(instruction)41 +b(will)g(b)r(e)h(sc)n(heduled)f(immediately)g(after)g(an)g +Fm(SEI)g Fq(instruction.)77 b(As)42 b(the)515 3142 y(in)n(truction)29 +b(righ)n(t)g(after)g(the)g Fm(SEI)g Fq(is)g(guaran)n(teed)f(to)h(b)r(e) +h(executed)f(b)r(efore)g(an)g(in)n(terrupt)515 3241 y(could)e(trigger,) +f(it)i(is)g(sure)e(the)i(device)g(will)f(really)g(b)r(e)h(put)g(to)g +(sleep.)515 3501 y Fs(F)-8 b(unctions)639 3684 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(sleep_enable)f Fq(\(v)n(oid\))639 +3788 y Fk(\210)41 b Fq(v)n(oid)27 b Fs(sleep_disable)f +Fq(\(v)n(oid\))639 3893 y Fk(\210)41 b Fq(v)n(oid)27 +b Fs(sleep_cpu)g Fq(\(v)n(oid\))515 4152 y Fs(22.22.2)93 +b(F)-8 b(unction)32 b(Do)s(cumen)m(tation)515 4353 y(22.22.2.1)92 +b(v)m(oid)32 b(sleep_cpu)f(\(v)m(oid\))515 4500 y Fq(Put)g(the)g +(device)f(in)n(to)g(sleep)h(mo)r(de.)45 b(The)30 b(SE)i(bit)f(m)n(ust)f +(b)r(e)h(set)f(b)r(eforehand,)h(and)f(it)h(is)515 4599 +y(recommended)c(to)g(clear)g(it)h(afterw)n(ards.)515 +4859 y Fs(22.22.2.2)92 b(v)m(oid)32 b(sleep_disable)e(\(v)m(oid\))515 +5006 y Fq(Clear)c(the)i(SE)h(\(sleep)e(enable\))h(bit.)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 282 298 +TeXDict begin 282 297 bop 515 203 a Fs(22.23)94 b Fo(<)p +Fs(a)m(vr/v)m(ersion.h)p Fo(>)p Fs(:)41 b(a)m(vr-lib)s(c)32 +b(v)m(ersion)g(macros)685 b(282)p 515 236 2865 4 v 515 +523 a(22.22.2.3)92 b(v)m(oid)32 b(sleep_enable)e(\(v)m(oid\))515 +670 y Fq(Put)37 b(the)f(device)f(in)h(sleep)g(mo)r(de.)61 +b(Ho)n(w)36 b(the)g(device)f(is)h(brough)n(t)f(out)h(of)f(sleep)h(mo)r +(de)515 770 y(dep)r(ends)23 b(on)g(the)h(sp)r(eci\034c)f(mo)r(de)g +(selected)g(with)h(the)g(set_sleep_mo)r(de\(\))e(function.)36 +b(See)515 869 y(the)28 b(data)f(sheet)g(for)g(y)n(our)g(device)g(for)g +(more)g(details.)515 1016 y(Set)h(the)g(SE)g(\(sleep)g(enable\))f(bit.) +515 1296 y Fn(22.23)112 b Fd(<)p Fn(a)m(vr/v)m(ersion.h)p +Fd(>)p Fn(:)51 b(a)m(vr-lib)s(c)38 b(v)m(ersion)g(macros)515 +1496 y Fs(22.23.1)93 b(Detailed)31 b(Description)550 +1676 y Fj(#include)37 b()515 1906 y Fq(This)e(header)g +(\034le)h(de\034nes)f(macros)f(that)i(con)n(tain)f(v)n(ersion)f(n)n(um) +n(b)r(ers)h(and)h(strings)e(de-)515 2005 y(scribing)26 +b(the)i(curren)n(t)f(v)n(ersion)f(of)h(a)n(vr-lib)r(c.)515 +2152 y(The)22 b(v)n(ersion)f(n)n(um)n(b)r(er)h(itself)g(basically)f +(consists)h(of)g(three)g(pieces)g(that)g(are)g(separated)e(b)n(y)515 +2252 y(a)26 b(dot:)37 b(the)27 b(ma)5 b(jor)25 b(n)n(um)n(b)r(er,)i +(the)g(minor)f(n)n(um)n(b)r(er,)h(and)f(the)h(revision)f(n)n(um)n(b)r +(er.)36 b(F)-7 b(or)26 b(de-)515 2351 y(v)n(elopmen)n(t)d(v)n(ersions)g +(\(whic)n(h)h(use)g(an)g(o)r(dd)g(minor)g(n)n(um)n(b)r(er\),)h(the)f +(string)g(represen)n(tation)515 2451 y(additionally)j(gets)g(the)h +(date)f(co)r(de)g(\(YYYYMMDD\))k(app)r(ended.)515 2598 +y(This)j(\034le)g(will)g(also)f(b)r(e)i(included)g(b)n(y)e +Fo(<)p Fm(avr/io.h)40 b(\()p Fq(p.)14 b Fm(366\))p Fo(>)p +Fq(.)55 b(That)34 b(w)n(a)n(y)-7 b(,)35 b(p)r(ortable)515 +2698 y(tests)23 b(can)g(b)r(e)g(implemen)n(ted)h(using)e +Fo(<)p Fm(avr/io.h)40 b(\()p Fq(p.)14 b Fm(366\))p Fo(>)21 +b Fq(that)j(can)e(b)r(e)i(used)f(in)g(co)r(de)515 2797 +y(that)g(w)n(an)n(ts)f(to)h(remain)g(bac)n(kw)n(ards-compatible)d(to)j +(library)f(v)n(ersions)f(prior)h(to)h(the)g(date)515 +2897 y(when)33 b(the)g(library)e(v)n(ersion)h(API)h(had)g(b)r(een)g +(added,)h(as)e(referenced)g(but)i(unde\034ned)f(C)515 +2996 y(prepro)r(cessor)25 b(macros)h(automatically)g(ev)-5 +b(aluate)27 b(to)g(0.)515 3260 y Fs(De\034nes)639 3446 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__A)-11 b(VR_LIBC_VERSION_STRING__) +29 b Fq("1.6.3")639 3554 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__A)-11 b(VR_LIBC_VERSION__)29 b Fq(10603UL)639 +3662 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__A)-11 b(VR_LIBC_D)m(A)j +(TE_STRING__)31 b Fq("20081103")639 3770 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__A)-11 b(VR_LIBC_D)m(A)j(TE_)31 +b Fq(20081103UL)639 3878 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__A)-11 b(VR_LIBC_MAJOR__)30 b Fq(1)639 3986 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__A)-11 b(VR_LIBC_MINOR__)29 b +Fq(6)639 4094 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__A)-11 +b(VR_LIBC_REVISION__)29 b Fq(3)515 4357 y Fs(22.23.2)93 +b(De\034ne)31 b(Do)s(cumen)m(tation)515 4557 y(22.23.2.1)92 +b(#de\034ne)31 b(__A)-11 b(VR_LIBC_D)m(A)j(TE_)35 b(20081103UL)515 +4704 y Fq(Numerical)27 b(represen)n(tation)f(of)h(the)h(release)e +(date.)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 283 299 +TeXDict begin 283 298 bop 515 203 a Fs(22.24)94 b Fo(<)p +Fs(a)m(vr/wdt.h)p Fo(>)p Fs(:)41 b(W)-8 b(atc)m(hdog)33 +b(timer)e(handling)725 b(283)p 515 236 2865 4 v 515 523 +a(22.23.2.2)92 b(#de\034ne)448 b(__A)-11 b(VR_LIBC_D)m(A)j +(TE_STRING__-)515 623 y("20081103")515 770 y Fq(String)27 +b(literal)g(represen)n(tation)f(of)h(the)h(release)e(date.)515 +1033 y Fs(22.23.2.3)92 b(#de\034ne)31 b(__A)-11 b(VR_LIBC_MAJOR__)33 +b(1)515 1179 y Fq(Library)26 b(ma)5 b(jor)26 b(v)n(ersion)g(n)n(um)n(b) +r(er.)515 1442 y Fs(22.23.2.4)92 b(#de\034ne)31 b(__A)-11 +b(VR_LIBC_MINOR__)33 b(6)515 1589 y Fq(Library)26 b(minor)h(v)n(ersion) +f(n)n(um)n(b)r(er.)515 1852 y Fs(22.23.2.5)92 b(#de\034ne)31 +b(__A)-11 b(VR_LIBC_REVISION__)33 b(3)515 1999 y Fq(Library)26 +b(revision)g(n)n(um)n(b)r(er.)515 2262 y Fs(22.23.2.6)92 +b(#de\034ne)31 b(__A)-11 b(VR_LIBC_VERSION__)33 b(10603UL)515 +2409 y Fq(Numerical)27 b(represen)n(tation)f(of)h(the)h(curren)n(t)f +(library)f(v)n(ersion.)515 2556 y(In)j(the)g(n)n(umerical)g(represen)n +(tation,)e(the)j(ma)5 b(jor)27 b(n)n(um)n(b)r(er)i(is)g(m)n(ultiplied)h +(b)n(y)f(10000,)e(the)515 2656 y(minor)36 b(n)n(um)n(b)r(er)h(b)n(y)g +(100,)h(and)f(all)g(three)g(parts)f(are)g(then)i(added.)65 +b(It)38 b(is)f(in)n(ten)n(ted)g(to)515 2755 y(pro)n(vide)30 +b(a)i(monotonically)e(increasing)h(n)n(umerical)g(v)-5 +b(alue)31 b(that)h(can)g(easily)f(b)r(e)h(used)g(in)515 +2855 y(n)n(umerical)26 b(c)n(hec)n(ks.)515 3118 y Fs(22.23.2.7)92 +b(#de\034ne)270 b(__A)-11 b(VR_LIBC_VERSION_STRING__-)515 +3217 y("1.6.3")515 3364 y Fq(String)27 b(literal)g(represen)n(tation)f +(of)h(the)h(curren)n(t)f(library)f(v)n(ersion.)515 3644 +y Fn(22.24)112 b Fd(<)p Fn(a)m(vr/wdt.h)p Fd(>)p Fn(:)50 +b(W)-9 b(atc)m(hdog)37 b(timer)g(handling)515 3844 y +Fs(22.24.1)93 b(Detailed)31 b(Description)550 4024 y +Fj(#include)37 b()515 4254 y Fq(This)22 b(header)g(\034le)g +(declares)f(the)i(in)n(terface)f(to)g(some)g(inline)h(macros)d +(handling)i(the)h(w)n(atc)n(h-)515 4354 y(dog)e(timer)g(presen)n(t)g +(in)h(man)n(y)g(A)-9 b(VR)22 b(devices.)34 b(In)22 b(order)e(to)i(prev) +n(en)n(t)f(the)h(w)n(atc)n(hdog)e(timer)515 4453 y(con\034guration)f +(from)h(b)r(eing)h(acciden)n(tally)e(altered)h(b)n(y)g(a)h(crashing)e +(application,)i(a)f(sp)r(ecial)515 4553 y(timed)25 b(sequence)e(is)h +(required)f(in)i(order)e(to)h(c)n(hange)f(it.)36 b(The)24 +b(macros)f(within)i(this)f(header)515 4653 y(\034le)29 +b(handle)h(the)g(required)e(sequence)h(automatically)f(b)r(efore)h(c)n +(hanging)f(an)n(y)h(v)-5 b(alue.)42 b(In-)515 4752 y(terrupts)27 +b(will)h(b)r(e)g(disabled)f(during)g(the)h(manipulation.)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 284 300 +TeXDict begin 284 299 bop 515 203 a Fs(22.24)94 b Fo(<)p +Fs(a)m(vr/wdt.h)p Fo(>)p Fs(:)41 b(W)-8 b(atc)m(hdog)33 +b(timer)e(handling)725 b(284)p 515 236 2865 4 v 506 497 +a(Note:)676 647 y Fq(Dep)r(ending)37 b(on)e(the)h(fuse)h +(con\034guration)d(of)i(the)g(particular)e(device,)k(further)e(re-)676 +746 y(strictions)29 b(migh)n(t)h(apply)-7 b(,)31 b(in)f(particular)f +(it)i(migh)n(t)e(b)r(e)i(disallo)n(w)n(ed)d(to)i(turn)h(o\033)f(the)676 +846 y(w)n(atc)n(hdog)c(timer.)515 1076 y(Note)20 b(that)h(for)f(new)n +(er)g(devices)g(\(A)-7 b(Tmega88)19 b(and)i(new)n(er,)g(e\033ectiv)n +(ely)f(an)n(y)g(A)-9 b(VR)21 b(that)g(has)515 1175 y(the)26 +b(option)f(to)g(also)f(generate)h(in)n(terrupts\),)g(the)h(w)n(atc)n +(hdog)e(timer)h(remains)g(activ)n(e)g(ev)n(en)515 1275 +y(after)31 b(a)g(system)g(reset)g(\(except)h(a)f(p)r(o)n(w)n(er-on)f +(condition\),)i(using)g(the)f(fastest)h(prescaler)515 +1375 y(v)-5 b(alue)29 b(\(appro)n(ximately)f(15)h(ms\).)44 +b(It)30 b(is)g(therefore)f(required)f(to)i(turn)g(o\033)g(the)g(w)n +(atc)n(hdog)515 1474 y(early)k(during)g(program)f(startup,)j(the)g +(datasheet)e(recommends)g(a)h(sequence)f(lik)n(e)h(the)515 +1574 y(follo)n(wing:)656 1783 y Fj(#include)i()656 +1861 y(#include)g()656 2019 y(uint8_t)g(mcusr_mirror)i +(__attribute__)f(\(\(section)g(\(".noinit"\)\)\);)656 +2177 y(void)e(get_mcusr\(void\))k(\\)726 2256 y +(__attribute__\(\(naked\)\))i(\\)726 2335 y(__attribute__\(\(section\() +q(".i)q(nit3)q("\)\)\))q(;)656 2414 y(void)36 b(get_mcusr\(void\))656 +2492 y({)726 2571 y(mcusr_mirror)j(=)d(MCUSR;)726 2650 +y(MCUSR)h(=)f(0;)726 2729 y(wdt_disable\(\);)656 2808 +y(})515 3038 y Fq(Sa)n(ving)26 b(the)i(v)-5 b(alue)28 +b(of)g(MCUSR)g(in)g Fm(mcusr_mirror)23 b Fq(is)k(only)h(needed)f(if)i +(the)f(application)515 3137 y(later)21 b(w)n(an)n(ts)h(to)g(examine)g +(the)h(reset)f(source,)g(but)h(in)g(particular,)f(clearing)f(the)i(w)n +(atc)n(hdog)515 3237 y(reset)i(\035ag)f(b)r(efore)h(disabling)g(the)h +(w)n(atc)n(hdog)e(is)h(required,)g(according)f(to)h(the)h(datasheet.) +515 3500 y Fs(De\034nes)639 3686 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(wdt_reset)p Fq(\(\))g(__asm__)e(__v)n(olatile__)e(\("wdr"\))639 +3794 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(wdt_enable)p +Fq(\(v)-5 b(alue\))639 3902 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(wdt_disable)p Fq(\(\))639 4010 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_15MS)f Fq(0)639 4118 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_30MS)f Fq(1)639 4226 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_60MS)f Fq(2)639 4333 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_120MS)f Fq(3)639 4441 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_250MS)f Fq(4)639 4549 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_500MS)f Fq(5)639 4657 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_1S)g Fq(6)639 4765 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_2S)g Fq(7)639 4873 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_4S)g Fq(8)639 4981 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(WDTO_8S)g Fq(9)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 285 301 +TeXDict begin 285 300 bop 515 203 a Fs(22.24)94 b Fo(<)p +Fs(a)m(vr/wdt.h)p Fo(>)p Fs(:)41 b(W)-8 b(atc)m(hdog)33 +b(timer)e(handling)725 b(285)p 515 236 2865 4 v 515 523 +a(22.24.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +724 y(22.24.2.1)92 b(#de\034ne)31 b(wdt_disable\(\))515 +870 y(V)-8 b(alue:)515 1080 y Fj(__asm__)37 b(__volatile__)i(\()70 +b(\\)656 1158 y("in)36 b(__tmp_reg__,)j(__SREG__")e("\\n\\t")g(\\)691 +1237 y("cli")g("\\n\\t")g(\\)656 1316 y("out)f(\0450,)g(\0451")g +("\\n\\t")h(\\)656 1395 y("out)f(\0450,)g(__zero_reg__")j("\\n\\t")e +(\\)656 1474 y("out)f(__SREG__,__tmp_reg__")41 b("\\n\\t")c(\\)656 +1553 y(:)e(/*)h(no)g(outputs)h(*/)f(\\)656 1632 y(:)f("I")h +(\(_SFR_IO_ADDR\(_WD_CONT)q(ROL_)q(REG\))q(\),)42 b(\\)656 +1710 y("r")36 b(\(\(uint8_t\)\(_BV\(_WD_CHANG)q(E_BI)q(T\))41 +b(|)36 b(_BV\(WDE\)\)\))i(\\)656 1789 y(:)d("r0")i(\\)515 +1868 y(\))515 2098 y Fq(Disable)31 b(the)h(w)n(atc)n(hdog)e(timer,)i +(if)g(p)r(ossible.)48 b(This)32 b(attempts)g(to)f(turn)h(o\033)f(the)h +(Enable)515 2198 y(bit)c(in)g(the)g(w)n(atc)n(hdog)e(con)n(trol)g +(register.)35 b(See)28 b(the)g(datasheet)f(for)g(details.)515 +2461 y Fs(22.24.2.2)92 b(#de\034ne)31 b(wdt_enable\(v)-5 +b(alue\))515 2608 y(V)d(alue:)515 2817 y Fj(__asm__)37 +b(__volatile__)i(\()70 b(\\)797 2896 y("in)36 b(__tmp_reg__,__SREG__") +41 b("\\n\\t")143 b(\\)797 2975 y("cli")37 b("\\n\\t")142 +b(\\)797 3053 y("wdr")37 b("\\n\\t")142 b(\\)797 3132 +y("out)36 b(\0450,\0451")h("\\n\\t")72 b(\\)797 3211 +y("out)36 b(__SREG__,__tmp_reg__")41 b("\\n\\t")108 b(\\)797 +3290 y("out)36 b(\0450,\0452")h(\\)797 3369 y(:)e(/*)h(no)g(outputs)h +(*/)71 b(\\)797 3448 y(:)35 b("I")i(\(_SFR_IO_ADDR\(_WD_CONTROL_)q(REG) +q(\)\),)42 b(\\)797 3527 y("r")36 b(\(_BV\(_WD_CHANGE_BIT\))41 +b(|)35 b(_BV\(WDE\)\),)109 b(\\)797 3605 y("r")36 b(\(\(uint8_t\))i +(\(\(value)f(&)f(0x08)g(?)g(_WD_PS3_MASK)i(:)e(0x00\))h(|)e(\\)938 +3684 y(_BV\(WDE\))j(|)d(\(value)i(&)f(0x07\)\))g(\))g(\\)797 +3763 y(:)f("r0")72 b(\\)656 3842 y(\))515 4072 y Fq(Enable)29 +b(the)g(w)n(atc)n(hdog)e(timer,)i(con\034guring)e(it)i(for)f(expiry)g +(after)g Fm(timeout)e Fq(\(whic)n(h)j(is)f(a)515 4172 +y(com)n(bination)c(of)g(the)h Fm(WDP0)e Fq(through)h +Fm(WDP2)f Fq(bits)i(to)g(write)f(in)n(to)h(the)g Fm(WDTCR)e +Fq(register;)h(F)-7 b(or)515 4271 y(those)29 b(devices)g(that)h(ha)n(v) +n(e)f(a)g Fm(WDTCSR)e Fq(register,)i(it)h(uses)f(the)h(com)n(bination)f +(of)h(the)g Fm(WDP0)515 4371 y Fq(through)d Fm(WDP3)e +Fq(bits\).)515 4518 y(See)i(also)g(the)h(sym)n(b)r(olic)f(constan)n(ts) +f Fm(WDTO_15MS)e Fq(et)k(al.)515 4781 y Fs(22.24.2.3)92 +b(#de\034ne)43 b(wdt_reset\(\))i(__asm__)g(__v)m(olatile__)f(\("wdr"\)) +p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 286 302 +TeXDict begin 286 301 bop 515 203 a Fs(22.24)94 b Fo(<)p +Fs(a)m(vr/wdt.h)p Fo(>)p Fs(:)41 b(W)-8 b(atc)m(hdog)33 +b(timer)e(handling)725 b(286)p 515 236 2865 4 v 515 523 +a Fq(Reset)29 b(the)h(w)n(atc)n(hdog)e(timer.)42 b(When)30 +b(the)g(w)n(atc)n(hdog)d(timer)j(is)f(enabled,)h(a)f(call)g(to)g(this) +515 623 y(instruction)f(is)g(required)f(b)r(efore)h(the)h(timer)f +(expires,)g(otherwise)f(a)h(w)n(atc)n(hdog-initiated)515 +722 y(device)f(reset)g(will)h(o)r(ccur.)515 985 y Fs(22.24.2.4)92 +b(#de\034ne)31 b(WDTO_120MS)g(3)515 1132 y Fq(See)c Fm(WDT0_15MS)515 +1395 y Fs(22.24.2.5)92 b(#de\034ne)31 b(WDTO_15MS)g(0)515 +1542 y Fq(Sym)n(b)r(olic)20 b(constan)n(ts)f(for)g(the)i(w)n(atc)n +(hdog)d(timeout.)35 b(Since)20 b(the)g(w)n(atc)n(hdog)f(timer)h(is)g +(based)515 1642 y(on)32 b(a)g(free-running)f(R)n(C)h(oscillator,)g(the) +g(times)h(are)e(appro)n(ximate)f(only)i(and)g(apply)g(to)515 +1741 y(a)d(supply)h(v)n(oltage)e(of)h(5)g(V.)h(A)n(t)g(lo)n(w)n(er)e +(supply)i(v)n(oltages,)e(the)i(times)g(will)g(increase.)42 +b(F)-7 b(or)515 1841 y(older)30 b(devices,)i(the)g(times)g(will)f(b)r +(e)h(as)f(large)f(as)h(three)g(times)h(when)f(op)r(erating)g(at)g(V)-7 +b(cc)515 1941 y(=)29 b(3)g(V,)h(while)g(the)g(new)n(er)e(devices)h +(\(e.)43 b(g.)g(A)-7 b(Tmega128,)28 b(A)-7 b(Tmega8\))29 +b(only)g(exp)r(erience)515 2040 y(a)e(negligible)g(c)n(hange.)515 +2187 y(P)n(ossible)f(timeout)h(v)-5 b(alues)27 b(are:)35 +b(15)26 b(ms,)i(30)e(ms,)h(60)f(ms,)h(120)e(ms,)i(250)f(ms,)h(500)f +(ms,)h(1)f(s,)515 2287 y(2)k(s.)46 b(\(Some)30 b(devices)g(also)g(allo) +n(w)f(for)h(4)g(s)h(and)f(8)g(s.\))46 b(Sym)n(b)r(olic)30 +b(constan)n(ts)g(are)f(formed)515 2386 y(b)n(y)e(the)h(pre\034x)f +Fm(WDTO_)p Fq(,)f(follo)n(w)n(ed)g(b)n(y)h(the)h(time.)515 +2533 y(Example)f(that)h(w)n(ould)f(select)h(a)f(w)n(atc)n(hdog)f(timer) +h(expiry)g(of)h(appro)n(ximately)d(500)i(ms:)621 2742 +y Fj(wdt_enable\(WDTO_500MS\);)515 3088 y Fs(22.24.2.6)92 +b(#de\034ne)31 b(WDTO_1S)h(6)515 3235 y Fq(See)27 b Fm(WDT0_15MS)515 +3498 y Fs(22.24.2.7)92 b(#de\034ne)31 b(WDTO_250MS)g(4)515 +3645 y Fq(See)c Fm(WDT0_15MS)515 3908 y Fs(22.24.2.8)92 +b(#de\034ne)31 b(WDTO_2S)h(7)515 4055 y Fq(See)27 b Fm(WDT0_15MS)515 +4318 y Fs(22.24.2.9)92 b(#de\034ne)31 b(WDTO_30MS)g(1)515 +4465 y Fq(See)c Fm(WDT0_15MS)515 4728 y Fs(22.24.2.10)92 +b(#de\034ne)31 b(WDTO_4S)h(8)515 4875 y Fq(See)42 b Fm(WDT0_15MS)d +Fq(Note:)68 b(This)42 b(is)h(only)f(a)n(v)-5 b(ailable)41 +b(on)i(the)g(A)-7 b(Ttin)n(y2313,)45 b(A)-7 b(Ttin)n(y24,)515 +4974 y(A)g(Ttin)n(y44,)38 b(A)-7 b(Ttin)n(y84,)37 b(A)-7 +b(Ttin)n(y25,)38 b(A)-7 b(Ttin)n(y45,)38 b(A)-7 b(Ttin)n(y85,)38 +b(A)-7 b(Ttin)n(y261,)37 b(A)-7 b(Ttin)n(y461,)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 287 303 +TeXDict begin 287 302 bop 515 195 a Fs(22.25)94 b Fo(<)p +Fs(util/atomic.h)p Fo(>)29 b Fs(A)m(tomically)i(and)h(Non-A)m +(tomically)f(Executed)515 295 y(Co)s(de)g(Blo)s(c)m(ks)2200 +b(287)p 515 328 2865 4 v 515 523 a Fq(A)-7 b(Ttin)n(y861,)53 +b(A)-7 b(Tmega48,)52 b(A)-7 b(Tmega88,)53 b(A)-7 b(Tmega168,)52 +b(A)-7 b(Tmega48P)g(,)48 b(A)-7 b(Tmega88P)g(,)515 623 +y(A)g(Tmega168P)g(,)41 b(A)-7 b(Tmega328P)g(,)41 b(A)-7 +b(Tmega164P)g(,)42 b(A)-7 b(Tmega324P)g(,)41 b(A)-7 b(Tmega644P)g(,)41 +b(A)-7 b(T-)515 722 y(mega644,)18 b(A)-7 b(Tmega640,)18 +b(A)-7 b(Tmega1280,)18 b(A)-7 b(Tmega1281,)18 b(A)-7 +b(Tmega2560,)18 b(A)-7 b(Tmega2561,)515 822 y(A)g(Tmega8HV)e(A,)34 +b(A)-7 b(Tmega16HV)e(A,)34 b(A)-7 b(Tmega32HVB,)33 b(A)-7 +b(Tmega406,)35 b(A)-7 b(Tmega1284P)g(,)515 922 y(A)g(T90PWM1,)88 +b(A)-7 b(T90PWM2,)89 b(A)-7 b(T90PWM2B,)76 b(A)-7 b(T90PWM3,)88 +b(A)-7 b(T90PWM3B,)515 1021 y(A)g(T90PWM216,)66 b(A)-7 +b(T90PWM316)58 b(A)-7 b(T90USB82,)66 b(A)-7 b(T90USB162,)66 +b(A)-7 b(T90USB646,)515 1121 y(A)g(T90USB647,)25 b(A)-7 +b(T90USB1286,)26 b(A)-7 b(T90USB1287,)25 b(A)-7 b(Ttin)n(y48,)27 +b(A)-7 b(Ttin)n(y88.)515 1384 y Fs(22.24.2.11)92 b(#de\034ne)31 +b(WDTO_500MS)g(5)515 1531 y Fq(See)c Fm(WDT0_15MS)515 +1794 y Fs(22.24.2.12)92 b(#de\034ne)31 b(WDTO_60MS)g(2)515 +1941 y Fm(WDT0_15MS)515 2204 y Fs(22.24.2.13)92 b(#de\034ne)31 +b(WDTO_8S)h(9)515 2350 y Fq(See)42 b Fm(WDT0_15MS)d Fq(Note:)68 +b(This)42 b(is)h(only)f(a)n(v)-5 b(ailable)41 b(on)i(the)g(A)-7 +b(Ttin)n(y2313,)45 b(A)-7 b(Ttin)n(y24,)515 2450 y(A)g(Ttin)n(y44,)38 +b(A)-7 b(Ttin)n(y84,)37 b(A)-7 b(Ttin)n(y25,)38 b(A)-7 +b(Ttin)n(y45,)38 b(A)-7 b(Ttin)n(y85,)38 b(A)-7 b(Ttin)n(y261,)37 +b(A)-7 b(Ttin)n(y461,)515 2550 y(A)g(Ttin)n(y861,)53 +b(A)-7 b(Tmega48,)52 b(A)-7 b(Tmega88,)53 b(A)-7 b(Tmega168,)52 +b(A)-7 b(Tmega48P)g(,)48 b(A)-7 b(Tmega88P)g(,)515 2649 +y(A)g(Tmega168P)g(,)41 b(A)-7 b(Tmega328P)g(,)41 b(A)-7 +b(Tmega164P)g(,)42 b(A)-7 b(Tmega324P)g(,)41 b(A)-7 b(Tmega644P)g(,)41 +b(A)-7 b(T-)515 2749 y(mega644,)18 b(A)-7 b(Tmega640,)18 +b(A)-7 b(Tmega1280,)18 b(A)-7 b(Tmega1281,)18 b(A)-7 +b(Tmega2560,)18 b(A)-7 b(Tmega2561,)515 2849 y(A)g(Tmega8HV)e(A,)34 +b(A)-7 b(Tmega16HV)e(A,)34 b(A)-7 b(Tmega32HVB,)33 b(A)-7 +b(Tmega406,)35 b(A)-7 b(Tmega1284P)g(,)515 2948 y(A)g(T90PWM1,)88 +b(A)-7 b(T90PWM2,)89 b(A)-7 b(T90PWM2B,)76 b(A)-7 b(T90PWM3,)88 +b(A)-7 b(T90PWM3B,)515 3048 y(A)g(T90PWM216,)66 b(A)-7 +b(T90PWM316)58 b(A)-7 b(T90USB82,)66 b(A)-7 b(T90USB162,)66 +b(A)-7 b(T90USB646,)515 3147 y(A)g(T90USB647,)25 b(A)-7 +b(T90USB1286,)26 b(A)-7 b(T90USB1287,)25 b(A)-7 b(Ttin)n(y48,)27 +b(A)-7 b(Ttin)n(y88.)515 3427 y Fn(22.25)112 b Fd(<)p +Fn(util/atomic.h)p Fd(>)72 b Fn(A)m(tomically)g(and)g(Non-A)m +(tomically)882 3543 y(Executed)37 b(Co)s(de)h(Blo)s(c)m(ks)515 +3744 y Fs(22.25.1)93 b(Detailed)31 b(Description)656 +3924 y Fj(#include)37 b()506 4125 y Fs(Note:)676 +4274 y Fq(The)25 b(macros)e(in)i(this)h(header)d(\034le)i(require)f +(the)h(ISO/IEC)g(9899:1999)c(\("ISO)j(C99"\))676 4374 +y(feature)i(of)h(for)f(lo)r(op)g(v)-5 b(ariables)25 b(that)i(are)e +(declared)h(inside)h(the)g(for)f(lo)r(op)g(itself.)37 +b(F)-7 b(or)676 4474 y(that)33 b(reason,)g(this)g(header)f(\034le)h +(can)g(only)f(b)r(e)i(used)f(if)g(the)g(standard)f(lev)n(el)h(of)g(the) +676 4573 y(compiler)27 b(\(option)g(\025std=\))h(is)f(set)h(to)f +(either)h Fm(c99)e Fq(or)h Fm(gnu99)p Fq(.)515 4803 y(The)h(macros)f +(in)i(this)g(header)e(\034le)i(deal)f(with)h(co)r(de)f(blo)r(c)n(ks)g +(that)g(are)g(guaran)n(teed)e(to)j(b)r(e)515 4903 y(excuted)34 +b(A)n(tomically)f(or)g(Non-A)n(tmomically)-7 b(.)56 b(The)34 +b(term)g("A)n(tomic")f(in)h(this)h(con)n(text)515 5002 +y(refers)26 b(to)i(the)g(unabilit)n(y)f(of)h(the)g(resp)r(ectiv)n(e)e +(co)r(de)i(to)f(b)r(e)h(in)n(terrupted.)p 515 5179 V +515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 288 304 +TeXDict begin 288 303 bop 515 195 a Fs(22.25)94 b Fo(<)p +Fs(util/atomic.h)p Fo(>)29 b Fs(A)m(tomically)i(and)h(Non-A)m +(tomically)f(Executed)515 295 y(Co)s(de)g(Blo)s(c)m(ks)2200 +b(288)p 515 328 2865 4 v 515 523 a Fq(These)18 b(macros)f(op)r(erate)h +(via)h(automatic)f(manipulation)g(of)h(the)g(Global)g(In)n(terrupt)f +(Status)515 623 y(\(I\))26 b(bit)g(of)g(the)g(SREG)g(register.)35 +b(Exit)26 b(paths)g(from)f(b)r(oth)h(blo)r(c)n(k)f(t)n(yp)r(es)g(are)g +(all)g(managed)515 722 y(automatically)32 b(without)i(the)g(need)g(for) +f(sp)r(ecial)g(considerations,)g(i.)56 b(e.)e(the)34 +b(in)n(terrupt)515 822 y(status)20 b(will)g(b)r(e)h(restored)e(to)h +(the)h(same)e(v)-5 b(alue)20 b(it)h(has)f(b)r(een)g(when)h(en)n(tering) +e(the)i(resp)r(ectiv)n(e)515 922 y(blo)r(c)n(k.)515 1068 +y(A)37 b(t)n(ypical)f(example)g(that)h(requires)e(atomic)h(access)g(is) +g(a)g(16)g(\(or)g(more\))g(bit)h(v)-5 b(ariable)515 1168 +y(that)33 b(is)g(shared)f(b)r(et)n(w)n(een)h(the)h(main)f(execution)g +(path)g(and)g(an)g(ISR.)h(While)f(declaring)515 1268 +y(suc)n(h)c(a)g(v)-5 b(ariable)29 b(as)g(v)n(olatile)f(ensures)h(that)h +(the)g(compiler)f(will)g(not)h(optimize)g(accesses)515 +1367 y(to)i(it)h(a)n(w)n(a)n(y)-7 b(,)32 b(it)h(do)r(es)f(not)h(guaran) +n(tee)e(atomic)h(access)f(to)i(it.)52 b(Assuming)32 b(the)h(follo)n +(wing)515 1467 y(example:)515 1668 y Fj(#include)k()515 +1747 y(#include)g()515 1826 y(#include)g() +515 1983 y(volatile)g(uint16_t)h(ctr;)515 2141 y +(ISR\(TIMER1_OVF_vect\))515 2220 y({)585 2299 y(ctr--;)515 +2378 y(})515 2535 y(...)515 2614 y(int)515 2693 y(main\(void\))515 +2772 y({)621 2851 y(...)621 2930 y(ctr)e(=)f(0x200;)621 +3009 y(start_timer\(\);)621 3088 y(while)h(\(ctr)h(!=)e(0\))691 +3166 y(//)h(wait)762 3245 y(;)621 3324 y(...)515 3403 +y(})515 3625 y Fq(There)k(is)g(a)h(c)n(hance)f(where)g(the)h(main)f +(con)n(text)h(will)g(exit)f(its)h(w)n(ait)g(lo)r(op)f(when)h(the)515 +3724 y(v)-5 b(ariable)31 b Fm(ctr)g Fq(just)i(reac)n(hed)e(the)i(v)-5 +b(alue)32 b(0xFF.)g(This)g(happ)r(ens)g(b)r(ecause)g(the)h(compiler)515 +3824 y(cannot)38 b(nativ)n(ely)g(access)g(a)h(16-bit)f(v)-5 +b(ariable)38 b(atomically)g(in)h(an)g(8-bit)f(CPU.)i(So)f(the)515 +3924 y(v)-5 b(ariable)35 b(is)h(for)g(example)f(at)h(0x100,)h(the)f +(compiler)g(then)g(tests)h(the)f(lo)n(w)g(b)n(yte)g(for)f(0,)515 +4023 y(whic)n(h)d(succeeds.)52 b(It)33 b(then)g(pro)r(ceeds)e(to)i +(test)g(the)g(high)f(b)n(yte,)i(but)f(that)g(momen)n(t)g(the)515 +4123 y(ISR)28 b(triggers,)f(and)h(the)h(main)f(con)n(text)g(is)g(in)n +(terrupted.)39 b(The)28 b(ISR)g(will)h(decremen)n(t)f(the)515 +4223 y(v)-5 b(ariable)28 b(from)g(0x100)f(to)i(0xFF,)g(and)g(the)g +(main)g(con)n(text)g(pro)r(ceeds.)40 b(It)29 b(no)n(w)g(tests)g(the)515 +4322 y(high)e(b)n(yte)g(of)g(the)h(v)-5 b(ariable)26 +b(whic)n(h)h(is)g(\(no)n(w\))h(also)e(0,)h(so)f(it)i(concludes)f(the)g +(v)-5 b(ariable)27 b(has)515 4422 y(reac)n(hed)f(0,)h(and)h(terminates) +f(the)h(lo)r(op.)515 4569 y(Using)f(the)h(macros)e(from)h(this)h +(header)f(\034le,)h(the)f(ab)r(o)n(v)n(e)g(co)r(de)g(can)g(b)r(e)h +(rewritten)f(lik)n(e:)515 4770 y Fj(#include)37 b()515 +4848 y(#include)g()515 4927 y(#include)g() +515 5006 y(#include)g()p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 289 305 +TeXDict begin 289 304 bop 515 195 a Fs(22.25)94 b Fo(<)p +Fs(util/atomic.h)p Fo(>)29 b Fs(A)m(tomically)i(and)h(Non-A)m +(tomically)f(Executed)515 295 y(Co)s(de)g(Blo)s(c)m(ks)2200 +b(289)p 515 328 2865 4 v 515 602 a Fj(volatile)37 b(uint16_t)h(ctr;)515 +760 y(ISR\(TIMER1_OVF_vect\))515 839 y({)585 917 y(ctr--;)515 +996 y(})515 1154 y(...)515 1233 y(int)515 1312 y(main\(void\))515 +1391 y({)621 1469 y(...)621 1548 y(ctr)e(=)f(0x200;)621 +1627 y(start_timer\(\);)621 1706 y(sei\(\);)621 1785 +y(uint16_t)i(ctr_copy;)621 1864 y(do)621 1943 y({)691 +2022 y(ATOMIC_BLOCK\(ATOMIC_FORC)q(EON)q(\))691 2100 +y({)762 2179 y(ctr_copy)g(=)f(ctr;)691 2258 y(})621 2337 +y(})621 2416 y(while)g(\(ctr_copy)i(!=)e(0\);)621 2495 +y(...)515 2574 y(})515 2804 y Fq(This)45 b(will)g(install)g(the)h +(appropriate)d(in)n(terrupt)i(protection)g(b)r(efore)f(accessing)g(v)-5 +b(ari-)515 2903 y(able)40 b Fm(ctr)p Fq(,)j(so)d(it)h(is)g(guaran)n +(teed)e(to)i(b)r(e)g(consisten)n(tly)f(tested.)77 b(If)41 +b(the)g(global)f(in)n(ter-)515 3003 y(rupt)h(state)g(w)n(ere)f +(uncertain)h(b)r(efore)g(en)n(tering)g(the)g(A)-7 b(TOMIC_BLOCK,)40 +b(it)h(should)515 3102 y(b)r(e)49 b(executed)g(with)g(the)g(parameter)e +(A)-7 b(TOMIC_RESTOREST)g(A)g(TE)50 b(rather)e(than)515 +3202 y(A)-7 b(TOMIC_F)n(OR)n(CEON.)515 3465 y Fs(De\034nes)639 +3652 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(A)-8 b(TOMIC_BLOCK)p +Fq(\(t)n(yp)r(e\))639 3759 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(NONA)-8 b(TOMIC_BLOCK)p Fq(\(t)n(yp)r(e\))639 3867 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(A)-8 b(TOMIC_RESTOREST)g(A)g(TE)639 +3975 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(A)-8 b(TOMIC_F)m(OR)m(CEON)639 +4083 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(NONA)-8 b(TOMIC_RESTOREST)g(A) +g(TE)639 4191 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(NONA)-8 +b(TOMIC_F)m(OR)m(CEOFF)515 4454 y(22.25.2)93 b(De\034ne)31 +b(Do)s(cumen)m(tation)515 4655 y(22.25.2.1)92 b(#de\034ne)31 +b(A)-8 b(TOMIC_BLOCK\(t)m(yp)s(e\))515 4802 y Fq(Creates)34 +b(a)i(blo)r(c)n(k)f(of)h(co)r(de)f(that)h(is)g(guaran)n(teed)e(to)h(b)r +(e)i(executed)e(atomically)-7 b(.)61 b(Up)r(on)515 4901 +y(en)n(tering)33 b(the)h(blo)r(c)n(k)g(the)g(Global)f(In)n(terrupt)h +(Status)g(\035ag)f(in)h(SREG)h(is)f(disabled,)h(and)515 +5001 y(re-enabled)26 b(up)r(on)i(exiting)f(the)h(blo)r(c)n(k)f(from)h +(an)n(y)e(exit)i(path.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 290 306 +TeXDict begin 290 305 bop 515 195 a Fs(22.25)94 b Fo(<)p +Fs(util/atomic.h)p Fo(>)29 b Fs(A)m(tomically)i(and)h(Non-A)m +(tomically)f(Executed)515 295 y(Co)s(de)g(Blo)s(c)m(ks)2200 +b(290)p 515 328 2865 4 v 515 523 a Fq(T)-7 b(w)n(o)36 +b(p)r(ossible)h(macro)e(parameters)h(are)g(p)r(ermitted,)k(A)-7 +b(TOMIC_RESTOREST)g(A)g(TE)515 623 y(and)27 b(A)-7 b(TOMIC_F)n(OR)n +(CEON.)515 886 y Fs(22.25.2.2)92 b(#de\034ne)31 b(A)-8 +b(TOMIC_F)m(OR)m(CEON)515 1033 y Fq(This)30 b(is)h(a)g(p)r(ossible)f +(parameter)f(for)i(A)-7 b(TOMIC_BLOCK.)29 b(When)i(used,)h(it)f(will)g +(cause)515 1132 y(the)22 b(A)-7 b(TOMIC_BLOCK)21 b(to)h(force)g(the)h +(state)f(of)g(the)h(SREG)g(register)e(on)h(exit,)i(enabling)515 +1232 y(the)30 b(Global)g(In)n(terrupt)f(Status)h(\035ag)g(bit.)45 +b(This)30 b(sa)n(v)n(es)e(on)i(\035ash)f(space)g(as)h(the)g(previous) +515 1331 y(v)-5 b(alue)27 b(of)g(the)h(SREG)h(register)c(do)r(es)i(not) +h(need)f(to)h(b)r(e)g(sa)n(v)n(ed)d(at)j(the)g(start)e(of)i(the)g(blo)r +(c)n(k.)515 1478 y(Care)22 b(should)i(b)r(e)g(tak)n(en)f(that)h(A)-7 +b(TOMIC_F)n(OR)n(CEON)23 b(is)g(only)h(used)f(when)h(it)g(is)g(kno)n +(wn)515 1578 y(that)h(in)n(terrupts)f(are)f(enabled)i(b)r(efore)f(the)h +(blo)r(c)n(k's)f(execution)h(or)e(when)i(the)g(side)g(e\033ects)515 +1678 y(of)33 b(enabling)g(global)g(in)n(terrupts)g(at)g(the)h(blo)r(c)n +(k's)f(completion)g(are)f(kno)n(wn)h(and)h(under-)515 +1777 y(sto)r(o)r(d.)515 2040 y Fs(22.25.2.3)92 b(#de\034ne)31 +b(A)-8 b(TOMIC_RESTOREST)g(A)g(TE)515 2187 y Fq(This)18 +b(is)h(a)f(p)r(ossible)g(parameter)f(for)h(A)-7 b(TOMIC_BLOCK.)17 +b(When)i(used,)h(it)f(will)g(cause)f(the)515 2287 y(A)-7 +b(TOMIC_BLOCK)32 b(to)i(restore)e(the)j(previous)d(state)i(of)g(the)h +(SREG)f(register,)h(sa)n(v)n(ed)515 2386 y(b)r(efore)40 +b(the)h(Global)g(In)n(terrupt)f(Status)h(\035ag)f(bit)h(w)n(as)f +(disabled.)76 b(The)41 b(net)g(e\033ect)g(of)515 2486 +y(this)31 b(is)g(to)g(mak)n(e)g(the)g(A)-7 b(TOMIC_BLOCK's)29 +b(con)n(ten)n(ts)i(guaran)n(teed)e(atomic,)j(without)515 +2586 y(c)n(hanging)h(the)j(state)f(of)g(the)h(Global)e(In)n(terrupt)h +(Status)g(\035ag)g(when)g(execution)g(of)g(the)515 2685 +y(blo)r(c)n(k)27 b(completes.)515 2948 y Fs(22.25.2.4)92 +b(#de\034ne)31 b(NONA)-8 b(TOMIC_BLOCK\(t)m(yp)s(e\))515 +3095 y Fq(Creates)18 b(a)i(blo)r(c)n(k)f(of)h(co)r(de)f(that)h(is)g +(executed)g(non-atomically)-7 b(.)32 b(Up)r(on)21 b(en)n(tering)d(the)j +(blo)r(c)n(k)515 3195 y(the)k(Global)g(In)n(terrupt)g(Status)g(\035ag)g +(in)g(SREG)h(is)f(enabled,)h(and)f(disabled)g(up)r(on)g(exiting)515 +3294 y(the)35 b(blo)r(c)n(k)f(from)g(an)n(y)g(exit)h(path.)58 +b(This)35 b(is)f(useful)i(when)e(nested)h(inside)g(A)-7 +b(TOMIC_-)515 3394 y(BLOCK)18 b(sections,)i(allo)n(wing)d(for)i +(non-atomic)f(execution)h(of)g(small)g(blo)r(c)n(ks)f(of)h(co)r(de)g +(while)515 3494 y(main)n(taining)31 b(the)h(atomic)f(access)f(of)i(the) +g(other)f(sections)g(of)g(the)h(paren)n(t)f(A)-7 b(TOMIC_-)515 +3593 y(BLOCK.)515 3740 y(T)g(w)n(o)110 b(p)r(ossible)g(macro)f +(parameters)g(are)h(p)r(ermitted,)132 b(NONA)-7 b(TOMIC_-)515 +3840 y(RESTOREST)g(A)g(TE)29 b(and)e(NONA)-7 b(TOMIC_F)n(OR)n(CEOFF.) +515 4103 y Fs(22.25.2.5)92 b(#de\034ne)31 b(NONA)-8 b(TOMIC_F)m(OR)m +(CEOFF)515 4250 y Fq(This)34 b(is)g(a)g(p)r(ossible)g(parameter)f(for)h +(NONA)-7 b(TOMIC_BLOCK.)32 b(When)j(used,)h(it)f(will)515 +4349 y(cause)c(the)h(NONA)-7 b(TOMIC_BLOCK)30 b(to)i(force)f(the)h +(state)f(of)h(the)g(SREG)h(register)d(on)515 4449 y(exit,)c(disabling)e +(the)i(Global)f(In)n(terrupt)g(Status)g(\035ag)g(bit.)36 +b(This)26 b(sa)n(v)n(es)d(on)i(\035ash)g(space)g(as)515 +4548 y(the)j(previous)f(v)-5 b(alue)27 b(of)h(the)g(SREG)h(register)d +(do)r(es)i(not)g(need)f(to)h(b)r(e)g(sa)n(v)n(ed)f(at)g(the)i(start)515 +4648 y(of)e(the)h(blo)r(c)n(k.)515 4795 y(Care)33 b(should)h(b)r(e)g +(tak)n(en)f(that)i(NONA)-7 b(TOMIC_F)n(OR)n(CEOFF)33 +b(is)h(only)f(used)h(when)h(it)515 4895 y(is)29 b(kno)n(wn)f(that)h(in) +n(terrupts)g(are)f(disabled)h(b)r(efore)g(the)g(blo)r(c)n(k's)f +(execution)h(or)f(when)i(the)p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 291 307 +TeXDict begin 291 306 bop 515 203 a Fs(22.26)94 b Fo(<)p +Fs(util/crc16.h)p Fo(>)p Fs(:)40 b(CR)m(C)31 b(Computations)893 +b(291)p 515 236 2865 4 v 515 523 a Fq(side)32 b(e\033ects)h(of)f +(disabling)g(global)f(in)n(terrupts)h(at)g(the)h(blo)r(c)n(k's)e +(completion)h(are)g(kno)n(wn)515 623 y(and)27 b(understo)r(o)r(d.)515 +886 y Fs(22.25.2.6)92 b(#de\034ne)31 b(NONA)-8 b(TOMIC_RESTOREST)g(A)g +(TE)515 1033 y Fq(This)34 b(is)g(a)g(p)r(ossible)g(parameter)f(for)h +(NONA)-7 b(TOMIC_BLOCK.)32 b(When)j(used,)h(it)f(will)515 +1132 y(cause)d(the)i(NONA)-7 b(TOMIC_BLOCK)31 b(to)i(restore)e(the)j +(previous)e(state)h(of)g(the)g(SREG)515 1232 y(register,)k(sa)n(v)n(ed) +e(b)r(efore)h(the)h(Global)f(In)n(terrupt)f(Status)i(\035ag)f(bit)h(w)n +(as)e(enabled.)63 b(The)515 1331 y(net)27 b(e\033ect)g(of)g(this)g(is)f +(to)h(mak)n(e)f(the)h(NONA)-7 b(TOMIC_BLOCK's)25 b(con)n(ten)n(ts)h +(guaran)n(teed)515 1431 y(non-atomic,)21 b(without)h(c)n(hanging)e(the) +i(state)f(of)h(the)g(Global)f(In)n(terrupt)g(Status)g(\035ag)g(when)515 +1531 y(execution)27 b(of)g(the)h(blo)r(c)n(k)f(completes.)515 +1810 y Fn(22.26)112 b Fd(<)p Fn(util/crc16.h)p Fd(>)p +Fn(:)50 b(CR)m(C)36 b(Computations)515 2011 y Fs(22.26.1)93 +b(Detailed)31 b(Description)550 2190 y Fj(#include)37 +b()515 2420 y Fq(This)31 b(header)f(\034le)h(pro)n(vides) +e(a)i(optimized)g(inline)h(functions)f(for)f(calculating)g(cyclic)h +(re-)515 2520 y(dundancy)c(c)n(hec)n(ks)g(\(CR)n(C\))g(using)h(common)f +(p)r(olynomials.)506 2736 y Fs(References:)515 3403 y +Fq(See)40 b(the)i(Dallas)e(Semiconductor)g(app)g(note)h(27)f(for)g +(8051)f(assem)n(bler)g(example)h(and)515 3503 y(general)30 +b(CR)n(C)i(optimization)g(suggestions.)48 b(The)32 b(table)g(on)g(the)g +(last)g(page)f(of)h(the)g(app)515 3602 y(note)27 b(is)h(the)g(k)n(ey)e +(to)i(understanding)f(these)g(implemen)n(tations.)515 +4136 y(Jac)n(k)c(Crensha)n(w's)g("Implemen)n(ting)h(CR)n(Cs")g(article) +g(in)h(the)g(Jan)n(uary)d(1992)h(isue)i(of)f Fl(Em-)515 +4235 y(b)l(e)l(dde)l(d)46 b(Systems)d(Pr)l(o)l(gr)l(amming)7 +b Fq(.)65 b(This)37 b(ma)n(y)f(b)r(e)h(di\036cult)g(to)g(\034nd,)i(but) +f(it)f(explains)515 4335 y(CR)n(C's)27 b(in)h(v)n(ery)e(clear)h(and)g +(concise)g(terms.)36 b(W)-7 b(ell)28 b(w)n(orth)f(the)h(e\033ort)f(to)h +(obtain)f(a)g(cop)n(y)-7 b(.)515 4482 y(A)28 b(t)n(ypical)f +(application)g(w)n(ould)g(lo)r(ok)f(lik)n(e:)656 4691 +y Fj(//)36 b(Dallas)h(iButton)g(test)f(vector.)656 4770 +y(uint8_t)h(serno[])g(=)f({)f(0x02,)i(0x1c,)g(0xb8,)f(0x01,)h(0,)f(0,)g +(0,)f(0xa2)i(};)656 4927 y(int)656 5006 y(checkcrc\(void\))p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 292 308 +TeXDict begin 292 307 bop 515 203 a Fs(22.26)94 b Fo(<)p +Fs(util/crc16.h)p Fo(>)p Fs(:)40 b(CR)m(C)31 b(Computations)893 +b(292)p 515 236 2865 4 v 656 523 a Fj({)797 602 y(uint8_t)37 +b(crc)f(=)g(0,)g(i;)797 760 y(for)g(\(i)g(=)f(0;)h(i)g(<)f(sizeof)i +(serno)g(/)e(sizeof)i(serno[0];)h(i++\))938 839 y(crc)e(=)g +(_crc_ibutton_update\(crc,)42 b(serno[i]\);)797 996 y(return)37 +b(crc;)f(//)g(must)g(be)g(0)656 1075 y(})515 1337 y Fs(F)-8 +b(unctions)639 1522 y Fk(\210)41 b Fq(static)61 b(__inline__)f +Fs(uin)m(t16_t)h(_crc16_up)s(date)h Fq(\()p Fs(uin)m(t16_t)g +Fq(__crc,)722 1622 y Fs(uin)m(t8_t)28 b Fq(__data\))639 +1729 y Fk(\210)41 b Fq(static)27 b(__inline__)f Fs(uin)m(t16_t)h +(_crc_xmo)s(dem_up)s(date)h Fq(\()p Fs(uin)m(t16_t)g +Fq(_-)722 1828 y(_crc,)f Fs(uin)m(t8_t)h Fq(__data\))639 +1935 y Fk(\210)41 b Fq(static)28 b(__inline__)f Fs(uin)m(t16_t)h +(_crc_ccitt_up)s(date)j Fq(\()p Fs(uin)m(t16_t)e Fq(__crc,)722 +2035 y Fs(uin)m(t8_t)f Fq(__data\))639 2141 y Fk(\210)41 +b Fq(static)23 b(__inline__)f Fs(uin)m(t8_t)h(_crc_ibutton_up)s(date)h +Fq(\()p Fs(uin)m(t8_t)g Fq(__crc,)722 2241 y Fs(uin)m(t8_t)k +Fq(__data\))515 2503 y Fs(22.26.2)93 b(F)-8 b(unction)32 +b(Do)s(cumen)m(tation)515 2704 y(22.26.2.1)92 b(static)52 +b(__inline__)f(uin)m(t16_t)h(_crc16_up)s(date)h(\(uin)m(t16_t)515 +2803 y Fc(__cr)-5 b(c)p Fs(,)62 b(uin)m(t8_t)32 b Fc(__data)p +Fs(\))70 b Fm([static])515 2950 y Fq(Optimized)28 b(CR)n(C-16)e +(calculation.)515 3097 y(P)n(olynomial:)36 b(x)1026 3067 +y Fa(^)1074 3097 y Fq(16)27 b(+)g(x)1321 3067 y Fa(^)1370 +3097 y Fq(15)g(+)g(x)1617 3067 y Fa(^)1665 3097 y Fq(2)h(+)f(1)g +(\(0xa001\))515 3244 y(Initial)g(v)-5 b(alue:)37 b(0x\033\033)515 +3391 y(This)27 b(CR)n(C)h(is)f(normally)f(used)i(in)g(disk-driv)n(e)e +(con)n(trollers.)515 3537 y(The)h(follo)n(wing)g(is)g(the)h(equiv)-5 +b(alen)n(t)27 b(functionalit)n(y)h(written)g(in)g(C.)656 +3741 y Fj(uint16_t)656 3819 y(crc16_update\(uint16_t)41 +b(crc,)36 b(uint8_t)h(a\))656 3898 y({)797 3977 y(int)f(i;)797 +4135 y(crc)g(^=)g(a;)797 4214 y(for)g(\(i)g(=)f(0;)h(i)g(<)f(8;)h +(++i\))797 4293 y({)938 4372 y(if)g(\(crc)g(&)g(1\))1079 +4450 y(crc)g(=)g(\(crc)g(>>)g(1\))g(^)f(0xA001;)938 4529 +y(else)1079 4608 y(crc)h(=)g(\(crc)g(>>)g(1\);)797 4687 +y(})797 4845 y(return)h(crc;)656 4924 y(})p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 293 309 +TeXDict begin 293 308 bop 515 203 a Fs(22.26)94 b Fo(<)p +Fs(util/crc16.h)p Fo(>)p Fs(:)40 b(CR)m(C)31 b(Computations)893 +b(293)p 515 236 2865 4 v 515 523 a(22.26.2.2)92 b(static)152 +b(__inline__)e(uin)m(t16_t)i(_crc_ccitt_up)s(date)515 +623 y(\(uin)m(t16_t)32 b Fc(__cr)-5 b(c)p Fs(,)62 b(uin)m(t8_t)32 +b Fc(__data)p Fs(\))70 b Fm([static])515 770 y Fq(Optimized)28 +b(CR)n(C-CCITT)e(calculation.)515 916 y(P)n(olynomial:)36 +b(x)1026 886 y Fa(^)1074 916 y Fq(16)27 b(+)g(x)1321 +886 y Fa(^)1370 916 y Fq(12)g(+)g(x)1617 886 y Fa(^)1665 +916 y Fq(5)h(+)f(1)g(\(0x8408\))515 1063 y(Initial)g(v)-5 +b(alue:)37 b(0x\033\033)515 1210 y(This)27 b(is)h(the)g(CR)n(C)f(used)h +(b)n(y)f(PPP)i(and)e(IrD)n(A.)515 1357 y(See)g(RF)n(C1171)f(\(PPP)j +(proto)r(col\))e(and)g(IrD)n(A)h(IrLAP)g(1.1)506 1568 +y Fs(Note:)676 1718 y Fq(Although)e(the)g(CCITT)f(p)r(olynomial)g(is)g +(the)h(same)f(as)g(that)h(used)f(b)n(y)h(the)g(Xmo)r(dem)676 +1817 y(proto)r(col,)40 b(they)e(are)f(quite)h(di\033eren)n(t.)68 +b(The)38 b(di\033erence)g(is)g(in)g(ho)n(w)f(the)i(bits)f(are)676 +1917 y(shifted)33 b(through)f(the)g(alorgithm.)50 b(Xmo)r(dem)33 +b(shifts)f(the)h(MSB)f(of)h(the)f(CR)n(C)g(and)676 2017 +y(the)24 b(input)h(\034rst,)f(while)g(CCITT)f(shifts)h(the)g(LSB)g(of)g +(the)g(CR)n(C)f(and)h(the)g(input)g(\034rst.)515 2241 +y(The)j(follo)n(wing)g(is)g(the)h(equiv)-5 b(alen)n(t)27 +b(functionalit)n(y)h(written)g(in)g(C.)656 2445 y Fj(uint16_t)656 +2524 y(crc_ccitt_update)40 b(\(uint16_t)d(crc,)g(uint8_t)g(data\))656 +2603 y({)797 2682 y(data)f(^=)g(lo8)g(\(crc\);)797 2761 +y(data)g(^=)g(data)h(<<)e(4;)797 2919 y(return)i +(\(\(\(\(uint16_t\)data)j(<<)c(8\))f(|)h(hi8)g(\(crc\)\))h(^)f +(\(uint8_t\)\(data)j(>>)d(4\))1079 2997 y(^)g(\(\(uint16_t\)data)j(<<)d +(3\)\);)656 3076 y(})515 3416 y Fs(22.26.2.3)92 b(static)127 +b(__inline__)f(uin)m(t8_t)h(_crc_ibutton_up)s(date)515 +3516 y(\(uin)m(t8_t)32 b Fc(__cr)-5 b(c)p Fs(,)62 b(uin)m(t8_t)32 +b Fc(__data)p Fs(\))70 b Fm([static])515 3663 y Fq(Optimized)28 +b(Dallas)e(\(no)n(w)i(Maxim\))f(iButton)h(8-bit)f(CR)n(C)h +(calculation.)515 3810 y(P)n(olynomial:)36 b(x)1026 3779 +y Fa(^)1074 3810 y Fq(8)27 b(+)h(x)1280 3779 y Fa(^)1328 +3810 y Fq(5)g(+)f(x)1534 3779 y Fa(^)1582 3810 y Fq(4)h(+)f(1)g +(\(0x8C\))515 3956 y(Initial)g(v)-5 b(alue:)37 b(0x0)515 +4103 y(See)27 b Fm(http://www.maxim-)o(ic)o(.c)o(om/)o(ap)o(pn)o(ote)o +(s.)o(cf)o(m/a)o(pp)o(no)o(te_)o(nu)o(mbe)o(r/)o(27)515 +4250 y Fq(The)g(follo)n(wing)g(is)g(the)h(equiv)-5 b(alen)n(t)27 +b(functionalit)n(y)h(written)g(in)g(C.)656 4454 y Fj(uint8_t)656 +4533 y(_crc_ibutton_update\(uint8)q(_t)42 b(crc,)36 b(uint8_t)h(data\)) +656 4612 y({)797 4691 y(uint8_t)g(i;)797 4848 y(crc)f(=)g(crc)g(^)f +(data;)797 4927 y(for)h(\(i)g(=)f(0;)h(i)g(<)f(8;)h(i++\))797 +5006 y({)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 294 310 +TeXDict begin 294 309 bop 515 195 a Fs(22.27)94 b Fo(<)p +Fs(util/dela)m(y)-8 b(.h)p Fo(>)p Fs(:)40 b(Con)m(v)m(enience)31 +b(functions)h(for)g(busy-w)m(ait)g(dela)m(y)515 295 y(lo)s(ops)2504 +b(294)p 515 328 2865 4 v 938 523 a Fj(if)36 b(\(crc)g(&)g(0x01\))1079 +602 y(crc)g(=)g(\(crc)g(>>)g(1\))g(^)f(0x8C;)938 681 +y(else)1079 760 y(crc)h(>>=)g(1;)797 839 y(})797 996 +y(return)h(crc;)656 1075 y(})515 1374 y Fs(22.26.2.4)92 +b(static)j(__inline__)e(uin)m(t16_t)h(_crc_xmo)s(dem_up)s(date)515 +1474 y(\(uin)m(t16_t)32 b Fc(__cr)-5 b(c)p Fs(,)62 b(uin)m(t8_t)32 +b Fc(__data)p Fs(\))70 b Fm([static])515 1621 y Fq(Optimized)28 +b(CR)n(C-XMODEM)f(calculation.)515 1767 y(P)n(olynomial:)36 +b(x)1026 1737 y Fa(^)1074 1767 y Fq(16)27 b(+)g(x)1321 +1737 y Fa(^)1370 1767 y Fq(12)g(+)g(x)1617 1737 y Fa(^)1665 +1767 y Fq(5)h(+)f(1)g(\(0x1021\))515 1914 y(Initial)g(v)-5 +b(alue:)37 b(0x0)515 2061 y(This)27 b(is)h(the)g(CR)n(C)f(used)h(b)n(y) +f(the)h(Xmo)r(dem-CR)n(C)f(proto)r(col.)515 2208 y(The)g(follo)n(wing)g +(is)g(the)h(equiv)-5 b(alen)n(t)27 b(functionalit)n(y)h(written)g(in)g +(C.)656 2377 y Fj(uint16_t)656 2456 y(crc_xmodem_update)40 +b(\(uint16_t)e(crc,)e(uint8_t)h(data\))656 2535 y({)797 +2614 y(int)f(i;)797 2771 y(crc)g(=)g(crc)g(^)f(\(\(uint16_t\)data)40 +b(<<)35 b(8\);)797 2850 y(for)h(\(i=0;)h(i<8;)f(i++\))797 +2929 y({)938 3008 y(if)g(\(crc)g(&)g(0x8000\))1079 3087 +y(crc)g(=)g(\(crc)g(<<)g(1\))g(^)f(0x1021;)938 3166 y(else)1079 +3245 y(crc)h(<<=)g(1;)797 3324 y(})797 3481 y(return)h(crc;)656 +3560 y(})515 3833 y Fn(22.27)112 b Fd(<)p Fn(util/dela)m(y)-9 +b(.h)p Fd(>)p Fn(:)103 b(Con)m(v)m(enience)65 b(functions)f(for)g +(busy-)882 3949 y(w)m(ait)37 b(dela)m(y)i(lo)s(ops)515 +4150 y Fs(22.27.1)93 b(Detailed)31 b(Description)656 +4329 y Fj(#define)37 b(F_CPU)g(1000000UL)73 b(//)36 b(1)f(MHz)656 +4408 y(//#define)j(F_CPU)e(14.7456E6)656 4487 y(#include)h +()506 4658 y Fs(Note:)676 4807 y Fq(As)32 +b(an)g(alternativ)n(e)f(metho)r(d,)j(it)e(is)g(p)r(ossible)g(to)g(pass) +f(the)h(F_CPU)h(macro)e(do)n(wn)676 4907 y(to)36 b(the)h(compiler)f +(from)g(the)g(Mak)n(e\034le.)63 b(Ob)n(viously)-7 b(,)37 +b(in)g(that)f(case,)i(no)e Fm(#define)676 5006 y Fq(statemen)n(t)28 +b(should)f(b)r(e)h(used.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 295 311 +TeXDict begin 295 310 bop 515 195 a Fs(22.27)94 b Fo(<)p +Fs(util/dela)m(y)-8 b(.h)p Fo(>)p Fs(:)40 b(Con)m(v)m(enience)31 +b(functions)h(for)g(busy-w)m(ait)g(dela)m(y)515 295 y(lo)s(ops)2504 +b(295)p 515 328 2865 4 v 515 523 a Fq(The)26 b(functions)h(in)f(this)h +(header)f(\034le)g(are)g(wrapp)r(ers)f(around)g(the)i(basic)e(busy-w)n +(ait)h(func-)515 623 y(tions)35 b(from)f Fo(<)p Fs(util/dela)m +(y_basic.h)g Fq(\(p.)14 b(361\))p Fo(>)p Fq(.)58 b(They)35 +b(are)f(mean)n(t)h(as)f(con)n(v)n(enience)515 722 y(functions)i(where)f +(actual)h(time)g(v)-5 b(alues)35 b(can)h(b)r(e)g(sp)r(eci\034ed)g +(rather)f(than)h(a)g(n)n(um)n(b)r(er)f(of)515 822 y(cycles)d(to)g(w)n +(ait)h(for.)51 b(The)33 b(idea)f(b)r(ehind)i(is)f(that)f(compile-time)h +(constan)n(t)f(expressions)515 922 y(will)24 b(b)r(e)g(eliminated)g(b)n +(y)g(compiler)f(optimization)h(so)f(\035oating-p)r(oin)n(t)g +(expressions)f(can)i(b)r(e)515 1021 y(used)d(to)f(calculate)g(the)i(n)n +(um)n(b)r(er)e(of)h(dela)n(y)f(cycles)g(needed)h(based)f(on)h(the)g +(CPU)h(frequency)515 1121 y(passed)k(b)n(y)i(the)g(macro)e(F_CPU.)506 +1336 y Fs(Note:)676 1485 y Fq(In)37 b(order)e(for)g(these)i(functions)f +(to)h(w)n(ork)d(as)i(in)n(tended,)j(compiler)d(optimizations)676 +1585 y Fl(must)30 b Fq(b)r(e)24 b(enabled,)f(and)g(the)h(dela)n(y)e +(time)h Fl(must)30 b Fq(b)r(e)24 b(an)e(expression)g(that)h(is)g(a)g +(kno)n(wn)676 1685 y(constan)n(t)28 b(at)h(compile-time.)42 +b(If)29 b(these)g(requiremen)n(ts)f(are)g(not)h(met,)h(the)g(resulting) +676 1784 y(dela)n(y)h(will)h(b)r(e)h(m)n(uc)n(h)f(longer)e(\(and)i +(basically)f(unpredictable\),)i(and)f(applications)676 +1884 y(that)c(otherwise)e(do)h(not)h(use)f(\035oating-p)r(oin)n(t)f +(calculations)g(will)i(exp)r(erience)f(sev)n(ere)676 +1984 y(co)r(de)c(bloat)g(b)n(y)g(the)g(\035oating-p)r(oin)n(t)f +(library)g(routines)g(link)n(ed)h(in)n(to)g(the)h(application.)515 +2213 y(The)29 b(functions)g(a)n(v)-5 b(ailable)27 b(allo)n(w)h(the)i +(sp)r(eci\034cation)e(of)h(microsecond,)f(and)g(millisecond)515 +2313 y(dela)n(ys)23 b(directly)-7 b(,)25 b(using)g(the)g +(application-supplied)f(macro)f(F_CPU)i(as)f(the)h(CPU)h(clo)r(c)n(k) +515 2413 y(frequency)h(\(in)h(Hertz\).)515 2676 y Fs(F)-8 +b(unctions)639 2862 y Fk(\210)41 b Fq(v)n(oid)27 b Fs(_dela)m(y_us)h +Fq(\(double)g(__us\))639 2970 y Fk(\210)41 b Fq(v)n(oid)27 +b Fs(_dela)m(y_ms)h Fq(\(double)g(__ms\))515 3233 y Fs(22.27.2)93 +b(F)-8 b(unction)32 b(Do)s(cumen)m(tation)515 3434 y(22.27.2.1)92 +b(v)m(oid)32 b(_dela)m(y_ms)g(\(double)f Fc(__ms)p Fs(\))515 +3580 y Fq(P)n(erform)c(a)g(dela)n(y)f(of)i Fm(__ms)e +Fq(milliseconds,)h(using)h Fs(_dela)m(y_lo)s(op_2\(\))g +Fq(\(p.)14 b(297\).)515 3727 y(The)30 b(macro)f(F_CPU)i(is)f(supp)r +(osed)h(to)f(b)r(e)h(de\034ned)f(to)h(a)f(constan)n(t)f(de\034ning)i +(the)f(CPU)515 3827 y(clo)r(c)n(k)d(frequency)g(\(in)h(Hertz\).)515 +3974 y(The)f(maximal)g(p)r(ossible)g(dela)n(y)g(is)h(262.14)d(ms)i(/)h +(F_CPU)g(in)g(MHz.)515 4121 y(When)43 b(the)g(user)f(request)g(dela)n +(y)g(whic)n(h)h(exceed)g(the)g(maxim)n(um)f(p)r(ossible)h(one,)j +Fs(_-)515 4220 y(dela)m(y_ms\(\))19 b Fq(\(p.)14 b(295\))j(pro)n(vides) +g(a)i(decreased)e(resolution)g(functionalit)n(y)-7 b(.)34 +b(In)19 b(this)g(mo)r(de)515 4320 y Fs(_dela)m(y_ms\(\))k +Fq(\(p.)14 b(295\))22 b(will)g(w)n(ork)f(with)j(a)e(resolution)f(of)i +(1/10)d(ms,)k(pro)n(viding)d(dela)n(ys)515 4420 y(up)28 +b(to)f(6.5535)f(seconds)h(\(indep)r(enden)n(t)h(from)g(CPU)g +(frequency\).)37 b(The)28 b(user)f(will)h(not)g(b)r(e)515 +4519 y(informed)f(ab)r(out)h(decreased)e(resolution.)515 +4782 y Fs(22.27.2.2)92 b(v)m(oid)32 b(_dela)m(y_us)g(\(double)f +Fc(__us)p Fs(\))515 4929 y Fq(P)n(erform)c(a)g(dela)n(y)f(of)i +Fm(__us)e Fq(microseconds,)g(using)i Fs(_dela)m(y_lo)s(op_1\(\))g +Fq(\(p.)14 b(296\).)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 296 312 +TeXDict begin 296 311 bop 515 203 a Fs(22.28)94 b Fo(<)p +Fs(util/dela)m(y_basic.h)p Fo(>)p Fs(:)40 b(Basic)32 +b(busy-w)m(ait)g(dela)m(y)g(lo)s(ops)289 b(296)p 515 +236 2865 4 v 515 523 a Fq(The)30 b(macro)f(F_CPU)i(is)f(supp)r(osed)h +(to)f(b)r(e)h(de\034ned)f(to)h(a)f(constan)n(t)f(de\034ning)i(the)f +(CPU)515 623 y(clo)r(c)n(k)d(frequency)g(\(in)h(Hertz\).)515 +770 y(The)f(maximal)g(p)r(ossible)g(dela)n(y)g(is)h(768)e(us)h(/)g +(F_CPU)i(in)e(MHz.)515 916 y(If)i(the)g(user)f(requests)f(a)h(dela)n(y) +g(greater)f(than)i(the)g(maximal)f(p)r(ossible)g(one,)g +Fs(_dela)m(y_-)515 1016 y(us\(\))h Fq(\(p.)14 b(295\))28 +b(will)i(automatically)e(call)g Fs(_dela)m(y_ms\(\))i +Fq(\(p.)14 b(295\))28 b(instead.)42 b(The)29 b(user)515 +1116 y(will)f(not)f(b)r(e)h(informed)f(ab)r(out)h(this)g(case.)515 +1395 y Fn(22.28)112 b Fd(<)p Fn(util/dela)m(y_basic.h)p +Fd(>)p Fn(:)52 b(Basic)38 b(busy-w)m(ait)g(dela)m(y)h(lo)s(ops)515 +1596 y Fs(22.28.1)93 b(Detailed)31 b(Description)656 +1775 y Fj(#include)37 b()515 2005 +y Fq(The)31 b(functions)g(in)h(this)f(header)f(\034le)h(implemen)n(t)h +(simple)f(dela)n(y)f(lo)r(ops)h(that)g(p)r(erform)f(a)515 +2105 y(busy-w)n(aiting.)37 b(They)29 b(are)e(t)n(ypically)h(used)g(to)g +(facilitate)g(short)g(dela)n(ys)f(in)i(the)f(program)515 +2205 y(execution.)36 b(They)25 b(are)g(implemen)n(ted)i(as)e(coun)n +(t-do)n(wn)g(lo)r(ops)g(with)h(a)g(w)n(ell-kno)n(wn)e(CPU)515 +2304 y(cycle)32 b(coun)n(t)g(p)r(er)h(lo)r(op)f(iteration.)52 +b(As)33 b(suc)n(h,)g(no)g(other)f(pro)r(cessing)f(can)h(o)r(ccur)h(sim) +n(ul-)515 2404 y(taneously)-7 b(.)45 b(It)31 b(should)f(b)r(e)h(k)n +(ept)f(in)h(mind)g(that)g(the)g(functions)g(describ)r(ed)f(here)g(do)g +(not)515 2503 y(disable)d(in)n(terrupts.)515 2650 y(In)k(general,)h +(for)f(long)f(dela)n(ys,)i(the)g(use)f(of)g(hardw)n(are)f(timers)h(is)g +(m)n(uc)n(h)h(preferrable,)f(as)515 2750 y(they)j(free)g(the)g(CPU,)h +(and)f(allo)n(w)f(for)g(concurren)n(t)g(pro)r(cessing)f(of)i(other)g +(ev)n(en)n(ts)f(while)515 2850 y(the)26 b(timer)f(is)h(running.)36 +b(Ho)n(w)n(ev)n(er,)24 b(in)i(particular)e(for)h(v)n(ery)f(short)h +(dela)n(ys,)g(the)h(o)n(v)n(erhead)515 2949 y(of)g(setting)h(up)f(a)h +(hardw)n(are)d(timer)i(is)h(to)r(o)f(m)n(uc)n(h)g(compared)f(to)i(the)g +(o)n(v)n(erall)d(dela)n(y)i(time.)515 3096 y(T)-7 b(w)n(o)27 +b(inline)h(functions)f(are)g(pro)n(vided)f(for)h(the)h(actual)f(dela)n +(y)g(algorithms.)515 3359 y Fs(F)-8 b(unctions)639 3546 +y Fk(\210)41 b Fq(v)n(oid)27 b Fs(_dela)m(y_lo)s(op_1)g +Fq(\()p Fs(uin)m(t8_t)h Fq(__coun)n(t\))639 3653 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(_dela)m(y_lo)s(op_2)g Fq(\()p Fs(uin)m(t16_t)h +Fq(__coun)n(t\))515 3917 y Fs(22.28.2)93 b(F)-8 b(unction)32 +b(Do)s(cumen)m(tation)515 4117 y(22.28.2.1)92 b(v)m(oid)32 +b(_dela)m(y_lo)s(op_1)f(\(uin)m(t8_t)h Fc(__c)-5 b(ount)p +Fs(\))515 4264 y Fq(Dela)n(y)25 b(lo)r(op)g(using)g(an)g(8-bit)g(coun)n +(ter)g Fm(__count)p Fq(,)e(so)h(up)i(to)f(256)g(iterations)f(are)g(p)r +(ossible.)515 4363 y(\(The)32 b(v)-5 b(alue)32 b(256)f(w)n(ould)h(ha)n +(v)n(e)f(to)h(b)r(e)g(passed)g(as)f(0.\))51 b(The)32 +b(lo)r(op)g(executes)f(three)h(CPU)515 4463 y(cycles)25 +b(p)r(er)g(iteration,)h(not)f(including)h(the)g(o)n(v)n(erhead)e(the)i +(compiler)f(needs)g(to)h(setup)g(the)515 4563 y(coun)n(ter)g(register.) +515 4710 y(Th)n(us,)41 b(at)e(a)g(CPU)h(sp)r(eed)f(of)g(1)f(MHz,)k +(dela)n(ys)c(of)h(up)g(to)g(768)f(microseconds)f(can)i(b)r(e)515 +4809 y(ac)n(hiev)n(ed.)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 297 313 +TeXDict begin 297 312 bop 515 203 a Fs(22.29)94 b Fo(<)p +Fs(util/parit)m(y)-8 b(.h)p Fo(>)p Fs(:)40 b(P)m(arit)m(y)34 +b(bit)d(generation)819 b(297)p 515 236 2865 4 v 515 523 +a(22.28.2.2)92 b(v)m(oid)32 b(_dela)m(y_lo)s(op_2)f(\(uin)m(t16_t)h +Fc(__c)-5 b(ount)p Fs(\))515 670 y Fq(Dela)n(y)19 b(lo)r(op)f(using)h +(a)g(16-bit)g(coun)n(ter)f Fm(__count)p Fq(,)g(so)h(up)h(to)f(65536)e +(iterations)h(are)g(p)r(ossible.)515 770 y(\(The)29 b(v)-5 +b(alue)30 b(65536)d(w)n(ould)i(ha)n(v)n(e)f(to)h(b)r(e)h(passed)f(as)f +(0.\))43 b(The)29 b(lo)r(op)g(executes)g(four)g(CPU)515 +869 y(cycles)h(p)r(er)g(iteration,)h(not)g(including)g(the)g(o)n(v)n +(erhead)d(the)j(compiler)f(requires)f(to)i(setup)515 +969 y(the)d(coun)n(ter)e(register)g(pair.)515 1116 y(Th)n(us,)j(at)h(a) +f(CPU)h(sp)r(eed)g(of)f(1)g(MHz,)i(dela)n(ys)d(of)h(up)h(to)g(ab)r(out) +f(262.1)f(milliseconds)g(can)515 1215 y(b)r(e)g(ac)n(hiev)n(ed.)515 +1495 y Fn(22.29)112 b Fd(<)p Fn(util/parit)m(y)-9 b(.h)p +Fd(>)p Fn(:)50 b(P)m(arit)m(y)37 b(bit)g(generation)515 +1695 y Fs(22.29.1)93 b(Detailed)31 b(Description)550 +1875 y Fj(#include)37 b()515 2105 y Fq(This)c(header)f +(\034le)h(con)n(tains)f(optimized)h(assem)n(bler)f(co)r(de)h(to)g +(calculate)f(the)h(parit)n(y)g(bit)515 2204 y(for)27 +b(a)g(b)n(yte.)515 2467 y Fs(De\034nes)639 2654 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(parit)m(y_ev)m(en_bit)p Fq(\(v)-5 +b(al\))515 2917 y Fs(22.29.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +3117 y(22.29.2.1)92 b(#de\034ne)31 b(parit)m(y_ev)m(en_bit\(v)-5 +b(al\))515 3264 y(V)d(alue:)515 3473 y Fj(\(__extension__\({)1415 +b(\\)797 3552 y(unsigned)37 b(char)g(__t;)1059 b(\\)797 +3630 y(__asm__)37 b(\()1376 b(\\)1079 3709 y("mov)37 +b(__tmp_reg__,\0450")i("\\n\\t")460 b(\\)1079 3788 y("swap)37 +b(\0450")f("\\n\\t")848 b(\\)1079 3867 y("eor)37 b(\0450,__tmp_reg__")i +("\\n\\t")460 b(\\)1079 3946 y("mov)37 b(__tmp_reg__,\0450")i("\\n\\t") +460 b(\\)1079 4025 y("lsr)37 b(\0450")f("\\n\\t")883 +b(\\)1079 4104 y("lsr)37 b(\0450")f("\\n\\t")883 b(\\)1079 +4182 y("eor)37 b(\0450,__tmp_reg__")709 b(\\)1079 4261 +y(:)36 b("=r")g(\(__t\))989 b(\\)1079 4340 y(:)36 b("0")g(\(\(unsigned) +i(char\)\(val\)\))426 b(\\)1079 4419 y(:)36 b("r0")1200 +b(\\)797 4498 y(\);)1623 b(\\)797 4577 y(\(\(\(__t)37 +b(+)e(1\))h(>>)g(1\))g(&)f(1\);)883 b(\\)550 4656 y(}\)\))506 +4857 y Fs(Returns:)676 5006 y Fq(1)27 b(if)h Fm(val)f +Fq(has)g(an)g(o)r(dd)h(n)n(um)n(b)r(er)f(of)h(bits)f(set.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 298 314 +TeXDict begin 298 313 bop 515 203 a Fs(22.30)94 b Fo(<)p +Fs(util/setbaud.h)p Fo(>)p Fs(:)39 b(Help)s(er)31 b(macros)h(for)g +(baud)g(rate)g(calculations)-94 b(298)p 515 236 2865 +4 v 515 523 a Fn(22.30)112 b Fd(<)p Fn(util/setbaud.h)p +Fd(>)p Fn(:)48 b(Help)s(er)30 b(macros)g(for)g(baud)h(rate)f(cal-)882 +639 y(culations)515 840 y Fs(22.30.1)93 b(Detailed)31 +b(Description)621 1019 y Fj(#define)37 b(F_CPU)f(11059200)621 +1098 y(#define)h(BAUD)f(38400)621 1177 y(#include)h() +515 1396 y Fq(This)19 b(header)g(\034le)h(requires)f(that)h(on)f(en)n +(try)g(v)-5 b(alues)20 b(are)e(already)h(de\034ned)h(for)f(F_CPU)h(and) +515 1495 y(BA)n(UD.)25 b(In)f(addition,)h(the)f(macro)f(BA)n(UD_TOL)h +(will)h(de\034ne)f(the)h(baud)f(rate)f(tolerance)515 +1595 y(\(in)30 b(p)r(ercen)n(t\))g(that)h(is)e(acceptable)h(during)f +(the)i(calculations.)43 b(The)30 b(v)-5 b(alue)29 b(of)h(BA)n(UD_-)515 +1695 y(TOL)d(will)h(default)g(to)f(2)g(\045.)515 1841 +y(This)f(header)f(\034le)h(de\034nes)f(macros)g(suitable)g(to)h(setup)g +(the)g(UAR)-7 b(T)27 b(baud)f(rate)f(prescaler)515 1941 +y(registers)d(of)i(an)f(A)-9 b(VR.)25 b(All)f(calculations)f(are)g +(done)g(using)h(the)g(C)g(prepro)r(cessor.)33 b(Includ-)515 +2041 y(ing)22 b(this)h(header)f(\034le)h(causes)e(no)i(other)f(side)g +(e\033ects)h(so)f(it)i(is)e(p)r(ossible)g(to)h(include)g(this)g(\034le) +515 2140 y(more)33 b(than)i(once)f(\(supp)r(osedly)-7 +b(,)36 b(with)f(di\033eren)n(t)f(v)-5 b(alues)34 b(for)g(the)g(BA)n(UD) +h(parameter\),)515 2240 y(p)r(ossibly)27 b(ev)n(en)g(within)h(the)g +(same)f(function.)515 2387 y(Assuming)37 b(that)g(the)h(requested)e(BA) +n(UD)i(is)f(v)-5 b(alid)38 b(for)e(the)i(giv)n(en)e(F_CPU)i(then)g(the) +515 2486 y(macro)32 b(UBRR_V)-9 b(ALUE)35 b(is)e(set)h(to)f(the)h +(required)f(prescaler)f(v)-5 b(alue.)55 b(T)-7 b(w)n(o)33 +b(additional)515 2586 y(macros)e(are)h(pro)n(vided)f(for)i(the)g(lo)n +(w)f(and)h(high)f(b)n(ytes)h(of)f(the)i(prescaler,)e(resp)r(ectiv)n +(ely:)515 2686 y(UBRRL_V)-9 b(ALUE)20 b(is)g(set)g(to)f(the)h(lo)n(w)n +(er)f(b)n(yte)g(of)h(the)g(UBRR_V)-9 b(ALUE)21 b(and)e(UBRRH_-)515 +2785 y(V)-9 b(ALUE)24 b(is)g(set)f(to)g(the)h(upp)r(er)g(b)n(yte.)35 +b(An)24 b(additional)f(macro)f(USE_2X)i(will)g(b)r(e)g(de\034ned.)515 +2885 y(Its)30 b(v)-5 b(alue)29 b(is)h(set)g(to)f(1)h(if)g(the)g +(desired)f(BA)n(UD)h(rate)f(within)i(the)f(giv)n(en)f(tolerance)f +(could)515 2985 y(only)f(b)r(e)i(ac)n(hiev)n(ed)e(b)n(y)g(setting)h +(the)h(U2X)f(bit)h(in)f(the)h(UAR)-7 b(T)28 b(con\034guration.)37 +b(It)28 b(will)h(b)r(e)515 3084 y(de\034ned)f(to)f(0)g(if)h(U2X)g(is)f +(not)h(needed.)515 3231 y(Example)f(usage:)621 3429 y +Fj(#include)37 b()621 3587 y(#define)g(F_CPU)f(4000000)621 +3744 y(static)g(void)621 3823 y(uart_9600\(void\))621 +3902 y({)621 3981 y(#define)h(BAUD)f(9600)621 4060 y(#include)h +()621 4139 y(UBRRH)f(=)g(UBRRH_VALUE;)621 +4218 y(UBRRL)g(=)g(UBRRL_VALUE;)621 4296 y(#if)g(USE_2X)621 +4375 y(UCSRA)g(|=)g(\(1)g(<<)g(U2X\);)621 4454 y(#else)621 +4533 y(UCSRA)g(&=)g(~\(1)g(<<)g(U2X\);)621 4612 y(#endif)621 +4691 y(})621 4848 y(static)g(void)621 4927 y(uart_38400\(void\))621 +5006 y({)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 299 315 +TeXDict begin 299 314 bop 515 203 a Fs(22.30)94 b Fo(<)p +Fs(util/setbaud.h)p Fo(>)p Fs(:)39 b(Help)s(er)31 b(macros)h(for)g +(baud)g(rate)g(calculations)-94 b(299)p 515 236 2865 +4 v 621 523 a Fj(#undef)36 b(BAUD)72 b(//)36 b(avoid)h(compiler)g +(warning)621 602 y(#define)g(BAUD)f(38400)621 681 y(#include)h +()621 760 y(UBRRH)f(=)g(UBRRH_VALUE;)621 +839 y(UBRRL)g(=)g(UBRRL_VALUE;)621 917 y(#if)g(USE_2X)621 +996 y(UCSRA)g(|=)g(\(1)g(<<)g(U2X\);)621 1075 y(#else)621 +1154 y(UCSRA)g(&=)g(~\(1)g(<<)g(U2X\);)621 1233 y(#endif)621 +1312 y(})515 1542 y Fq(In)c(this)f(example,)i(t)n(w)n(o)d(functions)i +(are)f(de\034ned)h(to)f(setup)h(the)g(UAR)-7 b(T)33 b(to)e(run)g(at)h +(9600)515 1641 y(Bd,)c(and)g(38400)d(Bd,)j(resp)r(ectiv)n(ely)-7 +b(.)37 b(Using)28 b(a)f(CPU)i(clo)r(c)n(k)e(of)h(4)g(MHz,)g(9600)e(Bd)i +(can)g(b)r(e)515 1741 y(ac)n(hiev)n(ed)21 b(with)j(an)f(acceptable)f +(tolerance)g(without)h(setting)g(U2X)g(\(prescaler)f(25\),)h(while)515 +1841 y(38400)i(Bd)i(require)g(U2X)h(to)f(b)r(e)h(set)g(\(prescaler)e +(12\).)515 2104 y Fs(De\034nes)639 2290 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(BA)m(UD_TOL)i Fq(2)639 2398 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(UBRR_V)-11 b(ALUE)639 +2506 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UBRRL_V)-11 +b(ALUE)639 2614 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UBRRH_V)-11 +b(ALUE)639 2722 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(USE_2X)g +Fq(0)515 2985 y Fs(22.30.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +3185 y(22.30.2.1)92 b(#de\034ne)31 b(BA)m(UD_TOL)j(2)515 +3332 y Fq(Input)28 b(and)f(output)h(macro)f(for)g Fo(<)p +Fs(util/setbaud.h)e Fq(\(p.)14 b(378\))p Fo(>)515 3479 +y Fq(De\034ne)26 b(the)h(acceptable)e(baud)h(rate)f(tolerance)g(in)h(p) +r(ercen)n(t.)36 b(If)27 b(not)f(set)g(on)g(en)n(try)-7 +b(,)25 b(it)i(will)515 3579 y(b)r(e)h(set)f(to)h(its)f(default)h(v)-5 +b(alue)28 b(of)f(2.)515 3842 y Fs(22.30.2.2)92 b(#de\034ne)31 +b(UBRR_V)-11 b(ALUE)515 3988 y Fq(Output)28 b(macro)e(from)h +Fo(<)p Fs(util/setbaud.h)f Fq(\(p.)14 b(378\))p Fo(>)515 +4135 y Fq(Con)n(tains)26 b(the)i(calculated)f(baud)h(rate)f(prescaler)e +(v)-5 b(alue)28 b(for)f(the)h(UBRR)g(register.)515 4398 +y Fs(22.30.2.3)92 b(#de\034ne)31 b(UBRRH_V)-11 b(ALUE)515 +4545 y Fq(Output)28 b(macro)e(from)h Fo(<)p Fs(util/setbaud.h)f +Fq(\(p.)14 b(378\))p Fo(>)515 4692 y Fq(Con)n(tains)26 +b(the)i(upp)r(er)g(b)n(yte)f(of)h(the)g(calculated)f(prescaler)f(v)-5 +b(alue)27 b(\(UBRR_V)-9 b(ALUE\).)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 300 316 +TeXDict begin 300 315 bop 515 203 a Fs(22.31)94 b Fo(<)p +Fs(util/t)m(wi.h)p Fo(>)p Fs(:)39 b(TWI)32 b(bit)g(mask)f +(de\034nitions)750 b(300)p 515 236 2865 4 v 515 523 a(22.30.2.4)92 +b(#de\034ne)31 b(UBRRL_V)-11 b(ALUE)515 670 y Fq(Output)28 +b(macro)e(from)h Fo(<)p Fs(util/setbaud.h)f Fq(\(p.)14 +b(378\))p Fo(>)515 817 y Fq(Con)n(tains)26 b(the)i(lo)n(w)n(er)e(b)n +(yte)i(of)f(the)h(calculated)f(prescaler)f(v)-5 b(alue)27 +b(\(UBRR_V)-9 b(ALUE\).)515 1079 y Fs(22.30.2.5)92 b(#de\034ne)31 +b(USE_2X)h(0)515 1226 y Fq(Output)c(bacro)e(from)h Fo(<)p +Fs(util/setbaud.h)f Fq(\(p.)14 b(378\))p Fo(>)515 1373 +y Fq(Con)n(tains)29 b(the)h(v)-5 b(alue)30 b(1)g(if)g(the)g(desired)g +(baud)g(rate)f(tolerance)g(could)g(only)h(b)r(e)g(ac)n(hiev)n(ed)515 +1473 y(b)n(y)d(setting)h(the)f(U2X)h(bit)g(in)g(the)g(UAR)-7 +b(T)28 b(con\034guration.)35 b(Con)n(tains)27 b(0)g(otherwise.)515 +1752 y Fn(22.31)112 b Fd(<)p Fn(util/t)m(wi.h)p Fd(>)p +Fn(:)50 b(TWI)36 b(bit)i(mask)g(de\034nitions)515 1952 +y Fs(22.31.1)93 b(Detailed)31 b(Description)550 2132 +y Fj(#include)37 b()515 2358 y Fq(This)27 +b(header)f(\034le)i(con)n(tains)e(bit)i(mask)f(de\034nitions)g(for)g +(use)g(with)h(the)f(A)-9 b(VR)28 b(TWI)g(in)n(ter-)515 +2458 y(face.)515 2720 y Fs(TWSR)j(v)-5 b(alues)515 2921 +y Fq(Mnemonics:)515 3068 y(TW_MT_xxx)26 b(-)i(master)e(transmitter)515 +3215 y(TW_MR_xxx)g(-)i(master)e(receiv)n(er)515 3362 +y(TW_ST_xxx)g(-)i(sla)n(v)n(e)e(transmitter)515 3508 +y(TW_SR_xxx)g(-)i(sla)n(v)n(e)e(receiv)n(er)639 3719 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST)-8 b(AR)g(T)29 +b Fq(0x08)639 3826 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_REP_ST)-8 +b(AR)g(T)29 b Fq(0x10)639 3934 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_MT_SLA_A)m(CK)i Fq(0x18)639 4041 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(TW_MT_SLA_NA)m(CK)h Fq(0x20)639 +4148 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MT_D)m(A)-8 +b(T)g(A_A)m(CK)30 b Fq(0x28)639 4255 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_MT_D)m(A)-8 b(T)g(A_NA)m(CK)30 b Fq(0x30)639 +4363 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MT_ARB_LOST)h +Fq(0x38)639 4470 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_ARB_LOST)g +Fq(0x38)639 4577 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_SLA_A)m(CK)h +Fq(0x40)639 4684 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_SLA_NA)m(CK) +g Fq(0x48)639 4792 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_D)m(A)-8 +b(T)g(A_A)m(CK)30 b Fq(0x50)639 4899 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_MR_D)m(A)-8 b(T)g(A_NA)m(CK)29 b Fq(0x58)639 +5006 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST_SLA_A)m(CK)i +Fq(0xA8)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 301 317 +TeXDict begin 301 316 bop 515 203 a Fs(22.31)94 b Fo(<)p +Fs(util/t)m(wi.h)p Fo(>)p Fs(:)39 b(TWI)32 b(bit)g(mask)f +(de\034nitions)750 b(301)p 515 236 2865 4 v 639 523 a +Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST_ARB_LOST_SLA_A)m(CK)j +Fq(0xB0)639 629 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST_D)m(A)-8 +b(T)g(A_A)m(CK)31 b Fq(0xB8)639 734 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_ST_D)m(A)-8 b(T)g(A_NA)m(CK)30 b Fq(0xC0)639 +840 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST_LAST_D)m(A)-8 +b(T)g(A)32 b Fq(0xC8)639 946 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_SR_SLA_A)m(CK)h Fq(0x60)639 1052 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(TW_SR_ARB_LOST_SLA_A)m(CK)i Fq(0x68)639 +1157 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_GCALL_A)m(CK)i +Fq(0x70)639 1263 y Fk(\210)41 b Fq(#de\034ne)28 b Fs +(TW_SR_ARB_LOST_GCALL_A)m(CK)i Fq(0x78)639 1369 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(TW_SR_D)m(A)-8 b(T)g(A_A)m(CK)30 +b Fq(0x80)639 1475 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_D)m(A)-8 +b(T)g(A_NA)m(CK)30 b Fq(0x88)639 1580 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(TW_SR_GCALL_D)m(A)-8 b(T)g(A_A)m(CK)31 +b Fq(0x90)639 1686 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_GCALL_D)m +(A)-8 b(T)g(A_NA)m(CK)31 b Fq(0x98)639 1792 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(TW_SR_STOP)g Fq(0xA0)639 1898 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_NO_INF)m(O)g Fq(0xF8)639 +2003 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_BUS_ERR)m(OR)f +Fq(0x00)639 2109 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST)-8 +b(A)g(TUS_MASK)639 2215 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_ST)-8 b(A)g(TUS)30 b Fq(\(TWSR)e(&)f(TW_ST)-7 +b(A)g(TUS_MASK\))515 2476 y Fs(R/)p Fh(\030)p Fs(W)30 +b(bit)i(in)f(SLA+R/W)h(address)f(\034eld.)639 2660 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_READ)g Fq(1)639 +2766 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_WRITE)g Fq(0)515 +3027 y Fs(22.31.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +3227 y(22.31.2.1)92 b(#de\034ne)31 b(TW_BUS_ERR)m(OR)g(0x00)515 +3374 y Fq(illegal)c(start)f(or)h(stop)g(condition)515 +3635 y Fs(22.31.2.2)92 b(#de\034ne)31 b(TW_MR_ARB_LOST)h(0x38)515 +3782 y Fq(arbitration)26 b(lost)h(in)h(SLA+R)f(or)g(NA)n(CK)515 +4043 y Fs(22.31.2.3)92 b(#de\034ne)31 b(TW_MR_D)m(A)-8 +b(T)g(A_A)m(CK)33 b(0x50)515 4190 y Fq(data)27 b(receiv)n(ed,)f(A)n(CK) +h(returned)515 4451 y Fs(22.31.2.4)92 b(#de\034ne)31 +b(TW_MR_D)m(A)-8 b(T)g(A_NA)m(CK)33 b(0x58)515 4598 y +Fq(data)27 b(receiv)n(ed,)f(NA)n(CK)i(returned)515 4859 +y Fs(22.31.2.5)92 b(#de\034ne)31 b(TW_MR_SLA_A)m(CK)i(0x40)515 +5006 y Fq(SLA+R)27 b(transmitted,)h(A)n(CK)f(receiv)n(ed)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 302 318 +TeXDict begin 302 317 bop 515 203 a Fs(22.31)94 b Fo(<)p +Fs(util/t)m(wi.h)p Fo(>)p Fs(:)39 b(TWI)32 b(bit)g(mask)f +(de\034nitions)750 b(302)p 515 236 2865 4 v 515 523 a(22.31.2.6)92 +b(#de\034ne)31 b(TW_MR_SLA_NA)m(CK)h(0x48)515 670 y Fq(SLA+R)27 +b(transmitted,)h(NA)n(CK)f(receiv)n(ed)515 933 y Fs(22.31.2.7)92 +b(#de\034ne)31 b(TW_MT_ARB_LOST)i(0x38)515 1080 y Fq(arbitration)26 +b(lost)h(in)h(SLA+W)g(or)e(data)515 1343 y Fs(22.31.2.8)92 +b(#de\034ne)31 b(TW_MT_D)m(A)-8 b(T)g(A_A)m(CK)34 b(0x28)515 +1490 y Fq(data)27 b(transmitted,)g(A)n(CK)h(receiv)n(ed)515 +1753 y Fs(22.31.2.9)92 b(#de\034ne)31 b(TW_MT_D)m(A)-8 +b(T)g(A_NA)m(CK)34 b(0x30)515 1900 y Fq(data)27 b(transmitted,)g(NA)n +(CK)h(receiv)n(ed)515 2163 y Fs(22.31.2.10)92 b(#de\034ne)31 +b(TW_MT_SLA_A)m(CK)i(0x18)515 2309 y Fq(SLA+W)28 b(transmitted,)f(A)n +(CK)g(receiv)n(ed)515 2572 y Fs(22.31.2.11)92 b(#de\034ne)31 +b(TW_MT_SLA_NA)m(CK)i(0x20)515 2719 y Fq(SLA+W)28 b(transmitted,)f(NA)n +(CK)h(receiv)n(ed)515 2982 y Fs(22.31.2.12)92 b(#de\034ne)31 +b(TW_NO_INF)m(O)h(0xF8)515 3129 y Fq(no)27 b(state)g(information)g(a)n +(v)-5 b(ailable)515 3392 y Fs(22.31.2.13)92 b(#de\034ne)31 +b(TW_READ)h(1)515 3539 y Fq(SLA+R)27 b(address)515 3802 +y Fs(22.31.2.14)92 b(#de\034ne)31 b(TW_REP_ST)-8 b(AR)g(T)32 +b(0x10)515 3949 y Fq(rep)r(eated)27 b(start)g(condition)g(transmitted) +515 4212 y Fs(22.31.2.15)92 b(#de\034ne)31 b(TW_SR_ARB_LOST_GCALL_A)m +(CK)j(0x78)515 4359 y Fq(arbitration)26 b(lost)h(in)h(SLA+R)-9 +b(W,)28 b(general)e(call)h(receiv)n(ed,)f(A)n(CK)h(returned)515 +4622 y Fs(22.31.2.16)92 b(#de\034ne)31 b(TW_SR_ARB_LOST_SLA_A)m(CK)j +(0x68)515 4769 y Fq(arbitration)26 b(lost)h(in)h(SLA+R)-9 +b(W,)28 b(SLA+W)f(receiv)n(ed,)g(A)n(CK)g(returned)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 303 319 +TeXDict begin 303 318 bop 515 203 a Fs(22.31)94 b Fo(<)p +Fs(util/t)m(wi.h)p Fo(>)p Fs(:)39 b(TWI)32 b(bit)g(mask)f +(de\034nitions)750 b(303)p 515 236 2865 4 v 515 523 a(22.31.2.17)92 +b(#de\034ne)31 b(TW_SR_D)m(A)-8 b(T)g(A_A)m(CK)34 b(0x80)515 +670 y Fq(data)27 b(receiv)n(ed,)f(A)n(CK)h(returned)515 +933 y Fs(22.31.2.18)92 b(#de\034ne)31 b(TW_SR_D)m(A)-8 +b(T)g(A_NA)m(CK)33 b(0x88)515 1080 y Fq(data)27 b(receiv)n(ed,)f(NA)n +(CK)i(returned)515 1343 y Fs(22.31.2.19)92 b(#de\034ne)31 +b(TW_SR_GCALL_A)m(CK)i(0x70)515 1490 y Fq(general)26 +b(call)h(receiv)n(ed,)f(A)n(CK)i(returned)515 1753 y +Fs(22.31.2.20)92 b(#de\034ne)31 b(TW_SR_GCALL_D)m(A)-8 +b(T)g(A_A)m(CK)35 b(0x90)515 1900 y Fq(general)26 b(call)h(data)g +(receiv)n(ed,)g(A)n(CK)g(returned)515 2163 y Fs(22.31.2.21)92 +b(#de\034ne)31 b(TW_SR_GCALL_D)m(A)-8 b(T)g(A_NA)m(CK)35 +b(0x98)515 2309 y Fq(general)26 b(call)h(data)g(receiv)n(ed,)g(NA)n(CK) +g(returned)515 2572 y Fs(22.31.2.22)92 b(#de\034ne)31 +b(TW_SR_SLA_A)m(CK)i(0x60)515 2719 y Fq(SLA+W)28 b(receiv)n(ed,)e(A)n +(CK)h(returned)515 2982 y Fs(22.31.2.23)92 b(#de\034ne)31 +b(TW_SR_STOP)h(0xA0)515 3129 y Fq(stop)27 b(or)g(rep)r(eated)g(start)g +(condition)g(receiv)n(ed)g(while)g(selected)515 3392 +y Fs(22.31.2.24)92 b(#de\034ne)31 b(TW_ST_ARB_LOST_SLA_A)m(CK)j(0xB0) +515 3539 y Fq(arbitration)26 b(lost)h(in)h(SLA+R)-9 b(W,)28 +b(SLA+R)f(receiv)n(ed,)g(A)n(CK)g(returned)515 3802 y +Fs(22.31.2.25)92 b(#de\034ne)31 b(TW_ST_D)m(A)-8 b(T)g(A_A)m(CK)34 +b(0xB8)515 3949 y Fq(data)27 b(transmitted,)g(A)n(CK)h(receiv)n(ed)515 +4212 y Fs(22.31.2.26)92 b(#de\034ne)31 b(TW_ST_D)m(A)-8 +b(T)g(A_NA)m(CK)34 b(0xC0)515 4359 y Fq(data)27 b(transmitted,)g(NA)n +(CK)h(receiv)n(ed)515 4622 y Fs(22.31.2.27)92 b(#de\034ne)31 +b(TW_ST_LAST_D)m(A)-8 b(T)g(A)35 b(0xC8)515 4769 y Fq(last)27 +b(data)g(b)n(yte)g(transmitted,)h(A)n(CK)f(receiv)n(ed)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 304 320 +TeXDict begin 304 319 bop 515 203 a Fs(22.32)94 b Fo(<)p +Fs(compat/deprecated.h)p Fo(>)p Fs(:)41 b(Deprecated)32 +b(items)588 b(304)p 515 236 2865 4 v 515 523 a(22.31.2.28)92 +b(#de\034ne)31 b(TW_ST_SLA_A)m(CK)j(0xA8)515 670 y Fq(SLA+R)27 +b(receiv)n(ed,)g(A)n(CK)g(returned)515 929 y Fs(22.31.2.29)92 +b(#de\034ne)31 b(TW_ST)-8 b(AR)g(T)33 b(0x08)515 1076 +y Fq(start)27 b(condition)g(transmitted)515 1336 y Fs(22.31.2.30)92 +b(#de\034ne)76 b(TW_ST)-8 b(A)g(TUS)78 b(\(TWSR)e(&)h(TW_ST)-8 +b(A)g(TUS_-)515 1435 y(MASK\))515 1582 y Fq(TWSR,)28 +b(mask)n(ed)f(b)n(y)g(TW_ST)-7 b(A)g(TUS_MASK)515 1842 +y Fs(22.31.2.31)92 b(#de\034ne)31 b(TW_ST)-8 b(A)g(TUS_MASK)515 +1989 y(V)g(alue:)515 2178 y Fj(\(_BV\(TWS7\)|_BV\(TWS6\)|_BV\()q(TWS5)q +(\)|_)q(BV\(T)q(WS4\))q(|\\)1644 2257 y(_BV\(TWS3\)\))515 +2466 y Fq(The)30 b(lo)n(w)n(er)g(3)g(bits)h(of)g(TWSR)g(are)f(reserv)n +(ed)e(on)j(the)g(A)-7 b(Tmega163.)44 b(The)31 b(2)f(LSB)h(carry)515 +2566 y(the)d(prescaler)d(bits)j(on)g(the)g(new)n(er)e(A)-7 +b(Tmegas.)515 2825 y Fs(22.31.2.32)92 b(#de\034ne)31 +b(TW_WRITE)g(0)515 2972 y Fq(SLA+W)d(address)515 3248 +y Fn(22.32)112 b Fd(<)p Fn(compat/deprecated.h)p Fd(>)p +Fn(:)51 b(Deprecated)38 b(items)515 3449 y Fs(22.32.1)93 +b(Detailed)31 b(Description)515 3649 y Fq(This)38 b(header)f(\034le)i +(con)n(tains)e(sev)n(eral)g(items)h(that)h(used)f(to)g(b)r(e)h(a)n(v)-5 +b(ailable)37 b(in)h(previous)515 3749 y(v)n(ersions)25 +b(of)j(this)g(library)-7 b(,)26 b(but)i(ha)n(v)n(e)f(ev)n(en)n(tually)f +(b)r(een)i(deprecated)f(o)n(v)n(er)f(time.)550 3938 y +Fj(#include)37 b()515 4148 y Fq(These)23 +b(items)g(are)f(supplied)i(within)g(that)f(header)f(\034le)i(for)e(bac) +n(kw)n(ard)g(compatibilit)n(y)g(rea-)515 4247 y(sons)i(only)-7 +b(,)26 b(so)e(old)h(source)f(co)r(de)h(that)h(has)e(b)r(een)i(written)f +(for)g(previous)f(library)g(v)n(ersions)515 4347 y(could)g(easily)g(b)r +(e)h(main)n(tained)f(un)n(til)h(its)f(end-of-life.)36 +b(Use)24 b(of)h(an)n(y)f(of)g(these)h(items)f(in)h(new)515 +4447 y(co)r(de)i(is)h(strongly)e(discouraged.)515 4706 +y Fs(Allo)m(wing)k(sp)s(eci\034c)h(system-wide)f(in)m(terrupts)515 +4907 y Fq(In)36 b(addition)f(to)h(globally)f(enabling)g(in)n(terrupts,) +i(eac)n(h)f(device's)f(particular)f(in)n(terrupt)515 +5006 y(needs)d(to)g(b)r(e)h(enabled)g(separately)d(if)j(in)n(terrupts)f +(for)g(this)h(device)f(are)g(desired.)48 b(While)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 305 321 +TeXDict begin 305 320 bop 515 203 a Fs(22.32)94 b Fo(<)p +Fs(compat/deprecated.h)p Fo(>)p Fs(:)41 b(Deprecated)32 +b(items)588 b(305)p 515 236 2865 4 v 515 523 a Fq(some)25 +b(devices)g(main)n(tain)g(their)h(in)n(terrupt)f(enable)g(bit)h(inside) +g(the)g(device's)f(register)f(set,)515 623 y(external)i(and)i(timer)f +(in)n(terrupts)g(ha)n(v)n(e)g(system-wide)g(con\034guration)f +(registers.)515 770 y(Example:)656 979 y Fj(//)36 b(Enable)h(timer)f(1) +g(overflow)h(interrupts.)656 1058 y(timer_enable_int\(_BV\(TOIE)q +(1\)\))q(;)656 1215 y(//)f(Do)f(some)i(work...)656 1373 +y(//)f(Disable)h(all)f(timer)h(interrupts.)656 1452 y +(timer_enable_int\(0\);)506 1657 y Fs(Note:)676 1806 +y Fq(Be)d(careful)g(when)h(y)n(ou)f(use)g(these)g(functions.)58 +b(If)35 b(y)n(ou)f(already)f(ha)n(v)n(e)g(a)h(di\033eren)n(t)676 +1906 y(in)n(terrupt)f(enabled,)g(y)n(ou)f(could)h(inadv)n(ertan)n(tly)e +(disable)h(it)h(b)n(y)g(enabling)f(another)676 2006 y(in)n(tterupt.)639 +2236 y Fk(\210)41 b Fq(static)28 b(__inline__)e(v)n(oid)h +Fs(timer_enable_in)m(t)g Fq(\(unsigned)g(c)n(har)g(in)n(ts\))639 +2343 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(enable_external_in)m(t)p +Fq(\(mask\))g(\(__EICR)f(=)h(mask\))639 2451 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(INTERR)m(UPT)p Fq(\(signame\))639 +2559 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__INTR_A)-8 +b(TTRS)29 b Fq(used)515 2822 y Fs(Obsolete)h(IO)i(macros)515 +3023 y Fq(Bac)n(k)e(in)h(a)g(time)h(when)f(A)-9 b(VR-GCC)31 +b(and)g(a)n(vr-lib)r(c)f(could)h(not)g(handle)h(IO)e(p)r(ort)h(access) +515 3122 y(in)f(the)g(direct)f(assignmen)n(t)g(form)g(as)g(they)h(are)f +(handled)g(no)n(w,)h(all)f(IO)g(p)r(ort)h(access)e(had)515 +3222 y(to)i(b)r(e)h(done)f(through)f(sp)r(eci\034c)i(macros)d(that)j +(ev)n(en)n(tually)e(resulted)h(in)h(inline)f(assem)n(bly)515 +3322 y(instructions)d(p)r(erforming)f(the)i(desired)f(action.)515 +3469 y(These)34 b(macros)f(b)r(ecame)h(obsolete,)i(as)d(reading)h(and)g +(writing)g(IO)g(p)r(orts)g(can)g(b)r(e)h(done)515 3568 +y(b)n(y)e(simply)g(using)g(the)h(IO)f(p)r(ort)g(name)g(in)h(an)f +(expression,)g(and)g(all)h(bit)f(manipulation)515 3668 +y(\(including)k(those)g(on)f(IO)h(p)r(orts\))f(can)h(b)r(e)g(done)g +(using)f(generic)g(C)h(bit)g(manipulation)515 3767 y(op)r(erators.)515 +3914 y(The)g(macros)f(in)h(this)h(group)e(sim)n(ulate)h(the)h +(historical)e(b)r(eha)n(viour.)65 b(While)38 b(they)f(are)515 +4014 y(supp)r(osed)f(to)h(b)r(e)g(applied)g(to)f(IO)h(p)r(orts,)h(the)g +(em)n(ulation)e(actually)g(uses)g(standard)g(C)515 4114 +y(metho)r(ds,)28 b(so)e(they)i(could)g(b)r(e)g(applied)f(to)g +(arbitrary)f(memory)h(lo)r(cations)f(as)h(w)n(ell.)639 +4327 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(inp)p Fq(\(p)r(ort\))g(\(p)r +(ort\))639 4435 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(outp)p +Fq(\(v)-5 b(al,)28 b(p)r(ort\))g(\(p)r(ort\))f(=)h(\(v)-5 +b(al\))639 4543 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(in)m(b)p +Fq(\(p)r(ort\))g(\(p)r(ort\))639 4651 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(outb)p Fq(\(p)r(ort,)g(v)-5 b(al\))28 +b(\(p)r(ort\))f(=)h(\(v)-5 b(al\))639 4759 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(sbi)p Fq(\(p)r(ort,)f(bit\))i(\(p)r(ort\))e +Fh(j)p Fq(=)h(\(1)f Fo(<<)g Fq(\(bit\)\))639 4867 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(cbi)p Fq(\(p)r(ort,)g(bit\))g(\(p)r(ort\))g(&=)f +Fh(\030)p Fq(\(1)g Fo(<<)g Fq(\(bit\)\))p 515 5179 V +515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 306 322 +TeXDict begin 306 321 bop 515 203 a Fs(22.32)94 b Fo(<)p +Fs(compat/deprecated.h)p Fo(>)p Fs(:)41 b(Deprecated)32 +b(items)588 b(306)p 515 236 2865 4 v 515 523 a(22.32.2)93 +b(De\034ne)31 b(Do)s(cumen)m(tation)515 724 y(22.32.2.1)92 +b(#de\034ne)31 b(cbi\(p)s(ort,)63 b(bit\))32 b(\(p)s(ort\))g(&=)g +Fh(\030)p Fs(\(1)f Fo(<<)g Fs(\(bit\)\))506 927 y(Deprecated)515 +1309 y Fq(Clear)26 b Fm(bit)h Fq(in)h(IO)f(p)r(ort)g +Fm(port)p Fq(.)515 1569 y Fs(22.32.2.2)92 b(#de\034ne)41 +b(enable_external_in)m(t\(mask\))i(\(__EICR)f(=)h(mask\))506 +1852 y(Deprecated)515 2234 y Fq(This)22 b(macro)g(giv)n(es)f(access)g +(to)i(the)g Fm(GIMSK)d Fq(register)h(\(or)h Fm(EIMSK)f +Fq(register)g(if)i(using)f(an)h(A)-9 b(VR)515 2333 y(Mega)24 +b(device)h(or)g Fm(GICR)e Fq(register)h(for)h(others\).)35 +b(Although)26 b(this)f(macro)f(is)h(essen)n(tially)g(the)515 +2433 y(same)33 b(as)g(assigning)f(to)i(the)g(register,)g(it)g(do)r(es)g +(adapt)f(sligh)n(tly)h(to)f(the)i(t)n(yp)r(e)f(of)f(device)515 +2532 y(b)r(eing)e(used.)48 b(This)31 b(macro)f(is)h(una)n(v)-5 +b(ailable)30 b(if)i(none)f(of)g(the)g(registers)f(listed)h(ab)r(o)n(v)n +(e)f(are)515 2632 y(de\034ned.)515 2893 y Fs(22.32.2.3)92 +b(#de\034ne)31 b(in)m(b\(p)s(ort\))h(\(p)s(ort\))506 +3096 y(Deprecated)515 3478 y Fq(Read)27 b(a)g(v)-5 b(alue)28 +b(from)f(an)g(IO)g(p)r(ort)h Fm(port)p Fq(.)515 3739 +y Fs(22.32.2.4)92 b(#de\034ne)31 b(inp\(p)s(ort\))g(\(p)s(ort\))506 +3942 y(Deprecated)515 4324 y Fq(Read)c(a)g(v)-5 b(alue)28 +b(from)f(an)g(IO)g(p)r(ort)h Fm(port)p Fq(.)515 4585 +y Fs(22.32.2.5)92 b(#de\034ne)31 b(INTERR)m(UPT\(signame\))515 +4732 y(V)-8 b(alue:)515 4927 y Fj(void)36 b(signame)h(\(void\))g +(__attribute__)i(\(\(interrupt,__INTR_ATTRS)q(\)\);)112 +b(\\)515 5006 y(void)36 b(signame)h(\(void\))p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 307 323 +TeXDict begin 307 322 bop 515 203 a Fs(22.32)94 b Fo(<)p +Fs(compat/deprecated.h)p Fo(>)p Fs(:)41 b(Deprecated)32 +b(items)588 b(307)p 515 236 2865 4 v 506 497 a(Deprecated)515 +881 y Fq(In)n(tro)r(duces)32 b(an)h(in)n(terrupt)g(handler)g(function)h +(that)f(runs)g(with)h(global)e(in)n(terrupts)h(ini-)515 +981 y(tially)27 b(enabled.)37 b(This)27 b(allo)n(ws)f(in)n(terrupt)i +(handlers)e(to)i(b)r(e)g(in)n(terrupted.)515 1128 y(As)j(this)h(macro)e +(has)h(b)r(een)h(used)f(b)n(y)g(to)r(o)g(man)n(y)g(unsusp)r(ecting)h(p) +r(eople)f(in)h(the)f(past,)i(it)515 1227 y(has)j(b)r(een)i(deprecated,) +g(and)f(will)g(b)r(e)h(remo)n(v)n(ed)d(in)j(a)e(future)i(v)n(ersion)d +(of)i(the)g(library)-7 b(.)515 1327 y(Users)28 b(who)g(w)n(an)n(t)g(to) +g(legitimately)h(re-enable)e(in)n(terrupts)h(in)h(their)g(in)n(terrupt) +f(handlers)515 1426 y(as)40 b(quic)n(kly)f(as)h(p)r(ossible)g(are)g +(encouraged)e(to)j(explicitly)f(declare)g(their)g(handlers)g(as)515 +1526 y(describ)r(ed)27 b Fs(ab)s(o)m(v)m(e)h Fq(\(p.)14 +b(228\).)515 1787 y Fs(22.32.2.6)92 b(#de\034ne)31 b(outb\(p)s(ort,)63 +b(v)-5 b(al\))32 b(\(p)s(ort\))g(=)g(\(v)-5 b(al\))506 +1992 y(Deprecated)515 2376 y Fq(W)e(rite)28 b Fm(val)e +Fq(to)h(IO)h(p)r(ort)f Fm(port)p Fq(.)515 2637 y Fs(22.32.2.7)92 +b(#de\034ne)31 b(outp\(v)-5 b(al,)63 b(p)s(ort\))32 b(\(p)s(ort\))g(=)g +(\(v)-5 b(al\))506 2841 y(Deprecated)515 3225 y Fq(W)e(rite)28 +b Fm(val)e Fq(to)h(IO)h(p)r(ort)f Fm(port)p Fq(.)515 +3486 y Fs(22.32.2.8)92 b(#de\034ne)31 b(sbi\(p)s(ort,)62 +b(bit\))32 b(\(p)s(ort\))g Fh(j)p Fs(=)g(\(1)g Fo(<<)f +Fs(\(bit\)\))506 3691 y(Deprecated)515 4075 y Fq(Set)d +Fm(bit)e Fq(in)i(IO)f(p)r(ort)g Fm(port)p Fq(.)515 4336 +y Fs(22.32.3)93 b(F)-8 b(unction)32 b(Do)s(cumen)m(tation)515 +4536 y(22.32.3.1)92 b(static)27 b(__inline__)g(v)m(oid)g +(timer_enable_in)m(t)f(\(unsigned)g(c)m(har)515 4636 +y Fc(ints)p Fs(\))71 b Fm([static])506 4841 y Fs(Deprecated)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 308 324 +TeXDict begin 308 323 bop 515 203 a Fs(22.33)94 b Fo(<)p +Fs(compat/ina90.h)p Fo(>)p Fs(:)40 b(Compatibilit)m(y)30 +b(with)i(IAR)f(EWB)g(3.x)132 b(308)p 515 236 2865 4 v +515 523 a Fq(This)22 b(function)i(mo)r(di\034es)e(the)h +Fm(timsk)e Fq(register.)34 b(The)22 b(v)-5 b(alue)23 +b(y)n(ou)f(pass)g(via)g Fm(ints)f Fq(is)h(device)515 +623 y(sp)r(eci\034c.)515 902 y Fn(22.33)112 b Fd(<)p +Fn(compat/ina90.h)p Fd(>)p Fn(:)55 b(Compatibilit)m(y)41 +b(with)e(IAR)f(EWB)882 1019 y(3.x)550 1198 y Fj(#include)f +()515 1428 y Fq(This)32 b(is)g(an)h(attempt)g(to)f(pro) +n(vide)f(some)h(compatibilit)n(y)g(with)h(header)f(\034les)g(that)h +(come)515 1528 y(with)h(IAR)h(C,)f(to)g(mak)n(e)g(p)r(orting)g +(applications)f(b)r(et)n(w)n(een)h(di\033eren)n(t)g(compilers)f +(easier.)515 1627 y(No)27 b(100\045)f(compatibilit)n(y)i(though.)506 +1839 y Fs(Note:)676 1989 y Fq(F)-7 b(or)27 b(actual)g(do)r(cumen)n +(tation,)g(please)g(see)g(the)h(IAR)g(man)n(ual.)515 +2268 y Fn(22.34)112 b(Demo)38 b(pro)6 b(jects)515 2469 +y Fs(22.34.1)93 b(Detailed)31 b(Description)515 2669 +y Fq(V)-7 b(arious)29 b(small)h(demo)g(pro)5 b(jects)29 +b(are)h(pro)n(vided)f(to)h(illustrate)g(sev)n(eral)e(asp)r(ects)i(of)g +(using)515 2769 y(the)40 b(op)r(ensource)f(utilities)h(for)g(the)g(A)-9 +b(VR)41 b(con)n(troller)d(series.)73 b(It)40 b(should)g(b)r(e)g(k)n +(ept)g(in)515 2869 y(mind)d(that)g(these)f(demos)g(serv)n(e)f(mainly)i +(educational)e(purp)r(oses,)j(and)f(are)e(normally)515 +2968 y(not)26 b(directly)f(suitable)h(for)f(use)h(in)g(an)n(y)f(pro)r +(duction)g(en)n(vironmen)n(t.)35 b(Usually)-7 b(,)26 +b(they)g(ha)n(v)n(e)515 3068 y(b)r(een)i(k)n(ept)f(as)g(simple)h(as)f +(su\036cien)n(t)g(to)h(demonstrate)e(one)i(particular)e(feature.)515 +3215 y(The)33 b Fs(simple)i(pro)5 b(ject)34 b Fq(\(p.)14 +b(313\))32 b(is)h(somewhat)f(lik)n(e)g(the)h("Hello)g(w)n(orld!")e +(application)515 3314 y(for)k(a)g(micro)r(con)n(troller,)g(ab)r(out)g +(the)h(most)f(simple)h(pro)5 b(ject)34 b(that)i(can)f(b)r(e)h(done.)60 +b(It)36 b(is)515 3414 y(explained)29 b(in)i(go)r(o)r(d)e(detail,)i(to)f +(allo)n(w)f(the)h(reader)f(to)h(understand)g(the)g(basic)g(concepts)515 +3514 y(b)r(ehind)e(using)f(the)h(to)r(ols)f(on)h(an)f(A)-9 +b(VR)28 b(micro)r(con)n(troller.)515 3661 y(The)e Fs(more)j +(sophisticated)h(demo)f(pro)5 b(ject)27 b Fq(\(p.)14 +b(330\))25 b(builds)i(on)e(top)h(of)h(that)f(simple)515 +3760 y(pro)5 b(ject,)33 b(and)f(adds)g(some)f(con)n(trols)g(to)h(it.)52 +b(It)33 b(touc)n(hes)f(a)f(n)n(um)n(b)r(er)i(of)f(a)n(vr-lib)r(c's)f +(basic)515 3860 y(concepts)c(on)g(its)h(w)n(a)n(y)-7 +b(.)515 4007 y(A)30 b Fs(comprehensiv)m(e)35 b(example)f(on)h(using)f +(the)h(standard)h(IO)f(facilities)29 b Fq(\(p.)14 b(338\))515 +4106 y(in)n(tends)26 b(to)g(explain)f(that)i(complex)e(topic,)i(using)e +(a)h(practical)f(micro)r(con)n(troller)e(p)r(eriph-)515 +4206 y(eral)29 b(setup)h(with)g(one)g(RS-232)f(connection,)h(and)f(an)h +(HD44780-compatible)e(industry-)515 4306 y(standard)e(LCD)i(displa)n(y) +-7 b(.)515 4452 y(The)19 b Fs(Example)j(using)g(the)h(t)m(w)m(o-wire)f +(in)m(terface)i(\(TWI\))c Fq(\(p.)14 b(346\))19 b(pro)5 +b(ject)19 b(explains)515 4552 y(the)k(use)g(of)g(the)h(t)n(w)n(o-wire)d +(hardw)n(are)g(in)n(terface)h(\(also)h(kno)n(wn)f(as)h("I2C"\))e(that)j +(is)f(presen)n(t)515 4652 y(on)k(man)n(y)g(A)-9 b(VR)28 +b(con)n(trollers.)515 4799 y(Finally)-7 b(,)31 b(the)g +Fs(Com)m(bining)i(C)j(and)f(assem)m(bly)g(source)g(\034les)29 +b Fq(\(p.)14 b(309\))30 b(demo)g(sho)n(ws)515 4898 y(ho)n(w)i(C)g(and)h +(assem)n(bly)e(language)g(source)h(\034les)g(can)g(collab)r(orate)f +(within)j(one)e(pro)5 b(ject.)515 4998 y(While)22 b(the)g(o)n(v)n +(erall)e(pro)5 b(ject)21 b(is)g(managed)g(b)n(y)h(a)f(C)h(program)d +(part)j(for)f(easy)g(main)n(tenance,)p 515 5179 V 515 +5255 a Fp(Generated)k(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 309 325 +TeXDict begin 309 324 bop 515 203 a Fs(22.35)94 b(Com)m(bining)30 +b(C)i(and)g(assem)m(bly)f(source)h(\034les)776 b(309)p +515 236 2865 4 v 515 523 a Fq(time-critical)21 b(parts)f(are)h(written) +g(directly)h(in)f(man)n(ually)g(optimized)h(assem)n(bly)e(language)515 +623 y(for)37 b(shortest)f(execution)h(times)h(p)r(ossible.)66 +b(Naturally)-7 b(,)39 b(this)e(kind)h(of)f(pro)5 b(ject)37 +b(is)g(v)n(ery)515 722 y(closely)c(tied)i(to)f(the)h(hardw)n(are)d +(design,)j(th)n(us)g(it)g(is)f(custom-tailored)e(to)j(a)e(particular) +515 822 y(con)n(troller)18 b(t)n(yp)r(e)i(and)g(p)r(eripheral)f(setup.) +34 b(As)20 b(an)g(alternativ)n(e)e(to)i(the)g(assem)n(bly-language)515 +922 y(solution,)30 b(this)g(pro)5 b(ject)29 b(also)g(o\033ers)g(a)g +(C-only)g(implemen)n(tation)h(\(deplo)n(ying)f(the)i(exact)515 +1021 y(same)20 b(p)r(eripheral)f(setup\))i(based)f(on)h(a)f(more)g +(sophisticated)f(\(and)i(th)n(us)g(more)e(exp)r(ensiv)n(e\))515 +1121 y(but)28 b(pin-compatible)f(con)n(troller.)515 1268 +y(While)d(the)h(simple)f(demo)g(is)g(mean)n(t)f(to)h(run)g(on)g(ab)r +(out)g(an)n(y)f(A)-9 b(VR)25 b(setup)f(p)r(ossible)g(where)515 +1367 y(a)40 b(LED)i(could)f(b)r(e)g(connected)g(to)g(the)g(OCR1[A])f +(output,)45 b(the)c Fs(large)g Fq(\(p.)14 b(330\))40 +b(and)515 1467 y Fs(stdio)f Fq(\(p.)14 b(338\))38 b(demos)i(are)e +(mainly)i(targeted)f(to)g(the)h(A)n(tmel)g(STK500)e(starter)h(kit,)515 +1567 y(and)c(the)h Fs(TWI)h Fq(\(p.)14 b(346\))35 b(example)g(requires) +f(a)i(con)n(troller)d(where)j(some)f(24Cxx)f(t)n(w)n(o-)515 +1666 y(wire)39 b(EEPPR)n(OM)i(can)e(b)r(e)h(connected)f(to.)73 +b(F)-7 b(or)39 b(the)h(STK500)e(demos,)k(the)e(default)515 +1766 y(CPU)d(\(either)g(an)f(A)-7 b(T90S8515)34 b(or)i(an)g(A)-7 +b(Tmega8515\))34 b(should)j(b)r(e)g(remo)n(v)n(ed)e(from)h(its)515 +1865 y(so)r(c)n(k)n(et,)23 b(and)g(the)g(A)-7 b(Tmega16)22 +b(that)i(ships)f(with)h(the)f(kit)h(should)f(b)r(e)g(inserted)g(in)n +(to)g(so)r(c)n(k)n(et)515 1965 y(SCKT3100A3.)32 b(The)20 +b(A)-7 b(Tmega16)19 b(o\033ers)h(an)g(on-b)r(oard)f(ADC)j(that)e(is)h +(used)f(in)h(the)g Fs(large)515 2065 y Fq(\(p.)14 b(330\))30 +b(demo,)h(and)f(all)h(A)-9 b(VRs)31 b(with)g(an)f(ADC)i(feature)e(a)g +(di\033eren)n(t)h(pinout)g(than)g(the)515 2164 y(industry-standard)26 +b(compatible)h(devices.)515 2311 y(In)33 b(order)f(to)h(fully)g +(utilize)h(the)f Fs(large)g Fq(\(p.)14 b(330\))32 b(demo,)j(a)d(female) +h(10-pin)f(header)h(with)515 2411 y(cable,)27 b(connecting)g(to)g(a)h +(10)e(kOhm)i(p)r(oten)n(tiometer)f(will)g(b)r(e)h(useful.)515 +2558 y(F)-7 b(or)32 b(the)i Fs(stdio)e Fq(\(p.)14 b(338\))32 +b(demo,)j(an)e(industry-standard)e(HD44780-compatible)g(LCD)515 +2657 y(displa)n(y)36 b(of)g(at)h(least)f(16x1)f(c)n(haracters)f(will)j +(b)r(e)g(needed.)64 b(Among)37 b(other)f(things,)j(the)515 +2757 y Fm(LCD4Linux)21 b Fq(pro)5 b(ject)23 b(page)h(describ)r(es)g +(man)n(y)g(things)h(around)e(these)i(displa)n(ys,)f(including)515 +2857 y(common)j(pinouts.)515 3120 y Fs(Mo)s(dules)639 +3306 y Fk(\210)41 b Fs(Com)m(bining)31 b(C)g(and)i(assem)m(bly)e +(source)g(\034les)639 3414 y Fk(\210)41 b Fs(A)32 b(simple)e(pro)5 +b(ject)639 3522 y Fk(\210)41 b Fs(A)32 b(more)f(sophisticated)g(pro)5 +b(ject)639 3630 y Fk(\210)41 b Fs(Using)31 b(the)h(standard)h(IO)f +(facilities)639 3738 y Fk(\210)41 b Fs(Example)31 b(using)g(the)h(t)m +(w)m(o-wire)g(in)m(terface)g(\(TWI\))515 4017 y Fn(22.35)112 +b(Com)m(bining)39 b(C)e(and)h(assem)m(bly)h(source)f(\034les)515 +4218 y Fq(F)-7 b(or)29 b(time-)g(or)g(space-critical)e(applications,)i +(it)h(can)f(often)h(b)r(e)f(desirable)g(to)g(com)n(bine)g(C)515 +4317 y(co)r(de)d(\(for)g(easy)g(main)n(tenance\))g(and)h(assem)n(bly)e +(co)r(de)h(\(for)h(maximal)e(sp)r(eed)i(or)f(minimal)515 +4417 y(co)r(de)h(size\))h(together.)36 b(This)27 b(demo)g(pro)n(vides)f +(an)i(example)f(of)g(ho)n(w)g(to)h(do)f(that.)515 4564 +y(The)34 b(ob)5 b(jectiv)n(e)33 b(of)h(the)g(demo)f(is)h(to)g(deco)r +(de)g(radio-con)n(trolled)c(mo)r(del)k(PWM)h(signals,)515 +4664 y(and)g(con)n(trol)f(an)h(output)h(PWM)h(based)e(on)g(the)h +(curren)n(t)e(input)i(signal's)f(v)-5 b(alue.)60 b(The)515 +4763 y(incoming)27 b(PWM)i(pulses)e(follo)n(w)g(a)g(standard)g(enco)r +(ding)g(sc)n(heme)g(where)g(a)h(pulse)f(width)515 4863 +y(of)21 b(920)e(microseconds)g(denotes)i(one)f(end)h(of)g(the)h(scale)e +(\(represen)n(ted)g(as)g(0)g(\045)i(pulse)e(width)515 +4962 y(on)27 b(output\),)i(and)f(2120)e(microseconds)g(mark)h(the)i +(other)e(end)h(\(100)f(\045)h(output)h(PWM\).)p 515 5179 +V 515 5255 a Fp(Generated)c(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 310 326 +TeXDict begin 310 325 bop 515 203 a Fs(22.35)94 b(Com)m(bining)30 +b(C)i(and)g(assem)m(bly)f(source)h(\034les)776 b(310)p +515 236 2865 4 v 515 523 a Fq(Normally)-7 b(,)31 b(m)n(ultiple)h(c)n +(hannels)e(w)n(ould)h(b)r(e)g(enco)r(ded)h(that)f(w)n(a)n(y)f(in)h +(subsequen)n(t)g(pulses,)515 623 y(follo)n(w)n(ed)24 +b(b)n(y)i(a)f(larger)f(gap,)h(so)g(the)i(en)n(tire)e(frame)g(will)h +(rep)r(eat)f(eac)n(h)g(14)g(through)g(20)g(ms,)515 722 +y(but)33 b(this)h(is)f(ignored)f(for)g(the)i(purp)r(ose)e(of)h(the)h +(demo,)g(so)e(only)h(a)g(single)f(input)i(PWM)515 822 +y(c)n(hannel)27 b(is)g(assumed.)515 969 y(The)k(basic)g(c)n(hallenge)f +(is)h(to)g(use)g(the)h(c)n(heap)r(est)e(con)n(troller)g(a)n(v)-5 +b(ailable)29 b(for)i(the)h(task,)f(an)515 1068 y(A)-7 +b(Ttin)n(y13)22 b(that)h(has)f(only)g(a)g(single)h(timer)f(c)n(hannel.) +35 b(As)23 b(this)g(timer)f(c)n(hannel)h(is)f(required)515 +1168 y(to)k(run)h(the)g(outgoing)e(PWM)j(signal)e(generation,)f(the)i +(incoming)f(PWM)i(deco)r(ding)e(had)515 1268 y(to)h(b)r(e)h(adjusted)g +(to)f(the)h(constrain)n(ts)e(set)i(b)n(y)f(the)h(outgoing)e(PWM.)515 +1415 y(As)k(PWM)g(generation)e(toggles)h(the)h(coun)n(ting)f(direction) +g(of)h(timer)f(0)h(b)r(et)n(w)n(een)f(up)h(and)515 1514 +y(do)n(wn)20 b(after)h(eac)n(h)f(256)g(timer)h(cycles,)g(the)h(curren)n +(t)e(time)h(cannot)g(b)r(e)g(deduced)h(b)n(y)e(reading)515 +1614 y(TCNT0)30 b(only)-7 b(,)30 b(but)h(the)f(curren)n(t)f(coun)n +(ting)h(direction)g(of)g(the)g(timer)g(needs)g(to)g(b)r(e)h(con-)515 +1713 y(sidered)25 b(as)f(w)n(ell.)36 b(This)26 b(requires)e(servicing)g +(in)n(terrupts)g(whenev)n(er)h(the)h(timer)f(hits)h Fl(TOP)515 +1813 y Fq(\(255\))h(and)h Fl(BOTTOM)43 b Fq(\(0\))28 +b(to)g(learn)f(ab)r(out)h(eac)n(h)g(c)n(hange)e(of)j(the)f(coun)n(ting) +g(direction.)515 1913 y(F)-7 b(or)21 b(PWM)j(generation,)e(it)g(is)h +(usually)e(desired)h(to)g(run)g(it)h(at)f(the)h(highest)f(p)r(ossible)g +(sp)r(eed)515 2012 y(so)h(\034ltering)g(the)h(PWM)h(frequency)e(from)g +(the)h(mo)r(dulated)g(output)g(signal)f(is)g(made)h(easy)-7 +b(.)515 2112 y(Th)n(us,)33 b(the)h(PWM)f(timer)g(runs)f(at)h(full)g +(CPU)g(sp)r(eed.)53 b(This)32 b(causes)g(the)h(o)n(v)n(er\035o)n(w)d +(and)515 2212 y(compare)g(matc)n(h)i(in)n(terrupts)f(to)h(b)r(e)g +(triggered)e(eac)n(h)h(256)f(CPU)j(clo)r(c)n(ks,)f(so)f(they)h(m)n(ust) +515 2311 y(run)22 b(with)h(the)f(minimal)h(n)n(um)n(b)r(er)f(of)g(pro)r +(cessor)e(cycles)i(p)r(ossible)g(in)h(order)e(to)h(not)g(imp)r(ose)515 +2411 y(a)f(to)r(o)g(high)h(CPU)h(load)d(b)n(y)i(these)g(in)n(terrupt)f +(service)g(routines.)34 b(This)21 b(is)h(the)g(main)g(reason)515 +2510 y(to)30 b(implemen)n(t)h(the)g(en)n(tire)g(in)n(terrupt)f +(handling)g(in)h(\034ne-tuned)g(assem)n(bly)f(co)r(de)g(rather)515 +2610 y(than)d(in)h(C.)515 2757 y(In)21 b(order)f(to)h(v)n(erify)g +(parts)f(of)h(the)h(algorithm,)f(and)g(the)h(underlying)e(hardw)n(are,) +h(the)g(demo)515 2857 y(has)31 b(b)r(een)g(set)h(up)f(in)h(a)f(w)n(a)n +(y)f(so)h(the)h(pin-compatible)f(but)g(more)g(exp)r(ensiv)n(e)g(A)-7 +b(Ttin)n(y45)515 2956 y(\(or)26 b(its)h(siblings)f(A)-7 +b(Ttin)n(y25)27 b(and)f(A)-7 b(Ttin)n(y85\))27 b(could)f(b)r(e)i(used)e +(as)h(w)n(ell.)36 b(In)27 b(that)g(case,)f(no)515 3056 +y(separate)g(assem)n(bly)g(co)r(de)i(is)f(required,)g(as)g(t)n(w)n(o)f +(timer)i(c)n(hannels)f(are)f(a)n(v)-5 b(aible.)515 3319 +y Fs(22.35.1)93 b(Hardw)m(are)33 b(setup)515 3519 y Fq(The)d(incoming)f +(PWM)i(pulse)e(train)h(is)f(fed)h(in)n(to)g(PB4.)43 b(It)30 +b(will)g(generate)f(a)g(pin)h(c)n(hange)515 3619 y(in)n(terrupt)d +(there)g(on)h(eac)n(he)e(edge)h(of)h(the)g(incoming)f(signal.)515 +3766 y(The)f(outgoing)g(PWM)h(is)g(generated)e(through)h(OC0B)f(of)i +(timer)g(c)n(hannel)f(0)g(\(PB1\).)37 b(F)-7 b(or)515 +3865 y(demonstration)31 b(purp)r(oses,)i(a)g(LED)g(should)g(b)r(e)g +(connected)f(to)h(that)g(pin)g(\(lik)n(e,)h(one)e(of)515 +3965 y(the)c(LEDs)g(of)f(an)h(STK500\).)515 4112 y(The)g(con)n +(trollers)d(run)j(on)g(their)f(in)n(ternal)h(calibrated)e(R)n(C)i +(oscillators,)e(1.2)h(MHz)h(on)g(the)515 4212 y(A)-7 +b(Ttin)n(y13,)27 b(and)g(1.0)g(MHz)h(on)f(the)h(A)-7 +b(Ttin)n(y45.)515 4475 y Fs(22.35.2)93 b(A)32 b(co)s(de)f(w)m +(alkthrough)515 4675 y(22.35.2.1)92 b(asmdemo.c)82 b +Fq(After)35 b(the)g(usual)g(include)g(\034les,)i(t)n(w)n(o)d(v)-5 +b(ariables)33 b(are)h(de-)515 4775 y(\034ned.)63 b(The)37 +b(\034rst)f(one,)i Fm(pwm_incoming)31 b Fq(is)37 b(used)f(to)g(comm)n +(unicate)g(the)h(most)f(recen)n(t)515 4874 y(pulse)27 +b(width)h(detected)g(b)n(y)g(the)g(incoming)f(PWM)h(deco)r(der)f(up)h +(to)g(the)f(main)h(lo)r(op.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 311 327 +TeXDict begin 311 326 bop 515 203 a Fs(22.35)94 b(Com)m(bining)30 +b(C)i(and)g(assem)m(bly)f(source)h(\034les)776 b(311)p +515 236 2865 4 v 515 523 a Fq(The)35 b(second)g(v)-5 +b(ariable)35 b(actually)g(only)g(constitutes)g(of)h(a)f(single)g(bit,)k +Fm(intbits.pwm_-)515 623 y(received)p Fq(.)45 b(This)31 +b(bit)i(will)e(b)r(e)h(set)g(whenev)n(er)e(the)i(incoming)f(PWM)h(deco) +r(der)f(has)g(up-)515 722 y(dated)c Fm(pwm_incoming)p +Fq(.)515 869 y(Both)32 b(v)-5 b(ariables)30 b(are)h(mark)n(ed)g +Fl(volatile)40 b Fq(to)32 b(ensure)f(their)h(readers)f(will)h(alw)n(a)n +(ys)e(pic)n(k)i(up)515 969 y(an)27 b(up)r(dated)h(v)-5 +b(alue,)28 b(as)e(b)r(oth)i(v)-5 b(ariables)27 b(will)g(b)r(e)h(set)g +(b)n(y)f(in)n(terrupt)h(service)e(routines.)515 1116 +y(The)39 b(function)h Fm(ioinit\(\))35 b Fq(initializes)k(the)h(micro)r +(con)n(troller)d(p)r(eripheral)h(devices.)71 b(In)515 +1215 y(particular,)35 b(it)h(starts)e(timer)h(0)f(to)h(generate)f(the)h +(outgoing)f(PWM)h(signal)f(on)h(OC0B.)515 1315 y(Setting)27 +b(OCR0A)f(to)g(255)f(\(whic)n(h)i(is)g(the)f Fl(TOP)36 +b Fq(v)-5 b(alue)26 b(of)h(timer)g(0\))f(is)g(used)h(to)f(generate)515 +1415 y(a)40 b(timer)g(0)g(o)n(v)n(er\035o)n(w)d(A)k(in)n(terrupt)f(on)f +(the)i(A)-7 b(Ttin)n(y13.)74 b(This)40 b(in)n(terrupt)g(is)g(used)g(to) +515 1514 y(inform)29 b(the)g(incoming)g(PWM)h(deco)r(der)f(that)g(the)g +(coun)n(ting)g(direction)g(of)g(c)n(hannel)f(0)h(is)515 +1614 y(just)20 b(c)n(hanging)f(from)g(up)h(to)g(do)n(wn.)34 +b(Lik)n(ewise,)20 b(an)g(o)n(v)n(er\035o)n(w)d(in)n(terrupt)j(will)g(b) +r(e)g(generated)515 1713 y(whenev)n(er)30 b(the)h(coun)n(tdo)n(wn)f +(reac)n(hed)f Fl(BOTTOM)46 b Fq(\(v)-5 b(alue)31 b(0\),)g(where)g(the)g +(coun)n(ter)f(will)515 1813 y(again)35 b(alter)h(its)h(coun)n(ting)f +(direction)g(to)h(up)n(w)n(ards.)62 b(This)37 b(information)f(is)g +(needed)h(in)515 1913 y(order)32 b(to)i(kno)n(w)g(whether)g(the)g +(curren)n(t)f(coun)n(ter)h(v)-5 b(alue)34 b(of)g Fm(TCNT0)e +Fq(is)i(to)g(b)r(e)g(ev)-5 b(aluated)515 2012 y(from)27 +b(b)r(ottom)h(or)e(top.)515 2159 y(F)-7 b(urther,)38 +b Fm(ioinit\(\))33 b Fq(activ)-5 b(ates)36 b(the)g(pin-c)n(hange)f(in)n +(terrupt)h Fm(PCINT0)e Fq(on)i(an)n(y)f(edge)h(of)515 +2259 y(PB4.)75 b(Finally)-7 b(,)44 b(PB1)c(\(OC0B\))g(will)h(b)r(e)g +(activ)-5 b(ated)40 b(as)g(an)g(output)h(pin,)j(and)c(global)515 +2358 y(in)n(terrupts)27 b(are)f(b)r(eing)i(enabled.)515 +2505 y(In)k(the)h(A)-7 b(Ttin)n(y45)32 b(setup,)i(the)e(C)h(co)r(de)f +(con)n(tains)f(an)h(ISR)h(for)f Fm(PCINT0)p Fq(.)49 b(A)n(t)32 +b(eac)n(h)g(pin-)515 2605 y(c)n(hange)27 b(in)n(terrupt,)i(it)h(will)f +(\034rst)f(b)r(e)i(analyzed)e(whether)g(the)i(in)n(terrupt)e(w)n(as)g +(caused)g(b)n(y)515 2705 y(a)d(rising)f(or)h(a)g(falling)g(edge.)36 +b(In)25 b(case)g(of)g(the)h(rising)e(edge,)i(timer)f(1)g(will)h(b)r(e)g +(started)f(with)515 2804 y(a)35 b(prescaler)g(of)h(16)f(after)h +(clearing)e(the)j(curren)n(t)e(timer)h(v)-5 b(alue.)62 +b(Then,)39 b(at)d(the)g(falling)515 2904 y(edge,)31 b(the)g(curren)n(t) +e(timer)i(v)-5 b(alue)30 b(will)h(b)r(e)g(recorded)e(\(and)i(timer)f(1) +g(stopp)r(ed\),)i(the)f(pin-)515 3003 y(c)n(hange)i(in)n(terrupt)g +(will)i(b)r(e)f(susp)r(ended,)i(and)e(the)g(upp)r(er)h(la)n(y)n(er)d +(will)i(b)r(e)h(noti\034ed)f(that)515 3103 y(the)28 b(incoming)f(PWM)h +(measuremen)n(t)f(data)g(is)g(a)n(v)-5 b(ailable.)515 +3250 y(F)e(unction)36 b Fm(main\(\))d Fq(\034rst)i(initializes)g(the)h +(hardw)n(are)e(b)n(y)h(calling)g Fm(ioinit\(\))p Fq(,)f(and)i(then)515 +3350 y(w)n(aits)31 b(un)n(til)i(some)e(incoming)g(PWM)i(v)-5 +b(alue)32 b(is)g(a)n(v)-5 b(ailable.)49 b(If)33 b(it)f(is,)h(the)g +(output)f(PWM)515 3449 y(will)23 b(b)r(e)h(adjusted)g(b)n(y)f +(computing)g(the)h(relativ)n(e)e(v)-5 b(alue)23 b(of)g(the)h(incoming)f +(PWM.)h(Finally)-7 b(,)515 3549 y(the)28 b(pin-c)n(hange)e(in)n +(terrupt)h(is)h(re-enabled,)e(and)i(the)f(CPU)i(is)e(put)h(to)g(sleep.) +515 3812 y Fs(22.35.2.2)92 b(pro)5 b(ject.h)83 b Fq(In)24 +b(order)f(for)g(the)h(in)n(terrupt)f(service)g(routines)g(to)g(b)r(e)h +(as)f(fast)515 3911 y(as)i(p)r(ossible,)i(some)e(of)i(the)f(CPU)h +(registers)e(are)g(set)h(aside)g(completely)g(for)g(use)g(b)n(y)g +(these)515 4011 y(routines,)k(so)f(the)h(compiler)f(w)n(ould)h(not)g +(use)g(them)g(for)f(C)h(co)r(de.)44 b(This)30 b(is)g(arranged)e(for)515 +4111 y(in)g Fm(project.h)p Fq(.)515 4258 y(The)35 b(\034le)h(is)f +(divided)h(in)n(to)f(one)g(section)g(that)h(will)g(b)r(e)g(used)f(b)n +(y)g(the)h(assem)n(bly)e(source)515 4357 y(co)r(de,)23 +b(and)g(another)f(one)h(to)g(b)r(e)g(used)g(b)n(y)g(C)g(co)r(de.)35 +b(The)23 b(assem)n(bly)f(part)g(is)h(distinguished)515 +4457 y(b)n(y)h(the)g(prepro)r(cessing)f(macro)g Fm(__ASSEMBLER__)18 +b Fq(\(whic)n(h)25 b(will)f(b)r(e)h(automatically)e(set)h(b)n(y)515 +4556 y(the)36 b(compiler)f(fron)n(t-end)f(when)i(prepro)r(cessing)e(an) +h(assem)n(bly-language)d(\034le\),)38 b(and)e(it)515 +4656 y(con)n(tains)30 b(just)i(macros)e(that)i(giv)n(e)e(sym)n(b)r +(olic)h(names)g(to)g(a)g(n)n(um)n(b)r(er)g(of)h(CPU)g(registers.)515 +4756 y(The)26 b(prepro)r(cessor)e(will)i(then)h(replace)e(the)i(sym)n +(b)r(olic)e(names)h(b)n(y)g(their)g(righ)n(t-hand)f(side)515 +4855 y(de\034nitions)i(b)r(efore)h(calling)e(the)i(assem)n(bler.)515 +5002 y(In)38 b(C)f(co)r(de,)j(the)f(compiler)e(needs)g(to)h(see)f(v)-5 +b(ariable)37 b(declarations)f(for)h(these)h(ob)5 b(jects.)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 312 328 +TeXDict begin 312 327 bop 515 203 a Fs(22.35)94 b(Com)m(bining)30 +b(C)i(and)g(assem)m(bly)f(source)h(\034les)776 b(312)p +515 236 2865 4 v 515 523 a Fq(This)29 b(is)f(done)h(b)n(y)g(using)f +(declarations)f(that)j(bind)f(a)g(v)-5 b(ariable)27 b(p)r(ermanen)n +(tly)i(to)g(a)f(CPU)515 623 y(register)c(\(see)h Fs(Ho)m(w)k(to)g(p)s +(ermanen)m(tly)g(bind)g(a)h(v)-5 b(ariable)29 b(to)g(a)h(register?)35 +b Fq(\(p.)14 b(63\)\).)515 722 y(Ev)n(en)33 b(in)g(case)f(the)h(C)g(co) +r(de)f(nev)n(er)g(has)g(a)h(need)g(to)f(access)g(these)h(v)-5 +b(ariables,)32 b(declaring)515 822 y(the)f(register)e(binding)i(that)g +(w)n(a)n(y)e(causes)h(the)h(compiler)f(to)g(not)h(use)f(these)h +(registers)e(in)515 922 y(C)e(co)r(de)h(at)f(all.)515 +1068 y(The)37 b Fm(flags)e Fq(v)-5 b(ariable)36 b(needs)h(to)g(b)r(e)g +(in)g(the)h(range)d(of)i(r16)f(through)g(r31)g(as)g(it)i(is)f(the)515 +1168 y(target)e(of)h(a)g Fl(lo)l(ad)j(imme)l(diate)44 +b Fq(\(or)36 b Fm(SER)p Fq(\))f(instruction)h(that)g(is)h(not)f +(applicable)g(to)g(the)515 1268 y(en)n(tire)27 b(register)f(\034le.)515 +1530 y Fs(22.35.2.3)92 b(isrs.S)82 b Fq(This)39 b(\034le)h(is)g(a)f +(prepro)r(cessed)f(assem)n(bly)h(source)f(\034le.)73 +b(The)40 b(C)515 1629 y(prepro)r(cessor)23 b(will)i(b)r(e)h(run)g(b)n +(y)f(the)h(compiler)f(fron)n(t-end)g(\034rst,)g(resolving)f(all)h +Fm(#include)p Fq(,)515 1729 y Fm(#define)i Fq(etc.)43 +b(directiv)n(es.)f(The)30 b(resulting)f(program)f(text)i(will)g(then)g +(b)r(e)g(passed)f(on)g(to)515 1828 y(the)f(assem)n(bler.)515 +1975 y(As)20 b(the)h(C)f(prepro)r(cessor)e(strips)i(all)g(C-st)n(yle)f +(commen)n(ts,)j(prepro)r(cessed)c(assem)n(bly)h(source)515 +2075 y(\034les)28 b(can)h(ha)n(v)n(e)e(b)r(oth,)i(C-st)n(yle)f(\()p +Fm(/)p Fh(\003)43 b Fm(...)86 b Fh(\003)p Fm(/)p Fq(,)28 +b Fm(//)43 b(...)p Fq(\))c(as)28 b(w)n(ell)h(as)f(assem)n(bly-st)n(yle) +e(\()p Fm(;)515 2175 y(...)p Fq(\))36 b(commen)n(ts.)515 +2321 y(A)n(t)f(the)h(top,)h(the)e(IO)g(register)f(de\034nition)h +(\034le)g Fm(avr/io.h)41 b(\()p Fq(p.)14 b Fm(366\))33 +b Fq(and)i(the)h(pro)5 b(ject)515 2421 y(declaration)37 +b(\034le)h Fm(project.h)d Fq(are)i(included.)69 b(The)39 +b(remainder)e(of)h(the)h(\034le)f(is)h(condi-)515 2521 +y(tionally)33 b(assem)n(bled)h(only)g(if)g(the)h(target)e(MCU)i(t)n(yp) +r(e)f(is)h(an)f(A)-7 b(Ttin)n(y13,)35 b(so)f(it)g(will)h(b)r(e)515 +2620 y(completely)27 b(ignored)f(for)h(the)h(A)-7 b(Ttin)n(y45)27 +b(option.)515 2767 y(Next)e(are)f(the)h(t)n(w)n(o)f(in)n(terrupt)g +(service)g(routines)g(for)g(timer)h(0)f(compare)f(A)i(matc)n(h)g +(\(timer)515 2867 y(0)i(hits)h Fl(TOP)9 b Fq(,)28 b(as)g(OCR0A)f(is)h +(set)g(to)g(255\))e(and)i(timer)g(0)g(o)n(v)n(er\035o)n(w)d(\(timer)j +(0)g(hits)g Fl(BOT-)515 2966 y(TOM)14 b Fq(\).)39 b(As)g(discussed)g +(ab)r(o)n(v)n(e,)h(these)f(are)f(k)n(ept)h(as)f(short)h(as)f(p)r +(ossible.)71 b(They)39 b(only)515 3066 y(sa)n(v)n(e)27 +b Fm(SREG)g Fq(\(as)i(the)g(\035ags)e(will)i(b)r(e)h(mo)r(di\034ed)f(b) +n(y)f(the)h Fm(INC)f Fq(instruction\),)h(incremen)n(t)g(the)515 +3166 y Fm(counter_hi)19 b Fq(v)-5 b(ariable)23 b(whic)n(h)h(forms)f +(the)h(high)g(part)f(of)h(the)g(curren)n(t)f(time)i(coun)n(ter)d(\(the) +515 3265 y(lo)n(w)34 b(part)g(is)g(formed)h(b)n(y)f(querying)g +Fm(TCNT0)e Fq(directly\),)37 b(and)d(clear)g(or)f(set)i(the)g(v)-5 +b(ariable)515 3365 y Fm(flags)p Fq(,)28 b(resp)r(ectiv)n(ely)-7 +b(,)30 b(in)h(order)d(to)i(note)g(the)g(curren)n(t)g(coun)n(ting)f +(direction.)44 b(The)30 b Fm(RETI)515 3465 y Fq(instruction)j +(terminates)f(these)i(in)n(terrupt)f(service)f(routines.)53 +b(T)-7 b(otal)33 b(cycle)f(coun)n(t)h(is)g(8)515 3564 +y(CPU)27 b(cycles,)f(so)g(together)g(with)g(the)h(4)f(CPU)i(cycles)e +(needed)g(for)g(in)n(terrupt)g(setup,)h(and)515 3664 +y(the)h(2)g(cycles)g(for)g(the)h(RJMP)f(from)g(the)h(in)n(terrupt)f(v)n +(ector)f(to)h(the)h(handler,)f(these)g(rou-)515 3763 +y(tines)33 b(will)g(require)f(14)h(out)g(of)g(eac)n(h)f(256)g(CPU)i +(cycles,)f(or)g(ab)r(out)g(5)f(\045)i(of)f(the)g(o)n(v)n(erall)515 +3863 y(CPU)28 b(time.)515 4010 y(The)k(pin-c)n(hange)f(in)n(terrupt)h +Fm(PCINT0)e Fq(will)i(b)r(e)h(handled)f(in)h(the)f(\034nal)g(part)g(of) +g(this)h(\034le.)515 4110 y(The)c(basic)f(algorithm)f(is)i(to)g(quic)n +(kly)f(ev)-5 b(aluate)28 b(the)h(curren)n(t)f(system)g(time)i(b)n(y)e +(fetc)n(hing)515 4209 y(the)34 b(curren)n(t)f(timer)h(v)-5 +b(alue)34 b(of)g Fm(TCNT0)p Fq(,)g(and)g(com)n(bining)f(it)i(with)f +(the)h(o)n(v)n(er\035o)n(w)c(part)j(in)515 4309 y Fm(counter_hi)p +Fq(.)66 b(If)39 b(the)g(coun)n(ter)e(is)i(curren)n(tly)f(coun)n(ting)g +(do)n(wn)g(rather)f(than)i(up,)j(the)515 4408 y(v)-5 +b(alue)25 b(fetc)n(hed)i(from)e Fm(TCNT0)f Fq(m)n(ust)i(b)r(e)g +(negated.)36 b(Finally)-7 b(,)26 b(if)h(this)f(pin-c)n(hange)e(in)n +(terrupt)515 4508 y(w)n(as)i(triggered)f(b)n(y)i(a)g(rising)f(edge,)g +(the)i(time)f(computed)h(will)f(b)r(e)g(recorded)f(as)g(the)i(start)515 +4608 y(time)g(only)-7 b(.)39 b(Then,)28 b(at)g(the)h(falling)f(edge,)g +(this)g(start)g(time)g(will)h(b)r(e)f(subracted)g(from)g(the)515 +4707 y(curren)n(t)19 b(time)i(to)f(compute)h(the)f(actual)g(pulse)g +(width)h(seen)f(\(left)i(in)e Fm(pwm_incoming)p Fq(\),)d(and)515 +4807 y(the)28 b(upp)r(er)h(la)n(y)n(ers)d(are)h(informed)h(of)g(the)h +(new)f(v)-5 b(alue)28 b(b)n(y)g(setting)g(bit)h(0)f(in)g(the)h +Fm(intbits)515 4907 y Fq(\035ags.)50 b(A)n(t)33 b(the)g(same)e(time,)k +(this)d(pin-c)n(hange)g(in)n(terrupt)g(will)g(b)r(e)h(disabled)f(so)g +(no)g(new)515 5006 y(measuremen)n(t)f(can)h(b)r(e)g(p)r(erformed)g(un)n +(til)h(the)f(upp)r(er)h(la)n(y)n(er)d(had)i(a)g(c)n(hance)f(to)h(pro)r +(cess)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 313 329 +TeXDict begin 313 328 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(313)p 515 236 2865 4 v +515 523 a Fq(the)28 b(curren)n(t)e(v)-5 b(alue.)515 786 +y Fs(22.35.3)93 b(The)32 b(source)g(co)s(de)515 987 y +Fq(The)27 b(source)g(co)r(de)g(is)g(installed)h(under)515 +1133 y Fm($prefix/share/d)o(oc/)o(av)o(r-)o(lib)o(c/)o(ex)o(amp)o(le)o +(s/)o(asm)o(de)o(mo/)o Fq(,)515 1280 y(where)f Fm($prefix)f +Fq(is)i(a)f(con\034guration)g(option.)38 b(F)-7 b(or)28 +b(Unix)g(systems,)g(it)g(is)g(usually)g(set)g(to)515 +1380 y(either)f Fm(/usr)f Fq(or)h Fm(/usr/local)p Fq(.)515 +1660 y Fn(22.36)112 b(A)37 b(simple)i(pro)6 b(ject)515 +1860 y Fq(A)n(t)32 b(this)h(p)r(oin)n(t,)g(y)n(ou)e(should)h(ha)n(v)n +(e)f(the)i(GNU)f(to)r(ols)g(con\034gured,)g(built,)i(and)e(installed) +515 1960 y(on)24 b(y)n(our)f(system.)35 b(In)25 b(this)f(c)n(hapter,)h +(w)n(e)f(presen)n(t)f(a)h(simple)h(example)e(of)i(using)f(the)g(GNU)515 +2059 y(to)r(ols)29 b(in)h(an)g(A)-9 b(VR)30 b(pro)5 b(ject.)44 +b(After)30 b(reading)f(this)h(c)n(hapter,)g(y)n(ou)f(should)g(ha)n(v)n +(e)g(a)h(b)r(etter)515 2159 y(feel)e(as)f(to)g(ho)n(w)g(the)h(to)r(ols) +f(are)f(used)i(and)f(ho)n(w)g(a)g Fm(Makefile)e Fq(can)i(b)r(e)h +(con\034gured.)515 2422 y Fs(22.36.1)93 b(The)32 b(Pro)5 +b(ject)515 2622 y Fq(This)27 b(pro)5 b(ject)26 b(will)h(use)g(the)g +(pulse-width)g(mo)r(dulator)f(\()p Fm(PWM)p Fq(\))g(to)h(ramp)f(an)h +(LED)h(on)e(and)515 2722 y(o\033)j(ev)n(ery)g(t)n(w)n(o)g(seconds.)42 +b(An)30 b(A)-7 b(T90S2313)27 b(pro)r(cessor)g(will)j(b)r(e)g(used)g(as) +f(the)h(con)n(troller.)515 2822 y(The)20 b(circuit)h(for)f(this)h +(demonstration)e(is)i(sho)n(wn)e(in)i(the)g Fs(sc)m(hematic)j(diagram)d +Fq(\(p.)14 b(313\).)515 2921 y(If)31 b(y)n(ou)e(ha)n(v)n(e)h(a)g(dev)n +(elopmen)n(t)g(kit,)h(y)n(ou)f(should)g(b)r(e)h(able)f(to)g(use)h(it,)h +(rather)d(than)i(build)515 3021 y(the)d(circuit,)f(for)g(this)h(pro)5 +b(ject.)506 3233 y Fs(Note:)676 3382 y Fq(Mean)n(while,)30 +b(the)g(A)-7 b(T90S2313)28 b(b)r(ecame)h(obsolete.)43 +b(Either)30 b(use)g(its)g(successor,)f(the)676 3482 y +(\(pin-compatible\))j(A)-7 b(Ttin)n(y2313)30 b(for)h(the)h(pro)5 +b(ject,)32 b(or)f(p)r(erhaps)g(the)h(A)-7 b(Tmega8)31 +b(or)676 3582 y(one)23 b(of)h(its)g(successors)e(\(A)-7 +b(Tmega48/88/168\))19 b(whic)n(h)24 b(ha)n(v)n(e)e(b)r(ecome)i(quite)g +(p)r(opular)676 3681 y(since)34 b(the)g(original)e(demo)h(pro)5 +b(ject)33 b(had)h(b)r(een)g(established.)55 b(F)-7 b(or)33 +b(all)g(these)h(more)676 3781 y(mo)r(dern)20 b(devices,)h(it)g(is)f(no) +g(longer)f(necessary)g(to)h(use)g(an)g(external)f(crystal)g(for)h(clo)r +(c)n(k-)676 3880 y(ing)25 b(as)f(they)i(ship)f(with)g(the)h(in)n +(ternal)e(1)h(MHz)g(oscillator)e(enabled,)j(so)e(C1,)h(C2,)g(and)676 +3980 y(Q1)d(can)h(b)r(e)g(omitted.)35 b(Normally)-7 b(,)23 +b(for)f(this)i(exp)r(erimen)n(t,)f(the)g(external)f(circuitry)g(on)676 +4080 y(/RESET)k(\(R1,)f(C3\))g(can)g(b)r(e)g(omitted)h(as)e(w)n(ell,)h +(lea)n(ving)f(only)h(the)g(A)-9 b(VR,)26 b(the)f(LED,)676 +4179 y(the)34 b(b)n(ypass)f(capacitor)e(C4,)k(and)f(p)r(erhaps)f(R2.)54 +b(F)-7 b(or)33 b(the)h(A)-7 b(Tmega8/48/88/168,)676 4279 +y(use)27 b(PB1)f(\(pin)h(15)f(at)g(the)h(DIP-28)f(pac)n(k)-5 +b(age\))26 b(to)g(connect)g(the)h(LED)h(to.)36 b(A)n(ddition-)676 +4379 y(ally)-7 b(,)23 b(this)f(demo)f(has)g(b)r(een)i(p)r(orted)e(to)h +(man)n(y)f(di\033eren)n(t)h(other)f(A)-9 b(VRs.)35 b(The)22 +b(lo)r(cation)676 4478 y(of)i(the)g(resp)r(ectiv)n(e)f(OC)g(pin)i(v)-5 +b(aries)22 b(b)r(et)n(w)n(een)i(di\033eren)n(t)g(A)-9 +b(VRs,)25 b(and)e(it)i(is)e(mandated)676 4578 y(b)n(y)k(the)h(A)-9 +b(VR)28 b(hardw)n(are.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 314 330 +TeXDict begin 314 329 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(314)p 515 236 2865 4 v +747 1645 a @beginspecial 0 @llx 0 @lly 510 @urx 256 @ury +2880 @rwi @setspecial +%%BeginDocument: demo.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: demo.fig +%%Creator: c:\Program Files\GnuWin32\bin\fig2dev.exe Version 3.2 Patchlevel 5 +%%CreationDate: Wed Nov 05 21:02:53 2008 +%%For: eweddington@CSOLT0054 (CSOLT0054) +%%BoundingBox: 0 0 510 256 +%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def +/col32 {0.447 0.447 0.447 srgb} bind def + +end +save +newpath 0 256 moveto 0 0 lineto 510 0 lineto 510 256 lineto closepath clip newpath +-50.3 342.9 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Ellipse +7.500 slw +n 4275 2250 75 75 0 360 DrawEllipse gs col18 s gr + +/Courier-Bold ff 180.00 scf sf +8475 2850 m +gs 1 -1 sc (D1) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +8475 2700 m +gs 1 -1 sc (LED5MM) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +7350 2850 m +gs 1 -1 sc (R2) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +7650 3300 m +gs 1 -1 sc (See note [8]) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +7500 2775 m +gs 1 -1 sc (*) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +2775 2925 m +gs 1 -1 sc (C1) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +2775 3450 m +gs 1 -1 sc (18pf) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +3225 2550 m +gs 1 -1 sc (C2) dup sw pop 2 div neg 0 rm col32 sh gr +% Polyline +0 slj +0 slc +n 4350 1950 m 6300 1950 l 6300 5550 l 4350 5550 l + cp gs col18 s gr +% Polyline +n 4200 2250 m + 3900 2250 l gs col18 s gr +% Polyline +n 4350 2775 m + 3900 2775 l gs col18 s gr +% Polyline +n 4350 3150 m + 3900 3150 l gs col18 s gr +% Polyline +n 4350 3525 m + 3900 3525 l gs col18 s gr +% Polyline +n 4350 3750 m + 3900 3750 l gs col18 s gr +% Polyline +n 6300 5400 m + 6750 5400 l gs col18 s gr +% Polyline +n 6300 5175 m + 6750 5175 l gs col18 s gr +% Polyline +n 6300 4950 m + 6750 4950 l gs col18 s gr +% Polyline +n 6300 4725 m + 6750 4725 l gs col18 s gr +% Polyline +n 6300 4500 m + 6750 4500 l gs col18 s gr +% Polyline +n 6300 4275 m + 6750 4275 l gs col18 s gr +% Polyline +n 6300 4050 m + 6750 4050 l gs col18 s gr +% Polyline +n 6300 3675 m + 6750 3675 l gs col18 s gr +% Polyline +n 6300 3450 m + 6750 3450 l gs col18 s gr +% Polyline +n 6300 3225 m + 6750 3225 l gs col18 s gr +% Polyline +n 6300 3000 m + 6750 3000 l gs col18 s gr +% Polyline +n 6300 2775 m + 6750 2775 l gs col18 s gr +% Polyline +n 6300 2550 m + 6750 2550 l gs col18 s gr +% Polyline +n 6300 2325 m + 6750 2325 l gs col18 s gr +% Polyline +n 6300 2100 m + 6750 2100 l gs col18 s gr +% Polyline +1 slj +n 3671 2876 m + 3675 2775 l gs col18 s gr +% Polyline +15.000 slw +n 3484 3036 m + 3859 3036 l gs col18 s gr +% Polyline +n 3487 2873 m + 3859 2873 l gs col18 s gr +/Courier-Bold ff 180.00 scf sf +3225 3075 m +gs 1 -1 sc (18pf) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +2175 2550 m +gs 1 -1 sc 90.0 rot (C3) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +2700 2550 m +gs 1 -1 sc 90.0 rot (.01uf) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +1800 2550 m +gs 1 -1 sc (20K) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +1800 2100 m +gs 1 -1 sc (R1) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +1200 1575 m +gs 1 -1 sc (VCC) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +975 4050 m +gs 1 -1 sc 90.0 rot (C4) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +1500 4050 m +gs 1 -1 sc 90.0 rot (.1uf) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +2400 4425 m +gs 1 -1 sc (GND) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +1200 4950 m +gs 1 -1 sc (GND) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +3900 2775 m +gs 1 -1 sc 90.0 rot (4mhz) col32 sh gr +% Polyline +7.500 slw +n 3675 3036 m + 3675 3150 l gs col18 s gr +% Polyline +15.000 slw +n 3532 2918 m 3495 2918 3495 2956 37 arcto 4 {pop} repeat + 3495 2993 3810 2993 37 arcto 4 {pop} repeat + 3847 2993 3847 2955 37 arcto 4 {pop} repeat + 3847 2918 3532 2918 37 arcto 4 {pop} repeat + cp gs col18 s gr +% Polyline +0 slj +7.500 slw +n 1200 4500 m + 1200 4725 l gs col18 s gr +% Polyline +30.000 slw +n 1050 4725 m + 1350 4725 l gs col18 s gr +% Polyline +7.500 slw +n 2400 3975 m + 2400 4200 l gs col18 s gr +% Polyline +30.000 slw +n 2250 4200 m + 2550 4200 l gs col18 s gr +% Polyline +7.500 slw +n 1200 3750 m + 1200 3975 l gs col18 s gr +% Polyline +30.000 slw +n 1050 3975 m + 1350 3975 l gs col18 s gr +% Polyline +n 1050 4050 m + 1350 4050 l gs col18 s gr +% Polyline +7.500 slw +n 1200 4050 m + 1200 4275 l gs col18 s gr +% Polyline +1 slj +30.000 slw +n 1050 1800 m 1200 1650 l + 1350 1800 l gs col18 s gr +% Polyline +7.500 slw +n 1200 1650 m + 1200 1950 l gs col18 s gr +% Polyline +n 1950 2250 m + 2250 2250 l gs col18 s gr +% Polyline +15.000 slw +n 1650 2175 m 1950 2175 l 1950 2325 l 1650 2325 l + cp gs col18 s gr +% Polyline +7.500 slw +n 1650 2250 m + 1350 2250 l gs col18 s gr +% Polyline +0 slj +n 2400 2250 m + 2400 2475 l gs col18 s gr +% Polyline +30.000 slw +n 2250 2475 m + 2550 2475 l gs col18 s gr +% Polyline +n 2250 2550 m + 2550 2550 l gs col18 s gr +% Polyline +7.500 slw +n 2400 2550 m + 2400 2775 l gs col18 s gr +% Polyline +n 3525 2775 m + 3300 2775 l gs col18 s gr +% Polyline +30.000 slw +n 3300 2625 m + 3300 2925 l gs col18 s gr +% Polyline +n 3225 2625 m + 3225 2925 l gs col18 s gr +% Polyline +7.500 slw +n 3225 2775 m + 3000 2775 l gs col18 s gr +% Polyline +n 3075 3150 m + 2850 3150 l gs col18 s gr +% Polyline +30.000 slw +n 2850 3000 m + 2850 3300 l gs col18 s gr +% Polyline +n 2775 3000 m + 2775 3300 l gs col18 s gr +% Polyline +7.500 slw +n 2775 3150 m + 2550 3150 l gs col18 s gr +% Polyline +1 slj +15.000 slw +n 7275 2925 m 7575 2925 l 7575 3075 l 7275 3075 l + cp gs col18 s gr +/Courier-Bold ff 180.00 scf sf +3600 2775 m +gs 1 -1 sc 90.0 rot (Q1) col32 sh gr +/Courier-Bold ff 180.00 scf sf +9150 3600 m +gs 1 -1 sc (GND) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 2625 m +gs 1 -1 sc (\(MOSI\)PB5) dup sw pop neg 0 rm col32 sh gr +% Polyline +n 8400 2925 m 8400 3075 l 8550 3000 l + 8400 2925 l cp gs col18 s gr +% Polyline +n 8550 2925 m + 8550 3075 l gs col18 s gr +% Polyline +7.500 slw +n 8400 3000 m + 8175 3000 l gs col18 s gr +% Polyline +n 8550 3000 m + 8775 3000 l gs col18 s gr +% Polyline +gs clippath +8456 3248 m 8539 3331 l 8581 3289 l 8498 3206 l 8498 3206 l 8541 3291 l 8456 3248 l cp +eoclip +n 8400 3150 m + 8550 3300 l gs col18 s gr gr + +% arrowhead +0 slj +n 8456 3248 m 8541 3291 l 8498 3206 l 8456 3248 l cp gs col18 1.00 shd ef gr col18 s +% Polyline +1 slj +gs clippath +8531 3248 m 8614 3331 l 8656 3289 l 8573 3206 l 8573 3206 l 8616 3291 l 8531 3248 l cp +eoclip +n 8475 3150 m + 8625 3300 l gs col18 s gr gr + +% arrowhead +0 slj +n 8531 3248 m 8616 3291 l 8573 3206 l 8531 3248 l cp gs col18 1.00 shd ef gr col18 s +% Polyline +n 9150 3150 m + 9150 3375 l gs col18 s gr +% Polyline +30.000 slw +n 9000 3375 m + 9300 3375 l gs col18 s gr +/Courier-Bold ff 180.00 scf sf +4350 1875 m +gs 1 -1 sc (IC1) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4050 2250 m +gs 1 -1 sc (1) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4050 3750 m +gs 1 -1 sc (10) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4050 3525 m +gs 1 -1 sc (20) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4050 3150 m +gs 1 -1 sc (5) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4050 2775 m +gs 1 -1 sc (4) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 2100 m +gs 1 -1 sc (19) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 2325 m +gs 1 -1 sc (18) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 2550 m +gs 1 -1 sc (17) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 2775 m +gs 1 -1 sc (16) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 3000 m +gs 1 -1 sc (15) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 3225 m +gs 1 -1 sc (14) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 3450 m +gs 1 -1 sc (13) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 3675 m +gs 1 -1 sc (12) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 4050 m +gs 1 -1 sc (11) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 4275 m +gs 1 -1 sc (9) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 4500 m +gs 1 -1 sc (8) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 4725 m +gs 1 -1 sc (7) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 4950 m +gs 1 -1 sc (6) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 5175 m +gs 1 -1 sc (3) col32 sh gr +/Courier-Bold ff 180.00 scf sf +6450 5400 m +gs 1 -1 sc (2) col32 sh gr +/Courier-Bold ff 180.00 scf sf +5325 5700 m +gs 1 -1 sc (AT90S2313P) dup sw pop 2 div neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 5475 m +gs 1 -1 sc (\(RXD\)PD0) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 5250 m +gs 1 -1 sc (\(TXD\)PD1) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 5025 m +gs 1 -1 sc (\(INT0\)PD2) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 4800 m +gs 1 -1 sc (\(INT1\)PD3) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 4575 m +gs 1 -1 sc (\(T0\)PD4) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 4350 m +gs 1 -1 sc (\(T1\)PD5) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 4125 m +gs 1 -1 sc (\(ICP\)PD6) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 3750 m +gs 1 -1 sc (\(AIN0\)PB0) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 3525 m +gs 1 -1 sc (\(AIN1\)PB1) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 3300 m +gs 1 -1 sc (PB2) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 3075 m +gs 1 -1 sc (\(OCI\)PB3) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 2850 m +gs 1 -1 sc (PB4) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 2400 m +gs 1 -1 sc (\(MISO\)PB6) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +6225 2175 m +gs 1 -1 sc (\(SCK\)PB7) dup sw pop neg 0 rm col32 sh gr +/Courier-Bold ff 180.00 scf sf +4425 2325 m +gs 1 -1 sc (RESET) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4425 2850 m +gs 1 -1 sc (XTAL2) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4425 3225 m +gs 1 -1 sc (XTAL1) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4425 3600 m +gs 1 -1 sc (VCC) col32 sh gr +/Courier-Bold ff 180.00 scf sf +4425 3825 m +gs 1 -1 sc (GND) col32 sh gr +% Polyline +7.500 slw +n 8775 3000 m 9150 3000 l + 9150 3150 l gs col12 s gr +% Polyline +n 2250 2250 m + 3900 2250 l gs col12 s gr +% Polyline +n 1200 2250 m + 1350 2250 l gs col12 s gr +% Polyline +n 1200 1950 m + 1200 3750 l gs col12 s gr +% Polyline +n 1200 4275 m + 1200 4500 l gs col12 s gr +% Polyline +n 3000 2775 m + 2400 2775 l gs col12 s gr +% Polyline +n 2550 3150 m + 2400 3150 l gs col12 s gr +% Polyline +n 3525 2775 m + 3900 2775 l gs col12 s gr +% Polyline +n 3075 3150 m + 3900 3150 l gs col12 s gr +% Polyline +n 2400 2775 m + 2400 3975 l gs col12 s gr +% Polyline +n 2400 3750 m + 3900 3750 l gs col12 s gr +% Polyline +n 3900 3525 m + 1200 3525 l gs col12 s gr +% Polyline +n 6750 3000 m + 7275 3000 l gs col12 s gr +% Ellipse +n 3675 2775 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Ellipse +n 3675 3150 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Ellipse +n 2400 3150 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Ellipse +n 2400 2775 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Ellipse +n 2400 2250 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Ellipse +n 1200 2250 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Ellipse +n 1200 3525 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Ellipse +n 2400 3750 40 40 0 360 DrawEllipse gs col12 1.00 shd ef gr gs col12 s gr + +% Polyline +n 8175 3000 m + 7575 3000 l gs col12 s gr +% here ends figure; +$F2psEnd +rs +showpage +%%Trailer +%EOF + +%%EndDocument + @endspecial 1089 1827 a Fq(Figure)27 b(5:)37 b(Sc)n(hematic)27 +b(of)g(circuit)h(for)f(demo)g(pro)5 b(ject)515 2173 y(The)20 +b(source)f(co)r(de)h(is)g(giv)n(en)g(in)g Fs(demo.c)g +Fq(\(p.)14 b(316\).)33 b(F)-7 b(or)20 b(the)h(sak)n(e)e(of)h(this)h +(example,)g(create)515 2273 y(a)31 b(\034le)i(called)e +Fm(demo.c)f Fq(con)n(taining)h(this)h(source)f(co)r(de.)50 +b(Some)32 b(of)g(the)g(more)f(imp)r(ortan)n(t)515 2372 +y(parts)c(of)g(the)h(co)r(de)f(are:)506 2589 y Fs(Note)32 +b([)o(1])o(:)676 2759 y Fq(As)20 b(the)f(A)-9 b(VR)20 +b(micro)r(con)n(troller)d(series)h(has)h(b)r(een)h(dev)n(elop)r(ed)f +(during)g(the)h(past)f(y)n(ears,)676 2859 y(new)31 b(features)f(ha)n(v) +n(e)f(b)r(een)i(added)g(o)n(v)n(er)d(time.)47 b(Ev)n(en)30 +b(though)h(the)g(basic)f(concepts)676 2959 y(of)j(the)h(timer/coun)n +(ter1)d(are)h(still)i(the)f(same)g(as)f(they)i(used)f(to)g(b)r(e)g(bac) +n(k)g(in)g(early)676 3058 y(2001)19 b(when)j(this)f(simple)g(demo)g(w)n +(as)f(written)h(initially)-7 b(,)23 b(the)e(names)g(of)g(registers)e +(and)676 3158 y(bits)30 b(ha)n(v)n(e)e(b)r(een)i(c)n(hanged)e(sligh)n +(tly)h(to)g(re\035ect)g(the)h(new)f(features.)42 b(Also,)30 +b(the)f(p)r(ort)676 3258 y(and)f(pin)g(mapping)g(of)g(the)h(output)f +(compare)f(matc)n(h)h(1A)g(\(or)f(1)h(for)f(older)g(devices\))676 +3357 y(pin)j(whic)n(h)g(is)g(used)g(to)g(con)n(trol)e(the)j(LED)f(v)-5 +b(aries)29 b(b)r(et)n(w)n(een)h(di\033eren)n(t)g(A)-9 +b(VRs.)44 b(The)676 3457 y(\034le)37 b Fm(iocompat.h)d +Fq(tries)i(to)h(abstract)g(b)r(et)n(w)n(een)g(all)g(this)g +(di\033erences)g(using)g(some)676 3556 y(prepro)r(cessor)30 +b Fm(#ifdef)g Fq(statemen)n(ts,)j(so)f(the)g(actual)g(program)e(itself) +j(can)f(op)r(erate)676 3656 y(on)27 b(a)h(common)f(set)g(of)h(sym)n(b)r +(olic)f(names.)36 b(The)28 b(macros)e(de\034ned)i(b)n(y)f(that)h +(\034le)f(are:)639 3886 y Fk(\210)41 b Fm(OCR)19 b Fq(the)i(name)f(of)g +(the)h(OCR)f(register)e(used)j(to)f(con)n(trol)e(the)j(PWM)g(\(usually) +f(either)722 3986 y(OCR1)27 b(or)g(OCR1A\))639 4152 y +Fk(\210)41 b Fm(DDROC)26 b Fq(the)i(name)f(of)h(the)g(DDR)g(\(data)g +(direction)f(register\))f(for)h(the)h(OC)f(output)639 +4318 y Fk(\210)41 b Fm(OC1)27 b Fq(the)h(pin)g(n)n(um)n(b)r(er)f(of)g +(the)h(OC1[A])f(output)h(within)h(its)e(p)r(ort)639 4484 +y Fk(\210)41 b Fm(TIMER1_TOP)35 b Fq(the)40 b(TOP)f(v)-5 +b(alue)39 b(of)g(the)g(timer)g(used)g(for)g(the)g(PWM)h(\(1023)e(for) +722 4583 y(10-bit)27 b(PWMs,)h(255)f(for)g(devices)g(that)h(can)f(only) +g(handle)g(an)h(8-bit)f(PWM\))639 4749 y Fk(\210)41 b +Fm(TIMER1_PWM_INIT)21 b Fq(the)28 b(initialization)e(bits)i(to)f(b)r(e) +g(set)g(in)n(to)g(con)n(trol)f(register)f(1A)722 4849 +y(in)d(order)e(to)i(setup)g(10-bit)e(\(or)h(8-bit\))h(phase)f(and)g +(frequency)g(correct)f(PWM)j(mo)r(de)p 515 5179 V 515 +5255 a Fp(Generated)i(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 315 331 +TeXDict begin 315 330 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(315)p 515 236 2865 4 v +639 523 a Fk(\210)41 b Fm(TIMER1_CLOCKSOURC)o(E)14 b +Fq(the)20 b(clo)r(c)n(k)g(bits)g(to)g(set)h(in)f(the)g(resp)r(ectiv)n +(e)g(con)n(trol)f(register)722 623 y(to)h(start)e(the)i(PWM)g(timer;)i +(usually)d(the)h(timer)f(runs)g(at)g(full)h(CPU)h(clo)r(c)n(k)d(for)h +(10-bit)722 722 y(PWMs,)29 b(while)e(it)h(runs)g(on)f(a)g(prescaled)f +(clo)r(c)n(k)h(for)g(8-bit)g(PWMs)506 939 y Fs(Note)32 +b([)o(2])o(:)676 1109 y(ISR\(\))27 b Fq(\(p.)14 b(253\))26 +b(is)h(a)f(macro)g(that)h(marks)f(the)h(function)g(as)f(an)h(in)n +(terrupt)f(routine.)676 1209 y(In)34 b(this)g(case,)g(the)g(function)g +(will)g(get)g(called)f(when)h(timer)f(1)h(o)n(v)n(er\035o)n(ws.)52 +b(Setting)676 1309 y(up)23 b(in)n(terrupts)g(is)f(explained)h(in)g +(greater)e(detail)i(in)g Fo(<)p Fs(a)m(vr/in)m(terrupt.h)p +Fo(>)p Fs(:)39 b(In)m(ter-)676 1408 y(rupts)28 b Fq(\(p.)14 +b(227\).)506 1630 y Fs(Note)32 b([)o(3])o(:)676 1800 +y Fq(The)41 b Fm(PWM)e Fq(is)h(b)r(eing)g(used)h(in)f(10-bit)g(mo)r +(de,)j(so)d(w)n(e)g(need)g(a)g(16-bit)g(v)-5 b(ariable)39 +b(to)676 1900 y(remem)n(b)r(er)27 b(the)h(curren)n(t)f(v)-5 +b(alue.)506 2101 y Fs(Note)32 b([)o(4])o(:)676 2271 y +Fq(This)c(section)f(determines)g(the)h(new)g(v)-5 b(alue)27 +b(of)h(the)g Fm(PWM)p Fq(.)506 2472 y Fs(Note)k([)o(5])o(:)676 +2642 y Fq(Here's)39 b(where)f(the)h(newly)g(computed)h(v)-5 +b(alue)38 b(is)h(loaded)g(in)n(to)f(the)i Fm(PWM)e Fq(register.)676 +2741 y(Since)33 b(w)n(e)e(are)h(in)g(an)g(in)n(terrupt)g(routine,)h(it) +g(is)f(safe)g(to)g(use)g(a)g(16-bit)f(assignmen)n(t)676 +2841 y(to)38 b(the)g(register.)65 b(Outside)38 b(of)f(an)h(in)n +(terrupt,)i(the)e(assignmen)n(t)e(should)h(only)h(b)r(e)676 +2941 y(p)r(erformed)g(with)g(in)n(terrupts)f(disabled)h(if)g(there's)g +(a)f(c)n(hance)h(that)g(an)f(in)n(terrupt)676 3040 y(routine)28 +b(could)g(also)f(access)f(this)j(register)d(\(or)i(another)f(register)f +(that)j(uses)e Fm(TEMP)p Fq(\),)676 3140 y(see)g(the)h(appropriate)e +Fs(F)-11 b(A)m(Q)33 b(en)m(try)c Fq(\(p.)14 b(66\).)506 +3361 y Fs(Note)32 b([)o(6])o(:)676 3532 y Fq(This)38 +b(routine)f(gets)g(called)g(after)g(a)g(reset.)66 b(It)38 +b(initializes)f(the)h Fm(PWM)e Fq(and)i(enables)676 3631 +y(in)n(terrupts.)506 3848 y Fs(Note)32 b([)o(7])o(:)676 +4018 y Fq(The)e(main)g(lo)r(op)g(of)g(the)h(program)d(do)r(es)h +(nothing)h(\025)g(all)g(the)g(w)n(ork)f(is)h(done)g(b)n(y)g(the)676 +4118 y(in)n(terrupt)39 b(routine!)73 b(The)39 b Fm(sleep_mode\(\))c +Fq(puts)40 b(the)g(pro)r(cessor)d(on)i(sleep)h(un)n(til)676 +4218 y(the)32 b(next)f(in)n(terrupt,)h(to)g(conserv)n(e)d(p)r(o)n(w)n +(er.)47 b(Of)32 b(course,)f(that)g(probably)g(w)n(on't)g(b)r(e)676 +4317 y(noticable)39 b(as)g(w)n(e)g(are)f(still)i(driving)f(a)g(LED,)h +(it)g(is)f(merely)g(men)n(tioned)g(here)g(to)676 4417 +y(demonstrate)27 b(the)h(basic)f(principle.)506 4634 +y Fs(Note)32 b([)o(8])o(:)676 4804 y Fq(Early)19 b(A)-9 +b(VR)19 b(devices)g(saturate)f(their)h(outputs)g(at)g(rather)f(lo)n(w)g +(curren)n(ts)g(when)i(sourc-)676 4904 y(ing)35 b(curren)n(t,)i(so)e +(the)h(LED)g(can)g(b)r(e)f(connected)h(directly)-7 b(,)37 +b(the)f(resulting)f(curren)n(t)676 5003 y(through)28 +b(the)h(LED)g(will)g(b)r(e)g(ab)r(out)f(15)f(mA.)i(F)-7 +b(or)28 b(mo)r(dern)g(parts)g(\(at)h(least)f(for)g(the)p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 316 332 +TeXDict begin 316 331 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(316)p 515 236 2865 4 v +676 523 a Fq(A)-7 b(Tmega)33 b(128\),)g(ho)n(w)n(ev)n(er)e(A)n(tmel)j +(has)f(drastically)f(increased)g(the)h(IO)g(source)f(ca-)676 +623 y(pabilit)n(y)-7 b(,)31 b(so)e(when)i(op)r(erating)e(at)h(5)g(V)g +(V)-7 b(cc,)31 b(R2)f(is)h(needed.)44 b(Its)31 b(v)-5 +b(alue)30 b(should)g(b)r(e)676 722 y(ab)r(out)24 b(150)e(Ohms.)36 +b(When)24 b(op)r(erating)f(the)h(circuit)g(at)g(3)f(V,)h(it)h(can)e +(still)h(b)r(e)h(omitted)676 822 y(though.)515 1085 y +Fs(22.36.2)93 b(The)32 b(Source)g(Co)s(de)515 1265 y +Fj(/*)550 1344 y(*)k(--------------------------)q(---)q(----)q(----)q +(---)q(----)q(---)q(----)q(----)q(---)q(----)q(----)q(---)q(----)q(---) +550 1422 y(*)g("THE)g(BEER-WARE)i(LICENSE")f(\(Revision)h(42\):)550 +1501 y(*)e()k(wrote)d(this)f(file.)72 +b(As)36 b(long)g(as)g(you)g(retain)h(this)f(notice)h(you)550 +1580 y(*)f(can)g(do)f(whatever)j(you)e(want)g(with)h(this)f(stuff.)h +(If)f(we)g(meet)g(some)h(day,)f(and)g(you)g(think)550 +1659 y(*)g(this)g(stuff)h(is)e(worth)i(it,)f(you)g(can)g(buy)g(me)g(a)g +(beer)g(in)g(return.)284 b(Joerg)37 b(Wunsch)550 1738 +y(*)f(--------------------------)q(---)q(----)q(----)q(---)q(----)q +(---)q(----)q(----)q(---)q(----)q(----)q(---)q(----)q(---)550 +1817 y(*)550 1896 y(*)g(Simple)g(AVR)h(demonstration.)74 +b(Controls)37 b(a)f(LED)g(that)h(can)f(be)f(directly)550 +1974 y(*)h(connected)h(from)g(OC1/OC1A)g(to)f(GND.)72 +b(The)36 b(brightness)i(of)e(the)g(LED)g(is)550 2053 +y(*)g(controlled)i(with)e(the)g(PWM.)72 b(After)36 b(each)h(period)g +(of)f(the)g(PWM,)g(the)g(PWM)550 2132 y(*)g(value)g(is)g(either)h +(incremented)h(or)e(decremented,)j(that's)e(all.)550 +2211 y(*)550 2290 y(*)f($Id:)g(demo.c,v)h(1.9)g(2006/01/05)h(21:30:10)f +(joerg_wunsch)i(Exp)d($)550 2369 y(*/)515 2527 y(#include)h +()515 2605 y(#include)g()515 2684 +y(#include)g()515 2763 y(#include)g()515 +2921 y(#include)g("iocompat.h")392 b(/*)35 b(Note)i([1])f(*/)515 +3079 y(enum)g({)g(UP,)g(DOWN)g(};)515 3236 y(ISR)g(\(TIMER1_OVF_vect\)) +393 b(/*)35 b(Note)i([2])f(*/)515 3315 y({)656 3394 y(static)h +(uint16_t)g(pwm;)284 b(/*)35 b(Note)i([3])f(*/)656 3473 +y(static)h(uint8_t)g(direction;)656 3631 y(switch)g(\(direction\))356 +b(/*)35 b(Note)i([4])f(*/)656 3710 y({)797 3789 y(case)g(UP:)938 +3867 y(if)g(\(++pwm)h(==)f(TIMER1_TOP\))1079 3946 y(direction)i(=)d +(DOWN;)938 4025 y(break;)797 4183 y(case)h(DOWN:)938 +4262 y(if)g(\(--pwm)h(==)f(0\))1079 4341 y(direction)i(=)d(UP;)938 +4419 y(break;)656 4498 y(})656 4656 y(OCR)h(=)f(pwm;)637 +b(/*)35 b(Note)i([5])f(*/)515 4735 y(})515 4893 y(void)515 +4972 y(ioinit)h(\(void\))672 b(/*)35 b(Note)i([6])f(*/)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 317 333 +TeXDict begin 317 332 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(317)p 515 236 2865 4 v +515 523 a Fj({)656 602 y(/*)36 b(Timer)g(1)g(is)g(10-bit)h(PWM)f +(\(8-bit)h(PWM)f(on)g(some)g(ATtinys\).)i(*/)656 681 +y(TCCR1A)f(=)e(TIMER1_PWM_INIT;)656 760 y(/*)691 839 +y(*)h(Start)g(timer)h(1.)691 917 y(*)691 996 y(*)f(NB:)g(TCCR1A)h(and)f +(TCCR1B)h(could)f(actually)i(be)e(the)g(same)g(register,)i(so)691 +1075 y(*)e(take)g(care)g(to)g(not)g(clobber)i(it.)691 +1154 y(*/)656 1233 y(TCCR1B)f(|=)f(TIMER1_CLOCKSOURCE;)656 +1312 y(/*)691 1391 y(*)g(Run)g(any)g(device-dependent)k(timer)c(1)g +(setup)g(hook)h(if)f(present.)691 1469 y(*/)515 1548 +y(#if)g(defined\(TIMER1_SETUP_HOOK)q(\))656 1627 y +(TIMER1_SETUP_HOOK\(\);)515 1706 y(#endif)656 1864 y(/*)g(Set)g(PWM)g +(value)h(to)e(0.)h(*/)656 1943 y(OCR)g(=)f(0;)656 2100 +y(/*)h(Enable)h(OC1)f(as)g(output.)h(*/)656 2179 y(DDROC)f(=)g(_BV)g +(\(OC1\);)656 2337 y(/*)g(Enable)h(timer)f(1)g(overflow)h(interrupt.)h +(*/)656 2416 y(TIMSK)e(=)g(_BV)g(\(TOIE1\);)656 2495 +y(sei)g(\(\);)515 2574 y(})515 2731 y(int)515 2810 y(main)g(\(void\)) +515 2889 y({)656 3047 y(ioinit)h(\(\);)656 3205 y(/*)f(loop)g(forever,) +i(the)e(interrupts)i(are)e(doing)g(the)h(rest)f(*/)656 +3362 y(for)g(\(;;\))707 b(/*)35 b(Note)i([7])f(*/)797 +3441 y(sleep_mode\(\);)656 3599 y(return)h(\(0\);)515 +3678 y(})515 3941 y Fs(22.36.3)93 b(Compiling)29 b(and)j(Linking)515 +4141 y Fq(This)e(\034rst)f(thing)h(that)g(needs)g(to)g(b)r(e)g(done)g +(is)g(compile)f(the)i(source.)42 b(When)30 b(compiling,)515 +4241 y(the)c(compiler)g(needs)g(to)h(kno)n(w)e(the)i(pro)r(cessor)d(t)n +(yp)r(e)j(so)e(the)i Fm(-mmcu)e Fq(option)h(is)g(sp)r(eci\034ed.)515 +4341 y(The)35 b Fm(-Os)f Fq(option)g(will)i(tell)f(the)h(compiler)e(to) +h(optimize)g(the)g(co)r(de)g(for)g(e\036cien)n(t)g(space)515 +4440 y(usage)i(\(at)h(the)g(p)r(ossible)g(exp)r(ense)g(of)g(co)r(de)g +(execution)f(sp)r(eed\).)69 b(The)38 b Fm(-g)f Fq(is)h(used)g(to)515 +4540 y(em)n(b)r(ed)31 b(debug)g(info.)49 b(The)31 b(debug)g(info)h(is)f +(useful)h(for)e(disassem)n(blies)g(and)h(do)r(esn't)h(end)515 +4639 y(up)d(in)f(the)h(.hex)g(\034les,)g(so)f(I)g(usually)g(sp)r(ecify) +h(it.)40 b(Finally)-7 b(,)29 b(the)g Fm(-c)f Fq(tells)g(the)h(compiler) +f(to)515 4739 y(compile)22 b(and)h(stop)g(\025)g(don't)g(link.)35 +b(This)23 b(demo)g(is)g(small)f(enough)h(that)g(w)n(e)g(could)f +(compile)515 4839 y(and)g(link)g(in)g(one)f(step.)36 +b(Ho)n(w)n(ev)n(er,)21 b(real-w)n(orld)e(pro)5 b(jects)21 +b(will)h(ha)n(v)n(e)f(sev)n(eral)f(mo)r(dules)i(and)515 +4938 y(will)27 b(t)n(ypically)f(need)g(to)h(break)e(up)i(the)g +(building)g(of)g(the)g(pro)5 b(ject)25 b(in)n(to)i(sev)n(eral)e +(compiles)p 515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 318 334 +TeXDict begin 318 333 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(318)p 515 236 2865 4 v +515 523 a Fq(and)27 b(one)g(link.)656 729 y Fj($)35 b(avr-gcc)j(-g)d +(-Os)i(-mmcu=atmega8)h(-c)e(demo.c)515 955 y Fq(The)30 +b(compilation)f(will)h(create)f(a)h Fm(demo.o)d Fq(\034le.)45 +b(Next)30 b(w)n(e)g(link)g(it)g(in)n(to)g(a)f(binary)g(called)515 +1055 y Fm(demo.elf)p Fq(.)656 1260 y Fj($)35 b(avr-gcc)j(-g)d +(-mmcu=atmega8)k(-o)d(demo.elf)i(demo.o)515 1487 y Fq(It)31 +b(is)f(imp)r(ortan)n(t)g(to)h(sp)r(ecify)f(the)h(MCU)g(t)n(yp)r(e)g +(when)g(linking.)45 b(The)31 b(compiler)f(uses)g(the)515 +1586 y Fm(-mmcu)d Fq(option)j(to)f(c)n(ho)r(ose)f(start-up)h(\034les)h +(and)f(run-time)h(libraries)e(that)i(get)f(link)n(ed)h(to-)515 +1686 y(gether.)35 b(If)25 b(this)g(option)f(isn't)h(sp)r(eci\034ed,)g +(the)g(compiler)f(defaults)h(to)g(the)g(8515)d(pro)r(cessor)515 +1786 y(en)n(vironmen)n(t,)k(whic)n(h)i(is)f(most)h(certainly)e(what)i +(y)n(ou)f(didn't)h(w)n(an)n(t.)515 2048 y Fs(22.36.4)93 +b(Examining)31 b(the)g(Ob)5 b(ject)33 b(File)515 2248 +y Fq(No)n(w)k(w)n(e)f(ha)n(v)n(e)h(a)f(binary)h(\034le.)66 +b(Can)37 b(w)n(e)g(do)g(an)n(ything)g(useful)g(with)h(it)g(\(b)r +(esides)f(put)515 2348 y(it)i(in)n(to)g(the)h(pro)r(cessor?\))69 +b(The)40 b(GNU)f(Bin)n(utils)g(suite)h(is)f(made)g(up)g(of)g(man)n(y)g +(useful)515 2448 y(to)r(ols)22 b(for)h(manipulating)f(ob)5 +b(ject)23 b(\034les)g(that)g(get)g(generated.)34 b(One)23 +b(to)r(ol)g(is)g Fm(avr-objdump)p Fq(,)515 2547 y(whic)n(h)e(tak)n(es)g +(information)g(from)g(the)i(ob)5 b(ject)21 b(\034le)h(and)g(displa)n +(ys)e(it)i(in)g(man)n(y)f(useful)i(w)n(a)n(ys.)515 2647 +y(T)n(yping)k(the)h(command)f(b)n(y)g(itself)h(will)g(cause)f(it)h(to)f +(list)h(out)f(its)h(options.)515 2794 y(F)-7 b(or)29 +b(instance,)i(to)f(get)g(a)g(feel)h(of)f(the)g(application's)g(size,)g +(the)h Fm(-h)f Fq(option)g(can)f(b)r(e)i(used.)515 2893 +y(The)26 b(output)g(of)g(this)g(option)g(sho)n(ws)f(ho)n(w)g(m)n(uc)n +(h)h(space)f(is)h(used)g(in)g(eac)n(h)f(of)h(the)h(sections)515 +2993 y(\(the)d(.stab)g(and)g(.stabstr)f(sections)h(hold)g(the)g +(debugging)f(information)g(and)h(w)n(on't)g(mak)n(e)515 +3093 y(it)k(in)n(to)f(the)h(R)n(OM)f(\034le\).)515 3240 +y(An)i(ev)n(en)f(more)g(useful)h(option)g(is)g Fm(-S)p +Fq(.)f(This)g(option)h(disassem)n(bles)e(the)i(binary)f(\034le)h(and) +515 3339 y(in)n(tersp)r(erses)36 b(the)i(source)f(co)r(de)h(in)g(the)g +(output!)68 b(This)38 b(metho)r(d)h(is)e(m)n(uc)n(h)h(b)r(etter,)j(in) +515 3439 y(m)n(y)32 b(opinion,)h(than)g(using)f(the)h +Fm(-S)f Fq(with)h(the)g(compiler)f(b)r(ecause)g(this)h(listing)f +(includes)515 3538 y(routines)24 b(from)h(the)g(libraries)f(and)h(the)g +(v)n(ector)f(table)h(con)n(ten)n(ts.)35 b(Also,)25 b(all)g(the)g +("\034x-ups")515 3638 y(ha)n(v)n(e)g(b)r(een)h(satis\034ed.)36 +b(In)26 b(other)g(w)n(ords,)f(the)h(listing)g(generated)f(b)n(y)h(this) +g(option)g(re\035ects)515 3738 y(the)i(actual)f(co)r(de)g(that)h(the)g +(pro)r(cessor)d(will)j(run.)656 3943 y Fj($)35 b(avr-objdump)k(-h)d(-S) +f(demo.elf)j(>)d(demo.lst)515 4170 y Fq(Here's)27 b(the)h(output)g(as)f +(sa)n(v)n(ed)f(in)i(the)g Fm(demo.lst)c Fq(\034le:)515 +4375 y Fj(demo.elf:)179 b(file)36 b(format)h(elf32-avr)515 +4533 y(Sections:)515 4612 y(Idx)f(Name)354 b(Size)212 +b(VMA)248 b(LMA)g(File)36 b(off)72 b(Algn)585 4691 y(0)36 +b(.text)319 b(00000126)72 b(00000000)h(00000000)g(00000074)g(2**1)1150 +4770 y(CONTENTS,)37 b(ALLOC,)g(LOAD,)g(READONLY,)h(CODE)585 +4848 y(1)e(.bss)354 b(00000003)72 b(00800060)h(00800060)g(0000019a)g +(2**0)1150 4927 y(ALLOC)585 5006 y(2)36 b(.stab)319 b(000006e4)72 +b(00000000)h(00000000)g(0000019c)g(2**2)p 515 5179 V +515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06) +e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 319 335 +TeXDict begin 319 334 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(319)p 515 236 2865 4 v +1150 523 a Fj(CONTENTS,)37 b(READONLY,)h(DEBUGGING)585 +602 y(3)e(.stabstr)214 b(00000096)72 b(00000000)h(00000000)g(00000880)g +(2**0)1150 681 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)585 +760 y(4)e(.debug_aranges)j(00000020)73 b(00000000)f(00000000)h +(00000916)g(2**0)1150 839 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)585 +917 y(5)e(.debug_pubnames)j(00000035)73 b(00000000)g(00000000)g +(00000936)f(2**0)1150 996 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)585 +1075 y(6)e(.debug_info)109 b(00000105)72 b(00000000)h(00000000)g +(0000096b)g(2**0)1150 1154 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)585 +1233 y(7)e(.debug_abbrev)j(000000cf)72 b(00000000)h(00000000)g +(00000a70)g(2**0)1150 1312 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)585 +1391 y(8)e(.debug_line)109 b(0000014d)72 b(00000000)h(00000000)g +(00000b3f)g(2**0)1150 1469 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)585 +1548 y(9)e(.debug_frame)74 b(00000040)e(00000000)h(00000000)g(00000c8c) +g(2**2)1150 1627 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)550 +1706 y(10)e(.debug_str)144 b(000000b1)72 b(00000000)h(00000000)g +(00000ccc)g(2**0)1150 1785 y(CONTENTS,)37 b(READONLY,)h(DEBUGGING)515 +1943 y(Disassembly)g(of)e(section)h(.text:)515 2100 y(00000000)g +(<__vectors>:)621 2179 y(0:)e(12)h(c0)283 b(rjmp)36 b(.+36)213 +b(;)36 b(0x26)g(<__ctors_end>)621 2258 y(2:)f(8c)h(c0)283 +b(rjmp)36 b(.+280)178 b(;)36 b(0x11c)g(<__bad_interrupt>)621 +2337 y(4:)f(8b)h(c0)283 b(rjmp)36 b(.+278)178 b(;)36 +b(0x11c)g(<__bad_interrupt>)621 2416 y(6:)f(8a)h(c0)283 +b(rjmp)36 b(.+276)178 b(;)36 b(0x11c)g(<__bad_interrupt>)621 +2495 y(8:)f(89)h(c0)283 b(rjmp)36 b(.+274)178 b(;)36 +b(0x11c)g(<__bad_interrupt>)621 2574 y(a:)f(88)h(c0)283 +b(rjmp)36 b(.+272)178 b(;)36 b(0x11c)g(<__bad_interrupt>)621 +2653 y(c:)f(87)h(c0)283 b(rjmp)36 b(.+270)178 b(;)36 +b(0x11c)g(<__bad_interrupt>)621 2731 y(e:)f(86)h(c0)283 +b(rjmp)36 b(.+268)178 b(;)36 b(0x11c)g(<__bad_interrupt>)585 +2810 y(10:)g(25)g(c0)283 b(rjmp)36 b(.+74)213 b(;)36 +b(0x5c)g(<__vector_8>)585 2889 y(12:)g(84)g(c0)283 b(rjmp)36 +b(.+264)178 b(;)36 b(0x11c)g(<__bad_interrupt>)585 2968 +y(14:)g(83)g(c0)283 b(rjmp)36 b(.+262)178 b(;)36 b(0x11c)g +(<__bad_interrupt>)585 3047 y(16:)g(82)g(c0)283 b(rjmp)36 +b(.+260)178 b(;)36 b(0x11c)g(<__bad_interrupt>)585 3126 +y(18:)g(81)g(c0)283 b(rjmp)36 b(.+258)178 b(;)36 b(0x11c)g +(<__bad_interrupt>)585 3205 y(1a:)g(80)g(c0)283 b(rjmp)36 +b(.+256)178 b(;)36 b(0x11c)g(<__bad_interrupt>)585 3284 +y(1c:)g(7f)g(c0)283 b(rjmp)36 b(.+254)178 b(;)36 b(0x11c)g +(<__bad_interrupt>)585 3362 y(1e:)g(7e)g(c0)283 b(rjmp)36 +b(.+252)178 b(;)36 b(0x11c)g(<__bad_interrupt>)585 3441 +y(20:)g(7d)g(c0)283 b(rjmp)36 b(.+250)178 b(;)36 b(0x11c)g +(<__bad_interrupt>)585 3520 y(22:)g(7c)g(c0)283 b(rjmp)36 +b(.+248)178 b(;)36 b(0x11c)g(<__bad_interrupt>)585 3599 +y(24:)g(7b)g(c0)283 b(rjmp)36 b(.+246)178 b(;)36 b(0x11c)g +(<__bad_interrupt>)515 3757 y(00000026)h(<__ctors_end>:)585 +3836 y(26:)f(11)g(24)283 b(eor)36 b(r1,)g(r1)585 3914 +y(28:)g(1f)g(be)283 b(out)36 b(0x3f,)h(r1)f(;)f(63)585 +3993 y(2a:)h(cf)g(e5)283 b(ldi)36 b(r28,)g(0x5F)h(;)e(95)585 +4072 y(2c:)h(d4)g(e0)283 b(ldi)36 b(r29,)g(0x04)h(;)e(4)585 +4151 y(2e:)h(de)g(bf)283 b(out)36 b(0x3e,)h(r29)f(;)f(62)585 +4230 y(30:)h(cd)g(bf)283 b(out)36 b(0x3d,)h(r28)f(;)f(61)515 +4388 y(00000032)i(<__do_copy_data>:)585 4467 y(32:)f(10)g(e0)283 +b(ldi)36 b(r17,)g(0x00)h(;)e(0)585 4545 y(34:)h(a0)g(e6)283 +b(ldi)36 b(r26,)g(0x60)h(;)e(96)585 4624 y(36:)h(b0)g(e0)283 +b(ldi)36 b(r27,)g(0x00)h(;)e(0)585 4703 y(38:)h(e6)g(e2)283 +b(ldi)36 b(r30,)g(0x26)h(;)e(38)585 4782 y(3a:)h(f1)g(e0)283 +b(ldi)36 b(r31,)g(0x01)h(;)e(1)585 4861 y(3c:)h(02)g(c0)283 +b(rjmp)36 b(.+4)248 b(;)36 b(0x42)g(<.do_copy_data_start>)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 320 336 +TeXDict begin 320 335 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(320)p 515 236 2865 4 v +515 523 a Fj(0000003e)37 b(<.do_copy_data_loop>:)585 +602 y(3e:)f(05)g(90)283 b(lpm)36 b(r0,)g(Z+)585 681 y(40:)g(0d)g(92)283 +b(st)36 b(X+,)g(r0)515 839 y(00000042)h(<.do_copy_data_start>:)585 +917 y(42:)f(a0)g(36)283 b(cpi)36 b(r26,)g(0x60)h(;)e(96)585 +996 y(44:)h(b1)g(07)283 b(cpc)36 b(r27,)g(r17)585 1075 +y(46:)g(d9)g(f7)283 b(brne)36 b(.-10)213 b(;)36 b(0x3e)g +(<.do_copy_data_loop>)515 1233 y(00000048)h(<__do_clear_bss>:)585 +1312 y(48:)f(10)g(e0)283 b(ldi)36 b(r17,)g(0x00)h(;)e(0)585 +1391 y(4a:)h(a0)g(e6)283 b(ldi)36 b(r26,)g(0x60)h(;)e(96)585 +1469 y(4c:)h(b0)g(e0)283 b(ldi)36 b(r27,)g(0x00)h(;)e(0)585 +1548 y(4e:)h(01)g(c0)283 b(rjmp)36 b(.+2)248 b(;)36 b(0x52)g +(<.do_clear_bss_start>)515 1706 y(00000050)h(<.do_clear_bss_loop>:)585 +1785 y(50:)f(1d)g(92)283 b(st)36 b(X+,)g(r1)515 1943 +y(00000052)h(<.do_clear_bss_start>:)585 2022 y(52:)f(a3)g(36)283 +b(cpi)36 b(r26,)g(0x63)h(;)e(99)585 2100 y(54:)h(b1)g(07)283 +b(cpc)36 b(r27,)g(r17)585 2179 y(56:)g(e1)g(f7)283 b(brne)36 +b(.-8)248 b(;)36 b(0x50)g(<.do_clear_bss_loop>)585 2258 +y(58:)g(4d)g(d0)283 b(rcall)37 b(.+154)177 b(;)36 b(0xf4)g(
)585 +2337 y(5a:)g(61)g(c0)283 b(rjmp)36 b(.+194)178 b(;)36 +b(0x11e)g()515 2495 y(0000005c)h(<__vector_8>:)515 +2574 y(#include)g("iocompat.h")i(/*)d(Note)g([1])g(*/)515 +2731 y(enum)g({)g(UP,)g(DOWN)g(};)515 2889 y(ISR)g(\(TIMER1_OVF_vect\)) +k(/*)c(Note)g([2])g(*/)515 2968 y({)585 3047 y(5c:)g(1f)g(92)283 +b(push)36 b(r1)585 3126 y(5e:)g(0f)g(92)283 b(push)36 +b(r0)585 3205 y(60:)g(0f)g(b6)283 b(in)36 b(r0,)g(0x3f)g(;)g(63)585 +3284 y(62:)g(0f)g(92)283 b(push)36 b(r0)585 3362 y(64:)g(11)g(24)283 +b(eor)36 b(r1,)g(r1)585 3441 y(66:)g(2f)g(93)283 b(push)36 +b(r18)585 3520 y(68:)g(3f)g(93)283 b(push)36 b(r19)585 +3599 y(6a:)g(8f)g(93)283 b(push)36 b(r24)656 3678 y(static)h(uint16_t)g +(pwm;)g(/*)e(Note)i([3])f(*/)656 3757 y(static)h(uint8_t)g(direction;) +656 3914 y(switch)g(\(direction\))h(/*)e(Note)g([4])g(*/)585 +3993 y(6c:)g(80)g(91)g(60)g(00)71 b(lds)36 b(r24,)g(0x0060)585 +4072 y(70:)g(88)g(23)283 b(and)36 b(r24,)g(r24)585 4151 +y(72:)g(c1)g(f4)283 b(brne)36 b(.+48)213 b(;)36 b(0xa4)g +(<__vector_8+0x48>)656 4230 y({)797 4309 y(case)g(UP:)938 +4388 y(if)g(\(++pwm)h(==)f(TIMER1_TOP\))585 4467 y(74:)g(20)g(91)g(61)g +(00)71 b(lds)36 b(r18,)g(0x0061)585 4545 y(78:)g(30)g(91)g(62)g(00)71 +b(lds)36 b(r19,)g(0x0062)585 4624 y(7c:)g(2f)g(5f)283 +b(subi)36 b(r18,)h(0xFF)f(;)g(255)585 4703 y(7e:)g(3f)g(4f)283 +b(sbci)36 b(r19,)h(0xFF)f(;)g(255)585 4782 y(80:)g(30)g(93)g(62)g(00)71 +b(sts)36 b(0x0062,)h(r19)585 4861 y(84:)f(20)g(93)g(61)g(00)71 +b(sts)36 b(0x0061,)h(r18)585 4940 y(88:)f(83)g(e0)283 +b(ldi)36 b(r24,)g(0x03)h(;)e(3)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 321 337 +TeXDict begin 321 336 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(321)p 515 236 2865 4 v +585 523 a Fj(8a:)36 b(2f)g(3f)283 b(cpi)36 b(r18,)g(0xFF)h(;)e(255)585 +602 y(8c:)h(38)g(07)283 b(cpc)36 b(r19,)g(r24)585 681 +y(8e:)g(09)g(f1)283 b(breq)36 b(.+66)213 b(;)36 b(0xd2)g +(<__vector_8+0x76>)938 760 y(if)g(\(--pwm)h(==)f(0\))1079 +839 y(direction)i(=)d(UP;)938 917 y(break;)656 996 y(})656 +1154 y(OCR)h(=)f(pwm;)i(/*)f(Note)g([5])g(*/)585 1233 +y(90:)g(3b)g(bd)283 b(out)36 b(0x2b,)h(r19)f(;)f(43)585 +1312 y(92:)h(2a)g(bd)283 b(out)36 b(0x2a,)h(r18)f(;)f(42)515 +1391 y(})585 1469 y(94:)h(8f)g(91)283 b(pop)36 b(r24)585 +1548 y(96:)g(3f)g(91)283 b(pop)36 b(r19)585 1627 y(98:)g(2f)g(91)283 +b(pop)36 b(r18)585 1706 y(9a:)g(0f)g(90)283 b(pop)36 +b(r0)585 1785 y(9c:)g(0f)g(be)283 b(out)36 b(0x3f,)h(r0)f(;)f(63)585 +1864 y(9e:)h(0f)g(90)283 b(pop)36 b(r0)585 1943 y(a0:)g(1f)g(90)283 +b(pop)36 b(r1)585 2022 y(a2:)g(18)g(95)283 b(reti)515 +2100 y(ISR)36 b(\(TIMER1_OVF_vect\))k(/*)c(Note)g([2])g(*/)515 +2179 y({)656 2258 y(static)h(uint16_t)g(pwm;)g(/*)e(Note)i([3])f(*/)656 +2337 y(static)h(uint8_t)g(direction;)656 2495 y(switch)g(\(direction\)) +h(/*)e(Note)g([4])g(*/)585 2574 y(a4:)g(81)g(30)283 b(cpi)36 +b(r24,)g(0x01)h(;)e(1)585 2653 y(a6:)h(29)g(f0)283 b(breq)36 +b(.+10)213 b(;)36 b(0xb2)g(<__vector_8+0x56>)585 2731 +y(a8:)g(20)g(91)g(61)g(00)71 b(lds)36 b(r18,)g(0x0061)585 +2810 y(ac:)g(30)g(91)g(62)g(00)71 b(lds)36 b(r19,)g(0x0062)585 +2889 y(b0:)g(ef)g(cf)283 b(rjmp)36 b(.-34)213 b(;)36 +b(0x90)g(<__vector_8+0x34>)938 2968 y(if)g(\(++pwm)h(==)f(TIMER1_TOP\)) +1079 3047 y(direction)i(=)d(DOWN;)938 3126 y(break;)797 +3284 y(case)h(DOWN:)938 3362 y(if)g(\(--pwm)h(==)f(0\))585 +3441 y(b2:)g(20)g(91)g(61)g(00)71 b(lds)36 b(r18,)g(0x0061)585 +3520 y(b6:)g(30)g(91)g(62)g(00)71 b(lds)36 b(r19,)g(0x0062)585 +3599 y(ba:)g(21)g(50)283 b(subi)36 b(r18,)h(0x01)f(;)g(1)585 +3678 y(bc:)g(30)g(40)283 b(sbci)36 b(r19,)h(0x00)f(;)g(0)585 +3757 y(be:)g(30)g(93)g(62)g(00)71 b(sts)36 b(0x0062,)h(r19)585 +3836 y(c2:)f(20)g(93)g(61)g(00)71 b(sts)36 b(0x0061,)h(r18)585 +3914 y(c6:)f(21)g(15)283 b(cp)36 b(r18,)g(r1)585 3993 +y(c8:)g(31)g(05)283 b(cpc)36 b(r19,)g(r1)585 4072 y(ca:)g(11)g(f7)283 +b(brne)36 b(.-60)213 b(;)36 b(0x90)g(<__vector_8+0x34>)1079 +4151 y(direction)i(=)d(UP;)585 4230 y(cc:)h(10)g(92)g(60)g(00)71 +b(sts)36 b(0x0060,)h(r1)585 4309 y(d0:)f(df)g(cf)283 +b(rjmp)36 b(.-66)213 b(;)36 b(0x90)g(<__vector_8+0x34>)656 +4467 y(switch)h(\(direction\))h(/*)e(Note)g([4])g(*/)656 +4545 y({)797 4624 y(case)g(UP:)938 4703 y(if)g(\(++pwm)h(==)f +(TIMER1_TOP\))1079 4782 y(direction)i(=)d(DOWN;)585 4861 +y(d2:)h(81)g(e0)283 b(ldi)36 b(r24,)g(0x01)h(;)e(1)585 +4940 y(d4:)h(80)g(93)g(60)g(00)71 b(sts)36 b(0x0060,)h(r24)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 322 338 +TeXDict begin 322 337 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(322)p 515 236 2865 4 v +585 523 a Fj(d8:)36 b(db)g(cf)283 b(rjmp)36 b(.-74)213 +b(;)36 b(0x90)g(<__vector_8+0x34>)515 681 y(000000da)h(:)515 +839 y(void)515 917 y(ioinit)g(\(void\))g(/*)e(Note)i([6])f(*/)515 +996 y({)656 1075 y(/*)g(Timer)g(1)g(is)g(10-bit)h(PWM)f(\(8-bit)h(PWM)f +(on)g(some)g(ATtinys\).)i(*/)656 1154 y(TCCR1A)f(=)e(TIMER1_PWM_INIT;) +585 1233 y(da:)h(83)g(e8)283 b(ldi)36 b(r24,)g(0x83)h(;)e(131)585 +1312 y(dc:)h(8f)g(bd)283 b(out)36 b(0x2f,)h(r24)f(;)f(47)691 +1391 y(*)h(Start)g(timer)h(1.)691 1469 y(*)691 1548 y(*)f(NB:)g(TCCR1A) +h(and)f(TCCR1B)h(could)f(actually)i(be)e(the)g(same)g(register,)i(so) +691 1627 y(*)e(take)g(care)g(to)g(not)g(clobber)i(it.)691 +1706 y(*/)656 1785 y(TCCR1B)f(|=)f(TIMER1_CLOCKSOURCE;)585 +1864 y(de:)g(8e)g(b5)283 b(in)36 b(r24,)g(0x2e)h(;)e(46)585 +1943 y(e0:)h(81)g(60)283 b(ori)36 b(r24,)g(0x01)h(;)e(1)585 +2022 y(e2:)h(8e)g(bd)283 b(out)36 b(0x2e,)h(r24)f(;)f(46)515 +2100 y(#if)h(defined\(TIMER1_SETUP_HOOK)q(\))656 2179 +y(TIMER1_SETUP_HOOK\(\);)515 2258 y(#endif)656 2416 y(/*)g(Set)g(PWM)g +(value)h(to)e(0.)h(*/)656 2495 y(OCR)g(=)f(0;)585 2574 +y(e4:)h(1b)g(bc)283 b(out)36 b(0x2b,)h(r1)f(;)f(43)585 +2653 y(e6:)h(1a)g(bc)283 b(out)36 b(0x2a,)h(r1)f(;)f(42)656 +2810 y(/*)h(Enable)h(OC1)f(as)g(output.)h(*/)656 2889 +y(DDROC)f(=)g(_BV)g(\(OC1\);)585 2968 y(e8:)g(82)g(e0)283 +b(ldi)36 b(r24,)g(0x02)h(;)e(2)585 3047 y(ea:)h(87)g(bb)283 +b(out)36 b(0x17,)h(r24)f(;)f(23)656 3205 y(/*)h(Enable)h(timer)f(1)g +(overflow)h(interrupt.)h(*/)656 3284 y(TIMSK)e(=)g(_BV)g(\(TOIE1\);)585 +3362 y(ec:)g(84)g(e0)283 b(ldi)36 b(r24,)g(0x04)h(;)e(4)585 +3441 y(ee:)h(89)g(bf)283 b(out)36 b(0x39,)h(r24)f(;)f(57)656 +3520 y(sei)h(\(\);)585 3599 y(f0:)g(78)g(94)283 b(sei)515 +3678 y(})585 3757 y(f2:)36 b(08)g(95)283 b(ret)515 3914 +y(000000f4)37 b(
:)515 4072 y(void)515 4151 y(ioinit)g(\(void\))g +(/*)e(Note)i([6])f(*/)515 4230 y({)656 4309 y(/*)g(Timer)g(1)g(is)g +(10-bit)h(PWM)f(\(8-bit)h(PWM)f(on)g(some)g(ATtinys\).)i(*/)656 +4388 y(TCCR1A)f(=)e(TIMER1_PWM_INIT;)585 4467 y(f4:)h(83)g(e8)283 +b(ldi)36 b(r24,)g(0x83)h(;)e(131)585 4545 y(f6:)h(8f)g(bd)283 +b(out)36 b(0x2f,)h(r24)f(;)f(47)691 4624 y(*)h(Start)g(timer)h(1.)691 +4703 y(*)691 4782 y(*)f(NB:)g(TCCR1A)h(and)f(TCCR1B)h(could)f(actually) +i(be)e(the)g(same)g(register,)i(so)691 4861 y(*)e(take)g(care)g(to)g +(not)g(clobber)i(it.)691 4940 y(*/)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 323 339 +TeXDict begin 323 338 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(323)p 515 236 2865 4 v +656 523 a Fj(TCCR1B)37 b(|=)f(TIMER1_CLOCKSOURCE;)585 +602 y(f8:)g(8e)g(b5)283 b(in)36 b(r24,)g(0x2e)h(;)e(46)585 +681 y(fa:)h(81)g(60)283 b(ori)36 b(r24,)g(0x01)h(;)e(1)585 +760 y(fc:)h(8e)g(bd)283 b(out)36 b(0x2e,)h(r24)f(;)f(46)515 +839 y(#if)h(defined\(TIMER1_SETUP_HOOK)q(\))656 917 y +(TIMER1_SETUP_HOOK\(\);)515 996 y(#endif)656 1154 y(/*)g(Set)g(PWM)g +(value)h(to)e(0.)h(*/)656 1233 y(OCR)g(=)f(0;)585 1312 +y(fe:)h(1b)g(bc)283 b(out)36 b(0x2b,)h(r1)f(;)f(43)550 +1391 y(100:)h(1a)g(bc)283 b(out)36 b(0x2a,)h(r1)f(;)f(42)656 +1548 y(/*)h(Enable)h(OC1)f(as)g(output.)h(*/)656 1627 +y(DDROC)f(=)g(_BV)g(\(OC1\);)550 1706 y(102:)g(82)g(e0)283 +b(ldi)36 b(r24,)g(0x02)h(;)e(2)550 1785 y(104:)h(87)g(bb)283 +b(out)36 b(0x17,)h(r24)f(;)f(23)656 1943 y(/*)h(Enable)h(timer)f(1)g +(overflow)h(interrupt.)h(*/)656 2022 y(TIMSK)e(=)g(_BV)g(\(TOIE1\);)550 +2100 y(106:)g(84)g(e0)283 b(ldi)36 b(r24,)g(0x04)h(;)e(4)550 +2179 y(108:)h(89)g(bf)283 b(out)36 b(0x39,)h(r24)f(;)f(57)656 +2258 y(sei)h(\(\);)550 2337 y(10a:)g(78)g(94)283 b(sei)656 +2416 y(ioinit)37 b(\(\);)656 2574 y(/*)f(loop)g(forever,)i(the)e +(interrupts)i(are)e(doing)g(the)h(rest)f(*/)656 2731 +y(for)g(\(;;\))g(/*)g(Note)h([7])f(*/)797 2810 y(sleep_mode\(\);)550 +2889 y(10c:)g(85)g(b7)283 b(in)36 b(r24,)g(0x35)h(;)e(53)550 +2968 y(10e:)h(80)g(68)283 b(ori)36 b(r24,)g(0x80)h(;)e(128)550 +3047 y(110:)h(85)g(bf)283 b(out)36 b(0x35,)h(r24)f(;)f(53)550 +3126 y(112:)h(88)g(95)283 b(sleep)550 3205 y(114:)36 +b(85)g(b7)283 b(in)36 b(r24,)g(0x35)h(;)e(53)550 3284 +y(116:)h(8f)g(77)283 b(andi)36 b(r24,)h(0x7F)f(;)g(127)550 +3362 y(118:)g(85)g(bf)283 b(out)36 b(0x35,)h(r24)f(;)f(53)550 +3441 y(11a:)h(f8)g(cf)283 b(rjmp)36 b(.-16)213 b(;)36 +b(0x10c)g()515 3599 y(0000011c)h(<__bad_interrupt>:)550 +3678 y(11c:)f(71)g(cf)283 b(rjmp)36 b(.-286)178 b(;)36 +b(0x0)g(<__vectors>)515 3836 y(0000011e)h(:)515 +3914 y(.section)g(.text)515 3993 y(.global)g(_U\(exit\))515 +4072 y(.type)f(_U\(exit\),)i("function")515 4230 y(_U\(exit\):)515 +4309 y(cli)550 4388 y(11e:)e(f8)g(94)283 b(cli)515 4467 +y(XJMP)36 b(_U\(_exit\))550 4545 y(120:)g(00)g(c0)283 +b(rjmp)36 b(.+0)248 b(;)36 b(0x122)g(<_exit>)515 4703 +y(00000122)h(<_exit>:)550 4782 y(122:)f(f8)g(94)283 b(cli)515 +4940 y(00000124)37 b(<__stop_program>:)p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 324 340 +TeXDict begin 324 339 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(324)p 515 236 2865 4 v +550 523 a Fj(124:)36 b(ff)g(cf)283 b(rjmp)36 b(.-2)248 +b(;)36 b(0x124)g(<__stop_program>)515 786 y Fs(22.36.5)93 +b(Link)m(er)32 b(Map)g(Files)515 987 y Fm(avr-objdump)i +Fq(is)k(v)n(ery)f(useful,)42 b(but)d(sometimes)f(it's)h(necessary)d(to) +j(see)f(information)515 1086 y(ab)r(out)33 b(the)g(link)g(that)h(can)e +(only)h(b)r(e)g(generated)f(b)n(y)h(the)g(link)n(er.)53 +b(A)33 b(map)g(\034le)g(con)n(tains)515 1186 y(this)38 +b(information.)68 b(A)39 b(map)f(\034le)g(is)g(useful)g(for)g +(monitoring)f(the)i(sizes)e(of)h(y)n(our)f(co)r(de)515 +1285 y(and)g(data.)64 b(It)37 b(also)f(sho)n(ws)g(where)g(mo)r(dules)h +(are)f(loaded)g(and)h(whic)n(h)g(mo)r(dules)g(w)n(ere)515 +1385 y(loaded)27 b(from)h(libraries.)38 b(It)29 b(is)f(y)n(et)g +(another)g(view)g(of)g(y)n(our)f(application.)39 b(T)-7 +b(o)28 b(get)g(a)g(map)515 1485 y(\034le,)40 b(I)e(usually)f(add)h +Fs(-Wl,-Map,demo.map)c Fq(to)k(m)n(y)f(link)h(command.)67 +b(Relink)38 b(the)515 1584 y(application)c(using)h(the)g(follo)n(wing)f +(command)h(to)g(generate)f Fm(demo.map)e Fq(\(a)j(p)r(ortion)f(of)515 +1684 y(whic)n(h)27 b(is)h(sho)n(wn)e(b)r(elo)n(w\).)656 +1893 y Fj($)35 b(avr-gcc)j(-g)d(-mmcu=atmega8)k(-Wl,-Map,demo.map)h(-o) +c(demo.elf)i(demo.o)515 2123 y Fq(Some)27 b(p)r(oin)n(ts)h(of)f(in)n +(terest)g(in)h(the)g Fm(demo.map)c Fq(\034le)k(are:)515 +2332 y Fj(.rela.plt)550 2411 y(*\(.rela.plt\))515 2569 +y(.text)389 b(0x00000000)215 b(0x126)550 2648 y(*\(.vectors\))550 +2726 y(.vectors)249 b(0x00000000)h(0x26)36 b(c:/avrdev/avr-libc/avr-)q +(libc)q(-1.6)q(.3/)q(avr/)q(lib)q(/avr)q(4/at)q(meg)q(a8/c)q(rtm8)q(.o) +1079 2805 y(0x00000000)567 b(__vectors)1079 2884 y(0x00000000)g +(__vector_default)550 2963 y(*\(.vectors\))550 3042 y +(*\(.progmem.gcc*\))550 3121 y(*\(.progmem*\))1079 3200 +y(0x00000026)g(.)36 b(=)f(ALIGN)i(\(0x2\))1079 3279 y(0x00000026)567 +b(__trampolines_start)41 b(=)35 b(.)550 3357 y(*\(.trampolines\))550 +3436 y(.trampolines)109 b(0x00000026)285 b(0x0)36 b(linker)h(stubs)550 +3515 y(*\(.trampolines*\))1079 3594 y(0x00000026)567 +b(__trampolines_end)40 b(=)c(.)550 3673 y(*\(.jumptables\))550 +3752 y(*\(.jumptables*\))550 3831 y(*\(.lowtext\))550 +3909 y(*\(.lowtext*\))1079 3988 y(0x00000026)567 b(__ctors_start)39 +b(=)d(.)515 4218 y Fq(The)f(.text)h(segmen)n(t)e(\(where)h(program)f +(instructions)g(are)h(stored\))f(starts)h(at)g(lo)r(cation)515 +4318 y(0x0.)550 4527 y Fj(*\(.fini2\))550 4606 y(*\(.fini2\))550 +4685 y(*\(.fini1\))550 4764 y(*\(.fini1\))550 4843 y(*\(.fini0\))550 +4921 y(.fini0)319 b(0x00000122)285 b(0x4)36 b(c:/winavr/bin/../lib/gc)q +(c/av)q(r/4.)q(3.2)q(/avr)q(4\\l)q(ibgc)q(c.a\()q(_ex)q(it.o)q(\))550 +5000 y(*\(.fini0\))p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 325 341 +TeXDict begin 325 340 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(325)p 515 236 2865 4 v +1079 523 a Fj(0x00000126)567 b(_etext)37 b(=)f(.)515 +681 y(.data)389 b(0x00800060)285 b(0x0)36 b(load)h(address)g +(0x00000126)1079 760 y(0x00800060)567 b(PROVIDE)38 b(\(__data_start,)h +(.\))550 839 y(*\(.data\))550 917 y(.data)354 b(0x00800060)285 +b(0x0)36 b(demo.o)550 996 y(.data)354 b(0x00800060)285 +b(0x0)36 b(c:/avrdev/avr-libc/avr-)q(libc)q(-1.6)q(.3/)q(avr/)q(lib)q +(/avr)q(4/at)q(meg)q(a8/c)q(rtm8)q(.o)550 1075 y(.data)354 +b(0x00800060)285 b(0x0)36 b(c:/avrdev/avr-libc/avr-)q(libc)q(-1.6)q +(.3/)q(avr/)q(lib)q(/avr)q(4/ex)q(it.)q(o)550 1154 y(.data)354 +b(0x00800060)285 b(0x0)36 b(c:/winavr/bin/../lib/gc)q(c/av)q(r/4.)q +(3.2)q(/avr)q(4\\l)q(ibgc)q(c.a\()q(_ex)q(it.o)q(\))550 +1233 y(.data)354 b(0x00800060)285 b(0x0)36 b(c:/winavr/bin/../lib/gc)q +(c/av)q(r/4.)q(3.2)q(/avr)q(4\\l)q(ibgc)q(c.a\()q(_co)q(py_d)q(ata.)q +(o\))550 1312 y(.data)354 b(0x00800060)285 b(0x0)36 b +(c:/winavr/bin/../lib/gc)q(c/av)q(r/4.)q(3.2)q(/avr)q(4\\l)q(ibgc)q +(c.a\()q(_cl)q(ear_)q(bss.)q(o\))550 1391 y(*\(.data*\))550 +1469 y(*\(.rodata\))550 1548 y(*\(.rodata*\))550 1627 +y(*\(.gnu.linkonce.d*\))1079 1706 y(0x00800060)567 b(.)36 +b(=)f(ALIGN)i(\(0x2\))1079 1785 y(0x00800060)567 b(_edata)37 +b(=)f(.)1079 1864 y(0x00800060)567 b(PROVIDE)38 b(\(__data_end,)g(.\)) +515 2022 y(.bss)424 b(0x00800060)285 b(0x3)1079 2100 +y(0x00800060)567 b(PROVIDE)38 b(\(__bss_start,)g(.\))550 +2179 y(*\(.bss\))550 2258 y(.bss)389 b(0x00800060)285 +b(0x3)36 b(demo.o)550 2337 y(.bss)389 b(0x00800063)285 +b(0x0)36 b(c:/avrdev/avr-libc/avr-)q(libc)q(-1.6)q(.3/)q(avr/)q(lib)q +(/avr)q(4/at)q(meg)q(a8/c)q(rtm8)q(.o)550 2416 y(.bss)389 +b(0x00800063)285 b(0x0)36 b(c:/avrdev/avr-libc/avr-)q(libc)q(-1.6)q +(.3/)q(avr/)q(lib)q(/avr)q(4/ex)q(it.)q(o)550 2495 y(.bss)389 +b(0x00800063)285 b(0x0)36 b(c:/winavr/bin/../lib/gc)q(c/av)q(r/4.)q +(3.2)q(/avr)q(4\\l)q(ibgc)q(c.a\()q(_ex)q(it.o)q(\))550 +2574 y(.bss)389 b(0x00800063)285 b(0x0)36 b(c:/winavr/bin/../lib/gc)q +(c/av)q(r/4.)q(3.2)q(/avr)q(4\\l)q(ibgc)q(c.a\()q(_co)q(py_d)q(ata.)q +(o\))550 2653 y(.bss)389 b(0x00800063)285 b(0x0)36 b +(c:/winavr/bin/../lib/gc)q(c/av)q(r/4.)q(3.2)q(/avr)q(4\\l)q(ibgc)q +(c.a\()q(_cl)q(ear_)q(bss.)q(o\))550 2731 y(*\(.bss*\))550 +2810 y(*\(COMMON\))1079 2889 y(0x00800063)567 b(PROVIDE)38 +b(\(__bss_end,)g(.\))1079 2968 y(0x00000126)567 b(__data_load_start)40 +b(=)c(LOADADDR)h(\(.data\))1079 3047 y(0x00000126)567 +b(__data_load_end)40 b(=)35 b(\(__data_load_start)41 +b(+)35 b(SIZEOF)i(\(.data\)\))515 3205 y(.noinit)319 +b(0x00800063)285 b(0x0)1079 3284 y(0x00800063)567 b(PROVIDE)38 +b(\(__noinit_start,)h(.\))550 3362 y(*\(.noinit*\))1079 +3441 y(0x00800063)567 b(PROVIDE)38 b(\(__noinit_end,)h(.\))1079 +3520 y(0x00800063)567 b(_end)37 b(=)e(.)1079 3599 y(0x00800063)567 +b(PROVIDE)38 b(\(__heap_start,)h(.\))515 3757 y(.eeprom)319 +b(0x00810000)285 b(0x0)550 3836 y(*\(.eeprom*\))1079 +3914 y(0x00810000)567 b(__eeprom_end)39 b(=)c(.)515 4144 +y Fq(The)28 b(last)f(address)g(in)h(the)h(.text)f(segmen)n(t)f(is)h(lo) +r(cation)f Fm(0x114)f Fq(\()j(denoted)e(b)n(y)h Fm(_etext)e +Fq(\),)515 4244 y(so)h(the)h(instructions)f(use)g(up)h(276)e(b)n(ytes)h +(of)h(FLASH.)515 4391 y(The)35 b(.data)h(segmen)n(t)f(\(where)g +(initialized)h(static)f(v)-5 b(ariables)35 b(are)f(stored\))h(starts)g +(at)h(lo-)515 4491 y(cation)30 b Fm(0x60)p Fq(,)g(whic)n(h)h(is)f(the)h +(\034rst)g(address)e(after)i(the)g(register)e(bank)h(on)h(an)f(A)-7 +b(Tmega8)515 4590 y(pro)r(cessor.)515 4737 y(The)34 b(next)g(a)n(v)-5 +b(ailable)33 b(address)g(in)i(the)f(.data)g(segmen)n(t)g(is)g(also)f +(lo)r(cation)h Fm(0x60)p Fq(,)g(so)g(the)515 4837 y(application)27 +b(has)g(no)g(initialized)h(data.)515 4983 y(The)f(.bss)h(segmen)n(t)f +(\(where)g(uninitialized)h(data)f(is)g(stored\))g(starts)g(at)h(lo)r +(cation)e Fm(0x60)p Fq(.)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 326 342 +TeXDict begin 326 341 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(326)p 515 236 2865 4 v +515 523 a Fq(The)18 b(next)h(a)n(v)-5 b(ailable)17 b(address)g(in)h +(the)h(.bss)f(segmen)n(t)g(is)g(lo)r(cation)g(0x63,)g(so)g(the)h +(application)515 623 y(uses)27 b(3)g(b)n(ytes)g(of)h(uninitialized)g +(data.)515 770 y(The)g(.eeprom)f(segmen)n(t)g(\(where)h(EEPR)n(OM)h(v) +-5 b(ariables)27 b(are)f(stored\))i(starts)f(at)h(lo)r(cation)515 +869 y(0x0.)515 1016 y(The)d(next)g(a)n(v)-5 b(ailable)23 +b(address)h(in)h(the)g(.eeprom)f(segmen)n(t)g(is)h(also)f(lo)r(cation)g +(0x0,)g(so)g(there)515 1116 y(aren't)j(an)n(y)g(EEPR)n(OM)h(v)-5 +b(ariables.)515 1379 y Fs(22.36.6)93 b(Generating)31 +b(In)m(tel)h(Hex)g(Files)515 1579 y Fq(W)-7 b(e)30 b(ha)n(v)n(e)f(a)h +(binary)g(of)g(the)g(application,)h(but)f(ho)n(w)g(do)g(w)n(e)g(get)g +(it)h(in)n(to)e(the)i(pro)r(cessor?)515 1679 y(Most)21 +b(\(if)i(not)f(all\))g(programmers)d(will)k(not)f(accept)f(a)h(GNU)h +(executable)e(as)g(an)h(input)h(\034le,)515 1778 y(so)28 +b(w)n(e)g(need)h(to)g(do)g(a)f(little)i(more)e(pro)r(cessing.)39 +b(The)29 b(next)g(step)g(is)g(to)g(extract)f(p)r(ortions)515 +1878 y(of)34 b(the)h(binary)e(and)h(sa)n(v)n(e)f(the)h(information)g +(in)n(to)g(.hex)g(\034les.)57 b(The)34 b(GNU)h(utilit)n(y)g(that)515 +1978 y(do)r(es)27 b(this)h(is)f(called)g Fm(avr-objcopy)p +Fq(.)515 2124 y(The)d(R)n(OM)f(con)n(ten)n(ts)g(can)h(b)r(e)g(pulled)h +(from)e(our)g(pro)5 b(ject's)23 b(binary)h(and)f(put)i(in)n(to)f(the)g +(\034le)515 2224 y(demo.hex)j(using)g(the)h(follo)n(wing)f(command:)656 +2433 y Fj($)35 b(avr-objcopy)k(-j)d(.text)g(-j)g(.data)h(-O)e(ihex)i +(demo.elf)g(demo.hex)515 2662 y Fq(The)27 b(resulting)g +Fm(demo.hex)e Fq(\034le)i(con)n(tains:)515 2871 y Fj +(:1000000012C08CC08BC08AC0)q(89C0)q(88C)q(087C)q(086C)q(01F)515 +2949 y(:1000100025C084C083C082C0)q(81C0)q(80C)q(07FC)q(07EC)q(034)515 +3028 y(:100020007DC07CC07BC01124)q(1FBE)q(CFE)q(5D4E)q(0DEB)q(F05)515 +3107 y(:10003000CDBF10E0A0E6B0E0)q(E6E2)q(F1E)q(002C)q(0059)q(03E)515 +3186 y(:100040000D92A036B107D9F7)q(10E0)q(A0E)q(6B0E)q(001C)q(0EC)515 +3265 y(:100050001D92A336B107E1F7)q(4DD0)q(61C)q(01F9)q(20F9)q(2F8)515 +3344 y(:100060000FB60F9211242F93)q(3F93)q(8F9)q(3809)q(1600)q(0CE)515 +3423 y(:100070008823C1F420916100)q(3091)q(620)q(02F5)q(F3F4)q(FCF)515 +3501 y(:100080003093620020936100)q(83E0)q(2F3)q(F380)q(709F)q(12D)515 +3580 y(:100090003BBD2ABD8F913F91)q(2F91)q(0F9)q(00FB)q(E0F9)q(0C6)515 +3659 y(:1000A0001F901895813029F0)q(2091)q(610)q(0309)q(1620)q(0F5)515 +3738 y(:1000B000EFCF209161003091)q(6200)q(215)q(0304)q(0309)q(3A9)515 +3817 y(:1000C0006200209361002115)q(3105)q(11F)q(7109)q(2600)q(044)515 +3896 y(:1000D000DFCF81E080936000)q(DBCF)q(83E)q(88FB)q(D8EB)q(5FA)515 +3975 y(:1000E00081608EBD1BBC1ABC)q(82E0)q(87B)q(B84E)q(089B)q(FE7)515 +4054 y(:1000F0007894089583E88FBD)q(8EB5)q(816)q(08EB)q(D1BB)q(C5A)515 +4132 y(:100100001ABC82E087BB84E0)q(89BF)q(789)q(485B)q(7806)q(899)515 +4211 y(:1001100085BF889585B78F77)q(85BF)q(F8C)q(F71C)q(FF89)q(465)515 +4290 y(:0601200000C0F894FFCFBF)515 4369 y(:00000001FF)515 +4598 y Fq(The)g Fm(-j)f Fq(option)h(indicates)g(that)h(w)n(e)f(w)n(an)n +(t)f(the)i(information)e(from)h(the)h(.text)f(and)h(.data)515 +4698 y(segmen)n(t)23 b(extracted.)34 b(If)24 b(w)n(e)g(sp)r(ecify)f +(the)h(EEPR)n(OM)h(segmen)n(t,)f(w)n(e)f(can)g(generate)f(a)h(.hex)515 +4798 y(\034le)k(that)h(can)f(b)r(e)h(used)g(to)f(program)f(the)i(EEPR)n +(OM:)656 5006 y Fj($)35 b(avr-objcopy)k(-j)d(.eeprom)h +(--change-section-lma)k(.eeprom=0)c(-O)f(ihex)g(demo.elf)i +(demo_eeprom.hex)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 327 343 +TeXDict begin 327 342 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(327)p 515 236 2865 4 v +515 523 a Fq(There)27 b(is)g(no)g Fm(demo_eeprom.hex)22 +b Fq(\034le)28 b(written,)f(as)g(that)h(\034le)g(w)n(ould)f(b)r(e)h +(empt)n(y)-7 b(.)515 670 y(Starting)21 b(with)i(v)n(ersion)d(2.17)g(of) +i(the)h(GNU)f(bin)n(utils,)i(the)e Fm(avr-objcopy)17 +b Fq(command)22 b(that)515 770 y(used)34 b(to)g(generate)f(the)i(empt)n +(y)f(EEPR)n(OM)i(\034les)e(no)n(w)g(ab)r(orts)f(b)r(ecause)h(of)g(the)h +(empt)n(y)515 869 y(input)27 b(section)f(.eeprom,)g(so)f(these)i(empt)n +(y)f(\034les)g(are)g(not)g(generated.)35 b(It)27 b(also)e(signals)g(an) +515 969 y(error)h(to)j(the)g(Mak)n(e\034le)e(whic)n(h)i(will)g(b)r(e)g +(caugh)n(t)e(there,)i(and)f(mak)n(es)g(it)h(prin)n(t)f(a)h(message)515 +1068 y(ab)r(out)e(the)h(empt)n(y)g(\034le)g(not)f(b)r(eing)h +(generated.)515 1331 y Fs(22.36.7)93 b(Letting)31 b(Mak)m(e)i(Build)d +(the)i(Pro)5 b(ject)515 1532 y Fq(Rather)32 b(than)h(t)n(yp)r(e)h +(these)f(commands)f(o)n(v)n(er)g(and)g(o)n(v)n(er,)h(they)g(can)g(all)g +(b)r(e)g(placed)g(in)g(a)515 1632 y(mak)n(e)g(\034le.)58 +b(T)-7 b(o)35 b(build)g(the)g(demo)f(pro)5 b(ject)34 +b(using)g Fm(make)p Fq(,)h(sa)n(v)n(e)e(the)i(follo)n(wing)e(in)i(a)f +(\034le)515 1731 y(called)27 b Fm(Makefile)p Fq(.)506 +1927 y Fs(Note:)676 2076 y Fq(This)h Fm(Makefile)c Fq(can)j(only)g(b)r +(e)h(used)g(as)f(input)h(for)f(the)h(GNU)g(v)n(ersion)e(of)i +Fm(make)p Fq(.)515 2286 y Fj(PRG)424 b(=)35 b(demo)515 +2364 y(OBJ)424 b(=)35 b(demo.o)515 2443 y(#MCU_TARGET)179 +b(=)36 b(at90s2313)515 2522 y(#MCU_TARGET)179 b(=)36 +b(at90s2333)515 2601 y(#MCU_TARGET)179 b(=)36 b(at90s4414)515 +2680 y(#MCU_TARGET)179 b(=)36 b(at90s4433)515 2759 y(#MCU_TARGET)179 +b(=)36 b(at90s4434)515 2838 y(#MCU_TARGET)179 b(=)36 +b(at90s8515)515 2917 y(#MCU_TARGET)179 b(=)36 b(at90s8535)515 +2995 y(#MCU_TARGET)179 b(=)36 b(atmega128)515 3074 y(#MCU_TARGET)179 +b(=)36 b(atmega1280)515 3153 y(#MCU_TARGET)179 b(=)36 +b(atmega1281)515 3232 y(#MCU_TARGET)179 b(=)36 b(atmega1284p)515 +3311 y(#MCU_TARGET)179 b(=)36 b(atmega16)515 3390 y(#MCU_TARGET)179 +b(=)36 b(atmega163)515 3469 y(#MCU_TARGET)179 b(=)36 +b(atmega164p)515 3548 y(#MCU_TARGET)179 b(=)36 b(atmega165)515 +3626 y(#MCU_TARGET)179 b(=)36 b(atmega165p)515 3705 y(#MCU_TARGET)179 +b(=)36 b(atmega168)515 3784 y(#MCU_TARGET)179 b(=)36 +b(atmega169)515 3863 y(#MCU_TARGET)179 b(=)36 b(atmega169p)515 +3942 y(#MCU_TARGET)179 b(=)36 b(atmega2560)515 4021 y(#MCU_TARGET)179 +b(=)36 b(atmega2561)515 4100 y(#MCU_TARGET)179 b(=)36 +b(atmega32)515 4178 y(#MCU_TARGET)179 b(=)36 b(atmega324p)515 +4257 y(#MCU_TARGET)179 b(=)36 b(atmega325)515 4336 y(#MCU_TARGET)179 +b(=)36 b(atmega3250)515 4415 y(#MCU_TARGET)179 b(=)36 +b(atmega329)515 4494 y(#MCU_TARGET)179 b(=)36 b(atmega3290)515 +4573 y(#MCU_TARGET)179 b(=)36 b(atmega48)515 4652 y(#MCU_TARGET)179 +b(=)36 b(atmega64)515 4731 y(#MCU_TARGET)179 b(=)36 b(atmega640)515 +4809 y(#MCU_TARGET)179 b(=)36 b(atmega644)515 4888 y(#MCU_TARGET)179 +b(=)36 b(atmega644p)515 4967 y(#MCU_TARGET)179 b(=)36 +b(atmega645)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 328 344 +TeXDict begin 328 343 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(328)p 515 236 2865 4 v +515 523 a Fj(#MCU_TARGET)179 b(=)36 b(atmega6450)515 +602 y(#MCU_TARGET)179 b(=)36 b(atmega649)515 681 y(#MCU_TARGET)179 +b(=)36 b(atmega6490)515 760 y(MCU_TARGET)179 b(=)35 b(atmega8)515 +839 y(#MCU_TARGET)179 b(=)36 b(atmega8515)515 917 y(#MCU_TARGET)179 +b(=)36 b(atmega8535)515 996 y(#MCU_TARGET)179 b(=)36 +b(atmega88)515 1075 y(#MCU_TARGET)179 b(=)36 b(attiny2313)515 +1154 y(#MCU_TARGET)179 b(=)36 b(attiny24)515 1233 y(#MCU_TARGET)179 +b(=)36 b(attiny25)515 1312 y(#MCU_TARGET)179 b(=)36 b(attiny26)515 +1391 y(#MCU_TARGET)179 b(=)36 b(attiny261)515 1469 y(#MCU_TARGET)179 +b(=)36 b(attiny44)515 1548 y(#MCU_TARGET)179 b(=)36 b(attiny45)515 +1627 y(#MCU_TARGET)179 b(=)36 b(attiny461)515 1706 y(#MCU_TARGET)179 +b(=)36 b(attiny84)515 1785 y(#MCU_TARGET)179 b(=)36 b(attiny85)515 +1864 y(#MCU_TARGET)179 b(=)36 b(attiny861)515 1943 y(OPTIMIZE)249 +b(=)35 b(-O2)515 2100 y(DEFS)389 b(=)515 2179 y(LIBS)g(=)515 +2337 y(#)35 b(You)h(should)h(not)f(have)h(to)f(change)h(anything)g +(below)g(here.)515 2495 y(CC)459 b(=)35 b(avr-gcc)515 +2653 y(#)g(Override)j(is)e(only)g(needed)h(by)f(avr-lib)h(build)g +(system.)515 2810 y(override)g(CFLAGS)284 b(=)36 b(-g)f(-Wall)i +($\(OPTIMIZE\))h(-mmcu=$\(MCU_TARGET\))j($\(DEFS\))515 +2889 y(override)c(LDFLAGS)249 b(=)36 b(-Wl,-Map,$\(PRG\).map)515 +3047 y(OBJCOPY)284 b(=)35 b(avr-objcopy)515 3126 y(OBJDUMP)284 +b(=)35 b(avr-objdump)515 3284 y(all:)h($\(PRG\).elf)i(lst)e(text)h +(eeprom)515 3441 y($\(PRG\).elf:)h($\(OBJ\))797 3520 +y($\(CC\))f($\(CFLAGS\))g($\(LDFLAGS\))h(-o)e($@)g($^)g($\(LIBS\))515 +3678 y(#)f(dependency:)515 3757 y(demo.o:)i(demo.c)g(iocompat.h)515 +3914 y(clean:)797 3993 y(rm)f(-rf)g(*.o)g($\(PRG\).elf)i(*.eps)f(*.png) +f(*.pdf)h(*.bak)797 4072 y(rm)f(-rf)g(*.lst)h(*.map)f +($\(EXTRA_CLEAN_FILES\))515 4230 y(lst:)71 b($\(PRG\).lst)515 +4388 y(\045.lst:)37 b(\045.elf)797 4467 y($\(OBJDUMP\))h(-h)e(-S)g($<)f +(>)h($@)515 4624 y(#)f(Rules)i(for)f(building)i(the)e(.text)g(rom)g +(images)515 4782 y(text:)g(hex)g(bin)h(srec)515 4940 +y(hex:)71 b($\(PRG\).hex)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 329 345 +TeXDict begin 329 344 bop 515 203 a Fs(22.36)94 b(A)32 +b(simple)d(pro)5 b(ject)1709 b(329)p 515 236 2865 4 v +515 523 a Fj(bin:)71 b($\(PRG\).bin)515 602 y(srec:)36 +b($\(PRG\).srec)515 760 y(\045.hex:)h(\045.elf)797 839 +y($\(OBJCOPY\))h(-j)e(.text)g(-j)g(.data)h(-O)f(ihex)g($<)g($@)515 +996 y(\045.srec:)h(\045.elf)797 1075 y($\(OBJCOPY\))h(-j)e(.text)g(-j)g +(.data)h(-O)f(srec)g($<)g($@)515 1233 y(\045.bin:)h(\045.elf)797 +1312 y($\(OBJCOPY\))h(-j)e(.text)g(-j)g(.data)h(-O)f(binary)h($<)f($@) +515 1469 y(#)f(Rules)i(for)f(building)i(the)e(.eeprom)h(rom)f(images) +515 1627 y(eeprom:)h(ehex)f(ebin)h(esrec)515 1785 y(ehex:)72 +b($\(PRG\)_eeprom.hex)515 1864 y(ebin:)g($\(PRG\)_eeprom.bin)515 +1943 y(esrec:)37 b($\(PRG\)_eeprom.srec)515 2100 y(\045_eeprom.hex:)i +(\045.elf)797 2179 y($\(OBJCOPY\))f(-j)e(.eeprom)h +(--change-section-lma)k(.eeprom=0)d(-O)d(ihex)i($<)f($@)f(\\)797 +2258 y(||)h({)f(echo)i(empty)f($@)g(not)g(generated;)i(exit)f(0;)f(}) +515 2416 y(\045_eeprom.srec:)j(\045.elf)797 2495 y($\(OBJCOPY\))f(-j)e +(.eeprom)h(--change-section-lma)k(.eeprom=0)d(-O)d(srec)i($<)f($@)f(\\) +797 2574 y(||)h({)f(echo)i(empty)f($@)g(not)g(generated;)i(exit)f(0;)f +(})515 2731 y(\045_eeprom.bin:)j(\045.elf)797 2810 y($\(OBJCOPY\))f(-j) +e(.eeprom)h(--change-section-lma)k(.eeprom=0)d(-O)d(binary)i($<)f($@)g +(\\)797 2889 y(||)g({)f(echo)i(empty)f($@)g(not)g(generated;)i(exit)f +(0;)f(})515 3047 y(#)f(Every)i(thing)g(below)f(here)h(is)e(used)i(by)f +(avr-libc's)i(build)e(system)h(and)f(can)g(be)g(ignored)515 +3126 y(#)f(by)h(the)g(casual)h(user.)515 3284 y(FIG2DEV)601 +b(=)36 b(fig2dev)515 3362 y(EXTRA_CLEAN_FILES)251 b(=)36 +b(*.hex)h(*.bin)f(*.srec)515 3520 y(dox:)g(eps)g(png)g(pdf)515 +3678 y(eps:)g($\(PRG\).eps)515 3757 y(png:)g($\(PRG\).png)515 +3836 y(pdf:)g($\(PRG\).pdf)515 3993 y(\045.eps:)h(\045.fig)797 +4072 y($\(FIG2DEV\))h(-L)e(eps)g($<)g($@)515 4230 y(\045.pdf:)h +(\045.fig)797 4309 y($\(FIG2DEV\))h(-L)e(pdf)g($<)g($@)515 +4467 y(\045.png:)h(\045.fig)797 4545 y($\(FIG2DEV\))h(-L)e(png)g($<)g +($@)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 330 346 +TeXDict begin 330 345 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(330)p 515 +236 2865 4 v 515 523 a(22.36.8)93 b(Reference)31 b(to)h(the)g(source)f +(co)s(de)515 724 y Fq(The)c(source)g(co)r(de)g(is)g(installed)h(under) +515 870 y Fm($prefix/share/d)o(oc/)o(av)o(r-)o(lib)o(c/)o(ex)o(amp)o +(le)o(s/)o(dem)o(o/)o Fq(,)515 1017 y(where)f Fm($prefix)f +Fq(is)i(a)f(con\034guration)g(option.)38 b(F)-7 b(or)28 +b(Unix)g(systems,)g(it)g(is)g(usually)g(set)g(to)515 +1117 y(either)f Fm(/usr)f Fq(or)h Fm(/usr/local)p Fq(.)515 +1396 y Fn(22.37)112 b(A)37 b(more)h(sophisticated)g(pro)6 +b(ject)515 1597 y Fq(This)26 b(pro)5 b(ject)25 b(extends)h(the)g(basic) +f(idea)h(of)g(the)g Fs(simple)i(pro)5 b(ject)27 b Fq(\(p.)14 +b(313\))25 b(to)h(con)n(trol)e(a)515 1697 y(LED)k(with)g(a)f(PWM)i +(output,)f(but)g(adds)f(metho)r(ds)h(to)f(adjust)h(the)g(LED)g(brigh)n +(tness.)36 b(It)515 1796 y(emplo)n(ys)26 b(a)i(lot)f(of)h(the)g(basic)e +(concepts)i(of)f(a)n(vr-lib)r(c)f(to)i(ac)n(hiev)n(e)e(that)i(goal.)515 +1943 y(Understanding)f(this)i(pro)5 b(ject)27 b(assumes)g(the)i(simple) +f(pro)5 b(ject)27 b(has)h(b)r(een)g(understo)r(o)r(d)g(in)515 +2043 y(full,)33 b(as)e(w)n(ell)h(as)f(b)r(eing)h(acquain)n(ted)e(with)j +(the)f(basic)f(hardw)n(are)e(concepts)j(of)f(an)h(A)-9 +b(VR)515 2142 y(micro)r(con)n(troller.)515 2405 y Fs(22.37.1)93 +b(Hardw)m(are)33 b(setup)515 2606 y Fq(The)26 b(demo)g(is)h(set)f(up)h +(in)g(a)f(w)n(a)n(y)f(so)h(it)h(can)f(b)r(e)g(run)h(on)f(the)h(A)-7 +b(Tmega16)25 b(that)h(ships)h(with)515 2705 y(the)e(STK500)d(dev)n +(elopmen)n(t)i(kit.)36 b(The)24 b(only)g(external)g(part)g(needed)g(is) +h(a)f(p)r(oten)n(tiometer)515 2805 y(attac)n(hed)i(to)h(the)g(ADC.)h +(It)f(is)g(connected)g(to)g(a)g(10-pin)f(ribb)r(on)g(cable)h(for)f(p)r +(ort)h(A,)h(b)r(oth)515 2905 y(ends)20 b(of)h(the)g(p)r(oten)n +(tiometer)f(to)g(pins)h(9)f(\(GND\))i(and)e(10)g(\(V)n(CC\),)h(and)f +(the)h(wip)r(er)f(to)h(pin)f(1)515 3004 y(\(p)r(ort)g(A0\).)34 +b(A)20 b(b)n(ypass)f(capacitor)f(from)h(pin)i(1)e(to)h(pin)g(9)f(\(lik) +n(e)h(47)f(nF\))h(is)g(recommendable.)p 515 5179 V 515 +5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 331 347 +TeXDict begin 331 346 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(331)p 515 +236 2865 4 v 530 2566 a @beginspecial 180 @llx 301 @lly +432 @urx 490 @ury 3401 @rwi @setspecial +%%BeginDocument: largedemo-setup.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: pnmtops +%%Title: noname.ps +%%Pages: 1 +%%BoundingBox: 180 301 432 490 +%%EndComments +%%Page: Image0 1 +/readstring { + currentfile exch readhexstring pop +} bind def +/rpicstr 629 string def +/gpicstr 629 string def +/bpicstr 629 string def +%%EndProlog +%%Page: 1 1 +gsave +180.2 301.6 translate +251.6 188.8 scale +629 472 8 +[ 629 0 0 -472 0 472 ] +{ rpicstr readstring } +{ gpicstr readstring } +{ bpicstr readstring } +true 3 +colorimage +76767676787b7d7f7c7d7f7f7e7b78768181818384837f7c808182848483 +82817f8286888785838383858787868484847c7f83848383868888827f81 +83818285847f7e82817c7d817f8082817f7e7e7f797a7c7e7f7e7d7c7a7b +7c7d7d7c7b7a797a7a7a7b7c7f827d7c7b7c7e7f7e7f7f81818080818282 +8281807f7e7f807e7b777674716f6e6d635c5349423b36302d2928292a2c +2a282b2725201e1d1e1e1e1f1f2224272828323231323333343533373b39 +342e2a291d1d1c181411101113110d0b0b0b0d0c100f1212121314151816 +151517171615141414141515151517171717171717171b1b1b1b1c1d1e1c +1c1c1a1817181e22242320191619232c261518181e2315161c1d1d1a1617 +1b1f1f120c14191714151313111010100f0f101010101010101011131414 +1212141718161516161419203b6f9e889b9d9ba29b9b9c9c9a9a9b9c9d9c +9a989797979996969597999a9a99989a9c9c9b99999899999a9997969899 +9d9e9f9d9d9ea3a69f9a9a9d9b969394949a9d9b9795959593918f8f9090 +8e8c87837f7f828484807a7c7e7f7f7e7e807e7d7c7a797877777a7a7e81 +8384847f827f7f7a6f58433644394a3834616961645a72897d75807d7472 +737373716f6e756e6f767c7d7f837d887f8b8675817a797a7a7c7e7d7975 +707281747c6f79776e8172777a707d786e65626468686b6f6d6369717171 +716d6e747a7c7f8186898583827f8081858686817e7f84868480807c7878 +7c81838481828283838282817e7f818282817f7d7e8285827d7a7b7f7c7c +7d7f807f7c7975787d7f7d7b78777b7f8280797473747879797a7b7d7e7f +7c797677797b787575757577787876737077787371757877757574737249 +4949494b4e505250515353524f4c4a535353555655514e52535456565554 +535154585a5957555555575959585656564e5155565555585a5a54515355 +53545757525155544f505452535554525151524e4f5153545352514f5051 +525251504f515252525354575a55545354565756545150504f4f50515151 +504f4e4d4e4f51525352504d4b49483e372e241d16100d11111112161817 +1719191714141314131515181b1e212526303132353638393b363a3e3c37 +312d2c20201e1a16131212120f0b090808070609080606070807080b0a09 +090b0b0a09080808080a0a0a0a090a0a0a0a0a09090d0d0d0d0e0f101010 +12110f0e0f15191b1a150e0a0d17221c0d0f0f151a0a0b1112100d090a0e +141308020a12100d0e0e0e0e0d0d0d0c0d0b0b0b0b0b0b0b0b0c0e0e0e0c +0c0e100c0a0d13141310122451755b6768676f6b6d6e6e6c6c6d6e6f6e6c +6a69696969636160626465656463656767666464656a6c6d6d6b6a696a6a +6a69676364686d6c69696c6a65626363696c6a666464646462606061615f +5d58545050535555534d5052535453545658575654535253525453535555 +54504e505154554d3c281c2a21362728586661675f768b7e757c7d767778 +787876727178716f767c7d7f837e8a818d8877837c7b7c7c7e807f7b7671 +7382757d707a786f8273787b717e7c76716e7071717276756b6f77777777 +706b6a67625b595a5c595957575859595a5c5754555a5c5a5656524e4e52 +57595a5354545555545453505153545453514f52565956514e4f53505051 +535453504d4b4e535553514e4d515558564f4a494a4b4c4d4e4f51545555 +524f505355524f4e4e4e5051514f4c4950504b494d504f4d4e4d4c4b2a2a +2a2a2a2d2f312d2e2e2e2d2a27253131313334332f2c3031323434333231 +2d3034363533313131333535343232322a2d31323131343636302d2f312f +303336313034332e2f3331323433313030312c2d2f313231302f2d2e2f30 +302f2e2d2e2f2f2f3031343732313031333433323030302f2f3031313130 +2f2e2d2e2f303231302e2d2b2c2b231c140a030000000507090a0f111110 +17161714151415171a1d2023282b30313e3f4446494b4c4b47494d4b4842 +3e3d3333332f2b282724201a161411111110111010100f10100f120e0d0d +0d0d0c0b080808080808080606040404040406060a0a0c0c0d0e10101011 +121011121a1e201f1b140e111b231d0b1010161b0e0f151617141011171c +1d110b131a1815161515151414141312110f0f0f11111111131518181616 +18181614181e211b150f163957343f3c38403b3c3d3d3b3b3c3d3e3d3b39 +38383839363534363839393837393b3b3a383836363332302c2d31363f43 +45433e3c3c4041404043413c393a3a4043413d3b3b3b3836343435353331 +2c2824242729292924292b2c2a292a2c2b2a29272423232630323332312e +29262b2d34383426150b1d152d20285b6d696e63798a786b7071757a7b7b +7b7977767d76777e8485898b8089808c8776827b7a7b7b7d7f7e7a787578 +877a82757f7d7487787d8076838583817e808080828682787b8383838379 +7269615341363533323334343536363736312e2f34363430302c28282c31 +33342f3030313130302f2c2d2f30302f2d2b2b2f322f2a27282c29292a2c +2d2c292625282d2f2d2b28272b2f3230292423242a2b2a292a2a2a2b2a27 +26272e302e2a272525272828282522292c2725292d2b2927262524767676 +77797b7d7f7f7f7f7f7e7d7b7a808182828281808080818283838381817e +8286878684838383858888868483837d8083838384868989838082848383 +8687828082827f808483858585838283858180818181807f7f7b7c7e7f80 +7f7e7e7c7a7979797b7e817e7c7c7d7f807f7f818080808080818182817f +7e7e7f80807c797b7a7d7b7e7c89827e777671716c48433b342c251d161a +1a1b1a1b1d1f20262523201d1a18150c0c11171d22292a33373c3d3c3a39 +3a41403e39332d292925221e1a1814110d1210100f0f1011120f0e0e1013 +141312161617181819191a1a1a1a1a1a1a1a1a1414131416191d20222121 +1e1b1b1e21231e1813141a2125221317161c201214181918151212171a1c +0f0a121715131412120f0e0e0e0e0e1111111010101010100f0e0e101417 +1a1f1a161515141b26396da08c9d9d9a9e9c9c9c9b99999b9c9c9b999897 +97989a98989798999a9a9997999c9d9c9b9c9b9a9b9b9a9897999a9d9e9d +9c9b9ba1a39e9b9c9e9b9694979b9ea1a09d9a97959a99989795918b867f +7c797a7d7e7c777c7e7f7e7c7b7b7c817e7f7c7d7c7d7e7b7b7e81858584 +81827e7e7b715c4432463e4b3b39646c637d4643676858616d828184888f +959a9d7e88877c7c83817880836f737a777e6b75737c867d6c6f81807b72 +747b8781767d795e636d69674d575555545048474d4a4753594c49596969 +6f767a7e81868a8684838182878a8c86817e7f83858380807c78787c8083 +8582828383838281817f80828382807e7d7d8285837e7b7c7e7c7c7d7e80 +7f7c7a76797c7e7e7b78777a7f828079747375787878797a7c7c7d7a7978 +767475787a7675757778787674737879747174767576767574734949494a +4c4e50525353535352514f4e525354545453525252535455555553535054 +58595856555555575a5a585655554f5255555556585b5b55525456555558 +5b5553555552535756585858565556585455565656555454505153545554 +535351525151515356595654545557585754535252525252535354535150 +505152535455545656575757625d56524e4c49482b272019140d06020709 +090b0d0f11121a19171512110e0e06090d151c24282c35393e3f3e3c3b3c +43423f3a342e2a2823201c1815110b070b09060503050507040303050809 +08070c0c0d0e0e0f0f100f0f0f0f0f0f0f0f090807080a0d111418181815 +121215181a150d08070e151a190b0e0d131707090d0e0d0805050a0f1205 +0008100e0c0d0d0d0c0b0b0b0b0c0c0c0c0b0b0b0b0b0b0a08080a0e1113 +130e0e1213131518234f775f6968666b6c6e6e6d6b6b6d6e6e6d6b6a6969 +6a6a656362636465656462646768676667686a6d6e6d6c6a6a6a6a6a6966 +6465696d6b6a6b6d6a6563666a6d706f6c6966646b6a696866625c57504d +4a4b4e4f4d4a51525352515051525858565654565757535253555554504d +515051544f3e28182c2637292d5b6963804b476969585f6d8485888d9399 +9da0818b877c7c83817980836f737a777e6b75737c867d6c6f817f7a7173 +7a8680757c785d626c68664d5d5d5d5c564e4d514e4b575c4f4c5c696465 +63605a595a5d5a5a58595a5c5e605a575455595b595656524e4e52565959 +5454555555545353515254555452504f51565957524f5052505051525453 +504e4c4f525454514e4d505558564f4a494b4b4b4c4d4e5052535352514f +4e4f52544f4e4e5051514f4d4c51514c494c4e4d4e4f4e4d4c2a2a2a2b2b +2d2f3130302e2e2d2c2a29303132323231303030313233333331312c3034 +353432313131333636343231312b2e31313132343737312e303231313438 +34323434313236353737373534353733333434343332322e2f3132333231 +312f2f2e2e2e303336333131323435343232313131313132323332302f2f +303132313333343537383a45423c38353230321b1b150e0a030000000205 +080a0e10111c1b1b191816161610141b222a31363942454a4b4b49484952 +51514c46403c38302b27231e1a151113110f0e0d0d0f0f0a0709090c0d0c +0b0d0d0e0f0f0e100f0d0b0b0b0b0d0d0d070807080a0f13161919191815 +171a1d1f1a130e0e12191e1a090f0e14180b0d1112130f0c0c13171b0e09 +111816141514141312121212111010100f111111111211121214181b1b1d +18191d201b191515375938413c373c3c3d3d3c3a3a3c3d3d3c3a39383839 +3a383736373839393836383b3c3b3a3b39393935322f2f34393f4344423d +393a3e3e3f40423f3a383b3f424544413e3b393f3e3d3c3a36302b24211e +1f22232120272b2c2b272627282c2b2a292627282c2f3231302f2c292629 +2c3035342613071d1a2e252d5e706b874f4a68634e526381888b90969ca2 +a586908f84848b897e82836f737a777e6b75737c867d6c6f838480777980 +8c867b827e6368726e6c55696a6a69625a595d59566065585565716a645c +514036353433343536373a3b3d35312e2f33353330302c28282c30333430 +30313131302f2f2d2e3031302e2c2b2a2f32302b28292b29292a2b2d2c29 +2726292c2e2e2b28272a2f3230292423252a2a2928292928292827282629 +2a2e2f2825252728282826252a2d2825282b292a28272625777777787a7c +7e7f8181807f7e7e7e7e7f8183827f7f818481818283828281807e818586 +858382838285898a88858382808182828284888b89848284868585888b86 +838483828589898a8a8987888a8c87878787868584837f80828485868584 +7f7e7b7a7b7d80827e7d7d7f8181807e7e7e7e7e7e7e7e7e81807f7e7e7f +81817a7a7c7d808183838682807e807f807c7d77716c656058533835322d +251f1a17191a1c1d2021212127241f1a150e0d09080d151c22282e322e31 +353b404345463e3c3b3937332f2b2624201b1a1919190f0f0e0f100f0c0a +080809090a0a0b0b131313141515161615141313161c21252220211f1d1c +1c1e231b131013191c1b1d0d1212191d0e10141514110e0e13181a0d070f +1413111312110d0c0b0c0d0e0e0d0d0c0c0b0b0b0a0b0f14181917161615 +15181711121930639d8e999996979e9d9c9997979a9d9b9a999898999a9c +9c9a9898999a999895989c9d9d9c9d9e9b9c9d9c9a99999b9c9c9b9b999b +9fa19d9b9ea09c96969a9696979a9b9894918f90929595928c8789868485 +878885807e7e7e7d7c7c7d7f827f7d79787778797d7d7f8287888582847f +7e7c7662462e4440483b3f666d634318050a070e160a00000000030a1116 +2137516c848f9aadafab918a929ca798a6948071696e849b80a3a9a77f83 +797f80827978757b867277777c7e7a727074707177756e716d5d6b6f767a +808387888482817f81878c8f85827f7f82848280817e7b7a7d8083848383 +8484838281808182838382807d7c7d818584817d7d7e7c7c7c7e807f7d7a +77797c7e7e7c79777a7d807f7a76757577777778797a7b7c787979757071 +777e7776767778797775757978747273757478777776754a4a4a4b4d4f51 +525555545352525252515355545151535653535455545453525053575857 +55545554575b5c5a5755545253545454565a5d5b5654565857575a5d5855 +565554575b5b5c5c5b595a5c605b5b5b5b5a59585753545658595a595954 +53504f505255575352525456565553525252525252525255545352525355 +5652545457585a5a5c5d5b5756565756575a57504b46413b371e1d1a1711 +0b06030505070a0c0f1113191814110c080302050a12191f252b2f2b2e32 +383c3f41433b39383634302925201c1813100f0f0f050604060706030100 +000000000101020a0a0a0b0c0c0d0d0c0b0a0a0d12171c191a1b19171515 +1719110805080e0f1014070c0c101405070b0c0a060303080d100300050d +0c0a0c0d0c0b0a090a0b0c090808070706060605060a0f1213110f0a090f +1515100c0b1a457461686662646e6f6e6b69696c6f6d6c6b6a6a6b6c6c69 +676565666766656265696a6a696a6b6a6d6f6e6d6c6b6d6b6b6a6766676a +6d6b6b6e706c66666a6666676a6b6864616061636666635d585a57555658 +5956535354545351515254575652504d4e4f50535253555655524f504f50 +53514328132a2a3429335d6a63461b090c080e140a00000001040b121722 +38526d85909bacada78d868e98a394a2907c6d656a80967b9ea4a27a7e74 +7a7b7d74737076816f777a7f817b7371736f7076736c6f6b58656563605c +5b595b58585657595c6063595653535658565455524f4e51545758555556 +56555453525354555554524f4e5155595855515152505050525453514e4d +4f525454524f4d50535655504c4b4b4a4a4b4c4d4e51525152524e4a4b51 +58504f4f505152504e4e52504c4a4b4d4c5050504f4e2b2b2b2c2c2e3031 +32322f2e2d2d2d2d2f3133322f2f313431313233323231302c2f33343331 +303130333738363331302e2f30303032363937323032343333363b363334 +33323539393a3a3937383a3d383838383736353430313335363736363130 +2d2c2d2f3234302f2f31333332302f2f2f2f2f2f2f2f3231302f2f303233 +2e30313335393a3d3f3e3b3c3d3d3d3d44423d38342f2b2911110e0c0602 +0000000004060b0d1112191a1814110c0b090c111920262c343836393d43 +4a4d4f4e4642413f3d39332f2a27231e1b181a180d0b0c0b0c0b08060606 +0707080609070b0b0b0c0d0f10100f100f0f121a1f211e1c1d1d1b1c1c1e +2119100b0e14161415070c0c1317080a1011120e0b0b1015180b050d1413 +11131312100f0e0f10110d0c0c0b0d0c0c0c0c0d11161c1d1b1714131920 +221810080c2d563a3f3933353e3e3d3a38383b3e3c3b3a39393a3b3c3c3a +3838393a393835383c3d3d3c3d3e3f3f3d3a3635373c404242403b38383b +3a3b3e403c36363a3636373a3b3834313435373a3a37312c2e2b292a2c2d +2a29292c2c2b2727282a2c2a2522202021242d2f2e2e2e2a272428292e33 +342710001b1f2d253360716b4d200c0b0204080000020202060d161b263c +57728a95a0b2b0a88e878f99a495a3917d6e666b819a81a4aaa880847a80 +81837a79767c87767f8186888078767974757b786f726e5c69645c4f4238 +353231323334363a3d4034312e2e3133312f302d2a292c2f323331313232 +31302f2e2f303131302e2b2a2a2e32312e2a2a2b2929292b2d2c2a272729 +2c2e2e2c29272a2d302f2a26252529292827282727282627292525262d33 +2926262728292927272b2c2826272a282c292928277778797a7b7c7e7e82 +817f7d7d7e8081818485817c7b808582828282818180807e818485848382 +8383868a8b88858282838282828385898c8a858386888787898b88868385 +84898b8e8c8d898a898f9088888b8c8c898684828386888a8b8b8a85817f +7c7e8084847e7d7e7f8281807d7b7c7c7c7c7b7a7a7e7e7c7c7c7d7f807e +7c7f7d807e817f827e7e7b7f7e807d84838383868786858886827970655c +573c39352f2a241e1b18181a1e21252828221f1d1814100f0d151416191e +212423333233373a3c3c3a403f3b3834302e2d262422201e1a1410131211 +100f0d0c0c070708090a0a0b0b0f0e0d0e0f12161814151719191918181d +1813121517171518090f0f16190b0e151615110e0e14171a0d060e131211 +1312100c0b0a0b0d0e0d0d0d0c0b0b0a0a1614100a06060a0f13110f1115 +161d28295a9c949b9999979f9d9b9896969a9d9b9a999898999b9ca09d9a +999a9a9a9996999c9d9c9b9b9a9b9c9c9b9998999b9d9c9a98999a9c9e9b +9b9fa09c95969a9f9a999b9e9a97948c8d8f9293928e8a837f7a7a7c7e7d +7a7978787879797c7e8785827f7d7d7e7f7d7d80848789878385817e7e79 +69492c3f42433844666b5f2e23241f182c3b292b27221e1e2125272b455b +76929798a8bcb1998c8b93a1a5b1beb291879dafafc5d8d0be9fa4a0a1a8 +91a8dfdc9e643e41465366747e868d8290948992b3b08872757a7f838486 +8783807e7b7d83888c84817f7f8182817f817f7c7c7d7f82838484848483 +82818083838383817f7d7c7c808484827f7e7f7d7c7c7d7f7f7d7b79797b +7d7e7d7a77797c7f7e7b777676767676777879797a787979777474787c78 +77767779797876757676747374757579797878774a4b4c4d4e4f51515655 +535151525455535657534e4d525754545454535352525053565756555455 +55585c5d5a5754545554545455575b5e5c5755585a59595b5d5a55555456 +585d5d5e5c5b595b5e625a5c5f60605d5a5856575a5c5e5f5f5e59575352 +5256585a52535255565754535052515251514f5053545152515354555354 +54555556565657555252535554545d5b5b5e616364626866635d534a413c +1f1c17130e0906050104070b10131619171713100a0805040a0b0b101318 +191a2c2d2e3235373533393834302c2826261f1d1b1917130d090c0a0908 +0705040502020304050506060a090809090c10130f10121212121111130e +08070a0c0a0a0f0309090d1002050c0d0b070404090d100300040c0b0a0c +0d0b0a0908090b0c0808080706060505110f0b05000004080705090f1315 +171a133c73676a6665646f6f6d6a68686c6f6d6c6b6a6a6b6d6e6d6a6766 +676767666366696a696868696a6c6d6d6b6a6b6d6e6c6a68686a6d6f6b6d +6f726c67666c6f6c696d6e6c6766606062656665615d56524d4d4f51504f +4f5151514f4f52545d5a5754525253545353535456565250515050535547 +2910252c2f29385d685e2e262821192c39262a25221e1e2125282c465c77 +939899a7b6a89083828a989ca8b5a9887e94a6a6bccfc6b5959b96989e88 +9ed6d2955a383d424f62707880877d888c818aa9a6806c6b67645f5c5957 +5654535355585c5e58555353555655535553505051535657565656565554 +53525555555553514f4e5054585856535253515050515353514f4f4f5153 +5453504d4f525554514d4c4c49494a4b4c4d4f50515252504e4e52565150 +4f505252514f4e4f4e4c4b4c4d4d51525151502b2c2d2e2d2e303033322e +2c2c2d2f30313435312c2b303532323232313130302c2f32333231303131 +34383936333030313030303133373a383331343635353739363431333237 +393c3a3b3738373d3e38373c3b3d383733333237373b3a3c393631302c2f +3035342f2d2f2f3331312d2d2c2e2c2e2b2c2a302e2e2c2e2d3132303031 +313333343637353534383939384041414347494b4c53514f484137302b11 +0e0c070300000000000005090f12161515120e090606050e0e0f13191d1f +1f333335393c3e3d3b41403c3b3733312e262422201e1a14111415141312 +100f0d080607080b0b0c0c11100f1013161a1a15161819191918181b1610 +0f1012111012030909101305081112130f0c0c1115180b040c1312111313 +110f0e0d0e10110c0c0c0b0c0c0b0b1816120c0a0a0e10110f131a201d1b +1705245540413936353f3e3c3937373b3e3c3b3a39393a3c3d403d3a393a +3a3a3936393c3d3c3b3b3e4244413c3936393c444442403d3a39393a3b3e +403b35353a3e3a383b3d3a36353336393b3d3b38332d2824232627272527 +2a2a2a27272a2a33302c292727282a2d2d2c2c2d2b282529282c31352b10 +001621282438606f66362b2b2013222d1d2626221e2023272c304a607c98 +9d9eacb8a99384858b9b9dabb6ac898195a9a9c1d4ceba9da09e9da68da6 +dbda9a623c3e4350636f7880877a868a7f87a7a47e6e6a60534539322f2f +2d30303236393c33302e2e3031302e302e2b2b2c2e31323232323231302f +2e313131312f2d2b2a292d31312f2c2b2c2a29292a2c2c2a2829292b2d2e +2d2a27292c2f2e2b27262628282726272625262627292729292e312a2726 +2729292a2827282a2827282a292d2b2a2a2978797a7b7c7d7e7e817f7d7c +7c7e8082848686817b7a7e83828281818080808080828485848383848487 +8a8a888583828483828284878a8c898584888a88888a8b8a878384878b8c +8e8d8d8a89898e8f83878d91928e898585878a8d8f8f8f8f8b8784828587 +898883828485888785827e7c7d7d7d7b7a797a7a7978797a7c7f81818281 +8180818083818080838384837979797c808281807c7f808182807d7b8b87 +81786f66605b534e463d332a241f1c191a1b1f212424231e1b181b1c1e1a +1c1b1b1f23282b2c3537393b3c3c38373b3938373634302d2a292724211d +1b1a1111100f0d0c0b0a060606060503020107080a0d0e0d0c0b0d0e1214 +1515161514070e0e1215070a131413100c0c13181d0f080e131211131211 +0d0c0c0c0d0e100f0f0f0e0e0d0d0a0c0e12203d637e4b3d2919110f1826 +26549d9b9e9d9f9c9e9d9b9795969a9d9b9a9998999a9b9ca29f9b999a9a +9a99989a9c9c9a9897959a9b9c9b999896989e9c99979698999b99999d9d +9b9395979e9594969a94939293908e8d8c8a868389837d7b7d8182807c7b +7c7b7c7b7e807f807d7b7b7b7c7d7d7d80858887878485827f7d7b6c4b2b +39433e394c656c5b2615202f25222d2b2624201e1d2025273249516a9aa4 +816d9e8a80808282848e9fbbbd9e8fa4bbbfaad2f3d3b29db6c8b3849ff1 +ffc3857d413731353b3b373531393c303050696676767a7e838786878481 +7e7b7d7f8386848280808081808080807e7d7d7e80828484848484838281 +84848482817f7e7d7c7f818382807f7f7e7d7c7d7e7f7d7b7b7a7a7c7e7e +7b78787a7d7d7c7978777776767677787979797877797b7c7a787a787777 +797a7978747372747576777879797979794b4c4d4e4f5051515553515050 +525456565858534d4c50555454535352525252525456575655555656595c +5c5a5755545655545456595c5e5b57565a5c5a5a5c5b5a55535257595c5c +5d5b5a57595c5f555a5f6464615b58575a5c60616261625d5b5656575b5b +5c555656595a5b5756545556565654535253535251525355555757565755 +55555556565355565857564b4b4d505357585755585b5e5e5c595766625b +544b433d3a322f2920180e08050808080a0c101113100d0807080a0b0b10 +1110141a1f22232b2d2f313232313036343332312f2b272423211e1b1715 +140e0e0d0c0a09080703030303010000000405070809080504030407090a +0a090a0b0108080c0f01040c0d0c090505090e130500040c0b0a0c0d0c0b +0a0a0a0b0c0b0b0a0a090908080507090d1b385d77413323170f0e121810 +36746e6d6a6c696e6e6c6866676b6e6c6b6a696a6b6c6d6f6c6866676767 +666567696967656464686a6c6c6b6a6a6c716f6c6a6b6e70706e6d6f716d +67676b7069666a6c6865666766636361605b595e59525152575758565859 +58565557595856535150505151535353555756545151525355574b2c0f1f +2f2b2a405f675a2616213126222a28211e1c1a1b1e23273249526b9ea885 +6d9580767678787a8495b1b394859ab1b59fc7e8c8a792abbda87994e6fa +b87a73372e282c32302c2a272c2f2323425b596e6c6763605c5958575553 +535254575858565454545554545454525151525456565656565655545356 +5656545351504f5053555756545353525150515253514f51505052545451 +4e4e505353524f4e4d4a494a4a4b4c4f4f52515052555654525351505052 +5352514d4c4a4c4d4e4f5051525252522c2d2e2f2e2f303032302c2b2b2d +2f31343636312b2a2e3332323131303030302e3032333231313232353838 +36333130323130303235383a37333236383636383734322d2f3136363937 +38343433393931333b3d403a3731333338393d3b3d3b3934322f33343735 +312f32323634332f2e2c2f2d2f2b2c292c2a2b282b2a2e2f313131313232 +32333534343537383a3729292a2d32353837363b404244423f3d4c48443c +352d29271f1d1710070000000000000005080a0b0a060200040607081012 +14181d2227283335373a3b3b39383c383938383632312e2f2d2a29252320 +17151413111011100e0e0e0e0f0d0c090d0c0e0f100f0d0c0b0c0f111212 +12100e030a0a10130508131413100d0d12171b0d060c131211131312100f +0f0f10110f0c0e0e0d0d0e0e0b0d1014223f677f4a3c2d221c161615021e +5647443d3d3a40403e3a38393d403e3d3c3b3c3d3e3f44413d3b3c3c3c3b +3a3c3e3e3c3a393b454944403a39393d48484543403e3c3b3b3c3e403c36 +363a3f3835393b3734374040403d3e3a38333b332f2b2f31343431323332 +31303032312e2b292626272a2d2d2c2d2e2b2926292a2c31352c10001026 +242540616d602e1b2530211a211f1e1e1b191c1f2429344b546fa1ab886f +967f777579777b8396b0b4938699b2b6a3cbeeccad96b1c1ae7d9aeaffbc +8074352923272b2a26241e24261a1a3952536c6b6052443a322e2e2e302f +3032343433312f2f2f302f2f2f2f2d2c2c2d2f31323232323231302f3232 +32302f2d2c2b292c2e302f2d2c2c2b2a292a2b2c2a282b2a2a2c2e2e2b28 +282a2d2d2c2928272928272526252525272627293031302d2c282727292a +2b2a26252628292a2c2c2d2b2b2b2b797a7b7d7e7e7e7e807f7d7c7d7f81 +83858685817c7b7e82838281807f7f7f7f818385858484848687898a8987 +8483838583828386898b8b888484888a89888a898a888484898c8b8d8d8d +8b89898b8d84868d9293908a8687898c8e909191918e8a87888c8e8e8c89 +898b8d8f8f8c89848386848682827f7d7b7c797c7c80817e7e7f80818182 +827c7b7a7c7f81808083828282858584827b7c8185858584837d7f7e8081 +8081808f8c8b878583817d635b534a423a332f2e2923202122211d1c1614 +111314151513151a2025272828343235363c3e413f3b383833322d2d2a2c +2826231f1c1a1813131413110e0a070908080a0a0a060606080d11131518 +1812060f0f1214060a1112110d0a090f132012090f1311101310100e0d0d +0d0c0c0a0a0b0b0b0b0b0b0f1316151620324250493c3123151113224b97 +9a99979e989b9a9a9896979a9d9d9c9a99999a9b9ca09f9b99999b9b9a99 +9b9d9c99969593999b9b9a989796989e9b96939494949498979799989290 +91908b8e979a9695979592918f918f8e8b807a757276797c7b7173747473 +7272738482817c797673727a7b7e81858584827f807d79786a4b2a33473b +3d56696d58281c20242435381f2d2b282426292e302e2a44a5fceba99c93 +858f9babb1a5a8b7aea297979fadb698929f94ab9e9e896c7389ace7e78d +4442332b313f4647464e404957525166777571757a818788898785827f80 +81838385838281808080808080807e7d7d7f818383848484848383848483 +8281807f7f7d7d7e7f808080807e7d7c7c7e7e7d7c7c7a7a7c7f7f7b7877 +797b7c7d7b797877777777777878797977777b7f807b767b797778797a7a +79747070747777787a79797979794c4d4e50515151515453515051535557 +575857534e4d505455545352515151515355575756565658595b5c5b5956 +555557555455585b5d5d5a56565a5c5b5a5c5758565252575a595b5b5b59 +5757595b5459606566635d595a5c5f6163646464615d5a5b5f61615f5c5c +5e6062625f5c5a5c5c5d5c5b585853545252525556575252535455555656 +504f4e505355535252515153555857564f51565a5d5d5b5b525253555557 +585967676663615f5d5d47423a3128201915140f09060708070509070202 +0406070705090e14181c1d1f2b2c2c303337373831302e2b272522222625 +23201c191715101011100d0a0604070705050503000000000206080a0b0d +090009090c0e00040a0b0a060304080c160800050c0a090c0b0b0c0b0b0b +0a0a06060606060606060a0e1110111b2c3b463f362f23140b080c2d706d +68646b686b6b6b6967686b6e6e6d6b6a6a6b6c6d6f6c6866666868676668 +6a6966636262696a6b6b6a696a6c726f6b6b6d6f6f70726e6e706f696768 +6762656e716d6c70716f6c6c6c6c69685b57504f51565758525555565251 +4f51605e5a56514e4b4a525353575858545252545555554b2d101c332a2e +4c636855271d21242334351a25221f1e20252a2e2c2a45a6ffefad9c8a7b +83919fa7999eaba4968d8b95a1ac8c8793899f93927e60687da1dbdc8138 +37291e243239393840323947424154696b67635f5e5c5b5a5a5958575555 +555557575655545454545454545251515355555556565656555556565554 +5352515151515253545454545251505052525150525050525555514e4d4f +515253514f4e4a4a4b4b4b4c4e4f52505054595a55505452505152535352 +4d49484c4f4f505251525252522d2e2f313030303031302c2b2c2e303235 +3635312c2b2e32333231302f2f2f2f2f3133333232323435373837353231 +31333130313437393936323236383736383233312d2d3235343636363432 +3234362e32393e3f3c36323335383a3c3d3d3d3a363334383a3a38353537 +393b3b3835323334343432302f2b2b2a292a2c2e2f2b2b2e2d303031312d +2c2b2d303232302a2828292d2f302f2a2e33383a3a3b383031333538393c +3c4d4c4c4949474748322e261d170f080405000000000000000302000001 +050607050b12181f2223242e2c2f32383e3f403a3b39383734322f302c2a +272320201e1b1b1c1b1b18140f120f0e0c0c0b060404050a0e101214130e +020b0b101204081112110d0b0b10141e10070d131110131111111010100f +0d07070a0a0a0a0c0c10141817182236434e48403a2f1c0f04001551463f +373c383d3d3d3b393a3d40403f3d3c3c3d3e3f44413d3b3b3d3d3c3b3d3f +3e3b3837394549433f39383b3f4b4a49474645424045424244433d3b3c3b +363942454140474f514f4e4f4e4c4a3e39333134383a3a3333363433302f +2e3e3a39322e2a28272f2f3031312f2c2a2b2d3131352e11000e2a23294b +656e5c2f2225241f2f2c142323201e20242b2f2d2c47a8fff2b09e8b7a83 +909fa6999daba3968c8b94a1ab8e8b978da3979682646c81a5dfe0853831 +1f161b2930302d35252c3a353248606a65594e4239343031323233333231 +31333231302f2f2f2f2f2f2f2d2c2c2e303131323232323131323231302f +2e2d2d2a2a2b2c2d2d2d2d2b2a29292b2b2a292c2a2a2c2f2f2b2827292b +2c2d2b292829292826262524252725272b3435312b2d292728292a2c2b26 +2224282b2b2d2e2d2b2b2b2b797b7c7e7e7e7e7d807f7f7f808183848382 +81807f8081828483817f7e7e7f7f8385868685858687898a8a8885838485 +84838285898b8b89878383888b898889888b8a85868b8d8a8e8f8f8d8b89 +8a8b898c909293908d8a8b8c8f9192939392908d8b8e9395938f8e8e9092 +9494908b8a8a8c8b8c88878483818180828386877f808182838485868382 +82848687868787868686898b8a888886878583807c7a8183838181818180 +84838484858687878f8b88868685817e77716965625d564c3b35322d2a26 +231e1d1d1b1a191a1b1a201d1f21292c32313a383a383a383a383431302e +2d2b2a292a2a2a2928262422191716161819161313100e0f141818171106 +10101214060a0f100f0b08060d1220130a0f12100e110c0e0d0e0d0c0a08 +07070708090a0a0a0c121b20201c1715141b233031272121234895989290 +9d969898999998989b9d9e9d9b9a99999a9b9f9c98969799999997999b9a +989695969b9c9d9c9a9997989c96918e8e8f8c8b96908d90918c8785908d +929993847b7b7170737478777673726e6c6c717273706d7176787a7a7a7b +7b7b7c7d7d7a78777576787b81817e7c777a79726f6447272946383d5c6a +6a53182329202f636e40312c241e1e2125293a3146a4f0c98f9e9aa4baad +aebdb5b8b6b4b9bdbaaeaaaba69b958d8d87909687927a6acdffb4554d3e +31323b3f403f3c415c756f656d74787475787f878b8a8886858483838383 +8686858382818283818282807d7d7f818182838485858585848382828181 +81817d7c7b7c7d7f80817f7d7b7c7d7e7d7c7e7b797b7f807c787677797c +7d7d7a7979787878787979797778797a7b7c7b7a7c7a7878797b7b7a7771 +6f747876767979797979794c4e4f51515151505453535354555758555453 +5251525354565553515050515155575858575758595b5c5c5a5755565756 +5554575b5d5d5b5955555a5d5b5a5b565a5954555a5c595d5e5e5c5a5859 +5a595c606263605d5a5b5c5f6162636362605d5b5e6365635f5e5e606264 +64605e5f606161615e5c5a5857565657595b5c5453545556575859555454 +565859585754535356585a595959595a595754524e545353535353535457 +58595b5c5d5e606c69666464635f5c554f46423f3a332d1f1e171512100c +0a080808070708090a121211161b2023252b2b2a2b2a2b2a2b2a2b2a2827 +25232223232322201e1c1c16141111110f0d0808030102070b0d0c08000a +0a0c0e01050a0b0a060303080d190a01060c0a080b07090b0c0b0a080603 +03030404050505070d161b1b17120e0a11202e31271c160d2a6e6c63606a +6668696a6a69696c6e6f6e6c6b6a6a6b6c6e6b67656668686866686a6967 +6564656b6c6e6e6c6b6b6d726d6a696b6e6e6d756f6c6f706b66646f6c71 +7872635a5c5656575a5c5d5a595654505255585756575c606362605e605d +5d5c5b59575454535555585a5b58565156565351492d111633272f526465 +50172228202e626b3b27221a1414191f25393148a6f4cd95a0949cb0a5a4 +b5abb0acacafb5b0a6a0a39c928b84837e868d7d897061c3fcaa4b433224 +262d3132312c314c655d545b666e69615d5c5c5b5b5b5a5b595857555558 +58575554535455535454524f4f5153535455565757575756555454535353 +5351504f505153545553514f505152515054514f515556524e4c4d4f5253 +53504f4c4b4c4c4c4d4f4f50515253555655545553515152545453504a47 +4c504e4e5151525252522d2f30323030302f31302e2e2f30323333323130 +2f3031323433312f2e2e2f2f313334343333343537383836333132333231 +30333739393735313136393736373132312c2d3234313536363432303132 +3134383a3b383532333437393a3b3b3a383533363b3d3b373636383a3c3c +383535363737373432302e2d2c2c2d2f31322a2a2d2c2f30313231303032 +34353431292626282d2f302f2f303132302d2c272d2d2f2f2f2f31313636 +393b3c3d4043504d4b49494846433c36302c29241f1911100c0908050403 +030304030506090a0f0e10141b2026293032343435353735322f2e2c2b29 +2a292b2b2b2a2b2927261f1d18181917120e0e0a08090e1215120d020c0c +101205091011100c0a0a0f14200f060b100e0c0f0b0d0e0f0e0d0b090404 +0405080909090d131c21221e1916121a29393d2f201200124f4539323b36 +3a3b3c3c3b3b3e4041403e3d3c3c3d3e43403c3a3b3d3d3d3b3d3f3e3c3a +393c4344423d3a393a424c4d4d4e4d4f4a49524c494c4d4843414c494e55 +4f40373d3b3f414346464442403d3a3b3f41413f3f4148484a4746454341 +43403f3b3a3837363738393734312d343634352e1400082c202c53686b57 +1d282d202c5d64352621191313171f24373147a5f3ce959f949aafa3a3b3 +aaaeabaaaeb3afa49fa19d938c85847f878e7e8a7162c4fdab4a3a261b1a +222627241f223d564f444d5b6c67584a4039353132333536353431313434 +3331302f30312f30302e2b2b2d2f2f30313233333333323130302f2f2f2f +2a2928292a2c2d2e2c2a28292a2b2a292e2b292b2f302c282627292c2d2d +2a292b2a2927272625252526292a3031312f2e2a2828292b2d2c29232328 +2c2a2b2d2d2b2b2b2b7a7b7d7e7f7f7e7d8080808182838586807f7e7f82 +8384838483817f7e7e7f7f84868787868587888b8b8a8784838486848383 +868a8c8b88868383888a898789878b8b87878d8e8a909192908d8b8a8a90 +909090908e8d8c8b8d8f91929292918e8c8b8f9597948f8c8d8f9294938f +8c8c8d8e8e8d8b88878887868687898b8d8a8a8a8a8b8b8b8b8887868687 +86848488898687898a8a87868586878886858483848484838383838a8a88 +8685838181807d7e7f848584817775787e8687847e7a7774706d67605a4e +473d322a2321201a161414181b1f1f1f1f222428292c2b2b2a2b2d2f3132 +333131302f2f3031312a2625282b2d2b2b2b201411151a18131006131113 +15070b1011100d07070c1321140a0e100e0c0f0a0b0c0d0d0b08060b0c0d +0e0f101111171311141a1c18141b1b191d1b17171c2b4d9a9e9593a19b95 +97999999999b9d9f9e9c9a9999999a9e9b979596989a9a96989b9b9a9998 +999c9d9e9d9b98989899918c8888878584918984888a867f7a8681817d66 +442e282121222424201a161b1a1a1e2223201c11161e262a2c2e313e444e +5860686c6e6f7071757a7a77756e71716b665c3f232243323c5d6a684f1c +171f2429424e37393228201e232c301a3d3b3d6b807c90a7c6dba5829195 +a08db6cfb4908eb0ccbfc4caeadecea79b97b0b096a3833a3f40352b2c34 +393d413e6e9889635e6f73807a797b81878a8b8786868584848384878786 +8482818283818283817d7c7e81808183848586868683838281818182827d +7b79797b7e81817f7d7b7b7d7e7e7d7e7b797b7f807c787677797b7d7d7b +79797978787879797a75787a7975767a7e7d7a7878797b7b7b7972707578 +75747779797979794d4e505152525150545454555657595a525150515455 +56555655535150505151565859595857595a5d5d5c595655565856555558 +5c5e5d5a5855555a5c5b595c555a5a56565c5d595f60615f5c5a59596060 +6060605e5d5c5b5d5f61626262615e5c5b5f6567645f5c5d5f6264635f5c +5f606161605e5b5a5b5a59595a5c5e605d5d5d5d5e5e5e5e5b5a59595a59 +575557565657595a59585759595a5b5b5a5954535353535353535c5c5c5a +59575656585756595c5f5b5a4e4e4f575d605b56565451504c48403d312b +21170f0b08090604000204080a0c0a0b0c10111415181d1f202224262627 +252524232324252623211e1f20211f1d1c110502090d0b0807000a0b0d0f +01060b0c0b080404090e1b0b01050a08060905060a0b0b0906040708090a +0a0b0c0c120e0c0f1517130d1111161d1d1712111831767266636e6b6668 +6a6a6a6a6c6e706f6d6b6a6a6a6b6d6a66646567696965676a6a69686768 +6d6e706f6e6d6e6f716c6867696c6c6c79716c70726e67626e6969654e2c +16120e0f1012120e08040908080c10110e0a040911161a1b1b1c292d343d +454b4f525556575a5c5c5a585056575350472d101032232e5361614a1916 +1e2428414b322f261c14141b232c163d3b3f6f848294a6c2d6a17d8d909c +88b2cab08b8aabc8b9c0c4e6d8caa19791acaa929d7f343a372b2122272c +313530608a7b534e5f65766f655e5c5c5a5a57595a5a5958555459595856 +54535455535455534f4e505352535556575858585555545353535454514f +4d4d4f52555553514f4f5152525154514f515556524e4c4d4f515353514f +4c4c4c4c4c4d4f504e5153524f5054585653515152545454524b484d504d +4c4f51525252522e2f31323131302f31312f3031323435302f2e2f323334 +333433312f2e2e2f2f323435353433353639393835323132343231313438 +3a393634313136383735353032322e2e3435313738393734323131383838 +3838363534333537393a3a3a39363433373d3f3c373435373a3c3b373436 +373838373532313231303031333537343434343535373734313230333030 +2b2c2728292b2c2e2c2b2c2f303231302f2a2a2b2b2b2b2d2d3838373536 +34333334323335393b3b392e2d31383f413f3c3e3e3d3b3934312d231f16 +0c060101010000000000010708090c0f1217191d1c1d1d1e202224262727 +2726252728292c2a2725242625211d1f1408070d14120e0a020d0d0f1305 +0a1112110e0b0b10141f10060a0e0c0a0d090a0d0e0e0c090708090a0b0e +0f1010181412151c1e1a15191a1f27291f160d0919564b3c353f3b383a3c +3c3c3c3e4042413f3d3c3c3c3d423f3b393a3c3e3e3a3c3f3f3e3d3c3d41 +403e3b37383c434e51525457575654615954585a564f4a5651514d361400 +0000010204040000000000000002030000000000060a0b0a0b161b232c32 +393d3d3e3d3e3f40403c3a34393c3939321901062b1e2b54666851201b23 +24263d462e2e261c141319242b153b3b3e6e838293a4bfd39e7a8a8d9985 +afc7ad8887a8c5b9bfc4e5d8c9a19691abaa919d7e3437302117181e2325 +2925537d6e443f505c746d5c4c413932312f303537363331303535343230 +2f30312f30312f2b2a2c2f2e2f3132333434343131302f2f2f30302a2826 +26282b2e2e2c2a28282a2b2b2a2e2b292b2f302c282627292b2d2d2b292b +2b29272726252623262a292a2b30332f2a2828292b2d2d2b2424292c2929 +2b2d2b2b2b2b7c7c7d7e7f7f7f7e7e7e7e7f8081828385827f7f81838484 +868482807f8082838084898a8a898b8d8b89868688888582838284888d8e +8b8884858687888888888e8d8b8a8a8a8b8c928f8f8f8c86868a8d8c8e8f +8e8c8a888b8d8f90908d8a888e8c8a8d92938f8a8e92969795928f8e8b8d +9196938d8d938f8f8f90919192908e8f9091929291918d8d8d8b89888b8d +8a8e8f8b8b8f8e878a8887868685868788817f8384807e81878684858685 +83818787878585838382797a7d7e7f7d7b79807c7a7d8386878685838383 +83807c766d665d51483d352f35302b24211e1e1c1918191a1b1c1c1c2525 +272a2e3338393330313235373a3b3a20191e191114151516100e17140c0c +100a1309061008121a1612120f0d0c0e0e0e0b0a09070706060b0d0a0d16 +1c1c131112151b1e1c1b1a18191a1511141c184791969f98989996979898 +97979a9c9e9d9b9a999898989e9a9695969899999195999b9b999897959a +9e9e99959391af663f28131312161012161d232727264242454c545c6060 +616b777c7977797d89908683918c7f838c82715f5758626c494345515e68 +727b7278787271777e7e726b6b716a4e342a24322b3e616c6751101d1e23 +3b4c4c4d2b28221c1d2a3f4d29201b3c727f70736a90bc7a97a447837b70 +976955c8ac739ab4b9d19471b6958084b4cefbfebd3b3c382d2328406783 +457fa2825148647d83757677878f838f8888888683828488818385858585 +8789848382818080808081848687858383847f8182838382807f807f7e7d +7d7d7e7e7b7c7c7b7a7b7e807f7c79797c7e7e7c7c7977797d7e7a757777 +77777879787876797c7c7877797b7e7a7574767878777c767172797c7975 +767778797a4f4f5051525252515252525354555657575451515355565658 +5654525152545552565b5c5c5b5d5f5d5b58585a5a57545554565a5f605d +5a565758595a5a5a5b5c5c5a5959595a5b615e5e5e5b5555595d5f616261 +5f5d5b5e60626363605d5b5e5c5a5d62635f5a5e62666765625f5e5a595d +625f59595f5b5b5b5c5d5d5e5f5e5f6061626261615d5e5d5c59595b5e5b +5f605c5c605f5a5d5d5c5b5b5b5c5c58514f53545051545a5958595a5957 +555c5c5a5a585756564b4e4f5251514d4d53514e51575d5d5e5c5d5d5e5e +5d5855514b40362b22171317130c07020000000204050607080808101012 +15191e23272727272627282828260e070e0a05080a0a0d06050e0e06060b +050e04040e060d140d090909070608090909080705050402070906091217 +170e0c0d10161917141011161a17110f11052b6d6c706868696768696968 +686b6d6f6e6c6b6a6969696d696564656768686064686a6a686766676d71 +71706b6a6a88421f0b000000050001050c121616153131343b434b4f5156 +626e73706e707480877d7a8883767c887e6d5b504f59623c35343e4c545e +676167675f5f65696960595a615a40281e16251e335763604c0d1b1c2137 +484948211c16101322364925201b3e768376776c92bd7c98a648857c7298 +6b56caad759ab6b9d39473b6978086b4d0fbffbd3c3933281e21395e7a3c +769878473e5a73796a625a6263535e595b5c5c5756565853555757575759 +5b5655545352525252535658595755555651535455555452515453525151 +5152524f50504f4e4f525455524f4f52545452524f4d4f5354504b4a4a4b +4b4c4d4e4e4f5255555251535557534e4d4f515150554f494a5154514d4e +5051525330303132313131302f2f2d2e2f30313235322f2f313334343634 +32302f3032332e3237383837393b3937343436363330313032363b3c3936 +3233343536363634373432313131323339363636332d2d31353638393836 +34323537393a3a373432363432353a3b3732363a3e3f3d3a37363232363b +383232383434343536363737363738393a3a393935343532312f33342f31 +34303034353033323231313132323029272b2c28282b3332313235343230 +3232313031302f2f27292b2d2f2e2b2a343131343c41454546484a4b4c4a +48443c362e231b110c070d0b07010000000000000000000001010b0b0d10 +161b20252728282626252624250c070f0d090c0e0e0e07060f1008080f09 +120809130b1318120e0e0d0b0a0c0d0d0c0b0a080807030608050a131b1b +121013161c1f1d1b18191f242319130d00134d44463a3839393c3d3d3c3c +3f414342403f3e3d3d3d44403c3b3c3e3f3f373b3f41413f3e3b35363836 +3231363f692c120300000000000000040a0e0e0d29292c333b43474a505d +696e6b696b6f7b827875837e71767f75645248485059332c2c37424b555c +5155554e4b5156564c4548514b331a120d1d183158686752142021223645 +4444201c161012203748241e1b3d75827676698db87793a14380776d9366 +51c5a87098b3b7d09270b4947e83b2cdf9fdbb37342d221819315771336d +8e6e3d34506a7868594845402b332f323736323132322f31333333333537 +3231302f2e2e2e2e2f323435333131322d2f303131302e2d2d2c2b2a2a2a +2b2b2829292827282b2d2f2c29292c2e2e2c2c2927292d2e2a2529292826 +2726242424272c2c2d2c2f30302a252426282a292e2825262d302e292a29 +2a2b2c7e7e7f80818180807e7e7f808181828284817e7e8082838381807f +7f8183868880838686858586898b898787888886838887888b8e8f8c8887 +878888888786868483848486878a8b938f90908e88898c8e8f90908f8d8b +898e8f9091908f8d8b8f8c8b8e9293908b8c8f939593908d8d8d8c8d908f +8a8d939293939495959695939394969697969690929392919293938b8e90 +8b8c8f8f89918f8f8c8b8a8a8a8e8a8a89898282868b8a88898a8a88878a +8a8a8787858583828183838483858584817f81858888848281818282827d +7a7e7c7c7f838788887d7a746d68666463504d4a453f3a35332c2a26221d +19161219181b1d2225292c2615131917171e1d0b0b0e1316120e0c0b0f17 +110806081324130609101311100c0c0a0908070707090c0b06060a0b0710 +0f0f1113151515271d100905040c18164690949d97979995969797959698 +9a9c9b9a99999999999e9a9694949697979295979896949394959a9e9e99 +9493928c381512141a0d071210111012100e0b0806070608090a08030102 +04030201010b0c070711100a0a161718191c232e34353130343735393d36 +3d43444a5662654f47475258524f525a563a4163756b4a0f222e3b566666 +664a48423b373a444d342f293d5d5f52574e68866a757e59705d51838775 +a37c5d6a747fb2ab949f5e6b696874abf5c84a2c3a3c291f3e8aca3e4349 +4a4d596a777d777a748190878e8686868481818486868587868483848583 +838180807f7f80828486878583838380807f7f7f7f80807e7e7e7e7e7e7e +7e7b7c7c7b7a7b7d80807d79787a7b7a787c7977797d7e7b777777787879 +7a797a76797b7b7877797b827e7876777a7a7a7c777373777a7977787879 +7a7a51515253545453535252535455555656565350505254555553525151 +5355585a525558585757585b5d5b59595a5a58555a595a5d60615e5a5959 +5a5a5a595858545353545557595b625f5f605d58585c6162636362605e5c +616263646362605e5f5c5b5e6263605b5c5f636563605d5c5956575a5954 +575d5c5d5d5e5f5f6061626364666667666661636463626364665e636360 +5f64625e6665646261606060615d5a5c595555595e5d5c5d5e5e5c5a5b5b +5958565654545152525353535354524f4d4f535757565354545456565352 +5959585b5f63646358554f4742403e3f33322f2a241f1a18100e0a060100 +00000809090c0e1112130d00000707090f11000002090c090506050b130c +0304060e1e0a00000a0d0b0a070708070605050505080702020606020b0a +0a0c0e10101020160d0907070a0f032a6c6a6e676769666768686667696b +6d6c6b6a6a6a6a6a6d696563636566666164666765636264676d7272706c +6b6b67170000000901000707060707070302000000000000000000000002 +01000000090a05050f0e080a18191a1b1c212a303029262a2c2a2b2f2c35 +393a404c5559453d3d494f4b484b4f4b2f375a6c64430a202c3952626261 +403e38312d323e49332f2b3f6163585d546f8b717a855e776258888e7aaa +81636f7a84b8b09aa464706f6d7ab0fbcd4f2c393b281b3b85c5393e4243 +46526370756c66575c64585d57595a5a5553545656575958565556575555 +535252515152545658595755555552525151515152525252525252525252 +4f50504f4e4f515456534f4e5051504e524f4d4f5354514d4a4a4c4c4d4e +4f504f525454525153555b57514f5053535355504b4b4f52514f50515253 +5332323334333332322f2f2e2f3030313134312e2e3032333331302f2f31 +3336382e313434333334373937353536363431363536393c3d3a36353536 +36363534342e2b2b2c2d2f31333a3737383530303438393a3a3937353338 +393a3b3a393735373433363a3b383334373b3d3b38353432303134332e31 +373637373839393a3a3a3b3c3e3e3f3e3e37393a3938393a3c3438393535 +3938333c3b3a383736363638343433332c2e323736353637373733312d2e +2c2b2a292a28282a2b2b2b2e2c2d2a282c303637353535373a3d3d3b393e +3d3e41474b4e5046433f3a37353333231f1c17110c090702000000000000 +000104050507080a0c0600000307091213010002080d0a0608070c141007 +070912220f02050e110f0e0b0b0b0a090808060407060103070a060f0e10 +1214161616271e1613130e0d0a00124c424439373b3a3b3c3c3a3b3d3f41 +403f3e3e3e3e3e44403c3a3a3c3d3d383b3d3e3c3a393633323533302f37 +424c060000020f05000b080a080b08070301000000010103020000030304 +0102000c0b0806120f0b0a1718191a1c22292f2d2725292a282a2c232a2f +3036404c4d3b3333404643404349452b355b6f6b4a1125313c53615f5e3f +3d37302c303e48312f2a3e6064585d5068876a767e5a705e51848776a37d +5f6b7680b4ac96a0606c6b6976acf7c94b2a353724183681c135383c3b3e +4a5b6a73685b453f3f2e322d2f3334302f2e30323335343231323331312f +2e2e2d2d2e30323435333131312e2e2d2d2d2d2e2e2b2b2b2b2b2b2b2b28 +29292827282a2d302d29282a2b2a282c2927292d2e2b2729292927282725 +2624272b2b2d2c2f30342e2826272a2c2c2e2927272b2e2e2b2c2a2b2c2c +80818282838282827d7e80828282818184828080828485847f7f7f808284 +8789868788878686888a8b898787888886858a8a8b8d8e8d8a8788888888 +87868584858588878a8b8f8e918d8f8e8e888b8d9190908f8e8c8a898d8d +8d8c8c8c8b8b8d8b8b8d91918e8b8a8d9192908d8b8c92919091908f9298 +8e8e8f90919292928d8c8d8e8f8f8f8f898c8f9191919193929495929395 +95919895979493929293908f908e8b86888d908f8e8f90908e8d908f908c +8c898987858284828585898a898784838788878383807f808283817e827f +7d7d7f807f7e8a88868484858786908e8b87837f7d7b7c7b78746f69645e +3e393631302c2a292a24242015151d1c180f141b1610110c081111120c04 +0c10230f06080f0e0c0e0a0a080807070707080909090d12110c11121313 +14161a1d15131215130b090d174892959b97989995969695949496989a99 +9898989899999b98949191929291909192918e8d8d8e95999d9d97939291 +913b1e283439271d1f1a191414100e09201b1a151613130f120d0b0b0d0d +0a0706000003020709020003050504020304010103070604040407090703 +03030404140803040601020928373347687765360515181418170d0a2022 +221e1b1a1e202b2a242a322a222a2127323b3231463648323b433847444e +504742545e5e684c545b484253a89e58415560554038485b443431404d53 +647b747c89787c908b89878686848382848588898a888583828385858382 +818181818083858482808080817f7d7c7c7e80817b7c7d7e7f7f7f7f7c7c +7c7b7a7b7d807e7b7877787979797b7977797d7f7d7a797979797a7b7c7c +77797a7a7878797b84807a7777787a7a7b7976747476787a797a7a7a7a53 +545555565555555152545656565555565452525456575651515152545659 +5b58595a5958585a5c5d5b59595a5a58575c5c5d5f605f5c595a5a5a5a59 +5857565858585a5a5e5f6161605f615e5b5b606464646362605e5d616161 +6060605f5f605e5e606464615e5d60646563605e5c5c59585958575a6056 +565758595a5a5c5d5f6061626262625c5f626465656566676a6a68686b6a +676e6e6d6d6c6b6b69646362625d5a5c6164636263646462605f5f5d5c59 +595656525150515154555654504d4e5253514f4f4e4d4e50515050555452 +52545453525e5c595757585a5c6b6a67635f5b5957585754504a443f3d24 +231f1a15110d0c0d080c0c04060f0e0a0106100a060703000b0b0e08000a +0c1d06000009080608060606060505050504050505090e0d080c0d0e0e0f +1115180e0e1115150e0704042c6e6b6e686a6a66676766656567696b6a69 +6969696a6a6b68646161626261606162615e5d5d5f686d71716e6b6a6b6d +1b0213242d1f17191713110e0d08061a18141210100d0c12100e0e10100d +0a09010306050a0c0505080a0a0705040300000102000000000305030000 +0000000f04000002000105212e2a3d5f6e5e2f0010130f14130904171919 +1815161a1e292a252b362e263027303844383a4c3f4e3b414c3e504a5756 +50485d64676e555a644e4b59b1a45e455661574038485b43332d3c494f60 +766c6e735c57645a5958595a585554545558595a58555352535555535251 +515151525557565452525253514f4e4e5052534f50515253535353505050 +4f4e4f515454514e4d4e4f4f4f514f4d4f535553504c4c4d4d4e4f525250 +525353525253555d5953505051535354524e4c4c4e505251535353533435 +3636353434342e2f2f313131303034323030323435342f2f2f3032343739 +343536353434363839373535363634333838393b3c3b3835363636363534 +3332313132333437393a3b39393a383435393d3d3d3c3b3937363a3a3a39 +39393838393737393d3d3a3736393d3e3c393736383635363534373d3333 +3435363737383738393a393939393235383a3838383c3d40403e3e41403d +46454544434242413d3c3e3b3933373c3f3e3d3e3f3f3d39342f302e2c2b +292b27262828292b2e2e2a2724262a2b2b282a292a2b2f30302f34323030 +34373637434342404243454651504d494541413f42413e3a37312c2a1515 +110a040000000000020300030e0d0900050e0a050604000b0b0f09010b0d +1f0900020b0a080a070707070606060603040404080d0e09101112121517 +1b1e1515191f21150a0000144e43443a393c3a3d3d3c3b3b3d3f41403f3f +3f3f404043403c39393a3a3938393a3936353533313032302e2e3744530e +00182e392c2325201f1a1a16140f2621201b1c1919151a1515131715140f +10060a0b0c0f130c0b0e10100c0a09090504040604020200020200000000 +00000c010000000000021b29253c607165360516191315120804181a1a18 +15151b1f2a2c272d37312930252b363f36354a3a4c363f473c4b4854544d +465a62646c5258614c4857aea25c465863564038485941312c39464c5d73 +6a6b68473a3f312b2c2f333131302e2f34353634312f2e2f31312f2e2d2d +2d2d2e313332302e2e2e2f2d2b2a2a2c2e2f28292a2b2c2c2c2c29292928 +27282a2d2e2b2827282929292b2927292d2f2d2a2b2b2a28292828282527 +2a2a2d2d2f3036302a2727282c2c2d2b2a28282a2d2e2d2c2c2c2c818182 +83838282817d7f8183848381808583828285878786828281818283858687 +87878686888a8c89898888888787868788898b8b8a878588888888888786 +858b8a8b8a8b8b8c8c8b8788888883868b8f8e8d8a898787858c8a8a8889 +898b8c8988898b8e8d8c88898b908f8e8b8a8c8f8f8f8f8f8f9193929394 +9596979897908f9092939393938e92979998979796909091919192919096 +969697979796968a8c8e8d89888d949493939496959492999a9896949290 +8f878787888a8b8d8f8e8a87888b8c898688868585878888878884858489 +898c898280828084858a8a807e7e7f7f808182838587898886837e827f80 +8183848586807c74562d1c1c19221010181613140c0f130b12120a15121d +130e131007070e08080607070808080808090f181d1a150f121415161a21 +272a231c15100f1927184c96979c999b9c95969795949395979998979695 +9595969996928f8e8e8d8c8c8c8c8a88888a8c9195999893908f8e792e19 +1f1b14090c100d0b0b0c0c0b0a110f0d0d0e0f0e0c0d0a0a090c0c0c0919 +0a10130a0f170b090807060507080a0c10161919181a1c1a191714121213 +131a1413191b171517284043474d5b5f3e16231d0e0c0c090c0405090b08 +08090907060404010000000000000500000900040a00000001060a020406 +0000000006060c0b09000d13091213171e25251f19251f242d281f2b444b +65877e7a8f908c8c8b89878685878787898a898583828286858482818180 +807f818382807e7d7d80807f7e7e7f81827a7c7d7f808080807d7e7e7c7b +7b7e807a7978787a7c7e7f7c7978797c7f7f7e7b7a7a7a7b7c7d7e7a7b7b +7b7a7a7b7c837f7a76757677787b7b79767373787c78797a7a7b54545556 +565555545153555758575554575554545759595854545353545557585959 +5958585a5c5e5b5b5a5a5a595958595a5b5d5d5c59575a5a5a5a5a595857 +5d5e5d5e5d5f5e605d5b5a5c5a57585f636461605d5d5b5b60605e5e5d5f +5f605d5c5b5f60615e5c5b5f6263605f5c5c5a59595959595b5d5c5d5e5f +60616263606263656666666661656a6c6c6b6b6b65666767676867666c6c +6c6d6d6d6c6c5e6062615d5c6168686767686869666568676563615f5d5c +545454555657595a585451525556524f53514f4f5152525358575557595b +5b5b515251515356595b55565557565758595a5c5e605f5d595962636161 +616261625d5d593f190b0d0a1301010a08080902050b030d0d06110e170a +050a0a01010804040405050606060404050b141916110a0d0f1011151c22 +231e1b181412171e0732736d6f6a6d6d66676866656466686a6968676666 +66676966625f5e5e5d5c5c5c5c5a58585a5d63686c6c6a6767685710010e +0f0e070b0e0b09090a0a09080f0d0b0b0c0d0c0c100e0d0d0f100f0d1c0e +13170d131a0f0d0c0b0a090a0b0d0c1015181615171b1a19171412121313 +181413191b1715162037393d445259370f1c160907080508000005070606 +070907060505050101040202020b02020f020a10050403070c10080a0c05 +0303020c0c12110f0213190f16171b222626201a251f222b261e29404358 +715f53635f595b5c5c5b5858555557595a59555352525655545251515050 +5153555452504f4f52525150505153544e50515354545454515252504f4f +5254504f4e4e50525455524f4e4f525555544e4d4e4e4f50535453545454 +545455565c58534f4e4f50515454514e4b4b505450525353543535363735 +3434332e3030323332302f35333232353737363232313132333536353535 +343436383a37373636363535343536373939383533363636363635343339 +37393739383a3939343635363034383e3c3c38383536333b38393638373a +39383537383c3a3a3537383e3c3c38383638353735373539393a393c3b3e +3d403e3c3b3c3e3f3d3d3d383b40423f3e3e403b3e3f3f3f403f3e444444 +4345434444393b3d3c38373c43434242434442423c3d3836343232302f29 +29292a2e2f31322c282526292a29262b2929292b2e2e2e32302f3035373a +393131313335383b3d353335343637383b3c3e42444341403f4b4d4c4a48 +47474a474948311004080710000007050607000309010a0a03100d190d08 +0d0c03030a05050506060707070303040a131817120e111314171b22282a +2523211f191a1900195345453c3c3f3a3d3e3c3b3a3c3e403f3e3d3c3c3c +3d413e3a37363635343434343230303231312f312f2c2f36433e0501141b +1c15191c181716181717151d1a19181a1a1a18191716161819181625171c +20161c2318181716151213141614181b1e1d1c1e201c1b1916141415151b +1615191d1715141d32373c45555d3e16231d0f0b09060700000406070708 +0b09080709080404070200020902000f000a0e050203050c0e08080c0303 +01020a0c10110d0211190f191a1e252a28221c271f232c271c2a3f415266 +4b363e362c303233343431303033353635312f2e2e3231302e2d2d2c2c2d +2f31302e2c2b2b2e2e2d2c2c2d2f3027292a2c2d2d2d2d2a2b2b2928282b +2d2a2928282a2c2e2f2c2928292c2f2f2e2d2c2b292a29292a28292b2b2f +2f3131352f2a262526292a2d2d2d2a27272d302c2b2c2c2d808081818181 +807f7e8082848483817f8382818284868685828282828384858582818081 +8386898a87878887868686868486898a8a8887868888898a8b8b8a8a8686 +878688878786898585868581858a8f8b8b86868385838f8c8c898b8a8e8f +8787898a8d8b8b88898a8e8d8c89898987898a8b8b8c8b898d8d8e8f9192 +93948d8d8f90929393938c909597959392918b8b8c8e8e8e8d8e94959595 +94939291898d8f8c888a9095969695969a9899979e9f9d9b999795948d8f +919496969594918e8c8d91928f8c8f8d8c8c8d8e8d8b7f7d7e8084878988 +8c8a88858583848388868583828282828285888a8a8885817c7b7e808488 +8b8a8586805c29111516170e0d141817130a14140f110e08111722170f11 +0f0c0c0f07070606070808090c09090e13130e090a0d0f1010141a201b1f +211c0f03040e184e989499979a9a96979795939294959897959492919191 +96938f8c8c8b8987868787858485888b8b8f93928d8a8b8877331f1d0e05 +000a06050405080a0a0a0a0808090c0e0e0e06070c0a0b070a080e000708 +00020c0009070605070c0f10080c0f0d0b0b0d10100d0c0d0e0f10110b0c +1017191613142039454a444d583a09141004060d131b12141414120f0e0d +18141517141417191e18141416100b12001006020d0506000a0a0d050f11 +00070a00060b100000000a0905000000000406020205080704041538747f +7a8e94938e8c898787868887848789898785848488878583828181818082 +8484828080807f808283848483827c7d7e80818181827f80807e7c7c7f81 +7c7c7c7b7c7d80817d7b79797b7e80817e7d7b7a7b7c7d7f7e7d7b7b7b7d +7d7e817f7c79767677797b7c7c787372777b7677797a7c53535454545453 +525254565858575553555453545658585754545454555657575453525355 +585b5c59595a595858585856585b5c5c5a59585a5a5b5c5d5d5c5c5a5c5b +5c5c5d5b5c5d5b595c595759606464605f5b5c5a5c64656162606363655c +5d5d6061615f5e5d606263605f5d5d5659595b5a5c5a595c5d5d5f606262 +645f6163646667676861656a6c6a6867666060616363636263696a6a6a69 +6867665c5f615e5b5d6368696968696a6b69676d6c6a6866646261595b5d +60626261605c5957585c5d5a575a585555565655554e4d4d50525757585a +5a5655535352535c5c5b5958585857575a5d5f5f5d5a58555757595c5d60 +615e626141130004070500000206080500090a070c09030c12190e060809 +06060903030404050606070805050a0f0f0a0506090a0b0b0f151b141a20 +1f130602050734756d6c686c6b6768686664636566696866656362626266 +635f5c5c5b5957565757555455585c5c6065646261626457190c11090503 +0e0603020306080808080606070a0c0c0c060a0c0d0b0a0a0b0e03070b00 +050c030b090807090c0f10080c0e0c0a0a0c0f0f0e0d0e0f1011120a0b0f +17181611101b313d423b444f31000d090001090f1710121414120f0e0e19 +1516181515181a221c18181a140f1601140a0611090a010e0e1109131502 +0b0e010a0f140103010d0c08030000000305020003060502000c2b5e6053 +6063605d5d5c5b5a59565554575959575554545857555352515151525456 +565452525251525455565655545051525455555556535454525050535552 +5252515253565753514f4f5154565751504f4e4f50535557565454555757 +585a5855524f4f5052545554504b4a4f534e505253553434353533333231 +2f3131333332302e33323132343636353232323233343535302f2e2f3134 +373835353635343434343234373838363534363637383939383835363836 +393738363a3536363631363a413d3d3838353735413e3e3b3d3c403f3937 +3a3a3e3b3c383a3a3f3d3d393a3835353837393839353b393c3b3f3e4140 +3d3c3e3f4140403e373b3f413d3b3a3b36363739393938393f40403f3f3d +3d3c353b3d3a34363c41424241424442433f423f3d3b3939373631333538 +3b3b3a38322f2d2e3233322f32302e2e2f31302f262525282d3132323534 +3131302f2f2f373435313232323434373b3d3d3b3a3836373838393b3e41 +41484c2e050000020100000002050200050804080500090f1a11090b0b08 +080b0404050506070708070202070e0e0b06070a0e0f0f13191f1b212828 +1e0d0500001b5544423a3b3d3b3e3e3c3a393b3c3f3e3c3b393838383e3b +37343433312f2e2f2f2d2c2d3032303233302d2d3640400c0815100f0c19 +120e0f0e1313151315111312171719171011141413111212160a0f12070c +140c171514131518191a101416141010121514121112131415160f101419 +1d181411182e3b403c47543607141004050a101811131414141110121d19 +1a1d1a1a1d1e251d1b191d15121704150d07140a0d02110f140a1616050c +11020d101702060412110d08050404080a040306090605010d25534c343c +3a33323333343332313030333535333130303433312f2e2d2d2d2e303232 +302e2e2e2d2e303132323130292a2b2d2e2e2e2f2c2d2d2b29292c2e2c2c +2c2b2c2d30312d2b29292b2e3031302f2c292a29292b2c2b2b2b30323333 +332f2c292626292b2d2e302c27262c2f2a292b2c2e7f808080807f7e7e80 +818283838281807f7e7e80838484837f808183858687888281808286898a +8a848687868484858684878a8c8a8888888687888a8b8b8b8a858487878a +898b898b8687858581868a8d8a888483838585888686848686898a848789 +8a8b8a898886888a8a8886868686898b8a8d8e8c8688888a8a8d8d8f908e +8f9193949596968e9195979693929294939599999797999b9b9d9c9a9895 +939193948c8b8e93959898979a9c9c9b999f9e9d9b999896968f91959899 +989692928f8e909495949191918f909292908d9893908f908f8e8c8d8c8a +88878686858b8885827f7e7e7e8082858788868482828382838585868582 +817f64381d2024172b2b1e1c171016190d170f090704132217080607100f +0808080707080809090905060b0e0b07060d0e0e0d0d0e11130e1f354035 +1d0d0b154d968f929194949696969491909193949392908f8e8e8e928f8c +8a89888684838484848384878a868a8d8d888586846a26120e050600030e +0e0c0d0d0d0c0a0a08060607080706070a0c0b070404050e090c0e090c10 +0c0c0c0b0b0b080400090c0b0605070908150f0b0a090402010a09080806 +040505040b213e454d4e2213211b0f0e0e0c0d0e0d0c090a0909090b0206 +0a060b110b1211140815160015221e130e1d10191c1b160f050b120e1a13 +0b140a1e11180f090f15171413141510120d080e14140a0b226785818c91 +938e8b8684858585838386898a8987868689888785838282828486898987 +86868680828487878785848180808081828384828382807e7e8183838382 +7f7c7c7d7f7f7d7b797a7d8082807f7c7a7a7b7c7d7f7d7b7b7c7e7e7e80 +81817e7b7a7a7b7c7d7d79757376787576787a7c52535353535251515455 +5657575655545150505255565655515253555758595a54535254585b5c5c +565859585656575856595c5e5c5a5a5a58595a5c5d5d5d5e5a5c5c5f5f61 +6061605e5c5d5a595b626564605e5b5d5d5f60605e5e5e6061625c5c5e5f +605f5e5d5b5d5f5f5d5b5b5b5b5e5f5f6163605b5c5d5e5f616263646263 +656768696a6a63666a6c6b6867676968686c6c6a6a6c6e6e6e6d6b696664 +6166645f5b5e6365686867696b6b6a686c6b6a68666563625b5d61646564 +6261615e5d5f6364605d5d5c5a5b5b5b595864625f5e5f5e5d5b5c5b5957 +565555565e5d5a57545352525456595b5c5a58565857565655555658555a +5d481e0a0f130418160b090601090c020e080202000e190e0000010a0902 +0404050506060708050102070a070302090a090808090c0e071a34433922 +0d040433736865626665676767656261626465646361605f5f5f625f5c5a +59585654535454545354575a565a5e5e5c5a5c604a0f0105050b0b0d0f0b +090a0a0a0907070503030405040306090b0a060303040d080b0d080b0f0b +0a0a090909060200080b0a0502060807140e0a0b08050102090807060402 +0001000319353c444519091714080809080b0e0e0d0d0b0a0a0a0c03070b +070c120c1110130714150014211d120d1c0f181b1a150e040a110d19120a +13091d10170e0a0f1618151213140e100b0609120f06021551665a5f6060 +5d5c5958585854525356595a59575656595857555352525256585b5b5958 +585852545659595957565554545455565758565756545252555759595855 +525253555553514f505356585352504e4e4f52535856545456585858595a +5a5754535354555655514d4b4e504d4f5153553334343432313030313231 +323231302f2f2e2e30333434332f30313335363738302f2e303437383832 +343534323233343235383a3836363634353638393939393738393b3c3d3d +3d3d3a39393735383e413f3c393738393a3c3b3a393a3b3d3e38393b3c3d +3c3b3a383a3c3c3a383838383b3c3c3e403d38393a3b3c3e3f40413f4042 +4243444343393c3f413e3b3a3a3e3d3f4243404142444444413f3d3a3a3b +3f403835383d3d424041414342423f413e3f3d3b3a383a33353a3d3e3d3d +39393534363a3b393636343233343432303c393635373635333433312e2e +2c2d2c3533302d2a292b2b2d3134363735353132322f2f2d2d2e31343b42 +320d00050b0011110503000003060009020000000a1a110200030c0b0405 +0506060707080604000004090604030a0b0d0c0c0d10120e213c4c44280f +00001a533f3b3435373b3d3d3b3837383a3b3a3937363535353a37343231 +302e2c2b2c2c2c2b2c2f34323434322d2d323e33010006070f0d0f141210 +111111100e0e0c0a0a0b0c0b0a0c0f11100c09090a130e11130e11151315 +15141414110d071011100b090b0d0c1a1410100e0a07070f0d0c0b090504 +02000017363f474a1e111f1b0f0c0d090c0e100f0e0d0c0e0e10070c100c +1117111715190c1a1a05192722181222141e201f1a13090f16121e170f18 +0e22151c140f171b1d1a18181913130e090d151307030f44523b38373332 +32303131312c2a2f32353635333232353433312f2e2e2e32343737353434 +342e303235353533322e2d2d2d2e2f30312f302f2d2b2b2e303333322f2c +2c2d2f2f2d2b292a2d303232312d29292828292d2b2b2b31333433323131 +2e2b2a2c2d2e2f312d29272b2c29282a2c2e80808080807f7e7d82828282 +82828282807f7f82858685848081828485868687858383868a8c8a888284 +86858382838685888b8b8885848480818282828281807c7c7e7e807e7e7d +7a767574736f74797874726d6e6d71716d6b6d6b6d6c6f706e7072737272 +71716f717373716f6f6f75757672767979717c7b7e7d8181848587888a8c +8d8f8f8f8a8d919392919193949194999a97979a9a9b9c9d9c9a98979596 +948d8e9498979a99999c9e9f9d9c9e9b9a99979695958f90919393939291 +928f8e909394928e8f919193969694918c8a8a8e92969898929292929292 +92938e8b8987868788898284878a8c8d8c8b7a7e82888e9497988e827b6a +401e0f0d235a592b1a13214732081711203008111a221e0d050d0d040a0a +0808090909090503050c0e0c0c0f100f0d0d0e0e0d0b0607090e0d090a12 +144e968c8c8b908f939493918e8d8d8f8e8d8d8c8d8d8e8f8e8c89888787 +8482838485848383848684878a8984838281602a1c17131a131211141414 +1413100d1a181615161716151916121110100f0e080d0b090c09060a0506 +080d1112100d070a09070b0f0f0b110b0a0f131010110c0c0c0e11171e21 +1d10122b343f4721101e1c1012120d0b05030303050707070800060a0108 +1007090c10090e130a110c03110b16090a080813181a11090c0d0b151509 +0c0d10112119100c0d111110181d1c141014191a1d195885878a8e918f8b +86858685858384878b8c8b8887878b8a8886858383838386898a89888989 +838384858687878786848280808285868585848280808285858684817d7b +7d7f817f7c7a797c808382807d7a79797a7b7f7b78787a7c7d7c7d808281 +7e7b7b7b7c7d7d7b787675757677797b7c53535353535251505656565656 +56565652515154575857565253545657585859575555585c5e5c5a545658 +5755545558575a5d5d5a5756565253545454545354545656585858565752 +504d4e4b494c5352504c4948494b4d474747474748494a46484a4b4a4a49 +4947494b4b494747474f51504e5055534d565758595b5d5e5f5c5d5f6163 +6565656063686a696868686865656a6b68686b696a6b6d6c6a6866646662 +5d5d636766696868686a6c69696a6a6968666564645e5f5f616161606164 +6361636667625e5d5d5d5f60605e5d5b5a5a5e6266696963636363636363 +6461605e5c5b5c5d5e57585b5e6061605f4d4f52555b6064676157574a27 +0800000f4642170702103825000c08192901091119150400070700060606 +0607070708010001080a08080b0c0b09090909080600020911110e0a0b03 +347365615f6260646564625f5e5e605f5e5e5d5e5e5f605e5c5958575754 +5253545554535354565255595957585b5e42130e121525241e1310101010 +0f0c09161412111213121114110d0c0b0b0a090308060407040105000000 +050b0d0b0804080705060d0d090f09080e100f0d100a0a0a090c13181b18 +0b0c252b363e18061412090c0c080906070708090b0a0a0b01060a010810 +0606070a04080e040c06000b0610040403030e13150c0407080610100407 +080b0e20180f0b0c0f0f0e131817100a101314130a4066605d5a5e5e5c59 +585958545254575b5c5b5857575b5a58565553535355585b5c5b5a5b5b55 +555657585959595a5856545456595a59595856545456595b5c5a57535153 +55575552504f5256595553514e4d4d5051585451515456575656595b5a57 +54545455565553504e4d4d4e50525455343434343231302f333331313131 +3131302f2f3235363534303132343536363733313134383a383630323433 +3130313433363939363332322e2f303030302f2f30323334353433332f2c +2a2a2825292f2e2c28252425272923232323232425262325272827272626 +24262828262424242b2d2c2a2c312f293233343537393a3b3a3a3c3e3d3f +3d3d36393c3e3d3c3a3b3b383b3e413c3e3f3e3f403f3e3c3a3b3c3e3d35 +353b3f3d413f40404241413e423f403f3d3c3b3c36373a3c3c3c3d3d403e +3a3c3f403c38383636383a3a3836333232363a3e3f3f3939393739373938 +37353331303133342d313437393a3b38232324282c31373c3a3437311300 +0000063d3c10000009311d00060111210006121c18070109090007070707 +08080806000000050907070a0d0c0a0a0d0d0c0a0609111a1c140c05001b +533c36303132383b3a38353434363534343334343536363431302f2f2c2a +2b2c2d2c2b2b2c32373a39352e2e343e2a03050e12211e1a121111111110 +0d0a1715131213141312181511100f0f0e0d070c0a080b08050b08090b10 +1514120f0b0d0c0a0c10100c140e0d13171514160f0f0f0d10141a1d1508 +0c252e39431d0e1c1a1010100c0c080a0a0b0c0e0f0f10060e120910180e +0f0e140b12150e131005150d1a0b0e0a0a151a1c130b0e0f0d17170b0e0f +1215261e151111141413171c1b110c111516140534514136323133323031 +32312c2a303337383734333337363432312f2f2f31343738373637373131 +32333435353533312f2d2d2f32333232312f2d2d2f32353634312d2b2d2f +312f2c2a292c303334322e29282626272d2928282f3133312f3032312e2b +2d2d2e2f312f2c2a2a292a292b2d2e81828282817f7e7e83838281818082 +83858585878a8c8b8a878787858584828283808083868784807f81838280 +7f818380838684807c7a7b75757575757372706565666464605f5c5b5655 +54524f535854524e4b4b4c4f514c4d4d4e4e4f4f4f484a4e4e4e4c4d4c4e +4f51504f4c4d4d51504c484b52524d4e4e50515355565958595d5d616063 +6163646a6a6d6b6e707a797a80817d7e8285878b8e919191908e8f8d888c +969996979696989c9c9b9999989899989796969494939393949595959192 +939595928e919295989b9b9a969d9998989a9b9b9b9a99979592908e8c8b +89868381828384828285868686858483838485858586858b7b7c816c5142 +3a27767130171840895b121c1f4c6e261914394a30110c0f090c0b0b0b0b +0b0b0c0c0a0c100f09090f0a08060a0d0e0b0817100c1216141315165098 +8d8c8a8e8e9192918e8b8a8a8c8989898a8c8d8f908c8a88878786848284 +8686858382828181838686838281804d2a2922171f1e1d2225282a2d2c2a +262523232428292b2a332b2221262a2825232e27212921172027231f1e1f +201f1e19191a161b1f1c1418110d11120d0b0c0f11121011141a1a0f0515 +3b3b3d4019141e17080a0a05030b080707070708070c030b0e020712060d +0c0e10050a18070f081f03080f18110e100b16130f1b0e11180a16101606 +0f070c131514121415140f0c0f141614121d0a3d7885898d95928e888889 +8a888586898d8d8b8886868d8b8987858484838082878788868888858383 +828485888989868380808285888686868482818486838383807d7c7f8283 +817d7a797b7f8384817d7a7878787a7f7a7876797c7c7b787c81817e7a79 +797d7d7c7c7a77747279797a7c7c52535353535251515757565555565657 +555555575a5c5b5a5757575757565454555454575a5b5854535658575554 +5658585b5d5b575351524c4c4c4c4c4a494942434342413e3c3a38343232 +2f2d303633312d2a2a2b2e302b2c2c2d2d2e2e2e2527292b29292829292c +2c2d2a29282a2f312d292c33332e2f2f313234363738333436393a3c3c3d +3d4044474748484a534f505657535256595b5f626666666462635f5c5e68 +6b696969696b6c6c6b696c6b6b6a69686666646463626263636565646263 +6565605d5d5e60636666636169686767696a6a6a6968676562605e5d5f5d +5958565758595758595a5a5a595956575555555556565e51555e4e372920 +0b5a5514000028734700090e3e60180c092f402609040603060707070707 +0707030103090704050b08060405080907020e0909121917110e05367566 +615e625f6263625f5c5b5b5d5a5a5a5b5d5e60615c5a5857575654525456 +565553525253525557585556595d31141c1d172529262221222627282422 +1f1f1d20222525262f261d1c212523201e29221c241c121b201b18171a1b +1a1914171514161d1a12160f0c10110c08090d0f0d0b0b0e11140b011135 +353437100b150e02040500020c0b0a0a0a0a09080c030b0e010710040706 +080a0004120109021900020a120c090b06110e0a16090c1305110b11010a +040b101211100f100f0a06090e100e0c1400275c5e5d5c62615f5b5b5c5a +575456595d5d5b5856565d5b5957555454535256595b5a5a5a5c57575556 +56595a5d5d5a57545456595c5a5a5a585655585a57595956535255585957 +53504f5155595855514e4c4c4e5055534e4f5255545451555a5a57535252 +56565555524f4c4a51525355553435353532313030343431303030313231 +313133363837363333333333323030312f2f323536333130333635333234 +3635383d3b373331322c2c2c2e2e2c2b2a242727262522201e1c18161613 +11141a14120e0b0b0c0f110c0d0d0e0e0f0f0f07090e0d0e0b0d0b0e0e11 +0f0f0b0d0e1314100c0f16160f1210121315171819161719191b1c1b1b19 +1c2021232223232c292a30312d2d313234383b3c3c3c3d3d403d373c4447 +424542424446444541434142403f3e3e3e3c3c3b3a3a3b3e3f3f3d3c3d3f +3d3b35363638393c3c3a37413f3e3e40413f3f3e3d39373432302f32302f +2d2b2c2e2f2d2e32333333322f2c2a29272727282a352b34403420150f00 +4f4a0900001e683e00020635570f04052e3f250702070306060606040404 +03000000030401040c0b0907090c0d08041310121c221e1408001f553f36 +313331363736333231313330303031333436373634323131302e2c2e3030 +2f2d2c2c31363b39363131363f1c0714191523252322202225272724211f +1e1d1f22242527302a212025292724222d26202820161f2826201f212220 +1f1a1c1b171c201d151b14111517120f101214130f0f1216160a00103737 +373a13101a13060809040710100f0f0f0f0e0d140b1316090f1b0f111012 +14090e1c0b130c23050c111c1310120d1815111d10131a0c18121808110b +11171918151516150e0a0b1012100e15001c47413833353635323435322f +2c303339373732323039353531312e302f2e313536363536373332313132 +3436383633302d2d2f3235333333312f2e3133323333302d2c2f3233312d +2a292b2f3335322e29272526262b2826262b2e302d282c31312e2a2b2b2f +2f2e2e2e2b28262d2b2c2e2e7e8285847f7c7f837f7f7d7d7e7f83858086 +8c8e8d8c8c8d86868787878685828080828482817e7c7c79787774726f6d +6e6c6a655f5a585758524b494a4a4642404043434441403d3b3d403e3d3b +3e3f3b3a383838393a3b3638393a3a38363637393d3c3c393a393c3c3e3b +3a393c3c37383a3c3c3c3b3b38383a3c3e3f3e3d3b40433f4242433d3e3d +4140434244444446494a49494c4d50515456595a5b5c656566666a6e7275 +8183858585878a8d93959594908f93968c8e8f939393929295939194999d +9e9d949496989a9b9d9e9d9997989b9e9e9d9d98979c9f9c999895918c87 +848482827f838886858687847e7f81838385868785817b7c808385858185 +7c5e42405b7757251b2c5f773e140e3a76641c08170d0d0b0c0f100b090e +16110e160a071706070707080a0a0c0e1012120f1013171b126b94898d90 +89928d8d8f918f8b8b8f8e8b8887878888868c8a89878482838482828383 +8382817f8282868a847b7b7f4b2c1f15191f141727110d16130d131b211b +17141717191718191a1b1b1a19181b1c1d1e1f2020202525242425262728 +28292d2e2e2a26241d281b203132312225292d2a231d2024262011422e3f +301b18221624111a1e1112111b140e191916141a1c17171b1e1b1a171618 +171312141313131414141414141516161513100f0f0e0e0d0d0e0e0f0c0a +0012020d12070711150f111a170b1410136c82828e9094908a898a8d8c8a +86858a91918a898c8586878888868480837d7e848986878a888888827e7d +858b8d8b86817f818589888a8a888582818184868786848281818886837f +7d7f848885817c7b7c7c7a787b7c7f7e7c7b7e807f807f7d7b7a7a7b7e7f +7f7e7d7a787678797a7b7b4d5154534e4e515553535252535758594c5056 +585756585954545557575655555456585a5b5a585655555352514f4b4b50 +514f4a443f3c3b3c362f2d2e2e2a25252628292927252320232524222123 +2522211f1f1f2021221d1f2021211f1d1b1c1e20211f1e1d1e1f2121201d +1e1f211d1e2022222221221e1f2123252625221e232423232624211f2122 +242426252626282b2c2b2b2d2e313235373a3b3c3d4242414345494d515c +5f6161616366696d6e6e6a6665686b5f61636464646361605c5a5d626767 +675b5b5d606263656667656364676a6a69696463686b68656564625c5a59 +595858555c5e5c5b5c5d5a57595b5c5c5b5c5d5b5753545a5f6160585b52 +371b1b35533303000c41592200002c685712000e06060405080702000204 +00000600001104060606060506060504070b0c0f1213100051716163655e +665e5d5f615e5a5a5e5d5a5756565757565c5c5b59565455565454555555 +5453535a5c5f6058515460311a140f141c1115250f08140e0b0e191c1912 +12121514151617181919181716191a1b1c1d1e1e1e222221212223242525 +282a2d2b2925231e2b1c213233302122262a281e18191f24200f402a392a +15121c101f0f1a1d1011101a130d18181512181a1514191b181714131514 +100f1110101012111211111112131312100d0c0c0b0b0a0a0b0b0c0b0900 +11010c0f05050f100a0c151105100802525f575f5f65615d5c5d5d5b5956 +555a61615a595c55565758585654535753525a5d5c5b605c5e5c58525359 +5f615e59545254585c5b5d5d5b58555455585a5b5a585655555c5a575351 +53585c5955504f50504e4c4f525454525154565556555351505051545555 +5453504e4c50515253532d3134332e2d2f3330302f2f30333534272c3234 +333233342f2f303131302f2e2d2e30323433333234353635353331303434 +342f29242423262019181919151314151718181614120f12141311101214 +0e0d0b0b0b0c0d0e090b0c0d0d0b0908090b100e0f0b0d0b0f0e110d0d0b +0f100e0f0f111111100e0d0b0d0f1112110f0c11120e0f11100c0b0c0e0e +1010100e0c0c0f100f0f11121516191b1e1f2021262626252a2c30313f3f +414141414645464345403c3b3d40353736383836373638353334393b3e3b +2e2e30313334343739363435383b3b3a3a3534393c393636393834312f2f +30302d33363431323332303436353533343535312f31363d3f43444b4226 +0a0b284527000001374f170000235f4f0900090000000002000000000000 +0000000011070b0c0c0b09070606080d13151718140c003a533d3b3a3339 +302f3133332f2f33322f2e2d2d2e2e2e383a393734323334323233333332 +313037383838312b3344201012111a23181a2a140e191410141e221e1817 +181a1a1a1b1c1d1e1e1d1c1b1e1f20212223232329292828292a2b2c2c2e +3132322e2a282330212637383627292d312d241e2025272212412b3b2a15 +121c1223121c22151918221b1520201d1d2325201f242623221f1e201d19 +181a171717171817181818191a1a19171413131212111112121313110719 +0912160a0a14160e10191509110600414334353439373433343532302e2d +34393b3233342f2e3130322e2e2c302b2b3236343438353635302b2b3238 +3a37322d2b2d313534363634312e2d2e31333433312f2e2e3533302c2a2c +313736322d2a2b292725282a2a2a2a292a2c2d2e2d2b292828292c2d2d2c +2d2a28262c2d2e2f2f808486847f7d7d818281817f7f7d7e817e85898b8a +888686818486888885827f7c7b7c7a7874716f686763605c585552474546 +413e393a38413b38363b3a3a353132343638383737353738373433353738 +3837363738393a3a393938383838383a3c3e3e3d3b3b3c3b3c3c3b39393a +3c37373839393939393637383a3c3c3a393e4244414244433e4140414041 +3e3e3d3a3c3f3f3f3d3f4042414342434141414544444345464a4a505053 +5355565a5d6f717475787b818585878a8f93979a9d9b9b9c9d9e9e9c9a92 +939497999b9d9ea09d9c9da0a2a1a0a49d9a9b9c9a989a9b96918c888584 +83858a8b878585847f7c7f8285878a8a8b888481818486858386888a8986 +838486886256556b724628284168571c0e120d0e0e0f13120f0f121a1921 +2c16081409050507090d0d0d101313120f0e11161b136891888b8c888e8d +8c8d908e8a8a8e8d8c8b898888898a8a898a868481838384838483848282 +7f8282888c867f7f81562a1e181519172315181c1924140b0d1814100e10 +1313130e0e0f10100f0e0e0f101112131313131515141415161717151619 +1b1b19171510241e1b1c171e1a041b261b12141a1919121b32323f2b0e1d +2e1e1d0b1d261b1b0b1d2213202b1a1e211f19171d21212c29282b2a2626 +282b2b2a292826262523222221202020201e1d1d1c1c1d1d1e151f344006 +031311100f10101012181d110d1564837e9297918c89888b8f8f8e8a888b +92938d8a8c8686868787888988857f7f858987888b898988837f7f858c8b +8c8b86807f848b88898a89868483848485878786838180868684817f8083 +8785817d7c7c7c7b797d7f81807e7c7d7f7e7f81817f7d7b7a7f7f807f7e +7c7978777878797a4d5253524e4c4f5356555554545556554c4f54565553 +54545154585a5c5956555555565754524f4c464543403e3a36362f2f2d2b +2523212127241e1f2123201e191a1c1e20201f1f1d1f201f1c1b1d202121 +201f2021222323222221212121212022242423212122212222211f1f2022 +1f1f2021212122221f2021232525232224282827262a2724252625262524 +22231f2324262424242727282829282826262626242525282a2c30323435 +36383b3e4d4f515252555a5e5b5d6064686c6d6e65636566676765635c5d +5e61636567686c6968696c6e6d6c70696667686664656865605c5b5a5958 +5b60615d5a5a59555457595d5f5f5f605c58535357595855575a5c5d5a59 +5a5d5f3c3030464f23090d2a51420900020000000001010000000000091a +05000b0704050608080907060407080a0b0e1010004e6e605f615b615e5d +5e615f5b5b5f5e5d5b595858595a5c5c5c59565455565656565656555454 +5c5f61625b5558613f1912120e110f1c101519162111080a15110d0b0d10 +10100d0d0e0f0f0e0d0d0e0f10111212121214141313141516161415181a +1a1816161329211e1d181f19031823180d0f131418131b322e3b26091829 +1a1b091d271c18081a1f101d28171b1e1c16141a1e1e2a27262929252527 +2a2a292827252524222121201f1f1f1f1d1c1c1b1b1c1c1d141e333f0502 +100e0e0d0b0b0b0d12170c08074d6156656862605c5d5e605e5d59585b62 +635d5a5c565656575758595b5955555b5f5d5e615f5f5e5955555b605e5f +5e595352575e5b5c5d5c5957565758595b5b5a5755545a5a58555354575b +5955515050504f4d51535655535152545455575755535150555556555452 +4f4e50505051522e3134312e2b2d313332323131313232292d3234333131 +312d3034363734312f2e2e3131302d2c2c2a2a2a2726222120171717140f +0e0d0f16140f0f141513100d0e10121414131311131413100f1112131110 +0f1011121313121211111111111315171716141415141515141212131515 +15141515151414111211131515131215191a18181b191517171717171514 +120c0d0f100f0e0f111212131313121111110e0d0d0e0e1112171618191a +1c1f1f2a292b2c2d2e3335333336393d4143443f3e3e3f3e3e3c3a302f30 +33343638393d3a393a3d3f3e3d413a3738393735393d3c383432302f2e33 +363733302f2e2d3034393a3c3c3c3d39352f2f3032313339404244414042 +4749271b1d333c100000183f310000000000000000000000000000000600 +000c0a0a0d0e0e0c080705070b10111415120c0037503c38363237322f32 +35332f313534333331303031343a3b3b3835333435353535353534333137 +373838312d37482f111216161c1a24171c201d28180f111c181412141717 +17131314151514131314151617181818181a1a19191a1b1c1c1a1b1e2020 +1e1c1b182d2623221d241f091f2a1f14161b1b1d171d342f3a2306152619 +1c0c1f2b21211125281b2633202627271f1f23292935323134312d2d2f30 +302e2d2c2a2a29282727262525252523222221212222231c263b470d0a17 +15131211110f11161b1005003b45323c3c36333333353635323130333a3b +3532342e2e2e2f2f303132322d2d3337353639373736312d2d3339373837 +322c2b30373435363532302f303132343433302e2d3333312e2c2d303436 +322c2b2b2b28262a2c2c2b292727292c2d2f2f2d2b29282d2d2e2d2c2a27 +26292c2c2d2e8386888681807f828282828181807f7e7e818484817e7c7b +74787b7e7d786f6a666665615d5955524c4b4744413f3c3a3e3e403d3c39 +3b3b3a36343338383836363738393a3b3c3c3c3d3d3c3a393a3b3b3b3b3b +3b3c3d3e403f3c3a3a3b3d3e3c3e40403f3e3e3f414141403e3d3f40403f +3e3d3d3d3d3e3e3f404141403f3f3b3f413e3e3f3f3a3f3e3f3e3e3b3b39 +3f404241413f4040403f403e3e3b3a39403f3f3b3d3b3e3d424144414341 +4648484c4f5153575c5f6365686e74797e8381888e949697989995959595 +9696969796959697999997959c9693959797999da29e9b979492918f9195 +96918d8c8d898486898c8f929292908c8888898a8782817c7a7c8284817b +88797b777f857675686a7b765751584e565a677b89939ca39f989a905013 +10060505080a0e0e0e101515120f0d0f161f1869948d8c8c8a8b8c8a8b8d +8b87878c8c8d8e8b8786898b898989858380828284838584848282818183 +8a8c878181814e1a131509070915070b0201110101210f0c09090b0d0e0f +0c0c0d0e0e0d0c0c0c0d0d0e0e0e0d0d0d0d0c0c0d0d0e0f0c0d0e101111 +110f031b1c1b17111d17241a0e0d1b251c0a1607111a3542300814211a2e +1e1715161b181e2624211f181c1c17100e141a1d1c19191c1c19191c2120 +1f1e1d1c1b1b262422212022242523222121212122232015323d101c271d +241c1e27272129392a272f698d7a9191928e8c8a8c8e8e8d8e8a8b919491 +8c8a87868686888b8f8f878383878a8a8a8c8b8c8a868282878b898e918c +837f848a87898a8a88868687838587888885828084858583818183858481 +7e7d7d7d7b7a7f818382807e7d7d7d7f828483807c797d7e7f7e7d7b7978 +78797a7b7b51545654504f51545456555656555453515255555451504f4b +4f545756514b47454544433e3a36342e2d2b2825231f1f23252524211f20 +211e1c18191c1d1c1a1a1b1c1d1e1f2020202121201e1d1e202020202020 +2122232524211f1f2022231f212323222121222424242321202223242524 +23232323242425272828272624202424232124221f2223222321201e1e22 +252526242423252324232321201d1c2423201f1e1f1f2124252626252628 +2a292a2c2e3034393c3f4144484e53565853575d63656668696565656566 +67676865646566686866646b6562646666686c6e6d6a6665636262646869 +6561605e5a5254565a5d5d5d5d5b57535354555250545250555b5e5b5865 +5759565e6758544345565235313a30383c475967707980807d807b400908 +0102040709090a08080909080a0a0c1014054d70635f605b5e5f5d5e605e +5a5a5f5f60615e59585b5f5d5e5d5a5755565758585959585756565b5e60 +615c575a623709090f04020410050900000f00001f0d0a0707090b0c0d0b +0b0c0d0d0c0b0b0b0c0c0d0d0d0c0c0c0c0b0b0c0c0d0e0b0c0d0f101010 +10071f201f18121c1623190c0b162017081508111a313e2b030f1c162c1c +17161718151b23211e1c151919140d0b11171a1a17171a1b18181b201f1e +1d1c1b1a1a252321201f21232422212020202021221f14313c0f1b241a22 +1a1922221c2333251f1e4f6b52646263625f5f5f5f5d5c5d5a5b6164615c +5a57565656585b5f625b57575b5e5e5e605f605e5a56565b5f5c61645f56 +52575d5a5c5d5d5b59595a57595b5c5c5956545859595755555759585552 +5151514f4e53555857555352525355585a5956524f5354555453514f4e51 +52535454303135312f2e2f32323334343433323132363939373433322d31 +353837322b27242423211f1d191814151512100e0d0c100f12100e0e0f12 +100f0c0c1112110e0c0d0e0f1011121212131312100f100f0f0d0d0d0d0e +0f1012110e0c0c0d0f100f11131312111112141414131110121318181514 +1414121313141314141312110d1112100f11100c101010100f0d0c0b1012 +131312111112111111100f0d0b0a0f0e0c0909090a090c0d0e0b0b0b0e0e +0d0e101214161b1c1f1f22242a2f333632373c42444544453f3f3d3d3e3d +3d3e3a393a3b3d3d3b39403a37393b3b3d414644413d3b3938383b3e3f38 +343332302f3337393c3d3d3b393531313233302b2b28262c323734323f32 +34333b453635262a3b381a18221820242e404c545d626160676633000605 +090a0d0e0d0908060b0d10111313120e0037503d36333134353334363430 +313638393a373534373a3a3b3a3734323334353536363534333336343636 +312f3946250108130b090b160a0e050414040424120f0c0c0e1011121111 +121313121111111212131313121212121111121213141112131516161615 +0a2223221c16211b281e11101c261d0d1a0c131c323d28000c19152d1f19 +1a1b1f1c242a2a25251c22201d1414182023252222252320202326252322 +21201f1f2b2927262527292a2827262626262728271c394415212b21271f +1f2826202737291d163e4f2e3b363735363536353431353233393c393432 +2f2e2e2e303337393430303437373739383937332f2f3438353a3d382f2b +303633353636343232333032343535322f2d313232302e2e303235322d2c +2c2c28272c2e2e2d2b2927272b2d3032312e2a272b2c2d2c2b2927262a2b +2c2d2d82838584817f80817f7f8080807f7d7a7b7b7b7974706b69636566 +646059524c4b4a4946433f3a383a3a393838373737393b3c3c3a3a3b3c3e +3b39393b3c3a383f3f3e3d3c3d3d3e3e3e3f3f3f3f40413d3d3d3e3f4041 +4242413f3e3d3d3e3f3e3f41403f3e3f40424343413f3e3f414340403c3d +3b3e3d41404442423f403f424546444345433f4344454546454544454648 +474543444446464747474645454342414040404142444544423f3e3f4144 +44434243414344464647484b4f535559616a7074787d81848586888b8d8f +928f9295989a999795989492949594969a9ea09d9b99989999989d9f9b99 +9998978e8f8f9093949393928d88878989898483807d7773727a817c7a7b +7976797a82897f828983868f8b9694979c9c969493928e96945313110d08 +070709090c0d101715100d0c0f1a2827709a9591918e8d8c8a8a8c898586 +8b8b8e8f8c8684898c8989888682818183838383838382817f7d81888987 +83817e4214171c0f0d0c110c13273e863c060609070606080b0d0e0f0f0f +0f0f0f0f0f0e0e0e0f0e0e0d0c0d0d0c0c0c0d0d0e10100f101011121110 +160e0c0807110104030a110e050b19031b223a392a270e1d2b13170a0d0c +0d091c0a0c2110061912110e09080c131713101014141212151717171819 +191a1a1a19181818191a1b1b1a1a19191a1a1b290f120f0a1f180d19141a +24261f20261c1c275b937e96929794918d8c8c8a89908c8b8f94938e8987 +8787888a8c8f8e8985848588898a8b8b8b8a87848386888a8e918f888484 +8686888a8a8988898a848587898a87838083848686848282838382807f7e +7d7c7b7e80828382807f7e7f80818384837f7c7b7c7d7d7c7b79787b7c7d +7e7f50535554515152545152535555545251535252504e4a474541434444 +4039322e302f2e2b2723201e1f1f1e1d1d1c1c1c1c1e1f1f1d1d1e1f201d +1b1b1d1e1c1a1f201f1e1d1e1e1f1f1f2020202021221e1f1e2020222224 +232320201e1f1f201e1f20201e1e1e20212322211e1e1e20242321201e1f +1f2122242526242322212427272624272421242626272727262526272928 +262425252727282828272626262525242424252628292826232224252523 +23222021232424242526292d3032313741474b4f54585b5c5d6063656767 +6365686b6d6c6a686b6765676867696d6d6c6c6a6867686a676c6e6a6969 +6864585757585b5c5d5d5c57525052545252585a59534f5058605b5b5e5c +5b5d5e626152575e5a5f68646f6d6e716f6a66686f717a7e410607070606 +0607070807080b09090a0b0d141b1152766b62625e5e615f5e605d595a5f +5f6263605a585c615e5e5d5b575656585858585858575658575c5e5e5a58 +5b5f2b030d180d0b0a0f0a11253c843a04040705040406090b0c0e0e0e0e +0e0e0e0e0d0d0d0e0d0d0c0b0c0c0b0b0b0c0c0d0f0f0e0f0f101112111a +1210090810000302080f09000617021c223a3526220918260f16080d0d0e +071a070a1e0e03170f0f0b07050a1014120e0e1213111114161616171818 +1919191817171718191a1a1919181819191a280e110e091e150a1712151f +211a1a201714164270566963686864625f5c59585f5c5b5f64635e595757 +57585a5c5f615c5958595c5d5e5f5f5f5e5b58575a5c5d6164625b575759 +595b5d5d5c5b5c5d58595b5d5e5b575457585a5a58565657575654535251 +504f5254575857555453555657595a5955525152535352514f4e54555657 +582d2f31302d2f303330313435353432333a3c3c3a37332f2d282a2b2b27 +201914151413100f0b07070a0a0b0a0a0b0b0b0a0c0d0d0d0d1011151210 +101314120f100c0d0a0b0a0c0b0d0b0e0c0e0c0f0e090709080b0a0d0c0e +0b0b0809070a0b090a0d0b0b090b0b0e0e0f0c0b090b0d12110f0b0c0a0b +0b0e0e100e0c0b0a090c0f120e0f0f0f090f0e110f120f11101215171614 +12131315151616161514141413100f0f0f10101213100e0b0a090d10100e +0d0c0c0c0d0b0b0a0b0e121416171e252b2f33363a3d3c3d3d404244443c +3c3f424443413f423e3c3e3f3e4044454544413f3e3f403e41433f3b3b3a +39343636373a3b3b3b3a3530313334332d2b2927231f222a332e2f323230 +35363b3e31373e3c404b47524e50514e4742454f536269330005090b0c0c +0c0a0907060d0d101113121415033a544338343032373537393632333a3a +3d403d37353b3e3b3b3a3834333335353535353534333130323433302e37 +4319000b1912100f140f162a41893f09090c0a09090b0e10111414141414 +141414131313141313121112121111111212131515141515161717151d15 +130d0c150508070d140f060c1c0720243a36251f0615230e140b0f11120c +1f0e0f25130a1c1614120c0c0f171b1a19191d1b19191c1c1c1b1c1d1d1e +1e1f1e1d1d1d1e1f20201f1f1e1e1f1f20301619160f241c111c171b2525 +1e1e241b120c2e543240373c3b3b383634302f373433373c3b36312f2f2f +303234373835323132353637383838373431303335363a3d3b3430303232 +34363635343536313234363734302d30313333312f2f3034332f2e2d2c29 +282b2d2d2e2d2b29282d2e2f3132312d2a292a2b2b2a2927262d2e2f3031 +7e7d7e7e7d7c7c7c7b7a7a777573706b6b6664615d58514e4e4c4a47433e +3a383b3b3a38363434333837373738393b3d3a3c3e3d3c3c3d3f3e3d3d3e +3f403f3e4343424141414242444445474a4c4d4d4b4b4d4e505152525252 +535252504e4d51535353515152545151514f4c4b4d4d4e4c4b4847464848 +484a4d4b4a464746474a4b48474846424545454645454443454748474543 +43444647484848484745444243434446474846464644414041424f4d4a47 +4644444342413d3d3d3e424343484c4c4c4d52565a5d626970767b7f8288 +8e95999b9c9c9b98989997929195999c9c9b9897989a9da2a4a19f9f9f9d +9b999596999c9c9b99938a8686858682777d86857f797c7e777872726f6b +6c6d82777379797b7f807b7e859097979997988c8f8d51130c070e0a0806 +05070c0e14110e0c0b0d1b2d3173a09d9593938c8e8b8a8b8885868b898c +8d8a8483878c89878784817f808180808081807f7e7e7e83898a8985827c +47252b2d272f354156484a5ba8641f0207070708090b0e100d0d0d0d0d0d +0d0d0b0b0c0c0c0b0b0a0d0d0c0b0b0b0c0c11100f0e0d0d0e0e050c0f13 +07040d0000030d16191718161b27002f3d352b04062b1206041911000103 +010b0d030c060b0b0c0c0d0e131714111115161314171515161617181919 +11121314141413121515141414141515131a170a181b151d201f21222423 +1e17171c235597889a91989594908d8c8b8a8f8c8a8d92948f888687898b +8c8c8b8989868483858889888a8a8987848384858c8d8d8e8e8b86828587 +8a8b8a8a8b8c868586898a8985818284878886838282818282817f7d7d7d +7d7d7f818283828182817f81838482807c7d7e7f7e7d7c7b7b7c7e7f804d +4f50504f4f4f514e4f4e4e4c4a4746484644413d38343131312f2c282420 +1e25252422201e1b191e1d1d1d1e1f21221b1b1d1c1b1b1c1e1c1b1b1c1d +1e1d1c201f1e1d1d1d1e1e20202123262829292728292b2c2e2e2f2e2f2f +2f2e2d2a292c2e2d2e2b2c2c2f2b2c2b2a262627292a2927262324242624 +282929272424242528292625262420232323242323222122242524222020 +21232425252525242425252626272a2b2c2a2a2a28252425262f2d2a2724 +242423232220202122232423252929292a2f34383b40474e54595c5c6167 +6e7274757574717172706b6a6b696a6a6a676667696a6f716e6c6c6c6864 +615f60636667666761595555575556525b64655f5a5d615a5d5a59565255 +51594a474d505256575252586267656569716d71743b0201000908060403 +050808090607090a0b15201c557a726463605d636160615e5b5c605e6162 +5f59585c615e60605d5a58595a5959595a59585757575c5e5e5a5a5c5d31 +17242c272f353f54464859a6621d000505050607090c0e0c0c0c0c0c0c0c +0c0a0a0b0b0b0a0a090c0c0b0a0a0a0b0b100f0e0d0c0c0d0f0610101408 +050c0000020b14171513141a28002f3931260001260e0502191200000100 +090b010a0409090a0a0b0c1115130f0f1315121316141415151617181810 +11121313131211141413131313141412191609171a131b1e1d1c1d1f1e18 +111112113c745e6b6169696765605c5a595e5c5a5d62645f585657595b5c +5c5b5c5c5a5857595c5d5c5e5e5d5b585758595f606061615e5955585a5d +5e5d5d5e5f5a595a5d5e5d595556585b5c5a575656555656555351515151 +5154565758575658575557595a5856525354555453525154555758592c2d +2e2e2d2e2e312f2f3130302e2b2c353735322e29242121201e1b17130f0d +10100f0d0b0907080d0c0c0c0d101211090a0c0b0a0a0d0f100f0f101314 +13100c070805070508060a080b0b101013110d0c0f0f1212141314131513 +1411100f1214161414121515141214100f0c10111213110d0d0b0c0b0c0d +0f0d0b080808090c0e0a0a0a090408070808080707080e1112110f0d0d0e +10111212121211111313141415151617141414120d0c0d1020201d1a1817 +151411100e0e0c0d0f100e1115151314191b1f22272c33393e3e383a4047 +4b4d4e4e4d4a4a4b49444345434545423f3e3e403f4446413f3f3d3c3d3c +3b3c3f4445444640383535363533252b3436302b2f352e322e302d2a2c2a +392b2a3034363a3b3435374043403e45504e575e2d0000000d0d0b090606 +07080d0c0e10121015180b3b56483933312f39393a3b3835363d3b3e403d +37363c3f3b393936333132333232323332313030303133312e3038401c0a +1e2a29313742594b4d5eab6722050a0a0a0b0c0e11131212121212121212 +101011111110100f121211101010111116151413121213140a1314180c09 +1104040710191c1a19191f2c022f3a30230000230d03051b16040404040c +10040f070e0c0f0d100f161a1b1a1a1e1d1a1b1e1a1a1a1a1b1c1d1d1617 +1819191918171a1a191919191a1a1a211c0f1d2018202322202123221a13 +13100728583841333d3c3e3b37343130363432353a3c37302e2f31333434 +3333353331303235363537373634313031323839393a3a37322e31333637 +36363738333233363736322e2f31343533302f2f323331302e2c2a2a2a2a +2a2c2d2e2c2b302f2d2f3132302e2a2b2c2d2c2b2a292d2e3031327b7b7a +77767675746f6d6b67635f5955504b494544403c383e3c38353434343534 +3434353536363838373737383a3c3e46494b4b4a4a4b4d47494b4d4f5151 +5158595a5b5c5d5e5e616162666a6e6f6f6b6c6e71727474747576787877 +747270797a7a797878797b7a7a7a78757475767271706f6e6d6d6d6a6d70 +706c696a6b636666636162605b5d5d5c5a5856535254565756545353534d +4d4d4c4a484644404041424445464744454544424244464a484544444444 +434441413f3f40404141434341404143464344474a4e5254575960697177 +7b7f8186868a8f908d8e95999ea09e9b999c9ea0a7a9a5a3a3a29fa19c9b +9ca0a29e9a9d948a83807c7976706e6e6e6f6c67606061575d5f575a5356 +534f4f515150525759616a716e6e6f6b60636a421b1d14100d080606080d +10130f0c0c0a09182d336ea0a19596978e928d8d8c8a85888c8b8b8c8986 +84888a898a898683828283828282828281808081898e8c8c89847c4b3231 +2d2f39508166411e011602010106080a0a0a0c0f110e0e0d0c0c0d0e0e0b +0c0d0d0e0d0d0c0f0f0e0d0d0d0d0e10100e0d0c0c0c0c10080000013486 +9dfffae5ddefffebc4f8c931322b3226041c1f0311160e0e2c3e2e466840 +3444010505080d0e0e10150f0c0d10110e0f120f0e0e0e0d0d0d0c0d0f11 +1212100e0d11111010101011110019150f1e0d140e1d1d1c171719181113 +221f52918a948f939394918f8f8f8f8b8c8c8c9094918b88898b8d8d8c8a +8989888582838889878a8a8987868483828c8b8a8d908e87808587898a8a +898a8c888685878a8a8783828588888684828280828382807e7e7e7d7c7c +7e8183838383807e7f838584827e7f80818281807f797a7b7d7e50504f4e +4d4d4c4d4645433f3a36333233312d2b2826211e2322201e1c1d1e1f1e1f +1f20201f1f1e1e1d1c1c1d1f2121232426262525262822242628292b2b2c +3032323434363637393a3a3f424747484445474a4b4d4d4d4e4f5151504d +4b49505151504f4f50525151514f4c4b4c4d4b4a48484746464643464949 +454343443f42423f3d3e3c373939383634322f2d2e3031302e2d2d2d2727 +27262422201f202122232526272926272726242426272926232222242423 +242424242425252624242422212224272425282b2f333537363c454d5357 +5b5d6262666b6c696a6d6c6d6f6e6b696b6d6f73767270706f6c6e6b6a6c +7072706e726c625c595855524e4e4e5051504a46464940464842453a362f +2b2c2e2e2d2f3334394144414042443f454f2b09100a0a0806040406090a +08040509090812201e5078746564655e656361625e5b5c615f60605e5959 +5b5f5f605f5c5958585958585858585756565a5f61605d5e5e5d35262d2e +313b5281643f1c001400000004060808080a0d0f0d0d0c0b0b0c0d0d0a0b +0c0c0d0c0c0b0e0e0d0c0c0c0c0d0f0f0d0c0b0b0b0b110c01000235859c +fef9e3dbedfde6c2f7ca3132272e2100171a0010140e0f2d3c2c44663e32 +42000303060b0c0c0e130e0a0b0e100d0e110e0d0d0d0c0c0c0b0c0e1011 +110f0d0c10100f0f0f0f10100018140e1d0c120c1b1b17121214120b0d17 +0d376c60655f64676766625f5e5e5b5c5c5c6064615b58595b5d5d5c5a59 +5c5c5956575c5d5b5e5e5d5b5a5857565f5e5d6063615a53585a5c5d5d5c +5d5f5c5a595b5e5e5b5756595c5c5a585656545657565452525251505153 +5658585859565455595b5a58545556575857565552535456572e2e2d2e2d +2f2e302a2b292624201c1e2524221e1d19161118151410100f1111100e0e +0f0f0f0f0f0f0c0b0b0c0e100f1011141413131418121416181c1e1e1a17 +1518171a191c1a1f1d2022282a2d2b252428292c2c2e2c2f2e3230312c2c +2a323335323331343435333531302d30312e2d2e2b2a29292724272a2824 +1f22231d20201d1b1c1a151717161412100d10171b1c1b19181818121212 +110f0d0b0c0b0d0e0f111112110e0f0f0c0a0a0c121a1c19181819171615 +14141313121413121212100f0e1013101014161a1e201e161821292f3337 +393e3e42474845464a4b4c4e4a47434345464b4b4745454241434242444a +4c4c4b4f493f3b3a3835302927282a2b292823252720262923261c1d1713 +16181817191b1a1f2527201f2123202b3a1b000a090c0c0b070507080a0c +0a0c10110d12180d36554a3733342e3c3b3c3c3935373e3c3d3d3c38373a +3d393a3936333232333232323232313030313537333133393e1e16242930 +3a51816744210419050404090b0d0d0d0f12141313121111121313101112 +121312121114141312121212131515131211111111150f050406398aa1ff +fee8e0f2ffecc7fccc3332262b1e001417000e1510132f3f2d4767413345 +000604090c0f0d1118161516191815161914131212111111101214161717 +151312161615151515161607201a142312171120201b161618140d0d1301 +224f3a3b31383a3d3c3937353533343434383c3933303133353534323135 +35322f30353634373736343331302f383736393c3a332c31333536363536 +3835333234373734302f32353533312f2f313332312f2d2b2b2a2927292c +2e2d2d312e2c2d313332302c2d2e2f302f2e2d2b2c2d2f306f6d6b676562 +605d5855524f4b4947443e39383639373431373634333334363836363738 +393d3f413e3d3e3f44474c505357595a5a5b5d5f65676a6c6e6e6f70797b +7d7f8080807f828182858a8e8e8d86888b8d9091919193939291908e8d8c +949494939191949699999996939293949292929291908f8f8d919594908e +8f909496969391918f8a8f8e8d8b89868382797a7c7c7a79797a71706f6c +6a6664625454545454545353525352504d4b4c4e4f4b4746464746424242 +4241414140404242424446474746434342413f3e3d3e3d434a4f51535659 +5f60656c6e6f757d7f868a8c8a8b9195989fa19f9e9f9e9a999697999a94 +8a817c766c66625c55505b5447424344413d373b2b302b1d23151b201c18 +1d1f1c1e1d212c3a44464a4d534d4d5132161c0c0d0b0a0c0d0e0f111713 +10110c09172d31689da3989b9f9596908f8e8c888b8f8f8d8c8989888a8a +8b8b8a88848383858484858584838282848a8f8e8c8a847846332c28251d +43aa9850302d210a0c0605080a0b0a0b0d10100f0e0d0d0e0f100d0e0f10 +1111111111100f0f0e0e0e0f0e0f0f0e0e0e0e0e03081115010c2f232027 +3234250d010100282a353033180a112945a6c6a295c69c8b798265555607 +020104090a080b11141111151512121512121212111111110f0f0f0f0e0d +0c0c0e0e0d0d0d0d0e0e0c110408080028010a0b141b1a151a231c35275a +898b92979293959390909091898e8f8e909494908b8b8c8d8d8d8d8d8b8c +8883848b8c888c8c8b8a8987858389898b8e8f8d88848587898a8988898b +8b878485898b8985838588888684838380828484817e7e7f807d7a7b7e81 +8282817e7d80858784807c7d7f818181807f78797b7c7e4a484644423e3c +3b34322f2c2826242322211d1e1e1f1c191f1e1c1b1d1e20221f1f202122 +2325262322212225282b2d2d2f3031313234363c3e4143454546484d5052 +54555555545756575a5f6363625b5e606365676667686967676564626168 +6867676465676a6c6d6c6a66666667656565656463626361656968646263 +666d70706d6b6b69646968676563605d5c52525454525151524948474442 +3e3c3a3030303030302f2f2e302f2d2a28292a2a25212022232221212323 +242425252525252527292a2a2926272525232221201b20272c2e3033363c +3d42494b4c5259565a5e5f5d5d6165686e706e6d6e6e6d70707174757169 +615e5a524e49453e373f352a25262925231d24151a17090f03070c08060b +0d0a0a070a121f2526272b302c2d361b040d010407080a0b0c0e0d0e0a0b +0e0b0811201c4a757665676b63676562625f5c5e6361615e5d5b5c5c5e5f +5f5e5c5857575958585959585756565a60625f5d5f5e5b322728292a2248 +ac984e2e2b1f080a040306080908090b0e0f0e0d0c0c0d0e0f0c0d0e0f10 +101010100f0e0e0d0d0d0e0d0e0e0d0d0d0d0d04091115010c2f23202732 +34250d000000292a352c2f13050c2441a5c4a296c79a8a77816354540600 +0002080807090f130f0f131411111411111111101010100e0e0e0e0d0c0b +0b0d0d0c0c0c0c0d0d0b1003070700260008090f161611141d132a143e65 +5f61676367686863605f60595e5f5e606464605b5b5c5d5d5d5d5d5e5f5b +56575e5f5b5f5f5e5d5c5a58565c5c5e6162605b57585a5c5d5c5b5c5e5f +5b58595d5f5d5957595c5c5a585757545658585552525354514f50535657 +57575453565b5d5a56525355575757565551525455572d2b292826242222 +1c1c1b1815131114161514121513120d1512120f12111515111110111214 +1415120f0f101114181916161a1b1b1c1e22282a2d2f3131322f302e3232 +35333532373437383f41434038383d3d4241434145434441423e3f3e4545 +4644434246474b4a4b474543454644444644434241403e4246433f3b3e40 +464949464444423d4241403e3c39363733383a3a383737382f2e2d2a2824 +22201818181818161515141413110e0a0b10181814131213121010111112 +121012121315151517181817141213100e0d0c080000070c0e1013161c1d +22292b2c3239383d41403c3b3d414246484645464643444144484b47403a +38352f2c2a251e1929211813141617141016080d0c000400000100000103 +00000000030e13111312120d14210b00080005080b0d0c0d0c0c110f1115 +130d1118092e514c383739323d3b3b3b3835373e3d3c3a3a39393a3b3a38 +3735313030323131323231302f2f323638332f34393b1a171d23261e44a9 +9a51312e220b0d0706090b0c0b0c0e131514131212131415121314151616 +161616151414131313141314141313131313080b1317030e312522293436 +270f0202022b2c352b2c100108203ea3c5a298c99b88787f645255040100 +030609050a121b1a1a1e1c19191c17171616151515151414141413121111 +13131212121213131116090d0c042b040b0c131a1712161f142606284538 +3637353a3e3e3a38363731363736383c3c3833333435353535353738342f +30373834383837363533312f3535373a3b39343031333536353435373834 +313236383632303235353331303031333333302d2b2c2d2a2526292c2c2c +2f2c2b2e3335322e2a2b2d2f2f2f2e2d28292b2c2e5b5854504c48434041 +403e3c3b3c3c3b393635373a3c3b383b3a393838393a3a3f3f404144474b +4c4d4d5154595f66696e737677787a7d808183868786858485898c8e8f8f +8d8a898b89898c919494928c8e9194979898989896949190909091949494 +939191949698989795929191939495969796959392959a9e9e9997999a9f +a1a19d9b9b98949c9c9c9b9a999796999b9d9d9b9a9b9c9b9b9998959290 +8c8e8e8d8b8986848381807e79736f6e6e68635d585753504b4848494848 +464544444344464947433d4847484748474848474a4d4d4b49494b484647 +4847464b5350586266686e757b848a8f8f8f93939091909193918572634f +4b45423d352c252324231d181415150f180e16150d181007100b060b0d08 +080c101e2e393e41484949484b2f1c2310080a0e11131413131f19161610 +0b182d2f649aa5989ea69b979492928f8b8d9393908d8c8d8d8d8c8e8e8d +8b888687888889898989888784848a8d8c8a89827447342d2d250530baff +51011b1f100b0104070a0a08090c0f0e0d0b0a0a0b0d0e0b0c0d0f101010 +100d0d0c0b0a0a0a0b0a0a0c0d0e0e0d0d10080a140917301519225ca29e +582f372f4d61292a3e1409223715171514224ea4a1350820191301060304 +0909060911110e0e11110e0e110e0e0f10121314141514110f0e0e0f1010 +100f0e0e0f1010160d091d111e906232364f686858607775916f8e9c9189 +9496989894908c8e8f888f928f909597948e8d8c8c8c8f91938d8e8a8485 +8c8d898e8d8c8c8b89868384898e8f8d898888858789898888888a8d8883 +84898b8a8783868887868483847f828584817e7f80837e7a797c7f80807d +7c7d828788837d787a7b7d7e7e7d7c7a7b7c7e803d3a36322e2924212221 +1e1c1b1c1c1d1d1c1a1d1f22201e20201e1e1d1f1f2023242526272a2c2d +2d2d2e31353b404445474a4b4c4e515455575a5b5a59585a5d5e6061615f +5c5b5d5b5b5e636666655f6164676a6b6b6b6b6967646363636464646463 +6161646668686765626161636465666766656362656a6e6e6a686a6d7478 +787472726f6b7373737271706e6c6e707272706f707170706e6d6a676563 +65656462605d5b5a585755504b4746453e38322f2e2d2a27242627282828 +2726252423272828221e272827282728272825292c2c2a28282a27252627 +26252a312c333a3e3f43484e565c6161636768696c6e6f72706554493734 +312f2c261d13080807040000000000040003020008020008030002040000 +02050f1d2528292d29272a30180814050004090f1112120f16101115100a +12231a467478686c726968656363605c5d6363605d5c5d5d5d5c5e5e5d5b +585657585859595959585757585f605d5b5e5c57332c2b302a0c37bfff4f +00191d0e09000205080806070a0d0d0c0a09090a0c0d0a0b0c0e0f0f0f0f +0c0c0b0a0909090a09090b0c0d0d0c0c0f080a140917301519225ca29e58 +2f37304e6129263a0f041d32111614142350a2a034071f18120005020308 +0805080f100c0c0f100d0d100d0d0e0f111213131413100e0d0d0e0f0f0f +0e0d0d0e0f0f150c081c101d8e6030344a6464545a716d84596f75655861 +66696b69635f5d5e585f625f606567645e5d5c5c5c5f616360615d57585f +605c61605f5f5e5c5956575c6162605c5b5b585a5c5c5b5b5b5d615c5758 +5d5f5e5b575a5c5b5a585758535659585552535457524f4e515455555352 +53585d5e59534e50515354545352535455575923201e1a16140f0d0e0f0f +0d0e0f0f12110f0f101415151115131311121214131513141315181a1918 +18181b1d23292a292a2d2e313336393a3c3f403f3e3d3a3a3a3c3d3d3b38 +373937373a3f42423e36383b3e4142424242403e3b3a3a3a3b3e3e3e3d3b +3b3e404242413f3c3b3b3d40414243403f3d3c3d424646403e4043494c4c +484646433f47474746454442424b4e50504e4d4e4f4e4e4c4b4845434347 +494846423f3d3c383735302824232526251f1b1816130f0c0d0e0f0f0e0d +0e1110101315130f091413141414141411090a0d0d0b09090b0806070807 +060b15121921242323292d34383d3d4044454240404245473c2e24131210 +0f0e07000000040300000000000005000504000b02000601000305000000 +0008151c1b1d1a100b121b08000d0300060d101213100e1915171b180f12 +1a072a4f4e3a3b40383a3b39393632353b3b383736373739383838373532 +3031323233333333323130313536312f3335371a191f27240530bbff5202 +1c20110c0205080b0b090a0d101312100f0f101213101112141515151512 +1211100f0f0f100f0f111213131211140a0c160b1932171b245ea4a05a31 +393250612723370b00192e0e121214254fa39e32051d1610000300010606 +0306101817171a1815151813131314161718181a19161413131415151514 +13131415151b120e221522936533374e6565555c716b7e4b5a563e2d3238 +3d413f3a36353530373a37383d3f3c363534343437393b393a3630313839 +353a3938383735322f30353a3b3935343431333535343434363a35303136 +383734303335343331303130333433302d2c2d302b2524272a2a2a2b2a2b +303536312b2628292b2c2c2b2a2a2b2c2e3049433b37383a3b3b35353535 +35363739363e403d3b3c3e3d414242403f41474c4e5156585a5f676e6e71 +73757c878d8d8c8c8c8c8c8c8c8c8c8c8d8c8b8a89899294969592908f8f +928c8c94989491938f919192989f9e989695929190919394959695939092 +979b9a9b97919196958f95959593919091929a9d9f9d9b9b9ea198999b9b +989695959e9e9d9a969495969b9b9c9d9d9e9f9f9e9d9c9b9a9a9a9a9b97 +979c9f9e9ea19f9f9e9d9d9d9e9e9b96918f8f8d867f79706b6a675d5756 +53535351504c4b494e4b4b4a4c4b4a48464d504e4d505352474b4d4c4947 +484a494646474b5052535a5c5f656563676e6e737a7c776a5a4e4c48423c +352e2722201d191516161614131a130a1c090d0911030a080000040a0c0d +131c2b373f4249484d4a33211c14130609120e111615172011180b161631 +3452a490a398a1a39c979495928d8f9596929193928f8f928e8e8e8d8b8a +8c8d8889898a8b8b8a8986858e928e8c88774a3436360f1b29c6fab10118 +121b0e0a040709090b0f0e0a151412100e0c0b0a0e0f1010100e0c0b0f0e +0e0d0d0e0f0f0e0f1011121313121011051c1b21182c122239fbff1a103c +245f682c332719041e302d2b3b1f1358bda71e1a3a230e0101070d090508 +0e110b0f13141210111313100e0f121413110e0f101111100f0e14121010 +1111100e10091708060766592e384e8c888482624a508189849797949396 +9796918c8c8b8a8b8d8e8e9093968d8c8b8b8c8d8f908e8f8f8b86848689 +898e8e8985868887878a8e8f8d8986858686888a8d8d8a888c888484878b +8c8c8786858585858482858483828180807f7e83847f7d8284817d7e7f80 +828587887d7c7b7c7e7f7e7c797b7c7d7e302a221e1f2021211b1b1b1a1a +1b1c1d191f201e1b1d1e1e212322211f22272d2e313335373d434946494a +4c535e62626060606060606060606061605f5e5d5c626567666361606063 +5d5d65696562646062626369706f696766636261626465646564625f6166 +6a696a66606065645e64646462605f6061696c6f6d6b6b6e726c6f71716e +6c6b6b747473706c6a6b6b7070717272737474737271706f6f6f6f6d6969 +6e7170717472727170707071716d68636262605954514a4446433b35332f +2f2d2d2a2825252827252626272424242c2f2d2c2f3231262a2c2b282627 +28292623232629292a2f31363c3e3f444c4b50575b554a3c3433312d2824 +1e17110804000000010101000902000c0000000c020b090001030a0a090b +121d282e2f2d2a312f1c0d0a060900050e0c1016140e170c170b1712271f +347e6574686f736c676465625d5e6465616062615e5e615c5c5c5b59585a +5b56575758595958595a5961665f61625a392c343c162530cbfaaf001610 +190c0802050707090d0c081413110f0d0b0a090d0e0f0f0f0d0b0a0e0d0d +0c0c0d0e0e0d0e0f10111212110f11051c1b21182c122239fbff1a103d25 +60682c2f231400192b292a3a1f145abba61d1939220d0000060c0804070d +0f0a0d1112110f1012120f0d0e111312100d0e0f10100f0e0d13110f0f10 +100f0d0f081607050664572c364a8884807c5940416b6b5d6a646163676a +6b645f5b5a5a5b5d5e5e6063665d5c5b5b5c5d5f606162625e5957595c5c +61615c58595b5a5a5d6162605c595859595b5d60605d5b605c58585b5f60 +605b5a595959595856595857565554545352575954525759565354555658 +5b5d5e535251525455545252545556571a140e0a0b0f10120c0e0e0f1112 +13120b0d110c0c0b0f0c1211130f1010181b191c1f1f21242b2f2c2f2e30 +354042423d3d3d3d3d3d3d3d3b3b3c3b3a3938353a3b3d3c393736363933 +333b3f3b383a343636373d44433d3b3a3736353638393b3d3c3a37393e42 +41423e38383d3c363c3c3b39373635363e41413f3d3d40443d3f41413e3c +3b3b444443403c3a3b3e454546474748494948474645444444454947454a +4d4c4a4d4b4b4847474747484b474241413f38322e262324211812131517 +1615130e0e0b110d0e0e0f0f0d0a080d100e0d101312070b0d0c0907080c +12110d0b0c0c0d0c0f11161c1f1f262925262f3230241a131412100d0a05 +0000060804020306060708130c0517060c0812070f0d0506080c0d080910 +1a21272117101b1e0e0406050800060f0d0e14120f1a121d131b111e0e1a +5a3a46373e423c373637342f33393a363739383536393739393836353738 +33343435363635353532383933363b3a1f1927320f1d29c5fab20219131c +0f0b05080a0a0c100f0b1a1917151311100f131415151513111014131312 +1213141413141516171818161413071e1d231a2e14243bfdff1c123f2762 +682a2c20100015272626381f1659bca41b1737200b0000040a0602050b10 +12181c1d1917181a18151213161817151314151616151413191715151616 +1513140d1b0c0a0b675a2f394b89857f7c5a3e3a5d533c433932353b4041 +3d3633323233353636383b3e35343333343537383a3b3b3732303235353a +3a353132343333363a3b3935323132323436393936343935313134383939 +343332323232312f36353231302f2d2c2b302f2a282d2e2b2b2c2d2e3033 +35362b2a292a2c2d2c2a292b2c2d2e383531303335353433323232353539 +3b3c4446434245484850525657585c61657376797d80858c938586858488 +909594918f918f918f918f8e8c8e8c8e8c8f8f9092959593919191938f8f +96999693948e919393979d9d999896939191939597969796939293989c9c +9d9a9494989893969899989595989b9c9fa1a09d9da0a19b9b9d9c9a9897 +979d9e9e9c989696979b9b9c9c9d9e9f9f9d9d9b9a9a99999c9d9a999ea1 +a1a2a5a4a3a3a2a2a3a3a4a19e9a9ca0a19c989e97949798938f8e878683 +7e79746f6d62605d5b5a5956524d51524d494949474a4b4c4c4c4c4d4e4f +4c4a4c4f5356565251514e4841424a5155545554514e4a48423d39332d27 +211a1713121112121110150706180616040300070a030200000103080e16 +212c3544444b462d1b18160d0c16170b080b0d1b1e12190c16131e364aa8 +99a49f9e9e9f9a9a97958d9094938d8e8d8d87888b8f90908e8a8888898c +8c8d8e8f8e8e8b878892958c8b867846384041110b088fffa9062b1c1102 +051114130e0c0e0f0d0e0e0f10111212130d0e0f10111111101313121110 +0f0e0e090909090a0a0b0b090b08171c1d2039181e37d8eb480039305151 +26352615053a42302a290a1b61ffff29152306100104070a0a0807090d0e +1012111010121514120f101212100e1313131211100f0e11100e0f10100f +0e15010c131608392b1a232e87925f6c7c615c818e8b9492949293959592 +8e8e8f8b8c8d8d8d9093978f8e8d8d8e8f91928d8e8d8a8686888b8d9190 +8a8687878688898c8e8e8b8886858586898c8c8a888c898585878b8c8c88 +8583848687858383838383828180807c81827e7e8385847f7f7f80828486 +87807e7c7c7e7f7e7d797a7c7d7e23201c1b1c1e1e1d1b1a1a1a1a1d1e1f +1b2123201f2225252c2e323334363b3f4b4e5153565c6367585957565a62 +656461626162616261625f5f5f5f5f5f60605f61646462606060625e5e65 +686562645e616363676d6d696866636161636567636462605e606469686a +6661606564606265666562626568696c6e6d6a6b6d716d7071716e6d6b6c +717372716c6b6a6b6f6f70707172737371716f6e6e6d6d6d6c66656a6d6e +6f727170706f6f7070716e6a696b6f706d69716c696d6e6965675f5d5a55 +504b46443937343231302d2b292e2f2a262626242728292929292a2c2f2d +2a292b2e2f2f292a2a29252224282a2a2b2c2d2c2b2b282622201c18120d +0603000001020302030a00000e000c000100080b04030000010103060b14 +1d232b29322f17080908030610130a070b0c12150d180c170f15232e846f +787070706f6a6767625d5d64605d5b5c5a5654575b5b5b59555353545757 +58595a59595b5b5e67685f60635b3430414718150f94ffa704291a0f0003 +0f12110c0a0c0d0b0d0d0e0f101111120c0d0e0f1010100f121211100f0e +0d0d0808080809090a0a070906171c1d2039181e37d8eb49003a31535126 +31231000353d2c29280a1d63ffff281422050f00030609090706080b0d0e +100f0f0f111413110e0f11110f0d12121211100f0e0d100f0d0e0f0f0e0d +14000b121507372918212a838e5b6674564b6a6e62675f615f64686a6561 +5e5e5b5c5d5d5d6063675f5e5d5d5e5f61626061605d59595b5e6064635d +595a5a595b5c5f61615e5b595858595c5f5f5d5b605d59595b5f60605c59 +57585a5b595757575757565554545055575353585a5955555556585a5c5d +56545252545554535253555657120f0b0a0c0e100f0f0e0e101113151308 +0b0d0a090c0f0f16181c1d1e2126283234373a3d40474a39383634383e41 +3e3b39393939393939353535353535363434363939373535353733333a3d +3a373630333535393f3f3b3a3835333335373938393a3536353c3e403f3e +36383a3c353a3a3b3a3735383b3c3d3f3e3b3a3e403c3d403e3d3a3a3940 +40413e3b38393a3e3e3f3f4041424240403e3d3d3c3c3f433e3d42454344 +474643434242414142434240424647433f47413f43443f3b403c3f3c3732 +2d28261b1916141514110e090e0f0a060606040708090909090a101a1915 +13111312100b0b0b0c09060a0c09080b0c0e0f0f0f11100d0c0a07010205 +050201040508090c1205051907170706040c0f0908040403020003070e16 +1717141e1f0c010407020612120805090a1318131e141b0e0c121662474b +423f3f3e393837332d3036332f30312f2b2c303639393733313132353536 +373837373736383d3e35363d3b1c1d333d100d078effaa072c1d12030612 +15140f0d0f100e1213141516171718121314151616161518181716151413 +130e0e0e0e0f0f100f0a0c09191e1f223b1a2039daed4b023c33524f242e +1e0c003139292526081c62fdfd261220030d00010407070504060c15191b +1a1717191c19171314161614121818181716151413161513141515141319 +0510171a0c3a2c1b222b848d5a667254435a57423e323232383e403e3a36 +363334353535383b3f373635353637393a393a393632323437393d3c3632 +3333323435383a3a37343231313235383836343936323234383939353230 +31333432303434323231302d2d292e2d29292e2f2e2d2d2d2e303234352e +2c2a2a2c2d2c2b292a2c2d2e3231323437383937393838383c3e43464c53 +5655575e63646f72777a7b7f828491929191909093978f8f8d8a8d939694 +9392939293929392908e8e8c8e8f93949092959695939494939192979a97 +94958c92959495999b9a98969391919397999998979594959a9d9c9c9995 +9599989595989b9996969ba09ea0a2a19e9da0a39e9fa09f9d9b9a9b9e9f +a09e9b9998999c9d9d9e9f9fa0a09f9e9d9b9b9a9a9b9e9a989b9f9fa1a5 +a5a4a4a3a3a4a5a5a5a3a0a1a3a29f9b9a97979a9d9b9a999d9c9c9b9997 +959493918e8c8b8a8783747675706b6b6966605d58555453514e504c4949 +4a4b4c4c4e51504d4b4a4e565255545455585b5b57514c47423a342d1b15 +131211131212090b084d918a9643070b0b0f0f0f0d090c101212161d2933 +3e414c462b1b1b1c0f10130f0b0e11140f0c070f04101a273239a69a98a1 +9c9ea5a2a09c979191949a959494948f909395969796928f8d8d86878889 +898989888083909187868271432d323a22271f88ff90012b1e0e040b0102 +050101040b0f0e0e0e0d0d0d0c0c0b0b0a0a0a0a0b0c0a0b0c0c0c0a0908 +1313111111121314110e1014272c486b191438b2fe7710223c42351f382e +1c101b2d315349111a3aceff42072a151d050a06080d0b04050c15161513 +121316191716151516151311111111111213141411100f10111211100b0b +13121b263725141822bbfd4f1072766b828e8f9290969090939392919291 +8e8e8d8c8c8f94979291908f909192938f8f8d8b89898c8f9194948e8a8a +8a878988888b8f8e8b87848485878a8b8a898c898686878a8b8b89858183 +878a878481828384848281807b7f817e7f82858581818181828384858582 +7e7d7d7f7f7f79797b7c7d1c1b1b1d20211f1d1f1e1e1d202327292a2e2f +2e30373c3d46494e515253565864656463626265675f5f5b595c62656362 +63626362636263605f5e5e5e6163646062656665636464636162676a6764 +655c62656465696b6a6866636161636769666564626162676a6969666262 +666562606366646162676c6a6c6e6d6a696c716e7172716f6d6c6d707172 +706d6b6a6b6e707071727273737271706e6e6d6d6c6b6664676b6b6d7171 +70706f6f717272716f6c6d71706d696a67676c6f6d6b6d706f6f6e6b6967 +666563605e5d5c59564e52514c474745423c393431302f2d2b302d292727 +262523272a2d2b2c2e34362421222125292e322d2b2825211c16120a0806 +0506080808010602498d88943f0203060a0b0b090407090908080d172029 +2a3632190a0d11050a0d0b0a0d12130702020e0411191e22218574717873 +737774706e676361656a66636563605f6263646564605d5b5b5455565757 +575757585d66665c5c5f573124303d272e248aff8e00291c0c0209000003 +000002090d0d0d0d0c0c0c0b0b0a0a090909090a0b090a0b0b0b09080712 +121010101112130f0c0e12252a486b19143ab4ff7912263e44351f342b17 +0b16282e5248111c3ccdff410629141c040905070c0a03040a1414131111 +12151816151414151412101010101011121313100f0e0f1011100f0a0a12 +111b26352312161eb7f94b0a6a6b58686e67625d645d616668666462615e +5e5d5c5c5f64676261605f606162635f5f5d5b59595c5f6164645e5a5a5a +575c5b5b5e62615e5a5757585a5d5e5d5c605d5a5a5b5e5f5f5d5955575b +5e5b5855565758585655544f53565354575a5a5757575758595a5b5b5854 +535355555552525455560e0d0d0f121312101211111215181c1911111211 +131a1f202a2d323536383b3b45464542414043433b39363134393c3a3939 +39393737373732312e2d2e3033343234373837353636353334393c393637 +2e32353435393b3a383633313133373b3938393536353c3d3e3c3b353739 +3a3536373a383533383d3b3c3e3d3a373c3e3d3d403d3d393a393e3d403c +3b3738373a39393a3b3b3c3c3b3a3937373636383c3735383c3c3e41413e +3e3d3d3c3d3d3f3d3a3b3e3d3c383936373b3e3c3d404748484747454342 +43413e3c3c3b38352a2e2d282323211e1815100d0c0b090b1718120e0b09 +0603060b0d0f10161d1f0c090b0c0f151b201f1e1c1b18140e0b03020000 +02040606000302488e89974000000206080806010303020000000b12181a +28270f030a0f040a0d0a08090d0f050306140c1517171209664f464c4746 +4642403d373233373c38383938343439404344433f3c3a3a333435363636 +363634383e3c323439361913243420271d85fd8f002a1d0d030a00010400 +00030a10121313121212111110100f0f0f0f10110f101111110f0e0d1818 +161616171818120d0f13262b486b191439b3ff7811253d43331d31261305 +1022294e460f1b3bcbfd3f0427121a020703050a0801020b1c1f1e1c191a +1d201c1b19191a191715161616161718191916151415161716150f0f1716 +1d28382613171fb6f84a0a6867515955443a30332e333c3e3f3d3a393636 +353434373c3f3a39383738393a3b39393735333336393b3e3e3834343431 +353434373b3a37333030313336373635393633333437383836322e303437 +34313233323333312e2d282c2c292a2d2f2f2f2f2f2f3031323333302c2b +2b2d2d2d2727292a2b37383a3c3e3f40404646484b4f545960676d6d6c70 +7c83848b8c8d8e8f8f9193969693908d8b8b8b8c8d8d8a8e939894919191 +919191919192908e8c8d9094969394989796949594929295989a9796938d +93989595979b9a999593909194999c9b9a9a9698989e9e9b989793969697 +9693989a989393999f9ea1a2a19e9da0a2a0a0a19f9d9c9c9d9c9e9f9f9c +9a99999e9e9e9f9fa0a0a0a09f9e9c9b9a9a9b9e99979a9d9ea1a5a4a4a3 +a3a3a4a5a6a4a29f9f9f9d9a97979697999a9a99979595989a9d9ea09fa0 +9e9e9da09f9f9b989a9b9897999895928c858282827f7c7b7672706f6e6d +6a61615c514a474444565c5b5c5b58545154504a443d372e2517100e0d0d +0e0b0a0e101587e0dadd55171d0b0707070b060b0b0b0b0d10181d2f3544 +4227181a1d12110a080e100905150a0d16090917253233a69e8fa09ca1a2 +a19e99938e8d8e8c8887898986878a87898b8b888583828788898a8a8a8a +8883848f918b8c8671462c282614222478f37b01352b1904010a161e1c1a +202a3020201f1e1e1d1c1c1f1e1b1816161616111316191a1a19180f0e0c +0c0d0f1214110b100d27223f5c1d1a0cc3f1c003323e38241a34382c2239 +382c554206192499ef7801211e09010a060a130e0204111212110f0e0e0f +110d0e0f101111100f1716141211111212100e0e0f111212100c12121118 +32464e18161d75dc801b507e7d878b8c919599919092939391939290908e +8c8b8e93989493919090919293918f8d8b8a8a8c8e8f92928e8b8c8b888b +8786898f918d8884838385888a8b8a8c8a888787888a8a8a858182888c89 +867f818384848382817d7f807f7f80838483828281818282838985807d7d +7f808079797a7c7d1d1e1e20222323232929282b2f353a3d424545444851 +58595e5f6060616163626564615e5b59595a5b5c59565b62656360606060 +6060606162605e5c5d6064666365686866656565626365696a6866645d65 +686765696b6c696763626166696c6b6a676665686b6e6868646363666463 +606365635f5f656b6a6d6e6d6a696c70717273716f6e6e6f6e7071716e6c +6b6b71717172727373737372716f6e6d6d6c6c656366696a6d7170717070 +70717273716f6c6c6c6a676465646567686867676566676b6c6f6f706f6e +6d6d6e6f6d6e6e7374717072716e6b655e5b5b5b585658544e4b4845423f +363b38302c2d2c2529292a2b2b2a28272c2925211b150f0c090806050707 +07060b101488e1dcdf541013010000000400020201000000060b1d233231 +180a0f13090b06040d0f0a040b000815090a151e251f897d6c7b777c7977 +746f69646263615d5c5e5e5b5c5f595b5d5d5a575554595a5b5c5c5c5c5b +5d60686761656456342326291927297af37900332917020008141c1a181e +282e1f1f1e1d1d1c1b1b1e1d1a171515151510121518191918170e0d0b0b +0c0e11130c070e0b25203f5c1d1a0ec5f3c20736403a241b3135271d3433 +295441061b2697ee76001f1d0700080508120c01020f11100f0d0d0d0e10 +0c0d0e0f10100f0e16151311101011110f0d0d0e1011110f0b1111101832 +444c16141971d87c1548706b6d69616262655e6165686765636260605e5c +5b5e63686463616060616263615f5d5b5a5a5c5e5f62625e5b5c5b585e5a +595c6264605b575656585b5d5e5d605e5c5b5b5c5e5e5e5955565c605d5a +5355575858575655515355545455585959585857575858595f5b56535355 +5656525253555610111012141515131919191c2023282925222221252f36 +373d3e3f3f4040424244413e3b383434323333312e30373a383737373535 +35353334302e2b2d2f333635373a3a383737373435373b3c3a38362d3438 +3635383b3b393633313135393c3d3c3a38383a3e403b3a37353638373633 +3739373030363c3a3d3e3d38373a3d3d3e3f3d3b3a3a3b3a3c3d3d3a3837 +373a383a393b3a3c3a3c393a36373436363b353336393a3b3f3e3c3b3b3b +3a3b3c3a3835353533322f3031323637373637373a3c3f43454646474645 +4549494847484c4d4a494b4a47443e3734343431323c39342e2925201c13 +1716111014141016181b1c1d1b1b1b24221f1d19130c0700000000000000 +0004080f82dcd7da4f080900000000000000000000000000000f17282911 +070d120a0b0503090b05000a010c1a110f161815076b5a44514d504b4744 +3f39343536343231333330323537393c3b3935343238383a3a3b3a3b3a39 +3c413f393e3f381e121a2213212375f17a00342a18030009151d1b191f29 +3124252423232221212423201d1b1b1b1b16181b1e1f1f1e1d1413111112 +14171810080f0c26213f5c1d1a0dc4f2c106353f3922162c3021172e2d24 +4f3d041a2598ec7700201b0800090309100d000312191b1a181515161812 +131314151514131c1b1917161617171513131416171715101616151a3447 +4f17151870d77b15466d615c503f3833352f333b3e403e3b3a3838363433 +363b403c3b393838393a3b3b39373534343638393c3c3835363532373332 +353b3d3934302f2f3134363736393735343435373737322e2f3539363330 +32323333322f2e2a2c2b2a2a2b2d2e3130302f2f30303137332e2b2b2d2e +2e2727282a2b3f404346494d52555d5d61646c72787b82858380838c9191 +928f8c8c8c8e909294939293949595958d8f8e8c90969997919191919191 +919196938f8d8d909396939397959490918f90929797989595908f949995 +95969b999793928f9293999c9d9a9896989a9d9e98949291949394959799 +9a979293989d9ea0a2a09d9c9fa2a1a1a19f9d9c9c9e9c9d9e9e9b9a9a9b +a0a0a0a1a1a1a2a2a2a19f9e9c9b9b9b9d99979a9d9ea1a5a2a2a2a2a2a3 +a4a5a1a1a0a1a2a2a19f9c9ea09f9f9f9f9d9a999c9a9c9a9b999b989a99 +9e9e9f9c999d9e9ea0a4a5a1a29f9b9da1a5a6a5a3a09e9d9c9d9a979b9e +968984827769686c6d6c686057514d4a46413b362e2716120d0c0b0b0705 +131a187cbcafc34033401e0d100d130c100f0c0d111314101a1f30331e11 +141610140d0a100c07121c0c070a0a050e162029979d89969298a1a3a19b +959291908d8a888a898585888a8c8e8d898583827e7f80818181807e7c7d +8588878d8469332a3530181d235fff991d2104050c0e010d16120b0a0f13 +1617191b1d1f21211e1d1a17161515151214171a1b1b1a191d1c1b1c1e21 +242726232e2d402d36441b004ceffced003f37301a1121332e25292f3463 +4b0c1c1dadffa027231c031506050d160f0308181c1c1c1d1c1b19171516 +181a1b1c1d1e23211c16120e0c0b100e0e0f111212111a1006151e2a4c67 +47061d4abac93a367f97968986939e99959392929391929092918f8d8c8e +93979493918f8f8f909193918f8d8c8b8a8a8b8e8e8c8c8f8d898c888689 +8e918e8a86848384878a8b8a8c8b8a88878788898b868283888b8a888081 +828384838281808081807f7d7f8284838281818181828a86817e7e7f8080 +7a7a7b7b7c20212225282c2f3239393b3e434a50545a5b59565960656564 +615e5c5c5e6060605f5e5f606161615c5e5d5b5f67686660606060606060 +6065635f5d5d60636664676869656462636166686b6969666460686a6966 +6a6c6d6867636363676a6d6e6b6767676b6c6f6765616263646364646667 +645f60656a6c6e706e6b6a6d70717373716f6e6e706e6f70706d6c6c6d72 +73727473747475747471716e6e6d6d6d6664676b6c6f7370707070707172 +7370706e6f70706f6d6a6c6c6b6b6b6b6a6769696a696a6869686766686a +6d6b6b6c7071717377787475726e70747879797a7773716e6d6a676e7270 +6765675d4d44444546423b35302e2d2925211c16140c0c0a090909070515 +1d1b82c1b4ca432d36140507040c0509060403050604020c12232513060a +0c070e09060f0b0811120202090d080e1114177f806876727880817f7973 +706e6d6a6765676662626564666767625f5c5c5759595b5a5b595a5a5b5f +616067624e212132311a1f2560ff971b1f02030a0c000b141009080d1115 +16181a1c1e20201d1c191615141414111316191a1a19181c1b1a1b1d2023 +26211f2a293e2b36441b004ef1fff1014339321a121e302920242a31624a +0c1e1fabfe9e25211a011304030b140d0106161b1a1a1b1b1a1816141517 +191a1b1c1d22201b15110d0b0a0f0d0d0e10111110191006151e2a4a6545 +041946b6c5352e72837b655b626a65626465676765626062615f5d5c5e63 +676463615f5f5f606163615f5d5c5b5a5a5b5e5e5c5c5f5d595f5b595c61 +64615d595756575a5d5e5d605f5e5c5b5b5c5d5f5a56575c5f5e5c545556 +575857565554545655545254575a59585757575758605c57545455565653 +535454550e0f111415191c1e232324272d31373737353330333b4040403d +3a38383a3c3d3b3a3938393a3a3933353430343b3d3d3838383838373735 +3a35312d2f30333636383a3a3735343433373a3c3b3a383532393c3a383b +3e3e3a38353435383c3f423f3c3b3c3f41433c3936363838383937393a37 +3233363b3b3d3f3d38373a3d4041413f3d3c3c3e3c3d3e3e3b3a3a393e3c +3e3d3f3d403e403d3d3a3a3739393c3735383a3b3e403d3d3d3b3b3c3d3e +3838393a3b3b3c3a373b3c3c3c3c3c3b38383a3a3a3a3b3b3d3c3e3f4244 +4443434748484a4e4f4b4c4945474b4f50525a57534e4a47423f454b4b44 +464a44373438393b39322c2929292522201b161002000000000000000a12 +1278baadc23a212a0a00000002000000000000000000030c1d221104090d +080e08050b06020c1001060e140d100d0803636045504c515554524c4643 +4443403f3d3f3e3a3c3f40424643413b3b38363538373937383837383a3a +39423f310b12292b151a205bfd981c2003040b0d000c15110a090e141a1c +1e202224262623221f1c1b1a1a1a17191c1f20201f1e222120212326292b +25202b2a3f2c36441b004df0fff000423831180d192b231a1e242c5d460a +1d1eacffa126241b041407040e151002091b232525262322201e1a1b1c1e +1f2021222826211b1713111015131314161717161e120817202c4b664605 +1845b3c2322b6c7a6a4b38393b3533363b3d403e3a383a39373534363b3f +3c3b3937373738393d3b3937363534343538383636393733383432353a3d +3a3632302f3033363736393837353434353638332f303538373531323132 +33322f2e2d2d2c2b2a28292c3231302f2f2f2f3038342f2c2c2d2e2e2828 +29292a51545b5f63696f737374797d83888d8e91908b86888d908d8e8b89 +888c90939496959394959695918f90908f8f93938e949494949494949497 +94918e8e909495909293928f8d8c8c8c9397979595938f90959795959899 +97939291919395989a9b98959496999b9b97939093949494969b9c9a9896 +989b9e9ea1a2a09c9b9e9fa0a0a09e9c9b9c9e9c9d9d9c9a9a9c9ea2a2a2 +a2a2a2a2a2a3a2a09e9d9c9b9b9c9795999c9c9ea29f9f9f9fa0a1a2a3a5 +a4a4a2a29f9d9c959b9d9c9b9d9e9c9f9f9f9f9f9e9d9ca3a2a0a1a2a3a1 +a09a9d9d9da0a4a39f9d9c9a9b9ea0a1a1a2a0a1a3a7a8a7a6a0a4a09697 +988365565555534f4944413e3d3a3a3735302c23201e1c1c1a18151a1a0f +66a59db438203d1a0b140e160b0f0b0b0c12120f0a131320261a1115130e +160d0a161f3e7673673d0604030c0f122b87a1959e9c9e989b9a9590908f +8d8c888686847f7e8086878784807b79797e7e7f80808080807e808a8c8a +90886a201a2b322e2f23301409011a12110801030f17140c090a0b060607 +08090a0a0b09080808080809090a0b0c0c0c0b090805050506080b0d1013 +0e0f142625344c2c06075c8b2822432f26100a091d1d1b2d2d2d47300924 +37fbf81b081424060102050e140f070c171c1d1e212322201d1c1d1d1d1c +1d1f211c1b19171514131316151415171817150f2013111f3e80753d071f +5bffff1b4384aaa0888792a096989492929392928f9292908e8d8e929594 +93918f8e8e8e8f9391908f8e8c8986898b8c8b8e918f8a8c8987898d8f8f +8d8987848486898b8b8b8c8c8a878687888b88868586898a8a8382828282 +828282828080817f7b7d8184838281818181828985817f7f80807f7c7c7b +7b7b2b2e32363a40454947484c50545a5f626766615c5c616360615e5958 +5a5e6162625f5f60616261605e6161606267666162626262626263636663 +605d5d5f6466646667666361606060676b6b6969676364696b69696c6d6b +6766656567696c6e6c696665676a6c6c68646164656565676a6967656365 +686b6b6f706e6a696c70727272706e6d6e706e6f6f6e6c6c6e7074747474 +74747474757472706f6e6d6d6e68666b6e6e707471717171727374757776 +7674736f6d6c65686a67666869676d6d6d6d6d6c6a69706f6d6e6f706d6c +696c6c6c6f73726e6c6b696a6d6f707275737172747373726d757570767b +684d3f3f3d3d383531302f2e2c2c2c2a26221f1e1c1c1c1c19181d1f146d +aba6bd3d1c371307100b130b0f0b08090b0c07010a09161c10080b0a0810 +0906151e3f73695d380507080d0b081c71887b8182847c807e7a74747371 +706c6a6a6863626468696966625d5b5b606061626262626260626666646d +67500f1128332e31233012070018100f0600010d15120a07080905050607 +0809090a0807070707070808090a0b0b0b0a080704040405070a0c0e0e0a +0b102423344c2c06095e8f2c26473128110b061a181628282a462f0a2639 +f9f619061222040000030c120d050a151b1b1c1f22211f1c1b1c1c1c1b1c +1e201b1a18161413121215141314161716140e2013111f3e7e733b051b57 +fcfe163b759683645b616c62656565676766625f6262605e5d5e62656463 +615f5e5e5e5f6361605f5e5c5956595b5c5b5e615f5a5f5c5a5c60626260 +5c5a5757595c5e5e5f60605e5b5a5b5c5f5c5a595a5d5e5e575656565656 +565656545556545052565a595857575757585f5b57555556565555555454 +54181b2022262a2f312e2d2f3136393e3f413e3934353a3c393a37333235 +393c3d3b393839393a393735373734383a3c373d3f3f3f3d3d3b3b3d3a35 +3232343638353738373432313131383c3c3a3a3834353a3c3a3a3d3e3c38 +373636383a3d3f403d3a393b3e40403c3835383939393b3f3c3a38363839 +3c3c3e3f3d3736393c4040403e3c3b3c3e3c3d3d3c3a3a3c3e4242424242 +4242424342403e3d3c3b3b3d3a383a3d3d3f423f3f3f3d3e3f4041434242 +403f3e3c3c353b3d3d3c3e3f3b3c3a3c3c3c3b3b3a43424243444545443e +4141414448474341403e3f424445484e4c4b494947444340494b4b535b4b +352f323132302c2a28282929292a282520141110101011110f16180e66a7 +a1b837112b090007020c0307030100010000000507151b11090c0b081008 +031019396e675c3c0a0e0c0f080009596a5a5f5f5f5455564f4c4c4b4a49 +454345433e3d3f46454742403939373e3c3f3e403e40403e4042413f4746 +3500021f2e2c2e212e1308001911100700020e16130b08090c0a0b0c0d0e +0f0f100e0d0d0d0d0d0e0e0f10111111100e0d0a0a0a0b0d101213120b0c +112524344c2c06085d8e2b254630250c0601151210222225412b052338fc +f91c091525070203060f1510080d1a2326272a2a29272421222121202123 +2521201e1c1a1918181b1a191a1c1d1c191322151321407f743c061a56f9 +fb1338708b714a38363c3036373b3d403f3a373a3a383635363a3d3c3b39 +37363636373d3b3a393836333033353635383b393438353335393b3b3935 +33303032353737383939373433343538353332333637373433313131312f +2f2f2d2b2c2a26272b3231302f2f2f2f3037332f2d2d2e2e2d2a2a292929 +6b70777c7f82878a83858a8e91939693918d8984888d8f8b8d8a8a8c9195 +979797949291908f8b878a8e8e8d8f918d8893949494949494949492908f +909296978f909292908e8d8e899297959393918c91949492949897939090 +9192949698999a9692919497999997918f939594949a9c999494969a9c9d +9d9fa09e9a999c9fa0a09f9d9b9a9c9e9d9d9c9a989a9da0a1a1a1a1a1a1 +a1a1a2a19f9d9c9a9a989792919699999a9c9b9a9a9b9c9d9e9fa4a3a29f +9b979695989fa29f9d9fa19f9b9c9d9ea0a0a0a0a2a09e9e9e9e9c9aa6a8 +a7a5a7aba9a3a8a8a8a5a29f9f9fa1a1a2a6a9abaaa8a8aba395918b6533 +18141818191715121818171817161313222121212322211d221c0e589e9d +a5302a532f232d262f252927262528282a2a1a12151a1513181211120710 +2934579ec5efbb380f040b081b366685838286838e9395908d90908d8884 +8284837f7f8384858684817f8081797a7b7c7c7c7c7c7984918d86898369 +1e141d191a24282a2529121c15110101010a110e090a0c0d100f0e0d0b0a +09080a0a0b0c0d0d0d0d10100f0e0d0c0b0b080809090a0b0b0d100f030f +182b466e5b001d2113341054301a040c030b0d1826273855532b0c030e41 +012422100a060205090d0f0e0e0e0807080d121616151514120d0806080b +0c0e10121415161715131213141413110220170f1431b6b12b1d0f1cbaff +296685a998878c929c959895919193939390929292908e8f91939594918f +8e8e8e8e908f8f91928f8a858b8d8e8d90938f898c8b8a8a8a8c8e8f8d89 +868486898a8b8b8c8d8b878586888b8b8a878585898d8684828080808182 +817e7f817f7b7d828483828181818282868481808181807e7e7d7c7b7a3d +42494e4f5355595053555a5d5f60626666625d5e636460605d5a5c606466 +6663605e5d5f5e5a575d6163626466635c626161616262626262605f5e5f +61656863666868666463645f686d6b6969676266696967696d6c68656566 +67696b6d6e6d696564676a6c6c6a6462666867676b6b686363666a6c6d6d +6f706e6a696c6f7272716f6d6c6e706f6f6e6c6a6c6f7272727272727272 +727372706e6d6b6b6c6c69686d7071727473727273747576777a7978756f +6b6766696e716b696b6b6a696a6b6c6e6e6e6e6f6d6b6b6b6b6967717473 +717377756f747474716e6b6b6b6e6c6c6e6f71716f7379746b6e6a481e11 +151619191917151e1e1e1f21201c19232020222324232126211360a5a6ae +382c543025322c382e32302f2e2c2d2c2b160c0f140f0d0f0c0b0c030c28 +33589bbce5b73714090c071229526d6a6a6f6c787d7f7a777a7a76716d6b +6d6c68686c6c6d6e6c6967686961626364646464645f676f6a6065624f0d +0a181a1a2427292327101a130f000000080f0c07080a0b0f0e0d0c0a0908 +0709090a0b0c0c0c0c0f0f0e0d0c0b0a0a07070808090a0a0b0b09000b16 +29446e5b011f2317381658321c050d0008081422223554522c0e050c3f00 +22200e08040003070b0d0c0c0b0705060b111515141413110c0705070a0b +0d0f111314151614121112131312100120170f1431b4af2a1c0b18b6fe24 +5e76957b64605f68616565646667676360626262605e5f61636564615f5e +5e5e5e605f5f61625f5a555b5d5e5d60635f595f5e5d5d5d5f6162605c59 +57595c5d5e5f60615f5b595a5c5f5f5e5b59595d615a5856545454555655 +525456545052575a595857575758585c5a5756575756545757565554262b +323638393a3b3132333538383a393c3b373234393a3637343234383c3e3e +3c3937363736322f343839373a3b39354142424241413f3f3d3b37363739 +3c3c36363838363433342f383d3b39393732393c3c3a3c403f3b3838393a +3c3e4041433f3b3a3d404242403a383c3e3d3d3f403d3838383c3e3d3d3f +3f3d39383b3e40403f3d3b3a3c3e3d3d3c3a383a3d404444444444444444 +454442403f3d3d3d3f3b3a3f42404143423f3f404141424448494845403e +3b3c3f46494644464742383538393b3b3d3d403e3e3e40403e3c45454442 +44484640454545423f3c3c3c4340403f3f3f3c3a3f484641484728030007 +090b0d0c0c0a14141617191817151e1c1c1d2121222229241763ababb33a +274e2b202e2a372d312f2e2b2b292926150c0f14110f120e0d0c0209232e +5094b7e3b83c1a0f100309183a514b484d4a53565a53525555544f4b494d +4c48484c4a494c48474346453f3e4140424042423e474c443b4143340000 +1215182225272428111b141000000009100d08090b0e14141312100f0e0d +0f0f10111212121215151413121110100d0d0e0e0f1010100f0b000c172a +456e5b001e22163714572f1900080003020b191c304f4e270b040f440427 +25130d0905080c10121111120f101116191d1d1c1a1916110c0a0c0f1113 +1517191a1b1c1a18171819191815062219111431b5b0281a0a17b3fb215b +6f8a69483b34382f36373a3c40403b383a3a3a383637393b3d3c39373636 +36363a39393b3c39342f353738373a3d39333837363636383a3b39353230 +3235363738393a3834323335383837343232363a3735312f2f2f2e2f2e2b +2a2c2a26272c3231302f2f2f303034322f2e2f2f2e2c2c2a2928277a8088 +8c8c8a8a8a898b9092949493918d8b89878d9496938a898a8d9395949291 +8f90909495928f8a8d90919496918c919292929292929291909090929598 +999192969595939494899299959393918b93939291959897908f90939497 +9799999c989493969a9b9a9b9593989a98999d9a948f90969b9d9c9d9fa0 +9e9a999c9f9fa09f9d9a9a9c9e9e9d9b9897999ea2a0a0a0a0a0a0a0a0a1 +a09e9c9b9a9998959191969998989a9a9a9a9b9c9d9ea09b9c9e9e9c9a9c +9c9ba2a39f9a9c9d9a9d9e9e9e9d9c9b9aa3a19f9fa09f9e9ca5a6a5a3a6 +aaa7a1a0a3a5a39e9b9c9e9e9d9d9fa0a19f9d9da19a90938d61261c1e2b +3539362f27100b0707080807090a0c0c0f12121110141a154f8d95ac5722 +4c1f090d020d0304060502000003091607050b0b101411130d0621402f29 +5379f7f65b1f0d110d0f1d1c2e291e251c1e23252322262724302e2f3335 +34363d3b3d3e3f404245484948494a4b4b4a4a4655645e4e504f3a0d172a +170726689899762504020a030d030a0e09050608090c0b0c0d0d0e0f0f0a +0a0c0c0b0a080708080707070809090b0b0c0c0b0a09090c140a180f1a25 +4c7442303e40426d3f361300130003061d2a161e416862301b252720051b +0d1001040504060e140e040e0c0d121a21252627251f160d090a0d0b0c0d +0d0d0b090809070606070705030e0100160800b1fb9922061a3ea0326c7f +9c8684918f99969996929196979895929293918f8f9092979592908f8e8e +8f8c8d8e9294928b868e90908f91938f888e8d8c8a898a8e908f8b878586 +888a8b8c8d8e8b878485878b8d8c888383888e8886827f7e7f81837f7c7d +81807c7e858483828181828283848281818181807e807e7c7b7a484e565a +5b57575854575a5d5f5f5e5e60615f5d62696b665d5c5a5d62646361605e +5c5f6364625f5d626566696b6760605f5f5f606060605f5e5e5e6063676a +65676a6a696868695d676d6a6768656067686666696d6b65636567696b6c +6d6d6f6b6766696d6e6d6c6664696b696a6e69635e5f656b6c6c6d6f706e +6a696c6f7172716f6c6c6e70706f6d6a696b707471717171717171717271 +6f6d6a6968696a68686d71707072727272737475767671717272706d6d6d +6a71716b666867656a6c6c6c6b6a6968706e6c6c6d6c6b697172716f7276 +736d6c6f716f6a67686a6967676668676563656c6a656d6c44141920282e +302f2c2a1a1b1c1e1d1b17130e0d0d1013161514171f1a56949eb55e2650 +25131b121f17181a19161213171c22100b0d090b0e080a07021d3f2e2850 +71eded561c0c0f09071510221d121912141c1e19181c1d1a262223272928 +292e2b2d2e2f30323538393a3b3c3d3d3c3c3643504634363728000d2513 +03226494977625040008010b01080c0703040607090a0b0c0c0d0e0e0909 +0b0b0a09070607070606060708080a0a0b0b0a090807071006160d18234c +7444304042447141361300130102031a2511193d6762321b23251e03190b +0e00020302040c120c010d0b0c111920242526241e150c08090c0a0b0c0c +0c0a080708060505060604020f0200170a00b1f9972102163a9a2c64758c +6d61655b63606463636466676461616263615f5f6062676562605f5e5e5f +5c5d5e6264625b565e60605f61635f585e605f5d5c5d6163625e5a58595b +5d5e5f61625f5b58595b5f61605c57575c625c5a56535253555753505256 +5551535a58595857575858595a5857575757565459585555532f333b3f3d +3a3837323234353735343337373533383f413d343332353a3c3b39383635 +373b3c3a3734383b3c3f413d393f4040403f3f3d3d3c3939393b3e3f4038 +3a3d3d3c3b3b3c303a403d3a3b38333a3b39393c403e3836383a3c3e3f40 +4045413d3c3f434443423c3a3f413f4044403835343a3d413e3f3f403e3a +383c3e3f403f3d3a3a3c3e3e3d3b3837393e434343434343434343464543 +413f3e3d3d3d3a3a3f403f3f413f3f3f4041414344414445454343434342 +494c464143433d3b39393938373837413f3d3f403f3e3a41403f3f424643 +3d3c3f41403b38393b3d3b3b3939373331323a3c3a484b26000a151f262b +29252311111314161714120f0f0f12151718171c23205e9ca7be64274f23 +121b111f16191b1815101115181e0b070c0c0f120d0f0b031c3d2a244b6e +ecf05c2314140a040a000c0500000000000200000102000b0a0b11131216 +191213141517191c1f20202121222221211f2b372c191d1f140004211204 +236595987625040109020c02090d080405070a10101112121314140f0f11 +11100f0d0c0d0d0c0c0c0d0e0e10101111100f0e0c0b1107170e19244c74 +43303f414370403613001100000015210d163a6560311b262821061c0e11 +0407080709111711081513141921262c2b2c2a231a110d0e111011121212 +100e0d0e0c0b0b0c0c0a07130402190900b1fa981f0315399a2c616b7c57 +45423437323836393a3e3f3c39393a3b393737383a3f3d3a383736363736 +37383c3e3c3530383a3a393b3d39323839383635363a3c3b373331323436 +37383a3b3834313234383a39353030353b3735312e2d2e2e302c29282c2b +2729303131302f2f30303132302f2f2f2f2e2c2e2b2a282884858788898b +8a89878d91909092928f8f807e8c938c8b958f8d8d8f9394928f8f909190 +8f8f8e8d908f90939494918f908f8f8e8e8e8f8f938e8c91969696989797 +9b989791918e949295939490908d96969a999c989895928c90959995999e +9b9492999f9c999a93979b9d9b9898979f9793989ea09e9f9ea1a2a09e9d +9fa1a1a09f9c9a999b9ca09f9c9b9a9b9d9f9f9fa0a1a2a2a3a3a39f9a9a +9d9e9d9a9495989b9d9fa0a0a1a1a1a1a1a2a4a4a3a0a2a29f99999da0a1 +a1a3a2a1a09f9f9e9d9c9c9c9c9ca09d9ea2a29f9c9da1a2a4a6a8a8a9a9 +a6a7a6a39c9692908a8f9394929292948e97918a83894d2e2e38454a4641 +4849191a0900080d06120b1306101a110d081a281d463f40834f1f381e07 +03000001010304050706030202040000071112080906083c2e1c5055343b +3c56360a180b0a0b0f180f0b150e0b0c0c0c0a090b0c11100f1112111013 +1818171716140f0d16110c131c130d190d09592f11060712091712060c17 +191a1a0a100e0004140905080b0b0e12120b0f0f0f0e0e0e0d0d08090b0c +0c0b09080909080808070707090808090a0b090708080c0a0a1e31305f5c +aed6979b6a26132312161406141722061e2c395c3c79ae862f2317130809 +05070c12110b08080b0b0c0e12181c1f19191716141211110d0f11141617 +17171514120f0e0c0c0b0900110c0a0249fffbc713375970588b709b7287 +93969b9c989590a0a19ba59796959492909093959a9a9996929090919292 +91908e8b89878f8d8d909394928d8f8e8d8a898b90948e908e8a8c929188 +8e8d8c8a888684838d8f8f8b8683878b898885827f7f808182807d7e8182 +817e85868583807e7f8183858683807e7f807d7f807f7d5657595a5b5a5a +59575d6160606363606253515f665f5e655f5d5d5f6364625f5f61606160 +605f5e6162636667676462605f5f5e5e5e5f5f635e5c6166666668686a6c +6b686462616565666665636160676a6b6d6d6c6969636061696a696a6f6c +65636a706d6a6b62666a6c6a6765636b635f646a6d6d6e6d7173716f6f70 +737372716e6c6b6d6e72716e6d6c6d6f717171727374747373736f6a6a6a +6b6a6766676a6d6f717272737373737374767673706f6f6c66666a6d6e6e +6e6d6c6b6a6c6c6b6a6a6a6a6a6e6b6c6f6f6c696b6f7072747676777773 +74737069635f5d565b6162605e5e5f5862605e5f6a351d1f252620171323 +351a2b241223210f17131b0e16201511091b2c204b46478c56223c281719 +151d20202224282c2f31302b261a0e0b0f0800000001372c1a4e512f3330 +4926000b00040b141f19151f1816171716141313141713121213100e0f11 +0f0e0e0f0d0a08110e09101a110e1b120e5c2e0e000009000d0900030c0e +141a0b110f00041409050809090c100d090c0c0c0b0b0b0a0a0506080909 +0806050606050505040404060505060708060407080c0a0a1e31305f5cac +d6979b68240e211217180a16151c001323335a3c79ac822b1f130f040400 +02070d0c0603050a0a0b0d11171b1e18181615131110100c0e1013151616 +161413110e0d0b0b0c0d0615100e0349fff9c50e3153674f866d95616866 +61606061605f6f6c656a5c626463615f5f626469696865615f5f60616160 +5f5d5a58565e5c5c5f6263615d5f5e5d5a595b60645e605e5a5c62615b61 +605f5d5b5957566062625e59565a5e5c5b58555252535455535051545554 +52595a59575452535557595a575452535656585958563536383839393635 +3137393838393936392c2a383f38373f393737393d3e3c37373737373636 +35343738393c3d3d3a393a393938383839393d3634393e3e3e403e404241 +3e3a38373b3b3c3c3b3937363b3d3f40413f3d3c3733353c3e3c3e434039 +373e44413e3f373b3f413f3c3a3b433b383c4242444342434543413e4242 +4241403d3b3a3c3d41403d3c3b3c3e403f3f40414343434345413c3c3d3e +3d3a3535383b3d3f40404141414141404444454242423f3b3b3f42434344 +4342413e3d3b3a39393939393d3a3b40403d3a3a3c3b3d41434346464445 +44433c3632322e343c3d3b3736352a3635373d4e1d0d1a272c2a211d2a37 +15231b0a1e20141d161d10162016120b1f2f254f4c4f955e273f29161712 +181b1b1d1f222527272319150d060a1211060905093d311d51522c313450 +30051508080b1018100a140d0e0f0f0d0b0808090d0a0b0d0e0e0f0c0b06 +0707090706040b0702070e0500100b08552907000004000c0a0006121418 +1c0d13110206160b070a0c0c0f13110c13151514141413130e0f11121211 +0f0e0f0f0e0e0e0d0d0d0f0e0e0f10110f0b0c0a0e0c0c203332615eafd8 +999d6b2712241419190b15161e001928375d3e7bad812a1e141005080406 +0d13130d0a0c10101113171c21231d1d1b1a18161515121416191b1c1c1c +1a19171413111110100616110f054bfffcc61233556a52825a7b454c4941 +3e3c3a363444403940343a3b3a383636393b40403f3c3836363739393837 +3532302e363434373a3b3935373635323133383c36383632343a39323837 +363432302e2d37393935302d31373534312e2b2b2c2d2e2c292a2d2e2d2b +323332302d2b2c2e303233302d2b2c2e2d2d302d2d868788898989888785 +8a8e8d8d8f8e8b8f86848e94918f928e8d8d90939492908f8f8f90908f8f +8f929394969694918e9090909192929393918c8c92959594969596989794 +919191969696959493929298999b9b9a9794939592949a9c9a9ba09d9796 +9ca19f9d9d92959b9c9b9999999f9894989e9f9d9f9ea0a09f9d9c9ea0a1 +a19f9d9b9b9c9da09e9c9b9b9c9e9f9fa0a1a2a2a2a3a3a29e9c9b9d9e9d +999796999c9ea0a2a2a3a2a2a2a2a3a4a5a3a0a0a09d97979ba1a09e9d9d +9d9e9fa0a09f9e9e9e9f9fa09d9ea2a29f9d9fa1a2a3a4a5a6a6a5a0a1a1 +9e98928e8c8d8e9191919092938e978f8a8485492d24425d5c616e634822 +0d07030f0a1b0e011004030c0d120a202920a8bcbfaf5b2f401f06040000 +0014171b1b160f090710100a03050c0e09140e04223758937b203e3b3d40 +20151a100d1218110d100608090a0a080808090506090d0f111214121414 +15141311100f1c15090e17130a08024d2a0b0800091f30061529101f0e00 +26331e180e0816050a0d0b0c0f110e0f0e0e0e0d0d0d0c09090b0b0b0b09 +090a0a0909080808080a09080a0b0b09070c0102090d100c002326365256 +642d031a2e262b2a181e181016250f0620171411231f0c0503070a050509 +0e0d08060608070606070a0c0e0909090909090808090a0d0f1112121212 +100f0d0b0a090807000e090d0d2da9ffffd17e4387418e89b98a828899a2 +9697948f9c9f9ca798979594939190929498999896939191929393939290 +8e8c8b8f8f9093959593919392918e8d8f949891928e8a8c91908b8b8b8a +8a898988888c8e908d8885878a8d8883818383827f83817e7f8183828084 +858584818081838385878683808181828182817f58595a5b5b5b5b5a585d +61606062615e5f56545e64615f625e5d5d60636462605f60606161606060 +636465676765625f6060606162626363615c5c6265656466656668676461 +61616666666564636263696a6c6c6b6865646663656b6d6b6c716e68676d +72706c6c6164686968666464696260646a6b6c6e6d6f71706e6d6f717373 +716f6d6d6e6f72706e6d6d6e70717172737474747373726e69686a6b6866 +65676a6d6f71737374737373737475756f6b6b6b686262666c6b69686868 +696b6d6e6d6c6c6c6d6d6e6b6c70706d6b6d72737475767776757071716e +67615d5b595c60636362605f59625e5e5f69341b0e212d1f19292d25191c +2524291c1f0e081b0e0b1111140c212a24acc1c6b6622f43291821212726 +3d4044464545434247402f1a0e0a04000602001f34568e79213f32312f0f +050e0d121d28242023191c1d1c1c1b181818111213141615161710101010 +1211100f101d190d121c191516145b35130c00071927000a1e051407002a +341f190f0816050a0b090a0d0c090c0b0b0b0a0a0a090606080808080606 +070706060505050507060507080806060b0202090d100c00212434505462 +28001329252f2f2022170b0c1a04001b1615101f1b080100030600000409 +080301030706050506090b0d080808080808070708090c0e10111111110f +0e0c0a0908090c05140d110e2da9fefecc783d8138898ab77e6a626b6f61 +63635e6b6a63695d62646362605f61636768676562606061626262615f5d +5b5a5e5e5f62646462606362615e5d5f646861625e5a5c61605b5e5e5d5d +5c5c5b5b5f6163605b585a5d605b56545656555256545152545655535859 +59585554555757595b5a57545557585a5b5a583637363737373433313638 +373739373439302e383e3b393c3837373a3d3e3c38373636373736363639 +3a3b3d3d3b3835383838393a3a3b3b3934343a3d3d3c3e3d3e403f3c3939 +393e3e3e3d3c3b3a393f3e40403f3c39383a37393f413f4045423c3b4146 +44414136393d3e3d3b3a3a433c393d4243434542444544403f4143424240 +3e3c3c3d3e413f3d3c3c3d3f3f3f3e3f4042424343423e3c3b3d3e3c3734 +3336393b3d3f3f403f3f3f3f404144403f3f3f3c36363a403f3d3c3c3c3d +3c3e3d3c3b3b3b3c3c3d3a3b3f3f3c3a3a3c3b3e3f42434544404143403c +36323232373f4142403d382f3835394251210f102c3b312d3c3b2c1a171d +1d281e2a180e1d100d1412130b232c27afc5ccbe6a37482b181d1b1f1e35 +383c3d3b383530302a1e100b0f0d08130e07263b5b947a1c3a333537190f +1816181f28221e1f171d1e1e1c191715150f12151a1c1e21201311111417 +16161515211c0e1118151119185e37160d02081b2a000e240b1c0e022b36 +211b110a18070c0e0c0d10100f13141414131313120f0f111111110f0f10 +100f0f0e0e0e0e100f0e1011110f0c1004040b0f120e022427375357652c +021a2f2a323222251c1114220c04211b170e1c18050000040704040a0f0f +0a080a0c0b0a0a0b0e10120d0d0d0d0d0d0c0c0e0f121416171717171514 +12100f0e0d0f05140e12102fabffffd07c41853d86789e64504b5152413e +3b35403e384033383b3a393736383a3e3f3e3c393737383a3a3a39373533 +323636373a3c3c3a383b3a393635373c40393a3632343938333535343433 +33323236383a37322f313439342f2d2f2f2e2b2f2d2a2b2d2f2e2c313232 +312e2d2e3030323433302d2e2f303132312f8888888888878787868a8d8c +8c8f8d898b8a8b8f9395928e8d8d8e91949593928f8f8f8f909090909294 +979896938e8c90919395969696968e8b8d939694939492939392908f9192 +99989695949495969b9b9c9b9895918f9594969a9c9b9c9f9c98979da19f +9d9c93969a9b9a999b9c9e9794999e9e9d9e9e9f9f9e9c9c9e9fa2a19f9e +9d9d9e9f9f9e9c9b9b9d9fa0a0a1a2a2a3a3a3a3a19d9c9b9d9e9c989696 +999c9fa2a3a4a3a3a2a2a2a3a4a5a6a3a3a4a09a9a9ea2a09d9a9a9b9ea0 +a1a1a0a0a0a1a1a2a09e9ea2a29f9ea1a3a4a5a5a5a4a3a39fa0a09e9893 +8f8d918f90919393939391948c8a8483442c383454676d6e534432101006 +00001a07091209131f130c01061e25a2aaa48d45122e1400000007160b10 +1517120e0b0b16140e07060a0d0d070f11282524350d0d1a383c2d11061b +0b050d140f11140d0f0f0f0e0c0a08080c10141513121114151715151515 +14140b1612060a1b1d100804472f0a1105051a1b3928373d0b2d28123034 +0a162c04050b0f0c0a0c0f0f0e0d0d0d0c0c0c0b090a0a0b0b0a0a090b0b +0a0a0a0909090b0a090a0c0c0a0707000314252b292628204587878f701f +0d1c1b1d1b1210020d0c0e18042427070e0d19010a0c1b1a0806070a0a06 +05070908070505050707070707070707070707080a0c0d0e0e0e0e0d0b09 +070606050a020e060b10062bcbe9ffcf3155413d2d6e636568788c8d8e93 +8b959b99a19795949493919092949697979693929394939394939391908f +8d9092949392939391908f8d8b8d919595948f8a8b8f8f8d8b8b8b8b8a8a +8a89898d8f8e8a8787898e8781828687837d848280808182828182848584 +838283858487898a8785848283838382805a5a5a5a5a595a5a595d605f5f +62605c5b5a5b5f6365625e5d5d5e61646563625f60606061616161636568 +6967645f5d60616365666666665e5b5d636664636462636362605f616269 +686665646465676c6c6d6c696662606665676b6d6c6d706d69686e72706c +6b6265676867666667686160656a6a6c6d6d6e706f6d6d7071747371706f +6f707171706e6d6d6f71727273747475757373716d69686a6b6765646669 +6c6f7273747373727272737475726e6e6f6b6565696d6b68656566696c6e +6f6e6e6e6f6f706e6c6c70706d6c6f74757676767573736f70706e67625e +5c5d5d5f636565615f5c615b5e616931181b0b1e232225191c261927230f +0a1a05101b111b24170e03082026a6afab944a112f1f10171e35453a3f44 +46464445464c44331e0f08030000050c262324330f19273d3c270800160c +0d1b242224241d1f1f1f1e1c191714181a1c1c1a19181713121313131213 +130b17160a1021231b1616553a141706031615331f2e330128291631350b +172c04050b0d0a080a0a0a0b0a0a0a090909080607070808070706080807 +0707060606080706070909070606000314252b292628204385858d6e1d08 +1a1c22231a15030802030e002228080c0c1800080a191806040508070302 +04080706040404060606060606060606060607090b0c0d0d0d0d0c0a0806 +0505060e0612070c11062bc9e7feca2c503b392d6c5c565159686663675e +6567646a6061636362605f616365666665626162636262636262605f5e5c +5f61636261626261605f5d5b5d616565645f5a5b5f5f5d5e5e5e5e5d5d5d +5c5c6062615d5a5a5c615a5455595a565057555353545555545658595857 +565759585b5d5e5b595858595c5c5b593838363636353333323637363639 +3632353435393d3f3c383737383b3e3f3d3a3736363637373737393b3e3f +3d3a353338393b3d3e3e3e3e3633353b3e3c3b3c3a3b3b3a3837393a4140 +3e3d3c3c3d3d424041403d3a36343a393b3f41404144413d3c4246444140 +373a3c3d3c3b3c3d423b383d42424142424342413f3f3f404342403f3e3e +3f40403f3d3c3c3e4040403f404043434242413d3a393d3e3b363335383b +3e4142434242414141424344434242433f39393d413f3c39393a3d3d3f3e +3d3d3d3e3e3f3d3b3b3f3f3c3b3c3e3d4040424142423f4042403c373333 +36383e4143413c373236333b4552200f1f192e38373928252816211e100d +26121820141d27180d02071f28a9b3b19a501734210f12162b3b30353a3c +3a373734352e22140c0d0c0a050e132b2826340c0f1d373a290d041c1110 +1c242022211c1f1f1f1e1b161412181b1f22222322201816161818191b1b +131c190b101f1f17191a583c1617080417173522333b092e2b1733370d19 +2e06070d100d0b0d0e1012131313121212110f1010111110100f11111010 +100f0f0f11100f101212100c0b020516272d2b282a224688889071200e1f +2025251c18070e0a0b1604272c0a0d0a1600090b1a1909070a0d0e0a090b +0d0c0b0909090b0b0b0b0b0b0b0b0b0b0c0d0f11121313131312100e0c0b +0b0a110713090e13082dcceaffce30543f38235d4a433f444e494344373d +3f3a4137393a3a393736383a3c3d3d3c3938393a3a3a3b3a3a3837363437 +393b3a393a3a393837353335393d3d3c3732333737353535353534343433 +33373938343131333a332d2e32332f29302e2c2c2d2e2e2d2f313231302f +3032313436373432313031333332308988878685858686888c8d8c8e908d +88898f91909297938a8c8d909395959493929190908f8f8f8f9194979996 +928e8c91939597989795948d8c8f9597949395929292908f9093969b9996 +94939496989c9c9c9c99969290949496999b9a9a9b9796969a9c9b9a9796 +979b9a999a9d9f9c98959a9e9e9c9f9f9e9d9c9b9c9d9fa3a19f9e9fa0a0 +a09f9e9c9b9c9ea0a2a1a2a3a3a3a3a4a3a09d9c9b9d9e9c989796999da0 +a3a4a5a4a3a2a2a2a3a4a4a8a6a5a6a29d9ca0a2a19f9d9d9d9fa0a1a0a0 +a0a0a1a2a29f9e9fa3a29fa0a4a6a6a6a5a4a3a1a0a0a1a29f9a95929092 +8f8e8f9395939194938889837f3f2a31438fa9b2b0682f240e17110c5261 +75623e0d0912030a140c130b3d5c626d1f1126100b1f201a0f161718130d +090a0f0b0a0a0e121516160d0a0b242845a7e5bc37282c12160d0c080211 +11080c090b0f100f0f0d0a070409101615110f0f1014151412100e0e0e1a +0e06090d141812030440380514080212271917405046482d2c3b3c220b06 +04040c110c08090e0f0d0d0c0c0c0b0b0b0a0a0a0a0a0a0a0a0c0c0c0b0b +0a0a0a0c0b0a0b0d0d0b09080a0a0d1e2e384050252a533952a5a61e1e1a +16111312040f18283a1d1f1a1a1c071b233a341c07120d0a0c0c0a090c08 +08070708090b0c0e0e0d0c0a090808090a0b0c0d0e0e0e0c0b0907060505 +050b020f070813030029165dd2c07b030d032024363a303b477c8e898e97 +959b94929494939190919393949696949394959292939393939292898d91 +92908e90928f8f8e8c8a8b8f929895908b8a8c8e8e8f8f8e8c8a89888786 +898d8d8a878686898684848585827e83828180808181817f818484838384 +8685888b8c8c89878584838483815b5a5958575759595b5f605f6163605b +595f61606267635a5c5d60636565646362626161606060606265686a6763 +5f5d61636567686765645d5c5f6567646365626262605f6063666b696664 +636466696d6d6d6d6a6763616565676a6c6b6b6c6867676b6d6c69666566 +68676667686a676361666a6b6b6e6e6e6e6d6c6d6f717573717071727272 +71706e6d6e7072747374757575757473706d69686a6b67656466696d7073 +74757473727272737474747170716d68676b6d6c6a6868686a6c6f6e6e6e +6e6f70706d6c6d71706d6e7277777776757471707071726f6964615f5e5d +5d616565615d5f60585e61662e160e1352616265290313122a2a205d6173 +6647141115070b160e150c3e6067722210271b24424e50474e4f4e494341 +444840372c231b130c0b010006242845a6eacc49343111120b0b10102327 +1e22201e1d1c1a1b1916110e131a1d1c181515141313110f0d0d0c0e1a0e +090d121a1e1c11154d430f190902102515123b4b41462e303c3d230c0604 +040c0f0a0607090a0a0a0909090808080707070707070707090909080807 +0707090807080a0a0806070b0a0d1e2e3840502528513750a3a41c1d1b1b +1b1d1a080d111e30181e1b1e1c061a2238321a05100b080a090706090707 +060607080a0b0d0d0c0b0908070708090a0b0c0d0d0d0b0a080605040404 +0c0310080914030029165bd0be79010b001d213232252b325d6a5e606664 +6a6361636362605f606262636565636263646161626262626161585c6061 +5f5d5f615f5f5e5c5a5b5f626865605b5a5c5e5e6262615f5d5c5b5a595c +60605d5a59595c595757585855515655545353545454535558585757585a +595c5f60605d5b595a5c5d5c5a393835343333323234383736383a363133 +393b3a3c413d3436373a3d3f3f3e3b3a38373736363636383b3e403d3935 +33393b3d3f403f3d3c3534373d3f3c3b3d3a3a3a3837383b3e43413e3c3b +3c3e3f434141413e3b373539393b3e403f3f403c3b3b3f41403e3b3a3b3d +3c3b3c3e403f3b393e424040434340403f3e3f3e404442403f4041414140 +3f3d3c3d3f41423f40414143434342403d3a393d3e3b383535383c3f4243 +44434241414142434445454445413c3b3f41403e3c3c3c3e3d3e3d3d3d3d +3e3f3f3c3b3c403f3c3d3f413f41404140403f404144413e39363637383c +3f43413c353535303c45501e0f152364777b7a3a101911282721636d8071 +4e1a141a0a0d150d140e40636b7627162c1d213c44433a4142413c363436 +392c231e1c1a1614130b080c262a45a4e4bf3b2a2b0f130e10131123251b +1f1a1c1d1c1c1b1714100d141c23242221211f191818161615171824160e +10151a1c1b141c5347111c0b02112616164151474b30313e3f250e080606 +0e120d090a0d101113121212111111101010101010101012121211111010 +10121110111313110d0c0d0c0f20303a4252272b543a53a6a721221f1e1c +1e1c0b121826381e231f1f1c04182039331b06130e0d0f100e0d100c0c0b +0b0c0d0f10121211100e0d0c0c0e0f10111213131311100e0c0b0a0a0910 +05120a0b1605022b185ed3c17c040c00181a2725131417404a3c3c3e3b3f +38383a3a3937363739393a3c3c3a393a3b39393a3a3a3a39393034383937 +353739373736343233373a403d3833323436363939383634333231303337 +37343130303532303031312e2a2f2e2d2c2c2d2d2d2c2e31313030313332 +35383939363432323334333189878583838385868c8e8f8e90928e888992 +9591929793888c8e929596959493959492908e8e8d8e8f93979896929090 +93949696969491908e8e929798959597939393919192979a9a9895929294 +97999b9c9d9d9c9996949597999b9c9c9b9a949697999a9a989596979a99 +98989c9e9c98979c9f9e9da0a09f9c9b9b9d9e9ea3a09d9ea0a2a2a19e9d +9c9b9c9fa1a3a3a3a4a4a4a4a4a3a09d9c9c9e9e9c9798989a9ea1a3a4a5 +a4a4a3a2a2a2a3a4a5a3a2a39f9a999d9fa0a0a09f9f9e9da0a09f9f9f9f +a0a19f9ea0a3a29fa2a7a8a7a7a6a4a2a09f9fa1a19f9a9591908f8d8c8f +91949291969187898178392a3344d4ffffff8040271b19071186537a5844 +16060c0c23321c28192d3b3e501c164241362d1508000a06000000000000 +0f0d111c24211c1928140814102384da81192b30090c08150d0925200c08 +0000090e0e1010100d0a25323b3a373a3e423e403f3c39383b3e3921150f +0b161b0a03063b46021409050923181d3632211811193030150d130d050c +100b07080e100d0d0c0c0c0b0b0b0a0a0a0a0a0a0a0a0c0c0c0c0b0b0a0a +0c0b0a0b0d0d0b09000e07021a3032303f433b4b433994e83c272018111a +190e0213221e2344212650392d33232f292818110c0d0e0c0b0d04040506 +07080a0a0c0b0a09080707060b0b0b0b0c0d0d0e0c0b0908070606060600 +0d0c091a1e1b393537d2fff9cb1015150b10170a0f136187898b95939592 +909394939190909290939595949494959090919293939292898d91918f8e +8f919292918f8e8e91939895908c8a898c8f8f8e8d8c8a89888783868a8b +8a8785848386888783808081828281807f7f80807d808384848385868688 +8a8d8e8c898788898a89875b595755555558595f6162616365615b596265 +61626763585c5e626566656463656563615f5f5e5f606468696763616163 +646666666461605e5e626768656567636363616162676a6a686562626467 +6a6c6d6e6e6d6a676566686a6c6d6d6c6b6567686a6b6b68656667676665 +656769676363696c6b6c70706f6d6d6d6f707075726f7072747473706f6e +6d6e7173757575767676767473706d69696b6b676465686a6e7173747574 +74737272727374716f6e6f6b6665696b6c6c6c6b6b6a696e6e6d6d6d6d6e +6f6d6c6e71706d7075797878777573706f6f71716f6964605f5e5b5b5e63 +64605d615e5761626229150b0d90e0e1b13c121019251b208f51785c4d1d +0d0f1024321c28192e3c42541d13434c50564b46434d463a2c2220252a42 +3831312d1f130e1e0e0614102585df8f273633080b0819191d3f3f2f2b1c +1b17141316191916132d3a42413f4245453e3f3e3b37383b3e3924181210 +1c2114101748510c190d060b23181d35312219151d3131160e130d050c0e +090506090b0a0a0909090808080707070707070707090909090808070709 +0807080a0a0806000e07021a3032303f433b4b433994e83b2823201c2523 +1303101b172045242a50372b31212d2726160f0a0b0b09080a0303040506 +0709090b0a0908070606050a0a0a0a0b0c0c0d0b0a08070605050505000d +0c091a1e1b393637d2fff9cc0f0e100c162316140e4f69605d65636a6661 +626362605f5f615f626464636363645f5f606162626161585c60605e5d5e +606262615f5e5e61636865605c5a595c5f6261605f5d5c5b5a56595d5e5d +5a585756595b5a565353545555545352525353515457585857595a5a5c5e +6162605d5b5e5f605f5d3937333131313132383a39383a3c3731333c3f3b +3c413d3236383c3f403f3e3b3d3b393735353435363a3e3f3d3937373b3c +3e3e3e3c393836363a3f403d3d3f3b3b3b39393a3f4242403d3a3a3c3f40 +42414242413e3b393a3c3e404141403f37393a3c3d3d3a3738393a393838 +3b3f3f3b3b3e4140414242413f3c3c3e3f3f43403d3e404242413e3d3c3b +3c3f414341414242424243423f3c3a3a3c3c3b3736383a3e414344454444 +43424242434442403f403c37363a3c3d3d3d3c3c3b3a3d3d3c3c3c3c3d3e +3c3b3d403f3c3f4243404241413f3f3e3f4143413e39353636363a3d4140 +3b353733313e464d1a101420a7f7fbca511f181a251a23965e8567562513 +141326341c2819303e4557211a484e4d4e3e37323c362b1e1412171b3127 +242a2c221814261207120e2080d88016282a04090a1a191b3c3a28241516 +17141616181615122f3d48494a4f5554484546434242474a452d2119131c +2115161e4e550e1c0e080a231a1f3a36271d161e33331810150f070e110c +08090d1111111010100f0f0f0e0e0e0e0e0e0e0e101010100f0f0e0e100f +0e0f11110f0d041009041c32343241453d4d453b96ea402d28231e272517 +0817231f274a292d52382c3224302a291b140f1012100f110808090a0b0c +0e0e100f0e0d0c0b0b0a101010101112121311100e0d0c0b0b0a0a020f0e +0b1c201d3b3839d4fffbce1416160e1219080000374d443c413b3d393739 +3a393736363836393b3b3a3a3a3b373738393a3a39393034383836353638 +3a3a39373636393b403d38343231343739383736343332312d3034353431 +2f2e2f3234332f2c2c2d2e2e2d2c2b2b2c2c2a2d3031313032333335373a +3b393634363738373589878482828486888f90908f91938e878b92959291 +9490888d90959796949393969592908e8e8e8e8f93979794919192939494 +9493918f8d908f93989895969a959696949495999c99979593939597999a +9b9d9e9d9b9897989c9e9e9ea09e9b95999c9b9c9c9b9696979998969699 +9b9c9a9a9ea09f9ea1a29f9b9a9c9e9f9fa29f9c9da0a3a3a19d9c9b9b9d +a0a3a5a4a5a5a5a5a4a4a4a19e9d9ea0a09d989a9a9c9fa1a3a4a4a5a4a3 +a2a2a2a3a3a7a5a5a5a19c9c9f9d9e9f9f9f9e9c9ba0a09f9e9d9d9e9e9f +9ea1a4a2a0a4aba8a8a7a6a4a19f9e9d9f9f9c97918e8c8e8d8d8e8f9191 +929690868a7f71322a3f47e3ffffff7d483424100007761f3e233e2c110e +1829232a3e254d2a2d2c294c705e3d220a0d16000000000000030d1d171a +24241810110a0a0e1b1f18181f75442b050c1f0107000029291813000009 +101014171b1b1824313a352e303537373b3d3a393c4246433d3114082b38 +140a0a355504140b0a180211214a561d020017716f09001f00050b0d0907 +0a0f0f0e0d0d0d0c0c0c0b0b0a0a09090a0a0b0c0c0c0b0b0a0a0a0b0a09 +0a0c0c0a08000c04062835241936363824111b76b14c201b160c130f061b +1c221b2652313136382f4a2520201419110b0c0d0a090907070707070707 +0705060607070808090a09090808090a0b0c0b0a090807070808060e0b06 +11252e542d4463e0fbf6ef0a1a200a04001111447e8a8c969091908f9294 +93919090918f929596959393948f8f9091929292918c8e9192929191928f +8f8f8d8b8b8d9096928f8e8a878a8f8a8a8a8a8b8b8b8b8385888a8a8886 +8480868c8a847f808483848482807f80827d808485858585868787888b8d +8d8a888c8d8e8d8b5b5956545456595b626363626466615a5b6265626164 +60585d60656766646363676663615f5f5f5f606468686562626363646464 +63615f5d605f63686865666a656666646465696c696765636365676a6b6c +6e6f6e6c6968696d6f6f6f716f6c666a6d6c6d6d6b666667666563636466 +6765676b6d6c6e71726f6d6c6e70717174716e6f727575736f6e6d6d6f72 +75777677777777767474716e6a6b6d6d6865676a6c6f7173747475747372 +72727373737171716d68686b696a6b6b6b6a68676e6e6d6c6b6b6c6c6d6c +6f72706e72797979787775726f6e6d6f6f6c66605d5b5d5b5d5d61615f5e +615d5963615c2617150e9fe5ddb43c1a1d1f1c0c1681213d29463318131b +2a232a3e254d2c2e302a47716c5a5044525f413a30292b333d434d403837 +2d180a0804060e1d211b1b227b4b2d02071a000d0e194c52464327221812 +11161b1f1f1e2939413c36373c3d393b3b3a383b4148453f33170d303d1e +171b42600d1c100e1c0612254e5a2007011b72700a001f00050b0b070508 +0a0a0b0a0a0a090909080807070606070708090909080807070708070607 +09090705000c04062835241936363824111c76b24b2320201a211a0e1e1b +1d162555363637362d48231e1e12170f090a0a0706060606060606060606 +0405050606070708090808070708090a0b0a090807060607060409090411 +252e552e4567e4fffaee000f241a1f1e281d3c66625d6663696860616362 +605f5f605e616465646262635e5e5f60616161605b5d6061616060615f5f +5f5d5b5b5d6066625f5e5a575a5f5d5d5d5d5e5e5e5e56585b5d5d5b5957 +53595f5d575253575657575553525355515458595959595a5b5b5c5f6161 +5e5c626364636139373230303232343b3c3a393b3d3730333c3f3c3b3e3a +32373a3f41403e3d3b3d3c393735353535363a3e3e3b3838393b3c3c3c3b +39373538373b40403d3e423d3e3e3c3c3d4144413f3d3b3b3d3f403f4042 +4342403d3c3d41434343454340383c3f3e3f3f3d38383939383636383a3d +3b3c40423f4043443f3c3b3d3f403f423f3c3d404343413d3c3b3b3d4043 +454243434343424343403d3b3c3e3e3c38383a3c3f414344444544434242 +424343444242423e39393c3a3b3c3c3c3b39383d3d3c3b3a3a3b3b3c3b3e +413f3d414643414241413e3e3d3d3f413e3b3532323536393c3f3d3a3637 +323242474918132121b6fff7cc502725231c0c19872d4b35513d2019202e +252a3e254d2b30312c4d766d564636404c2e281f1a1c252f353d322e312c +1a0e0d08070c181c1414196d3b20000317000d0d14464a3b371b1a151113 +151a1e201e2c3c494643474e4d4545484646494f55524b3f201133401f1d +224864121e130f1b051426515d250b041c74720c022102070d0e0a080b0e +10121111111010100f0f0e0e0d0d0e0e0f1010100f0f0e0e0e0f0e0d0e10 +100e0c040e06082a37261b38383a26131e78b6512824221b221c11232124 +1d2b5a3a3939372e49262121151c140e0f110e0d0d0b0b0b0b0b0b0b0b09 +0a0a0b0b0c0c0d0f0e0e0d0d0e0f1011100f0e0d0c0c0d0b070d0c071327 +3057304768e5fffbf40f1f2d1a18121609274e483f4239383734383a3937 +36363735383b3c3b39393a36363738393939383335383939383839373737 +35333335383e3a3736322f323734343434353535352d2f32343432302e2c +323836302b2c302f30302e2c2b2c2e2a2d313232323233343435383a3a37 +353a3b3c3b398b88858383868a8c90908f8e91938d858e919393918f8c8a +8e929799969392929492908f8f90919293969896918e9093929292919190 +8f8f908f92969593969b9697989796979a9c9a9896959597999a9a9b9c9d +9c9a9796989ea19f9fa19f9a959ca09e9d9e9c97999a9d9b9998999a9d9b +9ca1a2a09fa3a4a09b9a9d9fa0a0a29d9a9ba0a4a3a19d9c9b9c9da0a4a6 +a5a5a6a6a5a4a4a4a19f9fa0a2a19e999d9c9ea0a1a3a3a3a5a4a3a2a2a2 +a2a3aaa8a8a8a59f9fa2a09f9f9e9e9e9e9ea2a1a09e9d9c9c9c9e9fa2a4 +a2a0a5ada8a8a7a6a4a19f9e9ea0a09c96908c8b8d8f90908e9092969590 +878a7a682b282e56eaefddf07c2d2e180f06176f688a615b2a0500051614 +296189f7fefedbb1554d1000020500000000000000050e141d18181e1607 +08151c160a03182a241c0f2f3e1c1a1d041100001e1e16180000141b1719 +1e22211d3342463a2e2f3233373a3d3a393d454b44443f1e09314d2f1409 +295e06160b0a09210d8efbf9bc00017efcf67d15082206090a07080c100f +0f0e0e0e0d0d0d0c0b0b090909090b0b0b0b0b0b0a0a0a090a09080a0b0b +0908070f0308201a0c1d6a5a55000032928666251d1b0e130d0d05111910 +002029000400095843071d1a1810090a0b090605090a0a0a090808070707 +0708090a0a0b0a090807070708090c0b0a09080808090b110e0a0a101c1f +3e3368334b5cf6fb242a3410000000042a748a8e9a928e918f9294939190 +8f908f9295969593939390909192929291918d8e8f91939392908b8b8b8a +8887898b928f8e8f8b86888e888989898a8a8a8b8586888a8b8b89878388 +8c8c8985838485878785828082848083878888878788878686888b8c8b88 +8b8c8d8c8a5d5a575555585d5f63636261646660585e616363615f5c5a5e +62676966636262656361606061626364676967625f616463636362626160 +60616063676664676c6768696867686b6d6b69676666686a6b6b6c6d6e6d +6b6867696f72707072706b666d716f6e6f6c67696a6a6866656465686669 +6e6f6d6f7374706d6c6f717272746f6c6d727675736f6e6d6e6f72767877 +78797977767575716f6d6e6f6e6a666a6c6e707173737375747372727272 +7376747474716b6b6e6c6b6b6a6a6a6a6a706f6e6c6b6a6a6a6c6d707270 +6e737b7979787775726f6e6e70706c655f5b5a5c5d606060606162605d5a +6660572318081fa9a792a8410319161b1a297e6f8e6965320c0408171427 +6089f7ffffddb1534e20143445483d312c282a343f46484b3e36311f0704 +0f18150c081d30271e0b27310d0a1100150f13495250553730231a15181e +22232138474d4136363b3a3a3c3c3c3b3f474e474843220e365239211a36 +690f1e10100f271194ffffc4020682fdf77e16072105080805060a0b0a0c +0b0b0b0a0a0a090808060606060808080808080707070607060507080806 +05060e02071f190d1e6b5b56000036938a672a25261e231b170810160d00 +2531050500095842061c19170f08090a0805040809090908070706060606 +070809090a09080706060607080b0a090807070706060c0705080e1b1e3f +376c385064fefb131b3825211a241b295f655f6863666960616362605f5e +5f5e616465646262625f5f6061616160605c5d5e606262615f5b5b5b5a58 +57595b625f5e5f5b56585e5b5c5c5c5d5d5d5e58595b5d5e5e5c5a565b5f +5f5c585657585a5a585553555754575b5c5c5b5b5c5b5a5a5c5f605f5c61 +626362603b383331313436383c3c39383b3d362e36393b3b39373432363a +3f413e3b3a3a3b393736363738393a3d3f3d3835373a3939393838373636 +3736393d3c3a3d423d3e3f3e3d3e4143413f3d3c3c3e40413f404142413f +3c3b3d4346444446443f383f434140413e393b3c3d3b393838393e3c3e41 +4240414344403c3a3d3f4040423d3a3b404443413d3c3b3c3d4044464341 +424243424141403e3c3d403f3b373d3e4042434545454746454444444445 +47454545423c3c3f3d3c3c3b3b3b3b3b3f3e3d3b3a3939393b3c3f413f3d +424843414241413e3e3d3e40423e3a34303134383c3c3c3a393a36323344 +474518181334bfbfa9be530f20191b192b83799a76713d160a0d1b16285e +87f5fdffdcb35853200f293534281c18161a2531393b3e332e2d1e090511 +1913070116261e13001c29080a1100160d0d4046414526221e1816161c20 +22223b4b554b43464c4c49494a494a4e565d56544e2b143a553b29213c6d +142013100f271294ffffc7050985fffb821a0c260a0d0d0a0b0f11101312 +1212111111100f0f0d0d0d0d0f0f0f0f0f0f0e0e0e0d0e0d0c0e0f0f0d0c +0b13070c241e11226f5f5a040439978d6c2e28281e231c190d161d140529 +340707020b5a470b211e1c140d0e0f0d0a090d0e0e0e0d0c0c0b0b0b0b0c +0d0e0e0f0f0e0d0c0c0c0d0e11100f0e0d0d0d0d0c120e0b0d132023433a +6f3b5366ffff2630442a1c0d1307154a4b414337323534383a3937363536 +35383b3c3b3939393737383939393838343536383a3a393733333332302f +31333a373637332e303632333333343434352f303234353533312f343838 +35312f30313333312e2c2e302d303435353434353433333538393835393a +3b3a388c8a868485888d908f8f8d8c90928c8390909293918c8a8b8f9499 +9a9793919191908f8e8f919496969999958f8c8e9291919090909191928f +8f91949391959c979899989797999c9a99989898999a9b9a9b9c9c9b9895 +93969d9f9d9da09d97949ca09d9c9e9c969d9fa2a19e9c9c9d9d9c9ea2a3 +a0a0a4a5a19b9b9da0a1a0a19c999ba0a4a3a09c9c9b9c9ea1a4a6a6a6a6 +a6a6a5a5a4a2a0a0a1a3a29e999e9d9fa0a2a2a2a2a5a5a3a2a2a2a2a2a7 +a5a5a5a29c9c9fa5a3a19f9e9fa2a3a4a3a19f9d9c9c9c9e9fa2a4a2a0a6 +aea8a8a7a6a4a2a09ea1a3a29f98928e8c8e9193928e8f9398948d888b78 +6226263d2dd8ffffd658463c1e1302002378a27b4808091c151c2329402a +0b0001221d384c2c120e0405060805040a1213110b171316190e000e2828 +2a241a252f2830393140352732332718001d16111a000422261f1e20211e +1b38474c3f33353b3d363a3a37363841484f44432b0b21453e1a061d5d05 +1607070018072f84cfb000000a7fbb5a070a0907080705080e120f0f0f0f +0e0e0e0d0d0c0b090808090b0c0b0b0a0a0a090909090808090a0b090700 +07020d20192f6ffefeb90311a1fcfc77281915080c0b1305160f2345d8f1 +3b000153e7cc1f1c181a110a0b0d0a060404050607070706060a09090808 +0707070b0a09080708090a0c0b0a090808080905150d0b1a202116462b5f +040b03cdfe6c351c0205000005186e8c929d938e918e91949492908f908f +9295969593929291919293939292918c8b8b8e91928f8c8d8e8e8c8a898b +8d908d8d8f8b85878e8b8b8a89888787868888898b8d8d8b8a87898b8d8d +8b868388898a87848284878286898b8a898989878584868a8c8b8988898a +89875e5c5856575a60636262605f63655f5660606263615c5a5b5f64696a +676361616261605f60626567676a6a66605d5f6362626161616262636060 +62656462666d68696a6968686a6d6b6a6969696a6b6c6b6c6d6d6c696664 +676e706e6e716e68656d716e6d6f6c666d6f6f6e6b69676868676b6f706d +707475716d6d6f727372736e6b6d727675726e6e6d6e7073767879797979 +7877767572706e6f706f6a666b6d6f707272727275757372727272727371 +71716e68686b716f6d6b6a6b6e6f72716f6d6b6a6a6a6c6d7072706e747c +797978777573706e7173726f67615d5b5d5f6362605f62655f5c5c686055 +221c1d009fe4c99925252d1f21170a3685ac84521212231a1d23293f2a0b +0103241d364f3e35424752585a524b4a4c4b453d4237312914000a24272b +29212c372e3233242f2315242a28281e484a4b593a322e221b1a1c201e1c +3c4c53453b3c43443c3d3d3a373b444b5247472f0f264a4827172c6a1020 +0f0d051e0d378cd9ba07010e80bc5b08090806070503060c0d0a0c0c0c0b +0b0b0a0a0908060505060809080807070706060606050506070806040006 +010c1f183070ffffba0715a5ffff7a2d2323181e1b1e0a170e2246ddfb45 +000152e6cb1e1b171910090a0c0905030304050606060505090808070706 +06060a090807060708090b0a090807070706000e0606151e2017472f640c +130dd7fe56211e192f282a221d5c6761696363685f606363615f5e5f5e61 +64656462616160606162626161605b5a5a5d60615e5b5d5e5e5c5a595b5d +605d5d5f5b55575e5e5e5d5c5b5a5a595b5b5c5e60605e5d5a5c5e60605e +59565b5c5d5a5755575a565a5d5f5e5d5d5d5b59585a5e605f5d5e5f605f +5d3c3a34323336393c3b3b37363a3c352c38383a3b39343233373c41423f +3b39393837363536383b3d3d40403c363335393838373737383839363638 +3b3a383c433e3f403f3e3e404341403f3f3f4041423f404141403d3a383b +4244424245423c373f43403f413e383f4142413e3c3b3c3c3b3e42433e40 +4445403b3b3d3e3f3e413c393b404443403c3c3b3c3e4144444242424244 +434241413f3d3e41403b373e3f4142444444444747454444444442444242 +423f39393c42403e3c3b3c3f4041403e3c3a3939393b3c3f413f3d434943 +414241413f3f3d414344413c363232353a3f3e3c393a3a33333748484417 +1b2810b2f9dfab3430342322180d3c8eb8935e1e1b2b1e2123293d280900 +00231f3b543e2f36363e42443e393a3e3e3932382d2a2614020b23252623 +19242c2427271b281f15242d2a27183f3e3c4829252a211a191b1e1e1e3f +525b51484c56564c4c4e4b494c575c6356533a182c4e4a2f1f3370142211 +0d051e0d398fdbbc0a051184c05f0c0e0d0b0c0a080b1113101313131212 +121111100f0d0c0c0d0f100f0f0e0e0e0d0d0d0d0c0c0d0e0f0d0b040b06 +11241d3474ffffbe0a18a8ffff7f312524181e1b200e1c14284be1fd4704 +0357ebd023201c1e150e0f110e0a0808090a0b0b0b0a0a0e0d0d0c0c0b0b +0b100f0e0d0c0d0e0f11100f0e0d0d0d0d06150d0c1b23251b4b32670e15 +0ed8ff6d3a2d1f2b1d1b1009464d4142332c3231373a3a3836353635383b +3c3b3938383838393a3a3939383332323538393633353636343231333538 +353537332d2f363535343332313130323233353737353433353739393732 +2f34353633302e30332f3336383736363634323133373938363637383735 +8b8a8988888a8b8c8c8c91959189888e909599968e8a8c91929599989591 +91919393918f8e9095999a9a98938f8e9194949695928f8d90938e8e9399 +9994969d9896918f949b9b979b989695989a9c9c9b9fa2a19b97989a9f9d +a0a5a49e989698979ca2a099989b999ea19e9b9d9e9ba09d9a9b9fa19e9c +a19e9a9ca2a5a4a1a4a09c9ea2a5a39f9d9d9ea0a4a5a5a4a4a5a5a5a5a4 +a4a39f9fa1a1a1a1a2a19b9a9c9fa1a3a5a5a8a5a3a3a4a6a6a5a7a8a7a2 +9c9a9ea3a2a09e9c9d9fa2a4a5a3a19f9fa1a3a5a6a4a5a7a6a2a3a7a9a7 +a4a3a4a5a5a4a6a5a29d95908d8c8e9596938f909191908c9186625e211f +2b2fbeffd1d56831232e190c166d5b5c4a4d11080f06252f1a2c3630292d +2f2d47869336160c0a03050a1012141216181b0e001d10000b2b343b281c +2e3125251c3b412727372b3613000c23231e0b000611181a16121311465e +63482b283136352939312e2b4c4e5150471d0e181b4426132952000d0611 +0a1615151b1300000000120600110f08090a0e0e0b080c1009150e180f12 +06110807180e010b0f030d0b090908070a0d0f04060c090a0e0a05070811 +2026180583e1f300000086d8782c101f160b0b04000e0e1d35fbeff8000c +2ce9ff790a1119120d0c0a06080d0a060a0b04070c0507110e080a050005 +021c0708070e070e0d020f08050a000e061211090e1b1c11395563000000 +8af785172206000000000f428d958ea19a97989898979797969697969595 +969694928d9293909094938e8d8c8c8f9293918d8f8d8b8d8f8f8c89878a +8e8e8b898a8b8b8d8f91908e8b88898684878c8e8b878a8c8f8f8c888482 +8a838187867f7f86827e7f868c8b898a8a88858587898b8b8686878a8b5d +5c5b5a5a5c5e5f5f5f6468645c5b61606569665e5a5c6162656968656161 +61646462605f61666a6b6b6964605f626565676663605e61645f5f646a6a +65676e69676260656c6c686c696766696b6d6d6c7073726c68696b706e71 +76756f696769696e74726b686b696e6e6b686a6a676c6967686c6e6e6c71 +6f6c6e7478777476726e70747775716f6f70727677777677787878787775 +7470706f6f6f6f6e6f686a6c6f7173757578757373747676757374736e68 +666a6f6e6c6a68696b6e7073716f6d6d6f717374727375747071757a7875 +74757675747675726d645f5c5b5d6466635f60605e5d5b67654e55211b14 +0b93e6a1a6441a1d362b2630866e6d585b1d12160b29311a2c36302b2f31 +2d4589a5594a4f57555455534f4a464546432f122b16000927343d2f2638 +3b2c281c34371a192b22361f182f4c53503e170c0b1216121113124a636a +4e332f393e3c2f3e363130515357564d24151f204d3324385f0b170e1910 +1c1d1d231d09030101130700120e0708090b0b0805070b07130c160d1004 +0f0605160c00090d010b0907070605080b0d02040a07080c08020407101f +25190686e4f60201048bdd7d331b2e281d1a0f050e0d1c35fff8ff000b2b +e8fe78091018110c0b0905070c0905090a03060b0406100d070904000401 +1b0607060d060d0c010e070409000b00080a0409181b123a5868020a0595 +f66d00201b29272f1a17326862596d6c6a68676766666665656665646465 +6563615c61625f5f63625d5c5b5b5e6162605c5f5d5b5d5f5f5c59575a5e +5e5b595a5b5e60626463615e5b5c59575a5f615e5a5d5f62625f5b57555d +56545a595252595652535a605f5d5e5e5c59595b5d5f5f5a5a5b5e5f3b3a +37363638373838383b3f3b333137383d413e363234393a3d41403d393939 +3a3a383635373c4041413f3a3635383b393b3a37343235383333383e3e39 +3b423d3b36343940403c403d3b3a3d3f414140444746403c3d3f4442454a +49433d3b3b383d43413a383b393e3f3c393b3b383d3a38393d3f3e3b403b +383a4041403d423e3a3c4043413d3b3b3c3e42434342403f414141404140 +3c3c3e3e3e3e3e3e393a3c3f4143454548454343444646454444433e3836 +3a3f3e3c3a38393b3e4042403e3c3c3e404243414244433f404244403f3e +414244434645443f39343132353c403d39383733303241463646191a1e19 +a4f6b1b6502221382b25318a75776566291b1e0f2c301a2a342e282c302f +4a8ea5533e3e433f3f4142403d3a3b3c3b280e2b16020a263238281d2f32 +241f102a2e14182b25381f14294447442f0d0a0b1215110f13144d69725a +403f4c514e3f5149444365666764592e1d2524523b2c3f650f19101b101c +1f1f261f0e050506180c0517140d0e0f12120f0c0e120c18111b12150914 +0b0a1b11040e1206100e0c0c0b0a0d101207090f0c0d110d090b0d16252b +1e0b8be9fb0605088fe183391f312a1f1d130b1615243dfffdff051031ee +ff7e0f161d1611100e0a0c110e0a0e0f080b10090b15120c0e0904090721 +0c0d0c130c131207140d0a0f05120711120b101f21173f5d6c050c0797fe +83172e20251c1f08021b4e432f3b31313a3e3e3d3d3d3c3c3d3c3b3b3c3c +3a3834393a37373b3a3534333336393a383437353335373734312f323636 +333132333537393b3a38353233302e313638353136383b3b3834302e362f +2d33322b2b322f2b2c3339383637373532323436383833333437388d8c8b +8a8b8c8e8f929193959088878c8f9397948e8b8e92939698979491919292 +92908e8d909598999996918d8d9094919393918f8f929590909499989495 +9b90919091989f9f999c999797999c9d9d9b9ea09d979495989e9d9fa4a3 +9d98979b9a9da19f99989b9a9ea19d9b9d9f9e9d9c9a9da2a5a3a2a39f9c +9ea3a6a5a3a3a09d9fa3a5a29f9e9d9d9fa2a4a5a4a4a5a5a5a5a4a4a39f +9e9f9e9d9c9c9b9b9b9fa3a5a5a5a4a8a6a3a3a5a6a6a5a6a7a6a19c9b9f +a4a2a19e9d9da0a2a4a5a3a19f9fa1a3a5a6a4a5a7a6a2a3a8aba9a6a5a5 +a6a5a4a3a3a19c96918f8f8f95979391939594958b826645491a1c25308e +fbdd9f3d1a1d1010061d763d3d5f5b160009121e001829322c2527282416 +261606170905120c0e11171b19120c00041126120c010b060c0000202815 +0b0027380f100d08040400000a0c12140a112a1b10231c11271b538a9980 +5f42312d304c4239324d4e6549472d0b0040937c60006301161900131c17 +1323281708000a24160b1e1e170506090c0d0f1518181103181b26110913 +01041510080c190c09080a0907080a0e05080c07080b060705030918231c +0f0e000800090c0c073018181c0c060e0f160d131e002353ba0700004153 +2d0a0f1915100a070607070805080906080b07070d0a0609090a10131208 +00020e00030a010d06060e05110a100f090f1d1d1096ebf90f0000a6ff99 +122120090000020f3782968f9f9d98979797969695959596959495969795 +939194938e8e9293908e8d8c8e929392908f8d8c8d8f8f8c8a8a8d90908d +8b8b8c8a8b8e8f8e8c8886898685878c8f8c89888a8d8e8c888584848181 +8485848589848081888c8c8a8b8b898685878a8b8b888787898a5f5e5d5c +5d5e616265646668635b5a5f5f6367645e5b5e6263666867646161626363 +615f5e6166696a6a67625e5e616562646462606063666161656a6965666c +616261626970706a6d6a68686a6d6e6e6c6f716e686566696f6e7075746e +69686c6c6f73716b686b6a6e6e6a686a6b6a6968676a6f73737374706e71 +7679787675726f7175777471706f6f71747677777778787878777574706f +6d6c6b6a6869696b6f737575757478767373757676757273726d68676b70 +6e6d6a69696c6e7073716f6d6d6f717374727375747071767c7a77767677 +75747373716c65605e5e5e64676361626161625c5b4733431c1d181972db +bc81260e1e1e26223b925651716c240a121a23011a2b342e27292a25152b +2a294b494e5f55534f4f4d473d351d232734180c000a0813090d2b331f15 +07323b0e0b0703030e0715272b3333211324150c1f1b11281f5891a08866 +4b39363753493e3752536a4f4d341207459c8b7104720e21210818221c1b +2b322011020d25170c1f1d16040506090a0c1013160f011619240f071100 +02130e060a170a070608070506080c03060a050609040402020817221d10 +11010d020e14140f351f232b1e181d1a1b0d121d00285cc30a000040522c +090e18140f09060506060704070805070a06060c09050808090f12110700 +010d000209000c05050d040e030908040c1c1c1199f0ff190303b1fe8000 +1d312d14232116285e655a6a6b6767666665656464646564636465666462 +6063625d5d61625f5d5c5b5d6162615f5f5d5c5d5f5f5c5a5a5d60605d5b +5b5c5d5e6162615f5b595c59585a5f625f5c5b5d60615f5b585757545457 +5857585c5854555c60605e5f5f5d5a595b5e5f5f5c5b5b5d5e3d3c393839 +3a3a3b3e3d3d3f3a323035373b3f3c3633363a3b3e403f3c39393a393937 +3534373c3f40403d383434373b363838363434373a3535393e3d393a4035 +3635363d44443e413e3c3c3e414242404345423c393a3d4342444948423d +3a3e3b3e42403a383b3a3e3f3b393b3c3b3a39383b4042423f403c3a3a3f +42413f413e3b3d4143403d3c3b3b3d404243403e3f4141414041403c3b3c +3b3a393838383a3f424544454348454342454546444243423d38373b403e +3d3a39393c3e4042403e3c3c3e404243414244433f404346424140424344 +434343433e3a353333363c413d3b3a39363532342a1d37171f1f237ee8c7 +8b2e12201e24233d965d5a7b762d12171d26021928312b242829271a2f29 +233f393b4b42414042423d342d171e2534180e0008050c0104232b170c00 +243209080707080f051223252c2b1b1224170b1e19112a225c99aa95765c +4c4749655b524b66667d5d593e1a0a49a192790b771425240a1b221f1d2e +34251606122a1c1124231c0a0b0d101113171a1b14061b1e29140c160407 +18130b0f1c0f0c0b0d0c0a0b0d11080b0f0a0b0e090b09080e1d28221516 +051106121717123b25272e201a201e21151a25072e61c81105054658320f +141d19140e0b0a0b0b0c090c0d0a0c0f0b0b110e0a0d0d0e1418170d0507 +1305080f06120b0b130a150b11100b132222169ef4ff1b0505b3ff930e2b +382b0a1511041344453036302d373d3d3c3c3b3b3b3c3b3a3b3c3d3b3938 +3b3a3535393a3735343335393a3937373534353737343232353838353333 +34343538393836323033302f31363936333436393a38343130302d2d3031 +303135312d2e3539393738383633323437383835343436378d8c8b8b8b8d +8e8f949393938e888a8f8e9294928d8b8e9395969795939292939191908e +8d8f94989997938e8b8c9094929392918f8f919492929599989595988d90 +92949aa09e9897959393969899999d9e9e9a969496999d9c9ea2a19b9798 +9f9e9fa09d99999c9a9ea09b9a9ea1a19e9d9da0a4a7a5a5a4a19ea0a4a7 +a6a4a19f9fa1a5a5a29f9f9d9c9da0a3a4a4a5a5a5a5a5a4a4a4a4a2a2a0 +9d9c9c9a9c9da2a6a8a8a5a4a8a6a4a4a6a7a6a6a5a6a5a19d9da1a5a2a1 +9f9e9ea0a3a4a5a3a1a0a0a1a3a5a6a4a5a7a5a2a4a9adaba8a7a7a7a5a4 +a1a1a09c9692919190959694929698979b927f50333e171a372e1e59672a +17221c000903278a58700a0a000909011c1814242e2a2425252211451b00 +030506090d07060b121206000c00031c060201171a1a09092c331c080023 +2f040802110607030f140f10100a09070f130d0e15101f1e387bc5ecdec3 +a79693808c98b2aa88412e211d33b2f6f4c9187e00001409021d27232827 +1d171200060507130c071110100f111315142c21182517211b1a15110a08 +0a0d0c060e09080c0e0a08090d080c0e07090c050b0a0a101d27241c1e32 +210400100b1f161c1c1513141108000e1916161f1d030000161b11111314 +181a14090408080307050507080909080d0d0b090705070a0b0616080710 +0a170b050b040610090e0d0f0c0c1829271820e7f92e000064eeff4b0e08 +11070a000f256e94909ba198989595959494949394939294969897969696 +938e8d919392908e8d8e919495958f8e8d8e8f8f8d8b8d8f9292908e8c8c +8b8d8f908f8c8987898786888d8f8e8b86888a8c8c8a8887818484828488 +8a88868283898d8c8b8d8c898686888a8b8b8c8a89898a5f5e5d5d5d5f61 +6267666666615b5d625f6365635e5c5f6466676866646363646262615f5e +6065696a68645f5c5d616563646362606062656363666a696666695e6163 +656b716f696866646467696a6a6e6f6f6b6765676a6e6d6f73726c686970 +7071726f6b696c6a6e6d68676b6d6d6a696b6e7275767675727173777a79 +77747272747878757272706f707376777778787878787775757573706e6b +6a68686a6e72777879757578777475767876767172716d69696d716e6d6b +6a6a6c6f7073716f6e6e6f717374727375737072777e7c79787878757471 +71706c656160605f6466646265656268635733243a1d223524114a561b0c +202410221f45a77389211e0c1b170c241e1a28322e28292926154f312335 +42494e4d443c3a3b372b1f2c1a17280a0200171f231418383f25170e4449 +15130612090c0d1a221b1a190e0401090f090c151123233f82cdf3e7ccaf +9e9b88929eb9b18f493428243bbaffffdc298d06071c1107212a282d2e24 +1e1701070608140b06100f0d0c0e10100f2a1f1623151f1918130f080608 +0b0a040c07060a0c0806070b060a0c05070a030807070d1c26251d213726 +0c021a15271b21252322262013030e18151624260c0000161b1111141519 +1b150a0509090406040406070808070c0c0a08060406090a051507060f09 +160a040a03050f080b080a07071528261923ecff3803036feff63308132e +2c2e11181a50695c666a6465646464636363626362616365676665656562 +5d5c6062615f5d5c5d606364645f5e5d5e5f5f5d5b5d5f6262605e5c5c5e +606263625f5c5a5c5a595b6062615e595b5d5f5f5d5b5a54575755575b5d +5b5a56575d61605f61605d5a5a5c5e5f5f5f5d5c5c5d3d3c3939393b3a3b +403f3d3d3832333835393b393432353a3c3d3e3c3a39393a383837353436 +3b3f403e3a353233373b373837363434363937373a3e3d3a3a3d32353739 +3f45433d3c3a38383b3d3e3e4243433f3b393b3e4241434746403c3b423f +40413e3a393c3a3e3e39383c3e3e3a393a3d41424242413c3a3c4041403e +3d3b3b3d41413e3b3b3938393c3f40403f3f3f3f3f3e3f3f413f3d3b3a39 +3837393a41434745444147434341454445454142413d39393d413e3d3b3a +3a3c3f4042403e3d3d3e404243414244423f414448444342444444434141 +423e3a363535373c403e3a3c3a363b393315112f1b253a2c18515e221223 +260e1f2047ab7a902925121f1a0e261e1827312d272a2a2718512f1d2a33 +383c3d352f3033302419291616280b0400151b1e0e13343b241200333c0d +0f07160e100f1c231b19180f08030d100a0d17132627478cdafff8ddc2b1 +ae9ba8b4ccc3a15640302a3ebdffffe330920c0b1f130a242f2c33342c24 +1b060c0b0d19110c16151413151717162f22192618221c1b16120b090b0e +0d070f0a090d0f0b090a0e090d0f080a0d080f0e0e14222c2a22263b2a0f +051c172a21272a26252823170916201d1e2a2b1107071e231919191a1e20 +190e090d0d080b09090b0c0d0d0c11110f0d0b090b0e100b1b0d0c150f1c +100a10090b150e120f110e0e1c2e2c1e28f0ff3a050571f4ff4314192c25 +2404070636493434312b363b3b3b3a3a3a393a39383a3c3e3d3c3d3d3a35 +34383a3937353435383b3c3c373635363737353335373a3a383634343537 +393a39363331333130323739383532343638383634332d30302e30343634 +332f30363a39383a393633333537383838363535368b8a8989898b8d8e91 +9292908c8c9095919393908c8b8e9297969594929293938f908f8e8e9094 +979a97928e8c8e9295979694918f8e8e8f92939598989796979496979698 +9c999395939293959898989f9f9d9a97979b9e9d9c9ea19f999799a1a1a0 +9f9b999a9c999c9d99989da1a1a0a0a0a1a3a4a2a2a3a19fa0a3a5a5a49f +9fa0a3a6a6a39fa09e9b9c9fa2a4a4a5a5a6a6a5a5a5a4a5a3a3a09e9d9e +9da1a1a4a7a9a8a7a6a8a6a5a5a7a8a7a6a4a4a3a09e9ea2a6a3a2a09fa0 +a1a3a5a5a4a2a1a1a2a4a5a7a4a5a7a5a3a5abaeaba9a7a7a6a4a2a1a1a0 +9c96929191919595929297999896938349353b1516292300022105141912 +0006021c6759825e29000b0805282e0a1923222020211d4aa97136192229 +1a0a01000003060200010e071e080b140101070006344d4c441539290300 +000e0c00060f100c0906010a0705010100060a30281f1f3165b6f7f2eff5 +f2f7f0ddb65a3130190e0943040000005a120b0b100c17140f2559a8ee96 +4111070f1918241a1a18171819160f1c130b15010f1f3109170d06112023 +0f130b080f120e0b0d090b1211090e12090a0c111a2328231a1f2f1b0000 +18150219261d0f141a110a190914191f1111090005161f120e1119151c17 +09050d0d03080805060a08050a110b0c0e080709090e0d140c0a0406030f +0c0b06060b07050a09080a1d2f2d1e0010080200000021300b211e150003 +080e16568c8f97a29a97949494939393929391919396999998979694908f +91929292908e8e909396988f8f8f8f8f8f8d8c8e90939392908d8b8e9092 +9392908c8a8a8887898d8f8f8d8787898b8d8e8d8b848a898282898a8486 +8485898b8a8a8d8c89868587898a8a8e8c8887895d5c5b5b5b5d60616465 +65635f5f6368626464615d5c5f6368676665636364646061605f5f616568 +6b68635f5d5f636668676562605f5f60636466696968676865676867696d +6a64666463646669696970706e6b68686c6f6e6d6f72706a686a73737271 +6d6b6a6c696c6a66656a6d6d6c6c6e6f7172737374727273767878777272 +73767979767273716e6f7275777778787979787876757674716e6c6b6a6b +6f7275787a797877797776767879787770706f6c6a6a6e726f6e6c6b6c6d +6f717372706f6f70727375727375737173797f7c7a78787774727171706c +65616060606465626266666363665d2e283b1f24312700001c00141d1e10 +1e1e3a84749d7741141f18133237131f29282425262552b78759485a6354 +403326212325211b1f2819290c0b120105100915425b56573b654d1e120c +16110710191a110d0700050200000000070e352d2626396dbffffdfafffa +fff8e4bd6139362015114b0f0b0405691f141315101b1712285cacf29944 +1208101a1723191915141516110a1a110913000d1d2f07150b040f1e210d +1109060d100c090b0709100f070c100707090e172227241d243423030922 +1f0a1e2b261d23291f131c0811181f161a120205161f120e111a161d180a +060e0e040707040509070409100a0b0d070608080d0c130b090305020e0b +0a05050a0604070603071c302e210415100a0303062220001c252a1d201d +1910406962636b63646363636262626162606062656868676665635f5e60 +6161615f5d5d5f6265675f5f5f5f5f5f5d5c5e60636362605d5b61636566 +65635f5d5d5b5a5c606262605a5a5c5e6061605e575d5c55555c5d575a58 +595d5f5e5e61605d5a595b5d5e5e615f5b5a5c3b3a37373739393a3d3e3c +3a3636393e383a3a37333235393e3d3c3b39393a3a3637363535373b3e41 +3e39353335393c3c3b39363433333437383a3d3d3c3b3c393b3c3b3d413e +383a3837383a3d3d3d4444423f3c3c404342414346443e3c3c424241403c +3a3a3c393c3b37363b3e3d3c3c3d3e3e3f3f3d3e3c3b3a3d3f3f3e3b3b3c +3f42423f3b3c3a37383b3e40403f3f40403f3f403f42403e3b3b3a3a383c +3c41424643444145414240444344433e403f3c3a3a3e423f3e3c3b3c3d3f +4142413f3e3e3f4142444142444240424649444442444343414141423e3a +363535383c3f3a3a3d3b37363c381117312027342a02032004161e1e101e +1f3c887ba47c45172018133136101d27282528292755b885533e4d554633 +281d1a1e201c161d27192b0f0d1501040d0512425b58552e544117100c19 +170d121b1b140e0902090606020200090f38312c2e447aceffffffffffff +fff7cf714642281b134d11120e0c7025191619131e1c172f63b5fba04917 +0d151f1d291f1f1c1b1c1d18111f140c16021020320a180e071221241014 +0c0910130f0c0e0a0c13120a0f130c0e10151e282d2922283826050b2421 +0d24312b20262c221823101a20271c1f170b0f20271a16191f1b221c0e0a +1212080c0c090a0e0c090e150f10120c0b0d0d131219110f090b08141110 +0b0b100c0a0e0d0a0e223533260819130d050508272b05232b2b1b1b140b +00294b3b34352d373a3a3a39393938393737393c3f3f3e3e3d3b37363839 +3939373535373a3d3f373737373737353436383b3b3a383533383a3c3d3c +3a3634343231333739393733333537393a39373036352e2e353630333132 +363837373a39363332343637373a383433358a8a89898a8c8e8f9193928d +8a8c92969495938f8b8b8e9297969493939393928f8f908f8f9195989a97 +928f8f9194969996949190908f8f92939597989a9997999a999596989793 +999897999b9e9e9d9d9c9a9897999da09d9c9ea09d98989ca2a3a19d9a99 +9b9b979b9c98979ba0a09c9e9fa1a2a3a1a1a2a19fa0a2a3a4a39e9fa1a4 +a6a6a3a1a19e9c9c9fa2a4a4a5a6a6a6a6a5a5a49f9e9e9c9b9b9d9da7a5 +a5a6a7a8aaaaa8a7a6a7a9a9a8a6a5a4a29f9ea0a3a6a3a2a1a1a1a2a4a5 +a5a4a3a2a2a3a4a5a7a5a5a6a5a3a6acacaaa8a7a7a5a3a0a3a3a19c9691 +8f8f90939390929699978d8e7f4137370f13140e1e0d1f18190711100100 +000000000d06050a07111e07000911121210100f1e541c12090305050807 +0505070a0c0c0d0c0c694000070c161f141433484c4c3847270a00050000 +0308060308101214469d9a93b86e0e22241f2331352d2627486691969d7a +5f403b323b1210368c4a2b0820561b0e090f070d172e3f404e6e612f1b0f +090a050c121619191d1f1b1129180209010e1b300b08010b100a14061408 +050f16110d0e030b16120912170d06070c13171815123a2e96d8a32a1100 +081a1c120d0a0f1a1007191212373a4b4c4c00090e12080b0e161306040d +0e050b0e06040b04010f1606070b050b18191017000917171c080f0e090b +0b0708060b08070b1c2b2a1c173c32000d0412201c2017031d17070b0f0e +3d7c8e92a39d97959494949393939291909296999a9a9695959594929091 +9492908f8f9195988f909191908f8e8e8e90929494918e8b8e9093949492 +8f8c8d8b8a8b8c8e8f8f8b8a8a8c8f91918f868c8b84838a8b8586848588 +8987888c8b888584868888888f8c8887885c5c5b5b5c5e6162646665605d +5f6569656664605c5c5f63686765646464646360606160606266696b6863 +60606265676a6765626161606063646668696b6a686a6b6a66676968646a +69686a6c6f6f6e6e6d6b69686a6e716e6d6f716e69696d7475736f6c6b6b +6b676b6a6665696c6c686a6d6f7071727273727273757677767172747779 +79767474716f6f727577777879797979787675706f6c6a6969696b757676 +7778797b7b797877787a7a797771706e6b6a6c6f726f6e6d6d6d6e707173 +72717070717273757373747371747a7d7b7978787673707373716c65605e +5e60636360616566635a615b272b381d25241a2815231c1f111f2216120a +0f070e29221f231b242d130a121a1b171818192964353232323734332c24 +1f2023252627241e734400070d1c2922244256555f60754c27131305030e +161613161c1d1a459c9992b86f0f2629242a383e352e3054739ea1a88567 +49443c441b183e95563e1c3367281711140b0e182f3f404e6e64321b0f09 +0a040b111516161a1c150c27160007000c192e090600090e081204120603 +0d140f0b0c010914100710150b03040910161715153f339de1ac351c020b +1d231d1a191a211305160f103a41524e4c00090e12080b0f171407050e0f +060a0d05030a03000e1505060a040a17180f16000816161b070e0d080a0a +0607050a07040a1b2b2a1f1c413901160d1b23121514082a2a1b1e1a0e30 +6468636b65646463636362626261605f61656869696564646463615f6063 +615f5e5e6064675f606161605f5e5e5e60626464615e5b61636667676562 +5f605e5d5e5f6162625e5d5d5f62646462595f5e57565d5e585a58595c5d +5b5c605f5c59585a5c5c5c625f5b5a5b3a3a3737383a3a3b3d3f3c373436 +3b3f3b3c3a36323235393e3d3b3a3a3a3a393636373636383c3f413e3936 +36383b3d3e393734333332323536383a3b3d3c3a3c3d3c38393b3a363c3b +3a3c3e41414042413f3d3c3e424542414345423d3d3f4343413d3a393a3a +363a393534383c3c38383a3c3d3e3c3c3d3a393a3c3b3c3d3a3b3d404242 +3f3d3d3a38383b3e40403f3e4040403f403f3a39393736363738403e403f +4241454343404140444243413f3e3c39383a3d403d3c3b3b3b3c3e3f4241 +403f3f4041424442424342404347474343424442423f4343433e3a353333 +383b3b38393a39342d37370c1b301e29241a2917241d1f101f2217140e14 +0e152c231e201a222a0f060f191a1a1b1b1b2b64322d2a282c2a2a251f1c +1d20222326241e754702090f1c28222445595c63586a452314160b0a1419 +1612161a19184aa19f97ba7111272c2830404740393f6484afb3ba977a5a +53464d201b40945644253a6e2e1c14180e121d34474858786b3923171112 +0c13191d1f1f23251f132c19030a020f1c310c09020c110b150715090610 +17120e0f040c17130a1318100a0d12191e1f1d1c4539a3e6b13920071426 +2b23201e20291c10211a1b43495a5a560913181a1013141c180b09121108 +0f120a080f0805131a0a0b0f090f1c1d151c050e1c1c210d14130e10100c +0d0b120f0d122333322622473f071b1220281a1d1b0e302e1c1c12021d48 +44393c36393b3a3a3a393939383736383c3f40403d3c3c3c3b3937383b39 +373636383c3f373839393837363636383a3c3c393633383a3d3e3e3c3936 +3735343536383939373636383b3d3d3b323837302f363731333132353634 +353938353231333535353b383433348c8c8b8c8d8f91929396948c888a8f +919695928e8c8d919497959494949492918f909191919296999996929092 +949596959391919395969593969696989b999496989895969a9b98989797 +999c9e9e9d9a98969595989b9d9d9d9ea09c98999f9fa2a19c99999b9a97 +9b9d99989b9f9e95999da0a2a3a3a5a2a2a0a0a1a2a3a39e9fa2a4a5a5a4 +a4a2a09e9ea1a3a4a4a6a6a7a7a6a5a5a5a09f9e9d9d9fa2a2aba8a6a5a6 +a8aaaca8a8a7a8aaaaa8a6a6a4a19f9fa0a3a5a3a3a2a2a3a3a4a5a4a4a3 +a3a3a3a4a4a8a5a4a6a5a4a7aeaaa9a7a7a7a6a3a1a4a3a19c96918f8e92 +93928f929699948f8c7c38362e0f1c1d001a06070d0c0f0710000b140d0a +040b11191401000c15040a0e0d0b0809090111000001000004050b141614 +1313140d1a4acb8c0d091106120a0c2d4247492e362a0103120000000400 +0000000000227f8c8aa8600a1b25252b393e3b3b3f3442585d796a645d4b +44481a0512492a110c08651b0a120a1a0a0d3a64583525152f56401a140c +070f171b19191c170d1e1f090c0410204d070c010404162a01100303121c +150d0c010c1a130a141b0f0b08060707060c112c225eb59943241e161719 +1b1712100f21011522000e3cacf5ea4a1d030b0b14080d0b0403090a050b +1208040b010019280c06080004181a001c00030d221a1a0808051514060f +13181714141d26231c1e1b2d170011301200171009231400150d0c25658a +8e9da099979696959595959291909195999b9b9594959797939192949492 +908e8f93968f919292908f8f8f8e8f91959694908c8b8d909393928f8d8f +8e8d8c8c8d8f90908d8b8c9092929087898986878b8c8a87858688888587 +8c8c898685868888888e8b8886875e5e5d5e5f6164656669675f5b5d6264 +6766635f5d5e62656866656565656362606162626263676a6a6763616365 +6667666462626466676664676767696c6a6567696966676b6c696968686a +6d6f6f6e6b69676666696c6e6e6e6f716d696a707174736e6b6b6b6a676b +6b6766696b6a61656b6e7071747673737373747576767172757778787777 +757371717476777779797a7a7978767671706c6b6b6d6e707a7977767779 +7b7d797978797b7b797773706d6b6b6c6f716f6f6e6e6f6f707172727171 +71717272767372747372757c7b7a7878787773717473716c65605e5d6263 +625f616564615c6158202d331f31310a2a141317161b1520111e27211e1b +272f362f17111d2410151817131112140f230c1e2923292c25282a282625 +272a252f59d5900c09150f1e181b3c51515a4e5a4819121f08090b1c1c17 +1d1b0f072a808d8da9640e212a2a334047444449404f656a84756d66544e +51230d1b523624231c762813190d1b090c3761553223153256401a140b06 +0e161816161911081c1d070a020e1e4b050a0002021428000e0101101a13 +0b0a000a18110812190d0805030406060c14312967bea44e2f27191a2026 +241f1b1621000f1f001143b3f7ea4a1d030b0b14090e0c05040a0b060a11 +07030a000018270b050700031719001b00020c2119190707041413050e12 +171613141d26261f2320341e021a391700150f0c2c1e0e24191322576d64 +6867666665656464646461605f6064686a6a64636466666260616363615f +5d5e62655f616262605f5f5f5e5f61656664605c5e606366666562606261 +605f5f60626363605e5f636565635a5c5c595a5e5f5d5b595a5c5c595b60 +605d5a595a5c5c5c615e5b595a3c3c393a3b3d3d3e3f423e363234383a3d +3c39353334383b3e3c3b3b3b3b39383637383838393d40403d3937393b3c +3b3a36343436383938363939393b3e3c37393b3b38393d3e3b3b3a3a3c3f +4141403f3d3b3a3a3d404242424345413d3e424042413c39393a39363a3a +3635383b3a2f33383b3d3e3e403b3b3a3a393a3b3b3a3b3e40414140403e +3c3a3a3d3f403e403e4141403f40403b3a3938383a3c3b42413f3e3f4143 +45414140414343413f3e3e3b39393a3d3f3d3d3c3c3d3d3e3f4141404040 +404141454241434241444945424242444342404443433e3a3533323a3b3a +37383a38322f3634041c2c1f343008291411161519152013222e2829232a +2d322a140c171f0c1117181616171810230919211b212420242828262526 +2827305cd793110b160e1e191e41585b624d56481b19271111121e1a1115 +1103002c859292ad650f212d2d36464e4d4d555060767b96877e7563585a +28101a4f362a2b237d30181f121f0e123e6a5e3d2e1d395e48221c130e16 +1e211f1f221b0f21200a0d0511214e080d020505172b02110404131d160e +0d020d1b140b151c120f0e0c0d0e0e141b372f6cc3a852332c2223282c2a +25211e2b091b2a091a4bbbfff654270d15131c0e131009080e0d080f160c +080f05041d2c100a0c04081c1e0521050812271f1f0d0d0a1a190b14181f +1e1b1c252e2d2629263a24081f3e1b041a151335281529170b113d4f3e40 +3c3b3d3c3c3b3b3b3b383736373b3f41413c3b3c3e3e3a38393b3b393735 +363a3d37393a3a383737373637393d3e3c383435373a3d3d3c3937393837 +363637393a3c3937383c3e3e3c3335353233373836343233353532343939 +363332333535353a373432338c8c8b8c8d8f91939195938b878b8f909593 +908d8d90969a969594959695928f8f9092929294979a9693919193959493 +9693919295989998989a9996979a968f90959898989c9c99959495979b9d +9c9b9c9a9796969798999e9e9fa09c989ba29ca1a19b989a9b98999ea09d +9b9d9f9d94999ea1a2a3a3a5a3a3a2a2a2a2a4a59fa0a2a3a3a4a5a7a2a1 +a0a1a3a5a4a3a6a6a7a7a6a6a6a5a4a2a2a0a1a2a6a7aaa8a7a7a7a8a9aa +a9a8a8a9ababa8a6a7a5a19f9fa0a2a3a3a3a3a3a4a4a5a5a4a4a4a4a4a4 +a4a4a8a5a4a6a5a4a8afaaa9a8a9a9a8a5a3a1a1a09c9692919196969390 +93979a94958d7c373a2a0e23140012080b0c020e171209020a0900000100 +0014281b040514151615131011140d0f100300000a030910181b19141413 +0a182d3700021406040400002f535a5d69686e00010e03001a2b281d2014 +000000020c07010006192425282e343b43495952576289725c514536361a +0b0c233a2c290d7e2401110d110c0d2d59614a37394356330b0a0f17111a +1e17151919110e1f0401010e287207160a060e4c71120b01061c281d0f0a +011322190d1920120e0b07070301081137481b0e141a202e4436312f2626 +1f05131811101338301335523338261a0400070605040405060808140903 +0b0002253b1b191d0a0a1811001905000b40000003040320200716221f21 +201b1b1d1e1c1e2964f2f991141b171d16191f140b0e070e114d848898a0 +9b999898989797979391909195989a9b9793939696929397949594918e8d +90938f929493908e8f918f8f92969998938f8a8d9093949492909291908d +8c8c8e8f948f8b8b8f91908e8c89888a8a88898c8988888a8885888e8f8c +8887888a8a8a8d8a8786875e5e5d5e5f6164666468665e5a5e6263666461 +5e5e61676b6766656667666360606163636365686b676462626466656467 +64626366696a69696b6a67686b676061666969696d6d6a666566686c6e6d +6c6d6b68676768696a6f6f70716d696c736e73736d6a6c6b68696e6e6b69 +6b6b6960656c6f707174767474757575757778727375767677787a757473 +747678777679797a7a797977767573706e6f707275797a7979797a7b7c7b +7a7a7b7d7d7a7774716d6b6b6c6e6f6f6f6f6f7070717172727272727272 +72767372747372767d7b7a797a7a7975737171706c656160606666636062 +6665616262581f332f1d3b2c11261b1b1b0e1a2320171118170d0f1d161c +3141321716202122211d1b1c1f1c232a2223242d2222242626242224251f +2d3c410201150a0c120510406163697a797b0405120b0e334f5551564d37 +2a05050f0c05010c222d2d30353d444c5366626772967f685d4e403f2413 +152c464140218f310a181010090a28535b4434394656330b0a0e1610191b +141216130c0c1d0200000c2670051408040c4a6f100900041a261b0d0800 +1120170b171e1009050404020108143c4f24171f252e374736353831332a +0c13150b0a1038341a3754353a291d07000a09090808090a09071308020a +0001243a1a181c09091710001804000a3f00000203021f1f0615211f2120 +1e1e20211f232e69f9ff981b231c22191c231a141b161a17476f64636967 +6867676766666662605f606467696a6662626565616266636463605d5c5f +625f626463605e5f615f5f62666968635f5d60636667676563656463605f +5f616267625e5e626463615f5c5b5d5d5b5c5f5d5c5c5e5c595c6263605c +5b5c5e5e5e605d5a595a3c3c393a3b3d3d3f3d413d35313538393a383532 +32353b3f3b3a393a3b3a373436373939393b3e413d3a38383a3c3b383b36 +3435383b3c3b3b3d3c393a3d393233383b3b3b3f3f3c3837383a3e403f3e +413f3c3b3b3c3d3e43434445413d40453d41413b383a3a37383d3d3a383a +3b392e33393c3b3c3e403c3c3a3a3a3a3c3d3b3c3e3f3f4041433e3d3c3d +3f41403d403e3f3f40403f3e3f3d3d3b3c3d4040413f3e3e3e3f4041403f +3f4042423f3f3f3f3b39393a3c3d3d3d3d3d3e3e3f3f4141414141414141 +454241434241454a45424344464544424141423e3a3635353e3e3b38393b +3932353734052329203f2c0e241918180c1823211a1621201a191e11172c +3d2c11101e1f22211f1f22251f22271d1c1d271d1f23272826232425222e +3f430506170b0e120814486c72778280830d111e1615374d4e44463a211b +050c161008040c212c2f333b424b555d76727782a790786b5d4a46261514 +294446482896390f1e151610112f5d65503f414d5e3b1312161e1821241d +1b1f1d1311200502020f297308170b070f4d72130c02071d291e100b0214 +231a0e1a2115100f0d0d0a09101b4255291c2329313c50403e3f37393014 +1d2017161b423d224360414632260e070f0e0c0b0b0c0b0b0c180d070f04 +06293f1f1d210e0e1c15051e0a051045050508090825250c1b2727292825 +2527282629346fffff9e21261f2520252f28232419160931544241423f3f +3e3e3e3d3d3d393736373b3e40413e3a3a3d3d393a3e3b3c3b383534373a +373a3c3b3836373937373a3e41403b3734373a3d3e3e3c3a3c3b3a373636 +3839403b37373b3d3c3a3835343636343538363535373532353b3c393534 +3537373739363332338a8a898a8b8d90918b91918a878d929293918e8d8e +939a9e969494969796928d8f9193939395989b93918f90949593919a9693 +93969897969c9e9b969699938a8e959b9b9b9c9a969797989a9ea09f9ea1 +9e9b99989897979f9fa0a09c989ca499a0a29b999b9b979ba0a3a09d9fa0 +9d989ba1a3a2a1a0a2a4a5a4a4a3a3a5a6a0a1a2a2a2a4a6a8a2a1a1a3a5 +a6a5a3a6a7a7a7a7a6a6a5a3a3a09e9ea0a3a4a8a7a8a9a9a9a8a7a9a8a8 +aaababa9a6a8a5a19f9fa0a2a2a3a3a3a4a4a5a5a5a4a4a4a4a4a4a4a4a8 +a5a4a6a5a4a9afaca9a9aaabaaa7a59f9f9e9b9794939299969291939899 +95918979353c22041c030403000509000100000d00010a00050005040000 +120f1615141415131213191700080005000901141415110e0c0c0c160016 +330d1100000000002182ceecf2f2e7e41106000000081e1a111a1b132041 +91cee3d28a412c1d242c333a4144434747535f8065575e4a433e19000008 +4b66321677340b1315061a170504090b0c1600000b0d0b020b0a151a1414 +1e232066601c020a11175a281400090a3a60010a010b263325120905192a +1e111d23140507090c0600030a25100c19251d3f2958515743212730181d +2008101412341d2812222920170e0a0c0706090905060902130801090004 +2d4026303d29232718100c030347ae100b040404292708192a191e1d1914 +13161920183055a16d33101f1a1c23162022000310063d808591a19c9c9c +9c9999989894918f909397999a9a9693969794979b949595918d8c8e908f +929493918f9092909194999d9c97918b8c9195969695939392908d8a8a8c +8e948f89898d8f8d8b938b8b908f87888c8e8b8b8c8a878a90928e8b898a +8c8c8c8b898786865c5c5b5d5d6063645e64645d5a60656564625f5e5f64 +6b6f676565676867635e606264646466696c64626061656664626b676464 +676968676d6f6c67676a645b5f666c6c6c6d6b676868696b6f71706f726f +6c6a69696868707071716d696d756b72726d696b6b676b70716e6b6d6c69 +64696f71707071737576777776767879737475757577797b757474767879 +7876797b7a7a7a79777674716e6c6c6d6f7177797a7b7b7b7a797b7a7a7c +7d7d7b7775716d6b6b6c6e6e6f6f6f707071717172727272727272727673 +72747372777d7a7a7a7b7c7b77756f6f6e6b666362636969656264676662 +605d561f362c1838212320132024111a1210251219220d21152d29111d30 +2a302c2b2a2b29272b2e2b0d211c2621281b2a2623212022262932082e49 +21230a121416113996e0fcfffff8f31e100b11102a494c4753554d4f5a9f +d9eedc944b36272e363c434a4c4d5557636f90726367524b47220a09175f +8451328c4316181805171402000305091601010e100e050e0a151a14141e +232067611b02080f155a2815000b0a3a5e00080009263225110a041a291d +101c2213020106090500030d2a1814232f284a325b535b4c2c32391f1d1f +050d131538242c14242c231a110d0f0b0a0d0d090a0d061409020a00052e +41252f3c282226170b07000144ac0f0a0303032826061729191e201c1716 +191c231d355aa6753b1828231f231622280a1520103c6f64616a69696969 +686867676362606164686a6b69625f626360636a636464605c5b5d615f62 +64635f5d5e605e6062686c6b66615f6265696a6a6967676664615e5e6062 +68635d5d61636260665e5c615e56545b5e5e5e5f5d5a5d6365625f5d5e60 +60605e5c5a59593838373639393c3d373d3b3431373b3b3a36333233383f +433b39393b3c3b373236383a3a3a3c3f423a3836373b3c3a383f39363639 +3b3a393f413e39393c362d31383e3e3e3f3d393a3a3b3d41434241464340 +3e3d3d3c3c44444545413d41473a40413b383a3a363a3f403b3a3a3c3732 +343a3c3b383b3b3d3e3c3c3b3b3d3e3a3b3c3c3c3e40423c3b3b3d3f403f +3d3e3e3f3f3f3e3f3e3c3c393737383d3c3f3e3f4040403f3e403f3f4142 +42403f403f3b39393a3c3c3d3d3d3e3e3f3f3f4141414141414141454241 +434241464a45424445484746443f3f403d3b38373741403c38383c393535 +363607262317391f1e1c0e1b1f0d160e0d25141b2613241124210a142821 +272625272827282b2f2a0b1d171f1a2218282624212020232733092e4720 +2308101213113d9deafffffffffa261913171129424037403f373f57a2db +f0dd934a35262f38414a5157596266727e9f8273765f564e270a06125d86 +5436914a1c1e1f0d201d0b080f111420070a1519150e15141d241c1e262d +286b6320040b12185c2a17020a0a3a5f020b020e283727160c091e2e2215 +212718090b0f120d050b122e1b1725312a4c37645f66553238402525270e +161b1e412c372030352c211812140e0d10100c0d1009180d060e050a3346 +2b35422e282e1d120e05064bb1150f0808082d2b0b1c2e212627231e1d20 +232a21395eaa783e1b2722242b222f3616191d052853433b413e3e3e3e3d +3d3e3c3a3636353a3c4041403a373a3b383b413a3b3b3733323437373c3e +3d3a38393b39383d4044433e39383a3e4243434240403f3d3a3737393d43 +4038383a3c38363d343237352e2d33383737383633363c3e3b3836373939 +393735333232898a8c8e91939596918e8b8c8f949698949190919292989f +959696979695939290909093989b9d9d9795959798969595979695949598 +9a9c98999b9a9796969796989b9b9a99999997999c9f9f9d9a979c9b9a9a +9b9c9e9f9fa5a396939ba09ea1a2a0989ba0a09b9f9e9d9c9c9c9d9d9c9f +a2a2a4a7a6a29ea0a3a6a7a5a3a29a9da1a5a7a6a4a2a09f9fa3a8ababa9 +a9ababa8a8a8a69fa0a3a5a5a3a3a3a3a4a3a5a7a8a9a9aaacabaaa9a8a9 +aaaba8a09c9ea1a1a1a4a3a4a5a5a3a2a4a5a6a6a5a3a2a1a09fa5a5a4a2 +a1a3a7abafadaaa9a9a9a6a4aca6a09e988f8f959694918f909396988e95 +6e2f3a1c0319040f100d100e080700060007010006000000000000000207 +06040b0902040a09280d050700050c00080a00000302000000020e0b0000 +000000000949a2c2c9e6e9e7c151241326242023232a2747383d50568e98 +6331202e1f22272f333741494d4e57607f6357594e493d16000d6be6ded8 +006235111014140f2300100c110c13031c0a211b070d0e03000000090000 +304708040505213717000702102f39070701031f4337080206081f220b0c +1f23070605060604000000080600000d160f07131b160f1a20111b1a0f08 +0904020e0a0e1012131212100c0a02000a0b0301050c0f0001001d26231f +2e372a2b35320a21070653f9190304001a64770e27172b0a1d231b17141a +2543590d132e34432d2c1d2d2a110c120c000b29648f919ea1a09f9f9e9d +9896948b8a91908b8f9b9d9d9b99979697969b999492919292929693959c +9d9694969395979b9c9b97918c888d92928d8d928e8e8c898585888a8b8a +888584858c8f9191908f919395928f8d8d8d8b8987868d8d8d8b88878a8e +8989898988595a5c5e61636566615e5b5c5f646669656261626363697066 +676768676664635f5f5f62676a6c6c666464666765646466656463646769 +6b67686a696665656667696c6c6b6a6a6a686a6d70706e6b686d6c6b6b6c +6d6f7070767467646c716f71726d68696e6e696d6c6b6a6a6a6b6b6b7073 +737579777470727578797775746c6f737779787674727171757a7d7d7b7b +7d7d7a7a7a756e6f707272706e6e7073747678797a7a7b7d7c7b7a797a7b +7c756d696b6e6e6e7170717272706f7171747372706f6e6d6c7272716f6e +7074797d7c7877777776747c76716f696060666b696664646465675e6a4f +1d392a1f3d283639383d3d3739323a3039302733212d2e2e2a27282c312e +2e35352d323a3343221e22182327111e201918272f2c2e1f2c3b3d322724 +252b2a306bc1e0e5ffffffe676493b504e4c4f4d534c69575b6e73a9b178 +44303d2d2e323a3d414a555b5f697291736060514d411f0b2688ffffff26 +80481b1414140f2303100a0f0c170a231128220e16150c0306021203073b +510d08040421381d03120b1631390505000220463b0d0a0b102427101122 +240603020305030001020d0b0203161f170b16211c18232719201f120b0e +0909151112141718171614100e03010b0b03040d1417060903222b261f2e +372829332f001400004cf4170305001a64750923152a0a1d231b17151d28 +475d121833394933301d2b25100f1b1b10172b5772656a6d6b6a6a6b6a67 +66655f5f67676366706a6665636261626368666462616264636662646a68 +615e605b5d6165686763616565676c6c67676c686864615d5d6062646361 +5f5d5e636667635d5b58585757595c5c5c5b5957565d605f5d5a595c615d +5e5e5e5d333436363b3b3d3e39363334373c3e3f3b38373839393f463c3d +3d3e3d3c3a39363636393e4143433d3b3b3d3e3c3b3b3b3a3938393c3e40 +3c3d3f3e3b3a3a3b393b3e3e3d3c3c3c3a3c3f4242403d3a3f3e3d3d3e3f +414242484639363e434141423e38383d3d383a3938353735383633383b3b +3d3e3f3935373a3d3e3c3a393033373b3d3c3a38363535393e41413f3f3f +413e3e3e3b3435393b3b39383a393b3c3e40414242434544434241424344 +403834363939393c3b3c3d3d3b3a3c3f43444341403f3e3d434342403f41 +454848444342444445434c4643413d34343a413f3b3937383a3e38483305 +271b13332431333136332d2e272e252e261d2c172120201d1a1b20252322 +292823272e293c1b181b101b200d1b1d1614232823241a283634281c191b +23232d6ac3e2e8ffffffdf6f423246423f403f433b59484f666ea4ab7340 +2d3a2d2e3640464b59636667737c9d806f7060594c260e2383ffffff2582 +4e241d1e1e192d0c1a171c1822122d19322a181d1f130c0d0b190c0d3d52 +110b0909233a1b000e06122e37060a0408244b3e110c0f13282b14152729 +0c0a090a0b08050405100e0402151e1a16252d28212a2d1c24231710120f +0f1b191b1d1d1c1a19171311070510130b0b10171a090c0928312f293a43 +3536413a081d040253f81c0507021c66780d24183012252b231f1a222d4a +60151b363c49312f1d2e2b181824200d0b16374a36383e3f3e3e3e3d3c38 +39303237393238433f3d393736353636393734323132333540414349463f +3c3e3a3a3f4143423e3b3e3d4045454042474343413e3a3a3d3f4544403a +3633373837322e2c2b2e2e2f333434343331313037393b393635383a3634 +3434338b8c8e9193949595918f8d8d9094969796918f919292969b979695 +939292929291909194989b9c9c9a969394979896959595949495989a9c9d +9fa09f9b9897969597999997969696989b9ea0a09e9b999b9b9a9a9b9d9e +9f9da3a196939ca19fa4a4a19b9b9f9f9a9c9c9c9c9d9e9e9f9ba0a3a2a4 +a6a5a1a0a2a5a7a8a6a4a29d9fa3a6a7a7a5a49e9e9fa4a9abaaa8a8abaa +a8a8a9a7a0a2a4a4a4a3a3a4a5a6a5a6a8a9aaaaaaacabaaa9a8a9aaaaaa +a39fa0a2a1a1a3a3a5a6a5a4a3a4a6a4a4a4a5a5a5a5a6a6a6a5a3a2a4a8 +acafaeababacaca8a6aaa59f9d979090939794928f919298988f946c2f38 +1a04170814130f130e07080407021214122013202526252224282c291e23 +2a1f1002000a2a1d0a19000017000401030f0f05070d120e08000000050b +181516201b192b222820000504110f1005000f2f6453457e341203000804 +0821212830363a414750505b688b6d59544a4b3f1500002c80816500452c +001f090e1a1720192f1321170316253325181d1e0d0c0d0a06100a080706 +0f25452e44330d1909041a43341a2b18050806020702000a0c0000050308 +000002010005150000040e1216273f292012000001162312130d09080202 +0c101111100f0c09070707090707060605000e150003000f1c0b050e1a19 +18253310110b0c0e4a00180e000d3537001b321133060d19172514062c1c +121d0a29090c231d1aac4800170c040e235e91989ea1a09f9e9d9a989795 +8e8d93938f919e9ea09e9a98979897969493908f8e9090918f939a9c9897 +9a9797979b9f9e9b97908c8d94969494998f8f8f8d888686878e8d8d8a8a +8b8e9293928e8d8c8f9091908d8d8a898989888e8f8e8c89888a8c898a8a +8a8a5b5c5e6163646565615f5d5d60646667676260626363676c68676664 +63636363605f6063676a6b6b6965626366676564646463636467696b6c6e +6f6e6a67666566686a6a68676767696c6f71716f6c6a6c6c6b6b6c6e6f70 +6e747267646d727071716e68696d6d686a6a6a6a6b6c6c6e6c7275747678 +7773727477797a7876746f71757879797776707071767b7d7c7a7a7d7c7a +7a7b766f6f7171716e6e6f72757677797a7b7b7b7d7c7b7a797a7b7b7770 +6c6d6f6e6e7070727372717071727271717272727273737372706f71757a +7c7b79797a7a78767a75706e686161676c6a696665666768616b4e203b2d +2540364344444b4a45484447414f4e4b59474e4f504d4a4a4e524f464b54 +4b3e3223253f342434121930191f1e283e49474945474a4a49484a4c494d +423d443d3b4e47504a273334413e3c2e202e477660599e5833221a1f1918 +2f2f333a40444a535e616e7c9d7e625a4d4d431f101c53b2bda12669440c +260d101e1e27203315231e0c1f2e3c2f2227281a191c17151f191a161116 +2848324c3f1d291a102347361b2c1b0a10100d15100c181704040c080900 +00010200091904040a14181c30472f26180601081e2b1a1b1511100a0913 +1415161512100d0b0b0b0a080706060805181f0a0c0216200f070d191817 +222f060400060948001c120111373700193012360610191a261709302018 +22102e12172c221aaa4700201b141a254f746d6b6f6d6c6b6a6a6867655e +5e646460656d6966646361626364636463615f5f62646461636868646164 +5f5f61656b6d6a67636061686a686a6f65656462605e5e5f6564625f5e60 +63686764605d5c5c5d5e5c5c5959585857585e5f605e5b5a5c5f5d5f5f5f +5f333436393b3c3d3d39373535383c3e3f3d38363839393d423e3d3c3a39 +3939393736373a3e414242403c393a3d3e3c3b39393838393c3e40414344 +433f3c3b3a383a3c3c3a3939393b3e414343413e3c3e3e3d3d3e40414240 +464439363f444242423f39383c3c37373735353637373634373a393b3d3c +3837393c3e3f3d3b393333373a3b3b3938323233383d3f3e3c3c3f3e3c3e +3f3b34363838383838393b3d3e3f41424343434544434241424343423b37 +383a39393b3b3d3e3d3c3b3c404142424343434344444443414042464947 +444444474747454a4542403c35353a42403d3a38393e403f4d3409281a14 +322c3d3e3c403e383a3437303f3f3c4a3a414344423f3f4347443b40483e +3124171c362c1b2b08122a151a1a21363d393b3c3f403e3a383b3e3e453d +3a423c3a4a4047401d2626312e2b1e121f3a6a574e934e2a1a111714152f +3037434a50596167687583a788716a5e5c4f28131a4ea9b3992369481330 +181c2928312a3e212f2815283745382b30312221231f1c261e1c19151c2d +4d354e3d1a26140c1e46351f31200e13120f16110d1b1b0806120c0e0505 +0707040c1c07040a14181a2d493b342612090e212e1c1d1713130d0f191d +1e1c1917130e0c0c0c0e0c0f0e100f0b1a210c11071e291a131b27282733 +3e110d080a0f4b021d1300123639001a33173d0e1721212b1c0e33231825 +10311113271e1aad4c07271e131010304a3a363e3e3d3c3d3c3a39373030 +36383238423f3e3c3a3838393736363533313131353d3d3f45433f3d403c +3a3d3f4445423f3c3b3c43454344493f3f413f3c3a3a3c4546403c373636 +3836332f2d2e2f3233353432313030323238393c3a373638383635353535 +8d8f92949695949393918f8f9294959598918d9093949496999793908e8f +919291919295999b9b9a99969393969897959393939395989b9c9c9ea1a0 +9d9a989897999a99979595969a9c9fa1a19f9c9a9b9a9a9b9c9d9e9f9ca0 +9e96959da2a0a3a3a09b9c9f9e9b9a9a9b9c9e9fa0a09da2a4a3a4a6a4a0 +a2a4a7a9a9a7a5a3a1a2a4a6a7a7a7a79b9ca0a5aaabaaa8a7aaaaa8a9aa +a8a2a4a5a4a2a1a2a5a7a7a6a8a9aaabababacabaaa9a9a9a9aaaba5a2a3 +a4a1a1a3a5a6a7a7a5a4a6a7a6a6a6a7a7a8a8a8a6a7a6a5a4a6aaadafae +adaeafaea9a6a8a39e9b9591929498969391929498999191673037170813 +0710100c100e0708120c06110e080e03010a0d0e0c0c0e1018101010131e +1f110e002315041300040205060c1a180d0b19150c0606090f141d28281e +202c3232302d2e2a382922212e0f00101f24060c13031a211a1a13192122 +252f373b3f4252525b627d5c474746473a14030002291308004153333224 +313c412f392b1b35242f3b27091e2217382a0f2d060a1c18021322101459 +58624e1410111323524c5e5f21060f0e1509140c0d0e07090d08080d151e +1e160e0c191219241d101f3d88d3ecf8f99e2d2316151516140e0d141414 +1515171716151006020000000000000713000c0314293c46250000131917 +0d03030b0e271300000015291f00060c09010c111f3604230c0001000d0c +100218010c196534060c0a070f1a4f919f9a9e9c9a999997989a9a97989c +9e9a9fa7a39f9d9b9a989998939393908f8c8f91949394999b9a9c9e9a96 +92959a9a98969a9895979a9a979796969795908d8a8b9697989594949799 +97908a837e7c7b80898c8a878687888a8f8e8f8d8a89898b8a8a8b8c8c5d +5f62646665646363615f5f6264656569625e61646565676a6864615f6062 +6360606164686a6a6968656262656766646262626264676a6b6b6d706f6c +696767686a6b6a686666676b6d707272706d6b6c6b6b6c6d6e6f706d716f +67666e737170706d686a6d6c696868696a6c6d6e6f6e7476757678767274 +76797b7b79777573747678797979796d6e72777c7d7c7a797c7c7a7b7c77 +717172716f6c6d70747677797a7b7c7c7c7d7c7b7a7a7a7a7b78726f7071 +6e6e7072737474727173737473737474757575737473727173777b7c7b7b +7c7d7c797678736f6c666263686d6b6a6866686769636a49213a2a293f39 +4849484e4e494c574f464e484144311c1d201e1c1b1d1f27202023283538 +2a21133a2f1f311b1f1c2225344c54515259535050555a5e5d5d60554543 +4c52524d4b4c495c4f4847522f1a252e2f0c1931263b3f353128292f2d30 +394145484e60636d748f6c534e4c4d42231d222f615247206971463f2e3a +464e3c4635243e2d394531132b2f2445391e3e151b2d291526311b1d6061 +706028262725315c5468682c141e20271d2820212017191b130d101a2323 +1b13111e1a212d261928458fd9f2ffffa5352b1e1d1d1e1b151418171718 +1818181716140a060100000100010f1a05130a182d404a2700001518160a +00000a0f2c1b0803031f3327060a100c060f16223b072811010607151418 +0c2b14182269370d17191519193e6f6f667272706d6a686767635d5d6160 +5c5f6968676563626263645f6263635f5f62666968696d6c69696b676361 +656b6e6c67605a575b5e6060626265666663605f5e666563615e5f626667 +656463636669685f5c59575657585a5f6162605c5b5b5e5e5f6061613537 +3a3c3e3d3c3b3b3937373a3c3d3d3f3834373a3b3b3d403e3a3735363839 +3737383b3f4141403f3c39393c3e3d3b37373737393c3f4040424544413e +3c3c3a3c3d3c3a3838393d3f424444423f3d3e3d3d3e3f4041423f434139 +3840454341413e39393c3b38353534353738393736393b3a3b3d3b37393b +3e40403e3c3a37383a3c3d3d3d3d3132363b4041403e3b3e3e3c3f403c36 +38393a3836373a3d3e3f4142434444444544434242424243433d3a3b3c39 +393b3d3e3f3f3d3c3e414344444545464646444544434244484a47444647 +4a4948454843413e3a36373b43413e3c393b3e41414b310c271718302e3f +403e41403b3d453e353e3932362615191c1b19181a1c241d1d1f232f3224 +1b0d32261829161a191e202c434842424b46413f42474b4c4f554e403f49 +4f4f4843444152443b3a46220f1c27270812291f32372c2923262f2f3442 +4b51575c696b777e9b79635e5c5b4d2a1e1e2856473e1b68734c4737434f +56444e3e2d4736424e3a1c33372c4d4025451c223430192a362124686673 +6227242525315e576a6d30172122291e271f202017181c1511172027271f +1714211c232c2518274899e7feffffab382e201f2021211b1c2120201f1d +1d1c1918150b090407070a070712200b191021364b55340c0e2428241305 +070f142f1d090402203229060b11110c161c29410e2e17050a0918161b0d +250e141f6a3c131d1e151107224a41364142403e3e3c3c3c3a3535393b35 +3b44464442403f3e3f3f3a3a3b3a3736393b3e3b3c40403e3e403c363637 +3d3f3d3b3a353236393a393a3a3c3d3c393634354242413c3837383b3938 +353434373b3a3734312f30313234393a3b39383737373735363737909295 +98989794929492919294959594968f8b90969695959a9794918f8f8f9091 +929396999a999791969997969797959191929396989b9d94979b9d9c9a99 +999b9c9d9c999797989b9d9fa0a09e9c9a9a9a9a9b9c9d9f9f9a9d9b9697 +9ea2a1a09f9d9c9d9f9f9e9a9b9c9d9e9e9f9f9fa3a5a4a4a5a39fa3a5a7 +a9a9a7a4a2a4a4a4a4a5a6a7a7999ca2a7aaaba9a7a7a9aaa8a9aba9a3a6 +a6a4a1a0a2a6a9a9a8a9aaabacacacacacabaaa9a9a9a9a7a3a2a4a4a2a2 +a4a6a7a8a8a6a6a7a8aaa9a9a8a7a6a6a5a7a7a8a7a7a8acafb0afaeafaf +ada7a3a6a39e99949294959895929293939898918d5f2e330f090c010909 +050906010406010209080a0c0809161c1d1c1a1c1c0c191f110d2428101d +70415e2e00030003030009181507070c0a05040507080b1b1b180c08151a +1021221a120f00000803090f0d0b0b092907082732342e140b201f232e37 +3b3d3f4a4f585b7151444c484130130c060221222b00386f84528b8c640f +2c578c4c578c355080350015975b6641ab6187817a743503374131231e5b +10000c110d362e193a222f2d040b07110b0a0b0e14181717170b00001016 +11070b141b1c1e28342731485750403124251d1f252422211f1d1e202123 +2223232111111412181c1012141100070616332fa3f5fbfbbb68484f4241 +18000d16000b060002000001000a04000d1d17212b1601221200090e1f01 +0f162751342c0005030a0b3680978f9c9a9a989697989b9d9b9ca0a09fa3 +a8a19c9a9897959694919395938e8c8c91969697989a9a9a9ba29c969599 +9b9998a19d989a9da1a09f9c9d9d9b979493949b9c9b9996949493948e87 +807976757d84888786858688868e8f8f8e8d8b8a898b8c8c8d8d60626568 +68676462646261626465656467605c61676766666b686562606060616061 +62656869686660656866656666646060616265676a6c63666a6c6b696868 +6c6d6e6d6a6868696c6e7071716f6d6b6b6b6b6c6d6e70706b6e6c67686f +73726d6c6a696b6d6d6c68696a6b6c6c6d6e70757776767775717577797b +7b79767476767676777879796b6e74797c7d7b79797b7c7a7b7d78727373 +716e6b6d717678797a7b7c7d7d7d7d7d7c7b7a7a7a7a74706f71716f6f71 +73747575737374747876767574737372747475747475797d7d7c7c7d7d7b +777376736f6a656365696b6a6967676767686366411f36242b3a39474847 +4d4d484b4d444146413e3e2d18171c1d1a18171a0a191f12112a311a2981 +5675491c20161d2223344b535051535152555a5c59555b5043302833382a +36332d27261515231d1e201a14100932202946504d45271b2e2a2e394145 +4749565d696d836150554f4a3e272b30355f666d2065919d659a9b75223f +6a9d5b6499425d8d420e24a66a7752be749a948f8c4d16464b3b302f7029 +1b282922473d2b4c3543421c23212b25232424282b2722201406091a201b +11151e232427303c2e374f5e5748392c2d25272c2b2928231d1c1f202223 +242422151517151b1f14171c18010e0d1a3733a7f9fffebe6b4c52474620 +071824051b18121207080d03110b0114241e28321d08291b0712152a1626 +2733593c370c1817190f2c6670637474726e6a68676866616062605d6169 +6b6a68666565666664676969646265676e6d6c6d6c6a6a6b726c68696f73 +716c6c635e60666b6a696769696764616061646464626161636769696865 +646366665f5b5a5958595859616262615f5d5c5c6061616262383a3d4040 +3f3c3a3c3a393a3c3d3d3c3d3632373d3d3c3c413e3b3836363637373839 +3c3f403f3d373c3f3d3c3d3d3b353536373a3c3f41383b3f41403e3d3d3e +3f403f3c3a3a3b3e40424343413f3d3d3d3d3e3f4042423d403e393a4145 +443e3d3b3a3a3c3c3b3536353637373836383a3c3b3b3c3a363a3c3e4040 +3e3b393a3a3a3a3b3c3d3d2f32383d40413f3d3b3d3e3c3f413d373a3a3a +3735373b3f404142434445454545454443424242423f3b3a3c3c3a3a3c3e +3f40403e3e3f4247474746454444434545464545464a4c484547484a4846 +424643413c3937393c42403d3c3a3a3e404147290a23131b2d2e3c3d3b3e +3d383b3b3330363231322515191e1f1d1b1b1d0d1b2114122a3019257b4f +6d42141b111a1d1d2b42463f4043414042454746444d463c2c2531362731 +2d2922200f0c1a14171a13110c092f1a223e48473d23182e2c323f4a4f53 +55626673778f6e60666159492e2d2c2e5459631a6292a16ba1a27c284570 +a4626ca14a65954a152bad717e59c47aa09a9490511d4d55443836752d1e +292d254e422f4e3944431c2320282220202126292626251b0b0e1c221d13 +161f252626323f384359665d4b3c2f2f272a323131302e27272728282728 +262416181c1c22281d1d1f1e07141323403eb2ffffffcd7a585b4b4c230c +1a25051b18121208090d041711071a2a242e38230e2f200d171b2c111e21 +315b3f3d111c161200114345344343413e3d3c3c3d3d393b3d3c3a3e4647 +474543424142423d4042413c3a3c3d3d39393a3a39393b423c37383d403e +3d423b36383d3f3e3d3b3a3a38353231343d3f3d3b3736383a3c3c3a3839 +393d3d35323130313232323a3b3b3a3b3938353637373838929497999997 +94929493939496979694938c8a91989997979897969593918f8e92939598 +9a9a97948896a09d969496969191939497999b9c93969a9b9a9998999c9d +9d9b999798999c9d9e9f9e9d9b9998999a9c9d9e9f9f9a9a9997999fa2a2 +9d9a9a9c9fa0a1a19c9d9e9e9e9d9c9ca0a4a6a4a4a5a39ea3a5a7a8a7a5 +a2a0a5a5a4a3a4a4a6a69b9ea4a8aaaaa9a8a7aaaaa9aaabaaa4a8a6a4a1 +a0a2a7aaaaa8aaabacacacabacacababaaa9a8a7a09ea0a4a5a2a3a7a6a8 +a9a8a7a6a7a9a8a8a8a7a6a6a5a5a6a7a8a8a8aaadafb1b0afaeaeaba4a0 +a5a49e97939396969694929192929696938a562d310c0e09000505010606 +01040100050606120d060b1a2123221f21222c282011195294ad36352045 +33070f0e0100000114120608040508060201040a0a121a170d1421272531 +2a221f2125371c33351e3d59514e4e3021111a241513232025303a3e3f41 +4247596c92755d564a3b29110900002b1924002566804b994159855e7830 +1f317b5b896109191c6f272c006d336e7b7d80441030435554515c15000b +0b094e573751282620000d0a090a08080f13161d1a1e1f190a000005130a +060e171d262f374d4033444535382c1d202a292b2c232829292928252422 +1f1c1b1a120f0e090a02161230281824241b16487849193451394c381408 +00150b00001c18080d0c04080e0e0e13260018170c1c130f1a0017150a0e +60358409030001001a628484999d9c9b9795979a9b99999998989b9e9a96 +93908f8f8f8e8d9092908b88888a91939697989b9c9c9a958f8d9092928f +908a85858b9497969c9e9d9c999a9c9d9f9d9b968f8a8886898987848180 +848684868889888785848e8e8f908f8d8b888c8d8d8d8d62646769696764 +626463636466676664645d5b62696a6868696867666462605f6162646769 +69666357656f6c656365656060626366686a6b6265696a696867686d6e6e +6c6a68696a6d6e6f706f6e6c6a6a6b6c6e6f7071716c6c6b696b7174746a +6767696d6e6f6f6a6b6c6c6c6b6a6b71767876767775707577797a797774 +7277777675767678786d70767a7c7c7b7a797c7c7b7c7d79737573716e6b +6d727779797b7c7d7d7d7c7d7d7c7c7b7a79786d6b6d71726f7074737576 +757473747576767675747473737475767676787b7d7e7d7d7c7c79747075 +746f686464676a696967666666656665633a20352130393d4c4d4b50504b +4e4841443f3a4038230f111618151212131d1b1508134d8fae3f44335c4e +242c2d1e1d1f304c54535953575c5e5c59565348444236272d3a3a2e3630 +2b2a2d34462b3f3e223d574b4f644f3e2c313925222f2b2e394346494b4c +53677ca4856a6256493b2d31303a6f616b1a568d9e63ae56719f78924832 +438c6a9870182a2d823a3f128248839095995d2443516365657734202e29 +24646e506b44423e1f2d2a292a27252a2e2f332c2d2e28190b0b131e1511 +18212730393e54473a4b4d3d403425273130323227262626262524232320 +1d1e1d1714120d0f071b17342c1c282b221d4f7e4f1f3c5c475947261c10 +2d231714312d1c211e0f111717171c2f02212015271c1a23052a28191868 +3f911e211a1f12235e736a7373726f6b696869686664646361636a6f6f6c +6b6a6a6a6c6b6e706e6a6767686868696869696a6a6a656161686c6c6b70 +6c65656a6e6f6a6e6c69645f5d5e60626466666566686a6f6e6a645d5958 +5b585a5c5d5c5b58576161626362605e5b61626262623a3c3f41413f3c3a +3c3b3b3c3e3f3e3c3a3331383f403e3e3f3e3d3c3a38363538393b3e4040 +3d3a2e3c46433c3a3c3c353537383b3d3f40373a3e3f3e3d3c3d3f40403e +3c3a3b3c3f40414241403e3c393a3b3d3e3f40403b3b3a383a4043433b38 +383a3c3d3e3e3738373737363533393b3d3b3b3c3a353a3c3e3f3e3c3937 +3b3b3a393a3a3c3c31343a3e40403f3e3d40403f40413f393c3a3a373537 +3e42414143444545454445454444434241403836383c3d3a3b3f3e404140 +3f3e3f4345454544434342424344454545474a4a494648474946433f4544 +413a38383b3d403f3c3939393c3e4346240d2410202b303e3f3c3f3f3a3d +363033302d352e1e10161c1e1c19191a24221b0d175193b03e412f56491f +27271a181726414641463e4145464341404039393a31242a37382b322e28 +26292f41263b3b213f584f51614939252b34221f2f2d33404c515557585f +7489b2947b726656453130293062535d10508a9e65b15973a079934a3647 +93719f771f313488404518874d8895999e622d4a5c6e6f6e7e392432312b +6f76546c47433e1e2a2724252120252729302e32352d1e0e0e162217131a +2328323b465c4f405150404237282d37383c3e3333312f2f2c2928272421 +23221d1a1b16150d211d3d352531352c27598a5b2b47624a5f4a2a1d112d +231714322e1d222013161c1c1e23360928271c2d23202a08282416176a41 +97232317150006394739444342403c3a3c3e3d3b3c3c3b3a3e434544413f +3e3e3e3f3e4143413d3a3a38343132323536373939343030373b3b393f3a +3434373d3e393d3b39352f2e2d3136393a38353435383e3f403d3b3a3d3b +33333536353431303a3a3b3c3b3937343738383838949597999997959493 +93949699999795908c8c94999a999a969696969592908e929396999b9a95 +918596a29d9595979692939496989a9b9c9b9d9d9c999797979a9b9a9996 +9697999d9d9e9e9e9c9a9997989a9c9e9f9f9f9a9997979a9ea1a29b9898 +9da0a0a0a29c9d9e9f9e9d9b9aa0a4a6a5a4a6a49fa4a5a7a8a7a4a19ea6 +a6a5a4a4a4a5a59ea2a7aaaaa9a9a9a8ababa9aaaba9a3a7a7a4a1a1a3a7 +aaaaa9aaabababababacacacabaaa9a7a69c9ca0a5a6a3a4a8a6a7a8a8a6 +a6a7a8a3a4a4a5a6a7a8a9a5a7a9a9a9aaadb0b2b1aeadacaaa4a1a7a6a0 +97939498969593929192929494988a5130310a1206000101000202000408 +07110912291c06111e2528282526261c141e261d203d5455872564dc2c04 +000c030001120e020505080a04000005111923201614171a1d2936292928 +2f2221235077656340345323150e0000000008242328323b404348474a5d +7db08f624a4b38250d0100001e271e00224c0b00091b343e39393a315d4f +33663f0b1b03327d5d314620283b316775731f1b877f7e712200030e1e71 +767b7e350606101b0a0d130f0b1212131d170708140a03357c4624111b1d +111930413a5b634248460e2616202b24262b2124282b2d2f2c2a291d2116 +0c141c2e483608191c362f1e243b4146646e3428682f14383d3334072590 +53525b4b2632664747573c51561d261714342e2340282c0d350f3b733c83 +001100060314507b8a949b9d9c9795969896959493919195959792908e8d +8d8f9090919293928f8e8d959b9d9da0a4a4a29c9994939496999797928d +88898e8d8c9a9c9a9896969899989797938f8a87878b8d8f8e8988898983 +85888a8b8985838d8d8f9192908c898c8c8d8d8d64656769696765646363 +646669696765615d5d656a6b6a6b676767676663615f616265686a696460 +5465716c646466656162636567696a6b6a6c6c6b686666666b6c6b6a6767 +686a6e6e6f6f6f6d6b6a696a6c6e707171716c6b69696c7073726865656a +6e6e6e706a6b6c6d6c6b696971767877767876717677797a797673707878 +7776767677777074797c7c7b7b7b7a7d7d7b7c7d78727474716e6c6e7277 +797a7b7c7c7c7c7c7d7d7d7c7b7a787769696d7273707175737475757373 +747571727273747576777375777777787b7e7f7e7c7b7a78747177767168 +6465696a68686766666665646a633523352136383e4e4e4a51514c4e4f47 +4b3d3d513d1a1113181b191615170d07131d141a38545b933578f7492317 +2c2824354e55535a5a60646158545456514e402f282a2a27293228292a33 +282a295478655e392a523732291311110617302f313b44484d525154698b +c09f7257584a3d2e2d272f6671653c55732b0c2135505c57555449726246 +77521e2e16479275465e3841534a838e8732299891948e451d28303c8c91 +989c542528323f2e3036302a30302e362f1c1d291d16478b55321f26271b +23394841626b4a504e162e1e27322b2c3123202225272a2929281e251911 +1923354f390b1c213a33222b42484d6d763e307540274b524b4e213fac6f +6b74643e4a7b5655654a5e632a3321213e382d4a32391d45194077418c0e +2a1921181c4d6c6f707173726d6b6a6c676665646262646871716f6d6c6c +6b6c6a6b6c6d6c696663656769696a6e6e6c67666364676c6f7278756e67 +676967616e6c67625d5c5e6164676869676666676b6b6a635b555356575b +5e605f5d59576060626465635f5c61616262623c3d3f41413f3d3c3b3b3c +3e41413f3d3733333b404140413d3d3d3d3c39373538393c3f41403b372b +3c48433b3b3d3c3637383a3c3e3f403f4141403d3b3b3b3d3e3d3c39393a +3c40404141413f3d3c38393b3d3f4040403b3a38383b3f42423936363b3d +3d3d3f3738373837363431393b3d3c3b3d3b363b3c3e3f3e3b38353c3c3b +3a3a3a3b3b34383d40403f3f3f3e41413f40413e383b3b3a3736383e4241 +42434444444444454545444342403f3434383d3e3b3c403e3f40403e3e3f +4040414142434445464244464646474a4b4a474746474543404746433a38 +393d3d3e3d3a3939393b3e49461f102411282c303e3e3a3e3e3a3d3d373c +303348361813191f22201d1d1e140e1922191e3c565b913476f2441d1027 +211c294245404543474b463f3b3f4344443b2b27282a2829312627293226 +2727537a6762403257352d240f0c0d0314302f36424d53595e5d607798cf +ae8268685847332c2025586257324e702a0d2336515c5756554b75684c7e +5824341c4c97794b623c45574e87938e3932a29b9f964b25303946979a9c +9e562727313b2a2a302922282827323121222e231a4b8e58352228291d25 +3e4e47686e4d53501831212d3a35383f322f30313131302e2d22281e151f +2b3f5942122327433c2b334c52577681483b7d472b4f554d4f2240af726f +7868424e7e5b58684d646930392a29474137533c3f1d441a437a4593152e +1a1a09052c4542403f41403d3b3b3f3b3a3b3a38383c3e423e3c3a393939 +3a393a3b3c3b383533343537393b4040403d3b3a3a3e4245464c49423c3a +3c3a34413e3a34302e303235393a39363433363c3e40403a383939343336 +383836323039393b3d3e3c38353737383838959696979797969691929498 +9b9b99978f8e91979a98989b95959493929190909394979a9c99948f8b97 +9c9794999a95949597989a9b9b9ba0a09e9b98969799999a9a989797999b +9f9f9f9f9e9d9b9a97999b9d9fa0a0a09c9997999d9fa0a19d99999ea19e +9da09a9c9e9f9f9e9d9b9fa4a6a5a5a7a5a0a6a7a9aaa8a5a19fa8a8a7a7 +a6a6a5a5a3a6aaaba9a8a9aaaaacacaaaaaba8a2a7a6a5a3a2a3a7a9aaa8 +a9aaaaaaaaa9acacacacaba9a7a59d9ea3a8a7a3a4a8a5a7a8a7a6a5a6a8 +a3a4a4a6a7a8a9a9a4a6a8a9a9aaadafb2b0adadadaca8a6a8a9a2989296 +9996959493939393959398864b2f2e071603000000000000000306041310 +2d5e49210f181f23222020222c221e19131f343d443f282d500800171106 +0002130c000001060603000005110e2a220b14211e1f2c34252d282f1c20 +1a152336765c2f2b422710000c0b000822222831383d444c50525b6b8f6f +504444382407000000161d17000d600008170a00000013160f0a00000b0b +0d05001004000713130a0b000300140013551f2b6421000108084328103a +320a00040606080f080512120e171d12172314000d3437261e242016243e +3f544b3c4036272e1f172c3824222d26171c23292d2c2b2a232b1b286489 +9bbeb8462708060b17342a47565f6443354f67547038070c060e8e447957 +4a2e022e7b162f91153c850b0f1684604378398e21b3312a6c4d695c2506 +13181c4c7e9993989d9d99959597959594918e9092949897949392939599 +9b9a9da2a5a7a29da3a9aaa8a9aba8a3a8a6a49f9c9b9ea1a3a6a39d9b9f +9e9a9d9c9b95918e8e8c8a8b8f939496979a9a9fa09c938b898785848688 +8a8986858a8b8e929493908a8a8b8d8e906566666767676666616264686b +6b6967605f62686b69696c6666656463626161626366696b68635e5a666b +666368696463646667696a6a6a6f6f6d6a676566686a6b6b6968686a6c70 +7070706f6e6c6b67696b6d6f7070706c6967696d6f70716a66666b6f6c6b +6e686a6c6d6d6c6b6a707678777779777278797b7c7a7773717a7a797978 +78777775787c7d7b7a7b7c7c7e7e7c7c7d7771747372706d6e727679797a +7b7b7b7b7a7d7d7d7d7c7a78766a6b707574707175727475747372737571 +727274757677777274767777787b7d7f7d7b7b7b7a78767879736963676a +6a68696868676766666b613024351d3a373e4c4c484f4f4a4c4941473b50 +7b5f2f13181d1e1c1a1a1c261d1c1913203843494936416a27203a362f29 +3a535651585b606360585150503e4e381a1e2a2623262c1d28272f1e221b +1622347155252a54412916211e08142c2c313a41464e56585967789f7f60 +54544b3f2d3134396265592f3c870e222f241319092f30271f12061e2022 +1a11281c151f2c2c2624151c18270c2263304281441c262a295f432d5951 +2920262a2a2b322924302d2832392e333c2c15224749352c322b212d4746 +5b5244483e2f36271f333f2a28332810141b2328292a29242f1e2d6b92a4 +c5bb492a0b0a0f1e3b31505f696e503f5e7a6c885020251f2aaa60957366 +471b458d253ea0244b941a1c24916d4f85459b30c1392b6748675e2e111b +191033596e6a707575716d6d6f6b6b69666365676971706d6a6968686767 +6565686b6a645e63696a68676967626869686766686c6f6d6e6b6565696b +676c6c6b68646363666a6d6d6a65615d5c5c6164625d59595b5b5d5f6160 +5f5c5b5e5f61656766605d5f606263653d3e3e3f3f3f3e3e393a3c404343 +413f3635383e413f3f423c3c3b3a39383737393a3d40423f3a35313d423d +3a3f403b38393b3c3e3f3f3f4444423f3c3a3b3d3c3d3d3b3a3a3c3e4242 +424241403e3d37393b3d3f4040403c3937393d3f40413b37373c3e3b3a3d +3537373838373632383b3d3c3c3e3c373d3e40413f3c38363f3f3e3e3d3d +3c3c3a3d4142403f40414042424041423d373d3c3d3b393a3e4141414243 +43434342454545454442403e35363b403f3b3c403d3f403f3e3d3e404041 +4143444546464143454646474a4a4a464646484747454849453b373b3e3d +3e3e3b3b3a3a3c3f4a461b1225102e2a2f3c3c383c3c383b38323a314976 +5c2f141a2022201e1e202a211f1b152239434c4a374067221b342f271f2d +45453d40414448433e373b3d324435171f292824262a1b25252d1d211d18 +2739775d2e30543e25131c1a05122d2d36414a4f586265697788af8f7064 +645948302e2c2d55574d2636840e23312514190930312922170b2425271f +162c2019233030292819201c2d13296c384a8748222c33326b4e335c532b +1f252626252c221c28241f2d3a3237403019274b4d382f352f25324c4c61 +58474b4031382a223947363641372023282d2f302f2e283223317199adcf +c4523314131828453b5968727758486580708c542429232dae6499776a4c +204b912a43a529509b21252d9a765b8e51a333c13b2f6d4f726a37171e14 +041f3f4c3c3c41413e3a3a3e3b3b3c39383a3d3c3a353432313131323533 +34383b3b35333d454645454949444c4d4e4c4c4d53565557544e4b4d4e48 +4b48453f3b383839393b3d3c39373535373c403d393635363536383a3a39 +34333738383c3e3d3834353638393b9595959696969797909294999c9d9a +979091959a9a96979a9593918e8e8f91929394989b9c99938e9298969093 +9d9c94969798999a9b9b9b9d9d9b999696999c9b9c9c9a99999c9ea1a1a1 +a09f9e9d9c97989b9e9fa0a0a09d9996999d9f9fa0a09b9a9fa19c9a9d98 +9a9c9fa0a09e9d9fa4a6a5a5a7a6a1a8a9ababaaa6a2a0a9a9aaa9a9a7a6 +a5a6a9ababa9a8a9ababadadaaaaaaa8a1a6a6a5a3a3a4a7a9a9a8a9aaaa +aaa9a9acacadacaba9a6a59fa1a6aba9a4a4a7a5a6a7a7a5a5a6a7a7a7a7 +a7a7a7a7a6a3a5a8a9a9aaadafb1afacacaeafadacaaaba4989396999896 +959594959496949783462d2a021400000201000203020909040d052b6442 +0810151c201f1d1e1f111b16061d5d7f702b413949102516000300000012 +0d0202000006090505070f26645e2612171a26262918231619112915444d +174055504b422d1902030000171d1e252d3338414d4f53574d5b40455c3d +37220206100b241e3d00149400000f070c070f05240e0f071f160112091b +01131313150a180b140c251b1b222707121b080a2017012c040c1d1e0c13 +14020b0d160d0c22241e2513130f0c1118140a0f212c21141320293e534c +413d1e0a1e1e1e3e492b25343110151b20221f1a171c2616399ab79a9dc4 +4b3a2a1d15182c404c4f524b30355f7b5c7a45110210004e0462173b7747 +6e26153587438e540a1c07385888ae434525ac6d35665ca0642902101a16 +3c7197939ba2a29e9a98999a9b9995939597989a9a9999999b9fa1a7a9ac +b5bdc1bdb3aeb0b1aba8a8a29a91918d867c78797f78818789909ca4a5a9 +aaaba8a49e9c999594999c9d9d9d9e9ba1a4a299918d8b88868688898988 +88898a8e929695918a888a8c90926565656666666767606264696c6d6a67 +6162666b6b67686b6664625f5f6062636263676a6b68625d6167655f626c +6b6365666768696a6a6a6c6c6a686565686b6c6d6d6b6a6a6d6f72727271 +706f6e6d67686b6e6f7070706d6966696d6f6f706d68676c6f6a686b6668 +6a6d6e6e6c6c70767877777978737a7b7d7d7c7874727b7b7c7b7b797877 +787b7d7d7b7a7b7d7d7f7f7c7c7c7770737372706e6f727678797a7b7b7b +7a7a7d7d7e7d7c7a77766c6e737876717174727374747272737475757575 +757575747173767777787b7d7e7c7a7a7c7d7d7c7a7b756964676a69696a +6a69696866666a5e2b22321a3a34404f4e4a51504c4d473a3b2846774e10 +161b20211f1d1e1f111c1a0c2366897a3349475d2a4439232b25243a565c +575e585d63635e554c454e7f6d2c13171a241d1f0e1b1218112915444c15 +3b50484b54462f16160e042327282f363c414b55555a60596850556c4e4d +3f2a3a4f55716279283eb61911272128252d213e23241c342b192a21331a +2c2c2c312634272e24392d292d341627372a2d43381f471c27393a2a3134 +222b2d352a2a3b3e353e31322e292d312c1f22333b2f1f1e2932455a5449 +4526122626264550312b3a33090d131a1c1c1918202b1b40a3c0a3a4c64b +3d2d21191f334955595c583d426e9074925d291a290f671d7b3054905d85 +3928479a55a065192a15466694ba4f5337bc753661579f67320c191c0d26 +5070676d7474706c6c6d6e6f6c6866686a6b6f6d6a6765636261625e5d61 +676760595e65645e5b5a544d444747413b393c40323a4042495660616568 +686763605e6064686968625e5b5a575d62645f5c5c5e5e5f5f5e5f5f5e5e +5d5e61656968615d5d5f6165673d3d3d3e3e3e3f3f383a3c414445423f37 +383c41413d3e413c3a383535363839393a3e41423f3934383e3c36394342 +3a3a3b3c3d3e3f3f3f41413f3d3a3a3d403e3f3f3d3c3c3f414444444342 +41403f37383b3e3f4040403d3936393d3f3f403e39383d3e39373a333535 +3839393734383b3d3c3c3e3d383f404242413d393740404140403e3d3c3d +404242403f40424143434041413d363c3c3d3b3a3b3e4140414243434342 +424545464544423f3e37393e43413c3c3f3d3e3f3f3d3d3e3f4244444444 +4444434042454646474a4a49454545494a4c4b4a4b473b383b3e3d3f3f3d +3c3c3b3e424b431610230d2f28313f3e3a3e3e3b3e382d302141754e1216 +1b2123211f2021131e1b0c2365887b364c485c273f331c231c192c474942 +453d404647423c373543786a2c15191c251e1e0d19111611291746511a42 +57535354432d14140b02212829313b434a5560636a71697960657c5e5a47 +2c36464861556f213ab51a13292229252d223f26272139301d2e25371e30 +30303429372a2f263a2f2c333a1d2c3b2c31473f2752262e3c3d2c31331f +282830252235352d3a3135312d3035302426373e3223222e374b60574c47 +28142829294d5a3d394a42191c222626231f1c232e1f46aac7acaed25546 +362a22293d525e626560454a75957896612d1e2e146c2482375b97688d3f +2c4b9e59a46c20331e5171a0c65b5c39bc773a675da7703b151e1b04183d +513a3942423e3b3b3e3f42423e3d3f43413c363634333233333836363d44 +453f3e4752524e4b4d48433a3e3f3a3532373b30363e3e434e5756585857 +534f49474543434543403b3937343a3f3d37323134363838383939363636 +37383c403f39343335373b3d95999a98999c968c8e959da19e9995948d95 +9b9a999a999691908e8d8d8e8f9093989d9f9d9894919599989495999790 +94989c9d9c9b9d9f9e9d9c9997989b9f9b9c9b9997989da2a3a3a19c9da0 +9f9a979a9ea0a1a0a0a09e9b999a9da0a09f9c9c9d9fa09f9c99959da5a7 +a39f9fa1a3a3a4a6a7a7a6a4a8a8a9aaaaa9a5a3acaaa9aaaaaaa8a5a4a6 +a9abacabaaa9afaeaeaeaaa2a2a4a4a3a1a0a2a3a6a6a7a7a9abacaaa9a7 +abaaa9a9aaa8a5a2a3a5a8a8a6a4a3a4a1a2a4a6a7a8a9a9a4a2a4a9a9a6 +a5a8a2a6aaa9a7a8adb2b2b0aeacababaaabb0a99f9896979a9b98969393 +969799968c87383c25051107110b07020001060e0d101c00355916130e10 +181a1b191a191e0e0d1a1214241e2783f5f07b1d09000000000110020100 +00010706030d11092a625823142c292528252523212121211d62b9431418 +6d625e001e0d0005030d141c242a2c34404a45504645433c3d2d256f3b1d +38271d1d0d0000149a00071412131312161b1a12131619140b07080a000f +0d010b11121f221d281e262f1c25210a0b0c150b2516416a52482500240d +1613032f150f28201107245d28131e16221f282510091f353b44392c2310 +0a210b1d4b5a2e07050b0d032227292c2d242020123878998a69715f2822 +2d161839344752b3854240111d0c1a1c010011052553544b33000c141616 +29171b30201f211d203983a3000018271c204d604f4e391300000d1e4c87 +a2acaba9a5a19b98a7a39f9a96979a9ea6a9abaeafb1b0b1bab4ada8a3a0 +a19e8a7e7a797c8082818b959fadc3e4fefffff7d6b3998e8a878e8c8e92 +9ca9b6bbbeb3b6b7ada49b8aa199999a979192938b8d908f8b8a8988828b +8f8d8d91928e8d8d8d8f9165696a68696c665c5e656d716e6965645e666c +6b6a6b6a6762615f5e5e5f606162676c6e6c676360646867636468665f63 +676b6c6b6a6c6e6d6c6b6866676a6e6c6d6c6a68696e737474726d6e7170 +6b676a6e70717070706e6b696a6d70706f69696a6c6e6d6a67636b737571 +6d6d7074757678797978767a7a7b7c7c7b77757e7c7b7c7c7c7a7776787b +7d7e7d7c7b818080807c74717371706e6d6d6e717376787a7c7d7b7a787c +7b7a7a7b79767370727575737170716e6f71737475767672707277777473 +767074787775767b807f7d7c7a79797a7b8079706967686b6c6b6968686a +6b696861631f332d1d393d5353514c4a4a4d4e4742441848631a1414191e +201f1d1b1d221416241c20332a2f8affff983d2d271e25213e5754595c5b +5b615f56574e3748725c1e0b21201c1f201f1f1f2121221e63ba4413176c +67701332200b130f171c242c31353d49524b564d51504c4d3d358256436a +6667654b2b2338b7101b28272b2d2c2e302c25282e312d24202126132b29 +1f292f3039362d34282e3725343626292b32243c2a557f67603f183e2730 +2d1c482a243b362f29467c462f362b353137331b12263c424b41342b1812 +2913255261340d0b0d09001c2123292c252325194181a3947275612a2431 +1a1f403d505dbe924f4f2330212f31150a25193765685f47131f282a2b3c +2c2e433330322e2e4791b10a0e2d3d2a285164585d52311a1c1f274c7471 +6d6c6a6863605e6d6c676260616569727373726d67605b5b4f3f33282120 +2726251f1e21242627333e4b5a7597b4c0beaa876045362d262926222429 +35424c58565e6562625e546d6866666159585d5e6265635f5e5d5c555e62 +606064656162626264663d41424041443e34363d454946413d3c343c4241 +4041403d3837353434353637393e4345433e3a373b3f3e3a3b3f3d36383c +4041403f41434241403d3b3c3f433e3f3e3c3a3b40454646443f4043423d +37393d3f403f3f3f3d3a38393c3f3f3e3a3a3b3d3d3c393630383e403c38 +38383c3a3b3d3e3e3d3b3f3f404141403c3a4341404141413f3c3b3d4042 +43424140464545454139393b3c3b39383b3c3f3e3e404244454342404443 +424243413e3b3b3d40403e3c3b3c393a3c3e3f4041413f3d3f4444414043 +3d4145444243484d4a4647454646494a5049423b3b3c3f40413f3b3b3d3e +414441490b2220102e304545423d39393d4039373b1346641d1814181e20 +201e1d1e231415231b1e302a3290ffff963a2921171d152f453e4143403f +45433c403c2a406f5d221027251f201d1f1e202123242267bf491b1f746d +7211311e0a130d161e262f373c44525d59645d5f605b5d4d44905f46675d +5a5740221c34b5111c29282b2c2b2e312e292d32353128242529162e2c21 +2b31323a352c3429313a2a3739272b2d362944335c846c6240193d262d2a +1842251f37332f2b487f48323a3039353a361f172c42485144372d1a142b +16285a6b401b1b1c180b2a2d2d30322a28291f4688ac9e7b806d36303c25 +294a465963c498555427362634361c112e224171736a521e2d3331304231 +344939373a3637509aba1315303b2a2a52675d6256331714111434544841 +413f3c3a36364745423d3c3d43474b4d4e4e4d4a4542473d3029201a1a23 +282924252a2f3133414e5b6a85a7c5d1cfba9a7255463f37393431313842 +4f53564e52574d484132463f3b373228262e353f42403a3936352e373937 +363a3b373838383a3c979b9c9a9b9c968d8c939b9d9a9592918d949a9998 +99989591908f8e8e8f909195999d9e9a96949395999a98989a958e95989c +9d9c9b9d9f9f9c999797999c9e9f9f9d9996979a9ea2a3a19d9ea09e9998 +9b9ea1a1a1a0a09d9b999a9ea0a09f9d9d9ea0a2a19e9b989fa5a6a29fa1 +a3a3a3a4a6a7a7a5a4a9a9aaababa9a6a4aaa9a8a8a8a7a5a2a5a6a9abac +abaaa9abaaabadaba5a6a9a8a7a5a4a5a7a9aaa8a8a9abababaaaaaaa8a7 +a8a8a6a3a1a1a3a6a6a5a3a3a4a3a3a5a6a8a9a9aaa9a6a7aaa9a5a3a5a5 +a8aaa9a6a6abb0b1afacabaaaaa9a9b0a99e9796979a9c97969394969799 +958f83343a22050f040d0807030204091011130c0037671a172424262626 +2322201a1d1c13162f2d00174d753d10203a12030000000e030000000208 +090710160d1058570b18233829252321201f1f1f1e1825211a3299edf9f4 +4004000804001529241f1f252e363a514e4041331e3649988740373b1b0e +000000000a8d00070e0e1316171e252a271a1a1a160f0906070909050b16 +16151f1d0d0c02160015101319100407092a368b8d7983411f140a001816 +03110e13130a0e377e6b2f1e27331f1814080b22333841240b081e243030 +121e68c5f9e4a07c23253322192a27362a1b17508dbcd89d7b2b12292218 +162f42213f353539080f1a06002231172b6f9c748d4f17210c10030f1314 +1b12041439081f777c0007000b14163d5d03000400000000073a7e99a7a8 +aaabadadada3a8b1b5b4afaaa8ada496887f7b7d7f72747b8891979d9bad +a7acb7c9d7e1e4ecede9ded6d3d1cfd1dae5eef9ffffffeaebe8dcc9b09a +8c82828e9ea4a9a99e8e909ca5a39b9b9a878182878f928c84848b8f8e8e +91928f8e8d8c8d8f676b6c6a6b6c665d5c636b6d6a6562615e656b6a696a +69666261605f5f60616264686c6d69656362646869676769645d64676b6c +6b6a6c6e6e6b686666686b6d70706e6a67686b6f7374726e6f716f6b686b +6e71717170706d6b696a6e70706f6a6a6b6d706f6c69666d7374706d6f72 +74757678797977767b7b7c7d7d7b78767c7b7a7a7a79777477787b7d7e7d +7c7b7d7c7d7f7d777578757472717072747776797a7c7c7c7b7b7b797879 +797774726e70737372707071707072737576767777747578777371737376 +78777474797e7e7c7a797878797980796f6867686b6d6a6968696a6b6967 +64611e332d1f39394c4f4e4b4b4b4d4e49412f19436b1815282a2a2a2724 +22211b21221c203b390b1e5684522e44633d3030243c575559585a5b605d +55554c35266155000b142b1e1f1f201e1f2120221c2a241d359cf0ffff54 +160c16100a1e312c27272c373f435754484d412e4356a599595a6c575540 +31211d28a20b161d22282e2f333939392f32332f28222223252523293434 +3339301c15081a011d1b27312a201f1e3d459a9c88955433291f0d2e2a17 +241e21252830569d894b363c4631261f1114293a3f482b1310262c38381a +256fcbffeaa37a1f212f20182b2a3b3224225a97c9e2a47f2d162d291f1f +384b2c4a4242461a222f1b103542283c7daa849d5f27311e241824282930 +2517254a172e868b05191d2a2a2647671111221b1e241c1c44736b676868 +696868685c60676967625d5b615848382c26252617161b252c2f343c5f63 +6873828f999fa8aca9a09a9b9b97979ea5acb5bbbcb896938c7d674c3426 +1c1f324855636a64595e68706d635f625655545961645e57575e62616164 +656263626162643f43444243443e35343b4345423d3a39343b41403f403f +3c38373635353637383b3f4344403c3a393b3f403e3e403b34393c404140 +3f414343403d3b3b3d40424242403c393a3d41454644404143413a383a3d +4040403f3f3c3a38393d3f3f3e3b3b3c3e3f3e3b38333a3e3f3b383a3a3c +3a3b3d3e3e3c3b4040414242403d3b41403f3f3f3e3c393c3d4042434241 +4042414244423c3d40403f3d3c3e40424241414244444443434341404141 +3f3c3a393b3e3e3d3b3b3c3b3b3d3e404141424441424544403e40404345 +444141464947454544454548485049413a3b3c3f41403f3b3c3d3e414344 +4609231f142f2f4141403d3a3b3e413c372815436e1d1a292a2b2b292624 +231d22221b1f39370b245b89532c405d362927172d443f403f403f47433f +403e2a23605a06141b34241f1e1e1f1f2022231f2d29223ca3f7ffff5518 +0c1710091d332e2a2a323e484c6362555b4e3d5366b5a5605c684d473126 +1a1926a30d192023292e2f343a3c3b343637332c2625262828252b363635 +3a2e1914081d04201d283129212121434ca1a18d9758342a200b2c291522 +1d21252a32599f8b4e3a3f4a33292316192f40454e311613282e3a3b1d2b +77d7fff8b2882e2f3d2b20302f3f35292863a0d2ecae8a39213833292841 +54325048484c1e283420163c4a32468ab791aa6e36402a2b1d292d2e352b +1d2c511e358d920d1d1b2527234666121222191a1c0e092c574741424546 +47474940474e52534e4b4b544b3e2f2421212216161d2832363b446c7277 +8294a3adb4bfc4c3b9b4b4b5b0b0b8c0c7ced6d6d3b0aca59580644c3b29 +2435474e57584c3a3940443e302b312e3232373f403a3030353937373a3b +38393837383a989b9d9c9b9a938c8f959b9c989390908f969a99999a9895 +9291908f8f909293979b9e9c96929396979a9b9a9b9a948d96989b9c9b9b +9c9ea09b9594979b9d9d9f9e9c9997989b9ea0a2a29f9fa19e989a9ea1a3 +a4a4a3a29d9c9c9ea1a3a3a29d9d9ea0a1a09d9a9a9fa4a39f9ea1a5a3a4 +a5a6a7a6a5a4a9aaababaaa9a7a5a9a7a6a6a6a5a29fa5a7a9aaababaaa9 +a9a8aaadaba6a7aaa9a8a6a5a7a8ababaaa8a9aaabacadadaba9a8a8a8a7 +a5a29fa2a5a6a5a4a4a5a5a6a6a7a8a9aaaaaaa7a7aaa9a5a4a6a9aaaaa8 +a5a6abb0b0afacaaa9a9a8a9afa89e9795979a9c9796939496979693917e +33391f080f010907070504050a11150c151c50551123201d1c1c1e1f1f1e +1f242117337798851f09000900181915140c00000d030000010209090914 +1912243f25245433323e33302f2f2d2c2d2e21465637241727270c000d10 +0300001828435e5e472f24251e222337404e88b3b15f2137280000000000 +020b88070e110e111110141a201e1a181715120d07040c00051b1d161b27 +200d0f0f031106001f3b2c1a0c1216083228283f201d0b0b0e1006141007 +2401090d1b435019142c362925231716262f495f6b856c4711091824302a +2c68c5fbfc62363638051a3c0009370f1f49a2f7f9f9b15826122a452d59 +56574c4739221d0d0519597d87100c130023090a18150d092748351f2b23 +4d7f36436649080a070011134682010a0300060c0608346f91a0a9b2b5b4 +b1b0b2afa79d9593989b8381828384878784aca7aab1b5b3b3b6b6b2b1b0 +b2b2b1ae9ea3a6a4a5abaeb3bdc5c5c3c3c5c4c0d7dee9f5feffffffffe3 +b8927b819195aca9a59f9389888ca29d948b85878e95888e908f8f919190 +8f8d8b8a8c686b6d6c6b6a635c5f656b6c6863606060676b6a6a6b696663 +62616060616364666a6d6b6561626566696a696a69635c65676a6b6a6a6b +6d6f6a6463666a6c6c706f6d6a68696c6f7173737070726f6a6a6c6f7172 +7271706b6a6a6c6f7171706a6a6b6d6f6e6b68686d72716d6c6f74747677 +78797877767b7c7d7d7c7b79777a7877777776737076787a7b7c7c7b7a7b +7a7b7e7c777578767572717273767878797a7b7c7d7e7e7c7a7979797876 +736c6f727372717172727373747576777778757578777372747778787673 +74797e7d7c7a78777778797f786f6866686b6d6a6968696a6b6967685c1d +322b23383647494b4c4b4c4e4f4d3a38355c590c1c1e1d1a1a191a191819 +1f1f17347b9c8a24120421143f4344463f2a3c565759555b5a5e5b54544b +3336431e17442325343132313031323233264e5b3c291c2c301b051c1e0e +03071e2e4863664e362d2e252a2d434e5c94bfbd6d355452353d24211f22 +259a151c1f20262928282c2e2d2f30302e2b262320281a23393b34394133 +19151304120b042f4f423220242313392f2f492b2b1b1b202216241e122f +10222c395f6c3329404838332e211e2b345066728d744f1911202c373133 +6ecbfefe6136363b081f440213401a2956afffffffb55e2d1b334e366461 +62575547312f20182a688b931c151c062f1617252521203e5f4a343e365e +9145527356131e2c28302a558f101e1d1f2629191435606e6f777b797269 +615c514131242021230d0f1118202b363d6f7580909a9ea2a7a9a6a4a2a2 +a1a0a090969a9da0a8adababadadababadafabc5ccd7e3ecf2f3f0cea477 +4f3437464a626262605953565c706a615954575e65585e63626265666564 +62605f614043454443423b34373d4344403b3838363d414040413f3c3938 +37363637393a3d4144423c38393c3d40414041403a333a3c3f403f3f4042 +443f39383b3f414142413f3c3a3b3e4143454542424441393a3b3e404141 +403f3a39393b3e40403f3b3b3c3e3e3d3a37353a3d3c38373a3c3c3b3c3d +3e3d3c3b4041424241403e3c42403f3f3f3e3b383e40424344444342403f +4346443f40434140403f4041444343414243444546464442414141403e3b +373a3d3e3d3c3c3d3d3e3e3f4041424243404043423e3d3f424343413e3f +444946454543444447484f48413a3a3c3f41403f3b3c3d3e404248410822 +1f1a302e3c3d3e3e3b3c3f42403031315c5c1223211f1d1d1d1e1d1c1d23 +2219367c9d8d2a190b23133c3f3e3d361d2c4340403c424147444043402c +364626204f2d2f3c343130323232353629505f402d2030351e071f1f1004 +061e2e4b6769543c34372f35374f5969a2cdcb783e58502d2f17181a1f24 +9c181f2222272928292e3130343434322f2a26232b1d253b3d363b423117 +151408160e052f4e4032212629173f35354b2f2c1b1b202216241f143113 +262e3b626f342c414a3b363023212f3a566c789077521b13232f3d393d7a +d9ffff6f4242440f234705154520325eb8ffffffc16a37243c573d6a6768 +5b584a3433241e316f949f28242b163f272836342a2644654f39443c6595 +4a57795c171f252028224e880d1d1c1e25251308274b504e565c5d5a5350 +4f493d2f2623272f25292d323842494d7e818c99a1a3a8aeb2b0aeafafb1 +b0b1a1a8aeafb4bbbfc0c3c5c5c3c1c3c2bed5dae5eff8fcfdf9d7ac7f56 +38384344554e473d3125232c4b4b423833333a3f32363a383838393a3a38 +363537989a9c9c9a96908a959a9e9d9994939394999c9a9a9b9a96939291 +9090929394999c9d99929094999c9b9b9a9a9894909798999a9b9b9c9da1 +9a9292979c9e9d9c9b9998999b9fa29fa2a2a0a0a19d979fa0a1a4a5a5a3 +a19c9d9ea0a2a2a2a29a9a9b9d9f9e9b989a9ea2a09c9ca0a6a2a4a6a7a6 +a5a4a4aaabacabaaa8a7a7a9a7a6a5a5a4a19ea7a7a9aaaaaaaaa9acabac +aeaaa4a5a8a7a5a4a3a4a6a8a9aba9a9aaabacaeafaeacaaaaabaaa8a69f +a2a5a7a6a6a7a8a8a8a8a8a9aaababa7a5a6aaaaa8a8abaaaaa9a6a5a7ad +b1b1b0adabaaaaa9aaaea79d9795979a9c9795939496969592937731361c +0a0e00060507060404070b06102007556b361f1b181515171b1b1a1b161e +1819334c612211020f000005141d1600000c030000010107090b161b121f +6323141d220c11120f0e0e0e0e0d0d105a996f5735161e15121c03070f16 +00051c4a84b2c4baabaeb4b6daf4f5e4b15b1d04230e000000000008138e +17131615120c080d13161114100f10110f0a0305000e21110610191035f0 +52261a95f8000f12222764621b0d2208011419130d140013200c240b1600 +0b161a2e1116130e0f1b1904000f1c19463f260000021e1d1e303f331f26 +3a5f3c31258801008b0c1f6538331000103e5841210e0920315094c3a25f +381c0f040c000055698a180c00190d0320084962241450615a6845537251 +5b2e11120100000e1d66880e1a20120f161f2c5178a39b8e7f7776797e61 +6a757e85898e90afb1b7bec1c1bfb9988d8886837e7e838c91979da6acaf +b1c1c1c0bec1c7cfd7dfdfd6c9c5c6caccb7b3b0adafb2b7c2e1f0fffff5 +d4ae8b748195a8aea5968b8f8f939794908c8e8b8e909090909191918d8a +8889686a6c6c6a66605a656a6e6d69646363656a6d6b6b6c6b6764636261 +61636465686b6c68615f63686b6a6a696967635f666768696a6a6b6c7069 +6161666b6d6c6d6c6a696a6c70737073737171726e696d6e6f727373716f +6a6b6c6e707070706767686a6d6c6966686c706e6a6a6e75737678797877 +76767c7d7e7d7c7a79797a7877767675726f78787a7b7b7b7b7a7e7d7d7f +7b7573767472706f6f717375797a7a7b7c7d7f807f7d7b7b7c7b79776c6f +727473737475757575757677787875737478787676797878777473757b7f +7e7d7b797878797a7e776e6866686b6d6a6968696a6968666a551c302828 +393344474b4d4d4d4e4d404245226370341a1613100f1112121112101813 +19344d65291b152b16263245504b3440575559555b595c5b54544a322f66 +1c081016020c13141314131315151862a1775f3d1e282221290e11171b02 +0b224f89b9cbc3b4b5bdc0e7ffffeeb96327123b30192e272621252ba025 +21252727242021252420292828292a28231f21162a3f2f242e332241f855 +271b9aff0423273839736d2210230c061c231e1b2405222e1a3116251727 +2f3446262a251d1d26230c061421204d462d01060a26252637463a262c40 +634035298f080495162a7043401d0b1a466049291612293a5b9fcead6a43 +271e171f0c0c64769422130322160e2b1356763b2b67756f7b5865816069 +3c1c1e151c15292e6b890c1a21150f110e112a486b605140353030301014 +1a212528292a4b515b68747e878d787a7f888d8e92979a9b9fa5acb2b5b6 +c6c8c8c9ced6e0e4e4e0d7cbc8cbd1d3c0bfbcbbbdc3c8c9d0cfdcdec39b +6f492e3a51656e685c5356585c605f5b5a5c5b5e63636465666666625f5d +5e40424444423e38323d424645413c3b3b3b4043414142413d3a39383737 +393a3b3f42433f38363a3f42414140403e3a363b3c3d3e3f3f4041453e36 +363b4042413f3e3c3b3c3e424542454543434440383c3d3e414242403e39 +3a3b3d3f3f3f3f3838393b3c3b383535393b393535393d3b3b3d3e3d3c3b +3b41424342413f3e3e42403f3e3e3d3a3740404243434343424342454743 +3d3e413f3d3e3d3d3f41434442424344454748474543434443413f373a3d +3f3e3e3f404040404041424343403e3f43434141444343423f3e40464a47 +464644454548494e47403a3a3c3f41403c3b3c3d3f3f414c3c09221e2032 +2b393b3e3f3c3c3e3f32373d1d637339201a1714131517171617141c171b +364f6831241b2e17222d3f47412630433f403c424145454145402d2f6b24 +121a200b1317171614161617171a64a47a623f212a28262f12131a1e020b +22528dbfd1cabbbdc6c9f0fffffac670311b3f2f12211a1c1d232ba22824 +2829282420222727232c2c2c2d2e2c272224192d41312630342241fb5a2c +209eff072428363b76712815270f091e25201c240525311d371c2a192833 +3548272b27201e28250f08182528554e3307090d2828293d4c4230384c6f +4c413497100997182e764948251424516b5434211b324361a5d4b36e472b +211b2310136b7e9e2e23133327203d25667f41316d7c74815c6984636a3d +1e1e13160d202665840d1c261e191816162d445e4e3f2f2726292c0f1721 +293033373f6d77808b969da4a88f8e9297999b9da2a5a7acb2bcc2c5c9d9 +dadbdbe1e9f2f5f8f5ece0dbdee1e3cfcbc8c4c6cbd0d1dadae7e8cea477 +4d2e3444525349372e383a3e423f3b373735363939373839393b38353334 +9b9c9d9d9a94908e999c9e9d9894949695989a98989a9893939291909192 +94959b9c9b969190959aa19c989796969595999898999a9b9c9ba0999393 +989e9f9e9d9b99989a9da0a29fa2a2a0a0a19d97a1a0a1a3a6a5a29f9c9e +a0a2a3a2a1a09b9b9c9e9f9e9b989ea1a3a09d9da3a9a2a5a8a8a6a4a4a5 +a9abacaba8a6a7a8a9a8a6a6a6a5a2a0a8a8a9a9aaaaa9a9acabacaeaaa4 +a5a8a6a5a3a2a3a5a7a8acaaa9aaabacaeaeaeacaaaaaaaba9a8a0a3a7a9 +a9a9a9abaaa9a9a8a8a9aaaba8a5a5a9aaa8a8aca9a8a7a6a6aaafb3b3b1 +aeadacacababada69c9695979a9c9695959596969390946f3133180c0c00 +0706070603000205110d0c357576180722211e1e1d1e1d1d1b111f1e1b1c +2651581e0b00060000081a1901030d020200000004070a171a0f3c7a2e04 +102c1911141110101010131418140a21429235420a001717150311151116 +1a2030588bb1bed7d3bf93624b30211a131708000000010001138e1b0a11 +19120b0b1522241b120e0c0e110f0a050a000e19080001000f35f7561b06 +7cf11c120f1c167483163879232335230a1628a4272a650220220c091412 +1a102b1817171d1703051a270214000005070002141b3046483f52779243 +41015e00143601002b07292f37525c614d3d260906040a33643e0d0f160c +1a06130e068989571d406251233b00657a310e34302341331729323b1309 +130f14071e2e7b6b2d393b3f4f687675777b7675787c82888b8ba5a5a9ad +afafb1b18c89848180818485a19fa1a6abadafb8c5c8c9c8c8c6c5c4c5c5 +c9ced6e0ecf2edece7dcd1ccc7c2d4d4d5d4d1cec9c8d2c7c2c4cadef3f9 +e1b381738aa6ada1a49790959896908d8e8e8f908f8e9091928e8a88896b +6c6d6d6a64605e696c6e6d6864646666696b69696b696464636261626365 +666a6b6a65605f6469706b67666565646468676768696a6b6a6f68626267 +6d6e6d6e6c6a696b6e71737073737171726e696f6e6f717473706d6a6c6e +7071706f6e6868696b6d6c69666c6f716e6b6b717873777a7a787676777b +7d7e7d7a78797a7a7977777776737179797a7a7b7b7a7a7d7c7d7f7b7573 +7672716f6e6d6f71747a7b7a7b7c7d7f7f7f7d7b7b7b7c7a796d70747676 +7676787776767575767778767373777876767a7776757474787d81807e7c +7b7a7a7b7b7d766d6766686b6d6a6969696a6966646b4d1c30252a393246 +4a4e4e4d4d4c4c51453a5689821c06221f1c1918181717150c1d1e1c202a +56612b1f172a142d3b4f513e4656545a595b595c5a54574c324e7f2b0008 +26161119191818181818191d190f264a9b3d4c170d24221f0b1619151a1f +25375f94bac7e0decca06f5336251e1c29251b2a2f2c1e1e2ca02b1a232d +2b25252e36342d272624262928231e231b2a35241b1f182447ff5d1f0a83 +fc2b25243128818c1b377723243b2b152437b3363974112d31212129272e +223b262523271f0b0b1e2c091a06060c0f020a1c23384d4f46597e9a4b4b +0b69081f410c073814363c435e666b57473013100e153e6d471618201a2f +1e28211596936125476b5a2e4606758e48254b44385445263940471f141e +1f2f20292d694e080f0e0d172626160c0e0d1117212c38424a69727e8890 +94989a7773716f71757a7d9d9da1aab1b4b9bec6c5c4c3c0bebbbabbbdc1 +c9d2deedf7f5f9f4e8ddd5cec9d9dad8d5d2cdc8c6ccbcb6b6b8c8d7d8b8 +854933455b5d55625954595f5d5a595c5e62636463666867635f5d5e4344 +4545423c383641444645403c3c3e3c3f413f3f413f3a3a39383738393b3c +4142413c37363b4047423e3d3c3c3b3b3d3c3c3d3e3f403f443d37373c42 +4342403e3c3b3d40434542454543434440383e3b3c3e41403d3a37393b3d +3e3d3c3d39393a3c3c3b3835393c3c3936363c403b3c3f3f3d3b3b3c4042 +43423f3d3e3f42413f3f3f3e3b39414142424343424245444547433d3e41 +403f3d3c3e40424245434243444547474745434343444241383b3f414141 +41434241414040414243413e3e42434141454241403f3f43484c49474746 +47474a4a4d463f393a3c3f413d3c3c3a3d3f3d3f4d3409211b22322c3b3d +40403c3b3b3c41382f4f87821f0b24221f1d1c1c1b1b191020201e212b59 +683426192a11273445462f35433e4140424246464349432e508534071330 +1f191d1c1b1a1b1b1c1d201c12294c9a3f4e1d132a26210e191c161b2229 +3d659bc1cee7e4d4a8785e423129252d21131e2323171a29a02b1a232c28 +22222b35342f2a2a282a2d2c2722271e2d38271e211b294bff672a158bff +302927322c8793213c7a25263b2d17253ab63b3e7918353824212c282f22 +3b27262328210d0b21301326100e1212050d1e253b53554e6188a5565514 +6f0e2345100a3e1a3e454f6a727763513a1d19171b44724c1b1d221b301e +29251a9e9d6b32577c6b4058178499502d514b3d5a49293940451d101a1c +2a1a23296952101d22263242433428251c1b222a35414b527179858f9699 +9ea488888785888b9294b4b5b9c3c9ced2d6dbdadad9d7d5d3d3d4d5d9e0 +e9f4fffffffffff8ede6e0dbeceae9e7e4ddd8d4dacac4c5c6d5e3e1c088 +4a33405556474c40383d413f3834373638393736363a3c393533349f9d9e +9e9a939194979a9b9893919395949796949597948f92919090919294969c +9a97939192969aa29b9594949495989a9897979a9b9b9a9d9995969a9ea0 +a0a19e9a999a9d9e9fa0a2a29f9fa19e99a2a0a0a2a5a5a09c9c9fa3a5a3 +a19f9e9e9e9fa1a2a29f9ca1a4a6a3a0a0a6aca2a6a9a8a5a2a3a5a8aaac +aaa6a4a6a8a8a7a6a7a7a7a4a2a9a9a9a9a9a9a9a9a9a8aaadaba6a7aaa8 +a7a5a4a5a7a9aaabaaaaaaabababababa9a6a6a7a8a7a6a2a5a8aaaaaaaa +acabaaa9a7a7a8a9aaaca8a7a8a8a5a5a8a8a7a6a6a8acb0b3b4b2afaead +adacacaca69c9695979a9c969595969795928f92643033130d0d00080707 +0300000000061000363c58062b0e1014151615171921151b080e16072034 +3c33541d090013151803040c050600000002050916190e265755001f0c11 +110e0e0e0d0d0e1111060b231d194644aa5c11100f160e1216130b09172c +38322838383c5c5f402e1f202d22110d0700000500000f861d020c130c07 +07131d1f1816110e0e0e0d08040f0305121716130e0a062c200c2f273024 +05030d04567c1d1f7f23575332022d67530ec3f1000a2d15050713110a27 +23221a181409080d08113816000812000621353d3a3b3e506a66434536bb +0912c8101940222c25304e585a4c3b1300163213040f070c0a0f0d07000c +003699f5000548325c29510850f0790f00000211010a252019261c021a0d +163b5795624f4a5b5c65768aa3c2d7d2d2d4d4d0c6bcb29b9183776f6d6f +739293989da2a5a9aaa9a9adb2b5b0adafa5a8adb0b2b3b7b9b9b7b7b6b2 +adaeafa2a8b0b4b7bec5c7c5c8cfd5dce0e2e0ccc5cbd1cbc8c4b9daf0f5 +d7a888848b9d9c9e9e938a909d918f8f908e8b8d91938f8b898a6f6d6e6e +6a636164676a6b6863616365656867656668656063626161626365676b69 +666260616569716a64636363646769676666696a6a696c686465696d6f6f +726f6b6a6b6e6f707173737070726f69706e6e7073736e6a6a6d7173716f +6d6c6b6b6c6e70706d6a6f7274716e6e747b73787b7a777475777a7c7e7c +7876787a79787778787875737a7a7a7a7a7a7a7a7a797b7e7c7775787473 +71706f717376797b7b7b7c7c7c7c7c7a7777787978776f72757777777779 +78777674747576777a7675767673737676757474767a7e81817f7d7c7b7b +7c7c7c766d6766686b6d6a69696a6b68656369441d30202c3a344a4e4f50 +4f4e4e4d4d4e2260596b1033141618191716171922191f111720132b3e4a +4a73443721484d52404755545c5a5c5a5b5a56584c323b6055001e0f1618 +17171515151616160b1027231f4c4ab2671e1b181d13161a170f0e1c343f +3b31414349696c4a3523202d261c2126282b2f1c1b289a2f14202c292424 +2d36332c2b2926262625211d281c212e3332312a231a3a2a14352f3d3519 +1b25156585221f7d2159573b0e3b766520d6ff051b3e28191925211a352f +2e24201d0f0e110d153e1c010f19060e293d454242455773704f5345ca18 +20d61e274d2f39323c5a646858472004203c1e0f18101513191b1c1a240d +48a8ff080f523b68345e1561ff8f2514101523131a332c2531270d230e10 +2838682d150f212226313b495e73797f858b8d8c89887b7975716f71787d +9fa1a4a9aeb1b2b3b0aeb1b6b6b1aeafa6a9abadadaeafb1b1afafb1afab +acb2aeb9c0c2c5cacececbced2d6dbdfe1e1cfcbd1d4ccc5bbabc3d1cca5 +6c443b41585a5e5e564f58675d5e6063636265686864605e5f4745464642 +3b393c3f4243403b393b3d3b3e3d3b3c3e3b363938373738393b3d42403d +3937383c4048413b3a3a3a3b3e3e3c3b3b3e3f3f3e413d393a3e42444444 +413d3c3d40414243454542424441393f3b3b3d40403b37373a3e403e3c3a +393c3c3d3f3f3f3c393c3f3f3c39393f433b3d403f3c393a3c3f4143413d +3b3d3f41403f4040403d3b424242424242424242414346443f404342413f +3e40424444444343434444444444423f3f4041403f3a3d40424242424443 +42413f3f40414245414041413e3e4141403f3f4145494c4a48484748484b +4b4c463f393a3c3f413d3c3a3b3e3e3c404b2b0c211726352d3e4041403c +3b3b3b3b3f1556546911351416191a1918191b241a2010161f112d475350 +7643341b4042463136423f434144424545444a432e3c655d0726161c1e1c +1c1b1818191a1a0e132a231f4c4ab46d26211d2317191d1810111f374542 +3646474f6f74533f2e2c372f201f1e1d1e25151625992f141f292520202a +33322d2e2d2a2a2a2925212c2024313635332e2a25473621433c463d201f +291c6c8e28217e2258583a0e3c796724dcff0c23462c1a1b25211a362f2e +25221c0f0e1211204c280b171f09112b3f4845484b5f7c7a5b5c4cd11d23 +d9212a5335423b486670736453290d294524151d151a181b1c1d19240e4c +adff121b5e4a78466f2671ff9a301c171b27151a332a212b1f051e10142c +3d6f372321373b434e58657a8d8d91989c9e9b98968887827b797a8186a8 +aab0b5bcbfc3c4c3c4cacfd2cdcccbbbbdc0c2c3c4c6c8c8c6c6c7c4c0c1 +c3bcc3cdcfd2d8dddedbdee3e8edeff3f3e0dbe1e5ded8cebcd5e1dab178 +4f46424942434339313743383636393634343a3d3a3634359e9b9a9a968f +909696979794908f9295979897959698958f91908f8f909294959c989391 +939698999f989395969394989b999696999b9b9a9999999a9c9fa1a2a29e +99989b9e9f9fa2a3a19d9ea09e9aa2a1a0a2a6a5a09b9ea2a7a8a5a09e9d +9f9fa0a2a4a3a09da0a3a5a39f9fa5aba2a6aaa9a4a2a3a5a6a9aba8a4a2 +a4a8a6a5a5a6a7a7a6a4aaa9a9a9a8a9a9a9abaaabadaba5a6a9a9a8a6a5 +a7a8abababaaabababaaa8a7aaa7a5a4a6a7a7a6a3a5a9aaa9a9a9aaacaa +a8a7a6a7a8a9aba7a6a7a6a3a4a7aaa8a7a8aaadafb0b3b2afadacacabac +aca59b9594979a9c979795969795928e8e5e32340e0e0e000a0704020000 +00000619002584de5200040c1517131010130302180f222a000863f2eddb +251d0008161700000a070800000000020614170b0480cd280a0014111112 +1212141416162113170024367ac68e2f321c161b0d00171f2421191d2d3d +4339242a23122431201c1a100b0d06000000030a7b22030807060401030b +0c0b14110e0c090908070c030317241f2842635d641a2845574a4a1a090a +0b1e3d0b18715e84774013318abf1e9fea01152c0c1f13201f140d0f2320 +24261e1e1e156ef9d50f000f17100923323c4b505a734d55320034030040 +201813102c363d45625441391d0005030a3c360e25130d14020f13052cf1 +6a05122a1b441f4100003109081315110b0f152c190d2314011e444a5455 +737095a3b0b3bcc3c0b3a89f91867c75747c858d959facb8bdbdbbb8a0a5 +aaaeafaaa4a0a09c9a9a98918e8c8483878a8b8c91949f9c9ea1a2a0a5ac +adb2b2aba8adb4b7b3b2b5bcc6d4e0e7e1d5d3d3ccced1cbbfc7d5e6f0e0 +b594778594a3a2969196928e8e8f8e898b9193908c8b8c6e6b6a6a665f60 +6666676764605f6265686968666769666062616060616365666b67626062 +6567686e676264656263676a686565686a6a69686868696b6e7071736f6a +696c6f70707374726e6f716f6a706d6c6e72716c676a6e7374716c6a696c +6c6d6f72716e6b6e7173716d6d737a73787c7b76747577787b7d7a767476 +7a77767677787877757b7a7a7a797a7a7a7c7b7c7e7c7674777574727171 +727577797b7c7c7c7b79787b787675777878777072767776767677797775 +7473747576797574757471727578767576787b7d7e807f7d7b7a7a7b7c7c +756c6665686b6d6868696a6b686562673e1f311e2d3b374c4f5150505051 +51535e1f55a7f96505171f2527221f1f22121228243741171e74fffffd4d +4e22404e513b4153565e595c5a5b5b575b4f341e8fd42c1106211e1c1b19 +191919191925171804283a7ecb97393b251d2011041b232926212536464e +4432382e1b28341e191a181b2627252a2323249136192124262421222525 +20292623212121201f251c1c30403b445d7d74772a334e635a5e3222231e +2f471218705d867d4a21419cd233b3fe15293f1e2f23302d2019192d292d +2c2222221a72ffdb1501161f18112b3a445358617c5b66430445150e4f2f +27221f3943495170654f472b0e120d15453d152d1b151f1b2e301f41ff79 +121e3627522f530d11471f1c2728241d21253b261a2f1e0b19201315102b +29556f8a98acb7b3a4948c8580756e6f768289919aa9b4bbbbb8b9a4aaaf +b3b2ada7a29f9b9999958e8b8d9295979897989b9ea7a6a8aeafaeb3bab7 +bbbbb5b2b7bec1bdbfc2c9d3e1ecf5f1e4e0dbd0cecbc0afb3bbc8cfbe90 +65393e50606156565e5e5d5f62636163686865616061464342423e37383e +3e3f3f3c38373a3d3e3f3e3c3d3f3c363837363637393b3c423e3937393c +3e3f453e393b3c393a3e3f3d3a3a3d3f3f3e3d3d3d3e4043454645413c3b +3e414242454644404143413a3f3b3a3c403f3a35383c41423f3a38373d3d +3e4041403d3a3b3e3e3c38383e423b3d41403b393a3c3d40423f3b393b3f +3f3e3e3f40403f3d43424242414242424443444646403f424342403f4243 +4645444344444443414043403e3d3f40403f3b3d4142414141424442403f +3e3f404144403f403f3c3d4043414041434648494948484647474a4b4c45 +3e38393c3f413c3c3a3b3e3e3c3f48250e2214273630404141403c3b3c3e +3f4c1049a0f46304131b22241f1c1c1f0f0f251f323b111c7bffffff4c4a +1b3743452c304041454044434647464d46301f94dc35190d27242222211f +1f1f1e1e281a1a0529397dce9e42422a232414071c242c2924283b4b5246 +353b3422313d2924221b1a201e1a201b1e218f35171e20211f1c1d222221 +2c2b28262525242329202034433e47648a84883a455f7369693c292a2537 +511a1a6e5b837b4921419ed638baff1e3246222f23302e20191a2e282c2c +2321211d7effe921091c221b132d3c46565b678364704b0b4c191152322a +2724424c555d7b6f5a5234171a161b4c431b301e182118292c1c42ff801b +2a42355f3e611d20542a27302f2a212324381f11251500152c2626223937 +637c99a7b9c1bca9968e89847c7576808d97a0aebecbd3d3d3cdadadb3b7 +b9b4b0aeadabababaaa3a0a19fa1a4a5a5a6a7aab4b2b2b7b8b7bcc3c0c2 +c4bebbc0c7cac7c8cbd2dceaf8fffff7f3f2e9eae7deccced6e0e4cfa16b +2c283946453a363b393535383630323a3d3b3736379a969595908a8d9496 +979794908f93979c9c9a98999c9892908f8f8f909294959c969090949999 +989c959397989493969c999696999b9b9997999c9d9d9fa1a39f9a97989c +a1a3a3a3a3a19c9da09f9ba2a19fa2a5a59f999fa3a8a9a5a09d9c9e9e9f +a1a2a19e9b9ca0a2a09c9ca1a7a2a6aaa9a4a1a2a5a5a9aaa8a2a1a4a8a4 +a4a3a5a7a7a6a4aaaaa9a8a8a8a9a9afaeaeaeaaa2a2a4a8a7a5a4a6a8aa +aaaaa9abacaba9a6a4aba9a8a8a9aaaaaaa2a5a8a9a8a7a8a9acaaa8a6a5 +a6a7a8a8a4a4a6a7a5a8ababaaa9a9abacadacb1afaeacababaaababa59b +9594979a9c959495989997938d8a5731310a0e1101090603000000000100 +0c0d020d0000242129302d20130f1027151d0e1b230528478491510d0000 +171a1400000607070000000002061010010f528c140004030d0001020203 +060a0a0b2a0a325493ddfbb82f2a120912060800000e120f0d0f130d1709 +0b1017231a18000f1a0a07090200000a026d24040500050704030911130c +0b09070506080a08060a1b1f0c23635d636a0b2eaa9683813e0e0517000e +0c175d9d80823422131e00129f2d07210c1d4913000007000b02040e0d05 +15313d4b9c76002e16000a1928333d3f34589e573b28162f1d010a0a1915 +232d313d48584c3a372c2a3f3b41f5dd2f171616090c00020800170d0a10 +025e594958200318010e0d0f150a1e0f1a161d1913353a5682bad0d1d0c6 +b8a58d756b6f787e7e878f9dacb2b0aba6aeaeaca7a3a0a0a0a19a91877f +7a7b7b7f7c7b80878f9aa0a1a2a7abaeb2babfc0bbbac0c5cddcecf6fbfa +edddd4cecac8c5c3c0bdbab9b8b7b0b7c2c5ced6d1d6d4cbbebfccd8e5dc +af7d7e99a7a195938d8b8e8c888a9293918e8c8d6a666565605a5d646667 +6764605f63686d6d6b696a6d696361606060616365666b655f5f63686867 +6b646266676362656b686565686a6a6866686b6c6c6e70726f6b68696d72 +74747474726d6e71706b706e6b6f71726b666b707476716d69686c6b6c6e +6f6e6b696a6e706e6a6a6f7673787c7b76737477777b7c7a7473767a7575 +7476787877757b7b7a7979797a7a807f7f7f7b7370727574717071737576 +787a7c7d7c7a77757c7a7677777978786f72757675747576797775737273 +7475757171737473747979787777797b7c7b807e7d7a79797b7b7b756c66 +65686b6d696969696a686361653b21311b2d3c384d505151515354564459 +503c3f251b474b535a55483b37384f3f473643482847609dae73351e304c +5250363c53595f575d595c5b595d52393c76ac321d262734242321201f20 +1f201d3a183e5d97deffca443f251b221616040e1c221f1d1e221b221719 +1e222a1e1b0014241a2028251f262a1f85391c1f1c252a24202225272120 +1e1c1d1e20222020223539263d7c75797c1b39b5a395995b2b2230131e16 +1a5ea1858c423125311226b3411b341d2b541d03010c010f060a12110917 +313e4fa27c06371f091522323d47473b5fa7664c3927412f131c19282430 +3a3b4752655b49463b394e4a4fffe83a22212019291922261131221d2113 +6e6b5b6a3319301924212226182918201c221b16362e2d487c9191969694 +91877c7a818b8e8e9ca7b5c1c5c1b9b2b5b3aea7a09d9b9ea39f948a827d +7b7b7f7a797d848c97a3b2b6bbbdbfc3c8cdcdc8c9cfd7dfeefbfdfffff2 +e4dbd7d3d3d2d0cfcccbcac9c7c0c4cac9cfd3cacdc9beb1b1bfcbceaf75 +413e576660595c5b5e63646062686866636162423e3d3d3832353c3e3f3f +3c38373b3e4343413f40433f393736363637373b3c423c36363a3f3f3e42 +3b393d3e3a393c403d3a3a3d3f3f3d3b3d404141434547413d3a3b3f4446 +464646443f4043423b3d39393a3f3d3931393b42413f3837363b3c3d3f40 +3f3c38393b3d3b35353a3e3b3d41403b38393c3c40413f39383b3f3d3d3c +3e40403f3d434342414141424248474747453d3b3d403f3f3e3f41434443 +4246454642413d4642413f424143433a3d4041403f40414442403e3d3e3f +40403c3c3e3f4042464643424244434443484645454446474a4a453e3839 +3c3f413c3c3a3b3c3c3b3e4825112511273532404141403c3d3e4131453f +2e341d15414149504c3f322e2f46353d2d3a40214264a2b275341b2c4649 +462a2c4143473e45414445454b442e3774ab321c25253124242320201f20 +1e1d39183c5c96e0ffcc4942291d221616040e1c211f1d21251c241a1c21 +28322724071a26191c201e1721271d853a1c1c1a20241f1c1f2428242321 +1f1f202224222124363a273e807f868a2a4bc7b3a3a3633128371e2b201f +60a4888d43342735172dba48223b242e561f05040f0412070a13120a1633 +4258ae880f3e260e1927343f494a4165ae6d54412e4533151e1c2b293642 +45515c6e62504d423e534f52ffec3e2423221927151f24123227242b1d7b +77697842263c232f2a292d1b2b171e181c160f302e3d6093a4a2a5a4a09c +91847d81898b8b9da9b9c6cccbc6c0c7c7c5c1bbbab9b4afa39991898485 +858b88878e959da8b2bcbfc4c7c9cbd1d6d6d0d0d4dbe3f2fffffffff8ec +e3dedad9d8d8d6d3d2d1d1d6d0d7dfe2ebf0e9eae7dacbcad3ddd8aa6936 +3247544c413e383738332d2f363d3c383637989592929495939194969797 +9594949495989a99959393959594939294979a9d9e999494989b99969595 +9493929294969e9a989a9ea09e9aa098959b9f9d9d9ea29b989da09f9ea2 +9fa0a0a09f9e9b9aa1a0a0a1a2a3a1a0a1a4a6a7a5a2a1a1a2a1a0a0a09f +9c9a9c9ea0a2a2a2a3a4a2a8aba8a4a5a5a4a6a7a8a6a4a4a5a7a8a5a7ab +a9a2a1a5a5a7a9a9a8a7a9ababaaabada9a3a4a7a8a8a8a6a5a5a8a9adab +aaa7a4a3a6a8acacacadaeadaaa7a1a5aaaba9a7a9acaaa9a8a5a2a2a4a7 +a7a9a8a5a7abafada7a7a6a6a8abb1b5b3b0afaeadadadadada49b999795 +9697918f949ca09e9d9a8d55242c121312080c0401000000000000000206 +0b111515110e0f121211111114161d121919236c5345260b0b0000171e0f +000007000000000201000001030705020007151f231f111a1a18252d2c2f +302613357e4f56923f0100010806000101000002000b00000d0011010007 +0008000d0c070c0d0505001105026b4200130903090d07081a220f0c0809 +060a0a0c0b0b090d25000541636967141475031c290d0200070514190f20 +31303655161f29132ca5c50d0b1936a73cefe9c9d0bdb59c9c94908d8d9a +837784050c19000b06311e272e3f4e7a3e4930042a2d0a00040a34082038 +33454d40362f0d1c142534605c392b1a090d05000300000800020c006a61 +59823417280c030a0a0d1d0e1d1517212b3e6c96a19e99918b8785848c92 +9ca8aeb0afacaba8a6a6a29e9c9a9b98928b827a747063687072737b8b97 +a0a8b0b6b9b9b9b9b0b1b2b4b7b9bbbcbebfc0c0bfc1c4c7d9d8d6d3d1cf +ceced2d2d1ceccc8c6c5d2c8c1bebdbec1c6cbcdcfcfc9c2bbbad6e7d4a1 +848e97928f969188898f9497939394928d66636060626362606365666664 +6363636467696864626264646362616367696c6d686363676a6865646463 +62616163656b6765676b6d6b676d6562686c6a6a6d716a676c6f6e6e726f +7070706f6e6b6a6f6f6e7070726f6f6f73747673716f6f706f6d6d6d6c69 +67696b6d707070717373797c797677777678797a78767677797976787c7a +73727676787a7a79787a7c7c7b7c7e7a74737675757573707073767b7c7b +78757474767a7a787a7a7a76746e72777876747679777675726f6f717472 +7473707277797973737474777a8084828281807e7e7e7e7d746b69666465 +6a6b69686c6c6a696d6b401c3427323a3b50514f4f51514f4d5151515052 +5355575b5c5c5c5c5e5e5f62646756554c4d937a694a2d2d20184756503b +4b5e56595a5c5c5b5a57575756524c4a515f6c6f7068726c666d6f6a6965 +553b549259579c5f2e222b312d2026240b1c220a2a0f081d031c0f04150c +160e1c1e1c242723251735231c8357092d2521272a1b17242d21211d1e1b +1f1f2120231e253d181d577779751e1e811333462f291828212b2a1b2a3b +3d47672a333d2740b8d61c182441af40eee4c2c9b6b39b9d958f8b869888 +818e1019280d1c15402b32374655814b583f163c3f1c0e161943152b413a +4c564b413d1d2e28394a76724f41301d2529242b1f1f2a1d1d251380776c +95472f462b20231d1b250f180f0c151f325d89939088807976797c8a94a2 +b0b8bab8b5b5b4b2b0aca7a3a1a19d978e857c76736a7177797a82919da6 +abb3b9bcbcbcbcb7b8babcbdbfc1c3c5c6c7c7c6c8cbcedcdbd9d6d4d2d3 +d3d9d9d8d7d5d3d1ced8cec4c1c0bfc2c7c9cbcdcdcac3bdb6c5caac6e45 +49514f5463655e616667696768696865413e3b3b3d3e3a383b3d3d3d3b3a +3a3a3b3f41403c3a393b3938373638393e41443f3a3a3e413f3c3b3b3a39 +38383a3c403c3a3c4042403c423a373d413f3f42463f3c41444340444142 +40403f3e3b393a3739383b3a3a373a3b3f3e3e393a3a3f3e3e3e403f3c3a +3c3c3e3f3d3b3c3b3b4144413b3c3c3b3d3e3e3c3a3a3b3e413e4044423b +3a3e3e4042424140424444434446423c3b3e3e3e403e3c3c3f4146464742 +413e4141474546454845443f393d4243413f41444241403d3a3a3c3f3e40 +413e40474a4943413f3f3f40464a484746454648484a4c443d3b3b393c40 +3e3a393c3c3b424c502b0f291e2a323243413f3e3e3e3c3a3e3c3e3f4245 +47494c4c4c4d4d4e4e4f525458494b45499077674a2e2f221a475348303c +4d42444141403f3e3e3e4041403b3b42505c626158625e5861635f5d5b4b +334e90585b9d5c291d272d281b1f1e05161d05250a051d051e1005180f19 +111f201d242621221533231d855a0b2c261f25281c1a262f23221e1f1c20 +202221231f253d181d5575787827288d203b4a30281a2f2c3b3a27334546 +4f71333c463047bfdd211e2843b143f3eac9d0bdb8a0a199948e8d9d8b83 +90141f2d14231c4733383e4c5b87515f461a404320121a1e481b314a4454 +5b4d433e1d2e27384874704d3f2e1e2527232a1e1f2c21242c1d8b827aa3 +553b4e302427211e28131c11101923366292a2a19a908986878997a1aebb +c1c3c1bebfc0bebcb8b6b3b1b1b0aaa198918b867a8087898a929fabb6bc +c4c8cbcbcbcbc7c8c7c9c9cbcdcdcfcecfcdccced1d4e5e4e2dfdddbd9d9 +dfdfe0dcdad7d5d5e4dcd3d0cfd1d4d9dee0e2e2dcd5ccc4cdcfb4754d4e +53494448423430323035383d3c3832979492929495949294959595959495 +96949698979492929393939495969798999b979394999c9a989898979594 +9596989f9b98999da09e9b9f99979da09e9da0a09a989da09e9ea19d9d9d +9c9b9a9999a1a1a1a2a2a2a09fa1a3a5a5a2a09e9ea3a2a1a09e9d9a98a0 +a0a1a2a2a3a4a6a3aaada9a6a7a8a7a8a8a8a6a4a4a6a8a8a6a7aba8a2a1 +a6a7a8aaa9a8a8aaabacabacaeaba5a5a8a8a9a9a8a8a9acada8a7a7a5a4 +a4a8aab1afaeaeaeaca8a5a4a8acaba8a6a7a9a9aaa9a8a6a6a8aaadafae +aaa9aeb0afabaaa8a7a8abafb2b1b0afadadacadadaba29b989795979891 +8e959ea3a09d98834e1d2a0a13100c080000000000000000000000000203 +01000000000000000000020b0a1a1d25633961652b0d0601201509000004 +0000010104060506070a0c060402030507080600030000060b0e14172204 +04371f2d403b2130362e2c2a342f3d1d122e150dc7f1f6140c1700120008 +1410060704010417000400704e00080b0207101010161112101011100f0c +0b1717151d2b1319474d23935f204b3608457b1c2d0600564300225d4340 +3b154897391030031b191928470a33444c304657646c615f7480a2a59297 +180d06010f023c87724d4e5865685b19101135201b0a00186f5b313e3c33 +3644211c16130f001416080b0f0d10000000030200000e00033f4b384a43 +15060000150a0c131d1620324f7a9588676b6f7d8c99a5aeb4b2afaba59f +9b97959896928d87817d7a6a6d737b838b9294a6a7aaacadacabaaa5a6a6 +a5a7a7acaeaaa9a6a3a09d9b999c9d9d9d9c9ea2a6a1a4a9adb1b5b8b8bb +bdc3cddae7f4f8e4ded9d4cec3bdbbb8bcc0c5c5c4c0c1bfb3cdf2d58a7a +a1a08c8b9291989781939393928e65626060626363616364646464636465 +636567666361616262626364666768696a666263686b6967676766646364 +65676c6865666a6d6b686c66646a6d6b6a6d6f69676c6f6d6e716d6d6d6c +6b6a696a6f70707171716f6e70727474716f6d6c71706e6d6b6a67656d6d +6e7070717375747b7e7a78797a797a7a7a787676787a7977787c79737277 +78797b7a79797b7c7d7c7d7f7c767477757676757374777a767878767575 +76787d7b7a7a797773707175797875737476767776757373757775777672 +73787a7977767676777a7e818382817f7e7d7e7e7b726b686664666b6c6a +696b6b67686b613b1b362132353b4a4d4d4f525352515656555351505052 +55565656565858595d5f62585c54528c628a894d2c25274e4d4c3c4b5d56 +585b5a5a5c5e5f61646662605f6064666767606a6762676863625b5e3329 +52323b566a5d6c6f66645f69616f4c415c4038eaffff1f1a270f24131d29 +282021201d22391a201785630e20271e24281f1919161d202021201f1c1b +2727252d3b2329555c309d682955471f639d435427096f5810306b53524e +2b5ead4f24431228242434510b313a41253c52636d625e72799da99da123 +1c181220134d947c56555d6c7368281f2347322d1c11257c643a45413b40 +4e302c2a27280e2e30222529252c1a1d272b2823202d1b1e55614a5c552b +25211d2f1d17161b0d14213e668174596a7583929fabb4bab8b5b1aba5a1 +9d9b9e9c98938d878380707379818991989badafb3b5b4b3b2b1acacacab +aaadafb4afaeaba9a6a3a19fa2a3a4a4a3a5a9ada5a8adb1b5b9bcbfc2c6 +ccd6e3f2ffffe8e0d8d6d0c7c1bfbbbfc6cbcccbc7c4bba5b5d0a5523c63 +63535864646c6a536768696865403d3b3b3d3e3b393b3c3b3b3b3a393a3b +3d3f3e3b3938393737383938393a3b413d393a3f42403e3e3e3d3b3a3b3c +3e413d3a3b3f42403d413b393f42403f42443e3c41444240433f3f3d3c3b +3a38363a38383939393736383a3c3c393735373e3f3f3e3e3f3c3a40403f +3f3d3c3b3d3c4346423d3e3f3e3f3f3e3c3a3a3c3e413f4044413b3a3f40 +4143424141434445444547443e3c3f3e3f3f3e3d3e414341444442414143 +454b4948484745413e3c404443403e3f41414241403e3e40424244454144 +494c4b4744433e3f40434647464543464548484a413d3a3b393d413f3a3a +3c3c3a404a482a0e2c192a2d313c3d3d3e40403f3d434342414040404144 +444445454646464a4c514a524e4f885c84874e2e282a4e4a452f3b4b4142 +423e3d414243454a4d49494a4b4e5051534b55524d535550524c5229224d +303b54625362665d5b555f5866423752372fe4ffff211b270f26141e2a2a +2122211e223a1b231b8a681122281f2228221e1e1a1f202021201f1c1b27 +27252d3b23295555299e6d32615125659c40532e14836b1f3d7862605c38 +6bb85a2d4a192e282634520f3642492d4458687166637780a1aa99a2251f +1c1a281d559d855d5d6372796e2d24274b363120152b826b414d473d3f4d +2d292825240a2b2d1f2228252d191c272b292525322427606c586a63362a +231f3021191b2012182946718c7f66788391a0adb9c2c8c6c3bfb9b3afab +a9aeaca8a39d9793908083899199a1a8abc0c2c4c6c6c5c2c1bcbcbcb9b9 +bbbec2c2c1beb9b6b3afadaeafaeaeadadb1b7b1b4b9bdc1c5c7c9cccfd5 +dfeaf8fffff3ece6e2ddd3cdcbcaced6dbdcdbd7d3c9b4c5e0b55f47665e +423d403a3b331f3a3b393631959392929495959495949393949597989395 +969593919192929395969796959598959395999c9b999998979595959697 +9f9b98999c9f9e9c9c999a9ea19e9d9d9d9a999d9f9e9ea09e9d9b9a9999 +9a9aa1a2a3a3a2a19f9ea3a5a6a4a19f9e9ea3a3a19f9c9a9898a4a3a1a1 +a1a3a6a7a5abaeaaa7a9ababa9a9a8a5a3a4a7a9a7a7a8aaa7a3a3a6a8a9 +aaaaa9a9aaacadacaeafaca6a7aaa3a4a5a4a5a7aaaca6a6a7a7a6a7acae +b4b2b0aeaeaba6a2a4a8acaba9a7a8aaa9abacacaaaaacaeafb1afaba9ad +afadaaa9a7a8aaadb0b3b1b0afadacacacaca9a19998979698999390959e +a29f9b9683501f2c06191013090201010201000000000000020507080909 +0a0b0b0b0808030307060f030019002d3b0c00050010160c000006000203 +0a090705030000000002040400000105040f07000000010e17251a40522b +68a51e19312d2125252b2843393a534337c3dfe41f0e2310091205100c05 +090a0d140000170c54373f7a1a09040a0d141a1418181c1a1e1b1c1a1813 +161e1e131c30131f56550035190c434b1152322b2d0a1f378c697a510b33 +933c00548a3f08282d857a4859555b564d2e412d31353d2a2749b0311225 +427c4100204b78949793503710741e1f122f2e2400436b8d88aad2764000 +28030915151c1b13141a1c1525270d000000070922223e71908f640b3329 +00001117001a1d355a72685b74999c9ba0a2a19e9c9b95918c878586888a +76797f868e94989bb0afaeadabaaa9a8a39f9d9fa3a29b9392918c85807c +7e7d78797f8790989ea1a8aaacaeb1b6bec3c6c8c8c5c0b9b5b3b9b7b4b0 +afb1b3b6cecdcfd3d5d1d0d1c6c2bebababdc2c8c9d9cbb6cef0c9806a9f +aa96968f8797919494928f63616060626364636463626263646667626465 +6462606061616264656766656567646264686b6a6868676664646465666c +686566696c6b696966676b6e6b6a6a6c69686c6e6d6e706e6d6b6a69696a +6b6f707171706f6d6c717374726f6d6c6c71716e6c6967656571706e6f6f +717576767c807c797b7d7d7b7b7a777576797b7878797b78747477797a7b +7b7a7a7b7d7e7d7f807d77767970717271707275797477787877787a7c81 +7f7d7b7976716d7175797876747577767879797777797b77797773737779 +7776757577797c7f828382817f7d7d7d7d797169686665676c6c6b696b6a +666669613d1d381d3835424b4f4f52555654515454545353535455575756 +575757595b5756554c4b341f3d24515b2c1a24273e4f503e4b5b5356575e +5d5b5957565555575a5d5d5c5b5d5e5761625f656460615958425f714a8b +d35a5d736f60646369627d717288786aecf4f22d1d32221b261a25241d21 +2427301e0f3024674a549234231e1f1d1e1d1518181c1a1e1b1c1a181316 +1e1e131c331c285e5c063c251d5a672f704f43421b2d459a798c652149a9 +5205679b4e17363d937f49544e54514c32463235343b282b52b83b1d324f +8a4f032a547f989a985b441f83303125424036035074968fb1da804a0e38 +171d2e2e36352d2e343431474a2f1b181b2424393950839e9d701d504b14 +1424220118172a4d63584b648f9ba1a6a8a7a4a2a19b97928d8b8c8e907c +7f858c949a9ea1b6b5b4b3b1b0afaea9a5a3a5a9a8a19998948f89828080 +8380848a929ba3a9acb3b5b7babdc2cacfced0d0cdc9c5c1c0c6c4c1c0bf +c1c3c4d4d1d1d7d8d7d6d7ccc8c4c0c0c3c8cac0ccbda6b8d2a14f306068 +585d5e5c6f66676868663e3c3b3b3d3e3c3b3c3b39393a3b3b3c3a3c3d3c +3a3837383637393a393837373e3b393b3f42413f3f3e3d3b3b3b3c3d413d +3a3b3e41403e3e3b3c4043403f3f413e3d41434240423e3d3b3a38383937 +3a3b3c3c3b3a38373c3e3f3d3a3837373e403f3d3c3a3a3a44433f3e3c3c +3d3e3e4445413e40424240403e3b393a3d3f40404143403c3c3f41424343 +4242434546454748453f3e41393a3b3a3a3c3f423f414242414245474c4a +484645423d393c404443413f404241434444424244464446464244484b49 +4643423f41424447474645434545474748403b3a3b3a3e42413e3a3c3b39 +3e48482c102e15302d383d3f3f414343413e41414141424344454949494a +4a4a4a4b4746474143301e3b204d582b1a26263c49452e37463c3e3f4643 +43413f3d3e3d3f4247474544464a4753504a4e4d4a4f4b4f3a5a6c4584c9 +4e5067635559565c567166677e6e61e6f5f5302035241d271b26261f2325 +2831201134286d50579433221d201d20221a2020242226232422201b1e26 +261b243819256164124c3327606a2f72554f552f3a50a58698702e56b65d +0e6ea2531c393d93824d5a555b57513549353839402b2c4fba3d21385893 +580c345d87a1a19e614a248834352946443a09567b9d97b7dd814b0e3716 +1c2b2b35342c2d353632484c311d1b1e2a2b41415c8fabaa8029564d1615 +2824051d1b30546a62556f9aa9afb4b6b5b2b0afa9a5a09b999a9c9e8c8f +959ca4aaaeb1c6c5c4c3c1c0bfbeb9b5b3b5b7b6afa7a6a39e958f8c8d93 +959aa0a6afb7bdc0c5c7c9cacdd2dadfe1e3e3e0dad5d1d0d6d4d1cfccce +d0d1e2dde0e3e7e5e4e5dad6d4d0d0d3d8d9d1ddccb3c4daa9522e575841 +3f362f3e3b3d3936329392919293949595959391919497999a9495969594 +929191949495959595959597959495989a9a9898969493939495949f9c99 +999b9e9e9e98999b9ea09e9b9a9a999b9d9f9f9e9ea19f9c9a999b9d9ea1 +a3a4a4a19f9e9ea6a7a7a4a19f9e9fa0a1a09e9b9a9a9aa6a39f9ea0a3a6 +a7a6acada9a6a9acadaaaaa8a6a4a4a8aba7a8a9a9a6a4a5a7a8a9aaaaa8 +a8a9abadacadafaca6a6a9a4a4a5a4a4a6a9aaaaaaabacabacb0b2b4b2b0 +aeaeaba6a2a0a5aaabaaa9acaeaaacaeaeacababacaeb0afaaa8ababa8a4 +a4a3a6abb0b4b5b1b0aeadacabababa89f98979797999a9491969ea19d99 +957e4b1c27001b090b110b0909080501000000020305080c0e1012121212 +100f0c0f11151e2615010908080a0109100a1f1b120000100e14110c0a0a +0c0e0e100f0b0c0e0e0e0f1218141e14070000011323270001110f342509 +0000000000000000000000000b0000000012090f16081c141810060b0705 +0a121100003c2d41703528211e16171d18252022171d161d1a22151e2019 +15211d0b021550a65e0d010000102237af87420734976c74500e41eeee17 +d5eedc001719b7eec4eaecffe4fab6f6eaedd4f0b6e4acf85307195df569 +161b15243e2800000b36f2151a1128dcdc05000e294f51450a1022855020 +0a0f0f14110b10140900060004110d2c4c41005065102a4d0e1a00060c00 +12231c3e595e516695a48c9592928f8b8887887f82888f969ca0a2b9b9b9 +b7b5b3b1b0adaba9a5a19e9b9a8f877c7776726d667279828c949ca3a5b7 +b6b7b7b8b9b9babcbdbec0c3c9d0d5f2f3f0e9dfd5d0ccc7c8c8c8c7c6c5 +c5bbb6b5b9bec1c6cbcfcbc5c0bcbcbdc1cac8cbccbaa9c1ebb78285a597 +8d9698909394939061605f60616264646462606063666869636465646361 +60606363646465656565666463646769696767656362626364636c696666 +686b6b6b6566686b6d6b686769686a6c6e6e6e6e716f6c6a696b6d6e6f71 +72726f6d6c6c747575726f6d6c6d6e6f6d6b6867676773706c6c6e717576 +777d7f7b787b7e7f7c7c7a7876767a7d78797a7a77757678797a7b7b7979 +7a7c7e7d7e807d777578717172716f717477787b7c7d7c7d7e80817f7d7b +7976716d6d7277787776797b77797b7b7978787976787772727575727070 +71757a7f83848382807f7d7c7c7c786f68676666686d6d6b6a6b69646368 +5e381a33173a2c394d4f505152524e4b4d4d4c4d4d4f5050525151515152 +5354595b5b5d5b3f23272627271e273032505756414d5f5c5e5c5a59595b +5d6062635d60616363646767566165646967636863591e21363a685f452f +312b272f292630232a2c1c3a291e1007211b21281c30292d251e201f1d24 +302f17154d3e54854d403932241f1e151f1a1c11171017141c0f181a130f +1b1a0f071954a963140d0d15283a4ec298511341a57d86642457ffff2de9 +ffef11292dcafac9e9eafee3febefff4f5d9f1b7e8b2fd5b102467ff7620 +241e28422b01031a45ff272d243beeee1409193256584d141b3095643422 +27292e2b252a2c221c2516212d29436353105e731c33541c351b2424091d +281b395053465b8a988697989895918e8d8e85888e959ca2a6a8bfbfbfbd +bbb9b7b6b3b1afaba7a4a1a092897e7978766f6a747b848e969ea5abc2c2 +c3c3c4c5c5c6c8c9caccd0d6dde2fdfefbf4eae2dddcd6d8d7d9d8d7d6d5 +c2bcbbbfc4c7ccd1d5d1cbc6c2c2c3c3c3bfc9ccb9a2aecb864642615a57 +6b7164666867653c3b3a3b3c3d3c3c3c3a37373a3d3d3e3b3c3d3c3b3937 +3738383939373737373d3b3a3b3e40403e3e3c3a39393a3b3a413e3b3b3d +4040403a3b3d4042403d3c3e3d3f4143434040413f3c3a383a3c3d3c3c3f +3d3c3839374140423d3c38393a3d3e3e3c3b3a3c3c46413d393b3c3d3e3f +4544403d40434441413e3c3a3a3e42404142423f3d3e4041424343414142 +4446454648453f3d403a3a3b3a393b3e40434546474647494b4c4a484645 +423d39383d42434241444642444646444343444345464143464744403e3e +3d424548494746444345444646473e3a393b3b3f43423e3b3c3a373d4745 +270e290f32252f4142424343423e3b3d3d3d3e3f41434448484848484848 +484c4e5054553d24272422251c272f314c4f493038494447454444444648 +4a4c4c47494d4e4e4f52544c585651524f4c555550171c2f315b51392527 +221e261e1c271a21231432221a110a241d232a1d312a2e282023211f2532 +311b1a544558884d4039332522231c2924261b211a211e261922241d1925 +21120a2260ba76261b151a2a3e56d0aa641f4aae87906f3164ffff38f2ff +f5182d2cc8facceeefffe8ffc0fff5f7dcf5bbe9b2ff5e152a70ff7f2a2d +27314b3207091f4aff2b31283ff2f2190f1f395e5e50151d319563352227 +282f2c262b30261e281a25312d4b6b5d1a6b802a4266293c1d26260d1f2c +203d55594c6392a290a4a6a6a39f9c9b9c93969ca3aab0b4b6cfcfcfcdcb +c9c7c6c3c1bfbbb7b4b1b0a1968b8685827c768188919ba3abb2bbd6dad9 +d9dadbdbdcdedfe0e2e3e9f0f5fffffffffef3f0ece9e8eae9e8e7e6e4d2 +cccbcfd4d5dcdfe3dfdbd6d2d2d3d2d5d0d6d6c1a9b2ce89453c54453b48 +4a3d3d3b363292929292929394969592909194989a9a9696969595949291 +9796949393949698979796979898979698959392959696959d9c9a9a9b9d +9e9e95999c9e9d9c9a97979a9d9e9fa09f9ea29f9c9a999b9ea0a2a4a4a3 +a09e9ea0a6a6a5a29e9d9e9f9d9e9e9d9b9a9d9fa6a19d9b9ea2a5a6a7ab +aca6a3a6abacaaaaa9a7a5a6a8aba7a9a9a7a6a6a7a8a8a9aaa9a8a7a8a9 +acabacaeaba5a6a8abacabaaa9a9acadadadaeaeacacafb0b1b0aeaeaeac +a8a5a1a5aaacaaaaacaeabacaeadaaa8a8a9afb2b0aca8abaaa7a4a2a1a5 +abb0b3b3b1b0aeadababaaaaa79e97969796999a9492969da19d9794713d +212d132b0e0b1411100e0e0b07040b0a0909080909090c0d0d0d0d0c0906 +0104020b0f0100000b000000000000100b03000005090f0b110b08080908 +0602120c08050608080c161f13070000000d102406050004262126010000 +000300000e0d0c161323161d251e425031252e1817160b07100e080a000c +07073b5623652b2b2f26130d1313140f1b102016211d230e1f181910220c +1715110d3200070b260f0b2400014b4f0c2d74627f771009170500001c23 +001314467e79a1a484877f6e9598b0bcbb96c0badf56202604000001060c +0010160d0c1500002a05150e210b0005021d060f0309100035331a0d1a23 +2e2819181a0d0f0100202504308f8b340000021007032d2e3b0e030f1b27 +5854648491857b7b7377818b959ea7acabaeb1b4b5b4b2b0a4a4a4a3a2a0 +9e9d8785817b75706b6b767a7f8995a0adb1b6b7b9b9b7b6b5b5a6a5a6a8 +aaacadaeb1b1b0aeaeb0b4b8afb3b9bbbbbbc0c5cbc9c9cacccdd0d3e0d7 +cdc8c1bab7b8b8bdc5cbcbc6bfbcb9b6b2b5bcc0c0c2dfd39c8096978797 +9194969593606060606061636564615f6063676969656565646463616066 +65636263646668666665666767666567646261646565646a696767686a6b +6b6266696b6a69676466696c6d6f706f6e726f6c6a696b6e70707272716e +6c6c6e747473706c6b6c6d6b6c6b6a68676a6c736e6a696c707475797d7e +7875787d7e7c7c7b7977787a7d787a7a7877777879797a7b7a7978797a7d +7c7d7f7c767577787978777474777a7b7e7f7f7d7d7d7e7e7d7b7b797773 +706e7277797777797b78797b7a77757576787b787472757471706e6f747a +7f82838382807f7c7c7b7b776e67666665686d6d6c6a6a69646367512c1f +38284a3134464645464847434249484543403e3e3c3f3e3e3e3e3f404240 +433f423c25120b23151817110e174147452e374b4a4d4a56545151525250 +4f5d595554555757554e565b5b615d5a605259312e2c3a665e53251b1b1f +2318182c2926302b3b2b32383054634438412b2a291e1c23231d2209281c +1a4a653277404045381e12120e0e09150a1a101b171d081912130a1c0917 +18130e33000c12301c1a3611115b5f193a8373918b261f2f1d060d333713 +282c5c8e84a6a7878c8979a5a8bec7c39bc4c0e45e29310e02020b0f1503 +1419121724040a3c182823341d0a120d280f180c131b0c44472d25323d47 +4131302e25281d19393c1b43a29942050109170d0f464d5726151a202856 +4f5d7d8c807579777d87919ba4adb2b1b4b7babbbab8b6aaaaaaa9a8a6a4 +a38d8b87817b76716e787a7f8995a2adb3b6b9bbbbb9b8b7b8afb0b1b3b5 +b7b8b9bcbcbbb9b9bbbfc3b7bbc1c3c3c7cbd1d6d6d6d7d9dde0e0e9ded4 +cfc8c1bebfbfc4cbd1d1ccc5bfbbb8bac2c9c7beb1bca260405a5f576963 +646766653b3b3b3b3b3c3b3d3c3936373a3e3e3e3d3d3d3c3c3b38373b3a +38373536383a3d3d3c3d3e3e3d3c3e3b39383b3c3c3b3f3e3c3c3d3f4040 +373b3e403f3e3c393b3e414241424140423f3b39383a3d3f3f3f413e3d39 +3b3b4341423d3b383b3c3a3b3c3b3b3a3d3f463f3b36393b3c3d3e42433d +3a3d42434141403e3c3d3f42404242403f3f404141424342414041424544 +4547443e3d3f414241403e3e414346484949474748494948464645433f3c +393d42444242444643444645424040414245454343464542403c3c3c4245 +47454746444344444545463d39383b3a3f43423f3b3b3a373c463a1a1330 +23442a2c3d3c3b3b3c3b37353c3b3937353434353a3a3a3a3a3a3a3a373a +373c3925150d23121816120d133b3d371c23333236354443404041413f3d +4945413f4042424245504f4b4a45444e444f2a28222d564f4c23191a1e22 +17182c2a27312d3d2e353c345867483c452f2e2d221f272620240c2b2120 +4f6a377b414143382016181518152116261c27232914251e1f1628121f21 +2020471320223a241f3a191e6b6f22428a7b9b96332c3b2910153b3e1a2d +2c5a8e86aaac8c908b7ba5a8bfc9c69ec5c0e7612e37170b0b14181e0c1d +20181d29090e401c2c2638210f18132e161f11151f0f47483127343e4b45 +353435292c201d3d42214aa9a44d141019271d1d4d505a28191c242c5953 +648493877f84838b959fa9b2bbc0bfc2c5c8c9c8c6c4bababab9b8b6b4b3 +9d9b97918b86817d85868b95a1aeb9bfc2c5c7c7c6c5c4c7c0c2c3c5c9cb +cccdd0d0cfcdcdcfd5d7caced4d6d6d7dde1e8e6e7e7e9eceff0faf0e6e1 +dad1d0cfcfd4dbe1e1dcd3cecac7c7cbd1cdc3b7c2a6623e5050434f423e +3d3833919293929191939595929091969999989796959596959391989694 +939396999b97979798979695949a969394989b9b999b9b9b9c9c9d9d9d94 +9a9e9d9c9c9a97949ba0a0a0a2a19e9f9e9b99999b9d9fa2a4a4a19d9da0 +a4a4a4a29e9b9b9d9f9b9d9f9d9b9b9fa3a49f9b9b9fa4a6a6a8acaba4a1 +a4a9aaaaababaaa8a7a8aaa6aaaaa6a5a7a9a8a9aaabaaa9a8a9aaacabac +aeaba5a5a8acacacaaa9a9abacadacaeadaba9abacafaeadaeafada9a7a7 +aaaeada9a7a7a9abacacaaa7a5a6a7b1b4b3afacadaca9a9a6a4a7acafaf +adb1b0aeacabaaa9a9a79e97969696989c9693979da09a979370444c5e62 +806c6b767572737474737278777676767679797a7a7b7b797774716d7066 +69645b635f5c57635b51514e5a57543a3e4a4a504a403734323433302d29 +241d1b1d2021251f241b130f08071517000001181d131114000002010100 +0300060612101d1827232f214021291515120f04030b0803081100020037 +870027101219140b1c3c4c38323f2c381e2114371a341e371d3417202105 +0e16122c0f0c00112c1d26bed01044886d5e51181250432732210119020b +0739b6c6691b1132d1e99510000984c46e0810200613111117001a110b09 +1f060e0115010819070007000718101d1b17221e0104110f2120383f2913 +0903000b02030a1e1826768c5a092747242b36002a683e070c25494b7585 +6a55647b80989ca5aaaba9a7a6aaa7a39e9a97959491908d88837d797680 +83899099a0a6acb2b5b7b4afa9aaa99f9f9d9a999ca1a59c9a989693908e +8d90929495979a9ea2a3a9afb0acacb1b6b1b1b4bbc7d7e7f0e2dcd9d8d5 +cdc8c7bbbbbdbfc1c2c3c3bbb4aeb1b5b5b7bcc1d6e6be7e7b9387929496 +95945f6061605f5f626464615f6065686867666564646564626067656362 +6366696b666666676665646369656263676a6a6868686869696a6a6a6167 +6b6a69696764636a6f6f7072716e6f6e6b69696b6d6f7072726f6b6b6e72 +7272706c69696b6d696b6c6a68686c70716c69696d7375757a7e7d767376 +7b7c7c7d7d7c7a797a7c777b7b7776787a797a7b7c7b7a797a7b7d7c7d7f +7c76747779797977747476797b7d7f7e7c7a797a7c7b7a7b7a7874727477 +7b7a7674747678797977747273747a7d7b7777777673757272767b7e7f7d +8382807e7c7b7a7a776e67666565676d6c6a686a6764636852334a69779d +8f909a99999a9d9f9e9da3a2a19f9d9d9d9da1a19f9fa09fa1a2a4a79d9a +8c7a7c746f6b76706a70768b90947d7e8781817d7e7b7676767774716d69 +646264686a68575b5d5f66615e665e3913344e57534b3813151c1b191218 +06191924222f273936423453343c2828252217161e1b161d2a1917054494 +033924272d24151f394736323f2c381e2114371a341e371d341722250811 +18142e1412081c392b37cfe01d51977c6f632c28685b3f4a391a321e2824 +4dc6d071231b40e3fdab220e148ec974101829111e1e1b2106231a121028 +13201328141d2e1c121a0516251b2624202d2b1016242439385158422a20 +170e231b1b22322c39879a66122e4e2a31421947815316172a4d4b738367 +54647b839ca2abb0b1afadacb0ada9a4a09d9b9a9796938e89837f7c8689 +8f969fa6acafb2b5b5b4afabaaaba1a19f9e9c9fa4a8a2a09e9c99969493 +9597999a9c9fa3a7a6acb2b3b2b2b7bcb9b9bcc3d0e1f0f9eae4e1e0ddd6 +cfcec2c2c3c5c7c8c9cbc4c0bec3c6c2bbb5adb7bd8d4b485e5360636666 +663a3b3c3b3a3a3a3c3c3936373c3f3d3c3e3d3c3c3d3c39373c3a383735 +383b3d3d3d3d3e3d3c3b3a403c393a3e41413f3d3d3d3e3e3f3f3f363c40 +3f3e3e3c39383f44444244433e3f3e3a38383a3c3e3f41413e3a3a3d4141 +413f3b38383a3c383a3d3b3b3b3f43443d3836383b3d3b3f43423b383b40 +41414242413f3e3f413f43433f3e40424142434443424142434544454744 +3e3c3f424242403e3e40424647494846444445474645464644403e3f4246 +45413f3f41434444423f3d3e3f444748444548474445403d3e4143413f47 +46444244434444463d39383a3a3e43423e3a3b3a383c463a233e61729888 +8996959495979897969c9b9a9998989999a0a09f9f9f9e9e9e9ea197968b +7c8079736c7a736e72758787866c6d756c6e6c716e6c696a6865625e5752 +50525456574e555352534d4b554e2d092b4149433f3414161d1c1b141b09 +1d1d2826332c3d3a46385738402c2c29261b1a221f1a202e1d1c0c4a9a09 +3b25282c241724404e413c493642282b1e41243e2841273e212e3119242f +2b45271e0f203f3441dfef25579c83776d3735746749544321392126204c +c6d274261d41e3fca9220e1690cc74121b2e152426242a0f2c211a182d19 +24172c1820311f161e091b2b212d2b273131151a28273d3c555d47302620 +15271f1f263933408fa572213e5e3a414e204b855619192e504d76886e5a +6c838ca8b0b9bebfbdbbbabebbb7b2aeaba9a8a7a6a39e99938f8c96999f +a6afb6bcbebebfc0bebbb7b6b8aeaeacaaabaeb3b7b0aeacaaa9a6a4a3a8 +aaacadafb3b7bbb7bbc1c2c0c0c5cac6c6c9d0dfedfffffdf7f4f3f0e7e1 +e0d4d2d3d5d7d8d7d8d3cecbcdd0cbc4bdb6bfc3914a44584547423e3a34 +92939493908f929495929092979a9895969493939595928f969695959798 +9a9b949597989796969698949294999d9d9b989a9d9e9e9d9c9c969ea19e +9b9d9d9a939ca3a2a1a3a39f9f9e9c9b9b9c9ea0a3a4a39f9b9ca2a8a6a5 +a29f9c9da0a39d9fa19e9b9b9fa4a39e9a9ca2a7a8a7abaeaba49fa3a8aa +a8aaacacaaa8a8a9a6aaaba5a4a8aaa9acadaeadabaaabacaeacaeafaca6 +a7aaa7a7a7a6a6a6a9aaacacaeadabaaabacb0afaeaeafada9a6a9acafae +a9a6a6a8aaaaa9a7a5a5a7a9b1b4b3b0acaeada9ada9a6a9afb2b0adb1b0 +aeacaaa9a9a9a79f97969695979b9492969d9e9b98936b2f301405030000 +000000000000000000000000000000000000000000000000000d0a0e0400 +18161c141f1d202a1c13283328292d252f2d28212329343b3e3d3e3f4040 +4042474a51534e4e534b464e456a766e6c918082695f6d706c726d71727d +6d645171796a79817a80636e3c555a574b423f3634402927423246862975 +100c0e0b12345e6c8f7e86656b4749398763825c8d5a75579a6e7e6d8f1a +4e49a21917230c0039500000100003040c0022954b684d052508170a138f +9973838154cecf8f27293ec1f4ba2e25231e190e001019111221140c1005 +04130c00010813170800112000121e131d1a170d06161c4647251916100e +07041805100c003a885c00185a2b22680f10bfdc000c554980543a51768c +959f989ca0a19e9994928f8e8c8b8b8c8f90999ca1a8afb5b9bbb9b7b5b1 +adaaa7a7a1a1a19a938e8d8d8784827d7977777a848a9098a1aab0b3b9bd +c2c7cacfd3d8e4eaeeeaded3cfcfcfcbc3bebbbbbcbdbdb8b9c0c5c6c9cc +cdc7beb7b6b9bfc1bcbdb8ababb7c0beb7b3b9d3d1977a95929293939460 +6162615e5d616364615f6166696764656362626464615e6565646467686a +6b636466676665656567636163686c6c6a65676a6b6b6a6969636b6e6b68 +6a6a67636c73727173736f6f6e6c6b6c6d6f707171706c68696f7573726f +6c696a6d716b6d6f6c68686c71706b686a707677767d807d7671757a7c7a +7c7e7e7b79797a777b7c7675797b7a7d7e7f7e7c7b7c7d7f7d7f807d7775 +7874747473717174777b7d7f7e7c7b7a7b7d7c7b7b7a78747176797c7b76 +73737577777674727274767a7d7b7877797773797574787e81807d838280 +7e7b7a7a7a776f67666564666c6a68676a686564684d1f301f1a200f0b0a +06060606080909080809090b0d0f10151614141414171731403d3f2c1f31 +2b2a212d2e344742415f7064635f5153555d5e5e6670797c7b7c7d7e7e80 +82878a8f918d9097928e988eb1baaea8c9b3b1907f8d908c908b8d8e9686 +7c6989918291968f9578834f686d6a5d5451484654413f55445393378422 +20201b1a355969968b93727854564694708f699a678261a0748573962054 +4ea8201e2e1b084f640b071f041416200f3aad668368204227372a2ca3a7 +7e8e8f66e4e8a93d3d4ecffec438302e2c261d0c1d261e1f2e21191f1716 +261f141620282a1a041e2d091d291e2a2928201b2d335d5e3c2d2a22221e +1d301d2521064b9669082264332976262cd7ef06175d4d81553b5279909c +a69ea2a6a7a49f9a9895949291919295969fa2a7aeb5bbbfc1bfbdbbb7b3 +b0adaaa3a3a19c95928f908a8a88837f7d7e80878b9199a1aab0b3b9bdc1 +c6c9ced2d6e1e7ebe7dcd1cdcdcfcbc6c1bdbebec1c6c3c4cbd0d1d1d5d4 +cec5bebcbfc5cacfd3cab8b2bdc2bdb5adacbcae6a435b5f636566663b3c +3d3c3938393b3c3936383d403c393d3b3a3a3c3c38353a3a3939393a3c3d +3a3b3d3e3d3c3c3c3e3a383a3f4343413a3c3f40403f3e3e384043403d3f +3f3c353e45444345433f3f3d3b3a38393b3f4042413d393a40464443403d +3a3b3e403a3a3e3b39393f44413c37373b3e3f3c4244413a35393f413f41 +4343434141423f43443e3d41434245464746444344454947494a47414043 +3f3f3f3e3d3d404243454746444342434645444444423e3b41444746413e +3e404242413f3d3d3f41444748454547484447433f404446423f47464442 +43424444463e39383a393d42403e3b3b3a393d48350f2417151b0a060a07 +0707070809090808090a0c0e101118181717161616152d3b383b2b213530 +332a36363d4d45415a685a555344494c5556585e686e716e6f706f6f6f71 +7679828682848a8480897da1aba09cbeaaa98b7c8a8d8b908b8e919a8a80 +6d8d9586959b949a7d88556e716e6158534a48554341594859993a87241f +201b1c395f709e939b7a805c5e4e9c789771a26f8a6aac829789b03a6a61 +b4282432220f5c6f100a240b1c202b1a46b9718e73294a2a342529a2a880 +909066e2e5a63b3c4ed0ffc53a32322f2c2212232e262734271f241b1a2a +231719222b2e1e0924330f232f2432302f2620333963664436332e2b2421 +34212a260d539f72142e704039812e30dbf309196050855940578099a4b0 +aab0b4b5b2ada8a6a3a2a09f9fa0a3a4afb2b7bec5cbcfd1cfcdcbc7c3c0 +bdb9b0afada8a29e9c9f999896918f8d8e8e9090969ea9b2babdc5c9cfd4 +d7dee2e4ecf0f4f0e7dcd8d8d9d5cfcac9c7cacdd7d7d8dde2e3e4e6e6e0 +d5cecccfd3d9dde0d8c8c4cdd1cbc0b7b3c2b46f495a4e45413c35929495 +938f8e909395929093989a9793959391929493908d939597999a9b9b9b91 +9396989897989895918e91989c9c9a979a9ea09f9d9b9b99a1a49f9c9e9f +9c939da4a3a2a5a4a0a1a19f9f9fa0a1a2a3a4a29d999ba3aaaaa9a6a2a0 +a1a5a99fa2a39f9a9a9fa4a29e9b9da4a9aaa8adafaca49fa2a7a9a7aaad +aeaca9a8a8a6ababa5a3a8aba9afb0b0afadacadaeafaeafb1aea7a8aba7 +a8a8a8a8aaadafacacafafaeadaeafb1b0aeaeaeaca8a5a6aaaeadaaa8a9 +aba8a8a8a6a5a6a9acaeb1b1aeabacaba7aca9a7abb2b6b5b2b1b0aeacaa +a9a8a8a89f98969594979a9491969c9e9b96926b2d350a070d1421161611 +0e0f0f11100f0d0d0c0b0b0c090a06070706020000061919190100010009 +000507000000000011151d201b2c312014110f1413120c0d111815100e13 +15050402060f08020800091a180704000000000000000a05000015040d14 +1d13192019192527273d36363b39383c3e4c6458503e4a46492836060204 +05071b2a2014031402221734314a20420f4e0924044a4154434c4474286a +060f261b2044160b032c142e092400175a5d5085000f061d0015110d5f66 +625f1a03081d36414f414b211c3ca0838e3e001a151e14091c121613040b +0e020d0b0808301512251c1e172b0e0d1119122453491b1312090a16000d +09080027e1f1430b1f3e4531580a00417d0033436047566d80837f7d807d +81858a90969ea3a9abafb2b5b6b7b7b7b7b6b4b2afadaba8a6a19c96908c +8a857f766f6b6d71757b828f9aa5abafb3bcc0c0c0c1c1c2c2bfc2c6c8c8 +c8c9cbd8e2efeee6dcd8d6d5d6dadcdad4d1cacec3bbb8b8b9bec4c7c8ca +c9c5beb7aeabadb8c3c0b4afb0b4b6b3b0c3d7b87b8e9092939260626361 +5d5c5f6264615f62676966626462606163625f5c626466686a6b6b6b6062 +65676766676764605d60676b6b6964676b6d6c6a6868666e716c696b6c69 +636d74737275747071716f6f7071727370716f6a666870777776736f6d6e +72776d70716d67676c716f6c696b727879777f817e767174797b797c7f80 +7d7a7979777c7c7674797c7a808181807e7d7e7f807f80827f7876797475 +75757375787c7b7d80807f7e7d7e7e7d7b7b7977737073777b7a77757678 +7575757372737679777a7976767775727876767a818585828382807e7b7a +7979786f68666463666b6a676769686464694f1d35151c2a343e28241f1c +1d1e1f1f1d1c1b1a19191a1b1f1f1f1f1e1e2022344c4c4a2b121f0f1704 +11151217121828484c4e493b454e4d4b4546494a474442494e4d49474c52 +474841444b46414c4752615a41360d161a14201b1a2a231a193120292d36 +2c3237312d3a3c3c5049494e4b4a4e505e786d6551595154334518161613 +0f1a231d1f162715352a47445d335522611c3715544a5f4f58507f2f700d +16312e3961311e133b263f1c38142f75786ca11a2d27411e32271d6d7472 +73331d25364c535f4f592f2a4baf92a0500f2b262f271a2e242926192026 +1a25201d1b42241f322728243a1f1e262d293b6a603227261b1e2f0a2622 +20183bf5ff54192d4a513d6921125690043e4b654b5a70858a88878a8587 +8b90969ca4a9afb1b5b8bbbcbdbdbdbdbcbab8b5b3b1aeaca7a29c969290 +888379727173777b818996a3acb4b7bbbfbfbfbfc0c0c1c1bdc0c4c6c6c6 +c6c9d5dfeaebe3dbd5d5d4d6dadcdad7d1ced7cec6c3c3c4c6cdcecfd1d0 +cbc4bdbac1c4c9cbc2b5b2b7c0c3baadb2b588465e626565663b3d3e3c38 +37373a3c3936393e403b373c3a38393b3a363337393b3d3c3d3d3d37393c +3e3e3d3e3e3b3734373e424240393c4042413f3d3d3b4346413e40413e35 +3f46454445444040403e3e3c3d3e3f4142403b37394148484744403e3f43 +463c3d403c38383f44403b38363d403f3c4345423a35383e403e41444545 +4241413f44443e3c41444248494948464546474a494a4c494241443f4040 +403f41444743454848474645464746444443413d3a3e4246454240414340 +40403e3d3e4144414446434445464046413e40474a474447464442434243 +43473e3a3839383d41423d3b3c3a3b3f49370d2b0d17252f3a2a27221f20 +212222201f1e1d1c1c1d1d2223232322212121314747462912211522131f +2220221b1e2945474a4336424c4a46414143443f3b383e41403a383b4239 +3b3639413b363f3641514c352d071216101d181929231a1c34232c313a31 +363d35343f4141564f4d524f4e505260797068555e575837481815161411 +1f2a24251c2d1b3b304d4a63395b2867223d1c60597165706895417c151c +33323e69382213402a4723431f3b808377ac24352c3f182e251d6e757272 +301a21334a535f505a302b4eb297a45413322d362d2132282d2a1c23281c +2723201f462925382d312c4126252b342f4372683a32312727340d2a2624 +1c42fcff5c2438565d4b732716599407424e684e5d758b928f9094929599 +9ea4aab2b7bdbfc3c6c9cacbcbcdcdcccac8c5c3c1bebcb7b2aca6a29e97 +8f88817f81878b9199a8b4bec5cac8c6c4c4c4c6c6c9c9c8cbd1d3d4d4d7 +d7dee6f1f2ece3dedddce0e4e6e6e0dddae8e0dad5d5d6d9dee0e1e1e0db +d4cbc8ced2d9ded7cac5c9ceccc4b6bcc3984e544b46413991939493908f +929590919293949697979393949493918f8e939294989d9e9c9994959899 +9998969593908d8f94999c9d9f9c9c9e9d9a999c99a1a39b96999c9b9599 +9ea1a2a2a3a4a3a19b969ba4a59f9c9f9e9a9aa0a5a5a1a5a49f9ea2a19c +a09f9fa0a1a19f9d9d9d9ea0a4a8acaeacb1afa59fa3a9aaaaacaeaca9a8 +a9acacacaba9a7a7aaadacaeb0b0aeadadaeadafb0afaca9aaaaa6a6a6a6 +a6a9adafb1afb0afadacafafb0aeadafb1afaaa6a7a9aaa8abaeada8a5a7 +a8a9aaa9a8a7b3b2afaba6a6a9abadaba9abaeb1b3b3b6b2afafaeaba9a8 +a59d98989896979a9996989b9b99958f6e2b3b1a06060206182225180b07 +0f130b151d1811100c07070a0a05080b00000d18131a04000000334e4856 +15070129212c2311165f7179802c1a1b181d1d1517141d201c232b231c15 +171f1d311b1b2424190600000405020204040404050510000c02170e1418 +0a1a120a1f241a231a0d04050a0c0c0b0008010419100b222f2b2b201319 +231c1e0406160e198486716599567e6a0c0d4872567258495e5996261b24 +1f001f223e1e3f1973303200006d47587100090e321000131d312e372a67 +300b1b122b4523571221365b5a5a39132d090d23210b19140d0707080703 +03160b091718132a13200a19110c0e17235c412110000506060b00001700 +0289441800231a2b2f230a113512053f4c46596f78685a637683949ea8ad +b1b5b6b3b5b4b3b0aeacaaaaa6a4a19f9d9a95928b87807a767576787f84 +8c97a0a8adafb3b2afaaa9a6a6a8adaaa6a8adb0aeaaabababababacadaf +aeb0b2b0b1b7c3ccc9c9ccd0d6dde7ecdcd9d4d1ccc5bdb6b4b8bfc5c9c9 +c7c3afabaeb8c2c2b5a89ca9b6b9b7bbc5cb7b849699895f6162615e5d61 +645f606162636566666262636362605e5d626163676d6e6c696364676868 +676564625f5c5e63686b6c6c69696b6a676669666e70686366696865696e +717272737473716c676c757670696c6b67676d72726e72716c6b6f6e6a6e +6d6d6e6e6e6c6a6a6b6c6e72777b7d7e83817771757b7c7c7e7f7d7a797a +7d7d7d7c7a78787b7e7d7f81817f7e7e7f7e8081807d7a78787373737371 +74787c808081807e7d7e7e7d7b7a7c7c7a757174767775787b7a75727475 +76777675747c7b7874717174767978787a7d808383888481817f7c7a7975 +6d68686765666b6d6b676665626366521e3b251a2020232e3435281b191f +251b272d2821201e1b1f23221d202722173b4b4a4f321724184356506124 +1e214f505d533a3576808ca65c484c464e4c4646464c4f4c535b595c5957 +5d596d595b6666583f2b24222120202121202021212919251b2e252b2f21 +31261e33382d362d2016171c1e1e1f121d1313241b16303f3d3b2e1b181c +19291517271f2a95978276aa678f7b1d1e568066836a5b6d659e2d253437 +1247485630512b84434615128862748f212a315633162b2f403d493f7f4a +2833273f5735692433486f6e6e4d284221253c39232c27201c1c201f1d1b +2b201c29272037202d182a2220222e3a735737240b151a22291a1333191b +a25b2f14372c3d4137212a4a241348544b5c727d6f636d83909ca4aeb3b7 +bbbcb9bbbab9b6b4b2b0b0acaaa7a5a3a09b98918d86807c7b7c7e868b93 +9ea7afb4b8bcbbb7b5b1b1b1b1b4afaaacb1b4b2aeafaeaeaeaeafb0b0b0 +b3b2b2b3bbc5d0cdcfd2d6dce5edf3e5e2dcdad5cec4bdbbbfc6cccfcfcd +ccc1bcb9bdc2c2bbb5afbfc8c3b3a9a4a352596c6e5e3a3c3d3c3938393c +373838393a3c3b3b3a3a3b3b3a3835343736383c3f403e3b3a3b3e3f3f3e +3c3b393633353a3f4243413e3e403f3c3b3e3b43453d383b3e3d373b3e41 +42424343424038333841423c3a3d3c38383e43433f43423d3c403f393d3a +3a3d3f3f3d3b3b3a3b393d3f41424245433935393f404143474544434447 +45454442404043464547494947464647484a4b4a474443433e3e3e3e3d40 +444748484948464546464644434546443f3b3f414240434645403d3f4041 +4241403f4643423e3d3d424447434040434545454c48454547444443443c +3a3a3c3a3d4146413c3a37393e483c0d311f181d1e212c3435281b191f25 +1b272d2821201e1c21272621242a2316384644492f16241c526965753930 +305a5862573e3a7c8792a75c4649434a46403e3d424540474f4b4e4a4950 +4d614c4d5a5a4d36252122221e1e1f1f212124242d1d2a20342b33352937 +2f253a3f333c33261a1b1e20202015201516281f1a313f3d3a2e1d1d2320 +2f1c1e2e26319c9e897db16e96822425618d769780718075a93327343914 +49495630552f8c4a51201e936d7f992a3135542f142b3143404b407f4926 +3328405937692433486e6f6f4e29452329403d27302b241f1f22211e1d2e +23202d2c263d283521322a272b36427b62422f17222325291b14361c1fa6 +61351b3e36474b40272e4d28164d574f617783756a768c99a9b2bcc1c5c9 +cac7c9c8c7c4c2c0bebebcbab7b5b3b0aba8a19d96908c8b8c8e969ba3ae +b7bfc6c9cdcccac7c4c3c5c2beb5b3b5babdbdb9bbbdbfbfc1c2c3c2bcbc +bebebfc6d2dcd9dde0e4ecf2fdfff6f3efebe6dfd6cfcdcfd6dcdfdfdddb +cfcccdd3dadad1c8beccd4cdc1b9b7ae4e49544e34939495939191949791 +929496979898989796969594939291979697999b9b979497989a9b9b9a98 +97909194999c9c9a989e9a9a9d9d9a999c9ca3a49e999b9e9e9a9da1a2a2 +a1a1a2a3a29d999ea5a59f9c9e9d999aa0a4a4a3a5a39e9ea2a29da2a19f +a0a1a2a19fa0a0a1a2a5a8abacacb0aea7a4a8abaaabadaeadaaa9aaadac +acaaa8a6a7aaacaaacaeaeadacacadadaeafaeaba7a8a8a6a7a8a7a8abaf +b2b1afafafaeadafafb5b3b2b1b2afa9a4a8aaa9a7aaaeada9a8a8aaabab +a9a8a7b2b1afaba6a6a9abadaba9abaeb2b3b4b0adaaaaaaa9a7a6a49d97 +97979596989997999b9c9a948d662a37190705020403101c1c170f050006 +09060102080e0e10070306080303070b1a130e00011f1c63745c6a210e32 +7a5d5d6b00003844342b061519090f0b0000000000000000000000000000 +19040000000000000001000b0c0c0d0d0e0e0e0020181615241427222023 +3c322b2b29241a120f0e10171d4116070b0c2227041208080a0c14212718 +061e080c16000008000d001712000d17635e6c7b847f805700051c12053d +0f0c144623673c400aa4e5504f96040c1415150e1f042d3719263c2c201d +4c753046b34e345b41084034202c181e1f1d1315100a05070807050d001b +270a192e12281b191d0027442d54151e212946352700010e0f000004030c +0002043a885e734e0528150b443f4b7756485f7e8b96a4a7acaca7a4a5a6 +a497979695959494938e8e8e90939494929c9fa5abb1b6b9b9aeaca9a6a3 +a1a09f999795928f8d8c8b89888887878788889293969ba0a5aaaca9b0b8 +b8b2acaaababadafb1b3b8bec3e4dfd7d2d2d4d4d4ccc6beb7b7bac1c4c4 +c1bcb3adafb4baa8a8a9acb5bbbbb8b491809095616263615f5f63666061 +6365666767676665656463626160666566686b6b67646667696a6a696766 +5f6063686b6b69676b67676a6a6766696970716b66686b6b6a6d71727271 +717273726e6a6f7676706a6b6a66676d71717072706b6b6f6f6b706f6d6e +6f6f6e6c6d6e6f7074777a7b7e828079767a7d7c7d7f7f7e7b7a7b7e7d7d +7b7977787b7d7b7d7f7f7e7d7d7e7e7f807f7c7876767374757473767a7f +808080807f7e7e7e82807f7e7d7a746f75777674777b7a76757577787876 +75747b7a7874717174767a78787a7d828384827f7c7c7b7a7877746d6767 +666465686d6c6866666564664c1d39241b1f2022202a353530281e151f22 +1f1a1b2228282a201b1e201f252f3c4f4c45312f473b757f677530204d9b +8487931a18484c424c303f433339352720212a281b1a1c1a2b2a29303659 +4235252a29211b1b1b182020202120212121103129272635223836343750 +463f3e3c372d242120222931562b1919172b3212221a181814131a221c10 +28121620070712021702211c0a1724746f819199908e60010f2f2f2e6f3d +282859367a505620bcff6b6db4252f3739382b34133b45283a54463a3561 +874258c762486f551c54483544323a3b392c2a251f1d1f22211f2718333c +1d2b3d1f352a272e0f3b5b446b2c34353b58453b15212c2d1913201f2513 +1b1b519f728a661d3d27194d47507a594d668798a3b0afb2b2adaaabacaa +9d9d9c9b9b9a9a9994949496999a9a98a2a5abb1b7bcbfc0b5b5b2afacaa +a9a8a2a09e9b9795949493929291919191919b9c9ea3a8adb2b4b0b8c0c0 +bcb5b3b4b7b8babcc0c5cbceede6ded9d9dbdbdbd3cdc5bebdc0c7cbcbc8 +c1b8b1b5c0cbbdbdbcb9b8b7aea2946b59686d3c3d3e3c3a3a3b3e38393a +3c3d3e3c3c3e3d3d3c3b3a38373b3a3b3d3d3d39363d3e404141403e3d36 +373a3f4242403e403c3c3f3f3c3b3e3e4546403b3d40403c3f4142424140 +4142413a363b42423c393c3b37383e42424143413c3c40403a3d3c3a3b3e +403f3d3e3d3c3b3c3d3f404044423b3a3e41404244474645444548454543 +413f404345434547474645454648494a49464241413e3f403f3f42464a48 +484848474646464b49484747443e394042413f4246454140404243434140 +3d4542423e3d3d424445434040424443444643404043424241433c39393b +393c4046423d3a3a3b3e47350d2e1e191c1e201c2732322d251b121c1f1c +17181f25272b241f222422262e3849453f2c2c463e83937b8b473660ac93 +939d242455594d512f3e42313731231c1a2320131014101e1d1c22284b35 +291c22231d191b1c1a21212122242527271738312f303f2d42413d40594f +4645423d33282522242b32592e1b1c1b303413221a171816182129251931 +1b1f2910101b0b200b2a2513202d7e7f92a6aca29b6907112d2d2a6c3b29 +295d3c8159612bc8ff7677be2c353937342935163e482b3b544539356289 +445ac863476e541d55493646333d3e3d312f28221f21232220281a353f21 +2f42253d3130361642634c73343f404764524418202c2d1b1523222a1820 +2159a77b906a21402b1c524a547f5e536e90a1acbcbcc0c0bbb8b9bab8ab +abaaa9a9a8a8a7a4a4a4a6a9aaaaa8b2b5bbc1c7cccfd0c7c6c3c0bdbbba +b9b3b1afacaaa8a7a59f9c9e9d9d9da0a0acadb1b6bdc2c7c7c0c5cdcdc8 +c4c2c5c7caccd0d3d8dee0fef6eee9e9ebebebe3ddd5cecdd0d7dddddbd7 +cecacdd6dfcececbc9c7c6c0af9562484e49969695939293969992949699 +9a9a9998999896949292929399989899999895939a9b9c9d9d9c9a999594 +939495989a9b9c99999c9c9a9a9da0a4a5a09c9ea0a09fa2a4a4a2a09f9f +a3a29f9ea1a6a5a09d9f9d9a9ba1a3a2a6a5a29e9fa3a3a0a4a2a0a0a1a3 +a3a2a4a4a5a5a7a9abacadadaba8aaaeaeabaeaeafadababacaeababaaa8 +a5a6a9aba8aaacacababacadaeafafada9a6a7a7a4a5a6a6a8abb0b3b1af +afafaeaeb0b0b6b5b4b4b3b0aba7a8aaa8a6a9aeaeaaaaababacaba9a7a6 +b1b1afaca7a7aaacadacaaabafb3b4b5b0aeacababacaba9a39b96969694 +95969a98999b9d9c948a5b2833170a050302000003050c0f0c0400010100 +0001000000070c05040500000c1d180600000c005f7f779d4a0e4ba84b6c +a111175343279650392306090e0d090000000000090600000000001d0700 +0000070b0d0d0a0912161616151515151e262b351325281d2f3049834b26 +2b22261e150b02010d1b150512190f252f0a020601000f313c323b29304c +2b273a25272d251c21202e214557392d363425520f1d11001a011617121b +421323254101001400006518000712070d4d1720372d2021172a231a362a +09281d37131a261c1d1c17141f1e2a171c160f0b0904000003132317090b +1f241611191205608871753600367e766958000600080b000a0000160e00 +4b883d79af263318185f4c5e3d5c7e8c8b848383878d8f8e8f9598989b9c +9ea0a3a5a7a8b3b3b4b6babbbbb9b8b7b4b0aaa49e99a39e978f8a868484 +7374787b7e8084818c8f969b9ea3abb2b8b9bbbec1c5c8cad6e1ebede3d8 +d1cfc5c5c4c1bcbabbbfc1c4c2c3c6c8c8c5d1cfcbc6c0bcb8bac8cac6bc +b0ababb0b2b1adacb1b5aeabcca57e829364646361606165686163656869 +69686768676563616161626867676869686563696a6b6c6c6b6968646362 +636467696a696666696967676a6d71726d696b6d6d6f72747472706f6f74 +73706f727776716b6d6b68696f71707473706c6d71716e72706e6e6f7170 +6f7272737376787a7b7f807e7b7c80807d8080807e7c7c7d7f7c7c7b7976 +777a7c797b7d7d7c7c7d7e7f80807e7a7775757071727273767b80808181 +8180807f7f838281817f7c777275777573767b7b7777787879787674737a +7a7875727275777a79797a7e83848582807e7d7c7d7c7a736b6666656364 +666d6b686667676766431c35241e1f202227292b2d31342f272324262528 +29241b1b23251e1d23221d3f5454422a2c3922758f84aa561e60c36a8dc0 +2c2a5e4830b378614b2d3035342d2321201d232c2b2527292c37674b271c +1d1f1e202526231d1b1b1b19191919222a2e3816282b243f425b955d393e +353931281e1615212f2a1a26281a2f3a1a151a140b1831362b35262d4928 +243722242a22191e1d2b214e654c43504b386016221b123a2e514e343357 +28373c57170d2f081883390f2a34252561252b423b32352c3f372c44381b +3a2f49252c382e2f302f2e3b3a4733342e272323201c181f2d3b2c1c1d2e +332520282318759f888c4d0f4a9086776a12261828291c281416322a0a64 +a15490c73e482a26685463405f829394918f8f8f939594959b9e9ea1a2a4 +a6a9abadaeb9b9babcc0c1c1bfbebdbab6b0aaa4a0aaa6a098918d8b8b7a +7b7e818486878899a0a7acafb4bcc3c9cacbced1d5d8dbe6f1fbfdf4e9e2 +e0d7d7d6d3d0cecfcfc8c6c6c7c9cbcbcbd7d5d1ccc7c3bfbdc0c2c4c3bf +bec0c2c1bcb4b1b6bbb8abb7865c5f6f3f3f3e3c3b3c3d40393b3c3f4040 +3d3c403f3d3b393938393d3c3c3d3b3a3735404142434342403f3b3a393a +3b3e40413e3b3b3e3e3c3c3f424647423e40424241424444413f3e3e403f +3c3b3c41403d3a3c3a37383e403f43423f3b3c40403d3f3b3b3b3e404140 +4141403e3e3e3f40413f3d3a3e4244414545484846464949444443413e3f +42444143454544444546494c4c4a464342423e3f40404144494b48464646 +454545454a49484846433e3c4042403e414646424243434443413f3c4442 +423f3e3e414345444140434544454644424144454644423a38383a383b3e +46443f3a3b3d40462b0c2a1d1c1c1e1f1f2123252a2d29211d1e1f1e2021 +1c171a2629222125231b3a4e4c3a24273624809f97bd6c3575d87e9ed23d +3b705b3fb978614a2c2f34312b211f1c191d28241d1d1b1b26563c1b171c +212226292924211f2121222224242e363d4727393c344e4e679f6740453c +3f372c221716202e2b1b272b1c313c1a1318120b17333a323f313854332f +422d2f352d242928362d576e5a515f5b476d20261c1037294b4933355a2d +3e446224193a11208b3e132c33232562282f463e34362d40382e473b1f3c +314b252c382e2f31312f3e3e4d373830292524211d19202e3d2f20213338 +2c272f2a1e7aa58e945518539c93847413231727291c2a1619352e0f69a6 +5a96cb424b2e296d576747668b9b9d9a9b9b9ca1a3a2a3a9acacafb0b2b4 +b7b9bbbcc9c9caccd0d1d1cfcecdcac6c0bab4b0bcb9b1a9a39f9d9b8a8b +8e9192949698a9b0b7bcbfc4ced5dddee2e5e8ecefeff6fffffffffbf4f4 +ebedecebe8e6e8e6d8d3d2d3d8dadad9e5e3e1dcd7d3d1d0d7d9dad6d2cf +d3d6d6d0c7c4c9cbc4b5bc84524b4f98979593929496999294979a9b9a98 +96999793908f90919296969798999998969b9c9d9d9d9c9b9a9897969798 +9a9b9c9b98989c9d9a9b9ea2a4a5a29f9ea0a1a1a3a4a3a19f9e9fa1a0a0 +a0a3a5a3a09fa09f9c9ea4a6a3a9a5a09ea0a3a4a2a6a3a09fa1a4a5a5a5 +a6a7a8aaacadaeaeaaa5a5abb0b0aeb0afaeadacacaeafacabaaa7a5a5a8 +aba8aaacadacacadaeb0b1b0aea9a6a7a7a1a2a3a4a6a9aeb1b2afaeaeaf +b0b1b0b2b3b3b4b4b1aeaca8a9a8a6a9aeafabababacabaaa8a6a4b1b1b1 +aeaaaaacafadacaaacb0b4b6b6b3b2afacacafaeaba19b96969693939498 +98999a9d9d9588512831160e050402040000000010161517191d1d1b170f +0a00020908050500000b16170900000000255d3d420800436a5960570017 +8e7f67720c000808070408240d020304090a020908000000251100050d13 +12110d060512161514131212102286b894711a2971b69b7c9249232d2a18 +14100c0b102233301b0000223a342d131c1d1110233232375828443b314f +4d4455464c524541422d1827312a2a2435383e43260a00200e000c6a591b +387e4500001209292d0004251f2c8d562312131f3219152a282a27232c19 +312324241d1a1e131b1f416825201912100c070200051810124b3a1d261f +2a1e0208545b5398730a3e8b6c849c050a00000200000009000106000b0d +0b290018051255393e727b756360737d7b8f9aa5aaafb5b6b4bcbcbdbdbe +bebfbfbbb9b6b5b3b1adaaa9a49d958f8b8a8a71717072757b7f82a1a4ab +b1b8bbbfbcb5b5b7b5b2b2b5b9b7b6b6b5b5b5b6b6bdc4ccccc7c4c7cbcd +cececdcac9c9cfcfd0cdc9c6c4bfbcbfc2c9cecdc7c0bfc7c5bdbdbcb4a9 +a1afb9bbb5aca9a6aab2bd9e80866665636160626568616366696a696765 +6866625f5e5f606165656667696968666a6b6c6c6c6b6a69676665666769 +6a6b686565696a67686b6f71726f6c6b6d6e71737473716f6e6f72717171 +747674716d6e6d6a6c72747177736e6c6e71727074716e6d6f7272727374 +7577797b7c7e817d78787d82828082807f7e7d7d7f807d7c7b787676797c +797b7d7e7d7d7e7f8182817f7a7775756d6e6f707174797e818180808182 +807f7f808081807d7a7875767573767b7c7878787978777573717a7a7a77 +7575777a7a79797b7f8486868584817e7d807f7c716b6666656262646b6b +686567696765391f3223221f21222c29211f28353b3a3a3e424544403a33 +1b20222121231f1b3e4d53452f2d2d1940714d4f1508547c6f7971072696 +816e8d33192c2c29262a442d20212227281f23282e2d376f552229221c19 +1b202421201e1c1b1a191919288ebe9c7721307ac3ab8ca45b353f3d2b27 +23211f2538494833110c2d45423d2630302119242d282d4d1d3930264442 +394a3b41473a363c31253847414136413c4149362a295f4b17288372344e +945b130d2d26484f2228453c409c5f2a191c2d442b29393635303039273f +2e2f2f28282e2530375a813e38312a2a28231e1c21342a2a604d2f352e3b +2f151d69726aaf8a1e529c7c92ae1f280e101e161a1c22161a1f17222422 +41062b17205e3e41757e7867687d898797a0abb0b5bbbcbac2c2c3c3c4c4 +c5c5c1bfbcbbb9b7b3b0afaaa39b95919090787877787b7e8286a3a6abb1 +b6babcbfbfc3c5c3c0c0c3c7c5c4c3c2c2c2c3c4c9d1d9d8d5d2d5d8ddde +dddcdbdad9dad1cecbc9c6c4c1c0c3c8cfd4d4cec7c0b9b7bbc5cfcec0b4 +babbb9b3b1b5bab7a5a280606441403e3c3b3d3d40393b3d4041403c3a40 +3e3a37363737383a3a3b3c3b3b3a3841424343434241403e3d3c3d3e4041 +423d3a3a3e3f3c3d40444647444140424143434443403e3d3e3e3d3d3d3e +403e3b3a3b3c373b3f433e46403d393d3e413d3f3c3b3a3e414343424142 +3f41414140403c37373f4446444748494847474b4c474443403e3e414441 +434546454546474d4e4d4b464342423b3c3d3e3f42474949464545464746 +45464747484744413f4041403e414647434343444342403e3a4242444141 +41434645423f40444646464748454245484946403a38383a37393c44443f +3b3b414345210e2a1c201c1f1f24201917202e343334373b3d3c38312d1a +2226252425201939474b3d28272a1a477c5c5f261b6892848d821a39a996 +809432192c2c2a272b432c20212227281d2023241e265e46172725232124 +26262223212221222123223499cca98731428bd3ba9bb0673f4944312d27 +24202636474833120f2f47433d242e2e2018263130385b2b473e34525047 +58494f554844483a2d42544f4f444d4546493325235644162b87773b59a1 +681f19362c4d512428443a419f64301f2130462d2a3c393935363f2a4230 +31312a292e27333b5f88433c332c2b29241f1d22352b2c6351333a354236 +1b226e7870b592275ba6899fb820260e101f171d1f261a1f241d282a2845 +0b2f1b236342467c85817273899795a4aeb9bec3c9cac8d0d0d1d1d2d2d3 +d3d1cfcccbc9c7c3c0bfbab3aba5a1a0a08a8887888b8d9192afb2b7bbc1 +c2c5c8cbd0d2d0cdcdd0d4d2d1d3d2d2d2d3d1d5dae2e4e0dfe2e8eceef0 +efefeef0ecded9d6d3d2d0cdcccfd6dfe4e4ded9d4d2ced0d8deddd0c5d0 +d2cfc8c4c3c3bfafa97e534b97969392939496979294979a9a9997959996 +93908f90939597989999999898989c9c9c9b9b9a999995969aa0a4a39d98 +9c9a9a9e9e9c9ca0a3a3a2a1a09e9fa1a0a2a3a2a09f9fa19f9f9fa1a3a2 +a1a0a1a2a09fa3a9a9a6aba49f9fa2a4a4a4a6a3a0a0a2a4a6a6a4a6a8aa +adafb0b1b0a8a1a2a9afb1b1b2b0aeacacadaeafadacaba8a5a5a8aaabad +afafaeaeaeb0b3b3b2afaaa8a9aaa1a2a3a4a6a9aeb1b2afadaeb0b1b2b0 +b0b1b3b3b2afadaba7a9a8a6a9afafabababacaba9a7a5a3b2b2b2b1adad +afb1aeacabadb1b5b7b7b4b4b0aaa9adaca7a19a96969693929396999a98 +9c9e9585492d2f161204070500000404080d0e090908060402070f191b05 +00080a00010d1b171e1505010100603e1d7c74264a815f75590e1654493d +621e2635160000131507080e090708040805000000231a00060b1113110b +040207090a0a0a0b0b0917263132431f2a243e3a2a4e4637281620170f09 +0a0a131b5a33100c1a1d1c1e1a131d1d0c1325231b2c121a1f2e1a0e2706 +1b2d161e201e1b26120000080d0d210e1e1400001812001daaa002169382 +0005000000152e1d0213000f0a1a1c270305050906000c0c0b1b000c2621 +0e23191815251a609115130c080e0f0e0c0d06040a1346312b39312b2113 +00242104100000192d150a2301001b0b00141a000b0b060b0b0002090106 +1b000d49557369555169808c99a9a3acb2b3b2b2afaaaba9a7a4a19e9c9a +99969492918e8a8788878686888c8f92a3a6a9acb3b8bdbfb1b3b6b6b6b5 +b4b0aba8a5a3a19f9e9ea2a2a2a3a4a5a7a9a6a9abababb0b8bfbabfc4cb +d1d8dfe5f8f2e9ded5d1d1d1bfbdbabbbdc2c8d0d1c7b6aeafb1b0b0b1bb +bfb9b1aba3a7a2c8b78a8465646160616265666163666969686664686562 +5f5e5f626466676868696868686b6b6b6a6a6968686465696f73726c6769 +67676b6b69696d70706f6e6d6b6c6e70727372706f707270707072747372 +716f706e6d7177777479726d6d7072727274716e6e70727474727476797c +7e7f81837b74757b81838384817f7d7d7e7e807e7d7c797676797b7c7e80 +807f7f7f81848483807b7977786d6e6f707174797e81817f808283817f7d +7e80807e7b797774767573767c7c7878787978767472707b7b7b7a78787a +7c7b797a7c808587878686827c7a7e7d78716a6666656261636969666366 +6a676230243022261e23231f232525272a2924222323232328323c392318 +21231d23354c4c57513e362f28825a328d8032568e70886c1f235b4a447b +424857381f1f323325242a252321191819222225665627241d15151a1c20 +2124232424242524253041494d5b3a443b4e47375e56483a29352c24211f +222c35744d261e282b2a312e29322d1514201c11220810152410041d0011 +230c1416161a2b1f09131c1b14200c1f231f2f5c531f3cc7bd1d2ea99813 +1d081c1a37523f1e2b041a0e1a1c2a0c121218110810100f220311292412 +271e2220322b73a5292b2422282b2a2a2b2220242b5b443d4b433d332610 +39391c28100e2d3e261834191433230a2c320f23231b201f0c161d191b2e +0a18525a766955546d8693a2b2abb2b8b9b8b8b5b0b1afadaaa7a4a2a09f +9c9a989794908d8e8d8c8c8e929598a6a8abaeb3b6babcacacadadababa8 +a7a9a9a6a4a3a1a0a0a4a4a4a5a6a7a9a9a5a8aaaaabb0b8bfbbc0c7ced4 +dbe2e5f3ede4d9d2cecfd1c1c0c0c1c4cbd0d3c8beb7bac2c8c6c0b6b9ba +b6b4b7bab59ab29e6f65403f3c3b3c3d3d3e393b3d40403f3b39403d3a37 +3637393b3b3c3d3d3b3a3a3a4242424141403f3f3b3c40464a49433e3e3c +3c40403e3e424545444342404141424242413f3e3c3e3c3c3a3c3e3d3c3b +3a3b3b383e42443f463d3a383d3d3f3d3f3c393b3f414343414143414444 +4443423833343d43474749494947494a4d4c484544413e3e414344464848 +4747474950504f4c474544453b3c3d3e3f42474949464445474847454445 +47474542403e3f41403e4147474343434443413f3d394342434242424648 +4442404145474747484a464042464742403938383a37383b42433e393a42 +43441a13281e251d24211a1c1e1e2125241f1e1e1e1d1c212b3639251c25 +271f24344846504937302c27815b37958c40669f82997d2f346d5e548040 +4756371e21343527272d2826251c18171c1716554a1e2421202123232423 +222023232526282835485356674551495e57476b635244303a3127232022 +2932734c241e292c2a2f2c262d2a141624231a2d131b202f1b0f28071c2e +171f2121203127131e27261e281121201a26514b1e3fcbc32438b6a51f29 +11221d38523e1f2d0920172426331318181d170f1919182a09172e29152a +21242438327aae322f2623292c2b2a2b2321252d5e48414f4741372a133c +3d202c1615344630233c1b1333230c2e34112727202526131d241d20320f +1c575e7b715d5d7894a3b1c1b8c0c6c7c6c6c3bebfbdbbb8b5b2b0aeafac +aaa8a7a4a09d9e9d9c9c9ea2a5a8b5b5b8babfc1c3c3b2b3b2b0afacaaa8 +aaaba8a6a2a09f9fa3a3a3a4a3a4a6a7a1a4a6a8a9b0b8c1bfc4ccd3dbe2 +ebedfaf3eae0dbd7daddcecfd0d1d6dce3e6ddd1c9c8d0d6d4d0cccfd1cb +c5c3c2bea9bfa268519795939495969594939597999a9997969997949392 +9497999c9d9d9b989697989c9b9b9a999998989d948b8b949da1a1a09d9e +a1a19e9ea2a5a1a0a1a09e9ea0a1a3a4a3a1a1a2a3a09e9fa2a3a0a0a2a1 +a2a1a1a6adada9aca39ea1a5a6a5a4a4a2a0a0a3a5a6a5a4a6a9abaeb0b1 +b1aea6a0a4aaaeb0b2b3b0acabacaeaeaeaeaeaca9a6a6a8abaeb0b2b2b0 +afafb0b3b3b2afaba9abaca6a7a7a7a9acb1b4b3aeacaeb1b3b3b0b2b4b5 +b3b0aba8a7a5a7a8a8abb0afaaabacacacaaa8a6a4b1b2b3b2aeafb0b2ae +adabadb2b6b8b9b7b9b4abaab0afa8a19b979796939192969898969b9f95 +8241312b1313030909090f110f0d0e0c08101012110f0f1a241b1d180704 +0806000000141b13100404372f0318150f5175566e57091631424a5a0f00 +0308170f00170c0f0e01000b17130b0c08002b2200070c151a1710090803 +04050607070808247a3c335c4832724a46453d372b2727281b0c05020000 +00401125350a05221505010600136a7516477d0d3a8126237a2e1e613614 +4f490e1e3f13214412212e1d0f32280e0000270000767c0000848b001808 +0b0000050f1f361705142408060d0d02153119031b1c021224090f1e0914 +11193724668803120603070b07070b02130e074d27183a3c0b244b01234d +001d410b0a2d0a0e3a0c0030290b25230e182315022e1e04260908160d26 +4a424e3b5a829b9c9190969195979494989b9a9b9b9b9c9c9c9c9ca7a6a7 +a9abacaba9b7b9bbbdbbb8b3b3b4b3b0adaba8a7a6a1a2a1a09d9a989690 +8f8f90939596968c8c8b8b8c8d8e8e8e909190939698999ea2a8b0b7c0c8 +ccd4d8dee0e1dedad9d5cec6bdbab9bbbfc8c7c0b7adaeb5bfb9b9b7b5b5 +b6aba2b0bcae958965636162636464636264666869686665686663626163 +66686b6c6c6a686667686b6a6a69686867676c635a5a636c70706d6a6b6e +6e6b6b6f726e6d6e6d6b6b6d7173747371717374716f7073747171736f70 +6f6f747b7b777a716c6f7374737272706e6e717374737274777a7d7f8081 +817973777c80828484817d7c7d7f7e7f7f7f7d7a7777797c7f8183838180 +8081848483807c7a797a7273737374777c8182807e808385827f7f818280 +7c77747372747575787d7c7778797979777573717a7b7c7b797a7b7d7b7a +7a7c82868889898b867d7b818079716b67676562606266686461656b675f +2b282e1f271b23231f23241f1b1a1612181a1e1f1f222d3a353931201c24 +251f2e2f4b544a43322e5f501e2c2219597f627b67162238435273312025 +28372d17332828271a15222a1e17252b275d5126231f1f23242122242021 +222323252626419959517866508c5a51514a443b383a3c30241d1a17171b +5d2b3b491a15322819171b0c1d6e7311447a0a377e2320772b1b5e33114c +460b193e1a2e55232931180930322b2f3d6a141b979a081a9ca111302127 +1d1f272f3949240c1421050411160d203a1d03191a000f21040a19071312 +1c3e2d73961427201d23272525291e2f2821623c2b4c4e1d375e16386517 +35591f1d3e181a481f11443d1e3836212b3626133f2f15391e1d291c3151 +474f3a58829d9f97979d979b9d9a9a9ea1a0a1a1a1a2a2a2a2a2adacadaf +b1b2b1afbdbfc1c3c1beb9b6b4b2afaaa6a19e9b9594928e8a8783827e7d +7d7e828485857b7b7a7a7b7d7d7e7c7b7c7e808385888c90979fa6afb7bd +c8cfd5dadad9d7d7d5d0c9c4c1c2c3c6cbc9c6c1bbbbc1c6bbb7b4b4bbc0 +b9aca8ab9a7d6d403e3c3d3e3f3c3b3a3c3d3f403f3b3a403e3b3a393b3d +3f4041413f3a38393a424141403f3f3e3e433a31313a434747423f404343 +40404447434243424040404143434240403f403d3b3a3d3e3b3b3d3a3b3a +3a3f464642453c373a3e3f3e3d3d3b39393e424342414142424544454140 +3632363e4246484c494746494b4d4b494745423f3f414447494b4b494848 +4b50504f4c484646474041414142454a4c4a454345484a48454648494743 +3e3b3a3b3f4040434847424344444442403e3a4242444343444749444340 +41444646494b4f4a4143494a43403a39393a37373a40423c373943434114 +19251b261b24221d21221e1b1a17131a1b1e1f1e202b38363c3524202727 +1e2b2a454d443e2f2a5647192b2822648b708b76263048555f77301f2427 +362f19362b2d2c1f1b2a30201722251d5249212423282c2c2827271e1d20 +2124252828479e615983705b996a63615a544842414335261f1a1614175b +2a39481a153126171416081c6f76154b831340872c29803424673c1a554f +121f4320365f2d343a1f0d31312626326112209ca21023a8ae1d3a282b1f +1e262e3a4d2a141e2c100f1a1d132641260d24250b182a0b101f0c181623 +46367ca31e2c211e24282525291f302922653f2f5052213b62193b691b39 +5d2624462126512312453e223c3a25313c2d1a47371d4023222d2135574b +5442638eaaaea7a9afa7a9aba8a8acafaeafafafb0b0b0b0b0bdbcbdbfc1 +c2c1bfcdcfd1d3d1cec9c5c0bab7b1ada8a39f97938f8a86817e7b726f6f +707274757369696866676669676666696a6f7276787e848d959ea7b0b8c8 +d2d8dee1e0e0e2e1ddd8d4d3d3d6d8dad6d2cdc8cbd1d8d0ccc9c6c9cac2 +b6bdbea37b5f9796959799999694979798999a999998969594939496999a +9d9e9e9c9998999b9d9c9b9a99999898a18f7d7c8a9ba4a5a5a2a1a4a4a1 +a0a3a6a19fa2a29e9ea1a6a7a7a5a3a3a4a5a29fa0a4a3a0a1a59fa09fa0 +a8afafaaaca29ea3a8a7a4a4a1a0a0a1a4a5a5a4a6a8aaadaeafafafaba5 +a4aaafafafb2b3afaba9abaeaeaeb0afaeaaa7a7a9acb0b2b3b2b0aeaeaf +b2b2b1adaaa9acada8a9a9a9aaadb1b4b4aeacaeb2b4b4b0b1b4b5b3afaa +a8a7a2a6a9aaadb1aea9adaeaeaeadaba9a8aeb0b1b1aeaeb0b1aeadabae +b2b7b9bab7bab5acacb3b3aca29c989898939192939697949a9f937f3d34 +28101300090c1e23201b1f272d2e252121231d1718190e1b25180f0d0700 +00000c1012221b1b060605190b003878797a53143e7531094b303f2e0402 +1118260f060a06070b0b120a243d304b2d000403060a0a06090f14131211 +0f0c0b0a18816f77610f015e8468967453332b211911090a0f141c223c00 +08231228452205080f000d9dab0763f80333f20e0af05700b696007ee200 +62fe2215e33604d27928969006001021000040480301341e050b17000002 +17063e231e02141d0e2107361c00446e3a0d1b1419191c1f212522192558 +4a6b732d19090304050000010b1a0f1183672f1d4b1028670a226d091181 +0b0e60150e38300e2f3b111b2e0c241d0813330913291e001f0e0d4a5059 +868c826f7084897f9aa0a5a6aab2b7b8b8b9bbbdc0c2c4c4bdbcbcbdbfbf +bebcabadafafaca7a1a19c9b958f898686878888898889898a8d9b9f9e99 +928e8e90a2a19f9d9c9b9b9b969290939798949089888a8b8b8f94929ba0 +b0bdc6cacdced3d2d2cdc7beb3adafb5bfc3c0bebbbab8b6b2afb2b7b5ae +b7aba7a08e6564636567676563666667686968686765646362636568696c +6d6d6b6968696b6c6b6a6968686767705e4c4b596a7374726f6e71716e6d +70736e6c6f6f6b6b6e767777757373757673707175747172766e6f6e6f77 +7e7e797b716d7277767373706f6e6f727373727476787c7d7e7e7f7e7877 +7d8281818484807c7a7c7f7e7f81807f7b78787a7d81838483817f7f8083 +82817d7a797a7b7475757574777b8083807e808486837f7f8283817b7674 +736f7376777a7e7b767a7b7b7b7a78767577797a7a79797b7c7b7a7a7d82 +87898a898c877e7d84847d726c6868676260626366635f646b675c272b2b +1c2518232023211b16151c2021151416191815161e21373d302426251c1c +1f414545534844312d25301a043f7f81845f20487b351265505f4e22202d +343f281d211d1b1f1e2016325044644719222122231e191a202625242321 +1f1e1d2a95818a7222146f8f709e8060433c342d262124293139415b1b21 +37223855361b21260618a1a90768ff0d3dfc1814fa6106c0a00388ec015c +f8231ef04308cf6d1b8d94212b52642b2163691f1c4c361b23301418223a +24533227051117081e073a230548713807130c0f0f1014161a181422584c +6f7a392e231d20211c1b212936292b987c42305d223c7b1f3a8521299920 +2171231b453f1d3e4a1f293b19312a152040162037330e321d1851535984 +8a806e72878e84a0a6abacb0b8bdbebebfc1c3c6c8cacac3c2c2c3c5c5c4 +c2b1b3b5b5b2ada7a399948e867e7a7675757472706e6d6c6c7374736e67 +63646678777573727271726b6765686b6e6a655e5f616264686d728894a4 +b3bdc4c8cbd3d4d5d4cec7bebac3caccc9c2bbb8b9bbbcb9b9babbb5acaf +9f978c76403f3e4042423d3b3e3e3e3f403f3d3c3d3c3b3a3b3d3f404142 +42403b3a3b3d434241403f3f3e3e4735232230414a4b4744434646434245 +484341444440404146464644424241423f3c3b3f3c393a3e363736373f46 +46414339353a3f3e3b3b3837393a3f404241414343444543433f3d35343a +414345484c484644484b4d4b4b48474340404245494b4c4b4947474a4f51 +504c4948494a4445454545484c4e49444244484a484444474846413c3a3a +383e414245494641454646464543413e3f40424243434748444340424447 +474a4b504b42454c4e47413b3a3a3c37373a3f423c353843423e101c2218 +251824212726211c1d24292a1f1d1e211e1a1b22253a4134292a271c191b +3b3f404f453e201a1626170645898c8e6b2c5489411b644d5c4b201e2e37 +432d252925242a252316324e436146172221252725202227282526252523 +2423349e8d988231237fa183b1907050463b342b2325282f353c56171e36 +22385434181d200214a0aa096cff0f3ffe1a16fc6308c2a2058aee0460fc +2825f94c14da772290931c23485b2b2769722a275842262d37181a213622 +56372e0e1c23142911432b0d517a431322191a1a1a1c1e20201a2b62587b +8a4533241e21221c1b2029372a2c9b7f46345f243d7c203a87232d9d2527 +792c244d4420414d222c411f37301d28491f2940381136221c575a618f95 +8d7c8198a197b0b4b9babec6cbcccccdcfd1d4d6d8d8d3d2d2d3d5d5d4d2 +c1c3c5c5c2bdb7b0a29b958b827c7673716d6a666361615b5954514c4440 +3e40524f4d4948464746403c3b3e444644423c3f4344474b505d8194a6b4 +c0c8cfd4dfe1e4e4e0d8d0cacacfd5d7d1cecbcbceccc9c5c5c6c1bac7b7 +a48d6a989797999c9c98949a9a9a9a9a9a9b9b9292919293959799999b9d +9c9a9b9ea19e9d9c9b9a999999938a858fa2aaa398a8a4a4a6a6a2a2a4a8 +a2a0a3a49f9ea2aaabaaa8a5a4a5a6a4a1a1a5a4a0a2a89d9e9da0a8b0b0 +aaaba19da4aaa8a5a3a09f9fa2a4a5a4a2a9aaacadaeaeadaca8a5a8b1b4 +b0aeb0b3afaaa9abadaeadb1b0afaba8a8aaacb1b3b4b2b0adadaeb0b0af +aca9a8abada8a8a8a8a9abafb1b4aeabaeb2b5b4b0aeb1b4b3b0adacaca1 +a6a9abaeb1aea8afafb0b0afaeacabaaaeafadacadaeafaeacacaeb3b7ba +bab3b7b2a9a9b0b3aaa29c99999894929292959693999f927d3733250d14 +010c1220282d3445565f605d4e3e352f2c30311a00062f2500043c453634 +0d001a1a1b1200051b1b12428364723b000d9f585f6e1b0507000806011d +050b345b65543a100c4178707942040300000000061929302e29241d1712 +102f7c60709d1317b09f3e6c48342e32141a110706080c1921070817221b +18160a251d3211005173002c930011a200008c10007445003f780025a800 +11a9000080430666600000002b00000502000112080b0f0c1e5170e95d47 +1a381112190e171b487348122e3f1a3d2b1e111a1f19181e121c5d5c5957 +56170800050500000604001d0f354a74533514104a000f5c07195a1a0e51 +30103c34003f5d003d93041690031ab31c0f9c170981550a49576356525b +758e96a1aaa9b1b8bababcbdbac8c8c6c3bdbab7b3b5b2aeacaaa7a4a2a2 +a09a938a837d7e8383807c7e82888c93939292919393989ca6aba7a09da3 +aba6a6a5a5a6a7a8a8a8a19b9ea4a8a5a0a1a19f9d9c9ba19e89827d7e86 +99afbec6c8ccced0cdc9c0ada9adbac7cac1b5b2b8bbb4adafb9bfaea9b2 +ad93676666686b6b67636969696969696a6a6161606162646668686a6c6b +6a6b6e716d6c6b6a696868686259545e7179726775717173736f6f71756f +6d70716c6b6f7a7c7b797675767775727276757173796c6d6c6f777f7f79 +7a706c73797772726e6d6d707273727077787a7c7d7d7c7c7b787b848782 +808285807b7a7c7e7f7e8281807c79797b7d82848583817e7e7f8181807c +7978797b7474747473767a7e83807d808487837f7c7f82817c7978786e73 +76787b7e7b757c7c7d7d7c7b7978767778797778797c7b7b7b7e83878a8a +838681787881817b726c6969676361626265625e626b675b252d28192413 +1e1c1b191819212c2f2e2d201616181d25322c121f4b4318265f6b5e5e3a +2c4b4d4d3e2927352e1e4c8c6d7c480917a75f6a833822261f27241f391e +224b6d7764481e184b827b895a222a2725231d1a23303736302b26201c1a +3b8a7081b0282cc3af4b78513d373e252e2923232529343e262531382f2c +2a1e3b3348240457730037a2041cb0060da023097c4d064d8c0925a30018 +b205027d39006269152d3c6a2b202d251f1e2d212428253a6f8fff795a25 +3f110f1106111848774c16324118392516070e140c0b130b175c5e5f5e64 +2b1f191e211d1d24221737284a5f87664a2928621a29762131722f21623e +1e4a430e4e6c0e4ca113239f1029c02b1cae2f23966718525c63554f5974 +8d99a4b0afb7bfc1c1c0bdb8c2c0bebbb9b8b7b7bbbab6b2aeaaa5a09c97 +9289817a777474716c68686a6e717674726f6f6f6f6f6b7176736c696f77 +7272717273747575736c66697074716c6e6e6c6a686a6d736c6c696a7386 +9daebabfc7cdd0cfcdcdc6c2bec0c4c2b9b2b3bfc5bcb1adb1b4a69fa69d +7c3f3e3e4043433f3a4140404040403f3f38383738393b3d3d3d3f41403c +3d40434241423f403d3f3d392e2b33484e493c4a464648484444464a4442 +43463f3e404948474542414241413c3c403d393b41343534373f47474142 +38343b413f3b3a3938383b3f403f3d444345444343413e3a373a43464444 +474a484544464a4b4a4c494a44434145454c4c4f4b4b4648494d4d4c4b48 +47484a444444444444484949424144484b484441444746423f3e3f373c41 +414647463e47454846474444413d3e404041424345444140404347484a45 +4b463d40494c45413b3b3b3c38383a3c3f3b343943443f0f1d1f1523131e +1d1f1e1f202b383b3a392b211e202229362e16234e451b28616c5e5d3729 +4748442d15172a281e4e937485511221b2697084341e211a22221d3a2228 +517783715121184c837d895a202723232221212d3a3d3936312d27252447 +977f91c13b3fd4bf5b88624e464a2d352d242121242f3921212e362e2b29 +1d393045200257750239a5051eb1060b9e210a7f5009508d0927a7051ebb +0f0b86410263660e232f61281f2f29242434282b2d2a3e7191ff7a5e2b47 +1b1a1c131d23528055213d4d2548332312181c131219121e646a6b6e7134 +271e23251f1f242218382c4f648d6c4d2c286219287522337634286a4929 +534811516f114fa41629a4162ec83224b2312297691b57626b5d5a66829b +a8b5c0bbc3c9cbcbc9c7c3cecdcbc8c7c5c3c2c7c7c1beb9b3aaa39e9890 +88827b79736d67635d5d5e616064605d595657555143454a443d3a3f4740 +403f3d3e3f40403f3832373e42413c3f41413f404145515a615e616c8099 +aebcc2cdd3dadbd8d6cac7c8ced7d7cec5c5cfd1c7bcb8bec4bdb7b4a076 +9e92919c9c908e979e9a96989c9e9a969795949597989694989b9d9d9b9a +9da0a09d9b9da1a19b969c9b9b9da0a1a19fa5a3a19d9c9ea2a59f9c9ea3 +a29d9ea3a4a9aba9a8a9a5a09ea2a4a2a3a6a5a2a09a9ba5acabaaaaa2a1 +a6aeaea7a6a7a5a09fa4a7a4a2a2a5a7aaacadaeb0b1a8abafb1b0afafaf +b4ada9aeb2b1afaeb3b6b3aba8adaeabaeafb0b2b3b3b2b2afb3b2aba6a7 +ababaca9a9a9a9a9b1b9afafb1b1b1b1b5b6b5b4b3b0afacaaa9a7abacab +aeb3b2abaeb0b1afaba9aaaca7a8aaacadadadadaba8a7aab2b7b6b5bab7 +b0abacb1b2ada29e9795959697969597949995919073312d120d10091924 +21382e5081899595928b664f4726205a20231f061e020f6b6e5d80210010 +141b1902000f462b2a5b2039b51b318b7f8970430f000907000426040057 +89668d5819112e2803253f0a181515131b232826352b1d321d2f2f0a215b +5704024f5d2d210a232f3728351808111d050a02181f3b2716121a212629 +1a141e1903616d0234960027a61f0a88130a744b084f6200168a0400700a +005d1a021f160403002800000000000a1812101010005ca8ba846a0b4210 +0d1d170e09415335285b390653473f0d17140c1f1b12154b6378305b1a09 +05000d0211000100020a13202a2304060907050507080000000105050608 +03000000030506050402020001010301000000020e4a4b435a6f989c9e9b +b197a098b4a7a1b1aeb6bcd1b4bbc3b0aaa0a091959494789390979b9c9c +999895959a9b9b9e9d999aa0a4a5a49d96969ca4a39fa1a7a29899a2a1a3 +a4a3a2a2a3a4a3a29e9b9da2a29e9ea09d9a9ea4a69d9f9a9b9890868385 +9ca9bdc8cacacfcdcabeb6b2b4bac2c6bab1b1b9c1bdb9b5afb0abab8b6d +61606b6b5f5d666d6965676b6d69656664636466676564686b6d6d6b6a6d +706d6a686a6e6e6a666b6b6c6e717272707472706c6b6d72756f6c6e7372 +6d6e73757a7c7a797a76716f73757374777673726c6d777e7d79796f6e73 +7b7b747174736e6d72757270707376797b7c7d7f817a7d81838281818186 +7f7a7f8382807f81848179767b7f7c7f808285858684858084837c777779 +787875757574747c867e828383838385868382807d7b787675747879787b +807f787b7d7e7c7876777973747678797a7a7b7977777c858a898588857e +7979807f7b706c67656465666765675f625e5f6755222b1a181b121b2017 +240e224039393535351f1b27171f63303b3e2d4a2e388e897699401a4756 +5b4726192c5f3f3c6a2d46c2283e988c968257251926261f254521156c9a +729662271f3c36153d61374f514c443c372e2532281a311d3233102d6b6d +1e217281503d1e31373a2b3b251c2d3d2829202f365845332f34393e412f +2932290e69710742a5012cae2d23a328126d3f00567e0c25920d02770f00 +5e1b062b2b252f315e321a1c29262d362f2d2c2c1c79c7d89f791447100a +180f06033f5639306545125d4f4510140f0616150d144e6c85426e2b1a18 +13231b2d191d171b2327343c372025292723232425191310141715161816 +161516191b1a1b181716151516171a1d1d1a1b20585346596e979c9e9fb5 +9ea49dbcafa7b1a5a39fad909aa99fa09fa99ea39e98788a7e7c7a787575 +75767676757578757173767a7b78726b6b7177746f717772686972717374 +747373747574736f6b6d72726e6e706d6a6e76767077767471695e5b5f79 +8ca5b6bdc1c7ced7d0c3bbb9bdc3c7bbb2b0b7bbb5adaba8a9a19c754438 +37424236343b443e3a3c40423e3a3b3938393b3c3a363a3d3f3f3d3c3f42 +403d3d3d43413f38403d4040454446444947454140424447413e4043443d +3e424144464443444039393b3d3b3c3f3e3b3731323c4342414138373e46 +463f3d3f4039383d403d3b3b3e3e4141424344433c3f4345444545464b44 +42474b4c4a494c4f4e4443464b464b4a4e4e514f504e4a4e4d4843464849 +494545434240484f434145454545474848474744423f3d3c3b3f423f4447 +483f44444743413d40403a3b3d3f404141403e3c393e444948454b4a433e +42484a463f3b3937393a3d3d3d3f3739373a47390d1c0f12170f181f1625 +1125484446414040271f28141a5e303d402c492f3a92907da04318414a4d +3c1c12275c3e3e6f334cca3046a0949c845623152120161e3f1d1471a27e +a56c2a203d37173d60324949474141403c333b2f2137253b3e1c397a7b2f +3586976348253c44493a492e232e3a222116252e5343312d33393e41302a +3329106b740a45aa0730b12d1d9c231474490b5e810c289512077d150562 +1f0727241a202150261215221e27342d2b2d2f207fcce0a6801b4d18131f +1a110d4a5f443b715320695c51191b150a1917111955758e4e7c3d2e2922 +3022311c201a1f282e3d464024272826212122231815151b232426251a14 +1314171919191918171616171817181616182059564b5f769fa6a8a8c0a6 +ada3bfb1a7b1a6a7a4b79aa5b4a7a8a5aea4a69f97707b68615b56545557 +5a5954505053514d4c50525351484141474d463f41464137384140424340 +3f3f4041403f3b3a3c41413d3d403d3a3e454646545655544c44424a667e +99acb7bcc5d0dfdcd3ccccd0d7dbcfc4c0c5c7c0b7b6b8b9aca3779b9494 +9a999292999d9a98999b9c9a97969697999b9c9d9d9b9d9f9e9c9b9ea09e +9b98999c9d9792a09f9fa1a4a5a4a3a6a4a19f9ea0a3a6a3a2a4a8a5a1a2 +a8a5a9aba9a8a9a6a19ea2a5a3a5a8a7a3a09a99a2a9aaabada59fa0a7ad +aba8a8a49f9fa4a7a6a4a5a6a8abadaeafb0b0a6aaaeb0b0afafb0b2aba8 +adb1b0aeadb2b4b0a9a8adadacb0b1b2b3b4b4b4b3b0b4b2aca7a8acabac +aaaaabaaa9afb7b0b0b2b2b1b2b5b7b5b4b2b0aeacaaa9a8abadacaeb3b2 +acacaeb0aeacabacaeafb0b0b0aeaeacacaba9a7abb3b7b7b6bbbab3adad +b0aea9a19d9896969796959698959b98949271263b250b041330351f3b3d +5d84868e8d8fab8b52462105827b07322610000d7c58558f1f0017060a06 +13361d12132536232f75080d2e211b5e431f10120d080915111d463f206e +7a0c0a505f2f5f7a191514171b262b261b2b2b1e211b2f391838aef09310 +455527307a15342b287bcabd2b1c001103070a0500000c29373127312a2a +250085890038d7083fb90001973530a15e06627a002890001c9800218316 +096b3d0009083600000008070c130c04200d044166739a7f155910100e1a +131d2e3e3725463522261d230007101015141318385462346c320b0a070d +00020600000307050910070000000000000103180e07080d0d0b08090605 +05080909080606040303040504000107040644565f728a82817aa8879395 +896e6a6c6a7474707d71716b4a302719050605152d7a92a1a8aaaba9a6a1 +a1a3a2a2a3a09c9ea2a6a9a9a49e9ca0a5a49e9fa5a29999a0a3a4a6a6a5 +a5a6a8a4a39e9a9ca1a29fa0a09d9a9da4a5a1a3a0a1a09c9492939c9189 +90a6bac5c4cac4c1bebab7b7b6c0bab7babdbababbafafacad8d6a636369 +686161686c6967686a6b6966666667696b6c6d6d6b6d6f6e6c6b6e706966 +6566696a6762706f7072757675747573706e6d6f73767372747875717279 +767a7c7a797a77726f73767476797875726c6b747b7c7a7c726c6d747876 +7374706d6d727574737475777a7c7d7e7f7f787c808282818182847d797e +82817f7e7f807e77767b7e7d81828485868686868185837d78797a787876 +767775747a84808385858384858783827f7d7a78767575787a797b807f79 +797b7d7b7978797b7b7c7c7c7b7b7a7a7b79797d868a8a8689867f797a7d +7b766f6b68666566656666696064606269561b3c2f160d152b2b14271b29 +392a241d21473a17241408918b1f5450401f369d6c63a038255353533432 +53372a283745303c7f12173b2e286b5331262d2c292d363037594e2a7480 +17155b6a3e779e484e51504c483e29172525181e182d391c42bcffad2f68 +7b4c4f92243b2d277ed6d44a402232211c21261a162a46514b414b44423a +0e91910447e40b3fbe041eb84e3c974e0066970a40a204279f0324881e17 +805b17353b6b34242b362f323429213d27205c838fb28c1c5e100f0b130c +172b3e3b2d524534362e2d01080e0b0f0e11193d5e734882431a1a19210f +1b221c181d1f191d221d1d2021201d1d202033271c1d201f1b1a1e1f1e1e +212222211f1f1d1c1c1d1e1e2027261f1a525e62718981807aab8c989486 +6d6a6b6260544348393d412b1d212317140f1a2a6b787c79787777767676 +75727273706c6e72767979746e6c707576707177746b6b72757678787777 +787a7675706c6e73747172726f6c6f767773777372716b6360626f686774 +8fa9b7bdcecdcac4c0bcb9b8c0b8b4b6b7b4b3b5ababa29d763f38383e3d +36363d413e3c3d3f403e3b3838393b3d3e3f3f3d3f41403e3d40423d3a38 +393c3d393442414244474847464a48454342444548454444484541414540 +42444241423f3a373b3e3c3e41403a37303039404142443b35383f444241 +423e3a383d403f3b3c3d3f4042434444443a3e444646454647494241464a +4947464a4e4b4443484a494d4e50515252524f494d4d4744454949494644 +454140444b424244444546474948474644413f3d3c3c3f41404247464040 +424442403f40424243434342423f3f3d3b3b3f454949464e4c453f434646 +413e3a3a383a3b3c3c3e3f383b3b3f493b072c240e0812282912261c2d40 +3530292e514119220e018a8b21554e401f3aa47770aa3d244b43422a2d51 +362a293b4a3642881b2043362e7153312326241e212d2a345d5534828c1b +175d6c41779c42474949494a453826312f2227213843274cc9ffbc417b8e +5c529229453a378fe2dc4d401e2b1915191f13112844524c424c45423b0e +9193064eec1447c20419af4a3ca05b09719b0c44a6092da509298c20177b +530a262a5b27181f2b24272d241d3b2824638b9abc9424641817121b1421 +344a473a6054424338370b0d130f1110141d41677b518f552d2a272a151f +231d191e2320262e282021201c1a181a1b2e241d2027292824211c1b1b1e +1f1f1e1c1c1a19191a1b1b191c201a18526167778f898882b2929e9a8d72 +6a696061574a5246494d3323252519150e131b5457524b454546484b4b44 +4141423f3b3d41454848433d3b3f44443e3f454239394043444646454546 +4844433e3a3c41423f40403d3a3d4445424a494847423b3b41504c4e5e7d +99aab5cfd4d3d0d0cfcecfd8cec9c7c5c0bbbfb9b9ada77e989999979494 +989c9d9c9b9a9a9a9a9a97989a9b9c9d9fa09e9fa09e9d9c9e9fa19e9b9b +9d9d9895a2a1a0a3a5a7a6a4a5a3a09e9ea1a3a5a4a5a9aaa6a2a5aca6aa +acaaa9a9a7a29fa4a6a5a7aaaaa6a49f9da3a8a9abaca79f9ca2aaacaaa8 +a39f9fa5a8a7a6a8a7a9abadafafafaea5a8adafb0afb0b0afa9a7acb0ae +adadb0b1ada9a9adaeadb1b2b3b4b4b5b4b4b2b4b3aca9aaadacabaaabad +acaaaeb5b1b1b3b4b3b2b5b7b5b4b2b0aeacabaaa9acadadb0b3b1adabad +aeaeadadaeb0b2b2b2b2b0aeadacacaba9aeb4b8b7b7bcbbb5afadaeaaa3 +9e9c9898989896939699979d9b98926d2b3119111a1f251b2f38344f778b +97958f899a79372533db8b00001215000e6c5454860a001b0a1a0021834f +04081c171c213a1e272524181c1c170d0b0b08052a0b07191b0c2c252126 +2f1b02141200000000000b15110600060200030b1c0916d3af2a0cc7ea77 +2f5d570504005bd3ee0a0a00040b0a0d0901010300000000000300011bf2 +ec0167ec0047fb0f24e43916c097158fbd004ced092eef1a10ed3d089168 +000100330902080f0b0a100c2e3122150d797e688213651315041b151514 +2c33193a3b314f4a593121191f191719182152573263390103000f0e0002 +05010708000003000100000000000104231409090e0e0a060c0b0a0a0c0d +0c0b0c0b0a09080809060204090606455865626451774522121b070a212b +11214257696d756b63472b291c0e1210132d7b95a0a7adaeada9a4a3a5a3 +a1a19f9c9ea3a3a7aaa7a19d9fa2a69f9ea3a39d9a9e9fa1a4a5a4a4a5a7 +a7a5a09a9ba1a4a2a3a29e9b9da3a5a4a4a0a0a2a29c99998c9297908484 +94a1aabbcfd2c6bababdbcb7b4b5b4b2b0b5b0b0abac8e67686866636367 +6b6c6b6a696969696967686a6b6c6d6f706e6f706e6d6c6e6f6c6968686a +6a6865727171747678777574726f6d6d7073757475797a7672757d777b7d +7b7a7a787370757776787b7b7876716f757a7b7a7b746c696f757775746f +6d6d737675757776787a7c7e7e7e7d777a7f8182818282817b787d817f7e +7e7d7e7b77777b7f7e82838687878887878385847d7a7b7b7a7776777977 +757983818486878584858783827f7d7a78777676797a7a7d807e7a787a7b +7b7a7a7b7d7e7e7e7e7d7b7b7a7c7b7b80878b8a878a87817b7a7b77706c +6a686867676564666a626663666b532032231e2321211326291722383b3b +35313357481d1d39eb9d061e393e19318764609423215858631f3c9c6516 +18272025283e222b2c2b21272a2723262a29264928202c28142f29282e34 +200c242c0b212324252724130200050200030b1f0d1ddcbc3b22dfff9249 +72650c060260e0ff282c0f26271f27332f29231c15171d1a271d2135fff8 +0c75f80245ff1e42ff5c2ec4931195d80c65ff1c3dfc2419f84b1cab8b1f +302d693b31363a302d2f29484b3a2e2694997e8f1a69131401140e0f112a +37214648415d58613521171913111417265d6544774a13151325271b1d20 +1c2020151416131e1f201f1e1d1f223e2e202024241e1a22212020222322 +212221201f1e1e1f202327261f19516068616150764525161b0000141e00 +0b222c312f352e301f0d1c2320201a182b6f7c7d7b7b7b7b797877777371 +716f6c6e7373777a77716d6f7278717075756f6c70717376777676777979 +77726c6d7376747574706d6f75777678747274726c686a5f6a73716a7082 +94a7bbced2c5b9b8bdbbb8b5b7b7b6b7b9afaea39f793c3d3d3b38383c40 +41403f3e3e3e3e3e393a3c3d3e3f4142404142403f3e4041403d3b3b3d3d +3a3744434346484a494749474442424545474445494a4541444941434543 +4242403b383d3f3e4043433d3b35343a3f4042433d35343a414343423d3a +383e41403d3f3e40404244444342393c4345464547474640404549474646 +48494642424649484c4d4f50505150504b4d4e4746474a49474645474341 +4348434345464746474948474644413f3e3d3d404141444745413f414242 +41414244454545454442403f3e3d3d42464a49474f4d47414344423b3b39 +3a3a3c3c3c3a3e403a3d3e434c380c241a17201e1e11272c1c2941484841 +3f3e604c1e1a35e89f092038401b3790716e9f2820504852173799631618 +2b252a2e472b343435282d2b27201f221e1b41231d30301f3e352e303723 +0e242b071c1d1e242a2b20110c130e0b0d15281625e5c5452debff99466d +6512121173f0ff333512282820242924201e1a14181d1925191e32fff80e +7eff0f52ff2140ff582ecda120a3e1136cff2244ff2d20fe4e1da8851726 +1f5b30272b3028262924454a3c332d9da4899722721b1c0a1c16191a3743 +2e5458506a636c3e291c1d1513181c2c636e4e8051171712222314161917 +1d2018191d1922211f1c181515183525181a21221f1b201f1e1e2021201f +201f1e1d1c1c1d1d1c20211b1751636d6768587e4f2e1f2305051d25060e +27353e3e453d3f2a172329222119121e595d554c484648494b4a46424040 +3e3b3d4242464946403c3e41463f3e43433d3a3e3f414445444445474745 +403a3b41444243423e3b3d43454447434143423e3d403846535451586c81 +96afc9d2cdc9d0d9dad6d1cec8c2bfc2bdbcb0a88098a09f9590959b9c9d +9d9d9b98989a9b989a9c9b99989a9ca0a09f9d9c9c9d9ea4a19d9c9d9d9a +98a0a09fa1a3a4a3a2a3a09e9d9fa1a3a4a1a5a9a8a3a1a5aba7abaca9a8 +a9a7a3a0a5a7a7a8acaca8a7a5a5a8aaaaaaa8a6a3a1a4a9abaaa8a4a1a2 +a7a9a7a6a9aaaaacaeb0b0aeaca3a7acafafb0b0b1ada8a8adb0afadafb1 +afaba9abafb0b0b2b2b2b3b3b4b4b4b3b5b2acaaacaeaba8a8abafaeacb0 +b5b1b2b4b5b4b3b5b6b6b5b3b1b0aeadacabacadafb1b2b1aeadaeaeaeae +adaeaeaeafb0b0afafafaeacacacb0b6b8b8b8bbbab6b0aeaea8a09c9b99 +999a9996929599979d9d9a916727341c08091328261d343f4449577790c7 +8b694622300013221400182c0c5fdc8685861f0016000f152a926a2e322f +2f2d292c3a4037302a131f291e111009001200101d252628242d31221f2e +24161d020000061a3141432442595a603834240c5a0000021d35013360ad +062e132ca5bd294012071008060000071419100300000000000027390043 +780f3fc204006a0b0c6b320c5950002158000d7b0204ad13008a6f010000 +24121112100c0e151a183c21131974399b62054e1411091a181120454321 +4e4c2b3f415f48240314181b18111666633949400b0c0228512504080004 +0704050a070201040707030205170c05070b0b090809070707090907050b +0a0a0908070705050103060e495255506f6968340c953e1b3432363b453d +4d6d749274685132281910141d142265899ea6acb0afaba5a4a6a4a2a2a0 +9ea2a8a3a7aaa8a29ea0a3a7a09ea2a4a09c9c9c9fa2a4a4a4a5a6a8a7a2 +9b9ba1a4a4a6a4a09c9da1a5a5a69f9da2a5a19d9ca09e9a99958c7f7389 +99b1c2c8c8c7c4b3afafafb1ada6a6aeb1aaab8f676f6e645f646a6b6c6c +6c6a6767696a686a6c6b69686a6c70706f6d6c6c6d6e6f6c6a696a6a6a68 +7070707274757473726f6d6c6e707374717579787371757c787c7d7a797a +787471767878797d7d7a7977777a7c7c797773706e7174767574706f7075 +7775757879797b7d7f7f7d7b75797e81818282837f7a797e81807e807e7c +7977797d818183838586868787878487837d7b7d7c797474777b79777c83 +81858788868585868483807e7c7a797878797a7c7e7f7e7b7a7b7b7b7b7a +7b7b7a7b7c7c7c7c7d7c7c7c7e82898b8b888986827c7b7b756d6a696969 +69686563656a626665686a4d1c3628151217242018292a2015172d427b47 +34210f2e0a2534291a3a4f2f7af0928e92382b554f593d40a57a3c3c3634 +302c2c3a4037332e1c2d39322a2e2818311b262f302d2a243032211e2f2c +2635252624262f3c414127485f5e623b37270f5f01020f2c46134773b90e +311534b3d3456234252b1c1e24262b3538332c291f303a3012575f0a5c8a +1541c8130a93332b7c380f6266083c71081f8c1011bc2412a8962e2d265c +443f3d382f2f32353154392b308a51af6c0951140e0313110b1d43452758 +58374b4b654c23010e0f151310196f714a5c501b1d153d683f1f231b1d20 +191a1d1b1d1e202324201f2031261c1e22221d1c1f1d1d1d1f1f1d1b2120 +201f1e1d1d1e24201e1c1e5557564f6c6867320c983c0d222226282e1e24 +393a583e3a2d171d201f23291a2058727c7b7c7d7d7b797878747272706e +727873777a78726e70737972707476726e6e6e717476767677787a79746d +6d7376767876726e6f73777a7b76727476726d6c74737477787468607c8e +a6b8bfc0bfc0b2b2b4b9bcbbb7b3b2afa49f7b3c44433934393f40414141 +3f3c3c3e3f3a3c3e3d3b3a3c3e4242413f3e3e3f4043403d3c3d3d3c3a42 +424244464746454744424143454546414549484240444842444542414240 +3c393e40404145453f3e3b3c3f4141413f3c39393c404243423e3c3b4042 +403d404141414345454240373b424545464748443f414649484648494744 +4244484b4b4d4d4e4f4f50504e4c4c4b4747494b48444445494541434843 +44464748474748494847454341403f3f4041434546454241424242424142 +4241424343434342413e3e4044484a4a484e4c48424444403839383b3b3e +3d3c393d403a3d40454b3408281e0e0f1623201c31312a21253a4f88523e +28132f0b25362c1d3b533383fba09d9e3d2a4c3e48353da37a3d3e3c3a37 +3336444a413c37213039302626200d291624313637373035362623342f26 +352121222532424d4e36586d6a6e443e2e1463070715314d17456fb9113a +213fbede506b3d2f3427221d1a212e332f282315242d22054b5405619623 +4ed41a098f322d8444207373134578112996191ac32b16a89329261a5139 +35332f28282d302e543b2f38955dba75125a1e170d1b1915265051356466 +45595771552b06121217171520767a54635018170f345e34161a14191d1c +1f242424242426221c1a19281d14161c1c1b1a1d1b1b1b1d1d1b191f1e1e +1d1c1b1b1b1e1a19191d555b5b5573706f3d16a1471a2e2d302e34242c46 +48674c473720232624262916144553564e4b484a4a4a49474341413f3d41 +4742464947413d3f4247403e4244403c3c3c3f4244444445464847423b3b +4144444644403c3d41454746403d40423e3c3c47484d52565249405a7092 +aec0cbd6dbd1d1d2d2cec8bfbbbebdb0a9849ca4a39690979d9c9e9e9d9a +98989a9c999a9b9a99999a9ba09e9c9a9a9b9c9ca19e9a9898999898a09f +9fa0a3a3a2a0a4a19f9fa2a5a6a6a1a6a8a5a1a2a6aaa7ababa8a7a9a7a3 +a2a7a9a8aaadaca9a0a4a8abadaba9a4a4a9acaba9a7a7a7a7a4a5a9a9a5 +a5a9acacacafb1b0ada9a4a7acafb0b0b1b2aba8a9afb1afafb1b3afaaab +afb2b2b3b2b2b1b1b1b2b2b2b4b5b1acaaadaeaba5a6abafb0aeb2b8b1b2 +b5b6b4b3b5b5b7b6b5b3b2b0afaeaeadadb0b3b2b0afb1b0afaeaeadacac +afb0b1b1b0b0afafacaeafb3b6b8b8b9b7b8b4b0aeaea9a19b9a989a9a99 +96929499959b9c998b5c1e3119061830381d212a3d434c5e6c748f78432e +282947b6f1cf26031a0a0521000b09000012031703013a130c2014242e26 +2c322e311e201a232c201521230d0f091e292d3b38434928262d1d171b0e +070604081736566689b6eff7e97b3c130f1b0c2317265b2b2f224089857e +6e0306001106001211180e111105000000001c1d33484940280d180b1d22 +3c0e30542c0a3f1317432d1c36222131411a2d4c24112800001c24250811 +121114161b232b806a2129ac52be7d3e52320f120e0e11284e49234f471d +4b425e5e410e181e191610136c6b494148150f092c5f2e09110000030509 +0f0a0201070f10080101080505090a07090c070606070808060409090908 +0807060405010409114b59608971646c723df1be4c9d1e1d3724464b6f70 +824432302d24261a0a17101556939ca4abafaeaba5a4a4a2a1a2a1a0a4ab +a4a8aaa6a19ea1a6a7a2a0a2a4a29e9c9fa2a6a8a8a7a8a9a9a8a39c9aa0 +a4a5a8a5a19e9d9fa3a6a8a09ea3a5a19f9c9c9695969997928a877f8095 +b5cacabfbbb4aeacaca9a19fabafa7ab8f6b7372655f666c6b6d6d6c6967 +67696b696a6b6a69696a6b706e6c6a6a6b6c6c6c69676565666868706f70 +717474737173706e6e72757676717678757172767b787c7c79787a787473 +787a797b7e7d7b72767a7d7f7d7873717679787472727373727377777374 +787b7b7b7e807f7c7876797e81828283847d7a7a8082808082807c78797d +80838483838484848585858587827d7b7e7c797172777b7b797e86818588 +8986858585858482807e7c7b7a7b7a7a7d807f7d7c7e7d7c7b7b7a79797b +7c7d7d7d7d7d7d7c7e8185898b8b898584807c7b7b766e6968686a696865 +63646a61666669674416352415223637191e24302b2830363a57491e171e +2c55c9ffe43f1f3725172d00111515225458612814491f162517252d2326 +2c2b2e1b20212e3a332b3c422c2c243238363f3741462621271816201c1b +1f1e1d263d566692c3fbfff1824016131f0d271c2b63353c2f4990888378 +131c102f2314271f2822282a24191a334e8490aabbb4a07c5246292e2c46 +1f4f7c58325a2523504033523f3947552c3f603b2d4a231553605e373a3a +363535383e44957f363dc065ce854255320c0c070709224a492655502654 +4a62613e09121510100e167378575256241e1a407445232a181218181b1f +1c17181e2628211a19201d1e2223201f221c1b1b1c1d1d1b191e1e1e1d1d +1c1b1d221e1d1d1f555c61886e616a703df1bc46981918311933324b485a +20171d22232f29192216154b7e7c7b7b7d7c7c7a78767271727170747b74 +787a76716e7176797472747674706e7174787a7a797a7b7b7a756e6c7276 +777a7773706f71757b7e78747677726e6d6d6a6b70787a76726f696a81a3 +babcb5b8b7b7babfc1bcb3b3aea3a17e4048473a343b41404242413e3c3c +3e403b3c3d3c3b3b3c3d42403e3c3c3d3e3e403d3a3838393a3a42414243 +4646454348454343444748484146474440414547424444414042403c3b40 +424143464540373a3f424442403b3a3f4443403e4041413f3e42423e3c40 +434341444645413d383b424546464849423f42484a48484a4b474344484b +4d4e4d4d4d4d4d4e4e4c4d4c4a47474a4b48414245494743454b43444748 +484747474a49494745434241424141444746444345444342424140404243 +4444444442423e404347484a4a494a4a46424444413938373a3c3e3d3c39 +3c40393c4045472a01261c102134351a252e3a38343b43466453261f2631 +58cdffe743223d2c233b1021211a204a45502010461f17281c2a332a3036 +3437242827323b3128353a24271f313b3d4a454e4d29252b1e1b231d1a1c +1d1e29436072a3d4fffffc8c491b16220f281f2e6537423750968d867912 +1a0e312b213a39382320241e1111263e6d738c9c96846240443138365027 +517b5732613133614f415d4743526036496943314c22114d58552f32322f +2e2f33394196823b46cb73db904d5e3c15160f0f142c585535635f356357 +6e6a470f161a1514131d7b816259561f1712376b3d1a2414131b1f252c2a +282a2e3432281e1b201d1b1f201d1d201d1c1c1d1e1e1c1a1f1f1f1e1e1d +1c1a1d19191b2057616690776c757b47fbc7509f201e351d37365551652a +1e232828362e1e24140b3963564f4a484748474744414041403f434a4347 +4945403d40454742404244423e3c3f424648484748494948433c3a404445 +4845413e3d3f4346443b383b3c3a363739393b434b4e4e463f3a456899bd +cbcdd5d6d4d4d0cdc3bac0bcb1ac889fa4a29894999e9da19f9c9999999a +9b9a99999b9ea1a09fa09d9a999a9c9d9da3a09c9a9a9b9c9ea3a2a1a3a5 +a6a4a2a7a3a1a3a7ababa9a5a8a8a4a3a7a9a9a7aaaaa7a6a8a6a3a4a8aa +a9aaadaca8979fa7aaacaca9a3a4acb2ada8a6a7a7a8a6a8aba9a5a6aaae +adadb0b2b1aca7a6a9aeb0b1b0b1b2a9a7aab0b2b0afb2b5afaaadb1b3b2 +b4b2b2b0b0b0b1b1b2b4b4b0abaaadaea9a6a7abafb0aeb2b8b1b2b5b6b4 +b2b3b3b7b6b5b3b2b1b0afb0adadb2b4b2b0b0b3b1afaeafaeacaab5b5b5 +b4b2b1afaeacaeb0b4b6b7b7b9b6b6b2aeadaea9a29b9a98999a99979391 +99959a9c9987503c280a0e100004140903161924454e4d5c2b111d1a0009 +39301600060a1500000c0c0f0d01160110052b53170b161b3b2f2c3a3334 +453639221d1f12082233211d12132c3b4a36343e3f34292b2f291d111315 +131e375969717e96a8975d4c3f7e2e271514312f2b2b4921a37b67967d00 +11081310190f161a12060000123a583e4842284a4c4e54321c071038191c +0f34006c7d586e4c0c247a4d405f0f0f1d1e1c0e112b340e0000030a0c17 +16121700070f11147d56c1493e22270117171e1015313b21423c2e584246 +524a141107161a15104d54483c66352426314e30262207000406080c0606 +030d181b0e040101020509060102080909090b0d0c0a0807080909090908 +080709100e0f4e718e5b7c7e597d634c000a1524240a311a162e3a5a2b21 +171f070112031a1e1633709aa2a9adadaaa6a5a19f9fa0a09ea2a8a4a8aa +a7a19fa2a7a6a4a3a3a3a29f9e9da0a4a6a6a5a4a5a7a8a59d9a9fa3a4a8 +a4a1a09e9da1a5a6a2a1a3a5a09fa08f99a1a1989497a0918b848593a6b9 +c0c6c0b6aeaaa9a4a4abafa8aa916e73716763686d6c706e6b686868696a +6a69696b6e71706f706d6a696a6c6d6d6e6b696767686c6e737272747677 +757376727072777b7b79757878747377797a787b7b787779777475797b7a +7b7e7d7a6971797c7e7e787271797f7a7371727374747679777375797d7c +7c7f81807b76787b8082838283847b797b8183818083827c787b7f818385 +83838383838484858686817c7b7e7c777273777c7b797e86818588898684 +8383858482807e7d7c7b7d7a7a7f817f7d7d807e7c7b7c7b797781818180 +7f7e7d7c7c7e8286898a8a8984827e7a7a7b766f6968686969686664646a +61656669633b362f171f1c03041208000b090d252a27380c00101701184c +432b121e21270c000d0f1b29325a585d2a3b6223131b1c3a2c27342d2e3f +303827282d241e3d503e382b273a424d322e393a2e20212a28221c232523 +293f596d7e8fa6b5a1655346833228161835333035552aaa806d9f8a0e26 +1e282327171f2827252a3c67a5d7cee3dfc0d8d0c8bb7c4e2a27492c3833 +5c138b956a7e5d1f3f956556732321313739313b5d6b49151b2b2f2f3633 +2d30161b2222258e66cf4f40222500110f17080f2e392345433660484852 +470d07000d131210515d554b714130354161443c381f1418181a1c171918 +202e2f251c19191a1e221f1a1b1e1e1e1e2022211f1d1c1d1e1e1e1e1d1d +202224211a56748f58797b567b614a000a1827270b2f140a1b25451a1613 +200f0e21122827172a5f7c7b7b7b7b7b7b7a736f6f70706e727874787a77 +716f727778767575757471706f72767878777677797a776f6c7175767a76 +7372706f737a7e7a787a77726e6f5e6a7678737077806e686467778ea5b3 +bdbebcbbbdc1c1bbb5aea4a2814348463c383d42414543403d3d3d3e3f3c +3b3b3d40434241423f3c3b3c3e3f3f423f3c3a3a3b3e4045444446484947 +454b474547494d4d494548474342464846424343403f413f3c3d41434243 +46453f2d353e414343403a3a424a453f3d404142414144423e3d41454442 +454746403b3a3d444647464849403e43494b49484b4d4743464a4c4d4f4d +4d4c4c4c4d4d4c4b4b4944454a4b46424145474543454b43444748484645 +454a494947454443424441414648464444474543424342403e4848484746 +4542413e40444848494949494844404344413a38373a3b3e3d3d3a3b4039 +3b40454320201f0e191a020415100b191417303432421402171e071f5247 +2e162229311a101f20272d2f4f454b22385f21151e2140332e3e3738493a +402d2c2e241b384b393328263d4a56403a3f3e322529302d251e2325232b +4261788ea1b6c5ad705b4c87352a18193636343f6133b2846d9c83061f1b +292a342a2e29201d1f2c528bb9aabbb497b0a9a39e6f4d2c2d50323b335c +16909f788d6d2e4a9e6f617c2c2b3a3e3d353a5a66430f14232829312e28 +2c141a26292d9873dc5b4c2e30091b1a1f13193946305453436d54545c50 +150f03121a19185a665e52733f3032405f423a361f191f22262b272a292f +3b3a2b201b191a1b1f1c16181c1f1f1f212322201e1d1e1f1f1f1f1e1e1d +1e221f1c59799461828661866c5509141f2e2c0f32160e212c4c201a1422 +111428192b26111b455850494646454647413e3e3f3f3d41474347494640 +3e41464644434343423f3e3d404446464544454748453d3a3f4344484441 +403e3d4145413c3a3c3b363435263441443f3e464d363235436184a7bdce +d3d2cecccdc9c3c1bcb2ad8b9f9f9d9a9a9da0a1a49f9a989a9b9b999e9a +989ba2a5a39fa19d99989b9e9f9fa5a4a09d9d9fa2a5a5a4a3a5a6a7a5a4 +a6a2a0a2a8acaba9a8a9a6a2a4ababa7a6a9a8a5a4a6a5a2a6aaaba9a9ab +aaa69ca4ababababa9a2a6acaea8a5a7a9a7a7a6a9acaaa6a8adb0aeaeb0 +b3b1aba5a8acb0b2b2b1b1b2a6a5a9afb1aeafb2b6aea8acb1b2b1b3b4b3 +b1b0b0b1b2b3b4b3aea9aaacada8aaaaadafafacb1b7b0b1b4b5b4b1b2b2 +b5b4b3b1b1afaeaeb1adaeb3b5b1afb1b2b0aeaeb0b0aeacb3b3b3b3b2b1 +b0afabaeb1b4b6b6b6b8b7b6b2adabada8a19b9a9798999997949298969a +9c9883492b21152115095dc0bfc0cc9550414858424dacb6b5af821d1505 +221b02074b4766395a19081800120a416b37170f243e383a4033373c3b36 +3a2c2c1d091b2c18000f14393b3d37432f544a3d513f171410121110182f +4a566f7d8ea78a6541113e2c2c1f326f4c293837377c5a467b7c2024151c +211d1718130000173d4c3d2733231e2e45323357695c0200281e0911221f +907e7b863502318c51627c1c393018222c391e00000000090d0c16120508 +0061470f1463587a577d39431216131217131e2c223c3a42302d25304221 +251c181c17123347503e47280b1210271a0e250e050a080608060a070f1c +1f120706060300030300000108090a0c0f0f0c0a0607080a0b0a0a090c0d +1010145987ae8d836a579195778f214528c3bdb5e861403a4a354e66bac5 +aca7400a000d348a99a0a6aaaaaaa7a7a2a1a1a2a09d9ea3a1a6abaaa4a1 +a2a4a4a6a6a4a2a1a09f9a9da1a3a2a09f9fa5a8a59e9b9ea1a2a7a3a2a2 +9f9b9ea3a4a2a4a5a6a0a2a6a79d979fa9a89887949a9b92888b9ca8b3b8 +bcb6aeaba8aaadafa8ad936e6e6c69696c6f70736e6967696a6a686e6a68 +6b7275736f716d69686b6e6f6f706f6d6a6a6c7275757474767778767576 +727072787c7b7978797672757c7c78777b7a7776787774787c7d7b7b7d7c +786e767d7d7d7d787173797b75707274737374777a7874777c7f7d7d7f82 +807a747a7e82848483838478777a80827f8083837b777b80818284858484 +838384858686857f7a7b7d7b767676797c7a777d85808487888683828283 +82807e7d7b7a7a7e7a7b80827e7c7e7f7d7b7b7d7d7b797f7f7f7f7f7e7e +7d7b7e83868989898885827e79787a756e6968676868686665656b626568 +6a60342427243423135ebfbdbdc68b403033432f3ca1b1b8b88f2e281a37 +2e13135148653c66363a5e595f2f517a432015253d35373d30343938353f +373a2f1f35493516252644403d313d2a4f44374b3a1515151a1d1c22374f +5f7f8e9fb798724b1c473533263976533244433f835f4a81822a2f22282b +241c2226203066a8d2dad5ebe0d6e0edd2caddd1ad401444331e293e3dac +978f98451448a568768f2f4a432f3e4e614c221f271a2c2d2b332c1e1e15 +75591e227166835d7f39410f100b0a110d1b2a213e3d483631272e3f1a1b +110e151211364e5a484f31151f1e382d223922191e1a181a181d1c233233 +281e1d1d1a1a1d1d19181a1e1d1e202323201e1a1b1c1e1f1e1e1d222122 +201e618aae8a8067548d937592284e31cdc5bae9613b354535526fc6d5b9 +b44e170a0f2e7a7f7d7c7b7b7b7c7c74717172706d6e7371767b7a747172 +7476787876747372716c6f737574727171777a77706d7073747975747471 +6d70787c7a7a7b78727173746c6872808070606a70716b646b8194a4b2bd +bdbbbdbfbcb5b1a6a5874343413e3e41444548433e3c3e3f3f3d403c3a3d +44474541433f3b3a3d4041414443403d3d3f444747464648494a48474844 +42444a4e4b4948484541414848423f403f3c3b3d3c393d4142404042413d +323a4242424240393c4246403c3e424141414245433f3f44474543454846 +3f393c404648484748493d3c42484a47484b4c443f4348494a4c4d4c4b4a +4a4b4c4d4b4a474245474843444447474441444a42434647484544444847 +474544424141454142474945434546444242444442404646464646454342 +3d404548484848484a48443f414340393837393a3d3d3d3b3c413a3b4146 +401911191d30231260c4c8c8d2944a383c4a3544a7b7bdbd97352c1d3c34 +1d1f615a774d723a3753454d274e77411f1529423c3e44373d42413d4339 +3b2f1d3245311323264646453d473053483b4f3e1817181c1d1c23395366 +8ea0afc6a57b54224c3a392c3f7c5b3b504f4a8d654d81802227181e221c +151a201922518aadafa4b7aaa2aebca49db8b89c350f4536212b413fb09e +98a4542050ac6e7d9636524a35415060491c182114282a262f291a1b1374 +5d252b7c7392698b454c1a1a16151b1726372f4b4c56443d333948222319 +161c19193f5864525a3a1f2727403429402b222926262824231d22303125 +181515121114140e0f141c1e1f212424211f1b1c1d1f201f1f1e20202220 +206491b69389725f9ba0829b305336cfc8bded633f394937536ec4d4bfbd +571d0c0a22635e534a4543434547424040413f3c3d4240454a4943404143 +444646444241403f3a3d414342403f3f4548453e3b3e4142474342423f3b +3e43413d3e3f3d37373a3d34323b4a4c3c2930363f404252708ba1b4c2c5 +c4c7c7c8c2beb3b2919f9b999b9ea0a2a4a6a099979a9d9b98a39d979aa2 +a59f99a29e99999ca0a1a1a2a19d9a9a9da1a5a5a4a3a4a6a6a4a3a29e9c +9fa5a9a8a6a8a7a39fa4ababa4a5a8a8a4a3a5a5a1a7abaca9a9aba9a5a8 +afb2aeabaaa8a2a8aaa7a1a3aaaca7a5a4a8acaba8aab0b0aeaeb1b4b2aa +a3aaadb1b3b2b1b1b1a3a4a8aeafadadb1b6aca6abb1b0afb2b6b5b3b2b1 +b2b3b4b3b2ada8a9acaca7aeadaeafadaaaeb4afb0b4b5b3b1b1b0b3b2b1 +b0afaeadacb2adaeb4b6b1afb1b0aeacaeb1b2b0aeabacaeb0b0b1b1b2aa +aeb1b5b6b6b5b7b9b8b2acaaaba7a09c9a979799999895949a979b9c9882 +452a3113010a1c373c2f22352513251c111f0e624851383d7213160f0c24 +066d2b6d2678050117000f070d201007011c1c1018150f1a0f210e130d1d +1d0e20341e010a001c1e1c18222914192217151b16181713111d354e5a6b +74778d6e6a4502202903150d93c33f3d692e44594740471d18291b1c1823 +19000b324b46332c2e212c2d3325363337486b670d00222811220c590b00 +554e2439530227610b1101140b100f000000000d221a1019120406083c23 +0e025c8408115e1c3517121c171210100e07241b2400150d081d091b1816 +16121a355a6a4e413b171b21483d131907040a0502070808030917190c03 +030d03000105040204030406090b0c09070203060809090908120a080e1d +6990b0a0aa9c7e8875818b8371000d0b0c0e19474151463e092d17225920 +0b1b20194c98a0a5a9aaabababa8a6a6a6a39e9ea19ea5acada8a2a1a2a2 +a7a9a5a1a0a0a19da1a4a6a5a2a1a0a3a7a69f9b9da0a0a6a2a2a4a09a9c +a2a2a2a6a7a7a1a4aa9c9e9e9c9a9c9ea39d9690959a96887694abc0c1b7 +b0adacb0b0aaae956e6a686a6d6f7173756f6866696c6a67736d676a7275 +6f69726e69696c7071716d6c6a67676a71757574747577777574726e6c6f +757978767877736f757c7c75767a7a7675777773797d7e7b7b7d7b777a81 +84807d7c77717577746e6e7577737172767a7976797f7f7d7d8083817972 +7c7f8385848383837576797f807e7e828379757a807f8083878686858485 +868785847f797a7d7a757a797b7c78767a827f8387888583818081807e7d +7b7a79787f7a7b81837e7c7e7d7b797b7e7f7d7b77787a7c7d7e7f807a7e +83878989888787847e787778746d6a68676768686766676d6466686a5f31 +253924151a283b3b2e1f32200c1c13081909604956414881262b221d300e +6e2a6c2c8927355f555e2f223320130b21201117140e190e20111b182b2f +243a4e3b1a200826211b121b2412172015131b171c1c1b1b273f58657b85 +879d7c7853102e3711231ba1d14d4b77384d5d4741471c1a2c1f211e2a2d +22508ec1d9dee3ebdee3dbd9c7d3d0cac9d8bf50153d381f311e6c200e68 +5f354a661439701a201327232e33201a28293140382d332c1a1c1c4e321d +0f69901014601b35150f16110c0d0d0c07231d2801170d061a02110e0c0f +0d193861725647421e272d594f272d1b181e19151a1b1c181e2c2e231a1a +241c171a1e1d1d1d18181a1d1f201d1b16171a1c1d1d1d1c261c181c276e +93b09fa7997b84717f8b877801120e0d0f184640524a431239252f662e18 +2624153f817f7d7b7b7c7e7e79767676736e6e716e757c7d787271727479 +7b77737272736f73767877747372757978716d6f727278747476726c6e77 +797a7c7d78727377696b6c6d6d6f73756b6460666f71665b7e9bb7c0bbb7 +b7b6b6b2a8a88b433f3d3f424446484a443d3b3e413f3c453f393c444741 +3b44403b3b3e42434341403d3a3a3d4347474646474949474644403e4147 +4948464746423e4148483f3e3f3f3b3a3c3c383e4243404042403c3e4549 +4542413f393e403f393a4145413f3f4145444141474745434649473e373e +414749484748483a3b41474846464a4c423d424847484b4f4e4d4c4b4c4d +4c4a4844414447474248474645423d404541424647474543424645454442 +41403f464142484a45434544424042454644423e3f4143444544453c4045 +49484847474c4a443e40413f38393739393d3d3e3c3e43393c41463f1611 +2a1c1319283e40362a3b271321180d1d0d654d5a464e862a2e28243c1b80 +3c7e3c93293153414b261d2f1d110a2423161d1a14211628181e1a2c2f22 +374b37171e082828231c232a151a2318161d191f1f1d1c28405969889596 +ac89835c1937401a2e28aede5a54804156664f4649180f1906010000080e +3e779fadaaabb1a4aba6a998a6a3a0a2b8a63e0b38382034207025146f67 +3d516a183b751f25172b252e311c1421232d3e362b302917191b4e352217 +729c1d236d2941201a201b1616181713312c340d231911230a1a16141614 +21416b7d6155522e353b63593036222125201c21211a111725271b12121e +1611161a19181a19191b1e20211e1c17181b1d1e1e1e1d251c181d29729a +b8a7b0a486927f8c97908007181512141e4c45564d46113726356f37202a +230c2c62564c474344454745454545423d3d403d444b4c47414041424749 +45414040413d414446454241404347463f3b3d404046424244403a3c4241 +3f4243403a3b403436373736383e4136312f384447413d668baebcbebfc1 +c2c4bfb5b4969a9799a0a29fa0a59c9a999a9d9c9894959799999b9ea2a5 +a39d97979ca09f9da5a29e9c9ea2a5a8a1a5a5a3a3a6a6a3a4a6a5a1a2a4 +a39fa3a3a3a5a7a9a9a8a8abadaaa4a1a3a6a3aaaaa5a7adaca3aaa5a9b3 +b2a7a6aaacafaca5a3a8a9a5aaa9a9aaaaababacaeb1b3b4b1afadadaeb0 +b1afb1b4b1aca9acafb0afaeafb0b2ada8a9aeb2afadb6b6b5b5b4b3b2b2 +b2b0aba6aab0afa7afadabaaacafb3b4b3b0aeadadafb4b5bab5b2b0ada9 +acb1b6aeadb6b8afabaeb4adaaaeb5b7b3b0b1b2b4b4b1b0b0b1b0b2b1b1 +b1b2b5b9b6b5b1aeafb0a9a09b9b9a9c9d9c99958d9098979b9f7e463127 +150510250e445039463e0e0d200b150d3d37352d2c471c120a22131c5439 +6e2f6300060d170c03130003071451f92728fb640ed1a40e7bf50e1b131b +4315050f16f05d0dc19d0c6cb31835cf3004131618141a2e485a72737678 +685d5638ee9f0004020300131d15263b223039c43e27233e5f717a702a3a +43342825252b3f3a4d4d45453336314a5a6a00000e1c1726341c1a132b15 +202b170e301e22071002050000000f12181a14070101080a020505060600 +0011212b1f35351c13171a1a1f070e031212140c0d180f1516200d1b1411 +213e4e3453381c19261b0e101116130f1619171d17160c0a0f0b0b151018 +14160c071207000f000b0505060b07090b07070a080418001b1508659ea1 +ada5a5b98a97b2aa9ca3516a745b692b251816112a3959444031220b0b12 +143e968cb2a3abaca7a6aaa7a6a6a29c9c9fa1a2a5a8a9a7a29da9a7a5a2 +a1a0a0a0a29f9d9fa3a6a6a4a6a4a7aba8a1a0a4a9a6a2a0a0a0a09ea2a2 +a3a3a6a4a3a0a09999a0a5a19d9da09e9c9c9fa0a09a788293a9bcc3bfb8 +aea5b1a98e6966686f716e6f746b6968696c6b6763656769696b6e727573 +6d67676c706f6d706d6b696b6f7578717576747477777474767571727473 +6f73737476787a7a79797d7f7c76737578757c7c77797f7e757c777b8584 +797579797c79726e7374717677777878797a7b7d808283807e7c7c808283 +818386837e7b7e8081807f80817f7a77787d81807e878788888786858584 +827d787b817d757b797877777b7f82838381807f81848588837f7d797578 +7d837b7a83857c787b817a777b8284807d7d7e80807e7d7e7f8082838384 +85888984817d7a7c7d766d69696a6c6c6b68666063656267715d322c2f26 +19223313454d36433c0c0d200b170f413c3d3534522f271d331f22553a6f +387a153f57705b2e2c161717225bff2f2dff6913d6a91585ff1d2f28355d +321d2426fa600aba960b6db71c3ad4350c191f211e243a57687f7f848676 +6e684cffb50c1e1b1e052a32273444262e33ba321d1c3d657b899a82b5d4 +d7dfe6e2dddcc6cac4bec5bbc5c4d3cdc43b1b1d1e172539272a253a252c +3723183a282c131e161e1a231b3a3b383631241b1b1e2016171413100305 +19242f21353319101417171c050e031114160e0d160c100f190616111124 +45573c593f2325322c2125262e2c282f302e342c2b22202520202d282f2b +2e241f2a1d1122111e1818191e1a1c1e1a1a1d1b182a052b20116aa1a1ab +a3a3b78895b0a6969b465e684f5d1f1b10100e27375745493e301a181b14 +35816e8c787e7d7a797b777676726c6c6f717275787977726d7b79777473 +72727274716f71757878767876797d7a7372767b78747272727273797978 +787674716e6c65656e736f6b6b6b696769707579795c6a829cb1bdbcb7b0 +a7b1a6863e3b3d4446434449403e3d3e41403c3837393b3b3d404447453f +39393e42413f44413e3c3e42474a4347484646494946464845414244433e +4242404244464643414244413b383a3d3a41413c3e44433a403b404a493e +3d414245443d3a3f423f4444424343444243454848494644414142444745 +474a4843404348494847484948433f40454948464f4f4f4f4e4d4c4a4946 +423d434b4a4249474340414245454542403f414346474d484644403c3f44 +4a42414a4c433f4248413e42494b47444445474745444344424445454344 +4749494743404546413838383c3e41403f3c36393a38404d3e1919222017 +2234174a543d4a41110f220b160e423f3f383756332a233a2b30674c8147 +8216394a5c482426131516225dff3231ff6f19dcaf1b87ff203029345c30 +1d2526fc6511c29d1071ba1f3dd7380e191e201d23385469888d91938178 +7257ffc21c2f2f331c3c3727374b313b3fc232110011293236505a98ada8 +a6a7a29fa595a09e9ba2979a909fa2a1250d181d192a3c292a273d252c37 +23173b292d131e141a141c11303335372f2218181b1d15171719190d1126 +333b2e413e24191d202027101a0f1f21231a1921151717210e1d1a192d4d +6047674f33333e34282a292e2924292a282e27261f1d2321212f2c353338 +2e293628162615221c1c1d221e20221e1e211f192a052b221670aaabb6ae +b0c495a2bdb4a2a8546c765b692b261b1a152e3c5c4a504639211e1a0c24 +66485d454745414247464545413b3b3e404144474846413c494745424140 +4040423f3d3f434646444644474b48414044494642404040404045454545 +4543403d3c35333b403c383a413f3b3a3c3e42442d44668babc1c7c5bdb3 +bdb19199979aa0a29e9ea19e9d9c9c9c9a97959c9c9d9ea0a2a3a4a19c98 +999da1a09ea4a39f9d9ea1a5a9a5a9a8a5a4a6a5a2a4a5a3a1a3a7a49fa0 +a0a2a4a7a9aaaaa8abaca9a4a1a4a7a8abacaaabadaba6aaa6aab1afa4a2 +a7aaaaa6a1a4a9a7a0a9a8a8a9aaabacacaeb0b3b4b1aeadacaeb1b1afb1 +b4b1aca9acafb0b0afafb0b2aea9abb0b4b2b0b5b5b5b5b5b4b3b3b5b3ae +abafb4b4acacaba9a9abaeb1b2b3b0b0afb0b1b4b5bab5b2b0ada9abb1b8 +afaeb6b7afabaeb1adabaeb3b4b2b0b6b6b4b4b2b1b0afb1b3b3b4b4b4b6 +b9babab6b3b3b3aba09c9b999b9c9c9a9693959d9a9d9e7d413b280e1412 +1e1d324a535f4e4e4a33432d4b5344352a306372402644250c454e3c4224 +140004001900001119060216ab0100ab2e007f770036a900070049af2c0a +1b00cb4307c093007ade0035ef1b0a0b13161315253a48646770666d5b2b +2d3e112a411100242e2b2e092121310f423672b3d6dcd4bf924e3c353139 +3b3b455d625e66583f49263332406e600002222837321d1d1b1e24291a25 +2a342f3c1d0c21280b121920030c0c0600000002040a0f10100f070e272f +262c1937160b0600020e181c110a06020121001b1a1403251a0c0a224252 +584d41261518150b070c100a070d0c070a17070e14070d1605021301051a +140d0907150d0c0c090009030400050400040a080c030d123d97b6a59ea7 +b4afb4ba84ae8ab059463b3f503d404a4f37495a594bc34b1a302f221e81 +92aba3aaadaaaaa9a7a7a8a49f9fa39fa1a4a7a9a8a4a0a5a4a3a1a09f9e +9ea19e9d9fa4a6a5a3a6a4a4a7a5a0a1a6a5a4a4a4a3a29f9da2a0a1a2a4 +a5a5a4a69e9a9fa3a09e9fa09e9d9ea0a09e9999847c8faabbc1c1bba8aa +a89c6866696f716d6d706d6c6b6b6b6966646c6c6d6e70727374716c6869 +6d71706e6f6e6c6a6b6e75797579797675777673747573717377746f7070 +7375787a7b7b797d7e7b767376797a7d7e7c7d7f7d787c787c8381767176 +7777736e6f74726c7576767778797b7b7d7f8283807d7c7b808383818386 +837e7b7e8081818080817f7b787a7f83838186868888888786868785807d +8085827a78787676777a7d80838383828283848588837f7d7975777d857c +7b83847c787b7e7a787b80817f7d828280807f7e7e7d8183858687878989 +8886827f8080786d6a69696b6b6b696766686a6769725c303833212a262d +243547505d4d4f4e394c36545d4e3d32356d85583b553114485445524140 +3b4e4c662a192c321c1426b90c03b4370288820b41b7101b1063cc492430 +0bd54605b98e007fe60443ff2918171d1f1c1f3149566d6f7a727b6d3f45 +582e49613309454c4140172b253006362765abd6e9ebddd2c8dbdfe6f3ee +dccfc8b7a6adada4c0adc8c6c4d9ad1813211c2b2e21272a2d3032202b2f +3934422617303d24313a46262a28221913171b1a1e211f1e1a10162d3529 +2f1b37160a0500010c161c1109060403210018140f0020150b0a25495b61 +5449302227271e1f252b2523292722252e1d272c1f252d1c1829181c312b +241f1b28201f1f1c111c16171118170f171c171c11181b449bb9a59ea7b2 +adb2b880a67ea248352a3143353d474e3446535652cd58293f3925187075 +86797d7e7d7d7a777778746f6f736f717477797874707776757372717070 +73706f71767877757876767977727378777676767574716f767675767575 +72717169666b6f6c6a6a6a68686a6f7272727564607796a8b1b6b9aba8a5 +953d3b3e444642424542414040403e3b393e3e3f4042444546433e3a3b3f +43424043423f3d3e41474b474b4b4847494845464743414347433e3f3f3f +4144464745414243403b383b3e3f4243414244423d403c4148463b393e40 +403e393b40403a4343414243444343454748494643414042454745474a48 +43404348494948484948444042474b4b494e4e4f4f4f4e4d4b4b49454248 +4d4d4746433f3f3e40434343424241444546474d484644403c3e444c4342 +4a4b433f4245413f4247484644494947474645434243454748464648494d +4c48454949433839383b3d4040403d3c3e3f3c414d3d1625251b2827302a +3a4e576252534f394935535c4d3f34396f895a405c3d215964545f473f34 +4139541f13272e191426ba0e07b93c078d880f43b8121c1062ca4723310b +d74b0ac0940482e90443fe2918171c1e1b1e2f4657767a847e86774a5165 +3c5d764c2464644c441a2d282e012a12437c989a917b7c95b3b0afb4ac99 +91948d818d8e86a0848e888bab8b02091f1e2f2f2226272a2e2f1c272b35 +304023132b381e29313b1f28292317121418171d2122212019213b43383e +284320120d07091721281d1712100f2b09211e1605271c13122e51646a5e +543a2a2e2b221f21241c151a161116261a242c212933242336262c413b36 +2d222c2423232015201a1b151c1b131b201a1c121a204aa4c2afa8b3bfba +bfc58eb58cb15a473c4254444852563d4d5b5d5ad66030463b1e0856535a +474646444646464647433e3e423e4043464847433f45444341403f3e3e41 +3e3d3f4446454346444447454041464544444443423f3d45464647474745 +44453d373b3f3c3a3e4646403b3734312f3931395d8baabcc6c6b4b3ae9d +99999ca1a29e9c9d9b9d9f9f9d9a9999a19f9fa1a5a6a3a09e9b999ca0a2 +a19ea2a3a19f9da0a4aaa9acaaa7a5a7a5a1a4a3a1a0a5aaa69f9e9fa2a5 +a8aaacaca9aaaba8a3a2a5a8aba9abaeaea9a6a7aba8abafaca1a0a4a9a6 +a2a1a7aba79ea7a6a7a8a9abadaeadb0b3b3b1aeababafb1b1b0b1b4b1ac +aaadb0b1b0afb0b0b1aeabadb2b6b5b4b4b4b4b5b5b5b4b4b7b4b0aeb2b6 +b5aeacabaaa9acafb2b3b3b1b2b3b3b3b5b5b7b2afaeacaaadb4b8b1b0b5 +b5aeacafaeafafafb0b2b2b1bcb8b3b2b2b3b1afb0b3b5b7b7b6b6b9b7b8 +b5b2b2b1a79c9d9c99999b9b9a9896999d9b9c9b773b3624051713212310 +2617282a291d0e362e1d222b221f43e7f0841b180d166b8f6e843d000d22 +0f0a050503021a010bf0140089550045760026af0727264282321c2900d0 +3f01928c002d88001d93030b0e121007030f202f41593e3b4b6a77323e60 +748175303e7f67972628253042a5d2f6fff2cfb29363463433394143577b +967135195c3a183a152e3d3570200816273e3d21182f2a1e2a232e201d29 +35160821301b190f1416050500000003090a0e191f1e1705000c23180b0d +3c4fbb0e972b780c7e0b620b5c18491432192a2231102215001433593d42 +2e120f100c07090c07070e0f0a0f0b01090a000a1100110c0c0c0000180d +1e001b04000c000c00150a090806160605180e0a001f83abb0aab2a7a69c +b490aa8fb6ab4f1e1c05181700121a0c423b1c3a31111d230e1e679ba2a6 +a9adaaaaa8a6a7a8a6a2a2a69fa0a2a6a9a9a6a3a2a3a3a3a2a09f9d9f9d +9da0a4a6a4a1a5a2a2a2a19ea1a6a0a3a6a8a6a39e9ba0a1a1a1a4a4a6a6 +a8a19c9da1a0a0a09c9c9da0a3a4a19f8e978e777490afb9c3b2a7a6a368 +686b70716d6b6c6a6c6e6e6c696868716f6f71757673706e6b696c707271 +6e6d6e6e6c6a6d747a797c7b787678767274737170757a766f6f70737679 +7b7d7d7b7c7d7a7574777a7d7b7d80807b78797d7a7d817e736f7376736f +6e7276726a7374757677797c7d7c7f8282807d7a7a818383828386837e7c +7f8182818081817e7b7a7c81858786868687888888878789868280838783 +7c79787776787b7e81838485868585858585807c7b78767980857e7d8282 +7b797c7b7c7c7c7d7f7f7e88847f7e7f807f7d808387898a898989858481 +7e7f7e74696b6a69696a6a6969696c6c68686f562a35301a3028332c1525 +16292e2e2518423a2b2e372c2748f2ff9e332b1b22749d809f63174c6c62 +543428221f34161fff230a96620352830435c11b3c405e9e4e363e0dda43 +008c870035930533ad1c2121201a0f0d1b2f3b455d4543587b8d4d5b8197 +a59a5765a07ba63331292f3b9ac4ecfffde8dac7b9d4dfdddedbc8bbc0bc +8644328f8781b9a4c1c7aecd5f2317172b311d1e3a37272f242f211e2a37 +1b0e2c4130332d3435221f1a14161d2220242d2e2c220e0512291e111140 +52bb0e982c780c7e0b620b5e1b49123116271f2e0f2118031b3c62474c3a +201f252321242b26262e2c282c271c232418232a1529242323090e2f2331 +122d160a1e111e11271c1b1a1828181426191506268aafb4acb4a7a59bb3 +90a88baea0441313031a20021b210f413c23453e202c2e131a58827f7c7b +7e7b7b79767778767272766f70727679797673747575757472716f716f6f +727678767377747474737073787275787a7875706d747575757575757574 +6d67686b6a6a6b6564676b7074747467736d58587898a9c0b2a6a19c3d3d +4045464240413f414343413e3d3d4341414347484542403d3b3e42444340 +4142413f3d40464c4b4e4d4a484a4844444341404449453e3b3c3f424345 +47454040413e39383b3e413f4144443f3c3d413e42464338373b3f3c3a39 +3e42403841414041424444454447484846433f3f43454746474a48434144 +494a4948494945424042474b4c4b4b4b4c4d4d4d4c4c4d4846454b4f4e47 +4443403f3f41444443434445474747474a4543423f3d40474c4544494942 +404342434343444646454f4b4645464744424245494b494848494a4a4744 +48473f343a393b3b3f3f403f3f42413d404a37102324152d2935311b2b1c +2e31312719403a2b2e372e2a4cf4ff9f3731262e83aa8ca86614445f5043 +2a221d1b311720ff26109c6809588b0938c11c3d415f9f4f373f0ddc4602 +908b0538970531aa191e1f201b110c192c3b4e684f4e618598586990abbd +b57486bf96b93c3018100f6285a5bcae9584726ea2b5aca69d877d878b5d +23147067608c667d8978a1401211182f331e1c363022291f2a1c19253417 +0a263b292a23292f20201b13151a1f1e222c312f28171120372c1f1d4b5b +c3169d31801488156e176a24531d391f30283717291f0c234367484d3a20 +1e201d181b1c1614191610181b17202319272f1c33303131171c3d2e3816 +311a0e221522152b201f1e1c2c1c17291d190b2c92b8bfb8c0b3b3a9c19c +b599bdb15524241127290b22271447412949462733300f0e4163554c4748 +434545454647454141453e3f4145484845424243434342403f3d3f3d3d40 +4446444145424242413e41464043464846433e3c454848484b4b4c4c4c45 +3d3c3f3c3c414749433f3934302f2439403b4a76a2b6c9baaea8a49a9ca0 +a3a3a09d9c989ca0a09d9b9d9f9f9d9ca0a6a6a19b9b9b9b9ea2a3a29fa2 +a3a3a09ea0a4aaa8abaaa6a5a7a5a1a3a2a0a1a7aca89f9fa1a5a8a9abac +adaaaaa9a6a3a3a6aaaba7a8afaca3a1a6aaa9acaea9a1a2a6a8a7a5a6aa +aba8a3a7a6a6a7a9acaeafadb0b3b3b0adabaab0b2b2b0b2b4b1acabadb0 +b2b1b0b0b1afaeacafb3b7b6b6b3b3b3b4b5b5b5b5b7b3aeadb0b2b0aaae +adadadb0b2b5b6b2b2b4b6b6b5b6b5b2aeacacacabb1b8b5b0b0b4b4b0af +b2adb2b4b2b0b1b3b4bcb6b0afb2b4b2afaeb3b6b8b8b6b5b7b4b5b3b2b2 +b1a79b9e9c98989a9b9b9995979c9a989770332f22090b0f210e0d040c04 +0000060f0005001100000700180d000017111446523180a70000040b1a00 +140400150026f01d16ed8800f4f40551f02b1c06255137002121e36b2673 +622066ea0b12e63007090d0c091129475c4e54627dceb73d330d2e4d6158 +141e6c5f7505343276c9e1fffff1d4aa86705c4741454b5d749fd2e8e550 +26620b212929253b346569001f2c24303538242028262c38403a241d090e +0e1516271c000002010000050f1414181d1d20261e1a266b5a5f7a6224a5 +00da00eb18dd09f81cf008d237d642c935bb599880000029122a32251311 +130f0e030805040805071408100f03020d100914260d09180c0200093415 +22340a12040008000e0900110010000919120a3eb1a8a4a2a5afabc1b4c7 +beaab4b72f48250f3532003318331922130d1105511b1e4e9e9da9a7aba6 +a5a6a4a5a8a6a3a4a8a1a1a2a5a7a8a5a3a2a3a6a7a7a5a2a09f9d9da0a4 +a6a3a0a0a1a2a2a09fa0a29fa2a6a7a5a19e9ba0a1a2a1a3a3a5a7a6a29d +9ea0a2a2a29b9b9c9d9fa0a19fa58b87916d405c9fafb5b0a59f696b6f72 +726f6c6b676b6f6f6c6a6c6e6f6d6c707676716b6b6b6b6e7273726f6d6e +706d6b6d747a787b7b777678767273727071777c786f707276797a7c7d7e +7c7c7b787575787c7d797a817e7573787c7b7e807b737175757472737576 +736f73747475777a7d7e7c7f82827f7c7a79828484828486837e7d7f8183 +828181827c7b7b7e8286888885858687888888898985807f82837e787b7a +7a7a7c7e81848285878988878685807c797978777d84827d7d81817d7c7f +7a7f817f7d7e808188827c7b7f81807d7e83888a8b89888782817f7e7f7e +74686c6a6868696a6a6a686b6c67676b51233030202527341914070f0905 +06141e0417052004041202262714112c232658684ea5d72a424e5c612537 +24162f1639ff2c25fc9704ffff1463ff403422436f55183933ef6f246d5d +216df92030ff50261f1d160e1632516451546484d8c8514b2b4e71867e39 +438b6f7f0e3c3676c3d8fcfefbeed9c8c2c9dde6ded4cec6cde2dfd14127 +80477997a0a6c0b1cfb6262b2011212c3a2a262d272b343f39251d0b1419 +24293e371b151c1a17171f292e2d31332f2f3127212a71616580682ba905 +df01ee18dd09f81ff30bd237d641c834ba5998830108321b343e34232427 +28282027242328252734272f2e21202b2d25303f262231261c171c462734 +461c2416101a10201b11230d1e0514241d1347b8afa8a6a7b1aac0b6cec5 +acb3b42c4a2d2049490f4523381e2a1e1a20165f241e43897b80797c7776 +777475787673747871717275777875737475787979777472716f6f727678 +75727273747472717274717478797773706d7475767474737476726e6969 +6b6c6c6d666666686c6f71717b6364725126458eaab4ada0983e40444747 +4441403c404444413f4143413f3e424848433d3d3d3d4044454441414243 +403e40464c4a4d4d49484a484443424041464b473e3c3e42454446474641 +403f3c39393c40413d3e454239373c403f43454038393d3e3d3d3e414241 +3d41413f40424545464447484845423f3e44464846484a48434244494b4a +49494a43424144484c4d4d4a4a4b4c4d4d4d4c4d474443474b4943464543 +4142444547424446484a494847454140403f3e444b494444484844434641 +464846444547484f4943424648454240454a4c4a4847474747454448473f +333b393a3a3e3f41403e3e3e3c3e4632091e231a2429381f1a0e160f0b0a +1721071907230707160729281515312d30647356abd72439414b531d3121 +142e163dff312cff9e0bffff1b65ff413423436f55193935ef70256f6126 +73fe212eff4d211d1c1711193150665860708ee1d05a55365b8199955460 +aa9098152f113a757d999a9b9589808090b0bcaf9e90868da4a89f16005a +21536a666681779f9210212015262f392622272226313b35201b0812151f +23383014101d1e1b181e282b2a2e313132372e2b368171738c7433b20be3 +06f520e713ff28fc14dc41de49d03cc261a08a090f3920333a3122222625 +251c221e1b1d181a27212a291f202d312934442b2735271d19204a2b384a +20281a141e14241f1527112108182821184ec0b9b3b1b3beb8cec3d8cfb9 +c1c53d593a2a504f1449273c222c2020271d6221122f6a55524746414043 +43444745424347404041444647444242434647474542403f3d3d40444643 +4040414242403f40423f42464745413e3c4548494a4a4b4c4e4b46413f3f +3e3e434647423c373431333f303c5643254d98b1bab4a69f9ca0a3a5a5a4 +a09d9b9ea2a19d9b9b9d9d9b9ca1a6a7a19b9a9b9da0a3a3a2a0a2a3a2a1 +a0a2a5a9a5a9a8a5a5a7a6a2a1a2a1a2a7aca8a1a2a5a9ababaaabadaba9 +a7a4a3a4a8abaca8a9aeaaa1a0a8a9aaadada8a3a6aaa5a7aaaaa8a5a6a8 +a9a7a7a7a9acafb1afb1b3b2afadababb1b3b3b1b2b4b1acacaeb1b2b2b1 +b1b2adadadb0b3b7b6b7b3b3b3b4b5b5b5b5b9b3aeaeb0aeaaa6adadadae +b1b4b6b6b3b2b5b7b8b6b6b5b4afacabaaa9afb6b0afb1b4b4b2b2b5afb6 +b9b4b1b3b6b6b8b2adadb1b5b4b1adb1b5b8b8b6b4b5b6b7b6b5b6b6aca1 +9e9c98989a9b9b9993969c9a98976e303a2114040d13006a7a79417f8934 +4d5f563972665046725e02050c130504171008141d000024060d000b0f0f +0007678f736b34100964320e183700492b309888071c03501e6087656799 +900614720013090f0e0d162e495abbeff9f3962920140b21796d6e000c54 +5b94114c9feffffffff6dfb9865c4a474a4d4e5d8cbbe1faffffff943500 +00002c2e3d3d4a790f00282a3c313527411f22402f242e2f23211c25270b +03140300000000000713161615120e245782a4bef8f7d8643b2940003d10 +3b002b002e001d00480020091819200b220b0009000f0507000001000000 +000000000000000f0600151400081d01061807010500050a0d19120b1814 +02100c18000c2f0b001e101117160d001059b2ba999da8c1c7bc72a67595 +b4a6499b8155603da2601844f02086462b863604369099a7a6aca9a7a5a3 +a4a7a5a2a3a7a4a3a3a4a6a6a4a2a0a2a5a8a8a6a4a2a09e9d9fa4a6a4a1 +9da1a4a5a3a19f9d9fa2a4a4a19e9e9ea2a4a5a4a2a0a1a39e9e9d9ea0a3 +a3a29f9c9c9a999b9d9d9b9a8a6b57514a3c77a1b8ac9d6b6f727474736f +6c6a6d71706c6a6a6c6d6b6c717677716b6a6b6d70737372706d6e6f6e6d +6f7579757979767678777371727172777c797273767a7c7c7b7c7e7d7b79 +7675767a7d7e7a7b807c73727a7b7c7f7f7a757579727477777370717475 +757575777a7e807e8082817e7c7a7a838585838486837e7e808283838282 +837a7a7c7f8286888985858687888888898b858080827f78747a7a7a7b7d +8082848385888a8a888685827d797876757b827d7c7e81817f7f827c8386 +817e808383847e79797e82827f7d81878a8b898785848382818383796e6c +6a6868696a6a6a676a6c67676b4f203b2f2b1e2526097383834b8c974560 +736a4d8579615480711e23282c1c1d322e2f44552a436e534f212b2d2b12 +1f7aa08278411d16713e1d2c4d0f63494fb7a72334155c22608360669d9f +20369b1936231f160e152d4a5bb9edfbf79f38332b243e958a8e0d286c66 +9b1751a3effffffffff8e7cebec0cedbdbc7bbc8d8dee4e4ecf5944e1640 +527e8caeb7bfda4b19281e2f283329411e213c2e232d2f2525252f361e19 +2f1e1b1516161a243033302e282033628babc4ffffe06c43324701451540 +002e01310020014b0023091819200e250f0512021a10120e0c14120e1413 +1b1a15130e172d2821383618283d1f25352520211b2225212a231c292513 +211d29081d401c10301e1f25241a071a62bbc19fa1acc3c9c283bb839fbb +af57af9e78835fbe75264ef92a94553c9541062e7c78807a7c7775757374 +777572737774737374767674727274777a7a78767472706f71767876736f +7376777573716f717476767370707074767675737171736d6d6c6b6d6f6f +6d6b6a686766686a6e7074684e3f3d3a31729fb6a7974044474949484441 +3f424645413f3f413f3d3e434849433d3c3d3f4245454442414242414042 +474b474b4b48484a494541424041464b453e3f42444646454646423f3d3a +393a3e41423e3f444037363e3f4044443f3a3d413b3d42423f3c3f424342 +4040424546484648484744423f3f45474947484a484343454a4b4b4a4a4b +41414245484c4d4e4a4a4b4c4d4d4d4c4f4744444747433f454543424346 +4647434447494c4a48474742403f3d3c42494443454848464649434a4d48 +45474a4a4b454040454947443f43494c4a484645494948474c4c44393b39 +3a3a3e3f41403a3d3e3c3e4630062922251d272a0f7a8c8d5595a04d677a +71548c80695d89771f232b3024243b3634465222396143431c282d2c1321 +80a789814a261f7a4a242d4b0f624951b9a92434175c236084646ea6a621 +35951632221f19121a324e60c4faffffa83f39312b46a0989d1f3d8482ad +133166979e8a8488908f8c8b9daebab39a878c96979b9ba7b35817001324 +4e58767e8bb1310d2822362d3628411c1f392c212b2d2424242e331a162a +1917191a1a1b222e2f2d2a2520366892b5d0ffffed774e394f0748194607 +370a3a09290752072c1322232a172e180b17071e121411111b1b1a21242b +2c27231e2738291d343517273c1d20301b1112070c1620312a23302c1a28 +24300f244723173421222827200d236bc4cbabadb8d0d6ce8ac08cabcbbe +64baa67e8560bf76274ff82b975a43983d001b6155554b4b444244424346 +4441424643424243454543414042454848464442403e3d3f444644413d41 +444543413f3d3f424444413e3e3e434548494947494b4544434040404041 +4445403c37393b4246504d3c353c3d3778a4bbab9b9ea2a5a5a5a6a39fa1 +a2a2a19d9997969f9fa0a4a8a8a4a09c9d9fa1a2a2a2a1a4a3a1a0a2a5a5 +a7a5a8a8a5a5a7a6a29fa3a5a4a7aaa7a2a1a6abadaba9aaacaba9a5a2a2 +a5aaadaeadadada8a4a6aba8acaeaca6a3a7aca5a7aaaaa5a0a4aaabaaa9 +a8aaadb0b2b3b4b4b1aeacadaeb2b4b3b1b2b4b1abacafb2b3b2b2b2b3ad +aeafb1b4b6b6b7b4b4b4b5b5b5b4b4bbb4afb1b2aeaaa6ababacadb0b3b5 +b5b3b3b5b7b7b6b7b5b9b3aeaaa8a5aab1acafb3b6b5b4b3b4b1b9bbb5b2 +b6b8b5b3b0aeaeb1b4b4b2adb1b5b8b7b5b4b6b6b7b5b4b4b4aba19d9c99 +999b9b9a9894989f9d9b976e303f1310070e080cdb5e898aa53828b86035 +7b8d4e0f24c01d1a04000d1a1d130000000000000f1d200a08042c1e0e5f +4c405733257389677c411a16110025aa550e15040f026467525a9b1b0200 +0008000d1616100e141c20305b4d000017143e1539adeee9743744defc8d +bffcf4f0fff8ddad7a5b554c43364f6582b6def2f9f7fce5e1b950532126 +422f30365457001021090b150128162a010e120016041604000a1d111800 +04000306070d1416131d11051647738c9c957a6d656236331f821a7d2376 +32a53ab9499b356436712f602f4f3e04141b000e0c060810090004000000 +000000041d15002238000e3700032e08002112032015000117001429170a +2414001b26141623082057141473385db6bcaf94a8b3bea4b1c5a7bbc06c +6e896a348cd1551443c3a043a848a01019237395a3a8afaeaba7a5a5a7a5 +a0a1a5a6a5a3a3a4a5a3a29d9fa2a5a6a5a3a2a29f9d9fa3a6a6a49da3a8 +a7a5a39f9b9ea0a2a09d9b9da09ea2a6a5a19f9fa0999d9d9c9fa2a4a09a +9b9e9e9fa0a5a68f7561636456453a4376aab4a56d7174747475726e7071 +71706c6866656f6f7074787874706c6d6f71727272716f6e6e6d6f727577 +75787976767877736f737574777a787372777c7e7c7a7b7d7d7b77747477 +7c7f807f7f7f7a76787d7a7e807e7875767b72747777706b6f7677787776 +787b7f81828383807d7b7c7d848685838486837d7e818384838383847a7b +7e808385888986868788888887888d868183848079747878797a7c7f8183 +8386888a8988878587817b777471767d797c8083828180817e8688827f83 +85827f7c7a7a7e8182807d81878a8a888786848381808181786e6b6a6969 +6a6a6969686c6f6a6a6d4f2040232923271d1be86c999ab74c3ed0784c93 +a3642338d43438241b29353a34251e2d19444657655e332620453623705a +4d613b2f7d93718a5533302e1f47cc772c2f181d0864634d549d291b251a +352129251b0d070d151a2c594c00022423522a51c5ffff8b4b55e8ff94c4 +fff4edfffaeed2babed6e6e5cdd3cbc7d4ded9d6d4e2d7e2c96b77494f7e +8ca2b2c5a6261e1f02041300221026000c120017081b0e041a3129321920 +181c1f2329313330382a1926557c93a29c8376716c413e288c2284287a35 +a83dbe4e9e3867397432633353450d1f260518181317201d161c0e151616 +16131e39350b4359152c5515204a23163b2d1f3a2904122804253a281b35 +25112c37252732162e652121804267bfc4b59aacb5c6b5c4d3b1c1c77981 +a78d5aaeea671d48ccaa51ba5bb21c1c1a5f777e7c7f7c79777575777570 +717576757373747573726f7174777877757474716f71757878766f757a79 +7775716d707274726f6d6f727074787672707071696c6c6c6c70706e6a6b +6b6b6b6e72776550434a524b3c363f74a5ae9c42464949494a4743454646 +45413d3b3a414142464a4a46423e3f414344444443434241404245474947 +4a4b48484a49453f4344434649443f3e43464846444545423f3b38383b40 +43444343433e3a3c413e4245433d3a3e433b3d42423c373d444545424143 +4647494a4b49464341414246484947484a484243464b4c4b4b4b4c414244 +46494b4d4e4b4b4c4d4d4d4c4b4f4845474945413f434140414245454643 +4547494b4a49474c46423e3b383d444043474a49484748454d4f49464a4c +4946434141454847453f43494c49474646494947464a4a43393a393b3b3f +3f403f3b3f413f414730062e1825242b2222f077a6a7c3574bdc845a9fb0 +6f2e43df3c3a231d2c3c403b2a202c143a3c4b57532f2621493a28776356 +6b483b899f7d9356302f2c2148cd782e30191d0864625160a9321f241530 +1e2a2821140f141c243a675a0b092a26532d53c9ffff93565deaf8758eb0 +9078887f7c726c85adcacdacab9c909494857c76857f9488344b242d585d +6f7e9989161e240a0c1804261427000d1202190b1e10051a30293117211d +2123242a2f2f2c3326182658839daeac94857d7647442d8e258a2e833eb1 +46c454a53f70427d3b6c3c5c4d12232a0b2124232a373836423742454649 +4551685b2a627832486f2b32562a17382613312a0b192f0b2c412f223c2c +18333e2c2e371931682727884b70c8cfc1a6b8c2d1bdcbdebdd1d7898fb1 +935db0ee6b224bc9a952bc5fb41a13094655544f4f4b4646444446443f40 +4445444242434442413d3f424546454342423f3d3f434646443d43484745 +433f3b3e4042403d3b3d403c404748464646474143413e3d3f403d393b3e +40444b555d4f4038434e493d374077a9b2a19ea3a5a2a3a6a5a1a09f9e9e +9e9c9895a2a3a5a7a7a6a4a29e9fa1a1a1a1a2a2a6a29ea0a4a8a6a4a8ab +aaa7a5a7a5a19da4a8a7a6a7a6a49da3aaacaaa8aaacaca8a3a0a2a6abae +acb0afa8a3a5aaaca9adafaaa2a0a5a9aba9a9aaa6a1a4aaafacabaaabad +b1b3b7b6b4b0adacaeb1b2b4b4b2b2b4b1abadb0b3b4b3b2b3b3afb0b2b4 +b6b7b7b8b5b5b5b5b5b4b3b3b9b0adb1b4afaba9ababacaeb1b4b5b5b4b3 +b4b6b6b5b7b6b8b2aca9a7a5aab1acb2b7b8b6b3b1b0b2babab3b2b8b9b3 +b2b2b2b2b2b2b2b2afb3b6b8b8b6b6b8b9b9b4b1b0afa79c9c9b999b9c9c +9a969599a09e9b956b2c360f0b0c0e0c1ac648bb837641002e449184563c +040eaa0b00011a1e140a0100000f112026040f00060b08313c0b35321c86 +2c07534c5f51551519211c0a3116322a1810104a4d5e3a494f2f2a0c0900 +07131a1b1c212626322e24260e011a121733a3d01a00184dc18ba5fffff8 +fff1f0ca9b78634e2b193a47516fa6cce5f5f0f2f8ebde812a34484c2344 +452e732aea1e53ff5339ef9809bcc60773f02433e947041a17210004060f +12121212100d010206235b8492988d9b8b81460b480f38141b2e27222003 +1200121b161d28262d1c2a260a0f1e12050e0800040500000608080c140e +16292a052a3e15233e130a600800815a002a692429cc0e1fdb0101895100 +63630040850e289329016c280064a1b6b5a3a8beb3ada7ba93c8b4892672 +50887e3336143e51376f389b3c1b1a5396a0aab0b0acaaa8a8a9a5a0a0a4 +a6a4a2a2a4a5a5a49d9fa2a4a6a6a5a4a5a19e9ea3a7a8a7a1a8aba7a4a4 +a19c9a9ea19f9b999b9e989ea4a5a09c9c9e999e9d97989da2a09a9da1a1 +9c9996956b6e6658565c5342395086aba76d727471727574706f6e6d6d6d +6b676472737577777674726e6f717171717272716d6b6d71757674787b7b +78767876726d747877767777756e747b7d7b797b7e7e7a757274787d807e +82817a75777c7e7b7f817c7472747878767677716c6f767b7a7978797b80 +828685837f7c7b7d80848686848486837d7f828485848384847c7e818385 +86898a87878989898887878b827f8386817a787878797b7d808183848687 +8988878786868079767371767d797f848583807e7d7f8787807f8586807e +7e7e7e7f7f80807f83888a8b8989888785807d7d7c74696a69696b6b6b69 +67696d706b6a6b4c1c371f2428272129d45bd0988d5806495fac9f71581e +28c4271723393d332b282d254d57686e4c563b2d2421484f1c423c248e32 +0d5953665d682e363f3e2e543850442c1e164c4c5832475948503a372423 +221d141014191a2b2b232a150c28222743b3e026072258c995affffff5ff +edf3e0cacaddeee9d9dfccb3acbac6cfdee1edfff5e580212a47666baec5 +abd46aff2753fd5033e38e04bbc50874f3293af456152f303d192121282e +2e2e302f2a1c1b1a35698d99a196a7978f5318551a431e25362c27230617 +0117201a212c2a3123312f131a291f1017130c121713131c1f1e2429252b +40421e42562c3b54281e731b0e946e0e3e7b353add1f30ec12129a620674 +740851941d37a238107b35036eabbebba9abc2bbb3a6b68ac0b290378868 +9c8b362e0d425c47814bad48201341797a7e807e7a7a7878797570707476 +747272747575746f717476787877767773707075797a79737a7d79767673 +6e6c7073716d6b6d706b717677747070726c6f6e68686e706f6c6f6f6e6a +656565414b4b454c5b5847384c80a59e42474946474a4945444342424240 +3c394445474949484644404143434343444445413e40444848464a4d4d4a +484a48443d434746454643413a40454743414343423c3734363a3f424044 +433c37393e403f43464139373c40413f41423d383d44494744434446484a +4e4d49454241424546484a48484a484244474c4d4c4b4c4c434346484a4b +4d4e4b4b4c4c4c4b4a4a4d4443474b464240414140424346454444454648 +4a4949484b45403d3a383d4440464b4c4a474544464e4e47464c4d474545 +45454646454541454a4c4a4848484c4b464346453f3439383b3d4040403d +3c40424041452d02251420292b2630dd69e1a99d68175a70bfb082662d37 +d3321a223b3f38302d30254a4f5d634048312c28254e56244b48319b421d +696376696c2b343d3f2e563952452d1e164b4a5c3f55654d513734202425 +241c1a1e23263b3c33361d1029212440b0df2607234aa0586abaa896a58a +988d828caac0c3b2b59d8070726e6a6e6a778f949848000f324d4680947f +b559ff2c5dff593ded970ac0ca0c79f82f40fa5b1c3435411d25282d312f +2f2e2a26171719356c92a1aaa5b7a59a5c1e5b1e45202739322d2c0f1d07 +1d26232a35333a2b3936181e2d28243433313f494e54656d737c848288a0 +a682a4b68a95aa7967b55540be912d56873c41e42637f31919a1690d7b7b +0f5899223ca73d15823d0b77b5c9c7b5bacec6bfb6c79fd7c8a3479572a3 +933f3914415846834faf46190329595351504d4949474748443f3f434543 +4141434444433d3f42444646454445413e3e4347484741484b474444413c +3a3e413f3b393b3c34384245434143454243423a373a3d3730333a43494f +5761424f50494d595443364d82a7a19ca1a29fa1a6a6a19b99999c9fa09d +9aa4a6a7a7a4a2a1a1a0a1a2a1a1a0a1a3a7a19c9fa6aaa6a2acafada8a6 +a7a5a09ca5aba9a5a5a5a4989fa7aaa8a7aaadaca8a2a0a1a6abaea8b0ae +a29da4ababaaafb1a8a19fa2a6b3aca8aaaba7a7abb0aeacababaeb1b3ba +b8b4b0acadb0b3b3b5b4b2b2b4b1abadb0b3b4b3b3b3b4afb2b5b6b7b8b8 +b9b6b6b5b5b4b3b2b2b4aca9b0b4afacabadadafb1b3b5b8b8b4b3b4b4b5 +b5b7b6b2ada9a8a7a8aeb7aeb4babab6b2aeacb2b9b9b1b1b9b9b1b3b5b7 +b6b3b1b1b2b1b5b7b9b8b7b7bac1beb8b3b2afa79c9b9b9a9c9d9e9b9697 +989f9a97906525331e110d0a0f0c53052f318c803775775657818834246a +00101a1f0700010000131619141d0d00000a071a0b00238576697732183a +61455143150a2100050004000f0807224b3c2330516c1e4c1300110c1416 +13141a201f14151c11090d0c0e2210132b2e3b17289cd7f7f2fff7f1f7b4 +907d7e673a2031481800003777a4c7d9e0dde6fff38e2627573d3723395f +09870000b50000a1550348a5001dc50000900e0015092002000811171510 +0c080400030824557a868b88848369560c16100f181b1e2a11276846574f +1c2c2f37353533181f34271d1e1527220d111d1e191b1813171d120d1819 +1909091e1a0f1b171a1a16000b373d2f56001100000210291c5647272c05 +0015000315062148283d42416ec1ada4adb9c2c0aac0beb0d0400000001a +31363b3300070961494a211b41989ca8aeaea9b0abababa7a1a0a3a3a19f +a0a3a3a6a49d9fa1a4a6a6a6a8a8a39e9ea3a8aaaaa7adada7a3a5a39f98 +9da2a19d999b9d949ca6a6a39f9fa09fa19d95939aa1a0a2a4a297897769 +61825b546d6b43374e4c3c649ea36d727370707575706a68686b6e6f6c69 +74767777747271717071727171707173746e696c737776727c7f7e7a7879 +77726c757b79757676756970787b79787b7f7e7a747273787d807a828074 +6f767d7d7c81807a706e717580797577767272787e7c7a7a797d80828987 +837f7b7c7f82858786848486837d7f828586848584867e81848586878a8b +8888898988878686877f7b8286817b7a7a7a7c7e81838586848687878787 +8785807a7675727379827b818787837f7b797f86867e7e86867e7f818382 +807e7f808185898b8a8a898a8f8c86807f7d756a68686a6c6c6b6865686c +6f6967684817342b282a24271e651b4748a39a518f9372739fa652428816 +37434830242e2c2a50555a565a461b29271c2d1e0f3493827580391f4166 +4a5a562f2741192717261a2b2019305542272e537937703d273828261d13 +0f13191c171c241a1319181a2c1a1c302f391428a1dffcf4fdf3f0fec9bc +c5e5f0dfdee8d68533234a7498b9d1dfe2e9fce4750a14627899a3bdcf58 +aa0401bc03009d51034ba90021cc01039d1f092d223c201f262f35332e2a +27211a1c1c3362838d9495929379681e27211e26272832162a6d4f625924 +31343a3837371f283f362e31273c36222533342e322e282b3125202c2c2e +1e1e322e23302d31302d182351584c730b25090c0a1831266255383f190e +27081224112c513144484875cab6aeb5bdc1bca1b4b4abd149020e081d2e +2930340812187358542414317e797f807c777e7b7b7b7771707375737172 +75777778717375787a7b7b7a7a75707074797b7b777d7d777375736f686d +72716d696b6e656d74777370707170726e64636a6e6d727471685a4b413c +6443426366453d534a365e959b41464744454a4a453f3d3d404344413e46 +48494946444343424344434342434547413c3f464a48444e515049474846 +413b444a4844424241353a424541404344423c3834373a41423e44443633 +3841414146463f3836393d49423e40423e3e43494745424445484a514f49 +454142444749494a48484a484244474a4b4c4a4c4b4346494a4b4c4e4f4c +4c4c4c4b4a4947463e3d464b464342434343454646464744454646494949 +4a45413d3e3c3d434c42484e4e4a464240464d4d45454d4d4546484a4947 +45444543474b4d4c494b4c52514b474848423739393c3e41403d3a3c3f41 +3e3f4428002421222825292069265356b1a75e9ea18081aab15d4c931c36 +3d442c222b2925494d524c523d1224251d3124163ea09085914c32547a5e +695c2e25401a2819281c2c20193054402a3960823c703b2535292a231b16 +1b2127262c3123151916182b19192c272d05065f89a0939c9296ae848195 +b8c6b4b0baae5e0a001331445662696e80a39f3f0003515870728eab42a4 +0809c60d0cab5f0d54b2092cd60b0ca5261031263f2221283135332c2822 +1d17191d36688a979d9e9da08674282f2821262527341a317354645b2737 +3a434143432f395149424f557573636c7f87899294959ca49b98a7acae9e +9dafa99ca39c99958b7279a59d7891253d1c1c17253e306e5e3f431a0f27 +0a1729173258384e545887d9c5b8c0c9cfcdb4caccc1e55a101911263733 +383607141b775b531d04185d53534f4b444b4a4a4a46403f434442404144 +484949404244474948484848433c3c40454747464c4c464244423e373c41 +403c383a3a2f353f434342444746484439353c3f3e4146494a464241436e +504e6b6a44394f4b385e9699a2a1a0a2a7a6a19da29e9c9d9d9b9ea0a6a4 +a4a5a6a5a2a09fa2a4a5a3a1a1a29d9b9da3a3a0a2a9ada9a6a7a9a8a29c +9fa9aeaaa7a8a7a39fa4aaadabaaabacaca59e9fa7aeafada7acaca7a7ad +b0adb0b2afa6a5abaeaba8acaba5a2a6a9aaaea8a7aaacacafb4b3b0b1b2 +afa8aab1b7b6b7b9b6afacadacaeb1b2b1b0b0b1adababaeb3b7b7b6b6b7 +b7b5b3b3b4b6afa9abb4b4aba9afaeafb1b4b6b7b9b8b9b6b0afb5bbbab3 +b6b1aba7a8adb4b9b4b4b3b4b5b5b4b2bcbbb9b8b7b8b9bab8b3b7b9b2b3 +b5afb3bcbcb5b5bdbfb9b8bab8b6b8b6aa9b9a9a9d9d9d9d9c9b97a19399 +a48764323b1f100e0b0e0f07080501000000000000000000000309110f03 +00000000142128151912020004316a504f15182398746bd048142e361e2b +62081c1b0b060c040a0b0a0a1f641713142e640007001904140e0d0f1402 +16110fd4dc1e000b181b12363b41482950b7ecfffffaffffebb682828272 +57453f46290400000e114186b2dfe6effaf7e627278e06362e39522ca20a +0ab711009362014a990004b70105840d00131623001d15140f0805060401 +020c032d5a789390837e77624223111017191b0d181812442932351a1d34 +384244301b17242c2513080d0e0201090c0609191411010f0c0f19070f10 +1110030b120d0b170b0411000012000809635a5617384b40385600040014 +383b3d331d3b5049422e45b4aeb2b0b5c4c0bdb6c9b6c5280918221d2f45 +542013108145913d232d70a39ba0b0a2a2a5a7a8a6a5a5a7a3a2a3a2a3a3 +a6a59c9ca0a2a5a4a19ea19d9d9fa3a4a8afa5a5a5a5a3a1a1a4a1a5a9ab +aaa7a5a39c9da4a8a8a4a3a6a5a09a979ba0a3a4a58a7d6771767c604c6e +656350344952433f4d8a99767574767877726e736f6b6c6c6a6b6f767575 +767776737170737576747272726d6b6d73737072797d7976777978726c6f +797f7b7879787470757b7e7c7b7c7d7e7770717980817f797e7e79797f82 +7f7f807c7572787b78757978726f7376777d79787c7d7e81868582838481 +7a7c838988898b88817e7f7e808384838282837f7d7d8085898988888989 +87858586887f797b83837a787e7d7e8083858787888c898382888d8a8283 +7e787473787f8481828182838382808a89878685868788847f8385808183 +7d828b8e87878f918b888a878586877a6b69696a6a6a6867686672626a77 +614923392923272527261c1d1a1613111213140e0f141c2127303b41392c +262b3d546468514e4129191e45795d5e252935ab877de05620353c223376 +243a392a252b2328292624377c2c2726407919251f39222e262121231125 +242af1f5320b182120153638393c193caaeafffff3f6fff8d6bdd4edf0e2 +dad9cc7e3d1c25251d417ea5cfd4deebe8d71c1b9b4195aabdcd85c00f19 +cc2a09a36e0d56a3050dc00a11921e102b30401e3e3839342b2525211b17 +1f123a6480999993928b7858392b282f2e2c1a221d13493c484828253737 +4041301e2132403c322e38362823292820202e272313201f202b1a222426 +281c28302f2f3d322d3b2e36461421116251490f35504c496b081e162b4a +4841331a364d46423351c5c5c5b9b7c6bfbcb5cab9c82e0d1d231b2a4055 +251a198a4d953d1c1e5986767783717073757676757778777778797a7c7c +7e7676787a7b7a7873736f6e707273777c717070706e6c6c6f6c70747675 +72706e67686c72726f6e70716c6565696e71716d554c3b4d596754426962 +624f34474e3d36448090494847494c4b464247434041413f404448474748 +4948454342454748464444443f3d3f45454242494d4946464847413b3e48 +4b474445443e3a3f454644434445433b35353e4446433e42433d3e434744 +474b473d3d4144413e424139383a3d3e454140414543464b4a474849463f +41474d4c4d4f4c4542434244474848464747433f3f42474b4b4a4a4b4b49 +4747484a3f393d4849404046454646494a4948484946403f474f4c474a47 +413f3f444d5048474647484847454f4e4c4b4a4b4c4d4a45494b45464842 +4750524b4b51554d4a4c4c4b5153493b3e3e3f3f3d3c3b3b3b463740503d +2c0c2a201f2322231e171e1d1b18161617181212161d22252f37362c1f18 +1c2e44535a45443924181f4474565b25303fba9893f9713a51563d487d25 +3a3b2c272d252a2b2725397c2d282a447c1a251e38202d2622232614282a +33f9f93105111e231e403f372e001773a0aaa18b8da29e8d87aed3d8c3b2 +a59a5d2a101d1f0f254f5f77707486898200018a216b788b9f65b8131cd1 +2f11b27c1962af111ccf191d9d26162d2d3b163531322d2520201f1a1a23 +1943708da7a2939392856d4e3a32312922101a19174c3a454628273c3f4d +54483d455f7270728397968b8790938f92a5a0a193a2a2a2a7939b9fa3a6 +9ba8b4b4b7c6bebbcbae989257593f846e63274a645a516c02150b254c50 +4c3d213d58575c5069d5cbc9c2c3d3cfccc7dccad73a182328202e445a2b +2220915094350c07395e49434c393b4042434544464a484a4b4d4e515253 +494747494b4844403f3b383a3a3b3d453f3e3e3e3c3a3a3d3a3e42444340 +3e3c35363d444443464a4c474342464b5056604f47384d5b6c584a706968 +54364a4f4139457e899f9e9fa2a4a4a3a0a29e9c9d9d9b9fa1a7a6a6a6a6 +a4a2a09ea0a3a3a2a2a3a49d9c9fa5a5a1a3a8a9a7a5a5a5a4a09da3a9aa +a6a4a7a7a3a3a6aaacacacacacada6a0a0a6acacaaa9acaba6a6acafadb0 +b1aca5a3a7a9a6aaadaca6a3a6a9a8ada8a8acadadafb3b3b0afb0ada9ac +b3b8b2b0b4b5b0aaa8abaeb0b1b0aeaeafababadb1b6b8b6b4b3b3b2b2b2 +b3b3b3b3aeafb5b1a8a7aeadaeb0b3b5b6b7b7b9b7b2b0b5babbb4b8b3ae +aaabb1b7bcb4b4b5b5b6b5b2b1bab9b7b6b6b6b7b7b9b4b8bab2b3b6b0b3 +bcbcb6b6bdbfbab9b8b4b0b1b1a79b98999c9c9d9d9e9c9e97a29e9b844f +32331b10100e1116101212111111121211120a050a0e0d0a07000000000d +171714150b0700061223549488973f00176c4e62ad2a006b845a8b6f0001 +0100071414040c1105003501190e16000e180c00111107320a00230d0d4c +cdb01e2b1214112c1f294a3357c3fafff8f8fffff3be8a8784886747564d +2000060d08050c1a2480b6dbeef3eeffa01db02a3129364336eb1229e935 +0ebb8f0180e70f4ced091cf146000322003d0509080603040c0f10181706 +195f7791848c8a81663b1a111a142e231015171924050013181c1b080308 +141a160a02070900000400000107080c08030c0c10060600000b0b040302 +02000a0600010206070012000e024654661e4e3400277920000e000f5178 +611c69511e2d3f050684b0bfc1c0aac5c3a7bdbdbe2b162a372c3b442214 +1c7c3da525142063999aa4b3a2a6a8a8a59f989490908e8e8e8f8f909198 +9797999c9e9f9fa29d9b9d9e9d9fa599a1aab1b1aca9a99ea1a3a4a39f9c +9a9a9ba0a7a8a7a5a8a1a3a4a59e907e716468827d7a6563515361474d52 +49564e51494d74917473737678787471736f6b6c6c6a6c70777777777775 +73716f717474737374756d6c6f7575717378797775757675716e73797b77 +7578787474777b7d7d7d7d7d7f787272787e7e7c7b7e7d78787e817e7d7d +797270747673777a7973707377777c7a7a7e7f7f8185858281827f7b7e85 +8a84828687827c7a7d808283828080817d7d7f83888a8886858584848485 +8585837e7f858077767d7c7d7f82848687878c8a8583888c8a8385807b77 +767c8187818283838483807f8887858484848585858084868081847e828b +8e88888f918c8b8a86818281796c67686969686868676b66716f6f603423 +31222026272a2d2726262525252626272b24242a33353335322f303b4d5a +5c57524134242225305d9d91a14d042a816478c13b05758a5e93861e1f1f +1e253232222a2f231e531f352830172830260f2b29214a240f3d25296ff0 +ce373c1d1a142c1c223f2243ace8fff8eff7fff5d7bfddf5fff4d1d8c57d +1f272f292222242373a1c1d5dee0f99a15bc628c9fbbc695ff153cff582f +d2a21392f71f59fa162cff59131d3f175f2932322e29272b2c282d281426 +677f978d9a9d947a51312c332c44361f201d1a2a15132326252109040b18 +24241e1c242c1f2a2f261f1f211e1e181019191d16140a0c1a1d17191c1f +1e2d2c292b2e33372e472b2e165056631a4b3400308730102716225e7f61 +19634b1a2c420e1698c3c8c8c4aec8c6aac0bfc02b1629372a3b45251721 +8141a7250e134f7f797e8976797b7b79736d6968696a6b6d6d7071727776 +7577787a7978787370706f6e7074666e767e7d7975766a6e6f716f6c6866 +65666a71747273757071757570625041323857596054594f54644a4e5144 +5045463e436b87474646494b4b484547434041413f414549494949494745 +4341434646454546473f3e4147474343484947444442413d3a4248474341 +44423e3e41434545454545443d37373d4343414043423d3d434646484b44 +3d3b3f3f3c4043403a373a3c3c423f3f434444464a4a4746474440434a4e +48464a4b46403e41444647464444453f3f41454a4c4a4847474646464747 +47433e4147463d3e45444545474948474749474240474e4f484e49464244 +4a525548474848494845444d4c4a4949494a4a4b464a4c45464943475052 +4c4c5355504d4c4a494c50483e3c3f3e3e3c3c3c3b403b4645483e190e24 +1a1d232324231d242524242425252528211f252c2d2b2b2621212c3c4849 +4543342d20232938629a8ca0500c38927990da572090a477a68e20212120 +273434242c312520552138292f172730250f2a29204a230f3c252c75f6ce +3334171a193627293b0e1e78a6b3a090919992837baed7f7e3b8b6975108 +1e3032302d230f465e6a717577944c00a83f606b849473ff1a40ff5c38e0 +b1219eff2e6aff263bff60181c3a0f511b2426231e20262828302f1d2f74 +8ca5969b9b98815e3f373a2e4130181a1b1c2a120e22272c2d1d202e4559 +61636774868b9da2988f8f908d8e878089898d8781726f7f8380868b9497 +adb1b5bdc3ccc7a8b18a835d8d89903f6a4e1039882d0923162666876b22 +6d57293e551f25a1cad1d2d0bad7d5bbd1cecd351e2e392b3d4a2c1e2785 +44a41d0000345c504f57454f5254524e4a4745484a4d4e51535555585552 +5456565451524b4646454244493b434e53554e4d4b424347464741403e3d +3e444b4f50525652565b5e584b393335446163695c615459694f53564a54 +4a4e4242647d9d9d9fa1a3a4a4a2a29e9c9e9d9b9fa2a9a8a8a7a5a3a1a0 +9fa0a2a2a1a2a4a79d9ea2a7a7a4a4a7a7a8a8a6a3a1a1a1a8a8a6a2a3a7 +a7a4a9a9a9abadaeadacaea8a2a2a7ababa9abaca9a5a6aaadacb0b0aca5 +a3a5a6a5acaeaca7a4a7a9a8aca8a9aeb0aeafb2b3b0aeadacabafb5b9b1 +adb1b5b1aaa6aeb0b3b3b1afafafa9abafb4b8b9b6b3b7b4b3b4b8bab8b6 +b2b0b2b5afa6a8b1abadb0b3b5b6b6b6b7b8b6b3b5b9bab6b3afaaa7a9ae +b4b9b5b6b7b7b6b3b0afb7b6b5b4b4b4b4b5b9b4b8bab2b3b6b0b2babbb6 +b6bdbfbcbcb8b1acacaca59c969798999c9c9d9ca18ba89b8f86423a331e +13120b0c120e0d0f1112131312100f10151e1e13080300000d1e2927190d +00000605140d012830282746155fbd75716f270a658362625332562f0c12 +12001c0c05030d400c1212251f1d19681e1912070e0a6f0a061d1e504f56 +0c212a191b5d252755b0f7fffff1f7fffac598848b824e3054511a000001 +0b13090012395e7fafd6edeffff53359180d293940542318074100002b11 +02153807142d0e006c00000f131d00120e0d0c090e1a1f221d180d173760 +8e8d8c84765c381d141810424a341a0d29412c1b292522373e3d38230c03 +070c0b0704040402030609091206050d1205000017110400000008000005 +01000c0e021719230f1006283342120b180f041817111e00084d56641b1b +000a2000080e0774a0c8bbc2bcabbdbba8d69f08131b2f443e2d14286444 +a6222b18488c9ea1aaa1978f867e7d828e96a09ea0a0a2a2a3a499958d84 +7e7875727c7c80878f939ca3a0a3a4a09c9ca2a79a9c9fa1a2a09e9c9e9b +9899958e8a8a7f74655f6576899499847e6a68525a5c614a264b66515554 +504e4e5f927272737577787573736f6b6d6c6a6c71797979787674727170 +717373727375786d6e727777747477777878767472727278787773747878 +757a7a7a7c7e7f7e7d807a7474797d7d7b7d7e7b77787c7f7d7d7c797270 +727372797b7974717477777b7a7b80828081848582807f7e7d81878b837f +8387837c7880828585838181817b7d81868a8b8885898685868a8c8a8882 +8082857e7577807a7c7f82848686868a8b8986878b8985807c777474797e +848284858584817e7d8584838282828283858084868081847e81898d8888 +8f918e8e8a837d7d7c756c6566676869696869705c796e6564282b312423 +272325292521212324252524242428323c413a312e293242566260524528 +2d2d242b1e0d30372f30522572d28985833919708a686c674e724b282e2e +143828211f295c282e2a3d34352e803331271f232284221b353769646817 +292f1c1c5d21204aa2e4fcfff7f3fff5cfbecaf5ffe1c2d6be6f3c27242f +382b1a25405a739cc1dbe2ffef265f48639bbcc4b8431f1f601710412418 +2b4b1a27402104800a182d334121383736322f32393c3b332a1c243f6894 +949792846d4c31292c2253584123142e4730212e2b28404a4a4a37231d24 +2d2d2823211f1c1a1818171c0e0d151b0e08071f190d0a040d1a0e18201f +1b2d3026383842373c38595e6327141808001315152d091c5f656f211e00 +0b23020d110876a6d1c1c8c2b1c3c1abdaa108121a2e443e2f162c6848a8 +21270e3776807e847a726e645e5d64707a858587898a8d8e8f807a706760 +5a55525a585b62686c727a767a7a777273787e7073757878777472726f6e +6f6b646161584d4039415265727563605357475359604a254861474a4945 +43425486454546484a4b494747434042413f41464b4b4b4a484644434243 +45454445474a3f4044494744444746474745403e3e3e4747433f4044423f +4444424446474645453f39393e4242404243403c3d414445484a443d3b3d +3c3b4244403b383b3c3c413f4045474546494a4745444342464c4f474347 +4b47403c44464949474545453d3f43484c4d4a474b4847484c4e4c4a4240 +4447443b3f48424445474948464647484845494d4e4a4945423f42474f52 +49494a4a494643424a494847474747484b464a4c45464943464e514c4c53 +5552504c4745474b453e3a3b3c3d3e3c3c3c45304d443f410f1825202328 +2321231f20232526272726252528303a3d352b27232b3a4d5957493c2128 +2c263126193b3f35395e3483e7a19d9b4f2e829a76766e52764f2c323218 +3c2c25232d602c312c3d35352f803431281f242285221c373e70696a192b +3321215f1e102c75aab6b89f98a59a79738bc5e1c5abbca14e1e161d2f3e +3420232e34395068797a989b00452234678693963e2723651d1a4e322336 +5928364f30128b121d2d2e3714292928252228313738312c212c4a73a09e +9d9584674326222a245a634a2c1a31452f2134393e5f747f8a807374808e +8f919797928b847e7770715f585d604f4848605a504f4c55665f6e7b7f80 +989e98acacb6a8a79bb5ada65c3d341a09191a1e421e276368752f2f0b10 +1c0007161d8fb4dacdd4d0bfd3d1bae6ad12181f33463e2e152d6947a51c +1e02255e645e605b5f5f58515259666f7c7e828386888b8a7b736a5f5850 +4a454e4a4b50575b62665e5e615b59575f6257575c5c5f5b5b5959565657 +554e4d4f473e302c33465969776a685b5f4f5a6068522b4f674f504f4b47 +424e7a9e9ea0a1a2a1a2a1a29e9c9e9e9ca0a2aaa9a9a7a4a2a1a1a2a2a2 +a1a0a0a3a69da0a5a9a8a6a6a6a7aaaca8a3a1a4a8aca9a5a4a7a9a7a3ae +aba9abaeb0aeabaca8a4a5aaaeaeacadaba8a5a6aaacacb0afaba8a6a7a8 +a8acaeaca7a6aaacaaaba8abb0b2afafb1b3b0acaaaaadb2b7b9b3b1b4b5 +b1adacb3b5b7b7b4b2b1b1abadb1b5b8b8b7b5b9b5b3b6bcbfbcb7aeafb3 +b4ada8adb7acaeb1b4b6b7b7b6b7b9b9b5b5b8bab7afaca9a7a9aeb3b7b5 +b7b9b8b5b2afadb6b5b5b4b4b4b4b4b8b2b7b9b1b2b5afb3b9bab7b7bcbf +bdbdb8b2aeaca9a29c959697999c9c9d9ca08f9f94898b473c372118170e +0e141312131315151414111c1f201a0b0000001f293432220d0000000a0b +091a0f1053585278480babc0465a6812005d9196b54e00111713070d1b04 +0c1a130e351319141318001288570912190a40c302111f0f246fae08222a +1a31b6413fb9fff8fff5f5fff8c89590a39f763f43612900000f11030000 +2137393c4d7eb3e0ebedfeb4393c08263a4254212c082e23132e5e5b5f72 +0b0e5a6547522c050125001f281415110e131b1f1d291904110017467872 +6e634a2c191d2b210f171b232e2d3d1d2a462b0b272e1303000306060100 +00100701061012100e1317283037303a4437372e352e201e0a060000000c +0d000718140c080609080b252d1e10240c1935231109231f3124100b1200 +2f231617463c64c7d7bbc9b3bcc1bbcb790d242a2a423616344778885342 +0f2879988d8e9199a3b7c8d2d1cfcbccced2d7dce1e2e6f6f1eae1dad3ce +cbb8afa69c8f817979767772665f626c736262636464615d5a6a67666c70 +6f6f71777e899091898077716a7c858f695e5f3e565873683b4858454b4f +58987373747576757372736f6b6d6d6b6d717a7a7a787573727273737372 +717174776d70757978767676777a7c78747275797c797675787a78747f7c +7a7c7f817f7c7e7a76777c80807e7f7d7a77787c7e7d7d7b787573747575 +797b797473777a797a7a7d828481818385827e7c7c7f84898b8583868783 +7f7e85878989868483837d7f83878a8a89878b8785888e918e897e7f8384 +7c777c867b7d8083858787868a8c8c88878a89867c79767474797d828285 +878683807d7b8483838282828282847e83857f80837d82888c89898e918f +8f8a847f7d79726c6465666869696a696f6070675f682d2f342a2a2c2626 +2a2724252524242323232f343a362b20212949566260503b2d25282d2822 +2e1f1c5c5e587f531abbd25a6e7a230d6a9a9dc063162a302c2026341d25 +332c274e2c3229282c0f269d6b1e262e1e55d717253220327cb811292e1f +35b7423bb2faeafbfafffffcd1b1c8faffffd4cfd37e252433352a1b2745 +524a3f4670a3d0dde4f4a239665693b9c6bb4839234f442f4270737a8a23 +25717c5e6a472223492349523d3b3732343b3a363f2b131e06204d7f7875 +6c5639282b382f1b22262f3a38471d2746301636432c2121232727211c1a +22150e1219181411151929323a36404a3a3930393327291616030b132224 +141c292a2c36414847424d482a101a000a2d281f1934303f2f19141b0936 +25140e41426ecfdfc3cfb9c2c4becd7b0d23292a41371736497a8a533e08 +1b6781726f747f8ea2b5bfc0bebbbfc0c6cbd1d6dadbe6dfd6cdc4bdb7b4 +9e94897f70625a595859544841444e554444454646433f3c4a47484e5251 +52545a626d777871665f5d5a6d788562595c3b53526c5e303b4b3a41444b +8c464647484948474647434042424042464c4c4c4a474544444545454443 +4346493f42474b4846464646494b47403e41454b4842414446423e494642 +4447494744433f3b3c4145454344423f3c3d414345484943403e3f3e3e42 +44403b3a3e3f3e403f4247494646484a4743414144494e4f49474a4b4743 +42494b4d4d4a4847473f4145494c4c4b494d49474a5053504b3e3f454642 +3d444e434546484a49474647494b47494c4e4b4342413f42474e50494a4c +4b4845424049484847474747474a44494b44454842474d504d4d52555351 +4c49474748423e393a3b3d3e3e3f3e4434443e3948161f2d292c31282628 +26262929292928282733373b372a1e1e254753605e4e392b24282f2e2939 +2c2a6b6e6891652fd2ea72868e331a73a1a3c4681b2f3531252b39222a38 +312c5331362c292d10279e6c1f272f1f56d8182636273b84c11a33372536 +b1321e88c5abb2a6a8b1a8826787c3eadcb4b4bc6912142931291b29454d +3a221a3356787a7b9b701538225c84979d45422a564d3a4d7c7d83962f33 +7f8a6c764e2622451a3d442f2c2824293033323d2b16240c295789867f6b +4c27131a2f3027343a3f463c4927385e50436d867c79808890928e8a8992 +827774746c5e544e4a5558595058645b5f565f5b5357484a3e4a586b7064 +75919aa3aeb9bab09c957f522c32131f44463a293e384a412a1d1800241a +19295f5277daead0ddc9d2d3cdda8715292f2c3c2f1131467789513b0213 +5b73615b667e93a7bbc5c8c6c5c9cdd2d9dfe4e9ebf3ebe2d9d1c9c1bca7 +9b8e8375675f5a504e493d3639434a39393a3b3b3834313f3c3e4448494a +4e565e6a73746d655f5f5d727f8d6a6065445c5c7466384252404242437e +a0a1a2a19f9e9f9fa29d9d9e9e9da1a3a9a9a9a7a3a0a1a2a5a5a4a29f9e +a0a29ea3a7a9a8a8a7a6a7aaaca8a2a1a6acadaaa8aaacaaa7a4b1aeabac +afb0adaaaaa7a6a9aeb1b2b1aeaaa6a6a9abacadadaba9a8a8a9aaacabad +aba7a8aeb0adaba8acb2b4b0afb1b3b0aba8a9aeb4b6b5b4b6b6b2acadb1 +b6b8b9b8b5b2b0b0afb0b2b4b6b7b9bab6b3b1b4b9bbb7b3aeb1b5b4ada9 +aeb7adafb3b7b9b9b8b7b7babab6b6b8b9b6b0afacacaeb3b8bbb5b8bab8 +b4b0aeaeb6b6b6b6b5b5b4b4b6b1b5b7b0b1b4adb4b9b9b8b8bbbebebbb8 +b6b5b1aaa19b969698999a9b9b9b999e93948d8643332b160f110b0e1717 +1819171717181a1a2d22130b070f20302a2a291d0d05070c0d1010101a0c +1d7aa090896a002799717a841e2a47695f3542264420080b13131710120e +1e491f000e141421476236021e1b225b53071d20381d64581c2721122171 +3783e1fffffff2f7ebbc8d7f91a2774355622100080e0d06041029392812 +0f25548cc2e1e0fdff8a5c0a14344649511b001f360023ab8393980c005e +776a88640000080022001314100e1114120b17432b022b190f42505e6553 +331d23332247bc93372625780c1c3f290817110005050d110e05030d110d +0a15263c576a6c76786f63605d5a5c605b6061525059613f2d170109140b +02020d08030000061a45a5b57222310b10210a4d8c1c001d0b2f181a131e +2d3100070666c3cdceadb2b0bcda6d132328433a1c392daf4f873010215b +8094b1c2b8b0aaa19ea0a6aba8a8a5a29c989494909293959a9c9e9e9d9c +a4afb9bfc7cee0e9ede8e3e3e4e3e1dedbd8d5cfc8c3b9b0a8a39b918986 +807b76727173797b84828a7c6c34304a6d7b574d514d5c4e454d52589876 +77767573727070736e6d6e6e6d6e73797a7a787471727376767573706f71 +736e73777978787776777a7d797372777d7d7a797b7d7b7875827f7c7d80 +817e7b7c79787b80838483807c78787b7d7e7e7a77767575767779787a78 +74757b7e7c7a7a7e848682818385827d7a7b80868887868888847e7f8388 +8a8b8a878482828182848688898b8c888583868b8d89857e8185847c787d +867c7e8286888988878a8d8d89888a88857d7c7979797e83868286888682 +7e7c7c8484848483838282827d81837e7f827b83888b8a8a8d90908d8a88 +86827a716b65656768696a6a6a6a6f646765652a25271e202522252c2a29 +282624242527293e352b24252e42534d504c4030262529282823222a192a +85a6948f740837aa858f97303955736841553d5b371f222a2a2e27292535 +6036132127263459754815302e346e651a2f2f43246a5e212c271726753a +84defffefff7fff8d2b0b6e4fffad1e0dc7c3025222a2a2c3a56624b291c +254d80b5d4d5eeef847d4f79afcbb67d2f0841541835bd9bafb428117891 +86a48212212f25501d3c38343031322d242d553b1036241848515d65583a +252a3b2b51c79f463739880f1b41331a3132172b2d3032291c171a150d0b +14233850636571746c615f5d59575a555c5f51515b654436200a141e1612 +18282c322d39425276c9cb761a1c000c260f5596280a2e1a3e2524171c28 +2e06141070cdd5d4b3b5b3bedc6d13232840381c3b2fb15188300b184f70 +8099aeaca9a39c999da3a9a9a8a7a3a09c98958c898a8c909292908e8d92 +9ea6acb4bccfd9ddd8d3d3d4d3d1cecbc8c5bfb8b3a69d95908b80787771 +6e696564686c727f828a7b6b312d4767734d4346404f413941454c8b4647 +47464443424245403f40403f41454b4c4c4a464344454848474542414345 +4045474948484645464949453f3e43494c4945474947423f4c4944454849 +4643413e3d404548494845413d3d40424346454541404041404241433f3b +3c424341403f43494b4746484a47423f40454b4d4b4a4c4c484243474c4e +4f4e4b484646434446484a4b4d4e4a4745484d4f4b473e414746423e454e +4446484b4d4b4847494c4c484a4c4d4a44454444454a5152494b4d4b4743 +414149494949484847474843474943444740484d4f4e4e5154544f4c4d4e +4c49413d3a3a3e3f4041413f3e43383e414614182421272e2a2b2f2e302f +2d2c2c2d2f30453b2f28273043554f515044342b2d313132313039293a97 +beafa98f2251c49da4a63c405874653f5943613d25283030342d2f2b3b66 +3c18252b2a385d794c1934323872691e3334472c766e343f351d20641b58 +a7c6babca3afa9896e7caeddceabbfc36a242020282a2b36515c441f0a09 +234667766b8fb354481641799e997c3a124b5e213fc7a5babf331e859e92 +af8a17212c1e46132e2a26222628261e2a553b133a2a1f54666f6d522a10 +182e2a5ad9b55b4744972e4774706285917f9a9fa4a69c8c878376655e60 +6873838c84878273625b55555e68636a6d6165728062574735414f54677d +99a6b4b1b7b4b1c3fffda343471e2339256caf3e1d381d391b1c18273c43 +121c1a7ad9e2e4c3c6c2cde9791d2d2a372b10302aae508a320f1b51707f +97b0babbb5b0adb2b8bfbec0c0bfbbb7b5b1a7a4a5a7ababaaa7a5a2a8b1 +babfc7cad7dce0dbd6d6d7d6d4d1cecbc8c2bbb6aaa199948e867e7c7875 +706c6b6e757783848c80713a3652737e584c4e4956483d433f407aa1a2a3 +a19e9c9e9fa29d9d9e9f9ea2a6a7a8a8a5a19fa1a3a6a7a6a3a09e9e9f9f +a4a8a7a6a8a8a6a6a8a8a4a0a0a6acaeabaaadada9a6a6b0afaeaeafaeab +a9a7a6a7abafb2b3b3aea8a5a9adadadaeaaa6a6a8a8a7a9adadaeaba8aa +b0b1adaca9acb2b4b1b0b2b3b1aca7a9b0b4b4b2b3b6b6afa9acb3b5b7b8 +b6b2afadacb1b3b4b5b5b7babcb8b7b6b7bab9b5b1b2b5b7b5afabadb1ad +b0b4b8babab9b8b7b9b8b5b6b9b8b3aeadacacb0b4b8bab6b8bab7b2afaf +b1b6b7b7b7b7b6b5b4b7b1b6b7b0b1b4adb7b9b9b9b9babbbdb9b7b8bab6 +aba09b98989a9b9b9a9a9a95a8929b967a2c3d1600000000000000000000 +00000000020e00000005141c21201200000001080a0c080e1115061b712d +277c550b36574f4fc93f18321f115dad392018241207161024402a10201e +1a1e181100389e24212111176d6b041b232d2b7a732e362b1f448d9ae7ff +fffcf0fce3b07c6e83887b665b5a2c0000231e12091c382c070013111b30 +66a7e3e9f9ffce29001e3242545a4a587831043c57222d940c00702c0078 +da0007230c0d2616181514171b160f1deef30528194197bb935b2f191d30 +4122003000003108161802080500070604000000000402060c3252768784 +756c6658645c645d715e525e5f555374744f5c5460696e543c350d090000 +00020307090503145adae7a74d1d0f1593f36219000f3a2c00590013f9d9 +19070c176cc9c7c5c1bab9cf410830433e2a2f1fb023862e578dadb7bdbb +a69fa2adb5babbbcbabbbfc6ced4dbdfe4eae6dcd2c7bcb3adb8b1aca69e +938d8d7b7f80767576777078737371736f6c67726c6c7077797a7c7b7e82 +858688898a7263554654425f9388642741655b5a4c505353629077787775 +72706f70736e6d6e6f6e6f73777979767270727477787774716f6f706f74 +787776787876767879757171777d7e7b7b7e7e7a777781807f7f807f7c7a +7978797d81848585807a777b7f7f7f7f777273757574767a7a7b7875777d +7f7c7b7b7e848683828485837e797b82868684858888817b7e8587898a88 +84817f7e8385868787898c8e8a8988898c8b8783828587857e7a7c807c7f +8387898a89888a8c8b88888b87827b7a79797b7f838583868885807d7d7f +8485858585848382837d82837e7f827b86888b8b8b8c8d8f8b898a8b877c +706b6767696a6a6b6a6b6679636f6e5815301409080c0a0c110d08070404 +04090b0f1c0d050c20313b403f2f1c1112171a1c1c181b1e2213287c332c +835e1646686361dc5127402b1c69bf4d332c37261a2a2338533e2334312d +2f2a200547b033333023267f7a162a30352e7d78323c31274a929de8ffff +f8eefff5cca6add6f3f5e8dbcd892d1c3229292b43615a32233022212b5a +97d3dae5e2c2413879a7c7c58d64789a4d1a4a683a49b028188a461394f8 +0e2a4b363a513c39363435362f2531ffff1435244a9db98f582e191e3346 +2b033e0f0349242e240a141917282c2b231b1518170f0c0e2f4c6e807d6d +625d4e5b545d576b5b4f56544c4a6e6e4a59525f686f543d361418131215 +1f26323b3d3a437ff1efa144180c1392f6692403214c3b03610317ffe328 +15192176cfcdc8c4bcbbce41082f403b282f20b227892e568aa7adb1ab9a +9ea7b2bbc0c3c4c4c5cbd1d9e2e9ededede7ddd2c7bcb0a9b2aca49e9489 +8384747b7a726f72716c726f6d6d6d6b66616c66646a71737476777a8083 +8486878a7a6d5d4b57425c8d80591d355a50514144454655814748484643 +41414245403f4041404246494b4b4844424446494a494643414142414648 +4746484745454745413d3d43494d4a474a4a4641414b4a4747484744423e +3d3e4246494a4a453f3c404444444742403e40403f3f4343443f3c3e4444 +41414043494b4847494a48433e40474b4b48494c4c453f42494b4d4e4c48 +45434245474849494b4e504c4b4a4b4e4d49454245494744404448444749 +4c4e4c4948494b4a474a4d4c4742414244474b51514a4b4d4a4542424449 +4a4a4a4a49484749434849434447404b4d4f4f4f5051534d4d4f5351483f +3b3c3c4041414142413a4d39484b3d03271510151a171718141110100d10 +12171827150e1227354043443522181c22282a2b272c2f332339904d4aa0 +7b3260827b75ea5b2c41291665c3543a333e2d21312a3f5a452a3b383436 +2e25094cb4383735272b837f1a2f3638358c8c4b54412a3e7470afc0bab1 +a4b1a3826778a8c9cec4bab0742117352f2f2d405b4f281c2b1c15153259 +7e73829c8603003e729aa98e7185a6592553704454bb332597531e9fff13 +2c4a32354a312e2b292d2f2b2230ffff173b2a53abd1a6693417162a3f2a +074b201b613c526055667078919ba09a90898780756e657688a7b3a9927d +70596052554b5b4a4054584f4d727250625f6d7a846e5b55405964717f97 +a4b2b6ae9f9bcdffffe1732c1729b1ff86380e254e400b6e1123ffec2f1e +222d82dfddd9d5cbcadc4d1434372c1c251bb1288e365e93b1b6bbb5a6b0 +bdc8d1d6dadbdddee5edf5fdfffffffffffbeee3d8cbc2ccc3bcb5aca19b +99848988807d807f7a807d7b7b7b79746f7a7473787f81828485888d9091 +9394947d6e5f4f5e4a67998d67283f6256564546443e456ca0a1a2a09d9b +9fa1a29d9d9f9f9ea2a7a5a7a8a5a09ea1a5a5a6a7a5a2a09fa09fa5a8a5 +a4a7a8a6a8a8a6a3a0a2a7acafababacaaa5a5aaaeb0b1b1aeaba9a8a5a6 +a8abaeb0b0b0ada6a5acb1b0aeafaca7a7aaaaa7a9adb2b1ada9abafb0ab +aeaaadb2b4b1b1b4b3b2ada7aab1b4b1b5b4b5b5b1acaeb4b6b8b8b6b2ae +ababb0b3b7b8b7b7b9bbbbbcbcbbbab7b4b1b2b5b7b5b1afaeadacafb4b8 +babab8b7b8b8b5b4b7bab7afabababacafb3b7b9b6b8b9b5b0aeb1b4b6b6 +b7b7b7b6b4b3b8b3b7b9b2b3b6afb9bab9bab9b8b9bcb8b5b7bab6aaa29f +9a9b9a9b9b99989898a296a0976f1b7abea69a9a97989b97949496969799 +9a99a69c94989a968e8973635046474845403e2f2d292f3a558f59251b29 +05000b0e183d00012725090804000400000800000a001111080a06000000 +13002cab28000000022b76030000053d78a8240b0002359ed0f4fffffff9 +f0c08160667975675e6931000005070c1d373b15000004071a1b17477eca +e9f3fffc510531353f5346877a8f76080e610005290012161f0c00000305 +050b211513141010151c1912039eb1002d2e1604170a010c202a2821084d +f09d0300095a250b0b0c0b0600000c0402081c4589bfcbbfa27d665d5650 +5d6856715668433e2c4b573c6769162348431f5c7f494f5c2b1907050811 +0900040c1100117bd5e3aa5012011538652e2b5729168f0400041e4f3d07 +2a064689cdd6b6b2cdc82c1c454738212c964e87adbfc2ad9ea7aea5bbb2 +aaa19d9fa6aaa09f9e9c99959190a1a2a2a6acb1b5b6b6b3b3b6b6b3b5b6 +b6b5afa1a1a7a9a0a19c9d9ea5a5a4a0a69d969595928f8f918f897e7167 +6361474b57678c6c5e6d4250527b773f4154535157798d76777674716f70 +72736e6d6f6f6e6f7475777875706e71757576777572706f706f75787574 +777876797977747173787d7f7b7c7d7b76767b7f8182827f7c7a7977787a +7d808282827f78777e83828080797374777774767a7f7e7a76787c7e7a7d +7c7f848683838685847f797c83868387868787837e8086888a8a8884807d +7d8285898a89898b8d8d8e8e8d8c89868382858785807e7d7c7b7e838789 +8a88878a8a8786898c867e787878797a7e8284838687837e7c7f82848485 +8585848281847f83858081847d88898b8c8b8a8b8e8c89898b877b706c69 +6a6b6b6b6c6b6b69736974704f056fbdaeaaacaaababa5a2a09fa0a0a3a3 +a5b2aaa6acb0afa9a48c7a645955544e47433634323b48629c602a223311 +061b20294f05103531141413041506111a100a1b112223191c170c090520 +0f39ba35040c0c0f3a83120c090a427eae2b12030b3aa3d1f3fffffef9f8 +d6aea5c5edf4e6d3cc8029181d161830525b3a1f2129252d24133a6cb4d3 +daeaea5e3483a4c2c580a79eb0901c1b70172044082a2e37241407212628 +31493c36332f2d3236312716b1c00c3a3b200b1808000a1d272826125dff +b8221b2b7c4227292d302d1d222c1f14131f437fb6c3ba9d785f554f4754 +604e694f613e3923414d3260620f1d423f1b577a454a603d2e150f0e1916 +15283842213ca0f1f3ac4a09000f376735346437259f17121a31604e1536 +104c8fd0d7b8b4cfca2e1b4040331e2c97518bb1c3c4ac9ca3aaa3c1beb6 +afabacb3bab0b0afaeaba7a3a1acaaaaadb3b8babcb9b6b4b8b8b5b4b8b9 +bab1a6a3acaba5a3a19fa3a7aaa6a2a9a097989895929294928c81776d69 +6a555b6570916c5a673a454874703a3f50474246687b4647474542404244 +45403f414140424747494a474240434747484947444241423f4548454346 +4745454543403b3d42494e4a484947424045494b4a4a474442413c3d3f42 +45474747443d3c434847454844413f42423f3f434847413d3f43433f4240 +43484a47474a4948433d40474a474b4a4b4b4742444a4c4e4e4c48444141 +44474b4c4b4b4d4f4f50504f4e4b484542454947464445444346494c4e4c +48474c4c49484d504b433f3f4142464a4e4e4a4b4c484341444749494a4a +4a4947464a45494b454649424d4e4f504f4e4f524f4c4e5351473f3d3e3f +4143434344423d473f4d4f360069c2b9bac0bbbab8b0adacaeacafafb2b1 +c0b5b2b5bbb6b2ab91806b6060625f59564846434b5572ad7a473e4e2b20 +34363b5d0f17383110121a0e1f101b241a14251b2c2d23262114100c2816 +41c13d0b141317418b19140f0e488ec6472c130a267b98b2bfbdbab1ab8b +6b6e99cad6cbb9b76d1b101d1d243e5b5a3211132225332910273c6b7075 +99a21800456f96ab82b6aebf9d2724771f294f13363a43302010292b2c32 +4939322e2a29303531281ab5c71342432a1b2d2019223238322a135cffc1 +373c58bba095999ea3a292949b88766d708ec4efe8d1b48c6f62574c575e +4b66495b38352849553a676917274e4d2c6d916068836b655457647c868d +a3b5b990a2fbffffbb4c1c1731567e4745775444b92813173568561e421c +5a9de1e9c7c3ded73b233c362d192a995694bccfd1baaab2b9b1cfccc4bc +b8bcc3cac0c2c1c2bfbbb9b5c0bfbfc0c6cacdcccac7c6c7c7c2c2c7ccce +c6bab8c0c0b9b8b5b4b7bcbebbb7bcb3ababa9a6a3a3a5a39b9083797573 +585b6675977668754753537c773e404f473d3c56639d9fa1a09d9ca0a3a2 +9d9d9f9f9ea3a7a3a6a7a49f9ea1a6a2a4a6a6a4a1a0a0a0a6a8a3a2a7a8 +a6abaaa7a4a3a6abafb0acaaaaa5a1a5aeacb0b4b3aea9a7a8a5a6a8aaac +adadacaca5a5aeb4b2afb0b0abaaaeada9aaaeb6b4afaaabaeada8afabad +b1b3b1b2b5b3b3ada7aab2b3afbbb6b4b6b6b3b2b4b9babab8b3afadacae +b3b9bbbab8b8b9b8babbb9b5b0adacafb2b4b4b4b4b2afabaeb3b7b9b9b7 +b5b9b7b3b2b8bbb7adaeaeafb0b4b8bbbdb6b8b8b4afaeb2b7b5b5b6b7b6 +b5b4b2bab5b9bbb4b5b8b1babababbb9b7b8bbb8b4b6b9b4a8a2a19e9c9c +9c9a9897979c959b9e926c17c0fee8dde1e2e7ebe5ebebeeeeedeceae9f0 +eeece7dcd7e2edeaecf0f4f8f9fbfcfbf6fbf8f7f4edf4f7eef5f5e4f2ed +edf0e9eff4f3ebf5f7f2d9f2e8edefecf2dfcae4f2f2e6e5e6e9ece2f569 +48cdcfe0d6d94b5dd8cdc9c3b24d7ebdb7b2b897cdf6fffff8f5f1cf9e70 +676a6c6f795f5141475b636365624a2d1f1e1d130a0012123a4d92d8fcff +ffc4041f3b4f444f3a00394d002cac0000da4708769c137b650008120210 +0606040000050d0d06000000040517141f161e252010060f1b08003c2500 +00000802020400000100070009439be3f7e3ccb89a6d4f5057452718291f +4a1e2903141c5a690d1b320144573b0083d4471236615f4c3e1e1d131309 +000e130b00228cf1fcdb51074857270e2d52243e000b070b3a550025262d +012c8edbcab6c8bc30414b41184b8ea9a99c95949ca4aaaaa9959ba5afb6 +babbbccdd0d6dbe1e4e7e8dad2c8bdb5b0aeaba8a5a5a7a6a2a1a4a1a9ac +abafb4ac9daeaaa7a7aaaaa5a09c9085807c756f6d5f5d59545257616674 +7c7c6c744332465b82695248475f594b4d5b90967375757471707174736e +6d6f6f6e7074737677746f6e717672747676747170707076787372777876 +7c7b787574777c80817c7b7b7672767f7d8185847f7a787977787a7c7e7f +7f7e7e777780868481817d77777b7a76777b83817c77787b7b777e7d7f83 +8583848785857f797c8485818d888688888584868b8c8c8a85817f7e8085 +8b8d8c8a8a8b8a8c8d8b87827f7e7f8284848383817e7a7d828688898785 +8b8985848a8d867c7b7b7c7d7f838688838686827d7c8085838384858483 +8280868185878283867f89898c8d8b898a8d8c88888b8579706e6b6b6c6c +6d6c6b6b70696e746e4e04b6fef1ecf3f4f8f8f1f7f7f7f7f6f5f3f2f9fc +fcf9f0edfafffffffffffffffefdfcf7fefffffffefffff6fffff0fffcfe +fffbfffffff9ffffffeafff9fefffdfff0dbf5fffff7f6f4f6f9efff7655 +dadcede3e6586ae5dad4cdbb5689c9c2bcbf9accf5fffff4f2f6e1c4b0bf +dcecf0efbf9b73666f727175735d473e42433627111a0e2d3978badbdced +c82865a2d3bb8c5e225a640436b91014ee5b1a88ae278f7b142530233328 +24201a181e25211a11040612112320281920251f0f071122160557460f25 +1f312b2a2b1c1d2519230b184b9cdeedd6c1b4996d4f4e55442614271b48 +192600111957630a182f004155390080cf430e3a707259421e1c13181717 +303e3c3258b4fffbd94d034453240f315a3252192924234d660b312e3304 +2e90daccb8cabe2e3b433b14498eacada29b9aa2aaadadaf9fa8b3bdc4c8 +cccddde2e8eff3f7f9fae8e0d4c9c1bcb8b5b0adacaeada9a8aaa9b1b4b3 +b7bcb4a5b6b2afafb2b2ada8a2978c87837c76746665615c5c616b73838b +877578432e40537a64504849645a403a487b7e434546454241434645403f +414140434745484946414043484446484846434242404648434146474548 +4744413e41464a4d4b4747423e4049474b4d4c474240413c3d3f41434444 +43433c3c454b49464948454246454140444c4a433e3f42403c4341434749 +47484b4949433d40484945514c4a4c4c49484a4f50504e4945434242474d +4f4e4c4c4d4c4e4f4d494441403f424646494949464245484b4d4b47454d +4b47464e514b41424245464b4f52524a4b4b474241454a4848494a494847 +454c474b4d47484b444e4e50514f4d4e514f4b4d504f453f3f3e40444446 +474644433c454e4e3600b4ffffffffffffffffffffffffffffffffffffff +fffbf8ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffcfffffff4fffffffffffffae5fffffffffffffffff7ff7e5de2 +e4f5ebee6072ede2dacfc0659fe3d8c6b87f9eb5b7b6abafb3977b738fba +d3dee1b38e685e6d757a84856b48383436322b202d1c27183b627a849a7b +00266ba49f8f6e346b74103fc11a1ff9662894bc329a861e2d3828372a26 +231d1c22292821180e101d1d312e372a35413f31262a341f0c6259335864 +89a1adac9895978587686b94dcffffffe1c29e6f514f56422413281c4b1f +2d071a24626f15233a094c62470e95e65c29578f937c6f546069809198b6 +c0b3a0bafcfffff1681e5f6c3f2d5481576d26271f27546e143d3b41133d +9feadbc7d9cd393d413b154e96b5b9b0abaab2babebebda9b0bcc6cdd1d6 +d7eaeef4fafffffffff5ede2d5cdc8c2bfbbb8b6b8b5b1b0b6bcc6c9c8cc +d1c9bacbc7c4c4c7c7c2bdb8aa9f9a968e888476726e67666b757b888e8b +7a814d3c4e60856b554a4860543a33396662a2a2a3a3a1a0a09f9c9c9fa2 +a5a7a7a6a1a8aba6a19fa09fa5a6a7a7a5a3a1a0a2a2a3a6a9aaa8a6a7a6 +a6a5a5a8acb0a7a9a9a6a3a5adb3aeadaeafb1b0adaaa8a5a9b1b3afaeb2 +aaa8a9afb5b5aea7a8acafaeabaaabaeb2aca8abb1b4b0a9acafb4b4b1af +b2b5b0adababaeb2b5b6b8b7b5b3b1b2b6b8bbb7b3b0b0afafaeb5b6b7b7 +b8b8b8b7bab8b7b8b8b8b5b3b0b2b0ababb0afa9b3b3b4b4b5b6b7b7bab8 +b5b5b6b5b3b0abafafaeb4bdc0bcb9b7b4b1afafb1b3b4b1b2b6b8b4b2b4 +b5b9bdbcb8b5b4b6c0bdbcc1c0b9b6b9b6b2b4b4b2aea59c9ca39f9991a2 +8e9e999b9d9d80800ecbdcd1c8c4c4c8cccdcbcbcdcececed0cfd7cacfca +c9b9dacac8d2c4cbd5c7cbe1d3d3d3d0cecccacaced0cdcdccc9c9c9c8c8 +c6c1bdbec7cdcdc8c2c1c5cacdcec2c6ccc4d1dbc5c1c7c6d4f58944e7cb +d0d9ea6092f4e6e6efe977c5eee4f0e8bef3fffffff6f0e0a08474655c77 +826985b8e9f5f7f5f1eff2f4f1eeedebebedeef5edffd065c5ecfffeff1b +1b3c4a467eb4beb4bab9b3b9d1ce7c21171a142c6dafc48ca39b7a81847a +6f6b6a675c5336343130312c25202210161c0c060f090b0e232911040600 +0000000000000f2d7acef7ddd1dea294644811187b3b2904090829424410 +03041157461a0c0c053061362f4e43221d165f464f523123281f0d0c1506 +130a060055cbe3f4b754a4371d354f3c451d0000126b5e1012423e241409 +4cb5deccb6ac363d5a74c0a699899fa1a3a09d9ca1a6b6b5b4b3b2b2b2b1 +bab7b3afafafb3b5bebebebfc3c5c6c7c4c2c0bcb7b3afaea4a19f9b9690 +8a87847f776d655e5b5964615e5d60636566696f78828887817b7a726254 +4f4b5e8186663f374e61523c4c5272999878787777757472716e6e6f7275 +77747371787b76716f706f757677777573717072727376797a7977787777 +7676797d8178797a7774767e847f7e7f8082817e7b7a777b83858180847c +7a7b818787807875787c7b7877787b7f7975787e817e787c818686838184 +87827f7d7d808487888a8987858384888a8d89858282818180878889898a +8a8a898c8a898a8a8a87858082807b7a7f7e7882828383848687878c8a87 +878887827f787c7c7b7f888b878685827f7d7d7f81827f80848682808281 +858988868382848f8c8e93928b888b89888786837c716969726f6c657766 +746e6f70725b6400c2dedcd8d6d6d7d8d9d7d7d6d7d7d7d7d8e0d6dcdcdc +cff0e1dbe2d2d6dccbcde0d2d5d6d8d8dadbdbdad9d9d9d9d9d8d8d7d8d3 +cec9cad1d7dbd6d0cfd3d8dbdcd0d4dad2dfe9d3cfd4d3e1ff9651f4d8dd +e6f76d9ffff3f3fdf887d6fff4fbefbeedf9fbfdf1f0eec8c3c7cad2f1f5 +cbcde9fffffffffffffffffffffffffffffefce9faba47a1c7dde5ff3658 +9bcabdbfdbe3d3cfc7bdc3dedc8a2f2326203879bdd4a0b9b3959c9c9287 +81807b6f65464441403e39322c2c1a1d23120e17161e27414b372d302b27 +2928241d15213980d1f6d9cdd99d92684e171e8444320c0e0f2d48471205 +06135c491d0f0f08336439325043231e1a67515b5d3c29291b07071a1939 +414e3c77dcf2ffbd539e2d112c4d4155341b16297f701e1f4a422613084a +b4ddcbb5aa2e33536ebca59b8fa6aaaca9a6a5abb0bfbebdbcbdbdbdbec7 +c4c0bebcbdc0c2cbcbcbccced0d1d2cfcdc9c5c0bcb8b7adacaaa6a19b95 +928f8a8278706966656d6a6766696d6f707178818b91908a86857d69584f +495a7b80603d38546b5d3f403c5c817e46464646444341403d3d3f424547 +4544434a4d48434142414748494947454342424142454849454344434140 +4043454b444846434042484e494847484a4946433f3c40484a464549413f +40464c4c4540404647464342414448423c3f4548433d3e43484845434649 +44413f3f4246494a4e4d4b4947484c4e514d494646454544494a4b4b4c4c +4c4b4e4c4b4c4c4c49474042423d404546404a4a4948494847474e4e4b4b +4c4b48453f434342495255514d4a474442424446474445494b474547474b +4f4e4b48474954515257564f4c4f4e4c4c4b4d49413a3c4747454054424e +4342474f3e4f00c3eaeeefeeecece8e7e7e7e7e8e8e8e9e9f1e6eceaeadc +fde9dfe2d5dce6d7dcf0e4e4e7e5e2e3e2e3e6e8e9e9eae9ebebeae8e4de +d7d8dde3e6e1dbdadee3e6e7dbdfe5ddeaf4dedadddceaff9f5afde1e6ef +ff76a8fffcfbfffd94e8fffffddf9ab9b8b2b5adb2b0817d8fa2bae4f0ca +cae6fffffffffffffffffffffdffffffffffffffa315556c7f89aa001563 +9aa1c1ecf6e5e0d4c6cce7e7953a31322e4485c8e1abc4bd9ea5a69c918c +8b867d73555451504f4c453c3524303f34333b383c45657b787d929caab3 +ab9e8b777783befffffce8f0b19f694a131a7f41310e121739565a271e1d +286f5a2e1e1e1742734a45675d3f3a357e636b6f524b5f676b7d9a9cb6b6 +ba98c1ffffffcd63b8523f59725e643a1c172f887a2928554e33211658c2 +ebd9c3b7393c5b78cab3aa9db6b9bbb8b5b4b7bac6c3c2c1c3c3c3c4cfcc +c8c5c5c6c9cbd3d3d3d2d4d6d7d8d3d1cecac5c1bdbebcbebcb8b3ada7a4 +a19c948a827b78757e7b787578797b7a7c818a9298958f8a898371615b56 +68898c6a423a50635536342e47675da3a3a3a1a09fa0a09d9d9fa1a4a6a8 +a7a2a8a9a39e9ea0a1a5a6a6a5a3a09f9fa2a2a3a6a9aaa8a7a6a5a4a2a3 +a5aaada7a9a9a7a4a6adb3b0aeacabacadacaba8a7aab0b2afaeb1a7a9ad +b1b3b1aca9a8abaeaeacaaacafb2adaaadb2b5b1abaeb1b5b6b3b1b3b6b0 +adababafb2b5b6b7b6b4b2b1b2b5b8b5b3b1b1b2b2b0aeb5b6b7b8b9b8b7 +b7bbbab8b8b8b6b3b0b2b3b0abacb1b0acadafb2b5b8b9babbbbb9b7b7b9 +b8b7b4acafaeadb3bcbfbcb8b8b7b6b3b2b2b3b5b2b3b7b7b4b2b3b5b9bd +bcb7b5b5b7bfbdbcc1c0bab8b9b8b4b4b2b3ada6a09b9d9b9d959d889a99 +9c97988b6323d7dad0c8c3c7c9cdcfcdcdcdd0d0d0d2d1ddd8ccc1e2d0c7 +c1c8d8dac8d2e1cbbbd1cfcccececccacbcecececdccccc9c9cac9cac9c7 +c3bebbc8cbc9c0b7b6c1cccdbfbab4beba9e9dc7c1b2ca713bd5c6bdc5d4 +4e80ded4d3d4d0569ed2d2dcd4d6fafffff4f3eeb45f7160669f9e777dad +c8dcdcd6d7d5d3d4d6d4d3d1d0cfcfd7d8e8ebff7aa1dffcf9ff4d163c47 +4394c6d1d0dbdee3f6e339000a1e1c16260045c4f4ddd1dfe4e1dcd7d8dc +ddd9d3dcdad8d8dcdcdad8d2dfd6c6c4c6c6c8d1c86804000b00000d0000 +000143a6e1e5e6d3c4bd9e5c4f7b7275637326417d686b55252145484440 +3a2c334020343c4c2c27452c130e145335251a030a253508040f0900030f +07131c96e7e3e5a320075e3f17071405001313040000542f19231c090a55 +c5edcf9152949b8a7f94aa9b9591959fa7a7a5a3a7aaafb2b8bec1c0c6cd +d1d0cac2bdb7b6b4b1afadaeacb3b5b8bcc1c5c8cac5c3c5c2c3c0c0bebb +b8b9b6b6b3b5b5a9a49e989593908f8c88827c77726d6a4a4c51667c7c75 +7e5b3936596b53404a4c62839a9579797775747372726f6f6f7174767574 +727879736e6e70717576767573706f6f72727376797a7978777675737476 +7b7e78797a7875777e84817f7d7c7d7e7d7c7a797c8284818083797b7f83 +85837e7a75777b7b7977797c7f7a777a7f827f7a7e83878885838588827f +7d7d81848788898886848384878a87858383848482808788898a8b8a8989 +8d8c8a8a8a8885828283807b7b807f7b7c7e818487898a8b8d8b89898b8a +8683797c7b7a7e878a888686858481808081838081858582808181858988 +858383858e8c8e93928c8a8d8b8a8785827b726c686c6b706a7562746e6f +6b70684810d1dcdbd8d7d7d8d9d8d9d9d9d9d9d9d9dae6e4d9d3f4e3ddd5 +dae8e8d3dbe7cebed4d2d4d8dbdbdcdddbdbdbdadadad9d9d9d8d7d6d2ce +c9c6d6d9d7cec5c4cfdadbcdc8c2ccc8acabd3cebed77d48e1d3c9d2e05b +8cebe0e1e5e36cb4e8e6e8d8d1f1fffdeff5f5d1a0c7c0cdffffd2c6e0ea +eee6e0e4e7e4dfdee1e3e5e5e4e2e5dee5dfe75a7bb9d8dffd604991c3ba +d6edf4ebeceaedffeb41011024221c2c004dceffede3f1f7f4efeaebefee +eae4ebe9e7e7e8e8e6e5e1efe7d6d4d6d7dde8e286242131272834201913 +144faae2e1e2d0c3bfa2655a868083718336508c767962322d4e514d4b47 +393f4c2c40485835304d341b161a5a3f322914152a310000080f162e4d45 +4240b8fff5eea014004d34140a1d14092727160b025c31192118050853c3 +edcd8b498d97877e95b0a29e9da3adb5b5b2aaabaeb3b9bfc5c8c8ced5d9 +d8d2cac5c1c0bebbb9b7b7b6bcbec1c5caced1d3cfcfcececcccc9cac4c4 +c2c2bfbfbebeb3aea6a09d9b9998938f8a847f7a7572515054667a787178 +5536365e725f4e4e3c47677d7547474644434241413e3e3f414446464544 +4a4b4540404243474848474542413f424142454849454443403f3d3e4043 +48444846444143484e4b494544454645443f3e4147494645483e4044484a +484342404546464442424548433e414649443f4045494a4745474a44413f +3f4346494a4d4c4a4847484b4e4b49474748484644494a4b4c4d4c4b4b4f +4e4c4c4c4a47444243423d41464743444647494c4b4a4d514f4d4d4f4e4c +49404342414851544f4b4b4a49464545464845464a4a474546474b4f4e4a +48484a5351525756504e50504e4c4a4a46403c3b41434947523e4f444544 +4d4c3509d3e9eff1efeeebe9e7e9e9e9eaeaeaebebf7f4e9e1fff1eadedc +e7e9d7e4f3ddcfe5e3e1e4e4e2e0e1e3e3e4e3e7e7e8e9ecebeae9e6e2dd +d8e3e4e2d9d0cfdae5e6d8d3cdd7d3b7b6dfd7cae08951eddcd5dbec6498 +f4eceaecea77bff3e7debfa7b8bdb8adb6bf975c8690affbffd7cfe4ecee +e5e2eaf3f6f5f1e9e2dcdee7f1ffffffeddb343c66787ea30f0456919cd5 +fcfffefefaf7fff64c0c1c302e28380c5adafffcf1fffffffefbfafffefc +f6fefcfcfcfefefcf5e4efefe6eef8ffffffffcc77819c9ca4b59d8d7c70 +9be9fffffde3d1cbab6c5e88818472833653917f867345456b706a615849 +4f5a3a4c546644416049322d306a493a301c274a63424f6f7d879fbcb2ae +9ef8ffffffbb38227752271322190f303222160c673e252e26131560d0f9 +da995a9da89890a7c0b4adabb0bac0c0bbb4b4b7bcc3c9cfd2d3d9e0e4e3 +ddd5d0cbc9c7c4c2c0c0bfc3c5c8ccd1d5d8dcdbdddddcdbdad8d8d3d2d1 +d0cecdcdcdbfbab3ada8a6a29f99958d87817c777457595d7087867f845f +3d385a6b5541402c344f5f4fa5a3a2a09f9fa1a19f9e9ea0a3a6a8a8a5a9 +a8a19da0a3a5a6a7a7a5a19f9e9fa4a4a5a8ababaaa8a9a7a4a2a2a5a9ac +a7a9a9a7a5a7adb2b3afaba8a9aaababa9a8abb0b1afafb1a6abb1b3b1ad +abaaa7aaaeaeacacaeb1b2aeacaeb4b5b2acb0b2b6b7b4b3b4b7b2b0aeae +b1b5b7b8b6b4b2b1b1b3b5b6b5b5b4b5b6b4b1aeb4b6b8babab9b7b6bcba +b9b8b7b4b0adb6b5b0acadb1b2afacafb2b6b9bbbbbcbcbab9b8b8b6b5b3 +aeafadacb2babebdb4b7b8b8b5b2b1b1b7b4b4b7b6b2b1b3b5b9bbbab6b4 +b5b7bdbcbcc0c0bcb9b9b9b5b5b3b2aca6a1a1a09d9e9393717da4a1959b +98464ee9d6cdc7c5c9cbd0cfcececfd0d0d1d3d3d8d7d5bac5c2c6ddd5ca +d0c7cfe1d8dedcd2cfd1d0cbcacfcececdcdcdccccccccc9c7c8c9c6bfb8 +b7c1cacac1bab9bbcfc5c3b8b6b5b6d7d0cfbcc97448d2cfc6c0c14483e4 +d8d0d7d763a5dad0c6bfeeffffffe7ece1804e5e6083bda27fa7cdd3d1c9 +cad2d5d3d7d8d8d8d7d5d4d4d0cfdfd6ffaf73d3f8f6ff9a153a4a487fab +b6b9cad1dff83300242d1c270f01110018c8cedad7b5c9c6c4c4c5c5c3c1 +bdb9b5b2b2b2b2b1b4a2a3aaa5afb4a55d00001b14000510000b1751b8ea +e4e1e8c18b7b77607398aeaac39d7d4676d3b9c69e4b57cfcbcdbe54257f +eddce77e666e9eeae5e5dee8dad6dbe0dbd2d4dcba9d40040a0b000c1318 +182fe2ebecffc67892d2a354061925714c5e446c4d082426241b101f70cf +fc88748695a5a280919ca4a09693a0b1b8b9babcbfc3c6c8cbd0d6dde1e2 +e1dfd0cecdcbcacacbcab9b8b6b4b2afaeacb7b5b4b1b1afafaeb5b6babd +c0c1c3c3b7afa3968b807873726d655f5d5d5c5c778186897f5c3c37385b +7a75543d425a55769499907b7976747373737371706e7073767575727675 +6e6a6d7072737474726e6c6b6c747475787c7c7b797a78757373767a7d78 +797a7876787e8384807c797a7b7c7c7b7a7d8283818183787d8385837f7d +7b74767b7b79797b7e7f7b797b8182807b80848889868586898482808083 +87898a8886848383858788878786878886838086888a8c8c8b89888e8c8b +8a8986827f8685807c7c80817e7b7e8185888b8b8c8e8c8b8a8a8884827b +7c7a797e868a898285868683807f7f8582828584807f8181858786848283 +858c8b8e92928e8b8d8c8b8886817a726d6e6f6d726b6c4e597a74697276 +2c3de4dadad9d9d9dad9d9dcdbdcdcdcdddcdce1e3e2ccd7d5dcf1e7dae0 +d5dceee1e7e5dedbdfe1dcdde1dddddcdcdbdadad9d9d6d3d4d5d2cbc4c4 +cfd8d8cfc8c7c9ddd3d1c6c4c3c4e5dcdbc8d58054dedbd2cccd508ff0e4 +dee9ed7bbef3e5d0bfe4f1fffde8f9f7b2adcfc9e2ffe8b9d5efefe7dcd9 +e1e3dedfdfe1e2e3e3e3e1dbd5decdf9914fadd7dffea63e88c0bcc1d3d7 +d2d7d8e9ff3701262d1c270f0413001ecfd7e7e4c5d8d7d5d5d6d4d2d0cc +c8c4c1c1c1c1c1c8b9bcc3bfc9cfbe77170837311b262e111f275ab9e6dc +d9e0bc8c8386788fb3c3bbd6b0935c8eebd0ddb36069dfdbddd1683991ff +effa91797faffbf5f5eef8ebe9edf3ece1dfe2bb9b4007121b152e47534e +5dfffff3fbba667fc29349001933845e6c4e724d061e201e150a1c6ecdf8 +836f8392a6a58598a5b0aea4a4b1bebbbabbbdc0c4c7c9ccd1d7dee2e3e2 +e2d5d5d4d2d1d1d1d1bfbebcbab8b5b4b4bfbfbdbbbab9b8b8bec0c3c7c9 +cbccccc0b8aa9d92877f7b77726b6561616060777f84877c593934355a7c +7759454d5b405675796d4947454342424242403f3e404346464645494841 +3d40434546474745413f3e3d444344474848474544423f3b3b3e42474448 +46444244484d4e4a444142434444403f4247484646483d42484a48444243 +3f44464644444447484440424849454042464a4b4847484b464442424549 +4b4c4c4a484747494b4c4b4b4a4b4c4a4744484a4c4e4e4d4b4a504e4d4c +4b4844414645423e424649464346474a4d4d4b4e5251504f4f4d4a484243 +4140454d5150474a4b4b484544444a47474a49454446474b4d4c4947484a +5150525656524f50514f4d4b4945403d4144454d484b2e35524b44525b1b +36e8e6edf1f1f0ede8e5e9ebecececedededf2f3f2dae5e3e9fae7d9e0d8 +e4f7f0f8f6eee9eae9e3e1e5e0e0e1e1e4e5e7e9eae9e9ecedece5dcd4dc +e5e5dcd5d4d6eae0ded3d1d0d1f2eae7d6e18e60ece7e0d8db5c9dfcf2eb +f7f885c2efd6b799b3b8c4bfaec1c67d6d919ecafff0c7e4f9f3e5dadce8 +f0f0f4f1eae4dfe3eaf2f9f7fddef4751d647879a254004c8c99bddfe8e6 +eaeaf5ff420d32392631190d1f0c2cdfe8f7f5d5ebe9e9e7eae7e7e5e1dd +dbd8d8d8d8d0c9b3b9c7cce2fafecb7a79b2b19da7a87d807fa7f9fffff1 +efc39086897c93bcd4cfe7bfa16a9af7deedc4737ff8f5f6e073429bfff6 +ff977f87b7fffffffdfff5f0f9fffcf4f3fcdac3764c677d84a9cfd3b2a8 +ffffffffd27c92cf9e51052340926a77587e5911282a281f142579daff99 +8598a7bab898a8b4beb9afacb9c7cccecfd1d4d8dbdde0e5ebf2f6f7f6f5 +e8e5e4e2e1e1e1e1cfcecccac8c5c4c1cac8c6c4c3c2c1c1c7c9ccd0d2d4 +d5d5c9c1b2a59a8f857e7a756b6562605f617f8a8f928764443d3c5f7b72 +52383d492b3d565343a6a4a29f9e9ea1a2a19f9fa0a3a5a9a9a6a8a59e9b +9fa5a6a5a6a6a29e9b9d9fa7a7a8abadaeacaaadaaa6a4a6a8abada8a9a9 +a7a7a9adb1b4b0acaaaaaaabaaaaabacafb0afafb0a9acb0b3b1aeaaa7a6 +aaaeaeadacafb2afadacafb3b4b1acb2b3b6b7b5b4b4b6b5b3b1b2b5b8ba +bab4b2b0b0b2b4b5b6bdbbb8b6b6b4b1afb4b6b8babbbab7b6bab9b8b8b7 +b5b0adb7b4afabacafb1b1b3b3b4b5b7b9babbbcbbb9b7b5b2b0aeb0afac +acb2b8bcbdb2b5b6b5b1afb0b1b8b6b6b8b6b1b1b4b4b7b9b8b3b2b4b7bb +bcbcbfbfbdbbbab5b5b8b7b4aca5a09fa19c9a91916158b39e939c963c5a +efd1c9c7c6cbcdd1cfcfcdcdcfd0d1d4d2dac6d4cfcbd6d2c9ccc6cbd0c9 +c0bfc7cbc6c5c9c8c4c5cbcfcecececdcdcdcdcac6c0bec0c3c5c5b8b9bd +c5cccbc3baadb9cdcac5bbacbdbfc4d0dc6f4bc9c1c9c7c54a7ed0cdcccb +ce67ade0cfc7d8f9ffffffe7dcbe605c4c7fb2a48ba7d1d4d5d2cfd3dadf +dad9d9dadbdddbdad7d7ddd1ddfeea5ab9ecf1ffde1e374b4f7299a1a6b5 +b7c7ee17181e23b7ffb04c2a1104afe3c8c5decdcbc9c6c2bebdbdc6c4c0 +bcbab9b8b6b7b1b2aaa8b47e1500131a04030b03001551baf0e3deddbd86 +9aa0a790677e86a09ca47659447ba7989d78283ebe9daf6e48247dbda0ca +5d6a6e96ccb7bbb0bcb3b9bcc2c6bdb6bfcbccd1943803151200001a1311 +9fd9f5f5c86f48481e351900debcc8cfd85d101f22212d35202044a5d496 +8892849e95aa9d9397a4a9a39dabaeaeaeb0b2b5b7b8b7b5b3b1b0afaeb9 +b7b6b6b6b7b8b8c8c8c7c6c5c4c3c3bcbab8b5b3b2b2b3acaaa6a19b9591 +8e8f8a837c7974706d6c6e727c848a8e8e8b86715b4e414354757a644243 +60645470879a9b957c7a76737272737473716f70737576767375726b686c +72737273736f6b686a6c7777787b7e7f7d7b7e7b777577797c7e79797a78 +787a7e8285817d7b7b7b7c7b7c7d7e81828181827b7e828583807c787376 +7b7b7a797c7f7c7a797c80817f7b828588898786868887858384878a8c8c +86848282848687888f8d8a888886838186888a8c8d8c89888c8b8a8a8987 +827f87847f7b7b7e80808282838486898a8b8e8d8b8987847f7d7d7c7979 +7e848889808384837f7d7e7f86848486847f7f8280838584818082858a8b +8e91918f8d8e8b8b8b89837b716c6c706c6e696d40368973697574224bea +d7d8d9dadcdddbd9dddddddcdddddddee6d3e4e1dde9e8ddded8dde1dbd2 +d2daddd9d8dcdcd6d8dededddddddcdbdbdad7d3cccacccfd0d1c5c7cbd3 +dad9d1c8bbc7dbd8d3c9bacbcbd0dce87b57d5cdd5d3d1568adcd9d9dce1 +7ec6f7dfced4ecf3f7faf1f8e9a8cec8e9ffe4b9c8ecececeae4e6ebe8e2 +e1e2e3e2e2e3e2e2e0e3d5d9f0d33999d2dcfae33f7dbcbfb4bfc1bbbdbc +d1f61a181d22b6feaf4b2a1306b5ead1d0e9dadad8d5d1cdccccd5d3cfcb +c9c8c7c8cccbcec7c8d59f34072d311b1a221b152158bbf0dcd5d1b38098 +a6b5a886a0a7b8afb98c715d96c2b3b9923f53d0afc1845f3b95d2b8df72 +7f83abe1cbcfc2d0ccd1d2d3d5cac3cbd8d9dc9a3a000f1d2d4256473cbf +edfff4be5f3430031a0b09f1ced4d7da5b0d181817262e1b1d42a2d19386 +9085a19bb1a69fa5b2bab4a9b0aeaeaeb0b2b5b7b8b7b5b3b1b0afaebbbc +bbbbbbbcbdbdcdcdcccbcac9c8c8c4c3c1bebcbbbbbcb5b3afaaa49e9a97 +96918a837d7975727072767d858b8e8d8a836e594c404253747a65414360 +654c546276766c4a4845424141424342403f40434547474648453e3b3f45 +46454646423e3b3d3d4646474a4a4b494748453f3d3f4144484548464444 +46484c4f4b45434343444341424346474646474043474a484541403e4446 +4645444548454340434748444044474a4b4948484a49474546494c4e4e4a +484646484a4b4c53514e4c4c4a4745484a4c4e4f4e4b4a4e4d4c4c4b4944 +414744413d414448484a4a49494b4b4a4d5252504e4c4945434443404045 +4b4f5045484948444243444b49494b4944444746494b4a4645474a4f5052 +55555351514f4f504e4b433f3c3d454449464d2113614943545b1346eee5 +ebf1f2f0ede7e3eaecececededeeeef6e3f3efebf7f5e6e0d8e1e8e5dee1 +ebf1eae7eae7e0dfe4e3e0e2e2e3e4e6eae8e6e2e2e6e9ece9d6d4d8e0e7 +e6ded5c8d4e8e5e0d6c7d8d9deeaf68965e3dbe3e1df6498eae7e9f0f286 +c2e5c2a5a4b5bbbec3bdc8bc789392c5f8e4c6dbfdf8f2eae5eaf3f9f5f4 +f3ece8e5e6edf6fdfff0eaefc1165c73719a8f003e8499aac8d0ced2cfdd +ff2320252abeffb553341f13c3fae2e2fbededebe8e4e0dfdfeae8e4e0de +dddcd6d1cacfcdd7f6d5846fa8bba9a4a69580759efbfffff4e5be8499a6 +b5aa8ba9b6d2cdd4a48973a9d3c4c7a15168e6c7d591654199d7bae27382 +86aee6d2d8ced9d3dbe0e7eaddd3d7e0e2f0be754f7391b3cad0ad8bf8ff +ffffc96a403e12291a18ffdce2e2e6661620201f2d3521244db3e6a89ba5 +99b4abc1b5abb0bdc4bcb5c4c6c8c6cacacdcfd0cfcdcbc9c8c7c6d2d0d1 +cfd1d0d3d3e3e3e2e1e0dfdedbcfcacac5c5c2c4c3bebab8b1ada5a39ea0 +99928b867f7b767375777f878d9092928e796457484a59797a603c395457 +393c45524c3ea6a4a29f9e9ea1a2a2a0a0a0a3a5a9a9a6a7a39d9ca1a6a7 +a4a6a5a19c9a9da1aaaaabadafafadabadaaa6a5a8aaababa8a9a8a8a8aa +aeb0b3b1aeadadadaba9acadaeaeafb0b0afaeadadb1b3b1a9a2a6aaaeaf +adadafb2acababaeb2b3b0acb3b3b5b6b5b4b3b4b3b2b1b2b5b8b9b9b3b1 +afb0b3b6b6b5bebab5b1b1b2b2b2b5b6b9babbbab8b7b7b7b7b9b9b7b3af +b7b2adabacaeafb1b7b6b4b4b5b8bcbeb9b9b8b7b4b2b2b2b2afadafb3b7 +babcb4b6b6b3afaeb2b6b8b6b7b8b5b0b1b6b4b6b7b5b1b1b5b8bbbdbdbe +bebebcb9b1b4babab6ada49d939e9893929d6348b6938f9985444eefcfc9 +c7c7cdd0d3d0cccbcbcccfcfd1d1d2d1cec8c5cec6c6c3decbc2c3c5d5c4 +bec1c8cfd1d0d0d1cfcfcfcfcececfceccc9c3bdb9bbc1c6cdc2b7b6bdc7 +cbccc0bebcb2c7dac4bbb9aecede6257ccb4bdcfd9627eb6bac6d3cb6fb6 +d6c0c9fbfffffaf3e3ba8a554c529fc1979bd1dbd3d4d2cfd1d3d6d2d4d4 +d7d9dcdbd9d7d5dbcde1d9ff688ad7e6fafd383249527ca1a7aab4b0badc +14162345ccea6a593b1f007ff8d6c4d3d0d0d1cfcbc9c8c9bfbfbfbfbebe +bebeb1bdbfc5a22d00000c0b060b14111e47cbf4efdddbbb918cadb4aba7 +7f6a86819caaa57a614596a1aaa3802551bf97b668620d7cb5abb1406a6b +9ac3b8c6bec7b7b8b7b7bebbb7beb9a4a3b0d0661a0000000019360890e0 +f1e7e66923344d4500a6a896addb0f1b0c2a2f252a28212550c7987c9b91 +9895929faaa49996a4b5b1b5bbc4cdd6dfe3dee2e7e9e8e3dcd8c8c7c5c3 +c1bfbfbeb1b1b1b2b3b4b5b5c4c3c2c2c2c4c6c7c1c0bfbfc0c2c5c7c7c3 +bcb4afa9a3a0a19e9a9690877f775a58525c737d7b80694b415a73716059 +9290989f9d7d7b77747373737474727070737577767374706a696e737471 +73726e69676a6e7a7b7c7e80807e7c7e7b7776797b7d7c79797979797b7f +8184827f7e7e7e7c7a7e7f808081828281807f7f8385837b7373767b7c7a +7a7c7f7978787b7f807e7b838688898887868786858485888b8c8b858381 +8285888887908c87838384848487888b8c8d8c8a898989898b8b89858187 +827d7b7b7d7e808685838384888c8e8b8a8a89868481817f7c7b7d7f8386 +88828484817d7c808486848586837e7f84808283817f7f83868a8c8f9090 +908e8d878a8d8b857a6f69606d6b686b7a44278f676475652d41edd7d8d9 +dcdededcdadcdddddcdcdcdddddedededad7e1dcdad6f1dfd8dae0f1e0da +dde3e9e6e3e2e3dddddddddcdcdbdad8d4d0c9c5c7cdd2dad0c5c4cbd5d9 +dacecccac0d5e8d2c9c7bcdcec7065dac2cbdde7708cc4c8d3ded780cae9 +cdccf3eff8ecf5fce9cdb0c4ccffffc9bce4ebe4e7eae8e5e4dfdbe1e2e1 +e0dfdfdfdfe1e7d8e5d3f55273c4d5eeff5270b5bdbac4c3bbbbb5c3e618 +172244cae868583c220085ffdfcfdedbdddedcd8d6d8d9cfcfd1d1d0d0d0 +d0c4d4dae3c250072229261b1f26212c50ccefe9d6d6b78d8bb0bcb9ba98 +86a6a0b1bdba8f7960b1bcc6bd973b64d0a6c67a762291c8c0c5547e7fad +d6cbd9d0ddd3d4c9c3c3c1c3cfd4c2c0c3d45d0200183325495f2cb0faff +f0e35b0b14272e00b9b8a2b3db0c14011f241a21221d234fc6977d9c949b +9b98a7b3b0a5a4b2c1b7b9bfc8d1dae1e5e0e4e9ebeae5dedacdccc9c8c5 +c4c3c2b5b5b7b8b9babbbbcccccacbcacdced0c9c9c7c8c8cbcdd0cdc7c0 +b8b1aca6a3a19e9a958f867c765856505c76807e846b4b3e53696350426f +686e7572494744414040414242403f3f424446474647433d3c4146474446 +45413c3a3d3f4947484a4c4c484648453f3e41434244454845454547494b +4e4c4746464644424344454546474746454444484a48403b3e4446474545 +454842413f4246474340454547484746454645444344474a4b4d49474546 +494c4c4b54504b4747484848494a4d4e4f4e4c4b4b4b4b4d4d4b47434742 +3f3d414346484e4d4948494a4c5050524f4e4b4947474643404245494c4e +47494946424145494b494a4b48434449464849474444484b4f5153545454 +52504b5054534d433d39314244454a5a2706684041554e1d3bf2e4ebeff1 +f0ebe5e3e9ebebebececededeeeeede8e5efe9e5ddf7e8e3e8f1fff5f0f3 +f8faf7f1eeede6e6e6e6e5e7e9e8e8e6e3dfdbdfe5e8eaddd2d1d8e2e6e7 +dbd9d7cde2f5dfd6d4c9e9f97d72e7cfd8eaf47d99d1d5e4faf188bfcb9f +93b5b4c0bbc6d2bfa48596a3e7ffcac5f3faeeeeeeececeef0ecf1efebe8 +e6e8edf2f9ffecf1d3ea3a3f66698cab092f7993adcacfcdcec8d2f0211c +2849cfed6d5d41290b91fff0e1f0edeeefede9e7e8e9dededfdfdededede +d3e4edfde9885584a1aba8a6a2908d9ffffffff7edc89b93b5bfbcc09f91 +b3b4ceded9ac9175c4cdd4caa54975e2b9d6867d2794ccc1c6537f80b1dc +d2e0dae8dfe2dfdde0d9d1d6cfbabed1f996505280a6a2c7d38aedfffff5 +ee6c212c3e4212cac7b0bfe5151b0725281e24241e285dd8a98faea5aca9 +a6b4c2beb3b1bfd1cdd2dae1ecf3fafef9fdfffffffef5f1e3e2e2dededa +dcdbcececfd0d1d2d3d1d9d5d5d4d5d6d9d9d4d2d2d1d3d4d8d9d9d2cbc3 +bdb5afaca9a6a29d978e857e63615b667d8783876a49394d605843305344 +44453fa5a3a2a09f9fa1a1a2a1a1a2a4a6a8a7a4a6a39f9fa4a7a6a4a6a6 +a19b9aa0a5abaaabadafafadaba9a6a4a5a9aba9a7a9a9a8a8aaacaeafb2 +b0aeaeaeaeacaaadb0b0adadb0b0aeb1aeadb0b4b1a89fa8abafafadadaf +b2aaaaacafb2b2afacb4b3b5b6b6b5b3b3b0afaeb0b3b6b6b6b3b0aeb1b5 +b8b8b6b6b2adabadb1b4b6b7b7b8b9b9b9b9b9b7b7b8babbb9b4b1b7b1ad +adaeadaeb1b5b5b4b4b6babfc1b5b7b9b9b7b6b8b9b3afaeb2b7b7b9bbb8 +babab6b1b1b6bcb7b6b7b8b4b0b2b9b6b7b8b5b1b2b7bbbbbfbfbdbdbebc +b7b0b3babab4aba29d99a29b96959f6448b490919a81524bf8d1cac6c7cc +d0d3d0cbc9cacbccced0cfcce4c3c5d5d6cdd2c7d4c1c5d7c8c0c3c4c7c6 +c2c6d1d2ccced0d0cfcfcfcfcfcfd1cfc9bfb9b8bacac9c6bfb9b9bfc6c8 +bda38194c0c8cfcbb0c3ce6478dcc1b5bcbf6193c7beb8c6ba79c6d7c4d3 +fffffff5ead18d61524d82a29498c0dbd6d8d6d3d0d0d2d8d8d3d3d8dbdf +dfdedbd1cfd6dbd6fba05fc3e1f2ff6e364f577da3aba9b3b0aec61d0719 +223b402a5f3922096decc6d5d3d0d1d1cfcccbcbcac3c5c5c5c3c2c2c2d5 +c2c97f00002300230a0e050047b7eae4d6daceaeb0bdaeafa8a4ae72728f +9c9fa39a6c683d9ea2968f770f67bda0b5435a038da8a2a2606363a3babb +c2b7b7b9bbc7ceccc7beb59fa6bea1add8ce4f00000517003c2340c7ebf1 +fe9e2c1e320b54b19fa749031e2d241a1f2b2824292b7caf8888918fa5a4 +9b9499a6aba8a1b0b0b2afafaca8a6b3b2b4b5b6b6b7b7c3c2c1c0c0bfc0 +bfc6c4c2bfbdb9b9b7b6b5b4b3b3b3b3b3bcbdc0c5ccd5dde2e1ddd3c9c0 +b7afaaa39b91857a7067606b7a838a8a75574d414f748d7754618ea79594 +a3a47c7a77757474737374737172747676757173706c6c7174737173736e +68676d727b7b7c7e80807e7c7a7775767a7c7b787a7979797b7d7f808381 +7f7f7f7f7d7b7f82827f7f82828083807f8286837a7075777c7c7a7a7c7f +7777797c7f7f7d7c8486888989888686838281838689898985828083878a +8a8888847f7d7f83868889898a8b8b8b8b8b89898a8c8d8b868387817d7d +7d7c7d8084848383858a8f9187888b8b89888788807c7c80838385878688 +88847f7f848a85848586827e8087828384817f8085898a8e918f8f908e8b +868b8d8b83786d6765716e6b6e7c45278c666676613b3df6d9d9dbdcddde +dcdbdcdcdcdddcdbdcdcd9f4d3d7e8ece3e8dbe8d7dff3e8e4e8e9ebe6de +dfe6e5dddedddddddddddbdbdbdddcd6ccc6c5c7d7d7d4cdc7c7cdd4d6cb +b18fa2ced6ddd9bed1dc7286eacfc3cacd6fa1d5ccc3cabf81d2e3ccd0f6 +f5fbeaf2f5cdb9bcc3f3ffdbc6deece0e2e4e6e4e2e2e4e6e7e7e5e4e1e1 +e1e2dee0e8e8daf7934eb6d5e6ff836fb5beb7c5c3b9b8b2bad222081a22 +3b402a5f3a250d73f6d2e0dedcdddddddad9d9dbd4d6d7d7d5d5d4d5e6d6 +df981b18441d402523160952beecdeced2c9adb2c3b6bcb6b5c08485a2ae +b0b7ae828157b8bcb0a78a2077caabc0516b119eb9b4b4727575b4cbccd2 +c7c8ced0d3d6d2cfcccabcc5dcb8b7d3bb46191b2b3d25624966e9fffffe +8f0f00170f67c1a8ab47001521180e1321201f272b80b38c8c9593a9aaa1 +9ba2aeb6b3acbbbbbabab7b4b0aebababbbcbdbdbebec8c7c6c5c5c4c5c6 +cbcac8c7c3c1bfbebdbdbcbbbbbbbbbbc4c5c8cdd4dde5eae7e0d6ccc2b9 +b1aca29a8f83766c635e697a868f917d5f53454e6b7e633941697e6a6875 +75484644424141414142414041434545444446433f3f444746444646413b +3a40434a47484a4c4c484644413d3e42444040464845454749494a4d4b47 +47474745434447474444474745484544474b483f38404547474545454840 +4040434646423e46454748484745454241404245484848494644474b4e4e +4c4c48434143474a4c4b4b4c4d4d4d4d4d4b4b4c4e4f4d484547413f3f43 +4245484c4c49484a4c4f534c5050504e4d4d4e4743414549494b4d4b4d4d +494444494f4a494a4b4743454c48494a4744454a4e4f5355535354524e4c +5054534b413938364647484d5e2908683e43564a2d3afbe6ecf0efede9e3 +e1e6eaeaebebebecece9ffe2e5f6f9f0f3e6f3e5eefffdfcfffffffff4f5 +f9f6ededededeaeaeae9e9e9edede7ddd7d8d8e7e4e1dad4d4dae1e3d8be +9cafdbe3eae6cbdee97f93f7dcd0d7da7caee2d9d9efdf8cc4bb918bafb6 +c4bdcbd1aa9196a1d7eacdc3e0f4eaecededebeceff2f3f2f0eeededeef2 +f5f1f2f6f0dbee8323586584ae382b768fa8c7cfc9ccc7cade280c1e243d +402c613e2a167fffe2f2f0ecebebeae7e6e6e5dee0e1e1dfdcdee4fffbff +d16372af94c2a8a2886ba4ffffffe5e9ddbdc1cfc1c5c1bfcc9294b1c2ca +d2c7999568c7c9bdb3983087ddbfd25e751aa5c0b8b8767979bbd3d6dfd6 +d8e1e5ebedeae2d7cdb8c0dcc0d0fbf2855c6d98bcacdfaaa7ffffffffa4 +2b19382878d1b7b752051a251a1013201e1c28338bbe9898a19fb5b8afab +b3c1c8c5c0cfcfcfceccc9c3c1cdcdcecfd0d0d0d0dcdbdad9d9d8d9d9e1 +e0dedcd9d6d5d1cdcac9c8c8c8c8c8d1d2d5dae1eaf2f7f5efe5dbd1c6c0 +b9b0a89d91857b726b74848f9597806153444a66775c30365760403b433d +a3a3a3a1a09fa0a0a1a1a2a3a6a7a7a6a3a6a5a3a4a8a8a5a6a8a8a39d9d +a4aaa9a8a9abadadaaa8a6a4a4a7acadaaa6a9a9a8a9abadaeafb2afacaa +abadadadaeb1b1adacb0b1adb0afb0b2b2aea7a1a9adb0b0adacaeb1a9ab +adb1b3b3b0adb7b5b6b7b7b7b5b3b0afafb1b4b7b7b6b3b0aeb1b7bab9b6 +b3b0adacafb3b5b6b9b9b8b7b8b9babbb9babbbcbcb9b4b0b8b1aeb0b1ae +aeb1b4b5b6b8babbbcbdb6b9bbb9b6b4b7b8b4b0b0b6bab8b8bab6bbbdba +b4b3b7bdb6b6b7b8b4b0b4bbbabbbab7b4b5bbc0bbc0c0bdbcbebbb5b2b4 +b8b5afa7a29fa3a49b9d92915f58ad989695824c4efcd2cac6c7ccd0d3d1 +cac7cacbcccdcfcfdadac0dfc6d0edbfccc3cdc6c38c477bbfb08f798cb6 +ccc7cfcfd0d0d1d0d0d0d2d3d4d1cbc4bcb9b8c0c9cbc6bcb3afc5d0d3b8 +b2bab3bec6bfc1c0748dcfccc1b5a6539ad5ccbeb5a571bdced9efffffff +f6e3a764515272a39477a3ccced4dcdbd9d9dad9dcdccaccd1d6dadbdad6 +d1d0d0d4e2ebd348aedeeffead41535a7ea9b0adb9b8b0bd15102923111b +1b1716110b64eddbdbcad5d4d2d1d0cdcccbcdcecdcac7c7c9ccdcaf3b00 +0c1301100005023cb4ebe4eadfdcc2aba89c96a5a69fa9b0557496bab4a0 +95416654aaa3a8917f159cbeabb444611fb2b2a69e5f8476b3a7b0b8c3cd +d1c6c6c5b7bac1b7b6a6a3b17552455b460c00000b1f3b3831b5e6effcd4 +3e240022aed1d110292414212a23203038282c56ac858491949a989fa7a6 +a1a1acb5a5acbac8d7e2e8ebe0d8d0c6c0bfc1c4bab9b9b9babbbcbcbdbd +bebec2c2c5c6bebebdbcbab8b6b4b4b2afaba8a6a4a5a9a7a5a3a5a5a4a2 +959493959b9fa2a29399896d5542414f797d7767617397b3ac9a9aa6a67a +7a78767574727273737273767775746e71706e6f7373707173736e68686f +7779797a7c7e7e7b79777575787e7f7c777a79797a7c7e7f8083807d7b7c +7e7e7e8083837f7e82837f828182848480797276797d7d7a797b7e76787a +7e80807e7d8788898a8a8a888683828284878a8a8985828083898c8b8885 +827f7e818587888b8b8a898a8b8c8d8b8c8d8e8e8b868288817e80807d7d +8083848587898b8c8d888a8c8a88868687817d7e848684848684898b8882 +81858b84848586827e8289868786838283898e8a8f928f8e908d89888c8b +867e746d6a6f716e726e704139856e6b70633643fbdcdbdbdcdededddadd +dddedddcdddddde8ead0f1dae6ffd5dfd8e6e2e5b170a7ebd9b498a6ccde +d7dededcdddcdbdcdcdedfe0ddd9d2ccc9c8d0d9dbd6ccc3bfd5e0e3c8c2 +cac3ced6cfd1d0849ddfdcd1c5b663aae5dcc8b2a071c1d6dce8f8fbf6ee +f2d8b3bec8deffe8bed6f1e6e2e5e1e1e2e6e9ecf0e5e5e2e0dddddddfe1 +e6e7e8eeedcf40a7d6e3fabd74b8c0b7c9c7b9bbbabbcb1c142d25131d1d +1b1a16126df9e8e8d7e1e1dfdedddcdbdadee0e0dddadbdedfebbd4a0622 +2e1e2d1920194ebef2e7e8dbd8c1b1b4aba8babbb4babd5c7795bcc0b2a7 +557d6bc3babea58f22a4c4afb84a6a26bbbbb0a8698e7fbfb2bbc3ced4d0 +c5cbcfc6ced6ccc8b7b2bf8362556b551a04162641646560e2ffffffc41e +0c0033bbdad50e221905131c1816283024305eb48c8b98989e9ca5acada7 +a9b3c0b5becbdae8f3f9fceee9ded4cfced0d1c2c1c1c1c2c3c4c6c5c7c8 +cacbcececfc7c7c6c5c3c1bfbdbdbbb8b4b1afadacaeacaaa8a8a8a5a393 +929092969a9d9f959e907660504d5a7e7a6a53424a68827b6b6a74744646 +45434241404041414142454644434245444243474744454747423c3c4348 +484546484a4a45433f3d3d404344413f46484546484a494a4d4a45434446 +464645484844434748444746474949453e3a41474848454444473f414145 +4747433f49474849494947454241414346494948494644474d504f4c4946 +434245494b4c4d4d4c4b4c4d4e4f4d4e4f50504d48444841404246434548 +4b4c4b4c4e4d4c4f4d5254524d4b4c4d484443494c4a4a4c494e504d4746 +4a5049494a4b4743474e4c4d4c4947484e534f5456535254514c4e51524e +463d39384046474f4e51251a614849534e283fffe8edeeefece7dfdfe4e8 +e9e9e9eaeaeaf5f7ddfde5f1ffe2eee9faf7fecb8cc4fff7d1b4c1e4f6ee +f5f3f2f0eeedeceaecedeeebe6ddd9d6d5dde6e8e3d9d0cce2edf0d5cfd7 +d0dbe5dee0df93aceeebe0d4c572b9f4ebe1dfc87db0a5979aabb8c1c7d1 +ba9397a6c7f5d9b0cdeae6e5eeedeef1f4f6f9f9eceaeaeaececf0f0f0f1 +ede9ece8c61b4c6781a37231768ea4c8cfc9d0cfcdd622152e24121a1c1a +1b191876fff8f9e7ede9e7e6e5e3e2e1e5e4e4e1dedce1eefffc9b6899b3 +aab99b93799af9ffffffece6cfc1c4bebccfd0c7ced06e88a5cbcebeb35e +8573cac2c9b09e33bbdecad3607b38cacabcb4759a8ecfc4cfd7e4eef0e4 +e1dbcdcfd9d1d4c7c9d99e7c6e826c414e80b1d8f2dcaeffffffffde5040 +1c47ceebe119291d08121b1614252d213161b79291a0a1a9a8b5bfc0bdc0 +cdd6c4c8d5e4f2fdfffff7f1e7ddd6d5d7d9cdcccccccdced1d2d2d3d4d6 +dadcddded8d8d7d6d4d2d0cececcc9c5c2c0bebec1bfbdbbbbbbbab7a8a7 +a5a7acb0b3b2a1a4967b64514d567a75644c3d4460735b3f3a3f39a3a3a3 +a3a1a0a09fa1a1a2a5a7a7a5a5a1a4a6a5a7a9a9a3a6a7a8a29d9da6ada7 +a6a7a8aaaaa8a6a6a5a6abb0b1ada7aaa9a8a9abadaeaeb3aea9a6a7abae +b0aeb2b1acacb0b1adadb1b4b4b0aaa5a5aaaeb1b0adacaeb0aaacafb1b4 +b3b2afb7b7b7b8b9b9b6b4b3b2b2b4b8babab9b3b0afb2b8bcbab7b6b4b2 +b2b4b5b5b4bab9b7b6b7b9bbbdbcbcbdbebdb9b3b0b8b2afb3b4b0afb2b6 +b8bbbdbdbab7b4babcbcb9b3aeafb0b5b0b1b9bcb8b7b9b2b8bdbbb5b2b5 +bab5b5b7b8b4b0b5bdbdbdbdb9b6b7bdc2babfc1bdbcbebbb5b8b8b7b1ab +a3a1a19f98939f91855f71a49f94897d334cf4d1cbc6c6cbd0d3d1cbc8ca +cccdd0d0d0d2c4d0cc142de6d9e7d6dc80695b208bc6a2643f61aedde2c7 +cacbcccdcecfd0d3d0ced0d1cfcbc5b9b8bac3ccc9bbaeacb6c7c5c8c3af +b6c3e3e2d599a2c7ddefe9d675a8def0faffda8fbdc0e0fefffffff4d87a +424d4e89998991bccecddde3dfdcdcdbd5cdc6cecfd5d9dcdddcd8d4dbbc +cfe0dfea46a2deeaf0d345525677a6aea6b1b4adb32a181d28211824361d +2c0c4ae1dccad6cfcecfd1d4d7d7d5cdcfcecccdd2d8dc56090011120f16 +0f042886ddedd9d0d0c0b2b1b8b2a8a19ea6a7b4af498898b2b39e9a124f +63b0a0a9756206aeaeadc02c4c2bbcb1ab9f40625cb3a4b7b4bfc3d4c8d1 +d3bcbec4aeadb6bfca2f23223f7a5e0c0c01040f48563294e3edfefb6614 +0533685f2c171a2a1c252e24222b241e68a67f8e859e9097999da5aeb9bf +c2d8d7d6d3cbc2b9b5bcc1c7cbcececbc8d2cfcdc9c6c2c0beb7b6b6b4b4 +b4b4b4babbbec0c2c2c2bfbebfc1c3c4c3c4c3c8c6c1bdbbb6b2b0b6b4b1 +b0aca8a19c898573656a7179877a6f636a89a8aea3a59ea1a6a277777777 +7575727173737275777775736e717172727674707174736f686a717a7777 +78797b7b79777776777c81827e787b7a797a7c7e7f7f847f7a77787c7f81 +7f84827e7d82827f7e838586817c7674777b7e7d7a797b7d77797c808182 +807f8a8a8a8b8c8c8987868585878b8d8d8c858281848a8e8c8988868484 +868787868c8c8a898a8c8e908f8f90918f8b858088827f83837f7e818587 +8a8c8d8a87848c8e8e8b85807e7f837e7f878a86838780868b8983808388 +83838586827e838b8989898784868c918c91938f8e908d878a8c89827971 +6d6d6b6567756d66435379726966612142f5dddcdbdbdddddcdcdededede +dddddddde2d5e5e32f4cfff9fff3ffaa968b4cb3eac5865f81cbf9fbe0df +dfdedededddce0dddbdcdfdfdbd7cbcaccd5dcd9cbbebcc6d7d5d8d5bfc6 +d0efeee3a7b3d8f0fffbe783b1e6f3f8f9d28ab9c4e3f8f6fcedf4f7c4ac +d1d1eeecd5d0eef1e3e8e6dedbdfe4e5e3e1ebeae7e5e3e3e3e6e7f3d5e4 +eee5e63d96d0ddede075b5bcb2c6c2b2b7bab9c0311e212c251c263b2132 +1655f0eddce8e0e0dedfe2e3e3e1dcdedfdfe1e5eef36b1e0a2525242b23 +1a3c95eaf6ded2d0c0b6b9c4c3bdbab7bfbdc4bc4e8794b2c0b1ad276377 +c7b7bd877213b9b5b3c6345733c4bab4a84c6e69c0b1c3bfc9c7cec1d4dd +ced2d7bfb8bdc4d13d363d538060121a172235768b66c2fffdfce8500c04 +31675d2711101e0e1723191922212472ae87938aa192999ba0a8b3bec5ca +e5e6e5e1d9cec2bbc1c4caced1d1d0ced6d4d2cecbc9c7c7c0c0c0c1c0c0 +c0c0c3c4c6c8cacacacac9cacccecfd0cfced0cdc8c4c0bbb7b2b9b5b2ae +aaa59e9b8d8c7a6f747b828c7765514e647a7b6f736b6f736f4646464644 +42413f41414144464644423f42454346474841454547403c3b454b464344 +4547474341413e4144494a464047464546484a49494e49423f4044474947 +494a4345474a4446484d4b49413e3c424649484542444640404346484745 +414949494a4b4b4846454444464a4c4c4b474443464c50504d4c4a48484a +4b4b4a4e4b4948494b4d4f4e4e4f50514d474248424145484544474b4d50 +514f4c474650535350494443444843444a4f49494c454b504e4845484d48 +484a4b474348504f4f4f4c494b5156505557535254514b4c4f4e4c463e3b +3b3b363a4d4b4a2d39564b46484b1340fae9eeeeecebe6e1e0e5e9e9ecec +edededf1e5f6f54261ffffffffffd0bfb371d6ffe5a985a8f3fffffffcfa +f6f2eeeae8e9e6e4e8eaece8e3d9d6d8e1e9e6d8cbc9d3e4e2e5e1ccd5e0 +fffceeb0bbe0f7fffff18ec0f3ffffffea879c8996a4a8bcbbd0d8a388aa +afdce2c9c5e3eae1ecefecedf2f5f2eeeaf3f3f3f3f3f3f3f3f5fddae7ef +e5e5204465758c8e2b748c9ec5cbc2cdd0c9c9371e222d261b2537203017 +59f7f7eaf4e7e4e5e8edf1efede3e5e6e6eaf3fcffac7775a0b0b5baa689 +93d6fffff1dfdacabfc4d0d3d0cecdd5d2dbcf6197a3bec8b7b42c6a7ecd +bfc6938126cfcfcde04b6b46d7cbc5b95a7e79d1c4d9d5e2e4f0e0e7e7d0 +d1dbc7cad7e2ee5747485c8c77426584a6c4fdf5b1e6ffffffff81332349 +79682e13111e0d162117141d1c2473b18a9990aa9ea6aab1bbc7d4dbddee +ebe8e4dacebfb7babbc1c5c8c8c9cad7d8d6d2cfcfcfcec9c9cacacccece +ced4d5d9dbdddddddcdddee0e2e3e3e5e2e3e0dbd7d4cfcbc7ccc9c6c3bf +b8b3ab98948071757a7d856e5b4340546a68574e3e3e3e36a3a3a2a1a1a0 +9f9f9b9ca0a5a9aba9a8a1a2a4a1a3a2a8a9aba7a6a1a2a1a6a5a7a8aaac +acacabaaa7a6a6abb1b2aea9a8aaababafb4b1abacaeafafaeadaeb0b5b0 +b0b5b5b0adaeaeb0b5b9b6ada8a8a7afa8a2abb1aeafaeaeb2b1aea7aeb7 +b3b4b7b9b9b6b0aba9b0b7bbb9b7b6b7b0b1b3b5b8bbbebfbeb9b4b2b2b4 +b6b6b7b7b7b8b8b9bababab9bdbfbbb4b1b3b9b8b7b4b1b0b1b3b2b7bcbc +b8b7babec1c0bebdbcb9b5b2b1b5b9bbbab8b8b7b0b8bbb5b0b1b6b8c0be +b6afafb5b8b7bebfbfbab4b5bac0c3bfbbbcbdbeb9b5bbbabab9b0a49d9d +9ba89e8b968e316b9c9997957d354fdfd4c7c8cdc9ccd4cfc9d6c3d0bfd9 +d3d1d6c9cbc60b3b970010100a000f8d18d4d6c6ceb67c464571b1d7bed5 +dbc7c3d2d1d5d0cedac9d7cbc5c7b0b2b2cbc5c6b9acaebbbccad1abaec6 +03009582004397000089422393ab143a8cafebede9ffffff76473a442761 +7e8b61cdc8cfd7dae0e7e3dbd8d8c8d5d2d3cfd2d9cce0c5c4cfd7cbe4eb +fd5f9cd9ebf0e856425d7ba6a2b1adb0a3af42081b301b1c2c341d0f352f +e7c9dac4c4dbcad2d0cad9dbd4d6d5cad7eba92500020f040c1b101973de +e7edd4b3c2b6a3b7acb3b1b8a696acb6b2c5318fa1a7a5cc7134726bb39d +af60530bb8b99cb7004332beacae85046c63b2a0a6a8b4b7c7c0cdd4c7c3 +c5b9c19095aa71231e3d75771d081100000f5a603090e9eff9ff8e272d33 +593321171e1a1a1f242628282b669b7f8b9495879ba5b7c9c9b28c704230 +1911163596939da1abb7b7b4bbc4bebfc4c5c6c7cacbc8c6c5c3c1bcb7b4 +b8bab8b5b0b0b3b4b4b5b6b8bdc4cfd6e9e7ded1c5bab4b4b3b2aba19b9b +948a8389909392887e7a657788929ca7a8a6b0a8a2a4a674747372727270 +716d6e72777b7d7b787172717170727579787773716f71737578797b7d7d +7d7c7b7877777c82837f7a797b7c7c8085827c7d7f80807f7e7f81837f7e +84837f7b7d7c7f8388847c7677747a736d787e7b7c7d7d81837d797d8986 +878a8c8c89837e7c838a8e8c8a898a838486888b8e9091908b8684848688 +888b8c8c8d8e8f8e8e8e8c8e8f8b84818389888784817f808281868b8c88 +878a8e91908e8d8c8985828185898b8a8886857e8689837e7f84868e8c84 +7d7d8386858c8d8d8a86878e9497938f8e8f8e89838988888780736d6d6a +797163746f194e70686d7467294be6e2d8dbe0d9d8dcdcddecd6e1cce4de +dee5dee5e83367c62c3539412250c742f2e9d7e6d6a47376a1dcfde1f5f6 +ddd6e1dfe0dadae7d8e7ddd8dac3c5c4ddd7d8cbbec0cdcedde3bbb4cb09 +04a193075ab0070e924018819a0b347ea5ebf1ebfffef4847ea6d3c8f6e4 +d5a3ffece7e2dddce3e0dee4ece3f1ebe9e2e2e7daf1d9dce7edddecebf6 +4e81c0dff1f481a4c6b9c9b6c0bdbfafb8470b1c301b1d2c3622164040fb +e1f3dfdef5e1e5ded3e0e3dce2e2dbeaffbf420b2c3522232a1a1f77e1ea +f0dbbac9bfadc5bac4c3cbb9a9bfc9c3d53e9baab3b7e0844a8881c9b3c5 +73661ec9caadc80d5845cfb9bc9516827bcab7b9b9c0bfccc5d4ddd1d0d1 +c3c8979aaf782c2a467a7c24152610223888925eb8fffbf6f76f030f1d4c +2b1c1216100e13181b1d232f6fa2838e97958799a3b7c9cbb4907445311a +11132f897f84848d999d9da7b7b5bbc0c4c4c7cbcecccccfcfccc9c3c1c4 +c3c1bebbbbbec1c3c4c6c8cdd6dfe6f8f4ebded1c6c0bebbbab4a8a2a098 +8e878d939692877a7156636f74797d7d777d746e70724646454444414240 +3c3d4146494b494740414240414146484946444040404444444547494949 +4847444143464c4d4944434546464a4f4c4647494a4a4948494b4e47494c +4e47464547474e504f44413f3f443d374147444343434747423d424b4544 +47494946403b3940474b49474647424345474a4d5253524d4a48484a4c4a +4a4847484647474747484a4d4b4443454b4a494643444547464b504e4a49 +4c505352504f4e4b474443474b4b4c48494841494c4641424749514f4740 +404649484f50504c48494f555854505051504b4444434d5452483f3c3241 +3a32515a0f404d3d4755501d4aecefe8ecf1e8e4e7e4e6f7e4f1dff8f2f1 +faf3feff5794fa626a71826794ff72fffff5ffffdfb4bbe1ffffffffffea +dde6e2e4e3e6f7ebfef1e9e8d1d3d0e9e3e4d7cacedbdcebf1cbcadf170b +a18d0052ac0512994d268fa40c266174a39d97bac6cc635f82a89ed0cec6 +97f8e8e7e8e6eaf2f1eff2f7ecfcfffef3f2f4e5fbe4e8f3fae9f7f3fd3c +3e5c697a9031679daacbc1d3d4d4bdbf4d10213823222e331c0e383af9e3 +fae6ddf4e9f6f8f0fcfaeff0f2effffff0866da2b2a4a7ab8d7fc0ffffff +e5c2d1c8b7cec5cecfd9c8b8ced8d3e54ea9b9c1c3eb9255958ed6c0d281 +752ddbdcbfda1e6954dfc9c9a2208d85d6c5c8cbd6d6e2d9e6ecdbd9ddcf +d8a9aec38a3b3657979c4037555786aeffffb3f3ffffffff9b3131325529 +180c141110151819171d3276aa8c97a09f91a6b0c3d5d7c09b7d4a351c0f +0e237866656269757c7e8ea4acb8bdc2c5c9d0d5d7d8dbdfdedcd9d4d4d2 +d2cfcdcdd2d4d8d9dddfe6eef9fdfffffbeedfd4cccac6c5bdb2aaa6a197 +92989c9b92836f62434a51525355524b50453e3e40a2a2a2a1a09f9d9c9d +9fa2a5a8a7a4a19ea0a2a3a2a2a3a5aaa8a5a3a2a4a6a7a4a6a7a9a9a9a8 +a7a6a5a7acb1b2ada7a8abababafb3b1abadadacacadaeaeafb5b1b0b3b2 +adacb0b3b1b1b2afa9a9ada9b0aba6afb3afb0abacaeb0adaab0bbb5b6b7 +b8b9b6b1adaaafb5b9babab9b9b2b3b4b5b7b9bbbcb9b5b2b1b3b7babbb7 +b7b7b8b8b9bababcbabdbebbb4b3b6b7b7b6b3b1b0b2b4b6b8bbbab8b8ba +bdbbbababbbdbcbab8b3b6babcbbb9b8b8b3b8bab5b1b4b7b8babab7b3b5 +bbbcb9bbbdbbb6b3b3b7bec0bdbcbcc1c0bcb7bebdbab9afa39d9c999a9f +9a987f41639ca796976f424dd3d5c8c8cec9cdd3cfc6bdcdd4d7cad2d2cd +c1cfc10560b456b446a48355a500c3d0e9c5c70c102e0022a8c68a7ad0d4 +cdd0d7d3ccd6cecbbfd0d2c9a7cab2bccddabeb5afaeb0a9b0ccb2083598 +990f2e170008c24e0c4d180b32b5d1dcf9fffffec4303b3c313f4d7d5f54 +d2d0d2dde4d2f6dadfcbe6d7d4dae4cfe0d1cad1d2decccddde3a8ee788d +d3e5edf56b445a86b0c1a89eaeb7a04a0c1b270a0c160e18231305f0d1cb +c2d6bed4c4e5d2e6bfcbd9d3e6e062000014000011130051c4f2e0d6cb8e +9eccbfb3a397abb3bbbbb7a6a8b7af5d9189cab6da77466a8bcbcbe14c4e +32c2afcec3174236d7aada89095979a79d9fa2a9acb2beccc9c7d3bb831e +5f5944400201414f7a2b03170f07000e5f7d3096e2edffffad4c5a5e3611 +24162321191e2526252889878a797ca7afbcd7b95810070a00050304060c +26b9a4a6a6a4a49f9a989892959fa6acb2b8bcbcbfc3c7cacaccccc9c8c4 +bcb7b4b5b6b0aea9a49e9ea1a49d9e9f9d9c9b9c9d999b99969a9e9c97a3 +9e958d85807d7e85919a9b9fa5a8a6ada5a0a1a37373737271706e6d6f71 +74777a7976736e707273727273757a787573727476777577787a7a7a7978 +7776787d82837e78797c7c7c8084827c7e7e7d7d7e7f7f80837f7e81807b +7a7e817f7f807d77777b747b76717c807c7d7a7b80827f7c828e88898a8b +8c8984807d82888c8d8d8c8c858687888a8c8e8f8b87848385898c8d8c8c +8d8e8e8f8e8e908e8e8f8b848184878786838180828486888b8a88888a8d +8b8a8a8b8d8c8a8883868a8c8b898888818688837f828586888885818389 +8a87898b8b8885878e959794909091908a848a88888780736e6e6a6c7575 +77642c4870766c765a384ddce3d9dbdfd9d9dddbdad3e0e4e2d2d8dddcd5 +ede73394ef8fe479e7cea0e520dbdcf3d9e63844672d53d4f0ae98eae8dc +dee2ded9e3dddbd1e3e5dcbbdcc4cedfecd0c7c1c1c3bcc0d4b70c3a9ea3 +1c3f2a0916c94b003704032ca7c5ddfdffffedbf528bbfd1e4dddca28eff +eee4e4e4cef2d9e5d9faf2f0f0f6e0f0dfdbe4e9f4e2e0eae7a5e36269b2 +daf0fe95a6c2c6d3d4b7b3c3c4a94f101b27080b150e1a2a1e16ffe9e6dd +f2d7ead6f3deedc7d6e5e3f8f47708143e2a232f290656c3efdbd3cb92a5 +d6ccc4b5a9bdc5cdcdc9b8bac7bf6da199dcc9ed8a597d9ededef45f6145 +d5c2e1d9315c4ce9baeb9b1d7496c4b9b6b5b6b7bac7d5d2d0dac28a2465 +5f4744060546527f300c2322211b378dac5ab7f9f9fbe882273d4928071b +0b18160d121a1b202b908b8c797aa5acb9d4b6570f070b00030000000216 +a1837c7874767475787d7d848e969ea5adb2b6bbc1c6caccced0cdccc8c3 +bdbcbdbfbcb9b6b1adadb0b3aaabaaa9a5a5a6a7a2a2a09d9fa3a19aa49d +93877c736d696d747a797a7e7d797b716c6d6f474747464342403f3e4043 +46484744413d3f4142414142444947444241434546414344464646454443 +4244494e4f4a44434646464a4e4c46484847474849494a4e4a494c4b4645 +494c4a4a4b484242463e45403b45494344404144464340444d4746474849 +46413d3a3f45494a4a494942434445494b4d4e4d494847494d504f484745 +464445434347454a4b4b4444474949484543424446484a4d4c4a4a4c4f4b +4a4a4b4d4c4a4843464a4c4b49484844494b46424548494b4b4844464c4d +4a4c4e4d4a47484e555754515153524d4341424d56564b443d3230394156 +51293f4d4b4657452e4be3f0e9ecefe9e7e9e7e5e0eff4f6e7eef1f1edff +ff64ceffd4ffbbfffff3ff53fff6fffeff778db4748bffffceb0f9f1e1e1 +e6e4e2f3f2f4e9f4f3eac6e8d0daebf8dcd5cfcfd1cbd0e9ca183e9a9a12 +35240717cf540a4305000878898fa8b4bab999316895a5b9b9c49182f8ee +e8eef0ddffe9f3e6fffbfcfffff4ffeae3ebf1ffefeffaf3b0eb542f535e +6f9341699db8d7e2cac8d6cdae5313232f13131b101522160effebefe6f6 +dcf7eafff8ffdceafbfdffffba5876b7aca4ab996aa8fffffbe6d79baddf +d5cebfb3c7cfd7d9d5c4c6d6ce7cb0a8ead7fb98678bacececff6d6f53e3 +d0efe63e695af7c7f5a5267b9cccc4c4c4c9cbcdd8e6e3dfead29a32736d +5650121159719d431b394a6b7dadffffb0edffffffffb048515028061c0f +1e1c111218171d309a96988587b0b7c4dfbf5f170f100508020000000687 +6052474345474b526068747e87939ca7b0b6bcc6ccd4d8dbdcd8d7d3cdc9 +c9cacecccbc7c4c2c2c5c8bbbbbcb9b4b1b2b1abaaa8a3a3a7a59fa9a396 +87776a5d545152514b4647464248413c3d3fa1a1a1a1a09d9b9a9d9fa2a6 +a8a6a29e9c9fa3a4a3a2a1a2a5a4a1a09fa1a3a4a4a5a6a7a8a7a6a5a5a5 +a8adb1b0aba5a8abacacaeb2b0abafaba8a9acafaeadb4b2b1b0aca9abb1 +b1afafb0ada8a8ababb2aeabb3b4afb1abacaeafadabb1bab7b6b6b6b7b5 +b2afb1b2b4b8babbb9b7b3b4b4b5b6b7b8b9b7b4b1b1b4b8bbbcb7b7b8b8 +b8b8bababdbbbdbdbab4b5b9b5b5b5b3b1b1b3b5bbbab9b8b8b9bbbcbab9 +b9babcbcbbb9b5b8bbbcbbb9b9b9b7b9b8b4b4b8b9b8b8babab8babebcb8 +b9b9b8b4b2b3b7bdbebdbdbfc4c2beb9bebbbab6aea19d9e9f919da19665 +546499af9594614f51c8d7c9c8cdcacdd4cfe0bfc5c8d5d7dbd7e1cfcba6 +00655b009c004c0c008300dad9d0c0c72158d4d50002190055d7d5d0ccdc +dfcdc8d1d4e7cfc7d4d7bbb0b5b0c8cfd5b9b0b3a2afb375113a4f4e2733 +0d1f22ba4a1456272458cce0e6ffffffe780294d52455e5a802c4ed9d1cb +d6dee3dce6e2dad7b38983bed8d9edcfd0dac5e1c0978f84a16b7fcbe2e6 +fa854b5e59274876a9bfb87a3f25280c1c8a9a3a1729180ee8bfc5d7cfc9 +d9bbd2c7d7d3dfcbdea6180013130e0813051f86f5d1e5ccb1afb7c1a7c2 +c9aba9a9a3aab8b1b81900004eae7ba00500054f6189a2000035614dbc58 +0f21205165d54c3713235184a2a09da2a1a8abb5bcb6bcd3c89d0b476878 +30070c5004514d13180f04000013536e2f98eaefffffb889402d2b211729 +2115212621235a94828a7eb4acaa7c2903011204000f0f0a1211100fb5a1 +afb0aca3a1a4a09ca0a1a2a19e999795a2a7adb3b5bac0c2c3c7d0d6d7d3 +cfcccfcec9c5c1c1c2c5c4c5c4c1beb9b7b6b4b5b2aeaeafacaaa69f9388 +84878d93a0a5a7a4a2a5aaaaaca5a0a0a072727272716e6c6b6f7174787a +7874706c6f737473727172757471706f7173747576777879787776767679 +7e82817c76797c7d7d7f83817c807c797a7d807f7e82807f7e7a77797f7f +7d7d7e7b767679767d797680817c7e7a7b80817f7d838d8a8989898a8885 +828485878b8d8e8c8a86878788898a8b8c89868383868a8d8e8c8c8e8e8e +8e8e8e918f8e8e8a84838785858583818183858b8a898888898b8c8a8989 +8a8c8c8b8985888b8c8b898989858786828286878686888886888c8a8687 +87878684878e949594919393918c878b8a89887e746e707064747d794e44 +4d6e806d754c4551d1e5dadbdedad9dedbf4d5d6d5dddee0deece1e6cc20 +9d9a2dcf36945a48c62bf4e5dbd3e44a8affff202b3f1972efe8ded9e7e9 +dad6e1e5f8e1d9e6e9ccc1c6c1d8dfe7cbc3c6b5c2c5831a3d4f4d263311 +2429c14f155623184bc2dbe9fffff8e19166b2dee0f3d7d36680ffeddddf +e0e1dae8e8e8e9cba095cde5e5f7dcdfedd8f3d0a1927f95545bacd6e8ff +acabc497495a83bed2c6844529290d1a879739182d211cf9d3dcede1d9e8 +cbe0d6e6e5f1ddf1ba2d012b2d2a242c1b3091fbd5e4ccb1b1bccab3d0db +bfbbbbb5bcc8c1c829090d5cbc89ae15041761739bb4040a47735fce6a21 +35366777e3584421366aa1bfbbb4b5b0b5b6c1c8c2c8dcd1a6124e707e36 +0d125307524c141c18161b1a3e809b55b7fff9f7f49f712b19160e061b16 +0b171b15195a98868c7eb2a9a4762300000f03000e0d050e0c06009d8085 +827a73757b7d7a7c7f80807d7a7979888e969ea2a8aeb4bbc3ccd2d3d1cd +cbd0ceccc8c5c5c9cbc9cac9c6c1bcb8b8b3b4b2aeacaeaba59c94867a72 +7275788284827c797b7c7c7a736e6e6e4646464643403e3d3e4043474846 +423e3b3e4243424140414443403f3e40424341424344454443424242454a +4e4d484243464747494d4b464a464344474a49484d4b4a494542444a4a48 +48494641414440474340494a4345404144454341454c494646464745423f +414244484a4b49474344444548494a4b4b4847474a4e5150484746464444 +454548464a4a4a44464a45454543414143454b4a494848494b4c4a49494a +4c4c4b4945484b4c4b494949484c4b47474b4c4b4b4d4d4b4d514f4b4c4c +4c4a484a5056575654565856514849485157564d443f38293c4d5b3e4447 +4e564958393b4fd6f0eaeceeeae7eae7ffe2e6e6f0f1f3f0fef7fff151da +e175ff77e0ac95ff5cfffbeff1ff7ec5ffff5d63704492fff9e9e1edf2e3 +e3f1f9ffefe5f2f3d6cbd0cbe5ecf5d9d2d5c6d1d39023424f4922311428 +2fc75519581a00218d999ab6bab7ad653d88b1b4cbb7bf5877fceee1e8ec +efe8f7f6f5f5d7aea9e2f6f1ffe2e4f3dffdddad9b86994421515c699a59 +6e9f8a4b6694d1e3cf8645282d122592a03f1a2c201dffdeecfff9f2fbda +e9dbe9e9fdf5fff57e6197a6b1a9a28080cffffaffe6c9c8d0dbc1dde7ca +c7c7c1c8d5ced536161a69c996bb2210236d7fa7c01016537f6bda762d40 +437283ee644d2a3d6fa7c7c6c2c4c3c8c8d1d8d2d8ede0b5225e7d8c4219 +1e6218645c283741546a7ba7e7f89eedffffffffb27e3424272118281c0a +1519192164a391988abfb4b0802d07071609051412090f080000835d5b51 +4742464f5555585a5b5d5c5d5d61717a848d939aa2abb8c2cbd3d4d4d0d0 +d5d6d3d1ced0d3d9dcdedfdad4cdcac7c3c2beb8b7b6b3ab9b907e6f645f +5d5b605b55494341414145403b3b3ba1a2a2a2a19e9b999b9da2a7aaa9a4 +a09ea1a3a4a3a2a2a3a2a1a09f9fa0a2a3a5a6a8a9a9a8a7a6a3a5a8adaf +aea8a3a7abacabadb0afabafaaa5a6acafaeabb3b3b2ada7a6acb3abadb1 +b6b2aaa5a5abb2b0afb5b3adb0afb1b0afacabafb5b8b6b4b4b4b3b1afba +b8b6b8bab9b5b1b2b3b4b6b7b8b8b8b9b6b3b2b4b7b8b8b8b8b8b8b8b8b9 +b9bebbbcbdb9b5b6bab4b4b4b3b1b2b4b7bfbcb9b7b9bbbbbbbfbdbbbaba +b8b6b3b5b8bbbbbab8b8b8bbbbb7b4b6bcbcb7bcbdbcb9babcbab5b8b8b7 +b3b3b5b9bebdbdbfc1c5c4c0bcbebbb7b5aba19e9fa5989895954b5a6e92 +a9988f5e4b54c0dacac9cdcaced5cfbdc7cfdbcce9eff9ebf1cf9d008f68 +0d3d102800348b0ccbd5bee3d23e26000b1f4cced5e9d6bbd3d7d3d3d2d6 +dec1c1ced3dbdedfd7c7b3a1b5c9c3aeaaafb094340a112f27522b2b1d2f +7a3a04281b45a0d3e3feffffff923c4a484d555668720452e1d1cbd6d9e6 +d6e1e5f1123e595c70763eeed7dec5d3df9b0580d498817bcae4e1f79752 +66470e181e3992a22a4a0c071866f3ff94802f1719e2d6d1c4d3e7ceb0e4 +cdcbcdd5d96f00041e120f0e0b1e66cbe7e1d89890b5dacdccb7abbfbbca +ae99a3afa4dc000d2b88c9401800252a6ab40c10170f2a8869000410092c +712f20001211246269aaa09fa6a6abada5abb4b6bacde3006f876c27592c +7f8a556209161b11110000115a774a83e8e8ffffca5a2031272326181828 +22203685773d979e9a833513050a18140101150e0c15140f0d88aea6b0b0 +a9a8afaeacaeb0b1afada8a5a3999b9f9f9e9fa4a59ca0abb4bbbfc3c3cb +cccfd1d4d7dee1efeeebe3dacec7c3c2bfb9b0aaa39d9b93949192949ca2 +a8a9a9aaa6a5a8adafaeaaa6a4a272737373726f6c6a6d6f74797c7b7672 +6e717374737272737271706f6f7072737677797a7a7978777476797e807f +7974787c7d7c7e81807c807b76777d807f7c8181807b75747a81797b7f84 +80787373767d7b7a82807a7d7e8082817e7d81878b898787878684828d8b +898b8d8c8884858687898a8b8b8b8b88858486898a8a8d8d8d8e8e8e8d8d +928f8d8d8985848884848483818284878f8c8987898b8b8b8f8d8b8a8a88 +868385888b8b8a88888889898582848a8a858a8b8a87888a888386868685 +858990959494939594938e8a8e8b89867e746f6f766b6f727a374e5b6b7c +7271494154c9e8dcdadedadadedbd0dde0e6d3ecf0fcf4ffeac324cbaa4f +774d744f86d03be6e2caf5ef65521c36476feef3ffeacde3e3dddddfe4eb +d0d1dce1e9ecede8d8c4b1c5dbd5c1bdc2c3a8451312291d4722251b3381 +440e331c358ecde3fffff9f99f68a3c3dce6d6cfb7337bffebdde0dde8d8 +e4edfd22516c6b7d8047f7e1e9d4e4f0a80e7fce896758abd8e1febcadca +812d292a4ca5b1345313091963effc917f321e23f0e7e3d5ddefd8bef4e0 +e0e5ecf187171b372b261c172a73d6f4e9df9d95b9dfd4d7c4bbd1cedcc0 +abb5bfb2ea07193791d34a2207333878c21a1e251d3896770d121e1a3e83 +3d2a031b1b357682c5bbb7b9b5b8bab2b7c1c2c6d9ec017891742f613286 +8b545b01111a19241c133c86a072a8ffeefcfbbb4205140c0c150d10211a +142b83793f979c967d2f0b0002120f0000120907110f050070907f827e76 +78838783808182817f7c7a7a6f74797c7a7d818787909ba6adb3b6b9c0c3 +c6caccd2d9ddeceae7dfd4c8bfbbb8b5afa69f98928d7f7d7b797a7e8486 +8483807b787a7d7e7c787472704647474744413e3c3c3e43484a4944403d +4042434241414241403f3e3e3f414242434546464544434042454a4c4b45 +4042464746484b4a464a454041474a49464c4c4b46403f454c44464a4f4b +433e3e404745444b49414444464645424143494a4644444443413f4a4846 +484a49454142434446494a4a4a4d4a49484a4d4e4c494848464644444449 +48494b4945474b44444443414244474f4c4947494b4b4b4f4d4b4a4a4846 +4345484b4b4a48484a4e4e4a47494f4f4a4f504f4c4d4f4d484b4b4b4949 +4c5257565656585958534d4e4d5558554b453f40323b485f2c50574e534e +55363752cef3eaeaeee9e8ede9deeaf0f8e5fdffffffffffe857fff699b7 +8ebf9dd0ff67fff3d8ffff8e814d6d85afffffffffe5f3efe6e6e8f1fbe3 +e1e7eaf2f5f6f2e2cebed2e9e3d0ccd3d2b34c18162b1e4b272f263c8746 +0d2b0a135e919db4b5b4bd6a377394aebbb3b4a52975ffece1e9e8f5e5f3 +faff2f5f7a7e8e8c50fce3ebd7ebf8b11787d28c5622516267976c72a673 +2f333a5db4b8354e0c081d6efdff9c8739242cfdf7f9f1fffff1c9f3dad9 +e7feffc56b81adaaaa9f8f8ec1fffffff1b1abd4fcf0edd5cadfdceaccb9 +c1ccbff7152743a0df562e133c4181cb23272e26419f80161b2722488d46 +340c24243c7d87ccc4c3c8cacbcbc2c7d1d2d6e7fb10879d813a6c3e9090 +5a6b193142485f66689be7f8badfffffffffc24f18322d2928130d1b181e +3990854ba3a9a4893b16090d1c160505190f0b120c0000566c54514b4147 +545c574f4d4e4f4e4d4d4e474d5456565a616b74838e99a2a7adb0babcc1 +c4c9ced6def7fbf8eee2d6ccc8c3c0b8aea79e988c746d6663616262615a +544e443d3e3f434745413f3da3a3a3a3a19f9d9c9fa1a4a8aba9a5a1a3a4 +a4a3a2a2a5a7a5a4a4a4a4a6a7a8a5a6a8a8a8a7a6a5a3a5a8abadaaa6a2 +a5aaacaaabadada9ada8a5a6acb0aeabb1b3b1aaa5a7aeb4aeaeb1b4b1aa +a6a8aab1b0b0b5b0aaafafb2b1aeacadb1b4b7b5b2b2b2b2b0aebab8b6b8 +bab9b5b1b0b1b4b6b8b9babab9b6b3b3b5b7b8b8b8b8b8b8b8b8b9b9bdba +bcbcb9b4b6bbb4b5b5b3b2b3b5b8c0bdb9b8babbbcbcc2bfbbb9b8b6b3b0 +b5b7b9b9b8b6b6b7bebcb7b3b7bdbdb8bdbdbab6b7bbbbb8bab9b7b4b5b8 +bbc0bdbec0c2c5c4c2bebdb9b6b1aaa19ea2a4a5978a9a3f5173909d9d86 +5e3b52b5decbc9cdcbd0d5ced9c8bedefad7a87e73b4a8a60a8d582e3536 +281b665e01e0e1cac4d786d467815f3914217fd0e0c9d9d0d7d4caced6e0 +ebf7c971f5dcccc3c0b1abbfaca4bea63a0f16122c286f301712124c3b1c +201c64dae0efffffffd62f2554384a5d5c6650005ae8d2d5dfdbd6d9dfde +d42ef2886a7d8639fbe1f4f7e5ecd5004d6e54776fbbe5e4f2a7556c2100 +0518118fb1184a1f171862debc1e952e1800bcdcc4acb2c5ad9bd9c4e9db +c22e00001c0b04161242a0d6d3d8b4a2b2c7dde1d2c6d2bdaab3c3afa6ad +a6b1c2001a3280c03122151d1b95ca0b291a2339ab811c2b0a1f31be4106 +10100b497f35b69e9da6a7a9a59aa3b4b4a4b7e321194330002a00717915 +7f231412121c0b000b0e75682a98e6e1fbffc55116362c1f131b2018336a +9020619e875d0b0407181e1014231b030b0a0d0e0f0b45c0a3b2b7aea8aa +a9a8b1b5b7babcbab8b5afb0b1adaaa7a9a797918e8c9099a6adadaeb1b1 +b3b5b9bcbcbdbfbdb9b3afadaaa8a5a19c9793979a9e9fa0a3a5a7a9aaab +ababababadb0afaeaba6a37474747472706e6d7173767a7d7b7773737474 +7372727577757474747476777876777979797877767476797c7e7b777376 +7b7d7b7c7e7e7a7e7976777d817f7c7f817f7873757c827c7c7f827f7874 +76757c7b7b827d777c7e8183807e7f83868a888585858583818d8b898b8d +8c8884838487898b8c8d8d8b88858587898a8a8c8d8d8e8e8e8d8d918e8d +8c898484898485858382838588908d89888a8b8c8c928f8b898886838085 +878989888686878c8a8581858b8b868b8b88848589898688878686878c92 +97949594969493908d8f8c88857d726d7072766d67802e48636c72796a4b +3152bcebdddadedbdcdedcecdecee7fdd6a67d79c3c3cd3dcc9c73747777 +71baa431fef2d7d7f2a9fb8ea68157313b95e4f1d8e5dce4e1d8dce6eef8 +ffd67effeadad1d0c1bcd0bdb5cfb84b1d1b10231c62241110165345292e +1f4dc1dbf3fffcfbd65472cfcbdee1c3b182137affe7e7ece5dee1e6e7e0 +3bff9877868e40ffe7fcfff2f9df024a65445d4b9bd8e2f7c8adca571913 +2424a2c022542719195fdab51a932d1c04c7ebd4b9b7c8b4a8ecdbfff8e0 +4a001b36231e291641a2dbd9e3beaebbd2e7eadcd2dfcdbbc6d4c1b6bdb3 +bfce07223a86c635291e27259fd41533242d43b58b2635142c40cb4a0d14 +141256904ccfb9b5b9b8b8b5aab0c4c1b1c4ef2d254f3a083404787c1174 +1404060e21201d2f38a2995bc5fff4fffbad2f0010100b0a181d13285e8e +20619c84570300001014090d1e16000605090906002fa27c848479757a7d +7a7d7f8184868684827c7f7f7e7b797b7e7676737276818e9797999c9fa0 +a4a8acadaeb0aea9a39f9d98969390898480807c7b7c7c7d7f80807e7d7e +7d7b797c7e7e7c797471484848484442403f404245494b49454142434342 +4141444644434343434546474243454545444342404245484a47433f4045 +47454648484448434041474b49464a4c4a433e40474d47474a4d4a433f41 +3f4645454b463e43444747444243454849474444444442404c4a484a4c4b +4743404144464a4b4c4c4d4a49494b4d4e4c4b484846464646464a47494a +4946494c44434341404143464e4b474648494a4c52514d4b4a4845424749 +4b4b4a484849514f4a464a50504b50504d494a4e4e4b4d4c4b4a4b4f5459 +5657575959585552535356565448423f3d403b4169264d63524f59523c28 +50c2f4ebeaeeeaeaede9faecddf8ffe4b48b87d6def472ffedc1b7b9c2be +ffe059fffcdfe5ffc5ffafd2c19f7374c6ffffedf5e8edeae3e9f5fbffff +de86fff3e5dcddd0cce0cfc7e3c6521e1e1326206b301f1e215944201f04 +218897a9b8b6c0a0203c9895acb9a59c770f77ffeaebf4eee9eef6f6f04b +ffa787959948ffe7fefff8ffe80a5168454c1748666b937973a6491a1c32 +35b1c7214b1c141b6ae9c72ba13b2811d9ffedd9e1f1ceb1e8d3ffffff89 +5786afa7a6a9849eecfffbf7cabacce6fffff7eaf0dccbd5e4cfc6ccc3cc +dc132f4594d2413327302ea8dd1e3c2d364cbe942f3e1d3445d151151d1d +1a5c9752d6c2c1c8cccbc5bac1d4d1c1d4ff3b335b461440117e750e8431 +292c2f474f5d859afff6aafefffbfffdba481b3f39260f11141036729c2c +6da98f631009081b1d1115251d050c090a060000178051534f4340494e48 +433f4144484a4a4943474a4847454952555b58575d67767f8084898b8f92 +969faab1b3b1aaa49f9d96948f89837d7972645d5c5a585855524d494542 +3d3a3a41464946413ea3a3a2a1a1a0a0a0a7a7a8a9a9a7a29ea6a6a5a3a2 +a3a6a9a2a2a2a3a4a5a7a7a4a5a6a7a6a5a3a2a4a5a8a9a9a7a4a3a3a8ab +a9a8aaaaa7aaa8a7a9adafaeacb0b2afa8a5aab1b5b7b1adaba8a6aab1ab +b1b0b0b4ada7afacb0afacadb2b6b6b7b5b3b2b3b2b0aeb1b2b4b8babbb9 +b7b0b2b5b8babbbbbbb5b3b2b3b6b9babab9b9b8b8b8b8b8b8bab8bbbcb9 +b4b5b9b6b6b6b5b3b4b6b9bdbdbcbbbbbcbdbebfbcb9b7b7b6b4b2b6b7b9 +b8b7b5b6b6bebcb7b3b6bcbdb9bbbbb7b3b6bdc0bebdbbb8b5b7babdc0bf +bfc1c1c3c2c2c0beb9b5afa9a09fa29da79c8c9c454c708d969e805c3651 +a3e0cecacecbd0d4cebfbed7ced60f07081f2a003100823c3f664e4d437e +5c0bdbcddbdcc01000122d6363288191d2d2cdd5cedbd3c8c7efd0bfa872 +3587c3ead9dcd2baa59fb2a352000f2231273f804157731f4c2f2c2a31a9 +f2e5fbfeffff64134445385c5e6f3f400063eed1d9dbd6f4eae5e5f55722 +00221c2627bda7888cc4eff17d233e31325d9edfeaf3b7596a5338427d50 +9ec017420b1319041a598c271a2300b5e7cdbca0a995c8d4e5cc8d000013 +160d10100968bee5dcd6a787c4d9e5d9bae5d8cd8cb3b5a7a8ad9d6fb0bb +25152ca2c8110c142118af96061e093539c54700091c312ea6141a241700 +6b8814b79c9aa2a2a1a3a09ba0a9a5acc55c58db6e00142369c02f782010 +2a1d01120700080b6f5f2ea4ddf0feffd2392f2e201d1b1423598b373c93 +8e4a0514111e151518140a0e191d1b16141c181dbbacb8bebaafacabacb8 +babababab6afabb5b5b6b7b6b5b5b1a4a2a1a1a1a2a5a7a3a4a4a4a09f9f +a19a9ca0a1a2a09f9e9f9ea0a2a19ea1a8aeaeaaa6a4a7a9aaaeadb0b2af +ababaeaeafada5a0747473727271717179797a7b7b797470767675737273 +7679727272737475777775767778777674737576797a7a78757474797c7a +797b7b787b79787a7e807f7d7e807d7673787f83857f7b797674787f767c +7b7b817a747c7b7f817e7f8488888a888685868583818485878b8d8e8c8a +8385888b8d8e8e8e87858485888b8c8c8d8e8d8d8d8e8c8c8e8b8b8c8983 +838786868685838486898d8d8c8b8b8c8d8e8f8c89878786848286878988 +878586868c8a8581848a8b8789898581848b8e8c8b898787898e94979696 +95959291908f8f8c87837a716c6e6a757068813442626d6f7c654a2d51aa +eddedadedbdee0dcd2d4e4d5d80d04062337185821c38487a993a09ad2a2 +3bfadee8eed72f142e4a807e4197a7e6e3dce2dae7e0d6d5ffdec8b07b3e +92d0f7e7e9e2cab6aec3b25f0315222b1c3274365372235134322f2b8bd7 +e1fdfafff47254b1dbdaead1bf74601478ffe4ebeae4fff6f1f1ff632f0a +2e262f2ec2ad9196d1fcfb842238231b397dd1e7f3d3acc485504c8561b1 +cf224c13151a0116518423192500bef4dcc7a5ad9fd8ebffeaae0b1b2f30 +26292a1a6ab9e3dedbb294d3eaf5e8c9f1e5d999c4c8b8b9bdad7cbcc42d +1b30a6ca110f18281fb69d0d25103c40cc4e0110233837b0191b23180072 +9727ceb4b0b5b3b0b2b1abb0b9b5bcd26a66e97a0b202d72c62f6d100016 +0f001c1c1d2d38a49667d5fffffff5ae0e040d0b131b141f4e82333a918a +44000907120b090e0a0307141816110e130a099e858a8b837a797b7d8585 +858585807c7882818283848383827b7c7e7e7e8083878586878786858687 +8185898a88868685848385888784858986837d7a78797b7c7f7e7f827f7a +7a7c7d7d7b736e48484746444343434848494a4947423e45454442414245 +484141414243444646414243444342403f41424546464441403e43464443 +45454245434244484a4947494b48413e434a4e504a4644413f434a404645 +454a433b434145454243484a4a49474544454442404344464a4c4d4b4940 +4245484c4d4d4d494748494c4f504e4c4a4948484645454747494c4b4848 +4c46444443414244474b4b4a49494a4b4c4f4e4b494948464448494b4a49 +474848514f4a46494f504c4e4e4a4649505351504e4c4b4d515659585858 +5857565555575555544e453d3c354243446c2d4a62564e60503c2651b0f6 +ebe9edeaebece9e0e2f4e5e51a0f112e47317f57ffd6dbefd6ece9ffde61 +ffe8eef8e54329436abac381d0d6fffff3f3e8f3e9e1e2ffe9cfb3804598 +d8fff2f9f1dac6c1d5c76f0715222d20397e4462822e5530241909579497 +b2b3c5c03f1e779e9fbaaaa4645b1479ffe8eff1edffffffffff733f1a3e +323834c5ad9097d7ffff8c283c230b092e6474938874a17950559271bfd4 +1e4106101c0c2766993429320ecffff3e5cbd2b8e8f3ffffd74e759ca9a4 +a7a584b7f3fffff9c8a7e6feffffe0fff6e9a9d6d9cac9cdbd8ccad33a27 +3cb2d61d18212e27bca5132d164446d45409162b3e3cb21d20291d05789c +2dd4bebdc4c7c3c5c1bbc0c8c4cbe27773f686172c3977bc277d2d203928 +13374763869ffffbb6feffffffffc83b393a2a1b130a1c5f9742479e9850 +0a17121e161317130b0f1b1e1c150e0e00007c5a59544b44444a47464143 +4343403b39434546474948484c4f555656585a5e61616467676564676c6d +75797a777572716f6e7071706b6d6c6259534d49484948494644443f3838 +3d454a48403ba4a2a19f9fa0a2a3aba9a8a7a7a5a29fa4a5a5a4a3a2a4a6 +9d9d9e9fa1a2a3a4a5a6a7a7a7a5a4a3a5a6a7a7a6a4a4a3a0a6aaa7a5a7 +a7a5a6a8aaadaeafaeadb0b1ada7a8afb4b4b8b1aaa7a4a3a9b2adb2b0b1 +b3aba7b1acb0afacadb3b7b5b8b6b5b5b5b4b1afaaafb5b9babab9b9b3b5 +b7babbbbbabab6b4b3b4b6b8b9b8b9b9b9b8b8b7b8b8b7b6babcb9b4b4b7 +b8b9b8b6b5b5b7bab9bcbebebcbbbec1bebbb8b6b6b6b5b4b8b9bab9b7b6 +b6b7bcbcb8b3b4babdbbbcbcb8b5b8bfc1c0bfbcb8b5b8bbbdbfc1c0c1bf +c0c0c1c2c0bbb5afa89f9fa3a39ca1958d4e566d8293917a52495797e4d1 +caceccd1d4cdd1d1d8d3fe0112244123002a1ab0120827191504514e2ce6 +dac8d8ea7a005a430000008aa5cdc7d4d7c2c8cde7dbdb390c00295e007b +eac8c9d8d38f95a243011c2123414c749a2533581d40333c3579e6f9eeff +ffffbb1a28462f3a5c5c65113d1560f1d6d9cfd5b86dae846652001f170b +2a3735617b8f2088d6b000262d405b86d7eeefc4626c264049581568d11f +55281f1a161c1b1d06141f14b9dde8b5c9c1b0b8e9d74600020b0b0b0c0b +3685ddece8c9b98fdadbae5dbfc3c5dade1eb7d1aaa7a58634a7a02e1720 +888d0e281c0d13b28d150e23153bd752181321126bc86237032426667314 +ae9c99a39e9ea0a69a93a2a7a8b5a292b4879f7f2253783661451120180e +0c1602000918672731aae4eeffffbc55312c2a191d557d690a56a433050c +14261314120d131f1f1410100c0b1d131a9aadb2b4b6b1ababafaaaaacb1 +b6b6b3afa7a6a7acb2b4b1aca1a5acafafaba9a5a4a5a5a5a2a1a1a2a0a3 +a5a4a19e9c9c9e9da0a4a4a0a4aeb4b4ada9a7aaaeb1b2b0b1b4b0aaa8ac +aaaeaca39d7371706e6f7072737b7978777775726f74757574737274766d +6d6e6f717273747677787878767574767778787775757471777b78767878 +7677797b7e7f807f7e7e7f7b75767d8282867f787572717780787d7b7c80 +78747e7b7f817e7f8589878b898888888784827d82888c8d8d8c8c86888a +8d8e8e8d8d88868586888a8b8a8d8e8e8d8d8c8b8b8a898a8c8983818588 +8a89878686888b8a8d8f8f8d8c8f918e8b88868686858488898a89878686 +878a89858081878a8889898582858c8e8d8c8987878a8e9395979694928f +8f8e8f8f898581786f6b6e6e6a7571723d4d61667175644242579ceedfda +dedcdfe2dde7e7e5dafd000d21442f0f504ff05d526b62685ba5945cffeb +d3e9ff940f6e55090f04a0bbe0d8e5e7d0d6dbf5e9e84514012e630184f4 +d4d6e5e09fa2b1500a1b1c1937416b9423355b1f3f2c302561c7dfe7fefa +ffb93b8ad5d8dedbbaa03551236dffe5eae0e6c97ebc92725b052a241934 +403d69859a2f96e4ba0024222d3866c6e8ecdcafc05252505e257be02b5f +30211b1218131502121f18c1e9f5c4d5cdc0cdfff365152128242323224d +96e2ebeacec19cebeec573d4d7d6e7e82ac6e3bbb8b49340b0a7341b2288 +8d0c271c1016b590181126183eda551b16241570cc6135001f24697e26c2 +b2afb6afafb1b9aba4b3b8bac5b2a2c495ad8d2e60823b5d36000903000a +20160e344c9f6670e1fff8faf38f270d1420181d5475600654a12d000108 +1a050805010915150d09090705160708808884817f7a77787d7c7e7f8488 +8885817978797e8486837f737980858583807f7f80838381808081808385 +84827f7d7d7d7d80848480828886807b7775797d80817f8084807a787c7b +7f7d746e48464543414244454b4948474644413e43444443424143453c3c +3d3e40414243424344444442414042434444434141403b41454240424240 +41434548494a4948494a464041484d4d514a43403d3c424b424745464941 +3b454145454243494b494a484747474643413c41474b4c4c4b4b4345474a +4d4d4c4c4a48494a4c4e4f4c4c4a4a48484747474645484c4b48484a4846 +45434242444746494b4b49484b4f4e4d4a48484847464a4b4c4b49484849 +4f504c47484e514f50504c494c53555453504d4c4f5357595b5a59575555 +5556575454504a3f3b3a3837484f5f36526151555d4f353c57a0f7eae7eb +e9ecedeaf5f5f5eaff0914284b3d267585ffb0a7b4a7b6aaeed084fff5d9 +f1ffa11d776b3a4b3ad1e4fff2f9f6dde1e6fff6f85117023167098dfee0 +e6f5f1afb5c463192019183645709e30446a2b4426200e3b879497b3baca +890c4f9597a2ae988a29502673ffecf1e8eed388c99f826c183c35263e47 +406b869c369fedc30729261f0e1d5e7a8f92799e4552586c3589e5275423 +1c1f2029282a13202b23cef7ffd7ede7daeaffffa86a8b9ea29f958aabdb +fffbffece6c6ffffe48be5e2e0f0f136d9f7cfcac7a450bfb742272e9497 +172f24151dba971d182b1f43e15a221b2b1a73cf663a0425296e822ac9bd +bcc5c3c1c3c8bbb4c3c8c8d4c1afd1a2b8983a667a376c531d26160d1739 +495793baffcdb5ffffffffffb6563934281313528475155fac390a0f1426 +12120f0b111d1d1410100b051000005f5e534a46413e4148414144494d4d +4a463e3d3e43494b484841485155555252505253565654535556575a5c5b +56534f4f504e5153534f5257544e48424041454647444546423a383e4349 +473e38a2a19e9c9d9fa2a4a8a6a4a4a5a6a4a2a0a3a5a6a4a2a2a29e9fa0 +a1a3a4a5a6a8a9aaaaaaa8a6a5a6a7a7a6a4a3a3a49fa5a9a6a4a5a6a4a4 +a8adafafaeadadafb0aca7aab3b6b4b2aeabaaa6a3a6acafb3b1b2b3aaa7 +b3b0b4b1acacb2b4b1b9b8b7b8b8b7b3b0a9b0b7bbb9b7b6b7b6b7babbbc +bbb9b8bbb8b6b5b5b6b5b3b9b9b9b8b8b7b8b8b5b5b9bcbab3b3b5bababa +b8b6b5b8bab6bbc0c0bcbbbec2bfbcb8b6b5b4b3b2b9bbbbbab8b7b8b9bb +bcb9b4b3b8bcbcbfc0bdb9babfbfbcbfbcb8b5b7babcbdc2c1c1bebebec1 +c3c2bdb7b1a7a09ea1ae91a29b7a5566707491857647616091e6d2cccdcc +cfd4cdb2cab2c8fe0c213122221d2411c01b303c6545387c3b2ae2cacfcc +ef6e002d27001b26465087c5d5c8cadbc5d2cef4470011b4f8156df8d7d7 +cce1a7ad850018211f425364689a0b342e3d37413c2fbdecfafdfffff068 +2447333549617762153a1f54f1dbdfcedfa60f4a53001845394d25473a00 +63ae984b5ed17b00150f31667fd0ebeacb6b742b120e47315ed92847261c +181e2013171b18272a655fc59cb6b9d40c9d26000b100a0c0d1850a6e6e0 +d6b99ea24adfe25e1ececbcbdcda2d9ce9c1ada08426b4941e1c1f534517 +341921252f1a21381a222b5a08261c08212f51665912191d285724a29d9c +a79fa296a4a2a1a99e96a6a6aba3acb2bf514291693f51141a182b1c1910 +1100001f4e2246baedffffffa736363118318b922d3585660415141c1f1d +1d1e1c181412111c18150b1c081b69bdb7b6bab9b2b0b4afacadb0b1aea8 +a4a6a4a4acb4b7b1abb2afa9a4a3a7b0b5aeafb1aeaca9a8a9a4a7aaacac +abacada7a6aaafb0abb0b9b3b4afacabacaeaeb1acadb0aca6a5aaabb0ae +a49e71706d6b6d6f7274787674747576747270737576747272726e6f7071 +73747576797a7b7b7b797776777878777574747570767a77757677757579 +7e80807f7e7e7d7e7a7578818482807c79787471747a7a7e7c7d80777480 +7f83837e7e8486838c8b8a8b8b8a86837c838a8e8c8a898a898a8d8e8f8e +8c8b8d8a8887878887858d8d8d8d8d8c8b8b8888898c898280828a8b8b89 +8786898b878c91918d8c8f928f8c888685848382898b8b8a888788888889 +8681808589898c8d8a86878c8c898c898787898d9293989794918d8d8e90 +8e88847f776e6a6e7b5f75745d425c655a736c63395a6096efdfdadddcdf +e2ddc8e0c2cffe091c2f252f364a44ff637b80ab968dcb7d57fedadcddff +8404383306303c5c659bd7e6d8dae9d3dfdbff500013b5fc1a74ffe1e3d9 +ecb2b890011e1d143445555b9005302a362b2f210d9bcee4f5fffde6755e +c3d6e4e4cebd8d2c44245dfce8eee1f2b8215c6302214c415e385547036e +bca75c70e38904180c23465ebee3e3dfb4c1511d0e494171e834512e1e19 +1a1c0b101716272f6e6cd6aecbcfec26ba44022a2b2524232b61b8f4e9df +c3aab15ef6fc7a39e8e2dde7e136abfbd2beaf9131bb9a221e1f51431431 +182226301b22391b232c5b09271d092230526453091016275f33b5b4b2bd +b0b3a9b7b5b4baafa8b8b6bbb3bcc0cd5f519f734149010300150f171b28 +1428558c6886e5fffceaf07d141f2717308a8a24318260000a0a0e111010 +110f0d0a080712110f0514000a509a8b8384817c7c838484858788857f79 +7b79797f878a847e83807a75747a828a85878989878584847d8083858585 +86878180828989858990817d7b78777a7c7d807e7f82807a797d7c817f75 +6f464542403f41444648464444444543413f424445434141413d3e3f4042 +434445454647474745434243444443414040413a4044413f40413f3f4348 +4a4a49484848494540434c4f4d4b4744433f3c3f454448464749403b4745 +494742424848454b4a494a4a4945423b42494d4b49484946474a4b4e4d4b +4a4f4c4c4b4b4c4b494e4c4c49494747474445494e4e4849494a47474543 +42454743484d4d49484b50514e4a48474645444b4d4d4c4a494a4d4f504d +48474c50505354514d4e53535053504d4c4e5256575c5b59565353555755 +524f4c463b3839462e4c554b3b5d63495b56522e54609af8e8e5eae9eced +ead6eed1dfff1222322a384c6e79ffb5cec9f1e5ddffba80ffe9e4e7ff91 +0e3c3f2a5d658184b4edf8e7e7f6e0efebff5f0512b7ff207cffedf1e9fe +c4caa2152c1e10314458629b133f383e2b250e006e868fa4b6c2b5492e87 +93a3aba7a17a22462a64fff0f5e8f9c22b687012325f547047604f0770bf +ac647cef940f1f131a20195a7889977d9f441f1856517fef3248231b1e28 +2d202225212f357574e0badce6ff57fe9a6c9faca6a09289aff8ffeedacd +c4dc91ffffa154f5e8e1e9e73fbeffe6d2c2a243cbaa2e2b2b5c4e1d3a1e +272b3520273e202831600e2c220e26325467570e151d2c6238bcbcbfcbc2 +c5bac6c4c3cabfb6c6c5cac0c9cdd86a58a07550601d1d102116243b5e66 +91d1ffcacefffffff9ffa1393b30132b8897373f8d6c0a18151b1e1a1a1b +191512100f1a18130711000032725a4c484640434b4f505153544f494446 +44424850534d474d4a443f3e434e55515356555351504f44454a4a4a4748 +494342444a484448504644413e3d3f414245424346433d3c42444b493f39 +a59f9da09f9b9ca1a6a8a8a4a09e9fa1a2a1a3a7acaaa39ca09d9ea2a29f +a1a8aaaaadaea89fa1a9a8a8a7a6a5a5a5a6a9aaa9a7a4a4a6a8a1a4a8a9 +a9a9aaabadb4b2a8a8b4bab7aeb4b2a7a4abaca7acacacacacadafafafaf +afb0b2b3b4b5b6b9b9b5b0afb3b8b4b5bac0bfb8b3b3b7b7b7b7b7b8b9ba +bcb4afb1b2afb1b6afb3b4b2b3b8bab7afb1b8bbbbb9b7b4b0b0b4b7b4b0 +b1b6b7bbbfbfbdbcbec1bcb8b6b9b8b3b0b0bbb8b7b9bbbab9b9bab8b5b4 +b7bbbdbebbbdbbb5b4b9bdbeb8b8b7b5b7babdc1bebec0c0c2c0c0c0bfc6 +b8b1b1a396a29da59b9b7735707f73ad957a48686c91f8eeded3d2c8cbc1 +c4c1b5dffa190b6c4e5d061a60774b222347462e85273be0d2d3c2ba1100 +7c96320c87c9c5e2d9c4c9cfd1d6cecbf550074f9d860083f8cfd5d6daca +a70a12132328505f55716a1f6336233331307fe9fbf7ffffffb215403a2b +3a3f6f49151a2a0f69f8d9d4d9ddbd18ecf2575d4d2d72007eb6167b95af +2c84e8536e930030507cdaecf2cc8266470e2a10203fd43b321428251c27 +2a382f3932356e88d6b9bce4cd0006000b10021909177cd6e2d0c9bb525d +55077b2e1ac4d9a7cee8b534bbe49ec79a742ec8a225402645341a3c1c2e +34433a35362421504a223b1d1d253a4453432429152a561656c19695a9a4 +9f9d9f9f9f9fa0a0a5a19ea0a3b849475e741c5a072217202b25190d0300 +0725341272c1fbffffffa01e194882963f2253a7660d1e0d1b271d1c1817 +16191c1e170a100c141a1233c8b1acbab4baa5baa9a8abb0b1b0adadaca6 +a4a8abaaabafb7b2aca8a9acb0b0afb1b2aea8a4a7adb2b0adaeb1b3b0ae +a9aba9aeb7b1acb5b5b3b1b1aeabacb0b0aeadada7a0a0a5a7a9aaa9a674 +6e6c6f6f6b6c7176787874706e6f71727173777c7a736c706d6e72726f71 +787b7b7e7f7970727a79797877767676777a7b7a78757577797275797a7a +7a7b7c7b828076768288857c82807572797a7577777777797a7c7c7e7e81 +8284858687888b8b878281858a86878c92918a85868a8a8a8a8a8b8c8d8e +8681838481838883878886878d8d8a8284888b8a88848180808487848081 +86878b8f8f8d8c8e918c87858887827f7f8a8786888a8988888785828184 +888a8b888a888281868a8b85858687898d939794949393918f8d8c878e81 +7e7f7464706b756d745b2162725c9480683b606c96fffbece1e2d8dbd3da +d7c5e9fc18096c526a203e90b38e67638a937dcf6464f9e1dfd2cd230a80 +9b41209bdedaf5ecd8dbe1e1e3dbd6ff57084e9d87058affd9dee2e2d2ae +1117151f1f414d3f5a52074c200a17100b53c2e2e8f4ffffaf3996cedadf +c7c078352e2f0f6dffe3e3ecf1d12cfeff62655438871691c8248aa6c142 +9bff667e9d0027325ac8e1e7dcc5ad6713270f2d50e5493b1a2925182323 +322c3a363e7a98e9d2dcffee20260f272b1c311e278ae2eadcd9ce667570 +259c4f3de6f5beddf0b938c8f6afd8a98139cfa8294226433114391b2d33 +4239343523204f49213a1c1c263b444f3a181e0c285b2167d5acabbab5b2 +b2b2b2b2b2b1b1b7b3aeb0b3c8595770842559000f00061618181b1b1a31 +5b7856a2dcfef9f2f3840b0f468094371a50a4600714030d1a0d0c0b0a0b +0e12140e0109060f11021ba6877b847c826f897f82858788888583827c7b +7d807f808186817b797a7f838584888987817f828686838081848685837e +807c838b878088837f7d7d7c797b82828183837e77777a7a7a7b7a774943 +4144413d3e43464848443f3d3e40414042464b49423b3f3c3d41413e4047 +47474a4b453c3e464545444342424243444544423f3f41433c3f43444444 +4546464d4b41414d5350474d4b403d444540414141414243434344444546 +484948494a4d4d494443474c48494e54534c474547474747494a4b4c5048 +45474845474c4648494546494a473f43484d4f4e4d48403e4245423e3f44 +45494d4d4b4a4c4f4e4c4a4d4c4744444f4c4b4d4f4e4d4d4e4c49484b4f +51524f514f49484d51524c4c4c4c4e52575b58585858575554534e554947 +4a3e2f3b3a47495746165f6c4e806f5a335d6c99fffff7ecefe5e8dfe8e5 +d4f5ff200c6e5572315ec0f2dcb5abd1e3ccffa390fff4ede2dc3113819f +5439b3f3ebfffae3e7edeef3eceaff690c4c9d890992ffe5edf2f5e5c123 +2b211c163c4941605f155c2d10140100308b908da2bdcc840d659097a397 +a0642625331978ffeceaf3fadc37ffff7478674c9a27a0d42d91aecb4fab +ff758da70b22101a66788e95908b5a16301d3e60ed4a36162d2d27343340 +353e353b7a98edd9ebffff6b8b89afb8a5af897ecbffffecd6c8718f9b5b +d28263ffffc4e0f2bc41d9ffc3ecbc924bdfb8354f324e3c1e4221333948 +3f3a3b2926554f274022222a3d44503d1c22112d5f276edeb9b9ccc7c3c3 +c3c3c1c1c1c1c5c1bdbdc0d566647e9334690f230f131d1f26385974aae2 +fdc5eeffffffffff9d1f1a49819542275baf6a111f0e1a24181714131316 +1a1c1306100a0c08000080574348414733514d5356595a575453504a474a +4d4c4b4d4e49434142464c4e4d5053504a484b4b47403f3e4143413e393b +383e443f394444434143413e414747484949463f3f434344454441a49f9e +a0a09c9ca0a7a8a7a4a09ea0a2a2a0a0a4a8a8a49fa09ea0a4a4a1a4aaa9 +a6a7aaa8a3a3a7aaa7a5a4a6a6a5a3aaaaa9a7a4a4a5a7a4a6a9aaa9aaab +adaeb3b0a8aab5bab6b0b6b4acabb3b5b0aeaeaeaeaeafb0b1afb0afb1b2 +b4b5b6b5b8bab8b3b1b3b6b9b8babcb9b2afb0bbbbbab9b8b8b8b8b6b2b1 +b4b3b0b1b5b1b4b5b3b4b7b9b6b3b4b6b6b5b4b4b4b6b4b4b7b7b5b7bcb9 +babbbdbfc0c0bfbfbab6b7b7b4b2b4bbb8b7b9babab9b8bebbb7b6b7b9ba +bababdbbb6b4b7babab5b5b5b4b6babdc1bcbcbdbdc0c0c2c3c5c8bcb1aa +9c969e9d9192a18135526644514138424740430e00c6d0bfdac7cccfbfcc +c3dd6c007f38670000163b3b6364653f34702b4bd1c4c5d8e3420f32304c +00002597d7c7dacccdc6c8c5c5f14808432731007cf9dbddd1ebdc13070f +351b30545545657d5ebf8255563668b7f2f5fffffff05b29473732496255 +091e13271068f8d6d0d7dec407517203005239c8299933003d8ce44b77ea +2bcdf21cff656ccbe4f4db7d4e54120c3e3a1ddc561b15252a292924233f +4c325389a3e484deaa4e00170e011c14013da0d0d5d3c7b2b5d8c5737d8c +95c7c5cbdfdee6b0378ddecccbbc614ca7ba1f3c273e3628230a2539342f +1c2b1c3c3b312d1e28193b3a3c55430f25372a5a254ea49da6a0949f9d9f +9f9f9fa0a09fa09f9e9eae47484a8c23650a0f1c28252119191706010b1c +222299d7fbffffff614e7f93490b1f669d6e0b201e25161b1d1e25292a24 +1f1e17201718180b1dadbab0b8b5b8acbca9aaadb0b1b2b1b0afaaa9aeb1 +b1b2b6b0afaaa7a4a7abaeacafb2b0acabacb2b3b1afb0b4b6b4b1afaeaa +aeb8b4afb7b7b3b1b0ada9aaaeafacacada7a1a0a5a9acadacaa736e6d6f +706c6c7077787774706e7072727070747878746f706e70747471747a7a77 +787b797474787b787675777776747b7b7a787575767875777a7b7a7b7c7e +7c817e76788388847e84827a7981837e797979797b7c7d7e7e7f81838486 +8788878a8c8a858385888b8a8c8e8b8481828e8e8d8c8b8b8b8b88848386 +8582838785888987888b8c898687868584838181868484878785878c898a +8b8d8f90908f8e898586868381838a878688898988878b88848384868787 +878a88838184878782828486888d9397929290908f8f8f8f8a8b847f7b71 +6b747165697d66224559313b2f2a37423e471503d3decfead7dee5d5decf +e46f008340761421436f77a19fa2847bb2616de5d0d0e8f553193230560b +0437abebdbeee0dfd8d8d1cff84d074226320083ffe3e6daf2e116081035 +1a2a463c21384a298a50272a093d8dd0e4f6ffffe46864b6d7e0ded08f25 +36222a0e6affe0dee9f2da1d638210015946e146b349074f9efa6292ff44 +e0ff26fe484ab8d7e6e7b98f6e13043a452eed642319252a25251e203e4e +385e99b7f9a0ffd47404392e1b352c164eaed9dbd6cec5d0f5e497a4b5bf +f0e9e8f5ebeeaf3a9aefdddac96e55aec0223e273c332520092438332e1b +2a1b3b3a302c1d27183c3b3c4f3802182c255d2e5db6b1b9b1a5b2b2b2b2 +b2b2b1b1b1b2afaeaebe57595e9e306b0603050d0b0c101d241e1f375c64 +56bce6faf6f8eb5042788e44041a639a6805161418090b0d11181e1f1a16 +130c1611121100098f9481847f8276897d7f828586868584817c7b808282 +83847f7c797675787e81828789898584888a837f7c7e818483817e7e7a7e +8985808785817f7e7b787c81828183847f79787c7b7d7e7d7b4843424442 +3e3e42474847443f3d3f41413f3f434747433e3f3d3f4343404349464344 +47454040444744424143434240454544423f3f40423f4144454445464847 +4c4941434e534f494f4d45444c4e49434343434445444544454547484a49 +4a494c4e4c4745474a4d4c4e504d4643444d4b4a494a4a4a4a4a46474a49 +46474b484b4c48494a4b464546484a4a4b4c4a484244454743474a49484b +4b4f4e504f534e4a4b4b4846484f4c4b4d4e4e4d4c524f4b4a4b4d4e4e4e +514f4a484b4e4e49494a4b4d52575b565655555555565650524944433a36 +42443e496553143d51232d231f313e3f4a1b0cdce9dcf7e4eaf2e2eadbee +760484427b213b6da8bdeae1e5d1c9fc9f9affe8e4ffff652332305f180e +41b4f2e2f5e9ebe6e8e7e8ff610c3e2434058bfff0f5ebfff4291a223f15 +1e3d38233f593b9c5c2a21001a5d908c9ab1c0b43d388399a1a7a9771729 +1d2f1976ffe9e7f3fbe528719121136c59f558c2561159a8ff72a5ff58f1 +ff32fb2a0b596f8e9f856d61150f495740f767251c2d3434342c29434d34 +5a98b8feaeffffbb64b4b7aec3aa81a0ebfff5e7d8cbd9ffffbbcde1e7ff +fffafff3f1b441aafff1eddc7f66bed0314b33493e3029112a4039362132 +2143403832252d20413d3e533c091f322b623564c0bcc7c1b7c3c3c3c3c1 +c1c1c1bfc0bebdbbcb646976b440771411171c141111294e688dbef2f0bb +fefffffffffa604e80944a0c216ca5720f211f221316181a212627221b19 +121e15120b00006b674b4a43443a504c52555859575653504a494c4e4e4d +4f4743413c3d404548484c51504c4b4e4f45403d3f4245413f3c3c383c45 +413c4546444243403e4148494a4d4e4b4545484747484745a3a0a0a3a3a0 +a0a2aaaaa9a6a3a1a3a4a3a09ea0a4a5a3a1a09fa1a4a5a4a7aca8a3a2a5 +a8a7a5a5aba7a4a4a6a6a4a2a9aaaaa8a5a4a6a7a8a9aaaaaaabadafafb1 +ada8adb7b9b3b1b5b3acacb3b5b1b0b0b1b1b1b2b3b3b0b1b0b1b3b5b6b6 +b5b8bbbbb7b4b4b6bdbbbabab6b0afb2bdbcbbb9b7b5b4b3b0b0b3b6b3af +b1b6b3b6b6b3b3b6b7b4b7b4b3b0aeafb1b3b9b4b2b5b8b8bbbfbbb9b7bb +c0c2c0bcc0b9b4b4b5b3b3b6bab9b8b8babbb9b8bebbb7b6b7b9babab8bc +bcb7b5b7b9b7b5b5b5b4b8bcbec1bcbbbbb9bcbdc0c4c7c6c2b7ac9d9b9d +ab9c98877657452a31161926665a54443000caf4d8cdd6c6b5c6c3c7c000 +21581e1b082086a20900111e0018952a45cac0b6baaa1e163748780758eb +dec6d4bfcbc7bbbab8bae43c03792f441777e8d0dfd1ce3c101b2b181d34 +4a43416b98a0c7a282722c83d8f0edffffffae1d3e4e322f44610715203f +34277ff9e3d3cfd1e2d0e0b9dcc8b098332d3d003575f0d50649e942d1e7 +39fd615fcfecf2e2864b79462a390666ca59051d222b3329221859372e2f +abb1e3c5a30d000e090a0e0a0961add6ede0b38cc0e1c8cddfb3d5d1d4cc +d4cfb7e3a25b47d0d7d4e66b585fdf323e2c282b33221c212228292c2c01 +1d2c3244202416161a41708d16102a365e5184b6a2a19faea0a0a0a0a1a1 +a1a19ea1a09c9da5494c48991c5e2114262328231a2127170400101f1042 +abe0fbffffd3a686521d1c3197b39b1c24191d14251f1a1c222726252f2f +3528211f10147ac1b1b4b5b3b1bbafb0b3b6b8bababab9b4b3b7b9b6b6b7 +adacaba7a2a4a8adadb0b3b3b0acadb3b1b0afafb5b6b5b2b2b0a9abb7b7 +b1b6b8b4b1adaaa5a8abaeababaca8a29fa5a7abadacab706d6d70706d6d +6f77777673716f717273706e7074757371706f71747574777c7974737679 +7876767c787575777775737a7b7b7976757778797a7b7b7b7c7e807d7f7b +767b8587817f83817a7a81837f7b7b7c7c7e7f80807f8082838587888887 +8a8d8d898686888f8d8c8c88828184908f8e8c8a88878682828588858183 +88868a8a87878a8a878986827f7d7d7e808884828588888b8f8b89878b90 +92908c8f8883838482828589888787898a88878b88848384868787858989 +848284868482828485898f949792918e8c8b8c8d8d8a888c86847a797c89 +7b786b5f45391d20050b195d5552453502d7ffe9dfe8dacbdcd5d8ca0229 +602a2d2040aed13b2e42513c57d05862daccc2cbbe2e2033447e1568fdf2 +dbe9d7e2dbccc9c4c4eb3e02782e451a7eeed8e6d8d43d0f182717223539 +1d061f3f416a4c3833005bb8dae7fffffcb04194cfd4cebdb029222f4b37 +2781ffede1e1e5f8e6f2c9e9d3b8a74e4c58064989ffec2065ff5de7fa47 +fc463fbadde2e9bf868d421e300e77da660c20222b2f251f155a3d393dbe +c8fae4cc3b13332a2729231d73bde0f2e2b18fd3fde9f2ffe0fffffef0f0 +e4c2e9a15e53dfe6e4f3786166e535422e272931201c212228292c2c011d +2c3244202416161b426b8406001d2f5f5893c8b6b4b0bfb3b2b3b3b2b2b2 +b2aeb1b0acaab2575b59aa2c68240e150c0e0a0b1b2b22151d455a446bc9 +f0fffbfbc698794715152c94b095161a0f100718120d0f171e1d1a22222b +221d1a0602609e8683817f7d877c7c7f8284858585827d7c80827f7e807a +7b797673757b8082878a8c8988898a7f7b777a7d81807f7d7d767884847f +858783807f7c787b8083828284807a797d7c7e807f7e4542424543404042 +48484744403e4041423f3d3f434442403f3e40434443464b45403f424544 +4242484441414343413f44454543403f4142434445454546484a484a4641 +4650524c4a4e4c45454c4e4a454546464748474745464647494b4a4a4b4e +51514d4a4a4c535150504c4645464f4c4b49494746454444494c4945474c +4b4d4d48484949464b484744454849494d4444454a484d4f4d49494b5252 +524e544e49494a48484b4f4e4d4d4f504e4d54514d4c4d4f50504e52524d +4b4d4f4d4b4b4c4d51565a5d5857555353545655514d504b4944494f645c +5f564f372d1416000211585253493b09e0fff3e9f4e5d8e9e1e2d4092c62 +2a2f2a55d1ff766d7d90829eff938efbe6dae5d7452c34417e1668fff3de +ecdbeae6dcdcdaddff5307742c471f86fae5f6e8e44f1f29361d1b27311a +0c2b51557d593924002a7b8e89aab4bf81156599989490911b1b28493e33 +8dfff7eaebeefff1ffd9fae5cdbc636069145494fffa317aff72fcff54fa +29025d768ba38c6681432841238be76e12272e373e332a1c5c3b353dc2d0 +ffffff8872a5adafae9a7ebdf0ffffefbea2f4fffffffff3fffffffffff9 +d4f5a76563f2f9f4ff897276f5444e3b35363e2b26292c30333436092734 +3c4c2a2c201e20467189100a263664609ad2c1c2c0d1c4c6c4c4c4c4c2c2 +bec1bfbbbac2646e75c63b712b18271e1b10061d44586f98dff4bec3fdff +fffcffcfa78a55201c329bb99f2023181a11211b16181d23222029293326 +1e1600003f7453494743414d474c4f505251514f4c454448494645474343 +443e3d3f44494b4f5253504e4f524a4744464a4d4c4a494841434f4f4a4d +4c484544413f42494e4c4e504d47484a4745474645a1a0a1a2a3a2a2a3ab +a9a7a4a2a2a3a5a2a19fa0a2a29f9d9fa0a2a4a4a5a8aca7a5a4a5a6a5a5 +a6a8a8a7a5a4a3a4a4a7a8a9a8a7a6a8a9abacacabaaabaeb1afaeaaa9af +b8b8b2b5b6b2acacb0b1adb1b2b3b4b4b4b4b4b1b2b1b3b4b6b7b8b8b9bb +b9b7b5b6b8bcbbbcbdb8b3b4b8bbbab9b8b6b4b2b1adb1b5b5b1afb3b9b3 +b6b5b2b1b3b4b0b4b1afacabacafb1b4aeadb2b8b8b8babcbbbabcbebfbd +bbbdb6b3b4b4b2b2b5b9bab9b7b9bbbab7bab8b6b6b9bcbdbeb5babcb9b7 +babab9bab8b7b6babdbdbebcbab8b5b7b8bbc0c6bfc1b3a6857b6f6d798e +654d5849373f20262f655150401600cbd1bfcba3c8b6b194a57600002c24 +221537dfe0a26f19145c76bb0662baacbaa68a00022a3b540e51f5f2c9d1 +c4c8c2b7b5b0b1db320e6f1008006cf2d5d7de5e00243625242f39393a5d +91b5c2bbbcb79d6cb2f2f0f0ffffe5602a4543364e6a2c28a23a06020561 +dfdcd9d7d8d3d1e1dade7a3443573f7b39b7e9eada6137823f5b4d01835b +66ccf0f3e59a317976181d164cdc6e0029242a3125291e485e2837c438dc +a400000006000a15277fc5ded7d8beabbeda40b8bcbfc5aeb2cf6f83d3db +f57e793aebcbd4da6c5351d3341c2f242e25210836303323261c1229372b +302b0a2f301f685b962c34223d653e7ab0a6a59c9ca2a1a1a1a2a2a2a2a1 +a39f9da19f4d4f53912f472e12231c2b271c1f22150904040d2a0862c0e9 +f3fcffe2ca621915228da79d0d221813242a241d18191c1d1d272727170b +13120d41c0b0afb4aeb5b5b2b3b5b8bcbebfc0beb9b9b9bab5b2b0afb0b0 +ada8a6acb1b0b2b5b4b1acabaeb0b0aeb0b5b6b5b3b3b1a8a7b4b6b2b4b8 +b3b0aea9a5a5aaadabaaaba9a4a3a6a5a9abacab6e6d6e6f706f6f707876 +74717070717372716f7072726f6d6f7072747475787c7876757677767677 +797978767574757578797a797877797a7c7d7d7c7b7c7f827d7c78777d86 +86808384807a7a7e7f7b7c7d7e7f81818181808183858688898a8a8b8d8b +8987888a8e8d8e8f8a85868a8e8d8c8b898785847f8387878381858b8689 +88868587868386837e7b7a7a7b7e837e7c828788878a8b8b898c8d8f8c8a +8c8582838381818488898886888a89868785838386898a8b828789868487 +8786878586878b90939492908b888687888989838d89876e665d59647952 +3d4a3f2f32131b265d4d4e411b06d5dfd0ddb7decec7a8b78709093b3637 +2e54ffffca97413f90aced2e79c9b6c6b99f0c09263356185dffffdce6db +ded8cac4bcb8e0340d6e0e090370f8dddee45f00202e1a1d30331c040a27 +3a413e4a5852378edce6edfffae57868b4d0cfd6c56239a64310060968e8 +e6e7e9ece7e4f2ebee873f54725e954fcbfbfdf07b539e5b746211834246 +b7e1dfe8cc68896d08111c5cec7a022b24282f21261d4c673648da50f4c4 +2323252a1b272d3c92d6ece0dcbea8c0ea5bd8e1e9f4dedef9929de7e5fa +807c46fbdbe4e7785f5ada3a2233263027230a38303523281c1429392b32 +2b0c2f332269588c1f241536644587c1b8b8adadb3b3b4b4b3b3b3b3b1b3 +afaaaeac5b5c619f3d5436121809130e08111e19121c31435c368be0fffe +fcfcd1b9530e10208ca69a071b0e07171d17100d10131414181b1e10090f +0a002aa08882837c83817b7c7e818385868886817e817f7a77787a7e7e7b +76777d8485898c8d8a8887857c7775777c807f7d7d7c737481837f848985 +82807c787a7f828081817f7a797c7a7c7e7f7e4342434443424243494745 +423f3f404241403e3f41413e3c3e3f41434344474b444241424342424345 +454442414041414243444342414344464747464546494c48474342485151 +4b4e4f4b4545494a46464748494a4a4848464747494a4c4b4c4e4f514f4d +4b4c4e525152534e494a4c4d4a49484846444341454b4b4745494f4b4e4d +49484848424845434142454949494041444c4a4c4c504d4e4e5251514f52 +4b48494947474a4e4f4e4c4e504f4c504e4c4c4f5253544b50524f4d5050 +4f504e4e4f5357595a5856524f4e4f51515047534f503c3b393e4f684430 +3f33242a0d15215a4a4f431f0bdee8dae7c2e9d8d2b3c391120f3e363833 +62fffffbcb7472caeaff61a2e8d1e0d7bc2519273055195dffffe0ebe1e9 +e5dbd9d2d2fd49126a0f0b0879ffeaeef4710e2f3d28242827160412354f +575054543d0d52908f8eafb1a94839819b97a4a24b31a542110f1472f1f0 +f0f3f5f2f2fffbfe9853688570a45cd6fffffe8c68b47188732081240b5a +7a88a199487c7013253473fc860c3730363d2f2f224d663750e868fff775 +8996a2969f9b99d6fffff1e7c8b3d9ff92fffcf7fae2e7ffa8b8fffeff8c +8554ffebf3f8886f69ea48303f353d342f16443c412f3428203545373e37 +183b3c296e5f95292e1f3e6c4d8fcbc4c6bdbdc5c7c5c5c5c5c3c3c1c3be +babebc686f7eba4a5a391a281c211407112f3f5580bedbe3a5dafffffffa +ffe1cc6a1f172592aea3112317112126201915151819191d1f23170c0c00 +000b79574b494148474546484b4e4e4f4f4d464446433e3b3d44494b4641 +41474d4e515454514e4d4f4d4c4a4c515453515150474754565253514947 +45433f43484d4d4d4f4d4a494a43434546459fa0a1a1a2a4a5a5aba8a5a2 +a2a2a4a4a2a2a2a2a29f9b989fa1a3a2a3a5a8aaa6aaaba7a3a2a5a8a3a7 +aaa7a19fa3a9a5a7a9a9a8a8aaabaeaeaeadabacafb1aeaca9aab1b8b7b2 +b8b6b2aeafb3b2afb1b2b4b5b5b5b5b5b2b3b2b4b5b7b8b9bcbbb8b6b4b6 +b9bcbabbbebfbab3b3b8b9b9b9b9b8b7b5b4b0b3b5b2aeb0b7bcb3b5b4b0 +afb1b1adadacadabababadaeadaaabb3b8b7b5b4bbbebfbebbb9b9bbbab6 +b5b8b9b6b4b5b8bbbab6b8bcbbb6bab8b7b8babdbebdb4babdbbbabdbebc +bcbab7b5b8bab8b7b5b3b1aeb1b4b8bcc5b7b9a5985636282c172e30364f +3b3c2e212633494c4738142d16000016001a0000000073aa72a61a133a0d +96dcc1d8e09d4b0b790766c49bbaa5c23d27505242463d8aafcadad0c4c5 +bfbdb2afd9330e6c7b663b69ecd3dd8103292e302139393d3c518dbfd1d7 +e5eee3bccce2f7eafdffff9a2648403b3a5c5100563e3930bfb0d1f7f0e2 +d5c9dfe4bbe6d44b4b9117149a30baeee9ed673b878096c9173b6576bbe9 +f7ec9f00176a142e4366ca77002d2c2c2d212b2657382565d03192000000 +0115150038a2d4c8d5d9c0bacdd0b62844d7e4d4dadcd8264ccfd3f76d62 +44f4c6baab3d4368e4660e31232c06240025271f402712013941382a2400 +00360f723f3f162216525d126bb5a29ea39ea2a2a2a2a3a3a3a3a5a59d9b +a69b514f5b745a382501152421251f19160a080d00041d1b1583b8e9f0ff +fbeba023201a75b7b20a2c2e0f1a1c232a2a251a1312212017090110261c +19b7aeadb5aeb7b0b3b4b6b8bbbec0c2c1bab8b8b8b4b1b1b1b3b5b1adaa +afb3b1b1b2b3b1aeacadafafabaeb2b5b5b2b1b1a8a4afb3b1b3b6b3b0af +aba6a6abaeabaaadaea9a8a8a8aaacadac6c6d6e6e6f7172727875726f70 +70727272727272726f6b686f7173727375787a777b7c787473767974787b +787270747a76787a7a79797b7c7f7f7f7e7c7d80827c7a77787f86858086 +84807c7d81807d7c7d7f80828282828182848687898a8b8e8d8a8886888b +8e8c8d90918c85858a8c8c8c8c8b8a8887828587848082898e8688878483 +85837f7f7e7c7a7a79797a7c797a82878684838a8d8e8d8a88888a898584 +8788858384878a8985878b8a8587858485878a8b8a81878a88878a8b8989 +878686898d8e8d8b898481808385888a7f8a84824b3226291327282f4837 +3825171c2b4448453917342104042805300c140b0589be86bb322b5428b3 +faddf6febf7637a12879d0a5c6bad94f304a48414b4494beddeee6dbdad2 +ccbeb7df360d6b79673e6df2d9e38402252324112a2b240a05213a3c3b51 +69776997c4e9e5faffffac5ba2c3cbbec58f0d5f3e3d35c6b9dbfffdf0e6 +dbf1f6ccf7e55a5aa43231b144cbfcfaff7e54a29baddc253b4c56a6d7e1 +ecce2b235f02214974db84002d2a2a2b1f2a275c433577e649ac181d1d26 +3632134eb5e3d6dee0c4bcccd4c33e5ff6fffbfffffc4564e0dfff736850 +ffd3c8b7494f71ed6d15372932092700292923422b14053b453a2e260400 +3a16763d370812084a5c1978c6b4b0b3afb3b3b3b3b2b2b2b2b2b2aaa6b2 +a75d57607962412e0612180d0e08080b070d201d334e4e49b2dffffafee9 +d388131a1974b6af052524050f11181f211c140d0912110c02000f1f1005 +9b89848880867d7c7b7d7f8286888a89848082807c7a7b7c7f817f7b7b80 +858386898a888785827a7574777b7e7e7d7c7e74737e828084898683827e +79797e807d7c7f7e79787a7b7d7f807f4142434342444545494643403f3f +414141414141413e3a373e4042414244474943474844403f424540444744 +3e3c404640424444434345464949494846474a4c474542434a51504b514f +4b47484c4b484647494a4b4b49494748484a4b4d4c4d52514e4c4a4c4f52 +505154555049494c4b4949494a49474644474b4844464d524b4d4c474646 +45414342424042444748443e40474d4b4a4850525452504d4e504f4b4a4d +4e4b494a4d504f4b4d51504b504e4d4e505354534a505351505354525250 +4e4e51545453514f4b48484b4e4f5046524e501e0f0d1808212529402b2d +20151a294147463b1c3a270b0c32103b161e161294c78dbe322b5531c5ff +ffffffe5a368d25399eabee0d9f8673f4c4646514c9dc5e4f7f1e9ebe3e1 +d4cef94912677a6b4578fee7f395123431301c312a1f0b092e4b5050616e +6b4b637c91879dabba70276f8d968d9d76005a40403bcec2e5fffff9f0e7 +ffffdcfff76d6db54341bf4fd3ffffff8e68b7b0bfeb32392e1b49718ba6 +9a0a17630e35638eed940c393737382a302b5f47428dff79e76888949ba7 +9a6f9aeffff0edeacfc8daf1f7778affffffffffff5a7efcf9ff81745eff +e3d5c7575d80fc7d2545394018360e35362f4f3721114851473a33100c46 +207f4842151d1555642180d0c0bcc2bfc5c7c7c7c5c5c5c5c3c3bbb8c2b7 +6d6a768d6f48330c1d26191810101b22336288b7d7ceb6fffffff9fdf7eb +a82d281f7cbeb60c2d2d0d17192025262118110e17161209040d17000076 +5c504f454c44444446484b4d4f4f4e484544433f3a3f484d514c48474c51 +4f515354504e4c4d4e4d4b4e5255555352534c4a55595756524b4a494540 +42474c49484d4d49484844444647469fa1a19fa0a6a8a8aaa6a2a0a0a2a3 +a3a1a2a3a3a29e9a979fa3a5a2a2a5a8a8a5acaea7a0a1a6a9a0a5a8a6a1 +a0a5aaa6a8aaaaa9a8a8a9aeafb0aeadacaeb0abaaaaadb2b6b5b3b1aeaa +aaaeb1b2b0b0b2b4b5b5b5b4b3b4b4b3b5b7b8b9babdbab6b3b3b6babdbb +bcbfbeb7afafb4b9babbbcbcbbb9b8b3b6b5b0aeb3b9bcb3b5b4b0afb0b0 +adaaaaababababababaaa9aeb6b9b6b3b4babec1bfbab7b8bbbbb8b8bcbe +bab8b8b7bcbab5b7bdbcb5bdbbb9b9babbbab9b6bbbdbbbbbebfbebcb8b4 +b3b6b6b3b0aba9a9a8acb0b5b9c1b5b39e973d191f210d182735583e301d +191d3b49645840231741618de55ecca34b6365dd4c87e462a2390b6fb3c9 +c5d2d2d6cac994b6b0bdb087c937001e235e852349c3dfacccc5cac7c5ba +b5e03a1d1a36394181f9d2820c1d2c431e3b34394b5e83b6d9e6eafdfff2 +bdeee2eaf2fff8ef4f1b45393c6d7a002dc621451eb299909da7c7ddd9ca +afa48596713c4f1e3cb83271eccbf2ad9a9f6155dd601b5c77c2ecfbef98 +00305b2e08626dcc95002332322c252a2767362d5fce5900000511160014 +5cbcc1c4d5c6abbde3dbb5c3be57195c878d791b48cff0c7de567a4bc3e5 +d8de56605bf5a62521031c26888c001a0100169b28180b080c489907011e +554a3b3f0f156373147ac5a89aaab4a3a3a3a3a4a4a4a4a3a39b99a89351 +4d62425d2c1f0f1d2a1824241e140607100000082b122694d3edffffeec3 +0a1c1a45bcd226292c1211192126261d16151a251f120c02183d3410acae +afb6b4b7afb2b2b2b3b6babdbfbcb6b3b5b6b4b4b7afb2b4b2afadb0b1ae +aeaeb0b1b0b0b1b0aeacaeb2b4b3b0acb0a9a3acafafb3b4b2b1b1ada7a7 +aab2aeadb0b2afadadacadafb0af6c6e6e6c6d73757577736f6d6e707171 +71727373726e6a676f73757272757878767d7f787172777a717679777271 +767b77797b7b7a79797a7f80817f7e7d7f817978787b808483817f7c7878 +7c7f807e7b7d7f808282818083838587898a8b8c8f8c888585888c8f8d8e +9190898181868c8d8e8f8f8e8c8b8588878280858b8e868887838384827f +7c7c7a7a7979777779787d8588858283898d908e8986878a8a87878b8d89 +8787868b8984868c8b848a8886868788878683888a88888b8c8b89858384 +87898986817f7c7b7b7f828588818c848c3d222c2c171d2835593e301813 +143545635641271f4c709ef972e2bc647b80f867a2ff7fbf532487c8ddd8 +e8eef9f0ebaec4b8c5be9ee24b091a195b842650cff0bfe1dcdfd9d4c7bd +e53c1c19363a4485ffd8850e1b24370e271a1618151f36424144607e8268 +b8c5ddeefff7f6716abaccccdec62238c81f421ebba69eabb5d5ebe9dabf +b496a7824d643856cc437ef7d8ffc0b1b6786bef6d1a4157addae3ecc41b +384c1a00667bdca2002330302a242b2a6e423d73e5710d19243235172e71 +cecfd0deceb2c1e7e1bdd1cf6b3177a4ad993863e5ffd6e95f8357d1f3e6 +ea626c67feaf2e2a0a232d8e92001d07001c9e2e1b110b124b9f0a07265c +4a353301095b711884d3b9acbac4b4b4b4b4b3b3b3b3b0b0a6a4b49f5d53 +5e3c5d302818202508100d0907020a201b2538624d63c8f8fffff7d1a700 +151a45bcd123242508070e161d1d17111011150e07050016382b00948d8a +8d878a807f7f7f8083878a8c8b858284858384867b7e7e7e7b7b7e827f80 +8385868787867c7876787c7f7e7d798078747d83808587858484807a787b +807c7b7e7e7b797b7d8082838241434341404648484844403e3d3f404040 +414242413d39363e4244414144474742494b443d3e43463d4245433e3d42 +474143454544434344494a4b494847494b444343464b4f4e4c4a47434347 +4a4b494547494a4b4b48474949494b4d4e4d4e53504c49494c5053515255 +544d4545484b4a4b4c4e4d4b4a474a4b4644494f524d4f4c484647444140 +40404244464745413e434b4e4b48494f5356544f4c4d50504d4d51534f4d +4d4c514f4a4c52514a53514f4f5051504f4c51535151545554524e4b4c4f +504f4c4745434243474b4c514855515e17071b2618212c35533426141315 +35446157432a225077a6ff7dedc36b858bff72a9ff7dbb522893ddf8f6ff +ffffffffcfdecddad8bdff64181b1864943760dfffcef2eef2ede9dad2fb +4b2117363e4b90ffe6961d2933431932231c1d1c2945535252697b6e417a +757d8ba8a7b23531839599b3a81030c5224b28c4aea7b4bee0f8f6e9cec4 +a6b9945f754763d74b84fde0ffcfc1c88a79fb7615241c50748da58f002d +51260e8196f3b30c2f3d3b352c302f744e5498ffb9627fa1b3aa7d82b4fe +f2e6edd9bccdf3efd4f8fb8e4d8ab2baa84a78fcffebfb709265defff3f8 +707a75ffbe3d391a333d9ea2102e17102caf3e2c211c225caf1b15316656 +41410e15667c218ddcc3b8c9d4c6c8c8c8c6c6c6c6c1c1b8b6c4af6d636d +4a693b2f1f272c131c1d1a19131b426691c0f2d5cefffffffdffedcd1727 +244dc4d72a2b2d100f161e22221b15141418140d0c0517321c0072625657 +4e5148484848494c505153514b47494a48464c494e4f4e49484b4e4b4c4e +504f4f4f514d4a4a4c505352504c524d4851565454504a4b4b474140454b +4746494c4947464747494a49a0a2a19d9fa8acabaaa6a09ea0a2a3a2a0a1 +a2a1a09e9e9da2a7a8a3a2a6a9a7a4a9a9a3a0a4a8a7a2a2a2a2a4a6a7a8 +abacadaca9a6a4a4aeafb1b0aeacacada8a9abafb2b3b4b5afa9a5a6abae +aeadafb0b3b5b4b4b3b2b4b5b4b6b7b9babbbbb9b5b4b4b7b9babcbcbebc +b4aeb1b9b8b9bbbcbbbab8b6b5b8b7b2b2b8bab8b4b6b5b1b0b2b2afacab +abaaa9a8a9a9aaaaafb5b5b2b2b5babbbcbcbcbbbbbbbcb7b6babbb9b8ba +b7bcbbb5b6bebdb4bdbbbababbbcbbb9b9bdbebab9bbbcbbbcb8b4b4b7b8 +b4b0a7a5a5a3a7a9acaeb9b0ac9599331b489aa59d80494933282c1d1d3a +455b4d311a2e76dd5b4737996239c8404509504d36d7701b8bc4a4b2b3d1 +c3bac8c7b7b8ae9688ce31081c24051563e9dfd7cccfc7c8c4c3bebbe53c +120e1a110a4cbe7418275130262b72544b698fb5d0e0ecf0f9ffeec4efeb +f0fffff7a72f313b323f6d7f0c2f652c4008140300074aa5dde1c9007c5b +4673471133652538393f7fdcdfd8eaf0e1f4ee4e5263d1f1fdf37f003635 +3b23cd03d780081935352a2f2e2d723d4a8d37000f14001c071c82adcbda +dce4b8a1c7d2c8ddd6bad0b2b7778b89cfdbdabcd9db1b563c5fdadcdb5c +6114d0ecdaf5e3d2c1ebe8d1dcb4d3b8f8eec0e0e8c8b4f8a2a8864d4b6c +878a756897155096b2b3a39da5a5a5a5a7a7a7a7a1a6a09cac8d54526f25 +4b36162226211722221b150a040a080003131c005fa6ecf0ffffff250a14 +005d8c2b1b1d1a1a1e1d1a15101219231913080c000e372a1ca5aeafb3b6 +b4afaeacabacaeb2b5b7b5afa9abacacaeb6aeb0b3b1b0afafaeb2afb0b0 +b2b2b2b4b1afadaeb2b3b2ada6afaca3a9abadb2b1b0b2b4b1aaa9abb5b1 +b0b6b9b6b4b1adaeb0b0ae6b6d6c686a73777676726c6a6c6e6f70707172 +71706e6e6d7277787372767977757a7a747175797873737373757778797c +7d7e7d7a7775757f8082817f7d7d7e7677797d808182837d777374797c7c +7b7a7b7e808181807f83848688898b8c8d8d8b878686898b8c8e8e908e86 +80838b8b8c8e8f8e8d8b89878a8984848a8c8a87898884848684817e7d7a +797776757578797e8484818184898a8b8b8b8a8a8a8b8685898a88878986 +8b8a84858d8c838a88878788898886868a8b878688898889858385888b8a +867d7b78767678797b82818b83973e3162b2b9ad8a504f392b2b19173641 +594b321e367fea6c5b4baf7b52e35c6327716c56f68a339ed4b1bfc3e7df +d9e3ddc2bfb5a5a1e94714181a001163efe9e5dee3ddddd6d4c9c4ea3e12 +0d1a120d50c47a1b264d2516175b300e162a3c4242444b5f828172b8cbe0 +fffbf3b66199c7d0cbc8b31e30672b38041e160b1858b3ebefd6038c6c57 +8659264b7c3646434788e7f0ebfdfff3fff94b3743bcdee3efaa273c2524 +14d111e78d0c173333292e2f327b485aa14d0929301b37213497bed9e5e3 +eabda6cedbd4ebe4c7dfc1c7899f9de4f1efcfebeb2863486be6e8e7686d +20dcf8e6ffecdbcaf4efd8e1bbd8bffdf5c5e7edcfb9ffa7af8f554a657a +7c696095195aa4c3c4b3adb4b4b4b4b3b3b4b4acb1aba7b5965d54641643 +351c2b2e230d110b0707040819241d334c5e3d9dd6fff0f7f3e30f021300 +5e8b28161813131413110c0a0e151a09000005000e34220d8e8e8b8b8b89 +848382818385898d8f8d87848689898b8d7c7a7b7c7b7b7b7c8080818385 +878887807c7a7b7f82817e77827f787e82828784838587837c787a827c7b +7f807d7b7c7e818383814143423e3e474b4a47433d3b3c3e3f3f3f404140 +3f3d3d3c4146474241454846414646403d4145443f3f3f3f414344454647 +484744413f3f494a4c4b49474748414244484b4c4d4e48423e3f44474746 +4445484a4a4a4746494a4a4c4d4f4e4f514f4b4a4a4d4f50525254524a44 +474d4a494b4c4d4c4a48494c4d48484e504e4e504d494749464342414041 +424345434341464c4c49494c5152535353525252514c4b4f504e4d4f4c51 +504a4b535249535150505152514f4f5354504f515251524e4b4d5052504c +43413f3d3e4042444c4b56536e1e1c59b4c2ba94564d2f22291a1937425a +4c34213984f2746456ba8057ec676e32786f55f18733a5e1c4d2d2f5f5f5 +fff5d4cfc8bcbfff5e20171b102c7dfffffff6fbf4f2eae6dbd5fd4b140b +1a16165bd0882c365c332122633a1d283c4d525151525d73644275767e9a +a5a975245c8a969aa59d122a66304512271c132063bef8fce6129c7c6997 +6d3757843d49454a8dedfaf9ffffffffff4419085f778ca875063028342b +ee2eff9e18223e3e31343336845c7cd4966597aba2b88f8cd6e9f4f7f5fa +d0b9e0eae0f4efd7f6dee9afc4c0ffffffddf7f838735677f2f4f3747b2e +eafff6fffdecdbffffeaf4cdebd1ffffd8f9ffe1ccffbac19e625a758b8b +776da02263adcdcec0bcc7c9c9c9c9c9c7c7bec3bdb9c6a76e61681b4e43 +2832302215212723201207204c6eb3e4fdc4f0fefff0ffffff361a210963 +912f1d1f1a1a1c1b16110c0f161d0c04020c05102f15006e655b5754524d +50504f4f5155595b59534d4f515153574b4b4a4a494949494b4a4b4c4e50 +4e4e48434344484a49463f494841474a4b504b484a4c48413e424b464549 +4b48464646484a4a48a0a3a19c9ea8aeadaaa49f9d9fa2a2a1a0a0a09e9e +9fa2a4a4aaaaa5a3a8aaa7a3a5a49ea3a8aba5a79f9d9fa9acaba4afafb0 +aca8a2a19fadafb1b1afacabaca6a8acb1b2afb1b4b4ada7aaaeafaeacab +adb0b2b3b2b2b0b5b6b7b8babbbdbdb8b7b5b5b6b8b8b8bcbcbcbab4b1b9 +c4b6b7b8b9b8b6b3b1b5b8b8b5b6bcbab4b5b8b7b3b2b4b5b1b0aeaca8a6 +a6a8a8a9aaaeb1b0adb0b6bab7b7b9bec0bebbbbb5b2b3b6b5b8bab7bcbc +b4b7bebeb5b9b8b8babcbebebdbcbfbeb9b6b8b9b7beb9b6b7bcbdbab5ac +aaa6a3a1a2a2a3b0ada4878f22196335120028303d31312c131733435053 +401d3894f0051ab1f02e09e80cb49bea6f00e86100a6b0b1b3aaa8c2c0c1 +b9b9b8b5a7b1ca1206131a1e0050d3b0c4d1ccc8c3bbbcbbbce439012219 +1414619d0f58674c232b49d1606888b4dae5e8ede9f2f0c9bbe8fff7f9fa +f44c29464037495b002331505f332d281d0f105bbae9ded500a37557514b +07365f3f41571956dad3cbd4d3ddd0f843624ecee5fffe660020362e1c3b +00c4c41d163532263530333a493916000b080814052487b3c9e0c6bcbeca +cdbcb6bdc0c7d2b6c3d0d4e6e0d1d1dcc5dddb31717456ede5ab597d22bd +d1c4c9cec2b8abbfc5cbd8c4b9cbceeae6d3ebdad1d6dab2614d6851e5e1 +8188184478a8aea1b3aaa8a5a3a1a0a1a49fabaaa5b08a58597429545504 +15201a1a1e150f0f0801030f03000400101a7cc3f7f6ffffba7234111233 +29221d1b0d1b1c1b1b1b18161918110a17080f35252ba1aeaeb0b6b1aeae +acaba9adafb3b5b5ada7a7a6a6a9b2aeb0afb0b1b1afacb7b5b2b2b1b2b2 +b1b3afaeaeb1b3afada2b0aea5a8abacb3afafb2b5b3aba9abb7b2b2b8bb +b8b6b4abaaaeabac6b6e6c676973797876706b696b6e6e6e7070706e6e6f +7274747a7a7573787a777376726f7179797675706b70777d79758082817f +797471717d808282807d7c7d74767a7f80808285857e78787c7d7c7a7a7c +7f8181807f7d848586878a8b8d8d8a898787888a8a8a8e8e8e8c86838b96 +888a8b8c8a888583878a8a87888e8c86888b8a878688878382807b767474 +747477787c7f7e7c7f85898686888d8f8d8a8a847f8283848589848b8983 +848d8b8286858587898b8b8a898c8b86838586848b8885888d908d8b7f7d +7974727070707b7e82768f303180512a1036394638342a0e122e3e4e5341 +21409dfd132bc3ff4722ff27cfb8ff8e10ff7e16b9c1bdbfb7bad9d9d7cb +c4bfbdb6c6e224121114190051d9bad2e2e0dcd7cdcdc8c5eb3d00201713 +1463a31256623f121734bc3614183448443e444963776c78bce4e5edeef7 +7175c4d6c7c09c162c31546027253230202169c8f5eae209b3866a66601c +49714e4c5f1e5de4e1dde7e6eddeff40472eb7d4eafa831425291e11400a +d3cf1e1132302638373c46594e2e192927252a1a3898c4d7ecd0c2c3d0d5 +c7c3ced3d9e1c1cad8ddf4f3e5e3ecd3ebe941838667fbf3b762862ec9df +d2d7dccfc5b8ccd5d8e3cfc1d1d4f1eddaf4e3dadfe3b964455c46dddb7d +861a4e86bac0aebfb2b3b4b6b6b7b6b5aab3b0acb7915f586a1b4a510619 +241a131003000102040e222128383f555cb1e2ffeaf6eca5682f0e0f3026 +211c190811111010121414130a030112070f321b1b898f8a878b86858484 +8384858a8e90908884848585888a7c7b7a7b7d7e7b7a8583838384858584 +827e7c7d8082817f7583817b7e81828982828588857d787a847f7e818481 +7f807c8081817f4144423d3d474d4c47413c3a3c3e3f3f4040403e3e3e42 +4343494944424749464242413b3e454642423c383c4449463f4a494b4845 +40403f4c4c4e4c4a4544454143474c4d4c4e51514a444549484945424447 +494c4b4a464c4d4c4c4c4d4d4d4e4d4c4b4d4e4f4e535253504b47505a4a +494a4b4c4a4745494e4e4b4c52504a4d504f4a494b4b4746454341414144 +424243474a4944474d514e4e5055555552524c484a4c4a4e4f4b5150494b +5352494f4e4e50525454535255544f4c4e4f4d54504d5055575451464642 +3e3c3b3b3b474a544b6d17237c55341c413e45312d2b1216324251554324 +43a4ff1c35cfff4c27ff30dac0ff910fff7c16bfcbcdcfc0c4ebefefe1d6 +d1d2cde1fc381e12182d186df3d5edfcf9f4efe3e1d9d6fb4805211a191e +70b1236b765122233dc3402b314b5d54494b4b5d644b44758d7f899cb02c +348499949a860a272f556535343c372a2b74d5fffaf219c3987b79752d57 +7b5550622263edecebf8f5fce9ff3b2c0059688db055001f3029215622e8 +e13325433e3241414b5e7d85787697a4a5a2858fddf0f2fcdcd2d6e6ecdb +d3d8d9dbe6d3e7fdfffffffef7fbe0f6f650919271ffffc773953cd5e8dd +e2e9e0d8cbdde4e9f5e3d6e7eaffffecfff4ebf0f4cb755a7057ece98b93 +26588fc6ccbecfc5c7c7c7c9c9c7c7bec8c6bfcaa371666b1b535f132225 +1a1a1f1d1a180c0008315794cae6eecaf3fefff4ffffc483431916372d27 +221e0e1919161615151513090204180d112d0f0265635651544f4f525150 +5052565a5c5c544e4e4f4f5256494948474b494945504e4d4d4d4e4c4947 +434142454746433a48463f4245464d47474a4d4a423e404b4645494c4947 +474446484746a49f9c9da4a8a9a7a4a2a0a4a9aaa59f9fa2a4a4a29f9f9f +a4a7a6a1a1a6abaca9a6a29da1a5aaaaa8a39f9fa5aaadadaeaeb1aaa6a2 +a7aaacabaaabacacaaaaacb2b7b9b5b2b1b2aea8a7acb0acacafa5a6a9ac +acadb1b3b7b7b7b9bbbec0c2beb6b0b1b7bcbebeb7c2bcb1b7bcb9b7c0bd +bab8b8b7b5b4b9b9b9bbbcbbb8b5bbb7b4b4b8b8b4afaaaeafa9a8acaca7 +a29fa3acb3b2afaeb0aeb1b9bcb9b9c0b4b1b4b7b7b1b3b8bfbcbbbabdbd +bebcc1b6afb2b8b9b8b7b7b7b9babbbcbcbbbab8b8babebfb9b1afaba6a2 +a1a1a0a1a8aa97967e24125a7a4b6931325933341c191e2f525658292828 +a0f200839bebb336ee288f97f0cd13ea2d1194aeadafa6b4acafb3b4c1b3 +b2b6abc61d0b2414241e69c7b4aebab6c4ccbdbcb6addd3d0a282f1d3c40 +2b649953413e3eb3ff4c86c8e8e1f6f5e1e1f3bfa5c2e8f6fbfef6c01b2f +403d4463842108151721232e2e0ff4682b9beeddec00a67f5c754f01186f +4e427d382ad5b5bcc3ccd1e37e2c6b71d1efecff3d15342f328bf3e6d0cb +bf2e0e1e0d2a232d4a2d0d0103060507204d9cc3cbd0d8b8a1b4c8cfc6bb +b3b1b7cfd2cfbfb4c0bdd9d2d3dfdebc40693f73f0db9c56851adec3bfb7 +bdcec1b2a4a8b3bdc2c2beb8c1ddcfcbdcc9b0d39b5e586935bdb1787943 +3f40bfa4a7abb4b1a9a29a96979d9eb9a4aca97a53565912793e0a1b2015 +1c1510100b07060a111a00050913163296d9f9fdffffd3212b233125062d +0f131e1c1c232a2a1b0f0d0e0507151f32314dc1bca4b2b2bdb3abaeb2b4 +b5b0b3b8b9b8b3acafb5b5b1b6ada7acb0afafafb6b6b5b5b5b5b5b6b6b2 +afadafb2b3b2a9acaba6a6acb0b0b4b3b2b1b0afb0b0aaacb0b5b7b6b3ae +a7adb0aaa8716c696a71757674716f6d717677726c6f727474726f6f6f74 +77767171767b7c77746e6b6d73767874716c6d72787a7b8184847f787678 +7d7d7c7c7d7f7f7e7c7a7d848685848384807a797c7e7a787d787c7f7f7e +7d7f8183838487898d8f918d888183888e8f9088948d83888e8a89928f8c +8a8a8987868b8b8b8d8e8d8a878f8b88888c8c86817c7f7e77767a787370 +70747d8483807f817f838b8e8b8b8f817e7f84827e7e858a898787898a8a +898e857e8187888786868688898a8b8b8a898a8a8c8f908a84807c777372 +72706d6f76707f782a236f8f5e783b385d35341a14192a5055572a2b2fa9 +fc038fa9fdca4fff3da2aaffe52fff4b2eadc4bebcb4c2bbbfc3c4cdbfbc +c2bad229132513231f6ecebfbdcacad8e0cfccc5bae8450b262815353f2e +6694452921229cfa23223d49364040384b775e6398d0e6ecf0edd463a3d3 +d1b4aea42c121f23241320311dff7637a7fae8f902b5906e8a6316297d58 +4b843f32e1c6d1d9e1e2f388284e50bbe3e1ff4420372f3491fcf3ddd2b9 +23071c10312f3e60462c23282d2d2a3257a8cfd6dbe1c1aabcd3dbd5cbc5 +c5d0e3dad3c2bbd1d4f1e4dae1e0c352815a8effeaa75c8c24ebd5d3ccd1 +dfd1c4bfc6cdd2d2cec5c0c8e4d9d8ead7c0df9c5544562cbcb980784245 +4ed5b7afacb2b4b9bcc0c1bdb8aabba4acae7f54555610763b09181b0e12 +0904030302060e1929182d3e4e5368c0f3fffaf7f2c51218132722093514 +14170f0b121e21190e090a0407141d2a2435a4987c898993888081858988 +85888d8e8d8881848a8a84877b757b7e7e7d80878786868686868788847e +7f818484847a7d7c79797f838387868584838282827c7e8284868582807d +8586827e443f3c3d44484947444240444948453f41444646443f413f4447 +464140454a4b46433f3a3d424647423e37383d43454646484b4a47474c53 +514e4b4946443f4149515759555352534e48474b4d4748483f4045484a4c +4e5053514d4c4a4a4a4e524d494850535755505955485053524e5653504e +4e4d4b4a4f50505253524f4b504c494b4f4f4a4641474642434748433d3c +4049504d4a4949474850534f50554c494b4f4e474a4e54524e4e50515150 +554b44474d4e4d4c4c4c4e4f505151504f4f4f515758544d4a48433f3e3e +3f3b3a44475d621c1d7094647b3d385c32321b181d30555a5d2f3237b0ff +0c9bb4ffd053ff42a8b0ffe730ff4d32b4d1cecdc1cfced6dcdde7d9d7dc +d1e8391e2a19313181e1d3d2e1e2f0f8e7e3dacdfa520f272f204551417b +ab5e413731a6fd2b3c5c65494d473b4a6f4d43668a8f878fa08d19588d97 +909aa12e142023292031402aff8345b7fffaff15c8a4849f7b2b3b8a6454 +8c473defd6e4eef6f6ff94293e1d586d77b1221a3e37338ffffbe6e5dd4b +28342343455c8f867f879bacb3a28895dcf7f2eff2d0bbd1e9f1e8dbd1ce +d7eef1f0e1d7e5e2fdf2edf6f5d55e8b6197fffdbd749f30f1d7d2cfdaf1 +ebdccacedae3e9e8dfd7dbf4e3e1f3e2cdefb06a5d6c3fcac48b8652555b +e3c6c4c1c7c5c8c9cbcacac9c0d4bec4c49369655d137d44112121151b15 +12141009080f1c4667a6daf0e1d2fcfffff3f7fcdf2f2b1e30290e381718 +1e18131a22241a0a0000000919202714197c64414b4b5951494a4e52514e +51565756514a4d53534d51464043494648484f4f4e4e4e4e4e4f4d494444 +46494c494245444040464a4a4c4b4a49484747474143474a4c4b4845434a +4c4744a39f9c9fa4a8a8a6a4a3a2a4a6a5a19da0a2a3a2a09e9e9fa4a7a6 +a1a0a4a8a8aba9a4a2a4a8acacaba7a3a4a9afb1b0afadaba5a0a0a6adad +adabacaeaeaba9a9adb2b3b1b0b1b1afa9a6aaacaaabaea9a8abacadadb0 +b0b5b6b9bcbebfbfbeb6b2b0b2b7bbbbb9b3bdb6acb4bbb8b8bdbbb9b8b9 +b9b7b6b8b6b5b5b7b8b7b6bbb7b4b5b8b7b4b0acafb0aba9acaca7aaa3a2 +a7acaeb0b4b3b0b1b7b8b5b5bbb7b3b2b6b7b6b7bcbfbdbbbbbdbdbdbbc1 +b7b1b4babab9b8b7b8babbbdbebebeb6b5b6b9bdbeb8b2adaaa5a3a2a2a1 +a3aea1a089761e00d6402974641a744c1f20181a254c54592b1525a4e35f +9194b2e46adf0307a6e44900da2125a2b4b2b0b3b2afb2b1abacaba2bfbc +dd1f051014100053ceb5aab1b8b7c1bcbcbcbcdd220e0b272b07298dbe87 +311f2f86ffff52b9d6ecf7f5f0e7e4b98b92cbedf4fbfef76c1c2b2a4366 +5dec5f12020825323c3f3bf58b0c79f5dcc2139167515d411b14370c0023 +1f46ca9ea2aac4d1e254295e79d6f0f1fb2e1b1d1c1b7aded7cad5d5e69b +693925257d411500070f0400125ba5bfd7ccdac7cfd0c3bbc0cdd0c1aea7 +b6c5d8cec2b1acbcd0cfe6fdc225505283dff3785f741ff2d6cbae9eafc1 +d2c1aa9da7becbc6beb3c2c9d0d2c6c5e164606e5a4bd0b251725a275eb3 +a2b0b5b6b2aaa09794969d9db99ca9ba6c506752277e380d1a1b1519120e +0c0a06080d1b150c050c090c1771b6e8f4ffffdd3627292c1619120b241c +18181c22201508120b0914212d373170c4baaab6b5beb1acadb1b5b4b2b4 +b9bdbebab4b4b9b9b5bab1acaeafacaaacb4b4b3b2b1b1b1b1b3afaaa9ac +b0b2b3afb0afadabadb3b9b3b4b5b5b3b0acaaa5abb1b4b2b0b0b1a7adb0 +acaa706c696c7175757371706f7173726e6a6f717271706e6e6f74777671 +707478787875706e7074787877737071767c7e7f8283817a74747980807e +7d7e81827f7b75797e8081828386817b787a7a76777c7d7f7e7f7e7d7d7d +818286898c8e8e8e88838183888c8c8a848e877d858c89898f8d8b8a8b8b +89888a888787898a89888f8b88898c8b86827d807e79777a787578737277 +7d7f8185848183898a87878a847e7d81828182878a888787898989888e86 +8083898988878687898a8c8d8d8d8887888b8e8f89837e7b75737272716f +756b76706d2105ea533b806d1e764c1e1b1315234953592e182cabec699b +a0c3fb83f41515b4f35d08f84044beccc5c0c0bfbcc1bfb9bab9adc9c4e4 +25091317120459d7c0b9c2cacbd5cececccdec2b0f061d2303278bba7a1f +09186be5da0e3d3740423b3b42594a3a5dabdbe6ecf4f89078afc1cdc390 +fd621b10162a222b4147ff971885ffe9d122a27863715530234415012925 +4dd7b0b8c2dae3f260274155bfe4ebf82a181f222587eae2d4dacedd976b +403238935c331c2a352d2b356baac5ded4e3d0dbdbd0c7cfdee1d3c4c3cd +cdd9cec9c5c8d5e2d4e2fbc7376c6f9ef2ff80637927ffe8e1c6b5c2d1e4 +dfcbb9beced6d0c5bbced7dfe3d7d6ed6354564442d4c15e71562a6ac9b5 +b6b3b3b5b8bbbfc0c0bdacbf9eadc073516655287d35081311090d060405 +0503050c1b1b1c22393f4952a1d9fbfafffbcf260e1320131e1c1328150b +040813171109120b0a1620292c2055a393818a8994877f7e82868583858a +8e8f8b85858a8a868b827d7f807d7b7d858584838282828284807b7a7d81 +83848081807e7c7e848a8687888886837f7d787e8487858383847d858884 +82433f3c3f44484846444342444645413d4446474642404041444746413f +4347474946413f4044484845413b3c414749474747474543474f5656524c +4a48453e3f434a4f51515052534f49464947444547404143484a4c4e4e51 +5051504f4c4b4c4c4b494b505454524c564f454d5451515452504f50504e +4d4f4d4c4c4e4f4e4c504a494a4f4e4b4745484944444748444742414649 +4b4b4f4c49484e4f4b4b504f4c4b4f4e4d4e5354524e4e5050504f554c46 +494f4f4e4d4c4d4f50525353534d4b4d505657534d4a4744424141413f40 +3c50525c1805eb573d806c1d734a1c1f171b28505961352134b5f573a5ac +cbff87f71918b7f65e09fa4349c9d8d6d0d0cfcfd6d9d4d7d6c9e4dbf633 +141a1e1e1067e6d2ccd6e0e3ede6e6e3e1ff3a140a2630143ca1d3963920 +2c7aefe21b57555a554944465641273b78938d8592ac4a2b637e9aa889ff +6b2013172e2f3b5057ffa72895fffae435b68c79896d453654240e35315d +e7c4cfdaf1f9ff6e2a3121596a7da9111f2e2e2480eae6def0f7ffb88453 +4556c29f8b87a0b0a9a69ba9d2e7fae7f2dfe9ede3dde4f0f1e1cfcedbe4 +f5e8dcd0ccdaece7f9ffda417073a5ffff977c8d34ffe8dfc8bdd3ebfce9 +d2c5d0e7f2ebdfcedce0e6eadfe0fb75686e5953e0c8667f673b7ad7c6cc +cbc6c4c5c6c7c9ccccc3d9b7c6d68666785e2d833c0f1b1a1317100d0d0c +0a0c11192b5888c8e0e2d2f3ffffecf4fde64323202a1a221e152b1c140d +11181a120406000415252a260e37765a434b4a584d46464a4e4d4b4d5256 +57534d4d52524e534a4547484543454d4d4c4b4a4a4a4a4c48434245494b +4c4849484644464c524b4c4d4d4b4844423d43494c4a484849434a4d4947 +a09e9ea1a6a8a6a4a3a4a4a4a3a19e9da3a3a2a09e9d9fa1a5a8a7a2a0a3 +a6a5ada9a6a5a7a9abacaba7a4a5aaafb1b1afada8a29ea1aab1b3b0acae +b1b1adaaafb1b4b4b3b2b4b5aba7a5a8a9a9abafb1b0aeaeb0b0b0afb0b3 +b6babbbab8b7b3b1b1b5babcb9b6b6bdb4abb3b9b7b8bbbab8b8babab9b7 +b7b5b2b2b4b7b8b8bab7b4b5b7b6b3b0aeb0b0aba9ababa7aca5a4a9acad +aeb1b0aeaeb1b3b2b3b9bab4afb2b7b9bbbec0bebcbbbcbdbcbac1b8b3b7 +bcbbbab9b8b9babbbbbbbbbbb3b2b4b9bcbcb7b2aaa8a4a3a3a3a3a598a3 +99a8651d15667b83a324384f2d35241c1920454f572a17279b9f88445682 +4331260f2028570007ea19257e8084818c7f868c908e8a979c9791b0210d +0a1e1e064ccc9a9390939098a0a299a2da330f111a1e0d6be2b84a2c3c5c +cffbbaa0e8eaf3f8ecebe8cd896996e3faf7fffdb1264a5245403f146d11 +051515252a2d2d7df5cd3b7deee3f2abd9ac958267617276675c677494c0 +c8bbb0babacc505e4b82d8f3fdee1621272a197accc4c0dbd7e4c8cef4d7 +eba51005060e05002257abd4d3dccfd5c6d9d7c9bab3b7c0c6c7b3a8adcf +d5dcb3aaadb9e4f1eb9b3b7248a9e8f746797329e5ced3c8bcbdbfc9cfc0 +b5b2b3b7c4d3beb9bcc2d1d7dad16b6b734c71c6a54f73781b94b1a0a8a3 +aeaba7a29c9a9ea0a1b199a5b489436f3a3f7e2f121e1f211d1a17161410 +12141d0c150207020a083d8ad1f2fffff1781b393415271a1233221d1919 +1e1c13080401001b252d28219cc3b4b4b9b3bdb1acadafb3b3b1b3b8b8ba +b8b3b0b2b3b3b8b4b2b2b0acabadb2b2b2b1b1b0b0b0b2aeaaa9abb0b4b5 +b5b1b0b2aeaab2bfb3b5b8b9b7b1aba6a3abb3b5b1afb1b5a7acb0afae6d +6b6b6e7375737170717171706e6b6a7272716f6e6d6f7175787772707376 +757a7673727577797a79757273787d7f7f82807b7470737b8284807d7f82 +837f797a7c7f81818385887c7876777674767b7f7e7c7b7b7d7c7b7e8187 +8b8e8e8c8b858282868b8d8a87878e857c848a88898d8c8a8a8c8c8b8989 +87848486898a8a8e8b88898b8a85827f817e79777977757a7574797d7e7f +82817f7f8385848588877f7a7d828486898b898786888988878e8782868b +8a89888788898a8a8a8a8a8584868b8d8d88837b797574737373715e6d6f +8f5c23237a8e95ae2d3c512d341f17141e424e572d1a2ea2a8924e62935a +4939212e36660921ff38449a9895909c8e959ca09e99a5a7a199b725100b +1e200a52d5a5a2a1a5a4acb4b6abb4eb3f0e0a141c106cdaa9361d3a5bc0 +d062244c3e46483b404e4b272365c0dfe2f1fac459aad0cfbb93427e140c +1f1f281c213089ffd9498bfbf0ffbbeabda7977c73838370646d7c9dcdda +d1c8d0ccdc595a2d60c1e5f5e80f1e28302285d9d0c9e1d6e3cdd7ffe9ff +bd2a1f222b28264a79bbd9d9e3d7ded2e5e2d6c6c2c8d2daded0c0b5d1d7 +e4c9c7c8cdeaf0eaa14e8c60bcf6ff4b7c7931f3e1e7dfd0ceccd8e7dbcb +c3bfc1ceddcbc9ced5e2e5e4d96f65603a6bcbb0586d701a9ec4b3aea5b3 +b4b4b5b8babbbbb3c2aab6c5964a723d407d2c0d171517110e0d0f0f0d0f +131b0f211a2e35474774b3e6f8fefce66a042228122c221a341b1008080f +130e080401011b23291e1182a18c888b8793867f7e808484828489898b89 +848183848489858383817d7c7e8383838282818181837f7b7a7c81858686 +8281837f7b839086888b8c8a847e79767e8688848284887d82868584403e +3e41464846444344444443413e3d47474644403f4143454847423f424544 +4b4744434446484946423d3e43484a4a494744403e424d54565049494a47 +413e44484b4c4c4b4f4f44403e3f3f3e4042423f3f4245484a494b4c5153 +53514d4e4a4a4a4e5355524f4f564d444c52505152514f4f5151504e4e4c +49494b4e4f4e4f4c494a4e4d4a47474949464446474449444348494a494c +494747484a494a50524d484b50525255555351504f504f4e574f4a4e5352 +51504f505152525252504a494b505555524d474541404242423f2c3e4971 +4b19237b9297b02c3b4e2b32231b1a2349545f342336acb19c586e9b604d +3d253139690a22ff3b49a5a4a7a3aca1aab3b9b8b6c2c3baaec731191026 +2c1660e4b7b5b5bbbcc5cccec1c8ff4f16111e291f80f2c652344863c7da +783e64565a5c4d50584d1c0a3c869285859375146289948f7c3f851d1221 +212d292f3f97ffe75698ffffffcbfcd1bbac918995947f717987acdef0e8 +e0e8e0ec68591523576a8a9e00293c402787e1dcdaf9f8ffe3e8fffdfffb +818d9fab9e91a9c3effff9fdeaede0f3f4e9dcd7dae0e5e6d8ccc8e8eef7 +d4cdcfd6fafffcad548d64c3ffff5e8f893efce8eee7dbdedfebf3e4d9d7 +d7dce9f6ded8d8dceaeef0e67b73734a77d1b65f7b7f28aad2c2c4bac6c3 +c4c3c4c7cbccc7d6becad7a75d8146458333141f1e201b18161716141618 +1c1e5574b1ccdecacfe9f7f4f8fdf7831832321930251c38221910101618 +12060000001b262815005f7151494d4a594f4646484c4c4a4c515153514c +494b4c4c514d4b4b494544464b4b4b4a4a4949494b47434244494d4e4e4a +494b47434b584b4d50514f49433e3b434b4d4947494d43484c4b4a9e9e9f +a3a6a7a5a2a2a4a5a5a2a0a0a0a5a5a3a09d9ea1a3a4a8a9a5a3a6a7a6ad +a9a6a8aaa9aaaca8a5a1a3a8adaeacaeaaa6a19fa3abb2b4afabacb0b0ab +a7b4b4b4b3b2b1b2b3aaaaaeafb0b1b3b8b4b1afafb1b3b0aeaeafb2b3b4 +b4b1b1b3b4b5b8bcbdbbb9c0c3b8aeb5bab7b8bcbab9b9babab7b5b7b5b3 +b4b7b9babab7b5b3b3b4b3b1aeafaeaeaaa8a8a9a7a7a5a9b1b2ada9a9a9 +a8a8abadb0b3b8b7b1abacb3b9bcbcc0bebbbbbcbcbbb9beb7b4b8bcbbb9 +b9b8b8b8b8b7b6b5b4b4b2b5bbbdbab5b3a8a5a3a2a3a4a3a4aba59c8754 +2f0aba14174211215d2a2d28211e21444d52211835f3680020e9e91e021a +1b6bd0e63b0fea00317e93aeb4b5a9b0a9a6a79ca69eadc85b0019201819 +0748c896aaa9a8ab929aaeb0b1d1250826171c5ebcbe5825175599d4c6ab +f0f7fefae5ebdfd69c786fb1f7fdffffec82374f3143546f89c13b0c121a +3c3e32589e978d75a2c1b5bbbac5c2bfb6b0b1b4b0bac1b7b3ab9a887f7e +868baf99b6408fdaf1ffd40a2f2a2d1486c7b39fb2d1b5c9c9aecb700000 +08140b052568a7c8bdd2d7d8ced4bfc5c8cbc6bfbdc3c9d8c4b6beb7d6c6 +d5b4abbc58de64458748bcf9f94b6f563cf0cdcfdadfdbc2b6c1ccdcd7c1 +afb5c8d6cbb5a5cadaecfa2d78994894e0b53f6e7517aeb0afb3b5acaaac +acaaaaa9a7a3a0a1a497a53d691e5979261a22212824211e1e1c1a181718 +0f180c00050c09145eb6f0fcffffd218373a101b33151a1816141415140c +040e041233343a2e38bebeb2bcb9b0beb7b0aeafb2b3b2b3b8b5b7b8b4af +adafb0b2b2b3b3b1aeaeb0b1b1b2b2b3b3b3b3b6b3aeabacb0b4b7b7afae +b3ada5adbeb3b5b8b9b8b3adaaa5aab0b3b2b2b3b5a6aaadafaf6b6b6c70 +7374726f6f7172726f6d6d6d7474726f6d6e717374787975737677767a76 +73757877787a76736f71767b7c7d7f7d797471757d8485807c7d81827d76 +80808081818384857c7c7d7e7d7d7e817c7977777a7c7c7b7d8085888b8b +8a89868586898d8e8c8a9194897f868b88898e8c8b8b8c8c898789878586 +898b8c8c8b89878788878380807f7c787676757575757981837e7a7a7a79 +797c7e828587837c76777e8487878b898686878887868d8683878b8a8888 +87878787868584838684878d8e8b868479767473737473727371756e4b34 +18ce27294d1a255f292c231c191f414c52241b3cfa71022af5fa321a2d2a +79def54f29ff1d4e99abbfc5c6bbc2bbb7b8adb6aab8cf5e001a1e171909 +4bcf9eb7b8b8bda6aec3c5c6e331061f141c64bfb6480e085597bb842a48 +4147524248434825253486d2dae3f8f3ab7eb4a4b9bcb6b3d23f1117223d +342a5eaaa39983b0cec5cbcad6d3d2c9c2c3c5c0c6cbbfbbb7aa9d95969c +9dbca3b1236dc4e3fdcd022828321c90d3bea7b9d7bbd5d9c3e2890e0d20 +2d2421458bc3d5c3d9dfe1d8e0cdd2d7dad7d0cfd7e0f5dcbfc0bce1ddf3 +d2c1c35add6b599c57c6fffd4d715c45ffe0e4eff2ebcec2d3dfe9e2c8b6 +c1d7ebe2cdbbdce6f2fd34788c388fe4bf44666a15b8c8c7c0bdb9bab9b9 +b9bbbbbcbababcbeadb7496f21587823151b171e18171717171515161611 +1c1e1b354d4d518dcef7f8f7fcc903222e0d1e381a1b11090303080b0703 +0b01113332352227a29d8a908b829189817f80838483848986888985807e +808183838484827f7f81828283838484848487847f7c7d81858888807f84 +7e767e8f86888b8c8b86807d787d8386858586887c808385853e3e3f4346 +4745424244454542404040494947443f40434544484945424546454b4744 +464746474943403a3c414647474946423d3d414950514a46454947413b46 +4646464648494a4141434444444849413c3c3c4144434445484e51535351 +4e4d4d4e5155565452595c51474e5350515351505051514e4c4e4c4a4b4e +5051504e4a48484b4a48454849494543434544444448504f4a4444444141 +4446474a4f514a44454c52535357535050514f4e4d554e4b4f535250504f +4f4f4f4e4d4c4b4b494c525653504e4542403f4243423f40414e503a2d18 +cf2b2b4f19245c272a27201f2448525a2b2444ff7a0c34ffff391e312f7c +e1f8502aff2154a4b7d1d7dad1d8d3d1d4c9d0c4cee26d0b1f231c23165a +dfb1cacdcfd5bec6d8dad9f74111271f2872d2ce632a1d5f9cbf90496b58 +5963535d5858291512518e8882898b5c3a7269899ba8b2d948171b25423f +376cb8b1a790bdded4dbdae6e5e3dad6d7d9d0d4d7ccc8c7bab2adaeb3b1 +ccafad01265468968900383e462799e1d0bed3f1d1e5e8d6ffc15e799cae +a28c9ccdf5ffe7f6f6f2e4ecdae2eaefebe2dde2e8fde6d0d5d2f5ebfedc +ccd369eb735a9d5ccfffff597d6854ffeff5fffffaded0dfedfcf8e2d2db +eefcf0d9c6e6f2ffff3c80964395e7c14a717822c4d2d3d3d0c9c9c9cacc +cdcfcfcccbcdcdbbc5597d2a5e7e2a1c23202722201f1f1e1c1c1b191e49 +6a8cbdddd4bbd5f0fff9f8ffda14313814233c1d1f18120b0b0f100b0106 +000f333331140d7a684c4f4d465a554b47484b4c4b4c514e50514d484648 +494b4b4c4c4a4747494a4a4b4b4c4c4c4c4f4c474445494d505048474c46 +3e46574b4d5051504b45423d42484b4a4a4b4d4246494b4b9d9ea0a4a6a5 +a3a1a2a4a5a5a3a3a3a5a6a5a3a09e9fa3a7a3a8aaa8a7aaaba9aca7a6aa +aba8a7a9a7a3a1a3a8acadaaaaa8a7a5a5a8adb0b3afacacafafaaa6adad +adadaeadacab9fa4a8aaa8a8a8abb0b1b0b0b1b1b0aeafafaeb0afb0afaf +b4b4b5b7babbbcbbc2c2b7b0b8bbb7babdbcbbbabab8b5b2b4b4b5b7baba +b9b7b4b3b2b2b1b0afadaeabaaa8a7a5a7a7a6a5abb1b1aba6a6a5a6a6a6 +a8abaeb1afaaa4a5acb3b6b4bbb9b7b7b8b8b8b7b9b4b2b7b9b7b5b5b3b4 +b4b5b5b4b4b3b4b2b6bebfb9b4b4a8a6a3a3a3a4a2a3a29ba19a511c0089 +7e5747003d8e4b35252121254750521d1d30ef6f366becf264122353a4d4 +e49f35ea055783a2b1aaa7afb6aaa7b3b3b1b9a4de2412181d18241254de +b1bbb0b3bcaeb7b8b6c0e03f081b233588ad652d345ac2f6c1aedafaffff +efd7e9bbad796d85d2ffffffffc13140534f6d849bb9d441101a19281500 +a0f5eef0f4ead7dcd3e2d5e3d6d0cfbdb9aca9acaeaba6a3aca1aaa59fa3 +cc974ca4dff0ffac0c38262b13a8d9c2a1a3a0aac4c5ce200003130e0b16 +3a74a7c6dce4e6d1b9c2bb969b989eaab3ab937b839bacad939b95a5aeb4 +780d00193987581e000b1a4e3c4ee0b3a7a9b0bbbdc3b2b5c0c5c2b4a398 +becfccbaba4d163816628938697c6933836d29a89fa6a7b4a4a6abb2b4b3 +b0a9ad9cadb2987054721173721e1c1b181e21211e1b181613110e191128 +0003060a05368de0f7fbfeff5d354d1431472a1417181c2023231e18110b +112921271e53c8bab5c2baadbcbdb4b0b0b3b5b4b5b9b9babbb9b4afafb2 +aeb2b5b4b2b0afaeadaeb0b2b4b5b5b5b8b6b1adacadb1b3b8afaeb2ada4 +aabab5b5b6b7b6b4b3b1aaaaabb0b5b7b5b2a7a8aaadaf6a6b6d71737270 +6e6f717272707070727574726f6e6f737773787a78777a7b797974737779 +76757775716f71767a7b7b7b7a787676797f82827e7b7b7e7e79737b7b7b +7d7e7f7e7f727779797775757475737375797b7c7d818286898a8b8c8a87 +8586888b8c8d8c93938881898c888b8f8e8d8c8c8a8784868687898c8c8b +89888786868584817e7f7c78767573737574757b81827c77777677777779 +7c7f807b767071787f828188868484858585848883818688868484828383 +84848383828583878f908a858579777474747572716a677a824a21049c93 +69520741904a34201c1c23444f52202037f6784075f8ff782a3662b2e2f3 +b34fff22749eb8c2bbbbc5ccbfbcc7c4c1c5ace42611161713211053e1b7 +c4bbc2cdc0c9cac8d3f34c0a181d338bb366282547b2db894b38383c484d +4456312c112a57abdbd7ecfadb769fbbb6ccd5d4dce545131b1a271200a8 +fffcfefff8e7ece3f4e7f4e7e1e0d0cabdb6b8b8b5b3b4c0b9c2bbb0b0d4 +933183cae2fea20130232d1ab2e4ccaaadaebbd7dbe83a0d1e2b25202c52 +8cc0dbe7e9ecd8c3ccc8a4a8a7adbbc4bea7929eb1b8b29aa7b0c6cdce84 +1100214c9b5f1e000a1a51455bf2c8bebec2cbc7cdbec2c6cbc6bbb2aedb +f1eed8d059173a1f6a802b647d7137796129b6bdc8bec7babcbbbab9b7b6 +b8c7bccdceae82627a11706f1915140e14171717141311100e0c17103111 +304551476ba7e9f4f5fffd4d23410e324a2d13100d0c10161a19160d070f +271d201140ac978c958a7f8d8d858181848685868a8a8b8c8a858080837f +8386858381807f7e7f8183858686868987827e7d7e828489807f837e757b +8b8888898a898786847d7d7e83888a88857d7e8083853d3e404446454341 +42444545434343454a4947444041454943484a4846494a484a4544484845 +4446423e3a3c41454645474642403e414447484441414646413a403e3e3f +40434242373c41413f3e403e3d3a3a3b3e3f404245474b5053565655504d +4e50535455545b5b50495154505354535251514f4c494b4b4c4e5151504d +4b48494948474646494645434442434443444a504e4843414041413f4144 +474849464041464d504c53514f4d4e4e4e4d504b494e504e4c4c4a4b4b4c +4c4b4b4a4d4b4f5758524f4f434140404041413e373753663a1a04a0986d +5406408f4832242022284b555a27293fff814a7fffff7f2e3a67b5e5f6b4 +50ff267aa9c5d4cfd3dde4dad7e2e0dbddc1f432191b19172a1e61f0c7d5 +cdd5e1d6dfdedce4ff5c16232b419ac37a3c3a5abde2925d5d5b4f535a56 +704a3e121026688a7d878870255f8087acc2cee0ed501a201e2c1907b3ff +fffffffff4f9f2fff5fff7f1f2e1decfc6c6c4c1c3c6d8d1dad2c4c0df8a +043257689e6700453e462abef8e5c7c6bbc3e5f2ff736185a7a79f9caacc +e9faffffffebcfd6d1afb8bac2cfd6ccb09aa7bcc6c5adbdc3d9dfdd941d +09244a9a6728050f1c564e6bffe5dddbdadbd1d6ccd3dce3e1d5c9c3ebfd +f8e3dd672947246c8532687f733a846f35c1c5d1ced8c8cacbcfcfd0cecd +d8cbdadabb8e6d85197776201d1c171d20201f1c1a1817151124306c6ea7 +d0ddc2c9e0fffdf7ffff5a314d18374f32191715161a1d1f1d170a041028 +1c1800207d5d4a524a44595c4f49494c4e4d4e52525354524d48484b474b +4e4d4b4948474647494b4d4e4e4e514f4a4645464a4c5148474b463d4353 +4d4d4e4f4e4c4b49424243484d4f4d4a434446494b9d9ea1a3a4a4a2a1a3 +a3a3a4a5a5a5a5a4a3a2a09fa1a5a8a2a8abaaaaacadaaaba5a5acada7a4 +a7a8a5a3a5abafafaca8a7a7a7a8aaacadadacabababaaa8a6a6a7a8acac +aba7a39fa5a9a6a3a1a1a3a9afb1b1b0aeafadb0afb0b1b0b1b1b3b1b2b4 +b5b7b8b9bababab0adb8bcb8bbbebcbbbbbab8b4b1b2b3b4b7b9b9b6b3b2 +b2b2b2b0afaeadaca8a7a7a6a4a6a8aaa7a8aba9a6a6aba6a7a6a3a2a5a5 +a2a4a4a1a1a6adaeabb4b2b0b1b2b3b3b2b1aeaeb3b4b1aeafacadafb1b3 +b4b4b4b1afb5bfc1bab6b9aba9a7a6a6a4a2a2ab998aa33b185b8d0b1d84 +122d5544091f1e1f22475357210238f9570a62d4a6071410204acbca0642 +d900606fa7b5ab648387888998aea5bca8e0272d10151e1c0a4edfccc1b1 +c2abb5bca6abbed2331919384a7389533c48c7e3c9a9c3f9fffff5d1e9d2 +8f84796398e7ffffffe98731434459638caba9c42f0d1708171f20bcedd0 +d2dddaddd4d5ded1e1d4dcdfcec4baacacb4afacbaa89da8a4ada8dc5a69 +bbe6f0ff7a1936362c10bbd8d4cccfbea2b4e75500150a1b07104584abc3 +d4c4f1c8b56fcedde3d5c9c3cbd9ddd0bfb0c7d2d7c8a9a4968cb88c0035 +47586369231c1a46493357e6d0cfc0abadb7cbcec3b2a9afbbb6a7827f7f +95b62900414254663c2e000e445a3e29947f7d758081868b919697938d8e +8391a49f00405c068162141917181b1f211d181414100c091d07551d0000 +00061a5cbfecfef7fcc5494f175e443e1d171c22282e312f2e3332283123 +2b2a92c3b8bdc6bcb2b9bdb8b3b1b4b7b6b7babab8b9b9b5afacaeb0b4b7 +b5b4b3aea8a9abaeb1b2b3b3b3b6b5b2aeaaaaacaeb9b3b0b2afaaacb4b7 +b6b5b5b5b5b6b7aeabaaaeb6b9b5b0aba8a7acae6a6b6e7071716f6e7070 +7071727272727372716f6f71757872787b7a7a7c7d7a787272797b757275 +76737173797d7d7d787978787a7c7e807d7c7a7a7a78767477797b7f8281 +7e7a767c7e7b7573716f6f717578797a7d7f8486888a8b8c8c8b84838586 +88898a8b8b8b817e898d898c908e8d8d8c8a8683848586898b8b88858686 +868684827f7e7d797575747272767877787b7a77777c7778777473767673 +70706d6d72797a77807f7d7e7f80807f807d7c8282807c7e7a7c7d808183 +828382808690928b878a7c7a7877777572707666648b351f6ba020308f1a +315743071a191a2044525724053fff60146ce0b41b2c232f55d6d8185af5 +0e7d8abdc6bc799da1a0a1adc2b5c8afe325280a0d1515044bddcbc4b7cb +b6c2ccb6bbd0e33f1813364c7b90553535a8bd8f51434745463d3f6c5615 +111c2c75c4dddaf7efb68fb5acb4aec8d7c6d5360c1406162025c6f9dee0 +ebeaede4e7f0e3f3e6eef1dfd7cdbcb9c0bbbccdbeb5c0babeb4e354509c +d1e1fb6e0e2c322e17c4e3e0d7ded2bbcfff710e3124341f265996bcd3e1 +cbf6cebc79dbebf4e5dad4ddecf0e4d6cbdddeded0b9c2b9aed49900384f +6b73691d1718464f4068fde9ead7c0bec4d6dacbb6abb3c5cbc6aeb1b1bf +d43900404d5e60312900144550332daaaaae9ba19e9d9c9996939395a59f +a8b6a8014a65057c5d0d12100e11151716110f0f0d09061a00562f22314b +4e537bcbedfcfdffb93945115d453d1a1011151b23282a292d2c232c1f24 +1e7ea59492978c81878d898482858887888b8b898a8a86807d7f81858886 +85847f797a7c7f82838484848786837f7b7b7d7f8a848183807b7d858a89 +88888888898a817e7d81898c8883817e7d82843d3e414344444241434343 +4445454545484746444143474a42484b4a494b4c494943434a4a44414443 +403c3e44484849474744423f40403f3d3e3f40424343413f3d4044464746 +4240464b48444241403f4041434140404147484b4f545758574d4b4d4e50 +515253535349465155515455535252514f4b48494a4b4e50504d4a494749 +494747474647434242434142454746474a464343484142413e3d3e3e3d40 +403d3d424748454e4a48494a4949484845474a4d484746454448484c4b4d +4b4a484e585a535154464444434341413d42373f6f25176ba42534911c32 +5641081e1d20254b585f2b0e47ff691e76ecbd2230273459dadb1a5cf812 +8395cad8d094b8bcbcbdcaddcedec2f2302f0c0b161d1056ead9d3c7dac8 +d3dcc6cbdef34d2621445b88a0644548b8ca9d615a6b675645497a702e20 +150533727f7b90815041797b919ac0dacedf40141b0b1b252bcfffe9ebf8 +f7faf1f5fef1fff4fcffefe8deccc9cec9ccded5cdd8cfd0c2ed4618425c +6ca23c0c454d4527d3f9faf3f3d9c0e4ffb2659e9db39993b2d8e8edf4e7 +ffe4ce83e3f4fef4ece8f1fdfeedded4eaeef0e5d2ded5c9eaaa0c3f5169 +7375291d19444f487affffffffdfd2ccdceae0cfc4ccdee0d8bbbcbacbdf +48104e4f5d64352d0214495b4339b5b0b5a8b0acadaeb0b0aeadacb7adb6 +c4b70e546c0d8364151a18171a1e201e19161614100d2516827787b4dad6 +c6cbfbfffffdffc346501b634a432117191e24292d2e2d2f2e27301e1a08 +5971564d514c47565d534c4a4d504f5053535152524e484547494d504e4d +4c47414244474a4b4c4c4c4f4e4b4743434547524c494b4843454d4f4e4d +4d4d4d4e4f464342464e514d48474443484a9d9fa1a3a3a2a2a2a7a3a1a1 +a4a5a3a19f9f9f9f9ea0a4a7a2a8acabaaabaaa7a9a2a3acada5a1a4a7a4 +a3a5aaaeaeada8a6a5a5a7a8aaaaa7a9abaaa7a5a6a6a4a5a6aaaaa59a92 +9ba2a59f9b9da2a4a3acb2b2ada8a9adaaacafb2b4b3b1b0adb1b5b8b9b9 +b8b8b6b5acacb9bbb6b9bcbbbbbbbbb9b5b2b7b6b5b6b8b8b7b5b3b4b4b3 +b1afafafaca6a6a7a7a4a7aca8a5a8aaa8a4a5a9a3a6a6a19fa19f9b9a9f +a1a0a2a7a7a3aba9a8a9abadadaca9a7a9aeafaaa8a8a7a8a9ababacacab +a9a8b1bec2bab9beb2afadaba9a7a3a2ad99a78c32001b9392a57a001371 +363a211e1a193e505a281b4be21c180e44090a0d191046851b006cd9006f +59a7b5ad81a89ea89f92b7aaa1d7cf2d1a1f332b332f60bfc3cbcbd8d8d1 +d0cbeae6d438212c497187744d40cfffd0a7d1f6effdffe0bbffa5757680 +72b0f1fdffffc24d2b38487084a5b9b0d82c08262021150566ecdae3d3c4 +d5d4d2dad6d5d2daced3cbc6c1beb8afa6a2aba2a69baeb2c73783c7eaf2 +ff4e2f30362611c6c1c2d3dacddbb60d0010000f0b1a4887b6c7d1dddabf +a3b81f9adcdfd1cec7bbb6bccdd8c5bfafbdce9fc6bec3c8a02119325a61 +63202e2238543b3ee6dde3ddd1d1c8c7e2e6dbc2bdc6c1adb59b97a6cb47 +092f2b5f75522b21313f473f46b8969298a4a6ababadb4b8b9b5a5abbbd9 +e80737720b8d550f1a171f1d1d201d171316130f101b07916d000000040c +3893d0fcf1f3f877291b6b3d33100f1215191c1f1f2028342227212824af +b8bbc3c6c3bcb4b9bab4b1b4b7b7b8babab6b5b8b6afa9a9b0b4b6b6b8b9 +b2a8acaeb0b2b3b3b1b0b2b3b3b0acaaacaeb9b5b2b0b0b0aeacb9b8b7b6 +b5b5b6b6afadadb0b4b6b4b1b2aca9adb06a6c6e70706f6f6f74706e6e71 +72706e6e6e6e6e6e70747772787c7b7a7b7a777972737c7d757174787574 +767b7f7f7e78767676797a7d7d7a7c7d7b787576777a7d8185868178727a +808079737577766f747d7d7b797c818184878a8b8a8885808286898a8a89 +8987867d7d8a8c878a8e8d8d8d8d8b8784898887888a8a89878788888784 +8280807d7774757572737a7676797b7975767a747777727072706c666b6d +6c6e73736f77757476787a7a797775777c7d78767675767779797a7a797a +79828f938b8a8f83807e7c7a787470786984772c042ba8a7b88502177334 +381c1915173b4f5a2b1e52e925221850171e222b1f5190290b84f5158c74 +bdc4bd9bc5b9c3b8aacbbaacded12a1415281d272455b8bec8c9dbdcd7d8 +d5f4f3e03e16214d7d957e492daee38946515e3e41493942b03f0e0e2a43 +94d4dce1f9de98a3b9aebebbccd7c6e935051c161f1a1073f9e8f1e4d5e5 +e6e4ece8e7e2ebdfe3ded9d1cbc6bdb7b7c4bcbfb0bebcca306babd5e2f6 +412026322919d3ced1e1edeafbd62a092c122a25335d9ac3d0d6dfdcc3aa +c029a7ebf0e3e1d9d0cbd2e1efdcd2b7c4d8b2e6e5e9e6b0281c376a6e60 +1527213a5e4c57fffdfffbe8e5d9d4eff1dfc6c3d5ded9f1dfdbe2f55e0c +2e396b6e47262036423f3b54dad1d5d4d5cac5c0bcb5b5b6b9b4b8bed1d9 +003a7908864e05100d1513161916100e11100c0b13008b79192147504a5e +a4d4fefcfcf16b1f15653a300b08080a0e111518191f2b1b211b20169c9b +969796928981868b8582858888898b8b87868987807a7a81858787898a83 +797d7f818384848281838484817d7b7d7f8a86838181817f7d8c8b8a8988 +8889898280808387898784857f7c80833d3f414343424242474341414445 +4341434343434042464942484c4b494a49464942434c4c44404344413e40 +4549494a484642403e3c3a3a373b41434445484b48494d51544f48434d53 +56524f5154544a4f55514a4341444346494d53545452494a4e5152525151 +4f4e454552544f525352525252504c494e4d4c4d4f4f4e4c4a4b4b4a4947 +4848474141444441444945424547454142464043433c3a3c3a36363c3e3d +3f43433d4543424143454544424044474a43434142414444464547444443 +4c595d5554594d4a48464644403d44395e5a1c002babacbc890418723539 +201d1b1c42556232275af32e2c225c2025272f2455942c0d86f819927fca +d7d4b6e3d6e0d6c6e6d3c0eedd311816261c2b2c5dbfc5d1d4e4e8e3e3df +fefcec4a27325989a08a5840bff69b5a68775b5a584149bd552317190b40 +70737e977839598187a8b5d1e1d3f33e0c241e241e147bfff1faeedff2f2 +f2faf4f3eff5e9f0efeae1dbd3cac7cadad3d5c5cdc6d11e2b4a6073a817 +233f493c24dce1e8fbfef0fffd6e6da79aaf9c98acd4ededecf4f5dcbccd +32adf2f8f1f2ede3dcdfeaf7eae3cad7f3d2ffffffffc938233a6a747126 +2e1f355d546dfffffffffffee1dcfffff8dfdbeaf0e6fce8e4ecff6c1f3c +3c6b754d2c253a494e4a61e4d7dbdee3d8d6d3d3d1d2d1d2c7c9d1e6ec0b +437f0f8e560e19161e1c1e211e1815181713121e09a7ad6c99d4e2cfc3e9 +f7fff8f7f9792a1f6f43371210111216191d1f20243022251b1500726352 +504e50505259574d4a4d50505153534f4e514f484242494d4f4f51524b41 +4547494b4c4c4a494b4c4c4945434547524e4b494949474551504f4e4d4d +4e4e474545484c4e4c494c4643474a9e9fa1a2a1a1a2a3a9a49f9fa3a4a1 +9c9b9c9d9d9d9fa3a6a3a9adaba9a9a7a4a9a2a4aeafa5a1a4a6a3a2a4aa +adadaca8a6a3a2a4a6a8a8a3a8abaaa5a1a5a6a0a0a2a29f96867b6e7678 +706f7680849da7b0afa8a2a4a9a2a6adb2b5b4b1aeadb2b9bebebcb9b7b8 +b6adaebabab3b6b9b9b9bbbcbbb7b4bdbab7b6b8b9babab5b6b6b5b3b1b1 +b1aca6a5a8a8a5a9aea0a1a9b0ada5a1a39ea3a49f9fa19f9a939da2a0a0 +a4a39fa4a2a2a3a6a8a8a8a5a3a6ababa6a3a4a6a6a6a5a3a19f9ea2a2ac +bdc2bbbbc2b7b4b1aeaca9a4a39ea8a18a2d2a835200086e0a1547482628 +211710354b5a2b1e4ff6193453e66e121c232d85f7d71270cc007d52a9b2 +a77fa894aea282b3a8b08308154243434b49463b311620180703020a0000 +0023051a3449a9c85c2b485e628be1f6fff2ebeed0b3ff79727a7b8dc8f8 +f8fffba02a233a5978a7ada2b6ab130b2f19141b2555f5c3cfe7dcd7d7c2 +d3ddd0d9dec2dddccfcabdacb2b9a7a4aaafa0b2bda8308fcae9f3ff373f +2e302e30f3cdbcc4c0e1cf000012001810164686b4d4e2dfd19f1e5dc90c +78f2cfd4d9dbd0bfb5bcc3d2d4c7c196000b000109000c263e3f6f6f061a +2d1e45201b7051536a9dd1d7cab4d3e5d9cfbf8d5252464b406320132240 +59574f28363e3b4443359b605b788da9aca5a3a9afb6b8b6c9e8ffff5d1c +7823a1591018131e191a1d1a131115130f17170abeb5000000010a2a70ad +f4f1f8ffbd1239725c340c1e1d1b181718191d1932262e353828c4b2bdc7 +c5c9c4b3b3bab4b0b4b7b7b8bac0b9b7bcbcb3acabadb2b4b6bcc0b8acb2 +b3b5b6b5b4b1b0b1b3b5b3afaeafb1b7b5b1adafb2aea5babab9b8b7b5b4 +b3adafb1b2b2b2b3b3b6aeaaaeb06b6c6e6f6e6e6f7076716c6c70716e69 +6a6b6c6c6d6f737673797d7b797977747972747e7f757174777473757b7e +7e7d7876737376787b7c777c7e7c7674757a7d808285837a6c63565b5a52 +4f565d5e707983847e797c827c80858888857f7c7e838a8f8f8d8a888987 +7e7f8b8b84878b8b8b8d8e8d89868f8c89888a8b8c8c898a8a8986848282 +7d7773767673757b6e727a817e7672746f7475707072706b60696e6c6c70 +6f6b706e6e6f72757575737174797974717274747473716f6d6c73737d8e +938c8c938885827f7d7a75716b7a7f772a349567111b791219474624231c +120e324a5a2e2156fd223e5df27c2631353a90ffe52485e518986abfc1b9 +9ac7b3cbbd9ac7b8bb8908103937343c37362b220a150f0201010b010101 +2a03052557c5db5c0e18271a2f6d635e463e444054e8281b1c2c65b0dedd +e4f7d38caac2b9baccc3b5c8bc1c06240c0f233462ffd1ddf8eee9e9d4e5 +efe2eaecd0eeefe2dbcdbac2cabcbdc3c8b5c0c4a92878aed3e1f4283024 +2d3239ffddccd6d6fff31b152e1731282e5f99c4dce5dccea02063d11787 +ffe1e7eef0e5d4cbd0d9e7e6cfc7a1162c1c2a2910142a434c796a00122d +235336399275798cb9eaeaddc5dfebdfd7d2b38ca19fa48f9c411c244d63 +50422135423f41464ccba9b0c8cdcec5c0b9b3b3b6babbc6cedfe9371279 +1c974d060e09140f1316130c0c10100c110d00b3bb191d484c4c5488b9fd +fffffdb20a316a542c051413110e0d0e12130e281c272c2e1aaf95989b95 +96917f808b8581858888898b918a888d8d847d7c7e8385878d91897d8384 +86878685828182848684807f80828886827e80837f768d8d8c8b8a888786 +808284858585868689817d81833e3f41424141424349443f3f4344413c3f +4041413f41454843494d4b484846434942444e4e44404343403d3f454848 +494846423d3b3a3a3b363f4548484a4f5555575b5d5c55473f343d3e3836 +3f474959616662564b48493e41474c4f4d4a47464b525757555250514f46 +4753534c4f5050505253524e4b54514e4d4f5051514c4d4d4c4b494a4a47 +4342454542464c3d3e464d4a423e403b40413c3c3c3c37313a3f3d3d4140 +3b403c3c3d40404040403e414646413e3f414141403e3c3a393f3d47585d +56565d524f4c494946413e36495959192c956a161f7d141a474725272018 +13395062352a5eff2b4867fe852d36394094ffe82688e91c9f76ccd4cfb7 +e6d2e9dab6e0cfcd9712163c37313937372c250e19140606071006070730 +0e183860c9e26824303c2e44847d77605251495cf33b2b1c0e1d4c6d6c82 +9c773968929db0d2d1c4d6c6250d2c1515263768ffdae6fffaf5f7e2f3fb +eef4f5d9f8fef3ebdcc7d1dacfd3d9dec8cdccad13324a637baf07373c40 +3d3effede3ecebffff5b72aba4c1ae9ab1d1e6f3f6efe1b53573dc1d8cff +ebf5fffff8e5d8d9e4fafce2dfbf3d5f54605830273547528380101d2d1f +534355c0b1bacbe8fff8e4d9f7fff7ece3c097a8a5aa96a7502d33536558 +4c293d4b4a52575ad5afb5d1d9e0d9d3ceccced0d1cfdbe9faff4c1d7e24 +a0570f17121d181b1e1b14131717131b1602c3df5e8ad0e5deccdee9fffe +fbffc0153c755f370d1d1c19161516191b1631252e2d2400845b52524d55 +585053574d494d5050515359525055554c4544464b4d4f555951454b4c4e +4f4e4d4a494a4c4e4c4847484a504e4a46484b473e525251504f4d4c4b45 +47494a4a4a4b4b504844484a9fa3a6a6a3a0a0a0a0a3a5a39f9d9fa2a1a4 +a29c9da3a5a2a8a9a7a5aab1aea6a4a6a9abacaaa7a5a5a7aaadaeaeadac +aca49d9ea4aaaba6a9aeb0aca49ea2a1887968544237312f242c33302a26 +2c3336475c7384929ea6a6a4abb8beb6b1b1b0b0b3b6b9bbbbbbbdb6b4b9 +bcb8b6b8b8b9bab8b6b4b4b6b4b6b8babbbcbbbbbbb7b2afafb0b1b0a7a9 +aaa59e9ca2a7a0a4abafaeaba7a59ca2a6a59f9a9a9c94969a9e9f9f9d9c +9f9e9d9d9fa1a5a79e9d9d9fa1a2a09fa1a2a3a3a2a09d9b9aa1a7aab1b9 +b9b3b4b7b2b2bab5a9a99e9f858e21004374733225081d5f5b232c21292c +4c463a1e286bf9213491f5dd32243a7693f7f14193c0008c47cec5b45d82 +407f7583aea78d4c073f4c464e4d4645464a4a494a4f4a45403c342b2225 +3b4198cf762f557683adf3fffee7e1d6e694849f4174717b9ce7f6edffe2 +4e342e355666aabbb7b68b1211231e27181971f5dbbeb4b4ada8b1dad9d4 +d8d2d6d7d8d6d6d4cfc1b3a7a49faaa2b1d34c4491e3daffff213239371a +3aeae49b98a69c1500091410081c438ec4bfe6d6d7b3272a82e5188df1da +cfd7c0ccdccfbcb2b2d5dccfc4000814050a061f15223573671c32203045 +2a130d0b150e61ddcbb9b0b8a2c9e5d09b39271b1330250012252d465255 +1c1e2620323d374222153c9389a19daaa3a4bfadbe44516c8a561e3d2f7a +490e18121a231a181a160d10160f111c0a91a236000000131f3e91d9eef3 +fef9293d6e4c2610191a1914141a23251626253b2a2f50bcb5bbbfc4c7c3 +bcb5bdbbb4aeb1b9b9b3b6babebcb5afb1b7b5b5b6b6b5b3b1b0afa8aab5 +b9b4b3b9b2b2b2b1b0afadacb5b6b5b3b0aeaeb0b4b5b6b7b6b4b1afaaac +aeb0b1b1b0afb2b2b1b0af6c707373706d6d6d6d7072706c6a6c6f707371 +6b6d737572787977757a817e767476797b7c7a777576787b7e7f7f7e7d7c +746d6f777d7f7d818588837a76767c6d6452403025211e131b201c140d11 +1618273c5365747f868580838b8c827a7a7f8184878a8c8c8c8e87858a8d +8987898a8b8c8a8886868886888a8c8d8e8d8d8f8b858282838281787a78 +736b696d746e757c807f7c78766c7276756f6b6a6c6163676b6c6c6a696c +6c6b6b6d6f73756c6b6b6d6f706e6d6f707171706e6b696b72787b828a8a +84858883838b867a776b71637a1e09558c874530101e5f591e271c242a49 +453a212b72ff2a3e9bffeb46394c839effff53a8d918a75fe1d4c67aa361 +9e909dc4b89952073a42383c3a3130313738373b413e3d3a383229221a1c +30b6f9881a0e182a54929e6c453e395521436d052b1b3074d1e0d8f5f198 +a9bdb9af9cc1c6c4c699190a160e20222b80ffe9ccc4c6c0bbc4edebe6e9 +e0e3e5e9e9e7e4ddd1c4bcbab8c0b5bed84a387bcac5ecfa112531372246 +f9f5b0aebfbc370e2630291f325ba3d4ccead4d1ac252d88ee239cffeee5 +eed6e2f3e6d2c8c6e5e4d6d1052e40312e1c291b26427c65172e24395744 +3432343f3785fee6d0c6c9aed4f2eaca80868883936f2e252d3a4d474414 +1e2c28354a587e7b7b9fdfadb5bccbb9b3c5adb92a131a32110437236e3c +020c06101913111511080b110a0b120086a44b263145544f5fa6eaffffff +f3213563421c060f13120d0d13191b0a1c1b34212542a698969394949088 +828e8c857f828a8a84878b8f8d86808288868687878684828180797b868a +85848a8383838281807e7d86878684817f7f818788898a898784827d7f81 +838484838285858483823f43464643404040404345433f3d3f4245484640 +3f4547444849474549504d454446494b4b49464442444548494948494e46 +3d3b3e42423f444d54555253596152493a27180f0a0a010b121109060a10 +0e1c2d3e485053554f4646505148414247494c4f52545454564f4d525551 +4f514f50514f4d4b4b4d4b4d4f5152535252524e4a47494a4c4b44464742 +3c3a41453d41484c4b4844423b4145443e37393b34363a3e3f3d3b3a3d3b +3a3a3c3c40423b3a3a3c3e3f3d3c3e3f40403f3d3a36373e44474c54544e +4f524d4d5550444236403d5f0f0155908e4b341220615c222b202a2f504b +4228347aff3348a5fff44d3e5089a2ffff55abdd1cae6befe7de98c482bd +aeb8dccca95e0f3e433738342e2d2e33363538403e3b3a37332a24222e42 +b8f78c292e3c466aa5b1835c534a662e4b7611320e061d616865969e4b65 +85929d9cd1dcd7d5a421121f1827242d85fff2d7d1d2cecad3fbf7f2f3e9 +ebeef9faf7f3eae0d4cfcfced5c4c7dc4b1e32655a90c0002f46412444fc +ffc5c3ddef7f6d9bb8b9a9aab5e2f8dff6dfdfbe3a4096f729a1fff7f3ff +ebf7fff4ddd5defef9f0f4366d87786a4542292f4b8d7d2d3c2738595353 +66748779b9fff9dedde3c6e8fff7d4868c8b8798783b343a43575756232a +3835485d69897f7fa5ecc3cdd0ded0caddc5d0453842582d113b2d78460c +161019221b191c180f121811151b008ebd8286b2ddeed5c6e5fffffbffff +2e42714d2711181b1a15141a21231427263b221b287d60524a4c53575955 +5a544d474a52524c4f5357554e484a504e4e4f4f4e4c4a494841434e524d +4c524b4b4b4a494846454e4f4e4c494747494c4d4e4f4e4c494742444648 +494948474c4c4b4a499da1a4a4a2a0a0a1a1a2a2a2a0a0a0a19fa09e9b9d +a4a5a0a2a4a3a2a7adaba3a1a3a5a7a8a9abada3a5a8aaacacabababa9a6 +a5a6a7aaab989fa3a1938172663b3229221f1e1f21212529282826292b33 +2c2523304a6a81a3aeb3afaeb3b5b0afafb3b6b8babbbcb9b4b3b9bcb9b7 +b8bdbebebbb8b5b5b6b4b5b7b8b8b8b7b6b9b6b3b2b1afadabaaaaaaa6a3 +a2a7aaa2a5abafaeaaa6a4a2a2a2a1a09e9c9a95979a9d9f9f9e9e9f9e9d +9d9ea0a3a49e9e9e9fa1a2a09f9e9e9f9f9f9d9c9b979fa5a8adb4b5b2b3 +b6b2b2bbb7acabb298947c1f26b24260477600265a6905201b1f1a3f4a43 +200c81f60940acf1a50211163578e7f100b3b1009c45decdca92a984766b +a8aca58b511c4d52433d353534373d3f3d404447474c493b291f263398e1 +99264aaba1b9fafffcd8dce1cb9d556050515c7991a9e8fffdfdb236293c +457f8ec8b0b6c08e251e27222918219ff5d6b3e1c2d3d2b3dbdad6dcd6dc +dcd4d4d6d6d6cec4bbaeb5a9b6abc9344b9fe2e4ffec1b39392f1d61f1ac +bfe797060005170506265d99b8cff0d1bbce201a2376c81b71f1dc81aabb +d1e5ded4c8b2bac4dce91505070e0f081d253b466d561834373d41311215 +373f2b2de2938bb8968eb5afc3ca432916131f3000171e3440504d1d2528 +2f36310f3f4222115f588071837793afb5c77f6b8a9c6d2c2f3570330d1c +1b12101b181a160e121812130c163a46320000000d16296cb9e2f1faff84 +3d64401d190f1217191c20201b2a2f2d292a138fb4b4bbc2c6c6c3bdb9bc +bbb5b1b4bbbab4bcc0c4c1b9b3b4b8b4b4b4b4b3b2b0b0afa9aab5b9b4b4 +b9b4b4b4b3b2b0aeadb4b5b5b3b0aeaeafb2b3b5b7b7b6b4b2aeaeafafb0 +b1b2b3b2b2b2b2b16a6e71716f6d6d6e6e6f6f6f6d6d6d6e6e6f6d6a6d74 +757072747372777d7b737173757778797b7d7476797b7d7d7c7c7b797677 +787c8184737b817e705d4e4725221b1612141618181c1e1c181616181f18 +100f1b345368878d8b827b7b7a787c808487898b8c8d8a85848a8d8a8889 +8f90908d8a8787888687898a8a8a89888d8a868584827e7c7b7b7874706f +727770767c807f7b777572727271706e6c6a6264676a6c6c6b6b6c6b6a6b +6c6e71726c6c6c6d6f706e6d6c6c6d6d6d6b6a69677076797e8586838487 +83838c887d7c806c746b1d31c65a745a8402275a64001b161a183c494323 +0f88fd124ab6fdb31626284281f0fc08c8ca08b75bf1dcdcafcba59588c2 +c2b897581d4946342b201e1d202628292c31353a3e3f31211a1a178afeb8 +1f1643285098bd8c49434d432a01353124202c4b84d3eaf0f9d08ea5c5c0 +cfb9d7b4c1cd9c2c141712222333aeffe4c3f3d5e9e8c6eeece6eae3e7e9 +e4e5e6e6e4ded5d0c4cbbec6b4ca2f3d89ccd1edda092b32322870ffc1d7 +ffb325072433201f3d74abc8ddf7d4b8c71817247ad12680fff298c3d1e7 +fcf5eadec6cacce3f92e2c353c35202b2b3f4f755614333c48544c353d63 +6b5654ffb3a7d6b09ec2bcdfff92969395958931332a4044413c1424313b +3d423983a48f7cb17a9194ac96a9bbb5ba561216210c022025602300100f +080914111511090d130d0d050a2f45411231404e4d568dd2f9fffdfd7c32 +58320f0d050d1214171916111e252522240a80a19695969695908b868d8c +8682858c8b858d9195928a8485898585858584838181807a7b868a85858a +8585858483817f7e85868684817f7f808586888a8a898785818182828384 +858685858585843d4144444240404141424242404040414344423f3f4647 +4242444342464c4a424143454747484a4c40424345474746484d4b464544 +454b4d3e4954585043383317150e0a090a0d0f11171c1c19191a1c20170b +040a1c3340585a574b4242423f43484c4f51535455524d4c525552505154 +5555524f4c4c4d4b4c4e4f4f4f4e4d504d4b4a4b49484647474743414046 +483f42484c4b474341414141403f3d3b3a37393c3d3f3f3e3c3d3c3b3a3b +3d40413b3b3b3c3e3f3d3c3b3b3c3c3c3a3938363c4245484f504d4e514d +4d565247464b3d4e4f0e2bc75e7b6087052b5c68041f1a201d434f4b2a18 +90ff1b54c0ffbc1d2b2c4886f5ff0bcbce0cbe68ffeff4cdeec6b4a6dbd9 +c9a562224a4631271b18171a202222252b31343b3d2f1f171e2697fcb327 +2c68516eafcf9c5d575b4f390e3c372b1f181829607380a088516f9ba3c6 +c0eccfd7dda5341d211c2a2737b5ffefd0ffe3f7f6d7fdfaf3f5ebedf1f3 +f5f5f3f1ebe5e1d9e0d1d5bbcc2b203d676b99ac00384437246bffd4f3ff +e2787299b0a39eb1d4f3fbfaffddbfcf25283686d82a85fffda8d7e8feff +fff7ecdee4e1fdff64778b917e50463b4a608a702b41424c5b5f5570a2b2 +9a8bffccbceec9b5d5cdebff97999597998f3b3f384c50564f2734404b50 +56498ea79282bd93abaabeabc0d3cdd4763e454f2f10252f6b2e0a1a1911 +111c191c1810141a14170d0a33576c66a7d2e8ddcbdafafffbffff894066 +411c191014191b1d201e1a2830302a2603697960544f4e53575a5757544e +4a4d54534d55595d5a524c4d514d4d4d4d4c4b49494842434e524d4d524d +4d4d4c4b4947464d4e4e4c494747484a4b4d4f4f4e4c4a4646474748494a +4b4c4c4c4c4b9fa1a3a3a2a1a1a2a1a0a0a0a2a2a2a19f9e9b9ba1a8a6a1 +9fa0a1a2a7aaa7a19ca1a6a9a8a7a8aaa2a3a6a9aaababab9e9f9f9b9a9c +a0a5aea18a6f543e30252823201d1f21232620202223282828261d1f2223 +23272b325c80a9b9b4aeb2b6b0b1b5b7b6b5b7bab3b1b3b9bbb9b7b7bdbe +bdbbb8b5b5b6b6b7b8b8b8b6b4b3b6b5b4b3b2afaba7aba9a8a6a5a7aaac +a5a8adaeaca9a5a3a7a39fa0a2a19d989596989a9c9c9d9d9d9c9b9a9b9c +9e9f9d9c9c9d9fa09e9c9b9b9a9a9a9a9a9b949da4a6a8adb0b0b0b4b1b2 +bbb9b0b19ba9a2761a008800004c04201869801d1a1918093047461f257a +d1001d3c3500161523264a753300d38c00af52e5cfc786aa9f856b9c9fb2 +a55f2b423e37373439393a3e3f3d3d3e3e4048463521243564ba94354997 +c4c6ffffffd9ced2c1a8784e603a6f5a7391d6ecf3f6e7833b363b5c947f +b9a8ad8a6b2720232425122046ecd6a0c0a0bcb5b2dbd8d3dad6dadbd2d2 +d5dadcdad4ceacb4a4b6b89d3566ace0eeffb4173e353a0977ecc9d8c800 +00011d170d24538bb4badfd3cdc0162f212557840736e6dfa5ad988fa9be +d1c9c5b8b1c0d92e02070003000c19364a703d0a213131313f1700342d43 +1bd3b5cebfc0adc1bab6ce7a230b0c08340015133541614a1820203c3b5a +19322c1e1b888cc0998968909ea2c6bf79a2ab894222456f2614171b0e17 +120f130f050a130f1112281e24310001070d151b4392daf4f7ffe34c563d +1a1e20190e060a16212421261929361df0b7b1b9c3c7c5c2c0bdbbbab7b5 +b7bbbab5babfc3bfb8b2b2b3b6b6b5b3b3b2b2b3afa9abb4b8b5b4b9b7b7 +b6b5b3b1afaeb3b4b5b4b1afafb0b1b2b5b7b8b8b6b5b3b2b0afb0b2b5b7 +b3b3b3b4b46c6e70706f6e6e6f6e6d6d6d6f6f6f6e6e6d6a6a717876716f +707172777a77716e73787b7a797a7c7475797c7d7e7e7d6e6f706f70747a +808d816c513823140f1b191818191d21241e1e1d1e1e1e1c1a1316171918 +191c1e4362848d8277757b7d8286888786888b8482848a8c8a88888f908f +8d8a87878888898a8a8a8886858988878685827c787c7975737274757973 +797e7f7d7a757377736f7072716d68646567696b6c6d6d6d6c6b6a6b6c6e +6f6a69696a6c6d6b696868676767676769646d7577797e8181818582838c +8a81826c7f846718049c09135f112819697b18151413072d4646222881d8 +022746410529283233537e3e04e8a50bca68f7dcd7a3ccc0a489b6b5c5b1 +662c3e32282521252223272826262a2b2f373927161a2b59b59e2f123841 +42a9c0a76b4544423b251645274c283053b1d7e3f1f0ad97aeb4c3d6a3c5 +acb897782c1612141e1b3255f9e4b0d1b3d1ccc7eeeae3e6e0e3e5e2e4e5 +e8e8e8e4e1c1c9b7c2bd992b5899cddbf3a20631313f158affe0f1e31b11 +1e3a31253b689ec1c5e5d5ccbe122b1f245b8b1548faf5bfc8b0a7c2d5e7 +dfd7c6bacbeb4b2c39322d171b203a52783f0b23383b4158381b5e5b7144 +fad8f0e2e0c1cec7d1ffcf9b979b8e9b2e3b2541434f370f212c4c466f45 +768e8b84d7aacfbfb88dacaea7ba8e0d15120c05092f5d14040a0f04100b +0a0e0a00050c080b0b1f17233b18283d4a525470b5f1fffbfddb3f452b09 +1016130b03050f1518171e13233115e3a39295989895918e8d8c8b888688 +8c8b868b909490898383848787868484838384807a7c858986858a888887 +868482807f84858685828080818485888a8b8b8988868583828385888a84 +848485853f41434342414142414040404242424143423f3f434a48433f40 +4142464946403d42474a4847484a40414245464747493e41423e40434b53 +625a4a352210060415181615191c222521232325272928261c1b1b18120c +0905243c585e4f413f43444a4e504f4e50534c4a4c525452505054555452 +4f4c4c4d4d4e4f4f4f4d4b4a4e4d4c4b4c494642484846444547494a4245 +4a4b4946444246423f4042413d3a393a3c3e403e3f3f3f3c3b3a3b3c3e3f +3b3a3a3b3d3e3c3a3939383838383838333c4143454a4b4b4b4f4a4b5452 +494c364f5e4a09009d0e1965172b1d6b7f1c1918190c344c4e293189e20b +31504d0e302e373958834207eba90fd175ffeff0c3efe1c3a5cfccd6bf70 +313f3225211b1e1a1b1f201e1e21242730332414192c5fb99d3327586b69 +c4d1b57857544b412f1f4a2950211620596c748da16e668895b2d5b1ddc7 +cea781321e1a1e2620365cffefbde1c4e2dcdafff8f0f2e9eaeeeff2f2f3 +f4f5f3f0d4dcc6cec19622354a677ca87e004242421188ffffffff5f87aa +bcaa9199b9e2f8f2ffecdac3112c2c346693184cffffd0ddcabfd6e5f5ed +efe0cbdfff83809a917f4d3a3046658f58203242444e6e594a9899ad78ff +f8fffef9d9e1d7dcffd29c989f91a03644314f52674d24333a5b5882527f +918e8ae4c4ecd6caa0c1c5bdd2ae3e4a4834150f3b69200f14190d181311 +1511070c14101513221e315f5e8fc3e0e8d5cbebffffffffea50553b191d +211d120a0c171f2220291f2d3712d2826357545253565b5c5653504e5054 +534e53585c58514b4b4c4f4f4e4c4c4b4b4c4842444d514e4d5250504f4e +4c4a48474c4d4e4d4a484849494a4d4f50504e4d4b4a4847484a4d4f4c4c +4c4d4da4a4a4a3a2a2a2a2a29f9d9fa3a5a3a0a09c9a9ea6aca9a3a1a2a3 +a6a8a8a4a09ba4adb1ada7a3a2a5a6a8aaacadadada3a2a0a3a7a6a29e85 +6e4c302222292c2c2725211f1e1e1d20202123242727272b2a2928252423 +261f396b9eb7b2adb0b1b4b8b7b3b1b2b5adafb2b7bab9b7b7b8b9b9b8b5 +b4b4b5b8b9bababab9b7b6b4b3b2b1b1aeaba7aca9a6a4a5a7a9a8a9aaae +aeaba7a4a3a5a3a1a2a4a29c9694959698999b9c9d9c9c9b9a9a9a9b9c9b +9a9a9b9d9d9b999d9c99979797999a949ca4a6a6a7acb0adb2b0b2bcbab4 +b6bac79c69202fca6e7d7925020033422f2522210f2d3c3f220abcae083e +52a71d0915173846b13900f16e009d37d0d0c57c8f5c8a849aacafbc6332 +342d343e423c38373837312d2d39333230251d33507b85402e8db4c3ffff +ffd8c2d4c691694f495b658f8f8fafe5f0f9f3ca5d474c58718980b2a986 +31321b202128230e1f33f4d2b4cac6bba2b7dcd8d3dad6d9d9d8d5d7dadb +dad5d2d2cdbfb9d6473563b1e1f0ff75203f31213086ede9b70000151710 +0b2e6997b8d5e3e1c1bd0c1f2138354a571018e1dac5a78386bad1e1cad3 +d2c3aab341000a02080b131b305a9534111522212e5d2a323e8d530cb293 +d1b0cab1bccc999870150100002e0013162f4f8456202a2548476e1a3d43 +3718706a9a81676095abacbadf71abb69f55204b6f261b0b161c41232529 +1d08050e0c0a1c1a2f361c23000a0a1313226ecbf5f9fcff7a423f241a21 +2d3e44403525162444264d2d14ffa4acb7c1c5c4bfc0c1b9b8b7b7b9bab7 +b4b5bcc0bcb7b4b2b0bab9b7b6b5b6b7b7afabacb2b6b5b5b8b7b7b6b5b3 +b1afadb3b5b7b7b5b2b2b2b2b3b6b8b9b8b7b6b4b4b3b2b3b4b6b7b4b4b4 +b3b3717171706f6f6f6f6f6c6a6c7072706d6f6b696d767c797371727376 +787874706d767f837f79757477787b7d7f80807f737374787e817f7d6853 +331b0f10161d2322201f1e1f1f20202021212121212128272623211c1a18 +0c1f4a76887e757880858988848283867e8083888b8a88888a8b8b8a8786 +86878a8b8c8c8c8b89888786858484817c787c79737172747475777b7f7f +7c7874737573717274726c6563646567686a6b6d6c6c6b6a6a6a6b6c6867 +67686a6a68666a69666464646667646c757777787d817e8381838d8b8587 +8b9f805b213cdf87948c320a01333d2a201d1c0d2a3b3f250dc3b511485c +b32b1c2826434fba4404ff8616b64de2ddd599b17da9a2b4c2c2c86a3330 +23262c2f2b272426231d191926202021171127477b8029002a363b84bbac +76525146281812224b5773645779c3dbecf3d9899db5bbc2be9dc0b0933e +3c1e1612181c172e40ffe0c6dddbd2b8ccf1ebe3e6dfe0e2e6e5e5e7e7e8 +e5e4e7e0cfc3d74027519fcfe1fd6410332e263f99ffffd0041930322b26 +477ea9c5dce7e1c1bc0d202237344c5e1d29f5f1dec19da0d2eaf8dfe3e1 +cdb8c8602b3f373628232234629d39141826293b6f455367b88136d9b7f5 +d9edc5c9d5b1cdc59195988e9f393f2c3b4e7243192d33585381427c9b99 +75b583abaa9686b1bdb4b2b101120d100a00315b120b000a123a1e202418 +030007050517172e38212f19344359585d99e3fffffcfc6d302a0f09172a +3d433d2e190a1a3f234a270bfc908f949898949191928a8988888a8b8885 +868d918d888583818b8a888786878888807c7d8387868689888887868482 +807e84868888868383838586898b8c8b8a89878786858687898a85858584 +844444444342424242423f3d3f4345434044403e42484e4b454142434647 +47433f3c454e524d474342434444464849494b4345454b5257595a4a381d +0801040f18242626242323242528282b2c2c2f2f2f33302d29221a130d00 +062b525e4f4445484d51504c4a4b4e46484b50535250504f50504f4c4b4b +4c4f50515151504e4d4c4b4a494b4846444b4844424547484646474b4b48 +4443424442414244423e3a3a3b3c3c3d3f403f3e3e3d3a3a3a3b3c393838 +393b3b39373b3a373535353738333b41434344474b484d494b55534d4f55 +6e593e1135e08c9a92380d0535412e242122123141472c16cbbf1a5266bf +34232e2b4954bf4807ff8a1bbd5af0f0eeb9d49ec8becbd7d1d472373121 +232829241f1d1c1a1410101f191c1e16112948797d2f06475b61a4cfb983 +6061532c1717274c57725d404b79808e9d96567697a9bcc4afdacaa64e45 +251e1922241c3549ffedd4eeeee4cde1fffaf2f2e8e8e9f1f2f0f0f3f3f2 +f2f8efdcccd93a1c2b4b6984b848114741293c9fffffff4775bdcbae9199 +bddbefffffffddcc121a1c3f4258662330fefff2d8b8bbeafefff0faf4d7 +c5e79783a79d8c6044323f75b44d252732344b85637c95ebb366ffdbfff7 +ffdddce6bdd5ca93979d94a5404837495e88592b3c406563904e839d9c7c +c4a1c9c0aa9bc6d3c9c9ce314a463c1e043c671e1608141b4225272b1f0a +070f0d0c1e1e36473f696eacd0efe1c5ddfdffffffff7e403b2019223343 +494436231423462e55310cf175655c585452555b5e545150505253504d4e +555955504d4b495352504f4e4f50504844454b4f4e4e5150504f4e4c4a48 +464c4e50504e4b4b4b4a4b4e5051504f4e4c4c4b4a4b4c4e4f4d4d4d4c4c +a7a5a2a09f9f9f9ea29f9d9fa3a5a3a09e99989fa8aca8a3a4a3a5a7a8a4 +a09ea2a8afb1aea9a5a4a7a7a9aaabacadad9f9ea0a8ada1897240342822 +25292c2c1d1c1c1c1c1b1b1b1d2023242223262928241f1c1e232a302920 +274d84a9afa6aeb2b5b5b3b1b2b3a9adb2b5b7b8b8b6b9babab7b4b1b1b2 +b7b8babbbbbbbab9b4b2afaeaeaeadabafaba8a5a5a6a7a6acacaeaeaaa7 +a4a3a0a2a6a7a49f99959394959698999b9b9c9c9b9a9a9a9a9a9d9c9c9c +9e9e9c9aa19e9b9897979899989ea4a7a6a6aab0abb1b0b2bbbab5b9afa0 +a2581025730000000c0048373f2b2d272b1d2e2c32253fd4d2114ed0f598 +1c2431b889e1c00be2471dc438deb39389a26f988eb5caaab24f3b3d3b42 +42423c35333636332f2e35271f1f1f253f5763414d7dabc9eaffeaeedabd +baa064393137578392aaa9b6c2ddf9f0b151555e655c5a91beaa7027161f +2b282d2918223bf4dcbfbea8b8d9b6dcd9d6e1dce0dedddadadbdcdad7d2 +e2e0d3dbe1184766b4e4f2ff46374034243450dec3000213040d0e245992 +c0d9e0dac998462a4446424350583e2ee9d2ca98767baab4dad8d1dee0c6 +c36a00010708131b262b59973a2c292a30457434173c7a561fa4bc838595 +a6caf4d4bb6b0e0200052702112b375e8d4c1d1f050f5471245b666a588c +9c92887181879fa7abde69a5bcaa612648611d1d0d182954404246331509 +100f0a100d1e2807330705010b0b0e49aee9f8f7ffc339322b181a304c56 +4c3821102e5e4c612a08ffc9aab3bec2c1bfbfc1b8b7b7b8b8b6b4b3b2ba +c0bdbabab7b3bab9b7b6b6b6b8b8b1aeadb1b4b4b5b6b6b6b6b4b3b1afad +b2b6b9bab8b6b4b4b4b5b7b9b9b7b5b4b2b3b5b6b6b6b5b4b5b4b3b2b074 +726f6d6c6c6c6b6f6c6a6c7072706d6d68676e787c787374737577787470 +6e747a8183807b777679797c7d7e7f807f7170747e857d6753251e161318 +1e2223181a191b1d1e1e20202326242120232627231e1b1d2025271b0e0d +2d5d7d7f767f838686848283847a7e8386888989878b8c8c898683838489 +8a8c8d8d8d8c8b8785828181817e7c7f7b7572727372737a7d7f7f7b7874 +7370727677746f68646263646567686a6a6b6c6b6a6a6a6a6a6a6969696b +6b69676e6b686564646566686e747777777b817c8281838d8c878a827886 +4a11328807060e190249363a262822261b2b2b322842dbd91a58daffa62f +3740c392eacb1af55f36dd4ef0c0a3a3c38db7accfe1bdbf563c39313430 +33312c282927221e1d23180f11131a345368320911213b72a596986f4641 +351500081b457478857b8ba3caf1f3c47a9cadab9380acceb98137212222 +1920241f2f47ffe9d0d0bdcef2ccf1ece6ebe5e4e5eae8e7e5e6e7e5e4f5 +f2e1e2e00e3453a4d7e5ff362836322b4365f5db051e302029293e6fa5cc +e0e0d7c595472f4e4d4141525f4b3fffece4b39194c2cdf1eee2ececd5db +8e233a403a342f2e2f609f40302b2c324a7f45305da08046cadfa9b0baba +d2fae6eabe8997979a9e57414345607e3b1723141d5a7d428cadb89fc1b4 +a5b09ea19fb1b4b1bc020e0d110c002a4b090b000c1f4d3b3f4330100409 +08050f11242b0834112536575e557ec6f0fff9fbb5241b1406102d4c5649 +3115032759495f2701fcb78e929697949192948988888989878584838b91 +8e8b8b88848b8a888787878989827f7e8285858687878787858482807e83 +878a8b8987858587888a8c8c8a8887858688898989888786858483814745 +42403f3f3f3e423f3d3f43454340423d3c434a4e4a454443454747433f3d +434950524e494544454545464748494b3f3f4754615b4c3e14100c0c121c +20241c1f20212223232425282d2c292b2e2f2f29262325272b2a18040016 +3e5857484b4b4e4e4c4a4b4c42464b4e5051514f5051514e4b4848494e4f +5152525251504c4a49484a4a4a484e4a46434546484647474b4b47444342 +4042484946413d39393a3b3c3e3d3f3f403e3d3c3c3c3a3a3d3c3c3c3e3e +3c3a413e3b3837373837373d43464343474d464c494b52514c524b475f2f +032b890c0e151f054d3b402c2c262c2032313a2f4be3e32362e4ffaf363d +45c997efcf1df9633be45bfed3bcc4e6afd4c6e6f3cbc85c403a30312c2e +2d252223201b16161f130f11151e3a54612d182b45618ebaa5a57f59503d +110002174371777f6b696d88a9b08d4e7a98a3988dbfe7d0934427272720 +292b273753fff9e0e4d2e5ffe3fffdf5f7eeededf3f3f0eef0f0f2f2ffff +ece8de0525294c6e89c21f2f4e48314676ffff6282a6b2bb9e95a8c6e2f3 +faf6e6b259334545494f5e675147fffbfbceafb2dce3fffcf2f7ecdaf3c0 +7aa3ab936a4a393872b24e3b3739415d955f4e7ec4a66df1ffced2d7d3e7 +fff2f2c48e9b9da1a65e4b4d506d914e252e1b26688b4c91afbaa5cfd0c5 +c9b3b8b7c7c7c1d52d43463f1f02365815170816285542464a37170b1110 +0c171c323e2462588cb8ebecc9ceecffffffffc6372f26161b36545e5039 +1f0d2e60546c3208f6a1695f59535153595d51505051514f4d4c4b535956 +5353504c5352504f4f4f51514a47464a4d4d4e4f4f4f4f4d4c4a48464b4f +5253514f4d4d4c4d4f51514f4d4c4a4b4d4e4e4e4d4c4e4d4c4b49a6a29e +9b9b9c9c9ca1a0a0a0a2a2a2a19b9798a1a8a8a5a3a4a2a3a6a5a19e9fab +abaaaaaaaaababa7a7a7a8a8a8a9a995969ba0987d56382e2c2a2b2a251b +141d1e2021232426261e212424212125291b1d212425221d192329252142 +7ba3acabadb0b2b4b4b4b3a6adb2b2b3b6b7b6bebebcb8b3afaeaeb6b7b9 +bababab9b8b5b3b0aeaeaeadabb1aeaca8a6a6a8a8adadaeada9a6a5a59f +a2a5a6a39d979492939597999a9a9b9b9b9b9b9b9b9b9aa1a09fa0a1a19f +9da19f9c9a99999a9b9e9fa4a8a8a7aab0aab1b0b1b9b8b4bac0a8bc3e1f +247d4e575b00154526201c2521281b251a221d47e8a4195ad3e77d131c2c +6e8df8d400f1421fb000ddb6b194aaa0827bae9f29a5373e3e3e43434e38 +2f2e323938373a2c241d1f28313c473e3a6da9cde1eefcffefcdb1916441 +393b3557737e879c95a1aabab89b7578768b866a98a7ad8e4e1d30352c31 +3529217af4d89ddbd6dbd1aed5d3d3e1dee1e0dfdbdcdddedcdad7ceded0 +fab123536fbeecf7f82f48463c4b0c408500001e030a192c5b8cb5dde8e8 +e17f30482e3d2b3f3e454c4946eed7cdb9c5c9cea7c9ced6d1dedee49b00 +00030008132b283f6130363c39424d63250a22b2920d9abdb8cccec19bd7 +d8c9a7130200041d1b083411385d31313c271c47691409003e5834be7275 +79927896afa4d07a98baab692c4f57161917181c2c292c342710080e0c0f +05461f1e1e35170600040a0a2f8ed8f3f9fdff521c271d21201d11090e1c +22131c19121703d2daaab3bcc0c1bfbdbeb9b8b7b9b7b3b1b2acb7bdbab9 +bbb7b0b6b5b5b4b4b5b5b5b3b1afb0b2b4b4b3b5b5b5b4b3b2b0afb1b5ba +bcbab8b5b4b3b5b7b8b8b6b4b3b1b2b4b6b6b5b3b1b4b3b2b0ae736f6b68 +686969696e6d6d6d6f6f6f6e6a666770787875737472737675716e6f7d7d +7c7c7c7c7d7d79797a7b7b7b7c7c676a70767159371c17191c2124201912 +1b1c1e2024282a2b22252825201f23271a1c202425211b151c1d12092359 +7c827d7e818385858584777e83838487888790908e8a8581808088898b8c +8c8c8b8a8886838181817e7c817e7975737373757b7e7f7e7a7775756f72 +7576736d6663616264666869696a6a6a6b6b6b6b6b6a6e6d6c6d6e6e6c6a +6e6c6967666667686e6f747879787b817b8281828b8a868b9382a2302131 +92676e6e031c46241b17201c2319221922204aefab2264ddf38b262f3b79 +96ffdd04ff5a38c913efc3c1aecbbe9f96c9b63bb2403f3c36383440332e +2a2d2f2d2c2c1e1611141d2734403b17061c355688aab68f593a290f040f +1b1d435e626877758799b4bfb199adacb4a885aebbc2a16026312c202630 +2d2b86ffe5aeedecf3e9c4eae5e3eae5e5e4e9e8e6e7e8e9e8e7e0eeddff +ac153e59afe1ecec1f3b3d3a541d559b1510391f273648739fc2e4e7e2d9 +792e493549363f3c47535657fff1e7d4dfe4e8bfdfe4e8e0ebeefec11c3b +3d312c29362d4668373b3c373f4b652d1c3dd2b631bcdedbf8f5d2a1d6e4 +f1f48c97979d98743a4f223c51232e43352a4a6d272c2e78895ad3869da1 +aa88a6c0b4bd200a0b0e0c002d3f0007070c1227242931240b0307050a05 +4f2c241e2b161b3055665c6aa4defbfdf7f13b030e0b171d1d1108090f15 +0d1a17101300c7c98f919494949394948c89888a888482837d888e8b8a8c +888187868685858686868482808183858584868686858483818082868b8d +8b89868586888a8b8b8987868485878989888684858483817f46423e3b3b +3c3c3c41404040424242413f3b3c454a4a47454442434644403d3e4c4c4b +4b4a4a4b4b45454344444445453339434e503f23100f151b2226241c1520 +212325282b2d2e25282b292524282c1f21262c312f292324210e000f3d5b +5a4b46494b4d4d4d4c3f464b4b4c4f504f5555534f4a4645454d4e505151 +51504f4d4b4a484a4a4a48504d4a464646494848484b4a464344443f4247 +48453f3b38393a3b3d3f403e3f3f3f3d3d3d3d3b3a41403f4041413f3d41 +3f3c3a39393a3b3e3e43474544474d454c494a504f4b535c537d15132a95 +6c767509224b29211d2420291e291f2a2753f7b52b6ee7ff942d35407f9b +ffe207ff5e3dd020fdd6dacfeee0bdb1dec647ba45433d3436313d302a27 +292d2928291d16131825303f4734151b3e5b779db6c39d6c4d341200030e +113c5b61656e60646d828c83738f9cb6b498c3d3d5b06a2d3531242c3736 +3594fff6c0ffffffffdcfff9f3f9efeeedf3f1eff0f1f1f3f4ecfbe5ffa8 +0a2b2a527592b00f4558525d2772d57587bca7b3b6acb9c7d3ecedf0ee93 +465b3b45304949535b5e5ffffffff1ffffffd7f4f2f4e3e2ebfff072a5a9 +8a60413c31567a3f3f464450607a423050e7d051e1ffffffffeeb7e8f2fb +fc949e9fa5a07c435829455f323749382d53782e3030798e67f0a7b7bac6 +a2bdd2c1d0443a423b1f023b4d0d1312161b2e2b30382b120a0f0d100d5e +3f3a384e4f74a7e5f9d9c6d5f4ffffffff4f18211b222625190e10191e11 +1f221d2207c5b9716459535152565853515052504c4a4b45505653525450 +494f4e4e4d4d4e4e4e4c4a48494b4d4d4c4e4e4e4d4c4b49484a4e535553 +514e4d4b4d4f50504e4c4b494a4c4e4e4d4b494d4c4b4947a5a09c9a9c9f +a0a0a1a2a2a2a0a0a0a19c999da6aba8a6a7a4a2a3a7a6a2a2a5adaba9ab +adada8a3a9a9a8a8a7a7a7a79fa4a4937555392a2926222020211f202022 +2221212223222423222222252626312b221d1c1b1d1d1326322e294075a3 +adaeadb0b4b5b1ada6adb1afb0b4b7b5b9b9b9b6b2afafafb9babbbcbcba +b9b8b7b5b3b2b1adaaa6acacada8a4a4a8abaeadaeaca9a7a6a7a4a2a0a0 +a09e98939395989b9c9d9c9b9b9b9c9c9c9c9c9ca1a09fa0a1a19f9d9d9d +9b9b9b9c9d9ea2a0a2a8aaa8a9aeaab2b0b0b7b6b2b8ada4aa2d25358c93 +9d86120030260e3122252b161f1a22151ae77b00278c4a001f1123315572 +0600f1263caa0adbb9b15f50625399b0c70a9d263e393437405b2c201c21 +26282b2c202120222b3432312a6aa3c6dedcdfffffdcaea27d4e40493738 +485562687e7e8b7c7d8585948d92cde2c1b2a4ada24f213435313c4c3e1a +72f2f4a1c3cdc4b2afd5d4d5e3dfe0dcdddadbdddfdfdcd7d6e5e2f55430 +4860ccedfdcc25494d41314451070008120f1d2d4f93c1e0f7dbab761c3d +3d414934403c3d403b53eed8d3b6baabac94d3e2ded1dad8e3ba00000306 +130f3033393a252e3a35433f43231d004b790b80da92848fbfadefe1bbbe +260000001a2a002d3b545f3d463b302648571f191891bb29ea8989888881 +9daa9dc39d8ab1aa7234514e17171f14130b0d0d15130b0c11061107924e +3436322a0b0100060b1c6dc6ecf9ffff921a1f251c18110b0d1620212a1b +1b0822137ee4aeb3babec2c2bfbdbebab9bab7b1afb3aab6bcb9b8bab5ab +b3b4b4b5b5b5b4b4b5b4b1b0b1b3b2b1b5b5b6b6b5b4b3b2aeb3b8bbbab7 +b4b3b0b2b5b7b7b7b5b4b2b2b2b2b2b2b2b1b2b4b3b1b0726d6967696c6d +6d6e6f6f6f6d6d6d6e6b686c757b78767774727377767272757f7d7b7d7f +7f7a757b7b7b7b7a7a7a7a7478796c50321b111515171b1f2124231e1e1e +1f2124252726252422212122222d27201c1b1c1b1b0e1e251c1327578183 +7f7e818586827e777e8280818588868b8b8b88848181818b8c8d8e8e8c8b +8a8a88868584807b777c7c7a75717173787c7e7f7d7a787677747270706f +6d67626264676a6b6c6b6a6a6a6b6b6c6c6c6c6e6d6c6d6e6e6c6a6a6a68 +6868696a6b727072787a787a7f7b8381818988848a7f7e901f2742a1acb4 +991f063124092a1d2026141c1922181dee8202319656033224303c5e7b0f +04ff3e55c320edc6c1786e7f71b5c9dc1caa2f3f372b2c31512c26202325 +2423241616161b232e2e250e25212b516892ccbc6630312c130f211b1f2c +38444b6265766e788d99b2b0b3e0f1d1c7bdc7b9622a342c25334740227b +ffffb2d7e3dccac5e9e6e5ece5e2e0e7e7e5e6e8e9e9e8e6f3edf94d202f +49c0e6f4c2183d47413b55671d121e2a2a3c4d6ca9d0e7f6d5a06c143b41 +4b584240383d474864fff3eed3d7c5c5ace9f8efe0e8eaffe41e3e403c37 +253b3941422d34392f3a363e252a1166992b9ef7b3b0b3ceafeae7ddff9b +939a9295822a4a4e5b583345433f324654282e3cb7d63ffda2aeaa9788a9 +bdbac15408090d11002d3601030f080906080a1210060507000c0aa1603e +33221e182d4f6a665c83caf3fdfcf97b0006101115140e0c10131424191a +071f0d72d29292939596969694918b8a8b888280847b878d8a898b867c84 +85858686868585868582818284838286868787868584837f84898c8b8885 +848385888a8a8a88878585858585858584838382807f45403c3a3c3f4040 +4142424240404041403d414a4d4a484944424347454141444e4c4a4c4d4d +484347474444434343433f474c45331e100c161b1f2227292a28211f1f20 +21232223232221201f20211f2a262324292e3030222d2c1a08133f5e5147 +46494d4e4a463f464a48494d504e5050504d49464646505152535351504f +514f4d4c4d4947434b4b4b464444494b49484b4946444546444242424442 +3c373a3c3f42424342413f3f40403e3e3e3e41403f4041413f3d3d3d3b3b +3b3c3d3e424041474947464b454d49494e4d484f4b4f6b04193ba4b1bca0 +270c36290f3121242c19231f2a1f26f68c0b3ba0620c392a364263801407 +ff425aca2dfbd9da97909f8dcddfed28b23443382c2a2e4f2c2621222321 +2122171a1e23303c3d2f0d283b4d717f9cd3cb7c4643320f0815060b2134 +464d615e65545a68749092a2e7ffe8dcd1d8c7692f362f29384e4c2d8aff +ffc6effbf6e4ddfffcf5fbf1eee9f0efeeedeff2f2f2f3fef3fa47111917 +5e749987084b635d4767906889b0c8c1b9b2bce2f1f7fbd5a67523494d54 +5b454c46494f506cfffffff1f7e6e3c6fffff6ddd7deffff71a5aa92673a +3d394c4f2f323f3d4d4b523433186fa642c0ffe0d5d3ebc6fef7e9ffa59d +a49d9d8c33505261603c4a453c324b5b2d313cb8dd4dffc1c9c5b6a5c1ce +c2ce72343d38240539440e0f1a12120d0f1119170d0d10071213b478574e +3d4c669addfeeac0bce5ffffffff8f1419211f201b15141a1d1d261c2215 +301976c87a695c555555565656535253504a484c434f555251534e444c4d +4d4e4e4e4d4d4e4d4a494a4c4b4a4e4e4f4f4e4d4c4b474c515453504d4c +484a4d4f4f4f4d4c4a4a4a4a4a4a4a494b4b4a4847a69f9d9aa0a2a6a4a0 +a1a5a19f9b9fa09e9da2abaeaaa8aba5a2a4aaaaa6a8aeababaeb3b5ae9f +92aeadacabaaa8a8a6a0a19672442521282a241e1a1a1b1d222324242223 +23242428231e1f23272521242320212323201d2a181f362f1e4185b2b2ae +b0b3b4ada4a6adb0adadb3b8b7b0b0b1b1b0b0b1b3bfbfc0c0bebcbab8b9 +b7b8b6b4aea6a0a6a8aaa6a1a1a7acacadadaca9a7a7a8aba299999e9f99 +9497999da1a2a19f9e9c9d9e9f9f9f9f9ea09f9e9e9f9f9d9b9a9a9a9b9c +9ea0a1a7a1a2a9acaaaaaeadb4b3b2b6b4b1b6ba9a8f360c5b76000b9618 +19261d3c232c34371822292e1800ea180f54382c0e0e2006344e6f0b19f2 +0c5b992cc9c0aab5a3b19eba4ed3368f1a4342332e3658352621262b2a29 +28151c1f202c3b3a385c8dc4d6deffffffd2b8a99f806d5e443b4d3d4c4a +5452647778878e798b7fa1b6d0d1d2cbaba14c1d2c2f364c6250158eede6 +c0bdc799a2bce3e2e1ebe3dfdadbd8dbdddededbd6d7d7efd717445871d4 +eaffa62441504037190a030f170a1a2f4b7fc3dadcd7977b2a3e3a553237 +393f4149534466f0d2cda8a699b2a8dacedadeead0dad00000000913001c +2d3b2e2b293128382d323432198e7e0054cc78d273cbdeecdfd2c63c0202 +001c2f0024203c3e2e42324556553f2933002d6e00e89d967e648ca99e9e +c2b97aa1a783464542181422151e151e181b201e22200f1512b577462328 +320d00000107064eb0e6f2ffffce271d271d1c191b2329261c0c19272310 +0d20e5adb2b7bdc2c5c0bdc2bdbbbbb7b0b0b4b0bcc1bdbcbeb8acb4b5b7 +b8b8b7b6b5b7b5b2afb0b2b1afb5b6b7b7b7b6b6b5abb0b7bab9b6b3b1ae +afb3b5b8b7b8b6b4b2b1afb0b0b2b3b3b2b2b1b0736e6a696d7173736d70 +72706c6a6c6f6f6e737c7f7b797c7673747a7a76787e7b7b7e84867f7164 +7f7e7d7c7b7b7b7d777c735125090a161b1a1817181b2023212020212123 +242628231f1e2223211d201f1e2023221e1b2714172b200c2e698b848182 +85837c75778083807f8587867f8182838182838591919292908e8c8a8a8a +8989857f7771777978746e6e73797d7e7e7d7a7877787b7269696d6e6860 +6163676c6d6e6c6b696a6b6c6c6c6c6b6c6b6a6a6b6a686665656768696b +6d6e756f70777a78787c7b828181878583898f79782f106c8c071fa7231e +271c3a212a323517232a311b00f121195e45381f233819435c7a1928ff21 +72b040dbd0bccfc0ccbad565e6479c22443e2b2327513e352a2625211e1f +0e171a182029210f1927343d5c9dccc5653a2b353a3c362323351b262634 +35485a5e7a8d869e92aebad3dadfdec1b55b252d2a304761541d9afdf7d2 +d3dfb1b8d0f5f1eef4ebe5e0e5e4e4e4e4e6e5e4e8e6fadb0f33405ccce7 +f79916364c454630241e272f1e30496695d4e6e2d69375233b3a5b3f4847 +41414b5a5177ffe9e5c2bfb3cac0f0e1ebeef8e4f5f822363743411c3036 +3e3135333427352a323b4230aca1117bf3a2fe95d6d7dcd7e8ffaa92a28b +9b8d24422d3d3c2c4438515c4b3327441f5f930cffbcbba17597b9b3b6c0 +7a0a091013001c2a02001208140e1913161611110a00050cbc844e241924 +12264465684f68b6f0fafcf3b50a010f10161a1f2224180f031524210f0b +19d89794939599999794948f8d8d89828286828e938f8e908a7e86878889 +89888786888683808183828086878888888787867c81888b8a8784828082 +85888a8a8a898685838282838485828181807f48433f3e42464848424547 +45413f414445444950534f4d4e4845464a4a46484e4d4d5056585140324b +4845444344444949504d32100004162022222223252728241f211f222122 +2326211a1a1e201e1a1d1e21262f3233303a23222f1d02205364524a4749 +49443f41494845434a4f4e47494a484947484a565657575553514f525151 +504f49413d434547433f3f444a49484a49464446474b423b3b42433d383b +3d4144454341403c3d3e3f3f3f3f3e3d3c3b3b3c3e3c3a39393a3b3c3c3e +3f443c3d4447454547464d4c494f4d48526250581501648a0b26ae29242c +213f262f373a1d282f382209f92a22684e4427283c1d485f7e1c2bff2678 +b849e7dfd0eadee7d2ea77f44fa225463d291f224b3b3229282926242415 +1e21232e39341f20324f5b74acd2ce785041433c372e140b1d11252a352f +3d4a4d6779728a7fa4c3e4ebefecccbe6228312e344d695f2aa8ffffe6ea +f7cbd0e8fffffefff6f1ecf1f0edeef0f1f1edefebffde0c231c196176a6 +6c0d466563655c6e85adc7bbbaaaabcefffff0db94772a4446674850504e +4d57645981fffbfdddddcee6d8fff2f5eeebd9feff719a9e977231313345 +3a3632392f40353c454f40c4bf35a2ffc8ffb8f6f6f6eefdffb99dae95a4 +972f4c3542412f43364d5a533d324b205e991affdbd8bd93b3d2c4c2ce95 +30383b2c0b2a370f0b1d111d1520191d1e1b1b17051018ce9763382c4756 +8bcff7eab8b3e6ffffffffc820182521201e20272b251904142b2e1f1920 +d280705f5859585554585452524e47474b4753585453554f434b4c505151 +504f4e504e4b48494b4a484e4f5050504f4f4e44495053524f4c4a45474a +4d4f4f4f4e4b4a48474748494a4a49494847a4a49d9ba7a6a0a0a5a0a1a6 +a9a4a6a9a19da1a8aba8a7aca5a7ababaaa7a5a5b0adaaa59d989ca3abb0 +afb3b7ada3a598956b3725211f27201f1e1e1f1f2120242120202222211f +21212121212121211f1f1e1e1e2021211f1e222527293141a6b3aab6b4ae +bda9b1b0b2b1b0b2b3b4b7b3b4b8b7b2b1b6bfbebcbcbbbbbcbdbcbdbeb8 +b5b1afaea7a8a8a6a3a2a3a5adababababa9a6a3a1a3a5a39f9b999a9da2 +a2a3a2a09f9e979f9d9ca29f9ba19da19e9b9eaa9da5a0a19ea4a58d91a0 +a2b0a0b2a5a3a0abb2af9caca9ba9eafa5a5752a0b8482454b5200042623 +0f151f273317122d592309f72e1b23e8e64a0e17434d9ff17a1df2006acc +acc1b96b6e6d799468001d6df2242f382b322c3d46211e2f39352e24121a +242b313e547394c0d2dcffffffc8ad9d979c999281695350535653535255 +6d636c6c6b7d8b9395918cb7e3e9ae38051438313b5a412093eebca2b8bd +b6e58fe0e3b267f5c7d9dcdadadde0e0d9d4dccced732b456e9edfeff186 +0d1e0b2f1e00000600122c2f548fc3d7e0d9cac15e1d1a2b32051c401223 +202c2f57e7d9d7dae4dbdeabb1e0d6c9e3dbcfe41200000106030a1c3339 +2a1b2224250f2e2d0f4ab428002bbe79ab8ac4d5e5eae5c7711100001519 +0a0b2d201b1c16231117281e2f0c1eb1c3009897bd9c8387a498abc0e564 +9b9b9b6c4d2d211d191513121018111e1b1c342225213d3d383627311e00 +00001b0f258ed8f5faffff2d242b20161d6a987a4f1b1e32707f7b4909cd +bea8b1bec3c1c3c6c2c1bfbcb8b5b3b2b7b6b6b8c1c6c0b6bebec1c2bdb6 +b6bbb9b1aeb2b4b1b2b6b4b4b4b6b9b9b7b5b7b1b1bbc1bdb7b5b0aeb1b1 +b5b6bbbbb6b0afaeb3b3b5b4b5b6b5b3b073756c6c76776f717471707778 +75757a7472767d7e7b7a80797b7c7c7b7876757b787675706b6d73777b7b +7f867e787f7a7b5322151415211e1e1d1d1c1c1c1b1f1f1e1e20201f1f1f +1f1f1f1f1f1f1f1d1d1d1d1d1f1f1f1c1b1d1f1e1f252e83897f8a847c8a +77838589888582807f8481828785818287908f8f8f8e8e908f8d8e8d8984 +807e7c75767674717071737e7e7e7e7d7b7673717372706c686663616263 +6567676665616967666c68646b686c69666671646c6a6b6971725d61716f +7b6b7d706e6b767d7a697877886f83818b6629189a995b5a5b0004252413 +1b222a361a1732602a12ff382830f6f45d2a375f67b4ff8c2fff097ddfc1 +d6cd81888a94ae7f05307cfe2a303322251b395b3c2729241a16140c1a24 +21150f14171b36435392ceb162392322384e5d5d50443a2b2524262a2a3b +34485869828f9495918dbbe8f1b8400a173b343f61492aa3ffd1b8d2d7cc +f79eecebba71ffd5e6e8e5e1e0e1e1e0e1efdffa772134598edff1e87600 +130d3e3b21232b1f293e3d619ccee2e7dfcec561211e333c112a4d1a2a29 +363c65f7ebeaecf9f0f3c0c6f2e4d6f1ede5ff3e2d3a43433428282d3438 +2e312f301a3d412a6cdd582767fdb5dba7c6c3c5d2ecf6d69b8a9a9b814d +2a2a141c22182518171609272369ffff11c4bee6c6a7a5beaab0adaa061c +0e0f001d190d090806080c0912060a000005000004303c3e3c22291d1839 +5b80624698e6fffaf9f61006110e0e1e6d9976410a13296a7e7d4b09c8b1 +94959b9b9596999493918e8a8785848988888a939892888d8d90918c8585 +8a88807d81827f808583838385888886848680808a908c86847f80808384 +888a8d85827e8082858483848382807d4a4b43424d4d46474b47474d4f4b +4c504b484c53555150534c4e504e4d4a484751504f4f4942414345454245 +4c46435056603b0f080c1323232425252323221f2320211f2321201f2020 +2020202020201e20222223272a2a25242423212025276d634c4d423d5346 +52504b464142474b4f4c4d4f50494a4f5857545453535354555655514c48 +46474041413f3c3b3c3e484547474947454241434543413d3b3c3d3f4040 +3f3c3938323a393a403f3b3f363837343744373f3e3f3d44432c303d3845 +35473a3835424946344644553b565f724f15078e93595d62070c2b28141b +272f3b211d38683219ff413039fffd642d366068b7ff9033ff0d83e5c6db +d48c999ca7bd8d10377ffe282b2d1b1d132e4c2d222b2d29262118222c29 +211f252c2c465767a3dbbd704c3835445257513c2723292b2a2111081a1a +3c576c869296979391beecf4ba430e1c403b48695436b0ffe2cde9eee4ff +b1fcf8c57bffe0f6fefbf1eff6f6f2e9ebdbff8329221a2e6584ad5f0021 +1c5d757b9eb7adb3bca098bceaf8f9edd9ce6a2c2a3e481d355625343240 +4570fff9fbffffffffd3d9fffee9f4edf2ff85889b997a5230262f383b32 +36312c143848459affa2699bffcfffcfefebecf6ffffe8a894a3a68e5d3c +3b20202013201117221c3e336cffff1edddbffdfc1bdd5bec4c3c82a4738 +361e2d221812120d101010160e130d051907151639424a482840597ac1e7 +f4cab1edffffffffff26222e241919649377521a0f226c868a5811c4a073 +65615d545558565553504c4947464b4a4a4c555a544a52525657524b4b50 +504845494d4a4b4d4b49494b4e4e4c4a4c46465056524c4a454546484a4d +50524b474445484a4a494c4c4b49469ba2a1a1a8a39b9da29c9a9fa29f9e +9da19ea1a7a9a5a4a6aaababa9a7a4a2a2afaca9a59e9a9da4acb1b1b0b0 +a69e9b976e3a1f21221c1c1c1b1d1e1f22242424211f2022222120232323 +23232323232020201f20202223231f2025272629328dadadb4b7b2baacae +aeafb0b1b3b5b6b5b2b2b4b2afb1b9b9b9b8b8babbbdbebfbfbebab5b1af +aeb2afacabadaeaca8aeaca9a7a4a3a4a5a1a2a5a39e9a98989fa1a3a3a4 +a2a19f9fa29f9a9c97939795b4968fa2a28fa1ae8a9d898d9d9e959fa5b4 +a0a4a9a49e9dadac9fac9ba2a19e9d681c00a1456e3c26030919162a7f0e +00201c11092d0c01f51e5665f4f444150c3d40bfec8f27f20072a80ea9a5 +94b3c0c1b770000331b1051e3f3b392e2a452c242a3b3c291711151f2a3d +557697c7d0dafaffffdea28575788a9292897a7a7669565d6f6850444a58 +58525f717b859296adc2d5e5c858281e243e533a24aef1f0d5c7c7d3e6ed +f9e6790be1d1dbd4d8dcdfe1dedbd7c9eee91c385066c1e6ddfffec8d1e5 +7c000d040015232a4899c2dde2e2dcd6dbecb196898e8bb9db8f7e677287 +a5f5d2d0c7aeb7dfd4e1c8e8d4cdd8d0e7291600000000081f2f2e2e1a10 +18282b35170018300e0601b37c989cc3e7ffe9cac37a1b120100250c0020 +211f10121b20252f2b18116563504e96c484a69bb592a5b4c4f16b978fab +793b202023221c15120e130d1e273654472f272f2d251f1a1f220b00001c +171968baf0faffff8223241c160b252d1c221e1214302f2b190085c7a5ac +b8bec2bec6c0bfbdbab7b5b3b2b2b8bcbcbfc1bfbabbb7b6b9b8b4b2b4bc +b4b0b2b3b1b2b6b4b4b5b8babbb9b7b1abacb4bab6b1aeb1b2b4b7b8b9ba +bab5b2b0b0b3b5b6b5b4b5b5b3b06b72717178736b6d726c6a6f726f6e70 +7574777d7e7a797b7d7e7f7d7875737178757575706d6e74777a79797d79 +75787d592811181d1a1d1d1e1d1d1d1c1b1b1f1f1d1e20201f1e21212121 +212121211f1f1f1e1f1f2021211d1b202221222470868388867f87797f83 +878887838181807e8082807d828a8a8a8b8b8d8e91928e8e8d8984807e7d +817e7b7a7c7d7b797f7f7c7a76757475717272706b676361606163656667 +6667696e6b67686662666584665f6e6e5b6d7a586d5c6274756b74778670 +7479746e6d7e7d738172797e828a632308bb60844b2f03081a1a34891601 +2523181236170cff2b6573ffff57332e5d5cd9ffa23aff0684bb23c1bdb0 +cfdeddd289061641bd0b1f3a322c1d245743261e211d10090f181e1b1211 +171d32334875a3a874391c101b384e5d635f665d3d232b44422a18203742 +4a5d69727f8e92acc1d5e6c95c2b2128425a412ebcffffece0dde5f5f6ff +ea7e14eee2ece3e3e4e2dfdee0e4ddfff61f2e3e50b1e8e2f7efbbc9eb91 +10342d20363c39529fc8e3e8e8e2dee3f4b9a0939a97c5e79988717c93b1 +ffe0ded7bec9f0e7f4d9f6e0dae7e3ff50493d3e39322f302b273c302227 +363b49321f3f5b424144fbc2d3c2d0ddead8d5f6e0a4b1a0899158201f16 +2d251f262f2d241d1937c9dbb69dcef2b4d6c8deb1b6afa8b917290b1500 +080f0f12110d0a0c080a000905071a0d0001192529281a1b1d1b3552826d +3c75cafdfcf7f5650407080c0b272d18150d040a2a2c2d1c0085c0969499 +9896919692918f8c89878584848a8e8e9193918c8a868588878381838b83 +7f81817f808583838487898a8886807a7b838985807d8081838687888989 +84817f7f82848584818282807d434a4949504b43454a4442474a4746474e +4c4f5554504e50535452504c4947464f4e50514c46444445424040444241 +4e62481a06111a1b212225252322201e1e23222021232322212424242424 +242424242424232424252626222126282729236267534b433e524a515049 +433f41484f4e4c4b4d4b484a525252505052535455565655514c48464549 +46434244454341474645434241434441424543403c393a3d3e3f3e3f3d3a +383a3e3c3a403e3a3d3754383146463446553347353848493b4145543f43 +49443e3f50514656464d586a79501100ae57814e340b0e1f1b338819072b +291e173d1d12ff336c7cffff5d352d5c5ddaffa63eff0a88bf26c3bfb4da +e9e9dd900c1a41bb07193429231518473321202e2d23181a1f24201c202b +3448485b86b2b682482b1e263e4f57584c4b473c282c341b000000284455 +6a74777f8b8fa8bfd5e8cb5f3028314b644b38c5fffffef6f4fbfffffff3 +841df7ecfcfaf9f1f1f7f8f3ecd4faff2e372a05426b7bc9e8c5e0ffbe65 +abbdb5bbb29e9ac1d6f1f6f6f0ebf0ffc6ac9fa6a3d1f3a3917b869fbdff +edebe6cdd7fff6ffedfffae3ecf1ff93a29f9b80624c423c37493b2c2c36 +38473d4680b7a59b8affdcf3e6f3fffff8f1ffeeacb7a48f9b652f31242e +2018202a303436354acbd9baaae5ffcbeddff2c5cac6c1d6394e33422319 +17171a191410100c0f0712131930251a161c23322f1a2a557ab8d9eed4b4 +dbfbffffffff7b2426211503192117271f01002a333a2b0983b077666059 +5550565453514e4b494746464c50505355534e4f4b4a4d4d494749534b47 +494c4a4b4d4b494a4d4f504e4c464041494f4b46434647494c4d4e4f4f4a +474545484a4b4a4a4b4b49469aa3a3a0a39e999fa5a09ea1a3a19f9da6a4 +a5a8aaa7a6a8b0aeada9a5a2a0a0aba8a7a5a09c9fa6abafafada9a49d95 +7d3f181b22211d181b191c1d1f23252324201f202122211f222222222222 +2222232221212021222227202025292724296da4b1b2bab5b5b1aeadafb0 +b2b4b8b9b3b1b1b0adacb1bbb6b6b5b6b7b8babbc0c0bebab5b1afafb5af +a9aaafb1aea7b0afaca7a3a4aaafa0a2a5a39e989593999d9fa1a2a09f9d +9e9c9998969494948d8382a3968d9c9e8e9a9495938f948c9ea091a5a394 +8a9c9a9a7a968a8f9d8d9b885a2505bc71c8838955484745ade915709839 +5f4348515ee520297cca620d1e3241498caa1266d02fa17822b0aaa05d72 +7984794557649d0b1639393437253d4539262f2c1912181b25344d6e93b2 +d2e2fdffffd89e7a5242485e6a738083808d8f7c80a2c3cf9c592120303e +576d7b8c96a2988177694a25263030291a183949401f121d3b2c32253827 +00edded8d0d6dddfdfdddbdad5efa10f3c4278dce9e6e5fff0f4d60d000d +0006282a4696ccdfe4e0dbd6dbeaeae6f5f5f5f1f4e5f7f8f5f7f7ecf4d2 +e380cfb9a4d2c7e0cde6e5e8d1e64e0e17070000000b232c13231e1e131e +250b3539222c2b00a19dabb896abe4e6c5c5a8252627233a07001b1d1a0b +110c11051e310b02730f005f60ac81ca7bc4cecab2c6ec8d888fa2782f20 +2d3a3e37302e362b17161c335b5b3f382626211b25221a0a000021331e45 +a7e6f5ffffdc2022252b1f1b0b0315212b2021190f160a43d6acadb6b9c5 +bac7c0bfbdbab8b7b6b5aeb9c2c1bdbdbebfbeb7b3b7bab9b6b6bfb8b3b2 +b2b0b1b4b4b4b6b9bcbdbbbab0acabb2b8b6b0adafb1b4b7b8b8b7b6b5b2 +b0b0b3b5b7b7b1b3b3b2b06a737370736e696f75706e7173716f707b7a7b +7e7f7c7b7d83817e7a7673717076737375736f7073767877767876757363 +2c060c191b1b191c1c1c1c1d1d1c1d1f1e1d1e1f201f1d20202020202020 +20222120201f202020251e1b2024221d1b4f7f88858982827e7e82878887 +8483847e7d7f7e7b7a828c878788898a8b8e8f8f8f8d8984807e7e847e78 +797e807d7881827f7a75767a7f707272706b65605e61636567686a69696b +6e6e6f717172746d6360817168747665746f717170756f80827385837369 +7b797c5b796f768478897c5b321dda90e297965a4b4c4eb9f81f799f4268 +4e535c68f22d388adb732037505d63a4bf2579e342b6903cccc6be7b9397 +a2965e6c76ac1418363027261b3e4831171a180b0a191a1a17131a262e38 +42658a8b6539240901102b384350595e69604c5582afc1914f1a1c2e3746 +5d7186909c927d75674824253030291a1c42564e2f232e48353828392b01 +f8eceae0e4e8e6e0dfe2e7e8ffab11312d60cbe8eae0f9ebf3e220182e24 +29464356a0d3e5eae6e3dee3f2f4f0fffffffdfff1fffffffffff8ffe0f1 +90dfc9b4e3d8f1d9f2f0f6e1fe703f534b3a292124282d1e322a291c2a35 +20505b485b6036e3e5f5f7bcc0ebf2e9ffffb1c5c3aba8561f2b2738322f +2a35242e40273fe79237b39fe0b6fdaaeaebd9aaa8b43c1e11150400111e +2b2f2a272831250c02000826251112101e2622251e13182a4482853f51b7 +f3f9faefc0030713211e1d0b000a131d151b1611190d43cf9d9699959c8d +9792918f8c8a898887808b94938f8f90918d868286898885858e87818080 +7e7f83838385888b8c8a897f7b7a8187857f7c7e8083868787868584817f +7f82848686808282817f424b4b484b4641474d4846494b49474751505154 +555250525957524e4a4743424a494c4f4c48464444403e3e4042444d4c1e +0005141b1e1d2123242222211f1f23212021222322202323232323232323 +27262525242525252a2321262a28241b44625a4a47434d4f504f49434244 +4d524c4b4a4946454a544f4f4d4e4f505152575755514c4846464c464041 +46484540494948434142494e40424543403a36363c3e3f3f403e3b3a3c3d +414347494c4e473d3d5e544b5a5d4f5d55575551564d5a5c4d5f5d504658 +585a3c595157655b756c4b210fce88df989c6050504db7f5217ea5476f54 +596271fa353f93e37b263b505e64a6c2297de746b9923dcdc7c0839ca1aa +9c626f76a90f132f291f1f1236412f1c232418151e1f1e1c1f293945505a +7c9d9e76472f1005112a373f4c4d45515a4a4c697c82511a00102f3e4c5e +7086909c947e786a4d2a2b3838332425495e593e35425944442f3e2e07fe +f5f6eff1eeeef4f4f4efe2fcb51e39181661748bb6f6ffffff6d86b1aeab +b4a0abdef0f3f8f4f0ebf0fffffcfffffffffffdffffffffffffffedfe9d +eed8c4f3e8ffeffff4f7f0ffb79cc1b89776605d625d3a45403f2d3a453d +85a5adc7c88effffffffcfd3fdfff5ffffaec1bfa9a75a263831382d2d28 +35293e573f51e78d3abeb0f5c8ffbcfdfdecc1c2d15d42373f270f182532 +36312c2c3529120b09193a3c2d27131c2c2a252d4771a8c7edebb2b3e8ff +fffffed621262b2c190f00001a241c0f1b1f1e281641bf7e6a61575a4c57 +565654514f4e4d4c4550595854545556524b474b4f4e4d4d564f4c4b4b49 +4a4b4b494b4e5152504f454140474d4b45424446494c4d4d4c4b4a474545 +484a4c4c484a4a4947a3a59d979b9b9ba4a4a4a6a6a4a2a3a4a8a5a3a3a5 +a6a8aaafaca9a6a4a3a2a3a8a5a4a4a19ea1a7aaacafaba7a6a08f4a221b +28211b1c171a1a1c1d2122252423201f1f2122201f1f1f1f1f1f1f1f1f23 +222120201f2121272121242624232a4d98b2afbab7afb5b1b0b2b2b3b5b8 +b9b0b3b3b1acacb0b8b8b8b6b5b5b5b5b6c0c0bebab5b1b0b1b3aea9a9ac +aeada8adaeada8a4a5adb49fa1a5a29d97939197979b9d9f9f9f9d989393 +908681807a8383928c6f7d9376886f88816c8567817f8972737873908069 +7f75ff5b74677469636a6b4066412b464e86696a6c5c5d5a615367707546 +5f385b315257152e5151604c33323f4729351e2f283d221e23262e242c38 +2a383ca3241631322b412b2a554d261d160d18202734496a8fb2cdd5f7ff +ffd7a77b5c422d2e3a3e48617074849a9d96a0caf4f6b96a463828374551 +5f7591a6aaa9a892633e2c252c2f2c332529191f18260e2909243310f8d5 +c8d0d3d9dddedcdbd8e0f235323b4695e2e7f4dfc9f8b500001906091d29 +4487c9dadfdbd9dad5d5e3dddcded1cedde9dfdcdfe7dedad3d5e1e2cbd5 +c7abbde1cad9d8d5dad5ec8c0021190e000009273a00262b2b0309110524 +211e0c110454777c9e636aa7dad5c69d33262f3737100943250000000000 +00000000005204004d7fe0bbd3b9c5c0f4faffffe08dab99792a202e3b3e +37343439322823253f656e594f2824190917081b0f0000205229229bdbee +ffffff2d26111515151a1f20151b13182318191300d3b9b1b5b8cabac9c1 +c0bdbbbab9b9b9afbac2c1bdbdbfbfbfb9b6b9bcbbbbbcc2bcb5b2b1b1b2 +b3b3b4b5b8bcbdbcbab1aeadb2b7b7b2adacadafb1b3b4b4b4b4b2b0b0b1 +b4b7b9b2b4b5b3b173756d676b6b6b7474747676747273777d7b79797a7b +7d7f827f7a7775747373747070747471727475757676757a7a6e300e0a1b +17151a161a1a1b1c1c1d1c1e1e1e1d1d1f201e1d1d1d1d1d1d1d1d1d2221 +201f1f1e1f1f251f1c1f211f1c1c31738c858a837b828084888988858383 +7c7f817f7a7a8189898989888888898a8f8f8d8984807f80827d78787b7d +7c797e81807b76777d846f71726f6a645e5c6366676a6a6a6b6a696a7173 +6f6f706d7575827a5d687c5e7057706b59745672737d6465686380705a70 +68f8536d606f6261757f5e8a644b6061917274786c6d656c5e727b82536c +456a406368263f64697a644b47525a3c4833474259403e454953474f5748 +5250b32f1b302b20321c1c473d150e0b08161e1d1b1a1c26333b37547171 +593e281e140b121e1d20313f495b6b707087c0f7ffc878523a2224314556 +6b889da1a3a28b5c392722292c2b342a30232b242e142908243415ffe4db +e2e6e7e8e4e1e2e5f0ff3e302f317ecfe2f6dfc8fcbf0a1031212639435b +96d5e1e5e1dfe2ddddebe7e6e8dbdae9f5e9e4e7efe8e4dddeedeed9e2d7 +b8cdf1dae5e2dfe6e3ffab27595b533f2e2d3848143d3e3b101720163938 +382c362d83adbbd98982b4e9f6fff7a4a3aaa088472e573e1d322c2b3326 +1f2c2f5cd78b2197b2ffe4fddee4d5fcf2f5dc9e3746271c0413212c2f2a +2b2f372d1f120919363d2d2c121a1c101704131a22387b9d492fabe7f1fc +f4eb130d000a12171a1b15080f081220171b1600cdab9c9a94a18d999391 +8e8c8b8a8a8a808b93928e8e90908e8885888b8a8a8b918b83807f7f8081 +828384878b8c8b89807d7c818686817c7b7c7e808283838383817f7f8083 +868881838482804b4d453f4343434c4c4c4e4e4c4a4b4e53514f4f505152 +5458554e4b494845454544484c4b484645413f3f4042494d4b1f05031516 +171f1c2222232222211f2022212020222321202020202020202020272625 +24242324242a2422252725231c26595f4b4a47495555534c4744474f544a +4d4c4a4545495151514e4d4d4d4c4d575755514c4847484a454040434544 +414648494442434c533f4145423f3934323b3d3f3f3e3e3c3b3b3c444946 +494c4b585b6b6449576e52644b645d4a62445d5b634a4b514c6959455b55 +e4405a4d5b5254677352805e48616597777678696a67706276818859724d +71476a702e476b6d7b664d4a565e404c3649435a403d464d594d535a4a51 +4fb02b152b251c2d191b47401b15130f1b211e1e2029354652506f89876e +4d322316090e1a181e31383647636a63698bb4bc8d543e3524263247576c +89a0a4a7a692633f2e2930333139303a2f3b343b20310d263618ffebe2ec +ece8ecf2f4f4eeedfe473b311632697aa3bdcefffc5c78b5aca8a7979fd7 +fffbf3efedefeaeaf8f3f2f4e7e6f5fff5eff2faf2f0e9edfbfce6f2e6c9 +ddffeaf5ece0e6f0ffee83c8ccba9c827b8a914d717876454649416e7b8c +83876fafc7cae1928cbcf0fbfff5a09fa79c894a3460451c2f27282d2728 +3b3e65d48726a4c3fff6fff0f6e8fffffff6ba54664937111a2833363130 +333a31241a152848524840151923161913446c98b5e4ffb68bdeffffffff +ff302b17180d0a101a25190f041429252a1f00bf90716558614c59585b58 +56555454544a555d5c58585a58544d4a4d5150525359534e4b4a4a4b4c4a +494a4d5152514f464342474c4c474241424446484949494947454546494c +4e494b4c4a48a6a498939c9f9ca199a1a7a49e9da3a7a6a4a09c9ea3aaad +aba7a5a3a5a7a8aaa7a3a0a2a19fa2a8acaaaeaba2a49978271c272b1d1c +2116191a1b1c2021252323201e1f2121201f1f1f1f1f1f1f1f1f2221201f +1e1e1f2024212223212025323987b1aeb8b6abb8b4b3b4b4b4b5b6b8b1b5 +b7b4b0afb0b3b9b8b6b5b5b5b6b6bfbfbdb9b5b2b3b4b4b3b1afaeafb2b2 +aaabaca8a2a0a5aa9fa1a4a19c9693909394979b9e9e9e9a978d8e826351 +4a3c42392d2b532617181d0a261914132413221d47150a0c0e2030051bf7 +00301936312922261a0f2e111e1a14202b102704001414000b1913131803 +00b9f11601432300122d1f0e0a38456700301417280d030f090f0e0b2443 +881f1331362f452e24524a21140d0b1d223149688cb0cee1f1fbf1d1ad8d +643b3a2b2b2e29314955626578909fa0a5a7d0b77e7fa69d6618373a5064 +768fa9bec4a27a5631212c2e1f2338334133548504152a1700f8e6dfd0d2 +d3d8dcdcdad6dfe3072c497babe9e8e3e0f7e800010f081725274185c0ce +ddddd5d6e0dcd7ded0d4dbdfd6dcd9cfddd6d6d6e2e8daeed2dcd5e3f1e1 +daf5dbc1dfece6dfb8000b0c14191a1c282c17292535212a250f34281b00 +1419000000160100060905000000000000000919342000422a1b00000000 +00183900003c001602183925043d4d6268773d7b796c392f31322f292a2d +2b3245453d434c4c44412124221e31252c1c000017683c0f7acaedffffff +5f1e251d1b23415d533f231e324f44373a06afc5b1b2b6cabac8c0bebcb9 +b8b8b8b9b3b9bdbdbec0c0bcb8b6b7b8b6b3b7bdc0bcb6b1b0b2b2b1b2b3 +b4b7bbbcbbb9b0aeadafb4b6b1abadadacadafb2b6b8b4b2b0afafb2b6b9 +b3b5b6b5b2767468636c6f6c71697177746e6d737a7b79757173787d807f +7b767476787877736f70737472737577737776727974590f09181f14171e +15191a1a1b1b1c1c1d1e1e1c1d1f1f1e1d1d1d1d1d1d1d1d1d21201f1e1d +1d1d1e221f1d1e1c1b1e241c638a838884768383878a8b898582827d8185 +827e7d81848a89898888888a8a8e8e8c88848182838382807e7d7e81837b +7e7f7b7472757a6f71716e69635e5d66696a6a6b6b6b6b6c6b73705b5150 +45493f332e5222111214011d130e0f201428254d1b0d0f0f21330820fe04 +3b2643393536443e3857383d3627323d233c17062221061828222227140e +ccff2914563611254032211d4b5a7f174e33394c352d383137322d415c9b +2b17303125371a093733100b0b0b1b18191b1f26313b414a585b4c3e3729 +172824272516121c25363d4f697b869aafe9d89e96af9b57082b2f44596b +849eb3bb99714c271722281a233936473958850211261702fff5f2e8e7e7 +e8e6e5e3e3edef0c273a6491d5e1e3e3fff70c1927202d3a3c569bd1dbe5 +e3dddee8e4e1e8dadee7ebe2e8e5d9e5dededeeaf2e3f7dbe8e1f0fdeee7 +ffe7cbe8f6f3f0d2243f4b585a524a484d42574e593d423821413424081c +24090f082e0b00000208050f261c1923150d193e3d22938f978e8f80696b +a4d084176b1425112748300c4049534d520c4039361f242425221e212829 +303f38262323211c200c1a2523311f232223326aae5c1a8ad8f3fdfaf148 +071312172341594b341714284941363a06a9b99f9893a18d98918f8d8a89 +89898a848a8e8e8f91918d878586878582868c8e8a847f7e80807f818283 +868a8b8a887f7d7c7e8385807a7c7c7b7c7e81858783817f7e7e81858882 +848584814e4c403b4447444941494f4c46454b51514f4b47484d5356524e +4a48484a4a48433f42474a484746433d4142424c4a3c0305151f171d251d +2124222121201f1f22211f20222221202020202020202020262524232222 +22232724232422212524164d5f4c4a4944575a584e49454750544d4f504d +4948494c52514e4d4d4d4d4d565654504c494a4b4b4a48464546494b4345 +4844403e44493f4144413e3834323c3e403f3e3e3e3d3f3e4848362d2e28 +373127254d1f111215021e130e0c1d0e1e18410f040607192c0119f60033 +1d392e292b38343051373f392b343d2137150725270c1e2d29292e1b16d3 +ff301b5d3c172b46382723515f831a50353a4c342c3a3337322c3f599929 +162e2e23361c10403b18100e0d1c17191e2633424e59667574614f422f17 +241c1e1e12101f232b3149646f6d6c74a89f7982aa9e5a0b2d33485d6f88 +a4b9c09e76542f1f2a2c1e253e3f5345638d0712251702fffaf8ece8e5e8 +f0f6f4eceeed122b3342447687a3d2ffff6287abb4beb1958dc2fcfefaf1 +eaebf5f1edf4e6eaf3f7eef4f1e5f0e9ebebf7fef2ffeaf6f1fffffef8ff +f5d4e7f5fcffff75a4b4bbb8a99f9faaaac6c2cba89c7c536b5a4b2c3328 +00000938140704090d0b132a221e2b2018254843218d878c81837c696ca3 +c981237f2a3a263a5b441f535a6660641f524a46282a2b2c2924262c2c33 +433f30303334363311192a29332d4e6c8fa7d2ffc373bdf3ffffffff6424 +2d20141937585a4419133055524644069d9f776559634c5a595b59565555 +555650565a5a5b5d5d574f4b4c4d4b484e5459554f4a4b4d4d4a4948494c +5051504e45434244494b46404242414244474b4d4947454444474b4e4a4c +4d4c499fa09899a4a49b9b97a2a9a49d9ea5a8a9a8a4a0a1a8afb0a8a4a2 +a2a6a9aaaaa9a39d9f9fa1a4aaaea8aeaa9d9e87542424261f1c2524141a +1a1b1c20202222231f1e1f2021201e222222222222222220201f1e1e1e20 +2021202323212028383275abadb1b3a9b6b4b4b4b3b2b3b4b6b2b6b7b4b3 +b4b3b1b5b5b4b5b6b7b9babebdbcb9b5b4b5b7b6b6b5b2b0b1b5b7b2b2b1 +ada6a1a1a2a0a1a3a09b9694919494979b9e9e9d9995898976462c241514 +13241a2104a5c4e4bc823bb2cdb2bb00010063eaf400f4c51c48e4002a15 +1c1d2b1813181000151e0b2e131c391d16eee1f4ab002de7edf23a90f1d7 +9640e8f0f4441f0c3983f0ece518141c32001216170f1c15151f44801a11 +29333144362c3e2e161616131e2842658aadc9e1ecf9efd8b5875e42312a +262e2d262f3b3d404a536589abb2a180816f9ac7b3a192542d3a4d556f88 +9aa2abb7b67c392d2d2e303128353155a912252d2b05eddac3cecfd1d3d5 +d7d8dbf575153456a0c5f7eadcf9d90000030306252f4387c4dbe9dde0d8 +d6e0e1dbdfe6e0dae2d2dadde2e2e4e2ebedeed2d3f0e7e4f5f5f3f5d9f5 +e4f5dfd5d5c9000a0000051215130c10120b1a1d2a22001731193658592c +1624282e403333372a174128364d1e0f1d0d120086644c272942412d3845 +1400372e3e4d3d1f160002010411160d253d2b352e2a2927252a2e262c46 +3f2f2d262424241c212c3a5153351c00000d836a2256b4f1fbffffa81620 +1718182b45372923202e3e351f2b036ccfb0abb3c3bcc6c0bcb9b6b4b4b6 +b6b7b8b8b8bcc1c0bbb6b6b9bab6b2b5bdbbbab6b1b1b4b3b0b3b3b5b7bb +bcbab8b5b4b2b2b7bbb6aeb2b1aeadafb3b8bbb3b3b0aeadafb3b7b2b4b6 +b6b36f70686974746b6b677279746d6e757b7c7d7975767d82837c787373 +777a7a77756f6d7073727478797176766e7463360d111713122021131a1a +1a1b1b1c1c1c1e1d1c1d1e1f1e1c20202020202020201f1f1e1d1d1d1e1e +1f1e1e1e1c1b2129165285848380738183858a8a868280807e8285828182 +848286868788898a8d8e8d8c8b8884838486858584817f80848883858480 +787371727071706d68635f60696b6c6c6b6b6a6a6b69766e4a3b3c2f2e2c +3a2e3112b0cdebc38942b9d6bbc911150675faff04ffd42e5af90d443136 +32423636413d2e41442d4a2b314f332afff0ffbd053ff8ffff4da3ffeaa9 +53fbffff532e1d4a96fffffe36364059283c44453b463e393f5e94281729 +2f2735210c1e1709111612140b111a262f383f4452524e42312320242a2b +312a18161b161a253042648c9fa096a591b6d3b39c8749222e4149637b8d +97a0acab712e2222252a2f27383455a80d1f292b0afbeddae7e9e9e8e6e4 +e5e7ff7e172d468aace2e2ddffe70c17221f1b373c4f97d5ebf8e6e6e0de +e8e9e5e9f0eae6eedee6e9eceaeaeaf3f5f6d9dcf9f0edfffefffde5ffee +fde8e0e4e01e39363a444c4a3d36464b3c444147390f2337183352562c19 +2a2c2b3724242e2922523a424f13000d0f2d23d4ced1c4ceded7bfc9d284 +184b30394a3a1c13000000000506000e221429251f1c1a1a2129242a4136 +1b110400010707172d3f504d291d1f2d56c3883166c1f8fbfaf394020e0a +12152b41312118162438311c290168c7a093929b8c948e8d898784858687 +878988898c92908c858588898581848c8988847f7f82817e828284868a8b +898784838181868a857d81807d7c7e82878a82827f7d7c7e828681838585 +82474840414c4c43433f4a514c45464d5253534f4b4b5258594f4b474749 +4c4c48433d3d4246464647453b4344404c3f1c05131a171a272a1b242422 +21211d1e1c22201f202122211f2323232323232323242423222222232324 +2324242221282c123f5e50484744575a57504a454750544e50504d4c4d4c +4a4e4e4c4d4e4f5051555453504c4b4c4e4d4d4c4947484c504b4c4d4944 +3f4041404143403d3835353e3d3f3e3e3e3d3e41404e49291a1c16212637 +2c3115b6d6f5cd934ac1dbc0ca11130475faff05ffd7305cfa0f4532332b +382e2f39382b40452f4d2d324d3028fff3ffc10a43ffffff53aafff1b05a +ffffff5a3524519cffffff38374058273a41423a443a353c5b932817292e +283826172b2110151610130d1421303d49545b6e6f65533c271f1e22242a +2517191e19171f2e405c7a7e74657976a8d3bba28d4f2632454d6782949d +a4b2af75322626262c342d413d5dae1121282b0dfef3e0ebeae9ebf0f4f5 +f3ff7d16252f59588599b5ffff5a7ea1aeb2c1a597b9e7fffff7f4edebf5 +f6f1f5fcf6f2faeaf2f5f8f5f6f7ffffffe9ebfffffefffffffff5fff7ff +e7e6f9ff5d87898a9195908788a6b6b2bcb1a57d3b3d47263a52470a0026 +35323c2929332f285a444e5b2106181b3426d4caccbbc7dbd6bec4cc862c +64474f5f4f312810120c0b13110216291a2d2a25232120262d272d453b24 +1d121019190c163145555b4f5e819bbdffe8829ae3ffffffffad1e281b12 +0c213e3d301c172c44422d34045db07c655c5e4c57595958535351555356 +5557555b5e5f584d4b4e4f4b474c5454534f4a4c4f4e494a484a4c50514f +4d4a4947474c504b434746434244484d50484845434244484c494b4d4d4a +9b9f9b9ca5a39c9fa0a7aaa6a3a6a9a6a9ababa7a8adafacada8a4a4a7a9 +a7a6aba29c9d9ea1a5abaea4acaa9c9c7a36232820171f251d151c1c1c1c +1f1f2021221f1e1e20211f1e232323232323232320201f1f1f202222221f +212425252a343363a3adabb0a7b3b1b0afafafb1b2b4b2b4b1afb2b9b7b3 +b4b4b3b4b5b6b8b9bcbcbab8b6b6b8bab9b6b3b1b2b4b7b6bab7b4b0aba8 +a6a5a1a2a29e9a9797959696999d9f9f9e9894858872371d1c0e0d161d0d +0c16e900b2bbd19daed358dda2cb8f9b31ed00b08e0073ac0018151f1020 +16121418001907212018132722103dedd4cc0cbff1e4503ae1ded5f02175 +f0d3f3f5f0f2dcdbed1600290d0e2215120d0112121c17368e1f16232d2f +3d3f2f24151115191f2c40618aafc9dbe8ede6d6ba905830263020283027 +202e362c2e383e41587a969ab39b6481ab959fb0b744293835486275a3aa +b3d4d1ae8f603e332f3134311a37533f2f450aded89cc3cad1d1cecfd9e5 +e211284963b0dffadeffcb0600001d082329488bcae1ddd9cddedfd9dcdf +dcdedadad9e7d1d9d4d6dde4d6ddd0dee3ebd8e9f664000c00000061d6f8 +f4e0ee94886e595b656b6b67595f56495461633207442448484327224120 +1d1e2925212620261f4c71411b291b18006d5040393e2b443a2750270c23 +0b6d75424a1c0e2823141f1619162f201c19171a1e1c1e1f130d221c1627 +272d241e21141429374635120000049a9d4c5c98e8f4feffe62a211d281c +1c261412272c3128250f1d0928dbb1a8b3bec0c4c2bebab7b5b5b6b7b7b8 +b6b5b8bfc0bcbbb9babdbcb8b8bbb5b7b5b1b2b6b4afb6b6b7b9bcbcbab8 +babab8b6bbc0bcb3b5b4b1b0b0b2b4b6b3b3b0acaaabb1b5acafb2b3b36b +6f6b6c75736c6f70777a76737679797c80807c7b8083807e797474777977 +7478706c6f72727577766c74766d71571a1019130c151f1a131a1a1b1b1a +1b1a1b1d1d1c1c1e1f1d1c21212121212121211f1f1e1e1e1f2020201d1c +1f2020232819437f857c7d717e7d81858683807e7e7e807f7d8087888485 +85868788898c8d8b8b89878585878988858280818386878b8a87837d7a76 +7571726f6b676462646b6d6d6d6a6968676a67786f44374038373f442f29 +31ff12c4cde1adbee56af1bfeaacb64aff05c4a5078cc916393b4230403b +3b434931493349423630413b2651ffe6df1dd2fff9634ef5f2e9ff3588fd +ddffffffffeff0ff32144d34384f43433e32413c433a53a42f1e24282631 +2b130a060b1518141009121e2c353a40444646453a24141f3325292a1d11 +1e2619151e211f2c4f7285b9b17e99b89da5b0b03b1e2d2a3d576a98a0a8 +cac7a48556342a2a2e343119344e3b2d4613efeeb7e0e7edeae1e0e9f3ed +172541549dc8e7d5ffd51a1621442a39354f90d2eeebe7d7e6e7e1e6e9e6 +e8e6e6e5f3dfe7e2e2e5eadce3d6e5eaf2dff0fd6d00150101086ddffffd +ecffb0ae9e91969fa19b978b928471767d7a441449244542412623421f1b +1a23211f2621261e46652f06191a2909a29da0a9b296aea793b671221d00 +5c66333d10021f1c101c1518162f1e17100c0d0f0f1319110d201609120b +0e07060c08132c3640270f192a45d6bc5c6ba4f0f6f8fad4180f0f1f1719 +220e0c1e232a201e0b190725d4a49393969092918f8b8886868788888987 +868990918d8a88898c8b8786898385837f8084827d858586888b8b898789 +8987858a8f8b828483807f7f81838582827f7b797a80847e818485854347 +43444d4b4447484f524e4b4e51505255555151565653524d4646494b4743 +433b3b3e4344454743394347434e37050c1e1a141e29231e25252321201c +1c1b21201f1f2122201f2424242424242424242423232324252525222225 +26262a2a18345b524446435455534b4644464f524e4e4a484b52504c4d4d +4b4c4d4e4f505353514f4d4d4f51504d4a48494b4e4f5351504c49464544 +4142423e3c3938393e3f403f3e3d3c3e44435650281c26242d3941302d38 +ff1dd2dbeebacbef74f8c3edb0bd51ff0ecdad0e93cf1b3e3e442d3b3435 +3d452e49344943362e3e372352ffeae324d8fffe6a55fcf9f2ff3e8fffe6 +fffffffff5f5ff35164d33364c403f382e3b383e364fa22e20262c293534 +1f150d0f1516120f0e182b3a454a5159606158452811192c1f242a1e1421 +271b182125202b4862709f9a7399c1aab3bcb74024332e415b6e9ca1accb +c8a58657332b2e353e3b213b523c2e4818f6f9c2e8edf1f1eff0f9fef113 +1c2a2b5b6a8b9ef3f8637b98c7b0c2afa7c8e9f4f6f2e3f3f4eef2f5f2f4 +f2f2f1ffeaf2edeef2f8ecf3e6f5faffefffff7c102413121879e4fffff8 +ffd5dbcfc0c2c5c7bfbbaebdc0b7c0bea45c1c4c2c4e4c46221e44251e1b +23202028262e2650713b0f23203010aaa7acb5bfa6bcae96b87a3939146f +7946512416302c1e271b1d162f1f1b1512141616191d140f231a101b171d +1d16110818313c4e48487090abffffa7a2caffffffffea3229202211121f +18182326322d2e1a270c1ec18468605b5255595957525250535254535350 +555a5d57524e4f52534f51544e50504c4d514f484d4b4c4e51514f4d4f4f +4d4b505551484a4946454547494b484845413f40464a4346494a4a9ca29d +999e9e9fa9a6a9a7a3a5aaa8a1a2a7a9a6a6a9a69fb0aba7a5a7a7a3a0ac +a39b9b9ca0a5acaba0aaaa9d9c76271b262019221e12171d1c1c1d1f1f1f +1e201f1e1e20201f1e21212121212121212020202021222424231e1f262b +2a2a2e35589daca6aca7b1acacadacadaeb2b4b2b1acaab1bbbcb6b7b6b4 +b3b3b3b4b4bbbbbab7b6b6b9bcc0b9b2b2b7bbbbb7b7b3aeababaaaaa9a2 +a2a29e9997999798989c9fa2a29f9a9888896e2d11170c0e1700161a00e9 +00dfd942ee6b80909f000700b9b2e200e9a700947e0021100f1710111305 +001f061a0a1523191d002745e2d2eabae8e4ab00e7e6d6dfe4c500eff3d7 +8032bad7ee60071f121a180c160e18151b0c181c46881a1a263434353a26 +120c1412162d445f85aeccdde3e7e3d1b68d5d392b24222931311f182d37 +2a302f34424b5062729fd5ae909088968ae3523349302a3e555c88a1bece +d2bf7b241215272a492c291c20273900d8ea84bac8d2cfc5c8dbef95172f +3c74c7e5f0fdeb0b000c05000b352f81d0deefd97ebadae8e1dfdfdddedd +e3e0ecd4e2dcdbe2ecd9e9d8e4e4d5f3eb00003d1e2a31200712a3f6eee2 +e0c6b7acacadabaeb1adb09b768b9e9f580441282c183416262a25382038 +301d292d25282639391f25171f00949c908f7c8e878d7eac563f1c35344e +537007251215100a161018262724212126262119151a0b1e181728202022 +1b2610102f3d593c13060200a5b7617e85daf5fbffff4a2e2733231c2619 +231b2e3720291a251901e1b2a6b4bcc5c5c7c2bebab8b8b9bab6b8b7b3b5 +bbbfbfbeb8b7bcbfbcb8b6b1b4b4b1b2b7b5afb8b8b8bbbdbdbbb9b8b9b6 +b4b8bebab0b4b4b3b1b0afaeaeb4b3b0aca8a9afb4a8acb0b3b46c726d69 +6e6e6f7976797773757a7871757c7e7b797c7a73817c77757777736e7a71 +6c6d70727578736872777073540d0919150f1a180f151b1b1b1b1a1a191a +1e1d1c1c1e1e1d1c1f1f1f1f1f1f1f1f1f1f1f1f20212222211c1a212625 +2322203b7b86797b717c787c8083817f7d7d7e7d7a787f898d8788878786 +868688888a8a89868585888b8f888181868a8a888886817e7d7c7a797272 +6f6b666464666c6d6d6c696765646c697a6e3f32423c40482e42420bff1c +f9f05aff8196a7ba1e2a1ed7cdfa11ffbf0ab19c1b4639383f393b403631 +513848363d47393a173d5af7e5ffcdfdf9c00efbfaeaf3f8d90df9fce18d +41cbecff7c254139424239443f49464a37413f639e2a242a2f2b282b1502 +0612110c0f100c152431383b3f45434133221d242b2c2b2d250e09223324 +1d15181f1e1f365495dabc9f9a8f9d8ee0492a402721334c537f98b6c6ca +b7731c0910242a492a26171e263e03ecffa3d7e5efebdfddecfd9e1a2a33 +66b5cfdff5ed160930302a304b3b83d1e1f7e48bc4e2f0e9e9e9e7e8e9ef +ecf8e2f0eae7eaf2dfefdeeaebdcfaf202004425313a30171faefdf7f0f5 +e5ddd9dcdedbdadedbddc59bacbbb76a1046282914321626292439243e39 +262f2e23231f2e2e141f18290ab1cfd0d6c3cbc3d2c4ed7e3905272a4348 +65001a070d0a0715111c2a291f18141717120c0c150b1e130c170b080b04 +130410323c532e0d192a37dbd7748a8de1f8fafbf3381a16261917221620 +1428301821131f1600dea8949894949396938f8b89898a8b87898884868c +90908d87868b8e8b86847f82827f8085837d8787878a8c8c8a8887888583 +878d897f838382807f7e7d7d83827f7b77787e837a7e828586444a454146 +4647514e514f4b4d5250494b5153504f524d46554e49474949433d453c38 +3b3f4144464037434a4953380009221d1825221a2026232120201e1b1b21 +201f1f2121201f22222222222222222424242425262727262120272c2b2a +261f2d585540434352504e4745424751544e4b45434a54554f504f4c4b4b +4b4b4b5252514e4d4d5053575049494e525250504d4a4749484948424242 +3e3b393a3b3f403f3f3c3d3d3e494a5d54271d2f2c37422b414411ff27ff +fe66ff8ca1afc1253025dfd8ff1cffc914b9a4214c3d3a3e35393d333050 +3748373d473838143b5dfae9ffd3fffec515fffff1fcffe217ffffea9548 +d2f1ff7f2742384140364139434044303b3b619c2a252d35302f321f0c0a +130f0a0f1214233443494c4e5459543f261a1c2324282e29140e2634241f +18171d19182d498bd3bca6a69fad9ae74e2f432a24374d548099b4c4c8b5 +711a0a162b3453352f1d212b440bf7ffb5e7f5fdf9eeeefcffa313160c29 +636987d1fc586ea8b0a3a3bb9dcdfff2f9e691ceeffdf6f5f5f3f4f5fbf8 +ffedfbf5f3f7ffefffeefafbecffff12105435414b402628b4fffefdfffa +f4f0f2efe9e5e3d8e0dec7dfe7d1740e4028302240222e2f293b253e3825 +2f3228292636361a231a2b14c1e4e9f2dfe8dbe1ccf38a531f3835515675 +0c2a171c16101b151d2928231d1b1e1e191311190d2017121f14151f1419 +0412374461483b65899effffb9c6bbfdffffffff5235292d17111f1d291b +2c382530232d1d00cf8d6e69605a585c5b5753515152534f51504c4e5458 +58534d4c515653514f4a4d4f4c4d5250484f4d4d505252504e4d4e4b494d +534f454949484645444343494845413d3e44493f43474a4b999a9da1a5a8 +a8a8a1a6a7a4a4a6a29a9baab2aaa3a4a7a4b1a9a1a0a6a9a6a2a5a09ca0 +a2a3a5a9adaaacac9ca05b22291f19171b1d1a181d1c1c1d20201e1c1e1e +1e1f1f2020201d1e1f2021212121231d1b2025221e1b1c1f25262424272c +2e5ba0abb2a6b9b2afaaa7a8afb2b2afa8aaacafb3b5b4b5b3b5b5b5b3b1 +b2b2bbb8b4b3b3b5b7b7b7b5b2b1b3b8bdbfb5b4afa8a4a5a6a3a0a0a09d +9a999b9b989a9e9d9c9a9a98968c835f2915170d09120600180055655f3b +001c013f4000001404074d1200170000d25c0b180b1c0c02111e030f1109 +0c24030e280293f0f0eec7d1d6ebd800c7f0dc2d9ef0f06d2df7ecbc23f1 +e8b8002c18141e120e161b17200e1716156f93161d2f303633250e0a0c13 +1924405e8eb7d6e1e1e5ddc8c57d5d352b301c27312a3629183d4f2a2a42 +494f45374b544e68a8c2c5958e8ec6521a4e2635332a384e7a8dacdee7dc +a0591411372b47d8250c261300c1dfb8b4cdcfbdcbc0c4f2233529558cd1 +ebeff930000a110814233474d8f0e1e9afb0e3e3e1e0deddd9d9d6dcebdf +d4d5cbd3dee3e2dcdbdfdfdbf8754a425a533e564e403e41eee2e0dac6ae +aaa4acb4acaea4ac9968a2957a7b123c2a312d2732242a26161116110b0f +1d19414735251525132c1f566b6f9899a4aeac96a34d6d2c62312b212a38 +2821143a4335393a3538292b2f2c2721212129221c1b1f2124252521201f +031645273e2b19020072c1628b6dc9f9f5ffff741b3a3f350e22201d2429 +31302528281d01a4e394b7b4c9bec4c2bbb3b7c0beb5b8b8b7b6b6b9bfc3 +bcbdbdbab7b8bec3c0b5bbafaec0b8adadb9b9b7bcbbb4b5b5b6b3aeb0b5 +b3acb4b2aeacacaeb1b4aeb3b7b6b1aeafb2acb2b9b9b4696a6d71757878 +78717677747476726a6e7d857d777878758179717073767370736e6d7276 +7573747572747970793b0b19150f0f131717151c1b191b1b1b1a181c1c1c +1d1d1e1e1e1b1c1d1e1f1f1f1f221c1a1f24211c191a1d20211f1f20211a +3f7f858575837d7b7a7a7f83837d7a74767a7d8183858684868888868486 +868a878382828486868684818082878c908687827b7677767370706d6a67 +666668696b69645f5b5c60686a73613c3745413f48392d421e78867c5607 +351a5859171b332122632604290905eb792c3b334538303d4c333f41393c +522d354a1fabffffffdce9ebffec08dbfff041b2ffff7e37fff6c931ffff +d1164b3b3a463c3a444a464f3b423d358ca92627322b2c261a09090d120f +0a090b18253031343d403f5b2d24132033252d2d1d211407345029152325 +2818082032375da6c2c7999290c14c1448202f2a2432497588a7d9e2d79a +531110392d47d6240b291c04dbffdad3ebeddbe7dadaff2b35234a7cc1d7 +e0f6340b1f333140494b7ed7ebe0ecb9bbededebeae8e7e5e5e2e8f9ede2 +e3dce1e7eae9e3e2e6e6e2ff7c50486059445f61564e4df7e9e9e8d9c7c6 +c5cdd6ccd2c9d2be8bc3b3958e1d3f292c292635282d2b21212c2a212129 +21454b392d1f2f193023638b96bcb5b2bdc9b8c057540f6541392a2e3822 +19082c3325292b262c1e20201b1310121623201c1916141311120f0d1101 +1945232f2327242da6e57a9674cffff5fdf66204242e27041d1e1a22242a +261a1d221a00a1dd859b8e978a93948d85899290878a8a8988888b91958b +8c8c8985868c918e83897d7c8e867b7c8888868b8a83848485827d7f8482 +7b83817d7b7b7d80837d828685807d7e817e848b8b86414245494d505050 +494e4f4c4c4e4a4244535b534a4b4c49534b43404447443f3e3939404544 +42424241454e4b5a22001a1e181a1e23222024232020211f1b191f1f1f20 +202121211e1f20212222222227211f242926211e1f222627252527251933 +5e564e3d5553534c413f444b5150444445484c4e4d4e4c4e4d4d4b494949 +524f4b4a4a4c4e4e4e4c49484a4f54584e4e4b44424345424040403d3c3b +3c3d3d3f3d393332353b474e5a4b29273835323b3027401e7c8b845f0e3c +1f5d5d1b203827296e2f0e33130ef27f313f3547372e3c4c3341433b3c52 +2c34491dabffffffe1edf0fff30fe2fff94abbffff8841ffffd23affffd6 +1a4e3d3b463b3941444049363b38328aa726293732342f220f0e0f100d09 +0c1328384848474c494769382a121c2c202b2e242a1d0f395227141e1917 +03001026315ba9cad3a59e9cc74e1648202f2b2432467284a3d5ded49a55 +1818453953e12c11302512ecfff3effffff3fce9e8ff2d2903122e5f678b +e5616d9fbbafa39c97c3fffff2f1babdf6f9f7f6f4f3f1f1eef4fff8edee +e6ecf6faf9f3f2f6f6f2ff8c60587069546e70645d59ffefeeebdfccd1ce +d4d8cbc8b7c7ceabeed9a8921534253037364433322e23212a271f212923 +484e3c2f212e152f2e76a4b5e0dcd7dcdbc2c8636a256c413c2f37422e26 +163b403033322b30242627231c18191c27231e1c1b1b1b1c251d1311021e +4f324448687b96ffffbad6a8effffdffff7c203b3827021a2323272a3231 +282d2e210098c766735d6250585851494d56544b4e4e4d4c4c4f55595154 +54515051575c5b50564a4b5d5548444e4e4c5150494a4a4b4843454a4841 +494743414143464943484c4b46434447434950504b9b9b9da1a6a8a6a3a4 +a6a4a0a2a7a8a3acadaba5a2a3a5a3aca7a2a1a6a7a6a3a69e9ca0a1a3a6 +aaadada8aa9f9951261c161415181b19181c1a1b1c20201f1d1e1e1e1f1f +202020202121212121201f25222224231e1e2125222123272a2a2a355c9d +abb0a8b9b4b1aba9aaafb1aeaaadadadaeb0b2b3b4b3b3b4b5b7b7b8b7b9 +b3adacafb3b3b1b4b3b2b2b5b9bdbeb8b8b4aaa3a2a3a1a2a0a09d9a999b +9b9b9c9e9f9e9e9f9d978c7f592313140c08001a0718110013005ac8525f +adce245a6908120000bac4c800ed2704132c081a090e0c08110616140d1a +0c0029e8d9ce0000b6c8e9197ee1e5aa001eeadbf20099eddedae0e72012 +331b211c191f101a0d09192a2415519b0f112329322b1607040a15243b60 +88b6cfe2e6e2ddd3bcd2493932342e1f2b2d2d3828153b4e2f2f587ea38f +5639293e405c7cc4d5b5749e42164a31443f3a3537535e77adcddde2bd6b +211a1b41b529211f0600a9d6a19addddc7a9a8c176202f3165a1def0ffd1 +00191b061f1c247ab9e2f6e0d4dee1e1e1e0dfdfdedbdbdedde3cebebeb5 +bfc9d0d7d8dce1e2dfe667733b1c3d6b3338374328d4e7dce6d0bbb9b2b7 +bfb4b8a5b0b07e9881667405444c1e3945520c221f0d0206010000071342 +434633150c20230044e15dbac1bcb9abb0b25d871754522e3733282c121f +3f4131323536392e2b2c2c2c2c2c2b2a24201f24282b2a20212124112049 +3e47331e0a0162c7708b71aeedf2ffff9c1647514c23272b301517232a28 +3132250459e7acb0b0b6bfbfbfbdb8b5b8bab9b9b9b8b6b6babfc3bcbbba +b8b6b8bcbfa1c0eee0bbb2afb6b0b8b4b3bdbfb8b7bdbdb8b2b2b5b3adb4 +b1aeacacafb2b4b3b5b7b4b0afb3b8b3b6b8b7b36b6b6d71767876737476 +7470727778737f807e78767776747c77727173747371746f6d7275757475 +7575727773763510100e0c0f121516151b19181a1b1b1a191c1c1c1d1d1e +1e1e1e1f1f1f1f1f1e1d24212123221d1c1f23201c1e2225231f23447e87 +8577837d7c7b7c8183837b7579797b7c7e808485848487888a8a8c8b8882 +7c7b7e8282808382818184888c8f898b877d7574737172706d6a67666668 +686968645f5d5f62696a6f5a3834413f3e324c3643381f321676e16b77c7 +e840778623290a04c8d3d505ff402235503048373a38343d3243423b4432 +1d45fdeee30717cee0ff2d92f5f9be1032feedff08a1f7ecebf4ff3c3155 +3e474441493a473a33425148336baf1d192424281e0c0b0d0e100c0a1118 +24272c30373f464b8b1f1b202f30212b241e241406324e27112d51776933 +1b0d20264870bed0ad6d95390d42283c36353033505b74aacad9deb86a21 +1c1f41b52721231206c5fac5b8f9fbe6c9c5d988262e2a5b94d0e0f6d207 +25302546464891c5e1f0ddd7e6ecebebeae9e9e8e7e7eaebf1dcccccc6cd +d2d9dee1e3e8e9e6ed6e79412243713d4b4e5635def0e4efdac9c7c2c9d1 +c9d1c6d7d6a4bda28288104543123040510b1f1c120f17160d0e11174344 +4b3e241c2a28004cff7ecec6adaaacb9b75360005c6d44493e2d290a112d +2c1b1a1d1c241f1e1b171515181c211f1e1d1e1d1c1a0f110e160f244b3a +392927252d93ee8d9576b4f3f5fdf58a002d3b39181f292f14151c1e1c25 +2a220458e19e9689848b8e918f8a878a8c8b8b8b8a88888c91958b8a8987 +84868a8d6f8ebcae89807d847f8783828c8e87868c8c87818184827c8380 +7d7b7b7e8183828486837f7e828785888a8985434345494e504e4b4c4e4c +484a4f504b5556544e494a4a464e494241444544403f3939404443434342 +44434c50581d03121917191e21211e231f1f1f211f1e1a1f1f1f20202121 +212122222222222120292626282722212428252224282b2a2323385f574e +3f5554524b414144484e4b49474647494b4c4d4c4c4c4d4f4f4f4e504a44 +43464a4a484b4a49494c50545751525046414042404240403d3c3b3c3d3d +3e3c3a34353940484f5848292b3a383022402c3c351f341a7ae56f79c8e7 +417b8a2a2f110cd1dadd0cff442436503048373b3937403546423b43331e +46fff1e80b1bd2e4ff3499fcffc7193bfff9ff14acfff5f3fbff40345740 +484441483944352f3e4e44316ab01e1c292b3127140e0c0d0d0a0d172639 +404547494d4c4f8f211b1e2b2b202d29252f1d0d375024071a32503c0900 +0016254972c2d6b8759a3a0e40293a37322d304b566fa5c5d6ddbc702928 +2b4dc1322b2e1e17dbffe5deffffffded3e38c261c001634636faad44a9d +c1b3bb927cbdedfffff2e0e8eef4f7f6f5f5f4f3f3f6f6fce7d7d7d0dae3 +eaf0f0f3f8f9f6fd7e895132517f49595c6546eaf7e6eedbccd0cfd5dbcc +cdbbd2ebc9eacb988f0a3f441c41546119282318151e1b1311131a45464e +40271b2122075fff9df3eed4c9bec0bd5c75075f68424942333417203d3b +28272a272b262523201f1f212326232120222323241f1e12161027574948 +445e7698faffc9dab0d6fffcffffa21b48483f161d2e35191a2428283137 +2b0653d384735e53525353514c494c4e4d4d4d4c4a4a4e53595152514f4f +5155583c5b897b584f4c51474d494852544d4c52524d47474a4842494643 +4141444749484a4c494544484d4a4d4f4e4a9e9e9fa3a7a7a39fa7a6a19d +a0a8adadb7aba3a3a6a7a8a8a6a5a7a6a6a6a5a5a79f9d9fa2a4a7adadb1 +a6a5a09044281e1c1e1e1d1b1c1d1c1b1a1b1d1f201f1e1e1f1f1f1f2020 +2323232322211f1e202022231e191c2327211e222b302e2c406099abb0ab +b9b7b4afadafb1b1aea9afaeacabaeb2b5b8b6b3b1b4b8bab8b6b8b1aaa9 +adb1b1afb1b1b2b4b6babcbcb6b9b7aca3a1a4a5a4a2a09d9b9a9b9c9c9e +a1a2a1a0a19e9a8f7a4f2112130b09220014181416181217f000e700e011 +8a8807a6995ce8659100f513192b091c0c160e0d1f21161d0406576a614c +f1e8eaedeceaee545af0f1df14160090f2f2df07f4f2edee6000252b0d19 +0915251317261419121f2958a20d192524251c0908060f1f345787b0d6df +e3e5daccc1aec833233237342c3130343a2211384c2f3276aad1dfc78532 +334550425d8abfc8b277495831373541312134414e7298bbe8f5c9764a27 +194721101f3a050d262c281b1ba1afaab73828304179b7e0e9ff85051912 +1525296eb2ecf9d0a2a0d1e8dfdfdfdfdddddddddbd9dcc1aeada6b0b6bd +c5c7d0dae2e4f77484b458424a50485b6f39ddf7dfe9d6c5c3bebfc4babb +a19aa9868d806681302a45357d5d69353535231415100a0d111a35375b57 +2d09261a0104d349bbaedfe1d4e1bf6caa3711092d594e33011e213a3d30 +2f323234312c2927292926241b1611121517191713191a1d161835424f3a +210c0140c37e878198e7f9feffd71a525656321716140605101b2024220f +0914f7d69caeb0c6bcbcc0beb6b0b5beb8b8b8b7b7babfc3bfbcb8b7b8ba +bcbcaac1e8dab8b1afb6b4b8b1afbdc2bcbac2c0bbb5b4b7b7b4b8b5b2b0 +afb1b3b5b9b9b8b3b0b1b6bbbbb8b6b4b36e6e6f737777736f7776716d70 +787d7d8a7f747477787878767574737474737375706e7174747578757970 +74756e2a16131618181718191a191817191b1d1b1a1c1c1d1d1d1d1e1e21 +212121201f1d1c1f1f21221d181a21251f191d262b27212d4a7c89857a83 +817f7f808385837b767b7a7a797c808689878484878b8d8c8a878079787c +80807e8080818385898b8d878c8a7f7573747574726d6a68676667676766 +65626163666c6d695032313d3c3953273e403736352c2fff07fd0af62aa4 +a11eb9a869f16e9803ff27314829433842373442443c452d2f81908065ff +f9ffffffffff6b6efffff126280aa2ffffeb13ffffffff7b0b444c303c2f +3b4b393e4d383d343d456db4181e241f190f000e0f0e0b0a0e1b2530282b +333c434d5da92c1b282d29212625292f17062d411b053f71a1c5bb7f2513 +1d2b254c7ba6af9f693d4d272d2b39291c313e4d7197bae7f3c8764c2b19 +471f1023461a2b4a5247373ac2d2cad34a2e2e376eacd5dbfe8d1527232d +424a8dc8f7facda0a2d8f1e9e9e9e9e9e9e9e9e9e7ead2bfbeb7bec2c9ce +d3d9e3ebedff7d8cbc604a505a5c748248e8ffe6eed9c7c5bfc2c9c2ccc2 +c7d6b3b9a987973925341f664b5c28201e120b100f0709070f282c545631 +1130240616fe77d6b1c7c5c8dbb5577f17151d3f67553300131328281a17 +18181d201b140d0b0b0c0f0c0d0c0d0f0e0c0a070b050d121c393f422e25 +22276ff2a191829cecfcfdf8c30035393f220d1113050309101017180c0a +16f4cb82887d8e8b8e9290888287908a8a8a89898c91958e8b868586888a +8a788fb6a8867f7c848387807e8c918b89918f8a84838686838784817f7e +808284888887827f80858a8d8c8a88874646474b4f4f4b474f4e49454850 +5555605248484b4c4a4a4845454443434242403a3a3f4343444642464149 +5252130a1720222221212221201f1e1e20201f1e1f1f2020202021212424 +24242322201f24242627221d1f262a241f232c312e272f3f5c5b4e425455 +534e454244484e4b4b484544474b4e514f4c494c50524f4d4f4841404448 +48464848494b4d5153554f535348413f43444442403d3d3c3c3d3d3e3c39 +37383c414b525540282c3b382b401732373133332d31ff08fb08f327a5a5 +24bfaf71fa75a009ff283146264039453b39484a3f472f3180918369ffff +ffffffffff7175fffffb323416aefffff71fffffffff821149513440323e +4e3a3d4c383b333d466eb61c222a262318070e0c0a0a0b15283848444549 +4b4b4e5aa42618272e2d272e2d31351d0c31451400183a5f786f41000015 +25214476aab3a1693d4b262b2a3626182c39486c92b6e5f6cd7e58362553 +2a1a2f562f456a77756668e5e6d5d74a2a19041e43626ebfa26cacb9b5a8 +7da2d6ffffecb6afdef6f3f5f5f5f5f5f5f5f4f2f5dcc9c8c1cbd2d9dfe3 +eaf4fafcff8c99c96d575e64637b935dfcffecf2e0d4dcdee5e9d9ded1dc +ffeaf6dfaaac422c4434806370392f2e241e2421181712172f345c5e3c14 +25190a24ff8ef4d2e7dcd2ddb65e9026181b3f685b3b0921223837272425 +232728231d1817171718131210111313131315180a0e111f45504c42546e +96dbffdbd9c3c2ffffffffdc1e534d49230c15180a0810181b2123150f15 +ebb96763505b515256544c464b544e4e4e4d4d5055595453515051535757 +455c8577554e4d534b4d46445257514f5755504a494c4c494d4a47454446 +484a4e4e4d4845464b50514f4d4b4a9fa2a7a8a6a3a1a0a8a49f9da1a7ad +aeb0a39ea5aba9aaafa0a3a8a8a6a4a5a6a6a09da0a2a4a9afaeb5a4a19f +87392827262b27201b1b1c1c1b1a1c1e2022211f1f1f1f1f1f1f1f232323 +23232221201d1d21231f1a1c221c1e24292c2e2f324a6592abafafb9bab8 +b5b1b1b2b2b2b0aeaca9a9adb4babfbab5b0b1b5b7b4b0b8b5b1afafb1b4 +b5afb1b3b6b7b9b9b7b1b6b7ada4a3a8aba5a29f9c9b9b9c9ca1a3a3a3a2 +a29f9c9b8f74451f13130d0a0e1c0c1c211c281932df00ec00f100c35517 +3d603af948f300f700271a151a0d251616181a190707b89e7468b049b6b2 +b8bfada00b999b9026072b2b15777f81032b665b3a00231c18111d16150c +0f0616183f23050d549c03242b2015140f12131d315178a3c5dfdfe0deca +b4aca5a3591d2f2a373a312f33351c143c4f353f88b6d4f4ffd9885b5b55 +4b3f4982b1bbae96884e382d3e402129353949648db6d4dcc7a5601f192e +2325221a2d3a322d2331c2a6ba911434374d8acae6ebff351b0d1a2a2866 +c2e7dddd98a6ebe6dddfdfdfdfddddddddd2d2d6c1b1b0a9b2b4b5b4b3b9 +c6d6e2d4ae8e6fe4f8f8f7f1f0b656d8e9d3dcd6c7c7c0c0c4b9b92c000e +000308000625184320523745203237261817140f131927262a3d48281521 +0d2e00634b8a84878e888f6f40763310183c455a8c1f1e192c3636343330 +2f2f2e2c2a28282522211a1715151614120c141215130815384334190800 +20bf9669858de3fbffffff38625c634c1e150c160f15171518180c0d00ea +fb7ea4b3bfb9b7bbbeb5abafbbb6b6b6b5b6b8bdc0beb9b4b3b5b8b9b7be +b8c6bbb0b8b4b1b5bab3afb9bebcbebfbcb8b5b4b7babbbbb9b6b4b3b4b6 +b7bdbcbab6b2b1b4b5bdb9b5b4b46f7277787673717078746f6d71777d7f +83776f767c7a7a7f707375757472737474716f727474777a777d6e727768 +20181e2326241d18181a1919181a1c1e1d1c1d1d1d1d1d1d1d1d21212121 +21201f1e1c1c20221e191a201a1c1f24272928273a4f778b867e84848483 +838586867f7d7a7877777b828b908b868384888a88848784807e7e808384 +7e8082858688888882898a807675787b75726c69686867676a6a68666565 +6668707165462e303939363a4532404039423147f306ff06ff0edc6e2b4e +6d43ff4cf701ff083c37333e374e3935353536282de0c69785c457c3c5d0 +d7c5b722adafa238193b3b25878d8f143d7a725319423d39323e37362d30 +2535375d3f1f2567aa0c272a190a0704120f0b0a0e1822292e292e3b4041 +516c99631f291e282a24242c30180b303f190d4b76a5e7ffe6852e1b191b +2736628ea39a82763c281f333517213036466089b2d3dcc8a8601d162b21 +272b2c485c55493d50e4cbddae273933427ebfdadffb45311d293d3d7dda +f9e8df98a7edeae4e9e9e9e9e9e9e9e9e0e0e7d2c2c1bac2c1c2c1c0c5d2 +e2ebddb79677ecfffeffffffc966e4f4dce1d9c6c3bbbdc3bcc6451e3522 +2e310d1d2c143109402a40191c1c1006090703060b17171d3342271a2b17 +31048c70906a4b4c5a6a4c1b4a110b2241485a8917130b1b24221e1d1b1a +1b19120c060405060d0d0e0f0f0d0907020700030e0c1b3738281b192150 +f1bd728290e8fffff8eb1a403a473712110b170f0c0a04080c061000eaf3 +68807f8787898c90867d808d87888787878a8e918d888281838687858c86 +94897e86817f8489827e888d8b8d8e8b87848386898a8a88858382838586 +8c8b8985818083878f8d898888474a4f504e4b4948504c4745494f555559 +4a434a504e4c514043464643414243413d3d4143444646414a3f46544b0a +0b1f2a2d2b241f1f1f201e1d1f2123232020202020202020202424242424 +23222121212527231e1f251f21252a2d2f2f2d3b44595c4e445256555047 +44454950524a464242464d5358534e48494d4f4b474f4c484646484b4c46 +484a4d4e5050504a5053494241474a45423f3c3d3d3d3d413f3e3a39393b +414e555038272e3c3829293525363a35413148f405ff04ff0ce073325675 +4cff55ff07ff0a3d35313c36523f3a3d3c3c2d30e2c69989cb60ccccd4db +c9bd28b4b6ac4225484832949a9a1e47837a5a1f47423e37433c3b323528 +373a5f4220276bad112c302112100a120c0b0d1523343f4842464e4d4650 +65905b1c29222f342d2c3334190e32420e00152f4d81aa97501b1919171d +2f6594a39981743a281e3133151e2c31415d86afd1deccaf6a2821342c34 +3c42657f7d79707fffdde1ac21321a0a2a536a7dcb6994a6bab6909ddcf9 +eef4b2bbfcf3ecf3f5f5f5f5f5f5f5ebebf1dccccbc4cfd1d3d1d0d5e2f0 +faecc6a384f9ffffffffffda7dfeffe5e7e2d6e4e4ecefdfe86e537a717c +733b3c3f234723583c4720292f251e23211b1a18211e243c4e3520220c36 +149e8ab28f6f68677152235b211123454d629224211a2b322e2b29242324 +221d18141212121614131313120f0f0d1102030b0f2b474036426193bfff +f6bfc9b9fcffffffff3c6152553c1212101b1111110c1218121905e8e851 +605858524e54554e4248524f4d4f4c4f4f565955504d4c4e515452595363 +584d55524e4c4f48444e53515354514d4a494c4f50504e4b4948494b4c52 +514f4b4746494c53504c4b4b9ea6aeaca49fa1a6a6a3a0a1a4a6a8a9a7a0 +a2abada8a9af9fa4a8a8a6a4a5a6a5a09fa2a3a4abb1aeb5a3a09c843423 +222328251d161517211f1d1e1f2122211f1f1f1f1f1f1f1f202122232323 +232322202125241f1e1f192432322a262d37526489acafb1b9bdb8b5b0ae +afb1b5b6afada9a9adb4babfbbb5b0b1b5b7b5b1b6b8b8b5b1b0b5bab0b2 +b4b6b7b7b6b3b1b6b6ada4a3a9aca5a19d9a9b9c9d9da5a4a3a2a09d9b95 +988f6c3b1e171411161a171b00171a1112aad30fb2afa162bfa416110f10 +879f580af50011000000000000020018010e008841565b8300000f000000 +0000090003001f1e1d680b070b231806061825212b242d324136325a595d +545360765c77ab001f211c12181b1e23324e759dbacbdbdbd9d2b3949297 +8a94142c29393930262c2a191c455542558fc2e5e1d4ccc48f7c63624b3a +465d7f98a8ab886c50515a281f25262f426787a3bdd1cca27d7232122823 +17154095b2421cbda7b5452632374f95daf2ffed030b1b373b69c1dbe4d6 +dbafbaf5ecefe1dfdedddddcdadad4d2d5bfb0b2adb8b6b3aeaaabb3c1ce +f5a994b96c768fbae4d87d4bd1dae3e5d7c6c4bebfc2b6ba6f1637212021 +021a28295f3128101818202b2114131210130d2821321622151c170b411c +3f525985918c7f71685a573d344219393331182f171f2a302c2a2a29292f +343534312f2e27201b19191816130d141616190c0d393533190a0210aeae +396f85d5f9feffff323e3c4637131b2014121f26211f2019200097ff828f +a9a9b2abacb1ada4a5adafafb0b0b0b2b6b9b9b4afafb2b5b5b4b7b4c7c0 +b3b7b1b1b3bdb9b2b6b8b8bfbcb9b6b4b3b4b8bbb5b4b3b3b5b7babcbebe +bebbb6b2afacbab7b6b6b76e767e7c746f7176767370717476787a787173 +7c7e79797f6c71767672707174737071737474777c777e6f7176671e151c +2226231b1413151c1a18191d1f201f1d1d1d1d1d1d1d1d1e1f2021212121 +21211f2024231e1c1d17222d2d2521262e4450708c878384878483828384 +8582837b7977777b828b908c868384888a898585878784807f84897f8183 +8586868584828989807675797c75716a67686968686e6e6a696867686874 +76613d2d3137393e433b3c1c31322625bce521c4c1b377d8bf2c231d1a8d +a35e13ff05290c19211c121d1b072b152709ab6477749408022206060d05 +051b10140a2f2c2b7618151d372f1f213544424c454e515e534d7572766d +6a778b6f86b601201e12070b0c0e0b080d182428282d2f3a46423b4e7083 +9a14271e2c2c251f2728151235412225537fb5e0eae6c14f1e081f2f2b27 +395f7c8c916e543b3d4818131b1e273c6282a0b9cfcba0786b280b252623 +2d5eb5cd5c3be0cfdc653a35314589cfe7f3ec1a282e444472cce7eedfe2 +b6c0fcf0f6ebebeae9e9e8e8e8e2e0e6d0c1c3bfcac6c3bebab8c0cfdaff +b59ec3768097c5f4ea8c59dfe6efeedbc7c3bbbdc3bcc1731f4638414521 +30322a5729271a2d291c1d14080908060a05221b2e1420142021123e1d55 +5b33321509171d2120261b20360d2d27250b220b131e231f1d1d1a141514 +110b08090c0d0f0e10100f0b08050801041410143c2a2718162342e7db41 +6886dafefff4f61019152420051520151216170e0e141322019bfe6d6a74 +6f7f7c7c827d75757e7f8080818083868a87827d7d808383828582958e80 +847e7f828c88818587878e8b8885838283878a848382828486898b8d8d8d +8a85817e7e8c8b8a8a8b464e56544c47494e4e4b48494c4e50504e454750 +504b4b513d42454542404143423f40454644474841483f45524907081c27 +2b282019181822201e1f2224252420202020202020202122232424242424 +26242529282321221c2733332b272d334445515d4c485258544e443f4048 +53564b474242464d5358544e48494d4f4c484d4f4f4c48474c5147494b4d +4e4e4d4c4a5052494241484b45413d3a3d3e3e3e45423f3c39393b3f5058 +4b2f28323d3b353531351730342929c0e925c6c1b37adfc8372f282699af +6a1cff092b0c181f1d16232011321c2c0cad687c7b9e150f290c0d140c0c +251a1e143c393883282227403726283b4947514a53566459547c797b7470 +7d90738bba0725251a0f14110f0b0c1523333b3d46454c53483d4b697d96 +142b2435352d262d2b161336421500152e536c7b8f8e462c17282b262f43 +62798b906d543a3c4818131a1c253c5f7e9bb8d0d0a57e72301330373b49 +82defc8d67ffd7d75a2e2c190a33657ea4d04e90afc4a9b3dee3ede4f2c8 +cefffbfff7f7f6f5f5f4f3f3edebf0dacbcdc9d6d5d3cecac8d0dce8ffc3 +aacf808aa2cbf3ec9f74fcfefbf5e4d9e5e8eff3e0efbc7aab9ea0935855 +4b3e6f40351b1e191d2a262024231f1d10261d2f192b2229190b49326d7c +62664935322d312f3b2c2c40193935331c3319212a2d2926241f1d20211f +1b18181a1817151515141110101206041113264d30313a5e97b5ffff92b5 +b4eeffffffff333b3035260517221714191c14161e1f2e099ef85c505247 +50484b4e4c41444a4e4c4f4d4f4f5556524d48484d50504f5451645d5155 +4f4e4a524e474b4d4d54514e4b4948494d504a4948484a4c4f5153535350 +4b474443504e4d4d4e9ea7aeaba29ea2a9a4a1a1a6a8a6a4a5a4a5a9aca9 +a3a4a8a0a3a7a7a5a3a4a5a3a0a1a5a5a5abb3aeb1a4a19c8b3e22191b20 +1f1b18181b22201e1e1e20212120201f1f1f1f1e1e1e1f21222323232323 +1f1e21211f1f212a333b3427243040556180abaeb6b9bfb7b4b0aeaeafb2 +b6b2b1aeadafb2b5b8b9b5b2b3b7babab9b3b6b8b6b2b0b3b7afb1b3b6b7 +b6b5b2b5b8b6aca3a2a5a6a39e9a989a9d9e9ea6a5a2a09e9c9590938c63 +321c1913130b0b0a2f06225a1a180306080020002e0034001e1c1a715512 +27db00c794bba8b3adccd9c7f7c1e6b4aad2eadc89efe9c5cdd0c2eacc04 +1bd1c0cce74ec4d7d0b0b4c9b4b9d2d2afb2b8c4b5ab6369657c8cae6669 +8e84e4e3081a1319161d1b25354c6c96b8cbd0dcd8cfb9917377878eb113 +2c2f332b2c2d31301f213d483d559ad5f0dfc9b9ac95a894723122334f58 +6f889ea19984745e2f2528282a2f425981a1bec5c3c9b94c15140e171f24 +57732412bcb49c1a1d2a3b509bddefffa900132e3666cce6e8ebcd9dbbd2 +e8ddcbe1dfdedddddcdadae0dbd8bdabadaab6b2b1b0afaaa8b0b9aca0a9 +a8b896939ee1d68682f1e0e3d3d7c4c0bbbfc2b5b68813502f2516001924 +1248342f32212113251f13131513160e1b183f2e3f322011302f113f4d5f +93b4b5af91756f4a4d2160533a233d301e201b232a24242c2a292d323433 +2f2b26221a1411121312100e0f191b1e17143f39492c13040584ab265385 +c6f2feffff553b4340311c3850583a231314366783320031ffb77d989aa5 +9f9c9d9d9b9a9ba3a4a5a5a5a7aaadb7b4b1b0b1b4b6b7b9b1c1bcb2b6af +afafbcbcb4b5b4b5bdbebab7b6b3b0b2b8adadaeb1b4b8bcbebebfc0bfba +b4ada7b6b6b8b9b76e777e7b726e7279747171767876747675767a7d7a74 +74786d707575716f7073717072767675777b757a7075766e2a16151b201f +191616191d1b19191c1e1e1e1e1e1d1d1d1d1c1c1c1d1f2021212121221e +1d20201e1d1f2831362f221f2937474f678c878884898183838383838283 +7e7d7c7b7d8086898a8685868a8d8e8d82858785817f82867e8082858685 +8483868b897f75747576736e6765676a6969716f6c6a6a69696975795d36 +2d3334362f2e2a4d203a6d2d2914141606320542075005312c26785b1931 +e905e0b3deced6cce5ead4ffcff9d0c9f3fff095f2efd6e4e4d6fee0162d +e2d1daf55cd0e3dec4cde2cfd6f1f3d0d3d9e3d2c67c80798e9ec0787a9f +93efea0d190e0f090e0605060b14212d2e283339434437324a6b80ab0e27 +2d31292a282c2715132b3423306997c3e4e7d4a0392a1c1c14191c2e3449 +627a7f79665a45191218191e2338527a9cb9c1bdbead3d080a0d1f303c73 +893c32e1ddc63b322d34448fd1e5f9ab1938444069cae6eaefd4a7c7ddf1 +e1ceebebeae9e9e8e8e8eee9e9cebcbebcc8c4c2c1bfbab8bec7b8acb3b2 +c2a09ba9ede49390fff0f4e1e1cbc4bdc2cac1c38e1b614b4a3e21332f12 +3f2b2e3c38371820180b0a0c0b0f0b1b19412e3e301e112c220b50502d2e +1c132921162110230950432c17302513130f151a121318150f0f0e0b0703 +0000040505060708050507040407191b1b42303e291d2436c3dc2e4a83cb +f7fff5f53111181b160c2f50593a1a0501235a7d360236fea3596360726f +6b6d6c6b696b727474757477797d85827f7e7f828485877f8f8a7f837c7d +7e8b8b838483848c8d898685827f81877c7c7d8083878b8d8d8e8f8e8983 +7c79888a8c8d8b464f56534a464a514c49494e504e4c4c4b4a4e514c4646 +4a3e414444413f404240404448484547484044404851501208121d22211c +17191c211f1f1f212325252321202020201f1f1f20222324242424272322 +25252322242d363c352825303c4743485d4c4c505a524b423e3e4451564e +4b4746484b4e51524e4a4b4f5251504a4d4f4d49474a4e46484a4d4e4d4c +4b4e52524841404445433e3a383c3f3f3f4743403c3a3a3a3e4f59452727 +343b3c2b27254b213e7434311c1d1f0d360949125c15403c368a6b293df4 +0ce5b6e0cfd8cfeaf2ddffd8ffd4ccf8fff9a1ffffe0eaebddffe72037ec +dbe7ff69def3ebcfd4e9d6dcf6f8d5d8dee8d8cd83888298a8ca8284a79a +f5f0131f141710150b0a0c13203340433f484b504c3930446780af122b32 +362e2f2e302a16132b33140427425e6c778378444f4035191c2e3f384861 +7a7e7a665b481b14191c2025374a7096b5c0bfc2b1420f151b344c609bb8 +6a5bfbdfb82821221a0a3b6b86bba057a2bbafbafbf2e7f2dcb3d3e1f6ed +ddf7f7f6f5f5f4f3f3f9f4f3d8c6c8c6d4d2d2d1cfc9c7cbd4c6babfbecc +aaa6afebe5a6adfffffce2e2d5dfe3ebeed9e6da7dc9afa38653564b2c5e +463e3d24201427282227292321121b143c30463e2b112d34256c735e6655 +444a392c37293b195d503b25413523241d22251e1b211c1a1b1c1b181411 +0f100e0c0c0d0e0c0d0f0c0908161e2e55334448629dadffff819bb4e1fb +ffffff5537342d1d0d30505b3a1b0505296489420d3cfd9843443b474140 +3f413d3e3d4746494749494e4d524d4a494c4f5152564e5e5950544d4c46 +5151494a494a52534f4c4b4845474d42424346494d5153535455544f4942 +3e4c4d4f504ea1a4a6a5a2a1a4a8a4a1a2a9aba7a5a6a9abaaa3a0a2a3a3 +a2a4a5a5a4a3a3a3a1a0a3a8a7a6abb3ababa6a59d98512415151a1b1c1b +1e21221f1c1c1b1d1e1e2020201f1f1e1e1e1f202121212121201f1c1c1e +1f222e394841372b262e4151535c77abaeb9b8c0b7b6b5b4b2b1b1b3b1b1 +b0b0b1b3b2b3b7b6b4b4b6b8babcb3b2b2b3b5b4b1aeacaeb1b4b6b7b7b5 +b5b6b2aaa4a4a5a4a19b9695999d9f9ea5a19e9d9c99938c8c875b271b1a +1311171a3ad600ee6f86d73cbb7c5adc00f000ce21492288b279b544d005 +d60c5619005c0c160d481300120008000a36030300898e2014f10030d70c +0b0070000ba5b3009e7000000500000100000c04b6986e00090a7e7d0c7f +fb0a190c17151b1c33506f8daec7d4d1dacdb6926a58647d9ab33d292522 +2028303a3a2b212b34364ba1e0efe5dfb88291c0b28e4130292e5559697c +8894998e714b403731312a2d37597ba3b1bdd2ba974528503c0d2a83e64c +00cbdc490d31284a5aaadeeafe520b2b3560b5f7e8eecbc9a2c6badce1f0 +dfdddddddddddcdce0dee1c9b4b1a9b1aeaeb0b1aba6adb73f93969f91a7 +97b7f6d7968ae2d1dad8d4beb8b4bac1afab96004e241d06001b29225728 +43876b310818190e101210121710183441545f221a4221011d437b8e99a5 +aca0696a5d59321c2546666e320a241b26332d2e3831332c2c323c3e382d +2b241b17161717150e081a1716160e2f345738150100579f444486bbebfe +ffff81333f33251a2535130a131f232d383a210400f3f7728e9899989590 +8f92939095969898989a9da0acacaba9a9acb0b4bba7aeadadb7afababb8 +b9b4b8b8b4b9bebab9bab6b1b3b9b2b2b2b3b5b7b9babfc0c0c0beb8b1aa +b5b7bbbab67174767572717478747172797b7775777a7c7b74707273736f +717373706f6f716e7074797876777b72727279777b3d1812171c1d1c1b1c +1f1e1b1717191a1b1b1e1e1e1d1d1c1c1c1d1e1f1f1f1f1f1e1e1b1b1d1e +212c37463f322621293a48474c608c878b838b8285888a888582807d7d7e +7e7f81838488878787898b8e90828181828483807d7b7d80838586868686 +89857d76767574716b6362666a6a69706e6b6a6c6d6d6d757a59302c3431 +34363858f20dff8196e449c88a6aed09ff14ef3d623497bd81c051e11df2 +2e7f401a781f23144c1c0e290825071c3f04060b9da23427ff0c41e51a17 +087c0114b3c908bb8f091928181b22100e2518c8a97c0215168a8a1688ff +0d16070d080c010008141e262e2e2a393c3d32242847657b972d272f322e +302e2f27150d1927293a82abc7effecd65171d1e26233320172d2b3b505e +6d756b522e27231e20191f2d50739aa7b3c4aa85351b4a3f1b3e9bfb6517 +f1ff752f472c424d9ad4e0f1552d564d69b0eddee8c9cfaed8cae8e5f3e9 +e9e9e9e9e9eaeaf1eff2dac6c3bbc3c1c1c3c2bdb8bdc74da1a2ab9bb1a1 +c0ffe19e97f1e3efede6cdc5bfc9d3c8c7b21f7856573e2c3b351d451130 +7c6e390e1d19090708060b15101b3741515715092e090038585c3a0f0a25 +2a000d13271d192242626a2b0217090f170c0a0f0b110c06070b0d09040b +0a0a0a0b0c0a0a09000303111a16342b4c3420213198d24a3884bdf0fff9 +f55b06120c07071c34170c0b110f182b34240c02eee34d585d6567635f5d +61615f6365666766696b6f7a7a7977777a7e8289757b7a7a847c797a8788 +83878783888d8988898580828881818182848688898e8f8f8f8d87807c87 +8b8f8e8a494c4e4d4a494c504c494a51534f4d4d50504d46424443434042 +4242403f3f403f42464d4a4647483d3d404c525d25080d161b1c1c191d20 +1f1c1b1d1e21242223212120201f1f1f2021222222222221232020222326 +313c4b44382c272f414d473f405d4c4f4d59504d454240444e514d4b4949 +4a4c4b4c504f4c4c4e5051534a49494a4c4b48454345484b4d4e4e4e4e50 +4e4642424443413b36353b3f403f46413e3b3b3c3c3e4b57401f2433393a +383858f513ff8da5f459d89777f713ff24ff52764aacd396d462f129fd37 +85451c7b252b1e5725152f0c2b0e284e181716a4a93b2eff164bf2272516 +8c1225c0d40ec1940e1d2c1c202715152c21d2b38910232296931f8fff14 +1d0d150f13080914232f3c43443e4b4b463624243f6183a5372c31322f32 +33352b180e1721160f425b677e978c533e605c573b443f33362b3b515f6e +776f57322b2522261f1e23416893a5b1c3aa8536225652355fc1ff8d3aff +ff5e16301e2b164c758bc45a74beb7c6f0ffe9ecd7dfbadcc7e6f1fff5f5 +f5f5f5f5f5f5fbf9fce4d0cdc5cfd0d2d2d2cbc6ccd45aacaeb7a5bbaac5 +fce3b5b7fffbf2e4dac8ced1dcdfc5d2e468c49f97714e544f3b6d3b508c +672a0a20251d22231e1b1a0e143041586626113921195377866b42364542 +172a34442e242d5070793b1128191f261d181f181f1915181e201b141815 +121111121112100609040d1d2b482c504f629caadcffa08eb6d6f4ffffff +802d312111091d32160b0910111d344033190df2da3b3c3b403f3e373839 +3c373e3d413f414146464945444244474b4f58444c4b4b554d48424d4e49 +4d4d494e534f4e4f4b46484e474747484a4c4e4f54555555534d46414b4c +504f4ba19e9c9da0a3a5a4a5a0a2aaada9a7aaadaea89b99a2a7a3a4a4a3 +a3a4a3a3a29fa1a5aaaaa8abb1a9a6a7a99ea3632b16131518191a1d1f1f +1c1918191b1e1d222222211f1e1e1e21212121201f1e1d1f202123272f44 +595f492c1e273d525f515970a9aebbb8c3babbbdbcbab5b2afacadb0b0b4 +b3b4b4b8b8b6b3b2b2b5b8b4b0adb1b9bab1a8a9abafb3b6b8bab8b2b1ae +a7a5a7a8a6a0999494989d9f9ea09d9a9a9c9a958d888356211a1b121312 +0050a200a07c78a97ae00c5c9404e059d55bbb8fa1ba6345698440a08da5 +d004e7010d1b5a7b1b1437111a237cb91c2fe6751d42e80052f4003357f5 +54659fdc00e94311150f19102b12212408f188b0112d09bdf4539de20014 +0c1615212c44698da8bdced2cbcbb5916845415b7894a86e27151c252923 +30342b212535465ea6daefe3cca985a7cec19d462b192039425a696e7d96 +959d73593a293130343735447a95aacec1bea255471d080e00694118dfd9 +0a2a242c5a68b8e9eeff21212b3dc8eee5f6d1dfd2b6af9cf4d2e4dbdadc +dcdddddeded8ddebdbc9c0afafb1adaeada9a9b4c42ea8a78ca4a692bae9 +c8aa9bded9d9e2d1b9b2afb8bfada6ae00400a110000143f0c4827384f45 +391525271d1d201e20110e291922295d19252021250e4a7d81b3afa5ae69 +70764c27330e415d4b5e111f172e474645483a4237374864726c5e392d21 +171210100e180a1d171012061e1a4c30120306429d613886b2e0fbfeffb2 +384036302b1a1016090e1b1d1e1e16000c00dfff6686969397958b878e91 +8e8c8d8f8f8f909496979b9c9a989ba1a6a39db2b5b0b4acaca9b4b4b3bc +bcb5b5bbb8babdbab5b8bfbebcbab8b6b5b5b4c0c0c0c0bfbbb6b0b6b9bc +bab574716f70737675747570727a7e7a787b7e7f786b6972777371727171 +706f6f706c6e757a7a75777c706e737d78854c1c0f111518191a1b1d1d1a +1716171919181e1e1e1d1d1c1c1c1f1f1f1f1e1d1c1b1d1e2022212c4358 +5a442a1c22364d5847495b8c878d838c858a90918f89837f7a7b7f818384 +8585898989868585888b857f7b8087898077787a7e828587898983848179 +7779787670696161656a6c6b6f6c6a6a6c6e6f6e7278552c2b332f312e0c +69bb05b38f89ba8bf21e6ca515f679f97ad6a6b3c97052799556bcaecaf3 +21ff121722618428274e2a313588bc2241ff8e3659fc0463ff023c60ff60 +73b1f50fff64343b3741364e333e3d1cff99be1f3e1aceff60a8e7000d01 +06010a04000c1d2324282a2c3c3d34241824476373885d221f2c35332227 +24170c1227384c8bb6d7ebd9a148171a17292b3c261c19152c3d42536c6d +79533c21141e1f25292a396f8a9cbcaeaa8f474224192a1f8c6740ffff32 +4732294e59ace1e8f7253e4e52cfebdcebcbe1d9c4c2afffdcebe7e8e8ea +e9ebecece9eefcecdad1c0c1c2c0bfbfbbb9c4d23cb6b398aeb09cc3eecd +b0a4eceaecf7e5cac1bdc9d4c6c5d122794d583d2d364905330e23403c3a +1b2e2a1b1818171a11102e1e24285a11150a0618205c6f4331141a32000b +22110f3011455f4a5a0a14050f1a0c060901120800091c28272109090706 +050503030e00040004100b2014422c181d3383d26d3181b2eafff4f5890a +1815181c12111b0b090d08090e0e001200dafa44535e5e656359555c5f5c +5a5b5d5d5d60636567696a6866696f74706a7f827d81797a778383828b8b +84848a87898c8984878e8d8b8987858484838f8f8f8f8e8a8582888d908e +894b4846474a4f4f4e4f4a4a5254504e4f52534a3d3b4447434241404040 +3f3f3f3d41474c4c4645483b3b414e51632d0707121518191a1c1e1e1d1a +191a1e1f1c1f1f1f1e1e1f1f1f22222222211e1d1e202326282b35495e60 +4a2f21283d545f463c3e6050524d5651504f4c4b4a4f4e474647494b4c4d +4d51514e4b4a4a4d504d4746485251483f4042464a4d4f51514d4d4a4543 +474745403934343a3f414044413c3a3b3d3e404b58401c25333539321170 +c210c19e99ca9bff2c79af1fff86ff8ce9b8c7dc836589a564c7b7d2f925 +ff19202c6b8d302e5431394196cf324bff933b5fff0e6dff0e4b6fff6e80 +bdfc15ff69383e3943395238444425ffa3c92a4824d6ff68aeed07150910 +0a140d08162b36394041404e493c25151e40607c956728212c3535272a25 +16090b1c1e1c48607584877a4d4861606a5e68533f24122c3c41546e6e7d +564025192425282624356d8899b8a8a38b47493735514ab68e64fffd1a2b +1b20381e567f9ae03e80a2a5fffff7f9d5f0ebcfc6abffe5fbf3f3f4f5f5 +f6f7f7f3f8fff6e4dbcacdd2cfcfcdc9c8d3df47c1bfa4b8baa5caf1d3c6 +c1fffef0f0dac4c6c8d3d9c0c8f75dbc919872545264245a364455413517 +2d33292c2d2726130b2717212d65202217192c3474926c6140394c152b46 +2f1f391a506b58691a2415212f241b1e122218131c323f3c331715100c0c +0b0c0b1604080104151f35184a45548ba8d5ffd18eb9ccecffffffab2e33 +2a2521100c1708060d0d10191d0e200bdef43840453f44423632393c3939 +3a3c3a3a3a3b3c3736373535383e43413b505350524c49424b4b4a53534c +4a504d4f524f494c5352504e4c4a49494854545454534f4a464c4e514f4a +9d9aa1ada6928d96a79fa1a4a0a3aaa8a5a2a3a5aaaaa49e9ea1a4a8a8a5 +a19ea3a2a5a8aaabadafaab3a8a2a19e81380e14150d0d171f201b191719 +1b20222423232220211f1d1a181a1c1b1a1a1d212c1630355c747967472a +18324b3f4064574f5da9b8b6b8c1b4b7bab9b5b3b3b4adb0b5b7b9b8b8b9 +b6b4b3b3b4b5b3b2ababacb0b5b6b3b0abaeb2b2b1b1b3b6b0aeaaa7a4a2 +a2a19b9593989b999a9e9f9a9898999a97908d7845221a18131b173ac7cf +26a883a0a48fde5cdcea18374d1d00000075cfec159f6a7054de47bc00e9 +453e0cdef468154022136cdff53938d9a88b5ac90069e1051fd8f06565ca +e800e69f00181d191212231d1514ed9dea06161689ed83806c1508212021 +31396692aec0d3d7d1cbaf894f333c3f4f6f8e91af0e2f27272e29263220 +2620425c7fb4dde6d9e9ac88b6cccba4341a120d2839404855697d8b9796 +7d523531322e2c2735426290abc5c6cea24a121216097f852cd896062f2f +3b73a7e0e1feb51e4143c3e3e3eaa374c8e6a6b583e9d9dbdadadcdadcda +dadadcdfe3e3ded4c9c2afacafb0a8a5b4cb04b69d96a7999fb4d0b3b696 +d9efd7dfd7c7b6b1b7bab2a5ba092c010a0000243d1f344b282f2c3f311f +2824302d382a292732242e20241b2d2c2b581a25676096b3a8aa8b687360 +3f25262d2b323728221d2658645d6752514b53688799938462442a1f1a11 +0e1314171d1f1c191311182f380b10012a8a60197aa3d2f5fbffef2b2f29 +26181a1c0f041c17111e1214100b095effb46c919191908f8d8b89898b85 +858a8b888d938d8d8e8f9091929290919495979ba0a4a5a4a9b0b3b2b2b5 +adb2b7b7b4b0aeaeb9b7b7b8b3adadb2bbbfc2c1c0bfbab2b6bdc4c3bc72 +6f76827a665f687971747771747b7a757270727777716b6c6f727676736f +6c6f6e6f727476787a757f78767879601f000b0f0908151e1f1a1917171a +1c1d1c1b191a1b1d1d1b1a181a1c1b18191c20261130334f697b6a3b1f19 +3644353d614f43498c9287848a8085898b888684857e82878a8b8b8b8c89 +878686878886857c7c7d81868784817c7f838383838587817f7b77747272 +716b6563686a68696d726d686565676a6d746c432c2a2d2f372e4edbe53e +bf9ab7bca7f673f0fd294c6c400d08148be3fe25b07b8268f55ed310fc56 +4d19ebff76265334257cedff4951f8c7aa77e5067aee0f27e2fc767ce3ff +0dffc2234249453e3c493f312bffb1ff203232a5ff988f7112000b04000a +01101f272528272b393e351a1327303c5c7b80a2042c2827312a262f1718 +0d2b3d5791d1e7d9d5701f1c1816231f3c38231b1b1d232c3d515f6d6f5d +38212226231e192936558298afafb8954b23344642bec466ffc0263d2d29 +5c96d7e4ffb5224b4fcbe8e6eca67ad2f2b7c897fdececebeaeaeaeaeaea +eaeaedf1f1ece2d7d0bfbebfc0b8b3c2d710c2a7a0b1a3a9bdd7babc9de2 +f8e4ece4d4c2bdc5c8c3bada366a4c57441d43461b2a3f1f26243c35282c +252f2c362a2929372a37292e223126133e0f23693b1c1517281a051a1c1a +1a2e3b32323321200f0016090011070c03000416232522130a0508090401 +0303020002070c0f101529300c212666c2751a72a1e2fff5f5c100121618 +11161d1406160a000a01090e0e0a5afb9843615e5e5d5d5b5959595a5454 +595b5b5e655d5d5e5f6061626260616465666b6f7475747980848383867f +848989868280808b89898a857f7f848d91949392918c84888f96958e4744 +4c5853413b44554d4d4d45464d49474443454848423c3b3e414343403c3b +403f414345444646414d47454c4f3701000c110a0c1823241f1b19181819 +1a19181718181c1e1e1c1a1c1e1d19171a1e2a173840617a877345271b37 +4b3e48684d37316a63534b51464a4e4f4d4d4e4f46474c4f50505051504e +4d4d4e4f4d4e4646494b52514e4b44474b4b48484a4f4d4b474643424241 +3d37353a3f3d3e4248433a363538404755543423272e323b3657e6f24acd +a8c5c8b3ff7bf7ff3051714614101e96eeff32ba858c71fd66d917ff5d54 +21f3ff7f2e5a3e2f89faff5658fbcaad7be90c82f71934eeff8084eaff11 +ffc4244148443d3b4a413531ffb8ff213333a6ff9b92771b0518130f1c0e +13222e333b3e434e50422014242b36587d86a90c332d2f362e262a0e0b00 +191e1c406b7f81a06f3d424859737a93794c2413171d283c505e6f705e39 +23252a292b2837425c8291a29fab8f5037577677eaef94ffbe11261e274a +507273b6bd527e81faffffffb586defebfce98fef2f4f5f7f7f7f7f7f7f7 +f5f8fcfcf5ebe0dbcecccecfc7c0cfe51cceb1aabbadb3c6dfc4ccaff3ff +edf4eadccecbd2d5cbcbff6fb39faf945c72653242553439314336252f29 +34313b2c292633263428302a3d30133d1531825d4b453844382438352b22 +313e3a3e42312d1e123128192a1b1f17131e3443423b26180d0e110d0b0e +0d0905060c1520222037473a718ed8fff284aeb9e1ffffffde1828292919 +13150e0318110a1611191b170f5bf8943d5549433e3c363433353a343438 +353130342f2f303132333434323336373b3d44464443484f504f4d4e4449 +4d4d4a4442424d4b4b4c474141464f53565554534e464c535a5952a19ea2 +a8a69c9aa0a09a9fa5a6abafa9a6a4a4a5a8a7a29e9ca2a8a9a5a2a1a2a4 +a5a7acaeafadaea3aca5a6a8a892562618121112120f0e1c1a191b1f2224 +25202021211f1d1b1a17181a1b1b1e20222b315774858f65451d33475c5f +46394b554f57a1b7bababfb9babbb8b4b2b3b5adb0b5b8b8b8b9bab7b5b4 +b5b6b6b4b3ababacb0b3b4b2afacafb2b3b2b2b4b6b5b1aca9a8a6a3a19b +9694999b999a9d9f9b9a9a9c9d9a94966848005c151607000b1854000009 +1e00000000001800170019191f1200000400d115d2367fd75405cf000831 +6d9e0428192530356566031589951461a2007bbd001a8ee100064a340044 +1a0b1716030e27080830081738091524006960005211010d2a292c3f4f86 +abbcc2d4d7cab7896a3f2b34384a678288ad2f2d302e2d2a262f1e242147 +648ec9d3dce9daa8a0becfd0a52e0f0702142b363d445163737c8b8f7950 +3732373b292a2d446b8badb7c8c69b542b2c3e45331bd0310e2f37497fc8 +e1e3f96e345ecbe8e7dea183b9d4f4a0c869e7dfcddadadadadadadadadc +dee1e1e1dcd7d4cebaacacb1b3bcc7008ba49895a8aaa5d6b9c28ad6e8e4 +dad9c6b4b3bcc2baaabc1b1d010300001a2b2945522c34292c2e1c241d27 +2330231c192e2f3e2d373916192e492f3c49708daaa8a99166716241333b +2d292c361d171b2d5980787e6e6a6b798a9fa8a3956f4d2e211b13101314 +161a1c1c1b161537323f1811052a8f5e176ca0cef1f8ffff312b1e161416 +2037303d28141c283e372a1423ffdf5b8d9093939291908f8d8884858989 +8485898a8a8a8a8b8c8d8d8c8e8f8f8f92959997969aa2a7a7a9adadb1b7 +b9b7b5b4b5b6b5b4b4b6b6b5b4bbbfc1c0bfbeb8b1b0b5bbbdba7875787e +7a706e74726c7278777c817b7371717275746f6b6a70767773706f70706f +7174767778796f7a757a7e7f6c35120c06080c0d0c0d1b1919191b1d1c1c +161617181918191916171919191a1c1e222a57727382694910264b62583c +374a51454586928c878b85888a89878584868084898c8b8b8c8d8a888788 +898987867c7c7d81848583807d8083848484868786817c79787673716b66 +64696a68696e74706a6666696b6e7c5b48066c2a3020091d2b6a1306253a +0e08190d152d072c093b383c2e06051704e223e04790e86516e00e19427e +af15392a36414575761731abb73683bf0e8cc7012096ef1122675008633d +334344343c53302b4f242b502533421e8678096118000010020008051926 +251e252e323a3131221f2c2f3855767fa2242329292c2e2a301c180f2b3e +5da4d3e5e0af4f1e1e1c16211c3a382512161d2021293a4752636d5b3b25 +242b2d1c1f233a5f7a9aa0b5bb9b684e5f7e907e5cff5d29372f3164b6d6 +e6fe6f345dcce9ebe3a88cc3e1ffb1d97cfaf4e1ebeaeaeaeaeaeaeaeaec +efefeee9e4e0dccabcbcbfc1c8d30297aea29fb2b4addebfc890dcf0ece2 +e2cfbdbcc8cec6bad6475b4d53421d38342843502b3325292f20251d2521 +2c1f1a192e3343354146241d1c301c38585b1b0e14221e0114191522403d +302f3219190f020f14041a1516110c0f151b1c1d10040003060300010000 +0000030a1012352e37161f2663c87b1f639ce2fff5f5d80112110d0e1522 +3c32391d020a1733342a131ff8c739625f6060605f5f5d5d575354585958 +575b5a5959595a5b5c5c5b5d5e5e5e61646867666a7277777a7e7e83898b +8987868788878686888988878e92949392918b8482878d8f8c4a494e5455 +4b4b5150484b4e4b4e504a464444454645403c393f4344403d3c3d414142 +45454644453d4744494e513f14070c080b10131313211e1b1a1a1a191714 +1416191b1c1e1e1b1c1e1c1c1b1b1d25315f7f899675521a2d4a625f4744 +52503b3169685a4e4f494d5051504e4e4e45474c4f50505152514f4e4f52 +52504f4848494d50514d4a45484b4c49494b4f52504b48484643413d3836 +3b3f3d3e424a453c37373a414a61483c016b2b3124132939772113314619 +1022121930082f0b3d3b40320c0c1e0cea2ce94f98f06d1de715204985b7 +1d4132404b5282832035adb93885c31494d10c2ca1f818266b540c663f33 +4242313a52302d522832542631401c84780a641e05081d140f1d141e272c +293641474c3f3a271f292a34517680a62a2b31303231292a10080015191b +4b637a938c634a404455758aa3844f1d11181c1f27384653636c5b3a2524 +2f3c2e2f2e425f728c8ea6b5a3817898bcc9b594ff5e161f1a2747646a75 +bc8b7489ebfffff9bb9dcfeaffb8e082fff9e8f5f7f7f7f7f7f7f7f5f7fa +faf7f2edece9d9cbcbccced6e10ea3b8aca9bcbeb8e9cbd49ce8fbf9eff1 +decccbd8ded6d1f778a4a3b29c676c5338505b394134343421271f28222d +201b1930344637434c3128182b224975824e3e38403d1f2f2d242a443d38 +384128251d162a3627362b2d2a292e393e3d392615090b0f0d0b0d0a0500 +0209141e23433f4c3b6087e4ffff8ea2b3e0fffffff51b27221e18111735 +2f3a250e1829433f321820f8c5385c4e45433f3a37383937353638332b26 +292c2e302e313033313232353335363b3d39383c424746464846484e4f4d +4948494a4948484a4847464d51535251504a43444b515350a4a2a1a1a3a5 +a6a69c98a2aaaaaeafa5a4a4a5a5a4a2a09e9ba3abaaa39ea1a5a4a7aaad +afafaeada0a6a2abaca89e6f43231212150f090b151414181c201f201a1e +21201c1a1a1c17191d252c323437515d6464484b18043c6e8265351b2b4a +504c4d92b0bcbababfbdb9b4b1b0b3b5afb2b6b8b9b9babbb8b7b6b7b8b8 +b5b3a9aaacaeb1b1afacafb0b2b3b3b3b5b7b2aca6a5a6a6a29d9b979699 +9b9b9b9c9f9c9b9c9e9f9c958f602433ea0245ea247190e34dcebd95b8b7 +b07dc0ab00a09b0007030007af7200e100e32e000006192a171b8b3c1006 +2d1621167c29281e290000009b8a00838e1638383f111d0606170f230d14 +1717180718280c2d0008000f1f295a3e13040001152026395878a2c0c3c0 +cccfbba468523a2f3134425b7a83ab5e243631292e2a2f2123254a699ddc +d4e4fab69babc3cfcea12b0d080305202f35353946525f738d9276503b3a +3e2c302a2b3e5d8cb4bec7ba8548271d2201128e002e2c2f576dc5e0fff6 +3051c1e1dfe2c9f1a8bba3bb9cd37bf4eddcdadadadadcdcdcdcdddddede +e0e0e0e0e2ccb7b0aeababae00438eaa9aaab0b3f3aaae84f8dadee6e1cc +b5b3bdc1b5a3ba3c09080200000d23354c4f33545f62251a241e2b2a3930 +30252f33403c576b070c2d26263a1b6687a1a8a89d696f65472e32253b49 +4e1e0c1a3659a49c9d908186949ea8aaa39a7a5430241f1a161717181919 +19181416331e442a1000045b530e4994c9f2faffff342b1e1317121e2729 +342111141e363f302103f6ff51818c91929291908f8d8887888b89838182 +8a8987878788898a8a8b8b8988898b8e89878b93989b9fa5a6aab0b4b5b5 +b5b6b4b6b4b0b5bdbbb2b6bcc0bfbfbebab4b2b4b6b9ba7b79777777797a +7a6e6a727b7b7f817771717272716f6d6b69717978716c6f73717376777a +7a79786c74727d807f754c2b1302060a05020612111113161716160f1316 +171515171914161a20272b2e2e46546361353c1a072f61886e30132a4d50 +453e788d9089888d8c8b878483848682868a8c8c8c8d8e8b8a898a8b8b88 +867a7b7d7f8282807d8081838484848788837c76757676726d6b6766696a +6a6a6d74716b68686b6d6f7553243efd1a5fff3883a4f965e9d9b1d4d4cb +96d8c010b8b90a2620181ec3850af207f13f0f10192a3c282c9c4d21173e +2732278d3a39304213111dbaa60894981c3e404d25392322332e46354045 +484935424e2e4a12211d2e373d67491c0d01020a0600000d152029261e29 +383b3e222926272c2b33496f7aa153192c2c282f2e301d16102c446eb9d0 +e2e37f3723232018211c38372408111f211b1b242f39506c735a37262830 +232a262739547ea2adbbb792624d51654b53c51f4c36274052b0d2fff229 +49bbdedce2c9f4aec1abc5a9e089fffeedeaeaeaeaeaeaeaeaebebececed +ededecf0d9c5bebcb9b7ba024f98b4a4b4b8bbfbb2b68cffe2e6f0ebd6c1 +bfc9cdc2b4d263434f5043242c32394f523a5b616222141c1621202d2424 +1b252d3d3b57721414241a2143365c1f0a141d2601101717193330424c4c +1c0e0e0a0e38242e2921221e1b1613161b14050000050402030301000002 +081015321c3c281b1a3e94751a4390ddfff8f5ee061211060d0e202c2b30 +170104102b3c302200eaf831585c5b5d5d5d5c5b5b565455585754515259 +58565656575859595a5a5857585a5d58565a63686b6f76777b8185878787 +8886888682878f8d84888e939292918d878486888b8c4f4d4d4d52545757 +4a464c514f5150464444454542403e3c384046453e393c40424446484848 +45443a41414c5151492c2114050a100d0a0d191818191a1a171713171c1c +1c1c20221f2123272e3232334a59696c495127103968866d361e3856503b +2b5d655f514d5051504e4d4c4e4e47494d4f51515455525152535454514f +4647494b4e4e4a474a4b4b4c4c4c4c504f4b45444646423d3d39383b3f3f +3f414a463d39393c434b5c421a38fb1a60ff3f8dafff71f4e4bcdfdcd49b +dcc311babb0c29241c24ca8c12fa10fa4717172031402f33a354291f462f +3c319744433a47171420bdaa0e9ca2284a4b562c3d2726373148353f4345 +4633414f304e18251b29373e6d4f23120707100f080e21272a32312b3a49 +4a4b2a2d272528262e476d7ba2571f34332e332d2b120600141a285b627d +9d61515347495574859e7f51191420221c1b232d384c676e563221243024 +2c2526354b7396a6bfc8b4938e9cb49695ee203213001e1d53679dc25292 +e9fdf9fce1ffbecfb6cfb2e992fffff7f7f7f7f7f5f5f5f5f6f6f7f7f6f6 +f6f8fde9d2cbc9c6c3c60e5ba2beaebec3c6ffbdc197ffedf3fcf7e2cfcd +d7dbd2c6ea8a829da595665a4944565944656d6c2d1e27212c29372e2e24 +303746435f7c2421251e356463915a41383a421c282d272238324a555a2a +1a1c212c5c484e443c3e3e3d3d3c39392c1807090e100e0f0e0902020812 +1e25402a514d5d79bcfffd8881a9dcffffffff20252218180b152628311f +0c11213b47382700eaf73252483f3e3b3634343635353839322821222e2f +2e2d2e2e30303131322f2f2f32342f2b2f353a3b3e4243454b4d4c4b4b4c +4a4c4a464b514f464a5052514f4e4a46464a4c4f50a1a29d999fa8a8a09d +9da7aaa4a7a9a1a2a4a5a4a19f9e9e9ea4aaa9a39fa1a5a3a8adaeafb1af +aba2a4a3aca8a09d7b54382218120e1014100f1013191c1c1b1b1f24221d +1c1d22242628303a3f41404a3e2d253a6f645cae945e2d181e2a2f474640 +7da6bbb7b5c3c0b9b3b0b1b5b7b2b4b7b9b9babbbcb9b8b8b8b9b8b6b3a9 +aaacadaeadaba9b1b1b2b2b3b4b5b6ada6a1a1a6a7a29b9b99989a9c9c9c +9b9f9b9c9c9f9f9b94926537aedd00548c00d300b44b574652c600b3636e +a71fd7bf19c0c64d53d60700ea00e613094b4d2f0008213036171f151f1f +3a39351c1a15418800ae6a0091640a2f420c240f3ecab75108201d011a15 +2d14131b1324e722351b3a824919010a16131636577599b6c8c7c5c7b7a0 +935b4737302f323e4c7381a5891e3633262e2e2e2520294d70b0e2def6fa +9ba5afc4ccc89c270d0b05001a2d34353439414e5a6e848975563b2b273b +38282336658da2b2b2a88f5c25150f2138053c26345e7fe6fcffa83bb5ec +eaf1b2b9b684aec2c7ec7333f2cfdfdddbdbdbdddddddddedddcdcdddddd +deebe3dad1c2b1abab021e445c6b96aa95a6b3c363f8dee2d6e3cebab4ba +bbb2a5b964000e00000001202e2c250d2f3f462b23302b3634453e2a2422 +21272e47570e122f13142c073a889eaca9a8736e69542820143c566d4a05 +173754c1beb5a69b9fa8adb1afaba1875d382826201c1b201f1e1b171512 +1325144e3f1503003450112d8cc4eefcffff3b2b261b1f11170e0f111116 +1a192008000b01a8ff74798b909191908f8d8c8d8a8c8a8b8585828c8b89 +8888898a8b898a89878586888a8482838a8f92979e9b9ea3a7a9aaaaaaaf +b7b7aeb0bab9afb1b8bebfc0c1bfbabcb9b7b8bb7879736f737c7c746f70 +777b75787a716f7172716e6c6b6b6c727877716d6f7373787b7a7b7c7a76 +6e72717e7c75725738230e050301050a0908090c0f11111010151a1b1716 +1a1e20202228303535333b33281d245e645fa187643716182c334b463468 +84918883918f8b868382848684888b8d8c8d8e8f8c8b8b8b8c8b89867a7b +7d7e7f7e7c7a82828383848587877e7671717677726b6b69686a6b6b6b6c +74706c69696c6e707a5a39b9ef126ea505e705ca636f616ee207cc7c86bc +33efdd38dde2666aea1a08fb09f4241a5e60400a1932414728302630304b +4a462d2c2c5da412ca83099f6c10354a1a382b5be6d3702b48492f4b465e +403b3e3240ff42542f43824717010d150800030d14201f23252a36393b46 +2a2d2c2b2a282f3d69799b7f132d2e252f2f2d1e13132f4b86c1d3e9d253 +3320232118211d39372506132227221e1f232f394d63685738231d1e3637 +2924335e8297a7adac9d744c5052606e3159312e4964cee9f69e2eaae5e5 +edb0b7b786b1c8cff47d3dfedbedebebebebebebebebecebeaeaeaeaeaea +f9f0e8dfd0bfb7b70e2a4e6675a0b29daebbcb6bffe8ece0eddac6c0c6c9 +bfb5ce852f524b422d223035332e17394548271a2520292737301c161616 +212b44591a1e2e121e432d392b10171a2c050c1a1d0c1b1c41596b48070c +0d0953423c332e2d271f1612141b19080000050604050c0a050202081015 +2712463d2021316d76232889d6fffaf6ef0d12180c13091713140f07090c +0d1806000c009efa5a545b5a5c5d5c5b595858575657575452525b5a5757 +5658585a5759575653555659535152595e62676e6b6e74787a7b7b7b8088 +8880828c8b81838a91929394928d8e8b898a8d4c4d49474c57594f4b494f +514b4c4c41424445443f3d3c3c3b4145443e3a3c4043484a4a494a46423c +3f404d4d4847352d220f0706080d131110111417171716181d2323212225 +2c2e2e30353b3e3f3c40372f2839717068aa8e62361b22393e4c3e244d5f +6152485654504d4a4a4c4c494b4e5051525556535254545554524f464749 +4a4b4a46444c4c4b4b4c4d4c4f4a4540404647423b3d3b3a3c4040404049 +453e3a3a3f454c60482eb5ef126fa90cf010d56f7b6c79ed10d3818abf34 +f1df3be1e66b70f12110ff12fd2c226566470e2039484e30382e383a5554 +5037363261a816ce8810a8771c4155233f2f5fead7732d48482d48435b3f +3b403544ff3f4f2e488c52220b121a0c000c1a2733303334384345434c2d +2c2a2726262c3a67779a801732342b34312b160300151e3a606789943d54 +554c4b5671809a7e541c1b2a2e26201e212a32465a5f4d2e191415303223 +1e2c567c95afc1cfceb297aaa9a594303d0700121d6a82a27b5aefffffff +c8cdcb95c0d4daff8747ffe7faf8f8f8f8f6f6f6f6f7f6f5f5f3f3f3f6ff +fff5ecddccc3c31a3658707faabda8b9c6d676fff2f8ecf9e6d4ced4d6cf +c5e1a6689b9e936c4d473f3b3320435154362b35303a38463f2b2524242f +364f662a2c362041756c7d714a3d364820232f3018211f47627856131a23 +2778675f524d4e4d47423d3d3e361f0a09101111111511080507111d2233 +205b626081b0fafd9168a4d6fbffffff2725291f21070d0d10120f13191b +27110711029ffa594c473e3c383433313338383a38322b25243232322f31 +3033323231322e2e2d31312b28292e3334373e3a3d404444434343485050 +4547504f45454c505150514f4c504f4d4e519fa19e999ea7a4979ca0aaa7 +9b9ea5a0a1a2a3a2a09e9e9fa4a5a6a6a5a3a3a0a4aaaeacaeb1aea9a5a7 +a5ada79c9e845651442b191514130f0e0f12161a1a191a1e23211c1b1e22 +2d2b2a2b2e2f2d292a16162da2fffeecb577371f1e2329263e483a6c9ab7 +b6b4c3bfb7b2b1b1b4b5b4b5b8b9b9b9bbbdb9b8b8b9b9b8b5b2a8aaacad +acaaa8a7b1b1b0b0b1b3b4b4b1aba5a5a8a8a29b9b9b9a9a9c9e9d999e9b +9b9c9f9f999280683c8d7223749000abaec734bcc44871255e619c8a9532 +e40013000ce24a3100f100f40018f16eef002e27176446142f2616203edf +410016db6c00e93600cf412353a9b51d0075bca0940b1202280015061b2d +0d007eae000f1953ac5b0909071111275b788eb3c5cbc9c7b68f777a5e48 +38312c303c406c7f9c9f223033272d2e2b272031557ac1dcedffe695c6ae +c1c7c397240e0f09011728363a383b3b40454d607e8d7753291f32383228 +233d5382a7b2b5b698661e22241f1f23214f8bbbfafff4829afae9edcff1 +a0a5cdf3ecd3461346e0f7d5dddddddddddddddddcdcdcdcdcdbdadadcde +e2e1d6c0aca21d1638a3cda3b5d2f4c56b04ebf3e7d4dacdbfb8b7b6b2ae +b9890012020004002f3b3238242e31323b3340353933423a26363d3b3a46 +463a202332160b272218869daba9aa7e696b5d33291e26345d60101c2f42 +bdcfc5b7bdb8b8b9bcb9b4a8926640302a23201e201f1d19151211111d14 +43330407082e53201b8abde7faffff4b272a24261418141509091818171b +1c151c0442ffc15c8e9696969593908e8f8e8d89898889888c8b8a898989 +8a8b888888868585878a85828286898b9096929396999c9d9c9ba2b0b4ab +a8b1b5b0b1b9c0c0c0c0bfbbbfbab7b7ba7476726d727b76696e737a786c +6f75706e6f706f6d6b6b6c7273747473717171767c7e7c7c7d7b76717573 +7d7870715b36382c1605020506040203060a0d0d0e0e1419191615171b26 +221f1f201f1b1817070c218becfeeca86a3d291b202d2d464a325a7c9188 +83928e89858383838486888b8c8c8c8e908c8b8b8c8b8a8784787a7c7d7d +7b79788282818182848585827b75757878726b6b6b6a6a6b6d6c6a716f6b +69696c6e706a5f3d99863d90ac0bbfc2de4cd4df638c40777ab4a2aa4aff +09301625f95e4404ff03ff0e29ff81ff0b403928755725403727314ff052 +0e29f28307ff4d11dc492757b1c3311092d8bcb12d3a2e59304738495733 +1f9bcc112c2956a14d0001060c01031a1b13201c1e28393e2e2f4a423b33 +2e27282e326377929518272d242c2f2a20101936599fbfdaf0aa39451920 +201a231d3b39270813242e302c2926272a2f3e5a67513316132b38332a25 +3c4d79a0abb5baa37f515f5e52473d294877a1e1ebe17289ece1e7caee9d +a4ccf5f0d94c1b4ee9ffdeebebebebebebebebeaeaeaeaeae9e8e8eaecf0 +efe2ccb8ae272042add6acbedbfecf750ef5fdf1e1e6dbcdc6c5c6c2bec8 +a125504842331c3e423a42303a38353a2f392e3027352d192b3233334242 +3c2a2f3620274f552235181916280c051a200d1c1f29375d601211080051 +4e3e33413a2b201916171a1b080000010302040c0c0703020711171f143c +320f263e697f3a1b87cffafaf5f01f0c1711150a15161a09040e0c0c151a +151d0239fbac3b5f5f6060605e5b5859595654535454555b595857575758 +59565656545353555853515155585a5f65626366696c6d6d6c7381857c79 +828682838b93939393928e918c89898c4a4c4b464b5452454a4c524e4243 +4742414243423e3c3c3d41424141403e3e3d454b4d4b494b46413f42424d +4a43473b29342a1506060a0d0c0c0d1014161616181d24262223272b3633 +2f2d2f2c29221d0a142b9ffffff4b1713b28222b39374947254258645449 +57534e4a4848494a4b4d505151515557555454555756535047494b4c4947 +45444c4c49494a4c4d4f4e4a44444848423b3d3d3c3c4042413e47423d3a +3a3f444d524e3595853c91af11c6cbe656deea6e95497e7fb8a4ab4cff0c +341a2aff654b0cff0cff1631ff87ff0f443d2f7c5e2c483f2f3959fa5c18 +30f8890cff5318e5543363bccc381496dcc0b52f3a2d562d443547563421 +9fce0c27295daf5e0e0e0c1002052025253333323a47483532483f352d29 +23252b2f5e749093172a312b323328180001192648577197742e6b514c4c +556e7c98815924223239382e2921202124324e5a4426080721302e27223a +4d7ca8bbd1e0d1bfacb89d7146220011324c7a889c5bb3ffffffe1ffb0b4 +dcfffce55a285bf8ffedf8f6f6f6f6f6f6f6f5f5f5f5f5f4f3f3f7f9fdfc +f0dac4ba312a4cb7dfb5c7e4ffd87e17fffffbeaf2e6dad3d2d3cfcddbc3 +609b9e96774d5b52474c3e4848464a404b40433b49412b3c434243505049 +363b42395995a6778457403244251d2d321c25243040696c1e1f1d167575 +665a665f554c484544423b220c0a0f100e0f15120905060f1b232b204e54 +4d83bcf5ffa85ba2cff4ffffff361f2a2525090e11160b0a17181a21251d +22053afbab344b413e3a3632313237393834312d2a2a3334353234323534 +3331332f302e32332e29292d3031343a343536393b3c39383f4d4f46434a +4e47474d525250504e4b53504d4d509fa2a19ea2a5a0949a9fa8a2979da7 +a1a2a1a1a0a0a0a09fa7a6a5a4a5a4a3a0a5abadaaabb0aea8a5aba8ada8 +a2a78e5762634c32261b1213100e0e111415130f121313111012141b1a18 +191c1d1c1c282a3c4ac1ffffe3804f3638220f2034384c3a618fb3b4b7bd +b9b4b2b3b5b5b4b5b6b8b8b8b9bbbdb7b6b7b8b8b6b2afa9abaeadaba8a6 +a6b1afacacaeb1b1b1b1aca7a5a5a19a949b9d9c9b9d9f9e989d9b9b9d9f +9e9a918e581f0a1407189a00041000000500000000000000003800320010 +1c00440e4a02e900f40000da8dd70d2c1944f2d20026241a6a53eaea0086 +ed0000f02000f72d475be5e30c1557e4db4b00271e12160d0f0d00163be3 +986f1f28332c13130b0b182543738ba4cacacbc3b79666505d634d43372d +2f39365f7b91a0342a312a2a2f2b2b213a618acbdcfaffc8a4e7b2bfc1bd +942410130d011526343b3b3b3b323d4148618086744d2c272d383b2a2c38 +5983a3b3b4a68c502406322419285795d6edf0f0a9f0e8e3f4fde61b3c74 +7725353f4c74f8c4efdfdedfdedfdedededadbdddedfdededdd8d5d6dbdb +c9ac94454912054e91c099543c2226f7d6c9f4e0d9cfc6bcb5aeabb7a300 +1102000a001d2c20362e33343839323f36362b38300a2a3330293c332227 +272c190a244010779aa5a8a48c62675c3e38402f292e2d26282e35aad8d4 +cfd1c6c1bec0bdb5a6987048362e24201e19181b1613100f131b223c3401 +01061b3c220582b4e4fcffff681f2327241b1c1e342d292b141016151821 +0f04ffff538b93959594928f8e8e8f8c87878a8c8a8a8888898989898986 +87868583848689878382858686898e8e8e8f919494939193a1a9a4a1a7af +b2b1bac1c0bebdbcb9b8b5b3b5b874777572767972676d727873686e7771 +6f6e6e6d6d6d6d6c7574737273727171797f827c7c7e7c757177767d7873 +786334444631190e0700030100000104050603080b0b09080a0b100d0a09 +070706051117303da9f7fde370423c42210d243e4352385275918b888f8b +87858584838387898b8b8b8c8e908a898a8b8a888481797b7e7d7c797777 +82807d7d7f828282827c777575716a646b6d6c6b6c6e6d69706f6b6a6b6e +6e707a5122192a2136b6101827060d1d0718101a1707140f4d074e1b2c35 +0958215b10f705ff0a04eda0e91f3e2b55ffe30d37352b7b64fbfb0e97ff +100fff3405ff334b5fedf1233274fff768154f4a434a41433e2c3c5effb6 +903a3432200002000007070f1e1713271e232e3a371f234054463c322627 +2f2d587488972a222b28292e27221022406aaec2e1e577325a141d1e1a24 +203e3b280712233036352f2e212726283d585c4e32191a25363c2b2d3655 +7e9eafb2a69b7a59395f442c2c4e82bdd4d8dd99e1dcdcf1fae31a3b7379 +293b45547bffcbf8ebecebecebececece8e9ebecedececebe6e3e4e9e7d5 +b8a04f531c0f579ac9a25e462c30ffe3d6ffeee7ddd4ccc5beb8c1b6264a +444038192b32273f393b393b3c3340353328332b06262f2e273c33252e30 +322a325b7a22331f14131f160012180f233b2f2d302d261c080040534139 +483d291c151211131a09000000000002040502000007121a1f2235300b1e +39567042067fc2f4fef7f141040e0f0f0d171f382d27240c08101318220f +00f7fa385c5c5f605f5e5a59585855504f54555556565657575757575455 +545351525457555150535455585d5d5d5e61646463616371797472788083 +838c939391908f8c8a8785878a4a4d4e4b4f524e40464950493c42494342 +4141403e3e3e3d4443403f403f3e3d484e4f4a484b47403f45454d4a474e +41213a3e2a150c0801060606060b0e0f0f0d1116161615191c211e191616 +14130f17193446b9ffffeb7a493a412718304849522c3d54645750544f4c +4a4a4a48484c4e505050515557535253545654504d484a4d4c484543434c +4a4745474a4a4c4e4b464445413a343d3f3e3d4143423d46423d3b3b4047 +4f613f1914282036b7141f2f0e1727122319231e0c1a135009511f303a0f +5f286319ff0eff120cf4a6ed23422f5cffea143f3d33836effff189fff17 +16ff3b0eff3f576bf8fa293678fffb6c174f4940463d3f3b2b3d60ffb689 +3334382e13140a090d09132520223a343a41483f23203c4d3e342c20242d +28526e839228202f2d3134281b00061d3150547c964c31854f4e4d536c77 +96815d2725343e3d392f28191c1b1d314c504329121423373e2f2f375682 +a5bec7c0c6c6a568724116071736617080a589fffffbfffff62a49818635 +4753618bffddfff7f5f7f5f7f7f7f7f3f4f6f7f8f7f7f6f3f0f1f6f5e1c4 +ac595d261960a3d2ab674f3539ffecdffff9f2eae1d9d2cbc9dade669ba2 +9a8351504a3a504d504d4e4d455247463b473f17353e3b34483d2e363940 +486faedd8488603d303a3014292d1f2c4137363c39322a1d0c647e6e6772 +67584d4946433f3f260f090c0b0a0e0d0b0502040c1b24282c4551487ab6 +e0f7af479cc5f1ffffff56172125200d111a372f2c2c17151c1e20271100 +f8fa31483d3b38332f2e31343936312e2e2c2b3133333434343434313231 +302e2f3134322c2d2e2f2d30343432333336363331334148433e424a4b48 +505552504d4c494c4b494b4ea1a2a2a3a6a49d969e9fa4a09ba5a99da3a0 +9e9fa2a3a2a0a6a8a8a5a2a1a3a3a6acaca6a7adaea6a3aca9aba7a7ad91 +5e6469625444342b221d1714131413120d0d0e0e0e0e0d0e0e1114171c23 +2b2f36474b4da2ead7bd9948202f2b1b1d202f4f3b5885adb2b9b6b4b2b2 +b5b7b5b2b5b5b7b7b7b7babcb5b4b5b6b6b4afaca9acafaeaaa7a5a5afac +a9a9acaeaeaeaaa8a5a3a19d98949b9e9e9b9da19e979e9e9d9fa09f9a91 +89312d1912290c02141a32007b8969560233379091256700880010003ca1 +9d380ee000e9000ed99c8a000a2428d13b062b0f1b4a41d3550d8ea3a000 +d31800f7282212a86400141c625f0b2a0c0c021b041617191c00403d1b18 +2f18150a102c21334863879fbad2c5c4b1916c483c455e5050462f2e372f +4f7486974e28322f2a312b3125456e9acee9ffffadbdfdb9bfc0bd922510 +130d01182a333736373a333a3c3e495f727a724b3328323e31332e34517e +a9bbbcae8b4a133b252839537cdbfcf7dfc6f9e4f3f2d1202a190d031534 +423f60f7d7e2e1dfe1dfe1dfdfdfdcdddcdddededfdfe9e4e0e0e2dccebf +062956442c11160340464255f1eeddd3e5e1dad5cdc0b0a6b4b2050b0200 +0d00253b27372d30383a2f28382e2e232f270e2f383a263732332f282812 +0818331062929daaa09b5d625c47374b303c2c201e242a3597dcdfe0d6cb +c5c1c1bdb5a99f7a56413428232317171c1a131010131e363d4c1a03030e +2a24007eabe1fcffff891c202f211b18234a45443e1c1319695d5d380dd5 +ff62838d9093949391909093918c8d8d8f8986888a8c8c8c8a898b8b8a88 +8686888a898584868785868a8d8c8c8e90918f8c8c939a9c9c9fa6acabb5 +bdbdbbbcbcbab3b3b3b6b975767677797770696e6f736f6a74786c706d6b +6c6f706f6d74767673706f71747a82837b797e7c746f78777b77787e653a +43494538291b130d09030000010203020405040404030200010203050910 +141c313c3c86d2d4bc8a3c263b2c1b232c3d593c4d6e8c8a8c8987858587 +86838087888a8a8a8a8d8f888787888886817e797c7f7e7a777676807d7a +7a7d7f7f7f7b787573716d68646b6e6e6b6c706d68716f6d6c6d70707277 +2b34292b462a202d32491194a2816e1a4b50a9a83d7f11a4122c1853b5b0 +491cee08f7041fecaf9c0e1c363ae34c173c202c5b52e4661e9cb1b105e6 +2b03ff2c2416b07206313b7b78284c343a344f384a484744165f5b382f3b +190a000016070e1114191718272231342d251a20365347433924242f2a48 +6d7d8c431e292a272e2526122c4d7bb5cfe3c8493761151b1e1b27213e39 +260411233032313132282c2823283a4b524e2b1a15273930322e344d7ba4 +b6b7b6aa743c5d3c33354569c3e4e1cdbaf3e2f2f1d3222c1d110a1c3c4a +4969ffdfebebecebecebececece9eaeaebececededf5f0ececeee8d8c910 +335f4d351a1d0c4a504f62fefbeae1f3efebe6ded1c0b3b9bf2b40413a36 +192f3e28383131353b3834443a372a352d14353f412d3e3a382f282a2538 +556f262a2310151a25000c121019402f402e201c1809003157413c403727 +1a12100e111c0d000000000003000202000005101a22363649241e354964 +4d0079b6f0fef8f163010911060b11224c45423b160d16685d5e370bcffc +4b56565a5e5e5d5b59585b58535255555252535557575755545656555351 +51535557535254555354585b5b5b5d5f605e5b5b626a6c6c6f777d7c878f +8f8e8f8f8d858585888b4e4f4f505250494248474b463f494d4143403e3f +4041403e434543403d3c3e4049504f48454a473f3d46464b494c54422232 +3a372c1e140f0a0804020405080806070a0c0d0d0e0e0d0c0e0e0f121719 +1f333f4495e2ddc29140243931253138465b343b4e6357554e4c4a4a4c4c +48454c4d4f4f515156585150535454524d4a484b4e4d494642424c474444 +4749474947474442413d38343d40403d4145423c47433f3d3e444a535f1b +2c262844282031364f179ba98b78245557aeae418113a716301d59bcb751 +25f711ff0c27f3b5a010203a3ee7531e432734635aec6e26a5bab90ced32 +0cff383122bb7b0c353e807d2c4e3438314b344645454418625b33293b1e +18090e231416171a22212537354344392b1c1d314d403d3320222c264267 +76863d1c2c3030372922010d243a51608282293e91544e4f546b7593825e +2523333b3935312f22231f1a213244505030201b2f40363730324a76a0b3 +b4c3d9a6505f342218161d698a98a5aefff8ffffe02f38281c1426475755 +78fff2fcf7f4f5f4f5f5f5f5f2f3f5f6f7f7f8f8fffef8f8faf4e4d31a3d +68563e2327155359576afffff3eafcf8f5f0e8dbcdc6d9f3769caaa08e5e +606146544c4d505049425248463a453d2241494933443d3b2f2a36457ab2 +dd9383673a32353f13252923254837493a2c29261c115682726f70675a4e +49464240442d170f0c09080e0a090503020b1a242b4046685f79b0d3e9b9 +3f97baedffffff78141d29190c0b204b4747422019217065633c0ecffd45 +41373634302e2d3033383a3532302f2b2d31333535353332343433312f2f +313334303131322e2f33363333343635333030373c3e3c3e4347444c5351 +4d4c4c4c4749494c4fa1a0a1a5a5a09c9aa4a0a29fa0aba995a39f9b9ea3 +a6a4a0a4a9aca7a09da2a7a7adada4a5acaca6a2adaaa8a4a8ae8e685e61 +6b6c605351393128221e1d1d1c19171617181817171b2025282e3540475d +614658b3fff3d1b159292f24151b20284d3b507ca6adb7b1b0b0b3b7b8b5 +b1b5b5b6b6b6b7b9bcb3b3b4b5b5b2aeaaaaadb0afaaa6a5a5aeaba7a7aa +acadaca5a5a6a5a4a29f9e9b9f9f9c9da19f98a19f9ea0a2a09a917a4d20 +211010171406969311ea2928d956de9b943a08ee00e818533b6c7e69952a +c708c401160000001324226e1a12171836273a5e1d0d2102000a00f10100 +f82133274824212201000013121d15120b18140a1216030000102626000f +18181827436381a1bac7bfb5b39969473a363a57535c53352e342d406f81 +8f6026313329322d362a4f77a7cbf5fff5a3d0ffc1bfc1bc932610110c02 +1d2f36302d31373c383437384053677b604629222f2f3a2a2e3b587fa4b6 +b0a2895535282f415dace5f1f0dbece7e5dde55314061324593a0d2d92da +f1e3dee1e1e1e1e1e1e1dfe0dedcdadadadcdddbdededbd9e0ecf3ac2e27 +2525161c3136293c74d8dde6dfdbd9d9dedfd4bfb0b2b70c0600000d0010 +3a2a3a32353e39362c3b302a1a241b032b404e302f242f40312f0e090a15 +10508b98ae9fa85c625e5635390e3e51610111213588dae1e4d5cecdcbc7 +c3bdb5a885624e3f302a2b1f21242018131014122b23451900000f323803 +87ace1fcfeff9b1d253920190f19382420240a0b154c2a2e0e0094fdaa81 +8d92959898979692979a949294908886888b8e8f8e8c8a8f8f8e8b888789 +8b8a8787898987878b8c8a898b8f908e8b8e8d90979a9a9da3a2adb7baba +bdbfbfb4b6b8babb7574757978736f6d7470716e6f7a7864706c686b7073 +716d72777a756e6b70787d85847b777e7d746e7b787874797f62433c3f4b +4d4136351e18110a0908090a0e0d0c0d0e0e0b080a0d0f0f111720283f47 +344594f5eecfa04d2f3b2515232c395b3d496786878c848383868987837f +87888989898a8c8f868686878784807c7a7d807f7a7676767f7c78787b7d +7e7d7675767574726f6e6b6f6f6c6c706e6772706e6d6f7173746a4a2a34 +2a2e373220aeab28ff4240f16ef6b4ad5120ff08ff346c5280917aa638d5 +16d21229050511253634802c23282947384b6f2e1e320f0d1804ff1203ff +25352b5032383f20190f30354543443f4c483b403e261219293932010c0c +040000050f171f221d19273d3920191d26304941473e23232f293b687785 +561d282c262f232915325586b6dee1ad2c3c5e161b1f1d29233f38240211 +26302d2b2f3638302925222634445338250d0e2228382a2e3a557b9dadb1 +b6a7714d36323a4d99d0dcddcfe7ebece4ec5a1b0d1a2d6245173a9ee6fd +eeeaebebebebebebebecedebeae8e8e8eaebe7eaeae7e5ecf6fdb638302e +2e1f233a3f334981e5eaf3ede9e7eaeff0e5cfbdb5c2303b3e36361a1a3a +29372f3134363f3e4d403a2730270f354a5739392e3337272c1f3a495027 +24280f1918310009101911280b435361000304002a573a3536342a1f1814 +14191f110400000000050103040200040f17122a1b4022102f4a72660880 +b3ebfef3ee7a0209170006061538241f230708134b2a2d0d0092f9995756 +5c60626361605b5f5f59575a5651505356595a5957555a5a595653525456 +58555557575555595a58575a5e5f5d5a5d5c5f666a6a6d74737e898c8c90 +929286888a8c8d4e4d4e52514c48444c484845444f4d39433f3b3e414442 +3e414647423b383d444b525047434a473f3c484748464d553d2623263438 +2f262915110b060607080a0c0b0a0c0f0f0f0d10111212151721263d4634 +49a3fff5d4a8512d392a1f303a435e38374a5f56574b484a4b4e4d48444c +4d4e4e505155584f4f525353504c48494c4f4e494542424b484242454746 +474244454444423f3e3d41413e4145433c4844403e40454c56533b223027 +2c343021b2af2eff494afb78ffbbb25724ff09ff387158879882ae41de1f +db1a300c0b15273a3884302a2f304e40537736263a1816210cff1a0cff31 +42375b3b3e43231e1434374541413b4844383e3e28151925333004131810 +070a141c232b2e2823334944291c1f262e463d42391f1f2c2637626e7c4d +182933313a2b230010253f4d6e8972164a92585051556b72918560242537 +3c36303234372e27252429394a5c412e19192c303d2c2c354c6f8d9cacce +bf723f271f1e1c4a758ba2b5e1ecf2eef66423152034694b2043aaf4ffff +faf5f4f4f4f4f4f5f5f6f4f5f3f3f3f5f6f5f8f6f3f1f8ffffc042393737 +282d43483c5189edf2fcf6f2f0f4f9faefdcd0d8f87e9baba192644f6049 +544c4c4d4b504c5b4f493740351b3f535e3e3b2f323225353d7daac4977d +693937364f1327282b1d3212495f6d0b1218164c83706e6c686157534d4b +4949341f16110a09100b0d0904030917201a322a5e5d67a8d2f6d54ca1bb +eaffffff8b131f3015080114382624290e111e533233120293fa92413736 +3633313232323a3f3935352e2a2c31343738373533383837343130323437 +3434363432323635333232363635323533363b3c3a3c403d464e504e4f51 +51484c4e5051a69e9ea6a69b999da6a39f9ea2a2a09ea29fa0a3a19da1a9 +aeaba6a3a3a6aaaaa7a6a6a5a7a7a7a7aba5aba6aba2aa7a6b5a68776a62 +666459534c453b332a232e2724242424282f3335363b4e636f7090764d3f +8dffecd2a87c45302b1c161e234b484d6aa2abb2b9b1aeb2b7b7b4b3afaf +b1b3b3b2b1b1afb0b1b1b0aeaba9a4a9adaca9a6a6a7a8aaa7a3a4a9acac +ada6a2a29e979599989da2a4a39f9b9a9d9a9b9d968e8f90723b1b1b1a13 +110f009c3800638da3bc19df204abb4ceda1bf2872492877d25e508e259d +0009484e1e1c23261c1b23131e240d183605151194ba7d00f10000e70927 +3d4602210695bcd311181a11160d1210151c0f62dec6581e0a01020e0f2b +446b91a4aab7c7c6a9865946463a2d2649636c753a2d2c33375f898a3e46 +2d322d30383d405588b6d8faffc5b4e4e2dcd6d1c6952512141006162a38 +273f2d2f35232b282531364961726b4926212c3434323534607fb3b5beb5 +995e2328667fcbd8f7e3f7ddead7d6f3f7f56b56e1f5b800adf4ecd2e3d5 +e3dde5d9eadce0e5dddddddddddddbddd5e6dedae0d8d4e2f8edc0a30089 +ec9c1335c1eeeae7e2d7cfe7e3dae7ded3dac1c81c0000040b0024292742 +432f3a422a282c2b2a27221b1426312e2d302f2e3d433514170907143f89 +a5a7a2a1636166524133223b3969b622242a4dbcd9ded4e2ccccdecec0c0 +b3a17e57413c382d2d2a2d2e2214111b132634442c0601051d2c0067abdb +f2ffffbc142d25291c17191112090e1b0e071a160f0a0617feeb81a39e9d +9d8c94a89e9995969a99948d8b8e92918e8e92978b8d8e8e8c8b8b8b8a87 +84868c9092918a85868d908d8c8f82878e929395979a9b9ea6afb4b6bdc5 +bdb8b5b6bb78707179796e696d75726e6d6e6e6c6b6f6c6d706e6a6e767c +7974717174787b7d7e7d7c79797878797379767b737b4e45374556484046 +463d38322b231b140f201b18171717191e201e1b1e2d414a4b6f5a392b6d +ebe5d0976d4b3c2b1a1c2a335a4c45568485878c84818588868281818284 +86868584848182838382807d7b74797d7c79767677797b7874757a7d7d7e +7672726e676569686d7274726e6a696e6b6b6a66616975663c262f343131 +2f0ab6520f7aa4bad32ff53761d465ffbbd84189603c8ae36c5e9c33ab05 +1c5b61302e35382e2d35252f351e2947162622a1c88b04ff0505ef0d2941 +4e103823b4d8ef2e3b423f4741464446483585fde0682a190d0709000101 +101d1d161722313c361b1c2d2b221a34474a56201e273232587f80343d24 +2b272a2d2e2a386597c6e2dc713042332c2f2f232621413e2c04091f3024 +3d2d32382329251c2629323b4743260b0c1d2b303234345c78abb1c5c3a7 +682724596ebbc8e7d7f0def8eae4feffff7964efffc70cbbfffadff2e2ed +e6eee2f3e7eaefeaeaebebebebebebe1f2eae6eae2deecfff6c7aa0790f3 +a51c40ccf9f4f4efe4ddf5f1e8f8efe4e7c4d4402e3d4237192e29243d3e +262b3931393c3b39362f26203039353235332a2c302c1f44443c2a1b3324 +161c2900061311171e1f403b69b0140b00003f2d262f4327202e1f172225 +2417010002060204010205010009191021293e311e2f436360075dafe3f6 +f9f5a000100108070c130f11080d1a0d0619150c090518ffe0586e6a6a69 +595f72655f5a5b5e5d595353585c5b58585c615557585856555556585552 +545a5e605f5853545b5e5c5a5d50555c616264676a6c6f778186888f978f +8a87888d544c4a52524741454d49454446464440423f40433f3b3f474b48 +413e3e4145474b4b494845454242464048464d475127211725372c252d2e +2825231e17110906150f0c0e0e0f14171a181416263741426856382d7af9 +ecd39d70493a33272c3a40614b383d5e5654554b4a4c504c474646494b4d +4f4e4d4d4d4e4f4f504e4b4944494d4c48454546454744403f4447474a45 +41413e3735393a3f444647433f3e423f3d3b38374458502e1e2d312f2e2c +08b7531380aac2db3aff3f67d969ffbcdd468f664391eb7567a53cb40d23 +62673430373a302f3929363c25304f1e2e2aaad1940cff0d0efa19364d59 +193e27b7dcf3323d423d443d424043473687ffe16726160b0a0f030f1222 +302e242329373f392020312e261c334448531f1b24302f5276762a362533 +3538352912102d4758748d4223576a6d65615a686e93906d291d303f2f48 +35393f2b34302d373d4448504c2d1213243031302f2a506698a5cbc6964d +1009363663699ca7e6e3f8e8e7ffffff7c65f2ffcc13c4ffffeffff2f6ed +f5e9faedf3f8f3f3f6f6f6f6f8f8edfef6f2f4ece8f6ffffd1b40f98fbac +2346d2fffdfcf7ece6fefaf1fff9eef8e3ff8a8aa6a990605f4b3f54543b +3e4a43494c4b4c494038303c443d38383427252a313b85a2ae9972724d35 +3d4c20292d25252726464775be231e1019696562677b615a6c5a5055534c +351a0c10110c120f0b0b080614241728375a6b74a7cae7ce4d80b8e5ffff +ffaf0a241b1d0c0a1512160d1320150e211d130f0a1affda444e433f3924 +2d433a3938393a382f2b2e3438373434383d313334343231313437343133 +373b3d3c352e2f36393435382b3037393939393a38393f464a4a5159534e +4b4c519e9a9da4a2979498a09e9c9da2a2a19ea5a3a4a7a5a2a6adaba9a6 +a4a4a7aaabaaa8a8a7a7a6a6a5a9a4aaa4a9a1a56f6c5f646e6c68686665 +625e5956534e49403b3837332c2a2d3f4b57647485929490784b3f7efffa +ddba935834271e1b1b28514d4d66a0aaabb4afadb0b5b2b2b2b1b0b1b1b1 +b1b1b0b0b0b0afaca9a6a4a1a4a8a9a6a5a7a9a8a9a7a2a2a7aaa9a8a2a0 +a1a09b9ca096999c9d9b999898a3a0a0a09b918b876d38191917110e0e56 +dfbb30bec24baf99c05db3d40500071a01011854a4a8028e5d66780477a5 +ad620025150b57111419081c107a973e0ee2413900f10025f3003535ea80 +000dd64eeb1c28131017110e190f0d1c56b352280000020a191f3b65839d +adb6bfc4b6955541402c234a2e455c6e616842332735477e6e304c2e342f +323940465f93c1d9f0ff9ec1e5f3e1cecfcda435170c000c20172c1d1120 +171d11201e1313111f435c6755341c1d2837211e2144678ca1c0c9be9249 +3158a3daedfde0dad9d9d7dbdee0e7836cd2ea992da9e7e4dee0e4e2eee3 +e5dddce6d4e2dfdddcdbdad7d9e3dad3e3d6e5dfe8dde9f4f90ddcf9ee48 +5cf8f2ebd3dfeaeed8d6ddcdd3f0ddd9de4b0000000700013c2925213e3d +3531271d0f09101d241a1d22292d313740323b341300020e14365e99979f +a87d686655413c3735222d3c1026344cc8e4e1cae0d8e3f5e0cdc4beae92 +705851473c3a3739382c1d19200f2135402c0003040f200063acdef2fbff +c5182a262d1f181916241009170e160e2308120f08e3ff92a5aba5a2a19f +a9a2a09c9b9c9b979292959897928e8f918c8c8c8b898a8d8e8b86838385 +888a8b8e898a9092908f9183888e91929395979799a0a9aeb0b7bfbdb7b2 +b2b6706c6f77756a64696f6d6b6c6e6e6d6a72707174726f737a79777472 +7275787c80807f7c7978777677757a767a757845463d424c4a4545454642 +403d3b3834322d2a2728221b171728313a434f5f696e6e5b38295de8f4d8 +a7845e3e261c1e27385f51455282848186827f8383817e7f828384848484 +8483828282817e7b78767174787976757779797a787373787b7a78727071 +706b6c7066696c6d6a68676774706d6d6b66676d623a262f3431312e73f9 +d54ad6d962c6afd674caed1e15213318182c67b5b6109c6b7489158ab9c2 +740b37271d6923262a192d218ba84f1ff04f4a0cff0b32fb003739f28e15 +2af56aff394b3b3e4843404a3d373f75d0673206070d101000010c0f1315 +1b232d3847251f2c231e401d2838453b4a302d252f3f73642641242a272a +2e2f2e4070a1c7d7dc41363d402e222826312d453a200f160f281e16271f +281d2c291c1b161a28374235150209192e1f1c204160849abecac0934529 +4c95cee1f3d8d8e0ecf0ededeff6937ce2faab3fbaf8f4eef1f1ebf5eaee +e6e5efdeececebeae9e8e7e7efe6dfefe0efe9f2e6f2fbff14e3fff55167 +fffdf5dde9f7fbe6e3ebdbe4fee9deec712c413f372110412b241e362f2a +37372b1d171e282e2123272c2f31363a1e26291d273a3c261d17200a1b30 +130812101322323a252b3402140f035338231e3b2e354530212127291e0d +060a0b040301010301000918081727362e142d425c5a0454aae3f6f9f8ad +000d0007080a1011220f0a180d150b1d030f0e0ce8fb6d727772706e6c74 +6c66626160605c595b5f62615c58595b565656555354575a565451515356 +58595c57585e605e5d5f51565c5f61626467676a717a808289918f898484 +884c484b504e413c3f4644424346464542474344474340444b4846413f3f +4245484e4d4b4945444140444149454c484e1b21181d27272525262a2928 +27262523201c181515120b08091a222a323d4c555b6255322b66f4f8dcad +875c3d2e292f374768523a3a5e574f524b4b4c4e4945464a4a4b4b4d4d4d +4c4e4e4e4d4c49464441444849454446484546443f3d42454647413f4040 +3b3c40383b3e3f3f3d3c3c4842403e3d3c43524e2d1f2c302e2d2b71f8d4 +4bdadf6acebae17cd0f2221622381e1e336ebdbf19a5747d911d91c0c778 +0d39291f6b272a3120342893b05727f9585213ff123bff0c4445fd971b2e +f86eff3d4d3b3c45403d473b364178d46a330403090e11060f20262a2a2b +30343b43211e2e282548232c384338482e2d262f3c6d5a1c3b2533363936 +2812112e4a5970991f3156776f5a5c5e727a9a90693a2f273f32293a323c +3346453d3f3c3a393f493a1a050b1c31221d1e3c587992bfc5aa7428051a +4e6a7dacb4ddf2f0edeff0f2f9937ce2faad43c1fffffdfffff4fbf0f5ed +ecf8e7f6f5f6f5f4f3f4f4fbf2ebfbeaf9f3fceffbffff1cebfffd586dff +fffee6f2ffffefecf4e6eefff7f4ffb07fa2a089603b5e40362f453c3a4d +514638343b44493b3b3b3d3c3b3e3e1d252d366391ab926e51492a40563b +2d2c23202d39402e3843132421207d72635a756c72856e5d585a54412a1c +1a171116110e0d0a081423101f3451676aa5c7e0c84c7bb7e6ffffffbb10 +211a1e0e09131527140f1d151d14270a16140fecf55a5352473f3937423e +3e3d3c3b38302e34393c3b363233353030302f2d2e313534312e2e303135 +34393233393b39383a2e33373a3939393936363b4245474d55534d48484c +9999a0a6a29694999c9c9fa1a4a4a3a1a6a4a5a8a7a5a8ada6a5a4a4a5a8 +ababadabaaa8a8a5a5a4a3a6aba1a6a2a15f666662646e6e686868676565 +666764625b57565550453f3e5164798289919a9c927d4a3e5ff6ffe3c0a3 +6837241f1e1b295250495e9eaca9adababaeafabaeb1b2b0b0afafafb0b0 +b2b1aeaba7a4a1a09da1a4a4a2a3a7aba9aaa7a2a2a7a9a8a3a09e9e9e9b +9c9f999b9c9c9a9a9b9c9e9b9c9f9e978f8764341716140f0e0c08150700 +1100000000000000000032120c1b2215001d3600db189a58003a83d05a05 +242b73ea32231e221e45baef5a00a7a0b207ef0001f7022983f6e5000176 +88ea1816101e230d1418151a1421cedb421a0802041934588396a6b2bbbe +b39656412f2c341d34394066836f71362a403c3a785a3456383230343a41 +4d6ba2d0e6f5ff79d2e5ffe7cfd2d7b444210e0000081b120c1021131001 +0f1618221b242a3d515b4a2c1f21231f353328405793abc8d8ce895340ad +e1f4d2e8fcdfd4c5dbcfe1ebbc94b2b1b299c7d9dcddd1dfd6f4e3dff9e6 +f8e3e4e2e0dfdedddadccbeef7ddf7ead5d2e9dce5ed1b807a584a4ae2d7 +e7e4dde3d8d9e4ebe1e6e7d7e6e9870003000000022a1333282d263f1f1f +1d100400000100000c232f292831482f282814080f1739589f969c988356 +5d55443e463331292d2a1e2429a4dee3cad9cdd3e3d6cfccc4bca68a7466 +584d4d4949473a2922271a243d3e340006060b190055a3dbf2fcffd61f25 +252e20150c1e57554c48150e10513f56390097ffbbacbcb5aebeb3b2b4b1 +afacaaa8a6a59c9fa2a19c9795959291908d8b8d91938e8b898685878b8f +8e8a8a8e908e8d8e85898d8f909192939192979fa5a8aeb6bbb6b0afb26b +6b7076726663686b6b6c6e70706f6d737172757472757a74737272737679 +7c8181817d7a77767574777b737a777638434440424a4a44444644444648 +494848434241413a2f27243546575e62686e726e6136293ed8fcdfad936c +40211b1f23395f51414a80857f7f7d7d807d79797e838383828282828284 +83807d797673726d7174747273777b797a787373787a7973706e6e6e6b6c +6f696b6c6c69696a6b6d6b696c6e6c6d6f5c38262f3332312f2732210b29 +13090d0d0c100611074e2c232f36280a2b4403e825a869044d97e56c1736 +3d85fc443530342f56cbff6b06b8b3c61bff050fff082d87fef3071e95a4 +ff3739384a513e45463f40333de5ea43180c070307070f16100e14243234 +37272f2627331b2925203e574652211f3b33316d50274c2e2827292d3034 +4c7eafd4dbd216413b513322272839384f402600081e18141d3127261a2a +32363f3835222a3b433113070e16183231253a5089a0bed1c7804735a4da +edcae2fde8eadeeee1f3fdcea6c5c3c4abd8eaedede1eddff9e8e6ffefff +eeeeefeeedecebeaead7f8ffe7fff4dedbf0e3ecf41f847f5f5153e9e0f0 +ede6ede2e6eef8eef4f4e1eaf8b02a4b4237231c3a203d2e30213b252b28 +1b0f09080804020c222b242026382021323d3b34262c1f310f191e120007 +1011233f363125201c1209003a35221a2f1e2330231f23252a251812110e +0605010003000007170a142b30330e2f425c5700439ddcf6fcfac2080800 +080907001552534d49140b0a4937503801a0ff987a8a847e8c827f7e7b75 +726f6d6c6d666a6d6c676260605d5c5b5856585c5f5a5957545356595e5c +59595d5f5d5c5c53575b5d5f6061626162677076797f888d888281844947 +4c504c3e3b3f4240414348484845484445484543464b43423f3f40434648 +504f4d4a4643403f40434a424b4a4b0d1d1f1a1c26262022232425292c2f +302f2927262622170f0d1f2e3e44454a51595e562f2845e2ffe0b1966b3f +2a29313649685336325e5a4f4d494b4c4a4443474b4a4c4b4b4b4e4e504f +4e4b474442413f4344444243464a4849443f3f444645423f3d3d3e3b3c3f +3b3d3e3e3e3e3f40423d3c3d40424a55492a1f2b2e2e2b29222e200c2d19 +12161615180c160b4f2d29363d2f12344d0cf12eb1710c549eea6e17363d +87fe46373438365dd2ff720dc0bacd22ff0c18ff143993fffc0d2298a8ff +3a3b38494f3b42443e413641ebef47190b0300050c1a2928272b373d3b35 +1d25212b3b283730253f54424f20233f383267461e432d30383a36281516 +3252687a9b0044568570585b617a84a59f78322c413a383f534c4d435762 +6a77726337303d432d0f07101d203d3e30465891a6bcbfad631d00496683 +8bccfffff8e3f2e3f5fdcea6c3c3c6afdff2f7faf0fae6fdececfff4fff4 +f7f8f9f8f7f6f7f7e3fffff1fffee7e4faedf4fc288d85655758f1e7f7f4 +eff6ebeef8fff7fdfdeaf3ffde6d9f967e593f5130473a39284a47555548 +3d3736342e283041463b37374327294b738c9c8b7252583041473e182223 +202c463d3b33312d201a07606e635a6d5f6372645f5e5d5b4e392b241d16 +1b1713120e0c1622141e374a6c62a5c7dfc64a6dabe0ffffffce181c1a21 +1107041a5858514d1a121454425a4005a5fa855f675b4d574a4a4f4d4d4a +45413e3e3a4043423d3836363332312e2c2e32373334322f2e2e34363731 +31353735343730343638373738373332363c4043474d524c4645489b9da3 +a59f97989e9d9fa3a5a7a6a4a3a2a2a2a4a5a5a6a8a2a2a2a4a6a9acacad +acaaa8a8a6a6a5a2a6ab9da4a39e55576662617070676b68646364656565 +636865676b685f5b5b5f6f7f86888b939195834b3d42d7ffe6c0a670442d +212021274e4d45559cb0a9a6a7aaaba8a5a9b0b1afadacacacaeaeb1afac +a8a4a19f9f9ea0a2a19fa1a6ababaca8a3a2a7a9a8a3a09d9b989595959a +9c9d9d9c9c9c9e989a9c9d9b958f875a2e1615120d0d0b1208091b101558 +c6853dd158d000d35704263a16f463b800e300bd3d1e53a2b2090e0b3e53 +8110130f122b423d82000e907a790fd50021e9051b47bd1620243b7c5e00 +06151b211311140f1924377545180809161f324f6b92a0adb5b6ac926c2a +2e261427331c3a2f496374736635283136604b3b544a2e333439425174ae +d9f1ffe274d6e0ffe3d6d7dab64626170a13104202184d19002f0c040007 +1404021c212b404d412a1b10214d4d2d41366c92b8d2e5bf8c49b5d9ebfc +f6ebdfe0e9f2e3f4ecf1e3f2f4eef4f4e3eae2e2e6ede4e9f2f31e76f5e0 +dedfdedfe0dee0e2e9ca08e0deeee6e3e3dcf9f5f9fbfbfbe0fbe6d4e7d9 +dbdbe6dad2eeca93f8e5e5b9000f030100000c091e0e181f12101a27281f +12030000000a202c2b24231615292324000f2f1d638d9aa89a9e71595c4a +363a254d544e2c0c262b82dfe0e3e5d1ced7d1d7d9c8c2b49c87786a6060 +5c5b5949372b2e28273f383b000700111a004697d5f0fcffe8241f232d1e +13181a473c3a4313100e5048593e0037f5e5abbfc1b7cabbbec0c0bdbab7 +b5b7b8a9aaacaba8a5a4a49e9e9d9a9797989a92908f8b88898f958f8d8c +8e8f8e8c8b86888b8d8f9091928e8c8f979ca0a6adb6b3b0afb26d6f7375 +6f67676d6c6e70727372706f6f6f6f71727273757070707274777a7d8180 +7f7d7a78777673787d717a7a75303545413f4c4c414542403f4244464646 +4b4a4c504d443d3c3d4c5b5d5d5f63667267372822b9fce0ab93724a271b +1e2834584d3b3f7b897d78797c7d7873767d8282807f7f7f808083817e7a +767371716e7072716f71767b7b7c797473787a7973706d6b686565656a6c +6d6d6b6b6b6d6767686a6a6b6e725334272f3231322e31252335282d6cda +9951e56fe914ef701b3a4d27ff71c503f00acb4e2f66b6c71b201d506593 +222521243c534e931121a3919028ee1534f60d1f4bc52434405a997b1929 +3d474f413f3e353b404e884e1300030c0b0c0e0e1510131d2f362f28132f +28172930112610263c4f544e261d272b55412e4a3e2328292c3037568ab9 +dfeba30e453651322826213133524e3d302456182f66340951322d2d3645 +382a2e2629363a2c15070016494a2b3d316385aac5d9b3803fadd2e3f2ef +eae7f5fffff2fffcfff3fffffcfffff2f7eeeef0f4e9eef7f8257ffeeaeb +ebecedeeeeeeeef3d412eae8f7efeaeae3fff9fdffffffe7ffeddbf0e0e4 +e4f0e2dcf8d79dffe9f3e32c5c50412b162724372429281c202e3b3c3224 +1204060711242f2a221f11132a324f2f303e183a2918251b250401171618 +33284b4c3d1b061600223c1f2c351e19201a22291f23221a14120f090702 +01040200061312122728380b2e3b645903318ad3f4fefbd7100200050905 +090d403a3b44120d04443c513d0144f5c47c8e92899b8c8d8c8a87817c7b +7d8073767877747170706a6a6966636364655f5f5e5a57585e645e5c5b5d +5e5d5b5a5456595b5e5f60615d5c5f676c70777e88858281844b4d4f4f49 +3f3e42414345474b4a494744424244434344463f3f3d3f41444749504f4c +4a464441403f444b404a4c490610241e1c28281c201e1c1b1f252729282d +2c2e3230272120212e3b3d3b3a3f465e5b2e2527c1fde0b097714a312933 +3b45644f32285a604e47474a4b474041484a49494848484c4c4f4d4c4844 +414040404242413f41454a4a4b45403f444645423f3c3a383535353c3e3f +3f404040423c3a393d3f434d574028212c2f2d2b282b2020342a3173e3a2 +5aee77ee18f2742141542fff7ace0cf913d456376dbdcc1d201d50679524 +272528435a559a1827aa97962df31b3bff182b57d02d3b445d9d7f1c2b3d +464d3f3d3d363d44548f571a04030a0a0b121827272b3440423425052123 +1c3641223216243547514e2b252f2f513825413e2b393a35261418365673 +9177004c5180695b5a5b7382abb3997257894a639c6b428e706f717e9184 +685239363e3c2b14090a245a5f415447748eaabdcb9d58004b5e80bde5ff +fffffffff5fffcfff3fffffdfffff9fffafcfcfaedf2fbfe2b86fff3f3f7 +f7f8f9fbf9fafdde1cf4f2fff8f4f4ebffffffffffffedfff5e3f7eaeded +f9ede6ffe0a7ffeafeff69aaa288643e44394b393d3937536b7a7b746453 +43443f47545c5249422f293e4f8279919b58664f3c4f48522b1a2923223a +2f565b4f2d1223134775626f76605c635d65695a5951403328211c231e1a +19140f17221e1b34436f60a3bfe8ca505c9bd8fdffffe11c16181f10050e +14473f3f4818140f50485c45074af3b5626d68576554555a5b5b56504d4d +4f44474948454241413b3b3a3734343539343635312e2f353b3533323436 +3433322f33343636373838322e2f373b3f43484d49464548a1a2a2a09a97 +9ca4a1a3a5a6a6a4a2a19e9fa0a1a3a5a5a4a0a0a1a3a6a9adadacababaa +a9a8a7a7a2a6a89ba2a19c54425b6265716d656d6c696767666767656765 +686c6d6b6b6e67727b8288939d9a97884f4133b3ffefc7a777563b1f1b25 +2f4d4c454e94aea7a2a5a7a8a4a1a6aeaeacaaa9a9aaabacadaba9a6a3a1 +a0a0a1a2a3a09d9ea3a8a8a9a6a0a0a4a6a5a4a29e999594929194989b9d +9c9a999a9da0a29d97918c83512a1413110d0e0b0f231a151f03329e962b +ebb1e100d7031ed0dc29d2525300f100dc18050004001113127328101c16 +1639124d2315161b0000013bb30033cc05322236151213120e0a0f2e2408 +0c0e260a142b100f0514060b11293951758c97a9b5b3a58b674347233028 +267c49414c355c736c6b4b26243d3839383f552f32353a42557db8e0f2ff +9b85ccd9efdbd8d8dbb54424190f001e6e1d03230b052507010003191718 +1216151d2f3a2e181616323b43693731739ebad9d6c67fcff5d7ffc898dd +d0f0d8d9ebd7ebedf2f8f7f8f9eaf9e9f9f2e8fcfcfbfb053cf8dcdbdbdb +dadbdcdedeecf400f8e1f8ebeef9f1fbfbf2f6f7f4fafcfbf6f7fbf9f9f4 +f7f2f88600cef0e2da00150e0c021300001d0f001c0504080e121719130b +00000000000c0e0623211f0032090a13218b6886a0909b7161654d2d2a19 +4753792e0e202659e7dddfe6dbddded4d6d0cfcabeab97887d7874706f6b +5b4536322f2233313c00070008160b4495d5eff8fff5281b262b1c101e14 +2409041806141525171617030af3ffa8afbeb5c2b8c3bebfbebab9b9bbbd +b6b6b4b2afafb0b1aeafb0aeaaa6a4a29b9997918c8b8f93959493929292 +8f8c8787898c8f9191928c898a91979ba1a7afafb1b3b4707172706a676b +736e707273716e6c6b6b6c6d6e707272716e6e6f7174777b7e7e7d7d7c7a +79787874787d717a7b7733233d43434e493f454443414142444444444245 +4b4c4a484b434b53565b63696c746e3d2c1396fce9b294775a3317182a37 +554a36337184787375797a746e727a7f7f7d7c7b7c7d7e7f7d7b78757372 +72717273706d6e7378787976707175777674726e696564626164686b6d6b +6968696a6d6e6a66676b6f4c322730313133303040342f371845b1a83fff +c8fa07f31f32e3ed3ae060600cfe09ea29160c1806232524853a222e2828 +4b245f3426272e080a1d58cf0747da0d38283e23262f312b2931544c343a +3c52323648272012180000000b0b0f1a180e16232e3734261b3d27342b27 +784031361c40575051341418322c2c2b35492427282a2e3c5e94bfddf15b +1e3c32442d282218282b4f554f2d4a9a472d4d3433543a3937445e5d5944 +3b2d262c2d1a04040a2a394369352d6892adcdcbbb76c8eecdfbbc92e1e0 +ffe5e2f4e0f5f7fcfffffffff3ffeffff6edffffffff0c45ffe6e8e7e9ea +ebececeaf6fe02ffeafff4f5fff5fffff7fbfcf9fffffffafefffffffdfe +fbff9003d5f0ecff35635f533e45152a48381d3b25292e34383d3f372e14 +130d0b121c1d1534332f13613a282128710e0a1e0c19000922190d201944 +48631d0c1a05084a1e242e212323161815181c1b151110100d0804040706 +0005101106171d370e2c345f580c2a84cef3fffde81400000307040d041a +040319050f0917090b150a19f5e37a8191899589928c8b88848181848681 +817f7d7a7a7b7c797a7b7975716f6e686866605b5a5e626463626161615e +5b5555575a5d6060615b585961676b7177808183858650504e4a443f4248 +4343474849484845403f4041414343423d3d3c3e4144484a4d4c4b4a4645 +424240444a3f494c4a0a0423272730271b22201e1c1d202426252422272c +2d2b2a2d232a3031343b424a5e5f3127169bfde9b796755b3e262d3e4a62 +4d2f1e515c4c45454849443f4248494846454748494a4d4b494644424141 +434445423d3e43484748453f3d41434243413d3835343231363a3d3f403e +3d3e3d403f3d3b3f4a563927212c2e2d2c29293b312e391d4cb8b248ffd0 +ff0bf62239eaf542e9696915ff12f3311e131f0b252524853a22302a2c4f +28633b2d2e340e0e215cd30c4ee3184434492c2d33342f2c33554c33383a +5132384c2d281b230502010d0d111f231e293841443d2a19311933343b8f +533e3917354c4c523e20243a2c26222c492c383a3423141b3656749f3719 +464c70605955546c7cadc3b98293e39179998381a68d9091a0bbbcad8368 +53433d37230d10183f4f5b834d3e6e94b4cfc59d336d8678d8c0b6ffefff +ebe7f9e5f7f9fdfffffffffafffbfffff3ffffffff124cffeff0f3f4f7f8 +f9f7f6ffff0cfff3fffdfdfffefffffdffffffffffffffffffffffffffff +ff9a0edbf0f6ff74b6b8a3847a42547264496758707f878b92948d806561 +574f5158564c68615138957f82795f98312e4a3b47242133261828214f58 +782f1724162881616974686a6a5e605a5a575042342c27272a2622211d15 +1a211d1225386d619fb8e2c95c5997d5fcfffff12012191d0e04150e220a +081d0b1613241619201220f4d6626068585e515a57595955504e4e504d4d +4b494646474845464745413d3b3c3b3d3b35302f33373938373638363532 +3030323538383838322d2e33393d4346484547494aa1a09d9995969ca2a0 +a2a4a3a19e9d9d9da0a0a0a3a7a7a39f9f9fa1a4a8adb0abaaa9a8a8a8a7 +a7a6a4a69aa09f9f6134495e6a726b676d6e6b69696a6a6b6b6b68676b6e +6e7177767b7d818d9ba4a095895547358dfffed0ab7a5c3f1e1827435654 +4d4a89a5a09fa0a4a4a19fa3aaa8a7a6a6a7a8a9a9a8a7a6a4a2a09f9ea2 +a3a3a09c9ca0a4a3a4a19c9ca1a3a2a2a29f999798979595999d9f9e9c9b +9b9a9ea09d9a968f824a2615130f0e0e0c0d0815111d0b656f9796ca23cf +47d6790b0a0a009ea4f500f500f405001a00070b1d14391f151f1524141c +12271d03297c850947940035ae003f4206203109a81b40021610111a1a09 +182720298038041d23273a4a61909fa2b1b6a78967462f2f161d1c479b3a +239b153b5b775894c33a602d3637324f3b31343b455c87c2e7f3ff6e92c7 +e0e6dfd7dde7c24a23150a050712131c2229154032341f0c100c0f132021 +1b222e2d231e10151d4371482a3e739fc9dfeab7d8def7ff83ff27000000 +060f030c0500000200080516001800013000001e0e36f6e2e0dfdedbdbdb +dddddcf7004c0b1f221827442a1138302e40483b38412f736d7654645152 +3d00b2ffdee205070b110a4500002a24001e1d03000000030e110f070c0c +060d1a190c4b1f04002e0007298beb8794b4a6ab7a65624d322e28343573 +371d13163fe0e1dbe2dce3e0d6dbd3dad7cbbca899918d868182806f543f +3935222a353f0c0c00000f18479bd9eef4fdff281a2b291913111a25170e +140e12191a1d09060a00cdffb5a8bdb9bbbbc7bebebdbdbebebfbfc0bdb9 +b5b3b3b4b6babcbebcb8b2aeacaeaaa6a09a969696989997949394908b8a +8a898b8e9090908d88878c92979da3a8abb0b3b5706f6c6965676b716d6f +71706b6867676a6d6d6d707474706d6d6d6f72767b7e7b7c7b7a79797878 +78797d727a7b7d41162d3f4a4e4640444643414143464747443f40444747 +4a504d5051545c676f70736f43331570f5f5ba97795d351313294a5a4e3c +2e6579716f707475716c6f76797a7979797a7b7b7a797876747271707273 +73706c6c70747374716c6d72747372726f696768676565696d6f6d6b6a6a +676b6c6a696c6e6e44302a32323236312e27322b35207882a9a8de3ae863 +f4951f1d1b09acb2ff04ff03ff160b2d091c1f2f264b3127312736262e24 +382e143c95a22866b30f4cbf0645480e2e4525c7385f243c383b4646333e +46393c8d4004110c040701051b1911203237332c221d2b191e1b43973218 +8f072b485e3b76a8295421292a25433024272a2f41699fc7dde52d2b393c +3d3225211b2c2d4d56554d4c5352575a614c7a7077685a6262655e5f5039 +2b281f110c040e1c44744b2a396b94bed5e1b0d0d3e9fb70f726030b050a +13080f08010106030908160018000234010123133dffecedebecebebebeb +e9e6ff025514282b1f2e482e163d3533434b3e3b443377717a5b6b585845 +01b6fce4ff3f565e5d4d7e1d33655e2150503e3c3839434e4f4a3f433e34 +38413e31714524136530223a9ddc381e321e1f000d221b12242831285b24 +1f1601004b241d241e231d12170f181a1916110f12150c07090f0c04050e +11020a1c361830385052192b85cff2fdfcf616000001060700091a120d13 +0b0b0c0a0b00021104d1f6877b918d908e998f8c8988868788888c898581 +7f7f808286888a88847e7a797c7a76706a6666666869676462645f5a5958 +57595c5e5f5f5c57565b61666c73797d828587504e4b433f3d4046404246 +45454243413f404040414545413c3c3a3c3f43484b4b4b49484545424244 +44493f494b4f1a00182a3334292124231f1e1e22242727231f212528282b +312d2e2e2d343f454c5a5e352c1874f4f6bd99775f4024293e5d66523519 +45544541404647433f40464543424245464747484746444341403f444545 +423c3c40444243403b393e403f41413e3837383735373b3f4142403f3f3a +3e3d3d40464f553425252d2e2e2e29271f2d2835237f89b3b2e742ed67f6 +9826242311b5bbff0dff0cff1e13341021202f264b312733293a2a32283f +351b429aa62b69b61352c710515419374c29ca3c62263d383a4545323f49 +3e43964b101b160b0e080a23241e2f40453e32261b1f0e20295ab049268f +001c39573d82b9395e2323211d43383639322416213b5a779b112c475564 +60555458737fafcacab1a7afafb5bbc2b0ded5dfd1c6cecfccbbaf946f52 +42301d1a12202e58875e343669a2cfded27a8581aaec83ff46070408131c +0e140d040409060e0f200b240a07370404271743fff5f5f7f7f8f8f8f6f5 +f0ff0c5e1d3134273651371c433b394a5245424d3c807a8565756264500c +bffff4ff88b3c4bda4cb6376a9a76b999f9a9e9a9da7b2b4aea0a0978987 +8c8578ba8655409b72798acffd58415e4c4c252532271d2c303c3971372b +1d10158268636c666c695e63575e5a53483a302d31332e2a2b281d1d221f +0d17396d6ca2bcd5c5695c9ad7fdfffffb220f1e1b0c0708132218121812 +1316151b0b101b0bd2eb705c6a5c59555e5757575653514f4f53504c4846 +4647494d4f514f4b4541424b4a46403a3638363a3b39363736342f313332 +3437393737342e2d30383b4343414146494ba09e9a9696999c9ea0a2a3a0 +9e9c9c9e9c9fa09fa3a9a7a1a09f9e9fa2a7adb0ababaaa8a9a8a4a4aaa3 +a49b9f9ba3702f36536d706b6c6d6f6d6a686a6b6d6d73706e707070747c +7c8084858d979d9893865b4a3b65ecffd3b27c57402e313c59615d574b83 +a09f9e9b9ea09e9ca0a4a2a2a3a4a6a6a7a7a4a4a4a3a19e9b999ea0a19e +9b9a9da0a2a3a19c9ca2a4a39fa29f9896999996989a9d9e9d9d9e9f9c9c +9b9b9c97856c42241614100d0f0d0f120e000704055d4c00040010001e14 +1a200902260e0b00ea00f40004d19b580b3d280039280b2f212b2b12453a +087e864b008674006ba40324d8b40c1900dbe5a42c1b181c180d2518151d +2e5317040a1b30586d7fa19bafb4aa8c6445332c2b3d342b79822c1fe42b +2339795778a13d6c303b3d373e4c2f353c496495d0f2fbed6c89c6e9e1e2 +d9e3efc9481706000e05001611091d1b110d1b0d00060406010e1c242728 +27261d1716102b45524f2b4b73a4d3f4e1d0f8ecfafb9903152c553f1e23 +292c313f343834383c323c38433c1d25362a12f2e0dededddbdadadcedde +f80c54372a252b222f05112d251c17211b202d132f1b1c141b050737066f +ffdbe31e00030e0b1f0b0b05080021030905010004090a050000090f1313 +0b030d000404000045979dd9907e9c9fac80625a4f3b34413332362b1a19 +2946c3e2ecefe7ebe4e2f4eee7e3dccbb8a79e9c979193928061483f3d2c +2a3e3d120900000e244596d4ecf5fbff281b3328161717231a232d303321 +111e35342c210061ffcdacbcbdbec5c6c5c4c1c1c4c3c1bdc1bfbcbbbabb +bbbbbec0c1c0bcb8b7b5bbb6b2aeaba7a4a1a2a3a19c9a9c9891918e8c8c +8e8f8d8b8d8684888f949a9fa4a7acafb16f6d696664686b6e6d6f706d68 +666668696c6d6c7076746e6e6d6c6d70757b7e7b7b7a78777675757c787b +737b798352131a364e4d45444444423f3f414446464843424447474b5051 +54545359626668716f4a361b48e2f9bd9e7b583421293d5e6354442f5c72 +6e6b6b6d6f6d696b7173757677787879797676767573706d6b6e70716e6b +6a6d707273716c6d7375746f726f6866696966686a6d6e6c6c6d6e696966 +686d70665a3f2e2b333334373230312b141f19186e5d10180629083c302e +311710331b1505f703ff0415e4af6d1f4f3a114b3a1d41333d3d24574c19 +93a26d17a8960e82b50d2cdebc1a2d1af8ffc34e41404644394d3b32343c +5d1b00000000100c0715051c2b363127222428283a2f24707b281de42c21 +31673a54802a60242d2f2a324022262b334975abd1e3ca2a243c493d3725 +231d2b26414b4d685f4c665d50605e575468605865676a63645f513c2b1c +150d0b1010304c5a542e4d709fcaeadbc6e8d8e1e287001b35563d1c2226 +292f3d32362f35362c3632423d21293b2f19fbeaebeaebebeaeaeaf9e8ff +145d40312c3229340a16322a211a211b202d16321e1f181f090b3d0c71fa +daff5646575f54624d4f4d504663495f61605e6267655f4f5357595a574c +414a3534363e3161aab5d4460a1a131b00091c1d1c2b422d251d1821221d +0833272a2b23271e1927211a1c1b18130f1317100c0f17150b080e140808 +24331d2d3c4d5322277ec9f0fefcfd18000802050d030f0d1c2c2f311a01 +0c202628280467f8a0809293939b9997938e8e8f8f8d898d8b8887868787 +878a8c8d8c888483828986827e7b7774717273716c6a6c6860605c5a5a5c +5d5b5a5c5553575e63696f75797e81834f4c48403f3f4040404245424240 +42423e3f403f4147453f3d3c393a3d42484b4b4b494744433f3f48434740 +4949542c000e283c392e2a2624201f1f212327272824252729292d333131 +302e323a3d42565d3a2d1c4ce1f7c0a0795a403340527170593d1a3d4e43 +3e3d4244423e3f423f3e3f404444454544444544423f3c3a404243403d3c +3d404243403b393f41403e413e37363939363a3c3f40414142433c3c3a3b +434947422e23262e2f2f2f2a292926111f1c1f76671a1f0c2e0c3e333539 +20193c241f0fff0cff0c1debb672204f3a114b3a1f43353f41285b502098 +a66f19aa981288bd1737eac723341efcffc65042404543384d3d363a4567 +270e07090c1c1711201026333f382e2627271f3335368d9a3f2ae21e0c1e +5d3c62933d6c262a2622344a363933261c2a43608186142a4b6360635456 +5a757aa5c4cadacdb9d5cdc2d3d1c9c8dcd6cedbdce2e2ddc8a67b583a28 +1a171c1a36525c4e1d4281bde5f2bb93b4b5e7ffad120d205848272a2d30 +3442373b363e4038423c473f242c3f331ffff3f3f6f6f8f7f7f5fff2ff1f +664939343a313a101c38302721292328351d3b2728212a141749187dfff9 +ffadb6d1d5c5caaeb2b3bcb5d1b8cccececfd3d8d7cfbcbbbbb8b4ac9c94 +a78a726b7774b5f7e3f2672f464046231f2b292430473936332b2b272921 +686b71756f736d67766e65615a4f3e35323639373436332622232214163f +686f9fc0d3c8755994d1fbffffff2311261b0d0e0c1a1623313436210c18 +313536320c67ed8b636a615c5f5e5c5b59595956514d51514e4d4c4d4d4d +505253524e4a49495655514d4a4644404243413c3c3c3a35383735353738 +3632342d2b2e363a41413d3d424547a09e9a97989c9d9b9fa3a3a19d9d9f +a1999b9e9ba1a6a69ca19d9d9ba1a4adafadacaaa8a6a3a2a1aea3a39ca0 +9ca87e332b4a6d6f6b716c716f6b686a6c6c6c75716f727272757b737c84 +878e969c989389614c3d48dbfdd5bb85564447525d6b69625e4d7e9c9f9a +9a9b9e9e9b9c9e9d9ea1a3a5a6a5a5a2a0a2a09f9997959c9fa09f9b9b9b +9fa4a5a29e9fa2a5a69ea19e96949998949899999895979a9ca49e959191 +8867443d2316151010120e295b0092ab5a09008300685701219400110b1b +2885060015c700e00000d8b1541e111333ab621b2220123445a6cb00944d +0c008d510084790e3db7eb491800eaaa0708161e0e1721121c2121231907 +0a213843647a8fb6aeb4aa8e663d2b2b302e2d3120411c1f043a102a2f65 +7e5c401a4e22323f43305a2a313d4d70a2d6f8ffd4726cc3eedcdcd1dce9 +c44614010005000001000c000a0b0004000006000000000a232c20130f1e +1c1a0f22275767544c517cbaf0ffd4e3b8ffb3482e27717c521732302721 +2c24361f282536384e8a230e0f221b06ebd1d2d7d9d6d4d3d4d3e3ef004e +41242f68751c1e352d152c242d1e2e1e31313d6d53190e1a39136affdae7 +4207101c161a2311141e11131003010100000206060802050f130d0d1514 +1f1e130060a9aba2c7b382949db792635c55402e4a33404d46110d233489 +dadde7e5eee4deece3eaeae6d9c3afa2a1a4a1a3a08e70564a45352b4031 +0a01000017243886c8e8f7fcff291f36281c231c27184067655a231b2130 +5b77680d17ffd0aab9c0c4cec0c7c4c2c4c8c7c0b9bebebec0c2c4c3c2bf +c0c0bebbbabbbbb9b4b3b1b4b1aea8b3b3b2aaaaaaa89e9892908d908d8d +888f8584868f929a9da2a5a8abad6f6d6a67686b6c6a6e70706d6967696d +666b6b6b6e76736c6e6d6b6c6f757b7f7d7c7a787673737280787a747a78 +865e140f2c4d4c4749424544403f414343434844424547474a4e464e5455 +5a616568706e4c361d2bcff3c0a881563a3a4d5c6b68594c315c74726a67 +686b6a68696e707174767879787874757474716d6966696c6d6c68686b6f +7476747071777a7870716e6664666561656666656466696c78736a696d69 +51393d2e2c33323436334a7a0aacc36d1a0d940d7a6b1a3db00c251e2936 +92100722d504f30505ecc86930212547bf762f3632244657b8dd05a96b2b +09ac70139b8c1b47c1f85a2d12ffcc292b3944363f49393e3d3630200500 +0910070e07071e142733382c1d1c262f2a2829193b171f073f162c29535f +331a054418282e32214e24292f374f7db5d9e5af39123a4c3934241f1720 +122b3940543e3c47394b3a44473c464244565047494449534b2f1407120f +0e051b2558684f464974b2e9f9c9d3a2f09c392b2f797847112f2f262029 +1f311a221f2e2e468b260d0e27250ff8dfdedcdee1e4e7e8e1eff902564a +2b336c7a1f213830182f242d1e2e1e31344070551d121e3d166cfadaff6f +45565f585861535c6659585d5f65656362666766675f5e65665e5d625d61 +54443491c6c1bac16d12110e200c05191f1a1f472d353a38141011000e35 +222220261b1523191e1e1e19130e1114110e121a180d080c120b07282b18 +22355357292074c0eefffbfb17020e02020f0210083a6666581c0e111e4d +716b171cf8b5868d9093a0949b968f8f91908d878b8a8a8c8e908f8e8b8c +8c8a878687898885818282827c798184807b787b766e65615c5c5c5c5957 +5b5450555b61666c7376797d7e4e4c46414243413f43454545414143453b +3d3e3d4146443c3f3c3a383c41484e4d4c4a4745423f3e4e454641494856 +380204213e393130292824201f212323232923232627272a2d252c303033 +393c4254593b2b2030d1f4c5ac8258454c616e77705c48254350483c383b +40423d3a3d39383d3f4142414140424243403c38383c3f403f3b3b3d4146 +48433f3f4447473f433e363437363236393938393b3e44535148464d4d3a +27312629313132322c437405abc57322179e1784741f41b40f2c25323f9b +1a112bde0cfa0c0cf3ce6e32212546be75303734264859bce109ae6d2d0c +ae7316a1922450cbff623217ffce2b2d3b45353e48383f40393628100b16 +1b131b16152b203037392b1e1f2d342725342b57353716420c1e19495d3b +29164f171f242b245832342c1f1a2d4c6d9278281b4c645858515758655a +7b9aa6b39a99a697aa9aa5a79ba6a2a5b5b0aec2b9a89f8258321c201918 +0e232650583938568bc9f1e7adb995ffb956361a6279551d38372c263026 +38212c29393951902b12132a2714ffeaeef0f2f3f3f0f1eefdff0e615335 +3c758026283f371f362c35263626393d497961281e2a49257bfffcffc2ac +c8d2c9c5cec1cbdcd1d1d1ced4d4d2d2d6d8d6d5c9c4c8c4b9b4babbb594 +7c6acbfffde0dd8f3a3d3a492d1d2a2d25264e37434d491d171d113a6f66 +69686f67616f6367635f54443732363b3a3b3f3829222323191340596393 +baddd27b528ccbfaffffff2316291b0b110b1a123e6b6a5d23171c2c5a7d +74201ff0a46c6a605962535e5b5a5b5b574e484c4e4e50525453524f5050 +4e4b4a4b4e504f4c4c4d4c49434e504d474547433e3a3835343534322f34 +2c292d34393f413f3e4142469c969a9d99a0a8a59b9c9b9897999c9f9f9e +9fa0a3a3a3a09f999da6adaaa9aaaaa7a3a0a1a3a5a6a0a6a6a4a4a29b8d +5a2c2c586f68646b6667696c6d6d6c6e6e71727373767a7e848080869195 +9b9b998f77504c469dffe0a39355566e6f718e9579534365979a9a9fa2a3 +9f9a9b9ea1a1a0a09fa0a0a0a5a49f97989b9b969a9f9f9c98999fa39a9c +9a989a9f9f9b999d998e8e97a0a5a7a5a09e9c9b97908880809fab822c44 +2f19181b101310005e91008c87bd0000e605b96100a7e406636a326ce2f1 +4c4fa107b10000d52b0020244c51a51b031f14101731863c0059948100a8 +3b00836605094f4b00150879000a2318181f141b151e303a280b081e304b +5a608b92b3b1a88e534721283e282b28342c3111c6730131143159728148 +cc4f2d2c424040602e23375a85bfe4e5ff914073a3dfeaddc2d8dad3dcff +c9babcbebbbab7b2afadb6afa8a6a6a5a19c9898978f92a383400d1b2136 +21365263874b41638ac8f9f3c1afe30841081a404c511b161d2a272b2e28 +1f241e2244486f480719230300bbb5c3bbcbc2a5afa9b4c6ab0137423178 +4d9f17293220332e252122292e30343b798117142a171947f6eae6700914 +1f0e1815100f0d090600050000000000000000000204060506040b001754 +96b2a695a3c1de729aaea2b35e695958341d24715069042831277bc0d1d6 +dce6e1dedddadfe0e0d7c1ab9ca1adafaf9997865759523727271d060002 +0a131d1c73c2ecf2fcff303628253a24272a1426280c1214111b1c322a2a +0b00d7e59cb2d3cabfc8bfbfc1c2c8c9bfb7c2bfbbbcbfc1c0bfbdbdbdbd +bcbcbebfbdb7b7b5b4bcc0b2b7b4b5b6bab6b0a8a79d999a989092988c89 +8a8d95999d9b9ca0a5a8a96e686d706c7078766c6b6a676665686c6e6f6e +71737473726f6b6d787d7c797c7c7874727375777872787a787878716637 +0c0c374c4440463f4042434444434343454647474a4e5056504e545d6166 +6b726f5a322c2887f9cc938d5050686d6f8a906e442f4b78736c6b6c6c68 +676c7177777676757676767b7b746e6c716f676565686563646c726b706f +6d717979726c6d685d5b636a6d6f6c6a69696866656c6a6a8d9a78284538 +272d352e32321e81b114a89ecf0506f415c97306c0ff227c7e4379ecf956 +5cb41eca0819ee42132e2f5e67bf351d382822274198500671b09d18c254 +169879161b605e122d21981730473c3a41363e383d4a4d320c020b0b1312 +031104181d2f3826361d27331d292732292f11c878073612264250521eb6 +45282430292d59382d303f5891c7cbee681b2d1a35443a2028112989f1e4 +e8e6e4e1ddd8d3cfcdd6d0c9c9cbccc8c1b4b5bab5b7c298470709061601 +1c42536c2f29547fc1f1e9b29cce003b0c2b4b403f111522312b2d2e261c +211b1c3842764c000f291307cfced1afbac3b6ccc6c7d5b80d404835784d +9e14262f1d302d242022292e30343b7b8319162c1a1c4cfbf3f98a2a3b47 +37434344464646434253545351515152534e4f52545554535258444678b7 +d2c3adb1b19a0715180a29001b1a2a181021704d6300160f002243281518 +1f1c1d2320211c150f09040c110c080f061416000a11030619221a1f324e +4c2b156dc1f8fef9fa1816040010000810031d260d13140b11112620250a +01e3e88285968c8a9c98958d888a8e8e88908d898a8d8f8e8d8b8b8b8b8a +8a8c8d8b868584828b8d818483828587857d77736a6467635d5d65575554 +595f6567676c707579794a4446494548504c4242413e3d3d404143434343 +454645413f3a3d464c4a484a4b4a464142444647414749494948413f2300 +0026392e282b2221212324242321202223242427292c322c292f363a3e47 +55584a2a2f3093ffd79d91565a747b7a898c72492e3e59483a394043413c +38383d3b3c3a393a3a3a41433f3a3b41403b3b3d3f3c393a41473f434240 +434a4a4443453f322e343c3e403f3c3d3e3d3d43565c5c7f906e1f3f3527 +2e362e34311d7dae14aba4d91213ff22d67f0ec5ff2681854b82f6ff6065 +bb24cf0c1df3481931315e65bc321a35272227419a510771b19e1bc35818 +9d7d1d1f6762172f259a1931473c3b40353a3438474b33100611131e1d0e +20142a2d3839212f1c2d432d2e2c3d3a452bdf8c133a13223a474c1fc34e +2217222331613a251614173c616cb24812352e4f5a574f665768b3ffffff +fffffffffffcf8f6fff9f2f3f5f5f1f5fdf9e2ccc9d4ad5a1315172b1625 +333a5b2325517bb9e6dfada0dd0b470d1b3b444b1c1d283934393a31272a +2426424c7e55051729120bdae2eed7e4dfc6d0cad6e8c91d4f56408257a6 +1d2d362437332c282a31383a4047879026253b292d5fffffffc36f8a9e93 +a1a3a9abafb0adaab7b7b6b4b4b4b5b6b2b2b3b3b2b1afa5a0817eaae4f9 +ebcfcccec1334446334b14312b3724192878566d07222004426d5f545a62 +61606461615c554d3d30303435343f32342f10202919112840578ab8e1cf +834987cfffffffff282b1e151c0410190b20290f15160f191930292c1205 +e3e171686951465555595b5859564c44514e4a4b4e504f4e4c4c4c4c4b4b +4d50504b4a49475054464b49494b4e4b443f433b383a3730333a2d2d2e32 +393e433f3e3f4445489e979a9c979ba5a29e9e9d9a96949797a09e9fa0a3 +a4a2a1a29ea0a8acaaa7a8a4a19e9ea0a1a09ea1a5a6a4a4a49f94654839 +3f546a70616a696869686a6c6d6b6f70717174787c807e7e868c9096999b +8f774b3b2f90fff5ab8378c3e1986d89927651405e8f91969ea2a29c9a98 +9a9fa0a2a4a4a3a1a0a2a19c94959797939d9d9b9b9b9fa1a19d9f9f9b9c +a19f9e9c9e9996989d9d97929ba3a095909596919eaab69961275a2d1a1b +1e15161402e78b1eeac4ae9eb1f400dd212acdb35c41862383d75f0f6166 +44ae00241a0010270f412b2d012118251637582b181d00000800b63400a7 +3319233b161720000708000e0d121c151b242121221b1316233260777390 +a0afba926b2f2a1d2a322b31321a281b04ae1e50b97e0d4b7f863b583c29 +263944253d36253a5a8fcae1f1ff503b7ba7e4e6e4d9dbeac9f5ffe6d2e0 +e4e3e3e1e0deddefedebeaebecedf0f6eeeceae6e7ebea971d191a2b362f +547573524571a9d5fae6c17810758f7b657d8f5c42261e1e303b362c332e +3251524735764d352d07967c79b3d0b5afb1a0909ea228364322463b8331 +2734352f29596e6c492a2832364559222b2f211a1af1d2e6d2afb7b4aa9d +98928d88817a756e6b67625e5b59585151504e4b47423e2457a2d1cdb0a1 +a7a8b6ed65aa9db4b862695e59392b25453474552639495ea7cad5dce3dd +dadad8dddfe3dcc8af9c9eabaeaa9798895e5b583f27231f0700070a1216 +136bbbe7eeffff3142272c3b382f291a1f21110c1008151d261b170d0768 +eea4b5d1cbbecac2c1c5c8cccec4bdc2c0bebfc2c4c3c2bebebebdbdbdbe +bfbfbbbdbbb8bfc3b9babdc0c0bcb9b6b6b8b0a8a39d959192918e8c8d92 +989b9a96989da1a4726b6d6f6a6e75726e6e6c69656364666f6f70717475 +73727470727a7e7c797a75726f6f7172716f72767775757570684127181e +31474c3d45444442414143454345454746484c4e524e4e545a5e646b746d +562a1b1175f7e39e7971bede966a82896b44304a746f6b6b696864656a70 +7576787a7a7977767878716b696c6b6468666464666a6e706e7373707479 +79756f6d6862636867615c666f6f68646a747d93a0ae95612b62382c3038 +33353624ffae3dffdbc0aebeff02ed333ee6cf785a9a318ddd63156b775b +ca0c4033112130195041471e3b3139264566392a3110132207ce4906ba46 +2c36502b2f3814252c273231343e373b443e382e1d0a030300171f091116 +213a332f1b2b262f271e2f351a271c06b22457bf7d03335d571243322621 +262b12384636353d5d98c8dcdb2a2244233c41423831261d95e7f1f1f6f6 +f5f5f3f2f0effffffdfcfdfefffcfaf6fffffffffff7930a00000617183b +5351383265a1cef0d9b16a0574958b6f707d54452f2927343d362a312d2f +4a4f4f3c68403b3d18ad9f90a7bcb6c0d0c2a5afae333f49244638802c22 +2f302a26586d6c492a283236445b242d31221b20ffe3f8e6c5cfcdc8bebd +bab9b6b3aeaba9a7a39e9a9795948d8d8c8a87837e7e6a94cbeadfc5bdc2 +b3a4ac0027091b2e00171924171a20483975490b0e0f1a422915141b191c +2422211b151008030a0e09050a04121300020d0707192a201d3347482a15 +6bbef4fafcf91621050509060b0f07141f131011060f131b1110080c81fe +92879186859c9b99918b8c91938e918e8c8d909291908c8c8c8b8b8b8c8d +8d898b89868d9187888b8e8e8a878483857c746f69615c5d5c5957575c62 +656663686d71744b44464843474d4a464643403c3a393b44434445464745 +44433f41494c4a4748474441414344434144484947474742412916070b1d +3134232a272421222123221f1f22212323272a2e2a2a2f35393f49555445 +231e1b84ffefa78178c5e7a3717a806f4b3341574236363e423f3b36363b +3c3e40403d3b3a3e403c373a3f3e3a403f3d3d3c40434542464643434848 +474645403a393c3933303c4747413f4759728f9eab94612c643a2e333935 +373723ffaa3fffe3cabdceff12fc3f49edd37c5fa13a97e96f21757f61ce +1044381828351b533f461a3a2e3a2648673c2a3210142309d04c09be4a30 +3a532e313a15252c273231353d36383f39322a1c0b050803222b17222631 +47372e1223253538303a3c2637311fcb3c6acd85042f544d0e4c3b1d0e18 +24163e43230f0516416383ac171d4a3853525a6a706e59b0f3ffffffffff +fffffffefdffffffffffffffffffffffffffffffffa41d100d181d0a2547 +472b235594c6efe2be79137a95816777895f4c362f303f4942353c353852 +585a4675473b3c1fbbb3b0d7edd5d2d3c4b6c3c445505731504389332936 +37312d6075745134323e425268333c40342d30fff3ffffeafbffffffffff +fffffcf7f3efede9e4e0dddbdad3d3d2d0cdc9c4be9dc1f7ffffe0d2d3c7 +bed42e59394752172e2e342522274d3d7a531a212733645b50535a595a61 +5f5e59564d41332f312e2e3a30332b0d182b201224405684badece834887 +cdffffffff27361d1a150f15180d182012111309131b2319170f1285fd86 +6d654b4051565c5f5e5c5a514a4f4f4d4e515352514d4d4d4c4c4c4d4e50 +4c4e4c4950544a4b4e51514d4a474a504c443f3a323031322f2f31363c3f +3e38383d4144a0989a9a9498a19e9c9d9d9b979596959f9d9d9fa2a2a1a0 +9f9da0a6aaa9a8a8a5a2a0a2a6a7a29da2a4a3a2a2a4a198695846383b58 +6c666867646464696c6e6c6e70717175787c7c7c7e868a8d959a9c918156 +45368cf7d4b7caf5f6b04f5a77857253415b8b8f949ca19e99979899999c +a0a3a5a3a09ea2a09d95969596939d9895969ea3a2a09ea2a4a1a1a3a4a3 +a2a6a39890939ba09f9e998e8586949faeb4b5b5965a2952241616181212 +1104d42c00312600161d0b79cdbc774d295803120266750000ae58667a00 +3e250c1936061e2a0a092d261a23373c1a1a163b601506ba1800ca3b1c14 +1f3100214f888740201716201915102532281d1e2d42685e68869a8d94fc +5b44292b282c1a351a1f1a24261589301b9e9f253c5f7c7631493c2d3752 +3f4d382a425e9dd5defff2224684a0dbdde8c6cce8cdffffe1c9d5dadbdc +dddddcdcd7d9dbdad8d8dadfede6dfded9cdd8f7e2992827301629344a70 +6748567eaddbead1bc13510722201d3b1f2016120d18221d141d1c233e3d +220f361c1928007abb8785c4b7adb24ba9a8952a105a3e3a4a3b424b3328 +262113242718162c434a1f402c2f272e2c04f2d8d7e9eaebe4e5e6e4e3e2 +e0dfdbdce7eae9e7e6e5e5e5eaeaeaeaeae8e5ded9d9d9d3bda4969b88ac +ffa5dab1af976e6a655c4041362d2c37353c48342fc3cfdae0e4dddadad5 +e5e7ece8d4bca6a1a9a7a397988d675c5848271e240b00070811171368b8 +e4ecffff424e2f35363e352923181f2010172122261e1d1112080af4baae +cccfbfc7c2c4c7c7cbcdc7c0c0bfbec0c2c4c4c3c0bfbebebebebfbfbebc +c0c0b9bec5bfb8bfc5c2bab5b8bdbbb9b2aba8a7a29c9a95908e90949899 +95969ba0a4746c6d6d676b716e6c6d6c6a666463646e6e6e707373727171 +6f72787c7b7a7a767371737778736e737574737375726c43342215183548 +42454441403f42454746464849494a4d50504e50565a5d656d7771603827 +1b72e1c0a8bfecefab4955707d68463147706d696a686461636a6e707377 +7a7a78757377756f69676866636c6764656a7071706e727471727475736f +716e635b5e686f6f727069636878889faaadaf945b2f5c322a2e34323433 +28f84f0d4d3d08262d1886ddce8b66457417230c6c770000b465778e0552 +381a233a0b293c1f23453b292e40452328254e782f1ed22d06dd4d2e2734 +46113969a4a964433a39443d372e3e412c13080d0f1c00000f1b0f22a01b +1f1a2a2c2c142e1a22192326178f3723a5a11e284051501b3f3928243b2f +4847383b416ca6c5ebd00031532b3f3a411e1e292aa3f1ede6ebeaebeced +edecece7e9ebeae8e8eaebf2eeeef2f1e5e8fede8c120f17001520315753 +3a4c75a6d2dfc5b10b4e0a2a2416311e251f1d161d251d141d1c223d3d2a +162c111d340991eab08cbebdbed16abeb9a135175d403a47383d46302523 +1e12232617152b414a1f402b2e262d2b0bfff0f1ffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff6e4cbb5b2b798a0d4 +4c60251c1105161d261c2d313031382b262100005f2d17131612161d1b24 +211b18110c10141210120f1d1d04040d10071430261a3545472b1568bbf1 +f8fdf7272e0f0f060f0f0e0e0c1b2214181f1c1c13130a0d0d22ffa8828f +8d88989b9a938d8d9294918f8d8c8e909292918e8d8c8c8c8c8d8d8c8a8e +8e878c938d868d93908883868a88857e7774736e6865605b595b5f636662 +666b70744d45464640444946444543413d3b38394342424445454443403e +41474a49484848454345494a454045474645454744452c241202041f3028 +29262320222326282222252526272a2d2d2c2e323639414c5a5a51302924 +7feecbafc5f1f6b2555b6672694d343e534036353d3e3c3b38373c3f4344 +45433e3c42423e3a3b3e3e3b443f3c3d424546423e4243403e4041424247 +44392f323d46494f504c474e60769aa9abaf955d2f5d332b303531333226 +f44b0f504512353c2896ecda966d49781e2b1678840c0cc06e7f950c593f +232c43112f3e2222473c2e32474a2a2b2a527a3020d43009e151322b3749 +133b6aa5aa64453c3b443d362c3b3e2b120a1014280e0d222c1d2ca51919 +13252d34223e242b27353e30a9513ab7ad25293d4b4f274730151633304c +40210f05204c6094a3002c593d544d5d515d6e61bdfdfdf8f9f7f8f9fafa +f9f9f4f6f8f7f5f5f7fffffffff9f1e5f5fff9a6291d1d000e152a50482d +406ca0d3e7d1c11a590f2c271e3c262b24211b232c251c25242a45473520 +37171e34119ffcccb6eaddd0d46dcfcdb747296c4d445241444d372c2a25 +18292c1d1d334c542b4c393c343d3b13fde3e8ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffe5c7bec2a7b6f678 +91564936242e33362a363835353d3433331507815f53545754565d5a635f +5d564b3d363633333d373a33191a2b29121d465b81bcdccd844884caffff +ffff3843272612171a1715101c21151a2220241b1b11141326ff9c696353 +4550565e615d5c5a534d4d4e4d4f515353524f4e4d4d4d4d4e4e4f4f5353 +4c5158524b5258554d484b5153534c4544433f393936313133373b3b3535 +3a3f439f9798989297a19e9496999a99999b9b9d9b9b9d9fa09f9d96989c +a2a7a8a9a9a8a4a1a4a9aaa5a0a0a1a2a3a4a4a0996f58514e3b344a6167 +66686869696969696b6d6e7072757779797d82848791998c8e86543d3886 +d8fffafff067575a51627a745a43578992949ca09c9798999a96989c9ea1 +a09e9da5a39e9a98989795999693979da2a3a19fa3a5a3a3a3a4a5a3a39f +979192989a8f89848895a7b4bbb9b1a4a5955b2c401c15141513100e0800 +00200b11162f3100141e0a001e00082231041d376206f820b0620030bdf7 +5812332551290a0e2523143a4359420447e40e00c31f0cc317202b293f27 +0e004ba73c0b090c17130e282b210f152f414b657f93979aa2a3ff21292f +3129271f6e8f1e3cb31c66005e2630320324586e703229253e102f3f3a2d +274c69acdfdeffc61946688bc8deebd4d4cab9d9ffdad8d5d7dad8d9d7d8 +d5e4e3e7e4e3dddbd9d2dcd5d2dedbd5e3f3fc512a14291830354a6e6a49 +568fb2f1d9c05f4238084b675b170c121c110f0f0d0510141b352f748308 +11232b0f74985a9bb7acccb9949d9574431168312321574a031f31252530 +20171b202532413c5b3b17162f350bd2d8c7c9cbdddddfd3d1d3d3d7d9d9 +dbdfe2e5e5e9eaedede0dfe3e4e7e6e9e2c5cadde5d6baa6a8a9c0de9d87 +9ca5b27d6766604345453034262744162f5391d3e0e3e2d9d6d5cfe1e5ed +ebdbc2aaa4a8a6a19b9e957a6359542e1c2912000709141b176ab7e5eefb +ff684f3c3b393a2c242a1f3752454f3224292a4b4a4d3600e6d6a4c4d6c9 +c2c1c3c8c6c7c8c2bdbbbbbcbec0c2c2c2c0bfbdbdbebebebdbab9c1c1b8 +bac2c0babfc4c1bbb8bbbfbabdb8b1b2b8b3a8a29d96908f92969898989b +a0a4736b6b6b656a716e646668696868686a6c6c6c6e7071706e686a6e74 +797a7b7b797572757a7b7671717273747575716d4a352e2b1811263d4344 +4545464646464547494a494b4c4e4e4e5055575a636e696f6635201d6cc0 +ebe9fbe65e4d534b5c726a4d33436e71696a66625f646b6f6c6d72747575 +737277756f69676765656c6966676e7173716d6f71706e6f70706d6d6962 +5e61686e6866656f8297a8b0afa89ea3955f344b2b2a2c313334322c2111 +3f27282a414108242e1e05370f21353e0c21356004fa28bd700f3ecaff5e +14362e603c1f2337301d3e47604b0e59f92817db341fd529323d3c543f26 +1367c55b2d2c2f3d3932443f270600060d04050f181a1f3852e10018282d +27261f7092203bb41e6a0068323b3800153e4a4d1e1f2137001b31393b34 +424c7db2c6f6a600333f263b3c3d2320121f7df2e3f4e8e8e8e9e7e8e6e6 +f2f4f5f5f1eee9e6dbe5e0deece7dde8f1f849200b1d091e233c605d3c4b +85a8e7d1ba5b3e360649655b1c131b261914130e0611141e38367c8a030b +2330168ed89dbcc7baded6b1b2a4814e186b33231e5445001c2e22222f1f +161a1f24313f3a5b3917142e3310e7f4e2e4e5f6f5f9ecedeceff3f6f6f4 +eaeaeaedeef2f2f5e5e7e8ececeeeef1e6eaefedddc8c2c5bdbcb34f1718 +172e110f1c271d303e333929203200001934371e18150e12181523211f1f +1a14151919161617232310050914060c2f271733464a2f196abaf2faf9f6 +502f1c15090b0606151331524650301e1f1f4143483b06f4c57c8a979493 +989a958c898d8f8e89898a8c8e9090908e8d8b8b8c8c8c8b88878f8f8688 +908e888d928f8986898c878a857d7e847f746e68615b5a5d616565686b70 +744c4444443e4349463c3e3f403f3f3d3f414040424243424037393d4347 +4849494b4744474c4d4843434445464747434630221a1702000e25292829 +292a2a2a2825252728282a2c2e2e2e2f343639424e4d5a5930242679cdf4 +effde763555b4d50676b543438514436373e3d3c3c3a3c3c404244444240 +3f4544413e3e3f403f45423f3f444645413c3d3f3b3836373a3e413d3633 +38424b494a505b73889caaaeaba0a69762364d2e2b2e323232302a1d0d41 +2a30334f5018333d29103e13263c47172d436e12ff33c6791747d3ff6a20 +3f37654222283b382449506a52175dfc2919dd3723d92d36414057412814 +68c75d2f2e313e3a32453e2707000a110c111f2c2c314458e00010222a2a +2e297c9b2c4bc835851b834a4f46091a414a5129271827001231372e1811 +0a2d5762a27d002f43344e515e575f525396fef2fff6f2f5f3f4f2f3f0ff +fefffffef8f6f7f8fff6eaece7e8feffff5e280211061e1f335754334583 +a9efdcc8694c4111547065221920281b1716120b161c25413e87940a0f25 +33209be4b0ddebd7f2dcb5c3b994602a7a402d295d4c052335292935251c +20272c394a45674623223c4116d8ddcfd5dcf2f5faf1f1f1f2f4f4f2f1ec +eceeeff2f4f6f7e9e9eceef0f0f2f8f7ffffffedd1c6c9c6cdd177474945 +56312833382c3946383d2e283e04142f53675a5856505258546161605e53 +453b3a37373f3e403a261d262e1117475e7ebadcd0864c84c9ffffffff60 +44342c151311101c173352485233222727494a4f410bf4bb636261524d56 +5c605c58554e4a4a4a4b4d4f5151514f4e4c4c4d4d4d4e4d4c54544b4d55 +534d5257544e4b4e535055504b4c544f453f3c35313033393a36373a3f43 +9a9396979298a29f9193989a9a9b9f9f9e9c9c9ea0a1a09e95999ea2a5a8 +a9a9a39f9b9ca0a3a19e9d9ea1a6a7a49e977d5d5c674f2f2f425a5c6469 +6b6b666465696b6c6d6e707177777a7e81838c948d8c7c4c5786e4ffffff +ac585365496f58777a6243528694959ea29b969a9b9b99999a9b9d9ea1a1 +a4a29e9d9a989999969596979a9ea2a5a2a3a6a7a7a8a9aba29893969b99 +8e838d8e98a5b2b5afaba8aeaca98e4a32441818171616130e0e1019191d +06a9b6f0acf26eed00ed351c151622ec47ca01ff08e1280063b23912332b +10e2f26a203520293979f6790028ef0000db0001df1c2b41bb6e42226488 +22000e26150a0c1c13252d2a324e63737f8d8e8ca0bcb4ff011d2e2a2327 +3097ab501ab50094a4996791bd422d29586f4b212fb71f38433726305274 +b6e3e9ff691f2f3c71b3e4eeede3d3b7d7ffd4d4dbdedfdededcdcdadedc +dddeded7cdc3e2ebe6e7f8f4e9eff7e30b2b1e1430152f33576d56476e9d +bbd7c6af3336068a594d120f1c281d1a120f0911131d332d63a014181e17 +152f5c6882afaea4baa38b7e5863134f092073704f1c19092a2c20171418 +1817273d6283520f1d2f2606a9ead8d6d7e5e1e2e5e5e4e6e6e7e5e6e6e8 +eae8e9e8e8e7f0eff0eeeeecece5e0e2eae2c3a69fac9abbcdc4729e93a0 +815d6465423137283c815a0b293d2779cfdcdfded4d5d3cad0d2dcddd0b9 +a09aa0a19c9e9f99866861603a232d1700070b17211a6ab6e4eefaff973b +3d343e3432292c1c304839402a1e262c514e4b2e0099f3abb8cfcbc0c1c6 +cac7c5c2bebbbbbcbdbebfc0c2c3c1bfbcbcbebebdbbbab9c1c3b8b8c0c0 +c1c1c2c2c2c1c0c0c2c5c0b7b5b9b4a9a9a59d96929396989a98999da16e +67696a656b726f61636769696a6c6e6d6d6d6f7172716f676b7074777a7b +7b74706c6d7174726f6e6f727778756f6c553938432c0c0c1f383c424749 +49474544464849494a4c4d50505357585a636d6d705e2f3a6bcaf7f5f99c +4a475a3e6552717056353e6b736a6c68615e666f716e6e6f707172727374 +726d69666465676a6b6b6c6d6f72726e6e6f706f6d6e6f6a625d636a6b65 +606f77869aadb5b3aca5a9a9a88f4f3c522a30313438373535343c383b1f +bdc8ffb9ff7eff0cff5135282328ee43c600fd0ce932036dba3f16322d18 +efff7d33442a303b79f87d0335ff1617f31114f02d3c52ce835a3a7da13e +152d493b32343d2c30271108111b180b0a060b316986fa01222d261d2435 +a0af541bb60099ada475a0c54423153b54391628ae0d2538363138475889 +bad3fd4f04211c2139463a322921287ff3daecececebeceaeae8e8eaeae9 +eceae5d9d1f1f7eceaf9f4e9f1fbea183728172709252a4a5e45355e91b5 +d4c4ad2f2f00835d571b16212e231e1411091216213c376ba71516191513 +4bafc9c2d6c6b6d5be9e8d656b1a520b20706d4c191606292b1d15121615 +14243a5f814f0d192d220bbcfff2f0edf9f5f4f7f5f2f2f3f4f3f0e9e8e8 +e8e7e8e6e7eeefeeeeececeaebf2f4f0e2c6b2b9cab3beaf820f22091b13 +001628191a302b448657000f1600243b251d1710141d181a18181b191314 +1513110d13191a1000000f01042722122d444b321c6ab9f1faf8f77e1e1f +1110060a09150d2746394028181c214747463308a7e58782959890959a97 +8f898a8b8a898a8b8c8d8e90918f8d8a8a8c8c8b8988878f9186868e8e8f +8f9090908f8e8e8f928d8482858075757169615d5e616568696a6e724740 +42433e444a47393b3e40404141434241414343444341363a3f4345484949 +46423e3f43464441404144494a4741423b23222d160000091f23292c2e2e +2b2825262829292a2c2d313134383a3c4550545b532b3e74d5fffafb9c49 +495e446444636f5a35334e463739403c3d3f403f43444445444344424444 +42413e3d404443434142434344433c3a3938363534393936313842474544 +57657a94aab5b6b0acb0b0ae94533e552c3030323735323230383a3d26c6 +d6ffc9ff8dff17ff553a2f2c34fb52d50cff18f43c0c77c54b22403923f7 +ff833a4b343a4885ff880f3dff1a1bf7161af7344359d4885e3e81a53f17 +304b3e34364230342b150c161f1f181c1a1f417186f3001b2927212b3ba5 +b8602dcb17b6ccc290b7d8532e1e405b451c209f011e363120130f0f365e +70ad2c001e1f2a485d5f69685d5697ffe6f8f6f5f7f5f6f3f4f1f6f3f5f5 +f6eee5defffffff9fbf4f5ffffff293310022a13232142573e315e91b9db +cfba3e3f0e956960221c252e211d13100b161d2a454076b11a191d1a2057 +b5d2dbf5e2cadcc5ada2787e2c61182a7b7653201f0f3131241a171b1c1b +2b43688c5a18273a3011b6f8e7e7eaf8f6f6f9f5f2eeeaeae6e8eef2f5f2 +f4f2f3f1fbf9fbf8f9f6f7f7fefffceccbb2b6c8b7cdc9a83d543a46361b +2e3a29243830478a5e081c2809416b5e5c5852555a54575556574f413734 +3334383c3a352a18232f1213415a7bb4dbd28a4f84c8ffffffff91343727 +1d1015141d122a473b422b1c24294f4e4d390fa8dc715c63594e545d625c +55514a474a4d4e4f5051535452504d4d4f4f4e4c4d4c54564b4b53535454 +555555545353565b564f4d534e4545423a35313237383735363a3e969095 +98949aa3a096979a9a9a9a9e9ea09e9fa0a3a4a2a19ca2a6a6a6a8a8a69f +9d9b9b9c9e9f9e9d9da1a8a9a39c967d605a66625444363a404a535c6163 +6364666b6c6c6c6d707775767b7f81878e8a8a9baae9fffffcad6c506766 +675c4f5b787c664750829295a1a39a969c9e9d9d9d9d9d9fa0a3a4a19d9d +9c9a97999c97969898999da0a3a6a3a2a8acacabaa9d9a97908989949fae +b4b9b7ac9d9495a4acafa7893e343e12181512150f090f130c081e00e100 +60a89200ea00e2005df0703afc000a1bff00f23009c2b0b31d240f20f4be +0b00200028882dbcb20022990003dc0001de00003787100000237b722200 +0000000000141c2430425263718e9ca7a599858df8001e2b2e2b261c5c9a +141ee32412ed133f81b2245c27455e4a2224f1203531322c3d5881bde6f9 +ff262a26295d9edee9eddbe6b3f3ffd9cad8d9dcdcdedddedce2dedfe1e6 +e0d7cbe6dfdde6ede3e2f0e42309363c33091b1b333b5c7e5a498298b0c9 +b59d353b5f284132382d1f0b0d0f110a100d152d253c402d2f38212b0d42 +1a3f5297ceaab6b0b8837a0052253c51aa6a143526261828292216141f26 +255174592034341c039beedfe6e8e5dbe2e5e4e4e5e5e7e6e5ebeaecebeb +e9e9e7eae8e8e6e6e4e4e3e4dfe5ece1c5aaa0a7b6caca6d97a5af8b5d67 +6a4b26281c5e357d2128252663c5d9dededbddded3cccfd9dacfb9a1989c +9f9ba09d99946f6764432a2a1400040817211a69b1e0ecfcffbd323d2f3f +3739322816191d0c0c1d202b2a2d1d13050041ffc5acbec6c0c0c9cfcac6 +c3bfbdbfc0c0c0bfc1c4c7c3c0bcbdbfc0bebbbfbbc3c7bdbac1c1c0bdbc +bfc4c4c0bbc1c2bfb9b6b6b5b2adaaa59f9997999a9f9c9c9fa46a64686b +676d73706667696969696b6d6f6f7071747573726e747878787a7a78706e +6c6c6d6f706f6e6e72797a746d6b563c3642403121131a202a353e434545 +4547494a4a4a4b4d545253585a5c626a6c6f7f8ecff6f6e397583e585859 +4d445472725a393e69716b6f695f5d6872737272727273747475716d6a68 +656163686a6d6d6d6d6e7071726e6d7173706f70676666625e6272849ba7 +b4b7b1a7a29fa4a9adaa8d47425027323232393632383a302a3c12f51270 +b5a205fe05fd1879ff7e40fe000617fd00fa3a13ccb8b71f26152affd11f +0831062e8a2cbbb4002fae0e1bf10d14ef0404489a2307073b948a3b1917 +1b241d1b271c1108050508060e13222f3d4a7aff072f2c282124266aa118 +1fe52517f6205091be2b581b2f483a1719e50f27293436434a6494c2e5f4 +0e151c13203848352a1d3b2f9ff3dddee6e6e6e9e8eae8e9ecebe9eef0ed +e1d9f9efe2e4e4dadef4f13a2a585a460a13162a2c476540347290b0cab5 +992c2b5632523b3d2e21101214130a0f101c37324447323032172329a996 +9c93bbe4c2cdc1c58e830455273c4fa767113225251725272014111c2322 +4e71561d31311906adfff4fbfbf6e9efefede9e9eaeae9e7eeeeeeefeded +ebebececeaeae8e8e6e7ede6e4e7e1d0c3bfc3c2b69412211b2619001429 +1f0c1e1f663d7e1a1406001536221c160f19211d14131217161110110f0f +0a1111121300000b03031d1d15294149331a66b4edf8faf9a616210e1309 +11110d030e190a0a181a212023181008064cf3a67e8a9490949b9c958d8b +8c8c8d8e8e8e8d8f9295918e8a8b8d8e8c898d8991958b888f8f8e8b8a8d +92928e898f8f8c868383827e7976716b656264676d6d6d7075433d414440 +464b483e3f40404040404244434445464745443d4347474648484642403e +3e3f4142414040444b4c463f4137221c2a271b0b000309131b26292b2b28 +282d2e2e2e2f313836373c3f414750545c738ad2fdffe99a573c53555850 +424464715e39324b44393e413d3f4343434748484746454647433f3f403d +3b3f434141424040404040423c393b3e3a393e3b3e3e3e3c45596f8c9eb0 +b9b7b1adabb0b4b8b3964c45522831302f37332e34352c2b3e19fe207fc5 +b113ff10ff1c7dff874cff0c1526ff0cff441dd6c3c32c332134ffd8260f +39103a973ac9c10c38b3121ff6131af60b0b4fa0290c0b3f988c3f1c1b20 +2822202e2417100c0b0d0c1b23333f484e74f500292e2c2929276ba92431 +fa4135ff406eabd63e67293b54451d13d9051e26291d170b143c6486a900 +101a152545615c62597057b6ffe8e9efeef0f1f2f2f2f1f6f3f3f6faf5eb +e4fffff5f1e7ddedffff633348382a0e2012212542613f33728eb0cebda7 +3f456b3e5a444332200c0e10100a141726413b4f513632341f3235a896ab +a9d3f9ccd5d1d8a094146434465ab06e183b2d2d1f2c2c251918232a2957 +7a5f263c3a240db1fff7fffffef2f8f8f2ede8e6e3dee2f5fafbfbfaf9f8 +f7f9f8f7f6f5f4f3f3f6eeeaebe1ccbdbac6cecfb63e534e543d192e3d30 +172724694083221f150d2f645b5b57545b615a525053534f4237312f3235 +3c343031161f2b141539547baed6ce894c81c3fdffffffb82c382320131c +1c1609121a0d0d1c1e29282b1e170f0e4eed925c5a5950555f656156524b +4a4e5151515052555854514d4e50514f4c524e565a504d545453504f5257 +57534e5456534f4c4e4d4c4746413c363638383c39393a3f9590969a969b +a39f9a9b9c9b999a9e9e9f9d9d9fa1a2a1a09da5a9a7a5a8a8a59c9fa1a2 +a09fa0a2a09da0a6a7a19b987c62575e656a61503d3d3e3f444b5054595c +606161606164696463686c6f73766576afe1fff5aa4f4d576e6e67656c55 +5f7474634c588590959fa196939a9f9e9d9e9fa0a1a0a2a19f9e9e9e9c98 +9ba19d9896979d9f9e9ca79f9ca4aaaaa7a5969394918d92aac0b1b0aca5 +9d9a9ea6a7a9a49f873d36300b16120c110b040f0e0d1f0800f05ff1b0cc +8df044eb6000211442f448e000f607e7314b32794257525655845451826f +696569809344656561516aac0000bf797b6972887d90705a6b718a87726e +79a27d4c293b64777a7c8b999fa9dbeee9ea0023263231270e1717190c23 +00250e00030e21004e19295b543c18a32e2a3139324b5c92c8eafedc122a +262e4485c9e7ffdcd18fd4ffe1e3dbdee0e1e4e3e5e4e4e2e3e4e8e7e5dd +ddd8e4f0f8fffff75d0014485e49201f1534304985784e5d88abc1cabb5c +341d1f3523271e1c17220e141115141c352f441d2f2b3e2c320637150d2e +7aadb9b8bdb8969e056a4838273b393a341d2e1d1b1e1c1518242f333343 +4f2f3730281468eecedbe2e1deece9eae9eceff1f2eededbdedfe1e1e1e0 +dddcdedddfdfe2e5e7eff7f2d9b8a7a99ca5bfd06791a5a79c6867665a36 +32262e1a5e122234294ec3dce5e8e5ecece0dcdee4e7dcc6ada3a0a29da5 +9c9aa0796b644b2f200f00000517221a67aeddeaf9ffd94b4a37383c3135 +262328211e1b1427363b291f181a000feedda9bbc3c0bcc7d1cec8c5c4c1 +c2c2c1bebdbec3c8c7c3bfbfc2c3c0bdc4bec4c9c0bcc0c0bcbababec3c3 +beb8b8b7b9bab7b5bac2aeaeaca8a19d9c9ca29e9da1a86964696d696e73 +6f6a6b6b6a68696b6d6e6e6e70727372716f777b79777a7a776d70727371 +707173716e717778726c6d553d343a41463e2d1d1e1f23282f34393b3f41 +4242414242474241464a4d5156495d95c5f5da913638445b5d56535c4858 +6e6c583e466c6f6b6f6a5e5c68737472737475757473736f6b6a69656164 +6c6e6c6a6b6f716e6c746c697076747172686a6d6c6b7693b0a6acb0aeab +abb1b5ada8a6a38e4845442433312f38342d383531412618ff71ffc0dc9f +ff5aff7d1c38274cfa47de00f80df13e593f83485d586063986d6a998377 +6d6c8295476d7276697fc10c0cd0888a7a859b92a888728089a7a899959e +bd87420803171a0f05091a2b4a9acfe8fb0733272b272518251e1d0d2500 +2a19061621310250121b4b473009921d1d2e3b394b4b77a3c9edcf001a21 +201c343f373a1c2d1385ebe4f6e8e9e9ecedeeeeefededeceff1f2eeebf5 +eeecedecf4fbfd75134b828e6a2a1c0c24172a625430487faac6ceba5322 +132b482a2619181929181a111413203f3b4c24392f351c2323aba88687aa +c8cfcacdc5a1a70c6d4a38253a3637331c2c1d1a1d1b1416222d3130404a +2a312b221473fedee9eeebe5f2edeceaebedf0f1f1ebedeff1f2f3f2f2ee +eeefeff0f1f3f2ebeef2edd9c3c0c7bbb6b3a3121d161724031121291826 +273624630f151c09042f1c16110b161e1915131316160f0d0e0f120c140f +0f190000060809161c1c283e47321a64b2eaf6f7fac432301a0f11071108 +0e1c1b1c190f212c311f1a151d0c16e5c3828c918f8e999e99918f8e8e90 +908f8c8b8c919695918d8d90918e8b928b91968d898d8d8987878b90908b +86868587878482878f7b7a78746d69686a706f6e7279423d424642474b47 +424342413f40404243424244444544433e464a48454848453f4244454342 +4345434043494a443e4334221820292e281708090a0b12171c1e1f212526 +262526272c27282d3134383f334988c1f6df953a373e55554f4f5c42485e +6a5c3e3a4e42393e433b3d45464447494a4a484545423f3c3b3d3c3a3d44 +403b393a3e403e3c453d3a4147464347444a4e51526183a3a0a9b3b5b6bb +c2c8bdb8b3af984e4845212f2c29332e2732302d42281fff7fffcfebadff +65ff81203e2e56ff55ec0cff19fb4762488d5469666c6ea17471a18c827a +7b91a4567a7b7b6d84c61212d78f91818ba197ac8c76838dabad9e9ca6c6 +904b110c1f22150b13253652a0cde3f304332c332f2a172526291f3a1948 +3927363f4b1865242c585134048a1515272d18170320486a938b001a1e1f +1d3d585e6f555f389bf9edfdf0eff2f2f6f4f7f5f6f3f5f5faf8f7f4fff9 +f7f4eefdffffa1314869684b2c250517102560542e4378a5c2cfc2643c2b +394f342e1f191622101611191b2b4947572e3b3038263631a8a28e97c0db +dad4ddd8b3b81c7c574230423f403b243725202220191b27323637475131 +3b322c2085fff5fffffffffffffffef9faf8f7f8f3f7f9fbfcfdfcfcf8f8 +f9f9fafbfdfbf4f6f8f1d9bfbcc5bdc0c9c43c4e4b484a212c363c24302c +392667161e29161d5f585a57555e665e58555757534539343035373f322e +391c1f281a182f507fabd3cd894c7fbefaffffffd54749301d1b131d1215 +201d1f1c1325343927201c24151ce0b261605c54525d67635953504d5153 +524f4e4f5459585450505354514e5752585d54505454504e4e525757524b +4b4a4c4e4b4b505a464846443d3a39393d39383a419591989c989ba29d9b +9b9c9a999ba0a19b999a9b9e9f9e9c98a1a7a5a4a8a9a6989ea4a5a29f9f +a1a49f9ea4a59f9b9b88695c5f5c5c646a685e50403835383b474a4d4e4e +4d4f504e48454a505255575d617c75695159546b6969677a595d5f5e6e6a +5e51628c91939fa195929a9f9e9a9c9fa1a29f9e9ca19fa0a2a09b9fa7a4 +9a95989fa29c95a196919aa3a29e998f7c7c97b8c5bdafada49c9da1a29c +99a5a9aaa0823437350d1a150e150d05120d0a1b2400273f2600513a0e26 +3a3702141c0046112000f900acb1a48dadb0bb958884714f5a6857589585 +395e81826f6f73674952504e5a5d66555c6259656768625f5a64716b7e17 +1e3d646d62708e9b9a8f6a45195daa002a1e28282c241c272f212348bb94 +989d827ea493471f3c59460e2b4115312a30515ea3d4ebfbb211171e2d29 +70b6ecfce2c095bcffd1ddd8dadbdcdddddddde0e1e1e0e0e2e6e6d1d8ea +e6ebffeda900092e275084332e2e322c376385724a7285a8b3b2a2493736 +39192229260b0000080a11111e383626432b0e233b40143d00102c75beb8 +b5b6604a9a0151413b3b3d3d32211e261e343c484324112c583327442e21 +1d32233ff4e1e4e2e6dfe3e8e6e5e5e6e9e9e3e0dddedfdfdedcdbdddddc +dcdcdcdde1e9eaeeeeddc1a8a09eabbbe667a0aaaba77062596249483825 +3421242f402442c0dbe6e9e7efeee0e4e3e8eae0cab1a49ea09da39997a3 +7c6b624d30160700000318241b67aeddeaf2ffeb6e5e462f403641282c2d +181c1621363a41242115191305d6e5aac3c4c0b7c5d0cec7c6c5c4c2c1bf +bbb9bbc1c6cac5c1c1c4c5c2bec6bdc3c9c1bcbfbebdbdc0c4c7c6c1bdb8 +b6b8bbb6b0b8c6aeb0b0ada6a09e9d9d99989da569656b6f6b6e726d6b6b +6b69686a6d706a6a6b6c6f706f6d6a737977767a7b78696f757673707072 +75706f7576706c6e6045373c38384147483f31241c1b1e20292c2f30302f +2f302e28252a303235384248625a4f373f3c5355555566464a5057686253 +435073726b6f6a5d5b6873746f7174777673706e726d6c6e6a646871726b +666871746d667469666e777672706d60607da2b3b0a8aca8a5a9b1b5b1aa +acacada68c41494a263735333c36303d362e3d420f3e523803634d243e55 +541f30330450172400ff02bdc4b89ebbbdc8a3999b8c6e7985706aa18d3f +64898c7d838b7c5e65615d696c75666f776e7d7c79757b79899389901508 +0f2016000017222d362a221066bd04331b20212c2f282e3322244ac09da7 +b09792b29945162f4d3a0018300b332f344c4b86b3ceeba8010b1d280f2f +3a433a23231d71edcfece3e3e4e5e6e6e6e6e9eaeae9e9ebeff5eff5f5e4 +def6eab90b4478728daf462c1e180a1036594f316681abb8b29a3a2e444c +1b1a1e20100b0f150e100e1e40402c4a371418272f34bca29e98b4dfcec3 +c36b52a10755433b3a3c3a31201e261e353b4742230f2a5630243f291c18 +2d2145ffededebede6e8eceae7e6e8e8e9eaeef1f2f3f3f2f0eff1f1f0f0 +f0f0f1efebe6e8ebe1cdc0bebdbfb6c1172c16132804050f2d293b372d3e +2925252f0a00311d171009131c1418161517150f0b0c0d130c140c0c1c00 +00050d0f141d24293f49341c65b2eaf8f2fad657462a09160a1807151e0f +17111b2d2f371d1c121c1b0aced28b99968f86949d9b93908f8e8e8f8d89 +87898f9498938f8f9293908c938a90968e898c8b8a8a8d9194938e8b8684 +8689837d85937b7d7c79726c6a6b6b6a696e76423e444844474a45434342 +403f4142453f3e3f404142413f39424846444849463b4147484542424447 +42414748423e443d251a201e202b31332a1c0e060205050d101314161516 +17150f0e13191b20232d3455534e3a423c4f4c4c495d3f4649455a605743 +465546383e433c3c4546444244474745423e3c3e3c3c3f3e3b3f45413732 +3740433f3a4a403c4752514f50524a4b6c94a7a7a2aaabacb5c0c6c4bebf +bdbeb496474d4b2333302c37302936302a3e441646604612715b2f485c58 +2334390c5a23300cff0cc5cbbfa6c4c6d1aea3a393737e8b7774ad9a4d72 +9698888a8f81636b686470737c6d757c738181807b7f7e8f9c919a22141a +2b1f01021b29333a2b200b63bb073a242b292e2b26343f343963ddbec8d0 +b4adccaf5a2940573c00112902281b0f12002a5472966d000d1b240e3752 +6a6c57504188fedaf3e9eaebecededededf0f1f1f0f0f2f6fcf7fbf7e7e5 +ffffdd2e5469516491402d1107000933584b2a5a75a0b2b4a74f434f5327 +2526240c04080e0f15172a4b4a385237141c324241b5969fa2c5f2dbd0d4 +7d65b317614f4542444339282630263a404c4728142f5b372b4630231f34 +2e5bfffffffffffffffffffefaf7f6f5f4f7f8f9fafaf9f7f6f8f8f7f7f7 +f7f8f8f8f4f2f2e4cdc0c0c2cacce03e5b4a44512422264136453d30402c +2a2d3915155f595b57545d655b5d5b5a5a54463b332e35373f2f2b3c1d1f +241d1a294e84a9d1cc894c7dbefafffeffe76b5e4016201726121d23121b +151f32373f242219232610cbc36e7164574c5a6462595451505252504c4a +4c52575b565252555653515a51575d55505352515154585b5a55504b474b +4e4a444e5c46484a47423c3b3a383431363e97989a9896979da1a19d9b9e +a2a39f97a09d9ca0a3a39d979aa2a6a3a3a5a4a09d9fa1a1a0a0a1a2ada8 +a4a3a09a9999936558646161635c575a60615f5a524d4747444241464c52 +5452505359616869726f6c6969686a6b6366707774645c595a666b5d436d +8a8f929494969b9ea0a29b99989a9fa1a19f9c9b9e9f9a959aa59f9f9e9d +9b9b9a989392949694908d8793a2b6bab3a9a9aba8a6a4a3a29f9e9ea5a2 +a7a57d22541f18151312100e0d0c1a0517120097819b840b463daca45a00 +0c0546d2d49835f0000900000000261200000000000301006ef1e66bf5eb +f4e4ece2f0f0daf2f4e8e9e8e0d8dcd5b9cbcbbac2c6b89bafd11c3e5961 +656f808697857052332c58a500282d2b282227242d12343375c5648cb855 +979977cc03384a492c223d232b25444d75b4d0e9ff551b0d0d27383ca3df +edf0b99ac0ffd9dadbe3dbede0d7dfe1e1e2e5e6e5e3e1d8cedfd9e3fbf8 +f600001121213d573076424a2e493c6c8f514c7e93b2b8ac745e51652a1b +3c1914000006071a1122293338655300103d18102900021561b6a9beb45e +319d01593c1d24757f231d1f221b0d150f27151c1846386c8b1f11302c2b +1df8e1efddebdde9e3e3dee4e0d9e9d8e7e0e0e6e6dfe0e8e1e2e2e3e3e4 +e4e5eaeaebe9dbc1aca2a996b6df6390abaeb380666b674b404736214c27 +1924213b9bdde9dde4e5d7d4d5e2def3dcc9b2a5a39d9a999b9a938a6355 +4a240903000000141d156aacdaf0feefda79433f31373e34362d191f3334 +3a2532432a121d2b190088ffb5b3ccbec2c6cbccc7c1c6ccc1bdbdc1c1be +bec2c4c6c6c2bdbcc0c5c6c0bebfbdb9bdc5c2c0c1c3c3c0bebdbcc0c2bf +b7b1afb1adaaa8a7a29b9a9d969599a1a86b6c6d6b696a6d71716d6a6d71 +726c666f6e6d7174746e686c747875757776726e707272717172737e7975 +74716b6a6c6c4134403e3d4139373b4145433e36322928252323282e3436 +3431343a42494d5756524e4d4e50524a505a645e50474853626554375c73 +706a645f5e646c757a716f6e71747674726d6c6c6d6661656f6a6a6b6b6b +6c6d6e6b6e717474726e6e8094a7afaaa4a5ababadaeafb0afafaeaca7ad +ad8a31673732343637383738374329393115ae94ad961d5953c4bf771c2b +225de3e1a23ffe0920171b080b3a2606111b20252a261e86fff477fff7ff +f6fff9ffffedfffff6f7f6f1ebf0e9d0dfdccbd9e3d6b8c3d80e1a1f1305 +040d1833353e372f3662aa002025252726302d3216363477cb6d99cb6aab +a97fcd002d3f3b170d2e1c312d45445d96b2d1fa4b0e030f282a0b374834 +361e2477f3d6e5e4eae2f4e7dee6e8e8e9ecedeceae8e9efffeae8f3f0fb +0e2d607b79838847742a250319093b66333b7692b4b7a7685a5f73260b2a +0f1e080d1f111b0b1e2d393c6c5f0205290530afada192addfbfcabf6939 +a4075d3e1d23747e221b1f221e10161028161b1745366a861a0c2b252821 +ffe9f6e4f4e6f2ecece7eeeae3f3e2f2ebebf1f1eaebf3ecededeeeeefef +eeebe8eaebe2cec0bdc7acb7be171b110d2f11051b2d272e443e2c562a14 +170d00182b250b0c0f090d121e13281a140f0e13110b0c0f111111000012 +0d1224263039432c1366aee7fefee4c7612c260f0d1008121206142d2e34 +1c273923101c2e1d0084f69b8fa08c8f93989b958d8e948d8b8b8f8f8c8c +90929494908b8a8e93938d8b8c8a868a928f8d8e90908d8b8b8a8e908d85 +7f7c7e7a7774736e67666b64666a72794445464442434549494541444849 +413b444241454646403a3b434744434544404042444443434445504b4746 +433d3c42451d12202223282322262c2f2b261e170d0c0907090e141a1e1c +1c1f252d3538424245474a4d4f4e43434d56534742404356655939525444 +3734373d454948473f3d3c3d3f413d3b3736393c36323941363434383a3e +4346474c53585b5a595a728ba0a9a5a0a4adb0b5b8bbbdbebfbebfbabdba +93366b372f2e2f2f302f31303d253a331cb6a2bba42b675ecec67b1f2e26 +63ebeaac49ff10261b1f0d11412d0e1a23262a2f2c2590ffff85ffffffff +fffffffff4fffffffffff9f2f7f0d6e6e4d3e1e9dec0cce21b282d20100c +121b3534372e262e63b0092f322f2d272d2c382145488ee58cb9e987c6c2 +96e2103d473b140829142515190307345077af1a060b0e2227114e6b6065 +484792ffdfebe9f0e8faede4eceeeeeff2f3f2f0eef0f8ffe4e4feffff33 +405b5f515e6a3565120b000d053762292b6380a6b2ab7669687c34183617 +1d0104191220152c394548745f020934193da8a09d98bbf1cdd8d17b4cb4 +15694a272b7c862a26292e27171b152d1b211d4b3b6f8c2012312c312cff +f6fff4fff7fffdfdf6faf4ecfcebf8efeff5f5eeeff7f0f1f1f2f2f3f3f7 +fffefcf8ecd6c7c4d1bacbd93b47433f5732243443353a4b412e582f1a20 +161442656752575951525660556856493e3736343737322f2d301b1c1f15 +234f7faacac781447fbbf7fffff2da77463c1d171d171e1b0c1831323821 +2f412a152235290981e9826b7359585a5f605a5153595150505454515155 +57595955504f53585a545253514d515956545557575452504f5153504a44 +4347454242413e37363a3130323a419092959695979da19797999b9c9c9d +9a9e9d9d9fa09f9b9799a1a5a3a2a3a19c9ea0a2a2a1a1a2a3a4a19fa09e +9a9898956b5a646262645c5e5f63666766646366676a6867696c6e747271 +73777a7b79726e6c6968696b6a6a6c747b796e65605e636657518c929298 +9a9a999b9d9c9c9f9d9b9c9f9f9f9d9f9b9898999ba5b29e9e9e9d9c9b9a +988c837d7e8799acb6a9abafaeaaa7a9aba5a5a4a3a3a2a2a3a9a3a59f72 +1f4e1c161411110f0e0d0c002b111557cd00c7dca6aebcb168d82d6f520d +a3c20055d9001b161d130f2d19101516141214131100568280b1b443a3ad +8b93a537ada73ca3a71e9dab27999d267a95304ba3c47a334d5f63657285 +8b896c4c2f192158a00c31312b251f2825223d0d0703b65878aa66949f87 +a87504414d3d27302b2b294d547fc1d7f2ec52fa0c111a2a319acae4ecc2 +9dc5ffdddecfd9d4cef1eae4dce0e0e0e1e1e1e1dbd4cdd8e9e2fb1b0014 +2f19115621737e5f673637366282754c6791a6b2b69e65424a3024261800 +000000011f222a1f223b4e4318283120002a00001051aeacbdc86d32ab0d +3b3f2d4669b63009231d0a122d2f272822262c406b853b1629412115f9ea +efe1ebe1e6e7dcdce3daefebe1ebcdbecfeff4e6d4e4e2e4e3e5e4e6e6e6 +e3e5e5dac3afa49ca2bdde938fb4b3a688686a65502c241f634059011b2f +2d89d3e0d4e4ebdcddd8dbcfe4d3c3b4b1a8a5a3a2a5a3a1986a594e2e11 +05000000171b1964aed9f1f8ffe0bc3c4b283d423938301d1d282029231a +2d2135373f1c0b43f3d09fb0c6c0c2c5c6c4bec1c5bfbcbcc0c1bebec1c5 +c6c7c3bfbec3c8c4bfbdbfbeb8b7bab9bcc0c1bfbcbec1b9bcbdbab2adac +adb1aca9a6a099999c9d9c9ea3a764666869686a6d716767686a6b6b6a69 +6d6e6e7071706c686b7377757475736e6f71737372727374757270716f6b +696c6e4536403f3f40393b3f43484948464547484849484a4c5054545254 +585b5c5d5755504e4c4d4f5152555d6663584e4d565f604d457b7a72706a +6563666b71747674727374747270726c69686768727e69696b6b6d707374 +6a68646774879ba9a1a7adaeabaaaeb2acadaeafafaeaeacb0aaaca97f31 +623531333436373738372452353472e613d9eeb8c1d2c985f74f927429ba +d50e66ed173a3840352e4a362f363b3d3f413f361d6c9490bfc455b7c1a2 +a7b848beb54ab1b52caebe3badb13488a94964b7ce74141b180d040a1b2b +3f3b3a332d36609d001e252528252c2925400f0904ba5f86bb7aa8af8faa +7000363f230d212836334b4565a1bddee149ef04151f250e434538392727 +7ef3d7e5d6e0dbd5f8f1ebe3e7e7e7e8e8e8e8ecf7f0edf2e1fc2a135a88 +7d6e9c4f8a7b4139070604325b5437588ba3b0b397644f53240d1110121f +252716261f241f263d554f1e1d200d11adaca497a9dfc3c6d17639b1103d +3f2d4568b53009261f0c1530322a2b23272b3f69833611243a1f19feeff6 +e8f4ebf3f4eaedf4ebfffef2f4d4c2d6f3fbeadbe8e9e8eae9ebeae9e8e7 +eaece3d1c1bbb8b7c2c44c1c160d1d1403162727161f246d4a5e00112000 +102f260b1219131a191a08201510121914100d0f13161819000011101422 +222f3c462a1760b0e6fff7f6cda62833081512090f1208111f1a201a0f23 +1a33363f1e0b41ebbe8286938b8e9498948c898d8b8a8a8e8f8c8c8f9394 +95918d8c9196918c8a8c8b85848786898d8e8c898b8e878a8b88807b797a +7e7975726c65656a6b6d6f74783d3f4142414345493f3f3f4142423f3e42 +42424443423e3a3a4246444243413c414345454444454647444243413d3b +3f4520121e21232823272a2e30312e2a292a2b2c2d2c2e33363d3c3d3f44 +47484842414245484a4c4a46474d55564d48464954625549735e493f3a3d +3f46464440423e3c3b3d3d3937393635373639454f3533363a3f454c524e +4d4e57667b91a39fa8b0b0afafb4bab6b8babbbbbababbc2bcbcb5873563 +322c2d2d2e2f2f31301e4d353679ed21e7fcc6cfddd38bfa5194762dc0dc +166ef41c3d3a4237314e3a343d41414244423c2577a09dccd161c0caa8ae +bf50c6be53babe35b6c542b4b83f93b2506bbed77e2327261a0f111f2c3e +362e24212f63a80d31332f2d252b282a491b1819d37ba1d793c0c6a4bf84 +0b3c3e220c1e2126181a00083c5c889f22ed0f14182112566460634f4a9c +ffe1ebdce6e1dbfef7f1e9edededeeeeeeeef3fdf2e6eff3ff55345c7257 +427a326d5a1b170000002e544b26437590a4ae9e6c575c321f201b11181b +1f172c2a302b31495d4f1e212a211ea79f9e9ab5f0d3d7e2874bc11f494b +374d70bd38132f2b181c35392f32282c31456e883c172a41241cfff3fcee +fbf4fcfdf3f5fcf3fffff9fddecde0fefff5e5f3f3f3f4f4f5f5f8ffffff +fff4decfc9c6c8d6dd6e45473f473723303e372326286f4c620419270a39 +64654f5b62595e5c5d4b605147414238363b3c383636371e1d2018254c7b +a9cbc87d4877bcf6ffffffe0bb4149152022191d1c0f15241e251f172b21 +383c472b1542e0a8625e645755595a564f4e52514f4f535451515458595a +565251565b58535153524c4b4e4d505455535052554c4d4e4b4540404349 +4443403c3535393837393c408f92959797989c9e97999d9c9b9a9f9f9c9d +9f9e9c9a98989aa1a5a4a2a09c989fa1a2a2a1a1a2a39e9b9b9e9d9a9a9a +9a745e616264655e6161626467686a6e6c6f737474737371727072747675 +716f716e6d6969696b6b6c696d74766f655d5d595a4754a6908c9a9b9d9d +9e9d9b99a2a19f9e9e9e9b999d9d9d9f9c969294a5a39d9994908e8b8188 +99a9b1b0aca5ada6a2a1a3a5a5a5a4a4a5a6a6a7a8a8ada5a59963214418 +1512110f0d0d0c0d130e0800788e00d3b296e33f515da44f804fd97c2700 +91b00017151b190e1a10181a1813121312141a24f0ecdbf156dcf0d9e7f1 +4bf4f55cf1f45ff2f148e1e634dad35999d2be3d4b5963646878898a6c4a +27160c1c579214393229231f28252b19495dafb99aba9f869db3a7ace729 +324c4d2e1f33272c545e8fcee0fdba3fff6c00162e3d7aa7d8e4cca2ccff +dfe0e1e3ebd8d4d1d8e8e4e2e1e0e1e3e6e1dcc9d1e6f78f00231a221730 +4f20976d9dce843935454e825d49819eafb7bd791a2a4e5a403000000000 +0015242c2332333335293c313c002900010f3ca2b0b9cc7a25a41e2d5935 +3748a33b292e201f2b3339363b201f2b344a5342302437180aedf4efe4e8 +e7e4e3d8e7eacee1baa4dfe5edeee6dde7f5e9e8e9e9eae9ebeae6e5e6e7 +e0cdb8ac9aa7afcdcf7baaafa19a6d6c67612a1f1d44348e4416292a74ca +dccde2e7d5daccdcd4e4d3c9b09cacacabacafaeaca47b63573f24120206 +051a181f5baed5ecf0ffd0f03f532740443b3731231e1f160a23192b1322 +0f1d0c0303f0f898a5c4c6c6c5c7c7c2c3c5bdb9bbbfc0bebec1c2c3c3c0 +bebfc4c9bfbbbabebfb9b3b1b7bdc2c1bcbbbec3b7b9b9b5aeaaaaabafaa +a5a29d989a9ea09fa0a3a66366686a6a6b6c6e67696c6b6a696c6e6b6e70 +6f6d6b69696c73777674726e6a70727373727273746f6c6c6f6e6b6b6e73 +4f3b3d3e3f3f3a3d3e3f4245494b4d4b4e50525251515250505254565552 +505553504d4c4c4e505252565d5f574e4a5555543d4795786c726d686769 +6d7172797674747474716f72706f716d67636372716d6a686a6b6d687588 +9ca7aaa8a4b0ada9aaabadafafaeaeafaeafaeacacb3acaca37033583130 +313234353637373c352c1395a704e6c4a8f6576c7ac371a672f8953b05a5 +c9123d3d45433640333e4244434445423d3b3ffffeecff6af0ffedf9ff5c +ffff68fdff6dffff5cf5f842e7e56dacddbb281d1a130a0b192d3e3f3932 +312e375c86001e242628252a252c1c495daebba0c5ae98afc2afade32128 +3d31121133353a514c71adc8ecaf35fb66041c2b23373b413c302586eed7 +e5e8ecf4e1dddae1f1edebeae9eaeceff2fbebe7f4fe9b0c556b827a898e +48a866799e560f0d202d6543347191a8b3bc7d232d3c3f2b2f11222e2c1c +2624262135353a3f2f36242d12a6a9a69d9eddcac2d5832caa212f593536 +47a33b293022232f383d3b3f23222c3549503f2e2232160cf1f8f5ecf2f2 +f1f2e9fafee5fad3b8e6e7eef0e7dfe8f7eaeaeaebebebececebebf0f3eb +dac7beb3bcb7b98e0d0e091422041326350f151e4c3c93430f1c0006322a +0a14180d180f1f112217160d000b09070a0e12151700000a0f1218162c39 +46241c56b0e2fcf2fbbfdd2d3d081811080d110c0f140d00180e210c2010 +1d0a0103eded807d918e8f959b9a928b8a8986888c8d8b8b8e8f90908d8b +8c91968c88878b8c86807e848a8f8e89888b90858787837b7777787c7771 +6e6964666c6e707174773c3f4143434444463f4143424140414340424443 +3f3d3b3b3b42464542403c384244454544444546413e3e41403d3d414825 +15191e242822272829292a2c2c2e2c2f32363635363637373b3d41403d3b +3f3e4042464648474540444b514d48444a4c58464e8e5c43413c40434745 +413b433f3d3a3a3a37353b393d403f3b393843403f3e41464d5352667e96 +a5aaa9a9b7b5b3b3b6b8bbbbbababbb9b8b8b5b7c3bebcad7635562b2929 +292c2d2e303336302c159bae12f4d2b6ff617580c673a774fb9a420cacce +153e3d4442364135414445434344423f4046fffff6ff73f9fff6ffff66ff +ff74ffff78ffff65feff4ff7f176b3e3c22f28252016151f303e3a2f2220 +1e3060920e31332d2b2529252e215169c0d0b6dbc5aec3d5c2bff42e2938 +3011102b24191c001146689c791aff72001226264853605f574da8ffe4eb +f0f3fbe8e4e1e8f8f4f2f1f0f1f3f6f9ffede4f7ffc3366c5c5d4c5d6f26 +7b32457034000118285d36215a7e98a8ba8028364c523e3d131c24241d2d +2e322c3e4142402f382d4020a2a0a29fa9ebd9d3e6943eba303b653f3e4f +ad45353c2f2e383e4641482a29313a4f5746332738190bf0f7f5eef4f6f7 +f7f0ffffebffdac3f9fcfffffcf4fdffffffffffffffffffffffffffffeb +dad2c7cfccd2ae343d393e46252f3e461e1e234f3f974816230b2b63664c +5c60555e51615361524d3c2a34343a3c3837383a23191c1d284875abcbc9 +784b6dbcf2ffffffd1f14754172322191b1c14141a12051e162913251525 +180e05e6db6459665d57575a59545052504d4f5354525255565757545253 +585d55515054554f49474d535857525154574a4a4c48423e404147423f3c +3934373b3b3c3d3e4195979a9c9b9a9b9a9a9a9c9c9b9c9f9e9b9da09e98 +95979a9ea2a6a6a39e99969fa0a1a09f9fa0a29f9b999b9b9a9c9f9e7e63 +5c5e616362646363636466696a6f737779787675756f6f70717675726f72 +706e6a69696a6b6b68666b706c63575750513a49ad898891969b9da0a09e +9ca3a2a1a09f9d9c9a9f98908d8f949a9f9293949594949390aeaeb1b1af +aaa6a0a09d9e9fa4a5a09ca2a2a6a8aaaaaba9aca4a69556293b16141110 +0e0e0d0d0d1308121237ddcda0a000c85bd5be6100000065d4de1ebf7600 +1d130f150b13140f110e0e0e0e0e10150d2742f2e442c19c9bcae155eeec +55f0eb55d5e04eecf143decec7dddd3d525a62656c777f8276432913100d +1c58801537302824212b262a1e180a271d0e1e1f1e2638333e5f1c264054 +3b19321e31586ca1d2e3ff7d1e979006001f334ca0cbddd3a2ccffe0dcdb +c6d7e6d7dfd8dbe0dfdedddddfe1ded7dbd5f2c10003132b143060326e83 +6bd0ffec7c2b23376674456495adafb7983432463d221c0a00000002020f +253053232e3d1128293e03250805122795b5b7bd85148b38327a2b372e2a +1a4b2c09352e2c2f341837142d423c3a474c33324100cefaebe6e5eae1ec +e0e0d3c8e6ebe6e9e8e7e9e5e0e1e7e0e0e0e0e1e1e1e1dfdddfdfdcccb7 +a6abab9ebafd72adbda4a76e6b676d383d311f24372026282b6bcee8dbed +ead3dbf7ffe8dac7d6ceb5a9a9a9a9abacaba482655c49331b0b13091c1a +2a58b2d5ebfbf4b9f5634c3b3e413b352e2620212215241723282b111631 +1a00cdffa0a7bcc9c7c4c8cac6c4c3bab7b9bebfbcbcbfbebebebcbbbdc2 +c6bab6b5b9bebcb6b1b8bdbebbb7b7b8b8b6b7b5b1aca9a9aaa7a29e9d9a +989ca29b9a9ea2a6696b6d6f6e6d6b6a6a6a6b6b6a6b6c6d6a6e716f6966 +686b7074787875706b687071727170707173706c6a6c6c6b6d7378594038 +3a3c3e3c3e3d3d3e414347484b4f5355545352524b4d4e51535552515452 +4f4d4b4c4d4f514f505459564c464e4b4a303c9b716b6b6866676c717575 +7877767574727171766f666264686e736667696d717577799ca1a7adaead +a9a7a8a7a7abb0b1ada9aeaeaeaeaeadabacb2abb0a2643c50302f313132 +333436363c2f363154f6e3b3b20bde73f0dd8015161084f0f232d6931e45 +3f4043393d3e373a3e4042423e3c36283b53fff656d5b0afdcf363fcf861 +fcf763e6f160ffff50ebe0d8e8dc2d2d1e150d101d2d374030312e37333a +5d74001f2425282529242c1f1709251c11262c2e3645393d59121c31351d +0b352f4152557fb1cff472158b890b051c1f214f4a40341f88e9d5dfe2cf +e0efe0e8e1e4e9e8e7e6e6e8eaedf1f7e9ffcf052b517f748dae658a885c +addfca5f140f224e5929497e9da7b89e3c312f211328414f494f3c211822 +305627324215241f332099a7a5a294dbd0bec48c1a913a347a2b362d2a1a +4d2e0d393535383b1f3b1830453d394449312d3f01d2fef0eeeff5eefbf1 +f2e7defefff9f1edeceeeae5e6ece5e5e5e5e6e6e6e5e6e6ebeee7d7c2b5 +c1c1adb1c60e151a172d0011213c19303024293a1f1f1b00063f3f1e211c +0e1c3d4c27190b232814070605070a0d11140000040f13110d2739492627 +53b4e3fbfdeeabe453391f180c06090d0c0f14170a190c19212912162a16 +02cfff8e83888f8e949c9e968c888684868b8c89898c8b8b8b89888a8f93 +878382868b89837e858a8b88848485858485837f79767677746e6a696664 +686f696b6f7377424446484746434242424242414241423f4245433b383a +3d3f434747433e39364243444342424345423e3c3e3e3d3f464b2d18141a +1f24252726262423232425292d3335343536363132353a3d3e3d393c3a3d +3f41444543403b3b424949463f4547523b459757413a363c414747413c43 +403f3e3d3b3a3b403b36353a41494e3f40464a535961699099a5aeb3b4b2 +b1b5b3b6b9bebfbdb9bebcbbbab9b4b3b5c0bbbcaa673a4b27262626282c +2f3232362a36335afdf0c1c019eb7df9e28317171287f4f939dc9720453e +3d41373c3d393c3e3f40403e3d3b2f445dffff5fdeb9b8e6fd6effff6dff +ff6ef0fb6affff61fceee2eee13034261f191b26333b3e2a261f25263261 +800d2f302c2b262a252b211c11322c24393d3e4655474b671b1a2a331d0a +2e1d1d18071d4870a945069799050017212b60605d5c49adffe5e6ead6e7 +f6e7efe8ebf0efeeededeff1f2f2faf0fff6324e5c65465e8444644e196d +a89d4104061d4a501d386c8e9cb29c3e3741372838444840463d26212b38 +5d303b45162527443099a2a3a39be7e1d0d69e2a9f474084353e35342459 +3a19453f3e4143294421374c423f4b5036334403d3fff3f0f1f9f4fff9fc +f0e9fffffffffffffffef9fafff9f9f9f9fafafafefffffffffbe9d6cad6 +d6c0c6e33244494152232d3b4f293a36282d3f24262210286d785e686455 +617e8d6858485b5a40303138393433353828171a1e2b4672aacbca78566a +c0f0fffffabcf76d4f2d231e18181815151b1d101f1421282e171e3a2407 +caef7663606157565b5d5853504d4b4d5253505053525252504f51565a50 +4c4b4f54524c474e5354514d4d4e4c494a4844403d3f403f3c3839363439 +4038373b3f4397989b9d9e9c9b99959292959b9e9e999b9ea19d9795989d +a2a4a7a8a39d98979e9f9f9e9c9c9ea0a19b969696969ba09f876a595c5f +62676969696a6b6b6d6d7476787978787979757373737779797672716f6d +6c6a6b6a706c686b707067594e474a3639a589908d93989ca0a19e9da0a2 +a2a29f9e9d9c9999959492928e89958f878692a6bbc7beb7aca49f9fa5a8 +9ea0a4a6a7a5a4a2a2a3a7a8aaabaca9a8a3a9964c3635161412100d0d0c +0d0d0025170008000000190000000e0000182b0c163e0000e248071e140a +100a0e17141617191918181a19221444f0f424e8dccadce457ece24cf5eb +36ecf23df0e13cd9e6ddf73a445563686e7a85806f5324160c1410205e76 +0c2d2a2828252d281d412b34243b1e1920161c201d28223c2534524b212d +1939557ab3d5eafd4b120b0420103932265eb9d7dba6caffe3ddd2f5f7d5 +f7dad3e4e0e0e0e0e0e0e0ddd7e6e6e1180410383025413f37936085e0e6 +ffc73b153b407460557f9cada4ac8d774e231f12532e37453f080a1f223d +2f546c071123280a1d160b14198bb5b6b896138459217a252d4857573512 +21cdcbd7c69d26932922402f5b4f15132245009dfbe6e6e4e9e0d8e3ebdd +e2dde4d6eaded5dbe7eae2dae2e2e2e2e1e1e1e1e5e5e3e4e3d7c1ada4a7 +9fabf871a6b7a6a96f6b6265394c4a28272b0e26103b52b4deddece6d4db +e7f0dbdecdcebfabaaa7a8a6a6a5a4a1896a60513c241318101e22365cb6 +daebfbe6b0e7a1394e3d4141382f26202734274749160f0b29412e2b016a +ffce9eaec5c1bec1c4c2c1bfb8b6b8bdbebbbabcbcbcbcbbbbbcbfc2bcb8 +b5b5babcb8b2b5b5b3afb1b5b3adb2b1afaca8a6a5a6a19d9b9a9896999e +96979ca1a56b6c6e70716f6b69656261646a6d6b686a6f726e6866696e74 +76797a756f6a696f70706f6d6d6f71726c676767676c747965473635383a +3f41414143444545464c4e50515151525450504f515357565653514e4d4c +4c4d4e575352555b5a50474543442e2d967373676565666c727776757474 +747473737470706e6d6c6b6764716d676a778fa7b9b3aea7a3a2a5abb0a6 +aaadb2b3b2b1afaeafafaeaeaeacacaeabb3a35a494a3030303031323334 +36294c3b1e251010042c0f090b291f173a4e2e33570b05f9652a48423c41 +3b3c433e40454b4d4a4644383b2752feff35fbeedeeef665faee58fff744 +fdff4ffff34be8f6eafa302621180e0e1f343e3835262d2b382f39687502 +22232328252b261d4329322139201f2a24292a202518311c23302b15322e +494b5f8db2d7f341070000251431220f294d47391d86ebd8ddd9ffffdfff +e4ddeeeaeaeaeaeaeaeaebeaf9f4ee2923427d867e927d599c566bc0c9fa +bf3d1837345a3f2f5d84a1a5b39675370a172da29fb6ba91391d22264233 +576d071122212784a6a3a28cd9d2bdbf9d198a5b237a232b465757371424 +d3d3e1d0a62e9a3026432f5b4e14121f4400a1ffededecf3ece4f1f8edf2 +eef5e6f8ebe2e8f4f7efe7efefefefeeeeeeeeededf0f1ecdec6b5b9c0b6 +acd01a1a19192b000c1832183c472b2a2c0c1f0310002c3b25221a0f1c2e +361a1d0f171409101110101114171a0b000911110d06223a492d3057b8e8 +fbffe0a2d5932733170c0a09090b0d18291c3c3e0c0a0a2a4025240670ff +c27b7a8b888e999b9489838483858a8b8887898989898888898c8f898582 +828789857f8282807c7e82807a7f7e7c79757372736d6967666462646b64 +676c7175444547494a4843413d3a383b4144403d3f4346423a383b404345 +4849433d3837414242413f3f4143443e393939393e474c381f10141b2126 +282827262321211f282a2d2e30303337353435363b3e403d37383b3e4141 +4240433d3b404a4d4a4340424e3d39935b4b36333a404546403d40424240 +4140414142444546484a484757545055647f9cb0afafaba9abb1b9bdb3b6 +bcc0c3c2c2bfbebdbcbab9b5b4b3bab8bda95b454325242425272b2e3132 +23473b1f2b171d123a1d161532241a3c5030375c120cff692c4740393e38 +3a423d3f4348494744433b402e5bffff3dfff8e7f8ff70fffa64ffff4fff +ff59ffff60fdfff3ff3128251f1719283b423b332127232e2735697b0b2a +2a292a272e271b402a372a442d2d362f3233292e2135151b2f2e152c1b24 +100e284a79ae1e03100c1f062e2315335a5e624bafffe8e5e1ffffe8ffed +e6f7f3f3f3f3f3f3f3eee6fdffff5f52597a634e6754346d111e7587c69a +280f3434593a265178959dac937a47202e3ea699adb18f3d242929453c60 +71091127313789a6a6a693e3e4d0d1af2998682f842e36516161432133e1 +deebdaaf39a43a2f4c3763541a18264a09acfff7f7f7fdf8f0fefffcfffe +fff5fff3eaf0fcfff7eff7f7f7f7f6f6f6f7fffffffffbf0dacaced4c6c0 +ea3c47494451212a334529474e302f3111260a21135a74656b6356617177 +5b5c4d50483836373f3e3735373b311c1c222d456fa6cccb7f606dc4f5ff +ffecb3ebad3f42241e1d191614131f2f22424614100f2f4836340c6cf4ac +5f555d514e545956504d4b4a4c51524f4e505050504f4f505356524e4b4b +50524e484b4b4945474b4943464543403e3c3d3e3b3737373533383c3336 +3b40449595989b9e9e9e9c918f9097a0a5a49d9d9fa09d99989ca1a5a5a6 +a7a39b98999e9e9e9c9a9a9c9f9f9893929293989c9c91765d5d5e5f6866 +67696d6f707171737476767675787a77736f6d6f7173727474726f6e6d6b +6b716f6b6b6e6f645743393a392d9a91929095999b9f9f9b9b9da0a2a19e +9c9d9c8b8e918e8e8d8a838c99afc2c9c1b1a5a6a7aaacaca7a19ea6a8a8 +a5a1a1a4a7a3a3a6a7aaabaaaaa6a3ab97424130181814110f0d0d0f0d14 +030205aa6f7a94c8d1c400dd011500000066f03a0fe8220a16160e0c080a +0f1717181b1a161518311b0395f7f458d5b0b2d5f258f3eb66efef6ff2f0 +44f0e82cf2e7ed72236b5a69707b888877583718100c1a1221636e032526 +272c2930282f1d26253e142937301e28242d273a342c2d4c553228243f53 +86c0dcf5e82b297a4c2400142b374398d2e5b1c3ffe6e0d9e27303f3f0e2 +d0e3e4e4e5e6e5e5e5d8e2f56c002a101a153d411a7e8577b3e2e5e7cc89 +2412335d7b5e6382ad9eac9b873f171b004a110010150000211e3033607e +140d231403122511140f82b2b8c3ad218d7800602c3b35766a14281ac9c0 +c0bdad13952613414ab593071b3b350460f8e5e5e6e7e3e7ece7d7edf5e7 +f7e1e7ece7ddd7dee6e4e3e4e2e3e2e2e2e8e8e4e4e8e1ccb3af9da7b3e1 +8495a2a8a87a6f615b343d333355686a0e1036428abacbd9dbd1d5c2c4ca +fff2ceada5979494918f8e8f8e80625747332010130c14223058acd9e5f8 +e098e0d02b4438464a3b30291e233a3b6877200f124a5786851d00f6f899 +bfc4c1bcbec1c0c2c2bab5b8bdbdb9b7b8bebebebebebebdbdbfbdb8b4b5 +b8b6b1b3b3afacb2bbb8aeabaaa8a6a3a19f9ea09d9c9c9893939696989f +a3a569696b6e71716e6c615f5f666f74716c6c70716e6a696d7277777879 +756d6a6b6f6f6f6d6b6b6d707069646363646972766f533a363737403c3d +404244464546474a4a4b4b4d4f53504e4a4a4b4d4f5052524f4e4c4d4e4e +5656555559594f453b353430218a7b756a6766676b707474727174737272 +747664686b6a6969666272839bb0b8b2a69da0a5aaafb0ada8a6acaeb0af +adadb1b4afafafafaeaeadadacabb6a25054463032333130303133343d2c +2927c78890a7dbe4da08f820342213197fff4b20fc3e2d4044403e3a383b +3f3f444c4c47413e4e2f11a2fffe65e3c2c6e7ff66fff772fbfb7dffff56 +fffb3cfff4f57011411a120f172d3f40342d2c332a342835737a09262422 +26242b26301e22213911283b3929332c2e222f28231c2832262f3b4f4767 +99b9e4df211d6b432903091c2e233f4d3e217ef0dbdee0ec7d0dfdfaecda +edeeeeeff0efeff0e4edfc77054e4a636a8f854a90805d93c8d5e7d9a13b +1d3144542e36619ca0b6a18528011b15ad9a979d7a1a162a273938637c12 +112713206fa9a09f89d9d1bdcab427917a005e2a3933766a162c1dcfcacc +c9b71d9d2e1a454db893061a38350b68ffededeeefedf1f6efdff6fef0ff +eef7faf7ebe7ecf6f2f3f2f2f1f2f0f0f1f0f1f1efe3cbb8c0b8c4bec539 +160c1b27060e1524122b2c3456696807031601293d37342e2d37292b2b5e +54351e211c1f1e1d1d1e1f2219081015130f0820363f2d2a53afe7f5fcdd +8bd1c21c2c1211110b070b09142d305d6c160a114b567b7e2408f9ed758a +87858c969a928a858382858a8a8684858b8b8b8b8b8b8a8a8c8a85818285 +837e80807c797f88857b78777573706e6c6b6c696868645f5e6363686f73 +75424244474a4a46443937363d464b4641414445423c3b3f444646474843 +3b38394141413f3d3d3f42423b363535363b424741291415181d27242424 +2221201e1c20242528282a2f3431312d2e313337353637393b4040403e41 +403e40484e4a43383642412f8a644d39353b3f43423b393f434342434246 +493b41474a4e4f4e4f637690a6b0ada29ba2aab2b8bcbbb8b3b8babdbbbb +bdc1c5bfbfbebcb9b7b4b6b8b6bca4504e3a23252424272a2f3333392628 +28cd8f9db5e9f2e712ff253724161d84ff5328ff422f3f423d3b37363a3f +3f43494944403f52361aabffff6eeccccff1ff71ffff7effff88ffff60ff +ff53ffffff7511421b181621364645362c2a2f283326337278092827262a +282f272b1921223f183044422f372f332635281a1228362828272a0b1534 +518a9e061f82562200051f312645606954abffece9eaf58616fffff5e3f6 +f7f7f8f9f8f8f2daf1ffb54880565243615e246649123e7388abae89311f +364a572c30589295ae9d8838163325b2938d94761c1a2f26383e6c811510 +2a233077ada6a48ee2e3d1dcc4359d870b6935443e807623382cddd6d8d5 +c127a839245056c19b0e203f3d1573fff8f8f9faf7fdfffcecfffffffff4 +f7fbf7ece7edf6f3f3f3f2f2f2f1f3fafbf9f9f9f0ddccd4c9d4d0dc5a41 +3a464e2b2d3139233734395b6e6d0e0a23174a696b706d69716161639287 +644946383a41403734353a37221e202b456da3c8c17f5a69b8f4ffffe89d +e6dc333a1f23241b1515101b343663741e1016505e8c8e2a07eedb5b685b +4f4c505554514f4b494c51514d4b4c525252525252515155534e4a4b4e4c +474949454248514e443f3e3c3a393737363a3939393530323634373e4244 +9898999c9fa0a09e9394989ea3a4a49ea0a0a09d9b9ca0a4a6a3a3a5a098 +979a9f9f9e9c9a9a9d9f9a9593949595989a96998368645f5d6865666769 +6b6d707277797d7d7e7f81827e7a77747576767576757573706e6c6c6d6e +6b696a68605345322a432b949a8994999b9c9f9f9b9b9ea1a2a19c9b9b9b +8e8e89858ea3bcc5c9bcb3aba9aab0b3adaba7a5a3a5a7a8ababa8a4a1a2 +a3a6a2a4a4a7a8a8aaa9a8a4ac9235482b191b1613100d0d0e0d0c132200 +00a6e0270012c400e80077d2ea1e50f20000f0161919221e111113111512 +1214130d0e14070f0b5ad2a62be2c2b6afab3db1ceacbcb19c9f976bdaf0 +4099af5213584c68727f8c918061442d181414281d276057001b22272e2c +2f25282e2e322c2e262629282b283b2f4d34342e434f3922353e5b8fcce7 +ffc11352ffff6f1d202f2d1b6ac8ecbeb8ffe6e3e5f45b00d6d6f1f5e7e7 +e7e7e9eceff3feefdb0009123a2a1a4a3e57a086bcebe8f7beabb73b042e +4b7b6f57739b9fa6b4a14a322700340d06172400072010242c415d311c22 +1a00083516120c80adbbc5bc277c8a005836494a8e6c1727039dcaacb7be +2b743e1627478d7a182832181229f6e6e4eae3e9e8e9eee8eef06073f3eb +e6e3e6e6e2dce3e2e3e1e2e0e1e1e6e5e0e1e7e5d3b9cd6273bcdca98ba5 +a5a5856d615e402d0f3e603f7e1b311a0e254a646d74726c78726c958b76 +6b755c5a5b595756585b56403727180e0409060c1f2352a0dae1f1eb5fe4 +e2453237484d3d322f1f1b30201818061423311906270500e9ffa1a3c1bf +babcbdbdc4c5bab5b8bcbcb7b4b5bebebfc0bfbcb9b6bbbdbab4b2b5b4b0 +b1b4b1acafb9b8b0a6a6a5a4a29f9c999d9d9fa19d959192969aa2a7a76c +6c6c6f7273706e6364676d7273716d6f71716e6c6d717578757577726a69 +6c70706f6d6b6b6e706b66646566666970707760453e38333e393a3b3c3f +4243454a4d50515254565a5553504f50515152535251504f4e4f4f525655 +5355544b413d2d233a1f84846c6e6b68696c717474707073726f70717468 +6a66636b829ba9b7b2a9a1a0a4abb1acabaaa9a9abadaeaeaeacaba9acaf +b2afb0b0b1b0aeaeadafadb79e44593f313635333130313234353c491e15 +bff63a0725da0eff1996f1ff3764ff0603ff2f3b41504f4343413d3c393c +41413b383820201561d6ad34efd3cac1bc4bbfdab8c8bdaaada87deeff52 +a9ba560a3e1a1e141624363d373031363a2c3728357772132e262323212a +25292f2b2d262924293132352e3b2941262a1d1f2c2f2b4e504d6fa2c4ee +b90845f5f7721f1120310b204b432772f2d9e1ecff6803e3e3fefff4f4f4 +f4f6f9fcfdfff2dc031f3a7a766b937579a67496c4d5f6d1cce366203433 +5036214c879fb0bb9f36202f12a7aab4b99b342d301c2f3344582c222c1c +165aab9c9b89dacec0ccc32d808c00563447488e6c192b06a5d6bac5ca37 +7e461d2e4b907d1828311b1b36fff0eff3ecf0f0eef1ebeff16176f8f4ed +ecedefe9e5eaebeaeae9e9e8e9ebebeaebebe4cdb8dc7d97d2ca6a161719 +24110a12241b19053d613e7911240b020a13140b0b1010211b0e362c1c1c +2c191b1b1a1a191b1e1c0e15151719152836342a1d4da3e8f1f8e852d7d5 +361a1311120a09110a0c23130b0d000f223418001e0e05f1fe7f6e82828a +949691898883828589898481828b8b8c8d8c898683888a87817f82817d7e +817e797c86857d737372716f6c686569696b6d68605c5f636a7277774545 +45484b4c48463b3c3e44494a4642444545423e3f4347474444464038373a +4242413f3d3d40423d38363738383b404149361d1a191a25201f1e1b1a18 +191b2126292c2d31333735343334353637363536393c403f3f3d3d3e3d3e +4449463f3b31334d2d846d443d373b3e414039393f4549484546494d4448 +4848556f8a9eb3b1a8a2a3a6afb6b2b3b3b4b5b7bbbab7b5b5b5b4b8bfc2 +c0c0bebdbdbab9b8b9b6bb9e41513323272626282a2f32333136481f1bc6 +ff481533e718ff1e99f4ff3c6bff0f0cff343d414e4c40403f3c3b383a3e +3e38363824271e6be1b73df8ddd3cbc656cae6c4d4c9b5b8b287f7ff6ac2 +cc610f3d191d151b2d3f443b3132363b303c2c3571690a28252429273025 +2429262a282d292e3434362e3d2943231e131f303026392a101c3c5c967b +004effff6b110e23320b1f596e5ca4ffedecf6ff710cececfffffdfdfdfd +fffffffef4f7ff546b6d7a58426855567634456979a38f9dc85d2440405a +3c21478097a7b4a042364622aaa3aaac95343030182b394d5e30202d2b27 +66b5a7a38fe2dfd4ded33b8c990b613f52539a78263715b2e4c7d2d64388 +51273854998420303922243efff9f5faf1f6f3f2f6f0f4f6667bfef9f3f1 +f3f4efeaf0f0f0efefeeeeeceeebe9eaeeeadbcaef8ea5e0e0894245464b +36292f3a2d250e4366447f192b120613283131333735433b30544a36313d +22242c2b221e20262b1a1615254671a5c6b77c4b63acf5fefff364ebef4d +281f24261b171b11132a1a121504152739200c2f1502e6ed664e574c4a4e +515051524b494c50504b48495252535453504d4a5153504a484b4a46474a +4742454f4e463c3c3b3a3a37363339393c3e3c343232363a424747a19f9e +9fa1a1a09d92979c9f9e9b9897a2a0a09d9e9fa4a6a7a2a2a29f96979ba2 +a0a09d9b9b9ea09895969a9c9a9c9c929f8f736a615b66696a68686a6d70 +736c70747778787979777473727374747276757474716f6c6b6d706e6a68 +68605054372753359aa4829497989a9d9f9f9d97999b979391909093a7ba +c2c5c3beb4aaa8abadaeacaaa7a7a6a7a6a5a3a2a3a9aba9aaaaaaa7a4a3 +a4a4a7a7a7a8a6aba5aa8b2b4725171a1714100d0d0e0e0c12050f4da8e1 +4a3ba88a1beb080d15041568df2d16ee001e11211c0a0e14101d19181a1a +171a2218f4f2c8d1e1bbc8c1c2c8c9d2d8c3cdd2bfe6d8e6d7ede3e2f25a +194b5b5d68808c948d6e4a352b17181932262a5a42001c22272e2b2d2424 +2a29322534252a1e362a2438322d3e342c383e331d45416796cdeeffa207 +6bffdf9e02191a283a3fb4e8c0abffe0e3d9f06210490000000000000000 +050b11202c1400192f1f193a412ea3687ed5f4e7d5aca19342351a3d6071 +5972849ba2b3ac616245001906000223000e1b123b4c405166493f421004 +3e160c067baabebac1205d8e0564393540382a3430129bcbb3c4b53b656e +122e47222b38402a2e220ff5e6e6efe5ececdae5eaeaff1c40fefaf7f8fb +fcfcfcfcfcfcfbfcfbfbfbfbfcfbfcfcfeefd9cc00079dc5ab73aaa1a089 +635f67522625312a3f81441a2219091c303237382925312230252a292529 +2b2927232326292f1e1b0e070a060c0e0c231d53a0e3eaf9ff30f3e56c2a +3e43493933372619272b0f172718091623151510009ffab6a1b5b7b6b9b8 +b6bcbfb8b6b8bcbbb6b2b3bcbdbebebdb9b3afb2b8b9b4b2b5b6b2abb1b0 +a7a5adaea8a6a5a5a5a4a09c98999a9fa4a1999494949aa3a9aa76747172 +7474716e63686d706d6a686671716f6e6d707377777372736f68676c7271 +706e6b6c6e716866666b6c6b6c70697a6a4d443a323d403e3c3b3e404346 +3f43464b4c4d4e504e4d4b4d4e4f4f4e53535151504f4f50525657555554 +4b414c32214828888e646f6b69696e7377777172747370707175798ea3ac +afafa9a5a4a7aaacadacaaaaa9aaabacababa9a9acacacaeb1b2b1b0afb0 +b0b0b1afaeaeb4b0b89b3b5a3c3139373431303032323336282f69c1f861 +4fbfa334ff252c33202c7bf03a23ff063b374b48363a3c373f3b3c41423e +3c402dfffbcfd5e5c2d1d0d3d7d8dfe5cdd7dcc9f3e5f4e6fef5f2ff681c +3d35190e131d2e3c3930313b393e303f2f38736217312823232028222529 +252c1f2f232b223b3028362c23332d1f1a24322b594a5373a7cdef950064 +f9d7a104090b2c30074a482f6bf2d7e2dffa6c1a5407030806050203060b +12161e2a1a103f666866817950b16166aed2dbdfcad1d2836a3839423e22 +496d9faeb8a64d544d1d8fa7a1aea03c31291e4656434a5f4a44462a4ead +9c9b8bdccbc0c1c8266092076437333e382a363416a3d7c1d2c1456d7419 +324a252b3841292f2517fff4eff6eaf4f7e6eaeae0f91038fefefbfcffff +ffffffffffffffffffffffffffffffffecd5cd0c27b8c27a021a141c1100 +0c2929101e322d427e3a0d18220d08090000020000080001000001020608 +0909090a0d0f1509100e141d1b2c3d35301a50a0eff6fff919dadb64151c +10100609160b04181e040d2013071520090d1709a8f69b737b7b83898d88 +85868383858988837f80898a8b8b8a86807c7f8586817f82837f787e7d74 +727a7b7573717171706c686465666b706c645f61616a73797a4c4a48494b +4b4744393e4144423f3a3b464746444244484b494544454137393e444342 +403d3e40433a38383d3e3d3e413b4d3e262019162124231f1c1b191a1d18 +1c2226292a2c30302e31323435353437383b3e4142413f41454544474b46 +3e4a362d5832887942433c3d40444643464a5155535251555a6278919ea4 +a6a4a2a8adb0b2b5b4b4b3b5b5b7b8b9b8b9b7b5b1b3b7bbbdbdbebfc0be +bfbdbcbab9bdb6bb9b385432242a2a29282a2c30302e32242e6cc6ff6958 +c7aa3bff292e35243282f8432cff0c41384a4735393c36403c3c40413d3d +4232ffffd9e0f0ccdad7dadedfe7edd6e0e5d2fbedfdedffffffff75233d +341810192439453f33323a3a3f364534386d570d28242227262c23202422 +2c2133262f253e3029372c223123161a272e1c3d1d1421466ca361006bff +e69a0009102f3106546c5a8effeaf0ebff75235a0d090e0f0e0d0e11171c +1c213f585c7d85573c575235902d1e4f70879a94a9bd7b6e43474e472747 +6590a0b1a65865602b919f94a29c40372c1a42584a52664c47513759b6a7 +a390e3dcd5d3d8366f9e136e423e494236424022b0e5cedfcf517a80233d +532e3340462f342a1afff7f6fcf0f7f9e6edece8ff1a43ffffffffffffff +fffffffffffffffffffffffefffffff7e4e11d32c3d3972e4d3f43341a26 +3e3b1c2637324785431620210e111b1315190e0d18071105090c090a0c14 +130a0609101e120e0c1d4574a5c9b37e4565aafbffffff2bf0f379242a21 +21171721140d1f250c1527190c1b29171c1f0aa5eb8a5955494447494a4d +514d4a4e50514a484752515452534d4945484e514a4a4b4e484347483d3d +4346403e3f3f3f3e3c383436373c4140383334323a4248499f9d9b989797 +999a9797989ca2a3a19d9c9e9f999ea4a8a2a6a0a3a5a3989ca29d9fa09b +9e9f9e959d9a9b989b9a9e9d9899988064616865636364696c6f706e7171 +7374767777757876757374747473766c6d736b686b676562636567635d55 +5e4e2750327db3818f90929699999289878b949aa4b3b8b6b2b1afadaca9 +a9a8a8a8a8a7a7a4a4a3a4a4a4a4a5a6a8aaadaba6a5a8ababa9a6a7a9a9 +a9a7a5a2a6a7ad831a561d0b1714161a150d0e141c121c1157134831a881 +1c76a265121f19171f380c19f2004e25181d171a24231f281a1c2524231d +3fe7f7f8f3f7f9f8f7f4f4f7f8f6f3f6f6f7f6f3efeeefeff07018345152 +6e7c989c9b6c6038252e1c33191e263d79450b1f28282d2b292e2c2c2c2e +2e2c2c2b2c2c2c2d2e313131302b2b382325505076a5d8f2fc7e28235843 +8626181426442c7cc9cca5ffd9e4d5f96000650514282531281c2c291f24 +1d1f060c13213c2456338496729fccf4e3bca49989273c2d0f316c5b5a64 +8397a9cc921e2000231700002e0006301c332f293f1c190e3c0c00320200 +0664a9bebdba3f53b1045832352f3d392d250a6ed0b8c0c54c3c8f023f3b +2c34163717283912f8efdfeaf2ebe1d9efd4f7ff2b385e0b281e06181851 +9a8d707164536f6c614b32263246402944080d98a9bc81ad9da6ba676c5d +4b29543138272c232b291c1b1d232d27232e1d1d20222324232324262018 +121416142a2d3927110d0e1b0d0a183550a9e0ecfbf33ff0dcb22e534444 +3c3a38332c2639151621171b281f0d1d090258f5dc83a6b0b5adbdc3afb9 +b7aea7abb1b1aeacb6b8babab8b6b4b3adafb1b0aba7abb1a9ada7a4a7a2 +9da5a5a19d9d9f9e99949994949a9f9d99989f9ea1a7aa72706e6b6b6b6d +6e6b6b6c707475736e6b6d6b686a737471726f6f746f6768716a6f6d6b6b +6f6b656a6a6868686a6b6d6c706e593c39413e3c3a3b3d40424140434546 +494b4c4b4c4e4e4c4d4e504f50564c4e544e4c4e4c4c4b4c5152504a4758 +4c2045226897616b69686a6f6e6a666e79828a96a6adafadadadadadacac +acacacacababaaaaababababadadaeb0b1b4b0abacafb4b3b3b0b1b3b3b2 +b0aeaeb3b6bf962f6f3a2a38383a3e3a3231373d31392e712d624bc09b36 +90bc812e3b353033491827ff0569463b403939403d3b443638413e3b3251 +f6fffffafefffffffffffffffffdfffffffffdf8f8fafcfd8027393e1f14 +0715213d2d433431473c5535363a518d5a1b2b2d282725232a2a2a2a2a29 +2a2a2b2c2c2c2d2c2d2d2d2f26182d343d57455880bad7d9642527554187 +260e071e340931414b6df5d6e7dbff67056e0e1a2e2a34281b2a251c1f15 +1f1935547090708e5389885d85b6e4dfcac6d2db86987431314b2c33518d +a9aac07d0e221b8aadabaaa643192e213d3b3137100f0c40262099939e99 +cccabfc4c2485ab4065832342e3c372d250a72dac4c9cc523f91023d3a2b +33153618262f0dfffde3eaf2f2f9f6fed3def311295b0e2a20081818519a +8d7074645671706a502c20395142212c001eb1b79a0b0f0a1f3d00141a21 +144f3641302c1b1a1b17160d0b0e0707170c0e111312100d0b090a09080c +131512242737281714142c35332a394fa9e4f2ffe80ec2d7b921371a120c +0c0e0d0e10290b111e1216211502180d0c62f6cf66787778718591808b85 +7b74787e7e7b7983858787858381807a7c7d7d7774777e757a7371736f69 +71726e6a6a6c6b6661666161676c6a66656d6c6f7578484644413e3e4041 +3c3c3b3f4344424042454440434b4d494b47484c483e41483f41403d3e41 +3e373d3c3b3a3b3c3e3f3f4444301816201f1f1e1f222323231f21222527 +2b2c2e3035343636393a3c3a3f353a42404046434543464a4d4c4646584d +274b25658b4a4b424043494b47485a6b767d8b9da7a9a9aaaeafb2b3b3b5 +b7b7b7b6b7b6b8b8bbbbbdbec0c1c5c3beb6b1b2b7bdbebdbcbdbfbfc1bf +bdbabcbdc39a306c35242f2e3034322a2a30362b342a6e2c614ac29c3791 +bd822f3c38343a512432ff0e724b3f423b3b433e3c453739423f3d3555fb +fffffffffffffffffffffffffffffffffffffdfafeffff8f2c35371b1610 +25334d38483531443b54363639508b5518272926272523292b2b2b2b2d2d +2d2d2e2e2e2f2f2e2e2c2b221a2b221d2d0d102f6286a14114265c46811e +0d0e293f0d38556176fce7faebff6f086d0b182e2e3d3429373327333c53 +5363686a6c3f612e726b26313f75a2a9adbfcf8097783a3b54322e427291 +a2c2861b2f2287a29b9fa74e2a3c253c3933421c18114327229e98a4a0d5 +d9d3d7d5596ac313643c3c3644423731167ee6d2d8dc604e9e0e48423339 +1b3b1c292e0afffeecf6fefcfbf4ffdbf1ff2a406c1d392d1524245ba697 +7c7d705f7d797156362a3f574e30420e28b6c0b23d4934405b152c2c2f1d +553a463736282a281e1d18181d1413211415181a1c1b1918121619130c0e +101330333a2c233e6ca2b9a9725f61b3f0fefff024dcedcb3246281e1a19 +1c1a1a1c33141825191d291e0a1f18166bfac956574a413348564c595044 +3f41494746424e4e5250504c4c4b45474b48453f45494345413c413a373f +43413d3d3f3e39343934343a3d3b37363a373a40439f9d9b989797989998 +989a9da1a19e9d989d9e9da1a6a6a1a2a3a4a49e999ba1a1a3a29e9ea09c +959d9c9a999a9b9d9d9a999a8668636866656364666b6c6e6d7071727475 +7675757574717272737373746b6a6965676b68656769685f514740674e15 +352764b0887e82868c95a1adb1b3b4b4b3b3b7b5afadabaaa7a6a5a4a5a6 +a8a8a7a7a6a4a4a4a5a5a5a5a6a6a79d9fa5a9adaba8a5a4a4a4a6a8aaac +ababa0a8851e46181813101216151011160f11110b2a0014080019000008 +0008201a28181b1d40ea062714111b21232a281b282e2525262837003a25 +262d1f140b1c1e2221170e111b130d080a10120b03101c2d4e5756767f9c +a57a5c5c3a47362734384c414e6b430f2229262929272d2e2c2c2c2c2c2c +2c2d2d2e2e2e2f2f2e2f2a272e1b2454567fc4caffe838391803003d1314 +171e26335cb8ad97ffbdbdd1f9551953260a1a4a8821242f2818181e1712 +26231c0f484d5aa17fa9d5e9ebdcc5ad9f79142433161e54565b597395aa +cac01d16002a1600002800032c192c344d93340b19271200470c020455ae +c1bcb9593da10f4c3f232b615e4c0d0657d7b5bdc0592a92003447597540 +0e15383904daeff2ecefded8c6def4f5ff6c1875192f203f2403190a0302 +110e08161209254e4f2c19191759170d70b7d47caaa4aab36e6b664f2d4e +515a3c415b38141b1b202d30283b61211f20212526282a323938342e271f +16246fa46d261413161010213c51a6e3f5f3ff53d6d8cf26513f4241403c +342c29243d58701f191d3436b8762500fbf678a7a4b6b5bab2b1acafaba8 +adb1afacabacaeb0b1afadabaaacadadaca8a5a7aba0a6a2a1a6a29ba0a4 +a09c9b9d9d999594959aa0a09b999ba0a0a4acaf73716f6c6b6b6c6d6c6c +6e727676736f67696a696d72726d6e6f70706a65676d6e706f6b6b6d6962 +6a69676667686a6d6b6e6f5c413b413f3e3c3a3c3f403f3e43444749494a +4c4b4d4c4b4c4d4e5050544c4b4c484b504f4c4f54544b3f3535634e102c +174f956b5e616468727e8991a1a7a9a8a9afb1adaeafafaeafaeaeadadac +acababaaaaaaaaabababacadadaea5a8acb2b4b4b0adacacaeb0b1b3b5b7 +b8afb798335e323732313337363131342828282240132a1e072f09111d12 +1d3834402b2a274af8183e2f2e383a3b3c3a3040433a383a3a460d48302f +36261b1325292b2a20171a241c161012181a130c1826374e3c1a0f011730 +292e51465d53465355665a627b5119282b26282521272a2a2a2a2a2a2a2a +2b2b2c2c2c2d2d2e2f281d2b333d54425ba0b2e4c218372104003e120b0c +12161c23443961fbbec7d7ff5c21592d0f1c4b871d2028221212191f315c +7274648e786a96688cbbd9e2d7cfccdad382989a573943323542769fa6bb +ab0d141389a4a9a9a2431324193543578d26000f292b2eaba1a99dc1cfc2 +c3c46144a7134c3f222a605d4a0b065be1c1c6c75f2d9100324456723f0d +16362e00e9fffceff0eafbeef7fbdfee570e731c30223e24011708010211 +0e0816161227414435281d0c3700178ed0bd070c0f1f32000f1f21164959 +6547435527031111131c1c152852181b1e1f1e1c1816181e25282a282016 +1d669d6a281613213538344250a5e1f5f7f9159bd3db1d36191413120d0a +0a0f1233536d1a1211292db37a2d01fff062806f77737d7e85828078757a +7e7c7978797b7d7e7c7a787778797978747173776c726e6d726e676c716c +6867696a66626162676d6d6866696e6f737b7e4644423f3c3c3d3e3b3b3d +3f4343403e3e424342464b4b4647484949433e40454343423e3e403c353d +3c3a393a3b3d3f3f4345341a182020211f212324252522242327292c2d30 +32343334373a3b3d3c3f37373c3a40494a484d53534a3d33336450142f18 +4e8e5b4742414652627382979fa3a4a7adb0aeb0b2b5b6b8b7b8b8b7b5b5 +b6b6b5b6b6b8b9bbbbbebfbfbeb0afb6bbbebdbbb8b7b9babcc0c2c6c5c0 +b4bc9c345e31322c282a2e2d28262a2222221c3d10271b052d0a121e131e +3833422f313054ff224636323c3e3d403c3140463b3c3b3e49134b36343d +2c2316242528271f1619231b1512141a1c1511253038463112120c2a4338 +3855465b4f414e536357607a5118282a24262421272b2d2d2d2d2d2d2d2e +2e2f2f2f3030302f291e261b1520030f4c5c9d95002a1c0602390d0c1220 +2322294f425ffbd2e0edff6624572609194f8f2b2f38301e2c515d60766f +5b3a5c4b43783f50646079adc6c7d6d17f95995b404d36323259849dbeb2 +171f198598999da5522a392134405899350a1728272cada5afa3cbded4d6 +d67454b71f58492a32686555161267edcfd5d76d3c9f0b3d4d5f7945121a +372c00e4fffffefff8ffeefbfff6ff7629882d42314c300e24150e0e1b1a +1222211b3352543e2f281c4f112090d4d13b47393e501724312e1e4d5c69 +4d4f6339131c1a1d26251b2e571b1c212225252522252d38342b231b182d +77a571353f6994b7a9786660adeffffaff2eb7e9eb3047261f1e1f1d1818 +1c1e3c5a74211a1b3130b7853a10fff25763454239444554524c43404549 +474443444648494745434246474746423f41453a403c3b403c353c464440 +3f413f3b3736353a403e39373839373b43469f9e9b99989798989b9b9da0 +a2a19e9d959a9ea0a3a7a5a09fa6a8a19a999c9fa0a2a19f9fa09d979d9b +9998989a9d9d9d9999896d656a6869666565696b6e6d6f70717375767575 +7373717170717272706e6d69676869656667665f4e3a34345b562a49424f +a48b8595acbbc0bfbcb9bebebdbab8b7b5afb6b4b2b1aeadadadaeadadad +acacacacacacadaeaeadada9abaaaaa7a6a6a7a8adacaaa8a8aaacaeb8ad +ac7b1f4a353f302a27282722212327332c2a2a252329293b23233f2f3932 +1d4133252f378013262925293639383b2f32422f2f392f45463e30314a48 +454745454a4b4743444b57524d4d505352514d6c5f4d47548295a69e5261 +6e3c5d43503d4654536e7745122328252929272c2d2b2b2c2c2c2c2c2d2e +2e2e2f2f2f2e30302d291b2b545989cfcdffba185244e38a3712350e1a32 +3331abc198e8719d9ec51400203b1b343c72192b2b2521221a111c25251c +265221968a66b2d7ebf4d6b1749386281824250c334f5c526895a8bddc50 +17001d1a000020000023132619408d3e20261b00004d0d03013db0bebab5 +6b1c9a22353b1a4555772a1a0637e1b4bcbf781d9c06273d598b5e001d39 +2a00aedddbd5e5d5dccaddeef4f87d00431b226074771e2c271c2d352f2c +232223225e87480005355d250e3eb7dc759aa2a9a37663674f333506165e +725a081a1a151e32382b3d6b31313233343436353c454a4a4640352b1b5b +834e1a1918100f142a4450a2def5feff4d8ceae93d473b3d40413c322b2a +2d4053652019182b2d71712200cbff959ea0b5bbb3a4b4a5a9a8a8adafac +a9aaa9aaacadadaca9a8aaa9a8a5a3a3a3a29aa19e9ea6a39b9da39e9a99 +9b9b999791969ea4a29b9a9ea1a1a7b0b372716f6d6c6b6c6c6f6f717476 +75736f65676b6d7074726d6c73756e6766696c6d6f6e6c6c6d6a646a6866 +6565676a6d6e6e6e5f463d4341423f3c3c3d3f3f3e42434648494a4c4b4b +4b4b4b4c4d4d4f4d4e4c4a474a4c4c4d4f514b3c2b252a5b572944353f8f +736b7b91a0a6a4a2a1a8aaaba8a7a8a8a4acacacadacadacacacababaaa9 +a9a9a9ababacadacabababb1b4b1b0adadaeafb4b3b1afafb1b3b6bfb5b4 +862d5a485547434042413c38383a443d3b3a353339394b33334f3f494230 +54412f343b8920373e3e434b4b46493f4454413e493d5351483939514d4a +4c4b4e50514d494d54605b55555a5d5c594f6a5d3e21111b1d303c144672 +5277606a585f6a678185511b292a25272521262829292a2a2a2a2a2b2c2c +2c2d2d2d2e302e22293242534465abb3f193004e4ae48838112c05102623 +03475759cc75aea9cd1d0828401d343b6f152728221e2320254460726f72 +8c429f7e5098bfd9e5c7ae88c5df9a989c7e3e34353630568da0b2c93f14 +1077a7a9a9a24e1422162f284a8732121c1d172eafa2aa9aacd4c1c2c073 +23a026353b194454762818063bedc1c8c87e209e06253c588a5d001e3a2a +05c9fcf1e6f4ecfffcfffff5f48300481d246273771c2a251a2b342d2b21 +222722507a4f0b0c2f40101f60d5ce0e07111e2204061e1f182f0b1f6774 +540009120e112123142656222527282724201d20293133332e2114003d6b +3e13181a20323837444d9cdaf3fcf40d50e0f0302a151212130d0809101c +364e621b120e20246c742a05cffd81796c777a786f897b797474797b7875 +767576787979787574767574716f6f6f6e666d6a6a726f6769706a676668 +6866645e636b716f68676c7272788184484742403f3e3d3d403e40434544 +403e373a3e40434745403f4648413a393c3f4042413f3f403d373d3b3938 +383a3d3f424344371f1a22222522202022242322232226282c2d30323232 +343436373a3b393939383a404447494d504a3a2822295d5c314b3c428c69 +5a6476858f9195979d9fa19e9fa1a2a0aaaaacaeadafb1b1b1b0b0b1b0b0 +b0b0b3b3b4b5b7b6b6b7bfc0c1bfbdbdbebfc4c3c1bfbfc1c3c3c7b8b788 +2e594652413d3a3938333031343e373537323036384a33334f3f49422e52 +41313a4492283e4342444c4b474a3f44564141494054554a3e3c57515050 +4b4b50514d494c535f5a57575b5e5d5c5b755e39180b1e263e4b1f4b734f +745c67535c67657f854f1a292925282623282c2c2c2d2d2d2d2d2e2f2f2f +303030303231262118181b0117555eaa6800434ae88b330c2d0a1b302606 +4f6161da90ccc5e42c0f2a3c1a34407824383b352f3f5258676e68554e63 +17724c164e677394b0b591cee59b979a7c3f39383526427895b0cd471f1a +779f9d9fa45b28341d2e254b93401f241c132db0a6b0a0b5e2d2d5d28633 +b0324145214c5c7e33231247fbd1d6d78c2fab12304460906304223c2800 +c4fefcf6fffafffdffffffff9b175b2c336f818329353025363c38332c2c +322e618b5913163d56232661d7df3d3e3a3f411e1b312b21330f246e8062 +0b191d161b2b2c1c2e5b25272b2e302e2d2b2e374443372e231e15557848 +23406d91b2a87b685ea6e9fffffb276cf8ff443c221c1f201d16171b263e +5569221a172827707d3714dbff765e4444423e3956494842424749464344 +4344464747464342464544413f3f3f3e363d3a3a423f373a45423c3b3d3d +3b3731363e424039383b3c3a40494c9f9e9c9a989797979d9fa1a3a4a29e +9e979b9ea1a5a7a6a3a0abada1999ba0a09d9e9fa0a2a3a19e9d9b999797 +9a9d9da19897896e656b6e6e6b68676a6c6f6f6f71717375767575747472 +71706f70726a74756f6f6d686b645a534b3c2f3136565d333c362192a5ab +afb4b6b5b4b4b8b9bbbcbcbebfbfbdbab8b6b5b5b2b2b2b2b1b1b0b1afb0 +afb1b2b3b3b3b2b1ada4a5a8a8a7a9b0b4ababaaa9aaabaeb0adbabf8139 +604a3837302b2b2c2c2928272e291e1d2e27322b282537482b322c2d3c3f +40463940404d5a534c595e5d675b4c5b4a5a71525f6a6a8967676c777c6e +666267747670668f929189808290a0bbaa6a4b5664869a9e783f89aa789c +9db29aa5a6b3b89e33172629262a2a272b2a2b2b2b2b2c2c2c2e2e2e2f2f +2f302f2f34362c2436565d9bc4ddff74264876eeff8f1b420d18134f2268 +b4a7f95f7787ca26215154323940333f3f2c1f261f0c1227141f27582a6f +a76276cee2ffa2baa756a69618081b290014415752618ba1aecda5360005 +2b00001603001e16282c314242513f3c0b00420801022db4babdb7700da3 +3526383c47329b45360c2be2b0babc9813a418242b2e5a53182e2c10005f +b5a0aeb69857779681979b40162e29236b486316222d1a2f2e2b34262c33 +1b5698691606262f1c061298d3a19da3ad9e8762675541112a2f3b579637 +211d171c354336354a333132313030302d232624222325262527211f0d09 +16131210162d4956a4e0f9fffb4f52f3de7a453d39373a3a332e2c3c170f +0106041b172b0d00180060fed683a6b0bcaea8aea7a8a6a7aaaaa8a8aba8 +a9aaacaeadaaa8a8a7a4a1a0a2a09c9da29d9ba5a59d9ca19d9998999b9b +9a95979da4a39f9ea1a3a4acb4b972716f6e6c6b6b6b7173757778767270 +67696c6f737574716e797b6f67696e6e6a6b6c6d6f706e6b6a6866646467 +6a6d726d6c5f473d444747443f3e3e40404042444648494a4c4c4c4c4c4b +4a4b4c4e4650524e4d4d4b504b453f392d21232e576133392c148292979c +a1a3a3a3a5a6a5a7a8aaacaeaeaeadadacadadadacacacacaaabaaaaa9aa +acadaeaeaeadacabaaaeafafaeb0b5bab1b1b0afb0b1b2b3abb8bd833d69 +5343443f3a3a3b39363330372f2723372d3b31312b404d33373538474442 +44384145586a655e696a667065586756667b5c6972728e6c6c717b80726a +666d787c766f989b99918a8c9aa5b49d572c21161f2d3a2b1881ba95b6b7 +c8afb9b9c3c7aa3d1d2a2a262826222628292929292a2a2a2c2c2c2d2d2d +2e2f30332d2c3749514978a0c3f44f07437aedfe8f1a3a04130c43001959 +5dce638f97d8312b595832373b303b3c2d212b2b22365a546971975886aa +5561b5ccff93a8a266d4e98a8ea092402833352b417697a5bb942e105ab3 +aaada45f1a24192e383b3c3643353e2122a199a69b9edcc0c5c27814a939 +26383b46319a43340c2ff0c0c8c89f19a71a24292c5952172f2d16057fdb +bcc5c8b282a7bd9ca2a6562b352b256d486314202b192e2d2831232b3317 +458a6d200d22180e1b36bacb461415201b12001c2123062b374257902913 +16100f202818162d181a1b1c1914100d070c0c0a0a0b060000000000051e +202a333636454f9cd9f3fce10f16e5df6928190f0b0e0e090a10280c0800 +0100110c2208001e0064f8c25f75767f7373807b76727376767474777475 +76787a7976747473706d6c6e6c68696e6967717169686e6a666566686867 +62646a71706d6b6f74777d878a484745413f3e3e3c424446464745413e36 +383b3e424443403d484a3e36383d3d3b3e3f404243413e3d3b3937373a3d +3f46424237201a23282a27232223232422212326282c2d30303233353435 +353638303a3e3b4142434947423e372a1e202c5b6a3d44371d838e8c8d90 +92959ba2a49c9c9da0a2a6a7a7a7a9aaababaaacaeb0b0b1b1b1b0b0b0b2 +b3b4b4b5b4b3b6babfc1c1c0c2c8cabfbfbebbbcbdbebcb0b9be823c664e +3d3d38333334322f2d2b322b221f342b382f302b3f50353a34323f403f47 +3d46495a6a675e686a656f66586756667c5d6a7474916f6f747e83736967 +6d797c766e979a9b938b8d9ba8bca659291b12223344331b7fb790b3b4c5 +aab7b5c2c4a83c1d2b2c262b27262a2b2c2c2c2c2d2d2d2f2f2f30303031 +31353830241b1b1702264a6eaf25003d7df3ff8d1538071a1445001e626e +e988b5b9f547375c57323841394a4f42363f45495a6d545a587a3358710f +126177ad5ca4b87febfb94919d8e3f2933342434658b9ebb9a3b1b5daf9e +a3a66a2b341e2e363c4844503d3d1e22a39eaca1a6e8d0d8d48b24b94532 +42434e39a24e3f183bfdcfd5d6af27b627303437615a1d343116027edec8 +d7dcc389abc2a5b4ba6b3e45383279546d1f2b3621363531382c333d2557 +9b782917302c1f2036bbda71483d423b2f19302e2b0c2f3a48619e3a221e +17182931201e321f20212323221f1c13191c180e0c0b0c17110c0213426f +96b1a57b6a61a7e9ffffea2932fef37c3a251b181b1d17181c3314100508 +051a14250c092a1070fab9454d46483b3d4e4a4540414444424245424344 +46484744424443403d3c3e3c38393e393741413939433f3b3a3b3b3b3a35 +353b42413c3c3e3e3e454e529f9e9c9a999796969da0a4a6a5a29e9e9d9c +9ca0a4a5a5a5a2acada19a9ea2a19d9c9c9fa2a19f9d9b99979696989b9d +a69792876e646c73736f6d6b6e6f71717070727476777576777878747170 +72746f7c7a74746f71855b4a403e39303134505f3a3b3e1982b0b3b0acac +aeafafafbbbcbdbfbfbdbdbcbab9b8b7b7b6b4b4b3b1b2b0b2afb1afb0b0 +b0b1b0b0afaea6a8aeaea9a4a3a3adaeb3b6b8b8babdcfcfc68455716653 +5a575353575c5d5a5b5d5e46515651514d6b6f66576678718f71727a7c86 +718b6c7a746c777c7e8b7b69786d859f7c848289b58670717779958d8687 +9292887a777c7c756c6c76898d8c6155666e889c8245255e6f5056697b61 +60576b75843b1d2b2c272b2a262a292a2a2b2b2c2c2c2e2e2f2f2f30302f +2d33392f2f405465a9cbe5ff383b266bffc98a23551807191f3754a39eff +b2c150a8170362393e413934382b1919220a0615301d27444435b17c8aaf +e1edff28f0ca48a392100f1f2500002e49545a759aa6b8cf6300002d0000 +0c08001b19293f3942402f1b3f3a00360b030c2ab8b9bbc27b11a63e2855 +3236203c21252700d5aeb4b8aa0d9a2b2233232e373a311e2b0f2fd2abbc +b194759b9480ab90330438262a2b1425342d321c2c262431272e2e212d31 +1c182935242d0b0071bdce83a5b2a39b67665e52312f24282a4d1b3d1820 +273649463e41403f3f3b3a37352f28241e1a1c252f333e26211a110a010e +11162a495daee5faffff564ad0d6be3b4c3c31363b362e29220f1c142515 +1f12200c0d000a08ffff6da9a8b9a7b39dadaba7a4a5a5a4a7aca3a2a3a6 +a9a9a6a3a6a7a49f9ea1a09aa1a49a95a0a59e9ba09d9a999a9c9d9e9e9a +9ba1a6a5a5a4a5a5aeb5bb72716f6d6c6a696a7174787a797672706e6d6d +7175767676737d7e726b6f73726d6c6c6f72716f6d6b69676666686b6d77 +6c675d473c454c4c48444242434242434547494a4b4c4d4f50504f4b4a4c +4e4653544f504d536842352c2c2b25262e51633c39380f77a4a5a3a2a3a6 +a9aaa8adadaeb0b0afafb1afafaeaeaeadaeaeaeaeacadadacacacadadad +aeadadacaca9afb3b3aea9a6a6afb0b3b6b8b8b9b8c4c2b97b4e6e63535b +585454585c5c595b5d5b464e554e504a6a6b655365747091736e73727c68 +8970837e7780817e8b7f6f7e738ba38088868db98a7475797b968e878b93 +968c807d82857e7676828a7e6f3a221f162439331316698a6f6f7d8b706f +63777f8d41212c2c272928242827282829292a2a2a2c2c2d2d2d2e2e2e2d +32332f3e4e4f4f86a7c9eb151e1e6bfdc689204b0f05181922215a48dbb6 +e167ba250e693a3a3b322e34291d232e22304d70616c827452bb777b9bcd +daf71ce7ca5acfe17d93a6994a27302f2f34598e9ea6bc57054fb3a8ada4 +7020271e2d4b413c3323143f4e1d949aa6a59ce4c2c6cd8318ac42285531 +351f3b1f232703e5c1c6c6b3159d2d2133212c3539301f301f4ef4c6d1c0 +a491bbaf93b69f4f1f42262a2b1224332c2f1929231f2c22292b1b1b231f +2330331222202393b77e0518221d220017252e202d292d2a470e31111716 +1c251e131616171715110c06060e100c06060b0c090e00010b1822223539 +322f4354a4def4f9e1180fbed1ab202a16080c0f0c0a0d0e04150f200e15 +0717071004110cfdec4a7b727d6e7e6f7f79737071717073786f6e6f7275 +75726f7273706b6a6d6c666d7066616c716a676d6a676667696a6b6b6869 +6f74737375787b818b8e4948464342403f3d4445494b4a47433f3a37373b +3f4040403d47483c35393d3e3c3c3c3f42413f3d3b39373636383b3f4b41 +3d352019242d2f2b282625262624222327292d2e30313536373534333537 +303d3f3c424149623e322b2a2821242e566e4947461a7fa6a29b989aa3ab +b1afaca6a7ababacacadadaeadafafaeaeb0b5b7b6b6b4b3b3b3b4b4b4b5 +b4b4b3b7bac2c7c7c1bcb7b5bcbcbdbec0c0bfbcc2bcb37448675c4b5350 +4c4c505457545355543e4750494b456668615263736c8666656b707b698a +6f807d737d7d7c897e6d7c7189a27f87858cb8897374787a9890898c9597 +8d807d82847d7575808c83743b1f1b14243c3614136383696c7b886b6c5f +757e8c41222e2e292e2b292b2a2b2b2c2c2d2d2d2f2f3030303131333538 +37251f1d0f03324f76a9000e1c73ffcd871b4a120a1d191f1e6365ffe5ff +91de4220733e3b3d393a453f363c463a485c7056596b5c33893320386e8b +be02f8f082f4ff929fa99847262f2e292b4d7e91a2c0631356b4a0a6a579 +2f35222c494348442f1b3d4c1e96a0adada6f1d3d8df9628bc4e345f393d +27432a2e330ff2cfd4d3c222ac3a2f3f2e3740413824331f51fdd7e6d7bb +9fc6baa1c8b464304e3236351d2c3b343820302a2632293036272b322829 +383e2230232192c3a334424640411b2c343828322d3334531f3f191c1e25 +2f271d1f202020201f1d181617191811080a101528130c10203e699ab3a0 +736765afeeffffeb312bd8e7bf313823161a1e1a1819170a1c1527161e0f +1a0b17102117ffe53457444937483b4d48434041414043483f3e3f424545 +423f4344413c3b3e3d373e4137323d423b38403d3a393a3c3d3c3c37383e +4340424141414851559f9e9d9b99979695999ea3a5a3a09c9ba09d9da2a5 +a5a5a6a5a9a8a29ea0a3a4a3a09fa2a29e9b9a9b9a9998999a9c9ca4938e +876f626a7374716f6e717273717272747677787777787a7c7a77757a7d7a +867e76766e7ca6523f383e40362e2a485d4343532c72aeafb0b2b9bcbab1 +abb6b5b5b8b9b6b5b7b8b7b7b5b6b4b4b2b2b1b1b1b0b0b0afaeadacacad +adafaeb3afacababaeb3b8acb2bac1caced1d6c3aaa17f70716f6f64615c +57595d5e5c4c5254435648493e43554d4030403d354a3a4744344e383f41 +43413c3d3d4149433e493c46523c464d3d5549484d474c4b4d4d47444545 +41514d4a4c4f4f484a5872625868819d9867362b393b514e5d5350656155 +584122232e2d272c2b272a2929292a2b2b2c2c2f2f2f2f303030302b2d36 +2f3646526faadfe7e6283d20440c01731c24371b1721321a76aeff9c82ab +e459155e0d191b3c7b1305081b19001516282e2a5727967678b4deebff83 +04e4b759b4b2431b052600001f364d4b5c8a9fb6bc8b00082a0000030b00 +14192650294d2e142d2617002b16030e22b1b4b2c48d1590422475284438 +361e303500c8b6b6b9b21482410f473b3337331b172b140ae2adb0c3c9bf +c38598ac887019775e473d2f3645273c2e3736333a37322b37494d423a3e +4e3745180566bcee73a0aca3a36b5d60553450512d2532292d14232f3441 +45474d51504e4c4b46443d3a36322d2e343c3d33313622100c050f100e1f +425babe0f6ffff394b93efe4265c4432383e382d2829271e1b10161a241a +211a112400d1ff829ca3b1a4b593acaea7a2a2a3a4a6aaa09fa0a3a8a8a5 +a1a2a7a69e9ca1a19ba2a397909da59e999f9e9d9d9e9fa1a2a6a09ea5ab +adadacaaa9afb7bb7271706e6c6a69686c7277797774706f726e6e737676 +7677767a79736f71747573706f72726e6b6a6b6a6968696a6c6d7768625d +473a434c4d4a4645454744444547494b4b4c4e4e505254524f505155505c +5550514a5b89392a252f352d2426496145424f2468a5a5a8adb5bcbab3aa +b1afafb2b3b0afb1b3b2b2b3b1b2b2b1b2b0b0b0b0b0b0afaeadacacacad +aeaeb2b0adaaaaacb1b5aaadb4bbc2c6c9c9af928b6c5e6161635857524d +4d50514f404648374a3c3c31364840332333302b43323a34223b29343c44 +433e3e3a3944423f4a3d47533d474e3e564a494e484c4b4d4d4845464645 +555353555959544a3f482c12101f39402b192e50596c5c655c596b675b5e +4526242f2c262a2924282727272829292a2a2d2d2d2d2e2e2e2f2b2d312f +414f495888bbc8c80621154208006f171a2e19172027003d4ebb9ea7c9fb +6921640c131231730f070f2b2f24505d7073678847a6756ca3ccd8f67500 +eac975e2fca7998a9e54292f28302a42829aa5a87b024ea7a4aca37e2226 +1e2a5a3147210827262a1c84a1a4a797e1c1bdcf951c9646247527433735 +1c2e3506d8ccc9c9be1d884411463931353119172e1d1efabebac2c6c1c4 +8293a788802c7d5e463c2e354426392b32312c342e2b252f383f4543454c +263d2b2380b4a200151a19280008212b1f4a5230252f1e210a181813130f +0a0f131314120e0803020e12100b0b0d0b0400000a090d1d2335372a233b +53a4dcf0f4e100157fe7d30e3d230e0f140e090a141a14160b0f101a141c +1a152a00ccfb637370796d82647c7c736e6e6f7072766c6b6c6f7474716d +6e73726a686d6d676e6f635c69716a656c6b6a6a6b6c6e70746e6c73797b +7b7d7d7f858d914b48474543403f3e42454a4a4a45433e3e38383d404040 +414044433d393b3e4142403f42423e3b3a3b3a3938393a3c3f4d3e3b3723 +17222d302d2a27282726252425292b2e2f323236383a3936363b3c38443f +3b3f3c52813425212c312822254e6c52505e3371aaa6a5a9b2bec2c2b8b7 +b1b1b4b5b2b1b3b7b6b8b8b7b5b7b7bebebebebcbcbcb9b8b5b4b4b4b5b6 +b8c2c2bfbab8b9bcbeafb1b6bbc0c3c6c3a4867e5e525454554c4b464141 +47484634383c2b3e3033282d3f382b1b2b2a21311f2a2718352430383f3e +39383536403e3a4538424e3842493951454449434a4d4f4f4a4748484656 +5352545858524a424a2c120e1e393f2a15274851675d6759566965595c46 +272631312b2f2e2b2d2a2a2a2b2c2c2d2d3030303031313134353535231f +1a0408316378880015194f16077013192f1e191e21004474f3d7defbff8b +39721217153980201e2945473656576260557330823c1a395c79b05000ff +fba7ffffc9af939f51262c252c23356d879da9881258aba0a5a383303222 +2959345532142b24261c88a8acafa0edd1cfe1a82ca652307f2f4b3f3d27 +394112e5d9d7d8cc2c96531e54463e423c241f332225ffd2d3e1e3d8d897 +a7bea0973d89664e44363d4c2e40323937333833322f3c484e4e4a4d5736 +4a2f2381c1c6283e413d471c1d3237264e56352d3a2e2f121c201c1e1c19 +1e22222321201d1b161b1e20190f0e11131112170f16396998b097635d62 +aceafefdec172f98fee51c4c2e1a1d221c17161d211c1c12171922162022 +20380bd0f44f534548374b304b4b433e3e3f4042463c3b3c3f4444413d3f +44433b393e3e383f40342d3a423b363f3e3d3b3e3d3f3f433d3b40464848 +4744454b53579e9d9c9b9896949392989ea09e9a98989f9c9da4a7a3a0a2 +a6a19e9e9e9d9fa3a5a09fa2a29c999999999a9b9b9b9b9b9f8d8b897262 +6670737170707373737173737577797a7879777b7f7f7d7d838888938c85 +7e6979b3503d353f42372d2a4c6042272e1855bbbdb7aca6a5a9aeb2b2af +b1b6b8b5b5b9b1b1b0b0b2afafafaeaeadadaeadadadacaba9a8aaabafb2 +afb0b0b3bcc6cdd2e3dbceb9a48e7f797c738a8c9479685c4f504c424144 +47463d4d44475543544c3a2e3b47593f405b3741595c4b5c514b41322c2c +25243238373b372b2c2c262c36251c262c352930282b261c181c2323160f +090b0f0f07093358626d849ea778431d0d00000c080803000300006a0c08 +252f2c262b2a25282828292a2b2b2c2c2f2f2f30303031302e2a312e3d4d +547eb1e1f79b2b392e32110b2e1525371a0919291c539b91230c042c0100 +3c2529325c9b230b0b140d061e1328422c4864b8659ab9e7ffea1d016a3e +1b200e0004282c000013233e394b7492b3afa80c003500000011000d1524 +1735996d060a2027002224010718a3b1aebea3157c5d126f171d4187631e +0000b2bcb6bab3216c5801453d516e1d0c1c322a0ce6c4bee2cdb4dadbff +cd7d6f2a211e0226574b32102a27263034374335251e223d4a2411322238 +190766c7f68ba0a59fa671596251293b4b365442430d1a222a3a4f565763 +5e5f5f5f5d5b59554a48463f3b3e3f3f444343281a1e1618120b1b3f56a4 +d9f2fff1234768eeeb495841333a3e362d2a253646565643210d1f2b7a64 +bd0680fbc585a6ada5ab9aaab1a8a1a2a6a5a4a5a19fa0a4a9aaa7a29ea6 +a79e9a9fa19d9fa29791a1aba29a9fa0a1a1a2a2a4a5a9a6a8afb3b3b4b5 +b0aeb2babd7271706f6c6b6968676d7375736f6d6c716e6f767975727478 +737070706f717577717073736d6a6a6a6a6b6c6c6c6c6c72625f5f4a3a3f +494c4a47474748444446484a4c4e4f4f504e5256555355595e5a65605b58 +44579537282331382f25264d63422527104bb2b4afa8a4a6adb3b9b8b5b7 +bcbebbbbbfb7b7b6b6b6b6b5b5b5b5b4b4b3b2b3b3b2b1afaeaeb2b3b5ac +a9a9acb3bbc3c7d6cdbda9937d6c635d506a6e785f4f46393a352b272a2d +2c27382f32402e3f372519263243292a46253043432f403938342928281e +1b252d303632262727232933221b252b34282f2629241b171d24271a1512 +141a1a120514221c171c34432a160e1a19081a030002010301016c0d0924 +2e2b252a2924272626272829292a2a2d2d2d2e2e2e2f2f2e2a2f2f434e48 +688fbdd67b0a1e212b0a0528101b2e15071826162c343620342446140841 +2320274f90201019292b36686876835f6a74b95b87a5d6fbdb10038a6b47 +56545677a39f582a302531273e708da39b94133da8a3aba28825251d2621 +3c956200041f371a75ab9fa08fd9c4bbc9ab1c8261126f161c4086611c00 +04c4d2c9ccc12a725b03443b4f6c1b0a192d2710ebc4b5caae8fafacd9a4 +6062271f1d0025564a2f0d25221f2a2b2e382c1f1814314a2b152f112c24 +1973b5a9161310132603001d210e304937533f3b010f110c0e150f081009 +0a0b0b0905000000000000000000000000000000141c2b35271f3850a2db +f0fad3001a54e5dd3740251114150d070a0e273d50513c170319267a68c3 +097becaa607679717868787d746d6e727170716d6b6c707576736e6a7172 +69656a6c686a6d625c6c766d656c6d6e6f6f7072737774767d8181828683 +848890934d4a494845413f3e3d4248484842423d3f3a3b4245413e40443f +3c3c3c3b3d4346434245453f3c3c3c3c3d3e3e3e3e3e4838383926171e2a +2f2d29292a2826232526282a2e2f313232363a3c3a3b4145404b47454534 +4d8b30231f2e362c2225526c4e33371f56b7b5ada5a5abb8c6cbc6c1c3c8 +cac7c7cbc3c3c2c2c2c0c1c3c7c8c6c6c6c5c3c1c0bdbbbab9bcbebeb5b1 +b1b3b8bfc2c5d0c4b39a836b5b4e483a53566248392f24252319161b1e1b +12231a1d2d1b2c2414081521351b1c350d162c2f21352f312c221f1f1614 +1f272a322e2223231e242e1d1620262f232b292e29201c2126281b151113 +16160e0212221c161d34432811071112041b090400000100006b0f0b2933 +312b302f2c2d2b292a2b2c2c2d2d30303031313132353a34301f1f150015 +3665894000152a3b1a0f2a0d192f1b0a161f0a31637963725d773c23542e +252d589e332633444542574b5c6d4e595a8f14283464a0a00010b3a48494 +8f8596b5a658262b20291d2e5777969aa0254aafa1a6a18c302f1f252242 +a37205081d341979b1a8a897e5d2ccdbbe2c926d1e791e24488e6c270b10 +d0dfd7dace39806a1052495c7928172434301cfedcd2eed0b0cdccf6c47e +7c3c2a23062b5c5036142c29262e30313c312924233f54331e3a213a2a1d +79c5cd433e3a3a492014302f17364e3c5b4a4a0f1717161b24211d241e1f +222323201e1c0f1418120906030511110f010b376892ab925e575ca7e7fd +ffdd07316dfaec434d311f23231b1415162c42545743200b1d2a8273cf12 +7fe79943504a3f4333454d443d3e424140413d3b3c404546433e3b45463d +393e403c3e413630404a41393d3e3f3e403f4140444143484c4c4d504a48 +4c54579e9d9c9b999694938e949b9d9b9795949b989ea5a9a09d9ba59996 +9a9e999b9fa39b9da1a39c9b9b98989b9b9d9a9b999b898a8c7662636c71 +70707174737370737476787a7b797a757a7f8181838a928f9c999689646d +ac543e353c3e342e32416c633d2c133ebbb4b9bcbdb7b1b0aeada7aaafaf +aaaaaeb0b1b1b1b1b1b0b0b0b0b0b0b1b1b0b0b3b1afaeafb2b6bdcdd4d9 +dcd4bfa594797a7b7c7f83888d9894a18d9d91938893989894939ca3a590 +a88d9ea093b1b35320253a9381818792877d858783726743241d2018203d +4b383c2b2731313733333c2b2f28362f383d331f12141d1e18231e180f0a +090f1e4a5f7088939f9d683e1d0c13001a201f1c19120b20fc390f252e2b +252a292426272829292a2b2c2c2f2f2f303031313035282f2e4352578dc1 +d4ff5124302f3099f95e1a1f2f3f16121f1e28b0a73f0d19160c17233c22 +333f422b0f0b010b2216143f5e3b30c1777c96e4e7ff470f071a000a0000 +1c0f2d2c00000b19312e496184a6bcb82e004b04000618000a152227376d +721e1333020020310404139db4b6bab6177b83035525398165712320009c +b7afb5ad275c6501382767ae1a12262d2b03cad6cdcc5e857b788d746351 +50382e2832bf664b212b2a151d17102109121a224f7d550b031a3727085b +b1c581a8a6a2ad82606b5342232631825d610a251e264d79807d87898b8c +8d8d8b8a888f8d847a737275757e726d543929181c1b10224558a5daf6ff +e1344b56c6e79d493730373e332c2d33262e0e2f141f130e4542192e0030 +ffff71aaabaaa0a6a8b1a7a1a4a9a7a3a09f9d9da1a7a9a5a09aa5a79d98 +9da19e9ea39995a7b2a79c9ea0a3a4a4a5a6a7a8abb2b9b8b5b7bbb5b2b5 +bbbe7271706f6d6a686862697072706c6a696f6c6f797a746e6f766d676e +6f6d6c73746f6e7574706c6f696c6c6f6e6e6c6d6e5d5e614e393c454a49 +47484948454348494b4d4f5050514c515658585a6066606d6b6a603f4b8e +3b29232e342c292e406d6037240732b0a8b0b7b9b6b4b3b5b6b3b3b8b8b3 +b3b8b9b9b9b9b7b7b6b6b6b6b6b6b4b4b4b4b7b5b2b1b2b5b9bbc1c5cacb +c1ad927f6362616264696b6c71697866796e72677479797271787f81718b +7081827593953502071c7563636c796c5f65645f524d2f1613180b122c3a +2d352220282a302e2c37262c23332c34382e1d10121c1e1924221e181314 +181925221f24202e3d221d181d290b17080312150e0a1ffb370f242d2a24 +292823252526272728292a2a2d2d2d2e2e2f2f2f352b2f2f444d4974a2b0 +ed3005171f258ef158151725340b091f290f484335303931222428391826 +323728151d1d2f596a708c9a6243c26c6a80d0d6ef3a050e4a29432c3875 +7ca4a1572733263127425f8099a9a22f21b2a2aca28f28251d2431406b6a +140d320e1a6fb49e9d8cd9cec5c5be1e81870355243880646f212006aecd +c2c7bb31626803372565ac181023222000c6ccb8a6273e2920382a272637 +2c2c2630bc65481e26230e140c0412000f1717447d590e000926270b5890 +7309190f13290c00201d21122030815a5a0018090019312b1b1c1c1d1f20 +1f1d1a181d2123212529272123181e140e100f253c30273f55a6e3fafac6 +0d2842badc90371f1115150a060d191523082a0f180c0840421c32002bfc +eb517f7c786e73757d736d7075736f6c6b69696d7375716c667072686368 +6c69696e6460727d72686b6e717272737475767980888684858c88888b91 +944d4c4b484843413e3b3f464746413f3e403b41484c43403e483c393d41 +3c3e4446404246484140403d3d4040423f40404536393e2b191d262d2c29 +2a292624222627292b2f3032332e333a3c3c3e474b445151514c2d3f8434 +241f2b3229252d45726b4331133cb4a8abb3b8bbbdc2c7c7c3c4c9c9c2c2 +c4c8c6c6c6c5c3c2c4c6c6c6c6c5c3c0bfc2bebbb8b9bcc0c0c1c2c7c4ba +a1846e4e4a484746484b4b50475845594e5348575c5d5758606767546d52 +63665977791b0000025d4b4b515a4e434c504f4540240b090d0209253327 +2f1d1a23242a28263120251d2c25313c3422151721201b26231e15101015 +151f1d1c2423303e20181217260c1e150f13120d081df93a112932302a31 +302b2b2a292a2a2b2c2d2d303030313132323541342d1d1c130020485aa5 +0000102a369ffc5a1214263c130a171912798b7c7476664b443c44202d3b +453b2b3535475c463f68815030a236161a5f6ea20e00287b6c8a727aada3 +bcaa56232b1f291d32466789a5ae4130bba3a9a193312c1f23324578791d +112e0a1a73bca6a594e3dbd8d7d12e91930f5f2c40886c7a2c2c12bad8d0 +d3c83d707710453373b9251d2e2a280bd7e5d7cb4e6651485f4f49444d36 +312b35c36b4f252d2a15191006150216222552876217091936311463a599 +37473a3e4e2c19342b2a18243689656a0d21100b2645423438393a3e3f42 +40403c3f41463f35343538463b332422385e8eb095615b5eaaecffffcf1f +3c5bd0ea9a432c202323181318221b270c301520130c444a253d092ff8dd +385d5247393e404b433d4045433f3c3b39393d4345413c3744463c373c40 +3d3d423834465146393c3d40414140414043444b50514c50544d4c4f5558 +999795928e8b8987979b9e9c9d9f9e9b97979ba0a7a8a49e9d9897999b99 +9da19d9c9e9e9f9d9a9796999d9b9c9d9b96929089857e6a5f6968666b72 +7571757b737274777b7c7d7d7d8082838284898f92989ba37e7b5bb46f3b +38403c3c363357655930302e22bac6c0bbb7b8b9b7b4b0adacacafb1b3b4 +aeafb0b0b2b3b3b5babbbec2c7c9cbcce3e1e0dcd2c2b1a78e8c86807e7f +8488919192969b9b9794939a9c979699958f9193969696959493928f9295 +95959ba34d1d204aa296ac9b97949c9f968e826d4030221d1b1f364f433a +48233539353b3935393022493c3e473729161216241a1e6e4b05151b1927 +58677a8994bd85542e110c1105263835201b1f0546ff31162c2c2b2b2a28 +27272929282828292a2b2c2e2f2e3033322c2a2a27384e4d6195c0e6ed31 +2d302b2b3dff87354c3d7e1b1a1715168bb83d1d1e23161a5656464c4f36 +3c1d110c23251914464a25ac8784acd3f3ffb220250403000800001e2315 +1d0700050e403d355076a1aac07200420c070f22000b171f433635414d4a +442700003300101192aaadbebb22639c005d373740484e1f30008bb3adb6 +ba4d4e79072b28425e361733272506c3d9cbfb5c919a99a28c6e69513533 +262c37362b1f2a231f21231d1a13091d29316142240c312f15113e5a7195 +a9a6a7b4855e6b5a3f3e16484551c5202c25265186929ca7a9ababa9a5a3 +a3a4ac9d8672696c71726d6d5e43302d2a1a16032a674c9cd9ecffe91b3d +328345b8202d2b403e2f342b29382b171b1c161d0e201a03022501feff85 +9ea2b2a2a9adb0b0ada6a09ea3a8a3a09d9ea2a7a9aa9d9fa3a6a7a5a2a0 +a1a3a09a9ca5aaa9a6a6a7a9acafb1b2b3afb7c0bfc1c0b4b2b8bcbaba6e +6c6a6863615f5d6d717472737574706c6c6e757a7d7773706d6a6e6e6e70 +767071717372726d6c696e70706f726e6965645d5a56413842413f42494a +46474f484a4c4f505152525255565756585d6261676c7554553a96572726 +323234312f55635226231f11aab5b2aeaeb3b4b4b4b4b3b2b2b3b5b7b8b2 +b2b3b3b2b3b3b4b7b9bcc0c2c4c6c8dddbd7d4cabaa79a78736b65626466 +69706f6f747675716c64696d6a6b706e686a6c6e6e6b6867686c6c6f7272 +7278802a0000267e728879777478786c655d4d291d14110a0d223c36313d +1a2a302c34302e322b1b443739423224131015231b1f724f0b1b241f1e30 +241f1d1c4a291415121b1f020e09090d16190040fe2c142a2a2a2a2a2827 +2627272626262728292a2c2d2c2e31302b2d2d2c3a49414f7ca0c3c80f12 +19191c30f97e30473366010714280a28522b353a3e2b275b523a3d422b3b +25262b4c6071708e7c40b17c7195bee0f9a5151b123b494a423b7b948f96 +71283423453d324e709699a96e099698a79f922b261f234d3f333b464440 +322246b299a98ed5c8bec9c32969a0005d36363f474c1d30009cc7bfc7c6 +57547d092a26405c3415301c1a00bbccb3ce162e251e2b2317221f212e21 +2a3433281c251c1516140d0707061c212b614523041f1a09032628171b17 +0d142c0c00191d17270b46424fc1151c0a0012322b2627232323211e1c1b +1d241f16131c292d2b1e1e150606141d21372531634ca5e8f6fbcf002220 +773fb31319102018060e0a0e231f0e14170f16081e1906042500f4f66a7a +768370767a7c7c79726c6a6f746f6c696a6e737576696b6f7273716e6c6d +6f6c6668717675747475777a7d7f81817e868f8e908f86858e9290904b49 +4742403b393547494c484b4b4a464241454a51524e48474241434543474b +464447464845433f3f4146434545443f3c3d3837332119232422242b2a24 +262c2627292c2e2f32323235393a393b424541474e5b3e422b8b4d20222f +30312e2e56665a2f2d2617aaaea9a5a7b0b8bdc0c0bfbebebfc0c2c1bdbb +bcbababbbbbabebec1c5c8c8cac9dfdbd8d2c8b7a5926a5f58504c494a4a +4d4947474946403b383e43404044433f43454a4a49474645454245484a4a +5058040000025a4e6454504e565b54514b3e1b0f070500031b35302c3915 +262b272e2b282c25153e313646392b1a151a281f21734e09191f1b19281c +1c1d1e4d2c14110d1820091c1d181113190040fd30172f2f303032302f2c +2c2a2929292a2b2c2d2f302f31343330363225241f070528497184000013 +252f42ff812c4434730e0d0f150a579b757b797356476f6044444b394b38 +3b3f5e5a3e3166632f9a4f2c375379a26e001a2d7492989081b6bca69e6d +212a1a3e352337568492b17d19a099a59f94332d21224f4641494e483d2c +224cbba1b194ddd3d0dbd63979ac0b673e3e474f57283c0ca6d0cbd1d263 +62891638344e69412239221e07cae0cdef3b5a524a554b3a42382c32252f +3b3a31252c231d1c191009090d242c35694c2b0f2d29151036413d4a463b +41542f132f2d202d114b4b5ad023261307234a48464a48494b4949474948 +4c453e332c32383d3d3d28151a3c6c89a886687c54a4efffffd80d33368b +49ba1d251f2f27141913152823131b1d171d0c211f0f102f04f2ec555a4f +553d3f434a4c49423c3a3f443f3c393a3e4345463a3c404344423f3d3e40 +3d37394247464341424447484a494c464e555656574b4a52565454b7b7b8 +babcbdbfbfc3c2bbafa5a099939c9fa2a3a19e9d9da19c9a9b9a97989ca1 +9c989798958d868d9297989b9f9f9b9c958b89826c63726f6d6f73747074 +79737274777b7c7d7d7f82858584868c9193979ca4837d5baa7e34383a36 +332d2a5e6b582a2b342cb6e2e0dbd8d6d6d4d3dbdad8d6d4d5d4d4dee0e1 +e3e5e5e5e7eae7e1d8cec5bdb98e8a847d7772706f8f908e8e8e9295969b +999b9ea3a39f9a9a9fa19d9c9e9b969799999898979b9c9393979c9d9b9e +a4a9938a8caa95a49398959c9d938b7f69443125241e1c3553595b6d4549 +4845493d373a372d5d5f637663241a13262312affe6c1f111424505f7283 +919db270452e113e54452a42402e20115f230803222d2c2b2a2828272728 +282829292a2a2a2c2e2d2b2d32312c2c2a293b54566999c3ebc5312e2d2b +31339c82292d1967231d200d196cb35827110010186530343e2f3c260b1f +23262621403d1b67a199a9c2f4ebe82535370c14050100001d291e1d0d00 +00073d4234456c95abab86075817141d2e0010141759143b3e132322360a +023700090a88a9aebdbe315ba7005c39353d363c382e0f43dfbeb8da6827 +960027552527383c2e35330399cac7ff7596a7abb1967876613a6f3a3246 +21314b2928221b18181a1806101f2c4a282a443834372f456d86abadaca4 +ae8e66695b592151362a2e1927303533568fa1a7b2babcbcbab6b4b4b2a4 +8f6848332e2d2b353c3a2c23232115150421514c9bd3e6ffd8203d218b73 +802e14243d3d3137292f35251d1d1a1f1e1a1f1d13162801b8ffa2a0acb7 +b4b5adb4b0aba8a7a6a4a2a8a6a3a3a7abaeafa4a6a8a9a8a5a29fa5a9a7 +a1a1a8aeafadaeb0b0afafb0b1b8b3b8bfbdc0c1b7b7bbc0bcbe8c8c8d8f +91929495999891857b766f69707376777572717175706e6f6e6b6c707671 +6d6c6d6a625b62676c6d707474706f695f5e59433c4b4846464a4945464d +484a4c4f5051525254575a5a595b5f6463676b7759573a8c6320262c2c2b +28265a674f1f1c2117a1cccac8c7c8c9c8c8d5d4d2d0ceccccccd6d6d7d9 +dadadadad9d6cfc6bcb1a9a678746d66605b5654706d6b6a6a6c6e70706f +70737674716c676b6d6b6c706f6a6b6d6d6c6766676b696b6f747573767c +806a6163816c7b6d73707270645f5646291c13140c081e3f4c52623c3e3f +3b40332e32302556575e71601f1710242211afff6e21161929453329211e +223f1a0d1a134a5933030407151708561d02001d2b2a2a29292927282626 +2627272828282a2c2b292b302f2b2f30313e4942537ea4c79d0c141a151e +22907824290d42000016241614523a2f271023256a2c2831223428173645 +526377967c42739b8490aadedbda182b2e1a4b4d433e3c80a1a19e7e2f30 +1e42412d3e648a9d957c1e9b8d9f9a9031271c1b631d39380c1d1d3f2a47 +b297a38bd1cdc1c8c63861ab005c38343c353a362e1351f2ccc5e4702b98 +0026532325363a2b312d0093c3b4d52b251e19241e101d212069342d411e +2e48211e170e0705060804101c294928273c261d22141f312a331b100e21 +0d000f162b04422f272c171f20170311312e201f1f1f1e1c1917171a1108 +0000000000000000000004151f233b27284d4da5e8f3f8c10a2b0f7e727f +26040d1e19080f06121f161417151817151d1c13162800aff78d81868b82 +8179817c77747372706e74726f6f73777a7b7072747574716e6b7175736d +6d747a7b7b7c7e7e7d7e7f808782878e8c8f90898a919392916a696b6c6f +6f716f73726b5d534e47414b4e5152504d4c4c504b494a4946474b4c4743 +4243403831383d4243464a4a4648443c3c39231d2c2b27282a2723242a26 +27292c2e2f323234373a3a393b42433f434b5a404229815a1922292a2825 +25596854252125169cbfbcb7b7bdc3c8ccd7d6d4d2cecdcacad4d5d5d7d6 +d6d6d4d1ccc5bcb2a69e986b665f58504b453f544d4b4846454543433d3d +3e3f3c363132393d3a3b3e3e393c40403f3e3d3f4039383c414442454b52 +3c353755404f4047444c4f48464233180b050702001638464d60373c3a39 +3b31292f2a2250545b7767261e17292716b1ff6d201215253f28201e2127 +461d0e19104a5f3f151b1a1b1809571d040221302f302f2e2e2f2d2b2929 +2a2a2b2b2b2d2f2e2c2e333230363024231c07082d517b60000013213132 +9a79202611540c0a1510113e95827763414d457e3a323a2c41372744515b +543a4f4f255d7b4b3e46788399001f31378b9f978f85bbc6b5a378232416 +3c3c232b4d789498872ca48f9c9c93372d1e1a65244746141f193a294cba +a2ab91d8d9d2dad94871b70b66403c443d45413a1e5af9d7cef07b37a50c +34613132434734322d049dd3c8f14e514c484f44333d39296b3833482737 +512c271f150d07070b0918253251303047342d3125344d51614c403c4c33 +172828360947363037242c2a2113264c4f48494b4c4e4d4c4a4c4b3d3120 +0c0000000312170e0814396a86a8855e6452a4edfbffcb163925927a8431 +111d2d27161a0d172219171b1b201e1920221b203004b0f07c65615e4f48 +404c4a47424340403c44403f3d43454a4b4042454545413f3b4245443d3e +444b4b48474b49484647484f484d545254564e4f55585656858686878788 +888882888f97a4b4bfc3c2cad1d0cac9ced4b0aaa6a39f98969998938f92 +999b948c8d929494959796928a828089876f6474706e6f6f706e74787372 +74767a7c7d7d8083858585878d9294969ba58a805e9797333f3837342f2f +67755e2b24322895c2c3c3c0bcb9babbbab9b8b6b4b2b0ae9393918c8881 +7b787e7e8081828483839997948d898a9197929496999b9c9e9da09e9fa2 +a5a6a19d9da0a09d9c9d9d9a9a9c9d9997979da2949499a0a29f9fa3a1aa +9e979797a59b9e9a9e9d948d7f67452e2529201831566d7d936e625f5e5c +3e33353330647c819f9b2c25112a231473a60e01171c2440617b8798a99f +59391812afffff8d805320091c170415031d2e2d2a28262627282728292a +2a2a2a292c2d2c292c31312d2c292a3e585d739dc7ef8e39362d27353141 +58122731bd7a2a29081e48a17b370a00091652151d24668229001524262f +2c3f1356ab8474bee0e8ff480830270408060c08000009050d0a00000e43 +583e425b81ac9ca1344e544a4548161c1510592374992b1616320a003705 +080878a7aebbc1484bb20653502d2c293b40110e34f4c5badc8a26ac1a24 +5f293f34160d262e056dcfc3ec778eaab2b59674766a3e774b4d4a2b5324 +2229271b161b201b190f12275c5c545d4a515a2e3b87888dadb5a4a99975 +655e4d206e4c2b422b2f2035334c89adabb8bfc3c3c0bcbabab5b2946841 +2b231f1c1b20211a1410100d140a1b38529dd0e3ffe210292058585d6107 +2535342c352729312e423d282d1a22171d2327270258ffd199b0b3bfbeaf +bbb3acacb0afa79eadacaaa9abaeb2b4abacadaeaca9a6a4a6aaaba5a2a6 +adb2b2b5b8b8b5b2b3b5bdb7bbbfbcc0c4bebdbfc1bfc05a5b5b5c5c5d5d +5d575d646d7a8a9599979fa6a59f9ea3a9857f7b78746d6b6e6e6965686f +716a6263686a6a6b6d6c665c56545e5e463d4d494746464543464c484a4c +4e4f51525253565858585a5e6464666b78615a3b7a7c1c2c292c2c292b63 +71551f141d0f7aa7a7a7a6a3a2a2a3a09f9e9c9a9795937876757069625c +585b5b5b5d5e5d5c5c706f69625c5d636966696b6c6f70706f6e6d6c7073 +736e69696b6b6a6a6e6e6c6c6e6d696363676e66696e7577747478767f72 +6b6b6b797176717370635e5542281913190e041a415f7589665857565436 +2b2d2b265a727b9a9a29220e27211271a60e01171c2531312d21242d320a +0b0a16b4fcec593a160600130e000f00182c2b2927272728292526272828 +2828272a2b2a272a2f2f2d3132354247435882a7ca63111d1c101e1f314e +0d2820873700131b20004a4e2c17021b21551113195c7f2d08304a546a78 +86426ea87259a3c8d7f63f00281e0e3543474c3c6b8e9599822f2f21424c +2f354e789f88943e7aaeb6a9963e2d1b14632c739526101137263bad99a2 +8cc7cfc3c6c94f51b606534f2c2b28393e11123effcfc3e28e28ac1a225d +273f34160d2b340b75d8c1d0361b1b162018081726206e4246452550211a +1f1a0c03050708140f0f245b5b51553a3a420d0b46301c1d170c17150006 +1419005b4328402929131a030424311816121212110f0c0e121f16020000 +040602000000010a17232c3f2c213353a9eaf2f9c8001b0a4757615e0010 +1912030d020a181e37342128151d151c2327270154fcbf7f8e888d877886 +8078797c7c736b79797676777b7e807778797a78757270727677716e7279 +7e80848687848182848c868a8e8b90938d8f939393923a393b3a3c3b3b3a +343a414754646f73757f86857f7e8389655f5b58544d4b4c48413d404749 +423a3b4042424345443f3831313c3e261e2e2a282826232124292627292b +2d2f303032353737373940423e3e47574543286c731628262a2a292a6272 +5823171c0a6f94918f8d8d929899918e8d8b898682806564605b554e4841 +3f3d3e3d3e3e3d3b504c47403b3c41453f3f4142423f3e3b393533353634 +2f2d3037373535383a38383c3c383434393e3232373e423f3f43434c413a +3a3a483f4543494943423d2f1608050c0400143c5c728863575454513428 +2b282558717ba0a23229152e261774a80e00151a202a25231f2735380f0d +0a17bafffe6f52280f0316110011021c2f2e2e2c2b2b2d2d28292a2b2b2b +2b2a2d2e2d2a2d32322f342d24211b0811335a8630000714182e2d3b4d09 +2328a1580a1608151d8193704e2e3f3d681f1c21658a3811374d54543a40 +144a8744124a687db51400262329799ca19f83a1ada0967622241b404c2a +253b6796879b4883afb6ab9a46341b13653581a32d120b312741b7a5aa91 +ced9d4d8dc5f61c2125d5734333044491d1d47ffd9ccee9934b8262f6a34 +4b40221527300b78e1cee6544449454a3d28353b2a71474d4c2f5b2c272a +231309080a0a1a17182d63635a60474a522023645648504a3d443c211e25 +250661482f4b36351c23131a425544474748494847474a494c3c270f0001 +0205070b040413346889a886534957a5ebf9ffd30a281f5a5d6467091f28 +2011180a101c213b39282f1b2118222b2f2f0655f8b1686b5d5a4e3f504b +46444a4741364744444145464c4e454649484843423e4244473f3e40494c +4b4c514f4c47484a524b4f53505258525356575656949392908d8b8a8994 +95918a868786827e84898884848b91abaaafb9c1c6cdd3d7d1cac7c5c0b8 +b1b3b7b8b6b5b7b5b0aca4a3ab9f765a626c6b6b6a6b6d7478727174767a +7c7c7d7d80838383858b91959498a690816186b13b44393d3f3f43617662 +2f202f24717e838684817e7f837e808081807e7e7d939597999a98959490 +94989ca1a4a8a99ba0a19f98979ca19897999d9e9d9c9c9f9d9fa1a4a39f +9b9e9c9c9a999b9a9a999c9f9b98979fa39a979ca3a5a2a2a59eab959b93 +a1a499a19ea19e958d7f63452c252c21132e566c87a0887373756c443333 +302d5c8588a4bc47341218201d070b08181c0b254e5e7c899cb08d48352c +0098ddf45b754c23241c046a921c23302e2a27252627282728292a2a2a29 +292a2c2d2c2f33322c2c272c415a647da2cbe9674e433022353a3e43111e +27e490432b0920337c97500e000918312c2c256588301f333c39354a210e +87a05979dce8fb98061e5314250f0904030000161a16160005132f47264b +4b74a4a3b85925000000000013191a303567a82e031f260400370f0d0a66 +a0aeb8c16136b5124143152e598c5b121120a5899ea57c2d6621253e479b +62081417210b47dabdd28684adb6b4926d6f6b334516103055862b192525 +1c1821241704192a1d374b2e1012194849425a68e8a9bbada9a88265674e +3e493c345d6f3e082a2b3e7cb9b4c4c5c9cac8c4c1c1bdb5986d48332d2a +282e2c2821140c0d101514212e5ca3d2e6ffde1130322d1e039c04222528 +27382f282d33544628331d14153e605e3f1409fffd96adafc2c5b8c1b9b3 +b2b4b3aca5b0b1b0aeadafb4b9afb0b1b2b2b0afaea9aeb0aba6a7afb6b3 +b8bdbdbab7b8babcb8bdc2bfc3c8c3c0bec0bec16868676562605f5e696a +665f5b5d5c5753585d5c58585f657f7e838d959aa1a8aca69f9c9a958d86 +888c8d8b8a8c8a8580787680764d333b454442414042464c47494c4e4f51 +51525053565755575d6165656b7a675c3e669624312a3135363d5f745c24 +101a09545e6263615e5c5c5f5757575857555352686a6c6e6f6d6a686365 +696d71747576676a6b665f5c61686567696b6c6b6a696b69686b6e6d6965 +6767676767696b6b6a6d6d696362676e696a6f7678757578717e676d6573 +766e7874756e635e533f2817141c1000174362829a836d6e6f643b2b2a28 +23527b7fa1bb46330f151e1b050907141807213928291f283825030e2301 +98d0d1253111091e1300648d17212e2c2a27262728292526272828282727 +282a2b2a2d31302c32313a4544445e84aac338252d1f091b242d380c2013 +9a350006142400315d30120f181f342a251b5d8737314f63676c86572e90 +933d58bed2ed9001194c0b2b343e3b453a6c9daa9f892c2f1e2638123739 +6b9a90a8583e282f2b300d1c1f203b3e66a4290018291c29a9a1a791b9cf +c5c3c9683cb9124142142d588a59121329ae90a5a87f2d641f233c459b62 +0817222e1555efc7c44e141a161c15021126153a0b06284f8225111a1808 +010807010018271a34482b0a08093026121b1d821b1c10151f0900161419 +3431315d6f3c0115000017381b190e0d0e0c0a090a0e140d000000050803 +01000002081121313e3221255baeecf5f5c0042419151b079a00110d0601 +0e070814234a3d222e180f103c5f5d401307fdf0808e85908d808d86807f +818079727d7e7d7b7a7c81867c7d7d7f7e7d7b7b757b7c7872747b838287 +8c8c898687898b878c928f9398938f908f90904b48474542403f3c474743 +3c38373634333b403f3b3b424862616670787d84888a837c7977726a6365 +696a68676967625b55555e562d141c262522211e1f22272526292b2d2f2f +302f32353434353c3d3d3b445749422a578b1e2d273134373d6075602811 +17004447434341404148493a37393839353332484a4a4c4d4b484539373d +3f43464849383c3d393430353b3637393a3b38353232302f2f32312b2931 +3333323234373736373a363130363a312f343b3f3c3c3f3a473339313f42 +3b4442484640403a291606040f0600113f607f9a806d6b6f623c292b2624 +517c82a8c34e3b161c2320080a051317041e341e211f2b412e08112605a2 +e1e53c48231220180068911b24312f2c292a292c2b28292a2b2b2b2a2a2b +2d2e2d3034332e30262120150b1b3b63850c0518170f28303336061d1ebf +60190e03150d5c9a714237373945352d24688f3f35505e5d4f501900615f +0007647ca66200165310457b9a96997f9cbab3987c20251a273d132e2b5c +8e8ca95e432b312e3416231f203f4774b2300012221c2eb4aeaf97bfd9d5 +d5dc784cc51e4b4a1c356095641e1f30b598adb188376f2a2e4950a76c14 +1e1e271658f4d1d5693c47444537202c3b1f3e130f335b90332028221309 +0c0b04042030233d5134141316403a2a383eaa4d524545492c1929222139 +3738677b49091e100e375f4a4d4748494949494a49463725100505070a16 +120708122f6690a78c533a60aaedfaffcc0d302f2b220aa50b211b140e18 +0f0d17244b4026351e151441656545190afbe76b6f5b5d5445544f4b484c +49443b4847484445454c5147484b4a4c48494643464a43403f494e4a4f54 +524f4c4d4e504c515451555a5554545454558e8e8e8e8e8e8e8e84888a88 +898b8b878f8e8c8a8988898986827f7e7a74727472777e858c93999da2a6 +a9a8aaadaeadc0bbb9c0b58d70746e6d6c68696c7476727173767a7b7c7c +7d80838385878c91969197a595816675be4c41393d404248536d6131182e +306b939a9fa19f9d9fa29ea1a3a4a4a2a1a09295999ea0a1a09fa1a1a1a0 +a09e9d9ea3a9afaca4a1a5a99d9a9a9b9b9b9c9da09d9c9da0a09c989c9b +9a9a9999989a979b9f9d9a989d9f9f9b9da2a5a4a5a8a8af97aa9ba39f9c +9e9c9e9a918a7a5a422b242a1f0f2850648199957d8084724b3538342f53 +89839dbf60411a07191a3d23060e1b1a374e5f7f8ca0b0783d2e2a009edf +fa4b77541c0a161ab5ef0811312e2b2826262728272829292a2a2a29282d +30313436332c2b242d435b6b87a8cecc5568533522312d4c5d3c2416bb90 +672d111c2d51a37117040f1a415054433242132a29292f202a1d668aa46f +bce4fade1419293617111c1300060003180c2020000a1b234e2d4f427297 +aab97e2108000005132d281e15323c743320302b100035140d0c56a1aeb7 +bf7723af252a4e213953913c1e1a090f000000030a201431263e81611a11 +251f0b1bd0b1c5b680b0b8b39267676834483729788d753d1f2520151622 +231407111a1b548e53090a2b3215356e54ae9dbbb3aeb18c646a613d2915 +3e634f8706262d3b75cac7d6d6dcdcdbd6d3d2d3d1be9877615855534e4a +47422f1c181d171a283365a8d3ecffc71833345b7d3fc11027242a2e3b38 +312b2b3d27102623220e1a24180f1700e7ffa4afbac9cec8c5c1bdb9b6b4 +b3b2b5b8b8b5b2b3b9bfb8b7b7b7b6b5b4b4b4b7b9b6b0afb6beb7bbbfbf +bdbababbb9b7c0c7c3c7cbc6c0bdbcbcc065656565656565655b60626061 +63635f66656361605f60605d595655514b494b494f565d646b71757a7e81 +8082858682948f8c958c64494d4746433f3e41464a47494b4e4f50515151 +54555554575b6167656a7b6c5c4355a2332c272f3436425471602b0c1b15 +4c70747877757274756d6e6f71706f6e6d5e61656a6c6d6c6c6f706f6f6d +6b6866696f736e6661656c67686867676768686b6867686b6b6763666564 +666767686a676c6d6b6462656a6d6c6e73767576797980687b6b736f6e73 +73726b5f5b4e362716141c110015415f809794797c806c452f2f2b24497e +7d9cbf604119061718381f020816152f352328202b3c19021128029cd1d7 +1a3e2408050f15b0ea030f2f2e2b28272828292526272728282827262b2e +2f3234312c32313e4840446587aca5233c3e27081316394f3729005e1e0b +0010210b155a3a10131b21434e4f3e2f451e3e474f5c4f573f75858d4c99 +c6e6d2121a28300c123a413347436e958f977d19231b173f1a352b688f99 +a772262a2a1f261d2d2c27203b3e72301c292c241fa5a4a795aed3c5c2c7 +7e29b3252a4d2038528f3a1e1d0e1400000002071d112e243d81611d162e +29142aebc5c186131e181c19030d27163d2c1f70876e3616181000000402 +00000c15164f8b5208092422000b3d1a5813191416240e00152314100a3b +6351890519060011492a271a1a1a181716171919120800030a0b06000000 +02080a1a2f363221245faee8f5f5a30b27123b7340c10c190d0a08111011 +1118311e0a211e1d091823170e1800e3fd91949397968d918e8a86838180 +7f828585827f80868c8584848483828181818486837d7c838b868a8e8e8c +89898b8987909793979b968f8c8a8b8e49474747474545453b3d3f3d3e3f +3f3b46454341403f40403d393635312b292b292c333a41484e52575b5e5d +5f626360716c6b736c462a2e2827231f1c1e22252526272a2c2d2e2e2e31 +333133333a3b3d3841554c412f46972c29252f3438445674652f0e170a38 +54504f4f4f4f5454454347464844434236393d424445443f3c383a373634 +3433373d413d3731353d3837373737373636373433323535312f37373637 +3636373936383c3a353336383834363b403f4043454c34473a423e3c403f +43413c3d35201405050f08000f3e5c7e98927a7b816c472f322c284a8281 +a2c968491f0c1c1d3c20010813122d301b212031452108152d0aaae2eb2f +4f3011091619b6ee071232302d2829272a2b28292a2a2b2b2b2a292e3132 +3537342c2b1f1e1f110d25446c6e0021291c0b1b1c3b4c31250c8b523005 +000b0c2f91743a32353450595645384c223d3f40472f2c0d3e4541003f70 +a1a200152e3a142e839f8e97849cb1999373101f1b1b461e34235c8291a5 +74292c2c252d27352d2624444b7f371b23262526b1afaf9bb2dcd5d4da8e +39bf31345528405a9a452a26141a0707070a10261a372f458b69261a2d28 +1931f2ced0a03c4d48473c1f273b204134287d957e4627291d0c070c0900 +04131c1d5692580e0f2c2d081f53337b46524a474f331528301c1610426d +5d950d22181233725d5e5759595a5a5a5b5a554a3d281b181a1a1a140c13 +1b326793a28c553963acebfcffb112312b537b44cd1b281d19151b181614 +1a33210e2824230d1d281d141d04e2f680776a665b515755534d4c484946 +4b4c4e4948474f554e4d4f4d4e4b4c4a4c4d514c48454e544e505453514e +4e4d4b49525753575b5854514f50538787888888888888858a8e8e909393 +8f928d898a8d8f8c888785878c8e8d8e92898c8e8b858284878083838080 +8281807f7d7c83847060677576736c6b6d737271717375797b7b7c7f8185 +8587898e93959096a3967f6b69bb643638363835394e6d67370e24326792 +98a0a4a5a4a3a59fa09f9e9d9b9a98a0a0a2a19f9c99979f9fa0a1a2a2a5 +a59da0a4a09b9ba2a89d9c9b9b9c9fa2a2a29f9d9ea0a09d9a9d9a9a9c9d +98989b989a9c9b9a9b9d9ea19b9ca1a5a5a5a7939c8fa898989da89c9c9f +9b928d78543f2921241c102748627b909f808288744b3338362f4a8a7d9e +b46c5221070d0e36841b1506072c60678293a3a66338231e009ee6f63f78 +772304303586d4172131302d2b282828282929282828292a2b292d303235 +38342d2b222f465d7092abd09750745b412c2e2e345a4c3935abba883718 +162a359c8d2500131966454e44463728463227352508469faac5c6e7f6f4 +522c48392d3e070b170a0d000028283c4100192c306b4647436e86a2ab9c +4a0e060110263222102c282b403846282e2a003613070d4aa7abb8bb8a17 +a34017553041285b1b2a21241b1a2425232429222d293527232d1f2a2219 +07cab0bede81b5b9b4996c656749263b172e2e2427363023161823281f15 +20352b2c4f2b160a202126344c39ba96b5b6adb293646959393136383e39 +7a1126314067cfd0dfe3e9ebe8e5e1e1e3f1e7ccad978f91927b74757459 +311f20181b284167abd0efffc116203561a5ece04340373b3b353631262c +2d1c0f131e1911202e1d1519008cffc5adc5c8d6ccc9c8c7c1bab7babfbc +c0c2beb8b7bec6c2c1bebbb8b7b5b5bababbbab6b3b7bfc0c0c0bfbebbb9 +b7b9b8c2c9c5c7ccc7c6bfbbbdc15e5e5f5f5f5f5f5f5c616666686b6b67 +6a656062646763605e5d5e6465656569606365625c595b5e575a5a575759 +585552514f585b4739404e4f4a444042454646494b4d4e50505153555757 +57595e6369666b796e5a484a9f4b21242629263353766c3605121a486e71 +7475757372716a6a6968676564646b6d6d6e6c6966647272737473737272 +686b6a665e5e656e67686767686b6c6d6e6b696a6b6b6865666565696a68 +686b686a6968666564666f6c6d7276767678636c5f7868686d7a7173736c +605f4f312416141a0f03153a5e7d91a180808670462d2f2d243f7f769eb7 +6f5221060b0c317e150c000021432627252e380c0710210a9dd7d7164d54 +14002b3081d2151f31302d2b2a2a2a2a2727262626272829272b2e303336 +322d3330404c3e456c89ad6f1e474933120f15224d473f1a3f321a000c1a +1805494415031b1f68444b41463c365b514d604e25569f9ba49fc0d6e04b +2d4d3b2a330729463d4a375d97969a8617222321643a2a27648394988940 +1a1b161d242d231837302d3e3542212d3c21a2a1a196a5dcc5c3c3911da7 +4017542f402759192a21251c1923221e1f241d272634272630222d251b11 +e6c8bfb21321171d21090c262919300d26271d202a231100000405020416 +2e26274c2c1b12231a12152712731211141320110010170b162935413d7e +18211202064d332d25252423222223242a29241d1e2325200000051a1d12 +162c302a1a295aade2f3f29607130d3995ebe24135221b150b0e0e0c1921 +13090e19140c1e2c1a1419008afeb5939f989b909295948e8784878c898d +8f8b85848b938f8e8b8885848282878788878380848c8f8f8f8e8d8a8987 +8988929995979c97948d878b8d424241414141413f3c4143434548474447 +42403f4444433d3e3a3e4145424549404347423e393d3e393a3c3739393a +35312e2e363d291a212f302a211e1f2121232627292b2d2d2e3032333333 +353a3b3c3640514b3d323893441e25272c2b37577b723c08100e334e4847 +4747484a4a3e3c3b3a393736353f4041413f3c39353b393a3b3b3b3d3d36 +393c383131384039393838393c40413f3c3a3b3f3f3c393d3d3d3e3f3a3a +3d3a3a3a39373737373c36373c42424244323b2e4738383d483c3d42403b +3e331b1105040e070011395d7c93a0828189714a2f34302a43857da6c076 +5a290c100f3580150d00001f3f2022283641150b142813adeae926575b1b +05323687d71a2233322d2b292929292a2a2929292a2b2c2a2e3133363935 +2b28191c2010102e4a733e003035281114182247413b2b7372470600010e +13777b3a1e302f744c52484e4237564236422c0931634a43386189ad2f27 +5347353b2371a2969a798db3a39a83142126286b3e2e245a748991853f1a +1e1b252f34251a3d3b3c4b3c411b283e28aeada99ca8e4d4d5d6a12db34c +215c37482f6424362b2a201f282925262b24312f3c2f2d3727322a271df1 +d4d1cd4055494a4526283c3420381633372f323e34210d080c0c070e1f36 +2d2e53311f1528221e25392591434d4d454d35132425151d303c4a48891e +28221b2979686763656768686769696d676150413b3f42312b2936393e67 +929c854f4161aae4fcffa70e1d28539ff0ee4f45312a221516120d1b2316 +0d151f1a102331211a21058df8a67a78676152595c5b554e4b4e53505456 +524c4b525a585754514e4d4b4b505051504c494d5355555453524f4b494b +4a525955575c5757524d50538b8b8a89888786868b8e8e8b8a8c8b878a86 +84878c8f8d89918d8c8c8a8482848587888888898b8d90918f8986858380 +90918b88887b6c6d7578766d6c6f737071707375797a7c7d7f8287878688 +8f92958f959f947b7063b48034423b382b2b40676f460b142a5990969ca3 +a6a5a29ea4a39f9c9a9897968d8d9394989b9d9c96939493949293929698 +9b9895969ea49b9b9b9c9ea0a3a3a29f9c9d9d9d9a999b989a9e9c979699 +9c999697999c9f9c9d999aa2a6a4a2a2a1a79aa69b969fa3999ba09c948f +78513b281f1e1811263f5d7388a6807d89794b2f34342d418b789ead776c +1a0e03144c8d171b231d2a496e859aa49b553b1d11008aeaeb2042531117 +02361800031f3231302e2b2a29282b29272626282b2d2b2d2e2e31363530 +2d22314a5e7799b1d45a4e6f5c4e3f2f3a323d32282cb4b89c4c1f12212f +8da331000f1c682a2126321e2d3c321d1a0c387a99bec9f5fafe75041124 +00332c0e03130101000a4b51576e17242c28652940485a7b98a5a5693331 +2d2e3e3a241240231c2c2317112738003111040e3ea7aabbb898159a5f0d +5521463165493b222223222223231b28281d43422e2a403d252b3304c6b9 +bef080b6b7b49f716464582d7a5e483f473e3731292222262c2a210a1923 +2f5832293d4129282047336d9db1b4abae986865524c365d331c32191a1c +2c3b50c5cdd8e4e9ece9e6e2e2e6e6e3ceb29c989fa6ab9f9d98713b2021 +1f1b224f69b3d2f1ffbb1f28493b3ff8ec704f3e41402d362c23362d2d2d +14251c121319101b1b1029faf2a3c4c2dbcacbcbcdc9c2bfc0c3bfc4c7c2 +bab9c1cac7c5c1bdbbb9b8b8bebbbabcb9b5b8bec5c1bebec0c0bcb8bebc +c4c8c2c4cbc9d0c6c1c1c5626261605f5e5d5d626565626264635f625e5c +5f6467656169656464625c5a5c5c5e5f5f5f606264676866605d5c5a5463 +655e5d5f5245464e514d454144454446484b4d4e4f50515154575756585d +6269656a786e584d4498671c2e28281c24497579490606143a6c6c6e7172 +716c6971706f6c696766675e6063676b6e707372747372706e6a696b6d6b +6863646a70666667686a6c6d6f6e6b68696b6b68646562646a6a67666a6d +6a6564646666666a696a727674727271776a766b666e747072746d64614f +2e221713160e0617345d798caa817e8877462a2d2b223680719eb17b6f1a +0d011247870e1117111c2729262930310410111a098cdfd302253f071400 +331500021e3231302e2d2c2b2a292725242426292b292b2c2c2f34333035 +3246503e47728db130184049422311221e302d310f3c21220009151a0831 +4b190315206b2b202735263b515241442f487a8ea5a4cbd2dd6200162e02 +311f0e284b393f2c5ca4a496941e191d1d6a29232850798c9389542d322e +2b3230251c4b2b1e2a20130826471c9b9f9e999bdec4c6c09f1b9e5f0d54 +20453063473b221f211d1d1e1c1421211840412f2d433d1d202705dbcebc +c10e1d1017250d0b2338206f54403640372b24160b060507090b000d1c28 +5535334d4c2a1e0c2f1f371d0d120e1b1400090e1d1b51301f3622271f14 +040048332926252524232324241a1c1b1311151919130a162c2a15142a34 +240e3156afe0f1e6880b161b0a29f3ee6f4429211a030e0906221e24270f +231a100e170d1a1b1129f5e48b9e92a08e95999b97908d8e918d92959088 +878f9894928e8a888685858b8887898682858b94908d8d90908c888e8c94 +9892949b979c928b8d8f4646454443403f3f424545423f41403c3f3a393b +4143423d464141403f3837393e404341434246464b4a4a42413e3e374242 +3d3b413428292f322d221f21211f232427292b2c2d2e2d3033333032383a +3a333d4f4a3a37328c601a2f2a2b212b507e82500a0307254a423d3e4041 +403f4443413e3e3c3b3b34363b3e42454747403e403f3e3c3c3b40424340 +3e3f45493e3c3f4042444748494643444848454243404245453f3e404340 +3a39383a3b3a3b3839414543424241473c483d3843463a3c43413e403318 +0e070509050014325d798fab85808d7a4c2e34302a3c8878a6ba84762213 +06154b890f1217111b2524242f393b0d171521149bf0e30e2a410f1b083a +1c0407233433302c2a2928272a2a282727292c2e2c2e2f2f3237362e2617 +1f220f1637537b06002c38342011221d2a272e21796855140000070b5a7d +3919252c7430262c3c293b483d251e0e3b6250482f53729841001c3a0e3c +282a6ca08c8a6c8cc4b69f97241f22236d2b282b476a7e8785512d363334 +3e39271d51362d38271201214a24a8aba69ea0e5d3d8d3af2baa6b175c28 +4d386e52472c2624232124231b28281f47473432484528303d1aecdfd2e1 +4156484a4c2f2b3b4327775f4f4752493f36291b120e0f1017071724305c +3a354d4e2f27183d2b4f4e494b414839151e1d2720553728412b2d24221b +1672676466676a6969696c6a5f5f5d4b3a373e444e44414e4a4668919f7f +43495caee3fbfb9b1422372735f9fa7f543830270d160d082421272b1628 +1f13121c142023162bf1d7737961644f595e605c5552535652575a554d4c +545d5b5955514f4d4c4c524f4e504d494c525a55525252524e4a4e4c5458 +5052595860564f51537f7e80808282848388898985878b8e8d8d8b898989 +888581868485898a88878a898787858a898a86898a8b8585858683818a87 +84897f706a7075736c697072706f707275797a7c7c7d80848584868b9097 +90959f947a7361b096355045402c2a275972541212274f93999ea4a8a7a1 +9ba39f9c99989696979898989897979796939396989a9d9e9e9194999997 +959798999c9c9e9f9f9e9e9f9b99999b9a98959695969c9b949296a19a93 +93979c9e9c999699a2a7a49f9da7a795999fa3ab9e92959a958d876e4737 +281f1c1613253a597186ab7d76877e4e3237372f408f7999ab82840c1000 +253f34100919112b5a73889da48f4b3e1d1c006fe6f2293d612b1c0b0b01 +040823323231302e2c2a292c2a2725252a2e302f302d292c3336322b2336 +5260789eb3d32a415e5b5d51362444362d1f19d7aba762231113307dab33 +140c26562904146c494020221517205f88b1c2dff3ffb156700c00021731 +18040f00120811090028590c1220246516414f477a91a59b6c2e2f2a202a +231712363946865f03202636002d12010b2d9aa8c0b7a116957208a52d36 +204e5324161c222b352b3e322f1c27623b574d210924303a00bbc0bef675 +adaeb2a97b615f454467293936322f1e222b353937383928152932325c37 +31422222532026429dacb2b3aaac9f6d645c55275561483131271b252f38 +b6cfdbe0e5e8e6e1dfe0e4eeecdabda49ba2acb4a6a19c72391e2328191a +5467bad8f4ffa0202e455745dddb764130363c29403627371f2f44244322 +1c1928283b292300f8ff9abcbde2cdc9cbcecdcac5c4c3bec4c7c1b9b7bf +c9c6c4c1bebcbcbdbec5c0bec1c0bcbdc2c5bfbabcc2c5c2bdc4c0c5c6be +c1c9c9d8ccc4c5c655565658585a5b5c5f62605e5e646564656361616160 +5d595e5c5d6162605f62605e5b5c5e605e5d5d615f5c595c5a58535c5b59 +5e564741474c4a434145484648484a4d4e4f50504f52545554565b606864 +6a756c555142947d203c32301d232e667b570d0411336f6d6e7073726b67 +706e6b6a676767686b6b6b6b6c6c6b6c7173747678787877676a6d6d6967 +66686567686a6b6b6a6a6d69676769696663615e6167696462667169625f +646767676666697277746f6d777765696f737a6f696e706a615e4b282018 +13120b08172f587287af80798b7f4c2d312e2434827299af86880f100024 +3a2e050009001733272128302e041c1423056ed9d70d2d59241605080003 +0722313231302e2c2a292a2825232325292b2a2b28272a31343438334652 +3f4c7890b1071639464b2e130a322b281f005d11220804101614224f1513 +092453280518755651383e333837627b9ea6bbcee297476c100206162619 +2a47344c44545212556c01000c1d701a232a38748c987e4e1e2620181f1e +18173a3c45855f0017223f0f96a1a3a198dcc5c8bfa81c99740ba52d361f +4c5124141a20263026392b281722603a584e24081a232e00c6cdbfcf0b18 +0911210b081f21335c1f2e2b29281a171410060000000000152528573839 +4d2d254e0e0b265e290e110d19180005132108445a4834352c1815080046 +30232424242322222222222521160d0d141615071024220d122d3c230838 +54b4dff0f0700a1a192723ccdd793619171804180e041e10293f1d3c1d17 +1423253a292600f7fd849a8faa91959a9c9c989392918c92958f87858d97 +93918e8b89898a8b928d8b8e8d898a90948e898b9295928d949095968e91 +9997a4989091923c3c3d3e3f403f3f4343423f3e43454442403e3e3e3d3a +363b393a3e3f3d3c3f403e3e3c4140413d4041423c3c3c3d38313a38373e +382923292e2a231e222220212426292b2c2d2d2b2e30312e3035383a353f +4d4938383088761d3d3433222a366e84601303061e4f463e3e41403c3845 +43403e3e3d3d3e4142424242424442434246484a4b4b4c3f424848454345 +443e3f4042444445454a46444448484542413f3f45443e3c3e4941393739 +3d3e3d3736394247443f3d4949373b41454f4133373e3d3a3e2f130e0907 +080504142d567489b2857e8e834f31333128388979a3ba9191181805293e +3009000c00193427243039350a1d17290f7eebe8192e572b200f1105090d +27363433302e2c2a292b2b2826262b2f31302f2c2a2d34372f27181f2009 +0f39588b00052731372811092e25221f07965759240000011143782f251a +315e2e0a1b744f472828191b1a454f52454d669464346d1b0f111e2e356b +9c8b9e8c8b73235b7009051524721d2d3131667988764c1f2b2b252d251c +1b454b57976b07182346179ca7a5a29ee8d7dbd2b82ca58014ad353e2757 +5c301f1f232c362d4033301d28653f5d532b1025344210d8ded3ee3b5245 +474f3128372d3b642a3e3c3c3a2b282622190c090f0f07202e315e3d3c4f +2f2a551a1a35795b4a4a424640191d262d104a61503d3e321f201a0a6c66 +5f6163666767666868696a644e38333c444f3f3b4a4742648f9f783a515a +b4e5feff861625303f31d6ea88462926240c20160a22132b452544231b18 +292c42312d04f5f36d755e6f53595f61615d58575651575a544c4a525c5a +58555250505152595452555450515559534e505457544f545055564e4f59 +58685c5455567c7b7d7a7c7c838582848680828487838585868686878788 +8888888888898a8a858689888987868488888a8a8a8887858c8f8d8c8a82 +746874706e6c6a6a727b717274767a7b7c7c7e81858787888a8e94a0979d +9b7f6e61a2bb443c402c35243e6675601d0d24558498a1a1a39e9ba1a4a5 +a39a959194999294989a9b9b9c9c959c9b9ba2a19ca091959895909198a0 +999b9d9c9a9a9ea19d979ea59f9b9e9a9a9b9d9c9a98999a9c9a95939698 +9a989da0a4a6a6a39e9ba5a3a1a0a0a1a3a49a9f9a8f8a83644338252721 +17151d3e5b7682ae7d7f79775833353a323b7f7d93aa877d1f01120f0403 +120b132325527c81aca7814839231d1447faf81c331f0a1b1714c0b6002a +2f2e2b2c2c2d2a292c2a2f352f242329241f1a1b1d2025281f2d414e6a85 +9ab5a12f253f4e7678503b38313c2039eaaab5822812102453b94d08263d +3259271b5b3c27251e17274b8bb7c4ccd5f3d616698017090b32301e000d +12010e172906699a2e19200d3b1a3c535167898aac7334220b180c001915 +2c3e265970000a32120018100000157dadb1bc9d23838b007f1c0c5b774c +0d1e221d212d1d181e131d223245639045001841220caad7b5e2879ab8ad +b79364564c3b32211d4c5e9c11213e566a7d7d77443931341a606e140803 +153d25436489a4acb3acafa575675854294d312458735a1022232285e2ee +e1dde4e8e0dae1ecf0e3d8c5aca19e9aa0aaa09c7a3f2320231122416aad +e2f1ff89273034304dd2d9d421432b3a3b3740402d2c37373c521b1a0f29 +37553e2900caf4bdbacdc4dac8c9cfcccac6c4c4c1c4c5c2bfbec2c7cac9 +c8c6c3c0bebdbbbec2c4c3c2c1c0c3c7c8c5c4c7c8c6c1bfbdbec2c7cacb +c6c6c6c6c65355545453565a605a5f5e5b5a5f5f5c5c5c5d5d5d5e5e5f5f +5f5f5f5f6061615a5c5d5e5d5d5a5a5c5e5e605e5e5b595f5f5f5e5c5547 +3c4847454342444c554a4b4d4f5051525252555759595a5c5e616d666f70 +584c4288a4312c32202a1e3c65745d13000c355b6a6d6b6d6a6871717270 +6962606368616367696a6a6b6d69706f6f76726d71626667645f60676f65 +686a6966666a6d69636a716b6a6a6666676968666768696b66615f626465 +656d70747676736e6b75737170707173767178756a6762482a2514191409 +070f30506e7eaf8286817c582f2d2f242d717491ac898123051712030007 +00000a0a232a17333530131c181d143fe7d2002d2105110f0ebdb5002b30 +2f2c2b2b2a27272a282a302a1d191f1a151316181c232d303d45424c6076 +96871a102c395746201f2b2a320d03791c2a18000d181204632600152e25 +512622694f3f3f3529364f7d9fabb2bbdac207607b180c0c312b241b3c47 +363c48694293a919000e0a44191b2a385b8b858f532318001312071a1223 +3421597500012711257ca2ada49bd5cdb8c3a329898f0084210f5b774c0b +1c231e222d1d181c121a203245628f43001740220ca6d6bfcf2f131a0816 +0e0e2023212719113e5195151d1f18090b0b14000911200f59670e070314 +330a1824291a0a140f181c00020a1b0336261f556b46001b18002c392625 +26262a2a2422292b21201d1414160f0d130e1e210e1a3039201b325fa9e3 +ebf469111c160716a8dbdd12260c1a1c1211120c19353630421113082234 +55412d01ccedac9ca28da2969b9f9e9a9694948f9293908b8a8e93989796 +94918e8c8b898c909291908f8e9297989594979896918f8d8e92979a9b94 +949494943f40403f3d3f4446414544404044453f3e3e3f3f3f4040414141 +41414142434137363a383a37373439383b3a3b38383438393b3c3b36281f +2b2925231f1f272e232426282a2b2c2c2d3033353536383836423e4b4e3b +33307b9c2d2c32222e22416b7c641b0008284549453d3e3a39414647453e +3735383d363a3e40414142433c43424249464147383c3e3b36373f463d3d +3f3e3e3e4245413b42494442433f3f4042413f3f4040423e39373a3c3d3a +3d3f434545423d3a45434140404143443b41413d41433016160a100e0606 +0e2f4e6c7fb3888c847f582c2a2b232c71779cb9968c2e0e1d1709040d01 +051011292e1b3c3d2f0f18161f1c4efae70b2d1e0b1c1a18c6bd07303534 +313131312e2c2d292e3430252228231d1a1a1c1d24272023200e030f2c60 +76170b1e1a3a3b1c1b252430111aa756613e08070d1019803b0b2841365c +2b1b5a392526211d3136343f4e5b70a19d005b7f1d1311362f3c5e98a796 +948b8c4d8fa420061a13491e2632334b736f875429231327200d1e19364c +387189121438232e7a98a3a1a6e9e2cbd6b339959a098a27166381561827 +272227372924271a21253447679750091d452a16b5e4c9e3594b55424c39 +2930312c2f241f4f63a5212b31312a2d2c3012191e2917616f180f0b1c3e +192c3e4e4e464e464b482120202c0e3e2e265e76520823200b4a7065605f +64686761656f73675c4e3b373c36373c32434d4669878c65474965a8e8f9 +ff801e2520152bbeeaec253a1c2724191b1c131d383b3a4d191a0f293b5d +4a3607cbe3987a755565595d61605c585656525556534f4e52575d5c5b59 +565351504e5155575655545357595a5756595a5853514f5054575c5d5757 +5757577a7a7a79767677797c8082808084848286878a8889878a898a8786 +8182808283898a8c8e8f9192928f92949695928e8c909192918d87786a70 +716f6d6a6a6d73717274767a7b7c7c7e81858787888a8e95a1989f9d816f +6091c8563934312d293f697c6b230e1f488c9ea3a0a19c979c9ea2a19b95 +93979ba19f9b9796989ca09ea5a19fa49f989c9698999794969ca1989b9e +9e9c9b9c9d9d969ca39d9b9d99999b9c9b9a999b9d99969393979a9a9a99 +9ca1a4a6a4a19fa2a19f9e9e9fa1a1999e988c867d603d2d1d26221a1a21 +405f7a85ab7e7d7b7f6335383f333d848092b4917c00000d2f0a100c2116 +1149578296a59871493a2120142affd22735160c0c2034fab805152d2b2a +2a2e2e2f2d2d2d2f2d251b191d1f1a1618191c2024223147546b869db47a +32222c4b7277683a4032494947b5b1b18d32100f1e43a36b101a224c522d +3b3d291214201a357ca8bdc4d8f3f9211830132235393b070b0f09030313 +103b3c061a0b2721075944505851688784a7773920201600000a2019402c +513f143a340b00212f00001d88aabfceb5296e8c004434322d66a21a0b1a +2f1c2216191d0c141e293061874c162d290e177bdaade1a093b9b5bf9c5b +4d5f4d372e327a82960d1a3075a8acb39a6246363e296d8c4d1407113030 +456d99a9abb7afada981685d64362c293c5a51b8401919236fe4ffe3dbe1 +e6e0dde5eaeee2dbcbafa19e989ba69f9d7a3d211e230f1d3c65ace3efff +811f25293253ade0cc5358292b2f352d362f333b2b1919241c1917232318 +070051ffeca0c2c2c0ccccceccc6c2c1c1c4c6c8c5c2c1c4c9cac8c6c4c3 +c3c4c5bfc1c3c4c4c3c3c3c0c8cdc9c4c5c8c8c5c3c2c3c4c4c3c1c8c8c8 +c8c85454545350505153565b5d5b5b5f5f5a5d5e5e5f5d5e5e605e5e5a58 +565756585d5e6062636566666366686a6966625f606162615f594b3d4445 +464444444a504a4b4d4f5051525252555759595a5c5e606c646f70584b41 +75b1432b28262420396277641900072a636f6f6a6b68676d6d6f6e686260 +64686e6c68646365696d6b726e6c716c6569636566646163696e65686b6b +6968696a6a6369706a686a66656768676665676965625f5f63666667696c +71747674716f72716f6e6e6f71737077726a66604628190c15130c0c1332 +4d6c7caa8386848463322f32242e76758fb39380010114340b0e02120100 +2a252d292926261a22161c0f1ee7a20022100202162ef4b704152d2b2a2a +2b2b29282b2b2a281e140f1113100f1214181f29323f44434f647c956625 +1922374f3f331d332d3f2e0c4828201a0005181300544000020c3b482d45 +4f422d2d3124397591a0abc1dee9150e2a112134393b05112832383b4245 +80823a30000b15075d3f2f2f345b8b848b572a1816140a090d190c322751 +4719322806127bb6a19ba5e2cdc4d3bb2f7493014b39353066a2180b1b33 +1f24181b1c0c131e29305f8448142e2d131871d4bcd952171f0d110a0519 +302d2a292469738f161a0e2c311f26210a090d241c6382430c0410261411 +1e2c1a0b1812141b04000a270c11193555449724181a0e213b392a28252a +2d2a24252a232420151418120e150e1d1f0b1a303b1f18305fa8e2e9f069 +0b12150f1378dfd8443b0a0d111000040c20392a0c0718120f1020231c0e +0155ffdd83998f8a9c9ea09e98949191929496938e8d9095989694929191 +92938d8f91929291919190989d9994959898959392939494939198989898 +98413f413e3b393c3c3f414340414445403f3e413f403e4140413e3d3839 +3739363837393b3c3e3f3f3c3f4143423f3b3838393c3d3d382c1e272826 +242020242a232426282a2b2c2c2d3033353536383838443d4b513c352f69 +a93f2a282a29253d697e6c210205204f534a3e3d38373f4244433d373539 +3d43413d39383a3e424047434146413a3e383a3b3936383e433a3d40403e +3d3e3f3f383e453f3d3f3b3d3f403f3e3d3f413d3a37373b3e3e3c393b40 +434543403e41403e3d3d3e40413a40413d40422f150e040e100b0b12314b +6b7faf898b8987612d282a1f2b75799ac3a08c0b091c3a10130a19080032 +2e342f342e231218101d162cfaba0e26100a0d2138febf0c1d3533323234 +34332f2e2c2e2c261c1a1d1d19161618191d232526210b000a2f665f2f1c +16162f322f172d273e3522715c5745140913110e69530a18214e532f3c39 +240c0f1e1b3a59342b4773a7c8050c2e1626393b3d06276a8c989c9c899f +842d240019231366463a37304a706a805831272e2a170f12211e4b3e695c +2f493e1a1a72a79094b3fae3d8e7cb3f809d09513f3c3770ac25151f3626 +30252a2a1619202b32648d5721322c161d7ce0c3e8794b5b4a4c371e2640 +3a34303379869f1f241f47574a5044231b1b2d256b8d4e190f183123283d +55504752494a4b2c2024391a1a233c5c4ea8331d1c1739727a635f606567 +64656a76695d4d3b373d3730342d404b466782855b404663a7e8f7ff8117 +1817162d94efe659511a191918060f13243c2f1615221a1717272b251607 +56f6ca636d584e5e6062605a56535355575956525154595d5b5957565657 +585254565757565656525a5f5b56575a5a57555455565655535a5a5a5a5a +7476787a7a7b7d7f7f828483848684817e808383848487888c8a8a888b8c +909297979593929192929194989a98938d898e9292928f8a7a6a6d70716f +6b6b6b6e72737476797b7c7c7e81858787888a8e95a0969e9e836f5e7bd9 +79342f37292c37627f752a101c3d8e9fa39ea09d979b9da0a09c9896989c +a4a19c9897999c9e9ea4a09da19b949899989797989b9ea0989c9fa09e9c +9a999c94999f99989b9898999a9a99999b9d969595969a9d9e9d989ba0a3 +a4a3a09e9f9e9c9b9b9c9e9e9a9d978d85785b3c2d212a231b191b345a79 +85a7807d7e857338383f2c3882798ba7888e110a1d34200e04100e196e41 +6a9a9fa071413228241914ffc95b633927152b42b275151c2b2a292a2e2f +302f2d302f241b16161419171517181a1e2227374a596d8aa3ae533d2b22 +3d626d774a3541494b3aadadb3a148151a24388a7418293389592a3f2d21 +1d1e21376794b7c9cadaee6d082c4f3e5d3e394b340b04130b0009011100 +3457081019176d6e5a5348648185a1783f0a0c0000050e2d3cb8746a7b5f +4f6244100a361c0b0e78b4c0c3b5234c9400543f2d4f392e373f2a2b172a +2214181c172c3626293737482f23191d42fcbccac085b5bcc1a55f55543d +27300f3928181f262367a3a3be9e5c433c3d1129451a2021271e2d34618f +adafbdb5a9ac91685e5a412c3b3b393d7f4525151b53dffde9e1e3e8e6e5 +e9eaebe2dfcfb3a3a09b9ba69d98753a1e1f29131d3c69b0e5efff811c21 +28354f71ecc98e5a38313239423c28242a241c1a1f16201726161d181800 +ffff9ad7dbcdd0cfcfccc8c4c5c4c8cacbc9c6c5c8cbcdcbc7c4c4c5c7c9 +c4c5c5c6c6c6c6c6bec9d0ccc4c3c6c8c5c5c5c7c7c4bfbbc5c5c5c5c54b +4d4f5151535457575a5c5c5c5f5c5a53565759585a5b5e60605e5e5f6264 +666b6a68666564656564676b6d6b66605c5e616262615c4d3d4144484645 +45484b4b4c4d4f4f51525252555759595a5c5e616b626e715a4b3f5fc266 +24202c2022305d7a6e2004071f65706f696b6a686c6c6d6d696563656971 +6e69656466696b6b716d6a6e6861656665646465686b6d65696c6d6b6967 +666961666c6665686564656666656567696261616266696a6a686b707374 +73706e6f6e6c6b6b6c6e706f747168635b4125191018140d0b0d26486b7c +a68584858a73332d321d29747088a68a9218112439230c00030002501217 +2f232e23121a1d221608e88a163018130b213dad74141d2c2b2a2b2b2c2b +2a2b2e2a1f140f0c0a0f0d0e1113161d273541454651688391403125192c +4039442d283c413605442720280c04201c00454a00101e7b522c4b403934 +332f3f658ba2b1b2c6dc5d00234a3b5c3d37493010183944444b496e477f +840c0417196b61392f2d5785838558340809010818112634b17069816248 +573c2351a5a9987ec4d0c7cabc2a549b0559443052392e353f2b2f1a2c24 +16171c182d36262836334630271d1c38f9cbc2760b1d141513071c211917 +29032d1d142926021e2c162d1d00021022011f3b121a1f2718150718261e +0d1b160f1c10000819150e2a313431602a261907093c37322b252a302f28 +2527232622141116130e150e1c1e0a1a323d1f162f60ace4e9ed69080e15 +14133fe5cf814119111111130e070f2422100c130c19102315201c1f02fe +f57fb0a999a0a1a19e9a96959496989997929194979b9995929293959792 +939394949494948e99a09c949396989595959797948f8b95959595953737 +3b3b3b3a3e3e3e40423f4242423b31303433353438383d3a3b383c3c4141 +4443413f3e3d3e3e3d404446443f393536393c3e3f3b2e1e242728262121 +222524252628292b2c2c2d3033353536383839433b4a523e352d53ba6224 +2330252a376381762808041551544a3f3f3b3a3e4142423e3a383a3e4643 +3e3a393b3e404046423f433d363a3b3a39393a3d40423a3e4142403e3c3b +3e363b413b3a3d3a3c3d3e3e3d3d3f413a39393a3e41423f383a3f424342 +3f3d3e3d3b3a3a3b3d3e3a40403c3e3d2a130e0814110c0a0c25466a7fab +8b8a8b8d712f272a1826737393b4979e22192c3f2811040a010a5a1a1f37 +2e36210a1017231d14fda7323f211e142a44b47a1a2231302f3032333230 +2e2f2e231c1715131816151517171b2026281f0e00113a653c3d29100e24 +2e412922363f3b196c5a5755250a1c190a585e10252f8a5a2b412d1f1714 +152856644945587fac430024504261423a4a3124538a9b999983803f6a70 +0b0e2426766b443326466a6a7a593c161e16131e162d41c1817b91735867 +4929499599928cdbe6daddcc3a5fa50d5f4a3759433842492f3221383125 +25281d2f38282d3e42533426202243ffd2d19b3e58514f40202b32272231 +113b2e233230153b544158431a161f2b0b27461d262a2f22231c354e5449 +564e454d391d232d241834393b3b70392a1a102071756b6461666b6a696a +736960503c353a3730342c3e49446681865b3f4365abeaf7ff811414171b +2c5af7df9556291e1a1a1d180e1428271a191d1520172a1d29252503f8e2 +6185765f626363605c585756595b5c5a5655585b605e5a5757585a5c5758 +585959595959505b625e5655585a575757595956514d575757575778797b +7c7c7f83868283828181828281808388898a8b9092969698989a9b9e9f9d +9a96918e8e8e8f91929495938e89868c90908f918c7c696f7373706c6c6c +6f74747576797b7c7d7e81858787888a8e959e939e9f8571606edea42b2f +392c2b2d587e792c141f388198a09fa3a39d9f9fa2a19e9a98999c9b9b9c +9e9fa09e9d9aa09c9ba09d989d9b9896979b9f9f9f9c9d9f9f9e9b99989b +93979c96969a989899999998999c9e9898999a9d9e9f9f9c9ea1a3a2a09d +9a9d9d9c9b9b9c9d9d9c9e998d8375583a2e252c221819192c517685a385 +7a7b84853f394029317c758daf979100002152ee3103171e1e54636c9e94 +a478412d301b1406d8cd787b452a191117030006202b2a292a2e2f302d2b +302d2018191b171918171a1a1920272c3c4c5e738fa9a13d3d35232c4d69 +746c2b514a3023e4a3b8b6621b212630717a1a2126733d1d361b1326221d +57897394d6d3f2d20b25221e300912170a4016081f090000002d112d551c +0d0019692d433e3c5b7d8c9a6d2a0000000000001a074f151417000a1434 +1920552b2b368eb8bab3bb363e9f016f273d36273e351f25031700000005 +000b10223f26342e2e222539251beeb5cddd78adbec2ac635b5d51588c50 +5450483b383a5e99abc7ae74534844223b664c3b5052213b37618aadb1bf +b9a7af9e69644f4e395a492a392f34281f2646d6f6ebe7ecede8e8edefee +e9e8d9bbaba7a39ea69c9673361d1f301a22406eb6e9f2ff7c202a2e3448 +48e3c9b63a4a403a3b433d2e2527241c151b1926282e1512101600e2ffb1 +c5c6d8d1cfcfcdcccbcdcdcacccdcbc9c8c9cbcfcdcac7c5c4c4c4c7c8c9 +cbcccac7c4bfc8cecbc6c5c5c4c2c2c3c6c7c6c3c0c4c4c4c4c44e4f5152 +5255595c595a59585859595954585b5e5d606367696b6b6d6d707172706d +6964616161626465676866615c595b5f605f605e4d3c43474a4746464949 +4d4d4e4f4f51525352555759595a5c5e616a626e725c4d3f51c68f1b202e +21242853787325080a1c5b6b6e6a6e706e706e6f6e6b676566696868696b +6c6d6b6a676d69686d6a656a68656364686c6c6c696a6c6c6b6866656860 +646963636765646565656465686a64646566696a6b6c6c6e717372706d6a +6d6d6c6b6b6c6d6d6e73716861563c231a121a130a0b0b1e42687ca18881 +8288843a2e331a23706c8ab19b9801042859f130000c0d093a381f361a35 +2a101023191300b583212b0a0e0f0712000005212c2b2a2b2b2d2b2b2930 +2b1b1112110d0f0e10141618212a37424349546c88852b32301c1c2f3a44 +4d1a4c452000801d203419002121013750000814673b2343302938312459 +836882c1c0dfc2001c1c1b2f081215083c191945483b3f4f9175818c2c0d +031b611d332c2b537d887f552f070c1b180c0013064e12121900070d2a25 +53a99b9c8fcbd1c1bac23d46a608742c4039273e331f29071a0100000400 +0c11223f25332a2c23293a2411ebc4c797041816161a091e26264482464c +4a4745381b18261e3126110e182612315c44354e552029102128200f1b17 +0a1b19000a0b1e19493f252f141e292315003c3835312c2d30302a272827 +2c2919151b190e17101d1e0b1d344120173165b2e8ecf5640b191e161218 +d6c8a9252e1e141118150f101a1d150d110f1f23291415141b01ddfd969f +96a5a0a1a19f9e9d9d9d989a9b99959495979d9b98959392929295969799 +9a9895928f989e9b96959594929293969796939094949494943637393a39 +3c40433d3e3d3a3a3b3b362d2e323434363a3d4041424344464849494642 +3d3a3a3a3b3d3e40413f3a353233373a393f3c2f1d262a2a272222232426 +262728292b2c2d2d3033353536383839423a4a5340352c43bc8a1b233229 +2b2e5a827d2d0c0711464e494042414042434443403c3a3b3e3d3d3e4041 +42403f3c423e3d423f3a3f3d3a38393d4141413e3f4141403d3b3a3d3539 +3e38383c3a3c3d3d3d3c3d40423c3c3d3e414243413c3d4042413f3c393c +3c3b3a3a3b3c3c3a40403c3c3926130f0b1610090a0a1b3f657da68f8988 +8b8236282b1520706f95bea7a20b0c2e5ff636041215104341273f273e2a +0b0a1d1a1907c9a443441c1a17101805040b25312f2f2f323232302c302e +1f191a1a161817171817161c2126261c10041a455e29403616031734444a +1346422305a650596436091f1e0b4664111b227140213a1f121e1202345f +322c6473a49e00172022370e1418093d2c4f8e97878681a16d6a7729150f +287028362a2140616f7453320e1a271e0e051a0c561d1f250b101532254a +9a8f989de0e7d4cdd24d51b0107a324740314840292c0a210d0e0e120b11 +1524412b3b393927283e2a1cf6cbd5bb3552535047232e39374f8b515958 +554e422d344d495e4e2e2328301c39674f41595c2835233b4e554b575041 +4d441b26202e2453472c38232b2d241d186e746e6a68696c6c6c6f756e67 +58423a403d31352b3c48436783895c3f4668b1eefaff7c1a1f1f1e2932ea +dabd383d2c1f1b221e171521241d181a182629301a1e1d2102d7ec797865 +6c65636361605f5f5f5b5d5e5c5958595b62605d5a585757575a5b5c5e5f +5d5a57515a605d58575756545455585958555256565656568584817d7b7b +7e81858381818385888c979ba09e9d9ba0a2a2a0a29f9f99989394928f8e +8e90949696959493908e8b8a8c91918e9190806b727877716c7073737675 +7576797a7c7d7e81858787888a8e929e949e9f86756665cfc92e30332e26 +2d517a7829121f347593a2a1a6a59d9d9fa09e9b9897989999999a9da1a2 +a09e999f9c9aa19f9ba19b9795979da1a09ea09f9d9c9b9b9a999b93979c +96959a979a9a9a9998999c9e999a9b9b9b9b9c9c9d9ea1a2a2a09d9b9e9e +9d9d9d9d9e9e9fa09b8f8471553a2821281d171d1e314a72859f8c7a777d +8a43383f2c2f787886a79d9801163862e02e0311161a2a3e759f8e937253 +382f1f190a90db888345261e060e1a0000262d2c2a2a2e2e2e2b2b302d21 +191b1d191918181b1a1a222c33424c667992a8883532362c1e3c69687c40 +4863301cf39fb8bd721e1b1c23536d20242e4c301a231a1d202343778d7a +a3dec8f87b10192464a027100a013d0c0d17000000003d543ca43a00201b +3c4721233359799491587a5d5c6f38000b28284d365d771814273e16175f +4a5a5576b4b9bad15736a40c5243201a3f87400e0920c7a7aab986097842 +1e5854a277140b14413421b7a6f6f279a6babca8605365585172221a3329 +330b294895adb0ab734d393328416340383a371746335381aab5bcbaabb0 +a66e6b5d582d555d3f42553900102e35b1ebe4e9f0ede5e5ecf0edeaece1 +c5b4afa8a0a89d956f331c23321e264672b8ebf1ff642037352b403ebbd5 +d0204b3d3738332e28242d3f4d4d5141292a2434445a4f1265ffdcbbc1d3 +d0cfcececdcdcecdcccdcdcccbc9c9cacbcbcbcbc9c6c3c1c8c9cbcfd0cd +c7c1c2c5c7c7c8c9c5bfc4c2c1c2c5c7c7c6c8c8c8c8c8595855514f4f52 +5559585656585a5d606a6f71726e6f717673747373706d69676765626161 +6367696968676663615e5d5b605f5e6062513e474d4e48464a4d4d4f4e4e +4f4f50525352555759595a5c5e616a636e725d4f4548b7b41c2128231f28 +4e777522070c184f66706e737571716e6d6b68656465666666676a6e6f6d +6b666c69676e6c686e686462646a6e6d6b6d6c6a69686867666860646963 +626764666666656465686a65666767676768696d6e717272706d6b6e6e6d +6d6d6d6e6e7072706860523920120e160e091213233b647c9d8f7e7c8189 +3e2d321e216c7285a9a19f081f4169e32f0108090615162f3f1925221e17 +1d1b18006d891e170002150009150000272e2d2b2b2c2c292929302b1c12 +14130f0f0e11151619232e36413f4d5971886e252a33281122403b5a2b41 +5e240093191a2e1b00151800254600091d463225342e302e2d4474836b93 +ceb8eb6f081321629e26100800390e1d3e4147403a9cb089d94d012a1f30 +3d2c343657788c794f9d9ca2b77f24101f2c52315876191423341837999b +af99a5cac1c2da5e3eab135748231d3f87400e0d25cbabacbb880b79431e +5853a075120c16403119b5b5f2b20b151513160210262737661a17312d3d +0b0c062520121a0700041217375b3a353a3c173a141c262011171709181d +000c13250c41533a3b3e2704161f00233831322e2b2828272627282e2d1e +1a1e1c101913201e0c20383e1e173367b4eaedf64c0b2826141110a8ccc5 +0f2e180b0d0e0d0d0d1932484a4c3a22251f33445e541362fcc49795a1a2 +a1a0a09f9f9e9d9a9b9b9a97959596999999999794918f9697999d9e9b95 +8f929597979899958f949291929597979698989898983e3d3a3634343538 +3c383636383a3b3b404043434040434745454544423e3b3a3e3e3b3a3a3c +40424241403f3c3a373633383a383f40331f272d2e282226282828272728 +292a2c2d2d3033353536383839423b4a534138323aadaf1a242c2b262f57 +807e2a0b080d3a494b43464744444342403d3a393a3b3b3b3c3f43444240 +3b413e3c43413d433d3937393f43424042413f3e3d3d3c3b3d35393e3837 +3c393e3e3e3d3c3d40423d3e3f3f3f3f403e3d3d4041413f3c3a3d3d3c3c +3c3c3d3d3c40433f3c3523110708120b0810112038617da096878284873a +292c1b1e6c768db5aca91226466fe834060d100f1c1e374a2930251a121b +1c1e0b81ad46390b101a040d1b020429322f2f2d312f2f2c2c322e201a1c +1c181817181917171e23252315140c244d4d26393c2500113e3e58263b5a +2602b84b55633d02151506325b151a274a31212a221d150b183f46264581 +7abe550013286da92c120b00381d4e81888f846caead77c74b0a342b3e45 +242423405c756f4a9794a0b67b2114242d55385f7c1e162433152c8b92ac +a6b9dfd4d5e96e49b51b5d4e2a2449914c181028d4b6bbca95177e47205a +59ab831f1015453824c0bcffd43a4e514c431d22393a447025223e384615 +1e214b4b42452717161d213f66444044421f44243349544e5350424b491d +2a2a36174c5b41434e330716260b5172696b6d6a68686c6f746f6a5d4940 +454133372d3d47416987885a3e476bb1f0fbff641a2f291a252abedfd61f +40291a1716141413223b4f515342292b26394e675a175defaa73686c6663 +62626161605f5d5e5e5d5b59595a5e5e5e5e5c5956545b5c5e6263605a54 +545759595a5b575156545354575959585a5a5a5a5a8482827f7e7f83868e +8a8b8e93949aa0a2a6a9a49e9a9d9f9e9e9f9e9d9997939793918f8f9194 +96979593908e8d8c8d8f94938f93978771747b7c726f7477767776767578 +7a7c7e7e81858787888a8e919d959e9e867a7160b8e64b2e2f2c23304f78 +78230e1d2c6d92a5a4a2a19a9b9d9c999594959798a29d97969a9ea0a09d +a29e9ba19e9a9f999795989da0a09fa19f9b9a9b9b9b9a9b93989e98979a +979d9d9c9998999c9f9a9b9b999796989a9a9c9fa1a2a2a1a09f9f9f9f9f +9f9f9fa0a19b92846f52382b252b1b141e1d29456f8299947a74797e3f2f +352c276b7b8c9e968500080b0a0306090607202b274180a08d6559433429 +1f1c56d1978c502828143ee3610f2e2e2c2a2a2e2e2e2a2d2f2d231b1818 +16171416171417212f39494f6e8397a56c332d32362232615f6a69317157 +23bea1babe842b19141e3e58292a3c473c201b1f2c18307d8b87b5d3d0d0 +ff2116251d47903700062d481907160000000024100061330109113d3224 +283d67779083545d44384f24000b1d07402e639f18001330220038380000 +97b5babac85217992832530a5b457d52270f26ede2ecf0b12b804f163028 +9a8c16121c3417085b3b46ee7d9db2b9a76a53635d3e421631765a64102d +4da3b3adbf805e4e3a28336961290000074b293e7ba7b9b7bbb3b2aa7a6b +5f5b3230343d6a796207051c3292d8dee7eee8dfe1e9ebe2dfe4dcc3b5ad +a4a2a79d926b2f1a2531212c4a74b7e9f0ff401c3a2f2537438ce8e4453f +35333c352b282127455c5d4c4120282243536b5e0d03ffffbbcfcdd2d0cf +cecdcbcac7cdcdcdcdcdcbc9c8c6c7cacccccac7c5cacacbcfd1cec6c0c4 +c5c4c4c9cdc8c0c9c5c1c0c2c5c7c8c8c8c8c8c8555553524f525559605d +5d6265686c73737879766e6c6d716e706f706d6b67646766646262646769 +6a68666361605f5d5e63625d636659424750514a474e5150504f4f4e4e50 +525452555759595a5c5e606c636e715d544e409dcf391f22211c2a4c7675 +1e030a124966757171726e6f6c696662616264656f6a6463676b6d6d6a6f +6b686e6b676c666462656a6d6d6c6e6c6867686868676860656b65646764 +696968656465686b66676765636264676a6c6f71727271706f6f6f6f6f6f +6f6f71716f685e4d331e1512190d0913121e36617997947e797c7c3a2427 +1e1c61758ca29d8e021114110809080100131a08082f3624141d171a1e1c +14357f281500021f0b39de610f2f2f2d2b2b2c2c29282d2f2b2116110e0c +0d0d10131316222f36403d546376875424263034181c3d36434d24694b00 +601b16251e000a10051a31060f2d43422f2f333d22347a8178a6c7c6c5ff +1a11221b479036000429421b193f3d4a4833735b1c89410413152f252b35 +3e6276886a4c858580996b181017104927589d190114281f0f60753127c0 +ccc5c5d15b1fa02f37580d5e457d522a132bf1e6eef1b32d8050162f2798 +8a14131e3212025b4a44b7180f0e1214050a1e262035103178616e10120f +39270b23090a13141429615b2603010c441111271e15121610151c000611 +220c1a29386367540c0a0f0013312d2e2c24212022211c1d242418141813 +101b14211f0d223b391b173568b3e8ecf628072b2512101970d9db39220e +030e11100d080d345a60493a19211d42536e630e00fbf29aa59fa4a2a1a0 +9f9d9a979b9b9b9b999795949495989a9a9895939898999d9f9c948e9495 +9494999d98909995919092959798989898989837363533313334383f3c3b +3f4345484c454749453e3b3d403e3f3f3f3d3a37363f3f3d3b3b3d404243 +413f3c3a393835353a3a383f4538242830312724292c2b29282827282a2c +2e2d3033353536383838443e4a52413d3a3192c937222929243455817e25 +07060533494f4646444142413e3b373637393a443f39383c4042423f4440 +3d43403c413b39373a3f42424143413d3c3d3d3d3c3d353a403a393c3941 +41403d3c3d40433e3f3f3d3b3a3c3c3a3b3e404141403f3e3e3e3e3e3e3e +3e3d4042403a311e0f0a0c150a0711101c335e7a9a9c877f817d3620241b +1a627994ada797091819170c0e0d07021a220e0e3644321a1d181b22231f +48a3523b0f0f24103de2631131312f2d2d2f2f2d2b2f312e261d19171516 +14141411121c2323210f17182f533a29383d370e113f3a44491e664d0882 +4d535e45070f0f0924461c1e34443e2824272b0a0f453c27537f8997e00a +0e2928539a3c02052a422a477f8494926d91611580440d1d203c2c23242c +4c5a7163497d7f7f986715141b0f482e60a21b000f251a05556d3032d2de +d7d7e06a2aaa373d5e14654f875e33162efaf2fdffc239885418342da398 +21171d37190c655151d644474a4a41231e33392c3e1a3b846b771a23285d +543d532f2427211f316c65310c07124c1f254852524e50494a4a25262935 +1926313f6b7561100d160c3c6764686b646161676a69646056443d403a34 +382e3d46406a8782573e486ab0eefbff4218322616222f87eeec47342013 +1b1b15140e183c5f655042202824485b77691200efdb797d6e6964636261 +5f5c595e5e5e5e5d5b5958595a5d5f5f5d5a585d5d5e6264615953565756 +565b5f5a525b5753525457595a5a5a5a5a5a8283898b8f8f94949692969b +a09da1a69b9fa29c958e92949b989a989b9a9d9c99989593939395969595 +9493918f8d8c9197928d92998a74707a7e757378797478777675787a7c7e +7e81858787888a8e909e989f9d87817c5ba7fc812a34282a2f4a7577200c +1c286993a8a29e9c999d9c9a959394989c9ea49d9695999d9e9d9fa49e9b +a09d989e969696999c9e9f9f9f9d9b9b9d9d9b989b949aa19b999b97a09f +9e9b98999c9f9c9d9c9997979a9d9c9da0a2a3a3a2a1a0a0a0a1a1a0a0a0 +a1a29c92836b4e362d292f1e161e181e446d7e92997d787d77452c2d2e1f +58787295aa810017495c030e111716252db43e5ba18b655543462a181829 +8f8e7f4d24211c4bff7407252b2a292a2e2f302d2f2e2e2a221613141514 +1515121622343f5054788d9ca15131362f393226475d5d813c537d2e9da8 +bec09b401f1221334f30141a403a1d211b1d2553838092d1cbbef8ff1008 +35082226202942241b09081e0000080b481a189444010d1340684641517a +76817566000000000000141c0c2a2753512136221c1f1779a82d0078bbb7 +b5b7560d8e3b233242683b8e3a0f2500240d0a15250c1f2724332e5c703a +13242b1c2475620be78b9bafbcab7b5c6768443c28347c4a5a1a2c398897 +acb68b5d4532262f819e2e06011545273d79a3bdb1babeb3ac88675f5946 +211c3269607a2e1e1c3c7fd4dbe8ebe6e0e3e8e6dad6ddd9c5b8aea2a1a7 +998d652a16253127345176b7e9f1ff251831221f2f4460ede19934423e40 +312d3330282f24080c19222c2b261302070b03f7ffa9b6c2d2d2d1d1d2cf +ccc8cfcfcececfcdcac8c9cacbcccccbcac9cecbc9cbcdccc6c1c4c6c7c6 +c9cdccc7c9c6c2c1c2c5c7c7c7c7c7c7c75155585d5e6163666664666d70 +7071776b6f706c635e606469686868696a6b6c6a68656363636566656564 +63615f5d5c6063615b62685c46434f534d4b50534e51504f4e4e50525452 +555759595a5c5e5f6d666e705b59573a8be36d1a271d20294773741b030a +0e456878716d6d6d706b6762606165696b716a6362666a6b6a6c716b686d +6a656b63636366696b6c6c6c6a68686a6a68656861676e686668646d6c6b +686566696c696a69666464676a6c6d70727373727170707071717070706f +6f6d665a472f1c171820100a140e14365f759099817b7e733d2222231552 +76759cb18a022252650b131215111c209d151d452b16130c1d150e120e45 +280c0000181347fe7407272d2c2b2c2c2d2c2b2f2e2c281d110c0d0e0d0f +111115233237403d5c6d7d843c26312e382a142835305b29486f05422014 +1a2300050c0e152a0a000e41462e372d2a2950796f7ec1c1b9f3ff0c0533 +0721261f294020150c204b3939423f7c4a3aa64200161a35522923366974 +7c5c53090806121915171a16331c434a223f29171c2194db692aa3d5c7c2 +c35f159542283542683b8e3a12280128110d18270e222b25342f5c6d3814 +2424151e78710bb92f120d1718120a1c2a202b25388353631a1501241005 +120c000408102579982c090a1c4417182e201b0d1519141807000b1b1c07 +0f2d6252703323110c113c2e2c271f1d201f1c16141b1d1411130d0f1b15 +211f0c233c34191a386ab3e8edf50b06241c130f1d3ed5d88e19190b1012 +141a12081823100b141b25262312050c0f02eefc8b9097a5a4a3a3a4a19c +989d9d9c9c9b9996949798999a9a9998979c9997999b9a948f9496979699 +9d9c97999692919295979797979797973134383c3d3f4244424042494a49 +4b4d3d3e3f3b322d2f333837373738393a3c40403d3b3b3b3d3e3d3d3c3b +39373534373b39363e473b25242f312a282c2e272a292827282a2c2e2d30 +3335353638383745414d4f3e40442b80de6c1d2e252933527e7d22060601 +2f485246423f4046403c3735363a3e40463f38373b3f403f4146403d423f +3a403838383b3e404141413f3d3d3f3f3d3a3d363c433d3b3d394241403d +3a3b3e413e3f3e3b39393c3d3c3c3f41424241403f3f3f40403f3f3f3e40 +413f3a2d1b0d0c111d0f0a130d12335c7693a18a8283743b201e2114547b +7ca4b9910928576a0e17161a172127a3192252371c1711231a161c1f664f +330d0b1b1648ff7407262c2b2a2b2d2e2d2c3130312d2418141515141312 +0d101d25221e0b1b243c5a292e453c3e27122e3d335a25446f1363525358 +50120e0c101f3c1f07123c3c242b211910273b1d1b62838fd5ed090c4117 +3132252b411f151b508e848b9688ab6143aa4d0b1f203b552b212d575b66 +57550d101721211a1e1d1532244d51243a211115198dd66934b3e6d7d3d1 +6e209f4a2e3c4a704598461b2d05311d1c29361a292e273834667e461824 +2b1d28817817d55848484f453121333f2e352e418d5c6c24251a483b3945 +351c1a161c2d84a237120f224a22294c5257494f534a48301d25302a1418 +346a5f7b3726171c346d666967605f626565625b5850423c3f3733382d3b +444069887b543f4b6ab0eefcff26162d1c151e3257ede99c2a2b1e1e1a1a +201a15222813111b222c2c2a1a0c121200e5e86f6c6a6c66656566635e5a +60605f5f5f5d5a585a5b5c5d5d5c5b5a5f5c5a5c5e5d5752565859585b5f +5e595b5854535457595959595959598d92989d9d9c9b9a9492969d9e9896 +99989ca09c959194999f9c979392949797908f909295989b9d9596989896 +938f8d9296908990988c736d797f7a767b7a7279787675787a7c7e7e8185 +8787888a8c8e9d989d9c8784825ba1ffaf293f28322a447277200d1f2965 +91a8a09a9a9ba29d9b9694979da3a69b99979a9fa09c979da29d9a9f9d99 +9f949597999b9d9fa09c9b9b9ea09f9a969b959ca39d9a9c97a2a19f9b99 +999c9fa0a09f9c9a9a9fa3a0a1a2a3a3a1a09f9fa0a1a1a1a1a0a1a1a09b +9181684b3321232c1e1a231d1f436a7b8d99807c827d513431361d517a77 +90a87900153327290d15000c4123ff92537e766e5a445240211c1d51816a +402b22223db43b00282928282a2e30322f302b2e31291915191716151512 +1624374757587f94a09d4132452e373f1d2c5b6685652e8f37b2b0bebda7 +4f221221293c331a26714f14142413528b767fbdd4c6d2ffca0028173155 +3f454b633046130012001114004b4907330105170841755849538375736a +7519041604000f11110b74555b5c4d3f21552016240d195a75bbb6bbc87d +278f3a2152373e43312a3820211a272a2b3428271e19253e1c3230383329 +311a576e11ee9fa4b3c1ab815b62644f4f380c3c001c213f3c7f99cdbcaf +6b51514b2231222a23231822112b5ea0beadbbc8b7ae9465715d492c4c45 +2e44581b2c202a51c9ddebebe5e6e9eae2dfdae2e1d0c4b9a8a2a5968960 +261424342d3c597cb9ebf4ff1a1c2a181f283f42dfcbd52b52483d36292c +28293c391c282b352636343a2d2b450196ffccb8c4d0d2d3d6d8d7d4cfd1 +d0d0d0d1cfccc9d0cfcecccbcac9c9d1ccc7c6c9cac7c3c3c9cbc9c8cccf +cfc6c3c1c2c4c7c8c9cbcbcbcbcb5d62686d6d6c6b6a6462666d6e696768 +65696d69625e61666c6964605f6164675f5f606265686b6d656668686663 +5f5d5e625f585e685b453e4c544f4e54534c52514f4e4e50525452555759 +595a5c5e5e6d686f6f5b5c5e3783ef9a16301b28244170741b040e0f4166 +786f6a6b6e756c686361646a7073686664676c6d69646a6f6a676c6a666c +61626466686a6c6d6968686b6d6c6763686269706a6769646f6e6c686666 +696c6d6d6c6967676c70707172737371706f6f7071717171706f6d6d6a64 +58442c190d121e13101b1517385f728b9c847f83784c2a272c174c797c99 +b18204203c30331519000b3c1dfb792635222113011d1f11190d172c0900 +0a191939b03b002a2b2a2a2c2c2e2e2d302c2d2f24140e12101011111117 +2735373f3d627382832f2844303a3a0e12363559491a7c0d57280f102300 +01081212170e031c765f282b341c5183676ba7c1c1d2ffcb0027152f543f +444b5f2c3d161642425446257871244100012010395b2b162c6c73705260 +1d142518192a15101579484955514b2c541f1f3e3f599aa9d8c7cbd68931 +963e2455373e43312a3b25261e2b2d2e362a2a211a263e1c2f2e39311f27 +175b7d13c84d1f141c1814031023263b37134509231f2a0c261726142803 +07223317271c28262c2125070f1c22200b162014160d0017191a103c3e29 +3850203116000040342d241d1f25211a1b181e221a1919110d1a14211e0b +223b331a1e3d6eb6ecf0f500071f14160e1c1bc1c0cd132b150d16121108 +032238262828301f312f392d2e48008ffab4979da5a4a5a8aaa9a49f9f9e +9e9e9d9b98959e9d9c9a999897979f9a95949798959193999b99989c9f9f +96939192949798999b9b9b9b9b393e4449494645443e3a3e45463f3d3d38 +3a3e3a332f32373d3a3531303235393637383a3d4043453d3e40403e3b37 +35363a37303b443a24202d322d2a2d2c252b2a2827282a2c2e2d30333535 +36383a3847444d4e3e43482778eb991a372533304c7b7d21050700294452 +443c3d444b413d3836393f45483d3b393c41423e393f443f3c413f3b4136 +37393b3d3f41423e3d3d4042413c383d373e453f3c3e394443413d3b3b3e +414242413e3c3c41434040414242403f3e3e3f404040403f3e3d3e3f3d38 +2a180c040b1b110f191314345b738ea38d86887c4928252b17507e82a0b8 +890a26413535181c04104221ff7c29402f29190a27281b221a304d2a0915 +1c1c3ab13b00292a29292b2d2f2f2e322e32342b1b1619171412100c0f1e +26201b061e2e46602333563f433e111b3e395846197e1b785a505055190c +09151a29200d1d6f521c1b2709335422123a628ab8f1c505352a44664b4c +4d602b3e27468a93afa57bb194364c0d0f2712365a301b275e5c5d4e6528 +243c3026331e15167c52555d5447244f1a1a3b3c59a4b7e8d7dbe3973ba0 +472b5c3f464d3b3644292a27373e3f453731261e2a4626403c3d32273020 +64841fe173544e5445341b273734463d194e122d2a3b2246435c48532420 +32401f3226332f31262a101d37525b46505b4b47381933302a1e46463044 +5b26351e10126c6b6b655e6267676367615c584a46473c33392e3c443e69 +877952404c6db1f1ffff1d1a2715171b3036d9d0da233d281d2118181310 +2d3d273031372637353f35354d0087eb9c78746e66676a6c6b6661626161 +61615f5c5961605f5d5c5b5a5a625d58575a5b5854555b5d5b5a5e616158 +55535456595a5b5d5d5d5d5d92969a99959395998e979b9592969a9a9ea3 +a29b95969b9d999b9893949b9c96939698969291959a94969794908d8e90 +9495949092938a7c6e7982817f7d7b7776777878797b7e817f8083868889 +8a8a92929b999f8d7a936c8affff3532312936426a74190c2025619fa5a4 +959b8da79b9b9a9a9c9e9d9c9e9e9d9c9b9b9a9a9e9c9a99999a9c9d9595 +9697989a9a9b9e9d9c9c9e9e9d9c9a9e9c96969b9c99a2a09c9a999b9d9f +a09c9a9b99989ca29ca2a7a7a3a1a2a59d9b9da2a39f9fa3a1a3978d856b +4a38261c2321111821133564629aa8546f6467433d2526264a726d90a57c +00330dcbe42a021c085e17e9e43381675e5c50574a291416337254331f17 +313b03001727282727272a2c302f322f2e30322f29241e192a681223253d +495c7474a5a579414128352d2f2e224e6b6c84398163d696bfbeae6d1c1d +1d2733311c2d533c131b232870857ba2cfe1bae3fe7d0025101a103e0d0f +1208452803000800000e2700094d1d0a0a16584d435868846e6e66600000 +0000030007190a612524281006022835001700000053b6b8a6bd971a8856 +1d601e3a4b2e323c21252623302e3c2e28221a403c1922373b141e4b273f +5900aab68fb3baa7925b6866525771484c4a4a4d3d44629dadb7ac675d3e +4025596657445f4825431f559ab9b8b6bebaaca36d70544f384a3a332b37 +1c2f1d3049c3d4ecebe6ebecebece1e0f0dbe4c7afa3a79a998654291b2b +3230425987c2e1fdff32543f11261f364692e5cf2a595538322e2f313b3d +281b241d302b43362526261f0d2bfff5b0bec7d1d7d7d5d4d0c9c9d2d6d1 +cdcfd0cecdd3d4cecacccdcbcbcccbc7cacfcec7c0c3ccd2cfc8ccd4cece +c8c0c2cacfcdcccbcac9c860646867636264685d666a64616569696b706f +686263686a6668656061686965626668666261656a64666764605d5e6060 +61605f6063594e404c5756545654504f5051514f515457535455585a5b5c +5c65656d6b7261506d476ae4f52222231e303f687114020e0b3d74757165 +6c607a6a686767696b6a696b6b6a69686867676b6967666667696a626263 +64656767686b6a69696b6b6a69676b6963636869666f6d696766686a6c6d +6967686665696f6c727777737172756d6b6d72736f6f716d6f665f5c472b +1e120d18190c141d0e2c5b5c9aab587367653d351d21224a767499ae8704 +3e18d6ef340a210c5f16e7de1d4921171302101c1113130e381000050e28 +37000017292a292929282a2c2d32302d2e2d2a221d171326641124283a33 +3f5656868a61323b2938312c230d2b3838601d68377b10100e210f000e0e +12110f07285d4e2a30302c6a78678bb7d0b7e7ff800026101b0f3e0c0f0e +043c2d212a493e303b5d0b366b250c182154391a2a416d696b51510b1319 +112f1711190f6114122215140e28370b3934351c97dbceb7cda3248f5a20 +601e3a4b2e343f262d2d2933313f322b251e443c1921363c12113e244668 +018d6c0f1517141e0012212843705156514c472c1d1626090a1d000d0b26 +1a4f60544468532a3e0b1b222019131615121700110c1c1839332e233121 +32130c004a302e241a2225212421202c1a2a150b07120f1a2213112c412b +17203a79bfe2f9e9183f340f220b161b6ed7c41334240912140f0d121f28 +25241a2b263c31222529200d26fce0949a9ca3a9a9a7a6a09997a0a49f99 +9b9c9a9ba1a29c989a9b99999a9995989d9c9590939ca29f989ca49e9e98 +90929a9f9d9c9b9a99983b3f43423e3a3c40353d413b383a3e3e4045443d +37383d3f3b3d3a35363d3e3a3a3e403e3a393d423c3e3f3c383536383839 +39373d3f382c1f2b3534312f2d2728292a2a292b2e312e2f313436373838 +3e3e494951443758375fe0f4262c302c3c4a737a1a01040023514d44373e +36503f3d3c3c3e403f3e40403f3e3d3d3c3c403e3c3b3b3c3e3f37373839 +3a3c3c3d403f3e3e40403f3e3c403e38383d3e3b42403c3a393b3d3f403c +3a3b39383c423c414646424041443c3a3c41423e3e403d403d3b3e2f1911 +0908141609111a0a25565c9cb2617c6c683d331a1e214c797a9eb38b0842 +1cdaf1360d250f631beade1f522b1f1c1020291e191c2050270b0e112b38 +0000172829282828292b2d2e34323233343129241e1725610c1c1d291b17 +1a104355472d473b473c352b16323d3a601c6b449c42514f563302111119 +211f0e255440181d1c1346431e2e49748cd9fd850e3b2830214a14110f03 +3f405777a39f99989d334b763218191b49301e2d3c5f555a4e5816232e27 +3c1f1a21156924222e1b150c28360b38333627a4ebdcc7dab12e99632768 +2642553840482a30373544424e3e342a21474425314440131a482d4e6f0c +a38f424f4e4141172b36364c76565f5b58533c30344e3e424b1b281c3322 +5a6a5f4e6d572e4516335059534c514d44441c2f242d27433b352e3b2737 +1b1a1573656c675f686a6a6d6e6b6c535c473d363a30353e3b45748d6f4e +414976bae7ffff35523c1023172b3688e8d2234537191d1d1a1920292a26 +2c23322c4337292b30250f22f1cd7c7667656b6b6968625b5a6367625d5f +605e5c62635d595b5c5a5a5b5a56595e5d5652555e64615a5e6660605a52 +545c615f5e5d5c5b5a90949796929193968d9497928f9295959ca09f9996 +98999896979491949a9994909396959292969a959696938e8c8d90949797 +9593958f886d79807d7979777676777878797b7e817f80848688898a8b90 +929a999d8d7e9c5a74e6ff81193d2a434b676d24151e26659ea5a7a0a390 +a29f9e9c9b9d9e9e9e9d9d9d9c9c9c9c9c9c9b9999999b9d9e959697999a +9b9b9ba19f9d9d9d9d9b99979b9b98999fa09d9f9f9d9c9c9c9c9d9c9a99 +9b9a989ba19ea3a7a7a3a0a1a4a5a1a1a2a09b999da4a495877d6442322a +292a1b0e1f28142c747d8c8c090000120b040d041212777088ac89004057 +f7f1340e000d2d18729c135f5c685d554f53361210265c47201f2109031b +03182d282828282b2c302f2d2c2d2e30312f2c2b2229531724263a545f75 +7da6b141202b3d202a383b0c445f7073645c8ab59cc1bba9711d1d1c2137 +261c2a32200d0d1d54787695c9d2dd95d1fb38001728184b995b0c031343 +01000b000431342f1d195a3a080a2c50433a33547b6e736d3e0d00030010 +0000151657276d9f3b0005312a1057300c002fadb3a9bb9e1d886a008034 +114d655600080b193f3b393f220c460636605a7950070340451e063d005e +be8aa4c2b48d615c5b4e4c4b0f182c342d0f38618cb0c5bc7f634137183f +5d261f30120b46294a92b3b5b5bcbbb1a96b6962482c7a6645504f210920 +30309bd5ece7e7efefe9e5e2dce4d7e4ccb9b0a89b988550271b2c353445 +5d8ac5e1feff4b55412433262b5076f0e354404441322f2f3032322c2c27 +11262f4433292c1d300e0affffa5c6c8d2d6d4d2d1cfcac7d0d4cfccced0 +cfccd2d4cfcccdcdcacacccbc9ccd1cfc9c3c4c9cfcec9c9cec8cac7c2c3 +c9cbc9c5c5c6c7c95f636665616062655c6366615e626565686c6b656264 +65646263605d606665605f6366656262666a656666635e5c5d5f61646361 +61635e573f4b53524f4f504f4f5051514f515457535456585a5b5c5d6264 +6c6b706052733552c9f36c092f1f3d48646a1e0a0c0b407274746d736475 +6e6b69686a6b6b6b6a6a6a69696969696968666666686a6b626364666768 +68686e6c6a6a6a6a686664686865666c6d6a6c6c6a696969696a69676668 +6765686e6e7377777370717475717172706b696b7070645b5642251b171c +21160a1e2913256d798d8f0d0000120700080012167f7a93b794084b62ff +fc3f180515321c77a50d3a272d1a02001a171315143a1e000c1800001703 +182f2a2a2a2a292a2c2d2d2d2c2d2d2c2825251e255218272a353a3e565f +89992c14273e262e363100252d3a49423f5a5c1a160e1f11000c0d0e1706 +09263e35242128546d637fb1bbcc94d7ff3c00192a184a995a0a000f3d06 +163c3b44646c7b71679757171d394f37291e3b68656b5b3d38454d4c5d2f +13181654165c9b420310302e2585806e4b85d8cabccdac278f6e00803411 +4d685804101320453e3c42260f490939605a784f08002f351d0f4c00497d +0e0621211500021320374c1a2333302201192122111826070d0a1b0d3555 +201f371d13451c1923201a131716141a000616130a665c3f4a4c240c1612 +0031342b201b26261f21231d211424151112110f1c2213102b412a16203d +7dc2e4faeb2e3d3424331910244eded73d21191612110b0708142834270f +232a3e2d242b1d310d06fdf78ca59fa4a8a6a4a39f9a959ea29d989a9c9b +9aa0a29d9a9b9b98989a99979a9f9d979394999f9e99999e989a97929399 +9b999595969799373b3e3d3937393c33383b36333437374044433d3a3c3d +3c3a3b3835383e3d38373b3e3d3a3a3e423d3e3e3b3634353636393b3a3c +403d361e2a322f2929272628292a2a292b2e312e2f3234363738393e4048 +494f43395d2348c3f371133c2d49536f7122060000234d49453e45374b43 +403e3d3f4040403f3f3f3e3e3e3e3e3e3d3b3b3b3d3f403738393b3c3d3d +3d43413f3f3f3f3d3b393d3d3a3b41423f3f3f3d3c3c3c3c3d3c3a393b3a +383b3f3e424646423f4043444040413f3a383a40413b363729130d10161c +12071a240e1d65788f9616090714060005001219827c97bb980c4f66fffe +411a0817351f7aa40d412f332312132d26181b204a2c06121b0300180318 +2e292929292a2b2d2e2f2f313234332f2c291f244d101c1c221f13151647 +691b163550343a433c052b303a4a4343687c4a585053360212121426150f +25342610080a303f283357557a75d5ff48133243305ca5600d00103f1a4c +8996a8cfc9b995749c5f1e1b2f3d27221b345a545e5b433e4c585663331c +21205f286faa4c0912353126857f715492e8d8cbd9b931997708883c1957 +71640d13162a534f4f5332184e0e3e6866885d0c0039402516530b5c9d40 +40574e39191c272d40511e293d3e3210293b484750562d2a1d291540602c +293d21164b252e4e57534c514e4748182530251a71654956572b111f1e08 +55686a63606c6c686b716a65505d4b45433c32383f3c4876906e4a3f4a77 +bbe9ffff4d533e243323233f68eee54d312c271f1b1715161e29362f1a2c +3042312a3125361205f4e978866b666a686665615c586165605c5e605f5b +61635e5b5c5c59595b5a585b605e5855565b61605b5b605a5c5954555b5d +5b575758595b90949796939192958e949693909193949c9d9a97979a9994 +9d9b98979b9e9a929094979796969a9d9b9a9793908f9092909493919291 +8f8c6d777e7c7676787a777878787a7b7e817f818486888a8a8b8c90989a +9a8e81a87278deffe2184533414d626b381b1a2d769fa4a3a4aa99a29f9e +9a999a9d9e9e9a999999999a9b9b9b9a99999a9b9d9e9597999c9d9d9c9b +a2a09e9d9d9c9a98989b9d9b9da0a09e9d9d9e9e9e9d9c9b9997989b9b99 +9ba1a1a4a8a7a3a0a0a2a09d9da0a09e9fa4a9a69684785e3d2f1523291a +1a37402b2a3969736400071400207a8f3f3b2e665f5f8e8a15333262620a +2e324a3e4f474a30866f6356675d5746140c1b423a0e1b160673f91e0a2e +292929292c2d302f2a292d2e2e2e3132342c283920292a3959637f929da9 +32784d3e5334264e222d576d6c83409b9fa6bcb5a5761d1c1e1e371e2230 +21141310377f7d76b9ddeeb5a6ddf90800132c1249693f1b141d37151606 +060d0000061d173a2300234f442d2a19557a706f650d482a1c1a26000123 +01451b4277480b092a08005b44261834a2adadb8a71e7d8100511a2c5e43 +522d091d5ce1d2cfc0852b8e272040426851140b461c2322dac6bedf7eaa +aaa8a47271665042350b3474776918184593bfb4ad865a463e29447a7430 +0800133f1f4288a9adadb8b9b3ae826a6a4a1d31122c637f6606202b227c +d8ece5e9f4f0e5e2dfdde7e9f6d6b9a9a99c98814c251b2f363749618ec6 +e3ffe74d311f1c28241f464be4e385283a32333234332c2629356f3a2f22 +3537312543472101b0ffaec2cad4d5d1cececfcdcad0d2cfcccccdcdcbd0 +d4d2d0cfcdcacacccdccced1cfcac5c4c7ccccc9c7c9c5c7c8c5c6c9c9c7 +c2c3c4c6c85f636665626061645d64666360616364686966636366656069 +676463676a665e5f6366666565696c6a6966625f5e5f615d5f5f5d5e5f5e +5b3f4952504c4c4e505051515150515457535556585a5c5c5d60646c6e6c +61557e4b54bff7cd07342739475c662f0e07135274716f70776a736e6b67 +66676a6b6b67666666666768686867666667686a6b626466696a6a69686f +6d6b6a6a69676565686a686a6d6d6b6a6a6b6b6b6a696866646568686668 +6e7174787773707072706d6d70706e6f7275736558513c2219071a24191a +39452d2735687769070e19001e798e3f3f38716a6d9c9823414070701839 +3d554959525d39734c391d160c18211517163329000f0d006ef41e0a2f2a +2a2a2a2a2b2b2d2b2d2e2d2b2b2c2d2f282438222d2e343c3f5e75849420 +6d4b4159382446151226373e5c206b4a2d1e12211b000b0f0b1902132e2e +2929213e7b6e61a2c4d9a8a8e4ff0d00142e1348693e191019311a32323e +491c2c7aa197a35f1d3c5d422f4332576e62605620a1aeafada95b222500 +3d0c3679521810270b1098a8a0949ad6c7c3cab52884850051192c5e4654 +31102663e7d7d4c3882f932a23434469501505300a232de9cdb1a8040f0b +152607151e222d36193f766f5b0d01143528081305000b1f1c38726c2e0d +021b4015171f1f1a131516151c03011a11001b06265d7c6607161100213b +2b1e1d28271d2024222425331a0c0612111d2011102d422715224181c6e6 +fbcf2e18121c2a1a061b20cdd27010180b110e0b09030820396f3a2c1d2f +312c22434a2200a6f398a4a2a6a7a3a0a09f9d989ea09d98989999999ea2 +a09e9d9b98989a9b9a9c9f9d989594979c9c999799959798959699999792 +93949698363a3d3c39373839323638353231333640423f3c3c3f3e394240 +3d3c40433f37363a3d3d3c3c404341403d393635363832353736393c3d3a +1e282f2d26262628292a2a2a2a2b2e312e303234363838393b41494b4b42 +3a683a48baf8d21144354651666c30080000304a443f40483e4743403c3b +3c3f40403c3b3b3b3b3c3d3d3d3c3b3b3c3d3f4037393b3e3f3f3e3d4442 +403f3f3e3c3a3a3d3f3d3f4242403d3d3e3e3e3d3c3b3937383b3b393b3f +41434746423f3f413f3c3c3f3f3d3e4146463d3532230f0b001320151836 +41281e2c66786f0f161f041f778a3f403a736c6e9d992442417171193b3f +574b5b545b3875503b24271f2d321a1b1d3a2f0113120272f8200c312c2c +2c2c2d2e2f302f3032323232323333272133171f20201e0f172942691675 +5850674432531e172937405d2579695a5b51533e03111411250e1a2f271a +1201154b331e5672806493eaff20173047285873441c111a352e627995ab +8281abb6989c5f1f38502d192e1f4960555959249ba3a5a3a15829320b4c +1f4a885c201830141499a6a19ca6e4d4d1d6c2328e8e07592134684f603a +162b6df5eae7d49738972f284c517b5e19073c162b33f0d7c2c535484142 +4c252e322f343a1c45827e6c1b112a575b42452e1c1f2e25447d79391307 +1e451d2a485350494e4d484b2c2235240927103069876e0c1f1c0540706c +61626f6d6569736f6a636f54443b3f383c413d4979916c483f4c7bbeebff +ef4e2e1c1c292319363bdfe27f1e291d1f1c19171112233a774435233335 +32294b512700a4ea8a886f6869656262615f5b6163605c5c5d5d5a5f6361 +5f5e5c59595b5c5b5d605e595756595e5e5b595b57595a57585b5b595455 +56585a9597999996959597949799989697999aa09d9894989d9c97a4a09d +9da09f989095989a9b9a999b9d9f9c98949292939595938f8f9294908c6f +767e7f7a787a7d777879787a7b7f8280818487898a8b8b8990969e989084 +b1896dd1ffff402a3430425f6d4715194892a5a29ba3aba2a59d99959497 +9b9e9f9b9a9a9a9b9d9e9f9c9c9b9a9a9a9b9c95989b9ea09f9d9ba1a09d +9d9d9d9a999b9d9e9e9e9d9b999e9d9d9d9d9d9d9d9796999d9d9b9da2a4 +a6a7a6a2a09fa09c99999da0a1a4a9a9a89786765b3b2c16262b1b162221 +0e151b3a07140812072d40b29c917c8dad9587a3bb94b1b09da69db6baa5 +9aa89aaf97996859566154524f1b0d142a340b18220c92ff172329292929 +2a2c2d302e2c2c2f2d2b2b303432322a272a2d2e3f5e6a82a4a68736bd59 +55d0582740211a5062777f4a7a9b9ea7aa9d76211a201f2a21232e27191b +2357726a89c3c7e16bdaf4ea060c161b142234201f313228000f170a101c +00000805170a0d404b342a202a696e6d6150002c0a00000f00002536493c +483e23211c451c00322810131f99acb2b4ac226794074b38474279a51713 +1136deb7c1c28b17752f0529323e6c16224528370cdcc0ccdc71b8afadad +6f676352422e0d2155547e5f363074a6b4b89c5a4b3e2a2b6b8537020022 +321d467b9fa7a9b2b6b2b17e6466585829216349768e16232e2b5dcde5dd +dee5dfd4d3d5dadbebf7dbc2aeab9e997f49251d3234384b6491c8e3fed7 +591f141c1723254344d2eac4385b2e37363b3e2f1f213008052316202b30 +2000001d0b50ffe4aaced7d6d0cccdd1d1d0d2d3d0cdcbcbcccbcfd3d4d3 +d1cecacdcecfcfd0cfcdcac3c5c9cbcbc9caccc6c8c9c8c7c8c9cac7c7c6 +c7c76466686865646466646769686667696a6c69646064696863706c6969 +6c6b645c6467696a69686a6c6e6b676361616264605e5b5b5e605e5b3e48 +5253504e50535051525150515558545556595b5c5d5d5d646a726a615687 +6047b0f4f22f1927263b58673d08042d6c796e666e7772746a6662616468 +6b6c68676767686a6b6c69696867676768696265686b6d6c6a686e6d6a6a +6a6a6766686a6b6b6b6a68666b6a6a6a6a6a6a6a6463666a6a686a6f7476 +777672706f706c69696d707174797675675a523b2219091f281d1b2b2a15 +171b3c0d1d111b0e2e40b29e95849bbca395b1c9a2bfbeabb4abc4cab5aa +b6acc7a79556412e1a0711261a1813242e020d19028dfd17222a2a2a2a2b +2a2b2b2c2d30302e28282b2f2d2e29282c3135393f4260898e7527b5585b +d85e263a160424304957274c4f3118192825000b110c0f07182f332d2f32 +5a6a5973abb1ce61dcfcf10c10171b1521331e1d2d2d2101293f3841544c +68aca79b553356532f2e414d6f645c52451095a5a2a9a75a1b28323e3145 +4831291c391c0c7e9f9ca291d3c8c9c8bc2c6e97074b3747427ca91e1a1a +3de4bcc6c58e1b7a32082c343f6e15192d123719ebc9c6ae001f12172a00 +0b1c222b321b2a55466d57280b251a0d1a15000d1e1d1f617a3105072a35 +161f1b1c1a121313141d0000111a2f11145b43728c13191a090f33221612 +191611151e201924301d100911131d200e0f2e432313244587cae8fbbe3a +05041c1b1c101b19b5d5b226400d100b0c0f0904152e0805200f17222a1e +01011d0a47fcd290a6a9a8a29e9fa1a19ea0a19e99979798999da1a2a19f +9c989b9c9d9d9e9d9b989395999b9b999a9c969899989798999a97979697 +973b3d3f3f3c3b393b36393b3a3637393c44413d383d41413b4944424145 +433d343b3e4041403f414345423e3a3838393b36343333393b3b3a1e272f +302a26282b292a2b2a2a2b2f322f303235373839393a41474f49433c6f4e +3cabf6f83929383143606b3c000012484c3e343c4744493f3b3736393d40 +413d3c3c3c3d3f40413e3e3d3c3c3c3d3e373a3d4042413f3d43423f3f3f +3f3c3b3d3f4040403f3d3b3e3d3d3d3d3d3d3d3736393d3d3b3d40434546 +45413f3e3f3b38383c3f40434847483f3732220e0b001723181726250e0c +11370d221822143240b09b96869ebfa496b2caa3c0bfacb5acc5cab5aab7 +acc7a696563f2f281b2538201a19283005131e0a91ff19272c2e2c2e2d2f +2e3131313334322f2f3133312d25202122252320111638504f22c06667e3 +6a36481e06232f49582d596b5a505255460c12161216101e312f21140b25 +2b132861688930d1ffff222b33352a2f3b23202e3128124e7a869db3998f +b59c8d513453481b152c39615a544f4b149097969b9a542337404e425654 +3c34284728127e9b9baa9cdfd4d7d3c93678a00f533f4f4c85b426201f47 +f2cfd9d89d2480370d3541517b1b1c3a1f3f1ff2d2d4c82b574745521e24 +2e2e33351e3161577f64351d444b454d401a222d262b6c883d0c0d2d3a1d +31414e4e474b4a474d25192e2f411e1e664f80971c222517296764595760 +5c575f6e716267715b4e43433c3f423c4d7e9567463f4d7ebfebffde5c1e +111e1a241f3334c9e6c0344f1e221c1e1f160d1731100f29161c252e2306 +08250f48f6c877736b6a6460616363616364615d5b5b5c5a5e626362605d +595c5d5e5e5f5e5c5955575b5d5d5b5c5e585a5b5a595a5b5c5959585959 +999a9b9b9998979898999b9d9d9d9fa1a49f9692979fa09b9d9a989b9e9c +9690999a9c9c9b9a99999e9b969392939495a0989294999a948f6f747c81 +807c7b7d787979797a7c7f8280818587898b8b8c889094a3979384b8935b +c5ffffa31f3f2b41636c48102a76a3a9a69ea8aba8a29a979494979ca0a2 +a09f9e9e9fa2a4a69e9e9c9b9a99999996999c9fa1a09e9c9f9d9c9c9e9e +9d9b9b9b9c9e9e9b9a99a09e9c9a9a9c9fa098979a9e9f9d9fa4a6a6a6a5 +a2a09f9fa09d9c9e9f9ea0a4a3a3948576583628212b2c2017130e0b2d12 +0e1c804221993d0000009c8372a800000000000000000000000000000000 +0000022039614e55464b2511131e36171c182b608e082b2829292a2a2c2c +2e2c2a2a2d2b2b2b32362f373226302c2f43657680a9bc64216456567a16 +2e3e22273c5677775d488671829c8b671c141b2020291917221516397d6d +7ecae4eaa26ee6f5c6041c0e172157544052604b3f2b041015050900000b +001c1c2e3f282f3d2d50694e5f5940002919020c1c0000261e3434251c22 +3e48463f00192204020c8eaeb3b2b33052a400734e5d5d3f405a47352bdc +aab8c8a01b70421b594e3657515d45392f00c1b497fc89a8b8b7a3796562 +4f3e3329213c2930251e337a97b9b8a5574a3d2c19502f2f2e211f1b172b +7399a3a8b2b4b2b4946f673d4f2047253130591b2c353239ccede9e1e4df +d8d9ffffe5eaead8ccbaaca0987d4725213532374d6794cbe4fdb562312e +2f0d1a233845aaf6ea3d65343e3d3f3f3121242f21162f263a3f35232a18 +221d03ffffaccdd9d9d2cdcfd4d5d2d1d1d1d0cecfd1cbcdd1d6d7d3cecc +d1d1d1d1cfcccacac1c7cdcdcbcbcfd2c8c8c8c7c5c5c7cbcbcac9c8c768 +696a6a6867666768696b6d6d6d6f71736e6561666e6f6a6c69676a6d6b65 +5f68696b6b6a6968686d6a6562616263646b635d5f6566625f3e46505554 +5051535152525250525558545557595b5d5d5e5c6568776964578b6835a4 +f3f78f0e311f3759633d0213597c7a71677076756f6764616164696d6f6d +6c6b6b6c6f71736b6b6968676666666366696c6e6d6b696c6a69696b6b6a +686868696b6b6867666d6b696767696c6d6564676b6c6a6c717676767572 +706f6f706d6c6e6f6e70747073675a513a1f1617282d2520201b16301413 +258b4d2ca241010102a58f84ba090b090c05070c0504040405050c061007 +05081f394e19120922201910152d0e110e215b89072a292a2a2b2b292a29 +2a2b2e2e2c28282d312a3331283230363d444d5f8fa85615605a5f831d2d +381915192d4e4f3a1e45160820292500090f100a16121a302926427c6169 +b4ced69467e8fdcb091d0f171f55533e4e5b46382f1d323326333a70bea9 +ae674b4925263633535c3b504d340f849e96a2a46321321b2a322c2f3340 +3d2f39256fa8a09d86cccccdc8c33d59a700724d5d5d4244614e3e33e3af +bdcda61f7547205c503759505429213204d0be99d4150f1b211c06071b1f +2737372836131b1f181b3a1518171700091d1c0b4423272e26271e120619 +1e1d151513141e0f00110024063a1d2b2a561520241b00352a2218181716 +1d4d4b2523211515120f121e1d0b0f30451f11254a8bcee9fa9b40151c2f +111511151d87dbda315519130a080f0d0811261f182c1f31362f1e291825 +1c00f6fb93a7ababa49fa1a4a5a09f9f9f9c9a9b9d999ca0a5a6a29d9ba0 +a0a0a09e9b999891979d9d9b9b9fa2989898979595979b9b9a9998973f40 +41413f3e3b3c3a3b3d3f3d3d3f4348433c363d43463f433e3e3f44403c36 +3f40424241403f3f44413c3938393a3b4139353740413f3b1d242d322f29 +292b2a2b2b2b2a2c2f322f3033353739393a3942455448463a7457289df2 +ff9b20422b3f61663b00013b554c3f313d4446423c393636393e42444241 +40404144464840403e3d3c3b3b3b383b3e414342403e413f3e3e40403f3d +3d3d3e40403d3c3b403c3a38383a3d3e3635383c3d3b3d4245454544413f +3e3e3f3c3b3d3e3d3f4341453e3734220d080d21271f1b19140e25090d24 +8f5332a744000000a48f86bc090b090c05070c0507070707070e07110907 +081b314a23231b32271c171a301119162a61900c302d2f2e302f302f302f +2f3132302f2f33352e322c1d252124252319103b6b33156e66688c273d46 +1e1315294c503e285d39395252410e0f13130d1a191f301e0b153c151661 +8599654be7ffde1f392b2f346259414f5f4a403b31577375897f8bbb9499 +634f4b201523294c56354b4d3e19879b96a0a0622b4026353d36363b4c4d +41472a6ea19ca291d9d7dad3d04663b0077a5565674b4f6954433ef3c2d0 +e0b42a7b4b26655d49665657372f3909d7c7a5ec4447504f45271f2d2b2f +3a3a3044282e2b222954434e4b45141f2c2618503134362c2a2318173d4d +4f494c49474e3a232e13371344283738611f2a2e250e686c675e615f5d67 +9f9c70686557574f444043433e4f839a61403f4f82c3ecffbe632e2a3112 +1c1f2b359deee73d6028261d1d1f190e152b2a243526343933242f202c22 +00f5f67d766d6d666163666763626262605e5f615a5a5e6364605b595e5e +5e5e5c59575953595f5f5d5d61645a5a5a595757595d5d5c5b5a599b9c9c +9c9b9a99989e9c9ca0a1a0a1a4a6a29a969aa3a4a19a989a9fa19f9d9d9a +9b9c9c9b9a98969996939192939395a09893969a9a94927676797f817d79 +7978797a797b7c808381828587898b8c8b879093aa9a9782b79d5cbfffff +fa313b3a4d675d4525549ea7a7afa8b2ada99a9b9997989ba0a3a49d9c9a +9a9b9da0a29e9d9d9c9b99999897999c9ea09f9e9d9e9d9c9c9e9e9d9c99 +97999d9e9c9c9fa09e9b99999c9fa29a999b9e9f9da0a6a7a6a5a4a2a1a0 +a09e9b9b9fa19fa1a59d9e9180715132211b282a1d1a1414230e1e180032 +28004214161c0025000020041a171a1d16121418161a092111030a0d2128 +1610895a634442311a1b1e352623063c1e1006172d2828292a2c2b2d2a25 +2528292b2f34373139382f2e282c455d8691a9b74b25169c741c23373833 +1b254d677667345c3e5e92744b150e152027351807160f174d645780dbdd +dd3786daf5a8001c0023223c3e1a1c15031c26061d767a1900000000201f +2c342d45465060523a58552f0020260e111a0000081c493603242205112c +3b05012008031a80b0afb2b8483faf134c413314344822101a0edbbebfc8 +a51573480d4823251f172c22433200a9c9c2ff91a2abaeaa8a6d644f4043 +54455a55694e29206394beafa35d504b422f58514f57564629373d6f97a6 +aab2b3b2b59d6070514932993e3d1c37342a222830c1f0f1e4e7e7dfdbf4 +ffdfe6e0d7cfb6aba1987a4426243a3137506c9acde5ff78574f5145171f +292a4275fdee464b404243413b2b242b332e191b0b24211b2413271d3604 +e8ffadcbd9dbd5d0d0d6d7d0cdcdd1d3d2d3d7cdccd0d6d8d4d0ced3d1d1 +d1cdc9c9ccc3c9cdccccd0d3d3c9c9c9c9c5c1c4cacbcac9c9c86a6b6b6b +6a6968676e6c6c707170717476726a666a7374716a686a6f716f6d6d696a +6b6b6a69676568656260616262626b635e616666626045454b5355514f4f +5152535251525659555657595b5d5e5f5c65677e6c68558b72349cf6f6e6 +202d2e425c5337153e7f7d77786f7975756768666465686d70716a696767 +686a6d6f6b6a6a69686666656466696b6d6c6b6a6b6a69696b6b6a696664 +666a6b69696c6d6b686666696c6f6766686b6c6a6d737776757472717070 +6e6b6b6f716f71756a6e64584e351b1412282d272523253014211f044035 +0c4d191c20052f050635162a272a2d26222427282c1d3526181f22333423 +228b362b0b19271b110f2617160032190b05162e29292a2b292828272629 +292a2a2c2f322d353731322c333f3b5b7090a53e1c13a07d252a36342a0c +0a2b414f470f22000029221501090c111527160e2520265460496cc3c6cb +2c82ddfcad011e0021213a3b1518100014291e3a84872f387ea7b0ab5c3a +2e1d353847543a22494b241075a3999f9e63131819423b123d3503000c2e +2e5db0afa598c0cecbcac85546b2134b403314374c29192316e2c3c4cdab +19784d124b2526211621032b3505b8d6c9e0210b11181f120f1f1f294762 +494f39504a29122d1b210c11000c2932214a434354594b2c321b1922241c +1814141f180017101c1689343516312c1e1518002d2d2a1b1b1f2023424e +201e1712150c0d131e1b081032491c12284f92d3edfc5e35313f441b1c19 +0a1a4ddde040412a120703060a0b14242c1b18041b17121f1227203602df +fa96a5abada7a2a2a6a79e9b9b9f9f9e9fa49b9b9fa5a7a39f9da2a0a0a0 +9c98989b93999d9c9ca0a3a3999999999591949a9b9a9999984142424241 +403d3c403e3e424140414448443c383c4546433c3a3c4143413f3f3e4142 +4241403e3c3f3c3937383939373f3734393f413f3d2424292e2e2a25252a +2b2c2b2b2c30333031333537393a3a3942445b4b4a38725f2896f6fff232 +3e384862543408296055474238444245383b3b393a3d4245463f3e3c3c3d +3f4244403f3f3e3d3b3b3a393b3e404241403f403f3e3e40403f3e3b393b +3f403e3e3f403c3937373a3d403837393c3d3b3e444645444341403f3f3d +3a3a3e403e40443b403b34301d09040920261f1f1c1d2708161800433b12 +511c1c1f022e050738162a272a2d2622242a2a2e1e362719222737341c16 +803a381c29302019162d1e1f053b20120b1c332e2e2f30302f2f2e2a2c2d +2e303335362e343226241b212518261f3c671e1f24ac842c3446422b0701 +223e504a1738102254462d0d0f111415271b142816072016000d6b82990e +77e2ffc117371937334542191914041f32224ab5cb7b7794a098965d4538 +1e282b42543a22464c321e7ca79ea3a0651e2522493f17413b100f213f32 +5aa7a8aaa4ccd9d7d4d55e50bb1b53483b1e4057311e2821f2d6d8e0b924 +7e5318543238301c2512393c09bfded3f54f424546493527312b314a6552 +5f506558311f44485643401823393c2e5752515d604f31382b3c4f544e4e +4a474f431235263024943f42243d372a1e220b5f6f6f616467666d96a26d +675d575c4b474345433c518a9e5f3e405387c7efff815a4b4d491c23261f +3265f2ed4a4a3728201a1815111a2b3727210b1e181525182f293e07e0f8 +84766d6f6964646869615e5e62636263655c595d6365615d5b605e5e5e5a +565659555b5f5e5e6265655b5b5b5b5753565c5d5c5b5b5a9f9f9e9e9e9d +9b9aa5a0a0a4a4a1a0a3a2a19e9b9ea4a5a19c9c9fa3a29e9ea49d9fa0a1 +a2a19e9c9a979595989998979896979a99959499867e797e817e79797879 +7a797b7d8083818285888a8b8c8b879192b09d9b80b3a15da0ffffff5621 +4557684b4a568caba7a5b4aeb7acad9c9d9b9a9a9da0a1a19a9896959698 +9b9d9a9b9b9b9c9b9b9b98999b9d9e9e9f9ea09e9d9d9d9d9c9a9c99999d +9e9c9ea29e9d9b9b9b9d9fa09c9a9a9c9c9b9fa6a7a5a4a3a2a2a1a09b99 +9ba0a2a0a1a49f9f8f7d6b4c2f2014323825201b17233225322a1625192e +2125332f231f310d2f2f26272528262d28272c1d271537372b353a2721e1 +614b5543402326242d2a231f19030300182e262728292b2a2b2825232527 +2c303333343735392a2a2f4a648ca7b59a313721181d0b432a2637351e3c +596972413f2d4d905c2a0e0f12202630251711112d606d79adebe19145b3 +ddf86e051104221c45925b1503164c1a153a617d32370016160512293d4e +53515c4c3c4d57491e0006220c0c1b1100111e282d387f4c031c3e360d00 +1400001575b1a9b0b55a29ab17465612183b553f0b2501c8c2bacbba155f +6a0c3e2d5e7a28121e3a200073cec1d08aabb1adae875a58514c3f3f1a2d +35560e021f6eb1a3c0b374554a3d2f4471341823210e3a376892a5a9b0af +adb0a5606c614a257047455453541e14213aa5e1e7dae2ebdecbb8dfcadb +ddded7b8a9a098784326293e313953709fd3e8ff56596f5d412434392c4a +56faed873b4a3b48483c28222b2d497b9150371711315e7143500e9affe7 +c6d6dbd7d1d1d6d7d3ceccd0d2d0d1d5cfccced6d9d5d1d0d2cececfccc7 +cad1cbcac8c8cfd7d4cccccccfd0cbc3c4cacdcccbcac970706f6f6f6e6c +6b76717175757272757473706d707677736e6e7175747070746d6c6d6e6f +6e6b6967646262656665646360626565616267554d4b5055524f4f515253 +52515356595556575a5c5d5e5f5c6666846f6c518574357de2f3f7451338 +4a5c3f3d44738a7c737d737b7378686a6867676a6d6e6e67656362636568 +6a67686868696868686566686a6b6b6c6b6d6b6a6a6a6a69676966666a6b +696b6f6b6a6868686a6c6d6967676969686c7377757473727271706b696b +70727071746c6e64554a321a140d333d302c2c2a333a2b3c362534283c29 +2e393a2f314925413f36373538363d3a393e313c2d4f4c3c444a3e42f34d +20221a331e150a111013150f000000172e2627282928272525262726282b +2d2e2e3033343b2e2e3643405f849d8a2631201e26124727202f280c2138 +4754200e000038190002100c141725241e20223b65676996d2cc823db1e1 +ff730a13042019429057110011461d2f5361742a5a6fafb27a371d22303f +4352402333473e16115ea39ca0a57d28251b2439519f64000114233454a8 +aa9d93b5d1c5c8c56730ae17455512183e5946142e09cfc9c1d0c01c666f +11412f5f7c2707001f250582dbcbb01c141717210e00132133434d1d2015 +3a0a071941400b1b1f0a0f252c1f3660261223241135171723271f19100f +1a1e00111d1b065e3d3d4e4b4a10071603131e201116231f150b2f0b1511 +191d0b0b121e19070f344c1c122d5699d9f0fc3c354e483f28312b0f232a +d9e1863a380a060705080b101a467d904b2e0d082b5d7145500b94fcd2a0 +a8ada9a3a3a6a7a19c9a9e9e9c9da29d9b9da5a8a4a09fa19d9d9e9b9699 +a09b9a98989fa7a49c9c9c9fa09b93949a9d9c9b9a99464645454544403f +4a4543474744414442413e3b3e4445413c3c3f43423e3e443f4142434443 +403e3c3937373a3b3a393734383d3e3c3f44342c272c2e2b25252a2b2c2b +2b2d30333031333638393a3a394443614e4e356d612977e2fcff57244251 +603f37365d695242453b453e46393d3d3c3c3f4243433c3a3837383a3d3f +3c3d3d3d3e3d3d3d3a3b3d3f4040414042403f3f3f3f3e3c3e3b3b3f403e +40423e3b3939393b3d3e3a38383a3a393d44464443424141403f3a383a3f +413f40433d433a312b190704032b372a282624292d1f343228392d3f2c2d +37362d314b27413e35363538363d3c3b40323d2d4f4f444b4a3631e54c29 +312a3c251f151d1b1e201a0707071f362e2f303131302f2c2a2a2b2d3134 +343231302f30201d24291c2832474e0835322a2d1850382c2d1f00163345 +562721061b5e38140c14101614232a26251a1a2b13073076895930b4ecff +87202c1c352a4b95581202185222245083ad739483aa9d6a4031353a3838 +504226344742252168a9a4a4a78033302225374e9c6407122a36394e9ca2 +a29fc1dcd1d2d2703ab71f4d5d1a2247644e193514dfdbd4e3d0266c7517 +4a3c738b2d0b0e2e2b0989e3d4c5494b4b454c3115252d39444e26312d50 +180d23556b3e534f2e2736362c4370351c2b29163b26384e56504e46424a +491130342f156a484a5c58551d101e18446065575f6b655f5d8459605a60 +664d464445433d538ea45d3e42598dcdf2ff5f5b695744293838213841ec +ed8e424420211f181311152051899851310e0b2f657b515a1296fbc1716a +6f6b65656869645f5d61626061635e595b6366625e5d5f5b5b5c5954575e +5d5c5a5a6169665e5e5e61625d55565c5f5e5d5c5ba4a3a2a2a3a29f9ead +a7a5a8a8a2a0a39ea1a1a0a2a6a4a09f9ea1a39d96979fa0a0a2a4a6a5a5 +a39c9a989a9d9e9d9a94989fa39c9599a494867b7e82807c7a7778797a79 +7d8083818285888a8b8c8c89928fb19c9b7eb3ad6c8ef5ffff8e27475d6a +455988b5a6aba4b3a8b0a8b4a59f9c9a9a9c9d9d9c9e9d9a99999b9ea097 +98999b9c9d9e9e99999a9b9c9e9f9fa2a09f9d9e9c9b98a39d9c9f9e9b9c +a19b9a9c9b9e9c9e9c9d9899989a979ea3a7a5a3a2a2a3a2a1a5a2a2a5a3 +9d999aa5a4927c694b2e240b435b4e505754574b55585a4c634a5a606765 +6b71566a424b495b6952595b6457584e6047436f4e674a5d6230d2305463 +434a2a2d2421211c27089dd419072b2626282829282827292726282c2f2d +2a332e2e3d2a323b568084a6c38a1f2c2b2234371a343b1846272b555681 +563a3348954e150e171520161b2f2f161f4b6d88a0cfeee22b94c3e5f427 +180519171936834b1f090e410b0e1655a6123e0d0727001c3b44524b6847 +262b64523815000629070005060001221f2d1e5761311242231a0a210a00 +1069afa6b2af5f149e29374f0f65614f3e062f00b9c3b3c4be394588032a +294b964e0929352a0356d1abf3a58bafb0a39a6d60554a2f2c0e379bab27 +22213caeb4b4aa774e3d2e243093542206000c4c285a85a0a7ada9a9aba5 +7b5d4b5a34212536876954101f27329eddeee7f7fff1d5effff3f5e3e2d8 +b4a9a097743e262e473d445974a1d5edff4a576b3a120e2a2c1d4241e7db +c2323c30454d422e262620276b670b172c1e1c3042354f003ffffcbfd2db +d8d4d4d6d6d8d1cdd0cfcbcbced0cccdd6d9d4d0d1cecbcacdcbc7ccd5d3 +cbc5c5d1dbd4c4d0d1d6d9d3c8c6cbd1cfcdcbc9757473737473706f7e78 +7679797371757073737274787672717073756f6869717070717475747270 +696765676a6b6a675f636a6e6861677264564d5055545050515253525152 +56595556575b5d5e5f5f5d676788737050827d4169d7f7f87d1634495632 +467098837f737c70776e7c6f6b696767696a6a696b6a676666686b6d6465 +6668696a6b6b66666768696b6c6c6f6d6a6a69696665706a696c6b68696e +686a696b6b6c6b6c6a68666867676b73777673727273727175727273716b +67687274655448311c1604435d5359625f614e585f63566e5564686d6b74 +7d667e565b5769776067697267685e725b57856274576d7950e826373d23 +3d20170801050c1d0198cf16062c26272829282725242a2825272b2d2b28 +312e2f3e2b3139485b5885ac7a15272a26383c1a3235123d191738346136 +14000046160004160e170d162e332027506c7f92b9d8cf1e8bc2e9fa2c1a +071915163581471b0407390c252e5c9f02537494ab4a2a23243336583b17 +1952472f0f175dada29a9b7c2419231d3c37757527002115395cadb1a395 +b3d5bdc2bf6d1ea227314c0e636456470d3403c1ccbcccc5414c8c062d2b +4d954d0011212a0e63deb8dc46011616111c111b1f2b2d36123182942527 +1c1140201317070011171424894e2109000d470c1825271d160c08111904 +0205230f101e3081614906151d031c2d2f1f2a3e36214265322c181d220a +0a121e180610364d1a12305a9dddf2fc31354f29100f2722092006b5d1c7 +30270009110f0a09090b1f696406112318162d40334d003dfcec9ca5adaa +a4a2a4a5a69f9d9e9d97979a9e9b9ba5a7a4a0a19e9b9a9c99969aa3a19b +9395a1aba494a0a1a6a9a398969ba19f9d9b994b4a49494a494443524c48 +4b4b4543443e3f3f3e4044423e3d3c3f413b34353f424246464a4947453e +3c3a3c3f403f3c33374044403a424d4032292c2e2d29282c2d2e2e2d2f30 +3330313334363738383844446853502f64663061d7ffff8f263a4a552b37 +5878594e3b4337403c4d413c3a383a3c3d3d3c3e3f3c3b3b3d4042393a3b +3d3e3f40403b3b3c3b3e3e413f42403e3d3d3c3a38433d3c3f3e3b3c413b +3a3c3b3e3c3e3c3d3839383a373e43464242414142414044414142403a36 +3743463b3029180809003b584f545c5958434d5860577059666a6d69717b +657f575a57697760676a7367685e725a5683637c5d6d7343db253c4a3046 +2923160e111626099fd61d0e312e2c302e2e2d2c2b2f2d2b2d3032302b34 +2c2a361d1f242b2f1b366046002b3a31414224404112360e0c3233643b21 +121a652f050c1b151a0812343c221a282922295482950086caf5ff403120 +312a273d86481c080e440e11206fcb4088838e9e443533313935583d1a19 +5043301b2667b2a79c997c2d23281e39347376300632243e58a2a9a59ebc +e0cbd1cc7627ab323b55166e6d604e133a0dceddcddfd74e56950f36375c +a355071f2d321469e6c0f070354c483e41282d2d3332381b3f98a8322d23 +24675247442b1a22211f2e9458291005124e1b344a544e4b413e43482c21 +1f38201a263c8f6e57111e25154a6b746775877d6a92b9837c696c6c4940 +4049474358899b5437425d94d2f6ff4f56663915132e2d153122cedccd3b +3618232a22140e0e102a746b0c13261a1a364b3e580542fddd726c726e66 +63656367605f61605b5b5e5f595c636862605f5e595a5a5a545b64645d56 +57636d66566263686b655a585d63615f5d5ba5a4a4a6a29d9ca0a7ababa7 +a5a7a8a5a5a4a5a8abaaa49fa9a5a19fa0a19f9d9fa2a2a1a2a5a49e9da1 +9f989ba39e919d99989d9e9c9ca19a8a7a778187817677757373757a8286 +7f83888a8c8e8e8c948d8a989d9676a7b57b86efffffe42e3c616773a2b7 +adb0adb5b7b3b3b4b1aaa4a19f9ea0a2a2a29f9f9fa0a19f9b98959c9a99 +a09d999d97999c9d9c9c9e9fa8a19c9aa0a4a6a4a1a09e9d9d9fa2a29b9b +9b989a9d9c979c9ca0a1a09da4aca8a6a4a4a2a0a0a2a8a6a3a1a0a0a1a1 +9d9c927f644834281c577e72606b78766e6b68625f5f5f5f69817d71756b +5b5d7669656b62535b725a5a518d62715a76625a687d618c2e495b54332f +361f1b281d1432d0dc071a27262625242525272726252c333026262e292d +34373336455a788faec24d1e352522563115293403c7a71446686a63331e +458b431f1a0f0b2010151e3c34275772a2b6d2f37d2391dbfe9e223c020e +151d261524362f492511172c1b4853921a1330002e4e53534f3e31273f4e +5d312510003200000006000019331e212b3542252d1923223707040449a4 +b8bdbf7b109047215d306d449e7c1326099abdb5acc7572c8e163d295f63 +461f2343100b37daaed6ce8ee2c6b59d645465574924272e685045132549 +a3a8b2ab7f5b503d27246d722005122c54244c6a96b0b2afb3b3a97e674f +57412f14553458a43c2629215bdccfe4fdffebd9ddfff0eddce0d6bdac9d +956a2c2c3e5e5153597cabe0f9ff48996a43041e211c2b338499dce43156 +343a3b39342a26221d27090e2a160c1a26190d181e00f6ffbdd2d5d6dbdb +dcdfd7d1d0d4d3cdced3cdcdced4d8d7d2cecacccecfcecdd0d2d2cfcac5 +cbd6d8d3cfceced2d0c9c4c3c6cdcfcac776757577736e6d71787c7c7876 +787976757475787b7a746f7975716f70716f6f717473737376746e6c706c +65676f6a5e6a66656a6b686b706a5a4a4a5359534b5352514f4f52575b53 +55585a5c5e5f5d656268797e7246727f4962d5f8f8d31a1f404753819689 +898185857f7b7c7671706e6c6a6c6e6e6e6b6a6a6b6c6a6663606765646b +686468626467696768696b746d66666a7070706d6c6a69696b6e6f6b6c6a +69696e6b686b6d6f726f6e737e7a797676747271737674716d6c6c6d6d69 +6a6355412c1f180f4e796d5b667371696864615f5f5f616b8382767b7465 +6780736f756c5d657c64645b996e7d66827068748b70972c3e4a43262222 +070313100b2bcbd705192627272828262627262522272e2b24252f2d3136 +342b26313e526790ac3f17312320542e12232e00c19c012a464640190000 +3d10000905011a0f161c3a2f214e6796a8c3e26e1686d6fea2253e041016 +1e2614223229401a102647395d4dab899e98242b303d403b2c1f18384c59 +2e242b4bb39bb1a68d271e203429333a3c3818281e3257aea2a692a7d9c8 +c0cd8d21994115552a6742a88714250da4cbc5bcd45f3390153d295f6344 +191837080a40e9c1cd8a1a4a231919080f2428392731345f4547131a1833 +161b1c090011171622727d2b0f15294a0d232121221e120b101603090311 +0e1e13523052a13b231f00004f1f1f305533292d4d241d1122281a0d1020 +15001c4253140a2965aae6fafa32805738031d1c172614304cd4f326390c +0e100e0600090f12200409281407151f1105121d00fbffa0a7a7a5a7a4a5 +aaa5a1a3a6a29b9a9f999a9ca2a8aaa4a19c9fa09f9c9b9c9e9e9d969399 +a4a6a19f9ea0a4a29b9695989fa19c994a49494b474241454c50504c4a4c +4d48444344474a49433e4844403e3f403e3d40434542454846404145413a +3f4742333d393a3f40404248443424232f352f2831322e2d2b2f34382e31 +3232343635333938455c61501e4a592e54d6ffffe62621393a3e606b554e +42454645484d4e463e3937383a3e3e3f3c3e404144423e3b363d3b3a413e +383c36383b3a3b393d3c453e38373c4141403d3c3a39393b3e403d3e3f3b +3e40403a403f44444440484d48424242403e3d3f4543403d3d3d3e3d3739 +372f23140e0b0749756957606d6b6363615f5f5f61606a827e7279716466 +7f726e746b5c667d65655c996e7d66827169748b6d932f44524d2f2b2d14 +101c171032d1dd0a1f2b2c2b2d2b2a2a292b2b292e342f272a333032332d +20161919141f4a721a04302e2d61391d2f3804c39800294748441c001055 +210c130e0c1e0a10213f2c091715303f689c430384ddffae36531b272b30 +301923312b43220e1136417a7dd39097992b32323239443a2b1d32404d27 +293656b99baa9d86272226392d353f4241212e22395ba89aa896a9dfd8d3 +da9729a04d236236734db18d192b16aed8d4cce572459f234933696d5127 +2643131247f0c8deaf4b835a493e21213838442e3a407055531b222b5743 +48472c1924221e25757f2d111c32551d353c4b54524946474a2f2b1f2b21 +26195d3e5eac432a280a208360677da17b71789b79756d7a705135324d4e +4667898f3e27396ba8e4ffff47966a460b23231e2c23526edff8364f2625 +241f130a0d1118270a0d2b170b1b271c101c2505fff6827c766d6b636264 +605f626867605e635d5b5f636a6966605e5e625f5f5c606262605a565c67 +696461606266645d58575a61635e5baaa7a6a8a6a1a1a3a5a9aba9a9adae +aca5a5a5a6a8a9a7a6a8a8a7a4a19fa0a1a7a7a6a4a7a9a5a09ea2a19b9e +a4a095a19d9ea3a29d9c9d9e9e9a8c7e767d846f70767a7c7c7d7d828488 +8a8c8e8f90958e8496948f83b0bd897adcfdfffa4b5f92a4a7b9b9adb4b1 +b7b9b6b4b7b3ada7a8a9a7a4a3a5a89d9fa0a1a1a09f9f989e9b999f9b96 +9a9a9d9f9f9d9b9b9ba5a09b9ba0a4a4a3a09f9e9e9e9fa1a19a9b9a9899 +9d9c979595989b99989ea5a3a1a2a1a09fa0a1a3a2a2a1a2a4a6a8a09d93 +7f6246322610304a49424550534847484a4d4f5253454e463e4947414746 +414a535141434c4c48416a4953485a5348554f414f192f5160604b3c2e1f +191415198d8e07191e29282827272728282c292b2b282426282b2c303439 +425870849bb1b33e262d24081d0d13292a15ac970e49546474203254933f +14161c19201216152528376c819dcfdbff2614081c0f0a093b16061b164c +473e46525336371305000d10570c0d31003e53493d362b313141404c342a +0c00350000020f00001e23301c272f28341b1d341e370806053da4b9c5c2 +85118f5c2866404018332945401b8bc7afaebf6d2da7213138282a364e34 +28322c1bddacc9d06ec4b5b3a1655e685441312b211f1f2a372d4d92bcab +aa85605547302629191f273a3922312b649ea9a6b6c2b9b4876459624832 +3331422d4c1120243c46bad1e9edebcbccd5eeeff5ede5d2bfb6a5956324 +2544635875697ab6dff6e5215d6033181a230e0e1f6d7ff5df6f6947383b +3b3834241c1727251a3420210f272e28242a09b5f6cfc5d4d8dedde1e0d6 +d1d0d1d2cdced2cfcecdcfd3d1ccc8cbcdcfcdceccced0ccccc8c4c7d1d6 +d4cfcccacdcbc6c4c5c5cccecbc97b78777977727274767a7c7a7a7e7f7e +757575767879777678787774716f7071797c7b79797b77726e726e686b71 +6d626e6a6b706f6a696c6d6e6a5c4e494f594b4f5456565452515457585a +5c5f605f6261637c7a6e567b865856c4edf9e8313c6b7e809291858b868a +89847f7f79747275767471707174696b6b6c6c6b6a6a636966646a666165 +65686b6b696767676f6a65656a6e6f6e6c6b6a6a6a6b6d6f6a6b6a68696d +6c676565686b69686e77787675747271717271706e6d6c6e70726c6b6455 +3f2a1b1401223f40373a43483e3f404244494c4f444e46404b4c464b4c4a +505c574a4955525147734f5c4e635f545f574653182d4a55533b281a0908 +070c13878905171d2829292b2b2b2a29292624252322262c3031322f2b2d +3c4d5d76939d30202c230419050b232412a78d002f343d520c120d480f00 +020f0d1b151b131c1b285d748fc2ccf4170600150e0c0c3d18081d194c46 +3c424c4a29311e21193012747d938f193334383025161c2541444d312a22 +3fab9bb2a9912a1e25233b29302f1e2d252b3b45a19ba696a5dfc6c1cf9c +2499511a5e3a38153d36443d1e95d8c2c1d07834a8202f37292a324a3022 +262522ecc0c69a08300d12190715201d292f382e1e1d2e371d1a242f1a1f +0c000d191b2433272d2f392f10190c292e1b121919111d080509130d2134 +2f3e2a4a14201a1a004028251e22131b1b291b1e2126221b171925190421 +4c5611213663b6e4f3db0c48522b17191e090f031129eaee624b25151a15 +0504070c081c1f1832201f0a1d221e1f290ec0f7b79da7a6a8a4a8aaa4a2 +a3a5a19b9a9e9b9a9b9fa3a3a09c9fa1a19f9c9a9a9c98989490959fa4a2 +9f9c9c9f9d989697979ea09d9b4d4a494b49444446484c4e4c4c50514d44 +4444454748464547474643403e3f4047494846474a46414044413d404642 +37413d3e43423f3e434446423428222b36292e313432312f2c3030323234 +353634353842615f4d2d4f5d3848c4f8fff83a365a675f675d4849414647 +494b5051493e3c3f3d3c3b3f44393c3f4242434242393f3c3a403c353939 +3c3c3c3a383838403b36363b3f3d3c3a393a383a393d3e3c3d3c3a3b3f3e +3937373a3d3b3a4046433f3e3d3e3d3d3e403f3e3d3e4042443a3a382f21 +120b0a001f3d3b33343b423c3d3e4045494c4e424c443d4848424a4c4950 +5b57494954525047724f5b4e625f54605949561d32515d5c45332515120e +0f178b8f0a1c222d2d2d2e2c2c292b302d2c292723282f34343129201a24 +231828536c13122a29122712182d2e1bad8c00303740530b151f5d1d020d +1919210e141621130b1c18245977b70000001d16181d523121342a584c3f +414c4d30311015254e429c859299263b2f241f2d292b2939353d282c2d4c +b59caca18929232d2b412f37372734242b454c9d95a699a4e5d9d8dfa42b +a25f296b464520463c4a44259ee2d0d0e28c47bc303c3f2e32415b3e2c30 +2d28f3c7d7bc386a48443f21293632373a40372c2a393f272b475a45462f +192126222534272e32413a20291b3f564d4650544c52352726302329383a +4c35551b28232b196f696f6e705d636678707b84836b50373653544f6d8a +8433384569b8e7fae61d5961381f21250f130f364cf8f374633d2b2b2414 +100b0c0d22231b35222410262c27263114c4f19f797d736c6161625d5e62 +6666605e625f5e5e616565615d606263615f5d5e605c5c58545862676561 +5e5e615f5a58595960625f5dafaba8aaaba8a6a8a9acaeacaeb2b2afa7a7 +a8a8a8a9acafabaeafaca7a3a5a6acaeadaaaaaca8a2a1a4a39fa2a7a49b +a2a1a3a8a7a29f9d9eaab0a086767a8277747476797d8082848386888a8c +8e918f8f87a89a88889abf9666cdffffffa35f94acb1bcbdb8c3b8bcbebc +b9b9b5b0aaafb2afa9a5a7aca2a4a6a5a2a0a2a49ea39f9ba09c969a9a9d +a0a09e9c9b9ba19e9b9da0a2a2a09d9d9c9c9d9d9e9e9ea09f9d9ea2a19c +9a999c9e9e9ea4aaa5a2a3a2a1a2a3a3a09fa0a0a1a3a6a7a09b907b6044 +312616151a252620252b191a1b1b1d1c1e1d211d1415232320261a161613 +100a0b0f14100c1d0912121b1310220d1b15213c506f9065404127122a22 +04150d011f2f2826262728282725292a2c292b2e2a24181a212b37465e74 +829daf8e272a26222b211a272d2010434a0d3d455575252c4e934414111b +1a180c19151624467785bad4faae0e271b0f02000e1b0b002818224a330f +1b152234122d3d21004623122700465947322c23323444484d2f210a003c +01081425000a1f113c0a31440e0d00123208330c0c0e2da0b0c3be910d83 +7615612e3e3f302d381e075bd1acbac18117a6141752223923320d033634 +03d9afc1eb64b2adbaac6264675a4a5a523b534f484332487fa4a5a98b63 +534d3a2c6d4446496052275526609ca7a8bcc8b8bb936164674e37533c48 +2240323e1d233ea4dbeae9e8e6e4eae3f2edefe4d5d2b9a2885114194459 +4c847178c4e3feb42d3e57464549371426326363f2c994445c343b3a3637 +221c222c2729090a1e1e1b282519150053ffedb5d3d9dedbe5dfd5d2d0d0 +d0cdced3d0cecbccd0cfccc9cacbcdcdceced0d1c9cac8c4c4ccd5d8d0cc +c9cacac6c6c9c5cacecdcc807c797b7c7977797a7d7f7d7f838380757576 +7676777a7d797c7d7a757173777e807f7c7b7c78726e716f6a6d726f676e +6d6f74736f6c6c6d797f7156464a565151515051525656565656585a5c5e +605c62668e80695c698b6946b8f4f8f6853b6c858a9696909a8d8f8e8a86 +847f7a777d7f7c767274786e7072706d6b6d6f696e6a666b67616565686c +6c6a6867676b6865676c6e6e6c6969696a6a6b6b6b6b6d6c6a6b6f6e6967 +66696b6b6b717a77777574737473736d6c6c6c6c6e70716c6b63533d281a +1407070f1a1b1518200f101113151718191d1c13152325222a1e1c1a1914 +100f15181610230d1816211d1a2c1520192037496483552c2d11011d1900 +0f08001d2e272727282929282626272523252a2a281d1e21272a3240525b +7991791c242521281d121f251a0d3e410025272e52130e09481400000f10 +130f1c100d17376878acc7eb9f00190c0500020f1c0d002a1b2149310b15 +0c152f1c486643026790958c153f3c3827190f2129454c4b2a1a162ea091 +a7a08d25161f1147173a4402030720392d9c9fac9f97dfbdc1cba8208d6b +075928363c3a38371b0a65e2becdd28c1ca411155123391f2e0b002a2d08 +e8c3c0b8022108192100161d232f575b45524d4f462518171d1621130009 +1a1f216e494946543d0a3406272e1b141f1f13241400111713225239441f +3e373e1602002c3526181b2728210f13101d1c1c251517261807285b5609 +324163c2e8fba81b2c4b404448320f25181216e1d0892c3a111a15060c05 +0a13212127070a1c19111c1b1414025effd791a8a9a8a4aca9a3a3a3a49f +9b9a9d9c9a999ca0a1a09d9e9f9f9f9c9c9c9d95969490929aa3a6a09c9b +9c9c98989b979ca09f9e4c4845474845434546494b494b4f4f4c42424343 +4344474a46494a47423e40434a4c4b48474b47413f42403e414643383f3e +404544423f41425056472e1e222f2a2b2b2b2d2f3031322f303234343637 +31394775674c3740644c39b7fcffff872d536663675f5358494b4c4d4f52 +504b404246433f3d3f463e414344414143453f423e3a3f3b3539393c3d3d +3b3938383c3936383c3e3e3c39393a393b3a3c3c3c3e3d3b3c403f3a3837 +3a3c3c3c424943424140414242423e3d3d3d404244433d3d392f1f120c0a +02040d16170f101a0d0f1011131418181c1a1113232421291f1c1b191510 +1015191611230e1817211e1b2d17231c253d506c8c5f37381d0b241e0213 +0c0222332c2b292a2b2b2a2a2d2e2d27292b2c29201f1f1e1a1a2425182f +554a00162327332b1f2c3024164442002529335611101b5d220208191b19 +081514100e16251c415f9864001011100b0f23312617412e2f4f340c170f +1c331b4f8473419ca59d9823473821131b1b2b2d3d3e3e24212440b099aa +a1902f242b194d1d414c0c0b062043359899aca297e4d0d7dbb027967916 +66344347433e3d22116eecccdce29e30b922225928412e3d180734350eef +cad0d9315a424b4a1b2c34383e62644f605a594d2e2838464149371d2029 +2825724c4e4d604c1e47133a534a4654584b573f212d3227295744522a49 +3d461e13125a7570696a747471636c6f827c685d38364f4f4c6b91812a48 +4f68c5ebffb42b3c594c4c5039152a233336f1d89a4252272d261616090a +1827252a0a0c211f1a26241b1c0862fbc06f7e786c6367615c5f62656460 +5e61605e5c5e6263615e5f6061615f5f6061595a5854555d6669625e5d5e +5e5a5a5d595e626160b1aaa7a9aaa9a8aaaeb1b1afafb2b0aba7a9abaaa8 +a8acb0adaeafaeadabacacacadaca9aaaba8a3a2a4a4a2a3a8a59f9fa0a3 +a6a7a6a5a49ca1a9a99e8d7f747c7876787b7f8284858284888a8a8d928f +8f83ae9c858b89b59f52baffffffb899b3bab7c2c5bdbfbfc0c2c0bebbb7 +b4b0b3b6b4aea9a9abaaadada9a29ea0a4a2a7a29ea29e999d979a9ea1a0 +9f9f9f9e9d9d9ea1a2a09e9a9a9b9c9c9a9c9b9ea09f9d9fa2a29d9d9b9c +9fa0a0a6ada3a2a39f9ea0a19e9f9f9e9e9f9fa0a19d978c785d43322825 +1712181c1615191616161513100f0c161110181d1510151a191208030303 +010100010100000905171a230c1a062a40455b8f623a4c3625262f1e0e0b +142d282827272728282727252c312e303125170408162a394a5d6e8ca9c0 +7030373636312a2d35323d121c0512264d4f6d49143a81411a111513170e +1a1714264b7b98c8ceff4a1e2b3a1a2211101b14022506448c7317040631 +301d1b3b3e160a002120003d5642312e2c383044605a28110a0040060c17 +2e000b201a4c1c76a14d0f0f1f3b04391205091f9da9c2b99f0b70810e84 +0e1d2e436b31100a3be2a7bbb89c0ea31e1a6148727b2004213a2d01cdb5 +b9ff6cabb3c2b1746c646042543c1b1e303c02173a91a5a4ae976b555043 +2e203521173030335035558babb5bcbeb7b59c616265543051433f4e673b +0a16323e93dedfecfffff5fce9fff0efe2dcdfbca08247141c53574e8177 +83c7e8ff6f3c364f65464f29242d2f515ac4dac0365d2b34343039221c1a +4b71cb5c441819244e7e94752700f1ffb1ccd7dbdae4ddd5d2d0cfcecdcf +d3d0cdcacbd0d2d2d1c8c9cbcccfd0d2d3cccdccc7c4c9d3dbd1cecbcdcd +c9c9ccc7cbced0d1827b787a7b7a797b7f8282808083817c757779787676 +7a7e7b7c7d7c7b797a7a7d807f7c7b7c79717072706e6f74716b6b6c6f72 +73727171697179796d5e504752514f4e51535658585554585a5a5d605b62 +6194836a625b877534a5f9edf695748b908e9a9c9493929392908c888481 +7d8184817b767678767979756e696b6f6d726d696d69646862656a6d6c6b +6b6b6867676a6d6e6c6a66676869696a69686a6c6b696b6e6e696967686b +6c6c727b757775717072716e6c6c6b696a6a6b6c6a6860503b271b161609 +040d110b080c0b0a0a0b09080606100d0c171b1510171b1a130904040402 +0200020200010a091c2228111e07283b3b508252263820141b261808060f +2826262627282929282622292a282a2d2518080c17232c35404c6687a35d +243135352e24252d2a370c17000712302b4d3a000038130000090b120f1b +120a183d6c8bbac1ff3a0e1c2a0f2013111b16032709438c71130000262a +2a3561612631569f8b1a3c3a382a1c17252444625621071322998a9c9688 +22101e1a55297fa14105192d3f29a2a3a39a8ddeb8c0c6b31d7979007e0b +152b4c76300d0d45f0b9cdc8a413a21b18604971771c021e302604dac8b8 +d30f201121240b1a1926264c43231d3043070c0e32241521190202171f1a +19331e102018122f17202122211e17131e1b000c1217194c403b4b65400d +1113001f3a1b1b3552322d1128151d1919270d0e1f120b2b674e0d34496e +c5ecfd632a24435f454e241f2b1a0f18acd4b8253d08110f040f050a0b40 +6bc95a4416141a42748f742c08f3f38ea5a9a7a3aea7a3a3a3a19d9b9b9d +9c99989ba0a4a6a59c9d9d9e9d9e9e9f989998939297a1a9a19e9d9f9f9b +9b9e999da0a2a34a43404243424143474a4a48484b494440444645434347 +4b48494a4948464745474746434546433c3d3f403e3f44413b3b3a3d4043 +4242423c434b4b4232241d28282626292c2f31312e2e343636393b333b45 +7d6d4f4237665c29a4fff3fa8f5a676a62676456524f505050514f4d4a44 +464948423f3f43444949463f3d3f434146413d413d383c36393b3e3d3c3c +3c3938383a3d3e3d3b373a3b3c3c3c3c393a3c3b393b3e3e393937383b3c +3c424a4344433f3e41413e3d3f3e3d3e3e41403d3c392d20120d0c110603 +090d050006090a0a0a08060706100c0b151c1510161d1c150b0606060404 +02040402030c0a1f242b14210b2d4143588b5c31432c1e212b1c0c0a132e +2b2b2b292a2b2b2a2b2930322c2e2e271a090b1219191a201e254069320a +25333b393032383541161d000513322f503700084c200a0a1316180a1516 +0b0d1a272f515bb5060017341d2d2025332f1f401c5194761400022e3433 +4c92a3737277ae9b2644371f101a1e2b263c554b1b0f2436ab96a49c9132 +232b225c2f86a94b0d182d4a319e9ea49d8ce4cdd6d6be2782880f8a1622 +36557c3614144efbc5dbd8b726b42c25684e79862b0f27392e0be2cfc8f2 +3c574a554e2931303c35574d2e2b3c4b0d141f524d414b3f211c282b2320 +3825182d2827402330454e53514f4851441e272e29215049495670461418 +23154c79656c86a1807f667f718077686536324d4a4e6e9c792d485673c8 +efff6f3a34516b4d562b252e232a34bce0c738541e25201319090a10466f +cc5d461b1a234c7d967c320ceee0707e786e6368615e5f626362605f6160 +5d5b5d626667665d5e5f60606162635c5d5c57555a646c63605f61615d5d +605b5f626465aea8a5a6a7a6a8acafb1b1afb0b2aea8a8adb0afacaaabae +b2aeabaeb3b6b3afaaadacaaadaeaba7a4a5a6a5a6a7a6a2a2a3a4a3a5a6 +a7a79c9ca2a9afa895837b7b7c7f8282807d8883868a8c8b8e95928d7aa2 +96888f8ca8ba5f8dffffffa3c0c8c4bec3c5bdb7c2c2c2c2c1bdb9b8bab9 +b9b8b6b3afacabaeaea9a19d9ea2a2a7a29ea29f9a9f989b9fa1a0a0a0a0 +9b9c9da0a19f9d9b9a98999a9b9a9a9a989b9a989a9e9e99999695989a9b +a0a69e9e9c96969999949c9b9b9d9e9e9fa09a948873593f2e25261e1918 +1a1b19141a1a1c1b1b1a1a191b151c241e121114121b201f1e1d160d100e +160e0c101a0f19241f1a1b08202d59577b55324233301724401f2c232f21 +2a292a2828282a2b2126292424251a0a0d121e304151637393acba472e26 +2e2c343234331a3303432f14205852765f12537c34191110111713181817 +2a4a7cb8cee3f61922251a1109060c391b05190d4471672309123d10200b +0d181f03002622002947362d2d2f383a4c69582e161200430a09152f0006 +14132d085d804a061a1423002c13000a1c98acc2b9ab155c9e076b1a3d54 +486d2d101121e2a3b9b6a70f963a20383d5a97150636331b00b8c0b0fe75 +9bb1bdab83696167424329084c798b34252e7991a9b5a3785853482f4681 +6a1f080e2a4e304f86a7b0b3b7b5a79f685c5e582e362d3064746b091936 +417dd8deecffffe3ebe5fffff3e6e4e1cbac8a4c222d705861777c99c9ef +ff302f316275381c103a25213e5e82f9e049522e302e2f33231e1d3c4790 +24200916112a434f3d2000fcffbec3d1d6d8e1dad5d4d1cecdced0d3d1cd +c9c9ced1d2d2cccbcccccfcfd0cfcecfcec9c4c5ced8cfcdccd0cfcbc9ca +cbccced2d4807a777879787a7e818383818284807a777a7d7c7977787b7f +7b787b8083807d7c7f7e7c7c7d7a74717271707172716d6d6e6f6e707273 +73686a6f797f7865554f4f5053555553505b5656595b5a5d635e5f58897f +6d6c637e954779f9f7f07a99a09a959a9b948b95959595918d8986888787 +8684807c79787a7a756d696a6e6e736e6a6e6b666b64676b6d6c6c6c6c67 +68696c6d6c6a68676768696a6b696a646564626468686363605f6264656a +727072706a686a6a656c6a6a6a6b6b6b6c6b675d4c3722161214100b0a0c +0e0a050c0c0e0f0f101010120f16201a100f1210191e1d1c1b140b0e0c14 +0c0a0e180f1d29231b1c071b264f4c6e451e2e1d1f0c1e3a19261e2a1c25 +27282828282a2a1e23221e1e21180b11141e2a323a4551708da13524222c +2b312c2c29122e00412b0a0e3f325951001337080001060b151217120d1c +3a6dabbfd5e5080f12080405050d391c061b0f4371651e0308310c2c2732 +3c38313c9e9535303230291c19232a486754290f1e209a8a96928c281314 +133615647f3e002322271493a49d9e8cddbec2c6bf276596006818375151 +762c0d142bf0b5cbc3b01295381c373e5993110635291400c3d2b3d52015 +121c1a140f112c2339290c4c7b94391b082419161d1a04000d1913367a65 +1800000f33161f23241e151013131e00020a19102d272c6172700e181e01 +10381c192a431d201641312a1f191a0b0b1b0f0e2d6a3c1e305086c7f0fc +221a1f5772381b0b33200d0d285ce4dc41360b0d0c060e060a0e31418e22 +200711071e394a3c2503fefc9f9fa6a5a2aaa5a3a4a4a09c9c9c9c9d9997 +999ea3a6a6a09f9e9e9d9d9c9b9a9b9a9592939ca69f9d9ea2a19d9b9c9d +9ea0a4a6443e3b3c3d3c3e42454747454648443f3f454847444243464a46 +43464b4e4b48414443414445423d3c3d3f3e3f403f39393a3b3a3e404141 +383940494f483524202223262b2b2a29342f32383a393c40373d3f756d58 +504565823d78fbfaec68726f6861625f564c54525252514d4b494b4a4a4b +49474342434848453d3a3b3f3f443f3b3f3c373c35383c3e3d3d3d3d3839 +3a3d3e3d3d3b3a3c3d3e3f3f3e3c35363533353939343431303335363b42 +3e413f39373c3c373e3f3f3f40404344413e3a2d1e100a0b100d0a070908 +0300090b0e0f0f0f1111130f18211b111013131c21201f1e170e110f170f +0d111b11202c261f200c212d5754774f2939292912223e1d2a222e20292a +2b2a2a2a2c2f252a2a2222221b0d1211161c1b1b1f21304c6b0d0b172d31 +3c3839341d3507462a080e42375d5000244a150a0b0f151a0e13160e0f16 +284f58749d0000141616131321513822342453796a2207103b1b444f7692 +947f69b7a7413a2f160c141b282b3f5b4925172e34ad979f98943924201b +3d1b6c8748042222321d909f9ea08de2d2dad7ca316ea5097323435c587d +32141b34f9c1d9d3c125a7462a3f4361a220103d321c07c9dcc4f54a4a4a +504534292a403244351758879b3f2417413f434c46291a252b1f40816c20 +070820421f2b424c4d4646454345201c242a1830313a6c7d76141e2c1c3a +76656a7c946c6f669286887c6b5f3c37504b5675a66c3d425d8acaf4ff2f +2b2f657d4023123a2416224071f5ea504c21211c14160a0c133745912522 +0c1710284251442b07fbec837b796d64675f5e62636261616263615d5a5b +60656767616060606060605f5e5f5e5955565f69615f6064635f5d5e5f60 +626668aba7a5a5a4a3a8afadafafafb2b4b0a9acaeb0b0afadacacb5aea8 +abb4b9b6b1afafafacafb1afaaa6a7a8a8a7a7a5a4a6a8a6a2a2a5a5a4a3 +a4a6acb2b0aca7968d827b7c7e82848983868d8f8c8e968f8f84a49d8e80 +82a892737d7b2168c0b1b9c1c1c1c3c3c0c5c3c3c5c5c0bcbdc3c1bebdbd +bbb7b3aaacaca9a4a1a1a3a2a7a09ca09d989d9ea0a1a19f9e9e9f9b9c9e +9e9e9c9996969696969695959895989795989c9b979b969496989a9ea49b +9d9b9492979892959597989b9d9e9e958f816b5038281f1c2020191a2120 +1818181818181718171e171e1e120f17170f15191817171614131218130e +111508000b060f110b121e080717100f272d3e23192d06190e2e33242628 +231f1e252b0e0e0e0c0f1719182121263240526c8298ab92191a080e0b04 +060e1c0b2907b4800520494a7346198d9431100b0c0d0b040e20293f4e73 +bfddf9b1112d24212e2215073c0e0319232620222530393b040d271e0516 +1d00222b0c1b432e2b2a2f364f595a453b291800440d08102c0000282229 +122e35402e26161a00141705141a89afc0b5b22447b9065533264959c234 +20160cd3a5b9bbb11678501619323b5a241a2e2c1e0098d2b2ed8a88acb5 +ab8c63606b483f33193d5d583924335e92adb9ad865d544b334866681603 +252858194d899ea0aab4b4a7a57d615f603b281c384f4c90341b244065ce +f0f2e8ecddd6d5faf7e0d9e7e8d6b08444202f7a4b666b7aacd2fbff1927 +2b675f480618362422315e52f7e66f43413330322c25211e2a25260a0f1b +0d1b2d281f14170078ffdcbac9d3d7dbdad6d6d5cecdd0d2d4d4cfcac8cc +cdcdcdd2d0cecccfcdcbc9cecdcccac4c2c9d2cecccbcfcec9c6c7cfcccc +d1d47d79777776757a817f8181818486827b797b7d7d7c7a7979827b7578 +8186837e7e81817e7e807c77737473737272706f7173716d6d7072717070 +747a80817d78665d524c4d5255575c55555c5e5b5d635a61618a8674605e +8575606d67054093858f9797959797949796969896918d8e918f8c8b8b89 +848077797975706d6d6f6e736c686c6964696a6c6d6d6b6a6a6b67686a6b +6b6966656567666666686869626462616368666366625f62636669716c71 +6f68666b6963666667686a6c6d6e68645846301d100c0a11100b0d141109 +0908080a0a0b0c0d140e15180c0b13130a0f13121111100e0d0c120d080b +0f03000c070e10090b14000007000013172d181327001308282e1e212321 +1d1e252a0b0b0706091317182323262b313a4d5e768d7b0912040c080000 +0412012201b17e0012332b593b035051070000050709030a171d2f3e64b1 +cfeaa2001a110e211e14053c0e041a24282021232b3231011b43432d3953 +4e98a9692c332c2a1a171c3b4e563e37282b23a192999697361b2e21321f +353434242f221c0e7ba6a0a88ed4c4c2c2c4354fb1005333204660c9331f +1915e1b7c9c7b819774e1218323a56201a2f251700a1e4b8ca3c09111415 +14000d2d283230193d5f63401d11142217181b0900061611345c6513001b +1c4806222c200e0c101314220e01091d181914344c4a953b1c1006003635 +2315211712123a3b251b1d1c140d1909102d6a252528529cd0fcfc091219 +5c5c4806112c1b13113322d6e26f2a1e100e0e08080b0d1f1f24080f1908 +11211e1a131c037cfcc299a2a4a3a6a5a3a6a5a09c9e9e9da09b98989c9f +a1a1a6a4a09e9d9b97959a999896929097a09e9c9da1a09b9899a19e9ea3 +a6413d3b3b3a393e4543454545484a464042464848474544444d4640434c +514e47444545424446433e3c3d3d3f3e3e3c393b3d3b37393c3d3c3b3e41 +474d4d4944352c221e1f252b2e3531343c3e3d3f4438404b7b78654b466f +655a6d6802347654535b5b585a5a5559555355524d494a52524f4e504e4b +47404444433e3b3b3f3e443d393d3a353a3b3d3e3e3c3b3b3c38393b3c3e +3c3b3a3c3d3e3e3e3f3f3f3535363237393a343a33333337373d443e4242 +3b393e3f393c3c3f40424445464141382b1b0c0605060e1008070e0a0206 +08090a0a0b0e0e150f181a0e0c14140e13171615151412111016110c0f13 +0704100b13150e121c0504110a081e233720172b04170c2c322225272420 +20272f12120f0a0d141a18221e1a191416212a3951490000000d0f08090f +1b0a2a0bb87f001235305c390560631503070d110e01071c1d221a21586c +8f5f000c1721352d221a542a203639372a2726313a3c143873938d9da983 +b4b8713633150e0d151f3c484b3634303934b0999e999d42283a2939253d +3c3e2c2e22281778a2a2aa8dd9d9d9d3d03f5ac0095e3d2c5168cf3b2522 +1eeac1d6d5ca2a875c20203a42652f24342c1e05a8eec8e8663e4a484237 +1c2742373c3b25496b694625212f48474c4a311a202a1f3f646c1a072628 +520a2c47463b3d4345414a2f1d222f1f1e1f4257559b41211c1f27717c73 +6672665e5e85887c736f63493c51495976a85443395d9fd3ffff1623296a +67500e193420181e463aebf07b3f34241e1a120d0e132523270b111e0e1a +2b27211b22077befab7877706764616164656261636464645f5b5a5e6162 +6267656260605e5b595e5d5c5a55535a63605e5f63625d5a5b6360606568 +aaa9a9a7a3a1aab5b1b1b1b0b3b5afa6b0aeadadafb0b0afb7b1ababb0b5 +b5b3b2b4b3b0b1b2afa9abababababa9a8a9a7aaaaa7a4a7a7a3ababacac +aeb1b4b7b1a5938984868889837e80898d888a918d918d9c99927892b157 +491810288ec1c4c6cdcdc6c6c6c0c7c4c5c9c8c1bec2c5c4c3c0bdbbbaba +b3b3b3b1aeaaa7a6a8aba49ea19d989da1a1a19f9e9d9fa1999a9b9b9995 +93918e8b8a898a8a8c8d8d8f8e8d8f94938f958f8b8d8f90959a9096958d +8d94958f8c8d8e9093949593898276614833261f1c1e1f1d1d201f1b2423 +211d1d1c1c1b1f161a180d121c131f1e1b16100e151d1815161b1017150c +100f120e150f0913241e1a16191516222c1d231622142a33212528211918 +232e040104040a0e18201c2028334054738caab8670e160d08080b110b11 +090d039071011f292e442120869338160e1212080510252a3f4d6abbdffd +7114381f22191b0b0039150d1b185144404b53573f35070a0d1608000021 +252c0d41282b2831375b5f543535220e003d090106210000171023221822 +3f4639343d0a0a20060f1578b1bcb4b53539ae04464f4f5434515047290d +cbb1b5b5c92d656e1437463d454f423631390a69d8b6dcac86b0b4b29e6c +675f41333a1f2624141c2b395691afb8b19265544f3a22323c21283a1d12 +1e457898a3a9afb1aba38f69625b4a2d2b494020481b1b363954bbedf1e9 +e5e6d5cbd9f3d1c7e2e9d8a9722e15297d3c626c78b6dffde11521304738 +481a2b2614241e484edbeaaf2e55383338222a252d3b2a09201d30241f2d +2323202d1728ffffb3c3d0d9d6dcd7d8d7cecdd1d4d5d4d0cbcacdcfcecd +d1cecdcccfcecdcacecbcbccc8c5cad1d2cecbcdcbc7c6c9d2cccacfd27c +7b7b7975737c8783838382858781777d7b7a7a7c7d7d7c847e78787d8282 +80818483807f807d777777777674727172707373706f72726e7878797a7c +7f82857e7261575457595a5650525b5c56575e58626a82837a5b7394413b +0c000b618f969ba2a2999898929997989c9c9592939492918e8b89888780 +80807e7b7774737477706a6d6964696d6d6d6b69686a6c66676868666462 +625e5e5c5b5c5e60615d605e5e5f65636065605b5e5f61656b636b6a6262 +6968625f606062636465655c594e3d29170e0a090f100e0e11100c12110f +0d0d0e0e0f130c110f040c160d1514110c06040b130e0b0c11060d0b050e +0e110c130a020919130a060804021222181c0f190b212d181f221c141621 +2b01000000010814201e21262b303c53698a9a50000e0a06050509010700 +06008f71001316132e190c4c530f01010d0f06010a1a1c2f3d5cacd2ee61 +04250b0f0c140a0039150d1b1953443f494e5034341626334137393392aa +97293b2b2b1815193e4d4b2e352b2c21a599a09fa64624280f2c2d1f2132 +3b3f3e3d286eac9ea090c9cac0c1c74541a80046524c5138584f462c16d9 +c2c3c1cf2f626a1036463d3f4b45392c32076deabdc2680d1b13191c0111 +211d21321d26282125281d182b18131a0f000115150e2d3f293143241112 +1d2420140b0d13181f19020816211821453a1e4d22202908002d3c2b1c1f +261d1c2e4c2c1a2627201319061432721b283254a7ddfcd7050c1e3f364b +1a241b09180d2816ade6b31934151116030d0e1c3024071e1d2e1f152119 +1e1f32222efae995a0a4a6a3a7a4a8a7a09c9ea09ea09c999a9da1a2a1a5 +a29f9e9d9c99969a9797989693989fa29e9d9f9d99989ba29c9a9fa24140 +403e3a38414c484848474a4c463f48464545474848474f494343484d4d49 +464645424445423c3e3e3e403e3c3b3c3a3b3b38393c3c3841434445474a +4d50493d2e2624292d302d2c303a3e3b3c4138465775786e495f84363a0e +00034c6a5b565e5e585a5c545b565558554c494b525354514e4c4d4e4749 +494946423f3e4447403a3d3934393e3e3e3c3d3c3e40393a3b3b3b393938 +363738373a3b3d3c35363634373b3b363d36333437373d4139404038383f +413b38393c3e3f4041433b3b3425170b0405050c0d0b090c0905100f0f0d +0d0d0e0f150d141209101a111d1c19140e0c131b161314190e15130c1313 +161118100911211b1410120e0d1c2a1e23161e10242f1b2126201a1b2632 +0a050502060a15201b1917140e1020314f6424000003090c0f140a0f070e +0795730015181831160d5b641d0a0a14180b000a201c221b1b57769b2600 +1e162320241812513129372e624e454e55584246335888a99f916bb2b99d +343d16110b121b404944283330362cae9a9c9aa3472a3017333327293c43 +3f3f49326ca9a1a38dccded9d4d5524cb60b505b575c415e574c351fe2cc +cecddf3e73791e3e4e454d594c3e32390e76f4cddd8f40524748421f2c36 +2b2d3d283031272a2f2b31504b4b4d3b1f1f2d261933442c36482a161425 +3b433f3b3e4344463b1f2128291d2c534629532824331e1d6580786b6e73 +65617091786a736d54414f425a77ac4641405eaae0ffe0121d2e4c415222 +2c230d1c153731c7f4be2c492922240b12142236280a211f33251e2b2225 +2738262cf0d7797a736d6265626667626165666564605c5c5f6363626663 +6160605f5d5a5e5b5b5c59565b6264605f615f5b5a5d645e5c6164abacad +aaa4a2acbab7b7b4b2b3b3aca2b1ada9a8aeb1b4b2b8b3afabacaeb2b3b3 +b5b3b0b0b0aca5aeadaeaeadaaa9aaa1a8aba9a8acaba4afaba9aaafb1ae +abb0afadaca79884747c7779848881828a928f837e82948bc8ff2831381d +1a7ac7cabebec2c3cbccc0c8c5c6cbcbc4c1c6c2c5c5c0b9b6b9bec1bfbd +bbb8b3aca8afb2aaa3a59f9a9f9e9f9f9e9d9fa3a798999a9794908e8c82 +807e7c7d7e81807e807f7e81858581827b77787a7b7f8480888881828b8c +8686878787888786847a736a5742332823211d1c1d1c1817181c1b1a1a19 +1c1e2020181d1a111c1f0c14171d211a0f10191714111f101c1815100413 +01170e0b180f1a0d15241b1b253122121816101c2b272e31281d1c2b3811 +0d0c0f0d060a140e172839485d7b93abb43a0d0d17060b03170a08160f03 +4121001d171a12121743733a211621251720231f0d22416bc4e7ff2c2815 +26271d151315401a061c151f3731170b190d42150d090c000f001e0e3100 +39212926313d575a5d34240a00003a0c05082200001c113130162b200800 +11310700240d0e1870b7bfb9bd4939ba1451283631342a2f331200c1bfb8 +bbc932537b084a371d1424201a11391836cfb2d1c888b6b4b9a471715f4d +4c6b5152494f3958355079a6adab90624f4e3e3b603f434b49561b38395d +96b7aea6ada69891675c4e4f33574332383a313229324ba2cedcefe5e1e2 +dde2ffeed2e4e5dfa86a25122c883e667c7bb7e4f3b50b245141393c3a45 +3b1f3b1b335cb2dbc71b5c37343b1f2e2c2445332939241c2a3637293629 +242c00fbffacbfcfd9d3dcd6dad8cecdd2d6d5d3cfccccd2d4d4d3ccc9c9 +cad1d2d2cfcfcbcbcfcecacdd4d8d3cdcdcbc8c9cdd3cac7cccf7c7d7e7b +75737d8b8888858384847d737f7b75767a7f808084817b79787c7e818284 +827f7e7d79727a787979767271736a717472737776717c7876797e807d7a +7b7a797a746855474f494b55564f4e575c605f636b7c6fabf317262f0b00 +4b929a929295969d9e929a97999e9f9895979193938e8784878c8e8c8a88 +858079757b7e766f716b666b6a6b6b6a686a6e726566676663615e5f5454 +51515253565753555453565a5a5657504c4d4f505459565e5e575860615b +5b5c5c5c5b5a5959514e463625170f0e0e0b0a0e0d0908090a090808090c +1012140c121108131902090c12160f04050e0c09061405110d0b0b021100 +1207040e040f0005140a0a152a1d0b110d0713201c252822161726350e08 +0509040006130f17253036435b718c99260006140408000d00000c080040 +2500140701000d050934140e0b1c22151c1a140012325db7dbf91c160314 +16100f11123e17061c1621393015061102412529323d2c55528d9ca8233e +282816151b3745502c2617251ba398a0a2ab4c2630103a3b1d2a13000119 +2f2359afa29f96c8d3c5c6cd573fb30e542c332e382e2e321607d0cdc6c5 +cc314f770548371d0e20251f0f321339e0bbbd8c1825131b190018202738 +5e4b52505c44551f1f221e151f170003181c2a5e444e5a58652332161027 +2810061115111500000520184b3f2c353f383a1f0800222b242f29272623 +326f4623252328181b091b3b7f1f32485dabe2f1a9000f403b39413a3e30 +1432171b1d7ad5ce0a3f16121b001013133a2d2737241a252c2b1f312829 +3706f4fb949ea6aaa1a9a5a9a8a09c9fa29e9f9b9a9ca2a6a8a7a09d9b9c +9fa09e9b9b97979b9c989ba2a8a39f9f9d9a9b9fa39a979c9f48494a4741 +3f49575454514f5050493f4c484343484c4e4d524e494646494c4c484947 +444344403941424343403f3e3d343b3e3c3d41423a474141414648454245 +464747453a291d28252a373b34363c40464f586372619de7102a32090031 +6658474951535f62565e59585a584f4a4f4f5456514a474c51555351514e +49423e494c463f413b363b3b3c3c3b3c3e424638393a3b38373638302f30 +2f323336373132313033373733342d292a2c2d313630383831323d3e3838 +3a3a3a3a393a3935332e23150c08090a09080b0802010206070808090c10 +12160e16140d181d0a11141a1e170c0d1614110e1c0d1915131107160418 +0e0b160c17090f1e14141f32241218120a162420282d261d1d2d3c170f0d +0d070207110a0d12130e102034556a0100000f070f07160705140f074626 +00170a07000a05184721141322291a1d1b1a010511206987b00000012229 +241d1f25563422362b3045361a0d1c10533e5884a393ab8baba6ac2c4218 +1309111c38424a29251d2d23a7959a9aa449283718414125321d05021b3c +2e58aca6a493cae8dfd9dc644dc31c5d353e394137363a1f0ed7d6d1d1db +3f5e8510533f251c2e2b2212391a42eacad6b04a5c494c421f3435364368 +555c58624a5e2c35444e485042221f2f2c346348505d5b6825321c244753 +4036404039391919182a1f574d3840453e3d281c1c556a6c7a7572706a73 +b391727369604b52445e7cb648495465ade5f6b307205047434742463818 +3318283895e3d81c532b23280a18191940312a3a261f2b35352838302f3b +06eeed7c7b7872626762676a6462666865635f5d5e64686968615e5d5e62 +63625f5f5b5b5f5f5b5e656a6561615f5c5d61655c595e61a3abb1aea6a6 +b0bbb2b1b2b3b5b5b3b1aeadaeacaeadb1b0afaeb2b2b5b2b3b1b0b3b4b2 +aea8a6a6a6a8ababa9a8a8a8a7a7a8a9abadaeafb0adababadacacadabae +b8aba8a98f7e82797873796b6285828c72666d9376ddff411e331f2171cb +c9c7c7c6c6c7caccc6c7cbcac8c6c6c6b4c3cbc6c1c3c1bac3c2c0bebab8 +b5b4c4b8aba7a5a19e9fa9a5a09fa6aba59b959c9b94908f887c6d6c6c69 +6764625f5e62615b5b60605c5e5d5c5e61646464646a6b68686b6a646463 +626466686766615a4f4438302a25222121201d1c1b1a191f22211e1b1d22 +1713120f08101913191c20201d19151428191115161111170d0d1012110f +151e1e141419161a211d25281b141c1713262a311708130c051c0f0d0807 +080a0904111238394f5f899eb7a01113120b010c08100c070c0a06080a0a +0e151c1b10163580361c1e16181813162329244997d8f9dc1c32191b2914 +170b0b441e0921102d8aa41b0303232e1d0b130d0004001d0d340016291a +262d4659647354300000002b2c130b210000210e3531365a610800262a1a +00320605105dafbbb9af5f1eb0163158121f406d5d1517009abdb5bac166 +2f9902533f598a4f08011c402729deacd6e46eb2b9b1b47d6f5f52386e21 +1f26283900354c7295a59b7d58403d433b2c5117122419183e315f9fa4be +bcaaa3a8a1706a595035654d494258430e1f3b327ee5d2d5dcdceefbefdb +e5e3d9f2d2b15827133a682d6c6a7ccde6fc4f26243f591a5f4a42302b2f +232c5e84ffe0535635342b2a213126160f171e1a191e2425291d242b0052 +ffffcfb3cbd1dcd3d4d5d5d4d3d3d6dacfd0ccc8ccd3d4cfd2cecbc9ccce +cfcfcdcbc8c6c6c9cdd0d0d1d2d3d2cfccc9d0cdc9c9cd747c827f777781 +8c83828384868684817e7d7c7c7c7d7f807d7e808283828182818586847d +77757573757676747373737272737476787a7c7c7b79797b7d7d7b767984 +7975796051554d4a4447372b514f5e514b547a5ac1f933172c0f043f959a +9c9b9a99999c9e98999b9a99979897839199948f918f8891908e8b878582 +8191857773716d6a6b75716c6b7176706662696a635f5f584e404140403e +3c3a3a393d3c36363b3b37393837393c3f3f3f3d41423f3f42413b3d3c3b +3d3f413f3e3b372e241c1511100f0f0f0e0e0d0c0b070c100f0c0b0f140b +07070400060f090d101414110d09081c0d05090a05050d08080b0d0a080e +171409090c090a11121e23140d130c081a1e250c000c0700160c08010000 +040503101033313d45687b998900070c07000901060100020300070e0c08 +0605080b0600411009131417170d0d181a163a8acbedce0d210609180711 +0908421b0621112f8da31900001b2d2b283f453d51478ca0b63629331815 +1124374c644c310f201d88a79c929c5d28340d3e3c3a575100012b26354c +ba9a9692bbcfc2c5bf6b24a910355f111c43705c141b02a7ccc2c2c56428 +9300514259844c100b1a392029efbacab107281a0e220415202c205c171e +2d35440023252d282a2a1b070212272e2956211d3227203a141c3617201c +1112201f000a0c18115749433f5b4a181c1c000e562d2733281b1d1b0e20 +1d0824141e0a0f204c600f3f3f63c3e4f73f110d2e561d644a3b23212925 +1b1c43f6e4463d14120b0a0218150b09151c1a17191a191f182330035afc +fcba96a6a6aba2a3a4a5a3a0a0a2a39b9c9a989ca5a8a3a6a29d9b9a9c9b +9b9997949294979b9ea0a1a4a5a4a19e9ba09b97979b485056534b4b5560 +575657585a5a58534e4c4b4b4b4c4e4f4c4d4f515251504e494a4b49433f +3d3d3c40424240414141403e3f40424448474a4646444647474642455246 +464b34272e2829262c1f1639344642424d734eb6f3321e330f002466564e +5253565b60635d5d5b58554f4d4f41545c575254544d565553524e4c494a +5c5045413f3b3a3b45413d3c454a443a373e3f3a3637342c1f1f23222222 +201f1e22211b1b20201c1e1d1c1e212424221c21221f1f24231d1e1f1e20 +2224252424211b15100c0c0b0b0d0d0c0906050403080e0d0c0b0f140d0b +0d0a060e1712171a1e1e1b17131226170f13140f0f160e0e1113110f151e +1c11111512141b1a262a1b1418100c1c20271004130d0720150f09030204 +04000b031d0d0f0c253b6760000000040210090f09020a0a0a0d110b0a09 +0b0a08070d541d0f1b191d1c0f10201d0d1d5587a59100110c192b191d16 +1b5836233b263e96a91e0507283b384a8aa49ea37da7a7b641302a0b0d0e +23364a614a331629268da5958b9759283b15454243605c04032e34404bb8 +9e9b90bde4dedbcf7b32b91e3e6719254c79641c2409afd3cbcdd17238a1 +0a5c49619257130c1d402833f9c7e2d2365c52434f2731353b2d68202633 +3b4a09313a4c51565541271b253538305a231f332a2239182d5441504c3f +3d48451c2520251b64574f4a62501a232c0c3c8e6f6c78716c70675b7272 +5b6f5255444d648c9333544869c4e7fd4a201f3e61266a52432c22292423 +3861ffef575029231a150a1e1b110d181f1c1c1f2323281f2b36075cf9f3 +a7787a717060616267686767696a5f605d5a5e67696467635f5d5d5f5f5f +5d5b5856575a5e61626366676663605d625e5a5a5e7b7a7d7a7a7980828c +8a8e8f959596949b9c9ea0a3a5a8a9a5a6aaadb1b3b5b5b0b2b5b3afaead +ada3a8abadaca9a7a7a7a7a6a5a7a7aaaab1afaeacadadababa4a6aea2a4 +ab8c748580817c7e6c5e80838671676c9781ceff6216331a1866cbc9c4c1 +c3c7c9c8c6c5c6c8c6c3c2c3c4bdc9cdc6c3c9cbc8c5c3c1bebcbab9b8c1 +b7ada8a49f9d9ea6a19b99a0a6a39a9698968d8a8a83786562615e5c5857 +55525655515054545051504f5153565657565b5c59585b59555453525456 +5857554e4a42372e262120222222201f1c1b1c1e20201e1b181a1e1a1413 +100c161f1914191e1e1b1717182b1d151818100c0e19171717141218210b +0e1217191412151c27281e201f1a1c30371d0b17130e1e1818191b1d2122 +221927323f596e9caacb6d18291f231318121d1b191e1a15170a090f131b +191017327c3015150c0e0d1610151c25519cd4c695211d1b202414102012 +241743591731586b281b0319150f0809040000001a08211c002321252e3d +6061645e470f1200313f4545480d000221101a2b3f631509211b0f003011 +0f0d51a9b6b3b46e1ea040155432305a6f4a1f2800a0debec0dc6b2f9b19 +261e4d757009013d251907e1b9c6e064a6bcc4b17d5a544f3b6327224c6b +7f2d3f425c828376695b4b392b1848876309080339523b608aa7b7bbada3 +a9a7776c5d5d47391a3267744400163b3975c8d1bec9bcf0fcf7e7edede4 +f3dea64a2615334f3965688cd0f0ff36212c293350704613232f2f1d1f61 +70f5d2793f4131372930362c1d171e25222126201c281e1b1f00a0fdffe5 +afcec7dbd3d5d6d5d4d3d2d7d8ced0ceccd0d5d4cfd2cfcdcccfd0d0cfcd +ccc9c8c7c9cccececdd3d6cfcfd2cdcbc8c6c8ce4b4c4d4c4a4b50545c5c +5e61656766646c6d6d717276777a7477797e8084848581838684807c7b7b +717477797673717171717071717376787f7d7c7c7e7e7c796f717a6f747c +5f495954544d4c38284a515c504c517c63b1f95613300e00379599989596 +9a9b9a9897989896949393938b979b949197999693918f8c898786858e84 +7a75706b696a726d67656b716e656367655d5a5d554b3a39383633323131 +323635313034343031302f31333636353236373433363430302f2e303234 +33322d292219130d09080d0e0e0e0d0d0d0b0d0d0e0c09080c100e080805 +020c150f080d12120f0b0b0c1f11090c0c040004121212120d0b111a0404 +080d0e09070b1624231715130e0e212811000d0c06181213121214181c1e +16262e3645527a87af59081d1b2212150b120e0c131310160f0d09070609 +0c07003d0c020a0a0d0c10070a0f16428fc9ba87110c0a0f16090a1d0e21 +15405918335b6c27180011131a24383f3e4d418aa0ad66212d1c13151e41 +47525446182d2c789aaca9a45b1e0f2019252f3c53080a26172737b6a2a3 +94b5cdc0bfc177219c3c1c5d312d5a72491e2c02adebc8c7de6929931324 +214d6f6d130d3d1e0d05f2c9c1b705201d1d1800001726214d1a2153788a +2b31252c372f2a2725201a170e4588660c0b06384e2523271c171d14121e +1c00080e1f1d29162a61744908172503194e432a3b1c231d1f172426162d +271b000d1d3e3e173c4379c7ebfc240a1518315477490916252b23101c29 +e0d0712c210c1507101b1b12111c23221f2116101e191a240aaafefdd595 +ab9dada1a3a4a5a3a09fa0a19a9c9c9ca0a7a8a3a6a39f9e9d9e9c9b9998 +959495979a9c9e9da5a8a1a1a49f999694969c2728292826272c3038383a +3d4143423e423f424347484c4c49494e50555659554d4d504e4a4948483e +4447494845434343424241434346474e4c4b4b4a4a48463d3f4a40465035 +1f3431332f31201032384441414a7358a9f6581e390e001b66574d4e5259 +5d5f5d5c5d5a56504d4b4e4c5a5e57545a5e5b58565451504e4d4c574f45 +403e39393a423d38363f454239383c3c353236332a1a1b1c1c1d1b1a1b1b +1f201a1b1d1f191c191a1a1e1f211c18191c19181b1a16161716181a1c1d +1c1a18130e0a0605060c0d0d0c0906040306090c0a09080c10120c0e0b0a +141e1812171c1c19151516291b1316160e0a0d19181818141218210b0c10 +1516110f14202d2a1e1b17100e242b1506151411221c1a1a1717191c1b0d +14130f101130438038000d1220171c131a15131b1a171c120e0d0b0d0c0b +080a501808120f1311120a1216112b6391805800051421271714281f362d +5b712c4064712c1f071e20203c7c9b9d9c72a2a3aa712a2e160f111b3e46 +52554b2136367e9baba7a35d221728202b38455e110c29253337b5a7a790 +b7e3dbd5d28830ab4a24643936647b51263509b5f3d1d1eb7637a21f2f28 +557b78150d3f251710fcd6d7d73155575347221a29342c592429597e9036 +403946565048423c332922174c8d6b11100d3d4d27324345474d423d4745 +1f24232e293624376d7c4f0a1c321b407f7d66775c706e6a627479687867 +543f4f6580723a4e4a7dc8efff301a27283c5d7d50121f26281f173949f1 +dd803f361e25151b242318151f262424271f1a2720222a0eacfff7c67a83 +6b7262646567686766686860605f5e62696964676461606061605f5d5c59 +58585a5d5f605f676a636366615c5957595f65605d5d62646461605f6163 +676869686c6e73757a7a7d7b8484898c929398999b9d9f9f9d9d9e9f9aa1 +a7abaca9a7a6a9a8a6a5a8aaaeaeacababaaaaa9a6a4aaaaafa1a6b29275 +7c7d858386776786908b776c659287a9ff8a0737211660cbc4bfbcc0c7ca +c8c2c8c7c6c3bfbec0c1c3cac9c2c0c9d0d1cac8c6c3c1c1c1c1c5bfbab5 +aea6a5a8a9a49c999ea6a49e9896908685867d6f5d5a57524e4c4b484446 +45424244444142414042444646464a4f4f4d4c4e4a474746454648494946 +413e38312b252221222121201f1e1d1c21201e1c191a1c1d1a120f0c0b16 +1d16191f24211a16181c140e0f171a16161a161211110e0b10180e17100f +1c1c1f3316242e221519190b2e3a29161a180f160d0e1013131110111834 +2d485f7ba6b7ce29122515221411131b1b1a1e1913150c0a0f131b191119 +337c2f121109080705091c2b2727333c4c2e321d1e14191b0d100a2f2941 +430b3c2d291433303f22171e13050100001b07123d001b2b24313c5c6963 +50481d1d23140000000306071f441a2630364d32232a190c00220b060c41 +a5b4acb9811aaa331a4c2e332db0aa08181d5291aeadad75467b2827353a +5d6117043718220bb2bbbffb78a0b3b6c1925b5d584552351637485d243d +4b5d514d4a536265584a2e4f786316162155342c507ab6b8b7aaa4a9aa7f +685d615130393b4555874f1e1f2d5095d1cffff7dfe2e6dfddddd6dfd09d +50322d534e51676da2d1fdff212829201e4a6a611d112d2219186160e1db +bb2f54324125362d2a1c171d24212126332330271f1c05e2f5f4ffb2cec0 +ddd9d7d8d6d4d2d1d5d6cccfd0d0d4d6d4d0d3d1cfced1d1d1cfcdcdcbcb +c9c9cacbccc8d4d9cbced8d1cac7c6c9ce36332e30333735343132323638 +3b3a393e4143484a4d4d4e5457595f6266686a6c6f71716f6d6e6f6a6e74 +78777472717473717273777b7d7b7a7b7b7b7a787475757c707987684b52 +52585454412f50626557504974658bf87d06361800329696949194999c97 +91979694918d8d8d90919897908e979e9f989694918f8f8f8e928c87827b +7371747570686569716f6964655f565558504434322f2c29272627272b2a +272729292627262527292b2b2a2a2d2c2a292b2a2727252627292a2a2924 +201c16100c0a090d0d0d0e0d0d0c0b100f0c0a0a0a0e0f0e060402010c15 +0e0f151a17100c0e120a04050d100c0c100f0d0c0c09060b130910090815 +15182e1321291b0a0d0b001e2a19070f0e07100709090a08080b0e163128 +3d4b5e8395b618051d1020130e09100e0e130f0c14110f0a0606090d0900 +3d0900060405050100101e191929304021240e10070d11080d062c273f44 +0c3e302a13302d39201f374345464b3d8b9fa4991e252012192040515141 +411b25393628241a2e281b2143233134303b22232e13221ca79a9a97a9ce +bfb8c68a1da63125572e302db0a9071b245d9eb7b1ad723e732225383a57 +5e2210370f1505c3cdc2da2120140d200e01222f273824133e5566203036 +412e2829374a534b40274871590a0911482e191c1d2b171b12121c180001 +091c211e35303a528a592312060634615b917634232825292d2531322209 +14294d2d25405093cbf8f70d1012121e517364130424211f091f19c0d0b5 +22340b1a0115121911111b22211f21291726221e2110edfaf3f49cae98ae +a9a5a6a6a39f9e9e9f989b9ea0a4a8a8a4a7a5a1a09f9f9d9b9999979797 +9798999c98a6ab9da0aaa3989594979c1a161213171a1917151516191c1e +1e1b1a181d1f242427252e2e33363c3d42403e3e40403e3f40413c43494d +4f4c4a494c4949474b4c5052504f4d4d4d4c4744494951454f5c3e232c2f +3736392716384a4e48453e6a5981f88414441d00186a5a504d535d615d59 +5f5c59544e4b4b4e545d5c55535c63645d5b5956545454555955504b463e +3f42454039363d45453f3c3c372e2f342f24181816151614141415181914 +161618131613141418181a15151416141315151212121213151618171615 +110d090808090c0c0c0c0906040309080806070a0e0f120a0a0a0a152019 +181e23201915171b130d0e1619151519161312120f0c11190f17100f1c1c +1f351c2a3022100f0b001f2b1c0e1717121c1110110f0c0908090a1e0a10 +1018314d8a0000120c211915121815121917141c1512100d0d0c0c0c0b50 +16050e0a0c0a02031a27190c0606160117111d1819190f16143f3d55591e +4b372e183736452b214b839da59b6da1a2a1a42a2e2412171c3c4f514649 +28324642322d243732262d4b2a373d3a472c2531212f1da6a09e94ace2db +d0d99b2cb53e2b5d363935b8b10f242c63a4bebab97d4b802e303f426367 +241039141f11cdd9d5f74c534e4652351b343d33452e1a445b6d2e414957 +423a3a46585f55492f50796214131c512e1b293855494b413f4745241f21 +2f312c433e485b915b271c19275d918cc2ac7668686670766d766c594b5a +76936448525496cbfcff192024212859786b1c0d251d1b0e3a39d5e0c333 +49202d0f201b2117151e2523242732212f29262714f1fef1e8858867766b +66676868666566665e5f6162666a6965686663626262615f5d5d5b5b5a5a +5b5c5e5a686d5f626c655b58575a5f67635f616669676464626162636361 +61616367696a6867656666696a6e6e7171777778787a7a7b7c80858b8f92 +93939497959493999ca2a5acabacabaeaba7a6a9aaab999ead9278767b85 +858a7d6e89978b796d618d918bffb6003b2b1952b8bcbbbbbfc3c5c4c1c8 +c7c4c0bcbdc0c1c3c6c3bcbbc4cccfcbc9c7c5c4c4c5c6c4c2c1bcb2a9a9 +aeafa9a09b9ea5a59e97958d83828175635a55504a4440413e3838383737 +373635383736383a3b3a393e3f3f3e3e3f3c3b3c39393a3c3c3b3a363532 +2c2927252522222121201f1e1d201e1d1b1e1e1e1c190f0b0a0a141d1620 +262a251a14171d181a20252420252e1f1e1f201e1a1c2021281813282827 +411c202e2b171b23191f3433211e1d191d100d0e10110e0a081b33365565 +89a8d2af0e0b1304080b040b1211101109050b0e0b0f131a191219378032 +15140c0a0a0d0a161f160e0e0a0a0a30211d0d17191b0d145441281e115e +424b49796c402a0318020000000021080c3e00142d222f464d6c64343828 +2f1a0b1521121f2e2a18171a2d263833483a3e3228002b130d0a30a2b5a8 +bf92137b5307483c493236472d351700000000071d11211326502b382a3e +323033290492c3b1ee728fb8c1b09351564c3a3a452b2b21382f413e2d23 +2121242b2f2c2b27203d3b483e3d2b15253c73b2bab1afa6acb08e68595f +4f313b39482e4f250a2e452c486b587768918995968d8d878b7b63321423 +58353d6671accdffc51634211f25203e4e382232131c1d555bb1efe62c56 +3e412b392a271a15191f1f1f23331b24201e1809eae7e9ffc2c4c1dbe3db +dbd9d6d4d2d5d6cecfd0d0d3d4d3d2d6d2cfcdd0d0d1d1cececdcdcbcac9 +c8cbc6d4dac7cad8d3cfcccacbcd3a373235393d3a383736343636373433 +3437393d3c3c3939383a3b3e404243434a4a4b4b4b4a4b4c4e53595d5d5e +5e5f61605f61646a70757a7b7c7e7f7e7a7775767a6c72836b5250535a57 +594735536b685951416b6b69f5ab003e250428878e8e8e92949693909794 +918c88878a8d9194908a8892999d9997959392929394918f8e897f76757a +7b756c676970706b66665d5654554a3a32302a25211f1d1e1c1e1e1d1d1d +1c1b1e1d1c1e2021201e1f20201f1f201f1e1f1d1d1e202221201b1a1713 +100d0d0d0d0d0d0e0f0e0d0c0f0d0b0c0f1010100d040100000d150e191f +231e130d10161113191e1d191e271a191a1b1915171e1c2616112626253e +1b1e2b240c0c13070d21201211110e150a08040706040203172e3049506c +84b19800000c00060a01010502010500000a13100a0606080e0900410c00 +0705070809040c13090303010100251410020e13150811503e261f136045 +4c4a78693a27052a333741464094a0a2aa302020121c2f345450232c202d +1d14232f1e26312915162336293221383a422a3b26ada09d999ecfc0b4ca +9916795314553f463135462c381e08060100051709190d24532b32274c41 +322a1900a3d7bad6241319130c0b001d241a1c2f28332e412b342f201b1c +1c21282c29262016312b3428251a0f170e1d29191419171d1a050003141a +1f352d3a264e2f12292d0000160229122109100e0a0e0b120b0d05032252 +1514445ba0c9fdba00190a13282947512e152d141e0c171485dae2263612 +1602150c130f0f171d1f1d1e290f1a1b1d1d14f5f0eafeb0a69baeb2a9a9 +a8a5a19f9e9f9a9b9ea0a3a6a7a6aaa6a19f9e9e9d9d9a9a999999989796 +9b96a6ac999caaa39d9a98999b231e1b1c2224231f201d1d1d1f1e1d1915 +14171a1a1917161617191b1e1f211f2120212121222324292e343a3b3c3c +3d3f3e3d3e42454b4f555354545554504d4d4f52454b5b442b2b2f38363b +2b1a3952524a45365f5e5ff5b312512f00125f5a5353575c5e5b585f5d58 +524e4b4e515659574f4f5760625e5c5a5857575859585657524a4143484b +453d383d4446403d3c352f30322a1c181615120e0e0f0f0e0f0f0e0e0e0d +0c0f0e0d0f1112110d0d0c0e0d0d0e0d0e0f0f0f10121314131011100e0c +0c0d0d0c0c0c0a08070504080607070c0d1010110809080915201921272b +261b15181e191b21262521262f201f20211f1b1d23222b1b162b2b2a4523 +29342b120f14070d2324191a1d1c22140f0d0c0a0500000b180e19111e2c +646f000004000b1008090c0706090706121714110f0f0e0d0c0f54190710 +0c0e0d0a06171f100000000000231e21101315190e1c5f513b33226c4c50 +4c7d704630043e7593a49a72a9a3a1b43f2e291318292f52522b362f3b2c +23303c2c364239201e2a3d323c2d423c45394927ada7a5979fe4dcccdeab +25875f1a5b464f393d4e3441260e0c090910231626192f5a333e304d3e31 +2f2409ade2cbf04c47534e3f33112c2f25283b2f36344839454231262323 +282f33302d281f3b364035332411171b36554b474745494a2f1e1c2b2c2d +433b4931563115303b111f3d2950394f393b3c3e454145393c40496e9847 +34525da2c8ffc20d2a1c2131304c58371c2a0e191230349eedf0344b292a +1423161c15131a2021222432192322252318f9f7eef69c846e77776c6a6d +6a68666666605f6162656868676b676361616161615e5e5d5d5c5b5a595d +58686e5b5e6c65605d5b5c5e605f5f61646667676b68666565646260686a +6e6e6e6b6865666566666868696a6564626162636363636568696a6b6e70 +74716f6f73777d7e7877787a7d7b7976898a8c7b7c8a7a707f828883887b +69818b83726d608ca483ffe600362a143d98acb0b4b5b6b6babcc2c0bdba +b7b8bcbec4c4c1bcbcc2c7c9c7c6c4c3c3c3c4c5bdbdbdb9afa6a7adb1ad +a49d9ea3a19b95948f85837f6f5b56514a423b3736353030313231302e2e +313030313333312f2e2d2d2d2d2c2b2d2b2a29292b2c2b29282827252423 +222221212121201f1e1d1c1c1c1d1e1d1b17120a0a090a17211c1f262d2a +2320252b292f332d1f161c272625272927201e1f252f2322342714211611 +24301e151f1e132a31241a19222d130b0b11181713112b3048626fa1bbf8 +70120e0e0b0010080b100e0c0e0909150e0c10141b19111837813416160f +0e0e120b0e130d131f21230e141614111d0f11121a402d271f1721132b04 +1b18015219300a00000000140d102204112d21294552635e51491f482d18 +2527151d34282d1c303d112727140917201d001d08000923a2b6aac09d10 +9260073d182a2e151125131e212224231b2823292c143a202f201a140f3d +361176c0b2e58788bbc0b5a35e61564d55855442373f54444a2f36323230 +302e2d2d3939495162575e3f264235759cb6a7b6a8adb5a06a5b5f4e2a42 +4858262d18141b5028404b3b412d37273c403838343e42301c0c29532840 +5a75add5ff6d1835281c282a1e2432493a10262c435b75f6e73e434b3d3b +3d31291f1b1c21222326281d2421221e3ef4dfe5ffe0b6c7d3e6dededcd8 +d5d3d6d7d1d0cececfcfd1d5d9d4cec9ccced2d3cececececccac8c7cbc9 +d3d6c7c8d2d1d1d0cecdcd363535373a3c3d3d413e3c3b3b3a38363c3e41 +42413f3b393939393a3b3c3c3d39383635343535353234373837383b3d3e +3e3c3e40464c5047494a4e4f4f4d4a58595e4e5164574d5b5c5d55554630 +4b636355503f67795df7da003c2804186a8085898a8887888a8f8d888380 +7f83878f918e89898f949694939190909091928b8b8a867c7374797d7970 +69696e6c6864645f58555243322e2b251e1a171415141415161514121215 +1414151717151311100f0f111011121312111315161412110f0e0d0c0b0a +0a0c0c0e0e0f0e0d0c0d0d0d0e0f0f0d0b0701000203121b16192027241d +1a1f2523292d271910162224232527251e1c1e232e222133261320160f21 +2912060c0a00161e130a0d17250d0601080d0d0b0c282c4055588297d45a +05040909000d03010300000200021413110b0706080d0800400b00060509 +090c0506080308151819050a0b0b0b190c0b0d173c2a26201924162c051b +17004d143c3a3a3c3b3b88a2a69c501c1b131a313b4b483d3b144027121d +1c0810271b251b37461421130307181530219d93909b95d0c4b6cba4138f +62164c1b272b140f2516252a2d2b2618221b2126123d20271d2824113424 +0987d8bfd33f0f1c110d1806282e2d336d514c42464e39412d3a3b393735 +312d2a342f3d415041482f22380c2213150d22181b1b1100020c13153c3a +471a2a201e1e44050e1304150a1c090e0b040708131a1518163b5b152240 +63a4d1fd62001a11102b352927283c3911251709163dd4e53e261e0d0e17 +131514151a1f2221211e111a1c212349ffe9eafed19ca2a8b5acacaba7a2 +a09fa09d9c9c9e9fa1a5a9ada8a09b9a9c9e9f9a9a9a9a9a9896959b99a5 +a8999aa4a19f9c9a9999201d1f1f242427252b2626232522221e21212425 +24221e1c1c1c1c1d1e1f1f1e16131110101313131214171a1a1b1e202221 +1f2023262c2f272728292b2a282537383c2d2f40312737383b343627132f +4a4e454230576952f6e413523605084953525657545353555856524d4a4a +4e515958575052565d5d5b5a5857575758595050514d453c3f474d49413a +3d42423d3b3c3931333126161516130e0b0a0a0a06060708070604040706 +0607090907050302040405040407070807080a0b0c0a0b0a0a090a0b0a0a +0b0b0a0a08070504060606090c0c0d0b0b0408090b192520232a312e2724 +292f2d333731231a202929282a2c2a23212328332726382b1826201a2a30 +16090e0b0018221914192532170d0a0d110e090619131b21143039863300 +00050a05160a090a020006040a1c191512100f0e0c0b0f541907100d100f +0c0713180e0c0b070d00131c1c1716050b11204a3b3832262d1b2e071d1c +07541856829ea99a70a1a8a7a7602e2913132833494b4648224f35202c2c +1921382c32233f4d1d2b1f0d0a1c253e239e9a989896e7e1d0e1b724a06e +1b512230341c1a2f1f2d2f31312d212c262c321d462a3224282110393016 +91e2cfed6542564c41411f373938417a584e484e5c4a543b43403f3d3b38 +35333b38474c5c4e553923391a3c41494152494a4f3f211e2829244a4957 +26332320234e1927302130202d15191b1b24232e32344a54839c423c4b63 +a5d0ff6a0e2b231e343b2d2e3143350b211e21355aecf34a3a352322261f +1e1a191d22242627271b232329294dfff3f0fabe7b76737a6f6d706c6967 +676763605f606163666a6e69625d5d5f62635e5e5e5e5d5b59585d5b676a +5b5c666362605e5d5d595b5e5f60616466615f5d5d5e5f5e5d5f61666668 +6463606a686a686b6b6f706b68646262636363626261605e5d5f6164615f +5d5e5e61636766676a6c6c6b6966636a5c5b6661677f81847f88806e7d88 +87726e6384ab7effff002a23133688949ba1a19f9ea3abafafaeaca9acb0 +b2bfbdbbb9babdc0c2c2c2c2c1c1c1c0c0bebdbdbab2abacb2b1aea8a2a1 +a4a19a8e918c85817c6b59504d47403b3735323433343737333132323232 +333534312e2d282728272323252522212022232220212323232222222220 +212121211f1e1e1c1c1c1b1a171615080408090815221c1d242f3132333a +402930363127222a3328252628241c17162528201d2b2118212622314132 +1911131a262e210d0817261509060b100e0d1136344e687bb3dcf428140d +0e1600130a0e110f10150f14240c0b10151c1b0f17357d3012120c0d0c08 +09151a1310120c1f1e0c16120c190b070c112b26302215296b9d3b060201 +3c37491a070400000711100c140d3123263767696a987306373622363e3b +373919151e27442247832d02162d2700301a110919a0b6afc2a31883382a +7030201d3da24f051f100e27241e2123272f1c3e35abb127001130351c77 +b7bae3b888b8b8b7a05a4d45414e8a23203a32500e36312e2929323b403a +3332463e5a33222d2e294f358098b8a4aea2a4b0a7685b5d4a3a634f404d +8c5d010a462735332d281f180c252b29282339310804052b2e15425981b6 +ecff30243336241e4027544a4b3116313943695ef5e0773b583b433a322a +231f1e21222426242c2e281c1086f5dfe7f5fdb1c7cee1dededcd9d5d3d6 +d7d4d1cfcfcecccfd5dad4cecaccced1d2cececececccac9c8cbd1d2cfcd +cacbd2cecfcecece3032353637383b3d383634343536353535373a3c3c3a +37363e3e3e3e3f4143443f3d3935353636343333322e2c2b2d2f302f2d2b +2c2f323438393a3d3f41403e37343d3334423f455d5b59515549334a6368 +5551405b7c54f7f304312406145c68707475717074797c7a77726f6f7378 +8a8a8886878a8d8f8f8f8f8e8e8e8d8d8c8b8a877f78797f7d7a746e6c6f +6c675d615f57555142312a28231f1b1614141716171a1a16141515151516 +18171412110d0c0d0c0b0a0e0e0e0d0d0f100f0d0c0b0b0b0a0a0a0a0b0c +0c0e0e0e0d0d0d0d0d0e0c0c0a0b0000010403101c191a232c302f32373f +262f33302421273025232426221b1615242921212c25192226202e3a2609 +000004101a1000000b1e0d0400020504050a332e45596495b6d112080409 +140010050405000206040d2311100b0806070b04003c0700030206070203 +0d1108060a051715030e0a09190c04060c28242f21172c6f9f3d06020036 +2b4f49493f3b3f7da1a8906b191a1519234e4f54846500312e18292e2927 +2d110d1d2e4d25416f1c0017223940ada3a19e8fd0c4bbcaaa1b803a397f +331d1a3aa04f082619172c271b19191f291a4135a3ae37111527231188d2 +cbd7741418060c1302171d202a70212a453949033233353230373e403930 +2d3f3750291621272a4611320f170a1a121011150000070a235d3e2e3d84 +650c144512181210171d2a1f211d1c1d213b310e121b423706294473b0eb +fd230c161f18214b32573e403219291f0d261dc9df7b1e28061211141618 +191c1f2222211a2024231b1591ffedf0f4f098a5a3b3acacaba8a2a09fa0 +a09d9d9f9e9ea3a9aea8a09c9a9c9d9e9a9a9a9a9a9897969ba1a4a19f9c +9da29c9b9a9a9a1a1c1f202122252722201e1e1f201f1c1c1e212323211e +1d2525252526282a29221d19161617191819191815151416181a18161415 +15181a1c1c1b1e1e1f1e1e1b18201515201c2238373730362a152d495445 +412d496a46f6fd1a4b380d0a4345464a48403e4044454441403f40464856 +53514f5053565858565655555554545150514e4841444a4d4a453f404342 +3c353938333231241713151310100d0b0a0906070a0a0604050505050608 +070404060403040301030608070606090a09070709090b0a0a0a0a0a0b09 +0a080705050606060609080a0a0200080a0a172622232b3538383a40472f +373c382d2930372c28292b27201b1a292d252430281d27302b37412a0a00 +0006121c160707192b1a0b05070903020224141e221e3f557f0000000619 +05190c0c0903020b0a152b1716121112100c080c5015030a0a0e0d02071c +24190f0800141a14251f12110000081233323f312333729e3c0604054035 +719bb7b5a07897acad9c7c2f2c15101a474e578f72093f3b233339353239 +1c182536542e4b7b26031b324743afaba99a8fe6e1d5e1bd2c914640843a +262343ab59112e1e1c322e2424242a35254a3faeb5360d142c2f1f92dbdb +ef99455442413d1b252829367b262c4943591443403d37363d4548413934 +473f5932202b2e2c491d4c3d4d3e4c434247461f1f2424356b4e3e4a8f68 +0e164b212a272429282c1b1e1d262b2e473b24415788782f3f4b72b0e9ff +2c1a2831262a51365e48462d12272824453de4ed863440202723201f1e1d +1f22242727232a2d2a231b95fff8f9f0e079786e776f6d706d6967676866 +6160616060646a6f69625e5d5f61625e5e5e5e5d5b5a595d636663615e5f +645f5f5e5e5e5d5d5e606263636364626161636666686162656668666563 +6765666567686a6c6f6a65646465656569696968656363646663615f5e5d +5e5e5b59585a5c5b5a5b5f555a56545755647d7c7e7d8c87727c8b907674 +687aab7effff0e26211531787b7e828282858a9095969796979a9ea1aba7 +a5a5a8aaaeb0b2b3b4b5b4b2b0afb7b4b3b2ada8a9afa4a5a29e9e9f9b93 +868b89817d7a6d5f5553504c494543424643454a49444244444344454645 +413d39312e2e2b2423252522212122212020202122222424242322212121 +21201f1e1b1b1b1a18181e220f0e14120b121d1a1e242e3235363b3d3135 +3c3e404043442d28272927222020211f1d1d202331403d444a4e482e1c1c +1f212f311b0a131d1c1210110f0a111e37444d7193bff5b2140d0b0b0f01 +0e070d100f11150d10220a0910161d1a0e1437813214130c0e0d0f0b0f10 +0b111b190412151414050d101512142c2d3a2e312b627d3c00112c371b29 +030103000008130b0c150a3825253d6875708f7701274226363d453b4b45 +392e2936254487320f1c2e150028140a09159ab1b4c0a827725d00393231 +723a5a461a0e232917432e3236291e2833266e8e1e002336391bb5bab0c4 +d27ab7cad0ac6b534e433f642029706b96133a313c3732323739342e283d +427f510e04021f422f7fa4c0b1a6a3a0adac685d5f4b3b44304976824c05 +002f2823231813130b10272a2f261e423b0e1519442f2f546692c1fedf16 +2f3235251b282e806a28152232364f6f67d9dabd405c404139332a24201d +1f2122241a261f241100b8eae2e6e9ffbbc6d4dedcdcdad7d4d2d5d6d5d3 +d2d3d1cbcdd4d8d5d1cfd1d1d1d0cfcececdcbcbcbcacbdacfc9d6cfc6d7 +cdcececece3737383a3c3d3d3d3e3c3b3b3d40403f393a3b3e3e3e3b3b3d +3d3c3d3d40404245413c38383939373b3b3a38353333343332302f2e2e30 +302d2d2c2e3032312f3328302e2f3634435b58564f5a51374967745b5543 +507b53e4f71231260b144f4f53565756575a5e62615f5c5a5b5f64767472 +7275777b7d7f808182817f7d7c858281807a75767c70716e6a696a666055 +5b5c53514f44372f2e2c2a292725242624262b2a25232525242526272622 +201e181515120d0c11100f0e0f1012110e0d0c0d0c0b0b0b0a0a0c0c0e0e +0d0e0d0d0e0e0d0a0d121806080d0d060f1a171d242d3234363a3d30353b +3e3f4042432a26252726211f2122232122242835433d4247473c1e080707 +0b1b1e0a000715140d060804000917313e44627da1cf8f000001070e000b +0202040003060209210e0e0b0907060801003d0800020104070b06090802 +091513000c0d0e0f040f11120c0f292b392d332e667f3e0011292f0a2c32 +42383c4e7fa1a29a75161f1719274b59577e6b002742253137403c534d38 +2d303f283e731e0a1b212749a59d9aa08dcdc0bdc7af2a6f5f094b352e6c +3758461d152c321c44292b2c1f18273726668b3109272d250fc3d5c6bc92 +081918231f131f282219481b337b6f8d07373038312a2a2f312e28253c43 +8256160e0c283c0f331a1d1813130c0b1800020609243e1f34647851130e +3720151510172223201d161b1b204c4419232852301a385387bdfeda0917 +151e191f3539835e1d172526181e301da4d9c6232a080b0e1316191a1b1d +21201f101a151f1001c3f9f2f0e9fda2a3a9b0aaaaa9a6a19f9e9fa19fa0 +a3a19da1a8aca9a3a19f9f9d9c9b9a9a99999999989baaa19ba8a198a79b +9a9a9a9a2020212325262626272524242629292920212325262523222524 +24242527282a2c25201d1f20201f24242624211f1f2022211f1b1a1a1919 +15141113131413141a111714121715223834332d392f172a4f5f4a43303a +6543e2ff2b4d3c140c3b3230312d292629292b2b2c2c2d303638443f3d3d +4042464648494a4b484644434a474645413e414740413f3b3d3e3c352d33 +352f2e2f281e1a1c1e1e1e1d1d1a17121419181311131312131415141010 +15110e0e0d07060a0b090a0b0c0d0c0a090b0c0e0e0e0e0d0a0b090a0807 +06050405060507091217090a14130d182522252c353a3c3e4245383d4346 +47484a49312b2a2c2b26242526262425272b3848474d504e401f0906070d +1d241409152221140f0d0800060d21241b2934496a3b0000000813081409 +080803030b08112917141212130f0a070e5216030a070c0b0a0a171d1718 +191504182528230a0200090c153238473b3f35677c3b0013303a1c598eba +baab8d9fafa9a4852e32160d1c45585b887709314a2a3539443e55504035 +384631487f290e2032354ca7a5a29b8ce2dfdae1c23b806b104f3c377640 +6350241b313720493033372a222f403071922f042632311dceded4d3b739 +545659492c2c332b265421357f7a9e1b4a40463d37373a3c38322e444887 +5a19100d27401c4f4b564e474640444c20232624364c2f45728355140f3a +2b22241d2227231d1c1826292c554d2d52699d73454f5985bcfcde122527 +3027283b3d8a6823121e2620314b40c2e7cf3943232221201f1f1e1e2023 +252519241e261807c7fffffae9ef847976756d6b6e6b6868686767636365 +635f62696d6a6563626261605f5e5e5d5c5c5c5b5d6c635d6a635a695e5e +5e5e5e635f5f5f6564645f6561605e63626565616264636462615f6a6867 +65666668696b665f5c5f6161605f626667656463636160605f5e5d5f5e5f +5d5b5b5b5c5b5a68565b5b5b5852648684827f8e866870859176756e7ab2 +8bf7ff27332712235f686a6a6c6e7276788082838385888c8f938e8b8d90 +94999d9a9c9ea09f9d9a97a29e9c9b9995979b9093939192928d84818787 +7f797972675f605e5e5c5a59585957585e5d5755585a595a5b5c5a575347 +3c383731282428262322212322211f1e2020212120221f2220212221211f +1f1b1b1c19171e2b3424252b2315161d1b1e23282b2b2827263534323234 +31271d1f1b191b1c1c1e22191d2c33292b3c472639342d362d1e20151733 +4b412d272a0e08090a0402152d345d5484aec6fe6714090d0c07090e0c0c +0f0e0f10080a1b090910161c180d1440883615120c11110e090d0e090c0f +070d0e1201180d090f0f1a10070535434e3d1e27695134461c1f2c0c0f04 +00000013072014013624275753715c40572d425838392a1c00152a69242f +2829416143222627000027150c0b1493aab7c2af355a3c002733364b37eb +3c18231f2e1a3f261e2b2e1d2e2b2a6369540f21362f10ccb0b1c4f172a8 +bfc9a16b55563c2029261a5c519b0d443833352f272224303a3d35427b6a +00080931432f6fa4bcc2aeaea8b5b97167634f1938405157406ca900223e +31412518110b1825242e221241240c1d113c2536426b94c0ffb60f2d2c28 +12270e24575b0c002c3027566a73b7d1e54258463d433d2b272420212324 +251d22142d2100ebeae3dfe1ffc3c2dce0d9dad9d5d2d0d0d2d5d4d5d9d5 +cccdd3d8d6d4d6d6d4d1cecfcecdcccbcbcccccae0d0c6dfd5c7dcced0d0 +cfce3a3a363a3c3f3b3a3c3c37393a3d3c3c38393a3a3a393736403f3d3c +3c3d3e3f413c3532333534333235373836353434323131302f3030313230 +2f2f313331303e2c333636353141625e5a535c51323e60735956494f825d +d4f82539290a0a3a403e3f3f424547484d4e4d4c4b4c50555e5c595b5e62 +676b686a6c6d6c6a67646f6b6968666163695d60605e5f5f59535056574f +4b4c473e37373839393938373633343a3933313436353637383633302720 +1c1b160d0c0f0f0e0d0e0f100f0d0a0b0a0b0b0a09090a0b0c0d0e0e0e0e +0a0c0d0c0c131f2a1a1c221c10131c1a1b20252828272625343331313330 +261a1d1614161a1a1d21181e2d342a2c3d482536332b2c1d080800011d34 +2a191b2208050709030112292d52467298acdf4c0604090a06080b050304 +0203040000150c0c0b0b0807070001420d00070607080804070700040800 +08080d00140c09100b140c040334404c40212b694c2f44191633374a393b +496da09ba972162a1a183b34534331502c4357383a3026061c2f6c29362f +2e4157381c23231b50a49e9ca08acabebec4b03759400d3436334834e83a +182624331d3e21172126172d2e2b5a65601b212f250edecbc7c1bf0d0d0d +1c100d182a1b0012201e5f4f900242372b27211b181f2a35332e41807810 +1c193a3a0b231c1e2e2022161221000a0e110130323f45346bae02253927 +372221201e211a0f18171e5025081d174829242b6093befbad0017141304 +241127575407053122082321136bcdef2628110c181d1a1e1f1e1f222220 +161b0f2a2402f6f9f3ebe2fdada1b3b1a8a8a7a5a09d9d9da1a0a3a7a59e +9fa5aaa8a6a6a4a29d9a9b9a999899999a9a9ab0a098afa797ac9c9c9c9b +9a24202020262525202622211f2423262622232424242321202a29272626 +27282728231c191a1c1d1c1b1e232422212020201f1f1e1d1b1c1c1b1916 +161817181726161a1c1b191221403a3730392f0e1d455b4744373c6e4dd0 +ff3a533e17062a27211f1e1d1c1d1a1e1f212325282e2f322b282a2d3136 +38353739383735322f38343233312f31382e3333313434312a282e2f2927 +2b27221d21232626282926201b1c22211b191c1e1d1e1f201e1b1c181410 +100b04020809090a0a0e0e0d0b090a0c0d0d0c0c0b0a0a090a0a08070703 +05060608111f291b1f2723171c242224272c2f2f2d2c2b3a39373739362c +21221c1a1c1f1f22261d2231382e30414c2b3d382e2d1e0a080003203c34 +25272d140e0a0700000b1e1a3215304c5585050000080d0c0e140d080804 +050802081f13131213110f0905165a1b070d0a0f0d0a081317131310070f +1623122511000002161d170e3a4b5749282c67482c4924275f93c0b9a98e +92b4a5b37e2736191137315547385834485c3a3c3027082235712d3c3534 +495f40202a312654a6a8a49e8cded9dadbc446674b143a3f3c513df14520 +2d2a392244281f2c31213537305f665c172336301be8d4d4d4dc37464752 +3b282837240a1a2421665aa013504538342e272326343c3e364784790f1b +18393f173d4a515e4e4f45475222292b28113d3f4d513e71b1052a403042 +2b28231c1e1e18241f1e55392d5b6190664a3f6691bffcb209242422112f +182e5f5c0d002b2210343e398fdbf83c422b22292a22232521242727261e +2316312b08fafefff7e6f4967e857b6d696867656466676764666a676061 +676c6a68686765615e5f5e5d5c5c5c5d5d5c72625a7169596e5f60605f5e +5f5f61626463646367625e5b5d5e606161636663625f646469676a686b69 +6b6a6564646363626262606063646465656561636565625d5d5a5f5c595a +5c5c5956575657585a5c5e607e7c8d8081886d6184977e675b74ad8bcbff +5c27380e1a4a62625f62666a6c6c6d6d6e706e6d7786808285888a8b8b8a +929292929294989b959897948f8e92959694908d8985817e7e8589877f79 +78787976726f6e6c6a68736f6f706f6b6a6d6f6e6e707272716d675f574d +443a322d2626252526242323212020212323221f22212121212121211d21 +24211b181e26302d292b2b29221f2629282a29252324221d20262621242c +202627221f2225242525282b251f212a27281e21303028241c1c1e446534 +3f411608000000001236485c7596b5d0f10a0500030507090a0a0b0b0b0d +0e11120e0d090d121616101b3f882b0e091309140b0c0d0f0f0e0d0d0919 +160a090a160a13170d021001271e140d0c121f231b142714190902000004 +170e33161a1f10364d6c7255363230252c1e191d0e001634200f221f081e +05231d1d13080027140b14158cb5b5c5cc404a37030d16261b1926221425 +2f4a302d1b121d202f2d122b281f311930291e17c9a8b4bae565a9c7c1b4 +79575c441f25383c3b3c3c343244413627161e010f1928424c402d3d4b2f +373f4970aea9b3a1999facc3845d50412c1d485a454a585525465c658088 +653e595639314e47304b32371c27330b3d4461a0e0ff8b293857403a7186 +5f696f331e252f3f5a769d9efada70644842383b26212621282a191b1133 +151b1218f5dcdae0f8eaffbfb8e6dad8d9dbd8cfccccd7d1ced2d4d1cfd0 +d9dddcd5cfcfd0d0cbcccccecfd0d1d1cacfd3d5d8d9d9d6d4d3cec8c735 +37373a3a3b3a3b3d3a343333363637373939393535373a3c3d3d3e3e3f3e +403b3b3b3a3a3938383636373838393939343638383533303035322f3032 +322f2c2d2d2f303234373955546254535a3d3357705d4a3b507f5ca0f64c +20340404293c3835363a3e3f3f3f3c3d3f3b3a4454505356595b5c5a5961 +62625f5f616568606364615c5b5f646563605d5c5854514d5155534e4948 +4a4b4845444343413f4844444544403f424443434547474644403a322921 +19130d08090c0d0e0f0e0e0d0c0c0d0f0f0d0b0d0d0d0d0d0e0e0e080e12 +120d0d1218211e1c20262825201f1c1d1f1f1e1e1f201b1b211f1a1d251a +20211c191c1f1e1f202326201a1c241e2424282c220f0a06060325411632 +3c1008070b09091c373c495c7d9fbde20309090706050403030405050403 +0101010808080909090a00003e0501091300070507080a0a090808041410 +04040812070c10080011011c1315130e0e0f12141631283a383b39456ba3 +9da96b432d0b232e49533c2c2e2a1c1d142131260a07232a1f2723132c11 +2713161b354fa99d989f86cbcfb7bcc64051410d1416231a18231f13242e +492f2a180c171a2c2a11291f1631182523272be6c5c8becd1b1714162107 +05272308162d32302f2e2a31443a2a170a1d05101210283c3f3d535e3937 +2c1f212c142b1e161209280800081115123e4f3539484a1b3f5158707d63 +3f5a553324383d475e1b1103214821373869acdffb771324452e285c7452 +64723d2e2f241e2119142deae759391e18121d191f231f252716180e3216 +201a23ffebebecfbe4f9a394baa9a6a8aaa8a19d9da59f9ca0a2a19fa0a9 +adaca39d9d9e9e999a9a9c9d9e9f9f989da1a4a6a8a7a4a2a19c96951d1d +1f202221222125201c191b1c1e1f1f2122211e1d20222525262627272728 +221f1f1e1e1d1f1f1d1d1e1f1f2020201d212323201b19181d1a17181a19 +171417171617181a1a1a353140312f36170f36534a3c30426f4c97f45730 +450f062029201c1d1f2122201e1c1d1f1c1d27332a292c2f2f302f2e3634 +343232323639343737363130343b3c3b3835332f2d2a25292d2c26232426 +292624222123211f26222223221e1d202221212325252424232018110d06 +0100000105090c0c0d0d0c0b0b0c0e0e0c0a0c0c0c0c0c0a0a0a050a0e0f +0a0b1218242323282c2e2a242625252727252425252021272621242c1e24 +25201d2023222324272a241e2028212320212921130d09090a2d4d203942 +1c10020000001127221e192b4c6ea1000006080a0a0a0b0a0b090909090b +0b0a0e0d0e0e10100e0b115914080b15040e090b0e1111100e0c0a1b1a0e +0b0b1102041831281500202127231a0f02081b233b498ba2ac9e8d98bcab +b370452e1129344f59402d2d2c1f241c24322a131e362c1c2a26152c1128 +1b1e263b52aba7a2a48edce6cecfd44a594a161c202c201e2c281b2c3651 +3733211621243533192c1a0d29142b2d3034eecdd1c9db34444b4b4e291c +372c101b333a38393b35394c42342214230815191e3546443c505c3a3932 +2b37523e4f40363536522a191c1f1f1a46573f435250234659617a856841 +54533f35443c375c455a5e79874a51446cace4ff822030513a346b805c6b +773f2d2e282732364258f7ed6d54342c212922242a242c2e1d1f15381b24 +1d25fff0f5f8ffe4ef8d708b71676567686565656a625f63656361626b6f +6e66606061615e5f5f61626364645d6266696b6d6c6965645f59585f6061 +636464646462615f5f6161605e6264656361616365666667686969696964 +64636362626261626262636363636360626463615f5e5f65625e5d5c5b57 +5459585858595a5a5b7f7e8d8182896c5f869a8b69587aa892bfff8f2f36 +10223e5e5e5d5d616465666866686a6969727d75777b7e80818383838587 +87898a8c8f8d8f8f8d8a8b8f9592928f8c8885838282888b88837f818482 +7f7e7d7f7f7f7d7e7a7b7c7c78787a7f7d7f808383838179736d665d5347 +3d2e2b282523242423232120212223211f21212121212121212022231f1b +191f22211e1c1c1c18100f15191a1917151314171111161b18191c171919 +19191b1c1c11191d1915171a1d171b140d17282b1a161e1c42582a223315 +0c020000001b3c5c578aa9cbe89c05030106080d0e0e0e0a0a090a0d1013 +11100c0c0f1313111d3c87240a050e0a160d0b0d0e0e0e0d0c0e06060e0c +16070f06060e0500100a1c140d0a1120241a0f1311140c00000008170941 +00161523323e5e7b6e3a111123211d191400001b3b15121e1c0f0c170b27 +170000062f1914140f70a6bfc6ca5a382e08161a041a091613122b220f1d +351d181f1a161c181c1e1d2c1d281b0928deaeabb5e97eacbdbab0815960 +3e1c1e141b1e1b1b14111c10252f1e1a0a0316412c19180b031721163757 +84b1adaca09eadb1b58d6c543431302120303029282e262636402a182220 +2d1e1e3222041c2e35202b2c053b4b6b99d3ff50171c211820332b151a1c +0611232d32648da57ee6d69a31413f493b2b26232221242a261f1b152800 +4bf3e1eeeae0fdffb0e4c7dadadcdddad2d0d1d4cfcdd0d3d3d3d5dcdfde +d7d3d4d6d6cdcdcececfd0d0d1c8ccd0d3d5d6d5d3d2d2cec7c635363739 +3a3a3a3a3837353537373634353738363434363839393a3b3c3c3c3c3a3b +3a3a393939383939393a3a3a3a3936383a39373534353b38343332312d2a +302f30302f31313254536055565d4032566d684d3b5a7d6391f57a232e04 +0d2139353333373a3b393b3a3a3c3b3b434e474a4d515354535353565656 +5557585b585a5b5956575e646262625f5c595755515356544f4e4f52504f +4e5052535251504e4d504e4c4a4e51515154555755554e4a443f382f241c +0e0d0b090a0a0c0e0e0d0c0d0e0f0d0b0d0d0d0d0d0d0d0d080d0f100d0e +1114110e0d0f151715100a0a0b0c0c0c0d0e120c0b10120f0e130e101010 +10121313081014100c0e11120b161e19181c1200020a001c2c05122a0907 +090d0e132639493c6a8bb3d792040b090706030303030303040302000000 +070707090a0a0800003b0201091200070406080909090807090101090711 +020900010d070110001117140f0e0e1214172a323537383a3168a49bb147 +442819181f3d5a55300c07140a10242e1d0403221a1e18131015230f180b +0b286aac9e9d9f84bccbc4bbc45a433b11181801190813100f281f0c1a32 +1a151c17131915171614241218131743f9c6bcb9dd42200e161e0b01271f +0b15090e0a0a0e0d101d0b1b1e0e180b040c250c031319161c1f0b1c1e27 +29182b241b1b0c160b0a110c1c251c1b25211817211b1929311d121c1523 +1b16211b1c2c10080426451d384476a4ccef35000c150c10180f000d1f14 +252e271324240f01c7dd870f1b1a251f2125201f1e2127231e1c1a300556 +fff0fcf6e4f8f096c19daba8aaadaaa6a3a4a39d9b9ea1a1a1a3aaadaca5 +a1a2a4a49b9b9c9c9d9e9e9f969a9ea1a3a4a3a1a0a09c95941c1d1e2021 +2121211f1e1c1c1e1e1d1b1e20211f1d1d1f212222232425252525211f1e +1e1d1d1d1c1d1d1d1e1e1e1e201e2022211f1d1c1d23201c1b1a1915121a +1917171615151434313f323138190b32505541334f6d5384ef7f2f3d1012 +1d291f1d1d2122232224212222232129322523292a2c2d2d2b2b2c2e2d2d +2c3033303234322f30363c3c3c3b383532322e292b2e2d28262a2d2b2928 +292b2c2b2c2c29292b2a2726292d2c2d2f313231322c2a26221e17100900 +02030506090c0d0d0c0b0c0d0e0c0a0c0c0c0c0c0c0c0c080c0e0d0c0c11 +14141114161c1c1814101112131211111216100f14171414181315151515 +1718180d151915111316160d13160f131c1604040c0627390d152d170e02 +000000162629071d315d8f6100000b0b0b0b0b0b0b0a0a0a0a0a0a0a0a0c +0b0b0d0f0f0d0b0d5710060a13050e090a0c0d0d0d0c0b0d05050d0b1506 +090007372e0204031f282723170408202a3a55869fa39b7b9bc0aabc4b41 +242123274461582e0806171217262d1f0c1b381d1a1c18121421101f1514 +2c6aaea7a7a68dc9ddd7ccce6249411a24230a1e0d1a1918312815233b23 +1e25201c221e1d130f22162322224effd2c6c4e95b4f474b4b2e1a382711 +180f15151418151622112328181d0f0814331b0f1919141f2411252f424f +404a403a3f373f2d232215232b201f2b28201f282120303824161c0f222c +2b29150629445d6a807d3f4b4c78a6d4fb440d171f161b271e0c17241526 +302b1b35423f2bd7e59a27322c332b292b272625282e2a24211e330758ff +f3ffffedfceb87a5737569656568676c6d68605e61646464666d706f6864 +65676760606161626363645b5f63666869686663635f58575d5e5f616161 +61615c5d5f6163625f5c606161605f5f6163606162636465656563626262 +6261616164646464646363636263646361616365686562605e5c59575858 +5858585858587d808a82848a6f5c8397976b5685a19da4ffcf292f142834 +595959595b5d5e5f625f616466676c726c6e7275797a7b7b7d8083848585 +86898889888683868a908c8e8d8b86828284818586827f7f82857d7b7b7d +7f80807d807c7d7f807c7d7f807f808286878784827d79756f65574a3a34 +2d2621222323232120202222212021212121212121212321201d1c1c1c1d +1917151516110c09171e211f1c1a1a1b1d1816191e1e1f1f211c1c202120 +1f1f1521261f1c2328281f24201413313d1f13242040552a113119170e07 +0716324b69689dbfd7ff3e0d0b0b0f12151515120d0c0a0a0c0e1111100c +0c0d1213111c38852008040d0c150c0a0c0d0e0d0c0b0f0c141a09170317 +0e151a0307803821110a0a101c1f160b231c06060208000010073c000a1c +2f2b476b7f63351e19172c25171105000e14152725282a2360271f1c1408 +371e071605055ea2c9afb67d252d100c140b4d24301e1c1d062353232015 +11212525240c1f262928291b0767cab4c4c7e2829abcb4a8855560351e1a +171f201c211f16162723241d211c04211f2522201c131727284f6b98b0ac +958f96acb7b5a065462f351f172c1d1533231f2f3d48493520232630211e +30240c1e2528182a2808405f87b2ecff261f251821423e2a2c24151b0d19 +2a2f70929f77bbdde0335f3f432524282732231c2f1529131e2300bef5df +d7e3e9f9ffcccad3dedcdcdddad2d0d2d6d1ced0d1d0d1d4d8dbd9d3d0d3 +d5d5cfcfcfcfcfcfcfcfc8caced3d4d4d2d2d2d3cfc9c735363739393939 +39343537393b3a37343637373635353739363738393a3b3b3b3938383838 +3737373a3a3a3a3a39393938393a393737393b3e3b383634322f2d2f2f30 +302e2f2f2f52555d56585e432f536b764f3964766f78f5ba1e2708131735 +3330303234353538353438393b3e453f4246494b4c4d4e4d505354545455 +55535452504f52595f5c5e605e59565657505152504d4d50554c4d4d5052 +555352535150545351505453545357595c5a595754504e4a4134291a1610 +0a08080b0e0e0d0c0c0e0e0d0c0d0d0d0d0d0d0d0d0b0c0c0e0e0e0e0f09 +0706080c0f0d080c0e1112111013161813111417171515171515191a1918 +180e1a1f18151c211f101b2b21152728080311031825010021010104070d +1c2e3c4f45789cbdee310508060403010101030203040403010000070707 +08090a0800003c0000080e010603050708090807060a070f150412001309 +14210c1082301b1a17110e0d1014183d4132393e4a295da1a0b02d2e211b +0b294d614a2a160d071516212c281601000f1e09081314551b080c233b95 +95829b998bb6d3dbaeb682303a170c0e044b222d1b191a032050201d120e +1e222221091920231d160c0c77dac1cbc5d4461213171c15012b170f110e +140f0c151a1719261c0e051112001403060e1921170a1112261d24191115 +170a110d12150003092219152c1b102d1d192b373f402f1e1f19241f1b23 +1d1d2a0d0811353f18374f86b0d8f507071a131f382a1012100e201c2728 +1027251a078ed1cf1c3c1a230e1a25222d1e172a122814212803c9ffeee5 +ededf4fbb2a8a9afacabacaaa6a3a5a59f9c9e9f9e9fa2a6a9a7a19ea1a3 +a39d9d9d9d9d9d9d9d96989ca1a2a2a0a0a0a19d97951c1d1e2020202020 +1b1c1e2022211e1b1e1f1f1e1d1d1f211e1f202122232323201f1f1f1f1e +1e1e2121212121202020202122211f1f21232623201e1c1a171519191717 +1513131132333c3333391c082f4e6343315b665f6df1c12c36141813251e +1c1c1e1e1f1f221d1d1f222226281e1d23242728292727282d2c2c2b2d2d +2b2c2c2a282b313734363735322f2f30282a2b2b28282d312b2b2c2f3133 +3230322f2f32322f2f3232323235383a393737363231302920180d0c0806 +04070b0d0d0c0b0b0d0d0c0b0c0c0c0c0c0c0c0c0b0b0b0b0d0d0e0f0c0a +0d0f1414110d14181b1b19181a1c1e19171a1e1e1d1d1f1c1c2021201f1f +1521261f1c232824151c251812282d0e0413082131090024110e0300010e +22272a0b274268aa0700030a0a0a0a0a0a0a08080808080808080c0b0b0c +0e0f0d0c0a570c040910070d08090b0c0d0c0b0a0e0b1319081602120312 +331d0f7d3b2923272e2612132a385e758ba6acab7591beb0bd332c1b1c10 +2b4f634d28130d0a1d1b202521130b0a132115151d19591f1016283c9493 +89a29b8ec0e1e9bcc088364021181a0c4e25342422230c295929261b1727 +2b2b2a12232a2f2d2a231f87ead2dedaeb6c50564e49391b3d211414131a +19161f211c1e2b231a121b1a041d11151920241a131d1e363749463d3633 +2d393c413c181414281d182e1e1431211b2c394243311f1c13242d2c2a17 +0b2a415b6e8775394c5a8cb5e3ff161422192440351d1f1b15241f282b18 +3b44452da3dfe130522c3018222c2934251e31192e19262c05cbfff1f0f9 +f6f8f8a58d81796c666768676c6e6a625f6162616265696c6a6461646666 +62626262626262625b5d6166676765656364605a585b5c5d5e5e5e5e5e5a +5b5d616363605d61616160606062635e5f61636464636361616161616060 +60666565646463636262626261606265686665646261605e5d565657595b +5b5b5c79818883878b74597d929d694f8895a88dfffe172818212e535555 +55555657595c59585c61646466686b6e7174787979797f84868686868687 +8886828082858a878a8c87807c7d80797b7b7976757777706f6e7070706f +6d726f70737471717572727376797b7b797974706e6d66584e453f372f27 +24232124211f2021222120212121212121212123211e1e1e1d1a17181717 +1617140f0e131b1f1c1817191a191a19181a1c1f1c1d1c1e201e1a1a1d1a +2226232023292d222124180d293b1e12212836633b16391f1f150c112742 +546986a8cce2e50d0e0e0f1215161615120d0a07070b0c0f10100d090b12 +13111c37871c0706090d110a0a0c0d0d0d0c0b050f100d050d0c0e130e08 +0016a54f1b0e090b0f1a1c150c271f080600070000080d3500002a2d2e5b +626f68421c111d211d0c000000070e162b252a283e8443241e1800500000 +27060d5193af56565a102f240810447e3b191b242a1e3e4a30010f0e2a34 +1820241c2b242d2a2011b1dfbbbbbadb9f90adb3a69157603021161a2424 +212a2a201a231f3232151018992331311f1d29538e27547eb1b6b09bc2a5 +adafada86d85b71f43231c211e2e12223a3e302d2d26253936211b2e2b19 +1d211a112a2917486b8cc8fff91521261c193c3c303b311c231a1a2f3f7c +859c9e90dbdd374c2d4d4c2028273b262048272a1b272300ddefecf4e9e3 +f9ffe4cadbdedcdad9d4cecccfdad5d1d1cfcccdd0d6d7d5cfcdd0d2d0cf +cfcececdcdcccccbcccfd5d6d4d2d3d4d6d3ccc832343436353635363133 +34393a3b37353737373636363839343537393a3a39393737373737363636 +3c3b3b3a3a3939383838383736383b3e3c3b3a38373634332d2d2f313132 +32334e565b575b5f482d4f667c4e346a6b7a61f6eb0c210e0e1232302f2f +2f30313033302f32373a3a3a3d3e4144474a4b4b4b4f5456565454555353 +504c4c4e5459565a5c5a534f505347494949464446494142424447474543 +4946474a4b48484c49494a4d50525250504d48494943372f28231c130e0a +0b0c0f0d0b0c0d0e0d0c0d0d0d0d0d0d0d0d0e0c0a0c0e0f0c0909080809 +0d0d0d09080e12110e10141514151413131515151615171917131316131b +1f1c191c222313182f2711232b0b06110b0d2f0c001e000000010c233640 +4d6585abc8d1000506040302010101030406070706060403070707090908 +080000410001070a02040405070808080706000a0b08000807080b0d1204 +1ca446191c1a110e0e11151942483e45434a375b9faaaa341922110c3c44 +4f5037170d17161d25272620120a16240b0c112d78340a0f212ca26764a4 +a09fb7d1cb605d611d3a2806083a7939161a21291b3d472f000e0b293117 +1d221c2b2225170f10b9e7c1bcb5cd670b08151a1f032b121512141b1410 +181d16152218181200000d8e0d1921181c22346c0b231a2813142854190b +040b1b0146960b381d171c19290c192f2f211e1e1a17212216121d1d1d20 +100d20413917365782bde9d900091f1d1e3b2f1a231b0f1e1b1924172618 +2e435ec6d931310c313816252236211b4322271a282606e7faf9fff3e7f4 +fbcda8b4b0aca9aaa7a29fa2a9a39f9f9d9a9b9ea4a5a39d9b9ea09e9d9d +9c9c9b9b9a9a999a9da3a4a2a0a1a2a4a19a961c1b1e1d1f1d1f1d1b1a1e +202422211c1f1f1f1e1e1e20211c1d1f21222221211f1e1f1e1f1d1e1d24 +222321222021202020201f1e202326242322201f1e1c1b17171618181616 +152e343a34363a21062d496b432b605d6a56f1f11a3119120e231d1c1c1c +1b1c1c1f1a191c212222211d1d202326282929272b3032302f2f2d2c2b2a +2625272c312e3234312c28292c2224242522232628232525292b2b2c2a2d +282b2c2f2a2c2e2d2b2e2f3434363434302e2e312d241d1a18150f0a090b +0b0e0c0a0b0c0d0c0b0c0c0c0c0c0c0c0c0d0b090a0e0e0c090c0b0f1015 +14120f10171b1916171a1b1a1b1a191a1c1d1c1d1c1e201e1a1a1d1a2226 +232023292b1a1d2b2210252e0f061210153b1600230e0f0500061828251d +202b4c7492000004080a080a080a08090709070a080a0a0c0b0a0c0e0e0d +0c0c5b0a05090c080b08090b0c0c0c0b0a040e0f0c040c0b0a080911041c +a957271d2233301a192d3c6d88a0b7b6b28791bcb9b43a161f100b3a4250 +5035140e1b1c1f1f19140f0c09182b18181b337a371316262da06667a89e +9ebcdcd76a65672340331113437d3c1d222a3124455037071614313a1f26 +2d28372f342b221ec6f4d1cec9e48e4c4d4f47431d3d1c191318201e1a24 +271f1c271f25210a09159619262b1f2129437c19383e5648434971403a38 +3c4621599f143e211b201d2d0e1c33342421211c1621242623231a0f2544 +5c738d6d3b4c628ac5f6e8041626212140382630271824201f2a223f3851 +6477d9e83f441d3d411f2c293d28224a292e202d2b09e9fcfffffff0f8f8 +bf8d8d7c6e66646463666b6e666262605d5e61676866605e616361626261 +6160605f5f5e5f6268696765666567645d5957575859595959585a59595a +5d5f5e5d60605f5f606162625e5f6163636261605f5f5f5f5f6060606464 +6463626261616060605f5e6165696666656462606060595a5b5c5e5d5d5c +74838683878a7a5b798c98694c8689ad7fffff091f19172c4e5253525252 +5355555352565b605f5d6566696c6f73757674787d7f7f81818386868482 +80838789878a8c87807b7b7e727374706c67646263605f616363605f615e +5f6363616265656566686c6e6d6c6a646160625f57514c48413a30292520 +24211f1f21222221212121212121212123201d1d1e1e1915141213141413 +110f131a1e1917181915141b1d17161a1e1d181d211f1a1a1d201e1e2123 +1f1b202c211c211c0d20352211142d266d5325372821140e17314a5a6690 +b5d3fd8008090a0c0e1011110e0a0804010203070a0d100f08080e13111c +398b1b0909070f0f0a0b0c0d0e0d0c0b1211030918091b0d160600001551 +281e0d090d12191c1611152811090000020002053c000f292c343e688367 +37191009130000276b8056150718151a073c5f31271e1f17901402320000 +358ebd49538e0d25301e1f706e2c1f26171d264559c9f0c03b092c271f1c +0f20162326231ce7fcdccfbcccb488b8b6ad9c5f5f2d2316141d1e202b2d +261f231c363718192db238211f1e1b1f58c1205aa3daceab8dd6adb4afad +ac7594d21c2b36331d71aa232f373536383131403b3d35313b3727201e0d +09282d2e506e97ddffb71f251c120c161a171e241f1f2f313e5286848c9d +57dbc9643c3f7178232c23332634705b241f2732137885f7d6e8e4ff904b +c8dbdbd7d7d8d4cfcfd2d9d5d2d2cfcbcbcfd9dad7d2d0d2d1cecececdcd +cccbcbcacdcbcfd5d6d2d0d2d7d9d7cfc931313233333333323433333437 +3938373838373738393a3a3637393b3b3a393835353535353636363a3a3a +39383837373636363534373b3f3c3c3b3a38363636303133343434343349 +5859575b5e4e2f4b63794e31685f8255f5f8011b1104132e2f2e2d2d2d2e +2f2f2d2c2d32373633393a3e4144464849474a4f515150515152504e4c4c +4f535856595b57504b4b4e424344423e3a3736373637383a3a3a39383636 +3b3a39393d3c3d3d4043464444423f3c3c3e3c36312e2c261e17110d0b0f +0d0b0b0d0e0e0d0d0d0d0d0d0d0d0d0e0b090b0e0e0b0705060607090907 +05060d110d0d11141211181a141115171611181c1a1515181b19191c1e1a +161b2211122b2c161e291309081000351b0017040100000e293d484e7699 +bbeb7401050503020100010204080a0c0d0c0c0a09070608080808080000 +4b00040907040204060708090807060d0c0004130416070a00050b164b1e +1b1c1b120e0f13171b2b4f5158483e46559ea6ab3519150f141f49614d2d +1d1a1721192f71c0cf8835202718190b42642d140f1f34d0685da6999ca6 +d7e35b60991a2f321815666a2a1e26151d244557c9eec039092a271d1c14 +251a2117141cedffddceb7c07f0c1813162204250f181412160e080f0e07 +091e121710000323ab2b141517160f319604242b3d22132c7925140b1120 +0d5fb80213222210669f1418191413150e0e1b10171a1a1c1b1a1a15142a +492d1937568aceef9500101a1c1b20150a0a10121217121c1921183c6227 +c4d7772e275d6b1c261b2b1e2c68551e1c2632187f8cffe3f2e8fd8233a6 +b3ada9a7a9a7a3a2a5a8a3a0a09d99999da7a8a5a09ea09f9c9c9c9b9b9a +9999989b999da3a4a09ea0a5a7a59d971c1a1d1c1e1c1e1b1f1c1e1d2222 +23201f1f1e1e1f2021211d1e20222221201f1d1d1f1d1f1e201e24222421 +2220211f1e1e1e1d1c1f232724242322201e1e1e1a1b1a1b1b1818152936 +383436392708294567432a5e517249f0ff0e2a1e0a0f211c1c1b1b1a1b1c +1c1817191e21201b1e1d1e212427292826292d2f2f2f2d2e2b2a28262528 +2c302e31332f282323281c1f20201d1b1a191c1d1e2226262724221d2022 +24202324262427272d2d2e2b292422242828252223211f1a130f0d0a0e0c +0a0a0c0d0d0c0c0c0c0c0c0c0c0c0d0a08090e0e0b0708080d0e11110f0d +10171b1716191b19181f211b181c1f1e191f23211c1c1f2220202325211d +222b1c1b2c2b15212d16070814054226031c12100300091e2a2210223657 +993a000002040604060406040806080709080a0a0c0b0a0a0c0e0d0c1163 +0b080b090a09080a0b0c0d0c0b0a1110020817081a0b0e0000011a59362c +171b32331a182b3e5d9abbd1c1ac9b8fb7aeb238181411151c44604e2c1c +1b1a2418225aa1b06f261c2a1f1f0c40602c1a162738d06860a69699aade +ec65689f22383e241e6e6b2d243020272f4f62d3f9ca4413353128241829 +1d261e1b1eedffe1d4becc9b42564c494b233b1b1e17171d18151e1e1716 +241a2622080f2bb2341d1d1e1c1943a9133c58745c444b944d443e414d2e +71c30d202d2c176ca31920211d1a1c15152217222d2c241a14264a5c778e +63404d6393d5fba30c191d1b181f19111319191b25222a2a3f3855783fd8 +e07e3f376872243026362937735f28252e3a1e8592ffecfcf1ff7f278d8f +7c6e65656464696c6d666363605c5c606a6b68636163625f616160605f5e +5e5d605e626869656365686a68605a56555757585657555a575656595b5d +5d5e5e5d5e606262615f61636463615f5d5d5e5e5e5e5f5f5f6161616060 +6060605e5f5f5e5e60646767686765615e5d5e5f606060605d5b596e8585 +8386888161758b906f50807daf7effff1c12191429484c4e4e4d4f50524f +504e4e545959575e5f6366686b6d6f72747679797a7d817f80808183878a +8d898b8c88827d7c7d7070706c6760595453504d4d50535252504e4e5252 +50505352515254585958575a5855545553524f4746423b342d272125211f +1e20222222212121212121212122201e20211e191610101314141313101b +20211b1a1f1d16141d1e16141e201b1620251a1a212722212125211f1c23 +2a1c1c1e170d1c302b131230256b703332291b0f0f1e364e5d6f8ac3e0fc +1a08090c0e11131413100c08040404060a0d11121007070e12111b398e18 +0c0a06110d0b0c0d0f0f0e0d0d16120c16100306121a16090219362a160a +070e13181a1916215b0a0904000000000046001e14292d49616c51260b05 +0406000000000000000007111500373a2124252c2aa40400411608217cb1 +212b80211c282a30725030101d272827686a57608352222d281c2215201a +232a2b27f7f3eef8e0d7ca7ab6b1ab9d67562f281c1e25292c3432323828 +192a29222d26502c1b2926252d3a6f3864b6ececac5a859bb0adaca16c57 +572d433729264e641e385053484b4f4c49414b4d47423c382e1705072c35 +485c6fa5e1ff6f393820131a151e25252f322b384243638f9374723ddccf +9f2c48695b1e2a28302a3b65581a2d2225223942eaefece1fb7557c8d1d6 +d6d6dcdad7d6d9d2d1d1d2d0cccdd2d6d7d5d1d1d2cec8cececdcdcccbcb +cbcdc9cdd5d5ceccd0d4d8d8d0ca30313133323231313433303233373737 +38363536383a3a3937393b3c3b3937353334343434353535373737363636 +36363435353434363a3d3d3e3d3b373433343637383836343230435a5857 +5a5c5535476271573763568454e4f9140e1103102a2b2d2d2c2b2c2f2c2b +29292e33332e3435373a3c3f41424547494a4a4b4f504b4a4a4b4f535659 +585a5b57524d4c4d4242423f3a342d2a292727282b2d2e2e2b29292d2d2b +2b2e2d2c2d2f3334333236343131323232322b2927221c150f0c100d0b0a +0c0e0e0e0d0d0d0d0d0d0d0d0d0b0a0c0f0e0b0804060607070603030e14 +1511121a1a15131c1d1311191a16101d1f17141e211f1b1e1f1e19191d22 +0b112729171d2a200f0816002f34040e09010003163045515d77b0cef113 +0505030201000000010307090a0a0b0a0908060507080807080100530107 +0a0406020507080a0a090808110d07110b000109080b120e162a1f141a1b +130f10151b1f338052635d4d473f9e98b3201f0012142e434a3922191e22 +242321232e34291a191e222719504d2a1b192f43db5255b5b2a492c9d935 +3a8d2e25282424694e32101d272827686a57608352222d281c251b292325 +21252dfffcf2f9decd9b021b0f17230a1b0d1916171a1310120b08161705 +00000017214f25101e1b1b1913451d2c32423e1e0e3d1c1610181e0d2e46 +1324180f1541550712201d0f13150e09000a15110507151f171833491e1b +3a589ad4e44b151e1a19241e1c18141e271b16171824282c37470bbfe2bb +26335c511724202822335d5012271f24253e47f3fcf6e5f66741a8abaaa7 +a9acada9a9aca19f9fa09e9a9ba0a4a5a39f9fa09c969c9c9b9b9a999999 +9b979ba3a39c9a9ea2a6a69e981b1b1c1d1d1c1c1b1f1d1b1c1e21222221 +1d1c1d1f2121201e20222322201e1c1d1e1e1e1e1f1f1f21212120202020 +201c1d1d1c1c1e2225252625231f1c1b1c20211f1f1d1816122338373435 +372e0e25445f4b305b477448dfff231d1e090c1f1a1e1c1b1b1c1c191817 +161b1e201a1c1c1c1f21242425282a2a2c2c2d2e2f26242425282c2f3230 +32332f2a2524251e20201e1b171212131314161b2022201916171a1b1819 +1b1b191b1c2121211f1e1c1b1b1e1f23242021201d1a130f0b0f0c0a090b +0d0d0d0c0c0c0c0c0c0c0c0c0a090b0f0e0b0806070d0e100f0d0c181e21 +1a1d21231b1b22251a1a20241d1a24291e1e252b26252529252320272d1b +1f2c2b19212e240e0719013b3e0a12140c02031322281f11184768a10000 +02040404040404040405050606070808090a0b090a0c0d0d0c14690b0b0c +070c08090b0c0e0e0d0c0c15110b150f02050e14130d0a1f3e3d29171a33 +321b19283e65cebededbbd9f79b49ab6212100181827394839231a232a2e +271c15161c160e1b26292b164c49292023384ade5253b2aea196cfe33e41 +93362e34302e6e4f3118273132317274616a8d5c2c3732262c1b26202424 +272bfffbf3fde3d5af2f5448494c29311b201a1e221f1e231e1c27211012 +0e0e2327542c182623232425592e4764807d5028554548454a4a2f3e4e20 +33271c1f485a0f1d2e2b1e20231d190e1e322b150f1b324d5d7a8b564652 +62a0dbf05923291e19231d1f1f1c262d25272b2937464a495824d5e9bf34 +4265591f2e2b332d3e685b1d31282c2c444dfaffffeefc663691877b6f68 +6a6c6b707366626263615d5e636768666262635f59616160605f5e5e5e60 +5c606868615f63656969615b565657575856565558555454575859585b59 +57595c5e5e5c5e5f6162605e5a5a5c5c5d5d5e5e5e5f5d5d5d5d5e5e5e5e +5e5f5f5f5f60636664666664605d5e5f61616261615e5b59688684838486 +8767718c877d5e7d78ac83e4ff4c0316212142484a4b4a4b4c4f4a4e4d4a +4d5456535a5a5c5e606365687070707071747a7f797b7c7f838688898989 +888684817f7d74716e68635b544e45413d3c3c3e3f3f403d3d40413e3e41 +3d3c3d3f4142414047484945434143443c3b3935302c282325221f1e2021 +222221212121212121211f1f212122201b161111141517171918191b1912 +151b170b1218140c101e1b0d15201d0b0f21231013242714111f251f1223 +1b040014272710173032598d3c30230e040f25374c5e7896cbeea907050c +1116191b1b1b19150f0c0c0d1115181a1a1306040d12121b358c150a0c06 +130e0d0d0e1010100f0e08090e0e0325030a121e0a001e5f400004030e11 +151718192aad0001040500000e004a00170e1f1c494e8acea93700001014 +09000000000300030d0b0c28312420201d0f770000511c19359ac62236a5 +282023283e5c4c3a241f192138435a000000090f26372e2e2b2e2d232c28 +1be1f1e4f0eefeff7f9da3a393694c352d2524292e34392f3750201f3930 +1f1f3037302639211d403a3c3a65bce3fbb84b55a2ada0ae9b784e363931 +444c3848583e45655e3f3a4a514e585f6664605946291102133845666d75 +a5d7f13933342014141b2428302e2827363d3f7e9d995d5f57bec9ad102a +483c22343d3a3a41453b253d2c24374740e3d5e3f5ed6174c7d7d8d8dade +dedad7dacecfd2d4d2cdcdd1d1d3d3d2d3d3cec6cfcfcfcecececececfca +cdd6d6cecbd0cdd3d4cec9313332343333313233322f3132353434353432 +3437393937393a3c3d3b3935323231323233333334323232323333333434 +3535353536393c3a3c3c3a3633343538383a39373532303d5b5757585a5b +3b43636a65456051825bc5f944000e100926282a2b2a2a2b2e292b292728 +2f312e3132323436393b3c4444444244474d504747484b4f525455585857 +5553504e4d4644413d37312c281f1c19171a1c1e1e1e1c1b1f1f1d1c201b +1b1b1e1f211f1f2425262422212326201e1e1c1814100e100e0b0a0c0d0e +0e0d0d0d0d0d0d0d0d0b0b0c0d0e0e0b0a0708090a070603040b110e0a0f +18150b1218140b0e1b180a121f1a0a0c20200f102324130e1e2217011825 +150b1925220f0f16071b4e090c0f03000f263a4d5a738dc1e6a304050702 +0000000000000101020403030202010304070807070701005700080a010a +030708090b0b0b0a090304090900200000000c0f0017513400181a131114 +181f2335cd4c656861495fb1a7b8151800141237346dbaad4e1b2b393f3e +2f190d05070a1420262e4c50382320272db4274ed0b6ab9ee0ea3443af32 +26212034564e4027211b233a455c0000000b11283930313038382b2d2c2f +fcfff2f9f1f9de0b060f1b200e0c0a131413130f1210040a250000000000 +0b313c2916230b0d2c1b1d252d313250351524321d0d242223342f1e0f1f +2d273b49231221100000000000000004020000090c131f3e4a0f1d4361a3 +d3d713070e0909121919191d1f1f1c1b1a18433c3b28361b92cfc00a1a3e +351d2e353230373b311b352621374a43eae2edf9e8535da8b3adabacb1b1 +acaaac9d9da0a2a09b9b9f9fa1a1a0a1a19c949d9d9d9c9c9c9c9c9d989b +a4a49c999e9ba1a29c971e1f1f20201f1e1e201e1c1d1f21211e1e1a181a +1d1f1f1d1f202223211f1b191c1e1f1f202020211f1f1f1f2020201e1c1d +1d1d1d1e2124222424221e1b1c1d222221201e1916121d39363433353414 +214558593e5842724fc0ff530e1b16071b191d1c1b1b1c1d18181914161c +1f1b1b191a1c1d20222329292928272a3032242223262a2d2f3030302f2d +2a2725252223201d1c1813130c0c0b0e11131715120d0f10130e10110f0c +0f0f1312130e100f12111112161b151617171612100d0f0d0a090b0c0d0d +0c0c0c0c0c0c0c0c0a0a0b0c0f0e0c0a08090f1011100f10181c1c151b21 +20131c201e13192423131d27251217282b171b2b2f1b19262d2413292e1c +111f2a260d0d190e26570e0e1107010d1e25251b182452815900000d0503 +03030303030301010202030405070b0b09090b0d0d0c136b090b0d050f09 +0b0c0d0f0f0f0e0d07080d0d022402070f222313296a5a1c1f20312d1c1a +293c63ffb4dde4d09f96c2a4b7151c02221a2d2767bbb056263b4d524c37 +1b100c131c262e2d2d484b372c2c3337b52145c5aeaaa2e8f6404cb83c32 +2e2d3d5a4b3e2e2d272f4651680b0b0b171d34453c382c30342d323536ff +fffbfff8ffef3239414b492f261d201e1d1f1e2222171e380c07160d0816 +353f30202f1717372a2d344a687692672c395a5041554d4441362d20313c +31424e2c21362604000d0c07121d2d2915141b2a4c65838c4d4b5b6aa6d4 +e020161b110d131a1d1e232422222c2e2a575b56384637addbc71827463c +2438403d3b42463c2640302a3f514af2eaf6ffee5355949382746e70706e +6f7162606365635e5e626264646364645f576262626161616161625d6069 +69615e635e64655f5a57575858585756565554535456575654595755565a +5c5c5a5e5f61615f5c58555b5c5c5d5d5e5e5e5a5a5b5b5c5d5d5d5e5f61 +61606163655e616362605f61645d5e606161605d5c6587848383848a6b6f +8e8489697c76a98accff7601132f193d43464748484a4d484c4b48495154 +5257575a5b5d5f626369686866676c747a79797c7c8181827f8584828283 +827f7c77716b635e58524e443f373231313132322f3132342f3132333032 +323635353434383b38332f313331302d2d2a29282525221f1e1f21222221 +212121212121211d1f222423211c180f0f111516191d1c21201c161a221c +0d25241e1520322a152a33281018302c0e14343716133037231f402f0605 +2235330515273b449c3b2e1b0300142c3d4e6082b3cbfc45160411121619 +1a1d1d1c1910101012171b2020201305020b11121b31870f0a0e09160e0e +0e0f1111100f0f171110090a9e2a1213120000267139000000070b0a0c10 +1604df03020001074c261c4900051918183d697649110000004259655020 +000000000000000507271f030c1e33ac0000502a365ec1d11128a611282e +294b48472411241a83ef3f70c64c0000171923242c3836341b1f1100b1e4 +e3f1f4faff90c3a8ae99714736292323283140484154797c4f494033233e +31311a41423747363d3e82e6e9f1ab4f5eabb0b0deb881452c224e4a2d4d +6b432e445e7a949b8d90a99fa1b4c3c8b47c370c06244c587f7b7cb8e6ff +3b31362c282a3b342e3b362c3d332e3598a79051735f90dde2433b4a433b +4a5242465045443e413f464b4b3efbe6efe9ff4972ffc7dcdbdde0ded7d2 +d4d0d1d4d6d2cbcacdd2d5d7d7dadbd5ccd0d0d0d0d0d0d0d0d2cdd0d9d9 +d0cdd3c6cdd0ccc834343535353433333231303133343331333230313537 +3735393a3c3c3a37333030313132323333332f2f30303132323334353737 +3637393b343739383635373a34353839373734333a5c575757585e3f4165 +687150604f7f62adf96e000b1e012226292a28282a2d272b2a24252e312f +31313132343638393f3e3b3a3b40464d4747474a4c4f4d4d535351515251 +4e4c4946403a34302c291f1b151110121213141110141311101412121114 +1517141413171a19131213171415141412111010110e0b0a0b0d0e0e0d0d +0d0d0d0d0d0d090b0d0f0d0d0c0c06090b0a060301011318141016201c10 +25271e15203028132833261016302a0e123435161130351d103439191229 +343107100e10065d060a10030219324250607eacc3f33d10000903020000 +00000000000000000000000000020608060607010058000809000d050809 +0a0c0c0b0a0a120c0b040599250800040d07266b380718191513171c2226 +10ff526754574caccecabf250b0b1717294c57391e26414e92a9bca77239 +1208101b1f1d37384f3d15193153e14452bbafb6b8f9ed1d32af1b2e2a21 +4446502f16281c87f14372ca4e00021b1b27262f393a3f2727221ed8fffc +fffaf9ee1d290614170b01091116161411130c00052830000000000b3d32 +20001415172d1e2729455534462f233c45261f5543322f270727200b3c60 +36100508172d342017281c1c26323537281112244649061e4b6dbae4e908 +00000000091d130a1a1b1b3023191968543c1c441957d0e6382d403e3544 +4a3a3c463b3a343937434a4b3efff0f9edfe3d5ef5a4b2b0b0b3b1a9a5a6 +9f9fa2a4a099989ba0a3a5a5a8a9a39a9e9e9e9e9e9e9e9ea09b9ea7a79e +9ba1949b9e9a962020212121201f1f1e1d1c1d1f201f1b1c1816171b1d1d +1b1f202222201d19161d1e1e1f1f2020201c1c1d1d1e1f1f1d1e1d1f1f1e +1f21231c1f21201e1d1f221e1f1f201e1b18151a3a3634323337181d4753 +654955406f56a8ff7b0c18240019181b1c1b1b1d1e181a1914151b1e1c1c +1a1d1c1e2022212726242122272e30262425272a2a2b282e2b29292a2825 +242726201c1b1717160f0f0c0a0b0f10100c07070a0a07070a0908080a0c +0d0b09020409070404080c0c0e0f10100f100f100d0a090a0c0d0d0c0c0c +0c0c0c0c0c080a0c0e0f0e0d0c07090f10100f0f102225231c242b281931 +302a1f2c3b351e353d331a233a37181f3e42201e3a422b254845201a2f3a +34060d111711660c0c0e01011324241e161d415896000000140804040404 +04040400000000010203050b0a08080a0c0d0c116a060b0d05120a0c0d0e +10100f0e0e16100f08099d291114253a334085643537353c372a2c384840 +ffb1d3c2ba99dcd9c8c12c171a271f203e543a242f4d5fa9c2d0b8804726 +1f292e2e2236344e3f1f294262e9464cb5acb9c0fffb2b3cb8253a392e4c +494b2b1c332892fd4e7ed55a0b0e26273232383b3b45333c3c38f5ffffff +ffffff485f3f4a47321d1d1e1f1f1f2027251724484e1f120f151842362a +092829263a2b343864907b8a613a4d6d5a568970513b2d163a341c46683d +1a1a23364b523f3a4e464b5e6961594938506c8e8e48516374b9e5f31907 +0b090c14271e1625242137302827786e562e583b78e4f2483a48443f4e55 +45475146453f44424c525346fff9fff6ff3f57e386887d7572706b6a6b64 +626567635c5b5e636668686b6c665d63636363636363636560636c6c6360 +66575e615d595858595c5e5d5a575553525357585754565554545556585a +5a5a5a5a59575553575a5c5c5a5a5c5f585a5c5c5a5a5a5b5d5e60626260 +5e5d5f6265625d5a5c605e5f6062636361616783808685828b74748b857c +ab8259ba91b9ff9d011c22273b4246434243423f42424346484a4d505454 +545556585c5d5d5e6165696e737671727476797a7d7d8382828282828382 +7173726a645e574f4a42382e2a292b2d2c2c2d2c2d2c2d2c2d2d2f2e2f2e +2e2d3533312f302e2d2b2726272826252120222222222222222222222221 +212020201f1d1c2025251f160b0e10171b141e313f76261f5c683202607b +5a0e6b966f0e6a89810c4e8f9717459c941f3a9a9e3534a4b549229bcf6a +0013222e4092532a1800072a3849606b9ec0f1d614161810071112131c1b +171a1713151f242627271f1a0f00091710212b940a050c16100c0a0a0d11 +110f111512160b161f83580417002f1b016948010000150e002e513200d2 +0e0d002bb1ba26225b00090e0020476a854c00464820140f070815212318 +121f170f1400676a1c271e164f123e6a456bb0d0ec0d6bc76a1d000d663e +49544dbcd9e4be2845cffbb56f51535151526009193e613c000023062c11 +6affb3dbf5e2b98c502014211a062c4b5e768eb7aacdb386423d372f9038 +53453f3f35419968ffccdf9c357bfeb9abbd8e78495dbe22474457696267 +c16aa6b1aabbccc6cbc7c9d6dcc5aa3208112a558eab7b7eb3e3f44f7064 +46484844494047452c281d1d1fce946f6a85887dd7ee754a4543473f4947 +43484f4f4f463d5e4e3a9df4e9f3ebe05096ffdbcee2d5e2d7daced6d3d4 +d4d3d1cfcecdced2d6d7d6d3d2d1d0d5d6cec9cbd0d3cccbcdd2d7d9d7d3 +cbd4d5ccca353536393b3a373432302f303435343130302f2f3031333535 +3535353432302e2c2f31312f2f31342d2f31312f2f2f3133343638383634 +3335383b38333032363536383a393a38383c58535a59565f484662666593 +66328f6798f9950014120f20262a27242625222222232527292c2d2f302e +2f303233343435373b3f44464a40414245474a4b4d535250515151525244 +4846413c38312a2922170f0c0d0e110e0f0e0f0e0f0e0f0e10101110110f +0f151311121212110e0c0d0e0f0e0d0c0b0e0e0e0e0e0e0e0e0e0e0e0d0d +0c0c0c0d0907080c0f0c0a050a0b0e0a0000102e6e1f1b5a683406627f5c +106a966e0e698b800e4d919619449e9321399c9d31259bc15d31a4cf6903 +0f0e070755200a10020c2d3b495e6494b3e1c40004040000090603080501 +06040001040300000000051306040c030a006b0005030b07060505080c0c +0a0c100d1106111a7e53000f004a3b10735c20292a33271f52745100f859 +664d6fe8ffced9e0421f0b011e283f5d3b088fbdafaaaba9aab2af977e78 +8476655c3197913e463a326b3162a4a3cdf2f5f9106fcd72200007634258 +6456c2ddeac22e49d5ffbb7357575755545904204c7359202a5029421d6c +ee40352b18110c0000082622010d0f03000024244b311700182c22670002 +0005181f2d7c1e7f1234220b5a9d30132916292d519f001a1f4662594777 +052f342d383628291f14191f2545040f2c3d3b20364a75b7ddcb09110000 +0000000000071208141b1d12ac55272c453b37b0d85f39393c413c43413b +404444443e355b4c3a9df8f3fdefdd4481ebb9a7b8a8b6a9aca1a8a2a2a2 +a19f9d9c9b9ca0a4a5a4a1a09f9ea3a49c97999ea19a999ba0a5a7a5a199 +a2a39a9821212225272623201e1c1b1c2021201b191615151617191b1b1b +1b1b1a181614191c1e1e1c1c1e211a1c1e1e1c1c1c1b1d1c1e20201e1c1b +1d2023201b181a1e1f201f21201e1c1a1c3632373431382122445257895a +217e5991ffa20c1f150d171a1e1b191817141513141618181b1a1c1a1b1a +1b1d1f1e1e1f2123272c2f2f2220212426262a292f2c2b2929292a2c2328 +292523211e181a17100c0a0c10100c0b0b0b0b0b0b0b0b0c0d0d0d0d0c07 +08040404070706060508090b0c0b0b0a0d0d0d0d0d0d0d0d0d0d0d0c0c0b +0b0b0b0806080f110e0a05090f1314070a213e7d2f29687441116f8a691c +78a27c1a77978e1a5b9da42552aaa12d47a8ab403cb0cf6638abd76e040e +100c105d250b0d00082628252113324b827800000d0f010706040a080408 +060203090a060305060e140508120a14107b050708110c0a09090c10100e +101411150a151e8257061e229784318e91636c6a6f5d4f82aa8a39ffacc0 +a2baffffd9ddef58341e0f2323385e410e96c4b7b8bab6b5bbb9a68d8790 +7c66592f99984a5a504a814570afabd6ffffff217bd97f2f0e156c455361 +5dcee9f6ce3a55e1ffc77f636363616169183a6fa3915b6a93697e4f93ff +797775614f3d2009122a24071c28262b345a567b61411829342b79122215 +1d2a2b399043bf5d7a55236fc8664e6346493c5baf0c2f3150695e529027 +575c5560645b625d595d5955713553798a85676b607ab8e1db233321060e +13141a141f25161f26271cba6a3d415f5f5ccdef744943434b474f4d484d +5252524b42665744a7fffcfff8e4487edd9e80866f776b6e666d67656564 +62605f5e5f63676867646362636869615c5e63665f5e60656a6c6a665c65 +665d5b5a585a5a5d5c5b57585554545859595753535354555657585a5a5a +5a5957555557595b5b59585a5c585a5c5c5a59595a5b5d5f60605f5d5b5d +6062605b595c5f5d5e5f5f616161606682848887838c797b868082b08e61 +b097a5ffc1061a2026394145434242423f404141424547494a4e4e4e4f50 +545657595b5c5e60626566696b6d6f727476777f7e7e7d7d7c7d7c747572 +6b655f585049443b332e29282728292929292929292c2c2d2d2d2d2c2c2e +2d2b2a2a2a28262626272726252221212121212121212122222221212020 +201f1d1c2226261f160e0b070d15192e4988bc726aa0ad7f5ba3b39a5ea7 +c6af65abc0bf6299c4d0709fd4d4828ec8d189a3c0ca9284b6cfa2010d1b +2533793f23200a122e4052728bacc7ff8f202a281b15110d0f17110f1a1e +1d1c1e262e35342d1408000a1a131a24ce05090f150e0a0a0a0d11110f10 +15171115071d614a0007002522063c4204110c241d00000707146d00003f +c2e3c52f095f0014040d1a4c6b804900252e000000000000071318242129 +444c04435d00120a0229153a7bb7b4c2d5e7054ca8d27d11014d5d4e3a97 +ccbdc0aa343771e1d3d5e8f7f4f1f7ff1f0c6778100000141f197df2ffb6 +c9f3faeaca925f536171447fa89ab2d1c9c9e7e1ce996c514fe27b878962 +63573b9f4dffe6d8ac3e52ffc4d4c5c0813b56f87ebe49656f696cf3a2b5 +beb8b6c8d4cad8dfd7e6c594390c1c3d6a9cb17777bcdcff87b4a28c9e9f +7d858d6b39479ccc632599856b5e5fc9fdf7ef5248474ba5342945603c35 +5a923d46374f377281e6ddf5a853647db2d4d8c6d7d8e0d0cfd3d4d4d3d2 +d1cfced0d3d7d7d5d2d0cfced4d5d0cccdcfcfcdcccdd1d6d8d6d2d4dbda +d0cc353535373839363433322f31333634332d2e2e2f3031323335353535 +3432302d2d2e30302e2d2f312d2f31312f2e2e3031333536363533313336 +3836312f323534353737373838373b57575c5b57604d4e5d616895713883 +6d84f9b900120d0e1e2529272424252220212122242628292b29292a2b2e +30313332333537393b3c3c3c3e40444648494e4e4e4d4b4c4b4c47494943 +3d39332c27231c16120f0e0d0c0b0b0b0b0b0b0b0e0e0f0f0f0f0e0f100f +0d0e0d0d0b0b0d0d0e0f0e0d0d0c0d0d0d0d0d0d0d0d0e0e0e0d0d0c0c0c +0d0907080c0d0c0a0a0a05040100032275b56e689faf835fa7b79e62a9c5 +ae67adc4c1669bc8d274a1d8d68690ccd38695b6d6a692bfcfa1050b0802 +00411507180b112a3a49657b98aef170000806020a0c0301030000040804 +00000000000000000e0b080d040300ac000a040605050505080c0c0a0b10 +120c1002185c45000c04525327586a38554e53492a2a3a36379a3a4877ec +ffffd3c5f03137090f10293e56390b7ebcada8b2bbc0c0bcafa7b7aca6ae +9c4178922f564b3b5234519ffbfcedeaea024eaeda8310004b62614fa1d4 +c3c8b03c3d79e7dbdbf0fdfcf7f9f81612799036333c4b49378ff9e44922 +1e1d2b2f1e0e1d3a4c15394618171e10193d3c443e363730a01b0f160d2d +3d2775006e3231311030ab3f3126462f143bc8427e11465e554195232527 +24171517131d14051113280c1435423e23354671c0cfd02c371400141d04 +10200c00066db14e046e4e3023258ecad3d53f3a3b44a231263f5a342a4f +873540344c357284efe6f8a546506192aeaf9babaab2a4a1a3a2a2a1a09f +9d9c9ea1a5a5a3a09e9d9ca2a39e9a9b9d9d9b9a9b9fa4a6a4a0a2a9a89e +9a2221222325252320201e1c1d2022211d16141415161718191b1b1b1b1a +181614171b1d1d1b1a1c1e1a1c1e1e1c1b1b1a191b1d1e1e1d1b191b1e20 +1e19171a1d1e1f1e1e1e1c1c191b35363936323926273d4c598a6326705d +7dfdc40e1d0f0a151a1d1b19191714131412131517171818161617181b1d +1c1e1e1f1f212325231f1e2022232527272d2a2a2726242628262c2d2924 +24201c1b1a17120f0e0f0e0b090909090909090c0c0d0d0d0d0c0b060403 +030505030408080a0b0c0b0c0b0c0c0c0c0c0c0c0c0d0d0d0c0c0b0b0b0b +0806090f100e0a090808090c08163588c57d76adbc8f6bb3c3aa6eb6d3bc +74bad0ce72a8d4df80aee4e3929dd8e097accee4af9bc6d7a6060c0a0808 +4a190615060d1f221e21263952a439000616150e090201050000070b0804 +02030607090e070e090b140b0d0bba030c0a0d0a0909090c10100e0f1416 +1014061c6049041226afaf4a70a78eb6aea594787d938877d5818db2ffff +ffddd1ff55571f1b1123395a431484beb0b1bec6cbc9c7beb7c1b3a8ae9b +427c9839635d4e684963affffffefdfd135bbae793220c56665d4aaadfd1 +d3be474b84f5e6e9fbffffffffff3134a7cc7d7f8c9e9b7fcdffff82676e +6d71694b2f354d5d29556c48505f53597b7877614d443fbb403c412e444a +338d20ae7b76672c48d67672667753274ade5c992a55686052b750585c56 +4d4f5756646350534d5c455f89948d6a6b5c75c1d6e54d634630454b2f3a +472e041e81c45f157f6144393dace9efee5349454cab3c314b6641385d95 +424c3f57407c8df8efffae4d4f567b8a81646e6c74676565656564636260 +5f6164686866636160616768635f606262605f6064696b6965656c6b615d +5d5b5a5a5c5c5b595c585756595a5b5b56595a5c5d5e5f5f5c5c5c5b5a58 +5756585a5a5958575859595a5c5b595757585a5b5c5d5d5c5b5a5a5c5e5c +59585a5e5d5c5c5c5e5e5f60617d868985838a8082858181978060a9a08d +ffef08181f25353e44434141413f3e3e3e3e404243444649494a4c4f5153 +575757565657595a5e6265686b6e707177777676777576747476726b6660 +59524a45403a332b26232727272727272727292a2a2b2b2a2a292b292726 +272725222627262626232221202020202020202022222221212020201f1d +1f22282720170f0a0509151d395892c3857ba5b28f78a6a89c75a3b3ad81 +aab2b979a5b4c5899ab7c58c8baebf8692baca7a73a6c27a0b0f18242c5e +31261110203d5a677ea2deeeff32232c2b251410131e2b26212d22282a30 +446075724f1804000819171818fb010a11110e0a0a0a0d11110e10141607 +1c032346460100003920001e250b000005130b02050e140b3db4e7f5d3d6 +1e074800121d20153654693e000824000000030f0c040000000011274209 +182d2915104a570f0081cdc2bfd1e01a368fc3b2a1cabd6a1842b2b7a7b1 +a4463d62e2d2c9c8c5bec4d4ebe0edc4930003150921cbe5dfffe3bde5f5 +f8f0d2b2abb4b1a1b7c4c4cac3c4dbecefebcb754e588e9eb6c29e6b4756 +7686efcec2985e5baeb6cfe3d27e6a6384869b84a29da0739db8ccc4cfe1 +f3ddcdd4e3d3f7d675281227466794a8717cced8ff87bdc6d1effcc5aeb3 +b08e7597ae69548a846f5d5d65fffbff504f3c4f4b0d112f435c48645a08 +27485b3a6f46b9e4fc8b507b519bd6cfc5d4d6ded1d1d1d3d3d3d2d1d0d0 +d2d4d7d8d5d1cfceced2d3d0cfd0cecacfcdcdd1d5d7d4d0d6dbd9d0cb37 +37343636383535363431323336353530313234353637373434343332302f +2e2e30302f2e2d2e2f2f3032312f2d2d2e3031323333323130303234322f +2e303434333434343536373652595d59575e53525a61667b60357a756bf9 +e5000e0d0c1a222827232324221e1e1e1e1f21222325262627292a2c2e32 +313130303130313436373a3e4143444949484847484646474a49433e3a34 +2e2827231e17110c090b0b0b0b0b0b0b0b0d0e0e0f0f0e0e0d0e0c0a0b0c +0c0a090d0e0e0e0e0e0d0c0c0c0c0c0c0c0c0c0e0e0e0d0d0c0c0c0d0b07 +080b0d0c0b0b0a03000000082d7fbf827aa7b5927eacaea278a6b5af83ad +b8bc7fa8bac88f9dbdc8928eb4c28586b2d88e81adc0790f0f0905002f11 +110306112b424d6282bac7df0300000000010403091007020c0102000007 +18222718000a0f060c080100df000b040005050505080c0c090b0f110217 +001e41410511137b662c4e625648434651544e4a4c4a3f75e4ffffdcffb8 +c1e33042281a01152d40311763b8a4adb9c8d3ccb59c92a7a49d978c404f +77939392c0b04f2ba9ffefd5d7db133897cfbba2c9bc712c58bfc1aebbab +50446ce9dcd0d2ccc8cbd6ded6f4dab016455c4450eefbedf2812321202e +32230f1323221020251a170a0511222c46582c212433201d2d2f22273b3e +255b25211d27305b371f34532a342f3728362d6873763124191c0d1c241c +0204111601202410001a3a3e3018304475ccc0c014221318384e2010202a +160f39521100414b3f2e3b58fceff94749354a4a0b0f2c3d56405c520021 +4558386f49c2edff884569367ab2a99ca7a8b0a3a3a1a1a1a1a09f9e9ea0 +a2a5a6a39f9d9c9ca0a19e9d9e9c989d9b9b9fa3a5a29ea4a9a79e992221 +1f202122201f211e1c1c1e2020201918191b1c1d1e1e1b1b1b1a19171615 +181a1a1918171819191a1c1b1917171818191a1b1b1a1918181a1c1a1716 +181c1e1d1b1b1b191a191630383a3432372c2c384a556f5122666462fbed +0b160d0711171c1b1818161411110f0f10121112141313141617191b1f1c +1c1b1b1c1c1b1b1b1d20212424252827262423212224282d2d292525211e +1c1d1b1a14100d0a0a0a0a0a0a0a0a0a0c0d0d0e0e0d0d0a080402020505 +0304080a0c0c0c0b0a090b0b0b0b0b0b0b0b0d0d0d0c0c0b0b0b0b090709 +0f100e0b0a0806050a091d4192d0938ab6c4a18cbabcb087b5c4be92bcc6 +cb8db7c8d79daccbd7a09dc2d1959cc9e5978ab7cb7f120f0c0b08371210 +02040e1f261c192d647aaa00000610110706060e170f0a150a0d0c0c192e +3c3e2b080a0c09130f0b02eb020d0b080a0909090c10100d0f1315061b02 +224545060d2cdbc84d64a5bbc0bcaeb6c3c6c9bb9478b0ffffffe5ffc4da +ff646a3e1c000c28463b2068b8a5b4c4d8e3dbc7b3a7b0a69e988f45547a +939092c2b85934b3ffffeaedef2345a4ddccb6dbca772a55c8cdbec7bb5c +5478f9e8e0dedcd4dbe5f0eeffffea5a8faa949effffffffb05f6b707a7a +664e4c5a5847575f58584d4a5a6b72828349353a564f5564593f364a5b52 +996a6554474c856e6779864e4c45574d5e5081878a4c51535c4f5d686952 +545f654c6360483f6d9694815e60597cd1cddc3f5b545b7a8d5c4a565c43 +365e7b39225c5e4f404c69ffffff58553d5152161a3749624d695f0d2d50 +63437952c9f4ff914d692d67927c666c6c72676763646464636261616365 +68696662605f616566636263615d62606064686a6763676c6a615c605e5c +5b5c5d5c5b5d5b5958595a5c5c5a5b5e60626262615d5d5c5b5a5957575b +5c5b5a59585758585a5b5a57555555595a5b5b5b5b5a59595a5a5957575a +5d5c5c5a5a5b5d5e5f5a7486878180858282898979695b57aca87effff06 +142426313b43434141413f3d3d3c3c3d3d3e3e444445494b4d4f51555454 +545455565657585c5f6265696a6d6f7070727272717375736b65605a534d +49453d332a252227292929292929292829292a2a2929282b292828292726 +2427262626232322222020202020202020222222212120201f1d1d212529 +2721180b0b09101c223c5784af7f74929c7e75928f8a6f8995977790929b +719295a17c95b5ca9590bfd18c95b3bb8181ace167131118252744262b21 +29314b6c7589b0d3f5bb2432372b26202321212b2e2a2e2530363c547a93 +8d7524010003161b1b15e0000314100f080a0a0d11100e0f141504190325 +3a3a040000342700163727000d1915110d0a151077d0e6e6f9f7c1301226 +0041152f392e3e462800004019000000121c1b160d00001e2d3f1e204e12 +00002a3003009bd4c7d6dcce322493c3bbc3c59056096bc7afb3c2a64b28 +7ef7e5d5d6d9d6d5dce7e1e5ded60010004bcbd5d5dbfaff89e6e9e8ecee +e9e6e7d9dcd5cbd6d9d2dfe9eae3d9c36950648cc1bfc0bf7045576fa7a4 +c9dd746d1dc9dedbfab38679537bbba3b6bba8b34fa6d9d3d2d3c5e7f9d5 +c4dab9d2c268320e31516b91a27587bcd1ff81b9d1d6d6d0c7c3b5bebf9e +9ba5a996776d744e5e31e3daf94150365184eefed945663e4582e7f3d84a +509727a2f3fc8b47a279b8d8cdd3d9d4d4cfd9d0d1d1d1d1d1d0cfd0d3d7 +d7d5d2d0cfd1d2d1cecfd1cfcad0cecdd0d3d5d2cfd0d3d2ccc93a383635 +363736353735333233343636323336383a3a3a393535343332312f2f3132 +31302f2e2d2e2e3031302d2b2b2b2f3031313131302f2f30302f2d2d3033 +33333232313435362f49595b55545955515d675e4c3a2a7c7b5af9fb0009 +100d141f2727232324221d1d1c1c1c1c1d1d23232426282a2c2c302f302e +2e2f30302e303235383c3d3e4242434444444445464947413d3a352f2b2b +28221a120d0a0d0d0d0d0d0d0d0d0c0d0d0e0e0d0d0c0f0d0c0c0d0e0d0b +0e0e0e0e0e0e0d0d0c0c0c0c0c0c0c0c0e0e0e0d0d0c0c0d0e0b09080a0d +0d0c0a0d09070200052771ac7e7695a2847d999791758f989a7a9698a177 +989ba7829bbbd09b96c5d78d8baec9958db0de6417120c0c021f121d1117 +19304c52648baac98d000003000000080000010000000000000006212f34 +37060a0e01090c0600c90007050009060505080c0b090a0f100014002035 +3508071a8076324a7a7a646d6058666456584cacfeffe9f1f0eab6bbb631 +7220211f111f21181750ccc6b0b1bbced6cbb7afa8b0b4a48b555c9f9191 +96b6984a2fc0f9e2ded9c52e2aa1d5cbc8c6925f1d83d5b8bccbaf543187 +ffeededfe2dfdedfdcd9f0f5f2264e3d82f7f6eeefebdb0033231f22211c +191d1118130e1b2019221f1c192b4a181c2a26371a1e4621233b3048253b +5308350089722a463f3b421316412347707282021d2a130e150003150b09 +20000e201315173f4435253b4b80b9b7c606110f0c0c0e0c0e0b1e2c1b17 +0f151c19324b2c524affe8fb3d4a2f4c82eefed74260383f7ae1edd54850 +972aabfcff883c8f6099b5a6aaafa6a6a1ab9e9f9f9f9f9f9e9d9ea1a5a5 +a3a09e9d9fa09f9c9d9f9d989e9c9b9ea1a3a09d9ea1a09a972521211e21 +20211e221e1e1b1e1d211f191a1d1f212121201c1c1b1a19181616191a1b +181916171618181b18171315131718191919191817171818171515181b1d +1d1919181819180f273838302f322e293a4e4b3e291566684ef8ff050f0f +060c141b1b18181614100e0d0d0d0d0c0c12121113151718191d1c1a1919 +1a1b1918171a1c1f2022212221222122222222272c2c282425221f1f2020 +1b160e0b080c0c0c0c0c0c0c0c0b0c0c0d0d0c0c090b090808090909070a +0a0c0c0b0b0a0a0b0b0b0b0b0b0b0b0d0d0d0c0c0b0b0b0b09090a0f100f +0c080a0b0c0f0b1c3f85bd9085a6b0948aa9a4a1839fa7ab89a6a6b185a8 +a9b790abc9e0a9a6d3e79fa3c4d69e99bbe96d1a1410120a26111a121715 +1f261814335a8c6c000a190f0e0b0f0b060f0d0b0c050b0f0d203d51524e +12090b0410130f02d302080c050d0909090c100f0d0e1314031802243939 +07002fd8d2505fc0e0dee8ccc3dde5ddcb94defffff8efe8e6c1d8eb6b9b +342012091c28232156cbc4b4bac6dae2d8c9bcadaeb2a08b585da08a878f +b39b5034c8fff7f3eed83d36ace3dbdcdaa1661c83dec7cbdabe634096ff +fdedeef1eeedeeeae8ffffff5b897ac3fffffffffffd3077706d6e6e6966 +675a6059525f635c666866626a773832424d6a56597340334a4f745c778f +3a5812aca4728d6e5a592d3e7054728f8a9824536d5c585d485a6e5f586b +424c594c5772a09e8363665f88c0c4e6344f555655555051495a624d494c +514b3b46593a5c4efff5ff4c5637538df8ffe24d6c444b87edf9e0535aa1 +33b2ffff9144915b87977d76756a68656f61626262626261606164686866 +636160646564616264625d63616063666865626164635d5a666361606060 +5f5e5f5e5d5c5c5c5d5f595a5d5f6060605f605f5e5d5c5b5a5a5f5f5d5c +5c5b5a59585a5b5a575555555a5b5b5b5b5b5b5a5a5a5a5857585b5d5c5c +5a5a5b5d5e5f586e878680818185808b8a77565354acab7effff0e102c2e +2d3a4545424143423f3f3e3d3e3e3f3d414042454748494b4d4d4e505254 +5657515254575c5f62636467696c6e6f6f6f7273716964615c56504c463d +31292625292b2b2b2b2b2b2b282829292929282829282627282726252626 +2523222222222222222222222222222222212120201f1c1e222629282119 +0a0a0c131e24415b8cac887e949b7b7991948e778b999474919196759095 +9b7787a1b58789b9c78097b1936d7cb8fa2b171115211f25131e514e434f +6d7e9ac7f1ff6851565b5d64828c785e5e68666161686a68768f9e907b24 +010004161c1c128e000117111106080a0c10100d0e12170c11061d352000 +00001223060236040007211a06000020afd4e3f1fff2fff03817461ad404 +2121202e392f150b4f2b14030000000210150e000028341f194f3000002d +38070a9bdcbadadca2311ab9c6a6d3db9e620b90d2b7c0c99a571b9cdace +cad6e3e5e0e2e3edd3deea002093d6d4c3b7caefff99cdd1cdd4e0ebeff0 +f0dcdedbc1d1ebd8dfdad0bfa960556692a4bec0ac645f418583abffff51 +6b22faedbed0b5906959a7bbcda6d2cbc244cdffffe1d4f1ffeee9feffff +d5bf620c0b3c5b6d8999728dd5e4ff8bc9e3e3ddd5d2d8cbc7c3badfdeef +c395aebe4a3567c5ccc443754e3d90efe9e3708c5837c9ffded355778118 +dff8f09079a67affe8c8d7d8d6d4cdd3cfcfd0d0d0cfcececdd1d5d7d6d4 +d3d2d4d4d1cccdd1d1ced0ceccced2d3d1cecdd0d0ccca3d3b3838373836 +3636363434333434372f3033353636363536353433323130303535333232 +31302f2e3031302d2b2b2b30313131313131303030302e2d2e3133333332 +32313435362d435a5a545555584f5e675b3730267a7c58ecfb0304171311 +1c2727252423221e1e1d1c1a1a1b1c20212324262728282a2a2b2c2e3032 +332b2c2e31333738393b3b3d41414242424547453f3c3b37332f2f2a2218 +120e0d0f0f0f0f0f0f0f0f0c0c0d0d0d0d0c0c100f0d0e0f0f0e0d0e0e0d +0e0d0d0d0d0e0e0e0e0e0e0e0e0e0e0e0d0d0c0c0d0d0c0a090a0b0d0f0a +0f0c0a0400032679a9867f97a182829a9d977e909f997a96989d7c979ca2 +7e8ea8bc8e90c0ce818faea38188baf42518120c0e010c0b1a423828314d +5c76a4cde641292e353b3e53553d1f1d24221d1d221e1317272b2a35040a +1104090b07007a010506000b060605070b0b08090d12070c0118301b010b +15566b322b715347636256574a455fe7fffffffce3f6ffa19fb86bfa0a0c +050e1b1a1b274cc6c2b7aba1a0aab2b8bfc09d99a6875d57a1ad8e8eab8d +3e2db4f3cbddd89c3128d2e1bbdbdd9f681da5e0c3ccd5a66327a8e6dad6 +e2eff1ece8e0ece1f5ff1255c9fff5dccde3ecd3252f1d1311171c1f2022 +141c1e0a1d3b282b23171b3414263234241f253719432b4d3350dcba003e +06dca11725565c3a15342e3c2880939000468a5f22203232132b58ae723b +41280015475043394c5187d8d2e71625251d181719201b1c21253c182c2e +2b6e9a333d9cffefd03f6a463a90f1ebe36e885433c3fbdad15377811ce8 +fff48f6f9662e3c5a2adaea8a69fa59d9d9e9e9e9d9c9c9b9fa3a5a4a2a1 +a0a2a29f9a9b9f9f9c9e9c9a9ca0a19f9c9b9e9e9a982722221f211f201d +201d1e1b1d1b1e1e17181b1d1e1e1e1d1e1d1c1b1a1918181d1c1b191a18 +181616171917151213131819191919191918181818161516191b1d1d1919 +181819180d2139372f302e2f26374b45251d0f63684beaff0b08120a0611 +1c1c171616150f0f0e0b0a0a0b0b0f0f11131314151516161516181a1c1d +1617171a1d1e20201f1e202122212121262a2a262326242020211f19110c +0a090e0e0e0e0e0e0e0e0b0b0c0c0c0c0b0b0c0b090a0b0b0c0b0c0c0b0b +0a0a0a0a0d0d0d0d0d0d0d0d0d0d0d0c0c0b0b0b0a0a0a0b0f0f0f0e080b +0e0f110c1c408fbc9b91aab19491abaca88ea3afac8aa9a8af8ca9acb48e +a0b8ce9ea2d0e095a6c3b08a94c6ff2f1d16111409100917453a21191e15 +1e4a81b53232464e494963685334353b3b34363a3a30394a544f4f11090d +06101310028302060e050f0809090b0f0f0c0d11160b10051c341f000528 +9fb54b3fb3b0accac0b6c0b9b7beffffffffffdee9ffa7b9eaa0ff1a0b00 +041720263150c2bbb4aba1a2a7afb8bec09b8e9b7f58549da58488aa9445 +31b9ffdff0e9aa3d31d9ecccf0f2b17421a8ebd1dae3b47135b6f4e8e4f0 +fdfffaf4e7f1eaffff2f75ebfffffae2eaf3e74a6c645c5d656a6d6e6d5d +62624c5e79666c655a5760323a485854595e6337513868587bffea285d1f +f6c85c697e734e2e5f627358a4aea91c7ed1ab706a808c6f81a4eda76d71 +5b4276b0ac8d6c6c6491dfdeff43646b68605f5d665c5e5d5f7b677a6853 +86a63d4096fef5de507a51419afdf7ef7b966241d1ffe8de60838d25efff +fd9778995ed5a97b7b746c6861676060616161605f5f5e62666867656463 +6767645f6064646163615f61656664615e61615d5b69676565656462605f +6061605f5e5e5f5e5f6061626262626261605e5d5c5c5c62605f5e5f5e5d +5b5a5b5d5c5a5858595e5e5e5e5e5e5e5e5f5e5b5a5a5b5d5e5d5c5c5c5e +5e5f605a6b888782857f87828d847d676d5aa0ad87ecff2b0e323d2b3945 +47434244434241403f404041413d3e4041434444444646474a4d5053554d +4e4f525457595c5c5f6266686969696c6f6d6763625d574f4b453b2f2725 +2827292929292929292829292a2a29292827262525262625242726232222 +2222232222222222222222222222212120201f1c1e23282a28211a0b0a08 +0d1a26486995a3827c8e9772748d9688748b9a8b6f909190748c9594708c +929b7f8ba4aa7887b283596094c8061712151f1a10040f413d3f557387a8 +cddec511493431484d74857c696d72685c606465636c7b8278591c02020e +19171a1c41050319130e04090a0c100f0c0d1212100b0e1b3d1a0303008c +551f2262706e5e4f4239427dcddbe2ebdffffffff7ae987c3bb215393626 +21241b131e7064716e644a33303d47534d58581b244871665270a3702238 +caf2def7ff9c3a26bce6ccecf9995015aee8e4dbe57f53239af5efebebea +e9eff8fceef2eee373d5d8eadbe2e4bbcfff85a8b9c0bebec2c8cbd3d6ca +c3b9b8c5b9c7c8c9bc91594e4e8aaccac1975348316adcffffb6585c04f2 +ffa8daf7667c6ba1ced4bea56b734fa9dccbd5cbc9dcddd5a8ffffff9b32 +171340463f506d6495c7c4ff62b2cdd3e4e6dad8c9cbc8bad3f1e3b37e8a +9a443f98c0e29945774c12d9fbf8bc6a574632dafdff924a985e21edeff2 +68a98f4affffc3cccddaddcec7d0d0d0d0d0cfcecdcccfd4d6d6d5d4d4d5 +d6d3cdccd0d3d2d0cdcbcdd1d2d1ced1d2d3d1ce413f3d3d3d3c3a383738 +393837363637343536373838383838373634333232323836353435343331 +30313332302e2e2f34343434343434343534313030313334343334343435 +36372f405b5b5659535a4f5d5f5f48482a6e7d60d3f620001b210d1b272a +2625242321201f1e1c1c1d1d1e1f21222223232323232427292c2f312829 +2a2e303133343436393a3c3e3e3c3f423f3b393937342e2e292017111111 +0e0d0d0d0d0d0d0d0c0d0d0e0e0d0d0c0d0c0b0b0e0e0d0c0f0e0e0d0d0d +0d0e0e0e0e0e0e0e0e0e0e0e0e0d0d0c0c0d0d0c0b0a0a0b0d100b0f0904 +000008317fa1837f939e7b7d969f917d929f90749798977b939c9b779399 +a28692abb17b7faf936d6a94c00017130e1003000614362b273a566a8cb3 +c6ae00311f223c3b50564934363b31272d2f2b232226242118000b170e0c +060505320b09050008040705070b0a07080d0d0b0609163815000002c38d +3a378eb2c4ae81728190bbffffffffe7fcfbf2fffcfbca70ca13201f2421 +0b051a4ac9d5e8e9dcc6b8b9c3ccdad1d5c2615776b1c9c4ddfba44050dc +ffe9f6fc9a433eddffe7f8fe975324bff6f0e7f18b5f2fa6fffbf7f7f6f5 +fbfffff3fffff68dfcffffedf2f7d7d4da262927281f18171b1e2b322b28 +20212e2537332a2c2b172c293f3f3d37311537263ea4ecea76224000f5eb +143eb64e5c30344647466044581a39462731352b201d291aa2dfa7431118 +214b3f211b39498fd4c1d1001e201f31382f2a1e20221b2a28242a235076 +2a42cbfbff9a2f5e400fdcfffcbe6a55442ed6fbfd924a9a6025f6f8f667 +9f7e32ebdf9da2a2aeafa0999e9e9e9e9e9d9c9b9a9da2a4a4a3a2a2a3a4 +a19b9a9ea1a09e9b999b9fa09f9c9fa0a19f9c282624242423211f1e1f20 +1f1e1d1d1e1c1d1e1f20202020201f1e1c1b1a1a1a1f1d1c1b1c1b1a1817 +181a19171515161c1c1c1c1c1c1c1c1d1c191818191b1c1e1d1b1b1b191a +190f1e3a3831342c3124354247343513556751cff92602151602101c1c18 +17171412110e0d0c0c0d0d0c0d0f100f1010100f0f0e111316191b151617 +181a1a1c1b1a1a1d1d1f1e1e1d22252522212322201d1e1d150d06080b0a +0c0c0c0c0c0c0c0b0c0c0d0d0c0c0b0c0b0a0a0c0c0b0a0d0c0b0a0a0a0a +0b0d0d0d0d0d0d0d0d0d0d0d0c0c0b0b0b0a0a0b0c0f0f0f0f090b0b090c +0b224c96b69792a6b08c8ea7b0a28ea4b2a387a9aaa98da5aead89a5abb4 +98a4bdc38e96c2a07674a0cf071f1815170b0303103a2b1b1c1c1a29547c +8400473e39403b5c685c484b50463b4043413b3d45464130080a1210130e +0e0f390b090e070c060a090b0f0e0b0c11110f0a0d1a3c19020015fbc64f +4ccbfffff5c6bacddbfffffffffffffffbe8fafefff19ae4202319181911 +11244dc5cfe6e7ddc6b5b2bcc9e0d6d1b8575073b0c6c4e2ffb24b52deff +fbffffa54a42e2fff8ffffad622bc6fffef5ff996d3db4ffffffffffffff +fffff9ffffff9efffffffffffed8d7eb485c65655f5a5b5d60696f656158 +5863596c6a646152323c3a5d68716a582e412e55bfffff9942590fffff52 +7dd45b69465d787c747f596b386b866e7a7c7574737d62d3ffca69405b84 +b59c6745505a99dacaee265a6266757d716f6064625b6d78716046668237 +47c6f7ffac46734c18e5ffffca7662513ce4ffff9e56a66c2efbfdff6fa8 +8430e0c478726b7171625b6161616161605f5e5d60656767666565686966 +605f63666563605e6064656461626364625f6d6c6b6b6b69656261646767 +646261626968686767686969676563616060606063605e5f60615e5c5d5f +61605f5e5e5f626161616161616265625e5c5c5e5f605d5e5f5f61616160 +5c67888682877c868090818278815997b091d3ff5b0d324f2938484a4745 +464645444544444446453e3d3f40424242424242444647494b4d494a4b4d +4e51525455585b5e5e5e5d5e6164635e5a5b57514a47433a2e2725292628 +28282828282829292a2a2a2a292927242324262625242524232221222323 +2121212121212121222222212120201f1a1d24292a28211b0b09060b1826 +4e6fa4a17f7c8f9c75768d978176939a8279938f8c788c938f728b8d8c74 +858f8e6e7985585453363e09100f151e1b0801061117375e778cb0cbff97 +304620000e00020c0e131e1809050d0d0f17202a3033351b0603131a131d +1d1b070516170807090a0c100f0c0d110a110e0d1d3f1f10250697041223 +4e0000000000000000060000060001071717000900001113231a050f2a2f +1500070000071303000000000d04011300476f3b1926132f103530323761 +6ba13c161f5d406d5d7a1f43366469674cb74133387a8289949ea1a1a6ad +bab3a9afe1cde0c5c8fcd5bebdbacb7082949b98918d89818caf9393ae9d +929aa0a0aeb4734c433e5d848c9264543d42aafffff276472815d8ffade4 +cf317351a9e8989e93614239afcfcdd8b7c8dfe4f2be892a2b2b1e09183f +2c0915405599bac5ff5cb6cbbac1b5cee6d9d5d9c8cccfc8f4b87c675545 +e9f0ff93627a6438fbf2f98e677a6555fff4fe7778a73a4cf8f8f560b58a +70ffffc3cac6d8dfd3ccd3d3d3d3d1d0cfcecdd1d5d7d6d4d3d3d3d8d8d2 +cfd1d3d3cfcccaccd0d2d1cfcfd1d4d5d343424141413f3b38373a3d3d3a +3837383c3b3b3a3a3b3c3c3a383634333333333937353637383533343638 +373635353538373737373737383b38343232343536343537373738383731 +3c5b5a565b50594d5f5a62575d2a647e6abaf24f0019310b1b282a272525 +2524232120212121221f20232423232222222221232426292a2627282a2b +2d2e2e3030333535353432343735323032312e292a2720171111120d0c0c +0c0c0c0c0c0d0d0e0e0e0e0d0d0d0c0b0c0e0e0d0c100f0e0d0c0d0e0e0d +0d0d0d0d0d0d0d0e0e0e0d0d0c0c0d0c0e0c0b0a090d110b0e0702000009 +348e9f807f94a37e7f99a38a7f9aa1877e9a989581959c987b9496957d8e +989773748468665b3431000f100e110a000c15110d274f667da4c2ff9330 +48270a1f0604070409130e02030c0c0d0d0f0e0b0600001018130d020908 +0e100b020002070705070b0a07080c050c0908183a1a050900b727111e62 +0d3e2b1014241d1a2a190d120208090f1e28441d0215090d0e1b231e180b +0b351e24383e302425251f3a333b49105b7d52495e414f17373c42456a6d +a1402541866b8e6d7e1d444072777459c44e4045878f96a1abaeaeb3b9c0 +bbbcc2eddaf6d9d0fed9cbd9c4a2282b353a352e2c2a2736593e39503928 +303e3a3541221d36312e351d2315293b4692ebfbec60342527fffc325fae +3b6d2b547b274470604f316b675a6659615950614a4900000017182a4b2c +0000244097d3d7ef0f3d3b262d25405241393a2e323043a08451412c2ff8 +fffc762f494f35fff9ff92697a6353fdf2fc7778a93c53fffff95fab7958 +f7f39da19bacb1a59ea1a1a1a19f9e9d9c9b9fa3a5a4a2a1a1a1a6a6a09d +9fa1a19d9a989a9ea09f9d9d9fa2a3a12a2928282826221f1e212424211f +1e1f252424232324252523211f1d1c1c1c1c201b191a1b1c1917181a1c1b +1a19191c201f1f1f1f1f1f2023201c1a1a1c1d1e1e1f1e1e1e1c1c19111a +3a373136293020373d4b444710496759b5f353001226000d1b1d1a161616 +151211100e0e0f0f0d0e0e0f0f0f0d0d0d0d0b0d0e101014131415161717 +18171616191917171615171a1b19181c1c1a161819130904060a090b0b0b +0b0b0b0b0c0c0d0d0d0d0c0c0e0c0b0c0e0e0d0c0f0e0b0a090a0b0b0c0c +0c0c0c0c0c0c0d0d0d0c0c0b0b0b090b0c0d0f0e0f10090a09070a0b2550 +a5b49492a7b58f90a9b39b90acb39a91aca9a692a6ada98ca5a7a68e9fa9 +a88688967570664142091715151812020810110b17262120385bb56d3261 +441b1700030d0c111b16090811111215191c1c1a14050f1315140a121115 +0f0b0b0a06090a090b0f0e0b0c1009100d0c1c3e1e0b1712e04f23349746 +6347343946392e381f1b382d24160d16244a3119211219120e1720221413 +351f283d4736282626295751474b0c598058556f596831463c41507b7cad +492a4288729d849735564a7b848469d45e5055979fa6b1bbbebec3c9d6d0 +cdd1fdeaffe2ddffe5d4ddcec04e556167635a57524d597c5f5c745f4e56 +6461626c42313f3a4254474d343c4049a2fdfffa75483631ffff6894bf3c +713a75a4536884685540909a95a18e999e9cae8b6e140012415b90b9863d +1a3351a2d7dbff3372766469627a907e7a7a6e72737cc49a624e3e3cffff +ff9250665e3effffff9d75867060ffffff8384b5485bffffff67b47f56ec +da7973646f736760646464646261605f5e62666867656464666b6b656264 +6666625f5d5f63656462606265666471707070706d696564696d6d6a6765 +666a69676665666768686764626161616262605d5e60615f5c6062646463 +62626464646563656366646a65635e606063615e5f6062636563635c6486 +84818677847d958583767c4f92b199c4ff7e0b2e5a2838494c4747474949 +48474747474848414244454545444344444545454647474546494a4b4c4d +4e51525455555451525356555150504f484546443c3128272929292a292a +292929292a2a2b2b2a2a2727262525272827252625232221222324212020 +202020202022222221212020201d1f23262725221e0b0a090e1a244a6aad +9f7d7991a27b7b929a7b7999987c84938c897c8c8e8b778897916c828e8a +6d7894674457400e0b02060f1a190604081419406a7c94c2dbcc14110018 +3a9aa22715070d150802140b06050c100f111a211c0e0412181021131206 +060f16040c090a0c100f0b0c110a1315051931180a124ece2b5037ef0000 +051711050c1c24190f062118062b0a09001b281e26271e0e0d202a2b4b74 +735a727e76727a7363678ec0cb36487b595ba3a1bc415045423196719325 +28471966c38bc73644342b875207c950313b2d0900000000000306000701 +00060000041600011000002c313f474c50585b4e3d3b3f3d575c5662485b +55657d37253335abd3ffff503a2b2319a3b9bc052b440d6939425518324d +3f4cf8ff9a864e061f57567eb97c5353736d624614261c0a0f17422c070e +38539ccfe3ff1f6c8d776f727587909c8e69606259c17f32387850999299 +4c54564832b4a3d4591f543054ebf2d433397b285ef9eda2405f3c80ffff +c1d0c6d1dad9dfd5d5d5d5d3d1d0cfcfd2d6d7d5d2d0d0d0d8dcd7d1d1d3 +d3cecbc9cbcfd2d3d0c9ccd1d5d54544444444413d39383d41413e3b393a +3e3d3b3a393a3b3c3c3b373534343436393734353738363337393b3b3a39 +393b3a3a38393839393a3d3b3634333636373637383a3a3937382f375856 +535a4b544763595f575c26637f6ea9f37300163d0b1a292c272626262625 +242424242424222325262624232223232222222324242425262728292a2b +2d2e3031302f2c2a292c2b28272a2a272426262016100f100d0d0c0d0c0d +0d0d0d0e0e0f0f0e0e0d0f0e0d0d0f100f0d11100e0d0c0d0e0f0c0c0c0c +0c0c0c0c0e0e0e0d0d0c0c0c0b0d0e0c0a0a0c0f070c0a080000052f9aa0 +807e96a982849ba38480a09f818b9a9592859597948091a09a7589959170 +749371515b3d02000005080f0c000f141410345c6b86b7d6ce1a1c0a2c52 +b6bd3c28171d2318162a241f1e201e17100d00001314110d001202090b0a +0002000c0705070b0a06070c050e1000142c1300003bdc3b4328f7142c36 +2e28313e43412f20132f2916301529132928191b1517232317171e4a878d +6d7f857d818c86716a94d5e4444d7a5b6db8afc0394a4e513e9e73962c3a +653f8be19acd37453c38936013d5593d473b19120a0a0d12151804161606 +140c0e161d01081f0e08180a13191e222c342b1e1f231e323125280e271b +1a34060d323695a6c2c82024302e119bc4cb072a4c269a4700000e48522e +1cb5e0657a5d232d3b22448254260e20141d2a0605000b1e264e3308082c +4296e4f4f8001e3018121a1d2a2d32220000000b9a691a1c583899958c2e +262a3832b8acdb6023563254ebf2d6353d7f2c65fdf1a7415d3372f2f9a3 +ac9fa8acabaea4a5a5a3a19f9e9d9da0a4a5a3a2a0a09ea6aaa59f9fa1a1 +9c9997999da09f9e979a9fa3a32a2929292926221e1d22262623201e1f23 +22201f1e2122232322201e1d1d1d1d1d1918171b1a1a151b1b1f1d1e1b1d +1f212121202120222126221f1b1c1d1f1e1c1d1e201e1e1a18101636342f +35242c213e3c4742450a47665da2f477000a2d000f1c1f18151513131211 +1111111414101111121211100f10100e0e0e0f1010111213141415161517 +16181716141110101413121315181413171b140b0405090a0c0c0c0c0c0c +0c0c0d0d0e0e0d0d0c0f0e0d0d0f100f0d100f0b0a090a0b0c0b0b0b0b0b +0b0b0b0d0d0d0c0e0d0d0d090b0d0f0e0f0f12060b0c0c0d0b214bb0b493 +91a9bb9495acb49592b2b1949daca6a396a6a8a591a2afa98499a5a18185 +a17b5966480e0b060a0f1513040b121c111e2b1b234d788f002223445eaa +ac3526171c24171527211b1b1e1f1916160f0c161116130a190c0e0e0b09 +0b040e0c090d0f100a0d100b1216041a3019060551f754543bff393a3b3c +363a3f3e3c2c28335445263311241432341f21211e1a17181d27508b8e73 +878f8788908a7c89b6e6eb455080677bcbc9db50564d4e46ab809f343e67 +4293ecade34b574741a16d21e3684b5548261e1615181d2126172927131f +15121823071026121231292e33383c43493f302e322e44453b40263e3439 +521c1b383ba2bbdfe5363034301ca6cad01338572b975019231745553832 +d4ff818864273654466caa794d3d544a494115181b376185b28441243a52 +a2e9fbff0b455c443e4447575c63542f292e32af76272a6748a5a4a04843 +45453ac1b5e56a2e623e60f7fee241488a376ffffaab4560346fe7e47f7a +64686e707669676766646261606063676866646262636b6f6a6464666661 +5c5c5c606363615a5d6266667d7976767a7a77727074726c6b70716c6e6c +6b69696a6b6c626364676a696764666463626364636366646264676c6e6f +6862646a6c66676d6e676465676566686763646669696865626b7c8d8f85 +7f8290828c8c6c87578cb4a3a5ffa70c306e34254b59464b4e4d4c4b4947 +47454647474646454648494a47474746454342413f4040424447494a484b +4d4b4847484a4a48464443413c3938383734312e2b282c2b2b2a2b292929 +272728292728292926262625252424242424242424242422212325252322 +2223222222222222222223201e1c1e202222170c0c0e0d23556aaf947380 +94957a7d939983789999837c909482769197867a8792906e858783697a80 +5241502a040d0b0b0c101619171715115b7284bccff78802051007070043 +1a140e0c0e0c0802090408180d1902141b150a0e1315131214100b0a0e0e +0c0b0b0b0b0b0b0b0b0b0a100b06193022040609bdc751305c001108120d +0806052516171809112300140907161826341b1f191a1f1d1b160a000200 +060000000b00000720350051760e0465102f2f3d530b29b24f76203b390a +3eb10060373a4d1165c09dca55403b330b001d000e17100f171c0f1d311d +071b270a13181a1b1028211e1b1e24292c2b271f1e262e32353de8f5bacb +3325282d48102f2a2644292b7d9b084b29553905aee9ffde3c3333475edf +b98364662d2d36192829151a294a564c2e15091f0b0e2b2f1400091a4d95 +c9fdf1085b484b432d312b2837b0dac2a8a9731236304e66908e2234494e +4154906b003c3c562f450e0811283f3d1e7e9c1c005956564d161cb8c9ca +d0dbd7d9dedad5d3d2d2d6d8d2d1d2d7d6cfcecfcfccced2d2ceced0cdd1 +d2cdced2d5ced3cccbd3d74e4a47474b4b48434145433d3c41423f414140 +3e3e3f40403637383b3d3c3a383a393737373937383a3936393b4142433c +36363e3e3a3941403b36393939383c403f3d3d3e3c3937313a4b5c5f5752 +52594c5b65526f3965817387f0a2071c5317072b3925282b292827252424 +242526262525242524252623232322211f1e1d1e20202223262829292c2e +2c2928292b2927252322201c1917171615120f0c0a0c0d0b0c0b0b0b0b0b +0b0c0d0e0f100f0e0e0e0d0d0c0c0c0c0c0c0c0c0c0c0d0c0e10100e0d0c +0d0c0c0c0c0c0c0c0c0a0a0c0c0b0b0b0d0b070d0c0000132f9d9779869a +9b80849aa08a7e9f9f8983979d8b7f9aa08d818e9a98768b8d896b787f52 +444f270006060606070b10151610054b5c6ba3bae9840814231b1a0f532e +2a232222221d1b211d202e212b10190f08090f100e09080a090a08040407 +090606060606060606050b0601142b1d000001bfc949285f0b302b312f31 +302c45322f2f232d3e122c2721251d242a0b12181915131517140c0f0311 +060304190403102e42035679130d6f193632425f1732b9537a2746481b4f +c2036a3f43571e71cca5d0584645411f193a1d2d362e2b2f362b394b3a25 +3a41242b3238351d2c211d1a1d252c2f302e26232b31323437e0e7a7b828 +232c3447061f1a1c433034809e11542d594214c3f3f7c741423e4b5cd8ac +7a66723f3d3d1e2f36262a304b564c3214000d040f343c230a0c153f87c7 +fce80048323a362428221c289ec8ae90946b11352d4864979524303e4641 +5b97740245435d364c150f182f46442582991a01606260521611a8b0aba9 +afa4a6afaca7a2a0a0a2a49e9da0a5a5a1a0a19e9b9da1a19d9c9e999e9e +9a9b9f9f9ba19c9ba3a7302c29292d2d2a252327251f1e23241e201e1e1c +1c1f2023191c1f222625231f1d191a171a191a181d1919191e212526211b +1e23261f212628201e1e211e20211f1d1c1d1e1d1b16111a2a3b3b332b2e +3b303d4839571f48645d7ff1a80404380900202c1415171312110f101113 +16171514141314141516151515141311100f0b0b0b0d1013151615181a18 +15141517161614141311110e0e100f100f0c09080d0f0e0e0e0d0b0b0a0a +0b0c0a0b0c0e0e0e0e0d0d0c0c0c0c0c0c0c0c0c0c0c0b0d0f0f0d0c0e0f +0e0e0e0e0f0f0f0f0d0c0c0d0d1011140f0b0f11050d2f4db3a88996aaab +9094aab09a8eafaf9993a9ae9c90a9af9d919ea7a583999b977883875a49 +552e040d0c0a0a0a0f13161e271131200f3e5da25f001b32261e08492c28 +242023201e18211a202c222b131d19110f13171512101310100d0d0c0e0e +0d0c0d0c0d0c0d0c0c110d071b312405050eccd65435701a352d3431332f +2944363941343947162c27222a232932151914141414191b160f1509170c +09071c0a1221394a0a5c80191678224039455b1539c35e832f4c4d2257ca +0c744a4c60267dd8b2de6754514c261e3e203039302e31372c3a4a382335 +3e232b3338362535292320232a313434342c2931383a3c41edf8bacb3830 +353c4f112c272749363987a7185b36644b1bc8fcffd9474542546aeac08d +75804b4a4d314247363a435d60543b2214353a52838b663e2f2b5094d4ff +f90c5c474d48353935303fb6e2c7a6a578193d36526f9f9f303e4e534b63 +9f7b094c4b653e541d1720374e4c2d8eac28025956554c0c008478686470 +757977706b676565686a6463656a6a6564656360626666625f615d5f625b +5c60615c645e5d6569928c858282807b76797c79737072716b7070727171 +6e6d6a6c6968676a6c6e6d6e6c6c6a6c6c6d6b6a6767666a6b6d6d6c696a +6e6e6d6d70706a676a6b6b6c6e6a67686a6d6d6d6b676e7e8c8e8780827e +839386607b507db5a599ffc20733753b2a4c5d4d50535152514f4d4c4a4b +4c4c4c4c4c4d4c4c4c474747474544424140404041434446474546484642 +3d3b3b3e3c3a38393836343636363533302e2c2c2c2c2b2b2b2929282829 +292728282826262625252424242424242424242424212325252322222322 +2222222222222424231c191c1d2423160a090c0c225770b3957182959577 +8191967f7896967f7d8f9380789197857a918e836d8a877c636565545135 +1609161110101116191c1d1f1462729cc5d7fd4f0b1409020f041c0f0b0b +0a0908090a120a0806030b0e1e15120e12151310100f0e0c0b0a0a0b0b0b +0b0b0b0b0b0b0b08100e0a1b2f22020c030c03333b30132c130e06080b07 +18140e0d07140716050b1018101f301f2521201f1a19191106100b222414 +08161305c6092b2148612327781b1d2933392a1c8b19191e46431b5c8e02 +2a1a2f44195a5a1837364a522f251127151e1f1c191b0d2e2b122527121c +0e150f15241d252121201d1c1b1c1b271e191816141a24d5590c21002633 +41f951293e371e1a69f87d1e442d331369cd0000222f492f39c2c3d25654 +5c3e431a17000028894c1201310000190a0c21171f0f000a1e58a4effdd2 +073b201a1b110d141400267c753e453d274632444e30b682524650383b32 +ef5b3b4d2f299bf9a4395c415a267fff835e7438586c304d86ccded5d8df +d3d6d3d2d0d1d1d2d2d5d4d5d9d9d3d1d3d8d3d1d2d0cccdd0ced1d1cdd0 +d5d7d2d7cfccd0d1615b5451514f4a45484b48423f41403d444646474543 +413f3f3d3a3b3c40404141413f3f3f4140403d3c3a3b3d4040403f3b3c40 +403f3f42423c393c3d3d3e424444424242403c3a343b4c5a5e575351484d +605f4869385a827378fac0031f581e092c3c292b2f2c2d2c292929292a2b +28292929292828282323232321201e1d1f2020212225272826292b2b2722 +202022201e1c1b1a181615151413110e0c0a0c0c0c0b0b0b0b0b0c0c0d0d +0e0f0f0f0e0e0e0d0d0c0c0c0c0c0c0c0c0c0c0c0c0e10100e0d0c0d0c0c +0c0c0c0c0b0b0a0a0c0d0d0d0a0c05040a0b00001435a49b77889b9b7d87 +979c857e9c9c8584969c89819aa08c8199968973908d80656462524f3314 +04110b0a0a0b0d1013131507505a7fa6bdea4911251f17210f2721232322 +2120212227221d1b1820222c160d090d100e0b0b0a090706050506060606 +060606060606030b0905162a1d000b0209002b38301c3f2f302d2f322b37 +3129292532283824272527181e29121613151514171a16101b1930322216 +211e10d01232284c66282a7d2025313d4536238f1d1d224d4a2263970b35 +253a4f2364641e39354c583e3a2f493942413c37382a4b4a31454a353f31 +352d3341373f37373633323132343c3631302e2e3239df611229052f3a4a +ff5a30473e272170ff84224b343a1a72d609072d3a543a48d4d5df5f5b63 +4a55363c2c2f5bbc7d422c5207061000021b1c2d200e101c4a92e2f4ce09 +43312e372e2c3332164194894b4e44304d3b4b5737bf895b4d593f4439f8 +6244543830a4ffad406548632d81fa7c607e496a7b374b7db9c3b3acac9f +a7a7a4a29f9f9e9ea1a0a3a8a8a5a5a7a7a2a0a19f9b9b9e9b9e9e9a9a9f +a19fa59f9ca0a1403a3330302e2924272a27211e201f1b1d1e1f2120201e +1d20202020242728282421201f202121201e1c1b1b1e2021212221222626 +25252828221f2223232425201e1e1f201f1c1a151c2b393a332c302e3543 +422e511e3e635a6ffbc500043a1002212d191817121312121316181b1c18 +1616161918181a151515171514120f0c0b0b0c0f1113141417191816110f +0f14121210100f100e10101211100d0b090d0f0f0e0e0e0b0b0b0b0c0c0a +0b0b0b0e0e0e0d0d0c0c0c0c0c0c0c0c0c0c0c0b0d0f0f0d0c0e0f0e0e0f +0f0f0f110f0d0d0d0d101013140d080e10070f3353b9ab8798abab8d97a7 +ac958eacac9594a8ad9a92a9af9c91a6a3957f9c998c716c695754381908 +150f0e0c0d1013161e2e112c101b3c68b0310f2d2a1c210b232123232221 +20212228221e1c1921232f1b1410141715121211100e0d0c0c0d0d0d0d0d +0d0d0d0d0d0a12100c1d312406110810053641382143302f2a2e312b3a39 +34342d3a2d3a262a262a1b2330191b13131414181c1a121f1c3335251923 +2216d91b3a30556c2e2f812327333c4336299826262b55522a6b9e123b2b +40552c6e6e2a46435964453f314a3942423b35342547452c40442f392b32 +2b313f363c353433302f2e30313d363130302f343ce86c1e3411384451ff +61384c442c2776ff8c2b533c422279dd100e33405a404fdee1ef6e6d755a +63414431345fc08242224706122b2637595c6a583a3232599ef3ffdd164e +39353b322f383a1e4ca09453554c375542535e3fc691625560474b41ff6a +4b5c3f38abffb4486c506a358eff8e5f73375c76303c5c7f7c6b6d7f7771 +6a6866646464646766686d6d69686a6c67656664605e615c5f5f5b5a5f61 +5e68615e6263a7a09892908d8985898a87817c7b78737b7a79777572716f +736f6d6c6f7071706d6b6c6a6b6b6d6c716e6d6d6f6e6e6c6c6f706e6f72 +7370736d6b6f727274776f6c6e70737272706d737f8b8c8780828182897a +69916477b4a787ffea073d7b472e4e63545659595a575654545353545051 +53545453514f4c4c4c4b4a484645444444424344454540424545413c3937 +39363332333433323232323132302f2e2d2d2c2c2c2b2a2a2a2a2a2a2727 +272726262625252424242424242424242424212325252322222322222222 +2222222424231c191c1e2523150b090c0e205576be9a6d85999672859194 +7a7b95947b828f927d7a8f96817a988f7a68847d6a5e6857535514060913 +0f0f0e0e111315162d257077b5caeae1140c120504120c0a07090d0d0908 +0a0e040d0f10110c141117141012141211110e0d0c0a0909090a0b0b0b0b +0b0b0b0b0a100c07182d230700091103424733251c09120f090d0f192301 +152a0b04010d0a10150818231e2320201e1b1a1b140c1813131e15100d14 +00a9000b1a664f211c3313120c535a1c1231090b1c49621a393d1c0f1a42 +513052351809383f593a3517170c0e0a110f230b191b201f1217160e1109 +0b120c121e22242018121112282525221b151a22de0a001924242351ab11 +00232f2a3174880e071a2e3c278683131c213c3d3eb6a200031a6f45334e +23130e17004d1800144512262c08031813170a04111e4072d5c7951a372c +1e2a3a382e1d19358a0d0e111f444b374837000f0b4442413f3603251150 +343c580d001327883e3d1b5c5c16556f234f5c15387de1cad8d9d9e2dddc +dddddfdeddddd8d6d7dbdcd7d6d8ddd7d3d2d0ccced3d0d1d0cdd1d7dad8 +dad4d0d1d277706862605d5955595a57514c4b48434e4f4c4b4846434345 +423e3f404242423e3e3e3d3d3e3f3f43413f404141403d3d40413f404344 +41443e3c404343454a494948484845413f3a404d595c5752514b4e575553 +7f4c54817565fae502285c270d2c3f3132343132323130303030312d2e30 +3131302e2b2828282726242221212121222223242621252828241f1c1a1d +1a17161516151413131312100e0d0c0d0d0c0c0c0b0c0c0e0e0e0e0e0e0e +0e0e0e0e0d0d0c0c0c0c0c0c0c0c0c0c0c0c0e10100e0d0c0d0c0c0c0c0c +0c0c0b0a0a0c0d0e0e0b0c04050a0b0000133bafa0738b9f9c788b979a80 +819b9a8189969b8683989f89829e95806e88816e60675451531204040e09 +090808080a0c0d23185e619aaed2d11012251b1c261816191e22221e1d1f +23182223242520261f180f0b0d0f0d0c0c09080705040404050606060606 +060606050b070213281e0500080e003a44332e2e2332332d312e363e1c31 +482925232c26252410171c1114121514151a1f1c172622222d231e181f07 +b202121f6952241d361617145d642617340c0e1f4d662140442318234b5a +3b5c3e1c0b383f5d474833372e2e282d293b2331353d3d3037362c2f2625 +2c2428343638342c2625283c3a3a37302d2f35e7110020282b2758af1804 +2b343236798c120a1e32402b8d8a1a232a454647c0ae020a20724b3f6241 +3c404f3089542b3f65252a2400001119251b12181b3361c9c1931c403d33 +4658554b3a324b9e1e1718234b4f3e4c3e00160f4b4648433d072c155738 +435c14001a2b8f42441f5e540f577933616b1e3876d0b1b6b0a7afaeb0af +afadaca9a9a4a2a5aaaba9aaacaca6a2a19f9b9ca19d9e9d9a9ba1a4a5a8 +a4a0a1a2534c443e3c3935313536332d2827241d2525232421211f202423 +202226282828201d1d1c1c1d1e1e22201e1f20201f1f2124252324272825 +282220242727292b252324252624211f1b212c3838332e3031363c383b69 +3438625c5bfaeb000d3f1804202f1e1c1a17181717181a1c1d1e191a1c1d +1e1d1b1b18181819181614110e0d0d0d0f1011120f131616140f0c0a0f0c +0b0a0a0b0d0c0e0e100f0f0d0c0b0e0e0d0d0d0c0c0c0d0d0b0b0a0a0a0a +0e0e0e0d0d0c0c0c0c0c0c0c0c0c0c0c090b0d0d0d0c0e0f0e0e0f0f0f0f +0f0f0d0d0d0d0e1114140c090e10090d2f59c4b0839bafac889ba7aa9091 +abaa9199a8ac9592a7ae968faca38c7a948d7a6c6f5b5658170908120d0d +0a0a0b0d0f122e102c0c2f417c9600102c2620251614191f23231f1e2024 +19232425262128221d151113151312120f0e0d0b0a0a0a0b0c0c0c0c0c0c +0c0c0b110d08192e240a050e1505454d3b33322431312d31303a47273c50 +312a252e292627131c231819121313151a201f192927273226211a230db9 +09182570592b223b1b1a165e65271d3d151728566f29484c2b1f2a526141 +65472717444b684d4c34362d2d282e2a3b2331343b3b2e34332a2d24242b +2426323436322a2424263d3b3b38332f3239f01b0b2a33333060b81e0a2e +38353a7f951b13273b49349592222b314c4d4ec9ba0e1a2e835b4d6d4940 +415031895426355a2333391b22444d564735322c3c69d7cfa02849443849 +5a594f403956a92820202c5358465546091e18534f504c4510341e5f414b +651c092234974b4c286a691f566e2655681b2c599c6f6f70768076737373 +72716f6f6a686a6f706d6d6f716b676664605f645e5f5e5b5b6164646b66 +626364b1aca6a1a0a09f9e9e9d9a95908d89868d87847c7b787b7a787576 +747673716c706e716e6f6d7070757274727573726e707777717279797374 +6f6d727677797c7473747779787774737982898b87818187848374657f5f +76aeb07effff164f7d543350675c5e6060605f5e5b5a59595955565a5b5c +59565354535351514e4d4b4b494848484647484243454445413f3e3d3834 +323333333231313130323130302e2d2d2d2c2c2b2b2c2c2b2a2726262526 +262625252424242525252525252525212325252322222322222222222222 +2425231d1a1c1e2524180f0a0c101d517ccba1698ca1996d8c9694768297 +9478879091797e8e957c798d8f76657d78625e5e453d3a020a080b0e0e0d +0c0c0d0f112e3a7a83bfceff92110f04060d080c120a0b0e0c0907070906 +13030a050b120f17151112131111120e0d0c0b0b0a0a0a0b0b0b0b0b0b0b +0b0f0e0503162d25080b001e1d31403e132f10100c081518211c0f090000 +1919090e0f151021171821201f1e1a1c1e1a120f170911070e020c052a09 +030a7557211b001416056a6d1311041e251c3e601a080125081246532e34 +111c0646454d26210d06070b0d15120e1f0e00140d04000700060d0e0905 +0d0d101514110c0b0900030a0e0b0603066600190b0125261d260017130b +25212022151f17212c2c2910090f220f20152a20142b423e365f3e17270d +05000000674e21051015331f1722190b0e23241f26060f130727300e120c +01102b2b1aa03710141a422a39552c2d1a2049283e57321208314e3a3f40 +27181b223c2c3d3c1b1b036172325451302371d2c2d8dadbe4d9d8d9d9dc +dbdcdcd8d6d7dbdcd8d7dadad5d2d3d2cfd1d5d3d2d0ced2d7dcddd7d5d5 +d8d9817c767170706f6e6e6d6a65605d59575e5b554f4b4b4b4d47474546 +45443f3d3f4040403e3f3f42444443444445414041484842434a4a444540 +3e4347484a4f4c4d4c4c4c4a4643404650575b5753505452564f4f6f4752 +7c7d5af9fd0e355c33112c42383938373738363634353434313436383836 +31302f302e2e2c2b282826262525252526272124262725242221201c1816 +1515151412121211100f0e0e0e0d0d0d0c0c0d0d10100f0e0e0d0d0c0e0e +0e0d0d0c0c0c0d0d0d0d0d0d0d0d0c0e10100e0d0c0d0c0c0c0c0c0c0c0b +0b0a0d0e0e0e0c0d07090b0b00000f41bca76f92a79f73929c9a7c889d9a +7e8e979a8287979e848193957c6b817c66605d423b380008030608080706 +03040608242e6a6ea8b6eb830c18171e251d1c211c2022211d1b1b1b1825 +151c141a211a18100c0d0e0c0c0d09080706060505050606060606060606 +0a090000112820060a001b18293a3e1c41282e2e2a34363d3427241d173a +3b282a24241820100b12121414161c22221d1e261820151c0d170e311008 +0d7557211a0115190a72751b14071e281c41631e0c05290f194f5a373d18 +1e064445502f3325222527272a25213223112d272017231c2027261e1921 +2124282824201d1d11171e221e1916156d001b0f042a292229021a180e2a +242325151f1a242f2f2d140d132916271c31261a2d413d39695238534341 +323b26a0783c14130d25141126261a1c282113160009110b3241262b281f +2c44422cb14417181d462d3d5830301e234d2b425a36150c34523d43432b +1b1f25402f413f1b170063793f635f38246bc4acb7b1a9b2abacababaaa9 +a8a8a4a2a5aaabaaabaea9a4a1a2a19e9fa3a09f9d9b9ca1a6aaa5a5a5a8 +a959544e49484847464645423d3835312d342e2b25232225262625252527 +26241f1f1e201e1e1d1f20242223222423211f232a2a24252c2c26272220 +25292a2c302928292a2b29262321272f3637332f303939393438582f385b +624ef8ff0b1c3d22071e30221f1e1b1b1b1c1b1d1d21211b1b202222201e +1c1c1c1c1b1a18161513121111121213141012141516141211120e0c0a0a +0a0b0c0d0d0f0e0f0e0d0d0f0e0e0e0d0d0d0d0f0f0c0b0a0909080c0e0e +0d0d0c0c0c0d0d0d0d0d0d0d0d090b0d0d0d0c0e0f0e0e0f0f0f0f0f0f0e +0d0e0e0e0f12150f0d0f100b0a2b5dd1b77fa2b7af83a2acaa8c98adaa8e +9ea9ab9196a6ad918ea1a388778d88726c6549403d050d070a0c0c090806 +07090922162c113848964c00171e28291e191e1c2123221e1c1c1d1a2717 +1e171d241c1c161213141212130f0e0d0c0c0b0b0b0c0c0c0c0c0c0c0c10 +0f0604172e260b1005221f34444621452a2e2d2b3638413e332f251f3f3d +2a2d25271b25171217121215171e252521232b1d25181f0f191337160e14 +7d5f2920061a1e0e75781e1b102831264a6c27150e32172156623e44202a +10514f59363727232528282d292738281531282118241a1f26261f1a2020 +222626221e1d1c13181f23221d1a1a750927180d30322830061f1b132d29 +282c1f29232d3838361d161c311e2f243932263a4f4b48755b3d56433f2e +37249a6e3311181a3c32354c493b363b2c171905151c1438482a2f2b2130 +494836bb4d2121264f3646613939272c56344b633f1e153d5b464c4c3424 +282e49384a4827280b6271365c603a1e5597707471747f706f6f6f6f6e6e +6e6a686a6f706e6e716e6966676663626661605e5c5c6166696667676a6b +b3b0acaaabacaeafadaba8a6a39f9d9d999896918f8b8a888884807c7c7a +79777c7c7e7b7a787b7c7674757578777774787e7f78797f807976717074 +787a7d807777787b7d7c7a787a7e85898a88827d80828b7342353471a7b9 +82f0ff32607a61384e69666766676666656362605f5c5b5d6162635f5c58 +5a595957565352505351504f4f4e4e4e4c49474546464644423e39363534 +3433323131302f2f2f2f2e2e2e2e2d2d2c2b2d2d2c2b2827262526262625 +252424242525252525252525212325252322222322222222222222242524 +1d1a1d1e25241911080b131c528ad9a96695ac9f6994a09571899a94738a +929275838d947577808c7267817f574d2f1e1b150114090f1111110f0e0e +10141f487c91bed8ff35281f05090e00070d0f0c0b0a0c0b08070e170517 +091c111216141113131010130e0e0e0d0d0c0b0a0b0b0b0b0b0b0b0b0e0b +0408223625030806130e324132222902000911110102140903021400001b +18121b2337131721201f1c191b1e1b13071e171808120910112b1b071660 +5f182a0e150b1468591b1a1f1e0d215a551d2413251310555e212e122b1b +4052552a1c151112130f04111618091a22001409080a0a0d0c0707040807 +0b0d1311100b07080b0f12110c095301091b061b2d2d0c00211708253434 +0e1b171d1827483b1b1a0c12233f3655191f0a57503b57422e1d25221400 +0b513218131e152f2720251b131c2f2f2115211e0a0109281f2b1711181f +0e008e451021232c0d46642300302f1b1d4d552c32204d2f1e4852151628 +44272b36501324256d4c32513e423b439eded7d5e8d1dddadad9dbdddfe0 +d7d4d5d8dad6d6d9d7d4d3d6d4d0d0d2d7d3d0cfd2d6dbded0d3d7d9da84 +817d7b7c7d7f807e7c797774706e6e6a6966625e5c595956544e4c4a4947 +464a4c4c4b4848494c44444345464745434a50514a4b51524b484342464a +4c4f534f4f5050514e4946484c53575957544f4e535f502d241b4d72835c +d8fc2742553e142a443d3d3d3c3b3b393a3838363636393c3e3e3b363434 +353333302f2c2b2d2d2b2a2a2b2b2b292826262527262725211c19171616 +1514131211101010100f0f0f0f0e0e0e0d1111100f0f0e0d0c0e0e0e0d0d +0c0c0c0d0d0d0d0d0d0d0d0c0e10100e0d0d0e0c0c0c0c0c0c0c0b0b0b0d +0f0f0e0c0d080b090a0300104fcaaf6c9bb2a56f9aa69b778fa09a799199 +9b7e8c949b7d7f8692766b85835b502e1b19130012040a0b0b0b09050507 +0a163c6c7fa9c2f4282527182127181a1d21201d1e1e1d1a171e27152717 +2a1f1c150f0c0e0e0b0b0e09090908080706050606060606060606090600 +031d312001070510092a3b3229381a1c272f2d19192a211e1f3218223a34 +272a2b380e0c15121413151b232521163029271620141a1930200a175f5e +17270d140b176d5e201a1f1d0d205a552027162818155c632835172b1a3d +5155312b2a292c2b23132024261a2c36082b2120221f221f191614181a1b +202324201d161a1d2124231e165704091e061e2d300d01221b092935350d +1a161d1827483e1e1d0f1728443b59191d06534c3a5f55504b5d60574450 +8d572d1d1f0b231c1b2a262028332a1305171b0a06143a3745332d31371f +03984e1324232f0d49642600332f1e1d50552f32234d321e4b5218162b44 +2a2b39501320226f523d5f4b4b3f4095cbb9aebaa0afaeacaba9ababaca3 +a0a3a7a9a8aaada6a3a2a5a39f9ea0a4a09d9c9ca0a5ab9ea3a7a9aa5653 +4f4d4e4f5152504e4b49464240403c3b38343330302f312e2b2829282625 +29282b27272428282320222125232422282f30292a30312a27222125292b +2e322b2b2c2d2e2c2825272b32363836322e333942341810053352674fd6 +ff252a382b061a312724211c1b1b1c1c1f1e201f1c1f222424211f1c1d1d +1e1d1b1919181817181717171818161515141415171715110e0b0c0b0c0b +0c0b0d0c0d0d0e0e0d0d0d0d0c0c0c0b0e0e0d0c0b0a09080c0c0c0b0b0a +0a0a0b0b0b0b0b0b0b0b090b0d0d0b0a0c0d0e0e0e0e0f0f0f0f0e0e0d0d +0f0f12130e0f0d0f0d082c6bdfbf7cabc2b57faab6ab879fb0aa89a1a9aa +8d9ba4ab8a8c929e8277908e665936221e180417080e0f0f0d0b08080a08 +0714211b3655a50012291f2b2b15181a211f1d1d1e1d1a171e271527182b +201e1a151214141111140f0f0f0e0e0d0c0b0c0c0c0c0c0c0c0c0f0c0509 +233726060d0b171035453a2f3d1c1d2731301d1f352d29273a1d243c3728 +2d2e3c141219121214161d2627241b342d2c1923181c1c34240f1c65641d +30151c131e7364262227251528625d272e1d2f1e1b62692e3b1d35224859 +5d372e2b292b2b2416252f3324363d0f312524242225231d191418181a1e +2222201d191c1f232827221c600b13250e2335351204261c0d2a39391522 +1e25202f50452524161d2e4a4162232a14615a486a5c524b5a5b503c4b85 +50261c21132f2d31403c33383e3013061f24120c183e3946342e353b260c +a2571c2b2b3615506c2d073a372525575d363a2a553926525a1f1e324c31 +3340581d2e2b6e4e395f53523e316e93796b7e657371706f6e7071726966 +686c6e6c6d706b68676a6864616365615e5d5c60656a5f6367696ab5b4b2 +b0afb0b2b3b5b1afafaeabacb0a3a9adaeaba49c97a29a9089878b8f9183 +8586837f7d7f827c7b7a7b7e7f7e7b7d7d7d7b7b7e7e7b7c7775797d7e80 +837c7a7e8082827e7b7e83888a8a88817a807c83723c18216ca0bc8fc9ff +5566786e3c4e6d6e6f6d6e6c6c6c6a696864636466696b6a676360605f5f +5d5b5957565b5857565655555556514d484948474647413d3a3837353334 +333231303030302f2f2f2e2e2e2c2c2d2d2c2b2827262626262625252424 +2426262626262626262123252523222223222222222222222425241e1b1d +1f262416100408161f599de6b0649fb8a7679eac996d8f9e976f8b949372 +878b926e74848c66637a703a352b06110b0b130b150d0f100d0c0b0f1317 +507da5c7ecea0d2b210f0909090e01100b08090d110f0d0d07060e041603 +1411111114131010120e0f0f0f0e0c0b0a0b0b0b0b0b0b0b0b09090a162f +3d2501001332384d4d3429260f0b0e17121c4ee099bed4bec6002519121b +2440121b1d201e1a14181a191218110000001210091024141826926d0521 +1019102ba7a20a221c190a2e9c8b1125130411167164081f0821242e5a5e +20291d160e10120e64002000004b0f081204120c0b10151d0d0b08080b12 +13110d100c0400000505031d1b100f00303807220b222113242c251b1521 +23132c3938a60745210033511e1c293d473f453e311c271a002400133512 +2e00182111212f201c1e2227292b260f1a171520342e2c1b1e0f0a132481 +2f0e28322517615e1423312c1d2a53440804404c2b3c47491320262f1f32 +463d141f4d7c3d4b65302a214494cbd2d4e6d9e3e1e0dee1e2e5e6d7d4d4 +d7d8d4d4d8d9d6d6d8d6d0cecfdad5d1d1d3d4d8dccdd2d6d5d387868482 +8182848587838181807d7e8073777b7c787169646f665c5553575b5d4f51 +524f4b494b4e484746474a4b4a494d4f4f4d4d50504d4e49474b4f505257 +5152535454524c494c515658595a534c514f5a502a070b486b8568b0fb47 +464e491729474443424140403f3f3d3c3a393d3f424443403b3838373735 +33312e2d3232313030303030312e2a27252726262724201d1b1917151615 +1412111111111010100f0f0f0e0e1111100f0f0e0d0d0e0e0e0d0d0c0c0c +0e0e0e0e0e0e0e0e0c0e10100e0d0d0e0c0c0c0c0c0c0c0b0b0b0e100f0f +0d0d050a050706001762d7b66aa5bead6da4b29f7395a49d75919b9c7b90 +929a767c8a926a677e743e382a030f090911061007090a070302060a0c43 +6d93b2d8d701292b212223232516231d1a1b1f211f1b1b1211190e200d19 +100c0c0f0e0b0b0d090a0a0a090706050606060606060606040405112a38 +200000122f33454a34303524252a302a2f61f4afd6f1dce7134435272a2e +410d101112121112192224212a24130f0e201b131528181925916a021e0d +160f2baaa50d211b16092d9b8a11251304141976670d220b202128575e25 +372f2b232421196d032b08105b211a2517251d1d1f242b1b1918161b2023 +1f1b1e1a120c0d12120c201c0f1000313708210c222213262c2518121e20 +102b3837a50745240036541e1923353f374145423b514e3a653b546c303c +0216180516292224282b28231b160618181d2e4646463738271d202d8832 +0e28312516615d1422312b1d2953430803404b2b3b4748131f262e1f3146 +3c131c4a7d4355703c3426458dbab8b1b9a9b5b5b2b0afb0b1b2a3a0a2a6 +a7a6a8aca8a5a5a7a59f9c9da7a29e9e9d9ea2a99ba2a6a5a3555452504f +50525355514f4f4e4b4c4f42464a4b49423c39443e352e2e3236382a2c2d +2a262426292322212225262524292b2b29292c2c292a2523272b2c2e322e +2e3031322e2926293035373838312b35323c351600002e4b6759acff4431 +35360717322c2822201d1d1e1d201f2120202225272623211e1e1d1e1c1a +1818171e1d1c1b1d1d1d1e1f1b1716151615171814100f0d0e0c0b0c0d0c +0d0e0e0e0e0e0d0e0c0d0d0c0c0e0e0d0c0b0a09090c0c0c0b0b0a0a0a0c +0c0c0c0c0c0c0c090b0d0d0b0a0c0d0e0e0e0e0f0f0f0e0e0e0e0e0f1013 +130b0c070c100b337eeac67ab5cebd7db4c2af83a5b4ad85a1abab8a9fa2 +a78389969e7673897f4941320a140e0e160a140b0d0c0906050905001620 +31477592001c2d2b2924201f11211d1a1b1f211f1c1c14131b10220f1d15 +121215141111130f1010100f0d0c0b0c0c0c0c0c0c0c0c0a0a0b17303e26 +040518363a50533c363a27262b342e3568ffbce2f9e4ec154638282d3045 +131615121212131b2428242e28171313231f15182b1b1d2b97710927161f +1733b3ae1629231f1135a392192d1b0c1b207c6e1327102628325e662b3a +312c2425241d76123d181f682d242c1e2b242124292e1e1a17161a202220 +1c211d150f131818132721171505353d0c260e242415252e271f1b272919 +33403fad0f4d2b073d5b26222d404c444f4f493e504c355f354e672e3c02 +171b091e332e2f32342d251b160b1d1c202f484847383929212834903b16 +30392d1e69651c2a393325315b4b100b485333434f501b272e3627394e44 +1b25517f41567648402c3d708c7b6d766777787674747577786966676b6c +6a6b6f6d6a6a6c6a645f6068635f5f5d5e62685c62666563babab9b8b6b6 +b7b8bcb6b2b4b4b2b5bbb3b5b9bab8b3ada8ada8a19d9da0a2a48e91918d +8784868a8a888686888a8a89837f7f82817f7f8187817f82858587888080 +82848686828083898a8b8b89817681787c7450242a67a0b6a0adff766679 +794050737575737474747474726f6d6c6e6e6f70706d6a68676766646260 +5e5c5f5e5d5c5c5a5b5b5a56524f514f4d4b48464341413f3b3836353332 +2f2f303030302f2f2f2e2d2d2c2c2c2b2928282726262625252424242626 +2626262626262123252523222223222222222222222426241e1b1d1f2625 +1712030718205caaefb564a9c4ae67a6bda16e99a69e6f8e9695718b8990 +6973868a5f61675235657c081110130c1310090b0d0b09090e131b507cae +d3faa00e2815150f040e11050f0f0c0c0e1215181900230a120a00150d0e +101414100f110d0d0e0e0d0c0a090b0b0b0b0b0b0b0b070a0c1529362508 +1300182c2f46370c2711000005001671da52502f3ce9081e121418163912 +2519211e17121317150e1d0000060a0715101006192830b46c0f1f101f28 +38bbda0520081f1f3ca4a303291f143242a7891f2c05123247918f1a2812 +130f191f30e700805b00745300110000000f160307020e0b0b090b0b0d0d +1d1a1005030a111106040e2a2d3c372608001b21223f411f060a2b262b4d +512c450161342853582d07094036326e523245212a18163fcf92ee9a0713 +2f23201b201d22221f232b2720201400120f16162414081f1808190c1620 +33223674490d112b4025285e590c1d392a1b53572f06292e322245501f12 +42646f294756241b1760bbadd3d7d8edd9d8d8d8dadadadadad7d6d8d9d5 +d5d8dcd8d6d7d6d1d1d4ddd6d2d3d4d1d4d7d4d8d9d3cf8b8b8a89878788 +898d8783858583868c7f818586847f797479746c68686b6d6f595b5b5751 +4e50545452505052545455514f4f52514f4f5157514f525555575b545656 +585856504c4f5458595a5b5349544c55543d1413436a7f7792fa64414d53 +1b2a4a4b494646474746464442403f434546474744413f3e3e3d3b393734 +32353534333334353534312d2c2c2c2a2729272421211f1e1a1817151412 +12131311111010100f10101010100f100f0f0e0e0e0e0d0d0c0c0c0e0e0e +0e0e0e0e0e0c0e10100e0d0d0e0d0d0c0c0c0c0c0b0c0c0e100f0f0d0e06 +0c040708001a6fe0bb6aafcab46dacc3a7749faca475949d9c799391986f +798a8e6365695437657b050f0e110a0e0b030507050000050a0f426b9dc0 +e88f03271e2728212c2c1c221f1c1c1e20232324072d141a1202180b090b +0f0f0b0a0c08080909080705040606060606060606020507102431200612 +00152729433715362616121d10257fec68684c5aff2a3d2e2927203a101c +0d1212111017212320321515191914201a16071a282fb2670a190d1c2636 +bbda051d05191c39a1a002281e133242aa89222d06102d428c8e1f332227 +23292d37ee018863077f600a210b08031e230e120d191917171719181828 +251b100e151a1807030b292b3c352606001921203f3f1d01042520254a4e +29420060342753582c0200342a2668553f5e45584c4d76ffbeffa3080e25 +171615202027251d1a1b19171e150720232e303e2c1d2e210d190b151f30 +213373460c0e2a3d24255d560b1a38271a50562c05262d2f21424f1c0f3f +62702d4e5e30271f64b9a1bcb6aebeacacaaaaa8a8a6a6a6a3a4a7a8a7a9 +acaba7a5a6a5a09fa2aaa39fa09e9b9ea4a2a8a9a39f5555545351515253 +57514d4f4f4d50564d4f5354544f4a454a45403c3e414347313535312b28 +2a2e2e2c2a2a2c2e2e2e2c29292c2b29292b312b292c2f2f31342f303133 +34302b272a32353639393228352f363b2e05012b4860658bfd622e344009 +1534322c2522202022222321232223252627272423212020211f1d1b1b1a +1f1f1e1d1f1f2022211e1a191a191717171512121212100f0d0d0d0c0c0c +0d0d0e0c0d0b0d0c0c0c0c0c0c0b0c0b0b0a0c0c0c0b0b0a0a0a0c0c0c0c +0c0c0c0c07090b0b0b0a0c0d0c0c0e0e0e0e0e0e0f0c0e0e0e1013140c0e +0609120c358bf3cb7abfdac47dbcd3b784afbcb485a4adac86a09ea57d85 +969a6e707560436f830c1413160f120f0709090703030805001525456294 +57002225312d1d242516201f1c1c1e21242526092f161d15051d100d0f13 +130f0e100c0c0d0d0c0b09080a0a0a0a0a0a0a0a06090b142835240b1805 +1c2e334c3f1a3b29171321162c88f875745462ff2c3f312a2a223e152111 +1512111118222622351a1a1d1e1a241c16091c2a34b76e112316273141c7 +e60f260e232542aaa90a30261b3a4ab19127310a15334992942335222622 +292e3df8149f781b91711a2e15100c25291418111b19171717191a1a2c29 +1f14141b211e0c08122e303e3a2809001a21213d4020080e2f2a2f535732 +4b08683c2f5b603409083e3632745e45624556484871ffbfffaa0d122617 +151522252b2a201b1c191a21170921222e2f3f2e2031281321131d273929 +3c7b4f141732462c2e655f1323403022595e350d2f3538294b5725164667 +7230546940372a63a47b867366786b6f6e6e6d6d6c6c6c69696c6d6b6c6f +706c6a6b6a6562656b6460615e5b5e63636869635fbebfbfbebdbcbcbdc0 +b8b4b6b7b5b9c3bebdbab7b5b6b7b8aaabadb0b2b0aca8a3a6a6a29b9799 +9d99969291929495948d86868c8c85858c8d8885888a898b8c838385888b +898682858b8c8b8c8a80747278897b4f1b2460a1b0aa9fff89617b814453 +777b7b777a7b7b7c7b7a757572747476767672716e716f6f6d6c68676463 +60615f5f5f605f5b575657595856514b494848484643403a373432313030 +313030302f2f2f2d2d2c2c2c2b2929282826262625252424242626262626 +2626262123252523222223222222222222222426241e1b1d1f26251c1604 +06181e5baef3b864afcab267aacbaa72a2aea573929896708d888f65717b +835f64594352c1ce0b070e14071e0b0a0e100e0d0d1218204875aad6fa56 +1b380d19190304070a0f12120f0d0f171e18118b7a8f470a06090b101514 +100e110b0c0d0d0c0a09070b0b0b0b0b0b0b0b0b0c090a182826160a031d +2420352f22392c2c4f733a00218c23524b4d34000710191a0a311a341a20 +1e16101014120b0705405331011d32061b1515235f381a20210e20234e7d +0c18191f11426a660817100f1c288f6d12210f2931175171012c101c1b14 +0003ee8fdaf1a4d2610070956c5b8c7c240d1810100f0b07070c11070b08 +0000030a0f0f151a011b443d1d140414161633412612141b1a323f611e1e +0b1a1722575b32170f2d3b20866b302415200c0b67e32af157021b1c2c29 +34221b1e24262d2d1f191818062a1119151d2211171f4126191a0d211848 +7b3a1607292420626d33180d1b3a1f5f862910121c321b7075260a2b323e +20596b5a635f55d6bfdcd2d9e7dcdcdfe0e2e0dddbdedad9dbdbd6d6dadb +d7d4d6d6d5d8ddded7d3d4d4d0d1d4dcdfddd4d0909191908f8e8e8f928a +868889878b928b888582808182837576777a7c7a76726c6f6f6b64606266 +625f5b5a5b5d5e5f5c57575d5d56565d5e5956595b5a5c5f5757595b5b58 +524e51575a5b5c5c5347474f625d3c0a0d3c6b788182fa753a4d581e2a4d +4f4e494a4b4c4b4b4a47444448494a4b4a474443444442423f3d3a383636 +343535353636323130313333302c2a282727272723201a19161413131314 +12121211101010101010100f10100f0f0e0e0e0d0d0c0c0c0e0e0e0e0e0e +0e0e0c0e10100e0d0d0e0d0d0c0c0c0c0c0b0c0c0e100f0f0d0e0b100506 +08001973e4be6ab5d0b86db0d1b078a8b4ab79989f9d789590976b777f87 +63685b4554c1cd08050c1205190604080a080404090f10386598c4e84812 +37172c33202425242222221f1b1d22282219937f944c0d0707060b100f0b +090c0607080807050402060606060606060606070405132321140902181f +1a32322b48414467884b082e9c396a666a531b262c31291435182b0f1412 +1010151f211e1f1d586843102a3c0a1d1515215d33151a1b081d214c7d0a +1513190b3f676305160f0e1b288f6d13200f242a104c70063720302d240a +08f294e0f7acdd6c0b7da37a6799862f16211b1c1b171313171c10141107 +030a11120e1315001642381b1002101412323d220b0c13122a395b181808 +171621565a2f1005222f147e6a39373343363591ff49fd5900111021202c +211b1f2321221e1010161a0f3825312f373a252526442516170a1e154578 +37130426211d5f6a30150a18371c5c83260d0f192f186d72230729323e23 +5d7265706b5ed8b8c7b2afb9afb0b1b2b0aea9a7aaa6a7aaaaa8aaaeaaa6 +a3a5a5a4a6ababa4a0a19e9a9ba1aaafada4a05556565554535354574f4b +4d4e4c505a5452514e4c4d50514344484b4e4c4846434646423b37393d39 +36323132343535332d2d33332c2c33342f2c2f313032363030323433302a +262a303537383a3226252f45452e00002449576d7afb742936440b143434 +2d25242322232526252423252627282724232123222322201d1d1d1f1e1d +1d1d1d20201e1c1b1c20201d1917151414161514110d0e0c0a0b0b0b0c0a +0a0a090b0b0a0c0c0c0c0b0c0c0b0b0c0c0c0b0b0a0a0a0c0c0c0c0c0c0c +0c07090b0b0b0a0c0d0c0c0e0e0e0e0e0e0d0c0e0e0e0f11141112070812 +0a348ff7ce7ac5e0c87dc0e1c088b8c4bb89a8afad85a29da477838b936e +73675160cbd50f0a11170a1d0a080c0c0a07070c0a00162a5078a621013c +2133341b191b1b2022221f1c1e242a241c96839850120b0a0a0f14130f0d +100a0b0c0c0b0908060a0a0a0a0a0a0a0a0a0b0809172725170f081f2624 +3b39304d4446698d521037a946766f72581d282f312c16381d3013161412 +121821242223215c6d4715303e0b1c171726623a1c242514282e5989151e +1d231548706c0e1e1716233097751825112a311752750939202f2d240c0e +feaafaffc3f3801c8db08573a28f351d261d1c1b171313191e1519160d0b +12191914181b041a453c1e1103111511303c2313171e1d35436522221120 +1e295e6236170d2a391e8972403d3545353490ff4eff680a19121f1b291f +1b2328252621131117190e3824312e383c26282c492b1d1e13271e4e8140 +1c0d2f2a266873391e13214025658c2f1618223821767b2c0e2c34402868 +8277837963cd9b9875656e6e73757675736f6d706c6c6f6f6c6d716f6b68 +6a6a69696e6c6561625e5a5b606b6f6d6460b8b9b8b7bbc2c2bebdb8b3b1 +b4babfc4bfbebec2c8c7beb6b3aeb0bbc1bdb7b5b2b2b1b0b0b1b3b4aca3 +9ea1a39f9a989b9795959797928e8c8a8a8b8d8e8d8c8e919395918e8c8b +918e87997f8888646f77866e6a152657a3aaac91ffb7538882584d69827b +7b887a7f7b777e7c7a7f807d7c79787778787573716d6b696a6968656566 +6a6b69646565615c5b5c605b54525151524f4c4a43423e363536342f3031 +323231302d2b2d2d2c2b2828272726262626262626262424242424242424 +2121232424242424212121212121212325251f1c1d1e2626140a0d030c2d +47bcf6af67b1ddae63badead6eafc8b076a6ae8d6c848a806671886f5c5c +4b4593e0a109010f0f190a1c0d0b0a0b0c0d141f29384da2bfcc381a311d +16170c091015170c1203160b17160e066b08000c1905101212121211100f +0d0c0c0b0b0c0c0d090a0b0c0c0c0c0b0a0a0c1019242f361e061f203144 +24284f363999d4740661f194c3c8bb9e13121516161620292214211f1915 +0d2510110209d0218d8e3fb70013231423483b2328121a171e3d351b3015 +11132844341f270a1016203a311c2b1318333ccf281a177345dceb2504a8 +1d000d000c060049937f5268691407130f0d091a070e0013004798663e00 +50000f13120c1019212018120c0d1e2b2b1f1b11150c2c54391d2b0b0d07 +3259383a271a1122316f3b42314d8e651c00ae6e82131522262f3f2d1c19 +19222524272920151301181204003c2d1e0021160514191108115f5a394d +0b171e1066662234111c14226d5724140f1b1a1f65663b1013273620753c +4d717d668480d1cddeeae2dfdedbdcdadbdad2d0d4dcdfd8d4d6e0dad4d1 +d3d6d8d7d9d5d1cfd2d4d6d4dadcdbd5d18a8b8a898d9494908f8a858386 +8c91938b87878b9190867e7b76788389857f7d7979787777787a7b736a65 +686a6661626b6866666868635f5d5b5b5c5e5f5e5d61646666625d59585e +5a56694f5a5b37444e5f4f56040c316d728275f6a22c5a59322540564f4e +59494e47464d4c484f53514e4d4a4b4a4c474743403d3c3b3c3a39373a3e +3f3c3a3b3d3833323637352f2f2e2e2f2e2b2922221e1817181611121314 +141312100e1212100f0f0f0e0e0e0e0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c +0c0e0f0f0f0f0f0c0c0c0c0b0b0b0a0b0d10110f0e0d1004040f03000905 +81e7b56db7e3b469c0e4b374b5ceb67cacb695728a90866a758c735e5e4e +4896e0a006000d0d1705170705040503040b1517253b90aebe2c12312629 +302a2930302b1c201122172120160b700c03101a060e0d0d0d0d0c0b0a08 +0707060607070804050607070707060505070b141f2a311b031a192b4127 +33614e53b3e985106effa7d9e3d8bd3230312e252024271c091515131512 +3022261b22e8369e9d4cc0021523142143341c200c14141c3b35192a0e0c +0e233f311c24070f151f39301b290f122d36ca291f258559f0fa3008ac22 +00130317110356a08d5e75731d0e1c1a1915261118081d014e9f6b420054 +000c0e0c070a141b1c120e06091827261914070b05254d3218260608042f +56353722140817266538473e60a7823715c27c840f0c1819233525171517 +1d1e19181d1a14170b28281e14584732042917030f160e050e5c57364a08 +141b0d63631f310e19111f6a5421110c18171c6263380e13273520774358 +808d748a7dbfb0b4bcb5b3b0adaaa8a7a69e9ca2abaeaaa8aaafa9a3a0a2 +a5a6a5a6a29e9c9c9ea0a1a9acaba5a14e4f4e4d51585854534e49474a50 +5558524f51555b5a534b4843455058544e4e4c4e4d4c4c4d4f50483f3a3d +3f3b36363d3a38383a3a35312f2d2d2e30313031383b3d3c36322e2d3332 +2e432b383a16222e423a4d00001c494f6a69f69f1d43451d0c24392c272f +1e231f1d2526252b2c2a2a28262628292524221f1c1b1d1d20201f212526 +25222324221d1c1f23201c1b1a1a1c1b1a181313110d0c0d0c0708090a0a +0b0a08080b0b0c0b0a0a0a0a0a0a0a0a0a0a0a0a08080808080808080707 +090a0a0a0c0c09090b0b0d0d0d0d0c0b0d0d0e0e111307040e030417209d +fac57dc7f3c479d0f4c384c5dec68cbcc3a280989c927681977e6a6a5751 +9feaa80d0412121c091b0b09060706070e141314155e7891160f3d352f2d +1e1a2327291b201122172221180e730f06131e0a1111111111100f0e0c0b +0b0a0a0b0b0c08090a0b0b0b0b0a09090b0f18232e35220a2121354a2e37 +655054b4ee8c1977ffb5e6ece0c23532342e2822272c200d171615171532 +24291f26ec3ba5a252c50314251626493c242b16201f2948412434161315 +2a4638232b0e151b253f36202c1016313ace2d2226855af1fd3411b83819 +2d1a2d251466b09a6a7e7d2618231c19152612190a1f0754a5714b095d07 +1314100b0e181d1d140f0608182623191b10140d2d553a1f2d0d0f0b365d +3c3e28180d1f2e6e414d4466ac863e1ccb899d281f232023332214161c24 +25211f211a12160a27261d12594833072c1b08151d150c15635e3d510f1b +22146a6a263815201826715b2818131f1e23696a3f1313273a2884536a93 +9d7d886a99786c6f727674716f6d6d6c64626770736e6b6d746e6865676a +696867635f5d5c5e6060676a69635fb5b6b5b4b8bebdb9c2bcb5b2b2b6b9 +bdc7c4bebcbfc0bfbdb8b4b5bdc1bebababcb7b3b2b3b3b1aeb0abaab0b1 +aeabaaa4a3a2a19e9d9d9e9897989a9c9d9c9a9595979692918f8f98958d +9d808889676a7486736f1d24509dadac8fffd659818563506d8487787b83 +87817f86837f858683837f807e807f807b7a74736e706d6e6d6c6c6f6e6c +68666867616063615c565555555555524f4d4c494341403f373131313131 +302e2d2d2d2c2c2928272726262626262626262424242424242424212223 +2424242423222222222222222425251f1c1d1e262624080322131c58aaf9 +af67b1dcaa64b9dfac74bad5b67ca8b3926e82857d69777d785e4f3c69cc +d838010e110516110d0d0b0b0c0d0c131c372d182a2f531839311e171715 +13110a141a21170a2d0104180017000010000b0a0d0f0f0f0e0c0b0c0c0c +0c0c0c0c0c0809090a0b0b0a0a0c0c0d1118212a2f301f342f3643293335 +1100629451012a78000000002300160c191e150d101415201f19170f2816 +1611007b27002f9f900012271c25423a2e392129292e4742313f26262834 +473b30422121212742413439203425275725263b360e7e911400f1b3ab93 +95a94f007bbe749b7a7b31000a111b0e060f200c04104739004c7092150f +141513161c1f1c1b15101729362e1f26181c1e3d5d41282e131e24455a32 +302f23223a41692f2f4e48e0c2302bf8dde63d0f20434d452a231e1f2324 +202021200d1523493b3233e72a82915c76221c221c1a256d5e3745160e1a +1c6860283d1d1916276047303919131c3969452b32072f253c8f2743b6a7 +a6bf94cad6f3d4e0dfdfdedfdddcdbd6d2d3d8dad6d5d9dad8d5d3d5d6d8 +d9d4d3d0cecfd0d2d1d9dad8d3d2878887868a908f8b948e878484888b8d +938d878588898886817d7e868a878382847f7b7a7b7b7976787372787976 +737474757473706f6f706a696a6c6e6f6e6c66686866625e5c5c65625c6d +505a5d3b3f4c5e525b0b092a65758272f0c12f525c3d2846595b4b4c5054 +4e4c52524e545656535250515051504d4a4642403f3f3f3e3d3f40413e3c +3a3c3b3736393734302f2f2f31312d2c2a2b282321231f1a141313131312 +111012121010100f0e0e0e0e0e0e0e0e0e0e0c0c0c0c0c0c0c0c0c0d0e0f +0f0f0f0e0d0d0d0d0c0c0c0c0b0d10110f0e0d10140205220400166feab5 +6db7e2b06abfe5b27ac0dbbc82aebb9a74888b836d7b817c60513f6ccfd8 +37000c0f03140c080705050604030a11241a061a21470f34332729303134 +3125292a2f2516390b0e1d041b010011000b08080a0a0a09070607070707 +0707070703040405060605050707080c131c252a2e1a2d2830422e3e4829 +087ea9620e3788130b0c1342133428313020110e0e0c151513171736292e +2d08943f053eac990213271c233d3327311923262c45422f391f21232f42 +382d3f1e202026414033341a2b1c215526304b4c2393a32101f4b8b1999d +b45c0d8bcb81a986853907131c271a12192a160e174e3e014f7395150a0d +0f0d10161916150f0a11233029191c0e121436563a21290e191f42572f2e +2d1e1c3137622c325757f3d54139ffe0e134031538433b221a18181b1a14 +13161a0c192d59514c51ff4497a064771d171f1917226a5b3442130b1719 +655d253a1a1613245d442d361610193666422830072f243a912d4ec7bab8 +ca95bcbacba6b3b3b1b0adaba8a7a29ea1a7a9a8a9ada9a7a4a2a4a5a6a7 +a1a09d9b999a9c9ea8aaa8a3a2494a49484c52514d56504946464a4d4f59 +554f4d5051504e4b45485054514d4f55504c4b4c4c4a47494443494a4744 +45434342413e3d3d3e3837383a3c3d3c3b3a3e3c38342f2d2d363531452a +363a181c29443f5407001542506964eebe213e48260f2939362220232721 +212a2a262c2e2d2b292a2a2a2d2c292624211e1e1e21222122242424211f +21221e1d201f1b191818181b1b1a18171819141213120c06080809090809 +080b0b0c0c0b0a0a0a0a0a0a0a0a0a0a0a08080808080808080708090a0a +0a0c0b0a0a0c0c0e0e0e0c0a0b0d0d0e0e1113170204220b06318bfdc57d +c7f2c07acff5c28ad0ebcc92bec8a78296978f79878c876c5d4875d8e03d +0511140819100c0b09070807060d152a160000002d083b42362d2a232324 +1c24292f2516390c0f20071e040415040d0b0c0e0e0e0d0b0a0b0b0b0b0b +0b0b0b070808090a0a09090b0b0c101720292e332135303a4a34424c2b09 +7fae691640952118151b4716362b3132221413120f1916151919392d3030 +0b98430b45b29e0515291e28433b2f3c242f3137524e3a4327282a36493f +34462526262c474638381c302125582a314b4a2494a52709ffcecbb3b4ca +6f1e9bdb91b6929144121a1e271a121a2b18101d544407587c9e1d111413 +11141a1b1817110a112330261924171b1d3e5e422930152026495e363330 +2220363f6935395e5efadc4b44fff3ff531b254044391f1b1c2026251e1d +1e1a08182c584f4b51ff459aa3677b211b26201e2971623b491a121e206c +642c41211d1a2b644b343d1d17203d6d492f35052d2945a03d60d7cbc6d0 +8d9f8885597076757472706e6d6864666c6e6c6c706e6c6967696a696a62 +615e5c595a5c5d6668666160b8babab9bcc0bfbac5c0bab7b7b8babbc0c4 +c8cac8c2bcb7bfbcbcc0c1c0c1c4c0bab4b4b8b9b5afb1b1b4b8b8b4b4b5 +b0b1b2afaaa8abafa7a7a9adb0b1afaca8a8a8a4a2a0a0a1a3a099a58388 +8a6a66728778752a234795b2a98cf3fb5e7b8c734b61718c797d878a8582 +8988838588868684848385848683817d7b797a797a787776787673706f71 +716e6e6f6b635e5d5d5e5d5c57555152504a4948443d3534333231302f2f +2e2e2d2c2929282826262626262626262424242424242424212223242424 +2323232323232323232525251f1c1d1e26260b1401000a1844d0ffb169b6 +e0a76cbee1a878c3deb67ca5a98d6d80847b6473707b4c4848bae27e0004 +1a1508131b0c0c0b0d0e0e0c1019161a1918141f032022263029150d1214 +1215162425811e0e00000611554b0009060a0d0f0f0e0b090a0b0c0d0d0c +0b0a070809090a0a09090b0c0d10151a1f221f142924252f1e2d410000b2 +e28d040defacc1edbab72310101e22140809141b1c1c17160f2a17180512 +02000a00000007172e282a3a35373c212d333342403b3a242d34363f383a +3b222e3433423c3040213238422b3528260a00a3bd570031697347535851 +0301150800003fb605130d1c11000f0808100006260c04002a000d13191a +1c1d1a161d171520333c2f1d2d1e222d47583f2c371b2b3a4e522c2b3a28 +2e49495e27243f009d8e1c038667570609102b453c1c23202022221e1d1d +281f12011b180f009b51002c99560d0f171b272e5f4017271d13374a7150 +2233241f354f663c303f221f3b5d71352a4f1d3415529117003300000842 +d0cdd5f0dfdfe0e0e2dfdedcd9d6d3d4d6d4d7dcd7d7d7d6d5d6d9dcd6d7 +d7d4d2d1d4d5d8d8d5d1d2888a8a898c908f8a95908a8787888a898c8d91 +93918b8580888585898a898a8d88827c7c80817d7779797c80807c7c807e +8283807b797c8078787a7e8182807e79797874706c6d6e6f6e6976535b5e +3f3a475d57601606215d78806fe1e6344c634f263a46604c4e5457514f56 +544f54575755555353545454534f4d494948484947464847484443424444 +4242433f3a343333343534312f2d2f2d292829231e181716141312131313 +13121110100f0f0e0e0e0e0e0e0e0e0c0c0c0c0c0c0c0c0d0e0f100f0f0e +0e0e0e0e0e0e0e0e0d0b0d10110f0f0d10000e030000000396f0b76fbce6 +ad72c4e7ae7ec9e4bc82abaf937386887f6877727d4f4b48bae27e000118 +1306111607060507080503070e0104080b0917001e252f3f40302c322f27 +282634348d281804060a15564b00090406090b0b0a070506070809090807 +0603040505060605050708090c11161b1d1a0f221d1f2e253b56130dd0fa +a0131affbed4ffd5d4422e2c36341f0c080f121112131719392f34222f1e +181f0f0a070b182d2727352e303419273032404039371f282f333c35373a +212d3334433d2f3b1b292f3b293a333a2414bdd26807396f7b4f5e635e13 +122518030a4bc00f1d182a1f061b14121a010d2b0f07012a00080c121316 +17141017110f1a2d3629172314182340513825321626354b4f29293a2829 +43425724274803ab9c250a87634c000005213c34141a1616171612111322 +1e160b2e312b17ba6f073ea35a0b0a1418242b5c3d14241a1034476e4d1f +30211c324c63392d3c1f1c385a6e32274d1e351450901a024516171847c5 +b4aec2b2b3b2b2b0adaaa8a5a2a1a3a5a6abb0a6a6a6a5a4a5a7aaa3a4a4 +a19c9b9ea2a7a8a5a1a24a4c4c4b4e52514c57524c49494a4c4c5254585a +58524c47504c4d515251525555514b4b4f504c4648484b4f4f4b4b4e494c +4d4a4543464a424244484b4c4a4a4b4b48433f3a38393d3d394a2b343b1c +172544465d17000e3850625ddde326384f370c1d243b2322272822222b2c +272b2e2d2c2b2b2b2c2e2f2d2a2926252527292726272727262423252725 +2526241e1b1a1a1b1c1b1a1817191a161515120c08090809080708080a0a +0b0a0b0b0a0a0a0a0a0a0a0a0a0a0808080808080808060708090a0a0909 +0b0b0d0d0d0d0d0d0a0b0b0b0c0c1013000e020002021bafffc77fccf6bd +82d4f7be8ed9f4cc92bbbd9f7f92948b73827e89585452c4ea8605081d18 +0b161a0b0a09090a08060a1412100100000c022c383e4238211c272a2224 +2331318b271704060b16584d020b07070a0c0c0b08060708090a0a090807 +040506060707060608090a0d12171c2120162a2529362b3e59140dd0fea6 +1a23ffcce2ffdeda45302f3636210f0d1315151314191a3c31372633221d +2416100c0e1c322c2e3c36383f2431393a4b4a4440262f363a433c3e4027 +3339394842343f1f2e34422e3e353b2315bed56f10468592667479712322 +3427101657cc1b261a2a1f061b14141c07133116100a34070f13191a1a1b +18141913111c2d3629192b1d212c4859402d391d2d3c5256302e3c282d47 +495e2d2e4f0bb4a7341a997a6e1b16162a3f32121d1e212524201f1c241a +150a2c2e2c19bc710940a55d0e0e1b1f2b3263441b2b21173b4e75542637 +282339536a40344326233f6175392e5019301a5da02b10532425254ab38b +6d77717676767572706e6b6866686a6a6e736b6b6b6a696a6a6d64656562 +5c5b5e616566635f60b7babbbabbbebdb9bebcbbbcbdbebebeb7bfc7cac6 +beb7b4bcbbbbbbbbbdc2c7bbb8b6b8bcbebdbab5b8bbbab6b4b8bbb8b8ba +b9b6b3b3b5b0b2b5babdbebcb9bbbbbab8b5b2b1b2adada8ae85868b6d63 +6f857b7a3a224290b2a58edcff617d8483545f65907e878a8e88868d8b84 +878c8a8c898b898b8987848582848386858282818182807f7b7879787576 +78746d6a69686767625e5a545554504f4f4a413f3b383532312f2f2f2e2e +2d2a29292927272727272727272525252525252525222223242424232223 +2323232322222425251f1c1d1e26261a0a0a0d92d45f9dfeab66b6e2a073 +c1e4a379c0d9a9759b907e688084795d667956472f9addba0901150f1516 +0f1d160c0c0e100f0b0e15191a221f26230a171a2a3b321911191a29281e +253e8424031706000382721b00080b0f1212100d0b090a0c0e0e0c0a0907 +08090a0a0a0a0a0a0b0c0e101214140604121111150a142a00000b284c04 +37f2244ce20c4807161a1b160c0c171d1c191914140e271717220d0b0b0e +08111c0f152929282b262f290c1d2b272b2b2e220d1e2c30312b32220e24 +2e292f261e26090b413c2d2a10191a0086c3540886d4178fd828330041ad +9eaeacbf73001f0f0e11194401001a210000180805150a0c12181b1c1a16 +111511121c292c21132417192836372820351521333b382429351c1e3c39 +4622242503caf298005cfae34218121a1413291d1d1e20211f201f262212 +08261e1900030e130026042203242e494e6e47273c29275d6a6b43313c1c +1d475d5f322e31162b525f63312c400b40627e571c2467bae1ceae98bee4 +dee0dfdfdee0dfdfdfdbd9d7d5d5d5d8dddadbdbd8d4d5dadfd7dadcd9d4 +d2d5d7d8d6d3cfd1868a8a8a8a8e8c898d8c8a8c8c8e8d8c838890938f87 +807d8584848484868b9084817e81848785837d8183837e7d8086878a8b8b +878584878184868c8e908d8a8b8b8a86827f7e7f7a7b7680565b5f433742 +5b576226051958797c72cbf9374e5e5f303a3d6651585a5b54525a585053 +5859585857585758535251504f51515350504f5150504e4d4a4b4a48494b +47403d3c3b3b3b3934322f31302d2c2c2720201e1b181513131314131312 +111010100f0f0f0f0f0f0f0f0d0d0d0d0d0d0d0d0e0e0f100f0f0e0d0e0e +0e0e0e0d0d0c0b0d10110f0f0d100a040c0d83b01e63efb16cbce8a679c7 +eaa97fc6dfaf7ba196846e86887d616a7b584a329addba0900120d13140d +18110606080a0602050a060514141f2008181f344b48312d36373f3b2e35 +4d93300d200c010782721b0004070b0e0e0c09070506080a0a0806050304 +0506060606060607080a0c0e100f01000b0a0b15132642140f2b44641545 +ff365ffa2765263536352817111618130e0e0f1518392f35412c28242319 +1e2514162a282528212a21061a2a262b2b2e1f0819292d2e2831210d232f +2a30271d2103023b372c321f31380ca5dc681992df229ae535431154bfb0 +bebccd7f022c1d1c1f27500d06242801051b0b081509070b11141514100b +0f0b0c1623261b0d1a0d0f1e2f30211930101c2e38352128351c1c373441 +21282f14dcffa4085ff8d5330c07100b0a201211121314141518201e1412 +38383720252d2c0d31082101222d464d6b46243b26265a6968422e3b191c +445c5c312b30132a4f5e603029400d425f7a541f317bd6fde3b68fa5bdb2 +b3b3b1b0aeadababa7a5a5a4a4a7acb1a9aaaaa7a3a4a8ada4a7a9a69e9c +9fa4a7a6a39fa14b4c4f4c4f50514b524e4f4e51505251494f575a564e47 +444c4b4b4b4b4d52574e4b4b4b5151524d4a4b504d4b474d504f4f53504f +4a4c4c49494e51565555545a5a59514d4845464346434f2a313a1d122142 +4962280107334e5c5dc4f6293a4947161d1a40272a2c2c25232d2d282b30 +30302f2f2f30302e2d2c2b2d2e2f302d2d2c2d2d2c2d2b28292927282a28 +21201f1e1e201d1b1815191a171616130d0e0e0b0a070807080b0a0c0b0c +0b0b0b0b0b0b0b0b0b0b0b0909090909090909070708090a0a09080b0b0d +0d0d0c0c0c0a0b0b0b0c0c10120b040b0d8abe367cffc17cccf8b689d7fa +b98fd6efbf8bafa4907a9294896c758764533ba4e7c2110519121819121c +150a0a0a0c090508121a16140e151b132a32404a3c231f32353c372b324a +902e0c1f0c020884741d0205080c0f0f0d0a080607090b0b090706040506 +07070707070708090b0d0f111307051312151d182844140e2a47681c4eff +446dff306b293739342a19141b1c18121213191a3b3137442f2c29282026 +2c181b2f2e2c2f28312c1023322e333336260f203034352f37271329342f +352c222507073f3d32352231380ba7e06f21a0f136aef848532163cdbecb +c9da8b0e35201c1f27500d08262e070b2214111f110e12181b1c18140f13 +0d0e1825261b0f2216182737382921371723353f3c282d371c1f3b3a4829 +31381ce6ffb21972fff6542417180e0b21181b202425222320221d131138 +37392227303011350b260427334d53724c2b412d2c616f6f48354120224b +62633732361a30566467363042083f6688652e3a84e1fff6c18686826b72 +767574737271716d6b6a69696b6f746e6f6f6c68696b7065686a675e5c5f +636564615d5fb1b5b6b4b4b7b8b5b6b7babec1c0bdbbbbbbb8b3afb0b6bd +b3b4b4b3b5bac0c3b3b6babbbabbbec1b9bdbfbbb7b9c0c5bfbdbec0c2c0 +bab6b8b9bdc1c5c6c4c2c0c3c3c0bdbababab4b8b5b788858a71626c837b +7b4a233f8cb0a194c1ff677f7a8f686a6c96849192948e8c9491898a9292 +9392939292918b89898788898b8b85868886888686857e7d7a75777b7771 +78777372716b66605d5e5e595857524a4944403b363330302f2f2f2e2b2a +2a2927272727272727272525252525252525222324242423222223222222 +2121202225251f1c1d1e26261a0418094ca175c8f8a05eb4e09576bfe69f +79b5c8966c8f83766681847a5d636f3e3977cada52000b1f09161f0f1c17 +0b0b0e100f0b0d1322171409151511152724292923221d101f2622123b42 +1d0507030a124c390000090b0f1213110e0c080a0c0d0d0c0a0809090a0b +0c0c0b0b0b0c0e0f10100f0e0e0b1414141103021311212b7e82050092dc +dae6cdea001419150c0408151a171a1a15120d261516091a0000040c0009 +0f081a1f2221172218011427201c1921130111272d2a1f261b0011181118 +1a2018080c36171f160e2100000022410031f494aee29ab105005c6b5c00 +92730612190510458b240208001710000013010f0b0f12161613100f0908 +0b1014120d0a0f0808171d14131624030b2124201c2323080e2a272b1d1d +1d020543130f4df2610a22181726160a191b1d1d1f212020411e123b571c +0f141c00231d82490e190e0c26365e3e202d06032c2924192727090e3134 +3627362f021a3d3a3f2423210c0d273b2e36237c269b5d3142cad6e6e1df +dddbdddddfe0dadcdcd9d7d7d9dbe2e1ded8d4d4dbe0d4d8dbd8d3cfd1d2 +d7d7d5d1d180848583838687848586898d908f8c898787847f7b7c82897f +80807f81868c8f7f8285878587898d84898a8782858b928e8f909294928c +888a8b8f93979896949191918f8a88868682878389595a5e45353e575562 +33051654777978b0fa3f52556c4445446c576262645c59615e56575f5f5e +5f5e5e5d5d555553535255555751525455545554554e4d4a47494d494347 +464544423e39343436363432332e272a27231e1916141414141413121111 +1010101010101010100e0e0e0e0e0e0e0e0e0f1010100f0d0d0e0d0d0d0c +0c0b0a0b0d10110f0f0d100a001a093d7d348ee9a664bae69b7cc5eca57f +bbce9c7295897c6a85887e5f6572413977cada5200081c07141d0d171205 +05080a0602040811060a041517141b2d2f383d393c392b353b35254b5129 +0f10090e164c39000005070b0e0f0d0a0804060809090806040505060708 +08070707080a0b0c0c0b0907010a0d0e110c162d31454f9d9e1a04a2eeed +fce8ff0933352f1e0f0d1618110f0f1016183a2f342b3c1b08181d031213 +0b1a1f211e141f130011261f1d1c2412000f252b291e251a01121c151c1e +1f1300022f14201f203d1e0c12415c0d43ffa1bef3abc4180a6f7e6f04a2 +8314202815205599320d12061e15010016010e080a0d11110e0b0a040306 +0c100e090608010110160d0e111f00091f221e1b2223060925222a202830 +1b205e29225af75600150e112010010e0d0f1013161a1b3b1a14456b3631 +373f1e403290510f190d0d25375d3f1f2e05042b2a231a2628080f303535 +283530011b3c3b3e2522220e0f24372a38309447bb753c39b1aeb9b3b3af +adabababaca6a8aaa8a6a9adafb1b0ada7a3a3a9aea1a5a8a59d999b9fa6 +a8a6a2a246494b48494b4d494b4b4f525654524e4d4d4a454142484f4344 +4443454a505546494f4e4f4e53544e50544e4c4c5559545355565956514c +4f4f54575c5c5b595b5c5c55514d4a4a474d4e572b2f371e0e1d3e4a6539 +03042f4c5562a8f4333f42562c2821462d3434342b2a34312b2c34343434 +363635352f2e2f2e2e3031322a2b2d2d2d2d2f2f2a292623272b27212726 +2423241f1c17181c1d1a1b1b16111615110e09080808090b0d0c0d0c0c0b +0a0a0a0a0a0a0a0a0808080808080808070809090908080809080a0a0b0b +0a0a0a090b0b0c0c10120b00170742894ca7fcb674caf6ab8cd5fcb58fcb +deac82a39788769193896b717b4a4381d2e25a070f230c1922121b160909 +0a0c0905071024180b000d141d293b3533312c333d3233363121484e270e +0f090f174e3b020206080c0f100e0b090507090a0a090705060607080909 +080808090b0c0d0d0c0d0e0a1315181911172e30434d9fa11f0caffcfbff +f1ff0c35382e2011101a1b15131314191a3b30362d3e1f0c1f240b191c12 +222729271d281a05182c252221291704142a302e232a1f05161f181f2124 +17040a361b2524243e1f0b134663154fffb2ceffbbd226177d8c7d10af90 +21292b141f5499320f140c241b07091f0b160f1114181814110e08070a0d +110f0a070f0808171d14141725040e242723202725090f2b2930272e3620 +276736316bff7415291915201004161a1e21212424213b1913466c37333b +432344379353131b12112a3b624324320a08302e281e2b2c0d1335393a2c +3a34061f413f43292724090c2d46394436964eca8d4e3a9b7a7675767371 +707071726c6e6f6d6b6d70727675726c68686c71626669665d595b5e6364 +625e5eb3b7b8b5b4b8bbbab5b6b9bcbebcb7b5bbbcbcb8b5b5babeb8baba +b9bcc2c6c6b4babfbeb9b7bbc0b7bdbfbcbabfc7cbc5c1c1c5c8c7c1babf +c0c2c6cacbcac8c8c8c6c3c1bfc1c2bac1c1c28d858b746269807a7e5a25 +3c85ad9f98a5ff7d7d85956756659590a3999a94929a978d8d9797979797 +96959492918f8d8c8c8c8d87898b8c8b8b8c8b8986817e8183807b81807f +7d7b746d686464635e5e5c5850504c47423d38343230302f2f2c2b2a2a28 +28282828282828262626262626262623232424242322212322222120201f +2125251f1c1d1e2626131700114d6362c0f89d5fb9e5907cc0e09978a5b3 +846987897a667d817a5e62473d67dde0910722011f171a1e1822130b0b0d +0f0e0a0d141212191310090705231f272b211816120d120e024337281706 +1a3b6a52490025080a0d0f0f0e0b09090a0b0c0c0b0a09090a0b0c0c0c0c +0b0d0e101112111011120f12181c150b04668162607e2b101df207000a11 +c47400131916070009141a1c1b17140e27171704161889743841ab0e0412 +1d25251b241600172a211c1922180417292d2a1d1f160011211a1a1a2118 +0d222b2220180f2c504879e4a20205beb9a1b8abc7070297d5b83e5b9a07 +18160b184a84250f080f06000b030300220b0c0d11110e0d0f0a0a0d100d +090a0e09090615170c181e19010a26242023211905112d26242016272119 +dc552200a4ec240910161913251b1e1e1d1d1e1f1d48250f374f0c090e00 +18001b63210d05210a1b36684e231d0705201c2228351b000c251b222532 +20050c23232d1e241c0b1b31362c1600cbcedab5b76dd2cee0e1dfdedcdd +dddeded8dedfdbd8d7d8d9e5e2ded9d5d6daddd8dbdddbd8d3d2d1d4d8d9 +d5d38286878483878a898485888b8d8b8682888888848181868a84868685 +888e929280868b8a8583878c83898b88868b9399949393979a99938c9192 +94989c9d9c9a979795928f8d8e8f889190945f5a60483238525463430712 +4e74777e97fa5550607545333e6b6577696a626067645a5a626262626261 +605f5c5b595756565657525658595757585a5856514e5156534b4f4e4d4c +4a463f3b383b3a373637332e312f2a25201b181615151414131211111111 +1111111111110f0f0f0f0f0f0f0f0f0f1010100f0d0c0e0d0d0c0b0b0a09 +0c0d10110f0f0d10031201113e3f2186e9a365bfeb9682c6e69f7eabb98a +6f8d8f806a81857e60644a4067dde0910721001c15181c161d0e05050709 +0501040901041013130f0e0d2c29343d3531312c22272115534737231023 +3f6e534900250406090b0b0a070505060708080706050506070808080807 +090a0c0d0e0d0c0b080508111618161882a58989a0492830ff1704202ce1 +931e2f332a15070a121411121218193b3036263937a588494eb41508151d +242418211300162b22201e26170215282c291c20170015251e1e1e221304 +18241f2325244b7672a2ffc31d1bd0c9b3ccbedd1d1aadebce516fac1729 +281e285a92331a13180d0510060600200807080c0c09080a0505080b0805 +06090202000e1007131914000824221e222017000c282324292740423eff +77400eb1e415000912150d1c1010100f11161a184221114163282a341c3b +1d34722b1106220b1c37694f241e0806211d2329361c000d261c23263321 +060d24242e1f2520101d2e2f281909e5f1fed0c666b8a5b2b3b3b0aeabab +aaaaa4aaadaaa7a9acadb4b1ada8a4a5a8aba5a8aaa8a29d9c9ea3a9aaa6 +a4484c4d4a494d504f4a4b4e5153514c494f4e4e4a47474c50484a4a494c +525656464d52514c4a4e534a50524f4d525a5e595557595e5b574e555458 +5a605f605e5f5f5b57524e4d4e495356602e2d36210c173b49684b050227 +4753658ef4493d4d5e2c171d453b4a3b3a312f3a372f2f383838383a3938 +3736353533323232312a2b2d2e2f2f3032302e29282b2f2c272c2b2c2b29 +251e1c1b1d1e1a1c1c18151c1d1813100b0a0a0a0a0b0d0e0d0c0c0b0b0b +0b0b0b0b0b0909090909090909080809090908080709080a090a0a090708 +090b0b0c0c1012040f000f434b399ffcb375cffba692d6f6af8ebbc99a7f +9b9d8c768d90896c70534971e7e8990f2905231a1d211b21120909090b08 +0407111313110b0a0b1618352b2b2f2a2e3c3923221d11504434210f2240 +6f554b022705070a0c0c0b0806060708090908070606070809090909080a +0b0d0e0f0e0d0f100e1119201f1a1983a38685a14b2c37ff26122b35e796 +2032322b16090e15181515161b1b3c3438283b3aa98f5156bd1d111e252c +2c212a1a051c2f262321291c071a2d312e21241b04182821212126170920 +2b262a2b274d7771a4ffca2626ded6c1d7ccea2a26baf8db5f7ab824312a +1c275992331c151d130b160f0f092b110e0f1313100f100b090c0f0c0607 +0d09090615170d191f1a040d29272327251a04122e2a2c302e454744ff81 +4b1dc4fc2c0d1113140d1f181d1f1e1f21211c42201042642b2f37224122 +38752d1408260f203b6d5328220c0a2521272d3a2004112a20272a37250a +112828322329210a1c393f372209e2f5ffebdd6ea9777477767472707070 +706a70726f6c6d6f707976726d696a6b6e66696b69625d5c5d6065666260 +b9bdbdb9b8bdc2c4bdbcbababbbbbab8bbbfc4c6c4bfbab7bcbebdbcc1c7 +c6c0b7babdbdb9b7b8bab3babebcbcc2c5c5c7c6c6c6c7c6c5c4c5c5c6c9 +cccececccfcdc9c4c2c3c8cdbec9cccc92888d775c657e7c8369263979ad +a29a93ff9b718d905c4573a2a6b3a6a7a09ea7a39897a0a1a2a1a09e9d9b +99989593929292928f919494928f909092908d8b8f928c8287878785837e +78716d6d69636365625a534f4d49443f3a383131302f2c2c2b2b28282828 +282828282626262626262626232424242423222124242322212020212525 +1f1c1d1e26260b210004525147aefa9c60bce8897dbbce8d7294a0776983 +8f7e667b7e75514f4466cadacd1910200215171412171f130b0a0c0e0d0a +0e15191c171604060e101d1e3036200a0e1a191909093e55180f1703002a +456d0008090a0b0c0c0b09080a0a0a0a0a0a0a0a08090a0b0b0b0b0a0b0c +0e10111111120b0d0e181812110a507633171d021100a2aeaec0d2d93706 +141e1e0d0108131c191815120c26151527142cd0e67852921009171e2729 +202819021a2921201f261a0a1b2524241a1d1400172e2620181e0b0c1422 +30211a042e7864332e001700f0301c0209ed765b8900001e2f4712101714 +1c4560111615160b53bca05c53730a07090e0e0a0a0d0b090b0f0e0a0b12 +0c1107181c13221f1602112e29252e2217091c34292227134c7870db2b14 +0cc79b0a21260e1513111c21221c1c1e1d1a241f123659323d33268ca537 +4c848027230c24416b491b11000924262c262a0704172d202d28240b0a12 +28222b282e1c0325322c301f1aed3936172033cdcaece0e0e1e1e2dfddda +d7dedfd8d4d5d7d7e0dedbdadad9d9d8dddedfdeddd9d5d1d0d9dfdcd786 +8a8a86858a8f918a89878788888785888c9294928d88858a8c8b8a8f9594 +8e85888b8b8785868881888c8a8a9093939796969697969594959596999c +9e9e9c9e9c97928f90959a8d999b9f645e624c2c334e54654f060f42757b +8085fb75466a703a224c7b7b8776776e6c747065646b6a6b6a6967666461 +605d5b5a5a5a5c5a5c5f5f5d5c5d5f615f5c5b5f625c5253535253514d47 +434042403c3c3e3b363433312c27221e1c16161514131312121111111111 +1111110f0f0f0f0f0f0f0f0f101010100f0d0c0f0f0e0d0c0b0b090c0d10 +110f0f0d10001c0104432d0674eba266c2ee8f83c1d493789aa67d6f8992 +826a7f827954524769cadacc180f1f0012151210151a0e05040608040105 +0a0c1112180c12181926283c47311f243031301e1e5165271b210c012e46 +6e000805060708080705040606060606060606040506070707070607080a +0c0d0d0d0c0101020e15151c1f6e9d5c4141212d05b2bec0d6eaf6562530 +38321b090911160e0f10161a3b31374a374bebfa895f9b170d192127291f +271801192a2224252a1b091a2423251b1e15011b322b251d1f06020a1b2f +26291d51a2905f57223519ff4430191fff8e76a1120634455a25222b282f +58701f21201f1258c1a35f53710704060b0b07070b0907090d0c08090d05 +0a0213170e1d1d14000f2d28242d201203152f282734286ea1a0ff5a4034 +de970015200a140f0b1113110e10171b191e1b13406c4e605a4db1c6535e +8f852b271028456f4d1f15040d282a302a2e0b081b3124312c280f0e162c +262f2c322008292f25291f29ff5f5c352f2db5a0beb2b4b3b3b0ada9a6a3 +aaada7a3a7ababafadaaa9a9a8a7a6aaabacaba7a39f9e9faab0ada84f53 +534f4e53585a535250505151504c4f53575957524d4a4d4f4e4d52585551 +4a4d50504c4a4b4d464d514f4f5558585956585659565754575558595e5e +605e64625c554e4e53584a596068322e37220412384c6d5a07001b465465 +7af46835565921062b54515a48473d3b47433a394141424142403f3d3c3b +3a3837373736303033333331323638363333373a342c2e2e30302e2c2622 +1f22221d1f211e1c1f1e1c1a171210100b0b0c0d0e0e0d0d0b0b0b0b0b0b +0b0b090909090909090906070909090808070a0a0b0a0908080708090b0b +0c0c10120019000248391c8cfeb276d2fe9f93d1e4a388aab68d7f97a18e +768b8d845d5b5072d2e2d420172706191a17151a1e120908080a07040810 +16190e0b00081a202b27303729223945332a19194d622419200b022f4870 +020a06070809090806050707070707070707050607080808080708090b0d +0e0e0e10090b0c171e1c20206e9a583d4123300cbfcdcee1f4fc59273337 +331c0b0d141a121214191b3c34384c3b50f2ff9167a42118252a3133272f +1e071e2e2625252b1f0e1f2928291f2219041e352e2820230c0a1323372c +2e2153a191625b2a3f24ff4d3b212aff987fab1c12415268332c2c262d56 +6f1f232224185ec7ac685d7c100d0f14140e0e100e0c0e100f0b0c110c11 +08191d142322190514322d29322516071c352e2d3a2d70a3a2ff604940ec +a80b1f2409100c0b1920211d1c1f1e171e1a15427051645f54b7cb576291 +882e2a132b487250221807102b2d332d310e0b1e3427342f2b1211192f29 +322f352102283a35392726ff6069514c3bab76837677777775726f6c6970 +726c686b6e6e74726f6e6e6d6a696b6c6d6c67635f5d5c666c6964b8bcbc +b7b6bcc3c5c3bfbbb9bbbec0c1c4c2bfbcbbbab9b9b8bab8b7bcc1bcb3b8 +b8bababbbab8b7b7c0c4c3c3c5c4bfc5c6c6c3bfbfc4c9c6c5c5c7cacccd +ccd2cdc7bfbdc1cad0c1ced1d2958b907a58617c7e887328356daba49c8e +ffb26480835d569ec5b8b2b8b8b1afb9b5aba8b0afb0afaeacaaa89a9998 +979798999a989a9d9b989695979492939296988f838889898a88847f797a +7a7670707270695755524f4c46403c323130302f2c2d2b29282828282828 +282626262626262626262626262623232126252424232221232525211f1e +20242514090b0e325e5cadf4955ab8e27d75b0be826c8995706b838a7b66 +7d7e6e403561c9cfd448000f0f1907000000050e1008090b0f0d0a0f1617 +190c16040f120c2b1e293a2c140e130819111b2a6905161716160f4f7e06 +080a0a0a0a0907060608080807090a0a0c08090a0a0a0a0a07050607090a +0c0c0d0f13101513090c0700010003010c0a009da699a700000017151b18 +0d070f161915150f0e082313130c0a10000300020a0a06161a1e22182215 +00111d151a1d2411041316101410151a000e20181616230b210a2a26181c +1a0004140025190f004ce0e2e1957b0b1465dd96406347160024131a5e73 +211a0d0b150009170100190805070d0e09080c040001080b08070b0b1003 +1118101c1214010c28201e2c190b0013281f1a280f31341838171c006dd8 +070e231219181d1b20201b1b1f1f1c261e1c546b1b0f02001c9040445675 +0608022d4c673d181a00102f2c2c1b2a1a0b1c2b1f30261e0c001a372128 +2e310600242c272f2d095fc7c2d9a55bbac6e7dee0e5e8e7e1dbd6d6dcdc +d4d0d4d9dadad9d8dbdddcd8d3dcdbdbdbdbd8d2cccdd9e3e1da85898984 +83899092908c8886888b8d8e91908d8a89888787868886858a8f8a818686 +868889888685858e92919193928d959696938f8f9499969595979a9c9d9c +9f9a938b8a8e979f909ea3a56a5f654f28304e566a56070c39767c7e7bfa +8e3c5e633d33789b8c8489897f7d858175727a7b7a7b7876747264626160 +6061626464666967646262646162606266685e525454555657524d494c4c +4945454644413332312e2b26232016161515131311121010101010101010 +0e0e0e0e0e0e0e0f0f0f0e0e0e0e0b0c11100f0f0e0d0c0b0b0d0f100f0e +0e1106030b0a1f3a2179e79b60bee8837bb6c488728f98766e868c7d687f +8070423763cbd1d64a0013121907000202080f0f060405060401060d0c0e +07160a161a14332735483b2621261c2c212b39781120201c1a10507e0506 +08080808070706060806060505060606020304060605050503040608090b +0b0c0c0d0a1213101b1f1725182c282e280aafb6abbe070d123431332a18 +0c0e1110090a0d13183b31362f2d31081c0e151b17101c2022241a241902 +18241c2225291609181b171b171c21021527211f1f280c20072828202d33 +20293d164c3e321063f4f6f5ac92222b7cf4aa547559270f3c2c2d6a7d2b +251b1923040e1a0401190704060c0d08070b030000070a080709060b000e +150d1b1115010f2b23232f1e0e03162b2323372854604a6e4a4d2689d700 +041d0e1514171013120f111a1d1a20191d5d7e3732292843b15c57647d0b +100c37546f452022071734333122312112243327382e261406223f292d36 +360e0b2e30292e331b7dede8f8b556a39cb8b1b4b7b7b5afa9a4a4ababa3 +9fa4a9aaa9a8a7aaacaba6a1a9a8a8a8a5a29c999caab4b2ab4e50524b4c +52595b5955514f515456555855524d4e4d4c4c494b494a4f544d444b4b4c +4d4e4d4b4a4a53575656585752575656534f4f5459565555575a5c5d5e66 +61594f494c555a4d5c676c37303a250210374a6a580000124c58646df182 +305254281754715d5053534a4a555249464c4c4c4c4c4a48463839383737 +383938353639373533333532323334383a33272c2c2d2f2f2d2a252a2b28 +25252929271d1f1e1b1a1715120b0b0c0e0f0f0e0e0c0c0c0c0c0c0c0c0a +0a0a0a0a0a0a0909090a0a0a0909090e0d0e0e0d0c0b090a0b0b0b0c0c10 +120603090b25463790f9ab70cef8938bc6d498829da9847d959889748b8c +7c4e436fd7dde256091c1b230f0809090d14140b0a090b09040912141203 +0c000f1c1736242b3b342830351d281e2836750f1f1f1c1b1252800a090b +0b0b0b0a0908080a09090806070708040506070709090806090b0d0e1111 +121519161d1d18202117231428272f2a0eb9c3b7c60e14163834352c1a10 +1315150d0e1016183d33383331360e21151b22201a282c2e302630220b1e +2a2225282d1c0f1e211d211d2227081b2d2624242e11281033342b373a27 +2f411a514438186bfdfffeb49a2a3384fcb35d7f6331163c282b6a7e2c27 +1c1c260914230d0a210f0c0e1415100f130905060c0f0a090e0c1205151c +1421171a0916322a29362413081d322c2c3e2d58634b704e522f94e5070d +210f141319181d1f1b1a20201b221d2162843b362e2c48b6605b67800e13 +0e3957724823250a1d3a39372837271827362a3b3129170925422c31393a +10072f3b383e3f1d7bf0f1ffc55c95768278777b7c78726c696971716864 +666b6c6e6d6c6f717069646a69696965625c585966706e67b7b9bbb9b7b6 +b9bdb2b9c1c5c4c0bbb8c4c4c4bfb8b2b3b8b8bbbec0c0bebab8b4b8bbb5 +b7bdbfbcb9c5c8c1bec2c0b9cac4c1c2c0bbbbbfc3c5c7c8c8c9cbceccc8 +c2bfc2c6c6c2c1c3d5cdb8898a7c5962768083873b3b5eac99969effdc5e +7958477ebcbebcbbbabababcbdbfbfbcc2bebdbcbdbbb8b6b7b4b0aeb0b0 +aeaaa8a6a7a9a69f9ea19c9da09e9b979594a5938a91968f86838284847f +7974727168625c5b5852484338332f2d2e2d2e2d2c2c2c2b2b2b2a2a2727 +28282727262527272727272627262625232222212122232e1e212721241f +140a0d0d41504baff58863c0ca76789fa673718b9b6b6d8681875f73815c +2a59bad5ceab76ae720810589e99a5a6791605090e11100e0f1013131516 +120d0f142a22228a3b180a131a0e1d121ca22c141a171314606b04160c09 +1e00040403000011000c0e030415120c0c06030c0a020e00050000050000 +1800070600020900070f0f08070d0e0af0191ee24a58170d0d1f2f360912 +1b201c101100182206100f0d12191a0a1f1917140200000b001214140005 +05050e1616040b0a0618061914120f0c0b0d20031b0e000c000202050d20 +1616210d260fe5661bc61200030b090039316cc0ed2f6b23204d6a32020f +0d0b0e151a170c06061b000807050c03170010050705000d0b0808160012 +0c19121023100a0f0d1a0d09061217090d0a0115021710090015d503220f +22211c16201c19191e201d1a1823244f532d00153e0e00696b0713150900 +24425b250615001e192517192c000021222323200d0f002024232b280d0a +003016222c25162ed67dc0482abcd7e0dcdee2e3e3e1ddd8dedbd7d4d7da +e0e3dbd9d8d8d8d9dcdddfddd9d7d8d7d5d4d5d9dddcd786888a88868588 +8c81889094938f8a879292928d8680818686898c8d8d8b87858084848183 +898b88879397908d918f889a949192908b8b8f9395979898999b9c97908b +888c9393919196a7a08d5d5f512b334a5a62681816327e6e717fe7be3f5a +3a255892908e8b8b8b8a8a8885807f8d8d8a8b8a888583827f7b79787876 +7575737476736c6b6e696b6d6c696563627360575e635b52525052524e48 +43404139343131312d27231a1612101011101112121211111110100d0d0e +0e0d0d0c0b0d0e0d0d0d0e0d0e0e0d0d0c0c0b0b0909140609110d11110a +0407002a2c1a85ec8f6ac7d07c7ea5a976748f9d6f6f8881865e717f5a27 +58bbd8d1b27fba8014185ea8a6b3b5841d050607060505060708080c110e +0c0f152e282b9547271821261a281d25ab321a1e1814135f6901140b081f +00070908010414000b0c00000c09030300000707010e000904000d02071e +060f0e02101c0b232e312c2b313028ff2a31fa6374332924323c3d0a0d10 +130d050f082c3e28363533353a39293e362f2712060514091e22240d1513 +11162024171e1d192b172a2523201d1c1e2e11281b0918020f1117243a34 +3744304a2efc782ed92304141c1806463c77cbf6418b432e4e652f0c2126 +211c1d1d17110b091c000907050c03170010060806010e0a07071500120e +1d19182d1a171d192b24221a2325171f231f3c2f4740362933dc001c0a1d +1a150c16120f12191e1c18111d245866481b3d6736208780161e201b1238 +546d3415220b2b2331202538070e323334322f1c1e092d31303535171911 +45273239363050fda5de5825a4adb0b1b4b6b3b1b0aba8b0aeaaa7a6a8ab +adababaaaaaaabacadadaba7a5a5a4a2a1a4a8acaba64c4d504d4c4b4e52 +474e565a5b57524d5553534e494344494b4e515454524e4c464a4b47494f +514e4c585c555256544d5c565354524d4d515557595a5a5b5d61635d554f +4e52514e4f556965582c322709173145515604000f5a4e576ddcb63c5f3a +1b416c5e524947474a4f525554505955535353514e4c4c4b474545454341 +3e3c3d3f3e3736393436383734302e2f4231283138332b2a2b2f312e2a25 +252a25242021201d1816100e0c0c0e1010101111111010100f0f0c0c0d0d +0c0c0b0a0c0a0c0c0c0c0e0e0e0d0f0e0e0d0d0c0a150609130e13110b04 +0907343a2f99fd9f7ad7e08c8cb3b885839bac7b7c94898c667c8c68386a +cde9e2c28ec68b20256cb4afbcbc8a250d0f0f0e0d0a0b0c0e0c0d0e0b0a +11172f26268f43241b242416241924aa321a211c1818646e0819100d2405 +0e0f0e070a1905100f02000f0c060804020d0e07160914100c1a0f142c14 +1c190c19220f2630302a292f2f28ff3137fe6878372d2a3842430f13161a +1209120a2b3f29373836393f3c2c403a393521161623182c2f311922201d +232c2f1e252420321f322d2b28252426371a302313241220242b34493f40 +48324a30ff8235e02b0c1c241f0d4e427dd1fd43863e2f536c360e21231f +1d20241f17110e21050e0f0d160d2109180b0d0a0512120f0f1d091c1a28 +23233724202625352a27212b3022292a27413249443b2f3be60926112421 +1c141f1b181a1f23211d19272e616d4f203f69382289831920221d133956 +71391c2a13342f3d2f33461217393a3b39362325113539383e3d201e1248 +31414c483d59ffa5dc4e128887807c787975726e6c6a7575716c6b69696d +6d6f6e6e6e6f6e6f6e6c6866646361606165696863b7b9bab9b8b7b8b8b5 +b9bec0bfbdbcbbbec0c2c0bab5b5b8babcbebfbdb9b5b2b9bdbdbab9bdbe +bab6c0c4bebdc3c3beccc7c4c5c4bfc0c4c5c7c9c9c9cacccfd2cdc4bfc2 +c5c6c4d0c4cbcfceb093865554667782853d3e5a93a9ab84ffff64776c74 +b1c7bec0c6c8c7c5c3c3c2c2bdc4c1c1c2c4c4c3c2bbbdbebcbab8b8b8b2 +b4b7b7b5b2b1b0abacadadadaba8a6ab9b9194968e87878a8a8885807c7b +79736c6864615951493935302e2e2e2e2c2c2b2b2b2a2a2a2a2828282928 +28272629292929272727262525222222222121212d22232820221912090e +0e435047a7ed8861b5bf717498a370708a996a6b868e755a705e4654a4dd +d4a1b84528c60200af54060012d70e02081011100f100f14131517130e11 +1431112e784200181920141d1050653b0e180d2a0a6a5e1302110a6e443c +2b3a0f0000280b18252015060e2235212f150a0010a30879789d50000f84 +91aea6d08800060c0e100e000088a69ea793d35b13191b1b230a1a1c1a19 +150c160c0d1c0812170c170c190f0e1d01209189847c3b010d329f944500 +81151654131a00160e2116010000000027021321747b8b703e0009120524 +291f03cddfc4f1e5e5881b111a4a3f34181001030a1a424b702e1110131a +17100b0f170e00110900000007000a030e070b000a09061100090008021f +050b0600090d00000a000c0004020809170f120704192be845410b0c121f +231d1a16171b1a18172d0e197a3741533e7333167c6f3e5b160f09292836 +4c5514180002000d0900211100020000052701181000000c000f0b1a0000 +000013361ae24bb8f736abd3ecdbdee2e3e0dedad4d9d7d5d4d6d8dfdfdf +dbdbdadadbdedee3dfd9d5d5d5d5d4d6dbdfdeda86888988878687878488 +8d8f8e8c8b8a8c8f908e88838386888a8b8c8a86827f8286868385898a86 +848e938d8c92928d9c979495948f909495979999999a9c9d9a938a888c92 +9595a0979fa2a385695b28283d5362671e1b336a7f8260e0ec4a594e4f89 +9a8f8f969a9896918c86807e909090919393919087898a88838181847e81 +8484827f7e7d78797a7a7a78757379695f62635b5453565653504b464545 +3f3c383736332d291c1913111010101012111111101010100e0e0e0f0e0e +0d0c0d0d0d0d0d0d0d0e0d0d0c0c0c0c0b0b091305090f0c120f09030500 +292b1a84e68f68bcc5777a9ea673728c9b6c6d868d74576d5a4251a1dbd6 +a6c15138d81201b862181126e818060706050505070909080c0e0d0a0d14 +331534814d0b24252b1f2619566b41141c0e2b0b695d1201120d71494334 +431802052b0c16201a0c0005192f1c2d140a0014a9108284a95c061b909f +bcb7e4a018222a2e32311f099db9b3bfacef772f302e282a0913110b0809 +0a20212b4030383d2f3a2f3f37343b1b33a1968f894b142449b5a552008d +292e6c2b32172c24372c1510100e0439142633868a9a804e121e2921434b +4326e6f3d7fff8f6992a2027554a3d221a13282f2841416b38272f302c22 +151018221603160e01000009000c06110a0e010d090614000d000e0a2911 +1916101d200b212b18220514141e263a383e33304248f1443e08040b1519 +13100f1216181715250819834a5c74649b5b389a84506624242341404b5f +682526040f021a160c33231316050e183a1429210b061a061d1e31080d12 +042c553eff72d6ff3294acbdb2b6b6b3afaba8a6acadacaaa5a5a5a8adad +adacacadaeaeb1ada7a3a2a2a2a1a5aaaeada94b4d4e4d4c4b4d4d4a4e53 +55565453504d4d514f494446494d4f5253534f4b464a4d4d4a4b4f504c49 +535852515757525e5956575651525657595b5b5b5c5e6267635850505153 +515e5660676e523931090f273d4b4f0200144c666c50d5e84b6150467071 +574c4c4f5052525452504b57555556585856554d4f504e4a48484a45484b +4b494645443f404141413f3c3c44362e31342e292b2f3131302c2a2b2d2a +28242423201d1a0e0e0b0d0e0e100f111010100f0f0f0f0d0d0d0e0d0d0c +0b0c0a0c0c0c0c0e0e0d0d0e0e0e0e0d0d0914070a120d130e0a030a0636 +3c2e98f69f78ccd58788acb5827f99a879799093795e76685364b6f1ebba +d26145e41f10c76f221a2def210f0f0f0f0d0d0c0d0d0c0f110f0b0e1432 +14327e49072021271b2316566b41141f122f0f6f6318071712784f4b3b4a +1f0a0d32111b241e0f00081e3322321a12091fb71d9192b96c16299eaac7 +bfeba41c232a2d312d1b07a0bdb6c1b0f37b3336342e30111a19120e0d0f +21222b40303b40333e31403635452842b1a7a19a5b233257c3b563139d34 +3876353c21372f4237201b1b1910431e2d3f949daf97672831392c484c3f +22ebfcdefffffea031272d5b4e42241c13212829474a723a252a2c2e261b +161d2619061a1207090b150b180f180f13041211101d09180b1a15351d26 +231c282e172832202d112120292e403c413633464efa4c47110f131e221c +1816181c1d1c1a3014258c516379679d5d3a9c87526a272724434250656f +2d310f1f122b271c412d1a1d0c151f411b3129140f230f2625370c182019 +42694cff71caf1157285917e7b79736d696968717374706a666567707171 +7070717070726e68646161616063676c6a67b9b9b9babbb9b6b3b8babbbb +babbbdbfb8bdc1c0bcb9b8b9babcbebfbebab5b2bcbfbfbdbbbdbdb9b5be +c1bdbec5c7c4c7c4c2c2c2bfc0c3c7c8cacbcacbcdd0d5cfc5c2c4c6c8c8 +d9c7c7cccfbb7a7b6052617989864641538590ac9ecfe8b75d6683d5cdc7 +c4cac8c8c8c8c7c8cac7cac7c7c8cbcbcbc9bdc3c7c5c0bdbfc1b6bfc3c0 +bec1bfb8bab9b8babdbcb7b3b0a3999997908d90918e89868483817d7a74 +6f6a655f584f3c37322e2d2d2c2b2b2b2b2a2a292929292a2a2a29292727 +27272727272726262321222221212223212a2124231f22140e070e0d424e +44a0df885da3b06c708f9e6d6d8696696a81876e62603d549de5dacd5717 +4e985825115b808b7c9a730003091011100f101014141516110d1013411b +3f833b0a1a11022600134e46715a130f0c3352650419040a7e564e503a06 +0a0030090013450e180c0518153913001800a247d42a6168010086130307 +33bf000a17110b0e141a00000000000700181c17101106161a16201d0f17 +150f16080a190e100d1c1113051fb7e9abc7e4ee0f06c5c74fe6baed2400 +ca7e59b7002904185ff0f1dfedf135109ece4f5768f1311b280f31371307 +001e0a00041d0e1b380e223544591c180a122f53466e250b0a090f161d1b +0f070b00288a36584649101239546151006d1f144aa17889cd7a18079d8c +63e9cfc60004acf0ece4dfa603121014140d0d005d2e3514191b1a171b1b +1a191a181616170321a5303f4e03160829822b1f62211f1a4755354b6b00 +1c50cdbe5b0086001177898168961f1a11802a5a9693380e167d9a92a0ae +580030728d6930c0aee0e0e2e6e7e3dfdcdcd2d5d7d5d3d3d9dcdfdcdbda +dadbdddee5e0d9d4d4d4d4d4d7dadfe0dd898988898a88858287898a8a89 +8a8c8e868c8f8e8a878687888a8b8c8b87827f8588888687898985838c90 +8c8d94969397949292928f909397989a9b9a9b9d9e9d958d8b8e939799a9 +9a9b9fa4905051372c3e5a6e6b2a2331616a877cb2ce9d41455ca99d9493 +9a99999896938f8b8a969696979a9a9997898f93918986888d828c908d8b +8e8c85878685878a8984807e716767645d5a5c5d5a54514f4e4b4a474540 +3e3d3b35301f1b16131211100f12121211111010101011111110100e0e0e +0e0e0e0e0e0e0e0b0c0d0d0d0d0e0e0912070a0d0d140c08030500282c19 +7fd88f64aab6727695a1706f88986b6c84886f615e3b519ae2d8ce5a1e57 +a4663318628c9c8ead8402070806050505070a09090c0d0b090c13431f45 +8c4615261d113505225a527b641d17143b576a091e070f825d5559431013 +01340c0011400812060013103712001b02a94fdc346a710a02901d101544 +d20e22312e292c3437060b120813251635352c1d180511100911110d1f29 +2d3a2e303f31313042393b263bcdfbb8d3f1ff251edddf62f6c6fa3811e2 +966fcd153f182c73fffff1ffff4924b0e05f6678ff43303f2c5059372a0f +3923071d3425304d21344753682b2d31363e53406d33252a29242526241e +16160230923d5f4a4d14163c5764540070241851a88192d7872618afa077 +ffe5e11322c7fffcf4efb91f33373d3d343218662d32111214100d111113 +1415161614120021ae41586d293c2e489e402e6d2f32325c6a485e7e0d2d +61ddce6b10960a238b9d957caa312c22913b6ba4a146212d98b0a7b6c977 +125899ab782cac88b5b7babab7b2acaaaca5abaeaaa5a1a2a5adaeadacac +adadaeb3aea7a2a1a1a1a1a6aaafb0ad4b4b4d4e4f4d4a474c4e50504f50 +5253474a504f4b48494a4d4f525354504b464d4f4f4d4d4f4f4b48515551 +52595b585956545454515255595a5c5d5c5d5f636a655a53525255556759 +5c646d5d20271b152a465b58140b1647537470aacd9e403e4b8c6f5b5052 +51535659595858545c5b5b5c5f5f5e5c4f555957504d4f53495357545255 +534c4e4d4c4e51504b49493e363635302f3436353231302f2f2f2c2b2625 +2423211c0d0d0a0a0b0d0d0c0e0e0e0d0d0c0c0c0c0d0d0d0c0c0a090909 +0a0a0a0a0c0c09090c0c0c0c0d0d0912080b0f0d140a08020a05353c2c92 +e89f74bac68284a3b07f7c95a578788d8d7469694862adf5ede26d2e66b0 +713e28729aa698b48b0b10100f0f0d0d0c0e0d0d0f100d0a0d13421e4389 +421122190e32021f5a527c651f1a173e5d700f240e158b655f624c191c09 +3d130414440c160a0317163c1807240db35ae9407980190e9c27191e4cd8 +1324322c272a3133070c150916271a393931231e0d171810161512212a2d +3a2f334235363243393d2d46daffc8e3ffff322ae9eb70ffd6ff431beca0 +7ad8204a23377efffffdffff522bbcee6f7b8fff59434d34535833261340 +2a0e223a2b3552253849566b2e2e2c32415b4a7536242726272a2d2b2319 +18043395436755581f21455e695904752a2159b08a9be08f2f20b9a982ff +f0ea1d2cd2fffffffec72a3c3e43433b3a1f6d3339181a1c191519191a18 +1919181719072bb7485d722c3f314ba14331713236345f6d4e648514376b +ecdd7b20a6182f94a69e85b33b362c9b4575afac5128339fbdb8cbde8b20 +6098a165118b648a837d7b77706a6b6e6a7176736a646265707271707071 +6f70746f68636060606064686f6e6dbbbababcbebcb6b1babbbbbbbabcbf +c2babec0bdbababab9b9bbbfc1c1bebbb9bbbdbebebcbdbcbbbdc2c3c1c2 +c7c9c6c4c2c1c1c1c1c2c4c7c9cbcbcacacccfd2cdc7c8c8c9cacccfc7cd +cac3b06177644a506b807848415b8f90815a7cb1814d5978d8cacfc9c3c5 +c5c7c8c8cbcecfcfcccbcbcccbcac8c7cacbc7c4c2c5c7b9c5cbc3c2c8c5 +bac3bfbdbfc2c2bbb5b0a79f9d9995979c97918b88898987847d79726c67 +625b513f3933302e2d2c292b2b2a2a292929292b2b2b2b2a292827282827 +272726252520212122212222231f2821241f1d25110b060c0a3f4d419ace +875a93a36a6f8c9a6c6c849469697e866f5445549bd0d3c39768727d8100 +18002f345e432e1b00040a1011100f111015141415100c0f13300055b459 +06041319151618546b1505051b1a1345580c0e2005ac475748681f001d41 +22361d3629030c322b19271d2102006e9e70716b18000042443a657f4900 +0b150e08152e4514205321040718001415130b020c161c291d18012d2708 +140c1f190f1c091a1924003a79717f4ca7080048ab00014ff222005dddd0 +e2c2ee0a1800303d0000360d046bf1a4b1b7e42d0d1c142c2514241a1209 +281e12051a0504373b4f6e120d1a002e45495316111d130a091216090010 +1f175c513b32660004254c0001577d08040000263678000b087ea583bd6c +e90006bf9667606df108250f0b0e151317203425111b1b181c1e2021201e +1918191a182472274e562f1209418529405b23311e2b412350a1550087e6 +2bcbc5e94a1c49cedef0f0381b05e675cca381ed0b0dde605a5387cd1600 +0c706e5bbcaee0dee0e5e7e2dddce0cfd3d6d5d1d2d9dedddad9d8d8d8da +dae0ddd8d6d6d5d4d2d4d9dfe2e18b8a898b8d8b8580898a8a8a898b8e91 +888d8e8b8888888787898c8e8e8b888684868787888988878b9092909196 +9895949291919191929497999b9b9a9a9c9d9a9390919496999b9f9a9f9d +9685354d3f273351696231263c6f6d603c6099692f3650aa989b94919496 +9796949291929b9b9a9a9b9a9896939697938d8b8e93859298908f959287 +908c8a8c8f8f88827e756d6b66626469635d57535454524f4c4b4541403f +3933232019161312111012121111101010101212121211100f0e0f0f0e0e +0e0f0e0e0b0c0c0d0e0f0f100a10090c0b0d190c0a050600272b1679c78e +619aa97075929d6f6e86966b6b81896f54455298cdd0c2966b78858b0b22 +0137406f56412c03090706060505080a0a090b0c0a080b13300159ba6211 +0f1f2928292b647b23131329251e4e611517270cb3506052722902264826 +391e35270007302917261c22020072a27778711e0405484d44728c5b0d1f +2a26222f4b5f29356b3b2226371b302d221403070d0f1a10160941432a3a +32423a303f2f4241450f508b7e8c5cb91e1063c30d115bff361175f5e6f8 +d8ff1e2c08444f0d0c4821187dffb4c0c8f53f22332f494537473c312847 +3b2f21361e1d4f5064832527431e3d484856292f4437231c21252116202b +22675a443b6d0108294f000458800f0d020a304385061c1b92bc99d384ff +1c22d5a8746d7aff23433130333734302733220e14140e1214171b1c1917 +18171515277b39667552352a5e9e3c4f662e443340563663b4681199f63b +dbd5f95c305de2f2ffff4a2d15f785ddb18ffb1d24f778716ca3ee3b1030 +8b7c59ab8bb6b6b8b9b7b1aaabb0a2a8adaaa3a0a3a8adacabaaaaaaaaaa +aeaba6a4a3a2a1a1a4a9afb2b14d4c4e5052504a454e4f4f4f4f50545649 +4b4f4c49494b4a4c4e53555754514d4b4d4e4e4e4f4e4d50555755565b5d +5a5654535353535456595b5d5d5c5c5e6267615a59585757585d5961625f +500423241321405b541f13275a5a51325c996727233686675f524a4f5257 +595a5b5a5b61605f5f605f5d5b595c5d59545255594c595f57565c594e57 +53515356564f4b49423c3a3733373e3b363231343533302c2a242121231e +1b0d0c0a090a0b0a090d0b0c0a0b090b090d0b0d0b0c090a070808070709 +090808060707080a0b0b0c0910090c0c0d190908030a04343b298cd79e71 +aab98083a0ac7e7b93a378778a90775e5160a9dee3d4a87c869095132c0e +444c775d4733090f0e0f0e0d0d0d0e0e0d0e0f0c090c13300058b85f0d0b +1b26242729637a2314142a272253661c1c2f14bb59695c7c330c2f522f3e +223a2a020b332c1c2b22270a097bab81827d2a101154564d7a945f11202b +26212c475c2a366d3c24283a1e33312719080d12161f171b0c42442b3b35 +463f35413042434c1a5d998e9c6bc72b1b6ecf1b206bff411b7ffff1ffe3 +ff2937134f5b191852281f87ffc4d3dcff553541384d4433433e362d4c41 +33253a23215353678429263d1a404f505d2d2f41372722282c2518202b24 +6b614b44770b13345807095d8515140910394b8d0d24229bc4a4de8eff27 +2de2b6847d8aff2e4d3a383b403d372f3929151c1b161a1c1c1f1d1d1818 +1a1b1c2e823d6a7856392f62a342546c34483643593c69bb6f1ba3ff4aeb +e5ff6a3b66edfbffff563722ff92e7be9aff272cfe848180b8ff4b193082 +6b408d6b8e827b7a756e68697267717773686365686f706f6e6e6e6c6c6f +6c67656261605f6469717273bbbbbbbec0beb7b1b9bbbdbebebec1c3c0c2 +c0b9b7babcbab9bcbfc1c1bfbcb9b9b9babdbcbcbdbec8cac8c6c6c9c8c6 +c6c6c5c4c4c7c8c9c7c8cacac9c9cbcdcac8c8cececccacdc5c5cecbc5b9 +70865b312a384a46332d1e4f3d4c623f4b3f5d6d88d9c4cfcbc1cbcbcac9 +c7c7caccd1cecccdcdcccbc8d5d1ccc8c9cacccbc1cdd2cac8cdcabec9c5 +c2c3c5c2bbb4b4ada6a09c9a9da19d98928f90918f8c827e776c66655d51 +3f3a352f2d2c2b2a2b2a2a29292828282b2b2b2b2a282726272727262625 +25232021202121222123202420231c202b130c070a063c4b3d94be855889 +9e6b708d986c6d839368687b8e59334b9cd2d4b7b52c07120a3052000361 +ae6a83451e00060b11110f0f111215141415100c1015651760ac6d15140b +190811005957290b221e0a1f5a4e00151017cd463660b36500228f172931 +5f3809094110182141541a109613031b4265000908455038151600010207 +111c1f1d1c050c0a200b0f2a131714090a0b131a241415002b1d0f18191e +131621061a131f109c8700ae00dd411488a31be004c85b018a9b009f009c +7a007bf065797a792f03009687b8cace0a00191d1f0b181f161c101e0302 +1f101b1618229a8a041a0a00393c46701c0b000b1b1d1b18120f12090293 +60834860130508755f76414d0502188a5c634b56000008a1afc3bda70000 +21f1cabce9e600210e160a0a012727471c0e1c16151f20232424211c191a +111d4952384c2c09171c5363316e4b201029344a354a6b240800ca000a34 +e52c00052a00529a381f3d2ce7a8ceb1ce0000b3d2dfd0c4c337000d5a6a +30c07fe2d7d8dbdfddd7d7dcd0d3d5d2d0d2dbe2dedbdad9d8d7d9d9d8d8 +d8d9dad9d5d1d1d3dadfe18b8b8b8e908e8781898b8d8e8d8e90938e908e +8785888a88878a8c8e8e8c8986828283868888898a969897959598979596 +9695949497989997989a9a99999b9b959091979a99999c9598a09e988e44 +5c381210223834201704321d2e452535273e495ea98f99948c989a9a9793 +908f919d9d9b9c9c9b9996a19d9894929395978d9a9f97959a978b96928f +90928f8881817a726c6866686c68625c595a5a585752514b4542443e3625 +211b181514131212141313121211121415141513121010111111100f0e0e +0f0c0d0d0e0e0f10100b0f0b0e0a12230f0c090800262b1473b78c5f90a4 +7176939b6f6f85956a6a7d915b354d9bd1d1b4b22b06140e375b020967b8 +7894582f03090807060406080c0a090b0c0a080c15651964b2761e1d172c +1e250e6d6b3b1d3430192e695d0b221a21d753436cbf71052c9920303662 +390808400f172242551b109916061e4568000b0c4957411e240e11141b27 +323533311d26263f2d31492f2f26140d090d0f150713073d39313b3c4134 +37442c423b422eb49a06be03f0592fa3be31f211d56f19a0b105b506b08e +108dff778b8c8b431708aa98c9dbdf1c1531383c2b3b433c413544262540 +323a34363eb6a61d3833234b434979352f2a353a362f2f312e271b14a26d +90526a1b0c0c79627944520e0f259769725a670c091cb8c6dcd6bf121634 +ffd6c5f5f6053d2f382b281d3b2e461a0c15100c16171a1e201d1b19180c +1b4c5c47644828363b6e7a447b542b223c475d485d7f381c0edc061b45f6 +3d131b400c65ae4b334f3ef9badec1de0614cbeaf6ebe3e65c1030757b2f +b062bfb2b0afafaaa4a6aca3a8aca9a3a1a7afaeadacabaaa9a9a9a6a6a6 +a7a7a6a29fa1a5acb1b34d4d4d50525049434b4d4f50525055554f514f48 +484b4d4b4c4f53555553504d49494a4d4e4e4f505b5d5c5a5a5d5c5a5858 +575656595a5b595a5c5c5b5b5d605f5d5b5e5e5a575a535762635f591332 +1c0000142c28120900220e233f2438252a29387b595b534856585c5c5957 +55556362606161605e5b67635e5a595a5c5d5461665e5c615e525d595657 +59564f4a4c45403a38373c42403c3837383b39372c28241e1e211f190c0b +0a08090a09080b090b080a0709070c0a0c0a0b0708050606060507060606 +050606070809090c0a0e0a0d0a11210c0a060b02323a2686c79c6fa0b481 +84a1aa7e7c92a27776899a67415aa9e1e2c5c33b1420173f60091573c281 +9c5e3609100f100e0c0b0d100e0d0e0f0c090d15651863b0731b1a152a1b +240d6c6a3b1f36321c336e621228232ae05c4c78cb7d1136a329383c673d +0d0d45141c26475a2018a01d0d254c71091717525f4825271111141a252f +3231321d2727412e334c32332a18120e11151c0e180a3f3a323d4045393c +482f423d4838c0a815cd12fe653aaec93eff21e57a23abbc10c011bb991b +99ff839798954a1e11b5a8dbedf130263d3f402a373f3d473b472a294534 +3d363841b9a721382f214f4b5280392f28343d3b36353430281b16a57398 +5c7426161782697e495613152b9d7179616e131023becee3ddc91d2142ff +e6d6ffff1248384134322844344b1f111c14111b1c1d201f1e1917191020 +515e4c684c2b3b4075804b835d3126404b614e63863f2517ea142b55ff4d +21264d1773b9593e5d4affc6edceed121cd5f6fffef7f96c19326e6b1a96 +44997e75706d6862646c687176736a666b707071706f6e6d6b6b67676768 +666561606367707377b9babcbebfbdb8b4b9bbbec0c0c0c2c3c4c6c2b8b6 +bcbebabbbdbfc0bfbbb6b3bab8b8bcbbbbbdc1cbcbc9c9c9c9c6c4c5c6c5 +c2c3c7c9c7c7c9cacac9c9cacdc6c5c9d0d1cbc8cccdcaccc9d0ca8f8968 +341e121b1820193a3c453b3c9cff6a6e8faad8c1cbd3d0c9cacbc9c7c9cf +d0cfcdcccdcfcfceccd2cdc7c5c8cacbc8c7cfd3cecbcdcac3cfcccac9c8 +c4beb8b8b2a9a29d9b9c9d9f9d99979796959388847d706a6a6255403b34 +302f2e2d2b2b2b2b2a2a2a29292b2b2b2a29282625282827262625222221 +2121212121212120222123182234180e090b0439493b8eb28457869f6c6f +8e966c6d819067657775404a90d3cbc9cf7c260d2a1d050013008700117a +3ab20e070c11100f0f101315141415110f13192d0f26bf57000013060605 +0042512f09080700133d4709050006c285bd250d001100cf6c8b28110700 +004a1e473324050000377c722532180115333924324d230002040a0e0f0f +0c0e1a13101f18060a18181305191414121c110a0e101010151a05171214 +18140d1e0825e3d7f1d5ea4d0045e7c0e8c2e8800039eeb7eebaf07a002c +c716212b4d00160fcce3c251790f032729180a20080b0b0008220e241205 +0818297f3900160e1c475a4b920600162332333231251d1f2c2cf053ca74 +a88d0b26a0449a36a38b0700b92b9c388e840f30e732c632cc9b2800a5d4 +db8e75242c1c434f4933340e2a0d10251b18171f212223231e19160a0760 +58535c390507428165467b3f29253f3e565470b1d51f10eb4a180060b611 +27e8381100caa81f34e5000000be551a00647cd2c985471c00438f50c558 +c6dcd8d8dedfdbd9ddd2d2d4d2cfd2dbe2e2dfdddbdad9dadad4d5d7dadc +dad6d1d0d1d7dce0898a8c8e8f8d8884898b8e909090929392949086848a +8c88898b8c8d8c888380838181858787898d999998989898959395969592 +9397999797999a9a99999a9b918e929c9d98979b9d9a9e9ba39d645f4518 +04000b070e062320281d2184ee514c687ba68b91999996989a9895939599 +9d9c9b9c9e9e9c9a9e99939191939494939ca09b989a97909c9997969591 +8b85857f756e696768686a68636161605f5f59595249474a443a26231e19 +171615131515151414141313151515141312100f12121110100e0e0e0d0d +0e0e0e0e100f0c0d0c0f08172f19130e0b00252a126fab8b5e8da5727594 +996f6f839269677979444e92d2cac6cd7a240b2a20080118008e02208b4c +c1190a09070504060a0d0c090b0c0b090f172d1128c35d03091f181c1b0d +5665431d1a190e254e581a140c13cf93cb331b061f02db769431180f0501 +4e224b3727060000387d732631190015333c2737542d0b0d12181e222220 +24342f2e3e3a282c363227131e130e070d04081622292f383b263631353e +3c35412640f9e9ffe7ff651b61ffd6fbcff8960f4fffcdffceff8e0d3ed9 +28333d5f122b23e0f5d3628a22193d44352a402c3332212f483447352727 +37479d570e35353e596352a1252a475155504d4e4c433b4241ff66db82b5 +97132ca4489d39a8961404c83aab479f972244fb49dd49e3b33e0bb1dbe2 +9782374438616b64494513290b0e1f150f0e16181c1f1f1d191608056462 +626f5221245d9a7957884732345151696783c5e93327fe5d2b0771c9273d +fe4e2704ddbb3146f70d0304ce6730077c96ede8a86d411c5c9c51b940a5 +b8b0acaeaca6a6ada5a9aba9a4a4a9aeb1b1afadacabaaaaa2a3a5a8a9a7 +a39fa0a3a9aeb24b4c4e50514f4a464b4d50525252545553555147474d4f +4b4e505354534f4a474a48484c4d4d4f535e5e5d5d5d5d5a585758575455 +595b59595b5c5c5b5b5c605b585a62615955595b5a60606a663135290300 +000000020015121a121a82f14c303d4d714f52595855595f5d5a57565960 +6160616363615f645f5957585a5b5a5a6367625f615e5763605e5d5c5852 +4c4e4a433c3937393c40403d3b3d3c3d3a2f2c271e1f24221c0b0b09090b +0c0b090a0a0a09090908080a0a0a09080705040707060505060505060607 +070808090b0b0c0b0e08152c140f0a0d0230392481bb9b6e9db58283a2a8 +7e7c909f76738585505a9fe2dad7db88321834270d051c0b980c279250c6 +1d0f100f0d0a0b0e110f0d0e0f0d0b10182d1027c25b00061d181a190b55 +64441e1c1d1229555f211b141cd89ed64028132c0ee7809d381e12090451 +254e3a2c0b05043c81772a361e081d3b432e3b5a2f0d0f13181d20201e22 +33302e403b2a2d383328142218120d140b0d19242d323a402b3b363a413c +3747304bfff7fff5ff71266cffe3ffdfffa1195affd8ffd9ff99184ae534 +3f496919302cebffe3729a3327484b39293d28333726344b374b39292a3a +499f591137343d5d6a5ca8272944515958565651443c4042ff6ce28bbea1 +1e38af51a440ae9c1a0acd41b24ea69e294bff4fe351ebbd4b1ac1edf4a8 +924550436b766f564f192e10112319141119191c1e1e1b17140908656365 +7356252a64a1825f91523b3955556d6d89ccf03c2fff6b3a1681d8344aff +5b3412ebc93f54ff1b1213dd753b1188a5fffabb7a4a1e58923fa3268288 +756f6e6a62656d6a7175736d696c7276757371706f6c6c63646669686662 +6062676d7276b5b8bbbdbbb9b7b6b9bbbdbdbebfc2c4c3c7c3bab9c0c0ba +bcbdc0c1bfbbb7b4c0bbb9bcbbbabdc3c5c3c3c7c9c8c5c3c3c6c4c0c0c5 +c7c4c9cacccbcacacbcec8c3c7cfcfc6c4cacfccccc4cfc7a9867f533f2a +2b253a2c3c42587294c1ff787babc2d0c8ccd9d5c8c8c9c8c6c7cfd2d0cd +cccdcdcdcbc9c4c5c5c4c6c6c7c7c9cccfcfcecccbcacdcdcdcbc8c4bfbc +b8b2a9a19e9d9c9a9c9d9c9a979696958b8881716b6c6556403b3431302f +2e2d2d2d2d2d2c2c2b2b2c2c2c2b2a282625282827262625222223232121 +21211f1f2220202317263b1f120d0c0335483a8bac845887a26b6a8d946b +6c7f8d6462705b5298cbd2bbc2aa012c11431e21100e006765789eb37700 +080c11100f0f1013151314161211161c09925daca7ade0000565e6774357 +0b03013aa4004263b1170b32de2fe46984170035e83b906928080a0e6a30 +3c24180c0a146e0c3348010c0e004e202a42106800080e0d0607111e1112 +1a1c05031210161d1d091f11111414180a0a1f64005a2900690410181010 +1b002ce74bd40000000000de7ce01b003b0700ed91bbbeb72b2301c3aa6c +7396271300b31f4fd1a54e0011190c101e0e00121819020000000e00034b +89371f100411374f4c9100172e24130200050300081600848d883200060b +008f506b28040b0f45905a7729001e0f1e7a7b7c3729520052c48886d6c0 +2600118ae3e1c3611f28160b1816231c1f20202325211a14260739395f84 +aaa81f3e534d5c6f391e2d3b3b57556d99d9001a6aedecd8ac991d0064b4 +cfd0cb961b0994f0ebbbf15a2c1eb6e2b095b94c271c2a2d4db9519ee6df +dae1e5e0dcdfd5d3d4d3d2d3d6d9e2dfdddbd9d8dad9d5d6d7d9dbd9d5d0 +d0d1d4d8dc84878a8c8a888685898b8d8d8e8f929491959188878e8e888a +8b8e8f8d898582898482858786898f939192969897949293969490909597 +94999a9c9b9a9a9b9c948f939b9b9493999f9c9e96a29a7b5b5b35241519 +15281922263b5477a8f35d5882919c8e909d9b929698979494989d9e9d9c +9d9d9d99979091919090909193959a9d9d9c9a99989b9b9b9996928d8985 +7f766e6a69686567686765616060615c5d564b484c473c26231d1a181715 +14141414141313121213131312110f0d0c1111100f0f0e0e0e0e0e0e0e0e +0e0d0d0e0c0c11091c3a2118130d002429116ca58b5f8ea8717093976e6e +818f66647461589bcdd1bac0a600290e401d20110f006b6e85adc586030b +0a070504060a0d0c0a0b0d0c0b111a09935eb0abb3e6031579fa8b55691d +151049b3095071bf251940ec3ff47994270c43f6499d7635131318723841 +291d100e156f0c3348000c0c004d1f2943136d071018171213202e272c37 +3c272736323437311724120c0b070d0812317d177b47108722313e393940 +1649ff5fe60e0e1b131afc94f62b06512019ffaad4d5ce3f3715d7bc7e85 +a83b2b11c73161e3b7610827352a303e3124383e3f251c15202d162067a5 +53382e2830485956a52047625438201b27302a2a33089ea59c4406141809 +9857702d0b141a509d6784360c2d1e2f8b8c8d483c66115fcd8d8bddcc36 +0529a5fbf4d36b2228140912101a1316171a1f21201b1525073d426d96bf +bf3855675f6a7941273a4a4d696880adf0133380ffffeebfaf33117bcbe6 +e6e1ac2e1ca7fffcccff6c4236cefecdb5dd70493b403a4eb13f83c6b8b0 +b4b2aba9ada8aaabaaa7a6a5a7b1b1afadabaaaaa9a3a4a5a7a8a6a29ea2 +a4a7abaf494c4f514f4d4b4a4b4d4f4f505152545458544b4a51534d4f50 +5354524e4a47504b494c4d4c4f555856575b5d5c59575558565252575956 +5b5c5e5d5c5c5d615b565a615f5551575f5c605b6963472e3b1d0f040b08 +1c0b151a2d496fa4f352324e59624f515e5c545b5e5d5955575b5f5f5e5f +5f5f5c5a54555554545455575b5f6262615f5e5d6060605e5b5752504e4a +4139383939393b3e3d3d3b3a3c3a3030291e1e25231b0b0b0b0a0c0d0e0d +0d0d0d0d0c0c0b0b0c0c0c0b0a0806050909080707080707090908080a0a +09090d0b0b0f081a361c140f0f022e38237eb59b6f9eb8817ea1a67d7b8e +9c7370806f66aadce1caceb40b341747232515130974778bb2c78905100f +0f0d0a0b0e11110f1012100f151d0b9560b1acb3e602157afb8c576b2119 +1550ba10597ac82e224bf74cff88a3361b50ff52a57c3b17181a753b452d +20131117710e3348000e110553252f4718700912191610111d2d25293539 +26253633363832182816100e0e130d1533811b804f188f2a36413b3b461d +51ff6af21918241b22ff9eff38125c2720ffb1dbddd648401ee0c6888fb2 +422f1ad03d6ff1c5701532392c2f3b2d253b414229201a25321b266ba957 +3d3028324f6260ac214760563e2a2630352d2931099fa9a34e101f2113a1 +5f7633111b2056a36f8c3e133425369293945043711f6fdea09eefdc4512 +35b0ffffe277272a170a14121d1417181a1c1e1c161023053c416e98c4c5 +3f5d706975834c30404f516d6e86b4f61b3a8dfffffccebd411f89d9f4f4 +efba3d2bb6ffffdcff7a4d40daffddc4ed7c523e3e31409e2965977f7473 +7067686e6d727574706d6a6a767573716f6e6c6b646566686765615f6669 +6c7074b2b6babbb8b5b6b7babbbbbababdc2c6c0c6c4bcbcc3c2b9babdc0 +c2c2c0bcbac5bebbbdbbb9bdc4bcbbbdc3c8c8c5c3c6cac9c3c3c9cac7ca +cccdcdcbcbcccecbc5c7cecbc1c1c8c1c9cfc3cbbebd8f836763565a536c +596872787893b8ff9f92c2cdcad1d2d7c7d0cecdc6c0bec3c7d2cfcccbca +c7c5c2bcc3cacbcac8cacccecccfd4d3cfcfd4c7c9cac9c5c1bebdb3aea5 +9f9fa19f9b96999b99959292938b8a81706a6d6457403b363130302f2e30 +2e302d2f2d2e2c2e2c2d2a2b272825292827262625242224232321212020 +1f221f202417294121140e0b033445378aaa845989a46a668b936a6b7d8a +615f6c677bd1d0bac8bb380d030e10030813060000000000002619080c11 +100f0f1113141314161312182013ad7b548407fc1c1392830e5765cf1e20 +4de82b2e47e04d0d00755c62749c2c19008d705f648b3100005b37474125 +1308002f38394442220b142039404439210302050a0f0e0e0b0a0b0d0f11 +0913150c212c1019050f1f0f1f110055eb00c84e00dd001d051012181729 +ebaef0e7e8531220e7a8eedbf166210deca3edde9c421614a9f0cbf1e935 +2414c672787192cb0a0e18080a081812271710009f670de382054fac3b0d +11111f4a2c49901432072440453f3c36343d3520db906cee51461b2f9b40 +4996333119388f4a38a01c44134ca22e308612451858b83143a67ef42200 +276260840b0e161f0f1616261121201f2328251c14111328427c6c717c26 +1a0e3b6b68757e1f38455154682c00012f72e64dc32200103b69aa34a400 +0019229f9c6eb217005a6db53003ae9d9c005d461f5cc33668e8ded8e0e4 +ded9dbd6d5d5d5d4d3d2d0e1dddbd9d7d6d7d7d9d8d7d7d8d7d4d1d3d2d3 +d6d98185898a87848586898b8b8a8a8d92968e94928a8a919087888b8e90 +908e8a888e878486878589908a898c9297979492969a999393999a979a9c +9d9d9b9b9c9e9991939a998f90979199a1959d9190635c44453d45425943 +4e555858759bf7836d959b9495959b8d9a9b9c988f8c8e92a09f9c9b9a97 +9390888f9697949294989a9a9da2a19d9da295979897938f8c8b807b726c +6b6d6b6762646664605d5d5f5c5e564a474b463a26221c1a181716151415 +15141414131313131211100e0d0c1011100f0f0d0c0d0f0e0e0e0d0c0c0b +0e0b0c12092142281d170f002329106ba38b6090aa706c91966d6d7f8c63 +61706d82d4d3b9c6b7350700090b0006110600000108060534230c0a0705 +04060b0e0b0a0b0d0d0c131b11ad7b55850bff241ea0911c6573dc2b2a5a +f5383b54ed5a1e0e856c7284ad3d290f9d8170759c43090e6642514b2d18 +0e0131383943412109121e373f433a2507070b131818181920282a2f332d +37372c3d401e21060b1602140e0164ff08e76b1afa1d3e2b393b3f3a47ff +c2fffdff703341ffc3ffedff7d3c26ffbcfff7b3592d28bdffdffffd4c3c +28da848a83a4df1e253124282738344838311dbe842afe9d1e66c352242a +303d5b3957a93d663d5665635d616765645540f9ac85ff65582c3ba84952 +9d3a3a2241985442aa264e1d56af383a901f552861bf3446ab87ff34163d +757090130f161d0d10101d0818171a1f24241d1512142c4b887a838f3a2e +1f4975707b8529455463677d43181a4a8afe64d93807275280c14bbb0806 +2f35b2af81c328046e84cd4c20cebfbe1879582a5ebb2953cbbbb0b2b3ab +a6a9a9abacaca9a6a1a0b0afadaba9a8a7a7a7a6a5a5a5a4a19fa5a5a6a9 +ac474b4f4f4d494a4b4e4d4d4c4c4f52565157554d4d54554c4d50535555 +534f4d554e4b4d4d4b4f564f4e51575c5c5957585c5b55555b5c595c5e5f +5f5d5d5e605e57595e5a504e55515965596258593235262b2734324b3641 +474b4b6b95f675415a5e5656545c4e5e62645d544d4c5061615e5d5c5956 +534c535a5b5856585c605f6267666262675a5c5d5c5854515049463d3739 +3b3b3833383a3a363535373031291d1f25241c0b0c0b0c0e101110100e0e +0d0d0d0c0c0c0c0b0a09070605090b0a09090908080c0b0b0a0c0b0b0a0d +0a0b10081e3d21181210022d37227db39b70a0ba807a9fa57c7a8c99706d +7c7b92e3e2c9d4c54013071011040914080707090c090535240f0f0f0d0a +0b0f12100f10121110171f14af7d57870cff2620a3941f6876e2313362fd +40445df663281892798193bd4d381eaa8b787ca3470f116a44534d2f1b0e +02303637413f1f0c17233c44483e280a0a0b12171717191e24282c322b37 +382b3e411f23080c19091c150769ff0cec7322ff25452e3b3d44404fffcd +ffffff783a48ffccfff9ff85432dffc3fffebb613531c6ffe8ffff52402f +e390968fb0ea292d3625262235364d3d3622c38a30ffa4256ec9582a2f32 +3f624160ae3f643d576d6d686a6c6963543ffbb08aff6e623647b15259a5 +404129489f5d4bb32f57265fb741439928623572cf4757be96ff40234883 +7da01e14181e0e12121e091918171c212018100d0f2b4a887b8795413729 +54817d878f324b59676d82491d215196ff72e7461535608ecf59c916143d +44c1be90d33812798cd9582edbcbc81f7d582453ae18389f837574716965 +6a6e717676726d66627573716f6d6c69696867666664636060696a6b6e71 +b1b3b5b4b2b1b1b2bbbebfbcbdc1c1bfbfbebdbbb8b8b9bbb9bdc2c2beba +b8b7bec7c3bdbfc1c0c5bdbec0c5cacccbc9c7c5c2c0c6cccbc5cacacacc +cfcfcdcbcabbc6d2c6c4cdcbcecccac9cac7c0b8916456696a6268777281 +6ea193aeffafb6cfbcc1dad3cccec6c6c6c3c3c5cccfcbcfcfcbcacecec9 +cacac9c7c8c8c9c8cdced0d0cecececfcac9c8c7c6c2bdb9b4b0adaaa39c +9a9d9f9b9b9f9c9491928e89827970685f56433e39343232302f3130312f +2f2e2f2d3230302e2f2f302f2c28262627262523252523212224211c1f22 +23280a4e48161c02080b23483b8ab3795390956e5f858b6665818066595d +74bdd4c5afc46b030c0c0d0d0c0b0a0710090c090624403b000b0d0b100e +0b1118161616121217201a27333c6d16280b1c213f1b5155051017066265 +3bb0540009120c000900001109020600000000160e050000000000000402 +03090904050a0809040a18140400080a0d0e0e0c0d0b0b001207120d0c11 +10184a362100290e152406090ceab3e7e2b5eb001518060e190f0929221f +192e150607322e2a2e542805124349262c5a301d2639220000131c2d1e21 +3433404d10090921160009140828191a04e4a5acd1001d3a4c30191c160e +6a4b2c82040830130000000000001632005c9e6e8d65806047687a415354 +6930a14e47476040d12f486650526a6e85047778636f84a6860000a46a3e +6a1515151311141820262d2b282728262422141b2b4e617770a8f2063c3a +62a9d7d2e03c4d4a5b90eaed6c4e3debb8e5eddc6f3e34d763bde0b14920 +60ebb3e9dead96626fdfb2b1a2e50913533469d14c46c4ded3dce2f0d8df +ded8d4d4d7dad9d6e4dddbdcdedcdcdbd3e1e5d9d1d4d8d5d5d1d3dade80 +828483818080818a8d8f8c8d91918f8d8c8b8986868789878b90908c8886 +8587908c868b8d8c918b8c8f94999b9a9897959290969c9b959a9a9a9c9f +9f9d9b988994a094929d9b9e9c999b9c98918a653d344c524c536057624d +807390f29290a38a8a9f968f928f9395959394979d9a9f9f9b9a9e9c9797 +97969492929395999c9e9e9c9c9c9d9897969594908b877f7b78756e6765 +6769656569665d5a5d5d5d574f4a443e3827231d19171614131414141312 +1212111514131212131313100f0d0d0e0e0d0b0d100e0c0c0e0b060a0e0f +1900494a20270d0e09132c146bac805a979b74658b8e69678382685b617a +c4d7c8aec2680005050607060706050d0a111314344e4504090400070505 +0c0f0d0d0d0c0c121b1827333d6e17290f21284622585c0c171b0d696c41 +b65a021a261e101a0c0a221a14180d05110e2b20170d080a0b09040d0807 +0b0905040903040208181405030c10131413141519211c2f273431303330 +345e44290025050819030e1bffccfffdd0ff08363d2f3a42342a46383531 +4b33292a554b42426841222d5e6441477349363d503909062a3346353848 +47525f241d203a321b2832264435361dfdbcc3e50d2f4b5d412a2f322879 +583d9e303f664309121a1c322a40561d7ebd8ba87d96745879874e5e5d70 +37a8554e4e6747d5334c6d54566e7591127e7e64718ab094100bb87a4a71 +191615110f0e12171d2422232324252523151d2f576b827db7ff1748446a +afddd9e9475a596ca5ffff876b58ffd2fcfff389584ef17dd7f7c8603676 +ffc9fcf1c0a87685fad0d1c4ff262b633d6acd4236abbfafb3b2bda5adb0 +aeababacaca8a6b3afadaeb0aeacaba1afb3a79ea1a5a3a4a2a4abaf484a +4c49494646464f52514e4f5353515251504e4b4b4c4e4c5053534f4b4948 +4e57534d51535257505154595e605f5d59575452585e5d575c5c5c5e6161 +5f5d5b4c576355535d5b5e5c5e5f616059563814112e3a37405046503c71 +6686eb8061664b4a5d555054565a5d5a55525358585f5f5b5a5e5d585858 +5755545455565d5f61615f5f5f605b5a595857534e4c4945423f3a353338 +3a37373d3a34313332302c2525201f1c0f100f0e101211101010100f0e0e +0e0d11100f0e0e0f0f0f0c0b09090a0c0b090d0f0d0b0e100d08090d0e16 +0045451821070e0c1d3a267dbc906aa7ab8473999d7874908f75676d88d4 +e6d7bccf73070d0c0d0b0a080706140f171515334e46070c09060c0a0910 +141212121010161f1b29353f70192b12252e4c285e62141f261773764dc2 +660c24312c1e2a1c1a322a2224170c17132e24190f0b0b0c09050c080608 +070000070708050b1a1607040d101314161617191f182d24332f2e322f35 +5f452b0226080f210a1420ffd1ffffdbff103d43313b463a314e43403b53 +3b2f305b534c4d73482834656b484e7a503d455841110f30394a3b3e5150 +5c692d24263e331923302848393a22ffc2c9ec143955674b343635298060 +45a2313c6647131d2828392e3f541e80c091b187a17d6281905664647a41 +b25f58586f4fde3c55755d5f777f9d1d8e8c76809abca11a16c187568125 +1b1712101014181e252320202121201e10182e566c8483beff1f545075bb +e9e3f24d605e73aaffff8e7163ffdfffffff96655bfe8ae4ffd66e4484ff +d7ffffceb27f90ffdbdcceff2c2f633a64c2361d82897575727c646e7474 +757575716d687873717274726e6d627074685d6064646a6a6c7377a9abae +b0b1b2b4b6b4b8bbbcbfc4c5c3bdbdbcbab8b8babbbabec1c0bdbbbabbbe +c7c3bdc1c3c3c9bcbdbfc4cacdcecdc5c4c1bfc4cbcac5cccccdcfd1d1cf +ccc6bdc8d1c7c7cdc7c9cbccccc7c4c1c0cd905a505f777d6f7f8877817c +8eb689acc8c3cbd7cccccdc9c8c7c3c2c3c9cdcdd0d0cdcccfcfcbc7c8c8 +c6c6c8ced2d0d1d1d0cdcbcbcccbcacacac9c6c1bdb5b1aeaba49c9a9d9f +9b9c9f9c95929389867e766d665c534a443f3a3735333235353534343333 +33333434312e2d2e2f2e2b29292a282625252626232323241e242423270d +52461615030b0e254c4591af77598f9768618794696182845e4f61a3d4be +b5bf9b03110d0d0d0e0d0c0a0a07000c22201d1e16010a0c0a0e0b081013 +141415111117202014286587090e1a220b0d0758680e102713231353710a +2c1f0a0700251c00272c2a002213150e000f0d090706070709060001080d +0b0a0b0e100d14221c0e09090b0d0e0e0e0d0d0a030902181f131513110e +0720071c1c0e0e131000e9bbc3dcc3c700110a3210110d122a281c101a1b +120f1b140b0814181b262f2b1b12121222302c1e110f13182b1f1d1f0901 +000e1a080b18120d0015051f12004ac3842e001f66722e2b0d3223513147 +460f3e937b9e7b8b640000134e2850300000004950446650000000274d65 +3f0c190008e84a575d030007294c208b380000030000190345da848c1115 +14121013161f242e2d2a2a2c2b2928103340588ac9e3f6e52e444a50a7f2 +fbf93d5c765d4084441b350d0c0c1d4b2e22450016000d1001332f0c0416 +5511218a200017041000001018361a68ca4b3aace0d6dbe1ecdcdfdad9d6 +d5d6d6d8d7e3dedcdddedcdad7d4dfe2d9d4d9dddad3ced1d8dc77797c7e +7f81838583878a8c8f9495938b8b8a8886868889888c8f8e8b8988898790 +8c868d8f8f958a8b8e93999c9d9c9594918f949b9a959c9c9d9fa1a19f9c +948b969f95959d97999b9b9b999692919e62332e445f6456626956605c70 +996a869b91949c8f8f93929596959292979b9ca0a09d9c9f9d9994959593 +9092989f9c9f9f9e9b99999a9998989897948f8b817c79766f6765686a65 +6669665f5c5e5857514a454039342c28221e1a1815131616161515141414 +141515120f0e0f12110f0d0d0e0f0c0b0b0e0e0b0b0d0b080c0f0f18024d +48202210110c15301c70a87e60969d6e678d976c638486605165a9dac1b7 +bf99000c060707080706060602000f2c2e2c2a1f020803000505030b0d0b +0b0c0b0b121b1e122665870a0f1b230b0d0758680e102713251555730c34 +301e1a0f362d11383d3c0f36272d261724221e1b181715151009070d0f0d +0a0b0c0e0b14221d0f0d0d0f131313131519201d26223a433737312b2215 +260918130102101406fdd4def7dee210322f5b3c3a34354840342b373c37 +344032261e2b333a454e48382f2f2d3d4b47372a282c31443634331d1313 +222f2023322f2a1a2d1a3425095bd4923c0d2c707c38331a47385e3e5a63 +3d75c6a8be95a58620353f754e73530917116168587a6204090330516943 +101d000ceb4d5a5d0300072c562d933c00000705032a1658e88c90131414 +100e0d10161b25242426282a2a291238465e92d3eefff23b4e5256aef6ff +ff4667836e559d6038542928283765483e611530092727184a46221a2c6b +27349b31123222311b1c292b411e69c7472f96c4b5b3b3bba9adacacabaa +a9a8a6a5b2b0aeafb0aeaaa7a2adb0a7a1a6aaa8a29fa2a9ad444647494a +494b4b494c4f4e5156575550504f4d4b4b4d4e4d5152514e4c4b4c4e5753 +4d5355555b4f5053585e61626157565351565d5c575e5e5f616363615e57 +4e596256565d57595d60605e5b5a596a31080926454e425055434d4d6591 +56596054545a4e5054595c5e5a545052565a60605d5c5f5e5a5556565452 +545a60606262615e5c5c5d5c5b5b5b5a575250484643403b333136383637 +3b38312e322d2b2723211c1b18141312121212131113111110100f0f0f0f +10100d0a090a0e0d0c0a0a0b0b0b0a0a0e0e0b0b0f0e0a0c0e0e15004943 +181b09110f1f3e2e83b88e70a6ad7e759ba67b7091936d5d71b7ead0c4cb +a407130d0b0b0c090805070804142d2e292a1e040b08050a09070f111010 +110f0f161f21152967890c111f2813150f6070181a311f31216280193f3a +29281d463d21484d4a1a3f2e312a1b27251f1c1a171615110805090c0808 +090d110e16241f110e0e101316161617191e1a241f39413536312a211526 +0819160a0c191d0dffdbe7ffe9ed1b39355d3d3e393b504a3e343f433d3a +463a2f29333a3f4a534e3e35353444524e3e312f3135483c3a3a241d1a29 +342425312d26182f1f392b0f62dc9b4516357c884440234c3b664661673d +72c7adc9a2b49229393e744f75570e1f1a6b7263836c0c100b395c744e1b +280915f45663670d07113560369e480c0d13100c321d5ff1979c1f1a1613 +0f0f12191c26252423252625240d34445e94d5f2fffa44585d62b8ffffff +4d6d89755aa2643e593433344472554a6d223d16343526585430283a7935 +42a5391b3b2c3a22242e2f431d64c03c1b6f927f787579686e7071747370 +6d69687774727374726c69636e71686065696968676a7175a4a6aaacadaf +b2b5adb3b7b9bcc1c2bfbbbab9b8b8b9babbbdbebebdbbbbbcbebcc5c1bb +bfc3c4cbbdbdbec1c6c9cbcac0c0bfbec4cbccc9cccccdced0d0ceccc0c0 +cbcdc6cacdc3c5c9cdccc7c4c5c8c1dad5964f496e86848e8e8196aba4b1 +b6c6c6d1d2c8cec6cdccc8c4c3c4cbd0cfd1d1cfcfd0d0cdd1d0ccc6c4c4 +cacdcfcfd0cecccacacbcac9c9c9c9c7c2bfb5b1aeaca59e9c9f9f9d9d9f +9d9795948f89837c756b615b4d4945403e3c3a3a3e3d3d3d3d3c3c3c3f40 +403d3937383b3633323132312f2d2b2c2d2928292b282824202510564113 +0f070f0f234b4b94ab73608b9c63648698695d8285534b7bcdcebaa9cb19 +0308101010100e0d0c0b0b091a29231c1f1e030d0d0b0f0c091113131214 +13131a232106095c740504171c041443876f14370f231b2491820043291a +2713ea1358f29bea110c16180d180c0e110f0d0b0c10130d090d12100a06 +0c0f0e16241d0f0c0a0b0e0f0c0c0e0d000808000f1e0d151820000d4025 +0c19172c110535de6c7aed363e00230603000d0e1c242a18141112151d19 +2221241c051d2c27282f27140b2938291b1b170a091f202829160f090610 +04121c0d10190f1f190a1498e800282d10546ea9f7212926392e55523300 +4d37d09c774a00172446214738221e145769597e6b0521134758888f1c06 +0007d359796d071a1d382e03552c1920141a110b0c37d30203031212110f +12151c202b2a28292c2c2b2a24221f49581903000a0c1e5a704c0500043a +4d42771b40692d77590010245d2f3c551c021a57611e3a0f0b114258186a +921a140a1121261d1f292f0c70b93a2581dcdad7e0e3dedddadbdcdad7d6 +d8dae1dfdfdfdfdddad5d9e0e0d9d7dcded9d0cdd0d7db7274787a7b7d80 +837c8286888b90918e88878685858688898b8c8c8b89898a8c858e8a848b +8f90978b8b8d9095989a9990908f8e949b9c999c9c9d9ea0a09e9c90909b +9d969a9d9395999c9b969394978da7aa71312e566d686f6d60768f899591 +9b959b988c928f999b99969292989d9ea1a19f9fa09e9b9e9d99938e8e94 +9a9b9d9e9c9a989899989797979795908d817d7a787069676a6a68686967 +615f605c58544f4b433d382d2a2623201e1b191d1c1c1c1c1b1b1b1e1f1f +1c1816171a17161514151513110f12130f0e1111100e0c0c130551431d1c +14150d122c2071a47a6792a2696a8c9b6c5f8487554d7dd0d1bca8c91600 +01070707070807060706091e322f2b2b27050904000606050c0d090b0d0c +0c151e1c04075a7204031619000f3e826a11340e211922918200493a313b +27fc2568ffadfc25232d31293426282927221f1e202119131618150e0a0e +0f0e18251e10100e101314141416181123251d2f412f37363a111b462506 +100a220e0942f18392ff4e5615442b2f253937424545332f30353b454143 +3e3d35243f4e49474e46332846554637373326253b3941412b221c19251c +2a362a2d33232e281721a5f2023134175872adf92838354239666f5f147f +60eaaf8c672a4a506e496d5d453f3273867197821c3524515f8f96200a03 +0ad359796c06191c38370d5c301b221823201c1f48e009030111110f0d0c +0f131722212225282b2b2a2627254f5d210a021315256174500800083e56 +4f883059864c98771e2e40794b5873381e36737c39552a23295a70307ea0 +272723304245393237340e6fb83a2071c4bcb2b4b3adabaaadafada9a5a5 +a7b1b1b1b1b1afaaa5a7aeaea7a4a9aba79f9c9fa6aa41434749484a4d4e +44484c4d505556534f4e4d4c4c4d4d4e4e4f4f4e4a4a4b4f4c55514b5155 +565d505052555a5d5f5e52525150565d5e5b5e5e5f606262605e50505b5d +565a5d53575b61605b585a5d516e77450d113c57535b5a4d67817e806766 +5b5f594d534f5d61615b5753565b5c61615f5f605f5c5f5e5a545050565b +5f60615f5d5b5b5c5b5a5a5a5a5853524844413f3a3331363636363a3832 +30312f2d2a26251f1d1c1415141515141614161515151514141417181815 +110f1013121211101111100e0c11120e0d1112100f0c0b11034d3e15150d +15101c3b3385b48a77a2b279789aaa7b6c919462598adfe2cbb6d41f0508 +0c0a0a0a0a0908080a0b21312d262924040a070409080610111112141313 +1b2422090c5f7709081b2006164589711a3d162c242d9d8e0b5544394632 +ff3378ffbbff302b33352c3527292b27231e1e1f2117121316110d090d0f +0e1727201211111316181717191a0f1e21182c3d2e363439101b46250813 +132b17124af88b9cff5a62204b3132283a39454a4c3a3635393e47434844 +443c2941504b4a5149362c4a594a3b3b372a283e3d45453029221f281e2a +3528293024332d1d27abfb0b3a3e21647eb9ff323d38493f6d7360128066 +f7be9d75344e516e4970634b483c7e8e7b9e8a223c2b5a6999a02b150c13 +db6181740e1f24403e16663b272e232c2723254fe8130f0c171614101013 +181a25222224272929282323234f602410091c1e2f6b7f59110911475d55 +8f355e8a519d8128394c8557637d4329417e874460352f35667c3c89a92f +2d2835474a3d383a370d6bb3320d4f96887b77736b6c6c7176746e6a6668 +7375757575736c67686f6f6863686a686462656c70a5a7a8a9a8a9acaeac +b1b5b5b7b9b8b3b8b7b5b5b7b9babbbdbcbbb9b9babdbfb8c1bdb7bcc1c3 +cac2c0bebfc1c3c4c3bcbebebfc5ced1cecacacacccecdcbc9bec6ccc8c5 +cbccc4c7c9cbcac7c5c6c9c3d6d5ad868386779197a094a6b19fbcbcbeba +c8cac8d4c6d0cec9c5c3c8cfd5d0d0d0d0cfcfcfced8d3cbc6c7c7c8c5c9 +cacbcbcacacccec5c5c5c6c6c4c0bdb3afaeada8a2a1a5a1a0a0a09f9c9a +9997918b8880776d68534e4b484946454347494848484848484d4c4a4948 +4848454342403d3e3d3b38353a3b36333435322c221e20155a38100d0d0f +0e1b404990ab706285a164678192675d807c4959a8d4b6b7c15c031a0410 +1111110f0e0d0c071d250e021323210711110f130f0c131515141716171e +282c1b0140542121181b0e051c473b18570f27111f5384173e230f0000f1 +93e36604f1060a17120b210f0f10110f0e0f1016121211110e0907070808 +142017090a0a0b0f0e0d0d0e0d002023040008000b0014001a45390f161c +0a0b0606636689b6c7e922001d1e111314231b2818201913132016271e21 +1113181f1d1a17130f141f2a291d0e080a0b1c1d24221417130f0b081006 +0514071e170b2700383b0002232db8c02d3c011b2b459185320c009ccedb +f0cfd0261326402a3b1e2a1f215a625863510a212071303d57130b174a77 +063f39022027402a386e261324181e16221a10c38d260c1010100f11131a +1d242321222424232116001796b42d1c240931126caa5a16261e63434e86 +4f4c252e70523b215d7546432a211536a68e313e330d138a560c9a991e30 +2617050d1d2532431485ba2e2658cddbd2dcdae0dadbe0e2dfdad7dce0db +dde0e0e0dfdcd6dee0ddd7d7dad8d3d0cccfd5da7274757675777a7c7a80 +84848688878285848282848688898b8a898787888b8d828a8680888d8f96 +908e8d8e909293928c8e8e8f959ea19e9a9a9a9c9e9d9b998e969c98959b +9c9497999a99969495978ea3a88766696e5e787c84778b9a89a39a938a95 +928e9a909c9d9c9895969ca29fa0a0a09f9f9d9ca5a09893919192929598 +999998989a9c9393939494928e8b7f7b7a79736d6c706c6b6b6b6a676564 +635e5a59554d4744322f2b29282623212525242424242424292826252424 +242323211f1f201f1d1b181d1e1b171819191008090e07553a1a1a1a1509 +0a211c6da477698ca76a6d87956a5f827e4b5baad6b8b6bf590013000708 +080809080706021b26170e1f2e2a070d08040a09080f0e0b0d100f101923 +2716003e521f1f1616070015403613540c240e1d5182154234261308ffa5 +f37614ff1a21302e293f2d2d2c2b2926242426221e1d1b17120d0b0c0c18 +241b0d100f1314161515151812393d211c2b1c2b1b2d08264937090b0f00 +080a13767ca1ccddff3d1e424a3e413d493c45353d3a363b493e4a3d3c2c +353e45433d3a363236414c4b3c2d27272938363d3a2c2c26221f1d28201f +3120302516320941420206272fbac02c3b0324344a98974e381dcaf1eefd +dee75044526a5263434f41437b8074806c253a37803a47601c121e4e7c09 +3f3a011f26413141752b16271d2725342e22ce9225090f0f0e0d0a0d1114 +1b1a1b1e202323231b011d9cb93220280d351670ae5f192921674a599764 +68444f93735c417b916461483d3252c3a94c594e252ba26e24aea329423e +35242b35343a441284b92f244dbac0b1b4acaea9a9b0b4b1a9a5a6aaabaf +b2b2b2b1aca6acaeaba5a4a7a5a09e9b9ca4a7454748474646494945484c +4a4c4d4d484c4b49494b4d4d4e4e4d4c4a48494c4e46514d474e53555c55 +535253555758574e505051576063605c5c5c5e605f5d5b4e565c58555b5c +54595b5f5e5b595a5a4c626f563f48544862696f657a8c7c8f7766595c55 +4e5a506062615d59575b605d6060605f5f5e5d6661595453535453595b5c +5c5b5b5d5f565656575755514e454241403d37363a383737373833333234 +312f2d2b272322131314151717171519191818181818181d1c1a19181818 +17181816151615151312171814131415150f09080c065135121313150d14 +303081b487799cb77a7b95a4796c8f8b5867b7e5c7c4cc62051a020a0b0b +0b0b0a0908061c28140a1b2a27070e0b080d0b09101513141716171f292d +1c04435724241b1c0e061d483d1a5d152d17285c8d224d3c2e1e13ffb3ff +8523ff2327342f293f2d2d2d2c2826252326211e1b1a16110d0a0b0b1725 +1c0e101215181918181b1a10353a1d19271b2a192a08244a38090f180911 +131b7d87abd9eaff4827484d41413f4c414b3b433f3a3d4b404e42433337 +3f46443f3c383438434e4d3f302a2b2b3b3a413e30312a26201e281f1e2d +1d302618360d46480a0f323bc6cc3a490f293950a09b51371ccaf7fcfff1 +f75c495569546549554a4c848a7f88752c3f3d87435069251c2657821047 +3f07252c4637467b311d2e232c28362f24d2982d12151413121111161920 +1d1d1d2121212017001b9cbd38293118402179b76520302a70525f9e696c +4754977c654c869d6f6b50483a5dcbb45564573135ae7830b7ac2f464037 +262d39393d481382b529152d8f917c796e6f676a7279766e66666a6d7376 +7676756e686d6f6c66636664616361636a6ea4a5a6a5a4a4a7a9acb1b4b3 +b3b5b2adb5b3b1b3b6babbbabdbbb8b7b8babcbdb8c1bdb8bdc1c2c8c4c3 +c0c0c3c4c4c3c0c2c2c2c6cdd0cecbcacacccdcdcac8c1cbcac2c4cacac8 +cdcac8c8c9c9c7c6bfcfd2b2847a878b93969ea7a4a2a7abafb5b6c8c8c4 +d4cdcccac7c4c3c8d0d7cfcdcecfcecdcdcdd2cac3c5ced2cec6c8c8c8c8 +c7c8cbcdc5c4c4c6c6c5c1beb2b1b1b2afaaabb0a8a9a9a7a6a6a5a39f99 +96958e847a78635f595454504f4d525253535353535356504c4e5356534f +504c4a49494846424044453f3d3d3b363125211f1a6133110e100c0e1a38 +4b94ae705e81a269687b8c676279684674d1d3a8c675030f111211121111 +0f0e0c0b092020060112170e0812110f130f0c13151314171718202a2b1d +0a545a252217041c131a504e252a1e190c19325f242a44123200a6005000 +00bb0030200714171c161210131614110b0e13100c09090a08090a162116 +0a0c0a0b0e0e0d0c0d0e0d343c0c000a03041319001c30422b19221b1713 +409cf0ebede56a001f0b000a141624192419221c130c19152311130b1d19 +1b1c1609060b11111a231b0a09140d17171e150a161019111208003b5300 +0f1016000e3f371e15101251720f121e0b4524487b310000d27c00ef94e0 +0d011d3b363100080006364163492c050a2288448da600061254ab519463 +1f0025632959731e0916091011000300000b010d101011101214191c1f1e +1b1b1d1c1b182d121b828a060c152d1516879a261a0d34462d6d4e3f4c10 +3d5f112d0e573e2e412a1b103ba1272b35350000624051a883181d261812 +192d221f411198c02f373eb4dbd1dcd8e1dcd9dfe5e2dcd9dee1d3d7dddd +dddeddd7dadad8d6d7d8d5d0d3cfd1d6db71727372717174777a7f828282 +84817c82807e80838789888b89868586888b8b828a8681898d8e9492918f +8f9293939290929292969da09e9b9a9a9c9d9d9a98919b9a92949a9a989d +9a969697979593899aa68d676272767e7f879091909698908d8996918d9d +9a9a9c9b9895969da49e9d9e9f9e9d9c9c9f979092989c98939596969695 +96999b9392929494938f8c7e7a7a7b78737479717272706e6f6d6b6a6462 +65625953523f3c383532302c2a2e2e2f2f2f2f2f2f322c282a2f322f2a2d +2b292a2a2926252327282321211f1b1308090b0c59351b1b1d120906181c +6ea7776588a86f6e818f6a647b6a4876d3d2a6c47200080b090608080809 +080706031f220c0c1f2217080e08040a09080f0e0c0d1010111923261805 +4f55201d1200160c134b4920271b180b18315f242e55264409b6035d0b03 +cd0547392332373c36302e2f302c291f2223201a171514110f101c261b0f +1412151517161516191f4a55261a2a232430320c26313e220e151114174d +affffffffb810740302b3742424c3c4336413f3935423e49323028434143 +443c2f2c3134343d463d2c2b362b3533372d222b252d252821185570131f +1c200518473f2318131251700d101e0e4a254d8a4d202afb9908f49af131 +2e49655f5a202f1f2b5863846a4d26293e9c559eb70b131f5fb458996822 +04266733637b230c1b111b2105150f0710000a0f0f0e0d0b0d0f12151515 +17181a1b1a311821878d090f182d15168a9d291d10344931785f54682f60 +85334f2e775c4c5f4b392f59c0444852520f107d5b69bb8c1f2c3b353033 +422d233f0b94bf313937a5c4b3b5acb1aba7afb5b2a9a3a4aaa1a9afafaf +b0ada7a8a8a6a4a4a5a29d9f9d9da4a74647484746444546494c4d4a4a4a +49444b4947494a4e4e4d4e4c47464749494c46514d484f53545a57565454 +5758585752545454585f62605d5c5c5e5f5f5c584f595850545a5c5a5f5c +5b5b5c5c5a52435467583d4057616b6d758082848c8974695f65584d5c58 +5b5e5e5b59595e635c5b5c5d5c5b5a5a5e564f51585c5852565757575657 +5a5c545353555554504f44424243403b3c413b3c3c3a3b393a3838323235 +352e2a2b1b1c19191919161418181919191919191c161214191c19171a18 +18181817171513171a1513131110110a090a0b5630131416120d11273083 +b7877598b87f7c8f9e797188775582dfe0b4d17d050f0f0c0a09090b0b0c +0b0a051d210806181c12080f0b080d0b0910151314171718202a2c1e0b55 +5b262318041a131a514f262e221e112039672e375d2d4e13c3106d1a12d9 +0e4d3d2432343b35302e302f2c29202123201b171515100f101c291e1216 +15171b1c1b1a1d1d1f475223182720212e2f0c25333f23121e1a1d2055b6 +ffffffff8f1249382e3a42434e40483c46433c3744404c37362e44414344 +3d302d3236363f483f2e2d382d37363b2f242e262e24261e15526c101e1c +21071a4a42291f1c1c5b7b1a1d28134e2a538d4e1e28fda118ffb0ff3f34 +4c64615e27362834626c8d71542b2c42a35da5be121b2565b95e9d6c2707 +2a6a35657e27111f141d2105150f09140611151515141314171a1d1a1918 +1c1b1b193018218a92101821371f2091a42e22153c523a7e66596c326488 +3c58398267566750413461c54c4e5a581817866273c293252f3c332e3243 +2f26420d93bb2c2b1a7e98817c6f7169687177746a636469646d73737374 +6f69696967656364615e636263696d9c9e9f9f9fa1a5a8aaaeb1b1b2b5b4 +b0b2afaeb0b6babbbabcbbb9b9babbbbb9bcc5c2bdc1c3c2c7c3c2c2c4c8 +cacac9c7c9c8c5c5c9cbc9cdcccccecfcecbc9c4cdc7c0c6c7c6cdcfcac6 +c6c9cac8c6d9cfc8af867077808b8f97afa5a1b7abb0bebdcdcec3cccdc7 +c5c5c2c1c7ced4cecbcbcececacaccd1c9c2c5cfd2cdc3cccbcbc9c7c7c9 +cbc9c9c9cacac9c5c1b9b7b7b8b6b3b4b9b2b4b4b1b0b2b2afb0a9a7aaa5 +9991907e776f6865615f5d626262626363636367625e60676a67635e5b59 +56565553504f51504b494740373528272120662e160f110b1724384f9ab2 +7459829e6e66788c68646b535195e4c7c08a0405160615111110100e0c0b +0b0e150b020b100b0c06100f0d100c090e1211121414151d27280e1c8b7f +150b190e171231764320250f09294ba55e19211f1c121be600ee7605f130 +1e001426011c150f0e13161310131c1f170d0708080a0809141e11070d0a +0b0e0e0d0c0e0c072139020520280c0300001b37656c533a1f0b1c1a003c +8195c2d0410c07130a0b12212123171614130b1420291a1c1f111620221f +1b18150c141a17110f11120b151b241a101e141c0b161a05395d0e140b19 +2617020c001c00438c702a100f2c3e2e486d17243cc8c0a4e514d4983b32 +434b4f2f44342d2d34623324271e32372a430d061500404f2b570d0f0e26 +1f124a53150f1a0d150f33181b4025131b111213131515191b1f1e1b1b1d +1c1a180f051672680213221f0223818a071c2f565f1e62698553235a7002 +0a26511e2e4e1f0d0d4092023d48150e5f5a005c83522a2526151b1e1d20 +0e2906909c222f3791d8d3dcdde2e1d6dce2e0dcd8dcdfccd3dad8d9dcdd +d7d2d3d5d8dbdbd8d5d5d2d4d7dd686a6b6b6b6e7275777c7f7f8084837f +7f7c7b7d838789888a89878788898a87868e8b868d8f8e93919091939799 +99989799989595999b999d9c9c9e9f9e9b99949e97909697969d9f9a9494 +97989693a39d9c8c6b5c666f7a7e869d9794ae9d9496919c9b8d979a9799 +999693959aa19d9b9b9e9e9a999b9e968f92999c97909999999795959799 +979797989897938f828080817f7c7d827b7d7d7a797b7b7879727278776d +686a59544d4842403c3a3d3d3d3d3e3e3e3e423d393b4245423e3a393736 +363533323133312f2d2b241c180b0d0c105e30201c1c0f110e162073a97b +6089a4746c7e8f6b666d555397e4c5bc87000010000c0707070708070606 +08110b08161d1612060c06020706050c0b0a0b0d0d0e1620230917867a10 +061409120d2c71411e240e0a2a4ca5611c283030242df60ffb8413ff4336 +163244213e372f2e3132302a2b31332b1f1917161412121e261b0f171416 +17191617171a19354f1c223e462a1d140424376163472d15082027085097 +a8d5e65b2d2c3f373b404944423637373b3440494f3b393e39424a4c4945 +403d343a403d373534352a3337403228332a301f2c301e53772724172530 +210a14052100438c6e280e0d2d3f2d4b7b314d69eed9aae315dfb5635b6c +7478566b5a5353598758494a415453435c251b2805525e39621717162b27 +1c545b1b132015211f462b2b4a2911160e1110100e0e0f1115141416181a +1a19130b1b776b0213201d0022828b0b20335662226d789d6f457d96272f +48713c4c6f402c2c5fb11f5a6532297a75127596592f303a2f3837302a0f +23008a9b27333387c5b7b7b1b2b0a4aab0aea6a1a1a69aa5acaaabaeada7 +a0a1a3a6a8a8a5a2a19e9da3a64142444343434546484b4c4a4b4c4b4748 +4544464a4e4e4d4d4c4848494a48484a55524d53555459565556585c5e5e +5d595b5a57575b5d5b5f5e5e6061605d59525a554e5657585f615c59595c +5d595259545b56403b4c5b686e768f8c8ba7927f7c6e716451555855585a +59575a5e625b59595c5c5857595d554e51595c574f5a5a5a585656585a58 +58585959585452494848494744454a4547474443454542433c3e43453c3a +3d2f2c2722221f1e1c202020202121212125201c1e25282523201e1e1d1d +1c1c1a191b1c1917150e0b140d0e0b105b2b18151610151a263488ba8b70 +99b4847a8c9e7a737a6260a3f0d3ca92080614000d0808080a0c0b0c0a0a +1009041016100e060d09060a08060f1211121414151d27290f1d8c80160c +1a0d16113077462329140f2f51ad68232e37372e37ff1cff9120ff4a3a17 +30421e3d362e2d31332e292b32342c211b1a171511111d281c111816181c +1d1d1d1e1d19334d19203c44281c1204233962644b361e132930125ba4b7 +e4f4683634423a3b404b48473b3c3b3d36414b52403f413941494b484440 +3d343b413e383636372c353a41342834282f1e2a2e1b5074232115233122 +0c170927074d9679331b18324332507c304966efe0baf82af3c56b5f6e78 +7c5d72635c5c6290604f50455657486029202e0956613c641919182e291d +535d1b1620171f1e4229284b2a161c15171717161618191d1c1b1a1c1d1c +1b140b1e7b720a1d2b280b2a87900e23365e6b2b737fa1734781992f3752 +7c47567645313164b625606b3830817c197c9c5f3332382c33342e2b1125 +008a99212518639b878074726e656b736f66605d635b69706e6f726f6961 +62646767676463656464696d959798989a9da2a5a6aaacabadb1b1afb0ad +abaeb5bbbcbabdbcbcbebfbebab7bec8c6c0c3c3c0c3c1c1c2c6c9cbcac8 +c7cac9c4c3c7c9c7cdcccccdcececbc8c2cac3c1ccc6c1cfcbc9c7c6c7c9 +caccc4c4cabb8e737d8c8d94969d99969d98b7b69cafd3d0cbc8c8c6c7c5 +c3c7cdd1cfcacacecec9c9ccd1cbc6c5c9cbcac6cececdcbc9c9cccececd +cdcececcc8c4c3c0c0c1bfbabbc0bec1c0bcbcc0c0bcbeb8b5bcb9aea5a7 +958d847d7a77777777797a7a7b7b7b7c81818080808081807573706e6e6d +6b676665635f5f5b4f4034282a202065291911120a222f394d96b17a5786 +946f627a8e635b58466bb6deb6a70f050817071410100f100d0b0a0a041d +1b0b0905000806100f0c100b080d1311121413141c253215278d871d1a1e +131a346eb9492124090e223dcc61182c26161819f2d7e3e2e9f20009281a +0a16110d0c0e0f110e0d1b22231c130f0b080d0908121b0d040d0a0a0e0c +0d0a0d0c000d3a0004203e0d1612021824333d352a0e1a18019eeba2d800 +00000a1d0500040d17261e180f151514121d15100d1310121a1c150b0604 +0e181b151010100e141a212713040f001b0c111f01000f0010080023070d +1316120d378b511e001e2e2e346e5c2f5300005e6b5f70e47e121025362b +000003001f2c4508000e07010a17621319090c171c6594280b072a262c91 +8e28031b140311090003210313071313161618171a1c201f1d1e20201f1d +1f1c3589630b0e20202349717101073c604438724d7e582e69671211414e +3250640c191539692b4b23181d8b8a096195001518110b0c1e0f201d240e +845b161e376dd1d0d9dedde3d7dce0dfdddadcdccfd8dedad9dee0d9d0d3 +d9dee0dddbdad9d5d5d8dc61636464666a6f7273787a797b7f7f7d7d7a78 +7b82888a888b8a8a8c8d8c898588918f898f8f8c8f8f8f9195989a999797 +9a9994939799979d9c9c9d9e9e9b98959d96949c96919f9b999594959798 +999094a19a77636e8181888a93908f9a8f9d927382a19c9897999b9b9995 +95999d9d9a9a9e9e99989b9e989392939594939b9c9b9997979a9c9c9b9b +9c9c9a96928c89898a88838489878a898585898985868081898a817c7f71 +6b625c5756545453535454555555565b5b5a5a5a5a5b5c53504d4d4d4c4a +4847464442413d3124150a0d0b105d2a201e1d0e1c19141c6fa8815e8d9a +75688091665d5a486db8deb4a30900010e000a060606070706050500191c +1014120b0e060c06010705040b0c0a0b0d0c0d151e2b0e2288821815190e +18326cb74921250a122642d1661d35372b2b2cffe5eff0f7ff0a21423828 +3633312e2e2f2f2c29353a3b3126221d171915121e25190e181518191917 +1717190f2250121e3d5b2a2f261021242d33291d04171c0baffdb5e90411 +0c2b42312d343b414c403731383d3e3e493d332a32384047494238302e38 +40433d3838373233383d432b1c24162f2027351a13291621170e2f13171d +1e17123a8e511e001d2c2c2f6f67497a1816726c576beb9837374e5f5428 +252b2647526b2f25332d272c3681313522242c3077a43819153632389c97 +2e07211e12241e08142b0711021012131310101012161516191b1e1e1e24 +243a8e660b0c1d1d21487272020b4060443c7d5c9674508c8d3936636e50 +6e852e3b3758884a6a40353aa8a6257da8011922242627341f261b1b047e +5a1b243565bfb8b6b4adb2a4a9adaca6a1a0a39daab0acabb0b0a99ea1a7 +acadaaa8a7a39f9da2a43c3c3f3d3e3f444544474946484a4a4846434144 +494f4f4d4e4d4b4d4e4d47464c585650555552555454565a5d5f5e5c595c +5b5655595b595f5e5e5f60605d58525952515c5653615d5b5857585a5b58 +45485f644d42576f717a7e8787879588907c55596e62575255575c5c595a +5f615e58585c5c5756595d575251535554525c5d5c5a58585b5d5d5c5c5d +5d5b5755535050514f4a4c514f52514d4d51514d4d454750524a464b3f3b +342f2f2d2e2e2f2f303031313132373736363636373830302d2c2c2b2b29 +2a2927242521150f100c0f0a105a251917170f2025253184b9916e9daa85 +768ea0756a67557ac4eac1b115060813000b0705070a0b0c0c0b0016170a +0e0b050a040b09050a07050e1312131514151d263316298f891f1c1f1219 +336dba4b23270e152945d56a213a3e303233fff0fdfdffff112543362633 +322f2d2d2e2f2c2a363c3d342a26211a1913131e2619101a191b1f1f201f +201f0d1d4d0f1d3b59282c251020262f342b260d222515b9ffc3f9131f19 +344a34303439404d423a333a3d3d3d483d352e35383d44463f352e2c363f +423c37373632353a3e442d1c25142e1e2432171026121b12092d11161e20 +1b16419559260925312f337369487716187b7e6e82fea7403c5063582e2d +3530515b74362a39302a2e3983333826262f3179a438191534303698962c +081f1d0d2017040e2a061406191a1c1c1b18191b1f1d1d1f212323222726 +3e926d151728282c507776040c43684e4583639a78529090403e6d795b78 +8a303d395b8b4d6d44393eacaa2981ae071c23202120311c261c1e057e58 +17181c41978880786d70656a6e6d665e5a5e5e6e74706f74726b5f62686d +6c69676867636266699392959395969d9ea3a5a7a3a6a8aba9afabaaadb6 +bbbdbac0bec0c2c4c1bcb6bbc8c6c0c2c1bcbfc1c1c3c4c8c7c5c1c2c6c6 +c3c3c8cbcacbcacacbcccbc8c6c3cac4c6d1c5bccfc6c8c9c7c5c7cdd1cd +c9cbba917779828b979a929ea498a9ad935c7ac9dcd0c5c6c7c8c5c4c5cc +d0cfcbcccfcfc9c9cec8c7c6c4c5c7cfd4cdcdcecccdced3d5d0cfcfcfd0 +ccc9c5c9c6c7c6c4bdbfc2c5c7c9c2c4c6c9c5c1b9b9c1bfb4adafa39b93 +8e8c8e8f908c8d8f8e908f918f91959a95908b92968d898887878683817e +7c7774726d5d4a3125291c1d62221715130d2c3736458dae7e588b8d6e61 +7f8e5d504b4281cdd6c12c03111806130f0f0f0f0f0c0c0a090a53684021 +150b080811110d110d09111413141514151c2526110d45521d280416231c +1d773128100d2510189d621b21330f21006037c18c405b002106152d160a +0b1112120f0f100c1215121217130d0e0a0712190b030f07090c0d0b0a0b +0b06165100000c3a03000a000a1614365f2e14182a15c0b693f0b2a12f15 +06110c040b0e271819112008110f1c0d18131912060c1d1b0806160d0d12 +19170f0e1511151e2712081a0c0611090f140d0d03000c1c000515031529 +216cfb3b0b1c192a3947f18b041c0a30ebf6fefcc628002c2e33270d0819 +090438561c0408150706234424000717251a392d010e070e131f3c22040e +19101209142c181d140615141518181818191a1e1d1d1f21232321384047 +6e350a111a24206680500c1427612a4c8030260b395b2800060d15244548 +0633102e2c44612016163b283dbf6803221506150019021935332f882f1e +253450c6cdd5e0d9e4dbdde1e0dedddcdcd6dfe4dfdde2e4ded3d8dfe4e3 +dddbdad9d5d4d8da5f60616261656a6d70757473747979777c78757a8188 +89888c8c8c90918f898387918f898e8d888b8f8f91949697939192969693 +93989b9a9b9a9a9b9c9b9896939a9496a1958c9f9698979593949aa09d9d +a59b796369737e898d88979f97a297743a539fb2a59a9da0a09d99979a9d +9d999a9fa09a989b9291908e8f949ca39a9b9b9a9a9ca0a39d9d9c9d9c9a +9591959290928d89888e8e93928e8d92928e8983858f918783867b766d68 +666868696566656766686768676e706e6664686f6766626161605d5b5a58 +54535350402e13070c060d59221d201e0f2320111466a7855f9293746583 +905f524d4483cfd6bf29000a11000a040505060606050504044f6842271e +110c080d08040807050d0f0e0d100f101720210c0b434f1b250214211c1d +773129111129151da56a232c452434046e45cd984c690f3620324b362a2d +3132302d2d2c262c2d2a2a2c2820201a1722291b131e1618191a1817181a +1a2d6a1814265319131a090f17123056250d183123d2cca9ffc5b7493329 +3a383237384d3b3b3343303b3946333b323b3a33394a4532304037353a41 +3f37363c33373d452e2434261f2a22282c27271c071b2a0a111f0d1d2e24 +6ffb3a0a1b16233341f095193e2e4ffffbfcfdcd3d1a4f54584c322f3e30 +2b5f7d432b2f3d2f2e496b481e263541324e411320171c1f29452808121d +161c15233b222315041011141515121212131716181a1f2122223d484c73 +380a0f19221f657f510d182b622d50893f392254794916282e3642636728 +522f4d4b617e3d3232574459d87b0b281f162a172c0e1d332d26822d222a +374cb8b5b2b4a8aea5a9adaca8a4a1a3a4b1b6b1afb4b4aea1a6adb2b1ab +a8a7a39f9da2a33a3b3c3a393c3f424345454243454642474341434b4f50 +4d524f5051525048444b58565054534e51545456565b5956535458585555 +5a5d5c5d5c5c5d5e5b5a565358525661574e615658585654535b5d535464 +644d4250606e7e847f8f99929a8a6221347782726567696c696665676662 +5c5b5d5c56555a5455545251535a60595c5c5b5b5d61645e5e5d5e605b59 +5559565756544f4f55565a5a5555595a554e454952554c494e47423c3939 +3b3d3e3c3d3d3c3c3d3d3d3d4346453e3b4048403e3d3c3c3b3937383634 +34363222180b070e080e5a20191c1a0e282a22297bb9956fa2a182718f9d +6b5e59508fdbe0ca34071218020d08060609090a0c0c0a08506841251b0f +0b080e0b070b09060e1314141615161d262712104856202c0717221c1d79 +332b13142c1820a76c262e49293b0c7950dba65a74163b21304933292c30 +31302d2d2d272d312e2e312d2420191622291b1321191d1f22201f201f18 +27641411235017121a0912191330592a1520392cdcd9b7ffd4c5563d2f3e +393036374e3d3d3545303a3845343d353d3930364743302e3e353439403e +36353b34383f452f2533251c271f252c26261906182a0a11210f20322b76 +ff4212231f2a3745f5971a3d2e52ffffffffe04e2555575e523a36463732 +66844a30343f312e4a6a481f283542324f421320161c1d28442809131e16 +1b13203821231707161a1c1e1e1c1c1a1b1f1e1e2024262726404a50773f +121a212d276b85550f192e6734599046402a5d81501f31373f4a6b6c2a55 +32504e65824136365b485ddd810e281e132511280c1c342f29842e212324 +2f93877c77666e676d73706a615b5c65757a757378767064677073726c69 +68676364666a9594959395989ea1a1a2a5a6a7a5a5a4aea6a4a6afafb2b2 +c3c1c3c1c2bebfbcb6babdbfc3c5c0b8bec0c4c5c5c0bfbecfc8c6cbd0ce +cac9cfcac9cbccc9c9cbcdc7c4c8cac7c5cac5c3c4c6c8c9cbcdc5bdcecb +89827d8d8f959a9c9a9a9ca3a9a12e57799ea577879fb4bbc0c7c9c8ccda +dcd1c6c7d0d6cfcfcececdcbc7c6cfd0cfc8cacdd2cfd3cfcecccfcdcecb +c9c5c2c1c6c7c7c4bfbdc0c4c6c2c3c5c2c2c1c1bfbbb4afa5a19e9e9b95 +969991909291959599989fa0a39f9c99a0a397918c8b8f9294949089837f +7059473e3321252050572e2226080c1e2b2d5091ae874b8397715f7c8555 +4052539aedd7340b010b060710100d0c0f111211111211531206271b2507 +131211110e0b0e141612121012171c201c130b3d3e222d0e0d1f1d23282a +2d18150d0f1f0f29241b26142000ae96f2dcbba103160e18190e0b2a100d +1b0d0c1010101214110e10150f090b121006050c0a030412150f08090d00 +4d0007025d000b0000060001275b2b2518280936e254b5deed39050b140a +130b121a14121512170f141a1512130d09081318100e0f09080e191f1a0f +0e120d0f19201b0c0a130e020610020b1d895d3c002033001914071e87ad +3c1c211d2b245bab5f1d1c2800003d8c98c0b70015405438191319120951 +5b29150f050a00095c1c002f260d3b5f3100000d00063054050b0c0a2720 +0a0020180c040e0b1b160c0e191511191d1e16151b19161c2716686a4416 +010b121c5b803d17081c2e1d4f5b231e07b9cd4be3c6e8261f655c152827 +22023d4f211512200068de52000e120d0f1510020f314e2f5c4a606a552a +9ce2d4dbd9ebe1dce5dedbded5d9d6d9dee0e0e0e2e4dcdbdde2e1dbd8d9 +d4d3d1d2d66464646464696d72717475787777757478706c71777a7a7d8c +8d8d8d8c8b89898286898b8f918c848a8c9093918e8c8c9d9694999e9c98 +979d9897999a989799999392969997979d989393959694969c9d9aacaa6a +656274787f888d8f91979a988c183e5e84895b6981959a9ca1a29c96a0a8 +a097979ea09391909296999b9a9c9d9995949a9c9c9d9b98989899979795 +938e8f929593928b8b8c92928f8f918e8f8f91918e8a847c7875726c6665 +6a6264636566696b6c707474736d6c70766d68615e5f6262625f5b57574c +39292215060b0a3f4d2d2730110e1514071f69a790528b9d75627f855540 +52539aedd73308000601000a0704030406070606080c500f05261a240511 +0d0b0b0805080e12110e0f10151a1e1c130c3e3f232e0f0d1f1d23292b2e +1919111525152f292539283206bca2fbe5c4ad14292635372c27462c2937 +29282a2a2a2c2e2b26282f2923252c281e1a1f1d14131f1f19121828186b +14201670081609060b05052b5c292420351d4efe70cff5ff54222c3a323d +353a423a3538383d353a40383535302f303b403836373130343f45403534 +3a35373f473f302c322c20222c1e2436a16c49022a3c0220180a1e86ac39 +191c16201751a8672c34461315539da7cfc808315e7357383438342b747e +4f3d372e332d3788462656482d57794606121d0c103355040a0b0926210b +0124190b030c081a150b0d16120e161a1b13121a18151d2c1e706f491904 +0c121d5c813e180920332256642d2a14c8e061fae1ff433d83793445443f +1f596b3d2e2b391981f5670e1a1e191b21190610314c2d5a4a616e5c2d91 +c9ada9a0afa6a5b2aba7a99da3a5a8adafafafb1b3ababacb2b1aba6a7a2 +9f9d9ea23c3c3c3a3b3f4246434345464645444349413b3f464647475453 +51514e4c4b4a464c4f51555750484e505454554f4d4d605b595e615f5b5a +5e59585a5b56585a5d59575b5e59595c55515052514e525757566f753e43 +476068747e86898a91918879032a496d73434f657879787a796f686e6e5e +514f59605d6061605e5a54515a5c5954565b5e5d615f5c5c5f5d5e5b5954 +5250565857575150525759565657525052535553504d464441413e383a3e +36373736383a3a3b424546464342484d433c3735373a3d3f3e3a3a3d3220 +110d0a000a0c4555322a2f0e0d181c163581b99f6298a9806b888d5d485a +5da4f7df390f050c07070e0c09080a0c0f0e0e101357160b2c20290a1411 +0f0f0a070a10110f0d0d11161d211e150e40432532110f211f252b2d301b +1a121525152f2c273d2f3c10c9b0fff4d3b91c2f2833352a28472d2a382a +292b2b2b2d2f2c282a302820222b281e1b23211b1a2829231c1d210d610b +1a146e09180b090f08082c5e2c29233b2458ff7edeffff5f2a313b323c34 +3a423b373a393e363b413a37373230303b4038363731303540464136353a +353740463f302d342e22252f21283aa573510b334509282113268eb44020 +231e282059af6a2f3648191e60adbae2dc193c66785c3d393b362d768252 +3f3932352b3587452555472c58784707141d0d123859090f100e2b250f04 +271d1008110f201b11131d19151d21221a19201e1b22302173734d1e0b11 +1a226186431c0d2337265c6d373825dbf16fffecff473f857d3749484323 +5d6f4133303e1e86fb6a0e161a15171d180712334f305d4c656f551c75a0 +766a5d706c6d7d746d675359636d727474747678706d7174736d696c6765 +646469969594939395999b989a9d9f9f9f9d9daaa6a4a7acadafb3b9babb +bbbbb9b8b6b9bcbfbfc2c3beb6c2c3c8cecbc3c1c5cac5c4cacfcdcacacc +c9cacdccc6c2c2c4c3c2c9ccc8c7c7bebdc0c4c5c5caccb5d9c68155777a +8e94989ea19f9da1a4ab9f4852615c484660696e7387a8c0cedec8beccd3 +cdcbd5cececdcdccc9c4c3d0d5d3ceced3d5d3d2d1d1cfcfcecfcecac7c6 +c6c7c8c8c7c3c0c2c6c7c4c4c7c5c5c4c4c4c0b9b5afaba9a6a39c9c9ea1 +9e9e9d9d9e9f9fa4a6a6a29c9a9c9f999596979a9b9a97978e837b69523f +363125271b4847271f1808201a2e334878a8885081926f637e89503e5b64 +aaefb715010510090a0f0b0a0c0d0f0f0e0f0d062c010114061103110e0f +10100f161b0c0d0f111114151526211b423e28371c1428272f363c422f17 +2e1c38473e592a1d181e00f218000e1ed9130a2e20110b0c2a212f3c1d0e +0f1211141716111010100b1017160a080d06091008121315050100520009 +0552030703081312132e511c151c2400b0c600ea136ee701140f150d0e1c +23160c0e0e13111c21150e110f0d101c1d100b0f0c0c10191d170d0c100c +0f191b160c0b111009060a120617d2039a745d7b1a00171e04182c1d2620 +18252730391318382b0c341a000000f20b0639583f190d100e1355561900 +02030701044d32232c1605464016000b0200175851161400226942573f4a +1a081928171a180f0f181712171a1c14101a1e1c2013105047261b0d0b0b +2158692d1c0e131e0b425d30201cb0c244e903b87d2c4636091f15160e46 +4826241a130a79ca410911141111161b1c071325377e7b6c5c3a106cd2e1 +ecdbd7dfd8dfd8d9ddd4d8d5d9dee0e0dfe0e1d6d4d6d9d9d5d4d6d7d5d3 +d4d76665656464666a6c696b6e7171716f6d746d6c6f7475777b82838485 +8583828085888b8b8e8f8a828e8f959b98908e92989392989d9b98989a97 +989b9a949090908c8e959a98979a919090959494979f91baa66135565b6f +79818a909295999c9e8f3844534e37354c53575a6b8aa1a8aa918a9ba69e +999d908e8c8e93979a999f9f9d98989d9f9d9c9b9a989897989a96959494 +95969695918e9094949191959393949696938f8b84807b787069676b6e6e +6e6d6d6e7070747676726b696b706d6a67666766635f6159544f432f201a +140a0e073940262422112211170f1852a49158879672637f884f3d5a63aa +efb81400030e07050a040302030404030203002b000011030c000c09090a +0a090d1508090b0d1013131526211c433f29381d1426252d363c4230182f +203c4b425d3430313514ff26021a2ae7241e473e312928443b4956372829 +2c2b2e31302b2a2c2e2b2e35322622251b1c1e161f201f171f1470121e15 +5e0d0f080b16171833561d19263608cde407ff2d85ff1c33323c3536444b +3c32343436343f4438313432333642433631353232363f433d333238363b +43453e343134322b25272e2230e911a47c658121001a1e021526161f160c +151a263618254b44295236060404ff1e2156755c362a2e2e3377793f282b +2c3331357b5e4d543d27645c2e131f1409225b5015130021683f543c4717 +0516251417150c0c15140f141719110d171b191f1615554c291e0e0c0c22 +57682c1b0d1422104964382924bbd155fc19d199486254263c32332a6264 +3f3d332a2190e1561c20201c1a1c1c1c071223367d7a6b5f441766bcbabb +a29ca4a1ada9a8aca0a4a3a8adafafaeafb0a5a3a5a8a8a4a3a5a4a2a0a1 +a43e3d3b3a3a3c3e403d3d4040403f3d3c46403d40454444484c4b4b4949 +4544444b4e515154554e465253565c59514d535b58575d605e5b5b5b5859 +5c5b5551535654555b5f5a57594e4d4e515151555e558173320c353f5a68 +737f86898a8e8f8e7f29374845302d43484746536e828485685860625654 +605d6062625c58504d5c5f5d585a5f615f605f615f5f5e5f5e5a56555556 +575958565355595b58585a565456585a5855514f4b4946413a3b3e413e3e +3c3c3d3c3c43454642403e4246403d3b3b3c3e3c3a3f3a38342c190b0504 +000a0840482e28231021141f1d2e6bb5a06593a17b6b848d5443606bb2f7 +bd1a0408130c0b100b0a0a0b0c0c0b0b0c0a3307071a0a1304120d0d0e0c +0b10150706080a0e11141526211e45412b3a1f16292830383e44321a3121 +3d4c435e3636363d1dff33122a3af42e254b3e302729453c4a5738292a2d +2c2f32312c2b2d2c282c33332723272022271f2829291b1706660919125e +0e120c101b1b1c36591f1a283a0ed5ef15ff3c95ff2536343b3536444b3d +333535383641463a3336343437434437323633333740443e343338353a42 +443e343236342d282b322635ef1cb089708d2b0b23280d1e301e271f161f +232f3d1e2b51492f5a42131515ff2f2c5e7b623a2e302d32787b402a2d30 +363132795d4b533a26645d2e1420160c2660561b1905276e465b434e1e0c +1d2c1b1e1c13131c1b161b1e2018141e2220251b1959502e23131111275d +6e3221131825134f6e453a39d1e667ff26d89d4963562a4036372e666844 +4238302796e759181b1c18171a1e1e0917283b82807164460f4e9583795d +5a6a6b7a736e6a575b646d7274747374756a686a6d6d69686a6b6967686b +989694929293959698999c9e9f9f9d9da6a6a6a9aaaaaeb5b5b7babcbdbc +b9b8b7bcbfc0c2c4c0b9c4c2c8d0cbbfbec8c6c1c1c8cccbc9c9c1c2c6cd +cdc7c2c3bfc0c4c9ccc7c4c2c2bfbdbdbdc1c9d3b0c9822b458d878c9297 +9da1a09ea0a3a6924b3d6b715c87777369636e80898bbdcdd1c8c3c9ccc9 +cfd0cfceccc9c5c4cdd2d0ccccd0d2d0cdcfd0cecbcacccdcacacccccac9 +c9cac6c3c3c6c7c5c6c9c6c6c6c6c6c3bdb9b7b2afaba69e9d9fa5a3a2a2 +a2a2a3a3a5a6a5a19c9a9c9e9a9a9fa2a4a19c979e93877b69523f342d2b +2a17443d241d1b150f1511364084a488567c8c6c6779704343616ab2ee8a +00000c1007080d090a0b0b0c0c0c0d0b1015020811060d10121010131513 +171d221f1c18161515152725233b3225361e13272830383f44330d281d20 +3e305637280d0d00ec4242535bea1a070f13231b1d23101a250f0e211513 +14191a15110e110d131c1c131013110a14071b0d15090500610008033405 +0809101a1e1f28352e021c30796ad9dfc1007e8b000d18110b13282d1a0c +0d0e0a0e1e23140a0f120d121f1f0f0b11110f121719130c0b0e0b121916 +110f1011101114030f10017e120037b162000f282533484456492e304339 +3a40382329153b8bc5a1bf94ee620a344f3c1e1516110f44410f010a0905 +00194a34210b060d3b22080a1304001a9852070008254f051b4985561101 +0e15151a13101a1d191a191e150e1b24222228335642233d2f21213b5e54 +243024171a3968461e2e3552c2f0c76fd16206571a0a230e122251402314 +12212b595e03171210161e1d150c100e0d1b4a493b3742285bc2d2dedade +dcd3dad6dae2d6d8d5d8dee1e0dfdeddd7d5d6dbdcd9d9dcd8d6d5d5d768 +66646263646667696a6d7071716f6d706d6d717272767d7e808386878683 +8283888b8c8e908c85918f959d988c8b95949191989c9b99999192969d9d +9792918b898d959895929295918f9190949fab8fac640d266f697079808a +919597999c9d8841346268527d69645851596a716d919fa69f9a9e9c9391 +8d8c8e93989b9a9c9c9a96969a9c9a979999979493959996989a9a989797 +989491919494929397949495989896938f8c87817d736b686c7273727272 +737474767675716b696b6f6e707072716c655f6861584f412e1f18100f11 +0338382525251e110f00161462a0915e82906f67786e41406069b1ee8b00 +000b0f06060b0405040402020202010a1200050e03080b0b0a0a0d0c0a0e +141c191612100f1111222321393124351c0e22232b333a42310b271c1f3f +315741402a2806ff5452636dfe31232d35473d393d2a343f29283b2f2d2e +33342f2b2a2f2d313a382f2a2b291f2718291b231c20187a101b113e0a0c +0a0f191d1e27362f0727439287f7fcdc1195a3072c3b38333b5055403233 +3430344449372d3235333845453531373735383d3f39323136353e434039 +373634323333222c2d1d951f013db766000f26222d403c4c3f2223332c30 +3f3f303c2e56a8dfb8d4a7fd7524526e5b3d34353331686737293332312e +4778604b332d2f5b3e222228181328a0550801092650041a4884550e000b +1210150e0b1518141514191009161f1d1d27325541223c2d1f1f39594f1f +2b1d121b3d6d4d26374261d3ffda85e7791e703729422d313f6e5d3f302e +3a447277182a211c202723160b0e0b08184746383a4f3359b2b3b2a8a9a9 +a2aba9acb2a5a7a3a7adb0afaeadaca6a4a5aaaba8a8aba5a3a2a2a4403e +3c3a393a3c3b3d3c3f3f40403e3d424040424341434a48484a4a4b4a4746 +494e5152545650495250565e574b4a565753535a5e5d5b5b5354585f5f59 +54565251555b5e58535254535154555b657762843e000753515a656e7981 +8385878c8e7c372b5d63507b665d504348555953767e7b695c5a5a575e60 +5f5e5c56514e595c5a56585c5e5c5b5d605e5b5a5c5d5a595b5b5b5a5a5b +595656595b595a5c57575a5c5d5b595557524f4b443c3c3f43434241413f +404042454541403e42454140424444423e3a46403a322816080200010a02 +3c3e2a28261d101106252b7ab1a06b8e9b786f7e7346476671b9f6900504 +10140b0b100a0b0b0b0a0a0a0a0a141b080c150a0f11120e0e0f0f0d0f15 +1c191612121112122626243c36293a211428293139404736102c21244335 +5b4344303110ff6262727bff39272f34453c3a3e2b35402a293c302e2f34 +35302c2b2d2a2f3839302b2d2d242e2032242c201b0e740a17113f0d0f0e +141e22232c3a310a2947978fffffed20a5af102f3d37333b505541333435 +3135454a392f3437343946463632383836393e403a333236343d423f3937 +3736343536253031219b280c49c3720b1b312d374b4755482c2d3d353945 +453642335db0ecc6e5b8ff86315a736040373734326868372b3536342e45 +765f49322c305a3f23242919142ba35a0d060e2b550a204e8a5b15051219 +161b14111b1e1a1b1a1f160f1c2523232c375a4627413224243e5f552531 +24181f40735531465374e7ffeb92f27f22743b2c4530344372614334323f +49777c1b281e1a1f26231a1013120f1f4e4f4141552f448e7d7163656a68 +757271746062646c7275747372716b696a6f706d6d706c6a69696b989693 +9293949595989a9d9fa09f9e9ea4a7a9acaaa8aeb7b4b7bcc0c1c0bebab4 +babec0c4c8c6c2cbc5c8cfc9bcc0cec4c1c2c9cccac8c8c5c5c9ceccc5c0 +c2c3c5c6c9cac6c2bfc0c2c5c8c1b8b4b5927326163e81757a8b91979d9d +9b9c9c9e934323606661967d7b756f7275706a87b7cfbfb6c6cdc3d2d3d2 +d2d0cbc8c7cbd0cfcccccfd0ceccd0d2cfcac9cccfc9cbcfcecbc9c9cbc8 +c4c3c5c5c3c5c9c2c3c3c3c4c1bbb7b6b2afaba79f9ea1a5a4a4a6a7aaac +ada5a5a4a29e9ea0a19ea0a5a7a8a49f999e968b7e6d58453a33352e184f +3f291e1d0f02122a36467fa2865c7d8c6d696b4840566565b3f265000c13 +0a01070c06090b0c090a0c0c090d02080b0705060b151416181812111431 +2a201612151b1d1f1e1f2d251f2d110b2024282d2f331e121c341d2c3033 +4c57525a20bf6fb1b78d5a0018151c10090d110a121b0e09141914121619 +16120f0e0a0f161a1512162605101029000e160b00680009071d0908090d +172025252217323e7d120000000200050c171820080b132427150b0e0e09 +0c1a1e11090f120a0d181a0f0e14130e1114140f0b0c0e091217100c1012 +0e130a1c1509110205120c0004080c1f3d5d4835143f45352e6d46282b40 +28485f01a0553277466400091a23180e1212090a26240d0c0e050015383b +1208000b1219120f111011100a1c160406170010070900020a1015150a11 +1a17131d221d1d1c231b131e26201937444d3a1c3f2b1843515a46264131 +1c473e4628141c4d51e72f1e3148ec384517142b12162849312114213f5c +5f3b18181917171b1c14070d19282a483f4141202240b2d4d9d9dbe0d5d8 +d5dbe4d8dad4d8dde1e1dfdcdad9d8dbe1e3e0dfe2d7d6d5d4d468666362 +63656666696b6e7071716f6e6e6e70737270767f7c8085898a8a87868086 +8a8c9094928e9892959c96898d9d949192999c9a98989594989d9b948f8f +8e8e8f9294928e8d92959a9f9b93929574570a0022655b61757d878e9295 +9697988f3e205c645f9279756d66656760556893ac9d939e9f8f94918e90 +959a9e9d9a9a999696999a98969a9b989392959b95999d9c999797999692 +919392909296909192959694918c8b87817d746c696e72747477787b7d7e +767674726e6d6f7272747677756f68646a645d534634251c14181605453d +2e282919060d1a1b20629e8e62818f6d686a463e536264b2f265010d140b +02080b05070907040305050408000508040301060f0e10120f09080b2821 +160d090c121719191a28201d280c04191a2126282c190d1a321b2a2f3153 +7073783dd785c4caa0720837374338302b2b242c3528232e332e2c303330 +2c2b2c2a2d3436312e303f1d27243d12212b25197e0b1913250d07070b12 +1b20202018374c902b0b19131c161b243237432f333b4c4f3b3134342f32 +4044342c323530333e4035343a3934373a3a35313236333e413a34383834 +362c3b34262e1e1c1c1200080a0c1d3a57402b0a33392821603b232b4737 +5c781cbd6f498c597311233841373034342d2e4d4c37353a30284164673c +30202f3439302b2b2829251c271e0c0b1c01130a0a0001090d1212070a13 +100c161b1616151c140c171f1912323f4835173a24113c4a503c1c372715 +453f492f1c285d64f94433475cff4b5934364a343547684e3e313e5b787b +54302a282321232115060a142227453c3e442e3043a8bab6afacb3a9aeaa +b1b8abaaa4a7acb0b0aeaba9a8a7aab0b2afaeb1a4a3a2a1a1403e3b3a3b +3b3c3c3f3f42424340413e404143464341454c494a4d50514e4e4c464c50 +52565a56525953565d55484c5b5453545b5e5c5a5a57595d626059555658 +56575958565250565a636b6a66656f5a4100000c4f444b5e6570777c7d80 +848c86381b5b6560937a756a5f5c5a5144567d8c705d63635561615f5e5b +585451575a5956585b5c5a5a5e625f5a595c5f595a5e5d5c5a5a5c5b5756 +585957595d555457595b59575556524f4b453d3d3f434343434447494a42 +424342404246464343484748433f3c45413c33291a0c0400080a00444032 +2a29180711242a3778af9b6e8c98756e704b435a696cbafa6d0611180f06 +0c100a0c0e0d0a0a0c0c0b0f060c0f0b08070a13121214120c090c292217 +100c0f151b1d1d1e2e26222e120b2022282d2f331f131f37202f34365975 +788045e392d3d9af7e113c3942372d2b2c252d3629242f342f2d3134312d +2c2a272b3237322f3143212d2b4419283022147b09181327100c0c101821 +2626251c3a4f94301324212d2629303b3a452e333b4c4f3c323535303341 +45362e343731343f4136353b3a35383b3b36323336323d40393438393538 +2e3e372a322222261e0c1316162845614b36153d43322b69432a334f3c63 +7d25c57c579d6a88223042493c3236352d2e4c4c36373d362b4263663b2f +1f2f3538302c2c2829261e29210f0f2005180f0f05070f1419190e111a17 +131d221d1d1c231b131e26201938454e3b1d402b1843515844243f2f1c48 +414e3727366d75ff55445567ff526038384d36384a6b524235425f7c7f59 +342a2523222524190c111b2c304e45494d3730328587766764706c747377 +7b6868666c71757573706e6d6c6f75777473766b6a696868979492939698 +9897949597999a9997979ea1a5a8a4a2a8b2adb0b5b9bcbbb9b8b5bbc0c1 +c4c8c8c5d3cbc9cdc8bfc6d5c6c4c6cbccc8c6c6d2d0cfcdc6bdb9bdc7c8 +c6c5c7c9c7c4cbbebbc3c7ae826282492923406172878489919699979692 +89873a3563433e636d6d6863646a6e71777985a1bdcaccccd3d4d3d1cfcc +c8c8cfd4d2ceced2d4d2d0d4d6d3cdcbced1c8cbcecdc9c7c7c9c9c5c4c5 +c5c3c4c8bfbfbfbfc0bdb7b4b3afaeaba9a2a3a5acaaabadb0b3b5b6aaaa +a8a5a3a2a3a3a2a3a7a7a7a3a19f97938d8274645347484d3b1d61472d16 +221514012711426ea1825f7d8d6964593b51676065bcfb4906171708050c +0d06070a0905060a0b080b041710050e0b061213181b180f0d0e1e19130d +0e151d221f191e29232428090a21252a2b262611040b262a24250b2f1507 +0000ea9fb0cfd87b11040d0a00150d131310171c16171b140f1113131312 +120e0c1012121113381622213a11232d0c0061000809150e050509122331 +342e2a10502618101a00001515180d1208170e0e16160a0a100d0e091116 +0c090e0e0c080f130e0f130d0c0f110f0d0c0e0f0811130b090e110d1306 +0c1b10061a0c151c1d1d2012070c3c2530284b4c2a071b2c2c22392e3a2f +00d34019d200000b0a0f110a080e10090b1211080500020b353a15000f07 +120a040c1712091518091f140800180505000b0c131f1205060c17221f1c +23221a1b232b251f2525180e444a48422c3d26184444423a2c412513463f +4e4634142100cdc1d4c9e6ee241f19142313121a2b1c0813140b25351813 +142223130c1218140f122528514b4c3727272387cfe1ded3e4d7d9d5dae1 +d4d5d3d8dce0e2e0dcd9d5d5dae2e3dfddded8d9d8d6d467646263666868 +686566686a6b6a6867696b6f726e6c737d787b80858887858481898e8f92 +969693a199979b978e95a49694969b9c989595a19f9e9c958c888a92918f +8e919393929c9392a0a7916949692f100a284a5c717078818b8f92909089 +883a3764464166706e69636367696864636f88a0a9a19795929090949b9e +9e9e9e9c98989c9e9c9a9e9f9c9694979d94999c9b979595979793919292 +9091958d8d8e9191908c898884807d766f6f72797a7b7e818486877b7b78 +75737272747678797774706c6a63625d554b3f3128282e210c5947352430 +211a001a0022559d88658190696356364c645d64bbfb49091a1a0b080f0e +0706090804030708050802150e030c06010d0f121512090405130e070203 +0a1218151217221c1f210200171920211f1f0a000621251f220636312c1e +1dffb9c7e6ef962e2533341e3d2b2d2d2a31363031352e292b2d2d2d2e30 +2c2a2e30302f2f54323e3d562d3c462615770818141a110403020b19272a +292b185e39312d3607162c2b3028312b3e34343c3c30303633342f373c32 +2f3434322e3539343539333235373533323437323b3d353136373336292e +3d2f2537231f201f2020120509361d261e3f3f1d000f252925423d4e4814 +f05a30e7060e1e2630322b2b343731333c3b34312d2f3761643f1f372d36 +2e262b352e252f321e2e221609210e0c07100f131f110405091018151219 +18101119211b151b1b0e073d43413b25361c0e3a3a372f21361a08403d4f +4b3e253405e4dbebdff8fe323136374536343c4d3b273233284252342c29 +353321161a1b140e0f22254e494a3b393a2b82bdc5b9acbcaeb1acb1b9aa +a9a5a7abafb1afaba8a4a4a9b1b2aeacada5a5a4a2a0413e3c3b3e40403e +3b3a3c3e3f3c3c393d3f4144403d414944454a4c4f4d4c4a474e5354575b +5956625a585c554c53625654565b5e5a5a5a666564625d5450535c595755 +55575757645e647681714b35622e0b031c3a475a575e676f7475767b7f83 +3836684b486d77736d65616263615e585a6976766c6162605c5a58585252 +5b5e5c585a5e605e5e6266635d5b5e61585a5f5e5a585a5c5c5858595957 +5a5c5252545659575552534f4e4b474040434a494a4a4d4e505145474745 +4544474845454846454140403b3a39342d22150c0f1a140456473725301f +1a02240a396bae96718c9971695d3c526b646cc3ff510e1f1f100d14130c +0c0f0e0a0a0e0f0c0f071a1308110c05111014171209050617120b080910 +18201d191e2a2426290a092023292a272712050d282c26290d3c35322726 +ffc6d7f4fda1362a34321b3c2b2e2e2b32373132362f2a2c2e2e2e2f2e2a +282c30302f30573542415a31414a2512750818161e1609080912212f322f +2f1b613f38354213253c393c31342d3d35353d3d313137343530383d3330 +3535332f363a35363a343336383634333537313a3c3431363834382b303f +32283b29282b2b292a1c101240282f2749492705192d322c4942554d1df8 +673ef817232f323939302d353630323a3a333230343a62633e1f372e362e +272d352f2630311f3125190d2613120d16161b27190c0d1017201d1a2120 +18192129231d2323160e444a48422c3d241642423f37293e221044405451 +472f4213f4eafbedffff3f3b3a394738363e4f3e2a35362c465638302a33 +3322181d201c16182d3059545747474020648b847261766c7674797e6e6c +696c70747674706d69696e76777371726c6c6b696795929193979a9a9893 +94969797959392989a9ea19f9ca2aaa9acb0b4b7b7b6b5b9c0c4c3c3c5c5 +c3d1cbc5c3c1c0c5cdc5c4c7ccccc7c4c5cccac8c6bfb8b8bdc0c2bebcc1 +c7c9c7abc3d1b4774b4e685a1f242022395f6a7a7f888f91908d88826828 +578260505a656769666463676a776e687ca3c5d1cdd1d2d0cfcdc9c7c7cf +d3d0cbcbd0d3d2cfd1d1cecac8c9cac9c9cac9c7c6c6c6c9c6c5c7c6c3c3 +c6bebebebdbebbb4b0b1adadadaca7a9acafadaeb0b2b4b6b7b5b3afaba7 +a5a4a3a7a6a7a5a5a3a5a69997938a817b6e656c6d4b236d4529080d2735 +14102d2e859f7e647e8c5c5b4a435f685167bffc380216170b0f130c0606 +0b090103090a0512162318101b180b0c0d1318160f0c1017171818181a1b +1c1e151d27222622080821262b2a2625110d22183b2f2822291f111500c5 +000037195f210d0d0b08001512150a0e1f1b1b1a120d0e0f1013161b150f +0e1011100d0e040d00150a160e1302600106000b070a07070f202c32311d +1e2e121411abd4ba120089000d1b17140f110e080f171111070b100c0b10 +0c110a0c100c0e1007090d0f0c0b0d0f0d090c0d0a0a0c0f0e07150b0015 +0f1613000e0b00160a0e0f18133025171a180915302810100e1b0f0463bf +97e3b5ef870b17201b100d11120c08080400041b33281a04001e06080c0b +0a1211090b131314091c0b00091507080f000703090e0f2428242325190e +12262d2a27291d0e0b2427262b231c0b062f2c2e37323a1207282b2b1716 +2039008822005e00458800160d1713100f15101b1b1209131005161b1f1b +15191a0c0013192f44564a371c1c261e60c5dbdad4e4d7d9d3d6ddd0d1d4 +d8dbdfe2e2dedbd7d7dbe1e2dddbdcdddddcdad665626163676a6a686465 +6768686664616364686b69666c7574777b7f82828181868e929191939391 +9f9993918f8f949c9594979c9c9793949b9997948d86868b8b8b87858990 +95967d9aae955f393e5747090d0a0d254c5869707a848a8a8985836a2c5b +876757626d70706d6967686a71645e6d8ea8a89b95908d8e93989d9d9e9d +9a95959a9d9c999b9a979391929695979897959494949794929493909093 +8b8b8d8f8f8e898586827f7f797475797d7e7f81838587888684807b7775 +7374797b7977737171716666635e59544b42494d3112684935181d353d13 +061c15729d8268818c5b58473e5a634e66befc3b071e1f13171b110b090e +0c04040a0b06111421160e19130608090d12100906070c0c0d0d0f101112 +170e18221d211c0300171c21221f1f0c071d15382c251f303a363709e112 +154e30793f3033353424332c2f2428393535342c2728292a2d3238332d2c +2e2f2e2d2d232c1f3429352d2f1c7815180e130a0b0502081622282c1e27 +3d272f2ec7eed12814a11b2c3f3e3a3537342e353d37372d313832333632 +373032363234362d2f3335323133353531363734323435342a382d22342e +352c0a1512001a0d0e0e150d2b1e0d0e0c000e2d28141b1f322a1f80d9ae +f8c8fe9a2738413e3635393c363534322b31486051422c28442c2c302d2c +323127293130291b2e1d0d1720120f14010a03090e0e1f211d1c1e12070b +1f262320221607041f221f241c1501002522232c272f07001f262a1c2332 +4f0fa43e06730352910e33333a36333238323d3d3428322f223435352f27 +2725130016192f44564a37242d3a2760b8c6bcb0beb0b1aaadb4a7a7a6a7 +aaaeb1b1adaaa6a6aab0b1acaaaba9a9a8a6a23f3c3b3d3f4242403a3b3d +3c3c3a383639383c3d3b383d43424347494c4c4b484d5357565658585462 +5a5452504d525a5554575c5e59585a61615f5f5a53535857554f4c50575c +5e4b6c887647252f504d15150c081a3b404f535d686e7070747d692d5e8d +6f616d787978736d6a6a6c756554586f807a6a635e5856545351515b5d5a +55575c5f5e5d5f615e5a58595c59585b5a585759595c59595b5a57595c52 +5253545755524e514d4d4d4a45464a4c4a4b4b4d4f5152504e4c4a474748 +4648484745424042453b3d3d3936352d262d362008624835181c353f1811 +2c2b86ab8e738a94615f4e44606a556ec6ff420d2122161a1e150f0e1311 +09090f100b1619261b131e170a090a0f141009060a101213131418191a1e +161f292428260a0920272a2d27291311241e3f352c2838413c4012ed1f25 +5e3e86493636343323332d3025293a3636352d28292a2b2e3336312b2a2e +2f2e2c2f252f22372c382f301d7a161a0f160f0f0a080f1e2a3033232c42 +2c3636d2fbe13621ab222f3f3d3b3638352f363e38382e32383333373338 +3133373335372e303436333234363531353633323436352c3a2f24373138 +31121f1a09231616161e173226161816081636301d212638312888e6bcff +d9ffab334148443935393a343233322e344d6353422c28452d2c302e2d31 +3027292f2e2a1d301f101a2416151a08110b1116162628242325190e1226 +2d2a27291d0e0b2528262b231c09042d2a2b342f370f04242a2f222b3c5c +1cb04c15841362a21b39343c3835343a343f3f362b35322636343330292a +2919091f233950625643313f4522468b877464756b7472777e716d6b6c6f +737676726f6b6b6f7576716f7070706f6d6995929092989a999698999a9a +999693949596999c9c9a9da4a7a8acafb1b3b3b3b9bfc3c2c0c2c3c2c7c5 +bfb9b9bfc1bdc1bfc3c9c9c4c2c3bebdbdbbb4adaeb6b0b1b0acb1babcb8 +c3a47e65585151554f19211d2d4363616d727a838786817b735f4b72737a +5c57565d697174716f71717b776b7aa3c0c7d0d1d1cfcdcac8c8cfd2cdc7 +c7cdd2d2d1d0cdcac8c6c5c3ccc9c7c6c6c6c5c4c4c1c1c4c3bfbdc0bcbc +bbbabab7b0acafacadadada9abafadacadb0b3b6b9bbbcb9b4b0adaba9a7 +a8a7a9a6a6a5a8aaa09f9a928f8f8c84878958226e3c2200bb88958075a4 +146f9c79678083474e444a66644b69b4fb4d0014150c13130c0e0c110d03 +0107070208120f0a0a0c0e0409080c100f0c0d131e1f20201e1b18161b0d +1b251c1e1a0c041d1e2223212412001623291817231c23021900b2091608 +007d2d2d040f1b000a03191c1c1f0a0515110f10100f14191a15100f1113 +110b1111130b15181912130765150c000e060b06050f1a20262a181d1b25 +1a40ea0f73f05ce82c200814141114110a1217100f070b110e0d100c120c +10110b0d120c090e0f0b090c0d080b090a0d0e0b0d100d14381111130610 +3d2f171c6117050a261d22221a26120c1e251b22140e1a1f120473a198a6 +e65e030c15120a050406090404050e222d2a08040f0a1904020d100f0f0d +0b0a0d1318020b16131200000000001b1c13090a292723282712050f2629 +282a2814070e26292b2c3018110c282b2d3530320b092f191b29250c0f00 +78e57cee6d98eb0d120d10120f1010100f0401181f0c0f211b0f0d1c251c +13120008134e30290b1600161d3fbfd8d3cbe3d8dbd3d5dcd1d5d6d8dade +e2e3e1dededbdbdededbdbdededfdedad664615f61676968656768696968 +656261606063666664676e7173777a7c7e7e7e868c908f8d90919095938d +87878d8f8b9192969c9b9694958f8e8e8c847d7e847b7c79757a83898898 +7e5f4c4646484b41080f0c1b3252515d646f797f7f7b7774604f75778166 +616067737b7d7a7675757d77676e8c9e9b96928e8e93989c9e9e9c979191 +979c9c9b9a9693918f8e8f9897959494949392918e8e91908c8a8d89898a +8b8b8a858184817f7f7a76777c7b7d7e8184878a8c8d8a85807d7b79797a +7c7b78747374766d6e6a656467656063673f156b42300fcd969d816f9803 +629a7b698082444b3f43615f4868b3fb50031e1f161d1d14161419150b09 +0f0f0709120f0a0a0c0c020706080c0b08090d1818191919161311180a1a +241b1d180b00171b1f201e221100152329181723253e243908cc202d1d11 +94494e2737451f281d33363639241f2f2b292a2a292e3537332e2d313331 +2d3333352d383b3f353225812d210d1c101007040d15191f271b282a3935 +5dff2a89ff6ffe453d2c3b3a373a3730383f38372f333b36373834383236 +37313338322f3435312f323330333334373633333630375b343335282c4e +3c24276a1e0c0f291d211f17200c061b251e2b2121313a2d218db8adb9f5 +711f2d3837322f3034373232353e525d57312a35303f2a28333433312f2d +2c2f33341a232b262404090306011f1f160c0a282622272611040e252827 +292713060d232628292d150c072124262e2628010026141a3034202a1698 +ff98ff7ea4f21b31353638353636333227243a412e2e403b2d29363a2e20 +1c090f1a54362f11220e272741b6c5b8aabdb0b2a9aab0a5a7a8a7a9adb1 +b2b0adadaaaaadadaaaaadaaabaaa6a23c3937393f41403d3f4041403f3c +39363634373a3a36393f42414546484a4a484d535756545556555a56504a +4a4e504c5151555b5d5a595a57585a58534c4e534946433d424d54576d59 +42383a424953521a1d121928423a4449535e6a6c6b6c6f62527a808b706d +6c737d8586817e7e8189795e586d786e685f5954535351545b5c57515359 +5e5e5f5e5d5a585655555c5a585759595857585555585955535652525253 +5553504c4f4c4d4d4b47484d4a494a4b4e4f52545554514f4d4b4b484847 +4744414044463e43423e41444440434c2905643e300fcd97a08679a61674 +a887758a8a4b52454a67664f70bbff57092021181f1f1719171c180e0c12 +120b0d14110c0c0e0f050a09090d0c090a0f1c1f20201f1d1a181f13222c +232523130a2126282b272d19091d2d31221f2d2e452d4413db303d2e22a2 +54552b37441e281e3437373a2520302c2a2b2b2a2f3635312c2b3032302c +3434372f3a3d40373427842f220f1d12130b09121c21272e222e2f403c65 +ff3597ff7dff4c412c3a3b383b3831393f38372f333a3636383439333738 +323439333035363230333430333233363633343732395d3635372a305542 +2a2d6f24121530252928202a1610242f27342928374136299ac6becaff82 +2b363e3d342e2f32353032354054615c352d3833402b2934343332302c2b +2e32351c252e2a28090e090d0928281f15122e2c282d2c170a142b2e2d2f +2d190c132a2d2f30341c130e292c2e362f310a072b181f3639273320a3ff +a6ff8eb4ff2836353739363737353429263c433031423a2b2a373d322625 +12192460423b1d322539282c8d8b715d746a726f757f74736d6c6e727677 +7572726f6f72726f6f727071706c6895928f919699969398999999979491 +919595979c9c9b9da2a2a3a5a8aaacadacb4bbc0bfbfc2c4c4c3c6c0b7ba +c4c1b5bbbcc1c7c8c3c2c4c1bfbdb7ab9e9ba1a2a4a19da0a8a8a2988469 +534647586c4417201e343b4f5962666f777c7b7670436ba098547c625f5f +5e63696f6f6f707165646e737d9fc9cfd1d0cfcfcdcbcbd4d5d0c9c9d0d5 +d6d9d6d2cfceccc9c5cec9c5c4c6c7c6c4bebcbcbfbeb9b7b8b9b9b8b7b6 +b2aba7adaaabababa7aaadadadb0b4b9bfc3c5bcbab6b3b1b1afaea7a7aa +a9a6a7aaaba3a19a909197989596965e2068321b00e8000a0098da35809a +786b7f7a3947444b6d6b536fa8fe72001413080e0d091614191408040908 +02051100030a040a070b09070807060d121614131211121415190a1d2417 +161612041a191c1c1c2312000c63351a241d201b0b140de79ec7c4aeec3b +380911001a280a131411160d1a111012131210141a120f0e0f1317120c12 +07040d0e0703090300662414002017020002131c1f26322f1f42220d00bf +360121a4e801091e0e0a0c1210070c10070c060e16100e100c0c0c13150c +0f17160a0f100a090b0a050d070810110b0c122a00705a13030e4ceee390 +6bbb34000811130e16182000061b24182a1216170f040382b0d1eaf2730d +0808090e0e0b050a020008233d240008061600111a1205091714070f130c +0207130e0e0f0b30e5f2c86f673602001a26201e28270e01102323232825 +0e0413242a2c222c0c0c052d34322d2024050e1b252417101e2203005b47 +564f4de6000e0e0e0e0d13110e12170c0f12161e040d0613201207337279 +4a013500191b64765b250ba0d2d9d5e5dce0dadae0d6dad7d8d9dde2e4e3 +e0e1dcd8d8d7d6d8dedcddddd9d364615e6065686562676868686663605d +605e61666665676c6c6d6f727477787981888d8c8c8f919190948e858892 +8f858d8f93999a95949592908d877b6e6b6e6e6f6c686b74787570625041 +3b42566a380a120f262d424d535a646f75756f6b426ba19b58836c69696a +6f75797978787c706c6f6c6c829f9a959191959b9f9fa19f9a93939a9fa0 +a3a09b98979592919a979392949594928b89898c8b868485868686888785 +807c827f7d7d7874767b7b7e81858a9195978d8b878481817f7e797c7c7a +7775767971716b63656c706d6e7346156a3d2e0efa06120095d22a779878 +6b7e7734423d446666506ca7fe75051f1e13191814211f241f130f14130c +0a1201040b040a070b0705060504081014131211121314151c0d20281b1a +1a16041a1b1f1e1f25160010673c212b242d36293027feb3dad7c1ff5355 +2a341e3e46242d2e2b3027342b2a2c2d2c2a2e362f2d2c2d33373430362b +2733342f2b31262285422e1834270e0507141b1c2331362c53362810db51 +1734b8fc1a264235303238362d32382f343038403a383a363432393b3235 +3d3c303536302f31302b3531323a393332384d1c937d3625306bfff6a37e +cd430b161a1c121b1b2300061e281f3420292e2a211f9cc7e6fdff86292a +2a30373a39363b332f38536d531c2f2c3c253740382b303e382e333a3026 +27312a2a292345f8ffd57a703d09001e2b25232d2c1306152828282d2a13 +0918272d2f252f0f0c062c33312c1d21020b1520252022353f241d7b636d +6058ed032d36363633393734353a2f3234384028342d3540302148838859 +0e4203262771866a2e0d98c1c0b5bdb1b3a9abb0a7aca8a7a8acb1b3b2af +b0aba7a7a6a5a7aca8a9a9a59f3c3936383d403d3a3f4040403d3a373536 +35353a3a393b3e3e3e4043454546444a515655555658585759534a4d5552 +474f4e555b5e5a595d5c5c5c574b403d3f3e3b38343742484b4c463c3539 +4861784c1c2116252431373c424e5c65696767406da5a0618d767375767b +81838381858e827771625864796e635b54555656565f5f5a53555c616267 +64625f5e5c59575e5a5655595a595752505053544f4d4e4f4f5152514e4b +474d4a4b4b4945474a48484b4d52565a5c555351505051514e4747484643 +4244464043413a40494d4a4b552e035f372c0dfa071505a0e13b88a58275 +867e3a48444b6d6d5775afff7e0a2120151b1a1623212621151116150e0d +1403060d060c090d0a080708070c131918181717181c1d23142931242325 +1f102427282a28311f0b1972442b332e363f333c34ffc4ebe8d2ff5f5d2f +361f3e46252e2f2c3128352c2b2d2e2d2b2f372d2b2a2b3236332e362b29 +34352f2b31282488442f1833270e070a1921252c393e345a3d2f18e65c24 +42c3ff1f2a4234313339372e33382f342f373f3937393534333a3c33363e +3d313637313032312c35303139393333394f1e957f3827326dfffaa782cf +460e191f211b21242a09102733293d29303631292aa9d5f7ffff97353433 +353b3b373338302f3855715921342f3f283841392c2f3d382d31372e2426 +312b2b2a2548fcffdb8077451109273129293132170c192e2c2e3130170f +1c2e32362a3614140b3439393226280b1219242a25263b452b2686717d70 +6aff1032363636343a3835373c3134363a4228332a343f30224d8a8f6017 +4b0c2f3381a07f3300748b7e6c756c726f7780797b706c6d717678777475 +706c6c6b6a6c716e6f6f6b6596928e8e939799989c9a96939598938c9397 +999695989a99999d9f9d9a9ba0a5abb3bababbbebfbebeb5aeb1bcc3c1bc +b9b5b8c2c7c0b7b4bab5afa8a09a9ca49ca293a3a79aa397775050395258 +52565413121f1a3245456364615a5f6a6d6490bb9e94bd91517064756455 +6f7e7470676b666774727fa7cdcfc3cbdfd6c8d7d5d1ced0d1cfd0d3d7d5 +d1d0cfceccc9c8c5c3c3c4c5c4c2c1c5c6c2bab5b7bab0b3b7b9bab7b2b0 +adacadabacabaaa9a9aab0b7bcbfc1c2cacacfcbbdbab7aba7a6a7a6a5a3 +a4a3a19f9f9f9d9b9a9998954f2f69341013e418c377b5376f749c677b7e +55474349616573544da9e3a5000f120c151009110b2419101211150d0319 +00030c020a0e000110030709090e0b05000815050d070a031d0002001522 +101210050b070f3e2c0400070007081e22151c0086321e25083f00560306 +070b190f0b14191513181a0e1016100f15130f10141512110e0e15042633 +09010f0004044e1006040d26140000181c1a142f232a26182100e9c8eaf1 +caef1915160b111413111315100a080e09171f0700161414120f0e0d0e0f +1008060b0e0b090c19030b0e0d120e141409040b100c0300000000000205 +0000060c0a09141c000418210d15100e1e1b0e079b000000004f6b181110 +060a000604000c343915040e0b0b0a0b0c0e0e0d0c0300050e0d08050b09 +090a0b0700001b0c00051f07001a2c091c0f200b00191a13271f28110607 +1a192420240800151225202a2f0d0606122f230b251c0c13001209000001 +e75e060a110e0a0b0f100d15171218231f0f1112090b0c1343ea67b535f1 +3c509ceb69b8e70d76d4dcd1d8e0e1e0e0e4e2dbe4e4e3e3e4e4e3e3dee8 +d9cbd9dfd7d9e1e1dfdcd965615d5d626668676b696562646762585e6264 +616063656464696b6966676c7177818888898d8e8d8d847d808b92908b8b +878a94999188858b857f7870696b71686c5f71746b787155353c2b4b5855 +574d0806140f25393a565955505661645e8cb79c93c09658796c7f6e5f77 +867b7a767b7370746869849d97878fa5a199a8a29b989a9b999a9da19f9a +9998979595949391919293918f8e92938f878284877d80858a8b89878582 +817f7d7a797677777b81888d9193949c9ba09c8d8a877b79787877767472 +716f6f7070706f6e6e6d7237276d432428f826cb78b231686d9a657a7b50 +403c40585e6e514aa8e3a8021d201a231e171f1932271e201f23180b1d04 +0710030b0f00000f030608070d0e0a010f1c0c1610130e27070c05222f18 +1b180e1311194836110b14031416313a30340c99432d321850046c1e2529 +2d3529252e332f2d3234282a302a292f2f2c2e323332313032392b4c5b31 +2b39222c2a713226222a3f280b0621231e16332c38392f3c1dffe0feffdc +ff32323a3234373937393b3832323833434b332c423c3a38353433343536 +2e2c3134312f32412b3336353a363c3a2f2a31362f26220917100b1c1d10 +11181e17161e27080d1f291723222236362a23b50f04100262873a33372f +362937362a3e66694531393230303134363635342b262d35352f2c2f2b28 +2929231810301d0512291102233714271a2b160324251e322a331c111225 +242f2b2d11021e192c273133120a09112e2816383529341433270f070ef0 +6e2734393632333536333b3a353b4642363e413334333561ff7ec947ff4e +62aefd77c2ee0d70c4c2aeadafaea9abb0afabb3b3b2b2b3b3b2b2adb7a8 +9aa8aea6a7adaba9a6a33c383434393d3f3e42403d3a3c3f3a3034383a37 +36393b38383a3c3a37383d41454c535354555655554a4346515755504f49 +4e585e59504f57544f4a423e4044393d2f40453f4e4d392031285264666b +5d1610180b1c292643474746516269628db89f98c59c6082778978698291 +85868b928479725e546675685153655d5362605b585a5d5b5c5f65636160 +5f5e5c5b5a5856565758585655595c58524d4f52484b5256575552504f4e +4d4b4948474644454b505556585861636a685c59574b47444241403e3d3e +3e3f44464748494b4a521d125f3c2229f929ce7dbd3f787da77082825747 +43455d65755853b0edb10720231d26211a221c352a212322261a0d20070a +13070f13040514050b0d0c13130e071522121d171a143010150e2b372324 +23171e1a23514019141c0c1c1f3844394019a85340452860127725282b2e +362a262f34302e3335292b312b2a30302a2c303131302f30392a4d5b312a +38212e2d73332520263c260a07262927223e354140374525ffeaffffe8ff +37363a3136393a383a3c3832313732424a322b413c3b393635343536372f +2d3235323033412b3336353a363c3b302b32373128230b17110c1d1f1314 +1c221f1c272d11162934212c2c2b403f352ec21d1521157393443c3c3337 +273433273d676d49373f3736333436383635342b252c34342e2b2f2c2a2b +2b261c1435240c1a321a0b2a3d182d1e311a09282b22382e392017162b28 +352f3416092321322f373c18131016332c1a3c3a2f3b1d3c321d171fff7b +2c33393632333637343c3c373d4844353b3b2f30323663ff84d051ff586c +b8ff92dbf6035093876a686c6f707981847b7b78777778787777727c6d5f +6d736b6c716f6d6a67959390909396999a9a9996939596908a9297989594 +979997989a9c9a96969a9f9fa7acababafb0afb1adaaa9acafb0aebeb9b8 +bcbbb3adaca7a7a49e99999d9f9aa89a9a9f9c96735a4f493f4c644d503d +0a1623141f333c5156574d49567388ced68dafaf53585e6b6d6b6366767b +706f6f65636e6a6e86b6c5c4c8d5d2cad5d3cfcccecfcdcdd0d6d3d0cecd +cdcbc7cac8c6c6c6c4c0bdbdbcbbbab9b8b5b3b1b3b5b5b5b1acaaabaaac +abadadadacabacb2b8bec1c3c4cdcdd3cfc1bdb9adacaaa8a5a3a1a2a2a0 +9f9e9e9e9c9c9b9b8f4326602e1519f10d6b84c50131879565726c444046 +4c65676c54479bd6d40016110d0d0704090b2113070b09110a1325080b0c +0200001113000012000109007d7d27002a350e1733221b35510f18033005 +1640542a05232d714b443e2b0f121e111739a4f5f1f1b7003d080e0b0a13 +0d0d1618110f13110a11191412171513141412110e0f110416474a0e000b +110f0c50170e0c152b081b1600000c0000000c29160301eb05000200ea4b +001b15101312111418150f0b170502010a0e0f0f0e0d0c0d0d0d0c110b09 +0e110f0e110504120f0c0d0511170f0b1115110c0c0c150e09141004080a +03031d170c1c000b07230c111817112100ede7e9f0e8d14205060e080e1a +0000283919020d13080b0d0a040812130d2d1e0f0b0c0d0e100d0b0d0f13 +130e09022020161a0a00070013141b0f101106111e04031608091f100f10 +02172807021a12120019200108200d151f0e0c130b1e5cc9eaefd7e87a0d +0d100e0e10100d0c0f110f141b170a0a0603180f0208e8004b10d5c67ace +be4100f11e55a2dbd6d9dfe2e1e4e9e4dce4e3e2e1e2e2e1e1d9e1dad3dc +e3dfdae1e1dedcda64625f5f626568696968656264655f565d6263605f62 +6462636567656161656b6d757a79797d7e7d7f7b78777b7e7f80908b8a8e +8c847e7d7777746e68686c6e6574676b72727254413c3c364a6552533903 +0d1b0b152730454c4c43404f6b80c8d088adb0565d657276746c6e7d827a +7e81766f73665e6a8e948c8d9e9d99a4a09996989997979aa09d99979696 +94939696949494928d8a8a898887868582807d7f83868683817f807f7e7d +7b7b797a797d838a909395969f9fa4a0928d897d7e7c797674727070706f +6f6f6f6f6f6f6f6b2e1e683f2e31ff1b7085c2002d8592626f673d373d43 +5c5e654f4499d6d808241f1b1b1613181a3022191a1b20181d2d10131107 +0201141600021300010c06888a340337441d2642332c4662222b113e1324 +4e623b16343e845e57513f262b36252949b1fffcfcc40c51212a2a2a2f27 +2730322b292d2b242b332e2c313131323232313033352b3d6f723822373b +3734763e322f354a23342a0b04160101041d3b2d1e1eff1d051404fd641a +3f3c333638373a3e3d393543312e2d383c3b373433323333333237312f34 +373534372d2c3a3734352d393d3531373b37322f3039302b34302224231a +17302a1d2d0a1814311d252f2f2c3d10fffefcfff9e45e252835313b4a2e +2e5c6b4b323a40333234302c303a3b355546373334353638343231333532 +2c251b3835292b1909160e25252d2022221822301515271a1a3121222114 +283a1611291f1f09262d0b1125121e2e2325322c3f7de7ffffe7f58c2e37 +38363638363332353432373e3a323b393447392a2aff106429ecdd91e5d1 +4d00f51f4f93c2b2acaca8a6abb1afa9b3b2b1b0b1b1b0b0a8b0a9a2abb2 +aea8adaba8a6a439373434373a3f40403f3c3a3c3d372e3538393635383a +3839393d393735393c3c444948464a4b4a4a4643424346474555504f5354 +4e4849464746403d3d434339453a3f494c50382d2e363955776666470a12 +19060b1920374046414357788bccd28cb0b45b636d7a7f7d7579878c8693 +99887d796351546b6959535e5b56615f5956585b59595c6461605e5d5d5b +595c5b5959595754515150515051504d4b4b4d5052524f4c4a4d4c4c4b4a +4a4a4946454b4f5557595a64646c6a5e5c584c4c4845403e3c3b3d3f3f41 +434546484a4c49110959372a31ff1e748acb093b929d6b766d443c424861 +636d564da4e2e10f27221e1e19161b1d33251b1d1d231b1f2f1215140a05 +05191b0507180509130b8c903a093d49242d493a344e6a29321a471c2d57 +6b431e3c468b655e58462e3240303758c2ffffffd4195a262d2c29302828 +31332c2a2e2c252c342f2d32322f30302f302f31332a3c6f723721363a39 +36773d302b30451e312b0f0c200e0e102745352726ff27101e0eff691e3f +3b353839383b3f3d383442302d2c363a3a37353433343434333832303538 +3635382d2c3a3734352d393e3632383c38333130372f2a332f242727201e +3731253513211d3a272e373935481bfffffffffff56a30323c353e4a2b2a +5a6c4c363f463a3939332e323c3d3555463632333435373331313336342e +281f3c3a2f3220101d15292c312726291c29341c192e1e2135282628182f +3e1d163025270f2e3314182b162333282a37314686f1fffff6ff98333638 +36363837343336363439403c3137322e4137292bff146930f4e599eddf67 +17ff19356a8c746b6a696c7682837a7b777675767675756d756e67707773 +6d716f6c6a689898989797999da09fa09e9b9b9c968d9296989493959795 +98999a979493969a9b9ea19f9fa3a5a4a1a3a4a29e9fa4a9b6b2b0aea8a2 +a1a39ca2a19a999ea19f9ea59b9b9b8d7854505b4a4245603f43460f1523 +1619252f202b383e404b698572a9c3754d6d685f6d6872705f6b7e746d6b +61626d6e6c779fbfcdcad0d5d6d8d6d0cdcecfcdccced4d1cecccbcbc9c5 +cbc9c8c7c5c1bcb7bab4b0b3babbb4adafb0b0afaeaca8a7a9a9aaaaadae +afafaeafb4bac0c4c6c7d0d0d6d3c5c0bbaeadaba8a5a3a2a2a2a1a09e9d +9d9d9fa0a78e432a5e21131174a97c097604218b8b656455353c4d536c64 +675e4087bffb14040f15151419150c1e0e0306050d070b1f0917151c120e +1b3f361b3442070056b149b57f836e0103cfeae2e0e7531500dd56a3b4a2 +e7391fc0daaeac7beb39173820009db2d7cfbaa00a51131b23000f0e1218 +170f0d1114111a1f1612140f161513100e0c0e10100205100d0e0c000500 +370900000619090500219689a0ad8e1839152b006cd9ae610078320d001c +1012100f1116140f050d0009000407000b0a090b0f100e0b0f0b090c0d0c +0b0d151510031218050d0f0b0a0e100f0e0f0f120f1017130d160d0d1b00 +08182c233c0000000f19292c12026d000100001a120703152f000008252f +26070008100c0a0308130f000006100a060706030102050304070c0d0a08 +06180f020f191b2714030009033e5e281500032022070d0d0c0910040214 +1c1f160d0020090a2c34201e1418140e112506000200000000030e0d0d0d +1115120c131211131717130b0c0600100c0d00cc286cdc8562b9dd83a900 +e3602faddad5dfe4e5e5e9eae4dddddcdadbdedfdfdfd7d7dbdbdae2e2d6 +e3e2dedbd96565656464666a6d6c6d6b67676862595d61635f5e60626063 +6465625f5e6165686e716f6f737574717375736f70757a878583817b7473 +756e74726b6a6f726e69726a6f756c5c3f4050413f4561414443090d1b0d +101b2516202c333643607d6ba3be734c6e6b64746f7977666f827c7a7c72 +6f756f63617d959b93989fa0a5a09a9798999796989e9b97959494929197 +979695928e898487817d808788817a7b7c7e7f7e7e7d7c7e7e7c7c7b7c7b +7d7c80858c92969899a2a2a8a496918b7e7d7c79767473737371706e6c6c +6d6f70796a2e2469362e2b86b47f0673011f8988605f4e2b314248615b60 +593d85bfff1d121e24242328271e30201718191f19192a13211f261a1522 +463b2038460a0663c35ac69094811416e2fef6f4fb6a2c0fef68b5c6b4fb +4d33d4f1c5c594ff52304f340aaabee0d8c3ac1a632a34411c2b282c3231 +29272b2e2b3439302c2e2b343533302e2e323437292d383738362a2d275f +3127262b3c29221036a797acb99c2a4d2d460887f0c0720d8b4b2b1e4333 +353635373c3c392f3927372735382d33302f313536343135312f32333231 +333d3d382b3a402d353733323638373637373c37383e372f352a2836181f +2f43374d040805253144472d1d840c1404112d2c25253a5816193a596358 +392b353b34332c2f3c3827242f3a343031302d2b2c2d2b2a2d2f302c2723 +342819262d2f3b281b0f211a5675402c171a38391f24252322271c192c30 +342a2010331c1d3d452d2b252b2b2a2e4425161f0706130c1b3135353537 +3b383236353436393935333f3e3341393713ee4688f59e7bd2f696b500ea +622da0c4b2b1aea9a7acb0aea9acaba9aaadaeaeaea6a6aaaaa9b1b1a4af +aca8a5a33838383737393f424142403f3f403a3135393b3736383a383b3a +3d383734373b3b3e413f3f4344434042413f3b3c3f44514c4a4a44403f43 +3c43443d3e4348453f474148514d442c334a4246517356564a090b180607 +111b0d1a2c393f50718c72a5c2765173706a7a77817f70788b878b90847f +80745e53626f6a5b5b5f6064605a57585b59585a625f5e5c5b5b59575d5c +5b5a5955504b504a484b52534c45494c4d4e4d4c4a494b4b4a4a4a4b4b4a +47484d51575a5c5b66676d6c605d5a4d4c484542403f3f3f404040414345 +494a5548110c592d292a88b8840d7a0a2a94916766553337484c67606860 +4690cbff2415212727262b29203222181a1a211b1a2c152321281d1b284c +4126414f130e69c761cd979b871b1de9fffffdff723419f972bfd0beff56 +3cddf9cdcc9bff5937573d16bacef1e9d4ba276d3038411c2c292d33322a +282c2f2c353a312d2f2c3232302d2d2d303236282d38363735292f295f30 +24212435241e123bafa4bcc9a93658374f108ef8ca7c1892502d1e423537 +3736383d3c382e3826352532352b33313032363735323632303334333234 +3d3d382b3a402d353733323638373637363a36373d3731382e2f3d1f2737 +4b40570e1210303b4f523828921a2313213c3b302f425c1919395761593a +2f3b443c393034403c29263139332f302e2b292a2d2b2b2e31322e2a2738 +2d1f2c3436422f1f1525205a7b44321b203c3f232a2929262d201f303739 +312617392323454c33312c31312e34492a1e2710121e172535353535383c +3933383736383b3b37323a352b3b343313ef488bfaa382d9fda4cb13f45d +187d937a756e6b6c767e7f7774706e6f727373736b6b6f6f6e7676697370 +6c69679b9d9e9d9b9ba0a4a2a3a29f9e9d978f9398999593959695979899 +9795959799999c9c99999ea09f96999c9b989a9fa5a1a3a4a19c999ca19e +a6a59d9ba2a29ca29a97a1946e564e545e494348503b4767200d1a1f2828 +2a38343742454347516bb6a35f7280626c687179736563727e716c64656c +72727487b3cecccbd6dddbd8d2cfd1d2cfced0d3d0cdcbcbcac8c4cac7c4 +c2c0bdb9b5b8b2aeb1b7b8b1a9aaaaaaaaababa9aaa9a8a9a8abacaeaeb0 +b1b5bbc0c5c8c9d0d0d7d3c5bfbaaca7a7a7a7a7a6a6a6a2a09d9b9b9ea1 +a4aa8a423b641f140c0a0508031a0469908163554431425754745a6b743b +74aaf85f0014140e0a0e000f1e0d0508060c0616210f191224140a348066 +67572a000e2784000031b8210a0300003dad27001f00ceb7e8b399ca1900 +96e0ac9582ed250d0e2100cd2700c7a2c7003c140002110f121619140d0d +1316151e2116131711151513110c0b0b0d0f0904060e0f101608002c0b02 +0105170c100a48be000e159f7e350b0b2ae95c5ef299cb99001c0b11120e +0b0c0f0e090f0908472b0c07080c0b0b0e12130f0b100d0c0b0a09080900 +1016020b0c00100909090a0a0a0c0e0603060c110d0e15130f18112a2724 +0dc2b86c87e984000e160233abd4ded0f04918121e5816062a381100020d +07060e06060b0d0703060f0102060c0d08070a0907060609090907110b07 +131b0600105445564153250804686d250037052019464442524f0007255f +047680590a0a15142e2f1d24140c1c2023111d19130f160b0b0d0d101413 +0f181312171814110f090f06010e240068dd7be16dce00e196f39bea9617 +86c7d9e5ebeeeeeae7e2dfd6d4d2d5dadddedddad3dbddd4dce0d0e5e3dd +d8d4696b6c6a68686d716f706f6c6b69635b5e6364605e60616062636362 +5f606165686b6b68686d706f66696c6b686a6f75737576736e6b6e737078 +766e6c73736b6e666979725443414d5a4843484f3a4562180510161d1d1f +2d282c383d3d404b64b09e5d718165716f787d77696775857b7974727876 +6d676c8fa299949ea5a4a29c999b9c99989a9d9a96949493919096959290 +8d8a8682857f7b7e84857e757676787a7b7d7e7f7e7d7b7a797a7a7c7e83 +878d92979a9ba2a2a9a596908b7c777777787877777772706d6a6a6d6f72 +7a632d37713631261c0c07001300688f7c5c4e3b26374c496951616f3571 +a8fa680423231d19200b213021191c1a201a25311d2720321f153f8a6f70 +5f3200163697061044cb341e17050754c43d143505e2c9fcc7adde3014ad +f6c5ad9dff3e26253504db3301d0abd50a502c18202f2b2c30332e27272d +302f383b302d312d333533312e2d2f3133302a2e3637383e2e2553322929 +2d3c2f2e265fd20c1d24af904b262645ff7370ffa7dcb110403234353431 +323736333b3536785c3d3836343131343839353136333231302f2e2f1e38 +3e2a3334233831313132323234383030303639333138312d352c423f3c23 +d6cc809dff9c0a29311d4ac2e7f1e1ff603432438143365c6c452a323a32 +2e362f323739332c2f382b2c30363732313433312e2e2f2f2c29302a2430 +372216296d5e6f5a6c3e211d81863e07501e3932615f5d6d6818203e761b +8a946d1e1e29284546363d2f29393d402e3a342e2a332e333535363a3935 +3b3635393a3633363a4739323b4d1e87f994f884e517f5a8ffa4f39c1a80 +b4b9b8b5b0adadaeafada5a3a1a4a9acadaca9a2aaaca3abaf9eb1ada7a2 +9e383a3b3b39393e444245444140413b33363b3c38363839383a3b3d3a39 +383b3d3d40403d3d42424138393c3b383a3e443f41423f3c393c423f4748 +4040474740463e4556563d3438475b4e4d545f4c526616020e1117171b2b +283040484b50596cb4a46276866a77757e868072707e8f87898483888171 +5f576d75645b616864625c595b5e5b5a5c615e5d5b5b5a58565c5a575554 +514d494e4846494f504943464647494a4b4b4c4b4a494848494a4949484c +5156595c5d66666e6a605a574b4646464444434343413f3f3f41454a4d56 +42101e602c2d251e120d051b067097836355402c3d504d6f566a76417cb5 +ff6f072626201c220d2332221a1d1b211b2831202a2335231b459378796a +3d0c213d9d0d164ad23b251e0e105ccc481f4010ebd5ffd2b6e9381fb5ff +ccb7a4ff452b2b3c0ee84110dfbae0145730191e2d2c2d31342f28282e31 +30393c312e322e3132302e2d2c2d2f332f2b2e3637383e3126522f242124 +34292c2965dd1c3037be9c562f2f4eff7b7affb0e4b51240313637353233 +3736323a343475593a353434323235393a36323734333231302f301e383e +2a3334233831313132323234372f2d2f353936353c39353d374e4b482ee1 +d58ba8ffa615343c2858d0f6fff1ff70423d4c8746365b6a432b36403938 +3e35353a3c3630313a2a2b2f3535302f3232302e2e30302e2b332d28343b +261b2e7465766173452824888d450e57254039686664746f1f27457e2393 +9d762727322f4b4e3d44362f3f434634403b35313930333535373b3a363d +38373b3c383535343e322c36491e89fc98fe8aeb1ffeb4ffb3fa9807608a +867f77737374777a786b6866696e7172716e676f716870746375716b6662 +a1a3a5a4a1a2a5a9a2a4a39e9b9a958f969a9b9694969795949494949495 +989a9698969293989a97939292929597999993999f9d99999ca09da2a19a +999e9c969b979d977b5847504b49494a5a42475666220b14212f2a2c332c +314659646e76a671c2ac607c7a7161857e6c7464638c87796e6966686a6b +739ec2c8c5d1dcd8d8d2cfd2d2cfced0d3d1cdcbcbcac8c5c6c2bebbbab9 +b7b5b3b1afafafada9a5aaaaaaa8aaaaa9aaaaa9a8a7a9a9ababb1b2b6bb +c1c5c9cacfcfd4d0c1bbb6a9a4a6a8aaaba9a6a5a2a09c9a9da0a4a79f7c +3348601f1d18132c272939244f8c715c473c374b5e527d51688134619edc +b9001714111827090e1c0c080b070a0511150d0d0a231404246aafceb68b +00100079a9cfb7a8001812acb4bdc4e44712067eaeadb9cd86000747cacb +cedbdc031e220d00f128b6a800f23b3009160e180f1316150f0b0e151211 +181913161d1814141514110e0d0c091a211f1d0d07141007281509070c1b +0b0a0019cd727872b4491c0c17008197000080ea6c001d051112100d0c0f +0e090e030c5e4304020b0d0c0c0e11110e0b1010100e0d0e0f0f1810020a +475720050a0d0e0c0a0b0e0f120d0f13110e0f0e1b00001e0000120161c0 +e4edc688002e17170f7592b4cdd04c00240b000a312f0b05010105060a0b +061008000528301d38332f2d2b2b323b2a292726272626252a1b17201e14 +3266e4cac0adee230071e14fc27dac52002ee3ebddebd72b1b49ee10e361 +c291063f29111415192a39210d141325241123110b131713111213131712 +1117171311100211150716200e021637500029021a093e435728134ac6d9 +dde7eeeee7e0dfe3dad6d3d4d9dddddbddd4dadcd2d9e1d5e6e4ded8d56f +7173726f7073766f71706b6867625b626667626062636160606060606164 +6665676561626769666261616265676969656b716f6b6b6e716e73726b6a +6f6d65676570745f453d4c4c4e4d4c5a40414f5d18010915211c1d271f26 +3c525e6873a36ec1ac638181786a8e8573786865908c827a76716f6d6660 +809b989199a19da19c999c9c99989a9d9b969494939191928f8b88878684 +82807e7c7c7b797571767677787a7c7d7e7f7e7a79777777798084888d93 +979b9da1a1a6a2928c87797476787a7b79777672706c69696c70736f551e +466e393c322231221f2f1d4d896a523d312c3f524672485e7c2e5e9cdec2 +0324212027391b202e1f1b201c1f1824271f1f193223133177b9d8c09502 +1c0c8ab7e0c8b9052a24bec6d1d8f75a251890bebfcbdf98051a5de0e1e4 +f3f21c3a3e2616ff39c4b603ff4e48253631382c2d302f2925282f2c2b32 +332d3037343437383733302f302d3e444543332d3a2f2647352c2a2f3e2b +280f2fe0838681c35c322732079aab040e8efb841c412c34353330323736 +333a2f3a8f743634393532323437373431363636343334353540382a326f +7f482d34373836343538393c37383c39333231391912381405281777d6fa +ffdea309493232268ca5c7dee36306422d1e3661613f3933313231303131 +3d352432545c49615c595753535a635352504f4f4e4c4b4d3e38413f3551 +83fce0d6c3ff391187f765d893c2681246fefff8fff2463361ff26f977d6 +a51a55462f32323445543c293030424333463431393d3934353636393433 +3636323034314444343f442c1e2e4c630c3a1328174c5166351c4ababeb6 +b5b4b0acacb1b7a9a5a2a3a8acacaaaca3a9aba1a8b0a3b0aca6a09d3c3e +40413e3f42474044433e3b3c37333a3f403b393b3c3a39393b393b3a3f3f +3d3f3d39393e403d3736363437393b3b343a403e3a3a3d434045443d3c41 +3f3a3f404f58493634494e545658664d4d575e16000715211c202b262c44 +5a68727cac77c9b46a87878071958f7d8373719b92898686837f76635164 +7267585e6761615c595c5e5b5a5c615f5d5b5b5a58575956524f4e4d4d4b +494747474947433f464748484a4b4c4d4c4b48474646474648494d515759 +5d5c63656b675c565348434648494a484342413f3e3e41454b4e4b34012f +5f2e37332737292737245290715a45373243564a784d67833a69a9eac909 +2a27252c3d1f2432231f231f221c282923231e37281a3980c3e2cca10e28 +1592c0e8d0c30f342ecad2dce3ff6833269ccdcbd9eba6102868edecf1fd +ff233e412a1cff43cfc10eff554c26332b332a2e31302a2629302d2c3334 +2e31383531333433322f2e2e2d3e464644342e3b32294934262328372628 +133aef97a098d66a3f323b10a1b40c1797ff881e412b3637353233373632 +392e388c713331373533333538383532373737353435363640382a326f7f +482d33363735333437383b363a3e3b39383743231d452213362582e1ffff +eaae14543d3d349ab4d6eef273154d37253961603d37343538383b3a3742 +382735575d4a635e585653535a635554525151504f4e51423d46443a5689 +ffebe1ceff441c92ff70e39ecd731d50fffffffffb4f3d6bff31ff82e1b0 +25604e373a3a3d4c5b432d34344646354836323a3e3a363738383b363539 +39353334293b3c2d39402c1f304f6913411b3122575a692e0b2e948f7f7a +75737070757a6e6a67686d71716f71686e70666d7568746f696360a9aaab +abaaaaacaeacaeaba5a1a09d989b9fa09b989a9a98929291929395979996 +979592949999969b96929397999693939ca19f9c9c9d9e9d9c9a9a9b9b9a +99909fa57f5c564c4b473e4f5b5f334449371511131922212b3136424b50 +4f53584f68f4a6769b4c8b5d93836a7b6a5d8e957b6d6a6260676a6e8bb3 +c8cad0dbd7d3cecdd0d1cecdced3d0cdcbcacac8c4c1bdbab8b8b7b4b3af +afadaaa6a2a1a1adadacaaa9a8a6a5aba9a9a6a8a9ababb3b3b7bcc1c6ca +ccd0cfd3cdbeb8b4a8a7a9abacaba8a5a3a19f9c9b9da0a5a7a37b26544d +161a1d213a3c3d3f2c529f5a503c3b414e5e4d84535a7f3d4b8fc3e81807 +11142a462e0d1909080d070a050d0915060b221d066b6facd08c66003543 +72b8d1a38600200161ccf2d7be38110340b4f4f0be7a181624c6ecde6b5d +001d1309064f96a20c0880003c0b0707010d1214110d0b0f151a1516140e +151b121617191916121010140d050c1d1807010d071e1607050a1a061514 +007d9a89beac2a1c132200ba9d00f2bdde67000f200f11110f1014130e02 +0000362f000100090c0d0d0d0d0d0c080c0e0c0c101313000a1308101307 +180b0f100d0c0e0f0d1510141511161506c0ead5c3e4d60006595b000029 +da00001a0e0fc6b68f9cb1bb00020920492d0000060e111010100d130000 +102a2d201313100f100f0c0e13090909090a0a0a0a0c11191b130801008d +b6d0949b000000b6280d48e95d000a000080db4e001800b3cbeac2ed7c05 +0e013239390f0a001d270e240b060a120d121b1e18121011111616181717 +1717140c0d160e140d27133a473656572d162c1e121c0b253fa6cad5dde5 +e8e2dcdbe2e3ded8d8dbdedcd9ded9dadbd8dce2e1e2e0dddad977787979 +78787a7c797b78726e6d6a65676b6c67646666645e5e5d5e5f6163656465 +6360626867656a65616266686562646d72706d6d6e6f6e6d6b6b6c6c6b68 +5c6d795d4549484f5048575f5f2e3a3e2d0905070a13121b242b37444b4d +51574f68f6aa7aa25595679c8c70816e6191967f76766f6b6d696173909c +95989e9a9b98979a9b9897989d9a9694939391908d8a8785858481807c7c +7a77726e6d6d7979797a797a7a79807e7b78767777798285898e93989d9f +a2a1a59f8f89857877797b7c7b787574716f6c6a696c6f73715411525e31 +38372e3d353032234d9d53473130354252417748507837488dc5f125141e +233955401f2b1c1b221c1f1a221e28191e352e177c7dbade9a7402414f7f +c5deb194072e1171dcffe9d04a23134dc1ffffce8a2a2836d9fff17e700b +3b33251f66aab41d1b9507582b2c2f262b2c2e2b2725292f342f302e282f +352e363a3c3c383432323831282f403b2a232920383326242b3b25332d0a +8ea897ccbd3d322e3f15d3b10affccef7f0c314732343432363c3b382e2e +2f676124333033323333333333322e3234323236393924323b30383b2f40 +35393a37363839373d383c3c36393627deffefdaf9eb0a1b7173100744f5 +1a1a352926dcc9a2adc4d00c1e2945745d2d2f383e3e3b383433402f2b40 +575a4c3f3c39393a3734363b323232323232323234373f41392e241ea5c9 +e3a7ae120d13c93b205bfc700e20050797f665082f0dc9e1fdd5ff8f1625 +21575b5a2b2518363e27402a2a313c373841443e35333434383837363636 +3638373b4137372b41284c56436061371e392f25301f3648a0b7b1afadae +adabb2b9b5ada7a7aaadaba8ada8a9aaa7abb1afaca8a5a2a14243444645 +45494b4a4c4b4541403f3a3f4445403d3f3f3d393938393a3c3e403f4040 +3b3d40423d423c38373d3d3c37383f4642413f4041403f3d3d3e3e3d3d34 +4a5c44354045525752626a693542422c0905070f1819252d333f4b515054 +5c5974ffb583aa5e9e70a5957c8d7a6d9a98807f84827f7b6e585b6a6d61 +5f67615e58575a5d5a595a615e5d5b5a5a585654514e4c4c4b4a49454545 +42403c3b3d4a4a4a4a494949484d4b4946454647464a494d50555a5c5e64 +6369645753514747494b4c4b474440403f3e3f41454b4e4e33003b4e2836 +3834443d37392851a25a4c3736394656457e4e588041539ad1f82b1a2428 +3e5a44232f201f251f221d25212c1d243b351f8488c5eba781124f5b88ce +e7bc9f12391e7ee9fff7de5831225dd1ffffdd99383644e7ffff8c7e163d +3228236cb1be25229a0b592825261f292d2f2c28262a303530312f293036 +2f333638383733313138312a31423d2c252d243931211e243420333217a0 +c2b4e7d14c3f39471edab812ffd3f6830e324634363634373c3b372d2c2c +645e21302d32333434343434332f33353333373a3a24323b30383b2f4034 +383936353738363f3a3e413c3f3f30e9fffceafffc1e2c7d7d1c124fff25 +25403434ead8b1bdd3e11b2a344d7a5f2c2e3942434240403e46332d425a +5d4d403e3b38393734363b3434343434343434363a42443c312826b1d7f2 +b5bd201c21d8492f69ff7e1d2d1312a5ff73143d1ad7eeffe3ff9d26332c +606563362e1f3d442c442c2a303a353942453f373536363a3a3a39393939 +3830313a313329422b505b4b696a40294136292f16242d7c8c7d74706e6b +69707779726c6c6f72706d726d6e6f6c707672706b686564b3b1b0b1b3b4 +b3b2bbbcb9b1acabaaa6a1a4a5a09d9e9e9c969493939496979898999795 +989d9c979c989596999b9895989fa29e9b9d9d9ba49a979e9f9a989e959d +9c6a505b4f484b4450604220302719111a14121b1c280f20343c42474c4c +4d72b7c9b18a62695b8a846b7269607f9d76666d66636a6c737ba3cbd1d1 +d8d7d1ccccd0d2cfcecfd1cecbc9c9c8c6c2bdbbbbbbbab7b1adafadaaa5 +a2a0a0a1acacacaaaaa8a5a4abaaa9a7aaacafb0b6b6b9bec3c9cdcfd4d1 +d3ccbdb8b5aaabaaaaa9a8a8a7a6a09e9e9d9fa2a6a7a580226841111219 +3f443a2c3555896e474939424b4f5f5181614c795c3570b1ec7600110711 +1f10111a08070e0a0e0b2415300b111915009d270281867f030844890087 +8aa10b0a22bb046b99cf211b00cf6330a9c8770c0869dc50ccbbc706120e +2d1100000c00000d004d000520030d1416151212141520191816141c2013 +1716171613111112121010110e0c111b17122324110d13250406140d9c81 +3f4ace440b151103b3c97ceb009ba50e1c110e1112111215130d090c0121 +39000e03060c0e0e0b0c1014070c0e0a080d100f170f140802050416080d +0e0c0b0e0d0a0c091012101d1d02e4a8615868e91300abc7634c3de33118 +172413e9021b2014ea2a183b442d00000f0405141e170f0d0d000e31330f +00020001060e100b060405070809090808090404000001140d00df433a68 +957c1b00d39c86738a8f1000e3b97d9ab1c81e07a3ce8995a3e9050a96e0 +8ea9add9370b1a08230e141b040e111a1c1714131210151b1c16181e2018 +190e151313112e53635654525656651e1a172024152874e9d7d9dce1e0da +d5d8e3dfd8d8dde0dedadde0dcdadedddce4dededcdbda807e7d7e80817f +7e8788857d787775716d70716c696a6a6862605e5e5f6162636667656366 +6b6a656a676465686a67646970736f6c6e6e6c756b686f706b6a6e616b73 +4b3d54505159525a67411724190b020b05010a0a18011429363e464b4e4f +75bdd1b9946f7668978e737a6f66829e776b77736f736f6a6682a09d989b +9a9996969a9c9998999b98949292918f8e8988888887847e7a7c7a77726e +6c6c6d7877797a7a7a79787f7e7b79787a7b7e85888b90959ca0a2a7a3a5 +9e8e89867a7b7a7a7978787978706e6b6a6a6c6e7173590e67532f30334c +452f1d264a85693e3e2c363c4050457556427256326eb3f581031e14202e +1f232c1b1a231f2320392d4520252d2805af371291968f10154e930a9194 +ab17162ec71178a6dc31280cdb6f3cb5d484191579ec60decdd91c31324d +2f0b1323111526186d1c2f4b2d2b2e302f2c2c2e2f3a3332302e363a2f37 +393a393533333434323233302e333a2c2536392a28314221202b20ab8c4a +55df5a22302e1eccdd8af803acbd2c3e3831343534383d3b37353a32526b +2a4234303234343132363a2d3234302e3336353f373c302a2d2c3e323738 +36373a3934322e3534313e3b1efebf766d7afb2308c2e27e6859ff4d3431 +3e2aff152e3127ff41325b6956282e41363541463d33333c303f62633f29 +2f2b2a303636312c2c2e303132323131322d2b251e283b3412f5544b79a6 +8d2c0ae4ad97849ba0210ef8d092b1c6de331ab6e19aa6b4fa1421baffb4 +cbcbf44e222e203f2e3b45333b393d3f3a36353432343a3b35353b3d3a40 +373a36302a42626e5f5b565a5a67272e313b3e2c3875dcb9afa9acaeaeb0 +b3b7aea7a7acafada9acafaba9adacabb2a8a6a4a3a2494746494b4c4d4c +5758564e4948494745494a45444545433d3b3c3c3d3f4041434444404346 +4740453f3c3c40413f3b3f44494342424240493f3a41423d39403a4a5736 +2f4e545a645f6671471c26190b05100a0b1416250e1e313a3d42464d5b86 +cbdec49e787f71a09880877d748b99726f8386858476655361756b616461 +5c56565a5e5b5a5b5f5c5b5959585654504f4f4f504d47434745423d3c3a +3a3d494b4c4c4a4948474e4d494747494b4b4b4c4f52575b5f6166656963 +565352494d4c4c4948474746403e3e3f42464b4f5238005245252e34524a +37242b4e866d4344333a41455347795c4a7a603d7bbffc8709241a253324 +27301f1e262226233e314a252c342f0fb9441fa0a59e21255a9f169da0b7 +25243cd52188b7ed41391ceb7f4cc5e494292588fb6fecdbe727332e4c2f +0e1729171b2a196a15254123292f31302d2d2f303b3433312f373b303435 +363534323233353334353230353d31293a3a2723293d1d21332fc2a86a73 +f368303b3627d3e493ff0bb3c12e3f3733363736393d3b3634382f4f6827 +3e312f3335353233373b2e3335312f3437363f373c302a2d2c3e31363735 +3639383335343b3d3a47462affcf87808eff3a1cd0ed897364ff583f3e4b +38ff243d4136ff513f66715c2b2f423739464e463f3e4234436665412c32 +2c2c2f3637322d2c303435363635353631302a232d403919ff645d89b89d +3e1af6bda994adb0331effdea3bfd7ec4429c7f0acb6c6ff2731c6ffbfd5 +d5fd562a3524422d38412d38393f413c38373634373d3e38393f413b3b2f +33302c2743657264635f6363732e2f2e34331a1e53b287756a686967696d +78736c6c7174726e7174706e727170756c69676665b8b5b3b4b8b9b7b4c0 +c1bdb4aeaeaeaca4a8a8a3a0a1a19e9c9997969798999896969493979b9b +959292929395979696999f9f99989c9d99a898949d9e93929ba18f876452 +5a494d4e4c495d2013251219171e11101e1d272f31302e364752505761ba +c197876e7c5b7d836c6564666da97663706c666868716a92c6d1ccd3d3d2 +cbcdd0d5d0d1d1cfcac9c5c7c4c4c0bbbbbec0beb8aea8b2ada7a4a3a4a3 +a2a6a7a9a9a9a9a9a6adacaaaaacafb3b6b8b8bbc0c5cbcfd2d7d4d5cdbd +b9b7acaaa8a6a5a6a9acaf9f9e9d9e9fa1a5a6987a1f7c461b141c3c3e45 +4d45448f5d3e483b494e4a5d577a6f46797d2853a6d8c100261316150919 +1e09070f0b121114073005161a1f00e359bf4516f10004ac8a3ac800f333 +1a3af40bec26b7ae090eed1dbb9b41f40002dabe21c523f12e140a120d18 +190d251308142b101400040f17191918181715141013191f2e3426171613 +100d0b0f11110f1a1f150d0d0a110e1b200c060f2308080200b86ca5b0e9 +790217110020dadbda8ae86e060e0b0f12131111120e070907001d4d000c +00040c111210131b23161c1c130f10100c1102131a16130809090d0f0e11 +16130c12121916142622003ecd64dce2b7001511c77ed9d7d206001b1005 +dde8d7d9c9e0372d511300080b070b090407110e02001f3a230703080614 +0c09090a09090c07080b0b0a070706060c130e080f0600dd8fa58197ec00 +00ce8a85737ef20132c1a57d9a9bee1321b9d48e9f8bf14a2b86d6526341 +ec671c232614121e15000f0b1111101215130d0b161910121e201715101a +1d1a21165c5376b0966d70545420220f0b231a4fcbe0dddae0e2dcd2cddd +d9d3d4dbe1e0dddce5ddd8e1d9d2dfdcdddbd9d785828081858684808c8d +89807a7a7a78717575706c6d6d6a686563626363646364666463676b6963 +60606162646665656a70706a696d6e6a7969656e6f64636c6f6263494454 +4c5658564f601b0817040b080f02000d0b151f242525324651505964bdc7 +9f917888688a8d766d6c6c71aa77687a7972736c6b5a749f9e9394959a98 +979d9f9d9b9e9996929190908d8c87888b8d8b857b757f7973706f706f6e +727476797b7b7b7a7f7e7c7a7a7d7f82878a8d92979ea2a5aaa6a79f8e8a +887c7a77767576797e816f6e6c6b6b6d6f7167550b7b56363033463e3a3e +35388657333c2f3d423e514b6f643c72772250a6dfcc0333202322182830 +1c1c24232a292e20491e2d31330df56bd15526ff0312b69444d109ff3f27 +47ff18f932c3ba151af929c7a74fff1012ecd033d735ff45332e342c3637 +29412c24324d343b272b2d31353534343331302c2f3239484c4036363633 +313232343230393e342c2c282923303826232c4025221912c97ab0befc91 +1d322c1536ece9e898fa85243032323536343638363035352b4e7e2c3f2f +303437353232393f32383a322e31333237283b423e3b3033323638373a3f +3c3537343b3632423e1755e479f1f7cc062824db94f1eeec201a352a1cf4 +feedecdffa554d733a26353b373b3931323a372d26546d56383437354139 +3233323232342d2f30322f2e2c2e2b3439342e352c0ff39eb490a6fb020b +dd9994828bff0e41d3ba92afb0ff2533cbe79fb09cff5940a8fc76835dff +7b30373d303145422f3d33343434363937312d38382f2f393b363c393f3e +3739286a5a7aaf946a6e4e57323d2e2a413158c3c6b5a9abb1afadaab1a8 +a2a3aab0afacabb4aca7b0a8a1ada8a7a5a3a14c49494a50514f4e5a5b59 +504a4a4b49444a4a4544454643413e3e3d3e4142414142403f434746403b +3b393a3c3e3d3c404646403f43423e4d3d3940433635404a434b383b5451 +5f64625b67210c17040b0b1409071717212a2d2b2831414c506577ced7ac +9d8494719399827a797c7aa5726c848c8885776b4d5a786f5e5e5a5d5757 +5c615e5d5f5d5a5957575654524e4f5254544e44404a47413e3f403f3f43 +4549494a4a4a494e4d4a49494c50504f4e5154595d616469686b64565454 +4b4c4c484748494d503f40414043464b4f463800674b3133394f46424538 +3a8757374033414642554f756a447a812c5bb0e7d209392629281d2d3420 +1f25232a292f244d2233373c16ff75dd6233ff101dc2a050e017ff4f3757 +ff28ff42d3ca2328ff37d5b55cff1f21fade41e543ff4d352c332e38392d +453127344c30361f262b32363837383735343032363a494c3f3131302f2f +31343637353e41372e2e2a2d283338231f273c23232120dd94ccd9ff9d28 +3d351f41f8f6f5a5ff8b262f31363b3c3a3c3b38323433294a7a25382b2f +363a3734343b42353b3c35313637353a293b413d3a2f3234383c3b3e4340 +393f3d45413d4e4c2665f48cffffdf193932e6a1fdfcf92d2744392cffff +fafaecff60587c412c3a3f3b3f3d3638403d342b58715a3d393d3b463c34 +32312e2e33303436373533323031363c3731382f16ffb1c7a3b9ff151ef0 +aca7959eff2156e9cfa7c4c5ff3947dff8b1c2aeff6c51b4ff828e68ff86 +393e433333443f2b3a33363634363937312e3a3b32334042393b33373735 +3b2a6d6285bfa27173585e32382922351d3b9c957a67656c6b6968746d67 +686f7574717079716c756d66706c6b696765bdb9b7b8bbbdbbb9bdbcb9b3 +adabaeb2b2b2b0aca6a2a1a2a5a39c9699a0a29d9c989797959294959994 +919396969aa09b9e9f9b9ba0a09ca29c96949797938d9c9275364248494a +4e4c564f16120e0a11151b160d15211d252b353d4043484a6071caf0b576 +936368948270676f59719c706d6b6e5c6e6f6b7277b1cdd4cfe1d0c8ccce +ccd0d5ccd3d5c8c8c6bec4babab4beb9b2afa3abaca49fa1a3a2a1a19ca2 +ababa8a6abb0a8aaabadadaeb1b4bdc0c3c5c6c9cfd4d1d6d3c7bcb6b1a9 +aeaaababa59d9ea59aa2a1a0a5a4a4ac9a641e7a3d1c141e463e3f403c6e +8a4c423e3f53454d6c3f6597266786473f87bfde340418100e0f1c151600 +07180000171309070b301a11255941001e2b060e15587c1407640016087f +b66e008c281e0b8ddbc9135384000542dce2e3d4be08171512100e0d0c0c +0b0a143c0c0a021713161c272a241c190c1f101d1f2c54213b0b1f0d160e +0d0913171e2a110d111d0b0c12230010002c04130505ee4b8ec765520021 +1b12a5af00ad9f4626001c1115071b1106130711070a001252000c000609 +0b04221a0dceb697aabd1807190c0a0f0f0c0b0e0f0b1a00131a06131f12 +0e21190d25181b119eb72fe70ae9492963ed26e838b6ce00181b08000100 +00000022330d000f1100020a120b040606000e4d1e040000000907050c0d +0f03060e190d161111100a14180f101013190b008210123b00b10600524a +005a0095233c7273007000a24a0f5a9f007505976b2f46b2cdcbdaef6102 +1b220116110b0a10120d170b150510120e0c1012201e10221b0915141a18 +1b5e545b959a50775d674212141b11192ac1ddd5e8dcd4e0d5d9dee0dad4 +d7e0e2dee4ddd8dae0e1dad2e2ded9d5d48a868485888a88868a8986807a +787b7f7e7e7c78726e6c6d706e6760636a6c696f6d6a6a68656465676260 +626262666c6a6f706c6c71716d736d676568686460716d582237444a4d4e +4b54490d07030007090f0a0006100c161f2a343a3f44485e70c9f1b67999 +69709c8a786f776178a07474757a6776756864608e9d9c91a39a96999c98 +9ea19a9fa39495928b908686808a857d7a6e76766e696b6d6b6a6c69727b +7d7a787d82787a7b7a7a7b7c808c8f929596999fa4a1a6a2968b847f797e +7b7c7c766e6f766b73726f7473737c6d4009774a312d32503e35312c5e7e +40332f3047394262355e901f607f403584c7ec4212231d1b1e2b27291421 +351b1f3531272527493125386c520a2b38141b22668a2419770b291b91c8 +7e0e983228189cecda26679a151d5af4f8f9ead21f3434312d2b2a292926 +27315b2b29233631323a4448423c392d3d2d3939446a38552940313e3a36 +2f353539432a272e3b2a2b31451f301e4c2231211eff5e9fda806f163c31 +25b6be0bbbaf5b41193f353a2b3f352a382c382f342a3f81283f32363632 +253b2c18d6be9eb5ce2c22372e2c32363334373a3846283b412d39453834 +453a2d42333528b5ce49ff26ff674471f732f549c8e3133136220a190608 +081b505f3a283b3d262e39413b343839324584543a34332c3a3736393b3c +3132383b2e35323031293637312f2f32382a0a9521214a04c012045e5608 +6608a12e488183088103b65e236fb4088818aa7c4560cee7e3edff73142f +381c343634373c3a343e343e2f3a3b3530322f3b36263e4438413d39302e +69585a8c8d456c4e614d2a313d333739c1c9b1b7a69fb0acb2b1b0aaa4a7 +b0b2aeb4ada8aab0b1aaa2b0aca7a3a2534f4d4e515351515554514b4543 +464a4c4c4c48433f404146443f3a3d464844454240413f3e3e3f423d383a +3a3a3e44414546424247474349433d393e3c38375153461733454f545651 +594d100b07010809110c010b16121b232e373c3e434d6c82dbffc88aa777 +7da995837a826e80a1757a7f8a7b89836f614e70756958665a575a5d5c61 +655d65685b5c5952574d4d47514c47463a44473f3b3d414241403a414b4b +48464c51484a4b4b4b4c505054545757585b61666368675c534f4c48504f +50504a4041483d474644494a4a564c2600684332343d5c4a3e382f5f7e40 +3632334b3d486a3d6597276887483d8bcaef451529232325322b2d151e31 +161a333127252a4d372c3f735911313e17212b73973327851a382a9fd68b +19a43c321ea1f3e22d70a51f2966fffffff5dd27383633312f2e2f2f2d2d +3760302e283931333c48504c47443647353d3a4468324c1f392d3d3b3c38 +3f40444a2e282a392d3034461e2f1b4922312425ff6cafe98b771f453c33 +c6d122d5c66e4c1d3b35433b4d433641343d31332838771c3027363b372a +3f301cd9c1a4bbd5352b4137353635302e313335492f47503c4652434153 +493c5244463ac7e058ff32ff714f7cff40ff5bdcf628454933192510100e +1d50623d2e4446313941473d3435342e488b5e4640413a48413b3e393726 +252e3d353a3735362e383c333232353b2c11a435365f19d5281a746c1e7c +1eb744609ea4269f1ed1773b84c7199927b98c536ddaf4effbff81203a43 +253c3c383a3d3a333d303a2b363732303433424033494832302d3c3a326d +636caba7496851654f2a353f322d249d977374605d72767b76726c666972 +7470766f6a6c72736c6475716c6867b9b7b6b7b8bab9b9bbbdbdb9b4b2b4 +b6b5b6b7b4b1adacacaaa6a19f9e9fa0a09c989795959393959794939599 +999da19a9d9d9a9a9e9f9b9d99959597989692988e653f4c4b4948474747 +2c0c0d081a0e10171612172121333334373b475660796881efb2a7897e6e +a57c7265717c61a2906b6d6966685a6e747cacced0d0dad4cbcfd2ced2d5 +cdcacfc4c7c5bbbeb3b5aeb9b4afaea4adaaa4a1a2a2a0a1a29ea3a9aaa7 +a5a8acadaeb1b1b1b3b8bbbdc0c3c6c7cbd0d4d1d7d5c8bbb3aea7aaa4a4 +a8a8a3a1a39ca4a09da19f9ea4a16725722d0400001633303c3971754243 +424151444d6e41648941557e60386ba2dfaf0013091300090a0612132a2b +11290a0014202d101600120c101c1a0414080c030b001310150b10000c14 +2e0920210d00000929052218020e2d000900131512100f0f101214181716 +38061a0a00100e0f13171416191909111a1d43473820210e0b06090d1612 +04270e291b180109070b1f000b023205061000585c62679a610913230c6d +f2e4eef1f0ae1014191021031c0b24140b131508007e0005190605120f04 +0011afa48582df38180712141717130f11110f08211a0f181c120a101b18 +1d1e0b223414dedc8800a7230f28f2cacb008f5b0724150b0e130b0a1f48 +29160007051508070f000015030b2a4904000711080412071112000d1c1e +06100d181514170e161613151311171100aeb890ed1ae643026ed461f525 +c37a4d7de43dec73b1cb212cee34ec808dd7120c51b6ddb873241c1a2a0c +25100c00071b0b0c111705090f161314132626172610161b1a111f455b59 +6d6d6b727f656c360f15170e15148fdcd3e0d7d3dfd3d8e0e2ddd8dbe4e7 +e4e2dddadbe0e1ddd8e0ddd9d6d48684838485878686888a8a86817f8183 +828384817d79787876716c6a69696a6c70706c6a68666665676262646565 +686e696e6e6b6b6f706c6e6a6666686967656f6b4a2d4146484742413c22 +0202001104060b0a040912122427292e3542515d75637eecb1a98c8174ab +847a6d798468a7947275726f71606d6a668da29b949d9e999da09ca0a39b +989d919492888b80817a857f7a796f78746e6b6c6b696a6d6e757b7c7977 +787c7d7e7e7e7e8083878c8f9295979ba0a4a1a7a49789817c777a757579 +797472746d75716e72706f777645126e37170e121f35282f296167343332 +32453744643a5f843a4e74562d66a7eaba031d16200e1a1d1b2a2d474a30 +47281b303946272a12231b1f2a281022151a131b092623291f230d1b1f38 +12292f1f11131d421d3d341e29480f21162c312f2d2c2c2d2f3135343355 +2236261d2c2a2c32353436393a272d323358584c343b2d303035383e3321 +3e243d33321e2b2a2e43202d225223242c106f72767db57e242a371e7dff +f2fcffffc42c33392e3e233c2b463630383d302aa91f33483632392e190b +16b0a38686e94a30233231383a3736383a3931473f333c3e322b333c393b +3a25394b2bf8f7a508c8452d38fed7dc09a6742241342c30352c2b45745a +442034313f323139202d46353f5d7b3715394339354237403f2a3a4a4a2e +322a353231342b33333032312d332d16c1c99ffc29f54f0f7ae16cff30ce +855889f24bfc83c3dd3341ff49ff93a0ea28236cccf0ca85362e2d402743 +35352b3343323339413233393f3a36303f3d293f374246402e3355655d6a +6360697659674127323933352993cab1afa19daca7aeb1b2ada8abb4b7b4 +b2adaaabb0b1ada8afaca8a5a34f4d4c4d4e504f4f5153534f4a484a4c4b +4c4f4c4b4748494745424241434445433f3f3d3e3d3f3f413d3a3c3d3d3e +43404444414145464244403c3c3e3f3d3e515539233f4a4e4d4845402303 +06041405050b0a04091515272b2d3137465564847791ffc3b89b9082b98f +8578848f70aa9778808180826e756859717b69585e5e5a5e615f63665e5d +62585b594f524748414c4946453d4646403f40424243433e43494a474548 +4c4d4e4f4f515357575455575a595d626663696a5d544c49464c49494d4d +484648414945424644434e562c0163361d19202e4133362c626633343335 +473e496d42668b42567c5e336cabeec009261e29172224202c2c43452b45 +261b313d4a2d31192a22242d2910231e27202817343134282a111e213911 +2830211516244727463f293453192b213335333130303135373d3c3b5d2d +4131252f2d30373f3f4344432f3134304f4e40282e25292e38414a42314c +2f44352f1c2d2e3043212c215123242f15777d8188be862b32402a8dffff +ffffffcf2d2d34364c3049365040383e3f3026a21528403a3840331e111a +b4a98b8ff2543c313f3f413e373333363837524f434a4a3d343943404546 +32495d3dffffb313d14e3545ffe7ec1ab8883553463b3a3e333046735744 +253a3c4d403f45262d422c3354783a19404e4743504348442a35403d2534 +323d38373a3137373436333036301bd0dbb4ff3eff652290f482ff46e29b +6ea3ff65ff9cdbf34954ff5affa4b1fb363177dafed893443c3b4d324d3d +3b3136433132383d2d2f353b3937344645354634332a272c3a5566667f86 +7e6c715b6b452b3a42393218729a726c5b5d73767e79746f6a6d76797674 +6f6c6d72736f6a75726e6b69b6b8b9b9b8b8b9bbbabdbfbdb9b5b5b6b6b9 +bbbab8b6b5b5b1abaaaca9a1a2a79c9a989594949696949293979b9b9da1 +999b9b999a9d9d9b9797969696979897998e4b4141342c2620272f131515 +061a0d0e141817171b212a2f34393b41494e3838c9fffe89797390977877 +6c747562958156716d797972525e6a9bcdd1dcddd2c8ccd0ccced0c9c6cc +c4cac9bdbeb2b4acb4afabaca3aca7a4a3a4a29fa1a5a3a5a7a8a6a4a5a6 +acacaeaeafb2b9bdbdc0c4c7cacdd2d5d1d7d7cbbbb0aba6a9a2a0a5a8a5 +a09d9ca29e9a9f9e9ca29c583194858483807b863b2c3776623e4247434f +434e70495e7a643f6d78394582b6e41d1c1307192b30000000000200130a +00050720040005200f0300080a000000001f22101a000018352435293d2b +000811000f200000060001214a1003080d0a0603010001020000003f0001 +000a1f1a110d09070c1509231a0d06241225072405131a0f0900161f1618 +00280e190b080b21030a0839060e0f2c0b0d0c04001a2827211b0d0b0000 +00010b061e0b1b180b1c210500130313140278000a100902102314171644 +4553357c09191c0e10151613111516151515002032151a26161a131d1d27 +3b3520042c0027693a28212400000000000805001e02000026631c0d100b +1300070f0f1c160c0013453e0a0e21110812120021362501160000171312 +1c131119101514151a160e12150b0f7769948f9c4c000d716b966f83a43b +76759e9b749dad2c137190978e9cd523196bc07dd9e9c100132917321e1f +111b1f231408001016170d0b28220d1d2824273c353124335a3736595e64 +7b625d542a121c161422196ddcd7e2e3e7eee2e3dddedad7dae1e5e5e1df +dcdddedfdfdddedcdad8d68385868685858688878a8c8a86828283838688 +87858281817d767577746c6d7370706e6a676766666462626667676a6e68 +6c6c6a6b6e6e6c686867676768696a706a2e2d362e2a251b212407090a00 +1104050a0e0b0b0f151e222930353c444b3435c6fcfd8b7c77969d807f76 +7e7f6b99855b78778280764f53547ca29ea2a29c969a9e9a9c9e97949a91 +97968a8b7f80787f7a76776e77716e6d6e6b686a707377797a787675767c +7c7b7b7c7f85898c8f93969a9da2a5a1a7a69a897e797679737176797671 +6e6d736f6b706f6d757338209291999b968788331f276654303237344336 +45664259755d38636e2e3e85bcec25251f172b3e440b0e09181e082d2218 +1a1c34160b16311d12041718050402022b301e290b0527412f3c2e40320a +1a230e2339181b22101d3d652b1c21292723201e1d1e1f160b185c181e13 +273a332c2824232830223b2e2117331e33183a203441383122373a2d2e13 +4028352825283f212824562228284322211e170e303c3b342c1d18070204 +0f1d193421302d23353d221d34253839279e203138342d35412b29214c4c +5a408a1d31382b2b303331323739383735203e4f31344132362e38374054 +4d3a1f470747895a483f411015211f232e2d294b322c3058934532373139 +242e3637443d34253c6f6733374939303a391f495e4b283e26223e34303a +312f382f34313237332b2f312422887aa59eac5b0d1a7e78a37a8eaf4780 +83acaa83aebe3e2684a5aca3b1ea393589da94effcd40f2641325041463a +444546372e28393e3f332f473e25303a38425b514b374366403b5b5b617e +66605b392b3a3b3b422e72cbb7b2acb1bcb4b7afaeaaa7aab1b5b5b1afac +adaeafafadadaba9a7a54c4e4f4f4e4e4f51505355534f4b4b4c4a4d5150 +50504f514e4a494d4a44454b413e3e3d3d3e40403e3c3a3e3f3f3f433f42 +4240414444423e3e3d3d3d3e3f4350521c2232302f2b212528090d0e0216 +07060b0f0d0d131922292f3539424a524346d7ffff9a8b83a2a98b8a8088 +89729c865f8283919082564f465f786963605c575b5f5d5f615a595f585e +5d515246473f494442433c4543404142423f434643454748464444454c4c +4c4c4d5056595455585b5c5f646763696c60544946454b47454a4d4a4542 +4147433f4443414c531f0e868f9ea5a395943e262a67532f333837453d4a +6f4a607c65406b7634458ec8f932342d26394c4f16150e1c21092c221a1d +213b201520392619091a1b080e0e0e3739272e0b042037212c1a2b22061c +27112a3e22242d1b28486e3423282d2b2724222124251c11206420261e2f +413a35312f2e3337273b2c16071e061c082d172d403a392f464b3d3b1b44 +29362c292c412328255423292c492a2c2c25193b45423b342a281a15151c +1f1327142b2e25394128273d2f41412da12130383b363e49312d254f5260 +4693283d463b4043413937393d3e40402b485534313a2628253336445b59 +49305817569667534a4f1e22302e313b373251362e31599347383e3a4431 +3d45434e44342134655923293e312f3c40275166542f40261e3d3b3a4439 +373d343937363b372f33352b30988cb5b1bc6e1d2d8f8bb48ea0c3578986 +afaf8ab6c84a3493b6bdb6c6ff4e4394e9a2fdffe31e344d3b58474b3e46 +4848392f2a3b403f342f494129343e362f3b292624385c3b3f6a787c8767 +65613e304243403f1f529d7a70697181828674706c696c73777773716e6f +7071716f73716f6d6bb6babdbcbab9bbbeb9bbbdbbb5b2b1b3b6b8b8b7b5 +b4b6b7b5aeb0b8b3a6a6b09e9d9a9594959795919093989c9b9c9e9b9b9b +9b9b9c9d9c9596979796969898958834392d1714130f0f1a08141a07080c +0e10171c18161f1a212b3235363a3c6b90c4fdb697547ea4808268728655 +709056537d77889097677175a3d4d2ddd4cdc4c8cfcbcccec9c4c8c0c8c6 +babbb2b8aeb3aca8a99fa8a4a3a4a5a29ea1a6a6a6a7a7a7a6a6a6aaaaac +acadb2b9bebec0c5c9cdd0d3d5d1d6d7cdbdb0aba9aba6a2a2a2a09d9b99 +9e9a98a0a0a0a69b4a347e6e6c675f626d272357754f37424c454d444c71 +534f717c365d7e4d2e689cdfc0749b89a9b1dcb7b9becccbe7e5efeddfd4 +f1ded5a2aca3b396939ea6bab6aca2b19c87af9daefcfdf9f8f9dd928e87 +9b967a8e657ba8a5ac98505f644e4d4c4a474544434f404b8e3d3c2c3c3a +352f2a2420242c3c222cb8bec8dabb8361240802000a0a00040203030000 +0000000012000000250001000000000d00000a000406060e000c1d06072e +6154594f5a450000040000000000003500000000000000000840710a0000 +8957000002000000000000000000050412031b562d232018170000141600 +161e00003927002b64000001001401001f5300052d230000000006000100 +00000000050d2124170017110518000117070000021602000e0401080000 +0300000a0a100d04070b0400030700002bb500081600000807e92b530003 +022050f5591a0c1d132f00cd810089bd00c15ef0510310050a0502000002 +151316000c0405130005162723162c343c27202a3c44212d222d3f413539 +181408100001110d42cbd5dce1e9e7d7d4ddddd9d7d8dde2e3e1e0dfdddc +dbdcdddbdbdbdad983878a898786888b86888a88827f7e80838585848281 +8383817a7c837e71717d7273706b68686765616062676867696d6a6c6c6c +6c6d6e6d666768686767696b6a6518232011121109060e00080d00000305 +070d110c0a120d16222b3034383b698ec1fcb8995882aa868a707c905f79 +945756817f90969a62666084aba1a69b9a92969d999a9c9792968d959387 +887f84797e7773746a726e6d6e6f6b676a7176787979797876767a7a7979 +7a7f858a8d8f94989da0a3a5a1a6a69c8b7e79797b77737373716e6c6a6f +6b6971717179722c247e7d848275707122184867442c343c36413743674c +4a6c752f53744227669de2c57ca89abec6f3ced0d6e2e1fbf8fffceee3ff +ece3b3bdb1c1a5a4b0b5c4beb4acbca793bca9b9fffffdfafae09d9d99ae +aa91a68097c4c1c8b36b78806b6a6967646261606c5d68ab5a594858554d +47423c383b4150353cc5c8d2e0c28f733c262623312e1c1f1918190e0f0e +1311132a1310143d11190c0509121e030e1c041517171f031a291012396d +60655c6855060c1d1b1d20130e20551018081723130d071d528017040c9d +6d0c091d13171916151719170c1f1f2b1c326b4338352c2d0d0f2c311633 +3b1b0a5947134a8317131e1632211e417a15325d55121b1a192621251e21 +1a0c1b272d4042331a312d2134141f34251e1d2438272530252226191721 +1a1d27272d2a2124271d12151808033bc503152302021313f4355d0c0e0f +2c5dff692d2030284407e29b1ca9da13d874ff6416262027262823282336 +343825332a2a362023303d36263d444c352e34454c27322833474d464c2c +2823322628332348beb6afacb3b3a8a6afada9a7a8adb2b3b1b0afadacab +acadaaaaaaa9a84c505352504f51544f5153514b4847494a4c4e4d4b4c4e +51514b4d57524747524141403b3b3e3f3f3b3a3a3f403f3e424142424242 +4344433c3d3e3e3d3d3f44484903161a1115160d0912000c140404060608 +0e15100e19141c273236393d43769cd2ffc7a6648eb692957b869a698097 +595b8a8a9da2a366604d657f6966585953575e5c5d5f5a575b545c5a4e4f +464b4348413f403843403f4243423e434746464747474645454a4a4a4a4b +50565a5555595d5f62656763686c62564946484d4b4747474542403e433f +3d45454552541414727a868b807b7c291e4b67422a343d39433e48705451 +737d375b7c482f74aff5d88fb9accfd7ffdedee2edecfffcfffff3eafff7 +eebdc7bccaacabb4bccec9bfb5c2a991b39da8ede7dcd5d2c195a09db4b1 +99b089a2cfccd3bc727f846f6e6d6b68666766726370b362615363605953 +4e484243464f2f2fb1adb0bca17b652f1e2425383a2b322b292615131117 +15172c1510143d131d130e14202e131c280e1d1e1e270e27371a1635614c +4f4a594a000a2123282f241f2f641b2313232e1d150c2256831d0913a478 +1917302d312f2721222322182c283019285c2c1916111800092e3822434d +2d1c6856225c9729252e243d2c274a7f18355f56172426273330352e3127 +1521282a3838240014140b260c1d382d27282e422f2d392e2b3023212922 +222f2d332e25282b2420232816134ad512263313122523ff3e5400000022 +56ff6933293f39591efdb22eb6ea21e882ff732431292f2b2b252a283d3b +412d3a33323c2225313b32232d1f1b00000f28371d3534495e5d5053332f +2a3b2f2f32162c917d6e6873797472746f6b696a6f74757372716f6e6d6e +6f7070706f6eb4b8bcbcbab9bbbdb6b8b8b6b2b1b4b7b8b7b5b2b0b0b3b6 +b3aeb1bab6aaa9b3a3a39f97949698959291959a9d9b9e9f9d9b9c9d9d9d +9d9e96979998969696958e8734332518222833261b15182b2a19070d090f +1c1b16212e3135393e47545c7593ae66535a84bf8d7a7b5c7c8651809447 +788178909a94667268a2d3d0dccfcec4cad3d0cfd1cec2c1b6bebdb0b5b0 +b8adb1aaa7a99fa8a1a1a3a4a29ea1a6a7a6a7a8a9a9aaaaacadafafb0b5 +bdc2bfc2c6ccd0d3d4d4d1d4d5cdbfb2aeada8a8a6a09c9c9fa19ca09a99 +a1a2a2a690464a5d1c000000001a11206a554247444e454f47486c5d3f6a +813f506f68314f89aec83438340004000000000600001807010a020e0419 +0c160a0e080811272319342e41362b9585ccebdccbeadcdcdcbd71688a5f +7c9c5f4c7e9985747a978083878b8d8d8b8a8d9391b690c7ba9fbfbec2c6 +c7c5c8ced3f2c7fefbf6f7f9fee1ddeed4e0c9d5c4decbeeeee0ebedd0d3 +d3e8d8ced5f0f2c8f1eff1f1e1f2eaf4d2ecf2ead8f2f3dbc5bcf2fff3fe +f7fff0d8e5c8c8cad4c2b8d5ead1e1e2c3ceb8d9e5dbd7eecaeed5edcbbe +cfb0babdbbb1aba9a9a6b1ae989988a9f8ebf2f0f2e39f7192ac90a3aa72 +96b9c893a2a17194a1a48b9e9a81aba0beb38e8c82868c858273706f768a +a09bb38f78f7f5fbf0f8e8766361715b686841556d575c5760595d665b5a +514d52534d4f4e4355abd6f0d4d1e3543a91e3dbe7b8df64c8fff0f4fcfb +d59f566edae6e3ddeb8c5232e2d5c7cbd4b86a665e3e493e3c3a483f3041 +353833453a504337483552d9f2fcfff6f0bd603b3d2e3632171c1f312e29 +331d1d272644a7c8d2d8eaeceaeae5e2dedbdbdce1e5e1e2e1dedad7d7d8 +d8dadcdcda818589898786888a838585837f7e81848585827f7d7d80827f +7a7d8682757480777a736b68696865626164696c6a6b6e6c6c6d6e6e6e6e +6f67686a69676767686363161e18101e262d1d0f060c1e1f0f0107030613 +100b1623272e343b46535c7593ad66555c88c39481846586905e89954779 +847c949d9361655484aaa2a7989b9298a19e9d9f9c908f838b8a7d827d85 +7a7e7773756b746d6d6e6f6d696c737778797a7b7b7a7a7c7d7d7d7e8389 +8e8e91959ba0a3a4a4a1a4a49c8d807c7d787977716d6d70726d716b6a72 +73737a692a3d5f2c16171610210c155b47363b363e36433a3f62563a657a +3846655d274684acca3c4748061d0c06080419030423110a130b180e251a +241a1e191a24382d1f3b374b41359d8dd3efdfcbe9dadde7cc837b9e7694 +b77b689ab5a08f95b39da1a5a9aaaaa8a7aab0aed3ade4d7bbd9d8d9dddf +dcdde0e2fed1fffff9f6fcffedeffff4ffebf7e1f7e1fffff8ffffe3e5e5 +faeae0e7ffffd9fffffffff2fff7ffe0fdfffdebffffe8cfc2f5fff3fffa +fff8e3f6dee1e6f3e0d6f1ffeaf7fbe3f0d8f7fff7efffe2ffecffe6daec +cbcfd2d0c9c4c3c0bdc6c4abab9abbfffafefcfff3b185abc8aec3c991b2 +d5e5aeb7b482a2adac92a5a28ebcb7dbd4b0ac9798a19e9f9294939aacbf +b7cca489fffffffffff8877475867382856076907b7e7980797d877c7b6f +6b6f706a6c6b5e6bbfe9ffe6e3f5664aa1f3ebf4c6ec70d1fff6fbffffe2 +ac667feefbf9f5ffa77356fff2e1e2eacb7d7a745966605f5c665b4e6156 +5c57695c6e5f505d4760e4f5fdfff6f1c0633f433843442d383f524b4758 +45464b404e9eada9a7b4b8b9bbb4b2aeababacb1b5b1b2b1aeaaa7a7a8a7 +a9ababa94a4e5252504f51534c4e4e4c48474a4d4c4a494644464b504d4a +4d57534948514646423c3b3f403d3c3b3c41434140434342434444444445 +3d3e403f3d3d3d3f4043000d100e1f293120130910252717050905091816 +111e2b2f353b424c5964819fbb72626893ce9e8b8d6e8f99668e97477d8b +879fa6995e5c3c627c6765555a5359626160625f55544a52514449444e45 +494241433b443e3e4243433f444847464748494949494b4c4c4c4d52595c +56575a606265666663666a62584b494c4a4d4b454141444641453f3e4647 +47534a122c5429171f201a2b13195e47363b363f394541446b5e416c8240 +4e6d63305b9bc4e1535e601c331f19191528131129130f1a14221a332731 +272b23242b40372b453c4d3d2c8e76b4ccb499b3a1b1d9cf8781a57e9ec2 +8673a5c0a9969cb7a1a3a7abaeaeacabb0b6b6dbb5ecdfc6e6e7e9ebebe4 +e2e0dbf0b9e6d8ccc6d1ecdfe3fdeffff4fff1fff6ffffffffffe9e9e9fc +ece2e9ffffe0ffffffffffffffffedffffffefffffeed1c0ecefd9e0dbe6 +e1d3ecdce8f4fff8f0fffffffffff2fce3fffffbf3ffe6fff2fff1e6fae0 +ecf1ebe1d8d4d2cfd9d2b2ab8ea5ead3cecad4cf9979a7ccb9d2dda5c7ea +f7c3d2d29ebcc3bfa4b5af97c6bfe3dbb9b7a8acb6b2b1a4a4a1a6b5c4b8 +c89d81f3dddcd6e6de756a738b7d8f957287a38b8a838b84889085827973 +77767072716576caf7fff4efff7259aefff8ffd3fc70b4ddd0d9e8edd1a3 +6586f9ffffffffc28664fffff2f2f8da8b857f606a62615e6e66596e656a +67776676624d563b51c6bcb9c2bab891443143425358444d4c5b514f614d +4c4b333573766b64747c81837974706d6d6e7377737473706c69696a6d6f +71716fb1b3b6b8b8b7b8b8b2b4b6b5b3b4b9bdbab9b7b3b0b0b3b6b1aeb1 +b7b5adacb0a8a9a499949899949695989d9f9da0a19d9b9b9e9f9d9da098 +9898989897959294914c30251f2b33303e1120213742331a2111071a1e1b +2530343a3e424750564b4f3b2865a7a99b7b705e7a965d62986f5692787a +a1a37f535f489bc6cdd8d3cdc1c7d2cfcccecbc6c3b5bdbbaeb5b2b4a9ae +a9a9aca3aba19fa1a4a3a0a2a5a6a7a9a9a8a9acaeababaeaeb0b4bbbfc2 +c4c8ced3d5d4d2d4d2d0cabfb3aeada3a7a7a19c9fa5a8a2a49d99a1a2a0 +a37e36595d230b151c1c1a19286b40404d464f44524b416565395d7c5548 +597442335fa4d08b4f88002700455516121601302012161c424354060d06 +0b0b2a04000c0312221c10001229ffecb3a4d7d2d1c1e832163e00bba7a3 +001606104f00000000000000000000000000000004030000000000000000 +000088daf1ebe2bef6d7e8e1c20000006eeab80000000000000000000600 +00000700346a22001f12000d3a4539273d1b37001f9ebcf9e4fde8fde7e9 +fef7294e65217e8b525a343e4e354f50766d424fae3d64437b42473d3561 +67665f5c5f5f5d87715ca5ede9f0faf5fffff1e9c2a8656c81c8b1719191 +688a777d778c868ba1768a867d7085596f82738374967882755980907abe +f5d5f9f8f5fbfff5eaf9bf8c9885abaca16d80897c878c969c8c8b948c90 +9491928f847974676577486e83b16f6c657655e0b1f0f9fce5d6edf2f8f7 +7a93858a798195947a7e7a8f68948ccdc7c3a3b0b5b1b0a8aca4a6a9b9a9 +97b3b6beaeb4e6f8ffffffffffffffebf7bbccc3c0cbb07392bab4c1b2b6 +babfceb9eef1e1ddd4d3d2e4dfdcdad8d7dce2e2e2e2dfdbd7d4d4d6dadd +ddda7e808385858485857f8183828081868a888784807d7d80837e7a7d83 +8179787e7d80796d686c6a646665676c6e6c6d706e6c6c6f706e6e716969 +696969686665686a2d1a1717272e2a330511142a3629141c0b011115101b +262d353b414851564b4f3b2868aaab9f7f776583a0676fa1705492797da4 +a37d4c51327da0a1a59e9a8f95a09d9a9c999491828a887b827f81767b76 +75786f776d6b6c6f6e6b6d7276797b7b7a7b7c7e7b7b7c7c7e82878b9193 +979da3a5a4a2a4a29f998d817c7d737878726d70767973756e6a72737177 +5b1e5063362734372e23171f5f343641383f35463e385b5e3458754e3e4f +693625529ed0925f9e194317616e2b23250d3423151920484a5d121a161d +1d3e1810190c1b2b261904192fffeeb2a3d5ced0c9f54127500fd3c2bf07 +32232b6a13090b0d11151513110f11140811082120150707070d100e0c0c +0a93e0f5ece0bbf3d9f0efd81b0e128effd1130704130606040503110903 +091203417832032e23021945524b3b55334c0d2fa8c1fadff6e0f8e5eaff +ff3c67803f9da86d72495262506c6d948b616ecd5c83629960645a50797c +7b777475757299826db4faf6fcfff8fffffcf8d4bf818aa0e7d090adac83 +a18b8d8292888a9f748d8f8b87a1798c927f938ab199a69b7fa3af94d1ff +dffefbf8fefffaf2ffcb9bac9cc6cbc18fa4ada1a9aeb8bcacacb2aaacb1 +aeafac9f90887b798b5a8095c1807c768463eebcf6fcffebdaf4faffff89 +a59aa3939ab3b79e9d97a87fa79eddd7d5b7c9d1cfcdc3c6bfc3c8d9ccba +d3d4dac5c8f7fffffff8fff7ffffebf9c4d9d7dae8d39cbadcd5e7dae1e1 +dbdab4d8cab1aaa1a1a0b4afacaaa8a7acb2b2b2b2afaba7a4a4a5a9acac +a947494c4e4e4d4e4e484a4c4b494a4f514d4c4b474444494e49484b5351 +49484d4a4c463c393f403c403f3f444543424544424245464444473f3f3f +3f3f3e3c3c434911050e1426322e3709161b33403218200f05161a18232e +343c42474d565e5559453271b3b7aa8a816f8ca97077a67255947e84abab +8046441a576f64635a59505661605d5f5c595649514f4249484c41464143 +463f473e3c4043444145474647494948494b4d4a4a4b4b4d51575959595c +62656766646664655f584c494c454c4c4641444a4d4749423e464745503d +063f5732283940382a1c226134354138403848453d64663b5f7d5646576f +423c6eb8eaac78b530592b76823e37381d3d281c222b565a6e222a262b2b +49231a221522302514000715e3c6826b988ea0bcfb482f5a17dfcdca123d +2b3271170d0d0f131719171513171a1019102928201515151a1c14100b00 +82c6d2c2b086c6c1e1e2cc160d199bffe5281c172313100b0907130b050d +160b4a833f13413719315b62554257354d112fa7baecc9d9bcd2bfcbedf8 +3a6e9157b9c68a8e646b7a637c7b9f936671cf5f8667a16b726a65959b98 +8f8c8c8c87af9275b1e9dad6d2bfcbd4d2dbc4b98595b2fce5a5c2bf98c0 +acae9eaa9d9aad819698948fac849aa999aca1c6acb6a888a9b293cdfbd6 +ead0c3cfdddcdbf6c7a0b7acd9e0d8aababbaab3b8c2c7b7b5bcb4b7b9b6 +b5b2a69891868296648c9fce8a8980916efbb8d0c7cdbdb5d3e3f5fd8caf +abb9aeb9cfcbaeafa9bc91b8acece4dfbecdd4d1d1ccd3d0d5ddeee0cde2 +deddbfbce4edddbca9bfb6c1cac7ebc3e1e0e9fff1aec4e5dcf0e2e8e0cf +c28ea68f716962666576716e6c6a696e74747474716d6966666a6f72726f +b0b1b3b5b8b9b7b5b1b5b8b8b5b4b5b8b7b9b9b8b6b5b5b6b6b5b5b6b6b4 +b1aeafb0ab9c979b9a93979495999b999b9f9d999a9e9e9b9b9f99979697 +9a9a96939d9967292320211d1a5d08111a26323f5355300c161c1820262b +353b3f4247494757475c6f7e7675797275988c4a768f538d9a88a3bba77b +737c4fb2c8cfcecfccc0c6d1ccc6c7c5ccc7b9c2c0b1b7b6b3a7aca9aaad +a2a9a19e9ea3a5a3a3a3a4a7aba9a6a5aaafa9abaeafb0b3b9bcc4c6cad0 +d6d7d4d0d9d1cac6bdb1aba9a3a7a8a4a3a6a7a3a3a49c99a1a3a0a27e27 +564f22111612271a20406f4b433a494d4157503a5d6b4048796b424a6c54 +43448dbabf6272000f35bdcb61011c2c2b322514185a7084450008806e81 +1417242410161521104748c6bcaecee5d7d58c396e1834147765a1022743 +15911215141313120f0d0a09070b0c160e0d1d3f271b111113141518081e +a4ffdecce3f8e8e59d7a1c09025d8a9e691210333d410a19101719132018 +1371422c010e20453712072200100d1519003488fffaecc0efe8f0c39317 +283126adb9652c1100010d04000504000020000000360704000700000100 +000507080807000067d0f3edc1d6e3ccf4be7b060505beca8f053100301c +00000001000c130c0027593c000500050000000000000a1d15000080eef5 +f3b8c7e6e3e3964200040076c3ac24341000000000000000000000000000 +000000090001000c00000700050600001997ffe7e2b2dbe6d5bc9500000d +b7b3883a3a2200000004462b00000000000d000100000000000000000000 +0d000063d3f1ffffffffedf9e8b2000000259f8e48240000000000000000 +5fbcd6d1d9dae6e6dfdad7d7d4d2d8e1e1e1e1e1dedad6d2d4d9dededa7d +7e8082858684827e8285858281828585878786848282838382828282807d +7c81857d6e686c6b64676465696c6a6a6e6e6a6b6f6f6c6c706a6867686b +6b67637071451012171b19145200020d1926384e532b070f150e161c242f +383e42474c4757475c6f7e76787c767ca197558398538b9887a2baa57569 +6b3792a3a39f9d9b8e949f9a9495939a95868f8d7e84838073787576796e +756c69696e706e6e7074797d7b78777a7f7a7c7c7d7e8185899395999fa6 +a7a4a0a9a199958b7f7979737879757477787474756d6a727471785d114f +57372f372f3a231f3a653f39303b3d324b433153643b4372643840614730 +3280b8c5728b0d3056dce6761229332b2f2212185c768b5009179184982b +2d35311b21212c1a4e4dc9beadcce3d3d494467d29462b8f80bd1e456132 +ae2f33323131302d2b2726242829332b2a3a5d493d312f302d2a281527a8 +ffdcc9dcf3e6e9a88b3527207ba4b47d26244c5858141e151c1e18271f1c +7b4e39101d305545201838132d2b3133134090fff4e1b3e6e3edc69f2a40 +4e46cfd88346291316231e0e2325170e46161c10582924132413191c1a1b +1e1f1e1c18030b72dbfef4bfd1e1d1fecf8f212226deeaae214c0a513d05 +0d090a030f1613093c766123290b100b0408191b0e324534080e8af4f4f0 +b2c3e4e2e5994b07160590e3d04959351710131e1f10151a131418131618 +0f0d2010180e200b081905171905072aa2ffe6e2b4dceadac5a0090823d0 +cfa6595d450b0d071957380206040304200c16151410050608191c181026 +0c0773e0f4fff9fef2e5f5e5b4070a0742c0b477532409120c1911140e5c +abb5a8a7a7b3b3adaaa7a7a4a2a8b1b1b1b1b1aeaaa6a2a3a8adada94647 +494b4e4f4d4b474b4e4e4b4a4b4c4a4a4c4b4949494c4c4d4d50504e4b49 +4d504b3d3a40413a3f3c3d41424041454440414545424246403e3d3e4141 +3d3b494e290008121b1a16560007142230405458310d161c171f252c3941 +464a4f534f5f4f6477868081857f84a89d5b899d558c9b8ca8bfaa75605b +1b6b6f665b56594f55605d5758565f5a4d5654454b4c4b41464346493f46 +403d3d424644444544484b494645494e4648494a4b4e53545b5b5e646869 +66626b635f5b564a4648454c4d49484b4c484849413e464845503e003d4c +322f3c35412a243c663f382f3b3e354d4a365c6c424a7a6c40486751464c +9ad0dd899f224369f0f989263c4535362b1d246b869d621a2aa192a63938 +3d39212321260f3e36aa977f99aa96a6894c843150339b8bc8294d6938b4 +3335343333322f2d2b2a282c2f393130426753493e3938322d250b1691e4 +b69eaecbcfda9a8131272886b5c9953e3c6069661d221920221c2d252585 +5a492332476e623b2c461a312b3232123c85f1dcc390bdbdceb193284a60 +5febf59f61432b2b382f1c2e2e1d1147181e1661333123362a30312f3034 +3736342a0c0961bdd4c08497b0a9e3bf8d283039f3ffc3365d1f70602328 +1e1b0f181d190f417c692c39252e281c1d2c2a1a3a4736050b82eae0c780 +96bdc4d08e480d2217a7fcea667347221c1f2a291a1f251c1e221e1e2016 +1426181e1627140f230c21200f0f349ad9aeae83b4c9c3b498090f31e6e7 +c27573581f201c2c69481214100c0b240f1b2226261c202434322c1b2a04 +0059c2c5bcabc0b59cb5c2a609110b50e1d88b5d2d121a1320120a003b7f +7f6a68667474706c696966646a7373737373706c6864686d72726eb2b1b2 +b6bbbcb8b5b3b7bbbab5afadadb3b7bbbcbbb8b6b5bdbebcb8babcb7aeb2 +b5ad9e979c9a93959191959694969a9c98989d9d999a9e989593969b9c98 +939c9873212424190b46a70c0f1d2031668d8a5217161a121748494c4e59 +6a7d8c4f534f65571726447388bf905b678e6466d5a5afd5c69b7b747b44 +b6c6d2cfd6d3c5cad5cfc7c7c5cac6b9c2c0afb4b2b5a8ada9a9aa9ea3a2 +9d9ca2a6a5a3a2a4a8aca9a3a1a8aeaeb0b4b5b6b8bcbfc6c7cbd1d7d7d3 +cfdcd1c6c2bbafa8a5a7a9a9a7a9aba59a9fa19997a1a4a3a57d2c6b5620 +0c171b1c1c264a52434a484b4c405a5335576e493778793f455e5d3b3c6a +a5c9ac6700082b58666a0212302728242015406faf7f02006a3c93180a0f +1d1115191305d7d8badebbcee9e2dcf19acd1c1500a68990002c29121d05 +1013110f0d0c0d0e0f081816061009080f3e29140c0f13171c48c8d6d4e8 +d3e7f1e6ffbe858c321f418e9e520000aa969c13251719202031210fb7b1 +672c1016edefad0d1a1311150a094d3c73cdf3d7e2f8ede0e869a10f2952 +7d6a7e253511191619150c071f09070a0b101401101b1215171713131516 +15171d362e41a5e8e1dbe4ffeeeb603e2c3a4d6c78890a6027dba67d001f +0a232e332723278329000006a8cdad010c001b4130133e311e96e9ecd9fe +f3ebf074612f17198e65824c44602d140d13140a191810141713161d1c10 +18130f0a1b1c1e1616171626411f1fb8f3d1d1e2ebefd6644d0d26856592 +5b1473b17f1d0b550b15322935123f111e020e6bb8a62a00191d261e1e2d +235afafafffffff5fff05b58391e449169753c50221607150c1b203db4de +dcdfdae0d9e0dad8d9d7d5dbe6e1e0e1e2e2ded8d3d3d9dededa7f7e7f83 +8889858280848887827c7a7a8185898a898683828a8b89858789847c8588 +7f70696d6b64656161656765676b6d69696e6e6a6b6f696664676c6d6964 +6f6d510812191307409e00031014275e88884d120f13080d4144464d586a +808f5054506456162544738bc39764729b6d67d3a3add3c4957166692b96 +a1a9a0a5a29398a39d9595939894868f8d7c817f8174797575766a6f6d68 +676d71706e6f747a7e7b7573787e7f8182838486888c95969aa0a7a7a39f +aca19591897d7675777a7a787a7c766b70726a687275747b5e176560362c +3a3a312727444837403e3d3c314e462c4d6744327172353b535026265ca0 +d0bd81182c4f798381131f3726211e1d134272b68a0f037d53ad3222232f +2324271f10dfdfbde1bccce6e0dcf8a4da2d2705bea4ac184a482f3a232e +312f2d2b2a2b2b2c253533232d26253065513b3130312f3057d3dad6e7d0 +e1ece3ffc695a24e3c5da8b4640614c3b1b31d281b1d2323362616bfbb74 +3b2126feffc0233534343b2e29654c7dceedccd5eee7dceb75b52a4a76a2 +8ea044502b302d33312c294632333637393b25323b2f323737333032302d +2d2f463c4db2f3e7d3d8fcedf06d5144576d8f9baa2a7d48ffcc9e163113 +272e362f313ca2502c241ab5e1c72436274a7159375b422899e8e6d0f6ee +e6ee75673c2930ad89aa787187553a3339382f3b383032352f323a372930 +2a27213330332a292a293952302cbaf1cecfe2ebf2dc6d5b203ca084b27d +3793cd9a321c62171c3a313e1c4c1f2f152484d2c449223b3d443a354031 +65fdf1efffffecffed5d5f473662b28fa26b76473e3240343a3340a8c4b8 +b1a7aaa3aeaaa8a9a7a5abb6b1b0b1b2b2aea8a3a2a8adada94847484c51 +524e4b494d51504b45434146484e4f4e4b4a495354525052544f474e514b +3e383f3f3a3d39393d3d3b3d41433f3f44444041453f3c3a3d42433f3a48 +4a35000615130842a10407191e32698f8d5318161a1116494b5055607289 +965558546a5c1c2b4c7b94cc9f6b78a17269d4a6b0d6c7976f5b550c6d6c +6b5c6060545964605858565d594d56544348484f42494545463b40413c3b +414746444246494c494341474d4b4d4f50515156575d5c5f65696965616e +635b5754484344494e4e4c4e504a3f44463e3c4649485341025555332b3e +3f362b294447373f3d3d3d34504d31566f4b39797a3d43595a393d73b6e3 +cf90273c5d8891912330472e282828205183c89e22158e63bc3f2e2a3327 +27281d08d4cfa8c49aa5bbb0baf1ade3353110caafb723524d353e253033 +312f2d2c2d2f3029393929332c2d376c5942373533312e50c5c9c0cbafbf +ced0f3bb8b9f4f4269b9c97c1f2cd9c4c1262d1e2028283c2c20cac7844e +353fffffe03b463d383c2e28654974c0d7b0b3cac5c1d86bb4355b8ebca8 +b959633c403f443f37334d3634393a3f42313e4a3f424444404044474545 +43533d3f96cbb7a2a8d2cedc6455506982a3afbd398b59fff0bd31452233 +363b323441a757353335d5fce038463452755b35573c2092d6c4a7d2d0d0 +df6f67443742c2a1c493889861453e44443845433b3c3f3a3d423e2e3430 +2b27373738312f312f4059382395c0a1a6becfddce685c2749b199cb964d +a8e2af473075272e473e472552223624399aebe0663e56524f3d2d2d1743 +ceaca9cbcca9c0cc5265503a6dd5b6b7757f4f4639463434202380937e73 +666a636f6c6a6b69676d787372737474706a65676d72726eb8b2b6bab5b7 +b9b1b6b9b9b3b0b3bac0b8bbb8b2b2b8bab7b3bab5b2bbbcb6b5b1b3aea5 +a5aaa2939a9593969897989a9e9c9a9a9a9a9896969c9d98999d988d919d +6b3528354a45bcbb17071813289a5f4b260e121414184751586c707a9379 +60555b5e4e1c21193187a55768c193573a89a5eff6a8987c707a7abbd3d5 +c6cccacacbcdceccc8c4bdc4c5bcb5b4b4b2aca9a5a3a3a3a2a1989da2a3 +a2a0a1a3a9a9aaaaa9aaadafb1afafafb3b8c0c4cfc9cad3d9d6d1d1d3cf +cac2b4a9a8ababa1a6aa9f9ba0a2a39b989ea2a09f9e751b7e4d10191c10 +18182b56464e46454a4c44555c3c446e5b4052705c3d455b54394790b2b5 +4f000a3ca6c34a28393e33351b240c65a7d8f45700695a730009141d0815 +0d0c2696c6babac4c6c9d3c2bacad51a3806708c930c3229201413081513 +100e0d0d0f10051c090d0918150f0010442c04121a0f52efc3dce8fbecf8 +f2f3dfec6b1d374ce9e8a30000785672101f29251a161e28188ebac22d00 +0398756d00110719071109046df7d3e8f1f3fef0f1fcdea91114007ce0c3 +1b3702121315140f0b0a0a0c0e030b0e050c19130d0c0d0e0f0e0f101025 +1c41f5ccd4efddfff6e7fdf89737510943cfb34a1b0aa090770096633f30 +2143190fdce6540028a486ae0000284919000b1520caf4d0dde5ebffe7f9 +fec1451b0079cb962200050b11020814090e141618161413171b1d191615 +15121111051e1710193c1ce2bfe7d1e8e1e0f5f9ea9629037bab96000082 +9f9f3736f293273f252517a3f8ec5c005b9e8c450e0d131e17154c56e5fc +fffffffff0f9ffd1933f16019f8f8905121312101012171e2697e1d0e4e0 +e2d6d6e2e0d6d8dadae0dee0dfdce0e6e4dddad9dadddb857f8387828486 +7e838686807d80878d86898680808687848087827f888983848286817777 +7b73646a6563666867696b6f6d6b6b6b6b6967676d6e696a6e695e647249 +1c162a4440b6b20c000d0720945c4921090b0d0a0e404c526b6f7a967c61 +555b5c4c1a1f162e86a85c71cca0603b87a3edf1a28e6f5e645d9aaeac99 +9d9998999b9c9a96928b9292898281817f7a77727070706f6e656a6f706f +6d6e70797b7c7c7b7c7e8082807d7d81878d919e9899a2a9a6a1a1a39f99 +918277767b7b72777b706c7173746c696f7371707456097b59293b3f2f2d +232c503c433c393c3c35494f333a67563b4b6952333a4b3d223989b8c567 +1a2f61c8e1623c4946322e15210a67ade1ff66047e748f1b253037202a21 +1c34a0cfbfbdc7c7c8d3c3c0d4e228481a86a7af2850483f33322833312e +2c2b2b2d2e2239262a263532302b4072552a34362765fecde2eafcebf5ee +f0e4f97f375268fffeb513039171891a242d291d19212d1f96c4cf3e0317 +ad8d8713342f44333a2f2282ffd6e5e9e9f7ecf0ffedc12f370aa5ffea41 +5923302d2f31313033373c3e333637292e3933323435353432302f2a3b2f +52ffdbe1f5d4f1ece4ffffa74e6d2966f2d46a3c2cc7b69607a56a3e2d1e +442020f7ff7c1c42b9a2d123275a7e4c2e343535d7fbd0d8dde5f9e3f8ff +c8532e069cf4c455243035392a303a2e33363839373231343636332f2f2e +2c29291d332c252e4f2feec1e4cee4dfdff5fef3a43c1997cab91d13a2bb +b84945fa9a2a4227291eacfff96d1073b9ab663131363e342e5f66f0fff8 +f8fef5ebf7ffd29a4b291bbbafaf2d383a3a3b3b3a37352e91ccb1baaead +a1a4b2b0a6a8aaaab0aeb0afacb0b6b4adaaa9aaadab4e484c504b4d4f47 +4c4f4f49464950544b4e4b45454b4e4b474e494851524c4c4a4f4a43464d +473a423d3b3e403f3f414543414141413f3d3d43443f40443f343d4f2d08 +0c264444bab7100015112b9e634e270f1214131748535c7377829f836557 +5d61511f241d358eaf6276d0a6653d88a6f0f5a48d69504d3d6f796e5557 +57595a5c5f5d595550575950494848484746434141414241383d42434442 +43434b4a4b4b494a4a4c4e4c48484c4f585a645e5e676b68636365615f57 +4d42434a4d464b4f4440454748403d434745444e3a006a4d253c41323025 +2e503b413b393c3d384b5638436f5d4253715a3b40554d344a99c6d27324 +386ad2eb6e4756513a351f2c1776bdf2ff79158f839d27303438222d221c +349fcab8b2b6b5b3bbb3c0ddeb33552593b2ba33584d4436342733312e2c +2d2d2f30263d2a2e2c3b38352c4072572b35372763f9c5d8ddecd9e4e2e7 +ddf27d385974ffffcd2b1ba786992328302c221e283329a1d0df50172fc8 +afa82d47394a363c302483ffcdd6d4d0dbd3def6eac53a4a1fb9fffb4e63 +28383a3e3f3b39393c3e42373c3d353a463e3836373a3c3e414441523e59 +fdc8c3d1b3d2d3d3f9ffb460823e7affe3754338e4dab523ba7a4c362549 +2627feff862c5bd6bae7353563824d2b303030d0f4c4c4c6cfe9d8f3ffce +5e3d19b0ffdb6a38404143343a45373c404242403c3b3c3d3a343330322d +2d2b21363128335335eaa9c3afc9cacdebf8f2a74324a5dccc3127b7d0ce +5f5affac3d51363428b3ffff7d258bd4c8854f4b4a4b38284c4bced6c1c2 +d9cfb3c4e8cda4572f28e0d5c23541414242413c3225166d9f7b7e6f6b5f +657472686a6c6c727072716e7278766f6c6b6c6f6db5b1b6b9b3b5b8b2b9 +b9b7b3b1b4b9bdb6b9b9b4b4b9bab7b2bab6b3bdc0bbbbbfbcb7b0afaea6 +9c9d979496979494979b9a99999b9b9a9892959796989b9a96999a5d2d2f +3d463d361506230a103b3e433115070d0f131f677a8083767784626a5a5b +5b471624262327847ec5a27f6221242c78f2e78175727f7db8d2d3cbd2c9 +c9cacccdccc9c5c2c7c5bab2b1b2b1aba9a6a6a7a9a9a99c9fa3a4a4a3a3 +a1a7a8a9a9a8a9acafafaeb0b2b7bec6cacdc9cbd5dcdad7d6d7d2ccc3b7 +acabafaca3a6a99f9ca2a3a69e9b9fa19f9d9a6c1a7b480c13180f181b35 +544b4b49474750454e5d444264664144645f3d3c585542316ba0cd940000 +34a6bf4501152f332613111047686ba500007c6964010802051518253a0a +4b8268050d070400278bcb64124f271c036201272a201617111818181816 +13100e160f120f231b181a16001a3a371d001041aad898585763696ca9d2 +e597879f002e3530080073a091393529232021232407d3bff293aa33adaa +8300190004140002668cdebbccdccbd8d4acd8b8e0689a4b578d85353500 +1a1113120e0b080a0b020a10141a1713150c0b101212110e0d180e0854de +ccd7d9fbffebfff6cce1544e183da6e47e500084749d0fbdf24036473134 +0eae823741005e75793e1f320400101717b8d8c4ecf0fff2e4f9e3edda3d +31134eb0bd3a000106110b10180e18191917131212161815151413121011 +121e021a0c172031f5dae6fcffedf6dfebedb825195fd4e44f002997833b +27a64b0f4021360c30b66349172188706a001014150e2b1945f9eafcfef7 +fffffff3fed243352852e9c6091212110f0f11161b1970cbccdbe1e7ded5 +e1dfd7dadcdde4dfe2e0dcdde2e1dddbd9dbdedd827e83868082857f8686 +84807e81868a83878782828787847f8783808a8d88888e8d88838180776d +6d6764666767676a6c6b6a6a6c6c6b6963666867696c6b666c723b131e33 +4038310f001a0006353b412f1002060809155d737a80757784636a585957 +43101e1f1e248381caab8a6b25242c76ecde76675f655f96aaa99ea39897 +989a9b9a9793909592877f7e7f7e7976737374767676696c707171707071 +797a7b7b7a7b7d80807f7e81868d93979c989aa4acaaa7a6a7a29b92857a +797f7c74777a706d7374776f6c7072706e704e09785427373b2e2d27354f +41403d3b39403642503b385d613c3d5d553331493d2a2163a4daab0f2359 +c9e06018283c34231211124a6f77b50b0d9385821f26212331323a4d1958 +8b6f0a130b06012b92d36e205f3b321e7e1f45493f353731363636363431 +2e2c332c2f2c4038353d442b4d6861411e2a56bce3a25e5b656a67a6d7f1 +aba0ba0f484b421d0b8cbba8463d3128252628290eddcbffa6c14cc9cba6 +1d44293544282987a5eec4cdd9c5d5d2afe1c7f785bf7282b9b15e5e263e +2f3132333233373b323a3b3d403c353734383a3c3c38343037281f68f0dd +e6e1f4fce0fbf7d4f16968375ecaffa0730da996b823c8f3392b3d2b3417 +c09d57621e7e9aa26e53693e2f42413ad1e8cff1f0ffefe3f9e4f1e44d47 +3073dbee6f302f323c363b40343d3e3b383430303335312f2e2d2c2a292a +361a2f212c3544ffdde4fafeeaf5dfeff5c538317df6ff741a4ab39c4d36 +ae50124123381037bd705a2d3ca6928f15383a392d463057fff0faf8efff +fffff4ffd84c463e69ffe72e39393a3a3a3936352671bdb2b4b1b2a7a3b1 +afa7aaacadb4afb2b0acadb2b1adaba9abaead4b474c4f494b4e484f4f4d +49474a4f534a4c4c47474c4e4b464e4a47535651515655504c4f4f4b4345 +3f3c3e3f3e3d40424140404242413f393c3e3d3f42413e454f2002163142 +3c3513021f080f3f44463416080d0f121e667b84897d7f8c686c595a5844 +142226242b8988d0b0907028262e79eedf745e504e3d69766d5b5f565859 +5b5e5d5a56555a594e4645464748474444454749493c3f43444645454348 +494a4a4849494c4c4949494e555c5e625e5f696e6c696869646158504546 +4e4e484b4e444147484b4340444644424a3400694a22373d313027354c3f +3e3d3b3941394457404165684345655d3b37504a372c6eade2b315295fcd +e5671e2f42392a1a1b1e597f87c51b1ea1918d2a2e232332333f53205e92 +750d130a03002a98de7a2b6c463f2989274d4e4237363036363636363330 +2e37303330463e3b3f422548655f41202b59bee5a35e5a626563a1d3efaa +a4c31b5960583223a0ceb64e40342c292a2e2f18e7d7ffb7d360e1eac637 +55333a482b2e8ca9eec1c5cab5c6c5a8decaff93cf8392c6ba6460223e39 +3c3f3c39393c3f363e4143494541403331363a3b3d3f434c3f3173f0d3d3 +cae2efdaf8fcdfff7e7f4c71daffa97716c4b9d63edeff493948353e20ca +a864733395adb47c5e6e402e3f3d36cde5cbebe8f6e8dff9e8faee5a5542 +85ecff813e3c3b453f44483d464744413d3a383b3b34302f2e2d2b2b2c38 +1c32242f3848ffd2d5edf2e3f0ddf0f8cb3f3b87ffff842d5dc8b0634bc3 +63255332451b3fc5796a4251beadaa2f514d453041203fe8ccd3d4d8e6da +dde4ffe45b4e4c89fff83640404040403b3328125296817b716e64647371 +696c6e6f767174726e6f74736f6d6b6d706fb5b3babcb4b6bcb8bfbbb7b6 +b7b9bbbcb4b8b9b7b8bbbbb8b2bab7b6c0c3bfc1c9c0bcbcbab1a8a49f98 +929394929397999898999b9c9a999594959899999ca29e9b572b343b3b36 +3d4a503b22102b46271a09060f0c1428777d75737986825367575b5a440e +202a1f29a9a8c4787e88735c750436d18b6c758383b5cfd2d2d9cbcacacb +cbcac7c4c7c8c4b9b0aeafb0aca7a5a5a6a8a8a79f9fa0a2a4a4a2a0a6a7 +a8a8a7a8abaeababaeb0b5bcc3c7cfcdcfd7dddcd9d8d5cfc7beb3a9a9ad +aea5a7a89f9ea4a3a39e9b9fa2a09e9a611d7842090c130d172042535246 +4b48435648445e503e556f4636516042354e5d53264984c3cf103000284a +250f2e4c26151f15000068d9ea200015416718070e16021a2158051b055f +5b7a28816c360049252d000f5e544312282a1306090e1214171817130f0c +0a09160d10190310000000022c451f3018386a1506040321100d513c0000 +2e22327f54110042b7ab25251f1e1d170f08007d6b82091001e4e0b50008 +240000276d2f2dbb8f00000000060092d23b01401f0731241a3302080d10 +0f0d0b090a0c031007030f0a020b0b0b101313100e0c091d0028cbb3450d +0c1413183d97c40e3b3c2c1230003600d5eaee1179ff242e341b29008ea5 +6147153cd3dc7c0015000000242280d6cf6e2000261a0580debe2c2a2f0c +002204000a0006060a0e08181f1c1611111215150f1314120e0e12151013 +17160f1737abe7590d021d242cc3df6b41502b0003070a00d1ddc320d367 +1a2e17291825cc7152000fa0dfa2090905190f1b565685de9940343e503a +88d078284b3b280923211211100f0f1013171c4cb7d2d0dde2dad7e0ddd6 +d9dad9e0e0e2e1dcdadcdedddbd9dadede82808789818389858c88848384 +86888981858684858888857f8784838d908c8e98928d8d8a8179756f6865 +666765666a6a69696a6c6d6b6a666566696a6a6d7270723411253336343b +454a351b0b2843251503000603091e6d76707078878354675657543b0515 +1f1622a4a7c77d8791775d740230c77d5a5e65608ea6a5a2a89998989999 +989592959691867d7b7c7d7a777575767878776f6f70727474727078797a +7a797a7c7f7c7c7c7f848b90949e9c9ea6adaca9a8a59f968d8177777d7e +767879706f7574746f6c7073716f70430c744d2330362c2c2a404b473b3f +3c354639385147344e6a412f4a56382a3f483c174285cee2294f144a6c43 +2b465e2e182219010274e9fc360d305d85362830362236386c1529116862 +813087723c00512f390d22746f5f30464b35282b2e3032353635312d2a28 +27332a2d36203331282c33596c414c2f4b7b22100c0b250e0b574a0f164b +3e4c9666260d5cd2c638332d2927211611028a7c96202c1effffe1163956 +2b2f56955148ce9a050101010a029de3511e6445315e5148623132323234 +3434343739303b322c362f2430353a3e40403c37322a39183fdfc756190b +0b0e163f9ed02051584b3655215e10f5ffff1c7bfb171d230d210094b274 +633966ffffb3304f312a3051469decdf782500291d0986e5ca3d414f3320 +563d2e3b2d33333536303f443e37322f3132322d2f302e2a2a2c2f2a2d2f +2e272f4cbaef5a0e031e252fc7e878536949172a2f2f23f2fad931de701f +311a2f1f2ed57f650d2cc0ffcc36363041323a6d6893e89c41343e523e8b +d37e31594c3c213f4237383938383835352e52b1bdafb1b0a5a5b0ada6a9 +aaa9b0b0b2b1acaaacaeadaba9aaaeae4b4950524a4c524e55514d4c4d4f +5152484c4d4b4c4f4f4c464e4b4a545753555e57555759514d4b47403c3d +3e3c3c40403f3f40424341403c3b3c3f4040434a4e541e021e313a394049 +4e392212314c2a1907040b081126757d77777e8c8858675456543c081925 +1b29aaadcc818c967a61790532c67a504e4d4063726a62665a59595a5c5b +58555a5b584d4442434649494747484a4a49414142444646444247484949 +4748484b464647474c51575b6462636b6f6e6b6a67615c534c42444c504a +4c4d44434948484340444745434a2b0068452030382e2d2b414945393f3c +35473c3a584c3d56714837525e4030464f441e498ad2e82d52164c6d452e +4a62311d29220b0e82f8ff431b3b688d3e2d2f3521393e7522361f777291 +3d937e480c5c3b451a30817a6a384e5037292a2b2e30353635312f2c2a29 +372e313a24352b20252d566b42503552852b1c17162e110c574b121a534a +5ba87a39226de3d13e36302b29231c160b9386a12e3a2efffffe2d485f32 +345c9d5a51d59e050000000b05a3ed5e2c72523d6454465c292e383b3d3b +3a3a3c3e354138323d372e36313034393b3b3d3f3d4f2d4fe6c64c0f0910 +15214eb1e638686d5d425d265e17ffffff3894ff2b30351c300ca2c28371 +4976ffffba345132292d4e449beade79290730261492f5da4d515e422f63 +4838423339393c3e38464c474039373638362f30312f2b2b2d302b2e3130 +29314fbdf15c1207232a36d0f1815d70512031373f33ffffee45f2813242 +293b2937de88741e3ed5ffe24b494049363563587cd089312a323c2784d8 +8c42665c573b4d493d3d3d3c3c3a342b1e388d9079726b6166726f686b6c +6b727274736e6c6e706f6d6b6c7070b2b2babcb2b3bbbac0b8b3b5b8b8b7 +b6b3b6b8babbbbbab8b2bcbab7c0c3bfc2c8bdb8bfbcada5a89e97919294 +9394989a99999a9b9b989699939297979298a1979657323e3a39403e1e33 +4139606a451910060c110a122e60584b4f60747661675b61644b12202712 +47b1bea2877b777f7e8887625c7d7c758488b2ced0d5d8cfcdcbc9c9c7c3 +c1c6c5c2bab3afaeadada8a4a2a2a2a1a0a09e9d9fa3a4a19ea5a7a8a7a7 +a7abadadadb0b2b5babfc2d3d3d4d9dcdad6d4d4cdc4bbb0a8a8abafa6a7 +a79fa0a6a39d9a9a9ea3a4a29c5a27793e0a080e0d16264c5057434d4b40 +594c3a5b5d3d466c50343f5c4e37405b5a333a669adc721b04917f120001 +1a121b29292b1c07000000161e443300090018350d00e20f1616db559229 +e569f770e790b0101a05001b131e230c0818280c0d0e10111212110d1b12 +18084f0d0c120f09000b1e45e3000033f2e1da9ce8ed7faed6ee793e5541 +5e2a2922003114081724251c131318043acfed590d00151531000300054a +3c4b300b1168b7e86d9dba9d1a00006e0014143c15134f0f000c0c0c0c0b +0c0a0b0c0e0d0e15181b1d0b0b0e10100e0d0c0e07590000297970785090 +771d185f500f0a28312a103a051a2d490439ee96421628200374e5af6500 +002b2614000203173c2b3600001c7e5c6d2e6d454300393f2a023a1b0512 +6439140c0d0f1210231d1813111415151311161a1510101618011a030026 +000804403255346a402700091f0513121e301000133c4e400091d9661610 +180d12b3f1e81500145e2a0e111d0020462a201d364a727232565a32001a +22070d2824241014100f0e0e0e1116212da1d8d3dfe1d9dae0dbd4d6d4d1 +d8dee0e0dcd9d9dde0dbd8d8dcde7f7f87897f8088878d85808285858483 +80838587888887857f8987848d908c8f978c8a908d7d76796f6764656766 +696d6b6a6a6b6c6c69676a646368686369746a6e361a2f34373f3d1c2e3c +345d6944140a000308000723554e444a5d73756166585c5c41061118053c +a7b9a18a827f848189855c526e685a646488a2a1a3a69d9b99979795918f +94938f87807c7b7b7a78747272727170706e6d6f7374716e77797a797979 +7c7e7e7e7f8184898d90a2a2a3a8acaaa6a4a49d938a7e76767b7f777878 +707177746e6b6b6f747573713b157549242a322c2a304b4649353f3d3049 +3d2e4e54333f674b2d3852442c314645243165a1eb873422b09e31101f32 +21253434382a19051307313b63520f2b223855290ef61f2321e35d9a31ed +71ff76ed98bc202d1b1a37313f452e2a3b4b2a2b2c2e2f30302f2b392f35 +256c2a3041423b2c354564ff171345ffeee7a9efeb7eb5e5ff945c735b75 +3f3e390f4d31202c37372b212126134be3ff752d113c436429371d387a69 +7150252476c2f075a4c2a7260d0c881c363b65414180412e353535353435 +3536353734353a3d3d4335383c3e3d3b36322f26740b153e8c7e7c52917a +22206b602424455351396832414f651845f3943d12241f0980f7c585141a +605d4e323c3b4e6e575d10112f8d687637764e4c0746524122604737499b +6c433b3c3c3d3b4c443d3632333432302f3436312c2c30321b341b153e14 +1d174d3a5d3a70462d03132d192c30415739213d63725d0ca2e972221924 +1a20c1ffff320f39895a3f454f2e496845352d42507676375c5f3803222b +141c3a3b3c2d3738373736363535373aa0c9b5b7b0a4a8b0aba4a6a4a1a8 +aeb0b0aca9a9adb0aba8a8acae4848505248495150564e494b4e4e4d4c49 +4a4e4e514f504c46504e4b545753565c514f58594c484d453f3b3c3e3d3e +424140404142423f3d403a393e3e393f4d4954230e2a343c45432134403a +64714c180c02060d050d2b5d564b5164797b636453595a4008141d0c42af +bfa78f888288868d885e51695d494b4260716966675e5c5a585a58545259 +58564e474342464b4a46444444434242403f414546434046484948474748 +4a484647474a4e52556868686d6e6c6866665f59504941434a514b4c4c44 +454b48423f3f434849474e26076a412129322e2b2f494548343f3d314a40 +3055593c476e5235405a4c32364d4a29366ba7f08c3824b3a03310213424 +27383a403323101e113a436857112c2135542c14ff2e3435f874b146ff84 +ff84f9a5ca2f3b2825423944472f29374728292c2e2f3032312d3b333929 +702e303b393226334467ff211e53fffffabcfff684bbeaff9b647e688550 +4f491e5939242f3b392e2424291852eaff80381d4d5a793742243b7e6e7a +5b32327fc8f277accdb3341c1b972a404269423f7a382837393b393a3b3b +3c3b3d3b3a424346463131323436363a3b403a891c22438a7e8761a38d36 +3581773935535d583b683752687d305bffa95123332f178effd2901d2368 +6252333d3a4b6d565c12133394748546855f5d195763512f6d524050a270 +494142424341504b433c3738393834313437322d2d31331c351d17401620 +1d56476a487e543b101f38223338475c3f2a4972806d1cb2f98230283023 +29caffff401e4999684e5258344b67402c20384c757533525836092f3c25 +2f4e4b4833393839393836352f2b2681a081796d5e69726d666866636a70 +72726e6b6b6f726d6a6a6e70afaeb6b8aeb0b8b8bab1acb1b5b3b0afb3b4 +b7bbbcbab9b8b4bebcb8bec0bcbfc1b6b6bfbaaaa3a99a948f929494969a +9c9b9a9b9b999592958e8d92938f939b93854a34433c3a3e3a35386e8ca7 +48000d0b070f11080f2c2d2b2f2d28283a5b6d5d605f4b17212020254170 +799d856c64727f687c8d779a74868eadceced4d3cdcbc8c7c7c6c5c3c0c0 +bfbcb7b1adacaba6a2a0a0a0a09e9e9b9a9ca0a2a09da5a7a8a7a7a7abad +b1b2b6b9bdc1c5c8d2d4d6d8d9d9d6d2d7cfc5bdb3acacaeaea6a7a69fa2 +a7a09b9b9c9fa3a5a29955347a3a0f080d0d152e524d56434c4d3f565136 +5465413e5c5a4036525a44344657492c4f80cfd63d0080520017190d1c08 +063039230c160e0c0a284b2300101028081b00f1191800f77f6c2fd604ce +87d97a6e011c7a2e091221210b09172b100e0c0b0c101519181401161d6d +1e0d0208080608001ced3d2368eb37149aa24ddee4baae24202830353530 +23317d2c08131c191112213116150000001403739e38000720534f009fa4 +0d08d5c3a018f780f39800aef100210c150a024f00000709090a0d0c0d0c +150812180f121606100f0f0f0f1010111c1ae805005af2929498e7cff59f +e0f2af000f1f090017173f7f420000121a2b2621060c020000120e005c61 +05000e002b2b0074b21500e0d3cf76e7b3f462ebcaed07001c100a585119 +0a0f0f120f1b1614131418181612131a1c150f1115152810180589581900 +dec0c456f5bdf7276fdd003920234c2b08004f6b12080b116527190b181b +06083d000a405b47040000124f1927d41062e4eff996f4f9ec7da1f5c20a +1d201e221411100e0e0f11151a177ed3d7e2e4dedde0dad5d8d4d0d8dbdc +dedddadadde2dbd6d5dadd7c7b83857b7d8585877e797e82807d7c808184 +8889878685818b89858b8d898c9085858e8b7a747a6b65626569696b6f6d +6c6b6c6c6a6663665f5e636460646e665c291d3536393e3a34366c8ba84b +00080200050600031f2020262623263859695856543d070e0d0f16366976 +9e8a746d7982677681658457626581a09da2a09b999695959493918e8e8c +89847e7a7a7875716f6f6f6f6d6d6a6a6c7072706d76787a7979797c7e82 +8385888c909396a1a3a5a7a9a9a6a2a79f948c817a7a7e7e777877707378 +716c6c6d707476736e36227645282a312d29374e4246333c3d2f46422a47 +5c37375755392f4850392833443a234a83d8e551119d7117393b2c341c19 +434e3a232f292927476a4517323046243405ff262300ff87743ae10fd68d +df817a0e2e9049263042432d2b3a4e2e2c2a292a2e333736321f343a8a3b +2f2c37352f2c1f39ff53377afc4825abad4fddeccbc6413e464a4c4b463b +4c9a4b2531383326263343292a12111e39299fd271283d52837b12c0c024 +1be5d1ab22ff8bfea502beff053c2a38322e80262c37373636363534333a +2d373e32353b2c383939393a3938363e39ff1c126effa3a1a5f4daffaaed +ffc2132b413025494d7ab9782e1d3638453e39232d27252b43452a969b3f +3246335d592797d13015f4e4e085f6c0ff6ffbdbff231d443c3b8b844a3b +3f3f3f3b443d3a36363737332f31383a332d2f3131442c311ea2713110f1 +d1d363ffc5ff307bed05513f467257392e7f97382a27287b3d2d212f341f +235b1f306b8c7c3b282e457d3f45ed236dedf6ff9ffcfff486abffce1b30 +39373f3838363634353535342882c9c0beb5acabb0aaa5a8a4a0a8abacae +adaaaaadb2aba6a5aaad45444c4e44464e4e504742474b494645494a4f51 +5450514e4a54524e54565253554a4b565749464e413b393c3f3f41454342 +414242403c393c3534393a363a4749461a15343a3f46423a3b7190ad5207 +0c0300060a00072627262b2d292b3d5c665254523c081211151d3e707da3 +8e77727f876c78816179474a455a6f6567615c5a57565857565453535350 +4b4541454b4a464444444442423f3c3e4244423f484a49484747484a4c4b +4d4e5255585b67696a6c6b6b686469615a524c45474d504b4c4b44474c45 +40404144484a474b21166d3f2529312c28364d4046333d3e3047452c4e61 +403f5e5c413750583f2c39483f28518adfec5816a374193a3d2e341d1d47 +53402b36302f2d4a6c4616312d4425380cff363515ff9e8b4ef523e99ded +91881e3c9d542e3847452e2a364a2c2a28272a2e3337383421363e8e3f30 +282f302b2c213dff5e4288ff5a39bfbf5eebf7d5d0494851575a59544757 +a25029333b34292735452d2f1717254132aadf7c2d3f51837c17c9cc342a +f4dcb12bff9dffb613ceff1245323c342f7d2329373739373a3939384033 +3d413839412f3a3837353335383c4a4bff2e2077ffaab1b8ffeeffbcfeff +d11f364a35284a4f80c4823a294243524a452b342d292e47482c979c4030 +45315c59299bd6371dfff4f298ffd1ff80ffebff2f294e45428f884e3f43 +43423e46423d3a383a3a3733333a3c352f313434472f3522a6753517ffe3 +e676ffd8ff418bfa105b444a755a3e3589a0433433368848382c373b262a +652a39749382422c31487d4045ea216ff6ffff9efefff68bb5ffe42f3e40 +3e4338373736353635322b1869a58e8271656c726c676a66626a6d6e706f +6c6c6f746b66656a6db6b3b9bab2b4bbb9bbb1aeb5b9b5b2b3b4b3b6babb +b8b6b7b5c0bdb8bdbdbabdbdb5b6beb9aba4a997928f939696979a9a9b9b +9b9b98939094908f9397989a9a91693129342c2c261a5a809d5440170b04 +09090c0e080c24403a41413b2f3869654f433d351623181b0f0f183e708a +836a645f819370667d7a8992a7d0ccd5cccac7c5c4c6c8c8c8bdbbbcbdba +b2adaca8a4a1a1a2a4a4a49b9b9b9c9fa1a1a0a6a7a8a8a7a8abaeaeb0b6 +bbc1c6cbcdced2d6d7d8dad8d4d4ccc2bbb3abaaabaca6a7a6a0a4a69d9f +a0a0a0a2a39e924f3b7635140c0f101738524c51494b4f3f4f57374a6749 +3e495b4f37455d53373a585a293971ade98e00262d00030002041805000c +332c1d211a152a1b1d2c251901102000e2000b1ad5120036c400da82a105 +f201122b000f0f2f230f06071112100b08080c111414050d1529310e1309 +13121621160dd7004788e3906ef0c446fb5a8dbcbe002c20153551410c23 +1d0d0d0e1112161d214826111000000021400000395f2d000074b50001c5 +ecf100e1006cc23dd7f505170d0f1502680012060606090d0e0d0d1e0e0e +0f070f170f15141211111216171100e9071223e39b44589000e2020076ef +00220a0c1d332818582e0000010f0200444f22020015000800474023000a +3d3b0f083ce50000a5b98700f00c40d0000ede482208070d144509000a09 +0b07061111141519181715141b1c130f131512100010045ec70000b89362 +00e7008c8a57f221151012476a200035584407130c0b46402313220f070b +190e295842000e163a160a01ed250545f8a12d96590cf59835e5430b250f +121512120e0e0f1214181757bfd9dcdadbdedfdad9dedad7e0dbdadcdfde +dcdde1ddd7d4d9dd838086877f818886887e7b8286827f80818083878885 +8384828d8a858a8a878a8c85858d8a7b767a686362666b6b6c6f6d6c6c6c +6c6964616561606468696b6c6343111225272c291a5a7f9c55431c0e0000 +000202000018342d3638352a33656048382f25040f030600000e396f8d8a +736d64828f6454655b63677a9d99a19898959392949696968b89898a877f +7a7a75737070717373736a6a6b6c6f71717077787a7a797a7c7f7f81858a +9096999b9da1a5a6a8aaa8a4a49c918a8179787b7c7778777175776e7071 +717173746f67302972402d2c312e29414e414137383f2f3f482b3d5e3f37 +445648303b53482a2b474d1e316fb1f39c05414b1d291d2522321f16284f +493a3e3934493d404f45381b283504f0021421dc19003ed002e688a70cfe +0e24411b2c2e504531282a34322e2926262a2f3232232b33464e2b32303c +393a403226ee0f599af5a381ffd349fe669fd7dc184c3c304d675927403c +3030302f2e30323660402f3223241652772a276e905a291691cc0612d5fc +ff0ded0178ce48e3ff1329242c382b952c453a383637363632303f2f2f30 +2a323d353a39383738393a3a3117ff1e2535f4ae596fa50ef2100384ff06 +3d2b354d66645c9e6f3933333b2c236a774d322a48284436847d5e323e6d +67362b5dff0713bbd09e0fff1d50dd0a1ff162402d2f3a43783c313c393b +3332393937383837343332393a312d31312e2c16291d77e00d07d2ac780e +f804999764ff342d2e356d9757326f8d7332382e29645e413445322a2e3e +37598b7c314c5272463322ff38134dffab379f6216ffa542f355223f2b31 +3939363535353636352b5fbbc4b9ada9acafaaa9aeaaa7b0abaaacafaeac +adb1ada7a4a9ad4c494f50484a514f5147444b4f4b48494c4b4e5253504e +4f4d56534e5353505151474a55544a454c3e39393d414142454342424242 +3f3a373b37363a3e3f41484930060c282d3632246285a159482213010100 +030400041c38343c3d393039665c42342c250411080d040716407592907a +746a869064505b494c47536e64685c5956545357595959504e50514e4641 +45484a4545464848483f3f3d3e41434342494a49494748484949494b4f55 +585c5e62676a6b6a6c6a66665e57504c44454a4e4b4c4b45494b42444545 +45474843441b1d693a2a2b322e29404b3f41373a4030404b2d4463483f4b +5d5038435b4e31304d54263c7abcfda7104a53212c1f27223120172b534f +40443c374b3c3c4b40331828380bf90e2333ef2c1351e012f698b51cff1e +324e2634335546322726302f2c2724262a2f3234252d354a522f342d3836 +3a42352bf41865a8ffb292ffe65cff76ade2e72357483b5972632e463f32 +323231313135376241313426281c577c2c24688a55251899da1724e5ffff +1aff1990e45af3ff1e332c323c2f9830463837363738383836463434352e +36403842413b3835363a3e3c27ff303441fbb56a81b81fff1d108fff0e44 +3239516a655b9e713c3a3c46382e757f53342b492742337f785a2f3c6d68 +3b3166ff1221c9e0ae22ff2f60ee192fff6f4b363740497b3f353d3b3b34 +333b39393a3b3a3835343b3c332f3334312f192d217be4110ee1c08d24ff +19acaa75ff42373639709a5a33739179394138336e66493b4b383034463d +5d8e7d314b5271483527ff3f1e60ffad38a86b18ffad52ff6b28402f3639 +36343434363635301f4898957f69626d716c6b706c69726d6c6e71706e6f +736d6764696dbcb6b9bbb5b8beb9bbb2b2babdb7b4b8b6b3b4b9b9b5b3b6 +b5c0bfb9bdbdbabebcbabbbeb7aca6a69791919697969497989a9a9b9b99 +9490969593949b9f9b91764924251f1f393b759f4b486b41000008131310 +110a0e203e2f302f3939345c5e432f2a3a34463110252d16243057657b63 +8f82635c4c7c848e95a2cfccd9cbcdc9c5c3c4c5c6c6bfbab9bbb9b1adad +a9a5a2a2a3a5a5a49b9d9fa0a1a2a5a7a7a8a9a9a8a9acafaeb0b7bdc3c8 +ccceced5d8d7d8dad9d4d0c8bfb9b2aaa7a6a9a5a7a5a0a5a5999fa2a2a1 +a2a39c8f453d702e180e11121a4550504e50495441465b3b3f6652423b53 +593f38545d453a4c5d422c5686c6e237000f14060015070d1414240c0d1f +201d2c1a0d242e0c04240f000fd5bbbe39e696bc3cf795ef3ef094d41e1c +0e0f10002f1a140f0d140d0e0e0e0e0e0e0e141423252b0f0c1d190a0516 +180204f15e5a52f117286fb05ced46586fe700141a211019504b38301a16 +151a2224221c233f5c4a5e5b563b624f614d150027075ae8080e907f3900 +eb2f3bb9dfe7f9251a23271600660000050305090e100f0f071303001412 +051416181515151516181302ec290003e634042ebc00ec3d0b3cf0002710 +2c5b280000583200150d05160e0c1a3c3b150c0600003f2606234332150a +0f0feb000048b84800c13623e00ee19f0f120f171a00470c0a130d121310 +1112161516151718141b1a12121919130c17150e08ea00005e9b3700bf1e +59c804a16d0021221d660f00007a2a001d000c14133a35140211100b0000 +431700133b05041000bf5c0707f84a4a32b000e97aab767d090d3a0d1714 +131110111114192332a6d8d1d3dae1e0dadbe2dddae3dedadbe1e2dedbdd +e0d9d5dade8983868882858b86887f7f878a848185827f808585817f8382 +8d8c868a8a878b8a888a8d887c7677686464696c6b6a6c6b6b6b6c6c6a65 +61676664656c706c634a220310131a393f789f4c496c4401000409070403 +0000112f23252633342f58573a241d2820301a00121c0b1d2e586a866e96 +835e503961636868729a97a29499979391929394948d888688867e7a7b76 +747171727474736a6c6f707172757778797b7b7a7b7d807f81868c92989a +9c9da4a7a6a8aaa9a4a0988e8880787576797678767176766a7073737273 +746d64242969372e2e33302c4b4b423c3e364131364c2f325d483b364e52 +382e4a523a2d3f5036245285cceb49062d362d263d292d3434432b2c3e3f +3f4e3c3047512d1f3a23111cdfc3c43ce999c244ffa2f944f69bdd2b2e24 +2a2d17503c383331372d2c2c2c2c2c2c2c32324143482c293c3b2c243431 +1a19ff6f6b63ff2b3c85c063f2536b8bff1534363c283069675652403e3b +3e41423c363d5b7b6d8687836e9d8a998143254a2371fa171d9f8f4903fa +3d47c4e6edff2d24343e331b911f323c3a37373836322e2430221e36352b +3936353536373738372f1cff3c0414f547224fd80dff4e1849ff0a433155 +8c5f2d219970314a3d3140333140646441383833367e613f57715b3b2d2d +2bff0e125fd26205d74733ed1cf1b1252d2d39402578423d453d423f3c39 +3a393935343536333a39312f36363028332e2721ff0f0b7bba5207d4306a +d714b3830c3f4542964d3240b6622c4a2b333b3a615e3f2f3d373225237b +5431567c41373b11d96f140fff53533ab809f588bb8591232c592e393836 +3534353738383a3ea3c6b1a6a8afb0aaabb2adaab3aeaaabb1b2aeabadb0 +a9a5aaae524c4f514b4e544f51484850534d4a50504d4e53534f4d4e4d58 +5751555550524d4b4f53524b46493e3a3b40424140424141414242403b37 +3d3c3a3b4246423f3111000d1721454a81a7514d70490705050807040300 +0214322729293538335951331e17262133200118241124335d708c749c88 +625035585251494c6e656c5b5d58545255565757524d4d4f4d454146494b +4848494b49483f414142434447494a4b4a4a4849494a49494c51575a5d5f +626a6c6b6a6c6b66625a544e4b4342454b4a4c4a454a4a3e444747464748 +4141112061322c2d34302c4b48413a3e384332374f31396251433d555a40 +3652584034485940316095dcfc5712373f342a3f282a3333452d2f414240 +4f3b2c414a261a38221322e8ced04bf8a8ce4fffaaff52ffabec3b3c3135 +351c553d38312d312a2a2a2a2a2a2c2c323243454c302d3f3c2d2636351e +1eff77736dff364792cf76ff647a97ff203f414732386e6a585343403c3e +43423d373e5c7d6f888a866f998490753819442479ff2a32b29f5612ff57 +5fdaf9fdff382e3c463b249a293939353435373736332a36272138372c3f +4547423d3938393a3a29ff4d121efc4e2d5ee419ff56204fff1047365b91 +643120956f3350473e4e43414d6c6a4439352c2e765b39536f5d3e333737 +ff1e2471e16f15e55742fd29ffbf32383843492c7c423e443d42403b393a +3b3937363738353d3c34333a3a342c37332c26ff141489cc651be7447cea +24c19015474b48984c2f40b6632f4f313a424168644534403c372824784f +2b4f763f38411ae67e2726ff525047c50bf38bc8a2a924265c333a343233 +3435383833302a849878636170726c6d746f6c75706c6d7374706d6f7069 +656a6ebab1b4b4b1b3b9b2b5adafb7bab2b1b6b8b3b4b8b8b3b2b6b5c0bf +babebebcc1bbbcbcbbb5aca6a397929296989492929698999b9d9b969394 +95928d93988f7c4c2c212f1e27657f4d6159674a141c0a18232218151112 +1e3f4044353d444677664e3c3f5e6b8062563f1515190f1d4565b1966f6e +51485c8e95969ecdcbdacad4cec8c4c2c1c0c0c3bbb8b9b6afacafaca9a5 +a3a3a1a29f9da0a3a4a3a5a9ada8a9aaaaa9aaadafb6b9bfc4c8cccecfd2 +d9ddd9d7d9d6d1d3cac2bdb6aea9a8a6a4a7a6a1a5a4969ba0a1a0a1a39d +8e3d39662616111619235051514a564856433e5c3f37645646364b5c4531 +4a6152333550602d3d73b4e2ad1a09110b0b000a0b1500220711120c0012 +00191604151c142e2724101f4325482f49324c3b361d364c262a3a5f7731 +003e17110a03060a10161a1b1915120d1a091f242817100e1d171e4e7230 +b0add170c4d6cd68e8e68c6ba99089656a6c370e1b25253635241c151215 +1c252b08113f827c6f838c81963d0013113d2e4bf4dbd888f7efbfb5f2f9 +822d48b3383c28200f026a000a050202060a0c0d0c59896f5d7946000d0e +121417181715151b00ceefec52f5d2e05ff0ade560f7b9f30c202f244900 +0000100008190a2112111807180e513e47432b303b2f3f16030f231e12e4 +82934beeb99c94f4d5e5bfe964302c3533170648100c0d010b1516131517 +1513121618141a19141721231c1e171a1019e1706f29d99b7db3f3cae804 +eae529152202350a0100000000010a0a0010111e413c2e3b44442c4f453c +390c00101f0f7df29456eeb2b46ff9b1f94af5f4b120270f1f1815130f0e +0f0f110d231791dad3dbe9e4e1dadbe1dad6dfe1dbdce2e5dfd9d9e2dbd7 +dbdf857e7f817c80847f807a7a84857f7c83837f7e84847f7e82828d8c87 +8b8b898e8b8c8e8d867d76736865656b6d6a686869696a6c6c6a65626365 +6260666c63532308041a0f20627d4c60576548141d0a1018140a0701020e +3031382b343f416f5c412e2c49526446392600040c0518446ab6976a6442 +313e6b6d686d9996a394a09c9692908f8e8e91888586837c797c7976726f +6f706e6e6c6f72747375797d7a7b7c7c7b7c7e80878b8e94989c9c9da1a8 +aca9a7a9a6a1a19a918c847c777877757877727675676c71727175777166 +1c276333302f322e2d5049463a443543332f50332c5b4f3f3146553e2740 +5847282a445622356fb3e8b92c212f3032212a293319422730312b1d3014 +3633212e2c1f39352f1922411d3c213b264538351b35502e384c75924c1b +5934332e2a2d2a2d3238393733302b38273d4145342e2c3b2f33618343c1 +bcde77c8d8d16fece38b72b9a8a7868b885226313e3e5254453f3631323a +4147262f61a6a49bafbab2c76c223e395d475dffe3df91fffbcbc0fafe85 +2e4bb940463630251f90213c3b3a393a3a38332e75a18777976a28363231 +343535343231360fe4fffc60ffe0f375ffbff66fffc2fe19334a46742933 +314b233d4b394d3c383e2d3e357968757a6669726270432b3242392af795 +a45effd1b0a6ffdfedc5ef6d3e3f4f533c2e75403e3f313b43423b3b3a37 +3231353a363c3b33353d3c34332c2d232cf4838340f0b08ec3ffd6f410f8 +f53d2d3f205c3d3b3a343630323a35283b3c4b726f5f676d725e837e7774 +45303c452c91ff9c5bf1b6ba73ffb9ff52fdfbbe34402b3e3a3937363537 +3839313e2590c7b2abb4b2b1aaabb1aaa6afb1abacb2b5afa9a9b2aba7ab +af4f47494a46494e484a43444d4f48464e514f4f52524d4c504d58575256 +5452554d4e5252504946453c3b3c4143403e3e3f3d3e4041413c393a3d3a +393f473e331100001914286b8854665c684b16210a0d1211090602051133 +343a2c353c3e6c53382526444e63453d29050a130d1f4a70ba9b6e653f2b +33585347456a626b58645d575353525151564f4c4f4c4542474c4b474747 +4746434344474645474b4f494a4b4a49484a4a4f5053565a5e5d60666d71 +6b696b6863645c57544f49444749474c4b464a493b40454645484a444209 +1d5a2c2d2f332f2e5047443a4437473632523732605646384c5d452f485d +4d30324e5f30447ec3f8c7382b3936372229273117412632332d1c301234 +2f1c2a2c213b38331e294c2a4a2e48324d3f3d28435c3b455a829d572662 +3a352e2728272b3336393733302b38293f454938302e3d3338678a4ac9c3 +e681d3e4dc79f7f49d82c6b4b18f94935d303c454356574c453b34363c44 +48262f60a6a39aaeb8aec1641834305a4b69fff6f2a2ffffd7d2ffff9840 +5ac54b52413d332d9d2e453d3736383a37343079a58b7899682438424643 +403b3836353f1bf2ffff6bffe9ff82ffc9fd74ffc7ff1f3a514f7d32382f +47244152435848474b38473c7b67737560636c5d6c402b34474236ffa4b6 +6dffdbbbb2ffebfad3fd7c4b4d5c5e45367a423f40333b43433b3c3c3834 +33373b383e3d36374040383831332932fb8a8c4effc1a0d3ffe6ff20ffff +4837472861403c3b353833363c3b2e4142507672636a6f725d7f78716e3f +2e3d48349cffaf71ffb7ba7fffbbff55ffffd1353a2e413935333334373a +3b313916749f7d6b7273736c6d736c6871736d6e7477716b6b746d696d71 +beb6b5b6b9b6bbc1b7afafb1b6b3b4b3b4b4b6b3b3b5b5b4b7b9bbbbb7b4 +bbc6bbbcbbb7b5b4b0a99797989795929395959698999a99999999968f8e +94927d602d271f251a1a43566063412732312d425883382a16160b244538 +393a3e4b2d7048434180caa767727f4a441a1f190a2b458673636c396b9a +9297919dd1c9d1cbd1c7c5c6c1c3c4bcc0b8b2b1afaaa8aaa6a5a5a8aba9 +a49e9fa0a09f9fa0a2a5a9a8a7a6a7a9adaeb8b9bab8bdc9d4d5d8d6d3d5 +d6d9d9d8d6c8bdb6b1a8a7aba7a6a5a5a2a09e9c9f9e9da2999ca47e3e5a +632c0d1f1e1b32534f51474b4459433e4d5a2e445953323c5a5f3e344f62 +4c24476654285c91cefb370f160b38041414121112131311070f0e101713 +0e191e2b2234292a32505e5d5b606f796b564653483b482d3fa98622480d +0f1b080013181816151513120f12131b251b0f1115161b1f7c81656c6f84 +8295aea799949a8c898a7e7776746ab58204211a271e2f382220180f1d12 +0d0a0600000000000009150e120c5d886c6c7878637367715676776c766e +616d726f79a56066000a0a000000000000005ef4969fc9b200020009091e +101c22182a5b595c655d626180736663574a4952535e725c498d11420d0a +080a0f1415141210131b1c120d0e0a11131017201c0f22183b4c3e506144 +56647530616246525c66625c5d4161433829160a080b0e0d09151d212214 +0c160d1519181d2628241c2f272b4938483941425766224e56403b464c48 +484c4f4d6d1e02150c0717010f0a041113080100070809090a0806060a17 +0e221f1c2c2831202c4a4633374a162b332e33403c2836250900020f0004 +0a211867d8e4e5f2d8dadddfdeddddddd3e2e7dddae3e2d8d4d7dadad987 +817e818281848c807a787c7f7e7d7e7c7e7e7d7d7f807f84868a8a86838a +958d908f8a88868079686b6b6c6b6b6e6f6a6a696967666464656461616b +6d5a400d0a0510070b364b5558361c282721374a7327190406001336292d +3035442766372f2b65ac8745505c2926000805001e3a7c655157204d7669 +6c646d9f959d989f9593948f91928a8d857f7e7c7775767270707376756f +6a6b6c6f6e6f7072757b7a7978797c7e808a8b89888d99a2a5aaa8a5a5a6 +a7a7a6a2968a857f79777d7b7a797673706d6b6e6f6e766f747c5b1f4969 +412c3e30232e4945473d3d2f4537354451253e534d2b365359382e495c45 +1d405c4a1e518bccff41202d2757222a28282a2c30302f2429262529221e +221c28253d343431434033282b3f4f4a3c374c4742564156c0993359202a +3e342d31303132333332312e31323a43392b2f34302a2a868e77807d8876 +7d8f89807f867c848f8d8e939086cf991a37324236424a36342f2839302d +2c292220201b130d2335323a347ea37c71767561736a7456736c6170706d +7f858084b27386213f3c2d2b38392f1f1576ffa1addfd3123529302d3e2b +34392f41726f7075696b63796a62635e535057566178685caa376e3e3b39 +3a3e41403f3d393c44433a3538363e413e444d46364436535f4b5a674a63 +7280376461404a546263657361896e5e4f3e37383b3b3931383c40413633 +3e353d3d37373b372f26372c325041514247465965204c543e3945505052 +5a6061853c243c383747313b362d3d4039342f353435373634322e30362a +372f2631292d1a2949463335450f212b2b36484a3d564e322a303f303333 +402966c1beaeb6a4a8abadacabababa1b0b5aba8b1b0a6a3a6a9a9a8514b +484b4c4b4e564a4442464948474a4d4f4f4e4e504e4d4f5152524e49505a +4f51524f5152504b3c3e4141414042423d3b3b3b3a3b3a3c3e3f3f404d50 +3e290206040f09103d515b5e3a20292823333f641d12020600193b2e2d2e +303a1b5a2d24205aa27c3b46562424010e0e04273e7d654f52194266534c +3d3f6c5c6159605654555254574f544c484947424044434444494c4d4742 +444444434142424549484744454546454f4f4e4a4f5963656c6a67676868 +68676659514d4a45464c4a494a4845424240434342493f434b350b3f5d38 +263930252f4843453b3d364e3b3847562a425751323a5a5d3c324d604c24 +476553295f97d9ff4a27332a5922282726272b2e2e2d222826262b251e27 +27332e423635364a4c41393d4f5d55473e534d4a5f4c64d0aa456b2f3342 +332a33323533353534333033343c453b2e2f2f2d2d308f9781898693848d +9e9586848f868b9594949b9b91dca728443c4b405056413d372d3c322c2b +251e1b18130d0b2434323a3687ae8c858b866f7d71795e7c7a6f7e7d798d +949098c58493294545332f39362b1b1278ffa3adddcc072e2f3f3b49363e +4137497a7a7b82777a72897b706d6658565d5f6a84766ab84477433f3d3e +44474745443f4248483c35373941413c414a423343365765546475566975 +843d6b694c5963717576816c93776758463c3c3d3e3c333c41434437323d +353d3d39383e3a33283a3238584a5a4b535266732e5a624c47535c5b5e65 +6a6c91462d433b3949313e393140453d3730353536373735312e31382b38 +2f28342e3b28304f503b3a4b162c3a363b4a4b3e51462c262e41353b3942 +2154a191767a686b6e706f6e6e6e6473786e6b747369686b6e6e6db9b5b5 +babbb9babfb8b3b2b7b9b7b6b7b1b3b4b4b3b6b7b6b4b9b9b6b9c3c6c0b6 +b7b7b6b4b5b1ab9b9b9895918e8e8f939597999c9b9a998c94948c8c8666 +40251f1a24202247544e4929203a3a2e373f441a26432d130d3b3f444740 +3b3b6035485ba59f31246a905c3238492a3420267768506268989f909592 +a0d0cad3ceccc6c9c8c0c1c5c1c0bcb6b1afadaba9a8a6a4a5a7a7a4a19f +a09f9f9fa0a3a6a7a7a6a7a9acb1b3b8babbbabfcad2d3dad6d4d3d7d7d8 +d7d3c8bcb5b1aaa9aba6a4a3a1a2a09e9da3a2a2a69f9fa57d3462582009 +1821213c584f50464b455543364c523d3952573b394f614b324161573c38 +5e633b3b75b7eaba141b121d111717141414151312131209050b0b081617 +084c253a364a395e6e7d8589887a675e514d46453e419f6b22110a1c0100 +4311161614131211100d1012192116090c0f0329047b758778818caaa3bc +b7acb4aea9a9a38d7c7a7b648d891d2b0e2b2e2532272a281c210e11110f +0c0d0f0e0c1b0d1b1215163b957e7f798f8a817f7d7a8e8e878d8575747b +5885dda8290a0119030400512b241625a5637a687c3228551d03130b2627 +180779616363635b747e7e77798691918b87626a665eea4a20130f0c0b0d +0f0f0e0d0a121c1e150f1109141611121819121612275e8758626e5c586f +51737b767671655453555492c548260b0a1517110b1d1c17181e160f140e +1215151a1f2120242819134e59565758515b6957636a6f6568675e575652 +4fd9382c1e09001605021e101200060d010a0c0d0d0b0a0c0f1d1127241d +265a42414b4753504655585659554f47413f3c366c3d5115000f150d191c +49c4dae2e8d7d8dbdcdcdbdad9cedae1dedfe4e5dfd3d6d9dad9827e7e83 +84828388817c7b8082807f7f797b7c7c7d81828181868885889295928a8e +8e898786817b6b6c6b6a6767696a6b6b6b6a696665645862666367644825 +0a05020f0a0f34443f3a1a112a2a1c252d330813301b00002a30363c3633 +3254233040877d0d00446a3a111a3015200f16655339454a747967686270 +9e98a09b9a9497968e8f938f8d89837e7b79777572706e6f72726e6b6b6c +6e6e6f707376797978797c7f82858a8c8b8a8f9aa0a3acaaa6a5a5a5a5a4 +9f9489847f7b7b7f7a7a777572706d6c7273737b75797f5b1754623a2c37 +2f21304844473e3f303f3830464c37334c513533495b452c3b5b52373157 +572f2f6bb1e9be1f2d2a392b292727282d2f302f2d2a1d1719140f160c00 +4b2a443c4420303030333c413d353b3c444b545254b0782f20203a27266d +2f2e2f303131302f2f3231383f3225282c1a33097f7e988b8b868e74837d +7786838692988e878d927aa39c3041244344323e333a3a333a2c31343331 +323432292d1c302e363957ab867d70817a70706c65756e68767d7d868e67 +8be3b845393649353d34966c593f3ab068827c9d6260884c2b34233a3829 +1a8c74746d695c695d5757617584867f7b57646867fd67443e3c39383a3c +3b3a39363b45463d37392e393e39393f3d35342c3b6c905c626c5d566640 +585a525455534c56656cb0e56546303545473e37423d36373d39373e3a3c +393532312c2528291814515c5a5955494f59414b4e534950555353585a59 +e548423c302b44352e4a393b2d3640333838393633302e2e39293932262b +5a403a413d4945353e3a35353535363b40485391647b43234145393c314b +b1b5adada3a6a9aaaaa9a8a79ca8afacadb2b3ada2a5a8a9a84c48484d4e +4c4d524b46454a4c4a494c4a4c4d4d4e4f504d4c4f504b4e585a564b4e50 +4e4e50504b3d40413f3d3c3d3d3a393c3c3c3c3b3c333f45454c4b301203 +04020e0d113847443f1d142b2b1c211f23000c2c1b0200303336382d2623 +441726357c710000375f310c1a341c2b17176350333f3f66644b473a4069 +5d615a5b5558575152585454504e49494745434442424348484845444445 +43414243454745444545464a4a4e504d4c4f5a61636e6b68676666666563 +5a504c4a474a4e49484644444242414747474e45484e35054b572d25322f +23324942423c41394b3e344a503b37505539374d5f49303f5f583d385e61 +393b76bbf1c725312c3a2a292625262a2c2c2b2c2a1e191c19151e1a0b53 +2e453a44243a3f444950534c414241474e595b62c08b42332e442a266c31 +323333333332313033333a413528292714340d8887a09294929d86948b7f +898a8c989e938d949a85b0ab3f4e314f51424e414744393f2e30302f2a2a +2c28242d1f33313b3f63b999928392877a77726a7b7977868c8a929d7aa1 +f9c8513f3c554044369366533b3bb26b847a9656558954333d2d43403120 +927b7c79776e7a706a666e7f8d8e898765727776ff755045423e3d3f413e +3d3c393d47483f373b343f4039383c3931322b3c6f97656e776157694661 +65606464635b657278bbf27353393c494b433a48423b3c403b363c393b39 +3434332e292b2d1e195a65656560545b664e595d62585e636161656565f3 +574f46352e44352f4b3d3f323a433438373a38353330313c2b3b32252758 +41424c48524d3d46444041403e3e3f42464e8a5f7743274a4f42402c3d93 +8b797367696c6d6d6c6b6a5f6b726f70757670676a6e6e6eb4b3b5babbb9 +b9bbb5b3b4b9bbb7b5b5b3b3b3b5b4b4b5b5b6bdb9b3bdcdcab6b3b7b8b6 +b4b6b3ac9e9c97928d898a8b9093959899999897969b988f8b7c5425231e +19231c1730331f33332e2b1a1a363b3c50607b38261528271a1115193222 +41454d9c88224a9dc0474132424723242b6b5a444f7b9b87919695a8d1ce +d7d1c7c5cbcac0c0c7c6bfc0bbb1aeb2afa7aaa6a2a2a4a5a4a29e9f9e9f +9fa1a5a8a5a5a5a7abb0b6b9babdc0bfc3cbd2d1dbd8d6d4d7d7d6d4cfc5 +b9b2afaaaaaba8a5a4a2a4a2a2a1a0a0a1a59f9fa17529724f180c102321 +44594d4f454e454d4733474b513044584a393f5d5d38335661592d4d6b56 +254a8cd4fa650020081417171414141513121c1508040b07051014392135 +3436435768839ca4a29f999181686148384d2a743f2c1a1c05090a001013 +141211100f0c0e0f11191f10050a0d0f07076f816c867f8d9aa6aeb3b0af +b1aeaeab9d908a876b9240285c37351b27302a2d2f24200b101113131619 +1715061d100f0000208b848e869fa286949192959593918c7c6f76775b81 +73150e060a070b0094756e71044e121e044981768c27020a00150a100067 +727a7f7e7e7695a0988e919b93807a8b805d50bf620615100e0e1011100f +1713162021160e0f131c1e120a090a0a24071f7781645a6b696483939da4 +ad9a807c6c6459575d9925120c16160b0a12181614161917161a120f0f12 +14121213091a361f4a5a486761615e6988868d9e938f8474675b4e43cb47 +0d0f0b051509090a000c080307080c0f0f0d0b090b0e00120e0d181c3c4f +4058505c696e868b9e928880684b424626556768680b26000b0b1b26a1d0 +e2e1d9dadbdcdbdad8d7d0d5dce2e3e3e2e2d6d9dcdcdb7d7c7e83848282 +847e7c7d8284807e7d7b7b7b7d7f7f8080838a88828c9c9988878b8c8885 +84817c6e6d6a67636265666769696968666361616a6b66665c360a080401 +0e06041d221024241f1b0a082429283c4d6826140518170a03080f26142d +2d32806800287b9e2624182e3613151958422b315b765e656a66789f9da5 +9f959399988e8e95948c8d887e7a7e7b7374706c6c6f706e6c6a6b6d6e6f +717578777777797e83878b8c8f908f939ba0a1adaca8a6a5a5a3a19b9186 +817d7b7c7f7c7b7876747271706f71727a74797b530e6559322f2f312038 +4942463d4231393c2d41454b2a3e524433395757322d505c5426465f4a1b +4386d3ff700c35222e2b29282a2d2f302f362d1c1316100a0f0a2f203939 +3534352f373f4141424547453f4e4a465f32774235303d2e3632212c2c2d +2e2f2f2e2e303130373b2c1e2428241008708679917f7b6e665f6063666b +727f8a8c8b8f9479a3503a704d4d2f353c363d413b392930343636393c3a +341b3024271813329787877584805d68625d5b585a657074757f7e5c847f +303e3b3937423dd6b3a2981c5c1a291a6cb3aec0572b2b1526171b0a727d +817f7b735b5e5d58545c6b675a5a73725756cd78243d3d3b3b3b3c3c3b40 +3c3f49493e3635363f3f342927272439192c80856659685e4e59564e4f5a +514b5c5f64616366a63c32313e433b373e3d373335383a3e443e3933322c +241d1b0d1b37204d5d4c675b5448495c504e5e535454525353514bd45725 +3032324239353621353430383838393836332f2d2b0d271d191e213c4d3d +5043474a434c49564a464a4334384a396f858a8e3655253731342f96b5b7 +afa7a8a9aaa9a8a6a59ea3aab0b1b1b0b0a6a9abacaa4746484d4e4c4c4e +4846474c4e4a484a4a4c4c4c4d4d4e4c4e53504852615e4c484c4f4d4d4f +504c4041403c3937393939393c3d3d3b3b3b3f494c4a4c431e000103010d +09062128152927221c0b08201f1d33466424140619180a0000051a092423 +29755b001c6f941f2019303e1d1c19543e24294e644848473c486a626860 +56545a5951515a5953545349484c49414642404045464846434344434143 +454745434345474a4f5050535251535b61616f6f6a68666664625f574d49 +48474b4e4b494745464446454445464d474a4c2d005c4e25282a32253c4a +40413b443a44423145494f2e425648373d5b5b363154625a2d4d6954244b +90dbff741038232d2a2927282a2c2c2b352d1d161a151017133825383531 +313638445256555555565147504947633d8855463d443033311f2f303131 +3131302f313232393e2f2223211d0f0c758c7f9787877f7772706d6f767c +89919291959c82ad5d467b58573a424a444a4b413e2b2f3032303235332e +162e23271c183ea598978795906b756c6767686b767f81818e8e70978f3b +423f4343493ed4ae9e951c5d1d2b1866a8a5be5b2f301a2d1d1f0d768187 +8986836c716f69636c79746767817f6564da852f4543404041423f3e4440 +414b4b4036363a4344362b2725233a1b3287907267736251636561646e64 +5b67686c6c7177b74a3d3a46483f3a41433e383a3b3c3e433d3833312e26 +1f1e101f3c2556665771655d54566b605f6f646664605f5e5a56e3662f37 +3735453b3839253937333c3a39383a3835322f2f112a20191e1d3a4e445b +4c50524d5a57645854574b3a3949376c838b913c5d2f40342e1e788a8274 +6a6b6c6d6c6b696861666d7374747373686b706e6fb2b3b4b7b8b8b8b9b1 +b0b3b9bab5b2b2b9b7b6b7b4b1b0b2bebeb9b7bfc7bfb0b4b9bab7b5b5b2 +ae9f9c97918c888a8c8a8d919395949492948d87837c643c161d1e1e2518 +0f2325342c1c1a231a18283c3f6b68601e232320213c342d20434d44393c +768980b0d66b2e2c4344354b29334b424d54899b92969b9db5d2d2dbd3c7 +c4c9cac2c4cac7bac0bcafaeb5b3a7aaa6a3a3a5a6a4a29e9f9e9e9fa2a6 +aaa4a5a5a8acb1b7bbbec2c6c5c9cfd3d0dad7d5d5d8d7d7d5cec5b9b0ac +a9aaaaaba9a8a6a7a7a7a79d9f9fa39e9f9c6a22814814130b24204d5a4c +4d434f48464e383a495a3534525942344f674a31405f673c385f6d3d2e68 +b3e1d21611141219171413131512141914090a140d08112aff20454a3c46 +4e889ba8aaa29e9d9b9e706b684c4d44ff1e0e0d19000422191011111110 +0f0d0c1012121b1f1106100f115af24996858a859c87c2b8c6c8b1b4ada3 +a4ada9998e91e8114564314049413f342f2f281d0a0d0f101011130e0b10 +07151507b522af86929c9b95899da6b0a9adaca29a8e7f836e70867b1501 +11041300002816001a285c2517102024143e00000605130a491730908a7a +69937eafbebbb0aba9a5988b967c7769437711110d0d0e10121212171111 +191c140f11191d1c110703070b0944006959606a666c88a3c0c2c5cbb5af +a183755d5f4eb7151316140a030c180c1320211613181b1e131217170e0b +101d082d10345f4c5760695f799faaaeb9b8ae9e8d7b654e3dbab30a201c +11050011041a0b1205020c0d0b0b0d10100d08150d0f192a024c4c3e4855 +5e7e9aa8bec5bbb3ac926c50453a2b3d0e030f08090a0a191478cbdbdadd +dddddddddcdad8d8d6dce5e6dedadedcdee0e0df7b7c7d80818181827a79 +7c82837e7b7a817f7e7f7f7c7b7d8b8b88868e968e7f868b8c898483807c +6c6c686461616367646466666663605e625f5a5b58441d000106060f0400 +1216251d0d0b130a0615282b54534b0b10110e0f2a251e11343c3022235b +6b6290b64d11132f34283f1e2136293034657568696d6c85a1a1a9a19592 +979890929895878d897c7a817f7374706d6d70716e6c6a6b6d6d6f72767a +7677777a7f84888d90949695999fa1a0acaba7a7a6a5a4a29a91867e7a79 +7c7e7f7f7c7a777776766c707078737976480774522e362a321f414a4143 +3b45343243323443542f2e4c533c2e4961442b3a5a6235315561332762b2 +e4db25242c2a2d2b2a2c2d2f2f2e31291b181d140b1020fc1e4649332e22 +42413d362e2d323a4b345164585b42fc17142a452d3545362c2d2d2f2f2e +2f2e323130373b2a1e25262260f247978d8f7e7e4d6f555c624f56575b6c +8894929198f21e537745575d4f4b4240413f36282d3133333436312a2a1c +282817c22bb384868576624a56585c5151585d69767783706c85852e2e44 +303f2a2666533141406b30252844554b722c1d261a2214511c3594887059 +7e55625f5c534f5458585872666d694d8529373a3a3b3b3d3e3e403a3a42 +443c37373c3f3b2f211b1b1d174d016d5b626c5b4d535961504b534b5c67 +6266575e4fbe2831383c3733394431363f4038364045483d353631221918 +21092e1137625057595840495b564d525251515355544b44c4c32241433e +352d3d2d41323b312f393635333536332c252e201e2330044b4a3f45453f +4a534d57564e505a56433a3f423a5026223433383933372575babcb2adab +abababaaa8a6a6a4aab3b4aca8acacaeb0b0af4546474a4b4b4b4c444346 +4c4d484547504e4d4e4d48474754544e4c535b5344484d504d4c4e4d4b3d +3e3c3a3736383b37383b3c3c3a3939413e3d41402d080000040611060018 +1b2a22100e140a041121244e4e46070c0f0c0d2620190a2d35291a1c5260 +5785ab430b0f30372f4924213124282955624f4a49415469666c62565358 +5953555d5a4e545447484f4d414642414146474846434344424144464944 +434346484b505254585857595f6260706e6969676665635e574d4947484b +4d4e4d4b4949494b4b4144444b464a4723006b47232f253324454b3f4139 +463d3d49363847583332505740324d65482f3e60683c385e6b3c2f6cbaeb +e02a282e2a2e2a28292a2c2b2b312a1d1b221a121628ff1f41442c2a234a +4d4f494341444b5b3e5461565c4dff29222e44282f41342d303031313030 +2f3333323a3e2e2226201a5ef44c9c9093858a5c836a70705c6464677790 +9b9996a0fb275c7e4c5f665c594f4a4b453a2a2c302f2d2e2f2a22211524 +2617c834be91949587735b68686c61666f727c84848f7d7d959135314739 +4a3027654e2e40426e34282a424f456e291d251d2516531f38978d79648d +677673706664696a68678072787559923540403f4041434141443e3c4446 +3e37383e413e31221b1c1f1a520976676f7969555d687569646c5f6c7369 +6d616c61d0373c42443c373c47373c44453a384044473c373832231a1b24 +0d33163e6b5b61616048556a66606767646362625e544ed0d02c48484137 +2f403146373f34323c3834353739372f29322421243001494b444c4f4756 +615e6a69616268604b3d41443d542a273c3c403f352f12548e85746f6e6e +6e6e6d6b6969676d76776f6b6f6e70727271b4b5b4b3b4b7b8b8afb0b4ba +bab4b1b2bbb7b6b9b6b1b1b4c2b8b5bdc0b8b1b1b8bdbfbab6b4b1ac9c99 +958f8a878a8b85888c8e8f908e8d8f8b90927a4e3025191f212518193b47 +553d211517151924322b3b35261d282c3618332942423640372d40362d3d +353431262f2b2a47712a434142565e939b9c9ba1a2c1cfd2d8cecbc3c6ca +c6c9cbc3b6bdbaafaeb7b5a9a9a7a5a6a8a8a5a19fa09e9e9fa2a7aba6a6 +a7a9adb1b7bac2c6cbcbced3d6d2d7d4d4d5d9d9d8d7d2cabcb0acaaaba9 +aba9a8a7a8a7a7a79fa1a1a5a1a29b65218240101607221d545a4b4d4051 +4b3e52432d4855452c45604f353d62603e2c56685d2d456e6826487ec7f2 +9300161c1816151213121112100d060a1310122130200f45304e466997a2 +aaaeb0b2b4b2ab8a70595d632dd92c3826000300002414111211110f0e0e +1312141f26160c19151866ff18908d878f82a4cdcfdcd5c7cac4b1aab7b4 +a29a72f93b4661494343554d443835301c0d1013121010100d0606130731 +10e2128c9d94b18f7ba4adbac9c3c8c7b4a59d958a818dec5c2508040111 +00040004001b0d29231e312a000000000006141d1784a847888ea09b865f +c8cecbcdcfc9c2bcac947a737ba2f8050f0b0e0e0e0e11111107050d1311 +1117131412110e0f171f42ed116682536d666bacbfcbd3d4d8d2cfb89690 +6d665aee2d23150b0b131610131422241515180f241a151c1d140f110217 +847351626a6c6765569baebfc4d0d2c7b8a9937959467ba5000e0d0d080d +081d710c0b0f0c0f0e0909101b1b1107000d0f2ad143483d45496a5a7bbc +bccdd5d6d0c3ae936b4b4731a523320c150d101515194fbecdd3dcdedcdc +dddddad7ddd7dbe5e5dbd7dbe0e0e0e0e07d7e7d7c7d80818178797d8383 +7d7a7b837f7e81817c7c7f8f85848c8f878080878c8e8983817d7a696966 +625f6063666061626362605e5c5e5e646a562e11090007080f04062a3846 +311206070507101a13211d0e091418220520162f30242d2216271b122119 +17160f1c1b1e416c212f2827383d6e72706d71728f9ea1a89e9991949894 +979991838a877c7a83817573716f7073736f6b6b6c6d6d6f72777b787879 +7b8084888c94989b9b9ea3a4a2a9a8a6a7a7a7a4a39e96897e7a7a7d7d7f +7f7c7b787777776e72727a767c754306784c2c39262d1b484a4043384637 +2d473d27424f3f263f5a492f375c5a3826516356263b645e1f437dcaf9a1 +0c29312d2c2b2b2d2f2e2c292116151b13111f27180b4229402533483c34 +2d2c2e353d443e4c51666d23c91f3f4a363f2a1b382e2f30303031303032 +31323b3e2b212d2a2768fd128e9187805a5b6c595c574c5155505e7f8f8f +9473ff4453725c5a576359524a4949382b3033353333332d25242b183d16 +e31189958795633b51494c53494d5756607481807b85e8623c34372c3c2f +3b353c2e42263a322f4d502b2c3323212528291d85a84583838f8367286a +574d4d4f4f555f65645e6779a6ff173438393939393a3a3a302d353b3939 +3d3633302b231e222747f01166845570542e5155514b46484d5a58506053 +5e5cfa403f37323843433c3a37414336383e394d423b3b37281d1b071b85 +7454656d6b5d502e5c534e404548474d565d5b524a85b5142f363a383d34 +4696313036353836312f363e3c3023141f1d32d543473d4a485932375e43 +4341444b545a5746384435ae31492a3b393f41393156b7bab4b0acaaaaab +aba8a5aba5a9b3b3a9a5a9b0b0b0b0b047484746474a4b4b4243474d4d47 +4445504c4b4e4d484849584c4a52544c45454c51534e4c4c4b493a3b3a38 +35373a3c36383839393a3a3b3e3f49514019000000070b11060a303d4b35 +15090805050f1a1120190a020d111b001a102b2c22291d10221409160e0f +0f09181c224573262e231e2e2e5b5c534b49445c66666a605a525559575a +5e564a51524748514f434543434449494945444444424144474a46444547 +494b5051585c5d5d5e6365626d6b68696a6a6867645c504947494c4c504f +4d4c4a4949494346484f4b4f4820006e402032212f204c4b3e41364a4037 +4d412b4653432a435e4d333b605e3c2a57695d2d436c67274a83d1ffa40e +2d322e2a29282a2b2a29262016171e1817242a16083b213720314d47443f +41434850574a4e4e616c2cd63049482d331e16372f313232323231313433 +343e4230262e232067ff1693948985656c8071736c5e6466616a88969398 +78ff4b5b7962605e6e675d54524e3b2d2f32312d2d2d281d181e103916e8 +1992a091a3724c656165696069706e73828c8b8794f76e4235383345363e +36392b412a41393651512a272d1d1e2027291d87a84687899990773b7c6b +636468686c7275706a7184b2ff233c3e3f3f3f3f3e3e3e342f373d3b393e +3835322c2621262a4df71b7090627f643e636968635e5f606c665b6c606b +6bff4f4b40393d47463f3f3d46483b3c3f384f423c3d38291e1d0a1e8a79 +5b6c7673655536676260555c5f5e61666b6559538fc21e363a3d3a3f374a +9c37363b393a363132394241332718232034d641453d4e50613b446e565a +595b606569614d3c4b3eb53a5134444245402f1b34898074736f6d6d6e6e +6b686e686c76766c686c7070707070b6b7b6b2b2b6b7b6b1b2b7bcbbb6b4 +b6b7b1b2b8b7b3b3b9bdb1b0bdbdb0acb4b7bdbfbab4b1afac9b98958e88 +83848481818386878788878b95a4a1784127271f23201e1019485c535554 +432b1814151e232d30223a33342997de83646838393f355b463e553e453f +27401d49aa8e1344404d4c609b99939fa4a7cacad1d6cacec5c7cac8caca +c0b7bab8b1b1b6b3aba9a7a6a7a9a9a5a1a1a19f9e9ea2a7aba9a9a9abae +b3b8bbc4c9ceced1d6d8d5d5d3d4d5dadad9d7d4cdbfb1acadaeaba7a6a6 +a5a7a4a2a19ea09fa19ea1985b2a7c390d14051b1a585a4c4c3b514d3c4f +4c2f414a543439595943354f68532e485e753a325b7a382752a9d9ef3100 +261914121110100f10120f07090f101e3c4012133344564c4799a5b1b9bb +bbbdbbbe9b734c6563066f644716000c181e1b1511121111100f0f141416 +232a1910201929233506748585904ac2bcd6decbdacdd5c3b2b6b0a6ad24 +4b3c3d32304a434f484b42413c1f101012100e0f110f09001c0720373104 +28ba9ab58e67bdc0c6cccccdc9b9a1989e8a9a62b061201b03150f131102 +020d0c291422190e1500080912070516211e7c270c51838f9a6589dcd3c7 +d0d9d1beb0a1a5897c6e4c783319131514120f11111f110a0d110e0f1415 +11121514141c2a237d0c1e705f648379b9d4c6d3d6dae1c9cfb29c7e773c +832c2319141718100514080f17101a1e0a1a14111619150f0b2a22462c0f +336d62726347a6bac4c8dfd7ccbfb29e826351696f301e1109060b060d65 +0813110a11110c0b162123170d201f2d323f011b434350785668c2d0ccdc +e1d6c2b5aa865b4b445d330d17110709130c1e34a9ccdad9dbd9d9dbdbd8 +d5dbd7d9e1e3dedbdde0dedcdcdd7f807f7b7b7f807f7a7b8085847f7d7f +7f797a80827e7e848a7e7f8c8c7f7b83868c8e87817e7b78686864615c5c +5d5e5b5b5c5c5b5b5a595e697c7b5520080b060e0a0a0009394d47494535 +1b0902010509131609231a1e1381c76f4f532223271d422d253c252c2814 +311143a88d0d3025302c3c756d666f73749899a0a59a9c9395989698988e +8487857e7d827f777371707174746f6b6d6d6e6d6e72777b7b7b7b7d8186 +898d969b9e9ea1a6a6a5a7a7a6a7a8a8a5a3a0998c7f7a7d807f7b7c7a79 +777472716d717076737a713a10724629372426184c4a404435483c2b4446 +293b444e2e3353533d2f49624d2843596e3328517031204fa9def83f043a +2e2d2b2b2d2d2c2a2b23171314111b37370a0e2f3b42270d473d37343432 +353d4f494c436c6c005f59503f2c4a4a342b2f303133333231313332323c +3f2c23322c34232f006f86837f20755557554352485a585c77858da22250 +454a41435e575d565c5455553b2e3032333132342f2a14381829352a0021 +b38f9e6422614d454340424a4e5268847d9257ac653444353d3742443835 +3b324528352d2c3c303e3c3f2a1f262b227c250848777b80455077523c3d +433e3c43506f6b706c4e7a3f3b40403f3d3a3a3a483a32353936373a3933 +302d261f242d227c0a1e72636b6e2e4b5c454541414c4059565a586b4295 +3f3e3a3b42483d313b2b3036313d4432433c3738352a1e163227492d1236 +7061684c1960554734433b3c4655605e58547180483f3a36363b32348a2b +3637323937323139424234263531383a400017434c53672a1e594b33363d +4143526257404144613d1f3236323941323a42a8bfc0b0a9a7a7a9a9a6a3 +a9a5a7afb1aca9abb0aeacacad494a494545494a4944454a4f4e4947494c +46474d4e4a484e51454552514440484b51534e4a474948393a3b38353536 +3936363536363638383f4e6364410d0000020d0c0c010c3e524b4d48351b +060000080c1415051b13130876bf684c52242525193e281e351e25220e2e +1145ad93112f1e281f2c6054454b4a456561666a5c5d545659595b5d534b +4e50494b504d45454344454a4a4945464545424044474a494747494a4d51 +525a5f6060616667676b6a6a696b6b69676660554a474c4f4e4c4c4b4a49 +4644434245464b484f461700693c1d301f281d504d4041354b44354a4a2d +3f48523237575741334d66512c495f753a305979392856b1e4fd42093b2f +2a282829292827282217151816223d38080a263239210b4b464645454449 +5262574f3e6569046a675739203d3f312b30323334343332323534354044 +3229342830233302738886852a876a726f59685d6e6a69808c91a625544c +52484a655e6861665e5c5a3e302f312f2d2c2e2a23072a102638310529ba +95a87034786a635f5b61676867768f879f67bb713d4636453f484738363b +33492f3c363441343e373a261c252a237c26074b7b848b54618766535760 +5b585a617d757a775b894d4446464543403e3e4c3e34373b38373b393230 +2d282127322a8415287f6f7b7f4364755b5b55555f52696568677950a34d +494342484c40344031353b36414732453e3a3a382b2118342a4e32193d79 +697052236b63594a59515359676d6a605d7c8a52463e39383d353990313c +3a343b3833343d4747382b3a353c3c42001643515c71372b6a5e484e5657 +58646e61494a4e6c47293b3f393d3f27241f7a8883726c6a6a6c6c69666c +686a72746f6c6e706e6c6c6db5b9b9b5b4b7b6b1b2b3b7bcbab4b4b7b4ad +aeb7b6b1b2b9b8b0adb5b8b3afb1b3babdb8b2afaeab9e9b978d847b7877 +75747476777a7c7c7a8289836d4d301d1f24211e11153c4654555d5e5c56 +3d1c232e3e3a2e3c2b3150ba98212a5a3131392d3b313645363d1d363974 +bad8d637352d483e6eaba4a0a2a9acd4cad4d8cbcec8cccdc7c7c8c0bdbb +b9b7b5b3b0acaaa7a4a4a6a7a5a3a3a3a09e9ea1a6aaababacaeb2b7bdc0 +c4c9cdcdd0d6d9d6d6d5d5d6dad9d7d5cec9bbaca8abada9a5a5a6a6a7a3 +9f9c9e9f9c9e9c9f95563c76390b11071a1f5c5c4e4d37504f3a444d3f34 +43584832475c593b395e6747374f71583243685b273979b8eda8091d1814 +11100e0e0d0e121411100e0b2147691226544b543a4b8a9bafb4afabb3bd +c2837f7976543bc9f87d000202001c16150f1010100f0f0f141315232916 +10231830511b0467a7879943a2c0d5e1d2dbccdac7b4b9b4a9b443dbe224 +112e1f3d3735433d3e3c1c110d10100e1013120d1600220e6d21071eba99 +ac9d4fabc5c7cfd5cec9c2a698aa9b7e6363fb31220e0b030b040b07150b +1e1420200c110a0a081102070e2a3554040d388595a15c4cc3ccccd4dede +d3c2b76782925674da501a161817151212132b1b1011140f0d0f1714191c +150f1d31380d1c06476f537a839cd7c8d1d1d8d9d3e0bf9b807e507b623f +211d1c12080b0d071a211119210c0f1010141a1c1309143d371600055e62 +6d75417fbbc7cad8d0c7bcb09c826a5d264e37170e0f0c100e001e071b0e +0a11131111151b1c171305062a15071d0430424a625f5d9bdcd7dee3d6c2 +b5ae926c4c392f421e1818040810061b2886ccdcd9dbd7d8dbdcd9d6dad8 +d8dce0e0dedde2dedad9db7d81817d7c7f7e797a7b7f84827c7c7f7d7677 +80817c7d84857d7c8487827e8080878a847d7a79776b6b66605853505151 +50504f4f4f5150515a635f4a2c1001070e0d0b00052d3a48494e504c4429 +070810211d1223101939a2800a12421818211523191e2e1f280a272f6eb8 +d9d93521122a1c4983777271767aa199a3a79b9c969a9b9595968e8a8886 +84817f7c7874716e6e71726f6d6f6f6f6d6e71767a7d7d7e80858a8e9296 +9b9d9da0a6a7a6a8a9a7a8a8a7a3a19a95887a767b7f7d797b7a7a77736f +6c6d706d7371786e35256d46293425251c4d49424531473f2a3b47392e3d +52422c4156533533586141324a6b5228395e5420367abbf4b1142c2d2c29 +2a2b2b2a282b281f18120a1c41600a214d404015143b3a3c3a2e2832445b +37586e7b5d36c2f68c213a3a2b2e212f313234343331313331313c3e2921 +3226384f110065ab888d1d595d5a5c4e5748605e5d7c8b93ab42e3ed3322 +423654484354505255382f2d30302e3033302e3a16331267160019b9979f +7c1051524442464148575768908f76585ffe454b3e332938343d3941313b +2d363b2d393b3d3638201c1c323654040b337c858b41196552423e3f4348 +506633688a5678d9593a4143423e3b3b3c524238393a3533353f3b393627 +1a2030350a1a064b775f693830624d4c4344454561585257725e9375553f +42483f3838362c3b3f323c473438383636363125171e423b1a0108616166 +601639594d383f373843545e5e5d5d2e5c4e36353c3c40392041283c312d +37363434383c3b332a1815331a071c00304c5256391636593e383d3e3e4e +605c4c3e37314a2f333a2c353c2e383787c2c3afa9a5a6a9aaa7a4a8a6a6 +aaaeaeacabb2aeaaa9ab4a4e4e4a494c4b4647484c514f49494c4740414a +4b46474e4e46424a4d484446474e514b474447473c3d3d37332f2d2d2f2e +2e2e2c2d313335404c49371b010003100f0d0208323e4c4d51504c422806 +0f18261f0f1c050d2b96760410421c1c211321151a28192304222d6eb9dd +de38200b2010366a5a4e4949496c61696c5d5d575b5c58585b53514f514f +4f4d4a46464342424748494748474642404346494b494a4c4e5156575a5f +5f5f606668686c6c6b6c6b6a6765605c5145434a4e4e4a4b4b4b4743413e +42444348474f451415643c1d2d232923544d4242314a4934404b3d324156 +4630455a5739375c6545364e6f563041665b283d7fc0fab6182f2e2c2929 +292928272827201b150f224563081d473a390f113e414949403a46576e44 +5b6c775c3ccaff911d2f2f222e23303233343433323235333440432f2837 +273a5419046aae8a91286c727677656e5f756f6d849196ae47e6f33a2a4b +3e5c524e5e57595a3b312c2f2d2b2d302e272e0a2b116b1e0620be9aa685 +216a716462646167716c769b9983686eff504f423b323e383e3a42344134 +4144364142403435201d1d343854040c37818f975028736159595f63676a +794073956284eb6a4548494844413f4057473a3b3d3834363e383835291c +25353c13251057826d7b4f4a7c625f5354535572696367806b9f83624948 +4b423a3b3a32424739404a363c3a3938393227181f453e1d060d68696d67 +1f44665c4b534b4a56636d6a67673965563b3a3f40443f27472f41353138 +3836383c414037301e1a381d091a0032555d624624466b53505555556170 +6a594b443d55393c44343a3b2524185d8d8a736c68696c6d6a676b69696d +71716f6e726c686769b4babcb8b7b8b4adb0b1b5b9b7b2b2b6b5adaeb5b4 +acadb4b7b4afaeb3b8b2a9aeb6bbb6b0aeaeaca29e978c7f746d696b6968 +686a6c6f707472696879836336141d21261b1a3131384e66645e6c7a7453 +443e2a303d2e3d406d1b196f6f2a3e38433e3a3d3834313c3b78aac3c4d5 +be5238524682a7949ca7adb1dccfdaded0cdcbd1d1c5c2c6c2c4bdbabbb8 +b1adadaca7a1a0a2a5a5a4a4a4a09e9ea0a6aaacadaeb1b5bbc1c4c4c8cc +cccfd5d9d6d8d6d6d7dad8d5d2c6c1b4a5a2a7aaa6a6a6a8a8a9a49e9ba3 +a5a1a19fa499584e743a0d100c1d275c5b4f4d364e4e3a3b4b4e283f5659 +2f395b69432a52725f284362703b344f7c462a5f9cdcf956071913110f0d +0d0c0d0c1317150e03173d1d1e4539505e5849557399b0b7c6ecff9e8194 +6d697b535ed6c40e0306152717120f0e0f0f0e0f0e1412142327130f2117 +544d161b78858995524ec4bfd5d2bcd7dec2afc0bba7aa8f6ac4b2201036 +242723352e2e3417111112110f11151510041a0c3d4c1a0429a692a0a935 +82b9c2c1cabcb8ba9d8ba48a958985f9a52c0113160a0a0c15131b132b13 +15140e02010d120d1807253217090830798fa0952f9ec2d3d0cdd2d2c8a1 +9589737c71fa90120c0f100f0d0e101b0e060c13110f110e0f181d150f20 +3b3b230208496a5c6d695ebfc7cfced8cad1c2b1b1815466e3e07c1f101c +17111b142043441a121c0e1116191b23281f110e4b1704181466615f8d45 +47afc9c8c2cac0b5ab9a84726948bb57220c11080a0e190f0f0c0d170f11 +121212131212151918e15c0e0c19214941446f5864d0d9d3d8d0c1b4a993 +74465c5bae272d002616160e172262c1cedbdcd9d9dddfdcd9dbdbdad9dd +e0dfdbe5e0dbdadc7c8284807f807c7578797d817f7a7a7e7e76777e7f77 +787f84817e7d828781787b8386817b7979786f6d675e544b464548464543 +434548494f4c45455863461b00090e160b0b25252c4258564c5a675f3826 +200d142213232653000053550d231f2b262225231f1e2d3070a6c3c8dabe +401d34255c7d676c74797ea99ca9ad9f9b999f9f93909490918a8788847d +797976716b6a6d706f6e70706f6d6e70767a7e7f8083888e9296969a9c9c +9fa5a7a6aaa9a8a9a8a6a19e928d817370777b7a7a7c7c7c79746e6b7276 +7276737d7237376d4a2b332a28244d4843453048412a3145482239505329 +3355633d244c6c59233e5c6a312a45723f255e9de1ff5f152d2b29292a2a +29272225221d0f01103714154031454937171021384648567ca347437461 +6d845661e1dc3836373936242e313233333231303330303b3c261e30225b +470c13778d8e8e340f6c535f5e48617165658b9b97a59273d1c332264e3a +39344842454d332f3132312f31353330283a1c41420e0028ab9aa0960234 +5049404539415855619082928081ffb85230393d35373c423f4132482e33 +393932303634262a122a33180a092f778894830950585846383e4f5c5869 +78718077f89830373a3b3836373942352e343937353938393c3a291a253c +3822010b52776d673209605a54494e404e525973614e73f9f2903c334544 +41483d4564623b354135383d3f3d3f40332118531c081b17696058791d09 +575d4a3941424a58616264694cc86b3f333e383a394032302d2f39323435 +3535322f2e2c2c27ea610e081321554d3e501e0e5d5240434546515c5a52 +3a5c5fb738461f4f434233332f62b6b5b1aaa7a7abadaaa7a9a9a8a7abae +ada9b5b0abaaac494f514d4c4d494245464a4e4c47474b48404148494142 +494d4a46434a4d493e444a504b4545474842423f3a312b27252a28272624 +262b2c35352f3247543812000a10170e0e2929304458554a56635e413028 +11111908161746000052561228222b2620231e1c1a282c6ea5c3c9ddbe3e +162a164964464649494972636f72645e5a60605653595558515253524b47 +4748433f3e4346494849484642404246494c4b4c4f51555a5b5a5e5e5e5f +6568686e6e6c6d6b69656258544a403f474d4b4b4c4d4d4944403d474a48 +4c4c564b1827633f212d282c2b544c4343304a4a3439494c263d54572d37 +5967412850705d2742606e39324d7a472c64a2e7ff64182e2b2928282827 +26202524201306173b17163d2e414432161327435458668cb4585079616c +835b68e7e0363131373b2a31323233333232313532333f412c2537286151 +171e7f9091953e20826d79755d7786777293a09aa99778d9cb3c315a4743 +3e4f494b52363130312e2c2e32312b1e2f19444b18072eaf9ca29c134c6f +6a5f64595f71696f9b8d9d9192ffc65b3642443b3a3e454044374e393d42 +423c383a362a2e182e381c0c0b347c909e91165d666c60565e6e766b7682 +7c8c85ffab3b3e40413e3c3b3d473a30363c3a363836353838281c28403f +2809145b8077754720766f665a5d4d5c606782705c83ffff9b4439494743 +4b414b6b6a423b473a3d42423f4242342119551f0b201c70686084281463 +6a584951505a687072737557d1724538413c3e3f47383732313b34363739 +3937353232322cef6410071323615b4c5f2c1b6c6353575c5b66706d6248 +686ac0404d285548432c24153c887f776d6a6a6e706d6a6c6c6b6a6e7170 +6a756e69686ab6b6b8b8b2adb0b7b6b5b4b3b3b3b4b4b5b5b3b1b1b5b2ac +afb0b0aeabaaaaabb1aea9a6a5a4a3a19e98918876645957595857595d60 +616166575d565587a57d2c1f29231f2a262531383f508c92ce9358574338 +3e342a36315a6cae942f512a483941403b382e3b4d76c2c1c9c6b3e7ff46 +534895a793a4a7afc6e2e7d7d1d8c9cdcecdcdccc6bfb7b9bcbdbbb5aea9 +a5a3a2a3a4a5a4a2a5a19ea0a1a1a4a8a9abadb2b8bfc5c8c8cbd1d4d5d6 +d8d9d6d7d7d4d7d8d6d0ccc2b3a7a4a4a6a6a2a3a7a7a7a3a09fa4a4a79d +9ca88b43506e24100d07162964525157393e5c4430454e383052634b2149 +6b70343c5a7a5423526c671d436761252c75adf8dd1b101a111403120b16 +1213130d0f120f070e154f46535e5b7155555e708092acc0849b7a806466 +320c000004110c152215120d0c0e10121312151b20201a1312120934260e +2bbc81878ca24d3c92abcdc6dfd1a6b4c1a8a6979e5c6ea5010c1a102527 +282927221a14141413131513110d0e1e10657f6201669b8695957e2e70a0 +c7d2ddffda80a09a9c88957192f03f0e1011100e1011110e121314151513 +0d0c0f171a0e1e545f32230144847a89a349307abaeecfd9ffc69c997b7e +6e4ca18f351a0c1016130e0d12110e0b0a0e171a1212111e240518635d19 +140968666c598e4e3ca2e1cfd6dbdfb1a3956e735a5a89802e0c07191711 +20123145210f181123160f1927291e131f7a2a06141b5c67736f93494875 +c0c4c6ecca9f8e8a61644385612f130b0011090f131212100f0e12100e0e +121415172200a76d18211b3052433f58894c4da5c4cad3c7bdae85705e47 +426c38140c170d03111c2b47b6dee0ddd7d8dddedad7d8d6d5dae2e7e6e3 +dededededf7e7e80807a75787f7e7d7c7b7b7b7c7c7e7e7c7a7c807d777c +7d7e7d7979787a7e797471706f6e6d6b67645c4d3d343337363537393c3d +3d42343a3535698762170c1613101e1a1a252c31427a80bb7e3d39231920 +170e1a153e50937612320d2e21292826231a293f6cbdc0c9cab8e7f22d36 +28717e6573737a91afb4a6a0a7979b9c9b9b9a948d8486898a87817a756f +6d6c6d6f706e6c716d6d6f717174787b7d7f848b92969a9a9da1a4a5a6a6 +a9a8aaa9a6a5a6a29c988e80757274777a76787b7b7773706f7475787270 +8063213a6a342e30252124533f454f35384f37263f48322a4c5d451b4365 +6a2e365474501f4c665e14395d5a202974aefbe2242232292e1f2e253028 +251f1510100900080f493e484c3f4b211715202c3c56744a73617565703f +1d18172c3a323233262e2f30323436353434393c382f262121133a1f0525 +bc8e958f9221003e4f746d837c5f7f9e95a09ba7697fb71423342a37383b +3d3f3b36323434333333312d2b333d226a795a006aaa98a3935f001d3f5e +6772a18b4784909a87906e97ff653d3638393a3c3d3a34333232363b3e3c +3831342e1c2658623528094b8b7d879f33002e5c815461a06e637b738578 +53a197534235393f3c35343938343130343a4240413a413e1722685e1c17 +1072747f627e25004d765659657b647077627261659692492d3046473e49 +37546642323d384a3d353b454333252b842f0b181f5d666b5d7519062460 +5e608f7a61636f5461458e744a3837293e34363633313231303533313131 +31312e3504b072181d152f5e5041486310004154556261696a514f534b49 +764b302f40382c34363443a8c3b5aba5a6abaca8a5a6a4a3a8b0b5b4b1ae +aeaeaeaf4b4b4d4d4742454c4b4a49484848494948484644484c49434748 +4945444143424943403d3c3b3c3d3e3e3d392d2019191e1d1a1c1f222323 +2c202726285e7d5b160e1a1615221e1e272e3141787cb77d46452e1e1e11 +030e0732458c7414381231212928252019273c6ababec9cbbbe7ef282e1b +5b62434a44485b767b6b666c5a5c5d5c5e5d59524b4d5455554f4843413f +4041454648464a4544444343444749494b5054595e5f5e6163666566676b +6c6f6d6a6a6b68625f5549424144494b494b4c4c4743403f46494e484b5c +40052c5f29242a23252b5b43454d343c58402e434c362e5061491f47696e +323a58785120506a631941656126307ab3ffe62924342b2f202f242f2625 +1f1714150d030c114b3c464a3c4a231c1e2b39496381567c677969724524 +1d1a2e3c35383d2e3130303234363635363b3f3c342c28281d462f1633c8 +9498969c320d56688a81988f6d89a499a29eac6f87c32231433743404244 +433f39343333323233312e292c38247085670973af9aa4986e0c395e7c83 +8ebca15a9099a595a483abff72473f3f3f3d3f3e3c3738373c3f44474643 +3a3c372531616b3c2c0c51918692ad4006386c98707dbd8774877e8f8465 +b9ac5e4a3b3f45423a393e3d373433373c413d3b343d3b17236b62211e18 +7b7d866b89330e608a696973856c777f6e827477a69e5234344949414d3d +5a6d4938433f5142383d474434252b85320e1b22626e786b8125102d6b69 +6b9a87707480667251977b513e3a2e433a3d3c3a36343231373535353637 +35343b09b5751a1c15346c6150556e1a054d62657676808167626156517f +513435463e2e302b1f2683947e6e68696e6f6b686967666b737877726e6c +6c6c6db3b3b5b7b4b0b2b7b5b5b4b3b3b4b4b5afb2b2b1b0b2ada7abacac +aaa7a6a7a8aeaeacaaa7a29a9496928c83715e5352504e4e515353514f4f +4449443f6eaaba591f0c14191112394336334f4d1e3b263e463b2e384545 +41311d353b343936393a303b3d3f4d5b7691bdddd3cbbea4b4c0664151a6 +a4a9af9fb8d2dedcd7d2d0cdcfcecbcbcbc7c1c0c0bfbcb8b1a9a4a5a3a0 +a09fa09f9ea19e9b9fa1a1a5aaadafb2b7bcc2c8cacccfd4d6d6d6d8d8d5 +d6d6d4d7d7d4ceccc2b3a8a5a5a8a7a4a4a5a5a6a4a19fa2a1a69d9ca687 +3d546a200e0c09172662584b563f33554f343955502e3a60643d355b6859 +27426a683c2d527250394c65462d4986d8ec93001c151716101309101213 +0c0e1215130c125c4e545f597f877d75768098b7ca948574746e803c1a11 +020711100d1518100b0c0c0d0e0f0e0d151e201d1511110b232a0b3fc96d +7f8fa89a8958415e5c9bcfc1b1aaa3ad909030010008190204181a1d2020 +1c1814111011131616141109062c16121104ac9c8590a9b673603c656976 +c2c1a2b1a29e8da9680404000010100d0c0d0f1213151313131515111109 +161a0a04161e0f0a008b788a81909c6b414768918ed5a08b8d8f84796363 +110f0e1618130d121a0f10100f0f1016160b0b040c1b06001f112205008f +67617c63c27b445e8393ccc892908774645b5d1c030f21120d071814121a +231d171b213e2f20181b1e180f0a072f1d004663676a67958a725d5c626d +b49b90897d62516638141c1616140e0b0f12121414151515131111131414 +15150511000f12093b43464c3a658f8f535d71a4a68f8e7c5b455e33221c +2211091511191d1e2e9adadbdfdddddddcdad9dbd9d7d9dee2e2e0e1e0e0 +e0e07b7b7d7f7c787a7f7d7d7c7b7b7c7c7d777b7a797b7d787277787a78 +757475767a797775726d6460656260584a392f2f302f30313333312f2f23 +282421508da1450f00050d05072e372a25413b0d281123281c0f1a282825 +1501181e161b181c201723252a39476783b3d8cfc9bfa5b2b2512833817b +7b7e6b839eaaaaa5a19f9b9d9c999999958f8d8d8c89847d75706f6d6a6a +6a6b69686d6a6a6e7171757a7f8184898f95999c9ea1a4a6a6a6a6a8a7a9 +a8a6a5a5a09a988d80767375797b787979797674716f72727771707e5e1d +4167312e3127202151453c4d3b2e49422a334f4a28345a5e372f55625321 +3c646438274c69472f425e3f284685d7ed9806312a2f302a2d2126241f14 +0f100f0a060c56454a5145636353423e475c7b967370656a6d894e333228 +2c362e25272c2c2d2e30313231302c333a393228221f1729260238cb7b90 +9aa27b581800211f5b929190959dae9a9e3f120e1f331f202c2d30343838 +3432313031333434302f2b263e1d100d04b5af9da3b0a95126001a1b2678 +86799fa1a291a4650916232c3837363536383a39383636383b3d3b392931 +2d180c1a2213130b9885948894944d1205193532815f627b8f8e856c6519 +2d363f413c363941363736353536393e3c3e3133391c0c2919270d069c76 +748d6cbb5b0b0d253172815f767c746a6064281427423b3a37453d373d44 +3e383d466556433938382d2118133722024a6466645b7f6a44251b1d2a75 +66666a6a594e643c2335393f413b3636353333363739393634343433302c +28141a010f11033b4c515234516c5a100d1d50594b574f3e3d623a2d2f3e +32303e393b34292c8cbeb0adabababaaa8a7a9a7a5a7acb0b0aeb1b0b0b0 +b048484a4c4945474c4a4a49484849494a44454746474944404546474542 +41424348474543403b35313a3a3d382d1f191b1b1a181a1c1c1a181a1019 +171646859c4610000811090b32392a253e370622102c3424141a24201909 +001018141b1a20231a23252938466482b1d5cecac1a7b3b24e21286e5f57 +533b4f65706f6a67645e5e5d5a5c5c5a5454545754524b433e413f3e3e40 +41434246424143434345494d4d5055585c6161626566686666676a6b6e6d +6a6a6a66605f574b4342454b4c4b4c4a4a4644413f44464d4a4d5b3e0432 +5e27232a252528594b3f4e3c32534c3237534e2c385e623b335966572540 +6865392b506e4c374a65462f4d8bddf29e0b342d31312b2c2124241f1613 +13130f0a1058464950446263554747506887a27c776c72738e5237372b32 +3c362f3537302e2f30313232312e353d3d372e29282337371548d88497a0 +ac8b6d3016332f6ca19d979a9fb29ca1461c192d422f2e3734373b3c3b37 +34302f30323434312f2a2542271d1b10beb39fa7b6b3613e1031313f8f9a +89aba9ad9db87a1f2a3336403e3a39383a3c3c3c3a3c4044474745343c3b +2519262d1c1a119e8b9d92a09f551a132c4c4b997572879998937d7c2e38 +3e4547423c3e463b3c393838393b3e38372c2e371a0c2a1b2a100ba27b7a +9473c3681a2037407e896479827e787477361e31493f3d3948413d434b45 +3f464e6c5d493e3c392e2118133925054d696e70698c754e2e2122317e70 +727a7d6e6171452a3a3d4346403c3d3b383637363739383838393834322e +191f04110f033d5b6360405a726219182a606b606e66524a6b4231334137 +35443b3a2c19156f967b706e6e6e6d6b6a6c6a686a6f737371716e6e6e6e +b1afb1b6b7b3b3b6b2b2b1b1b1b1b2b2aeb1b3b2b1b1aca4adadacaaa7a5 +a6a8a8a6a4a29f9a948e908a847a68564d4a4646474b4c4b48454d4a4d4a +414e81b0a053120a1a1c0c232c3e415b33203330394344363e616c54567f +64646783b07e38313e3a39495e80facecadbb2a7c7a892a267639fa2a0a1 +a0c7e4dcd3d8d6ccd1d2cfcacacbc9c3c6c3bfbcb7b0a9a3aca8a4a2a0a1 +a09fa09d9ba0a3a4a8aeb1b3b7bcc2c6cacbced1d5d5d5d4d6d6d4d6d7d5 +d8d9d5ceccc1b2a8a7a7a9a8a8a4a2a2a6a5a29f9f9fa59e9ca382375d64 +1b0d0c0c1521626443564b2b4b5a4629435d3c2d506c65343f6679332f58 +6862243d636a2d385f6735235face4f6340c111a0a0c1a111919170d0c0e +13131f1955475a69566868748189919491847b708c76666b24100b171509 +10191b171412131111111010161b1f1e19120d0c0b16140644a27c917aa7 +a1b9d4c89ebcd6d4adb5b5949690a21f161e200d081d0f13151819171411 +11101214171716121f212d284c37048694847887a9b2c0b08c94a6e0cbb2 +9e88939b9b6f2212181811120f0c0b0d1115110f0e0d0f100e0e121c1f17 +1008091606017a7a7b797ea5afaba17183a4ebb4a8969671697667151410 +100d0d1113120d1015161514151209120c0d1d18060a12150b00a0646d5c +6a827fc1b39192e5da9d8f716964757b502418071117000f162016111f1e +161f1a1b1c1b22261f130d1d001f0c186b547d5b5d84959a8795a5d0978c +7b6668655d4c3e1d000d17000c0c0d101113151517141315161614141916 +000a271d0b25493b4f514e59828691b4f6df8d79796255624d4933130d19 +0c121920282979c8d7e0e2e0dcdadadbdad9d8d9dadde0e2e1e1e0dfdf79 +77797e7f7b7b7e7a7a797979797a7a76797b7a7c7c776e79797a78747273 +757472706e6b66605b5f5d59514331292929292a2c2d2c29262e2a2d2c23 +3164968e4403000e1101182232334d210f201b2028261922454f37396246 +45486490601b17242224354a70ecc3c2d5aea5c5a4868f4f487e7b74706c +92ada8a1a6a59b9fa09d989899979193908c89837c756f76726e6c6b6c6a +696c696a6f7374787e8385898e95999b9da0a3a5a5a5a4a4a6a6a9a9a7a6 +a7a19a988c7f7675777a7c7b7976767675726f6f7075726f7a59174b642f +2c302a1e1b5151344d4926414e3c233d5736274a665f2e3960732d295262 +5c1e375d64273258602e1e5aa7e1f9411f242f222432292f2b23150d0c0d +0d19134c3e505e4856545c646a70736d696e69826f6572372c2e3f3a2c2c +34312f303132333333323235393b372e25201d171c10003da18aa489aa8f +98a99d7c9cb0b093a6af989e9bb02e2732372a293d2626282d3133302f30 +2f303233332f2e3e3f40324e360890a79c8d95a8a29f86616573afa29797 +8d9a9f966a27243d473c3b38353435393d37353334363636343037322518 +0e101d10108b8b898386a5a4947b414866b68b908f9a7e737d681d323839 +3634383a39323538393837383a3a453a3640321a1a1e1f150aab727c6e7d +8d78a7845856adad7e806f6d6c7e845a322f263945303c42473832403f38 +4440423f3c414237271d2b0625101c6c5379534f737e7d647180af797469 +5960615a4c49322136442b37353233333538393b3a39383735312d2e280a +12281c07254f425554494d6761627fc0aa5e52574b4f655554452d2c3f35 +393b3934276daeaeaeb0aeaaa8a8a9a8a7a6a7a8abaeb0b1b1b0afaf4846 +484d4e4a4a4d494948484848494945464a494a4a453f4949494745434446 +4543403e3b37312e36363735291e19181717181a191815121c1b20211b2b +60958e4708001215051c2332334a1d081a1826312e1d2142492f315a3e40 +456291601d18252223344b70ebc1c0d5ada6c6a58a914d3d6b5e4f453a5c +746e666b6b6062615e595b5c5c565a575754514a433d4844424041424443 +454141444546484d5151555a5e60636264676767656465686b6e6e6c6b6c +67605f564a4344474c4f514c47474644413f41444d4d4e5a3d003d5a2424 +2c2a25255b57374e4a2a4a584427415b3a2b4e6a63323d6477312d56645e +20395f662b365f67352461aee8ff47252a34242632292d2b23170f0f110f +1d174f3f4f5c4754535c686f777c777275708a776b783b2f32414032373f +3f393433343434343333373b3e3b332b2625232c21104faf93aa90b39dab +bdb08ca9bdbc9cabb199a09db3352f3d453838482e2c2e32353633313231 +3234363633314041463c5b441399ad9e9098b0adb09a727786c2b4a69f93 +a4abaa803d384d51433f3c393635393d3838393b3d3f403f3b424032251a +1a2719179292928d93b1ac9c88515c7bca9b9d97a3877f8f7d303d403f3c +3b3f3f3e383b3c3d3c3b3a3a374037323c2f18191c20160cad7581728393 +80b4946762b8b484857478798d93663b372b3b45323f454c413b4948424d +49494541444337261c2b0525111d705987625c7d86826a7587b68381796b +757265544f37263a49313e3b3837343434353b3b3c3c3c3a3532332c0e14 +2a1a06275b52615d4f516c686a89ceba72676f5f596a5856472e2f42393e +3c352a18578d7a7173716d6b6b6c6b6a696a6b6e71737171706f6fb1aeb0 +b5b7b4b1b2aeaeadadadadaeaeacb0b0aeababa8a2acaca9a5a19fa0a19f +9b9591919193918a82786d5b4b4444404041434545434135393a424d506c +9bbea45a090f29140f2f4d4c5618292f313536383030515d3f333a37698c +ff812a423c463b2f2d3046d6fad3ceeaa69ea595ceb38e98a997a0b4d5e9 +dfd4dadbd0d2d3d1cdcccdc9c3c2c0bdbcbab5ada7afaba6a2a1a2a2a2a4 +a19fa3a6a8acb2b2b5babfc4c7cacbced0d4d4d4d4d6d7d5d7d9d7dadad6 +cfc9beafa7a7a8a9a7aba4a09fa5a6a39f9f9da5a09da07d326b61190c0b +0f101a626f3f545c2c42594f2d3660582e36687c4f285b736032415e753b +31456c3b2f486d4b234580c1fbb30d06210011111c1c17120c0a0d10100a +1b424262767c716b757c7b838c89786d5e6e5f727e3d0f00120f03101510 +1116171817161211111f1e1c1612100f111f1b221b30a083768b84a8b3b2 +beb1b0a7bd9d94918aa09c98240b2e00080300111313131413100e141414 +141614130e2c48433c493b0095949c91898a98afc1cdc0c7c7ab9b9d977c +a2a8701323000811111313110e0f14100e0d0b0b0c0e100f150c0c1c150e +1c1a005483708380858da5beccc1c7bd8ca1918e7f757d6d291412110b0d +1310060e111617161515120311130d120f0b130c13060c4b70757b735869 +8f7ca9c29f9e86837e70716f5f3b23261c110d131717211f191e2118120d +151b1e25281a0606250f2126066778575d657678797b9583936e7a756056 +63704d2b14201508150e0d0e13151312111413141518171514170820231b +1b14144f53453646484e5f645f7871606a67595c4e564e291d2b0010110c +192c295bb4d8e2e2dedbdcdddcd8d8d9d8dadde3e7dfdedddcdc7976787d +7f7c797a7676757575757676747878767575726c787776726e6c6d6e6a66 +605c5c5e60605a564f4536272224242425282a2a2826191d1e2630334e81 +ab954b00041e090425433e4806181c1c1c1b1d1313353f22161d184a6de1 +620d26222c2117181c34c6ecc7c4e29e999f8abfa1757b866d7080a1b2a9 +a0a8a89fa0a19f9b9a9b97918f8d8a89868179737975706c6c6d6c6c706d +6e7276787c8284878c91979a9b9da0a2a4a4a4a4a4a7a7aaaba9a8a8a29b +94897b7574787a7b7e7974737576736f6f6e75747077531259612d2b2f2b +1914515c304b5a2a384f4827305a52283062764922556d5a2c3b586f352b +3f6635294166441c3e79bafabc1e17341229293130291e150e0d0c0a0415 +3a38586b7166606a6e6c727b7569685e695a6f8148241c38372b32362b2c +32353636353433333e3d3a322a2524242d211b10259e8d8598879a9b95a3 +a1a393a9908f9290a8a6a22f1841182929252a28282b2d2f2e2c33333232 +32302c2a4a645649503f019ea1ab9f928b919fadb9aaa8a8918b9c9c81a5 +a169163425373e3d3c3c3936373c38383533323333322f31241e261e1525 +250363927a8c84858799aab2a1a59e76968e93887b806c30323a3a34343a +372d3336393a3938383a31423f35342d24261b1f0f1453787d8482656c87 +6a8fa481837176797078796943303a39373943444348413a3f423a34323a +3d3f4444321c1933192a2c0a6877555a5d6c6d6c6a8472825e6e6a574f5c +684a32253d3c334239363336373737383b3b3a3b3b3834302f1a2e2b1f1b +13124f5548394746434c493f544f414f5048554c575437334921393a3236 +3d2c559fb0b0b0aca9aaabaaa6a6a7a6a8abb1b5afaeadacac4845474c4e +4b48494545444444444545434747454646433e494b494543414243403a34 +30303133373433312b2317161916161717191917150b0f121b2a2f4c80ad +98500108220d0826423d45021115171f22221715343d1e1217134568dc5d +0925232d2217171d34c6ebc7c3e09c969f90c6a16e696a47424e68796d66 +6d6f646362605c5d5e5c5656545554544f47414b47444042434646494545 +47484a4c515253585d6061636264666666646465696c71706e6d6d68625e +534944454a4e4e544c47424545423e41424d4f4f593a004d5724232b2c20 +1e5b62334c5b2f41584f2b345e562c34667a4d2659715e303f5a71372d41 +68392d486d4b234681c2ffc3251e3a172b29322f291e140f0f0d0c061538 +3756696d625e686e6f78837e706c606f6076864c271e39392d3b3f363536 +37383837353434403f3c352e2a292a362d2b2136ac968c9e90a9aba7b4ac +ad9eb297939490aaa7a43320482232322d2f2d2d2f3132302e3535343435 +33302d4c675c515a4a09a5a7b0a2979099aab9c5b6b7b79e95a2a087aeb1 +7b2944303f4340403e3936363b37373735373a3c3c3a3c2e2832271f2c2b +0968978395909191a3b6bfb0b5ad829e95998f878f7c403c42403a3b413c +32393c3d3e3d3c3a3a313f3e34332b2124181d0e16557a8089896d759276 +9cae8b8c7a7f807a8282734e39433f3a3a4547464d4a43484b443e3b4346 +444745321a173318292c0b6c7d606568757573708a788a687a7a68616c73 +51382c43413948403c393a383330333a3b3d3e3f3d3734331e312d201911 +13576151404b494752504a605d516062585d515b54373149223d3e353437 +2145827d73736f6c6d6e6d69696a696b6e74786f6e6d6c6cb4b1b1b5b6b1 +adadaeaeadacababacacaaacaaa5a0a2a29fa4a39f9a9593939495918d8b +8c8c8e8e81786a5a493a363939373637393a3938293127273a455e899fc2 +ae55291e0d1b34363c51223b384d392d2e2b243239243a17302a3fff4e3c +45414b3f332d222b63bbcfc7e7ada5a1d0f4ebd7b28d94a2cdd9e2dfd9d9 +dad7d0d3d4d1d1d0cac3bfbdbcbdbdb9b0a8aaa7a29f9e9fa0a0a6a3a0a4 +a7a8acb1b2b5babfc4c8cacbcfd1d5d6d6d7dbdcd4d6d7d5d8d8d4cdc5ba +aba4a6a8a8a5aca59f9ea4a6a39fa09da5a29e9e792f785c170b09100b15 +5b73414b6239374a53453656714026597d6c35385a7c4b265569542f3265 +5f312f5c653e315698d4f95e001a111b0712120a04050b0f0f0f3470847f +8584b29f6e716c61697b8178bad0c4aebdc7bba911130a0c1409081e1316 +191713110e0f15171715111110121f0b115312dc9e908d8cc7a2a9a9a89b +b6bca4bdcbb2b4acbfc251090221080b101312101111100f141414141616 +1410302b3c1b1434006aa0998e8e93918b9e9e92b3a7ac8d987c92829883 +2b1f21140a0b0f1616110e111310110f0f1014150f14080113150d141b00 +3982667460658f7b89968f9ca09e7a89716d61657142000b1d190f0d0f0e +1213161615141716111518140f0505131c122f004d7f68645f5d6b677d79 +7f808f79668a6974696e7534082a130014000f0d1f22152029121a191716 +1e241d0d130e0f192f005851544a3e44606570777b74645a57633a424f42 +412c1b1904080f0d0e161b1815141110121417181816120d1f111a132803 +36423d3b3a32334f625e5e5c6557415c3f2e4b523807251b1714070e1b1a +3ea2d9e4dfd9dadfdfdbdadbdbdadbdee3e8dfdedddcdc7c79797d7e7975 +7576767574737374747274726d6a6c6c696f6e6c67615f5f60615d595859 +5b5d5e554d4234251a181c1d1c1c1d1f201f1e0f160c0a1d27406f8fb6a2 +4a1e1504122a2c2e43102a2539211415110a181c071c00130d21e2301f29 +252f251b180d1751abc1b9d99f9a97c9eadcc4976b6d739aa5aca9a5a7a7 +a59ea1a29f9f9e98918c8a898a89857c7474716c69696a6a6a726f6f7377 +787c8184878c91979b9b9da1a3a5a6a6a7a9aca6a9a9a7a5a5a099908577 +72737879797f7a73727476736f706e757671754f0e685e2c2c2d2c140d4a +603242603830404c3f30506b3a205377662f32547645204f634e292c5f59 +2b26535b34274b8dcfff6b0c2b24301c27261c120f11110d0b2f697b747a +79a796676c675b6072766db1cac0aab8c2baae2533373f463529392f3235 +3532303031373635312d2a282731120b4504d2a199948bb78b9197a298ac +b19ebbcbb4b6aebfc659181b4334342c2827282b2d2e2d33333232322f2c +294c45512a1f3c016da19a8d8c918c84979b8da3939880967d937f8c782a +3048453a383b3f3e37363a3d3d3b3937363536343a25192220161c250543 +8a69735a5d84707d8a828f95957484706c5e626b49183144403634343337 +3839393837393c3a41403a31231f272b1d35004d7d635f5c5b6b677d7877 +747d65527a627371787c3e1b47392244303b34414333404b343e3e39373d +423726271e1b223501595053483b3f595b666b6f685a4f4f5d343a433b44 +39373c2f353a36353c3f3c3a3c393a3a3c3d3b37332b202e1b2015270030 +3c38393a302c424e46464451473552322142503e173f3e403f3032342741 +96b3b2ada7a8adada9a8a9a9a8a9acb1b6afaeadacac4b48484c4d484444 +45454443424243434345433e3c3e3e3d4344413c393737383935312d2e30 +3436302d281d150d0e1412110f101211100f020b030419253e7092baa64e +241a07152b2b2d400c231e32211718140d1b20091c000f0719d826172624 +2e241b170c1651abc0b8d89e9898d1f3dfbe86504645656b706b696c6e6a +6162636062615d565351545557534a424643403d3f4044444b474648494a +4c505253585d606263626567676866676a6e6b706e6c6c6c67605a4f4541 +444a4d4c554d46414445423e42424d51525937005b532323292d1b185466 +3543613d3849534334546f3e24577b6a3336587a49245163502b2e615d2f +2b58633c2f5395d6ff7415322a331d28251c120e11100e0a2b63766e7473 +a18f6168645b63777e75b4ccc1abbcc6bfb22632343a4536304033353837 +3432313238383734302e2c2c3518155211dda89e9a93c49ba1a5ac9fb4b7 +a0bccbb3b5adc1c95c1b1f4535362f2b2a2a2c2e2e2d353534343533302d +4d46522d213f0572a59e929196928b9ea294ad9ea187997f97869886383a +4d493e3b3e413e383536393a393839393c3d3a3d291d29241b1f2707458d +707b666a947e8b968c989d9a78887572656b7553203a4b473d3b3a393d3e +3d3d3c3b3b3f3e44423b30211c25281933024f806765656677718780827e +89715e856a78737a8648224b3c2346323e394a4c3e4b553e4a47423e4244 +3823251b192135025b55584d424561646f757974655d5c6942474d434b41 +3b42353b413c3a3d3f38333438393c3e403f3a372f24311c201225003440 +3e3c3c33334b595353515d52415b3b2845513e163e40444534323020367c +8275706a6b70706c6b6c6c6b6c6f747971706f6e6eb6b3b3b5b3adaaacb1 +b0aeadabababababadaba39e9fa1a09e9d99948f8d8e908d8e8f8f8f8a85 +7e7a6e5e4d3a2b292e2e2b2b2d2e2f2d2b27332c1f23273b5c7a9ec7bd8d +471323413b4d41294e4643403433342f2b2a24153eea3141a144383f3a47 +46474e474c302878b9afb0a878bec2bdefd86ab6c6d9d7d8dcddd8d5d7cf +d3d5d4d4d3cdc5c3bfbcbdbdb9b0a8aba8a4a2a1a2a1a1a4a09ea2a5a6aa +afb4b6bbc0c5c9cdcfd3d5d9d9d9dbdfe1d2d3d3d0d3d4d2ccc2b7a9a3a6 +a9a8a4aaa5a1a0a4a4a3a0a19da4a29d9a752c7f56170c061109144b704a +3a594d35395f532936756934326c7a63274b736a283d516e462b476f502a +416955283372b1eed61e0021150c12120905070c0c0e105b8c8e837d6a94 +7e081218161b211d104a9d9e96979dc8ff131b0d0000071316161a1e1c17 +13131214161a1b17100907092714ff8efff9feffffd95b827469716b4d45 +b0fbe8edfbdcffce28290300000f120d0c0f101111111012141919171512 +191a111146c7c8fff9ffffffd68e8081758e78989cfcffffffffffdc0e0a +0b0b060a1316110d0f0d0e0e0f0e1014140c141205070e141836942cfbd8 +efeff9c87e9279807380797ee9fffffff9fffb1611110d0c111414151517 +1514141819190f1119190d080c1a00532d6ee9ffffeaffee7b807173836d +6a82fffffff3fffdcd1d0820161617160a1f240d1d321a18151519202019 +150d2626155435aef6e7f4ffffc96f5e6367666a5c89f5f4ffedebfba103 +0c21160b040812191311130e0e0f11141617180f0f121e1c178528d1ffff +fbeeffcd4956656151596093fffffffffff5460a1b04070b1718152485d5 +e3dfd8d9e0dfd8e0dfdddcdcdee0e1e1e1e0dfdf7e7b7b7d7b7572747978 +7675737373737374726a68696b69696865605b595a5c595a5b5e5e5b5551 +4e45392a190d0c1313131315161816140f1b110305091d426a92bcb2843e +0a1a37313f34183d322f281c1b1b14100c070020cc142383271a221e2b2a +2d362f371c1666a79d9e9669b8bcb2ddc14a909aa7a3a2a6a7a4a3a59da1 +a3a2a2a19b93908c898a89857c7475726e6c6c6d6b6b706c6d7175767a7f +86888d92989c9ea1a5a7a9a9a9abadb1a4a6a5a2a0a19e988d8275717379 +79787d7a757474747370716e747670714b0b6f572c2d2a2d120c3a5b3e34 +594c2e2f584d23306f632e2c66745d21456d6422374b68402541694a2138 +5f4b1d2865aaf2e02b0a32282127261c131112100e0f578684766f5c8774 +010f1715171b12033a8f99929193b9fa193641393a4039322f3337383532 +323436383939332c221c1b310dfa7af9f4fffef8c5436a64687465443fac +f7e4e8f3d4fdd0344226222b2d272526292c2f2f302f303232322f2d2a32 +2e241d4fc8c4f7eaf4fafbd08a81897a876b8990f8fffcf7f9fadb1d323f +3d36363c3e3836393a3b3b3936333335364136221b1c1d1e3c982dfbd1e4 +dde4b76f87737d7280777ae3fcfbf5eefbfe31373834333839393a3a3a38 +37373a3c3e34343a382b22212903552c65dff9f7ddfae6777e71717d625e +75f8f6fceefefdd52e2446424647423141452b3b523c3c3a373c3f3e352e +2136321e5a39aef6e7f4fefdc26553575a5a5f5181edeffbe0e0faab1a2f +4a43362f2f383d3a393c3838383a3c3c39352824212a221c8523c6f3fbf2 +e8fdc23c44514d3f4c5991fdf9f4f9fbf450203d2d373840382c3481b3b1 +ada6a7aeada6aeadabaaaaacaeafb1b1afafae4d4a4a4c4a444143484745 +44424242444447453d3a3d3f403f403d39343235373433343535312d2a2b +271f160a03060c0c0909090a0a080603110a0003071d436d96c0b689430d +1d38303e2e11352928241c1b1e1915140c0022ca0e1978190f1e1d2a292e +362f361d1666a79d9c946cc4cab8d9b3316b6b726966686b68686a606264 +63656460585753545557534a4247444240424345454944444647484a4e54 +54595e61636666696b6b6b696b6e73696d6a676768655f574e4340444b4d +4b534d48434443423f41424c5151553300624f2324262e1917446242345b +5136385f512734736732306a78612549716824394b6a4227436d4e263d67 +5325306eb2fdea3413392c2428251a1310100f0e0b4e7a7a6d66537e6b00 +081313181f1a0c3d8f968f9194befe1931352b31393a3633373b3b373434 +3537393b3b362f261f1b3214ff85fffaffffffd05178717079694741abf6 +e1e5f1d2fdcf323f221c262d2a27272a2d2f2f323132343636332f2a2f2c +221b4ecac5fbeffaffffd28b838b7d8e728e92f7fdfbfaffffe322313b3e +38393e3e373235353636373535383a353e34201a1c1c1e3c992ffdd8ece9 +f3c982977f8477827879e3fdfff9f2ffff38403f3b3a3f3f3f40403e3c3b +3b3c40463c3a3f3a291f1c2600542a68e0fefee7fff3858b7d7e89706a7f +fffafdebffffe036284943484945364a4e36465d46484341424440362b1f +33301d5a3ab0f8e7f4ffffca7061656b686d5f8cf8f6ffe9e8ffb4203550 +493d3534393d35313436373a3c3e3f3b392c27242a22188320c4f2fbf3ea +ffca46505d594b556096fffffbfcfcf24f1e3e313b3d4237262a68837470 +696a71706971706e6d6d6f71727373747173b5b4b5b4afa9a9aeb0afadaa +a8a7a6a6a8abaaa39c9c9d9c989794918e8e909387888a8c8b857d75776b +5c4b3827232526282e33383835311f232322231e293e5867a1ced1a76855 +23173c0e15434b3e2d302e2d30261f232f32fb1f588a3b3d3e3d4a4a4e5a +565c2c32498c9ecb463affeef0ffff82c7d0d8d7d8dbdcd8d5d3d1d3d4d3 +d3d4d0cac8c1bab9bab9b2acafaca9a6a5a3a1a0a19e9ca1a5a7acb1b8ba +bdc2c8cdd3d6d6d7dad9d8d9dddfd5d5d3cfd2d4d3cec2b6a8a3a8abaaa5 +a7a5a4a2a4a3a2a1a19ba2a09b967129814f150c05120a183e6d5c2e4a61 +3c335e5d3a28577f5d27487383413a58734c2d3c6a5f352a5866412c5261 +402c4a89c3f88600180c1317130f0e1111151f2c292d413f4b42555d1216 +19171a1d20203e6b4c464a4444a82e26160000000b06181e22201b161618 +1e1d1e1d1a150f0d133a20fc6856444030395717120d1c02172517344839 +3c323b3a9117311928171417100d0e0f101111101214191917151018001e +373f9e39937c81727e3e0e1a0b1222172011747d7b828897ff440d0c2112 +0a0f110d0b0d07080b0c0c0d111000000809050d1b1d48b70be5aab7b7b3 +c1180d1022040611046a908b797f94ce401f0b0c181d1811161718171616 +18190f07080e0f0d0d08183184ba2caf808481887a222026201913020973 +747b7d8676a52d08000b00181a141d1d141a231b1e1b1f232015131c0b03 +2f2aa4a9547c6b63648456282e3936352d1e38857a75816398ad24190000 +1308070d120e0d110f0c0b0e111315150f1103150a1e9a5d5161636a5a69 +523430323631301e1f5c728d8b7eca6c2a01130a0917181c135ccce2e4dc +d9dedcd6e0dddadbdedfdedce1e0e0e0e07d7c7d7c777171767877757270 +6f6e6e6f72716a666566656361605d5a5a5b5e5556585b5a554d494c4438 +2a180a070c0d0f151d22221f1b090d0a0907020b24485b96c3c89e5f4c19 +0d2e010432372a191b1918170d04081115dd023a6d1e20211f2e2e34423e +47171e35788ab8312afcebe9fbfa64a1a4a6a3a2a5a6a4a3a19fa1a2a1a1 +a29e98958e878686857e7879767370706e6b6a6d6a6b7075777c818a8c8f +949ba0a4a8a8a9aaa9a8a9abafa7a8a4a09fa19f9a8d817471757b7b787a +7a787674737371716c72746e6c470870502a2d292e13102a5850284a6036 +2b5757342251795721426d7d3b34526d46273664592f2452603823475633 +1f3a7fc5ff900d291f282c27221e1d1a19212b252635323b3045510a1216 +131112100b215343434536278d24394f4e403d342230363b3c3935353740 +3f3d3c38312b2528451ae951413837252a3b00000019030e1b0d2a3d2b2d +20292c8c1e483d5846322c2827282b2e2f302f303232322e2d242d083146 +459a2b7a5d61536830091c171c1e0b0d016a7670727487fd543641554437 +383934343834373836332f2f322e31332a1c1c24224ab605db999d9792a4 +00000a23090a11005f7e77656d84ce594532333f443d36393a3b3a37373a +3a3025262c2c29261d273784b21d9c696d7178650b070e0f0e11050a7168 +665f6c6fae3e2423373048473d3f3e3238433d424041463f332f3521163e +35aaad547c6c62607e4b1a1b2620221c102c7b746c705395b63b3a292c40 +332e353936353a39383737393937342b29152313239a58404d50584a583e +1e15172020251c235b5b6e706bc2703c203f3b3c49403c2d60acb0b2aaa7 +acaaa4aeaba8a9acadacaab0afafafaf4e4d4e4d48424247494846434140 +3f3f4247463f3a3c3d3e3b3b39383535393c32333333322d25242a252017 +0d02030806080e121715120e0002030404010d274b5f9cc9cda3644f1a0c +2d00002a2e21121616171b130d111919dd00305f0c101b1d2b2b33403e46 +161d347789b42e2dfffcf1faec4a7c757167646568686866626263626465 +635d5c55525154534c464b484744464445444642424547494c5058585b60 +64676c6d6c6d6c6b68696c716c6f6c6866686661574d4240464d4f4e504d +4b4544423f4041404c51515331006648212425311c1d355f54284c654036 +5e5b3826557d5b254671813f3856714829366459312654623d284f5e3c28 +4488d1ff9a1630232b2d26201d1b17181e26191425222c24384500091110 +14181a1426533e3c3f332b9225333e382d2e3023343a3f3f3b3737394140 +3f3e3a342e25233f1aeb57463a38292f470504052007111c0e293b282a1c +2529881740334c3c302f2a28292c2e2f323132343737342f2228012b3f41 +972a7d6266586a2f0619151b1f0d0f0168706c72768aff532e3953453a3a +393330312d2f31323030313328282a2316171f1e45b205dc9fa6a4a3ba16 +1016280c090f005d7e78666d84ce5e4e393a464b433c3f403f3e3c3c3c3f +39303034302a2318243582b0209e6f757b83741d1c24221f1e0c0f726865 +5f6f77b746282638304a4a4348473d4350494e494b4c443530321e123931 +a8ac567c675d5f8253272e3935352c1d3683786f785d9ebd41412f324639 +3335362e2c32373738393b3c39372e2b1723121f985439464a564b5e492b +26282d2a2b1d22596176756dc06f3c22423f3f4a3f3724497b73756d6a6f +6d67716e6b6c6f706f6d7574757475b4b4b5b4ada7aab1adaba9a6a3a2a0 +a09ca0a39b9593938f8f8e8d8a89898f9085848282817e7b75786e61503c +2a2323272d37434b4d49433f281b1f1f15192535497895c0eddbb37d3c54 +1a150a112020312f29312b2128221e1e5d776d435145455049474a414548 +766b6b50f35e46dcb7e5ceff9cbccacdd8dbd9dbddd8d1d3d4d3d0d2d5d3 +cecac1b7b4b7b9b8b4aeaba8a5a29f9c99a09d9da3a8aab0b6bcbdc0c5cb +d1d8dbd6d6d8d6d5d5d8dadcdad8d3d4d7d7d3c2b5a8a4a7adaba8a5a6a6 +a6a4a3a3a4a19b9d9e97926b267d48150d04130a19336c702c447143354b +6d723d32718647226381652243656e382e48634b2b3a5b5c203564623424 +5fa5dbf93113100d0b060a101519233a5338235955595057912c343e4241 +3f3e3f667d5951545144e88a463e5f3c00012613191d1c18141414201c17 +181a20262c471f38250d5a4953588063223b2d22302b261752785e5d5853 +41d73c292e39201e1d15100d0d0e0e14141314151411101924392f1d2b14 +425c4e655471330a17141a0f242a1c645255495a227d351d393d23100b0c +08080c060a0d0f0e0e13100e000717171e2a27251c22624b545066590f2d +2d0b2c2824264e5e5d5f542a773020212d2f22151013151717171616181e +1c1e160b111a17281a312f1b634c505663511a2e4b291e1c1a1b575b646d +52494a5e89192d28010a110e101d18131a18101118181b35561122152320 +183a49475452792a171e2b322b17293756534f503d4659184a2c3f27170d +11130e0e14110f0d0c0d0e0e102048251735260a124b7b5a5f8283351e39 +2a342d20283c6867666a425c183b4a572804060a1d0a3dbddbe5ded9dbdb +d5ddd9d6d9dfe2dfdcdededededf7c7c7d7c756f72787472706d6a696767 +626969645e5e5b59595a595654575a5e53525050504e4b494d473d2f1f0e +080a0c121e2b3335312d291102060500000c22396886b2e1cfa974334b10 +090001101023211a20170b10080301415e552d3b292836312f352c303361 +535234d63f2ed4b7dfc2f7829aa4a1a7a9a6a5a7a49da1a2a19ea0a3a19c +978e84818486837f7875726f6d6a67636c696c72787a80868e9093989ea4 +aaada8a8a8a6a5a5a6aaabaca7a2a1a4a39f8d827472777d7c79797a7a77 +74707172716b70726c6b45076f4b282c2831171623585f213f6e402f4467 +6837286b7c411b5d7a5f1d3e60693228425d4525345553172a5957271755 +a2ddfd3a202122231e1f2428272d4358351c4d48493e4783222d373a3733 +2d2847604e4c4d432acd80556ea2833a28422c32393935333336423e3937 +393f43465a29331700483b484a6c46031e1818271f160944694f4b464436 +d3423c4d62493c352f2a292b2c2e3333323232302d29323a4f442e341336 +462f45365c2403181b1f0a16180a57474a3b48137b4440686f543d373630 +313633373a39353230333f2f343c3231362d271b1c56383b31453a001c24 +0a2d271f1b3f4b494c4620794c494a56584b3c37383a3d3d3a3939393c39 +3c342a2f37303b26352b1153363a465337000c2a0e0c15181b524c4b4a36 +465772a63f595831373c33323e38313a3a35363d3b3d54742b3828322a1e +3e4b47524b6f1b0408131711001627484843433646662f6b556c5444393a +3b37373d3b3937363638363342663d2b433213113a65464b6f6d1c051b0f +1b1912213c614e474f2f531c4d677e55353634412949a5b1b9b0a9a9a7a1 +a9a5a4a7adb0adaaadadadadae4d4d4e4d4640434b474543403d3e3c3c3a +40413b37363633333534313234383b302f2b2b282825242b2a251c110301 +0305091721292b25201e09000204000010263c6b89b2e1d1aa75344e110b +0002111123211d2822171d130a0640594b1f2e262a37312f342b2f325e51 +4e30d23a2edfc3e9c6f375817f726f6c65676b6b6466656461636866615e +554d4c4f514f4d4947464343403f3d454141474a4c50555a595c61656b6f +726c6c6a686765696c71716f68686b6a66574d4241474f504d4c4d4d4946 +414041413d464d4c4e2e006644222626331f212e61652545754b3b4c6b70 +3b306f8445226181632342666d3428425d47273657581c305f5f2e205ead +eaff43282825251e202326272c4051260a3d383a303a7818232f37363533 +304c624a4647422dd281506291732f274531373d3d3936363844403b3a3c +4247475621301600483a46496d4a09231d19281f160843664c47424134d0 +3e38475a433a37302b2a2b2c2d353534343634312d2f374c3f282f0f3648 +344a385b2100121419061516085141463848167c4139606e584038352f2d +322e323535343234353b282d352d2d322924171c583c4139504905262908 +28221915384442453d16744f4f505c5e51413c3e4040403e3d3d40474747 +3e2f31352d3924342a1254393d495640081c3b1d181c1b194e474646354d +6079ac425c5a333c423b3b47433c45443e3e433f3f56742835262f291e3f +483d46456d1e0a1420261e0a1c2a4846434a3e4e6c35705b7159493c3c3a +333137393836353837363543663d2a4330100c30583b446b6f200b251821 +1b111b325b524f5633561f516b855b3a38333d233375757c726b6a6b656d +6b696c70736e6d7273737374b1b0ada8a3a1a2a4a5a6a8a8a6a29e9c9896 +9693918f8f8e8c868688878283857f817c7d8781777878766f6151402f22 +2e3744556161524038261c21231c1a2215323f559ea9d2dee7dab27f5530 +18140608090a0c0e0c0b1025c6f68d6e102f2c3437352f31384066577e83 +5879a472baddf594e5dda1c5bbcad2dbc7dfd9d0d7d9d8d4d1d0cec8cbbe +b5b8bcbabab9aeadaaa6a09d9d9e9d9e9ea0a4aab2b7bbbec2c7cccfd1d2 +cbcdd2d5d8d9dbdbe4dddadcdad3cfd0c1b1a5a3a8abaaa9aea7a3a5a49f +9fa39f9e949b93936036773e180e08060e172f4b8049326551462b58846b +1a4e887929316a7f4326476163303450673b373f64462239674d253577c9 +f6c010020d1109060a1112172a48351d326266627c80818885918ba78e81 +94886e6e6b4c48cbefba254b69090e1619160f0e161e1d15101319170b1a +5aa242393b232542475a5e75a6887395938275937ca27b5668575d4dfc61 +3e5841390d101413100f1113200316190510170a4445726c172400355745 +4c5eab7348635e675d547259985058494537fbdc1f497444160709080708 +0e1011100c0c1011001106494c6f342b26101e684c6583a0942568514862 +4f585a675f58674344f4914e49664b170a110f0e10101214181a18171d11 +1243583227280210275c3d575ea6745d7174707f77635e695a5d604398ed +0a5948733e150e150e0a151a1a1e1e241a1b261d367955261e3105044b4d +5c5161ab6d6a696e756b756e7b6b695c5237efdd2e4b4c5c431f0e10101a +23170f0d0d11131107011d534e303423020952746f61d5b9827580877c81 +76787f706d6c5b73ff61234e4e361d10141a1b2294e6dbd8cedfdecfe3da +d8e1e6e2e1e3dddddddede7c7b78736d6b6c6e6e6f71716f6a666460605e +5d5b5b595a58545456555251534d4d484b5551474a4b4d4a3e3225150812 +19273946463728200d04090a03030b0019253c8595c1d3e1d8b07e522b10 +0c0206090a0a080100000faee17a600823171b20201f212830523f62622f +4d744dafdcef89d4c787a899a4a8ae95a89f98a4a8a7a3a09f9b95978a81 +8387858384797774706b686869696a6d6f747a82888e91959a9fa2a3a49d +9fa1a4a7a9a9a9b2aba7a9a7a09c9d8e7f7373787b7a7a7f787474706a6a +6f6d6e68726d703e1d6c42282b2a25221e253a6833245f5045234e78610e +447c6f222a657a4024465f5d272b475e322e365b3d19305e421a2a6dc1f3 +c31a13252d2725282e2c2d3e533314265658546e73747e7b868099806f7e +74606463433dc4f0c53e6d8f2c2b333734302f373f3e3732353b382c3b7b +be503e3a1e1d393e4f4f628f6f587c7c6e617e69906c485d4d574bff6a4c +6c5a55292d30312e2f30323f25383b2732392961638b84292f02334e363c +4e9d683f5c585f5346634a8b454e413f35ffea3569a07446353534333538 +3a3b3834323336293e2f6f6b89483930141c624055708c83175a453c543f +484857524c604046ffb37b76937844363d3b3a39393b3d3f3f38373d3334 +667a52443e12192958334c51956044545651615e4c4a57464a4a39a3ff27 +7c6fa06d463d423931373b383c414941444f465fa178453a46170f555258 +48559d5b565255594e59526252524d503efcf24a6e7589734f3e3d3c464c +3f3534353b3f3f382f4a7d7552503b16144a635d4fc1a56c5f656c61675f +616a5c57574a69fd6935686e5a4236363a38318ccebdb2a1aca697aba3a4 +aeb4b0aeb2acacacadad4a4946413e3c3e4245464a4a4845413f3d3c3b39 +3736353533313133322e2e302a282326302b23282a2f30281e120600070f +1f2e3b3b2c1c160600070d070911021d2638808ebacfe1ddbb8c633f2521 +111315161716110a0a1cbbea7e6006231c21262522222930513b5e5b2944 +6a45ade1f997e6d3889876736c6d586f6f676d6d6c686565625c5e51484d +514f4d5047494844413e404141424244464c525455565a5f646767686163 +66696c6b6e6e77706e706e676566594a4042474b4a4c514a484948403e40 +3c3d374646502309664127292b2829283044753f316d60532e568269184c +86772a316c8047294c645f2a2e4a613531395e401c336346203076ccfecc +231a29302927282c2b2b3c4d270518484b49636a6b7472807a967f6f8075 +5f63614443cbf5c9426f9230333b413e3938404847403b3e4441354484c2 +5038361a1a343749485b8968517574655a79638c69455b4c5950ff715575 +61592a2b31312e2e323441263a3d29343b2c65658f862b31053651393d4e +9a643a544c54493d5c4385414c3f3f38ffeb3368a3784835363332323638 +3a383635393e2c4131706d8a493a31151d624256728d7c0e51393047323b +3a48423c4e2d31f2b27e79967b4739403e3d3d3d3f41444745444a3d3d6a +7c51423c11182857344a498b593f50544f5f5946414d3b3c3d30a5ff2d82 +76a5734b4348403840424044474f4648534a63a37a473b471711564e4c39 +4792514f4c50564a554e5b4b4a485346fff74e72778c755142403f495041 +363334393e3c342c477b7251513b17103f534f41b69a61545c61565a4f51 +5951595e5472ff7441757b664a393737331c5d927f73606b695a726b6b75 +79716d707172727373b1b0ada8a4a2a3a5a3a4a5a4a19d9896989693908d +8c8b8b8987898c8a8481827f827d7f847e767a757570665949382a2a303a +464f4d413327201f24221a171b2820193e51708bb1c5d8e5e4e0d2c4c3b5 +a295928776727c7677e3eda0824b695e63625a504643443b57697372699e +f5f5faedce9fbea3b4c4c9b7c8e0d4dddad0d3d4d1d0d1d0ccd0c6bfc0c4 +c2c1c2b0ada8a4a09e9e9d9fa2a5a8aaafb6bbbdc0c5caced1d3d4d4d3d4 +d4d4d4d6d7dfdadadedcd4cecebfb0a3a3a8aaaaa9aba6a6a8a8a2a1a39f +a0989f948e5635763f1b15100a0b10224270633b4b645e2f41777f483264 +865c2c407d6a2d2a536d4f26485d532a385b5137334e533a2a5584def381 +000c080e07080f100b111f34080e21301a435f6050553b42463a847d4b20 +2d31293c589885120c1f001b1e1b18130f121715101b1414160b010f2c05 +688d28002b50515260606f69776b90725d636b47505d4033abdce6512b21 +06090a0c0c0b0b0c0d0a0d0c161e1717200042655ea15b4404496a676554 +739872a281a07a85848c62526d344dd0f4f1359a571700050c0d0c080a0d +0c09090c0e180f00315e9f817b3413005982697186889b88a9b4838f998f +846a5e595872d9e033295c1c0a290011101111111215171a161c110c2e3c +1846932b07003d796365807e858d96a49b80b28a8d875e774882e9945d30 +0816171a1f160c1013111417282015180e1236141b459c2400105f5a606a +8c7f899fa6bc9577ba956d86676029bfeda337071016050006090d100b24 +1d130c0807050400380313aa9b1201256c7569826179799e8c9a8d8b9d98 +717574526ef7e681171e140a0c1419181b79d1dadcd4e4e4d2e2dbd6d9de +e0e1e2dcdcdcdddf7c7b78736e6c6d6e6c6d6d6c6965605e62605d5a5857 +56565755575a5a5451524d4e494b524c464c484c4b44392d1d0f0c121c2a +3232261b0e07070c0c0302040d030021345877a4bcd5e4e5e1d0bebeb2a1 +979489746b716565cedb927b48644e4f514d453d3a3a2d4552544b3c6ecf +eafaeac591ac8d9da9aa939fb09da3a09da2a3a09fa09d999c928b8c8d8b +8a8b7b77726e6b6969686b6e74777a7f868c9094999ea2a5a5a6a6a5a3a3 +a3a3a4a5aba6a6aaa9a19b9b8d7e7474787a7a797d777577726d6a6f6b71 +6d77716d371f6c412a2e2e28231b1d3156492943666029356b733c26587c +55253b78672c295167461d3f544a212f52482e2a454a311f4877d4f28804 +23242d292a2f2c25272e3503091c2b153e5a5b4b50363d41347b75431a29 +2f2a4161a59626243a19393e3c3a3531343937323d3636382d2331491774 +9731023051504d5755625866587d614e55603d4a5b4138b4e9f7633f371f +25282a2a2b2b2b2c2c2f2e38413a3a4322638379b56a4f094a6a63614f6e +936b9a7796707a79825a4e6d3855dbffff51c186472e333a393832343534 +30303134433a1a5881bc9a8e431d02597e63697e81957e9ca6727c867e76 +625a5b5f7bedff63598c4c3a562b3e3d3d3d3d3e3e3e3c383e363357643e +68b1441a09437962627c75787c838c83679a777c7a55704d97ffb5825835 +45484b4e4134353430333a4e473e433b3f613d4164b8390c1e685b5e6685 +757c9095a98062a5805a735d6538d2ffc25a303e46373136363838324741 +3a36363838372969303bccb92e1326656c6078576c6d907c887b7887825f +676b4f71fff8983440383132383c393178c2c2baa8b1aa97aaa4a2a6acae +aeb1aaababacae4a4946413f3e41454546484746423f3d403e3b38363534 +343432343736302d2e282924262d27222a272e302922170800010a141f2a +271d110702050c0f09090a1407001d2c4e6e9ebddcf2f7f6e8d8d5c5b1a6 +a196827b817775dfe99f834f6b585a5b544b403b392a414c4f443664c6e4 +faf5daabc49a978c7c575d72657372666869666566646063595253555352 +5549484442413f41404346494c4c4f555855575c616568696a6a69686868 +68696a716c6c70706864645849404047494a494c494a4e4c454140393d3a +46474a1b0a633e272b2e2a271f233961563752756d333f757d463062855d +2d427f6e322f566b492042574d2432554b312d484d34255181dffa900b29 +28302a2b2e2d24252b2f000316250f3a5657474d333a3e347c73411a2830 +2c4566ab9d2f2e4524444945433e3a3d42403b463f3f41362c3a4f197498 +30002c4c4b49524f5a505c51765a49525c3b4a5c433bb9efff6d48422626 +262a2a2a2a2d2e2d30303a433c3c47286a8b80bc71530d4e6c64604c6a8f +638f6d8c67747580584f6f3b58dfffff55c88c4b30333a38373133373635 +373a3d4a41205f87c29e92461f02597d63677b778974939d6a757f766d57 +4e4d4f6ae1ff655b8e4e3c592e414040404041424548444a3f3a5b663f69 +b141180841795e5b716c70757d887f63967175724c66479affbc8a603b4d +4f5256483c3d3b35383e514c4249404467414467bb3c0e1f6753525b7b6c +74898ea37b5da07b546d5b693fd9ffc55e323e4838353a3c3f40394b4139 +343334333224652d3acdbb3113205b63576e4d6361856f7c6d6a7a755567 +70567affffa6424c4438353838321c4c89867d69706b5b716c696d716f6c +6f6f71717274adacaaa6a2a1a2a49f9f9f9d9a96918f9794908c88878788 +8685878b8a837f7f7e817d7c7f79747c7477766f6657443527272b313633 +2c24191b1e201d1b1b1b1d113033169eb35e7d98adbcccd7e0eee2eeefe2 +deeaf4f4eec6d6d0d5e1d7e1dfe2e1dfd8d1cac5bcb98c7b875f73ded19b +86d8c1adbbd6cfc3d4c9d8d3e2d1d0d3d4d2d1d2d1cccbc6c2c1c1bfbfc2 +b5afa8a4a3a3a19f9ea5aaadaeb1b8bec0c3c7cdd1d3d5d5d9d8d7d4d4d4 +d7d8d8d7d9dedcd5cdcabcafa3a3a8aaa9a9a7a5a7a9aba5a3a29fa19da1 +97884a3f78401b15110b0c101f4059794929666d452e59867f2638818c3e +1d5b87522333626b342e4f65373046524f343156572a3e52b3f4de260217 +0e05040b120f0d110c1b3209120f507a17488e453467884251350f1a1112 +2b0d000f030b14080a001315120d0b0e0e0b180d0a11130d0f1819111104 +02090206006a94a63880002a528070b1320e0019002a215018130e041111 +101113141312093511071f0c06111516010093616900100e0c007b74ab0f +711d63262c2972001f2f123e826d801412030007101010110c0e0f0f1010 +1213000c0009062232541f4c0600341d387380465b47367744738a580837 +2815234648230000130f0618131315151514141310090e09001318000c6e +231f00022b06022483831c7e094819787e4d0b060c0f1916272258050a17 +1e221a12161b1c2021342913120f050b0c060c5c1b270000150e0c4d8a8e +0e68005e0a077d00212317000100141618000205050a110e0d162a24190f +09080c0f030407000017241c0012170e0c9e9a5a324000681f8b780a1b23 +19150c0b0f000907080c1114111a53b6d9ded6e5e8dce2dcd5d1d5dfe4e1 +dbdbdcdddf777674706c6b6c6d68686765625e5957615e5a565352525354 +53575b5a534f4f4c4f4b4a4d47444e474c4f4c4439281a090a0e14191811 +0b00040608070404040400161700859e4f7391aab8c8d0d7e3d6e3e5dbd9 +e4ece9e0b5c5c2cad9d3ded7d8dadad6cfc8c4b7b17e696e4251c5c99a82 +d0b49ea7beb4a4b0a0a89fa8979da2a3a1a0a19e9997928e8d8a88888b80 +79726e6e6e6c6a6a71797c7e81888f93979ba1a5a7a7a7abaaa6a3a3a3a5 +a6a4a3a5aaa9a29a978a7d7373787a79797876767875706c6d6b71717874 +672a266c4027292a262019192d4060351f666f40244f7c751c2e77853716 +56825021315c622b25465c2e273d49462b284d4e1f2e45a9f1e23315302a +2320282b25202016233910191657811e4f954c3b6e8e49593e19261f223f +25082e24303b3135213636332e2c2f2f2c392e2b32342e3039372e2e1f1b +20151503739cab3981002a528071b53718062912433e6e383532262f2d2e +2f3132323128543228402d27343a3b240eae757a03191610017f79b01170 +195f22282570001f331b4c958499323b302b343c3c3a3b34363737353537 +392b392b322b434f6d345e14063a213c747f45553f2c6b38677e5005372f +20315e6e502424403c32443f3f3e3e3e3d3b3a352f34312b3f4428349041 +38120e330e10318c8a1f7c064513757c5012111922323548477e3036464d +5145383b3c3b3f435a513c3e3b3236352d2d78333a040e241d1958919211 +68005c08057b002127241115123339412c323535373c37343b4d473f3935 +393d4034323126223440310e20221915a8a25f354400681f89760a1f2d27 +28252c352b38383a3e42433f3755a6c0bbaab4b1a2aaa8a2a0a4adb1afa9 +aaabacae484745413e3d404441414242413d38363f3c3834313030313130 +3337362f2b2b292c26252822202c262c32302b2112070004080c130f0a04 +000004080a0a0c0a0a0015140080994c7498b3c6d7e2eaf3e0ebede3e0ee +f9f7f1c7d7d3dae8e1e9e2e3e2e1dbd2c9c2b4ae7b656a3e4fc1c79f90e7 +d0b5b3ba997876606a65766766686967666765605e595554525050554e4a +44424444444242494e515051575b585a5e64686a6b6b6f6e6b6868686a6b +6b6a6c71726b6562574a4242484a4b4b4a484b4f4f4843413b40404a4c46 +11125e361d2026211e18192f44663e28727b472c57847d24367f8c3e1d5c +8855263660652e28495f312a404c492e2b505125384fb4faeb391b342d23 +212628221c1d18263f161f1c5f8926579f5645789a515b3b18241f224027 +0b31293642373c273c3b3833313434313e3330373933353e3f3636262226 +1b1a09789fae3d83042c548273b63a19082911403c6c373430252f2e2e2f +333435342b57372d45322c3840412a13b57c81091e1913027e75ac0c6c16 +5c1f27267304273c24559c8ca03a413630373d3d393a343639393b3d4042 +323f313831485371376015073a223b76854d5f4a377744738a5b0e3f3524 +346071532727433f354742424242424140413e3a3f3931424527338f3f35 +120e351013379392288711501f8087591a171f28373a4f4f87373f4e5559 +4c4143434044455b533e413e373c3b32327c373e091129221f5e999b1a72 +09671310860a2b302d191e19383f452f3437393c423d3b43514940383436 +3a3d31303027243844361323261d1aaaa5633a47046a218c790c202e282c +2a333e313e3d3b3b3c3932212d738a816d7271636f6e6966697070706e70 +717274a8a7a5a19e9d9fa19999999895918e8b918f8b8885858586838181 +85847e7b7c7d827e7b7b757481777b7c79726453402a24212325211f1f1d +1e1c18171e22202b37342c5a82292c23435f728793979ebcaaa4b1b2a49c +a2a2a8a4a39d9693999191919495969491b7b6c0d6e0bb8667ddd67bd5ff +fbe0cdecaee1d5c3dcdcced7dadad6d3d2cec9c4c4c3c0bdbabbbebab3aa +a6a7a8a5a29ea4a9abacb0b9c1c1c4c9cfd3d4d6d5d6d6d7d8d8dadcddd8 +d7d9dbd9d3cbc7b9aea3a4a8a9a8a8a5a4a6a6a8a5a4a3a0a29ea0988140 +527c451e18130f13181e39447760254c6d6b3d356f9b4d2957896a2a2971 +80452140665c1f3d595a3530435a432449633d2c4a88beeea50315180f0d +141a1e222421131b12160a60e78b3b97e7e69de1cddf3f041f091b0c1915 +15170e02071520131b1c1715181b1b1f1a171714131d28070a17180a0001 +170fe9661704bebdaf9ef09d930609230b1d042816241d071f11110d0f13 +1514102160331a2a1d211607001e000d001912131b2206e91e322dd054b1 +3a00c7fa08143c3504220b001b1d1c1d1a0e04050e0c0d0e111110110f11 +18140e0f101425220c081d04015ebf0f858e803bbc44717fb70418041824 +00001114080b1616140d0f1010100f0d0c191215150f16180900160d211a +180e1a00c88f8133df5985886f45ca750c1b172b13110524110600141a15 +0e161d20272e35240d10130c0b110a120f1b492d1a021502ab693431d262 +9e581af52e0c080c3c342e15160b1209110b08120e0d211616130f0b080a +0d110e0e131d261c061d03200b19d1003b53c883d02eb48d9300142e3313 +2424000c0b0a0808080b183da0dde1d4e0e8e2e1e0d8ced5e1e5e0dcdcdd +dede72716f6b6867686a626161605d5956555b59555250505051514f5155 +544e4b4c4b504c4949434451494e53524e4433230d080507090806060606 +040001070b0917231f14426d141a143754677b86878da89592a1a6999096 +969b9596928d8c928989898f93949290b3b1b6cad0a87257d9d577cdf8eb +cbb8d291bead95a8a394a4a9a9a5a2a19b9690908f8c86838487857d7470 +7273706d6a71787b7c80899294989da3a7a8a8a7a8a8a6a7a7a9aaaba4a3 +a5a7a6a09894877c73747879787876757575726f6d6e6c72727775602039 +6f4225262724231d17272c5f4d1a4c7066332b6591431f4d826323226a79 +401b375d53163450512c273a513a1b405a321c3a7cb8f1ae122830272328 +2d2d2d302e21292024186ef59948a4f4f3aaeedbee5217331f3328373738 +3d372e34424c363b3b3734383a3b3e3a363733333c4a2c303d3c2c1b1d32 +27fd782812cbc7b9a7f9a69d151b3620372149394a452f442f2b292b2f31 +302e3f7d5039493c40372e1c43232a142d2322292d11f32a3c36d455b23b +00cafd0c1a4643163826193c44454643372c2d3532333434343233343c45 +4037343336433e241c2f140f6ac815888f7e38b93f6c7ab5071f10283619 +223d4034373f3f3d36373738353532313e393c3e3b434635293d303e302a +1c290be2a59443ea618d907750da8822353246302f274937312c3f453b33 +373b3d444d574733383c3534382f332c335c3f2d1a311cc27c4541df6da9 +6325ff3b19151a4d48473237323b353d343139333042353536363535363a +3d3834373c42351d351b38212fe40b4d63d591dc3ac096a00828474f354c +51313f3e3e3d3c3a3b383f8fc3c0abaeb3ababaca7a0a4b0b3aeababacad +ad4342403d3a3b3f413b3c3e3d3c383533393733302e2e2e2f2e2c2d3130 +2a2728282d2724241e202d272d3535342b1c110504010305010101000202 +02040d130f19241e12406a111a173b5a6f858f9193a99492a2aa9f9aa2a4 +aca8a8a39e9ea2989694969897938eb2aeb5cad1aa745adadb86e4ffffda +b5bb67866f576e6e626d6f6f6b6867625d575756534e4b4c51534e464246 +49484542464d4d4c4f585e595b60666a6b6c6b6c6c6b6c6c6e6f706b6a6c +6e6f69635f544b424448494a4a48494c4d4c4946423d42434b4f4109255c +3115171c1b191711232a5f512054776d3b336d994b2755896a2a29718046 +1f3c6056193753542f2a3d543d1e435d38264586c2f8b5172c322721262b +28292e342c342b2f257bffa658b4ffffbbffe8f15015321d332937383a40 +3b3137474f383a3d3636373c3a4039383635323e4c343b48483626283d31 +ff82321bd4d1c3b0ffafa61a1f3a21341c42323f3a243c2d2a2a2c303433 +304181543c4e3f453c332149273019342a272c2f13f42a3b35d759b63f05 +d1ff1726504e22433124454b4b4c47392c2d34333435383a3b3c3c424a43 +3b3a3738453f261d2f140f6acd239ba3934dce558290ca1a312037442428 +3e43353a41433f3a393c3a3b383837464043443e464634273a2c3c2e2a1c +2c16efb3a353fc74a0a38a62ea9730423d4d36373051403832484c443b40 +4343484f5849343a4039383f35383037624334263d29d08b5551f07fbb75 +37ff4c2a252757514e383c373d363e38353e39364738373835343235373c +3635373f453a233f27442e3cf2195b72e59eea48cea5a908264450364e54 +35423f3c37302e2b211a63928a6d6f716a6d706c656a7576717071727373 +a5a4a29e9b9a9c9e93939392918f8c8b8a87858383848384837f7d7f7e7b +797c7c817d7a7a7475837f8182807c71604c34271d1d1f1d1e212927211b +1d23241e263c3e76b9bc307b33372b1c2841596e6d6d6b707d857e73778d +6d7e72786e7078726c6a6d70716f6e728da0acccd5adffff7cf3ffffd1dd +deb5b7d9d3dad4dcd9dbdcd7d3d0ccc5c5c8c9c4c0bdbebfbab3aba8a8a9 +a5a2a2a5a6a7a9b0bbc4c2c5cbd0d4d5d6d5cfd1d6d9dbdbdbdadbdbd9d7 +d4d0c9c4b6aca4a5a8a8a7a8a4a4a3a1a3a4a5a4a1a29d9b9679386d7342 +24211b15141724383e62784431618b62224489863a255b8b5d1841806b39 +284a6e402c3b624d2b3256562d335553273b5a8fd9fb4c00171415181a1b +2022121f1d1e2223042a47d393e4f270eb167ce10319360f2a161e0d1f1a +0a0b02090d171a1614171b1c1115191a16121415141a16141b2726150939 +c6ce918bf2f3a13583e9aa08241b183234432f1400071515121317181715 +072e192023142410260017221730142b2218240ab9f2e51ef7e8f94caab9 +f90028503e21251b311e1c120a0a0e14181e16161618181715110f0d0b0f +25251d19252c1e1c1a1b2eebb07150f8f9f20d00a7f90025241c1d241e00 +1320050a1902141617181a191714140f0e0e0d0f110c150c160c11351c2e +058dcfcc537ff1efca033feb9307081e1922121d030a14191b221c13191d +20283e3220171816151a130a281322232b3f451c0075dec26e9af0dcdc00 +ef91152f301d162115220c1a13180f0c1916132317171817130f0f10081e +110b2721152c2444152a12c2e5d05cdee1f149e530f12b2d351f09020b0b +0d0e0d0c0b0d12212d87dce7dcdee3e1e0e1dad3d9e3e6dfe0e0dfdede71 +706e69666567695d5d5d5c5b5956555452504e4e4f5152514d4d4f4e4b4b +4e4c514d4a484243534e535757544d3c2d190d030406060609110f090204 +0a0a07132c2c64a5a81c671f241708142d44554f4c4e57697571676b8260 +72656b60636a645e5e62656665646881939fbec5a1fdfe78ebf7f8bfc8c5 +9996b1a5a89da5a6aaaba6a29f99929194959089868788857e7572737470 +6d6f72757779808b9595999fa4a8a9a8a7a1a3a5a8aaaaa9a8a7a6a4a2a1 +9d9590847a747578787677757572706d6e6e6f6c72717172571852613b23 +2928231f191a26254b663a2f62865b1b3d827f331e5181530e377661301d +3f63352130574220274b4b22284a46172b4f88d8ff550b27242424232222 +261f2f2d2e3233143a57e3a3f4ff7ffa268ef3152d4b2744323c2c413d30 +332a2f2b3234312e3235372b303335302d2e3339423e3a414c46332551dc +e2a39dffffaa3e8cf5b8193730314d526351392229302b27282c302f2d1f +4732393c2d402f4c253d43364c2b40352a361cc8fff42cffefff53b0bfff +023460503740374f3f3e352d2d31363a3e3535353535343232373633354b +483f38434838342f3142fcbc7958fefdf40d00a9fd003135313440412639 +462b2d3c253738383a3938363535323436373b3e393f33392a2b4b304321 +aaeae56891fffed91351ffac22253b323b2e3a212c394040473e34363939 +40584f3e373c3c3b40362b472f3a363d53613b1e92f7d883acffecec0bff +a32742402e283830412d3d393e322e38332f3f30333637373636372f4533 +2940392a403f6132462ddcffe773f3f3ff5af63fff3f434f3d2b2935373b +3c3c3a36373d3d2c75c1c6b2aeb0acadafaca6abb5b5aeafafaeadad4241 +3f3d3a393d41373739383937343332302e2c2c2d2e2f2e2a292b2a27272a +282d2926231d1e2f2d3237393a332219120c0200020002050d0d09050810 +130d152c2c64a6a91d692126190a152c4150474548536876787177927286 +797f77777b736b686a6b6a666569859aa9cbd2adffff89ffffffcdc7af72 +6174696d656f6d70716c68656059585b5c57514e4f52514c464447484643 +44474a49494f5a5f5a5c62676b6c6c6b65676a6d6f6f6e6d6e706e6c6c68 +635e534944474a4a4b4c47494948494a4745404244474e3b033d49210e14 +1714110c101c1e45643932668c62224489863a2559895b163f7e69352343 +673925345b46242b4f4f262c4e4d21355790deff5a0c27232120201b1d25 +273c3a3b3f42234966f3b3ffff92ff3592f3152e4c2745333e2f43413335 +2c30292d312c2b2d3232282b30302d282b333f4a46434a55513e305de9ed +afa9ffffbb4f9dffc3213d312e464856412710192b2928292d32312f214b +363d413144324f2740483b5031453b2e3a1ecbfff72ffff9ff5dbccbff0e +426d5e444b435a48473b333133373b3d373737393b3c3a39393835384e4a +413a43493734302f41ffcc906fffffff2717c2ff17474944464c47273c47 +2e2f40273b3a3d3c3e3b3b3a3a363736363a3b343b2e352828492f462dbc +fdf97da7fffff02a67ffc03537493940324029354147494f473b3c3d3e44 +594d3e363c3d3e433c304c333e3c415a6f4d30a4ffed98c2ffffff22ffb9 +3d534d3832403744323f3a3f34303b37334334343836373335342e423429 +443b2f474a6f40543eedfff985ffffff6eff56ff40404c3b2a2834363939 +36302c292c270e4f9491766e6e686b706e6b707a7a737575747373a5a4a2 +9e9a999a9c8f8f8f8f8e8d8c8b8382828282838282837d7b7d7d7b7b807b +807d7a7c76778584878583817a6957432d1e1d202021242c2a282725221f +1b2b4163b4baeb4f301f302e1e1e2220233d535d4726192333d3c16f786f +857468534c4642414343403d4f595e6e89a3b0bfa558cbb29284b481dcb7 +d9e7d6dbdad1d5d6d4d1d0cbc5c5cacbc5c1c0bfbdb6b2aca9a8a7a4a1a8 +a8a5a7abb5bfc7c3c7cdd2d6d6d6d5cdd0d6d8d8d6d4d1dbdcdad5d1cfc9 +c1b2aba4a6a8a7a6a7a4a5a39ea0a3a5a3a1a39d96947131858f6a595f57 +4944433f4949517b662a418781382c609c5f20307d7f3827556e65313255 +6f2b28455d3a2e445940283a56452f3572b2f3c6251b212a30302f303128 +26263211245bf8dbab75959c62c9c3eb8b0d38192325122315200f0d2219 +161a20231f1c1e201f1b1a191b222621171113101e1c101d23166e6b6fd5 +8adddc858c42a9c807502f203325333028211e1a1917181a1b1c1c191419 +3f37162119162a120c1e28234837282e18315c94c5f2cbf46efbf9f94519 +1d16353c20250e181c24241f17110e181719191a1916100d191c15130c11 +1f21201c1c304b006521f565f2cbf332372bee2536201f191b1327180c22 +22141e17171919191817171a19171413141516151d262e2d2e251e0f0057 +31f267ece0da46f47101162722221b0c3426131611192220181c1e20283a +261c1e1c121016291719222c31292d1d2a2e004632e293f4d4ec0061f404 +31412441150a16171413141318201c181e29251f1a1714141422071c2f1a +28413236313e42282a5150e5b9e1f398ed7cf55e3b3222341d121e14171a +1b1a1919242161c3dee4e3e5e0e0dfdad9dde2e2dfe2e1e0dfdd706f6d69 +6564656759595959585756554e4d4d4d4d4e5050514d4b4d4d4b4d524b50 +4d4a4a4445535456585858524436281506050808090c1412100e0c090506 +1b3655a6aad83a1a0616120203080606172b39290d041326c7b6626b5e72 +5c4f3a342b28272a2a2a293a454a5c7891a3b9a254c3a58472a06abf95b2 +baa4a4a39ea4a5a3a09f9892919697918a898886817d767374726f6c7575 +75777b869098969ba1a6aaaaa8a79fa2a5a7a7a5a29fa6a7a5a09e9c958d +80787476787775767576726c6a6d6d6e6c73706c704f10697a5c535f5c50 +474031353138685b263f827a3125599558192673752d1c48615826274a64 +201d3a522f23394e351d2f4a361f2868b0f4cb2d252b3335312c2b2d2c2f +2d3b182d62ffe1b37b9da26acfcbf49517432431342135283527253a332e +2f3336322f3133322e2d2c2e3539342e2f322f3c3a2c363a29817c7ee294 +e7e4888d45acce10593a2e423648453f38352b282627282b2c2c29262b53 +492a3531344930283740385b493a402a406ea3d2facff874feffff4d252b +26495238402933383d3e39312a2731302e2e2f2e2a292b393c33312a2d3c +3b3a3635496414782fff6ef9d0f9353a30f52e4430332f362f45362a3e3e +303a3131313131302f2f3436353436383a3b3a40454b4642383226156d44 +ff74f7ece552ff81142c3e38352d1f493d2f312e363f392f3131323a4d3b +3237362f2e344733323a3f43383f3545450e5944f2a0ffe1f7056eff113f +4d314f261f2e33302f312d3035302a303b39353331313333412436452e38 +4f414a4855583e3e6462f6c9eeffa5fa87ff6c4b45364d372f3c32363939 +363334331b4ea7bcbab3b3aeafafaeacb0b5b3aeb1b0afaeac4443413d3b +3a3d3f33333535363534332c2b2b2b2b2c2d2d2e2927292927292e272c29 +26251f202e303537383c382923211506030604050812101011100f0e0b1c +3455a6addc3f1d09170f00000000000a1f2d210803162dd3c4737d718672 +644d443a3530302e2d2b3f4e566c8ba7b5c3ab65dac19d82a1589d65797f +676b6a656a6b6966655f59585d5e58525150504d4b4744454645424a4847 +474a525c625b5e64696d6d6c6b63666a6c6c6a676470716f6a6967635b4f +4946484a494a4b494a4a4748494846404546444e3400545f3f3947483e36 +31242a2731645927428881382c609c5f202e7b7d3524516a5f2a2b4e6824 +213e5633273d523921334e3d293170b5f8cf2f262a30312c27252a2f3635 +4222366cffedbe87a8b077ddd6f997194526323724372c3829273c342e2a +2d302c292b2d2c282726282f332e282f34313e3c2f3b4030888385ea9df1 +f19ba258bddc19603c2e3d2c39362d242323252324282a2b2b29262d544b +2b3633364b322b3b423d5f4d3e422c4370a6d8ffdbff80ffffff5a313833 +545d4249303a3c413f3a3027242e2d2f2f3433312d2d383b33312a2e3a3a +3933324661127c3aff7fffe3ff484b43ff3f513f3e3c3d3245362a3f3f31 +3b3232333333323131353433313234333433394046424036332e217b52ff +84fffcf762ff9023394c433b2f234e433338343c453e353635343a4b362f +33352d30364936363c43453b433f50531a6852ffb0fff1ff157fff224c59 +39582d24303431302f2c3036312c303b3833302e2d2e2e3c2033432d3850 +4451505d6349497270ffd9ffffb6ff9bff6d4843354a362d3a3031332f2a +262520032e7f8c80736e676a6d6f71777c7b767776757472a1a09d999493 +94968e8d8d8b8a8987878081828381807f7e7c79797a7b797b7e797d7c7b +7f7a798588878483848073624e331f1e232120212424282b241d242d335b +79baf4be171c2e474b3e404b58667e75818f672e3a72585e4656464e5256 +4d4c4c4c4c4b4a4744433c404c4f5b749aa5b7c2a99eb1ad8dd4d0d4dad3 +ddd0ccd1d4d2d1d0cdc6c4c9c9c4c2c1beb9b5b4b2afaba8a5a3aaa7a4a8 +b0bac1c4c5c9cfd5d8d9d8d7d1d2d6d7d6d4d3d1d7dbdbd7d4d2c9c0b0aa +a4a7a8a6a5a6a3a6a6a0a2a5a5a0a1a39f96956c289282635a5f55474546 +5458534866794a2862846b3136787d4d254f766534335a704a2c386b462e +2f4f4f392e4653362a485c382a4d84c5fb953c454e5456575a5b5a656c5e +52684765692d485e48424b597843566749686c5b605f635757604f464d4f +504c4b4c4c4a5651463e4248453b40534744464d5a473d51d8ea664a8373 +6a81fbf7473e51344c45684947312d382f2e2d2c2c2c30323d2f354b482e +29302149322838242228302f371775f7f57c8b6acc4e2c30de26323a3921 +2a362834202a2f291e1c26312b2a2a2c2f2e2a2526261a1d232a23281f3d +3520372b13d9edf93bef42f446fef7ef2a252a2f21241c2e392718293119 +2c2b2928292827271e25221a1c1d1a1b191618363a293b40392de9e2e532 +ff41f388fdefb92f3c3629382e1b1329341d2631322d3134353d40313136 +2f2727281c26202f29455144554a5a23d0e1e84dd736d645bcf295515820 +302c3c372d242e2a323a35323533413c353131322f2e302f34362f335477 +766f836b465fecddbe3d8c67917af1ea7b88833e364741353b3e41424140 +40444c5fb2d0e5e5e3dee1d9d4d8dbdddee1e1e0e0dfdd6e6d6a66605f60 +625a595856555452524b4c4d4e4f4e4d4c4c49494c4d4b4d504b4f4c4b4d +4847535656565658574b3f321b07060b0908090c0c10120b040b18275370 +afe7af02031128291a1d2b3844584b5b6d4a1627634c5238442e2f2d2d22 +21202021201f1e1c1f1a1f2f334161909fb0b99c8fa09976b9afafada3a9 +9c9aa0a3a1a09f9a93909595908b8a8782807f7d797774706e7774747880 +8b9295989da3a9acadaaa9a3a4a5a6a5a3a19fa2a6a6a2a09e958c7d7774 +77777574757477756e6c6f6d6b6c72726c714a077568504c5752463f3d42 +423b2f536b41235c7e662c317378481f466d5a272449613e222e613c2425 +45452f243c492c203c4b271b427ec3fa9640474e504f4c4d4e515e625648 +603d5d5f253e553e3940506f3c5061436367565e5d63575761504a54595a +5655565654605b50484c524f454c5f535050545f4c3e52d7e662447d695d +74eeea3b34472e4640654745322e3a323332313132363843383e55513833 +3c345d443a483230363b3a42227fffff838b68ca4e2a30e12a3641422e39 +483a462f383d382d2b3540383736383b3a353336392d30363d363b325048 +334a3e26e9f7ff41f546f647fff8f33030363e31372f414c3a2b3c41293b +3a3837353433332a34332e31343435332d2d4a4b38474b4233ede3e430fe +3cee86fbefba33413f324137251e39432f384340383b3d3e464a3d3c433e +383a3c303a323f37515b4e5f546229d4e2e74bd534d143baf294525b2537 +364a473d373e3a4146403b3b394a45403d40434241434043423a3c5a7c7c +7589714c63f0debf3c8b648e77ebe57986833f374b473b41434645434040 +413f4a96aebbb5b3acb2acabaeb0b0afafb0afafaeac43423f3b3837383b +3534363433323030292a2b2c2c2b2a29282525282927292c272b28272823 +222e333535373b3b312b2e1b070409070405080a10150f08111d275171b3 +eeb60b091325200c0a14212b453b4e6344142968565e45523e3f3f3f3534 +2f2d2b29262424292830454c5c779ba9c0ceb6a6b09b689c847a74656d60 +5f6669676665615a575c5c5753524f4c4c4b4b4a484544424a4746484f57 +5e5d5d60666c6f706e6d67686a6b6a6866646c70726e6e6c655c4e484649 +4c4a4b4a484b4d494a4b484342474846513100634d3031403f342f2e3435 +2f284f6a442760826a3035777c4c234b72602e2b516842232f623d252646 +4630253d4a2d2140512f224882c6ff9841464c4d494645464c586053465d +3c5b5e233f563f3a44537443546547676b5a61606559596352494d50514d +4c4d4d4b5752473f4349463c42554946474c5946394dd5e561447f716e86 +fffb473d4f30463c5e3b39241e2c292d2c2b2d2e323441353d545037323a +325c443a483231373d3c442481ffff899575d558353aea333f4949343e4c +3e4832393d352a262e39313032343b3a37333535292c323932372e4c442f +463a24e6f6ff41f347f549fffaf2302c34392e332b3d483627383e263837 +353433323131262d2b25282a2b2c2a232641433143474133f0e5e933ff40 +f489fff1be34443e2f3e3626203946313a45413a3c3c3b414133343a3932 +383a2f39323e37515c4d5e536429d7e4ec4eda37d746bff4995660293d38 +4b463c333b373c423a36373545423c393b3d3c3b3d3a3e3e363958787871 +856f4a62f1e0c341916b9780f5ec7c878341394c47393f3f403c38343432 +2c2f718081736b636c686b727979797a78757574729c9b98938f8d8d8f8e +8e8c8a8886848380828384817f7c79757474797a78777a787c7b7b827d7b +85898783818483796a54351f1e24211d1d1c1b21251d182d474254adb4e5 +590d2333607a7572777c857a9a9370799e8747362c2d373b3c4944484d53 +5757544f493f2c37433738494a5d809cbdb6e6e7ffff9bc2c8c3cfd4d9ce +d3d6d4d3d1cdc7c7cccbc6c5c5c1bab7b8b8b5b0aba8a7a8a5a2a8b2bcbf +c0c7cbd2d7dbdbdad8d5d5d7d7d7d7d8d7d2d9dcd9d7d4cbbfafa9a4a7a8 +a6a5a6a2a7a9a4a5a7a59da1a4a1979768229982655a5c52474c544d5251 +43528477293f7b99431f4a8c7f30285d7e4d2d495f5a303045653c31355c +431e305e49283b4c44303066b2dde94a4d4f4c4e5258595c586b5a64795d +6d7075666070865b8266669a737d8d7c786d69696d74716c7a6c6c6c6a6a +6d6c68646e737070757671797d707e7e707f7f7b7574627984717774635e +7e67768d7a7a6e6d77746c716b686869676364696d6a716d616f796f786f +63718b90968770807a7d7765726d646967676b747569727271707b69616e +746f6b6765696c69646a696a6d70706d69636c636e6d72646b6e64716c8f +925c63775d606e5065516d766c6471676f6c676d575f6c61616c67716f6c +6968676767627271686b6d676779666d6b6e777676855d6d737b51755e75 +666a698a6b89817c6b6c79707a5f696875756d6f6f7076766f72746e6e75 +72787b77817973907a7d877e7a706f7d667e7a8e726d7776817f8b89896a +756b73796e7a7e6e6e7976767471747a7b78737f75747d8074717b7f8976 +7f866f6b637e6879776a746761756f86837a89828c83838486888e94989c +85bbcee4e3ddd5e3d5cfd4d9d8dce1dfdfdfdede6867645f5b59595b5a5a +575553514f4e4b4d4e4f4f4d4a494544464b4c4a494c4a4e4b4b504b4953 +57565554585a5145371d05060a0905060503090d04001433384fa8addb4c +0008143b504a4a50596254736d4b58827136291f1c201b12170e12171d22 +221f1b1810010d1c14182b324d7590b0a8d7d5effa81a2a498a1a0a59ca2 +a5a3a2a09a94939897928e8e8a83828383807c77747275727278838d9091 +9a9fa6abafafacaaa7a7a6a6a6a6a6a59da4a7a4a3a0978b7c7674777775 +7475737878726f716d686c73746d7245017a674e464d473e40443a3a362a +3d746b1f3675933e1a45877a2a2252713e1c354e4e26263b5b32272b5239 +1426543f1e2f3c3321235dacd8e748494742404345474845574650654959 +5c61524c5c72466d525187606a7a69655a56575b64615c6c65696967676a +6965616b706d6d72736f73786b79776776736d67635166715c625d4b4767 +505f7966665b5a64625a5f5d606162605f606569676e6c606e786e797468 +769092988972827c7f7967746e625f5c5d626b6f646d706f707d6d657478 +716d68686c6f6c676c6b6b6e71716d6a646f667170776970756e7b76999d +676d7a5f616f4e614d69726a65736b76756f755e66736868716c74726f6c +696868686272736b7175717385707773747a7976815463666c42644d6455 +5b5a7d61807a796b6b7a727c636f6e79776f706e6d737770747871747c7c +818480877e78927b7a83777166626e576d697d615e6a69787989898b6f7a +727a7e747d806e6b7572737171757d817e7b877b778081746e7777826e77 +7e656159715b6a685a645551676178756c7b747e74747374767a8185876d +9da9bab3ada5b4aaa6acaeaaaaafaeaeaeadad403f3c3734323234353535 +33312f2d2c292b2c2d2c2a27252120222728262528262a27272b26242e34 +3534353b3e3732311d0404090501000000070d07031835374cacb4e45604 +0d12334237303339443d6260425381743c3228262a261e221b20252a2c2a +251f1c160a1b2e282f4548587d9ec2bfece3f4ef687c726165646961686b +696866615b5a5f5e595656524b4c4f514e4c484546484342474f575a595f +62696e7272706e6b6b6b6b6b6b6b6a676e7370716e675b4d4746494c4a4b +4a474c504d4d4d4a40444a4b47552f00684c2f2d38352f32372c2e2d233a +756f273b7997421e498b7e2e26587845243e545227273c5c33282c533a15 +2755401f313f39262a62b0dce8494845403d3c3f3d3d374c3b455a405053 +584b45556b416a54568b626c7c6b675c58575b64615c695d60605e5e6160 +5c5862676464696a636365586667586765625e5b4a606b59616558517158 +657b676557545d585055525557585656575c606067675b697369736e6472 +8c8f95866f817b7e786673706567646567707368717372707c6c6472776e +6a63616566615c616063666c6c6b655e685f6a6970636a6e66736e919561 +656f5153614155415d665d57655c6664606a565e6b60606a656d6b686563 +626260586868606568666779656c686a73726e784b5a5e653b5d465d4e54 +5375587772726366756f79626d6c78746c6b69666a6960676a686a75747c +7f7b837a748d7571786d685d5a67506662765a57626173798a89886b746b +72776a747564626a676c6a696d747774707c716e77796c676e6a72616a71 +5b58506b5567655a645551676178756c7a737b6f6d6b6a6a6f737674537b +7c8071655b6e65666f7776777a767474737397918b88898a898785848484 +84827f7c7d7c7b7b7c7a767375787b7b7b7d7b767e7e7e7b7b7d83888480 +7f8381766a61422e221f24222225271b212d1d174573428ebac5ca0c0f30 +3786978f8d87848b857e8168af7f38313030242f4a4b6d585c585c626159 +5456473e3a332d363c303e3a5e8db4c6dbfffcb5caccbed9d7cdcdd1d4d3 +cfcccfd3d2cec8c4c5c3c2c1bab8b7b7b5b0a8a29fa4a6abb5c0c5c4cccf +d3d5d6d6d8dad8d4d4d5d9d9d6d2ded9d5d5d4cec2b8b5ada5a7a8a7a7a8 +a7a3a5a4a1a6aa9fa5a89a979362343a766e61565356534d50555f5a3b66 +9a542943919024275898622231667f3e34486253332e4d543a2a3d60401d +4256352442553c23437ab8f7cc32524d4a574d5d5657585859595a5a5f5e +5e5f60616363595b5f6262605d5a635d5755575a5c585653525253545555 +5a5957555557595c575c6064656461616968666464646867636264656564 +636365646260606264645f5b59585758585964605a5a5b5d5d5b5c647487 +938e7d6d7c736863646666676a7377757175787a6a686664676765626867 +6a6a69676b726d6c6c717e88857e7e7b76706e6e6e6f716c6a6a6e6f6d6a +6e757b7e7e7d80816d6b6c6e6d6966686b6d6f7275787b7c7a7775757675 +74717c7b7975726e6b696c69676a70747270787a78797c7f838582828181 +7f7e7e7b76757472706f6e6d67696d6f7272737374747371706d68666265 +696c6e6d6c6b797673757e817f7a7a7a7a7976706c666663626160616162 +6968686767656564636160626869655f585f6464656a6a6b6f6d696a6f73 +7270737577747070777b7268656b73787571717c817c797d828290859ccc +ece8dddbd9d3d0d5d8d7dadfdee0dedbdd66605a57575857555352525252 +504d4a4b4a49494a484643454a4d4d4f514f4a5252514e4b4d5156544f51 +56554c423c241506060809090c0e02081303002a5f388ab8c2c402001614 +5c6860605c5e68655d5d438b5f1d1a1c1d0d1221192f17211f242a292321 +241914120f0b171f182b2a4d7da3b4c9f8e59aabaa95aca59b9ca0a3a29e +9b9ca09e9a94908e8c8b8a85838282817c746e6c71767c869196959fa3a7 +a9aaaaaaacaaa6a3a4a8a8a4a0a9a4a0a0a19b8e84837a75777877767778 +7474726b70726a70776d6c6e3f131a5853484141444139373a4441235189 +441e3d8b8a1f2253935c1c2659702d20355347272241482e1e3154341136 +4a291532452d173871b2f1c329463d384435453c3c3d3d3d3d3e3e434242 +43444547463d3f43464644413e47413b393c3f3f3f43454444454647474c +4b494747494b4c45484b4f504d4a474f4c48464646474846464647484746 +4648474543434547494b4b494847484a4b56524d4d51535351525a6a7d88 +83726271685d58595b5a59565e63615f63696b5d5b595a5d5d5b585d5c5d +605f5d626964636267747e7a71706d686461616465686563666a6c6a6665 +6a707371707172605e6166676361636567696c6f727374726f6b6b6c6b67 +656c6b69686665636366636162686a686466646262626567696666676768 +6868696869676867666766606264666868676769696a6a686764645f6266 +696a6965636c656062686a655e5e5e5e5d5c59555259585958595a5a5c61 +605e5e5b585554555354585e615d5952595c5c5b5e5e5b5d5954555a5c5b +595c5e5c5955555c625a534d515a5c5855535c5f5b585c6163756b7ba6bf +b8adadada8a7adada9a8acadafadaaac3e38322f32333230302f2f2f312f +2c29282726262725221f212629292a2c2a252d2d2a2725272c31302e3037 +3a33292a1c110301040202050700041204002f613789bdcbd00d08190e4e +5444413a3a484c4c513d8b62242225231316251c321b2725272d2a232025 +1b181a19192731262f2d558ab5c4d5fddf878c7d6171685e616669686461 +636765615b57565453524f4d4e504f4c453f3d424548525b605d64666a6c +6d6d6e706e6a68696d6d6965736e6a6a6c665c52524b47494a494b4c4c48 +4c4d494c4f42484e44495129040b40383230333a373030313d3d2356934f +26418f8e2326579760202c607735293b58492924434a302033563613384c +2b183548301b3c74b4f3c62a463d363e313b2d2b2c2c2f2f303037363738 +393a3c3e3a3e424545433e3b433d3735353839383c3c3b3b3c3d3e3e4342 +403e3e40423f3130363a3d3b3a3842403e3e3e3e42434243444544434242 +4441413d3d3f4142403c3c3b3a3b3f404b4744444749494749516174827d +6c5c6d645b5657595a58575d62605d616466555351515353514f57565556 +5551535a5554565b6b75746967625d5858585a5b5f5b5b5d6163635b5456 +5c5f5e5d5e5f4d4b4d51514d4b4f575b5d60636668696764616162615e59 +5f5c5a5858565655585555575d615f585856545455585b5d5a5a5a5a5a5a +5a5b5b5d5e5f605f61605a5c5d5f5f5e5b59575559585b595958565b5f62 +61605b585c5551535a5c5852525252514f4b474751545251515050505653 +524f4d4846454a48484c5254504b444b4f4f4f52524c49413f40474a4b49 +4e50514e4c4c535b58524d505658504a484f534c494b5051605058798676 +656266646972767575777575737072908b8885858484828481817f817f7d +7b79797a7d80807f7d767b7e7c7b7d7c797a7a7b797b7e858a837d7b796f +5f4f483429252829221c1a1b26221616496d3c44a2adea50042e12479b88 +84937d838e8a6f7ab7ad2b3f3b2e6db7f1c26d8e60585f60554c4d52544b +5e452f361f1542433f46527aa8cbfbdeaac4c8bdcfcfd3d0d2d4d4d1d0d1 +d2cfccc8c5c7c6c4c2c0bebcbbb9b4aea8a4a7a6a9b3bfc6c7cbced2d5d5 +d6d7d9d7d4d3d4d7d7d6d3dcd8d4d5d4cdc1b7ada7a3a8acabaaaaa3a0a5 +a5a3a7a89ca4a9a1a19963313267635d565455544e5956585c495383952d +2b6197781f445f814f1a456963363c575742304156482e334d4d34324746 +32304c452b2d5395d6f5763b57595759645a5a5a5b5b5c5c5c5a5a5a5a5b +5c5e5e5d5e6164656464626866626164666867636160606162636362615f +5e5e5f61625b5d6063646362616b69686768696b6c606061626261616065 +646362626365656b68686568686a6b6563605d5f6062625d5a5653525454 +566e675e5b5d6060615f6668646263666566646262646463606463646763 +6063696463605e6466625b6668696a6866646166615f606464616062686d +6f6f6e6f71726e6d706e6a6a6e64646464646566666c696867696868666d +6e6c6b6966646268646163686a686667686767686b6d6e7371717070706f +6d706e6f6e6f706f706d6d6d6d6d6f6f7074757676767775756a6b6e6f70 +6e6b6b757778787b7b7c7e7c7d7f7f7e7c7a766e6c6c6b6b6c6c6d6b6d6e +70727373737974706f72726f6b6c7275747375757572706e737b7d777175 +787a7877767c80707882847c787c85868c8e89878b90908887a1cee5ddd3 +d4ded9d8dcdedadadcdedfdedbdc5e5b56555354525252514f4f4f4e4b49 +4747484b4e504f4d484d504e4f51504d4e4e4e4c4b4e555a524f4e4d4537 +2923140c080b0c060100000d0900002f53283a9eace84e001d00216e554f +63515d6d6c52589285031e1d17569dd29533491b1d2a2d221b1e272b253c +25121b06002c2b27303d6494b7e6c690a6a695a49ea39fa1a3a3a09f9e9f +9b989491908f8d8b8b89878685807a747175777a849097999fa2a6a9a9aa +a9aba9a6a2a3a6a6a4a1a8a49fa0a19a8e837b7573787c7b7a7a74717474 +6d7170676f787476744010124847423c3c3e3b353e3b3c402f3a6b812020 +5891721a3f5a7b4911385a522129484b3624354a3c2227414128263b3a24 +203c371c21488acbeb6a2b45454240493e3f3f403f4040403e3e3e3e3f40 +4241404246494a4947454b4a464546484a4b4848474748494a4a49484645 +4546484a40424548494845444b4847464546484b44464546464545444947 +44434344464851514e4e4e5153554f4d4a4a4c4e4e4e45423e3d3b3d4042 +5a534946484b4b4943494b49474b4e4f504e4c4c4e4e4d4a4e4c4d51504d +505651504d4c50544e454b4c4f50504e4c4b524f4d4f535653504f53585a +5857585a5b57585b5c59595d54545454545554545a5755545655524e5151 +504f4f4f4e4f55524f5154565450504e4b4b4c4e50515354545454545556 +5a5b5c5c5d5e5e5f5c5c5a5b5b5c5c5d62636465666767675d5e61626260 +5d5b626261615f5f5f5e5c5d5f62626260605c5b5b5a5b5c5c5d5b5c5d5d +5d5e5c5c625e5a5c5f615d5a5c626563616462605c58555a60625c565a5d +5e5c595a5e64576169675e585b62606665605f666b6c6a6a7fa5b8ada2a5 +b1adafb2b1aba7a9adaeadaaab3b35332f302e2f2e2f2d2c2b2e2d2a2824 +2425282b2c2b2924292c2a2a2c2b282929272525282f36312e2f322c1e14 +110904000304000000000604000030562a399fb2f35b072500185b3a2f3f +2c394c54404e8c860b27271f5ca0d0923144161926291e16182127223b26 +16200c062f29253244709fc2ebc2818c80646d6365646769696665656662 +5f5b585857555355535352534e4a44424443444e585f5e6265696c6c6d6d +6f6d6a67686b6b69666f6b696a6a6559514844434a4e4d4c4c46434b4c49 +4d4b3f454d4b53572a0103332f2f2f323836303734383d3240788d27265d +95761e435e7f4d163f615a2a2f4b4d3826374c3e242943432a283d3c2421 +3c371f234c8ecfec6c2c45443f3c42322e2e2f3132323232323333343537 +393a3e3f4243423f3d433f3b3a3c3d3f403f4140404142434342413f3e3e +3f413e2f2d323538373736403f403f414244443837373838393a393e3f3f +3e3e41434244413f3e3f43454741403d3c3e4043433b3834323335373953 +4c4441434646453f4345404041444243413f3e40403f3d43444546423e41 +45403f3e3e4548453a404042434442403e47434345494b4a433e40454746 +454648494545484845454b44454545454646464c49474648474542434342 +414041404046444143494b4943423f3d3d3e40424346464646464646464c +4c4e5053545657545453514f4e4e4c4e4d505356585a5c54555859575550 +4c53515151515151514f50525454535152525351504e4f4d4e4c4c4d4c4c +4d4c4c54504d4d51514f4a4d5256535354544f45403f444b4f4943494c50 +4e4e4e5359505b625f534b4a4e4b4f4f4a464c5154504c59777f6b5d5f6d +6c71787a777274757473707186848581807c7d7c807c7c797b797a787676 +787c8082817e787e807c797b7d7d7a7a7a78797c8287807a726958433530 +2f35414f534e4642382c2d143c85571f83b0acef00032a1b5795a3939997 +9179657effaa3a433b45c5fffff9c97f9f956c6856382c363e385c5a74a2 +ae7a3919272e3b3f55789acbd1b3c3c0bfcfcddbd2d1d1d1d2d1d0cfcbca +c8c7c9c8c6c3c1c0bebdbbb9b5b2aaaba8a9b1bfc7c9caced2d5d5d5d7d8 +d6d4d3d2d4d5d6d5d9d6d4d4d3ccc1b7aba5a2a7a9a5a1a0a09ea5a7a5a7 +a89aa0a39e9e915b2d2c282b2b27262826222e2b292d38324f9e6821457d +974a1d45787a35285579472b3e53563b314a55412d36554d273552412841 +4f3e23306eaef8db363a4047394647474747484848485252525253545554 +4c4d4f51535356565657585858595b605f5f5f5f5f6061626362605f5f60 +62635d5e5f60616161605b5a59595b5d5f5f5c5b5c5c5d5d5c5c5d5c5a59 +595a5c5e5b5b5d5b5e5e61616161615f5f5e63666c6f6e696161676d6f6b +6665696c6c6b6d70706c6b6c6b6869676667686b69686766676a68646468 +6d6e6d696c6c6c67696c6d6e6e6c6b676b6866666a696867696b6d6d6d6e +6f716f6a686a6967696d6a6a6968676666656b6a6a6a6b6b6b6a6f706f70 +6e6d6e6c6965626366666360676564636365666763616160606060616666 +6765666767686c6a6765646667686a6a6a696b6c6e6f6f6f6f6e6c6a6867 +696e73706e6c7277646668696a6a686773757474747475756f717377797a +7c7c847f7978797978746f7476737171706e75716e71787b777274787c7c +7b797c7e7b77767e8a8f8c8682827e797b8288898f96b2d6e7e3e4eddeda +dbdee0dddcdcdee0dfdcdc555654534f4e4c4e4f4e4b4b4a4b4947444448 +4c505251504a5054504d4f51514e4e4d4b4c4f5459524d4941321f120c0e +13212f332e29261c111200236b3f0b79ababef00001b0030666d5d676b6d +5c4b63f6810d151121a7f6f6d79a445951383e2f140a182321494963939f +6d2a060c101e233c6183b5b998a49d98a69faaa1a0a0a0a1a09d9c979694 +9392918f8c8d8c89888885817e7879797a8290989b9ea2a6a9a9a9a9aaa8 +a6a2a1a3a4a4a3a5a2a0a0a0998e847973727779757170727074766f7170 +656b7271746c380c0c0c0f0e0b090a0805110e0e111b1733865712397291 +46194374742c1c466832182e45482d233c47331f28473f19274433193241 +30172462a2eccc26282c321f2d30303030313131313b3b3a3a3b3c3d3f38 +393c3e404040404041424341424446434141414142434445444241414244 +4542434445464645443f3e3d3d3d3f41434a4c4c4c4b4b4a494746444242 +4244453f3e3d3e3e414445454545454547484a4c4f4e4943434b5254504b +4a4c4f4e4d4b4e4e4c4b4f4f4d4e4c4b4a4b4c4a4849484b4e4c494a4e53 +5453525254514b47484b4c4c4c4b494d4c4a4b4f51504c4d4f51514f5051 +53514c4a4c4d4b4d525454535251504f4e5453505051514f4d4b4a4b4c4d +4d4e4f4c4946474a4a48454f4f4e4d4d4d4e4f4849494a4a4a4a494c4c4d +4e4e4f4e4f53524f4d4d4c4d4e51515052545658595b5b5b5a5957555457 +5c5f5c5654575c494b4d51525454535f5f5e5e5e5e5f5f595a5c5d5f6061 +6068635d5c5d5f5e5d585d5f5c5a5a5957605c595c6365615c5e62666663 +636468696563676f746d655e5e5a565760666871768dadb9b2b1bcaeaeb1 +b3b3aba7a7abafaeabab3432332f2e2a2b2c2e2c2a292929282621212428 +2c2e2d2c262c2f2b282a2c2c2727262425283035312e2d271b0900000007 +1420241f1918100609001f6a3f0c7aafb3fb0b071e001f4c4b3742484b3e +324eea7d101f1f2fb1fdf8d5943c4f462a2e2006000d1a1942415c8c9865 +2300010618223f6789b8b78d8f7d6d72646f67666666676664635e5d5b5a +5a5957545453535253534f4c474645444c5860606165696c6c6c6d6e6c6a +6766686969686b6867676762574f4642414749454140403f494d494b4b3d +4147484e4f22000000000000030806010b08070d1d1e3f935f173d769347 +1a4475762f204b6e391e3145482d233c47331f28473f19274433162f402f +172664a4eecf27282d3120292a28282829292b2b35353636393a3b3a2f2e +2e3032323332323334323132343938393939393a3b3c3d3c3a39393a3c3d +37383b3c3f3f41403c3b3c3c3f41433f342f3232333536383939393a3c3e +403e332e2e2e2f3336373739393838393d3e4144433e3838404749454241 +444746454144443f4041413c3d3b3a38393a38393f3e40423e38393d4243 +4442454848403d3c3f404241403e43413f40444546434244464645464749 +47424042424042474646454443424140464543434444433f3d3d3d3e3e40 +41413e3d3a3b3f3f3d3a45444342424344453f3f3f3f3f3f3f3d3f3d4040 +424547484c4845413f3d3e3d3d3d3f4246494b4e5052504f4b4946464b50 +54514c4a4e53404244474849494854525151505051514b4a4c4c4e4f5052 +5a55514e5150514d4a4d514c4c4a4b474f4b484b5257534e515559595958 +5a5d5d5754555a5950443c3a3630333b41454f5061797e706f796e71777c +7c76717172757471717e8184827d79797a7d7a777677777776757676787b +7c7876797f7f7a77797d7e7f7d7c79797b7e7f7e73685945312a2b3c4b61 +737b797673694c294689722e318995b8ae05120a266c84a78c91836985ac +e1c57861476d75ffffff78568c757f72614a383a423926226bb8d0dbf7d8 +8a58413a3c4853689fcecaccb7bcd0cdd6d2cecbcdd0d1cec9cbcacacacc +c9c5c2bdbcbbbbbabababaaeafabacb3bfc7c7caced3d6d7d6d8d8d4d3d3 +d2d1d2d6d7d7d5d4d4d2ccc2b9aaa4a0a4a6a39f9fa2a0a6a7a6a9aa9ea3 +a19a97845531332b2f312d2c2e2e2d2523241e3743427e9e5527497e852e +2b4c7d7324395b633d2a3e584c2c334e53322845512e2a44452f31474e2e +234f86cdff8c0d242522251f1f1f20202020201f1f1e1e1f202122252525 +2627282a2b272a2d2d2b292c313738393839393b3b403e3e3d3e3d3f3d3d +3a3a3a3b3b3c3d3c3c3b3b3b3d3e3d39373839393a393944434341424244 +464b4d4e4d4f4f51504b4e504e4c4c505546515a5a554e4f504f4d4b4c4e +525150575755515253514c5858585a5b5d5c5b5b595a5d5c575456505456 +54545658576666625f5f606163605d5c5d5e5f5e5c5d5d5d5c5e5f606263 +5f5e60605e5f615e5c5e5e5e5e60605d5d5d5e5e5f606161636263626363 +61666361606162605c5b58575555555657585857575757585a5b5c5c5b5a +59595962605e5c5b5a5a5b5b5957565656585959585655535251504b4f53 +524d4d51564d4e4f4e4d4d4b4a48494a49494a4b4b4848494a4a4a4b4a4d +4d4a484b4d4b4a4f5354514e4d4c4a605c59575b5d616151555859575656 +57565c5d585b7194aec0bcb6b3b6bfc8cbd1cfd9e4e4dbdce5d8d8d9dbdb +dcdfe0dfe2e2dfde505356544f4b4b4c4f4c494849494948454446484b4c +4a484b51534e4b4d515253514f4c4c4e5053514a40332010090a17263c50 +585957574c300f2b7059161d7d90b8b0070f000b465370556058476a92c5 +a04b2d0f3a49e4ebf6592b563340433d291d23302b1c1b64b1c8d2ebcb78 +371c161b2b374f86b4afac9596a8a0a8a19d9a9c9fa09b96979696969592 +8e8b89888686878786867c7d7c7d849199999ea2a7aaabaaaaaaa6a5a2a1 +a0a1a4a5a3a1a0a0a0998f867872717476736f6f74727676717473696e71 +6d6d5f3210130f14140f0d0f0f0e080609031b2422608944183d757f2a29 +48796a192a4a502a1a304a3e1e254045241a3743201c363720243a402317 +437abefa7c00100f090d0c0c0c0d0d0d0d0d0c0b0a0a0b0c0d0f14151516 +1718181a16191c1c1818191b191716171618181a1d1d1b1c1b1c1c1f2123 +22222323242524242222222425282a2c2d2e2d2b2a2a343331302f313132 +2d2d2d2d2d2f31332d30323230303437242c35383530313433312f2e3031 +302e33353331323636313d3d3b3b3a3938373936393d3c37373933393a38 +383b3b3944423e3b3a3b3f413e3d3b3d4041403e3e3e3e3d3c3d3e40413d +3c3e3e3c3d42434544444444444441413f404041403f3b3b3c3d3e3f3f3f +4443414243444241444542424242414243434444444443434040403f3d3c +3c3c454341403f3e3e3f403f3d3c3b3b3d3e403f3e3d3b3b3a3a383e423f +3835393e353637393a3a3a3932322f2f2f3031312e2e2f3030302f2e2f2d +2a2a2d2f2f2e33393a37343635324c4a4545474b4d4f3f43464745444445 +464d4b434255748c9b98928f949fa8acb2aeb4b9b4a8a9b3a7a9acaeacab +a8a9acb1b1aead2e3134322d29292a2d2a27262727272621212224272826 +24272d2e2926282c2d2c2a282525272c30322e261c0d0000000513293c44 +4442423a2202226b55141e7f96c2bd141800002f32492c38362b4f77ad90 +45311a4b5af2f3f856244c27312f27160a13242213115aa7bdc3dbba6424 +0a081227365289b5a89d7a7177696d676360626566625d5e5d5d5d5d5a56 +53504f505052525454494a46454c565e5e61656a6d6e6d6e6e6a69676665 +66696a696566666560564f433f3d4345423f3e403e464b494c4c3f424343 +47421c010400000405080c0c0b020000001a292d6c904a1d4178812b2a49 +7a6d1d2f50562e1d304a3e1e254045241a3743201c36361b1e343d211745 +7cc1fd7f0012120c0d0806060707090909080a090b0c0d0e0b0a06060608 +080a0a06090c0c0706080d0f1010101011121317161515151516171d1d1e +1e1f2122252424252526282923150e11121314151724242728292a2d2b22 +1e1e1e21222425222527262525292d1a232c2e2a25262827252424262827 +2427292724252825202c2c2b292b292a2b30303032312a272923282c2a2d +30332f3a36322f3132353734323232363736363b3b3b3a3a3b3c3e3f3b3a +3c3c3a3b3d3837373737373838353534353536353530313132323333333a +383637383938383e3f3d3c3c3c3c3d3e3e3e3e3e3e3e3d35323433353436 +363f3d3935343230312f2e2e2f30323435393834312f2d2c2d31373b3933 +31353a31323334343433312724242222232424212120212121232224221f +1f22242322272c2d2a27282726413e3a393c3f424335393c3d3b3a3a3936 +38332823304d5f6e68625f6470797e86818082766968746c717577767370 +7073777774737d8083817d7978797b797675757676767574757678787471 +777b7b7773777b7b7f7e7c7b7a7a7a7a786b594735282b344e5e6f7a7c7c +7b79777046929731384d7085a84e00101b45808e8f8b9d6c9affd9628a9d +7765738effffe466875b68604d403e4b5a60584f82c9ddced5c8acb7bf87 +5032353f4f7dacd0dcc0b8c7c7ced1cecbccd1d1cdc8cdcccccccdc9c4c0 +c0bfbebcbab9babbb1b2b0b0b7c1c5c4cbcfd5d8d8d8d8d8d2d3d5d3d0d1 +d6dad5d4d4d4d2cec6c0aba49ea2a6a6a6a8a39fa3a2a0a5a99da69f9b98 +7d5033332c2e2e29292c2e2c2a1d261d25352f44839c202b63877b172a57 +7f48222e6563382d43553d2c3d4f422d2f4545302f423d26314a3e263559 +a1ecff3115112f1f1c1b1b1b1b1b1b1b21212020202122231d1c1b1a191a +1b1c181b1e1d1b17191c22232422252427252725272426252724211e1d1d +1d1e1e1f21201e1e1d1d1d1d1b1b1b1c1c1c1c1b14131513151315172223 +2422242223221b1e211f1d1d212529282723201e1e1d2524262628282927 +2a2a2925262827211d1d1f20202122232623232626211d1e282c2c262322 +25232825221f1f212628232322232425252223201e1d1e1f212122202226 +26222122201e1f20212224251f2021212121232525252525242323232725 +2424252525221e1b1b1a191818181c1c1c1c1c1c1d1e1f2121201f1e1e1e +222323232321201d22201e1c1b1a1d1d1f1e1d1c1b1c1a1a141314151516 +17171a191918151513131c1f1e1e1e1e1f1f1e1e1e1e1e1d1c1d1b1c1d20 +2222211f14191a151314141023262a2826252a2e3335393b3c3d3e3f4b44 +3c405f8eb9cdc7c3bcbdc2cbd4dbe9e5e6e7e3dcdadcdad9d8d6d7d9e0e2 +e0e4e6e2e050535654504c4b4c4e4c4a49494a4a4845444546484846434b +4f4f4b494d515153534f4e4d4c4e4d4f433324140b0d1428344552575859 +5958532a777e182039647da650000f102e595e59556d457ef7c1435d6739 +233659daf4cb4c642f3228201c1d314853514c81c8d9c6cab89b9d975926 +0b132133638fb2be9d94a19ca1a39d9a9ba0a09a959998989896928d898c +8b8a88878686877f808181889397969fa3a9acacacaaaaa4a5a4a29fa0a4 +a8a1a1a0a0a09c948d7a726f7377777679767273726b707268716f6e6e59 +2e12161116130b080b0d0e0e010c0308160c2369870d1c587e7713285379 +3f161d5250281f35472f1e2f41341f2137372221343019243f331a2b4f95 +ddef1e02001a0b08090909090909090f0f0e0d0d0e0f110c0c0b0a090a0b +0c080b0e0d09070708050503040406060706070606050706070909080808 +090a0b0d0c0c0c0a0a0a0b0e111011110f0f0e0605040504040404060503 +0403040505000104040202060808070605040303050d0c0b0b0c0a08060a +0c0b090b100f0b050504040201000103000205050000000c10100b080909 +080a07040101030507020201020304040303020000000103030402020606 +02010405060708090a090a04050404040405040202020201020202060706 +07080a0a0909090708070606060a0a0a0a0a0a0909060606050302020206 +070708080605050a08060302010101030201010001020402030403010001 +010405050605050504080706060606070706060606060503020000000204 +0504020000000000000000101517171314171d2224282a2b2c2d2f3c3529 +29436f95a8a09b95969ea8b4bac8c2bdb9b0a6a4a8a7aaaaa8a5a6a8acae +b3b5b1af2f3235332f2b2a2b2d2b272626272726212021222424221f262a +2a2623272b2b2c29262526282b2c31291c1005000205111b2c383c3e4042 +43411c6c77131c386888b35d0c150c1e3a362d29472466df9f24485d3c2f +486decffcf4b602626190b060a203c4b4b477cc3d0b9b8a181827d411000 +0719326491b0b48972746968686360616666615c605f5f5f5e5a55515251 +514f505154554c4d4b4950585c5a62666c6f6f6f6e6e686969676465696d +6562646463615954423d393f434345453f3b42424146493c454144463915 +01060000000001060806030000000214122c728e13215c81781429547b42 +1a2358542b1f35472f1e2f41341f2137372221332a111c39311a2c5099e2 +f52408011f0d07050505050707070d0f0e0f0f10110f0400000000000000 +000000000000000000000000000000000000000000000001050605050508 +090c0e0d0c0c0c0c0c070000000000000000000000000000000000000000 +000000000000000000000002010000000000000001000000010000000001 +000000040300000000000000000000000000000000000004050001020501 +020000000000000000000000000000000404020102030505060405090905 +040400000000000000010000000000000000000000000000000000000000 +0000010206090808070606060a0a0a0a0a0a0a0600000000000000000304 +030101000000000000000000000000000000000000000003040302020303 +060606060505040000000000000000000000000000000000000000000000 +00000000000000000000090e11100d0d10151a1c20222324252227180907 +1c43637369605a5b64707b84928c857d7168686e72767874706d6d707379 +7b77757d7f807f7d7a79787a7775757677767573737477797a7674757776 +7374787a787a79797a7b7977736e5c47362a2a344265727b7d7c7d7a7870 +659b974d2d3f607c8f946b2709396b79948e987f63f4ff4b799898976c6a +b0ffff49a64633303f36343747596c879fd1dae0dec6917f9db4a98d583d +3b3d5773b7e2d8c6c3c7d0d4d2cfd0d3d3d0cbcecdcdcccdcac5c1c7c6c5 +c1bcb9b9bab5b6b4b3b9c1c5c3caced4d8d9d7d8d7d0d3d8d5d1d0d6dbd6 +d5d4d4d3d0ccc9b8afa6a6a7a5a4a5a19c9e9c9a9fa3989e97999877492e +2a3130302d2d31312e35212a2f242531415093702d395d97552526547f39 +28405e55322f4d513c32384d3c28364f3d2a39472e263e47342b3884b7ff +c00b1f202426262826272527252220211f211f22212a2728252624242424 +25262623222124292a29292a2a2b2c2a2b2b2b2b2b2b2926252422242323 +2320201f1d1d1c1b1b20202222232221212525252525252526292a2a2929 +282727282929292828292b2b2925232524201c2021212323242323212322 +1e1e21201e222427272727292c312c292d2e2a27282427241f1c1e1f1e21 +222527282828272729292a2b2b2b2a29252322232526251f1e2027272221 +22262525252525262625272a2928282a2b2b2a2a29292826262223232122 +22222023232321211f1f1e1e1d1e1e1e1f1f1f1e1e202121222323202123 +242423201e20202121212122232525272427252625252120212528262421 +20201f1f1d1e2021222121212122231f20211f201f1f2021232527262523 +21222525221e212120232d393f3d38393a37373b3d43474c4f5146446aad +dad5bac4bfbbbdc1c8d2dad3d7dde5eae9e6e3e0e2dfd8d6d9e0e2dfe5e7 +e3e050525352504d4c4b4d4a49494a4b4a4943434447494a4846494b4a47 +4a4e504e4f4e4c4d4e4d4a48453724150c0e19253b454e52535657565049 +807d3516284c6d84926d2b082f55536358625240dbfb2f56665a4f202575 +e8f332922a10040f07071229425c7e9accd6d7d0b177607983775e2e1819 +1e3b5699c3b7a19c9da3a5a19e9fa2a29d989a99999896938e8a9392918d +89868686838485848b9397959ea2a8acadabaaa9a2a5a7a4a09fa4a9a3a2 +a1a1a19e9a97877e777778767576746f6f6c656a6d646a676d6e53270d0d +191b150d0b0e0f0e1806111406040a1c327c5b1c2d549151232450762d19 +2f4e4724213f432e242a3f2e1a28412f1c2b3a211c343c29212d77aafaaf +000b0c0f111211120f100f100a0b090a090a0a0c131311110f1010101011 +12120f0e0d0d0e0d0c0c0d0d0e0f0d0e0e0e0e0e0e0e0d0d0c0d0c0e0e10 +0d0d0c0b0b0a090a0f10101111100f0e12121212121212120e0d0d0c0c0b +0b0b0c0d10100f0f11120f0c0a0a0c0d0c0a0e0d0d0d0b090606060a0b0a +0a0e0f0d0f10100e0b0a0a0a0f0a090e0f0b0a0b090c0b06040607060809 +0c0e0f0f0d0c0c0c0c0b0c0c0c0d0d0b090a0b0d0e0d0704060a0a050306 +0d0e0e0e0e0e0d0d0c0e0e0d0c0c0d0e0d0c0c0b0b0b0a0a06070708090b +0b0c0e0d0d0d0d0d0b0c0a0b0a0a0a09090a07070708070809090607090a +0b0a09070b0b0909090908090b0b0b0b0b0c0e0e110f0c0d0f0f0d0b080a +0a0b0d0d0e0e0d0b0a0a0a0a0b0c0808090a0b0a0a080506080a0a090705 +060c0e0b0a0d0e0d0e18242a282525272426292d31373a3e3d2f2c4e8bb4 +aa8c948f8e9198a0acb6afb1b4b5b4b1aeaeacafafa8a3a5a8abadb4b6b2 +af2f3132312f2c2b2a2c292626272827261f1f2023252624222426252224 +282a262524232427282928291d10040103101723262f323537393b37336d +6e2b0e224b7492a07c360d263e2f3829342b22c7e40a2e4b4d502c388bfd +ff3c94270a00030000001e3c5c819ed0d5d2c5a060435962564016060f1b +3a5a99bea684736b6c6d6764656868645f6160605f5e5b56525958585452 +4f5154504f4d4c50575b5961656b6f706e6e6d66696c696564696c646362 +6264615f5c4d463f41424241403b363b3b393e41353b374046330e000001 +000000020806030a00000300000b233a8462223157935224255179311e35 +514724213f432e242a3f2e1a28412f1c283218122b382722317eb1ffb702 +1415140e0b0b0b0b0b0b0b0808090909090a090d0a090807070707070809 +0908070607070504040505060705060606060606070809080808090b0c09 +0908070706050305030407070605070b0b0b0b0c0c0c0b07070706060707 +07080a0c0c0b0b0f0e0b0603030505010002020200010000000003030103 +07070508090a0907060709100b0a0c0c0604030003040100020504040407 +090a08060505060606070707090c0c0a0a0b0d0e0d0705070c0c07050509 +0808080808080807090a090808090a0b0a0a090907070602030303020303 +050d0f0f0e0e0d0c0c0b0b0b0b0b0b0b090100020406070a0a07080a0907 +0503010606070709090b0a0c0c0a0707050406100f0d0e1112100e0b0c0c +0c0d0d0e0c06030202020203060204050506070704020204060605030102 +0708050306070609131f25231e1e201d1c1f20252a2e2e241008265e8373 +51564f4d5058626d7871737475747475787a807f776e6b6b6b727a7c7875 +7d7c7a7a7a7977757775757576767472737374777778767474747272767c +7b767677777978756f675b48342c2b3343567784898684827c756f79ae5c +234031597289a4c8a6352462779093817f74b27866a38f9f9a71a0c3ff3d +54641e27422f4c555a627398c3e0e5f6f1b17687a4917f9cb0936c4c323d +4e86c1e2dbc9c9cdd4d4d2d2d3d2d0cdcecdcbcbcdcbc8c5c6c7c7c4bfbb +bbbcbbbab5b3b7c0c6c5c7ccd2d6d7d5d5d5ced4dad8d2d1d6dcd7d6d5d4 +d4d3d2d2cac2babab9b4b0b0afabafadaaadafa3aaa0a5a6835a47443f3f +3f3f4144413a2f2e242c2920303c45579f55243e688e451f30775f3d2b3f +5844323a4e4a352a4645332d4046372f3d3f302d414330295794d1ff5927 +0e2b292a2b292a282a27312f302e302e312f2d2b2d2b2d2a2a2a2a292728 +2929272528262525262627282929292a2a29292b2c2c2c2b2c2b2b282b2a +2b2b2b2a2829272829292a28282726262727272724242526262727272626 +22211e1f21211f1d1e1f22262926201b1e1f2122232424251f24241f1d1d +1e1e181c1e1f1e1f21252b2523262725222325272422222729271b1a1f21 +222121202023252527272726221f1d1d20222120211f2024242122232121 +2020212020202325272624232526222120202120202024242423221f1f22 +232525232322222128272828282a2a282221232426272828262626262323 +21201f202222242426262020212021202020232120232527262427262625 +25242524232223222223232420202021211f1f2126282828262525241c1e +1e1a171a191b1b232d363c3d3f3c413f3f40464c53594d6d92b0c8d2cabc +cac8c8cbccced6dfdee3e9eae7e4e0dce0e4e2dad7dce2e1dde3e7e3de50 +4f4d4d4d4c4a484a4848484a4a484643434447494a4846484846464c5251 +4c4b4a4a4c4c49423e3324130c0f1a2c384e545958585a5852505b92420b +2a1a45617ca0caaa361c4c51605e4d53529c634978575b491d5382ee1c40 +550b0d2104141b2836537eb1d2d7e6dd95525d725c47647e664328111f31 +68a2c0b7a3a1a2a5a3a1a1a2a19d9a9a9997979694918e929393908c8888 +8989888684899298979ba0a6aaaba9a7a7a0a6a9a7a1a0a4aaa4a3a2a1a2 +a1a0a099918c8b8a858181827e807d7578796f7670797c5f3826272a2a25 +1f1f221f1a13140c120c000915263c88421533628a431d2c71542e1a2f4a +36242c403c271c3837251f32382921333526233839261e4c87c4f9491600 +170c0d0b0c0a0a0a0910110f100f1010100b0c0b0c0b0b0b0b0a09070809 +0909090c0d0c0c0d0d0e0f10101011111010101010101010101010131415 +15151415120b0b0a0c0c0b0b0b0a0a0b0b0b0b0b0b0c0c0c0d0d0d0e0e0a +0808090b0b0b09090a0f151817130e121313120f0e0d0e0c1215120f1215 +150d0e0e0c080606080c0604080b09090a0d0f0f0d0e131513090b0d0f0f +0e0c0b0b0b0c0c0b0b0b0d0d0c0a0c0f11100f100c0d0f0f0c0a0e0e0d0c +0c0c0b0b0b0b0d0f0e0a090b0e0c0d0c0c0b0b0a0b0f1011111010101009 +090909090a08090e0f0e0e0e0e0e0e0d0e0e0f0d0e0f0f0d0d0d0d0e0e0e +0c0d0d0e0d0d0d0c0d07070708070809090b09060709090806090a0a0b0d +0f1011100f0f0e0d0e0e0f0c0c0e0f0f0f0f0e0e0e0e0e0c0b0b0c04090a +0605080a080208121b212524242929282b2f373c402f4c6e8999a093818e +8d8f94979ba6b3b7bcbeb9b1aca8a4aab1b2aaa4a5a8aaabb2b6b2ad3130 +2e2e2e2d292729272727272725231f1f20232526242223232121262c2b24 +2120212325242120190c00000413262d323035343537363434437d31001f +14446b8db1d9b53811342a302c1e2e378e501f4b3648482a679aff2f4c5c +0d0c1c00070d1f335687bde1e4f0df914447573c223f5b492d1a0a1f356a +9fb49d7e706d6d6967676867646161605e5e5e5c59565857595755515354 +54534e4c4e565c595e63696d6e6c6b6b646a6e6c6665696d636261606362 +63655e575153524f4b4b49454c4c494c4d4047404c523d1d13150d0d0e10 +1518130b00000000000004162c4590481a37648b441e2d73583320324a35 +232b3f3b261b3736241e3137281e29291c1a333727225290cdff53200719 +0600000000000000070708080808090b09090909090809090b0a08090c0c +0b0808060505060607080909090a0a090907050505050505050407070808 +0807070a0a0f0f0e0e0d0d0a0907080807070606080b0b0c0c0e0e0e0a0b +0a0b0d0d0d0a0605090e11100a050607080506030506060e100c0c0e1010 +0b0d0f0e0b0a0b0d120b090a0a060506090b0c0a0d14171407080b0b0b0a +0908060707070707070808060405080a09080906070a0a0706090a0c0b0b +0b0a0a0a0b0d0f0e0b0a0c0e0e0e0d0d0d0a0c0a0e0f0d0d0c0b0b0c0808 +0808080807070d0d0d0d0d0d0d0d0a0a0d0e10121515131111100d0b0a0b +0d0f1012131315130d0b0a080604030309070506080908060909090a0b0c +0d0d0a08080708090b0c0b0d0e0f0f1010100e0f0f0f0d0c0c0c04080905 +0306070400010b14181b1b181d1b181a1f262a2a152d4a606b6d5a454f4b +4c51555a667274777a76716f6f717c84847a6f6c68696e787c78737c7976 +76787875727474747576767370727172747575737074737071787d7b7577 +767676726c6258483829273142576a7f898b837d776b5f70c0672e422b36 +426381acb1d66912618ca19172fdd965798d9390b093709492c1612b212a +312c4f57718697b7e3fcffffeb9b738c948e9f99939f9f91693d41495b91 +d5e1c9c0bed1d3d2d2d2d0cfcdcccbcacacbcbc8c6bec1c4c3c0bebfc1bf +bdb5b1b5bfc7c8c5cad0d4d5d3d3d2cdd6dcdad4d2d7ddd7d6d5d3d4d5d7 +d7d3cecbd1d6d4d1d1cac8cccec7cac8bbcabdc2c0a0817a7d7171727379 +7b7569607856506155564e53356c8d403241707637273d6a463633455340 +2c3f4c3c2c394641292a4747272a4b3a1f354936252e7cbaeceb1b273d41 +4545474746454544434241424245453f404142434342413f3c3a3b3f4240 +3d37343434343536363536363737363636373a3839383837362f30313033 +313133323536363636333234343535353534332d2d2e3031323131312f2d +2d32302d2a2f2e2b272626282924252729292b2e2e242b2c262021222322 +2528282627292c312a292a2d2c2b2c2d2d2b25262b2a252d292623232427 +2a26292a2b2a2a2c2d282423252728272527232224242226282728282829 +292c2c2a2c2e2c2a292a2c26252526272727272828282422201f232b2e2e +2f2f2c2e2b2c2a2c2c2c2c2d2a2b282828272628252c2828232223232323 +242728282927262b2b2c2c2b2a2828292c2c2c2c2c2f2f2f2f2d2d2a2b2a +2a26262524262528262626262623222120272827262525282a242827221e +2021222423232c3a464b4b534f4c4b4e555b6295b1c6cacacfd1cec8c7cb +cecdcbd2dddde3e8e4dfe2e5e9d7dfe0dad9dce2e0dbe2e6e1dd4f4c4949 +4b4b484547474748494946434443444647474542484744474e56544b4c4b +4a4c49433a322415080a16283d4c54595b55504e463b4da1481127111c2b +5476a8b0d9690a4f6e776243d5b74c616b68566c441f474e8c380d0b1215 +0d282a415a7096c5e1e8f6ce794d5e6257655f5d6b6f6641181e273b72b4 +c2aaa09aa3a09fa0a09e9b9998979595969694928a8d908f8d8b8c8e8d8c +86838791999a999ea4a8a9a7a5a49fa5aba9a3a0a5aba5a5a2a1a2a3a5a5 +a29d9da3a8a5a2a29c9a9d9c95969487988e9495795b555b5555514e5052 +4c443d57352f3e2f2b24311650742d25376b72362338603a27243745321e +313e2e1e2b38331b1c3939191d3e2d122a3e2a19226fabdddc0a1628211f +201f1d1c1d1c1e1d1d1c1c1c1c1c1818191a1b1b1c1b1916121316191918 +171817181719191b1a1b1b1c1c1b1b1a1717181918181716111213151516 +15140f0f10101011101012121313141413130f1112141415161616141214 +17171411171615141314171813141414121112140c1518140f1014151112 +13100d0b0b0e120b080b0f0e0f101212100d0d12110e1917120f0d0e1112 +0e0e100f0e0e0e11110e0d0f14151412110d0b0d0d0b0c100f100f101011 +11110f1113110d0c0d110d0e0e0f0e0e0e0e0f1112100e0c0d0d0d0c0d0e +0e0e0d0d0b0c0b0b0b0b0a0c10120f0f0e0d0c0c100f0c0a090a0d0c0b0c +0d0e0e0d0b0a0d0d0f0f0e0d0d0c0b0c0b0c0a0a0a0a0d0d0c0d0c0d0e0f +0e0e0d0c0b0d0d0d0d0d0e0e0e0d0c0b0e0c0b0a09090c0e0b0f0f0a090b +0e0a0904050e1c282e2e36332d2d30373d406f87999b969896918b8a8e93 +94969fadb5bcbdb4acacb1b4a3acb0aaa6a8abaaa9b1b5b0ac322f2c2c2e +2e2926282828292a282722232123242525232025241f21282f2d23222123 +262925201b0e01000005172c34323135312f2e2921378c360116020d255b +86b9bee26900374a4d3417b19b38473d3531573f2657639e46170e101108 +21253f5b759fd1f0f5ffd377424e4939403731434946280818283e70adb0 +8d796a6f67666565615f5f5f5e5f5f60605b59505356565454555758544e +484c555d5e5c61676b6c6a6968636a706e68656a6e666363626366686867 +6262686d6d6a6a615f656964666455655a62685037383f303032343a3e36 +2a1f36140e22181a1628134f77332c3f6f73342035613c2c293744311d30 +3d2d1d2a37321a1b3838161535250c263c2c1d2676b2e4e3121e27120806 +0605040406090a0a090907080a090c0f0e11111110100d0a0b1013120f08 +030503050407060706080709060805020101020101000000000000000000 +00090e0f0d0d0b0a070808070705050404040607090c0d0d0d0f0d0b0d10 +100f0a0b0a0806050607080102030102000405020a0f0a0506090a090b0e +0c0908090c0f0803060706040507070703060b0c08100b09040203060802 +03030302020305030000010506050303000000000000040506080609070a +0808080c080704070a080808090907090708090705030101020503060507 +040603040204020402040407070808090809080d0b08050203020407080c +0d0d0c0a090d0b0b09060502010101020101000201040303020202030402 +0201000203040608080a0a090807060a0908070606090b070b0b0604060a +0602000006121d201e261e1815181d23244b5f6f6d64605a524a474b4f51 +545e6b707779726d707880737d8279716e6b6a6e777b76727774706f7174 +757671717171707070706d6d706f6d6c6c6d7d736d7274716f70706d6d6c +6a5f4c3c292d343e4d5d707c8e68888079726356d0773d3e484a41263d75 +90b8c3b72764ab837cfffd5c838c898f9597887b8da9cbdb3a314a505c7f +7e8eaec9e1f7ffffe491779499929997969c958f8990813c3750669dddd6 +b1b8c7d4d5cdced6d4c9d1d1d1d1cecacaccc2c4c5c4c1c0c0c1c0bfbebf +bbb8bec6c5c7cacdd0d2d5d5d0d6cfdadcd4dbd7d6d1d7d8d1d3d9d6d0cd +cdd0d6dbdbdadfdad5d1d0d1d1d0e5d2ced2c1afabaca8a0a3a8a8acada1 +a7a5a1a1a8aeaca1a17c42727e3032557661292746575321334e4e312c44 +4b3b2f394c3d223548302242432a2c424334384996c8ffa856727b808588 +878c8a7b7c8779797b727a7c8078787e7e7673756d6f7272717173747170 +68666f706c6f6e6d6d6c696868676a6c6c6a666466686a635c585b5d6266 +605855595e5d5b5b5a5a5a5a595959585555545453525251534c494e5655 +52515051504e4b4a4d5045504d484e4d4a4d4c4a4f4c44474b444b484645 +474949494747494544464a4d404346464443434446484641414648484143 +44423f40464a4644413f3e40424440434544413f4243394043414042423e +3f3f3d3b3e43433e4141403f3f403f403e3e3d3b3e3f3c37434645413e3b +40423d3e424343424240393d403c393a3e3b3f393a3a3c3b3b3d3f3e3e3f +42444240443b3a4448423e3f3f3d3f44443f3d41483a3741403637414041 +3f3b3b3e3f3c3c3e3d39393c3c3937383a3b3a383634322f2b2827282a2a +262b2c2620242a2f44515e5d51557190c8c8c9c7c8cbd0d6c3c2c6cccdcd +d0d4e3e3e1dbdde0e3e1dfe0dfdfdedddcd9dbdee4e4e04b484443454849 +4a454545454444444441444443413f3f40504642474d4b4a4b4a46454846 +3b2a1b090d15202f40515a633c5c55504c3e32ae551c1d25281f0b31718e +b6c2b31e57976a5ee0db3c656b6461615b453747668ea40a062228355e69 +809cb5c9dce8ecbd674a66686065646168615d596354110e2c4680c6c5a3 +a29b9f9e9798a19f939a9a9c9c999797998e9091908e8d8d8e8f8e90918d +8a909897999c9fa2a4a4a49fa39ca7a9a0a7a5a4a1a5a8a1a2a8a59f9c9c +9fa5aaaaa9aea9a4a09fa0a09fb4a19fa393817f80797172777478797076 +757171777d78717a592155651b244b725e26233f4d4612253e3e211c343b +2b1f293c2d122538201333331a1c323324283986b8fa95435b5856585752 +57574a4f5d515151454b4d544e4d54534b47494143444443434548474941 +3f4849454a4948484746464544434545433f3d3f41433c35313133383b37 +2f2c3035343232313132323131313231302f2f2e2d2d2c2e27242b31322f +2e2d2e2f2d2a292c2f222d2a242726232627272b2a222529222926222123 +242424222221201f2125281b1e2123201f1f202426241f1f2426251e2021 +1f1c1d212722201d1b1a1c1e201c1f21201d1b1d1f151d1f1e1c1f1d191a +1a1816191e1e191c1b1a19191b1b1c1a1c1b191c201d151d1d1c18151517 +1c1418191a1a19191a171e211d191a1c1b1d19181a1d1c1c1d1b1a191a1d +1e1c1a1e15141e221c18191a15171c1c17151920120f191b11121c1c1d1b +17151a1918181a1915151818161617191a18161412100d0b080708090c09 +0e0f080204090c202c3734282a46659a99989696989da08e8d91979a9a9f +a4babbb8b2afb2b4b2b0b1b1b0afacaaa8aab0b6b6b2322f2b2a2c2f3031 +2c2c2c2c2b292b29262629262422222131251f242624201f1d1b2128302b +1e12000001060d18232c360f353234352c24a44b0d0c110f030035809cc3 +c8b417477f4c3cbbb5153f40302f3a433c364f6f95a70600161c2657728f +aac1d6e3edebb85b374c4a3d3e393539312c2b3a3700082c4982c0b5887d +6c696559585f5d556164686a65626060555758575554545557545556524f +555d5c5e616467696a6a656a636e70676e6a6763686a63676d6a64616164 +6a70706f736e6a66676868657a67676d5f4f4e4f4b43474c4c5051454b47 +43434c545049533b0e4f6b2a335673591d18394c4d19253e3e211c343b2b +1f293c2d122538201030331a1c333425293a87b9fb9745533c302f2c282b +2c2128372d2d291c1f232d282a2e302824261e202222212123251f1e1814 +1f1e1c1e1f1c1e1b1c191b1a1a1e1e1c1816181a1c150e080b0b12181913 +10141916141211110f0f0e0d0d0e111312121110100f110a070d14141310 +0f10100e0b0a0d10040f0c040a0706090c0b110f070a0e070e0b0807090a +0a0a0808080604060a0d0003060706050506090a090303080a0902040503 +0001060b0806030100020406020507060301030500010502020303000000 +0000000304000204030202010302000100000104010008090a0403000507 +020307060805070500020501000103020400000101000004050406070a0b +09070b0000090b0501020000000203000000070000000100000204050300 +00020202020403000002020205080a0b0c0a08060603000000000002030a +0900000000000a121a160808233b68615e5b59595c604c4b4f5558595d64 +7c7d7a7474777c7a7a7b7d7a77726f6d6f747a7a76737271717272706e6c +6c6c6d6d6e6e6d68696c6c6c6a6c6d746c696b6d69686a6c6a645c524438 +3028303f4e5f6e7d8681957075725c44de794f496169635236324f809ab2 +df9b6b768efffc56a3aaa3a2948d928d7e7a83b5ef876d718d9eb4a9b0c4 +d9ebf1e8daa19bafb29a989f8e8e9094a6acb2b48a43385279b1dac4afc6 +d2d1d0d2d5d2cbcecfcececbc8c7c8c5c7c9c8c5c2c1c1c2c0bfc0bfbcbf +c5c7c8cacccfd2d6d7d2d5ced8dad2dad6d5cfd4d6d0d4dcdad2d1d2d7dc +dedbd8e0dcd6d2d1d0d0cfded0d3d7c5b1adafaea8aaaeadb1b2a8a7aaaa +a8abafaea6a3bb78427b70222d5d674c2e2e47543c28404e423133434f35 +2f3d43312e3c3f2e333f3c313c494223385fb7eeea9399a0a3a7aeb3b3ae +aba9b4a7a9aea6b0b2b1a9aab1b2ada9abaaaaa9a8a8a7a6a6aaaca6a3ac +adabb0afafafaeafadaeaea7a9abaaa8a7abadaba8a19e9ea1a5a8a59d9b +a0a5a5a3a3a5a4a4a3a3a3a4a4a4a4a3a2a1a09f9f96929295969392949a +979896959495978d979690949390918b8a918e86878a808a8b8e8c8b898c +8e92908d8886878c90918f8c8988898b8c8a8a8b86888b8e8a87878b8c8f +8b898684817e7b7c7d7f7f85858582817f81827c7c8080817f807f868685 +82858887827f7f7c7a787675747b7b777273777671797a7b78767477787c +7d7f7f7f7c7c7b777d807c797a7c7b7575747273757573797a7c7d807f7f +7d736f7176797674737e7b7d81827c7b7c80787981857f7f847b7f807b7a +7c7f7d7b7e7f7b7d7f807c7c7c7d7d7c7a7877716e695e50413327262321 +1f242e343534485e6b737d8e9ec3c7cbcccac9cacbc1c0c3c9ccccd0d4e7 +e8e4dcdadbdbd9dededfdededcdad9d7dce2e4e146454444454543413f3f +3f404041414340414242403e3e3f46403e43474645474644403a31261b12 +0b14202f3f4e5961596b494e4c3722bc562d253c443c2c1623487993abd9 +93626a7defe23681847a77665b5c53413c4579b5523d45637698a1afbdcd +d8d7c5b2746c7c8069676f5e5b5e61737b82835b1712325f9fd0bda09b9a +9a989b9e9b94979899999795969791939594928f8e8e918f9192918e9197 +999a9c9ea1a4a5a69fa29ba5a69ea6a3a39ea3a59fa3aba9a1a0a1a6abad +aaa7afaba5a1a09f9f9ead9fa2a694807c7c7970727675797a706f727270 +73777672759153205c5810215462482a273d472f18303e322123333f251f +2d33211e2c2f1c202c291e29373011264da5dcd881817c7774797a777576 +76857c7e80777d7f837e7e86867f7b7d7a7a7978757573747b7e77757d7f +7d8584848485868685857d7f81807e7d7f817f7a72706f71757978727075 +7a7a78787a79797979797a7a79797877767574746b67676a6b68676b7070 +6e6c6b6a6b6c626c6963676660645f6065645a5d5e565e6162625f5f6062 +6664615c5a5b60646563605d5c5d5f626063615f5e6464635d6061656564 +5f5c5a56525050525354595a59575554555850525456555554555a5c5958 +595e5b5653514e4c4a4a494a51514d4b4c504f4a4e4f4f4d4a494b4d5052 +53545351505051575a56535456554f4f4e4c4d4f4f4d4e4f4f5253545252 +4644444b4c4b47485251515756524f52544e4d57595553594e5453504d51 +52524e53525050545351555556565452504f4946413627180a0206070300 +030b10100b1d323e434e5d6c91969a9b9998999a908f92989b9b9fa4bdc0 +bcb4b0b1b1afb1b1b2b1afadababa9aeb4b6b32f2e2d2d2e2e2c2a282828 +29292a2a2b27282a2a272526272c231e2023201f1f1f1f2021221c171007 +090e13191f252c2841222f352516b35024172a2a1f08002050819ab2db91 +5d5e6bd7c10f5353464235384448403f4a7bb44c3138556a94acbfcdd9de +d8c1a661525d5d413c41302c2d2c3c43515b410c0f35629dc6ab83716761 +5b5a5b58545e62676765605e5d585a5c5b59565555575556575653565c5e +5f616366696b6c6669626c6d656d6a6863686a6468706e6665666b70726f +6c74706a66656464637264676b59454143433d3f434246473d3c3f3f3d40 +4443404367381461651e2b575e3d1e1f3b4e3619303e322123333f251f2d +33211e2c2f1c222e2b202b373011264ba3dad67f755c4a45474541404447 +574f514f4346484f4b4d53554d4a4b4a49494746444443474a4341494b49 +504f4f4f4f504f4f4f4b4d514e4e4b50505049443f4141474b4e48464a4f +4f4d4b4d4c4c4949494a4a4e4e4d4c4b4a4949403c3c3f403d3c3f464544 +42414041423842403a3e3d383b38383e3c3335372e37393b3a3837393b3f +3d3a353334393d3e3c39363536383a383a3936363b3c3a3537393c3d3b37 +3434332f2d2d2f303136373634323132322b2a2d2e2e2d2d2d3334323032 +36342f2e2d2a28262524242b2b2724252928232b2c2c2a2726282a2d2f30 +31302e2d2d2a30332f2c2d2f2e28282725262828282c2d2e303232313025 +2223292b2926262f2b2c31312c2a2c2f282831342f2e362d32322e2c2f31 +302d31312e2f323231363839393a383635302d281d110200000000000000 +00000000000f171b24323b56545859575657584e4d505659595d64818581 +797677777578787978777573706e72787a77666667696966615d5d5e5f60 +616263645e5e6262616163646765656666626164605d55473a2e2a282f3a +4d5e6d7780837d78786c5945bdc45d5a6e838279716347426f8aa6c8d693 +82d2dc58c2cfbcc9a9978b85786871867ca68a9ea7b4acbeccd1dae0e2da +c7b8bbc6d6d0bec9c7a89d9ca6c5cbc5cfc17332385789d2d8bbc7cbcbd2 +d5d1cdcbcdcfcecdcac8c7c7c8cbcdcdc9c5c3c2c5c1bec2c4c2c1c3c7c7 +c7c9cbced3d5d3d5cdd6d8d0dad6d6d0d5d6cfd3dad8d2d3d6dbdfded9d3 +dedad5d2d1d1d1d0d5ced5dac4afaaacada8abafadb0b2a9a4abafacabac +adaa9ea9985e5c7d5e2a355a6b3e22384a542e34434b3e2d3851422c2f46 +41292c463c2a3848373243493a3c4493c1ffbc8fa0a6a7b1bbb3abb2acb8 +acafb5afb7bab6b0b1babcb5b1b4b7b6b4b3b4b4b2afb1b4b1acb5b4b6bf +bbbcbdbcbdbdbebebbbcbdbdbcbcbfc1bdbcb8b4b3b7babab6afaeb4baba +b9babbbab9b8b8b9bbbcc1c1c1c0bfbdbbbabcbbbcbdb9b4b5bac4bfbcbc +bdbdbbb9b5c0c1bbbebcb8b9b7b7bfbdb5b5b6abaeb4bcbcb8b3b6babcba +b8b6b7bbc3c9c4bfb7b3b3b8bdc0bcbebfbbbdbfc1bdbcbabbbec4c3beb8 +c0bbb7b4b7b8b9b7c3c1bfbec0c0c0bfbcb6b9bfc1bbbcc0bcbdbebbbcbd +bbb6bfbebbb8b6b3b3b3bfbdb8b1b1b5b6b4b9babcb9b7b2b2b1b1b1b4b4 +b6b4b4b3b1b5b7b3b0b2b4b4b3b8b6b0afb4b4b1b4b8bcbebfbebfbeb5b9 +bdbbbbbcbebbb6b4b7babab4b2b2b0b0b3b6babab9b5b7bcbfbbb8b9bbb9 +b6babdbbbdc0c1bcb7b6b5b4b2b1b0afb6b5b4aea4978a7f605751505b69 +6f6ba9b4bcbebfc2beb3c1c6cbcbc7c6c8cbc2c0c2c8ccccd0d3dee1e2dd +dde0e4e3dbdcdddddddcdadad5dbe1e4e23c3c3d3f3f3c37333334353637 +38393a35383939373736373a38383c3e3d3e413d3a33261a100d0c121d2d +3e4c555b5e5752544836249ba43b384a5f5d52483e2b2e5d7c9bc2d18e7a +c5ca3d9fa58d98796858513f2d354c44735c7684958fa9c3cbcfd0cabca3 +8d8d95a49c8b9697786a6973929a969e93480b163d75c5cea99d95969c9f +9c98959698999896959696949799999692908f9490909496949395999999 +9b9da0a2a4a0a29aa3a49ca6a3a49fa4a59ea2a9a7a1a2a5aaaeada8a2ad +a9a4a1a0a0a09fa49da4a9937e79797870737775787a716c737774737475 +756e7e6f393b63491b2b5264371b2e3e481e24333b2e1d2841321c1f3631 +191c362a18263625203137282a3281aff1aa777d7b777d8277727d7a8980 +83877d84878782838c8e8681858584828180807e7d7f857f7d838587928e +8f90919294939390919192909191938f8c88848385878a878281888e8e8d +8e8f8e8d8c8c8d8f909595959493918f8e908f90918d88898e9a97929293 +93918d8994928c8f8d888a8b8d9393898b8a81828a90928c898a8e908e8c +8a8b8f979d98938b87878c91949296959393979795929291969a9b948e95 +908b898b8d8d8c9796939394959494908b8d94959090959092929090928f +8a908f8c898786868692928d88888c8d8a909191908c8987888688898b8b +8b898a898f918d8a8c8e8e8d92908a898e8e88898d8f9392939293888e90 +908e91919089898a8f8d8985878385868b8d8f8c8a8a9192908b8e8e8e89 +8f9090909594918d8c8b8a888786858b8a8983796c5f573c372e2e374448 +437f898f8f91928c828f959a9a9695979a918f91979b9b9fa3b4b9bab5b3 +b6b7b6aeafaeaeaeadabaca7adb3b6b4262627292926211d1d1e1f202122 +23241f2123232121212225212123242020231f1e1a130f0809090e152029 +2d303132302e342e20118f99312c3a49433328231d275b7c9fc6d79278bc +b62077755760483c393c38313f584d785e7480908ba6c6cfd3d0c6b2937a +73757f745e6766473b3a3e5b626273723704153e74bdc291776660605f5a +56555d62656664605e5c5b5e60605d5957565a5655595b59585a5e5e5e60 +6265686a6769616a6b636d6a6964696a63676e6c66676a6f73726d67726e +6966656565646962696e58433e40423d40444245473e3940444140414243 +3e545127366650202c505e31152d424c1f24333b2e1d2841321c1f363119 +1c362a18263625203137282a3281aff1aa6d5f50494b4d413d49495b5154 +55484b4e514e51585c5250515451514e504e4e4a4c4f4a474e4f515b5758 +595a5b5c5c5e5d5e605f5f5e60615e5b58535354585a5b58575b6161605f +605d5c5b5b5c5e5f6464646362605e5d5f5e5f605c57585d6a6662626363 +615e5a65645e615f5a5c5c5d64635a5b5b51535a61625d595b5f615f5d5b +5c60686e69645c58585d62656265656263666764626161656a6a645e6863 +5e5c5e60605f6a69666667686767635e606768636368636565636365625d +6665625f5d5c5c5c6867625c5c60615a5a595a58555150504f5052535453 +5254586264605d5f61616065635d5c61615c5f636669696969695f646766 +656768665f5e6064635e5b5c595a5c606364625f61676966626465646065 +6766676b6b665d5a5958585756555e5d5c564e41343324221a151d292920 +595f65616061594a52535858545355584f4d4f5559595d63787e7f7a797c +7e7d75767676767573716c71777a785c5c5e60615e595555565657585959 +595355595a5a595c5d5c5c5e5e5a5857594f4940352b2525273a4456646e +7375767069625939b1ed5667728188837d7c776c69697e999cc6b5c8d273 +b2b6cbd2c0a48e7c6c523f5173828787a4adc8cbe7d1dadbd0c1babcbde2 +cecad0d2d6cfb8afb6bed5d3c4cbc8bb5e274370a8d6d5cac8c7d2d6cfc9 +ccced2d1cecbcccbcac9cdd0d0cbc7c3c1c7c1bdc2c7c5c2c1c4c3c2c2c4 +c8cdcfd4d6ccd5d7d0dad8d8d3d8d9d1d1d4cfd2d2d3d7dadad5d0d9d6d2 +d1d1d2d1d0d0cdd7d8c0aba9acaba6aaaeaaadb0a8a7adb1afaeb0b0acba +a1a4b25f437a45253b634e33363553493632444939323a4a382f3d443027 +37443634404030324444283a5fa7f0ea9e95a8adb3bbb2a7b0acb7adb0b4 +acb5b6b2acaeb6b7b0acb0b1b0afb2b5b7b7b5afb6b2adb2b2b5c1b9b8ba +babbbbbbbabcbdbdbcbcbababababbb9b6b4b6b9b9b0abaeb3bab9bbbbbb +b8b8b5b8b7bbbcc3c4c4c4c2c0bebcbdbababcbab6b6b9c4beb8b8bebfba +b4b5c0bfb9bfbcb6b6bbbdc5c6bebfc0b5b2b9c1c3c1bdbcbdbebfbfbfc0 +c4cacfc6c1bcbbbec3c7c7c5c8c9c6c5c7c6c3c4c1bfc0c3c7c8c8c9c3bd +bbbec0bfbec5c3c3c6c9cac7c3c6bcbdc8cac2c2cac5c9cac9c9cac7c2c3 +c2c1c0bec0c2c3cacac5bfbdc0c0bdc7c8c9c7c3beb9b6bdbec0c4c8caca +c7c2c7c9c4c1c3c6c6bfc7c6bcbac0c0babfc3c8cbcbcacacbaebabfb8b5 +bbbdbac5c6c9cbcbc7c3c2c1c7c7c3c5cbc9c1c3c6c6c3c3c4c2bcbac0c3 +c3c6c9c8c5c9cac8c6c4c2c2c2c8c8c8c8c9ccceccccc3bbbcc5d0d3cec7 +ccc7bdbec6bfaec7c9cac5c1c2cad2c4c1c1c7cbcdd0d3d7dce0dfdfe3e8 +e8d8d8dadadadadadad5dae1e4e43232343637342f2b2b2c2c2d2e2f2f30 +2d2f30312f2e2e2f2e313335343434362c2821150d08090b1d2736434b50 +51524d473f391892cd36464e5c625b54514e44464d6a8b95c3b3c5c86196 +909b9b89745e4a381c0a1d40525d628493b3b7d7c6cdcabaa69a9492b29d +979da0a49d897c838ba2a2939b9b8f3706275b99c9c2a195939fa3999496 +979b9c9998999a9995999c9c9894908e96908f949997949396959494969a +9c9ea1a399a2a39ca6a5a6a2a7a8a0a0a39ea1a1a2a6a9a9a49fa8a5a1a0 +a0a1a09f9f9ca6a78f7a7879766e7276727578706f757977767878778772 +778a3b256233172f5944292a2945392622343929222a3a281f2d34201728 +3224222e2e1e20323216284d95ded785727c7e7f81766e7978877f82857b +8184837f7f8788817d7e7f7e7d7f818483827c837f7a7f81839087898b8d +8e8e8e8d919292918e8c8c8b8b8c8a8482848787827f7f878c8d8d8f8d8d +8a8a8a8c8d8e9695959593918f8d8e8b8b8d8b87878c99938d8d91928d87 +8691908a8d8a84878e90989991929388858c949694908f908f9090909195 +9ba097928d8c8f94989a9a9d9e9b9a9c9b9899969495989c9d9d9b958f8d +90929190979595989b9c9995988e8f9a9c94949c979b9c9b9b9c99949190 +8f8e8e9092939c9c9a94929595929b9d9e9c98938e8b929395999d9f9f9e +979ea09b989a9d9d969e9d939197979191959a9d9d9c9c9d808c918a878d +8f8c97989b9d9d99959493999995979d9b93959898959596948e8c929595 +989b9a979b9a98969491919197979797989b9d9ea59f97969fa9a9a39da0 +998e8f958e7e95989994909199a1939090969a9c9fa3adb4b8b7b5b9bbbb +abababababababaca7acb3b6b61c1c1e20211e1915151616171819191a18 +1a1c1d1c1d1e1f1e2022211f1e1e2018150f0803020507191f2b32353431 +32312e29240580be27373e494b413631302b3241638b9ccebeccc755806b +6b625044382f2a1a122a4f6067698794b2b8d7c0c5c0ad95857a728e756a +6e6d6f68534d54566b685b6b74762801265a96c1b181686166645952565e +6368676362625f5c6063635f5b57555c5654595e5c59585b5a59595b5f62 +64686a60696a636d6c6b676c6d656568636666676b6e6e69646d6a666565 +66656464616b6c543f3d40403b3f433f42453d3c42464443454545584856 +702b1d5e3317315a45282a2b45392622343929222a3a281f2d3420172530 +22202c2c1e20323216284d95ded97e5655524f4f40374346564e51514348 +494d484b51544b49494c494a4a4f4f514d474c4a434a494e585251555457 +5557565c5d5d5c5a585857575856514f515456515051585b5c5c5e5b5a56 +555657595a5f5d5d5d5b59575556535355534f4f53625c56565a5b565050 +5b5a5458554f51575961625a5b5c514e555d5f5d595859595a5a5a5b5f65 +6a615c5756595e62636366676463656461625f5d5e6165666667615b595c +5e5d5c6361616467686561645a5b66686060686367686767686560605f5e +5d5d5f61626a6a67615f62625b5a585957534e49464d4e5054585a5a5c60 +6a6c6764666969626a695f5d63635d5f63696b6c6a6b6b4f5a6058565b5e +5a6566696b6b67636261676763656b6961636667636464635c5b60646367 +6969635f5c5a58565656565c5d5d5d5e61656c7e7f75727a827f786d6f65 +58575b5340565657524e4f575f514e4e54585a5d6371797d7c7b7f828272 +727373737373716c70777a7a575656575959575554545454535353535051 +545556565759525454524e4948453c342b262525252539404d565d5f6060 +56683d2497ed7d4b6b7882878c887d797c89797d758aaab3b7aeaeb9ceb8 +d4c39e7555493c2e3a517ba4d3d7cce7dad2d3d6cebcb1b4bfc9cdc3c6cf +c8b8b1b1aac1c8d2cfc2c7c6dda637315879c4e7d3c9c5d1d5ccc8cdcdd3 +d4cecbcecdcacacdd0d0ccc7c3c2c7c0bcc2c7c6c2c0c2c1c0c0c2c4cacc +d3d5ccd5d7d1dbd9d5d2daddd4d1d2cbd5d2cfd1d4d6d5d2d9d6d2d0cfcf +cdccd0cdd6d4bba9aaaea8a4a8aca7aaada6abadaeadafb3b1aab7b9a1bd +9d4e59693e2843504d3e2740574031394645362a464436303c3f31263d46 +312d4538263b4a23354085c7ffd08ea5b3b4b6b2aeabafbdb1b5bab3bbbd +bcb3b4bbbbb3b0b4b1b1b2b6b9bcbdbdbbc1bdb9bdbdbfc9c0c1c2c3c3c0 +bfbec0c0bfbfc0bebcbcbbbfbeb8b5b9bcbab4b1b5bbc1c0c1c3c0bfbfbe +bfbfc2c3c5c6c7c6c5c3c0bec0b9b7bcc0bfbcbcc6beb9bac0c0bab3b4bf +beb9bcbab5b7b7b9c2c3bdc0c3bab8bbbfc3c5c3bfbcc2c4c4c2bfbdbcbd +c2c2c2c3c5c6c6c5c5c7c7c3c1c2c0bcc1c2c2c0bebec2c5c9c5c0bebfc2 +c2c1c3c3c4c8cac8c1bbc7bdbdc9ccc3c2c9c0c5c8c7c7c9c7c4bcbbb8b8 +babdbfc2c4c7c5c1bfc0bebbc2c4c5c6c4bfb9b5bbbbbdc2c7cacac6c1c5 +c6c2bec1c4c5bfc6c5bdb9bdbebabfc2c6c9cacacacab9c5c9c2bec3c7c5 +c2c5c7c7c7c6c3c0c5cac8c0c2cbcbc3c5c4c2c3c8cdc8bfb9bfc2c3c5c8 +c8c5cbcbc9c7c5c4c3c3ccc9c5c3c3c6cacac8c6c3c2c5cbcbc9c9cdc6bd +c0cfd0c6c5c7c8c5c1c1c7cdc6c1c0c6cbcdcfd2dbe1e6e3dfdfe2e0dbdb +dbdbdddededfd7dbe0e4e52e2d2d2e30302e2c2b2b2b2b2a2a2a2a2a2c2e +2f2d2c2c2e262a2d2c2a2826251c160e09080a0a0a1c242d34393a3b3d36 +4b20077ad0612c4b555e62625c514b4c5b54616380a7b2b4a79c9ea58599 +886d4827190b000b265482b5c1b9d9cec7c3c2b6a1908e959a9d8f929c95 +878080778e959f9d919897b07d13124067b4d1ab99959fa3999297979c9c +99989b9c9996999c9c9994908f968f8e9499989492949392929496999ba0 +a299a2a39da7a6a3a1a9aca3a0a19aa4a19ea0a3a5a4a1a8a5a19f9e9e9c +9b9f9ca5a38a78797b736c70746f72756e73757675777b79758185719278 +2e3d522a173443402f19324831222a3736271b373527212d3022172b341f +1b332614293811222d72b4eeb96c7a83817e7972727a8b83878b8287898b +84828a89827e817e7e7f8184878888868d888588898a968d909192929290 +8f93939292918f8d8b8a8e8d85828689888583868d929292969192909190 +929395949697969593908e9089878c908f8c8c98928d8e92928c85838e8c +878a888385868891928c8f9289878a8e9294928e8b919393918e8c8b8c91 +91919294959595979a9a969495938f94959593919195989995908e8f9292 +91939394989a98918b968c8c989b9291988f949796969896938887858587 +8a8e91939697939192918d9396979896918b878d8d8f94999c9c9a939899 +9591949798929998908c90918d8e91959899999999889498918d92969491 +9496969695928f9499978f919a9a9294939192979c978e888e9192949797 +9399969492908f8e8e9794908e8e9194989d9d9b989ba0a09c9c9f988d90 +9e9f95949596938f8f959b948f8e94999b9da2aeb7bcb9b5b5b5b3acacac +acacadadaea9adb2b6b7181717181a1a1816151515151414141415191b1c +1b1c1c1e191c1e1f1c191a18110c060102030303141922282928282a273d +12006abe4c18363f46474941342a283a3a536189b8c4c5af9a8d85566150 +4227100f0e091d396690bdc4bbd9d0c3b3aa9e86716a6f706f5f60655e4d +4648485f60666256626b8f67070d3e67b4c69173676c685a52595b646965 +6364645f5d606363605b57565c5553595e5d595759585757595b5f616769 +60696a646e6d68666e716865665f69666365686a69666d6a666463636160 +64616a684f3d3e423d393d413c3f423b4042434244484643555d496f5b17 +2f4a2b1d3b4c4732182f452e1f27343324183432241e2a2d1f1427301b17 +2f2412273811242f74b6f2b353575b544b423c3b4658515355484d4d534c +4d52544a494a49474a4b505154525054524c5250545d565659585a575857 +5a5a5959595755535256554e4b4f5253515152595e5e5c5f5b5b58585859 +5b5a5958595857555250524b494e52514e4e5c555051565650494853514c +4f4d484a4b4d56575154574e4c4f53575957535056585856535150515656 +5657595a5a57595959555354524e53545452505054575b57525051545453 +5555565a5c5a534d5b51515d6057565d54595c5b5b5d5b584f4e4c4c4e51 +5457595c5c585657564f4d4b4c4d4b46403c424244494e515153555d5e5a +56595c5d575e5d555155565254565b5d5f5e5f5e4e595e5653575c5a575a +5c5c5c5b58555a5f5d55576060585a5857575d615d534e5357575a5c5d56 +54504e4c4a4b4a4a53524e4c4c4f545b6a6f6a66696d6b6561635a4d4e5c +5c52525657545050565c55504f555a5c5e64737d827f7b7b7c7a74747474 +747575746e71767a7b5351505052545453525251515150504e4e50535354 +5355554f504f4a44403a322c272120222627272e32393c3f4245443b3925 +6ae67e41516e736d727f7c6f70757a919961747ca5adb7b9b5becacfae81 +563631323c618fc9d1e2ddcdd9d3cdc6c1b4afb8c5c9c7cbcdc7bbafa5a0 +9da9c9cacacac3c7c3cfd7662a3c5aa8dbdcd0c6cccfcbc8cecbd2d4cecb +cecec9cacdcfcfcbc7c5c4c8c1bdc2c6c5c3c2c3c3c2c2c3c5c9caced2ca +d4d7d1dbd8d0ced7dcd5d4d5ced7d3cecfd3d7d9d8ddd9d5d1cfccc9c6d0 +ced4d0b8aaacafa5a2a7aba5a7aba5aaaba9a8abb0afaaa9b5a49aba9a54 +5d5e332e4656442b3248463e363a423e323a423d2d32453f243046322540 +402b34513e333e5699e9f79a9aa5aea8adb0a2a6b4abb1b9b2bcbcbdb4b1 +b6b6afaeb2abaeb0b0b0b2b4b6b9bebbb7bdbcbcc2bcbdbfc0c0bdbcbaba +bababcbebebebbb5bcbcb3afb5b8b7b2afb4b9bebbbdbebdbbbebdbfbec0 +c1c1c2c4c4c4c1c0bdc7bebcc2cac9c7c4c6c0bcbdc2c3bdb6b9c4c1bbc1 +c0bdbebabac1c2bcc2c9c2bebebfc3c6c6c2bec5c7cac8c6c2c0bfc6c8cb +cac8c3c3c2c8cac9c4c2c4c2bfc3c9ceccc6c1bfc0cfcdcac8c7c9cbcdce +cfd1d2d1cbc4becdc6c7cfd3cdc9cac1c6c9c7c7c9cac7c7c5c3c1c1c1c4 +c6c7cccecbc9c9c9c6c5c7cacdceccc6c2c2c1c1c5caccc9c5c5c9cac5c2 +c5c8c9cbcdcdcac6c4c6c9c6c6c7c9cccecdccbcc2c6c2bebfc2c4c5c8c9 +c8c8cac9c5c5c8c6c1c3cccdc8c9c9c8cad2d9d6cfc4c8cbcacbcececdcb +cccbcac8c7c6c5d0d0cfcdcccbcbc8c2c3c6c3c2c5c8c7d0d2cdc5c3c7c5 +bebec2c7cac9c5c2c0c8c2bfc5cbcdcfd1d4dde4e3e0e0e3e2e0dfdfdee1 +e1e2e3dadcdfe2e32a282727292b2b2a29292828282727282a2c2d2d2b2a +2a2b25282925221f19130f0b0504070b0c0c1215191c1d1e20221e200c52 +cc63273650514a4b5650413f40496678496775a2a8afa99a969a9776542d +0d0608123a6aa9b6c9c9becbc8bfb1a4968d919a9a95979893877b736e6c +7696979798919695a4ae4109204495c3b7a3999da0999598959b9d96969b +9d9896999b9b9894929197908f949897959495959494959798999b9f97a1 +a39da7a59e9da6aba4a3a49da6a29d9ea2a6a8a7aca8a4a09e9b98959f9d +a39f87797b7c706a6f736d6f736d7273717073787772707e716b91773542 +451c1a3445351d2539372f272b332f232b332e1e233630151f3521142f2e +19223f2c202b4386d6df7a71777b7374756a71827c82887f86888a838085 +857e7b7f787a7b7c7b7b7d7f828782808685858e888a8c8d8d8c89898c8c +8c8e90908d8a848b8a817d8386848180838a8d8c8c908c8d8d8f8e908f91 +8f91919391908d8c948d89919798949396908c8d92918b8487918e888b8a +878b87878e8f898f968f8b8b8c9093938f8b9296979793918d8e93979899 +95929091979998939193918e92989d9b95908e8f9c9a97959496989a9b9c +9e9f9e98918b9a93949ca09a96978e93969494969794918f8d8b8b8e9093 +939a9c99979999969495989b9c9a9490908f8f93989a979495999a959295 +98999b9d9d9a9694969994939496999b9a99898f938f8b8c8f9192959595 +949795929195928e8f999995969695979fa6a39c91959897989b9b989593 +92918f8e8d8c97979593929191909196989594979897a0a29e949297958d +8d9095989793908e96908d93999b9da1a7b3bab9b6b6b6b5b1b0b0afb0b0 +b1b2acaeb1b4b5141211111315151413131212121111111416181819181a +1d171c1e1c1816120e0b0802000002010106070c0f111217191a1c0546bd +50101b34352e2e3a35271f18204665456e85b7bcbcaa8f7c7264452d1100 +000c1e4c7cb8bfcdcabbc8c6b496827267686f6c6465625a4e4138333447 +67625e5b525c617a902e001d4699c1a484726f685c565a59626763626463 +5e5d6062625f5b59585d5654595d5c5a595a5a59595a5c5e5f62665e686a +646e6c63626b70696869626b676263676b6d6c716d696563605d5a646268 +644c3e40433a373c403a3c403a3f403e3d404544414555443f6551193141 +2426424f381a1d36342c2428302c2028302b1b20332d10182d190d282a15 +203f2c222d478adadb65515350413f3d313b4d464c50464a4c5149484b4d +44444641414543454347474a4f4b484e4d4d554f5153545452504f505050 +525454524f49504f4642484b4b494a4b5255545455525252535354545350 +4f5051504e4c4a534b484f5656535156504c4d52524c4548524f494d4c49 +4c48464f4e4a4e574e4c4a4d4f5452504a53545855544f4e4c5455595756 +50514f5454534e4c4e4c494d535856504b494a5a58555352545658595a5c +5d5c564f4a5952555b615957564f525753555558555351514d4f4f545457 +5b5f5a5a595b544f4c515255514d474946484a5151504f53595c5554555a +595d5d5f5a5854585955525355585a5958484e524e4a4b4e525356595658 +5859535556564f535a5d56575554565e65625b50545756575a5a564f4e4d +4c4a494a495454555352515153565d5d5a585b5a575e605a4f4d4f4d484b +5156595854514f57514e545a5c5e636c79807f7c7c7d7c79787877787879 +7870727578795452505152525150535353535354545456585b5a5a59595a +5756524b443e342721201f20222931383535373534343536272551de8731 +49435956464755504551617197938fa7588daad8bec6b8a19f966a463038 +465c92cae2d7d9e6e0c7b6abb8b6afb4c2cfcec4c5bfaa98989d9a98b7d1 +c9c6c9bfc3c5c5e0a5442e4b7ac0e6d8c7c6cac9caccccd4d6cfccd1d0ca +cbcdcfcfcbc9c8c8cac4bfc3c6c5c5c7c2c2c2c3c4c4c7c7c8ccc7d3d7d0 +dad6d2ced5d9d2d3d7d2d6d1ceced4d9dcdcdcd9d6d3d1cfcbc9d0ced3cf +b9acadada5a3a8aba5a7aba6a8ababa7a7abaeaeb9b5b2a0a7b280495a4c +343a4948422e36444739323a403d333640392d3b44332c363931323c3c2f +35442e393b74c8ffd4a29fb3acaeb8a8a8b7aeb4bcb5bfc1c2b8b4b8b9b4 +b5bbaeb5b9b7b2b1b4b9b8bcbab8c1c2bec2bdbdc0c2c3c1c0bdc0bfc0c2 +c5c5c3c0b9c1c2b7b2b8bdbcb7b6babfc2bebfc1bdbec1c2c4c2c2c2c4c6 +cacaccc8c7c4c5bfc0c3c9c6c7c6c1bebbbdc0c1bcb7b8c3bfb9bfc0bec3 +c0bdc1bfb9c1cac6c1c2c2c2c2c1c2c3c6c6cbc9cac7c9c7c8c9ccc5c0bb +c1c4c9cbc9c4c3c6c7c5c7c9cccdcbc7c3c1c2c4c4c1bebfc4c9c9cbcccb +c8c4c1bfc2c0c1c5c9c7c0bac6cbcdc9c7c9cbcbc6c4c0bdbcbec0c1c1c6 +c8c3c2c5c8c8c3c4c5c8cac8c3bec7c5c5c9ced0cdcacbcecfc9c6c9cdcf +c8c5c6cac5bcbfcac7c2bec0c7cac8c5cac9cacbc8c5c7cccacececbccd0 +d1cec9c9c7c7c9cbcbc9c0c4c6c4c6cccecdc3c6c6c3c4c7c7c5cbcccdcd +cccac8c7c8c9cbcdcfd0d0cfd0d0d0cccbcfd0cfcccac9c9cacac8c5c1c3 +c8cdcfcbc4bec9c2bfc4cbcecfd1ccd7e2e3e3e3e6e6e2e1e1e0e0e1e2e3 +dedddedfe12e2c2a2b2c2c2b2a2d2d2d2d2d2e2e2e32343635313030312d +2f2c262320150a070807070a0f171d19191815121212140c0f39c7701b2f +283c3523202c24171f30426e7074934a829fcaabad9578726946240f1523 +3b70aac4bdc2d2cdb6a5959a918989969f9b8f8e887361646b6765849e96 +93978e939799b68023113163a6c2b09e9b9c9b9899969d9f98979e9f9997 +999b9b9997969699939195989797999494949596969696959994a0a39ca6 +a3a09da4a8a1a2a6a1a5a09d9da3a8abababa8a5a2a09e9a989f9da29e88 +7b7c7a706b70736d6f736e7073736f6f7376767e7c7d6e7c8d5d293c2f19 +23353833202735382a232b312e2427312a1e2c35241b252820212b2a1d23 +321b262861b5ebb47d748376757d7074867f858b83898b8e868186868281 +877a7e82807b797b8180847f80898a868b86898c8e8f8f8c8b908f909295 +95918e878f8e837e8489888585878e8f8d8d908b8e8f9292929090919395 +9797959291908c8b9094939293908d8a8c8f8e8984858d89838889878c89 +888b8a838c94918b8d8c8d8c8c8c8e9093959694949394929696928a888b +91979997929194959395979a9b9995918f8d8f8f8c898a8f949496979693 +8f8c8a8d8b8b9093928a8590969794919495948f8d88868487888b8b9092 +908f9295958d8e8f9294928d88918f8f93989a9794989d9d9894989b9e96 +949499938b8d97928d898b92959390959495969390929794989895969a9b +9893939191939595938b8f918f919799988e91918e8f92928e908f90908f +8d8b8a8b8c8e90929393949a9f9d99989c9d9d9b99999798989693909196 +9b9d99928c97908d92999c9da1a0adb8b9b6b6b8b8b4b3b0afafb0b1b2ad +acadaeb017151314151514131616161616171717181a1c1b1b1a1c1f1d20 +211d1c181006080805020000060a0404060608090e13111239c16206160a +1a140301100b000407184e5a6d955793b0d7afa6825a4b40240b000f2744 +80b7ccbebcc7bfa6957e76655c5c676e665956503a282a302e2e556f615a +584c535c689065140d346ba9b6977e716a605b5a5a6469626167655e5d5f +61615e5c5b5b5e5855595c5b5b5d5959595a5b5b5c5c5c605b676a636d6a +6562696d66676b666a656262686d7070706d6a6765635f5d646267634d40 +41413a383d403a3c403b3d40403c3c40434554514b394559351034342833 +403b2c172232352720282e2b21242e271b29321f131b1e181924261b2332 +1d282c67bbe8a562525b484045373b4e474d51484b4d544b484b4d47484d +41454a4743404448474b474750514d524d4f525455545250525152545757 +54514a52524742484d4c4a4b4e54565252554e5052545352515150515355 +5553504f4e4a494e525150514e4b484a4d4d4843444d49434849474c4946 +4b48434a544f4b4b4c4b4c4a4c4c5051555454525352525456504a464b4f +5052504b4a4d4e4c4e505354524e4a48494b4b4845464b50505253524f4b +48464b494b4e53504a4350545752515255544f4d4b4647474b4b4d50544f +505156564f5053545854514a555153555c5c5b56595b5e5655565c5c5752 +555754494e56504b47495053514e53525354514e505554585a55585a5d58 +5553535155555753494d4f4d4f5557564c4f4f4c4d50504d545657575654 +54535455585a5c5d5d5c5c5d5c58575a5b5856545150514f4d4c4e52575c +5e5a534d58514e535a5d5e6363717c7d7b7b7d7d79787675757677787271 +7273755f5d5c5d5d5c59565c5d5e5f6061626266676968686666675f5d57 +4d494234241b1d2323242e3e4b4d4c49443e3a39372c35d7a6333a464c3f +4239425043333f4e858d5bd6ff656a88a4c6cdcea98b8c6f4533506f7d8e +a4c3dbcfb7a6a1b2a5c0c3c4c3c6cbcbc6a3a0999ba4a2a7b8c1d2c3c4cb +bec3d0cfd6d26a334253aeeadbc8c1c4c9cbcaccd8dad2cfd4d5cdcdced0 +cfcccacacbccc7c2c4c6c5c7cabfbfc0c1c2c2c3c3c3c8c4d1d5cfd8d4d8 +d2d5d6cdcfd5d2d2ceccced4dadcdcd8d6d4d4d4d4d2d0cfcdd3cfbbafae +aaa5a3a9aca5a7aca7a7aeb0aaa4a8b0b4a9b9a8b5aeadc083425a44353b +4c582d3040463a32383f3e352c41482c2b4040302741432434482b2a4c3c +31354b9cdaffa894b3aaa6b3a6aab8b1b4bab1b9bbbfb4b0b4b5b2b5bcad +b4b9b7b1aeb4bbb6bbb7b9c3c4bfc2babcbec1c3c3c1bfc1c0bfc1c2c1bd +b9b6bfbfb2adb5bdb9bbbabec3c3c0bfc3babcc0c3c4c3c0bfc1c3c6c8c9 +c7c5c3c1c0c2c5c4c1c3c6c6c3c3c5c7c7c5c1b9c1beb7bcbfc0c6c2bebf +bcb5bec9c6c5c8cac7c2c1c6cbcccdccc9c5c3c3c4c8cbcac2babac4cfca +cbcac5c6cbcdcccbc7c3c4c9cccccbc3c7c9c5c0c1c8d0cccfd1cfccccce +d2c4c6c8c8cccdc4b9cacecfcac6c8cacacdcac6c4c3c5c6c8c5c9c9c5c4 +caced2cecdcccdcdcac3bdc3c1c1c7ced1cfcbcccfd1c9c8cad0cfd1c7ca +d1cebfc4d3d7cfc8cad2d7d4cfd1cacacfcdc6c7cecacecec9cad1d3d0d0 +cdcccfcfcbc7c6c7d0d3ccc6c7ced2cdcfcecacacdcdcbcbcccecfceccca +c8d0cecccbcbccced0d7d6d0c9cacececbd8cdc8cacbc8c5c5cccac9ccd0 +d0cbc5cac2bec4cbcecfd0d1dce5e4e1dfdfdee0dfdfdedddedfdfdedddc +dcde3937363737363330363738393a3b3c3d41444443413e3e3e3938332b +2823170803080b0d0d1524302f2e2a251e1917191220c1911d242c322122 +171b26160411245e693bb8f84f55748fb0b4b28a696d542c193455627389 +a9c0b59d8c869584969796939496948d6b6861626d6e72858fa09092998d +92a0a2abab4712243890c9b7a3999a9c9a9898a2a39b9aa1a39c999a9c9b +9a9898999b9694969897999c91919293949492929095919ea19ba4a1a6a1 +a4a59c9ea4a1a19d9b9da3a9ababa7a5a3a3a3a3a19f9e9ca29e8a7e7d77 +706b71746d6f746f6f7678726c70787c6e7e718381849a5f1e3a261a2439 +471f2131372b2329302f261d32391d1c31311f17303213233719183a291e +223889c5e6856d85756e7a6e76878086897f83858b827e8283808188767d +828079767c837b807c7e8b8c878b83858a8d8f8f8d8d91908f9192918b87 +848d8c7f7a82878687888c91918e8d91888a8e9293928f8e8b8d90929391 +8f8d8b8a8c8f8e8b8d939391909294948f8b838b867f8487858b8b878885 +7e87928f8e9193908b8a8f94969796938f8d8d8e9295948c84848e9a9596 +95909196989796928e8f949797968c90928e898a919995989a989595979b +8d8f919195968d82939798938f919393938f8b89888a8e908d91938f8e94 +9b9c9594939494918a848a88888e95989692969c9b9692979a9c9b94949e +988c8e9da09891939ba09d989a939398968f90979396969192999b989895 +949797938f8f90999c958f90979b96989793939696949090929392908e8c +94928f8e8e8f91949f9f999493999996a39b9698999693939b98979a9e9e +999398908c92999c9da0a5b2bbbab4b2b1b0b2b1aeadacadaeaeadacabab +ad22201f20201f1c191f202122232425232424272624242528242625211f +1e11050307070200000b15131415131112151b1b27c38c100d110f000000 +000d00000000374924adf4525e7f98b3b0a776505139160c3058697c90a8 +b7a486716875616c68656261625e56322f282b35353c505e6f5b575a4a4f +60697e8a3109264198c4a789756a655f595c666b65646868615f6062615f +5d5d5e605b585a5c5b5d605656575859595858575c586568626b686b6669 +6a6163696666626062686e70706c6a686868686664636167634f43423e3a +383e413a3c413c3c43453f393d454b42523b464046693d123d32292e3b3f +141a2e342820262d2c231a2f361a192e2c150a26280b1b3015163a2b2026 +3e8fc4db715061493b43353c4d464b4e4245474f4743474845474e3d4449 +47403d434a4348444652534e524a4c50535555535053504f5152514c4845 +4e4d403b4349474b4d515656515052494b4f5051504d4c4b4d505253514f +4d4b4a4c4f4e4b4d52545251535555514d454d4942474a494f4b4748453e +47524f4e5153504b4a4f54565756534f4d4d4e5255544c44444e5851504f +4a4b505251504c48494e515150494d4f4b46474e5652555755525254584c +4e515055554d41535658524f50535354534f4d4c4e51535054555150565c +605e5f5e5f5f5c554f555353596063615b5a5d5d5754585c5d5d55565f5a +4d505d5f5750525a5f5c5759525257554e4f5653595954555c5e5b5b5857 +5a5a56524f4f585b544e4f565a5557565252555554585c5e5f5e5c5c5a62 +60605f5f606260625c5650505555525f564f51524f4c4e5959585b5f5f5a +5459514d535a5d5e6268767f7e7977767577767473727374747271707072 +656566676766656566686a6b6a696a6a6d71736f6f737068685c55564f3c +2d261e1c1f293847565d564b5e4a4f4c3f37189fc3372e534b424923476a +4d42374568925f9ac7b8a981688bafb8bcc4a8745c4550799599958fa1af +aea9b5bebab8bfc3cbd0d0c6b09fa6a19ca3b1bfcacdcbccccc7c3c3cacf +cad6d0b237305188bfeedbbaced3c3d4ccd1d4d6d5d3d0ceccc8ced9d8cc +c6c9d1cecacbcdcecbc8c4c2c1c2c0bebfc0bcbfc4cbd3d7d7d4d1d1d5d8 +d4cecdd2d5d2cfd1d6d9dad8d9d2d3d1dbdcc9d1d4cecdc4b1aaaba89ca3 +a9adadacaeafaab1afa7a8b2b5afa7afb4b1b0b1b2ae7b4f464c35385050 +31323f4b412d304343302d3d40312e3a43273347352b3b42373243442a39 +7fb9fedba1a2a5afa2b1aab0b6b4b5b9bebeb8b5b6b9b8b3b2b4b3babeba +b4b1b7beb3b7babbbcbfc4c9bdc1c4c1bec1c4c4c0bfbfc1c3c3c3c1c4bb +b7b7b6b5bcc2bdb8b8bbbcbcbec2bebfc2c4c5c5c4c2cbc8c6c6c8c9c6c3 +bfc3c5c3c3c6c4bfc7c7c9c9c7c4c2bfb7bfc3bebabec7cbc6c1bfc2c4c2 +c1c3c9c5c1c0c3c6c7c6cecbc7c6c7c7c4c1c2c7ced1cbc4c7cec6c9cbc8 +c3c3c7cdc5c9c0c8cdc9d1c9c4c3c2c2c3c7cbced2cbc8cacac8cbd2c4ca +ccc8c4c3c0bbccc8c8cbc9c4c6cdc6cac7c0bfc8cfd0c1c9cbc7c9d2d5cf +d1c8c5c4c3cacabcc1c7cac7c5c9cdccc8c9cccbcac8cacad6cfc9c5c2bf +c5cccdcccbcbcdd0d3d5d2cccad0d2cecbcdcbcfcfcacad0d1cdcccbcccd +c9c5c7ccc8ccccc7c7cccdc9cacfd3d3d0cccccdc7c9cacac8c6c7c7c7ce +ccc3c8d8dacfcdd6d2c9cfceccd0d1d7d4c9c5cbcbc3bbc9d0cbccd3d2c8 +cdc5bec1c9cfcdc7ccd6e1e4e5e3dfdbdee6e9e3e0e1e0dce2dfdddcde3d +3d3e3f3f3e3d3d3e40424342414245494e4d49494d4941433832352f1e10 +0d09090b121f2d3941382d3f2c2f2e221a018aad23183d32282b03254323 +15091c4978447ca8988860496d93a0a7b197644d36406881847f7786938f +8790968e8a8c90979c9b8e77636a65636a798a9599999a99959090979e9c +aba68d1311326aa1d0ba95a7a895a2999b9d9fa1a09e9d98949aa5a69a94 +97a19e9c9d9fa09d9a9694939492908e8f898c91989fa3a3a19fa0a4a7a3 +9d9ca1a4a19ea0a5a8a9a7a8a1a2a0aaab98a0a39d9c9380797a75676b71 +75757476777279776f707a7d776c757d7e7f848887552a252e1c233e4022 +23303c321e213434211e2e31221f2b32172336241a2a302520303117266c +a5e5be7d777479697a767f8586848788888483848786817e807c8387837c +797f867b7f828384878d92868d908d8c8f9292908f8f919393918f928984 +848382868f898686898a8a8c908c8e919394949391959290909293908d89 +8d8f8d8d908e8b9395959593908b8880888b8682868c908e89878a8c8a89 +8b918d89888b8e8f8e9895919091918e8b8c91989b958e9198909496938e +8e929890948b9398949c948d8c8b8b8c9094979b9491939391949b8d9394 +918c8c888494919094918d8e958b8d8a83848d94958991938f939c9f9897 +8e8b8a89909082878d908d8b8f939290939495929292949e99918f8a898d +949595949496999c9e9b9593999b97949593979792929899959493949591 +8d8f94909595909095969293989c9c9995959590919292908e8f8f8f9694 +8b90a0a295929c98929597959b9ca29f949298989089979e999aa1a0969b +938c8f979d9b979ea9b4b7b7b5b1adadb5b8b2adaeada9b0adabaaac2424 +2526262524242527292a2928292a272829252529282228201e2424140808 +060502040912191c140b221420241e1c0991af1c0a251403050000240a00 +00082c572764948b7f5b466b929ca2aa8f573a233361838982757b7e7061 +63655d585d61676a695b422d342f2c35465663676867625a514e555c5e76 +7e72050f3a72a3c8a7787c755a655a5f6467686763625c585e69695d575a +63605e5f61625f5e5b595859575554555053585f666a6a686465696c6862 +6166696663656a6d6e6c6d6667656f705d6568626158453e3f3c31383e42 +424143443f46443c3d474a464045443d3a414e5c40242c38222234331b1e +2b372d191c2f2f1c19292c1d1a24280a162c1c12232c232032331b2a72a6 +e0b067574b4a32413c444a4a494a4a4a4848494c4b464446434a4e4a4340 +464d4246494a4b4e54594d53565351545755524f4f5153535250534a4545 +444348504d49494c4d4b4d514d4c4f515251504f57565454565754514d51 +53515154524f595a5b5b5956524f474f524d494d5458534e4c4f514f4e50 +56524e4d505354535c5955545555524f50555c5f5952555a505254514c4c +50564e52495156525a524d4c4b4b4c5054575b5451535351545b4d535751 +4f4c4b4457515354544d51585154514a4a535a5b4e5658545760635f655e +5b5a59606052575d605d5b5f63605757595957565758635d56534f4d5259 +5855545456595c5e5b5553595b575458585c5c57575d5e5a5958595a5652 +5459535555505055565253585c5c5955555a585e5f5f5d5b5e5e5e65655c +61717363565c5851555654595a605d525056564f4a5a615c5d6463595e56 +4f525a605e59626e797c7c7a7672737b7e78747574707572706f716a696a +696a696a696d6e706f6f6d6f6f717474717375726c70645b554d3c2d221b +213141515c656a655b645b3f555121abe9654b584d625844578966624a57 +646e5a38b8b6a99ba18a6d6d8898968f895f6766637fa69f748ba8b7bbc5 +c9c7c7c3cbd2c7b3a4a3a695a1b7c9d3d4cfcacececdc7c3c4cbd1c9d5cd +c373284164a9dfdec0c8ccc6d5ccd0d2d4d2d1cecccec9ccd5d4cbc9ced1 +cec9cacccdcac6c3c1bfbebdbbbcbdbfc0c3c8cecfcecbd4d2d5d8d7d2d0 +d3d6d3d0d2d7dbdcdad9d2d4d1dadac7d0d2cccdc9bbb7b9b4a6aaacaeaf +aeaeada9aeaba4a7b4bab8adb4b7b3b3b5b7b5ab7b4f3c3b3b4046493030 +474a342e3d49322b3c42342d343d3632383c34323e3c323c44312d5c95e4 +eebf95adab9caba8afb3b3b2b7bbbabcb8b7babab6b3b3b2b9bbb8b2b1b5 +babbbcbdbebfc1c5c6bec2c3bfbcbdbebdbdbcbdbfc1c2c2c0c5beb9b9b7 +b5b9bfbdbcbec4c5c1c0c3c0c2c5c7c8c7c6c5c6c4c5c5c9c9cac6bdc0c3 +bfc2c2c3bdc7c6c5c3c1c1c1c0bbc4c7c1bdc0c6cac3c0c1c4c5c4c6cac8 +c6c4c5c7c8c6c3cbc6c7c6cbcaccc8d0cccecccac3c6cbcacbccc9c5c2c4 +c6c9cdc4cccfcbd3cbc5c5c5c5c6c8ccced8d1ccccc9c6c7cdbfc6cacbcc +d0d2d0cec9c7cacac8c9cec0c5c6c1c1c6cac7c3c7cbc9c8c9cdcccfcacc +ceccd1d0c2c1c4c8c9c8c7c8cac6c8cbcbcbcbcccdd2cecbc9c5c2c7cfcc +cbcac9cacccfd1d2cccacfd2cfced0c5cacac8cad0d2d0c9c9cccdc8c4c7 +cfcacececbcbcececbcaced2d3cfcccbcbc7c8c9c9c7c7c9caccd0ccc3c2 +c7c5bec8d5d3ced3d0cccec8cfd1cbc9cfcec6c2ced3ceced3d2cacbc5c0 +c1c6c9c7c2cad4dee2e3e3e0dce0e6e8e4e1e1e0dcdfdddcdcde40414041 +4041404143464647454545484b4f4f4c4c504c46494139352d201109060e +1b2a3742474a453b463d2239360992d34d333e33483c2435674139212b3f +5546209d9484717761474c6f868c8a85575e5c5870968d60718a96939697 +8f8f8b959a8f796a676a59687e919b9c99969c9c9a958f91989e99a8a39b +4e051e458ec3c0a0a2a299a3999a9c9d9e9d9c9a9a9598a1a299979ca19e +9b9c9e9f9c98959391908f8d8b8c8c8d90959a9b9a98a2a1a4a7a6a19fa2 +a5a29fa1a6aaaba9a8a1a3a0a9a9969fa19b9c988a868881717274767776 +76757176736c6f7c8280757c8180818689898254291c1f242c3438212138 +3b251f2e3a231c2d33251e252c2622272b23212d2a202a311e1a4981cfd3 +9e6d7d776774767f8585848788878a86858888847f7f7e8284817b797d82 +84858687888a8e928a90918d8a8c8d8c8d8c8d8f9192908e938c85868382 +858b8b8a8c92938f8e918e9194969796959492908e9192959392868c8c8b +8b8e8c89949392908e8c8c8b868d908a84878d918a87888b8c8b8d918f8d +8b8c8e8f8d8c949290929496959499989798938f8f94949596938f8c8e90 +93978e9699959d958d8d8d8d8e909496a0999494918e8f95878e92939498 +9a9896918f9292909196858a8986858b8e8f8a9092929195969598919295 +92989689878b8e908e8e8e918d90929392939395999692918c8a8e979493 +9291929497999a9492979a9796988d92919091989998909193958f8c8e97 +929696939396969392969a9b979493959395969694949697999d988f8e93 +9189909b99949999959892999b95969c9b93909ca19c9ca1a09899938e8f +949795919ca7b1b5b5b5b2aeafb5b7b3aeaeada9adabaaaaac2827282728 +2728272b2c2e2d2d2b2d2b2625252223262522282320201e140602010710 +181e2121211e152421102d2f0796d64b292d1a2717000f4424230f1e2f3f +2d0682796a59614f3a436a848d8e844c4f535473998d59606e6d605e5a52 +545a676b5e493833342533495e6a6b6a666967635a5350565c596d73783b +00244d95c2b5877d7260665a5c60646563615f5e595c65655c5a5f63605d +5e60615e5a5a585655545251525354575c6162615f6766696c6b6664676a +6764666b6f706e6d6668656e6e5b646660615d4f4b4d483b3f4143444343 +423e4340393c494f4d4649453e3a404d5a6445261d1e1e2126311c1c3336 +201a29351e17282e20191e2219151d231b1a26261e2a33201e4d83cecc8d +535748313b39414949464949484d4b4a4d4d49454544494b48424044494b +4c4d4e4f515558505556524f5152514f4c4f4f5352534f564d4947474349 +4f4e4d4f5556504f524f4f525455535252585756585a5c5b594e53545253 +5554505d5c5b595756565550575a544f52585c535051545554565a585654 +55575856545c5958595c5d5d5b615f5f5f5b56575b58575855514e505255 +5950585b575f57525252525355595b655e59595653545a4c535758595d5f +5d5b5654575755565b4d52534e4f53585653575b59595b5e5d625c606060 +63645455565c5b5c595c5c56575b5a5b5a5c5c625d5b585551575e595857 +5657595c5e5f59575c5f5c5b5d54595a575a5f625f59585c5c5853575e57 +5b5b58585b5b58575b5f605c595859595c5f5f5d5d61626468665d5c615f +53555c5a555a595558545b5d57575d5c54535f645f5f64635b5c56515257 +5a5856606c767a7a7a7773757b7d797575747072706f6f71726f6f6d6f6d +717073727572726f72727275757478797771746d63564f4333211b283e51 +5e6971757d786e615a4c1b8ef293486464706758627d94846f796a5fbe83 +5fac89a4a5989c80614c4e708f9690785e6085a9ac9a8fafc3c6cccdced3 +d5c8b9a99e9a9da1adbdd1dbd9d1cecdd2d1cdc7c3c7cdd1ccd2c7cfba31 +334487c2e0ccbfc0c9d2cdd0d3d3d1cfcccbd0cacad0d0cbcdd3d3d0cbcc +cececbc7c6c4c1bdbbbabcbbbfc0c1c5cacbcac7d5d2d3d8dad6d4d4d4d1 +cfd1d6dbdbdad6d0d3cfd6d4c2cbd0c9cccec8c8c8c1b4b2afafb0b1aeab +abadaaa3a7b4bdbdb7bfc3c2c2c6cacacacb793749412a49533a2d3a4743 +3731413b3433393e362b3544332b403c2c363e3435423d293968b7f4e49b +b8ada6b2b3babebdbcc0c5c4c6bebbbec1bdb8b5b5b6b6b4b1b2b3b5bcba +b9babcbdbdbdbec2c2bebdbdbebcbebdbdbfc2c3c3c2c5c0bdbbb9b7b8bc +bdbbbbbfc0bdbdc0c0c1c3c5c6c5c5c4c2c1c2c2c5c6c6c4bcbfc2c0c1c3 +c3bec6c3bfbcbbbdc0c2bbc2c4bdbabcc0c2c2c2c4c6c4c2c5cbc2c2c3c4 +c5c3c0bdc4c2c3c5c9cacbcac9c2bfc0c2c2c6cac8c9c9c8c6c4c2c0c7cc +c3caccc7cfc8c3c4c5c5c4c5c8cad3cdc9c7c4c1c2c5c3c9cbc9caced0cf +cbc5c1c4c8c8c9ccbbc1c7c5c4c5c5c1c6c6cdcec9c2c5cac8c7cdd0cccf +cec1c5c2c5cccbc4c4cbc6c8cacbc9c9cacbcfcececdc8c4c9d1cdcbcac9 +c9cbcecfd4cfcccecfcdcdcec4c7c9c9ccd2d5d4c9cbd0d1cbc6cad3ccd0 +d1cfcfd1cfccc9cdd1d1cecbcacac7c7c8c7c6c7caccc7c8c8c7c5c2c2c3 +c2cfcfccd1cfc9ccc7cdd0cdced2cfc8c7cfd2cdccd0d0cbcbc8c4c4c6c8 +c9c8c6cfdadee1e3e4e0e1e5e8e4e1e0dfdddddbdbdcde46464344434445 +4747494949464646494b4e4e4d4f53504c4e494036302817090714273843 +4b4f545c564d443f32057ad97a2d4848524938425b71604951443fab7249 +8f657875666b543e323f6a8f968d74595a7c9e9e8879929e9996928d9198 +8f7e6e64606368738599a3a19b9899a0a09a948f91979e9ba49ca5920b0d +236dabc7b09d9a9ca29a9a9b9d9d9b9a999c96969c9e999ba1a3a09d9ea0 +a09d999896938f8d8c8b8a8c8d8e9296979694a3a1a2a7a9a5a3a3a3a09e +a0a5aaaaa9a59fa29ea5a3919a9f989b9d9797978e7f7a77777879767373 +75726b6f7c8585828b8f8f90959a9b9da252152b261436422b1e2b383428 +22322c25242a2f271c2433221a2f2b1b252c2223302b162655a4dfc8778b +7c7380818a909190929392948d8a8d908c8683838282807d7b7c7e888685 +86888a8a8a8b91918d8c8f908e908f8f919495929294908b898785868a8b +89898d8e8b8b8e8e8f9194959494928f8e8d8f90939191878c8d8d8c908e +8b94918d8a89898c8e878d8f888284888a8a8b8d8f8d8b8e948b8b8c8d8e +8c89868f8f8e9294979697948f8a8d8d8f91959495959492908e8c93988f +9698939b948c8d8e8e8d8e91939c9692908d8a8b8e8c9294929397999894 +8e8a8d9191929382888b8c8b8c8c8a8f92969a948f90969291979a969998 +8b8f8c8f96958e8e958f9193949292939498979796918d929a9694939292 +9497989d989597989696978d909292959b9e9d9294999a948f939c95999a +98989a989592969a9a979493969698989796979a9c97989897959292918c +9797949999939690999c999a9e9c96959da09b9a9e9e9999969292949697 +9798a3acb0b3b5b3afb0b4b6b2afaeaba9aba9a9aaac2d2a2a282a282c2b +2e2d302d2d2a2d2b24232322232625222927241d1c170b00000919222629 +292933302a262a230071d575243a323627121c36514636453b349a5e3171 +43534f414a372a253c6e999e8669535a7fa29d7e64707162585049546964 +54423630313341526672706c6a696b68615b5555575d5966677d78000c2a +78b1c29b7a6b65645b5c606163615f5c605a5a60615c5e6465625f606262 +5f5b5d5b585452515150535455595d5e5d5b6866676c6e6a686868656365 +6a6f6f6e6a6467636a68565f645d60625c5c5c5549474444454643404042 +3f383c4952524e52534d49505a677686410b211b07283b261926332f231d +2d27201f252a22151c2918102723141e282021302b182857a8debd616a51 +3e45444c54545354545357524f5255514b4848484846434243454f4d4c4d +4f515151525757535254555254515353585757545952504c4c484b4f504e +4e50514e4e4f4f505252535252535659595a5c5e5d5c53575958585b5a56 +615e5a5756575a5c555b5d5651535759575557595755585e555556575856 +53505958585b5e6060605e58545657585b5f5b5b5b5a58565452595e555c +5e59615a545556565556595b645e5a585552535653595b595a5e605f5b55 +51545858595c4b51575556555752595960615e565a5c5651595a58595a4b +514c5156574e505757595d5c5c5a5d5c625f615e5b555c625e5b5a59595b +5e5f645f5c5e5f5d5d5f55585c5a5f6368655c5c63625e575d645d60615f +5f615f5c595d61615e5b5a5a5454565554555a5c57585a5957545454505a +5c595e5d575a575f625f6064635b5a6265605f63635e5e5b5757595b5c5c +5c6670747779787475797b777473716f706e6e6f717472716e6f70737373 +737572716f7172747576777b7c7a757471695a544d3b26263242505c6976 +817769656b5f3b6fffa82f70686f82575b72a67d8a6b644bbaff937da097 +8e9da1a8af9957345d94a4ba8959587791a8c0acbec3c0c6ccd3dbd0b79e +9499a2aaafcad0d9d5cec9cbcfd4cfccc6c5c6ccd1d2cfc4cadc5c303a61 +a0dbdabdbac6cacfd2d4d3d3cfcccbcfcacacfcfcdcfd4d6d3d0d1d3d3cf +cbcacac6c0bcbdbebcbcbcbec2c8cccdcbd3cecfd6dad8d5d4d0cdcbced3 +d7d8d7d8d3d6d0d5d2c2cdd0c9ccd1cfd0cfc4bbb6aeadb1b3b0abadafac +a7aab4bab9bcc5ced1d4daddddd7e9c276493b384146493e2d364c462c2d +44432c2c44432b3042392c383d33303939333c45332e4785ddf7c3c1b7b9 +c7c8ced3d0d1d3d8d7d7cdcbd0d5d2ccc9d5d3d1d1d1d0cfcfd3cfcdcfd2 +d4d1cec9cdcdcbcbcfceccd0cfcfd0d2d2d0d0cfcdcac9c7c6c6c8cac5c2 +c2c2c1c5cac5c6c7c8c9c9c8c8c8c8c8c9cacbcbcbc4c8cac9c9cccbc7cc +c9c5c2c3c5c8cac3c8cac3bdbec0c0c9c9cbcbc5c0c3cbc6c6c6c7c6c4c2 +c0c6c5c6c8cacbcbcbc6c2c0c1c1c1c6ccc8c9cacccecdc9c6c7ccc3cacb +c5cdc7c2c5c7c6c3c2c4c6c9c6c3c2c1c2c3c6c7cacac4c2c4c6c4c9c3be +c1c6cac9c7bbc0c5c7c6c4c2bfc5c5ccd2cbbfc0cbc2c2c9cbc5c7c8bcc9 +c0c1cacac0c1cbc6c8c8c7c3c1c0c0c9cacdccc6c0c3cbc9c8c6c6c7c9cc +ced2cecac8c7c6c6c7c5c6c7c8caced0d1c9cdd2d2cac4c8d1c8cbcdcdcd +ccc9c7c4c8cbcbc7c5c5c6c8c6c5c3c1c2c5c8bcbbc1c8c6c0c2cbbfcccc +c8ccccc7cacaced0cdcbcdc9c4c6cacccac9cacbcbc7c5c3c1c2c6cccfc2 +c9d3d8dee3e5e2e1e3e4e2e0dedddcdddcdbdddf47464442424446474647 +4846444344474a4b4c4e5053514e4d4d463a35301f0b101a28343d47535b +5146444d45265df48e1251494d61353950835a66473f289cea7f637f6d60 +696e7482723b225391a4b9865553728a9eb197a39e92908f8f96917c6359 +5e6a7277929ba1a09994959ba3a199938e8f969b9f9f95a0b133091a4b8e +c6c09e959b999c9c9c9d9c9b9a999b96969b9d9b9da2a6a3a2a3a5a5a19d +9c9c98928e8f8d8b89898b8f94989998a19d9ea5a9a7a4a39f9c9a9da2a6 +a7a6a7a2a59fa4a1919c9f989ba09e9f9e91867e7675797b78737577746f +727c828489949ca0a1a7abaca7be99522a20212d353a2f1e273d371d1e35 +341d1d35341c1f31281b272c221f2727212a33211c3776ccdea2988a8a96 +97a0a7a7a5a7a8a7a69f9a9fa4a19b97a2a19e9d9d9c9b9ba09e9c9ea1a3 +a2a09a9fa09e9ea2a4a2a3a3a2a4a4a4a29f9e9c99979494939597928f90 +908f93989394959697979696979696979899999992969897979a99959c9b +97949395989a9196968f898a8c8c94949696908b8e9691919192918f8d8b +939394969899999994908e8f8f8f949b959697999b9a9693949990979892 +9a948d9092918e8d8f9194918e8d8c8d8e91939696908e909290958f8a8d +9296959384898e908f8d8b8b9092999f988e8f998f9097999395968a978e +8f98988e8f98929493938e8d8b8c94969898918c8e97959492929395989a +9e9a96949392929391929294959a9b9d94999d9e9590939d949799999998 +95939094979793919194999a99979596989b8f8e949b9993959b8b959591 +98989396969b9c999799969193989a98979899999593918f90949a9e949d +a5aab0b5b4b1b0b2b2b0aeaca9a8abaaa9abad2a2927252527292a292a2b +292726272722212222252725232629282121201100050e171e20242d342a +2023312e134fe681043f34324212142d633e5037362294dc67485c432f37 +394458532618549aacb57f545779919faa8485725e54504e5b65543b2f32 +3941445f676e6c676266696965605a56565a5b5e5f5d70911f021d589ac5 +b17f69645e5d5e616163615d5c5f5a5a5f605e6065686564656767635f60 +615d5753545351505052565b5f605f6662636a6e6c696864615f62676b6c +6b6c676a6469665661645d606563646358504b4342464845404244413c3f +494f4e52595f5e5f666c7277947938160f13222d352a192238321819302f +1818302f15172720131f241b1823231d28311f1a387dd2da917a60565c5c +626a69686a6a696b6360646a66615c69666563646262626764646469696a +656264676365676a66686667676968676464615f5c5b595a5c5e59565555 +54585b56575857585857595f636364656666665f636564646766626b6965 +62626467696065665f595a5c5a606062625c575a625d5d5d5e5d5b59575e +5e5f61636464645f5b595a5a5a5f635e5d5e6062615d5a5b60575e5f5961 +5b575a5c5b5857595b5e5b58575657585b5a5c5d56555659565c55515359 +5c5c5a4c515858595555525a5962666154575e4d4b52544e50514552494a +5353494a56585b5d5a585455535e5d625f5b53585e5c5b59595a5c5f6165 +615d5b5a59595a58595c5b5f6165645e6067655f575d645b5e6060605f5c +5a575b5e5e5a585857555152504e4f54574b4a51585650525b4f5c5c585f +5e5a5d5d6263605e605f585a5d5f5d5c5d5e5e5a58565455595f63586069 +6e747979767577777573716f6e706f6e70727471706e6f6f727374747471 +706f7172737374787c7c7a7974767062584e3c292f37434f5b6979857e5f +76584852ffb35c6b7e6d805f537b8b82995f3b2cb3ff9e7c8894a3a9abb2 +bec0c1a56a5277a3a9af864b456a8ca4bdc4bcb8c4cbcdd0aa9e97969ca6 +bbcec2c8d2d6d5d1cdcbd3cdcac4c5c6cccfd4cbc8c3d9953736477fcce1 +cac0c6c3cdd0d1d1d0cdcac9cbcaccd1d1d0d0d2d5d3d0d2d5d5d1cdcccd +cac1bebfbfbbbbbabbbfc5c9cbcacec9cad2d7d6d3d3d0cdcbcdd3d7d7d6 +ddd9dcd4d6d4c6d4d3caccd1cfcfcbbfbcb4abaab0b3b1acaaadaeaeb1b6 +b9b7b8c3cfd5d9dddfdde4cbebd15e394d2d364a4a332f414638253d4535 +2e39413e32353f382b38402e333f3734413e33355fafeef2c5c0c5d1d2d9 +dddbdbdde0e1e5dcdae1e7e6e0dfe5e2dfe0e1e1e0dededcdbdee2e4e0de +dee1e1dfe1e5e6e3e5e4e3e2e5e4e1e0dddddbdbdadbdbdbdcd9d8dad9d6 +d6d9d0d1d1d2d2d2d2d2d0d2d4d6d8dadcddd3d8dad9dadcdcd7dbdad9d8 +dadbdcdcd8dddcd6d3d3d4d3d7d7d9d8d2cdd0d7d8d8d7d6d4d3d3d2d1d3 +d5d7d8d8d9d9dbdbdcd9d1c9ccd4d3d4d6d9dad9d4d1ced5cdd3d2ccd5d0 +ced1d3d1cccacccfd1d1cfceced1d3d3c9cdcdcac9ced1d1d1cdcacbd1d5 +d3cfc5c6c8cac8c5c5c7c9cad1d7d1c4c5d0cdccd0cec7cbcdc4d1c6c3cb +ccc4c7d1cbcccdcbc7c4c3c4cccccecec8c1c2c7c7c7c6c6c8cbcfd1d2d1 +cfcbc9cacccccbcac9cacacacbccced0d4d4ccc4c6cdc9cacbcdcdcac7c7 +c4c8cbcac7c4c5c6cdcccac7c4c3c5c8c3c0c4ccc9bebec6c6d0cdc8cdcf +cdd2cececdc9c7c7c6c4c8c7c9cbcbcaccd0c6c4c1bdbcc0c8cec2c9cfd4 +dde4e5e2e1e0dfdfdfdddcdbe1e0dedfe045444141404243464547454441 +4242454747484d4f514f4f4d504b403731200e141d262f3642505a563853 +3a2f3ff6a040495b485c382d54645d753c190b94f1825d666d787879808c +929a84513f6998a4ab814841648598acab9b8e908f8b8e6c645d5d637186 +998d959da3a29e9998a3a098918d8f93999e9a9798ad6b10143270b9cbac +9d9d959a9a999b9a9998979897999e9f9e9ea0a5a3a3a5a8a8a49f9e9f9c +9390918e8a8887888c919597979c9899a1a6a5a2a29f9c9a9ca2a6a6a5ac +a8aba3a5a395a3a2999ba09e9e9a8c877c7372787b797472757676797e81 +828a97a1a5a7abababb39ec1ab3c1d3317253b3b2420323729162e36261f +2a322f21242e271a272f1d222e26222f2c212553a1d8d4a09497a2a4adb3 +b3b1b4b4b3b7afabb3b8b8b1aeb4b1aeadaeaeadabafadacafb5b7b5b4b3 +b7b8b7b8bdbdbbbbbab9b8b8b7b4b2aeafacaaa9aaaaaaaba8a7a9a8a5a5 +a89fa0a0a2a2a2a2a1a1a3a5a7a9abadaea4a9abaaabadadaab0afaeadac +adaeaea9aeada7a1a1a2a1a4a4a6a59f9a9da4a5a5a4a3a1a0a0a1a2a4a6 +a8a9a9aaaaacacadaaa29a9da5a2a3a5a8a9a8a3a09da49ca2a19ba49f9b +9ea09e9997999c9e9e9c9b9b9ea0a0979b9b98979c9f9f9f9b98999fa3a1 +9d91929496949392959699a0a6a09697a29e9ca09e979b9d94a196939b9c +9497a0999a9a9994929092999a9b9c958f8f949494939395989c9e9f9e9c +9896979999989896989798989a9b9ea1a29992939a9697989a9a97949491 +95989794919296a0a09e9b9897989b9693979f9c919198949d9a959a9c9a +9f9b9d9a96949493919595979999989a9e94928f8b8a8e969d949ba1a6ac +b3b4b1afaeadadaba9a8a7adacaaabac2725232222232527272827252323 +24242220212326272527262c2e27242114030910161a1c25303833173520 +192ee7912a303f2b3c17093345425d290d0491e96d404342453e3c41515e +6f653d38699ca1a885514f708d98a2957a64605b575c433e3532363f5465 +575e676c6d696761655f5d585a595c5d5e585c65865200134383bdc09073 +67595b5a5c5d5e5d5b5a59585a5f605f5f61656362646767636162646158 +555654504f4e4f53585c5e5e615d5e666b6a676764615f61676b6b6a716d +70686a685a68675e606563635f535149403f454846413f424343464b4e4c +4e5863676a6e6f70796791842007240c1d34341d192b30220f272f1f1823 +2b281a1c2720132028161b271f1e2b281d265faedac9856d656a68707776 +757677777c747378807d79747c77767477757674777576777e7e7e7a7c7d +807c80828580817e7f7c7f7c7b77767474707170727273706f6f6e6b6b6d +6465656464646466696d6f71737577786e737574757777737b7a79787879 +7a7a757a79736e6e6f6e6f6d6f6e6863666d6e6e6d6c6a6969696a6c6e70 +71717272747475726a62656d6a6b6d7071706b68656c646a69636c676669 +6b69646264676969676666696b695c5e605b5c5f6462645e5d5c64666662 +57585b5c5b58595a5d5e666b665a5c645a5458564f53554c594e4b53544c +4f5d5c5f615e5b575757605f62615c54565b5b5b5a5a5c5f63656665635f +5d5e60605f5d5d5d5e5d5f5f6263686760575a615d5e5f61615e5b5b585c +5f5e5b5859585c59575451505457524f545c594e505a5964615c63636368 +6465635f5d5d5c585c5a5c5e5e5d5f63595754504f535b62585f656a7178 +797674737272716f6e6d73727071727271706f6f70717275767573717274 +76747273797c7b7a7a7a7872645547382c2e36424e5965707771944d534f +e5a760669880886c525f888b89613b36caffce5b9ba9a49fcdc2c1cbc2cb +c594625d6981b4b07149486186b6bebdbdc4bcafaa968e919fb1bdcad4c7 +c9cdd2d5d4d1ccd0cbc9c5c6c8ccced0c8cec5cec3502e3762acdbdacec9 +c4cacccecdcdcac8c8cacbced2d2d1d0d0d1d0ced1d4d5d0ccc9cecbc2be +c0bfb8bebcbabbbec1c2c1c6c4c7cfd3d2d1d2d4d1ced0d5d8d9d7dad7d9 +cfcfcec4d6d5cccdd0cbcac6bab8b2aaa9aeb2b1aea5a9aeb3b8babbb7bc +c6d2d5d8dadad8dccddae2ad603833343a444438303847332e37443c2b34 +4e382e3d402a324233323f3c30373f382b477fccffd2c5c1ced0d6dad9d8 +dadcdde2dcdbe2e7e7e4e2dedcdadadcdcdcdadcdadbdee1e2e1e0e9eae9 +e4e6e9e8e5e9e8e7e7e7e5e5e2e2e4e2dfdee3e5e3dddee3e9e8dfd8d6d5 +d5d5d5d5d5d6d4d0d1d6d9dce0e4e7dfe3e5e4e5e8e8e4e3e3e5e5e5e4e3 +e3e5e9eae5e1e2e3e0e2e1e4e3e2dce1e5e3e1e3e0dfdde0e0e0e1e5e8e9 +e9ebece1e5eae9e0d7dae5e1e3e6e5e4e0dddadae1dbe0e0d9e3dfdee1e4 +dedad5dadce5e4e5dfe1e2e5e1d9dbddd8dadde2e0dedddedce1e3e2ddda +d7d8d7d7d3d6d9d9dadfe1ded7d9dee2dcdedad6d9dfd3e0d5d3d6dbd6da +ded9d9dddbdbd7dad9ddd9dbd9d8cfd0d1d6d3d4d2d5d6dcdcdddee0dadb +dde1dfdad5d5d5d6d1d3d4dedbdfdddad0d1d2dad6d8d9dad4d5d4d4d5da +d7d5d1d4d5dbd9d9d3d1cdd0cfd2ced2d6d7cdced1d0d9d5cfd4d6d5dcd7 +d6d4d2d2d3d3d4d0cdcfd5d5d0d2d9d4d1cdc8c5c7cccfcdcfd2d4dbe2e3 +dfe1dddbdee0dedcdde5e2dfdedf44434241414243444748474543444648 +4644454b4f4e4d4e4f514d4134271a0f121821293039424a446b293436d4 +994f477258604127345f62643c1a18adf4b0366f7c766e9d91929b96a3a2 +7545425476aeab6d46455d7ca8aba1999686716a5a5457697b8997a39497 +9ba0a2a19e9ba09e97928e90929698959e98a198270d24549cc7c0ada096 +979696979796969697989b9fa09f9e9ea1a0a1a4a7a8a39e9ba09d949092 +8e878b8987888a8d8e8e9493969ea2a1a0a1a3a09d9fa4a7a8a6a9a6a89e +9e9d93a5a49b9c9f9a999587837a7271767a79766d71767b80828384909d +a6a7a7a7a6a5aba0b0bd8b421c1a212b353529212938241f28352d1c253f +271d2c2f19213122212e2b1f262e271d3f74b9e6ae9b95a1a3adb2b1b0b2 +b2b0b5afaeb5bab8b5b3adaba9a9a9a9a9a9afafb0b3b6b9b8b9c2c3c2c0 +c2c5c4bec0bebcbdbcbbb8b5b5b5b3b0afb2b3b1abacb1b8b6aea7a5a4a4 +a4a4a4a4a5a6a3a7abafb1b6b9bdb4b9babababebdb9babcbcbcbcbbbab8 +babebcb8b3b5b4b1b3b3b3b5b1aeb0b7b2b3b2b2aeafafb2b3b7bbbebfbf +c1c2b7bbc0bfb6adb0b8b4b6b7b8b5b3aeadabb4acb3b1acb4b0afb2b2af +a8a6a8adb3b5b3b0afb3b3b3a8aeadabaab0b2b3aeb0aeafb1b6b2adaaa7 +a6a7a5a3a5aba8acb1b5b0abadb2b5afaeada6acafa6b0a8a3a9aba9aab1 +a9abacadaaa9a9abacabaaaba7a19fa3a5a5a3a4a4a8abaeacb0afacaaaf +b0b1a9a7a4a7a5a3a2a6adadaeafa9a2a0a4a9a8a7aba9a6a4a6a3a7a9a9 +a4a3a3a7abaca9a6a1a0a0a1a2a0a1a8a69f9da3a1aaa6a0a5a7a6aba6a5 +a3a19fa0a0a19e9b9da3a39ea0a7a29f9b9693959a9e9ca1a4a6aab1b2ae +afaba9acacaaa8a9b1aeabaaab2322212020212223262726242223252724 +222127282726272c30322b211a1007070d12171a20282d274f0f1f22c48c +3d2a4e353c1e04123f464a290b0ea9f3a81c4c5244345b4c4c5959707a58 +33395174b0b27b57566b84a79d8b7972604a44352e2f3d4d57626b5b5c60 +65696867605e5b5c5b5d5f605d5b54605f77761108376ba6c0a7846c5a58 +5659595b5a595958595c6061605f5f61606063666762605f656259555754 +4d52504e4f5154555559585b636766656668656264696c6d6b6e6b6d6363 +62586a696061645f5e5a4e4d473f3e434746433a3e43484d4f504d515b69 +6c6f706c66695d748965280e131a242e2e221a22311d18212e26151e3820 +162528121a2a1b1a2724181f27201d4e84bfdd96756468686f7574737576 +757c76757c81807d7b75737171727272717878797c7f818080898a898688 +8b8a85888485838581817c7e7d7d78797a7e7c76777c8081766f6b6c6a6a +6969696a6a6a6d74757a7c82837d7f838083848682828386848683848185 +8788817f7e807b7b78797a7773767c7878787774747577787b7f82838385 +867b7f84837a71747d797b7f7d7d7876727379747879717c78777a7d7773 +6e73757e7d7e787a7b7e786d6d6f6a6c6f7472706f706e7375746f6c696b +696a656a6d6d6e7576746c7073726b6c6964686d626e6461656965686e6b +6d716f6f6b6e6d716d6f6d6c6364676a6a69696a6d717372757571707476 +756e6969696a656768726f73716e6465686e6d6d706f6b6a6b696c6f6e6a +68696b6b6b6965615f62636462666c6b63636869726e686d6f6e736e6d6b +6968696968636062686863656c6764605b585a5f636165686a6f76777374 +706e7172706e6f77747170717575757575757575777776757374777a7874 +757c7f7a797a7b756e604e3c34363c3f444a535c65695f6e5e3bdbd45e77 +8786898956677882808d5323feffd578a3b6b7d2c2bebbd3c7c5bfab9996 +81576488a0a07e4137698ca6bbc4c0a7908b97919ab3c9cecdccd3d1cfce +cecfd1d0cfcac9c7cacbcdced0cbd0cacbd67e332c4382c7e6d9c9c7cacd +cecececccbcbcbcdcfd0d1d1d1d0cececdd1d5d6d2cec8cfcec5c2c4c2b8 +c3bfbcbabcbdbebdc0c0c6cdd0cecfd3d6d3d0d1d5d8d8d6d7d4d5c9c8c8 +c2d7d5cdcfd0c9c7c5bcb6b2abaaaeb1b0aea7a9afb6bababab7c2c9d2d4 +d6d9dbdad0e1cbcbe4a74e4037303a48433030404330304242302f424033 +353d3830343b34383d3731383c2f3155a0e8edd0c2ceccd4d8d6d4d7dad9 +dad7d7dddfdfdddde1e1e1e1e3e3e4e4dfe1e4e5e6e5e6e5e3e4e2dfe0e4 +e2dee2e2e1e2e3e3e2e0e2e6e3dcdbe1e2dfdbdbdee3e1d9d3d1d3d2d2d2 +d2d2d2d1ced0d5d7d9dbe0e3dee3e5e4e6e9e8e4e3e1e3e3e2e1e1e1e2e5 +e7e2e0e1e3e0e7e3e4e4e4e0e2e4dfe1e5e4e2dfe1e1e1e5eaebebeaebec +dedfe3e6e3e0e4ebe4e8ede9e7e1e2e1e0e7e3e7e8e0ede9e8ebece5dfdb +e0e4eaecece5e5e8e9e5e3e6e8e3e3e5e7e5e2e6eae7e9eae8e2e5e1e2e1 +e1dbdee4e3e7e9e4e4e3e4e2ece4e4e2e1e7e9dde3e0e1e2e6e7e7e4e4e5 +e8e7e6e4e6e6eae4e3e4e5e0dedde7e4e3e1e3e3e6e7e6ebede7e5e7e9e7 +e3dedee1e2dfe0e4eae6e7e8e7e0dddce9e4e4e6e6e1e1e3e2e4e7e4e2df +e2e4e5e5e6e2e0dcdddddddbdde0e3e2e2e0d8e0e0dadedfdbe0e0dfdfe0 +e2e1e0e1dbd6d8e0dfd7d8e0e1e0dedcdad9d7d5dcdbd9d8dce0dfdae2db +dbdfe2e0dfe1e8e4dfdcdc44444444444444444646454442434649474344 +4b4e4c4b4e504c463b2a1c16171e1e2023282d32362f41381cc4c2526666 +5c5e5e2a3b4c5756642f03e1edbd57727d7f9e918f8fa99d9c9683716d58 +35527d98997a3f34658298a5a597775a525f5a637f959c9c9ea2a19f9e9e +9f9fa0a09d97949293939598959e9c9daa54121b3975b4ccb9a199979796 +9898989999989a9c9d9f9f9f9e9e9ea0a4a8a9a5a09aa1a0979496918790 +8c898788898a8a8e8f959c9f9d9ea2a5a29fa0a4a7a7a5a6a3a498979791 +a6a49c9e9f98969489817a7372767978766f71777e8282828499a4a8a7a4 +a5a7a7a0b5a3a8c488312724212b393421213134212133332120332e2123 +2b261e232a23272c2620272b212a4e90cfcaa898a3a2aab0b0adafb0afb0 +adadb3b5b2b0b0b2b2b2b2b2b2b3b5b4b8bbbcbdbebfc0bebfbdbcbdc1bf +b9bbb9b8b9babab7b5b7b9b5afadb2b3b0acacafb4b2aaa4a2a4a3a3a4a4 +a4a4a4a4a8adafb1b3b8bbb6bbbdbcbec1c0bdbcbdbcbcbbbabab9b9bdbc +b8b5b7b6b3bbb7b6b8b6b4b4b8b1b5b7b8b4b3b3b5b9bdc2c3c3c2c3c4b6 +b7bbbebbb8bcc3bbbfc0c0bab8b5b8b3beb6bebbb7c0bcbbbebdb8b0aeb1 +b7bbbfbdb8b6bbbab9b5bbbbb8b6bababab5bbbdbcbcbfbbb5b8b4b2b4b1 +aeb0b8b5bbbdbbb8babbb9bfb7b5b5b2babab0b4b3b2b5b7bab8b7b6b9ba +bbb8b8b8babcb8b5b8b7b4b0b1b9b8b5b5b5b7b8bbb8bfbfbbb7bbbbbbb5 +b2b0b5b4b3b2b8bcbab9bcb9b4afb0bbb8b6bab8b5b3b7b4b8b9b8b4b3b4 +b6b4b3b3b0adaaa9aba9a9a9aeafb0aeaeabb6b3adb1b2aeb2b2b1b1b2b1 +b0afb0a9a4a6aeada5a6aeafaeacaaa8a7a5a4acadabaaacb0afaab0a9a7 +abaeacabadb4b0aba8a8232323232323232325252423212225292925242b +2d28272b2e2e2d281c110e121615141417191d21192c250ab4b446524332 +3434031629373d501f00dbeabd4e52504e654f49445d555a5e524d51442b +5083a5ab915749748a959893816042373c333a5065696463676361606061 +62605c595a5d636463605b555f616c853b092e527faeb5926d5d5857595a +5c5c5c5c595b5d5e6060605f5e5e5f63676864625e66655c595b574d5753 +504e4f50515153545a61646263676a676465696c6c6a6b68695d5c5c566b +696163645d5b59504b47403f434645433c3e444b4f4f4f4b575e6c707373 +6e68586a5b68956b23201d1a24322d1a1a2a2d1a1a2c2c1a192c2a1d1f27 +221a1c231c20241e181f23213a609acab484686c686e7372727274737673 +73797b7977777a7a7a7a7a7a7b7d7d828586878788898788868485898782 +848182818482827e82828178797c7f7c78787b7e7e746e6a6e6b6b696969 +6969686b727276767d7e7b7e827f8384858281818381827f817e8182857e +7e7d7f7a7e7a7a7b7a77787b75787b7b787677787b7f8485858485867879 +7d807d7a7e857d8185827f7a7a7a78807b80807985818083857d7873797c +8384857d7e80827c77777a747576797674777c787b7b7a7477737473736d +7277777a7e7979787b79847c7d7a7a7f82757c787a7a7f7f807c78787c7a +7a777a797e777777797372727d7b7978797a7c7e7c82837e7b7e7f7e7771 +7274767274777e797b7b7b7371717f7b7a7d7c78777a787b7d7b7876787b +7c7e7e7b787577787776797d7f7f7f7d747c7a7478797377777676777776 +75756e696b73726a6b737473716f6d6c6a696e6f6d6c6e72716c736c6b6f +72706f717a76716e6e7675777678757774747374717271777a7975767d7e +7b787a766e675b493837455b564d494c545d626d654fc5da747c81929f87 +636c6c90828a5844ffffc96184bbb8c2c7d6c5d7b7c8bda8949fc1be8f51 +6481a59c4b1b395782adbeb799878a909eb9cdccc2c6d5c7ccd1d4d3d0ce +cdcbc9c9c8cbcecfced5cecfcdcedaaa442a3365b5e6dbc2c5ccd0d1d2d2 +d0d0cfcecfd0cfced1d2d1cfceced3d8d9d5d1cad2d2cac6c9c6bbc4c2be +bbbcbfc0bfbdbfc7cdcfccd0d5d7d2d0d0d4d6d6d3dcd8d9cccacbc7ded4 +cdcfd0c8c7c7c0b6b3aeacaeb0afaeadaeb2b7b9b7b7b4c1c8cdced1d7dc +ddd6d7dad5d6dea53d3a353a43473e332d473b32344042382c453d2d3546 +31254135303d4131344037244083c4ffd8c3d3cdd6dcdbd9dbdcdbdddbdd +e1e1dddddfdfe0e1e1e2e2e5e5d8dbdededcdadcdcdedfdedde0e5e4e0e2 +e3e3e4e7e8e7e6e8eae8dfdde2e5e1e9e3dfdfddd9daded8d5d4d4d4d4d5 +d4d4d6d9d8d8d7dbddd8dcdfdddfe2e2dee5e2e1dfe0e0e1e2dce0e0dedd +dedddae7e1dedfdedad8d9dbe0e6e8e6e2e0dedee0e5e4e1dddedee4dfdf +e0e2dee0e4dfe6ebe8e5e0e2e6dee7e1e8e6e1ece9e9ebebe4dcd9dee4e2 +e6e5e0e0e5e5e1dbe1e4e2e3e8eaeadfe7ece8e8e7e4e0e2dedcdedcd8d9 +e0e0e6e5dcdde1e0daeae2e2e2e3eaebdcdbdee1e1e6e9e6dde3e3e5e3e2 +dedfdfeae2dfe2e6e3e0deedebe8e6e5e5e6e7e5ebece4dfdfdedae0dcde +e3e6e3e6ebebe6e6e9ebe5e1deebe5e4e7e6e1e1e6e2e5e7e5e2e0e2e6e8 +ebecebe8e6e5e6e4e3e1e0e2e4e0dadae4e5e1e5e3dde0e2e2e4e6e7e3e0 +e0e3dcdee7e5dad9e3e2e2e4e7e7e5dfd9e7e4e0dbdddfdcd6e3dcdbe1e4 +e2e4e4eae4ded9d9454746484747464643454343414346494844454c504d +4b4f4d463e3524141521362f2823252a2f33403c2ba8c05e67656b705836 +4041675a643320e2f6a8435f877c8991a596ab8da0947e6973948d673652 +729994471937537b9da79774595a5e6d889d9c9398a79a9fa4a7a6a3a1a0 +a09d9896959595959d989c9c9fab7e1f142455a1cfbe9f9c9b9a9a9b9c9d +9e9e9a9c9c9c9c9fa09f9f9ea0a6aaaca7a39ca4a49c989b958a938f8b88 +898b8c8c8a8e949c9c9b9da4a5a19e9fa2a5a4a2aca8a99c9a9a96ada39c +9e9f9796968d817b76747678777675767a7f817f7f8198a1a3a19fa3a8aa +a6a9b0aeb3bd8320222126303630241e3a2e23252f31271b342c1b243420 +1430241f2c3020232f29183573b0e7baa2b0a6aeb2b0aeb0b2b1b3b1b2b7 +b6b3b0b2b0b1b2b2b0b1b3b6abb0b5b5b3b3b5b7b9bab9b8bdc2c1bbbbba +babbbebfbcbbbdbfbab1afb4b6b2bab4b0b0aeaaabafa6a6a5a5a6a6a7a7 +acafb1b1b0b0b3b6b0b5b7b6b6bbb9b7bebebdbbb9b9babab3b8b7b4b2b4 +b2b0bab5b2b3b2aeacadafb4babcbab6b4b5b6babdbeb9b7b6b8bcb9b7ba +bab8b8bcb5b9bebeb8b6b8bcb4bdb7bebcb7c2bfbcbebeb7afacb1b7b5b9 +b8b3b3b8b8b4afb5b8b6b7bcbebeb3bbc0bfbcbebbb4b4b0aeb0aeaaadb4 +b4bab9b3b1b8b7b1bdb4b3b4b4bcbcaeacb0b2b3b7bbb7b0b5b7b7b7b4b2 +b1b3bcb6b1b6b8b7b2b2c1bebbb9b8b8b9bab8bebfb7b2b2b1aeb4b0b0b7 +b8b7b8bfbdbab8bdbdb9b3b2bfb8b7bab9b4b4b9b5b8bab8b5b3b5b7b6b7 +b8b7b4b2b1b2b0afadacaeb0aca8adbab8b4b8b6b0b2b4b4b6b8b6b2afaf +b1aaacb5b3a8a7b1b0b0b2b5b5b3ada8b6b6b2adacafaba6b1aaa7adb0ae +aeb0b6b0aaa5a5242525262625252422232221202125292826252c2f2c2c +2f2f2c282214080b15261e1816161a1f212d2a1d9ab350564d44442e0d19 +1e4940512314d9efa13b4d60485255635264455a524234446b6c4e2b5279 +a7a960314d62839da18c6449433d455d6f6b5d5d69595e61646562605f5c +5c5e6166686560645a5d616b7f590d203960a0bfa07566605a595a5c5e61 +635e5d605d5f606360615e62656c6b6965616969615d605b505956524f50 +52535351545b62636164696a666364676a69676e6a6b5e5c5f5b72686163 +645c5b5c544d484341434544434243474c4e4c4c48565e676a6e716f6b5e +5e666b7d94680e16181d292e271d1732261c1e282a20142d25171d30190d +291d182428181b272622437db1da9e777a6b7178797979787779777b7d7f +7979797a797c7a7b797e80747b7f7f7d7c7e8082838281858a8984848484 +8588898786888a867d7b80827e86807c7c7a76757971706d6d6b6b6c6c71 +7476767575787b757a7c7b7e80817c8582837f807e817f7b7d7f7a7b7a7b +767f78757675716f7072777d7f7d797777787b7f7f7b7878797e7a797b7c +797a7e797e83827d7a7c8078817b82807b86838183837c7471767c7a7e7d +78787d7d7970767975787b7d7d727a7f7d7b7c797376727072706c6e7575 +7b7a737278777386807f808088887a787c7e7f8387837979787978767373 +747e7773777a7874758483807e7d7d7e7f7d83847c77777671777172787a +787a807f7b7a7e7f7a7575827d7c7f7e79797e7a7d7f7d7a787a7f818588 +878482818281807e7d7f817d7776807f7b7f7d757779797b7d7c78747476 +6f717a786d6c767575777a7a78726d7b7a767171717068766d6b71747272 +747c76706b6b727274727272757675717273716c717a787a7d7d7d7b7775 +7674644c434d5f6e6e6d5b4b4b3956575352a9e97d809d9cac746b517678 +7b87736dffffc86c9797bdc3c8c9cac8c5c1b9a89da7bac5cac881465194 +ad8c5c36325783a5babca486a2b2bdbfbec1c7cacacfd1cbc9c9cac9c9c5 +c8cac9c4c8d1d5ced2ccc7d9bf6e3a2f469bc5ddc6bdc4cfd5d4d2d2ccc6 +cbcbcdd0cecccfd6d2d3d3d5d6d6d6d5d2d1cfcfcecac6c2bfc1bfbcb8b8 +b8babfbabec7cbc6cbd5cfcdcfd2d8dcdfdfdbd5d1d0cecacacdc2cbd3d4 +d3cfc6bcadb4b3acaab0b6b7afafb1b5babcb9b4c5cbd0d1d2d8d9d7d5d5 +dbd9d4d6c7a43a5334364e473a2437423026424837343b3f323445372736 +432f344037333c3e3134549bd2ebb2bacad3dadfe4e7e5e2e0dcdad9dcde +dedddcdcdddddddddcdbdbe1dcdde6e3dde0e4e5e4e3e2e1e3e6e1e2e5e6 +e7e5e2e0e4e1dddcdfdedbd7e6e2dddbdadddededcdad9d7d7d5d2ced2d6 +d8d4d6dadbd5dbe0e3dedde0e5e5e3dcdfe4e2e5e7e0e4e0dcdee1e2deda +dfe2e5e2dddbdde1d8e1e8e8e6e6e4e1e0e2e5e4e3dfdfdde2e5e3e1e6df +dde6e9e7e6e5e8e7e6e4e3e8e8e6e8ece7e0e4e9e6dfe1e8e4dadfe4e8e7 +e1dddde0dcdee1e4e7e8e6e6ebe8e6e6e9e9e7e5e0e0dfdfdddbe0e8e3e4 +e7e7e2dbdfeae8edefe5e1e0e3e0d7e4f1ebe6e4e8e7eee3e1e4eceae9e5 +eae3e0dee4e4e4deedeae7e7e9ecedeee9e7e4e2e2e0dddbdbdbe0e2e6e4 +e6e5e8e9ebe8eae7e0d4dde0e5e8e8e5e1dedee4e8e6e6e8e5dee1e5e8e8 +e5e2e1e2e3e4e2dfdee0e1e1dce0e4e5e3e3e6ebeaededeae6e4e2e0e4dc +dae0e0d9dae2e2dddbdfe1e0dfe1ded4dadfdee2e6dedee1e3e0e1e6e8e5 +e1dfdddddd444546454445474947444446433f434c484a4d4f504f4d4d50 +4e3e261a2436423c3c352c2f1d32322e318ed1615f716a763e39234b5358 +66524aefec9e3e69698a909598999a97938d7c717a8d989b9d5e293680a0 +85583632547b96a5a283627b88939493979b9f9fa5a6a3a1a2a4a3a19c9a +9c979093999e979e9a94a78d4219142f86b1c7aa9a979c9d9a9c9f9e9899 +97999c9c9a9da4a1a3a5a7a8a8a8a7a5a4a2a2a19d979390908e8b878585 +878c878994969396a29b9a9ba0a4aaabada9a39f9e9c98989b9099a0a1a0 +9c9389787c7b7472787e7f77777a7e83858280979fa4a3a3a7a8a7a5a8ae +adaaad9d7d1533161b3a362c172d3823172f34201d282e21233426162532 +1e232f26222b2d1d20438bc6dfa4a6acadabacafb4b6b5b5b3b1b0b1b3b3 +b2aeafafb0aeaeadaca9afadb0b9b8b4b9bdbebdbcb9b8babdb8bbbebfbe +bcb9b7b9b6b2b1b2b1aea9b8b4afacababacaca9a8a8a8a8a8a5a4a7adad +ababb1b0acb0b7b8b5b1b7b9bcbcb5b8bdb9bcbeb5b9b5b1b1b3b5b0adb2 +b5b8b5b0aeb0b4abb4bbbbb9b9b7b4b6babbbcb9b7b5b5b8bdb9b9bcb7b3 +bcbab8b7b8b9bab9b7b6bbbebcbec2bfb6b7bcb9b2b4bbb7adb2b7bbbab4 +b0b0b3afb1b4b7babbbcbcc1bebdbec0c1c0bcb3b2b1b1afadb2bab5b6b9 +bab4aeb2bbb9bebdb6afb1b1b1a5b5bfbcb4b5b6b8bdb4b0b5bbbbb8b6b9 +b4afafb3b5b3afc0bdbababcbfc0c1bcbab7b5b5b3b0aeacacafb3b5b5b5 +b6b7babab9b9b8afa5aeb1b6b9b9b6b2afafb5b9b7b7b9b6afafb3b6b6b3 +b0afb1b1b3b1aeadafb0b0aeb2b6b7b5b5b8bab9bcbcb9b5b3b1afb2aaa8 +aeaea7a8b0b0aba9adafaeadb0ada6a9aeadb1b3acaaadaca9aaafb0aead +acaaaaaa232425242324262826232325221e222a2224292d2f3234343937 +2911061022291b1b1e1a2311221f1c2283c7554c56495218140029364255 +4944e9e5922e52485b575c5e5e5e5b55503f343f545f657042192f81aa97 +71524c698899a09570485a626967605d5c5b5a5d615d5c5f636466646668 +66606166665f645f5d725a1f121b378bb2bc9474605a5350545d625d5e5b +5f60615d6267666569696c6a6c6b6a6b696968645f5b585856534f4e4e50 +5752555f605c606962616165686d6f706a64605f5d5b5b5e555e67686763 +5c52464b4a4341474b4c444444484d4f4c475b6067686b6d6d6965676d6e +70776b5602280b102f2c230e242f1b10282d1a1721261a1b2d1e0e1d2a16 +1b271e1a2325161f4b96cad38173706f777d8587827c7e7b7b787c7c7e7b +7a787b797a787976747a777982817c808485848381808285808285868684 +817f827f7b7a7b7a777584827b787778777774737070706f6c6a70757673 +767b7d787d83858180838888857c81848384887e847e7c7a7f7e7c767b7e +817e7977797d747d84848282807d7c7f81817f7c7b7a7e827f7e827c7982 +82807f7f8181807e7d8284828488847c7e8380797b827e74797e82817b77 +777a76787b7c8180808085827f8082837f7e787776767472777f7a7b7e7f +79737783838888807a7b7c7b707f8a867f7f8182857c787d8383807e817c +77777b7d7b77878481818386878883817e7c7c7a77757474777b7d7d7d7e +7f8282818180776d76797e81817e7a77777d817f7f817e777a7e81817e7b +7a797c7b79767577787673777b7c7a7a7d807f82827f7b797775776f6d73 +736c6d7575706e7274737275736b6f7473767a7171737370717677757473 +717171747676767575777976737374726e727a7b7b7b7c7c7977736a6255 +4d5160727e8c7a68612f564d584892f486928da698917c42687c838f6f66 +ffffd13d7988b0b8c2c8c2c0c6c7c2afabafbcc8cccfd2d08f565480a491 +6234394e77a1b9bcb9bbc4cac8c7c9cccdcacfd1cbc9cccfcfcbc8c8c9c7 +c3c6cfd2ccd0cdc6dad1993e443e76b6d4cdb9c3cfd4d3d2cfcac6cdcdcf +d2d0ced1d7d1d3d3d6d7d7d7d6d3d2d1d0cfccc8c5c4c2c1bebdbcbcbcbf +babcc5c6c2c6d0cfd0d2d3d5d6d7d8dad4d0cfcdc9c9cdc8ced1d0cdcac3 +bcb1b4b3aca9aeb3b3afafb0b4b9bbbab6c0c6ced1d5dadcdae2dcd8d1cd +d9e1d5863d4135375841382b3a40312e414a372e3d4235303f3f2a383b33 +353f3731423d394272b4e3cab7c8d5e1e6e5e5e4e2dedbd9d9dbdddddcdd +dddddededddcdee3e8e6e4ede8e2e4e3e5e6e6e5e3e5e4e1e2e4e6e7e6e4 +e2e5e2dfdee2e3e0dde8e4e2dddedcdcdbdbdad8d6d7d6d1cfced4d6d5d8 +dddedad8dfe3e1dfe1e3e1e9e1e5e9e6e9ece5e4e2e2e2e3e2dfdddfe2e5 +e3dfdddfe3dae0e4e2e0e2e3e2dfe2e5e6e4e2e1e1e4e8e5e4e8e2dfeae8 +e8e4e4e6e6e3e1dae0e1e0e1e5e3dee4e7e3dcdfe8e9e2e4e3e2e2e1e1e0 +e0dddee0e3e5e7e6e6e7e5e3e5e9ebe9e8e3e2e1e1dedbdfe7e3e3e5e7e4 +e0e3ebebeae8e8e8e7e6e6dde5e8e5e3e4e3e0f4eae3e4e6e2dcd9ece8e4 +e5e9ebeae5e5e5e5e4e4e5e6e7e8e6e4e2e2e1dedcdadee1e4e6e5e4e4e5 +e6e5e3e5e7e1d9dddfe1e4e6e8e9e9e7eae8e2e1e4e3dfe0e3e6e6e3e1e0 +e1dfe0e0dfdfe0e1e1dde0e4e5e5e4e3e4e7eaecebe8e7e6e5e8dfdde2e2 +dbdce3e1dcd9dbdcd9d8d8e1d9e0e4dfe1e5dddcdfe0dddddfdfdae3e1e0 +dfde4749494948484a4c494646474541454c4b4c4e5051524f4d463e2f24 +2736464f58484141143c313c2c76d96a6e63736056440d3a555f705149f2 +f0a90d47537c86949a9491979893817d818e9a9ea2a5a66a373c6d988c5f +3137496d91a5a59d99a0a4a19fa0a3a19fa5a7a3a2a5a9a9a29d9b9a9590 +91989b959c9993a7a06d1722215fa2c0b59a989d9e9a9a9c9c979a999b9e +9e9c9fa5a0a2a5a8a9a9a9a8a6a5a4a3a29f99969593908d8c8b89898a85 +8790918d919b9b9c9e9fa1a2a3a4a8a39f9e9b97979b969c9e9d9a979089 +797c7b7471767b7b7777797d828483828f98a0a3a7acaeacb4aeaaa39fab +b3a95d161d182044302b213033221b2d31201b2c31241f2e2e19272a2224 +2e26203023212f64acdec3aaafb1b1b0aeaeb2b5b3b2b0b0b0b2b2b1afaf +afb0afaeadacb0b5b3b5bebdb7bbbabcbdbdbab8b8b9b8bbbdbfbebdbbb9 +bab7b4b3b5b6b3b0bdb9b4afacaaa9a8a8a7a7a7a8a9a7a5a3a9abaaadb2 +b2aeacb3b7b5b3b5b7b7c0babcc0bdc0c1bab9b7b4b4b5b4b1afb1b4b7b5 +b1afb1b5acb2b6b4b2b4b5b4b4b7babbb9b7b6b6b9bdbab9bdb7b4bdb9b6 +b5b5b7b7b6b4adb3b6b5b6babab5b7bab6afb2bbbcb5b7b6b5b5b4b4b3b3 +afb0b3b6b8babcbcbdbbbbbdc1c3c3c0b6b3b2b2afacb0b8b4b4b6b8b5b1 +b4bcb9b8b6b6b6b5b4b4abb3b6b3b1b2b1aec2b8b1b2b4b0aaa7bab6b2b3 +b7b9b8b6b8b8b8b7b7b8b9babbb9b7b5b5b4b1afabacafb2b4b3b2b2b3b4 +b3b1b3b5afa7aeb0b2b5b7b9babab8bbb9b3b2b5b4b0afb2b5b5b2b0afb0 +aeafafaeaeafb1b1acafb3b4b4b3b2b3b6b9bbbab7b6b5b4b6adabb0b0a9 +aab1afaaa7a9aaa7a6a7b0aaafb3aeb0b2aaa8aba9a6a5a7a7a3afaeadac +ab262828282727292b28252526242024282322272d3135363630281a0e0f +1d2b313123242a032f232e1e6ace5e5e4b543d3623001936475e4643efed +a10030345453595f59595f605b464245525c60616e7e4f23326fa4a27a4e +4f5d78929e97887e7e7f766e6865605a5d5f5d5d62686b6a686464605b5d +62655f63605a6e664006232669adc2ab7e6b60544d505a615f615f616463 +61646a6567696c6d6d6d6c6d6c6b6a6966615e5d5b585554535252585355 +5e5d595b65626364656766676869615d5c5c585a5e5b6165646360595448 +4d4a4340454848444443474c4e4d49555c64676b70727078726e67636f77 +7841050d081239262218272d1b15262c181424291c172626111f221a1c26 +1e182414173573b7dba97d7677808487857f7e7c7c7a7a7b7d7d7c7b7b7b +7c7b7a79797b807e7f888680838284858583818182808284868685838183 +807d7c7e7f7c798a86807b7977747373726f6f70706d6b6e7476757a7f81 +7d7b828886848688858c83868a878a8c858482808081807d7b7d8083817d +7b7d81787e82807e8081807d80838482807f7f8286838286807d8683817f +7f81817f7d767c7f7e7f83827d7e817d767982837c7e7d7c7c7b7b7a7a7b +7c7c7f8183828283817e80848684827d7b7a7a777478807c7c7e807d797c +848483818181807f7f767e817e7c7d7c798d837c7d7f7b757285817d7e82 +84838081818180808182838482807e7e7d7a7875777a7d7f7e7d7d7e7f7e +7c7e807a72787a7c7f818384848285837d7c7f7e7a777a7d7d7a78757674 +757473737473737275797a7a7978797c7f81807d7c7b7a7b727075756e6f +76746f6c6e6f6c6b6c7872777b747679716f72706d6c6e6e6a7675747372 +7879797977787a7c7a777677757274797c7b7b7d7e7a756e60524b516477 +83887d89735a6b48633593f3938f8a989e8d7c3a5f828e829076efffb734 +527aab9db3bdc2bec2c8c1b1a2adbdcacdc9cacdd8bc7d45508095905939 +2b48779bb2c4bdc3c2bdbdc2c8cacdd1d2ceccd1d2d4d2cfcdcbc9c5c7cc +d3ccd0cdc5d4ddc6484a344b9bcde1c7c1cbd2d1cdcecbc9cfcfd0d4d3d0 +d2d7d0d2d2d5d7d8d8d8d5d3d2d2d1cecbc8c5c1bebcbdbdbcbabcb8bac0 +c0bcbfc7c9cdd1d3d1d1d3d5dad4cfceccc9caceced1d0ccc8c6c2bcb1b3 +b1aba8acafafafafb0b3b7babbb8bdc5ced2d6dbdcdaddd9dddacfd1dad8 +cd783e3c393e4e402d2e444227334d432d33463c273d4a292e44342b433a +2a41473c2f448cd0e9c1c5d3e0e6e5e1e2e2dfdddbdbdddee0dfdededfdf +dfdedddfe0e6e4e2ebe5dedfe1e4e7e7e6e4e4e2e1e2e4e6e8e7e5e4e5e1 +e0e1e4e5e3e1e6e5e4e1e0dcdbdadad9d7d6d8d7d3d1cfd3d6d7d9dddedb +d7dfe4e3e0e1e1dee8e0e4e8e4e7ebe4dedfe3e2dfdddcdbdfe2e4e3e1e0 +e2e5dcdfdfdbdadfe2e2dfe2e5e7e5e4e3e3e6eae6e6eae4e1ece9e9e5e5 +e6e5e2e0dbe1e4e3e2e5e7e7e9eae5dddfe8ece9ebe6e1e1e5e8e7e4e0e0 +e0e1e3e5e6e7e6e5e4e5e8eae8e8e6e5e4e4dfdbdee5e7e4e4e6e6e4e5e8 +e9e0dde6ebe8e5e8e1e0dddce0e4e2ddebe2dde0e3e1dddbe4e1dfe0e4e7 +e6e4e3e5e7e6e3e1e3e6e7e5e3e2e3e2e0dedbdde1e3e4e3e1dfe1e2e0df +e2e6e3dde8e6e2e0e0e2e5e7edece6dfdde1e5e5dfe1e3e3e2e0dfdfdcdd +dedfe0e0e0e0dddfe3e6e8e6e2dee6e8eae9e7e4e3e4e7e0dee2e1dcdce3 +e5dfdddfdfdcdbdbddd8e2e5dfe0e4dfdde1e4e1e0e1e0dbdfdededede4a +4b4b4b494a4c4e4c4948494744464b4f4e4d5153534d493b2d23293b4b56 +5d515d462e46294d2280dd72675d69715e46052e5666607158d1f6920c23 +48766a818e938f93999282747f8f9c9f9b9ca0af995c2a3c718a89543422 +3b67889da99ea19f9a969a9d9ea0a4a5a1a1a5a9a8a19d9997928e90959c +959b9a94a5b09b1e26153187b9c9a89b9d9c9896989a979c9b9ca0a19ea0 +a59fa1a4a7a9aaaaaaa8a6a5a5a4a19c9996928d8b8c8c89878783858b8b +878a9295999d9f9d9d9fa1a8a39d9c9a97989c9c9f9d9995938f89797b79 +73707477777777797c808384848c97a0a4a8adaeacafabafaca1a3acaaa2 +501a1b1e283c3120213633161f362c1a22352b162c39181d33231a322919 +2f2d231c3785cbe1b3aaaeb2b2afadb0b5b4b4b2b2b2b3b3b2b1b1b0b0b0 +afaeadadb3b1b3bcbab3b6b8bbbebebbb9b7b7b8bbbdbfbfbebcbbbab6b3 +b4b7b8b6b4bbbab6b3aeaaa8a7a7a6a6a7a9aaa9a7a4a8abacaeb2b3b0ab +b3b8b7b4b5b5b4bfb9bbbfbbbec0b9b3b4b5b4b1afaeadb1b4b6b5b3b2b4 +b7aeb1b1adacb1b4b4b4b7babcbab9b8b8bbbfbbbbbfb9b6bfbab7b6b6b7 +b6b5b3aeb4b9b8b7babebebcbdb8b0b2bbbfbcbeb9b4b4b8bbbab7b2b2b3 +b4b6b8bcbdbcbbbcbdc0c2c2c0b9b6b5b5b0acafb6b8b5b5b7b7b5b6b9ba +b1aeb7bcb9b6b9b2b1aeadb1b5b3aebcb3aeb1b4b2aeacb5b2b0b1b5b8b7 +b5b6b8bab9b6b4b6b9bab8b6b5b6b5b3b1acaeb2b4b5b4b2b0b2b3b1b0b3 +b7b4aeb9b7b3b1b1b3b6b8bebdb7b0aeb2b6b6aeb0b2b2b1afaeaeabacad +aeafafb0b0acaeb2b5b7b5b1adb5b7b9b8b6b3b2b3b5aeacb0afaaaab1b3 +adabadadaaa9aaaca9b1b4aeafb1aca9adadaaa9aaa8a4ababababab2829 +292927282a2c2a272627252224272827292e3336332f21130a0f1f2e373d +344027112c17421b79d25f4e404b54422a0010394c475f4dc9f18c02132f +563f4e565b575b615a4a39445360615d5e6781733d153374989b6b4a374c +718c9ca08a8681746b6966615f61625e5d64696966625f5d5956585d645d +65635c6d77700e261d3e93c2c59676695c53535a6262636162666663656a +6466686b6d6e6e6e6f6d6c6c6b6864615e5a555354545250555153595753 +545c5c6064656363656569615e5d5b585b5f616464605c5a5854484c4842 +3f434444444443464a4d4e4b525b64686c717270736f7370656770788037 +04080d1b322a1a1b332e0f183026131a2d230e243110152b1b122a211125 +201c20408dc8ce907b7a8183837e7d7e7d7c7a7a7b7c7c7b7a7a7a7a7a79 +7878787e7c7d86837c7e80838686848280808082848687868483837f7c7d +80817f7d8887827f7b77737272716e6f71716f6d6f7376777b7f807d7a82 +8786858686828b82858985888b847e7f81807d7b7a797d8082817f7e8083 +7a7d7d79787d80807d808385838281818488848488827f88848280808180 +7e7c777d82818083868683847f777982868385807b7b7f82817e7e7e7c7d +7f81828382817f8083858382807e7d7d7874777e807d7d7f7f7d7e81847b +7881868380837c7b78777b7f7d78867d787b7e7c78767f7c7a7b7f82817f +7f8183827f7d7f8283817f7e7f7e7c7a76787c7e7f7e7c7a7c7d7b7a7d81 +7e7883817d7b7b7d80828887817a787c808076787a7a7977747471727273 +747472727274787b7d7b77737b7d7f7e7c7978797a737175746f6f767872 +7072726f6e6f7471777a747578737074747170716f6b7272727272787979 +787777797b7a797877767576777f7d7e7f7e796e64595150617884888977 +6b7e6969692b7be4a56e859c9e80814a5f75a782947ce9ffb93a4e578e9c +adb2b2b7c0c8c3b09caab6c5ccc9c4c4c7b2b4996f5549659898693c2f43 +6287a3bec7c8c3bfc3c9cccbd0d3d0d0d1d1d0d4d2d0cdcacacccdd8cecf +d0c6ccdad970473f3775bbe5d3c2c8cdcdcccdceced0ced0d4d3d1d1d5cd +cfd0d3d6d7d7d7d5d3d2d1d1cfcdcac9c3bfbec0c1bfbab9b6b8bcbbb9bb +c2bdc4cdd1d0d1d5dadad4d0ceccc9cbcfcfd2d1ccc8c6c2bcb0afadaaa9 +abadaeafafb0b2b6babcbbc2c9d1d4d6d9d7d4d2d0dbe2d6cececae0c864 +43452f414b3e2834483a2b39493b2c364135323a3a2d40362d3d3b2f3b4a +3f2b2c67a7efd5c2cad6e1e4e3dfe0e2dfdedfe1e2e3e2dedfe0e0e0dfde +dfd9e0dfdee8e2dbdde2e4e6e5e4e3e5e3e1e1e4e6e8e8e7e6e5e1dfdfe2 +e3e2e0dfe0e2e1e1dddddcd8d7d6d6d8d7d4d2d4d6d9dadbdbdad8dae1e5 +e3e0e1e2e0e8e1e5e7e2e5eae5dbe0e5e4dedbdbdddfe1e3e4e2e2e5e7dd +dfded9d9dee2e1e0e3e7e7e6e4e3e3e6eae7e6eae4e1ecedede9e8e8e7e4 +e2e0e6e9e8e6e7eaefefefe9e1e1e7eae8ede9e6e7ebedeceae4e3e1e1e2 +e5e7e9e8e8e6e6e6e6e5e5eae9e8e6e1dbdde4ebe7e4e5e7e7e5e4e6dbdb +e7ebe4e3ebe3dfdbdce1e7e9e7e6dfdde1e6e6e5e5e2e0dedfe2e3e3e1e2 +e6e7e4dfdde1e6e6e4e2e2e3e3e2e0dce0e5e4e5e5e3dee4e4e5e3e8eae7 +e0ebe7e2dedcdde0e2ebe8e3dedde2e7eae0e1e2e2e2e1e0e0dedddfe2e2 +dfdedfdedfe3e8edebe5dfe7e6e7e7e3dddbdde2dddcdfdfdcdde2e4dfdd +e1e2e0e0e2d4d2dee3dddee5e1dde1e6e5e5e7e6e1d9d9dbdbdc4a4b4b4a +49494b4d4c4b4a4948474849515152545550473f342a29384d575c5e5246 +4f383d46176ed78f4a56676c5455182b477d5d715dccf2981524285c687a +808388919994816d7c88979e9b96969a8b9078523c35558b8b5d2f223250 +738da1a8a8a19b9c9ea19ea2a3a0a0a4a3a09e9b96938f8f9195a0979c9f +97a2b1b0451f1c1b5ea7cfb89f9e9c979697999b9c9a9ca0a19f9fa39c9e +a2a5a8a9a9a9a8a6a5a4a4a29e9b9a948e8d8f908c87848183878684868d +8890999d9c9da1a6a8a39e9c9a97999d9da09e9995938f89787775727173 +75767777797b7f838587919ba3a6a8aba9a6a4a2adb4a8a0a09db39d3d21 +26152d3a2f1a263928182535281b2530242129291c2f251c2c2a1e293226 +19205e9fe5c5a8a7aaafb0afb0b3b7b6b5b6b6b7b6b5b1b2b1b1b1b0afad +a6adacafb9b7b0b4b9bbbdbcb9b8b8b8b8babdbfbfbfbebdbab6b2b2b5b6 +b5b3b4b5b4b3afabaaa9a5a4a5a7a9aaaaa8a9abaeafb0b0afadaeb5b9b7 +b4b5b6b6bfbabcbeb9bcbfbab0b5b7b6b0adadafb1b3b5b6b4b4b7b9afb1 +b0ababb0b4b3b5b8bcbcbbb9b8b8bbbfbcbbbfb9b6bfbebbbab9b9b8b7b5 +b3b9bebdbbbcc1c6c2c2bcb4b4babdbbc0bcb9babec0bfbdb6b5b4b4b5b8 +bdbfbebebebebebebfbdbdbab9b7b2acaeb5bcb8b5b6b8b8b6b5b7acacb8 +bcb5b4bcb4b0acadb2b8bab8b7b0aeb2b7b7b6b6b3b1afb0b3b4b4b2b5b9 +bab7b2b0b4b9b9b7b5b5b6b6b5b3afb3b6b7b6b8b4b1b5b7b6b6b9bdb8b1 +bcb8b3afadaeb1b3bcb9b4afaeb3b8bbafb0b1b1b1b0afafadacaeb1b1ae +aeafadaeb2b7bcbab4aeb6b5b6b6b2acaaacb0abaaadadaaabb0b2adabaf +b0aeaeb0a3a3adb2acadb2aea9adafaeaeb0aeaaa5a6a8a8a92829292827 +27292b2a292827262526272d2c2f3235322a22190d0c1a2d36393e382c31 +1820320c68d18432384549373c00132d64435b49bee88f0d181441434d4d +4b5059615c4935414d5b625d58585f54604f32282c56959c714334445e7e +90999693857973716c65666560606365625e5b57545353575c675f63675f +687984341f23296eb3d2ad8374645b585b63666360626666646468616366 +696c6d6d6d6f6d6c6b6b696663625c565557585550524f51555250505752 +5760646263676a69615f5d5b585c60626565605c5a585447484441404242 +4344444345494d4f4e575f676a6c6f6d6a686671786c6464668a7b200612 +0622332c17253624121e2e21131d281c19212114271d142422161f281f19 +22619dd9ae877d7d7e807d7a7c807e7d7e7f807f7e7a7b7b7b7b7a797871 +7877798380797c81838584828181818081848687878685837f7b7b7e7f7e +7c8182807f7c787574706f6d6f7171706e7476797a7d7d7c7a7d84888685 +8687848b83868883868a857b8083827c79797b7d7f8182808083857b7d7c +77777c807f7e818585848281818488858488827f88888684838382807e7c +8287868485898e8989837b7b818482878380818587868482817d7d7e8183 +85848481818181807f8482817f7a74767d84807d7e80807e7d8176768286 +7f7e867e7a76777c828482817a787c818180807d7b797a7d7e7e7c7e8283 +807b797d8282807e7e7f7f7e7c787c808080817e7a7f80807f8386827b86 +827d7977787b7d86837e79787d8285777879797978757573727376767370 +717374787d82807a747c7b7c7c7872707275706f72726f70757772707475 +737375696b73787273797570747675757775716c6d6f6f707a7a7b7a7878 +797b7a7a797777787877807f81827d73655b57596477858a89867e637076 +585067d4a05b857fa69174575482a29f8a95ffffb25466547870a1a0b3af +b6c2beada4a6c0c5c9cac9c9c9c8ae9e909183574d739c9073492e35587a +a2b6c9ccc7c3c2c2c3cacecfd1d4d1cdd3d4d0cdcdd0d0cfd8cdcbcfccc9 +cfd6a442503c4c9ad2dac4c5c6c9cbcfd2d4cfcdced2d3d0cfd1cccdced1 +d4d5d5d5d4d3d1d0d0cfceccd0cac6c5c8c8c6c2b7b6b7b9b8b6b9bdb5bd +c7cdced1d7dcdbd5d0cfcdcbcdd2ced2d3cfccc9c3bcadaba9a9aaabadaf +adaeb0b3b6b9bdbdc5cbd3d5d6d7d5d1d9ced1d6d2d2d8d7d3ceb65d4043 +2e514a3729394836294041362b37433029433334383733383a34413c3230 +4a75d8e9cecccfdbe4e3dfdce1e0dfe0e1e2e2e1dfe0e0e0e2e1e0dfdae1 +e0e0ebe7e2e4e5e5e4e1e0e1e6e6e1e2e4e6e7e7e8e7e8e3e0dfe1e2e2df +dbdde1e0dfdcdbdbd7d7d6d6d8d8d5d3d5d6d9dcdddbdad9dee4e6e2e0e3 +e6e5ece5eaebe5e7eee9e1e6ece9e3dfe1e4e0e1e3e3e3e4e6e7dee1e0dd +dee2e2dfe2e4e7e8e6e3e2e2e5e9e5e5e9e3dfebedede9e8e8e8e4e2e1e5 +e7e7e4e2e6ebe9eae9e4e3e4e5e4e8e9ebecedececece7e5e3e2e3e6e8ea +e7e8e7e6e5e5e4e5ecebeae8e2dbdde2e7e5e2e3e7ebe9e6e5dfe2ecebe1 +e2ede3e2e0e0e1e4e8edeee7e4e5e6e3e0e0e8e7e7e7e7e7e6e4e0e2e2dd +d8d8dee4e6e4e3e3e4e4e2e1dfe3e8e4e6e6e5dee5e6e9e8ecebe7dee1e0 +e0e0e1e3e6e7e9e6e3e1e0e1e4e6e2e2e2e3e4e4e3e2e3e0e1e5e4dedcde +dcdde1e7ecece6e1e6e4e5e7e3dbd9dddfdcdcdedfdfe1e5dfdad9dbdddb +dadcd5d4dee2dbdde4e1d9dde1dfe0e1e1dddbdcdedddb4c4c4d4c4a4a4b +4d4c4c4b49494a4a4954545657544a3e3430323b4c595c5c5b5a3f43482c +2d51c59244604e725d492d255375776675e1ef923240294a3d6d6d818087 +938f7e767892979b9c9b9b9b9c867a6c70663c355e897e623a1f26496a8c +9dadafa7a09c98979c9f9ea0a29f999997939090939494a09698a19f9fa8 +ad77172c1e3385bec2a7a19a9797989b9d9b999a9ea19e9d9f9b9ca0a3a6 +a7a7a7a7a6a4a3a3a29f9da19b95949797938f838283858583868a828a94 +9a9b9ea4aaa9a39e9d9b999ba09ca0a09c99969089757371717273757775 +76797c7f828689949da5a7a8a9a7a3aba0a3a8a4a4aaa8a5a38c391e2616 +3c382719293924182d30251a26321f183222232726222729212a25212240 +6bcad6b3a9a5adb5b5b0afb6b5b4b5b6b7b5b4b0b1b1b1b0afaeada7aead +b1bcbcb7bbbcbcbbb8b5b6b9bbb8b9bbbdbebebdbcbdb8b3b2b4b5b3b2b0 +b2b3b2adaaa8a8a4a4a5a7a9ababa9aaabaeb1b2b0afaeb3b9bab6b4b7ba +bbc3bec1c2bcbec3beb6bbbebbb5b1b3b6b2b3b5b5b5b6b8b9b0b3b2afb0 +b4b4b1b7b9bcbdbbb8b7b7babebababeb8b4bebebbbab9b9b9b7b5b4b8bc +bcb9b7bdc2bcbdbcb7b6b7b8b7bbbcbebfc0bfbfbfb9b7b6b5b6b9bec0bd +bebfbebdbdbebdbfbcbbb9b3acaeb3b8b6b3b4b8bcbab7b6b0b3bdbcb2b3 +beb4b3b1b1b2b5b9bebfb8b5b6b7b4b1b1b9b8b8b8b8b8b7b5b3b5b5b0ab +abb1b7b9b7b6b6b7b7b5b4b2b8bbb9b9bbb8b3b8bbbcbdbfc0bab1b2b1b1 +b1b2b4b7b8bab7b4b2b1b2b5b7b1b1b1b2b3b3b2b1b2afb0b4b3adacaeab +acb0b6bbbbb5b0b5b3b4b6b2aaa8acadaaaaacadadafb3ada8a7a9aba9a8 +aaa4a3adb1aaacb1aea6aaadabacadaaa6a7a9abaaa82a2a2b2a2828292b +2a2a29272728282731323437342a1f150f111b2a36383539422926270f17 +44be8936452d4b382914113f5e5e4e5ecddd85263519321e463e4e4a515d +57463b3d575c5f605f5f5f5f483e384546272b5d8f8c744d343b5e778e96 +a29f9284776e686869646567645d5954504f51545658655d5f6666656f81 +6211302a4696c7c095816d625e606567625f606466636264606164676a6b +6b6b6e6d6b6a6a69676569635d5c5f5f5c5851505153504e51534b535b61 +62656b6f6c6461605e5c606561656763605d595444444040414242444243 +4346494c50505a61696b6c6d6b676f64676c68686e707378661705140a37 +36271a2936201126281d121e2a17102a1a1b1f1e1a1f211a241f1a1f3e6a +c7cfa08b7b797d7a78787f7e7d7e7f807e7d7a7b7b7b7b7a79787279787b +86858083848483807e7f8284808183858686868586817c7b7d7e7d7b7d7f +7f7e7a7773736f6f6d6f7172716f7576797c7d7b7c7b8086898583868b89 +8f878b8c86888e8981868a87817d7f827e7f8181818284857c7f7e7b7c80 +807d80828586848180808387838387817d87888684838383807e7d818585 +8280858a8384837e7d7e7f7e828385868786868685837f7e7f8284868384 +828180807f7f868483817b74767b807e7b7c8084827f807a7d87867c7d88 +7e7d7b7b7c7f838889827f80817e7b7b838282828282817f7c7e7e797474 +7a8082807f7f80807e7d7b8184828284817c818485868889837a7c7b7b7b +7c7e818284817e7c7b7c7f817979797a7b7b78777875757978726e707172 +767c81817b767b797a7c78706e72726f6f7172727478726d6c6e706e6d6f +6a697377707278756d7174727374726e6e7072716f7d7e7e7d7b7a7c7e7a +7c7b797a7e7d797f818280766a5e5657687b868b8d8c846e795c666360ef +aa617f72928d875f5386a198a29bffffb884696e576a909299b2b2b8b5a4 +98a9c5cac9c7c5c7cbc8c1a29491a5a882594e62839a835232313e6685a8 +bfc7c7c4c0bec5c8cccfd4d3ced1d2d0ced0d2d3ced3cac7cfd2c9c8cfbd +4c51453777badcccc6c1c4cdd2d4d5d0cbccd1d2cfcdcecccecfd1d3d4d4 +d4d4d2d1d0d1d0d0ced0cbc8c7c7c8c6c4b8b8b9b8b6b5b6b8b6bcc3c8cc +cfd4d8dbd4cfcdcccacdd2ced3d5d1cecac2baada8a6a9acabacafaaadb1 +b4b6b9bdbec3cad1d3d5d8d7d4ded3d1d2d0d5d8cfc7cfda9f513f433444 +4d342743452e2d3a4431293e3a2c3b392e373c30353e34373739383850a8 +e5e3d6d0d9e2e3dddadcdcdbdcdedededcdfdfdfdfe1e0dfdfdbe0dfdfea +e8e5e8e6e5e3dfdee0e6e8e2e2e3e4e5e5e6e6eae6e2e1e3e4e4e1dddee2 +e0ddd9d9dad8d7d6d6d8d8d4d2d2d2d7dee0dedddedfe4e6e2e0e4e9e9eb +e5e9eae2e4ece9e3e6eae7e2dfe1e5e1e1e2e3e4e4e5e6e0e3e2e0e2e5e3 +dfe0e3e6e7e5e3e2e2e4e7e4e4e8e1deeaeaebe7e6e7e6e3e2e2e3e4e7e6 +e2e3e8e0e3e5e5e4e3e4e4e3e5e9eaeae8e8e7e7e6e4e2e3e5e6e8e2e4e5 +e6e5e6e7e9ecebeae9e2dbdce1dfe0e0e0e6edeeebe7e6eaf0ebe3e5ede5 +e5e5e5e0dde1e9eee8e4e5e5e0dedfeaeaeaeae9e8e7e6e3e3e3dfdcdde1 +e6e6e5e3e3e4e4e2e1e0e6e8e3e3e8e7e1e3e6e8e9ebebe3d9e0e2e3e4e5 +e5e4e4eae6e4e4e2dddcdee5e3e2e3e5e6e5e4e7e2e1e5e4dcdbdfdbdcdf +e3e6e6e4e1e5e2e3e9e6dedde3e0dfdfe0e1e3e5e7e2dcd9dbdad6d5d6df +dbe1e3dcdde3dedde1e2dedddddbd7e3e5e6e2dc4f50504f4d4c4e504c4e +4d4b4c504f4b545657554d4138303140515a5e605c584955323c3e40d595 +4a634d675d57312659766f7c79ecf1996545472c3b5e5f66808389867569 +7b979c9b9997999d9a957b6e6d8185613a32496d867243242531567292a6 +aba8a29c969a9c9c9fa29f9a97979591939697939b94959ea49fa0a58f1d +29241c62a8c9b4a89b989a9b9b9c9997989da09d9b9c9b9da1a3a5a6a6a6 +a7a5a4a3a4a3a19fa19c979696979391858485848382838583899095999c +a1a5a9a29d9b9a989ba09ca1a29e9b978f8775706e717473747772757a7d +7f82868a929ca3a5a7aaa9a6b0a5a3a4a2a7aaa199a2ae782c1f251b2f39 +211733361f1f293320182d291b2a281d262b1f242d211f1f282b2d4599d0 +c7b5aab0b9b7b0adb1b1b0b1b3b3b1afb0b0b0b0afaeadada6adacb0bbbd +babfbdbcbab6b3b5b9bdb7b9babbbcbcbbbbbfbbb5b4b6b7b5b4afb3b4b2 +aba7a6a7a5a4a5a7a9abaaa8a7a7acb3b5b3b2b3b4b9bab6b4b8bdbfc2be +c0c1b9bbc1beb8bbbcb9b4b1b3b7b3b3b4b5b6b6b7b8b2b5b4b2b4b7b5b1 +b5b8bbbcbab8b7b7b9bcb9b9bdb6b3bdbbb9b8b7b8b7b6b5b5b6b9bcbbb7 +babfb3b6b8b8b7b6b7b7b6b8bcbdbdbbbbbab9b8b7b5b6b8bcbeb8babdbe +bdbec1c1bfbcbbbab3acadb2b0b1b1b1b7bebfbcb8b7bbc1bcb4b6beb6b6 +b6b6b1aeb2babfb9b5b6b6b1afb0bbbbbbbbbab9b8b7b6b6b6b2afb0b4b9 +b9b8b6b6b7b7b5b4b5bbbdb8b8bdbcb6b8bbbdbec0c0b8aeb3b3b4b5b6b6 +b5b5bbb7b5b5b3aeadafb4b2b1b2b4b5b4b3b6b1b0b4b3ababafaaabaeb2 +b5b5b3b0b4b1b2b8b5adacb2aeadadaeafb1b3b5b0aaa7a9a8a4a3a4aeaa +b0b2abacb0abaaaeaeaaa9a9a7a3b0b2b3afa92d2e2e2d2b2a2c2e2a2c2b +292a2e2d29323637352d21140c0c1c2b35373734352f3f1a232429c4843a +4e324539310f0946665b6560d3d985533536191f3b34374d4d53503d3140 +5c61605d5b5d615e583a2f334f5b40252645709182583b3d45617694a2a0 +96897c72706f6c6e6f6d61585553505458595760585a6369636375751329 +2d2d73b6cdaa90766965636465605d5e636562606160626567696a6a6a6c +6c6b6a6b6a696769645f5e5e5f5c5a505253524e4d4e504c52595c606368 +6c6c65605e5d5b606561666965625e585244413d40434241443f42444749 +4c5051586067696b6e6d6a74696768666b6e655e6b7f4f0f0a1a162e3b23 +1733311816212b18102521132220151e23171c251a1d1b1e2227439ed5c3 +a2837a7b7877767a7a797a7c7c7a787a7a7a7a7a7978787278777a858683 +878584827e7c7e8286808182838484848488847e7d7f807f7d7d80807e78 +747172706f6d6f7172706e7072777e807e7f808186898583878e8d8e878a +8b83858c8983868885807d7f837f7f8081828283847e81807e8083817d7e +8184858381808082858282867f7c868584828182817f7e7e7f8285848082 +877a7d7f7f7e7d7e7e7d7f8384848282818584807e7f8182847e80808180 +818283868483827b74757a787979797f8687848281858b867e8088808080 +807b787c8489837f80807b797a85858585848382817f7f7f7b78797d8282 +817f7f80807e7d7e8486818186857f81848687898981777c7d7e7f80807f +7f85817f7f7d7877797c7a797a7c7d7a797c77757978706d71707174787b +7b79767a77787e7b737278737272737476787a756f6c6e6d696869747076 +78717277727175757170706e6a77797a76707f80807f7c7c7d7f7e80807e +8186847c7e7e7e776c625d5b627b8c8c8b8f8d816f7568686ddaca818c7d +8d757a7351889aaba58affff9d8a9288696c5e8790b1acaea99991a0bacc +c6c7c6c4c6c5baac9597a5aea18d776055647f8f805b35223e557795b0c3 +cac9c5c7c8c7cbcfcfcbcbcececcced2cfc9d1cdc8cdd2cac5cecf7d4b4d +36539bcad8cabfc2cdd2d3d4d1cbcbd1d2cfcccccfd1d1d3d5d5d5d4d6d4 +d2d1d2d3d2d1cbc9c8c5c3c3c3c3bcbdbbb7b3b1b1b1b6b9bdc3c8cdd2d4 +d9d2cccbc9c8cbd1d1d4d5d0cbc7bfb7afa9a6aaadabaaada7acb2b6b7ba +bdbec3c9d0d2d4d8d9d7d8d6d9d7d2d7d4c2cbd7d0d38d464e293c4a432f +32413c2c31413d2f323d3a30393532373934343e35373b392d4072c4eddb +d1d6dedcdcdfdad9d9dbdededddbdedee0e1e0dfdededbdfdcdae5e4e2e6 +e5e4e3e0dfe0e5e6e3e2e3e3e4e4e4e4eae5e1e0e3e5e5e3dcdee2dfddd9 +dcded9d8d7d6d8d7d3d2d3d2d7dfe2dedcdfdbe2e6e3e2e6e9e9e8e2e7e6 +dee0e8e6e3e4e5e2dedde0e3e1e1e1e2e3e4e4e3e4e4e3e0e3e6e5e0dbdf +e3e5e5e4e4e5e4e7e4e4e8e1deeae9eae6e6e7e7e5e3e1e0e1e8eae6e5e8 +e3e5e8e8e6e5e6e8e6e4e2e4e7e8e6e3e5e4e2e1e2e3e3e5e1e4e5e6e5e5 +e6eaebeaeae9e2dbdbe0dde1e1e0e4ebedeae5e7e9eae9e7e6e5e4e3e5e7 +e2dcdee4e7e3e1e4e4e2e2e4e4e5e7e7e6e5e4e4e4e5e6e7e6e6e6e6e8e6 +e4e4e4e4e2e0e0e6e6e0e0e8e9e2e4e6e6e6e8e9e3dce1e3e3e4e3e0dedd +e9e4e2e4e2dbd9dce6e3e2e3e5e7e6e5e7dfdee3e2dbdbe2e0e1e2e1e0e0 +e1e3e6e1e3e9e7dedde4e2e2e1e0e0e2e4e4e6e0dddeddd9d8d9e4dcdee0 +dadde1dbe2e4e3dedddeddd9e4e6e7e4dd4f50504f4c4c4d4f4e50504e51 +56544e5355554e433a35343b5162615e625e54424d454b52beaa5e675a6b +5355481d536d817e66f2f37d6a6f6340402f555d7f7a7f7a6a62718c9e98 +99989698978c7f6c6f7d857866503c3549677b72502c1a334967849cabaf +aca2a29f9c9ea2a09b989a9894969a97919997949ba29c99a19e4e232b1a +3e89b9c5b09e9b9d9d9b999a97979da09d9a9a9ea0a3a5a7a7a7a6a9a7a5 +a4a5a6a4a39d9b979492929090898a8884807e7e7e83868a90959a9fa1a7 +a09a999796999f9ea1a29d98948c8477716e72757372756f747b7f808386 +8a929ba2a4a6aaaba9aaa8aba9a4a9a6949baaa3a965222d0a22342f1d22 +342f1f23302c1e212c291f282421262823232b2022292c203260add2bdaf +b3b7b3afb2afafafb1b1b1aeacafafafb0afaeadada6aca9abb6b9b7bdbc +bbbab7b4b5b8bbb8b9babab9b9b9b9bdb8b2b1b4b6b6b6aeb3b4b1aba7a9 +aba6a5a6a7a9aaa9a8a8a7acb4b7b3b1b4b0b7bbb8b6babdbfbfbbbebdb5 +b7bdbbb8b9b7b4b0afb2b5b3b3b3b4b5b6b6b5b6b6b5b2b5b8b7b2b0b4b8 +babab9b9bab9bcb9b9bdb6b3bdbab8b7b7b8b8b8b6b4b3b6bdbfbbbcbfb6 +b8bbbbb9b8b9bbb9b7b5b7babbb9b6b7b6b5b4b5b6b9bbb7babdbebdbdc0 +c2bebbbbbab3acacb1aeb2b2b1b5bcbebbb8babcbdbcbab9b8b7b6b8bab5 +afb1b7bab6b4b7b7b5b5b7b7b8babab9b8b7b7b7b8b9bab9b9b9b9bbb9b7 +b7b7b7b5b3b5bdbdb7b7bfc0b9bbbdbdbdbfc0bab1b4b4b4b5b4b1afaeba +b5b3b5b3acaaadb5b2b1b2b4b6b5b4b6aeadb2b1aaabb2afb0b1b0afafb0 +b2b5b0b2b8b6adacb3b0b0afaeaeb0b2b2b4aeabacaba7a6a7b3abadafa9 +acb0aaafb1b0abaaabaaa6b1b3b4b1aa2b2c2c2b2828292b2a2c2c2a2d32 +302c3337372e2317110d122938373438342d2334323b41a991424a3c4f37 +382600315a756d50d9d764535b502c271130304e494b46342a3951635c5d +5c5a5d5c51442c31424f4a3d2f24264267847f61412f4457728c9da7a49a +8c877f797779766b5f5e5c595b5f5c565e5b585e645e5a6a7d3a1b2c284f +99c3c1a17f706c67625f615d5d6365625f5f636567696b6b6b6a6e6c6a69 +6a6b696862605d5a585857595455534f4b4949494e5155595e6368686c65 +5f5e5c5b5e64656869645f5b534d46423d4144423f423c4145494a4d5051 +585f66686a6e6f6d6e6c6f6d686d6a5659696a7941081e052136311d222e +27171a28241619242117201c191e201b1b251f1f1d1c17316cbdd9b38c7d +7671767b7875757778787674777777787776757572777475808280858483 +827f7d7e8184818182828282828286817c7b7e80807f7c80807d78747476 +71706e6f71716f6e7170757d827e7c7f7d84888585898c8d8b8488877f81 +8886838483807c7b7e817f7f7f80818282818282817e8184837e797d8183 +8382828382858282867f7c86848381818282817f7d7c7f86888484877d7f +8282807f8082807e7c7e8182807d83827e7d7e7f7f817d80808180808184 +858383827b747479767a7a797d8486838183858685838281807f81837e78 +7a80837f7d80807e7e808081838382818080808182838282828284828080 +80807e7c7e85857f7f878881838585858788827a7d7e7e7f7e7b7978847f +7d7f7d7674777d7a797a7c7e7b7a7c747277766f6d747576777675757678 +7b76787e7c737279757574737375777779737071706c6b6c787072746e71 +7670767877727374736f787a7b78717d7e7e7c7a797b7c7f828280848a88 +7f7d7d7b71655d5f636f89968d898f8b7e7f767771c6cc8b8f8d977c8467 +3e82a3a7849effffa58d9da07862777776a79fa3a4927f8fb6c7bdc3c9cc +cbc8c0ad9aa7a2aaa28886949085564369928a61422831405a7d9eb1b5cd +ccc7c2c4c8c6c4c6c9cac7cacecbc3d3d3cdcbd0c9c6d1e7bd50533d3479 +a8dfcbbbbfcbd0d1d0d1cbccd1d3d0ccccd2d3d3d5d6d6d6d5d7d5d3d3d4 +d5d5d3ccccccc8c5c3c5c7bfc0bdb6b0aeacabb3b4b7bec6cdd2d4d7d0ca +c8c7c6c9cfd4d6d4cdc7c3bcb5b2aaa7abadaaa8aaa5abb2b7b8babdbec6 +cbd0d1d3d7d8d6d4d7d9d3cfdde2d6d3c7d1d6c57b314b3d3c4b44283142 +393132423f2c37422c363f2e2f443428473d3d3b36273c4ea1ebdbced1d6 +d7dbe5dadadadcdfdfdddbdddde0e0dfdfdededfe2dddae4e4e2e7e2e3e4 +e3e2e1e4e5e3e2e2e2e3e3e2e2e5e1dddde0e4e5e4d9dbe0dfdedde1e5d9 +d8d7d6d8d7d3d1d7d5d9e1e2dcd9dcd6dfe5e5e4e6e8e6ebe5eae9e0e2eb +e9e8e6e6e2e0e0e3e5e2e1e0e1e3e3e3e2e6e5e2dfe1e6e6e1d7dbe0e4e5 +e6e7e8e4e8e5e4e8e2dfeaebebe8e8eaeae8e7dcdadbe5eae6e4e6edeeee +edeae6e8eceee5dee0e8ece8e2e3e2e1e0e0e1e1e2e5e7e8e6e3e2e3e6ea +eaeae9e2dbdbe0e1e5e5e1e1e6e7e4e2e4e4e3e6eae5dde4e2e4e9e8e2e1 +e5ece7e5e6e5e2e1e4e1e3e6e7e6e6e6e6dfe1e4e8eae8e4e0e8e7e4e4e4 +e4e2dee0e6e5dddee7e9e3e6e7e6e4e7ebe7e2d5d8dadddfe0e0e0e5e0df +e2e1dcdbe0e6e3e1e2e5e7e6e4e5dcdbe1e1dadbe4e6e7e6e3dedee1e5e8 +e2e3e8e4d9d7dee3e3e1dedddfe0dfe2dddbdddedcdbdce2d8d8dbd8dde2 +dbdee0dfdcdbdedfdddde1e4e1dd4d4e4e4c4a494b4c4f525250545a5851 +515452483d353539455e6b625d635f4e4e4c585aafb16765616f5d694717 +4d6d795c79dbec836c7b7b50384a4945746d737462506087998f959b9e9d +9a927e6b7a757d745a5a686860352854827f593b2329374f708f9d9eb2af +a79e9c9f9d999b9d9c97989a968e9c9c97989d9895a0b68e26301f1e6798 +cfb7a19da19f99959b97989da19e9a9aa1a2a5a7a8a8a8a7aaa8a6a6a7a8 +a7a59e9e9b97949292948c8d8a837d7b79788081848b939a9fa1a49e9796 +9594979da1a3a19a949089827a726f73757270726d737b808183868a959d +a2a3a5a9aaa8a6a9aba5a1afb4a6a296a3a89a520c291e2235301924382c +2321312e1b26311b252e1d1e3323173427282927192c3989d0bdb1b1b2b0 +b0b7afb0b0b2b2b2aeacaeaeafafaeaeadabaaafaaabb5b9b7beb9babbba +b7b6b7b8b8b9b9b9b8b8b7b7b8b4aeaeb1b5b6b5abb0b2b1acabaeb2a6a5 +a6a7a9aaa9a7acaaaeb6b7b1aeb1abb4babab8babcbdc2bec1c0b7b9c0be +bdbbb8b4b2b2b5b7b4b3b2b3b5b5b5b4b8b7b4b1b3b8b8b3acb0b5b9babb +bcbdb9bdbab9bdb7b4bdbcb9b9b9bbbbbbbaafadb0babfbbbbbdc0c1c1c0 +bdb9bbbfc1b8b1b3bbbfbbb5b5b4b4b3b3b4b7b8bbbdc0bebbbabdbebdbb +bbbab3acacb1b2b6b6b2b2b7b8b5b5b7b7b6b9bdb8b0b7b5b7bcbbb5b4b8 +bfbab8b9b8b5b4b7b4b6b9bab9b9b9b9b2b4b7bbbdbbb7b3bbbab7b7b7b7 +b5b3b5bdbcb4b5bec0babdbebdbbbec2beb7a8a9abaeb0b1b1b1b6b1b0b3 +b2adacb1b5b2b0b1b4b6b5b3b4abaab0b0a9abb4b5b6b5b2adadb0b4b7b1 +b2b7b3a8a6adb1b1afacabadaeadb0aba9abacaaa9aab1a7a7aaa7acb1aa +abadaca9a8adacaaaaaeb1aeaa292a2a28262527282b2e2e2c3036342f34 +3834281a110f111b334037303632262d33464ca19c473f3a4b404e2e0025 +49695269c5d1674d5f61371f2d271d473c4243311c2a4f5e53595f62615f +574633413c4640292d414546221d4f8587664b373e4a5f7a949e98a79f92 +8682817d766e6c6b666768625864635b595e5653658d72162c272b77a3d0 +ac887771675e595f5d5e6366635f5f6667696b6c6c6c6b6f6d6b6b6c6d6c +6a6363615d5a58595b5758554e484644434b4c4f565e636a6a6b635e5b5a +595c62686a68615b57504b49433e4244413d3f3a40454a4b4d50515b6166 +67696d6e6c6a6d6f69657378665d5165747034001f1c233731161e2f241a +192926131e29131d2615162b1b0f2e29251b140c2c4a9fdfbb937e746f79 +8378767678797976747676777776767574767a75757f8280868182838280 +7f80818181818181818080817d78787b7f807f797d7e7d7978797d71706e +6f71716f6d7573777f827c797c7881878787898b898c878b8a81838b8988 +8684807e7e8183807f7e7f818181808483807d7f84847f75797e82838485 +868286838286807d86868483838585848378767983888483858788888784 +808286887f787a8286827c81807d7c7c7d7d7e818383817e7d7e80848383 +827b7474797a7e7e7a7a7f807d7e80807f82868179807e8085847e7d8188 +838182817e7d807d7f8283828282827b7d80848684807c8483808080807e +7c7e85847c7d86888285868583868a8680717375787a7b7b7b807b7a7d7c +77767b7d7a78797c7e7b797a716f75756e6d767b7c7b787373767a7d7778 +7d796e6c73767674717072737275706e70716f6e6f766c6c6f6c71777072 +7473707175757371757875718281807e7c7e828581838486868686848281 +7c6f605d6d7e92a08b9297758e737e7c85b9b8949e9eac8999633b5fa2a7 +8faaffffaa96a7a19d846c69758395a4a58a788cacb3b7c9ccc7c8cbc3b0 +a3a1a6a7a4978a879cb3cfa66640588d977e4b2e1e2c4763819eb4c1cbc9 +c4c4c1bcb5b6bababdc2c8cccbcfd5d5d1ced2d6e1d46d50643c4994bbea +c4adc5c3c8d3c7ccd0cfcdcfd1d0cfd0d1d6dadad4cfd4d6d7d6d4d2d3d3 +d7d0cbc7c7c5c1bcb7b9bcbbb7b3b2b2a8abb1b9c1c7cbcdd1cecac6c3c5 +cdd6dbd2d0cbc3c4c0b0b3afaba9aaababaaacabafb4b8b9bfc5ccccced0 +d2d6dadddcd9d5d4d4d5d5d6d5d0c7c6d4c47e3141374b5031293b3e312d +3a3e2d2e3b39273a3e3030403d2a4039313b3f30437acbede3cbd5d9d6e2 +dcd9d9dcdcd9d9dcdde3e6e2dedededcdfe0e0dde1e4e6e2e4e4e5e5e6e5 +e6e6e0e0e1e2e4e5e8e8ebe8e3dfe0e2e4e5e7dddce0e5e1dfe0d9d7d6d6 +d5d1d1d6d7dadfe3ded8d8ded8dbdfe1e2e4e6e7e7e9e8e1e0e5e8e4ece6 +e2e1e3e3dedae6e6e5e3e1e1e3e6e6e0e5e8e3e5e6ded8dee1dfe0e7eae8 +e7ebeae4e5eae5dde4eaeae8e9ebe9e5e0e1e2e6e6e4e7eeeceaeae9e4e0 +e3eae7ebeae4e3e8ebe9eae5e0dedfe2e2e4e1e2e4e5e5e4e1e1efe8e2e2 +dfdbdde4e1e6e8e5e4e7e9e8e2e0e1e6ecede9e4e3e3e1dddee3e3dfe3e4 +e4e5e4e4e3e3e4e1e2e6e6e3e3e6ebe4e7e8e2e5eae5e4ebeee9e3e2e0db +e9e3e2e3e3e3e7ede4e6e8e9e8e7e8eadbdcdcdddedfe1e1e7e5e2dfdedf +e1e3dde4e7e4e5eaedeae1e0dedcdddee0e2dae1e6e6e5e4e1dce7e2e1e4 +e3dedee3dee5e5dcd9dfe0dbdfe0e1e2e0ddd9d7e1e1dfdcd8d7d8dae6dd +d9dcdfdadcdfe3dbe1e7e25251504e4c4e52555153545656565656555550 +443533425367745f666a4861465053669f9e7676717d5f78481b38717264 +84f6f58774837d74583f3b45526271755a485d7d84899b9e999a9d958174 +727677746758576d86a4824826467e8d78492c1b284058768fa2acb2afa7 +a5a09c969898969697999c979a9e9f9b999da3b1a6432c46223784acd9ae +909f96959c91989c9b9b9d9f9e9e9fa3a8acaca6a1a7a9aaa9a7a5a5a5a9 +a29a9696948e8985878a898581808076797f878f95999b9e9b979390929a +a3a89f9d9890918d7d7b777371727373727473787d818288919b9ea0a2a4 +a8acafaeaba7a6a6a7a7a6a5a09697a598540c1e1a313b1f1c3134231c29 +2d1c1d2a2816292d1f1f2f2c192c25202a2f1e2c62b2d3c9aeb5b5adb7af +acacafadaaaaadacb2b5b1abababa9aaadadaeb2b9bbb9bbbbbcbcbbbab9 +b9b5b5b6b7b9babbbbbcb9b4b0aeb0b2b6b9b2aeb2b3afacada6a4a5a7a6 +a4a7acadb0b4b8b3adadb3adb0b4b6b7b9bbbebec2bfb8b7bcbdb9c1bbb4 +b3b5b5b0acb8b8b7b5b3b3b5b8b8b2b7bab5b7b8b0adb3b6b4b5bcbfbdbc +c0bfb9babfbab0b5b8bbb9babcbcb8b3b4b7bbbbb9bec5bfbdbdbcb7b3b6 +bdbabebdb7b6bbbebcbcb7b3b1b2b5b8bab7b8bcbdbdbcbbb9c2b9b3b3b0 +acaeb5b2b7b9b6b5b8bab9b5b3b4b9bfc0bcb7b6b6b4b0b1b6b6b2b6b7b7 +b8b7b7b6b6b7b4b5b9b9b6b6b9beb7babbb5b8bdb8b7bec1bcb6b5b3b0be +bab9babababec4bbbdbfc0bfbebfbfaeadadaeafb0b2b2b8b6b3b0afb0b2 +b4acb3b6b3b4b9bcb9b0afadabacadb0b2a9b0b5b5b4b3b0abb6b1b0b3b2 +adadb2acb3b3aaa7adaea9adaeafb0aeaba7a5b1b1afaca7a6a7a9b5aca8 +abadabaaaeb0a8aeb4af2e2d2c2a282a2e312d2f303232323234383a3324 +120d18283a473239401e371f2e37528e8d5e52475337592d021b49505479 +e4dd69515f59543b201a2129354245291729474c4e5f625b5e615a493e3c +4547433627273f5d816230153a778b7c57412e3950667e94a2a7aba29793 +8d85797675726f6d6f6c676466635b57596480822b20482d458fb1d2996e +705d565c555e6261606264636364676c70706a656c6e6f6e6c6a6a6a6e67 +605c5c5a555050525554504c4b4b43464c545c6066666762605a5759616a +6f66645f575854464a4842404142403f414042474b4c525861626466686c +7073726f6b6a6a6b6b665b56545f79753e001816303a1b16282b1a142125 +141522200e212517172724122d241018201c3e7ac7d6b0827a7777847873 +737675727275747a7d7974747472767878787c8284818383848484838282 +7e7e7f808283848486837e7a797b7d80877f7a7e807c7778716f6d6f6e6b +6d7273767d817c76787e787b81838486888a888b8982818688848c86807f +81817c78848483817f7f8184847e83868183847c767c7f7d7e8588868589 +8882838883797f838583848685817c7d80848482868d868484837e7a7d84 +8185847e7d82858388837c7a7b7e7e807d7e7f80807f7c7b89817b7b7874 +767d7a7f817e7d8082817e7c7d82888985807f7f7d797a7f7f7b7f808081 +80807f7f807d7e82827f7f82878083847e81868180878a857f7e7c798782 +81828282868c838587888786878877777778797a7c7c82807d7a797a7c7e +747b7e7b7c81827f76757270717272746f767b7b7a7976717c7776797873 +73787178786f6c72736e7273747573706c6a7373716e6c6b6c6e7b727073 +78757576776f757b768785838284878a8c87868585868584837e766d6564 +6d7b8793939a967e9561997b80c9bb92a4a2ab9ca37e436483959792ffff +a595acbaad9c897773768093a78482859eb8bab8c5c7c4c5c6bca99e9fa4 +a19a96939baebfcabfa87d4d3c608b8f6c442c2e405563768fabbec7cac6 +bfb7b6b7b5b4b4b9bdcccfd1d3d2cfcbc6c4c39c3f562f3875aed6d1c5c3 +c5d7d0c9cfd1cecbcdcfcecdd1d4d7d7d5d4d3d4d6d7d6d3d2d3d3d4cfcc +cbcececdc9c3beb9b7b7b6b2aeaaaaacb0b8bfc5c8c9cacbc9c7c7ccd2d7 +d0cecbc3c4c0b1afadaaa8a7a7a7a7abaaacb1b3b4b9bec8c8cccfd2d5d7 +d9d7d5d4d5d5d5d3d3c3d3cebfc8d2a86937433f424d392a433d32333a35 +30363b3438383535393935383a383a3a343c559dd9ecd0ccd7d9d9dddada +dddedbdbded8dddfdddddfdfdce0e1e0dce0e3e5e2e1e2e3e4e6e6e8e8e1 +e2e2e3e4e4e7e7e6e4e1dfe0e0e1dfe4dcdce2e7e2deddd9d7d7d7d6d2d2 +d6dbdcdfe1ddd9dbe1dadde0e3e4e5e7e8e8e9e8e2e1e6e8e5ebe7e5e4e6 +e6e1dde4e6e7e6e5e4e5e7e6e0e4e7e2e4e5dddde2e4e0e1e5e7e4e9edeb +e5e6ebe8e0e2e8e8e6e7e9e7e3e7e7e8ebeae7e8edeee9e6e6e4dfdddee5 +eaebe7e6eaebe7e7e4e2e1e2e3e0e0e1e2e4e6e6e5e3e3ece6e1e1e0dee0 +e6e1e4e5e3e4e8e9e6e9e6e4e6eaece9e6e2e3e1dedfe3e2dee7e7e8e9e9 +e8e6e5e9e6e4e7e7e5e7ece8e2e4e5dfe2e7e3e1e8ecebe8e5e0dadfe0e4 +e6e3e1e6efe3e3e3e3e4e5e5e6e3e3e1dfdedddddde7e7e5e2dfdfe2e5de +e5e8e6e6eaebe9e4e3e1e0e0e1e3e5dae0e4e3e3e4e2dde8e4e3e6e6e3e3 +e8e0e4e5e2dfdfdfdddddedfe0e0dedbd9e1e1e1dfdddddfe1e1dad7dade +dddee2e1dadfe5e05755535254575a5c5756555556555452514a40383840 +4e5b67676e695369356e5059a79b73837b8071795a20415c686a68f4f280 +6f869383705d4943464f63775452556f898c8a97999697988d7a6f6f736e +67625f677c919f988660352a51818a69412a2a3a4d5969809baab2b3ada7 +a2a19e99949190919d9c9d9e9e9995949698731a341422639fc8beaca29c +a59a959b9d9a999b9d9c9ca0a6a9a9a7a6a5a7a9aaa9a6a5a5a5a6a19b9a +9d9d9a96928c87858584807c78787a7e868d9396969798969494999fa49d +9b9890918d7e777572706f6f6f6f7372757a7c7d828a979a9ea1a4a7a9ab +a9a7a6a7a7a7a5a393a19d8e98a27b3e1122222a3a2a20392f212229241f +252a232727242428282426272629271f253d86c2d5b8aeb4b1aeb0adadb0 +afacacafa7acaeacaaacaca9abaeadadb1b8bab9b8b9babbbbbbbbbbb6b7 +b7b8b9b9babab7b5b2b0aeaeafb0b6b1aeb4b5b0abaaa6a4a6a8a7a5a8ac +b1b2b4b6b2aeb0b6afb2b5b8b9babcbfbfc2bfb9b8bdbdbac0bcb7b6b8b8 +b3afb6b8b9b8b7b6b7b9b8b2b6b9b4b6b7afb2b7b9b5b6babcb9bec2c0ba +bbc0bdb3b3b6b9b7b8babab6bababdc0bfbcbfc4c1bcb9b9b7b2b0b1b8bd +bebab9bdbebab9b6b5b4b5b6b6b6b7b8bcbebebdbdbbbfb7b2b2b1afb1b7 +b2b5b6b4b5b9bab7bcb9b7b9bdbfbcb9b5b6b4b1b2b6b5b1bababbbcbcbb +b9b8bcb9b7babab8babfbbb5b7b8b2b5bab6b4bbbfbebbb8b3adb4b7bbbd +bab8bdc6bababababbbcbcbbb6b4b2b0afaeaeaeb8b8b6b3b0b0b3b6adb4 +b7b5b5b9bab8b3b2b0afafb0b3b5a9afb3b2b2b3b1acb7b3b2b5b5b2b2b7 +aeb2b3b0adadadababacadaeaeaca9a7b1b1b1afacacaeb0b0a9a6abafae +afb3b0a7acb2ad33312f2e303336383332313132313031342f2317131724 +2e3838413f29420e4b303c8e825762545646513600253f474d58e8dd654b +5f6a5b4b38271f202635472622253b53514f5b5b585b5d5544393e48433a +332f374b60726d61401b143e78917a523839485a6472859ca9adaba69b91 +8e8a837b73706c736f6b68645b5557626e5508321b2f71a6c5af8e776668 +5a596163605e60626161656a6d6d6b6a696c6e6f6e6b6a6a6a6b66616063 +63615d5a575250504f4b474545474b535a60636160615f5d5b60666b6462 +5f575854474646413f3e3e3c3c403f3f4446474c515d5e6265686b6d6f6d +6b6a6b6b6b696349585a53677a5e2b04191c263423173026191a211c171d +221b1f1f1c1c20201d26231817191c35559ac8c3927c7e7e7b7974747777 +7474776f74767473757572777978777b81838180818283848484847f8080 +8182828383817f7c7a79797a7a847e7a80827d7675716f6e706f6c6e7277 +787d7f7b777b817a7d82858687898b898b8983828788858b87838284847f +7b8284858483828385847e82858082837b7b80827e7f838582878b898384 +89867c7d8183818284837f838386898885878c888380807e7977787f8485 +818084858185827e7d7e7f7c7c7d7e7f8181807e7d867f7a7a7977797f7a +7d7e7c7d81827f85828082868885827e7f7d7a7b7f7e7a83838485858482 +818582808383818388847e80817b7e837f7d84888784817c767d7f838582 +80858e82828282838484847f7e7c7a797878788282807d7a7a7d80757c7f +7d7d81807e79787574747575776f757978787977727d79787b7b78787d73 +777875727272707071727373716e6c7373737171717375766f6e73797879 +7d786e7379748a878485898d8e8e8c8987888a898682796d626371869297 +9c929a818e7a96767fcab89bbbb499adb0757d60819a8baaffffa295c7b8 +acb2ad9781787678818f75889aadbcb9b5bec3c1c2c1b4a19a9ea59b9496 +a0aebdc8b9bdc8c69b624b4f6f89936e3b222a3a58697d8e9fafb9bebebf +c1bfbebec1c5c3c3c4c6cacdc8c1c9cad464645e393f91badad8bcbdd7c7 +ced1d1cdcacccdcccbd2d7d8d3d1d4d8d4d6d6d5d2d1d3d4d3cfcecfd2d4 +d4d1cdc0b6b5babcb5aeada9a6a7adb5bcc2c3c5c6c5c3c6ccd0d3cdcecb +c3c4c0b2b0b0afaca9a8a8a9acabadb1b2b2b6bac2c4c9ced2d4d4d4d2d2 +d3d5d6d5d2d1bfcfd0c2c3d1cab04c45323a51412938453a2e343c34303a +4136333a3a33354031373f3c373c3d316ebdf0e0cbd4e1dadddbdde0e0dd +dee1dadcdddcdde1e0dce2e2e0dbdee2e4e1dfe0e2e3e6e6e8e8e3e4e6e6 +e6e6e7e7e4e4e5e4e3e1e0dee0dadde2e7e2dcd9d8d7d7d8d7d3d3d8dede +dfe0dddadde3dcdee2e4e5e6e8e9e8e9e7e3e2e5e7e5e7e4e4e5e7e6e2de +e2e4e6e6e5e4e4e5e5dfe3e7e2e4e5dde0e3e4e2e3e6e6e4e7eceae3e4e9 +e8e2e0e6e6e4e5e7e5e1eaeaeaeeece8e7ebf1eae6e9eae5e0dde4e8eae9 +e9eceae7e5e4e3e3e3e3dedce1e3e4e7e8e7e5e5e8e4e1e1e1e0e3e8e2e3 +e2e1e5ebeae5f0e9e5e4e6e8e7e6e2e4e2dfe0e4e2dde6e7e8e9e9e7e5e3 +ece7e5e6e7e6e9eee6dfe2e2dcdfe4dfdde3e9ececeae1d7dde2eaece6e0 +e5eee5e1dedfe2e4e4e2e6e6e3e0dedddddde6e9eae6e0dee2e6dfe5e9e8 +e7e8e8e6e5e4e3e1e1e2e4e5e1e5e6e3e3e4e2dee5e3e3e6e6e5e7eadedf +e3e8e7e2e1e4dddededfdfdfdedddee0e1e1e0e1e4e7ddd9d8dbdfdfe0e4 +e1dadee4de58555253575b5c5c5a575556585754514a403435445763686e +666d5664526d515da8906f908a768b8e525333536e6787f5e17a6c9d8f82 +867e6851484649525f44586a7d8d8b87909593949385726b6e71655f616c +7a8b998e95a4a57f4a343d66828c69351c2432505f7281909fa9aeb0b2b0 +aba7a3a1a19a9794969a9b97929fa0ab3e3f3e1d2881abc9c29e99aa959a +9d9d99989a9b9a9aa1a9aaa5a3a6aaa8aaaaa9a6a5a5a6a5a19d9ea1a3a2 +9e9c9187868b8d867f7e7a76777d858c90909293929093999da09a9b9891 +928e7f78787774717070717473767a7b7b7f8691969ba0a4a6a6a6a4a4a5 +a7a8a7a4a18e9f9f9091a19a832321121f3d301c2b37291d232b231f2930 +2522292922242f1f252d292124261a59aadecbafb3b8aeb0aeafb2b2afad +b0a9abaaa9aaaeaca7adafadacafb7b9b8b6b7b9babbbbbbbbb8b9b9b9b9 +b9b8b8b5b5b3b2b1afaeafb2afafb4b5b0a9a6a5a4a6a9a8a6a9aeb4b4b5 +b6b3b0b2b8b1b3b7b9babbbdc0bfc2bebab9bcbcbabcb9b6b7b9b8b4b0b4 +b6b8b8b7b6b6b7b7b1b5b9b4b6b7afb5b8b9b7b8bbbbb9bcc1bfb8b9bebd +b5b1b4b7b5b6b8b8b4bdbdbfc3c1bdbec2c4bdb9bcbdb8b3b0b7bbbdbcbc +bfbdbab7b6b6b6b6b6b4b2b7b9bcbfc0bfbfbdbbb5b2b2b2b1b4b9b3b4b3 +b2b6bcbbb6c3bebab9bbbdbcbbb7b9b7b4b5b9b7b2bbbcbdbebebcbab8c1 +bcbabbbcbbbec3b9b2b5b5afb2b7b2b0b6bcbfbfbdb4aab2b7bfc1bbb5ba +c3bab6b3b4b7b9b9b7b9b7b4b1afaeaeaeb7babbb7b1afb3b7aeb4b8b7b6 +b7b7b5b4b3b2b0b0b1b4b5b0b4b5b2b2b3b1adb4b2b2b5b5b4b6b9acadb1 +b6b5b0afb2abacacadadadacabacaeafafb0b1b3b6afaba9acb0b2b2b5b0 +a7abb1ab33302d2e323637373532303133322f302c2313131d2d373a3d37 +432c3e2e4d34428d6d4866604e65692c2b0c31514f74e6cf604c75615257 +523e2b221e1f2631192a3a4c57504c54575558584d3c373e493f37353d48 +58635961727857241225618993703f28303f5d6a7a8895a0aaaeadaca9a2 +99928c877c746c6869665f5c6d768d2b39432c388caebfab786771586063 +635f5d5f605f5f666d6e69676a6e6b6d6d6c6968696a6965626366686765 +645951505557524b4a4645464c545b5f5b5d5e5d5b5c62666761625f5657 +534647494643403f3d3e414040444545494d575a5f64686a6a6a6868696b +6c6b686149575d555c7376660d110516362914232e21151b231b1721281d +1a21211a1c281d211f1a1420302c6ab0d2b088868a7d7973747777747376 +6f71717071757371797a7876798082807e7f818284848484818282828282 +82827f7f7e7d7c7a7979807c7b80827d7471706f6e71706d6f747a7a7b7c +79767b817c7e828487888a8c898b888483868785878482838584807c8082 +848483828283837d81858082837b7e81828081848482858a88818287867e +7b7f817f8082817d8686888c8a86868a8b848083847f7a777e8284838386 +848183827f7f7f7f7a787d7f7f828382807f827d7a7a7a797c817b7c7b7a +7e84837e8c878382848685848082807d7e82807b84858687878583818a85 +83848584878c827b7e7e787b807b797f858888867d737b80888a847e838c +837f7c7d8082828082817e7b79787878818485817b797d81767c807f7e7f +7d7b7a79777575767677767a7b78787977737a78787b7b7a7c7f7172767b +7a75747770717172727271706f6f70707273787b747071767a7b7e7f786e +727872918c87898f92918f8e8c8b8d8f8e8882766f6b72889da4a2a68f92 +8879937e8fb8ba9aadbdb4b997a2717887997ea8ffffa599b3bac0b6b6bd +a0837878757272899fabadb2b2b1b8c1c0c1beb09d98a1a49d9aa0adb9c4 +cac7c2bebfc2b790623f55789092794f2c2c3646596f8497a0adb1b8bec1 +c4c7cac5c3c0bec0c5c6c1c7bdca854574523569a1d8dcbeb8c7c4ced1d0 +cbc9cdcecdcdd3d6d6d3d1d4d8d5d5d6d4d2d0d2d4d3d1d0d0d2d2d1cecd +c3bbbbc1c2bdb6b2ada7a6abb2b6b8bec0bfbbbac2cbd1d2ced0cdc4c4c0 +b2b1b2b2afaba9a9abafadafb3b4b4b8bdbfc0c6cdd3d5d3d1d2d1d2d3d5 +d5d3d1cdcacbcdc7c1c9da8e4e343d3c3f3e293c40312e3d3a2f37423734 +3a3a32343f32333e423a44442a4f91d9e9d4cedadfdcdadce0e0dddee0e0 +e0dfdcdee2e0d9e3e3e0dadde1e3e0e0e1e2e3e5e5e6e6e5e5e6e6e5e5e5 +e5e4e3e3e1e0dfdfdddfdadcdee3e1dcd8d7d7d8d9d9d5d4d9dddcdee1df +dbdce0dcdfe2e4e5e6e8e8e7e6e6e3e3e3e5e4e0e0e2e4e5e4e0dde3e3e4 +e2e0dfe1e2e6e0e4e8e3e4e6dedfe0e1e2e5e8e9e8e3e8e7e0e0e6e6e1e1 +e7e6e4e4e7e4e0e7e6e6ebebe7e5e7efe9e6e9eae7e6e6e6e7e7e7e9ebeb +eae6e5e3e3e3e2dedce1e3e5e8e9e9e7e7e7e5e3e2e2e2e3e5e4e3e1e1e7 +eeebe4eee9e5e4e6e7e7e6e6e7e6e3e4e7e5e0e3e4e6e7e7e5e2e0eae7e6 +e8e8e7e8ede5dfe1e2dbdee3dedce1e6eaedede4d9e8e7edece9e1e4e8e9 +e2dedde4e5e6e3e3e2e0dededfe1e2e4e9ece8e0dde1e7e0e4e8e8e6e5e4 +e3e3e2e1e0e0e0e1e1eaeceae6e5e6e4dfdfdedfe1e2e4e5e7dad9dfeaeb +e4e3e9e2e1e0e0dfdfe0e0dbdddfe0dfe0e3e3e0dfdededfe0e1e3e2dbdf +e4dd5f5a55575d605f5d5c5a595b5d5c5650453e3a42576c74727660675e +506c566b9a986f7b89869679844f4b56675288f0f17b6e898e9587878b6d +4f4748454343586e7b7d8384838a93929390816e686e6e65636b7987939c +9a9a979aa1976f482d476b858870452424304051657a8c97a3a8acaeadad +acada29f9996999e9c9ba298a15c1c4c311a5691c8c9a5979f959b9d9c97 +979b9c9b9ca2a8a8a5a3a6aaa9a9aaa8a6a4a4a6a5a39f9fa1a19f9d9c94 +8c8c92938e87837e77767b8286888a8d8c88878f989e9f9b9d9a92928e7f +797a7a77737171737775787c7d7d81898e92989fa5a7a5a3a4a3a4a5a7a7 +a5a39d99999b948d98aa62291321262e2f1c2d2f201d2c291e2631262329 +2921232e23222c2c222b2b153e82cad7baadb3b3afadaeb2b2afadafafaf +aca9abafaca5aeb0adabaeb6b8b7b7b8b9bababab9b9babab9b9b8b8b6b6 +b5b4b1afaeadadaeb1afaeb0b1afa9a5a4a4a7aaaaa8aaafb3b2b4b7b5b1 +b1b5b1b4b7b9babbbdbfbebfbdbabababab9b5b5b4b6b7b6b2afb5b5b6b4 +b2b1b3b4b8b2b6bab5b6b8b0b4b5b6b7babdbebdb8bdbcb5b5bbbbb4b2b5 +b7b5b5b8b7b3bab9bbc0c0bcbcbec2bcb9bcbdbab9b9b9babababcbebebd +b8b7b6b6b6b5b4b2b7b9bdc0c1c1c1bfbab6b4b3b3b3b4b6b5b4b2b2b8bf +bcb7c1bebab9bbbcbcbbbbbcbbb8b9bcbab5b8b9bbbcbcbab7b5bfbcbbbd +bdbcbdc2b8b2b4b5aeb1b6b1afb4b9bdc0c0b7acbbbcc0c1bcb6b7bdbcb7 +b1b2b7bab9b6b4b3b1afafb0b2b3b5babdb9b1aeb2b8afb3b7b7b5b4b3b2 +b2b1b0afafafb1b1b9bbb9b5b4b5b3aeaeadaeb0b1b3b4b6a8a7adb8b9b2 +b1b7b0afaeaeadadaeaea9abadaeafb0b2b5b2b0afb1b2b3b3b4b1a8acb1 +aa3a353032383b3a38373534363837312d251e191c2e41444246323d3830 +4f3c53827c454a57546c536029212d443779e4df634e615f6051515a4027 +1f201d19192d434d4c4d49474e555457554b3a374148403c3f49525b615f +5f5e656e664223193e638187754e2f313c4c5c6e83949cabadb0afaca7a1 +9d8f877c737275726e756e854a1854422d699cc8bb876e6c5d6263625d5c +60616061676c6c69676a6e6c6c6d6b6967686a6967646466666462645c56 +565c5d5a534f4a46454a51565758585753525a6167686264615757534648 +4b494642403e404442424647474b5054565c63696b6967686768696b6b69 +655b565a605d5d6d86450f00131b262a16262718152421161e291e1b2121 +191b271e1b222118272f1e4887c5c9a18a8a847872737777747375757573 +707276736c7a7b7875787f817f7f8081828383828283838282818180807f +7e7c7a797878787f7c7a7c7e7c74706f6f6f72726f707579787a7d7b777a +7e7c7f828487888a8b88888784848485848080808283827e7b818182807e +7d7f80847e82868182847c7d7e7f80838687868186857e7e84847d7c8081 +7f7f82807c83828489898584868983808384818080808181818385858484 +837f7f7f7e7a787d7f808384848281817e7c7b7b7b7c7e7d7c7a7a808784 +7e8a87838284858584848584818285837e818284858583807e8885848686 +85868b817b7d7e777a7f7a787d8286898980758485898a857f808685807a +7b8083827f7e7d7b79797a7c7d7f8487837b787c82777b7f7f7d7c797878 +777574747473737f817f7b7a7b79747473747677797a7c6d6c727d7e7776 +7c75747373727273716a6c6e6f717277797778797a7b7c7f7e796f737871 +9c979293989a989494939394928d847d73787f8a9caaaaa29b998692867b +89cabf8fb4bab1c0aaa184757caa8e91ffff9495b5abacc9c2bcbba48e84 +7c7571769aaaada8adb0b1b7bdbcbdbaac9a969f9fa0a6b0b8bcc4cbbccc +cab6b4c6cbbb835b465a7f918e85564a3e383b495c6a838d9aa6b2bbc3c7 +cbd0cfc8c4c3bfbbc4bfdccb5c6b753f4285c5d9d4c4b7c4cbcecdcacacf +d1cfcfd2d3d5d4d4d5d6d5d5d5d3d0d0d2d4d2d1d2d1d1d1d0cdc9c5c3c3 +c2c0bcb9b3aeaaaaaeb0b0aeb5bbbdbabac1c9cbd1cfd2d0c6c3bfb1afaf +adaba8a7a7a8afadafb4b5b6babfbebec3cbd2d5d3d1d5d3d1d1d3d4d5d4 +d1cacccfc6b9c2d3c97b483c333f48342e41392d393d3434393a39373637 +37353c2f3a433f4345343a5ca7e8e7c9c7d6d8d8dadee1dddcdee0e0dddb +dee2e0dae2e2e0dbdee1e3dfe2e3e3e3e3e2e3e2e7e6e6e5e4e4e4e4e5e2 +dedbdbdcdedfdfdbdad9dedfdcd8d6d5d7dadad6d5d9d9d9dde2e1dcd9da +dcdee1e3e4e4e6e7e6e4e4e4e3e1e2e3dedee2e4e5e4e1dee7e6e4e0dddd +dfe2e7e1e5e9e4e5e7dfe0dedfe2e7e9e9e9e1e7e8e1e1e6e6e2e3e9e8e6 +e6e8e5e1e3e1e1e7e9e7e5e8eae7e6e6e3e0e3eae9e5e2e3e7eaeceee9e6 +e2e1e2e3e0e0e1e3e5e8eae9e7e8e8e9e7e4e2e2e2e1e5e4e2e2e8eeece4 +e7e4e4e5e6e7e6e5e6e7e5e2e3e5e4dfe1e2e4e6e6e4e3e1e5e3e5e9e9e6 +e5e7e7e1e3e3dcdfe4dfdfe2e5e7ebede7dfece7e5e6e7e3e4e5ede7e2e1 +e7e9e9e6e0dfdddcdde0e2e4e0e6eae8e1dde0e6e1e3e5e7e5e1e0e1e2e2 +e1e0e0e0e0e0e9e9e7e4e5e8e7e2dcdddddedfe2e4e4dcdadfe9e9e1e0e6 +e8e6e3e0dfdfe1e2dcdee0e0dfdededfe0e1e1e0e1e0e1e4e4dde1e5de6a +6560616668666262616162605b524b41464d596977776f6b6a5a675e5564 +a7a16d85877d91868164524f796068f7f16e68877f7d9b908a887059504a +45444669797d787e8283898f8e8f8c7d6b666c6869707c868d969f93a3a1 +8c899ba09565412e456d82807a4c443832354356647b838e99a1a7abaeb0 +b4b2aba8a7a49ea69db4a12e404e1f2a72b5c7bda7949a9a9a9996989d9f +9d9ea1a5a7a6a6a7a8a9a9a9a7a4a4a4a6a4a3a1a0a0a09e9c9896949493 +918d8a837e7a7a7e80807e81878986878e96989e9c9f9d94918d7e777775 +73706f6f707775787d7e7f838b8d90959da4a7a5a3a7a5a3a3a5a6a7a6a1 +9a9a9c92868ea39c52241d1c2d36251d30281c282c232328292826252626 +242d20252c23272d212c509bd6cca99faaabaaacb0b0acabadadadaaa8aa +aeaca6adafadacafb6b8b6b9bababab8b7b6b5bab9b9b8b7b7b5b5b3b0ac +a9a8a9abadb1b0acabacada9a5a3a2a6ababa9abafafafb3b8b7b2aeafb1 +b3b6b8b9b9bbbebdbdbbbbbab8b7b8b3b3b4b6b7b6b3b0b9b8b6b2afafb1 +b4b9b3b7bbb6b7b9b1b5b3b4b7bcbebebeb6bcbdb6b6bbbbb5b4b7b9b7b7 +b9b8b4b6b4b6bcbebcbcbfbdbab9b9b6b3b6bdbcb8b5b6babdbfc1bbb8b5 +b4b5b6b6b6b7b9bdc0c2c1c1c0bbbab8b5b3b3b3b2b6b5b3b3b9bfbdb7ba +b9b9babbbcbbbabbbcbab7b8bab9b4b6b7b9bbbbb9b8b6bab8babebebbba +bcbab4b6b6afb2b7b2b2b5b8babec0bab2bfbab6b9b8b6b5b8bebab3b4b8 +bcbab7b1b0aeadaeb1b3b5b1b7bbb9b2aeb1b7b0b2b4b6b4b0afb0b1b1b0 +afafafb0b0b8b8b6b3b4b7b6b1abacacadaeb1b3b3aaa8adb7b7afaeb4b6 +b4b1aeadadafb0aaadaeaeafaeb0b1b2b4b4b3b3b5b6b6b3aaaeb2ab4540 +3b3c4143413d3d3c3c3d3b362d2820252a313e4848403b3e3345443e5294 +874a5750445956583d2a25513f52efe85b4b6352475f534f51402d28251f +1d1e404e4f474847474b515053514737353f3f40444c53555b6253636350 +52666b6641261632617b807e554e443e414f626e888e98a2a7a9abaaa9a9 +a499928f8980827a9b932e4a63374285bfc3ab896a6862605f5c5d626462 +6366696b6a6a6b6c6c6c6c6a6767686a6867666565656361605e5e5e5d5b +5956524d4a4a4e50524e5155575452596161676566645956524546484442 +3f3e3c3d4442424748494d5253545961686b69676b696767696a6b6a635c +5f6359515c7575320a090e2332201628201420241b1b2021201e1d1e1e1c +261920261f23291d2c529dd4c1927b7b746f7175767271737474716f7175 +736d797a7876797f817e8182828281807f7e8382828180807f7f7e7b7774 +737476787f7d7877797a74706e6d6e73737071757373797e7d7877787a7c +81838484868887868585848282837e7e808283827f7c8584827e7b7b7d80 +857f83878283857d7e7c7d80858787877f85867f7f84847e7e8283818183 +817d7f7d7f8587858487848180807d7a7d84837f7c7d8184868887847e7d +7e7f7c7c7d7f8083858482828282807d7b7b7b7a7e7d7b7b8187857e8382 +828384858483848583808183827d7f8082848482817f8381838787848385 +837d7f7f787b807b7b7e81838789837b88838082827f7f8188837d7d8285 +84817b7a7877787b7d7f7b8185837c787b81787a7c7e7c78757677777574 +747472727e7e7c797a7d7c7771727273747779796f6d727c7c7473797b79 +7673727274736b6b6f6f71707475777b7d7c7f8083827b717579729e9b98 +989a9b99969c9c9a968e857d7a7b88969da6aba59a9a93868d8882f1b299 +a1aeb5c4c1a3997d80a195bfffff968ca09cbcc9b6c2bdbfb3a7967f6f72 +80909fa3a7b1b5b3b8b8b6b6b5aa99949b98a4b1bcbebec6ceb9c2c8c2be +c3ccd0ceaa84644c4a719c97856f5b4c413f45495462738493a2a9aebcc6 +c7c5c3b8afb09bb1bf7c6398662f5c9bc6e2d4b5c0c8cccbcaccd2d3cfcf +d1d3d5d6d5d4d4d5d5d4d2cfcfd2d4cfd0d3d3d4d3d4d2c8c9cac7c0bab7 +b6b3afadaeb1b1aba4a8b4bcbbbcc1c3bfcdccd2d0c6c3bfb1b3afaba9aa +abababadabadb2b3b3b8bdbfbcbfc6ced3d4d2d7d4d1d0d1d3d4d4c3cecf +c4bfc2c3bdd1b167383c393546293b3c33363b3835303b3c34333b3a2d3f +333742413c3d3c2e3b79d1f3d7c2cdd5d5d8dddfdcdadcd8dad9d7dadfe0 +dddfe0e0dcdfe2e2dee3e3e3e2e2e0e1e0e5e5e4e4e3e2e3e3e9e6e1dddd +dee2e3dedad9d6dadedcd7d3d3d6dadad6d5d9d7d8dde3e3ddd8d7dcdfe2 +e3e3e4e5e6e7e3e3e5e4e1e1e3e0e1e4e5e5e4e3e2eae9e7e4e1e0e2e4e7 +e1e5e8e3e5e6dee4dfdde3e7e7e6e6e0e9ebe6e5e9e9e6e4eae9e7e7e8e6 +e2e4e0dfe4e9e9e9ebedecebe9e3dee1e9eae2dde0e5e8ecefe9e6e3e2e3 +e5e3e3e2e4e6e8e9e9e6e6e9ebeae5e2e2e0dde5e5e4e3e6ebeae3e0e1e2 +e4e5e5e6e5e6e6e2dedee2e1dee3e4e5e6e7e7e7e7e2e1e4e9eae5e3e4ea +e3e5e5dee0e5e0e1e4e6e6e9eceae5e6dfdbdfe4e4e3e3ede9e6e6e8eae9 +e7e4e1dedcdcdee0e2dee3e8e7e3e0e2e5e3e3e4e6e4e0e0e3e6e6e5e5e4 +e3e3e2dfe0dfdfe4e9e8e3dee0e0dedfe3e4e3e2e1e2e4e2dddcdfebe8e3 +dfdedfe1e3e1e3e4e4e1e0dedfdadfe1dedee2e4e6e5dee2e7e06c696666 +686967646a6a68645c534b46465360687177716667645a64625dcd8e767b +828693927a735759776a97ebeb7863726d8c98858f87887e71624d3f4452 +606e73778287858a8a8888867b696468626b7c8a8f919aa590999c948d90 +989ea688624732355e8e8c7e6957483d3b3f4147566574828d949aa8b3b4 +b4b2aa9e967c8b934b336c3f12458ab7cebb9499969897969aa0a19d9ea0 +a5a7a8a7a6a6a9a9a8a6a3a3a4a6a1a2a2a2a3a2a2a1979a9b98918b8887 +837f7d7e81817b7474808887888e908c9a999f9d94918d7e7b7773717273 +73737573767b7c7c81898e8e9198a0a5a6a4a9a6a3a2a3a5a6a6949d9e91 +8b8e8f8ba185431822252437182a2b22252a27241f2a2b23222a291f3325 +22282321272a24316ec0dbb79ba1a8a7aaafaeaba9aba5a7a6a4a6abaca9 +aaadadadb0b7b7b5bababab9b7b5b4b3b8b8b7b7b6b5b4b4b7b4afabaaab +afb1b0afaba8a8aca9a4a0a0a5ababa9abafadaeb3b9b9b3adacb1b4b7b8 +b8b9babdbebcbabcbbb8b6b8b5b6b6b7b7b6b5b4bcbbb9b6b3b2b4b6b9b3 +b7bab5b7b8b0b9b4b2b8bcbcbbbbb5bec0bbbabebeb9b5b8bab8b8b9b9b5 +b7b3b4b9bebec0c2c0bfbebcb6b1b4bcbdb5b0b3b8bbbfc2bbb8b6b5b6b8 +b9b9b8babec0c1c1c0bebcbcbbb6b3b3b1aeb6b6b5b4b7bcbbb6b5b6b7b9 +bababbbabbbbb7b3b3b7b6b3b8b9babbbcbcbcbcb7b6b9bebfbab8b9bdb6 +b8b8b1b3b8b3b4b7b9b9bcbfbdb8b7b0acb0b5b5b4b4bebab7b7b9bbbab8 +b5b2afadadafb1b3afb4b9b8b4b1b3b6b2b2b3b5b3afafb2b5b5b4b4b3b2 +b3b2aeafaeaeb3b8b7b2adafafadaeb2b3b2b0afb0b2b0abaaadb9b6b1ad +acadafb1afb2b2b2b1b0b0b1adb2b4b3b3b7b9b8b4abafb4ad4744414143 +44423f4545433f372e262124313a40454741363a3a35464b4bc17e585453 +50595a46422a2e4f487edbe5704d51435b5d434d474f4a433a281b202e38 +4345464c4c494c4c4a4c4e45383439343e4a5557565b654e575d5652575f +69755b3c251924578d90867565564b494d50586474818c96999ca9afaeac +a89f8c7b60788a4f43855e31619cbcc5a5756e615e5d5c5f656662636569 +6b6c6b6a6a6c6c6b696666686a65666767686767665d6265625b55545352 +4e4d4e51514d44444e565556595b5763626664595652454a484240414240 +404240404546464b505452555c64696a686d6a676667696a6b5c65665852 +555656735e2100111a1d321122231a1d221f1c1722231b1a222116271c1f +29211a1a1e1b3076c8d9a87a74716c6f7474716f716c6e6d6b6d72737074 +7878777a80807d82828281807e7d7c818180807f7e7e7e827f7a7675767a +7c7e7c77747579746f6b6b6d73737071757172797f7f7976757a7d828383 +84858788858486858281838081828383828180888785827f7e8082857f83 +868183847c827d7b81858584847e878984838787827f8384828283827e80 +7c7d828787888a878685837d787b83847c777a7f82868987847f7e7f817f +7f7e808183848481808384837e7b7b79767e7e7d7c7f84837d7e7f808283 +8384838484807c7c807f7c8182838485858585807f828788838182867f81 +817a7c817c7d80828285888681817a767a7f7f7e7e88848181838584827f +7c797777797b7d797e83827e7b7d807a7a7b7d7b7775787b7b7979787775 +7474757474797e7d7873757573747879787574757775706f727e7b767271 +727474707073737372747574797d7c7e8286847c72767b749d9c9c9c9c9c +9c9ba09f9b92877f7e7f8b99a4a6a8aaa192a08392947fecd394a6a3a0c4 +b5aac27d88b3ad90ffff807399b5b8c5b7b2cebac7baaa998271717c7f8e +98a4b2b2aeb5b7b2b3b4ac9c969a9da8b8c2c1bfc4ced3c3b4b6c3c9cdcb +cfccc8ba9870564e6d7382918d796157474a4b4c525b656d75818d959ea4 +9b927459324646478fa64a376babd6e0c4bdc5cbcbcbced3d2cdcad2d7d9 +d5d2d3d6d5d5d4d1cfcfd2d4ccced2d4d4d4d5d4cdccccc7c0bbbabab7b4 +b1b3b6b4aba3a1adb2aeafb7bbb8c5c6cecec4c3c0b3b9b1a9a8adb1b1ae +aeacadb1b1b1b5b9bfbababfc9d0d3d3d5d3d1d1d1d2d1cfbdc8cac1bfc7 +c5b8c3c89a5c41312f463631373e38353a3b31393a34343b3a3034383b3e +423c39402d35559de7ecd1ced4d4d7dddfdcdadbd6dadbd8d8dde0dfdcde +dfdde1e3e2dde1e1e2e1e2e1e2e1e2e2e2e2e3e2e2e2e8e6e2dfdfe0e1e2 +dad9d9d6dbdedbd3d1d2d5d9dad6d5d9dbd9dce2e3dedad9dee0e3e4e4e5 +e6e7e9e4e5e8e7e2e2e6e1e2e4e4e3e2e3e3e4e6e8e8e6e4e4e4e4dee2e6 +e1e3e4dce2dcdae1e7e7e6e7dee8ede9e7ebeae6e5ebeae7e7e8e6e1e5e0 +dde2e7e8e9eceeecedeeece6e4e6e7dfdbe0e6e8eaede7e5e4e5e7e8e5e4 +e3e4e6e8e8e7e5e4e7ecebe5e3e4e1dbe2e5e5e2e3e6e6e1e2e1e1e1e1e2 +e5e7e8e6e1dcdce0e1dfe3e3e3e4e5e8eaebe4e2e4e8e8e5e4e7ebe4e6e6 +dfe1e6e1e0e6eae9e9ebebe8e0dedfe4e6e4e3e4ebeae9e9e9e9e8e8e7e4 +e1dddcdee0e2dee2e6e8e7e5e5e5e7e4e4e6e4e0e2e8e9e9e8e8e7e6e5e4 +dddedddee3e9e6e0e0e4e3dedee3e3e0e3e6e4dedbdddfdeeae6e1dcdbde +e2e5e3e5e7e6e3e1dedfd8dedfdcdbdee0e0e4dde1e6e069686868686868 +676c6b675e534b4a4b55636d6f72746b5e6d53676d5ac8b2707a77779e8d +81914b57878972f8f75f4d6d858893847d98838f8374645040434e4f5d67 +74838480878a8485857d6c66676571839193939ba5aa9787868d9192939d +9f9f9478553f3b5f687b8b89755f513a393a3b4049535b6574828c989f99 +8b623a0c1913115e7c2a1f599bc4c8a597959797979ca1a09b99a1a9aba7 +a4a5a8a9a9a8a5a3a3a4a69ea0a2a4a4a4a3a39c9d9d98918c8b8b878481 +8386847b736d797e7a7b83888592939b9b92918e80817971707579797676 +74767a7a7a7e858e8c8c919ba2a5a5a7a5a3a3a3a4a3a18e98988e8b918f +85919c723a261b1c342520262d2724292a20282923232a2922282a252324 +1f222f242d4b8fcdcbaaa2a7a6a9afaeaba9aaa4a8a7a4a4a9acaba7abac +aeb2b8b7b4b8b8b9b8b7b6b5b4b5b5b5b5b4b3b3b3b6b4b0adacadaeb0ac +aeaba8a9aca8a09e9fa4aaaba9abafb1afb2b8b9b4b0afb3b5b8b9b9babb +bec0bdbcbfbeb9b7bbb6b7b6b6b5b4b5b5b6b8babab8b6b6b6b6b0b4b8b3 +b5b6aeb7b1afb6bcbcbbbcb3bdc2bebcc0bfb9b6b9bbb8b8b9b9b4b8b3b2 +b7bcbdc0c3c1bfc0c1bfb9b7b9bab2aeb3b9bbbdc0b9b7b7b8babbbbbab9 +babec0c0bfbfbcbabdbcb6b4b5b2acb3b6b6b3b4b7b7b4b7b8b8b8b8b9bc +bebfbdb8b3b3b7b8b6babababbbcbfc1c2bbb9bbbfbfbcbbbcbeb7b9b9b2 +b4b9b4b3b9bdbcbcbebebbb1acadb2b4b2b1b2b9b8b7b7b7b7b6b6b8b5b2 +aeadafb1b3afb3b7b9b8b6b6b6b6b3b3b5b3afb1b7b8b8b7b7b6b5b5b4ac +adacadb2b8b5afafb3b2adadb2b2afb1b4b2aca9abadacb8b4afaaa9acb0 +b3b1b4b6b5b3b1b0b1abb1b4b1b0b5b7b5b3aaaeb3ad4443434343434342 +474642392e262526313f464644453c2e402b445047bcab605548496f5a49 +560e1d56675aeaef584054615a5e45395240524d463c2d1f212c29343c44 +4d4944494946494d473b3638343b4d5757545b636856464851585a5a6264 +6967523a2f345e6e839797836c5f4b4b4c4d50596167707d8a919ca39c85 +4e2500161c287ca04f4173a8c4bc9073645d5d5d616665605e666d6f6b68 +696c6a6a6966646466686062646666666668626565605b56575756535153 +58564d433d494e48495153505b5c626257565347504a403f444846434341 +40444444484c545050555f6669696b696767676867665a6763575155534c +5c6d4e1e130e16301e181e251f1c21221820211b1b2221171a2127282619 +101b152a569ed6c48d75706a6d7373706e6f696d6d6a6a6f727271767778 +7c81807c80808180807f7e7d7e7e7e7e7e7d7d7d817f7b787778797b7a7b +77747679736b696a6c72737071757573767c7f7a76757c7e838484858688 +8a8686898883828681828282818081818284868684828282827c80847f81 +827a807a787f858584857c868b8785898882808485828283827d817c7b80 +8586888b8886878886807e808179757a8082848785838081838481807f80 +81838382807e8185847e7c7d7a747b7e7e7b7c7f7f7b8080808080818486 +8785807b7b7f807e828282838487898a8381838787848385878082827b7d +827d7c828685858787847b77787d7f7d7c7d8483828282828181827f7c78 +77797b7d797d8183828080807e7b7b7d7b77777d7e7e7c7c7b7a77767273 +7273787e7b757579787373787875767977716e7072717d79746f6e717576 +727274737373747572787d7a7b7f83807b71757a749fa1a2a2a1a0a2a39c +9c9789807a81899fababa7a7a79f9086a38681e8d68f9ab1bab5a9bdac7d +9bafa39fffff798a949cafbda1b6d8bdbac5aa938c888077757b8692a1ae +a9a6b1b8b2b3b5afa0989ca4aebbc4c2bec4cdc0c8cbc9c7cbcdc9c0c8d0 +d0c8b7977a625f64727c80868e9186735f4f48484b4c53565d6e7c797168 +7327413a3f59b07c2f529ac5e4d3b9bec4c5c5cbcfcec8c6d2deded6d2d5 +dad6d5d4d1ceced2d4ccced2d3d2d1d1d1d2cecbc7c5c4c4c5c0bbb6b8bb +b7aea6a0a7a69a9ca9b6b7bebfcacbc3c1c0b4b7ada4a2abb0b0acb2afb1 +b2b3b0b4b9c0bbb8bdc7ced4d3d2d1d1d2d2d1cdcac5c1c2c8c9c2c0c2c1 +c7cb944431433f482a31463b3039403537373536393938263c403c44403a +442f3b3e6dc9f1dccbd2d4d9dfe2dedbdcd9dcdddad7dbe0e1d9dcdedee2 +e4e2dddfdfe0e1e2e1e3e2e1dfe1e1e1e1e2e2dcdbdcdbdad9d9d8d7dadb +d8dcdfd9cfd0d0d4d8d9d5d6d8dedcdce1e2dedcdddfe2e5e6e6e6e8e8eb +e5e6ebeae4e4e8e0e0e2e1dfdfe0e2dbe0e6eae9e6e4e2e2dce0e4dfe1e2 +daddd5d6dfe8e8e9eadae5ece8e7e9e8e2e4e8e9e7e6e7e5e1e6e0dadee3 +e5e8ebe4e3e5ecefeae4e1e5dddbe3e9e8e8eae4e2e6e7ebe9e6e3e3e4e6 +e7e7e6e3e3e6ebebe5e3e5e2dce0e4e7e3e1e3e4e0e7e4e2dfdee0e5e9ec +eae5dfdfe4e6e4e3e1e2e1e5e7ecede9e5e6e8e9e6e8ebebe4e6e6dfe1e5 +e0dfe7edeceaebebeae0e3e7ebe9e2e1e4e6e8eae9e7e5e5e6e7e5e1dede +e0e3e5dfe2e5e9eae9e8e6eae5e4e7e5e1e4ece9e9e9e8e7e6e5e4e2e2e1 +e0e4e7e3dbe1e4e3dddce1e1dce0e6e3dad9e1e6e2e7e2dcd9d8dce1e5e1 +e3e5e5e3dfdeded9e0e1dbd8d9dbd8e3dbe0e5df6a6c6d6c6b6c6e6f6868 +63574c484d53636c747273756c5e55775e5ec7b46b717d868b849a865069 +7d757aecee5c64686b7e8a6e82a288848f755f5957504a48495561717f7a +78838a868588817269696d778793949197a1929899938f9092918d98a4a7 +a3967b634f4f5768747a808684786551413a3c3f42494e57687976674d53 +0c24110e248157113b89b4d2bf9e989998999ca19e9894a0adada59fa2a9 +a8a9a8a5a2a2a4a69ea0a1a2a1a09fa0a1a09d99949292938e8986888b89 +80766d747268687782858b8d979a90908d817f756a6a717876747877777a +79787a828d8a878c96a0a3a5a4a3a3a4a4a39f9c938d8f93928c8a8e909c +a17024162b2833171e332a1f282f24262624252828271a2e2b2228252332 +2230335db2d3b9a5a6a5a8aeaeaaa9aba8adaea9a4a7a9aaa4a9acafb3b9 +b7b4b6b6b7b8b7b6b6b5b4b4b4b4b4b4b3b3adacaaa9a8a7a6a6a8acaca9 +aaada69c9d9fa3a9aaa8a9aeb4b2b2b7b8b4b2b3b4b7babbbbbbbdbfc2be +bdc2c1bbb9bdb5b5b4b3b1b1b2b4adb2b8bcbbb8b6b4b4aeb2b6b1b3b4ac +b2acabb6bdbfbec1afbcc1bfbcc0bdb7b5b9bab8b7b8b8b4b9b3afb3b8ba +bdc0bab6b8bfc2bdb5b2b6aeacb4babbbbbdb7b7b9bcbebebcb9b9babebf +bfbebdbbb9bcbcb6b4b6b3adb1b5b6b2b0b2b3b1bcbbb9b6b5b7bcc0c3c1 +bab4b4b9bbb9b8b8b7b8babec1c4bebcbbbfbebdbdc0beb7b9b9b2b4b8b3 +b2bac0bfbdbebebbb1b1b5b9b7b0afb2b4b6b8b7b5b3b3b4b8b6b2afafb1 +b4b6b0b3b6babbbab9b7b9b4b3b6b4b0b3bbb8b8b8b7b6b5b4b3b1b1b0af +b3b6b2aab0b3b2acabb0b0abaeb4b1a8a7afb4b1b5b1aba8a7abb0b4b1b3 +b5b5b3b1b0b0acb3b7b0adb0b0adb2aaadb4ac424445464545474a43433e +322723282f3f494d464342372b2a52444ab8a85f5b5656595060480f2c4c +5167e1e64e4f4d4b565d3946624644533f2f2c2e28211f242d36414b423c +454c474a514d413d3a373f4e5959565c6454585a55545658544b56677177 +736355484f5e7181868e9595897662524b4a4d4d54596172807d68444601 +20192142a37933579bbcd0b689746f6e6c6e706e67616b75756d66696f6a +6a69666363666862646667666564656765625e5c5d5d605d5855575a574e +453e45433738465052565860625756544a4c443a39414744414644454747 +45484c544f4c515b6468696867676868676361605d5a5d59504c52586977 +4e0b051f222e11182c22151e251a1c1c1a1d20201f0e252a25271e111e12 +2c3b6abcd3a681776d6e73726e6e706e7578716d6e70716e7477797d8280 +7c7e7e7f80807f7f7e7d7d7d7d7d7d7d7d77767574737271717478767375 +78716568676b71726f70747a76787d7e7a78797d808586868688898c8789 +8c8d8586888280827f7f7d80807b7e868889848480827a80827f7f82787d +74747e8687878978848a87858886807f8384828182817d827c787c818386 +89807d7f8689847d7a7e76747c82828284808082858787827f7f80818282 +817f7e8084847e7c7e7b75797d7e7a787a7b798583817e7d7f84888b8983 +7d7d8284828180808083868a8c8784848787858689878082827b7d817c7b +838986868585837b7c8084827b7a7d7f818382807e7e7f82807c79797b7e +807a7d808485848381817c7b7e7c7879817e7e7e7c7c7a79787777767579 +7c787076797872717676717379766d6c7479767a76706d6c707579737375 +7575737475717a7d7976787b767a72767c75a1a3a3a3a4a7a39d9691877b +777e91a3b1b6b9a990949a8492858bc6c89aa2afbfbab5bfb08c8ba0a78e +ffff9d8d9ca299aab0acb5c8c6b5b4a1949ba49d8a7b7d7b8196a5a7a9b0 +b1b2b3aa9e959397a0b5b8b0b4c8d1c8c6cbcccacccfc8bcc8c6c8c6bfc5 +c8bd9e937d655c636f747b82888b857c726d59544a3f3d454e575251392b +2b385b77cb60396499c3d1d4c7b8b8bcb3bacbc7c4d4dddbd8dbdeded8d7 +d6d1d2d6d8d6cfd3daddddd8d0cacccccfccc9c9cdd1c2b9b3b4b7b2aba9 +a4a4a2999699aab5b0b4bab5b6b9c3c8bab2aaa6acacaba4b3acb1b7b8ad +afb5b9b9bcc0c6ccd3d6cecfcfd2d4d3cfceccccc9c5c6c5c3c1c4b6bed2 +8c38404246443433413a2c313d3d3435403732462d393f3a3940433d413a +305996d7f5c9c7d1d6e1eae2d9ddd5d8d7d4d1d6e4eee2e3e2dee0e1e3e0 +e1dfdddddfe0e2e2dee1e3dfdee0e3e1dadbdddad6d5d9dbddd8d7dddfd9 +d4d4cfd0d2d3d7dadcdcdbe0e2dedde0dfd9dfe3e8ebeae8e6e4e6e8eae7 +e4e5e8e9e8e4e4e5e2dee3ece4dfdee4e6e3e3e6e6e7e4e0e2e6e5e0dcde +e2e4e7e5e4e2dde4e9e5e6e8e7e2dae4eae6e2e5e7e5e6e8ddd8e4ececed +e8e3dfe3e9ebe8e1eae5e2e3e5e5ebf1e7e5e4dedddee6eddee3e8e9e7e5 +e4e6e6ebeae4e3e6e7e2e7e5e6e5e1dde0e6e2e5e4dedde1e6e7eeeceae5 +e1e0e4e7e2e1e0d8dde6eeebede9e8e4e6e5eaebe4e9f0f2eae2e4ebdfea +ebebeeeae6ede9e9e4dddee5e7e3e9edede8e5e7e7e5ebe8e6e4e3e2e0df +e5e5e6e8e9e8e5e2e3e0dedee1e3e3e2e5e3e1e1e3e4e4e3eee9e4e3e4e5 +e2dfe3e6ece4d5d8e0dce4e0e1e6e1d7dae3f1e2d7d7dbdcdcdde6dfdee3 +e5dedadadde4e5dfdcdde0dee0e0e2dfe166686a6a6d726f696560554b45 +4e5f6b686d7f7a676c6e57675e6babad7b7b7d837d81928a6a687c7f66ee +f173616e7066767c79819593848370656c77705d4d4c47506675787c8485 +88867f726966666b7e857e84989f948d9090909499968e9b9aa09f9ba4aa +a1877f6b544c5562697279818481786f6a544f433632393f3e282e372f19 +1528419f3d194d8dbdcecbb29d9a9b90959f9994a0a8a5a0a1a4a7a8abaa +a5a4a8aaa89ea2a7aaaaa59d999c9f9f9b9696989c8e8581858a88837e74 +736f69636977857e848886848a919582786e6c70726e6a7672747d7b7372 +7b85878a8e949ca1a69e9fa1a4a6a5a19d94908d8c8e8f8f8f968b93ab65 +151d222a2c1f1e2f2a1c24303024252e241f331f2b2e26222a2b272d271d +4681c0e0ada1a2a3aaafa7a3aaaab0b1aca3a1a9b1abafb0afb1b6b8b7ba +b8b4b4b4b5b4b5b3b9b9b5b4b6b6b4adaeaeaba7a6a8aaaca5a4aaaca6a1 +a19e9fa1a5a9acaeafb1b6b7b3b2b5b4aeb4b8bdc0bfbdbbbbbdc0c0beba +bcbcbebcb9b6b7b4b0b5beb6b1b0b6b8b5b5b8b8b9b6b2b4b8b7b5b3b7b9 +bdbebebbbbb4bdc0bebdc1beb9adb7bdb9b5b8bab8b9bbb0abb7bfbfc2be +b9b5b6bcbcb7b0b9b4b1b2b4b6bcc4bdbdbab6b3b6bec5b6bbc0c1bfbdbc +bcb9bcbbb5b4b7b5b0b5b3b3b2aeaaadb4b7bcbbb5b2b6bbbcc3c1bdb8b4 +b3b7bab5b6b3adb0bbc1c0c0bebbb9b9babdbeb6bac1c3bbb3b5bcb0bbbc +bdbfbcb8bfbabab5aeafb6b8b4babebeb9b6b8b8b6bab7b5b3b2b1afaeb4 +b4b5b7b8b7b4b1b2afadadb0b2b2b1b4b2b0b0b2b3b3b2bdb8b3b2b3b4b1 +aeb2b5bbb3a4a7afabb1adb0b5b0a6a9b5c0b4a9a9adaeaeafb8b1b0b5b7 +b2adadb0b7b8b2afb3b3b1b1b1b0b0af3a3c3d3f444847423d3830252028 +3a46474a594c313131203d415ea4a4695c5a5f51484f3f20284c665ef2f3 +67443c3b3b4f544c51605c4c4b382f364039261b2422273844424147484c +4f4a433c3d3b35454e4b54686e6256565451575d595058596266697b8889 +77786b5a5762737a838a91948f867a735b554a3b383d444129282820151c +3b59b85530619bc7d5ceaf948f8c7c7b84786e787c77717174716a6a6964 +666a6e6c64687073757068615e5e61605d5f64685c534e4f514e46474448 +423b363948554d5355524f545c604f463c3a3e403f3a4742454d4c434349 +4c4a4d51575e64686061636668676362615e5955555353545b5666824400 +0713272c1c19251d0d141f201518241d192d1622271f1c1f1f1a24211f4a +88c6dfa17d746e71736b6771757f827b716b6f78757d7d7b7d8183818381 +7e7e7f80807e7c7e7f7b7a7c7d7b747576736f6e7072746e6d73756f6a68 +6665676a6e717376777c807c7b7e7d777d81868988868485898c8e8a8888 +8b8b8b868585837e848c857f7f848783848687878580838686827d808386 +888785847e868a87878a8883768086827e818381828479748088888b847f +7b7d83847f78817c797a7c7e848b8382807b797b838a7b80858684828182 +8086857f7e81807b807e7e7d7975787f8084837d7b7f84858c8a86817d7c +80837e7f7c7679848a89898784828283868782868b8d857d7d8478838482 +87817d8482827d76777e807c828686817e80807e827f7d7b7a7977767c7c +7d7f807f7c797a777575787a7a797c7a78767a797978837e7978797a7774 +787b81796a6d75717874767b766c6f7a86796e6e727373747c7574797b75 +7272757c7d7976797a787b7b7b7a7aabababa9a8a8a29a918c8582858e9a +a7bbbca19eac907d9c8e83e2d78aa1b8b1bbbebdb5908ca99ea5ffffa791 +b0c08ea1a9aaa5aab6b4a98f97a0a8b0af9c877e757786949ba5b0adb1b0 +a7998f8e94a1b0b2acaebfc5c3c0cdd3cec9cac6bfc0bbbbb4adb4beb7c4 +c1b6a28e7b675657585d656d777e83777e867c5e3f323c4a422d2d374352 +5aacbc543d80a5cdd0c9c8c9c6c0c3cac8c6cfd3d0cfd2d5d2cfd1d3d3d6 +d7d3cecbd0d4d6d5d3d0ced0cecfcecccacdcecbc0babcbcb7b1aea5a39e +99979ba1a7a9afb2afafb5bdc2b8b8b3b1afaeacabb7afadb0afabb1babc +bbbdc0c3c9ced1cfcfced0d2d1cececdcbc8c6c4c5c3c0bfc9c9c8c08343 +3c46493f323a443a2a343a39353b3b393b393637393d3d41433f3f323f6b +b2e8d6c7cfd3d7dcdee4e5d3d2d2d0cfd5e3e9e2e2e1dddee0e1dee5e2e0 +dfe1e1e2dfdee1e1dddddfdfdddadbdbd9d6d5d6dbd8d5d5dadcd7d4d4d1 +d2d2d4d6d8dadadde0e1dedde0ded9dce0e6e8e8e7e6e4e9eaebe8e4e3e5 +e6e5e2e5e6e4dfe2e8e4dfdfe4e7e4e4e6e1e7eae9e8e9e5dedfe0e4e7e8 +e7e5e4dde3e6e5e5e7e6e3dae5eae7e4e6e7e6e9ebe1dae4eae7e7eae4e0 +e2e8e8e5dfe7e3e3e6e7e8e9ede6e6e5e2dfe0e5eadfe4e8e9e7e5e5e6e9 +edece6e3e5e5e0e2e1e3e5e3e1e5e9e5e6e5e0dee2e5e6edeae6e4e3e4e4 +e4dfe5e5dfdee4ebedebe9e6e4e3e5e7e9eae6e5e6e5e1e1e4e4ece9e7eb +e6e1e6e7e7e2dcdde3e5e2e5e8e7e4e4e7e6e3eae9e7e5e5e4e3e3e5e4e4 +e6e9e9e7e6e5e1dcdce0e3e3e1e7e5e4e4e5e6e6e5e0e0e0dfdfe0e2e4df +dce0ddd8e0e7e0dddadde3e0d7d7e1eae0d7d9dee0dfe0e2dddbe0e3dfdd +dfdfe5e6e2dfe2e3e1dedededede6e71717072736f66605b5552555e6a6f +7577666e836956766a60c4b96a7f8e817d7f8686696a8a7e84f4e879607e +8c5b6b747672778384796068737b8483705a4d434655646d78838386857b +6e6462656c797f7a7e8c908b848e959293999c98999698928c96a19dadad +a4927f6d5b4b50545b636d777e8274797d714f2c1e1f20212b36342e2421 +7991332671a1d0d2c1b8b6b0a7a7a9a49fa4a5a09ea1a2a2a2a7a9a9a9aa +a6a09c9fa3a3a2a09d9da0a19f9c98969696938b878b8f8d898677726d68 +676b7177797f827f7f858d90807c777573726f6e7a727073726e74808587 +898c91979c9f9f9fa0a2a4a3a09c918d8a8a8c8f8f8f919c9d9d965b1a18 +272f251b26322a1d272d2925292824282a2826282929292b26271a2b569f +d7c1a3a2a0a0a0a2a9b2a8acadaaa3a2a6adabaeafaeafb5b6b5bebbb7b6 +b6b6b4b4b4b9b9b5b3b5b5b3adaeaeaca7a6a7aaa5a1a1a6a9a4a1a1a0a1 +a4a6a8aaacadb0b5b6b3b2b5b3aeb1b5bbbdbdbcbbbbc0c2c1bebab9b9ba +b9b6b7b8b6b1b4bab6b1b1b6b9b6b6b8b3b9bcbbbabbb7b3b6b9bdc0c1c0 +bebdb6bcbfbebec0bfbaafb8bdbab7b9bab9bcbeb4adb7bdbabcc0bcb6b8 +b9b9b2acb4b0b0b3b6b7bac0bcbebdbab7b8bdc2b7bcc0c1bfbdbdbcbcbe +bdb7b4b6b3aeafaeb0b2aeacb0b7b8bdbcb7b3b7babbc0bdb9b7b4b5b5b5 +b2b8b8b2b1b7bec0bebcb9b7b6b8babcbbb7b6b7b6b2b2b5b5bdbbb9bdb8 +b3b8b8b8b3adaeb4b6b3b6b9b8b5b5b8b7b4b9b8b6b4b4b3b2b2b4b3b3b5 +b8b8b6b5b4b0ababafb2b2b0b6b4b3b3b4b5b5b4afafafaeaeafb1b3aeab +afaca7afb6afaaa7acb2afa6a9b3bcb2aaacb1b3b2b3b5b0aeb3b6b2b0b2 +b2b8b9b5b2b5b6b4afafafafaf414343434649443e38332d2a2f36444a51 +503c3d4d301f494a4cbab15b64645356544d421e22515773f3ec794f5952 +1c3d4c4e474a5654482c323a404746332325201e2a3439414a494f504a41 +3a3b3b38414a495061645c50585c56575f625f605f6262617083849da4a2 +95867a695c60656971798186887b7d827552302021221c1e252b2d2f348c +a5463a84b2e1dfcec2bcb2a29c988e8282817876787772696b6d6d6e6f6b +6564676b6c6b69666362605f5f5e5d60636259525356514b4b4647423d39 +3d4349494f524e4e545c5d4d4a45434140403f4b434144453f474e4d4b4d +50545a5f6261616264666562615d5c57545353535456656c727038000222 +3024151d261b0d161c1a181f211f22231f1c1e1e1e1f212123182c5ba5df +be8b79716a64646d79757d807d726d6d71757c7c7a7b80817f8784818081 +81807d7a7e7e7a797b7b79747575736f6e6f726c68686d706b6868666769 +6b6d6f7172797e7f7c7b7e7c777a7e8486868584858c8f8f8c8887888988 +85868785808389858080858885858782888b8a898a8680828286898a8987 +867f85888787898884788186838082838285877d768086838586817c7e81 +817b757d79797c7e7f82878283827f7c7d82877c81858684828282858887 +817e807e797a797b7d7a787c828185847f7c808384898682807e7f7f7f7b +81817b7a808789878582807f81838587838081807c7a7d7d85807e827d77 +7c80807b75767c7e7b7e81807d7d807f7c81807e7c7c7b7a7a7c7b7b7d80 +807e7d7c787373777a7a787e7c7b7b7c7d7d7c7575757474757779747175 +726d757c75716e7278756c6e7881776f71767877787a7573787b77757777 +7d7e7a777a7b7b797b7b7b7ba8aaaba7a6a39b938887888f99a2a7abb0a4 +9fa098928b8385ead4a2bbb399b7c6a0c0a77b9bafb7ffffafa5b8a1b3a1 +aca7a09fa6a99d90839fb5b9bcc0b39e8c7d74798591a2afa9adaca09087 +8a93a0a4a5a3a3abb0b2b8c5cccac5c2baafa3a9bdc8cbd9e6e3e1e2e0d8 +c7ac8e755c564e4c4f5457586a73858a6e432e3237302e333337414662d7 +90394f88c1c7dabbabc3d7c4b9cbc5c8c7c4c5c9c9c9ced1d3d2d6d8d4cd +cccfd0d1cecdcfd2d3d2d0cfcececcc8ccc1bcbebebab3b1a9a59f9c9c9d +9b9aa1a6a9a6a7aeb6bbb4b6b7b4afacacadb5aeacafaeabafb9bdbbbcbe +c1c5c9cbcdcccacbcccccacbcbcac7c4c5c6c5c3c3c5cbbfd6c462363a45 +49382f4145312e353d38353f41314434313a413c3f473d463b33478ad6eb +cfcbced1d2dbe7e7d4d1d1d0d3d7e0e2dfe1e0dcdddee0dde6e3e0dfe0df +e0dce0e1e0dcdcdedfdcdadbdbd9d6d5d6d9d8d6d5d9d9d5d2d2d2d3d3d5 +d7d8d8d7dedfe0dededfdddad9dee3e6e7e6e6e5e8e7e9e8e5e3e5e6e1e1 +e4e6e4e0e0e4e4e1e0e4e7e5e5e6e1e8eceae7e6e5e1e1e4e7eaecebe9e8 +dfe3e5e5e6e8e7e4dde6eae8e5e7e8e7e7ebe3dde7ebe7e6eae4e1e2e7e5 +e2dce3e1e2e7e8e7e7e9e5e7e9e7e3e2e5e8e3e6e9eae9e7e6e6eaedebe6 +e4e5e5e2dedfe3e6e6e2e5e9e7e7e7e1e0e3e7e6eae7e5e3e3e3e3e2dee6 +eae6e1e2e7eaeae8e6e4e3e4e6e8efe4dcdde1e1e0e0dfe4e0e0e9e9e6ec +e5e4e0dcdde2e3e1e4e5e4e3e6eae8e2e4e3e2e1e1e1e2e2e5e4e3e5e7e9 +eae9e8e2dbdadee2e2e0e9e7e5e5e7e8e7e6d9dde0dfdcdce0e5e8dedbdb +dae3e5dadedde0e5e3dbdae1e7dfd9dde2e3e2e3e0dcdbdee1e0e1e4e2e6 +e7e4e3e5e6e5dddddddede6d717271706e68605756575e68717677796b65 +676566696568caad758e88738d90668b7852778e96f5f0887a896d7e6c76 +726c6c73766d605370878c8f9386705c4d444a566374847e828074645a5d +646b6f717173787c7d7f888f929294918d838b9fadb1c1cfd0cfd3d5cebe +a5866f58524c4a4d525657676e7c7e5f301a1d1b15172533301e1127a373 +243979c0cad8b3a1b8c9b5a7b6afb0aeaaabadada9a9ababaaacafa9a29f +a1a2a09e9d9fa2a3a19e9d9a979391948c898c8f8d88867b756f6c6c6d6b +6a71767976777e86887c7c7d7a757272737b7472757471757f8687888a8f +9397999c9b9c9d9e9e9c98918e8b8b8d9091929598a095ab9a37111c2c30 +211b2f352120272d27222c2d1e332620292d28272f242e231f3377c5d6af +a39f9c979facb0a5a7a8a7a5a4a5a7aaaeaeadaeb3b5b4bdbab7b6b5b4b3 +b1b6b9b8b4b2b4b2afadaeacaaa7a6a7a8a5a2a1a5a6a29f9fa1a2a5a7a9 +aaaaaab1b4b5b3b3b4b2afaeb3b8bbbcbbbbbcbfbfbfbebbb9b9bab5b5b6 +b8b6b2b2b6b6b3b2b6b9b7b7b8b3babebcb9b8b7b6b8bbbec1c3c2c0bfb6 +babcbcbdbfbebbb2b9bdbbb8babbbababeb6b0babebabbc0bcb7b8b8b6af +a9b0aeafb4b7b6b8bcbbbdbfbdb9b8bbbeb9bcbfc0bfbdbcbcbdbebcb7b5 +b6b3b0abacb0b3b1adb0b7babebeb8b5b8bab9bdbab6b4b4b4b4b3b1b9bd +b9b4b5babdbdbbb9b7b6b7b9bbc0b5adaeb2b2b1b1b0b5b2b2bbbbb8beb6 +b5b1adaeb3b4b2b5b6b5b4b7bbb9b3b3b2b1b0b0b0b1b1b4b3b2b4b6b8b9 +b8b7b1aaa9adb1b1afb8b6b4b4b6b7b6b5a8acafaeababafb4b7adaaaaa9 +b2b4a9abaaafb4b2aaacb3b9b1acb0b5b6b5b6b3afaeb1b4b3b4b7b5b9ba +b7b6b8b9b8aeaeaeafaf4144454544443d352e2d2e3540484e4f52403332 +3037464d5abd9c5e6d5e445b613657421c436375dedd77676b454c384a4a +444146493d2f223c5355565a4b3c34291c202a3242514b4f4f4537303438 +39393f40454b4c4b485158595d6263605d677d8f96a9bdc1c5ced3cfc3ad +917b67615a585a5d5e5d6e72818262341c1c180e111c292a24213dba8537 +4e8ed2d9e5bea9bcc8ae99a397948f87888888827c7a7a777a7b746b6666 +6765605d5f6265666362615f5e5b61585457595651514a47413e3e3f3d3c +43484b46474e56594b4c4d4a4542404149424043443f454d4e4d4e505458 +5c5e616060616262605f5f5c5754545455575a5f6d658174150011272b19 +12252814131a201d1b2526172b1d161f221d1d251f2a2120357dcdd39a80 +756a5f6370776f757a79736f6b6d74797977787c7e7c85827f7e7e7d7c7a +7c7e7d79787a7976747574726f6e6f706c69686c6d69666667686a6c6e6f +6f6f7a7d7e7c7c7d7b78777c8184858484868b8c8d8c8987888984848587 +85818185858281858886868782898d8b888786838485888b8d8c8a898084 +8686878988857b8286848183848383877f798387838486817d7e807e7872 +7977787d7f7e8083818385837f7e81847f82858685838282868886817f80 +7e7b76777b7e7d797c82838686807e8183828683807e7e7e7e7d7a828682 +7d7e8386868482807f8082848c8177787c7c7979787d777780807c827e7d +7975767b7c7a7d7e7d7c7f83817b7b7a7978787879797c7b7a7c7e808180 +7f79727175797977807e7c7c7e7f7e7d6e7275747171757a7d7370706f78 +7a6f7271757a787071787e7671757a7b7a7b787473767978797c7a7e7f7c +7b7d7e7f7878787979a2a6a8a4a19e968e8387909ca6abadac9f93a2a18a +909680bddea59dc5b9aca2b1c39e82a39fb3ffffa393c0bbb4b1a2b5a69c +9ea29a877999aebdbdbcbebab19f8d7b757a8596a3a4a6a393827c8594a1 +9f9e9f9c9ba1a8b4b0b3bbbaafa5a1b3c0ddede8e3dfd5c7c2bebbb8b1a4 +998e8374685f5549414f4b50595a4e454235363d3a2a2940554299d27a2f +609fc3e9c18d85a6b3b0bbc0c4c6c7c5c3c1c4cecfcac7c9cfcecaced1d3 +cfcbcacdd2d4d1cfcfd1d1ccc8cec6c0c2c2bdb8b7ada9a4a19f9d9a989a +9e9f9c9ea5acb1b0b1b1afacacaeb0adaeb3bab9b2afb1bababbbec0c3c7 +c8cac8c5c6c7c8c7c7cccac6c4c6c7c7c7d1bac9c6c8d6a25631354a4931 +32413f342f3c3e353d44334036343a3e3c3f443d45423a3c66b1e7e3ccc6 +d1d5dbe0dcd7d3d1d2d7dbdedddcdfdedbdde1e2dfe0dedcdbdddcdddbe1 +e1e0dcdcdededadadadad7d5d4d4d7dcdbdad9d7d3d0cfd1d2d3d5d7d8d9 +d8dededfdfdededcdad8dce2e5e6e6e7e7e3e1e4e7e7e5e7eae1e1e3e3e2 +e0e1e2e4e2e1e4e6e6e6e6e4e9e9e2dde0e6e7e3e4e8ebecebe9e8e1e2e2 +e3e5e7e7e5e1e5e8e7e6e5e6e7e0e7e3e0ebefecece6e2e1e1e6e4e1dce2 +e0e1e5e6e6e5e9e8e8e8e6e2e0e3e6e5e6e8eae9e8e7e6eaeae9e7e5e5e6 +e4e0e1e6e9e8e3e4e8e9e8e7e3e2e4e7e4eae9e8e4e0dfe1e5e0e5e9e8e5 +e3e3e3ebe9e7e6e5e6e7e8eee4dcdee3e4e3e3e0e2dcdce8ebe8eee5e3df +dddee1e2e1e6e6e4e4e9ede9e1e0e0e1e0e0e0e2e3e8e6e3e3e5e8e9e9eb +e4dcdadde1e1e0e7e5e3e3e5e6e5e4e1e3e4e2dfdedfe1ece0dddddce2e5 +dbe3e1e1e4e1dcdce2eae2dcdee1e1e0e2e0dedcdcdee1e4e6e4e5e6e6e6 +e7e8e8dedededfdf6c70726f6c69635b50565f6b757a7c7d73656a685462 +7565a1be77698f87857b808e6b55787b90f4f98270968c817b6c7e71696b +6f675749697e8f8f8e908d8372604e484d586a77787a7767554f58636c6a +6a6d6c6b6d737b787a868b85818399a9c7dad6d2d0c8bcbab8b6b6aea398 +8a7f72665d54483e4a45454d4b3e313027221b1d2324272b0862ac61164d +98c0e7bd8780a0aba7b1b7b9bcbbbab8b6b3b1ada6a1a4a9a8a2a5a7a7a3 +9e9da1a3a3a09c9c9d9a938f978f8b8f908e8a897d7974716f6d6a686a6d +6e6b6d747b7e7877777572727476737479817f79767a8686878a8e919596 +99979798999a999694908c8d8f939595a08c9c9b9ca9762f121a2f311a1e +2e2e23212b2d222a30202f2823292a28292b242d2d262853a0d3c8a99ba0 +9da0a5a4a4a5a5a6a8a8a6a5a7acacacaeb4b7b6b7b5b3b2b2b1b0aeb7b9 +b8b4b2b4b1adadadaba8a6a5a5a6a9a7a6a5a4a09d9ca0a1a5a7a9aaabab +b1b3b4b4b3b3b1afadb1b7babbbbbcbebab9babdbdbbbbbeb5b5b5b5b4b2 +b3b4b6b4b3b6b8b8b8b8b6bbbbb4afb2b8bcb8bbbfc2c3c2c0bfb8b9b9ba +bcbebebcb4b8bbbab9b8b9bab3bab6b3bec2bfc1bcbab7b7b7b5aea9afad +aeb2b5b5b6bcbbbebebcb8b6b9bcbbbcbec0bfbebdbcbbbbbab8b6b6b4b2 +adaeb3b6b3aeafb5bcbfbebab7b9bab7bdbcb9b5b1b0b2b6b3b8bcbbb8b6 +b6b6bebcbab9b8b9babbbfb5adafb4b5b4b4b1b3aeaebabdbac0b6b4b0ae +afb2b3b2b7b7b5b5babebab2afafb0afafafb1b2b7b5b2b2b4b7b8b8bab3 +aba9acb0b0afb6b4b2b2b4b5b4b3b0b2b3b1aeadaeb0bbafacacabb1b4aa +b0aeb0b3b0abaeb4bcb4afb1b4b4b3b5b3b1afafb1b4b7b9b7b8b9b9b9ba +bbbbafafafb0b040444645423f3830252b34404a4f515146343733264064 +5e9db35f4460524e44485a3c2c565b74d8da5f4a6e62544f4055493e4042 +3a2919394d5d5d5a5c56514839271f242e3d4a4b4d4a3a2b252e383a363a +3c3c3a3b3d443f43525d5d5f67889bbacccccac9c2bab8bababbb5a9a098 +8e8073685c50455049494f4e3f332e1e1919191b1e2a371e79c1742b61aa +d1f5cb9387a2a8a0a5a6a5a3a19e9c9a95918a827c7a7c796f6f6d6a645b +595a5f6868656364625c586159555a5d5a58574d4b4643413f3c3a3c4243 +404249505149474745424244444142474c4d4441444d4c4d5053565a5b5e +5c5b5c5d5e5d5c615e5a5556575858655165686f805110000f2627121527 +261b1823251b232919271f191f1f1d1e241f292a252a57a6d2b78d78756a +6869696d71747574736d6c71777776787d807e7f7d7b7a7b7a79777d7e7d +79787a7874747473706e6d6d6e706e6d6c6b67646366676a6c6e6f70707a +7c7d7d7c7c7a78767a8083848485888686888b8b898a8d84848484838182 +838583828587878787858a8a837e8187898385898c8d8c8a898283838486 +8888867d818483828182837c837f7c878b888a827f7d7d7f7d7772787677 +7b7d7d7e83828484827e7c7f8281828486858483828585848280807f7d78 +797e817f7a7b8085878682808283808685837f7b7a7c807c818584817f7f +7f87858382818283848b8177797e7f7c7c797b73737f827e847e7c787677 +7a7b7a7f7f7d7d8286827a777778777777797a7f7d7a7a7c7f8080827b73 +71747878777e7c7a7a7c7d7c7b76787977747374768175727271777a7077 +75767976717379817974767979787a7876747476797c7e7c7d7e7e7e7f80 +807979797a7aa8abaaa49e9a948c838f9ea8abacacab9799929aa7918dba +ce94b6b8a6bbb1aca2b4879798b2ffffb199c0b3acc9aeaab3aba29a8c7f +7a80acaeb2b7b8b6b5b5aa99847775798289999a948474728292a19d9c9e +9b969ba3a79c9da6a297a4badcdfeff0dac6baacb1a69c989a999798918d +868484817b75635948393c46483b3e414d493c37465e5b5ec5cf603668b8 +e2fdbe52437c94859ba5b2bab9b8bac4c8ccc8c1c2c5c3bfc9cdcfcecccc +ced1d1cfcecfd2d1cecad3cdcacac9c4c1bfaeada8a29c999a9c97999894 +969da3a6acaaa6a5a7acb0b2a8acb4bbb9b2adacb6b8babdc0c4c7c9c9c7 +c5c6c8c9c8c9cac9c5c1c3c6c7c8d0cac8d1c8ccd19c4a2a3751422f3845 +3d2e37423838423c34393e38383d403d403c3e3d39477ec8f8d4c0ccd8d8 +d6d6dbd7d6d6dbdddddcd9dcdcdadde3e4e3dad9dadbdedfdfdce0e1dedb +dcdeddd8dbd9d7d5d6d5d4d3d7d9d9d6d3d2d1d0ced0d2d5d8dadbd9dfdd +dedfdfdcdbdbd9dde2e5e6e7e8e8e3dfe1e7e8e5e5e8e4e2e1dedee1e3e3 +e3e2e2e2e5e7e6e4e4e9eae3dee1e6e7e1e2e6e9eaeae8e6e3e0dfe2e5e7 +e7e7e3e3e5e6e5e4e4e6dee7e5e3edf1edeee1dfe0e2e6e5e3dfe3e0dfe2 +e3e4e5eaeae8e7e2dddde1e5e6e7e7e8e8e8e6e5eceae9e7e5e2e2e2e0e2 +e7ebeae5e5e9e8e9e8e5e4e6e6e2eceeede5dddbe3e9e6e4e3e6e8e6e1dd +e9e8e7e6e5e6e6e7e7e3e1e4e5e4e4e7ecece2dde5e6e2e6e7e3e0dfe0e0 +e0e1e7e6e4e4e8ece6dee3e5e6e5e4e4e6e9ebe8e4e2e3e5e6e6ece6e0dc +dddfe0e1e3e1dfe0e1e2e2e1e9e6e4e3e4e3e0dde1d9dbdfdbe0e8e5dfdd +dbdbdbdbdde2f0e8e0dfdfdcdbdde0e0dedcdce0e4e7e5e4e4e6e7e7e7e8 +e1e1e1e1e17376756f69655f59505c6b757879797d7374636572626a9db0 +7085836e88888476855a6b6e8cf6f891799e8b7f9576727c766f67594c49 +507c7e83898a8887897f6d584b494d565d6b6c6757474553626b67686c6b +67686f70656876777485a2ccd2e2e3cfbcb0a5aca39b999b9c9a998f8984 +82828078725e533d2d2d36342c36332b26242838452b248fa54b2959abd9 +f6b74c3e77908198a3b0b6b6b5b7b8b1ada8a1a0a3a09aa3a6a7a7a4a2a4 +a4a09d9b9c9e9d98949c96939595928e8f7e7d78726c69696b6668676365 +6c727276726e6d6f74787a70757d84827b7675828486898e929597989697 +989a9b9a9895918d8d8f929596a09c99a39a9da271280d1a352a1823322b +1c253125252e2a232b2d27242929262924292925346eb6e2b89da0a49f9b +9ba4a4a4a7a9aaa8a5a4a9aaabaeb6b9b8b1b0afb0b1b2b0afb6b7b4b1b2 +b4b0abacaaa8a6a5a4a3a2a4a5a5a2a09f9e9d9d9fa4a7aaacadacb2b2b3 +b4b4b1b0b0aeb2b7babbbcbdbfbab7b8bebfbcbabdb9b7b3b0b0b3b5b5b5 +b4b4b4b7b9b8b6b6bbbcb5b0b3b8bcb6b9bdc0c1c1bfbdbab7b6b9bcbebe +beb6b6b8b9b8b7b7b9b1bab8b6c0c4c0c3b7b7b6b8b7b6b0acb0adacafb2 +b3b6bdbdbebdb8b3b3b7bbbcbdbdbebebebcbbbdbbbab8b6b3b0b0adafb4 +b8b5b0b0b6bbbebdbab9bbb9b5bdbfbeb6aba9b1bab9b7b6b9bbb9b4b0bc +bbbab9b8b9b9bab8b4b2b5b6b5b5b8bdbdb4afb7b8b4b8b8b4b1b0b1b1b1 +b2b8b7b5b5b9bdb7afb2b4b5b4b3b3b5b8bab7b3b1b2b4b5b5bbb5afabac +aeafb0b2b0aeafb0b1b1b0b8b5b3b2b3b2afacb0a8aaaeaaafb7b4acaaaa +aaaaaaafb4c2bab3b2b2afaeb0b3b3b1afafb3b7bab8b7b7b9babababbb2 +b2b2b2b24b4e4d453f3b332c232f3e48494a4a4c3f3f2f395250669fae62 +645133474a47374d31506081e8e16a46614e4665514f554c443c2e211e22 +4e5055585957565a54463124242831384748402e1d1b29343c38383b3a33 +3136372d344854587198cddbebecd7c4b8acb2aaa19ea0a19f9e9a97918f +8d8881796457412f303736292b2829242225374b3b3ca9bd5e3b6ebfeeff +c75a457b8f7e9197a4aaa7a6a8a89f99938884807a6e726f6a665f5a5860 +686a666565635c58635d5b5f63615f614e4d48423e3b3e403b3f3e3a3d44 +4a4a4a433f3e404347473d3f474c4c433e3d484a4c4f53575a5c5d5b5b5c +5e5f5e5e615e5a54555658596260616f686f784e0f000c2920121e2e2718 +212a1e1e25201b22231d1b20211e23202628263671b4d7a37f7b7568615f +6b6b6f717475726d70747575787f8281797878797a7b7a787c7d7a77787a +77727472706e6d6c6b6a6b6c6c69676665646365696c6f7172717b7b7c7d +7d7a7979777b8083848586898683848a8b88878a8684817e7e8183838382 +82828587868484898a837e8186898183878a8b8b89878481808386888888 +7f7f8182818080827a83817f898d898c7d7c7c7e7f7e7975797675787a7b +7e848484837e79797d81828383848484828187858482807d7b7b787a7f83 +817c7c81848786838284827e8789888076747c8482807f8284827d798584 +83828182828384807c7f807f7d80858579747c7d787c807c79787979797a +807f7d7d81857f777a7c7d7c7b7b7d80827f7b797a7c7d7d837d77737476 +77787a787677787979787e7b797879787572766e707470757d7a73717070 +70707479877f7877777473757878767474787c7f7d7c7c7e7f7f7f807c7c +7c7c7caaaca79d96928e8a8e98a6acaaa6a6a39392919299a3b3cb9da9b7 +b6b9b7adbaa175a2a6a2ffffb29aacbbbcbab5b1b6aeafa78f736b7e99ab +a4a5b1b7b3b1b2ab9e8c7e77767676888884786c6d7d8d9999999b98969a +9e989799978e97bde4e1d1cfc1a89a97947c736e6c69615a59616060656e +787d807d7c66433033352b3334434e4e474048593d6edfc1434089bbffff +8b373c514b5b6a7e8f99a1b0c0bfcbcfcfcecdc7c1c3c4c7c9cdceced0cd +cecdcfd0d1cfcfd2cdcbcccac4c2c2b2b0aba39c999b9e9898958f90969b +9da9a6a09fa4aaafb2abadafafaeadaeafb3b5b8bcc0c4c7c8c9c8c7c9cc +cdcccdcac6c2c0c2c4c6c7bfe2cacedac7d2d284442c46523e363c413235 +3f3c363d422f3d4139353c403a47383b3b393758a0f0e1c7c0cfd2d1dadc +d9d7d8dadbdbdad7dbdbdadce2e3e2d9d8dadce0e1e0dedfdddad7d9dcdb +d5d9d7d4d2d3d3d1cfccd1d2d0cfd2d4d4cccfd1d6d9dbdbdadfdbdce0df +dbdadbdadde1e4e5e6e8e8e8e1e2e8e9e2e0e2e5e4e1dcdde2e4e3e1e2e2 +e0e3e7e6e2e0e9eeedeae8e6e2dfe0e4e7e8e7e5e4e5dfdce1e5e6e7e9e5 +e2e2e5e5e3e3e5e1eae8e4eaebe7e7dddcdfe2e7e6e6e2e4e0dfe2e3e3e6 +ebebe9e6e1dbdbdfe3e7e6e5e6e7e7e5e5efebe9e8e4dddddedddfe5eaea +e7e8ede6e6e6e4e5e7e6e0ebedede5dedbe3ebeae2dee3e7e5dfdbe5e5e4 +e3e3e3e3e3e2e2e5e8e5e1e2e8eaece3dfe5e6e4eae9e4e0e1e1dedddfe2 +e4e3e3e5e7e2dbe3e6e7e5e2e1e3e6ebe8e4e2e2e3e3e3ebe9e6e1dddcdf +e2e1dfdededfe0e0dfe5e2dfe1e4e5e1dce1dbdfe2d9d8dfe0dcdbd9dadd +e1e3e7f2eae3e2e0dbd9dadee1e0dcdce1e6e7e8e4e3e6e8e6e6e7e4e3e3 +e3e276787369615d5955596573797874747870716b676b768ca879818883 +83827b8c784c777c79e6f58f7b8c99968d81797d767a745c40384d687a73 +768288848285827462544c4949495959564a3f404e5d646366686967676c +6463676a6977a4d3d6ccc7bca39694927b75716f6e665f5c5f5c5e636d75 +7a7b77735a352023231c2f2a26282c2f383c35072fa9a8352871acf9f682 +2f364c4959667a8b949ca8b5aab0b4b3b1afa8a0a2a2a4a5a6a7a6a49e9b +9b9c9d9d9c999c97959595908d8f82807b736c696a6d6767645d5e646969 +726d67676c72777a73767878777677787f8184888e9295969897999b9e9f +9e9c97938d8c8e9094958fb2999da8959fa560240d2936251e272d20232d +292429301e2c302723282923302426282525458edfcba899a09d969ea1a3 +a3a5a7aaa8a7a2a6a8a8adb5b8b7b0afafb1b3b4b1b1b2b3b0adafb2aea8 +aaa8a5a3a2a2a09e989d9e9c9c9fa1a19b9ea3a8abadadadb2b0b1b5b4b0 +afb0afb2b6b9babbbdbfbfb9b9bfc0b9b5b7bab9b3aeafb4b6b5b3b4b4b2 +b5b9b8b4b2bbc0bfbcbab8b4b4b7bbbebfbebcbbbcb6b3b8bcbdbebeb8b5 +b5b8b8b6b6b8b4bdbbb7bdbebabcb3b4b5b8b8b7b3afb1adacafb2b2b7bc +bebfbcb7b1b1b5b9bdbcbbbcbdbdbbb8c0bcbab9b5aeabacaaacb2b7b5b2 +b3bab9bbbbb9babcb9b3bcbebeb6aca9b1b9bbb5b1b6bab8b2aeb8b8b7b6 +b6b6b6b6b3b3b6b9b6b2b3b9bbbdb5b1b7b8b6bcbab5b1b2b2afaeb0b3b5 +b4b4b6b8b3acb2b5b6b4b1b0b2b5bab7b3b1b1b2b2b2bab8b5b0acabaeb1 +b0aeadadaeafafaeb4b1aeb0b3b4b0abb0aaaeb1a8a7aeafa9a8a8a9acb0 +b5b9c4bcb6b5b3aeacadb1b4b3afafb4b9babbb7b6b9bbb9b9bab5b4b4b4 +b351514c4139332d292d36444a47434345383b3e455b718da66d675c4a43 +403c4e3816556c77e7ef794d4f4f4b4c4f565f51504931150d223d4f484a +565c58565b564a3a2e29282a2a3d3b35261816222f3835373935312e2f28 +2a36434e689fd9e7e2ded2b7a7a5a089817a78746a63616a6a6b6e757c81 +817b765c3521232319231e22272d2f353e411e4ac3bb463e89c3ffff933e +40534e5c67798a9199a6b3a5a9aba79f978b7d77726e69656260636a6c68 +6764615d595e59595d61606162514f4a433c3b3f423e3f3c383941464249 +403a383d434649404040403f3d3e3f45474a4e53575a5b5d5c5d5f626362 +62625e59535554575651745f657364707c400d00192b1e1a262e20212923 +1a1e241424261d191f211b2a1d23242425478ed8bd937a766b5e62656769 +6c707273726e727373777e81807877787a7c7d7b78797976737578756f72 +706d6b6a6a68665f646563636668686164686d707272727b797a7e7d7978 +79787b7f82838486878b85858b8c8582848786817c7d8284838182828083 +87868280898e8d8a8886827f8185888988868586807d8286878889817e7e +81817f7f817d8684808687838579797b7e807f7c787a7675787a7a7f8485 +85827d77777b7f838281828383817f8a8684837f78767775777d82817e7f +85828484828385827c8688888077747c84857e7a7f83817b778181807f7f +7f7f7f7f7f8083807c7b8183857a767c7d7a80827d797a7a7776787b7d7c +7c7e807b747a7d7e7c79787a7d827f7b79797a7a7a82807d787473767978 +767575767777767a777476797a7671767074776e6d7475706f6e6f72767a +7e89817b7a787371727679787474797e7f807c7b7e807e7e7f7d7e7e7e7d +a5a59f968f8f92919ea3a9aba8a4a09e8f87908b88bad5b0a1b9adbeb4aa +ca9e858ea89fffffa292b0bfb7bab9b8c5abb3ac9b85798091a19e9d9c9f +a5a9a69f9f95897e7775706b737576706b6c7682979da09f9fa1a5a49aa3 +9d8f96b7d9e3c6b2aa9c877c7d7c7f7b7c7e7b7068675c5a565353535657 +676b634c393336322b2b3645514e424556474aa0d799585993d1ffe78b4b +444d464952616c788c9d9facbcc4c8cccdcbcac8c5c6cccecdcccbcdcdce +cccdced1cdc9c9cac9c2c0c1beb7afa9a5a19e9c9b9a948d8c9295969f9f +9d9b9b9fa5aaacacaaa7a6a8adb0b1b3b6babdc1c3c5c5c6c6cacecfcdcb +cdc9c4c2c3c5c8c8c4dacfcad6cecbdac18143384b4c3c373b3c38383c3a +373e3a3c3c3a393b3c3c433c413a3b394177c0e8d8b8c4d0cedbd9d9d9d7 +d6d5d4d7d5dadad8d8dddddcdad9d9dbdfdfdedbdad7d4d2d7dbd9d2d8d5 +d3d1d1d1ceccc6cdd0cecdd3d7d7cdd0d2d7d9dad9d8dfdadbe0dfdad9db +d9dce0e2e3e4e6e6eae1e1e8e9e1dde0e4e4e2dee0e5e5e0dfe2e1dfe1e6 +e6e1e1e8edeeedebe6dfdee0e4e7e8e7e5e4e7dfdbe1e6e7e8eae8e3e2e6 +e6e3e3e6e3ece8e1e5e4dfe0dcdde1e4e8e7e6e4e2dfe0e4e5e5e5e9ebec +ebe6e0dedfe2e9e7e5e6e8e8e6e3ece7e5e6e3dddde0dddee3e7e7e4e6eb +e3e4e4e4e8eae7e0e6e6e8e6e3e3e3e4eae2dee2e4e1dedfe5e5e5e4e4e3 +e3e3e7e6e7e8e5e1e1e5e1e6e1dfe6e7e9f2eae3dfe1e0dbd9dbdde2e4e3 +e4e6e3dee2e4e5e2dddbdde1e7e4e2e1e2e3e2e1e9ecece6dddadfe4e3e1 +dfdfe1e2e1e0dededfe0e1e1dfdeebe2e6e8ddd7d9d8dedfdfe0e2e4e3e2 +ebe8e6e9e6e0dbdad9dfe0dddde3e9e9ebe5e3e8eae7e5e6e5e4e4e3e173 +736d625a5a5c5b686f7577767270706b67736e6993a881708a829486788e +665b6a8377d8f37d708e9e94948a858d737c776852464d60706d6c6c6f75 +797672766f62564e49443f454749433d3f495364686d6f7072737266706e +66759ec5d8c2b1a79c877c7e7d807e80827d736b6a5a585451505051505e +60573e2923242527231f22242b3a413f1a0861b6823b3b7dbff6d87e4039 +423c3d45515a6678898a98a6acafb2b2afaba8a4a4a7a9a6a19c9d9d9c9b +9b9d9f9b969394928d8a8d8c88807975716d6b6a69625b5a6063616a6967 +6565697075777776737274797c7d7f82868a8e90929495989ca0a19f9c9b +97918f9093969692a89d98a39b98aa9a5e21192e2f231f25282424292825 +2c282a2a28272928282f282c2727252d65b2d7c196999d959f9b9d9ea1a2 +a4a5a5a2a5a7a7a9b0b3b2b0afafb1b2b2afaeadadaaa8aaaeaba4aaa7a2 +a0a0a09d9b92999c9a9aa0a4a49c9fa4a9abacababb2afb0b5b4afaeb0ae +b1b5b7b8b9bbbdc1b9b8bfc0b8b2b5b9b9b4b0b2b7b7b2b1b4b3b1b3b8b8 +b3b3babfc0bfbdb8b1b3b5b9bcbdbcbab9bcb4b0b6bbbcbdbfbbb6b5b9b9 +b6b6b9b6bfbbb4b8b7b2b5b2b5b7bab9b8b3b1afacadb1b4b4b6babebfbe +b9b3b1b2b5bcbab8b9bbbbb9b6bdb8b6b7b4aeabaeaaabb0b4b2afb1b8b6 +b9b9b9bbbdb8b1b7b7b6b4b1b1b1b2bbb3afb3b5b2afb0b6b6b6b5b5b4b4 +b4b8b7b8b9b6b2b2b6b2b7b3b1b8b9bbc4bbb4b0b2b1acaaacaeb3b5b4b5 +b7b4afb1b3b4b1acaaacb0b6b3b1b0b1b2b1b0b8bbbbb5aca9aeb3b2b0ae +aeb0b1b0afadadaeafb0b0aeadbab1b5b7aca6a8a7abacaeafb1b3b5b4bd +bab9bcb9b3aeadacb2b3b0b0b6bcbcbeb8b6bbbdbab8b9b6b5b5b4b2504e +483b3230302f3a3f454745413f3c3134535e6694a36f505e4d5a4a3b522b +213a686ddcf877575e5b4343464e6852554b3b251b223747444444474d51 +50494a4239322e2e2b262e2f2c2419161f27393e403f3c3a38352a394246 +649acee9dbd0c4b8a1949391928d8c8e897c747165635f5c595758576364 +593e2a23241f1b161920292f3740472e247ecb96515394d5ffed90504750 +47494f5c66728494919aa8aaa8a59f978c82797473726d6a6e6f6c67615c +5a5a565453585c5b5c5e59544c484543424041413d38373f423f423d3b37 +373a3e4343413d3a383a3f424346494d515557595a5b5d61656664646662 +5c5657565957536b605d6a64637a7340060420271f1f282a2523231e171e +1e20201e1d1f21212821292326242e65b1d0b37d76705e635e5f6265696c +6f706d6f706f71777978767575777979777574716e6c6f7370696f6c6866 +666663615960636161676b6b6265696e707170707b78797e7d787779777a +7e80818284858d85848b8c847f828686827e808585807f82817f81868681 +81888d8e8d8b867f7e80848788878584877f7b818687888a847f7e82827f +7f827f88847d81807b7e787a7d8081807c7a7875767a7c7c7e8285868580 +7a78797c83817f808282807d878280817e78767975767b7f7e7b7d837f82 +82828486827b8181817f7c7c7c7d857d797d7f7c797a8080807f7f7e7e7e +84838283807c7a7e7a7f78767d7e7f88837c787a79747274767b7d7c7d7f +7c77797b7c79747274787e7b7978797a79788083837d7471767b7a787676 +78797877737374757676747380777b7d726c6e6d7273747577797a79827f +7e817e78737271777875757b8181837d7b80827f7d7e7e7d7d7c7aa3a49e +9692969da0aaa9a8a9a8a39f98908f808cb6c4b5aebbb9c2aca9b7a6a182 +a296eeffbc9fb2b2c6bfb5c2bcb1bfbda68a8091a5a39793989286899595 +878b867e77736f6a6364696e6e6c6c7379a1aaaeaeafb7b8b4a6b0a190aa +dde1beaaa1a7aea7a2a3a19b979798968e8d9289888277695d5350424347 +4a4945464735364045494e56687f6c6954abf7944b7da3e8fdca947d705d +514645474d5b66707e919ea8b5c3cbd4cfc7c7cbcbc9c7cacececbc8c8cd +d0cfcbcaccccc7c5c5c8beb4b0afaba39a9e9c948c8b8f9192969b9e9a94 +949ba3abadaca9a8abaeb0b0b2b5b9bbbec0c1c0c2c3c8cccdcbc9d3cec9 +c5c7c9cbccddc2dad1c4dcd8cde2b667323d4e443b35453d303b3e363846 +39343b3f3a3b41353b46383c3d33568de7eab7c0d0cad8d5d6d7d4d0d0d0 +d3d6dadad7d7dadad6d9d8d8d9dcdbd9d7d6d3cfced4d8d6cfd7d3d1d0d0 +d0cdcbc9d0d3cfced4d8d7cfd2d4d7d9d9d7d5e0dadbe0e0dad8dcd9dbdf +e1e1e2e4e4e7dddee8eae2dfe2e1e4e4e0e2e7e5dddee1e0dde0e6e5dfe5 +e7e7e6e7e9e6e0dde0e3e6e8e7e5e4e8dedae0e6e7e8ebeae4e3e7e8e4e4 +e8e1eae6dee2e1dcdddddee2e5e8e6e6e3dfdee1e8e9e6e4e7eaeceeeae4 +e0dfe0e9e7e4e5e7e7e5e2e4dfdfe4e4e0e2e6e0e1e3e6e3dfe1e5e2e2e3 +e3e8eae7e0e2dfe0e4e9eae4dee8e2e0e1dfdbdde4e7e7e7e6e6e5e5e5f0 +ebe8e9e7e3e2e4e2e9e5e0e4e3e4eeeae2dee0dfd8d6d8dbe2e6e6e6e7e7 +e4e5e8e9e4dedbdde1e3e1e0e0e2e3e3e2e8eef0e9ded9dee6e5e3e1e1e3 +e4e4e3dce0e3e3dfdcdddfebe1e6ece5e0e1dedee0e1e1e1e0d9d4e4e5e8 +eeede5dedcd5dde0dddee6ebeceee7e4e9ebe7e5e7e5e5e3e2e071726c62 +5d61676a7473747575736f6c686e67759ca2867983879986808464635880 +72c8f496798f8ea39a8c938977878671574d5e727266626762565965655a +6561574f4a453d36373c40403f40464c6d767d7e80868682727e74688cc8 +d4b8aaa2a8afa9a4a5a29c98989a958d8d928786807666584c473737393c +3936343a313029231f2b4b63704c2f157bcf732e6792d7eebd8972655043 +35302e323e4b5c6f808b94a0adb1b9b1a8a6a7a8a49d9d9f9f9d9a9b9ea1 +9f9a979995908d90968f85817f7b73696d6b625a595d5e5d606467645e5e +656e7678777574777a7c7c7e8185888b8d8e8f91959a9e9f9d9aa19c9894 +9497999aab90a69d90a8a49bb99343101c3028211c2f271c282c24263427 +22292d28272d21263325292a204481d9d69a99a0959b98999b9d9c9fa3a5 +a3a5a5a4a6abadacafaeaeafafaeaaa8a9a9a5a4a7aba8a1a9a5a09f9f9f +9c98959c9f9b9ba1a5a49ea1a6a9ababa9a8b3afb0b5b5afadb1aeb0b4b6 +b6b7b9bbbeb5b5bfc1b9b4b7b6b9b6b2b4b9b7afb0b3b2afb2b8b7b1b7b9 +b9b8b9bbb8b2b2b5b8bbbdbcbab9bdb3afb5bbbcbdc0bdb7b6babbb7b7bb +b4bdb9b1b5b4afb2b3b6b8bbb9b7b3b0acabaeb5b8b5b5b8bdbfc1bdb7b3 +b2b3bcbab7b8babab8b5b5b0b0b5b5b1b0b4adaeb0b3aeaaacb2b5b7b8b8 +bbbdb8b1b3b0aeb2b7b8b2acb9b3b1b2b0acaeb5b8b8b8b7b7b6b6b6c1bc +b9bab8b4b3b5b3bab7b2b6b5b6c0bbb3afb1b0a9a7a9acb3b7b7b7b8b8b5 +b4b7b8b3adaaacb0b2b0afafb1b2b2b1b7bdbfb8ada8adb5b4b2b0b0b2b3 +b3b2abafb2b2aeabacaebab0b5bbb4afb0adabadb0b0b0afaba6b6b7bbc1 +c0b8b1afa8b0b3b0b1b9bebfc1bab7bcbebab8bab6b6b4b3b14e4f473b35 +373b3c4644444646433f3b3443516f9fa17457504a5b48484f3032285a5a +bdf3936c715c614c3d4f504f625d452a203347493d3a3f3c303341413338 +342e2b2c2c2621242729261e1b1d22464e524e4c4e4b4536494b4e82cde6 +d2c6c0c4cbc2bbbcb7b0aaaaa9a39b999e92918b7e6d5e534c3b39393b39 +33323425222322232f49607559473093e788447ca5eaffcf998275615445 +414145545e6876868f959ba2a2a6998b8583807a73747571695f5a5a5b57 +55555a5c5a5c5e6159514d4e4b453e44433d37383c3f3d3a3b3e38323036 +3c4444413c3b3d40424345484c4f52545555575a5f636462626c67605a5b +5c5c5b6c516a61566f6b688d6d23000b2624222032291b22221618281d18 +1f231e20261a212d2125261c4283d8cd887c78616259585c5d62676c716e +6f6f6d6e73747275747475767572706e6d69686c706d666e6a6665656562 +5f5c63666262686c6b64676b6e70706e6d7c78797e7e78767a77797d7f7f +8082838881818b8d858184838684808287857d7e81807d8086857f858787 +86878986807d80838688878584887e7a808687888b86807f83848080847d +86827a7e7d787b797b7e81817f7c797574777e807d7d80848688847e7a79 +7a83817e7f81817f7c7f7a7a7f7f7b7b7f78797b7e7a76787d7e80818184 +86827b7d7a797d82837d77837d7b7c7a76787f82828281818080808d8883 +84827e7b7d7b827c777b7a7a84837b777978716f71747b7f7f7f80807d7c +7f807b757274787a787777797a7a797f8587807570757d7c7a78787a7b7b +7a717578787471727480767b817a757673727476767675706b7b7c808685 +7d76746d757875767e8384867f7c81837f7d7f7e7e7c7b799c9a9490949e +a5a5aaabafb19997a78a8b9185bfd2a7b4bbc1b8b2a1b2a69d879d9be4ff +c597c5b3bcc5c9c2bfc0beb2a89b939aa6a8a29d9c93877e78746e687071 +777e81796b5f6362625f5f6676829da6adadb2bbbfbebbb5b58bccd8ccae +99c3dcc8ab9f9a95928f8b85807e8082807f838b938d7d7055473b383d3e +3f3d44414b4e4c505a64768674466ce0ea873c76b7d6ebaf596e786e7a77 +585157464b4a536275899aa5b8c8d1d0d1d1ccc3cfcbc8cbcfcbc8c4cdc9 +cbcfd1cececec6bdb6b5b6b5ada6a59a8a8b9793898e8c91949293979a99 +a7a7a8a9aaacadaeaeb0b3b5b6b9bec2bcc1c3c3c6cbccc9cbc9c7c8ccd0 +d2d2d0d3d4d0d0d5d3c9badeb4563a4746423f303c42313c483535443a36 +463f34413f3e3e3e3e3e3f3c68baeed7bec4d3d6d8dbd7d0cccfcdccd9d7 +d3d3d6dadde0d7d8dbdadad8d9d7d5d5d3d4dbded7ccd0d3d1cdcdcfcfcc +cfd2d5d7d5d4d3d4ced0d2d6d9dadad8e3d9d7dee2ddd9d8dedcdfe5e7e6 +e6e8eae8e8e7e5e4e4e4eae4e1e1e1dedee0dcdfdfdde0e6e4dee5e6e7e5 +e3e0dfdfe2dde3e6e1e4e9e3e5e6e6e4e2e1e3e5e8e5e2e2e4e8eaebe7e7 +e3dfe1e5e6e0e1e3e6e8eff1eee5e3e1e1e3e5e8e7e6e5eeeee5e1e4e5e0 +e8e2dddee3e7e7e5e0e4e6e4e0dee3e7e8e1dde0e5e4e3e3e4e1e2e4e2de +dfe3e5e6e7e8e8e7e6e3eae7e3dfe2e6e2dbdae1e4e2e4e9e8e3e6e7e7e6 +e4e3e3e4e1e6eae8e3e0e1e4edeae4dfdcdbdbdbd8dee4e7e6e5e6e7e5e3 +e1dfdfe1e3e4e0e3e6e6e5e4e4e5e2e7e7e1dcdddedde1e5e3dddee6ecec +e0e0e1e2e3e3e4e4e1e2e3e4e3e2e0dfe9e7e4e3e3e2dedce5e9ecedebe6 +e3e1e3e4e1dbdbe2e7e8ece9e5e3e2e2e1dfe0e3e6e5e26b68625c5f676c +6c71757b7c6667785f646f6ba7b98586888b878a7b89735b487279c1f5a0 +72a08d949d9e958f8e867c726760677375716c6b61574e48433d3b4a4d52 +58584f413438373533333b4a566b747c7e828a8d8a87838967b0c6c3ab99 +c5decaaca09b93918e88827d7b7c7e7e7e80888e8877674b3b2d282b2c2d +30423b2f2a2c3344546a725212279fc4722b6aaccee5ab5568706169623b +2f3426393f46536576868d9facb3b0adaea79ea4a09da1a4a29c99a19d9c +9e9d9a9799958e878687857d757469585965605659565c5f5d5e62666573 +73757677797a7b7a7c7f8183868b8f8b909595989d9e9a99979697999ea0 +a09da09e9a9a9e9c968fb88d3217272926261a262d1e2a36232130282433 +2c212e2c2b2b2b2b2b2a2a5dafdcbf9b99a09d9a9b9a96989ea2a1a6a29e +a0a5abb0b3adaeaeadaba9a8a8a8a8a6a7adb0a99e9fa2a09c9a9c9c999b +9ea1a3a2a1a0a19d9fa4a8abacacabb6aeacb3b7b2aeadb3b1b4babcbbbb +bfc1c1bfbebcbbb9b9bfb9b3b3b3b0b0b2aeb1b1afb2b8b6b0b7b8b9b7b5 +b2b1b1b7b2b8bbb6b9beb8babbbbb9b7b6b8babbb8b5b5b7bbbdbebabab6 +b2b4b8b9b5b7bbbcbec0c2bbb2b0aeaeb0b4b7b8b7b8c1c1b8b4b7b8b3bb +b5b0b1b6babab8b1b5b7b5b1afb1b5b5aeaaadb0afaeb0b5b4b5b7b3afb0 +b4b3b4b5b6b5b4b3b1bbb8b4b0b3b7b3acabb2b5b3b5bab9b4b7b8b8b7b5 +b4b4b5b2b7bcbab5b2b3b6bebbb5b0adacacaca9afb5b8b7b6b7b8b4b2b0 +aeaeb0b2b3afb2b5b5b4b3b3b4b1b6b6b0abacadacb0b4b2acadb5bbbbaf +afb0b1b2b2b3b3b0b1b2b3b2b1afaeb6b4b3b2b2b1b0aeb7bbbfc0beb9b6 +b4b6b7b4aeaeb5babbbfbcb8b6b5b5b4b2b1b4b7b6b34a453d35373e413f +44474c5039394c343d535ea3b5796451453a423c55483827525eabe29060 +856861605a514f53554e4438333a484a4843433c332a24221c141d1d2633 +3a362b212724201a16192731464f53505152524e4d50624fadd2decab1da +f3dfc0b4afa8a3a09b958e8c8d8d8986898f958e7b6a4c3b2d282928292a +352f2c2a2d3546556e7b622944bdd9833b78bcddf3b963767f727b755147 +4a3b45474f5a6878858998a1a8a19d9b94848276706f6d645b545a56585c +616061635d56515253544f4a4b4133364441393932343733343637354341 +403f40404142414346484a4d525651565a5a5d62636264625e5d60636363 +5e61605e5e65635f5c8b661201182325291c282c18202a1516251e1a2c25 +1a27262525252525252861b3d8b3857671665d5b59565c646d6c716c6869 +6d73777a73747574737170706d6d6b6c72756e6365686662616363606265 +686a696867686365696d707171707f77757c807b77767c7a7d8385848487 +8b8a8988868584848a847f7f7f7c7c7e7a7d7d7b7e84827c83848583817e +7d7d827d838681848983858686848281838584817e7e8084868783837f7b +7d81827e7d808284888a847b797777797c7f807f7f88887f7b7e7f7a827c +77787d81817f7b7f817f7b797c80807975787c7b7a7b7f7d7e807d797a7e +7e7f8081807f7e7c85827e7a7d817d76757c7f7d7f84837e838482817f7e +7c7d7a7f817f7a77777a86837d787574747471777d807f7e7f807c7a7876 +76787a7b777a7d7d7c7b7b7c797e7e7873747574787c7a74757d83837575 +76777878797976777879787775747d7b7978787775737c808485837e7b79 +7b7c7973737a7f8084817d7b7a7a7977797c7f7e7ba59b8d858ea1afb3b8 +b19a9fa49894887d7edade96a0bab8b1bbb9b8ad7c99acaed7ffcf9db4af +c2b9bbbdbec1c0b9af9c9b9fa7acaaa5a5958e837a7572716f7171788086 +82766d57525153555b6b7d96a2a9aaadb6bdbebcb5b08eced1c0afb5b3b0 +a6958680836f706f6b67605b585b59595d666c6f6e675540353433363629 +2e414d4b484b4b536d76585c9ed5de72447ec8d1c88b2f46616f747d7360 +5d3936393d47586b788f9daebac7cfd2d3d0cdc6c1c2c6cacbc9c4c4cacd +cccbcccdc4bcbbbcbbb6b0a89f908e97928b8f8f939493949796939fa1a3 +a7aaacadaeb0b1b3b4b4b7bcc0bfc4c6c7cbd0d2cfcfcccacbced1d3d3cf +d3d5d3d4d7d5cbcecbd0a45235484c3e353e443433403f3b383b3c393a3c +383e3e3e3e3e3e3f3d5290e0ecc4bbcdccd4d7d5d0cccccac8d1d2d0d2d6 +d6d8d7d4d1d0d1d4d5d5cfd4d4d3d3d8dbd7d0d0d3d2cdced0d0cdced2d5 +d7d6d5d6d6cdd0d2d6d9dbdbdae2d9d9dfe2ded9d8dddbdee4e6e4e4e6e9 +e7e5e3e2e2e3e4e6e0dee0e1e0e0e3dee2e2e0e1e5e5e1e6e6e7e5e3e1e0 +e0e2dee3e7e2e5eae4e3e3e3e2e2e2e4e5e7e4e1e0e3e6e8e9e4e8e7e2df +e2e6e5e6e7e8e7ecede9e1e0dfdee0e2e5e4e3e7ebece7e3e3e3e2e5e2e0 +e2e6e8e4e1dbdfe2dfdad6d9dbe2dfdfe1e1dedfe2e6e3e4e6e5e0e0e4e5 +e5e6e7e7e6e4e3e9e6e2dfe2e5e1dad5dbdfdfe2e7e7e3e1e1e2e2e2e2e3 +e4e0e4e9e8e4e1e2e4e8eae9e5dedcdfe3dce0e5e7e5e3e3e4e8e7e6e4e3 +e3e3e3e1e4e6e6e4e1e0e0dee5e8e5e2e3e2dfdee2e2dedee3e4e2dddede +dfe1e2e2e3e1e2e3e4e3e2e0dfe8e5e2e1e2e3e0dfe3e6eaebe9e4e1dfe9 +e9e4dddde4eaece8e7e6e4e3e4e5e6e1e3e6e6e37369594f5768767a7f7b +656c73686760595dbcc0777d9088828c8e8d7f475c7385b7eeab7a908a99 +90908f8d8f8d857a68676c7479777474645c534a44414042484d535a5d59 +4c422c2926292b3242526872797b7d84898a8782846bb6c3bbb0b8b7b2a8 +97857f806c6b6a665f5853515958565b616666645b473026222124292326 +292f312e2e354a64622d1153abc968417cc8d4cc8f33465d646366563f40 +292c2e323a4958647683929ca5adafafaba7a19c9da1a4a3a29c989a9b98 +97989c958d8c8d8c8680776e5e5c6560585d5b5d5e5e5f62615f6b6d6f73 +77797a7b7b7d7f808184898d8e9398999da2a4a09e9b999a9b9fa1a19ba0 +9f9d9ea19d979fa1a77c2d12282f251d292f21202e2d2724272a26272927 +2b2b2b2b2b2b2b2b4685d0d8a796a099999a9895969b9f9d9e9b9b9fa3a7 +a9aaaaa7a3a4a5a6a4a1a6a7a6a6aaada9a29fa2a19c9b9d9d9a9a9ea1a3 +a3a2a3a39c9fa4a8abadadadb5aeaeb4b7b3aeadb2b0b3b9bbb9b9bdc0c0 +bcbab9b9b8b9bbb5b0b2b3b2b2b5b0b4b4b2b3b7b7b3b8b8b9b7b5b3b2b2 +b7b3b8bcb7babfb9b8b8b8b7b7b7b9babab7b4b3b6b9bbbcb7bbbab5b2b5 +b9babcbfbebdbdbeb6aeadacabadb1b4b5b4babebfbab6b6b6b5b8b5b3b5 +b9bbb7b4acb0b3b0aba7a7a9afacacaeaca9aaafb7b6b7b9b6b1b1b5b3b3 +b4b5b4b3b1b0b7b7b3b0b3b6b2aba6acb0b0b3b8b8b4b2b2b3b3b3b3b4b5 +b1b5bbbab6b3b4b6b9bbbab6afadb0b4adb1b6b8b6b4b4b5b7b6b5b3b2b2 +b2b2b0b3b5b5b3b0afafadb4b7b4b1b2b1aeadb1b1adadb2b3b1acadadae +b0b1b1b2b0b1b2b3b2b1afaeb5b2b1b0b1b2b2b1b5b8bdbebcb7b4b2bcbc +b7b0b0b7bdbfbbbab9b7b6b7b8b9b2b4b7b7b4524634292e3d494d524f3b +414a40403d3f4ab1b565616048343a40494e25476273a2d8915c6e606b5c +59545254544c4638383f474e4c4b4b3c372f2623201f1b1a1d27333d3d34 +2f1b17131312162432464e514f4d51505051536157b6d2d9cecbc3bfb5a4 +958f917d7f7e7a746d6863645e5d60676a69655b4630231e1d2021171b25 +2d302d32384b676b403072c1d8734a87d2ddd59a3e526b7473786a525234 +343638414e5c667984919aa3ababa39082776f696a66655f57575a5e5c5d +5f625d5556575856524c453939443f393c36373836373835303c3d3d4142 +44434445444647484b505454595d5e6267696866636160626466645f6163 +616265625d696f7b5812001d29211b282c1b1924211c191e201f20221f25 +252525252424274a8bd0cf957977645d59555358616868696565686c6f71 +71706d6a6b6d6e6c666b6c6b6b6f726e6765686762626464616165686a6a +696a6a6265696d707272727e77777d807c77767b797c82848282858a8986 +848383838486807c7e7f7e7e817c80807e7f83837f84848583817f7e7e82 +7e838782858a84838383828282848583807d7c7f8284858084837e7b7e82 +838284848385867f7776757476797c7d7c818586817d7d7d7c7f7c7a7c80 +827e7b767a7d7a757172747a7777797875767a817f8082807b7b7f7e7e7f +807f7e7c7b82817d7a7d807c7570767a7a7d82827e7e7e7d7d7d7d7c7d79 +7d807f7b78787a8183827e7775787c75797e807e7c7c7d7f7e7d7b7a7a7a +7a787b7d7d7b787777757c7f7c797a797675797975757a7b797273737476 +77777876777879787775747c797776777877767a7d8283817c797781817c +75757c8284807f7e7c7b7c7d7e7a7c7f7f7c9d999394a1afb4b1a1b69e94 +9f8b84899dffe398adb9aea8b6acc9b28e809b8faeffe8a0c9c9abc7bfbc +bdc2c1b4a49999a2adb4afa6a3a8908d857e7a7a7e7f8181858a8c867a71 +54474344464859708c98a2a7a8aeb7bdbab3a78bcccdb5afa7a09b999794 +92949b9c9a97928c87826c69645b544e4d4c574e464748443d3c39373b41 +474b5457434853545262aaffcf4e4596afcac56124333d475a6670785f55 +4a3c32323b445d667990a5b2c0cdd0d3cec3bfc4c7c5ccc8c7cfd3d1cbc8 +cdc4bdbbbcbdbab5ada7999397938e94939494929496928a93969aa0a5a9 +acaeb1b2b2b2b2b4b9bdbcc1c3c5cad0d3d1d0cfcdcdd0d2d3d2cfd2d5d5 +d7d9d6ceddc8dee08e413b4d473d3b413d36384043323d43303744313b3c +3c3e3e4042403e60c2f9d1b7c7c9d1d6d6d1cdcdc9c7cfd2d2d5d9d8d6d4 +d4cec9cad0d3d2ccd1d3d5d2d3d7d9d6d1d4d4d0d0d2d3cfcfd2d5d7d6d6 +d6d7cdd0d3d7dbdddddcdfdadbe1e3dfdad7dbdadde3e5e2e3e4e7e5e3e1 +e0e0e2e2e4dedee0e1dfdfe1e1e4e5e3e2e4e5e3e5e5e5e5e4e2e1e0e5e0 +e5e8e4e7ece7e6e5e4e5e7e8e9e8e5e3e0e0e2e5e6e7e1e8eae4dee1e7e9 +e7e7e6e4e9eae7dfdedddcdee0e2e1e1e8e7e7e8e5e0dfe2e3e2e3e6e9e8 +e2dddde0e2e1dcd9dadcdfe0e3e4e1dbdde2e2e0e3e5e3dddee2e5e5e7e7 +e6e4e3e1e5e6e4e2e4e7e2dbd6dadedfe1e5e6e3dcdcdddfe0e2e3e3dee2 +e7e7e5e2e3e4e1e7ece8e0dde1e8dee1e4e6e5e3e2e2e7e7e6e5e4e2e0df +dee1e4e5e3e1e0e0dce3e9e9e8e8e6e2dde1e3e2e1e1ded9dddddee0e1e2 +e3e4e1e2e3e4e3e2e0dfe6e3dfdfe1e4e3e3e0e4e7e8e6e2dfdeecece6de +dce2eaece7e9e9e7e3e3e6e9e2e4e6e6e568655d5d67747976687f69626f +5e59637feebc6c818f878391839a80594b696188f3c47ea4a4849c918c8b +8e8e817266656d7a817c7372775f5c554e4a4a4e52585b5f63645d52492b +211a1e202233485f6a7477777c8286827e7a67b7c0b2b3a9a39b99979290 +909795939089837d7b6a6861594f484240493e363536332e2d2b2a2c302d +2d3441424844300d197aebca534ca1bcdcd773333e41444e545a64544f41 +3127252a31484f5f7586939fabadb2ada39ea3a5a4a7a19fa3a5a199969c +968f8c8d8e8a857c76686165615c625f60605e60625e576063676d73777a +7a7c7d7d7d7f81868a8b9094969ba1a4a29f9c9a9a9c9e9f9e9b9e9e9fa1 +a3a09aac9bb2b6681e1b302c26272c2a23252e2f1e29311d2633222a2b2b +2b2b2c2b2d2f51b2e6ba999f999a9c9996979c9e9c9a9b9ea2a6aaa8a7a7 +a19c9da2a5a19ea3a7a7a4a5a9a8a5a0a3a29e9ea09f9b9b9ea1a3a3a3a3 +a49c9fa5a9adafafafb2afb0b6b8b4afacb0afb2b8bab7b8bbbebebab8b7 +b7b7b7b9b3b1b3b4b2b2b4b4b7b8b6b5b7b8b6b8b8b8b8b7b5b4b3b7b2b7 +bab6b9beb9b8b7b6b7b9babbbab8b6b3b3b5b8b9bab4bbbdb7b1b4babebd +bfbcbababbb4acabaaa9abafb1b2b2b9b8b8b9b6b1b0b3b4b3b4b7bab9b3 +aeaeb1b3b2adaaa8aaacadb0b1aca6a8afb3b3b4b6b4aeacb0b3b3b4b4b3 +b1aeaeb3b4b2b0b2b5b0a9a4a8acadafb3b4b1adadaeb0b1b3b4b4afb3b9 +b9b7b4b5b6b2b8bdb9b1aeb2b9afb2b5b7b6b4b3b3b6b6b5b4b3b1afaead +b0b3b4b2b0afafabb2b8b8b7b7b5b1acb0b2b1b0b0ada8acacadafb0b1b2 +b3b0b1b2b3b2b1afaeb3b0aeaeb0b3b5b5b2b6babbb9b5b2b1bfbfb9b1af +b5bdbfbabcbcbab6b6b9bcb4b6b8b8b7464037363f4a4d4a3d56413d4b3d +394c74e4ab515c5f4e3f43334c3b272c60617fe0aa5978704d675d5b5a5e +594a372d35414d545148494e37342f2826262a2b2a2a323a403d3830170c +08090b0b1c2e4048504f4c4b4e5051545b57b6d1cfceb6aaa3a19f9d9d9e +a6a7a5a29e98958d756e685e554c4642493e3633322c2726222125292c2d +394440484b3e293690f9d15752a5c2e0db7738444a4d5860666f5c534637 +2d2c30374f57687c8e9ba8aa9a938c7d7576756f7066626667635c59625b +5454575a5955514d403c403e3b3f3a3b3b37393a362c3536383e42464948 +48474747484a4f5353585c5e63696c6a6765636163646564616265636567 +64607264818c44020622211e2027241d1e2426132027161e2c1b23242324 +242323273256b3e0ac817c6b615c565457616765646365696d6f6d6c6c66 +6162676a6763686a6b68696d6d6a65686763636565616265686a6a6a6a6b +62656a6e727474747b78797f817d787579787b8183808183868582807f7f +8080827c7a7c7d7b7b7d7d80817f7e80817f81818181807e7d7c837e8386 +82858a858483828385868786817f7c7c7e8182837d8486807a7d83878384 +828082837d757473727477797a7a818080817e79787b7c7b7c7f82817b76 +787b7d7c7774737577787b7c7872747a7d7c7e807e78777b7e7e7f7f7e7c +7a797e7f7d7b7d807b746f7377787a7e7f7c7979787a7b7d7c7c777b7e7e +7c79797a7a80858179767a81777a7d7f7e7c7b7b7e7e7d7c7b7977767578 +7b7c7a787777737a80807f7f7d7974787a79787875707272737576777879 +76777879787775747a77747476797a7a777b7f807e7a777684847e76747a +82847f81817f7b7b7e81797b7d7d7c92979ea6afb7b4adabac928f93889f +b9fff197a6cdb1b4a8bba5c3938f9b8ea4ffffa29cc9b4afbec1bfc4c7bb +a3938fa4abb2b3a79b999f939493908c8d929593939594928b8079614e3f +3d3a3747607a8a9aa3a3a7b0b7b2b29e7dbfcfb2aba2becabbb0b5b2a7a3 +a19a95939393929190918b7d6b5950413d40484e4c4545534b3e3d495463 +6c71646174754f63adffad465696b9d0bf6b3e454d303b55426763605951 +453b353d3d485e717f95a9b8c8d0cbc6c9c6bec5c2c7d4dbd9d2cccac3bc +babcbdbcbab2b0a3999995919894959393969891878b8d90969ca3a9adaf +b1b1b1b0b2b6b9b9bfc1c3c8d0d4d4d0cecdcdcecfcfced0d0d2d3d6d8d7 +d3dddad6dfd27f3d3c4d463b3a45443835473c3f4136393f3738393c3c40 +4043423a4794e6e4c1becbcfd7d9d4d1d0cbc8cfd3d4d6d9d9d6d3d5d0cc +ccd0d2d4d3ced2d5d1cfd3d9dad3d6d7d3d3d5d5d2d0d2d5d6d4d3d4d5ce +d1d4d9dddfe0dfdedcdee2e4e0dbd6dbdadce2e4e1e1e3e4e3e4e3e2e1e1 +e0e7e1dfe0e0dcdbdce2e5e5e3e1e1e3e4e3e3e2e2e3e2e0dfe3dee3e6e2 +e6ebe7ece9e7e8eaebebe9e5e3e1e1e3e5e6e6e3e8e9e3e0e3e8e8e2e2e1 +e0e5e8e7e0dfdedddfe0e3e1e1e6e1e1e7e5dcdbe0e1e1e3e5e7e5dfdbe0 +e1e3e2e0e0e4e6e2e2e4e7e5dfdfe2e1dfe3e6e3dddde0e6e6e8e8e6e4e3 +e1e4e6e6e4e6e8e4dddddfe0e1e1e2e2e0dedddedfe1e3e3e3dde1e5e6e5 +e4e4e5dee4e9e7e1dddfe3dee0e2e4e4e4e3e3e5e6e7e7e6e3e1dfd9dce1 +e4e4e4e5e6dee4e8e8e8e9e7e3e0e2e3e4e4e2ded9e0e0e1e2e4e5e6e6e1 +e2e3e4e3e2e0dfe4e1dddde0e4e5e6e0e3e6e7e5e2dfdfe6e9e6dedbdfe4 +e6e9ebece7e0dee1e6e3e4e5e6e65c61676c7479776f70745d5e665e7695 +eed0697298818e87997d915c56686682ebe17f77a48c86928f8d8f92876f +605c70767f807468686e626363605c5d6268696b6c6e6b6359523c281a18 +1513233a4e5d6c737272787d777d6f59aac4b2afa4bfcbbcb1b4b0a49f9a +938e8c8a8a8b90918f8677624d42312e2e363d3b36343f3a37342f344458 +726655543f132d88f9ad4a5fa3cce5d7805050522e3248365e5d57504639 +2c24292831445563778a9aacb4afabaca9a0a4a0a2abb1aba29c9c958e8c +8d8e8d8a827f726868645f6660615f5f62645d5357595d636970767a7c7c +7c7c7d7f8386888e929499a1a5a39d9b99999a9b9b9a9c9c9b9c9fa1a09f +ababa8b5a85b1b20322f25263231252030262b2f23283028292a2b2b2c2c +2d2e263484d4d0a89da19d9f9e9b9ba0a19d9a9a9da2a6a8a8a6a8a39f9f +a2a4a3a2a0a6a7a3a1a5a8a9a2a5a5a1a1a3a19e9c9ea1a2a1a0a1a29da0 +a6abafb1b2b2b1b1b3b7b9b5b0abb0afb1b7b9b6b6babbbcbbbab9b8b6b5 +bcb6b2b3b3afaeafb5b8b8b6b4b4b6b7b6b6b5b5b6b5b3b2b5b0b5b8b4b8 +bdb9bebbb9babcbdbdbbb8b6b4b4b6b8b9b9b6bbbcb6b3b6bbbdb8bab7b6 +b6b9b4adacabaaacafb2b2b2b7b2b2b8b6adacb1b2b2b4b6b8b6b0acb1b2 +b4b3b1b1b2b4afafb1b4b0aaaaafb2b2b4b7b4aeabaeb4b4b5b5b3b1aeae +b1b4b4b2b4b6b2ababadaeafafb0b0aeafaeafb0b2b4b4b4aeb2b7b8b7b6 +b6b7afb5bab8b2aeb0b4afb1b3b5b5b5b4b4b4b5b6b6b5b2b0aea8abb0b3 +b3b3b4b5adb3b7b7b7b8b6b2afb1b2b3b3b1ada8afafb0b1b3b4b5b5b0b1 +b2b3b2b1afaeb1aeacacafb3b7b8b2b5b9bab8b5b2b2b9bcb9b1aeb2b7b9 +bcbebfbab3b1b4b9b5b6b7b8b8363b40444a504b46484f3b3e49456085e8 +c7514a62434d4452354a1c294d6483e3ce5f4b6d4f46555a5c6366583d27 +25404a5253493d3f45393b3b3a36373c3f393a3e41423f38352211070603 +031327333c4a4d4946494d4b555349a9d2ccc8b0c3d0c1b6bcbbafadaaa3 +9e9e9d9f9b9895948a7b654f42312b2c3236342f2d38322d2b2e3549596d +635961562c459affb55366abd2eadb8354545633374f3a615f5c534c3d33 +2c32313b4f616f838f8f979e97908e877a79706e75776f645e605a535155 +5859595454493f403c3a413b3c3a3a3d3d362b2f3132383c43494b474646 +4646484c4f50565a5c61696d6b6662606061626260636263636668676570 +7374857e3700081f211a1f2c2b211b281b22251c20292122232323232122 +27283887d2c7947e7768625c585b626766646365696d6e6d6b6d68646467 +69696864696b6765696d6e676a6a6666686764636568696867686963666b +70747677777a7a7c80827e797479787a80827f7f828383838281807f7e85 +7f7b7c7c7877787e81817f7d7d7f807f7f7e7e7f7e7c7b817c8184808489 +858a87858688898987817f7d7d7f8182827f84857f7c7f84867e7f7d7c7e +817d7675747375777a7a7a7f7a7a807e7574797a7a7c7e807e78747b7c7e +7d7b7b7d7f7a7a7c7f7c76767a7c7b7e817e7876797f7f80807e7c7a797c +7f7f7d7f817d767678797a7a7b7b797b7a797a7c7e7c7c767a7c7d7c7b7a +7b777d82807a76787c77797b7d7d7d7c7c7c7d7e7e7d7a78767073787b7b +7b7c7d757b7f7f7f807e7a77797a7b7b79757075757677797a7b7b767778 +79787775747875727275797c7d777a7e7f7d7a77777e817e7673777c7e81 +83847f7876797e7a7b7c7d7d9a9fa6a8aeb4b5b1b1a89d927d94e6ffe27c +97c6babbbab0aeac9b85a993a8ffff9ca5bdaabdbfb6bfc0c3bfaa9694a0 +aeaba7a39a929197979ca0a1a09fa1a499999a9b9a948d89735b44372f2d +395064778d9a9e9fa5aeabb4996da7cfbba9aec9d1b89f9a9183837f7873 +727474716f6f757b7b766b634c433937373839414843393f4e5355556674 +82979866506fe4ff9c4570a2b9c3b26e5f6a59514c2b383d48576261574c +3c35333c454f6376879db3bdc3c9ccc9c2bfc2ccd4d4d2d1cbc6c0bebfc0 +c0bfb6b7ab9e9d99959b92929191959791878887888a9199a2a9abaeafb0 +afb1b4b7bbc0c2c4c9d1d5d7d2d0d0d0d1d2d1d0d5d1cdced1d3d5d6d8e5 +d5d1e5c26f3641483f3740463c3440483d37403c343e38393c3c40404345 +3c426bbff5d7b6c7cad4d8d7d4d2cdcbcfd1cfcfd2d4d2d2d3d4d5d2d1d1 +d6d9ced3d5d0d0d4d9dbd4d8d9d6d7d9d8d4d1d3d4d3d0cfd0d1cfd2d5da +dee0e1e0dddde1e3e3e1dcd7dcdadde2e4e1e1e3e1e2e6e8e7e4e1dfe6e1 +e0e1e1dddbdce3e2e2e1e0dfe1e3e1e0dfe0e2e2e0dde0dbdfe3dee3e9e5 +edece9e8e8e8e8e7e6e4e2e2e4e6e6e5e6e7e5e1e1e6e8e4dfdfdfdde3e5 +e4dde2e1e0e1e3e5e3e3e7e0e1e8e7dedce0e1e0e0e1e1e0dedce2e1dfde +dddfe5e8e5e1e0e4e7e4e0dfe8e6e9edece4e1e3e7e8e9e9e9e7e5e3e4e7 +e8e7e7e9e6e1e3e2e3e4e4e4e3e4e5e3e2e2e5e5e4e2dee0e2e4e4e4e5e5 +e3e4e5e5e3e0dedde1e1e2e3e3e3e1e0e4e6e8e9e9e7e4e2dadde1e3e4e5 +e7e8e5e7e6e3e3e6e6e2e2e0e0e2e4e3e0dee1e2e2e3e4e4e5e5e1e2e3e4 +e3e2e0dfe3e0dcdde0e4e5e6e1e4e6e7e5e3e1e1e0e6e7e2dddedfdfe6e9 +e9e5dedbdee3e4e4e4e4e563686c6d7075767375706863506ac0f0c15967 +918389928d8a84684f75668af0f7777f97829292868b8b8d887562626e7a +767470675f6066666b7171706f71756d6f7072716d67634f3721160d0b18 +2c3c4c616c6c6a6c716d7967488fc5bcafb2ccd4bba29a9181817b746f6e +6e6e6e6e707376756d5f553c31272526272b2e2f30393d34333c4a677371 +7d7a3d1435c3f78f3f72accad6c7816d745a4f46222f343f4e5755483b2b +2220272e38495d6e849aa4abb2b2aea4a0a0a7aca9a5a39d989290909191 +8f86877b6d6c68646a60605f5f63655f56575657596068717677797a7b7c +7e81848a8f93959aa2a6a69e9c99999a9b9a999e9a989a9d9fa1a2a4b3a6 +a6bb9d4d19262f29232d33281f293229252d2b252f292a2b2b2c2d2d2c24 +2c57ade4c49aa39ea0a19e9ea2a39e9b98989b9fa3a4a4a6a7a7a4a0a0a3 +a8a0a5a7a29fa3a8aaa2a6a7a4a3a5a4a09d9fa09f9d9c9d9e9ea1a7acb0 +b2b3b3b0b2b6b8b8b6b1acb1afb2b7b9b6b6bab8bbbdbfbebbb6b4bbb6b3 +b4b4b0aeafb6b5b5b4b3b2b4b6b4b3b2b3b5b5b3b0b2adb1b5b0b5bbb7bf +bebbbabababab9b9b7b5b5b7b9b9b8b9bab8b4b4b9bbb9b5b7b5b3b4b6b1 +aaafaeadaeb2b4b4b4b8b1b2b9b8afadb1b2b1b1b2b2b1afadb3b2b0afae +b0b3b6b2aeadb1b2afabacb6b7babebab2afb1b4b5b6b6b4b2b0b0b1b5b6 +b5b5b7b4afb1b0b1b2b2b2b1b2b6b4b3b3b6b6b5b3afb1b4b6b6b6b7b7b4 +b5b6b6b4b1afaeb2b2b3b4b4b4b2b1b3b5b7b8b8b6b3b1a9acb0b2b3b4b6 +b7b4b6b5b2b2b5b5b1b1afafb1b3b2afadb0b1b1b2b3b3b4b4b0b1b2b3b2 +b1afaeb0adabacafb3b7b8b3b6b9bab8b6b4b4b3b9bab5b0b1b2b2b9bcbc +b8b1aeb1b6b6b6b6b6b73c3f4443474a4d4c504f49493b5ab3e4b846415b +42424d4d4e493120504f82ece85d5a66454e4e445157615f49332f3b4b4a +47433c34353b3b4247494847494b3e3d40444542403f2f1d0b0501011120 +222a3e484742414546574e388fd0d1c5bdd1dbc2a9a49b8c8c89827d7c7c +7c797474787a797061553c2f25211f1f22272b2a2d3133343f4862717786 +864d2d4ed8ffa04d7fb6d2ddcc8570765c5046233035424f5b574d413128 +262e364052616a7d939da1a4a3998a817a7b79726a67615c5755585b5d5e +55574d42433f3c423b3d3c3a3e403a2e2f2e2f313840494b454344454547 +4a4d52575b5d626a6e6e656361616263626168626261646668686a786e71 +8b7127000b191b18272f271c21251e1b26231e2a22232321211f2025242f +59adddb6827f6d66615b5e64676562616062666969696b6c6c6966666a6e +64696b6664686d6f676b6c69696b6a66646667666463646564676c717577 +7878797b7f81817f7a757a787b80827f7f828082858786837f7d847f7c7d +7d7977787f7e7e7d7c7b7d7f7d7c7b7c7e7e7c797e797d817c8187838b8a +87868686868582807e7e808282818283817d7d8284827b7c7b797c7e7a73 +787776777a7c7c7c80797a81807775797a79797a7a7977757d7c7a79787a +7e817d79787c7e7b777781818488857d7a7c7f808181807e7c7b7c808180 +80827f7a7c7b7c7d7d7d7c7d82807d7d80807d7b7779797b7b7b7b7b7c7d +7e7e7c7977767a7a7b7c7c7c7a797b7d7f80807e7b797174787a7b7c7e7f +7c7e7d7a7a7d7d79797777797b7a77757677777879797a7a767778797877 +75747774717275797c7d787b7e7f7d7b7979787e7f7a757677777e81817d +7673767b7b7b7b7b7ca3aab0b5b9bab6aea5a794849aecffe77ba2b6b6b8 +c0c0aeada27d8c989dffffa193b2c4bac3cbbecac6bcab958c97a8a89f95 +9291909196989ca1a5a6a5a3a3a19f9f9c9a958f8a7c684d392d2a323f52 +647c8f97989da4a6b0976284c1c0aea8a5a1988d827f827a777372716d65 +5f5e57505052555553584f47433f3b383c3c3a363a424344463b4f53637a +72636683ffff834c85bab5c69a53426c74646c4c433a39424d5356544b43 +3c36353a425362788ea0b1c2cfd2ccc8c9c9c8cacecac6c2c0c0c0c0bfb9 +bcb0a3a29f999b929493929597938c8c8a88888c939ba2a5a9adb0b0b1b3 +b5b9bdbdbec3cbcfd0d3d4d4d3d4d5d4d2d6d1cccfd2d2d3d6d6dce4d8d0 +dfb6593842473d363a3f3f3a4a3c32443c2e3f393a3c3d3f4043463f484f +95eeeabbbfc5d0d6d6d5d5d0ccd3d4d1d0d3d5d7d6d1d5d8d5d0ced4d8d1 +d4d5d1d1d4d8d9d3d7d9d7d8d9d8d4d0d2d2d1cfcecfd0d2d5d7dce0e1e2 +e1dde0e3e2e2e2ded9dedddfe4e5e3e2e4e1e3e7eae9e6e3e0e2dedee2e3 +e0dee0e4dedcdee0dfe0e2e1dedddfe2e3e0dddfd9dde0dce1e8e5e9e9e9 +e6e3e1e2e3e6e4e3e3e5e6e5e4e8e7e3dfe1e6e6e0e1e1e0dee3e4e1d9e4 +e2e1e2e3e5e3e3e7e4e4e8e9e4e1e0e1e0dfdedededfdfe7e5e2dfdedfe3 +e5e4dddbe0e5e3e0dee6e5e9edece4e0e1e6e7e8e9eae8e7e6e4e7e9e7e7 +e9e8e4e4e1e2e6e7e6e7eaeae7e4e4e7e7e4e1e1e1e1e1e2e3e5e6e7e6e6 +e5e4e2dedce5e4e2e2e2e1dfdcdee0e2e3e3e2e0dfe1e2e3e2e1e2e4e7ea +e9e4dedfe4e5e2e4dedce0e3e2e0e0e1e1e1e1e1e1e2e2e1e2e3e4e3e2e0 +dfe3e0dddee0e4e3e4e2e5e7e7e6e4e3e3dde6eae6e1dfe0dfe1e3e3e1dd +dde0e3e5e3e1e2e3697175787a7b7770696e61556fc6f5c556798682848f +918282764d5d6e7ae9f07f6c8b9d8e969a8c948f84725e576475736a625f +5e5d6065676b72767776747472737372706c69675a472d1a0d0b131e2d3c +5161656261666673633b6ab6c1b5aca9a39c8f8481857a777372706c645e +5f58504b4c4b4643463d35322e2a2a2b24272f332f2b323b334747546d54 +211d4ce7eb693d80bdbfd3a75e4a6d735f64433a313138414748443b312a +2421262e3f4e63798b9dadb6b7afa8a7a4a09fa19c989492919191908a8c +8073726f686a606261606365615a5a5856565a61696e7174787b7d7e8082 +888c8e8f949ca09f9f9d9b9c9d9e9d9b9f9a979a9d9d9ea2a2a8b3aba7b9 +943c1e2a312a22262b2923342620312b1f302a2b2b2c2b2d2c2b212b3983 +dfd9a5a09c9fa09fa0a3a39f9f9b9a9c9fa4a6a8a4a8aaa79f9da1a7a0a6 +a7a3a0a3a7a8a1a5a7a5a4a5a4a09c9e9e9d9c9b9c9da1a4a9aeb2b3b4b4 +b0b5b8b7b7b7b3aeb3b2b4b9bab8b7bbb8bcbec1c0bdb8b5b7b3b1b5b6b3 +b1b3b7b1afb1b3b2b3b5b4b1b0b2b5b6b3b0b1abafb2aeb3bab7bbbbbbb8 +b5b3b4b5b9b7b6b6b8b9b8b7bbbab6b2b4b9b9b5b7b9b6b4b4b5aea6b1af +aeafb2b4b4b4b8b5b5b9bab5b2b1b2b1b0afafafb0b0b8b6b3b0afb0b1b3 +b1aaa8adb0aeababb4b6babebab2aeafb3b4b5b6b5b3b2b1b1b5b7b5b5b7 +b6b2b2afb0b4b5b4b5b8bbb8b5b5b8b8b5b2b2b2b3b3b4b5b7b8b8b7b7b6 +b5b3afadb6b5b3b3b3b2b0adadafb1b2b2b1afaeb0b1b2b1b0b1b3b6b9b8 +b3adaeb3b4b1b3adabafb2b1afafb0b0b0b0b0b0b1b1b0b1b2b3b2b1afae +b0adacadafb3b5b6b4b7babab9b7b6b6b0b9bdb9b4b2b3b2b4b6b6b4b0b0 +b3b6b7b5b3b4b541464b4c4f504e49455046415fbbedbb445b58463b434b +434d49273f5566dadf664b60664f52554756575547352d3948473e353233 +32353a3c40464a4d4a4a4844424242403e3c3d352816080206111513192f +3f423e3c3f42544b2c69bed3c7b8b4afa79b908d8e84817d7a78746c6463 +5c524f4e4c4943463b312b26222123202125292b2932393145495974603c +3b6bffff825494cecbdcaf624c6f715c62443b322f37414748453b312a24 +22272f4050687e909facb2ae9d8f84786d6866605c595759595b5c565b50 +4544413d413b3f3e3d3e403c3537353333373e4646413e42454647494b50 +5456575c64686566646464656667656964636469676869686e7972718867 +1400101c1c1b252d2b1b271b162a241a2b23242322201f1e221f2d3c83dc +d190817067625e5e64686466646263666a6c6d696d6f6c6563686c656a6b +6765686c6d666a6c6a6a6b6a666365656463626364676a6e737778797979 +7e818080807c777c7b7d8283818083808386898885817e807c7a7e7f7c7a +7c807a787a7c7b7c7e7d7a797b7e7f7c797d777b7e7a7f86838787878481 +7f808182807f7f8182818084837f7b7d82827e7d7e7c7a7c7d776f7a7877 +787a7c7c7c807d7d81827d7a797a7978777777787882807d7a797a7c7e7c +7573787c7a77767f808488857d797a7e7f8081817f7e7d7c808280808281 +7d7d7a7b7f807f808387847f7f82827d7a7a7a7878797a7b7c807f7f7e7d +7b77757e7d7b7b7b7a78757577797a7a79777678797a7978797b7e81807b +75767b7c797b7573777a7977777676767676767777767778797877757477 +74727375797a7b797c7f7f7e7c7b7b757e827e79777877797b7b79757578 +7b7c7a78797aaaaaabafb7bcb2a5ae94769ff1ffe882a4bea4c6c0a4caac +aa91858aa1daffab92d6b1a7bdb1c5c9ccc1ad988f93999c9990898b8f92 +939797989a9ea0a09d9aa0a09f9a95918d8985785e41312e2e2e48566c81 +8e9198a0a3a3915c5e9eb7b4a9a7a7a3a19ea1a6a5a19d9b9b978f89827d +71655a504c4a4a494c52514a43424542423e3536445254553d3855646462 +5bbfffea7b75a7bdd2ce7b3346585874726754433a3a3f444e5150483f3a +342e393a43596b7b93a9c2c5cbd0cec9cacfc9c8c5c3c2c1c0bfbabeb2a5 +a7a49c9a939696939294928e908e8d8c8d9093969ea4abb0b1b2b3b4b5b8 +b8b7bbc2c6c7d4d4d6d5d6d7d4d3d5d1cfd4d6d2d1d4d5dae5d9c9dbd5a4 +5540424537333f433c403e3b3e3c37393a3b3d3d3f3f424448484470c7ea +d1bdc3cfd6d8d9d8d3d0d7d8d6d5d8d9dbd9d3d5d7d5d2cfd2d3d4d5d6d2 +d3d6d8d6d0d5d7d6d6d8d6d2ced0d1d1cfd0d2d4d4d7d9dde1e2e2e1dee2 +e4e1e0e1e0dbe1dfe1e6e8e5e4e6e4e4e6e7e7e5e4e3e3dfdfe3e4e1dfe0 +e6dcd7dce2e2e1e1e2dfdde0e4e6e3dfdfd9dde0dce2e9e6e3e7e9e5dfdd +e0e5e5e3e2e2e4e5e4e2e6e8e5e0dee1e3dfe0e1e2e2e6e7e4dbe2e0dfe0 +e1e3e1e0e5e7e8e7e8eae5dee2e2e3e2e2e2e3e4e7e7e6e5e6e5e6e5e1dd +dce0e2e1e1e3e3e2e7ebeae1dcdce4e5e7e9e9e8e7e6e4e8e9e6e6e9eae7 +e6e2e2e7e8e5e6eaeae6e3e3e6e7e4e0e4e2dfdedfe2e5e7e3e5e6e4e0de +dedfe2e0dfe0e3e4e2e0dedfe0e0dfdedcdbe3e2e1dfdddfe3e7eae9e3de +e0e5e6e3e7e0dee4e7e5e1e1e4e4e3e2e1e1e0e0e1e2e3e4e3e2e0dfe3e1 +dfdfe1e3e1e0e2e4e6e7e5e3e3e3dde6ebe7e1e0e1e2e2e1e0dedededfe0 +e5e2dfdfe16f6f6e70787b7165725b4270c6f5c55c768b769a9474927270 +5c5a6885c0f7916eaf897e8f8293929589735f585d6468645b56585c5f63 +6767686b6f71716e6b7272716e6b696767645740241412110f242e41545c +5b5c6061665d354593b9bbafadaaa9a4a1a5aaa8a4a09e9f9b938d867e71 +6051463d3a3835393f40393534342f2a2b2e3239423b453d3d4f461e0c0e +7ae2b6535a97b5d1d07b32414f4c69685d4a392f2f34394144423a312923 +1d2626314759697e94a9a9abaeaaa4a2a59c9a9795949291908b8e827577 +746c69636666636264625e5f5d5c5b5c5f62646a6f767b7e7f8081848789 +888c9397969d9c9b9c9d9e9c9b9d999a9fa29f9e9f9ea4b3ab9fb6b4853c +292c32231f2a2d252a28292b2b282c2d2c2c2c2b2c2b2926282b5db7dbbe +a29ca0a3a1a4a7a7a2a3a09fa1a4a8aaaba7a9a9a7a19ea0a2a3a7a8a4a3 +a6a8a69ea3a3a2a2a4a29e9a9c9d9d9c9d9fa1a3a6abafb3b4b4b4b1b7b9 +b6b5b6b5b0b6b4b6bbbdbab9bdbbbdbdbebebcb9b8b8b4b2b6b7b4b2b3b9 +afaaafb5b5b4b4b5b2b0b3b7b9b6b2b1abafb2aeb4bbb8b5b9bbb7b1afb2 +b7b8b6b5b5b7b8b7b5b9bbb8b3b1b4b6b4b6b9b8b8b7b8b1a8afadacadb0 +b2b2b1b4b6b7b6b7b9b4adb1b1b2b1b1b1b2b3b8b8b7b6b7b6b4b3aeaaa9 +adadacacb0b1b3b8bcb8afaaaab1b2b2b4b4b3b2b1b1b5b6b3b3b6b7b4b3 +afafb4b5b2b3b8bbb7b4b4b7b8b5b1b5b3b1b0b1b4b7b9b4b6b7b5b1afaf +b0b3b1b0b1b4b5b3b1adaeafafaeadabaab2b1b0aeacaeb2b6b9b8b2adaf +b4b5b2b6afadb3b6b4b0b0b3b3b2b1b0b0afafb0b1b2b3b2b1afaeb0aeae +aeb0b2b3b2b4b6b9bab8b6b6b6b0b9bebab4b3b4b5b5b4b3b1b1b1b2b3b7 +b4b1b1b3454342444c51493f503e2c60bdefc351555e425d4d2a4832403a +495e7aafdb6e4a865846513e4e4f544e41322f3742433c31292b2f323539 +393a3d414543423d4141403d393636393b3626120c0f150a0a0b1f333b39 +3a3d3f4947264199c6cdbfbdbbb9b3b0b1b5b1ada7a3a29e948e89827364 +5447403a3834353938312a2b2d292625262937423f463b395150382f38a6 +ffdd7679b1cce3dd853845504c67675c49372d2b30333b3c3931261f1916 +2c323f5769798d9dada59c9386776e6b615e5c5a595a595a575d51454744 +3e3e3d42423f3e403e3a3e3c3b3a3b3e423f3a3940454748494a4c4f5150 +545b5f5c65636365666969686a66686b706a696965687870657f81571409 +15231c1e2f301f1d1d1f2424232625252422201e1d1e24292e5fb7d4af85 +736c646062656a676a6766676a6d6f6f6a6c6d6b6663656768696a666568 +6a6861666766666866646163646463646668696c7074787979797a80827f +7e7f7e797f7d7f84868382858384858686848281817d7b7f807d7b7c8278 +73787e7e7d7d7e7b797c80827f7b7d777b7e7a808784818587837d7b7e83 +817f7e7e8081807e8284817c7a7d7f7d7c7e7e7e7f807a7178767576787a +7a797c7e7f7e7f817c7579797a7979797a7b8282818081807f7e79757478 +7978787b7c7d8286837a75757c7d7e80807f7e7d7c80817e7e81827f7e7a +7a7f807d7e8387837e7e81827d797d7b767576797b7d7c7e7f7d79777778 +7b7978797c7d7b7975767777767573727a79787674767a7e81807a75777c +7d7a7e77757b7e7c78787979787776767575767778797877757477757474 +76787877797b7e7f7d7b7b7b757e837f7978797a7a797876767677787b78 +757577bcac9993a2b3b3a8a288a0ffffa676a9b9bbaca3bdc8aeaa85899c +87eeffb98bbca9bdb9bcd2c6bfb9ad998d96a4a1938c87858b9192949796 +949396999a969193929694949496959087704e3a352d22444e6077868d94 +9e9c9389594683afbbb5cdd3bca8a39d90918c84818386848284898c8474 +6457533e3a3b3f4243474a4a4b514e403c4a5964736b646a6a6e776f62e1 +ffd4726da5bde2c66c393c4646525e6b6b5d4a3b352b3c4b4e4f4f483a35 +292b3b474c5f7792a0baced6d3d1d4cbcbcac8c7c5c5c4bbbfb5a9acaa9f +9b979a9994919292909393939291908f8f99a0a8afb2b2b4b3b7bbb9b8bb +c2c7c7d1d1d3d3d5d5d3d1d4d1d2dadcd5d1d1d1e4d8ced9d5d2e484473a +4e41373f3c43364348393e47363e3d3d3e3f3f414350463f589be2e7c2c2 +ced9dbdbddd7d4d4d6d4d4d7d7d8d5d7d6d6d5d6d3d2cfd5d6d6d3d5d8d7 +d4cdd2d5d4d4d5d4cfccced0d0d0d2d6d7d6d6dadde0e1e1e0dce3e5e0df +e1e1dce4e1e3e8e9e6e5e7e5e4e4e3e3e3e5e6e7e2e2e5e4e0dcdde7dbd5 +dbe4e5e2e2e4e0dfe1e6e8e5e1e0dadde0dde2eae7e0e6eae7dfdde2e9e4 +e2e1e1e3e3e2e0e3e9e9e1dbdce0e2dde0e2e6ebece8e1dfdedcdddee0e0 +dfe0e6e6e2e4e9e4d9e0e2e5e6e5e5e5e3dfe0e3e7e9e8e7e4dfdfe1e3e1 +e0e4ebe5e4e9eeece3dedee0e3e5e6e7e7e6e5e3e5e7e3e3e6e9e7e9e3e3 +e5e5e0e1e4e8e3e0e1e5e6e3dfe7e3dedcdee1e5e7dce2e6e2dbd7dbe1da +d9dce0e6eaebeae7e7e7e6e4e2e1e0e0dfdddbdbdfe5eae9e8e3dfe2e7e7 +e3ebe4e3eaede8e2e1e8e7e6e5e3e2e1e1e1e2e3e4e3e2e0dfe3e1e0e0e2 +e2dfdde1e3e5e5e4e3e2e3dde5e9e4dddee1e4e8e4e1dedededcdbe5e1de +dddf76634f4956676861604b68d8ee7e508086887f7a9599776f4b577668 +d3f998699681948f8ea2938a83766157616f6c5e585351585e6163666565 +64676a6b676564666868686a6e6f6b654e2f1c1811052126364a5557595f +5d5a57322a74acbcb6ced5bfaba9a39798908984878785838387877e6955 +47412a27262c2f32363c3b3835363b3d4046495e6d6d6650342c1a0c8fe5 +a2505697b3dec4692f2f3a3a48546161523f302b1e2f3d404141382c2519 +1b2a353a4a6178869db1b6b2afb1a2a19e9d9c9a98978c9083777a786c68 +666a69646162615f62626261605f5e5d666c747c7f808181868a8a8a8d94 +96949a99989a9c9c9b999c999da5a7a19c9c9aada49dacadabc3652b2037 +2d242b282c202d34262b36272d2c2c2c2b2b2b282f2727468fd4d4a89ea2 +a5a6a8abaaa5a09e9da0a3a6a7a7abaaa8a7a5a2a09ea5a8a8a5a5a8a7a4 +9ba0a1a0a0a1a09b989a9c9d9d9fa3a6a5a8acb0b3b4b4b3b1b8bab5b4b6 +b6b1b7b6b8bdbebbbabebebdbbbababababbbcb7b5b8b7b3afb0baaea8ae +b7b8b5b5b7b3b2b4b9bbb8b4b2acafb2afb4bcb9b2b8bcb9b1afb4bbb7b5 +b4b4b6b6b5b3b6bcbcb4aeafb3b5b3b6b8b9bcbdb7aeacaba9aaadafafae +afb5b5b1b3b8b3a8afb1b4b5b4b4b4b4b0b1b4b8bab9b5b2adacaeb0aeab +afb8b3b5babfbab1acacaeb0b2b3b4b4b3b2b0b3b4b1b0b4b6b5b6b1b0b4 +b2afaeb3b9b4b1b2b6b7b4b0b8b4b0aeb0b3b7b9adb3b7b3aca8acb2abaa +abafb5b9bab9b6b6b6b5b3b1b0afafaeacaaaaaeb4b9b8b7b2aeb1b6b6b2 +bab3b2b9bcb7b1b0b7b6b5b4b2b1b0b0b0b1b2b3b2b1afaeb2b0afafb1b1 +b1afb3b5b8b8b7b6b5b6b0b8bcb7b0b1b4b7bbb7b4b1b1b1afaeb7b3b0af +b154402c2432454843463657c9e172476c5b51463c50533637233e6d65cc +e6773c674e5e5350605148433d2e29394d4d3f332b292d3336383b3a3938 +3b3e3d39363637373737383d404140321a111210000d0c1d2d3535373c3a +3c3e212677b7cecae3ead2bcb7afa1a0998f898a8b8785888c8b826d5848 +412923212528282c313434343435353e484e636a6a675b4a4b443bbfffc8 +7173b0cbefd17237363e3c4753605f503b2a221626343536342b23282428 +3a454a596e818997a19d938a8774716d6a67635f5e545a4e4449473d3d3e +44433e3d3e403e414242413f3e3e38373a42474a4b4c4c4e52524f52595c +5b61606063676768666b686b73756f686661746a62717274903906052522 +202d2a2615222b1f252f202624242220201e1d2a2527468fd1cd977e756c +64666c6f6d67656466696b6c6b6e6d6c6b6a676563676a6a67676a69665e +636564646564615f61636464666a6c6b6d71757879797a7a81837e7d7f7f +7a807f818687848386858483828282838485807e81807c78798377717780 +817e7e807c7b7d8284817d7e787b7e7b8088857e8488857d7b8087807e7d +7d7f7f7e7c7f85857d77787c7e797c7e8084857f77757472737577777677 +7d7d797b807b7077797c7d7c7c7c7c7a7b7e828483807d7877797b79777b +837e7f8489857c7777797b7d7e7f7f7e7d7b7e7f7c7b7f8180817c7b7c7d +77777b837e7b7a807f7c78807c757375787b7e757b7f7b7470747a737273 +777d8182817e7e7e7d7b7978777776747272767c81807f7a76797e7e7a82 +7b7a81847f79787d7c7b7a78777676767778797877757478767575777776 +74787a7d7d7c7b7a7b757d817c7576797c807c7976767674737b77747375 +c59f8b9ba59b9dada091f4eb9998a6c0baa7bbb6b0bba085898f93e7ffcb +95bcb3b5b6b3b7bdc1c2a89594a09e98938a8386898a8e9497978f929493 +939293939899989495999b9991857c6a4c38322c3343586a798895999296 +874d405f7eb7c6c0af9a8f8b83746d69656362626161616163686c6c6661 +514d48403d3b3d3d43434544404146495158626f7e8993a0726c88ebffad +5a79aac5d7ba7e5c50443f45454b5c5f5a5a3d37343741494c4b3e39322e +3037414a5e6f889fb0bfcbd5d1cac1c2c4c6c7c8bebebcbbb9b7b1aa9e9a +97999d9d98939796959492908f8f898f99a4abaeb0b0b7b4b6babab8bfc8 +c6cfd5d2d2d6d6d1d5d4d6dad9d3d6d8d7d9dcdad9d9dbdddb72473b3c4c +3c31483d3b46463b3d483f3d3e3f3f4041444a4e3c4572ccfcc1c2c8dbe6 +dedbd9d4d8d8d4d4dee3e0d5dadbd8d2d5dad8d0d3d3d5d3d2d1d4d7d6d9 +d8d3d0d1cfcbc7cdd1d0d0d2d3cfd7d7dbdedfe0e0dfe4e4e1dfe0e4e0d9 +dbe0e2dee1e7e9e5e9e2e1e5e5e0dfe2e8e6dfe0eae6dfe3e6e5e0dadce4 +e5e0e1e2e1e3ecf3ecdfdfe7e9e3e0e6ebede8e2e1e8e7dfe1eae8e6e4e3 +e4e4e3e2e7e3e1e3e3e2e5e9dfe2e5e5e5e6eaf0e4dcd6d9dee1e5e8e1e7 +eae7e6e8e3dbdde1e4e2e1e2ded9dedee1e4e7e6e5e2e2e3e0dddcdfe3e7 +e6dfdfe5e9e3dcd8e1e3e2e4eaede7dde6e2e1dfe4e5e9e7f1e4e2e8eee7 +e7e8e1dddcdee3e5e2dedfe2e2dedde3e7e8dfe0dde0e6dfdce6dcdbdfe6 +e8e7e8ebebe5e5eae8e0e2eae5dfe3e6dcdae2e3e5e6e7e5e2e2e5e9dee0 +e3e5e6e6e7e7e4e1e0e1dfdddfe5ebe5e2e4e6e3e1e1e3e3e2e1e1e3e8ec +dfe7eae6e4e5e4dfe1e3e6e7e5e1dbd8e4e8eae7e1dddde0e4e6e7e6e468 +402a38403a4057524bb6b3676978938b798d88828f725860686ec2f5a164 +8b888d8d8a8b8f93917762606b6a635e554e5154585c6265675f63656666 +6667686f706d68666a6c6a645b55472c1b1610111d2e3d4a5660645d665b +2823496eacbebbac999091897d767069635f5c59575758585b5d59524b3c +38302c29292b2c32313030353738393e475969737877702811299ae3934b +6da0c0daba734e493d363c3c4352554f4f322c272a323a3d3c312b241e1d +232b3144556e8697a6b3bbb0a69c9c9fa0a09e928d8986847f78736d6b68 +696d6d676264636262605e5d5e585f69747b7e7e7e858385898a888d968f +989c9b9b9f9f9a9d9c9ea2a19e9ea3a4a7a8a8a7a8acb2b34c261f26392a +1f3326242f2f24263428292a2b2b2c2d2b2d3128386ac2eca79c9ba7b0ab +a9aaa4a3a09da0aab2afa7aeafaaa4a4a9a69fa2a5a7a5a1a0a3a6a4a7a4 +9f9c9d9b97949a9e9d9da1a2a0aaadb1b4b7b8b8b7bbbbb8b4b5b7b3acac +b3b5b3b6bec0bec2bbb8bcbcb7b4b7bdbbb2b3bdb9b2b6b9b8b3adafb7b8 +b3b4b5b4b6bfc6bfb2b0b8bab4b1b7bdbfbab4b6bdbcb4b6bfbab8b6b5b6 +b6b5b4b9b5b3b5b5b4b7bcb2b5b8b8b7b8bcbfb3aba5a8abaeb2b7b0b8bb +b8b7b9b4acaeb2b5b3b2b3afaaafb1b4b7bab9b6b3b3b2afacabacb0b4b5 +b0b0b6bab4ada9b2b2b1b3b9bcb6abb4b3afb0b2b6b8b8c0b5b1babdb9b6 +bab2aeadb0b4b7b4b0b1b4b4b0afb5b9bab0b1aeb1b7b0abb5abaaacb3b5 +b4b5b8b8b2b2b7b5adafb7b2acb0b3a9a7afb0b4b5b6b4b1b1b4b8adafb2 +b4b5b5b6b6b6b3b2b3b1afb1b7bdb7b4b6b8b5b3b3b5b5b4b3b3b5babeb1 +b9bcb8b6b7b6b1b3b5b8b9b7b3adaab6babcb9b3afafb2b6b8b9b8b6572e +17252e292f48463fa9a2504d576a573e514a4452402f445765b9e6894360 +51504f4a4c5155563d2d314345433f362e2f3233373d403f37393b3c3c39 +3a3b4344403b383c3e3e3b35342b170b0a0508121e282c33383a35424016 +1d4c79bdd3d1c1aba29f95867d78726b686664605f5d5e62625d544d3b35 +2c25221f21222b2f2f2f3336383c424d5c6d79828586493a55c3ffae6285 +b8d4e9c6815b5144393d3d4151534d4b2e2621222b3336352b28231f1f25 +2e3547566d82929fa9ae9d8e7f78736f69625552505052504d4a42413e41 +47494642454443413d3b38362d313b444b4d4d4b504b4b4e4c4a50595660 +6563656969646a696b6f6e6a6b6d6b6c6e6b6a6d747d822507091832281f +2e1e1c27271c1e2b2022232424252626292d213067c1efa88f7c7570696a +76736d6764667077746b71726e68696e6b6467696b696665686b696c6a65 +6263615d5b63676666696a687173777a7c7d7d7c8383807d7e807c75767c +7e7c7f86888589828084847f7d8086847b7c86827b7f82817c767880817c +7d7e7d7f888f887b7c8486807d83898b86808188877f818a868482818282 +818085817f8181808385797a7d7d7c7d818579716b6e7275797f78828582 +81837e76787c7f7d7c7d797477787b7e81807e7b7b7a77747375797d7d78 +787e827c75717a7a797b81847e767f7f7a7a7d808080887d797f857e7c7f +7a7675757c7c797576797975747a7e7f787976797f78737d7372757c7e7d +7e817f79797e7c74767e7973777a706e76777a7b7c7a77777a7e7375787a +7b7b7c7c7b7877787674767c827c797b7d7a78787a7a7978787a7f83767e +817d7b7c7b76787a7d7e7c78726f7b7f817e787474777b7d7e7d7b9e999a +a2a9a69a8e89cddab4b4b8abb1bca3b4bab0a38b8d8e93daffd09bbabfbd +bab7b5babdb8b0998c939e9991908d888a8a8c8f9292928e929598999896 +959496969394999d99978c87795c46392c2a384a5d72818e938e93804738 +4c608eb1b5af9c8e8d908e96949595928c837d766b5d5552545455545352 +504d4844413e3e3e3d3e4042414746464b5766768987876e9bfff5936290 +acced3ac7159675a533e333f4b5053595347362c2e3b464a49483d332e35 +3d444d5b6a7d93aabbc6ced0cbc1bdc1c6bebdbbbabebcb8b2aaa19a9899 +9997949897969594939292949495989ea5abafb1b0b3b9bbbac0c8c4cbd0 +d0d1d5d5d2d8d7d9dcdbd8d8dad5d7dadbd9dadcddd9cd633f473a483840 +40404343414143404040413f404143474c3d405eb0f0d4c3c6d6e0dad7d6 +d0d9d7d2d1dbe1dfd5d8dad8d3d4d7d7d1d2d0d1d0d1d1d3d5d4d8dad5d2 +d3d3d2cdd1d1cdccd1d2d2d8d8dadedfdfdfdee2e2e0dde2e4e1dadfe3e4 +e0e3e8e9e6eae4e3e6e6e2e1e3e2e1dbdde7e4dee4e0e2e0dddfe4e3dde3 +e3e1e0e6ebe6dce6ecebe4dfe3e6e7eae5e3e9e6dedee6e8e5e3e2e3e3e2 +e1e3dfdee1e2e1e4e9dddfe1e2e3e4e6e7e2dcd9dde2e3e3e3e1e1e2e0df +dfddd9dde2e5e4e5e8e7e4dcdddfe1e3e2e2e0e1dfdfdddde0e5e8e6dfdd +e2e6e3dfdddae5eceae6e7e9eae5e3e0dfe1e3e4e4e8e1dee2e6e6e4e4e3 +e0dee0e4e5e2dee0e5e5e1e0e2e3e1e4eee9e1e5e6e2e1e0dfe1e6e7e3e1 +e3e6e4e5e6e4e1e3e7e6dee3e7dfdee4e3e1e3e4e4e2e2e5e8e2e2e2e1e1 +e2e5e6dddde0e4e3dedde1e4e0e0e5e7e3e0dfe2e2e2e0dfe1e5e9dde5ea +e8e6e6e2dddee0e2e4e4e1dedbe2e5e8e8e4e0dedde3e5e6e5e3332d2930 +37352f2b307e9475787d717b8a7583887f745e646a6fb6e8a36a848b8f91 +8e8c8e918b836a5c606a645c5b585355585a5d6062625e62686b6c6b6b6c +6d6f6c6665696a68665f5c523a281e100912223444535d625e6759241932 +4a7ca4aca7988d9096979d9b98938c827770695e50464141403f3f3e3d3b +393532302b2b2a2b2c2e2f313736373c4857676a4d380f45c4d1815a88a7 +cbd0a5695361544a352a354144484e4839281d1f2c393d3f392e20191d23 +2a334254677f97a5a8adafa89e9a9b9f948f8a8786847d7977726b696969 +66636564646362616061656566696e757b807f7f828889888e968d949999 +9a9e9e9ba09fa1a4a3a0a0a5a2a6a8a7a6a6a8acaba23f202d2637262b29 +292a2a28282a2727292a2a2b2c2b29302b3457a7e0ba9d99a3ada7a5a6a0 +a29f9b9da7b0aea7acaeaaa5a3a6a5a0a1a2a3a2a0a0a2a4a2a6a6a19e9f +9f9e9a9e9e9a9ba0a3a5abaeb2b6b8b8b8b7bbbbb7b4b5b7b2abb0b4b7b5 +b8bfc2bfc3bdbabdbdb9b6b8b7b6aeb0bab7b1b7b3b5b3b0b2b7b6b0b6b6 +b4b3b9beb9afb4babcb5b0b4b8b9bcb7b8bebbb3b5bdbab7b5b4b5b5b4b3 +b5b1b0b3b4b3b6bcb0b2b4b5b5b6b8b9b1aba8acafb0b0b2afb2b3b1b0b0 +aeaaaeb3b6b5b6b9b8b5afb0b2b4b6b5b3b1b2b0aeacacafb2b7b5b0aeb3 +b7b4b0aeabb6bdbbb7b8babbb6b4b1b0b2b4b5b5b9b2b0b4b8b8b6b6b5b2 +b0b2b6b7b4b0b2b7b7b3b2b4b5b3b5bfbab2b6b7b1b0adacaeb3b2aeacae +b3b1b2b3b1aeb0b4b3abb0b4acabb1b0b0b2b3b3b1b1b4b7b1b1b1b0b0b1 +b4b5afafb2b6b5b0afb3b6b2b2b7b9b5b2b1b4b4b4b2b1b3b7bbafb7bcba +b8b8b4afb0b2b4b6b6b3b0adb4b7babab6b2b0afb5b7b8b7b52b2321262d +2d29262c798a645e5b494c553a484b454034445461aadc8e4c605c544f4e +4c4f54504a342b3342423c3c39343637393a3d3e3c383a3f4242413e4042 +46423c393b3d3d3d3839331f100902040f18202a2f343736443c11143556 +8cb8c1bca99d9fa2a0a7a3a19e988d837a7265574b474542413e3b383632 +2e2828252729292c2e31323a393c414f5e6e796558376ce4eb996f9fbdde +e1b578616b584b362b344044464c443625181a2731353532271a141b222b +3445566a819ba7a6a4a0927e706a665853504e5353514c48443f3f434545 +43464543423f3c3b393b3b3a3d40454b4c4a47484d4c494f59545c616164 +6868656d6c6e71706d6d6f696c6d6b676a6e7479771b041c1b3022262323 +23232121232020232425262727272c212851a8eac39a84746e656675726c +6662636d75736b6f716e69686b6a656666676665656769676b6c67646565 +656367676363686b6c7274777b7d7d7d7c82827f7c7e807c757a7e807e81 +8789868a84828585817f81807f777983807a807c7e7c797b807f797f7f7d +7c82878278818788817c80848588838389867e7f87868381808181807f81 +7d7c7f807f82857777797a7a7b7d7e77716e727677777a7a7c7d7b7a7a78 +74787d807f8083827f7677797b7d7c7b797a78767474777b7f7d78767b7f +7c7876737e85837f80828382807b7a7c7e7d7d817a75797d7d7a7a7a7775 +777b7c7975777c7c7877797a787d87827a7e7f79787675777c7c7876787a +78797a7875777b7a72777b737278777678797977777a7d7777777676777a +7b7474777b7a7574787b77777c7e7a77767979797776787c80747c817f7d +7d79747577797b7b787572797c7f7f7b7775747a7c7d7c7a9298a1a5a69f +968cd6ffcb93bcc8cbc2b9afb6b3ad9a8ca193eeffe29b99c4c0bbbabcbc +bcb7a89897919ba2968d90918b8c8c8d8e8d8b8b8b9094979795918f9294 +949293989b979b9391886f5a46312a303d4f6678878d91978049373d4462 +93aabfbbada7a6a69e999692949798998f877c73685c4e464748494a4a47 +46484a4a4847464444444948494b4b4f535967575f75b2ffe57c659bbad4 +d889485f62676352433e3d3d494f5652463b3432363b4648463e3935292f +384252657989aec2d0cfc8c5c2bfc5c2c0bfc2beb7afb3a99e9898999a99 +98989898979796969b989594969ca5a9aeaeb2b7bababec4c0c7cccdcfd3 +d5d4d9d8dadddcd8d9dbd4d5d9dbdad9d9d9dee3ab5139423d473a41413d +3d43433c3f3f40414142414346493f3b468addeec9c9d3dedad7d5d0d8d6 +d0cfd8dfded6d7dadad5d4d5d6d4d2cecdced1d3d3d3ccd3d6d1cecfd2d3 +d3d4d2cccad1d5d6d9d9dbdfe0e0dfdfe1e1dfdce1e3e0d9e2e5e6e3e4e8 +e8e6e9e5e4e6e6e3e2e3e0dfdadbe3dfd9dfdbdedfdfe1e4e1dce6e7e6e3 +e4e5e2dde6eae9e4e0e2e4e5ede8e6e9e5dedce3e7e5e2e1e1e2e2e1e0dc +dcdfe1e0e3e7dedfe0e2e4e5e4e2e0dbdbe1e6e5e2e0e3dedcdcdbd8d7da +dadee0dfe1e5e6e4e2e2e3e3e3e3e4e4e2e0dfdddee2e8eae7dfdce0e4e3 +e2e2d6e1e9e7e4e5e8e9e6e3dfdedfe1e1e1e2e1dfdee1e6e5e0e4e2e0e2 +e4e5e2dedee4e6e4e2e3e1dee4f5f0e0e3eae6dee0dfe1e6e6e1dedfe0e4 +e5e2e1e3e5e4e6dde1e7e3e2e5e1dee0e2e3e3e3e4e6e5e3e0dedee0e3e5 +e0dfe0e3e2dfe1e6dedcdfe5e7e3dedee2e2e1dfdedfe2e5dce3e9e9e7e5 +e1dcdadbdddfe0dfdedee0e1e3e5e6e3dedae2e4e5e4e221272c2e2d2823 +2072c47845717e827f847d817f75665b746ac7eebb716b908e8e91909090 +8b7a696861686f62585b5c56575a5b5c5b5b5b5b60676a6a6866666b6d6a +65646868666a6667614e3c2a16090d17293a4b575d636c582518232d4e82 +9db4b4aaa6a9aca29d96908e8d8d8c847c706457493b3233343538383837 +373736333231313030353636383b3f4242401f0d1a5bc0cd796296abc7dc +9044575c615a493a3633333e444844372c2525293137393329211d0f151f +2c3c51667391a3b2afa8a49f999d9793908f8b827b81796e686768686766 +666666656564656c696665676e757a7c7d818688888c9289909596989c9e +9da2a1a3a6a5a1a2a6a1a4a7a7a7a5a5a6afb885301d2b2934252d2d2626 +2c2c252828292a2a2b2d2c282d2d2f3f81cdd4a69ca3aaa7a5a5a0a09d99 +9ba4aeada8aaadaca7a3a4a3a3a1a09fa0a0a2a2a299a0a39e9a9b9e9fa0 +a19f9999a0a6a9acafb3b7b9b9b8b8babab6b3b4b6b1aab3b6b9b8b9bfc1 +bfc2bebbbdbdbab7b8b5b4adaeb6b2acb2aeb1b2b2b4b7b4afb9bab9b6b7 +b8b5b0b4b8bab5b1b3b6b7bfbabbbebab3b3bab9b7b4b3b3b4b4b3b2aeae +b1b3b2b5bab1b2b3b5b7b8b5b3afaaaab0b3b2afafb1afadadaca9a8abab +afb1b0b2b6b7b5b5b5b6b6b6b6b5b5b3b1aeacadb1b5b9b6b0adb1b5b4b3 +b3a7b2bab8b5b6b9bab7b4b0afb0b2b2b2b3b2b1b0b3b8b7b2b6b4b2b4b6 +b7b4b0b0b6b8b6b4b5b3b0b5c6c1b1b4bbb5adadacaeb3b1aca9aaadb1b2 +afaeb0b2b1b3aaaeb4b0afb2aeadafb1b2b2b2b3b5b4b2afadadafb2b4b2 +b1b2b5b4b1b3b8b0aeb1b7b9b5b0b0b4b4b3b1b0b1b4b7aeb5bbbbb9b7b3 +aeacadafb1b2b1b0b0b2b3b5b7b8b5b0acb4b6b7b6b41b1f25262522201e +72c372395c615f5452484b464236335556b8e1aa5849685b53515353534e +3f3132303b443d363b3c3637393a39383535353a3e41403e3b3a4044403b +383a3b3b413d41402f22120300070c16212c33373f4c3f151324355a94af +c5c6bbb6b8b8aea8a09b989695958a8274695d4d3f343535343634333030 +302f2e2d2e2d2f2f3636383a3e42484a5238314385e3e78c77acc2dbe89a +526260635b4a3b3432313c4245413227201d212730322d241f1b1016222e +3f53687695a1aaa29185776a69625c5858564e494e483e3a3e4045464545 +454542403f3d423f3a39393d45464745474b4b4b4d5550585d5e60646665 +6c6b6d706f6b6c70686a6c6b68696b6f7b8b6011081d202d202626202026 +261d2020232424252626262921233982d7dda487756e656674706d666162 +6b74736d6f72716c696a6a69676564656668686860676a6561626566696a +686261686e707375787c7e7e7d7d81817e7b7d7f7b747d80828182878886 +89858385858280817e7d76777f7b757b777a7b7b7d807d788283827f8081 +7e79818586817d7f82838b868689857e7d848583807f7f80807f7e7a7a7d +7f7e818378797a7c7e7f7d7b777272787c7b78777c797777767372757579 +7b7a7c80817f7c7c7d7d7d7d7d7d7b79767475797e817e7875797d7c7b7b +6f7a82807d7e818283807a797a7c7a7a7b7a7675787d7b767b7977797b7c +7975757b7d7b797a78757d8e89797c837d757675777c7b76737474787976 +757779787a71757b77767975737577787878797b7a7875737375787a7776 +777a7976787d7573767c7e7a7575797978767576797c737a80807e7c7873 +717274767776757577787a7c7d7a7571797b7c7b79a59d9fa7a29caecbff +ffd9b4b8b8d7c6bdc8bea7a2a19dacb7fff59ca0b4b5bab3bac1bdb2a697 +8ba59ea4a5989195958c8b8a8d8d89868690939495938f8c8a9192939093 +9698969c9697917f6e584033313542586b7c869199794c3c3937485f83ae +c0b9a5918284817b787a7e80817c7b7c7d7769594c46443f3c3b3d41454a +4c4d4c4d4d4e4c50545d6264605c58574967716fbaf4d56e779ec7d2ad6b +344b586a6d61564c3e3538434e575345392f2c2f39474b463f3433313135 +40505b8097adbccdd5cdbcc3c0bfbfc1beb6aeb2aca39d9c9d9e9f989899 +99999999989798999b9c9d9e9fadaeb2b6b9babcbebdc3c8cbced2d5d7d7 +d6d8dbdad6d7d9d4d5d9dbdcdcd8d6e4ccda93464440493d41403c3c4043 +3f40404041414240424847423a386cc6fcd8cfd4dfdcdad8d5d9d7d1cfd6 +deddd9d8dbdcd8d6d5d8d9d2cfcdced4d6d5d3cbd4d8d2cdcdd1d4d3d5d3 +cecdd4d9dadadbdde0e1e1e0dfe0e0dfdce1e3e0dae4e5e5e3e4e5e5e5e7 +e4e3e4e5e4e3e2e3e3dcdbe1dad4dad9dbdddee0e2e1dfe3e6e7e6e3e1df +dde0e3e3e2e2e4e7e9ece9e7e8e5dfdee3e7e4e1dfe0e1e1e1e1dedde0e1 +dfe1e5e3e2e2e6e9eae7e3e0dbdce2e8e6e4e3e5dfdee1dfd9d9dddcdede +dbdce1e2e1e5e5e4e2e1e1e3e5e8e4e1dee0e4e8eae7e0dee2e4e2e1e2dc +dddddfe6ebe6dce4e1dedddee0e1e1e1e6e3dddfe7e6dee2e0e0e1e4e4e2 +e0dae0e4e3e2e5e5e3e0ede9dee2e6e2dfdcdce0e6e9e5e3e5dce5e7e0df +e6e7e2e4dadee6e4e4e5dfe0e1e3e4e4e3e2e2e4e2e0dfe1e3e4e5eae4e0 +dfdee0e8f2dfdddfe4e5e0dedee3e3e2e0dedee0e3dde2e6e7e5e3e1dfda +dbdbdcdddddedee2dfdee0e4e4dfdae1e3e5e4e22f26252a231c3254dedb +7a575f607e767e9084696362627687f1cc737788878b86909491867a695c +766f7172645d60605756585b5b5756566063676866626160676b68656467 +68666d696d6b5c4f3d241510111d2e3f4d58646d53281e1f21334b72a0b5 +b2a2908486807975737575757170706e6759463932302d2a2b2f33363636 +3435363636373b41484e504e48433d222d210c63c5c169728cb8d5b76a2e +46526164584d4234292d35404844362a221f202a343831271a1918181f2c +3c47657a8f9fadb5ab9a9e9a9594948f877f837d736d6b6c6d6d66666767 +6767676867696a6c6d6e6e6f7b7c818587888a8c898c9194979b9ea0a09f +a1a4a39fa0a5a1a4a7a9a8a6a4a3b2a0b06f26282633292c2c28282c2c28 +2929292a2a2b2c2b2a2b302e2f62b5e2b6a6a5adaba8a9a2a19e9a9ba3ad +afababaeaeaaa5a4a5a8a4a19fa0a3a5a4a298a1a59f99999da0a0a2a09b +9ca3aaadadb1b5b8babab9b8b9b9b6b3b4b6b1abb5b6b8b8b9bcbebec0bd +babbbcbbb8b7b8b8afaeb4ada7adacaeb0b1b3b5b4b2b6b9bab9b6b4b2b0 +aeb1b4b3b3b5b9bbbebbbcbdbab4b5bab9b6b3b1b2b3b3b3b3b0afb2b3b1 +b3b7b6b5b5b9bcbdb8b4aeaaaab1b5b3b1b1b6b0afb2b0aaaaaeadafafac +adb2b3b2b8b8b7b5b4b4b4b6b9b5b0adafb3b5b9b6b1afb3b5b3b2b3adae +aeb0b7bcb7adb5b2afaeafb1b2b2b2b7b5afb1b9b8b0b4b2b2b3b6b6b4b2 +acb2b6b5b4b7b7b5b1bebaafb3b7b1aea9a9adb3b4b0aeb0a9b2b4adacb3 +b4afb1a7abb3b1b1b2acafb0b2b3b3b2b1b1b3b1afaeb0b2b3b4bcb6b2b1 +b0b2bac4b1afb1b6b7b2b0b0b5b5b4b2b0b0b2b5afb4b8b9b7b5b3b1acad +adaeafafb0b0b4b1b0b2b6b6b1acb3b5b7b6b42b2220241d193256e1dc78 +504f4860515361543a3739405a73e0ba5d596156554d545954493d2e2440 +3b42453c383e3e3736373a383430303a3d3e3f3c3836363f423e3a38393a +38413f45463c30200e0a07030a18242f3745523e1a161e243c5782afc5c2 +b3a093958e867e7b7a7979757472716a5c4a3d34322d2a2b2c30312d2b2d +2d30303232383d474d514e4a48483446443a8ee5da7f88a4cfe4c1783a4c +546465594e4333292b323d433f31251a1619232e322e251b1a1b1b222e3e +496c7f8f99a2a08f75746b635f5d574f474d49423d404345484345464644 +4442423f3f3e403f403e3e4847494b4c4b4d4f4f54595c5f63666868676b +6c6d676a6c686a6c6c6c68686a7d6f884d0d131728222725212125262223 +21232424252525282724202861bfebb4927972696975736e6762626a7374 +707073736f6b6a6c6e69666465696b6a685f686c6660606467696b696464 +6b727474777a7d7f7f7e7d80807e7b7d7f7b757f80818182848585878482 +8384838180818178777d7670767577797a7c7e7d7b7f8283827f7d7b797b +7e807f7f8185878a878788857f7f8485827f7d7e7f7f7f7f7c7b7e7f7d7f +837f7c7e808584827c79727579807c7c7c807a797c7a7474787779797677 +7c7d7c7f7f7e7c7b7b7c7e817d7875777b7e817e79777b7d7b7a7b757676 +787f847f75817e7978797b7a7a7a7f7a74767e7c74797777787b7b797771 +777b7a797c7c7a798682777b7f79767272767c7e7a787a70797b74737a7b +76786e727a787879737576787979787777797775747678797a817b777675 +777f897674767b7c7775757a7a79777575777a74797d7e7c7a7876717272 +7374747575797675777b7b7671787a7c7b79a09ea1a39fabd3fdf4ba98a5 +a9adc7c9c2c9b6a3a7aab2bee0d1aca3aaaab3afb4bfc1b29e949699b1a5 +a3a29a999d998f8c8b8f8f8a878a97989695929190908f90938f93969795 +9b959792867e6d5340342f36495b717f88906d483c3734393f5d87a6b0a6 +907c7374777873695b525f5a5555585a5b5a545049433e3d3f413b3d4243 +46494b4b4e4d5459636d787d7b857163798dc1ffbd6481b9b4d3bf463c32 +3c4f5b6467594e41342f37434f51483d302a303841454d45382d282d3941 +4c617a91aec6cfcbc4bfbab7b7b8b7b7b4b2ada9a6a4a09f999999999999 +999996979da0a1a09e9da6a8adb1b6babcbdbbc0c4c8ccd0d5d9d6d5d7db +dad6d7d9d5d7dbdddfdddcd7dcd9d4dd8f3c4a41473e3b3e3e3b3f453e3e +3f3f414142434b46453e375babf6e5d4d3dcdedcdcd9d9d9d4d2d8e0e0db +dbdcdddbd8d5d9ddd6d2d1d2d6d8d9d6d4dce0dad2d1d5d7d0d4d5d2d3d9 +dddddcdcdee1e2e2e1e0e0e0dfdce1e4e1dbe3e3e2e2e3e2e2e3e4e3e2e1 +e2e3e2e0e4e4dfdde1dad4dbdbdbdbdcdddee1e4dcdfe4e7e4e0dddededf +dfe1e3e5e7eae8e7e6e7e5e2e2e5e8e4e0dfdfe1e2e1e5e2e1e3e2dfdfe2 +e3e2e5e8ecece9e5e1dbdbe0e5e6e6e8e4e2e3e6e4dfdddee1e3e2dfe1e6 +e8e7e1e1e1dedbdbdfe1efe9e3e0e1e4e8e8e7e2e2e6e6e1dedfe0e0e0e1 +e8ece5dce1dedcdcdee1e3e3e3e7e5dedde4e3dcdededee0e2e3e2e1dde1 +e3e0e0e4e6e5e3e6e1e0e4dedae1dddce1e8ebe9e8eadce5e8e2e1e7e7e2 +e3d9dce4e2e2e3dde5e5e5e5e5e3e0dee1e0e0e3e6e8e7e5e9e4e0dfdee0 +e8f1e5e2e2e4e3dedee1e3e4e3e1dfdee0e2dee0e3e5e3e1e0e1e0e0e0df +dfdfdfdfe8e2dddde2e6e4e0e1e3e4e4e22824211f19234e7c79452a393e +425a677888715b5b5f6b7ca69e7e7780818885879294857167686a7f7371 +6f656467635a57595d5d58575a676869686564656665696864646767656c +696c6b635d503823160e13203143515a6646241e1b1c2328487396a39d88 +77707173726d60514755504947484a4846403c36302e2f31322425272b2d +30323436383c444e596269666d56311a236bd0ae6378adb1d5c24a3a2d36 +49525b5d4f4236262128343d423b30211b1d252c30352d20151219252d32 +455f7790a8b0aba19c95918f8f8f8d85817b7773716f6e67676767696969 +69666a6e7172716e6d77797c8085898b8b87898d9195999ea29f9ea0a4a3 +9fa0a5a4a6a9ababaaa6a3a9a9a8b66b1a2a26302b282b2b282a312a2a2b +2b2a2a2b2a2f2a33302d4f9adfc6ada6aeacaaaaa5a2a09d9ea5afb2aeae +afb0aeaaa7a8aca8a5a3a4a8aaa8a5a3abada79f9ea1a39da1a29fa2a8ae +b0afb2b6b9bbbbbab9b9b9b6b3b4b7b2acb4b4b5b7b8b9bbbcbdbcb9b8b9 +bab7b5b9b9b2b0b4ada7aeaeaeaeafb0b1b4b7afb2b7bab7b3b0b1acadb0 +b2b4b6b9bcbab9bbbcbab7b9bcbab6b2b1b1b3b4b3b7b4b3b5b4b1b1b4b8 +b7b7bbbebfbab6b2aca9aeb3b4b4b6b5b3b4b7b5b0aeafb2b4b3b0b2b7b9 +b8b4b4b4b1aeaeb0b2c0bab2afb0b3b5b7b6b3b3b7b7b2afb0b1b1b1b2b9 +bdb6adb2afadadafb2b4b4b4b8b7b0afb6b5aeb0b0b0b2b4b5b4b3afb3b5 +b2b2b6b8b7b4b7b2b1b5afa9b0aaa9aeb5b6b4b3b5a9b2b5afaeb4b4afb0 +a6a9b1afafb0aab4b4b4b4b4b2afadb0afafb2b5b7b6b4bbb6b2b1b0b2ba +c3b7b4b4b6b5b0b0b3b5b6b5b3b1b0b2b4b0b2b5b7b5b3b2b3b2b2b2b1b1 +b1b1b1bab4afafb4b8b6b2b3b5b6b6b427211e1b16234f807e4b2d363430 +434a55624a35373f4f64928b675a5a5351494e595b4a362c2d324a404040 +3b3c413f3837363a3a3531344142403f3c3b3a3c3d403e39383937373e3c +41423d3a2e1b130b00000c192b394350351816181c2630517fa3b4b09d8b +8382817c71615045544f4947494b4a48423e38322f2e302d1c191e212629 +2d2e32333a414d58646b6f7a654a445398f2c5758dc3c4e4d1553f313a4b +555c5e4e4234231e2531393d33281a14171f292d352d2015141a262f3d51 +667a8e9e9e9483766b625b5754514d494644444444464244444445454543 +3e40444544433e3c434344464b4e50504d5054585c6065696665686b6b66 +686c6a6c6e6e6f6b6a6972787b8f4b001515282522252522252a23232424 +222223252c262723244fa4e9c49c7d736d6b77756c6965656c7577737374 +75736f6c6e726d6a68696d6f6e6b6971746e6665686a666a6b686a707677 +76787b7e80807f7e80807e7b7d807c767e7e7e8081818283848381808182 +807e82827b797d76707777777778797a7d80787b8083807c797a797a7c7e +80828588868586878582838686827e7d7d7f807f83807f81807d7d808380 +83848a8886807e767679807f81817f7d7e817f7a78797c7e7d7a7c818382 +7b7b7b787575787a88827a77787b7e7f7e7b7b7f7f7a77787979797a8185 +7e757e7b7777797c7c7c7c807c75747b797275757577797a797874787a77 +777b7d7c7c7f7a797d7771787372777e807e7d7f70797c76757b7b76776d +7078767677717a7a7a7a7a787573767575787b7d7c7a807b777675777f88 +7c79797b7a7575787a7b7a787675777975777a7c7a787778777777767676 +76767f797474797d7b77787a7b7b7994a4aa9ea0bbd9e7cfb6b2b1beb6a0 +b2b8aba0aebebad2e4c8a69eb4aea5b9b1bdbfb6a19092a2afaea19c9c99 +9ea29b948e8c92928d8c9293949291909193958e91929093969895979395 +9086877c674b3b2f323c4a61737d8a65463e3534353c475e7f9fb3bbbaa3 +a2a19f9e99938e7e766a5f5b5856534e4f4f4e4d49474846494948474442 +40444342434a535d626d7973747f81a6d9f8a97d88b4d9cba1543c3f4b3f +41535a5957514338343b424849483e302b32394141403e38322c292c3b4f +627490b2cbd0ccc5bbb4b4b6bdb8bab8b3aea7a09c9a9a9a9b9a9a9a9a99 +9a9d9fa0a1a2a29ea1a6aab1babdbcbabcbfc5c9ccd2d9d7d7d9dcdbd7d8 +dad7d6dadee1e0dedbd9dfdbe8ce6e3844493d3b40403b3d453f3f3f3f41 +4141424b424a433a518ee2efd6cfd8dbdadbd7d9d9d5d4dae0e2dddfdddc +dddcd9dbdddbd8d7d7d9dadbdbd9dfe2dbd3d2d5d5d1d6d8d7d7dcdeddde +dee0e3e3e3e2e1e0e1dfdde3e5e3dce2e0dfe1e2dfdfe2e1e2e2dfe0e3e3 +dee1e2dfdee3ddd9e1dfdcdadbdbdce1e8dfe0e5ebebe6e5e6e1dfdee2e3 +e2e1e4e5e7e6e6e5e5e5e7e9e5e1dfe0e1e2e3e8e4e3e5e4dfdee0e1e1e4 +e7e9e9e9e7e7dfdde0e4e5e6e8e1e5e6e4e3e4e1dddfe2e3e1e4eaedece1 +e3e3e1dddce0e4f2eae3dfe0e3e6e5e7e3e4e7e6e0ddded7e1e8e5e0e0e1 +e1e0dedcdcdfe2e4e4e3e4e3dfdee0e0dddddedfe0e1e1e1e1e1e5e5e1df +e1e3e2e9e8e3e4e7dbd6e0e1dfe1e7e9e6e6e9dee3e6e4e3e4e4e2e2d9dd +e4dfdfe2dee9e7e5e5e4e3dfdde1dfe0e4e8eae8e4dddde0e4e3dfdfe3e7 +e5e4e5e2dedfe3e2e3e3e1dfdfe0e1dddee2e5e4e0dfe1e6e6e5e4e3e2e1 +e1ece5dfdde2e6e6e4dfe1e3e3e11a282818162f4e5e4c373739443c2542 +615e4c5864627b9684696886817c8f8890928974636574817d6f6a6a6469 +6d665f595a60605b5c62636465646364686a646766656467686568676a6a +63665f4a2f1e100f162134464f5f3d21201a1c1d222e476b8ea6afb09b9b +9998958f888373695b504944413e3939393a3b393736302f2e2d2c2c2929 +2d2c2a2e353e484e58696e5934173580cf9d7885acd4d2a953373a453938 +4a504d4b433529252930393c392d1f181d2429292826231d181515243849 +5a7495adb1ada49a929093968b8986817c74706b696868696a6a6a6a6c6d +6e70717272726e72747980898c8a8685888e92959ba2a0a0a2a5a4a0a1a6 +a6a7a9acadada8a5a5acabbba3471324312a282d2d282a322b2b2b2b2a2a +2a292f2937332d437dcbd1b2a5ababaaa8a3a2a2a1a1a7b2b4b0b2b0afb0 +aeabaaafadaba9a9abacaaaaa8aeafa8a09fa1a19ea3a5a4a6abafb0b1b4 +b8bbbcbcbbbab9bab6b4b6b8b4adb3b1b2b6b7b6b8bbbabbb9b6b7bab8b3 +b6b7b2b1b6b0acb4b2afadaeaeafb4bbb2b3b8bebeb9b8b9afadafb3b4b3 +b3b6b7b9bbbbbababcbebbb7b3b1b2b3b4b5bab6b5b7b6b1b0b2b6b6b6b9 +bbbbb9b8b7b0abaeb2b3b4b6b2b6b7b5b4b5b2aeb0b3b4b2b5bbbebdb4b6 +b6b4b0afb1b5c3bbb2aeafb2b3b4b6b4b5b8b7b1aeafa8b2b9b6b1b1b2b2 +b1afadadb0b3b5b5b4b5b5b1b0b2b2afafb0b1b2b3b3b3b3b3b7b7b3b1b3 +b5b4bab9b4b5b8aca5afaeacaeb4b4b1b1b4abb0b3b1b0b1b1afafa6aab1 +acacafabb8b6b4b4b3b2aeacb0aeafb3b7b9b7b3afafb2b6b5b1b1b5b9b7 +b6b7b4b0b1b5b4b5b5b3b1b1b2b3afb0b4b7b6b2b1b3b8b8b7b6b5b4b3b3 +beb7b1afb4b8b8b6b1b3b5b5b319262615142e516554403c3a3f31152c46 +42303d4a4a678271544e645748534a575b523b2a2a3946453a3739383d43 +3e3d37373d3d38363c3d3e3c3b3a3b3e403c3f3f3a383938353a383d3d39 +3d372a1a0e0000030d21333f4f31181813181b25324f769eb8c5c8b0ada8 +a0988d847d6d63564b4543403d383b3b3b3b393732252223222322222127 +262629323b474f5f737468554569aeedb38c98c1e8e2b4593d40493d3b4d +514f4b42322622252c3234322618121a2129292826221c19171d2e404f5d +738fa29d918371645c5b5d5251514e4b4542404143434646464644434344 +46454444423d3e3f41484f524f4c4c4f55595c62696767696c6b67686c6e +6f6f71716e6c696c777b918026000f252422272722242c24242424222222 +242c252924244287d5d3a27f746d6c73716c6a68686e7779757775747573 +70707472706e6e707170706e74766f67666868676c6e6d6e737777787a7d +808181807f80817e7c7f817e777d7b7b7f807e7f828182817e7f82817c7f +807b7a7f79757d7b78767777787d847b7c8187878281827c7a7b7f807f7f +82838586868585868887837f7d7e7f808186828183827d7c7e8181848589 +878884867c7a7b818083837c80817f7e7f7c787a7d7e7c7f8588877b7d7d +7b7776797d8b837a76777a7c7c7e7c7d807f797677707a817e79797a7a7d +7b77777a7d7d7d7c7d7a76757776737475767778787878787c7c7876787a +7982817c7d80746d777775777d7e7b7b7e72777a7877787876766d717873 +7376727e7c7a7a79787472767475797d7f7d797474777b7a76767a7e7c7b +7c7975767a797a7a78767677787475797c7b7776787d7d7c7b7a79787883 +7c7674797d7d7b76787a7a789aa7a8a0aac4cfc7bbbbb9b1c2c0acbaa89a +99b7c3c1e0e4afc5b5afb7b2b8bcbbb3a69897a1aeb2ada3a2a29fa3a69d +978f8b91918c8c948e8f8f8f8f8f90928d919391949797949492958e888b +87725b4a3c37373d4d606d805d4542383a3633343a4d6e91b2c3ada29185 +81868c93938f877f76685a5248484a4c4d4c4c4c545352504d4844424443 +4343423f3e3d473f596c596ba6a8e9efa26da6bfb3d28a5d576449353e42 +46515e5e53423731343d484a433a34312b313b42433c32292c2d35404758 +7b9db9c1c7c7beb7b4b7b8bebbb8b2aaa3a09d9d9c9c9c9c9c9c9c9c9d9e +9f9fa2a29c9fa0a0aab4b7b4b8b8bac1c5c7ced7d6d5d7dbdad6d7d9d7d5 +d8dce1e1e0ddded6e8d6dbbd5c4c424041403f403e3b3e3e3f3f41414242 +48404c453a4777ccf6d7c8d3d8d9dad8d7d9d7d6dce1e2dedfdad9dddedb +dcdddddddcdbdad9dadbdaddddd7d3d3d3d1d6dadbd9d8dcdddcdfdfe1e4 +e4e3e2e1e1e2e0dee4e7e4dee1dedee1e2dfdfe3e1e3e3dfe1e5e4dfe0e2 +dfdfe3dedae3e0dddcdddcdae0e9e6e2e3e9ebe9e9ede4e0dee2e3dfdde0 +e5e7e7e6e5e6e6e7ebe7e2dfe0e2e4e4e7e3e3e5e4e0dfe1dfe1e3e4e4e5 +e9eaede5dfe0e4e3e2e3dfe8e8dedee8e8dedcdfe0dfe1e7e9e7e4e7e9e7 +e2e1e5e9efe7dfdbdde1e4e3e7e3e3e5e4e0e0e3d5dfe6e4e0e0e2e2e3e0 +dddddfe2e3e3e3e1e1e3e2e0e1e5e1e2e3e2e1e0dfdfdfe4e6e3e1e2e2df +e7ede8e2e5e2dde0e1dedfe2e4e1e2e6e0e0e3e6e4dfdee1e4dce0e4dddc +e1e0e9e6e2e1e2e2e0dde4e1dee0e5e8e6e3d9dae0e5e4dddadce3e2e5e7 +e4dfdfe3dfe0e1e0dededfe0d9dbe2e9e8e0dcdee4e4e5e4e4e2e1e0e7e3 +dedcdee0e1e0dcdee0e0de222b261a1e36403a3235362e3e3b243c413d35 +5159597a875c7d787a87858c908e85776968727d817c716f6e6b6f716863 +5a595f5f5a5c645e5f626262626567636767666568696666666b68636966 +54402e1d171213223541563723241d211d17182036587ea0b5a196867a77 +7b8287857e756b5f5141362c2f3134353737383c3c3a3835322d2b2d2f2e +2e2d2c2a2930305d672f19272c98c8a1769eb7b8dc8a5a545f442f35383a +4550504433251f252e37393229211e161c262d2e271d1518182029303f61 +819ca4abaaa09895968d8d8c89827a736f6e6d6c6c6c6c6c6c6f6f707173 +7373746c707171788386818481838a8e9097a09f9ea1a5a4a0a1a5a6a6a7 +aaadadaaa7a7a1b4a6ae912f27282c2d2c2c2d2d2a2b2b2b2b2a2b2a292c +2739342c3863b4d9b5a4aaaca9a7a3a0a2a2a3a9b2b3b1b5b0acb0afacab +aeaeb0afaeabaaabaca9acaca6a0a0a09ea3a7a8a6a6aaaeafb2b4b8bbbd +bcbbbababbb7b5b6b9b5afb2afb0b6b7b6b8bcbabcbab6b8bcb9b4b5b7b1 +b1b5b0acb5b2afaeafaeacb2bbb8b4b5bbbdbbbbbfb2aeafb3b4b0afb2b7 +b9bcbbbabbbdbebdb9b4b1b2b4b6b6b9b5b5b7b6b2b1b3b4b6b7b9b8babb +bcbdb5afb0b1b1afb1b0b9b9afafb9b9afadb0b1b0b2b8bab8b7babcbab5 +b4b6bac0b8aeaaacb0b1b2b6b4b4b6b5b1b1b4a6b0b7b5b1b1b3b3b4b1ae +aeb0b3b4b4b4b2b3b5b4b2b3b7b3b4b5b4b3b2b1b1b1b6b8b5b3b4b4b1b8 +beb9b3b6b3acafaeabacafafacadb1adadb0b3b1acabaeb1a9adb1aaa9ae +adb8b5b1b0b1b1afacb3b0adafb4b7b5b2abacb2b7b6afacaeb5b4b7b9b6 +b1b1b5b1b2b3b2b0b0b1b2abadb4bbbab2aeb0b6b6b7b6b6b4b3b2b9b5b0 +aeb0b2b3b2aeb0b2b2b0232b26171d3544403a3e3e333c34182d302b2542 +4b4c6c784a655952564c4d5157514333303a4347443c3a3c3b40453e3e38 +363a3a35363e38393b3b3b393b3d3b3f403b393a383535373b39363c3b2e +2519090200031225344a2c191c141a181317233e6591b6ccb7aa94827877 +787b7a746b62574b3c32282b2d3033343431322e2e2c2b27252327282929 +2a28292a36375e6d433d5c62c1e5b385b5cecbe894615b654a3338393c45 +4f4f4130211b1e2730322b221d1a1319232a2b241c141a1d252f3643627e +9496958c7a6c666156555655514a45444445444646464846464646474644 +45433b3c3d3b434b4e484b494b5255575e67666565696864656b6e6e6d6f +71716c6b6e6b8278846c0e0d1b2526252627262325252424222020222b23 +2b2421356cc1dda980766f6b72716a6c6c6c727a7b787b76737777747376 +76777675737273747174746e696969676e727371717578787b7d80838483 +82818384817f8285817b7e7b7c8182808185838584808286847f80827d7d +817c78817e7b7a7b7a787e87848081878987878b7f7b7b7f807c7b7e8385 +8786858687888985807d7e80828285818183827e7d7f8183868687878a8a +8d847f7f828080807c83837979838379777a7b7a7c8284827e8183817c7b +7e828880767274787a7a7e7c7c7e7d79797c6e787f7d79797b7b807d7878 +7a7d7c7c7c7a787a7977777b78797a7978777676767b7d7a787979768086 +817b7e7b7477777475787976777b7474777a787372757870747871707574 +7e7b777677777572797673757a7d7b787071777c7b7471737a797c7e7b76 +767a7677787775757677707279807f7773757b7b7c7b7b7978777e7a7573 +757778777375777775a99b96a3b9c9cdcdbdb2b6c0bfbfc6bca5a6a6b6b0 +b8d2b8cad0bab7bdb1b8c1b1a59898a6b2afa4b1abaeada6a7a89f978d88 +8e8d8789929294959593918f8f8d9193919398979492939791898e8b786e +5a4b4139333f505b73544242373a3439383538445f8097c2b097806f6865 +656c6d6c6e6f6d686556524b47454548494545494b4e4f4f4d4b4a49494b +4f53555040363b4056879ac1efdf9074a2c9c7bb654561695d4f383d3c3f +454e514e4839312e37454b443933312f30353c42463b2a2631383c4b637e +97b8cac8beb4b5b5bbbbb9b4ada8a69f9f9f9e9e9e9d9d999ca0a3a3a19e +9ca0a29f9ca3acaeaab6b5b7bec1c3cad4d3d2d4d8d6d3d3d6d7d4d6dae0 +e1e1dedde5d9dddde1bd4a3a44483d3d4541313e3e3f3f41414242443e50 +45394168bcfad7c7d0d7d9dddbd5d6d7d7dce0e0dde0d8d7dbdfdbdbdbdd +dfe0dddad8dadddde0ded9d8d9d7d4dcdfded9d6dbdcdce0e0e2e4e4e4e2 +e1e2e2e1dfe5e8e5dfe1dddde1e3dfdfe4e2e5e4e0e1e6e6e0e3e5e1e0e2 +dbd7e0e0dddddfdedadfe8e5dedadfe2e2e5eae4dfdde2e4dfdde0e6e9e8 +e6e5e5e6e6ebe7e2e0e0e3e4e5e4e1e2e5e4e0dfe2dfe2e5e5e4e5ebeff0 +e9e3e3e5e1dedddfeceadadbebede1dfe3e3e0e1e4e4e2e1e5e8e6e2e0e4 +e8ebe3dbd8dbe0e4e3e8e2e1e2e1e0e3e9e0e0e1e3ebf0ebe1e5e2dfdedf +e1e2e2e5e0e1e8e8e3e5eee5e6e6e4e1dfddddd8dfe5e5e5e6e4e0deeeea +dde2e9e6e0dedadadddfdee1e5e1dde0e7e4dbdae0e5dfe3e6dcdae2e3e7 +e3dfdee0e1e0dfe8e2dddde1e5e4e2dfdedfe2e0dcdce0dddfe4e9e6e0df +e3dddedfdfdddddedfd5d8e2edece1dadadedfe0e1e1dfdedcdfdddad9da +dad9d9d9dbdddddc3323161d2d3b3e3e31292e3935343633303a35413941 +61506d80767c888086918277696977837e73807a7b7a7273746a6359565c +5b5559626264686866646363636768666669686664676d6963696958513e +2d21140c1526314b2e20241c221c1c19191d2d486a85b0a18973635b5958 +5b58555455514a4535312d2927282b2e2d2f31353839383937363436383c +3f413c3136392f1f131551a7cd97739fcccabb62425e6458492f32303137 +3f423c362a221d26343a31261e1c1a1b20272d312818121d2325344a647e +9dafaea39a968b8c8d8b867f797770706f6e6e6e6d6d6c6f737677756f6d +70726f6d717a7c77817e80878a8c939d9c9b9ea2a09d9da2a6a5a5a9acad +aba8a7aea4a9aab08d211d2e312929322e202b2b2b2b2a2b2a2928253a32 +292f54a6dfb9a6acadaba8a39ea1a2a4abb1b3b0b6aeaaaeb0acaaacb0b2 +b3b0aba9abaeacafada8a5a6a4a1a9acaba6a4a9adafb3b5b9bbbdbdbbba +bbbbb8b6b7bab6b0b2aeafb6b8b6b8bdbbbebbb7b8bdbbb5b8bab3b2b4ad +a9b2b2afafb1b0acb1bab7b0acb1b4b4b7bcb2adaeb3b5b0afb2b8bbbdbb +bababdbdbdb9b4b2b2b5b6b7b6b3b4b7b6b2b1b4b3b6b9b9b8b9bdc1c0b9 +b3b3b2aeababb0bdbbabacbcbeb2b0b4b4b1b2b5b5b3b4b8bbb9b5b3b5b9 +bcb4aaa7aaafb1b2b7b3b2b3b2b1b4bab1b1b2b4bcc1bcb2b6b3b0afb0b2 +b3b3b6b1b3babab5b7c0b7b8b8b6b3b1afafaab1b7b7b7b8b6b2afbfbbae +b3bab5afaba7a7aaaaa9acb0aeaaadb4b1a8a7adb2acb0b3a9a7afb0b6b2 +aeadafb0afaeb7b1acacb0b4b3b1b1b0b1b4b2aeaeb2afb1b6bbb8b2b1b5 +afb0b1b1afafb0b1a7aab4bfbeb3acacb0b1b2b3b3b1b0aeb1afacabacac +abababadafafae3322151a2c3a40443a33383f35312e29262e2d3a353d59 +455c675350544547534c453533414b4439484246454043443e3c34313736 +30333c3c3e41413f3d3c3c3b3f3e3b3c3d3a3533363d38343c3b2f332615 +0a01000518253f23161a1318121414182237587f9bc6b4967a63534d484b +47474748453f3a2c2825211f202525212125282d2e3030302f2f3034383e +423e34363a3936424c83cde3a785b4dfdbc76b4b656b5e4d32363231363c +3f3832231b161f2d332d221b1917181d242a2e2416131f282b3a4e657992 +9c9585756a59585959554e4b4b46464746484847474346494c4a48433f40 +413e393e4547404b46484f52535a6463626266646161686e6d6d6e72716d +6a6b756e777d8765030b232920222b2819252524222220202227212d211c +2b5db2e4af857a716f7270686b6c6d73797a777c7471757874727477797a +7773717376747775706e6f6d6a747776716f7477787c7e81838484828184 +8482808386827c7e7a7b8183808186848785818287868083857f7e807975 +7e7e7b7b7d7c787d86837c787d808083887f7a7a7f817c7b7e8487888685 +8587878985807e7e818283827f8083827e7d828285888887888c90908983 +83837f7c7a7c8785757686887c7a7e7e7b7c7f7f7d7b7f82807c7a7d8184 +7c726f72777a7a7f7b7a7b7a797c8279797a7c8489847a827f7a797a7c7b +7b7e79787f7f7a7b847c7d7d7b787674746f767c7c7c7d7b77778783767b +827d77747070737473767a7571747b786f6e747973777a706e76777c7874 +73757675747d777272767a7977767576797773737774767b807d77767a74 +757676747475766c6f798483787171757677787876757376747170717170 +7070727474739598929fc4d0c2c2bab8b8babdbfc2beb6aab4b9b9b7b8c6 +c4c7c3bfc2bab7bca49898a7b5b5b3b5b5b7aea8aca69ea0958d8a919189 +89908d93979895949598949391909090939493939392908b88836f6d685a +46393b415157544b354132383f3c352e3040596a8dadc5b996786a686563 +5e5b5a59626a67635e585653514c4340413c3b3c40424b4b4a4645495156 +585c625a494e6e87a3cfebcc8880b4cccfa833205b635f5f524639333b48 +51554c42352d2d343c413d3d392f292b363f3d3b372e262a36424f6688a8 +c1cbc4babbbeb9b2b0afa9a29da09e999ca2a19c9a999a9a9d9ea0a19b9e +a3a5a6a7a8abadb7bebebbbcc6cfd3d8dad7d6d9d9d6d0d5dbdadcdfe4e3 +dde4e2d8dbe0d0b146413f4348413d453d40434240404448484145444742 +58a2efebcecedcd8dddbdad4d5dadddbdbdcdadbdddedfdcd9d7d8dfe2dc +d9dbdedddfdddddcdbd9d7d4dedcdbdbdddfdedddfe2e3e0dddfe0dee3e2 +e2e2e4e1ddd9e2e4e5e3e1dfdfe0e3e1e7e6e0e5e9e0e1e2e0dcdfe5e1d8 +e4e0dcdde2e5e4e1e1dfdedee0e0dfded8dedfdee1e8e9e5e9e9e8e8e8e7 +e5e5ebeae8e5e4e4e6e7e1e2e2e0dedfe4e8e8e7e7e6e7e7e6e6e4e3e6e8 +e5dddadce5dfe2e4e3e9ede5dce0e2e1e2e6e6e3e4e3e1dfdfe1e4e5e9e8 +e1d8d8e0e6e3e6e6e8e8e5e3e2e3e1e2e8e8e2e8eadfdfdedddee1e3e2e0 +e6e7e8e8e6e6e7e8e3e2e3e6e5e2e3e8e0e3e6e6e3dfdfdfdee8e8dfdbe2 +e7e3dcdad9dce4eae8e3e5dedde1e2dedde1e1e1e1e0dfdfe2e4e3e5e5e4 +e1e2e5e9e4e2dfdddee0e3e5dee0e1e1e0dfe1e2dee5ebeae2dbd8d9e0de +dee0dfdee1e6e1dddde4e6e0dddfdbd9dbe0e1dfdfe2dbe0e0dad7dbdcda +dddfe0dedb2324161e3d4436362f2f313131312f31352f343734353c5561 +70797f86847f88726869788384828482847b757771696c6159585f5f5759 +605d636a6b6867696c68676665636464656767696a686562615150493822 +131217272f2e2917261a1d211e171115264055789bb5aa88695c58504a43 +3e3b383d45403c3733312f2d2c2c2d2b2927282c303838373433373f474a +4e4e4a43341f131d5db8c38f8cb2c7cda6311f585e5856473a2b252c363f +433a30231b1c232b302a2a241a11131e2b2b2b261d1416212b384d6e8fa9 +b4ab9d94928d8684837d767073716c6c72716c6d6e6f6f707274756c7073 +75767879797880878784858f989ca1a4a1a0a3a3a29fa6aaa9a8abaeada7 +aeaba3a7ac9d852627242b322d2a322c2f302e292a2c2f2e282f32353145 +8cd8d0b0aeb5aaa8a4a39fa0a7acacaeb2b0b1b3b4b2afaaa8abb5b8b2ac +aeafaeb0aeacabaaa8a6a3aba9a8a8abadafb0b2b7bab7b6b8b9b7bcbab9 +b9b6b3ada9b2b4b7b8b6b6b7b8bbb9bebdb7bcbeb5b6b7b2aeb1b7b3aab6 +b2aeafb4b7b6b3b3b1b0b0b2b2b1b0a6acb0afb2b9bbb7bbbbbdbdbdbcbc +bcbdbcbab7b6b6b8b9b3b4b4b2b0b1b6babcbdbdbcbbbbbabab5b4b6b8b5 +adaaacb6b0b3b5b4babeb6adb1b3b2b3b7b7b4b7b6b4b2b2b4b5b6bab9b0 +a7a7afb3b2b5b7b9b9b6b4b3b4b2b3b9b9b3b9bbb0b0afaeafb2b4b3b1b7 +b8babab8b8b9bab5b4b5b8b7b4b5bab2b5b8b8b5b1b1b1afb9b9b0acb3b6 +b2a9a7a6a9afb5b3aeb2abaaaeafabaaaeaeaeaeadacacafb1b2b4b4b3b0 +b1b4b8b3b1aeacadafb2b4b0b2b3b3b2b1b3b4b0b7bdbcb4adaaabb2b0b0 +b2b1b0b3b8b3afafb6b8b2afb1adabadb2b3b1b1b4adb2b2aca9adaeacaf +b1b2b0ad232414193a43373936373838322f28282f2a333939373a4d4e54 +524f5048424c3d3735424e4c484a494b4440433f373d3934333a3a32333a +373d43444140424541403c3a3937363736363739373633342d322c1d0a00 +00071923231f0c1b0e12171615131c3353688babc0af876251483d34302c +29272d35312d2823211f1f1d1e1f1e1b1c1d2326313131302f333d44494d +504b453d3e40528ed7d69f9cc7dbdbb13c2761655f5b4b3c2b2429343b3f +362c1f17151c242924241f150d0f1a241f1e1c16141828333e516d8a9da2 +957f6b635e595756504946494742444a494444444444464547463e3f4344 +45444546424a51514e4d57606368686564676566676e726e6e6f706f6972 +736f757d7060111a191f2724232b25282925211f20282d24211e272a4b98 +dec9947f7c6e726e6d696a70747475787677797a79767270727b7e787375 +77767876747372706e6b76747373767879797b80827f7d7f807e85868585 +84817c78818385858382838487858a8983888b828384807c7f8581788480 +7c7d82858481817f7e7e80807f7e73797c7b7e8587838787888888878686 +89888683828284857f80807e7c7d82888b8d8d8c8c8c8b8b8786888a877f +7c7c827a7d7f7e848880777b7d7c7d81817e7e7d7b79797b7d7e8281786f +6f777c7a7d7f81817e7c7b7c7a7b81817b8183787c7b78797c7e7b797f80 +7f7f7d7d7d7e7a797a7d7c797a7f777a7d7d7a76767677818178747b7e7a +72706f72797f7d7879727175767271757575757473737678787a7a797677 +7a7e797774727375787a7577787877767879757c828179726f7077757577 +7675787d7874747b7d7774767270727778767679727777716e7273717476 +777572979690a2c7ccbdbdb7b7b8b9bcbfc0bfb8bbc1bbbdc3b5a4aabdbf +b5c0cbc0ac999ba7b4bcb8b3b2b4b7afa9aca49a9c988f8c92928d8e968e +939595919091949392908f90909393949595959592908b827e796f5d4e41 +3c3a4a4a4a39433639323a3e3b3434414c657fa1b8bca98b706e665f5c5e +616a71777a7a77716861594d4745434445464735383e4244474a4b555561 +68666a73809ea9c1e5c4838fccd4cc85232e4b3d695c5a56483d373a404b +4b483e332e30343b3e41403c342d2835373b3b37322d2b39435a7694aec0 +cec3c3bcb9b9b7aea3a2a29e999ea3a0999e9c9c9c9d9e9f9fa0a3a6a5a3 +a1a1a3abb2b7babbbec3c8cbd1d5d4d4d7d8d4d1d2d4d5d9dfe1dedbddda +d5d8e3e5da934139574436423e4340403f434344434843464647405194e7 +e7ceccd9d8e0e0dbd5d5dadcdbdadcd8d9dbdddfdededcd8dee1dcd9dbde +dde6e2dfdbdadad9d7dfdedddedfe1e1e1dde1e2e0dee0e0dee3e2e3e3e5 +e2dedbdddfe0dfdfdfe0e2e3e1e7e7e1e6ebe2e1e1dfdcdfe4e0d9e4e0dd +dfe3e5e3e0e0dfdfe0e1e1dfdddbe0e0dfe1e6e6e3e6e7e6e7e7e8e6e6ee +eceae6e4e3e4e6e6e5e3e0dddee3e5e6e6e6e6e7e7e7e7e5e1e0e2e2e0e0 +e4e7e0e1e3e1e6ebe4dbdfe0dfe1e7e9e7e6e4e2e1e1e2e5e7ededeae2e0 +e4e8e5e6e6e9e9e8e8e9eae4e3eaeae4e9ece2e2e1e1e1e2e3e3e2e2e4e6 +e6e5e6e8e9e6e4e5e9e9e6e7ebe0e4e6e6e3e0dfe0dce6eae3e0e5e8e3e1 +dedcdce2e6e7e5e3dddbdfe2e0e1e5e2e3e2e1dfdfe1e4e6e7e6e4e0dfe1 +e3e3e2e0dfdfe1e3e4e0e0e0e0e1e1e1e1e0e2e4e4e3e0dddce1dfdfe1e0 +dde0e5e1dddee4e6e2e0e2dddadadedfdddee1dbe0e1dddbdfe0dedcdcdc +dddd27241925424233322e30313232312f302e333630313c373245677473 +818e8474666c78858b87828181847c76776f6566635b5a60605b5e665e63 +686864636568676765646364646468696b6b6b6a6866605d574b38261813 +112326281b291b1e141c211d171927344f6b8da5aa9a7a5f584c403c3b3c +41464c4d4d4a443e373532312f2d2e2f323321262b2f3134383c4a46434e +5e5c43291c2971bec68f8ac0d1cc85212c483862534f473a2b25282e3939 +362c221d1f23282b2c2b241d151424282b2b261e1816222c415d7c97aab3 +9f9c958f8f8d83787775716c6f7470697171717170717373717476757371 +7171767a7f8283878c91949a9e9e9ea1a2a0a0a3a3a2a7ababa8a5a7a39e +a3aeafaa6e221c3b2a202e2b302f2d2d2d2d2c2a2e2a3031342d3e80d2d2 +b4afb4aaa9a7a4a0a2a9adaeb0b2aeafb1b3b2b1afafabb4b7b2acaeafae +b7b3aeaaa9a9a8a6acabaaabadafb2b4b0b6b9b7b7b9b9b7bbbababab7b4 +aeabadafb2b4b4b6b8babbb9bebeb8bdc0b7b6b6b1aeb1b6b2abb6b2afb1 +b5b7b5b2b2b1b1b2b3b3b1afa9aeb1b0b2b7b8b5b8b9bbbcbcbdbdbdc0be +bcb8b6b5b6b8b8b7b5b2afb0b5bababcbcbcbbbbbbbbb6b2b0b2b2b0b0b4 +b8b1b2b4b2b7bcb5acb0b1b0b2b8bab8b9b7b5b4b4b5b6b8bebeb9b1afb3 +b5b4b5b7babab9b9babbb5b4bbbbb5babdb3b3b2b2b2b3b4b4b3b3b5b8b8 +b7b8babbb8b6b7bbbbb8b9bdb2b6b8b8b5b2b1b2adb7bbb4b1b6b7b2aeab +a9a9adb1b2b0b0aaa8acafadaeb2afb0afaeacacaeb1b5b6b5b3afaeb0b2 +b2b1afaeaeb0b2b3b2b2b2b2b3b3b3b3b2b4b6b6b5b2afaeb3b1b1b3b2af +b2b7b3afb0b6b8b4b2b4afacacb0b1afb0b3adb2b3afadb1b2b0aeaeaeaf +af262315213d3f313535373838322f2a2a2b3339373a42382831464a3f4b +55483b3138444f534d4847484b453f433b33383934353b3b363840383d41 +413d3c4043403d3b3939373836393839393b3937393a3a342b1b0c020000 +14181c101c10130a121b1d1b2234425c7696a9a893704f43352b2727292f +33393a38352f28211f2123211f21222728181c24292b2e34374441454f5b +5c51494c5c96d9d59da0d8e2d8912c37513f6958534a3a2b23262a353532 +281b16181c222527262017110b12131b1e1f1f1d1d2c3447607a919fa07f +756e676763594d4c4b4742454a4841484746464647464645464845434041 +4042474c4f505156595c61656262656464686b6b696c6f6d6a676b6a666f +7c808254100c2d1d15252429272623222220232d26221e2326448bdbcd9b +837d6f71726e6a6b71757576787475777979787776727a7d78737577767f +7b76727171706e77767576787a7c7d797f817f7e8080808786868685827d +7a7c7e80818182848687858a8a84898d8483837f7c7f84807984807d7f83 +858380807f7f8081817f7d767b7d7c7e83848184858687878887878c8a88 +84828182848483817e7b7c8187898c8c8c8c8c8c8c888482848482828484 +7b7c7e7c81867f767a7b7a7c828482807e7c7b7b7c7e8086868179777b7e +7c7d7f8282818182837d7c83837d82857b7f7e7c7c7d7e7c7b7b7d7d7d7c +7d7e7f7d7b7c80807d7e82777b7d7d7a777677757f837c797e7f7a777472 +72777b7c7a77716f737674757976777675737375787b7c7b797574767878 +77757474767879777777777878787877797b7b7a77747378767678777477 +7c7874757b7d797779747171757674757872777874727677757373737474 +989292abcac6b7b7b6b5b6b7babdbfbfbcb3b6c4c1aea9aeafc1c2b9c2c7 +b59d9dabbabebcb9b6b3b4b7b1acaea79e9d968d888c8d8a8d958f929290 +8d8c8e919291919190909191919192929292918f8d88827b726554484353 +48463b43383b33383c3c3832302e43506a8fb2bfb29f78716b66615d6066 +848b9195928b898470655c554e49433f414244413e3b3a39383f4f585c63 +6d837c96abd6e1af8fa3c4d6c8673644383d444e5a5950423a37363d4448 +453d322c3032383e433f38302b2d333b3f3e3731322f35465c7699bcd0d2 +c8b9afb0b3b4a9a7a19da1a4a29aa19f9e9d9d9d9e9ea1a3a6a4a19d9d9e +a8abaeb2b8bdbfc0c1c9cfd0d2d6d7d3d2d1d0d0d6ddddd7dddad5d1d5db +e4e7da7043504641473a46413d3e44464441464349484a404881d7e7d1ca +d6d8e1e5dcd7d6dbdddcdbddd8d8d9dadcdcdddcd9dddfdcd8d9dcdceae4 +ddd7d8d8d9d9dcdcdcdddee0e1e2dadfe3e2e1e2e2dfe4e3e4e4e7e4e1dd +dadcdedddfe0e3e6e6e3e9e8e2e6eae1e2e2e1dfe1e5e2dce4e2e0e1e4e5 +e2dedededfe1e3e2dfdcdfe2e1dfe0e4e3e1e4e5e4e5e6e7e7e8efeeece7 +e3e2e3e5e9e8e5e1dedee1e2e4e4e5e6e7e7e8e8e8dfdadcdfe0e4e7e6dd +dee0dce1e7e3dcdedfdde0e7eaeae7e6e4e2e2e4e7e8e7eaebe4dfdfe2e1 +e1e1e3e4e4e6e9ece6e5eaebe6eaede4e4e5e5e4e2e2e3e4dfe1e3e4e4e5 +e8eae7e4e5e9eae7e8ece2e4e6e6e3e1e0e0dae5ebe7e5e7e9e4e3e1dedd +dfe2e5e7e2dddadde1e2e5e9e3e4e4e2e0dfe1e2e5e5e5e3e0dfe0e1e1e1 +e1e0e1e2e3e4e2e0dedfe1e2e0dde2e0dfe1e4e5e3e0e2e0e0e2e0dddee3 +dedbdce0e3e2e1e2e0dcdadcdcdadce0dde1e3e0e0e2e4e3dfdcd9dbde2a +201a2e463f2d2d2f303032323230302e25253434272b3e4f6d7978848974 +606879888c8b88838182847c77797266676159575b5c595d655f6264625f +5e62656666646463646565656566686868676668625c534a3d2b1f1b2d25 +261e291d20171c1f1f1c1817172c3b567b9eae9f8b5e564c463e37353956 +5b6263605c5a5b514c423b37322c282b2c2e2d2a272627272c323a444e53 +4f1b21408ac9ac8397c1d8ca67344133363b434b4b3e302623232a323634 +2c231d1f21252a2c281f1a191d232a2d29211a1b181e2f466084a1b0afa5 +958b8a8c8d7f7c74707275716b747473727272717275777775726f6d6b72 +73767a808587898a9298999ca0a19f9fa09d9da4abaaa4a9a6a19d9ea3ac +b4af4a202f29273126332e2a2c2e302c292e2b3232352c336dc6d5bbaeb3 +aaaaa9a5a2a3a9aeafb0b2afafaeafafafaeafacb2b4b1adaeafafbbb5ae +a8a6a6a7a7a8a8a8a9acaeb2b4acb4bab9babbbbb8bcbbbbbbb9b6b1adaa +acb0b2b4b7bbbebebbc0bfb9bdbfb6b7b7b3b1b3b7b4aeb6b4b2b3b6b7b4 +b0b0b0b1b3b5b4b1aeadb0b2b0b1b5b5b3b6b7b9babbbcbebfc1c0beb9b5 +b4b5b7bbbab7b3b0b0b3b7b8babbbcbdbdbcbcbcb3acaeb1b2b4b7b7aeaf +b1adb2b8b4adafb0aeb1b8bbbbbab9b7b5b5b7b8b9b8bbbab3aeaeafb0b0 +b2b4b5b5b7babdb7b6bbbcb7bbbeb5b5b6b6b5b3b3b4b5b0b2b5b6b6b7ba +bcb9b6b7bbbcb9babeb4b6b8b8b5b3b2b2abb6bcb8b6b8b8b3b0aeabaaaa +adb0b2afaaa7aaaeafb2b6b0b1b1afadacaeafb4b4b4b2afaeafb0b0b0b0 +afb0b1b2b3b4b2b0b1b3b4b2afb4b2b1b3b6b7b5b2b4b2b2b4b2afb0b5b0 +adaeb2b5b4b3b4b2aeacaeaeacaeb2afb3b5b2b2b4b6b5b1aeabadb02b20 +192a413b2b2d33353737342f2a2a2c242a3d3d2e2c3337494c424b503e2a +34465557534e4a46474b4641453e353937312f333431373f393c403e3b3a +3f403f3c3b3a3937383838363738383837383c3b352f271a0d0302181217 +101c12150c11191b1b1b1b1d3440587c9da798804d4138312a2222243f44 +484a45403c3f3c38312a27221e1a1e1f2322211e1d1d1f252e38424d565c +3c4d6cb0dfbf9bafd2e5d7733f4a3a3d40474e4b3e2e25221f262e322d25 +1c1617191e2326201a0d03030c1a23242320232026354962839a9b938975 +6966656455524a46484948414b4a49484747474548484947443e3f3c4342 +45494f52545352595f606064656568686664696e6b656d6a676468707b89 +8f330a1c191a261d2c2723222325201f2e29221d22233879d0d3a4867d6f +72736f6e6e747878797b7777777878787878757b7d7a76777878857f7872 +7171727276767677797b7e80787f848383848481888787878784807c797b +7e7f8183878a8a878c8b85898c838484817f8185827c848280818485827e +7e7e7f8183827f7c7a7d7e7c7d81817f82838485868788898d8c8a858180 +81838786837f7c7c7f848788898a8b8b8b8b8b827b7d808184868378797b +777c827e77797a787b82858581807e7c7c7e80818083827b76767878787a +7c7d7d7f82857f7e83847f83867d8182807f7d7d7c7d787a7a7b7b7c7e80 +7e7b7c80817e7f83797b7d7d7a787777737e84807e80807b797774737477 +7a7c76716e717576797d77787876747375767a7a7a787574757676767675 +767778797977757678797774797776787b7c7a77797777797774757a7572 +73777a797879777371737371737774787a7777797b7a7673707275998e95 +b4ccc3b5b2b5b4b4b7b8bcbebfc3c1c0ccc0aec6e0c4c3c0bfbeada2a4b2 +bdc3bcb6b7b9b5b8bab3adb1aba5a699918a8a89888b9290908e8c8b8b8e +91929293929292929291919191919091908c8b878585847c74767a4f423a +413939413831333b3c352c3035445c7d9cb4c1a28c7163616060617b838f +9494969b9b988c837d7772696254514d47444447493f454c4b4a46475762 +899baccedfbe91acc1d4bf633d5c383a3a414954544e453632303742443f +38322e2c2d353c424533302d2e343b404338302f373c456284b2c4cfc4af +a7adb7ababa8a4a4a4a4a2a2a09f9e9e9e9fa09ea0a4a4a2a0a0a2a4a6a7 +a9aeb3b8bbbcc4ccced1d5d5d1d2d2d3d1d4dadbd9e3dbd7dad9d7d9dee8 +c06f3b4855483f44403e3f4246464445454b494d444272c8e8d4c5d3d5df +e4ded8d7dbdfdddcdedcdbdad8d8d8dad9d9dcdedcdad9dbdce5e0dad6d7 +d8d9d9d6d7d8d9d9dcdedfdadfe4e5e4e5e4e1e5e4e5e6e9e7e4e0dcdee0 +dfe1e3e6e9eae7ebe9e2e5e8dee4e3e3e3e4e6e4e1e4e3e2e3e5e4e1dddc +dcdee1e3e2dedbe1e2e0e0e1e3e3e3e5e5e3e4e5e6e6e7edeeece7e3e1e4 +e7e6e6e5e4e2e1e1e0e1e2e4e6e7e8e9e8ede1dadadee0e2e4e4dadbdeda +dee6e5dfe0dfdcdee5eaeae9e7e5e4e4e5e8eae1e4e7e2dcdbdfe2e0dfe0 +e1e1e4e8ebe7e4e9ebe6e9ece6e6e7e6e4e1e0e2e4e0e2e4e5e4e5e7e9e3 +dfe0e4e7e5e6e8e4e5e6e5e4e2e1e1d9e3e9e7e5e7e9e7e0dedfe0e0dfe3 +e7e3dfdcdcdfe3e7e9e4e5e5e3e1dfe0e1e0e1e1e1e1e1e2e3e0e0e1e1e2 +e3e3e3e3dedbdce0e1ded9e0e1e2e5e6e6e5e3e4e2e2e3e1dcdde1dcdad9 +dbdedededee3dedadad9d8dadfe0e2e4e4e3e3e4e4e4ded9d9de281c1d37 +483c2b2a2e2f313232323130322f2f3c342b4e796d787e82817060667d8b +918b8586878386887e787c766d70645d595958575b626060605e5d5d6265 +6767666565656566646565656565656561605c5a5a5952494d552d231d26 +1e21261d16181f231b1418202f476889a1ad8a725646403b37344d545d61 +6164696e746e655e5b564d453936322d2a2a2d2f272d312e27293439222c +2a4a99c3a783a9c4d6c1633b5931302f323b42423a31231f1d2531353029 +211d191b1e25292d211f1b1b21272b2e221a1921262f4c6c96a7b0a49086 +8b9184817d78757573737575747373737273727475757371706f6e6d6e71 +767b8083858d95979a9f9f9d9fa1a09ea2a8a9a7afa7a3a6a4a0a1a9b894 +471728382e29302e2c2d2e302e2c2d2d3433372e2d5eb8d8c2adafa8a7a9 +a7a5a5acb0b0b1b3b3b2afadabababacaeb1b3b1afaeaeafb6b1aba7a5a6 +a7a7a2a3a4a5a7aaafb1acb4bbbcbdbebdbabdbcbcbdbbb9b4b0acaeb2b4 +b6babec1c2bfc2c0b9bcbdb3b9b8b5b5b6b8b6b3b6b5b4b5b7b6b3afaeae +b0b3b5b4b0adafb0b1b1b2b4b5b5b7b7b8b9babbbdbebfc0beb9b5b3b6b9 +b8b8b7b6b4b3b3b5b8b8babcbdbebdbcc1b5acacb0b2b2b4b5abacafabaf +b7b6b0b1b0adafb6bbbbbcbab8b7b7b8b9bbb2b5b6b1abaaacb1afb0b1b2 +b2b5b9bcb8b5babcb7babdb7b7b8b7b5b2b1b3b5b1b3b6b7b6b7b9bbb5b1 +b2b6b9b7b8bab6b7b8b7b6b4b3b3aab4bab8b6b8b8b6adabacadabaaaeb2 +b0aca9a9acb0b4b6b1b2b2b0aeacadaeafb0b0b0b0b0b1b2afafb0b0b1b2 +b2b2b5b0adaeb2b3b0abb2b3b4b7b8b8b7b5b6b4b4b5b3aeafb3aeacabad +b0b0b0b0b5b0acacabaaacb1b2b4b6b6b5b5b6b6b6b0ababb02a1c1c3343 +36282a3234373733302a2a2f2f34453d314d6a51504a4948392c3349565c +534b4b4c484b4d484248443e423a353131302f353c3a3a3c3a39393f403d +3c3c3b3b3b3b393a383838383838383435312f302f2a262d38140f0f1b15 +171d140f111b1f1a12181f2c4465859ba67e6345342d28231f353a424442 +43484d5a564d49454138332625211e1b1d20221b23282623252e3b334b55 +73b7dcc19abcd3e5ce6f4662393833353b424239301f1b19212a2e292219 +151211161d22210b05050a131e282d251d1c2429324f6a8b979c8f746768 +6c5b57524b494748474b4b4a494848484945474947454342424040414247 +4a4f504f555d5e6163636368696765676d6c6a736b696d6e6a6e7d94772d +001328211e27242223232322222d2b241c2223326ac3d9ae877b6d6e7171 +7070767a797a7c7b7a787674747575777a7c7a78777778807b7571707172 +727071727374777b7d787f858686878683898888898987837f7b7d808183 +868a8d8e8b8e8c85888a808685838384868481848382838584817d7c7c7e +8183827e7b7c7d7d7d7e80818183838384858687888b8c8a85817f828584 +848382807f7f808486888a8b8c8c8b90847b7b7f81828381757679757981 +807a7b7a777980858583817f7e7e7f81837a7d7e79737275797778797a7a +7d8184807d82847f82857f8384817f7c7b7b7d797b7b7c7b7c7d7f7a7677 +7b7e7c7d7f7b7c7d7c7b797878727c82807e80807e767475767574787c77 +73707073777b7d7879797775737475757676767676777875757676777878 +787a757273777875707778797c7d7d7c7a7b79797a787374787371707275 +7575757a757171706f717677797b7b7a7a7b7b7b75707075978e9dbeccc1 +b7b4b5b3b3b6b8b9bcbfb3d1c7b4aabce1dbc1beb6aea89ca5bcbfc4c3ba +b9bdbcb6c0c0b5adb1ada7a9a49c938f8c8b8d918f8f8c8b8b8e91949393 +94949393939398979694939396968b959b9ea1a6a6a2a09b533e3c413935 +40393232373b3a38282d3743536d8fa7cfaf876d615e62686873838a8d8d +9090948f8b8f9597938f827a71675e585252564e43495d5d4c4054597998 +bbe9e6b7a2acc6db9242566755493d373e474e505044362c2e32393c3d3c +36302f31383d444039332f30363b3c353338343141596f91b9c9c7bbaea9 +acacada9a4a0a4a99f9e9d9d9fa0a0a19ea0a5a5a4a2a2a3a1a4a4a2a2a7 +b0b8bac2cacdcfd3d4cfd0d7dbd8d5d8dcdde4d9d5dde1dddde1d6ecb35b +434b47483e4141414143484b44464c4b51494369baebd8c0ced4dce2e1da +d9dde0dedddedfdddbd9d8d9dbdcdbdbdcdcdcdadbdddfdcd9d8d8d9d9db +d4d6d8d8d7dadcdfdbe1e6e7e6e8e7e4e5e5e6e7eae9e6e3dee0e1e0e1e2 +e4e7e8e5eae9e2e6e9e0e3e1e2e3e3e3e2e2e3e2e3e3e4e3e0dedadadcdf +e2e1dddae1e0dee0e1e2e3e5e8e7e4e4e4e4e4e5e9ebebe7e2e1e5e9dee0 +e3e6e7e6e3dedfe0e2e5e8e8e7e7ebe1dbdcdfe0e0e2e5dbdde2dee0e9eb +e2e3e0dbdde3e8e8e9e7e5e4e4e5e8eae3e5e7e4dfdfe5ece4e3e4e4e4e5 +e9ece7e1e6eae4e6eae5e7e6e4e2dfdfe1e2e3e5e6e6e5e5e6e8e0dcdce1 +e5e5e5e6e6e6e5e5e5e4e3e1dbe1e6e5e3e5e9e9dadadde3e4e0e1e6e6e3 +dfdddfe3e6e6e3e4e5e4e1dfdfe0e0e0e0e1e1e2e1e1dedfdfe0e1e2e3e3 +e2ddd9dadededad6dce3eaebe8e4e3e4e4e2e3e4e2dddde1dedddbdadcdf +dfdde7e0dcdbdad8dbe0e3e4e5e6e4e1e1e3e4ded9d9de2417213c45382c +2a2d2e303132323130234238292744768077807f7a7263677e8a93928986 +8b8a848c8c807879756f736f68625e5b5a5d615f5f5e5d5d606568666667 +67686868686b6a6967666667675c656b6e737a7c79797732201f261e1c27 +2019191f2322200f16202c3b587a93bc9d7355453e3d3f3b4551595b5b5e +626b68676a7072706b5e584f443b35322f302c2d32323431283420182f66 +a9bda09fb2c9dd914053604b3e2e292c353a3c3b31231a1d232a2f2f2b24 +1e181b20252d2b241e191a1f24241d1e231f1b2b4457789eafaa9d8f8786 +85827d75727479747473737475757671737676757373726b6b6b69696f78 +80828b9396989c9d9b9da4a8a5a3a6aaacb2a7a2aaaea8a8ada2bb86321f +2a2c312a2d2f2f2d2d30332c2e353238312c55aadcc9aaada7a4a5aaa7a7 +aeb1b1b2b5b6b4b2b0adaeaeafb0b2b3b3b1afaeb0b2afaaa9a9aaaaa9a0 +a2a4a4a5a8adb1adb6bdbebfc1c0bdbdbdbcbdbcbbb6b3aeb0b3b4b5b8bc +bfc0bdc0bfb8bcbdb4b7b5b4b5b5b5b4b4b5b4b5b5b6b5b2b0acacaeb1b4 +b3afacafaeafb1b2b3b5b7bab9b9b9b9b9bbbcbbbdbdb9b4b3b7bbb0b2b5 +b8b9b8b5b3b6b8babdbfbfbebec0b6adaeb1b2b2b4b6acaeb3afb1babcb3 +b4b1acaeb4b9b9bcbab8b7b7b8b9bbb4b6b6b3aeaeb2bbb3b4b5b5b5b6ba +bdb8b2b7bbb5b7bbb6b8b7b5b3b0b0b2b3b4b6b8b8b7b7b8bab2aeaeb3b7 +b7b7b8b8b8b7b7b7b6b5b3acb2b7b6b4b6b8b8a7a7aab0afabacb1b3b0ac +aaacb0b3b3b0b1b2b1aeacacadafafafb0b0b1b0b0adaeaeafb0b1b2b2b4 +afabacb0b0aca8aeb5bcbdbab6b5b6b6b4b5b6b4afafb3b0afadacaeb1b1 +afb9b2aeadacaaadb2b5b6b7b8b6b3b3b5b6b0ababb0291b213a41322928 +2f333636332f2c2a1b3e3a2e2d466e6d5451463e362c364f565b5a4f4d50 +4f4752524a4246444047454039353332373b39393a393b3e42433d3c3d3d +3d3d3d3d42403f3d3c3c3d3b2e353b3e41494c4b505313080f1b17172219 +121215191816080e1a2639557992b6936849392f2d2d262d36393a36393e +4b49474d53575451443f362e25211d1c25221f242c302a24372f3b588dcc +ddbab2c2daec9f4d5c68534231292c35393b382d1f16161c232726231a14 +101016191d18110d0c0f171e201b1b221e1d2d43537395a298857264615c +57504741464b494a49494a4b4a4b47494c4a494747473f40403c3c40494f +4f555d5e60636461666d6f6c686b6f71776c69717772747d7b9a67160717 +1b231f242525222024292c2c251c22253261b7dfb6857a6c696e74727278 +7b7a7b7d7e7c7a7876777778797a7b7b7a7877797b787473737474746e70 +72727275797d79818788888a8986898a8a8b8b8a86837e8082838486898c +8d8a8e8d868a8c838684838484848383848384848584817f7b7b7d808382 +7e7a7c7b7b7d7e7f8183868584848484858687898985807f83877c7e8184 +8584817e828486898b8b8a8a8d837b7c7f8080828276787d797b84867d7e +7b76787e838383817f7e7e7f81837c7e7e7b76767b837b7c7d7d7d7e8285 +807a7f837d7f837e84837f7d7a7a7a7b7c7e7d7d7c7c7c7e777373787c7c +7c7d7d7d7c7c7c7b7a78747a7f7e7c7e8080707073797975767b7a777371 +73777a7a7778797875737374757575767677767673747475767778787974 +70717575716d737a81827f7b7a7b7b797a7b797474787574727173767674 +7e777372716f72777a7b7c7d7b78787a7b757070759692a8c3c7c0bcb5b4 +b4b4b6b8b9bdbebac7b3b8bdbdd1bebac0b09796a5bac8bdbebfc0c3c4be +b6c3c2b6adb0aba4a5aaa399918c8b8b8d8e8d8b8b8c8f92949293949494 +949393999794929394959790a3b3b7b9bcb9b3aba7503b4041383231393f +3c3430353c3a342f30394b6577aabac0a6714a485a5e6e82939a9a9a9894 +92919498999591a19e9690877d716a645c4e4c575c57554e496d899ecfed +d3a79db8cfd67d1f46555652493f393d42454c4f46362a2a2f3a3d41413c +35322f3d4144413d342f2d403b3a39342f35414b6083a7c3cfc6b8b1b0b0 +ada6a1a5aa9f9d9d9d9f9fa1a1a1a3a7a6a4a1a0a2a0a3a19d9a9ea7afb5 +bdc5c7cbd0d2d0d0d9e0dcd7d6dcdfe6d9d2d7dbdadce1cee1e4ab573745 +4f404143424040474b42474c49534f4463acebdabacdd8dfe1e3dcdbdee2 +dededfdfdfdddddedfe3e2dedbdbdedfdbdcdedfdcdbdadcddddddd7dadc +dcdadbdee2dde2e6e6e6e8e8e5e4e4e6e7ebeae7e4dbdee0e0e0dfe0e2e3 +e1e7e7e2e7ece3dfdcdee0e0dedee0e1e1e1e2e1e1e0dfdadadcdee1e1de +dce2dfdde0e1e1e3e7eae9e5e4e4e4e4e5e6e9eae6e0dfe4e9dadce0e5e8 +e8e4dededfe2e5e8e7e6e5e6dedbdde0e1e2e5e9dee2e9e3e2ebefe3e4e1 +dcdde2e6e6e7e6e4e2e2e4e7e8e4e3e4e5e3e1e8eee2e2e3e3e2e3e5e8e7 +dfe3e9e3e3e8e5e8e4e0dedfe0e0e0e5e6e7e6e5e4e5e7e1dcdbe2e7e7e7 +e8e8e7e5e5e5e5e4e2dce1e5e5e3e3e8eadbd8dce5e8e2e1e5e8e7e3dedf +e4e5e3e0e2e4e3e1dfdfdfe4e3e2e2e2e1dedcdddddddedfe1e2e3e1dedb +dadcdcd8d5dae3ebede7e2e1e3e4e2e3e5e3dedde1e1e1dedcdee3e5e3e9 +e3dfdedddbdde2e4e4e6e8e5e0e0e2e0dddbdce01f17283f3c322e292c2d +2f31323232312c3a2933424f73717b8d846b65707d8b888d8e8f91928c84 +8f8e817878736b6f756f68605b5a5b5d5e5d5d5d5e616668656767676969 +68686c6a6765636465665d6f8085888d8e8a85842f1d23261c1919222826 +1c191e25231d191921334c639cacb1935a2d2835354154626a6a69686764 +65686c6d6a6676736d675e5449413934332f2c31393e3b2422293976adae +9da2bbd2d57b1c414b4b463b2c27292e30373c34251b1d222c2f302d261d +171422262a2a221c17172a2523251f1a202c374c6e90abb4a8998d8b8781 +7871727a747373737474767674767877757271716969676461656e777d85 +8d9094999b999ca6ada9a5a5abaeb5a8a1a4a8a7a9ab98abb27e2f142835 +2a2d31302c2c31342c2f353138352e4e9edfcda8adaba4a4aca9a9afb3b3 +b3b6b6b6b4b4b3b4b6b7b3b2b2b5b4b0afb1b2afacabadaeaeaea3a6a8a8 +a8a9afb4afb7bdbdbfc1c1bdbcbcbcbdbdbcb7b4abaeb2b4b4b5b8babbb9 +bdbdb8bdc0b7b3b0b0b2b2b0b0b2b3b3b3b4b3b3b2b1acacaeb0b3b3b0ae +b0adaeb1b2b2b5b9bcbbbab9b9b9bbbcb8bbbcb8b2b1b6bbacaeb2b7baba +b6b3b5b7babdbfbebdbcbbb3adafb2b3b4b7baafb3bab4b3bcc0b4b5b2ad +aeb3b7b7bab9b7b5b5b7b8b9b5b4b3b4b2b0b5bdb1b3b4b4b3b4b6b9b8b0 +b4bab4b4b9b6b9b5b1afb0b1b1b1b6b7b9b8b7b6b7b9b3aeadb4b9b9b9ba +bab9b7b7b7b7b6b4adb2b6b6b4b4b7b9a8a5a9b2b3adacb0b5b4b0abacb1 +b2b0adafb1b0aeacacacb3b2b1b1b1b0adabacacacadaeb0b1b2b3b0adac +aeaeaaa7acb5bdbfb9b4b3b5b6b4b5b7b5b0afb3b3b3b0aeb0b5b7b5bbb5 +b1b0afadafb4b6b6b8bab7b2b2b4b2afadaeb2251c293d392e2c282e3134 +36332f2d2822312736454e67575258472c2a3a505e5453545456574f4755 +554b4447443e434b473f3733323537383739393c3f43433b3a3d3d3e3e3e +3e4341403c3b3c3d3b2e3d4b5050555756545a0c03131b1815151c201b10 +0b0e15150f0e111d3350659ba9ae8d54251b25212a3a4246444140404040 +43494a484456534f4942382f2b29282221232a3136352b394e63a2d2cdb5 +b5cce1e588274853514a3b2e27282d2d3438301e141519232426241b130e +09171b1d1c17100b0a1f1a1b1e1a151d2b394e6d8a9fa3907a69615b5247 +41434c494949494a4a4b4b4a4c4e4d4946454640413f39363841484c525a +5a5e616361636f74706a6a70737a6d676b7170747c6c858f5f150016261d +2227262121242c2e2d25192328315dade3bd847a706a6b767474797d7c7c +7e7e7e7c7c7c7d7f807c7a7a7d7d79787a7b787675777878787174767675 +767b807b828787888a8a8989898a8b8c8b87847b7e81838383858788868b +8b868b8f86827f7f81817f7f8182828283828281807b7b7d7f82827f7c7f +7a7a7d7e7e81858887858484848586848788847e7d8287787a7e83868682 +7e818386898b8a898888807b7d8081828384797d847e7d868a7e7f7c7778 +7d818181807e7c7c7e80817d7c7b7c7a787e85797b7c7c7b7c7e8180787c +827c7c817e85817b797a7b79797e7f7e7d7c7b7b7d787372797e7e7e7f7f +7e7c7c7c7c7b79757a7e7e7c7c7f81716e727b7d77767a7c7b7772737879 +777476787775737373797877777776737172727273747677787875727173 +736f6c717a82847e79787a7b797a7c7a75747878787573757a7c7a807a76 +75747274797b7b7d7f7c7777797774727377999ab5c6c1bdbeb6b5b4b4b5 +b8bbbdbfccc1b1e1eac1c7c1b6b19a8b9ab2c3cbbab9bcc4c7c2bdbabdbf +b9b3b6b0a7a7aba69c938d8b8a8a8f8d8a8b8c8f8f8f8f90929392929191 +969393909193969aa3b5c0c0bec0bab1b1b4533b3f3c3a372c343b3a3530 +32364239312e30364651608dc2c99c644744546072818d939797a2a2a2a1 +9f9b94919395979da2a4a09b8c8d86745b4e51584f59697182a9daefbf9c +a6c3f5c849233a46535751443c38313e4a4d45372f2d2e32393f43403b36 +34373c4144413a333b3a3a3a3a3834313d41506a91b5c8ccc2bbb4b2b0aa +a9a8a09e9e9d9d9e9e9ea1a2a4a3a2a09fa0a1a19e9b9b9c9fa1adb5bcbf +c4cbcfcfcfd9dedcd8d8dad8ded9d4d3d2d3d7dcd5d5e6e29e533f4d4544 +42424242454644494d465150435ba2ebdab8d0dfe5e6e4dddcdfe3dfdfe0 +dededfdfe0e1e4e2e1dcdce0e1dddbdee3dfdad7d9dcdedfdbdee1dfdcdd +e0e4dee2e5e4e3e5e6e4e4e3e5e7ebeae8e5d9dce0e1e2e1e0e1e4e2e8e7 +e1e5e9e0dedbdee1e1dddde2dfe0e0dfdfdfe0e2dddddddfe1e2e1dfe6e1 +dee1e1dfe0e5eae9e5e4e4e6e7e8e6e9eae5dedce1e7dbdbdde1e5e6e4df +dfe0e3e6e8e7e5e4e7e0dbdbdddde1e7eadfe3ebe3dfe6ebe1e3e1dddee4 +e7e6e6e4e2e1e1e2e5e7e2dfe1e5e5e1e3e6dddde0e1e1e1e2e4e8dee2e9 +e3e2e7e6eae3dcdce1e4e2dfe2e3e5e5e4e4e5e7e1dbdae1e8e9e8e8eae7 +e5e4e6e6e5e2dde1e7e9e7e4e7e9e3dbdce5eae4e1e5e6e7e4e0e1e6e6e1 +dee0e2e2e0dfdedfe5e3e2e2e4e3dfdcdddcdbdbdcdfe2e3e1e0dfdddcda +d9d8dadfe4e6e4e1e0e1e2e1e3e6e4dfdee2e0e1dfdcdfe8ece9eae5e1e2 +e0dee0e4e4e3e5eae8e2e1e5e1e1e1e1e21b1b303e312c2f282a2c2f3032 +31323242392c64785e74808388786872838a9087888b9495908986898b82 +7b7e786e7176736b625c5a5a5a5f5d5c5d5e616263626466666767656569 +6663605f6164666d7d8b8c8c908e878a90331d22211e1f171f27261f1b1c +202c221a15171c2b3c5587b7bb8a4c2a242f3746545f6667686f6f6f6e6b +6763606163676d7173726e61615a4a3a31333b3639392b204281b3afa1a9 +c6f4c6461d303b47493e3228241c29373b342822202124282b2d28201917 +1a1f262827201c242524242422201e2a303d567a9bacaea0958b86827a77 +787574747372737373747577767371706f6a67646161636669757d84888d +9498989ba5aba9a7a7a9aab0aba5a2a0a1a5a79a9ab0b1722e20332f3030 +302e2e2f2f2e31332c35362d4995e0cea5b0b2aaa8ada9aab0b4b4b4b7b7 +b7b6b6b5b6b6b7b6b3b3b7b6b2b0b3b5b1aca9aaadafb0a7aaadabaaabb0 +b6b0b7bcbbbbbdbebcbcbbbbbdbdbcb8b5a9acb2b5b6b7b8b9bcbabebdb7 +bbbdb4b2afb0b3b3afafb4b1b2b2b1b1b1b2b4afafafb1b3b4b3b1b4afaf +b2b2b0b2b7bcbbbab9b9bbbebfb8bbbcb7b0aeb3b9adadafb3b7b8b6b4b6 +b9bcbfbfbebcbbbcb5b0b0afafb3b9bbb0b4bcb4b0b7bcb2b4b2aeafb5b8 +b7b9b7b5b4b4b5b6b8b3b0b0b4b4b0b0b5acaeb1b2b2b2b3b5b9afb3bab4 +b3b8b7bbb4adadb2b5b3b0b3b4b7b7b6b6b7b9b3adacb3babbbababcb9b7 +b6b8b8b7b4aeb2b8bab8b5b6b8b0a8a9b2b5afacb0b3b4b1adaeb3b3aeab +adafafadacabacb4b2b1b1b3b2aeabacabaaaaabaeb1b2b3b2b1afaeacab +aaacb1b6b8b6b3b2b3b4b3b5b8b6b1b0b4b2b3b1aeb1babebbbcb7b3b4b2 +b0b2b6b6b5b7bcbab4b3b7b3b3b3b3b42622333e30292b262d303433332f +2d29352d27627859646256503826354d5d64504d505658534d4a4f524c48 +4d4941454c48423934323234393938393c3f413e3835393c3c3d3e3e423f +3f3a3a3c3f3e3e4a55524f524f4b53600c0110181b1f141a201b11080709 +17100c0e131f32435b89bbbb884822171d212d353d3f3f3e44424443433f +3b383c3e4349505250514e544d3e2b212833313a45454971afd9c9b4bad5 +ffd3512739414b4940322723192633372d21191718191e20221e15111316 +191d1d1a130c141416161717171a303a4357748e97927d6e5f5751494648 +4a4a4a49484949494b4c4d4c4947464643413e393938393a464c5152575c +6060626c72706c6c6e6e75706d6a6b6c72756e708a9055140c2221252626 +23232227302f24151f293057a6e6be847f79706f7777777c807f7f818080 +808080818282817d7d81817d7b7e817d787576797b7c777a7d7b797a7f84 +7e84888787898a888988898b8c8b8885797c81848585858689878c8b8589 +8c83817e7f82827e7e8380818180808081837e7e7e808283827f837c7b7e +7e7c7e838887858484868889848788837c7a7f8579797b7f8384827f8082 +85888988868587807b7b7b7b7f85857a7e867e7a81867c7e7c78797f8281 +807e7c7b7b7c7e807b78787c7c78797d7476797a7a7a7b7d81777b827c7b +807f878077777c7f7b787b7c7c7c7b7b7b7d787271787f807f7f817e7c7b +7d7d7c79767a8082807d7e807971727b7f79767a7a7b7874757a7a757274 +7676747372737a787777797874717271707071747778787776747371706f +71767b7d7b78777879787a7d7b76757977787673767f8380817c78797775 +777b7b7a7c817f79787c7878787879999dbbc8bbbbc0b5b5b3b3b5b8bcc1 +bfaeb2afdce0bbc5b9af917b89abb9c1cfbfbabcc3c2bbb9bfb5bbb7b8be +b8afaeb0aba4999391918e8f8e8d8b8c8d8d8c8d8e909091908f8f979594 +94959a9ea1b9c3c5bebcc0beb2bec35b3b3b36393e35302c32393b362f2f +343c40382e30374b5a83b4c7aa6d3f41464c555f696f7381858b8f909091 +919b989496999b9c999c9fa8aba08a77645a5f5d6f8285beffe8b59cbdd1 +e0c65232353e4b53534a4240362e303c44443e342e2b303b4243413d3731 +343d43433d292f343a41443a2e242d38466186acc1d1c1b4b4b6b0a8a4a2 +a19f9e9d9d9c9c9fa1a1a2a09e9ca0a09d99999c9c9895a5adb5b8bfc8ce +cfd1d6dadad9dad6d2cfd6dbd9d8d9dee2dadcd3eaeb8a3a4c5049444143 +44413e45484d46525143579beadcb8d3e4e7e6e3dddde0e2dfdee0dfdfdf +dededddedbe2dcdce1e3dedcdfe5dfd7d3d4d8dbe0dbdfe2dfdcdadfe4df +e2e4e1e1e3e4e3e3e3e5e8e9eae8e5d8dde2e7e6e5e4e4eae7eae8dfe1e3 +d9e1dee1e5e4dfe0e5dedededddddee1e3e0dfdee0e2e4e4e4e7e1dfe1e1 +dddee3eae8e7e4e5e7eaebe5eaeae4dcd9dee4dfdcdbdde1e4e4e2e0e1e4 +e7e8e6e4e3ede6dfdbd9d8dee7e8dde2e9dfd8dee3dee1e0dddfe5e8e7e5 +e3e1dfdfe1e3e4e3dee0e7eae4e1e1dddfe2e5e5e5e6e7e9dfe2e9e4e2e7 +e7ece3dbdbe2e7e4dfdee0e2e3e3e4e6e8dfdad9e0e7e8e7e7ebe8e5e4e6 +e7e5e3dce2eaeeece6e4e7ebe0dce5ebe5e2e6e4e7e5e0e2e7e7e1dbdee1 +e1e0dededfe2e0e0e2e5e6e3dfdddbd9d9dadde1e4e2e3e2e0dcdadadadc +dbdcdee1e3e1dfe2e1e3e6e4dfdfe2dcdedcd9dfe9eeecebe5e2e4e3e1e2 +e6e3e2e5ebeae3e3e8e6e7e8e7e41e20363e29272e252b2d2e3030302f32 +2f3d3b707e647b7d7f6a5866838c8d998e898c939289878b818783818680 +77787b7871686260605e5f5e5d5d5e5f5f5e60626465666563636a686463 +64666a6c848e918a898e8e86959d391e1e1b2129201c181c24262019191d +25271e1415203a4e76a7bb9c5b292423242a323b43454f54595d605f6060 +6a666261636564646e70757c7e6f5541393b3433281d5ccfc7ab97bbd2e3 +c8522b2a2d363f3f362f2b221a1d29333330231d191c242b2a261f191519 +2228292612181f242b2e261a111a2532496d90a4b19f908d8c857e7a7876 +747370706f6f6f727475747271716c6562626565615c6c747d8087919798 +9aa2a6a7a8a9a7a3a0a7acaaa6a7acad9d9f9ab6bd61162d34312d2d2f31 +2e2a3133322732342a4590e0cea3b3b9b0aeaeababb1b4b4b5b7b8b8b6b5 +b3b2b0b0b9b3b3b8b8b3b1b4b7b1a9a5a5a9acaea9abaeadaaaaafb6b1b7 +b9b8b8bcbcbbbbbbbcbdbebcb8b5a8adb4b9bab9babac2bfc0bfb5b7b7ad +b5b2b3b7b6b1b2b7b0b0b0afafb0b3b5b2b1b0b2b4b6b6b4b8b2b0b2b2ae +afb5bbbab9b9babec1c2babcbcb6aeabb0b6b1aeadafb3b6b6b4b5b8bbbe +bfbdbbbac2bbb4b0abaab0b8b9aeb3bab0a9afb4afb2b1aeb0b6b9b8b6b6 +b4b2b2b4b6b7b6b1b1b8b9b3aeb0acb0b3b6b6b6b7b8bab0b3bab5b3b8b8 +bdb4acacb3b8b5b0afb1b4b5b5b6b8bab1acabb2b9bab9b9bdbab7b6b8b9 +b7b5adb3bbbfbdb7b5b6baada9b2b6b0adb2b1b5b2aeafb5b4afa8acaeaf +adacabacb1afafb1b4b5b2aeacaaa8a8a9acb0b3b4b5b4b2aeacacacaead +aeb0b3b5b3b1b4b3b5b8b6b1b1b4aeb0aeabb1bbc0bebdb8b5b6b5b3b4b8 +b5b4b7bdbcb6b6bbb8b9bab9b62324393e2a272e242b2e3131302f2f2b1e +292c63715362594e2f182446555d6a564e4e55544c4a4f474d4a4b534f48 +494f4b463d39373736393839393c3d3d3a3633373a3c3b3c3c43413e3b3b +3e4240525858504a4f50495d6c13000c121f281b150f0f13110902040b17 +201d171c2840527daebf9c571e140d0a0a111920232a2c343a3c3e3f3f49 +45414141434345575e646863523c2b262f303d424285f6e6c6aed0e4f2d4 +5c3332333b4140372b261b1316222b2b271b150f131c23231f1d17111219 +1d1c1602080e161d211b1313202933476885949c836e6662584e48484947 +464646454647484a4b4745444544403b3b3e3c383141474e4f545b616061 +686c6e6e6f6f6b6a7176747172777b70736f8e994100182625252424231f +1f303021121d262e53a0e8c184848277757a78787d807f7f818181807f7e +7d7c7b837d7d82837e7c7f837d75717175787b787b7e7c79797e847f8486 +82848588878787888a8b8a8785787d8388898888888f8b8e8b8385867c84 +818286858081867f7f7f7e7e7f828481807f8183858583847e7c7e7e7a7b +818786858485888b8c858888827a777c827d7a797b7f8282808082858889 +8785848d867f7b77767c8483787d847a73797e797c7b787a808382807d7b +79797b7d7e7d787980817b777874787b7e7e7e7f8082787b827d7b808289 +8076767d827d787779797a7a7b7c7e767170777e7f7e7e827f7c7b7d7e7c +7a757b8387857f7d7e8276727b807a7779787a7973767a7b746f71757474 +717273777575777a7b787472706e6e6f727679797a797773717171737273 +75787a787679787a7d7b7676797375737076808583827d7a7b7a78797d7a +797c82817b7b807d7e7f7e7b91a3b5c4c8bcb3bdaeb4b2b2b9bcc1c2b0a7 +b4c3cac8c2c19f8f90a8bbbbb8bcc0c1beb9b9bfc1c0b8b8b9bab8b5b2b0 +b5b1afaaa195969c9585869091919188908f8e8d8d8e8e909296979899a0 +adb7c6c0bec2c2bcbbbec3c289443439322d3a3d392f2d353d3f2d2f353b +3e3b3431464b6588a3bcaa7b47474848454040414c4f52545a626b727a84 +8f999b9d9b9a959ba19f9fa7acada9858d726f767ed5ffd8c4aeb5ebcda1 +4d35384643464f494b453a3131363e4242413d342b2b353f3e403d352e30 +3b443f3b363232363c4136373a3d42557694c3cdc6b2a9afaa9d9fa7a6a4 +a8aca79da5a1a0a2a29c98999d98999d9c9693959e979dadb9bdc5cfd1dc +ddd8dad8d3d6d8d6d3d2d4d5d8dadcd7d8dee3d38e394a54444a46394b3f +3d4050525b5d4b549ae2e7d0d4d8e0e0e2dedfe4e7e3dfdde0e1e0dddfe1 +dfd9dcdfe0dddde0e2dfe0dddbd9d9dbdddde0e0e4dfd6dae0d9e0dfe1e3 +e4e3e2e2e4e3e4e7e9e7e3ded6e1e9e6e3e5e8e5e5e2e4e5e1dcdfe5e6e2 +e1e1dfdbdbded8e2e0dae1e4e0e1dedee0e5e9e8e2dde5e2e7d3e3deebe3 +e5e9eae6e5e7e7e5e8e9e8e4e0dedfe0e1e0e1e3e6e7e7e6dae2e7e8e6e8 +e5e2e5e4e0d8d4d8dee3e4e1e4eae9e3dfe2dddddcdbdadde2e5e4e3e2e0 +e1dfdddce1e1dfe1e7e0dde7ddd9e1e9e3e3e7e6e4e4dbdbe6e8e5ebe5e2 +dfdfe1e5e8e9e2e5e8e3dddde4ece8e3dbd9e1eae9e3e5e5e5e5e5e5e4e4 +e6dfdee8ece8e2dfe3dfdde2e4e2e7eee6e3e0dedddfe1e3e2e4e6e7e5e0 +dbd7e5e1dddde1e4e6e6e3dddce1e0dbdfe9e0e0e0dfdedddbdae3e2e2e1 +e1e0e0dfe4e4e4e3e2e1dfdedfe1dfdbdde5ededede1e1e4dfe3e5e0e6e3 +e3e4e8e8e8e7e2e1e1e0e0212d353a3627212f28343532322a253345505f +727e7f81876a5e627c8f8d898e9293908b8b8f918e8686878684817e7b81 +7f7c776e65656b645556606161615b636463646364646465676665656a78 +82948f8d908e88898d9599652519231f1a2327231a1820282a181a1f2426 +221b1422294c78a0bcaa74362d231d181213162124292e353d464d51575f +63615d5a5a5f697071788286847f5757321f1b2284d4adaaa3baf8dbaa4a +282128262d3b373932271d1b1f272e2a2c281f1818222a2727241c151823 +2e2925201c1c20252b2021232428385975a5aea9938c918d7d787a787475 +797469747071777a7674736e67656968625d5d666064747f838b989ba9a9 +a6a9a6a3a8a9a7a5a2a2a3a5a59f989ba6b1a46414273327312f26392f30 +2d31293037324492d8d5b5afadb1b1b0acadb5b9b8b6b6b9bab9b6b6b8b4 +aeb3b6b5b2b2b5b4b1b2afacaaaaacababaeadb1afa6aab0abb2b4b6b8b9 +bab9b9bbbab9bcbebcb5b0a8b3b9b6b5b7b8b7bcbbbbbcb8b3b4babab6b3 +b3b0acacb0a8b2b0aab1b4b0b1aeaeb0b5b9b8b2adb6b3b8a4b1acb9b4b3 +babcbbbabec0bebfbebdb9b5b3b1b2b3b2b2b4b7b8b8b7abb3b9babbbdbc +b9bcbbb5ada6a9afb4b5b2b5bbbab4b0b3aeaeadacabaeb3b6b5b4b3b3b4 +b4b2b1b6b6b2b4b8b1abb5aba7afb7b1b1b8b7b5b5aeaeb9bbb8beb7b4b2 +b2b4b8b9bab3b6b7b2acacb3bbbab5adabb3bcbbb5b7b7b7b7b7b7b6b6b5 +aeadb7bebab4b1b5aeacafb0aeb0b7b4b3afaeacafb0b3b1b4b5b7b4b0aa +a6b4b0acacb0b3b5b5b2acabb0afaaaeb8afafafaeadacaaa9b2b1b1b0b0 +afafaeb3b3b3b2b1b0aeadaeb0aeaaacb4bcbfc0b7b7b7b2b5b7afb5b5b5 +b7bbbebebdb5b4b4b3b31d29343a3929222e2531312f2f2b292f31344254 +5e5c57573424263f525251535655524d4d51535149494c4c4a4845454f4e +4d4841373a403b2d303a3d3d3d3439373838393c3c3d3c3d3b38363b464e +5f575355544c4e55636d4109061819141b1a1509070d13150509121e2425 +1f18242a5282abc4ac6e26140600000000030e11171b232d363b3f44494b +49423e3e4550524f4d55575655353f26222a37a4ffdbd1c3d0ffe6b35332 +2b302b303c332d231912101721272627251c14141e2521221d150e0e1923 +1e1a151111151d2013161b20293c5d7aa5a99b7e6e6b614c41434443464c +49414b47474a49454042423e3e42413b373841393947515359605f6a6d6b +717372777b7974716f6e6e71726c6c7580763e00142a232c2718251f2a27 +1f151d2c364fa1e0cb9a857a79797b797a818583807f8283827f80827f79 +7d80807d7d80807d7e7b7876767878787d7e827f75797f797e7f81818482 +8383858484878987817e768188858486888688848786847f818789858282 +827e7e7f78817f7980837f807d7d7f848887817c827f84707e7986808086 +88868588898789898884807e7d7e7f7e7e8083848483777f858686888683 +8685807872757b80817e818786807c7f7a7a7978777a7f807f7e7d7c7d7d +7b7a7f7f7b7d827b768076727a827c7c82817f7f77778284818783807b7b +7d8181827b7e7d78727278807f7a72707881807a7c7c7c7c7c7c7b7b7b74 +737d837f79767a7472767775787f797574707171757576767a7979726f6b +7a76727276797b7b787271767570747e757575747372706f787777767675 +7574797979787776747374767470727a8284857b7b7c777a7c757b7a7a7c +808282817a7979787895abbcc0c3b9b3b9bab8b2b2bcc1c2b8e9cdc6c8c7 +bcada09493a2b8c5c0babbbdbfbeb9b8babbb8b9babababbb9b8b7b3b3af +aaa39e9b9b9e8f8c8f8a8c94929492919090919292949697989ba3b1b9c2 +bdbfc2c1bdc0c5b9cca55c3a3a383933393b393739352e4a38272835403d +393e40485b7aa3b7b27f5f4d565d4f45483635363737383a3a4149566170 +8090969098a1a2a4a6a4a0b6a7bab3b3a77c80f5eee8c5a6b0f2c8854f3d +4f4937384142444544413c36323b3e403f3a332c2b363c41413d352f2b3f +42413a31303840453b32333a4656638ea9c7ceb89f9eafa9adaaa29fa0a5 +a8a6a09fa19f9a96989a97989c9c969495999495a4aeb5c3d2cfdad8d5dd +ded8d9d4d5d6d8d9d8d9ddd4e0e2d8dce7be7a3e52503f484a3b413f4152 +525d5e4c5696e1e9d0d3d9dddce0dedce2e6e2e0dfdddfdedcdee2e3dee1 +e4e3dfdddfe0dce0dddbd9d9dadddededee2e0d8dde2dbe3e4e3e3e3e3e1 +e0e3e2e3e6e8e7e3ddd9e2e9e7e4e6eae7e1dee1e3e1dfe4eae3dededfde +dadbded6e0ddd8dfe1dddfe1e0e0e4e7e6e1dce1dee3d2e0dce7e2e5e8ea +e5e4e5e6e2e8e8e8e5e0dee0e0e1dfdfe0e2e2e3e2dfe5e7e5e5e6e6e4e5 +e6e5dfdcdbe0e3e4e1e3e8e9e3e2e4e1e1dfdcdadcdfe3e5e5e4e5e7e7e7 +e6e5e6e1e0e6ddd8e0e1dae0e7e3e2e4e2e4e4dddee5e1e0ece8e4dfdedf +e2e5e6e3e6e9e7e3e2e6e9eae7e3dfe1e7e8e5e9e8e8e7e7e6e6e6eae1db +e1e6e8e7e8e5e1e1e4e5e0e3e6e4e2e1dfe0e1e3e4dedfe2e3e2dedbd8e7 +e3dfdee0e2e3e2e1dedee1e2e0e1e4e2e1e0dfdedcdbdadfdfe0e1e1e2e2 +e2e0e1e2e2e1e0dfdedddfdedcdfe8f0f0e7dddee0dde0e5dee8e8e7e6e5 +e5e5e5e1e0e0dfdf24363c3a3428232d34373331353129318a878084867e +6f675b5f6e8794928e8f8f91908b8a8c8b888788888887858483807f7d78 +716b6b6b6d5e5c5f5a5c6465676768666667686867676765676e7882918e +8e8f8d898c92899f7f3a1e2326271d21242222242019342211111d28251b +15182b4a74a3b8b1754c2f3133251b1d0c0d0e131518191a1d2128303943 +4f5859667074797e7d778b777f736b57272ba3a9b9ada3bbffd583412534 +2e212834323232302a231d1922262b2c27211d1a22252a2a261e1814282b +2a231a19212a2b2118181d293845708cabb4a088889484827d736d6d7275 +736f70777a7675746e68676b6a645f5f635c5e6a757d8b9b99a4a4a2aaac +a8aaa5a6a7a8a7a6a6a697a1a69fa8b5924f152e2f232f34293234303128 +2e3633498ed7d5b2acadb4b1b1acadb4b8b9b7b8b6b8b7b5b5b9b8b3b8bb +b8b4b2b4b2aeb2afacaaaaababacababb2b0a8adb4adb5b6b8b8b8b8b8b7 +bab9b8bbbdbcb5afabb4b9b7b4b6b7b7b8b7b8bab8b6b9bfb7b2b0b1afab +acb0a6b0ada8afb1adafb1b0b0b4b7b6b1acb3b0b4a3aeaab5b0b3b9bbba +b9bebfbdbfbfbdbab5b3b2b2b3b1b0b1b3b3b1b0adb3b8b7b7bbbdbbbcbd +bab4adacaeb1b5b2b4b9bab4b3b5b2b2b0adabadb0b4b3b3b5b8babcbebd +bcbdb6b5b7aea6aeaea7aeb5b1b0b5b3b5b5b0b1b8b4b3bfbab6b2b1b2b5 +b6b7b4b7b8b6b2b1b4b8b9b9b5b1b3b9bab7bbbabab9b9b8b8b8b7aeaab0 +b8bababbb7b3b0b3b1acaaafb2b2b1afb0b1b3b4aeafb2b3b2aeaba7b6b2 +aeadafb1b2b1b0adadb0b1afb0b3b1b0afaeadabaaa9aeaeafb0b0b1b1b1 +afb0b1b1b0afaeadacaeadabaeb7bfc2bdb5b4b6b0b2b4adb7b7b9b9bbbb +bdbdb4b3b3b2b21c2f3939362b232c31322d2c32312c2d74655e5d5c4f3e +302425344c595651525153524d4c4e4d4a4a4b4b4b4b4948494b4d4a4740 +3c3b3d423534393436403e3d3a3c3c3e3f40403e3d3936353a434c595654 +56534f535b58755b1e09151c1d1215161411130f08261406091926251913 +162f527eadbdaf6b3b17161a0c050a000102070b0d100f1115191f253039 +41444d52504c4b464158495d5a5f562e42d3e0e7d1becdffde904e323d35 +24292e25242425221e18151e242828231d18131b1d22221e16100c202322 +1b1211191d1a100b111f2e42517a90a7a7886861674f4b463f3c3e454a48 +44444746423f40413e3f43453f3d3d41393742484e5a655d666869757b78 +7c797a797774716f706a75746a6f80652d01222a1f2827151f2e2920121c +2c37539ddfcc98837c7c7a7d797980848381817f81807e7f83837e828583 +7f7d7f7e7a7e7b7876767778797c7c8280777c827b818281818181807f82 +8181848685817b7982888684868886848082848280868c86817f80817d7e +7f767f7c777e807c7e807f7f838685807b7f7c806f7b77827d8085878584 +87888689898885807e7e7e7f7d7c7d7f7f7e7d7a80848383868785868785 +7f79787b7e817e808586807f817e7e7c7977797c807e7e7f818385868584 +857f7e81787179797279807c7b7f7d7f7f797a817d7c8886827b7a7b7e7e +7f7c7f7e7c7877797d7f7e7a76787e7f7c807f7f7e7e7d7d7d7e7570767d +7f7f807c7876797873737777747371727375767071747574706d6c7c7874 +73757778777673737677757679777675747371706f747475767677777775 +7677777675747372747371747d85878178787a75777a737d7d7e7e7f7f80 +8079787877779cb8c2bcb8b3b2b6bcbdbab6b7bbc1bee2c9c0c4c9c1ae9c +949fb3bfc4c1bebdbcbfbfbbb9b9b8b3bababab9babbbcbcb2b5b2aaa8aa +a49ca0959390868791929291908f8e8f8f90959695989da7b3b8bebdbfc2 +c2c1c4c8b3c3b17b4e35323f2f3234363a3c362e3b3a383734333437393b +33365178a5cbc49870646963564e4e47423c3c3b38343839393b3e464f54 +5e69778088919595a0a7bbc8d5d6ad7989f4f2e7acacc3e7d07a3c3a423d +3530343a404446413c383235373c403d34302e33393f433f362f30363e40 +3d36312f3c3f423e35313b496179a3c7cebdaeada6a9a8a49e9ba1aba29f +9ea1a19c999c98999a9e9f9a9796989390969ca4b6c8cbd5d3d2ddded7d8 +d2d7dcdedbd8d8dad6e0e3d9d8eae5c459405047474e3943414353545c5b +4d5a93e2eaced0dce1dce1dedbe0e5e1e0e0dfe0dddadde2e4e0e2e5e5e0 +dfe0e1dde0dedcd9d8dadedfdddde2e2dbe0e5dee3e3e2e3e3e3e2e1e3e1 +e2e5e7e6e2dddde3e8e6e4e5eae8e1dddee1e1e0e5ebe2dedfe0e0dcdce0 +d8e0dcd8dfe0dcdfe5e2e0e1e3e3dfdcdfdde1d5dfdce4e1e4e8eae5e4e4 +e5e2e7e7e8e5e1dee0e0e3e1e0e0e0e0e0dee1e6e6e2e2e4e6e6e6e8eae7 +e4dedfe0e3e1e3e6e7e5e5e7e6e5e2dedbdadde0e3e4e5e6e9e8e9e9e6e8 +e3e0e6ddd7dee3dbdfe6e2e2e2dee6e4dee1e4dadaebeae5e0dcdddfe3e4 +e2e3e6e7e7e6e6e4e9e9e8e4e2e6e8e6eae9e9e8e7e6e5e4e8e0dbe0e6ea +ebede6e3e4e5e5e0e1e1e2e1e1e2e3e3e4e5dddedfe0e0dedcdbe8e5e2e0 +e0e0dfdedee0e0e0e4e7e5dfe4e3e1dfdddcdbdbdbdcdee0e2e4e5e5e0e1 +e2e3e3e2e0dfdfe1dfdde0e9efede4dbdededadde2dbe6e8e8e6e1e0e1e4 +e5e5e5e5e41f384038302b282c3233302f30343a458a837a80888370635b +6b7f8e939392918e91918d8b8b878288888887868788887f828078767874 +6c7064646056576165656665646465656668676465697279818b8c8e8f8e +8b8d9381948758301c1d2c171a1c1e2224201825242221201f201f1c1e1a +22416b9bc1b8885948463b2b21211c1715171714131715131112161e232d +3a4854606a6f6f777a858c928d5f22289aaebd9caacaefcf722c262f2e2d +2825292d2f2e29221f1a1d23292e2c261f1a1c22282c281f18191f272926 +1f1a192225272319141d2b435c87acb5a5979381817e786f6b717b726f6f +75797774746c68696d6d686261635d5a5f656e8093949e9f9faaaca7a8a2 +a7acaca9a5a3a299a1a7a0a4b9b79a311c2f2a2c382633363232292e3534 +4c8bd9d6aea9b1b8b1b2acacb2b7b8b7b9b8b9b6b3b4b9b9b5b9bcbab5b4 +b5b3afb2b0adaaa9abacadaaaab2b2abb0b7b0b5b5b7b8b8b8b9b8bab8b7 +babcbbb4afafb5b8b6b4b5b7b8b8b6b5b8b8b7bac0b6b2b1b2b1adadb2a8 +b0aca8afb0acafb5b2b0b1b3b3afacb1afb2a6adaab2afb2b9bbbab9bdbe +bdbebebdbab6b3b2b2b5b3b1b1b1b1aeacafb4b7b4b4b9bdbdbdbfbfbcb5 +afadaeb4b2b4b7b8b6b6b8b7b6b3afacabaeb1b1b2b6b9bcbdc0c0bdbfb8 +b5b7aea5acb0a8adb4b0b0b3afb7b5b1b4b7adadbebcb7b3afb0b2b4b5b3 +b4b5b6b6b5b4b3b8bbbab6b4b8bab8bcbbbbbab9b8b7b6b5adaaafb8bcbe +c0b8b5b3b4b1aca8aab0b0b0b1b2b2b3b4acadaeafafadabaab7b4b1afaf +afaeadadafafafb3b6b4aeb3b2b0aeacabaaaaaaabadafb1b3b4b4afb0b1 +b2b2b1afaeaeb0aeacafb8bebfbab3b4b4adafb1aab5b7bab9b7b6b9bcb8 +b8b8b8b71b353e36302b282c30312e2c2d31373c726158595e543f2c2431 +455358575554525555514f4f4c474d4d4d4c4c4d4e4f484d4b454347443e +42393a382e2f3b3c3b3b3b3a3c3d3d3e3f3d39383940474b54545456544f +545d4e68613816080c1e0d101214181a130b181715161516171514161621 +4472a3c9bc88513a322109020a0b06040507060408070603050810151f2a +34393d4142404950637281845b3255d0dde1b7bfdafcdd7f393135312b25 +2022272a2c27211b16191c2224221b1511141a202420171011171f211e17 +120e13161c1c181825334b6083a1a18b776e54504e49413d434d44414144 +464340433f3f41454845423f413934383c4252615c656668757976787277 +7b7974706d6f6d7675696a818672170c2624252d1524302b21161e2a3859 +98decb95807e827a7e79787e8382818281827f7c7e838480838685807f80 +7f7b7e7c79767577797a7b7b82827a7f857e818180818181818082808083 +8584807b7d83878584858887847f7f828281878d85818081837f7f81787f +7b777e7f7b7e84817f8082827e7b7d7b7e727a777f7c7f85878584868786 +88888885817e7e7e817f7d7d7d7d7b797c8183808084878787898a87817b +7a7b807e80838482828483827f7b78777a7d7c7d8082858688888587817e +817870777b73787f7b7b7d79817f7a7d8076768788837c78797b7c7d7b7c +7b7c7c7b79787e807f7b797d7f7d8180807f7e7d7c7b7c7470757d818385 +7d7a797a787371727575757677777879717273747472706f7d7a77757575 +747373757575797c7a7479787674727170707071737577797a7a75767778 +7877757474767472757e84847e767878727477707b7d7f7e7b7a7c7f7d7d +7d7d7ca5c2c8b6b0b1b3b5babec4bdb1b7ced6ccc2c1beb9ad9e93a6b3bc +bababdbfbcbdc0bfbbb9babbb7bbbab8b7b8b9bbbcb3b9b5acafb7afa0a2 +9b9c9a8f8d918d92908f8e8d8d8e8e94929397a0aab4b9bcbcbfc4c7c5c1 +bfaea69c8f6c402d383b38353335393c3b27344143382e2c2e343c353142 +5273a3ccc2a47b6c73716164594c4543423f3b3736373736353537394147 +4f59636e74839aa4b3b8c7cea365a4e9c5e1bda9c7e2ac5f2822383f3137 +373534373e45493b38323134383a3e37353232373d4144322f2e363f4139 +31313b47493f35384143577395bdd6cab1a1a1a1a5a6a0a0a4a3a09fa4a4 +a09c9e999a9c9fa09e9b989b95908d8b8f9eb0bcccd1d1d9d8d3d3d4d9df +e0dad6d4d7e0d6dae2dbdbe5eca347425546454846414354565b594a5c95 +e6edccd2dfe4dde1dddadee3e1e1e1e4e4e0dbdce0e1dee0e3e4e0e0e3e5 +e2e2e1dfdbd9dae0e2e0dfe3e3dee3e6dde1e2e1e2e4e5e4e5e2e1e1e3e6 +e5e1dddee1e4e3e2e3e7e7e4dfdfe0e0dee2e8e5e1e2e4e3dfdee1dce2de +dbe1e1dde2e7e3dfdee0e1dedce0dfe0dbe0dfe3e3e5e8ebe5e5e5e6e3e6 +e7e8e5e2dfe0e0e6e4e3e3e3e3e3e1e2e6e6e3e3e4e6e5e8e9ebeae6dedd +dfe2e1e2e4e6e6e7e8e8e6e3dfdbdadddfe2e4e5e4e4e1e0e1e0e5e2dfe7 +e1dde1e4dbdee7e4e4e4dfeae4dce2e7dad7e7eae5dfdbdcdee2e3dfdee0 +e2e6e7e7e3e7e7e6e3e4e8e8e5e9e8e7e6e4e3e2e1e1dfdfe5e9eceae8e5 +e3e4e3e3e1e3e3dfe0e2e4e5e6e5e5e1e1e1e0e0dfdfdee6e5e3e1e0dfde +dedfe2e0dde2ebe8dee6e4e2dfdddcdcdcd9dbdee0e3e4e4e5e4e5e6e7e6 +e4e2e0e2e3e1dde0e6e9e5e7dee1e1dbdbdfd9e0e5e6e4e0dcdfe3e6e6e6 +e7e71b3a44342e2f2d2d2c2e34312b3a576f7b7e7d7d786f625a6f7f8a89 +898f93908f92918d8b8c8a8689888685848587888086837a7d857f70726b +6d6b605e625e6565646363636464676562646c747c8189898c90908f8a88 +7b7671694b22131e231f1c1a1c202324101e2b2d251b191b22291f1a2939 +5e91beb6956851514734352b1f181919191614151615141312120c121b26 +313e4a515d70737d7c868951003c9385b8a6a0c4e1aa5b221b323b2c2924 +212021252b2f23211e1f22282d2e231e1b1b20262a2d1b18171f282a221b +16202c2e23181b24263a577aa3bdb196807b7c7e7b737175737071767876 +74746a696b6e6e6c666366605c59575b6b7c8794999ca5a6a1a4a5aaadad +a7a19f9fa3979ea9a7aab7c17c2320372b2d32343430332d303433508ddb +d7ada8b4bbb2b2ababb0b5b8b8babdbdb9b4b3b7b6b3b7bab9b5b5b8b7b4 +b4b3b0acaaabaeb0adacb3b3aeb3b8afb3b4b6b7b9babbbcb9b8b6b8bbba +b3afb0b3b4b3b2b3b4b7bbb8b6b7b7b5b7bdb9b5b4b6b4b0afb3acb2aeab +b1b1adb2b7b3afaeb0b1aeacb2b1b1acaeadb1b1b3b9bcbababebfbebdbe +bdbab7b4b2b2b8b6b4b4b4b4b1afb0b4b7b5b5b9bdbcbfc0c0bfb7afabad +b3b2b3b5b7b7b8b9b9b7b4b0acabaeb0b0b2b6b7b7b6b7b8b7bcb7b4b8b2 +abafb1a8acb5b2b2b5b0bbb5afb5baadaababcb7b2aeafb1b3b4b0afafb1 +b5b6b5b2b6b9b8b5b6babab7bbbab9b8b6b5b4b3aeacaeb4bbbebdbbb7b5 +b3b2afadaaacadafb1b3b4b5b4b4b0b0b0afafaeaeadb5b4b2b0afaeadad +aeb1afacb1bab7adb5b3b1aeacabababa8aaadafb2b3b3b4b3b4b5b6b5b3 +b1afb1b2b0acafb5b8b7bdb6b7b7adadaea8afb4b8b7b3b2b7bbb9b9b9ba +ba1b3a42322c2d2c2d2b2e343028344f60605b5a554e40302337454f4e4e +535653535655514f504f4b4e4d4b4a4a4b4d4f494f4e4548524e40423d41 +3f363438343b3a3a393b3b3c3c3e3c39393d454b4e525253575753515046 +4647442c08000d1718151315191c1c08131e20160c080c141b1412253c67 +9dcdc29a6440351f0b1914080103030403010407090a0a0c0c060a0e1418 +21262b364a526164747a55226dc0aad8c0b5d7f1b8692c22343a29292623 +2123282c2e1f1b151316191d1f18161313181e222513100f1720221a100b +152327221a1f292a3c537194a99b795d5452535149454745404045474441 +443e4043464b494643463e37322f33404d5561666873736e707176787872 +6d696e776c6c726d6f83965b0d142f242325282e29241b1f2b395c9ae1ca +917e81857b7e78777c818282838686827d7d81817e818484808083838080 +7f7c7876777b7d7e7d83837d82867d7f807f808283838481807f8184837f +7b7e8183828283858687818081817f848a88848385868281827c817d7a80 +807c8186827e7d7f807d7b7e7d7d787b7a7e7e8085888585878887878888 +85827f7e7e8482808080807e7c7d81838181848786898a8b8a837b787a7f +7e7f81838384858583807c78777a7c7b7d8080807f7f807f84807d827c76 +7a7c7377807d7d7f7a857f787e8376738388837b77787a7b7c787775777b +7c7a777c7e7d7a7b7f7f7c807f7e7d7b7a79787573747a808382807c7a79 +787674737472747678797a797975757574747373727b7a78767574737374 +77757277807d737b797774727171716e7073757879797a797a7b7c7b7977 +7577787672757b7e7c81797b7b7272746e757a7d7c78767a7e7e7e7e7f7f +b6d0ceb6adb0b3b6c1bfc4c1b2bed8dec4c8cabba69b9da3b5bdbeb7b7bd +bfb9bebfbdb8b7babebcbebcb9b7b7b8babbb7bcb8b1b5bfb7a7aea6a4a1 +9999998f9695939291919191928f91969faab3b7bdbdbfc6c9c5b8aba290 +8b918b714e333f3d3d3c3a37383a3a3530313437342e232e343a47465173 +9cbbc6a585828685756c625b5650463e3c3a3938373331323c3f3d3b3b3b +3d434e68758e909fc7bca58399cebceac9b6b9c09a4a17192d37413e3934 +33363c4044423b35302f303544433c353133393f453c312d323b42453f35 +313b46463e363243576988aec8d0b9ab9f9ca1a1a0a1a3a0a1a6a7a3a1a2 +9b9e9d9fa0a09c9897948f8981808893a5bcc9ccd4d4d1d6d9dbdfdedbdb +dcdeded2d8e3dcd5dde5dc8b43464c424d473e4055575c56495f9febedcf +d5e3e6dee0dcd9dee3e1e1e1e4e4e0dbdce0e2dee0e3e4e1e1e4e6e3e4e3 +e1dddadbe2e6e4e1e3e3dee3e5dce4e4e2e3e3e4e4e4e3e1e1e3e5e4e2dd +dddde0e1e1e1e5e5e4dedde0e0dfe2e6e6e2e3e5e3dedddfdee2dddbe2df +dce3e7e2dedcdee0dfdddfdfdde0dfe1e0e3e6e9ece6e6e6e7e4e5e6e8e6 +e2dfe0e0e6e4e4e4e6e6e7e6e1e7e8e6e5e6e5e3e9e7e9e8e4dbdbe0dfe1 +e2e2e4e6e8e7e6e5e2dedbdbdee1e3e6e7e6e4dfdededde4e2dfe7e4e0e3 +e2dbe0e8e6e6e8e4efe5d9e0ebe2d9e2e8e4dedcdddfe3e4dfdcdcdfe4e8 +e9e6e6e2dfdfe5eceae3e9e8e7e6e4e3e2e1e3e2e1e3e6eae9e6e9e7e4df +dedfe4e4dedfe2e4e6e6e6e5e4e3e2e0dfdededee1e2e2e2e1e0dfdfe1e3 +dedae0ebeae1e5e4e3e1dfdedddddadcdee1e2e3e2e2e5e6e7e8e6e3e0de +e0e1dedcdfe5e6e0eae3e6e5dddcdfd9dee3e5e4e0dee1e6e0e0e1e2e221 +3f46343033312e2f293033334c74887984867a655d616a7e898c86868f91 +8b90918f8a898c8d8b8c8a87858384868784898780848d88787e7676726a +6a6a606968686767676767656260636a747a7f88888b8f928d80746d5e5c +66654f3018232222211e1e1f21221e1a1b2125221f1b262120262332588a +afbb9871646159473d332c29241d17181a1c1e1e1e1c181613141516181d +212b444a5f5d678e724116337471b2a4a2b4c6a6571f1a292e322d251f1c +2023282c2b27231f202325302c251e1a1c22282e251a161b242b2e241a16 +1f2a2a221a16273b4e6d93adb59b8c7e7a7b7a777575727176797572736a +6a6c6e6e6e6a6665625d57515058626f839096a0a29fa4a8aaacaba6a4a4 +a4a0939baca8a5b0bbb56620262f2734332f2d34313233345397dfd6acaa +b5bdb5b1aaaab0b5b8b8babdbdb9b4b3b7b7b3b7bab9b6b6b9b8b5b6b5b2 +aeabacb0b4b1aeb3b3aeb3b7aeb6b6b7b8b8b9bbbbbab8b6b8bab9b4afaf +afb0b1b1b1b2b5bbb7b4b7b7b6b7bbbab6b5b7b4afaeb1aeb2adabb2afac +b3b7b2aeacaeb0afadb1b1aeb1adafaeb1b4babdbbbbbfc0bfbcbdbdbbb7 +b4b2b2b8b6b5b5b7b7b5b4afb5b9b8b7bbbcbac0bebebdb5aca9aeb0b2b3 +b3b5b7b9b8b7b6b3afacacafb2b1b4b8b9b7b4b5b5b4bbb7b4b8b5aeb1af +a8aeb6b4b4b9b5c0b6acb3beb5acb5bab6b1afb0b2b4b5b0adabaeb3b7b7 +b5b5b4b1b1b7bebcb5bbbab9b8b6b5b4b3b0afb0b2b8bcbcb9bbb9b3aeaa +ababadacaeb1b3b5b5b5b4b3b2b1afaeadadadb0b1b1b1b0afaeaeb0b2ad +a9afbab9b0b4b3b2b0aeadacaca9abadb0b1b2b1b1b4b5b6b7b5b2afadaf +b0adabaeb4b5b2c0bbbcbbafaeaea8adb2b7b7b3b4b9beb3b3b4b5b52744 +48342c2f2f2e302b30312c4164715c6163523b2e2f33464f514b4b53554f +5455534e4d505250514f4c4a494a4c4d4b504f484c5852444d4645443e3e +3e343f3e3e3d3f3f3f3f3e3937383e464d4e545252575954473c392d2e3c +3e2a0e0015191b1a1a1a1b1d1e160f0d100f0a08081310111d213a69a0c5 +cc9f6648352c251f150e0a07000000050c1117191b1715100e0a06040405 +0d242a41404c7369593f5b9a98d5c5bdcad6b25f221e2a3139372e262223 +262628251c150f0d101525241d1612141a20261d120e131c23261b110f1b +27292119152437476488a2a4836f5d5756514b4644404045484444474142 +44464b4b494544413c342b2a3239435663676e6f6a6f70727574706e7174 +776a6c746c6775898e490d1b27202d2c2a26251e242d395fa4e3c8907f83 +877f7d77767c818282838686827d7d81827e818484818184848182817e7a +77787d81827f83837d82857c828280818182838382807f818382807b7d7d +7f808181838487807e818180848889858486868180807e817c7a817e7b82 +86817d7b7d7f7e7c7d7d7a7d7a7c7b7e818689868688898886878886827f +7e7e84828181838382817c828584838686848a8889888178767b7c7e7f7f +8183858483827f7b78787b7e7c7f8282807d7d7d7c83807d827f797c7a73 +79817f7f837f8a80757c877e757e86827a78797b7c7d78757174797d7c7a +7b7976767c83817a807f7e7d7b7a7978777676787d81817e807e79747172 +7475717376787a7a7a79787776747372727276777777767574747678736f +75807f767a797876747372726f717376777877777a7b7c7d7b7875737576 +7371747a7b77847e807f7473746e73787c7c78787c817878797a7ac5d9d1 +b7afb0b2b6c6b8bbbfb7c3d1c6bec3bfaa999cb0c2b5babdbdbfc2beb6bc +bdbab5b4b9bdbcc0bebcb9b9babbbcbabcb9b5b9c0bab0b7ada69f979c9f +969695949291909091909092949ba3abb2bdc0c2c3c5beac9b938e9095a4 +b090523131363d3f3a36333c383533343437372025303c464347526f94c0 +cbb08f8b96908f8f8c8576665a554b40362e2b282b393c3e3e393230322f +3d3f59647097a1b89996abcabfefd2a8b5ab7c461b122034383d3f3f3b38 +34363b40413c342f2c3a4043413c3632323a3f433d332e343b493e35373c +3e3f403d363b4d5e75a2ced2c2aa96939ba1a4a1a1a1a6a7a5a2a39ea09e +9d9ea09e9892918d88817c7d828da5b4bdccd3d4dadbdadbdde0e3e4e7d3 +d8dfddd7dee0d1e0de6c36504b4747404156595a534965aeedebd0d9e3e4 +dfdedbd9dee4e1e1e0e0e1dfdcdfe3e5e1e4e6e6e1e0e1e2dfe5e4e3deda +dbe3e8e7e2e2e1dde3e6dde8e8e4e3e2e2e1e2e4e2e2e3e5e5e3dfdad9dc +e0e2e1e3e4e0dbdbe0e3e2e3e6e1dee0e2e1dcdbdddee0dad9dfdcd9e2e4 +e0dbdbdee0e0deddddd9e3dde1dce1e6e9ebe6e5e6e7e3e3e5e8e6e3e0e0 +e0e2e1e1e3e5e6e7e6e2e9eae8e7e7e6e3e9e5e5e6e2d8d9e0dde0e2e1e3 +e6e6e4e5e4e1dedbdbdee1e3e8eaeae8e4e4e5dfe7e5e0e7e4dedfe0dbe3 +ebe5e5e9e8efe8dcdfedeae0e0e7e4e0dedfe1e3e3e2dfdfe1e5e9ebe9e5 +dfdadbe4edeae3eae9e9e8e7e6e5e4e9e7e0dbdce5eaeaefece7dddbdde2 +e0dedfe1e3e5e5e5e4e2e2e1e0dedddcdcdde0e2e3e2e0e0e0e2e0dddbdf +e6e8e5e3e3e3e3e2e0dedddadcdfe1e2e2e0dfe1e3e4e5e4e1dddbdadbda +dbe0e7e8e1e8e3e7e8dedce0dae0e3e7e5e3e1e5e8dfdfe0e1e22b444635 +3235322e36232b38415d7c7c79817d6b5a5f768b7e868b8b8e9490888e8f +8c87868b8c8b8e8c8a878586878887898884888f8b81887e7871696e7167 +6a6867676566666564636263686e757985898b8c8c8573645c5a5e667989 +6b3115151a21221e1a1922201e1d1f2226291b201f21221c20325986b7bf +9f77696f64615e5c5548382e2c28211c1a1a191717141719171210130f1b +1a323841666261322a3e6364aaa69abcbf9558230c132426292b2a241f1c +1e242c2e2b24201c26292c2a251f1b1b23282c261c171d242d22191b2022 +2324211a1f31425986b3b6a78e7872787c7b7773737677726f6f6a6c6d6b +6c6e6c6761605f5a53505152556b7a87989fa3a9aaa9a8a9a9aaaaaa959a +a5a6a3aeb4a8baba4a15322e2b2f2e2d35323434385ba6e1cfacacb5bbb6 +afa9aab0b6b8b8b9b9bab8b5b6babab6bbbdbbb6b5b6b4b1b7b6b4afabac +b1b6b4afb2b1adb3b8afbabab9b8b7b7b8b9bbb9b7b8babab5b1acabacb0 +b2b1b0b4b7b4b2b7bab9b8bbb5b2b2b4b2adacafaeb0aaa9afaca9b2b4b0 +ababaeb0b0aeafafaab4abafaaafb4babcbbbabfc0bebabcbdbbb8b5b2b2 +b4b3b2b4b6b7b5b4b0b7bbbab9bcbdbac0bcbabbb3a9a7aeaeb1b3b2b4b7 +b7b5b6b5b2afacacafb2b1b6bbbdbbb9bbbcb6bebab5b8b5acadada8b1b9 +b3b3bab9c0b9afb2c0bdb3b3b9b6b3b1b2b4b4b4b3b0aeb0b4b8b9b8b4b1 +acadb6bfbcb5bcbbbbbab9b8b7b6b6b4afaaaeb7bdbdc1beb6aca7a9a9a9 +acaeb0b2b4b4b4b3b1b1b0afadacababacafb1b2b1afafafb1afacaaaeb5 +b7b4b2b2b2b2b1afadaca9abaeb0b1b1afaeb0b2b3b4b3b0acaaa9aaa9aa +afb6b7b3bebbbdbbb0aeafa9afb2b6b7b6b7bbbeb2b2b3b4b5334a493530 +302f2e36252a34374e67615a5e5a422f304453464c50505358544c525350 +4b4a4f515053514f4c4b4c4d4e4e504e4a5057534b544a463f383d40393d +3e3e3d3e3e3e3e3d3c3a3a3d44494c52535354554e3c2c26282d384e5e41 +0e00070e161c1a1918211c16100e0c0c0f070c0d10141725416e9dcac997 +5f434441403d383124140b0c0c0c0b0f131616151212110d050100000200 +151b2346516a4d4a658e90d6cab4cfca9a5c26101a2f323434312a221a1a +1c21201b140d0c1b2124221d1713131b20241e140f151c291e15171c1e1f +201d161b2d3e5683acaa94785c5152504d45414146474544474244454649 +4b4b4641403e39312d2e2e3245525b686d6b6f706e6f707375787d6c7175 +6e677077708b962f042728272b2a262621272f3e66b3e3c18c828387807b +76767c828282828283817e80848581858786818081807d8382807b77787e +83858082817c82867d8686828180808081838180818383817d7a797b7f82 +818183837d7c818483858884818183847f7e7e7e7f79787e7b7881837f7a +7a7d7f7f7d7b7b7680787c777c81868886858889878486888683807e7e80 +7f7e80828382817d848786858787848a8685867f75747b7a7d7f7e808383 +8182817e7b78787b7e7c818586848283847e86837e827f777878737c847e +7e84838a83787b89867c7c85827c7a7b7d7c7c7b7874767a7e7e7d7a7671 +727b84817a8180807f7e7d7c7b7d7b7570737c828286837c726e70727171 +737577797979787676757472717070727577787775757577757270747b7d +7a78787878777573726f717476777775747678797a797672706f706f7075 +7c7d78827e81807573756f75787c7c7b7b7f82777778797ac3cec7b5b1b2 +b4b8bdb4c7d0bfc0c7b5c4bcab9a98a5b4bbb5b8bec2c3c3bebabdbfbdb8 +b7babcb9bcbbbab9babbbcbdbcbab7b7babbb8b6b6b2b1a99da0a59e9693 +928f8f8e8e8e91939594969aa2aabac2c5c1b9b0a39692909faebaccbf92 +564335353b3c3b3a32394240373132332e283038383f4641546d9ac1c6ae +9996939ba0a3a1978d857369584c45403e4037393b3e3a34343942433438 +41414d5a70a589a5bfc0c4dfc1a8928c7f491d1a2227323c403f3c393133 +363c3e3c38353035393d403d38342a343f433e352d2a3c40444136313b49 +4737313c46537497b9c4c0a797989fa0a09d9fa4a6a3a0a0a0a2a09c9b9f +9d9894928f8a857e79787b8d96a3bccdd0d5dedad9dae0e4e4e1d5dce2dc +d6e0e2d0d7f2b45e494f4c474645575858524e6fbbf0e5d1dde2e0dedcda +d9dfe5e2e0dfdfe0dfdde0e4e4e0e3e5e5e1dfe1e2dee3e3e2dcd8d9e1e8 +e7e1dfdedbe4e8e0e6e5e2e2e3e4e5e6e6e3e2e3e6e6e4e0d8d6dae2e5e2 +e3e4e0dbdce1e4e2e1e2dcdadde1e1dedddfdfdfd9dae0dbd8e3e0dcd9da +dee2e2e0ddded8e7dee4dbe2e3e7e9e4e3e4e5e1e3e5e8e7e4e0e0e0e2e1 +e1e2e4e5e6e5e7ebebe7e6e7e8e7e6e2e4e7e3d7d8dfdadfe2e1e2e5e4df +e5e4e1dddad9dcdfdfe5e9eae8e4e4e6e0eae7e0e7e4dddcdfdce6ece3e1 +e6e8eaede3dfecf0e7e3e9e6e3e1e1e1e1dfe2e2e4e5e6e6e5e3e5e1dddb +e0e8e9e5e9e8e8e7e7e6e6e6e8e6dfd8d9e3eaeaedece8dedcdee2dedfdf +e0e2e3e3e4e4e1e1e1e1e1e0dfdedcdfe3e4e2dfdfdfdfdcdce0e2e1e3e7 +e0e2e4e5e4e2e0ded9dbdfe1e3e2e1dfdcdfe2e4e4e2dfdddadadadbe2e9 +e9e1e3dee5e6dddee2dee3e3e4e2e2e1e2e2dfe1e2e3e52c3b3a2f2f3230 +30312a425755687d74837c6b5b59687a847e848c909292908c8f918f8a89 +8c8b8889888786868788898a888686898a8a878783837b6f727770676665 +64646363636566656362656b7182898c8880776a5f5a5b6b7c8ca0956b38 +2819181d1f1e1e161f292a211c1e2427211f1e171920213a588ab2b4997e +756c6e727370665c54463e352e2b2d2d2c1917191d1c18181d252414161c +1a242a2f54212f3d445d97a2a8a8a993501206111721292b292421191c22 +282c2c28231c1e22262926211d131d282c271e1613202428251b16202e2c +1c15202936577aa0aca68c797a7e7b78737174736e6b6a6c6e6c68696d6c +676363625d58534e4944525b6c87999fa4aca8a5a6a9aba8a4979ea8a5a2 +b0b4a6afcd923c282e2d2b312e363334363f67b5e2c8a8aeb2b7b5ada8aa +b1b7b9b7b8b8b9b8b6b7bbb9b5babcbab6b4b6b4b0b5b5b3ada9aaafb6b4 +aeafaeabb4bab2b8b7b7b7b8b9bcbdbdbab7b8bbbbb6b2aaa8aab2b5b2b0 +b4b7b4b3b8bbb9b6b7b0aeafb3b2afaeb1afafa9aab0aba8b3b0aca9aaae +b2b2b0afb0a9b8acb2a9b0b1b8bab9b8bdbebcbabcbdbcb9b5b2b2b4b3b2 +b3b5b6b4b3b5b9bcb9b8bcbfbebdb9b9bcb4a8a6adabb0b3b2b3b6b5b0b6 +b5b2aeabaaadb0adb3babdbbb9bbbdb7c1bcb5b8b5abaaaca9b4bab1afb7 +b9bbbeb6b2bfc3bab6bbb8b6b4b4b4b2b0b3b3b3b4b5b5b3b2b4b3afadb2 +babbb7bbbabab9b9b8b8b8b5b3aea7abb5bdbdbfbeb7ada8aaa9a7acaeaf +b1b2b2b3b3b0b0b0b0b0afaeadabaeb2b3b1aeaeaeaeababafb1b0b2b6af +b1b3b4b3b1afada8aaaeb0b2b1b0aeabaeb1b3b3b1aeaca9a9a9aab1b8b8 +b3b6b4b8b9afadafabb0b2b3b4b5b7b8b8b2b3b4b5b7354340302f312e30 +30283d4e45526256635847322e39484c464a5155575754505456544f4e51 +514e504f4e4d4d4e4f504f4d4b4b4f504f4f4f4d4f473d40453f3b3c3b39 +3a3939393e3f3d3b3a3d4446515457534b4235292727394b5b6f6340160d +030612171a1d151e241f1309060d150f0f0d08101f26476797b9b0886354 +4b4d504d473b31291d1b17161a1f2525110e1014120d0d11151200000200 +06132b5d38516d7a92c5c4c0b6b19a561a111b21292f302c241f1516191d +201f1b1713161a1e211e19150b1520241f160e0d1d212421140f17252515 +111d2b3a5c7e9ca299775f58554e474140444644434445474743464a4b47 +4545433e39332e2b263239455b67676a716b6b6c717676776e75786f6670 +766a7ba16f2319272b2a2e26272328324674bfe2b688828183817975767d +838381818182817f81858480848685817f81807c81817f7975767c83857f +7f7e7a8388808483808081828485858280818484827e7876798185828183 +837d7d82858383847f7d7e82848180807f7e78797f7a77827f7b78797d81 +817f7b7c7584797f767d7e848684838687858486888784807e7e807f7e7f +818281808286888584878988878384878074737a777c7f7e7f82817c8281 +7e7a7776797c787e8486848283857f89857e827f767577747f857c7a8183 +85887f7b888c837f87847f7d7d7d7a787b7b797a7b7b78777a787472777f +807c807f7f7e7e7d7d7d7c7a746d707a828284837d736f71726f73747577 +7878797976767676767574737174787977747474747171757776787c7577 +797a797775736e7074767877767471747779797774726f6f6f70777e7e78 +7b787d7e74737672777879797a7b7c7c7778797a7cb5bfb9b0b3b5b4b9b1 +b8dfe8c7c0cabfb4a3918ea5bdc4bcb9bcbfc2c0bdbdc2bfc2c2bebcbdbc +b8b6b6b6b7b9babbbcbdb7b4b7b9b7b6b9b5bbc3bdadacaea69a99979493 +9191929496989592939ba2b6c3c8bdaea49d97998ca5c9cac8cdc8a47648 +34353d4145423a3434393a3329372a30332d3b4b423d51729cc5d1b8968e +969ea4aaadb1b2aea18e7a6a5d524c534c4540372f313737413c38423e35 +434b5d7d7cafc9b1b4dab4908e966a3b312223262c32383e40433a302c34 +3b3e3d3a342e2f373d3d3a382f29313f463f3530323a41403a383a3b4343 +393440566387b2cebea49c9a969c9b9ca1a4a09d9ca3a4a09b999f9d9898 +96938c86807672757c7e8caec5c8cae0dad7d8dfdfdbd4e0d6dce2dad7db +dad8d4ed9e3b495c464d495656544f5075c3efe2d1dfe1dcdcdbd9d9e0e6 +e2e0dee2e3e2dfe1e3e1dcdfe2e3dfdfe2e4e1e1e2e1dbd6d7e0e7e5dfdd +dcdbe5ebe3dfdfdee1e4e8ebede7e4e3e4e6e6e5e1d7d5dae4e8e4e5e5e3 +dedfe3e5e0dddbdad8dde2e4e2e1e4e2e2dbdce2dcdae5dddad8dadfe3e3 +e2e0e1daece0e7dde5e1e4e7e1e1e1e2dfe2e4e8e7e4e0e1e0e5e3e3e3e5 +e5e6e5ebeeebe5e4e7eaeae4e0e4e9e6d8d7ded8dfe2e0e1e5e2dce6e5e1 +ddd9d8dadcdbe1e6e6e2dddde0dee9e7e0e7e5dfdddedee8ece0dce3e7e5 +f0eae1eaf1ece7ebe9e6e4e3e1dfdce0e2e6e7e5e1dedae6e5e2dddde3e7 +e7e5e5e5e5e5e5e4e4dfe2e1dddde5e8e5e6e8e7dfdfe2e5e0e0dfe0e0e1 +e2e3e3e0e2e3e5e5e5e4e3dce0e4e5e2dedddedcd8dce4e5dee0e8dee0e4 +e6e6e4e0ded7dadee1e3e3e2e1dadde1e5e7e6e4e2dddedcdde3e9e7dedb +d7e1e4dddde3dfe3e1dfe0e0dfdcdbdddddee0e124302c252b2f2e332d3b +6a816c7085807463515068838a8585888d908f8c8f94919494908e8f8b87 +83838384858687888b8583868886888b868c9690807f81786b6a68676666 +6667696b68645e5d636b7e898e85766c655f6457719598969e9d82582a15 +161d2328241e181b21231c162b1e1e1c0f1b28211f345987b2bfa27d6c6f +7378797a7d7e7b7264564b413832342b24201913151c1b251f19221b111d +1d1e230a28403856a39f95a0a36e2f1d111416191e2326282c2319182028 +2b2a261d1718202626232118121a282f281e14161e26251f1d1f2028271d +17223848719db7a78b817c7577737072706b65666d706c67676d6c676969 +66605a544d453d43455679919699aea8a3a4a6a59d95a29ba2aba6a7aeb1 +b1afca7b18273a283530363233374472bde1c3a6afafb2b2aba7aab2b8b9 +b7b7bbbcbbb8b8bab6b1b6b9b8b4b4b7b6b3b3b4b2aca7a8aeb5b2acadac +abb5bdb5b1b1b3b6b9bdc2c4bebbb8b9bbbbb7b3a9a7aab4b8b4b2b5bab7 +b6babcb7b2b0aeacafb4b5b3b2b6b2b2abacb2acaab5adaaa8aaafb3b3b2 +b2b3abbdaeb5abb3afb5b8b6b6babbbab9bbbdbcb9b5b3b2b7b5b4b4b6b6 +b4b3b9bcbcb7b6bcc1c1bbb7b9beb7a9a5aca9b0b3b1b2b6b3adb7b6b2ae +aaa9abada9afb7b9b5b2b4b7b5c0bcb5b8b6adabababb6baaeaab4b8b6c1 +bdb4bdc4bfbabdbbb9b7b6b4b0adb1b3b5b6b4b0aca9b5b7b4afafb5b9b9 +b7b7b7b7b7b7b6b6acafb0acafb7bbb8b8bab6aeabaeaca9adaeafafb0b1 +b2b2afb1b2b4b4b4b3b2abafb3b4b1adacadaba7abb3b4adafb7adafb3b5 +b5b3afada6a9adb0b2b2b1b0a9acb0b4b6b5b3b1acadabacb2b8b6b0aead +b4b6acacb0acb0aeaeafb2b2b2b1afafb0b2b32b36322a2d302d32293560 +705757685f513f2d273c53584d4c4e525554515358565959555354514d4a +4a4a4b4c4d4e4f504a484b4e4c4d504e545d5949484a463d3e3e3d3c3b3c +3d3f41403c373740444f575c52453b342e32253f636361686a5532080001 +0e1b24221d151417150c051d12100e0410221c1f365c86acb59569515051 +53504d4d4e4c463c342f2b2721221a15130e080a13101911070d0500060e +192f2453766e8acdbea9aeac773b281919191b1f222424261d1311192125 +231d150f10181e1e1b19100a122027201811131b1f1c1412141721231c1b +2a424f739ab1997563584a4a42414648434042494b4742444a4b474b4a49 +433d372f28242827304f62615f736d696a71736e69796f72756c676d7176 +7ba25d051e3828312929242a354e7dc7e0af84817c80807a74767e848381 +80848584818284817c8083837f7f82827f7f807e7873747b82837d7d7c7a +848b837d7d7c7f82868a8c868381828484837f7775798388848384868080 +8486817f7d7d7b7e838785848582817a7b817b79847c7977797e8282817e +7f77897b8278807c818481818384838385888784807f7e83818080828281 +808689888382878b8b8581848983757279757c7f7d7e827f7983827e7a76 +757779747a81827e7b7c7f7d88857e828078767676818579757e82808b86 +7d868d8883898782807f7d7875797b7b7c7a76716e7b7c7974747a7e7e7c +7c7c7c7c7c7b7b73767672747c807d7d7f7c747275757174747575767778 +787577787a7a7a79787175797a77737273716d71797a73757d7375797b7b +7975736c6f7376787877766f72767a7c7b797772737172787e7c75737179 +7b7272777377757475777776757474757778b8b1b2b7bcbebbb4a6e6d99c +9cbfc3b6978c90a4b8bebbbab3babdbdbcbfbfbdbfbebcbbbcbdc0c1bcbb +bab8b7b5b4b3b4b1b1b8bdbebdc0bdbbb9b8b7b6b3b0a5a5a49d96939395 +9091979a968f8f94abb0b2aa9d9390929799a5bbc8c7c4bec4b79b714b3b +3a3d41403d373a3f3c323531363b31252f44534a5277a3bac2c799989aa4 +aaa8adb6bbbab4a5989185796f665f564e48423f3c383436363232333842 +576c869fb1b7b3cdc89e8f97773e2b1d202c2c2f393c4438373f3a292b3a +3f403d362f303b45433f3a3534373d413e342c313e46423b2d3944443c38 +3f455177abc9c3ab99979ba1a3a1a4a7a49ca09d9b9a9a9a99989f969191 +908a807f7d726c788ea1b3bfd3dbdcd6dae1e0d5d7d8dde1e1dedbd9cff8 +dce1843b494d44524d515e484b89dce5dbcedbe7dcd3dbdcdbdce0e0e2e1 +dcdfe2e3e2dfdfdedee3e5e1e0e3e3dde0ece5d7d9dddedeeae7e0dbdbe0 +e4e6e0e0e1e5e4e1e0e4e5e2e2e5e5e3e5e9dad7dae2e5e1e2e3e6e2e0de +dededfdedfdee0e2e3e3e1dfdfe1e3e3e1e0e1e2e3e1dedee1e4e5e6e0e0 +e3e6e5dedcdfe0e2e6e5e4e1e1e0e0e3e6e6e3e0e0dfe3e2e2e3e5e6e7e6 +e8eae9e5e2e1e4e9e2e3e3e2e3e0dfded7dfe1dcdee7e7e0e9ebebe7e0da +d8d9e5e4e2e1e1e0e0e0e3e5e3dbdde2e6e3e1e4e5e7e6e6e5e5ebeadedd +e8eae3e5e1e2e3e1dedde0e3d9e2eae7e2e1e3e1e2dddbdde2e5e6e5e8e8 +e7e7e7e7e7e7e2e3e1dfdcdfe6ece6e5e3dfe2e6e9e3e2e2e3e3e2e1dfdd +dce0e5e6e4e2e2e3dcdcdfe5e5e1dedfdee1e1dcdadddfdee0dde4e6dedf +e4e1dde3e7e3dfdfdedbdadbdedfdfdddad8e0e0dedcdee2e4e2e7dcdce2 +e3dbd9dee2e3e1ded8d7dadee1e0dfdedc312a25282b2f31322f7c7c4850 +787e74574e52697d8481837f868b8b8b8e8e8c91908e8d8e8f8f90898887 +858381807f827f80878c8d8f928f8d8c8b8a898682757675716a67686a65 +666768625b595c72787a74675d5a5c6265718795949090a0987b502a1919 +1d20211e1a1d24211a1e1d22271d0f152732272e5788a6b2b57e76757c7d +78787e848580746c665e554c473f38312d2622211b171819151314191711 +0e0e1d354a6196ab9088916c311c0f101a191a22232b1f1e272214152528 +29261f1819242e2c28231e1d20262a22181016232b2721121e28281f1a21 +293c6598b5ae937e79787a787472716c666a686665686868677169646564 +5e575147383342586e818da2a8a8a1a1a7a2969a9da3a9adaeaeada7d1b6 +bb5e15232b2b392d2f41344387d7d6bba2a8b5b2a9abaaacaeb2b7b9bab5 +b8bbbcb9b6b4b3b5babab6b5b8b5afb2beb6a8aaaeacacb7b4b0ababb0b6 +b8b2b2b6bab9b6b7bbbcb9b7babab8b7bbaca9aab2b5b1afb3bdbbb7b5b5 +b5b4b3b3b2b2b4b4b4b2b1afb1b3b3b1b0b1b2b3b1aeaeb1b4b5b6b2b2b4 +b7b3acaaadaeb3b7bab9bababbb7babbbbb8b5b2b1b5b4b3b4b6b7b5b4b6 +b8bab7b4b6bbc0b9bab8b7b4b1adaca8b0b2adafb8b8b1babcbcb8b1aba9 +aab3b2b3b4b4b5b7b7babcb8b0aeb3b4b1aeb1b3b5b4b4b6b6bcbbb1b0bb +bdb6b8b3b4b6b4b1b0b1b4aab3b9b6b1b0b1b0b1afadafb4b7b8b7babab9 +b9b9b9b9b9afb0b0aeaeb1b9bfb8b7b2aeaeb2b0acafb1b2b2b1b0aeacab +afb4b5b3b1b1b2ababaeb4b4b0adaeadb0b0aba9acaeadafacb3b5adaeb3 +b0acb2b6b2aeaeadaaa9aaadaeaeaca9a7afafadabadb1b3b4bab2afb4b2 +aaa6abafb0b0adaaaab0b4b3b2b1b0ae37302b2e30333130276f6a30365a +5f5434292d3f51544f4b464c5050505353515655535253545556504f4e4c +4a4847464742454c515253565452515251504d4e454849443d3a3d3f3a3c +3f433d36373745474b4539312e30363641555e5b565566624c2709000812 +1b1e1c16191d181016161b201604081721141e4a81a5b5b36d5b5859544a +464b4e51504945433d352e2a26201f1c1a1a1a150f0e0b0501000407131e +314b6b8192becaa79a9f7a3b1f0e101815151c1e261a1a25201317242221 +1e1710111c2624201b1615181e241f150d0f1a201c140715242724222d35 +416594ac9d796053504f4e4b4d4d4b444846444345454746504a47484943 +3b372f201620324150586a6f6f6b6c75736a6e71737674706d6c699a8797 +4708202a2632202339354e94ded1a47d798280777a77787a7e8183837e81 +848583807f7e7f8485818083817b7e8a8274767a79798885807b7a7f8486 +7e7e7f83827f7f8384818083838183877a777981858180828984817f7f7f +818082818183868684807f808282807f808182807d7d808384857e7e8083 +8079777a7b7f8385848383848184868683807e7d81807f80828382818385 +86838081858a83848382807d7a79747c7e797b84847d868888847d777576 +7e7d7d7d7d7e7f7f82848179787d7f7c797c7e807f7f808086857a798486 +7f817f807f7d7a79797c727b7f7c7776767577747274797c7d7c7f7f7e7e +7e7e7e7e7677767473767e847d7c78747579797476777878777674727175 +7a7b797777787171747a7a767374737676716f7274737572797b73747976 +72787c78747473706f70737474726f6d75757371737779797f7674797870 +6d72767776736f6f747878777675739ab6b7b2bebcaeadc2c2a78d959c98 +999695a0b0bbbcbab7b4bbbebdbcbfc0bebdbcbbbabababcbdbbbab8b6b8 +b9bcbdb9b5b3b8bab8b6b8bab9b7b7b8b8b6b4adadaba69e989392939090 +95959291919aa0a6a1968d8c8d8892a7bcc7c7c6c5bbcbd5c09265443332 +3f484136343e473b3735353028303c6a6f5f4e69a4bfbbb7a38f8c98a1a3 +a2b4bec0bdb5afa6998f84786e67656262544b43403d39383a3539455469 +8299a8a5b6c4c1af95745a32292830373f3b2b3840433c393a3833363a3e +403d383331333a403e363133383f41413c37383f463c3a393b3f41403c47 +547094bbcbb79aa199969ca09da0a49b9a999a999a98969e979396958e88 +867f766c6b717b90a1bdcbd4d3d5dcdfdad0d5dadddfdedcd9dedbe7e5d1 +664459485655555844569ee0e5dbd4dfe7dbd5dedfdcdde1e1e1e0dedfe0 +e2e3e1dfdddee2e4e2e2e5e6e1e1ece5d8dbdfdfe0e5e5e1dfdfe2e3e3e3 +e3e3e7e6e2e2e5e3e0e1e3e4e1e3e7ddd8dadfe2e0e3e5e2e0e0e0e0e1e2 +e1e0dedddcdddedddcdfe0e1e1dfdfe0e2e5e3e0e0e2e3e3e3e4e1e1e4e4 +dfdcdde0e2e6e6e6e3e4e2e2e4e7e7e4e1e1e1e2e1e1e2e4e5e6e5e9e7e3 +e1e2e2e3e3e7e7e7e5e4e0dddbdae1e1dcdde5e6e0e4e6e6e3dedbdcdee2 +e2e0e0e2e1e1e2dfe1dfdadde2e6e4e1e3e4e3e1e2e3e6e8e9e0dee8eae5 +e9e6e7e7e3e0dee1e4dae1e7e5e3e4e6e4e6e1dddde0e3e5e5e6e6e6e5e4 +e4e4e3e2e3e1dfdbdee3e9e5e5e6e3e6e8e8e1e2e2e4e5e5e4e3e2e6e8e8 +e6e2dededfe0dddee2e3e0dfe2e1e4e3dedcdee0dfdedce3e6e0e2e9e6d7 +dee3e1dedcd9d5dbdde1e2e1dfdddde0dfdddcdde1e3e1e4dfdededfdbda +dce2e3e3e1dddbdadbdedededede1c332e232b2b26325a6a5b4a545a5354 +565964758084828380878c8b8b8e8f8d8f8e8d8c8c8c8b8c888785838485 +8889878382878987888a8c8b8a8a8b8b89877d7d7b78726c696768656365 +635d5b5b636a706c62595859545e72889290909394a9b29c70412010101d +27221717212a1c191d23211a1b2047463325488bb1aea1886f696d72716d +7b8287837f7b716a6a62574d47464544372e2623201d1c1e1a18130d0c16 +28383f6081908e826750261a191f232822101d2427221f211f1a1e232729 +26211c1a1c2329271f1a1c21232525211c1d252c211f1d1f222322203241 +5c81a8b59f7f80756e706f6b696d66656465676867656d69666968625c58 +493e34363d4a5d6e8b99a09e9da2a29d969ba2a8aaacacacb5b3bfbeaa40 +1c342b3b35353c31509edbd4b9a4abb4b1adaeadadafb3b8b8b9b7b8b9bb +bab8b4b2b5b9b9b7b7bab8b3b3beb6a9acb0adaeb2b2b1afafb2b5b5b5b5 +b8bcbbb7b9bcbab7b6b8b9b6b5b9afaaaaafb2b0b0b5b9b9b7b7b7b8b7b6 +b4b2afaeaeafaeaeafb0b1b1afafb0b2b5b3b0b0b2b3b3b3b6b3b2b5b2ad +aaabaeb3b7bbbbbcbdbdb9bbbcbcb9b6b3b3b4b3b2b3b5b6b4b3b7b5b4b3 +b4b7bababebebcbab5b1aba9abb2b2adaeb6b7b1b5b7b7b4afacadafb0b0 +b1b3b5b6b8b9b6b8b4afaeb3b4b2aeb0b2b1afb0b4b7b9bab3b1bbbdb8bc +b8b9bab6b3b1b2b5abb2b6b4b2b3b4b3b5b3afafb2b5b7b7b8b8b8b7b6b6 +b6b5afb0b0aeadb0b6bcb7b7b5b2b2b4afaaafb1b3b4b4b3b2b1b5b7b7b5 +b1adadaeafacadb1b2afaeb1b0b3b2adabadafaeadabb2b5afb1b8b5a6ad +b2b0adaba8a4aaacb0b1b0aeacacafaeacabacb0b2b3b7b2b0b0aeaaa7a9 +afb0b0b0afadadaeb0b0b0b0b01f3835293330262d4d56412d343a343533 +343f4b54534f4a474d51505053545254535251515151524f4e4c4a4b4c4f +504c46474c4e4c4c4e51504f4f505050504c4d4b47433d393a3b3a3a3f40 +3b39373a3c44423a3233342d3646585c575254536a7a6a431d0600041422 +1f14131d2619171b1f1c0f0a082926160f3f8ebeb79673564b4a48403944 +4c5051504c4540403c342e2e3135392f28201b1812111005050c13213854 +6a718faab0a9967859261514181c201b07162024212024231d1a1b1f211e +191412141b211f1712141b2022211a1312181f1616191e262b2c2c39435b +7a9aa085615f514a4d4e4a4a4e46434243444546444c48474c4b47433e31 +2519161821323f5a666e6a6c72736e686d737474716e6b75788c958d2d14 +2e25322a2a38335caae2cda07c7b7f7f7c7d7a797b7f8282828081828484 +827f7d7f8384828285847f7f8a8275787c7a7b8383817f7e818383818181 +8584808184827f7f81827f81857d78797e82808184858281818182848383 +817e7d8081807d7f7f80807e7e7f8184827f7f81828282827f7e817f7a77 +787b7f8386868586868385878784817f7f807f7e7f818281808482807f80 +82848488888785817d7876777e7e797a82837d818383807b78797b7b7b7b +7c7e7f80817e807d78787d7f7d797b7d7c7a7b7e8183847c7a8486818584 +85837f7c7a7a7d737a7c7a787979787b787474777a7c7c7d7d7d7c7b7b7b +7a7677767472757b817c7c7b78797b78727677797a7a7978777b7d7d7b77 +737374757273777875747776797873717375747371787b75777e7b6c7378 +7673716e6a707276777674727275747271727678787c77757574706e7076 +777776747272737575757575a4a6b5bfbdb7b9bbc09b81848d898b9394a1 +b2babbbbbab5b7bcbfbebdc0c1bfbbbbbab9b7b6b7b7b9b7b5b4b7bbc0c3 +bab5b3b7b8b6b3b4b9b8b8b9bcbdbbbab4b3b2aea9a39b9698918e939693 +918f8d9090887e7b7e858595aec0c8c7cccfb9c2ced4ccb590714b423b3c +4242403e443f3633302f2f31588b9868476496b4cebb9f8a89949ea0a4b0 +b9bbbab8b5aea4988b827a746d6b63574e49423b38393737383a455a758b +a7abb8cccfb385695f36386163413137393936363f4843342d2f353c4140 +3a3430353b3d39353333373e433e3532373f433c37383d41403a303d4c63 +8fbcc9bfa19797a3a39698a39999989a9c9c9b989a98989b9a938f908781 +76695e5e71849cb4c8ced0d6ddddd2d5dcdee0dfdedde5cde6dffaad4b52 +4c5252514e4365b1e3e2dad8e3e3d8d9dddedddfe3e3e4e2e0dfdee0e3e3 +e0dcdee1e4e2e3e6e8e5e0eae5d9dcdfe0e3e1e2e1e3e4e3e1e1e4e4e4e8 +e6e2e1e5e2dfe0e2e2dfe1e4dedadadddfdfe4e7dedee0e2e3e3e5e5e4e0 +dddadadbdbdbdfe0e0dedcdddfe1e2e0e0e1e4e5e5e4e8e2dfe1e3dfdcdb +e0e1e6e6e7e5e6e5e4e6e9e8e5e2e3e3e1dfdedfe1e2e4e3e8e3dddde2e3 +e1dee9e9e9e7e6e2dfdcdde2e0dadbe3e6e2e1e3e4e1dcdadcdfdfe0e0e0 +e3e3e3e4e1e2e1dddfe2e5e3dfe2e3e0dddde1e7e5e9e2e0e7e8e6edebea +e8e4e0dfe2e4dde1e4e2e3e7e9e6ebe4dfdcdde1e4e6e7e7e6e5e4e3e2e2 +e2e3e2dfdadbe0e5e3e6e8e6e9e9e7e0e0e1e3e4e5e5e4e4e5e5e4e2e1e1 +e4e7e3dfdee0e1dfe1e5e3e6e5e0dde0e2e1dedae1e4dee1e7e4d6dee3e2 +e0dedad5d8dce1e2e0dedfe0dfdddcdcdcdee0e1e0e1e0dadadddedbe1e1 +e2e2e1ded9d6dbdddedfe02c2a2e322c2b394c6551444e524a444c556778 +8182838281838a8d8c8c8f908e8d8c8b8a888786868684828182868b8f88 +838286878585868b8a8b8c8f908e8d858382807e78716c6e66616364615c +5a585c5c564d4a4f5654637a8b908f91998e9ba6ada78f6a4c271d171a1f +201e1c1e1b1c2125251e17345f683b224884a7bba5846c666c6f6e6c747c +7c7b7976747873685f57524d4a4339302b251e1b1c1a17130e0e131c2233 +364e738f8c76615327274e4f2b161b1c1c1918212b261a15181e252a2923 +1d191e2426221e1c1c1b2228231a171c2428211b1c2024231f192938507b +a6b2a48375727a76676570646466686a6a69686a676a6c6b666161544e43 +362c2e3f536b819398989ca0a1989da4a9abacadafb9a3bdb7cf83202c2e +353233363463b3ded1b5a7aeb0aeb1adacaeb1b5babbbbb9b8b7b9babab5 +b1b5b8b9b7b8bbbab7b2bcb6aaadb0aeb1aeafb1b3b4b3b3b3b6b6b9bdbb +b7b8bcb9b6b5b7b7b4b3b6b0acaaadafafb1b7b5b7b7b9babababab8b4af +acabacacadafb0b0aeacadafb1b2b0b0b1b4b5b5b4bab4b0b2b1adaaa9ae +b2b7bbbcbebfc0bbbdbebdbab7b5b5b3b1afb0b2b3b2b1b6b1aeafb4b8b8 +b5c0c0bebcb7b3adaaaeb3b1abacb4b7b3b2b4b5b2adabadb0adaeb1b3b6 +b8babbb8b9b6b2b0b3b3b1acafb1aeababb2b8b6bab5b3babbb9c0bdbcbb +b7b3b2b3b5aeb2b3b1b2b6b7b5bab6b1aeafb3b6b8b9b9b8b7b6b5b4b4af +b0b1aeacadb3b8b5b8b7b5b5b5aea9adb0b2b3b4b4b3b3b4b4b3b1b0b0b3 +b6b2aeadafb0aeb0b4b2b5b4afacafb1b0ada9b0b3adb0b6b3a5adb2b1af +ada9a4a7abb0b1afadaeafaeacabababadafb3b3b4b2aca9aaaaa7adaeaf +b1b3b0aca9adacadaeaf2e2c3438332e36435338252c3027242c32415256 +55524f484a4f52515154555352545352504f4e4e4f4d4b4a4c5055564d48 +474b4d4b4a4b504f5051545553545152514e4b453f3a3e39373b3f3e3c38 +303435312c2a31383442535f5d5655594a5868727262452f0f0b0b111b1e +1c1b1d1b1d21231b0c001038421e124790b1b59771544848453d393e4546 +4544414247463e3937363639362f28231f1815140c080a0b14253a4b646a +7f9fb2a7896c5322204746200b1014141516232f2b1d1110161d22211b15 +11161c1e1a161414171e211c110c11191f1a171b222828261f2b374a7298 +a08f6b5a575e5949485145444547474746444646494e4f49474739312617 +0b0a1a2b4256676a696c716f686c7577797773737a678586ac6a1021242d +2729343970c0e4c99a7e7c7b7e807c797a7d81848584828180828484807c +7f828482838686837e888276797c7b7e7f80818383828181828282868480 +8084817e7e80807d7f827e7a797c7f7f8286818081838484878787837e7b +7d7e7e7c7f7f7f7d7b7c7e80817f7f808384848386807c7e7e7a77767b7e +83868787888985878988858281817f7d7b7c7e7f7f7e837e7a7b8083827f +8a8a8987837f7a777a7f7d777880837f7e80817e7977797c78797b7c7f81 +828380817f7b7a7d7e7c777a7c7976767c8280847e7c8384828989888480 +7c7b7b7d767a7977787c7c7a807b767374787b7d7e7e7d7c7b7a79797677 +77747172787d7a7d7d7b7c7c777176787a7b7c7c7b7b7c7c7b7978787b7e +787473757674767a787b7a7572757776736f767973767c796b7378777573 +6f6a6d717677757374757472717171737578787977716f71716e74757677 +7875716e7272737475b89fb0bbacc4daba99877f7f7d85969893a5b6b9b9 +bab9b4b8bdc0bfbdc0c2c0bcbbbab8b6b4b4b3b6b5b4b4b6b9bcbeb6b3b2 +b7bab9b7b9bcbcbbbdbfc0bfbfbcb9b5b5b4b0a9a39e97939394918f8f8b +867a685c5d6a768293abbdc7c9cfd0d5c9bfbec9cdc0ac946b443a434641 +3c46453c343335312e3272b3b376455b8ebbc8c5ab928b92999ca4a9a9a9 +acb2af9f98968e84756358534a44413e3835353837312f3140566b97abb6 +bbc3c3a27a6949313c6b978e5f36343a444236374137333031353b40423d +3630323b403d38353334383e3e38323b3e3f3d39393e41313c44465883b4 +d3c0aa999ba3a19b98989a9a9da0a19e9c99999da19e9795978c8a837160 +5962707e96b2c1cbd2d7d7d4d8dcdcdcdde0e3e1e1e2d7e2ec7744554e4e +4f494e7fc5e2ddd7dbe7e1d5dbdadddce0e5e6e7e6e3dfdcdde3e4e1dce0 +e1e3e2e3e4e6e5dfe7e2d8dcdedee3e0e0e0e4e5e2e0e1e3e3e3e7e5e1e0 +e3e1dfe0e3e3dfe0e3dcdbdddededfe4e5dddee2e4e4e4e5e5e8e4e1dede +dddcdbdfdfdedcdadadde0dbdcdde1e6e9e9e8ebe2dddfe3e0dbd9dee0e5 +e5e7e6e7e6e6e8eae9e6e4e5e5dfdddcdddfe0e3e2e5e2dedee1e1e0dfe6 +e7e9e8e9e5e4e1dee0ded9dbe2e7e6e1e4e6e3dedadadce1e2e2e3e5e4e4 +e5e9e8e7e3e3e1e2e0dde2e4e2dddcdfe5e2e9e4e0e4e3e3ecebe9e6e3e0 +e0e3e4e2e3e3e0e3e7e9e5ece5dfdbdce0e5e9eae9e8e7e6e4e3e3e3e4e3 +e0dad9dce0e2e5e8e6e7e7e6dfdfdfe1e2e3e2e1e0e4e3e0dedfe2e7eae3 +dfdee1e1dfe0e3e3e6e5e0dde0e2e1e0dadee0d9dbe0dcdde2e5e4e3e4e1 +dcd4d9dedfdcdbdde0dedcdbdcdbdbdee1e0e4e3dbd9dfe2dddfdedde0e2 +e0dad6dcdcdddedf3d222d34254467594b474a4d47494f51546b7c808085 +8480858b8e8d8c8f918f8d8c8b8987858382838281818184878983818186 +8988898b8e8e8e90929392908a8786868785807a746d6766645f5a5a5954 +49392e303d4955647a898f909298a59e93959fa497856e4620171f241e16 +1e1f202025282014104883844d24427ba8b4af9174686a6c696c6d6a6667 +6b7070706d675c4e3e3430292423201b1818171716141213131227303a4b +6c87826858371e27547f724118141926231719251e1c191a1e24292b261f +191b242926211a18191d23231d17202323211d1d212719272f31436f9eb9 +a58b767579756e696565676b6e6f6c6a67676b6e6d6663655b595242312a +333f4d647e8c92989d9d9da0a4a6a8a9aeb2b3b5b8aeb7c14b1d33302e31 +34437ec7ddcbb0a8afaca9b2aaabadb2b7bdbebfbcb8b5b6babbb6b1b7b8 +b8b7b8b9b8b7b1b9b3a9adafacb1adadb0b4b5b2b2b3b5b5b8bcbab6b7ba +b8b6b5b8b8b4b2b5aeadadaeaeafb1b5b4b7b9bbbbbbbababcb8b3b0afae +adadafafaeacaaaaadb0abacadb1b6b9b9b8bdb4aeb0b1aea9a7acb1b6ba +bcbfc0c1bdbfbfbebbb9b7b7b1afadaeb0b1b1b0b3b0afb0b3b6b7b6bdbe +bebdbab6b2afafb1afaaacb3b8b7b2b5b7b4afababadafb0b3b6b8b9bbbc +c0bfbcb8b4b2b0aeaaafb2b0abaab0b6b3bab7b3b7b6b6bfbdbbb9b6b3b3 +b4b5b3b4b2afb2b6b7b4bbb7b1adaeb2b7bbbcbbbab9b8b6b5b5b0b1b2af +acabafb3b4b7b7b5b3b3ada8acaeb0b1b2b1b0afb3b2afadaeb1b6b9b2ae +adb0b0aeafb2b2b5b4afacafb1b0afa9adafa8aaafabacb1b4b3b2b3b0ab +a3a8adaeabaaacafadabaaabaaaaadb3b2b7b5aaa6acaea9abaaaaadb1b2 +ada9ababacadae4026333a29436249352b282821252f3131455655535350 +474c50535251545654555453514f4d4b4a4c4b4a4a4b4e51534a46474c4f +4e4e50535353555758575855545250504e4a46423d3a3d3e3c3b3a342f28 +1b141928343e485962605b595b635a5457656e695c4a290804131b18131c +1e1f1f2220100000225f66391b457fa4aba2805c4a46433c3b37342f3033 +3a3c3f413e382d231c1d1a1719181514120e0c0b0d1018252e4f5f6c7b96 +a99a785e371a224e7567360d09101e2015192219141112161c21231e1711 +131c211e19110f10141a1a140e171c1f1e1c1c232819262e2e3e6693ac94 +79625e615a514b4846484a4b4c494544444a4f4f48484a3d393424130c15 +1f2c415762676a6d6b676d73777979797a77787c788c9e320c2926232933 +498cd4e3c1937d7c787a847978797e8387888885817e7f8485817c818283 +82838484837d857f75797b797e7e7e80848481808181818185837f7f8280 +7e7e81817d7e817c7b7c7d7e7f828480808385858587878b87827f81807f +7c7f7e7d7b79797c7f7a7b7c808588888789807a7c7e7b7674797d828587 +88898a87898a89868483837d7b797a7c7d7e7d807d7b7c7f818180878889 +8886827f7c7b7d7b76787f84837e8183807b7777797a7b7d7f8182838488 +8785817e7c7b79757a7d7b76757a807d84807c807f7f888987827f7c7c7c +7d7b7c7875787c7c79817c767273777c8081807f7e7d7b7a7a7778787571 +707478797c7d7b7a7a7670757678797a7978777b7a777576797e81787473 +7676747578787b7a7572757776756f73756e70757172777a797879767169 +6e7374717072757371707170707378777c7a706d73757072717174777772 +6e7171727374a9b2b1a3b1d6cd998480847d77828f8a909ba6abb2bbbab2 +b9bfc1bfbdc0c2c0bebcbab8b5b3b4b3b8b8b8b8b8b7b6b5b7b3b3b8bcbc +bbbdbebdbcbdbfbfbebdc4c0bab9b9b7b3afa5a19f9b958d8c908c827058 +443f4a55667896b1c6cfd1cccbcfcec4bec0c3c5c9b08b65493c414a4042 +3e39383b3a382f3b75bcbf815b5e85abceccb1998c88999c9fa0a0a2a8a9 +99989a9890806d614c433a363230323735342f2a2a303f4f6796b2aba3ae +ae9e6663583c33619ab1976d433334353a40413f3b3632323639403a3433 +373c3d3c403832364146423a373b3f3f3c3b3f43483d3637415883a8dcc6 +a59399a6a09296989a9da0a1a19f9b9b9ea29f9998988a8885796b615a57 +637792aabeccd1d1d5d8d9d8d7d9dfe5deede7d7d1ffbe5354505955475c +9ddbdcd8d4dce9e2d3dadcdfdfe1e6e5e5e3e4dfdbdce2e3e1dde2e1e1e2 +e1e0e2e3dee4dfd7dadadbe2e4e0dee2e3dfdfe3e3e3e4e7e6e2e1e4e2df +e1e4e4dfe0e2d8dce0e0dfe0e3e2dfe1e5e5e3e1e2e3e7e5e4e3e2e0ddda +dfdfdedbd9d9dcdfdbdbdde0e5e7e7e7eae2dddee2dfdbd9dcdee3e4e6e5 +e6e5e7e8eae8e5e3e5e6e0dddcdcdee0e2e2e1e3e3e1e0dee0e3e5e6e9e9 +eae6e3e0dededcd9dce2e8e9dee3e7e7e2dddbdbe4e5e5e6e7e5e4e4e9e7 +e7e5e5e1e0dfdce1e6e6e2dfdee1e2e9e4dee0dddde7ebe8e6e4e4e5e6e7 +e5e5e4e0e1e5e6e2e8e3dfdbdce0e6ebeae9e8e7e5e4e3e2e3e5e4e1dad8 +dadde2e5e7e2e2e3e4e0e1e1e2e3e2e1dfdeeae7e2dedcdddfe0e0dedfe2 +e2dfdee0e0e4e3dedcdfe2e1e1daddded8dbdfdae0e2e2dfe0e3e3e0d4d8 +dcdddcdcdee0dfdbdbdddbd8dce1e2e6e5dcd9e0e4e1dedbd8dadddedcdb +dddddddddd273130273b696d4841474f4b41464d4854646f757c86857f86 +8d8f8d8c8f918f8f8d8b89868483828585858583828180848082878b8b8d +8f908f8f909292918f938f8b8a8c8d8a867c77736e655d595e5b54432c1b +18232e3c4e677f8f959491979d9d969093989ca189654023171b251b1f21 +202327241d0f164c93955b37406e98bab6977d6d646e6d6b66615f636765 +696b6b6456453a271f171515141518121316171714100b09263b37405d70 +734a4e412319467c91764c221212151a222928241f1b1b1f2229231d1c20 +252626251e171b262b271f1c1f2323202024282f261e222c436b8fc1aa88 +72757e77666465676a6e6f6d6b67676a6d6a646265595a574c3d332c2933 +455f76879397989ea1a4a2a2a4acb3b0c1bbada6d4922b302f373833529f +ded7c4aba7b0aaa7b1acadb0b3b8bcbcbcbdb8b4b5b9bab6b2b9b8b6b7b6 +b5b4b5b0b6b0a8ababa9b0b1adaeb2b3afb1b5b5b5b9bcbbb7b8bbb9b6b6 +b9b9b4b2b4aaaeb0b0afb0b0b2b6babcbcbab8b7b8bbb9b6b5b3b1aeacaf +afaeaba9a9acafababadb0b5b7b7b7bcb4aeafb0ada9a7aaafb4b9bbbebf +c0bebfbfbdbab8b7b8b2afadadafb1b0b0afb1b4b3b2b3b7babcbdbebebb +b7b1aeafafadaaadb3b9baafb4b8b8b3aeacacb2b3b6b9bababbbbc0bebc +bab6b2aeada9aeb4b4b0adafb2b3bab7b1b3b0b0babdbab9b7b7b8b7b8b6 +b6b3afb0b4b4b1b7b5b1adaeb2b8bdbcbbbab9b7b6b5b4b0b2b3b0acaaad +b0b4b7b6b1aeafaba9aeb0b1b2b1b0aeadb9b6b1adabacaeafafadaeb1b1 +aeadafafb3b2adabaeb1b0b0a9acada7aaaea9afb1b1aeafb2b2afa3a7ab +acababadafaeaaaaacaaa7abb3b4b9b7aba6adb0adaaa7a5a7acb0afaeac +acacacac2f3635293962613327292d261b222a25303d48494e5451464d52 +545251545654575553514e4c4b4a4e4e4e4e4d4c4b4a4d474a4f53535254 +55545455575756545b5753525353524e464544443f393a3d3a3224130707 +141f2c384d5e66655e595d62625a54586168705e41230c050e1c13191d1c +1e20190c000030777d4627356892b1a9886851444b433c362e2a2c33353d +3f413d3022190c07040607090d130e0e0f101011161a244c65646c86958f +59574726183f7284673b1103060a0f181f201c171313171a211b1514181d +1e1b1a110c121d242018151b1f1f1c191d212a201a1d2940698bba9f7a61 +5f655b4949484a4b4d4c48444242454b4a4546463838362d231b15121c2a +40515e66676366697274787a7d8075847c7173a96f1222262d30345aaeed +dbb98d7b7b7778837b7a7c7f8486868586817d7e8384817d838281828180 +80817c827c747777767d827e7e82827e7f838181828584808083817e7f82 +827d7e80787c7f7f7f80818182838686848284858a8885848583807b7f7e +7d7a78787b7e7a7a7c7f8486868688807a7b7d7a7674777b808486878889 +88898a88858383847e7b79797b7d7d7d7c7e807f7e7e8184868789898783 +7e7b7b7b7976797f85867b8084847f7a78787d7e80828383838388868583 +807c797874797f7f7b78797c7d84807a7c7979838986828080817f807e7e +7975767a79767d7a767273777d8281807f7e7c7b7a7977797976716f7275 +797c7c77757674717778797a79787675817e797573747677757374777774 +73757579787371747776766f72736d70746f7577777475787875696d7172 +7171737574707072706d7178797e7c716d747774716e6c6e727574737272 +727272a7bdaab1ddbf878e897f7a81878683848e8e939daebab9b3babfc1 +bebcbfc1c0bfbdbab6b4b3b4b4bcbdbdbdbcb8b4b2bcb8b7bbbebcbabcbd +bcbabbbcbcbab9c9c7c2bdbbb9b8b6adabaaa49b908e9186807057403232 +374257779bbcd1d3ccc0c5cbc9c7c8cac9c5cbc4a77f5c483c3d3c3d3e3e +3f434542273584c9c99b705b78a6c5cec3aa969595999fa09e9e9b9a999b +9b9b948d8674635144382f2f3233302d2a292b323b4c678699a0a4b0b1b1 +6e4e4f43354b6bbab89d6d493e3c31363940413e373230333b413e342f33 +3944403a37373b41453d39373a4144403c4639373d3c3b526fa0bfcfb89e +959696929597999c9d9e9c9d9b9ba0a09b9a998c8b8982796e5c4d525c70 +88a4b8c3c7d3d8dbdcdadde3eadcdde7dbe0e9ec844b4c5f59456bb6e3d4 +d3d3ddebe4d3d7dfe2e1e3e5e2e0dde4e0dcdcdfe1e1e0e4e1e0e2e1dee0 +e3dee3ddd7dad8d8e0e7e0dde2e1dddde4e3e2e3e8e7e3e3e6e2dfe1e5e4 +dfdfe1d6dde3e1dfe0e3e0e0e2e5e4e0dee0e3e3e1e2e2e2e0ddd9dfdfde +dcdad9dbdde1e0dedfe1e2e1e0e7e0dee0e2dedadadbdee3e3e5e4e5e4e6 +e7e8e6e3e2e4e5e1dedcdcdee0e4e4dfe3e5e3e0dee0e4e7e8eae9e8e2de +dbdfdedcdbdde1e6e9dadfe5e6e3e0dedfe4e5e5e6e8e6e4e3e2dfe1e3e5 +e0dfe0dee1e5e7e6e3dedde2e9e2dddfdcdbe4ebe9e7e7e8e8e9e7e4e6e6 +e1dfe2e3e0e3e1dfdddddfe4e8e6e6e5e4e3e2e1e1e3e5e5e2dcd9d9dbe1 +e5e7e1e0e1e3e0e5e4e5e5e4e3e1dfe5e2dfdedee0e0dfdfdddee2e1dddb +dddde1e1dddcdfe2e2e1dadcdfdbe0e5dfdcdddad6d9dee0dddcdcdee0e1 +e2e2e2e0dcdcdfdcd7dbe5e5e7e6dedadde4e7dfdcd8d8dadddee0dfdfde +dedd1b372c3f77673a4a4c4744494f4c474854575c6778858680878d8f8c +8b8e908f908e8b8785848383898a8a8a87837f7d8985868a8d8b8b8e8f8e +8d8e8f8f8d8b9894918f8e8f8e8e84827e776b605c60595546311b0e0d12 +1c2d4a6a8696958e86909696969a9c9d9da49e82583722191d1e1f202122 +262824071460a29e6e49406593b2baac907a736e6b6a665e5a5b6465676a +6a67605c4c3f2d21191211140f10141616140f08040f212f374153688955 +333426182a4a97957a4b261e19121b22292a27201b191c242a271d181c23 +2a26201c1c202529211d1b1f262926222b211e262425395688a6b29a7d72 +716d636264666a6b6a6869656568686261645f615d574d412e1f232c3e56 +6f828b8e9da1a6a6a5a7afb7adafbbafb3bdbf5b272b3d3c3264b9e9cfbf +aaa7afada7aeb1b0b2b5b7b9b7b6bdb9b5b5b6b8b6b5bbb8b5b7b6b3b2b5 +b0b5aea8aba9a6aeb4adadb2b1adafb6b5b4b8bdbcb8babdb9b6b6bab9b4 +b1b3a8afb3b1afb0b0b0b7bbbcbbb7b5b5b8b7b5b4b4b3b1aeabafafaeac +aaa9abadb1b0aeafb1b2b1b0b9b2afb1b0aca8a8a9afb4b8babdbebfbdbe +bdbbb8b7b6b7b3b0adadafb1b2b2adb1b6b5b2b3b7bbbebfbfbeb9b3aca9 +b0afadacaeb2b7baabb0b6b7b4b1afb0b2b3b6b9bbbbbbbab9b6b6b8b6b1 +adaeabaeb3b5b4b1afaeb3bab5b0b2afaeb7bdbbbababbbbbab8b5b7b5b0 +aeb1b1afb2b3b1afafb1b6bab8b8b7b6b5b4b3b3b0b2b4b1aeabacaeb3b7 +b6b0acadaaa9b2b3b4b4b3b2b0aeb4b1aeadadafafaeaeacadb1b0acaaac +acb0b0acabaeb1b1b0a9abaeaaafb4aeabaca9a5a8adafacababadafb0b1 +b1b1afababaeaba6aab4b7b9b5ada7aab0b3aba8a5a5a9acb0b2aeaeadad +ac2640303f725b2833302622262a2722232f30353b4a5351474e52545150 +5355545856534f4d4c4b4b52535353514d4947524e4e5255535353545352 +53545452505e5b5754535352534c4e4f4d453c3b4038352d1a0902040a11 +1f354c626a645b565e605d5b5c5e60626d6f58371c0b0610131518191c20 +221c00034a857c472a35618fabb19e7f64574d4740382e292b383d3f4141 +3e3736291f130b0502060c0f11100f0f0e0d0d1227415762708293a46842 +3d2a14213b8481643210070500101a21221f181311141c221f151014181b +171311131921251e1917181d1e19152015172024273d5a88a2ac8f6a5c56 +514947474749464341423f3f454744434438393a37342c1e0f1318253547 +545a596168747a7d81878875737a707a8c963d17223336346ccaf7d3b48a +797b777a82807d7e818383817f86827e7e8082818085828082817e7e817c +817a747775737b857e7d82807c7d848180818685818285817e7f83827d7d +7f767d82807f80817f83848685817f8285868483838583807a7f7e7d7b79 +787a7c807f7d7e8081807f857e7b7d7d797575767b808385868788878888 +86838282837f7c79797b7d7f7f7a7e82817e7e818588898a89857f79767c +7b79787a7e8386777c8283807d7b7c7d7e808284848382817e7f81807b78 +7976797e807f7c79787d847e797b78778089878383848482807d7f7b7674 +7776747878767474767b7f7d7d7c7b7a79787877797a7773707173787c7c +76737473717b7b7c7c7b7a78767c79767575777776747273777672707272 +76767271747777766f717470757a7471726f6b6e73757271717375767777 +7775717174716c707a7c7e7b736e71777a726f6c6c6f7275777474737372 +babab8cdcf906b8c84877f82948e828a88828597acb6b8b6babfc0bdbcbf +c0c0c0bdb8b4b1b1b5b6bcbcbcbbbab8b7b5bfbab8bcbebcb9babdbcbbbc +bdbebcbbc4c6c5c2bfbbbbbbb5b0aeaaa49994938680725c43302b2c2f3d +536f94b4c4c6d2cdc8c6c9cdc7bcbcc6c9c1b7a37b51463c3d4345424548 +432f274c97cfd2b173667498c0d2cabfa49f9da3a7a3a19fa29e9e9fa2a1 +a19e998b7b6e5c4a3c363332302f30303133433e4e7596a3b1af8d818167 +494141364a93cec694674e3d3030353b3f3e3a3630363c3c383433343a3d +3e3b3836393c3f3c393a3d3f3f3e373c444338303a4d548dc6d0b79f9694 +939596979a9b9d9d9f9a989ea1a09e9c96929088847b6858525258688198 +acb6c5cfd8dedee0e5eadbd3dedde4d9eec7574a54545493d1daccd2d6df +ede9d7d5dde0e0e2e5e3e1dee3e1dedcdddfe1e2e4e0e0e2e2dfe2e7e0e4 +ded8dad7d7e0e8e1dde3e2dbdae1dddddfe4e4e1e1e5e0dee0e4e3dedddf +d7dfe3dfdcdfe4e1dfe1e4e2dedce0e4e1dfe0dfe0e0dfdddedfdfdedbda +dbdce4e1dedddedededde2dfe0e2e2dddadbdddfe4e5e6e4e5e4e5e5e6e4 +e1e0e2e4e3e0dedddfe2e5e6dfe1e1e1e2e0e0e1e5e6e8e8e7e1dcd8e2df +dddddedfe2e5dde0e3e2dedddee1e0e2e3e5e7e5e4e3dfdddfe4e5dfdee0 +e2e2e1e4e5e5dfdce2e7e0dce0dedce4e9e7e5e6e7e6e4e1dee3e6e1dedf +e3e1e0e0e1e0dedee0e2e4e4e4e3e3e2e2e2e2e5e6e4dddad9dbe0e5e9e5 +e3e1e2dee3e3e4e5e5e4e2e1dfdddde0e3e5e4e2e0dddcdedddadbdedbdf +e0dcdce0e4e4e3dadcdedbe0e5dfdadad8d6d9dfdfdbe3e0dfe1e6e8e6e3 +e1dcdde1ddd6dae6e6e3e2dfdbd9e1ece3e0dedbdadbdde1e0e1e1e0e023 +2e3b647b4c2f544b4c404355544b55524d506278828583878d8e8b8a8d8f +8f918e89858282848589898988858382808c87868a8c8b8a8b8e8d8e8f90 +918f8d93949494939292938c87827e7469626259574d371f0f0a0b0c1728 +405d7a878794928d8e959b978f919da29c907d542f2d251d1f1f1b1e2828 +160e2f70a09c7f54526086aebfb6a98b817877736a6260686666696d7070 +716e64574b3c2b1f1a151312111111100d1505071f2f2e31445967654a29 +211e12276faba371462b1e16191e242827231f191f2525211d1c1e202424 +211d1a1d2023201d1f222525251c20292a201723363d74aab39a80746f65 +636364686969686a63616467656366696b655f5a503c29222125354b6274 +7f8f99a3a8a8aaafb7aca5b1b1b8aec29c32283338448dd7e0c7bfaba7b1 +b2abacafaeb1b4b7bab8b7bcbab7b5b4b6b6b7bbb7b5b7b7b4b4b9b2b6af +a9aba8a5aeb5aeadb3b2abacb3afafb4b9b9b6b8bcb7b5b5b9b8b3afb1a9 +b1b3afacafb1b1b6babbb9b5b3b5b9b5b3b2b1b1b1b0afaeafafaeabaaab +acb4b1aeadaeaeaeadb4b1b1b3b0aba8a9abb0b5babbbdbebfbcbcbbb9b6 +b5b4b6b5b2afaeb0b3b3b4adafb2b3b4b5b7b8bcbdbdbdb8b2aaa6b3b0ae +aeafb0b3b6aeb1b4b3afaeafb2aeb0b4b8bababbbab6b4b4b9b6b0acaeaf +afafb2b3b3b0adb3b8b3afb3b1afb7bbb9b8b9bab9b5b2afb4b5b0adaeb1 +b0afb2b3b2b0b0b2b4b6b6b6b5b5b4b4b4afb2b5b3afacacaeb2b7b8b4af +ada9a7b0b2b3b4b4b3b1b0aeacacafb2b4b3b1afacabadaca9aaadaaaeaf +ababafb3b3b2a9abadaaafb4aea9a9a7a5a8aeaeaab2afaeb0b5b7b5b2b0 +abacb0aca5a9b5b8b5b1aea8a6adb5acacaba8a9aaafb3afaeaeadad3239 +3f61703917392e2c2122322e242d2c2528364950504a4e5253504f525454 +5956514d4a4a4c4d525252514f4d4c4a5752515557535253565553545556 +54525959595856545456545151514c4541423a39332411060506060c1726 +3e525a5b6b6a615b5b5c554b4d5d67686558331417130e1114141f2d2f1a +0a1f5172604e42515f84aab8ab9b77675b544c3f36354343434345454547 +443d352d23160d0e1518140f0e0c090a170e193c5a626e7c80847c5c3422 +180413558f8351250b020911161c201f1b1711171d1d191514110f101514 +14161a1d221d1916171614110b121e25201b2b3e4578a7ab8a6b59544d4a +484547444240423c3a3f4243434440404241423f2f1f1813101827364347 +515d717c8486898a766970707b779379201e2a344797e7eecbb189787b7c +7e807e7b7d80838482808583807e7e80818285818082827f80857e827b75 +7774727b867f7d83817a7a817b7b7d82827f80847f7d7e82817c7b7d777f +827e7c7f8280828385837f7d8286848281808383827e7e7e7e7d7a797a7b +83807d7c7d7d7d7c807d7d7f7d787576787c818586868788868686848180 +8082817e7b7a7c7f80817a7c7e7f8080818286878888847e77737f7c7a7a +7b7c7f827a7d807f7b7a7b7e797b7e81838383827e7c7d82807a77797a7a +7a7d7e7e7a777d827c787c7a78808785818283827d7a777c7b7673747675 +75777877757577797b7b7b7a7a79797976797b7974717173777c7e7a7674 +726f797a7b7c7c7b7978767474777a7c7b7975727173726f707370747571 +71757979786f717370757a746f6f6d6b6e747470787574767b7d7b787671 +7276726b6f7b7d7a77746f6d747d7473726f6f7074787575757474b1aed2 +c8847b927b77958d79868b8089867e8298adb5b7b9bbbfc0bcbbbfc1bfc1 +bcb8b1b1b2b4b6b9b8b7b6b6b7b8b9bdb9b8bcbebcbbbbbfbebebfc1c2c0 +c0bbc0c5c5c2c0bfc1bbb3b0afaba298948c86765d42302d30292e323e5e +88a9b7b7c3cbcac5c8ced1c8cac1b7c2d0c2a058453e44443c3a403a352a +326ab2dad1ad7e5f6f99bccdd2c2b4a8a9aeafb0b3a7a5a4a5a7a7a5a39c +98989589715c4e3d3a36353536343435323c546d81989d97909787654f47 +3c31283f84c5ce9b64493a2f2d333a3b3b372d282f3f463e3631353c4548 +42352b3b42453e33313c483a40413e3a3b3d3c4e5c80b1cfc8a88e929392 +9496999b9c9f98959ca3a3a29f9a95938c8984756558514c51617790a3b2 +c0d0d8dadadddfdee0d4e1d7e4e4fa724d475170c3f0d3ccd5d8dcecebda +d6d6d8dce1e6e7e6e3e3e1e0dddcdde0e3e4dfdfe3e4e1e5ebe3e5dfd9db +d7d7e0e8e0e0e6e4dbd9dfd7d7dbdedfdcdde1dedcdfe2e1dcdbdcd9e0e3 +dcd9dee5e4dee0e3e0dcdce1e6e3e0dedddfe1e3e4dddfe0dfdddbdadbe2 +dfdcdbdcdedfdfdfdfe1e3e3dcdadadfe1e5e6e7e6e6e7e2e4e5e2e0dee1 +e3e5e1dfdee0e3e5e7e1dfdcdee3e3e0dddfe1e5e6e7e2dedae5e2dfdfde +dddfe1e3e4e2ddd8d7dbdfdbdee2e4e6e5e4e4e4e0e2e7e6dfdadee5e2de +dfe3e5dfdbe2e6dfdbe2e1dfe5e5e3e2e3e3e1ddd8d9e1e6e2dddee2e3df +e0e3e2dfdcdcdde6e5e5e5e5e5e5e5e1e4e7e3dedbdbdcdee7ece9e5e2df +dbdedfe1e2e3e3e2e1e5e3e3e4e5e3dedae2dddadad9d8dbe0dadfe0dddd +e2e7e6e6dcdcddd8dce0d9dbdcdcdbdfe4e2dde7e2dee1e8ebe7e2e1dcde +e3ded6dbe7e9e0dfe0dbd6deece3e4e3e0dbdadcdfe1e1e1e1e12a30626b +383d5a453e5a4c394a514c5551474b6277808286878d8e8a898d8f8e908d +87828081838586858483818283848a86858b8c8b8a8c908f909294959392 +8a8f949796949697918882817c7167625e594d37211210130c0d0c132c51 +6f7b7b87929291969da2999d958d96a5967a402e20211f17182222201416 +4382a09d8963475985a9bcc3b4a2918b877f7a7a70706f70737373716d6c +6f70654f392e1c18120f10111313140a091116181f3154626c5f402e291f +150c2162a2a7723c251c13121b242727241a141b282d251b171b222a2d26 +190f1f2629231817222e1f2426232022242235436695b3ab896b6a676667 +696b6b6b6b625d62676766676d6e69615c56463629211c2130475f707b87 +98a2a4a4a9afafb4a8b5abb7b6cf4e2d29375fbbf1d3c2beaea8b3b6aeab +a8a9adb3b8bcbdbcbabab9b6b3b4b7babbb6b4b8b9b6b7bdb5b7b0aaaca8 +a5aeb6adadb6b4aba9b1a9aaaeb3b4b1b2b8b5b3b4b7b6b1adaeabb2b3ac +a9aeb2b4b5b9bab7b3b3b6bbb7b4b0afb1b3b4b4adafb0afadabaaabb2af +acabacaeafafb0b0b2b4b1aaa8abadb2b7bbbcbdbfc0bbbbbab7b5b3b3b5 +b7b3b0afb1b4b6b5afadadb0b5b8b7b4b6b8babbb8b3aca8b6b3b0b0afae +b0b2b4b5b3aea9a8acb0a9acb0b5b9babbbbbbb7b7bcb9b0abacb2afacad +b1b3b0acb3b7b2aeb5b4b2b8b8b6b5b6b6b4aea9aab2b5b1acadb1b2aeb1 +b4b4b0aeaeafb8b7b7b7b7b7b7b7b0b3b6b4afacacadafb6bbb8b2afaaa6 +abaeb0b1b2b2b1b0b4b2b2b3b4b2ada9b1aca9a9a8a7aaafa9aeafacacb1 +b4b5b5ababaca7abafa8aaababaaaeb3b1acb6b1adb0b7bab6b1b0ababb0 +aba3a8b6b8b2aeafa8a3aab8afb0b0adaaa9aeb1b0b0b0b0b0313461632a +284129203a2c16252b242d29202236484e4e4f4e52534f4e50545356554f +4a48494b4d4f4e4d4c4b4c4d4e534f50535753525458575557595a58574f +54595b5957585b5751505050483f3d3c3a312212080a0f0806000013324a +565763676358595a5c535a5653657a6f561e0f060b0f0e192a2f29160a24 +5261646f583d4e7ca2b5bcab967f7366594e4d474645444341403e393b41 +464333231f1717120c0a090a0a0d0a1223364152637f868a795237291707 +000947868854221712080711191e1e1d130d1422282012080a131f242216 +0c1c23251a0d08111d0e161b1c1f252a2b3b476791a89b7555514e4b4848 +494543443c383d434544444343434145463c2e21170e0b12233641435067 +767e7e8181797769746e7e82a5341e1f3669caffdfc1ac88767c80818077 +75797f848787858483827f7d7e818485807f838481838981837c76787472 +7b857e7e85837a787d7573777c7d7a7b807d7b7f80817c797c7980837c79 +7e8584818284817d7d838886837f7e808286847c7e7f7e7c7a797a817e7b +7a7b7d7e7e7c7c7e807e7775777a7e83868787888984858582807e7f8183 +7f7c7b7d8082827c7a797c8183817e80808584827d7773827f7c7c7b7a7c +7e80817f7a7574787c74777b7f82838383837f8085827a75777d7a77787c +7e7a767d817b777e7d7b81817f7e7f7f7d7671727a7b777273777874797c +79787373747d7c7c7c7c7c7c7c787b7e7c77747475777e83807b78747074 +7678797a7a79787c7a7a7b7c7a757177726f6f6e6d70756f74757272777b +7b7b7171726d71756e70717170747977727c7773767d807c777671727772 +6a6f7c7e7774756f6a717f76777774706f73767676767676a9aca6958881 +7e79848a8a828087867f838793a8b8bcb8b3c0c2c3c0bfc1c3c2bdc3c2b5 +b2b8b9b4b5b7babcbbb7b3b1bdb9b8bbbdbcbdbec0c1c0bcbdc2c4c2b9be +c4c4c2c0c0c2bfbab7b5b2aea8a49f9986674b382c2525282f3641587b9b +9bacb9b9bdc8cdcbbfc2c4c7c8c8c7c3b985513c3e3e352e3c3d3d2d3a89 +cabfbcb69666638eb7c1c3c8c2ada8b6c5c8b9b4b3b6bebfb7afafa9a098 +989892887265513f353233353934343e4853647686a0a19d9365362f2c2c +2529549bd3e69a714b3f3a312c3039302e33302d3a4c443c35353c424241 +35383e4243403a3644413a373e433f343d4a576a98c8d0bc8f8b8b93958e +8e95999b9c9da2a5a4a09b999a968d837b7665574c4849566c88a0b9bdbf +d3e6e1d6dfd9dae1e0dee6edb6444960a6e3ead5d5d3d3dce8ebe1d7d2d4 +d9dfe5e6e5e3e4e2e0dfdedfdfe0dfe2e6e5e3e2e7eaebe3dedcd7d3d8e0 +e3e2e1e1e4e4e0dbd7dfe3dfdbdde0dfdde2e3dedbdde1e0d6d9dfe1ddda +e2e9e3e6e5dedbe0e4e2e0e2e3e3e1dfdfe0dee3e4e0dddededcdddddcdb +dcdddfe0e3dddfded5d7ddd9d9e4ede9e8e9eae7e4e5e7e8e6e3e1dfded8 +e3dee0e8e2eadee2e1dfe2e5e5e3dee2e5e2e3e2e0dae1dfdddddee0e0e0 +dce2e4e1dfdfdddce1e0e0e0e3e4e3e2e1e5e8e8e3e0dedfe1dfdbdee3e7 +e3e0e3e0dddfe3e6e6e4e8e7e5e1dedddfe1e2e0e0e2e0dcdee4e6e0e2e8 +e6e0dfe8e6e7e7e8e8e6e5e3dde1e5e5e0dddbdae6e3e4e7e4dfdcdddfe0 +e1e2e2e3e4e4e5e6e0e1e6dfdbe4e1dcd9dbdededbd5dcdee0e1e1e1e3e3 +dcdbdbdddbd9dee6dadedfdedee1e0dde2e4e3e0e3e8e7dfe1e7ebe6dcd7 +dbe1ebe9e9e9e4dbdce3e4e2e2e5e4dfdcdbdbdcdedfe0484e4e463f3f3e +3c474f4e484952534a4d4e5a6f8084807e898e8f8c8b8f91908a928f847f +858681828487898884807e888583888a898a8d8f93928e8f9496948b9096 +9795939395928d8886837c76706a65553e281d1611101112141727476364 +7684858a969b988c8f929494949294996b39242628221c2929240d125b94 +8b959473474477a6b7c1c8bea392969b9b908b87888e8d847a7c786f6a6d +70685f483b27170f0e1113160e0a0d10151f2a324e596065442023201f12 +0d2e6b9bac6541211b1c191a222c231f2018111b2d27211a1a2127262519 +1c232728251f1b29261f1c222a251a23303b4e7cabb3a0736d6e74746a65 +686b696665666665666c6f6e695f544b47362b201e2230485c697c82869e +b3b1abb4b1b0b4b3afb4c192262e4993d5dec8c3b8afafb7bab2a8a4a6ab +b1b7bbbabab9b9b7b6b5b6b6b7b6b9bbbab8b7b9bcbdb5afada8a4a6aeaf +aeadafb2b2aeaca8b0b4b2aeb0b3b4b4b9b8b3b0b2b3b2a8abafb1adaaaf +b9b8bdbab3b0b5b6b4b2b4b3b3b1afafb0aeb4b5b1aeafafadaeaeadacad +aeb0b1b4aeb0afa6a8aeabaab6bfbebdc0c1c0bdbebebfbdbab6b4b3adb6 +b1b3bbb5bbacb0b2b1b4babcbab5babab8b4b3afa9b2b0aeaeafb1b1b1ad +b3b5b2b0b0aeaaaeadaeb1b6b9bab9b8bcbfbdb8b3b1b0afaca9acb1b5b4 +b1b4b1b0b2b6b9b9b7b9b8b6b2afaeb0b2b3b1b1b3b1adafb3b4aeb0b7b4 +afb0b9b7b8babbbbb9b9b6b0b4b8b6b1aba9a8b4b1b2b5b5b0adaeaeadae +afafb0b1b1b2b3adaeb3aca8b3b0aeabadb0b0aaa4a9abadaeaeaeafb0a9 +a8a8aaa8a6abb3a7abacababaeadaab1b3b2afb2b7b4acaeb4b6b1a7a2a6 +acbab8b8b8b3aaa9b0b1afb1b4b3aeabadacadafb0b1414442352c27231f +282d2a222228281e21232f4251534d48515555524f505453515a584c484e +4f4a4b4d5052514d4947524c4d4f535051535558575354595b5950555b5c +5a58585a575450504d4943403e3d3422120c0b0a0b0b0a0a0916324a4550 +5a55555b5c574b4e555b62656868663a0d000e1a1c1c2d2b20000037665c +6e71532b2f699fb6c4cabb977a706b62524d4a4a504e42383a363436424d +4f4b3a2f1b0b0402070a100d0c131b24324456767e817f572d2720190b02 +235d8c9e5733130d110d1019241d1a1c140e192a1f1611111a2022211518 +1c201f1c14101e1b16151e262419242f3a4b79a7ad945d515057554a4547 +49464442444544414245494845403d3d2e221712111d323f404f565b7286 +81787d76747978777f926e0e254fa7eef4d2b79a7f767c82847c7272777d +83868584848381807f808081808386858382858889817b797470737b7f7e +7d7c7f7f7b76727a7e7975777a7d7e83857e7d7f8181777a81837f7c848b +858987807d82848280828282807e7f7f7d80817d7a7b7b797a7a7978797a +7c7d807a7c7b72747a7776828b89888a8b898485868785827f7d7c767f7a +7c847e85797d7e7d808584827d7f837e7c7b77717c7c7a7a7b7d7d7d797f +817e7c7c7a777978797b7f82828180848786817c7a7a7a7774777c807e7b +7e7b797b7f82828083807e7a7776787a7b79797b7975777b7f797b7f7f77 +78817f807f80807e7c7b797d81807b7674737f7c7d807f7a777876747576 +76777878797a74757a736f79767370727575706a7072747575757677706f +6f716f6d727a6e72737272757471797b7a777a7f7d75777d807b716c7076 +807e7e7e797070777876777a797471727475777879b9b19e867c81898d84 +828282818082868f96a3b2b9b9b8bbbdc2c1bdbcbfc0bfbdc4c2b8b3b7b6 +b0b6b3b2b5babbb8b4b5b2b2b7b8b6b6b9bec1bfbdbec3c5c3bbbec1c3c2 +c1c1c1c3bcbbbdbbb3aeaea6a2947d624933232122282d3441586f8696a2 +a5adb9c1c0cdc8c1bcbabdc4c6b9b89b5b32313732323b3f38364e93dcc6 +c3bea77b627fafb6c2c9c0bbbebfbbb1bdced6d3ccccd1c0c0bab1a9a49c +95978b7a6758483a30322f32393d3e46576e749bd2d39e6345332b2b2e29 +32649ddac998573536372a24323d3633393a3342413d3630333e48443c36 +373f43403b3b4346413d3e3f3e393b465a6f8aaecec4a689808993979892 +969b9fa2a2a5a3979698968f87817d6e605145414452688aa9b5b8c6d1d5 +dbdbdadce0e0dfe2e2d64d4987cdf2e1d4d7d3d2d7e1e5ddd4d5d8dde1e4 +e5e3e2e4e3e0dfdedfdfdfe1e2e4e4e3e3e6e7eae3dfdddad6dae0e1e0e0 +e2e4e4e2dfd8dfe3e0dddfe1e0dce0e3dfdcdfe3e3dadce0e1dcd8dfe6e0 +e3e4dedce0e4e2e7e5e1dddbdce1e4e2e3dfd8d6dbe1e2dedddcdbdbdcdd +dee2dddfded6d7dbd7d8e1e5e3e2e5e7e7e5e4e5e4e2e1e1e0dfdae5e0e2 +e9e1e7dee1e0dee2e6e6e4dee2e4e0e1e0ded8dddddcdcdcdddfe1dee3e5 +e1dededddbdfdededee3e4e6e5e0e3e6e5e2dddddde3e0dcdde2e5e2e0dc +dee2e9eceae3dee6e6e5e2dfdedfe0e2e1e3e5e3dedee1e6e3e2e3e2e1e3 +e9e6e7e6e7e7e6e5e5e0e2e5e3e2dededfe4e3e5e7e5ded9dce0e1e1e2e2 +e2e3e3e0e1dcdce1dbd7dfdfdcdadbdfdfdcd8dcdedfe0e1e2e2e3dfdddd +dfdfdddfe4d9dcdcdadbe0e2e1e3e4e3e0e3e8e8e2e0e3e4e1dddbe0e4e9 +e5e5e7e5e0e0e4e5e1e1e3e2dededfdddddedfe06d66533e353e484e4546 +484b4c4d4f51565b68787f7f8084868b8d89888c8e8d8a918f858084837d +83807f8287888581817e7e83858383868d90918f909597958e9194969594 +9393958e8a8c8a827b796e6c63503f2d1e110e0f0f0f0e15283c53647074 +7a878e8e99948d8582858a92939a7d431e1f27232028261b122565ac9b9a +958057436ba3b5c6ccbfafa69d958e9ba8aea79c999c8c8c88817b776f68 +695d4e3d2f23160f100d0d111314191b151243889a764a3427201b160807 +3267a5986a30141c211913232c231b1d1b142526221b1518232d29211b1c +2428252020282b26222323221d1f2a3e536e91b2ad9071666e7474716768 +696967666669686b6c686057504e4034251d1b20313f526a777f909fa6ae +b1b0b2b3b1aeb0b6b5323072bbe2cfc0c0b7aeafb5b6ada3a7aaafb3b6b7 +b8b7b9b8b7b6b5b6b8b8b8b9b9b9b8b8b8b9bcb5b0aeaba7a8aeadacacae +b2b2b0ada9b0b4b1b0b2b4b5b1b7b8b4b1b4b5b5acadb0b1aca7acb6b4ba +b9b3b1b5b6b4b9b7b1adabacafb2b3b4b0a9a7acb2b3afaeadacacadaeaf +b0abb0afa7a8ada9aab3bab8b7babebebebdbcbbb9b8b6b5b4afb8b3b5bc +b4baacafb1b0b4bbbdbbb6babab6b3b2ada7aeaeadadadaeb0b2afb4b6b2 +afafaea9acababafb4b9bbbcb7babdbcb7b2b0aeb1adaaabb0b3b3b1adaf +b5bcbfbdb6b1b7b7b6b3b0afb0b1b3b2b4b6b4afafb2b2afb0b1b0afb4ba +b7b8b9babab9b9b8b5b7b7b5b0acaaabb0afb3b8b6b0aeafafaeaeafafaf +b0b0adaea9a9aea8a4aeb1aeacadb1b1aba7a9abacadadaeaeafacaaaaac +acaaacb1a6a9a9a7a8adafaeb2b3b2afb2b7b5afabaeafaca6a4a9afb6b4 +b4b6b4afafb3b4b0b0b2b1adadb1aeb0b1b2b35d5340281f242c2f242222 +2422222225292f3c4a4f4f4d4e5053534f4c4d4f50515a584e494d4c464c +49484b50514e4a4845454a4c4a4a4d53565654555a5c5a5356595b5a5958 +585a535052504842433d403b2f23180d0507080807050a1a2938434b4b4b +5457535d58534d4f545c60555c471700091a1c1c221f0d00094486706c69 +59372e62a3bdd1d3bda18c7764545c6a706a5c575643434343474d4e4b4f +4335251b1006000604070f14151c27353969abba905f4431261c14030129 +5b97875a21050f160f0b1c251d171a18111f1f1b140e111c26221a14151d +211e17171f221d1b1c1f1e191c273d526d93ae9b78594d53585854474748 +47454243443e41454642403f3e33291c131014222b31414e52616c707577 +76787a79767b858c17297bd5ffe7c9b0927a72787e7f7875767b7f828383 +82848381807f808181828384848383848588817c7a7773757b7d7c7a7c7f +7f7b78737a7c7977797b7e7c8385817e8184847b7f82837e7c8188838686 +807e8284828785807c7a7b7e817f807c7573787e7f7b7a797878797a7b7d +787c7b73747975767f8583828588888584848381807f7e7d78817c7e857d +83797c7d7c808685837b7f807c7877736f787a7979797a7c7e7b80827e7b +7b7a76777676797e8284847f828584807b79787c7875767b7e7d7b77797e +8588867f7a7f7f7e7b787778797b7a7c7e7c77777a807d7b7c7b7a7c827f +807e7f7f7e7c7d7e8283817d7978797e7d8084827c797877757576767677 +7774757070756f6b74767371727676716d70727374747575767371717373 +7173786d70706e6f7476757a7b7a777a7f7e7875787976706e73797d7a7a +7c7a7575797a76767877737376767778797a9691877d7c808383887f7f85 +847c82919fa8b4bbb9b5b8c1b8bdbebbb9bbbdbbb6bdbdb5b2b5b4b0bcb4 +adafb7bcbab6b6b4b6bbbcb9b9bbbec1c0bebfc2c2bfc0bfbfc1c2c2c2c0 +c4babbc3c1b5b1b6afab9f8c766045302826292b2f303a47576b818f9da9 +afacbabdbebfbfc0c4c3c2cbcbab784d3a3a343d383b3d2f59bacdc2c7d0 +af75627295acc5cbc9c8cac8b8b1b4bfc7c8cdd5cbd2d3cbc2bab4afaea5 +988b7d6c5646403b38373532343f7070696692e7e0815e3d2e39341e1b30 +5994caca955b3b2e3537322d343f3b2c313a41413b36373a443f39383b3f +4242363e43413c3b3b3a493a353e4a5a7da2c3c1b6a08e8a9096979a9999 +989aa0a49e9d9f9e98928d8b7d70604f433d42507596abb5bec0cadcdddf +e0dcdcdfe0d9e86967c1eef1cdd6d6d2d1d5dde0d9d2d8dce2e4e2e1e1e2 +e3e2e0dfdedfdfe0e3e2e2e2e3e3e4e3e8e3e0dfdddadce0dfdedfe1e3e4 +e3e2d9e0e2e0dee1e4e1dcdfe2dfdfe2e6e4dedfe2e2dcd7dde2dee1e2df +dddfe2e1e7e4e1dddbdbdfe0dfe1ded7d5dadfe0dddddcdbdbdbdcdce3df +e2e3dadaddd8d9e0e2e0e0e3e6e8e5e4e3e1e0dfe1e2e1dce8e3e3e9dfe5 +dee0dedce1e6e8e5e1e4e5e2e2e1dfd9dee0e1e0dfdfe4e8e0e5e6e2dede +dcdbdddcdbdbe0e3e6e7e0e2e4e3e1dddcdce3e0dcdde1e3e1e0dbdfe5eb +eeebe4dee4e5e6e4e1dfdedfe1e0e2e5e2dddcdfe3e5e3dedde3e6e8e6e6 +e5e6e6e6e6e6e2e2e3e0dfdddfe0dfe2e7eae6ded9dddee0e0e0e1e1e1e1 +e0e2dddce1dcd8e0dfdddbdde0e0dfdcdddededfe1e1e2e2e3dfdee2e4e1 +e0e1dbdddbd8dae1e5e5e7e7e4e0e1e4e5e2dddededcdddfe3e5e8e3e2e4 +e5e2e1e2e3dfdee0dfdddfe1dfdfe0e1e24d483e36353d42444943454e4d +474d5b666d7a817f7b808a83898a8787898b89838a8a827f82817d89817a +7c8489878382808287898686888d90929091949491939292949595949296 +8c8a9290847e8177756e6052402c1b12100e0d0a080e18273b52606d797f +7c888a8b8a8a8b8c9094a3a4895b3424252127201f1e0c3593a3969ba383 +50455e8aa9c3c8bfb5afaa9a94939a9e9d9fa39aa0a29b948f898481786b +61554533241d1712100c0908061a0f0f174fafb45e43271b251f07031336 +6ea5a7743b1b12191c1a171e292516191f2626201b1c1f29241e1d202427 +271b2328262120201f2e1e19222e3e6186abaa9c85716b6d716e6d6b6764 +64686f6f70726e67615b594d41312419161d233d566d7a868b97abacb1b2 +aeabadaeaeca5152b0dee2bec3bcb4adadb1b1a9a2aaaeb4b6b4b3b6b7b8 +b7b7b6b5b6b8b9bab9b7b7b8b8b6b5bab5b1b0aeabaaaeabaaabadb1b2b1 +b0aab1b5b3b1b4b7b6b1b6b7b4b4b7b8b6b0b1b2b2aca7aab2b2b8b7b4b2 +b4b4b3b9b6b1adababadaeb0b2afa8a6abb0b1aeaeadacacacadadb1adb3 +b4ababafaaabb2b7b5b5b8bdbfbebdbab8b7b6b6b7b6b1bbb6b6bcb2b8ac +aeafaeb3bbbfbcb8bbbbb8b3b2aea8afb1b2b1b0b0b5b9b1b6b7b3afafad +a9aaa9a8acb1b8bbbeb7b9bbbab6b2afadb1adaaabafb1b2b1acb0b8bec1 +beb7b1b5b6b7b5b2b0afb0b2b1b3b6b3aeadb0afb1b1acabb1b7b9b7b7b8 +b9b9b9bab9b8b7b6b3adabacadacafb5bbb7b1aeb0afafafafb0b0b0b0af +b1acabb0aba7afb1afadafb2b2aeabaaababacadadaeaeb0acabafb1aead +aea8aaa8a5a7aeb2b2b6b6b3afb0b3b2afa8a9a9a7a6a8acb0b5b2b1b3b4 +b1b0b1b2aeadafaeacaeb3b0b2b3b4b53a352b201f232625281f1f27241b +212f39414c534f4b4d544d50504d4a4c4c4c4a53534b484b4a46524a4345 +4d52504c4947494e504d4d4f5356575556595956585757595a5a59575b51 +5058564a454b4647453b3227160a0503030201000108132438424951514b +555554545457595956656d5933150d14131c14110c001d7479676c795e33 +33578eb2cecfbeae9e907468686e706a646455595d59595c5e5a574e423b +3226170b090707090807090f353232376ecccd7452331f261a000005235b +9394632c0e060e11100c131e1a0b0f161d1d17121316201b1514171b1e1e +12181d1b18171918271a151f2b3b6082a19c8d745f565757524e4a443f3e +43474546494846434242392f211309050b0c1c30444e55575e7071757673 +73787b81a4394dbaf8ffd3c9ad90797074797974787a8082807f81828382 +81807f808182848382828383828186817d7c7a77777b7b7a797b7e7f7c7b +747b7c7a787b7e7f7c80827f7f8286847e8082827c797d84818484817f81 +82818784807c7a7a7c7d7c7e7b7472777c7d7a7a7978787879797e7a7f80 +77777b76777e828080838789858482807f7e7f807f7a847f7f857b81797b +7b7a7f8687848083817e7b7a7470797d7e7d7c7c81857d82837f7b7b7976 +757473767b8184867f8183827f7b78777c7875767a7c7c7b767a81878a87 +807a7d7e7f7d7a7877787a797b7e7b7675787d7f7c77767c7f817f7f7d7e +7e7e7d7e7e807f7c78767778777a8085817a777977757575767676767577 +727176716d75767472747777747171727273747475757773727678757475 +6f716f6c6e7579797e7e7b77787b7b78727373717072767a7c7877797a77 +7677787473757472747878797a7b7c7e8084898f8f89828b86848685838d +9baeb4bbbeb9b4b8c2b8bcbebbb8bbbbbab4b8b8b3b3b8bbbac2b9b0aeb3 +b8b9b7b8b8bcc2c1bebec1bfc3c2c0bfc1bfbbc4c1bebfc2c3c2bfc3b8ba +c4c1b3b0b7bbb5a8988a7a624f3b3531313230323837485a697b8f9da1a1 +aab6bdc0c0c0c1cac2c5d1c3956042363c393c3d2f3c69bdbfc2c8cbb88b +616b84a8c1cccdcececebeb3b8c0c5c7cbcad3d6d4cfcecac6c1b8aca49f +9281715c5143383230343e435c6f604c70b2d3a37b4b2d292c261d21284b +8fc7c38e5c3c33353d3c312d373133363d44433a32353d44433c393c423e +3a373a41433c3347443d373946565e85add0cdb0978b878b8e9497999c9e +9da3a4a6a29d9794928a806f5f4f464449637c95acbbb8bccfdae1e0d8d7 +dfe1d6db93a4f0ecdcc1ded1d0d0d4dcded9d4d8dee4e5e2e0e1e4e3e2df +dededfdfe0e5e2e0e1e3e4e3e0e4e1dfdededddededfdfe0e1e1e2e2e2da +e0e2e1e0e3e5e2dde1e3e0e0e3e5e3dfdfe1e2ddd9dde2dfe0e2e1dedddf +dededfe2e3e3dfdcd8d9dfe1dddbdbdad7dbdbdbdbdcdcdddde5e2e6e8e0 +dfe1dcdce1e3e4e4e6e8e9e4e4e3e2e1e1e2e2e2deeae5e5e9dee2dedfdb +dae0e7e9e6e5e9e9e5e5e4e3dddde1e4e2dfe0e5ebe3e7e7e2dededcdbde +dcdad9dee1e5e6e2e3e4e3e1dedddddededddfe3e4e1dfe2e2e1e3e4e6e7 +e7e2e4e6e6e3e0dedee0dedee0ddd8d9dddfe6e4dddce5e7e4e5e5e4e5e5 +e6e7e7dfdfe0dededcdcdcdce0e8ebe8ded9dddcdedfe0e1e2e2e3e2e5e0 +dde2dfdbe1dfdedddee0e1e1dfdedddddde0e1e1e0e4dfdfe4e7e3dfdedd +dfdedbdde2e5e4eae8e4dfdededfdedcdcdcdde1e3e4e2e9e3e0e1e2e1de +dbdfdcdde0e1dedee0e0e0e1e2e33a3c40464c4e48434f4a4a4c4c4d5765 +757981847f7a808b83888a878689898881858580808588878f867d7b8085 +86848484888e8e8b8b8e8e9294929193918d9794919295969491958a8993 +90827d848681776b62574433201a14110e0a0a0e0b1a2c3c4d616f737179 +838b8d8d8d8e969096a69d7242271c23222523152049969392989a8a6644 +5878a1b9c0beb9b6b7a597989d9d9c9e9ca4a7a5a2a19f9b94897f79756c +5b4d392d1e100a07080700061c12032e779e785930191a221c100a0b2e70 +a39e673517121523272020271b181b2229281f171a222928211e2127231f +1c1f262821182c29221b1d2a3a456c96b7b2947a6a646567696b6b6c6d6d +767776726b65625f574e4031251d1b1b2a405a7181818599a7aeaea7a8af +b3afc08192e0decfb2cbb7b2acacb0afa9a4aab0b6b7b4b2b6b9b8b7b6b5 +b5b6b8b9bcb9b5b6b8b9b5b2b6b3b0afafaeacacababacadafb0b0b0abb1 +b5b4b3b6b8b8b4b8b8b5b5b8b7b5b1b1b1b2ada9aab2b4b7b7b6b3b2b1b0 +b0b1b2b3b3afaaa6aab0b2aeacacaba8acacacacadadaeaeb3b0b7b9b1b0 +b3aeaeb3b8b9b9bbbfc0bdbdbab9b8b8b7b7b7b3bdb8b8bcb1b5acadacac +b2bcc0bdbcc0bfbbb6b5b2acaeb2b5b3b0b1b6bcb4b8b8b3afafada9aba9 +a7aaafb6babdb9babbbab6b3b0aeacababadb1b2b2b0b3b3b4b6b7b9baba +b3b5b7b7b4b1afafb1afafb1aea9aaaeabb2b2abaab3b8b5b6b6b7b8b8b9 +bbbab5b4b3b1acaaa9a9a9adb6bcb9b1aeb0adadaeafb0b1b1b2b1b4afac +b1aeaab0b1b0afb0b2b3b0aeabaaaaaaacadadacb1acacb1b4b0acabaaac +aba8aaafb2b1b9b7b3aeadadacaba7a7a7a8aaacadadb6b2afb0b1b0adaa +aeabacafb0adadb2b1b3b4b5b62525292c32322a222b26242421212b3748 +4d53564f4a4d554d4f504d494c4a4b484e4e49494e5150584f4644494e4f +4d4b4b4f555552525554585957565856525c5956575a5b59565a4f4f5956 +48444d54524c443f37281b0b09040202000002000d1d2936474e4f494e54 +5a585856555a535e736e4a200c050f1015140612326f64626a6f664b3454 +7ca9c4ccc5beb2a78f817f7f796f675e60615f61666a665d514846453f34 +291b150b040001050c081f362c204a93b88c69391b1719120000001c5e93 +8e58260701061416100f180e0d1217201d160c1117201d1813181c181411 +141b1f180f25221b17192636406890b2a9896c59504e4a4948474645454d +4e4e4c484241403a33261a0f0907040c1c3245514b4c5b686f736d727e82 +84a26d90edf8ebc7d1a88e786f73777976787c8283807e81848382807f7f +808182868380818384817e827f7c7b7b7a79797b7b7a7b7c7d7b7b757b7c +7b7a7d7f7e7c808380808383837f7f80827d797b8281838483807f7f7e7e +7f8182827e7975767c7e7a787877747878787879797a7a807d83857d7c7f +7a7a7f83848486898a8484828180808080807c868181857a7e797a78787e +878885848885817e7d7874787e817f7c7d82888084847f7b7b7976767472 +74797f8385818283827f7c7978777676787c7d7c7a7d7d7d7f808283837b +7d7f7f7c797777797777797671727679807d76757e807d7e7e7c7d7d7e7e +7f7b7d7c7a7775747474788186837a77777573747576777778777a757277 +74707676757475777876747271717173747473787373787b777372717372 +6f71767978817f7b767575757471717172747677777d7875767776737074 +71727576737377797a7b7c7d8d8986888a8a8886868a88828694a3a8b8b6 +b7bab7b5b8beb9bebfbcbabcbcbabcbdbbb6b5bac0c2bfbab5b1b2b6babc +b5b6bbc1bfbcbcc0bcc0c0bfbfc2c1bdc4c1bfc0c3c4c2bfc4bbbcc2bfb2 +b1b8c0bab0a8a196837158493d37333131353839383a4b657f8d93989fa2 +a5aab5bdcacdc3becccea46d3e353e41322e363682aec5c0c5d2c3a17270 +7f9ebcc8c4bdc3c9cdcdc6c0bec4c7cbcccbced1cecad5cec5c1bfb5a596 +7f715f4f44403d3e4e40395366505179949b87562f26241d1029322d4985 +baca9462342931342e30413a302f353d4141343a41423f3b3b3c463f393d +4446423c31404b453937414a58779ebac7c3ac9483868b959b9c98929e9f +a09f9b9797958f887d6c5e534b474f5d7296b4b5b4bdced7dcdbdde1ded0 +c4bbd4f6d4cdc4dccdd0d2d7dde1dfdad7dde3e4e1e1e3e7e2e1dfdededf +e0e1e5e2e0e1e3e4e3e0e1dfdedcdddedddae0e0e0e0dfdfdededce1e2e1 +e1e4e3e1dfe2e3e1e1e3e3dfdedddfe1dfdbe0e4e2e1e3e2dedbdcdddcdc +dfe2e4e2dfdbdce1e3dfdbdad8d4d8d9dadcdddedfe0e5e2e7eae2e1e2dc +dcdfe3e8eae8e7e7e2e3e6e6e6e4e2e1e4dfebe5e4e8dde1e0dfd9d8dfe7 +e9e6e6e9e9e5e5e5e4dfd8dcdfdedbdbe1e7e4e8e8e2dedededde0dedbd9 +dddfe2e3e5e4e4e3e2e0dfded6dadde2e6e6e1dfe4e3dfdedee2e7eae1e3 +e6e6e4e0dedee2dfdcdcdad7dae0dbe4e5e0dfe5e4dfe3e3e3e5e6e6e7e7 +dddee1e1e2dfdbd8dadee6ebe9e1daded9dcdddfe1e3e4e5e0e5e0dce1df +dbe0e0dfdedfe0e1e2e2e0dddbdbdfe0e0dfe2dedee4e6e3dedcdcdfe0dd +dee1e0dde4e2dfdddbdbdde0dedddee1e5e5e2dde4e0dddddfe1dedadddd +e0e6e6e2e0dfe1e0e1e2e24b474446484a49474a4e4c474b5b6a6f7d7c7d +807f7d8087848a8d8a888a8a88898a888382878d8f8c87827e7f83878981 +82878d8c89898d8b8f92919194938f9794929396979491968d8b918e817e +858c878079766f5f4e36291d16120d0d0f11100f1220395160656a6f7375 +7b838a92928c899aa07b471d17242a1c1c251f5e81958d8f9d937852586e +90afbab5acb4b7b8b4a89d9a9b9c9f9f9fa1a4a29ca69d9694938c7d7059 +4d3a261a16120e1300000e1e080b3758675e381c1c1f1902161b10245b8b +9b6538100d1c2526252b2015151a23262719202628242120222c251f232a +2b27211625302a1e1c26313e5e849eaba68e746062666e72746e68727373 +6f6a6663645d584c3d30261e1919253a5d7a7c798296a1a8a9afb6b5aeae +adc8e9cac0b5c9b3afadadafb0adaaa9afb5b6b3b3b8bcb7b6b6b5b5b6b9 +babcb9b5b6b8b9b5b2b3b1afadaeafaba8aeaeaeaeadadafafadb2b5b4b4 +b7b9b7b7bab8b6b6b8b6b1b0afb0b1afabaeb4b7b8b8b7b3b0aeafaeaeaf +b2b4b2ada9acb1b3afabaaa8a4a8a9aaacadaeafb0b3b0b7bab2b1b4aeae +b1b8bdbfbdbebebbbcbdbdbdbbb7b6b9b4beb8b7bbb0b4aeada9aab1bcc0 +bdbdc0bfbbb6b6b3aea9adb0afacacb2b8b5b9b9b3afafafabadaba8aaae +b4b7babcbbbbbab7b5b2afa4a7abb0b4b4b2b0b5b4b2b1b1b5babdb2b4b7 +b7b5b1afafb3b0adadaba8abb1a7b0b3aeadb3b5b0b4b4b6b8b9b9bbbab3 +b3b4b4b0ada8a5a7abb4bcbab4afb1aaabacaeb0b2b3b4afb4afabb0aeaa +afb2b1b0b1b2b3b1b1adaaa8a8abacacabafababb1b3b0aba9a9acadaaab +aeadaab3b1aeacaaaaaaada9a8a9acaeaeaba8b1afacacaeb0ada9acacaf +b5b5b1afb1b2b3b4b5b5332f2c2c2e2e2a26262a271f21303d42514e4f52 +4e4c4d514e51524f4b4d4d4d5053514c4b50565855504b47484c50524849 +4e545350505451555756565958545c5957585b5c59565b5251575447454e +5c58524f4c483b2e1a100803010001060c0c090a172c414b4b4949474547 +4e5157585353676f4f2000000d180f121d0f3c57675e60716f5c4354749d +c3d1ccbeb9b5b5af9d897a6f65605b585d61655e6258525356544a43322b +1f100a08090a1708032034202552717d6e421e1a190e00080d00144b7987 +5122000007100f111d130a080f161b1a0e131b1b191415151f1812161d20 +1c160d1c272317151f2c3f61879da8a083654d4a4b4f525048424d4e4c49 +423e3b3c38342b1f160f0902000415324c473f4659636e747d89898996a0 +cafae3dcc8cda28c797173787c7a777b81827f7f83878281807f7f808283 +868380818384817e7f7d7b797a7b78757d7d7b7b7a7a7979777c7c7b7b7e +7f7d7c7f817f7f817f7d7c7b7c807e7a7d8384848584807d7c7d7c7c7e81 +83817c787b80827e7a7977737778797b7c7d7e7f827f86898180827c7c7f +858a8c8a8a88828385858583807f827d87818084797d7b7c78787d878a87 +858885817e7e7b7673797c7b78787e848185857f7b7b7b7878767374787d +808284838382807e7b796f72767b7f7f7c7a7f7e7b7a7a7e83867a7c7f7f +7d7977777b78757573707379757e7e79787e7d787c7c7b7d7e7e7e7f797c +7d7d7b78737072767f86847d7878727172747678797a757a757176747075 +777675767778777774716f6f72737372767272787a777270707374717275 +74717b797674727273767372737678787572787572727476736f7272757b +7b7775767a7a7b7c7c847f7d7f7f7d7e7e7e8687838ea6b6b3bbb6b3b6b6 +b6b7b9bbc0c1bebdbebdbabebdb9b4b2b3b7bbb6b5b5b4b4b7bbbfb4b6bb +bfbdbabcc2b8bcbdbcbfc4c5c2c1c1c1c2c3c3c3c1c4c1c1c0bcb6b7bcb5 +b5b2b0afa89684746351443a332f313332323238424f556a73818a919aa7 +b2c5cccdcacfcfc3ae7240333b323a3f304376a8c3c9cccac4ab81636d92 +b1bec0b7b9babcc4ccc9c1cacdcdcbcdcfccc7d1cfced1d2ccbdb0aaa090 +7b695947382946392a45534a4c5f6d7b7c6f54341b202a2d2528426987b8 +a77d4c2d2a2928393e3d3832333b43423a33363f433f383f3f41413d3b3f +463e373c4744363641464b5c7aa3c0c8c4aba0938a878b8f92979b9c9c9b +9c9da0918e8274665b4e44434a577aa3b2b2babbc5d1dadfdfd5c6c1d1e1 +dec6caced1ccd1d6dbe0e2e2dfd8dbdfe1e1e2e4e7e2e1dfdedfe0e0e1e3 +e2e2e2e3e3e4e3e1e0dddadbdeded8e0e1e1dfdedddddedee1e2e0e1e4e2 +dfe0e2e3e0e1e3e2dcdddcdee1e0dee2e6e5e2e2e2dfdadcdfe3dfdbdbde +e1e4e3e3e5e2dbd7dadcdbd8d9dbdddfe0e0e0e2dfe4e6dedee0dbdbdce0 +e8eae7e3e4e1e3e6e8e7e5e3e1e4dfeae4e3e7dde1e3dfd8d6dee6e9e5e3 +e6e6e2e3e3e3dfdcdedfdedcdde1e5e4e8e8e2dfe0dfdfe0dedddbdedfe2 +e1e7e5e3e2e3e1e0ded5d9dee3e6e5e0dedfe1e1e2e1e2e4e6e1e3e6e6e3 +e0dfdee3e0dededcdadee4dce2e4e3e1e2e0dde0e1e3e6e7e7e7e6e0e1e4 +e5e7e3dedadbdce2e9ebe4dcded9dbdddee0e2e4e4e3eae5dee4e4dfe3e1 +e0dfdfdfdfe2e2e1ddd9dadee0dfdde0dddee3e4e1deded9dddedcdcdddc +d8dcdadbdcdcdbdfe4e0e0e1e2e4e3dfdadbdcdcdbdee2e2dfdedfe3eaea +e5e1e1dfdfe0e0e04642404242403f42424a4c48536b7979817c797c7e7e +7f84868c8e8c8b8c8b888b8a86817f808488838282818184888c8082878b +8a87898f878b8f8e9196979494949495969695939693908f8b8584898382 +8280807c6d5d4e3f2e221a120f10100f0c0c101b242a3f49535e646e7980 +8b8e9191969a91824b1e15221f29311e234e7b90939494937f5d475881a1 +afb3acafada9acafa99da1a3a19ea0a29f979f9e9ea2a5a0938982796854 +41301e0e011b0900071002041b2f46514f3f26111319160904173a54887b +572c171b211d2424231e181921292820191c2529251e252527272321252c +231c212c291b1b282c32416086a4aba68b81736865686c6e6e7071706e6d +6e70625f5546392f2117131824466d7a797f838e9eacb6b9b3abb0c6d7d5 +bec0c0bdb1afaeaeafb1b0afa9adb1b3b3b4b9bcb7b6b6b5b6b7b9babab9 +b7b7b8b8b6b5b3b2aeabacafaca6aeafafadacabaeafafb4b5b3b4b7b8b5 +b8bab9b6b7b8b5afafaeafb2b0aeb0b6bab9b7b7b4afaeb1b5b1ababaeb1 +b2b1b3b5b2aba7aaacaba8a9abadafb0b0b0b0adb4b6aeaeb2adadaeb5bd +bfbcbabbbabcbdbfbebcb8b6b9b4bdb7b6bab0b3b1ada8a8b0bbc0bcbabd +bbb8b4b4b2aeadafb0afadaeb2b6b5b9b9b3b0b1b0adadabaaacafb4b7b8 +bebcbab9b8b6b3afa3a6acb1b4b3b1afb0b2b4b5b4b5b7b9b2b4b7b7b4b1 +b0afb4b1afafadabafb5a8aeb2b1afb0b1aeb1b2b6b9bababbb9b6b6b7b8 +b5b1aba7a8a9b0babcb7b1b1abaaacadafb1b3b3b2b9b4adb3b3aeb2b3b2 +b1b1b1b1b1b1aeaaa6a7aaacaba9adaaabb0b1aeababa6aaaba9a9aaa9a5 +aba9aaababaaacb1ababacadadaca8a5a8ababaaadb1b1aeadaeb2b9b9b4 +b0b0b0b2b3b3b32d26242525211e1e1e25241e293f4d4b534e4b4c4d4b4c +4e50535551504f4e4d52534f4a48494d514c4b4b4a4a4d515547494e5251 +4e50564d515453565b5c595959595a5b5b5a585b585655514b4b52525352 +50524f4134291f1209050102070c0d0b0b0e161e212f33393b3b3f474d59 +5b5d5a61645e512000000c11212e140a2b54656463666b644d435f93bbce +cfbdbab7afaca7947b7369605a5c5e5e555652545a61615752514e443527 +1a0c00001507001221181c34465a625a44260f0d110e000007283f716240 +1500040a09131716110b0c141c1b130c0f181c181116161a1a1614181f18 +111621201012232f38466388a1a59c7e6d5c4f494a4c4e4e504e4b474342 +4236352e241c160c0200000521414942474855697b8a928e8ea0c0dfe6d6 +d9d1bf9e8c7b7375777d7e75797d7f7f8084878281807f80818283848382 +82838382817f7e7a77787b79737d7e7c7a79787879797d7c7a7b7e7e7b7d +7f7f7c7d817e787b7a7b7e7f7d7f8587858484817c7c7f837f7a7a7d8081 +808284817a76797b7a77787a7c7e7f7f7f7f7c83857d7d807b7b7c828a8c +898687838385878684817f827d86807f83797f807c77767c868a86828584 +7e7c7c7a76797b7c7b797a7e828185857f7c7d7c7a78767576797d808086 +848281817f7c796e71777c7f7e7b797a7c7d7e7d7e80827a7c7f7f7c7978 +777c7977777573777d767c7d7c7a7b7976797a7b7e7f7f7e7e7c7f808180 +7c767273747b8486807a787070727375777979787f7a7379797478787776 +767676777775716d6e7173727074717277787572726d7172707071706c73 +7172737372757a757576777776726f6f717170737777747374787f7f7a76 +7678797a7a7a7b7c82898983828580828993a3b3bbbbbdb7b4b5b6b4b4b9 +bcc0c3c0bdbebcb9bab9b7b5b1afb0b2b1b0b1b4b8bab8b6b6b7bcbfbcba +bec5bbbebdbbbdc2c4c2bdc0c3c5c4c3c3c3c1c4c4bcb8bbbfbfb4b3b3b1 +b2b0a79c93847060524238362d2e32373833312d3a475b6975818e9bb1b8 +c7d9d6c5c4cfb37e4a383842454341466aa5ccccc5c4d2ab83727585a1b9 +bbb6aaa5bbd1c7abbfc9cecfced0cecbcac9cacdd1d1cbc4c2c0b7a69785 +6c542c2e30353a3d4451594d4c607778644e3b22213639262538528bb5a1 +673b2b2e2c3741433d363434433d37373b3f403f3a3a3d403d383a424b3c +353c44403b373a3a42516581a5bfc6beae9b8b898f979698999a9a9da1a3 +9291897b6e6355464246485e85a1afbdb3b5bcc9cfcecbc5cbd2d7c7c6c9 +d6cecdd4d9dde0e2e1e0dadadcdfe1e3e3e4e1e1dfdedfe0e1e2e1e2e4e4 +e3e3e6e7e4e3ded9dbe0dfd8dee0e0dfdbdbdee1dee1e1dddee1e0dcdddf +e0dfe1e4e2dcdedcdee1e1dfe2e5e5e0e0e2e0dbdfe5e7e1dbdadee2e5e4 +e2e4e3dddbdee1e0dcdddee0e0dfdedee1dee2e4dcdde0dbdcdbdce4e8e5 +e3e5e2e2e4e5e4e3e3e2e4dee8e1e1e6dde2e5e1d8d5dde6e8e4e2e4e5e1 +e2e4e5e1e3e2e1e1e1e3e5e6e4e8e7e2dfe1e1e1dedddddde1e1e3e2e7e4 +e1e0e2e0dfdddadddfe1e1e1dfdfdee1e3e4e3e3e5e7e1e3e5e5e2e0dfe0 +dfdedfe2e1dddfe3e1e0e1e4e2dddcdfdde0e3e7e9e8e6e5e4e3e3e3e7e4 +e1dcdddbdee6ece7dedddbdcdcdddddedfdfe3ece6dfe4e6e1e3e2e1e0df +dddde0e1e1ddd8d8dde0dfdcdedddfe3e3dfdfe3dbdededbdbdedfdcdbd9 +dbdfddd9dde3e2e1e0dedfdededdd8dddfdcdde2e4e2dedde0e5e5e1dedf +dededfdfdf3f40464e4e48464944474b5566767c7e837f7c7d7e7c7f8487 +8d908e8c8d8b88878684827e7c7d7f7e7d7e81858785838283888b89878b +928a8d8f8d8f94969490939698979695959396938b878a8c8c8283817f80 +81776e675a4a3d30231b180c0d1015140f0905111f303f4956646c7a7a8a +9d9a8d8d9c8555281a21303631272643779794898a9d7d5d545c7092afb6 +b2a199a7b9a98999a1a4a2a1a09e999595969ba0a19d9a97968e7f6f5c43 +30161915100c06040c14090c26444c3e30240e07191700000b256191814c +261c1d151d2729231c1a1a29231d1d2125262520202326231e202831221b +222926201e202127374b6789a4aaa2937e6e6a7077727374737273767968 +665d50453a2c1f1b1d1e31556e79857e818d9fadb1b1b2beccd1c3c1bfc8 +bab0b0afafafafafb0abacaeb1b3b5b8b9b6b6b6b5b6b7babbb8b9b9b9b8 +b8b8b9b6b5afaaacb1ada6acaeaeadacacafb2b1b4b4b3b4b7b6b2b5b7b6 +b5b7bab5afb1afafb2b2b0b0b6bab7b5b7b5b0b1b7b9b3abaaaeb2b3b2b2 +b4b3adabaeb1b0acadaeb0b0afaeaeafacb2b4acadb2adaeadb1b9bdbaba +bcbbbbbbbcbbbab8b7b9b3bab3b3b8afb4b3afa8a7afbbbfbbb9bbbab6b3 +b5b4b0b4b3b2b2b2b4b6b7b5b9b8b3b0b2b2afabaaaaaeb2b6b8b9bebbb8 +b7b7b5b2aea8aaadafafafb0b0afb2b6b7b6b6b8bab2b4b6b6b3b1b0b1b0 +afb0b3b2aeb0b4adacafb2b0abadb0aeb1b6babcbbbab8bab9b6b6b6b3ae +a9aaa8adb7bdbab4b0adaeaeafafb0b1b1b5beb8b1b6b8b3b5b4b3b2b1af +afafb0aeaaa5a5a9acaba8abaaacb0b0acacb0a8ababa8a8abaca9aaa8aa +aeaca8aab0adacaba9a8a7a7a8a5acaeabacb1b3b1adacafb4b4b0adaeb0 +b0b1b1b123242a30302824251f1f242c3a495051554e4b4c4d494b4e5154 +57535152504d4e4f4d4b474546484746474a4e504e4c494a4f52504e5259 +5053545254595b5955585b5d5c5b5a5a585b59514d5053554f52504c4d4d +463d3a32261f170f0b0d05080e13140f0a050d1520272c333c4251515d6b +66545465512903000f26332d1a1126536b63555a735c484c607fa9c8ccc3 +b2a7b0b99e70726e68616060605a4f4c4d545d5f5f5e626462564b3c2716 +000404070c0c121e2920243c575b4b382a0f06150e0000000e48796a3711 +090b050e181a140d0b0b1a140e0e1216171611111417140f111924150e15 +1e19151721252c3a4c66869d9f96826c5c565b605a5957524e494949383b +362e29241a0e0c0b061431434a524a4f5f77889398a1b6ccdbd4d8d7d5b9 +9e8c7d7475767c7f77787a7d7f8183848181807f80818384828384848383 +848582817b76787d7a737b7d7b7a7878797c7a7d7b797a7d7c78787a7a79 +7b807c767a78797c7e7c7d8287838284827d7f8587817a797d8182818183 +827c7a7d807f7b7c7d7f7f7e7d7d7e7b81837b7c807b7c7b7e868a878688 +8484858685848382847e867f7f847b80827e77757d8889858383837f7d7f +7c78807f7e7e7e8082838185847f7c7e7e7c767575787c7f81818683807f +807e7b787375787a7a7a7a7a797c7f807f7f81837a7c7e7e7b7978797877 +787b7a76787c7b7a7a7d7b76757876797b7f81807d7d807f7d7d7e7b7772 +7371757f85817a7772737374747576767a837d767b7d787a797877767474 +757675716c6c7073726f72717377777373776f72726f6f72737072707276 +7470737977767573727171726c727471727779777372757a7a7673747575 +7676767d7a7c7e7b797d868a848da3b5b8b9bcbeb9b8b8b5b0b4babbc0c3 +c0bdbebcb9b9b9bbbdbab5b4b5b3afaeb4babbb3aab3b5b9bbb8b6bcc4c2 +c4c0bbbabebfbdbabfc5c6c4c2c3c5bcc3c3b7b3bdc4c0c2bdb7b2b3b9b9 +b5aa9d8d7e6b56474335302b2b2d2e31352e32373b4558708597a9b2b3bc +cdcfc3cdc689433238435c69403c75b2c9ced6d1cfc8ab7b5e7497acb8b7 +a5a3a9936fa7b9c8cccacccfd0d5d1c9c6c6cacecfbfc1c0bcb9b0a08969 +3a2e342323363d3e515d59555d6b6d4f3c2e2d32333433352c417ca79961 +32353232373d3f3933353f484338343d484138364047443d3a32464a3934 +434a4337363d4649506781abbbcbc8b4a09594919394929394999b93938c +7e756c5d4d3f413d456586a2b8b5aaa6b0b7bbc3cbd2cfcdc0ccc3d9d6d1 +d8dce0e0e0e0dfdbdbdbdde1e3e1e0e1e0dfdedfe0e1e2dfe2e6e5e3e2e7 +eae7e5dfd9dbe1e1d9dcdedfdedbdce0e2dfe2dfdddee0dedadadcdedee1 +e5e3dde0dddee1e1dee1e3e3dedee1e0dde3eae5e1dfe0e3e4e2ddd9e0e5 +e4e3e4e2dee0e1e1e1e0dedddbe3dfe3e4dddee1dde1dcdbe3e6e4e4e8e3 +e2e2e1e1e1e3e4e4dde6dfdfe5dde3e7e1d7d4dce5e7e3e3e5e6e2e4e6e8 +e4e3e1dfdee0e2e2e2e4e7e7e2e0e1e2e3dbdbdddee3e4e5e4e6e3e0dfe0 +dfdedce0e1e0dedddddddfe3e4e3e1e0e2e8ede2e3e5e4e2e0e0e1d8d9de +e4e3dedcdfe6e0dfe3e1dad9e2dbdfe3e8eae9e6e4e6e2e0dfe3e2e0dddf +dbdce4ece9e0dbdedededddddcdcdce0e9e3dbe1e2dee0e2e2e1dedcdcdf +e1e2dcd7d7dddfdedcdddde1e4e2dee1e7dfe1dfdbdce2e5e4dfdddfe2de +d7d8dee3e1dedad9dadfe1dbe2e4dfdde0e3e2dbd9dadddddad9dbdcdddd +dedd44434346433e434c4f494f6676797a7f848180807d7b7f85888d908d +8c8d8b888686888a87828182807c7b81878880777f818587858389919193 +928d8c90918f8d929899979595978e959286828c918f908e857f80868683 +786e635848362b2618120d0d0b0c0d0e070a0e131c30495964727a798294 +978c9a985f2016212f4954271c50849595999599988159445f89a8b5b09a +9393785085939f9f9c9b9c9c9f9a939093989ea19296969490897969592d +1d1900000201000e19181722323c2b1e0f0d11110f0e110a215d8a7d471b +1b18181d23251f191b252e291e1a232e271e1c262d2a2320182c301f1a29 +30281e1e232c2f374e6892a2b0ad99857a7874747473707274766e6e665a +5047392b21231c213c597287847d7e8f9da6b1becacacbbdc7bac9c1b2b2 +b0afadadaeafadadadafb3b5b6b5b6b5b6b5b6b7babbb6b9bbbab8b7b9bc +b9b7b0aaacb2afa7aaacadacacadb1b5b2b5b5b3b4b6b4b0b2b4b4b4b7bb +b6b0b3b0afb2b2afafb4b8b5b3b6b5b2b5bcb7b3afb0b3b4b0aba9b0b5b4 +b3b4b2aeb0b1b1b1b0aeadabb1adb3b4adaeb3afb3aeb0b8bbb9bbbfbbbb +b9b8b8b8b8b9b9b2b8b1b1b7afb5b5afa7a6aebabebababcbbb7b5b7b7b2 +b4b2b0afb1b3b3b3b5b8b8b3b1b2b3b1a8a8aaafb4b9babbbdbab7b6b5b4 +b1adaeaeaeacababaeb0b4b5b6b4b3b5bbc0b3b4b6b5b3b1b1b2a9aaafb5 +b4afadb0b2acadb1afa8aab3acb0b6bbbdbcbab8bcb8b3b2b2b1adaaaca8 +abb5bdbcb6b1b0b0b0afafaeaeaeb2bbb5adb3b4b0b2b4b4b3b0aeaeaeb0 +afa9a4a4a9abaaa8aaaaaeb1afabaeb4acaeaca8a9afb2b1aeacaeb1ada6 +a5abaeaca9a5a2a3a8aca8b1b3aeacafb2b1aaa8a9acaca9a8aaaeafafb0 +af27242525221c1e26271f263a4a4d4e5054504f4f4a47494f5156575451 +52504e4f4f5153504b4a4b4945444a5051494046484c4e4c4a5058575957 +525155565452575d5e5c5a5a5c535a584c485258575d5a524a494d4f4e47 +403b342c1f16160a0703050a0d0f110a0a08070a172c3c47545751525d5e +53636637000013284551200d3560665e625f6a72684d436696b7c6c0a89d +966f3c6266696661616563615a535054596065595f6463645e5243350d01 +04000004090c202e2e2c36454f392815100c07000000000a48786f3a0d0e +09090e1416100a0c161f1a0f0b141f180f0d171e1b1411091d21100d1a23 +1d1a1e222b2e334a638d9ba7a4907c6f6c64605d57504c4a494142413a36 +342b2119190d0b20384a5e5b545a6e8491a3b6c8d0d8d0ddcdd3bc9d8d7f +7774747b7e7979797b7f8181808180807f80818384808386858382858885 +837c76787e7c74797b7a7978797b7e7b7e7b797a7c7a76757778787b7f7d +777c79797c7e7b7c8085818083827f838a85817e7f82837f7a787f848382 +83817d7f8080807f7d7c7a807c82837c7d817d817c7d858886878b878483 +8282828384847d847d7d837b81847e76747c878884848684807f817f7d80 +7e7c7b7d7f7f7f8184847f7d7e7f7e737375797e82838385827f7e7e7d7a +77797979777676787a7e7f7f7d7c7e84897b7c7e7d7b79797a7172777d7c +777578807a787c7a73727b74787b8082817d7b827e7a797a797673757173 +7d85837c77757575747473737377807a7278797577797978757373747676 +706b6b7072716f717175787672757b7375736f7076797876747679756e6e +747876736f6c6d72766f77797472757877706e6f72726f6e707374747574 +7d7c817e7d898c7a8797adb9bdbbbdbdbfbebab6b2b3b8bcc3c5c2bfbebe +bab4b6babab4b0b2b4b4acb4b6b1b1b6b5adb5b5b6b8babcbbbac2beb8b8 +bbbebebdc1c5c6c3c5c9c8c1bfbebcb7b3b5bcc1c0bdbfbfbebebcb9bcb2 +a19381715f5445403833323131323033353734333d4b596c869fb3c0ccd3 +cfd3c79b59333d56647d402b6db9e0c5c9c7d0dbc29172687c96b8cdbb92 +683857a0c0baccd6d2dad1cecdcfd0cec9c3bec5c0bbbdb8b5b896846d55 +443a373735404a4b4a4e5d66605448392f292c30322f211e4982917c5340 +2e2d3943413b3a37363b42433c35433f3b3b3d404242353c4546413c3b3c +483f36353c464b4d657b9ab4c6cabcab9f98918b8c8e93958a8784827e6f +5c4b3c3639424d638eb4a5a3a5adb8c2cacac2c7c7c3c6d1d1cbcbd4dbdd +e0e5e2dadadadce0e3e5e2e1e2e2e0e0e0e1e1e1e4e3e2e0dfdfe1e2e2e0 +dedbdad9dadadcdddedddddee1e4e1dedee0e1e2e0dfdbd9dadcdfdfdeda +d9d9e2e4dbdce5e2e3e1e1e0e1e2e6e7e5e2dfdddddddfdedce3e5dfdde0 +e2e0dce3e5e0dee3e5e3e0e4e6e4dfdddde1d8dee3e7e6e4e3e4dfe1e3e3 +e3e5e8eadedee0e0e0e0e0e0e0ded7d5dde5e6e3e6e5e5e6eae9e6e1e1de +dde0e1dfe0e4e6e6e6e5e3e2e3e6dfdddbd9e2e8e6dee6e3e1dfe0dededc +dfe1e0dedcdcdbdde3dbdbe4e5dfe1eae4e2e3e6e3dddcded9dbdfe2e2e0 +dddbe3e1e0e0dfdddadbe1e4e7eaebebe9e7e6e7e7e2dfdcdfe2eedfd6db +e5e4dbd7dcdfe2e1dedddee1e1e1e2e3e3e2e1e1dde3e7e5dfdbe0e5e2df +dcdbdcdcdad9d9dfdbdbe3e2dce0dddbdbdddfe1e0dfdedbd9dbdededad5 +dddcdbdce0e1e0dddedfe2e4e5e4e3e2d9dbdad9dfe6e2d9dedededede46 +474a48475152404c5c707c7e7d7d7f858685817d7e83899092918e8d8d89 +83838787817d7f81817981837e7e83827a8181828487898887918d8a8a8d +90908f94989996989c9a9391908b86828489908e8e8d8c8a888685878075 +695d4f41382a241c1611100f0e0c0c0e0f0d0d15212e3d566e7e8a959c98 +9f987036121f3e536c2b0e488cab8a8d8b99a8976d53547394b1c2aa7d4d +19347a978e9ca39da4999695979b9b96929098959294908d967f70563c26 +170c0701080e0c070a18262c291f140d0c101619160601275d6c59372614 +131f292721201d1c212829221b29252121232628281b222b2c2722212230 +271d1c232d32344c63809aacb0a39386807772717475776c6965645f523e +2f272120262c3f668d7e808794a6b8c3c6c0c5c5c0c2c6c1b2a9adadaaad +b2b0abacacaeb2b5b7b7b6b7b7b7b7b7b8bababbbab7b5b4b4b3b4b4b2af +acabaaa8a8acadafaeaeafb4b7b4b3b4b6b9bab8b7b3b1b0b2b5b5b1adac +acb3b5acadb3b3b8b8b6b5b6b7b8b9b7b4afadadadadacacb3b5afadb0b2 +b0acb3b5b0aeb3b5b3adb1b6b4afadafb3aab0b7bbbab8b9bbb7b9bababa +bcbdbfb3b3b2b2b2b2b2b2adaba7a7afbabdbabdbcbabbbbbab4afb2afae +b1b2b0b1b5b7b7b7b6b4b3b4b4acaaa8aab3bdbbb5bdbab8b6b5b3b1adad +aeaeacaaaaacaeb4acaeb7b8b2b4bdb5b3b4b7b4aeadafaaacb0b3b3b1ae +acafadaeaeadababacb2b5babdbebebdbbbcbdbab5aeabacafbbaca5acb6 +b7b1adaeb1b4b3b0afb0b3b3b3b4b5b5b4b3b3afb5b9b7b1adafb4afaca9 +a8a8a8a6a5a6aca8a8b0afa9adaaa8a8aaacaeadacadaaa8aaadada7a2a8 +a7a6a7a9aaa9a8abaeb1b3b4b3b2b1a8aaa9a8aeb5b1a8b0b0b0b0b02727 +2b26252e2d1a2432444f524e4f4e5353514d494a4d52595b575453534f49 +4c50504a46484a4a424a4c47474c4b434848494b4e504f4e57534f4f5255 +5554595d5e5b5d615f585655514c484a5058595a5855504c4a4b514d4841 +3b3327200f0c0706080b0e1210110f0d080409131e2b3f4e565b5f64606d +6c4d1a00143a597228002d6377504f4f61797453414b7499b8c8b07c4407 +1853695d6c7471766a63626465625d58555f5e5c605d5c68554b341e0e04 +030305111a1d191f2d3e433d2f1c0e060505050200001d5566532b170504 +101a1812110e0d12191a130c1a161212141719190a111a1b18111213241d +16151c262d3048617f99adb1a6918174685c565351514645464a4b44342b +26201b1a1b274c6e5f646d7e98aebdc5c5d0d3d3d3d4c4ab90867c73747b +7b7778787a7e818382818282818181828383858482807f7f7f80807e7b78 +777675757b7c7b7a7a7b7d807d7c7a7c7e7f7d7c76747476797978747575 +7d7f7879807f858483828384868785827e7c7c7c7c7b7c83857f7d808280 +7c8385807e8385837e8286847f7d7e82797f868a89878787838586868688 +8a8c80808080808080807e7c77767d8789868786858685847f7a7e7b7a7d +7e7c7d8183838382807f8081777573747d86847d8582807e7e7c7a777879 +7977757576787e767780817b7d867d7b7c7f7c7675777274787b7b797674 +7d7b7979787673747a7d7f828383807e8283817c7673757884756d747e7e +777373767978757475787878797a7a797878747a7e7c7672757a7673706f +6f6f6d6c6d736f6f77767074716f6f7173757473757270727575706b7271 +707173747372727477797a7978776e706f6e747b776e75757575757d787f +847f81898a97a3b3babab8b9bcbab9b6b3b2b4b8bcc1c2c0bdbcbdb9b3b6 +bab9b4b0b2b5b4b1b4b3b1b1b4b5b3b5b4b5b9bec1c1bfc0bdb9b9bcbebe +bdc1c4c3c0c1c5c4bfbebebebab7b8bdc1bebcbbbabcbdc0c1bfbab1a598 +8a7e7561584b403a35322f2d2c2e30302d323a353f4d607893afc1cac9cc +b8875144506a7887462c6da2cfc6d4d9cec6bfa7845d6b8babcacc9e7083 +837988b1c2c0c8d5d2ccc7c5c7cacec6cbc5bdbdb5b0b5b3a99c8e7d6549 +372e2e313845505554525352493a2e25231f2c332e31425d6a7d654b3832 +35393b403c39383a3e4042303d47453b353b43483f383b4447423b3c4146 +4239353c444450617692afc1c4c0bdb6ab9d8f88868c8986827a6f615549 +3b302b2f446d96aab0bbc7cac7beb8bcc2c3c0c7d1d3cfced8dfdee1e5e0 +dbd5d8dbdfe2e4e3e3e0e0dfe0e1e2e3e4e4e3e3e2e1e1e3e3e2e1e0ddda +d8dbdce1e2e3e2e0dedfe1dddcdcdddfe0dfdde0dedfe1e4e4e3dfd9d8e1 +e3dbdbe4e0e2e0e0e0dfdfe2e2e4e1e0dedfdedfdddae0e2dddbdedfdedc +dfdfdde0e6e6e1dde1e3e3e0e0e2e6dde1e3e7e8e7e6e6e0e1e3e3e4e5e8 +e9dddddfe0e0dfdfdfe1e2ded9dbe0e3e4e8e7e7e7eae7e3dededcdce0e1 +dfe0e3e3e5e7e7e6e4e2e4e3e2e0dde3e7e8e3e3e1dfdedfdededce1e1df +dddddddbdbe3dedcdfe1e0e0e4dcdbdde2e1dddbdedbdee1e3e4e2dfdee1 +e0dededddbd9d9e2e4e5e8e9e9e8e8e7e6e6e2e2e0e2e3e9ded7dee7e6dc +d7dadcdedfdfe0e1e3e5e4e3e2e2e3e4e5dfe2e5e3dfdee2e5e1dfddddde +dfdedddce0dad9e1e1dde2dcdddededfe0e0e1e2dedbdde0e0ddd9dfdddc +dce0e0dfdbe0e0e2e3e3e1e1e1dfe1e1e0e3e7e3dbe3e3e3e2e148434a50 +494b52505c68767d7c7a7b7e8081817e7d7f85898e8f8f8c8b8c88828387 +86817d7f82817e81807e7e818280818081858b8e8e8c8f8c8b8b8e90908f +949796939498969190908d8986878a8e8c8a88868687888b8b8781787166 +5b56453c2e221b150f0b09080a0c09060c141019263649627a8b9595998b +5b291f335a6d78311149769b8c999e96949381695064809db8b58251605d +4f5b82918c929d9b95918f92979b959d9893938c878d8e867a6c5c432612 +06010001070e1010161d23211a1211110d191b120c192f415c4b311e181b +1f2126221f1e2024262816232d2b211b21292e251e212a2d2821222a2f2b +211d232b2a38485d7995a7adabaaa2958779706d736f6c6963594a40392c +1e16172850778b95a5b6c1c3beb9bac0c0bdc1c6bfb3aaacacabaeb2b1ac +a7aaadb1b4b6b8b8b5b5b6b7b8b9bcbdbbbab8b7b6b6b5b5b4b3b1aeaba9 +a9aab1b2b4b3b1b0b2b4b2b1b2b3b7b8b7b5b8b6b5b7babab6b2acabb2b4 +acacb2b1b7b7b5b5b4b4b4b4b6b3b0aeafaeadabaab0b2adabaeafaeacaf +afadb0b6b6b1aaaeb3b3b0b0b4b8afb3b7bbbcbbbcbcb8b9bababbbcbdbe +b2b2b1b2b2b1b1b1aeafaeabadb5babbbfbebcbcbbb8b1acafadadb1b2b0 +b1b4b4b6b8b8b7b5b3b2b0afadaeb4bcbdbabab8b6b5b4b3b1adafaeadab +ababacacb4afafb2b4b3b3b7adacaeb3b2aeacafacafb2b4b5b3b0afadac +acacaba9aaaab3b5b8bbbcbcbcbcbdbcb9b5b1afafb0b6aba6afb8b9b2ad +adaeb0b1b1b2b3b5b7b6b5b4b4b5b6b7b1b4b7b5b1b0b1b4aeacaaaaaaab +aaa9a9ada7a6aeaeaaafa9aaababacadadaeb1adaaacafafaaa6aaa8a7a7 +a9a9a8a6adafb1b2b2b0b0b0aeb0b0afb2b6b2aab5b5b5b4b32821282b25 +252b28323c494e4d494a4d4e4e4d4a494b4e525758555251524e484c504f +4a46484b4a474a4947474a4b494847484c52555553555250505355555459 +5c5b58595d5b565555534f4c4d51575755514d4a494b4f5150504e4a423d +3720170e08090a090b0d0c0e100c070b110a1017202b3a4e5c63656c643e +100c2b647b7d2c002949624d575c595f665a4c3f5a7a9ab4af773d443927 +315869676e78746c65606060625b625d575954515a625e54493d28120200 +000207121c22252f35352c1f110a05000a0f070617313f533c220f090c10 +121713100f1115171907141e1c120c121a1d140d10191c1710131a211d15 +131c2629384b617f9eb0b3aaa499877261544f55545555554e443f3c311e +110d1c4063798497acbcc2c0bec5ced1cecfcebea790857d76777b7b7873 +76797d8082838380808081828385868584838281818181807f7d7a777576 +778081807f7d7c7b7d7b7a78797c7d7c7a7b79797b7e807d7975747c7e78 +787f7d848382828181828284817f7d7e7d7c7a7a80827d7b7e7f7e7c7f7f +7d808686817b7f8383808083877e82868a8b8a8a8a8485868687888a8b7f +7f7f80807f7f7f7f807e7a7b8286878988878785827c777b79797d7e7c7d +808082848483817f7f7b7a78787e85868282807e7d7d7c7a777a79787676 +7676767e79787b7d7c7c807574767b7a76747774777a7c7d7b78777b7a77 +77767472727b7d7d8081817f7f8182807c797778797f746e778080787372 +7375767677787a7c7b7a79797a7b7c76797c7a7675777a75737171717271 +7070746e6d757571767071727273747475797572747777736f7472717173 +737270747577787876767674767675787c78707a7a7a797880767e877f7b +8b99a9b0b8b9b8b5b6b9b3b2b1b1b0b3b9bdbcbebebbb9bbb7b3b6b9b8b3 +b1b4b6b5b8b4b2b4b4b4b6bab9b6b6bac0c4c2bfbcbbb9bbbebfbebdc1c2 +c0bdbec1c1bdbcbcbdbbb8b8bbbdbdbab6b5b8bdc2c6bbbbbab4aca39b96 +837665574e433c332f2c2b2d2d292a2c2827292f3f587488a9b4c4cbba8f +603c5765a075283674b8cfcdcccfd3d0c7b8856f6b71b1e0c4bccebba497 +8f8a95abb9c2ced1cdc6c1bfcbd0c8c1c1b7aeb5bdb7aba6a3998575614f +3b30343a3f404a4e4f483b302a27252327312f2935445d656b5d43313139 +3d3d3b3837394045393b3d40403f3d3b404141403e3e40433c3c3d404243 +403c3f44484f5d72858dafb6c0bfb8aeabaa9d9a948a7f746b6455504f56 +637ba3c5c8c9c8c5beb8b3b2b7bdbfbfc7d3d5d2d2dbdfe0e2e4e0dbd2d7 +dde0e1e2e3e6dfdfdedfe1e3e4e5e2e2e3e4e3e3e4e4e1e2e2ded9d7dbde +dfe2e3e3e1dfdfdddddcdbdcdfe0dfdee0dedee0e3e3e2ded8d7e0e3dbdb +e3dedfdee0dfdfdedfdee2e1e0e0e1e0e0dddbdfe0dddcdedfdedddcdbdc +e2e8e6e1dcdfe0e0dfe0e3e7e0e0e0e4e7e9e7e5e0e1e2e3e5e6e8e8dddd +e0e0e0e0dfdfe2e6e4ddd9dbe1e4e5e5e7e8eae6e2dedbdadce1e3e0e0e3 +e1e3e6e9e8e6e2e2e4e5e4dedfe3e6e5e0dfdedee0dfdfdee1dfdbdbdee1 +dedde2e2ddd9dce1e1ddd9d8dbe1e1dddbdcdcdee0e2e3e1e0dee0e0dfde +dddddadae3e4e4e5e6e7e8e8e7e5e4e3e6e5e4e2e3dcd9e0e9e8dfd9dddc +dbdcdee0e1e0e8e6e3e1e1e3e6e8e2e2e1e1e1e2e5e5e2e0dedee1e2e1e0 +dfe1dad7dfe0dee4dbdee1e1dedee1e3e6e2dfdfe1e2e1dee2e0dedddfde +dcd8e1e1e2e1dfdedfe0dbdfe1e1e2e2e0dbe4e3e3e2e04b414953494554 +6270777e7f7b797a7d7c7d7c7c7d80868a8b8d8d8a8a8c8882838685807e +81838285817f8181818387858282868d918f8c8b8a8b8d9091908f949593 +909194938f8e8e8c8a8787888a8a87838182878c90878888867f79747362 +5745372c2318110c08070a0806070c0808080b162a4354757f9099896032 +18465d9669151d518d9c9691949c9e989471615b5e9ac4a599a99279695f +586275838d989b98928d8c989f9a95948d86878279737477726457423017 +07040606040d131a1c1a16161818121314080002163c4b51432917171f23 +23211e1d1f262b1f21232626252321262727262424262923232426282925 +23262a2e3442586b769ba4adada59b969588857e776c6359544a45434851 +688fb1b4b6babbb9b7b6b4b6babcbbbfc4beb3ababababadb1b1ada4a9af +b2b3b4b8bbb4b4b5b6b8babdbeb9b9b8b9b8b8b6b6b3b4b3afaaa8a9acaf +b2b5b5b3b1b2b2b2b1b3b4b7b8b7b6b8b6b4b6b9b8b5b1aaa9b1b4ababb1 +aeb4b5b5b4b4b3b1b0b4b3b0b0b1b0aeababafb0adacaeafaeadacabacb2 +b8b6b1a9acb0b0afb0b5b9b2b2b4b8bbbdbdbbb8b9b9babcbdbdbdb2b2b2 +b2b2b2b1b1afb3b4afabafb8bbbcbcbcbdbbb7b0acacabadb2b4b1b1b4b2 +b4b7bab9b7b3b0b1b2b1afb0b8bbbcb7b6b5b5b5b4b2afafaca9a9acafaf +aeb3b3b0acafb4b4b0aaa9acb2b2aeacadadafb1b3b4b2b1afacacadacab +abababb4b5b7b8b9babcbcbdbbb7b6b5b4b1afb0a9a8b2bbbbb5afb0afae +afb1b3b4b3bbb9b6b4b4b6b9bbb4b4b3b3b3b4b4b4afadababadaeadacac +aea7a4acadabb1a8abaeaeababaeb0b5b1aeaeb0b1aeabadaba9a8a8a7a5 +a3aeb0b1b0aeadaeafaaaeb0b0b1b1afaab3b2b2b1af291f272e251f2d39 +454a504f4c4748494647464646494f53535555525254504a4c4f4e49474a +4c4b4e4a484a4a4a4c504c49494d545856535150505255565554595a5855 +56595854535352504d4d4f5355524c48464b4e544d4f555555514d4b3529 +1c11100c0a080808090e0f0c0e110b0601000210222d4d57697469441a0a +4e6c9f6b0e09316063554d505b6160644e46444d8cb693838e7256453b37 +4559676e76756e635b555f645e5859514b5358544e4f5451453b2d1e0b01 +02080c101f292c2921191513100b0c1009000718333e44361c0a0a121616 +14111012191e121416191918141217181615131315180f0d1015191c1c1c +222b31394961767e9da2a7a3978a838073727069655c5755504d47484f64 +88a8adb0b7babdbdbfc0c4cbcdc9cac7b8a18e837b77777a7b7970757b7e +7f8083867f7f7f808284868783838384838382827f807f7b767476797e81 +81817f7d7b7b7b7a78797c7d7c7b7d7b7a7c7f817e7a76757d807a7a807d +8181828181807f7e82817f7f807f7d7a7b7f807d7c7e7f7e7d7c7b7c8288 +86817a7d80807f808488818183878a8c8b898485858688898a8a7f7f8080 +80807f7f8086847e7a7e84878888878887837d797877797e807d7d807e80 +838685837f7d7c7d7c797a8184847f7e7d7d7e7d7b797a777474777a7978 +7d7d7975787d7d797271747a7a7674757577797b7c7a79777a7a78777676 +73737c7d7c7d7e7f7f7f817f7c7b7b7a787677706e778080797375747374 +76787978807e7b79797b7e807979787878797a7a76747272747574737375 +6e6b737472786f727575727275777d797676787977747775737272716f6d +75767776747374757074767677777570787777767481797d827d8297a4b1 +b6bbbbb6b3b5b5b3b1b0b1b1b5b9bcbbbdbdbab9bbb8b3b6b8b7b2b1b5b6 +b4bab3b2b8b9b4b6bdbdb9b6b9bec1bdb8b9bababdbfbfbebdc3c1bebbbc +bdbebcbab9b8b6b5b5b8babcbab7b6b7bcc1c5b7bbbfbeb7b1b0ad9a8c7e +72675c4e433a312b2c2e2b2b2b2e2d2a2a2e36424b66839badc7cd974a43 +618ca9651d4369b9bec7d2d2cccdcfc0a490606b8688c7cbccd5d7ccbda4 +867286a2bac7c9c3bfc9cfcac4c6bfb5bed0c7b5aaa69f958c90826c5341 +3734373e4141403c352d292f1d1c2c393532342538535e56473b3635373a +3b3a393a3c463e37384044423e343d46463e393b3f453e383a434846403a +3d3e3e414b565e727f94a6b2bbc2c7bfc0bdb7aca5a2a09b9ea9b2b7bcc8 +d5c8c3baafa8a9b0b7b8bdbfc3cad2d3d3d6dbdfe1e1e2dedbd3d9e0e2e1 +e1e3e8e0e0dfe0e1e2e3e3dfe0e2e4e4e3e4e3dfe1e2ded8d6daddd8dbdf +e1e1dfdddde0dedddee1e3e3e2dfdddddfe3e3e1dddad8e1e4dcdde3dddc +dcdfe0e0dfe0dfe1e0e1e2e3e2e1dedfe1e1e0dfe0e0e0dcdddddee0e3e3 +e2e0e1e0dfdedee0e3dfdedcdfe4e7e5e2e1e1e2e4e5e6e7e6dddee1e2e2 +e1e0dfe3e7e4dddadde2e5e0e2e5e6e8e5e2dedad9dde3e5e2e1e3e0e1e3 +e5e6e5e2e1e1e4e3dad9dbe1e2dfdededfe2e2e2e0e0dcd8dae0e4e2dfdf +e3ddd4d8e4e4dae0dee0e5e5e0dcdbdbdcdddedfdedddde2e4e3e0dfe1df +dce4e4e2e2e3e5e7e8e4e2e2e3e8e7e4e0e0dcdadfe7e8e2dde5e0dcdbdd +dfdddbe7e6e4e3e3e4e6e7e4e1dfe0e3e5e7e6e3e1dfdee1e1e1e0dfe2db +d9e1e1dee3dbe0e4e2dedde0e5e7e4e0dfe1e2e2e1e3e1dfdddfdddbd7de +dfe1dfdddddfe2d6dbdfe1e0dfdddce0dfdfdede4c45494e474d606e787e +81817c7a797c7c7c7b7c7e8286898a8c8c898a8c89848385847f7e828381 +87807f858681838a898582858b8e8a8588898c8f9191908f9694918e8f90 +908e8c8b8785848485878785838283888d9183888c8c87828182746b5c50 +45392a20160f090a0b0a0a0c11110d09080c151c3450687a949a66212d55 +82a0590c2a488e8b909799959aa5a48d76454d6664a2a4a4aaab9e8c7254 +405570889495908c979d9a9698928b8c8b7d716f7275736e756850341b0c +070505070d12171817171d0b0410150b0408041e38443b2d201c1a1d1f21 +1f1f1f212b231c1e252a28241a232c2c241f21262a231d21282e2a251e21 +2221242e3b455e6d81939ea7aeb3abacaaa69d97949490949ea7abadbac7 +bab7b1aaa7a9b2b9b5b9bbbbbfc3bbb0abaaa9a9acafafada5abb2b4b3b3 +b8bdb5b5b6b7b8b9bcbcb6b7b7b9b9b8b6b5b1b3b3afa9a7a8aba8abb1b3 +b3b1b2b2b5b3b5b6b9bbbbbab7b5b2b4b8b8b4afacaab2b4acadb1adb1b3 +b4b5b5b4b2b1b3b2b1b2b3b2afacafb1b1b0afb0b0b0acadadaeb0b3b3b2 +adaeb0afaeaeb2b5b1b0b0b3b8bbbbb8b9b9b9bbbcbdbcbbb2b3b3b4b4b3 +b2b1b0b4b4afacb1b9bcb7b9babbb9b6b0acabaaaeb4b6b3b2b4b1b2b4b6 +b7b6b3afaeb1b0abaab0b6b9b6b5b5b6b7b7b5b1aea9a6a8aeb2b3b0b0b4 +b0a7abb7b7adb1afb1b6b6b1adacacadaeafb0afaeaeaeb0b1aeadafb0ad +b5b5b5b5b6b8bbbcbab8b5b6b7b6b1adada9a9b1b9bbb8b3b8b3afaeb0b2 +b0aebab9b7b6b6b7b9bab6b3b1b2b5b7b6b5b0aeacabadadadacacafa8a6 +aeaeabb0a8adb1afabaaadb2b6b3afaeb0b1afaeaeacaaa8a8a6a4a2abae +b0aeacacaeb1a5aaaeb0afaeacabafaeaeadad2a202427212537424b4f51 +4f4a45454746464546474b4f52525454515254514c4c4e4d48474b4c4a50 +49484e4f4a4c53504c494c5255514c4e4f5154565655545b595653545555 +5351504d4b4a4a4c4e514f4a49494c5155494f57595754555543362c231f +19100c0a06070b1111131415100902000000021931495b757d480f2f5f8b +a559041627615450535652596974635327354f4e88858187887c6c573925 +374f6369665b555c625c5a5c57515761564a474a4d4d4a574d3a200e0301 +040e15191c1e1c19171d0b040f170f070900112d373020150f0f10141414 +121416201811111a1d1b150b141d1b130e1012150e0a0d17211f1c1a1e21 +23283342495f6b7d8d979ea3a8a0a3a39f98949396989ca6adafb0bac7ba +b9b6b0afb3bec6c6cacac6c5c0af9a8b817a76767a7b7971777e807f7f83 +88808080818283858580818284848382817d7f7f7b75737578777a7d7f7f +7d7b7b7e7c7a7b7e80807f7c7a7b7d81817d7b78767e837b7c807c7e7f81 +828281807f8180808182817e7b7f8181807f8080807c7d7d7e808383827e +7f807f7e7e8184807f7f82878a898686858587888989887f808182828180 +808387847e7b8085888385858685827d7977767a80827f7e807d7e808283 +827f7c797c7b7574797f817e7d7d7e80807e7b79747173797d7d7a7a7e79 +70748080767977797e7e79757474757677787776767c7e7c79787a78757d +7d7a7a7b7d7e7f7e7c7a7b7d7c787474706f767e807c777d787473757775 +737f7e7c7b7b7c7e7f7b7876777a7c7c7b777573727474747373766f6d75 +7572776f747876727174797e7b7776787978777876747272706e6c727476 +74727274776b7074767574727174737372727e7b7d7d8298acacafb4b9bb +b8b5b4b4b4b3b1b1b3b6b8b9bbbdbbb9babcb9b4b7b9b6b2b2b5b6b3b3ae +b0b8b9b2b2b8bab7b5b7babcb8b4b7babcbebfbfbebdc4c0bdbcbdbdbdbd +beb9b6b2b2b5b9bdbdbdbcbabbbdbfc0bcc0c4c4c2bebdbca9a1988d8275 +635746392e2c2b2a2b2d282a2e303233343630495d6e9ac3bb9039516eb2 +a13d28446fa4cbc9c4d0d1c3c5c5cc8e593d42a6c7c0c1c5c7d1d4cc9699 +a2afbcc5c9c9cbcfcac6c9c4bdc4c9c9c1b8aea192878b8c8c8475604b40 +373635383c382e2426272d313131363c292222334852483b363636393b3c +3a383c41433f39384048403b393e45463e3542484a433b373e4443413d39 +373b454e4c515e6e82919ba1b0b5bcc0c0c1c5c7c1c4cbcbc3b7b0ae9ea2 +a8aaacafb3b9bdc2c3c8cdd2d3d2dadddfe2e2e0dbd9d8dee4e5e2e1e3e7 +e3e3e1e0e0e0e0e0dddee0e2e2e1e2e1dfe0e0dcd7d5d9dcd7dadfe2e1e0 +dddcdfdedddee0e2e3e3e2e0e1e3e6e6e5e1dddae2e6dfe0e5dddadbdee0 +e2e2e4e4e0e0e1e2e4e3e3e0e1e0dfe0e1e0e0e0d9dcdfdfdbd8dce1e2e3 +e2e2e2e2e3e5dfdddbdfe4e7e4e2e2e1e2e4e7e7e6e4dedfe3e4e4e3e1e0 +e3e4e0dbdce1e5e4e1e3e6e5e5e1dedbdbdadde4e6e3e2e4e1dfdee0e3e4 +e3e3dfe3e2d9d5d7dddfdfdfe0e2e5e5e5e3e5e0d9dadfe3e0dddbe2ded5 +d8e6e7dce3dfe0e6e8e4e0dfdbdcdcdddddddddde1e5e4e0dfe3e1dde5e4 +e2e1e2e4e6e7e1dfe1e4e9e7e3dddedddbdce2e7e5e2e7e2dcdadcdddddb +e3e3e4e4e4e4e3e3e5e2dfe1e5e7e8e5e4e1dfdedfdfdddcdde2dddce4e2 +dce0dce0e4e2dedce0e4e5e3e0dfdfe0e1e1e3e1dfdddfdddbd7dadddfdf +dddde1e6dcdee2e3e1dedcdcdededfdfe0484547474a617576767c818380 +7e7b7d807f7e7e808387888a8c8c8a8b8d8a858486837f7f828380807b7d +85867f7f85868381838789858186898e909191908f9793908f90908f8f90 +8b85818184868986868586878b8d8d898d91918d89888a7e7970675d503f +3424180e0b0c0c0c100c0e10110f0e0c0c051c2d3e689188631d3d60a79b +34192d4d7a99928c989e959ea1a7683214197d9f9695999ba3a59d696d75 +808c939697979d98959a978f9087827e7b78726c666e706f66553d261606 +03050c13150d060b0c1013110f13190c0707182d372d201b1b1b1e20211f +1d212628241e1d252e26211f242b2c241b272b2d281e1b20282624201c1a +1e2732373e49596a79838998a0a8aeb1b3b7bbb5b9bec0b8aca5a4949ba2 +a7aaadb3b7b9bbbdbec1bfb8adaca8a7a8aaadadaeaab0b6b7b4b3b8bcb8 +b8b8b7b7b7b9b9b4b5b5b7b7b6b4b3b1b2b1ada8a6a7aaa7acb1b4b3b2b2 +b1b6b5b5b6b9bbbcbcb9b7b6b8bbbbb7b3afacb2b6afb0b2adafb2b3b5b7 +b7b6b6b2b2b1b2b4b3b1aeb1b0afb0b1b0b0b0a9acafafaba8acb1afb0b2 +b2b2b2b4b6b0aeafb3b8bbbab8bab9b8babdbdbab8b2b3b5b6b6b5b3b2b0 +b1b0acaeb5bbbab8babbbab6b2aca9acabaeb5b7b4b3b5b2b0afb1b4b5b4 +b1acb0afaaa6acb2b6b6b6b7b9babab8b4b3ada7a8adb1b1aeacb3b1a8ab +b9baafb4b0b1b7b9b5b1b0acadadaeaeaeaeaeadb1b2aeadb1b2aeb6b5b5 +b4b5b7babbb7b5b4b7b8b6b0aaabaaaaaeb4babbb8bab5afadafb0b0aeb6 +b6b7b7b7b7b6b6b7b4b1b3b7b9b7b4b1aeacabababa9a8aaafaaa9b1afa9 +ada9adb1afaba9adb1b4b2afaeaeafaeaeaeacaaa8a8a6a4a2a7acaeaeac +acb0b5abadb1b2b0adababadadaeaeaf24212321253a4c4a494d50504d48 +464547464545494c4f50525454525557544f4d4f4c48484b4c494944464e +4f48484e4d4a484a4e504c484c4f5355565655545c585554555554545550 +4b47474a4d504e4e4d4d4e50525450565a5c595756574b453d3630261b14 +0b0501040a0e12140b0b0e0e09060200000917274f766b4c123c60ab9f35 +141f32526859515b5f57656d7a411100005f7c706e727681877f48484e56 +5c605f5c5d605d5a62605b5e5754514e4a463f3b464b4f4a3e2913080102 +050d1719140e12131515120e11150400000d242c24151210121317161614 +181d1f1915121a21191210151a1b130a14191d17100d151d1e1c1a16161a +252f3238445466757f85969da7acaeb2b6bbb9bfc5c6c0b4adac9da3acb0 +b5b8bdc4cacdcbc6c1b8a7938a7e787677787979767c8283807f83878383 +8281818182827e7f80828281807f7d7e7d7974727477767a7d807f7e7b7a +7e7d7a7b7e808181817f8183868683817d7a81867f80837d7c7e80828484 +8484808080818382807d81828182838282827b7e81817d7a7e8382838484 +8484868882808084898c8a86878686888b8b898781828485858482818384 +827e7d84898884868887827e797678777a8183807f817e7c7b7d8081807e +777b7a7470757b7e7e7e7f818383817e7e787273787c7b78767d7a717482 +83787c78797f817d797874757576767676767b7f7d79787c7a767e7d7a79 +7a7c7d7e7b79797c7e7c777172717073797f7f7c7f7a7472747575737b7b +7c7c7c7c7b7b7c7976787c7e7d7a787573727272706f7176717078767074 +70747876727074787c7a7776767777777876747272706e6c6e7274747272 +767b717377787673717172727373747a7b818591aebdb3adb2b8babab7b4 +b1b7b5b2b3b5b8b8b8bbbdbbb9babcb9b3b9bab6b2b2b5b5b1ababadb3b4 +b1afb1b4b4b4b6b8b9b9b8b8bbbdbfbebdbdbdc3bebcbebfbdbdbec2bcb7 +b3b4b8bcbfbcbdbebdbdbcbcbcbfc0c3c4c5c3c4c2b7b2aca499897a6f5a +4b3b302b27272a2325282b2f3132343130354256759cb66c4b5a88b58c35 +3d3d6fa5c1c7cac9c7c8c4d2bfa17f75b4aca5aec8d3c8c3cdd5cdc6c2c5 +c7c8c6d0d3cbc7cbc5bec4b8bab7b3b0a9a19c908c8c94978e7764574837 +2e313434312c32362d27282f3238322b292c343c403d393535393c3d3d39 +3b3e40403f3c3b45413d3c3e4042433e404343413e3e3e49464a49473d3b +39403d3f4756646f747980899194999ea29c9c9d9a9898999b969aa2aaaf +b2b4b8c3c4c6cbd0d2d2d2dedfe0e2e3dedadadce0e5e6e4e3e3e5e5e4e2 +e1e0e0dfdfdedee0e0e0dfe1e0e2e0dedbd9d8dad8dee0e3e4e2e0dcdbdd +dcdadbdde0e2e2e2e0e0e2e5e5e4e0dedbe3e7e1e2e5dcdadadee0e3e4e7 +e8e1e0e1e2e4e4e5e3e0dcdbdee0deddded7dbe0dfd7d2d7e0e1e3e3e5e7 +e8e8e8dfdfdfe3e6e7e5e4e2e1e1e4e8e8e6e2dddfe3e4e4e3e1dfe1e2dd +d9dde2e6e5e6e8e9e6e3dedcdbdcdbdde2e4e1e1e4e1dedcdee2e5e4e4df +e3e2dad7d8dddee0e0e1e4e7e7e6e4eae6dfdcdddedbdad9e1e1dadce6e8 +e1e0dcdce3e8e7e5e5dedededddedfe0e1dee4e3dddde3e1dbe5e5e3e2e3 +e4e6e7dddfe3e6e9e6e1dcdbdddbd9dee5e5e3e4e0dcd9dadddfe1e1e2e3 +e4e4e3e2e1e5e3e2e4e7e7e7e4e3e1dedcdddddbdadde2dedde5e2dcdfdd +e0e2e1dedddfe2e2e1e0dfdededfdfe2e0dedddfdedcd8d7dbe0e0dedee2 +e7e2dfdfe0ded9d6d7dbdcdcdedf44454b4f5a77877d747a808283807d7d +83817f80828587878a8c8c8a8b8d8a848887837f7f82827e78787a80817e +7c7e8080808285868685878a8f91908f8f8f96918f9192908f90948e8682 +8387898b838487898a8b8b8b8e8f908f8c8a88898584817a7163554c382a +1b130d0a0b0e0608090c0d0f0e0e0907091427456a88482f477cb0892e2f +224b798e929395959a98a59071514888807a839da79c96a1aea79d989798 +97949c9f999499958e927e7e7e7e7c7975736b696a72766c55402e1e0d03 +050a0a09030e120e0b0f161a1d17100e11192125221e1a1a1e2122221e20 +2325252421202a27232224262827212225252320202029282a2c27201b1d +2826262e3a4852575f67737d848b90948e8d8e8d8d8e919590969fa7acaf +b1b2bcbbbec0c2bfb3abaea9a6a8abacacafaeb2b7b8b6b5b8babab9b9b8 +b7b7b8b8b5b5b5b5b5b4b3b2b4b2afacaaa9a8a9aeb2b5b6b4b2b1b0b4b3 +b2b3b6b9bbbbb9b7b5b7babab6b2b0adb3b7b1b2b2acaeb1b3b5b8b9b9ba +b3b2b1b2b4b4b3b1b0acabaeb0aeadaea7abb0afa7a2a7b0aeb0b3b5b7b8 +b9b9b0b0b3b7babbbbbabab9b7babebebab6b1b3b5b6b6b5b3b1aeafadaa +afb6bcbbbdbfbebbb4afaaa9adacaeb3b5b2b2b5b2afadafb3b6b5b2acb0 +afaba8adb2b5b7b7b8bbbcbcb9b5b8b3adaaabacacabaab2b4adafb9bbb4 +b1adadb4b9b8b6b6afafafaeafb0b1b2aab0b1ababb1b2acb6b6b6b5b6b7 +babbb3b5b6b9b8b5aea9a8aaaaabb0b8bbb9b7b3afacadb0b2b4b4b5b6b7 +b7b6b5b4b7b5b4b6b9b9b6b3b0aeaba9a9a9a7a6aaafabaab2afa9acaaad +afaeabaaacafb1b0afaeadadacacadaba9a8a8a7a5a3a4aaafafadadb1b6 +b1aeaeafada8a5a6aaababadae20212529334e5b4f47494f4f4d4a45444a +4846474b4e4f4f525454525557544e50504c48484b4b47414143494a4745 +47474747494c4d4d4c4d505456555454545b5654565755545559534c4849 +4d50524c4d4f5051535353565759595553525452534e4840342822130b04 +0303060a0d020206090c0e0e0d07010004132e4f6e3221407cb792362f19 +355663605d5c5a5c5b6e624b2f27655b5059728077757e857a6f6663605c +5760635e5b64645e614c4a494a4a4844453f3f444f575039261a0e010006 +0e1414111a1c130a0a0f10140e07050810181c191511111518191917191c +1c1c1b18151f1a16131515171913171a1a181515151e1d1d1e1a120e111e +1e212a3947545b626b767e848a8f938e90939495979ca19ea4aab2b7b8ba +becececbc6bfb19e8c887d76767877787a7a7e8384828183858584838281 +8181817f7f8080807f7f7e807e7b78767575757d808182807e7a797c7b77 +787b7e808283818082858584807e7c83878184857e7d7d80828586878881 +80808183838280827e7d8082807f80797d82817974798281838587898a8b +8b828284888b8c8b8a878685888c8c8985808284858584828081827f7c7e +858a89898b8b88807b777679787a7f817e7e817e7b797b7f82817f777b7a +7572767b7d7f7f80838585827f837e787576777675747c7d767882847d79 +75757c81807e7e777777767778797a787e7c76767c7a747e7e7b7a7b7c7d +7e77797b7e7e7b75706f717070757d7f7d7c78747172757779797a7b7c7c +7b7a797c7a797b7e7e7c797775727070706e6d7176727179767073717476 +757271737679787776757575757775737272716f6d6b7075757373777c77 +747475736e6b6c6f7070727381808d9da8b7beb5b0b2b6b7b6b4b1b0b6b3 +b1b3b6b9b8b7babcbab7b7b9b5b1bbbbb7b2b2b5b3aeabaeb0afb0b3b4b1 +b4b6b9bab8b8b9bbb9bdbebebdbbbcbec0bbbabfc0bdbcbec1bcb8b5b7ba +bcbdbabdbdbcbcbcbababdbdbdc0c5c7c9c6bdbcb9b3a79b918c77685544 +372b27292c2b29292a2a2b2d3a2f2c32343a5c85966256669dad5f303e43 +689fbfbec1cfd9cac5d1d9d4cdd4cda98494c5d5cacdc0bec1c5c8c9c9c8 +d1d2c9c3c8c4bebfc4b9b0a9a7a7a39fa29a919196968f847f6c57443b3a +3d3f3e362f282524201f2b39413929222b373738393938393b3e4139343a +46493e333d4346413837404b433d383c474d48423838424d524c47453d3c +3e4047515d645a5e62676a6d707381828180838b9092a6a4a3a5adb3b9bb +c6c5c7cdd3d3d2d2e3e3e3e7e3dfdcdddddee1e4e5e6e4e4e3e3e1e0e0e0 +e0e0e1e1e1e0dfdfe1e1e7e2dddcdddeddd8dfe0e3e3dfdddcdcdedcdadb +dde1e3e3e1dfdfe1e5e5e3dfdedae2e7e1e2e4dadcdcdedfe1e3e7e8e2e1 +e0e1e3e5e6e6e2dcdadfe1dedcdedbdcdfe2ddd8dbe3dee0e1e4e6e6e3e1 +dbdfe2e5e6e5e4e4e3e1e1e4e8e9e6e1dbdde1e3e3e1dfdddee2e0dad9de +e4e7e7e9eae7e5e1e2e3dddadbdfe0dedee2e1dedde1e6e8e5e4dee2e1da +dadbdddcdfe0e1e4e7e6e5e3e9e7e1dddbdcdbdcdae3e6e2e0e3e5e4e3dd +dbe1e7e8e7e8dfdedddcdddee0e1dee5e4dddde4e2dbe5e5e4e4e4e5e6e6 +dce0e8eaeae4e0ddd6dbdddadee3e3e1e4e2dedad8dadfe3e3e2e2e2e2e2 +e2e3e3e4e5e7e8e6e5e2e2dfdddcdededddbe0e3dedce3e2dde1dedfdfdf +dedededfe0e0e1e0dfdddedddfdddcdce0e0dfdbd7dde3e3dfdee1e6e2db +d8dbdddad7d8dddddddedf494855657180887f7a7d8182817f7d7c82807e +8083868786898b8b888a8c88828a88847f7f82807b787b7d7c7d80817e80 +82858685858688888c90908f8d8e90938e8d9293908e90938e8784868989 +8982828488898a8b8b8e8b8a898a898887878989857c726c68564836291a +0f0c0c0c090807080a0a0a1508040a090d2e586b3f3c5798ac5c282b263f +708b898c9ca395919ca4a09ba4a07e596a9caba0a39c9d9e9e9f9d99979e +9e959096948d939d958a817d7a7571736b64656b6e66605e4d331a0b0707 +0a090705080d131412151e261e0e07101c1c1d1e1e1d1e2023251d181f2b +2e231822292c271e1d262f251c171b262c28221719212e322e2726222020 +2128313d433b404951585e62646d6e6e7176818a8ea2a09fa2a5acafb1bb +babdc1c2bcb2a9b2aaa6abaeadaeb2afb0b3b6b7b8b9b9b8b8b8b7b7b7b9 +b9b8b8b6b5b4b4b3b3b9b4aeadaeafaba9afb2b5b5b4b2b1b1b5b3b2b3b6 +babcbcb8b6b4b6babab5b1b0abb2b7b1b1b1aab0b3b3b4b6b8b9bab4b3b0 +b1b3b5b4b4b2acaaafb1aeacaeabacafb2ada8abb3abadb1b4b6b6b4b2ac +b0b6b9bab9bababbb9b7babebfbab5afb1b3b5b5b3b1afabafb0abaab2ba +bdbdbfbfbcb6b2b0b1aeabacb0b1afafb3b2afaeb2b7b9b6b2abafaeabab +b0b2b3b6b7b8bbbcbbb8b4b7b4afaba9aaacadabb4b9b5b3b6b8b7b4aeac +b2b8b9b8b9b0afaeadaeafb1b2aab1b2ababb2b3acb6b6b7b7b7b8babab3 +b7bcbeb9b3aeaba4a9acacb0b7bab8b7b5b1adabadb2b6b6b5b5b5b5b5b5 +b6b5b6b7b9bab8b4b1afacaaa9aaaaa9a7adb0aba9b0afaaaeabacacacab +ababacafafb0afaeacabaaaaa8a7a7a9a9a8a6a4acb2b2aeadb0b5b1aaa7 +aaaca9a6a7abababacad242330404a575c514c4b4f4e4b49444349474547 +4a4d4f4e515355525355514c52514d48484b49444144464546494a474749 +4c4d4c4c4d4f4e52555554525355585352575855535558534d4a4c4f5050 +494a4d4f525555555856535152504e51585c5954493e38362921170e0803 +050601000105090f11111c0b02020000163b49232b529fbc6f3731202d54 +665f60676353576a7a79767e77512c3a708178796a676663615e59555f62 +5c5b6566626464574c4643434140453f3b3e484b46403d301d0c070c141a +1b17110d090904020a171f1707000915151617171617191c211914182425 +1a0d171c1f180f0e17231d1712141f231d1508070e191b160e111115181e +2634424a43484f54585b5f616c6f70767f8c969cb1afadadb0b4b7bacccb +c8c5bbac99898a7d77797a787a7d7b7c7f82838484848383828181818282 +828281807f7f7f7f85807a797a7b78757e8081817f7d7a7a7d7b77787b7f +818382828183878784807f7d84898386867c7f7f80818385878882817f80 +82848383847e7c8183807e807d7e81847f7a7d857e808386888886847e82 +878a8b8a8a8a888685888c8d89847e8082848482807e7e82827d7c83888b +8b8d8c89827e7d7e7a77787c7d7b7b7f7e7b7a7e8385827f767a79757579 +7b7b7e7f80838584817e827f7a7674757677757e827e7c7f81807c76747a +80818081787776757677797a787f7d76767d7b747e7e7c7c7c7d7d7d7579 +7f817e787370696e7170747a7c7a7c7a76727072777b7b7a7a7a7a7a7a7b +7a7b7c7e7f7d7a77767371707171706e7477727077767175727373737272 +7273777778777674747374727171737372706b7278787473767b77706d70 +726f6c6d706e6e6f708a8599b2b9b6b5b2b6b6b7b6b4b2b0b0b3b0b0b1b7 +b9b9b8b9bbb9b6b5b7b3aebcbcb7b2b2b5b2adafb5b4aeafb8bbb6b8bcbf +bdb8b5b8babbbebebebbbabcbebdb8b9bfc1bcbbbdbdbbb7b6b8bab9b9b8 +bbbab8babbbbbcbfbebcbec5cbcecabdbebfb8afa6a5a59485705d48372e +2e302f2c2b2a2a292828282b333533373e5557465c7fa6a8504740436395 +bdc6c0c9cfd0d5cdccd8cdcbcda88facc3c3ccc9cccccac4c2c2c6cdcec5 +c0c6c6c0c1c3b7afb1b7b6afa7989b9b958d8889898b8782735e4738313b +33302d251b1b252c2e3034383730282a333e403b33353740403f3d3b3c41 +453f3c3a3e43433e384a4b473f3a3c47514e413b3c4142474d4546494644 +454e554343464a5054595c6a727c85909a9c9ca1a1a4acb6bcbcbbc2c1c5 +ced5d6d4d4e6e3e2e6e5e0dedfdbd9dee0e6e6e5e4e1e1e0e0e0e1e2e2e3 +e3e1dfdedfdfe0e8e3dcdce0e2ded8d8dbdee0dddddddee0dedcdddfe3e5 +e6e5e4e3e5e9eae6e2dbd9e0e4e1e1e1d7dfdddededfe1e5e7e3e1dfdfe3 +e5e6e5e4dddbe1e4e0dee0e3dfe1e6e6e2e3e9dddedee1e1dfd9d5d6dce1 +e5e3e2e1e2e3e1e0e3e9e9e4e0d9dadde1e1dfdcdbd9e1e4dcd6d8e2e8e5 +e7e8e9e6e7e9ecddd9d9dcdddbdce0e0dee0e5eaebe6e1dbdfded9d9dddc +d9e0dfe2e4e6e5e3e1e3e3e0dddcdee1e5dfe7ede9e3e1e3e6eae2dee3e8 +e8e7e7dddcdad9dadbdee1e0e8e7dfe0e7e5dee5e5e5e5e5e6e6e6dce2eb +ede9e2dfddd1d9dedcdfe3e3dfe7e6e2dbd6d6dbe0e6e4e2e0e0e2e4e6e2 +e5e8eae9e6e4e2e0dedcdcdfe0dfdee3e4ddd9e1e1dee3dfdedddee0e0df +dcdee0e2e1e0dddddddcdbdbdcdedfdeddd8dfe5e5e0dbdde2e1d7d4dde3 +e3e2e3e3e3e3e2e25350627d83807f7c808182817f7d7b7c807f7d808488 +8887888a8a87888a867f8b89847f7f827f7a7c82817b7c85888385898c8a +858485898a8d90908d8c8e90908b8c92948f8d8f8f8a8685878786857f7f +818387898c8d908d898a8d8f8e8d888c8d89817b7c7d6e604e3c29170f0e +0f0e0c0a0b0a0a090705070d0f0c0e14282d264975a3a64b3b2b243d6b8f +9791979c9ca19998a59d9ca17c6583999ba5a6a8a8a49b9695969b9c918d +94939095a19a908d8f8b8075656868645d5a5d616b695f4a301604000704 +070d0e0a0f18131113171b1a130d0f182325201b1a1c252524222021262a +252220242929241e2c2a261e191b27312d221b1e2124282f262928252226 +2e3624282d343e454a4d575e6a76838e94969a9a9ea4acb0b1afbab9bbc0 +c1bbb1a9b5adaaaeb2aeb1b4adaeb0b5b8bbbab9b6b6b7b7b7b8bbbbbcba +b8b6b5b4b4b5bdb5aeaeb1b3afa9aaadb0b2b2b2b2b3b7b5b3b4b8bcbebf +bdbab9bbbfbebab6afaab1b5b0b0b0a8b3b4b2b3b3b6b7b9b5b3b1b1b3b5 +b6b5b4adabb1b4b0aeb0b3afb1b6b6b2b3b9aaabaeb1b1afaaa6a7adb5b9 +b7b6b7b8bbb9b8bbbfbfbab4adaeb1b3b3b1aeada9b1b4aea7acb6beb9bb +bdbbb8b8babdaeaaaaadaeacadb1b1afb1b6bcbdb8b2a9acacaaacb0b1b0 +b5b6b7b9bbbab6b2b1b0aeaba9abafb3adb5bbbab4b2b4b7bbb3afb4b9b9 +b8b8aeadabaaabacafafadb4b5adaeb5b6afb6b6b8b8b8b9babab2b8bec0 +bbb4aeaca0a8adaeb1b6b6b2bab9b5aea9a9aeb3b9b7b5b3b3b5b7b9b4b7 +babcbbb8b3b1adaba9a9abacabaab0b3aaa6aeaeabb0acabaaaaacacaba9 +adafb1b0afacaaaaa9a8a6a7a9aaa9a9a5aeb4b4afadafb4b3a9a6acb2b2 +b1b2b2b3b2b2b12a2639535754514e514f4e4d49474543474544464b4e4e +4d5052524f4f514d4753524d48484b4843454b4a44454e514c4c5053514c +4a4c4f5053555552515355555051575954525454504c4b4d4e4d4c48494a +4d505456575a55505052535154545b5c554d4446493d34281b0d02000000 +000105090f1211100c090a060000000b1417457eb4bc5f49302130557579 +675a5a60686769786f6e704b355771777c706c6a655b5554565c5f585863 +6462646458504f54544c44363b3d3c37363a3d4443413423110604130e0f +0e080001080c0b0d1115140f0608111c1e171111131e1e1d1b17181b1f18 +1511151a1813112425211712121c221c0e0606080a0c17141b1f1e202431 +3b2a2d31363e424748535d6a798a98a1a4aaaaacb1b7bab9b9c9c8c3bfb6 +a895878d817b7d7d79787d79797c80848685848181818181828484858482 +807f7f7f8088817a7a7d7f7b75787b7c7e7d7d7d7c817d7b7c7f83858689 +8887898d8d8987807c83878585857a82808180828386878481807f838486 +85867f7d8386828082858183888884858b7d7e808383817c78797f868a88 +878788888685888d8d88837c7d808282807d7c7981867d797b858c888a8a +89848486897a7676797a78797d7d7b7d828889847e7477777475797a787e +7e808284837f7c7c7b797674767a7e788086847e7c7e81857b797c838182 +80787575727574797a7882807879807e777e7e7d7d7d7e7d7d767c838580 +797472666e7373767b7b777f7e7c73706e7578807c7c787a7a7e7e797c7f +81807d797774727070727372717779716d75757277737271717373727075 +7779787774737372717071737473706c737a7975717478786d6b71787777 +7777757774768e9eaeb0afb2b9bfb2b3b5b6b6b4b0acb3adaeaeb7babdbc +b4b5b8b9bab8b6b5bbb3aeb1b3b0aeb1b5b5b6b5b1adb2bbbdbab7b8bcbe +c0bdb8b8b8b9bbbdbfc0bdb9b6b7babec0c0bfbcb9bab8b5b5b9b7b6b7bc +bbb8b8bbbcbebfbabcc5cac6bcbfbfbab6b6b3b0a79f8e7b6c5f4b382d28 +27292c2d2a272c2d2c2a2a2a2b31363d3a42648fa29d50483d51829eacc1 +c4cecdcacececfd5d1cad2af7696d4d3c9cecdc8c6c6c5c1d1cdcbcacdcf +cecac7c1bab8b5b4aeaaa7a49e9793918f8e918c8c89837d613a332d2a29 +251d1e27232b3135353636352b2c2d33383a3a3834393d3a34333a42413a +363c47493f363a444d4d453d3a3b4c4a4c4846403e3c444a4d4b484a555d +52575d656c727a7d8c90929596969696a3a7acb0b5b8bdbebfc2cbd2d8dd +dcd9dfe5e2dfe4e2dee2e0dadbdfe3e1e2e4e4e1dedee0e1e0dddfdfe0e0 +dfdedcdbdfe0dedbdadadcdfdcdcdcdddddddcdcdee0e2e4e4e3dfdde9e6 +e3e3e4e4e1dedfdddee1e2dddbdadbe2e4dedbdee0dee2e5e4dedfe4e5e1 +dce2e4e1e1e5e4dfdee6eae4dcdbdfe3dcdedee0dfdedbdae3eae2dde5e7 +e1e3ede2dadce5eae6e1d9dde1e6e8e6e3e2e5e3dfdddee1e5e6e5e3e0df +e1e4e8ebe0dfe1e3e4e0e1e6e2e2e3e2e0dfe1e2e3e2dfdbdadcdedddedd +e0e1e1e1e0e1e1dedcdcdedfe4e7e8e3e1e4eae9e4dce7e7e7e7e7e6e7e6 +d6dee2dcdadee1e1e1e3e4e3e1dfdddee0dddde6eceae7e6e4dcdce3e9e3 +dcd9d6d9dbdddee1e7ebe6e5e3e1e0e1e3e5ede2dfe8ebe3dddfdddddfe1 +e3e3e2dfe4e0dbdbe0e3e4e2e8e3e1dfdfdfe0e0dadbdde2e4e7eae9dee0 +ded8d6dadddedfdfe0e1e1dfdcd9d2dce3e5e0dededde3d7d2dce3e1e2e7 +dcdcdee0e05a6c7a7e7b7e858b7d7e80817e7c7877827f7d80868c8f8e86 +878a8b8c8a88878a807b7e807d7b7e828283827e7a7f888c8986878b908f +8f8a8a8a8b8d8f91928e8a87888b8f8f8f8e89868785808084807d808586 +858588898d8d888a9194928e92928d878784807770614f413422130d0b09 +0b0f0f0c080d0d0c0b09090a0b070e142550839b994c402e3c677e889c9c +a6a49ea0a09ea4a29ba6844b6dacac9fa1a09b98989490a09c98999c9d9c +9b9d99928e8b87807a77746d67636161626a656460595337100b08070a09 +050910060a0f13161717180f10141b202423211d2226231d1c232b2a231f +263133291c1c262f2f271f1d1e2c2d2c2b27231f1d242a302d2a2d3a4439 +3f48515a636b6f7e8287898989898a979aa0a4a7acb1b7bec1c3c1bebab3 +abafb4afacb2b1adb4b3b1b0b6b8b8b9bbbbb8b5b5b7b8b7b6b7b7b8b8b7 +b5b3b2b6b5b3b0acacaeb1aeaeaeafafafb1b1b3b5b9bbbbbab8b5c1bebb +bbbcbab7b3b4b1b2b5b3aeacaeafb6b8b2afb2b4b2b6b9b8b2b0b6b6b2ad +b3b5b2b2b6b5b0afb7bbb5adacb0b3a9abaeb0afaeacabb4bbb6b1b9bbb7 +b9c5bdb5b7bdc2beb8b0b4b8bbbdbbb8b4b7b5b1afb0b3b7bbb7b5b2b1b3 +b6babdb2b1b2b4b2aeafb4b0b3b4b4b5b6b8b9b6b3b0aeadafb1b2b1b2b3 +b4b4b4b3b2afaca9a9a9aaacafb0aeacb1b7b7b2adb8bab9bab9b9b8b7a7 +afb0aaa8acafaeaeb0b2b1b0aeaeafb2afb0b9c0bebbb9bab4b2b9bcb6ad +aaa7aaacaeafb2b8bcb9b8b6b4b3b4b6b8c0b5b2bbbeb6b0b2aeaeb0b2b4 +b4b1aeb1ada8a8abaeafafb7b5b0aeaeaeadada6a7a9abadb0b3b5abafad +a7a5a9acadaeaeadaeaeaca9a6a0aab2b5b2b2b2b1b7aba6aeb2b1b0b6b0 +b3b4b7b62a3b4a4d494c53594b4a4c4d4b494541484342444b5053524b4c +4f50514f4d4c524b46494b4846494d4d4e4d49454a51524f4c4d51555554 +4f4f4f505254565756524f505357575756524f504e4a4a4e4a484a4f504e +4e515053524d4d555656525757524f4f4e4f4944382a1e14040000000001 +090d0e0d12100d0904020100000813295b91adaa5a4b333b60737a816968 +66616464636a6a677559284f928b6d6665605c5c595565615f6164686763 +615b555251504c494746423f3d3d3d3d433e4142403d2704030203070501 +040a02050d11131415140b0c0d11141715130f1418150f0e131b18110d11 +1c1e140b111b24241c140f101d1d1d1915110d0b151d22222025333f353d +47505860686c7b7f858b90929396a5abaeb2b6b8bbbfc6c6c1b9afa4978a +8b8c847d7d7772787c7b7b808382838585827f7f8182817f838384848381 +7f7e8282807d7a7a7c7f7c7c7c7d7d7d7e7c8080838585848181908d8a8a +8b8a87868784858887828081808589818081858187888981828588847f85 +87848488878281898d877f7e82857c7e808281807e7d868d87828a8c8789 +92888082898e8a847c8084888a8885828583807d7f8185888583807f8184 +888b7e7d7e807f7b7c817d7f8080808082837f7d7a7776787a7b7a7b7c7d +7d7d7c7c7a7774747576797c7d7a787c82827d7782838583858284817379 +7d7575777c79797b7d7c787676777774757e83817e7e8079787f837d7572 +6f727476777a8084807f7f7b7c7b7f7f897c7b82877d79797676787a7c7c +79767a767171757879787d7a7674747474746d6e707375787b7c7275736d +6b6f7273747474757573706d656d7777767375727a6c69707773757b7375 +78797aa0a9b0b1b2b5b8b7b4b4b3b2b3b3b3b1b3aeacafb5babbbbb8b9ba +babab9b8b7bcb4b0b1b1aeaeb2b2b2b4b5b1adb1b8bab6b4b5b9bbbcbbba +bababababbbdbdbcb9b7b8bbbec2c1bfbbb9bbbbb8b9bdb9b7b8bdbcbaba +bdbcbfbdbabcc2c5c1babec2bebabab9b5b2b0a6988c806e5d42372c2527 +282a2b2b2a292827282a2f353935354e779caa8d5544556d9ebdadc6c8c8 +c8c8c8cbd2d1c8d6c79fa9c7c7c8cecdc9c8c9c8c4cfcdcbcccdcecdcbc9 +c5c1bebbb6b2aeafaba49d9793928f8f8d908e858374594c392925272523 +2223272c2e3132353531312f2d2c30383e3435393f4340372f42413e3a37 +3a424a403b373c454b48433a3d424647464340383d3f3f3e414c5253555a +5f63666b6d707072778190a1aca7a8afb1b5b9bebebfc1cbd4d7d7d7d6d9 +dfdbd9e1e2e1e6dfd9d9dee2e1e2e4e5e3e0e0e2e3e2dfe0dedfdfe0dfdd +dce0dfdedbd8d7d9dcdddddedededfdddddddedfe1e1e0dedce1dfdddde1 +e1dfdcdedbdde0dfdbd9dbdee4e5e1dee1e3e1dfe3e2dedde1e3e1dce0e0 +dddce0dfdadfe2e2dedddfdfdcdfdedddfe0e0dedde0e7e0dce4e7e2e3e9 +e4e0e0e2e3e3e1dbdde1e4e6e4e2e1e4e3e1dedddfe4e8e7e5e3e2e2e3e6 +e7e0dfe1e4e5e2e4e9e1e1e3e1e1dfdfdfdfdfdcdad9dbdedfe2e1e0e0e2 +e1dfdde2e0dddcdcdfe2e5e2e3e3e3e3e3e0dce5e4e5e5e6e5e6e5dce0e2 +dddbe0e4e2dfe2e4e4e2e0dcdcdddde1e8e9e6e6e7e4dfe0e6e8e1dddcd7 +d6d6d9dde1e6e4e7e5e3e0dededfe1eae0dfe7ebe4e0e2e3e2e3e5e7e7e7 +e4e0dedee1e6e7e3dee4e1dedcdcdcdedfd9d9dcdde1e6ecf0dfe1e1dbd9 +dddfdfe6e5e3e1dfdddbd9d7dce3e7e7e3dfdfe1d6d3dce4e3e5eadedfe1 +e2e36e777e7f808385847f7f7e7d7b7b7b7c82807e81878c8d8d8a8b8c8c +8c8b8a8989817d7e7e7b7b7f7f7f81827e7a7e87898886878b8d8e8d8c8c +8c8c8c8d8f8f8d8a88898c8f91908c888688868384888280818688868689 +8a8d8c898c9295938e9596928c8986817e7b73675c504135221b0f09090b +0d0d0d0c0b0a090b0d0e090b0c14346791a68b523d495b86a18ea5a5a3a1 +9e9c9da2a099a89c7580a29f9a9d9c98979897939e9c9a9b9c9d9c9d9b99 +94918e898480817c756e67636262626166635c5c4f35291808070a090706 +0405090c0f13151715151614161a22291d1e22282c2920182b2b28242124 +2c31251e1a1f282e2b261d2025292a292623181d22222227313c3c41474d +51575b5f6567686d7583919c969a9ea3a7adb2b6bfc2c3c2bab2aaa8a9af +acaab2b1afb6b2b0b0b5b9b8b9bbbcbab7b7b9bab9b8b8b9babab8b7b5b4 +b7b6b3b0adacaeb1afafb0b0b0b1b2b2b2b3b6b8b8b7b6b4bbb9b7b7b8b8 +b6b3b3b0b1b4b3afadafb2b8b9b5b2b5b7b5b3b7b6b2b1b5b7b5adb1b1ae +adb1b0abb0b3b3afaeb0b0adacabadafb0b0afaeb1b8b4b0b8bbb8bbc1bf +bbbbbdbebbb9b2b4b8bbbbb9b7b6b6b5b3b0afb1b6bab9b7b5b4b4b5b8b9 +b2b1b2b5b3b0b2b7afb2b4b6b6b8b8b8b4b2afadacaeb1b2b5b4b3b3b5b4 +b2b0b0aeaaa9a7a7a8aba8a9abaeb0b0aeadb6b6b7b7b8b7b7b6adb1b0ab +a9aeb0aeacafb2b2b1afadadafafb4bbbdbababdbab6b5bbbdb6b0afaaa9 +a7aaaeb2b4b5b8b8b6b3b1b1b2b4bdb3b2babeb7b3b5b4b3b4b6b8b8b6b3 +adababaeb1b2aeabb3b3b0aeabababaca5a5a5a6a8adb3b9acb0b0aaa8ac +aeaeb5b4b2b0aeacaaa8a5aab3b9b9b7b6b6b8ada7b0b4b3b3b9b4b7b9ba +bb3942494a4b4e504f4b4b4a4948484846484442454b5051514e4f505050 +4f4e4e524c48494946464a4a4a4c4d4945494f514d4b4c50525352515151 +5151525454555250515457595855514f51504d4e524c4a4b504f4d4d504f +52514e4e5457554d5357555151514f4f4f483e34281a1209060000000309 +0b0d0c0b0807070909080d101b3d729fb4985d454d5b849d7c7c6f6c6662 +5d5f646561766f4f60877c6863625e5d5e5d5964626061626362625f5c59 +565752504e504e4b443f3d3e3b3b3a40403c3f351f160900000606060501 +03070b0e1116151211110d090c14180d0e12181c190e061916130f0a0d15 +1d14100c111a201d180f12171b1c1b1815090e1414161a2831363a43494f +545b5e6162676e798a9ca7a6a9aeb2b6bbbec1c7c6c0b8a8988b86858782 +7c7e777278797a7a7f838283858684818183848381848485858483818083 +82807d7a797b7e7d7d7e7e7e7f7f7f7f808284848382818a8a88888a8a88 +85868384878682808283898a868386888684888783828688867f8383807f +83827d828585818082827f7f7e7f8182828180838a8581898c88888e8a86 +86888987857e808487888684838483817e7d7f848887858382828386877e +7d7e81807d7f847c7e8081818181817d7b787675777a7b7e7d7c7c7e7d7b +797b797574737476797677787a7b7b79778282838384838382797d7d7876 +7b7e7c777a7d7d7977757574747980807d7d81807e7e84867f7978737271 +74787c7f7f82817f7c7a7a7b7d867c7b8387807c7e7c7b7c7e80807e7b76 +7474777b7c787479787573717172736c6c6d6e71767c81737676706e7274 +747b7a78767472706e6a6d757b7b787676786d68717675767e787a7c7d7e +b0b1b0b0b6bbb9b2b6b3b0aeb0b2b5b5b5b0adb0b5b9bab9babab9b9b8b7 +b7b6bab6b2b0adabaeb3afafb2b4b2aeb1b6b9b6b5b6b9bbbcbbbbbbbaba +bababbbbbfbdbababcbdc0bfbfbbbabcbdbbbcc0bbb9babebcb9b9bcbcbe +bdbbbcc1c4c1b8bec5c1bcbbbbbab3b7b5aca49c908465543f2e2927292a +2f2e2c2b2828282a3336312c345483a7ba74535a5d779fabbebbc3c8c5c9 +d0d2d0c8d2d5c5bcbfbdc7cdcdcacacdcdcacbcdcececdcccccbc7c7c6c4 +bfbab7b6b8b4ada49c9794908e8f9491878a8a7c68533c2f292523232626 +2827292c30323436342e2829323b3c3836373b3d3b38363c41403b393c42 +4042423f3c3d43484644403e3e40434651504b4844434646494c52575d60 +6669707b8a979ea09f9ea6a8aeb1b5b8bdbfc0c1ccd7d8d1d4ddd7ddd9d7 +dfe0dfe4ded8d8dee1e1e1e4e4e2e0e0e1e1e1dfe1dfe0e0e2e1e0e0e0e0 +dedbd7d6d8dadddddddedededddddcdddddedfdfdddddedddcdce0e1e0de +dddadcdfdfdbdadddfe3e4e1e0e2e3e2dce0e1dedde0e3e2dfe0dfdbd9db +dbd8e1dfdbdae0e5e1d9e1dedbdde1e3e1e0dee5dedbe4e7e3e4e6e5e5e4 +e3e1e0e0dddedfe1e2e2e2e1e2e4e4e1dcdce2e8e8e8e7e5e4e3e3e3dedd +dfe2e3e1e4e9dfdfe3e2e3e0dedcdddddad9d9dbdee0e7e2dfe0e3e3dfd9 +e3e1dedbdadde0e1dee1e4e2dfdedddde1e0e2e3e3e4e4e4e3e2e1dcdde2 +e5e3dee1e3e4e2dfdcdcdbdee4e9e7e3e6eae5e2e5e9e8e2e0e0dfdbd9dc +e2e6e8e4e6e5e3dfdbdadbdce7e0dfe6eae6e3e6e6e5e4e5e7e8e9e8e1df +dee1e6e7e5e1dedededbd9d8dbdddddbdbd9dae0e9eee0e3e3dfdde0e1df +dfdfdedddddededfdad8dce4e7dfd9dae1d8d6dce4e3e6eae2e1e2e4e47e +7f7e7e8489867f817e7b79787a7d8084827f82878b8c8b8c8c8b8b8a8989 +8887837f7d7a787b807c7c7f817f7b7e85888887888b8d8e8d8d8d8c8c8c +8c8d8d908e8b8b8d8e8f8e8c8887898886878b84828387878485888a8c8c +8a8c9194938c9599958e8a88867f83827b756d635a4336201209090b0b12 +100e0d0c0c0c0b0a0a0a0c1b4378a0b56f4d504d6487919c989ea29b9ba1 +a19f9aa5aa9b959a97999c9c99999c9c999a9c9d9d9c9b9b9d999b999792 +8d89888a857e756c67646361636a665e63655845321c110c090707070706 +07090e1214181a1b1512131c2525211f20242624211f252b2a2523262925 +2525221f20262b292723212123262931302e2b28292b3032383f454b5156 +5b65707e8b92939291989ca0a5a9adb3b7c0c0c2c3b9aca7ada7aeaaa8af +afadb3b1afafb5b8b8b8bbbbb9b7b7b8b8b8b8b9babbbbbab9b8b8b7b7b3 +b0acabadafafafafb0b0b0b2b2b1b2b4b5b6b6b5b5b8b7b6b6b7b8b7b5b2 +afb0b3b3afaeb1b3b7b8b5b4b6b7b6b0b4b5b2b1b4b7b6b0b1b0acaaacac +a9b2b0acabb1b6b2aaaeababadb1b3b2b1afb6b2afb8bbb9bcbec0c0bfbb +b9b8b8b4b5b6b8b7b7b7b6b4b6b6b3aeaeb4bababab9b7b6b5b5b5b0afb0 +b3b1afb2b7adb0b4b7b8b9b7b5b2b0adacacaeb1b3bab5b2b3b6b6b2acb1 +afaba8a5a5a6a7a4a7acadacababaeb2b2b4b5b5b6b5b5b4b3afaaabb0b1 +afabaeb1b2b0adadadacafb7bcbbb7bac0bbb9babebdb7b3b3b2aeaaadb3 +b7b6b5b7b8b6b2aeadaeafbab3b2b9bdb9b6b9b7b6b5b6b8b9b8b7aeacab +aeb1b2b0aeadb0b0ada8a7a8aaa9a7a4a2a3a9b0b7adb2b2aeacafb0aeae +aeadacacadadaea8a6abb6b9b3b0b1b8afaab0b3b2b4b9b5b7b8baba494a +49494f54514a4d4a474545474a4a4a4744474c505150515150504f4e4e4d +504e4a484543464b47474a4c4a46494d504d4c4d50525352525251515151 +5252585653535556575655515052525051554e4c4d51514e4c4f4f51514f +4e5356554d555c58535253544f54555049433a34271e0b00000003060e0e +0c0b0908080608090b0f1f4980a8bc7651514d6083848072747569676967 +645f6e776b6a706a6562625f5f62625f60626363626161625d5e5e5c5b56 +55565957544b443f3e3c3a3c44433e444a40312111070605040405050508 +0a0e14141717160e07060e17171311121416140f0d131615100e11151417 +17141112181d1b1915131315181b2221201d1c1c22252c313b41494e565a +616c7e8d969a9c9ba7aaafb3b7bbbec2ccc6c1baa79186897f847e7a7e77 +72787a79797f82828285858381818282828185858686868584848383807d +79787a7c7d7d7d7e7e7e7f7f7e7f80818282818287888787898a89878582 +838686828184848889868587888781858683828588878283827e7c7e7e7b +84827e7d8388847c817e7d7f8385848381888380898c89898b8b8b8a8785 +84848081828484848483828484817c7c828888888785848383837c7b7c7f +7e7c7f847a7c80828382807e7b79767575777a7c837e7b7c7f7f7b757c7a +76737172747572757979777676787e7e808181828181807f7c77787d7f7d +76797c7d7b78757574777c817e7a7d848181838786807c7c7b7774777d81 +817f81817f7b77767778837c7b8286827f827f7e7d7e8081807f77757477 +7b7c7a77737575726e6d6f71706e6c6a6b71797f74787874727576747474 +7372727373746d6b707a7d7672737a716d737877797e7a7b7c7e7eb2b1ae +aeb4bcbbb5b4b2afadb0b2b6b6b6b1afb1b5b9b8b7b9b8b6b5b4b3b3b4b8 +b7b4b0abaaaeb4aeaeb1b4b3b0b2b5bab8b8b9bbbdbebebabab9b9bababb +bcc2c1bebcbcbbbdbcbebab9bbbcbabbbfbbb9b9bdbbb8b7babdbdbcbcbd +c0c2c0b8bec4c0bcbbbdbeb2b8bab6b0ada7a08978604b3c32292332302f +2e2c2926262e30312e2c3a6288afab77484d576790a7b3c3c9c4ccd4cbcf +d0ccccccc7bfc1cacfcfccccd0d0cdc8ccd0cfcccacbcbc5c7c9c7c2bdbc +bdbdb8b1a9a19b9795949296928b8e938a7770614b3426262b2a28252526 +282a2a30353736302c2c2e363a3c3732333d4739393b4044433c3740494e +493d383c434d4a464240404142464544484e545a5a5d60676d7479808486 +878a8d90959a9ca6a8adb1b5b8bdbfbfc0cddad9d1d8e6dbe0dbd8dededb +e0ded7d8dde1e1e1e3e1e0dedededededde0dfdfdfe2e2e2e2e1e0dfdbd7 +d6d8dadcdcdcdddddddcdcdfdfdedfdfe0e0e0e1e0e0e0e2e3e2e2dcd9db +dededbdbdedee0e0dfdfe0e1e0dcdfe1dfdddddfe1e3e2e0dcdadadad9e2 +e0dcdce2e7e4dce1ddd8dadfe3e3e2dee5dedae3e6e1e2e6e5e5e5e4e1de +dcdfdfdedddfe0e1e1e0e5e7e2dcdae0e7e6e7e8e8e7e5e2e1dddbdcdedf +dcdfe4dfdfe2e2e4e1dddadcdcdad9dadde0e3e8e2dee0e5e6e0dadfe1de +d9d9dce0e0e0e1e1e1e0dededcdddedfe0e1e2e3e3e7e2dedbdee2e3e2e0 +e1e1e1dfdedddfdddee2e8e7e4e6e9e4e5e8e9e6e2e2e2e1dfdfe0e2e5e8 +e7e4e4e3e0dbd9dadce6e1e0e5e8e6e4e6e6e4e2e3e5e6e8e7e8e1dad8dd +e3e7e7dfe1e4e1dedbdee2e1e0dfdad7dae1e6dfe3e5e2e0e1e0dedcdddf +e0e0e0e1e2dfd7d7e1e5dcd3d3e2dbd9dce2e1e4e7dfdedfe0e1807f7c7c +828a88827f7d7a78787a7e8185838183878b8a898b8a8887868585868584 +817d78777b817b7b7e81807d7f84898a8a8b8d8f90908c8c8b8b8c8c8d8e +93928f8d8d8c8c8b8b8786888785868a84828286868383868b8b8b8b8d90 +92928c9598928b8a8a8b7e848783807e7b766557412b1c11090514131211 +100d0a0708080e101428537da6a56e3e4249587c8a8f9ea29aa0a4999e9f +9e9fa3a09a999d9e9e9b9b9f9f9c979b9f9e9b999a9d979b9c9a95908e8f +8f89827a716b676567676a6860656b65534d402b1609090e0c0a0707080b +0b0d13191e1d191616181f2325201b1c26302222242a2e2d261d242c312c +201b1f26302d2925232324252625272b323a3f44464c545b626a7074787c +7e8184888d909a9da2a6aab0b5b9bdbdc1c3b8a9aab6acb1aca9aeaca8af +b0aeafb4b8b8b8bab8b7b5b5b5b5b5b6b8bababababababab8b7b4b0acab +adafaeaeaeafafafb1b1b4b4b5b6b6b7b8b8bbbababab9bab9b9b1aeafb2 +b2afafb2b2b4b4b3b3b4b5b4b0b3b5b3b1b1b3b5b4b3b1adabababaab3b1 +adadb3b8b5adaeaaa8aaafb3b4b3afb6b2aeb7bab7babec0c0c0bcb9b6b4 +b6b6b5b4b4b5b6b6b2b7b9b4aeacb2b9b8b9babab9b7b4b3afadadafadaa +adb2adb0b3b7b9bab6b3b1afadacadb0b3b6bbb5b1b3b8b9b3adb0afaba6 +a4a7a8a6a6a9acacadacacadafb0b1b2b3b4b4b4b8b3aca9acb0afaeadae +afafadacaeb0aeafb5bbbbb8babfbabcbdbebbb7b5b5b4b2b0b1b3b6b6b8 +b5b7b6b3aeacadafb9b4b3b8bbb9b7b9b7b5b3b4b6b7b7b6b5aea7a5a8ae +b2b4aeb3b6b3adaaabafadaca8a3a0a3a8afacb2b4b1afb0afadabacaeaf +afafb0b1ada5a6b3b7b0aaaab9b2adb0b1b0b2b6b2b4b5b6b74b4a47474d +55534d4b49464445474b4b4d4846484c504f4e504f4d4c4b4a4a4b504f4c +484342464c4646494c4b484a4c514f4f505254555551515050515152535b +5a57555554545354504f51514f50544e4c4c50504d4a4d505050504f5254 +544d555b56515053564c54585452504e4c43382412070000000c0d0e0d0c +09060205060c0e14285681a9a7713f404655757a79848374737364646463 +646b69656564646461616565625d616564615f60625b5e615f5c595a5d5e +5b56504943413d3e3d43423e45514b3d3a31200c01050a0a0a07090a0d10 +0f15181a18110b090a111517120b0c1620101012151918110c161e231e12 +0d1118221f1b17151516171716191d262d36394045505760677074757a7e +838891979ca8abb0b4b8bbc0c5cbc8c3bda58f888e8285807b7d7971777c +78797e8282828482817f7f7f7f7f7f84858585868686868483817d79787a +7c7c7c7c7d7d7d7e7e81818182828384858a8b8b8b8b8c8b8b8481828585 +828285838585848485868581848684828284868685837f7d7d7d7c85837f +7f858a877f817d7a7c818586858188837f888b87878b8b8b8b8885828082 +82818081828383808587827c7a808786878888878582817b79797b7a777a +7f7a7c7f8284837f7c7a78767576797c7f847e7a7c81827c767a7a767170 +73757474767878787777777b7c7d7e7f808080847f7976797d7d7c78797a +7a7877767876777a807e7b7d838084868784807e7e7d7b7a7b7d8081827f +807f7c77757678827d7c81848280827f7d7b7c7e7f7f7e7e77706e72787c +7d74787b78737072767473706b686b717773787a77757675737172747575 +757677726a6b777b736c6c7b7470737675777b7778797a7badafadabafb6 +b9b7b0b0afafb2b3b5b4b6b1afb1b6b8b8b5b8b7b6b4b3b3b3b3b5b6b4af +aaabb0b3b0afb1b5b5b2b3b5b8b7b9babbbbbcbdb7b7b8b8babbbdbebebe +bebdbcbcbebfbebab8b9bab7b8bbb9b7b8bbbab6b6b8bdbcbcbdbebfc0c0 +babdc0bbb8b9bebfb7bcbcb9b6b7b6b3a3978876624c36272c2a2b2c2e2e +2a282b2b2d2f2c2f4a6691ceac54414e4f5a88a4bdc3c4ced1c6cbd6cdc0 +c8ccc8c8ccd0cecacacdcdcbc8cccfcfcccacbcac5c7c9c8c3c0c0c1bcb9 +b3aba59f9b999a9394928d909287807f75624c382e292724222225242522 +282b30343634302d2a3540423d3a3d4149423b3a3e44454545413e41484a +46413a3f464b4c49433f3c3c3a3f464d515057595f63686b7073787d8188 +8e979fa3a6a7acb1b5b8bdc0c0c4cfd6d4cfd7e7dce1dad9dfdfdde1e0d9 +d9dee1e0e0e3e0e0e0dfdedededee0dededee1e1e1e2e1e0dfdbd8d7d9db +dedededfdfe0dedee1e2e1e2e3e4e4e4e4e4e4e3e3e2e2e2dcd9daddddda +dbdee0dedee0e1e1e1e1dfe1e3e2dddadbdfe4e2dfdddbd9d9dadde0e0de +dfe3e3e0dfdcd7d8dde1e2e2e1e7dfdbe2e5dfe0e7e3e4e5e6e4dfd9e0df +dedcdcdde1e2dfe4e7e3dcdadfe5e2e4e6e8e8e6e3e1e0dddddddcd9dbe0 +e1dee0e0e3e1dedbdddedcdbdcdfe3e5e6e1dde0e6e8e3dddcdeddd8d8de +e2e0e3e0dcdee1e2dfd9dcdddee0e1e1e2e2e6dfdbdadddfe1e1e3e3e0dd +dcdddfe3e3dfdfe5e9e7e6e4e3e5e8e7e4e2e3e1dbdee2e0dcdce3e7e1e3 +e4e1dcdadcdfe5e2e1e4e5e4e3e5e5e3e1e2e4e5e7e6e7e0d9d7dbe1e4e4 +e1e6eae9e4e1e3e6dfe1e0dddad9dddfdde1e4e1dfe0dfdcdee2e5e6e3e0 +dfdfe1d9d8e0e6e0d9d8e3dddbdbdedde0e2dfdddededf7b7d7b797d8486 +847b7b7a7a7a7b7d7f85838183888a8a878a898886858585858283817c77 +787d807d7c7e82827f808487898b8c8d8d8e8f89898a8a8c8d8f908f8f8f +8e8d8d8d8e8b87858685828386817f8184858182848a898b8c8d8e8f928e +94938d87888b8c84888a8786898b897e7464523f2813060c0c0d0f13130f +0b0a080e13131a385886c4a44c3946474c6c81989c9aa1a2969aa59d939c +a3a1a09e9f9d99999c9c9a979b9e9e9b999a9c979b9c9b969392938e8a84 +7c76706b696d68686862686b625c5c54422c1a100c0b070505080a08080e +11161b1d1c18150f1a2628232023272f282120242a2b2b292421242b2d29 +241d22292e2f2c26221c1c1d222a33363a40454c51565c60636a6f757c83 +8c93999b9fa4a9adb2b7babcbcbebdb1a6a9b6adb3aeabafada9afb2b0b0 +b5b8b7b7bab7b7b7b6b5b5b5b6b8b9b9b9b9b9b9bab7b6b3afacabadafb0 +b0b0b1b1b2b2b2b5b6b7b8b9babcbcbebebebdbab9b9b9b1aeaeb1b1aeaf +b2b4b2b2b4b5b5b5b5b3b5b7b6b1aeafb3b5b3b0aeacaaaaabaeb1b1afb0 +b4b4b1aca9a7a8adb1b3b3b2b8b3afb6b9b5b8bfbebcbdbebcb6b0b7b6b3 +b1b1b2b3b4b1b6b9b5aeacb1b7b4b6b8babab8b5b3b2afadadaaa7a9aeaf +aeb0b5b8b9b6b4b2b1afaeafb2b6b8b9b4b0b3b9bbb6b0adafaba5a3a9aa +a8aba8a7a9aeb0adaaaeafb0b2b3b3b3b3b7b0a9a8abadadadafafaeabaa +abb0b4b4b0b2b8bcbab9bab9bcbdbcb9b7b6b4aeb1b3b1adadb1b8b2b6b7 +b4afadafb2b8b5b4b7b8b7b6b8b6b4b2b3b5b6b6b5b4ada6a4a6acafb1b0 +b5b9b8b1aeb0b3abadaca9a3a2a6abaab0b3b0aeafaeabadb1b4b5b2afae +aeafa7a7b2b8b4b0afbab4afafadacaeb1b2b3b4b4b546484644484f514f +4747464647484a494d4846484d4f4f4c4f4e4d4b4a4a4a4a4d4e4c474243 +484b4847494d4d4a4b4c4f4e5051525253544e4e4f4f5152545557575756 +5555555654504e4f4f4c4d504e4c4b4e4f4b494b51505051525354565156 +58524d4e54574f56575455575859544e4030210e0000000103070a0c0805 +0504090f0f17345584c3a24a3744454b697b8f8b81807866626a5f525b63 +60626365635f5f6262605d616464615f60615b5e61605d5c5e615d5c5850 +4c464341443e41423f454e47444843331f0f0806080907090c0d0d0b1112 +151716120e09040f191b161314182017100f13191a1a1b1613161d1f1b16 +0f141b20211e18140d0d0f141e262d2f3a3e484d54596063696e757e8794 +9da4a9acb1b6b8bcc1c6cdcbc4b89e8a858b7f827d7a7f7c777c807c7c81 +84838386838383828181818285858585868686878584827e7b7a7c7e7f7f +7f808081818184858586878889898d8f8f8e8c8b8b8b8481818484818285 +858383858686868684868887827f8084878582807e7c7c7d808383818286 +86837f7c797a7f838585848a8480878a85858c8988898a88827c8382807e +7e7f81827f8487837c7a7f858284868888868381807d7c7c7976787d7e7d +7f828585827d7b7a7877787b7f81827d797c82847f79777976706f757775 +78757375797b78747a7b7c7e7f7f7f7f837c7675787a7b7b7d7d7b787576 +7a7e7c78777d817f7e7e7f84868582807f7d777a7d7b77777c827c7f807d +7876787b817e7d8081807f817e7c7a7b7d7e7e7d7d766f6d7076797a767b +7f7e7875777a727473706b6a6e72717679767475747173777a7b78757474 +746c6c767c7772717c767272727173767777787879acafafabaaafb4b4ae +afb0b1b4b4b3b1b5b0afb2b6b9b8b5b8b7b7b6b6b5b4b4b1b4b2aeacafb1 +b1b3b0b0b4b4b2b3b5b3b3b6b7b7b7b8bab6b6b7b8b9bbbdbeb7b9bbbcbd +bec2c4bdb8b6b7b7b5b5b9b7b5b6bab9b6b6b8bdbbbbbebfbdbebfbbbebe +b8b8babdbcb9bbbbb8b7bbbcb6b2ada79d8c725644302c2a2a2e3131312e +2a292a292d3d4f75a7c7a0532d344b587e9baebec0c6d5cad8d2c6c9d1cd +cacacecbc6c5c8c9c7cacbcdcdcbcbcbccc8c8c8c6c4c3c3c4bdbab5afaa +a5a19f9e949294919392878b83796e6758402825201d1e21232220242324 +282f353736353332363d41403d3a3e413f3a393e444543403f4144484a40 +403f4041434547514e4a49484848454c4f555b61656b6f7b85949ea3a4a2 +9ea5a8adb1b5b9bcc1c4cbd0cec9cbd5dfdadfd9d7e1e3e1e6e3dcdbdfe2 +e0e0e2e3e4e4e2e0e0e1e2e2e0dfdee0e0e1e1e1e1e0dddadadcdee1e2e2 +e2e3e3e1e2e2e3e3e5e6e7e6e6e2e3e3e2e1e0e0e1dddadadcdcd9dadde3 +e0dfe3e5e4e3e5e0e2e5e5dfd8dadfe1dedcdddcd8d8dbd8dee0dddbdde0 +dfdcdcd9dadbdee1e3e2e9e1dce3e5dfe1e6e1e1e3e6e6e1dbe0dfdddbda +dbdfe0dee2e5e3dedcdfe3dfe1e4e7e7e6e4e2e5e1e0dfdedadce1e4dfdd +dce0e0dfdddfdfdddcdde0e3e6e5e1dfe2e6e8e5e0dcdfded7d7e0e4e0e4 +dfd9dadfe2dcd7dddedfe0e1e1e2e2e2dcdadbdcdcdee1e4e3e0dedcdfe1 +e5e7e1dee4e9e7e4e1e4e6e7e4e3e4e3dfdae0e5e2dcdbe4ece0e3e6e3dd +dadde1e3e2e1e1e2e2e3e4e5e4e3e4e6e7e8e7e1dedcdee1e2dfdbdcdfe3 +e3e0dddddedadfe2e1dedcdfe1dde1e3e0dedfdfdccfd5dbdededee0e3dc +d9d8dae1e3e0dde2dfdddadcdcdfe0e1dfdfe0e07a7d7d79787d8181797a +7b7c7c7c7b7c84828184888b8a878a898988888786857e817f7b797c7e7e +807d7d81817f80848285888989898a8c8888898a8b8d8f90888a8c8d8e8f +91938a858384828080847f7d7f83848181848a888a8d8e8c8d918f91908a +87898a8986888886888c8f8d8a878076664e3322100d0a0c121616140f0b +0c0f1016293e6699bd974d2832403f5e7787949495a498a7a2969ca6a5a2 +9c9d9a9594979896999a9c9c9a9a9a9b9a9c9b99979695968f8c86807b76 +72707167676865686960665f564d4638200a09060304060807050a090a0e +161c1e1e1a18171c2327262320242725201f242a2826232224272b2d2323 +22232426282a312e2d2c2c2e2d2f353b42494f565b5f6d77859298999896 +9da2a7abafb4b9bbbbbcbbb1a4a0a5afacb1adabb1b0adb3b5b3b2b6b9b7 +b7b9babbbbb9b7b7b8bababbbab9b8b8b9b9b7b7b4b1aeaeb0b2b3b4b4b4 +b5b5b5b6b6b7b9bbbcbdbebebcbdbdbcb8b7b7b8b2afaeb0b0adaeb1b7b4 +b3b7b9b8b7b9b4b6b9b9b3acaeb3b2afadaeada9a9aca9afb1aeacaeb1b0 +a9a9a9aaabaeb2b4b3bab5b0b7b9b5b7bebcb9bbbebeb8b2b7b6b2b0afb0 +b1b2b0b4b7b5b0aeb1b5b1b3b6b9b9b8b6b4b7b3b0afaca8aaafb2afadb1 +b5b8b7b5b4b2b0afb0b3b6b9b8b4b2b5b9bbb8b3adb0aca5a4abaca8aca7 +a4a7adb0ada8afb0b1b2b3b3b3b3b3ada8a9aaaaaaadb0afaeacaaadb2b6 +b8b2b1b7bcbab7b7b9bdbcb9b8b9b6b2adb3b6b3adacb2bab1b6b9b6b0ad +b0b4b6b5b4b4b5b5b6b7b6b5b4b5b7b8b7b6aeaba9abacadaaa6a9aeb2b2 +adaaaaaba6abaeada7a5a8adaab0b2afadaeaeab9ea4aaadadadafb2aaa7 +a7acb3b7b7b4b9b6b1aeababadafb4b5b5b6b64548484443484c4c454647 +48494948484c4746494d504f4c4f4e4e4d4d4c4b4d494c4a46444749494b +48484c4c4a4b4c4a4a4d4e4e4e4f514d4d4e4f5052545550525455565759 +5b534e4c4d4c4a4a4e4c4a494d4e4b4b4b514f4f52535152555256554f4d +4f53524f515351525658575958554d412c170900000001070b0d0e0a0606 +08091022376196bc984f2c374645637780847b7479656d625458615f5d60 +63605b5a5d5e5c5f606262606060615e5f605e5e5d61625d5b5854514c48 +46473d3d41404549434c47423a35291300060706070b0d0c0a0d0c0b0d11 +151714110d0c0f161a1914111518140f0e13191a18151416191d1f151514 +1516181a1c221f1f1e202124242f343e454d535b5f6c7788969ea1a1a1aa +aeb3b5b9bbc0c7cecfc2ad91807d817a7f7c7a83837e84837f7e82858383 +8586878785838384868787868585858686858583807d7d7f818283838384 +848485858687898a8b8b8b8d8e8e8d8a89898a8582818383808184888584 +888a89888a85878a8a847d7f8484817f807f7b7b7e7b8183807e8083827c +7c7b7c7d808486858c8681888a85858b8785878a8a847e83827f7d7c7d7f +807e8285837e7c7f837f8184878786848285817f7e7b77797e817e7c7e82 +8483817f7b7978797c7f82817d7b7e8284817c777a77706f777975797470 +72787b77727b7c7d7e7f7f7f7f7f7975767777787b7e7d7b7975787c8080 +7a787c817f7c7b8285858281827f7b767c807d77767d857b7f827f797679 +7d7f7e7d7d7e7e7f807e7d7c7d7f807f7e77747274767774707074787874 +7171726d7275746f6d70747176787573747471646a7073737375786f6c6c +70777a79767b787471707072747979797a7aadafaeaaacb1b4b2afafb0b0 +b3b3b2b0b3afafb2b7bab8b6b4b5b6b7b7b6b4b3afb1b0adafb4b3afb5b0 +aeb1b2b0b1b3b0b2b5b7b5b5b6b8b7b7b7b8b9babcbcb5b8bcbcbcbcc0c3 +bab6b5b6b7b5b6bab7b5b6bbbab7b7babebababfc0bdbdbebbbdbdbabdbf +bcb6babab9b8babebbb4b7b7b6b4ac9a85765449382e2e2f3131302e2c2a +282c333a5273adc68f3a234539586b8ba7949cd8d3d3d2d0cecececbcacd +cbc6c5c9cac8cdcbcacacbcccccbcdcbc8c6c7c8c8c8c2c0bcb6b1aca8a5 +a59998979293938b9189817b7b71573a3127201e2022211f20202122262c +32373e372f2d333a3f4132383f42403c39383d464c473b373e484d48403b +393d43474547494e52575c5d64686f767d82898d908d8c898c95a0a6a5a6 +abb0b4b8bdc2c7d2d2c6c4cdd9dbdadfd9d7e1e3e1e6e6dfdde1e3e0dfe1 +e4e5e6e4e1e1e3e4e6e3e1e0e1e1e2e2e1e1e0dedcdcdfe2e1e1e2e2e2e3 +e1e1dfe0e2e5e6e6e4e3dfe1e2e1e1e0e1e3dfdbdadcdbd8d9dce4dfdee3 +e7e4e3e5e0e1e5e7e0d9dbe2e0dcdde1e0dcdbded9dee0dcdbdddfdedbde +dedddbdce0e5e1e8e1dce4e7e2e3e0e1e2e3e5e4e3e2e1dfdddbdcdcddde +dddfe2e2e0dfe0e1dfe1e3e5e6e4e2e1e5e1e0dfdedbdde3e8e0dbd8dcdf +e0dfdfdfdddcdcdfe2e4e5e4e3e4e5e5e3e1dee3e1d7d7e0e4dee3e1dddd +dfe0dddce0e1e1e2e2e2e2e2dddadcdedddadee4e2e3e3e2e1e1e2e4e8e4 +e3e6e6e3e1e1e6e7e6e2e4e7e5dedde1e5e3dfdfe6ece1e6e9e5ded9dbdf +dfe0e1e0e0e3e5e6e4e3e4e6e8e8e8e6e2e0dfe0e3e2ddd8d8dadddededb +d8d6dbe0e5e3dddbdfe4dee2e3dfdddfdfddcaced3d4d5d8dfe5dde1ddd6 +dae4e3dcdfdfdedbdcdee2e3e3e2e2e2e37b7d7c787a7f817f7a7a7b7b7b +7b7a7b82808083888b898785868788888785847c7e7d7a7c81807c827d7b +7e7f7d7e827f8487898787888a8989898a8b8c8e8e86898d8d8d8d8f9287 +838283828081857f7d7e83858282858b87898e8f8c8c908e908e8b8c8c88 +82868786878c908e8a8c8c8c8a83735f52302619111113151413110f0d0d +111a233d619fbd8837213d233a4b687f6a6da8a3a2a0a0a1a4a4a09c9c9a +95949899979c9a99999a9b9b9a9f9d9a989899999992908c86807b777679 +6c6b6c66696b646a645b57564e341a150f080607090806070707080d1319 +1f231c1412181f2427181e252826221f1e20292f2a1e1a212b302b231e1c +20262a25272c31363d41474d545c646b73797d807f7d7d818a969e9fa3a8 +adb1b5babcbabcb7a59ba0a8abacb1aeabb0b0acb3b8b6b4b8bab7b6b8bb +bcbdbbb8b8babcbebebcbbb9b9babab7b7b4b2b0b0b3b6b3b3b4b4b4b5b5 +b5b3b4b8bbbcbcbcbbb9bbbcbbb8b7b8bab4b0aeb0afacadb0b8b3b2b7bb +b8b7b9b4b5b9bbb4adafb6b1adaeb2b1adacafaaafb1adacaeb0afa8abae +adabacb1b6b2b9b5b0b8bbb8b9b8b9babbbcbbbab9b6b4b2b0aeaeafb0af +b1b4b4b2b1b2b3b1b3b5b7b8b6b4b3b7b3b0afaca9abb1b6b0abadb1b7b8 +b7b4b1afaeaeb1b4b6b7b6b5b6b7b7b5b3afb4afa5a4abaca6aba9a8aaad +aeaeadb2b3b3b4b4b4b3b3aeabaaacaba8aab0aeafb1b0afafb3b5b9b5b6 +b9b9b6b4b7bbbebbb7b9bcb8b1b0b4b6b4b0b0b4bab2b7bab6afaaacb0b0 +b1b2b1b1b4b6b7b5b4b5b7b9b9b7b5afadacadaeada8a3a5a7aaababa8a5 +a3a8adb1afa9a7abb0abb1b2aeacaeaeac999da2a3a4a7aeb4aaaeaca8ac +b7b9b2b5b5b1aeabadafb2b5b5b5b5b646484743454a4c4a464647474848 +47474a48484b5053514f4d4e4f50504f4d4c47494845474c4b474d484649 +4a48494a47494c4e4c4c4d4f4e4e4e4f505153534e5155555555575a504c +4b4c4c4a4b4f4c4a4b50514c4c4f524e4f54545151545357565354554f49 +4d4e4f4d5155535055575a5a574a3b321610050103070a0c0f0d0907060a +131b385f9fc08f402c4a3044506673544f80726a635e5d5c5c5b5e62605b +5a5e5f5d62605f5f6061616064625f5d6061656561605e5855504c4a4c42 +41423f4348434d494441433b210d110d08060a0c0c0a0b0a0807090e1215 +1a130b070d14191a0b0f16191713100f121b211c100c131d221d15100e12 +181c16181e232a30383c474d58606970797d817f808187929fa9abaeb1b6 +babcc1c6ced1c0a0877f7f7a787d7b7c8585828687828084868382848788 +8987848486888b8a888786868787858583817f7f82858282838383848484 +828386898a8a89888a8c8d8c8a898a8c87838183827f8083898483888c89 +888a85868a8c857e8087837f8084837f7e817c81837f7e8082817b7e807f +7d7e8388848b8681898c8887858586878887868583817f7d7c7c7d7e7d7f +8282807f80817f8183858684828185817f7e7b787a80857f7a7a7e838483 +7f7d7b7a7a7d8082838281828383817f797e7a706f777973787674757879 +78777e7f7f8080807f7f7a7777797875787e7c7d7e7d7c7c7d7f837d7d80 +7e7b797b848684808285817a797d807e7a7a7f857c8184807974767a7a7b +7c7b7b7e80817d7c7d7f81817f7d787675767877726d6c6e7172726f6c6a +6f747876706e727772777874727474725f6368696a6d747a7175726d717c +7d7679797673717376787a7a7a7a7badadabaaafb6b8b4b1b1b0afb1b1b2 +b1b2afafb2b7bab9b6b0b1b4b5b5b4b2b1adafaeadb1b7b4adb5b0adaeaf +aeafb2b1b3b7b8b7b6b7b9bab9b8b8b8b9babab9bcbebdbab8bbbdb8b4b3 +b6b8b7b9bdb7b5b7bcbbb9b9bcbebabac0c0bcbcc0bbbcbdc0c3c3bbb0bd +bebdbec3c5c0b7bababbbcbbb4a79e7d694f392f2b2b2a3032332e2c2b2a +28346d84a3c88c30243b494f738e6367c4e0ceccd5d0c9cbcdcdcfcdc8c8 +cccecdcfcbc8c8cbcdcccad2cdc7c6c8cacac9c7c5c1bbb6b0adaaaea19f +9d939195909192908781786754423529212021201e1d2126252122282e2e +363d3c3532363b4a3f35374248443e3a3c404549463e363c41484d4d4840 +3a3b3e4044464a5051595b606367696d70737b858e979ea3a6a3a7acb0b4 +babfc6c9d5d4c4c4d5e0e0dee2dbd8dfe0dde2e8e1dfe2e3e0dfe0e2e4e5 +e3e0dfe1e3e8e5e3e1e2e2e3e3e1e1e1dfdddee1e4dedededfdfe0dededb +dee0e4e5e4e2e0dde0e2e2e2e2e5e7e0dbdadbdad7d8dbe3dcdbe1e5e2e1 +e4dee0e5e8e2dadde6e1dedfe5e6e0dfe3dee1e0dddee1e1dddae0e2e1dc +dbe0e6e0e7e0dce5e9e4e6dbe0e5e4e2e1e4e8e0dfdddbdcdcdcdcdddee0 +e1e2e1e1e0e0e1e3e4e4e3e1dfe2dedddcdcdadde3ebe1d9d5dadee1e1de +dfdcdbdbdde0e2e6e6e6e5e4e3e1e0e1e6e4d8d7dfe1dce4e3e3e2e0dee0 +e3e2e2e3e3e3e2e2e2dbd9dde1ded9dee6dfe2e5e6e5e4e1e2e7e6e7e8e3 +dee0e3e8e8e5e2e5eae7dddcdcdddddddfe4e6e2e7eae5dcd7d8dcdbdedf +dedfe3e7e8e1e2e3e5e7e7e6e3eae4dfdcdfe0dfdddedfe1e4e5e3dedae1 +e5e8e4dcd9dde2dee3e3dfdddfe0dfdfdfddd7d2d3d9e0e8efeadadae6e6 +dcdddedfdbdee1e6e7e3e1e1e1e17b7b79787d8485817c7c7b7a79797a7c +81808083888b8a8781828586868583827a7c7b7a7e84817a827d7a7b7c7b +7c818085898a8988898b8c8b8a8a8a8b8c8c8a8d8f8e8b898a8c85818083 +838284887f7d7f84868484878b87898f8f8b8b8f8c8f8e8f9090877c898a +8a8b9297928b8c8d8e91918b807859462d19100e0e0e131616110e0d0d0d +1b587496c1892e1d272e305168383a94b09c99a3a09c9ea09c9e9c97979b +9d9c9e9a97979a9c9b99a49f9998999b9b9a9795918b867f7c797f757370 +66656b68686b69625c544333271d0f090808070504080c0b07090f15131b +22211a171b202f251b1d282e2a221d1f23282c2921191f242b30302b231d +1b1e23272a30353b42474d51555a5d60636b76818c949ba0a0a4a9adb1b5 +babcb6bcb59f97a5b0aeafb4b0acb0aca8afbab8b6b9bab7b6b7b9bbbcba +b7b6b8bbc0c0bebcbababbbbb7b7b5b3b1b2b5b8b0b0b0b1b1b2b2b2afb2 +b6babbbabab8b7babcbcb9b9bcbeb5b0aeafaeabacafb7b0afb5b9b6b5b8 +b2b4b9bcb6aeb1bab2afb0b6b7b1b0b4afb2b1aeafb2b2aea7adb2b1acab +b1b7b1b8b4b0b9bdbabcb3b8bdbcb9b8bbbfb5b4b2b0aeaeaeaeafb0b2b3 +b4b3b3b2b2b3b5b6b6b5b3b1b4b0adacaaa8abb1b9b1a9aaafb6b9b9b3b1 +aeadadafb2b4b8b8b8b7b6b5b3b2b2b7b2a6a4acaca4acaeb0afaeafb1b4 +b4b4b5b5b5b4b3b3acaaabafaca7aab2abaeb3b4b3b2b2b3b8b7babbb6b1 +b3b9bdbfbab7babfbab0afafaeaeaeb0b2b4b3b8bbb6ada8a9adacafb0af +b0b4b8b9b2b3b4b6b8b8b5b2b7b1aca9aaabaaa8abacaeb1b2b0aba7aeb2 +b4b0a8a5a9afadb2b2aeacaeafaeaeaeaca6a1a2a8afb5bcb9acacb9bcb2 +b3b4b2aeadb0b3b6b5b4b4b4b446464443484f504c484847464646474849 +48484b5053524f494a4d4e4e4d4b4a45474645494f4c454d484546474647 +49484a4e4f4e4d4e5051504f4f4f50515152555756535152544e4a494c4d +4c4e524c4a4c5152504e51544e4f55545050555456565759594e43505151 +52575b564e5154575c5f5d555337281404000000020d12100b0605050616 +55759dc9943c2d3337354f5d251d6e8269606660595a5d6164625d5d6163 +6264605d5d6062615f69645e5d616365666664615d5854514e534846463d +3e4545484c4c47423c2d201e190e07080b0a08080b0d0c06050a0e0c1219 +18110c101524180e0e191f1b140f11151a1e1b130b11161d22221d150f0c +0f15191e232c303c40494d53575d60646e7b88949ca6aaabafb2b6b8bbc0 +c5cacfbb978081827b79807d7d8684808489848285868382838587888683 +8284878d8c8a888787888885858482808184877f7f7f80808181817e8184 +8889888787888b8d8d8b8b8e9088838182817e7f82888180868a87868983 +858a8d877f828b848182888983828681848380818484807a8084837e7d83 +89838a85818a8e8a8a808489888584878b82817f7d7c7c7c7c7d7e808182 +818180808183848483817f827e7c7b79777a80888078777c828585807d7a +79797b7e808484848382817f7e7c817d716f777871797a7b7a79797b7e80 +80818181807f7f7876787c79747880797c8081807f7c7d828181827d7678 +7f868783808388837978787878787a7d7f7d8285807772737776797a797a +7e82837a7b7c7e80807d7a807a757274757472727375787977726e75797b +776f6c707673787874727475747474726c67686e757c837f71717e807677 +78777373767a7c7a79797979adb3b5b0acafb4b6b5b1adadb2b5b5b2b7b6 +b6b6b6b5b4b4aeb3b8b8b4b2b4b7afacaaaaadb1b5b7b5b1b0b3b3b2b3b6 +b9b9bab9b7b7babebfbfbebbb8b7b9bbbfbebebebfbdbdbac1b8b3b6b8b5 +b7bdb6babdbcb7b8bec3c2bdb7b8bcbebcb9b8babfbfbfbab6b5bababfc6 +c7bfbbbbc6c8c6bebababbb9a499826853423326312f3236352b25232240 +6282aeca923735313e54563e488ae5c8d1dec6c4cdd2cbcacacbcdcdccca +cacac7c6cacfcec9cbcbc9c8c8c8c8c8c0c0c3c5c2bab7b9b2a9a2a19e96 +92928e8e91918d82766c554536292524221f1c1f2324222223272d31363a +3b3936343e44473f3535424f4644403e3f444a4d413f3c3b3d43494e4a4c +4c4d4e515556545860676d737c8294969a9b9c9c9c9ca7a6acb2b8bdc1c7 +cbe3c9a9dddfd8e2e6ddd6dadedcdee0dfd8dbe2e4e1e2e7e8e6e4e3e3e2 +e0dde6e3e0dfe1e2e4e5e3dedde0dedbdfe7e0dddcdfe3e3dcd6dedfe1e5 +e7e6e1dedbdddfe2e5e4e3e3e1e2e2e0dcdad9dadfdcdbdfe6e9e8e5e2e0 +dedee0e2e3e3dfdcd9dbe1e4e3e0dbe5e9e3dee0e1e0d6dadcdddbdbdcdf +e1e2dfdfe5edeeebe4e3e3e2e2e3e4e5e3e2dcdbe2dedae2e0dddcdddcdb +dee4e5e1e0e3e3e1e3e7e1e0dfdbdadbdee0e3dadbe2e4dee0e9e1e0dddc +dddfe0e0e0ede3dfdcdee9dee0e0e1e0dddadadbdfdcdce1e2dddbdbe1e2 +e2e1e0e1e4e7e6dfdad8dbdedfdde1dedadadce0e2e4e8e9e8e5e1dfe1e1 +eaeae8e3e2e5e8e6e5e3e2e0dedddedee0e1e1dedad7d9dbdde1e3e2dedd +e2e8e0e2e4e4e4e4e8eae6e5e4e2e1dfdededee1e2e0e0e4e3e0dcdfe2e1 +dedcdcdde3e5e6e7e6e3dfdde2dfdedfe1ded5ced0e2ede6e1e2e0dcdfdd +dddcdcdce0e4dedddee1e47b81837e7a7d8183807c78787a7d7d7d868787 +87878685857f848989858385887c7977777a7e8284827e7d80807f808588 +8b8c8b89898c909191908d8a898b8d908f8f8f908e8c898e858083838082 +887e8285848283898e8f8a86878b8d8b88898b8d8d8c87817e83868d9496 +918d8d9597958f8d8f918f7d735d443022120614121317140a040404264d +71a2c48e2f2118223332151a59b4959dab95969fa49a99999a9c9c9b9999 +999695999e9d989d9d9a999999999991909395928a8789837a7375726b67 +686366686a665d5149392c1a100c0a08050205090a0a0a0b0e1214191d1e +1c191822282b23191926332927232122272d3024221f1e20262c312a2c2f +3032373a403d444d555b646c7281868b8e91929496a4a3a6acb3b6babab4 +c5a57faeada5b0b7afaaaeafaba8acb0aeb1b8bab7b8bdbebcbab9b9b8b6 +b5bebdbab9b9babcbdb9b4b1b4b2afb3bbb1aeadb0b4b4b0aab2b3b7bbbd +bcb9b6b5b7b9bcbcbbbabab6b7b6b4b0aeadaeb3b0afb3babdbcb9b6b4b2 +b2b4b6b7b7b0adaaacb2b5b4b1acb6bab4afb1b2b1a3a7acadababadb0b2 +b3b3b3b9c1c4c1bababab9b9bab9bab8b7aeadb2aeaab2b2afaeafaeadb0 +b6b7b3b2b5b5b3b5b9b3b2afaba7a8abadb0aaabb6b8b6b8c1b6b2afaeaf +b1b2b2b2bfb5b1aeb0bbb0b3b3b2aeaaa7a5a6aaa7a9aeb0aeacaeb3b4b4 +b3b2b3b5b8b7b0a8a6a9acaba9adaaa8a8aaaeb3b5b9babbb8b4b2b4b7bf +c1bdb8b7babbb9b8b6b3b1afaeacacb1b2b2afaba8aaacaeb2b4b3afaeb3 +b9b1b3b5b5b5b5b7b9b3b2b1afacaaa9a9aaadaeacacb0b0ada9acafaeab +a9a9aab2b4b5b6b5b2aeacb1aeadaeb0ada49d9dafbcb8b3b5b6b2b5b3b0 +afababadb3b0b0b1b4b7464c4e4945484c4e4c484444474a4a494e4f4f4f +4f4e4d4d474c51514d4b4d504744424245494d4f4d49484b4b4a4b4d5050 +51504e4e5155565655524f4e50525857575758565451574e494c4d4a4c52 +4b5154534e4f555858534c4d5153514e5155585855504b484b4d52595b55 +4f4f5a5c5b57565c6165564f402a1a0d00000c0e0e120d03000002275279 +aed29f3e2a1b212c240100388b666b745b5b6368605f5f606262615f5f5f +5c5b5f64635e62626261616163635d5f6265625c595b554c454845403d42 +4043484b494036332d25160b0809090605060a0b080607090b0e13151614 +110d171d20170d0d1a271b19151314191f221614111012181e231b1d2122 +262a3135373d495159616c7283899095999a9fa0adacb0b6babdc1c3c4d1 +a7739488767b817b797f85838284827c7f868885868b8c8a888787868482 +8d8c898888898b8c898482858380848c83807f828686817b8384878b8d8c +888586888a8d8e8d8c8c898a898783818081848180848b8e8d8a87858383 +85878888827f7c7e848786837e888c8681838483767a7e7f7d7d7f828485 +84848a92948f888686858586868785847c7b817d7981807d7c7d7c7b7e84 +858180838381838782817f7b78797c7e817a7b858783858d83807d7c7d7f +8080808d837f7c7e897c7c7c7c7975727172767374797b7876777f80807f +7e7f8184837c7573767979777d7a7777777b7f818384847f7b797b7d8889 +868180838482817f7d7b797877777b7c7c7975727476787c7e7d79787d83 +797b7d7d7d7d7f817c7b7a78767473737174757373777774707376757270 +7071787a7b7c7b7874727774737476736a636476827d787a7a7679777574 +71717479757576797caeb2b4b0afb1b4b4b5b2b0afb2b4b4b2b2b1b2b3b3 +b3b3b3b1b5b9b8b3b0b1b4b0afadacadafb0b0b5b1afb0b1b0b2b6b7b7b9 +b9b8b8babdbbbcbdbbb9b9babcbbbcbdbebebcbcb9bbb5b1b5b8b8babebc +bebebbb5b4b9bebebab5b6babcbbb8b9bbbfbebbb9bababcbbbcc0c0bdba +bec6c8c7c0bdbebdbbb4ada0918270563f2c26293137342e2a2931456087 +b1b397372e3d514b2f3559b4dcccc8ccd2c6cecbcacacbcccccac8cacac7 +c5c8cccac5cbcac9c8c8c8c8c9c2c3c6c7c2bababeb8b1adafada49e9d96 +9494918e89827a6a5a46372d28241f1d1f21201e1f2226282b2e3236393b +3c3334394147463c344343434342403d3c4949494745423f3d484b4d5256 +5b62646c6f74777a7c82878d8c8c8c9199a5ada7abafb6bcbfc3c9d0d6be +a8dae2dfe4e4dcd9dee2e0e1e2dfdcdfe6e8e5e5e8e9e7e5e4e5e4e2dfe2 +dfdddcdee0e2e3e2dddddedcdadde4e3e0dfe2e6e7e0dcdedfe1e4e6e5e1 +dde0dfdfdee0e0e0e0dfe0e1dfdcdbdcdddedbdadee3e7e5e2e0e0e0e0e0 +e1e2e3e4e0dddde1e2dfdcd9e1e4dfdbdcdedcd5d9dbdddddcdadae0e0dd +dce1e8e8e5e4e4e3e2e2e2e4e4e4e3dddce3dfdbe3e5e3e3e2dbd6d8dee5 +e2e2e5e6e4e5e9e6e4e2dcd9d7d9dbe4dbdce1e4dfe3ece2e1dddcdddfdf +dfdfede4e1dedee7dce0e1e1dedcdadbdbe1dddee1e1dedbdcdfdededddd +e0e6ebe8e2dddbdee1e1dfe3e1dedee0e3e4e6e0e2e3e3e2e1e3e4e9e8e6 +e0dfe3e7e6e5e4e3e1dfdfe0e0e0e2e2e0dcd9dadbdbdfe3e3e2e1e2e5e1 +e3e4e4e3e3e7e9e6e4e0dddcdddedfdfe2e1dddee2e2e0dddfe2e2dfdddd +dedadddfe1e0dedddde2dfdee0e3e2dcd6c7d4dcd9dce3e4dfdddcdcd9da +d9dde0e0dfdfe1e37c80827e7d7f8181807d7b7a7a7c7c7d818283848484 +848482868a89848182857d7c7a797a7c7d7d827e7c7d7e7d7f8586898b8b +8a8a8c8f8d8e8f8d8b8b8c8e8c8d8e8f8f8d8b8888827e82838385898486 +8683807f84898b878485898b8a878a8c8d8c888483838584888e8f8c8c8e +9496958f8c8f92918b867a6d5f4d341f0c080810150f090707132a4b75a3 +a88b241622332709092b83a998969aa3979f9a99999a9b9b999799999694 +979b99949d9c9a999999999a93949697928a8a8e88837f807e7871726a6a +6969666059554b3e2a1a120c08050305070606070a0d0c0e1115191c1e1f +16181d252b2a2018262626262523201f2c2c2c2a28252220282b30353a41 +474e555b6165686d72777a7b7b7f86929da7a4a5a9afb2b6b8b8b5b3957a +a7adabb1b2aeadb2b3afabaeb3b2b5bcbebbbbbebfbdbbbabbbab8b7bab9 +b7b6b6b8babbb8b3b1b2b0aeb1b8b4b1b0b3b7b8b4b0b2b3b7babcbbb9b5 +bab9b9b8b7b7b7b7b4b5b5b3b0afb0b1b2afaeb2b7bbb9b6b4b4b4b4b4b5 +b6b7b5b1aeaeb2b3b0adaab2b5b0acadafada2a6abadadacababb1b1b1b0 +b5bcbebbbabbbab9b9b9b9b9b9b8afaeb3afabb3b7b5b5b4ada8aab0b7b4 +b4b7b8b6b7bbb8b6b2aca6a4a6a8b1abacb5b8b7bbc4b7b3afaeafb1b1b1 +b1bfb6b3b0b0b9aeb2b4b2afaaa7a6a6acaaabafb2afaeafb1b0b0afafb2 +b7bcb9b3aba9acafadabafadacacaeb1b5b7b1b3b6b6b5b4b6babebfbbb5 +b4b8bab9b8b7b4b2b0b0aeaeb1b3b3b1adaaabacacb0b4b4b3b2b3b6b2b4 +b5b5b4b4b6b8b3b1adaaa7a8a9aaabaeada9aaaeafadaaacafafacaaaaab +a9acaeb0afadacacb1aeadafb2b1aba594a1ababaeb6bab5b3b2afaca9a8 +aaafb2b2b2b4b6474b4d49484a4c4c4c49474647494949494a4b4c4c4c4c +4c4a4e52514c494a4d48474544454748484d49474849484a4d4e4e50504f +4f515452535452505051535455565757555350514b474b4d4d4f53535555 +524c4b505554504c4b4f51504d54565857514e4d4d4f4c4f535451505057 +595a5554595f615f5d554b41311b0a010000070c07010105132f5281b2b8 +9726121b28170000095b7e6965696f6369625f5f6061615f5d5f5f5c5a5d +615f5a62616261616163645f606566625a5a5e58524e52504b4748434446 +454340393a37301f120b080504020406050405060908080b0f131416170e +0d121a201e140c18181818171512111e1e1e1c1a171412191c22272e343e +434f545d61666a72787e8183868e9aa8b1adafb3b7babbbebebeb9916a8a +857b7c7f7c7e85898785868480838a8c89898c8d8b898889888684898886 +858587898a88838283817f828986838285898a85818384878a8c8b88848b +8a8a8989898989878888868382838483807f83888c8a8785858585858687 +88878380808485827f7c8487827e7f817f75797d7f7f7e7d7d8383828186 +8d8e89888786858585868686857d7c827e7a82858383827b76787e858282 +85868485898785827c77757779827b7c848784889184817d7c7d7f7f7f7f +8d84817e7e877a7e7d7c79757272727875767a7c7977787d7c7c7b7b7e83 +88857f7876797c7b797f7d7b7b7b7e81837b7d7f7f7c7b7d808787847e7d +81838281807e7c7a7a79797b7d7d7b77747576767a7e7e7d7c7d807a7c7d +7d7c7c7e807c7a767371727374727574707175767471737676737171726f +72747675737272777473757877716b5b687170737b7e79777674716f6e71 +75777777797bafb1b2b1b2b6b5b0b4b4b4b2b2b2b3b2afaeb0b1b2b3b3b3 +b3b6b9b7b3afafb0adaeaeafafaeadadb5b0aeafafafb2b6b4b5b7b9b9b9 +babcb8babcbcbbbbbcbdb8babcbebdbbbbb9b9b5b2b5b8b8b9bbbcbdbcb9 +b3b3b8bcbab7b3b5b8bbbab8b9bcc0bdb8b7bcc0bdbab8babab9b9c0c1c6 +c5bfbcbdbfbdb8b6b3b0afa58d754a3a2d2b313434332d232e4d6b96c9e7 +4230333f4047504574b9cdcbcbd1c6cbcacac9cacbcac8c6ccccc9c7c9cc +cac3cdcccbcacacacbcbc7c9cccbc4bdc0c6bcb9b8b9b8b1aba7a19d9894 +93918f8a7e6f5c4a3a3028232424211f1c1d1d222728282b2f353b3f4039 +34394247423c3e4043464645434240424648494846453e404245474b5152 +51545a5e62656c717e8797a1a6a29e9ba8acb1b7bcc3c7cdd9c9b6addae2 +e8e7e1dcdbe1e5e4e3e3dcdbdfe4e6e3e1e2e6e4e3e3e4e4e2e0dfdcdbdb +dddfe1e2e3e0dfdfdddbdde3e3e1e1e4e8e8e3e0e1e2e3e6e7e6e2dee6e4 +e1dedededfe0dedfdfdddbdcdee0dddbdadde1e3e1dfdcdfe2e1dfdedfe2 +e0dddadadcdcd9d6d8dee1ddd9dadbdbd7d9dadddfded9d5dfe0dddbdee4 +e4e1e4e4e3e3e3e3e2e2e6e5dedde4e0dde5dfe0e3e3ded9dce3e3e0e2e6 +e7e4e4e7e5e4e2dcd9d7d8d9e5dddce0e3e0e4ede3e2dedcdddedededeec +e4e4e1dee5dadfe1e2dfdddadadbdfdcdde2e3e1dfdee2e1dedcdce0e7ed +e8e3dfdddee0e1e0e1e1e0e1e2e3e3e4dfe1e3e5e4e4e4e3e7e6e4dedee2 +e7e5e4e3e2e1e0e0e2e2e2e4e5e4e1dedddddddfe3e6e8e7e5e4e2e3e4e3 +e2e2e6e7e4e1dcd8d8dadee0e2e4e2dedbdfe0dedddfe1e1dedddcdcd9dd +e1e2e1e1e3e6dfdddcdfe2e3e0ddd6dcdcd9dde6e6e2e1e1e1dddddde0e1 +e2e1e1e2e37d7f807f8084827d7f7f7f7d7a7a7b7d7d7f81828384848484 +878a88848080817a7b7b7c7c7b7a7a827d7b7c7c7c7f858387898b8b8b8c +8e8a8c8e8e8d8d8e8f898b8d8f8e8c8a8886827f8283838486848584817e +7e838787848284878a89878a8d8e8b858284898683838789888b8f8f9291 +8d8b8e908f8c8b8989897f6650251609070b0e0e0e0a0110305281b5d42f +1a19221d22241742889a989ba2979d9b9998999a9997959b9b9896989b99 +929c9b9a999999999995979a99928b8e968c89888b8a827c7b74726c6a69 +6765635c503d2a1d120b07080808050405080a0a09090c10161c21221b16 +1b2429241e21232629292826252325292b2c2b29281e2025282b31363c3a +40474c50565c616b7686949b9b9695a2a6aaadb1b4b6b7b9a28a7da4abb2 +b2afaeafb4b5b3afb0b0b1b5babcb9b7b8bcbab9b9babab8b8b7b6b5b5b5 +b7b9bab9b6b3b3b1afb1b7b4b2b2b5b9b9b7b4b5b6b9bcbdbcbab6c0bebb +b8b5b5b6b7b3b4b3b1afb0b2b4b1afaeb1b5b7b5b3b0b3b6b5b3b2b3b6b1 +aeababadadaaa7a9afb2aeaaabacaca4a6aaadafaeaaa6b0b1b1afb2b8ba +b7babbbabab8b8b7b7b8b7aeadb4b0adb5b1b2b5b5b0abaeb5b5b2b4b8b9 +b6b6b9b7b6b2aca6a4a5a6b2adacb4b7b8bcc5b8b4b0aeafb0b0b0b0beb6 +b6b3b0b7acb4b4b3b0aba8a7a8aca9aab0b4b2b2b3b4b3b0aeaeb2b8beb9 +b4adabacaeadacadadaeafb0b1b4b5b0b2b6b8b7b7b7b9bcbdb9b3b3b7ba +b8b7b6b3b2b1b1b0b0b0b2b3b2afacabababadb1b4b6b5b3b2b3b4b5b4b3 +b3b5b6b1aea9a5a3a5a9ababadaba7a7abacaaaaacaeaeadacababa8acb0 +b1b0b0b2b5aeacabaeb1b2afaca3a9abaaaeb9bcb8b7b7b4b0acacadb0b4 +b3b3b4b5484a4b4a4b4f4d484b4b4b494747484948494b4c4d4e4e4e4e51 +54524e4a4a4b45464647474645454d48464747474a4d4b4c4e5050505153 +4f5153535252535451535557565452504f4b484b4d4d4e50535453504c4c +4f53524d4a4c4f524f4d54575956504e5153504d4d4e4f4e505454585752 +51565a5b5b5e5f62645b47351308000000030506060010345888bed8290d +0c12090807001d606f6b6d74696b635f5e5f605f5d5b61615e5c5e615f58 +646362616161646462646766615a5d655b58575a59544e4e4a4845424341 +3f42433b2b1b0f0803030405040402030306060606090d1117191a130e11 +1a1f1a131315181b1b1a181715171b1d1e1d1b1a0f11171a1f242d313439 +43484e535c626f7c8e9ba3a3a19facb0b2b6b9bbbebaba9d7d6682828380 +7e7d828a8d8b8785817f83888a8785868a88878788888685868584848486 +88898986848482808288868484878b8b88858687898c8d8c8985918f8c89 +87878889868786848283858782807f828688868481848786848384878380 +7d7d7f7f7c797b8184807c7d7e7e77797c7f81807c788283828083898a85 +888786868585848486857d7c837f7c847f8083837e797c83838082868784 +84878685827c77757677837d7c838685899285827e7c7d7e7e7e7e8c8484 +817e85787f7d7d7a767372737774757b7e7c7b7c807f7c7a7a7e848a8580 +7a78797b7b7a7d7e7d7e7f8080817c7e7f8180807e7f8585827c7c808381 +807f7d7c7b7b7b7b7b7d7e7d7a77767676787c7f81807e7d7b7c7d7c7b7b +7d7e7a77726e6d6f73757375736f6e72737171737575737271716e727677 +7676787b74727174777875726c7273727680827e7d7d7b77747476787978 +78797aafb0b0b1b5b9b4acb2b5b7b5b2b0b1b2b1b0b1b3b3b4b4b4b2b5b7 +b6b2b0afafa8abaeb0b0afafafb4b0afb2b2b1b2b5b2b2b5b7b9b9babbb7 +babdbdbcbbbbbbb6b9bdbfbebbbbb9bdb9b7b7b9b8b7b6b7b7b7b6b3b6bc +c1b7b6b4b5b8babab9b6bbc1bfb9b6bcc2bdb9b6b9bab8bbbfbcc1c2bdbb +bdbfbcb8b5b3b3b7b8afa2886e4e382f2f3334291d284454698da7524942 +3e43709e8f6d87e5dcc6c2c8c7cacac9c9cac9c7c4cececccacdd0cdc7cc +cccbcacacacbccc9ccd0cec5bfc5cfbfbdbdbcb9b4afadada6a19b9b9999 +96877d6f5f4d3d30282a2823211d1b1b1e282827272a2e333642423f3834 +37424b414140414346494b424141414346494b5254545556585d5d64686e +73787c848a929297979a9fa3a6a5abb2b6bec7ced4d8bab3b6d5dbe8e1e1 +dedddee2e2e3e3dadbdfe3e4e2dfdee1dfdedfe1e1e0dededcdcdcdfe1e2 +e3e5e4e4e2dfdee0e3e1e0e0e3e6e7e3e1e4e5e5e7e9e8e3e0e9e8e5e3e3 +e2e2e2dfdfdfdddbdbdee0dddcdcdee1e2e0dddadfe4e3dfdcdee1dcdad9 +dadddddcd9dbdedfdddbdadbdcdddcdadcdfe0dbd7dee1dedcdee4e5e3e4 +e4e3e3e3e2e1e1e1e1dbdce4e1dfe7dfdddfe3e2dfdfe3e1dfe1e5e5e1df +e1dfdfdfdcdbdbdcdfe6dfdddddfdde2e9e4e3dfdcddddddddddeae4e7e4 +dee4d9e0e0e2e0dedbdbdcdbd8dae1e4e2e0e2e8e7e4e1dfe1e6ebe6e2df +dcdddedfdedcdedfe0e0e0dfe0e6e8e8e9e7e5e2dfe3e4e4e1e0e4e6e3e1 +e1e1e0dfdfe1e1e2e4e5e5e3e0dedcdfdfe1e4e7e8e6e4e3e4e4e2e0e0e4 +e6e2dfdcd9d9dbdee0dfe2e2dedcdedddadcdddfdededddcdbdce0e4e5e3 +e4e8ecdddbd9dadddfdedde3e6e3dddee5e8e8e3e5e5dfdfe0e2e1e3e0df +e1e37d7e7e7f838781797d8082807a78797d7f8182848485858583868887 +8381808075787b7d7d7c7c7c817d7c7f7f7e7f84818487898b8b8c8d898c +8f8f8e8d8d8d878a8e908f8c8a888a868484848382817f7f7f7e7e81878c +8483838487898988878c8f8c8481848a8582818487878a8e898d8e89888c +8e8d8b8a89888d8e857a6049281209080b0e02000522354b6f8b3c342821 +204b72613d55b4ab97969c9b9b999898999896939d9d9b999c9f9c969b9b +9a999999999a979a9e9c938d939d8f8d8d8c8b86817e7e7a74706e6e6c6c +635b4d3c2d1e130c0d0c0a08050606060b0908080b0f14172324211a1619 +242d2324232426292c2e2524242426292c2e323437383a3e42474d545b61 +666d747a7f81868a8e959ba09fa3a8a9adb3b7b7b39185839ea2b0abaeaf +b0b3b2b1b0b0aeb1b5b9bab8b5b4b7b5b4b5b7b7b6b6b6b6b6b6b7b9babb +bbbab8b6b3b2b4b7b2b1b1b4b7b8b7b5b8b9bbbdbfbebbb8c3c2bfbdbab9 +b9b9b4b4b3b1afafb2b4b1b0b0b2b5b6b4b1aeb3b8b7b3b0b2b5adabaaab +aeaeadaaacafb0aeacabacadaaa9aaacafb0aca8afb2b2b0b2b8bbb9babb +babab8b7b6b6b3b3abacb4b1afb7b1afb1b5b4b1b1b5b3b1b3b7b7b3b1b3 +b1b1afaca8a8a9acb3afadb1b3b5bac1b8b5b1aeafafafafafbcb6b9b6b0 +b6abb5b5b5b1aca9a8a9a8a5a8afb5b5b5b7bab9b6b3b1b3b7bcb7b3adaa +abacabaaa8aaadaeaeaeb0b1b7b9bbbcbab8b5b5b8bbb9b6b5b9b9b6b4b4 +b2b1b0b0afafb0b2b3b3b1aeacaaadadafb2b5b6b4b2b4b5b5b3b1b1b3b5 +afaca9a6a4a6a9aba8ababa7a8aaa9a6a9aaacadadacabaaabafb3b4b2b3 +b7bbacaaa8a9acaeadacb0b3b2aeafb8bebeb9bbb8b2aeafafb0b2b2b1b3 +b54849494a4e524c44494c4e4c474546494a4b4c4e4e4f4f4f4d5052514d +4b4a4a40434648484747474c48474a4a494a4c49494c4e505051524e5154 +54535252524f52565857545250534f4d4d4e4d4c4d4e4e4e4d4c4f53584f +4e4b4c4f514f5051565a57504d5157524c4d4e504f5256505455504f5254 +555457595b63665f57462f1100000000030000012033496d872f23190f0a +31554019308c826b696f6a655f5e5e5f5e5c596363615f6265625c636362 +616161646564676b69625c626c5e5c5c5b59555050524d4a454544434643 +3f3226180c0501070805040103010207060505080c0f121e1c19120e0f1a +2318161516181b1e2017161616181b1e202325292a2e31393c474d575d64 +6a747b83878e93989ea6aaa9aeb1b2b7bcbfbbab7f6e647775817c7f8386 +898a8885837f7f8387888683828583828385858483858585858688898a8b +8a89878483858884838386898a8886898a8b8d8f8e8a879493908e8c8b8b +8b878786848282858782818183868785827f848988848183867f7d7c7d80 +807f7c7e8182807e7d7e7f7d7c7c7e81827e7a8184838183898b87888786 +868584838381817a7b83807e867f7d7f83827f7f83817f818585817f8180 +807f7c79797a7d847f7d808282878e87837f7c7d7d7d7d7d8a8487847e84 +79807e7e7b777473747370737a7f7e7e808685827f7d7f8388837f7a7778 +797978797b7c7d7d7d7c7d8385848583817c7b8183827f7e82827f7d7d7c +7b7a7a7a7a7b7d7e7e7c79777578787a7d80817f7d7c7d7d7b79797b7d78 +75726f6e7073757073736f6f71706d70717373737271707175797a78797d +8172706e6f72747372797c7a76777f84847f817f7976777878787776787a +aeafafb0b6b9b3aab1b4b7b5b3b0b1b0b3b2b2b3b3b2b1b1b0b2b4b4b2b1 +b0b0aaadb0b0afaeaeb0b3b1b2b7b7b4b3b4b2b1b2b5b7b9b9b9b9bbbebe +bcbab9bab8bbbfc0bdbabbbbbdbcb9b7b9b9b8b5b4b4b4b5b4b8bdc1b7b7 +b6b8babbbbbab5bbc2c0bab6bbc0bcb9b8bcbcb9babebcc1c2bfbdc0c1bf +bfbebab5b4b7b6b4b3a287674f3d312c322e3f565e60594a69665248415c +a2bea08bf8b9bfc6c4cacacac9c9cac9c7c4cbcccbcaced2cfc8cccbcaca +cacbcccccbcdd1cfc7c1c8d3c6c5c3bfbbb9b8b6b4b0aca6a6a19f9a908a +7f7363513d3129272322201d1c1d27272727282a2c2e2b3743443b35383e +4543413e3d3e3f404f4c4843403e3e3e4a4d4e5255595f616d7075787a7c +828790909293979ea5aca7aeb4b8c2cfd5d6bfa8b1bad0d0e1dbe3e0ddda +dcdee1e1dddfe3e6e7e6e4e1e0dfdedfe0e1e1dee0dedfdfe2e4e5e6e4e5 +e5e2dfdfe1e2e1e1e1e3e5e6e3e3e3e3e2e5e6e6e2e0e5e5e6e5e6e5e3e1 +e0e0e1dedbdadcdedddddfe1e2e2e0dedee3e8e7e2dfe1e4e2e2e2e3e4e4 +e3e1dddcdddcdbdadadce4e0dadbdee0dfdedbdfdddcdde3e6e5e3e3e4e4 +e4e3e3e2ddddd8d9e5e3e1e9e8e2dee2e4e0dbd9e5e2e3e6e5dfdddfddde +dedddddddfe1e6e0dddadbdadee3e4e3dfdcdddddddddbe7e3e9e6dee3da +e0e1e2e0dedbdcdcdcdadae1e3e0dddfe5e5e5e3e2e2e6e8e6e3e1dfdede +dfdedbdee0e0dfdedddee8e9e8e8e7e4e0dcdfe2e6e4e5e6e6e2dfdfdedd +dddddfdfe2e2e3e4e3e1dedbe1e0dfe1e4e6e6e6e3e3e2e1dfdfe4e6e0df +dedddddddddedbe1e2e0e0e0dbd6dbdbdbdcdddad9d7dadde0e1e0e0e3e6 +dfdddbdadadbdbdad9deded8d5dbe4ecdfe2e3dcdcdee0dce1dedddfe27c +7d7d7e848780777c7f82807b78797b818383848483828281838585838281 +81777a7d7d7c7b7b7d807e7f848481808381838487898b8b8b8b8d90908e +8c8b8c898c90918e8b8a8a8a898684848483807c7c7c7d7f83888c848485 +87898a8a8983898f8d85818386828183878987888c898c8d8a8a8d8e8e8e +8f8c8785888a8787785c3e25140b050a081930383932264d4f36291d3476 +8f6f5bc88a909a9a9e9b999898999896939a9b9a999da19e979b9a999999 +9a9a9a999b9f9d958f96a1979694908c89888886817d7a7775706f69645b +4f3f2e1c110d0c0a090808070509080808090b0d0f0c1824261d171a2027 +26242120212223322f2b26232121212a2d3135393f444b565c6266686d72 +777d7f81868b949da49fa4a7a7acb5b7b4987c80849796a7a2b0b0b0aeac +adaeaeb1b5b9bcbdbcbab7b6b5b4b5b6b7b7b6b7b8b9b9b9bbbcbdb9bab9 +b6b3b3b5b6b2b2b2b4b6b7b7b7b7b7b7babbbbb9b7bfbfc0bfbdbcbab8b5 +b5b5b2afaeb0b2b1b1b3b5b6b6b4b2b2b7bcbbb6b3b5b8b3b3b3b4b5b5b4 +b2aeadaeadacababadb1adaaabaeb0b0afacb0b1b0b1b7bcbbb7b8b9b9b9 +b8b5b4afafa8a9b3b1afb9bab4b0b4b6b2adabb7b4b5b8b7b1afb1afafae +adaaaaacaeb3b0adaeafb2b6bbb8b5b1aeafafafafadb9b5bbb8b0b5acb5 +b6b5b1aca9a9a9a9a7a8afb4b3b2b4b7b7b7b5b4b4b7b9b7b4afadacacab +aaa7aaadadadacadaeb9babababab7b3b1b4b9bbb9babbb9b5b2b2afaeae +aeadadb0b0b1b2b1afaca9afaeadafb2b4b4b4b4b4b3b2b0b0b3b5adacab +aaa8a8a8a9a4a8aba9a9a9a7a2a8a8aaabacacaba9a9acafb0afafb2b5ae +acaaa9a9aaaaa9a6abada9a6aebac2b5b8b6afabadadabb0b0afb1b44748 +48494f524b42484b4e4c484546474c4d4d4e4e4d4c4c4b4d4f4f4d4c4b4b +42454848474646484b494a4f4f4c4b4b4948494c4e505050505255555351 +5051515458595653525253524f4d4e4e4d4c4b4d4d4e4d51565a4f4f4d4f +515252514e545a58534f5256524e51535452535754585754515455545659 +5855575c5d5d6052391e0c00000000000e232b2a23163f3f2817071b5b71 +4e35a060646b6a6d655f5e5e5f5e5c596061605f6367645d636261616162 +656564666a68625c636e6362605c5858575755534f4b4b484444403f392f +2518090402030304040302010706060606080a0a07131f1e150f12161c18 +16131213141524211d18151313131b1e23272d323b4050555e62666a7278 +83878b8f959da8afaaafb1b1b8c0c1b5875f5f5e6c687975858889878482 +817f8285898c8d8c8a87868584858687878589898a8a8b8d8e8f8c8d8c89 +86868889868686888a8b8a8a8a8a8a8d8e8e8b89909091908f8e8c8a8888 +888582818385828284868787858383888d8c878486898585858687878684 +807f807f7e7d7d7f84807c7d808282817e82828182888c89868586868685 +83827d7d777882807e8888827e8284807b7985828386857f7d7f7e81807f +7d7d7f8186827f7f808185888784807d7e7e7e7e7c88848a877f847a807f +7e7b777474747472737a7e7c7b7d838383818080838583807c7a79797978 +787b7e7e7c7b7c7d8586868683807c7a7d8184828384827e7b7b79787878 +78787b7b7c7d7c7a77747a79787a7d7f7f7f7c7c7b7a78787b7d76757473 +727272736c71737171716e696f6f70717271706e6f7275767575787b7472 +706f6f70706f6f7475716e7580887b7e7d76737576737675747679adaeae +afb3b7b2a9afb1b4b4b5b2b0aeb2b0b1b1b0b0afaeb0b1b2b3b2b1b0aeb1 +b3b3b0acaaacafb4b2b3b8b8b5b4b5b5b1b0b2b5b7b8b8babcbdbdbbb9b9 +bababdc0bfbbb8bbbcbabab7b4b7bbbbb8b7b7b7b7b6b8babbb8b9b9babb +bbbbbbb5bac0bebab8b9bcbbbabbbebebcbabcbfc5c6c3c0c3c4c2bcc1c2 +bcbbbcbebdb7b9b2a086684b36353b506576827654a69b5e5256426389b1 +a4dd72b1d3bfcfcacac9cacbcac8c6c6c8c8c8ccd0cdc6cbcbcacacacbcc +cdcbcccfcfc9c4cad3cececcc5c2c2c3c2b9b7b5b2b0aba69fa09a90887b +6952412e2b272323211f1e22252627292a2b2c292f383f43413e3b3e4042 +444442403e414346484948464442444547494d5354595c6266696c72788c +929ba1a3a3a09fadb3b9bfcad5d1caaba1b4c0d5d4e2dee2e1ddd7d8dbe0 +e0dadee2e3e4e6e4e0e3e1e0e1e3e4e3e0e2e0e1e1e4e4e5e5dee2e3dedc +dedfdee2e3e3e4e4e5e4e4dededee0e2e3e0dee0e1e3e4e5e3e1dfdfe0e1 +e0dddbdbdcdddee1e3e4e3e1e0e5e8eae9e6e4e5e7e5e6e6e6e5e3e1e0de +dad9dbdad8d9dce6e2dcdbdde0e2e4d9dddddbdce2e5e5e1e2e3e4e4e3e4 +e3dcdcd7d9e4e2e0e7e5dddbdfe3e1dfdeeae7e6e8e7e2e0e2e2e2e2e0de +dddddee3dfddd9dadadde0e3e2dedcdddedededae5e1e9e8dfe4dce1e2e3 +e0dddcdddde2dedde0e0ddd8d9dcdedfe0e1e3e7e9e8e6e5e3e1e0e1e1de +e1e3e3e1dfdfe2e2e2e1e3e4e4e1dddde1e5e4e5e7e7e2dfdededcdbdbdd +dde1e0dfe0e1dfdcdae1e0e0dfe0e1e4e5e2e2e1dfdedfe4e7e1e0e0dfdf +dedddddbe0e2e0e0e1dcd7dbdbdadcdcdcdad7dbdcdee0e1e2e2e2e4e2e0 +dedcdbdadad9ddddd6cfd0d9e2dde3e5dddde1e2dee0dddcdee17b7c7c7d +81857f767a7c7f7f7d7a7879808182828181807f818283848382817f7e80 +807d7977797c817f8085858281848483828487898a8a8c8e8f8f8d8b8b8c +8b8e91908c898a8b87878481828686837f7f7f7f81838586858688898a8a +8a8a83888d8b85807f82818083888a88888a8b8f918e8d9092908b90918d +898c8e8d898b86755b3f23100f15273b4954472a89814133311a375c8074 +ae4685a997a69b9998999a999795959797979b9f9c959a9a9999999a9a9b +999a9d9d979298a19c9f9d96939393928b898784827d7773757169625746 +2f20110f0c0c0c0c0c09060607080a0b0c0d0a1019202523201d20232527 +272523212426292b2c2b29272224282a2d33383e42484f54575d62687981 +8b9497999897a3a7a9a9b0b5b0a48174838a9b97a8a5aeb1afaba8aaadae +aeb4b8b9babcbab6b9b7b6b7b9bab9b8b9babbbbbbbbbcbcb3b7b7b2b0b2 +b3b2b3b4b4b5b5b6b8b8b2b2b3b5b7b8b7b5babbbdbebcbab8b6b4b5b5b4 +b1afafb0b1b2b5b7b8b7b5b4b9bcbebdbab8b9bbb6b7b7b7b6b4b2b1afab +aaacaba9aaadb3afacabadb0b3b5aaaeb1afb0b6bbbbb5b7b8b9b9b8b6b5 +aeaea7a9b2b0aeb7b5afadb1b5b3b1b0bcb9b8bab9b4b2b4b3b3b2b0abaa +aaabb0afadadaeb2b5b8b7b4b0aeafb0b0b0acb7b3bbbab1b6aeb6b7b6b3 +aeaaaaaaafababb1b3b0adaeaeb0b1b2b3b5b8bab9b7b3b1afaeadadaaad +b0b0afadafb2b3b3b3b5b7b7b4b2b2b8bab9babcbab5b2b1afadacacabab +afaeadaeafadaaa8afaeaeadaeafb2b3b3b3b2b0afb0b3b6aeadadacaaa9 +a8a8a2a7aba9a9aaa8a3a8a8a9abaeaeaca9aaabadafb0b1b1b1b3b1afad +abaaa9a9a6aaaca7a0a3afb8b3b9b8b0acb0afabafafaeb0b3464747484c +504a4146484b4b4a4745454b4b4c4c4b4b4a494b4c4d4e4d4c4b49494b4b +48444244474c4a4b50504d4c4c4c4847494c4e4f4f515354545250505153 +5659585451525350504d4a4c50504f4e5050504f51535450515051525252 +524e535856534f4f52515052595a5857595b605f5a565757555056595756 +5b5e5d575a594b38210a0000021325323a2b12797433211e011c3d5f4e84 +1956776472635f5e5f605f5d5b5b5d5d5d6165625b626261616162656664 +656868645f656e696b69625f5f626159575653514c49444845403d372a19 +0d0304030406070604030405060708090a050b141b1d1b18131515171919 +17151316181b1d1e1d1b1913151a1c21262f333c414b50555a62697f8995 +9da1a2a3a2aeb3b4b5bbc2bba3684b585c6b687a7a868b8b84807f7e7d7d +8488898a8c8a8689878687898a89878b8b8c8c8d8d8e8e868a8a85838586 +8587888889898a8b8b858586888a8b89878b8c8e8f8e8c8a888788888784 +82828382838688898886858a8d8f8e8b898a8c8889898988868483817d7c +7e7d7b7c7f86827e7d7f8285877c80828081878b8984848586868584837c +7c7678817f7d86847d7b7f83817f7e8a87868887828082858584827e7d7d +7e83817f7e7f81848786837f7d7e7f7f7f7b86828a8980857c81807f7c78 +7575757a76767b7c7976777a7c7d7e7f8184868583807e7c7b7b7b7b7e81 +817e7c7e817f7f7f8180807d7b7b8083828385837e7b7a7977767676767a +7978797a7875737a797978797a7d7e7b7b7a7877787b7e77767675747372 +726b70737171726f6a6f6f6f717373716e70717375767777777977757371 +706f6f6f73746f686a757e797f7f77747878747574737578abadadadb0b3 +b1aaadaeb0b3b6b4b0abb1b0b0b1b1b1b1b0b2b2b2b2b2b0adabb6b7b4af +a9a9aeb3b6b3b1b4b4b2b4b8b7b2afafb2b6b7b7babbbcbbbababcbebcbf +c0bdb7b5b8bcb9b9b5b0b3b9bab7bab9b9bab8b8b8b7b8babbbbbbbab9b9 +b9babcb9b7b7b8b9bcbababdbdbababdbfc4c5c2c0c2c3c1bbbfc0bec0c2 +c2beb7bec1baaf9b81694e51575c67808e7dbbd8835d775c55668c97b073 +a5c9bfc6c9cacacbcccccac8c7c8c8c7cbcecac3cccbcbcbcbcccdcecccc +cecfccc8cbd1c9cfd0cbc9cbcac8bfbdbcbab9b5afaab0a9a09c96897260 +473d3329262422222325252628292b2c33302e31394044453c3e41444647 +4747393c4044484b4c4d585a5b5c5e6166676f72797e82868d939c9b9895 +979ea7afafb6bcc2ced0c0aca6a9bcc5e0dee5e1dddfded8d9dde1dfd7dc +dfdee0e4e4e0e4e3e2e2e3e4e3e0e1dfdfe0e2e2e2e1dbe0e2dddbdfe0de +e2e2e2e2e1e2e1e2dcdcdcdfe2e3e1e0e2e2e2e1e2e1e0e0dbdee1e1dfdd +dcdcdbdde1e4e4e3e2e1e7e7e6e5e4e4e5e5e0e2e4e4e3e1dfdfe1dbd9dc +dddadadee1e1dedddddfe2e6dce1e0dddde1e4e5dee0e2e4e7e6e5e4e2e1 +dadae4e1dde4dad8dadedfdfe4eaeae6e5e7e7e4e4e8e6e6e6e2e0dddcdc +dfdedddadcdde0e1e2e1dddcdddfdfdfd9e3dfe9e8dfe5dfe2e2e4e1dedd +dddee3dfdee1e2dedadadbdcdddddee2e8ece8e7e7e4e1e0e1e1e1e4e6e5 +e1e0e1e5e0dedddfe2e5e4e0dde0e2e0e1e4e7e4e1e0dfdddbdbdcdce1de +dcdddededcdadee1e3e2e0dee0e2e0e0dfdedddfe5e8e4e2dfdddcdcdcdd +dee1e1dedde1dfdcdddcdbdddedfdcd9dedddde2e7e9e5e1e6e5e4e2dfdc +dbdbe3e3e0d9d4d1d5dbdde4e7dedfe4e6e0e2e0dfdfe2797b7b7b7e817e +7778797b7e7e7c78767f818182828282818383838383817e7c8384817c76 +767b8083807e81817f818786848181848889898c8d8e8d8c8c8e908d9091 +8e8886878b8686827d7e8485828281818283838382858789898a89888887 +888885827f7e7f828082878986878a8a90918e8d8f918f898d8e8d8d9090 +8c868d928e84735a4426292e2f364e5a4f9abd653c523329395b6784477c +a2989d9a99999a9b9b9997969797969a9d99929998989898999a9b99999b +9c9995989f979d9e9997999b99908e8c8a89857f7c847d75726e624e3d27 +2118120f100f0d07050607090a0c0d14110f121a2126271e212427292a2a +2a1c1f23272b2e2f30383a3e3f42474b51585e666c70777d838b8a88888b +949fa7a5a8aaaab0ae9a837b7b8a8da4a2aaa7a9afb0acaaadafadabb2b5 +b4b6babab6bab9b8b8b9bab9b8b8b9b9bab9b9b9b8b0b5b6b1afb3b4b2b3 +b3b3b3b2b3b5b6b0b0b1b4b7b8b8b7bcbcbcbbb9b8b7b7b0b3b5b5b3b1b0 +b0afb1b5b8b8b7b6b5bbbbbab9b8b8b9b9b1b3b5b5b4b2b0b0b2acaaadae +ababafaeaeaeadadafb3b7adb2b4b1b1b5babbb2b5b7b9b9b8b7b6b2b1aa +aab2afabb4aaaaacb0b1b1b6bcbcb8b7b9b9b6b6bab7b7b6b2adaaa9a9ac +aeadaeb0b5b8b9b6b3afaeafb1b1b1abb5b1bbbab1b7b1b7b7b7b4afabaa +abb0acacb2b5b1afafadaeafafb0b4b9bdb9b8b5b2afaeadadadb0b3b2ae +adb1b5b1afafb1b5b8b7b5b2b7b7b5b6b9bab7b4b3b0aeacacaaaaaeaba9 +aaababa9a7abaeb0afadabadb0b1b1b0afaeb0b4b7b1afacaaa7a7a7a8a5 +a8a8a5a6aaaba8aaa9aaacb0b1aeabadacacb1b6b8b4b0b5b4b3b1aeabaa +aab0b0afaaa5a4abb1b3babab1aeb3b3adb1afaeaeb144464646494c4942 +4445474a4b4945424c4d4d4e4e4e4e4d4f4f4f4f4f4d4a484e4f4c474141 +464b4e4b494c4c4a4c4f4e494646494d4e4e515253525151535555585956 +504e4f534f4f4b46484e4f4e515252535151515050525454525150505253 +5653504e5051545253595a57585b5e61615c565656544e525353565b5d57 +4b525c5d594f3b290c0f12101529322e89b45a2d401d101a3a3f5716486b +5f65625f5f6061615f5d5c5d5d5c60635f58626161616162656664646667 +6460636a62686964626467655c5a5b5958544f4a534c48484a4334291815 +0d0a09090908060604050708090a110e0a0d151c1e1d131316191b1c1c1c +0e1115191d202122292b3031363a4246525762686e747d8491929291959f +aab2b0b5b6b7bcbca781594a575a72707e7f828b8c87807f7e7a7a828584 +868a8a868a898888898a89878a8a8a8b8b8b8b8a83888984828687858787 +878786878889838384878a8b8a898d8d8d8c8b8a89898386888886848383 +80828689898887868c8c8b8a89898a8a8385878786848282847e7c7f807d +7d818181807f7f8185897f84858282868a89818284868786858481807979 +817e7a8379787a7e7f7f848a8a8685878784848889898884807d7c7c7f80 +7f7f8184878885827e7d7e8080807a84808a8980867f8280807d79767576 +7b77777c7e7a7878797a7b7b7c8085898584827f7c7b7b7b7e8184837f7e +80847d7b7b7d7e81807e7b7f807e7f8283807d7c7a787676757579767475 +7676747276797b7a7876787b7979787776787c7f7a787573717171726e71 +716e6e72726f7170707275767370737272777c7e7a767b7a797774717070 +797977726d6b717779808178767b7c767775747477aaadadacaeb1b0abac +abadb1b4b4aea8b2b0b2b3b5b5b5b5b4b4b3b2b1afabaab6b6b4ada8aab2 +bab9b3afafafb0b5bab8b3aeadb0b4b6b6b8b9bab9b9bbbec1bdbfbfbab4 +b2b7bbbbbbb5adaeb4b5b1b9b9b9bbbabab8b6b8babbbbbab8b8b8bdbbb8 +b5b4b6b8b9bdb8b8babab9babebdc1c3bfbdbfbfbdc5c3bdb8babcb9b2c0 +c1bebbc0bfb6a7968e7e64546885896fe39e4f696765716b789fb0a2afbe +b1c9cacacbcdcdcccacacbcbcacccec9c2cacacacacacbcdcdcbcacbcecd +c9cbcfbfc8cdcac9cccac7c2c0bebebdbab6b3bcb1a9a8aaa38e7c645643 +342c2826272a2b282725272a2a292c2e2f2f333b444945403c3c3d414451 +4d453e3a393b3d4043484d53596065666a6f706f7176797a828f98a0a4a7 +aaaeb8c0c7d0cdb196a9b2bfc1e0dee0dad8dddfdcdadfe2dddadfe1e0e2 +e8e9e5e3e2e0e0e2e2e0dfdfdddee0e0dfdedfdbe1e3dedde1e2dfdfe0e0 +dedddddcdedededee1e5e7e5e4e8e6e3e3e1e1e2e3d7dbe0e2e1dfddddd9 +dce1e3e3e2e1e0e5e3e0dfe0e1e1e0dde0e3e6e6e5e5e5e5dedce0e0dddd +e2dcdfdfdfdddee1e5e2e6e6e1dfe3e6e6dcdde0e3e5e5e4e3e6e5dcdce2 +ded9e1dbdde1e0d9d5deeae6e3e2e4e5e4e6e8e4e4e5e3dfdedddedcdedd +dddee1e3e4e1e0dddcdddfe1e0d9e1dee9e8dde5e0e2e3e4e1dedbdededf +dcdde1e5e3e2e3e2e1dfdddde1e9eee6e5e6e3dfdddddfe1e5e6e4e0dfe1 +e6e3e0dedfe3e6e5e4dfe0dedbdce2e7e6e2e1e0dedcdbdcdce0dddadadc +dddbd9dae0e6e5e0dcdddfe1dfe0dddee1e5e9e6e3ded9d9d9dcdee0e2df +d9dae0e2e1dfdedddfe0e1dedddcd9dae0e8ebe6dde4e5e5e3dfdcdbdbdf +dcdadbdbdbdee0d9e2e3dad9e1e2dce4e2e0e0e1787b7b7a7c7f7c787878 +787c7f7f797580818384868686868585848382807c7883837f7a75777f87 +86807c7c7c7d82898a85807f82868888898b8c8b8b8d90938f91918b8583 +868a8888827a797f807c818181838585838185878989898787878b898481 +7f7e7e7f838080848685878b898d8f8b8a8c8c8b93918b858789867f8e8f +8d8c92948a7c6b625034233551594ac27c2b423e39443d4b738679889788 +9a99999a9c9c9b99999a9a999b9d989199999999999a9b9b9897989b9a96 +989c8e979c99979a9b9893918f8f8e8a86838d837b7c7f79675742362719 +1211100f0b09060506080b0c0b0e101010141c2228241f1b1c1f23263430 +28211d1d1e2023282c3339414a4e52575c5e6062676b6f798591989c9f9f +a2a6a9aaada78868797f8a8aa6a4a7a3a4adb1afadb0b0adaeb5b7b6b8be +bfbbb9b8b6b6b8b8b6b5b7b7b8b8b8b7b5b4b0b6b7b2b1b5b6b3b0b1b1af +aeaeb0b2b2b2b3b6babdbcbbc2c0bdbab8b8b9b8acb0b4b6b5b3b1b1adb0 +b5b7b7b6b5b6b9b7b4b3b4b5b5b4aeb1b4b7b7b6b6b6b6afadb1b1aeaeb2 +a9acafafadaeb2b6b3b7bab5b3b7bcbcb2b3b6bababab9b8b8b7aeacb2ae +a9b1abafb3b2aba7b0bcb8b5b4b6b7b6b8bcb8b8b6b3afabaaaba9abadaf +b2b7bbbab5b2afaeafb1b1b2a9b3b0bbbab1b9b5b7b8b6b4afacaaababa9 +abb2b6b6b4b5b4b3b1afafb3babfb7b6b4b1adabababadb1b4b2aeadb1b7 +b4b1b0b1b6b9b8b7b4b5b3b0b1b7bab9b5b4b1afadacaaaaadaaa7a7a9aa +a8a6a7adb3b2ada9aaacb0b0afaeadb0b4b8b3b0aba6a4a4a7a9a9a9a6a2 +a3a9aeadacabacaeb2b3b0acaba8a9afb7bab5aeb3b4b4b2aeabaaa8aca9 +a9aaacaeb1b6acb5b6adaaafb0abb3b1afafb043464645474a4a43464344 +484b4943404b4b4f4e525252525151504f4e4c48454e4e4b4540424a5251 +4b474747484d514f4a4544474b4d4d5150515050525558545656534d4b4e +5253514d4343494a48505252545353514f50525454514f4f4f5654524f4d +4d4e4f555151555756585c5a5e5f59555553505856504c50525146515253 +5661696559493f2e0e000a223338b9721d312820271b2446544551605062 +5f5f606262615f5f60605f61635e57616161616162666663626366656163 +67565f6461626565625f5d5b5b5a59555259514a4f5553463a271f120803 +030305080805040406090a090c0e0e0e121a20211b16121114181b26221a +130f0f101213171e262c353f464b51585a5d5f646b737e8d99a5a9aeadae +b2b1afb1a68658514a565474747a7a7d878d8883827f7c7d858786888e8f +8b8988868688888685868687878786878783898a85848889868485858382 +828385858586898d8d8e8d93918e8c8a8a8b8b7f838789888684827e7f86 +86888586848a868582858486858083868989888a8a8a837f83838080847c +7f81817f80848885898b8684888c8c808184868787868586857c7b817e79 +817b7d82807a757f8a878383848684878b87878883817c7d7c7c7c7f7e83 +858a8884817e7d7e80818179827f8a898088828281827d7b767876797478 +7c827f8081807f7f7b7b7f868b8382817e7a7878797d8183817d7c808380 +7d7c7d7f8281807d7e7c797a8083827e7d7b797776757576737070747573 +7172787e7d787475777878777675787c807c79746f6e6e717371726f6a6b +7175747372727477787572716e6f757d827d767b7c7c787471706f73706f +727475787c757e7f76747a7b737b77777578aaa8acb4b5aeacaeabb0b0ac +b1bab5a7aaadb2b4b3b1b0b0a9abb1b4b4b2afaeb4b1b0aeb0b2b4b4bcb5 +acaaaeb5bbbdb5b0b5b8b3b5b9b3bcbbbab9babbbdbeb8babbbab7b6b7b8 +b7b4b6bab9b4b4b9b4b4b6babbbcbab7babbbabbbbbbbab9bdbdbab7b7b7 +babab9b9bdc0bebababbbcc4c2bec0bbb7bebbbcbab7b8bcbbb7c0c0c0c0 +bfbdbbbab2b9b0906f63625f7f77a574736b4d63609395a5adb8b3c3cacb +c9cacbcbcac8cdcac7c8cacbc8c5cecdcccbcbcccdcec7cccdc8c5c8cdce +cac7c9cbcbc9c7c8c3c4c6c7c6c3c0bdc5bfb9b6b6b1a79e92816959524b +403834312e2a2927252323292d2d2e303230393d444849443f3b3b3f4448 +49484a4a4c4b4d4c4d4d5154595c646c747d8688838c999e9998a0aab0ba +c9d2cbbcb4b7afb4bdcedbdfdfe0d8dde1dedbe0e4e6dde2e4e0dee1e4e5 +e2e1dfdedfe0e3e4e0e1e0dedcdcdee1e0e3e6e3e3e6e6e3dddfe1e4e5e5 +e2e1e0dfdddfe2e4e4e4e6e4e1e0dfe0e1e3e7e2dedee1e1ddd9e7e1dcda +dee1e1dedddddcdddde0e0e1dddddfe1e3e2e0dde2dedcdee2e4e1dfdfde +dbdcdfe1e0e0e3e1dddee1e3e3e3e6e5e3e1e1e1e2e2e7e6e1dcd9dcdedc +d8dbdededcdcdee1e8e8e6e6e5e3e1dfe0e4e6e1dad6dadfdddddedcdddf +e1e5dddfded8d5d8dcdae3dedfe5e6e3e1e2dde2e6e5dfd9dbdde0dcdcdf +e1dfe1e6d9e1e4dedce3eaebe6e8e8e4dfdcdde0e1e1e1e3e5e5e1dfe4e3 +e1e2e3e3e2e0e0e5e5e0dee0e5e5dfe2e5dfd7d5dbe1dadedddae1ebe5d8 +d7dadee1e4e5e5e4e2e1e1dedee0e5e8ede3dee2e3ded9d9e0e3e3e0dbd9 +dee3d6dfe1dddee2dfd7dfdcdadbe0e2e3e1e0e4e7e5dedad9dadddbdce0 +e1dee1e6d7c3cddcd6dfe6d5e9e8e7e5e378767a82837c7a7c797e7d797e +8782767b808587868481817a7c7f8282807d7a7f7c78797b7d7f7f89827a +787c83898c8782878a85868a848d8c8b8b8c8d8f908a8c8d8c8887858683 +818287847f7f847c7c7e82868785828788898a8a8a89888e8b8784828282 +828181858b8a86888c8a92908c8f8a868d8a8b8986878b8a868d8d8d8d8b +8987857d867d5d3e33323256517e4d4a41233735676a7a838e89989b9a98 +999a9a99979c999697999a97949f9e9d9c9c9d9e9f959a9b9693969a9b99 +999b9d9c9a9899949597989794918e938d878688857d756b5b45362f2920 +170f0b080707080706060c100e0d0f0f0b1519212526231e1a1d21282c2d +2e2e303234363637393e41474d555d666f788083909c9e9895989f9fa3ac +b0a59086867a7b8394a3a9aaada9b0b4b1aeb1b5b7b1b8bab6b4b7babbb8 +b7b5b4b5b6b9bab8b9b8b4b2b2b4b5b4b7b7b4b4b7b7b4aeb0b2b5b6b6b6 +b5b4b3b3b5b8babcbcbebcb9b6b5b6b7b7bbb6afafb2b2aeaab9b3aeafb2 +b8b7b6b3b4b2b2b1b2b2b3b1b1b3b5b7b6b1aeb3afabadb2b4b1acacabab +acafb1b1b1b4b2b1b2b5b7b9b9bebdbbb9b7b7b9b9bcbbb5aeabadafada8 +abaeaeacacafb3b9bababab9b7b5b5b8bcbcb6aca6a7adaaababacadb1b5 +baafb1aea8a5a8aaaab1aeb1b7bbbab9bab4b9bbb7afaaa7a9aca8a8adaf +b0b1b6a9b1b4aeacb3babbb7b9b9b5b0adaeaeadadafb1b3b3b2b0b5b4b4 +b5b6b6b5b3b3b8b8b3b1b3b6b6b0b3b4aea6a4a8aea7abaaa7aeb8b2a5a4 +a7abaeb1b2b1b1afb0aeadabadb2b5bab0abafb0aba6a4a9acaca9a4a5aa +afa3acb0acadb1aea6adaaa7aaafb3b4b4b1b5b8b4ada7a7a8aba9abafb0 +afb2b9a8959faea8b0b7a6b7b7b5b4b44341474f50494949484b4844474e +493c43474e4e4f4d4b4b44464c4f4f4d4c484b48454547494b4b544d4543 +474e54544b464b4f4a4e524c57545350515153524c4e5151504f5051514c +5052504b49504b4d4d515455514e52535152525251505856524f4e4e4f4f +5050545958545558575d5b5757524e5350514f4e4f53524e545456585959 +5859535b52321305040b42446f3c362b0a1a1342404d535c576565626061 +6262615f64615e5f61625f5c6968676666676869606566615e6165645f5e +6062646260615e5f616261605d5a625c565556544d4940342116110e0704 +090a070506060708081014131416161217191f23221c171112161a1e1f1f +2021212226282c30373b4348525a636c757d8393a1a8a6a6adb0afadaea7 +9275655d48465162727b7e827f878b878485878982888a8684878a8b8887 +85848586898a858685828080848685888986888b8b888486888b8c8c8988 +8584838588888b8b8d8b8886858687888c8781818484807c88817d7c8184 +85828180807f80808182808084868a898784898580828486817d7f7e7d7e +8183838386848283868889898d8c8a86858585858988847d7a7f817f7a7b +807e7e7c81828b898b898a86868385888a837b75787c7b7a7c7b7d7f8487 +7d7f7d7774777979807d7f8588868586808388837e7677777c76787a7e7c +80857880847d7b82898a8385837f7a7778797b7b7c7e80807e7a7f7e7d7e +7f7f7e7c7a7f7f7a787a7e7e787b7c766e6c71776e72716e77817b6e6d70 +76797c7d7f7c7878777574767b7e8379747879746f6e717474716c6c7176 +6a7376727377746c726f6e70777d7e7d7b7f827c736e6c6d706e70757877 +7c8274616b7a747c8372827f807c7eabaaadb3b4afacaeabb0afabafb7b3 +a5b0b1b3b3b2b1b4b5b1b2b5b5b3afaba8adacabadafb3b6b6b5b4b2b3b4 +b5b5b4b6b1b7bab5b7bbb5bab9b8b8b8b9bbbcb8babbbbb9b7b9b9b3b2b5 +b9b9b5b5bab5b7b9bbb9b8b7b7bcbcbbbbbababababcbabab8b7b7b9babd +bcbdc0bfbbbdbfbfc5c2bfc2beb9beb8bab9b7babebdb9c0c0bfbebfc0c1 +c2bdbdb7aba59f8e7876697c94bea1775c40e6b49abcc3c7c6cacac9c9ca +cac9c7cac9c9cacccdcdcacbcac9c8c8c9cbcbcaced1cbc7c9cdcdcbc9ca +cbcbcac9c9cacbcccdccc9c7c6ccc8c3c3c2c0bbb5a89b88776d655a534b +463f38312c2824242829272931353735373a3e43464a4b4945413d3d4049 +4e474a50555d666e7476797b7f82878c8c8d82808697a6aeb1c5bfbbbfc0 +bcb7b8bcb9bbc6d4d9dddfd7dbdedcdcdfe2dfdde0e1dedde1e3e2e4e3e1 +e0e1e2e4e6dfe0e1dfdcdbdedfdee1e3e0e1e4e4e1e3e1dedcdde0e2e4e1 +e0dee0e3e5e5e5e5e4e3e1e0e0e2e2e5e1dfdedfdfdddae7e2dcdadee1df +dedfdfdfdee0dfdfdedfdddddee0e1e2e0e1dddbdcdfe0dfdcdddcd9dadd +dfdfdee0dedbdcdfe1e1dfe6e3e1dfe0e0e1e1e5e5e2dbd9dde0e0dadfdf +dfdededfe1e8e7e3e2e1e1e1e0dee0e4e0dbd7dde1dcdedfe0dee0e3e6dd +e0e0dad9dbdddce1dcdde0e3e0dededadee2e0ded9dcdde0dedee2e3e1e1 +e5dce3e5e0dde1e6e7e5e7e7e2dcdbdfe4e2e1dfe1e3e3e0dfe0e0e0e3e6 +e6e5e3e1e6e6e1dfe2e6e6dde0e2dfd9d5d8dad7dcdddadfe8e4dad8dadd +dfe1e1e1e0e5e5e4e2e0e2e6e9e5dddadee1dedbdbdde0e1dfd9d9dde1db +dedddbdbdededce0dedddee2e2e1e0dbdfe3e3e3e0dfdfdedddde1e0dfdf +e5e9d2c5d6e6dcd3dce2e3e5e6e479787b81827d7a7c797e7d7a7e868277 +818486868584858682838383817d7774757473757a7e8181828180818283 +83838883898c86888c868b8a898a8a8b8d8e8b8d8d8d8a8887877f7e8185 +848080857d7f81838483828289898a8a898989898d8b8785828281828584 +888b8c898b908e94918e918d888d87898886898d8c888d8d8a8987888788 +85878178726f5f4b4c40536a94784e3115bc8b6f92999d9b9b9998989999 +9896999898999b9c9c9b9c9d9c9b9b9c9c9c9b9f9f9995979a9c9a9b9c9d +9d9c9a9a9b9c9d9e9d9a98979894919193938d8a7f715f50473f362e231d +1813100d0b08080c0b09090e100f0e1013171d23272a2927242121262d34 +30353a4249525b6164676c7073787f838d868186939fa2a0ada29895938b +8381807c7f8c9ca5aaaea8aeb1afb0b3b3b3b1b6b7b4b3b7b9b8bab9b7b6 +b7b8babcb7b8b8b6b2b1b2b3b2b5b4b1b2b5b5b2b4b2afadaeb1b6b8b5b4 +b4b6b9bbbdbdbdbcb9b7b6b6b6b6b9b5b0afb0b0aeacb7b2aeafb3b8b7b6 +b7b7b6b5b2b1afb0b3b3b1b2b4b5b2b0b1aeaaabafb0aca9aaa9a9aaadaf +b0afb1afafb0b3b5b7b7bdbdbbb9b8b8b9b9bcbcb6afadb1b4b1aaacafaf +aeaeb0b2b9b8b7b6b5b5b7b8b6bbbbb7ada9abafaaacadaeaeb0b5b8afb2 +b0aaa7a9abaaafacadb5b8b8b6b9b1b5b7b5aea9a8a9acaaaaaeb1afb1b5 +acb3b5b0adb1b6b7b6b8b8b3adacb0b5afaeadafb1b1b1b0b1b1b3b6b9b9 +b8b6b4b9b9b4b2b5b7b7aeb1b1aea8a4a5a7a4aaaaa7acb5b1a7a5a7aaac +aeaeadadb2b2b1afadafb3b6b2aaa7abaeaba8a8a6a9aaa8a5a5a9ada8ab +acaaaaadadabacaaaaadb0b3b3b2adb1b4b4b0adababacabacb0afaeb0b6 +baa297a8b8aea5aeb0b1b3b4b54443484e514c494b484b4a42464c473b49 +4b4d4d4c4b4f504c4d50504e4a474244414042464a4d4d4d4c4b4c4d4e4e +4b4c454d504e5056505554514f4f4f4f504a4c5151525054544d4c4f5350 +4c4a514c50505252514e4e5454525251515151575552504e4e4e4f525154 +575754565a565c5956595550554f51504e51555450565654535455575856 +58534945413124332c3f547c5c300f00945f4262676b6865616060616160 +5e6160606163646463666665646465666665696a6460626564605f616262 +616262636467686764646368645e5e5d5c59554b413125201a1413171711 +0d09080705070b0d0b0e141817131314181c1f21211e1c161313171f251e +222c343e49555b6265696d7075797e8b878690a2b1b6b2baa79285766353 +4b4c464d5c6d767f837e8487858386878682868784838789888a89878687 +888a8a84848482807f818283868683868989868a8885838487898b868584 +8687898a8a8c8b8987868687878a8682818282807b87817c7c8084838283 +838281807f7e7e8281828387888a888984818081827d7a7d7c7b7c7f8182 +8183818081848687868f8e8a88858585858888857e7e8287857c7f818180 +8082848b8a888786868785838687837b777a7e797b7c7d7d7f83867d807f +7976787a797e7b7c82858482847d8184827d7878797c7a7a7e807e80847c +8385807c8085868284827d77767a7f7a79787a7c7c7b7a7b7b7c7f828281 +7f7b80807b797c7f7f76797976706c6e6e6b6f716e737c7a706e70757779 +797b787d7b7a7876787c7f7b737074777471716e7172706c6c70746f7272 +7070737371727071737b7d7f7e797d7e7c797471716f6e717577767a8086 +716576867c737c7d7c7e7f7fadacaeb2b3afadaea8acacaaaeb6b4aab4b2 +b1afaeafb4b8b5b6b8b7b3aeaaa6aeadaeb1b3b7b9b9b1b3b5b6b5b3b2b2 +b7b2b8bcb7b9beb8b7b7b6b6b7b8b9b9b7babcbcbab8babaafb0b4b8b9b6 +b6b9b6b9bcbbb6b4b6b8bebdbbb9b9b9bababbbabab8b7b7b9b9bebdbcc0 +bfbbbec1c0c4bfbcc2bfb8bbb6b9b9b8bbbfbfbac0bebcbbbec0c4c6bebd +bdc0caccbba48b6c4c93ddc3b78d60edbeb1cdc1bfd2c8c9c7c8c9c9c8c6 +cacbcccbcacacbcac9c7c7c6c6c7c8c9ced2d4cec9cbcfcecccbcbcccccb +cbcad0d0d0cfcfcecdcdcbcac8c7c6c6c7c6beb6a8998c8178726b655b51 +493f36302f2f2b27282f3638373636373a3d424443444643413d3e3d4949 +4b4d4f52575b6063676c70767c7f7a90a9afa8a1a7b1b4b7bcc4c8c0b9b5 +c1bcbcc7d5dadcdbd7dbdbdbdfe2e0d9dddededcdee3e2dee5e4e3e2e3e4 +e6e7dddfe1e0dedcdddedcdfe1dedee1e1dee3e0dddbdbdddfe1e1e0dee0 +e3e6e6e5e3e3e3e2e2e1e1e1e2e0e0dedddcdcdbe4e1dcdbdfe0dfdde2e2 +e2e1e2dfdddae0dddcdcdee0e3e2e2dedcdddedfdedadcdad7d8dbdedddc +dfdedbdde0e2e1dfe5e2e1e0e1e1e1e1e5e5e3dcdce0e3e4dde0e0e0dfdf +e0e1e7e5e1dfdfe1e2e2dbdde2dfdcd8dee1dcdee1e2e0e1e3e5dde1e2dd +dcdededcded9dadde1dddbdbdadee2e0dfdcdfe0e1dfe0e4e4e2e0e3dee4 +e6e3dfe0e1e1e3e6e6e1dad9e1e8e3e0dddddfe1dfdfdddee0e5e9eae7e5 +e2e6e6e2e1e4e6e5dfe0e3e2dfdbd8d5d7dee0dcdde2e0dadadadcdddede +dddde6e5e4e2e0e0e3e6e1dcdadde0dfdcdcdadddfdfdadadde0e1dcd9da +dbdadde2e0e0dfe1e3e2dfdddedee0e2e6e4e1dee1dfdee1dfdcdce1eee6 +c8c9e7dfcedfdbdee2e5e47b7a7c80817d7b7c767a7a797d85837c858584 +828182858986878685817c7672767576797e8284847e8083848381808189 +848a8e888a8f8988888788898a8b8b8a8d8e8e8b8988887b7c8084848181 +847e818483817f81838b8a8a88888889898c8b8785828281818685878b8c +898c928f938e8b918e878a858888878a8e8e898d8b878686888a8c868787 +8d979c8c7760432368b2988d6235c29486a29694a5999896979898979599 +9a9b9a99999a9b9a9a9a99999a999a9fa3a29c97999c9d9b9d9d9e9e9d9c +9ba1a1a1a0a09f9e9e9796969597999a9b958c8073675c524b423b342c25 +1e191413130d06070c10100f0e0e11151b202423242626242121212f3234 +35373b3f434b4e53585e646a7070879ea4988f91979591919493897f7983 +7f808d9da6a9aaa8acaeaeb0b3b1adb1b4b4b2b4b9b8b4bbbab9b8b9babc +bdb5b7b8b7b4b2b1b2b0b3b2afafb2b2afb4b1aeacacaeb3b5b5b4b4b6b9 +bcbebdbbbbb9b8b8b7b5b5b6b4b1afaeadadadb4b1aeb0b4b7b7b5babab9 +b8b4b1adacb4b3b0b0b2b4b3b2b2afabacaeafaba7a9a7a7a8abaeaeadb0 +afafb1b4b6b7b7bcbcbbbab9b9b9b9bcbcb7b0b0b4b7b5adadb0b0afafb1 +b2b8b6b5b3b3b5b8bab3b8b9b6aeaaacafaaacafb0b0b1b5b7afb3b2adaa +acacaaaca9aab2b6b5b3b6b1b5b7b5afacabacadabacb0b2b0b0b3aeb4b6 +b3afb0b1b1b4b7b7b2abaab2b9b0adababadafb0b0aeafb3b8bcbdbab8b5 +b9b9b5b4b7b7b6b0b1b2b1aeaaa5a2a4acada9aaafada7a7a7a9aaababa9 +aab3b2b1afadadb0b3aea9a7aaadaca9a9a3a6a8a8a6a6a9acaea9a8a9aa +a9acb1acacacb0b1b3b1afb0b0b1b3b3b1adaaafadadb0aeabadb2bfb79a +9bb9b1a0b1a9acb0b3b54645494d504c4a4b45474741454b48404d4c4b49 +48494f53505153524e494640454243464a4e5050494b4e4f4e4c4b494d46 +4e525052595352524f4d4e4e4d4d494c525253515555494a4e52504d4b50 +4d5253524f4d4d4f5655525050505151565552504e4e4e4e535253575754 +575c575b565359564f524d50504f525656515654535253555a5c5758595e +686c5e4d3e250548907567380a9562536d5f5d6c61605e5f60605f5d6162 +6362616162636463636262636364696d6d67626467656161626363626463 +69696b6a6a696a6a6766636261626366615a4f463b322d2a2c2b231c150f +09060708050002080f100d0c0c0e0f12171918171918161313131e202629 +2d333b3f4a4d52575c62666d6f8aa4aca59d9ea29b908880746251455049 +4e5d6e777e7f7e8284848487858082848482848988848b8a8988898a8c8b +828384838280808181848481838686838a8784828284868886858486878a +8b8a8a8a89888887868687858381807f7f7c84807c7d8183838186868584 +827f7c7a8381818185878b8a8a85828180817c787c7a797a7d80807f8281 +8082858787868e8d8a89868685858888867f81858a897f80828281818384 +8a88868484868887808385827c787b7e797b7e7f7f8083857d81817c797b +7b797b78797f83817f817d8184827e7b7b7c7d7b7c80817f7f827e848683 +7e7f80808083817c75747c837b787676787a7a7a78797c81858683817c80 +807c7b7e7f7e78797a7976726e696b717470717676707070747576767775 +7e7b7a787676797c77727073767572726b6e70706d6d707375706e6f706f +7277727273767c7d7d7b7c7c7b7b7c787370727072757673777c8b836869 +88806f7f76777b7e7faeaeafb1b0aeadada6a9a9a9aeb6b7b0b2b1afadab +adb2b5b2b3b6b6b4b0aeabb3b2b1b2b3b4b4b3b1b3b3b1afb0b5b9b6b2b7 +bbb6b9beb8b6b6b6b7b7b8b8b9b7babdbdbbbabbbbafb1b5b8b8b5b4b5b4 +b8bcbab4b3b6bbbebcb9b7b6b7b8b9bbb9bab8b7b6b8b8b9b9bbc0bfbbbb +bdbec0bab8c0bdb5b7b7babab9bcbfbeb9bcbbbbbbbfc1c5c7b7bcc0bfc4 +caccc8b9996090c8c1d5c8afb4c1d4c8c8bccec7c8c6c6c8c8c6c5cacccd +cbc6c3c4c4c8c7c6c6c6c6c8c8ccd1d4cecaccd1d0cdcdcdcbcbcdcdcbd0 +cfcecdcccdcecfc7c9c9c8c5c7cbcecbc7bfb4a5978e8b85817a726a6055 +4e45423a302e2f312e3637393a3b3a3a383f444b4f4f4c4a46494b4e5256 +5a616560646e77828c999d9d9a999ea6b0b7bcaabbccd1c8bdb9babfbbc0 +d0dee1ddd7d9dbd9dae1e4dfd6dfdedddce0e5e3dde4e4e3e3e3e4e5e6de +e0e3e2e0dedededcdfe1dddde0dfdcdedfe0e1e1dfdbd9e0dfdddfe2e4e4 +e4e1e2e3e3e3e2e1e1dfdfe1dedcdadbdce2e0dddcdfe0dedde2e2e4e3e4 +e0dddadfdcdcdddfe0e2e1e4e2e0dfe0dfdedbdcdad7d9dcdedddde1e0df +e1e4e6e5e2e4e2e1e1e2e2e2e2e6e6e3dddce0e3e4dfe1e0e0dfdfdfdfe4 +e4e1e1e2e3e3e3dadbe0dddbd8dcdedcdee2e3e1e2e2e4dde2e4e0dfdfdf +dcddd8d9dde0dcdbdae0e2e4e2e2dfe1e2dfdedfe4e4e0dddfdee2e5e4e2 +e0dfdfe2e6e8e3dbd9dfe6e3e0dbdadcdfdededcdee1e6eaebe8e5e1e5e5 +e1e1e4e5e3e4e4e6e8e8e3dbd5dbe2e4dfdcdddedbdadadbdcdcdddedfe3 +e3e2e0dddddfe1e4e1dfdfe0dfdddcd8dbdfe0dddddee0e4dcd8ddded9dc +e5dedfe0e2e3dfdcd9e9e4e0dfe3e3dfdbe2e0dfe0dedad9dee3f0dac2cf +e0dcd9d9dddfe2e17c7c7d7f7e7c7b7b747777787d858682838482807e80 +838683848484827e7a777b7a797a7e7f7f7e7e80817f7d7e83888884898d +878a8f8987878789898a8a8b8a8d8f8f8c8b89897b7d818483807f807c80 +84827f7e81868b898886858687888c8a8785828180808181868b8c89898e +8d8f89878f8c8486868989888b8e8d888988868687898b8d7f868a8c919a +9d9c8f6f36669d96aa9e838996aa9b9e90a29897959597979594999b9c9a +95929395999a9999999999999da2a29c989a9e9f9c9f9f9d9d9f9e9ca1a0 +9f9e9d9e9fa09595979696989ea3a09e978c7f7269645c58524d463e3530 +27231a0f0b0b0c080e111014151516161d22292f2f2c2a292c2f3236393e +4549434a545f6a778188878482858b939798828f9b9b8d7f797b817f8698 +a8adaaa6aaacacadb2b5b0a7b3b4b3b2b6bbb9b3babab9b9b9babbbcb6b8 +bab9b6b4b2b2b0b3b2aeaeb1b0adafb0b1b2b2b0afadb4b3b3b5b8babcbc +b9bab9b9b9b8b5b5b3b3b2afadabacadb2b0afb1b4b7b6b5bababbbab6b2 +adacb3b2b0b1b3b4b2b1b4b3afaeb0afaba8a9a7a7a9acaeaeaeb2b1b3b5 +b8babbbabbbcbbbbbababababdbdb7b1b0b4b7b5afaeb0b0afafb0b0b5b5 +b5b5b6b7b9bbb2b6b7b4adaaaaacaaacb0b1b1b2b4b6afb4b4b0adadadaa +aba8a9b2b5b4b3b5b7b9b9b7b2afadaeabaaabb0b2aeadafaeb2b5b4b2b0 +afafb3b7b9b4acaab0b7b0ada9a8aaadafafadafb4b9bdbebbb8b4b8b8b4 +b4b7b6b4b5b5b5b7b7b2a8a2a8b0b1aca9aaaba8a7a7a8a9a9aaaaacb0b0 +afadaaaaacaeb1aeacacadacaaa9a1a4a8a9a9a9aaacb1a9a7acada8abb4 +aaabadb1b1b0aeabbbb6b1b0b0b0aba7b0aeaeafada9aaafb4c1ac94a1b2 +aeabaaabadb0b247474a4c4d4b4a4a43444440454b4b464b4b494745474d +504d4e51514f4b4a454a4746474a4b4b4a494b4c4a48494e504c464d514f +52595351514f4e4e4e4c4d494c535354535656494b4f524f4c494c4b5153 +514d4c4d525654504e4d4e4f50565452504e4d4d4d4e4e52575754545855 +57514f57544c4e4e515150535655505251525254565b5d50575c5d626a6f +6f65470e3c736b7d6c52545f7060625365605f5d5d5f5f5d5c616364625d +5a5b5d6363626262626363676c6d67636569676263646262646664696869 +6867686b6c646566636062676c6b6a645b50453d3d3c3c38322c231c160f +0e05000000000006080a0b0c0c0a0a11161d22221f1d1b1c21262b313a42 +48454b555f6a747f878987888b92989c9a80868a816b564d484e49546779 +7e7f7b808282838689847b84848382868b89838a8a8989898a8b8a838486 +858482818181848480828584818586878888868280858483858688898988 +89898989888686848484817f7d7e7f827f7d7e818382818686878684807c +7a8280818286878a898c89868382817c797c7a797b7e8080808483848689 +8b8b898d8d8a8a878786868989868081858a898181828281818282878786 +868788898a7f8183807b78797b797b7f80808182847d82837f7c7c7c797a +77787f82807f8083858684817e7d7e7b7a7b80817d7c7e7e828584817f7e +7e7f83837e76747a817b7874737578797977797d82868784817b7f7f7b7b +7e7e7c7d7d7d7f7f7a71696f7578737071747170707374747578777b7978 +76737375777a77757576757372696c70717070717378706d72736e717a70 +7174777c7a7a7787827b787977716d7371737573717479808d7a6270817d +797676787b7cafafafaeadadadabaaababaaadb2b4b1b1b1b2b1afaeb1b2 +b1b1b5b5b4b2b0aeb2b0adadacacabaaabaeb1b1b0b2b6bbb5b0b6bab5b7 +bbb6b7b8b8b9b9b9b9b9b7babdbebcb9babab2b5b7b7b6b4b3b2b2b6b9b8 +b3b3b8bebcbab7b5b4b5b7b8b9b9bab8b7b6b7b7b6b8bcc3c2bdbbbbbdc0 +b9b7bfbdb5b6babcbcbabbbebdb8b9babcbec1c2c3c3babdbfbab9bfc9ce +d4c5a8b1c4c8c8cdd1b3cedfb9d6d5c0c9c7c6c6c7c7c6c4cacccdcac5c2 +c3c3c8c7c7c8c8c7c8c8c8cdd0ccc9ccd1d1cdcececacacececbcecdcbca +cacccecfcccececcc8cacfd3cfcecbc3b7a9a09c979695928d847a746763 +594c44403830353438393b3d3f403c3c3c3c3f42494f5053575a5f656c6f +878788878686898b989da6b1b5afa59dced1cec1b4b3bdc3bebcc2d2dfe2 +dedadcdcdbdce2e5e0d5dfdfdfdee2e7e4dee2e2e1e2e2e3e3e4dfe1e4e4 +e1dfdfdfdde0e1dedde0dfdcdfe0e1e2e1dfdbd9dedcdbdce0e2e2e2e1e1 +e3e3e3e2e2e1dedfe0dedcdbdcdddfdededddfdfdedddfe0e2e2e4e1dfdc +dddcdddfe1e0dfdce4e2e1dfdedddddbdedcd9dbdde0dfdfe2e1dfe1e4e7 +e6e4e4e2e2e2e3e3e2e2e6e6e3dcdadee0e1dfe1dededfdfdddde1e3e4e6 +e7e6e3e1dbdbdfdddbd7d9dadcdfe2e3e1e1e2e3dee3e5e0e0e0e0ddded9 +dbdee1dddcdbe3e4e4e2e1dedfdfdddbdde2e1dedbdddddfe2e5e4e1dfe0 +e1e6e9e6ded9dbdfe4e0dbd9dadddddedfe0e3e7eae9e6e2e0e2e2e0e0e3 +e4e0e6e5e8eaebe7ded6dbe0e4e1dedfe1e2dbdbdbdbdddfe2e3e3e3e2e0 +dddcdddfe1e1e0dedfdfdedcdadcdfe0dfdfe0e2e2dcdbe2e2dcdde3dbdd +e0e1e0dcd8d7f0e7dfdbdfe1e0dce2e0dfe0ddd9d8dde0e7e8d1bbcfe2d4 +dddddcdcdd7d7d7d7c7b7b7b79787979797c818383828485848281828382 +82838382807c7a7a78757577777675787b7f7f7e80848a8782888c86888c +878889898b8b8b8b8b8a8d8f908d8a88887e818383817f7e7d7a7e81807e +7e838989878684838486878a8a878582817f7f7e80878e8f8b898c8c8f88 +868e8c8485898b8b898a8d8c8786878789898a898982888988878f9ba2aa +9b7e88999d9da3a486a2b38baaa8929896959596969593999b9c99949192 +94999a9a9b9b9a9999999e9e9a979a9ea09ca0a09c9ca09f9c9f9e9c9b9b +9d9fa09a9c9c9a999ba2a8a4a5a49b8f837a766d6c6b6b67615852474238 +2b211b130b0b0d0e121418191a161818181b21282e2e3135393e434a4f67 +696a69686a6b6d7579828a8e877a6e9d9d95847470767f7f80889aa9aeab +a9adadacadb3b6afa6b3b5b5b4b8bdbab4b8b8b7b8b8b9b9bab7b9bbbbb7 +b5b3b3b1b4b2afaeb1b0adb0b1b2b3b2b0afadb2b0b1b2b6b8babab9b9b9 +b9b9b8b6b5b2b3b1afadacadaeafaeb0b1b3b5b6b5b7b8b8b8b6b3afaeb1 +b2b1b3b5b4afacb4b3b0aeaeadaaa8aba9a9abadb0b0b0b3b2b3b5b8bbbc +bcbbbcbcbcbbbbbababdbdb7b0aeb2b4b2afaeaeaeafafaeaeb2b4b8babb +bab9b9b3b6b5b3ada9a6a7a9acafb0b1b1b4b5b0b5b5b0aeaeaeabaca9ab +b3b6b5b4b6babbb9b7b1aeababa9a7a9aeafacabadadafb2b5b4b1afb0b2 +b7bab7afaaacb0b1ada9a7a8abaeafb0b1b6babdbcb9b5b3b5b5b3b3b6b5 +b1b7b6b7b9bab6aba3a8aeb1aeabacaeafa8a8a8a8aaacaeb0b0b0afadaa +a9aaacaeaeadabacacaba9a3a5a8a9ababacaeafa9aab1b1abacb2a7a9ad +b0aeadaaa9c2b9b0acacaeaca8b0aeaeafaca8a9aeb1b8baa38da1b3a6ae +aeadadae48484a494a4a4a4847464641444748474a4b4c4b49484c4d4c4c +50504f4d4c48494542424343424143464a4a494b4f524b444c504e505651 +52535150504f4d4d494c5354555255554c4f51514d4b4849494f504f4c4c +4f5554524e4c4b4c4e4f545452504e4d4c4c4b4d535a5a5654565457504e +56544c4d515353515255544f4f5053555657595951565a57565e6a717869 +4c54666866696b4b65744d6967545e5e5d5d5e5e5d5b616364615c595a5c +636363646463636363686965626569686264656161656764676666656567 +6b6c696b6b6763656b716d6f6d675c524947434443424039322d211f150a +010000000000020305080c0d090a0a0a0d12191f22252b30374149506a6b +6c6b68696b6d797d868d8f8574648e887a6550464a4e4c4a56697a7f807e +83838283878a847a84858584888d8a848888878888898988848587878583 +828282858481828584818687888988868280838181828486878788888989 +89888786838483817f7e7f807f7e7f80828383828485868685827f7d8080 +8284888787848c898783807f7b797e7c7b7d7f82828285848486898c8c8b +8d8d8b8b888886868989867f7f83878681818080818180808486898b8c8b +8988808283817c7877787a7d8081818183847e83847f7d7d7d7a7b787a80 +8381808186878684807d7b7b7977797e7e7b7a7c7d7f828583807e7f7e83 +84817974767a7c787472737678797a7b7f838685827e7a7c7c7a7a7d7d79 +7f7e7f81827e746a6f737875727377787171737375777c7b7b7978767372 +737577777674757574726b6d70717272737576707077777172786d6f7476 +797776758e857a747575726e75737475726e71767b8488715c7085757a78 +777778afb0afaba9acaca9b2b1aeacacaeb0afb3b4b6b7b5b3b3b3b2b3b5 +b4b2b0aeacb2afacabaaadaeaea3a9b0b5b7b7b5b4b5b0b5b8b3b5b9b3b8 +b8bababbbbbabab7babebebcb8b8b7b4b8b9b5b3b4b4b2b4b5b6b5b2b4ba +beb9b8b6b5b5b6b7b8b8b8bab8b8b6b7b6b8babfc6c5c0bebfbec3bdbbc1 +bdb7babdbebcb9babdbdb9b9bbbdbfc1c1c1c0c5c0bebec2c5c5c4cccbcb +c6c8d9bec5c5d7c5dac5c6d9c8c9c8c6c6c8c8c6c5c8cacbcac9c9c9c9c8 +c8c9c9c9c9c9c8c4c9cdc9c7cbd0d1cccfcec8c8cecfcacdcdcccbcccecf +d1cfd0d0cdc9caced3cfd1d0cbc2b8b0aba2a2a3a3a19d96928e8c837872 +695d5146423d39393b424445464744413f3f404a4c4f5254585e625c616a +737d88929ca1a9a9a19ca5bed6dacfbeb2b3bec3c1c1bbc1cdd7dbdfe0dd +dddcdce0e3dfd5dee0e1e0e2e6e4dfe0e0e0e1e1e1e2e2e0e1e4e3e0dedf +e0dee1e2dedee0dfdce4e2dedbdbdddddfdcdbdadbdee1e1e0e1e1e2e2e2 +e2e3e3e0dfdfdedddddddddcdddedfe0dfdddcdedee0e0e3e1e0dedddcdf +e0e1dfddd9e0dfdfdddbdadadadfdedbdcdfe1e1e0dfdddadbdfe2e3e2e3 +e1e2e3e4e4e3e2e5e5e2dbd9dddfdfe1e2dededfdfdcdbe1e3e5e8e9e7e3 +dfdddde0deddd9dad9dcdee0e1dfdfe0e3dfe3e4dfdfe0e0dee0dbdde0e3 +dfdedde3e2e1dededbdcdbdcdadbdfdfdddbdededddfe4e4e1e0e1e2e5e8 +e6e0dbd9dae4e0dbd9dbdddcdde1e2e2e6e8e7e4e1dfe1e1dfe0e3e3dee3 +e2e5e7e7e4ddd7d7dbdfe0e1e3e7eadddcdbdbdde0e4e6e3e4e3e1dfdedf +e0dadcdddbdbdedfdcdddddedfdfe0e1e2dedddde2e2dfdddfd9dcdfdfde +dad8d7ece4dcd8dee2e3e2e0dedddedcd9d8dde9dce8e5c2bfd5d4dfdedd +dcdc7d7e7d79777a7a77807f7c7b7b7d7f818487898a8886848483848382 +807e7a787a7774737578797970767e83858583838782878a84868a848989 +8b8c8d8d8c8c8a8d90908d898685808485817e7f7f7d7c7d7e7d7d7f8589 +86858584848586878989878583817f7e80828a91928e8c908d928c8a908c +86898c8d8b88898c8c888688888a898987868d8b888c90959796a1a1a19c +9eac929999aa98ad9599a998989795959797959497999a999898989a999b +9c9c9c9c9a99959a9b9795999da09ba1a09a9aa0a09b9e9e9d9c9d9fa0a2 +9c9d9e9b9a9ba1a6a4a6a7a49b9188837878797b7b77726e6c6a61564d44 +372b1e1914101014181d1e1e1f1e1b19191a2426282b2e32373b383d4651 +5b667075747878716b738b9fa2947f7170777a7b82828795a1a8acafaeae +adadb1b4aea6b2b6b7b6b8bcbab5b6b6b6b7b7b7b8b8b8b9bbbab6b4b3b4 +b2b5b3afafb1b0adb5b3afacacaeb1b3b0afb0b1b4b7b9b8b9b9b8b8b8b8 +b7b7b4b3b0afaeaeaeaeacadb0b3b4b5b5b4b6b6b6b6b5b3b0b0b1b2b3b4 +b5b3ada9b0b0aeacabaaa7a7acababacafb1b2b1b0aeaeafb3b6b9bababb +bcbdbcbcbbbabcbcb6afadb1b3b0b1afaeaeafafadacb2b4b9bcbdbbb9b7 +b5b8b6b4afaba7a6a9abadaeafafb2b5b1b5b4afadaeaeacaeabadb5b8b7 +b6b8bab9b6b3aeaba8a7a8a6a7abadababaeaeadafb4b4b1b0b1b3b6b9b7 +b1acaaabb1ada9a7a9abadaeb2b3b5b9bbbab7b4b2b4b4b2b3b6b4afb4b3 +b4b6b6b3aaa4a4a9acadaeb0b4b7aaa9a8a8aaadb0b3b0b1b0aeacabacad +a7a9aaa8a8abaca9a6a6a7a8abacadaeabaaacb1b1aeacaea5a8acaeacab +aaa9beb6ada9abafafaeaeacacadaba8a9aebaadbab79491a6a6b0afaead +ad48494a46464949464f4c4943434344454c4e50514f4d4e4e4d4e504f4d +4b4a4649444140414445453b41494e50504e4b4b444b4e4c4e544e535353 +5152514e4e494c5454555153524e52534f4a4b49494b4e4d4c4b4d515551 +504d4c4c4d4e4f535352504f4d4c4b4d4f565d5d59575a555a545258544e +5154555350515454504f515456565657565c59595b5f6465646a67676262 +71555c5a69576c535667585e5f5d5d5f5f5d5c5f61626160606062636465 +65656564635f646662606468686165655f5f6568636666676667696c6e6d +6e6d6a66656a6f6d6f6f6b645a544f4646474a4a46423e3e3c3429231a10 +07050500000003080e0f1213110e0c0c0d191d21262b31383e3c414a525c +656f76797c7b6f64687a8a87745c4b464b4d4a4d4b556472798184848483 +838588837a83868786888c8a858686868787878886858587868482828383 +868581838584818b89858282848486818080818285868588888888888888 +8885848281808080807c7d7f8283838281838384848482807f8080848588 +868581888685817d7c78787f7e7d7e8183848382807f80848789898c8c8b +8c898987868888857e7e8286848382808081817f7e84868a8d8e8c898682 +8484827e7a78777a7c7e7f7f7f81847f83837e7c7d7d7b7d7a7c82858382 +83868583807d7a78777876777b7c7a7a7d7e7d7f8483807f807f8283817b +7674757c787472747677787c7d7e828483807d797b7b797a7d7c777c7b7c +7e7e7b736d6b6e737475777d807372737375787e7e7b7a79777574757670 +727371717475726e6e6f707273747572717277777472746b6e7374777576 +758a8277717476757473717273716e717684778685636078757c79787777 +aeb0aea8a6aaaaa7b4b1afaeadaeb1b3b5b6b8b8b6b4b5b5b2b2b4b3b1ae +adabb6b2adacacafb2b4a6a9adb3b7b7b4b1b6b1b6b8b2b4b7b1b7b8babb +bbbbbab9b8bbbebebbb6b5b4b5bab9b3b2b6b7b5b8b6b5b3b2b5b9bbb8b8 +b7b8b9b9babab8b7bab8b8b6b6b5bcbcbdc3c2bfc0c3bdc4c0bdc0bcb7bd +bebebab7b8bebfbdbebdbebdbfbebfbfc5c1c1c4c9c8c5c2c5c8c4c6c4d8 +c0ccc2d9c0d4cfc5c8d0cac8c7c7c8c8c7c5c9c8c7c8cacbcbc8c7c7c8c9 +c9c8c8c7c4c9cdc8c6c9cececbcfcec7c7cecfc9cdcdcdcdcecfd1d1cfcf +cbcac9cacccececfd0cecac3bbb6afadaaa6a5a5a3a1a4a39d9895908478 +6f685f554e4a4b4b595f6667645d5652494d525960687076838586868687 +8a909495a0b6d2e0ddd5c4beb6b5bfc9c7b9c0bfc6d1d6d8dde1dcdddcda +dde0dfd7dbdfe3e1e1e3e2e0dfdfe0e1e1e1e1e1dfe0e1dfdddcdee0dee0 +e2dedddfdfdbe2e0dcdad9dcdddfdddcdadcdfe1e1e1e2e1e1e0e1e1e4e5 +e2dfdedee0e1dfdcdadcdfe0e0dedddcdededfdee0dfe0dee1dfdfdededd +dbd8dededfdddbd9dbdbdfdedbdcdfe1e1e0dddad5d6dadee1e1e2e1e2e3 +e5e5e3e3e3e3e0dad9dee0e2e4e3dfdfe0e0dddbe2e4e4e6e6e5e2dfdede +e2e1e1dedfdedddedfdedcdde0e2e0e3e3dedddfe0dfe1dcdee1e4e0dfde +e1dfdedcdddcdddcdcdadadedfdddde1e0dddee3e4e0dfe1e4e4e3e2e0de +dcdae3e0dcdbdcdddcdce1e1e1e3e5e6e4e2e0e1e1e0e2e5e3dde0e0e2e2 +e2e0dddad9dadcdfe1e3e6e9e0dedcdbdcdfe2e5e1e2e3e1dfdedfe0d9de +dedadadddedbdfdedcdddddfe0e1dadededcdddfdfdbd8dcdfdfdddad9da +e4dfdbdadfe2e4e3dddbdbdddcdadadfe7e0e3e5d7c9cbd2dcdddedfdf7c +7e7c7674787875827f7d7d7c7d808586898b8b89878686838382817f7c79 +777e7a7574777a7d7f73767b81858582808883888a8385888288898b8d8d +8d8c8b8b8e90908c8783828186857f7d818280807e7d7b7d808486858586 +87888889898988878583817e7d8484888e8f8d8e948c938f8c8f8b868c8d +8d8986878d8e8c8b8a8988878685858d8c8c9297999795989c989a98aa92 +9e95a990a49e9597a0999796969797969498979697999a9a99989a9b9c9c +9b9998959a9b9694979b9d9aa1a09999a0a09a9e9e9e9e9fa0a2a29c9c9b +9a9a9b9fa1a4a5a6a6a29b938e82807d7b7c7c7b797c7b78736f6a5e5146 +3e352b242120212f353c403d362f2a21252930373e464c585a5c5d5d5f62 +64605d667d98a7a49a898176737b837f7583868c99a0a5aab0adaeadabac +afaca6afb5b9b7b7b9b8b6b5b5b6b7b7b7b7b7b7b8b8b6b3b2b2b4b2b4b3 +afaeb0b0acb3b1adabaaadb1b3b1b0b0b2b5b7b9b9bab9b7b6b7b7b8b9b6 +b3afafb1b2b0adaaacb1b4b4b4b5b4b6b6b5b4b2b1b0b0b5b5b3b2b2b1ab +a8aeafaeacaba9a8a8acababacafb1b2b1aeaba9aaaeb2b7b9b9bbbcbdbd +bdbbbbbabab4aeadb2b4b3b4b0afafb0b0aeacb3b5b8babab9b8b7b6b9b8 +b7b3b0acabaaabacabacadb2b4b2b5b3aeabadaeadafacaeb6b9b8b7b9b8 +b6b3b1adaca9a8a8a6a6aaadabadb1b0adaeb3b4b0afb1b5b5b4b3b1afad +abb0adaaa9aaabadadb2b2b4b6b8b9b7b5b3b4b4b3b5b8b4aeb1b1b0b0b0 +aeaaa7a6a8a9acaeb0b3b6adaba9a8a9acaeb2aeafb0aeacabacada6abab +a7a7aaaba8a8a7a5a6a9abacada7abadabacaeaeaaa4a8acaeabababacb6 +b1acabacafb0afaaa8aaacaba9acb1b8b1b5b7a99b9ca3adaeafb0b24749 +494343474744514c4a45444345494e505252504e50504d4d4f4e4c494945 +4d4742414346494b3e41464c50504d484c454c4e4b4d524c525353525251 +4e4d4a4d5454544f504f4f54534d494d4c4c4f4f4c4a4b4e505250504e4f +50505151535252504f4d4b4a5151545a5a58595e545b575457534e545555 +514e4f55565456555554545353535c5a5a5f6465635e5d5d595b596c5460 +546950625c5355605f5f5e5e5f5f5e5c605f5e5f61626261626364656564 +63625f6466615f6266656065655e5e65686266666868696a6e6e6d6d6a69 +6667686a6a6b6c6b676058534b494646464647454948443f3e392d262625 +1c130e0d0f111f272e312e27201e171d232c353f48505f61606161606365 +645e64748a938778615548434c524f444d4f5a6871767f85838483818184 +817b80858987878988868585868787878785848484828180818383858581 +8284848089878381808384868281808283858686898887868787898a8784 +81818384827f7a7c808383828281838383828180807f8483848385848380 +868585817d7b79797f7e7d7e81838483807d7a7b7f8387888b8c8b8c8a8a +87878686837d7e838787868381818282807e8587898b8b8a888683858685 +827f7d7c7b7c7d7c7c7d81838083827d7a7c7d7c7e7b7d83868483848482 +807e7c7b79787876767a7c7a7c80807d7e83837f7e8081817e7d7b797775 +7b787574757677777c7c7d7f8182807e7c7d7d7c7e817e787b7b7b7b7b79 +75706d6d707375777c7f7674747374777c7d79787977757475766f747470 +70737471706f6d6e707273746e727371727474706a6e737476757778827d +767375767675716f7072716f7176807b8185786a6e757978797a7baeb0ad +a6a4a9aaa6b0aeadadaeb1b6bab6b6b6b5b3b2b4b5b0b0b2b1b0afaeadb7 +b2aca8a8abafb0b0adaaacb1b5b6b4b8b3b7b9b2b3b6b0b6b8b9bbbbbab9 +b9b8bbbebebab5b4b2b5b9b9b2b2b7bab9bcb8b4b2b2b5b7b8b7b8b9babc +bcbcbcb7b7bab9b8b6b6b5bdbbbabdbdbbc0c4bac2c0bcbeb8b5bcbdbdb9 +b5b8bfc2c0c2c0bebbbbbcbfc0bcbfc5c5c3c0c5cccbd2c2ccc3cabecdcc +c8d7c9c2e9c7c7cac9c7c8c9c9c7c6cbc7c5c6c8c9c6c1c6c6c8c9c9c8c7 +c6c6cbcec8c5c8cccccbcfcec6c6cecfc9cbcbcccdcecfd0d1d1d0cdcccd +cececfcccdcecfcdc8c0bbb6b1a9a4a1a3a3a49e9f9d9c9f9f978c8d8a84 +7c736a625e4e51565b616870757171716f6d6d6f7272767c82868d949cb5 +c2ced3d0c6bfbbbdbfbfb9bcc2c4bebec2ced9dedadadcdbdddbd8dadcdd +d7d8dee3e1dfe0e1dfdfe0e1e1e2e2e1e1dedfdfdcdadadcdfdde0e1dddc +dedddad9dbdddededdd9d8dedcdbdde0e2e2e2e3e2e1dfe0e1e4e6e4dfdd +dde1e3e0dcd8dcdfe0e0dedcdce0dfdedddedededde5e1dedcdbdbdbdadf +e0e1dfdddbdddedfdedbdcdfe1e0e0dddad4d4d8dde1e2e2e1e2e4e6e5e4 +e3e1e2e0dadae0e3e5e6e5e0e0e2e2dedbe4e4e2e2e2e2e1e0dfdee3e3e5 +e3e4e2dddededddadcdfe2e1e3e3dcdbdee1e0e1dcdee1e4e0dfdee1dfde +dcdfdfe1e0dddadadedfdedfe4e3dedde2e3dfdde0e6e2dededfe0dfdde3 +e1dddcdddedcdbe0dfdfe1e4e5e5e3e1e2e2e1e3e7e4dedfe0e2e1e0dfdf +dededcdcdee0e0e1e3e2e0dddadadce0e2dedfe0dfdddcdddedfe4e4ddda +ddddd9dfdddbdadadddfe0d8deddd7d7dfdfd9d9dde0dfdedadbdddfdedd +dde1e1e1e0dbdadadddcdadbe0dbeee2d6e6e1cdcdd8dadee2e37c7e7b74 +727778747e7c7b7c7d80858c87898988868585868181807f7e7d7a797f7a +747073767a7b7d7a787a7f8384838a85898b8384878187898a8d8d8c8b8b +8b8e90908b8682808185857e7d82858484807c7a7d808283848588898b8b +8b8b8888878683817e7d858385888a898e9589918f8b8d87848b8c8c8884 +878e918f8f8d898683848586848a90939191979f9fa696a0969d91a09c98 +a69891b8969599989697989896959a9694959798959297999b9c9c9b9897 +979c9c969396999b9aa1a09898a0a09a9c9c9d9e9fa0a1a29e9d9d9c9e9f +a1a2a2a3a4a5a5a0989189837c7777797a7b7576767577776f6365615b52 +4940373323262c31373e464b464645434141424545494f555c636a6e7d86 +9197938a83807e817d77767c7c7a818996a4a8a7a7abacaeaca9a9abaaa6 +acb4b9b7b5b6b7b5b5b6b7b7b8b8b7b7b6b7b6b3b0b0b0b3b1b4b2aeadaf +aeabaaacaeafafaeadacb2b0b1b3b6b8bababbbab7b5b6b7b8bab8b3aeae +b2b4b1ada8acb1b4b4b4b4b4b8b7b4b3b0b0aeafb9b7b2b0afafabaaafb1 +b0aeadabaaabacababacafb1b1b1aeaba8a8acb1b7bab9bbbcbebebdbcbb +b8b9b4aeaeb4b7b6b6b2b0b0b2b2afacb5b5b6b6b6b6b7b8b7b9b9b9b7b5 +b1afaaababaaaaacb1b4b3b5b3aca9acafaeafacaeb6b9b8b7b9b8b6b3b1 +afafadaca9a6a6aaadacafb4b3aeadb2b3afadb0b7b3afafb0b1b0aeb0ae +abaaabacadacb1b0b2b4b7b8b8b6b4b5b5b4b6bab5afb0b1b0afaeadacab +abaaa9abadadaeb0afadaaa7a7a9acafabacadacaaa9aaabacb1b1aaa7aa +aaa6a8a6a4a3a6a9abaca5abaca6a6aeaea8a5a9adaeacabadafb1b0aeae +aeaeadaca8a7a9acaba9adb2acbfb4a8b8b39e9ea9abafb3b64749484141 +4647434d49484445464a504f50504f4d4c4f504b4b4d4c4b4a4a474e4741 +3d3f424647484543454a4e4f4b4e474d4f4b4c514b5153525252504d4d4a +4d5454534e4f4d4f53534c494e4f5053514b494b4e4e4f4f505051535353 +53525252514f4d4b4a525051545554595f51595753554f4c535454504c4f +5659575a5855525051535453585e605e5d63666265555f555c505f5c5864 +564f7654565f605e5f60605e5d625e5c5d5f605d5a616264656564626161 +6667615e6164636065655d5d65686264646768696a6d6e6f6e6c6b6a6b6a +6b6869686968635b554e48433e3d3f42433f403f3e43433b3541433f3931 +2a262213161e232930383f3d3f42404242474a4c50545a5e656b6e80868c +8c81706156524e4b4343494c494b52637279787c808284827f7e807f7b7d +8489878586878585868787888887858383827f7e7e7f8282858480818382 +7f808284858584807f83818183848687878a8987858687898b8984808084 +86837f787c808383828181858482817f7f7e7e8885838182828382878787 +837f7d7b7c7f7e7d7e81838383807d79797d8287898b8c8b8d8b8a888784 +85837d7f858a8a888582828484817e878787878787878784858787868482 +807b7c7c7b7a7c80838183827b787b7e7d7e7b7d83868483848482807e7e +7e7d7c7976767a7c7b7e83837e7d82827e7c7f837f79797a7b7a787b7976 +75767777767b7a7b7d8081817f7d7e7e7d7f837f797a7b7b7a7978777472 +6f7072747477797876757272747a7a7675767573727374757a7a73707373 +6f706e6c6b6d7072736c72726c6c74746e6b6f74747775797b7d7c787677 +7573726f6e6f72716f727774878074878272707575797d7f +currentdict /inputf undef +currentdict /picstr undef +currentdict /rpicstr undef +currentdict /gpicstr undef +currentdict /bpicstr undef +grestore +showpage +%%Trailer + +%%EndDocument + @endspecial 1381 2749 a Fq(Figure)27 b(6:)37 b(Setup)28 +b(of)f(the)h(STK500)515 3094 y(The)20 b(coloured)f(patc)n(h)h(cables)f +(are)g(used)h(to)g(pro)n(vide)f(v)-5 b(arious)19 b(in)n +(terconnections.)33 b(As)20 b(there)515 3194 y(are)k(only)g(four)h(of)g +(them)g(in)h(the)f(STK500,)f(there)h(are)f(t)n(w)n(o)g(options)g(to)h +(connect)g(them)h(for)515 3294 y(this)e(demo.)36 b(The)24 +b(second)f(option)h(for)f(the)i(y)n(ello)n(w-green)c(cable)j(is)g(sho)n +(wn)f(in)h(paren)n(thesis)515 3393 y(in)33 b(the)g(table.)53 +b(Alternativ)n(ely)-7 b(,)34 b(the)f("squid")f(cable)h(from)f(the)i(JT) +-7 b(A)n(G)32 b(ICE)i(kit)f(can)g(b)r(e)515 3493 y(used)27 +b(if)h(a)n(v)-5 b(ailable.)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 332 348 +TeXDict begin 332 347 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(332)p 515 +236 2865 4 v 515 443 V 515 543 4 100 v 568 513 a(P)m(ort)p +1087 543 V 386 w(Header)p 1659 543 V 271 w(Color)p 2231 +543 V 341 w(F)-8 b(unction)p 2803 543 V 208 w(Connect)31 +b(to)p 3376 543 V 515 546 2865 4 v 515 845 4 299 v 568 +616 a Fq(D0)p 1087 845 V 467 w(1)p 1659 845 V 530 w(bro)n(wn)p +2231 845 V 347 w(RxD)p 2803 845 V 405 w(RXD)d(of)g(the)2857 +716 y(RS-232)2857 815 y(header)p 3376 845 V 515 848 2865 +4 v 515 1147 4 299 v 568 918 a(D1)p 1087 1147 V 467 w(2)p +1659 1147 V 530 w(grey)p 2231 1147 V 416 w(T)-7 b(xD)p +2803 1147 V 413 w(TXD)28 b(of)f(the)2857 1018 y(RS-232)2857 +1117 y(header)p 3376 1147 V 515 1151 2865 4 v 515 1450 +4 299 v 568 1220 a(D2)p 1087 1450 V 467 w(3)p 1659 1450 +V 530 w(blac)n(k)p 2231 1450 V 382 w(button)2284 1320 +y("do)n(wn")p 2803 1450 V 2857 1220 a(SW0)g(\(pin)h(1)2857 +1320 y(switc)n(hes)2857 1420 y(header\))p 3376 1450 V +515 1453 2865 4 v 515 1752 4 299 v 568 1523 a(D3)p 1087 +1752 V 467 w(4)p 1659 1752 V 530 w(red)p 2231 1752 V +456 w(button)g("up")p 2803 1752 V 125 w(SW1)f(\(pin)h(2)2857 +1622 y(switc)n(hes)2857 1722 y(header\))p 3376 1752 V +515 1755 2865 4 v 515 2054 4 299 v 568 1825 a(D4)p 1087 +2054 V 467 w(5)p 1659 2054 V 530 w(green)p 2231 2054 +V 377 w(button)2284 1924 y("ADC")p 2803 2054 V 2857 1825 +a(SW2)f(\(pin)h(3)2857 1924 y(switc)n(hes)2857 2024 y(header\))p +3376 2054 V 515 2057 2865 4 v 515 2356 4 299 v 568 2127 +a(D5)p 1087 2356 V 467 w(6)p 1659 2356 V 530 w(blue)p +2231 2356 V 420 w(LED)p 2803 2356 V 402 w(LED0)g(\(pin)g(1)2857 +2227 y(LEDs)2857 2326 y(header\))p 3376 2356 V 515 2359 +2865 4 v 515 2658 4 299 v 568 2429 a(D6)p 1087 2658 V +467 w(7)p 1659 2658 V 530 w(\(green\))p 2231 2658 V 313 +w(clo)r(c)n(k)f(out)p 2803 2658 V 243 w(LED1)h(\(pin)g(2)2857 +2529 y(LEDs)2857 2628 y(header\))p 3376 2658 V 515 2662 +2865 4 v 515 2961 4 299 v 568 2731 a(D7)p 1087 2961 V +467 w(8)p 1659 2961 V 530 w(white)p 2231 2961 V 374 w(1-second)2284 +2831 y(\035ash)p 2803 2961 V 2857 2731 a(LED2)g(\(pin)g(3)2857 +2831 y(LEDs)2857 2931 y(header\))p 3376 2961 V 515 2964 +2865 4 v 515 3064 4 100 v 568 3034 a(GND)p 1087 3064 +V 382 w(9)p 1659 3064 V 2231 3064 V 1102 w(un)n(used)p +2803 3064 V 515 3067 2865 4 v 515 3166 4 100 v 568 3137 +a(V)n(CC)p 1087 3166 V 392 w(10)p 1659 3166 V 2231 3166 +V 1060 w(un)n(used)p 2803 3166 V 515 3170 2865 4 v 515 +5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 333 349 +TeXDict begin 333 348 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(333)p 515 +236 2865 4 v 530 2006 a @beginspecial 201 @llx 338 @lly +411 @urx 454 @ury 3401 @rwi @setspecial +%%BeginDocument: largedemo-wiring.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: pnmtops +%%Title: noname.ps +%%Pages: 1 +%%BoundingBox: 201 338 411 454 +%%EndComments +%%Page: Image0 1 +/readstring { + currentfile exch readhexstring pop +} bind def +/rpicstr 523 string def +/gpicstr 523 string def +/bpicstr 523 string def +%%EndProlog +%%Page: 1 1 +gsave +201.4 338.2 translate +209.2 115.6 scale +523 289 8 +[ 523 0 0 -289 0 289 ] +{ rpicstr readstring } +{ gpicstr readstring } +{ bpicstr readstring } +true 3 +colorimage +a9a7a29e9d9ca0a3a8a7a19c8a752b292048817e768c3f1844423f2b3422 +211c191b454a5053312f2a415fb78ca2805288977b7467372a253f617520 +1f50c441116e83899192838a8e8b9290939d9a9799899c9a99a3a422181b +0e121418185daba5a3a7a9a8a8aaaaacb1b6b9b7b4ad2e111a23261e1327 +67aab6815d44363d72a5d2e8c5c0d0f6fffcfef7dbe0cfd1b1918ba6c9dc +e5ebf2e5fadd7c4239314b555e4d37386635111e1d17252e2a22313d92ef +e5863584dfd5d7cead9f9d8c756e615042404953423f3a3c4c6b92aeafae +aba8a9aebac5665267598fc9e1e6ecf65e2835292026335ebbaeb9c9c7c1 +d0d0c3c0ccc6c1cfda772200000c0c000a1f3b4276b1b8c5d4dcccddced4 +cdcbccc7bfbabbc1ccd2c8c6c1b5afafbac5c6d8bcb1b9b0bcd8ddd3d18c +5554755687e2d1dd7868635f3cbdcfcecbc6bdc8cbccc7c6c6c1b8afb0aa +aab1bfc6c6c1d2b4bfc6c5d6d0cdc35357627a4a5ca2b9aa5e8f3f5c2f3f +a198979a9ea1a6a79e9d9d9ea1a5a7a9a6a6a9a0a3ac9d945657624e1e74 +5631202122211f1d1a161211131213141514160a160a0315140700012755 +93c3d5e1e8fbffee6c2f2b25282e10212c172824161513121215181a120d +0f13120d1826252734353daca5b8b9b4b1b2b9bab8b3b2b1b2b4b4b4b0ae +b3b5b6b8b8b7b6b5b2b6b6b4b3b4b2aeb2adabadaeadadb0b5b3b1b0afaf +b0b1afb0b0aeacabadaeb4b3b2767574747271706e6d6e6c74716e333a32 +5a9491889e4d264e4b452c33201c1a181c41464a4e3236375471c999aa85 +5996ab908c7c4a3930486a7d313773ef6c338a999a9e9d8f99a0a1a8a6a8 +ada6a5b0a2b4aea8aeac291b1e131a1b212369b9b4b3b8bab9babcbcbec1 +c6c7c5bfbc41201515181a1f3d7ab3aa693f2c2b3f7ea7b6aa5b3524383b +3741493a4f4756422d2b5793c0e0f4f7e7f3e29c89aab3bcbcb89a70607d +3f0f18120f202d2b2a4250a6fff7984695f0e6e9e0c1b3b0a28c887b6a5c +5a636d5b5853556584abc4c0bfc2c5c7cbced1674a5a487bb5cdd3dbe753 +21312b2a354878d5cad0dfdaced4d1c5c7d7d4d3e5ef913f212135371e22 +304d5280bbbeccd8e1d3e6d7e1d9d9d8d3cbc6c5cbd3d9d3d3cec7c1c5d1 +dcd5e7cbc2cbbfc8dfded3d1905d658b6c8fe7d8e78276716f4ccce0dfdc +d8cfd5cdcbcfd7dcdcd3caccc9c9d0d8d8cec6d3bdd5ded2dbcdd0d46866 +67724364a9ac9b548e4a70495fc2bab3b4b6b7b7bcbabbb9b8b9b8b9b9b3 +b3b6adafb8aca15f5f66521e74532e18191817151310100e100c0a06070b +0f161426201f34343843576381b8e4fbfffefff6ce4a152327262d0f2127 +13221e100f0c0b0c0f12140d07060906030e2021242e2a2a948593928c87 +888b8c85807f7e7f81838382808587888a8a898887848888868586848083 +7e7c7e7f7e7e8186848281808081828081817f7d7c7e7f85848341424242 +454442424143445052521b2a34649b978c9e4e264d4a452e3825221d1416 +3e434c52363c3d5b7bd5aabd9b6ca1b295907f4e3c344f7188394179f572 +3c95a7aab1b1a7b0b6b6bfbdbdc4bec0cfc1d0c7bdc0b9332223171d2126 +2977d4d5d4d4d6d3d2d4d2d4dadfe4e2dfd3451d1c2227292b4888c4c081 +59423b4c8cb4c5b96f4a3e545a555f604a564b594b2f1b2c4b5d6b777f7a +9892513d5a6b909e9f88675f83491d26221a27322d2d4c5eb1ffffa2509f +faf0f3eaccbebeaf9c978a796b69747e6f6c67697b9ac1dcded9d0cdd1dd +eff78659491a345c6e7793ae2604262a2c3a4977d6cedef6faeeefe3d2cf +dbdde9ffffe5a7959eb5b99d9ca2b1a7c5ece0dee3e5d9ede6f2f3f4f2ed +e5e0e0e6edf3e9e6e1d5cfd0d9e2daecd2ccd9d2def9faefeda97477997a +a2fae8f18c7f7e7f65e9fefdf8f0e3e6dcdbe2ebf3f1e8dbd7ceccd2dfe4 +e1dae8cee2eae2eee0dfde6d6d6d7d4b66b1c8ba6d9c506f485ec9c4c8cb +d0cfd1d1c8c6c5c5c5c6c7c8c4c4c9c0c7d0c3b4706c725e2a805e392324 +21201e1c18140b0e13171718141316163545608fabc1dbece7eafeffffff +fbffffe365303a36313314232b1424201211131216191e1e140b0b0a0802 +0f201e1d20140968545c574f4b4c50514c474645464849494745494b4c4e +4e4d4c4b484c4c4a494a48444b464446474646494e4c4a494848494a4849 +4947454446474d4c4baaa8a4a09f9ea2a5a7a7a09c8a712a272b9c321e0c +4b67044449472c3123251f1b1c464b50522e290f2f8bbb19051563d56205 +001b1a0f486c99973d134ee028176d7990a3a89fa9a2999a9da0a19fa295 +978994a6974318131d0f161a171564918a86898a8787898c8e919497999c +9b1d0f2229221e29557cc4a3534a3729537cb2cbc6b2d9f3fffffcf9e8e0 +d9cfba9e888aabd1e3e8edefedf1c16c433d3b494f596168779b58182729 +2737413f3929546a7c857a5887d7cfd9e1dae1eae0d6d0cbbfbab9c3c8bc +bcbeb7b2abadafadada9a5a4a7b1ba8490645191c1e6f0f1ec4b2a362b24 +252066c6b2a6aebccadbcdd5ceb1bed6c87c1e000b0d000016231b4d88a7 +bdcad3d7d7cdd6c5cdc7cec2c1bfbebfbebebdc7c8c6bbb1adb0b6c7dac6 +bebeb4bbc0d0f0fb70505d8b45b2f8f4f54c656c5737c9d5cecfd3d1c7d0 +ccc3bbbabfc6cbb4b1afb0b9c5cfd0ccbabfbdcbe1e0e6cc397556933461 +bdb1b5478930762d46b3a9a2a4a8a6a29fa09fa0a3a4a6a7a9aaa6a9a6a2 +a39c9955545a3a2377623622232526252322211b191b191b1b1b1b17160c +0e070412050002143775abc9dfe8fcffffa6352a242c22152a3022292613 +1415161513110f0f0b0c0e0d10273d2b27343358b3adb7b9b5b1b1b8bab9 +b5b2b1b2b4b5b5b1afb3b5b8bab9b7b4b2aeb2b3b2b4b7b7b4b4afadafaf +adadb0b4b4b2b1b1b1b2b3b1b2b2b0aeacadafb1b1b17776767675747271 +6c6e6c74736a32383dae45311e5b75104e524b2d3021201d1a1d42474a4d +2f301c429dcd260d1a6ae3761a0c302d1e5375a29f4e2b71ff5339898fa1 +b0b3abb8b4afb3b6b5b1abb0acb09ea6b5a3491c161e12191f1e1e6e9f99 +979a9b99999b9ea0a1a4a5a7a7aa301b1b191115336992d09b402e201c4f +7ea7a27c414545493f3e4742484e4a4231242f619dc7e3f3f4eeedcc918c +b0bab8b2b1aaa09eaf6016211e1f324040413a677e90978c6998e8e0ebf3 +eef5fdf6edeae2d9d1d3dae2d2d5d4d0c8c4c3c5bebec0c2c2c4c5c78588 +553f7dadd2dde0dd3f23322c2d34337ee0cbbdc4cfd7dfced9d7bed0e9de +95390f2b301f273a3a2d5e98b3c5d1d9dbdcd4dfcedad5dccecdcbcac9c8 +c5c5d2d5d3ccc3c1c6cdd8e9d7d0d1c5c7c8d4f0fb72586da158bafffcff +59727a6746d9e4dfdfe5e2d4d3cfcbccd0d8dfe5cccccbccd0d5d7d5cec3 +d7d8d8e4dde8dd4c7f59872a65c1a7a8428b3b8a4562cec3b8b8b9b8b4b4 +babbbababab9b9b9bab6b8b5b1b2aca85e5a5e3c23775f331a1b1b1c1b19 +1818171814110e0f1115171e1c22202231354b5453689bcdeefffcfff9e6 +861d20232a2114282b1e23200d0e0e0f100d0b090a04030401061d372724 +2e2745988c93928d87878a8c86827f7e7f818484838185878a8c8b898684 +808485848689898685807e80807e7e818585838282828384828383817f7d +7e80828282424344444544444240434450534e1a283fb84c37225b76104d +514c2f3526262016173f464c5133362249a7d93620307dee7d1f10333121 +577ca9aa563577ff5942949db1c3c9c3cfcac4c9cccac8c3cbcbcebbbeca +b357271d23171e2324237ab9b8b5b6b5b1afb1b2b4b8bdc0c2c5bf361b23 +2623263f749fdeb05645342d5d8db7b28d555d5e655d5a615855554d4437 +241c3452646e798086947e4b4563778e959999979db66b242f2e2a394542 +444475899ba19673a2f2eaf5fdf9fffffffbf9f2e8e1e2ecf3e7e9e9e4df +dadadddcd8cecaccd6e6eaa395420f3454718198a61509292e343b3780e1 +d0cbdbeff7f8e0e5e0c7deffffd8927ca2ae9ea5b4aa93b8e5eff3eee9e4 +e0dae8ddedeff7e8e5e5e2e4e1dfdce8e8e4dcd1ccd1d3dff0dfdcdfd5dd +dfedffff896b7daf67cdffffff617a85765bf2fffbf8f9f4e4e2dedee0e7 +eef3f6d8d3cfd0d8e2ecebe3d4e3e3e8f7f0f7e7528860933368cabfc456 +973f894565d7d2cdd1d3d0cac7c9c7c7c8c7c7c7c8cac6cbc8c6c7c3bb6d +686a492f836a3e252624252422201d14161b1e1f1d1a1917202b45607ca5 +bbe1e8d6d1e6fbfffffbfffff89e3738353527192d2f1f25220f10151617 +171713110b080503051e37241d200f246d595957504b4b4f514d49464546 +484a4a4846494b4e504f4d4a48444849484a4d4d4b4d484648484646494d +4d4b4a4a4a4b4c4a4b4b49474546484a4a4aa8a7a29f9e9da1a4a5a8a19d +8c6827211484536f3d371a0c414e4c26261c22192121484c515028202646 +cce1243d59b2f4cb6e27201c3784a2eaf88f256be014186c6a8fa9b1acb0 +aea6a2a8a9a3a8aca2b0a1b1bba70a1c1421141a2017136cbcb5b2b4b6b5 +b6b9b4b6b9bbbec5d0d81e10252e2b2f4881a482593d334176b6c8d9cbb7 +b8e5f7f6fbf6ebd6dcc5c09c8c8391b8dcebeff0eef6dc9556444243525a +6b7e91a2b867101f201b2529231f3cc0d9cacdd5bec4baaeaeb1aeb4b7ae +aba7a29a96929291888b8f8d89848384898985807d7f858da5c45b5299c0 +eaf6f8da322f352c29241672c9b198909ca9b2bbc4b1a1b39b4e18000008 +060009152e5580b0c5ccdad5dcd4cdcebfbfb1b7babdc4c9ccc7beb6bec2 +c8c5bfb6afadb0c3c8cbc4bbb496062a5726516a894c7483838926545c40 +52dccdbfc0c7dad0d2cfc5bcb9c0cdd9c4c1b5a8a9bfd5e0e1cfb69eb0bb +c4e0c838884c92417de2bba53e904f6a1a5db5aeabafb3b0aba7a2a2a2a3 +a4a4a3a3a6a0a2a7a19b968b595d612d3779662c1b1c2022232323221d19 +1a181a1a1918151c031011000f0809040a21558dbadde8fbffffe6543433 +35132034332c211e13141415151514140e0d10100e122a412e25333180b6 +b6b6bab6b2b1b7b9bbb9b2b1b2b4b5b6b3b2b5b6b9babab7b4b1a9adaead +afb4b5b3b5b1b0b1b0acacafb3b3b2b2b2b3b4b5b3b4b4b2afadadaeaeaf +b073737475747371706a6f6d7575633133269666824f4728184b57502725 +1a1d17202244484b4b29273359def331465eb9ffdf833f352f468fabf3ff +a03d8eff3f3b8880a0b6bcb8bfc2bcbbc1bdb5b4bab7c8b5c1c8b00e1f13 +201319211a1874cbc6c3c6c8c7c9ccc7c9caccced5dee72f191b1913204e +93bc945a301d2a65a8b6b78c5834454339434549425446442822223b74ae +d1e5f1f0f8e1ab8796b7c0bcb6bcc2c4c4cb6d0e191513202827294dd4eb +dcdfe7d0d6ccc0c0c3c0c6cbc1c1beb8b1aba9a7a89da2a4a39e9a98989a +9a9c9d9b9a9897a5bd4c4186add6e3e7cd2527302d2f322989e0c8aea5ad +b7b9c1ccbdb2c7b2683317162828232d35456691bfd0d5e0dbe1d9d4d7c8 +cbbfc7c9ccd0d5d6d2c9c1c9cfd5d6d1cac5c4c2d5dce1dacec4a10b2b58 +2958789b5e7d8a8b9434626b5162ebdccfcfd9eadedad7d2cfced6e2ebd6 +d3c8bbb9cbdde6e7dcd0b8bdbebfdfd4478f4980317be2b49d3e975d7c2c +6ec1b6b1b6bdbfbebdb8b8b8b9b7b7b6b4b7b1b5bab4aea89c6263652f37 +7963291314161617171819191813100d0e0f121521112327162b334f524a +5582b4defafafffaf6cb3e272e32101e322e271d1a0d0e0d0e100f0e0e09 +0607060208203b2a212c226999938f928e8887898b88867f7e7f81848585 +8487888b8c8c8986837b7f807f8186878586828182817d7d808484838383 +84858684858583807e7e7f7f80813f414243444343413e42455155461925 +28a06d88534729184a5651292a1f231a1e1d43474d4f2d2d3960e8ff4157 +72cbffe6884338334993b2faffa84794ff4541938eb0c9d2d0d6dad3d1d7 +d5cdccd4d4e4d0d8dbbf1a281925181e251f1c7fe2e0dddededbdaddd8da +dee0e5ecf8fa361e262a29355e9fc6a06c44323e77b7c6c89f6c4b5d5e55 +5d5f6052604d4629261c22436170747c83958f6346567386969da9b3bdc5 +d2791c27251e272d282b55dff7e8ebf3dae0d6cacccfccd2d6cfcfccc6bf +bcb9b8b8b0b4b9b8b3afadb0b8b4aaa5a5abb8bac1c5350d394f7387a199 +02122c323b3d308fe6d0bcbacbd4ccd1d9cbc4e2dca3847b8ba3a6a1a7a4 +a2b4d6fafef6f6e7e7dddae0d9e1d9e1e0e1e8ebefe8dfd7dfe2e6e6dfd5 +d0ccccdfe7eee8ddd4b31e3d6a3a6885a96c8e9a969a3765725b72fff3e6 +e2e7f7e7e5e2e2e0e3edf7ffe4ddcfc2c6dbf4fefdedddc5cdd1d3efe04e +99528e3c80eac6b24a9d5e7c2e75cfcbcbd0d6d4cdcbc6c6c6c7c6c6c5c4 +c7c1c4cbc5bfbcac716f713c43856e341e1f1f202121201e18161a1d1e1c +181413241c43616b98b5e2e6cec5d7effffffeffffffde5541443d172337 +322b1e1b0f10141517191a18100d0c070407213b27181c0b476d5d545551 +4c4b4e504f4d464546484a4b4a494c4d5051514e4b4840444544464b4c4a +4e4a494a494545484c4c4b4b4b4c4d4e4c4d4d4b48464647474849a9a8a4 +a09f9ea1a4a4a8a19c8c5e251d1c6d8c4a5d4c1c13506563332f272f2426 +244a4e5351251b1839c4cb144e72adeced62181a1f637a9ecbf7b03b6ac3 +392183719bafb8b1a1ababa3a8aaa9b6b3a5a4b3b2a5a6061f1628181c24 +191672b7ada9aaabaaabadabadafadadb2bdc7331a22303d4c5f8a915143 +4a4362a9d7e2c8b0c0e0f8fcf9f0e9d6d4c7aca18986869dc6e4f1f2f1f0 +f5be6c46494444556c86959da4b56514221f1a1e1b141146e0e7d8dad6d0 +d9e8e1dddcdcdeddd9dad4d1cac7beb6aeaeacada8a9aab2b7adadaaa6a2 +a2a5acbbbc5467a6cce8f0fdc62537342a2c272d96d4c6bdb0a8a2a9c2bb +c4e2b5450000111a07001625204e9eaeb9cecbd7ddcfc2b6bec8bfa7a89d +a0a6b0b6b7afa9969aa1a7aba69b908c98a2aba0a4a37214141d36536360 +571c0000052b3a3c364ed1c2c3c0b0b8abb6b8b8b6b3b0b0b1c1c2baa9a5 +adb8bcbbc3c2b4ac520c062f0c746e8a523d4d5d4a295d63451f76bdbab7 +b7b4aaa2a0ababacacaaa9a7a6a8a8a9b3b2b09e6e475f68264e755e1d16 +171b1c1e2020201b161514151614121113050f1f0e060d050508163e6fa2 +d1eaf5feffff90484f431035463b381b181c1a1716181f272c1a1c21231f +1c24312c243238a0b4bcb7bbb7b4b2b5b7bbbcb3b3b2b4b6b8b5b4b9b9b9 +b8b7b6b4b3acafafacadb2b3b1b5b3b2b3b0ababaeb1b1b1b2b3b4b5b5b4 +b5b5b3afadacacaaacaf74757677757471706a6f6d7678582f2f2e7f9f5d +6c5a271d596b67342d252a222525464a4d4c2622254cd6dd215777b4faff +77302f327285a7d4ffc1538dee6444a087acbcc3bdb1bfc4bec1c0bbc2c1 +babcc5c1b0ac081e142313181f171576c4bdbabbbcbbbdbfbdbfbfbdbdc1 +ccd7411e1419233a609aa76546412e4992bab9895748484c4441444c4954 +4f392e191e2a518bbed9e6edeefacf8f86a4bbbeb8bfcfd1cac2c669121a +1712181a181b57f4f9eaece8e2ebfaf3efeeeef0f1ededeae4e0dad3c9c3 +c0c1bfbdbbbfc4c9bcbec1c1bebcb8b7b9b3455794bad5dfeeb8182e2e2a +32323daae8ddd0c2b9b0b4cbc8d4f7cc5f16152f38241f36453c62afbcc5 +d7d1dde1d4c7bdc6d1cbb5b8adafb5bdc2c2bab4a1a5aeb7bdb9aea6a2ad +bcc5babbb6801c181f38596f706725050a1039484b455ee2d3d4d1c2cabe +c5c6c8c9c8c5c2c0cecec4b5b1bac4c8cad8e2d4bd57070337167464733c +334c5a482e6871552e80c2bab7b8bab7b6b6bdbcbdbdbdbcbab9bbbbbcc6 +c5c3af7e4f636a264e735b170e0f0f10121313151714100c0a0a0a0c1017 +0f1e33241e31444d4b517099c6ebf8f9f5faf17d38423d0d304136331614 +1614100f131a21261515181813121b29271d29288894958d938f8a888789 +888980807f81858787868b8b8b8a898886857e81817e7f84858386848384 +817c7c7f828282838485868685868684807e7d7d7b7d8040404443434241 +413c424551573e17213089a663715b291e586b6836322a30252320454951 +502b282b52e0e731688bc6ffff7c3432367589aedbffc95d93f46a4aa894 +bccfd9d5cad7dad3d7d7d3dcdbd5d6ddd6c2ba142419271719231a1a7fd5 +d4cecdcecbcbcbcbcdcecdcdd4e1e74a27252d3c5072a7b26e5552415ca4 +cccb9e6d6161665e5b5c615a61583e31181b1d2f536d777a7f899e814d4a +6b838d99abbec7c7c4ce752029241d221f1b1d5ffffff6f8f4eef5fffffb +fafafcfcf8fbf8f3eeebe4dad4d4d4d5d2d1d4dae1dbd8cfc8c9cdd6d5cf +b6281c42586f83ab89001d303642444ab3f1e5dfd6d5cbc6dcd9ebfff89c +64769fb2a29aadb69da9e3ebedf6e7ebeadacdc5d1e2e1cfd1c4c2cad0d8 +d6cec8b5b7bfc7cbc7bcb3b0becbd4cbcbc58d29232b44657b7d76341010 +143a494e4c6bf2e7e8e1d0d4c5cccfd7dadddad8d5dedcd0c1c1cddce0df +e9efdfcd6a1b14441f806f83493b526553346a7155338ad5d4d3d4d2c8c1 +c1cbcccdcdcccbc9c8cacacbd5d4d2bf8d5c6f77325a806623191a191a1c +1d1c1b161517171816120e0e18193b687082a9d1ddd0c7d1e3f6fffffcf6 +fdfd91555c4b1437473c371a15181817161a212b301c1c1d1c15111c2723 +15180f64655e5156524e4c4c4e4f50474746484b4d4c4b5050504f4e4d4b +4a4346464344494a484e4c4b4c494444474a4a4a4b4c4d4e4e4d4e4e4c48 +464545434548adaca8a4a3a1a4a5a2a7a09b8d5222165fa6001110833b16 +344f50201b151e13221f454c56572c201a49d4ce0d2260ade6b0260c2614 +33418ff8cd581089c805168e6f9ba8b1a9838a998e8f939aaea3ae9cafa5 +afa2122a19281b1f25222272bcb1adaeb0adadafb8babab6b1b1b7be3c21 +2432485d667e6666453261a5c4d6c3afb2d9fffffbf9e2d8cbe2a4938486 +818ba7cde7f1f5f6f2e59b50414b41415773909da2a9b9661321211d201f +1c1e6ae6cec6d8d8d9e1ced1d0d0d4d5d6d9d6d3d2d1d1cac2b9aeafb1b0 +aeaaa9a8aeaeada9a6a6abb1cc8a5583addce6edffab253e33282d2c2fa4 +c8cbd7d5cec2b6b6b5cfcb6000000a0f110d101f3c5e91b4bad1d7cadddd +c8ba95ace8e1cfcec1c1c1c6ccd2d5d4c0bab4b8c1c4bdb2a8a4a2a094a8 +b687081f30444d61626133111f1c47444c4553d8cdc7c1b9baaaabb1b9c1 +c4bdafa6adb6c0c0b8ac9c90a09d9699a6431429363c5f6865543e280a25 +3a2f4f3738829393969792898589929292908e8c8b8989938f99a2aa8724 +26535f18586b55191a1a1e1e202324211e18161517181714130c0f0d363a +020a0001080e244a86c0e8f2faffffd3635a491a4a5647431c1a1e1c1a1a +202730352a292c2f302c29292a27354fb6b2c0bfbcbab8b4b5b5bbbdb6b5 +b4b5b7b8b6b5bcbbb8b5b4b5b6b7b0b2b1aeafb5b8b6b4b3b3b4b0aaaaae +aeafb0b1b2b3b4b4b2b3b4b2afacababa9abae78797a7b797774716a716f +75784e2e2a73ba13241f9146203d555421191319112120414850522d2727 +5ce6e01a2b65b4f4c43b243b27424c98ffd56928acf33037a985acb5bcb5 +939eb1a8a9a9acbcb1c2b2bfb2b8a61125101e11151a191971c6c1bdbebe +bbbbbec6c8c8c4bfbfc4cc4620151a2e4b658c7a7749274a86a5ab7f523a +4653454047454f55783f2e1a1d1f35649dc9dde7edefeeb98492b3bab8b1 +bbcfd2c9c2c6680f1919171d20202878f8e0d8eaeaebf3e0e3e2e2e6e7e8 +ebe8e6e3e4e2ddd3ccbfc2c2c2bfbcbab8bdbfc3c4c2c0bcbbc98147719c +cad3dcf29e1a342c2732343cb6dadfe9e6ded0c5c5c6e6e67c1c1d292e2e +2a2d3b5875a3c2c6dcded0e1e0cbbf9cb6f3f0dfe0d3d2d2d6dbdfe0dfcb +c6c1c8d3d7d0c7c1bebebeb3c3cd971224334751696e6f3d1a282856525c +5665ebe2dcd8d0d2c3c2c5cdd4d6cdbeb1b4bcc3c6c3bdb2aab9bcc0c1bd +4b11253c435b58483931260b2a443b5d454289959395989897999d9f9f9f +9f9f9f9e9e9fa6a2abb2b7932d2a535f165668521312121212131314161a +16110d0c0c0c0b0f0c1617444b132831434a4e5e7ba9d7f3f6f9fef9c24e +473e144351423e1715191715151920282d252223262622202125202a3e9a +8e969193928e8a8787888a83828182868788878e8d8a8786878889828483 +8081878a8885848485817b7b7f7f8081828384858583848583807d7c7c7a +7c7f44444847474544413b4346505933181e74c31a2a249248213c555523 +1e181f141f1b40475456322d2d62f0ea2a3c79c6ffcb40283e2b45509fff +e07132b2f9363eb292bcc8d2cdacb7c9bfc0c1c4d6cbdbcad6c3c7b1192b +151f12161e1c1e77d2d0cccbc9c4c4c5cfd1d1cfccccd4d9522e28324763 +7799838155375a96b5bc946753606f605b5f5a5f618245321e1a141c375b +717a7e86909b71465a828d9298adc4cac8c6cf751d2826212624232a81ff +ece4f6f6f7ffeeefeeeef2f3f4f7f6f4f3f3f2ece5ddd1d3d6d6d3d0cecf +dad9d1cbcdcfd8d6da7c223144646a80b17200283337484b4dc4e4eaf7fa +f7ead8dae0ffffbd6e809dabaea8a3a9bcc5d1dddef0eedceae7d2c5a6c2 +fffff8f6e7e2e4e6eef0f2f1ddd6d1d7e1e5ded8d7d7d6d6c8d6dba41b2a +384c5a747c7c49232d2853525c5d71faf5efeadedccac8ccd8e3eae4d5c5 +c7ccd4d6d5d1cac1cfcececdcd5e26364a4d69655a483a2b102d43395d46 +4b99acafb4b4aea4a0a4afb2b2b2b1b0afafadb5b0b9c1c7a33c365f6b23 +63735d1f1d1d1c1c1d1e1f1e1b1918181a18140c0c0c1e3073906b96b5cf +d2caccd7edfffff9f4f8fdd26d674f1e4b5748421b191d1b1b1b21283338 +2c2928292723211f21161822735c5a535555524e4c4c4f514a4948494c4d +4d4c53524f4c4b4c4d4e47494845464c4f4d4d4c4c4d494343474748494a +4b4c4d4d4b4c4d4b48454444424447acaba7a3a19e9fa1a3a99f978c4721 +140e7f6d978b551a0b324d542a28212b221a173d48575d34291b47bd9817 +2c3f59420d0d18291b0f50529b22141a86bf120f8f619ba6ada778859688 +8f9395aea2b1a7b0b3d79814311f29252a2a323168c2babbc2c8c9cbcfbb +bdc0bfbec0c5ca2f212c364d686e7f7c583c53a3e7e3c4b2c6e4f0fff9f6 +e7d4c4d4ea8184778c7e8fafd2e8eff6faefc77a4444483f466a80939fae +b7bf5f0f1b1b181b191a2145d2dad9dfddd4ccd9dfd9d4d8d4d0d7d2d0d1 +d1d2cdc7bfb0afafadafaeb0b0a8a9a8a6a3a4a9b1d1616096b2e1e7efff +8a2e3c332d302c25adb7b8c5cad5d5bdbab489360000080d08040e24395e +8fc0b7cadfd1dae1ada99e496cdcd1cecfcccbc6c3c3c8cfd4dbcdbdb8ba +bebcb4ada7a3a59aa6ad7f1018424a635d674e291121321b3a4d1b4dd4e0 +cbcad6c9bfbcc0c8d2d9d8d0c7b5b8c2cbc5b5a6a597938f9eae3c14253b +46576d6d523f1c1c384c42443a3b9da6a4a7acaba8abb1a9a8a6a3a2a1a2 +a29caaa4afbbcca52220585c1562644b191c1d1e1e212223211e16141417 +191714160e160b557010070006090711306eaeddf2fdfffff9905d382153 +5a4b411a19131417191c1e1f1f272425282e302e2c2c2e3472beb3c5c5bc +bcbcb7b5b4b9bdb9b7b6b6b7b8b6b5bdbab7b5b4b5b8b9abadaca9acb3b8 +b8b4b4b5b6b1ababafadaeb0b1b2b3b3b2b0b2b4b3b0adababaaabad7778 +797a77756f6d6b736e7479432d28219380a89a6324133851552a261f2620 +1a18394451583530285ad0aa25354460502122303e2e1e5b5ba42a2532a9 +ea3e30aa77acb3b9b5899ab0a4a9a9a6bcb0c3bcbfbfdf9b1128131b151a +1c242262c6c4c5ccd1d2d4d8c4c6c9cac8cacfd2321e1e243b5c6f89885e +343e82c0ba895950564c49383c40475075952b2a1226224177add1e0e8ee +eed8a58aa2b9b9b7bbbec8cccdccc75f09131312181a1e2b53e4ecebf1ef +e6dfebf1ebe6eae6e2e9e4e2e1e2e2ded7d0bfc0bebebebfbfc0b8bbbebf +bebbb9b9ce575285a2d0d5dff27e22332e2a323432bdc8cad7dbe4e5cecf +caa35315122b2e2921283c5074a1cec1d3e6d6dde4b0aca24f76e7e0dfe1 +e1ded9d4d4d8dce0e7d9cac5cad0cdc9c8c5c3c6bbc6c8921d20464b6663 +70573118293c27485c2e63edfae9e8f6ece1d9d9dce3eae7dcd2babbc3d0 +d6d0cfd2c2c1c8d0ce4b1522414a515b4e332f172242564c504547aab2b2 +b6bcbebcc0c4b5b3b2b2b3b4b5b5afbab0b6becba11e1c5658125f5e4513 +141312121112131619160f0c0c0d0c0a110c19115e7c1d1f2a404b4d5366 +92c4e6f7fffffbed78452b194953443c15140e0f121415171717221f1b1f +232725242726275fa18e97959394928d8786868a86848383868788878f8c +898786878a8b7d7f7e7b7e858a8a85858687827c7c807e7f818283848483 +81838584817e7c7c7b7c7e4343474645413e3d3c45454e592a191d259c87 +af9f6426153852572c2b242c2318133845555e3a362e60d7b4324658725b +2827344132215f62ab352d3caff04135b182bcc6d1cfa3b5c9bcc0c1c0d6 +cadbd1d2cfeca4182b151b161a1c242566cfcecfd5d8d7d9ddc9cbd0d0d1 +d4dbdf412f353c53728195946a434d93d2cc9b6d666e6566535454575b7d +9a2e2c16220d1a3e5f73797f8a9488604e708d949baab3c2c9cfd1d26b17 +20201c1f1f212d5cf0f8f7fdfbf4edf9fff9f2f6f2eef5f2f0f0f2f2eee7 +e2d2d2d3d2d3d3d4d7d2d3cbc6c7cbd2d0d94d253d43666980b354082a35 +3d4b4b45ccd2d4e5edfbffe8eef3d6976a799fafaea3a1a8b0c9dfe9cbdc +eedce2ebb7b3ab5b82f9f3f3f5f2ede8e4e4e7ecf0f7e9dad5d9dedddee6 +e9e9e9dadfdba02323474f6d6f81683c202c3b25485f3571ffffffffffff +eddfdee7f3fefef2e6ceced7e4eae5e5e7d5d1d3dbdd5e29354d555d695e +43391d2241554b504b53bbcccfd3d6cfc7c5cac5c7c8c5c7c5c6c6becac0 +c6cfdbb22d2a61661d6a6a511f1f1e1c1c1c1d1e1e1d1816171a19120b0e +0d202787b86b81a5c6d3cfced3e8fefffdf7f4f8f998673f26545b4c4219 +181213181a1d1f22222925232427282622231b144177595953555756514c +4b4d514d4b4a4a4c4d4d4c54514e4c4b4c4f5042444340434a4f4f4d4d4e +4f4a4444484647494a4b4c4c4b494b4d4c49464444434446aeada9a4a19d +9d9da2a99e958b3c1f115c7f656d718a171027414928281d211c19143843 +555d34282b49bb601b3f2b3f67131c141723195e6dc1602b1bafb3052d9d +5caab8b6b388a3ab99adac99b6b4a4a6a6a58f531d2c32373b4137453f56 +6660656e757677797c7c7e7f8285898c24202d395c868c94823d458fbbc7 +b293c1e2fff8fffcfee6c3aee8e0637b7c8d849abcdaeaf0f6f6e8a85e43 +453f405681949ea5afb5b34d1823221e1e1b1e282ebfe2d9c8cdced2d3d8 +cdc9d9dad6e0dcdbdcd9dad5d4cfcdc3b9adaaa9aeafacacaaa8a6a7adb6 +b8516b9dbfdfeaf1fb6835333636322b43d6c4bcc0bfcfd3d7ce932f0000 +0e0e0112121a436b8daec9d1d9cdc8bd9374b4b63159efd4dbdbcdcdcbc6 +bfbcc0c3d4d1cac3bbb3aea77d7c7c847f817f562f0f253850576b562215 +193722415c1c48b3d4cfcdceb4cfbfc3c4c7cdd1d3d3d1c5c2c2ae908695 +878683879d362022323d5a75695e3d282b273248433935a9a4989498a2a6 +abaeb1afaca8a8a9abaea7b5b0c0cbe0cb4d24645f22776841151919191a +1e1f22201b13101115171611131b100c77a0350b030909060a1f5692c9ed +f3fbfdffd572292f595b4b3a15140f101415161412111c1c1f22272c2c28 +30322b8fbcb8c6c5bfbec0bbb6b2b7bbbcbab7b7b7b8b6b5b9b8b8b8b7b8 +b8b8abacaaa6a9b0b5b6b5b6b8b9b4adaeb3afb0b1b3b3b3b3b2b0b2b4b4 +b2afadadacacac797a7b7b78746f6b6d756f71783a2c267193787e809821 +182b424a28261b1f1a1914343f4f58352f385cce72294830467527312c2c +36286976ca683c33d2de2e4cb670bcc5c2c39cbbc6b4c9c4adc4c2b6b8b3 +af935217222425272d23332c4a6463666f747677797c7d7f82858a8d8e20 +18253159879298803128658a927d4c565a6247443c4b4b474d9c9b182619 +272e558dbfdbe5e8ecebc09798b1b7b9c0c7c5cac8c8c3ba4b121b1a181b +1c22323cd0f4ebdbe0e1e8e6ebe0dcebece7f1ecebeae9e7e5e1dfdad3c6 +bcb7b8bbbebabcc0c1bebdbcbdb3465e8cadcdd8e1f05f2b2a313334314e +e4d5cdd2d0dfe4ebe6ab4b141d323325323034587e9dbbd0d6ddd1c9be93 +74b6ba3965fce5eef1e4e4e1d9d1ccced1e0ddd7d0cbc4bfbd9a9ea0a8a4 +a39d6d3d1929395059705b24181d3d2c4f6d3263d2f8f6f9fee6fee4dfd8 +d7d9dddfe0d8cac7cdc9bdc7ddc9c8cccac95027233a4454634a3f2d2634 +313b4d484346c4c9c6c4c7c7c4bfbcbcbab8b7b8bbbdbfb4bcafb7bac7ae +32165c571a6f60390d0f0f0d0e0e0f101316120b090b0b09070b170f0d7b +a83f1d243c4b4f525c7da8d2f3fdfffff7bc5717244d514433100f0d0e0f +100f0d0a09171715191e2323222b2a1e7a9d8f9494939696918884848889 +878484868788878a898989888989897c7d7b777a8186878687898a857e7f +8480818284848484838183858583807e7e7d7d7d4545494744403d383b46 +454d5a211a1d749c7f858599231a2c444c2a2b20241d19123540535e3a35 +3e62d57c36574356802e36302f3a2b6d7dd173443dd8e43251bd7bcad8da +ddb7d5e1cfe1dcc6dedcccccc4bb9e581b232423262c24332e4c69686b73 +7978797b7e7f83878c90969a312d3c466c99a0a48d3f3a799fa48f5e6a70 +79615f55615b5254a09e1c2b1e220d1e456674797f8a9474535d80919aaa +bdc1c9cacdccc458202827222221253445dafff7e9eef0f6f5f9eeeaf7f8 +f1fbf9f8f7f8f7f4f1efebe3d9cfcacbced3d4d3cdc8c8cbd3d0b934293c +495f6a82b036122138464b4760f1ddd5dee0f6ffffffe7946d88acb7adb9 +aca2b5cadbe5e0d9e0d4cdc39b7ec2c64673fff5fdfff2f2eee7dfd9dbde +eeebe7e0dbd4d1d5c4ced2d8d0c8b97f461b2a3b5868866f311f203d2b50 +743f78eeffffffffffffede3e3e7eff5f5f3ebdddae1dcd0d9ecd9d6d5d3 +d6613a35454e60715a4f382b33303a504e4d56d9e3dedbdbd7cec6c5ced0 +d0cccfcfd1d1c5cec1cacddcc445256764257a6b44181a1a1718191a1c1d +1c17121416151008091817219ed97d7195bcd3d9dcd9e6f4fbfff2f3f9ff +dc7a2d325b5c4c3a141310111516171515141e1d1d1e21262622271f0b5b +7159555154595a554d494b4f504e4b4b4c4d4d4c52515151505151514445 +433f42494e4f4e4f51524d46474c48494a4c4c4c4c4b494b4d4d4b484646 +454545b7b6b2aea9a5a3a4a3aa9d9289361e10956e07111c70040e30464f +313020211c1d16384151582e213054f17a212f4fe7e36228241e1f4287ae +f8e55903c08e0b3a9847a4b3a5a683a49d88aba6809ca5b1a89f80090343 +4048485156435346473a33333736302b2a201c15120f0f0d0d282027376d +a8afab4b4f46556d6677bdf4fcfff1fff0ebcdb29af5cd507484858fa4c6 +e3f0eff3f0df8f4b43443a4267879eacaba8a7a742131d1e1c1d1b213046 +b9e0ded0d9d5ddd3d4c3bed4d7d1dbd4d4d6d5d7d7d9d9d0c9c3bbb7b4b3 +b2afafaba8a7aab0ba974f729fcbdaebf0f852362c393e34285defccc0c4 +bdc4c0d5a426000c1a00000012203c7093add3cbebd3bbcf78175fa4b319 +47f1c8d2cfd2d6dad4c9c0bec1c3d0dcddcfbaada20801000000050e0013 +1a2f533c6469501c241c263d2243271937352a2529339ec6cbcac4c2c5cb +d2d8c9c5b98a4c2c383b3b363355121b1b233a566c3f6127283b313f3a3f +3d2f795746455d819cb0b7b0ada8a5a4a7acb2b3c0bed6e0f7f8881b5f5b +2e89743d131818191a1c2124231c131112171918130b25030d8ebd5b1400 +07070508123d6fb5e4e5f5fbf7ff8e29436361523716151c1a191617181a +1b191f262b2b2927243131219eb6bbc4c1bfbfc2bdb7b1b6b9bebbb8b7b7 +b8b5b5b4b6b9bbbbbab7b6b6b6b2adadb4b8b8b6b7bbbcb7b0b1b6b1b2b3 +b4b5b4b3b2b0b3b5b6b3b1b0afadadac82838383807c75726e766e707836 +2c27aa821a22297b0c1331464f2f2e1e1f1a1d16343c4a532f283d67ff8d +2f3854eef1763d3c33325192b7ffed6a1be3b93459af59b4c0b4b698bebb +a6c6be94aab3c2b9ac880c013a3439353c412e3e3137312e2d2e2d262120 +16130f0d0d0c0c0a1c16253d79b6b7a9392a10152721336a7d6a603f4339 +44414749b7950e2320233e67a2cfe5e9e6eae9b192a5b8b3b8c7c2c6cdc7 +bbb1ab400d1516161a1c253753caf0f0e3ecebf3e8ead6d1e6e9e2e9e2e2 +e2e3e3e4e5e6dbd6cec8c2c1bebebec0c1c1bfbdbdbd9143648fbac8d9df +ed492f23343b362f66fdddd3d6d0d6d2ecbd41002e3e202324333b5584a2 +badaceebd3bace77155ea6b62053ffdae6e7ecf0f1eadcd2cecfcfdce9ea +dccabcb728271d24262b2e10252535543c656a501a211b2a452d5540365d +615c5e6675daf0e8dcd1cdd1dce3e5d5cdccb18b889d939290868f362b22 +3043535c23461a27453b42393f4448a89b999cacbfc7c4c1bbb9b7b5b6b9 +bcbeb8bbacb8b5c2bc5400514d227f6a350b0e0e0d0e0f11121617120b0a +0d0d0b08021f000c8fc061201931455054556788c1ecf2fffff2f4731535 +5655483011101a18141110111213141a1f22222321202c2a14899590918e +93979893898383868b8885848687878785878a8c8c8b88878787837e7e85 +898987888c8d88818287828384858685848381848687848281807e7e7d4e +4e4f504c46413f3c47444b5a1e1b1dad8b21292f7d0f1633485132332324 +1d1d1435405159342e436dff943a4767fefc7d424036365496befff87225 +e9bf385cb563c3d3cbd0b5d9d5c2e1d8adc5cdd6cbbc9315063d34363139 +3e2b3d303834322f312e27201f1714111112131215302e3a4d87c1c2b649 +3c282d3f36487c907d75555b4f564e4f4fba961029281a13244e6e79797e +8a9365506c8b909eb9bec8d2cbc2bbb64d192221202121283d5cd4fdfcf1 +fbf9fff9f8e5dff2f5ecf4efeff0f0f3f4f5f6ede7e0dbd6d4d2d4d5d4ce +c8c9cbd0cc9129273852586b83af22151a3a4c4b4275ffe4dae2e1eef6ff +ff905b9ab8a7afaeb4acb2cdd9e4f4d7edd5bfd47f226cb5c53061ffe6f1 +f1f9fdfff7eadedbdcddeaf9faeddacfd45b655c615f5c55293329355646 +77866a2828202d483361545484908f959ca9fffeeeeae2e3e9f0f5f6e5e0 +ddc29a93a79f9c988c9a443b32394a5e693255242d463c47414b545cbcb0 +abadb9ccd0cfcdcfd1cecccccfd3d4ced1c2d0d0dcd66b115e5a2e8a7540 +1619191718191c1e201e1815151817120c0321071cade995687eaacadde6 +e1dfe4f5ffe9f0f8f8ff962e466763533817141d1b1a1718191d1e1b2026 +272525231f2820016a6a5b504c545a5c574e484a4d524f4c4b4c4d4c4c4d +4f52545453504f4f4f4b46464d51514f50545550494a4f4a4b4c4d4e4d4c +4b494c4e4f4c4a4948464645b6b6b6b2aca7a6a7aa97999b75231c042771 +75463328120d26595c35262825272d263c3e4d30291e506be1733d3375ea +f29135251e347b87bff0f88915d9890739b239c3cac7a0798a6d4f8b8e63 +99afa9987f5d142a404c4b4d4a48454345484044494b4d4e50524a48433f +3a342c27301a2c607fb4ba6249546a8699a8c3ecfffff1eaece8d2b68f85 +a37c52758a808dadd3e7eef1f2e8c46c3f4640414c4c85a8aaadb0ae883b +1b1d1919201e1f293dc8dad4cdb3c1a9a6b2a8bddbd5d6dbd9d9dbd9dbd9 +dbd9dad7d6cec8bdb7b0abada7a3adabacc65e4c75a6cfeceaf7f43a3c35 +3a2e2f275cf3d7ca9c97b2b38c23000f0b080e030d2244729fb3c0d7dbda +ceb97c3d4361baae2c6ae2d1dfd2cfc9ccccd5d0c0c9c3c0c3cdd7d3c0a7 +260012110b0512031f1a192a4a61615a2b382736283a3924230010181c07 +0b88cedccecec6b7bebbbfdbc6bd9d2d1c0f1a1b222222051b181f294a52 +5b512321271e28433f4a3039211a0f12709aa6a0b1a0a7aaa6acb3a4b6b3 +49666f8c8b73333e423a636e3618141a17151d1e2127170e151914141a17 +1a0f1a147495832a14080203020b31579ecae7ebf7fffad9294c5d5b4e28 +12190d0e1517151e22122423222124292a27283432b6b8b5c7c5c2bebcb9 +bab8b9b9bfbbb6b5b6b8b7b6b4b4b7bcc0bfbab4b5b3b4b7b6b3b4b8b5b4 +b4b4b4b2aeaaadabafb7b8b3b2b5b8b3b1b2b1aeafb2aeadac7e83878783 +7e797575636c7966252d1b3c8588574032171126575a33242623252d2637 +39462b2a255d7ef4864b3d7bf1ffa54a3d33478a92c8f9ff9a2dfcb43056 +ca4bd3d6d5b18ea58c6ea9a879a9bdbaa88b651728373e393835302d2e30 +343036393b3b3a3c3e363635332f29221b1e0e32729bcdc3561f14172b3f +5274918e70503f3d403e3c34436f4a14262920447ab4d9e8eeebead89a90 +afb8bab9a3b6c5c5c1beb68a39151713161f1f22304ad9eae6e0c6d6c0bd +c7bbd0ede5e4e9e5e5e5e5e4e5e4e5e3e3dfd9d0c8bfbbb7bebbbac3bdb7 +c8573f6695bcd8d8e8ea32342e352c322e69ffeadeafacc5c8a43e182f2d +2a32272e415e88b0c0cbdedad7cbb6783a405fbbb33578f3e4f4ebebe6e8 +e6ebe4d0dad1cecfdae4e0cdbb4626393b352c331f3427212d495f605722 +2e22352b444a3d4427445560545bcffdf7ded6cdc3d5d5d6eed7d8d17f93 +908b8692886b35352832384d48453b1c243025253b3750547e89969289c8 +d3bba7bdb0b9bebac1c2acb2a1253128382c23092a2e2853622c0e0a100d +090f10111b110d0f110a0a0f0c1109151274968733252b3d4e52536277b0 +d8f7fcfffee6be153b4f4f44210d140b0c13120e17180a1f1e1b1b1e2325 +25243027a1978a94909696928f8c8a86868c888382858789888585888d91 +908b8586848588878485898685858585837f7b7e7c808889848386898482 +83827f80837f7e7d4b4e53524d48424041334254490f1d133f8e8f5e4634 +1b14285a5d36292b28282d263b3d4d312f2b6384fb8d56498bffffac4f41 +364b8d96cfffffa237ffba345ace55e2ecefcdabc2a88bc5c191c3d7ceb8 +99701e2b383d3533302c292b2d3331363a3c3b3b3b3d37363535332f2a27 +3426427e9fd1ca62332c354a5b6b8aa39e8060514e514c473b47714d172c +3214112b5770787d8189834f4e778b99a49abacdcecac9c1964621231d1f +2524273653e3f7f2eed5e7d0cfd8cadef9f2eff4f1f1f1f1f3f3f3f3f4f3 +f0ebe3dad2cfcdd0c6c2cecbc9d4511f233953686c8dad0d1d243939433e +72ffeee5bdc1e3f7ea957a9ea9b0beb1b1b5bdd3e4e2dfe8e2ded4c1874b +5374cfc64483fdebf9f0f7f6f6f3f8efdde4dcd9ddeaf5f1e0dc816e8687 +7d6d684449302432577580743539293b324e5e5b6d5b8098a79ca2ffffff +eeebe7dbe7e4e4fce7e9df8a9995938e968c74414235393d565352482429 +352b304a4c666a8e96a09a8fd2deccbad3c9d1d6d2d6d9c3cbbb414f4859 +4e401d363a345e6c3517131916131c1d1e271b15191c13121510120b1c20 +8cb5ad6e819fbfdbe9e6e5deeef3f4ecf8ffffe12e4e605d4f29131a0e0f +1818161f23152624221f22272926212715846c55534c57595653514f4d4d +534f4a494b4d4e4d4d4d50555958534d4e4c4d504f4c4d514e4d4d4d4d4b +474346444850514c4b4e514c4a4b4a47484b474645b7b8b6b3aeaaa9aaa4 +9c9a9377322c19b648926541601c2a255e6430151b1d1c1f224350604231 +1f2d7bf156224994f7f49f370a1c2c4e919df6f5751fd17b043db03dbbc8 +cbb692939c79657582c9a8ab927752213e4e4d4444413d3a3a3b3b393d42 +4447484d50504f4d4840372d2833343578bbaf77435e889f9eadd8fbfff6 +efe0dcdfd4b79859706b585a6d87899bb8d4dfe5ecebde915b474c40455c +689fb1a9aebcba8a321b211d1b211f232f6ad6decac3bed2c0cadbc2bdd8 +e5e8dedbdbdbdbdbdbdbdbdadad8d5cfc8c2bcb7aea9a7afa7b4b0465283 +abd1edecf9d6303935392f322e79f1d883e0bba4631a00001006010a0a21 +466a8bb6cfd2d0d3a3da8f0e183142bc9d2d5beeded1a59fa4a7b7d0d4d4 +d6c8c2bdbec4cbcfca35000b0b0a071201181e29334868694e2a372e4137 +443f25210b282116040060ba9d7e98c28c6270b8c7c0c0ac4619070f1014 +1b22001a1713244647514f251c1d203147424626231f0000004565698979 +94a79b7d9bb7b8bac56b6d7d90947d37373b3a60652c13171f1b171b1a1d +271b131514111218160f131615425552340d05020502051f3d80b6deebf5 +fffff15651674e441f17121e1210100d1222261c1b1c1f242a2b2a263159 +b0b5b8c9c5c4c0bebcbcbabcbbbfbbb7b5b7b9b8b7b6b6b9bec2c2bdb7b6 +b3b4b6b5b1b1b5b3b3b2b3b3b1adaaacabafb6b8b4b3b6b7b3b2b3b2b0b0 +b4b1b0ae7f83878885817c796f686d7267343c32ce5ca5744e6a212b235c +5f2b13191b1a1f223e4b593d31263a8eff6930539affffb34c22313f5d9c +a6fffd8637f4a62d5bc54ecbd4d9c7a9b0be9b849097d9b6bca2835b223c +443f322f2d292525262825292c2f2d2e3134363737353028201a1d263f91 +dac778272032373141749fa9755e4840434239300e383e2a1d222a305a8b +bad1dfeaece9b195a0b8b4b7c1b4c7c7bcbec6be8930181b171820202434 +74e4eedcd6d3e9d7e0f2d7d0eaf5f6eae5e5e5e5e5e4e4e4e3e3e1ded7d0 +cac7c4bfbdbec6b9bbb03d447298bcd9d9e9cb2a332e342d363686ffed99 +f6d2ba7b35141a3027212a284062819ec4dad9d4d09dd38809152f43bea2 +3669fff3e6bebcc3c4d2e7eae6e7d6d0c9cad1d8dbdc5726353737303520 +2d2e3236476668491e2b243b374b4f3d43385e63615655aee9b78b9ec99c +7f92d6e2d6e0e8a4a39d948f968f79343c2d2a374b413f3d222326242938 +364e51769b948d87ada47f8f87a6bbb193afc5bcb0a838261f221714021b +20224c5520090d15110d0f0e0f1b15100f0e07080d0d060d11114155533a +171f354a515057659acaf1fbfefef4da3f3e5640381712101c100e0e060b +181c151616191e25292a262e509c958f9692989894928e8c89888c888482 +86888a8987878a8f93938e8887848587868282868484838484827e7b7d7c +808789858487888483848381818582817f4c4f53534f4943413b38434f4d +1f2f2cd265ac7b546c252f265f632f181e201f2122424f6044392c4092ff +703b5faaffffba5126344360a0adffff8e41faac315dca58daeaf3e3c8ce +dab7a0abb2f3d0ceb19164273f433c2e2a26222020232424282e2e2e2d30 +3337373937332d2727323d4b96dcc77d35374f58516190b8be876d554d50 +4d4439133b412c22273222203659686f7b84895e4b60848d9db1b0cfd4ca +cbd2ca973d232521212625293a7eeffbeae5e4fbe9f5ffe8dff8fffff6f1 +f1f1f1f1f3f3f3f4f4f2efeae3ddd9d7cfc6c4cec5cdba341f2c39516970 +9295081d24383842418efff2a4fff1e3b78c7b8babacaab3aab5c5cdd6e7 +ecdfd7dbabe39a1d2a4558d3b54574fff6e7c3cad7d6e3f5f7f2f1e1dbd7 +d8e2e9f1ff9676898e8c7f754f4a3d393d557c886932372f45415b665f71 +73a4afb2a8a7ecffc49eb6e5b5919ee1ede4eff3aca39c9995988f803f48 +38303b514b4b4929292d2f384d4e656484a3988f89b6b394a7a1bed3c8ab +c7dfd5cbc6574843473f3516292f3058602a12161e1a161b1a1c271f1919 +18101013100911181f536d716a6c8db4d6eae9e2d6e4eff7f1f9fffff759 +54695146221915211313130e1323251d1c1a1d22292e2c26273f816c5955 +50595b58565351504f534f4b494c4e4f4e4f4f52575b5b56504f4c4d4f4e +4a4a4e4c4c4b4c4c4a46434544484f514d4c4f504c4b4c4b49494d4a4947 +b7b8b8b5b1aeaeb0a6a9a08e702d1e1da5411917896b00182363703a171c +1e191215303e4d392c1e257feb3419516a9b87160b24251c1c4870a6660c +1bda730446b155ced6cdbb8fb59a8a919e6aa5a6ad9a88542d474e43413f +3b3837363534383b3f4044464b4d4f5150493e3229282c4c61a0bb76444b +8da9b5bde8ffffffe0dbd2cecdba967645734f4a6c697a86a0c2e3eceff3 +e3c17659504e475c7d8ba4b1a7aeb5ae873c1a1e1b191d1c212f64c7ebd3 +bcbcc7b2c3d4b8b1ccdbddd5dadadadadadadadadadadbdad7d4d0ccbbac +aaabb0a8be8c355e94b4d5eef0fda927383538303435a3e8c2b4c6de9b11 +00021212090d2030487599b1cbdcd9d6b3c1782e332c255dbe89232ccad9 +cca0b6bba2b5d2d5dbc9cfc8bfb6b5c0d0d54f0006090a070e0010132a3b +4668673e2634324440464427210216141e260e43d9d1d5ceebdec3adadaf +b7bdb865190205060511270019151a2f47444d48241925354953524d2213 +1a02050836666eb89f98848576a8a996bbd495728c949f8a45343841615d +2814111614111617172016121311131517160f1c151e2429263e120b0408 +0707162c5b9ad1e7f0feffff9b5f6b4538191c11150c192621161a1d2222 +25282d302e2e272e9caeafb9c7c6c5c1c0bebfbdbebdbebbb8b7b8bab9b9 +b7b7b9bec2c2bdb9b6b3b3b5b4b1b0b3b3b2b1b2b3b1aeabababafb5b7b5 +b4b6b7b3b2b5b4b2b2b6afaead7f83898a8885817f7377757062303036bd +552c2694730017215e6a35151a1d1812152b3946342c253292fe47275b70 +a3952a203c3a2f2b5379af6e1d33fd9e2d62c466dbe5ddcea8d4bdadb3b9 +7fb5b4beaa945d2e454436302c2825242322212323252626282c2e313436 +332b211c18173f6ab5d584331b39403f4675afb7975f5146454741312407 +42251d342325386a9ec9dae6f1ebdaa59fadb9b3c2d4ccc6c2b7babcb286 +3a171b18161c1d21336dd3f9e5cfd1ddcbdceacdc4dee9e9dfe4e4e4e4e4 +e4e4e4e3e3e4e3e0ddd9d8c8bebebfc4b8c48b2b4f82a0c0daddec9e2031 +30332e383eb2fbd9cedff6b32c1722313027293c4b608bacbfd6e3dfd7ac +b770262e28235ec3902f3adbeee1bcd5dbc1d1ececeed9ddd6cbc2c0cbdb +e7712a34353633341e28243440486666391826263e3e4c503e412c4a5369 +7a6892ffebdfd3f2f0e7d8d3cdcdddf4c8aba79a9595938930413036444e +413d3b25222c343c444658516da0a0a99ea5ab88bfafae9c9f90beb99aac +b1581c1e110c0c0110182549491809070f0d0a0e0d0b16100f0d0b090b0e +0d06150f1a232a28421a1e31465255575f7eb4e6f5f9fffaf4844758342c +11170f130b17241a0f10131b1c1c22262b2d2f282d949e93949795999996 +94918f8b8a8b88858487898b8b88888a8f93938e8a878484868582818484 +83828384827f7c7c7c8086888685878884838685838387807f7e4c4f5555 +504d48453c444a4c471d2432c15e332d9a76051c24626e391a1f221d1417 +313f4e3b342b3896ff4d30657eb09e3125403d332e5780b679253dffa431 +65c86eebfaf6ecc7f3dbcbcfd69acfced0b9a066334843302925211e1e1d +1e1d2021262526262a2c313639362f2723232a5173b8d4843b2b535f6166 +94ccd2ae715e514f5048372a0c462720352528242e486c767d8a887e5559 +748b93adcbced2d4c7caccbe94472224211d2222293c76dffff3e0e4f2df +f2ffe0d5ecf6f5e9eeeeeeeeeef0f0f0f2f2f3f2f1eeeae8d9ccc5c6cdc5 +d4931f26383f536a779c7006212a37394347b7ffe1dffeffef797e99aeb2 +adaebabcc2d7e4e4eaebdfd9bccf873e453f3b73d7a23d43e2f1e2c0e7f2 +d6e6fdfafce6e8e1d9d0d2ddf1ffb17c8c94978c7f574c383e46557b8557 +2f353248495c6860726893a2bcd0bed4fffcf8f0fffff7e1dcd7dbecffce +a8a19e9995938c384b3b3a47544848452a2736424e595e6c6176a39fa89f +aebba1dcc9c6b4b6a9d6d2b5c9d17a41453b3831181e2733565422111017 +1512191817211c1a1715121313120b1c1928333e3d686584a8cfe9ede5d5 +d0e5f9f8f8ffffff9e5f6e473a1c1e1418101c292116191c222021262d31 +33332a2887856c6059535c5c5a5856545251524f4c4b4d4f505050525459 +5d5d5854514e4e504f4c4b4e4c4b4a4b4c4a47444444484e504e4d4f504c +4b4e4d4b4b4f484746b8b9b8b6b4b1b3b4aeb3a9956c220b276206001f29 +0037171d50654628222019171a2b3842382e253376c71d1d3c305d250014 +240d253f39648b40253ddf59054ba55dd2d7c9bc8e938c7d7d7f70b0b9a8 +a4a55a313e41363d3a3938373634343a3c3c3e404245474647463d322826 +283a5c7f9a723b4d74aaacbae9ffffffe4dad7ccbfb097785f4f76605f7f +757485a8ccedf4f7f4d4a35e4d4748506c7e7c98afaca38973633e191f1c +1a1c1b21312193e3d1aaa6ab9faeb7aabedad7d8e0dadadadadadadadad9 +dadcdcdcdad9d5c4b9b8abaeadb8593c6a9bbfdfeef5ff7e243b37372f32 +35a0d9e2d6d38809000b160f030b1b314f749bbcccd6d4d3dac081211b39 +2e2f3566501a23b0ebd7c088a791989d9cc9ced2d1cbc1b9b8bcbb660107 +0909070a0015061e3e4d6c6a361e2a2b3732374232200a29262a290023c8 +90cbdbbaa4b090b0a4b3b3b073130000000008290016152232444f574321 +1d21354849544c15002b070000348d80a99f9381947093a1b6b5d6b5729b +9fb19b55333a4b6456231810110e10191710110e110f0d11151211121a11 +202f291e3421140707070915253f80c1e1eef9feffdd7363482f1e1b1719 +101418161721211f1c202427252221262edeb9adb9c1c5c3c1c1bfc0bebf +bebdbbb9b9b9bababbb4b4b6bbbfc0bcb7b6b2b1b5b6b4b3b5b4b3b2b3b4 +b3b0aeaaacafb3b6b6b6b7b6b3b3b6b6b4b4b7b0afae8084898b8b898686 +7b817e775e271f427a1a0d2e34063815184a5f4123201f18171a26333b33 +2e2c4089da302b4636653306293c22384e446d94483655ff842d65b76be0 +e6d9d1a8b4b0a1a09d88c1c7b9b4b163343c392b2e2c2827282725222524 +222222232628262a2c271f19191b285083a57a32232d46394372acbf9b6c +57504a464137291f1d4c39354c3a2f457badd2dce8f4e5c99c9ea8aeb2c4 +c9b1b3bbb7ab8f76653e181c19171b1a21342a9ff1e3bdbcc4b8c7d0c0d1 +ece5e4eae4e4e4e4e4e4e4e4e2e3e5e5e5e3e2e1d2cbcbbfc0bbbe563059 +88a9c9d9def1711d3231322f363fafedfcf1efa424092c3a302128354963 +88accad7dcd9d4d9b9791916352c30386d592834c3feecdba8c9b0b6b8b3 +dce0e2dfd7cdc4c3c7cd8a2e36393633301f2e182b45506e6a32121d2031 +303b4d423b2d565e6d75536df9abd4e0c3badac1d8c5c4cde5d2a5a89c97 +9192912f40313e454b4c4736242625323b3c4d594550a79998879cd19eb7 +b0a999ae8cadb2bca8b174162210101007071129483e120b060c090b1311 +0809080e09060a0b080a0b140e1e2e2b213926232b3d4f575e636ca0d4ed +f3fafefbc9594c3722161514180f12160f1015161616171e222222242930 +daad939595959a99979592908c8b8a88868688898c8d8585878c90918d88 +8783828687858486858483848584817f7b7d808487878788878484878785 +858881807f4d505556534e4b4b444e53534313133d7e2314353a093d1a1c +4e63452925241d191c2c39433a3632468de036345044723c0d2e40253c51 +48749b533e5fff8a2f66bb74edfbf3f0c9d5d0c1beb9a4dde1cbc3bd6c39 +3f37252723201f2120201e2222212120212426272c2f2a25202025385e8c +a77c352f3f60586190c9dcb885695e564d47392c2020503c374b362a2c40 +5b7b82899489744f5c738799b8c5b9c4d1cbbe9f8572482025201e212029 +3d33abfef1ced1dacedde6d5e2faf2f0f4eeeeeeeeeeeef0f0f1f2f4f4f6 +f4f3f1dfd5d2c6cac8ce5d202e3b465c6c80a94e0d2b31393b4148b6f6ff +ffffe373699fb5b1a3a8aeb7c2d1e2efede8ddd6decb91312d4c42454b7d +68333cc9ffefe2bfe5cccecdc5ebecefeae5dbd6d5dbf1c87f909b9d9483 +5f5730344b597d844d282e2e3b3b476163686599a9bbc3a3acffbef1fee0 +d2e8c8e0ced4dcf3d8a2a39f9c919294364c3c424951535240292b31434d +4e5f695155a796968aa7e4bad4ccc1b3c7a4c6ccd6c4d0963b4b3b3c371f +182137564b1c140f1310121d1b13141619130e11131011131e192b3c3a30 +5968829dc1e2efebdec7ddf5fbf9ffffffe274664a33231f1b1d14171b16 +171f1e1b1a1c2228292a2b2e2dcf956e6358555c5c5b5957555352514f4d +4d4e4f51524f4f51565a5b5752514d4c50514f4e504d4c4b4c4d4c494743 +45484c4f4f4f504f4c4c4f4f4d4d50494847b8b9b8b7b5b3b4b7b5b0a89a +66231651b36f7f6f7f3a0806223445402c1e1c1a121a2b3d423d2c223989 +c31b203652b55233151b171040676383332d35e34f1059934ac1c0baba97 +7e886e797190b0a7aea9b153363c3c353638373736353332373634343738 +38383a39342d2422262d5675726449406c91aabadbfffffff2e3dad2c0a4 +8569574a4f5f7b808c948a97b3d4eff1f4edc2884b484f596978776e9cb2 +ab925a33332a1c211e1c21202532259cf2e5c1c3d2cba5b5b0c6dfd7d9e3 +d8d8d8d8d8d8d8d8d7d8d9dadad9d8d7d2d3cdb3b1b6a02e4a6994c5e6ed +faff5f2c413a35312f328eedb8d998000b11050e050723364c7398bdd0d1 +d8d6c2b39a192c381d3636354646212b8eebd0cfa2a47686a7b7e0ddd6d7 +d6d3cbc0b6a77700060c08080903170d213751837b321d242629262c4e4d +3c1c364d6c5e131dba91c8dfc2bdc083bfb8c2b4a5781300000000072b00 +131c1e273f6971441f2231435150716a34144d272c1e2d7c708ba58c6d86 +719c9fa9b0cdc6719da6b8a260323951624c1f161716111a2c2c1f192225 +15050b0d0a0e10101017342b23222114060404060b142e67acdbf2faf6fa +ff9455502b27131c2027343738403c251e1d242f36353333232cffcdadb3 +bcc1c0bfc0bfc0bdbebdbcbcbbbab9b9b9bab4b3b5b9bebfbcb8b6b2b1b6 +b9b8b7b9b5b4b3b4b5b5b4b2abadb0b2b4b6b7b6b6b3b4b7b7b4b4b7b2b2 +b18084898c8c8b8a8982817f7e5a272a6ecc86927e883f07041c2e3f3b27 +1c1b19111926383b382c29469cd62e2e4058bd60472a332c234f726c8c3b +3e4dff7a3873a559cfcfcacfb19fac929c8ea8c1b7bdb6bd5c393a372c2b +2b2a2a2c2b2a2725231f1c1b1a1a1a1e1f1e1a15171f2648696d5b341522 +2f38456d9db09b7761524f483b2c221d1c263b57596065566893b7cfd4df +ead9bb96a3b0b7bbbeb298b1b9b3985f36352a1c201d1b201f24352ea8ff +f5d4d9ebe5bfcec6d9efe5e5ede5e5e5e5e5e5e5e5e3e4e5e6e6e5e4e3e0 +e6e0c8c3c2a3293d577fafcfd8e2ef512236323130323ca0ffd4f6b6112b +322c3428273e4d6084a6c8d8d8dbd6c2b1931127351c38393b50532f3ca1 +fee4e9c1c697a5c3d0f5efe6e5e2dcd3c8beba9c2d383e37353228342330 +4156877e30161b1e23252f54594e345979a29b545ae9b0d5e5cfd7eeb5ea +d5cbc1ceca99a29b999193943b3d37373944625f342029303c4648717b5d +5aad97a28983b992a0b9a085a18fb8b5b3a7ac8916251516120c000a2840 +320b090d110e17292919131c1f0d0004060307080a0c15332d2728251f22 +3147555c5e658dbee0f1fafffdf3773d3d1c1c0d191f2632353139301a15 +141b293134363a2a30ffc59693929397979695928f8b8a8989888788888b +8c8584868a8f908d89878382878a89888a86858485868685837c7e818385 +87888787848588888585888383824d50555754504e4d494d535940161f6a +d08e99858f430d092032433f2d21201e161e2c3e433f342f4ca0dc34374a +64c8694e2f372f2752767393464657ff803a74a760dce4e4eed2c2ceb4bc +acc4ddd0d0c6c9653e3d34272523212123222321211f1c1a181818181d20 +201c1a1d262e55737460391e3346526086b4c7b4947d6a5f54402e201c1c +2a3f5b5a5d5d484a5a7186889099896e5168859cadbcb8a6c6d3caae7245 +42342426232126252c3e37b4ffffe5eefffcd6e4dbeafff2f1f7edededed +eeeeeeeeeff0f1f2f4f3f2f1ebede6cdcdd0b22f2c29304a656f88b03720 +3c3d3f404148aaffecfff66492a5a5b1a6a0b3b5b9cad7e8ebe2e2deccbe +a5263b482c4748475a5c3844a8ffebf6dee9b8c1dbe4fffdf3f2f0ebe6db +d3dbd3778d9d9f9a8a6c603a374259908f45282c2b2d2b38627172628fb6 +e2da9690ffc5f5ffeff0fdbef0dddcd4e0d59a9f9f9d9294984449423c3d +4a6a6b3f252f3e4c56557b82615aac98a49192ceadbbd4bba1bca9d0cdce +c2c9a839493e3f3624101a364e3d16121618151e3232231d2a2b18060b0d +0a0f13161a224139324262788fb0d4e6e9d9c9d6eefdffffffffff935753 +2f2a1720242b373a38403a221a17202d373a3f423031f5b074645855595a +5a595754525150504f4e4e4e50514f4e5054595a5753514d4c5154535254 +4e4d4c4d4e4e4d4b4446494b4d4f504f4f4c4d50504d4d504b4b4ab8b9b8 +b6b4b3b5b8beaea59454211e626b0e2316210d012f3d3133382c22252718 +1e213131392e2a49bcd423365696f8c45b0c232d356d6fd9f3894036e641 +067d9949cbb6ac9e7eb59575b3aaaea9b2bca6b14842423d37383b3e3d3b +373537363433323433332f322e29221f232d3653875f3c56617cadb7d9f4 +fdfaf3f0ead3c6a9815d443c3b4b538b9292a79ea4adcbedfafde9ac694e +4d575f686e7786abb2a68e562627221d1f1c1c2322243029a1ded3bcb8c3 +b3b2cdbebaced7dbd5d9d9d9d9d9d9d9d9d8d9d9dad9d9d8d7d2ded5c2c4 +c7822a53628bcbe8eefff44b37453c37362d2eb3dde76f0000000a030a0a +193b5479aab3d5dacdd2d0a26f482d3c403c413f56595d2c337ae6caccb6 +986277a9becfc3d8d8dad9d7d0c5b48c00050d080a0b0c0b1c2a27458a81 +2a2b2e302e3138656b411e2d487f74263c96bcb6a8acc0b07fc7d4dbc6ae +871f01000000082a091228282e478086421c221d29303164602e176d415f +5c4d7c83918c968b8761899da7afc0d27595a3b79e6e394058614a201a13 +11122340483e3a434324070d0f0b140e0a181c2721241e1e130807060803 +05235194cef3fbf4f7ffc1595027240d1b16305059595a431a21212d3f4b +4a4a4d1e1fefdeacaebabebfbebfbec0bdbdbcbbbcbcbbb8b7b6b8b4b4b5 +b9bec0bdbab8b2b1b6babab8b9b6b5b4b4b6b7b6b5acb0b1b1b2b6b6b4b6 +b4b4b8b7b4b3b5aeaead8084898b8b8b8b8a8d7f7c784828337f84253625 +2a12002a37282d3227202426171d1c2c2a342e3156cfe73644609cffd26f +213b42487c7ae2fc91514eff6c2e97ab58d9c5bdb59bd7bb9cd7c9c8bac2 +cbb6bd51454239302f323435323031302925211f1c1a17151a181613141e +2a33497a5021241414353c6591a299876f5f47423625150f13192b33686e +6d837b8696b3c9d4e1e4caa5a4afb6b6afa7a5a6bbb9ac945b2c2b251d20 +1b1b2221233030abeae3cfcedbcdcce6d4cddee3e5dfe6e6e6e6e6e6e6e6 +e4e5e5e6e5e5e4e5e3efe8d5d5d38424445076b5d1d8e8df3b2b38333234 +333ac5f6ff8e141e192c2a322e39546887b6bcdbdfced3ce9f6c43293a40 +3f45465f666c3d448cf8dee5d7bb8496c4d7e4d4e8e6e3e2dfd8cdc7b12e +3840393a37322a353c334e90852c282a2d2b2f3768714b2e4467a5a2586d +c4dec5b0bbdce1b4f0ead9c6c7c999999b9c969693523a403f3d47767232 +1b2719202a306c74524bb18fada88eb0acaca0a7a3a281a7b7b5aba39a1e +1f16150e16000b293b2c0a0a090e11223f473d373d3d1c000609040e0806 +161b29252b24201b1e2e44555b59647ba4d0f0fefffff7a43f3a1819071a +15314e575250370f16182439464a4e562727f0d79992939295969594928f +8a8988898988878688898585868a8f918e8b898382878b8b898a87868585 +878887867d8182828387878587858589888584867f7f7e4d50555453504f +4e534950532e162a7b892d3d2c311606303b2d31362d25292b1c22223232 +3b36375cd3ed3c4d6aa8ffdb76263f454c7f7ee9ff9c5958ff723098ad5f +e6dad9d5bdfcdfbdf7e6e3d6dbdec5c95a4a44362a28292a2a2926282823 +201d1b181614141a1a18161a24313a528357282f262b50587ca5b3ac9f8e +806257432a160b11182e386e6e6775656462758b95a0a0825f657c94a3ab +aeb4bbd4d5c6aa6e3a372e2525212128272b3a3ab7f8f3e0e3f3e4e3fce9 +deeef1f1e9eeeeeeeeefefefeff0f1f1f2f3f3f2f0ebf6ecdbdfe1932831 +202550677292a62e35494646494348d3ffffc4648596b1a9aca6aabbc1ce +e8d9e9e3d2d8dbb4815738484c484e4c646c71444c96ffe9f9fae3a9b5df +edf7e4f7f3f2f1f2ebe2e5e571899ca0a09079564b402f4b908e3b393938 +32343c718164506e95d6d38996def7e6d4dcf4efbcf6f5eededdd99c9aa1 +a19898995b464c45424f7f7e3d212d273136366e725049b293b7b6a0c5c2 +c7bbc3bfbd9ac1d0cfc4bfb73e42393c312e131d394a3816141215172847 +4f45404b4927070d0d0c1816152429352e313a596e84a7cde3e3d5cccddf +f7ffffffffffc25a512b2711201a35535c595841171c1b293d4d52595f30 +2aeac478635a5559595958575451504f50504f4d4c4d514f4f5054595b58 +55534d4c51555553544f4e4d4d4f504f4e45494a4a4b4f4f4d4f4d4d5150 +4d4c4e474746b8b8b6b4b2b2b4b8c1afa98f412215405d06002728192917 +49332e3027272e292c2c222c263833355be1cd1a4669adf6f3752d141675 +b573bff8c44a56e62e18909640d8b6ae92769281606e6d96acad9181a23d +473f393a3a4046433a343236363534343735322e2b271e1c1f2630393e67 +4d456f7fa1ccd6e8f0ebeff6f2dfcab5916948363233475e7d8689979694 +98b1d1e4edd99a5a4f464f5d66627092afb0a69b6a36312920201d1f2b2a +282f39bfe1d5c2afbfafcfe0c4bbd1dfe3dbdad9d9d9d9d9d9d9d9d9d9d9 +d9d9d9d9d1dbd0d1d9d25b37566594d6e7f2ffd53e3f473d3a3f322f4283 +8e000a1a0e06030c14274b719ec8cfdeddd2c39c694a45473d4a392f452e +3149394e9df1dbcc9ea2a1a5a7a4bde3d7d8dadadbdad7cdae06050c050d +0b0d021d2b253b6b642d383638353e3e69692827393f6a5c1e51a5c999b6 +b1958996aedbe9e2c7a53b040000000923220d32363a43767b3d242c2a2e +2e2961582b23682e52636595a36e8f877d7c7a9daa9dafb6db7f869cb29b +773f46595e4822190e0e0f1b343e3a3c3d44250914160b13100b1e382021 +242020160b06050602021a3e7dc0eaf6edf3fff97944271b121818222f2a +22292c1f1917203036312d2e150abce1a9aebdbbbdbebfbfc1bebebcbbbd +bdbbb7b5b4b6b3b2b3b7bcbebcb9bbb4b1b6bab8b5b5b5b4b3b3b6b7b7b6 +aeb2b3b0b1b5b6b2b6b4b4b8b7b3b1b3adadac7e838789898a8a8a908080 +7337292a5d761d1236311c2612432a252a22252d282b2b1d271f33333c68 +f4e02d5573b3feff89422c2b88c47ec8ffcc5b6eff5940a8a64fe6c5bfa9 +93b4a787928cafbdbda291ae474c40383533393e3d363132332f2a272524 +221d19171512131a27333c3c5b341720151c41557b9ca29b8f6c4b393122 +140c0d151b2d415d646b7e85858a9aa9b9ccd3bd9faeb0adada19094acbd +b7aca16f3c352d23231e202a29252f40c9ede5d4c5d7c9e9f8dacde1ebed +e5e7e8e8e8e8e8e7e7e7e7e7e7e7e7e7e7e2ede3e4eadb5a3147507dbed0 +dceabf2c323933343d373c549dab0a2b3a2e2b2e3739476283a9ced3dfde +d1c099644542463c4b3d354f3a3f594b61afffeee4bec4c3c6c4bed2f4e7 +e6e3e3e2e1ddded438393f393d373321363f3547756c313a3538343c3c67 +6a2a2d444f837b4179d2eeacc3c1b3bdcdd5ebddd3d1d5a392989c9a978b +68334549454269652b212f24262d2f706d49438b54798c8fbfce92a29692 +9799bfc8b1b19fa92f171517101d020d2935280b0a040c0e1c343e3a3b37 +3c1d020d10060d0c081d3a24282c27231b1b273e535e5e626d8cbce4f9ff +fff7da5c2e18100c1717232d281b1f20140e0c172a333131362215c1de9a +9398919596959593908b89888a8a8886848687848384888d8f8d8a8c8582 +878b89868686858484878888877f8384818286878387858589888482847e +7e7d4c4f5152514f4e4e564a544e1c1721597b25193d38212d18472f2a2e +282a322d3030242e273a3b426ef8e6335c7cbfffff9047302e8cc782cfff +d76378ff5f42a8a656f3dadbc9b5d9cba8b2abcddbd6b4a0bc505042342f +2b2f33312b282a2c29262120201e1a16161514161e2b3841415f3a22332c +3b60718ea9abaaa48d6f5849321b0c09111930466265616a675e5b667686 +97997d60768293a2a7a0aac5d8d3c6b7824a40362a28232532312e394ad5 +fbf5e8daefe2fffff1e1f1f9f9efefedefefefeff0f0f0f0f2f2f2f2f4f2 +e9f1e7e8f4ea6a3534212d5c6879988d2846524c4e554b4f68b8d54a88b1 +bdbaaeaaabaebfcfdff0dfe1d9cfc9ac8465534e424f3e354e383f594f68 +bbfffffee5f1e9e9e2d7e7fff6f3f2f2f5f4f3faff7384989ea3907a4d4a +402b3d6d6e3a494542393d3d6a6f39436070a29a5f93e9ffcde6e3cdcad4 +dcf8f5f0ecebac969fa39d9b94744053504b4a73723728363233332f6964 +3f3e8d5d8aa0a5d5e1a8c0b5b1b4b5d8e0c9c8b9c44c3736392f36142039 +433315110c1114213c4642434549280914140d171a192d4930302f39586c +7d9bc3dde5d9cec5d1eefffffcfffff978452b20181d1c27322d22272a1c +14101a2e3a3b3d412b19bbcd7b68635558595959585552504f51514f4c4a +4b4f4e4f5054595b595658514e53575552504e4d4c4c4f50504f474b4c49 +4a4e4f4b4f4d4d51504c4a4c464645b7b7b8b5b2b2b6b7b9abac8e3c2b0f +1d6e6e83763106122b38252222192229181d231c291d291b175be5b5043a +57a8efb63b161c1b2b4775c7e9980e68e6120b817519c3a8b7a99f929995 +857c96b8ba42488c334435374437404541342c2a2e303031333636322d24 +1e18171e28333c4838375f7e9cd1dbe3eaf0f6f9f3e8d2ba9f7b5a453a37 +373b66616c7c7d8a8193969daabcbc9b72675d698796807a92acaeada872 +372d262c2b262b3837323741d2e4d1bba6d1d4d4cdaeb7d6d7dbdfdadada +dadadbdbdbdbdbdbdbdbd9d9d9dfe0cfe0e6cc31385a6fa3e0e6f4feb835 +4343393b42332e7464000f00000c040d1b314c77a5c4d3e4d9dadeb25c35 +4a4a3a46343b4529433a53494d9be1e0d4cabfc4c8c3b3abcad6d8dad8d9 +d9dbd7cf160a0b030a070808192d3a434a4338332a2e2e3c34544c362623 +45b5bf55547db397d6c7cac9a88cd0e8f1dcbb4f07000000061629002e2e +332e555e363443353633285d4a221f201e6d633966a4659291a29b796d8b +a2aba8da827a99b4a47c434553513a180f151813121c1a161a1526130115 +1502061207175220291c1a2216090000030407142f69adddece9f1ffff96 +3b2d151f1b1b1c2521100e1b20201b1e2725150907110091dfa6acc2babd +bfc0c0c1bebcbababcbdbab7b3b4b6b2afafb4b9bbb9b6bdb6b2b5b8b5b1 +b0b4b3b1b2b4b6b6b6afb3b4b0b0b5b5b1b6b4b5b8b6b2b0b1b4b3b37f82 +8688888888898a7f89773633263a8a8797873c0b1329331f1c1c14202717 +1b21172418261b1e66f6c8174864b2f9c7502b31303e5683d2f4a52183ff +3e31968428d3b9cbc0bcb3bdb8a797abc8c95256963c4735333f30373c3a +2f29292d302d2a2826241f1a151312151f2c363b3d1f0d1d181b3a445e7f +a3b1a98c5f3e352b1b0f0f151b1f2149414a5f667873858079829ab0b2a7 +b5b4b8c9c7a596a7bab8b5af793d312b2f2e272c3736313747def1e2d0bf +ebf0f0e7c4cce7e5e5e9e9e9e8e8e8e8e8e8e8e8e9e9e9e9e9eaeeefe0ee +f2d22f2f4b5a8dcad0e0eca62434393439473e408b801f311c2130293541 +50668bb1ccd8e4d9d9dcaf593147493a4938404e334f48625a60adf2f1ea +e8e0e6e7e1cdc1dde6e6e6e4e2e1e3e7f1443b3f393e352e242d38414a50 +4d423c3335313c32524a362a2c51c6d46c76ace0afe6daeafdddb1ded8dd +dde4b08f949a9a958577304a413a2845472431433230302966572e2d3536 +847e5c8cca88a7a1b5b2948ba9bbb6a0b74015161812180008232d230905 +0e130e0d16171317122310001010000310061a5828332926291e15192f4a +5e6562657eafdaf0fefff4f47c231a0612131519221e0b07111616121521 +20140d101e0697dd98959e929596979795918e8c898b8c89848283858080 +80858a8c8a878e8783868986828185848283858787878084858181868682 +87858689878381828584844c4e514f4e4c4d4e524e5f551e241e388d8c9e +8e4211182e3923202018232c1c20261e2b1f2d23246cfdce1e516dbcffcf +55303633425986d8faad288aff413297872fe0cde4dfdcd6dfd8c3b4c8e2 +e06263a2454c37323b2a30353229242428282624242624211c1817161823 +2f3b404123172b30395d65798fabb6b29f7d60524029140f0f171b224d44 +4b59586256625b575f758884798b92a5c5ceb7aec2d5d1ccc2894b3c3136 +332c313f3e394153eafff4e5d5fffffffedbdff7f2f1f3f0f0f1f1f1f1f1 +f1f1f1f4f4f4f6f6f4f5f6e7f7ffe03a2a2e2338676a7f9a762a53544b4e +5a5058adb0628a8aa3c2b5a6a2adbbd4edf3eeecd7d5ddba6e526659424e +3b434d324f48656167b9fffffffffffffffde6d6eef5f3f4f4f3f4f6ffff +7880939ba18d7553453c3a434c4f4b4b423f383e33534d3e353d67e0f18b +92c6fdd3fffbffffe5b9ebf2f9f9f8b78f989f9c998c833c564842325057 +323c4d3d3c372b61502a2d384094916f9fdd9cc4c2d5d1b1a7c1d1ccb7cf +5b35383f36320f1a31392b100d151a151420201c201d2e19051616060c1d +162966333c2f36535d6780b0d6e6e3d1c7d1eaf9f9f9feffff973b301923 +201f202925120f1a1e1e15182124191619270c97d17e6c6a575858595958 +5653514f51524f4b48494d4b4a4a4f5456545158514d5053504c4b4d4c4a +4b4d4f4f4f484c4d49494e504a4f4d4e514f4b494a4d4c4cb8afc0b8a8bd +c6b4b5a2a28127270b5c778f9382621a14192e2420212a231825191f2727 +242d280f6fcf9b041c3874551400211f1a221c4e91520a008cd6203fab67 +1ec6adaea86f485e746789acbcb4326f9d2f434245372e374f4f342c3021 +2423242b31332f281c161419232d333e424654739cbfdeecedf2ffffffd2 +c1b898755f554f484240424b5660676e777d8489908f9299988e817c8eab +c1c1b7b5aca8adac884b29283030272b434b3a284cbfe4debba6c9bfbdc0 +b39fd5d6cde3d4d1e0e0cdead6dddcdcdadad9d8d8d9dbdbdadaf9752752 +5b5595d7ebe5ff773241514b3a322f234206000a0808010a2c385079a2c0 +d4dfefc6aa8b4f2a394e473e383c3d38383d3b3e3f58b0e8d9d7bf9bafb4 +afaca7c9d3d7dadbdad9dcdbd14e030f0006080908264134423d3a1d2624 +272f3d46433b26212c183864413367b6b5ad919da28eb2d3ebefd8bc7405 +000000081c22001f293763545c3c4b3d4334424d57563b2a261b91927051 +d294958a83888b6b92a79e9ac7a77595aeaa875c394b542a0e0210151b20 +21221e1a111813070a0b070610142a9c472c2c261d1e1508010607071222 +3b88c5eee6f7ffffe73c1e2a28252223211a11101a2416171e25231b1514 +140c47c7bea5b4bfc0c0c0c0bebdbcbcb6b8b9bbbbb9b7b6b3b2b3b6b9bc +bbbabebdb6aeadb2b7b7bab9b8b7b6b6b6b6bcb5b1b3b5b3b2b3b2b0b3b7 +b5afb0b7b4b4b4867d8f87768b93838a7d88732833227995adaf9774251c +1d2d221b1c25211623141a2222212c281478dca9152d498567291236322c +342b5da0641d0babfd4a63be742cd8bfc4c28a667c8f7f9dbcc8bf3c79a4 +32423d3c2d222b43452b262c212b292321201f1b181415171e272e312f23 +171217212d3e516786b4cbaa68352c312516171c1d1d1d2129343c434c58 +617176736f7586979fa4abbdd9e6dfd1c7bbb5b8b890512d2b3031282c44 +4c3a2c56ccf3f0d1c0e4dddbdecdb5e8e8dbf1e5e1eeeed9f4e0e7e6e6e6 +e8e9eaebebe9e7e3e3fe752246494180c4dcd8ff6a24354c4d4444474162 +29212e2e2f2b314b4f648aaec8d7e0eec5a9894d29374f49423f43444142 +47484c4d69c1f8e9ecdbbaced2cbc7bddee6e9eae8e6e5e8eae96f2f443a +413a2d1c2a3d2a3d4046303e3c37393f45403a2a2a3a294c785354a2f3d8 +c5a8bdd3c0d7e1dcdddde6d48d9da2a09c9988334b3f3b5942472b443c45 +33343d4d4c2e273f41b2b49b79edaaaca19396997eaac1b7a7bb791b140a +0a100400203d240f070f0d0d0e0f101112141f180a0b0c0606101832a857 +404239292725212840586265625d99ccf5f4fff9eccf2204101012131b1e +180e0d151f1112181e1c1615191e164ec7b38e929797979797979594948c +8b8a8a8884828180818285888b8a898d8c857d7c81868689888786858585 +858a837f818381808183818488868082898686865148574d3b505a4b5751 +655816291c7795afb29a76291f2032271f2029221926181e28282832301a +7fe4b21f37538f712e15393630383062a568210fadfc4863c27a35e6d3db +dba78298aa99b6d3ded14882ac3948413f2e242b43462c282d1f231f1e20 +262a27251f1d1e222a303432291f202c3e5164738095bbceb1764f474430 +1d1a191715171c27333c454d565d636765606575838c909bb3d6eceae2dd +d0c8cac89d5d383238362d314951423562dcffffe8d7fff7f5f6e4caf7f4 +e6faefeefbfbe5ffecf3f2f2f4f5f6f8f9f7f2f3f4f4ff811f301900255e +7778ab3d355d63594544515d9b7b8da9b3b8b1a69e92a1c2deeff6f5fccd +b1945b3b4d64584e494d4e4a4b5050555673cbfff6fdf3d6eaeae1dcd2ef +f5f7f9f8f6f3f6ffffa27094969f9379514d4c324347523e4a4844434b4d +473f2d2f453b679d817fc4fffeebc8d6e1c7dfeef3f7f3f2d083969e9e9c +9d8d3d564a466450583d564c513b4148565538304344bbbea485fec1cbc1 +b5b9bc9ec6d8cbb8cf933e3d3c38301a072a4326110a15181a1c1d1e1b1d +1b251c0f10110c0e1a233db4644b4d48434e5973a7d2e5e6dbccbfe1e9fb +f5ffffffe53b1d292826262a292317141c26181618181612151f282256c5 +a16c625c575557575657575752525252514e4c4b49494a4d505352515554 +4d4544494e4e4f4e4d4c4d4d4d4d554e4a4c4e4c4d4c4b494c504e48474e +4b4b4badb2b3bdbaaeb4b2afa29e7a2723177c6f0000716a3e18111b2734 +1c1e2e222e34221d272724190a36ca4c00403f44481824161e1a254d3f4e +342218aed31b4c9b654ec6b9ab9da597a7aa7a9f9b9bc24c3e4417514029 +333434424f433129251f20262d302d27201513141b242d3540495b7496b7 +d0e4effffffff2cec2c1ac8c7369635a4e47454a4c5052565c666b6e7886 +8c9090908a8c8995a8b6b7bcc4c8bbb0a077412b302934373f50513d314a +dddad1e5beb7b7afa4abb7dfdadfd7e8e1d6d9d4e2d4e1dbdbdbd8d6d5d5 +d6ddd7dbd9e346324c566db5e9f3e7f95c443950543635360f1000000302 +0a0e263753789fc0d3dad9c0a88051363e4c474047483f3d423e34404041 +5fb4ead9d5c4a79d91a4b1afe4d3d5d9d8d9d8dbdad96300050006070a1b +2139404c33291f212023293030312f37311c20505a171163aa769fc58e7d +abb1cde4e9d8c17d10020000000b1b0012263351494d353e383d3d56594c +463c3922004c643e29ebc37e8f816c848ba393a09eb9b06792aab0936b43 +48451d0a0b0e151c2122211c160f1818100f120f0e08173aa66a44301a1b +1d180c0205070a111a3272b5e1e8f8fffff267232c2a24201a15161b1d1b +17181413172126221c170024b7bab0bab8c0c0c1c0bfbebbbdb7b8babcbb +babab8b5b4b4b7bbbdbdbcbebeb9b2b1b7bbbbb7b6b6b6b7b8b9b9b9b4b1 +b3b4b2b2b4b4b3b5b9b7b2b3b9b5b4b47f85828a867a808085818a702a30 +2c968d0908897c4c22161c26321a192a202c2f1d1b2526251c0e3fd4580a +5051585c303c2b312c345c4e60473a34cef7446eae725cd8cec4b7c1b3c1 +c28eb0aaa6cb554549184f3a1e272525364438282225292a2724201b1613 +11151b202427262314111926303a4d6087afc1a07152392c36342e2b271e +1c1f252a2e2f30353f4955626b71757c8187969caec5cfceced4d8c8bdac +7f482e332a3538405152403554eaebe6fbd8d5d5cdc2c6d1f2ecede5f8f1 +e3e7ddebdce9e3e5e4e6e6e7e8e8ebe1e3e0e645293f4357a0d5e4ddf155 +372f4e5b464f5531351e2528273238494e6385abc8d8dcdabfa67e50353d +4b48434d5047454a483e4c4c4f6dc5fbeae8dfc6bcadbfcbc6fbe6e8e9e8 +e7e6e7e9ed81223c3a453c2f2b202c2f4133353034322f2f2d2c2e2f3e40 +343d6f7b383fa7efa0bbddaeaeddd6ddd8d9dfecdc949d9b99938f884048 +4137493c412f414048424944403a29354332778f7055ffd79cac957a919a +b8afbfb4b88d131303080f070018301b12130d0b0a090a0a0c0f12201d11 +0e0d080702153cae7856462d282926202439546165605b88c2eaf3fffcf5 +df4e050e0c0c0d0d0f141a1c181417120e10191f211f1f072cb8b09b9991 +97989899999897978f8e8d8b88858181828383868a8c8c8b8d8d88818086 +8a8a868585858687888887827f81828080828584868a8883858b8786864b +4e4a514c40474b55586957192627958d09098b7e4f241a202b371d1d2b21 +2d3321202a2c2a231748dd64145d5d6365343e2e3530396153644b3c35cd +f5406db27a67e6dfd8ced9cbdadaa6c4bdb8da5e4b4f1d543e222b2a2a3a +483e2d2925201f22252a2926241f212324262929271e202b3e505d6e7c9c +bcc8a67b605143433c322c261a15161c2025292f3640484e5762686e737a +7e8d96aac3d3d6dae3e8d9cdba8a52373a2f3a3d455657474060fafdf9ff +efefefe7dadbe2fff8f6eefffff3f4ecfae9f6f0f1f3f3f5f5f6f4f4edf6 +f3f94d201f090b45748786a629485463634550695e8589a9b5b4b6b1ad91 +94b1d3ecf6f3eecfb48c5e454d5d5a525b5d545257544a58585a78cffff4 +f6f2dbd1c2d2dcd8fff5f6f8f5f4f1f3fcffb3638c97a6987f674a463f4f +3f4540423e3f3f3e3b393744453e4f8ea66e73ceffc8e2ffc7bce6dfecf0 +f3f2f5d68795969893938f49524a4254464f3d524d4e4653534e483c4348 +337d987962fff0b8ccb89db4bbd5c5d1c2c8a53540393b341f0c24351c14 +15151618191a1a1717192321161414100f0c2048b98564543c38414b67a0 +cde2e6dfd0c7dbe4f3f9fffffff3641f282824231f1d1f22221f1b1f170b +080e151d242c1637baa47e6c58575356565859595954545453514f4c4b49 +49494c5052525153534e47464c50504c4b4b4b4e4f5050524d4a4c4f4d4d +4d4d4c4e52504b4a504c4b4a9eb5a9b4beacb0b4b3a2895c1f2430ae2012 +095b730019252222322e3235314c34201c273237291155e64016372f8097 +4633101b21355b30d19c5407aabc0029a683809fa3ad8495a78f999fc33a +15864dc1da41283e40453730334a523824292023292c2b251e1813161c23 +2a313a485d7a9ab6cbd9e8f2ffffffcfacadae998d858581715f58564d4b +4a4a4e515556575d6a777d81888f8b8a929ca0a3b4c5e2cebba3763d1d17 +2b353945585742344bdee1d1b895c6cb8fbfaba3ded2d5d2b1e1d9d3d8de +d8dddbd9d9d6d4d3d2d2ddd8dae8a7273f536380b8def0eadc33313f3123 +2f30190800000a02081318354f78a2c1d6dfded5a4ab7d3a2f4b4e364042 +3f38363b404346454b6ab8e9d9d2c0cdd4c1cdc09bc4d2d4d7d7d8d8dad9 +d88900060000030d1815263443302a2c2e2f32393731333827261464bd9c +130037a187b0c5919ab6b8d0e1e3d8c5851a0900060b14270002141a2827 +25141314161c3835262222270c1b749a4100b39db4c6a97e989eaaa19a9f +b3cb6f99acb79b7d554f421a101510161b1e1e1c17120e181c17171b1915 +1922347a61433823191d190c0101060d161a2d58a3d0e7f5ffffffa32b2d +2b23261e1f355160594c27201a213a54564b52201296b7b4bdb5bfc0c1c1 +c0c0bfbfbabbbcbdbcbabbb9b7b5b6b8bcbebfbebfbfbcb6b6bcbfbfb8b7 +b7b7b7b7b8b9b5b2b2b3b2afb1b6b4b3b5b7b6b3b5b9b5b5b5738777818a +787d858b827552203043c73a2c216e8203212821202d292d302c4a331f1b +28353c301a5ff34e27474194ae5f4d283033476a3fe3af6921c8de2249b9 +9291b3b9c79fb1c3a9b2b4d64a219056c8df442638353928212740472f1e +27272a2a261e17121011191f221f1e1d19111422313b4d6881b3c3ac6e40 +38332a40484d4b3f322d30292a29292a2d31353b424f5c666e7a868b8f9b +a8abaebdcfeedcc7ad7f4420172a3438445857453853eaf1e4cdaee0e7ab +d9c4baf0e3e2dfc1f1e7e1e1e8e0e5e3e3e3e4e4e5e4e4ece5e6efaa2637 +444e6aa2c8dfded32d2b3c352d424a382a21242e262a373c546385aecbdc +e5e0d6a3aa7c392e4d4f39464847403e434a4d52515978c9faeae5dae9f0 +dce8dab2dbe5e7e7e7e6e6e6e8eea8233e393f3b372d191b25382c31332d +28292b28242c3a35413b96f5d9512c82e5b2cde2b5cdeae0e3d8d9e0f1e3 +9c9d979e98908f4e363125272528212a302c2a362e26241e333d5baacf7b +22d2b8d7e9c492abb1c2bdb7b2afa31917030c100f0015230f0f160d0c09 +09090a0b0d0b15170d0707030003102773634a44302528261f1f314f6169 +5d576eb1d9f3fdfbf9ef8c0d0f0d0b13111932505f5649261e141a314d55 +4e5a291a97ada09d909797989a9a9a999992918f8c89858282848485878b +8d8e8d8e8e8b85858b8e8e878686868686878884818182807d7f84858486 +888784878b8787874055444c513f46515a5952370e243dc4392d23728507 +242d2725332d3134304d3824202c3a40362168fb5931544d9fb6634e2a33 +374b6f44e7b36c22c8dd1f48bd9999bec7d8b4c7d9c0c8c9e75a319c5fce +e5492b3c393b2b2429414b322228202225282724201d1c22242723202121 +1e293b4e5c6a8193c0cdb5794f4a483b4a4f504b3e2d26251d1b18181a1d +2124262d3c4b58606f7d838998a8adb2c4d8fce9d5b9884c291f303a3e4a +605f4e4360fafff5e2c4f7ffc3f0d8cafeedebe8cefef4eef0f4edf2f0ef +efeff1f1f0eef3eef4ffbb2c2c2517214d728f9698092f51413750636772 +859eb6b2b0b1aaae9eb1d6effcfff5e8b3b88a473e5c614a5456544d4b50 +56595e5d6483d3fff4f3ebfeffeffbebc4ebf4f5f6f4f3f1f2fbffdf6a93 +9aa59c8d70493b3a483a43453f3a3e423f383c47404c4aadffff8c65acff +dcf5ffcfdef5ecf4f3f4f7fee2949d9ba39f9a9a5a41392b2d2a2d273033 +2a2a3b362e302d3f415db4dd8935eed6f3ffe2b3ccd1dcd2c7c1c0bd3c45 +3c41372a17242b13141a1617171818181514121c1e1511120f0b101e3883 +725a5440333c496399c1dae5e3d0c5c3d8e8ffffffffffa0252727232923 +273d58655d502e231414284553536738279ba387745b595558595b5b5b5b +57575654524f4d4c4b4a4b4d515354535454514b4b5154544c4b4b4b4c4c +4d4e4c49494a4b484a4f4d4c4e504f4c4c504c4c4b9ca9a6a0aab0ada9a8 +a28a6132221f8e76665448091b0902242f1d1f2315201f1d1f211f2e493c +0f71f449262733ddeea22f2622346a666cf2ed9114c3c10c4fb7a3b6c8a9 +9f5e687c7c7f7f9c00003439a7ac201a48332035312b3e5643272a25262b +2a251e1715161d252c333a475d819fb8c8d3e0f5fffff8d4b6a3958c8289 +8993928678706f5a534e4f5658534d5854555e62656c7585868e949192a0 +b0b8ccdec5813f272a36332d3a5458433368e3ded7bc9bc9b09de3c0a2d6 +dad39739c5e7d3d8dee1d6dbdbd9d7d5d2d2d2d2dbdbea592d445b7aa1cd +e2f3f3eb6c2f352f33371a0415090c0f081926264878a0c3d0d8dfdfd6d1 +da9c3f23343d3a24253b5953301d24292d4064a9d9d3d4d3d5decad0d2af +c0d2d4d6d6d8d8dad6d1b1070f0000000d0e1721242f3232313331333833 +2b2c3329240029442c000015a2aea0a6959ba9b8cbd8d9d0c4902c0a0005 +060d291200181f1f231e12060c10102320191c1511074394a0490089a68f +9f92809e8788a097a0b9e18f98afb69d8a64584520141514171a1b191611 +0f11161a1b1d282e232e2b253b3b2c342e1a1e1d100100040d211e2a3c8f +c1e6f0f8ffffda3c2f2e281e171c3554645e501c19151a37585b4e65380c +66c4b6b4b3bcbfbfc0c0c0c0bfbdbdbebebdbbbbbab8b6b6b8bcbebfbfc0 +c1bfbab9bdbfbdbcbbbab8b6b5b5b5b3b2b3b3b0adb0b7b2b1b2b3b3b3b4 +b6b6b6b6717e7770787e7e7d8385775a352d30a48e7e675a17240e05232c +1a1d1e131b1d1e2325243650451a7eff57373945f1ffbe4b403a477c757b +ffffa62ee1e1306fcab2c9dcc1b97b8598989896af10034144b1b4241842 +291426231f344c3a2126272b2a241b141112161e23211a1718171c212c35 +405a81a1c1a1724d3226212643515c5e564b474936322e2f3437322c3735 +3a465056606b7c7e858e8f92a2b5c2d9e8ce8844272b35322c3954584637 +6eeceae7ceb0dfc9b6f9d5b5e7e7dda147d6f5dfe2e8e9dee3e3e3e3e3e3 +e2e3e3eae9f35d2b3b4c6589b3cde2e7e2682e3837424e3524382b2e3028 +3944456288accdd9dde4e2d9d3dc9e41253740402a2b43615b38272e3539 +4e72baeae4e6edf0f9e4eae9c6d6e5e6e6e7e6e6e7e7e9d2364c3c39383d +2b231d1b2730383428202025211d27383b472c658a78434f66e6d9c0c4b8 +cedddfe0d3d2dcf2ebaaa2979e958b916031332a20242826252e291e2421 +262f25314e99e1ec9b3dc2d5bdc9b49bb59fa2bdb2b0b2b639190a0e0f14 +06131d0d0d130c0b0a09090a0c0c0a0b0a0601080800090a0a2830293734 +2227261f1c2b4960716154569dccf3faf6f8f7c32011100f0b0a16325363 +5c4e19160f122e51594e6b3f1267baa49891959698999a9a9a999593918d +8a868483858585878b8d8e8e8f908e89888c8e8c8b8a8987858484848281 +82827e7b7e8583828384848486888888884651493f454b4a4c565d563e22 +1f28a18e806b5e1a29140a2933212224161f202226282739564c2086ff62 +414551fcffc14c413c4b807a80ffffa92fe1e02e6eceb7d0e5cdc88d97ad +adaca8be1e104a4ab3b7271b442a16292321354d3d252724252826231d1b +1d1e2328251e1b1e222e3747525d7394aecaaa7f5c443733334b545f6054 +48413e281f17161818110b18161d2c3a435261777c86909092a1b8cbe2f2 +d7904a2f303b3832415c624f427cfbfaf7e2c5f6dfccffe6c3f1f0e6aa52 +e0ffebeef4f6ebf0f0efefeeedefedeaf1f4ff692e2c2b2e43667e9dadb7 +4d2a414257706c719ca6b4bbafb4b2a2adbcd2f0f8fafaf5e8e0e9ab4e34 +4853503a39506e6845333a4145597dc4f4eef4fefffff5fbf9d6e4f3f2f3 +f1f1eff0f9ffff7a9d9b9d99926f553e30363d46433830343b39343d4c4f +5b4689bbb68c9193ffffe7e8d4e1ebeef3f1f1f4ffeca7a39aa49d979e6c +3c3c2e24262927272d261e28262c36323c509aebfaa950dff3d7e1d0b8d4 +bbb9cfc3bfc4d15c46424237342026281314181717171716141313121314 +0f0d15170e1a1b1d3b413a48422d3847608fb5d2e2ecd6c4adcae2ffffff +ffffd7362928251f1b223b59686153221d0f0f274b5a56794f206cb18e73 +615a5657585b5b5c5b5a59585553504e4d4c4b4b4d515354545556544f4e +525452504f4e4c4a4a4a4a4a494a4a494649504b4a4b4c4c4c4b4d4d4d4c +9f90a29c9bab9e9d9a9980542c2036a73a745f52150b111e312e0c586d27 +2e221b1d1d15192e25024ef1424a5e80e4e3b82b2e181b534674f2f18819 +d3aa0044b046288b92a891a7a2afa5abae131e1a247385211f3934472f37 +2d304b4c34282b2927231b16151819212b323d4a5f78a4becfd8e0eeffff +faceab9c8e73686b777b84898886828074665b5b6870706c584f46474c50 +565c75798693969298a1adafbdd1d0a45a2034332e364848393456f0f0f1 +f4c5c3c0dde1e6eae9f8f96e00a9ead4dcdae0d7dcdcdad8d7d5d5d3cdd3 +e6be2735435672b1e6f2eae6fdd2dcb5d0c64f03050009070e142a374375 +a1c1d7d8d5daddd8dcf6f1d3c3ad9999a3a2b6d1c69f8b917f8193a4c6e0 +d8d8c19daaa7b1dad6ced3d4d5d5d8d9d9d5cdc211120000000006151f26 +292f2a29363331333128292c17190f20080000000088a385c1b58accbcd2 +dedfd6d3ab4b180002000422230817282628281e0d131d1c281f15150500 +1746633e39296baf7aa4b3a5ccbca7aea2a5beddb286adaf9d8c64514228 +23201d1d1d1c1b171313191618202b4450423939323236272d281c1d2015 +0500010d2c292b2c79b3e0e9f6fffffc5f312f281e1a181f26261e171517 +141220333123281c0333d0c0abb4bbbebebfbfc0bfbfc0bebebfbdbcbcb9 +b8b6b5b7babebfbfc1c3c1bcbabcbbb8bcbbbab8b7b6b6b6b3b2b3b3b0ac +b0b7b2b2b1b1b2b5b6b6b8b8b8796a7b7270807377797f714e312c47bc4f +87716122141821312d0b576a262c232027271f2439320f5dff505b7092f6 +fad4494a3130665783ffff9d31efc81d62c5593da2adc4aec7c1ccc1c5c4 +27302b327e8d271f352b3b2129212641432e242929251e161315181a1f20 +1c1413191c252a353e4d6a91ad9e714533251516263c4752595a5a595a50 +463c3d4851514c36302f37434a4f5263636d7d848793a2b5b8c6d8d5a75b +1f32302d3548483b365af6f8fdffd6d5d5f2f4f7f8f6ffff7703b7f6e1e6 +e4e8dfe4e4e4e5e4e3e3e4dee4f4c82b343b475c99ccdbd9d9f6d0e2c1e0 +da692126202c2a2d31444e5988aecae0dfdbdfe0dce0faf5d9c9b4a0a0aa +aabed9d0a9959b8b8da1b2d4eee6ead8b7c4bec8f0ece1e6e6e5e6e6e7e7 +e6e6e743524b453d3a2d2b2527293233303026242725232b38303f425f51 +4a484f50cacfa5dfd8baffe3e8dddce4feffc7bbabaa94898e713a302f24 +232c2c272f2f2427242e382b337bbdd3afb29dceffb7d4d8c5e6d6c3c9bc +b3b5b35e0d100c0e130006120d131613110f0e0f1012120e02010002151b +0b040808111f1a26272125251f1b26445c7a6c564788c0eef4f6f8f9e744 +14120f0b0e121c25251c120f120e0a182e2f232b220632c7af9495949596 +97979897979694918e8a87848485858486898d8e8e9092908b898b8a878b +8b8a8887858585828182827f7b7f8683838282838688888a8a8a55455248 +4553464a4e5a50341d1e3fb7508b756628191e283933115d712b31272429 +2921283d381564ff5b657a9cffffd84b4d35356c5e8affffa235f2ca1e62 +c85d42a8b6cfbcd6d3dccfd2d1323a3235808f271f342c3b212821254244 +30252a2926221c1a1d201f24241f1a1923293a44515a6981a1b8a97c5344 +3623222b404953595a57535140311f192123221d0904061324323d486165 +718084838d9db8bfcdded9ac60243737333d5254474366ffffffffe8e9ea +ffffffffffffff7e0cc0ffeaf0eef5ecf1f1eeeeedeceeece5ebffd23430 +262023538295a1afdcc1d8c1effda67797a2babab9b1b2aba5c3daebfdf9 +f1f2efe8ecffffe5d7c4b2b0bab7cbe6dcb5a1a79799acbddff9f1f6e8c8 +d5ced8fefaeff4f2f2f0f1f0f0f6ffff7e9aa1a1998c6e5a453b353b3c38 +342d2e35393942524e636f95969ca7a281edf6ccfff4cefff4fdfcfbfeff +ffc5baabad9a929a7d43373529272f2d28302f262d2a323e343b79b9d7b7 +bbaae5ffcce8f2deffedd8dacbc0c6cb8038454139341c1b20161d1e1e1d +1c1b19181817160b0b0d12252d20181d1c24332c36352732435d88a9c7dd +f6e1c7a2bfe0fffffffffff8572a28241e1c1e252b2a1f1819191008152b +322b3a321538c29d74695b575859595a5a5a5a5858565553514e4c4b4a4c +4f535454565856514f51504d504d4c4a494a4a4a484748484743474e4b4b +4a4a4b4e4d4d4f4f4e8f8a989da29f949f9a9578411e2661d243d826a94f +481d2233255afcec0e24a046322f322b292a2892e632402d84c1c12c0012 +191c40586fb4a03f15c8982869ab50299aa5b68b7082807d9f9d203c2351 +7e8313193c37252b3b3227394d422c2d2922181313161a1c26313d4d627b +98b8cfdfebf4ffffffd0b89b7b5f504f5660666f757d84878582786d6f81 +99adb99c875f3e30353f485c65778c9393979c9b99927d6a5e5249263135 +35362c242d389a9b896a373e404b455968615c71260a9ae1d2e1d4d6dfdc +dcdbdad8d8d8d7d4d0ec7525374f4f77b9e3eee6daede9daece786120012 +0004071c27344668a5c0d4e2e0dbdadbd7e2dbd9e2ede8ebf7f2f5f1e9e4 +e7edefefe9f1eae6e7d9d7bca1c8c4aed2ddd6d6d4d5d6d9dadad5cec415 +0b0c080000000007272a26172020242422212226281209191810181b0805 +67b89bb7a96d8ea9c5d6d3c4c0a046230d1a11161d1a000c282c1c25160a +10121b2d1e09060000234638001646429e75afbf90b6d3c3aba8a5b4cacc +78a8ae9b8c5a41372c31302e2d2c2b272423241b13192531536a5b4c4541 +3a352a27201b1a20180a0000092f3730265da2d3e3f6ffffff91372e2628 +24211c1712100d181e1d1b1d211d1413150e0fafc1a8b5b8bdbebebfbebe +bebfc0bfbebdbbbbbbb9b6b5b6babebfc0bfc2c1bdbabab8b3b7b7b7b7b8 +b9bbbbb7b4b3b3b1aeb0b4b4b4b3b1b3b9bab7b9b9b9716c797c807d7282 +82856f41273676e858eb38bb5e552629382a5dffef1127a551403d403a38 +3c3aa3f743513f96d3d5491e30353455697ec5b1522de1b44787c36541b3 +c2d4ab90a2a09bbbb5375036608c8d1919382f1b202d271c2f443c262924 +1d161214191d1b1d1b1611151f25292f3f4f627789926553361d0b081626 +30394249515b606061584e51627b909a7b694f3732394041484853697982 +8f9c9fa197826e5f5247242f3234362c262f3a9ea19173444d515c556772 +6a63762d17a8eedfebdedee7e4e4e5e4e5e5e5e6e7e3fd7f2a34453e629f +c9d7d6cfe7ebe7fffc9f2d1d332227273841495876afc8dbe8e6e0e0dfdb +e6e2dfeaf4f1f4fffbfdf9f1eef1f7f9fbf5fff8f4f5e7e7d2b8dfdac4e5 +f0eae8e6e6e7e7e8e9e7e8e7484b58594a37281e1a353532283029282727 +272c333b2e2e474e4f5e67544da4e0b9d1cb9abcccdad7d3d2e7ebbabfbb +bea6978563221f2b27172a28272d24222d282c37314097cbb55f9bc4b1f6 +b6dee5b0d0ecdec5c0b1aba481091a1814160000040c20242221201f2022 +242410000001021c2c1c0d0b101318171c1e1f21211e1a233d547a795d43 +6fafe2effafcfaf7781a110b1316191915100c0812161712151b1b141518 +100ea7b3949c95959696979696969593908d8a88868686858485898d8e8f +8e91908c898987828787878788898a8a86838282807d7f8385858482848a +8c898b8b8b57505a5b5b574c5a5c63522914296de559ef3cbf635b2b2f3e +3064fff6162ca953413e433d3b403eaaff4d5b49a0dfde4d203238385a70 +85ccb85831e5b74987c36643b7c8dcb69bafada6c6bf3f573c638c8c1717 +352d191e2c251a2e453c282a28211b17191e2220201e1b191f2c363d4759 +67798d9da47563462d1a131c262e363f4850595b585243312b3649586345 +351e0b0d1e2e37494d5d707a7b84929ea49a856f61544a2934393c423833 +3c47aaad9e845560636c64747c736b7a331fb1f7e8f5e8ebf4f1f1efeeee +eeeeedede9ff882d2b2a1223557f94a5b1dbe6e0ffffd78491beb8bfb8bd +b2a6a4b3e0ecf7fffcf3eeebe6f1ecebf5fffffffffffffffefafdffffff +fffffffffff2f4e0c6efe8d2f3fef5f4f0f0eff0f1f0f5ffff8192aeb5a6 +8d6d5442504942383d3233363a3f47535c535a7b8e9cb6c9aa7fc3ffddf2 +e6adcbdfeff3efecf8f1b9bebabfaa9d8e6c2b26322d1b2e2c2b31282a39 +32323e3c4896c8b967a2d2c4ffc8f0fac7e7fff1d4ccbfbcbba0334c483c +38160d15192a2e2c2d2c29282728261607090d122f4131222125262c2a2c +29222b3f587c9dbad3f7f1d0a1add9ffffffffffff8b2e271e242324201a +130d0c1c211b13131b201e24291f16a4a67b745f58595859585959595858 +55555352524f4b4a4b4f535455545756524f4f4d47494949494a4b4f4f4c +4948484845474b4d4d4c4a4c52514e50504f72b8917e907c828883837b5b +43384977756f598a4481816e748f6c58575d786c8671727c756b70786781 +3c534f675a4b505d656f645d6d5d5b684d47864e3b5f50524e5947575151 +3a4e493c4f49725c5a6f89221e2437332e37362628454b352b241a110f11 +161c212e3d4e667f9db6cad9e1edfdfffce9bdaa885e3e34394049535b5f +67727b7a8182858792acd0e9fae0a55f31282e31465164767c7e858f8a93 +9b99968864423637322e2d231d292219161b0d1c351a0d1f1e0e230e1d3a +1e91e6d1dfd5d1e1d9d9d9dadadadad7d9d7cd3a3137574f9ed4e7edf4ea +dfdad1ea8804000800030b0d2a3848709bc7d6dbe0e0dddad9dae1d3d7e2 +e0dbd9d7cfdadfdadce5e3dadfd5e2ddd6dad3d5bbabc7b190a1adc0d8d6 +d5d6d9dad9d6d3c72f0c0d0c0600000000171c25120e0811120700040c0d +0a1e532f271a17172261cec7cce4d4b1b3daf6f9e9e5cc7c352f423c473c +3714173d431927110b0f0f1a2c1a0607040025442100003f44b27f9db48c +9db6c3cdbdbfbdd8f481a1a9978e5d3d312d373837363534312f2e302319 +252d30537063634c413b2729221f17171c1a0e01000427433a28418ec2de +f3feffffc9433126201c19181b1c1e1e1718191a1b1c1c1d291d22086dc3 +adb1b9bfbfc0bfbfbfbec0bfbdbdbcbbbcbcbbb8b6b8bbbfc1c2bcc0c1bd +bcbbb8b3b6b6b6b7b9bbbcbdbcb6b2b3b3b0b0b2b4b5b2afb3babbb7b9ba +ba5fa57c687b676d78757e7d64514d62918f876e9f5793907b819a756160 +6681779885868f887e838b7a944e6561796a5f6d7f838b7c727e6e6a7960 +5c9e6a597d6a6c6a77667872735c6f6a5b6c658b716c7d932b2023322a23 +2c2b1b1e3d462f221a130f10151b1d1d1b1917161e2a313137485a6b7369 +5d3b3a2d180b0d1a21222b32383f4c55575f616366728db1cadbca9e6643 +3d3b3235333b4e5e6b7f918c979d9b9686623e31352f2d2d231f2b221918 +1f13254126192b281527111e3f29a0f5e0ece2dbebe3e3e3e4e4e4e4e6ed +ebe04736344d3e88bbced8e6e3dee1e2ffa21f102723272f2d4851587aa1 +cbdae0e5e6e3e0e0e1e8dcdfecece7e5e3d8e4e9e4e6efefe6ebe1eee9e2 +e6dfe3cec1ddc4a3b3bfd2e8e7e6e7eaebeae8e8e65d47565c5545372b1c +33353f2f2f2a3435271e212728253a73524f48494d5b94f1e0e4fff9d7d0 +ebf8f9f4ffffdec0cad4c0b8957336243c3e1a342c36372526332d32413f +4e98c696235cafa0fdb6c6d4a7b3cbdae4d3cbb7b9b4232a2a2327070002 +0f262c2d2c2b2a2c2d2f301a080b0c041d312222110e120b171a1e1b1c1c +1b191f344a71856946539bd1ecf9fdfaf9b228140b0b0e1216191a1a190f +1012141518191b281c210567b99e9d989797989797969594938f8c898887 +87888785878a8e90918b8f908c8b8a878286868687898b8c8d8b85818282 +7f7f8185868380848b8d898b8c8c50946751604a4e575861655144445c8e +908b71a25b97958187a07c66676b867b9a8687938c828991819b586f6b83 +77687180858e8077857571806661a26d5b7d696b6b79697d797c65787160 +70688f746c7d92281d1f2e251f2827191d3b432f27221a1414181e1f1e1d +1b1c1f293942454c5c6d808a857855503e22100e181e1b232c333d4b5251 +55504a45495e7b91a29067331b1e292c3b3f49596065718387989c9a9687 +633f353a3635392f2c382e25242b213451362737321f301623432fa7fce7 +f5ebe7f7efefedeeededededf4f4e74d322329083f6b7e95b9c9dae7eaff +d36e82b3bdc5c5b4baaea3b5d1f0f5f4f8f6f1eceae9f0e5eaf6faf5f5f3 +e7f0f5f0f2fbfbf2f7edfaf5eef2ebf0dcceebd2b1bfcbdef5f1f0eff2f2 +f1f6ffff9993b2bfbaa48b7356635e6451504650554d454952535069a68c +94969e9786afffffffffffe4e0fdffffffffffdfbdc6d3c2be9d7d402c44 +451f3c353d413236463e3f4d4f599bc69f2d66bdb5ffcad8e9bcc8deeaf2 +ded7c5cbcf4754554644200e121b303636353433333233321f0e1417132d +4436362521241a2527261c223651738faec6eefddba89bcff8ffffffffff +c239281e1c1b1a1b1c1b1b1d1a1b191817192026382e310e67af8b7c655c +5c5b5a5a58575756545454535553514d4b4d505456575155565251504d47 +484646474b4d4e4f504a4748484545474d4e4b484c53524e5051505ef48d +49644b6154524e5350544d3b31481f3d3c2b43382d39343c3e453f2b3730 +2c3337312f2e2527362a25a2631a32222220272a292c262b362b1f19052d +1023292d1120210a18251a1f172b1e1935305d92180f284b2d3234362920 +3d503f2820160e0f12181e2c394d617d9ab6cbdadedfeaf9fbe8c9b79369 +4d382a2a323241494a4f5b666a7d8a969492a0c3dff1eecb8f5f514e4a3c +45525d5e606b7d858e9599a8b09f825b482d273331282e2e3536333c3d30 +33453c371a2a26262d0c89f4d3daded4dad5d8d8d9d9dadad8d1db9e222d +3a5754a1e1eeebf0e8d7d8ed9414001514000f110f2f4362a1cfdfe4ddd9 +dbd9d8dbe0e0d9e1ddced5e0d5e1dbd8dcdedbdadfe5d7e2dfd8dfdbdcdd +cedad0dbe8d2ddd9d7d5d7dadbdad6d8d4501609040d0e1d200605062915 +00202d2a0e00000000090d34001b12000c000f2618424936130e3f6c7b71 +756823000000000f0a180521464b0b1800000000000500000000001d4325 +00004548a3baaed6d4bb90a2e7e7efddfdff90969a8f8e6340302a333230 +2f2e2d2c2b2c2d2f273639334e6d646b4a3c3e222a1d1a14141b1b110500 +02214a412b2e7db3dcedf8fbffef503829261e18192123221e231f1e2121 +20242c1c07231043ceb1a5b9c0c1c1c1bfbfbfbfbfbebcbcbbbdbcbcb9b8 +b9bdc0c3c4babec0bebdbdbab4b9b8b8b8b8b9babbbfb7b2b3b5b2b0b0b2 +b3b0acb0b9bab5bababa57ed84415b445b4f54535e626b685b51663d5958 +455d50424c474e5056513d4945444b4f4644433a3a493c37b4752a464144 +3f43433e3f373a473c343121492e40464b3142442d3e483d42394a3c354f +446d9e211427462629292b1e163348361b130c0c1016191a1c1b19181c26 +313a3b3f4b5967674d34322721201e18181b141f27272c3843475a687372 +7180a2c1d7dfcea17e726655302a2d37414e6981868e9498a4ac997c5543 +2a2631312a2d2c3336354041363b4d423b1e2d2725301798ffe2e8eae0e6 +e1e2e2e3e3e4e5e7e5f1b02d33364a418bc8d8dae5e6dce5ffaf30073333 +1d3235304c5a6fa8cfdfe5e0dcdfe0dfe2e9e9e3ebeadce3ede2ede5e2e6 +e8e5e6ebf1e3eeebe4ebe7eaede0ece2edfae2edeae8e6e8ebecebe7e8eb +774a4d515b585d57342d2c503d28546562442924231e2122450c2f291c2d +29384029525e5231244d6b78788d976d5c6569585f49401b28464e18362b +3c3b372f332b34443b3f99c391254e9d8cd7e3cdefe6cc9fb3f9f9fcdbe6 +e8473635323c1e0b0c13262b2928272627292c2d2b1c231e0b1e34272e14 +0d1a0a1d1a1b1a181719181c3042688c704b418cc4ecf7fcf8fada351b0e +110e0e141c211e1a1c17171a1c1e232a1a041f0d3dc7aa969a9998999997 +969693918d8b898888898b8887888c8f9293898d8f8d8c8c898389888888 +88898a8b8e86818284817f7f8384817d818a8c878c8c8c51e57b344a3145 +393e3d4d5461635850683f5a59465e5245504b52545d55414d48464d5149 +47483f41504641be7f374f444541464743453e414e433935244c2e3e444b +30434631414e41463b4c3c364e436a9c1c102242202425271a1532463722 +1c151114171b191d1d1d1f2733424b4d51596a7a7f6c544f3e2d251d1416 +150a131d2128364145545c60575059758d9ea4956f545556513a393f4646 +4a5a72808c9294a3a9997c5747312e3c3d373b393e42414c4d44485a4e46 +27322b2a351b9dffe9f1f6ecf2efeeeeedecedebeef0fcba2f291d1d0038 +6e8394b8d1dff8ffde7a6db7cbbcccbfa4a8a0a6d4f3fbfaefebebeae7ea +f0f0ecf5f3e9f0fdf2fbf1eef2f4f1f2f7fdeffaf7f0f7f3f5faeefaf0f9 +ffeffaf4f2eef0f3f3f2f7ffffba9daebbc8c3c1b182736b8b78608d9e9d +80645c574f4f4d7037615f5660464e59436971603c315a7d8b8a999d6e59 +636c5c66524a26304e552040354545433e433a404e494b9bc69b3059aba1 +edf7e1fffce0b2c3ffffffe6f6fe645b574d53331b1a1d303331302f2e2d +2c2e2f2c202927162c433740241d2817272320161b304b6882a3bde4ffe2 +ae8ec7f0ffffffffffe9462f212019171820221d1b24221f212021293528 +152e163fc19a796b60605e5e5a58585655535154535654534e4d4e525558 +594f53555352524f484b4848484a4b4c4d534b47484a4745454b4c494549 +52514c5151502fe9392229302f2b2a2723201c1917161f1e1b1818191e20 +211c212a1d0e1b2622152f230f3c2b2f3b1e166aeee136044652363d253e +242e2e311b5d7b69711b2323201e1d1919171919191b1c1e21243360721f +11292c3c3039382c252f383d231c1411151c2329374b637b95aec4d4e2de +eeebeed8d2b6946f4733323333303232353149455159687283929fa8aeaf +cfdcc3896f879c99845d423543544252697387979ea9afa693785d3e2420 +282c212a343224422e3c3a6f5e1816202c261986ebd1d1dccadbdadbd6e1 +ded4e0d1c9ee3927393d6d8da9e6e6f5e1d7ddea9917000e07091111172a +4166a1cadde4e6e2dedcdadbdcdddbd8d9dbdbd7d5d7dbdad8d8d8d9dadb +dedee1e1e0dfdcd9d5d4e2dcdad1e7d6d6dacfb4cae4d5d7d9dd8900150b +0905121518191a1c1d1b0b0c131e0f0f1e27151d3f29251e1f0f17020711 +1522220d17111319140600003200000e000d180c182635000b4332381e0b +050500000001293e2300002b05001304031c2c140410202d2d385154586d +7464574b3b2f2b2f272322242b3032303b3d3d36383e474c44433d2e2424 +2523332523271d09030e1e60503c1763aad3e4ebfffffb772a2c1d281b12 +293e4f684e3c261c1b264057363c352914bac2aeb2bcbcbfc4bab5c1bcba +bcbebfbebab6bdbcbab9b9babdbec3c2bfbcb9b7b7b8b8bab8b4b6bdc0bf +bab8b4b3b4b4b2afb0b1b1b2b3b4b5b5bab9b937f13f283038373838393b +3b3c3d3d3e46423f3c3a3b3d3f3f383a433426333e3b2e483c275442464f +322a7efff3481b657455593e52373f3c422c7192858d3943434242413f3f +3f3f3f3f3f404141414973812a162a2935272e2d211b253033130c090a13 +1a1d1b191a1c1e2127313946435a5a59423b291f1a181e292e251b1b1719 +132a232f37454f5e6e7c868b91bbd5cda397b2bdad824c25192e4a485a6a +6f839499a4a79e8a72583d22202a2c1e2731302442303e3c725e18151e2a +272498fce2e2ead8e9e7e7e2eee8dee9dedcff4a333b39617a92ced1e7dd +dceafdb133132c262a33353b4c5d7babced8dfe5e4e2e0e1e2e5e8e5e5e6 +e9e9e7e5e4e7e6e4e4e4e5e6e7eaeaebebeae9e6e5e3e2f0eae8e1f5e7e7 +ebe0c5dbf5e6e6e5eda52c504e514d55514e4c4c4e51544e555c6452494e +4a2c2a452c2a252a20331e181d1e2e342026180f1313131a24622f213917 +282915182b462347969aad9885787f8781797eb5c086254365281128150f +24331b101e2f38302c30201324332e29272420242c24201d1f242b2d2e3c +3d34251a18191a12171914141f282b3d291d21201c2f4b63a1805e2c72bb +e4f1f3fefbe95f0f110818110d243a4b6244321f1516243f5532382f230f +b6bfa3959795989c928c958e8c8b8d8d8c86838c8b898888898c8d92918e +8b88868687888a8884868d8f8e898783828383817e81828283848587878c +8b8b3af33f24282d2827292b2e32373b3e3e45423f3c3b3c3f41413b3e47 +3a2a37423f324c402b58484c56393387fffd52236876585d43593e47454a +34789889913b424041404140403f4240403f3e3d3e3d466f7e241224242f +222a291d1a242e341d171111181d1d1b1b1e22282e36434b545168696f5d +5a493a2d201d242824160d060d0925212e364349555e666b6d6b889e9874 +7297b2ae8f5f392835483a4b646c808f96a0a59c8b745e432d2c37382930 +3c3b304e3d4a487b68201b232f2b289cffe9eaf5e5f6f7f5eef7f1e7f0e7 +eaff54332d16272d346a749caec8f2ffed8679a8b5c3cabfada69eaacfeb +f6f6f5f0ede9e9eaeceeeeedeff2f6f4f4f4f5f2f0f0f0f1f2f3f6f6f7f7 +f6f5f2f1f0effdf7f5eefff1f1f5eacde3fdeef9ffffef83b6bfc9c5c8bf +b2a8a5a3a5aba9b3b8baa3928e80564a5d3f3d373c30412c282d2f3c3e27 +2d221d21211c1d26663429422333331e20314d294f9ea3b49b887d848782 +7f82b4c08c304c713c283d292539462d1e27363e393841362f3f473c3631 +2e272c332b2724262b2f312f3e3f372b222324261e24251f1e262d2d352c +375167789ac0dcffeec07db3e9fefaf5fffff76f222417231a11283b4a64 +4d3d271c1c29456040463d2d13b3b68d69605e5f61554e58525051535857 +544e54514f4e4e4f5253585754514e4c4c4c4a4c4a46484f54534f4d4948 +4b4b4946494a4a4b4c4d4c4c51504f32e8291e232723251f1d1b18161412 +121414141416181a1b171e202110dbdde0e0780f0d52ddd5eeec1258eecd +f1a417bedfe4e6871b271c231472ebead4e9291e1d1c1a19171716141414 +16161a1b1f3261762114292b36323939302624262a1e1b16161a1f273041 +597692acc2d5dfe1e1efe4e3ccb9906f553a2c2b2e34353532342e433841 +4b595a657e9db2b8b1a8a296857a8195a7ada08970382b2b3b515d738893 +a2aba6a7a19672432b27232e29252826412c325b8e6f2a17192c260471e9 +d7d6d1d5dad3d8d5d7d9dde2dbe0ad2d2a364c74a4e0dcf2e9eaeae8ac1b +000714000311182b416091c4dbe0e8e0dededfdededddbdbd9d9dad9d8d6 +d8d9d9d9d8d8d9dadadcdcdfdfdfdfdfdee4f0d3d8f5ece4f4eff1f2e5e6 +d5d2dfdbd789070c00080b0d12171c1b16110c1405090b0e1e1d1a0c1247 +332225353a4d22161f2024292427262c302f292324342d343e3a1e141319 +1b120020713e323c3032382e2a3642294028000937243137373532201a12 +1312150d10242b354b4a4038332b201e23222328292b2e302f42403b302a +292c2a2b2c281d181f252948423e38270f00001c656d4a256197c7e7e8f3 +ffffae46342a2a2019263640493426191d262d333930342e230c8cbd9fb1 +bbbabbc1bebcc0bfbcbcbbbbbab7b4bcbbbab9b9b9bbbbc2c1bfbcbab8b8 +b9b9bab8b4b5bbbdbbb6bab8aeadb4b4adb0b1b2b3b4b6b7b7bab9b844fa +3c31373c3a3c3b3b3c3d3d3d3e3e3e3e3e3e3e4041423b413f402df7f8f9 +fc9428266bf6ecffff266cffdfffb62eddffffff9e2f382d312585fffff0 +ff4840414041403f3f3e3c3c3c3d3d3e403f4b75862d1a2a282f292e2e25 +1c1a1e1f0d0a090d1115141210131b22282f383e464b5b4f4f3e37231e20 +212427292422221d1d132619222935373f59798e939397a0a3a1a3acbac0 +b398765b2b2a354551556b808998a19c9d9b9170422b29232b232225233f +2a30598d6e27151727271284fceae8e3e7ebe3e5e3e3e6e7ebe8f3c03e35 +38456590c9c5dfe0ebf4fbc6360e25311d2331394d5e78a2ccdcdbe0e0e1 +e2e3e5e7e8e8e8e8e7e8e9e8e6e6e7e5e5e4e4e5e6e6e8e8e9e9e9e9e9e8 +edf9dce4fffaf2fffdfffff6f7e6e3ece3e19e2b3e3b4b4f505153545452 +4f4d5a505556565e503f1f19462e1d2339445f331f232228322d2f292729 +2c2e32363f343c46402212101620272166d2b4bdd6cecad2d7cfc6c9b8be +8134405d31363e3d37331e19161c1d20120a100a081c221f1d1e1c191b22 +212223242525272b48463b27170e0805060b0d0c12202f355348382f251e +232e5fa49e6c3b70a8d8f8f4f6fcf9962b19151a141221323c43291a1218 +242c32362a2c261c078cbf9a9596929498948f94918e8b8a898885828b8a +898888888a8a91908e8b89878788888a8784848a8c8a8589877d7c83837c +81828384858789898c8b8a50ff4335363732322f3135363c3f41413d3c3c +3c3d3f40413b43424331fbfffeff972d2a70fbf2ffff2d75ffe9ffc036e0 +ffffffa43640353a2d8cfffff4ff4b3f3f3e3e3f3e3f3e3c3b3b3a383a39 +3a4773832916252329242a2a231b191c231714121216161614141b242e36 +414b50545769626558533a2f2a24222425241e140c0f0a2016202a35353c +516d7e81796c6f75798398b3c5c3ad8c6c34282a3a4952687d87969f9a9c +9b95754a35352f362d2d302e4a353b6495762e1a1c2b2b1588fff1f2eff5 +fbf3f5f0efeff0f2f1ffcf463122192037615b8095c1e9fff78d7ca1b9af +b4b8ada7a0a4bee1f0f1f5eceaebecebeceeeef0eff0f3f6f5f5f3f2f1f1 +f0f0f1f2f2f4f4f5f5f5f5f5f4fcffebf2fffffdffffffffffffeeedfdff +ffdd77979fb4bcbbb8b5b1aeaaa6a7bcb5b5b3aaa8917347355635212438 +45633b282e2e313732322e2e3135343538453c47514c2d1d171d262c276e +dbc0c4d6cdcbd2d2cbc7ccb4bb873d4766414951534e4833292225232418 +141c1b1d2e2d2624252320222827282a2a29282a2c48463d2a1d15120d0e +141612162431334b48525e646f889fd4ffffcd90b3d4f2fff4fbffffa63e +2c26271e1925333d4531241a1f2932383f363933240b8cba876d615e5d60 +585457555251505453524d53504f4e4e4e5050575654514f4d4d4e4d4c4c +46494f51504b4f4d45444b4b44494a4b4c4d4f4e4e51504e3ce4141d1d1d +181c1715141311100e0e0c0e101214141516210e1b230073ebc7dfc70030 +c7e1c3ec7e29d1d2d3c5f15428e1d1d6d0b8d8c4ccd0dac6d9e75c001717 +171616151515131313141517181c2e5f792117292b3134373835291c171a +181b1d1e1f25303c546f90aec5d5e0e4dde1efd6d0b08b583d322d292c31 +383b342e312c3e2d343f444a56617187a0ada3a59577758fa09f7d8a838c +5c34332c3b42576e7c90a1a3a7b7c2af8c77654f41342f3739442f31254d +3c31322c3c3e1b6ae3d1d0bbddcad3d7d9d1d6dcd5dbee55262e385c7ebd +d1f0f9ddd9f09b14000020160518273134689cc0dde6e4e8dadbdfe1e2e0 +dcd9dcd9d8d8dcdddcdadbdbdbdbdbdbdcdcdcdcdddddfe0e1e2d6e5f7f0 +8f372b1813397dbaf1e8e5cee9e5b754401d170e13161b1c1b16100b140e +110505141d132a093a3024383f414c21162d3126242622272b2c2c2e2a2a +263c4c4b65290b171c200c0000632e2a140f181c130d1d2a293f260a001c +15386b5e4947182019160b0f0d121f21232d312c2a29241d1c1f15192020 +1d1b1d1c131417151a21272926251f15111821262d363b2f251b0c001663 +915b39607db5e5ebf1ffffd956322c1f1a1718222721201b1b262e2f2a29 +1d20211c0a55c5a4aab9bbb9bcbfc1c1c5c1bbb8b7b7b6b6bbbbbab9b9b8 +b8b8bfc0c0bebbb9b9babbbbb8b4b5bab9b6b5bcb8acaab5b7afb0b0b2b4 +b5b7b9b9b9b9b858ff303a3c3d383f3c3d3d3d3d3d3d3e3a3c3e40424241 +4049363e441690ffe2f8e01749def8daff923de5e6e7d9ff6b45ffeef1e7 +cce9d2dde1ecddf2ff7b1b3d3e3e3e3e3f3f3f3d3d3d3d3e3e403f487389 +2d202b27292a2c2d2a1f120e0f080a0d0f100f0d0b0d13202b32383d4347 +4d543e4236331f2026292822212226221c1d152511151d2026303b4a6079 +8d93a3a19096b5c2b8898b7b8356353e3638394c63718596989dafbcad8b +7768523e2e293133412c2e224a392c2d27373f297ff7e5e3cef0dde4e8e9 +dee2e6dee8ff68353838556ea9badae9d6deffb5320f1d3d332234454e52 +80b0d0e3e5dfe4dadee4e8ebebe9e8eaeae9e9eaebeae8e9e9e9e9e9e9e8 +e8e6e6e7e7e7e8e9eaddecfef99843372621478dcafffaf7dcf0f0ca736b +50524c515457595856514e5350544948504c353a0d36281d38444b562919 +2c3025252a23272626272c2e2b1d2f42445f22010e16211b1a3fbb9caeac +adb0b7b9b0a7aaabb2713c26381c35685b443f111a171912171211150f08 +131e1d1e201e1b1b2014181b19141011161c201d150f11100e0b0e0e0c11 +1d2c353d3f32231d252d3055a2c2804f6f8cc5f8f9f6fbf8c23a17150f0e +10131d2118130f14212d2e2924151617150859cea2929393919395949395 +908a87858584848a8a8988888787878e8f8f8d8a8888898a8a8783848988 +85848b877a7883857d8181838586888b8b8b8b8a66ff3b403f3c35393535 +373b3e42434238393b3d4040403f493842491b96ffe9ffe51e4ee6ffe2ff +9b46eeeff0e2ff734bfff4f8efd5f3dde7ebf6e5f9ff801d3e3d3d3d3d3d +3d3d3b39393938393839457186291b262426282a2b281e130f1312141716 +1312110f151e2e3b444b5053535966535a4b432824262826232225251810 +120d200d131c20262f38455b727e727c7d7281a8c1bf999f90946037382d +3334485f6d8192969badbeb0917f715b493a333b3d4a35372b514033332d +3b432c84feeef1ddffeef6faf9eeeef0e7f1ff763a2f1c2121484a6b8990 +beffd87a7da3c7bfaeb9b7aa92acc9ddeff3f3f5e6e5eaeef2f1f1eff3f2 +f3f3f7f8f7f5f4f4f4f4f4f4f4f4f2f2f3f3f4f5f6f7edfcffffa7514533 +2e549ad7ffffffe9ffffeb9fa29198979c9d9d9c9b969394a09ea2948e8f +82625e284733243a474c582c1e32362a292b25292a2a2d31312f22364b4c +692a09131a25222249c9adbbb1aeb3b9b7adaaada9af76432a3b22407b70 +5a5423282220181a16171e1b172024202223222021251a1e212019141518 +1b1e1d15131416151214140f13202e32333e4d51566d8c9dc7ffffdba4b4 +b7dcfffafcffffd4502a271c1a181921231b1c191c2833342f2b201f201c +0d5acd956c62605d5b5959575755504d5050515152504f4e4e4d4d4d5455 +5553504e4e4f504f4d484a4f4e4d4c534f45434e504849494b4d4e505050 +50504e4dd6001918130c151210100f0f0d0d0d0e0f101111101111251418 +2a300dd0d4c5e63a8feec8e99800a8ebc9d1d1dcc70077d4c5d6ecd5ecf0 +dbcdcedc8b00201514141515161616161616161718191e2e5e791b19272c +2e353335372c1a1318181d2124262f4053728dacc5d5dde3e2d9d9dcc0b7 +895f35201d24292f34373a28222c31432d313b37445152525e798da2bdbf +987f89938d8abdc6cb9b222b3b3b38425562748c97a6b2c0beb3a7865836 +2b272f31332f37353c31414d32393e115ceec9a378cfd0d0d2d9d2d6d5cd +e3cc282a2f416a8eccdbf4edfafb921d00080b11040e292d385897c5d5e0 +e3d4c1dcdbe0e2e1dfdbd8dbdbd9d9dee2e2dddadadbdbdcdcdddcdddcdc +dbdddfe1e3e3f58c1a001c36252d09000061b3f1e2d8e2e7c6c1a8a89d98 +97979595939092949c83767d7f9e7c57153939283e322d341b1a31392821 +2520282a23222829252c393b415e36192722201712006b615c4f4c514f43 +42515b546b4837081718356a524863221e11191214171c21201c1d2c2929 +26221f1c1d1b1d201e1c191a19111215151920242323221c1511131b2130 +3f4227151408001e6ab87a5e787cb4d4eff8feffee673736272a2b1f232a +1e1f2326292a27282b19181f20112ac4b2a6b6bdbcb7bfc5c1c6c2bbb6b5 +b6b7b9bababab9b8b7b5b5bcbec1bfbcbababcbebebab6b7bab8b2b9b8b3 +aeb0b6b7b4afb0b2b4b6b8babbb7b7b66efa253e3e3b353e3d3d3d3d3d3d +3c3d3f40414242413f3d4e3c3e4b4e28e8eadbfd51a6ffdfffaf05bcffdd +e5e5eede1794efdeeafee6faffede1e5f7a813433d3e3e3f3f4040404040 +4040424344434b748c2a222c2b292b28292b22100a0d090c10110d0c0d0d +161d2732383a3e4145484731392b2a21252c2d29231f202619151d1e2f14 +141c16212c2d2a36516d8eb6c1a493a2aba196c2c7c99b263440332a3447 +53677e899baababcb2aa895b332521292b2d293130372c3c482d343f2074 +ffe1ba8fe6e6e5e4eae2e4e1d7f0de3b38363e607cb5c4dedef5ffa63c09 +2a2b30212b4447506eabd5e0e7e6d1bedce0e5e9ececeae9ececeaeaecf0 +eeebe8e8e9e9eaeae9e8e7e6e6e5e5e7e9e9e9fb922101253f3139170308 +73c5fff3e2ecf8e0e5d3d8d1cdcccccccccdcecdc8cfbab2b9b5c99a6415 +302e223e3b36391f1a2f34261f231e26251e1c22231c1d2a2e375730101d +181c1e2b1eafb9c5c0c2c2c5c6c1b9b9b7be78532025132a614a3f571713 +0b1613171a1d1c160e10232523211d1a191c181a1b18130e0e10161c1a16 +141513101012110f1118252d4049391a0d1926275ca8eaa0748789c5e7fe +fffbf9d74b1b1f151c21181e241512161f26292827260f0d1416102fd2b5 +8f9297948e92979396928a858484878a89898988878684848b8d908e8b89 +898b8d8d8985868987818786817c7e8485828081838587898c8d8989887f +ff2e46413b31383636383b3d4142413c3c3d3e3f3e3d3c503e41525631f2 +f5e6ff59aeffe7ffb70ec5ffe6eeeef8e61e9af6e5f3fff0fffff7eaedfe +ae18473f3d3d3d3d3e3e3e3c3c3c3c3b3c3b3c47728a271f2829262a2629 +2b23110d131014181511101215232d3a454d4d4f5151555a454e3b32221f +252a2927242627160f1618280f1017111d262728344f62769aa990879cad +aaa6d5d9d7a329313c302731444e617b8699a7babdb7af90623e312d3335 +37333b373e33434e333a432578ffebc89ff8fbfaf8fcf2f1ede0f9ea4238 +261b25284f526f83bbf3be7565a8babea9abb5a4969dc6e2e6efefe2cfe6 +e6ebf1f2f2f1f0f4f4f4f4f9fdfcf8f3f3f4f4f5f5f5f4f3f2f2f1f2f4f6 +f7f9ffa2311134503f4924121781d3fffbe3edffeffff3fef9f9f8f6f5f5 +f5f7f9fafff0e6ebe4f4c0842f453e2e48443d3c201c3238292224212729 +2220262721222f353f5e34131e191d24322cc2cfdad0ced0d1cec8c6c5bc +c2825e24261732725f546b2721151d181c1f22231f1b1a28242525232020 +221f21211c18121013191d1d181819191414151511131b272b364a56463e +598090cbfffff5c9ccb3d7eeffffffffeb613133252b2c2024281a191f26 +2d2f2d2d2d17151c1e1532d3aa6d62666056595b5558544f4b4c51565651 +4f4f4e4d4c4a4a51535654514f4f515353514b4e514f4952514c474b5152 +4f4a494b4d4f5151524e4e4c67c1001816110812100f0f0f0f1010101413 +121111121314002d140c4f7bc1d3d9d7c3f0c3d3c61980e1dfdbb5dccfec +8e06d7ecc2d3882066d3d0debe29221f1513131415161616161616161718 +191d3a6580191b26302e3630303026181219171e22242b3a546d93abc3d4 +dce0e2ded3ccc3a193603a241716212a323633311b1a2c3a4f32313e3b3f +454b515860637996bcc6ac8e899689978091c435323f4839374249546d7b +959faeb8c0c4ac8052391e1721283d4a33393f24291c31331949ead2b68c +e1d7cecad0d3d5d2dbf37f242f294c72a3d2e9f3eee9c71d00030c02050e +27353553a0bed1dae2d3b39de0e0dfdfdfdddbd8dadadad9e0e8e8dfd6d5 +d5d6d9dadcdcdedddddcdcdddfe0fb882117322c2c403546431e1f42a4ea +e6e2e5d4c9b1aca3a2a3a3a4a2a09fa09da05c628176a3556d28424b2529 +1c1f312f29292f2c292b303533292930363327221e2d24241b25341a1f35 +04849d679c9f9b91868b97988d9c6d60232c3b483c36436a2b2315191513 +141210151e2028282724201e1f1d1e1a17171b1e1f1d17171917191d1c17 +1817171514151b1e35474b321a150c00145bb9876d8579a6c4e9f8feffff +8f45362c3535201e272329272424272a2928252427271a09a3bba7b5c1c2 +b5bbc5c2c7c3bdb9b6b8bbbfb9babab9b8b7b5b4b9bec2c2bdbabbbcc0bf +bcb9bbbdb9b2bbb2aeb4b7b5b3b6afb0b2b4b6b8babbb6b5b48be71f4140 +3b353f3d3e3e3d3d3c3c3c4241403f3f403f40265235286791d3e5ebebd7 +ffd7e7da2d94f5f3efc9f0e3ffa921f0ffd4e4962e77e5e4f7db4845453e +3f3f40414243434343434344454646587e9427242a2f282c2624241c0d09 +0e0a0d0f0e0b0b11131f232b3236393d4242423c283523252b2e2f2b2826 +232322100f202a3c1b16201b1e21252b3139415d83aebfab92909e919f84 +93c434323b3c29283337455e6e8a95a9b7c0c8b0834f331811192036432c +32381d24172c362a65ffedd2a7fcf2e7e0e2e4e2dee5ff90363a2e49678f +b9cfdcdee6d2351e2a3226272e434e4b67b0cbdbe3e6d7b59fe2e4e6e8e9 +eae9e9ebecebeaeef4f2ebe4e6e6e7e7e8e8e8e8e7e5e4e4e5e5e6fe8b24 +1c373333494053532e3053b7fbf2eff5e9e3d0cec8c8c9cbcccececfcec0 +c38692b4a5c86f7424363d202b272a363129292d2a27292e35322824292b +2820211f322c2a1b202910193c1aaad39ec7c3bdbcc2c5c0bdbcc1755c21 +252a3434323a5f20190b12101113100b0e14162324211b16141516191512 +1112131312161a1a151414100b090b0c0f0f141c2745534422111a262951 +99ecad829286b6d8fcfffcf9ee73291d19272b1917201a1a1b1d22282b28 +231a171a1e1913b5c293909b9a8c8e979295918b8685868b8f8889898887 +868483888d91918c898a8b8f8e8a88898b878089807c8285838184808183 +8587898c8d88878699f228453f3930383636383a3b3d3f3f403e3d3c3d3e +40412b583c33739ee1f3f7f6e2ffe0f0e3369dfefcf8d0f7eaffb028f7ff +deeea13981efedfee14d49484040403f404140403e3e3e3e3d3e3f40567b +932723292d282d2526261d110e141113131110111a1f323942494c4d4e50 +4f4f4b39432a242426292a2b2a2726251413222a38150d150e0f151a222a +32384f72a1b5a79396a99eac909fcc39343c3c292530334059688693a6b5 +c0c9b3885a3f241d242b3e4b343a3f242a1d323b3169fff8e0b8fffffdf7 +f6f6f2eaefff983834181e253852607690bbd865759fb9b2ada9b0aa949c +d2dee5eaefe2c4aeeeedeef1f2f2f2f1f5f6f5f4f9fffef7eff0f0f1f2f3 +f4f4f4f3f2f1f1f2f3f4ff9e372f4a45465a5263633e4063c6ffe8deeae2 +e4d5d7d1d5d6d7d8dbdbddddd3d79ca9cfc1e38a903d4e5637423d3c3c30 +2929302d2a2c3337372d2a303330272623352e28191c270f1b4428bfedbc +e7e3e0dcdcdddcd8d0d38a6d2c2c303f43434b6f2e241419161618151216 +1f1f272525201e1c1e1e201c1815171715161b1f1f1a1817140f0e0f1213 +151921263b53634f3c527b8ebcfffffed5d6a9c5dfffffffffff8a40332c +3636211e271f1f1f24272d302d29201e21231e15b7ba72636a6756555b54 +5854504d4d535a5e504f4f4e4d4c4a494e535757524f5051575655505456 +524b564d494f545250534a494b4d4f5151524d4c4a84a4001716110b130f +10101012121312131312121214181a280d3ebeece9eee9e3d8d2c7d3f036 +46ebe2d6bd29dbd4cfda2035efd2e2d30bb7eacee850000f1b1414141516 +171717141414141516171b477089161c24312b342f2a241a121014171b21 +27334b6986a8bed2dde1e1e0decfcbb27d6d4229231c1b21292f312b2719 +1730445732303e4b4e50473f404a54586581a2bdc6baab8c9b8990be2025 +4b533b373f3d3e4f5c71819cafbfd4dbcca3793e1b202243475677a4331d +1728140f28d9d1c39dd0bfd4cfc7cfc7c7dcd3382a2c26587eb8d9e5ffee +d53600070709071824303b5a98cad4e0ecdfbdb1c7e2e2e0dddbdad8d9d7 +dadadae1eae7dbd4d2d1d2d6d9dddfdddcdddcdcdcdee0d5545752495862 +3d3f3c4240414a71d3e1dddcd6cfbcb4b0a6abb2b6b3aea7a3b0b97b7e99 +7eb36678352f4c32281a1b25342e232b3026202527231d1d253031383a3e +49212d31312e1a28400a5f9e3facb4b0a69ca3afa9a09e6a672f305b5d3e +342b3c293e2d18191f2c2f24272f2b2b2e2f2b292c2c291f1814161e262a +28131517191f2424211d1d1c1d1a161b1d232f3d372a2112040242a78e69 +887791c1e4f2faffffb7422f3239352012182032291e1f2d362d21292c2a +271f0173c9b7b3bec4b4b8c4c0c4c3bfbbb8b7bcc0bab9b9b8b7b7b7b6b8 +bec4c4bebababcbfbebcbabec0bbb2b9b7b9bcb9b3b1b4b0b0b2b4b5b7b9 +b9b7b6b5aacb2340403e38423f3e3d3d3c3c3b3c3f403f3f3e4041424d2e +5ad6fff9f9f5f3eae4d9e5ff4a5afff6ead13defe8e6f3394cffe3f3e119 +c8fce2ff6d1535434041414142434444414141414245464667889d262628 +2f252b251e180f0707090b0c0d0a0a0f171b24262b3133383d4341493e22 +2f20242f302e292829282521110f2435451e16212c2e2c221a1b24303647 +6488a9b7b3a990a29095bd1b1a3c4029232d2a2c3d4d637897aebfd8dfcf +a0733815181a3c404f709d2c181223172245f6efe0bcecdbeee7dce2d7d5 +e8e04a3a372a5271a3bec9e8dfd142172c31332d3c444b516ba5d4dbe6f0 +e3c1b7cde9e9e9e7e8e8e9eae9ecebe8edf4efe5e2e3e2e3e4e7e9ebe7e6 +e5e4e4e4e4e3d65558554b5d694547494f4f525b84e4ede9e9e5dfcec8c5 +bbc0c7cecfcbc5c0c7d19ba5c7a9d37b7d2d203d2929262928342e232b2e +241d242828201c1e2024323a45542d383631250f1e3e1476c25eb5b2aeac +b5beb9b4b6ae625827264a4d383327361f34230f101625281d1f27232528 +241e191b1c1c15110f11181d1e1d0c0f1112151b191511111112100f141e +323d36281f232b303d80dbb57e93829fd9f9fcf8f9f69b26151c2b2a160b +1117231a151d2e372c1b1d1d1b1e200c86d3a291989c8b8b969092918d88 +87888c908988888786868685878d93938d89898b8d8c8a888c8e89808785 +878a87807e828181838586888b8b898887b3d228423e393138333436363a +3a3d3b3e3d3c3c3d3f4344533565e2fffffffffff6f0e5efff5363fffff3 +da44f6efecfa4054ffedfdec24d2ffebff731a384543444442434241413c +3c3c3c3b3d3e3f64889e26272930252c26201a130b0c0f0f0f0f0e101723 +2d3b3f474b4c4d4e534f554b2b3421202b2e2c2b2d2d2b25251c1c2e3a43 +15090f1717160f080b17242c3f6087abbebbb49bac989bc3212041422922 +2b26283948607393aabdd7e0d4ab814621252544485778a4331e182a1e28 +4bfef9f0cefff1fffff1f3e7e2f4e84c37290f222b48575e889eb85c619e +b9bdb2b7b1a69ca3cfefedf2f9eecdc5dbf3f1f2f0f0f1f1f4f3f6f5f3f9 +fffcf1ededecedeff2f5f7f3f2f2f1f1f1f2f4ea696c6860717c585a5a60 +62646d95eee9dde0dedccec9c6bec3ccd2d3d1cdc8cfdba8b4d7bce89091 +4233503c3b36342d342e252d3329242a2d2c2522262b2e3c424b582d3430 +291e091c411e86d87ad6d7d3d0d3dbdcd4cec57a6d342f5257464135422a +3d2b14151b2c2f252a342e292a2a25232527261e1915151a1e1e2114191b +1a1d201f191515171818161c222b3e575347567b91a5e3ffffcfd5a2acdd +fcffffffffb43f2e313c382113191c281d1a22333c311f21201e2124108c +cb8363696955525a525352524f4f545b5f514e4e4d4c4c4c4b4d53595953 +4f4f5358575553575b564d5454565956514f514b494b4d4e5050504e4d4b +9c84011414110e1411131314151517151414151515161618131ec0ecd5d7 +a92b2ab8ddd5e26d15e2d4d3e4380b76eec9eec008abe9c1eba8e5d1dd97 +00434a121412121515151616141412131413141a466d87121b2230272e2d +261a12121312181c222d415d809dbacddfe5e5e0ddd8ced4a957452e2929 +29282726262323211817314557302d3f596b7c735a47464d50595b6795c6 +cdb6a392788da93e333e4f3a3d4a45393e4656617d8f98afc8cecdb5824c +371c332b2e51b4231c202e191430eaddb18eb7cfbfcbbac3b5b9cb7b262a +2b31608cc8e1fff4edc10b0b000e060b22242e548bc9d3e3e7e1d2c1cdee +e1e1e0dfdbd9d9d8d6dad9d8dde5dfd1c7c4c3c4c9ced4d7d9d9dcddddde +dfe0ce56673f5444354b564b4947404b49cedce3e0dfdac8b7bdbcc1c8cb +cac3b9b4abb09a868e6c90618547204f412d282d2c39291b2729190d0e0a +090a0a0e1a211c2e3f392023221314272f310f3cb6619baeb3a79aa0aaa4 +a48f63703c1d5958483d2d2c323f311c1d2b474d3b373b302d3438363536 +342d29262425292f33342d2e2c28292a2622272422221e1a1f223930363b +331e05000144a6aa7394868dbbdaeef9ffffdb4538464a4436201d2e2f2b +211b2027261f282f282320073cd6cfb5b4bfb4b8c4bdc2c4c1beb9b6b9bb +babab8b7b7b8b9bab8bfc6c5bfb9b9bbbcbbb9babfc2bcb2b4ccd7c7b7b6 +b6b1b0b1b2b3b4b6b7b7bab9b8c2ac293e3f3f3c423f3f3e3e3c3c3b3c3c +3e3f3f3f3e3c3b343bd6fee2dfae3036c8ede5f27f27f4e8e7f84c228dff +e0ffd71cbdfacff9b6f6e3f4b21066723b41424243434343434141414243 +44454466859c2225262e2125221a0e070708070d0d0e0f121a222627292c +3133373c41405c501d282528292827282a2c2c2925150f2638471e16253c +4c595036232228282d2e3d6da5b6a9a0977d90a4311f273926283630262d +374958768c99b4ccd2cbb17c462f142c24274aad1c171b2b1e284dfffbd0 +afd6eddbe5d0d8c6c6d788363a3435597eb1c6e5dcddbe1825223a313548 +45486898cfd7e4e8e3d5c7d5f8eaeae8e9e9eaeaeae8ece9e6e9efe7d9d5 +d5d4d5d7dce0e3e3e3e4e5e5e6e5e3cf54654056493b535e585656515c5b +dfe8ece9e6e1cebdc0bfc4cbd1d1ccc4bfb6bfb4a9b692ac72843b0d3d36 +2d343a30392a1c2828160c0e0e12110d080a100f273e402b2f2915101f28 +321d55da82a8b0b4b3b9c0b9b2bfa66169402458574a412d2a2c38261011 +1f3a422f2b2f24222827211d1e1e1b1c1c1d20232627281f201e1b1c1d19 +13181513130e0a0f1b483e2f2c271f1c223a80d9d0869f919bd3f2f8f8f9 +f4be291e303c392c191624201c1819232a25191c211a1a211254e1bc938e +978b8b968d90918f8b8887898b8989878686878889878e95948e88888a8a +8987888d908a808299a4948483837e81828384858789898c8b8ac5ae293c +383531353232343437373b3b3b3c3e3e3e3e3f3f3b43e3fff3f2c24346d5 +faf2ff8b33fff1f0ff552893ffe6ffdf25c7ffdaffc1ffedfcb9156a743d +44444443434140403c3c3b3c3d3e3f4065859d2226272f2328261e120d0d +100d111010111823303a41444a4e4d4c4e505066561c2420262b2e2d2d2d +2c292528262436414714040c1e2d3b321c0b0c18202c314176aec0b3a99d +8195aa38282d3c2727352d2226304353708794b0cbd5d6bf8a523c1f342c +2f52b5241e2232242f53ffffe2c2ebfff3fce7ebd8d6e390353021142535 +545f7f84a9b54584aed1bbaeb5a293a3c5f1f2f8faf2e4d5e2fff3f3f3f3 +f2f4f4f6f4f8f6f3f5fbf4e6e0dfdedfe2e7ecefefeff1f2f2f3f3f4e36a +7b556b5d5168736b696b65706ff1f8fbf8f6f1decbcfced3dce1e3ddd6d3 +ccd6cbbfcfa9c1829245113d32252a312f3b2c202c2e1f14181719191614 +172021374c4a2f2d220a04121e2c1e5ce693bbc7d0cdced7d6cdd4b8777b +4b2a5d5d564d393536402c141523414a39373d30282c2f2a2a2c2b272625 +24242527272c2c2f2b252524201a1d1a1a1a18151c22434150574b4f6a81 +a1e2ffffd5dfafa4d7f6ffffffffda4237454d4737211e2c231f1d1e282f +2a1b1e211a1d251658db9c66616655525a4f515254525053585a514f4d4c +4c4d4e4f4d545b5a544e4e52555654555a5f594f516a75655556564f4b4a +4b4c4d4f4e4e51504ea76e030f10110f1413131414151515151517181918 +1412111a18f0d6c7e83c4995e4cfdca300bcd3d3de800c1625c3debaed64 +00d9dfdbcbc8dfc5012a1b17131412121214141515151515141514171b38 +62820f1e243327282720110f161a19252a3240557395b1c9dae7eae3d9d0 +c8bdd0a03d2c292d282c2d2a26211f202317142d43562f30456380a6baae +845434404b5a64636d92b8bfa8909d783b445348374257503e3a3c42455b +73839fbcc7cfe0cf97692f3c2e4d46b1151f18251a1900957e75727a8692 +b6aab9abb0b72d2f262c44699ad0e7f4e1ff4d121510000b1631345093c4 +dee1ebd4b6c3dfe0d5dedfe0dedddbd9d9d7dbdbd7dae1d8c6b3afaeaeb4 +bac1c6d3d5d9dcdddedfdfc947a16030304b4b4651534b436143ccdce9dd +d6d3c7bccac3c4c6c4c1beb8b3bda6ad89947875507c5729573d1c314e60 +562c111c1f100e100a0c11100b141f1d364a384a4236161e3e250f122aca +868eaabebab0b2b5abae8a607741013a342d3d5258471f11201d283f3e24 +232d26252e312f2c2d292121242524201e1f211c1e1c1b1e22201a1c1817 +1b1b1c272e583b323c3c28110a003b98ad658c8783aad0eefbfffff95c36 +4b4e4942261a2d222a2514080b1822343c2d231f0a15d2d9aea9bebbbdc3 +b8c1c3c3beb6b3b5b9bbbab8b6b7b8bbbcb8c0c7c6bfb9b8bab9b9b7b9bf +c2bcb2b2e1f3d1b6bbbeb1b2b3b3b4b5b6b7b7bebebdcd942b383b3c3a3f +3e3e3d3d3c3c3c3c3d3f40413e3a33303730ffe8d4f14350a3f4dfeeb50e +d0e9eaf597232d3cdaf5d3ff7b07ebf1eddddcf6de1e4b3e3d3c41424242 +4242414242424242434545455a7c961a22222d1e1f211a0b060b0d080c0c +0e121822292c2b2b303335383c424975641c222a2b232223272a2a292928 +16102537461b1528425e859b8f693b191c1f2c33344473a4b5a48c976c28 +2b3a32232c433c2a282d343a526b809ebbc5ccdac99161273527463ea90f +191522212f1eb9a7a19fa5acb1d0bfcebec3cc43443735425d87b6ccdbce +ff4f23323623323a4f4e65a3cce2e2ead3b8c6e4e9dee8e9eaebebece9e9 +e7ebe9e3e6ebe0d0c1bfbebec2c8cfd2dfe1e2e6e7e8e7e6ce4aa4633535 +5253515c605a547255dde8f1e5dcd8cabdcbc2c2c4c5c3c0bcbac7b8c6ab +ba9c93627f4f1948331a395862562d121d1e0f0d100e131813080811102d +483c534c3c191b3a22111d41eaa59eb0bbb7b4b7b1a9b9965b70450a3f3c +3446595b481d0b150e172e2d12131f19161d201b1615110b0b101413110f +10120c0c0c0b0e12100b0d09080a090a122260442d32382d272e2d75d0da +7f978988bee6fafefaf2e1431c333b3b361e1526161e1f12070a1319252c +1e1a201328ded396838f898c978c9191908c898586878a89878586878a8b +878f96958e888789888886878d908a807faec09e83888b7f808282838485 +86868d8d8cce952a34343331353434353537393b3b3d3f4041413d38353f +3afff6e4ff5662b0ffecfac119dbf4f2fd9f2b3342e0fbdaff8310f5fbf7 +e7e5fee5245042403e444444424242403f3f3f3f3f40414243597b971c25 +27312122231c0d0911140e100e10151f2b383f44484e4f4c4a4a4d547c64 +1719242c272b2c2e2d2928262b242134414712020a192e5265603c12000e +1c2e393e4c79a6b4a18b976e2c314035252e443d29262a31364d687b9ab7 +c6d5e6d59b6c323d2f4e49b419231e2b2b3a2dd3c5c4c6d2d9ddf5dae3cf +d1d1413d271a19233b59657681dc5e6ba7c9b8b3a8b1a2a6d4f1fdf7fce3 +c7d7f7faedf2f3f4f4f6f6f6f6f4f8f6f1f2f7eddccecccbcbcfd5dcdeed +edf1f2f3f4f4f6e15db776484965666370736d668469f1fefffcf2ecddd1 +ddd4d7dadadad9d7d7ebdeeed1dfbeaf78905a1c452a0e2a4d5f562f1421 +2315151a171b201c131620223e56485a4e3a12122f190c1f49f7b7b5c8d6 +d2cdcdcac1cba66f82500f433f3c4f61624d220f1b151f36371e1e2c231d +23282422221e17171b1c1b16121319191c1916191c1a1214100f14151621 +2c624d4b554f53708e97d9ffffccd9af9cc9f1fffffffff75935494f4c44 +291c2d1a2223170c0f191c282d211d24182edabb745e655852584b535659 +5752515252524f4d4b4c4d50514d555c5b544e4d4f50504e525a5d594f50 +7f916f54595c4e4b4a4a4b4c4b4c4c535251c25506111911160f1e0b1617 +0c12140e0d340c15206da9998158cee8dfd1f1efebdaeeca0393eadae39f +0f202b0a4fe8e2deea1b63eadbdaeadb4a0a212c340b190e121f071c191a +171220191b0c23193f678b002b2d34321e130a070b131c2837475260748c +aac1dbe2e4e1d7cec6b9aaa995332a2b27322e2e2c2a2a2929281916213f +4a373756709dbad6e2d3a86e3738474c575e5c768ca6c0bca282706b5742 +3d413e3e3c373a3b455467809eb3d2dcddc6a581583a2f3d29273331302e +26001a141411050e16a6bcafadb27a272529304c83b5d9f1edebe53b0d0d +060c1f37364c93c5d3e1e8d3a396c5e9e2d5e0dededddddbdbdbd8dcdbd6 +d7d9ceb8b4b1b1b3b6b8b8b9bec1cfe0c8dfdcddc17079a09c795a6c6359 +607186784fdbdce2e2ddd3c8c0bdbfbec6c5abb3be858792827179728348 +6e461839332654613f57431f242e201115110c08070a101423232c3c4b52 +37091b2b230e1311b27d65b1c3d9e8efe1dbe0a46a89651724160a55353a +421013181b2c3b3c342c2d302e2d2a282627282d2f2d2c2e2c28221e1d1d +1c1b1b1c1a1b1a1916161a21221c3234353a381f0d0d0b1c7db46c7fa57a +a7d1e6f7f8fff570395155524f321212120d0e1317151316231c12161213 +00b3e4b7a2c2bfc0b1b5bdbdbdbdb3aeb6bbbdbcbcbcbcbcbbbbb7bfc7c7 +c1bab9babfb8b2b4bbbcb5adbed0d9cabab5b7b6b5b5b7bbbbb7b6bac0bf +bfea7d2e3941393e3746334041363b3d37365c343b438ec6b4996ee4fcf3 +e3fffffdeeffe01baefff7ffbc2c3c472367fffdfbff367efff6f5fff869 +29434e5733453e404d33484243403b4945473a4f4366849b00201c202318 +15100c0a0a0c09020610181f272e30342e2c2f363d49566a817820212723 +2d29292a2a2a29292a1a171e34371b1630477597bbd0c8a569241b21222d +373f607b94a9a385685b57422f282e2b2b2c272a2d3546597290a7c9d5d6 +bf9e7a5335293723232f2f2e35411e4c4f595642413bc0d0c1c2cfa04e44 +3f38466e95b6d4dbe4e849242d30333949465a9dced8e4ead6a598c8eee8 +dde9eaeae9e9e9e9e9e6eae7e2e3e5d8c4c1c1c1c3c6c8c8c7cbcfdceed6 +edeaebcd7c82a9a58263756f646d81978962ece9ebebe6dcd2cac6c8c6ce +cfb5bcc7939eb2a698a297a25e794814322d2155623f57431f242e201114 +120d0907090a0c1b1d2a3e52593c0d1b2923111c22c7967cb9b1b5b6b9b1 +b4c99357785a14241d115e40434a1512110e1824251c16191f1d1e1f1f1d +1a17130d0703050a0c0e0e0d0d0c0b0b0c0d0e0d0c09060a1112102b3136 +40433020293652bdee908b986db0e3f6fffafce7591d33393b3e2810120d +08070c0d0a0607120d050d101605c1f5b878827f8a8c94918b898a8a8583 +878a8b8b8b8b8b8a8a868e9696908988898f8882838a8a837b8c9ea79888 +83858480808387878383888e8d8dea7d2e3840383d3645323e40353d3f39 +385e363e4995cebda379effffeeffffffff9ffeb25b7fffdffc230404b28 +6bffffffff3f87fffdfcfffe6c2c45505933443e404d34494445423d4b46 +483a504263809b052826292a1a140c08080b0f0e0a0c141b242d393f4847 +4647484a51596b7f741a1c2424312d2f2f2c2c2b29291c1b253c3d18030c +112f45647c795e31060d1e24313a39556b86a19f87695a5847352f34312f +2f2a2b2d3645586f8da7ccdcddc6a5825a3c33432f313d3d3c45523c8191 +9ea39d9c8bfdf3d5d3d5953b352811122f485a6e779edd788cb4bab6aaab +9ea3d8f9f6f7f7dfb1a5dbfffff4f8f6f6f5f5f4f4f4f1f5f3eeeff1e4d2 +d1d0d0d2d5d7d7d4dbdcecfbe3faf7f8db8a91b8b49374867f767e91a799 +73fcfafcfcf5ebded6d5d7d9e3e8d0dbe8bad2ebe0d1dacbd085975f233a +312557643d55431f242e22131916120e0f1114172627354a5c6142101d2a +25182b36e2b49eded9dbd9d9cbc9dba36a8a681f2c23176544484d191718 +17212e2f292224272321232222211f1e1b16131518181718181a17161617 +171716151211151c1d1c3b444b504542658da9bcffffdad3d098cdf7ffff +fffff66b334b504f4e311514110c0e1315120f0e1a140c12151b07c1edaa +6867534e464d54565a5b564d4a4d51515151515150504c545c5c564f4e4e +51484448505550485b6d76675550504f4a4a4a4e4e4a4a4d535252dc2600 +1e0a1a161e0d1a190b0d1225120f002100c9a4774d53c64d8ac8e3b8c1d7 +bab0501db8adac962e02262b2c19728c8e7f4b0059877e6e4b0618311214 +1f0d1a161c101d161619220b3028270b233469a32135252a25160d06050d +16202e425567788ca2bacddee3e2ddd0c1b5a39496973b30292f2e2b2b2a +2a2c2b2b29161725434d3a3c5c82acc5dceae5cba067504c4b4d504c5c61 +80aabcb59e877a674f3f3b3c4342332f3037404e607b8eb2c5d7d6c6ac87 +69362b29262b1c212f1304392215191410159eacb7a9ad4b18232c365995 +c4e0f1fde7a62011100d16323a5489c0d9dde0dda694c5ebd9d1ecdedede +dddddcdcdcdbdddad4d5d6c9b6b3b0b0b1b4b5b4b3b5b2b6cac5dcd6d5bf +9a8876a3f5f7dde2ebebeec97f61dadce1e0dbd1c7bebac0b1adbbb8ba9a +360b13090a0811130021261839351c31303644341e23261b16171512100f +1012141d21292c313a33192222171730026f7469929a99a1adaaab977351 +695b2b2b2135443b406b5c20181d2733373632302f33322d292727292f30 +3332302d251b171c1d1d1c1b1a171615151210151c1d1a252e2e29200b00 +0109116eba7d789d9ba1cce5f7f6fffe88475b5a53513b1d171a17141619 +1f21222024171a141b0485dcd19dc1bfc2b4a9b3b8bbbcb2adb2b8bbb9b8 +b8b8b9babbb3b9c0c2bfbab8b8b5b3b3b5b8b9b7b5b2c2cac0b5b5b7b7b5 +b7babebdb9b7bac1c1c0ff4c26443040394133403f33343b4e3b3826461f +e7c1926569dc63a0def9ced7edd0c6683ad6cecdb74d21434745318ba9ac +9d691677a69d8f6c283a533436463746424839463e3e404930574f4e324b +5b88b120250d14161211110e0c0a0a050004121d242a2e2e312d2f363e44 +4c5971878a302624292a292928282726272818192338381c17325684a3c3 +dce2d3a25730231d1e272d444c698999917e6f66523a2a2829302f221f20 +242d3a4c677ea8bfd1d0c0a5826430252622291a1e362e2c695e5b625446 +3dbcc3ccc0cc744344403d507aa1bdd5f0e6b1332a31353944445b91c6df +e1e3e0a997c9eeded7f3eaeaeae9e9e8e8e8e7e9e6e0e1e2d5c4c0c0c0c1 +c4c5c4c3c5c2c6dad5ece6e5d0ab9684afffffe6eef7f8fed99274ede8ea +ece7ded4ccc8cdbebcc9c6c7a7492b3c343734393411312d193732162e2f +3644341e23261b161614110f0e0f1011181c282f3541371c21211619370e +7f867a907457484f556360462a463e162120384b44497564211310161c20 +1f1d1c1c1c1d1e201e1c18140a040104090b0b0c0f0d0d0c0b0a0a090808 +0503080f100c17263136342112182e45b2faa7868984a3daf1fffafef171 +273838363c2f1b1819150f0c0e0f100e0f140a10121c0893fadc747d7a87 +928d8b8686898a848082888887878788898a82888f918e89878785838385 +878885838090988e8383868480808387868283868d8d8eff4d274531413d +4536434235393f523f3c2b4c25efc99b6f74e76eabe9ffd9e2f8dbd17242 +ded3d2bc5224474b4a3590afb4a5711e7faba294712a3c55363745364541 +473b484040454e365c5453374d5883b226301a201d13100b090a0c0d0b06 +0b17222b333b404544454a4b4c50566b80842c24212b2b2c2c2b2b2b2a28 +26131628403f1a050a172f415c79857e6135211f20242b28383b59809591 +7f6b655741312e2f3635282223262f3b4b667ea9c1d3d2c4ac886b3a3131 +3037282f484350a9a7a3b1b5aa94fce5ddd0d162283125111535505f7292 +adb775a1bcb8ada89ba9d0f8fffaf2e7ae9ed4fff4f1fffaf6f6f5f5f4f4 +f4f3f5f2ecedeee1d1d0d0d0d1d4d5d3d2d4d1d5e9e2f9f3f2dab5a18fbd +fffff5feffffffe9a183fbf8f9f8f3e7ddd7d3ddcfd1e3e3e7c974667e78 +7a75766a40554a2e453d2039373842341e23261d181b19171516171b1a1f +233038414b402327271e264a28a0aca5bfa5877474747b755a3f5c52252c +283f51494e7767261a1920262a292625222422232321201e1d1916141517 +161514191818171615141312120f0d12191a1b2e3d423c2b2c547ea3b2fb +fff1d1cebcc9f4fffffffffb813c50514c4d39201a1e1a151416191a1919 +1e131817200b94f8d86e6a514d4b444e555c5e574c45444f4e4f4d4f4e51 +504a4e5757564f4f4c454143474d5052504f5f675b4e4e4e4d4a4a4b4f4e +4a494c535351c9121a270d151a1c201c1a1c21000f091222152cd120a689 +2ab11e001b000007000d0e04101400000001250c042f4a0c06000700170d +00000000000d190c09140a150408080f10181800274240111c0c3f637601 +242a30220f0b0b0e161f28344a5f7790a6b8ccd8dfe0dcd4c2ab9e918d94 +a3533227362a2a2a2a292b2b2a28161b2d49513f43638bb6cbdfe8e9dcbe +ab76645d54514544485a7992a0a49f9d8a72584b4a544d333635383c414c +6273869fbbcdd3caaf976a47522c271a20282506303b65845f1c2099a5b3 +b38f2e1e26303e63a3d0e7f0f0ed7916110f1b2a3a5286bfd9e2e2d7ccac +b4e0efddd9e4dededddddddddcdcdeded9d3d3d2c6b4b2b0b0b1b3b4b3b1 +aeada6b5b9cbd0d8b7a3ab9b777296ccdef0f1f2b6626bd6dbdfdedbd2c8 +bfbabcb8b4b9b3b79f451b1f20220f200c11122d263a4a30322e242b251f +25211817100f0e0d0d0e0e10151e29221920271f2121181f480330674c60 +7b7a828c878273655758574334361a2e3a323d2c0c241e21262f35342e2b +373a34302b2a2b2f30322f2a231b110d181c1c1c181613121112100e1219 +1c1a283d40352a1b120f090b5cbb8b5d719a99c5e5f7f7ffffb048565046 +4438211510171815151e201a162312170c12003adfeb94b2b7ada6a2aab0 +b4b4aea7acafb5b3b2b1b2b4b6b7b0b4b8bbbcb9b5b3adb2b6b7b5b4b7bb +b9c3c5bcb4b4b3b1b5b7bbc0bcb7b6b9bebebee83139462c34393b3f3d3b +3d421f322e3747384def3dbe9f40c532052f05121d0d25261f2d320f1c1b +2042281d465f23230e2515352b18121e14172f3b2e2d38303b2a2e2b3231 +393912466361323d2d6180840217161f150d0f11100e0c0905050d1c282e +302f2f2b2c333b4041485670859648282230262828282726262627181c28 +3c3c221e3c6290aecadfe8e3bc8c44271e171d222a3443576c787d828471 +594134333f3820232225292f3a50637c96b5c7cdc4aa9265414f2823161c +2b37204f6295b8904948bbc5cfcdaa4e3e3f40415989b0c6d8e5ee842928 +2d3f494a5a8ec6e0e9e7ded1b1b9e7f5e4dfeceaeae9e9e9e9e8e8eaeae5 +dfdfded2c2bfc0c0c1c3c4c3c1bebdb6c5c9dbe0e8c5b1b9a9837c9fd5e7 +fcfeffc6757ee9e7e8eae7dfd5cdc8c9c5c3c8c1c4ac583d4a4c513c4c30 +2d24362837472a2f2b232a241e242017160e0d0c0b0b0c0c0c101b28251d +272b1f1f1f151f4b0b3e744d4940201011141d1e1c151c22191724122d3a +35402f0b1f1311151b21231f181716191b1a1916140a0806080c10110e0e +0c0c0c0b09060504050503070e110e1b3341403b2f21252c3e9ffab56a5d +8297cfedfdf7fcf895252e29242b281a130f15130b0a0e0f09051307100a +130348fbf56d70767483837f7d7f83847e797b82828080808384867e8386 +8a8a8883827d828686848285898791938a8282827e81808489888382858c +8c8ceb343c492f373e4044424042472338343d4d3e54f745c8aa4bd03d10 +3a101d28182f3028353a14212025462c224c642929162d1d3d331d172319 +19313d302d38313c2b2f2f36363e3e174b6868394432607e87072121291c +0e0e0d0d0c0e0f0d0a11232f383e42444445484d4c4547506a7e9044261f +32272b2b2b2a2a2a272513172c43411e0b11203b4a617a8c9381703d2c29 +262926292d3b556b797e7e80745d473a39443d242524272b2f3a50637d97 +b5c9cfc8b0996c4b5a3631242b3c4f43859bc5ead28d86e9dcdbdcb13f27 +2a25161e3f5b657895c4966e9aafb9b5a1a3cdfcfffffbe8d7b5bdeffff6 +f5fff8f6f5f5f5f5f4f4f6f6f1ebebeadecfcfd0d0d1d3d4d2d0cdccc5d4 +d8eaedf5d0bcc4b48f88aee4f6ffffffd6848df7f7f7f6f3e8ded8d3d9d6 +d6dfdce4ce837a8f9397808b6a5d4a533d4852343a34292f29232a261f1e +1918191818191a1a1722302e2931342724241c2b5e225b977b7d7656433f +3b3d3b3731383c2f29301d35423c453411261b1b1d242a2b261e22202222 +201f1d1d17161616161613101616161614120f0e0d0e0d0b0f16191a2f4b +5346333a6288a0abedffffb8a4bcbfeaffffffffffa63b48443c3e332116 +141a1913121819130f1d0f170f170649fcf46860503d4140484e555a5448 +403f4b4a4b484b4b4f4e494b515255504e483f44484b4c4d525856606057 +4d4d4a4548484c514f4a484b4f4f4fd70a100d180f1d0f1c151c0a1f315a +562c1a2b0758819c9493753a503e544f384150343e221923264e5a636e7a +47c371997d9c91949a888aa0a2b9a599b3afa2a8aca39c939db9ccc5c8bf +9b66b9dbc1add79d052c2e1d0c100e10141d2935425b718ca6bacbdae2dd +dad3c3a48981808493a1702c2835282b2b2b2a2c2c2b291920324950424c +6f91bcd3e1e3dccdb4c5897b79665d493a424351657a8b9aa4a2937f6b64 +6855312c2c2d3031384754687b94acc0c7bdb0aa848f341d1d231728082d +32577e76371e90a9a3b9532c2d29324066a6d6eaefdee75515181d2d3546 +89bfcfd8ded7cbc1c1d4ddd9e3e9d4dddddddddddddddddedddad6d6d2c4 +b3b3b0b0b2b4b5b4b2abb3a9acaab1c5d2b49d9aa6aca18f8797a9c6c398 +6f84dddadedddbd4cac0bab3c1c2bba9b0b0741b1f351f0d1f000c1b2d19 +23503a3132232a292322221b140e0d0c0c0c0d0e0f1824322c2126281c19 +242a1f3d13216242538b9babb1a79b8a797059584e3549424c26303c252f +2c1d1c20272e2f2828373a34302c2a2b2f30343129201a100d14191a1b17 +15121011131210141b1e1d112b30231d180e060a0b48aa9049468793c0e6 +f8f7ffffd34249453b352f1f1223343d332827241b1d35354c37280f10da +f2a39bb39a93a3a2a4a8a9a39ea4a8aaa9aaabacadaeaeb0b0b2b6b9b7b2 +adafb3b7b7b4b3b6b9bdc1c0b9b4b4b2afb3b6bbc0bcb7b5b8b9b9baf326 +2c29342b382a373039273c4e77744f3d4c25759cb2a8a7874c625068634e +596b4f5b403744456d777f87915bd685b49bbaafb2b8a9abc1c3dbc7bbd6 +d3c6cacec5beb2bcd6e9e0e3dab47ed1f3dcccf4ab082221100310121210 +0d0c0b091018242e302f2e2e292e373c393540536b84946522232f242929 +2928272727281a1f293a3a252a4a6c9dbad0dbdcd4aa964329261b1f2020 +2f2f323e4d617787847665514a4f3f1b18181a1d1e2534465e738ea6bac1 +b8aba57f8c311a1a20192f173b4873a19a5e45b9d1c8d56c44433a3c3e57 +8cb9cedcd6e960272f384b4f5492c7d6dee4ddd2c6c9dce6e2edf2e0e9e9 +e9e9e9e9e9e9eae9e6e2e2ded0c1c0c0c0c2c4c5c4c2bbc3b9bcbac1d5e2 +c2aba8b2b6ab9890a0b5d2d3a88097efe6e7e9e7e1d7cec8c0ced1cab7be +bd893f4e65513d4c242c31381e224c342e2f22292822202019120c0b0909 +090a0b0d1221302e252a2b1d171f251e3f192d683c3546372a272323221e +1d10191d13333442202d39242c27131111181f201b13111013151515110f +0a0a08070b1114110a090a0b0a080503040607050910131104222f2c2c28 +1c192b3b89e9b958346f8ec5eaf9f3fbf8b61a1e1a15181b140d21323829 +1d1a140a0c252a453529131bf4fc806074626d8177747478787271747777 +78797a7b7c7c7e7e80848785807b7e828686828184878b8f8e878283817c +7f7f848988838184878788f72a302d382f3f313e373f2d42547f7c554353 +2d7da5bdb3b293586e5c736e5963745863483f494a727d838c9762dc8cbb +a3c2b7bac0aeb0c6c8ddc9bdd8d3c6ccd0c7c0b7c1dcefe7eae1bb88dbfd +e3cef2ae0f2d2b190812110f0d0e111512151c2d3a4044464944464c4a41 +353c4d647d8e61202031252c2c2c2b2b2b2826151b2c3f3d1f111d254355 +68798487758245373a3236302b3531374150627381847866544d52411d19 +1a1c1f202736465d718ea6bac3bcafab86953a25252b28493868718bb7be +876ed7dbcee373372e2721151e3f5d6a8095d17e7197adbbae9bc9f8ffff +fceddcccccdfebebf9ffeef5f5f5f5f5f5f5f5f6f5f2eeeeeadcced0d0d0 +d2d4d5d3d1cad2c8cbc9d0e2efcdb6b3bec2b7a79fafc3e2e2b890a6fdf4 +f6f5f3eae0d9d3d0dfe4e1d2dbddb47d94af98858f5f5d585634325a3e39 +3a2a31302a2b2b261f1a191a1a1a1b1c1b1c283b3a303534221a232b264e +2f478c6a697d6d60584b46433d3b2e34332440414d2a36402a332e1b1918 +1f2627221c1e1c1e1e1d1c1a1a17181815141615121213141513110e0c0d +0f0f0d11181b1d18373f3327375b789ca7d9ffffa980adb7e2ffffffffff +c83239362e2c271c1126373e3125231e14162f324c3a2d161df5fd7e5253 +312f4242464c504b413a3b42444546474849494b4b4d5154524d4644474c +4e4d4e53565a5e5b544d4b474346474c514f4a474a4a4a4bb1009bc6bcd0 +cbc1c3b6d9d2d2bea9a9ccdfb7bcb5b1b3d8a25fcbe6bcaec4b3b4a1b8e9 +5e240f8da496aaa7831f76966b856a57686567727356675644564f4f5356 +58281022291a1d5441313a6832325fdd970021210c181312141724324455 +72879eb5c9d7e2e5ddd1c3a9816567747b919489292b2f2a2d2d2c2c2e2d +2d2d1a1f2c3e4942527798c3d8e3e2d8c6aeb68c91957e6b4c352f304359 +68737e899697968679755d362e2b2b2c2a2c353e54617891a9bbc0bdc3a6 +b64d1f142327201d473f517a7015048ea6a99d232f352d374365a3d5eaee +eec024192c2f3a4778c1ddd6e1ddc5c1bab3c8dcd7d7e1e0dddddddddddd +dddddcdcdbdcddd6c6b5b3afaeb0b2b4b4b3acb5adadaba6b6a68aa8ac9d +9da49c819cafedcea89994d7dbdedcdbd5cbc0b9b0bdbbbab3b3a76a0e1d +47151723040d1721161e5433273346493e24172021121312110f10111314 +2028343737413e2c1a1c30232319255e3d4d748a95a3a39b9376725a574b +2c4d3944374038232c25191b1e23272725273336322e2a292b2e3137352a +221c161212161819171512111013141113191e1f273d3e3338382b19030c +359295543d7c92bce7f9f9ffffee4947453d332c261b34474f3d271f1d17 +1d374d7159331700b6f7d286a39a8e9f9b9c9d9c97939ca29e9fa2a5a6a5 +a4a2a8a8aaafb5b6b1adafafb0b2b4b6b5b5afb1b2b1b3b6b5b3b2b4b6bb +bbb6b4b7b7b8b7c813b2ddd3e7e2d8dacdf0e9e9d5c0c4eafdd5d9cdc7c7 +eab46fdbf8cec0d6c9cfbed5ff7c422eacc1b1c1bb963085a986a3887586 +83889394778a796779737370717343293b4031316855434b7943467bf7a6 +011e1a05131312100b07090c0f1d22292c2a29292c2c333c3b2f2a3c5767 +82877e1f2629262b2b2a2a29282929191c222e312633587baac5d8dcd7c9 +9c732e272c20211f1b202227313b455768757877685b59431c161517191a +1c252f4a597089a4b5bab7bea1b1481c112025201d47435c8c8b362dbcd6 +d5ba393e40363a3b548dbdd4dfeac4312a4346525983c9e3dbe7e2cbc8c1 +bad1e7e2e4f0eee9e9e9e9e9e9e9e9e8e8e7e8e9e2d2c3c0bfbec0c2c4c4 +c3bcc5bdbdbbb6c6b698b6b9aaa7aea489a5bbf9deb8aba7e9e7e8e8e7e1 +d7cec7bdcacac9c1c1b580364f7b4b4b5430312e301c1d502d213044473c +22151e1f10100f0e0c0d0e10111a2534393b45412b16162a1e211c2d643c +3534261214181b241619101b1e103c29362b36311e272012111316181816 +100d0c0e10100f0d0a05070601040b100d070608090a0805040508090609 +0f14131a313c3a44453328213873cfbd642f668bbde7f8f3f9f7cf1f1b18 +15121415122f454a331c120d070d2a426a54321805cbffb4526a65677a6f +6b696a6a67686d6a6d7073747372707676787d83847f7b7d7e7e80828483 +827d7f807f818584807e7d828787828285858687d01bbae5dbefeae0e2d5 +f8f1f1ddc8cbf2ffdde1d7d2d2f6c07ce8ffdacce2d4d8c6ddff844a33b1 +c7b8c7c29d388cb08dab907d8e8b8d98997c8c7b697b737374787a4a3042 +48393a715e4d55834d4f7ef8ab0727220c1715120f0b0c11191a2226323c +4044484b484a4d443326354f607b817a1d232b272e2e2d2d2d2c2a281417 +2331311b14222f4d5e6f7c84846e6a3c3d4a42423e363533353a3e455061 +707574665956421b1617191b1b1f283249566e87a1b5bab9c2a5b74f2318 +29333a3f6d60608c94473fc9d6d4c844372f211d141c3a5b6e8abbc35e78 +a1acb4abb9eefff8fff5d9d2c7c0d6ebe8ecf7f7f5f5f5f5f5f5f5f5f4f4 +f3f4f5eeded0d0cecdcfd1d3d3d2cbd4cccccac5d5c3a3bfc2b3b3bab196 +b4c9ffedc7b9b5f7f5f4f4f3ede3d9d2cddbdde0dbded2a97498c7959699 +6d65584f342d5e392b3b5154492f232c2d1e2120211f20212322242c3e45 +464e483017182c252e2f44846665665a44423f3c4432372b34321e463443 +374139252e271919191d1f1f1d1a1a1a1a1a191817161417160f0e111211 +0f10121313110e0d0d10110e11171c1f2c454a42425571838fa3caffffb9 +7ea7b7dbffffffffffe13736352f27221f17354a503b241b171117334a71 +5a371c07d0ffb2454d3b30433e40424540383639383c3f424342413f4545 +474c52534e484846494b4f5352534c4e4d4c4c4d4a474545494e4e49474a +4a4b49b900ce700f553b010b372a031321205200000d0000191b0731471c +000b0c4081762400ce6d0f00cf440017003982070550acb10743d6640119 +000e0b030e0404020e2a1872c9a7811712232b6d94623848ea9905201803 +141215171e2b3e576b8a9bb0c2d2dce3e1d5bfa789654c556b768c8b9839 +2c2b2e2e2e2d2d2f2e2e2e191d22334142577ea2c7d5e0e2dbc9b1a297a7 +ac967b50362726384a585e68757b8896938884715049413836323032353c +475d7891a7b4b9bcacc1804c2532532120414781d7ca3c0097b1c3671f30 +383141506fa9d7e9eaf787142d33304c81bcdcdedceaddc0bdb9b2c0d6dc +d9dbdedbdcdddddddddededcdbdce0e3ddcec0b7b2aeadaeb0b1b1aeada8 +afb4adac667895989ba3a0acb0b0c4f5cba59c94d8dcdedcdbd6ccbfb6b4 +bdb8bbb7b1a6780b20480e1a1f03051b272b214d292c4968614d260f1c26 +170f0f0e0e0e0e0e0f1f20272d384d503b2315272813111c554f72799799 +acb2ab926e6b615a45243a4527475165723008181a20222527282e31342f +2d29292e333a46473c312b231915151617171413120f1212100f151a1b24 +312e2b3536230d030c257991603f708fb4e3f7faffffff5b4a4343352c2a +20212d2f21110f171c1c2330412b120b0068f9fc7f879e928e999696938e +8d959c96979a9c9d9c9a989b9c9fa6adb0aeaba7a4a4a9b0b4b2afadaeaf +b1b3b3b1b0afb1b3b8b8b5b5b9b9b9b8cd06e28423694f151f4b3e172735 +326918122a11162d2d1741572c031b1e529593450eec8b2d14ec5f0f2b10 +4a90141669cacf2561f485223a20312e26342b281f27433189e0bb952924 +3439799e6c465fffa80c1f13000f100f0b0502060e15262829292423262c +323439372b253a59657d7e8d2f27252a2c2c2b2b2a292a2a161616212825 +396189b3c8d7ddd8c7944d232a302928211f1f1f20282b31425358657372 +676554342f292423221f2329323f55708ca2afb3b8a8bc7b4a2330501c19 +3a4385e4e25e23c8e4f087333b3c333c425c94c4dbe3f78e203e47445d8e +c4e2e3e1efe3c6c4c0bbcbe3e9e8edefe9e8e9e9e9e9eaeae8e7e8ecefe9 +daccc5c2bebdbec0c1c1bebdb8bfc4bdbc7686a3a5a8adaab4b8b9cdffd8 +b5aea7eae8e8e8e7e2d8cdc4c1cac7cac5bfb48f345580475253332c3637 +322249232646645f4b240c1923140c0c0b0b0b0b0b0c1c1d272f3c50503a +1d0c1d221013215c54633e35151921251b060e151f1c0f2d351739455b6b +290311131515141211100b0b0e0f0f0e0a07030808010105080404050607 +0707060502070705050b101116262c2e3d3f28191e3760b5ba71335c87b3 +e0f4f4f8f4e0331e1618141116151a2828170602070c0c16253a26110c03 +79ffe454556c67666a656261615e6166626467696a69676568696c737a7d +7b78757272777e817f7c7a7c7d7f8182807d7b7a7f8484818287878787d6 +0feb8d2c72581e28544720303e3c71211a321a213839244e643910282a5e +a09b4c16f4933519f26616321752991c1e70d2d72d69fc8a273f24333028 +352a28252e4a3891e8c49e332e3e4285a8784f65ffaf14271a0413110f0b +080a111f222e2f373d3f42464b4d47463d2a20334f5e7678892d24272b2f +2f2e2e2e2d2b29111016212415152737505f6e818b8a72503a485452544d +49443e3636302e3949525f6d6b626050312e2925252525282b313c526d88 +9facb3b7a9c07f4d26355b33385c5c86dde4672ccddfed923e352d1b1c1b +223b5d7293dba15c909d9aafd2ebf8f7f5fff3d2cecac2d1e9efedf1f6f2 +f4f5f5f5f5f6f6f4f3f4f8fbf5e6d8d2d1cdcccdcfd0d0cdccc7ced3cccb +8391acaeb1b9b6c1c5c8dcffe8c4bcb5f6f4f4f4f3eee4d8d1d1dbdadfdf +dacfb874a1cd949d9c736363594c34572f304f726d59321d2a34251d1f1e +1e1e1e1e1d2726313b4759583f1f0d1e261b2237787a8e6e664645484639 +21292f352c1834402446516473310a181a1b1c1c1b1b1c18191919181716 +16161d1d151110110b0c0f101111100f0e0b0f0f0d0d13181a273739353f +50626f87a0beffffcb87a1b6d2fbfffffffff24b3933332920211b212e2f +1f0e0b1116161f2d412c16100981ffe44b3c473a333e3d3d3e3832323733 +373a3c3d3c3a383b3c3f464d504e49443f41464d52504d4b4b4a4c4c4a48 +444242464b4b48494c4c4c4c9300e84c91c7e36524ee8c08132e25505300 +202f311c181c2f338742180df289725900dd64111bde700e302c9be83d0f +da63cf6c00e24f091616211a172420172b2124099cd46f851f24253234f8 +e0575ddb77011213090f1419212a3c526e849fafc0ced9deddd5c29f7e66 +4e3e496074838c9b5a2a2d302d2d2d2c2e2e2d2d1a1c203042485f82acca +d6e0e4dac0a297a6b9b6a48751382b222939444a58676974878d8d918972 +5e4d3b33302d2c2c2c34435970879aa7b1b1b7a88f5e4b56462d2e0e155a +7b210c98cfc13628323136506383b8e1ebe8e153253d344c7dc2e1dbdcd5 +c8d3d5bfbbbebcc5dbe3dbd5dbdcdcdddddedededfdcdbe1e6e2d8cfc2bd +b6b1b0b1b2b3b0a9a9afb3b1b34774adab999595a29caebfe6b9a795a0e5 +dddfdddbd6ccbeb4b3bfbbbeb4a9b1a10c23330e111200001b252f133821 +2f45594c422d161e2b21121417191815110e1e1d2122293f463624211f2b +1b191546347c6a9c99aeb2a997726b6a5a4429261f1b5e5d53623218191b +1f252d3236383431302e2d30363d53656d65584f422d1f18181717151412 +0e12120f0d1215191c25222633311e0a060a196886613e6688a7d8f2fcff +ffff764d3b403528251d1a19191614172026221f22140a0c11101ef5ff9d +76948d86969492928e8b909693929292929293939294989da1a3a2a19d9b +9b9fa6a9a8a5abacaeb0b0adaaa9adadafb4b3b2b6bbb8b8b8a705fc60a8 +defa7c3bffa01c264136646c183946452e292a3d419553291eff9d8f7c0e +fe822f38f98722413aa8f2461cf380ec8917ff702a393944403d4c483b48 +3c3f24b5ed86993235333f3effe66170f08408121004090b0b0806030a15 +1d272727262223283137312d2e2825385165747f905025272c2b2b2b2a29 +2929291513111b272c426998bdcbd9ddd1b478352029292a2d24292e251c +1c1d213345444f626b6a6e68534233251f1d1c1d20222b3c52697f95a2ac +abb3a48b5a46513f27280f226f9b483ccbffec543c3e353243526fa5d0e2 +e5e45b314e465b86c7e5dfe0d9cbd6dbc5c3c8c8d3e9f4ede6e9e8e8e9e9 +eaeaeaebe8e7edf2eee4dbd0cbc4bfbdbebfc0bdb6b6bcc0bec05480bab8 +a69f9daaa4b6c9f2c7b7a7b3f7e9e9e9e7e2d8ccc2c0cccacdc3b7bfb838 +5a6c494c4a262737373916361e2942554a402b141c291f1011141615120e +0c1b1c21242d4247341b1713201317164d4375363f17181e1e1b060b1c21 +1e181d130f5253495b2b13141414141312100f0e10121312100c070e1517 +0f0a0a050003070706060605050105070404090f0f0e181f2636361f131e +3353a2b275355682a8d8f1f8faf4eb50221018141014121314120c090c13 +191512170d050b12152af9ef7c4b656159666260605e5a5b605e5f5f5f5f +5f60605f61656a6e706f6e6a68686c73767572787a7c7e7e7c797678787a +7f807f8388878787b210ff6bb0e6ff8443ffa7232d483e6b731f404e4e38 +3335484ca05d3328ffa6978215ff8a373eff8f2b4943b1fc4f25fa88f491 +1fff752f3d3d46413e4c473b4e43462bbcf48ca0393d3c4748fff26b77f5 +8c101a170a0d0c0b0b0a0c16272e3333393d4042474c4c3e342f2520314a +5e6d798c4e22292d2e2e2e2d2d2d2a280f0e0e1820171a2941555f71858c +826242414d535b615d6061503a30221d2a393b475a626468634e3f322721 +212224242026364c637c919fa9abb2a58c5b4a5851434c2d2b74a8594acf +f8e55c453a261720273247647b9edb8279a090a0cbfeffeaece5dae5e9d3 +d0d4d4dcf2fbf1edf2f4f4f5f5f6f6f6f7f4f3f9fefaf0e7ddd8d1cccdce +cfd0cdc6c7cdd1cfd1648cc3c1afa9a8b7b1c3d5ffd4c6b5c1fff5f3f5f3 +eee4d9cfd0dddde2dad1d9e179aabd999a95695f665b54294429334b6357 +4d38222a372d1e22252726231f1a26242b30384b4c371c1613241e252a67 +649e646e4545423d37202632322b1e221d1b5e5e5263331a1a1b1a1c1e1f +1f1f1b1b1c1c1b1b1817232e322a221d170c0f0f0f0e0e0d0c0c080c0d0a +090e13181d29282e3b4a5562809cb7ffffd4909fb2c6f2fffffffffd673d +2c32291e1e181a1a191411141c221e1b1f140b10161b36fff17538473a2f +3e3d3d3d38323134343434343434353534363a3f434544433d3b3b3f4649 +48434949494b4944413f4242444949464a4f4d4c4c7f07ea11ca3fbf6c00 +ed5312411c31d0be9920232f2718373db7edb62526f081ba5a02db441b15 +e8572a324ae7f0b234e239d24c0bde9913211a191c160c101a1b1a230cab +b253ea4521211947f8f98e6ac66508060a141218212d3b4f67839bacbecc +d6dad9d2c7aa7f5a493f374355757c929a762732312c2c2c2b2d2c2c2d1e +1e233448526787b6d4dee7ead9b38b92acbdb1a6894c32251820323f4142 +4d5d64758289929485725d4438353333332e303541536b8799a6b4a5adb3 +8e542c39182b2a23447e57268edfa217243326385a7595c7e8ece4cd332d +3b3f85b4d7e2d4e1c391c0eec1bfb1a4b8deded3e1dbdcdcdddddededee2 +dddae0e6e6dfd9cec7bdb6b2b2b3b4afaaafada6aabe4a849d8e9bab9ea3 +a5aabaccbbc194a1d3dee0dddcd7ccbdb3afb7b2bebbaaad9f0f2620150f +14000a162135153f31352e32252e3425252f2923272e32312b231e24272c +262231372a1b352426252c1539298664a19cb6bdb5a17e72705c4d3e232e +293747495b52191b1d2029374146463e3a3837383b434d7187958d7f715d +42291d1b1917141413111415100e121719171f2028373423130505116286 +64456e809dd1eefeffffff8a4f343c332723191f1714161a181717121828 +13121e140a00f0f3c77a86888f95939394918b8d9192908d8a8a8c8f9190 +92959798979595979798999c9d9c9b9a9ca2a8aaa8a7a8ababadb1b1b1b6 +bdb6b6b6931dff27e258da8718ff6a26542d42e3d5b237374138264549c3 +fbc43637ff98d87d25fc623830ff6b3c4057f1f8b941f956ef6929fcba36 +44403f443e3438403a374029c6cd6cff5c34322651ffff9779d76f0f0607 +0e0708080906070f1c242223252523262e373a2c242727283448666d858f +6c222c2d2a2a2a29282728271713111d2c344b70a7c9d6dfdec69b55251b +211a232b222d35291e1f1e1c24303b3f505d6470716455412c2222222427 +24272e3a4c647f94a1afa1a9af8a502733142d373c69aa8959c0ffca3439 +442d31486080b5dce6e5d23d3b4a4f90b7d9e3d7e4c695c3f3c8c7bcb1c8 +eeefe6f2e9e8e8e9e9eaeaeaeee9e6ecf2f2ebe5dcd5cbc4bfbfc0c1bcb7 +bcbab3b7cb5790aa9ba5b3a6abadb2c4d5c9cea4b3e5eaeae9e8e3d8cbc0 +bcc4c1cdcab9bcb73c5f5a524c4f273436373e183e2e2f2b2f232c322323 +2d2721252c302f29211c21262c2826343828132b161a1e28164039843043 +161a1e1e1a0607181c21271a2723313f42544d141613111213120f0c0e10 +1213120f0a05182427201813070005090705030303040207080503090e0f +09131b273734211a1c2c4a9cb27d41617ea1d3effcfbf6f469290d191611 +131018100a0c0f0d0a0a050d1e0c0d1c130d04f4e8af565c595f63616162 +5f59585c5e5c595656585b5d5c5e61636463616163636466696a69686769 +7076787675767876787c7e7e838a8585859e28ff32ec5fe18e1fff702d5b +354aeaddb93f404b42315055cfffcf4041ffa0e0832bff6a4037ff744649 +60fbffc34aff5ef77131ffbf3a484340443e3437413f3d462fcdd471ff62 +3a392e5affffa080de78170e0e120b090b0d0c131f2f373133393f414449 +4e4a342425232331425f667f8b6a1f2e2e2d2d2d2c2c2b2927110d0d1720 +1a1c2a485d697a8c8b754b3c44494757676470735d453525161922313647 +545c676b5d513e2c2426282b2b22202834465e7c909dac9ea6ae894f2b3f +2d56615a83cdac74cbffc1383e3e1d1420313d536e84a9d870869b8dc6ee +fff5dcebcfa1d2ffdbdacec2d7fbf7edf9f4f4f4f5f5f6f6f6faf5f2f8fe +fef7f1e9e2d8d1cfcfd0d1ccc7cdcbc4c8dc679cb3a4afbeb1b8babfd0e4 +d6deb3c1f1f6f4f5f4efe4d8d0cdd5d4e0dfd0d3dd7db0aca39d9b6b7067 +5c5b2b4c3939343a2e373d30303a342e32393d3c362e272a2e3834313d3d +2b1129161e26362a5a5bac607548494641382223302d2e2d1d2f2d3b4a4a +5c541b1c1b181c212424221e1e1f1f1f1e1b1b34434a40362e2011111210 +0e0c0b0b0b090e0f0b090e13171621222d414c52627995b5ffffe1a2b0af +beecffffffffff7e4228312a1e1d151f171214171513130e152613132118 +1411ffecab46443b3b403e40413c3430343634322e2f30343535363a3b3d +3b3a393b3b3c3b3e3d3c3b383a3f43454140414342444849474c534d4b4b +6014df00e555e6350eeaa520292464f0ee3b152d2b2321675ec3f4c71732 +f14dd16f03dc2b250ce83b0f3361f8f97704cab8dd152ae96a0a1e1c1b19 +181717181825170d72d0c6bf122f18286bc2f9534f9f0d030f141e17222d +3a4f688396a9bfccd1d5d7d2bfa7805a3e363a3c47526e8085969f27312f +2d2d2c2c2e2d2d2e1b2526334c576c95b9d5dcebf0d0a589a4bdc1bcac85 +4b291e14182034413b3447515d6c7982888a86755a4435303233322d2e36 +404d688198a6aeadb1b095723a3e331a1a4b78804b82e24820281b2d3f5f +93c8dbf3d9f1834a3b447cbdd5ece8e6c27fa4c7f9bcc2b48bb2e6e5c8e0 +dcdddddddddddddddfdedddfe1e3e2e1d9d6d1c8beb7b5b5b5b1abb1a9b3 +bf2456b1939da79ba4aba8bdc8b4a8af97d1e1e1dedcd8cec0b6b6b4b7bd +b6abadb11d271809180003002121361f2f4c3034332b3d3539292f202327 +26282e261e242b2c2f2f2e2e2f30303b3c262f371f1e2e5f7b809ed0b4be +b4967e77705b3e273a312b28323c33222f1a2a2c3955565b55534d43434b +565e818f9a9992876d4931201c1919181815130e0e0f0f0e131a1d181e27 +292a240f0306124b866e403a838ec8e6f5ffffffae3039292d2f10231d22 +211e1f211b121a191917161515150089f8fb559195929693918f8e909191 +908f8c8a898a8b8c8d8d8d8f91918e8c8e919392908f9294949697959496 +9ca19e9fa2a5aaaeb1b3b0b2b3762cfa1aff72ff542bffc1393e3775ffff +522c413d342f736acfffd52843ff64ef9426fd494225ff4d1d406bffff7e +0ee1d5fa3248ff8b2d41424141404141403b46382e93f1e5dc2e472b3778 +cbff5a59a916060e0d130408060509101a212122212123292f34372f2621 +272c2e35405f71788b95222b2b2b2b2a2a292829281218131b2f38517fab +cdd4dfdab27d442e271e1c2627272f3c3420161922231d292f3b4a576066 +696758402c211f23272824252d3746617a93a1a9a8adac916e384041384b +87b7bd83b4ff693a3d323a374a7cb2c9e7d5f38955495589c4d4e8e8e7c3 +82a8cafec2c9be97c1f6f7daf1eae9e9e9e9e9e9e9ebeae9ebedefeeede7 +e4dfd6ccc5c2c2c2beb8beb6c0cc3162be9da7afa3aab1b0c7d2c2b6bfa9 +e1edebebe8e4dacdc3c3c1c6ccc5babcc94a605547563c3929423841242e +492a31302a3c3438282e1f222625272d251d23282b2f313231302e28312e +1a283320233c57421c0f2909181d0c030e1e1e191637362b272f39301f2a +10160c08150a0c0f15140c0a0c0b04151919181915040007090504040404 +040401010404050a100f0c192627282114192b4a86b68a43358593ceecf9 +fef7f693101709141d051d16181714141610070f0f0f1011131415018bf6 +ed3a6b655c61615f5d5c5c5d5d5c5b5856555657585959595b5d5d5a585a +5d5f5e5c5c5f616163646362646a6f6a6b6e71767b7f817e81848338ff23 +ff7aff592fffc53e433d7cffff5a344a473e3a7f76dbffe0324dff6cf79a +2cff514a2cff57284975ffff8818e9ddff3a50ff90314545424140403f40 +3f4d3d3398f6e8e0314b313c7ed2ff6262b21f0f141417080b0b0b111e2b +34373534383d444a494738281d22292b353e5a6a7287931f2d2c2e2e2d2d +2d2c2a280d100d111f191a33485e657b8f8064474e554b4c5b656f7b8571 +4e2f201d170f1f2632414d565d6262543f2c23252a2b261d1e2632405b74 +8d9da5a4aaa98e6d3d55727485c3fcfeb2cdff5e393e2826131d4669637b +7ac2998d949dbdeefffff4ebc88bb4ddffdae3d7add4ffffe6fbf5f5f5f5 +f5f5f5f5f7f6f5f7f9fbfaf9f2efeae1d9d2d2d2d3cfc9cfc9d3df416ec6 +a6b0baaeb6bdbdd3decdc3ccb5eef9f5f4f4f0e8ddd3d4d2d9dfd8cfd1ed +8bb1a69aa989816575615d383e5434383932443c3e2e3425282c2b2d332b +232931333b3d3d3a3531262f2e1e3041344063887752455d3640402d222c +352e211c3e3c332f3640372630181f191b2d2629292c271f1d212220353c +403e3c36220e15130f0d0d0d0d0c0b08080a0a0a0f181c181f2b34404e54 +6f93bbfafff5aa89b6b0e6fcffffffffa627302027290d211d201f1c1c1e +180f171717171718191d1098fbea2f584e4041403e3c393738363534332f +302f323134323434383635313336383634313234323435323131373c3839 +3c3f44464a4c49494c3f37eb009298a11b1898490b152c498a720c112626 +261d3e44477c0a0b1a708983210de723142df1202c2422e18e1725183f3c +0f1938001f1a18171615141414141d220e00220f091f152926419f36293c +48000a0c0b15272c394c637d93a6b6ced1d2d2cfbea69165442f2c343947 +526a7e84939f4030302e2d2d2d2e2e2e2e1f272836505e759dbfdbdfedf2 +cba494a3bcc6c2b285441d14090d16273635323b424a56626e787e8b8374 +5c4437393b372f2c30343b4c607f93a7afb6bbac945f45373d3f3f362626 +8ebb27212e2223536496cbdcebe6e774324078aed8dedcf4a97abbcdc7ed +adbab385e2cecedfdddcdddddddddddddddfdedddfe1e3e2e1dad9d7d5d0 +c7bab1acaeb0b5a9acb31d46a6a199939aa1a1abb7cbc0b1a383e2dfe0dd +dddad1c2b8b6b6b8bdb7abacae2e1b190a1300000010152b20375538392c +2e3d35271b2523262825272d261e2424232c37373137473727221d282c1d +22234e9572a3abb9b5b79a827a725f432c3a3235362d232a392315272c41 +68717577756e64636c7a80929da3a0988d755033221d1a17171614151110 +10100e13191e1e252e3339341c0704083b796d3f2f7688c2e1f2fcffffc3 +35372927270e1d1c2530353a382c1e1218212e3838342d0155f7f475808d +8f9592908f91909090908f8c8a898a8b8c8b8a8a8c8e8f8d8c8a8d90908e +8d8e9090919393939496989c9b9b9c9da0a2a3aaaaad5752ff0eb0b9c23c +37b766242d3f5a9b8623253837372b4a50558a1b1c2c82a0a44630ff402f +44ff2e382e2ae7941b2f2f5c592c3759194240403f403f4041403c424834 +2448322b3e313e384ea83d2e434f020a0700020a0504060c141d2222271f +20292f33363b2e2722272c2e333c586f7788953b2a2c2c2b2b2b29292a29 +1619141b313e5b88b2d1d5ddd39f6a4029241c1c2425242c3e362113131d +242222242c35414d565c6a6458422e24262c2c2623272b324559788ea2aa +b3b8a9915f4e5069818b826d63c0e3463a443c334a4f7eb4c9dfe1e97a3d +4f87baddd8d6f1a87abdd0ccf3b4c4bf93f1dfdff1edeae9e9e9e9e9e9e9 +ebeae9ebedefeeede8e7e5e3ded5c7beb9bbbdc2b6b9c02a53b3aba39ba2 +a7a7b3bfd5ccbfb393f3eceaeaeae6ddcfc5c3c3c7ccc6bbbcc75a525348 +513c3626342c3926395335362b2d3c34261a2422252825272d261e232122 +2c393b3438452e1d1612202a1e2b364e641318070d0c1b0d020c181c1817 +3b3d3c392e222938210b12060619120f161a181110161712161918151614 +07000406030000020100040201030303080e1214232d2f332f1e1c2a3f77 +ac8f472f798fcaeaf9fffaf9ac19190d10170417121b262b2f2d2114080e +1a273336322c0054faf3625f5a575f605f5f5c5b5b5c5c5b585655565758 +575656585a5b595856595c5c5a595b5d5d5e60606061636568676768696c +7071787b7e635dff19b8c0c7413aba6a28314561a28d2b2e42414136565c +60952526368ca8ab4c36ff48384cff39443835f3a02639376461343f601e +4643423f3f3e3f3e3f3e484b37274b342c4032413c54ad43344b570b120d +06060e0a0a0e15222d37383b3538404746464431231c21292c353e546871 +8493382c2d2f2e2e2e2d2d2b260f100d101c181e354a60667d90785f5052 +574b4c5c65707d907a53301c191a151b1c242e38444d53635f554130282c +2f2a1f1c20262d3f5372889ea6aeb3a48c5d5f86b2cfe1e2c7a4e3e23736 +412f19211a3e64637990c2907594c8e4fdfaf0fcad82c9dfdfffcedfd9ad +fff1effffaf5f5f5f5f5f5f5f5f7f6f5f7f9fbfaf9f3f2f0eeebe2d7ceca +ccced3c9ccd33b5cbbb4aca6adb3b3c0cce1d8ccc0a0fdf5f4f3f3f4ebdf +d5d4d4dadfd9cbcce699a2a59ba48c7d646856563c485e3e3d313342392b +1f29272a2a27292f282028282a3645463d3d482f1c16162b38324861829c +4d513c3d35402f2329312e221c3f41424033282f3e26131b151c36343439 +3b352d2c3336353b40413e3c35241214120e0b0a0b0a090c09080a0a090e +141c1c2632404f57576b8fb6f3fffdb487acabe1f9ffffffffbe2f312322 +220c1b1a232e333735291c1016212e393b37340f64ffef5b504940433f3e +3b3a39393737363331303132333231313335363433313437353231303030 +2f31313132343639383839393c3f4045474a2858df00011d040a1232000d +245e5e39211124211b2624277a285a223a27280c080c31e41b122fe72a2f +263961562c2927210a21171d282b191816141414151507100f2b1a001909 +17112e284263163b270004140e141c353b4c627b93a6b3c1d2d2cfcfc5aa +896d5238282a3238444d607b828e9d642f302f2e2e2e2f2f2f2f22252938 +546684aac7e0e2f3f3c1a1a0a4bac7c6b5843e130b02060a1b292d30373a +3b424d5b6972858a887559433e3f3e343033323139455d7a96a7b3bdbbb0 +9d612e1c110b05000a826d0f2b2c2024596499d1e4ebf6ca4b3672b2cee7 +efe6c8ef9fb3a7b8dfc09bc965e4e6e8e3cadddddddddddddddddfdeddde +e1e2e1e0dfdddcdfdfd9cabfb0acaeb3adaba20c2b6f8e9ea2b8ada8abc4 +e0b9b1b480e5dddedddedbd2c4bab6b6b9bdb7acacab490a190d0b030000 +0e182f2d4760423f444c514720171c25252724272e2922282b252d3e403b +4b674f221c252a29242d0b2b826a9fa1bfb1b0977f756b5c452f2831372f +3746391c1b1828314e80969ca3a2968d8a8f989ea2a9aba3998e75533525 +211e1b1a19161a161313120e1217191e272d33403f210a00001e5e613519 +6280badaeffbfdffdf3b342b221f101918232e3536302317101420303a3b +32290d17e3f1a16a889494918e909392908d908e8c8b8a8a8b8c89888788 +8b8d8d8c86898c8d8c8a8a8a8c8c8d8f90908e8c95949290909295979fa2 +a53f72fa071f3e252d34511e2639716d4a352838342c373235883668334b +3a3b25292f52ff362a43f836393041675c33333e3c273e353e494e3f4040 +40404243433037375343264130392f463c506d1b3e2b02040f0301000c04 +050b131a212625242026333c3a3332302925292d2c2f374e6c7583935f29 +2c2d2c2c2c2a2a2b2a1917131c32456995b9d5d4dac683523b24231b1c25 +2421293f37210f0b15242724222226303d4850636969593f2d282c302925 +282928303e567391a2aeb8b6ad9e6f4d505b625c4e4cb5932b42413b3551 +4e81bcd1dcedc9504281c2d8e8e6ddc5ee9fb5aabde5c7a5d573f3f5f8f3 +d7e9e9e9e9e9e9e9e9ebeae9eaedeeedececeae8ebebe5d6cbbbb7b9beb8 +b6ad17357a97a7a9bfb3aeb1cceac5bfc590f3eae8eaebe7ded1c7c3c3c9 +cdc7bcbcc4723f524a4a41312433313e33485e3f3c434b50461f171c2525 +2724272e29222829222d40443e4b664919121f272b293e2d3f631a240a22 +151e12060a161c1a1a2d40403438453a1b1a0e13060a25281f1f1e1b1617 +1c1e1d171a1a1719190d020507030000000000050302040302060c0f1825 +2c2e3937231e262f5d9489451c698ac5e6f8fffafaca2218120d1209130e +18232a2c26190d060d192935362d230616eefa984c54595c5f60605d5c5b +5b5c5a5857565657585554535457595958515558595856575759595a5c5d +5d5a58605f5d5b5d5f62646f72754d7fff1229452a313654202a3e757251 +3c2e3f3b343f3b3e913f713b5341422c303559ff3f344cff42453a4c7368 +3d3d46452f463d454e5242423f3f3f404041323c39554528412f3a2f483d +536f1f45340b0c16090704120a0d141e2932373a3b363b484e463c342e24 +1e24292c343a4a656f7f915c2b2d302f2f2f2e2e2c27120e080e191c263c +4c61677e8d6a5759555a4b4b5a63717f9583562d16141d1e201e1e222a35 +3f475a626656402f2b2e2f25212424232b38506d8b9ca8b2b0a6967a84a3 +bacbd0ba9ae0941c38382815221237636b7dacad6674baf6fbfffff2d0f4 +a9c2bbd1fde1c0ef8dffffffffe7f7f5f5f5f5f5f5f5f7f6f5f6f9faf9f8 +f5f3f4f7f7f3e6dbcdc9cdd2ceccc3293f80a0b0b3c9bfbabdd7f6d1cacf +9dfef3f1f3f4f5ece1d8d4d4d9ddd7cbcbe2b08da39b9a8e7b64685a5d4b +5a6b4a434950554b24191e27272724272e29222a2e2b374c4f47536b4b1a +1323323a3f5c5b749e555d3f4f3c423125262d2c231f3043453a3d4b3f21 +1f161c1723464f4b4e4d47403e4345464145453e3c36261513110d0a0909 +08070c09080908060a12171c263142585c546789ade0fffbb6799da5dbf4 +ffffffffdb372f271e1c101716202b32342e21150e1420303b3c332d1626 +f2f791424747433e3c3c3b3a39383735333231313233302f2e2f32343433 +2f303332302e2c2a2c2c2d31323232303635312f303233353f4244296bb6 +0f220b09100d11212b1f445a2716212c201a232c2d7b331e2f262625260e +2149d3111d30c8163d363c2e393331290e595d4d09120f1b181816161516 +19211c071e130e81071f1c232f4863401f13001811142130394e617b92a7 +b3bdc5c7cfcdc1b49d744c4c3a2f2e32373f46577780899a86312e2f2f2f +2e30302f302421273b556d91b7cfe6ecfaedb7a0a8a8bac9c7b7853d1002 +0005091323282f36363637404d5b63737d85806e56463a392f2e36383535 +3b455f7b91a1afb4b2ad8c5f2f080209070f552e1535211635556aa5dcf4 +f3f9993a6eb5d3d6dfdac8ceefa2bbbeaa968ac5d453d0ded0dceededede +dedededededfdedddee0e1e1dfe1dedbdcdfe0dcd8c8b7b0b2b4b29a0629 +36618487a19ab2b1bbce9a9ba770eddddedddedbd3c5bbb3b4b7bab5adab +a966001912060a00000412282637452c2a545a555124211e252326252b35 +2f262a271e1d252a2f445e501c1b261f1c1c1f13204d6f88a3a49aa7947d +6e655b48311a202426476b5b2e151a2831518bb1b8c1c0b5aba5a5a6a9ab +b1b1a79d9177553829242120211f1d1e1a181715111316171c23242a4141 +220d01000a4252300c517fb3d8eef8fdfff240313123201919181a1d1e1d +1b16121114181e21201b171e00aef4c85d8a9d93908e919494908d8f8e8d +8b8a8a8b8b89878586898c8d8e85888b8d8d8b89888d8a88898c8d8a868e +8c8a8a8a8f9397979a9c3f82cd2b3e292a312c2e3d433253653429384033 +2b343a3b89442f42393a393f2f4467f0293341d620473e44343f3a3e4029 +767a6b2a333541414242444647474a4530473c38ab2f413a3b41536b4320 +1300150703060702070a111a202526261e2832394143362437312c2d2d2b +2c324568737e90812b2a2d2d2d2c2b2b2b2b1b13111e324b74a0bfd7d7d8 +b5693d3324251b1a232322293d38240f0710232b2a26222227303a41515a +6461503c2c262924232b2f2c2c323e58768c9caaafafaf9b7f6252595f57 +528b58344b362e434b538fc5dee1ed933d77c4e1dfe0d1bdcbefa2bdc1b1 +9e95d1e062dfeddde9faeaeaeaeaeaeaeaeaebeae9eaecededebeeebe7e8 +ebece8e4d3c2bbbdbfbda51133416a8d8ea8a0b8b7c3d6a6a7b580fbeae8 +eaebe7dfd2c8c0c1c7cac5bdbbc18e2e514d43483427292d372e3a452a27 +5359545023201d252326252b352f262a221b1d272e33475d4c1615211d1f +243646443f321c1d150c21190c0a131d1d1c1e2e2b2946685a2f16131306 +0b2c3a2e2723211d1d1d1d1a151a1a191b1c0f0405080301020304030705 +05060402040b0e17232325373a2520272b497d7f45145886bee1f7fdfafb +dd2715150e100f130d0f121313110c080a0d11171c1b16111300c0ffc544 +555e5b5e60615e5c5b5b5a5a595756565757555351525558595a50535759 +595756555a5755555859565258565555565b6064666a6d4d90db36493331 +362f32404736586b3a2f3e473a333c4344924c374940414044364a6ff833 +3e4be12c53494f404b444748327e827331383844434141424343454c4932 +493e37aa2e403a3b41556e48251b071c0f090b0d080f131d262f33353831 +3c44474e4c3924342c27282a2b303441616d7a8e7e2d2b3030302f2f2f2c +281408040c161d2e434e626a81845c515f5d5f4c485560738397885b3115 +1220282a272321232a333848545f5e503d2f27292021272a27272d385270 +8696a4a9a6a2a2b2b3b1c3d6c6a1b757223e27141f180f39657b8db98350 +9eeffffcf5e6ced6f7aecad2c3b3abe7f679f4ffeefafff8f6f6f6f6f6f6 +f6f7f6f5f6f8f9f9f7f7f4f3f4f7f8f6f4e5d4cfd1d5d3bb233d47739698 +b2acc4c3cee3b2b3c08dfff3f1f3f4f5ede3d9d1d2d7d9d4cac8ddc97a9e +9d93957b665e5858454b513530595f5a56282522272526252b352f262a28 +222733393c4e624d1817282a323b58757e7c6e5652413242362824292c26 +21213131304c6f60341a1a1c17254e645f5d5a554f4b4b49464247453f3d +39281714130e0c0c0d0d0c0f0c0b0c0a07090f131b21283b595b506488ac +d4fbf6bc768ea2d4f0ffffffffee3c2c2b1f1b171715171a1b1b19141011 +14181e22211c1b240cc4ffc03d4d4f423d3c3b3c3b3b3a38353432313132 +32302e2c2d303334352e313232312f2b2a2d2c2a2d3132312d32302d2d2e +3335393b3c3f098ea4031553a08557031817282c573a180d1722241f2536 +2a5d1e182d2823d05d124ae7042054c50121534363202b201e78d672da40 +172b1a181816161516181c191f140075de1f2a13243f56bd2a05050d1a0a +22223b40637991a6b4bcc1c4c1cbc0a4938d6f454b4037343535383d4e70 +7e8795983a2a2f2f2f2e30302f30241d27405876a0c0d5e9f5fde1b2adad +adbbcac8b8873f130000070c1623282d30313032373f474e626a747f806f +573f2f2526333b39343638485f778c9fabafaea692642c1313131c261c24 +2e2219466385bde3f9faec756ab3d4d6e2d9bea8c69d8b9f9eb5ddf2c651 +07bbf3e1e7d3dededededededededfdedddee0e1e0dedfdedcdbdbdee2e5 +dfcec7bcb7b19a1d21345957528e9199aa8ca9b1c1a55ff4dfe0dddddbd3 +c6bdb2b4b5b7b3adaca78000191406110400001527262e33262940403a43 +29312928282c2c323b3224242927221e25333f4443232b2c1d1b1b170e07 +1868779d949c9c8e7b675e5949321f101a324754677f131b212c4882b7c5 +d1d3cac3bdb7b2b2afb6b5aca2947b57382a262524252523231f1d1c1913 +1517191b1e1c243c40240d0400042f493514437fafd5f2f9feffff4d3434 +28231f191c1a18181617171a1214161716151618230066eee1698b999390 +8e919696918e8f8e8d8c8b8b8a8a8a8886878a8d8e8f88898c8f908e8b89 +908b8786888a89878a888686888c8f939093961aa1b71a2d6ebda2731c2d +2835355c432b242b36373236473b6e2f2b413f3aec7b3367ff1a3462d10b +2959496b28342d3593f38ff861385140414242444647464540463b219dff +464a2f384d5ec1280002081000090006000c0f171e2224252623373c323a +4b412737322d2c2b292c2f3f61717c8b9334262d2d2d2c2b2b2b2b1b0f10 +21345280a8c4d8dad39c55362a27271a172022242e3b3927110710212c2b +28242222262a2d4045515c5e5139271f1a1a28302e2a2c3040576f879aa6 +acafb0a98c695e625f60624d4a46332a4d5872a9cee2e4da6a69bae2e4ea +dab59dc29d8ba3a4bde9ffd36114c8ffedf3dfeaeaeaeaeaeaeaeaebeae9 +eaecedeceaecebe9e8e7eaeef1ead9d2c7c2bca4282b3f62605995959db0 +94b1becdb370ffeceaeaeae7dfd3cabfc1c5c7c3bdbdbfa52a4d4d414c3a +2a2530372d313224263e3e384128302827272b2b323b3224242424202029 +374245411e262b1f2127354d3f1e3f1f28171f2520130b111c201d1e171a +2f404d64801416100304233e352c27272929251e1a11161a1a1c1d110403 +04020103040505080506070602040b1319201d1f323a28212b2f456e7b4f +204883b5dbf6f9f9fae93114170f0f120e110f0d0d0c0d10130b0d111211 +10111016007bffe6545657595e61615e5b5c5c5a5a595857575656565452 +5356595a5b5354585b5c5a58565d585352545554525554525254585e625f +62672cb0c6283979c5a87721322f3b3c624a312a323d3e393e4f43763732 +484540f0833a6fff253f6ddd1736655576333d363d9cfb97ff683d544343 +41414243434447454b40239dff454930394e61c42d07090f18020f040e04 +151b242c2f3132343245493a404d412536312b2a2a292c2e3a5a6b788990 +36273030302f2f2f2c281202020d1420374852626f817250566066634943 +4f5e7389988c62371a162831312d282321222426373d4b585c4f39271f18 +1a262e2c282a2d3d546c8194a0a39fb2d5d2babbcbc1a786493336200a21 +20264865829bb66479d6fdfeffeec8add0a997afb2caf7ffe37025d8fffb +ffedf6f6f6f6f6f6f6f6f7f6f5f6f8f9f8f6f5f3f2f1f3f6fcfffcebe6db +d8d2bd3c35456967639fa0a8bc9fbcc7d9be7afff4f3f3f3f5ede4dbd0d2 +d4d6d2cac7d7dc72999a8f98826a5a5b5847444031314949434c30382e2d +2d3030343d3426262a2b2b2c34424b4a44222c332e374159807a5c7b595c +4141433b2c22252b2822231d223848556b85181c18131d4569686663605f +5b564e49414646413f39281813110e0d0e0f100f110e0e0e0c080a0f171a +1b1f3654564d608ab6d7eff4c88480a0cdebfffffffffb472c2d221b1b14 +191715151415171a121417181716171b280c7effe04f504b413d3a393b3b +3c3b3835343332323131312f2d2e313435363132333434322d2b322d2b2b +2f333432332f2d2d2d31363a36393d1fc1920b0aa59c4aeb2b1d163a2361 +6d5214172a271c234a5dcb7f290c1d85ca220068df041f6cde0053544edd +9620250f9cbf32e7351d0a17161312101111141b241c1136be63071e1d30 +346ea0131e08170e1033224258788ba3b3bdc2c6c4c2c2ab806f79705649 +443e383634333644657a86909a4b282f2e2e2e2f2f2f2f261b2b485f81ae +c8dcebfdfacbb2c5b4aebbcbcaba8a411600000a101a25292d2e2f313339 +3c3f435559637684806952382925303b3a36363438465e768ea3afbeaa9a +8050261716191226231d2a2f4f7fadd7e8f7f6d37facdbdad6e5e0ddd99d +a1c0c0e5f4c4792a1b3ec8f2d3e0e1dfdfdfdfdfdfdfdfdfdedddedfe0df +dddbdee1e1dedcdcdededadec7b1a395383c1343a6c2b695b7bccdf4c872 +2c1de4e2e2dedddcd6cbc4b8b9b8b6b2aeaca79105191407120900011c2c +2d3336353e3832313b353d382e323431353c2f1e1c34393831363f3f3539 +2c393426242221140b1e63838d99ae9992826b605f523a22202d383a3f53 +6a1821222b4276b8cfd9d9d3d2cdc4bfbeb2bbb9b1a79b83623a2b272425 +26242325201f1e1b1617181815181820353a25050000001f3d371d377ea8 +d1f6f8ffffff6339342d242018201e20211d171416121516181716141620 +0d23e4f193878f94908d909596928f8e8e8d8c8c8b8a8a8a8988898c8e8e +8d8b8b8c8e90908d8a908c8886868889898b8986858587888a8b8e902ace +a21c1dbbb463ff3f2e2341266071632b2b3e3a2f345b6ede923d23369ee6 +411e83f718317ae8015b5a54e59e293326b7dc4fff563e303f3f3f404142 +4442434741365ce486293c35423e729f0c14010d01001400030712151c21 +23222429304039242b474e3c33302b28282a2f3139566d7b869545242d2c +2c2c2a2a2b2a1d0d14293b5c8dafc9d6dec77b483e24252719151f21242f +3b3a28130811212d2c2c2a282624232233343e51615e4a38281d19242f2f +2c2c2c303e5671899eabbdaea89d7d625a5d5f535e4f3839374d749ac4d4 +deddbd71aae2e8e4ece1d4d19ba1c2c4ecfed1873b2c4cd6feddeaebebeb +ebebebebebebebeae9eaebecebeae8ebeeeeeae8e8eae9e5e9d2bcae9f43 +461e4cafc9bd99bbc2d3fcd27e3a2ef2efedebe9e8e2d8d1c5c6c8c6c2bf +bdbdb4314b4c404c3f2b26373c373835333a36302f39333b362c30333034 +3b2e1d1a2f3637343a464335372a3634292c30425646273c2f1d1e322221 +15090c1a1e1b1820272e2d334e691c20130701184141342d2e3536302722 +101516161a1c11060002000000020303070505070603040912151b191a2b +3528192530416273562a397daad4f6f7f8f9f1431712100c0f0913131516 +130d0d0f0b0e111312110f0c12093cfffa80504b5a5e60605d5b5d5d595a +59585857565656555455585a5a595657585a5c5c5a575d58545251535454 +5654515050535658595d603ee1b22c2bc8be6aff463529492f687a6a3132 +4541363c6376e59944293ba3ea46268cff233d85f40e686660f0a9323c2e +c0e457ff5d433341413e3e3e3f3f40454d473c5fe5882a3c35424075a413 +1c091508031a000c101f212a2e2f2e2f313b4a41272a464c3b35312d2928 +292c2d334f677784924725302f2f2f2e2e2c27140006141928404b535f74 +78564c6762696549404b5a748c9b91683e1e1d2c373735322e28221f1b2a +2c364b5d5c4837281d19242f2d2a2a292d3b536b8398a2abadcbd5beabb1 +af9a6f55362522121c364b5b64819ba571b5f2f5f1fff5e5e0a8adcfd0f6 +ffd990433455dfffe9f4f5f7f7f7f7f7f7f7f7f7f6f5f6f7f8f7f3f1f3f7 +f7f6f4f6f8fbf7fde6d2c4b857502453b6d3c7a4c6cedfffdc8a4538fbf7 +f3f4f5f6f2e9e2d6d7d7d5cfc9c5d4ea7894978d96856b5b625e504b4340 +48443e3d47404843373b3b383a4134221f353d3f3d46504c3d3c2f3d403c +434d6b90886a7d6d554c57423d3222232c2a2320283139373d556f1f251a +15193a6b736e69686c69605852414543403d3a2b1b0f100c0b0c0e0e0e11 +0e0e0f0d090a0e1613141b344d4c495482b8d6e5efd392729cc3e5ffffff +ffff5a302a241a19101c1b1d1e1b1514161215171918171515231840fef5 +7c4d42443d39383a3b3d3c373534333332313131302f3033353534343231 +3334342f2c32302d2d313435353632312e2e2e33333435380bd0621500c1 +b3b4c40e3034373bbdfe811f232c1e222e6457e7db540955d44900068eba +0a1c7edb074c4d87f1ee411c2479c190dd06211d171513110f0f0e121925 +12199bda3c421e322b214c1f0c141312111d3434536d869ab0bdc2c7cbc7 +b8a78a68585f6866524f4a4036302c303d5874858c935e2a2e2d2d2d2e2e +2e2e291e32546b8ebad1e4effff2b4b6e0bba9b5cbccbf8d431503000b10 +1b282b2e2d2e32373c3e4141494d5765757975695138292e383b3a3c3834 +37485e758fa4b6afb2ab8b6136150d1225171a29435c89bee1eef8f1c0b1 +d6e3dbdaddeaf2c40d467a858b5a331e385b67baf2e2e7e1e1dfdfdfdfdf +dfdfdfdedddddfdfdedddfe0e1e3e3e1dedbdadae6cdb7a7954441391a10 +3592ababb29473442d3d51e0e4e3dededfdcd4cfc3c2bdb8b2aeaca59d14 +1814080e0c0000121e272e30343a40373e3c3d3a3e3338373032382d1c1b +3034333132312f2a2c262d26211a1524343a3e688e8993a19e9e90786c6d +61462737423736443b232229212c3e68b7d7dbd7d0d0ccc4c0c1babfbeb4 +ada79473412f2b282726242223201d1d1b161617180f131b25353b270300 +00001430301b2a7aa0cdf8fcffffff763e2f2f26221a1f1f252c29221d20 +1b1614181f23211e291e00c0f5c7849195908c8e939692918e8e8d8d8c8b +8a898a89898a8d8d8c8a8b8a898b8d8e8c8a8c8c8b898787888a8b8a8886 +8585848586888b10d66d220ed3c7c8d61c3a3b3738b5fe92383b4131353f +756afaee69216ef0661923a9d01c2c8ae50f52538df9f84b2a3b94deadfb +2742433f3e3f3f404041403c43333cbefd5e61384639264b180007080702 +0611010d13181a1f222223272e35392e1e23394a4c35322c27262b313334 +49677a828e58262c2b2b2b29292a2922101b34456699b5cfd6e0b95b414e +21202317161e20222c3d3a27110710222d2f3030302d2a25222728314050 +56524d3f2c1d222c2f30322e2a2f40566d8aa0b0acb4b8a88a6d55545a65 +49373641537baed0dadfd7a6a0d4ebebe9e4ebebbc0b457c8c9465412d4a +6d76c8fdebf0eaebebebebebebebebebeae9e9ebebeaeae9eaebededebe7 +e4e2e2eed5beae9c4c4b4423193c96afafb89a7b4e394b62eef1eeebeaeb +e8e1dcd0cfcdc8c2bfbdbbbe3f484a404842271e2f3131332f32383d343b +393a373b3136352e30362b1b182b2f32343638332d2b252c282826254570 +6a3b352e0e0d181a1e120203131813132f342524343422272a180e000f42 +4d3d35363c3c352a251415120e1217110b02050100000000010302030604 +0101081211191f1f2b332b18212d3e586a53292a759dccf4f6f8f7f35317 +090e0a0c090f121a211f18161916110f131a1e1a14181a18e3ffb54c4c5b +5e615e5b5b5d5e5a5a595958575655565555565959585657565557595b59 +575858575452515254565553515050525356585b26ec7f331de1d2d1e025 +43434141c0ff993c3f46373b467c70fff46e2572f36a1f2bb2db283996f1 +1c605f99ffff5433439de6b5ff2e474641403e3d3d3d3c3e404b3a42c2ff +606339473a2a501f060e100f090c1708171d25272e302e2c2e333b3c2f1d +1f36484b3937342d27282b2c2d426176808b5a272f2e2e2e2d2d2b261803 +0b1f21324a51585f756c3b4a7f676662473f4a59738aa092683d2220333d +3e3d3b38322b221d1e1f28384a524e4a3f2e1f222c2f2f312d292c3d536a +8697a0a7cde2d4bead937e69552c211c181c3a595e67839c97a6d9eeebee +f4fffbcb185388969b6944304c6f79cbfff2f9f3f5f7f7f7f7f7f7f7f7f6 +f5f5f7f7f6f3f3f3f5f7f9f7f6f3f5f5ffecd8c8b661554a2a20449fbaba +c4a6865845566cf7f9f4f4f6f9f8f2ede3e0dcd7cfc9c5d2f18390948d92 +88675259524a463d3f4550494e4c4d484c3f44423b3d4136231f32363a3d +42423c34312b34353b404672afb68880754d424441413724212c2b221e3a +4133303f3c282a2e1d1a172f6c7e77706c706d635a554646423c3a3b3024 +13130f0c0c0d0c0c0e0c0c0e0c08080d140e0f1e3b4e4a484f7bb7d7dfe7 +d1926695b8deffffffffff6b322223191811191b222927201d201c171519 +2024211d2a291addfdb34b45453d3736383b3e3f3533323231302f2e2f2e +2e2f3232312f32312e3031302e2c303032323335383a37353431302e3130 +32323520e7260e18be9287b4002b321f4bc6f166011c24152c3c7364f1f1 +1a0fb4deab680a93ad071498bc00363d70f5b40029175fc7a29d08221119 +181513121212131c1a21118aad987a292514321b131c111d1222262d4c66 +7492a6b9c2c3c4c8c09d8069574c4b59695d5b53453a302b2d385071878a +8e6c2d2f2d2c2c2e2d2d2d2d20385d7194bfd4eaf3fff1a8bbf0bfaab7c9 +cbc08d421207010b0c15242e312a292d3336383a3c39404a54606b75775f +3f272630353a3e3d34313a485c7a95a5b4b8a79489642d0d1a1b1225214b +6d81bae0f3fbecb2dbe7ded9dfdbf1cc383e2f2931091053455d434ad2ee +d9f5d5dfdfdfdfdfdfdfdfe0dedddddfdfdedce2ddd9dbe3e5e3dfe1dae3 +d1c8ba9c45444d3f40323c4c705f413a464b5368e3e4e3dfdfe1e1dcd8cc +cac4bcb4b0ada5a2211713070a0d00011b232e383436373a324035382e3d +3637342b2b332b1e203b3632322e272c37372f2e2a2a1b12312338225484 +9f9da8a2a4987c6e706c5138373e3c3939352a24271c263257aed6ddd7cd +cdcac1bcbfbfc3beb4afac9f814d3b352e2a262421211e1c1d191414151d +141c29313a3e301003000012282914217899c9f8fcffffff7f40292f2824 +1f1719263539393c44271b121a2e3d3e3b362900a0f0e6809a95928c8d91 +9494948d8d8d8d8c8b8a8989898a8c8e8d8b898a8886878a8c8a88878a8d +8c898687898a8a89888787868683868825ee2f1a26cea298c50d353b234b +c3f5791d353c2a3f4d8475ffff2e26cdfac88325aec51d26a9c8023e4578 +ffc20c3c2e7ae2bfbb2943374141413f4040403f3f3b4232a9cab5963e37 +1f3519080d0007000805000f170e181a1e2123272d3734302724262e404f +3d3b332b272a31322f41627a818666292a2b2a2a2929292a2614213e4f70 +a4bbd3d3dbaa423c5c23181e17171f1f212a3f3a240f0712232f2d2f3031 +2e2b27241d2129313a4650584d331d1b252c3135342b28323e52718c9ead +b4a9a0a28b614d5d5944412a425d6fa9cee1e4d49fcfe7e6e7ede2f2c831 +3d312d38121b61546c5259e0f9e2feddebebebebebebebebeceae9e9ebeb +eae9efeae6e8edefece8eae2ebd9d0c2a44d4e5748493943527665494250 +555f76f1f1edecebedede9e5d9d7d1cac2bebbb9c24a45463d4040212434 +32343933333438303e34372b3a333532292a332b1e1d312c2f34342e323b +362d2b2a302926525965292e2c26161a171c12000212130d192a312c292c +2b27272b170e00074052463a3739382f241e1716100a0d15110e03060200 +00000000020001040200010617121d2a2e363b341f222e4157675129206e +95c6f7f7faf8f25b15000c090c0e0a0f1c2b3232353d22160d1529383931 +252509c3ffdc505b5b5d5f5e5b5c5d5f5859595958575655555554565857 +555356545253565856545356595754515153555554535252545453565839 +ff402a33dbafa2cd163e422c55cefe7d2039402f45548b7cffff352cd2fe +cc8c2eb7cf2832b3d40e4b5283ffcb14433683ebc7c330483a4343403e3e +3e3e3e43424939aed0b9994139233a1e1014061308130c07161d1923272e +302f32353e39332821232a3c4e3e3e382e292a2f2e283a5b747c83662a2e +302f2f2d2a2a251e060f2222324d545f647f6c2c4d8e6a615f4b46515c70 +849e91663c2122333d3e3f3f3e39322b241a1e242b37404a554d351e1f29 +2f363a392e29303c506c838ea5c2c2bac1b68969664a292a0d1722254d60 +7594a491d3e9e8e7f0f2ffd9414b3e3842191f64576f555ce3ffebffe8f7 +f7f7f7f7f7f7f7f8f6f5f5f7f7f6f2f8f2eff1f9fbfbf7fbf5feeee7d9bb +605a605152434d5e8273564f5c616b83fcf9f6f5f7fbfbf9f5eae8e1d7cf +c9c4d1f38c9097939691685c5d4f4a4b4346474d455346493c4b44434037 +383f372a283a353a41443e3e443c32323646464b85a3b8797b76694e483e +403722222d2f2428343b373436342e2c2e1d1b13246781796d6769675e53 +504a4b453b3c3e372d1a18130f0e0b0a090a08080a0a06070b1b13182c43 +514e51567db6d9e2ead4925c90acd7fffdffffff75331e241b1916131725 +333a393d44291c141b303e403c37340cbffdda4e52453d3634373b3f4036 +32323231303130303030323433312f312f2b2c2e302e2c2b2f3435343235 +3736353533323233332f323410de25290b4a7a654a00112a105c534e0015 +18181f2f205f2b5f401234242d322500b187000f9db1123131275b140727 +2f0c1c16101d151f181614151919171412171c1e08141b1024262319110d +161f29272630455f798ca4b4bebfbdbdbaa5765648433f3f4d60615d5447 +3a2f2b323451627785955f433330272d36271f3522293f5e7c98bad9ebff +ffc8bac5e6c7babac3bab7913b110009050c17172c3a2431261f34362c3b +31383e4652606c706455422c1e1c2733323c343140475a7d8ea3b2adaeac +8b5c2222211e27245f629ac6e8f1eadbd6dfe4e0e6dff5be4840383c2e36 +21295022554670c8f2dfd4e5dedee0dbd0e5d9e5e0dddcdde0e3e2dedfdc +dbdcdfdfdcd9e4e0dadde3d9c3492b3c443849261a1b02353c3c654b52f5 +e0e0e0e0dedededed2e1d8c5b7bea5b0a2300f0e02070a0f04162c332d34 +3b3432363a3731333e473b33292c3325171f3e4f5143322b2d31313e3528 +241511231d1e0b316c84999aa997ae6c645d725c402d3e302c4644442514 +1b1d314da6cdd5d5d1d6d7d0c6c3cac2c4c2b3a7a2905b463d383027211f +201c1a181815110e20171c2c2d282f3e1f0c020006222912226f9dc7e8f6 +ffffff9a323a3126271a1217183f574c4d3b290e2011306b5f714f310051 +e8fc7e95979d8f8c9a95909f8f8e8f8f8e8c8c8b93918e8b8a8b8e908f91 +918c8a8c8d8b88888a8a8580838a888a8b898583848687898b1cea313719 +5b8b765b0a22391f695d5f153334323442316d396d51244a3c484d3d17cc +a4182ab3c3203d3a336b282040482537332f3e3645403e3d3e41413f3c3a +3d3f3d232c322437352e1e0c020205040000010c181d1b1b1c1c1c222c33 +3b352d252627273444403c352e28262c312940546b7b8c573d2c2a212734 +251e321d1d29425f7fa8c7d0d3d366433c58311d1515111d261f2b394421 +1417112234293c2e26373528302425252a303a454f524b39261919232f2e +362d2834394b70889fa9a6acb39d7c505754473d27504a82aed4dfdacfcf +dee8e7efe8f8bf443d3a40343c2a325a2c5f537dd4fee8ddf1eaeceee9dc +f1e5f1ece9e6e7eaedecebedeae9eaecece8e5ede9e3e6eae0ca5034454d +41502d2122093e45456e545effeaeaeaeaeaeaeaeadeeae1cebec5acc0c1 +573c3f363a37331e2532322a2f363133393c3933333c453931292e35291a +1d2c3a4541383636352c352c252b252c495050302f2d1b1d111d0c27000a +0a1008171e382e2a413d3e22131a0d0707424e423a393e4037281f1e1517 +19100d101302020002040201020302010203050503150d12263131384421 +1928384d675b2d23649acaeefbfef5ef75060e0d09120e0b14153c514747 +3621071a0c2a6659693e2a056fffff63655d625b5d685f5262595a5b5b5a +5856555d5b565351525558595d5d585658595754545656504b4e55565859 +575351525455575928f63d422465957e63122a4026716666163335333748 +387642785b2e554651564721d5ac2033becf2d4b493f783127474f2c3e39 +34433b4842403f404343413e3c4043422c363a2d3e3c3424130a0b121611 +0c0b121c201f25292b2d323b41453b312928272730403b37322a28293136 +2538495f7183543d33342b3139261a2b170f121b252f465b65748e413f56 +88706459504a5b6c6c7f8d926243311f2b3e3c5043394a47373e2d2b2929 +2f373e4a504a3c2a2024313d3c40352b343646687c96acaeb9c5b3915f5b +4b352608270e2a4a758b9ea9bfdaebedf6f1ffd35b52494c4048333b6336 +695c86e0fff7ecfff8f9fbf6e8fdf1fdf8f5f0f1f4f7f6f4f6f3f2f3f5f5 +f4f1fcf8f2f5fcf2dc6243545c50603d3132194d54547d636efff4f4f4f4 +f6f6f8f8eefbf0ddced5bcd9ef988f9ea3a79c875b4e4a423b4556504848 +4b46403f4950443c353a4235292a3a495957504c474032382f2e3e465787 +a3a97e78745d533d402d48132628392c29233c312f4845482b1b22181b23 +68796c6262676d655954564d4f50453f3f3b20191212110a060607050505 +080809091d161b303a3a415e5c77a7c9ddf3e2985c82add3eef7ffffff94 +2a31291d1b12131b1e435b4e513d2c0f2413346d6376513a0c6ffdfb5c59 +49443433433d394637353636353334333b39353233343737373838332f31 +32302d2f31312e292c3335353834302e2f3132343628ed00212816001703 +28311a345e1d27211612222324226b423a1c321a300c162600bf73000093 +7a1a26334b3a272924211a0f141d1d1d18181616181c1d1d1918191b121f +032124262018110f111820293037455a728a9badbac2c1beb4a286503832 +36373b4b5f66645c4d3c2e292d364d5e74818c5b492e322f2e302c293228 +3145617f9fbfd8edfaffb5cacee2cdcccccbbab38d3f1a0b060d07000f2f +322a282a2a2b2c2e30343434373f4d5a60625c523e291f222a3039343139 +39465e7791a9adb2b7a88f5741281b293f6b71b4d9f1f1e9dddae2ede3e5 +d2cf98343024211f58613938284193dae7dbdee4e2dcdfe4e8e5e7d8d4e0 +e0e2e2e2e1e0dddfdddbdcdededcdae0dddfdadde7f1cf6f3f384b301638 +323d473f344d6da9d6e0e0e0e0dedededee8ddd8d6c7c5b4a3a9480c0f07 +0a0a0e021229322b31342e2f3337353133393f3b302121261b0f1a3f4c49 +3b2b272a2e2d3b342823120d1c15150022607e999da99daf755d59726241 +27312929434d5432050b19314284b9dadcd7dad9d0c4bfc5bababfb9b4ad +9771594b40362b25242421201d1c17131118181e2524212b3a2412060203 +1f29191f6e9bc5e4f2ffffffa7373d312624180d10091d25171d131c0c16 +0a1a3a262a15130024e0f7af7d96a095929a9595a49c9896939292949491 +8f8b888a8b8e8e8e90908c8b8e8f8d8c8c8d8e8985888e8386888887878a +8c888a8c36fb0e2f362408281439442d4771303c3f362e3c383631794e48 +2c442d4827313e16da91141cae902a343f594c3d46413a332a313c3e403e +403e3e404243403f41423e3137173336372f23140a04030000000109131c +1d1a1a191d222d343435272521252727334245433e342a23262a283c5068 +75825240272a29282e2a282f24253046668bb2cad2c6c24547425438271e +1f151a2120334440260f040f24272c2f313130312f2d2e2a2422252d3841 +4d4d44321f171c2429332c272f2e3753738ea0a1a7b2b1a37a6b513c373b +545397c0dce0ddd7d8e4f2eaedd8d299322e2727255e694140324a9ce6f3 +e7eaf0eeeaedf2f6f1f3e4e0ecececececebeaeaedebe9eaecece8e6eae7 +e9e4e4eef8d678484154391f413b4650483d5676b2dfeaeaeaeaebebeaea +f1e6dfddcecab9b2c57038403b3e39341f2432352d32373133383c3a3636 +3c423c3326262d21171b2d37403d363537342b322b262b282e49484c3534 +311f20161c1025000a0d0c0715172d2b2d44454c2c030b0f0f03263f483d +3b3e3c302118190c0e16161716140d090303040202060604030405070704 +0b080d1d292f3841201522354b6761381e6199caedf9fff7f5820a110c09 +100d0a0f081c2214170d1404100414342322060c083dfaff9e565d635f61 +6a6155626464625f5e5e5e5e5957524f4f505255585c5c58575a5b595858 +595a5551545a515456565555585a56585a3fff17383f2d10301c414b344e +7837413f332f3d3b3a38825a5339503b54323c4820e3991c24b79b37414d +6658484e49413a31374143444142404042454644424344423641223f403f +36291b110b0c0d12121115191f221f24282d343e413f3e2d29272b2a2831 +3c3c3a362f2a2931312734455a69784d412e353734332b24281b17131923 +344a5d6b728c2d4d5f82726b635b515d6c6e83938a663e1e192a2f3b4244 +444445433e3c352e27282e363e4848433427222a323941372f302c344d6a +859ba1adb9baac806a4b2b1e182b153959839aabb7c9dff6f2f8e6e3ad48 +443633316a744c4d3e59abf4fff7fafffef7fafffffdfff0ecf8f8f6f6f6 +f5f4f3f6f4f2f3f5f5f4f2f6f3f5f0f4feffe6895952654a30524c576159 +4e6787c3eef6f4f4f4f4f4f6f6fff5efede0ddccc9eaa4839da9aea18959 +48433e3a4758544c4c504d49474d534e46393a40372c2f3d485556524f4a +4030333031424d618ca1a7837c776156413f30461d242b3b30261a2e2a30 +485057380e131a201e4a666d6362666960565053494a514f4e49402f2219 +13100a0608080607080b0a0b0b15151d2a2d303e5b5d729fc2ddf7eaa458 +7ba7cee8f1fdffffa331352b1d1911111710242b1d21171f0f1a0e1e3e2c +2f191e1141f7fa944749463938423c3a48433d3d3a39393a3c3836343131 +323637343737333235363433333435302c2f352e31333332323537333537 +2ad1082a052320320f2325081e3b242b181519201a221d344013321e2355 +5d742800db680d03a9511d1f433a33072d261a80a8ac6a12111716141517 +1b1c1c19151a101bcacac04d24180b090d15191e2635485d75889baab7be +c1bfb6a487654132333634343e506468645742322a2c3b4a58727e83564e +303235312931352e313c4f6689afcbddf8ffff9bd5d0d7cdd1d5d7c5b892 +43200b001a1306223b3331242f3629293129333029272b36424a5c636558 +402e26242731333439363a48597799aab0b7b8b3875d30182558768bc0e1 +f2ebe9e8e6eae0d5e6e8f7fae4fb395079e2f89a492addebecdbd6e3e5d9 +e1dbd0d2d9d8e3e2dcdfe3e3e2e0e0e0dfdedddddededddbdddfe4dfd8d9 +daf0f7aa8b901d168e95a3541c3782a7f5f2dedededededededee1dae1e8 +ded8d5aeac6b00080608030400081e2722272a252b2e3131302d2d2d322b +202129201822363c382d2422272b2a332f271d100a13080d00205a7c96a1 +a9a7ac835a5b6b63482628292c3d4952b2441d172b3d6ebdd1d5d3d8dad5 +cecbe1ccc4c5c2c0b99f836854473d342f2f2b282724241e1a15191e2322 +1c212e392a140601001a291e196998c4e2efffffffb7383a2f231d161518 +131c1d141b17211f1a151c26221918140f00bdeeed8798a59e9a9b9595a1 +a29d97929091959794928f8c8e9093928e908f8c8d90918f8b8a8c8d8985 +888e8485888888898b8d8c8e903be2193b16343143203436192f4c354034 +3336382d342c414c214232396d79904015f6862b21c4672d2d4f48451d4a +433599c3c98933373f3e3d3e40434442414146363ae3ded25e3225140a06 +06020000020b151b1d1c1a191d252e383a30272123242725212934464746 +3b2e2624272d394a6671794d45292a2f2b262f342b2a2f384a6e9abeccdb +cbab284c3c44342b27281c1b1f1e323e332f17081f2c242a212d34272830 +272f2a211b1b222d3441484a3f2a1912141a25272a302d314356738e9ca4 +b1bbc2a58051312b4f5969a6ccdedcdee3e6eee7ddeeeefafbe2fc3f5881 +eaffa25334e7f7f8e7e4f1f2e6ede7dcdee5e4efeee8ebededeceaeaeaec +ebeaeaebebe9e7e9ebeee9e2e3e3f9ffb39499261f979eac5d25408bb0fe +fbeaebebebebebeaeaede6eaf1e7dfdcbbc78f2d3c3e423c352327343933 +373b3431333637363535373a352a2b332a22272d343937353636352b312c +282c2b30443f4537342f211f191815220e060f0a0b191322292d3e414aac +421d0d0c0314443c3232363a332a243520181c1d1e1c16170f0602030204 +080705040506070604070c1117212c393f241822354862613d185b94c8ec +f6fff8f5940e100a080c0b10151019170e15111917140f16201c11090d1d +12d6f9dc61646a6a696c6158626a69635e5c5d5f615c5a57545355585a58 +5c5b58595c5d5b575658595551545a525356565657595b5a5c5e43ea2143 +1e3c394b283c3e2137543d45353134383138334a582c4f3d4679849b4a1f +ff8e3329cd723a3a5d555128524b3ca0cacf8e383a41403f404245464543 +4045393feae7dc683b2d1b0f0d0d0a090a111a2125252524272c333d4444 +382c2626292c2a2328303e3e3e372d2a2e2e2c32415a6870484630353d37 +2d303024201e191a2941556077797613545c716c6b6661555e6a6c848f7f +7047212a3127322a383f353640353e382e25252b34363a3d433b2c1e1b1e +242f3132353032404f6a8a9ba6b5c2c9a77c481c0f282d2a45638797b0c6 +daedede8f9fcfffff7ff4d638cf5ffad5f40f3fffff5f1fefff6fbf5e8ea +f1f0fbfaf4f7f7f7f6f4f4f4f5f4f3f3f4f4f5f3f5f7faf5eeeff2ffffc2 +a3a8352ea6adbb6c344f9abffffff6f4f4f4f4f4f6f6f9f2f9fff6efeece +dcb164879ba5968156443f3d3b465553515356595859595b5f594e4f574e +464540434d504f4e49413036353a4b586e909aa2877d776457493f39432b +202d35332b17242931424c55b84d25181c1c376d645d5e656a655f5c715c +545757575144392b1e15120d0b0d0b090a0b0e0f0f0c131a2125252e3f59 +60739dbfd8f2eaa95275a3cbe4eefdfdffb23434291b140f171e19222118 +1f1b24221e19202a261e1c1f2616d3f3d4544e4c433e423a394345413c37 +3536393d3937363333353a393435343132353634302f31322e2a2d352f30 +33333334363837393b4dc3011631b094a94e1322302a152e20100f1c1d13 +211e0d634f280b2bcf8c9a530ae23d0900d25b142e404f86280b2526eb32 +74c40c2a1c1413151718191817140c2b50c71c313e171007070f181f212b +3e58728999acb7bfc3c0b5a28867483c343636322f39475d666a604b3d32 +313b404c6b767a4b49423233322a313a2e3746576d91bcd5e0faffdb98d9 +d0d6d6ced3ddd0c69c471e1205170903182028332b2e332a292b2625211d +1c21262c364b5c666556422e2420272e3334313036415b809dadb5b8b6a6 +7f502c27647eadcbe5eee6e7ece8e7ebd7dfdad7e3e8fc8090b0f8f8b66b +3deee0dbe2e1d8d7e1e4e7e3e7e8d6ded5dcdbdddfe1e2e2e1dfdeddddde +dededed9e2d8e1eadfd5e8efe3f1f7524be4f6ee873765f7e9e1e4dedede +dededededed7e4e4dededbe5cbb48f000103040000000015212024252228 +2a2b2c29251f1c1616151b26211a24262a2925222326292b302f271b1009 +0a0004001950768ea2a6aea791585c6562502d2c323132383c7a21171925 +314cabcdd3d0d5dadad8d9fbe2d2cec7c7c4b18e735f5249403b3a343330 +2e2c26201a1d27291e141e2d352f1607020012221f156293bfdeeafcffff +c737352a2018140f12151a1c1a1a15141f11181b18231425150e0077e8fc +a4a0aaaaa59f999b9fa5a19b979494979897959391939597979293918e8f +92928e8c8a8b8d8a87898e8a8a8a89888786878e909260d6142942c1a5ba +5f24334138233c332a2c363526302b1a705d381f43eaaab66b22fd5b271b +ed71243c4c5d983e284241ff4f93e52f52453d3f3e404141404040385371 +e230434c261b0c04040501000009141c1b1918181c252f373a37291e2628 +2a2b2520252e40484c43362c28272d313d5e6c70423f382a2b2c252f392b +2f363d4f75a4c7ced9d67f214c373f3725242b2325261d2d40362a0f0716 +15192822272e27272a2728231f1d1f242a2c323a44443724140b0b162127 +2d2c2d343d56758f9faab7c1bc9a683b28555e8ab1d2ded8dee7e9eaf2df +e7e2dde7eafe8698b8ffffc07547faece7eeefe6e4eff0f3eff3f4e2eae1 +e8e7e7e9ebececebecebeaeaebebeaeae5eee2ebf4ebdef1f8ecfaff5b54 +edfff790406efff2eaeeebebebebebebeaeae3f0ede7e7e4eed8ceb32b36 +3f453e3927273238343739312f2e303233322e2b2828242a342f272b2529 +3034363836332b2d2b292b2c323d394139312a211b1813191b1a020d060e +1f16213032313034741f1711090000373429282f333331304e3525221e1f +211d171005030406080b070605060606040207111412172836392a1a2436 +455a5a3b12548dc3e8f4fef9f6a40f0d07050709080f0f141614140f0c17 +0b1215121d0c160e1b0690f3ef836d7376756f665f63706e686461616263 +5f5d5b59585a5c5f5c5f5d5a5b5e5e5a585657595653555a585858575655 +54555c5e6067dd1b304ac9adc2672c3b49412c45392b2a35352a35332279 +68452a4ff5b4c1752cff632f23f67c31495a6aa449304a48ff5598ea3354 +473f404042434342423f375576e9394d552d21120b0a0b090509131f2728 +26282a2d343e42433d2c1f282c2e2f2c23262a3a40443f353231302d2c36 +5562673d4040353a382c323522221f1c1b2c4a5e627889500d55566a6d60 +5f5f5968726f8296856f4324241d1e2c272e3532353a393b38343234393f +372d303b3d3424170f121e2a31353334373a50718e9faebcc3ba935b2608 +2c2f48526b8997b3d1e1effcecf4efebf3f7ff92a3c3ffffca8153fff8f5 +fcfcf3f4fcfefffbffffeef6edf4f3f1f3f5f6f6f5f5f4f3f3f4f4f6f6f1 +faeef7fff7edfffffbffff6a63fcffff9f4f7dfffff9faf4f4f4f4f4f4f6 +f6effcfcf6f6f3ffe9ddcd5c7a97a396835b46403e3d45514e4c4b4e5256 +55555450504d515b544a48373743494e4d463f333439404f5e728c959e8a +7b7365564b3f3f3e3a1b2a2e32321c253136363b3f802a1f1c1813195e62 +5a5b616969696b8d74645e595a584d3d2d1f18161211130e0d0f11131110 +0f131e25201c2a3d5264739cbed5eae3a94b6d9bc6e0e9f9feffc2343025 +180f0d1018191e201e1e191722151c1f1c27192920240b8dede67458544e +47413b3b3f48433d3936363a3b3a38363436383a3c363736323436373231 +2e30312f2b2e333335353433323132393b3d45cb000079c02dc541061625 +2e156a5633100f1f1b1a3234b8cc64124ee0443d2600e03f3516e9480a3e +3bbff190001f0bcb8bc7b9000f1a161617171617161413170700cda9b957 +0b0a0a0d141c252a3a4d698299a9bac0c6c4b7a080644935343132333031 +3b4756656e675849393138353d5d6b6e3e3b56332b322e3036323a495d75 +9ac4dbe4f1ffada9dbd6ebefd3d4dbd3d0aa5327160e0800071119382d32 +2c2527241e20141312171a1c19213a4c566063543e2b2324292b26262525 +364561829eafb7b7b8a785573b617fc5daedf1e8ebeae2dfded2e4ece6ea +ebed7d789bccc0966f39c7d8e3e2dfe1dfded3dad9dcdcdde4e4e4ded9da +dfe2e1dde1e1e0dfdfdfdfe0e0e7cdcfdcd4dcdacfe4eaeb5f51dbf5e99f +513fd4ecd4e6dedededededededee0e9d6d2ded7d2dccdb8130303030000 +00001020222628252c2d2b29261f1710020300010d0b060f14181c222425 +262a2f31312819120e0500000111456f88a0a5b1a59d5d5a605f50363342 +3b2f322e29102d352e3851bbd9e0d8d7d7d4d4d7ecdad4d2cbcbcfc29f85 +71665d5249453f3d3a38363029211f292a1d131d2d332e130603000c1e1e +135b8ab9dbe7faffffd93832281f1618141316161f2a231b212b141a1a12 +271d1b1b0e0429eaf1bba6aeb6b1a8a7acabafaca9a6a3a1a1a099989695 +969799989a9a979393969590928f8f918f8c8d918f8e8c8a888684838c8e +9059df14128cd340d6521424333b227765482927342d293f41c6dd762969 +fd655b3e06fb5d5334ff5e1a4c47cdffa61b3d28e8a8e6dc1f3743424443 +4342403f4041452f22e9bdca6615110b06030302010911181a1412121720 +2d3738332e26202628292a26262b323a464f4a3e342c2629273050616334 +314c2b232c292b352e313841547dabcacfced44d2e49394c4b242225222a +302630433d1b020f16152e2227221f25252327222225292e302c28262a33 +3d3d311c0d090e182020242725344056748ea3b3bdc7b8935f354c59a0c1 +dee5dee3e7e4e3e5dbedf4eceeeef18682a5d6caa07946d3e4f1f0edefef +ecdfe6e5e8e8e9f0f0f0eae5e6ebeeede9ebebeae9e9e9ebececf3d9dbe8 +e2e8e6dbf0f6f76b5de7fff5ab5d4be0f8e0f2ebebebebebebebebecf5e2 +deeae3deece3d93d364246403a29242b332f31322b2e2d2f3033312c281b +1c16161f1b151a1a1e28313636322e2d2a2b28272b3336383d3b2d272216 +150d181421030b060e1d18243c3a2e2a26230e302f1608064b3c2d262829 +28272a3f2d26241d1d21241b130a0a0c0b0a090505040506050201030e11 +0c12253438291823374554533a0e4b82bae5f2fdfaf7b8100a0506060d0d +0e0f0f18231e161c260d13130b20130e1418173ef6e79f797c8281787473 +727b797673706e6c6b62615f5e5c5d5f616565625e5e61605b5d5a5a5c5a +57585d5d5c5a58565452515a5c5e60e61b1993da47de5a1d2d3c442b806c +49262735312e4749cfe5803172ff6e654810ff655b3cff69275955daffb1 +23452eeeaeebe022394543444444434241413f422f24edc4d26d1e19100d +090909070d131f252525292c343e4441392e241d262b2e2f2e2a2c313641 +4a463f39352e2c262a48585d323254363238302f3125201c1a1e314f6266 +728c231f5456757d5b5656566c7d7b8b9e956840342a2437282d2a293337 +39413d41464d5355544428212d373a2f1b0d0c1120282a2f342f353c5473 +8fa5b4bdc4ae8447111f285c647993a0bed6e3eef5ecfcfff8f7f7fa8f8b +aedfd4aa834fdff0fefdfafcfcf9edf2f1f4f4f5fcfcfcf6f1f2f7faf9f5 +f7f7f6f5f5f5f7f8f8ffe5e7f4edf4f2e9feffff796bf5ffffb96b59eeff +eefef4f3f3f3f4f4f4f4f8fff0ecf8f1ecfcfafc7785a3aea4926b514644 +40454d453d373b4046474744393a323137322a2c282c38444a4840393231 +37404e617785959a8d777168544c3e443b431d282a2f2e20293e3f333531 +2f193739241e24736f656061666466697f6c65635a5a5c57433427211f19 +15131110121416161410111d241c1a283c4e616c98bed2e4dfa8486591bc +dce4f6fcffd3332d231b101314151717202b251d232d151b1b13281e1f24 +221d3ff2de91625b5a51474548474c4a4946434142413938383736373a3a +3d3b3a343637383135303232322d30353839373533312f2e37393b8a8610 +11168363e23c102e1f2747f1aa291813151c234b45ccf2a100106666df67 +24eb201900db2f0f2d5ce1f17e0f1b0f9363a6a7151f1218191a19171517 +1511221e16a696a04c030810161c232e3a4f617990a5b6c3c6c2b8a2815d +44352d34312f2d2c2d353c4f626f6d6354433139363b55606639365d3a2b +31322f2f36404e6582a6cadee9fcff96bfdcdcf1f9dfdadacfd1b05d3411 +150503090510161a262a1b1012160c0a080b1014120b102d3942505b5745 +34282224231e293430343b4960819fb5bcbcc0ae8760587ac9dceaedeef1 +eee4e5dcd6e0e9e6e4e5e2d4abb9d4c4c4d4c9ede9dcd2d8e5e1d7e6e3dc +dad7f5e3e1e7e3dedde0e1dfdce0e1e1dfdedfe0e2dadbf4e7e1d7ebdfdb +e6dce5934d697664536a6cc5ebe0e1dedededededededee1dfd9e6e9efcd +dedacf31050400000000000d1f232a2e282e2d2a26211b15100f0c000000 +000001090d151f2323242a312e2f2919181606000002093b6b829fa5b3a3 +a1675a5f5a4a3a354640333e373e271b15142c3f95dae4dcdbd8d5d3d5d8 +d2d7dbd4cfd2c7b49b877c716457504e4a4845413b332b2a2d2f241d2634 +3b2d0f020300081e2514557eb1d9e6faffffea3a302822171d1b161b1930 +514f49534a2116151f47514659351e00d4fadba9b0bbbeb5b8c0bab6b5b5 +b3b1adaba8a5a4a2a1a2a2a2a1a4a29e9a9b9e9b9495919092918d8e9193 +8f8d8c8c8b8987898b8da19d27252a9776f54a1e3b2c3451fbb73d2e2829 +2b325852daffb3142b8488ff823cff3e371ef6451f3b68efff942c392cb2 +82c7cd3d483e464748474341404142504638bfa9af570a0b0b0703020507 +13171916100e121a25313832292626252b2b2a28272626283645504e463e +2f222a282d48555b2f2c523020292d2a2e32343a466087b0cbd3d7c3323f +44394c522d24231d28322f3e3f471e141e181b1b19242920172026222528 +2f373d3c352b252227333d3725160b0911161827363233373f547395afbe +c5ccb787534054a3c7dde4e5ecece7ebe3dee9f3efebeae7ddb5c3decece +e1d6f9f5eae0e6f3f1e5f2efe8e6e3ffefedf3efeae9ecedebe8eaebebe9 +e8e9eceee6e7fff3efe5f9ede7f2e8f19f597582705f7678d1f7ecedebeb +ebebebebebebedebe5f2f5fddbeff1ee5a39434340362c20232b28282924 +2a2b2c2d30302f2e2d2a1c12110d080e1115212e34302c2a2a242727222d +3834393d3c29252815150b1510240907080e1316203d3e32362f38251e12 +0002002b3b2c2524242223262923282b221b1c1c231b1111140f0a080506 +050606040200060e0f0d1729383d261420384350533f0c4376b2e1f1fdfa +f7cc150b07090712110c1112294a48444e451a0f0e1840473a533d2f0ee0 +f3c483828a8c83868b85828383817f7b77746f6e6c6b6969686a6d6d6965 +6669665f605c5b5d5c58595c5f5d5b5a5a59575557595ba7a32d2c319e7d +fc532744353d5bffbf3e2c292a3037605ae3ffbd1c348c91ff8b46ff463f +26ff502c4876fcff9f344132b787ccd03f4a3f46474847444242403e4d45 +39c4afb65d1210110c09090d0c13161d2123252c323a4042372b2423222c +2f302f2e2d2b2932414b4b484138292f282c424f552d2d5a3b2e36342e2a +271e1918233753646e7f830e34515674805f55514f6b83899fa1a8785c4d +39373129323b34313d48495057636e7576715a3a282c373f3a26180d0d17 +1f2234453e383640547396afbbc0c2a66d301423626c7d95accce0ecf9f6 +f1fafff8f1eeebe4becce7d8d8eadffffff7edf3fffef2fefbf4f2effffb +f9fffbf6f5f8f9f7f4f6f7f7f5f4f5f8faf2f3fffffaf0fff8f3fef6fdad +65838e7e6b8484dffffaf9f4f3f3f3f4f4f4f4f9f7f3ffffffe8ffffff9c +8facb4ad98785848453e3e473d3836393f474b5052514e3e302e271f2124 +28374348433934312c363f4962788195998e746e6d565041453a4624232a +2c262027404337413a4430251b0c161851716a6564656464676a64696b60 +5859514e3e312b29221a16161517191a191713141d241f213041545a6690 +bacee0e1b0485d83b4d6e3f4faffe6372d241e111819151a1a3152504b55 +4c221716204852486148360fdeebb66c61615b50535953505052504e4a48 +454140403f3e3e404144413f393c3d3c3336303131322c2f343a3a383737 +363432343638797d0f2356b077b51804281f3c30b9460a1c1f0e1c295033 +748312122b9979ae3216de152220eb301e1d5f8094231e1d285098902b00 +102114141615141214151808092d76694f11080d131b232f3d4a65768b9f +b3c0c7c4b4a1825f43342d2933312c2a2a2a2d2e465a6b6e6c624c363839 +3c4b505a37385043332e33302c3a46536d90b3cde0f0ffdd94c4dae0e8f5 +e1dedfd2cead5c3415190a0e000021001015392d00072400010000040807 +0007202a2d374447423a2e20201e1b314945333c444d6283a1b0b7c8c0ac +92648acfdce1e7ecf0e5dee6deddd6dbdddce4e5d7c7dcf3f2eee9e6d7d8 +dee5e0d7d7e4dcdce1e8d2e96c38d9dde1e2dedcdcdee0e2e2e1dedfe2e6 +665be4ded6d4dad6e0dcd4e4f0d9ebf5f5f0f5ede6dcdbd8dedededee0e0 +e0e0d9dee8cc98eddedbd9cf49070601010000000e21292f352f2d27241f +1b1614121b1b0f04060200000508101b1f1e21292f292c28191e210e0300 +0306336a80a1a7b3a5a4745963594b41323b34304b464f380c14233a3d6e +cedddddfe0dcd8d9d7d1d7ddd6d2d5cbc5aa95898074675f5b5958555049 +41363834322a232630373213040200041d2b155174a9d6e6f8fefff83b2e +2521141d0f0b16112a4e48444b3917090e21445558673d1c0088fff6adb1 +bdc1b8c2cabdbabab9b8b6b3b1afb4b3b1afafaeaeacaca9a5a2a4a8a49e +9f9a989998949396979492929392908d8d8f919296283b6ec58ac8271335 +294639c2511e3233202b375b408294262b48ba9ed14d2ff934413fff472f +2b6b8ea63a3b3c476fb9b35121394d42444645424040414937324d8e785a +160908060402040a0c19181815111219222a31332b252629292f2c292929 +27221e2e3e4c4f4e483522292d3040454f2c2e453928262e2b2b34383b4d +6d93b3cddae89b2c3e3d373e482d27261d252f2d3f4853302c1c20430a22 +254b42102547272e30363f47484339312a292d35352b2115090b0f112e48 +47333b3f44587a9db0bccec2a7834b65adccdadfe6ece4e1ebe4e5e2e5e6 +e4eaeee0d1e6fdfcf8f6f3e4e5ecf3eee5e7f2e8e6ebf2dcf37844e5e9ed +eeeceaeaeae9e9e9e8e8e9ecf07267f2ece4e2ebe4ede9e0f1fce6f7ffff +fdfffaf2e9e7e5ebebebebeaeaeaeae3e8f4d8a6feeeedf1ef743d484744 +352e1e1c221f20211c20232427292d31353d3d2f221d140b0c0f131d282a +252425251c212421303e363c3c3e2828311a1909120f2311050e0f101718 +30322f433e49350f131619030c31232224252223262621272a1f18171525 +1c121014110c0806060607080501000c0e0c0e182633392b162038404c51 +440c3d6caadef1fefaf8dc180b070a041204000a072047413d4634100204 +173a4b4c6144290694ffe68d868e8f868f978a8988878684817d7b7e7d7b +79767575767675706e6f746f6a6a66636563605e6163605e5e5f5e5c5959 +5b5d969a2c3f72ca90ce2e1a3d324f42cb571f3032202e3a61488b9c2f32 +50c1a4d75636ff394644ff4f39367799b04241414c74beb754233b4e4244 +46454240414045312e4c927d601c0e0e0d0a090b111119181d22262b3239 +3a3d392d2523262730303031312e28212e3b494d4e4b3d2b3031303e414b +2a2f4d443631352f27281e151a2b4054677797610f3b4e5663735c575250 +68818da8b5bf95825b5470324849736d3e577f646f75808b9698947e5c46 +4245484335271b0f12161a3956533b414347597b9caeb8c4b4916223386e +758097b4d1dfeafffcfcf2f1ede7eaede7daeffffffffffcedeef7fef9f0 +f4fff4f0f5fce6fd8450f1f5f9faf9f7f7f8f8f9f9f8f4f5f8fc7e73fbf5 +edebf3edf6f2ecfaffeffffffffffffffef2f3eef3f3f3f3f3f3f4f4edf2 +ffe4b1fffbffffffc29db9c0b9a0835f494138373c383a3e464c565f696f +7a7a68584f42363432333d48463f37332e26313d4560787e93948c706d75 +5b5743463c492e1f2d2a2423213437344e495540161b202a1b3268646669 +6a69686a6a62686b5f57574e5342342f2e261e1b1b1a1d1f201e1b141b1d +212426303c4e5e658db6cadce2ba4b597bacd3e3f4f9fff5392c231e0f18 +0c091410294f49454d3b180a0d204354586d4e310892fad97666645e5158 +605351535251514e4b494f4e4c4a494848484846443f4345433b3e373736 +373132373c3b39393a3937343436389f64001a002c1f140e20131990244f +0c181a1b1a2a19413d2a31171e03090d001d1cd906101ad6062a262c2845 +1622211c24090c141526080d0e1111100f111310161b200e191803101317 +202c3d4a59788899a9bbc2c4bca2886645332b2a29272725262c32312f3a +50666e726c573c2e36383e3c492f37414b3d2d33332c3a4b58749bbbd0e2 +f6ffb091bad8e6e2f7dbdde5d8cea55229130d0514002b8e40110d4f4900 +073c000000000000000003141b1a202b32373737251e17132f4c4830414c +474d68879ab6c9c5c4bf7da6dee5e4e4e8e5d1c9d4eff7f5f7f8f5f7f9f5 +f7f7e9f4f7eff1f2f3efeaedf4f1e9f3eaf1f7e5f74b00c5d2e0e2dcd7db +e1e0e2e3e1dedee3e7421ef4f3edf4e9ede1e9e9d6ebe2e5dad4f0dcdcdd +d9e6dfdededee0e0e1e1e1ddebef7f0cc0e9d6d6cc5c0e10090902000006 +1a23282e291f1915110c0a0b0e0b12100b0d030000000008111411182326 +1d2320151e2611070006042e6880a4a9b3a5a57f5c6659534a2e2e24264d +4e5046121a1c25346cc8dcdfe6e6dfd8d6d8ccccd0cfd3ddd7cab19b918a +80766d686564605c544c42403530291f1c22273b18060300001b2d164e6e +a4d3e6f8fcfffc392b211d0f1b19161f0e182e160a1a1414151a1e1f2315 +1d0e000036fdf7afb0bdc1b6c0c7b6c0bfbebdbbb8b8b7b9b8b6b3b3b2b1 +b1b0aea9a7abafaca6aea8a5a7a6a2a0a29e9996959695928e919395bb80 +1933164432271d2f1d23992d56172a302d2c38274c4a37422b37212c3220 +3835f4252f39f11d3b343836572d3f403b452a323a3e4f363b3e41413e3d +3d3f3e43423e21241d020b07020001060b0c18161615151a222d2f332f27 +252a2c2a252525292e302a232636474f524f3c27212b2d32313e242b343f +31232c2f2b343a3d51769bb6cfdfea6d2832393c374726262c232529263a +4c5237422d66c572393175721a397139343539404b50504a3f36302f3132 +2e2923100a060625444432434b454864869ab8ccc5bfb16686c4d8dfdee3 +e2d1cbd9f5fffefffffdfdfffefffff3fefff9fefffffbf8fbfffff7fdf4 +fbffefff5706d1deecf0eae5e9efe9e9eae8e7e8edf14e2afffffbfff7fb +eef6f6e3f8eff2e7e1fde9e9eae6f3ecebebebeaeaeae9e9e5f5f98b1ad1 +fbebeeed884654545142311f1a1f1e1e1f1b1a1d1f21252c343b39413b32 +2d200e0912141e25251f1e2523181f23213445393e3c3e272c3a201f0b10 +0f231603130f141a1322222545444843151a100a03122f23242826211c1e +2319191c1414191920160a0b0f100c0a06060606060400000b0904071119 +2228351c23363d494f460d3965a5ddf2fefbf9e318080306000e09061202 +0c240f03150f0d0e101415170917120b0f41ffed94898d8d838e96858f8e +8d8c8a8785848483817e7b7a79797a7a7573777b78727a747173726e6c6e +6965626162615e5a5d5f61be831d371a48382d2436262ca236601d2c2e2d +2c3b2a52503f4a343e293238263f3cfb2a343ef825453f44416135454540 +4a2f353d4051363b3e41413e3d3e3e3b3e3f3e25282308110b0705080c14 +1219161c232931393f3c3a322524282b2c282a2d323a3b32272735454d53 +51412e2a3331322f3a222d3b493d2e333027261c121930445569819f3913 +344d59596e535658566a7d87a6bfc7a8a47da8ffaf766fb4b25d80bd8987 +8c929eacb3b3a4836b615a554e43382f19130e0f2e51523e4f534a4c6584 +98b5c5b9ab96445d8b898ea0b9cfcfdaeffffffffffffffbfffffffffcff +fffffffffffffffffffffffffefffff9ff6312ddeaf8fbf7f2f6fcf8f9fa +f8f6f4f9fd5a36fffffffffffff7ffffecfff8fbf0eafff2f2f3effcf4f3 +f3f3f3f3f3f4f4f0ffff9725dbfffeffffd3a3c3cbc7ae8a664f473e393c +3e434d545c6874838c8e938a7f76644e464b49505751463e3e382c384249 +657e7e908f896b6d7a605e46473d49351f2f2827281c26272a504f554e1c +221a1918356766696e6f6966666a5d5b5d58575b555140312e2c29231f1d +1e202023211c171b181b1f20242c3d63658bb3c5d6e1bd4e5876a9d4e4f4 +f7fff937291f1a0a1713111c0c162d170b1c161516191d1e2113211b1114 +43fae17f6a655d4c535b4a55545554524f4e4f504f4d4c4a49484a4b4a45 +43474b48424a444143423e3c3f413e3b3a3b3a373336383a9e4d051a1509 +1111171f200c5a3a261d171b191e1a1a37342b241f22090b18080e46ce00 +1c1ed413293525233027241d1a28141d1a15110e12101011131212120f21 +1922241d200c13171f2b3f5262728c9ba6b2bcbdb6a7836244322c2d2b26 +2b1e84a87f225b472d53507275605a772c2d3a333b373d2f3464382f3032 +2b394c607e9cc4dce0f4ff8e86bed7e7e7dbdbd7ddd4cfa54f2208051005 +0000030409060000000d0c001d07000005060307100e08060e19242c2823 +1f201d1f2c354851633d2c4d68899abdcbd2d2b7b4dbdfebe3e9979dd082 +636e704f47856656646e7f8a898792a1a19fad958094907b7faa90838277 +2f14a2f4d4d8dfdbdedae0e0e1e1dfe0e7f14b069a767ea5abadc8c5d1d6 +cbd7ecebedf5f7f7eff0eff1ede5f7e9f4eceff3f6f4f15a1d3ef0d2cbdc +860a0b0f06120a183d001d44772d0d154a08080300000000030b0f0d0700 +08000000060d3204254b2f1804003e04020517115ec18194aeb7a99d8d66 +55655a5633271f2c4f43548e2c0d25222058bceae2e0e5e2e6dfdcd7d3d1 +d2d6dad8c8bdaf9e948d857b807372756c645b4b3d383a34261f26323e19 +030000080c281c4777a0ceedeffeffff522a2622171a1b1510171e201b18 +110e12191a161c281d0e18131200f1f7c69cbaccc0afcdbcc4c2bfbdbdbc +bcbabbb9b7b7babab8b6b6afadb1b3b0b0b4b2b2b2b2b2afaaa5a7a9a69e +99999997949393ba691f342d212424262e2b1763432d2829312b30282842 +413835333b282e3e2b295fe9153b3def2a3a433131423e413c3949354340 +3e3a3c4040404141403e3e3c4c3c3c33221f0204000000060f1515171414 +171d242c342d2a24242b2e2a25291d87ac8324583d1d3b325356423d601f +233129302c2f2125572c252a2e2a3239445a76a2c3cedcda4b1c37383d3a +2b261f231f262b253749544e43434c514f494438344154554a6c5a4e5461 +66635f574b3c312e2e2c2c1f150e0c0c0e1b2b4757653d2b4d68899cbecb +ccc7a69dc6d6e8e0e6959cd18669767957518e6c5c6b77889392919cabab +acbaa28ca09c8789b3998c8c81391eaeffe2e6ecebeee7e9e9eaeae8e9f3 +fd5813a7838bb4babcd5cfdbe0d5e1f6f5f7fffffff9faf9fbf7f0fff2fd +f3f6fafcfcfb672b4fffe5e3fdb445556058604b4e64153052843a1d2c66 +2d36383b3e393c4145443c31282e24251f2426471531573d291f1e653136 +3a493564a02914101213191e08021d192113181d2b473949882c0d1e0c00 +072b352822221f262124221e1a151311141517120d0e12100b1206070e09 +0502000005080e13192430371e202e444f3e4012316ea1d9fbf7fff8ea31 +070509050a0a010007131614110c090b12100c111d1209181a1c0bf7f3b4 +7a8d98897ba09093918e8c8c8b8987868482828282807e817a787c7e7b7b +7f7d7d7d7d7d7a757172747169646464625f5e5ebb6a20352f2328282b33 +311d6a4a352c292e2b302b2b4847403c3a402d32412f3066f01a4042f632 +444e3d3c4c4647413e4e3a4643403c3c4040404141403f3d3745383b3626 +250a090605070d161f1d1d1a1e252f383c41362d252329302f2a2e2390b7 +8f316345203b325154424166292c362a2e282e212a60362e2e2d25201814 +1c2b485f6a8295200e3e4e5a584f535152546b7e87a4bfcdc7b2a09ea3a0 +a09b908b9cb0b4acd1c0b7bfd0d6d4c9b39b8775675d5046322218151216 +233657677247304f68899bb9c3beb18a7b9791a1abc388a1e39f838d8a62 +538d685a717e8f9a9b9aa5b4b5b5c3ab98aca89393bca295968b4328baff +eff3fcfafdf7fafafbf9f7f8ffff611cb08c93bbc1c3ddd8e4e9deeafffe +fffffffffffffffffff6fff9fffdffffffffff703659fff4fffff093b4cb +c4c5a5989f445877a7665972b07d8e969fa4a2a4a8a8a296877d81757369 +6a667e435b7d64544e53a07282868e739ed766514d4c43413f231c332d31 +1e1d22305244579434152619092762786f6a6e6b736b6c67615c59575554 +4c473d342f2f2b242d23252c282522171014212726252f45636284a6cadd +d1ba575583a6d1eeecfaffff5027221e1114140c09111b1e1b18120f1219 +181419251a102222250ff5e8a05e666953415f4f5856545252515050504e +4c4e4f4f4d4d4f48464a4c49494d4b4b4b4b4b484341484c49413c3c3c3a +373636c4130906301007241821232338271e291320242222262c23330124 +0b558c71690d55be001836c6071f353b560d0e1d2b26d243371f220f1912 +10111113131313160e256b661b081619212c3c4e5f6e7f99a3acb3b7b09e +88674d3529292c2c2c2c12993324246777153a4b6c6b6a749bd84d532f3b +332f423555452e362f333b4d6282a6cbdfe3f5e67f81bcd7e7eae6e8e4e6 +d6cfab5b3108020e09000003060b191b120e161c1a241103020604000002 +111e1d17131925201f21271f172131434a6249343d4c6c8cadc4d6e3cac0 +dedfe0eef98fe18400211513211d2b0e111211151a1813161d160d150e14 +282215153218080e291b1c8ff5dddadfdbdddcdedadadcddd9e2ee6a005e +30252d1f1a11303b1a00091405070b0f0e0e10141608194e52583f312e21 +14341c1a25e2d7d6dea3040f0401010d0c25000009280000002d00000000 +00000001080d0c0602030006060f14340a0136381c01002e0a0f001a59a7 +d3858ab3bcb49e916d5d615a5a3b322a253731424319221d224146abdddc +dee8e7eae0dbdad8d8dadde2dfd3c7baaaa09a938b8d8383837c786d574d +46443924191e2a391a080000050e2e1b457aa4cee9e8f8ffff572c282419 +1c1e19171a1b1916141d18161618171b1f1d1019131400b8f3df9bbbc5c7 +c5c5b8c4c4c2c0bfbebdbcc0bebcbcbfbfbdbbbab4b2b5b7b5b5b8bcbbbb +bbbbb9b4b0adb1afa9a5a6a6a39f9c99de2d231e48251a372730302e4330 +273427363834313437304212382472ad978c286ed91f3755e11e30434764 +1f253a4a45f1645a454a38454040414141413f3f4036437f701a00050000 +0105080e12111310141d262c2e312c2b27282b2d29272a119c372a276671 +08262f4d4c4b5685cc454d2631282134264638232d2b303437435c7faac6 +d3e1c03f1a35393d3e37322c2c21263032484b55534f52585e5f5d666a61 +60676f6f7b6b5f606768625f5b64675e49373132201613130a000a20404f +654c353e4c6c8cacc0d2dabdb2d2dadeebf88fe18502271b1a2825311417 +17181c211f1c1f261e171f181e342c1f1e3b2111163325269bffebe8efeb +edeceae6e6e8e6e5eefa77076b3d323a2c271b3a442409131d0f10151818 +171a1d21112257595c433330251a3c262836f4eaeafbce3f5b5a59585d52 +60252c36551e282e60323e4144464c4e53565650463d3c373c3b3e415b2f +235658412924603b3e27467cb8bd381019191e171b080a1915241b232826 +3127373b192218121f00233027232421241d1f20201f1b1814171719140f +0f141410140a0c100d0c0800080d0e0e0d0e1b27321f2732444c40461030 +72a6daf9f4fafaed36090708070b080303090e0e0c0d18130f0f0e0c0e12 +140918161c06c2f6d4808d8f8d91998f9693918f8e8d8a898c8a87878888 +8684857f7d80828080838786868686847f7b797c7a747071716e6a6764df +2e24204a281e3b2c35363449372e382633373434373d3649193f2978b29a +902f75e0243c5ae8263a4e536f292d404f4af6695e484c3a464040414141 +41403e3c2e417e721f060d0607080b10171d1c1c1a2029353a3a39302a26 +262a31302e2f17a5433a38747b0f282e4b4a495888d65051272f241e3329 +4d412930282921100d1b304d62718b821b1343525a585662605d56698190 +b0becdccbfb4b1b9bdc1ced1c8c6d0d9d9e5d9ced1d8dad7d0c3c4c3ae90 +715f543a29201c1106102a536374553a404c6c8caabdc9cbaa97aca2a3c0 +dc87e9991b3f312a32283110151b2024292925282f292129222a40382927 +442a1a213d2f30a7fff8f5fefafcfbfaf6f6f8f5f3faff801074453a4234 +2f24434d2d121c2618191e21212023262718295e61674e3f3c3126473033 +40fef8ffffff85b3bfc3c1bea8ac676a71905f7380b98ea2aab3b8c0c2c3 +c3bfb5a8a1a39ea09b9894a873628f917864609d7d846a83b2e6ec6e4b55 +524e403e26242f2a3426282d2a3b324548212a1f1d2f1a55706a6a6e6e71 +6b69696663605d5c58514c44393635322d33292c312e2e2a1a1a1c262921 +1e243a5b5f84a6c7dad5c45c598ab2d6eeeaf7ffff5529241e1315140f0e +13171614141e1916161614171b1910201f270fc3efc2656b635b57584d58 +58565453525150535151515252504e5149494a4e4a4c4d53505250524e4b +494a504e48444545423e3b38aa180e11bf7d6a261e212a1e1a2b39261825 +2a1a1f261a1858590d00bb6c366a0665a4071357b6002b397dc74a111621 +67d9c1df3c1b11141313131314141616231c23483f10112c212d3f505e6d +7a8aa1a9aeb1ad9c7f6549382a25262b30302f28c1421b1755b02b354768 +696d565a932f8c3c323d313a39405332382f373e50698bb4d3e0e7f2c473 +7db5d2e1e2e7e3dbd8cbc8a54c190c010f110700000600060f090205090a +150b04040806050300040e181c171212272c24191e2b2b182e375655463f +3f537898b6d5f0e1ced9e6dee4fbcfc443152522244834191f3d332b272b +2f2c2a293e33322b33372c3744462b1b162b201570f5e3d7dfdad7ddded9 +d9dfdfdae1ef7f01553d343430393635281c2124272b26262d2c302a2b28 +2b2b3d26252835442b15203d3916dbd9d0d1be021203080301000a000000 +0e000b062500050000000000000407070503000003040203160006060300 +00000d000d4281a1a3b59c8cabafb098947269605a59393841322f313a2f +2d3a2414382c95ccd4ddebeef0e5dfdbdcdee1e4e8e5dbd1c3b2a8a4a099 +999394908b8e8364524a483d271c2533341a0b0000041032214376a0c6e4 +e8f7ffff5f2e2c241e1f1d1d1b1e1d202831262b2a1d14141c22261d2c1f +1f005fe3eea2bdc2cad2bcbec6c7c6c4c1bfbfbec3c1bfbfc2c2c0bebfba +b8bbbdbbbbbdbfbebdbdbdbbb8b5b3b8b8b4b1b2b1afaca7a2c2302626d4 +927d392d30372b273644342c3b402e2f362826676a2014d78b598b227ec0 +263276d2143c478ad55d28334084f8e0ff62433a404141414140403f404a +3d3c56400600110002070a0b0d101010111a2731322e2a272829292a2a29 +292a27c348221e58ae20222d4a4a4e3844872986332932242b2931472830 +2c34363946638eb2c8d8e1a1361932383a393a2e2420161d28222d4c5352 +585c5c5f634f5d645e575a5e606a625c5f656564645d6165645a49362830 +2a190807100e0327395858473f3d527494b0d0e9dbc7d4e3dbe1f8cec444 +1727272a4c391d234136302b2f33333130453c3a333b41343f4d4d32241f +342a1f7cfff1e4efeae8edeee6e6ecebe6edfb890b5f473e3f3b423f3e2f +25282d2e342d2f34353733323132324129252833422b1726454627eeebdf +e8e4395c5b66625c4f5d4f4f506550554d72505e5b5b5e6061636666625c +564b474e4b49465634403f3d32362f49353565a5c2bbad5819130d1c1118 +06131612201829403629272e242c3a1f071c001a2d27262724251c1c1f22 +25221f1a191b1c1610111619161611121312181100050c0c0c0b0f1f2f2c +1e2a33414b424918326fa3d4f5f5fbfaf13e090907080b0603060a0e131f +2b212624170b090f151d17271f25056eece88990888d9b93979997969491 +8f8d8c8f8d8b8b8b8b89878a868387888786898a8a8889888783807f8484 +807d7e7d7b78736ec4322829d795813d32353d312d3c4a372b383d2c2f36 +2b296c71271adb8e5d902683c4293579d61a445093de642e37438afde5ff +65453c41414141414141413f45363956440e081a050b101415181c1d1d1d +26343c3c352e282825282b2f3131312fcf56343069bb28262e48484c3646 +91338a34242c1e282a344b292e272b1f0f0e1e3b536479916b1a19445256 +5058615d524b5f74768cb6c1c3c2b9b4b9c2b7c7cfc8c1c4c8c7d4cbc6c8 +cfd1d0cfc8c8c6baa7886a514f4029120f15130c394e67614b3f3e507595 +b0cde1cdb5b7b6aec0e7ccce582e3c3a36553d1e24423b3634383c3b3b3a +4f45453e464b3f4a56553a2b283d342988fffef4fef9f8fdfef7f6fcfbf4 +f9ff93156850474541494645372c3034363b35363c3c3f3a3a383a384a32 +2f32404f372332504f2ff5f7f4ffff7cb3bfd7d6cfbdc5b2b0aec6aeaea7 +ceb0c4c5cbd1d3d4d5d5d2cbc3c0c1c1c5bdb5aeb78d948e877b7c758f76 +739dd7eddfd287504e464e3c3d262e2d2831232e453933323c3234422611 +2a06486766696f70746a686969696764625e57534b3f3a3c3a3636333435 +333a331c151b262921202940515b84a3c2d9d9cb695f8eb2d4edecfaffff +5d2a271d1514100e0f13151a242f252a281b100f161c20192e29310e71e7 +da7371625e6251525859585653515251555352525353514f544d4d4e524e +505054515250524e4d4c4f5555514e4f4e4c49443fb6110f03b797c2482b +27361a2b62751f171b211725393b516d853300aa56000000728c040f6ea7 +003c329cf4a32416152dccb56819121920141314141417171a1221251f17 +141c1f2b3c4e5e6b798896a4aeafad9d82644a372e2927292b30312e3268 +3f25112c843126325463836e6343065e3b413d3a493d3558403333353f58 +7395c1d7dfe9e9ad7581aecfdedce5dcd6d8d5dcba5f281709161e120200 +050a0c0d0f141a140a100e0f10131315130e0a0d17252d2e300c1b26231d +2028281f2b4655595548435e85a5c6e8efd9ccdcd7b9ffd0541b2b23576c +804c0d22332c2623252c2f2b2621242b2529272b594219010c192b250f4f +e9dcc9d8d4cdd3d6d0d3dbdbd6dae66d0252442c2632425d411a18302e24 +2f3328261c26212b2d24344d454f57381614221e332606e0e6dbdbda180f +0405010800080e0100000009000f000500000000000000010402010b0c13 +120c0c13032005141a1f02051a5d97ab9e8cb8c071a7a3a99b9c74695e62 +57312f473a2e3d283a24132c1a2d4283bfcddae9f0f4e9e3e0dfe0e3e6ea +e8dfd6c9b7aaa6a4a09f9e9e99959d916d544d4b412c232d3c3118080000 +0511312e3f6991b8e0ecfcffff68303023212122211e1d1c23384b53615f +3f1d121c2346475947410f24dfe4b2bac2c6c7bcc7c4c8c8c5c2c0c0bfc2 +c0bfbfc1c1bfbec2bfbebfc1c0c0bfbebdbcbcbcbbb9b7b6babcb8b5b5b4 +b1b4b1adcb262418caaad55a3d364529386f822e2d343a2d3749495f7c97 +4613c6731812178ba8232e8dc3144d40a9ffb63b33344ae9d2873c384149 +4041404040404041353e38271205020000040a0d0b0b0f12101725313531 +292623282b2b2a29292a29316a452d19318329171c384664514d39035932 +38302b3a2e254a362b303338404f6d9bb9c9dedc8d3b2030393b363b2b1f +2020303b30375052525b5f58565b5d5e5d5e636661575b5b5c5f6466686a +686460626560564c1b1f1f1307050b11142844545751443e557b9cbde3ec +d9cbd9d4b7ffce521a2c245a6f834f1123342c2623282f322d2a25282f2b +2f2d31604920081322342f195bf7e9d9e8e6dee4e7e1e3ebebe3e8f2770c +5c4d352d394961451e1c34322833372c2a202a252f31293950454d543212 +122220393014f1f6e6ebfa4a53565f6065596169615e6666615165546460 +5d60626364656565615d646268665e5d624f6a4f5a5e6142414c7cadc7bc +acb98605140417141b021013181c1023483f2b331c2e2112290e1508152d +2b282723251c1d20242524211c1c1b1d160f0f14171615141411121d1500 +01090b0c0c1225382a1d2830404c4247262e6398caf3fbfffbf4470b0b03 +090a060507080b162f454e5c593612050d173e415244441b37ede49d8c87 +899093a29898989592908e8d8e8c8b8b8a8a88878e8b8a8b8d8c8c8b8a89 +888888878583818688848181807d807d79ce29271bceaed95e413b4a2e3e +7588312b30362a37494c62819b4c19ca771d171c90ac263190c71a5549b2 +ffbd41373750efd88c403b434b41414141414242402f393629180c0b0509 +0d151617181e201e26323b3e372d2624282a2c2e2e313230397755402e44 +93341c1e3542614d4f420c5f33332824332b254a352827261e1413254657 +64828e5e27274656564a56615f56556c7e7888a9b0b2b6b1a5a6b2bbc1be +bdc2c4bdb1b6b5b6bbbfc2c4c9c9c4bcb5ad9f89743c383120130e101b25 +3b515a584e413b567c9fbee0e5cdb6bab3a2f6d15f2c403669788a541427 +38342e2d31383b393530333b373b393d6a5128101b2b3d392367fff9e8f7 +f4eef4f7f1f3fafaf3f5fe811665563c3541516a4e27253d3b313c403533 +29332e383a2f3f594f585f40201f2e2d453a1df9fffaffff89a6b9cfd6de +d1d7dcd2d0d9d4c5b1c8baceccced3d6d5d4d4d4d0cbcadadbdfdacec8c9 +b1c9a8b0afad8a878bb2dcefdec5d5ae364b3c483f42242c2a2f2e1b274c +42343e2a3c2a1a3018221e3c5e64666d6e736b6a6b6b6c6a6866635b574e +423b3b3a3837363635343e371d1118252a242430474c557d9cc0dadcce7c +6489abccedf4ffffff662c2a1a171412111111131d344952605d3b180c14 +1b3c41594f53273dedda8a72655c58535e57585a57545253525452525252 +52504f5551515154525351514f4f4e4f4d4c4a4d5456524f4f4e4b4e4b47 +9e000f10df983212131222394da59e391a14161319263a58cabd0717c062 +5a7b00827a000b7994002f2867b08121151f42eb6000180c200916131515 +1517191c272122201d1b1e2d3a495867748494a2a8aca99d82634c3c302f +2e2e2c2b2e302e2d15155f66271b282d3b565a7263532646512d2d213634 +423552522e3831415d7e9ecadae1eddb8b7181a3cce2dde6ddd9ded2cbaa +69544134414a3e2f2a2f27201c1f2a30291e1d1e201e1a181817080f1617 +151d32453b1b0d232e23202723313c4c616c5c3d466f90a8d2f2e8ccccc5 +94e5533b4e2b41594d5d4e22321d23222223262620181b222c272d313f74 +86370c0f14171e1433d3c8b6c8c9c1c2bfbdc1c7c7c3c6cc640d51493134 +4e5366613a1c28322721211b2a2839282d282f363a3457825a2112382e32 +2306cbe1d5d8d9390f130b13100e0f11000000000f030b07140f0b0e0302 +0405080809080403080c060d0c0a0909210e08032c6faeaa999d96b2cb72 +aba5a5a7ac7b615f675a37272f25264d697c470a281d1d3370b1c6d0dfe8 +f2eae8e3dfdde0e4e9e9dfd7cbb7a9a3a19ea0a0a19b9aa1977560565244 +2b1e25312f1403000007112b30345a8ab5e2f0f9ffff7134362326232828 +251f181a2a3a3e49473019151e22434b5a43391000bedccbaec3cabec2bf +c1c6c8c6c2bfc0c0c2c1bfbfc2c1c0bec4c3c2c2c4c5c4c1c5c3c1c0c1c2 +c1bdb8bdbebab6b6b4b1b7b7b7b20d2324f1aa44242524344b5cb4ad4d35 +32312c2d364866d7cc182cd97e7998149b961c2a98b017403674be943832 +3c5dff7d0c392f48323f3f3e3e3e3f414046382e211204000205070a0b08 +0a101517222f35332b252324292c2c2a29292b292a171a67712d1c222027 +3d3d55463e1f454c28241428233026444727362f3a425874a5bccde6d170 +3c252838433c422e24251c1d2532586e6f6d7579706c7069625c5d666b64 +5956595b5b5b5b5b5b4f5658544b4b545f4a210a161c0b040f122432435a +635230375f819dccf1ebd0c9c090e150394b2a405c4d5e4f23311c222121 +232626201b1d242e2b313543788a3c13161d20281e3fe1d5c6d8dad2d5d2 +d0d2d8d9d3d4d86e175a503538535869643d1f2b352a24241e2d2b3c2b30 +2b32393a33517c52190c342e362b13dcefdde5f4654a5c5d67615f5f6558 +5a5c5f64525c596a67666961605f606262615e5b595e5f5a615f5d5a566b +53463a5f96c1b7aab7bcbe9a0d1e0b1720250304111d1f161b332d25455b +704107251309020f2e3027201c1f171e1f2122211f1d1d1a1a150c090c0f +0e1010110e0e1a1400080d0d0b090b1b2a2819232b3f4e424229245791c8 +f6fffef8f5500c0f010a070a0a0b0a070d2134394441270e080f163b4651 +3d3b1c14d2e1b981888b869a9c95969896928f8e8e8e8d8b8b8b8a89878d +8d8b8c8d8f8d8b8e8d8a8a8a8c8a898388898581817f7c828282b30e2425 +f3ac46262726364d5fb7b04c302a2c282c364b69ddd11f31de827c9c19a0 +9a1f2d9bb41d483f7dc79b3e364064ff83113e334a344140404040414340 +41322c23180c060c0f11171617191e2526313a3e392e2826262b2f312f2e +2f313033242d7c87432e2e272839394f403d274d52251d0b1f1b2c234343 +1f2a201d13192a4d5a6a8b89452e3244585f4c5d69695e4d525c6b95b1b5 +b6bab5aaa9b4b3aea6a6aeb1a69b999b9d9c9d9f9fa29da4a297877f8184 +693b1f272a18101c24353a44545a492a346084a1ccede2c1b6ad85de5746 +5c3a4e655563542839242a29292b30302a2429303a363d414f8393421b1e +262932284beee5d5e8eae4e6e3dfe2e8e7e2e1e47821635a3e41595e706b +4426323c312b2b253432433237323940423b5d885f261a423a41361ce4fc +f2ffffa298b8c3d7d4d4d2d7ccced0d0ceb9c5c5d7d5d8dbd3d2d1d2d2d2 +cfcbc4c0c3c5bdc3bfbbb6b0c0a18f7d9ecdecdac8cec9ceba395241474b +502921293431211f362f2d506a7e4b102c1c14152e56606063656c666a69 +6969676666645f5a50413735343233333431313b361b181e292b221f263a +49507695bcdcdccc866282abcff4fdffffff6f2e2c191913161616130f14 +26383d48452c140f161a384356494a2a1dd3daab6c6a62535c5854565856 +54515151545352525352514f545152505453544f5551514e5150514f4d54 +55514d4d4b484e4e4e9a150614a45000132e2d23613d713b011c170f170e +0f3338620b2412285a49230197670005847c021832315521170e1d124302 +1022191915161413131516191d41271a0e12202a45495461707f8fa0aab1 +a99b85674d3c3331323333302c2b2b3127331590901a2234402942567476 +5f2e91793d35345335423c4859333831455b84a6d1dee5f0c554627c91bf +dfdae6c9cfe2dfddd3d0f6d0c7d4dcd3cac6c7c4c3c2c0c2c4c8c9c7c9c9 +c5c1bfbfbcb3b5b6b6b6bcc6d0b4925a2b202a271721302d3d5b72714d3e +5b768db6e2ebdbb2b6ba981835410b283f3e4630002530282c2e2e31322e +272a22231a2433364d5322181d1d0e191520b9b1a4b0b7b6b5aeb1b0b0ae +b0b0b0600b373d314462557c582b17242b2a2a352229172b1a31352d3336 +3e6394632a1927191e280faef3e3ddcf5d140f00000e1617130c0c080a14 +0c0b0c120a09090e0d0b0c0e0f0e0c110c0e1109140712030b15093d73a0 +bfb1b0acad949bca859daa9ba6af8b5e685f59482b1c172b63325355270f +11232e5ca4c0cbd6dfeee8e8e2dddcdde1e5e6ddd8cbb8a9a19f9ea29fa3 +a19c9f9b7d625652452d1f1f262e130100000710282727558cb7e2edeffe +ff7c393d252d2725272928221a1e25110f0b0c121b20191f2a2e18110000 +78dee0a8c1d0c5c3b0bec4c7c6c2bfc0c2c5c3c2c1c4c4c2c0c2c4c4c2c4 +c6c5c0c5c3c0bfc1c2c2c2bbbfc0bbb7b8b7b4b8bbbfac271826b6620925 +403f35734f834d1739362c30222142466f1a35273f7366401ab0831e24a3 +981929403e63342e2b3a2d5c1d2d413a3f3d3e3d3c3c3d3e3f3f5b3a230c +010202110b0a0b0a090c1219272d31302a25232426282929292a2a2a2c21 +321a9b9a22253035172a3a57594a279077382c284524312a394e2c36303c +3f5e7cacc0d3ebbe3c30231a2f453e431c1b292829478feff0f3f0f4f9f6 +f3f3f2f1eeeceaedeff0eef3f4f2f0f2f2f0e6e6e5e1dfdfe4e7c3995822 +11150f000a1c1d2e4d64613b2946637eade1f2e1b0afb59212313d092640 +3f452f00232d25292b2d2f302c272a22231c2635385157271f2424172322 +2cc7c1b4c1c8c9c8c3c6c6c3c1c2c0bc6a133e41344765557c582a17232b +292a342228172a1a30352d33353b5b89581f0e2117202e1cbcffece9e983 +4a4f40444f55545453595b5d5e5150535953525458575657585959575f5b +5b5e5862556051565a45709dc4d6b7b1b7c4bdaea02715120f1f260e0018 +141e2820201f2a5b24454d240c0a1202062e332719111711191c1d1e1e1d +1b1c1819150b07080a090e0b0d0d0a1211050609090a0909131d25192229 +3d4e413f21185395cbf7fff7f6f5591116020d0905070d110e0d151f0c0a +0503070e0f0d1a252310130c0690e4d27d85908d9d8d92949796928f8e90 +918f8e8d8d8d8b898c8e8e8c8e908f8a8f8d8a898b8c8c8c878b8c878384 +838084878bae291a28b8640b274241377551854f15342e272c2121454975 +1f3c2c45786a441fb5872127a69c1f3149476c3b342f3e34632433463f42 +3f403f3e3e3f4042405836220f070a0b1d18171818191c222a37383b372f +2626272c303131302f2f2f332d422db1b339383e3b1726365153472e987a +35251c3a1a2a26344822271e1d0f1d30545e6f907816253538505f4c5e5c +6563585874baffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffe0b36e3724261f0f1a27202b4457543124456581ae +dfebd7a4a7b2961e3f4c163145434a35072e382e3234353a3b3731362e2f +283342455c602d272c2e202d2b3ad4d0c3d1d8dad9d4d7d4d2cfd0cdc876 +1e484a3d506c5d8460321f2b3331323c2a301f3222383d353b3d44689766 +2d1e2f242c3a25c5fffbffffb08696919cabb2b1b0afb5b7b9b7acabafb5 +afb0b1b7b6b3b4b7b8b6b2b1aaabaea7b4a8b3a6a9a88eb1d7f8ffd9cdcd +d2c1b5b84c47453e4a52361d312b303324232132663354582d13121c131f +505d5a5959645f67676666646565655f5c52433834322f322f322f2e3432 +201519262a231e1f2e444d7190b8dcdccb815984b2d6f8fefaffff793333 +181c151214191b17141a23100e09080d15170f1421291d221c1092e0c76c +6b6c5c5f4b51545756545151535755555455555351505252505254534e53 +514e4d4f5050504e52534e4a4b4a474b4e5280002d4b1500371a1011103e +2e3d1f12151c11241b2a643d361128212110131606a94e0b009967071933 +2a3b07161613131e1f201026001d1514121214161a1f251d210f172f303b +545e6a788a9babacbda4876a5040342f33353635322c27263321330e7367 +006eaca43b2e41607c674b3d371d36243339423f4154433039475b8fb1db +e0e7e9a4295e858bb4d8d3dfe4dee8e4d7c4c8ffd2ceddded8d7d7d1d3d3 +d3d1d1d1d6dcd3d7d6d1cfd2d2cfdcd8d3d5dcdedad6e2f7df7d2b19262b +1d2d25344b5d73655353627b98bcd8e3dabec6451b53879b8672647d9c73 +5724292b2c2c333a372f30232824335453484442564b462f322416a4a399 +99a3b1aeacb1aa9a99a3a49c82263c473337472b95542d32362b292f3036 +65687a463a242f30323d466444354637281a2b0c77f1e3d8ddb6959d9f9f +9097998f8f847e7d78756e726f69696659585556555553504e4642463c46 +2b3d323c445bb1d1cba9b7b8b39a88a5d88e93bd999eaa9e606a5e525033 +1c1f31593c5c7b641f1d2b314b9cc1cdd5dbece8e2dfdbdadee1e4e5dbd8 +cdbbaca6a3a1a5a0a4a6a09e9d8a5e525149352521232b1706000004122a +2220548eb0daebeefcff8540462a332a2828292a28232122261c161a1f1d +1a131b252014110f0033d3e6b7c0cbcdbaafbbc3c7c7c3c1c2c5c6c4c3c3 +c5c5c3c2c1c5c5c2c4c7c5bfc2bfbcbbbdbfc0c1bcc0c0bbb9bbbcbabcc0 +c48f093c5a2404492c2223245242513328343d2f3f313d744c4320393435 +292f321fc26a2a1eb8831f2a42374a1a2e34302c373a3d2f4721433d3c3a +3a3a3c3d3e3b2c2509020e0203100e0c0c0d1114193a362c252424242326 +252425282a2d2c2e1b32137d710473aa9a2b1928455f52443c35182d1825 +292f2e324a3d2f383e3f6885b3c4d5e59f152f301829423b4139292f2a21 +327fece5ebe6e3e9eeede9ededebeae5e6ebf1e8eeefedeff5f6f1f9f0eb +eef3f6efe7eeffe1781f0a131402120d20384b5e4e383749688ebbdfead9 +b9c03e154f83998571647b9970531e232526293037342d2e212624325352 +4a48475b524d383c3122b2b3a9aab4c4c3c3c8c1b0acb5b4a88c2e434b36 +37472a94532a31332a262e2d356267774537232e2f2f373c5838293a2f24 +1c311685ffefeafadcc6d3d5d3bbbcbbb1b8b1b1b3b0aca5a7a49c9c998c +8b8a8b8c8e8b8c8c8682857d886f80757b7b89d2e8d7acb1b3b6aeb5bdb3 +340e260d161c1d001a1317302a212930512e4e735e1c161a0800303b2d19 +0e130f12161b1f201f1c1b1619160d0a0b0c0b0f0a0d0f0a0d100e000405 +090e0f151a221a272b3b4b40411c135499c6f2fdf5f4f562171d04110a06 +060b131414161c211710111410090716201509101b184cdcd98c848b9593 +8d8f9397979391909392908f8f8e8e8c8b8b8f8f8c8e918f898c89868587 +898a8b888c8c8785878886888c90920c3f5d27074b2e2425255343523426 +2e3427382e3b744f4925403a3c2e333623c66d2c20ba862331493f512032 +3634333e4143344c25463f3e3c3c3d3f41403929240b09170d0e1d1b1a1b +1d21272b4a413528252325272f303030302f2d2c35274227968a1b87b8a2 +2c16213c574f4b443814240c181c28272b41311d241d0d273a5b61738c5b +002745394a5d485a7d78695949569dfffffffffffdfffffffffffffffdf9 +fcfff9fffffffffffffffffffffffffffffffffff88f3721292811190d17 +29374b4031344c6c8fb9d8e3d4b6c446235d91a48b76667ea07b612c2f2f +303239403f38392c333040616056514d61585541463a30bfc2b8bac4d5d4 +d3d8cfbebac3c1b498394d543f3f4f329c5b33393c322f36363d6b6f804d +402b3637384147644637483c32283d208effefeaffefe4f9ffffeef0ebdf +e4dbdce1e3e4dddddad1d1cec1c0c0c1c4c5c4c2bdb6b2b8b3c4aec4bbc0 +bec5fffffdcbcbc7c5b5b2bfc5573d593c444a461c332a293b2d242a385c +3d5d7e68231e2416124a605d5653615e60626466686665655e5e56483c37 +3531342d30302d2e30280e14232b2b24212b414d7490b6d9dccf805888b9 +d3f4fdfbffff82393b1b21151414171d1d1b1c20251b14161a171109101a +1b17222b2450d9d07c6c6866584d50535959555355585856565656565653 +4f51514e5053514b4e4b4847494b4c4f4c52524d4b4d4e4c4e525687002c +271c1c0e1b261e2b1130182419233016221127681e1b2b32092c1a191603 +b0391800af5f102a202f3c22182f173f312b3a0f0f250e1413111215181d +2326141d1b24373c5b62697381909ea8a3b7926d514038302c323132312e +2b24232f351f2e90930f8492ad4b434e5678683e23753739282b3b3d3c3f +4d542d44496199bbe1e3e6e38a1f68958fb1d5d2e1deccd8e6e7d2cdfedc +dae4e0dbe0ded7e0d9d5d7dddfdfdfdde1dfd7d7d9d8d4d8dfe4e2dad7dc +e1dae0e4ca883e1d22233128353c42646a6c535673849ac1e3e4c1c9781d +4d421b30363a2c3627352125231b191f26231b241f2d24294c4a2f2f373d +191c1d302213979b908995b1b2afb4a68b8595998e600f3153413d4f3842 +384144332f2e20261b332438162a292a3040533e422d423530392032115b +f2e5d4e1ddd8d5e1d4e2e5ede7eee4e3e3dbdfdbe0dedce1dfe4e4e1e2e2 +e2dedbddd5d3dbd5d9c1d5d0d6cfd0e9c7c5c2b7b2ae8e7b99dcb698d8a8 +a2a6a95b636d52523b272d262f39413d38192924303a92c7d9dfe0ebe4da +dbdde1e3e4e6e4dbdbd1c0b3abaaa6aaa1a6aaa39fa3986a5b58503f2d23 +1e29170e0000040e2a1f1f548ba8d2edf4fbff88414a2c3630362f282524 +2220221c1b2026241b1f281f291f1b1c221200bfdac2b7bdd0b2bebac3c8 +c8c5c2c4c7c5c3c2c2c4c4c2c1c1c3c5c0c4c6c6bdc3bebdbabebec2c1bb +bfbfbab9bdbfbfc0c4c799093e392e2e202d38303d23422a362e404f313b +2539772c2838411c403334321fcc553519cb7623392a3949332d48335b4f +48572e2e46313c3b3938383a3c3d361a190b05090013100d0d0e13171a1f +4e412c202226262326242223282b2d2c2c2e1e33979d168991a53c2f353b +5a4f321d6f32321f212e2e2d31414b263f3f447390b9c4d2da840c414c28 +30453a3f31181f2f384683e5e3ebe5dde2eaeae3eee7e3e4e7e9eaeaeaee +ede9ebeff0eae6eaf0ede9e7ecf2e7e8e6c77f310d0f09140c1d2528494f +4e363d5f7995c1e5e2bbc27017463e182d35382a3525311d1d1b1817222a +261b2319251c2348482f323c421e212234291da7aea79ea8c0c1c2c9bda2 +9caaaa9b69153353413d523841373f43322c2b1d2318302135132526272f +3d4d3638223629253320391e6cfff4e4f9fcfefefff8fefbfff9fffeffff +fffffffffffffffffffffffffffffffffffffffffffff2fffffff5efffd4 +c9c0b2afb4a1a2aebf6b204c1a12142600111f132a28253125292e353532 +14221410003541311b0f18150e13191f21211c1a161919110c0d0f10120a +0f130c090f130307080d12111316201d2b2b364541471f155695bbe7fcfb +f5f7691c2306140c100906090d0e131716151a201b10121d1a2619161a28 +200ecad7a487809688998e93989895929295918f8e8e8d8d8b8a8b908f8d +8e93908a8d8b8787888b8c8e878b8b8685898b8b8c90939d0d423d323224 +313c344127462e3a2f3b492c3724397a2f2e40482347383b3623d059391d +cf7c29403342513a324c365e514c5b31334b353e3d39393a3b3e3e351a1a +0e0d140c211e1c1b1d21262a2d5c4a322322262728302e2f303233323137 +3e3049b1b8309fa3b241303134524b34216f2e2c161825272628353c1429 +1b0c2a416267798d4a003c5f454e5c46577061595f61699efaf6fdf9eeec +f3f8f1fbf2eeedf1f2f0f0f0f6f6f3f6fafcf7f3fcfffffff7f9fcf7fdff +e29a4b2823141809131517383e432e395e7792bfe2e3bfca7d25564c2336 +3a3d2f3b303f2b282621222b332f252b2330272f56553b3b42482225283d +3329b6bdb5afb9d3d4d3dacdb2acbbbaac7a25405f4b455940493f4a4b3a +3534262c2139283c1a2c2d30374657414330443733412c432674fff1e1f9 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffff4e4d6c6c0c0a8a1b1d18a4d7d4c43455017 +283524352e28342d353c43423c1b291e1b0c4a666459535f5d575b616568 +6765635e5f594c403d3936382d32362f2c31301417252e2f2720253f4f79 +92b4d3dad1815a89b8caecffffffff883d401d24181f18141517171a1d1a +191e242016192116211b1d28362d16ccd29a7361684c554d555a5a575457 +5a57555555555553524f51514e5054524b4f4c49484a4c4e4f4b4f514a4b +4d514f5254595b0f0679957f811b23161e3245170c271610301820283c32 +23391b118ab44f1811b3331807be5513284a2a3e190f2d174e74ada92015 +0e19190e0a18191d2c1a1e1718263b4b596571717c8b8f9caca1f2a52034 +3331262e2a2a292532220c1f422b191f162900132a2b1a3435516f76643b +292e33292829343c4545404149596d97c9ddefebfb492e5d7d8097c9e3db +edd4d6d8cebbceffe6dee3e5e5e2dfdddddcdadbdcdde0e1e8e5dedcdada +dadae0e3e0d9d7dbddd9d6f1dcece69733282c1f27383436526d776a5959 +748eafd1e6cbcba8473c5e29243727303f16241a2922161211100a080e21 +342530473435423a06171a21272d08abbd9d758cb3c2bcabb38d77979b94 +6015327938383238354948271b231e2525282a252223242024263f3c2a31 +382f35272028301f2eede8d8d4dcdbd9dddcdedfe0e0dedddcdbdadadada +dcdcdcdcdcdcdcdcdadadadad9d9d9d9d9d7d7d7d6d7dadadbd6cabbb2ad +aca9a2a7bddb84cab7a9b29c786268615a482c4c36333623333941401f25 +2c58cce0e9e9e1cfd5d9dfdfdde1e9eceae5dbcec0b7afa9a9a9a8a8aaac +afa580665a574933241e2e21090005090b1f1a265387b4ddebf6f8ff9f3e +5148323a3535312d2a25221f2c2b24252c241d24271f1f15123333009ac2 +bf9ec3c8c5c1c4c5c7c8c7c4c0bdc8c6c3c0c1c1c2c3bfbfc1c1c2c1c0be +bfbebfbebfbfc2c1c2bfbbbababbbab9bbbcbd7024198ca890922c32252d +41522419362c29462c2f36473c2d462923a1cd6c362fd150301ed0611d2e +503147261e4031719cd1cb3f342f3c4138323f393a452a27150807090707 +0708020c171924323bb680011b23272029272727243529152641281a231d +3000192a270f231c334e584d2d1e262f2726252a31373531323d474f71a1 +b5cccee83c1d414b332c4248323b1e1f2a324287f3e3e7e6e7e7e9e9eaea +e9e7e5e6e7eaebf2efebe9e8e8e8e7eaece6dee1eaeeebe4fae0e8e08d25 +1615050b1c1718324d5a4f3f456380a5cbe1c6c5a2403557252033252f3f +1627191d16141b22251b110d162312203d3135423d0e1f1e23252c0ebddd +c194a1b7c2c4bac8a692b2b1a467152e74363b3b41384948271b211d2422 +2525201d1e1d1b21243f3c282f32272a1c1a28372e46fff7e5e5efefeff3 +eff0efeeeeeeedeeeef0efefefefefefefefefefefefefefeff0f0f0f0f0 +f0f0f0eef0eeeceae3d3c4bbb9babbbab5aeaa284e240b1b191510171925 +2317423331341f30333a3614120d0f3b1e10101a131717131416191c1f20 +221e1813131211131312100f100f150e09050e130d0c1229271e20344045 +4a2321558dc0eaf6fdf6f98b2431250d11090908090a0b0e1021221d2025 +1d161d211e251b102b2b00a9d0ba84908e92929494969796938e8b94928f +8c8a8a8b8c8b8d8e8f8f8f8d8c8c8c8c8c8c8d8f8f908d88888789878788 +8a8a75291f92ae979933392c34485a2c213b2a26442b32394d45364f322d +a9d4743e37db583a26da6d273a5c3b502e2544326b94cdca413734404337 +313c3636412726160b0d1414151717121a22252e3d46be87061f2428242f +2e303432463b2638533b2f3c394d1b3342381d2b1f314950452418232e28 +2724282b2c261e1d251f091c4a607b88ae12093e56453e5150456b59585f +626da7fff6f8f7f6f4f3f3f3f3f2f0eff0f1f3f4fbf9f4f2f3f3f3efebf5 +fffffaf1e4dde7fffdfffca63f2c1d060a18110e253e483e303a5c7da6cf +e7cdd1b0504567342f413037471e2e2127201f242a2a2216121a29182a46 +3c414e4611211d222a341acbecd1a8b6d2dcd9cddbbaa7c7c9bd812f4588 +4444404641535431252c252c292c2c26232424212a2f4946333a3e34382a +26323f334afffcebecf6fafcfffefefefbfbfbfafafcfefffffffefefefe +fefefefefffffffffffffffffffffffffffffffffdf4e2d3cac7c7c7c4c0 +c3c851805b454e43322628272f2b1e4a3c3c412d3b3d423e18161322665b +55555b5055565856595a5f646968605549453f3a3938373637383b39251c +222c2d221920475b718eb6ced5ca7e6386afd0f0faffffffa641493b1e1f +1818161515141717272724262c241d24231c211915363a0cb0d1b6757360 +514a54595b5c5b5853505a585552515152534f4e4f5050504e4d4d4d4d4d +4d4e505255524f4d4e4e4e4c4f4f515d030b1381b0a2311b202f356b5f3e +0c2e201d1b292e39855045230058b0030e08b51d1d1bc0382833252f574c +2e1914276b7b1d00151e0e051314170c0d2a311c1d2031465566747b818c +9394999c88ff9c1933302a2224232d439791780c56cc5534a72b6e6b7b80 +8c6c2f234b5d5b6850383b314c0a2f303a434441434d5d6f9dd1e1f6f4d8 +3428425a6a8dbfdee1eed6d5d0bfa7b9ffe7dee1e2e4e3dfdce0dfdddcdd +dee0e2e2e1e2e4e5e4e2e0e3e6e3dddcdfe1ded6c8f2f9e0c31e29272724 +2a29424e4f6b6f62555f799dbad5d3ceb6734944242150576d76190c242a +2518110a0804030c142b2a313c33459f80250d0b22312f1d7b87757da1b5 +aeb4b0c2b2989e90688f3f295b2f28172f464b3f172f1a25271f24282523 +23201a242a3f42476461402823293231181fd3d3c7c9d5d8dce2e1e3e2e2 +e2e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0 +e1e1dfded8c9b9aca9a9aaa7abb9d35fa5aaaab6a07c6068666451324939 +37353e3e211a28231d224bc5e8f4eeded0cfd6dedfdddde3e6e8e0d8cfc1 +b5aca9a7a7a6a6a9abafa7856b5e584d38281f2b1e0b020b0c091b182452 +87b6deebf6feffab30493e39413b3a36332d2b26225d5c54504c39272826 +2c414a4d5c4b0d60ccc19fc1bcc4cec4c5c7c8c8c6c2bfc5c4c1bfc0c0c1 +c0bfbfc0c2c2c2c1c0bdbdbdbebebfbfbfbfbdbbbbbcbcbab9bbbcbd7117 +1e2692c1b03f292d3c3f756948194235312d383b438e5a52310f6ecb202c +29d539352dce402e37293660563b2b2e4c96a34114343d312d3b3c3b2b26 +3d3a1a0e07080a09080a0507121d2530393ddf900d2827241d232230479d +9880145ccd5336ab32777482848a65210e2e3e3d4e3a2a312f4d0b2f2a31 +373430313d48527aaabbd0d4c2231b2f352c304144363b201e242a3673de +dee4e4e5e6e7e8e9eae9e7e6e7e8eaececebeceeefeeece9ecede8e1e4ed +f2efe5d2f7f9dcbf161e1b1811120d232d2f4e5449404d6a8dadcecdc8b0 +6d423d1d1d4c556d761c11231f1a181b212119110c0a1816223231459d80 +2a130d212b2c2592b3aaaec6c5b4babbd4cbb4bca879943c20532c2a223a +4a4d411a2f1a24261c2223201d1d1a1521283f454a645f3a201b21303a2a +39ede4d4d6e2e5e9efeef0efefefeeeeeeedeeeeeeeeeeeeeeeeeeeeeeee +eeeeeeeeeeeeeeeeeeeeeeeeedeeeeecebe5d6c7bebcbbbcb9b4b1af1131 +12061c1b170d151a262214393337373e3b1b101f1a13131133201412201d +16141111121516191f1d1a17120f0f11121211100e0e0d120d08040c110d +0c1127251b1d313f484f2622548cbfe9f4fdfdf89d192d1d12170b0a0a0a +0c0d0f1150534d4b473422231f2c4e57494d390471e1ca9193818d9a9294 +96979795908d91908d8b89898a8c8b8d8e9090908f8e8b8b8b8c8c8d8d8d +8d8a88888989878688898a781e252d9ac9b948323645497f735221433632 +313d414c97645b3c1979d4283432e0444139db4d3c433540695f432f2d44 +8c9b3d163742352f3b3b37262037351b130b101415161815161f292e373e +42e594112c2a2823282a3953adab952b74e2694fc64f94919f9fa0772e15 +303c35412d212f325210312a2a2b241c19241d041c4f68879793050b2b3c +393b4c4c486353565c616497f7f1f4f3f4f3f2f1eff4f3f1f0f1f2f4f6f6 +f5f6f8f9f8f6f0e9f3fffffbf0e0dce0defffffdda2e2e1d130d100a1e24 +223c3f352f43658eb4d6d7d4be7b524f2f2e5b6277802315292722222427 +261e120c0b1a18273a3c51ab8c2e130a1f2d3330a0c0b8bdd9deced2cfe8 +dfcad4c495b25b3d6a3d36263c53594d2339222c2c2327292621211e1b2a +33494e536e6a462d282e3b412e3aeeecdddfebeef2f8f7f9f8f8f8f7f7f7 +f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f7f7f5f4 +eedfd2cacac9cac7c5c6cb39624d42524635212527332c1e433d41434a46 +2519241d141620605f5b585c55505152525254575c65615a5349413c3a38 +38373638393c3a261d202a2b20181e4259728eb6ccd5c77e6184acd0eff9 +ffffffb635443224251b1a191817171919575854514d3a2929262c47504a +5449157be6c78479554c5153595b5c5c5a555257565351505051504f4e4f +515151504f4c4c4c4d4d4e4e5052514f4f50504e4d4f50513f0f00a4bc5f +112027381a1ed3e69d5c17322310214238a7c2671e1038c71f1f27d10517 +2cd729303158aa885139212ba72e0e1d2612090c161c0c15282620141d23 +2a3949586a7b82939b9693a3babdff8a10332f2827273420418d708f181f +a614109b7ab82d8b8f7799343945306b675020263fb322272d373f414043 +4e5f7babd6e2f7faa5212b33415a87b5d3dfefe0dcd5c6acbaffe4dddde0 +e2e2dfdce0dfdedededfe1e2e2e3e4e5e2dcd2cce5e7e5e1e2e5e6e3dfd6 +ece7ec6424321e291f2319363d46566e6c554f60829db9d0c8bfa2643a28 +0e706f4b5927161529261b120a0503020a071b272c2c2f4c7872371c1927 +210a0b3361556c8ca6adc1bbb7ae8e9091597d461a4830252765546e3d13 +261724262628272120211e1a1b212a2f4573703a1b1d2b322d181dc8e9db +dbe5e4e5e8e7e4e3e3e3e2e2e2e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1 +e1e1e1e1e1e1e1e1e0e1e1dfdfd9cbbcaca9a9aaa9adb9d36897a7adb6a1 +805e6665634f2d382f2f25617d612c12222a1b3babe0eee8dcd2d1d9e1e2 +dddbdddee3dad4cec0afa7a9a4a3a2a2a5a6aaa4886f615a4e3c2b21271d +0b020a0c081b19245085b5dfecf7fef6cd4355433a383b3a37342e2b2624 +3d3f3836352a1f23272a3a44434b42181dc4c6a7c0bbc1ccc4c4c5c8cac8 +c5c2c2c1bfbdbfbfc0bfbfbfc0c2c3c4c4c4bcbdbdbebfbebebebcbcbcbd +bfbebcbabcbcbd4d1d06b2ca6d1e2d34422426dbeea5692c4a3621304f42 +b1cc742c234fe23c3d48ef212f3ee53336375eb292604a3445cc57323f43 +2f282d3b443237423b2f160c080a0f100f0f1005101b1e29486e86f37f05 +2a262222263323459375961e25a71512a183c3389496799629282e164f4c +3a0f1b3bb221252930353430333f4a5e89b1bed3dc90121d1f1e202d3d41 +3a402a25282f3770dcdbe0e3e3e4e6e8e9eae9e8e8e8e9ebececedeeefec +e6dcd5ecedebe7e9f0f3f3eee2f2ebef672a37232a1c1a071f20283a5455 +423d517391afc8c0b79c5e33210a6c6d4b592a1914201d1b1b1b1a15100e +03111d232a324e746e382019261b0919589d9fb6ced5ccd2c6c9c4a8aca6 +68824311402c28316f58714016261723252326251f1b1c1a15181f2a3248 +736e3413152330342735e0fae8e8f2f1f2f5f4f1f0f0f0efefefeeeeeeee +eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedeeeeecece6d8cac0 +bcbbbcbbb6b4b11c2512091c1a17061119251f0f28292f25617a5b220717 +201108242217111e1f17171413151415161c171618130b0c12121110100f +0e0d120e0702090f0d0d112323191c303f474f2722528abce8f3fcfdeebf +2c3923150f0c0b0b0b0d0d0f103036312f30251a1e202a474f3f3c300f2e +d9cf9994828b9a92939497999793908e8d8b898888898b8b8d8e90919292 +928a8b8b8c8d8c8c8c8a89898a8c8b898789898a56260fbbd37627363d4c +2e31e6f9b0712f4c3a2837574bbad67d352a57e9424551f92c3b4af23f44 +436abd9c67513a46c54f2e3e47352d34414633363f362a13120f0f131616 +181a13202a2a334f7089f8850b2f2b26282b3b2c50a188a9343bbc2a2bbb +a0e156b3b292ab393234194c412d07193cb72728282829231919221b0e28 +566a899e6300101e252c39494b4b675d5d5e646493f7eef1f1f2f1f1f1ef +f4f3f2f2f2f3f5f6f6f7f8f9f6f0e6def4f9fffffbf6eae8ebeeffffff88 +383a1d2215130319181d2c434333314a7093b7d3cbc4aa6c4331197b7a55 +63311e1925222322231f19110d02101e262f3b5a837c3d2117241f112461 +a7a8c1dce7e1e6daddd9bfc2c185a0602c553b313371617a491f301f2b2b +2a2b2a221f201b19212a343b517d79402022303b3c2c37e2fff1f1fbfafb +fefdfaf9f9f9f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7 +f7f7f7f7f6f7f7f5f5efe1d5cbcac9cac9c7c8cc43564c455245361c2426 +322b19323339316d85652b0d1b2112174f605d575c595456575756555657 +615b5653493d383b3736353535353837271e20292a21171e3e57718db5cc +d4c77f6182aaceeff9ffffffd8485238261d1c1b1a1918171919373b3836 +362b2124272a40494043402038dece8e7b574b535358595c5e5c58555453 +514f4f4f504f4f4e4f51525353534b4c4c4d4e4d4d4f4f5050515352504e +5050513e3c2ade5c65592b2f1c386ef8e37d10253321154a845695f7be06 +186acb290e12c1081d1fc922271f67c1681f151316928485660b191d1609 +18070a1b1d222d27333a454f5b6e7f879fa6a09f9d9385ff7408312d272d +2d2a1828629673163bb9502743b798007d3d6da3223e263b5c5b6d422625 +c23e162b333c3f3f4551638cb9d9def2f7751d2e333b4f78a8cad8eee6e3 +dad0bac8ffe5dcdcdee2e2dfdde0e0dfdfdfe0e2e2e4e4e4e3dfd6cbc3e5 +e5e5e4e5e7e8e7e7e4dfe5a20035422f2811211b2e2e474163716556556b +8ba0bcb9bcba8957373254412c4321212b25241d140d0606080d06132225 +2630424b583d27232c2e2512155b3c3c405b79afb4b1b79c99a362895921 +553c262b5f51974127132320282b29211817191a1726292930436a774925 +232b2b21161ebef2e4e1e7e3e0e1dee4e4e4e3e3e3e2e2e1e1e1e1e1e1e1 +e1e2e2e2e2e2e2e2e2e1e1e1e1e1e1e1e1e0e1e1e0dfdbcebfaeaaa9aaaa +aebad28996acb0b4a1896069656250312c272049534e5a4111191f172f90 +d6e8e3d9d3d4dae4e4ddd9d7d7ddd6d0cec0aca4a7a19f9e9fa0a3a59f8c +76655b513f2f22231c0a020a0b071a1b244f83b4deebf6f7f2df62504e34 +343a3936322c2a2622201f1611181d222f2a1f1c1b171e271a0098caaeb4 +c6c1c3c4c3c4c7cbcbc8c4c1c0bfbec0c0c1c0bebec0c2c3c5c6c6bdbebf +c0c0c0bfbebcbcbec1c3c2bfbcbcbdbe484634e8666f633539264076ffeb +851d3a4c36285b93639fffcb142b81e4442b30df233531d72c2f276fcb76 +30282832b5a8a78426343a372c3e2a28342d2d2708080f14141312100718 +232a40556066f96a002a27222b2c29182a6699781b40bb522b4ac0a5008a +4874a31d3316284642552f181cbd3c14272f34343136424f7299b6bbd2dd +620f22211a192438413b42322b2b37427cedd9dfe2e4e4e6e9eaeaeae9e9 +e9eaececeeeeeeede9e0d5cdececedecedf0f2f3f5f0e9efae01485a4a3f +1f24141d152a25475a4f44445c7d95b5b2b4b28351302e503f2a4324242a +21201e1b1715131313081221252a344447523e28222828282946aa9da2a1 +adb4cac1c2ceb5b2b7708d56194e38263367569a442a13241f2729271f16 +1214161223272933466d75461d1b2529282536d6fff1eef4f0edeeebf1f1 +f1f0f0f0efefeeeeeeeeeeeeeeeeefefefefefefefefeeeeeeeeeeeeeeee +edeeeeedece8dbcdc2bdbbbcbcb7b5b13e26170c17151a0412182420131c +21204951485235060e161305162419101b1d181817171615131319131318 +130909121112110f0e0e0e12100902060c0e0e101d1f191c303e464e2922 +5188bbe7f2fbf6ead14e362e120b0b0a0a090b0c0c0e11140c0a13181d2a +231f27241111171308abd3a18c918d90929293969a9a96928d8c8b8a8989 +8a8c8a8c8e90919394948b8c8d8e8e8e8d8c8a898b8e908f8c89898a8b52 +503ef270796d3f43304b81fff690263f503b2e639a6ba8ffd41d3287e94b +3138e92e413de4383c327ad57f372e2d33b1a4a6862d3d423e32412c2831 +2a292710121618161617171427333848595f64ff7206312b2630312f2036 +72aa8b2f54d0694666dfc520aa6690bb3141212e483b4b29171fc3411726 +2627201719211c1d365a6789a237001621232631444b4e686261626d70a0 +ffedf0f0f2f1f1f2f0f4f4f3f3f3f4f6f6f8f8f8f7f3eadfd9fcfcfaf7f8 +f7f3f1f5fcffffe0244e4d3b2f121b0e1610221a3b4c41383a557a99bdba +bfbf915f403d5f4c354d2b292f22212221201c19151305101f272d3d5056 +60432a20272c2f314dafa3a7a8b9c2dbd2d4e0cbc8d08baa713160462e36 +695ca14d311b29252d2e2c2219161817162c32333c4f7680512a28313430 +2a38d8fffaf7fdf9f6f7f4fafafaf9f9f9f8f8f7f7f7f7f7f7f7f7f8f8f8 +f8f8f8f8f8f7f7f7f7f7f7f7f7f6f7f7f6f5f1e4d8cdcbc9cacac8c9cc65 +5651484e423b1b2528312c1d262b2a555c545d3f0e141912113d5e5d5559 +5855575a5a575553535b5553534838333835343433333437352a20212729 +23191c39526e8db5cbd1c6816181a8cdeef8ffffffea694f4322191b1a19 +1716161717181a1411191e24312a21231f1318242313b1d2987369514e55 +57585b5f5f5b5753525150505051524e4d4f51525455554c4d4e4f4f4f4e +4f4f5052555756535050515237112695aba1491f131a0c0d8e4206141f11 +0e051621063b2b31001e0421100358b207292abe341a1717372c2e222d29 +1029292729361d3725352d3a4b351f1f39494c4e525f718199a39fa3bcc1 +ab9bff6b10342e252c29371834463d101d116936100d6a1c024f92733530 +982343335e5e372839cc8a29252f393c3f48576997bedce1f2e94d1c2534 +3f466599c1d2e7e7dfd2cdb7c5ffe6dddddee2e1dfdde0dfdfdfe0e1e1e2 +e0e0e2e4e5e3dfdbe3e3e3e5e6e6e7e7e2dee1d005181f464a3a1517202f +2a3835506a7468545b7a90a8b3bebfad8343423d39334339412f22211d18 +0f0b0c0e0b080e1a1d2b38304248402c2d2c31371b003e1a180f1e3ca7b6 +b2bbabafc08cad671b5f4d3631313f8139372a2d1f2922211f1a1a1c1913 +15191d2d2d3a57433d3332291c1518a1efdedce4e2e1e3e1e4e4e4e3e3e3 +e2e2e1e1e1e1e1e1e1e1e2e2e2e2e2e2e2e2e1e1e1e1e1e1e1e1e0e1e1e0 +e0ddd1c3b0aaa9ababafb8ce9a87a9b1b5a598686c656156402f2e213e3b +41726b2d1d181c2c7bcee3e3ded9d4dbe3e4ddd7d4d3d9d6d3cfc0aca4a6 +a09d9c9c9d9fa19d907d695d53453425221a0b04090906191c244e81b2dd +ebf6fcf7d97f3753343e3a3b37332f2a27242e2d1f14181e24322b23201e +1b1b1f1a005adac2a3c6c1bec4c2c2c6cbcccac5c2c1c1c0c2c2c3c1bebe +bfc1c3c5c7c7c1c1c2c2c2c1c1c0bdbec1c4c6c5c2bebcbdbe3f192e9db3 +a951271b221617984c1022362a2519272f1345353e0731193a2c2075cf22 +3f3ece40242123453d4139464530484743414e395546564c565d3f230f0b +0c141615141310151b1c33698d9391fd64092f29232a28361834493f1320 +146b3b1616752b125fa17e3c32951d3922464522192fc68527242c333434 +3947567ea1bec3d7d33e121c2621141933433f3f332721303c75ebdae0e3 +e4e6e8e9eaeae9e9e9eaebebeceaeaeceeefede9e4eae9eceeeeedeef0ed +ebefe11a3547747c6736292124121b18334f5c55424969849fa9b7b7a57d +3d3e3937314339413021201d191312131614111723263341343e423f2c29 +262b3c38369d929d939896cdc3c3d0c2c5d298af6313584a35363642843c +3a2b2e202a21201d18181a171112171d30313d5540352b2c2723242db6fd +ebe9f1efeef0eef1f1f1f0f0f0efefeeeeeeeeeeeeeeeeefefefefefefef +efeeeeeeeeeeeeeeeeedeeeeededeaded1c4bdbbbbbbb8b5b05419150d13 +13220613182326221f29203c3839685f20100f1c0b0f2b1f141d1d161716 +1716151312161317191309091110121111100f0f12120800030a0e0e0f17 +1c171b303c454d2a224f84b9e6f2f9fbefcb6b1f3614180e0c0b0a0b0c0d +0f1d20150d1319212f26232623150e1116066de2b88096908c949191959a +9b98938e8d8d8c8b8b8c8d8a8c8d8f919395958f8f9090908f8f8e8b8b8e +9193928f8b898a8b4a2439a8beb45c32262d2021a2561a2b3c2f2b203138 +1c4f3f470e371e3e30247dd72b4a49db4c302d2f4e45483f4a482f4a4947 +4b5a445f4d5b4f575d3e2212161b1d191411131420292a3f71918f8fff6c +11362f282f2d3c203c524c22312780513033954c3481c29c5849a82b4428 +423e1d1630ca892a2225251f1818231e243b5e6d909a150013262b202640 +4e5263635d57656a9affeeeff1f2f2f2f2f0f4f3f3f3f4f5f5f6f4f4f6f8 +f9f7f3f3fffff1edf1f5f8f9f3fbffff51573f586352251b191e0e17122b +445047363d6284a4b1bfc2b2894b4c47443c4d4149341f1e1f1e1c1c1b19 +130c121e25364a404d50452e28262f42403ea1939c959d9edad4d5e3d4da +eab0c87c2a68553b39394789433f3033252e2625201b1b1d18141b222739 +3a46604b423838322b2930b9fff4f2faf8f7f9f7fafafaf9f9f9f8f8f7f7 +f7f7f7f7f7f7f8f8f8f8f8f8f8f8f7f7f7f7f7f7f7f7f6f7f7f6f6f3e7dc +cfcbc9cacac9c8ca79484f494c42451f272830322c293028474346736929 +17121a1431605f585c5a5457595a57545251585554524838333733313232 +323234332a22212628251b1c354f6d8bb3c9d0c582617fa5cbedf8ffffff +e587374a23271d1c1a181716181825271d14191f28362c25241f15151e24 +1174e4af6a70564d5656565a5f605d5854535352525253534e4f50525456 +58585252535353525251505255585a595652505152857b7b73685c9499a5 +92a9a2c49ca6a3a6a4aaa8a6acb3d3a2bca09aaaa27d8f9581000d25a790 +99a58c7b8f93798174757c96718b898b8279766e898f6138264b59585559 +6779859caa9e929c9fa6c3dc56112c2a2428261342251a26293934290f40 +544a2e3c2a132b331b4c2b1f364f5b563a0a334212222a353b3f4c5f719c +bee1ebf5ce2f1b192e3c3d5585b2cde0e9deccc8aeb6ffe7dddcdddfe0de +dcdedfdfdfe0e0e0e0e0e0e0e2e6e8e9e8e3e0e3e6e8e5e4e5e4e3ec1112 +1233354157471c1d252c3336405671755d54648399b1c2c2bfa155303344 +3230363f171f1d1b161211101107090b14182f44292b2a3527363228250c +002b0e0d021236aabbb3afa7aaa7859662115b503d46362b432d2e4b231e +2320262c3135342b202329304a392848423c2f302b2423147ff4e3e2e9e7 +e6e8e6e4e3e3e3e2e2e2e1e1e1e1e1e1e1e1e1e3e3e3e3e3e3e3e3e1e1e1 +e1e1e1e1e1e0e1e1e0e1dfd4c6b2aba8aaabaeb5c9ad7ba9b7b9aaa36d67 +5d5c574c333b2b2f2e2e372710273d1d2965bfd7e2e1d9dce1e8e9e3dcd8 +d8d9dcdbd1c1b2a9a5a09e9c9c9d9da09d95826e5f564a3928211a0c0508 +0703181e244c7fb1deecf5f9fbd7b13b60383f3d3e3a36322e2a26222821 +191d21222c2c2a24242724221d0428e2dba3b8bfc3c4c1c0c4caccc9c5c4 +c4c3c3c4c4c3c1bfbebec0c1c4c6c7c4c4c2c2c1c2c2c3bfc0c2c5c7c6c3 +c0bdbdbe8d83837b70669ea3af9fb6b0d2aab4b6bfbfc2bfb8bdbfddacc9 +afadbfba96abb09c072339b79ea7b39a8ca2aa929d929398af88a19fa59e +97958a9e9a65340d11111513121415121a2826315b7fa5ccdd530e292722 +27251241261a262938362b15475d573e4f3c263b3e22512c1c2c373f3e28 +00283e10212a3235363e4e5d85a6c7d1deba221312222211112b42463e38 +2619272e61dbdae0e4e5e5e6e8e9e8e9e9e9eaeaeaeaeaeaeaecf0f2f3f1 +eae7ebefeeeaeaecf0f3ff2a333e6c7587967439251c1416142139565d45 +3d50738fa6b8b8b79b4f2d2f423030363f181f1e1913100f131611151a23 +243a4d2d2926342732291f292d339796a8a1a8a7dacdc6c4bcbcb68d985f +0a554d3c473a2f4630314c241f241f252c2f3332291e2027304d3d2c4840 +36272a292b302792fff0eff6f4f3f5f3f1f0f0f0efefefeeeeeeeeeeeeee +eeeef0f0f0f0f0f0f0f0eeeeeeeeeeeeeeeeedeeeeedeeece1d4c6bebaba +bbb7b4ad6b111a15161425020b101c272c22342a2d2b262b1a0317341f10 +062b1d171f181819191a1b1a1a1a151a1d1a130c0d0f1011111110101012 +130a0000070e0f0d141a161c2f3a424a2c234d82b8e5f1f8f8f6ca9e2547 +1c1d110f0e0d0e0e0e11111b1712181c1f292a2a28261e18161b1039ead4 +878d919293908f93999b979390908f8f8d8d8c8d8b8c8c8e8f9294959292 +90908f9090918c8d8f929493908d8a8a8b988e8e867b70a8adb9a8bfb9db +b3bdbdc6c8ccc7c2c7cbe7b6d2b6b3c4be9aaeb7a5112e44c4a9b2bea594 +a9b097a094959cb490aeacb2aaa19a8ea19c6635111f1f1e151010131522 +32303a6180a0c9e25e17322e272c2a18472b2232354645402d617a775f70 +60475c5c3e67402d35373b3a26002c3f111f22231d17172220273c667c98 +8500000a242d1e1e374e5763665a505d5e88f6eceff1f2f1f2f1f1f2f3f3 +f3f4f4f4f4f4f4f4f6fafcfdffffffeeeaeef0f8fcfeffff6066595b5065 +7b5d2718151012121c334d51392f457390acc0c1c2a55b383d4f3b383e47 +1c1d191c1a1b1c1c1c1211151e243c563937343a29312a2432363b9994a4 +9da7ade6dbd5d5cdd0cba4af741c635842493b324b353651292328242a2e +3236352a2129323a564635524b4234363433362b96fff9f8fffdfcfefcfa +f9f9f9f8f8f8f7f7f7f7f7f7f7f7f7f9f9f9f9f9f9f9f9f7f7f7f7f7f7f7 +f7f6f7f7f6f7f5eadfd1ccc8c9cac8c6c68f3f52504f444b1e20202a3337 +2a3c3238363137240c21391e16245b5a595e57585a5d5e5c595858575959 +52463a353431313030323234332d25202226271d1c304e6d8cb2c7cdc384 +5f7ba1c8edf7ffffffe4ba3c5c2b2b201f1d1b1a191a1a19221f191e2226 +302f2c27231f1c20281c41edcc726a5d57585554585e605c585656555554 +5453534f4f4f51525557585555535352535354535456595b5a5754515152 +80ae6c8ea3859b8c636565495c413b31453e184e7078401a6b606e645f66 +68624e655a6f5d564e5451605d6556596a64714e705b645b705d7172787c +4b14234755605d5b6273848d92a99e7e5a2f264fa540112127262928301b +1d48312522161c217b8d6a998b928085959c7989013a575757452b273927 +1f26313841506679a9c2e5edefa81c1e1625343c4d709dc6d9eae2cfcdb1 +b2ffe8dddbdbdedddbd9dddddedfdfdfdfdfe3e1dfdee0e2e2e2e4e0e2e6 +e8e4e1e3e3ee4f0011251c342d555f293528343b3a38405b766f5c596d8b +a3b7c0bfad7e4728384a4a1811231f1c18141312110e0607061212294a2d +403d4016242e3436130e38160400002590b1bab7b9a4693f837816525132 +38363040472a3b181c2020252b3238382f231e2224453722423931212427 +2d31115ff3e2dee4e0dddddae3e2e2e2e1e1e1e0e1e1e1e1e1e1e1e1e3e3 +e3e3e3e3e3e3e1e1e1e1e1e1e1e1e0e1e1e0e2e0d6c9b3aca8a9aaaab0c3 +c476a9b6b6acb27762595a564f2f453b3d3137393e3d2e291b2753afcce0 +e7dbdee3e9eae5dfdbdcdae6e5d3c4bab0a6a4a09d9d9d9d9e9e9a887362 +594e3d28201b0f06080501151f264a7db1ddecf5f4fbd8d64b653f3c3d3f +3b37332f2d271723231f2428282f363022192123201d0e07c6e1beaac1c4 +c5c1bfc2c9cbc8c3c5c5c4c4c5c3c2bfbfbebebec0c2c4c6c6c4c2bfbfc0 +c2c4c0c0c1c3c5c4c1bfbdbebf8ab8799bb193a99d7478785d70554f4a62 +5c336684894c26786d7d75727e827b677e738671685f656272717c6f7587 +818d67866e776e87778c8d908b501014241512100b0c151b1b1a363b3330 +243565ac3e0f20262528272f1a1c47302320151f27829979a99fa69498a5 +aa838f0636413b3d30191b33251f2932363943556593accdd7dc98111711 +1a1f1613223d4d3f3d2c1d2a2d5ad3d9e0e3e5e4e5e5e6e7e7e8e9e9e9e9 +e9edebe9e8eaececebeae7e9efeee9e7e9efff6a0c3e60658382a0964b3e +1e1b1914151e3c58513f3f5a7d94abb5b5a6784425364849171022201b14 +0f0b0c0f12111719252034512f3f3b41161e2429393453aaa8aa9ea8a9c9 +c4d0cdccb574468475124c4e3038373141482b3c191d2121262c3138382f +221b2024483b2645392e1b1e25313c2372ffefebf1edeaeae7f0efefefee +eeeeedeeeeeeeeeeeeeeeef0f0f0f0f0f0f0f0eeeeeeeeeeeeeeeeedeeee +edefede3d7c7bfbab9bab6b1ab87131e1713122b06050c1a26301e3e383a +2b2d2d312d1d1e1d1000271a19201215161718191b1d1e131f231a12100f +0c101010101010111314090000050e0f0c1118161c2d3840482e224b80b7 +e4f1f8f3f6cbc6374e271c13100f0e0d0e0f10031418151d23252c332f22 +181918161b1814cedca787969594908e91989a9691919190908e8c8b8b8b +8c8c8c8e9092949492908d8d8e90928d8d8e9092918e8c8a8b8c94c282a4 +ba9cb2a57c7f7f64775c56516a663e708f9358328176847c7680837f6e85 +7a8e7a72696f6c7c7a8474798b85916e917c857d97849796948e5311172a +2320180e0b13181b1c3b403832223063b44b1a282c2b2d2c341f214d382e +2d23323f9cb396cac0c9b7b9c6c79ea71a4444383c2f191b35261d20221d +15172120303f6b82986500050d202823212f485e61685d515f5c80f0ecef +f0f1f0f0eeeef1f1f2f3f3f3f3f3f7f5f3f2f4f6f6fcffffefeaecedf5ff +ffff993e676e4a565b7f79332d14161713131c374e463132567c97afbbbd +ae824f304153511f18271b161515181a1c1b1314131f20385b3c4d484618 +1e252f423d5aaba7a69ca7add2d2dddbdbc788599888215857353a393545 +4c2f401d2125252a30363a3a3127242b2e51442f4e4339272a303a422776 +fff8f4faf6f3f3f0f9f8f8f8f7f7f7f6f7f7f7f7f7f7f7f7f9f9f9f9f9f9 +f9f9f7f7f7f7f7f7f7f7f6f7f7f6f8f6ece2d2cdc8c8c9c6c3c3a93f5551 +4c4454241a1c28323826463f433538393b3727241c181b55565c6356595b +5e5f5e5d5d5e54606053463f393232313030323233322f26202126261c1b +2e4d6e8cb1c5cbbe835f799fc7eaf5ffffffe5e15062352921201e1c1a19 +1b1a0c1b201d24292c333a342216171c1f26241dd1d89567695d5a555356 +5d5f5b5657575656555352514f4f4f4f5153555757555350505153555454 +5557595855535152531e0a0b040022421c0500151101062310092015b3e6 +ce8284ebf5e8e5eee2e6d4e1e6e6d9ead4e6dbd7d7cdd4c2d1c8bfbed1cc +b8c7cbb6cab8b4c4cd87342f415a63615f6a7f8e919796765e513026508e +3d19202929292826233322232e30363672a0ad6a7b92a359a758a66eb835 +163c535d3f2e2428301c232f3741526c7fb8c8e4e9e48911241c202c3e4c +608abccbe4e3d2d5bab7ffe8dcd9d8dbdad9d9dcdddededfdfdedee1dfde +dee0e2e2e2e5e1e3e7e8e3e0e2f08b00131f191f27343a442b644942393c +373149737f6c585a808ea4bbb6b0a753535d5b6c3b171f201b15100f0e0b +08080505140e204a335058601b131b25270e11290d0200001c93aeb5a8b6 +a85a3a7f870c41623e2c2a457275350f1a2029171816171b1f1b1320221c +4244406759361f1e222c320947f4e3e1e8e5e2e4e1e2e2e1e1e1e0e0e0e1 +e1e1e1e1e1e1e1e3e3e3e3e3e3e3e3e1e1e1e1e1e1e1e1e1e1e1e0e2e1d7 +cab4aca9a9a9a9adbcca6a9ca8acadc1896963635d533050493e31464036 +2c19291e2a4ca8c7e4f0e3d8dbe1e2dedad4d6daececd7c6c0b6a7a6a3a1 +9f9f9ea09f9e8d75645a523f2a221c10060804001420264a7cb0ddecf4f9 +f8ccd24457463f3a3d3935312d2a27212c281e1f201e233f3b2b1e27291d +1710009dd7daa8c4c0c3c0bec1c8cbc7c2c5c5c5c4c4c2c1bebfbebdbebf +c1c3c4c7c4c0bdbdbfc2c4c0bfbfc1c2c2bfbdbdbebf2f1b1e170c365933 +1e14312d1e23402f2a4031cefce09090f7fff6f6fff7feedfafffdedfee6 +f7ede9ebe4eddbede5dcd7e5dfcad8dccbe1d0cbd5d48225161616110b04 +071520232d382c2c3c353f6a973d19202828282725223221202b2d343778 +a8b97a8ca6ba70bb6bb77cc43d15293741271a161f2f1e2932373c465769 +a2b2cdd4d27c0a1e18161b1e1a1e38513c3e2f2031325dd6d9dfe3e4e3e2 +e3e3e6e7e8e8e9e9e8e8ebe9e8e8eaececebece8eaf0eee8e6e9fea0083e +596173808f8a7d4c69392412120f0d27505d4838436e7e96afada9a25050 +5b596b3a161e211a110b090a0d0f16181a271c294c32525c651c0d0f1625 +2a549aa1afaaaea7d2c6cbbec7b5623f8086083e5f3c2a2a46737636101b +212a181917181c201a121d201c464b476b593319181f2f3b1859fff0eef5 +f2eff1eeefefeeeeeeedededeeeeeeeeeeeeeeeef0f0f0f0f0f0f0f0eeee +eeeeeeeeeeeeeeeeeeedefeee4d8c8bfb9b9b9b5b0aa930e170d090f3411 +0712202b321c46463b2b3c34261c081e1e15002b1e2127160b0c0e0f0f11 +16181324281a0f1211080f0f100f0f11101213080000030e0f0b0f18161c +2d383f472f224b80b6e4f1f7f8f3c2c432412f23110e0d0c0b0c0c0d0c1b +1b14181b1b223e3a27181d1f18171802a4d6c88a9d92948f8d90979a9590 +919191908d8b8a8a8b8c8b8c8d8f919295928e8b8b8d90928d8c8c8e8f8f +8c8a8a8b8c3723251e133d5f392319353122274434334b3cd9ffec9d9cff +fffffdfffafff1fffffff6fff0fff7f3f4ecf4e0f1e9e2def0edd8e8ecdc +efdcd3dcda86281a1d211d14090a171f222d382b2b3b313b69a049252830 +2e2d2c2a273726273436414b8ebfd194aac7da90dc8bd597de54252d3640 +251915202d1b1f211b16141e1d3d456d83944f0010171e252b262a44615a +665f54646283f3eceeeff0eeedececf0f1f2f2f3f3f2f2f5f3f2f2f4f6f6 +fcfffff4efecebf4ffffcd39697160525266655c31532a1a0d130f0d254a +533a2b3d6c7e96b3b2b0a9595b666473421e231c16121217191a19191615 +231c2e58405f67691e0d111d30355d9ea1ada8aeaadbd0d8cbd7c6755292 +96164966412d2c4a777a3a141f252e1c1d1b1c20241f18262b264f534f74 +633e25242a38421d5dfff9f7fefbf8faf7f8f8f7f7f7f6f6f6f7f7f7f7f7 +f7f7f7f9f9f9f9f9f9f9f9f7f7f7f7f7f7f7f7f7f7f7f6f8f7ede3d3cdc8 +c8c8c5c1c0b3374c4642425f34202531373b254e4d443547403127122620 +1c1a5557636b5b50525556555556585465665445433c3032313130323333 +323025202025271d1a2d4b6c8cb1c2c7bd825d779dc4eaf5feffffdbde4a +563f31211e1c1a181718181523241c1f212228443f28181c201e21250caa +d2ba6e74605c5452555c5f5a5557575756545251504f4f4e4f5052545558 +55514e4e50535754535355565653515152531e2122201b1a1a1c10141919 +181514141a1e1284d2bc749fc2b2bd99b5a1a1a6989f9680979b8a8b8d94 +697587805d62777a5b4f727268457b627f7c4632425d5a6066707c8b9799 +907a573f33282d478c2f181d242236292828292a2c2d2d2a310c33bb6277 +82af4fac6ca561b26524374c574d34222835262b27324f5a6d91b9d8e6e8 +de4dc7470f1a1d3c45447fb3c8e1e7d5c4b0c0ffeddcd0d0dddcd8dee4db +dbdfe6e0d6e6dfdfe0e0e0e0e0e0e0e4e8e1ebe8daf4c1040221192b171e +204f284f9f5c53504433383e4b758863546889a1acb2b1ad816d634e562f +20191a1c1d0c0c110712090d11161e282d2930455d171c23341a0f002512 +0000001589adb0adb1ad7d317499114040352a3d6061742d21231a281919 +141b252a312d1d24243a304a687e370a242b292c1b3cefe7e0e1e7e0e4e0 +e4e4e4e3e3e2e2e2dde8d9dce8ded6c2e1e1e1e0e0dfdfdfe0e0e0e1e1e2 +e2e2e0e3e3e1e0dfd9d0b7afa9a8a9acacb4d28893afafb0aba26e675f61 +54393028233441636e1f271225254585c5d9d9e2e8e5e5e4e3e0d9d6d7de +e0dbcfc2b6ada9a5a29f9f9fa2a2a89b836b5d56452d241e0f060b070012 +13254a79b0dee9f6fcf5d0d57d3e513437403e3733322e26252c3f303549 +2d1c192322203c394e300f0a52dddeaec8bdc1c6c6c5c6c9c8c3c4c3c1c0 +c1c2c3c2c2c1c1bfbebec0c3c4c6c7c2bbb9bec3c8c5c1bdbbbabbbcbdba +b73a3d3e3c3837393b32363c3f3e3b3c3c3f4332a0ead084adcebfcbaac8 +b6b6beafb6aa94abaf9c9d9fa8808ea09b7a7d8d8c6d5f81837b5b917489 +7b37171d2a140f09080d1826333b392f2c3438475f95311a202423352928 +28272827282828321139c6708795c464c17fb671c0712526303b341f131e +342b322e35484a5576a2c3d1d7cf44c1440b130d221b0f3d5743413a2520 +2762d6dce2dcdee7e4e1e8eee5e5e9f0eae0f0e9e9eaeaeaeaeae9e8ecee +e8f4f0e2ffd11d28535d7c727d789a5c6a9f462e24170a121b264f5e3d39 +557792a0a8a8a87e6c624d532c1d17191b1c0c0e1711201b212424282b2a +27364e671b16142314252c90a2a6aaa9a0ccc9c8c3c1b984347698113f3d +33283b5f62752e22241b291c1c171e282d322d1b22273e37516c8135071e +282c35284bfcf4edeef4edf1edf1f1f1f0f0efefefeaf5e6e9f5ebe3cfee +eeeeededecececedededeeeeefefefedf0f0eeedece6dec9c1b6b5b9b9b2 +a7a43314180d0f19240712182b2e2225231e2d37575e0f17072010011226 +1c0d1016130f0e101318180e131a1b17120c0b0d0e0e0e0d0f1012191407 +000310120d0f17151a2e383e452222497ab3e3ecf9fbf0c6c86d2d3f1c0e +11120d0a0e0e0a0e182f252e442a1b1922191430304c33171259dfd498a4 +919295959495989691908f8d8c8a8b8c8e8e8f8f8d8c8c8e919294959089 +878c9195928e8a888788898a87843e4142403c3b3c3e34383e403f3c3c3e +474c3dabf6db91b8dac8d4b1cebbb9c2b5bcb19bb4b8a6a7a9b18895a7a2 +8084989a7b6f94958c699e7e92813c1c24311c161111141d283138332725 +2e3544619e3d26272c283a2b2a2a2a2d2d2f2f3344254fdc8aa1b3e383e0 +9fd48bda89372c2f3a301c101d32272a1c181e1615253c567489961dab3b +0c1b182d271947665e656756535587f2eff0e8e9f1efeaf1f8efeff3faf4 +eafaf3f3f4f4f4f4f4f8fdfffef0f3f2edffff56597460694f5150733649 +832f1e1b1208111920465232324f738fa0a9adae85746a555c35261c1719 +21141b251d291f2222242a3235354257691c16172b20323796a3a7acaca5 +d4d4d4d0d0c9964585a61d4744382b3e64677a332729202e21211c232d32 +3735262d30473f59758a40122a33353c2e50fffdf6f7fdf6faf6fafafaf9 +f9f8f8f8f3feeff2fef4ecd8f7f7f7f6f6f5f5f5f6f6f6f7f7f8f8f8f6f9 +f9f7f6f5efe9d5cfc6c5c8c9c2bbc15a474f4643464924292a39392c2d29 +25354061691a220f241718395c5c52575d5a575657585958525558564d43 +39343231302f3132353535322c25262a211c2e4b6b8ab0c3c7ba735b7598 +c2e9f1ffffffe1e487404d291e21211b181a1b161821392d354a31212128 +1c163031513c241f61dec88080645c5a5a595a5d5b565655535251525354 +545454525151535657595a554e4c51565c5955514f4e4f50514e4b171819 +181511131410141514100f11160d1613191580b4d6c3c6ac52d5cad0d0c2 +d4669ed4d7719dcbd87497cad96599cbc26078d3cb792bc5bad39f41435b +4c545d6c7a8b95948b755c3d28231d29459033202428222f212828292a2c +2c2d2b16344f945c7f798962a07b9f7ca4835b243a4d4f3f2a23252b2a29 +385560769cbcd1e5e3c052f2c6081925373c446d9bbad6e5d8cfbdccffe1 +dbdcdadad1d3e1e2dedfdbdbdcdadfdfdfdededfdfe0e1efdfdff2d7e3f0 +e43e00151f1d2d19292e4a32807a5d817e513d3334416a877a545d7490a5 +aeb1af9e723b44403a1d27292019040108000b0b0e141a202b322e2f3c4f +2b242c3025140023140100001684aaadb0b8b4843469880c32473a354443 +89ba50202a251e1723283538302c212b2f21262b486d7f5c2428332f2211 +27e3eae2e3e7e2e5e2e4e4e4e3e3e2e2e2dee0dfdfe8d2cac7e1e1e1e0e0 +dfdfdfe0e0e0e1e1e2e2e2e0e3e3e1e0e0dad1baaeabb0b0aaacbbd9a08d +adafb0a79f796664645a462e27234078336d4c112624263e76b8d4d7dee5 +e5e8e8e8e0d6d3deded8d2c8bcb1aaaba7a3a2a0a0a2a2a39a83695b5445 +30221f12090804011814254c7bb3dfe8f5f9f6d3d1aa3c4e2f353f3d3734 +332f28271c281d13130d1e17242b27311c230910002feedca9a1b2babfc1 +c0c3c7c7c3c5c3c1bfc1c1c1c0bfbfc0bfbebfc1c3c5c4c2c0bebebfc1c9 +c7c3c0bebebfc0bbb9b63a3b3c3b3837393c383e41403c3b3f42363c3537 +3093c4e4cfd2ba60e6dde3e5d9eb7ab2e8eb83afdfec8baee3f280b1ded4 +7088e2da8a3ed7c8d795281c280f0d0b0b0f16202a333637312e34364258 +9935232729232f2128282728272728281537569c678e899a75b48cb08cb2 +8f5e15223336271919243034323b4c4d597ea4bcd2d2b449efc306121821 +1b193a4d43413c2d2b346ee0d0e1eaebe4d9dbeaece8e9e5e5e6e4e9e9e9 +e8e8e9e9eaebf8e6e6f8e0ecfcf35116405a67847988808d5c927240574f +251410121e435b5236465f7e97a4a8aa9c713a433d371a2427221e0e131e +1b2827262625252a2c2c37495a2f1e1d1c1b2629889ea3a7a69cc8cbc9c6 +c5bd8a376c8a0e3246383042428abb51212b251e1a262b383b332f24292d +242d345174825a21223032291c34f0f7eff0f4eff2eff1f1f1f0f0efefef +ebedececf5dfd7d4eeeeeeededecececedededeeeeefefefedf0f0eeeded +e7dfccc0b8bcbdb7b5b4b254171d100f141d0c0c192a322c21201e396e27 +603f011b1b0f0311241e0e0c1616151512131515171211120f0a07070c0d +0d0e0e0e101014110700000b100e0e16161b2b353f4920224b7cb6e4ebf5 +f7f1cac79c2f40190f10110d0b0f0f0c0d0818120c110a1f1a231f172314 +240e160135f2da9a80878b8e908f92969591918f8d8b8a8a8a8c8b8d8e8d +8c8d8f919392908e8c8c8d8f9694908d8b8b8c8d8886833c3d3e3d3a383a +3c383d403f3b3a3d433c453f413ba1d1f1dbdec569eee3e9eadff181b9f1 +f48db9e8f593b6eaf987bbece28098f5ed9c4de3d1e09d2e212f16110f12 +171f292e32312e25222c303f5ca2412c2e2e2731232a2a2a2b2d2d2f3125 +4869b17da5a3b693cfa8caa5cca76f1c223232231217202c2b1f1c211315 +283a51768a8028debe0b1a222d2422415a595f655a5d6293fde3eff5f5ee +e4e6f3f6f2f3efeff0eef3f3f3f2f2f3f3f4f7fff8f9ffe5f1ffff8b556d +6c586253605864346a4d203e3d1a0e0e101a3e52482e3e5a7a94a3abaea1 +77424b4640232b282124171f2b26302b2826272932383a44525e301e2025 +26343590a1a6abada5d1d4d4d3d5ce9a467b961a3a4c3d3647488fc05626 +302d26212d323f443c382d34382d353b587c8b652c2e3b3b31223af9fff8 +f9fdf8fbf8fafafaf9f9f8f8f8f4f6f5f5fee8e0ddf7f7f7f6f6f5f5f5f6 +f6f6f7f7f8f8f8f6f9f9f7f6f6f0ead8cec8cccdc7c4c6cd784752484341 +432b252e393d352827254177316a490c2320171733565b52535c5c5c5c5a +5856555a57524e483e36323431323232333534302f2b212126201e2a4b6d +8badbec6bf72597598c5eaf0fdffffe5e2b5434f251e20201b191b1c1818 +11221a131611242129231822122614220f41f5ce85615d55535554575b5a +565755535151515152515253525152545658575553515152545d5b575452 +5253544f4d4a12131312100e0f101013120f0b0b1016220d0d1743e9f1e9 +d5eecb67efd5d4c9d1ee5bbfe7ec67bde1e46ea9dceb5cb1c9e75a82cab8 +8676bfc9a75c465958635861708293988c7c553e24161617294685271e25 +29242b20282829292a2a2a2b4c909b9e8caa999a78908a9a9f9cada62233 +45504835251d2f292c415c6581abd2ddeee48f49ebff1f121e2d38435787 +b3cfdfd7cfbbc6ffeed8ced0d8dde2ead7d9dddad3d9e0d7e4e3e2e1e2e3 +e5e6dee8daece7d2f27000081f2230341f33452d4e937391c3b7965f322d +3c516e826358627e9cacb2b3bb8e483c3a48393f36211300000000000504 +0e181f2c3c3a2f2e3834313d322e2100221d080100147ba7abb2bab68930 +768b22305f49414c3955753b222821231b2b2a3538353c33202d23283734 +3b33432a282e2c251e1acbeee5e4e6e3e5e4e4e4e4e3e3e2e2e2e8d9caa9 +cee3e7dce1e1e0e0e0e0dfdfe0e0e1e1e1e1e2e2e0e3e3e1e0e0dbd3c0b1 +aeb3b1a5a7bacfb57ca4afb1aba5806167615b5029262437443566b51f31 +21293865aed9e2e3dddde1e1e1e0dbdddad5d6dad8cabeb5aea8a6a5a2a2 +a3a3a29d886d5b544839201f13080602031c11224c7cb4e0eaf5f8f4d2c6 +d7464b3d373e3c373534302a3023281f130f0f221b242d2c2a141c131f00 +02d1e8d1a1bbb4bcbebec1c6c9c6c5c4c1bfbfbfbfbdbcbdbebfbfbfc1c3 +c5c1bebdbfc1c0bfc4c2bfbcbbbbbcbdbab7b43c3d3d3c3a3a3b3e3e4143 +403c3c41464e3632385ffffff7e1fad775ffe8e7dde8ff6fd3fbff7bd1f5 +f882bdf2ff72c7dbf96a92dac89788d0d2a64b2326191c0c0d10171f282f +363034303034353d5489271e252a252b2028282727282827284c929ea393 +b5a5a988a098a9aba7b8a8151d2d3731221a1a36333544514f6189bac8dd +d58442e7fe1c0c12191d23304847433f302d3268dae0e0dfe2e4e5eaf2e1 +e3e7e4dde3eae1eeedecebecedeff0e7f0e0f2f1deff83102a50627f8d7f +8d8d646e9b636f978a6d3e15111f2e435742404b6b8da1a9afb98d473b37 +45333a3426241a1d27232d2c2220211f293438373b433a2c2f1d222f2f80 +9ea1a4a197c4cdc9c8c7bd8c337992293560483c473654753b222824261e +2e2e393c3940351e2b262f403d42374327222b2c292727d8fbf2f1f3f0f2 +f1f1f1f1f0f0efefeff5e6d7b6dbf0f4e9eeeeededededececededeeeeee +eeefefedf0f0eeedede8e1d0c1babfbeb5b5b9af720e1a1513151e0e0318 +222f351a1d1d303a295aa91125140f050e262d1f15141615120f121c2317 +10131e221c14120f1010101011121313140c01000c14140c17181a27313e +4d1e1f497cb6e3ebf5f6efc9bbcd3a3f291312100d0c0e0e0c140e17120c +0d0c2320231e181c0f201a23030ad8ebc98390868b8d8d9095979491908d +8b88888889888a8b8c8c8c8e90928e8b8a8c8e8d8c918f8c898888898a87 +84813b3c3c3b39393a3c3c3f403d39393e46513c3a416affffffefffe380 +ffefeee4eeff76daffff84dafeff8dc8fdff7dd2e9ff7aa2ead8a796dadb +ac51292d21220e0d141f2c3437382a2a22232a2d3c579433282d2f292d22 +28282a2a2d2d2e31589fafb6a6c9bdc0a1b9b2c0c1bdccb71e1f2b332b1b +16152f2a22252313162f4e5d85905628dcff23161c2224283551575d635c +5e5e8cf4f1ebe9ecf0f0f5fdebedf1eee7edf4ebf8f7f6f5f6f7f9faf0fb +f6fffdeaffab4e6771645f5f5969653a3f6a32417069572f0d0d1b2a3d50 +39344364889faab0be934f43404e3d4139292b2025312c32312422262732 +41464444473a292f242c3c3a88a4a7ababa1cdd6d4d6d7cf9d42889c333b +654d424d3d5c7d432a302d2f2737374247444b4129362f3747444a404d32 +2e3636322e2de1fffbfafcf9fbfafafafaf9f9f8f8f8feefe0bfe4f9fdf2 +f7f7f6f6f6f6f5f5f6f6f7f7f7f7f8f8f6f9f9f7f6f6f1ecddd0cacfcec4 +c2c9c7933b4d4b464346301e2e333c3e21222437433366b51e2f1d1a182e +5669635d5a5b5c5a585a5f645b55555b5b51433d38363636353839372f30 +302521242125284a6c88a8bbc6c36d567498c5eaf0fdffffe6d9e64e4d35 +21211f1b1a1b1c182017211b131213282629231a1b0c21202f1417dee2b6 +6b6d52505252555a5c59575653514f4f4f4f4f5152535353555759555251 +53555453585653504f4f50514e4b48121211100f100f10100f0e0e0f1113 +141019251c24533cb3e3e09f60a195a6a0cce16ac8cbe16ccbdcd56bc4d1 +d066c1c5e94caadcc6b2bad7a25833536456706a6e7985908d7d673b2914 +0e13182c4b811e1d232825292427272929292a2a291a3c392d3031293241 +434a4c5f486c712f353c464639281d30252c475e698eb9c3d1e1e25f43a2 +d049171724363f3e73aac5d9d3ceb6c1ffe6d0ced5dcddd5c8d9d8d9e0d9 +dbe6d9dcdbdad9dadcdee0d6f4e2dae9ebaf000a1e202a36262849402a84 +7b81bfe1e2e6913f2e3a3e5377755e576e8fa2acb0aa9c7632373b44311f +0a0a000000000008010d1c1f2d403f2b232d252f3a352d2c061e250e0605 +1472a4a6afb7b18929657f31216547393b502a2e333e3d2e341c30272f33 +303821353818214134434b4857503b2b2f2c06a8f0e7e4e4e4e3e4e4e4e4 +e3e3e2e2e2e1e6f5cfdfe0e3e3e0e0e0e0e0e0e0e0e1e1e1e1e1e1e1e1e0 +e3e3e1e1e2ddd5c4b7b1afaca7a4aec5cd739eb1b5afab89616e605a592d +302c28402e393d1714262b3156a2dae7dfe2e0e0dde4ebf2fde4d9d0d1ca +bcaba4a7a6a2a19f9e9e9fa09f8e715a4f483c221e0f070805051d13234a +79b1deeaf7fdf0c9b8e5623d593c403d3a37332f2a2224241b191e14091a +1d2a2d2a1b1c1d1d1c048aedeaa6adb5bdc1c0c2c8cbcac6c4c1bebebdbd +bbbcbcbebfbebdbec0c1c0bebebfc0c0c0c0bebcbab9b9bababab7b44040 +3f3e3d3e404141403f3f404244443d454c3f426b4ec3f1ecab6cafa6b6b2 +e0f97edcdff580dff0e77dd6e3e278d3d7fb5cbaecd6c4cae4a64e1a2827 +0b1e1616161d262d31362c33323437363f55841e1d242926292427272727 +27272728183c3b313338313d4c4e5554675173732422272f2f261d1a3731 +384a52526992a7bccfd3533c9dce46110b152126214048443f322e2f63d5 +d8dae0e9eae5dbcee1e2e3eae3e5f0e3e6e5e4e3e4e6e8e9ddfbe9e2f4f9 +c117274658718880849d7e5498786998b6b9c5792d1d25202b5055423f5a +7e97a4aca89b753134353c2b1e172b33373f3d43402720231e273a3f3330 +382b2a2c20223a367ba2a1a39f92bcd0c8c6c4b88c2c6b873a2a6a483436 +4d292e333e3d30361e342b3336363e2533361b284a3f4c4f48554a382b33 +3511b5fdf4f1f1f1f0f1f1f1f1f0f0efefefeef3ffdcecedf0f0edededed +ededededeeeeeeeeeeeeeeeeedf0f0eeeeefeae3d4c7bab8b9b7b6b1ad92 +0e1a1a18192313001a1d2c3a1a25252339242f330d081614080c293b2d1a +23231f1816223846271c161b1b1108040f10101011121212141912050109 +14180e16141726333f4c20204879b3e1ebf6f9ebc0afdd5935471814110e +0d0d0b0a060d130e121c130a1e1c16171a1622261f1f0b95f7e78b84878c +908f9197999892908d8a8786868788898b8c8b8a8b8d8e8d8b8b8c8d8d8d +8d8b8987868687878784813e3e3d3c3b3c3d3e3e3d3c3c3d3f4144404853 +454a755ad0fefab978bcb0c3bce7fd85e3e6fc89e8f9f189e2efee84dfe5 +ff6ccafce5d2d7edaf56202f2e122416141b2632393b39272a26272d2e3d +578d2825292d282b2627272a2a2c2e2e302346473d4248444f606269677a +6285802c242429271f17153027242b220f18333c5379922b2999d34f1b15 +1c26292545555a615b5c5a87efe9e4eaf2f5f2e7daececedf4edeffaedf0 +efeeedeef0f2f2e3fffbf7ffffe547637969635a4a5d79552665412d5d7f +8ba25f1f15201e2b4b4a36334f7791a2ababa07b393d3f4735241d30373c +434045412a24292631464b40393c2b272b252a454082a8a8aaa99ec5d9d4 +d4d5ca9d3b79924331704d3b3d5631383d48493c422a40373f45444c3140 +4124305145535852605643353c3c17befffdfafafaf9fafafafaf9f9f8f8 +f8f7fcffe5f5f6f9f9f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f6f9f9f7f7 +f8f3eee1d6cbc9c9c6c2c0c3b0384b4f4b474b361b322f3942202b2c2941 +2d3a3e1812201e182754736e5f6665625d5e6879866b6057585446373038 +363737373939352f343629212121262a496886a8bdc7c26f577095c0e6f0 +feffffddccf56e44532623201d1b1a191712171d171921190f27221f1a1a +12202b2c301b9befd8766455515554565c5e5d585653504e4d4d4d4f5052 +535251525455545252535454545452504e4d4d4e4e4e4b4812110e0d0d0e +0f1014100f141c1f1a15130d0609221e00d3d5e3a7a0f1e5ebd6d4d55dcc +c6ed58c9d7e253d9d3d86bd4dae241c7d9cad5d8ca57405552616f697b7e +878b88785f44271a0e0b13192f4e8f262728292724262727272828282929 +302225222619222419181b161e0d2122322f323d433c2b1f2e232e4b5c6f +9cc4e2f3f1e02f221a18401e21222e392f5399bad3d6d2bdcaffdfd0d5d3 +d0dfede4e6e4d8e1ddd5e4dedddddcdddddfe1e3ecede4dfdde52500141f +29352618375523679c6781b8ddf0f9bc6c362a354d69786153607a919fa7 +9ea596584f3e371d23183138252021351505112320293b372b344b1b1e1d +322b280212280f09081763a0a0abb3b190304a754118664b353633354743 +2f3120117098929797846e2e53562233481f1a2a292f24191f34360f7eef +e7e3e1e4e1e3e4e4e4e3e3e2e2e2e1dce7e4f4dfd9e2e0e0e0e0e0e0e0e0 +e1e1e1e1e1e1e1e1e1e3e3e1e1e3dfd9c6beb4a9a9aea9a6c6e47f9bb0b1 +adaa906a74625b5b343d4e342b263b2c3d2e292d284390cedfd5d8d6d5d5 +dbe3eaf4e5dacdc5c1bdb9b6a19e9d9c999897979e9f8f74594d4538271d +0a030b0b0618202d4f79b1deebf8ffecbab7da8c2a6541433e3b38332e29 +242522222427291f1515232f292415160725103bf1ebb8b0b7bfc2c0c0c5 +c9c9c5c3c0bdbdbbbbb9bebebfbdbbbabbbcbbbfc1c0bcbbbfc3c1c0bebc +bbbbbbbcbbb8b443423f3e3e3f4041423e3d424a4d4843413b2f2f413914 +e3e3efb3acfef5fbe8e8ed72e1daff6bdce9f363e9e0e577e1ecf653d9eb +dce7e9d45831361d1a190a1b1f242c31302d2e2b33333539374057902526 +272827242627272727272728282d1f2422261b262a1f1e21192111232028 +201e262d28211c352f3a4c4e547298c3dbdcd0251a14123a1617161e271d +2b4241423a37366ce2d2dde9e7dee7f1e8eeeee2ebe7dfeee8e7e7e6e7e7 +e9ebecf1f2eae7ebf73a15374f657e796f8fa15683a45c6391b5cee3b367 +3221212f465844394a698497a39ca495574c382f1a272f64868e94949a5f +35292a1f263b3b333c541f190f1e2037346fa5a3a4a196b1d0c6c5c3b896 +33527f4e236d4e3230303347432f302213749b959d9d8a74315154253a53 +2a2331292d1e161d373d1a8bfcf4f0eef1eef0f1f1f1f0f0efefefeee9f4 +f1ffece6efededededededededeeeeeeeeeeeeeeeeeef0f0eeeef0ece5d4 +cbbbb2b6c0bdb0b5b2201d1d17171f18021b1a283a1f32482f261f332435 +2419180a092840311d2828231b1822364632271d191a1a1d1f0e10111111 +11100f141a16080007111613150f1329363e452b284d79b0dfeaf7fce7b4 +b1d48424551f17120f0e0a0807060e11151d2528221c140e14191f1b2009 +261748ffed9e87898e918f8f949797918f8c89868484858a8b8c8a888788 +89888c8e8d89888c908e8d8b8988888889888581403f3c3b3b3c3d3e403c +3b40484b4641413b333246401ff0f0fdc1bafffffff4eff177e6e1ff72e3 +f3fd70f6f0f587f1f8ff61e7f9eaf3f3dd5d363b232222101c1d27323a3b +36312a2d2b2b2e2f3a56952d2c2c2d2926262727292c2d2d303034262c2c +322832382f2e3128301d302b30231d20221f18152e25262c1d0f1e375977 +8b95020d161c46231f1a1f271d2c4b525f61636190fce3e6f2f0e9f4fdf4 +f9f8ecf5f1e9f8f2f1f1f0f1f1f3f5f5f5f6f6faffff6f4d6f7365604538 +657b2d536b1c1b466d8eb18c51261c2231444d342c3d617c94a09da99b5d +55423a23303568888a918f965e372d30272f434640495b20160e20263e3b +74a9a7a9a99fbbdad3d4d3caa6425f89562975553b3a3b3e534f3b3e2f20 +80aaa4abad9a84405e5f2e4259302a3933382a212840452094fffdf9f7fa +f7f9fafafaf9f9f8f8f8f7f2fdfafff5eff8f6f6f6f6f6f6f6f6f7f7f7f7 +f7f7f7f7f7f9f9f7f7f9f5f1e1dbcdc3c6cec8bcc8cd484c514945483c23 +3730374326364c352d273e2f422f2321161f4d726e5d6665615c5c657585 +74695d55524f4c4a38363838373938332e35372c201f1e242f486382abc1 +c7ba7b607595bee4f0fffffdd0cdee9932622d26211e1c18171512181b1e +242a2e27241a1719191b192218382750fbe08f6b5853565454595c5c5755 +524f4d4b4b4b515253514f4e4f504f535554504f5357555452504f4f4f50 +4f4c4814110d0b0c0f0f0f1613131a24261f15101624231b1f1ae2cff087 +55b998a8a7d8e84ae2d5f040d5d3f440d7dbf755dfd2d849d3c8c3e3dc53 +29445e575e6f79858d92908062422518110a0a13192f4f8d1f2624272722 +2b26272727282727283823312f302c3a2a2a2d2e2c2b2b2b282d2c313d48 +4333262a24344d5c77accdd1e7e9c22738290a151d25191e33313d88add0 +d9d3b8c6ffefd5d0cacee5dba9d7edd6d6d7cadbdddcdcdddedfe0e1e2e8 +e1d9f0f15b00101d212b30283241312d9f737093c4ebeee1daa7501d2c4a +5270665959688197a4a8ab97977553251c100429391e1114280e00041f1d +27362f37557b2b1a0c3031170001250d060a1b559c9eaab4b6a44240805e +145c4d31353557766c332f2b2093cfc7c8c5b08b2a797814203a375fa279 +3f1c203035261358ede7e3e0e5dee2e4e4e4e3e3e2e2e2ddeed9d7dfe5e9 +dedfdfe0e0e0e0e1e1e2e2e1e1e1e1e0e0e1e3e3e1e2e4e1dbc8c0b5abab +aea9aab8e28a91a9abaca893706e5e575236393d4f3f3b323b14211e2521 +367ebfdad9cdcbced1d6d7d3d4bdc8cac4bebab1a6a09e9d9b999796969c +9f94785d50473a291d09030c0d05132b36547bb0dce9f7feeea2c3ceb126 +5545443d3c39332d2930292437372e4f6d1d161e292c43384250421306e2 +f5d8b5b4bdc0bcbbbfc4c5c3c2bfbcbbbabab8c0bfbebbb8b7b9bbb9bec3 +c1bbb9bdc2bebdbcbab9b8b7b7bab7b445423e3c3d3d3d3d423f3f464e50 +49413e46504b3c3a2ef2ddfc9361c5a5b5b9ecff5ff7e9ff53e8e4ff4ee3 +e7ff5cebe4ec5be5dad5f5ea5c27313a1c1112111b25323b3a3329242c34 +3335363440588c1c24242727222b2627262627272727331e2c2c2f2b3a2a +2c2f2e2c2b2b2a2526201f29322f29263430404e4c597e9db0cfd4b11c2f +22040f151b0e1228261b393d46423b3468e1e2e2e4dedceddfaddff7e0e0 +e1d4e5e7e6e6e7e8e9eaebebede6e1fcff6f112f47556b7b7887947856b1 +735e739cc7d5d7dcb0591e22343450473d41567490a0a6ab96966f4d1b19 +18256d9da1a3a1a4693020281c263b363d5b7f2c12001e28292a60a5a3a4 +a39aa5d0c5c5c3bda9484a8d6d2165512f323155766c322e2d2296d2cdcd +cab592307776172745446aa9793d191d2e382d1c62faf4f0edf2ebeff1f1 +f1f0f0efefefeafbe6e4ecf2f6ebececededededeeeeefefeeeeeeeeeded +eef0f0eeeff1eee7d6ccbcb4b8c1c1b8adb632191b13161d16041114212e +1f2d374a3a362c35111911140c0a253d372b2a2c29231c1d252c141f2622 +1f201e171516161717161514161d1b0f070c151815150e132a383d403631 +527bafdde8f6fae99cbdc8ac2247231811100f0a0707120f102a302c4e70 +2415070c1a3e414d4f401a14f5fbc28d868c8f8b8a8e92938f8e8b888483 +83848c8c8b8885848688868b908e88868a8f8b8a89878685848487848142 +3f3b393a3b3b3b413e3e454d4f48403c46514d414139ffeaffa371d5b5c6 +c5f3ff64fcf0ff5aefeeff5bf1f7ff6efbf0f769f3e8e1fff3632c353e22 +171c181b243440423b2f292d302d2c2f2b3853912329262927222b26272b +2b2d2f312f3922323337334434383b3a363535322c2d221d222724201e2c +262c2e1913283b476d857b002629121d2223121226241a3e4b6065645c8a +fbf3ebede7e7faebb9eaffeaeaebdeeff1f0f0f1f2f3f4f5f4f1e9e4ffff +a25572776a5a5043506a502c7f37162044718599ab91481823373445352f +354c6c8a9da7ad9b9c79572624232e709b9b99989c6431242f242c41404d +69882e10001e2b2d2e62a4a4a7a9a3aedbd4d6d6d0bc56569674296c5a3a +3d3f628278403c3c31a5e3dde0ddc8a5408481202f4b4a70b18348242839 +4135236cfffdf9f6fbf4f8fafafaf9f9f8f8f8f3ffefedf5fbfff4f5f5f6 +f6f6f6f7f7f8f8f7f7f7f7f6f6f7f9f9f7f8faf7f3e3dccec5c8cfcbc3be +cf58464d4444463e262e2b313827313b4e403d363f1c241a1c151b456b70 +68636463605d5e62695560635d57544b423e3c3e3e3d3c3c3831373c3024 +23212630486282acc2c6b586677a95bde2edfeffffb8d9e2c03154312720 +1f1d1816151e1a1b33373154772c1d11111a3a3e4f5f552a1df1f1b57455 +5154504f5357585554514e4b4a4a4a5353524f4c4b4d4f4d5257554f4d51 +565251504e4d4c4b4b4e4b481a15100e0f1111101415181c201f1b160e11 +11120d212ee0cbf1939aebc8d2d2cfe73fe4d0e36bdbd4eb76d7d9f051ef +d3d94dd5e8eacb7a2045534e6569638d939996876c4b2e1a12100c0d161b +3051821423222529202d26262626262525282828312b2f30352a2a2a3030 +30353233322f343e47453a3029273c505b81bcd5e6eef5932344897c4d3e +1e131c2a363a6f9dcbdad2b1bcffead0cfd4ddd881009ee9e0d9e2d6e3e1 +d5d6d9dbdddddcdce3e5e3eeb50014142a282723344e3b1c6a92688fbce5 +fbebd3d1bf7c33273e40616a6456576f8d9da1a298a7824f1c1a1500202c +090000100800001c1b2430253e5f783a211b2e2e0d0000250a02081b4b9c +9daab3b8b253348667013a3f24323b4c636d2d1c20227dcac0babab59c31 +638719262f3650927f290e1b30371e2338ece8e5e0e7dee1e4e4e4e3e3e2 +e2e2d4f5daf3dfd7e1d9dfdfdfe0e0e1e1e1e2e2e2e1e1e0e0e0e1e3e3e1 +e2e5e2ddd0c0b6b5ad9e9dafadda9b8ca3a6aaa99779655d5a4b352a3622 +34437777501617251f2c6397bccbc2c0c5cbd4d2c8c4cce7f2e0ccbfaf99 +98979594938f8d8e9599907760534839271e0e060c0a0414232f4f78afdc +e9f7faf37fc7c7c6414145423b3b3b352f2e2a231a312f2046641a172127 +2951475580531700a4f3eaa2aeb9bcb9b7bcc2c4c2c0bdbbbbbabab8bfbe +bbb8b6b7babebbbec0bfbcbbbcbebcbbb9b7b5b4b2b2b8b6b348433e3c3d +3d3d3c3e3f40444645413e3c423d3a2e3e44f2d8fd9ba5f6d5dfe2e3ff57 +fce5f87eeee5f982e0e0f756f8e5ef61e9fcfcdd8927403f252717001e1f +29363d39322c2c313634343535425b820f1e202327202d26262727272828 +2723222b252a2b322729292d2d2d332d2e2b24222a31323030333448514b +608aa3c3d4df82173b82754436140912222e1e273245463b2d5ed7dfdee6 +ebebe08300a6f3eae3ece0edebdfe0e3e5e7e7e6e5e6e9eefdc4012e355a +626d70829e895d8b9c607a99bfdad7d3ded38f3e272f274349473f456286 +9aa0a297a67c49121823286fa3a5a3a2a1712d1a271b25392e415e7b3a17 +0d1e2a22285aaaa3a2a39ca0d2c7c7c2bfb7593e9478104443222e374a61 +6b2c1b212380cdc5bfc1bca23661851d2f3a435b9b82270b182e37222c42 +f9f5f2edf4ebeef1f1f1f0f0efefefe1ffe7ffece4eee6ecececededeeee +eeefefefeeeeedededeef0f0eeeff2efe9dcc9bdbebab1b5c0a6b2491919 +10171c1809061221251e1e301d2f3e74744e100b15120a142225272b2b2a +27211f23252c495648382f211014151718171513121019190f0a0f161913 +1610162a35393e2e2a4d78aedde8f6f6ee79c1c3c33f3523160f0f110c09 +0a0a090624281e456723160708174e52607f511e0db8fdd67c82888b8886 +8b90928e8c8987848383848b8b88858384878b888b8d8c8988898b898886 +8482817f7f85838046413c3a3b3c3c3b3d3e40444746423e3a3f3c3a3344 +4ffee8ffaeb7ffe6f2f1eaff5bffeafd85f5efff90eff2ff6afff1fa6cf4 +ffffe7902d4641292c1d09252028373e3e3631303437332f2f2a36538415 +24232628202b26262b2b2c2f312f27242f293031392e2f2f343434383334 +32282023242426282b2a3431171931405b75944e00368a8555431c0a111f +2b1b2a3c5d68645580f1efe7eef3f6ed900db1fdf4edf6eaf7f5e9eaedef +f1f1f0eeedeae8ffeb40828282664b3c4e6b5f336068212b3f5e797e89a6 +ae7b3627362a3838373139597e959ea49cac86531d233032739f9a969494 +6a2c1d2d232a3e375270843c160a1e2b252958a5a1a2a7a2a7dcd5d7d5d2 +ca674a9d7f174d4e2f3c45586f793c2b333591e0d8d3d4cfb8496f902636 +404961a28b32162339412b334cfffefbf6fdf4f7fafafaf9f9f8f8f8eaff +f0fff5edf7eff5f5f5f6f6f7f7f7f8f8f8f7f7f6f6f6f7f9f9f7f8fbf8f5 +eadacfcfcabfbfcab6ca6d444a404446412d242932302622342135457d7d +591a151f1b1a334e5c636262636362605f5f6a8693816c604f3a3c3b3d3d +3c3a3a342b323930272421262e496585acbfc3b47d607592bce2edfeffff +95dddcd64d4131251e1e1f1a18181714112d2f234b6e2a1e120e15494e62 +8f663015b6f4cb65534d504d4b50555754524f4d4b4a4a4a52524f4c4a4b +4e524f525453504f5052504f4d4b494846464c4a471f1a1311121315130f +14191a151214120e1d0c151d0f0fd7e5c956bbd7d6d4c5cecb35cebfd3b9 +c8c7b9bcd0bcb853eed4e13b94acb178133c4c544c627a7d909895897151 +36261d13131012181d2f5187172a272728192726262526262527282a3531 +28332b2b38332b3632332e2c32363130363b393531292d4858608bc4d8e5 +e0ef621b4bf0ffc7791c192921323c4b7ebad6d6b5c1ffe4ced2d2d4d786 +016be7f3ebf8f4f8f0edf1f4f8f8f7f5f4fbeef8e0220514211f23271c35 +493541a86d98aed2e8ebe9d6b2ae984b1a27384f666a564d6482909fa8bb +a5924f3529190016240200000e1700001f1c212a18364652382630282010 +00002f0c0002133f97a0adb2b4b558309071003148344b4b63797e352422 +135fbdbcb4b7baa83752911f2723394b8884382e282c32121c25e8e6e6e1 +e8dee1e3e3e3e2e3e2e4e5f8b247c2f2e3e2e8dfdfdfe2e2e3e3e3e4e4e4 +e3e3e0e2e2e3e5e5e3e4e7e5e1dbbfb6beac8b8db3bae3b693a9a5a6a2a1 +86676967513e26291e207e3a5050121c2a241f3959798e8b86888d999f9b +9688a6b095858c8f847976767473706d6e727873604d443b2d201b0f0607 +03001215234473afdee7f5f9fc6bcccbcf6238423e383a3c3835332d3221 +2b2617231a0b13262a203d1b1917130a0862f0ffabaab8bbb9b8bec4c7c0 +bebbb9b8babababebcb9b6b4b7bcc0bfbdbcbdbebebcbabfbebcbab8b6b4 +b3b6b4b14d48413f3e3f3f3d373c41403b38373a3a49363b3c2a25e9f5d6 +61c6e4e3e4d5e2e34ae3d3e7ccd9d8c7c8d9c3bf58f5e1f34faac4c88b1c +3a393013151e14212a3139393532363b363b373537374761881525252526 +19272626262727282727252f2b222d2626333129312d2e29272d31282122 +25292f3535394d524b6795a8c3c7db510e41e8fac07113101f172a241428 +454c423161dbdcdee3e3e7e485006debf9f3fffefff8f4f7fafefffffffd +fff3ffec321c354d596972697f8e7770b5668a96b1c6d1dad6c1cabc7238 +303239494a36314d758b9fa9baa28a452b292a276a9fa3a8aaa88a3e2831 +21243121394850311c241c1e242959aca2a1a19ca0d7c7c4bfbdbc603a9d +820c3a4a31474962777c3323211565c4c3bcbfc2ae3c5191232e2c44548f +87362b252b32152534fbf7f4eff7ebf0f2f2f2f0f0efeeedfeb84fcafaed +ecf5ecececececedededeeeeeeedededececedefefedeef1efe9e2c6bdc7 +b99da3c1b6bf66221d0f171a231404162a27231720191e7b394e4e0f121f +1a07000006131817151413171b1e12323c24141e231a101113131211100e +0c15160d090e1313131a161b2a33393f1e1c4473adddebf8f5f056b7beca +602e23150e10120e0b0d0c140a1a1c12221d0f1011111038212115121216 +76fbf68e80868a86858a90938d8b8886848383838a8986838184898d8c8a +898a8b8b89878c8c89878583818083817e4b463f3d3d3e3e3c373c41413c +39393a3948353e413332f7ffe773d8f5f4f3e2e9e74fe8daeed3e1e2d2d6 +e8d3d16bfff1ff5ab5ced091233f3d34191b2319272d333a3a3433363d38 +3b3631312e3a578a1a2928262719272628282b2c2f2f2d29312d24312a2c +39362e3733322d2b31372b1e1b1a1a2127292b372e141d39445f6d962500 +42f7ffd07e18111e15282419335866665686faf1ebedebeeed950e7af7ff +fefffffffffffffffffffffffffff7ffff6562848c715e4b354e5f494287 +2f4340506272879898b3b26f3a37342e393b2926456d859dabbfa9954e34 +31342d6c9c9b9c9d9c833c2a352729372848575b381d241c1f252856a8a0 +a0a7a4a7e0d6d6d2cecc6d44a68a1443563c555770858a4133312475d4d5 +cfd2d7c44f5f9d2e36334a5b979041362e333a1c2c3bfffffdf8fef4f7f9 +f9f9f9f9f8f8f8ffc45ad5fff7f6fef5f5f5f6f6f7f7f7f8f7f7f6f6f5f5 +f5f6f8f8f7f8fbf9f6f4d8cfd8c9a9aecec7d98b4e4e3f4242493823303c +332c1c251d23824159591a1b272214172231414341404145494b4c42616b +503f45473e31313232312f2f292129312b221e1b1c27466686a8bbbfb269 +4f688bbae3eeffffff75d8dae06e3932231c1e201c191a171e1422241828 +2218191a1711351f2422221f1f75f5f27c5851524f4c5056595452514f4b +4b4a4a51504d4a484b5054535150515252504e5351504e4c4a48474a4845 +211e18100e111415150e121915161a140b27124d91858c989995828f889a +939990aa9690a19c9a9ea0a99eaaa4b6bee2e5dabfc8c826143b53585e6b +76808b90887876553b32191b161219221e1b31577a1a2026272223252928 +272626272a2b282b2d2c2b292a2c2e303131302f31322e34382f3036342c +233c4d56749bbed5ecf1da4a2d54e8efa8882419231f2941374e99c7dabc +c0ffd9d7d9e0c2e378144e4a323334232527212806191a2475849da49452 +0d0a20171a251d21513f27a18a859fcbddf8e0e3d7b3a489381d1b213e5b +6e685f627687a09baebc9c6b606633001e250c00000f120000172020303a +383449665d533d5c1d0f003d160100072885a8b8b7b1a45e2e7278003048 +4243413d452d44233d2744c6b5b6b0b8a94e48873f20253d3d40373c332a +2d2b231e0fc5e5e4dde2e2dfe4dedde0eae7deedf86008c3fcf3f2eaf2eb +f1e9e2e6dfe8e2e3e5e5e4e1e2e3e2e2e4e7ecede9e6dec7b3b992001caf +b4cdc47eaaa4a4a2988964616858442c292f2d3d34549b8017191a202d37 +3c383a3635332e383e372e2f33343434383b393c3c383839363036323a3a +312a2619110c090302010007262a346cb8dcddf2ffff79b9d1d89915492a +43333a3c3d352f29252c2c22140c1b1b19181e2522190a151d0c1af2ecc8 +a1aeabc6b8b0d3b9bcb8b6b5b7b9bdbeb8babbb8b3b2b7bbbebebdbcbab7 +b4b2b5b6b6b7b6b4b2b1b6b5b34d4a443c3a3d40413e373b413d3e403a31 +4a336bac9da2abaaa5929f9aaca6aca3bea9a3b3aeabafb1baacb8b0c2ca +ebeae1d1e3e744283f3e2b1b1616171f29333345393743363f3a3639403b +38506e801a1e2627222325292827262528292a262628272627282a2c2e2f +2f2e2d2f302c2e261b1e2d393932464843547496b2d2dcc73a1e48e0eaa5 +8520111911182c1b1a3f4e4c3559e2d6e8dbe4dffb7304424330353a2a2a +2c212604181c2b7e8da2a798581b254b54667b716f947751b3766386b4c1 +deced9d0b9c2c18b714e363a43483c303c5f7ea19fabb4905e576745276d +97a0a29da88b482b342b23303d433d41585048375d272e3da7a5a5a29d9f +d5c7c0c0bbb168347a890e32453c40403f442b401f3c2b4cd3c6c6bdc3b1 +554b89412429414043373c32292c2a242827e2fef9eef4f1f1f7f1f0f1f9 +f1e5eff45c06c3fefafbf4fff8fbf2e9ede3ece9eceeeeedecebecebebeb +eef0f1ece8dbc5bac7a00e2ab6afaa73081a0c1c221c1500092326231920 +2d2c3e3454997e151414110d0b0703090706020001060301050807050305 +0604070907090d0b060b080f130c0c120f0f161c242f3c413b2b1f386eb0 +d7e7fdfdeb4784b6ce981131091f0d10110f0a07060a171f1d130d1a150c +08131f20180915211527fdf1bd7e7d768e7e779a85898986858384848584 +878885807f84888b8b8a898784817f838484858482807f8382804e4b453d +3b3e414240393d433f40433b324c3873b7a9b0babab5a2aea6b6adb3aac5 +b0aabdb8b5b9bbc4b7c3bcd0d8fafdf3ddecec4629424332241d1a1b1f2c +38384838343d323b3836383e37334866801c2128292425272b2a29282a2c +2e2f292a2c2b2a2a2b2d2f313232313032332f302414121c25251d2e2a19 +1927374c738b8d191754f7ffb68e210f17111e3529274b5f665684fff3fc +eaedddff891f56533e444a3c3e40393c192829358592a6b6be92646c8071 +64624f476b4a1f7f432636565d7d7c9cb4b5cdd09173513731373f332833 +57779ca0b2bf9a675c6b492a7198a2a29aa3864429322d28384449444e65 +5a503b5f293039a3a3a7aeaba5dcd9d5d1c7ba71408793193f5046494e4e +52394f2e4a3757dcd0d3cdd5c4675a964e2f344c494c3f443a2f3230282a +2be6fffef5f8f8f5fbf5f4f8fffaeffbff6a13cffffffffdfffffffbf3f7 +eef7f3f3f5f5f2f0f0f1f0f0f3f8fcfdfbf7f0daccd4ad1b37c8c6ca9e3c +4f3b4043413a1b2236322c1f253031433e60a78b1a1818181a1c1b171e1b +1a170f181f1a16191c1b1918181a181b1c1a1b1e1c14151223281d16110e +1c396185a6bcc2a86f495583bfdee8ffffff6daed5e6aa1f3e1429181c1b +1a14100d111e26211812221f16121921231d0f1d2a1c2dfff5b762544a5f +4c40634c54555554514e4d4e4b4e4f4c47464b4f525251504e4b48464847 +494a494745444a494915151413121212111e161a1d181a1e1b211b0c7bed +e8dcdce8e7dbe7dfeae0e1d6f1e6e1e5dce0e4deebe6f2edefdeebd3efed +d98a30324a585f687480878f8e8a71643e2a2b181b242024261c172d5073 +19232929222528282727272828292a282a2b2b2a2a2b2d2d2f30302f2f30 +322c353a312f332f28274154607fa3c1d7ddecbb4f2055c8eaa6972b1712 +252e3b2f3f82bfdac3b1ffd4d7e1e2caec862568542828342c2924232a22 +392c0e16050000140a011526231d1d1a3b512369999886a9c6e1eee2d3c4 +b6a176201e231c2c4b666b625e6b7b979eb7b2aa803e411f0009290f0100 +0e110000121a1e3341433b4448313119223019002e0b0000051d7babbdba +b5ae71336e9214385d383a363f483b3a4432222dbeb1b2b3b7ac553f884b +2431433635363b3834342b272a01ace4dedee3e7e5e1e1dee0e4deddeaff +721075ac92b4bca8b1b5b1d3f5fef6f6f5f5f4f3f2f4f6f7f9fbeae1e4e6 +dfddd1a090610d1770adc7ce76a1a69e8f9e8f665f6354452f293a33362a +2e4003111d2827201f252c221f211b221d242117171d1f201f2324272420 +1d1b1c1f2221242e312929281919130a04030200072839416ab4dddeecfc +ff7dacebd4b82b5941423e423a37363c302623221c181816202826232422 +1e201514220ddbefda87a9aab1b5b4bfbabcb9b7b5b6b7b9b9b3b5b7b5b0 +afb2b6bbbbbcbcbbb8b6b5b2b2b3b3b3b1afaeb0b0af3e3f3d3d3b3c3b3b +463e42453e40443e433a2996fffeefedf7f7ebf9f2fff3f4e9fff8f3f7ee +f1f5effcf7fffbfdecf5d6f4fff4ac4e42443522120f1319233043404433 +35443b434842424339364e6b7c19232929222528282727272828292a2628 +29292828292b2b2d2e2e2d2d2e302c2f281c1d2c383a394a4a45597a9dba +c6d9aa3f1048c0e4a3962a1207151a271e1f3b564f384bcdd3e9e2e6e7ff +81125949242737312e2621251d352b121f0e0105171213345b6872787187 +8a4c839a785b8eb2c9d9d8ccbbbcc3b98f907148373d413a2d32507198a0 +b2a69a703542311e54969ca3a0a78e4f30352a2230415246393621271726 +342e2d8e969ea2a2a1d4c7bfc1c2bd7b3774a02237573337384147393440 +302637cfc3c6c3c4b75c458b4d2633453635363b3733332a273216c8fcf1 +edf0f4f2f0f3efeff1e6dfe8fb6a0a73ac96bdc6b2bbbeb8d7f7fef8fafc +fcfbfbfcfeffffffffeee3e6e5dcd3cca79c6b172077aba98204100e1814 +221800021a1e1f181e3834392d303d01101b221a0f0a101811121610150d +10110d121314100e0d0e0f0e0a090a0c121512151c1c13161911191c1d23 +2e393d36292d456fa9d5ecfcfae93a69c8c8b6274523221a180f0708110b +070c1316161710181e1c191a1c191e16172916e8fcd96778747878788683 +8a898887848280807f8284827d7c7f83888889898885838280808181817f +7d7b7d7d7c403e3f3c3d3b3d3a483e444541414740453d2f9ffffffefdff +fffafff9fff7f8f0fffffdfff8fbfff9fffffffffff7ffe9fffffbae4e42 +463b2a1b17191a2130494647312f3e343b44414241353147667b1b252b2b +24272a2a2929292a2a2b2c292b2c2c2b2b2c2e2e303131303031332e3128 +17131a23201f2d27181b2a3c54698d76251059d8feb49e280e051623332e +2c415d625773f6f3fff4efe3ff982e6c5932354844423b373b3346391b26 +150c1f4e5a5f747b6d5d554e63692453613d173751677e90a0b2ccdfd49a +9173472f343b3527294567929fb8b0a57a3844311f599ba3a8a2a58a492b +312a253949554a47462e301c29372f2b8c93a0b2b1a5dadcd6d1cbc48443 +82ad2d45633a3e45505547424e3d3140d6cdcfd2d4c96e559a5a333f5140 +3f3e433d39382f29341bccfff7f4f6fcf8f5f7f6f6faf1ecf6ff791880b8 +a1c6cfbbc4c7c2e2fffffffffffffffefefffffffffff7f0f3f5efebe2b7 +a877232f89c3cbb038473d3931463e1a1d2e2c2a1e223b3840363c4e0e15 +1c2621171319211b1b1e181e171c1b15181b1c1a18191a1c1a161414161b +1c171c2c2f201c140e213b5f80a1b8bda26a536082b9e0edfcffff6595e9 +e0cb36512d2d24241913121a130f141a1a1b1d1a2327252122201d231a1c +2f1df0ffd752574e4d4944514d57585a56534e4b4946494b494443464a4f +4f50504f4c4a494543464646444242444445191a1e2021212121201b1e1f +1a1d221f201e1e87edece9f2e8eae3e8e1e7e0e0dce9e1e2ded5dbd5d5db +cecfccd0bfc0cccfb4830d173b52555d6876818c928f7b6958372f322120 +2021272f2e3047686f19252b2a2427292627282829292928292b2c2c2b2b +2c2e2c2e2f2f2e2e2f312b343a332e2e2c283047586687aac8dddfea8a64 +2c38311d41662a29172c2925363a5aa0cacab0ffddcdcdc9d0ed760f4a41 +190f151933413d241e2b281d1a162027231b1e221f1d2217364243309e85 +8f8eb7dae6ecd9c5bebc9c6e1a212d2c243b546462575d6d8498b8a9c0a7 +3b281b000037100400071400000d171b314329334c45192a262635190020 +080000051975aabcb8b7b28032639e2030652f3237293a393134162218ba +b1b1b8b4b05d2d805319324534362e2f2720211f24320ca5f8eaefebf3eb +e5efe8e8e9e1e4ebf57e26446b1c2315231d1e0b17185068383837353332 +3538393222110e1827322f3412271a152655b7bedc7fa4a99c95b1a27567 +695d5340404e3e3f362e483c342d231e202529291f1d241b371d1d21191c +1f21201e1e1e231e1d1f1a151a261a1c2533465b5539231b0f0b0e110c13 +2c474e6eaedce3e9f7ff7489f4ccd048504d37434439373d35302d2e2c25 +1e1f2223221c1a1e1f1f1231191f00a2f0fe88a9b3a5b3bcaebcb9b6b5b4 +b3b2b2b0adafb2b1adabadafb5b6b7b8b7b6b5b4aeafafafafadabaaaaab +ac3f41414444454445433f41433c3f443e3e3a379efffef9fff5f7f1f9f2 +faf2f2edfaf2f3efe6ece6e3e9dcdddadecdccd2d7c59a292d41442a1a0e +0e161f2a35393c3b2d3a4b444844414449484d66817819252b2a24272926 +2728282929292827292a2a29292a2c2a2c2d2d2c2c2d2f2a302a201d2836 +3a404e4b4a6184a6c2cad878541c2b29183e6529240c1c1511241c234441 +404fd6dadfd9d6e8ff77053d37160f192037433b2017242620212028302c +2836485967776f8888744fad80726da4cbd3dbd3c3bbc5c1b9919d88663d +383b3d332c42618197af9caf9732292d2844a39da3a39f92553130271f2e +43363c41330b23252a392e257e939ca4a29fd0c9c1c1c4c18a3669ac2e2f +5f2a2f392b39372b30142622cbc3c5c8c1bb643383551b344734362e2f26 +1f201e243616b2fff0f1edf5efecf8f2f0efe3e3e8f17a24436d202a1e2c +24250f1b1b506b3c3c3c3a383a3d403e372615101a2931272f182f1e1b2f +5ebdae9e171a151615332a090a1e242b2734493f423930453a33281a110f +111518101019102c100d110f13161613110f0f16111216141015200b080e +1a2b4140271917161b28363b35293b4f71a6d6f1f7f3e43144cfbccd443c +31171f1a0e070f0a080c141b1b1b1c1c1b18121014191a10301a2402affd +fe697b7f6e7980758485868684817d7977787c7f7e7a787a7c8283848584 +8382817b7d7c7c7c7a78777778794040434446454645453f43433e404640 +403d3ca6fffffffffffffefffafff6f6f5fffafbf7eef4eeecf2e5e6e3e7 +d6d8e0e4cfa02a2b4144312318171c2229343d413d2c34453d40403e4248 +4549607d771b272d2c26292b28292a2a2b2b2b2a2a2c2d2d2c2c2d2f2d2f +30302f2f30322f312b1c13181e20252f281b2231425b6f90463a1c3c412f +4f6d27200a1d1e1c30242045515a72faf7f5e7dee8ff8b1d4e421f19222a +4350492f27343329292a3f57676c7675675a56456264542d82492e1c486c +778b959db6d6dcd0979d8b67393136382d2337557893b4a5b9a1352b2d27 +47a6a4a9a5a08f512c2c2722374b3c434f43182b2a2b3c2f247d909fb1b1 +a2d5ddd7d0cdc8934277b9393d6b3136463a4745393e21312bd2cdced7d1 +cd764392622840533e4036372c25252326391fbbfffcfef9fffaf6fffcfb +fdf2f3f9ff893251792b3427352e2d1824245a74454542403c3d3f42423b +2f1e1d2738413c43263a2a273e6fd3cbc7484e453936595029253333342d +384d4349423c5647392c1f18171a1e20171721183419171b17181b1c1a18 +16161d18181b181419241011202f3a4a3d27243a5c7da1babfa36c616b84 +b5e0f2faffff5c71f1d6e253483d242b2618131a1411151d232322232626 +211b181c1d1e15351f2a09b7fffe555a5a45494c40515355585450494440 +42454847434143454b4c4d4e4d4c4b484242434343413f40404144151314 +17191a1c201c1a2020191d231c232e1b283d2b2f3b35362e2b272e2f3136 +2c202626202a1b2b2e1d151c2725291a1728472551535156616b7a869193 +8c666d654d4c48363037363b4244454d5e741b24292a2729282526282a2a +2928272a2c2d2d2c2b2d2e2c2d2f2e2d2d2e2f2b353d362c2b292835495a +6b8eb1cde0f7e647553e3a28011b44221e0c182c323b383c87bfd4acffe2 +c7cec9e0e2630e3f482a1c1c2854714a23262b2b2c1c2415130709212928 +371e27404921928a7d90b5c6e8e3eac8c8bcbc95731710243c292f3f5a61 +5756617691adacc9bf5e1b190a00451102000317000006171b293a324f7f +6c18131317291600271b030000146dabbdb5b2ab842f6093281f5d363028 +31626467321e130fb6b6b0b9aeb1671d745d0a2b463f4f5f5535181d2d38 +3f0e85fee7ece5ece3e5ece4e5eae4e6eaec8125336d3137333c1d331630 +2022211f1f201f1d1d1f21271e2743554c3930352a1b392d1a1b29b5a8d9 +83989e9199ab9f726161554e3e3054504b4c44443a3627191a252b292328 +222a21522a2126292b2d2e2d29262319171f292514131f2d232641749d90 +5d2d20150e12181215334c4b70b1d7e6eafdff7872e5d2d374395533413e +3d3c4134302f3234302f32654b2c1a1e2b323245a0692e0751e4ffaea4b6 +abafbca7b7b2b0b0b0afadaca9abacafafacaaaaabaeafb0b1b1b0afaeab +acacadacaaa8a7a7a8aa3533323537383a3e3a383e3e373b3f383d46303d +4e3c3b473e3f3a38363d3e40453d2f373531392a3a3d2c242b3634362221 +395a395d4d3721150e121d2931382b464c48576157555a56555a5d5f6a74 +7a1b24292a2729282526282a2a292827282a2b2b2a292b2c2a2b2d2c2b2b +2c2f2a302d221e25333b454f4b4d698badc7e1d335452e2e200017411e19 +010a181e271e143a3b4a51d7ded9e5e0f3ef680c373e281d21305974491d +1e25292e232c1f21161d41586983747d8b8548a68c72799eb9dfd2dcc6cc +bdcbbfc494968d86533b343d3a313c53708ca19bb5b0551c293039ae9ca1 +a49d955a2f2a271f263a3f58745a0a0c121b2a2a2883a1a2a5a09bcacbc2 +bebfba8e3263a1361e57312d2a336162612e1c1719c7c8c4c9bbbc6e2377 +5f0c2d483f4f5f5534171c2c38401089fde6eae2ebe5e8f2ebecefe9e7eb +ee83273571353b37402136193323222422232524222224262c232a46574e +3b2f31261d3d2b1a2337c5a4a727150c09152a250503131b2423214f4f4e +4f4443383321100d1417151219151f16471f1416181a1c1d1c1a17160c0c +16232012111b21120f28588276471d1813162533362f30404d73a9d4f1f5 +f5e5332ab9becb6d2439131d140f0c1106060e1820252a2f5f4322101421 +2c2d409f6a33105bf1ff9378857677826e7f7e8080807d78737076797c7c +797777787b7c7d7e7e7d7c7b7879797a797775747475773432323537383a +3e3a383e3e373b40393e483542584649554d4e46413d4241434c44363e3c +3840314144332b323d3b3e2d2b405e3a5d4d3a271f181b222a2e362f4b4f +45515b504e5653545a5a5c65717a1d262b2c292b2a27282a2c2c2b2a292b +2d2e2e2d2c2e2f2d2e302f2e2e2f312f34302115151b1f282d241b253848 +608b8f052c2e3c3713264a1f15000a212930210a34486370f7f9eff3e8f9 +f87b2144472d2124325d794f272b31343a2d3f4352515870726367474c62 +612983643a29405982829b96b3bfded7d7989590895137323933282f4664 +86a3a1beb7581e29313db2a3a7a69d92562a2627222f42455f826a171417 +1c2e2b2880a0a6b2ac9fd1e0d8cdc8c1974172ae412c63383436426f706f +3c292222ced2cdd8cbce8033866c1939544959675d3a1d21313a441c95ff +f4f8f3fbf4f7fffbfcfffcfbfdfd9034427d4046424b2a3f223c2a2c2d2b +2c2b2a262627293027314f635b4a3f42372a4838263044d5bbcc56493d2f +3a514c251e292a2e2826535455585053453a2515141c201e1a201c271e4f +271d202022242524211e1d13121b272415141c231a213d678b75492a3d5c +799eb8be9e73666686b8ddf3f9ffff5f58ddd9e07d3347222b221c1a1d13 +1219232b2d3136694e2b191c29303146a46f391764faff805b644e485039 +4c4c4f50504c443e3b404247454440424146454847494647444140424142 +403e3d3f40422d2b2e353633333635363d3b32363c343741302c3936404a +4545443a3b3e403c54493e47444053503f4848424c4b4a4d5f493d414c5a +49475c6874818d938d7e456666524f4636343e3c424d575a5352781c2225 +292a2a252526282a2a2928272a2c2d2d2c2b2d2e2c2d2f2e2d2d2e2f2c34 +3c382e2926293849596f95b7cee0dfc831564e38704a1726162b2a19241f +35393479c1d69deba166696bafb6491a37442a20262e465045202a282020 +080c1819151c2d261c26292a551f62a47874a3d0d1d8e7dcbbbc92b49478 +10061833312427455c585359748e9fb3bcb98718130a00470e0002081600 +0000171a202e1d3c7874211417291914002a280800010e62abbeb4b1a687 +2e62853d164f3f2c3052565142122f210ea6bbafb7adb4791a6d730b2740 +435b796a37070d292c1f105ef5e3e7e4e8e4e6dededeebeddfecee8c1c20 +46201e3040528f2f1f292025272a2d2e2d2b2a2a27212a476c7045181e13 +223d3f1b2522a2a3da8b89a49fa2a29c76636155503f2948321e46727863 +0f151d2525202329392f332b613b2d2e3e4141403c38322f4848525f5b49 +454d32232035618776413226191213160f0f3b4a4173b7d4e6ecffff7f6d +c0e8caa7325e4040383f403d42362b26282e3c4773552f1a1b262e325da2 +7c36190ae7fbe195a8afa4b6a8aeacabadaeafacaca9abacaeaeadabaaaa +acadaeaeadacaaa9aaaaababaaa9a7a5a3a4a64543464d4e4b4b4e4d4e55 +534a4e514a4d55423e464348524d4d4d4346494e4a62584b56514f605d4c +55554f5958575a6c564c515659351e1b151319263132331348544e5c5d55 +555e5b5a626d706c657e1c2225292a2a252526282a2a292827282a2b2b2a +292b2c2a2b2d2c2b2b2c2e2b2f2d2621263239474d48506e91b1c9cab61e +463e2c674513231223200a100b20241d3f455147bf9b7a8d8dbdbd562334 +3d28222b344b52441a23201c1f0b16262c2b3b596062757e79964e7baa6c +6293c5ccd4dad2bec69bc9c2ce969892906e462d353d3639486b858fa0a7 +a881191f2c2cae979ea5a2965e2d25291f1f2e2a456d63150f182a19242c +83ada6a6a198c3cec4c0bfb5913165934915493d2b3254554f3c0e2d2518 +b7cdc3c7babf802070750d2942435b796a36060c282c1e105df4e2e6e5eb +eaede7e9ebf8faecf7f59222264a24203240528f2f1f2a23282a2d303130 +2e2e2e2a242a4a6e7247171a0f223b37152b33bdabb93e0f16141a1e2004 +000f1722221842301e467277610a0c1218160f12182820241e5630221d20 +1f1f20201e1d1b3739455450403c4428170e20496d5e2d241e1717212d2c +2539404174b1d1f1f5fae73a2491cec19f1d421f1b0d10100d130c070a12 +2132416b4d2813111c282d58a17d3b2013f1fbc76d7b7d6e7c6e76787b7d +7e7d79757276797a7b79787677787a7a7b7979767677777878777674726f +70724543464d4e4b4b4e4d4e55534a4e52484b5444404e4b535d5858564a +4a4b4f4b655d515b57546663525b5b555f5e5d60725c4f5055573622211d +1c202a322f30144a544b55574f4e59565a636b6e69637e1e24272b2c2c27 +27282a2c2c2b2a292b2d2e2e2d2c2e2f2d2e302f2e2e2f33313532261917 +1c1e26281c1a293c4b637776002f3e387c59222c13211f0d191427210b31 +4d6660dab7929b97cacd67343f442b212730454f421e2a2b2a2d1c315566 +656a7462484847426c2a5b8844243459687d96a19fbba4ded9dd97959595 +6f452d35382c2a385c7c8fa4aeae831b1f2d2fb39fa4aaa4955b29222922 +2736304c7b7321161c2c1b242b81aca9b2ad9bc9e2dcd0c8bc9a4074a055 +235542313e63635d4a1c3a3021bed7ccd6cad192307f821a354e4d658172 +3c0c112d2e231c6bfff2f6f7fcfafff8fbfcffffffffffa0303256302c3e +4a5c9937272f2a2f33363738353331312f2932537a7f56272b1e2c464421 +373dc8bed86840483d404645261d25262d271e463526507e876e1111181f +1d171a2030272b255c3628252c2d2d2d2c2926243f404c5a56454147291b +1c3157765c2e3143607b9bb1b4947a635b86bfdaf3faffff6652b5ebd4ae +2e51302c1e20201b231a13161e2b3d4b7658301b19242c315ea68241281c +fbfdba545c58424c3c43464a4d4e4c443f3c424448464743444246454846 +474444414240434142413f3d3d3e4035343c484a423d3e383a3f3930373f +3744474750574f4b50565960535b565647464d49504b3d566660656b646c +5c5d644c62696278645d6164737f8a918e7f685e91907d807a7a7f626369 +76868f867d741b2225292b2b252627282829292928292b2c2c2b2b2c2e2c +2e2f2f2e2e2f302d323a39312b272a3d4a5c749dbdd1e1eda2253d4d64fd +ffca8c33392a171e232f3a2d59aecea2ea8e7db9adcb95200d2342382e29 +242e30482a31261f251c220c0f15222a241e273a324826ab7e7679accbe0 +d5ecc8b59456ac97770a0b181e321a132e4d534e4f6b8796b7b2b5ae3e24 +1100450d00000714000000181b1d2e313a60632d231b2b1b180021280701 +050a59a7beb6b7a8902b5a7d5312453c242c554d9d6f2824260e88bfafb3 +b1b88d1e62871222303246706a421a223b341d1b39dbd6d2d6ced3c9abbe +b9c8d2afcfb17622323e2b233d866d7d25203624241f23292b2a2825242e +2f2324527d662e10182d30371929197a9ed89b7bb1b0a2a2a17f6e685e57 +472827212d4a4e4b5927211b1c1d1f27333c33342f563c302e4143403d39 +352f2a201e2126231b1a201c16171c293a3314231c1310131611123e4d3e +74b7d0e9eeffff766a96f2c4c938534538323e443c41372c29282a303529 +231c1511121b272a1f28221000d0f9ff939aafa3b3b0adababacaeafaeae +acacabacacabaaaaa9abacadadadaba9a8a8a9a9aaa9a7a5a49f9fa04544 +4c585a524d4e484a4f4940474f475457555c61564f545a5d655a63606053 +5158545e564b61746e7379727a6a6b725c72776b78563b2917161a222e34 +2e27367b847d8c8f959e7f7d7e8a9aa19a8b781b2225292b2b2526272828 +2929292827292a2a29292a2c2a2c2d2d2c2c2d2f2e2f2d292629333a494b +47547799b6cbda8f122c3d58f4fac4872d3020080d0f1a28202e40514dbe +8997e6d3d599321f233b36302e2b34314524271e18231e2a2029354a5e64 +697589787d48b6766061a0c9ded2e0c1bba163c4c9cf94a59d8b83502b2c +3837373e5e7b83a19da4a8402c2f2ea8969da3a296642e232a201c2e3c41 +555523201c2c19232976a8a2a7a595bccdc6c3c5b69a2e5d8b5f113f3a23 +2e574c9b6924222a1899d1c3c3bec3942465891424323246706a4119213a +341e1d3de1dcd9dfdae0d8bcd0cedfe9c9e4bf802a38422d233b836a7a24 +1f3725272226292c2b2724232d302324527f682d0e142a29270d2d2c9bb1 +c45b092423151b230b07141b2726151e1c2c4a4e4a57201610111010161f +281f201e4730231a1d181717171715150b0a1017140c0b11120d090b1525 +21061918161a2631342d3e433c75b3cff3f3f5e3311e5fd1b7c123382413 +0912130c120b060a121a242d211b150e07081521251d29251401d8f8ee70 +71816e7b767678797c7e7d7a767477777878777676757778797979777574 +74767677757371706b6b6c44434b5759514c4d47494e483f464e46515455 +5c635c585d63666b6066616153535a585f5a4c657571747c737d6b6e735c +71776876553c2c1d20222931332a23367d847b88888e987b7a7f8b99a199 +8b7b1d24272b2d2d2728292a2a2b2b2b2a2a2c2d2d2c2c2d2f2d2f30302f +2f30343336342a201a1d1d252118192e414f668d5700183d62ffffd28e31 +31210b15181f240d1d436364d9a7b0fbe6eeb2462d2d42392d28232a2940 +242f292838354e5564686d6954424150425325944f2f1b34527983aca4b1 +a776dee0dd96a3a29287522d2d332c272a4d6f7fa3a2aaaa3f2e3130ad9c +a4a7a494602a202a242436424963642e27202e1c252973a7a4b3b198c2e2 +ddd3d0bfa43d6c986b1f4b3f293a665aa977322f3521a0dbccd2ced5a634 +749621303e3c507872471f263f36222949efece9f0eaf1ebcee4e1f1fbda +f5cc8c37464e3a2f488e73832a253c2a2c292d3131302c292833352b2c5e +8b753b1c22333132193833a2bfdf803a584e3f44492e252b2c332d192122 +32545a5864281c161717171e28312829264e342a232b2927262523201e14 +13181e1b1312161310161b212c1d05243b5b7b9eb2b6987c655487c1d7f5 +f9ffff5d4c86eecbd0344937251b23261c221a15191f2530382c261d160f +1019252b222e2c1d0be3fde35a555f444c444043464b4d4c484341454548 +464744464347464947494545424241414243413f3e3b3b3c5f5c616c6d66 +656b5e60635c576676735f6a7576808677686e6f776c7d787a666f7d7681 +866d73878982867e8a7178848ba8a59d8c57595a6e7d898e90866c4d5996 +8f7c83808b9494949190989d968c6516272a29292c28282727272828292a +282a2b2b2a2a2b2d2d2f30302f2f30312f313739342f292b414e5f7da7c5 +d3e2ee683341486fe5dbab70114828281724293728328fbaacf6b9696745 +a39f2c05395f58493f3b4848463d443f31312616100b172221242c2e3d4f +1d8c8e8e739eb7cce1ebacadb78f46ad957a0a0912122812081e3f4c4a4a +537996b0b2bcbb793c15003c1104000410030000161b223c25293f4b3c4a +3c4b2c210015260402040950a2b8b4b7a796324980600c4a372d363b2372 +52231b2e0f68c2b2afb6b8992b5690161f2729333a3f3221262c251b190c +b0b8a9b29ead9e6b9486919c66a08d672725292b2b3849424f41311b1d32 +25282c2d2c2b2929212b2c2e4d6d5c3615262b2e2d1b1d124b7cb9b278a2 +a59e9ea1816c655b564640211e35413b5a9f4b321b171d232c3939363734 +3e37312e3f3e3934302c292329272624232424241c1b201e171b1e120e0c +0a0b0d100b1037554775b1cceeecffff636477e9c8d257454632353d423d +39322e313029201b080c161b1a171d291c010a1f0c0071efffa693a6a7b3 +b1aeaaaaa9aaacabaaababa9a7a7a7a8a7a7a7a8aaabababaaa9a6a7a7a8 +a7a5a3a29e9e9d65626772766f6e7467696e676271817e6a757e7f868a78 +696f707b70817e806e7787808d90797d93948e918a957d83929eb9b09e81 +39271315181f29343525183b888a7e8e93a2adadaaa5a2a8ada496691627 +2a29292c28282727272828292a262829292828292b2b2d2e2e2d2d2e3030 +2e2c2a2b2d353a4c4c485980a2bacedb5620303962dad4a56b0b3f1d1906 +1016292215334a54c3b888986eaba1441c3b5a564b44404b48413438342c +2e2722292f41555e6a787b838946a08c7c537faccce1e69fa4c09f57c8c7 +d195a9a18e8d5b2f293134353844697f989cacb77b422d2e9d98a1a19f95 +6a36242a20213c2e30343d3649404c272b2365a29ea6a598b7cbc4c4c8b8 +a3344c8e6c0c44352c383d22704c1f19321979d4c6bfc3c3a03159921821 +2929333a3f3120252b251f231ac1ccbfccb8c9b886afa5b2c18dc29f712f +2b2b2a2734433c493e301c1e3325282b2c2b2927271f2a2b2e4d6d5e3513 +232423190b2027739ab07c0d1a160c131e09030d14222129151934413b59 +9b4127100c10141b241f1b1c1a272220171914101010110f0e1414131110 +0f0f1112121410070c130d0e1218202d383b363d4e4374afcff7eff0e31e +183dc2b7c7442c260f0b10110c0a0607111817121100060f14100d172317 +00091f100579f0fb896f7b767d79777578797a7a77757375757373737473 +7373747677777776757273737473716f6e6a6a6963606570736c6b716466 +6a635e6d7d7a66717b7c868b7c6d73747e73847e80707988828d92797f93 +968e938a977d85929ab3ac997d3728171b20292f373421143b88877b8a8d +9ca7a9a7a4a2a8ada5976c18292c2b2b2e2a2a2929292a2a2b2c292b2c2c +2b2b2c2e2e303131303031353535322d26201d19241c141b3348536d9624 +001e366beae4b1720f42211e0e191c261205365a6de2d8a7b88ed2c75c2c +48615b4a3e3942403d3742444249464a5f636766574e4a474f591e7b654c +162c36507da27d9bc9b675e6e0e298a7a9989561342b2e2a22222f5a7998 +9fafb67a402d32a39ea6a5a1946733232b2429443538444c404f434e2b2d +2364a09eb0af9cbedfdcd4d2c0ac435d9b78184e3a32444c307e5a2d263d +2280decfced3d5b241689f252d35333d424737262a3027222c23cbd7ccd9 +c7d7c997c2b7c3d19cceab7d3c39383835424f465345362022372d303332 +312e2c2a2430333659796b43202e2c2b2415272c75a2c59e3b4c44393d46 +2c2125262e292f191f3a4b4767a94a2d1612171b232d282425232f27261f +26221e1c1b1a18151b1a19171616161511131e1d12110d091632597b9eb2 +b79b776f5c86bcd6fcf8ffff4a4665dfcad7573f3b231f24241f1c171920 +26231f1c0b10171c18151b271d040f27190f84f4f377575b4d4e46414145 +484949454140464544434444444344444747484747454041414243413f3e +3b3b3a7a6e6c7275757e8a696b6e66667e96986d7a7b6c8cb9a16c747179 +6b84848d7c7c826f819778646b70667173866769746d736e958350656975 +828c918d7e5c3944867a626863696f5f625e5a606d706b59122c2f29272c +2c2928272626282a2b28292b2a29292a2c2e303131302f31313130353736 +302a2c47546784afcad6e1e73a393b337edfe6b68b236c1f280a221e3830 +2982a6a5e9c69fbb6f9c81200f48573727303a403238332d251e2427140d +071c2a22272e25474044aa8e8a98b6d2dfd4f7478ebfb65bb291800e0006 +151d0c031333444749416f97a4b1bcab973f09002e110a00040d07000014 +19274b3d464843333e20293a2c00142a0801000b4b9cb1afb4a497403f8a +660a5a3a45313d30262f3c3e201255c5b5acb8b39b3c53941a212b323730 +393b393426222b2000a1b5a3b69cb5a76ba28e929e5ca77259312a39403a +2529351a2f3126382626282a292a292b2b362822252826252c202e1f3d33 +241418496eaee196a3a5b5aaae9079706562523431362f2f36343b2c2a2a +2a231d2a403c3f4341363a3b3845423a34322f2c2828292725272a282128 +21232219171c1313110e0b0705000230605274a9cbf3ebffff586371e0d1 +cf864c4e373c3a3a3840352a2a2b261d19201715181b18171b17291b1c11 +2315f2ffb78e95a7b0a9a9a8a8a7a6a7a6a5a4a8a6a4a3a3a5a5a5a1a3a5 +a8a9a9a9a9a4a5a6a6a5a3a1a0a1a09e796f6b7375767e8c6b6d706b6b83 +9b9d748180718eb99f6a7271796c85889182818a77899f806c757a727d7f +927375837e82738e6b2423141119232e3734210d307d7664716f79827375 +716a6e787a735a122c2f29272c2c2928272626282a2b262729282727282a +2c2e2f2f2e2d2f30322f2b2c2e31373a4e4d4a5d86a7bfd0d327262a2471 +d5deae861d63141b00110d2c2e13374448adc6c2ec95a3853b2a4b513428 +353f4331322a221c18232b232e345066666f776a816d5eb282707295c8df +d3f13786cbcc6ecebfd5999f9a9b9265382b2f323437305c7e8898aca799 +411d228b96a7a4a293703d272921274b464a4037303f252a3431215ea29e +a4a19cb6c9c0c0c6b5a3414296720a543844333f2f2429383c241c66d7c9 +bcc5bea24256961c232d323730393a383325222f2d0fb8d0c1d6bcd2c284 +bba9b1c282c78261372e383e341f212d152a2f2538252525272625242526 +31261f242826272c1e28182e1c10152d7391aab02f1b13221d2a140c141a +2a2a1922302c2e363438221d1f1f160e16261c1b1d1b121b201a1f191413 +121412111114120e0d100d08160e0f0d03060f0e131a20262d34342c3959 +4d71a9d0fcebf2ec151a33b5c0c775353216150f0b091109030a10120f0f +18110e11110e11151024181c14271bf3fba16f707a7c7172737575767572 +706f7472706f6f7171716d6f71747575757570717272716f6d6c6d6c6977 +6a696e73717c8768686d65677d97976d7a7a6b8bb7a06b7371796e878992 +82848c798ba1826e767b727d7f92737580787b6d886723241919202a333a +331d0a2f7e75616e6b767e71736f6a6f7a7c755e142e312b292e2e2b2a29 +28282a2c2d292a2c2b2a2a2b2d2f31323231303235373533302b231d1722 +19121a374d59749600081a2178e0ebbb8d21661822041b152e22063b5365 +d1eaeaffc6d9b4583d5c5d3b2a31393c2c322f30313443504c5b5b656651 +4a4a3b5846398b523327364d6577b72791e5f198f6e0e99ea2a6a79c6d40 +2d2c2823211c4d77859bada4963e1c25909baca8a3926c39252a242f534d +534f453b44282c3835235da09fadaa9fbcded7d0d2bfaf5353a47e165e3d +4a3f4e3d323746492f256de1d2cbd5d0b45265a3292f393c413841403e38 +2a24323516c0d9cbe3cbe2d598d1bcc3d08fd48f6e453a464b422b2c381c +31342a3a2a2b2e2e2d2b2a292a372b262c323234382b32203526191a3072 +95bbce5c4d424f4852382b2d2e373220273433364040432b2425251d151f +2f27272a261c2327222c27211e1d1d1b19191b19161619160e16121b1c10 +0c090a1b395e7f98aaa98e70786482b3d6fff5ffff40475ad3d2d6874948 +2b2a231f1b231a15191f1e1c1a231b161919161519172a1f241d3227f8f8 +945b53534d3e3c3f40424544423e3d45434140404242423e404245464646 +46403f4242413f3e3d3e3d3d54484d524e4d4e484b58455c4c5d424c4f4f +515253535454574c5b524e534c5e4b52544d4b4c4b4452585d4e47504d4e +544f545f605b64777d989094845e503a485f566e6065645858596463675a +7f7d3a2f272b2f2d2a2a29292929292929292d2d2c2b2b2b2c2c2f2f2f30 +303131302c293039372d2c3a4c4e6f96b6cad2e9c3343f28404646385077 +202f37321e1e172f371e5695a8dfb35b5467a7be4e00415227221516294c +301a1522171b2908140a2f1a2729355a353d9e827aaac3e3dfdafa950db3 +bea43a809b8a1c000e0817000009293a3e4248607f98a9b3aca356050037 +16070100141500000d171c4c3a2c2c3c181c1715333509082f0e03031038 +9fb4b3b2b09f4d397976055c682a2a4b35343f342f171730c7b4b4afc1a0 +47428b3a172a492a3e2c35402c1b232a290082bda4aeadaebea5b6bc6da6 +60c6875f50356f4b3a443c562a294c2847332c3138352d31362d37273435 +2e3b403a46415146335221141653a7f08c9ba6a9a9a2a276675d674d472d +632f2c3f232b353135320f252f364043494c4d494442403d3b3733302d2c +292a2b2c2b2c2d303333302b2824201a17100c0c0d090000273d4a7babca +ebf7ffff57695db5e3c4b439594734423a3a3936332e282320201d191818 +1b1c1a1720121d1f1e1100a8fff16eada2a3b2afb2a7a2aaafaba4a1a9a4 +a1a6adb0aca79fa0a2a5a9aaa9a7a3a2a4a6a49d9b9da0a09f4c43454d49 +4849454757445b4b5c434d5252525352525050534857504e554d624f5658 +535152514d5b626758515a595a635b544e3b211618122b2735351e1f183a +5d546e646b6f646768736f716284813b2f272b2f2d2a2a29292929292929 +292b2b2a2929292a2a2d2d2d2e2e2f2f30302a2a30322f39464f434f6b8b +a7bfd9af1f2b16313a3a30487016262c250e0e0a24330b1e42479bb58481 +89b2c76b19434b2322191a2b4b2b120c19131d301e3d426d5d6e71799663 +5cac7f678a9cc2d5d8f38900aacdbe519cc5d7a098a4969767372a2d2d2e +31354a647b8fa1a7a452132a9097a2a69f9c7f3d2a221f1c4c4130243116 +211d172a36274ca3a2a4a6a6a9cfc6c6c6c2ab4e3c8582055666292c4d34 +3239302d1b2141d9c8c4bccca74d458d3c192c492a3e2c343f2b1a232e36 +0f9bdac2cec8c4ceafbdc379b777d98d5e4f336b45343c365025244a2746 +32292c3330262b2d242e202f322c3b423c443b4737193d20283e75a0be23 +131416181a2104080e2a22281a582a2b3f252929242a2904161a16161313 +161819191a1c1c1a17151212110e0f100e0d0c0d0f0e0b07040304080a11 +151c263238362d33374074aed1f2f5f1dc16221c88d2bea726402a11180d +0b0a0b0d0e0e0f13161513111111121111190d1a1e1e1502a8f8e0548b76 +707d787b7270787d776f6c756f6c71787b77726a6b6d70747574736f6e70 +72706967696b6b6a4a3f4349464446404452405647573e474b4b4c4d4e4e +4d4d524756514e544f63505759535152514c5a616657505957565c514c47 +351f161c18312e3b381e1b163a5e556e63696b606465706f726488843f31 +292d312f2c2c2b2b2b2b2b2b2b2b2e2e2d2c2c2c2d2d3030303131323232 +332e2e332e211f20200d14263c4d59817a0013082e3e443b53781e2b322c +1818142c3007215268c4deb2bcc9f4fe8d30585b312a1c1928492f1d1f34 +34445a455b536c4c504b5272463d89522c3f41575a67a35f00c5f6ef87ce +eff3ac9db2a4a26e402f2c251e1d243c5b7790a1a39f4f132d969da7aaa2 +9c7d3a2923222454493b333f21251d162d3a294ba2a2acafa7afe5ded7d1 +ccb7604d938e11606b2f385c4240473e3a262a48e3d1d3ccdeb95d549a49 +2538533446343a45301f25313e16a2e2ccdbd9d9e5c8d7dd8fc987e89b6c +5d4079534249405a2c2b4f2c4b3730333a372d2f32293327363b37474f48 +51454f3e224425293d77b0db4e454343434247252021392b30205e313349 +3134332d302e0a1d21212421232628252325282725221f1c1b1a17181918 +1717181815141919150f060a1b355a7d9caaa78a67535986b7d7f8fffffa +404e44a5e2cab839553e252c211f1c1c1c1b1b1a1d1f201d1919191a1615 +2013212628200eb0f9d8457053434b42453e3d454c473d3a464340454c4f +4b463e3f4144484948443f3e4042413a383a3f3f3e423a3b3c393e453f41 +4737453c48373c3d3d3d3f3f414141403748433f41323d3a3d3d393a3d3e +3a3430312e2f2f2829262b3c536064728684979595774b3f2b2d2c162f2a +28261f2220131a271011102523252b2c29292d28282828282828282c2c2b +2b2b2c2d2d2f2f2f30303031302c2a3037322b2d3d4d53769cbccfd7e38a +153935374f3d0622543d26273a3015151b322b4078a3b69c606d6f848536 +0e3345241b1a32507e532221201d23160e0c351d24392e384b1f909d748a +a0dadde2e8d8451c65b5737590947d23000e0d1300000423333740435a79 +91a3ada7a27a1e002d1d000602121300000d1f1e430c468a742a0614192f +2c0904330c000007309ab1b0aeb1a25d3783770e49692c382734603f3d24 +1f1727c7b0b5b0bfa64f398742182c4330344941241612192a260474c4a9 +b3b4b5b7afa4b68bba88ab7069602a4f45372c30343d4720212b1d32343a +3a333b433c3328323127363d322f354738325e31142e7997eb988fb19ea9 +a69f7e67626450372557544d35293a35241b1219241f48464d535756534f +4b45454443413e3a383b3b3c3a353334373a3b3836343029201d17131110 +0e04051d3f4d7aaecee8f5fffa50596396e2ccaa2f5f56373b4043383732 +2d282a2c2f2832393020151820242a3b3362370d76fbff8a9399aab6a4ab +a3a2a8aca8a2a0a4a3a3a5a7a8a7a69e9fa2a6aaaba8a6a2a1a2a5a39e9c +9e9e9e9d372f30312e343b37394232423745343c3d3d3d3c3c3c3c3c3832 +433f3d41333e3b3e3e3a3b4142403a393a3839393235333133382f1e181d +15282d3c31151713272d162f282828252b2a1d242f14120f2423252b2c29 +292d28282828282828282a2a2929292a2b2b2d2d2d2e2e2e2f30302b2b31 +312f3a494d4453708facc5d77801262328433200184d331c1c2f23080911 +291817343f699b85938f92935226353e201b1a35517d4d1c191b1d28232b +3d76626b8175757b3fa09f687281b5bfd5e3cd350a60cc9591aeb9c3a093 +a49f9c6e3c2b2d2a292f32445c74899ba29f722725829c97aba19a803b27 +25271e43134a826c2a0e1d1b242a2344a49ca0a1a1a5cec7c7c4c3ae5e38 +8f830e43672b3a29335e393922232138d9c4c5bdcaad553c89441a2e4330 +344940231511192e2d1187dbc1c9c5bdb2a291a17bae80a6655c551f473d +2f262a313a441d1f281a2d2d33302a303631281f2b2c25363f342d2f3d29 +18492f2450928ab02a05220b16191d08030f242116104a4f4c352b382917 +120910150522110c0b0c0e101012101211100e0b07050808090705030405 +00000000000002030d1118222f37362e29394171b2d7eff2f1ce13162368 +d4cba2204a3b161615170c0d0c0d11161f25202c3229160b0f171d233630 +62390f76f6f577747179816d746e6f767a766e6a706e6e7072737271696a +6d71757673726e6d6e716f6a686a696968352d2e2f2c323934363e2e3d33 +402f343535353535363638352f403e3e4135403d40403c3d4243403a3839 +37383831312a272a312b1c18211b2e344033151711292f182f2928272328 +291c23311717142925272d2e2b2b2f2a2a2a2a2a2a2a2a2d2d2c2c2c2d2e +2e3030303131313232312d2f332c201e211b0b13293e5263834a00151723 +45380521553c2424372c12171c2e1a1b436397c7badadcddd079404c502f +25223a5582572a303941504f4d4c724f4d5b4d54612a867a342a274d4f62 +7f8d1b1888ffd2d0eaede7b29eb3aea67645322e251c1f2237567088999c +986f262a87a39fb1a59a7d3725272a264b1d55917934111c1a282d2443a2 +9ca8a8a3ace3dfd7d1cfba704a9d8f1a4d6c314638416c47472f2e2a3fe3 +cdd4cddcbf654b9651263a4d3a3c5146291a161b31351a8ee3cdd7d9d4d0 +c0b1c096c697ba766d632d544a3c32343a414b24242f2134353b382f363d +372e24333330404b403a394530215032234f969bce573650374243432a1d +23342b1d155155523d37433320170e151c0e2f2120212122222121202322 +211f1c181619191a18151314110c0c1314151005071a33587a99a9a78859 +535984bbdcf5fdffef3c3f4885e3d3b1335d4e292828281d1b1b1a1b2128 +2e2b363a311e13141c242a3d396c451c80fcf3695f4e4e4f373e383a4349 +453c3b41424244464746453d3e4145494a47433e3d3e41403b393b3d3d3c +302c2b25213140393b382d2e2e332f313131303031303030343039353437 +28281e1c18161a21231f1f180a0c150f0c14101b3551636c7c8b9099958a +603b35231c18081814181610001d170014819b35141c282e2a25282f2727 +2727272727272b2a2a2a2b2c2d2e2f2f2f2f303030302c2a30352f292f42 +4b5a7ea5c1d5dcd65b1c322c243e3434212f230f262d26211a0d2b3a305f +a49936051511141a010a284133262440496e561819111823061a1b251941 +343d43285eb086739ca0e5e9eff67a2c172a5b1507030a0b0000000b1100 +00001e2b2f3d3d4f6c869ca7a49f9a3b002328000500111500000e241c35 +3e34686f410008252e240e003c0d0400002793afaeabafa65b1d7573112e +662e1e275c664f431a19181ac5adb6b0baad5c2c804e192d3936477f6720 +131c223722155ed0b4bcc2c4d5e8d0e7ddf5e1cb6a7570303b37271a2d51 +4e6c1d222b2a29262b2a252d373329242a29243c51461f17211a224a2810 +1882bcffc6a2ab9aa7aa9d8665676152553533363832516961201d291d23 +29385b656d6e6f6d686764676a6b6c6865635d5b5a55514c4b4e55555252 +524a3c2e29231d1818180e0d17485377b0cfe3f2fff9554b5c60d1ced454 +4f492b353b323a37312b282b323840494f402816151b2c4e705da75a1e31 +f5ffb1809babb1a6a7a5a5aaaba8a4a3a2a5a6a5a3a2a4a69d9ea1a5a9aa +a8a5a19fa0a4a39f9d9f9f9e9d211d1c161323322e302f2629272e2a2e2e +2e2d2c2a2929292b283431323729291e1c18161a222423231e13151e1916 +1f171b242c281c181d1f2c353a220e17131a1c07130e0f100f0123200718 +829833121c282e2a25282f272727272727272729282828292a2b2c2d2d2d +2d2e2e2e30302e2e3130303e4d4a48577594b3cccd49061f1a1530282b17 +2519051a22191512051e25112643472e23362f252c1d20293a2f26244349 +6c521315101e2f193e556a638c7b7d754b71b47e5f8483c5cfdfeb691a08 +2b7b402c242e4b6772969d9e74402c2c26252f2d3b506880949d9b8c3d1b +76a491aca09b833c24262d1c344236606745031227221e213ba99ca3a49b +a0ccc7c8c3c3b25c1e817d1128642f20295b64493f181d222bd7c1c6bdc5 +b4622f82501b2f3936477f661f121b2236211564dabdc1beb1b1b896a9a1 +bdb0a04a5a581b2b2b1f142c504d6b1a1f2525221f211f182028241a1720 +22213c53481b111a0f0d37241a308fa1c651141c091419170f000f1d1e30 +1c242f373253695715162214120b091712100e0f111313101111120f0b06 +0400010101000000000200000003040200080d131b2933332c2243446cb7 +ddeaeef5d01e0d1c32c5d1d0493e320e131207100f0d0d111a252e394348 +391e0c0c1222476b5aa55a2033f5fda365777c7d6f6e6e70767976706f6e +7172716f6e7072696a6d71757674716d6b6c706f6b696b6b6a681e1a1913 +10202f2a2c2a20232128242727252423222121212625313033372b2d201e +1a181c242624241e12141d18151b0f111c24241b1a202331393d25111914 +1d1f0c171012100d00211d061b869f38171e2a302c272a31292929292929 +29292c2b2b2b2c2d2e2f30303030313131322f2d2f302a201f23140a142b +435a6d7e2300111010302c30202e220e242a221f1f12282c163566775f5f +8587776e44383e4c3e322e4c537761272e2f40554158565740634f585a37 +5e9b50202e1f58617d9c3b0e1f5bb684736b6c7b8080a5aaa77b47322f23 +1c2420324c667d8e9390893c1f7cac99b2a39d823a212832243c4d426f74 +4e0511262422253ba69aa9aa9da8e0e1d9cfcec070328f891d3267332c38 +6972574d25282b32e1cad5cdd7c6723e8f5d273b43404f876c251720243b +292170e6ced5d7cfd7e0bfd2c7e0cebb5f6b682a38372a1e345855732326 +2f2c2a2729271f272d29211e292a2c465f54291d2215143b25193095b4e6 +7e4448323e423c2f18252c2a38222b363d3a5f73601d1d29191a15192c2c +2b292a2a2a2a2a2c2d2e2c2824221d1d1d1b1816171616151d20231c0e0a +1b34587895a8a587505a5b7dbfe0f2fcfff04534414ed1d8de5a50442024 +24181e1a191719222c36414d5041261411172a4e7263b0662d3ffdff9a52 +57524b3937383c444845403f3f424342403f41433a3b3e42464745423d39 +3c403f3b3a3c3c3b3c2929281e1b30443f4137322c2b2e33313334343534 +312e2c38383930353a332a221d19161c21211e26301d12150c0a1014263f +57697584909c9e93734536352109171a19172020152213160a009bdc3d15 +1f2c302b25272d27272727272727272929292a2b2c2e2f2e2e2f2f2f3030 +2f2c2c30312c2932454a6085afc6dbddbe2a2e2b303f455cf0af5e293629 +2f4215190f2236294c9e9b5f201613171e14221c3c372622362535441d16 +0c141a08242806294a404a3139ac8c8180a9c3e4e5ecb5192f1a27170019 +080c0607000704100200001b252a3f3a47607b94a2a2a3aa5900242f0102 +00101a00000a23192b203b78774a21221e312112003c0e0602002390b0ae +a9afa987327f9027296030294c754f8d4d23221b11bcacb6afb4b26e2175 +5d16292d374d816b220e1e24271e1e41d1bac1cccf577b7983818286685d +5a5d403f36293152a252753d1b2f31201c1e1d181c211d1a1d1f2326476d +6438120d1927342020175ba5c7a4a798afa8ab9b9167685e554e35282133 +516259592c04221321374473828d8e8d8c89898e9193969797949397948e +867f7a787a7a7672726f65533f322b231c1b1c140e22575a73aecee0f3ff +f54d516d61bcafd69546482e3d3f343b362f2824272d32211f2020211e1b +191e39431743161508ddffd482a5a1a7b7a7a8aaadadaba9a8a5a6a7a5a2 +a1a2a49f9e9ea0a4a7a8a7a29e9fa3a4a19fa1a1a09f1517160c09213531 +362c292524272e2c2f30302e2b2825232f31312c313a3229201b14141a21 +211f2734231b1e151416171d262a231b1a1d2b34372811121f180a1c1912 +0a11140c21151c10009ad736131f2c302b25272d27272727272727272727 +2728292a2c2d2c2c2d2d2d2e2e2f313130312f324150454b5a7b97b9d0b6 +191a191f2d3750e5a4541f2c1d23350b16091221101c434a4b3235322b31 +2e341d35332622382534411a1610222f254f6751769685845c52b1836e69 +91abc9cfdba6061d0f2e4334472f314479859a979d7943292a2323352b34 +445d788f9c9d98571373ab9aa99e9b8a4425242c192a243d7071512c2e20 +2216212fa69aa5a79b9ecacac9c0c2b788338b9a27265e312b4e744d8749 +21262522cec0c6bcbfb97424775f182b2d374d816a210d1d2425181b43d5 +bdbcb9aa1a2d1d2120232e1d273138212929222e52a555753c1527271912 +1310090b100c090e141c23476f66340c0a1216241a212258797125150b21 +13181315000f151d261a1717305465595222001d0d10160e231f1b161519 +1c1c1a19191716120f0e1617171817191e201b17131418171109080f1217 +232f2f272a524866b7dde9eff0ce1b172f33b5b7d68f3a36161e1b0e1310 +0e0d0f1621291a19191917141210142f3c114014140ae1fec96b82747380 +6e71757a7b797574717273716e6d6e706b6a6a6c707374736e6a6b6f706d +6b6d6d6c6a1415140a071e322e3228241f1e21282626272724221f1c1a28 +2b2e2b323c372e251e18171d2323212935231a1d14131410141f24211b1c +202f383a2c1516221b0e201f191116160d1f121a0e049fde3d18212e322d +27292f29292929292929292a2a2a2b2c2d2f302f2f30303031312f2d2d2e +2f282122250d0a15304762746d00110f17293450e9ac5d2a37292d3e1421 +171f2a142862757e72888d8175534a314542322e443142542f302d3f4e45 +605c324a65565c413d9b62361b313f5e6a8b6d001d2f64827b947e787d9b +96aaa1a47d492f2f241d2c242e415b75888c8f94581678b3a2afa39e8b44 +24253121322f497f7d592e2c1f251c242ea299a9ab9ea5e0e3daced0c49c +4799a6332f6135375d825b95572e312e29d8c9d5ccd1cb8433846c243737 +41558970271222262a22264fe1ced2d5cc445d4e524d4d543c3e43493035 +332a375aac5c7d44213432211b1b191013161211151c242c517b72431a13 +191c271c2324619094524435473d423937172526282f211d1f375b6e635a +2a04231118211e3c3c3c393838393b3d3f40403f3d3a393f3f3d3b38383a +3a312f35393a311f161e37587590a5a28358696078bee0f0fdffed403d54 +4dbdbae29d4844242d291b1e1b1714141c252e222321211f1c17151c3744 +1b4b212217ecffc55b644b434a37393f454a484544424344423f3e3f413c +3b3b3d414445433c38393f403d3b3e3e3d3e25282a1f1c324846483d3f3a +2e30393537383a3c3b393633374240383d433d2826201c1e242524213254 +371a16131b1c1c334a5c6e7e8f979fa08c5a36372e1a14111a1c2627241e +1d03131d0ca3de451b232b2d2b28292a2929292929292929292929292a2c +2d2e2e2e2e2f2f2f302f2b2c302f2b2b364949688cb4c8ddd69924372831 +301b26cadb70235c225094250e141b2a2b3d7e9c7535171a2525100b314f +3f31314431383a33201817151d271a1f34375d3424899e819898bfe2e7e0 +e361221a2615070504020f021111150a0c050000192227453a40536f8a9e +a3a8b179001e280900000a1c0000071f1a30352c2d36212f2b1c39271800 +320c0300001f8bafb0a7afac81235c8f28234f2e333a484fa8421f101d0d +a8b1b5afb0b4801f676d132128354558553019282f1d202327c6bec2d2de +738aa7a4a69c9e94695a574d3f3b242d376e244034173126271f21221c1d +1f19131b1b27253d64564019121c28251d1c2c436e7f93b09faaa8ab9f96 +6b685b56453030212e5c4e3e7ba2131d282323588297a4a6a5a7a3a3aeb0 +b1b0b4b6b6b5b7afa194877e7b7a807b767572685542342e261d1d1e150d +32626172a9c9e0f6fff1364a665e77506ea138402a363b4237342f292524 +27291f1510131c1f1c162029290a0b0d2e0b9dfbf18da09fa5bfabadaeae +aeaeacaaa9a6a3a2a2a2a1a0a3a09c9ca0a5a9aba5a09fa4a6a4a2a3a1a0 +a01014160d0a2339383d3236312729343030313333322f2c292e3b383439 +433c27211b15191f23232233583c1f1e1b232019222927201e21252e3937 +18091a1f151916171112120f0f150215210da1d73e19232b2d2b28292a29 +2929292929292927272727282a2b2c2c2c2c2d2d2d2e2f32333231313745 +52434f5d7f99bacb92142215201f0e1bc0d06419521644891b0c0e091312 +1230505336353f3e39271d31473c3131463337383425232b3142595f6d82 +81a0694597996f807ea6cdd3d0d351100d2029414b3f32383f819ea99d9a +7d44272a21213d2f313b53718c9ca19e73166ba3a2a29f988e4b28212a1a +2f372c27332a3d371e291b26239997a1a49f9ec7cacbc1c2ba8224689928 +204d2f353c474da23e1d14271ebac5c5bcbbbb8622696f15232835455854 +2f18272f1b1b2029cabfb8b5aa24263023231d252c1d1f2424232a1d2e3c +752b433211261a1d1516150b0a0c06000a0e1d223d66583c12101a1d1914 +182a2f2f1b0a1a152013161319000b111c1b121f172b5f513e749b0e1b22 +0f001925232019171b201d1c181412100f0f111919181515161c20241f1b +1b1e1c150e0a121516212d2c22395d4b64b4dde9f2f4cc08162a32745e72 +9f3032141a1a1e1111100e11151d231a120b0c1215110b161f2204080b2c +0da3ffe97a7e7371887276797b7c7c7a7875726f6e6e6e6d6c6f6c68686c +717577716d6c7072706e6f6d6c6c0f13150b08203635392e312c21232e2a +2829292a29252220273535333a45412c27211c1f25282826375b3f22201d +251f141b22231e1f2225303c3a1c0e1f261b1d1a1e191b19141213001420 +11a6df451e252d2f2d2a2b2c2b2b2b2b2b2b2b2b2a2a2a2a2b2d2e2f2f2f +2f303030312f2b2b2d2c27232425090d17334966724e001d0f19180819c1 +d66e245d224e9124171a171d1519467686798b9a9278472b3d54473b3d52 +40474d493b39434755604c46524c6d3f287d793f36213f62707b982d0217 +445e80918f868880a7b2b7a49c7e482c3126213a2d2e3b526c80898f9873 +1871abaaaaa49a8e4b27222e22374338353e313e351d2c1f29249694a4a8 +a2a5dfe5deced0c7963876a534295033414b555bb04c2a1f3025c4ced4cc +cdcd9631767c212f323f4d605a351d2c3120222b35d6d1d0d3d0535a6659 +554a4e4d373537342f342433427b334c3d1f3628261d1e1e1310120c0612 +17262b4772654d221b1f211b15192f3b4a41384739423b403a3b18202228 +251a251f32665a487ca314202618082c424647433f404242494947454545 +45464c49443e39373a3a39363c3f3f36231a203a5b738da29e7b67736275 +badef0ffffeb2c3a4c4b7b5e7bac3d3f212825281c18161313181e25211b +12141a1d17111e272a0e13183a1ab1ffe76b624c41523b3e43464b4b4947 +45423f3e3e3e3d3c3f3c38383c4145473f38373e403e3c3f3d3c3d242527 +201b2f474b514a5052363a3f3a3a3a3c3c3c3b3938334e514f55574f2d1d +19171b21232325adc27025120d1f242d465b667384959b9b9a804c36321f +1f461e1e233830292e15212227316c6a0c1b2128292a2b2b292929292929 +2929292a2929292a2b2c2d2d2e2e2e2f2f2f2e2c2c2f2e2c3039494d7091 +bbccddcb6e2f26263a3339407ec79820572e2147130c17222a34385a8f71 +3a0c0611141315416444413e423a342d2d1c1b17162b27152d3037441258 +ae7da2a8b9e0d1ebf49937522118090000000a1400000e05000c09000018 +20244b3f3e48628097a0a8b18e0a0719050000091c0000051d1d3b4f3f4b +71422f2e504139280028140100021b84abb0a7b0b08c2e5799423059494d +3920242d1a42391c0f8bb9b4b0b1b691285b7e131c2f353c37413e2f363c +2a251f13b2bcc0d0e98c8fb4aeb7b0a5a3777163553d55332324111b2825 +373e27281d1f241f1e1f19151c1a2c222443323429291f2626261323526f +98b7b1b494a9aaa49a74645c5759333329203e334631700119232634598a +a4b5b9b8bbb6b3babbb9b9bcbfc1beafa08b735d4f494a5655535150493b +2e2c2b251b1a1e130b385f6178a4c4e2f8fff43540424755554295331f1d +31333d30302f2a262628292f29251f1e1b1c1c181923231520250048f0ff +a292a9aebab2b2afacadb0aea9aaa6a2a1a2a2a19fa7a39e9ea1a7acafa9 +a4a1a6a9a7a5a6a1a0a00f10130c091d383d433f474b2f333a3533333333 +32312f2e2a47494b51564e2c181210141a1e2124aec3742a17152726252e +32291f2024272d38320f0f1b151e4b21191321150e19091d222931676002 +192128292a2b2b2929292929292929292827272728292a2b2b2c2c2c2d2d +2d2e33343231343c4851445561839bbac1691e111329222c3272bc8c164c +22153b0c0b110e101a10184a412b2b322a262824405d42403e443c352e2f +232b313a575f5d7d7e80834172b4708a8a9dcac0dde78a2640161a274149 +454340386f9a9991988146262b21224536303248678498a09a852952929e +9aa098904f2c21281d39513f456e4b3f3d52312a31248c9c9fa4a49cc2c9 +cdc1c3bc8d2f63a3422d574a4f3b1f222716403d26209dcdc4bdbcbd972b +5d80151e2f353c37403d2e353c2926241ebcc4b8b3b1341e2d1b231d1827 +1a2926251c412c272d1c242c233031191c1212150c090a04000b0d221f24 +46312c222920201c1c09162d232525182a0d1413161803050f1b2e162020 +1e4137492b6b00171d13081423232219171b1f1c1e1815100d0d0f120c0a +0400000000030c0804060a0a06030b151818222f2d213f574967b1d9edf4 +f5d10c11091d56684b9530150c17151c0f10101114181e232a26201a1411 +11110e0f1c1d0f1c230051f6fe90737f7c837a7b7a797b7e7c7776726e6d +6e6e6d6b736f6a6a6d73787b76716e73757371726d6c6c0e0f120b071b35 +3a403b4245292d342f2b2b2a2a282725242341464a525b54321e19171b21 +242629b2c7772d1a172925222a2e261f2026282e39321414231e26512820 +1d2b1e151e091a2028336d690a1e232a2b2c2d2d2b2b2b2b2b2b2b2b2b2b +2a2a2a2b2c2d2e2e2f2f2f3030302e2b292b2a29282722091219384e696c +290a100f221b242f72c296215a2e1f4513131b1a191b11246773707e897c +64432b46644746485049474244363b4046605c47564c494e134f92434a30 +325b5884a361144027415d7d8f979c97819cb1a592977f4a2b3226254737 +3034476276838d94862c579ba6a2a49c904e2b242c25445d4b5379523f3a +4f322f36268a9aa2a8a6a2d9e3dfced1caa14371af4e365a4e5b4a2d3035 +244d482f27a7d6d3cdcecfa73a6a8d212a393f443f4643333a3e2e2b2a24 +c5d1cdcfd664526552554a424b353f3835274a332a32202b373040432a26 +1a1b1c1210110b0711162a282c4f3f41343525221d1d0a1d3e414e54444c +2e3c3e3e3c1f1b2127371b2625234640503572041c21191729414a4e4743 +4748474e4d4a474647494a413a2f221814151519182125261f100c1e3b5d +738da19c776b6e6179b7daf3ffffef2e332a335a66529f391e16221f2316 +15151414181d23302f27211c191717161724271b2a310e62fffd8457574b +4b41424444484d4b4646423e3d3e3e3d3b433f3a3a3d434849413c393e43 +413f403d3c3d272324201a2a45515f616978474d4c494c48423c3938393a +335b63687177754d2925222326282c33fefb8129170c17183653686e788a +989a9d8f6d423b2b1844926e6a44443b2f2928140d33491d141a1b232b2b +2a2c2b2828282828282828282b2a2a29292a2b2b2d2d2e2e2e2f2f2e2d2c +2b2b2d343c46527895c0ceddc1494231292a2331313578771b42411f4257 +1b11282e353b467f95631a000000111e2f5a2a2f28213432391413191925 +2a2528202d3818328f8d76b2b8d2ebcfe5b22420452d0c10000000040e00 +001a08100c0f0000181d224e453d4057758c97a4a7993400220900011522 +0100061a1c3f4729272f1913100c3b3f2e001e1e0301021379a5afa9b2b3 +9d3d5d894512423b20304b463335432217116ec2b3b3b5b89f35538f181c +3f3b2d2d2f302d2322282a140396b7b9cbf08a92adadb9b5aa9d6a6d625c +4477553c47284040354d39292719181d19181c18191d132d211b42374747 +4936373241332352879fb2a6b59cada8ac9a7d5f5e584e3633503d352934 +2f3a2333232742418aa9c0c3c4c7c2b8b7b3b5b6b7b8b7b4aa987a5a3f2d +262a2c2f2d2d2c28221b1d1f1c15141b11082e4b5a7fa5c1e5f5ffe53e47 +43485d92617c580d2238373e2f2e2c28252327291c1b1e1d1f2125282e29 +281d212623180adfffc693b5b5babdbbb4adafb4b1aaabaaa9a6a3a3a5a7 +a9a6a4a5a8adb0b1afa8a4a8acaba8a8a5a4a4120e100c08183643515660 +7140484744454139332f2e2f302a545b646c76744c221b181c1f232a32ff +fc852e1c111f1a2b373b2d1f2226263131230b1817124696716030281b10 +10180c0d354918080f16232b2b2a2c2b2828282828282828282928282727 +2829292b2b2c2c2c2d2d2e3534313037414c4e485b63869db9b645311b15 +18122423296d6b0f36351336501a0c141317130f4157453b2d110e262e2f +55262f292436333a191c2b374e5c6372707b7f545ea48e669799b7d5c2de +ab151135251335515241453f3e6da69fa6988647242b2021493f312c3d5c +798f998e8d51409ba0a1a6a496512f22251c3d4728212c24231f0e282e36 +2580a6a1a6a696b9c4cbc3c5bf9e3e6993450f403c22324a442d31412621 +2280d6c3c0c0bfa53855911a1e3f3b2d2d2e2f2c22222c35281bafc9bcb5 +bd352023141d1a1417031b1a231e62504155374d4734442a181b0e0b0e06 +030501040a06231e1b45363f3f4b39352937240c232c2219092e17160f1b +170a000f1a20171e453b382d372c3722321d1213001d20201714191d1b21 +201c18151415181b170d020000030700000000000000010d181c1d273533 +243743426eb3d9f0f1f2c4191a0c2162a96c7f570612231c1f0f100f1013 +181f231718191815171a1d231f21171b22211a15e9feb5758b838385837d +7a7d827e78777675726f6f71737572707174797c7d7c7571757978747471 +7070110d0f0b061633404e525b6b3a42413e3f39302a25242526234e5863 +707b7a522923202326292f37ffff88311f1421192934382b212326273131 +240e1e201c529f78693b34261814190a0b344b1e12171c252d2d2c2e2d2a +2a2a2a2a2a2a2a2a2c2b2b2a2a2b2c2c2e2e2f2f2f30302c2a2727292c2d +281f0b171a3c506b6406211e14140b1c202973751b44411d40571f121f1a +151112568a8b8a806149392d2d5227312e2d43454e2c2d373f505b585b4b +49471e2b7b622b482f42655c9077000c3f3d3d6a8b9693a19b8c9bbfa8a5 +95824b2a3227264d43352e3e576b7885878d5546a4a9a9aaa896502d2529 +244853362f372a231a0b2a3439287fa4a2aaa79ed2e0e0d2d3cdb252779f +4f1643402e4158523b3f4e312a298adfd2d0d2d1b547629e262a49453535 +34353127242f37291db3d3cbccde5f53574a4d463a3820322e342b6b5644 +583a535142573f2b271612150c0a0d090b100f2b27234e445454573e362a +362714354d4c48344e363f3b4239271622272a1d254b403d363e353e2737 +2119230d3d4a5049454a48464e4d4b4947474748473e2d1b0e090a0d0102 +0b0f100c03041a395a728da39e786258587eb6d9f6ffffe13a3b2b3665a3 +70885f0e1c2a23251412111011161c231d21201f1d1f20232b2729212730 +2f2927f5ffab5b65524b4c4a47454a514f47474443403d3d3f4143403e3f +42474a4b473e3c40444342423f3e402d2222211a2845596f777f95576259 +58615b4e403937393b356268717e8c936f29231f1f1e1f27307e7f1d0017 +15201d2d4c666e7c909f9fa3865c373b221b72e4e9ea8a64594324291a18 +1111031e161b2833312c2b292627272727272727272b2b2a2929292a2a2d +2d2d2e2e2f2f2e312d29282e38434b5c8197becedbbf392f3d3428353430 +4e4c372d38173ea8873a0f292a29363971936e1f0000001018305a151f1e +23617160111a1f2237242538283728238a98766ca2d2d6d8f6e429082932 +1b14000b0000010600000f00040e12000013171f4e4a3e3d506c84929ea1 +a06506502d262235360b020917143b4b336d99720e072125352700172503 +00000a6b9aadacb1b3923662825d1b5d60351f39214f3a252213155eccb5 +b8bdbca83f509a1f214d41324233272c1409293316038bb5b3c1ee799bac +b2b6b0af957b75636342704934294029303838232931201d1f1a191d1b19 +16092724265b5d5c4f4f413c26454e2b368f8faabbab9fafa8b19b856064 +5b4d44295c503f3b293428321a27212f4c81a5c0c5c3c6c5b9b6b4b5b6b7 +b5b1acae997a5a3c2c25282d2e2a2826272622181c1810131a140a223b54 +86aac5e7f2ffd338404630234f4638750619262b3a302f2b26212125283e +352d2c2c2b231b13222f1a3625193400cef5e49fb7b4c4c3beb5b0b6bbb6 +aaacb1b2aea7a5abb1aaa9a9acafb2b2b2b2aba7aaaeadaaa9aaaaa91910 +100f0816364a616c7790535e58545c5345372f2d2f312c5b636d7c8d966f +261e18181718222e7d8021011b1b241c202f35281e222828392c18091e15 +1874ebe7d365372d1d06140e120f1100120a162833312c2b292627272727 +2727272729292827272728282b2b2b2c2c2d2d2e333231333c474b49495e +678ba0b9ac2b1c271c1324252243402a232e0a2a866520000f0f0913123d +4a3d3728040120273155111d1d2360726318283644655a6582737b624da4 +9e6c5788b7bfc7eadc21001f28181c20584c43473c43689f8e9f9b894d27 +2e22204c44322938557187918a947a40b2a8adaaab964f2e23221939492f +69997f20132312242c1e71a59da5a693b6c3ccc3c7c4993d6e8a5913585f +3723381f4d3825261c226ddac2c2c5c2ab41529c1f214d41324232262b13 +082d3d2518a4ccbfb8c72d2b1f151410191210201a2a1c5b4439344e3437 +362f161b23130d0e070408060605002021255e5d53464f443a203b3f160d +4527272e2717160d1e150e000f16191f0f4d4b3f3f2d33232b101d0d0908 +151a1a100e1415131d1e1b1a16141314201b0e0200000409020100000003 +060908151c1f2a3835252a323b74b3d7f0eef5b21317180f215b4f3f7500 +0c12111c0f0f0d0c0d11191f39322a2725211810081725123021153601da +f9dc8590808b8f8c827b7e86847b7a7e7f7b7472787e777676797c7f7f7f +7f7874777b7a77767676751a0e0e0d061433475e68748c505b5651595040 +30262426282555606c7f929d772d241f1f1e1f2833828224021c1b251a1a +2931281f252c2a392c190b221c2380f3f2e3774b3e280e1910141013041c +141c2a35332e2d2b2829292929292929292a2a29282a2a2b2d3030302f31 +30302e2e2b2422252a26190f1c1b3c536f68000e291c101d1e1f4144332c +371435967329011c180c110d49777e7d704e3830242c511020252f708476 +2a333c435b4c4d614c4c301d75723914314c4f5f949e000020312d415090 +9199a79e9599b7929993834c2a3528255148362b384f63738084947d42b5 +adb0aaab954e2d24261f44563e77a385200f20142a302071a49fa6a699c9 +d9ded1d2cea94d7c97671e5e65432f462c5a432f2f232874e3cbced2d0ba +4e5fa82b2d574b3a4a3a2c31190d303f281ba8d4cbcbe4545b544c463e3f +322c372d392762483c36513a414340282c301c17160d0b0f0d0c0b032728 +2d6569665959493d203c421d1b604a51584c3d423948382e142428252718 +54524748363b2a33182516161d37444c45434846434c4c4d4a4a4646434e +41301b0f080d0f09080b0f0f0f0b0d1334597490a69c744f455084b8d9f7 +fcffcf32353422265b54477f0a161d1c2416140f0d0e111b223f39312d2c +291e16101f2e1d3c2f234515e8fcd16c695156555149454b54534747494a +463f3d434942414144474a4a4a48413f4246454241444443212a1f1c1920 +465773798997806d766a6a67513b3b3d3935295b766d8a969f872f29171f +27232a2015070811131719163e475c7487929fa8997447312b261464cdc8 +ef7b87693b34202520101f4a4b1d1d272e2b2a2d2d2827282829292a2a2b +2b282625272829282b2d2c2b2d32312e29362d1f283949566687a1b0d0d6 +9356483f38302b2d343a424a1f1b333dc18e6c4221232e2a2b439f902b05 +1511191e244b2c1a233f675e61190c2d2e252c2a3a421e1c71a08571789b +cfd4ddfc6b0a132c4315230b0c000000000000030000131500000b111030 +4d35354c627893a49eab7a2d0a030000000d08000e13162a46434b7b6516 +060f3040190718220000000a4aa6abb0b4a9953b488a74183e651b122b47 +697a48111a1758b7d4bcb5c6a35d3f71421930464a738a5f1d0a1e2b3120 +1177c9aabed3917caaafbbb79f8571666457433c3321192636508411292a +28211a16181a1916150e10222b1f25443328251f11223d3f25315748a5b1 +a6b0acb7a2a594696664574b34443e3d3349695e3427271b1d386ab1b5cf +c9c9c6c7bdbcbdbdbdbcb9b7b5ac927153463d3933312b2b2d2d2c262522 +1519141520122d445d84b2d4e3f3ffe7392a3736343b2a07a5151d152b26 +272a2c2d27212427375034372f31201f20213f3a643f302a057bf0f898be +c7bec1bcb9b8bfc2b8aeadafb2b2ada6a8aeadb0b2b1afaeb1b4b5b4b2b1 +b0b0afb0aeaeae131c110d070e3448656e81937e6e796b6561483130322c +2a2054726b8b9ba68e372d161a1d19211b13090c1517191913342f2b2820 +1a222f30220f0e171d1167d4c0c2393e270c13020e10091e49431318252c +29282b2b2625262627272828292b292625272828272a2c2b2a2c31302b21 +343a343f494441405b7688adb4723830271a14161e262c2f3b1b17241773 +35230900071010171c4b4c321f0900202d26482815203b635f63221f4a54 +5563687f844e3a7b986f565d85bfc7d2f25e000c2b4719241e4344424039 +3d7099a4a3a48f512c382a172e422521374e6683948ba0834a3d4647473e +46321e22211f2d3e3b4b84782a100f20311a26639492a8a8a0abe0cbc4cb +c2ae4f548d6b0b34621d162f4a6c7d4b141d1c5dbad7bdb4c5a35d3f7140 +172e444871885e1c091d282b1d1381ddbcc4bf53161c0b1416120c0d1520 +2322292d221e2b3950810b21201c140a07070909060602071c291e244127 +1c221e0f1c32331a223d195948241c0f190c1a16000815181b122e323c36 +4d6852190b17100c0c0c2c111c18181316141516161615141418180d0000 +0000000000000305030000040f15242a2f39242e36446fb0dbeaeff2c315 +081c1f202f2f10a7111002100706070c0e0c0a101a324f32322928151213 +1433305c392a290b87fffc84968e8595958d84808487847c7c7f7f7a7375 +7b7a7d7f7e7c7b7e8182817f7e7d7d7c7d7b7b7b131b100a050a3043626c +7f9481738070696349302e2e26241b4e6f6c8f9fac943a301b202521261f +16080d141618190e2a23242824232a3634240e0c18221870dccdd9555c42 +1e1e0c181a1024514e1e1e282f2c2b2e2e292829292a2a2b2b2a29242423 +272a2d2d3032312f323635322e392913131c1c160f1c27335c74451e2423 +18111119232b313e1c1829248d51371a0e161a110e1d6c7f66584b33302a +2143271b2b4c7a7478312546453d444150542414597446211630606982b4 +34000229482440487b8b9ca6a395a5b1a293958449293b2e1d3346262032 +475a7487879e8046383f40403640301e232424364d4a578b7c290f0d2136 +1f2b669592a8a49fb4eed8cfd1c6b358629c7c1c3f6b29213a537584521b +222061bfdcc2bacbad694b7b4b22394f537c93662411253135281f8be6c8 +d4d8784554474c483c2b25262f2f292d3126223140588a152c2b261d140e +0d0f0c0909060a202e242a4a35282923121e36371e294a2d777054504249 +39413b1a222a2929203a3c443f56705e2a1a2218161d2e5946544f4e4a4d +4b4b4e4c4e4b4c494d483a20110c0f0d0a09070b10110b0a152f537d97a0 +9d6c4d455780bbe5f4feffdd2f202f2f2c393517b31f22152116110e1113 +11121b24385437362d2d1d1b1d1e3d39674536372197ffee6b7363505854 +504b4d514f4a44454848433c3e44434648474544474a4b4a484746464546 +4646461e261e1b19204556727a8a9a86737b6f7371583d3b3a36322e5b79 +708a96a18a42371a171e1e2b2921180f0f16171920404b61788d98a3aa92 +6b412f28221567cfc3e9747d6f4431302a1a2173d6ae291b262e2c2a2d2c +262829292929292a2a292726272a2b2b2b272a2a2a2d32322f2c36291d29 +3e515f748aa3b2c2d2765f554941352c2b2f35505723212d42d1b686572a +232a262139969e46192217161d2f453c4b4a38364a542321393129302d31 +24214384a9966f9abed9ecdc9f282b20262f0d1810150000000000000200 +00141b0000040f113538313341547395a2a1ac8c49190a0402000b0e1324 +2218243133437c6f230c102f33170415360b04000a419dabb3b6ab9f4343 +8b84163756251d384e5f59301b201312130c0d161521191233181a363b3c +56664b20161f2031271865c8a8b6caa777afb3bfb8a48f6b636257423832 +221f468062892c2b162d251d18191916131310121c201d396a753f110715 +323c260f25384675ac9db4b1baa9ab9c746c6959523d322220335d545f6d +272216172b5cadbed5c9cccbcac7c6c5c3c3c1c1c0bdb8a689706359514d +4438302e30393830271417141520122e455d85b6d7e5f3ffe84438332c41 +622a209a42152820322c2e302f2b26272b293e2326212721212323373554 +362927013fedeec0b7cbc2c0bbbbbdc7c9bcb3b3b3b3b5b2adaeb2b7b8b7 +b3afafb2b7b9b9b7b6b4b3b3b2b2b2b2141c100d070e3447636f81958576 +7f71706b4f342f2f2827235375708e9eaa954d411e15141322231f1a1315 +1817181b37312c28201c24312d1f0f11181c126adabbb4272c29150f1210 +081a76d9ab2116242c2a282b2a2426272727272728282a2827272a2b2a2a +262929292c31312c21303836444d443f465a7d92a5b24d3a3a3222161419 +20253c4722201d126d421f0900060e10171a40513f230800192c34443846 +4433324b592f36585b5a67686f5a4451798f744d7faacbe3d4941a1f1b28 +3916181c404044413939658f9a9c9b8a4f29342818302c1f213041618391 +92a1894e281f1d1b121d1c1e2d2b2329262845898437150e202416205aa2 +9dada9a0a8dbc7c1c9c4bc5c4f8d78092f5327243c52645e331e21141113 +0a0b121320171031161834393a5464491e141d1a23191269dabcc3be7117 +210d161719190912202521282c2320497f618327260f21180d0705060603 +040409181e1c386769330c05102c311b0923363240521a1b121c121e1a00 +0814141d171a151d356154514a01100f100b072b1b221a1b151413141615 +1515151414150e00000000000000000000000000030c0f222a2f37212b35 +4570b0d9e9eff4c1211b211a224a29299e40091507130a0a0d0e0c0a0f19 +243e21211b1e141413162b2b4a2e2325064bfff9b090918a9a9a92898487 +8b89828080827f7a7b7f848584807c7c7f84868684838180807f7f7f7f13 +1b0f0a050a2d40606d82998b7f8a7d776f54352f2d25231f50727091a1b1 +994f42211a1c1b272720191213151516152822242726262d3a31210e0f19 +201973e0c8ce494d45291d1e1b14227de0b62c1c272f2d2b2e2d27292a2a +2a2a2a2b29252222252a2d2f302e312f2f32363635323a250e0f16181615 +1c2c3b57772f2a2f2a1f1310151d253e48201e20208f673c21141a1c130b +175b7b6b54452b2a292e40394d524749606d3b3950473c403c3e291a2d59 +6a440e30537394966700131525381d30447788a0a9a4969eaa958a8d8147 +26362d1e362e1f1d293a5777878d9f844821181717101d1f223230272f34 +3851918736140f23291c245fa59daaa59fafe6d5ccd0c8c0635d9c8c1a3c +5e332e455b6a643823261816150d0e131628221b3c21233f44455f6f5429 +1f282632282075e4c7d3d493455b4b514b433920232e30282b3027254e87 +698d2e2d172b22170f0e0c090607060c1923213e6e733d120a1430351f0d +263b3d5a785054484d3f484020242b292f26271f26416a5e5e5e161c1717 +1a2657525c51524e4d50505150504f4f4e4d4c412e201b1a191912090508 +0d1014172d517c9aa097644840557fbce5f5feffdc392f2f2832583130a9 +4e1f2b1c251814141514161f272a4024251f231d1d1e20353455392d321a +5bffeb976f69575c57544f5053514d48474749464142464b4c4b47434346 +4b4f4f4d4c4a4949484848481e261e1b192043536e7a8b9e907c82777d7a +5e403b3a363331567b738896a18f4e451e0d0f112124453c1e0b100a071c +4652677c909ba6a88a613d3127201567c4b9e5797d83542916231f1858c3 +a41319262f2d2c2e2c262a2a2a2a29292929282727282a2b2a28282b2d2e +323736332f35251e2e4153617a8aa3b7bdc153665e544c3d2e292b334a5b +3440333bb1a392653322262320337ca05f2825150e1d224f42494441303e +32212c3527222720241039758fa9b291bbcad5d9db2f37353a2825151216 +1a0400000700051d111c263409000b12183b524e4d4a4e6989959da49c6f +3c2a2f2f3230282b3225171f36322a3f3c21252c392d2105053d0b00010f +4099abb5b9b2a54d35859213344e223340457491530f1f262b2019232411 +1329212a1a272c24365b775a210d213429281b42c5aab3c2cb72b1b4bfb4 +a4966b64655a42393428264a794d5e422f2827201a17181a1a181d151016 +1d264b8477491d111a2a2a1420384d5c63a29ab0b2b9acada07a6c68624f +3c272b29405b4963a22e2d23283157add1e1d4d7d8d4d8d7d5d3d3d3d2d2 +ccccbfaa93847872756c5a4b444853574230171817181f1029425c86b7d7 +e4f4ffcb3438353453808a76976621502021353434322d292b2e2531181a +18202424161b2023301c1415150be0f0f2accac5c3c0c1c3cccfc3babdb8 +b6b8b8b6b6b8bfbebcb6b2b2b8bdc0bfbebcbab8b7b6b7b7b7141c100d07 +0e32445f6f82998f7f86797a7455372f2f2828264e76718c9eaa98594f22 +0c0807181e433d2211120a061536322c28211f27332a170d151819126bd6 +b9b93434432b0d000f13155fcaa20d17242d2b2a2c2a2428282828272727 +27292828282a2b2927272a2c2d3136353024303437464e45404c5a7e98a1 +a22c40433c2b1b15161c21364b333e240c502c250f01050c1016142c5349 +240900142b274e4046413f2f41392f41544e505a54563a527c83909170a2 +b7c9d1d424292a362c2f1e122245423c3e3b40699a9da2938a5124292017 +30433c3b3b3d5879848e968e63301e201e1e1c161e2b261f242e2a2e4c4f +332a282a2122224cada1a3a79ea0d3c2bec5c3bc613e878b0b314e263744 +497794561220272a1f1721220f12271f2818252a22345975581f0b1f2e1d +1c1748d7bec1b99815260e1611171d0711212621262e29274d774b583c29 +201d140a03030303030d0907121c274e836d3d180f15241e091a3348462b +461312131b141e1c0405101a18130d1e26425f4957810b1b1c2112042e30 +2f2324211d20212121212120201d201e16100d0e0e12100c05000007110b +0e0e212b32381f29354571b1dbeaf0e9a4111b23223465877b9762153d07 +02110e0f0f0c0b101a1e31161512171717090e141926140e131a17f4fbe2 +88948f9d9e988f8a8d92908c858385858383858c8b89837f7f858a8d8c8b +8987858483848484131b0f0a050a2b3d5c6d839d9588918581785a382f2d +2524224b73728fa1b19d5b5025110f0f1d22463f210f110a040f29252626 +2727303b2e180b141b201b74dac3d053525d3d1909181d1c65d0ad171c27 +302e2d2f2d272b2b2b2b2a2a2a28242223262a2d2e2d2f323233363b3a37 +34371f0f121818151b1c2e4557690f333832261911121921384c313f291c +7354452c1a1919120c11457d7756432a222b234c434d4c4d41524938424c +3b34392e30122a5253574c1f46597388a0061e28352b2e252a4a7c8b99a6 +a89ea5b89e978d87502631291f38463c3934354e6c7a87938d6332222728 +2a282228332b222a3b39395453352d292d25272852afa0a3a7a2ace1d4cd +d1cbc26a4d969d1a3c562f404d527e9b5d17252b2f241a2425141a322a33 +2330352d3f6480632a162a3a2b2a2554e1c7ceceb9425f4c5146423e1f23 +30322a2c322d2c5482566446332b261e140c0c0b0908100b0a13212b5389 +78471e141928220d1c374e52466d4b4d494c434a43262228302b231a282f +4e685363941f27242821225966695a5c5a565e5e5e5d5d5d5c5c585a5448 +3c35323031291a101218212b2231517c9ba19560453f5580bde6f6ffffbf +292f313044748e81a3712b531d141f19171615171f2625331919161c2020 +13181e22311f18202e27f3edcb686e605f5e5a5556595854524c4a4c4c4a +4a4c5352504a46464c51545352504e4c4b4a4b4b4b1d251d1a191f414e6a +7b8b9f9882837a7d7a5d403a3b3a3b314c7a728396a0915451260c0d0c18 +1d5a4e20061311102c4a596b7e929ea6a68155383126201862c6bae5726a +8056212718192758a28c221b2831302e302e282b2b2b2a29292828272727 +2829282523292d2f30343837333232252233455463798ba0b6c29a426861 +595444342b2e343d52375339399b939e773f242021202f6096713524140b +1f2c7045433f46463d282a3a3727272a201923609598adcdcbd5dadad46f +3c48434026232211181a0606050a00001b0d2334491f00111d244851413e +42455b8197a6a2a3844a303430342b283032251e273a3b2c242630352c39 +2d320c003c090002133f96afb9bbb7aa5b277d97102c4d3c35352c2d251b +361e19202622242925232b1a282a2d222d2a212229303b3929282c2324c1 +adb0c0eb76b4b7c2b2a4997167685d463d3d39252c232621341d2e221e1a +1a1e2426261b1616252c1d1b3035291c1c1f242825240b22346fbabba4b1 +b4adaa9e7e68635b4c422e42383d3c3249842b2b20272750a4dce5d9dee2 +e0e6e6e3e2e1e1e1e2dedcd4c2ad9c928d948f807066677274593e1c1d1c +1a1e0d26405c85b5d7e4f4ffc62b322f344158c4dedbaf35613a423a3937 +352f2a2b2d292d1c1a1a1b25231d231e28241a19172500a6f5ffabc9cbc4 +c3c7c8d0d1c7bfc5bdb8bbbebebdbdbebfbebab7b8bec3c4c4c3c1bebcba +b9b9b9b9131b0f0c070d303f5b70829a9785877e7c75573730302c2d2644 +7570879ba79a5f5b2a0b06020f17584f240a15110c21322f2a2621222933 +25110c1717191266dbc3bf362a49340c160b122863ad8f1f19262f2e2c2e +2c2629292928272726262828282829282422282c2e2f333737312a303238 +4a4e43414b5d7c99a77f1d424641312318161c22274235512a0c3b1c2513 +07040a111611184b4a1d0904132d306e43423d464843323c50554c53584d +3e3e6f958993afadbdc7cecc67343c393e2a2d2b11244342494238324f86 +82908586501e211f1c3841312f33374d718795908f7034171610130c0d1c +25201f2834373331383f39262820352d3eafa1a0a49c9ccec4bec1c1bb6b +3080950e2f524039393030281e391f1a1f252022272322291826282b202b +281f20272e3937261d21212bd4c4c0b8ba1b2b13160e121d0a1221272229 +3638252c21241e2e1728181109030204070804060b1f2b211e312b1f191b +1d1e1c191b05191a355930041016151b1a0600091113171232323d3f3541 +670c1b192208012b3d36282829242929292a29292928262828231d1a1b1a +1c1c1a130c0c1521171410243034371c28344773b2dbebf2f5a008121a20 +203cbaded7a8274e212215110f0d0b0a0f191f2b171411121a161017121e +1c1213152a02b8fffa8997979d9f9b948e929695948a85888b8b8a8a8b8c +8b8784858b909192908f8b8a8787868786121a0e0905092938586e839e9d +8e928982795b382f2e292a224172718a9faf9f615c2d100d0a141b5b5123 +0914110b1d28232425272a313a28120b161c211e71decad452456044151e +121a2d67b198281e2932312f312f292c2c2c2b2a2a292723222326292a2a +2830343435383c393637331e1116191714191f2e49604a03373b372b1e14 +11182029453654312060464e37221916140d0f307279513c291e2d317148 +484852554f3b3e4d4b3b3a3b2e1f1b44614846554b59687c8d40213c4141 +2b2e342b4c7b8aa4aca7928fa8898b868955272e2c274244312c2c2e4064 +7a8d8c8e71371d201d241c1c282f27242d40453d393c423c2a2e273c3443 +b2a2a1a7a4abdfd9d1d1cdc5783f91a31b385849424239372f2540241f24 +2a25252a282a34233133362b36332a2b32394442312b2f2c35dbcccdcdda +47635052433f41252733352e323d3e2d362c2f293a2332211b130d0e0f0f +100a090f2130242336362a20202022201d1e071e274e8269404647444741 +291d22282428203d3c47483c4c791e262128171e54736f5f61635f696968 +6867676767646562594e464341423d3026262b343f323a527fa0a3935d41 +3e5681bde4f5ffffb91e27292c314bc3e6e5b83e643737261c181615171e +25272e1b181617221f1a211c27271d1d223d10baf4e76d746864615e5a5a +5d5c595a514c4f525251515253524e4b4c525758575754524f4e4c4d4c4d +1d241c1a1a1f3e4a667c899d9b84807a7d7b5f413a3b3b3d34447a738195 +9f956366320d11131e25745f270814110c274c5e708193a0a39d784c3530 +25241957cebfd6543f674c221b0e212e0e0002001d2b33313032312a2c2c +2b2b2a292929262626282a2a2725292c2d2c2f33322e3633252639465467 +7b959eb0c46a415a625f5f4f3c302f333e46293f2c3ba3ada4874e271c1e +222d508a854823150e20356f2d3b37223b272a32382e2123221b194a7d99 +a5b9d2e3e4d2f488183b1e3026171f241011130200000808104b4064647d +4f1b22272944623c314147517597aaa19f895637332a2c2934423b282022 +45332420272b231e272a3a1600360b0101163c93b3bdbcbbb574267a9414 +21531d39462d385b4f38332120241b14191d1d21111d20241e474f3a3235 +33312b1e2b2f2c10b9b5afc0f580afbcc4b6a99d7668675f4a474e4e4645 +2a3f3a3c323526262526292d2f2e261c131c251d223a463e2f323c3a3433 +2c254a4a558ca7afb1b0aea9a085696351514f364132332d2e3444312d1f +26224690d7dfd6dce5e3e8e7e4e3e3e3e6e6e6e1dacbb6a49a9aa1a2988e +858286836d49211f1e1a1c0a233e5b86b6d4e2f3ffbd30322a3a3f427ddd +c7ca286033383c3a3836322c2c2b29282021221c2a1f1c231c29221a251b +1b004ef4ffbdc5c9c2c5c8c9cfd1c8c2cac1bbbec2c2c0bfbdbfc1bfbbbb +bec1c6c6c5c4c1bfbcbbb9b9b9131a0e0c080d2d3b577180989a87847e7c +76593830302d2f293a7571829aa69e6e70350c0a09141e72602b0c161108 +172b29262320242a30220c0d1b161a1159ead1b91e05383215100820331c +0906001b29312f2e302f282a2a292928272727262726282a2a2624282b2c +2b2e32322c2f31323a4b4a42434d677c96ad4f1d3546443a2c1f191c2128 +36273f1f10473420160d060812171012424719080c162e396e2c3a372542 +3038454f4a434a4c3f2f557f9193a0b6c8cdc2e88112341629251b292c10 +1d3c3e3f38303255a09cb5999f6627211f1b33512e23343a436585938a8a +754327221b1c19273631211b1d3f312d2d36362215161d3e3834aea7aba0 +9c99ccc9c2bdbebc7d2d7d96182a5c243d49303b5e4f3834221f231a1318 +1c1c1f0f1b1e221c454d383033312f291b23292c19ccccc1bbc827281a18 +0f161c0b101e262632444d4645283d36382e2f1c160d0803030306050304 +132321253b3e342c313a342824211c3f2b1526180b10121617190c000503 +1423172f2a3330312e2d1620182106001d3f322325292527262625252525 +252524241f1914151713171b1913121822211910243032341a25344976b3 +dbebf1f5970a1215261e236dd5bfbf1a4d1a1817110c0c0a080c151e231b +1b19131f141017101f1a121f191e025dfbfc9f989a9b9e9b9590949a9899 +8e888b8f8f8d8c8a8c8e8c88888b8e949493928f8d8a8987878712190d09 +06092634546f819ca0908f89827a5d392f2e2a2c25387272869eaea37072 +3a1211111c2575622a0b1511091722212324272c3135230c0d1a1d252066 +edd5cb381e4c3f1c160c26371f0c0f07202c34323133322b2d2d2c2c2b2a +2a28242224262a2c2c2a2e3132313337343137321e151b1714131929324b +6a20072c3a3932261913181f2a39284128246c614f412d1b141613122767 +7a4d352b212f3c7332403f2c48353943473e33353425183550523f3c4957 +63639e4d002e23392b1e2b372a4774869ba09f9498c7a9b8a1a97435312e +283d572e202c313658798b848774452a2822272431403a292124493c3635 +3b3a281a1e2647413aafa6aba6a7aae0e0d6d1cfcc8e3f8ea3212f612c46 +523942655740392725281f181d22242a1a26292d275058433b3e3c3a3426 +2e333622d3d4cdcfe75360565445434227263135323b4d555051354a4446 +3c3b27211a14121110110e09091628242a40493f33363d382c29251f453a +304e504846454544412f1b1f1b2634263b353d3938383d272a2027141844 +726a5b5e64616867666565656666666461594e4542434140393435383f45 +3f41547f9ea08e583e3c5583bee3f4feffb0212724322f3278e0ced03163 +302d281f191615161b2226271f1f1e18271c1a211a28251d2926311160f4 +ec8577706463605b5a5d5f5c5f554f5256565453515355534f4f52555957 +585554504f4c4c4a4c1c231b1a1a1e3c46627b85989d857d7a817d62413a +38383a373d7b767f96a09b6f7434070f16212b624b20080e0a05184d6174 +8496a1a1957247342f21291b44c1bdd04e3b6a4c312f110e1d0e00001b20 +2c33302f32322d2b2b2b2b2a2a2a2a252525282b2d2c2b2b2d2c2a2c3131 +2d3631252c3e48576d849ca3abb7473c475f63685c46363133403d262c22 +37a6b5aa98602e181b252a497e98632514101f215720121418522c2f312b +1f1718161b3773909dbccfd1daecdbb43e4c131b070d0e24221a0f100300 +00120f022700042a4e2a000d232e48754231454b4b6a8fa19e9a88624434 +2c382f3538281e211e5626223c462b101d21303417002b07000015368bb2 +bdbabeb1802477912d2067573133393331344415182428252b2d222b3932 +28161f2356452d2835362e2216322f3208abb9afc2ea8c9db7bab6ad9b77 +65635e4f4c5556444c4540453c412a2b2e303134353433302618161a2242 +6e4f4b3f414b403433421f20486bc2bcb8b4afb1a8a3906e685f59483344 +4d493d39332d412e242728427bcedbd9dde7e7e8e7e4e3e2e3e6e7eae4dc +cfbca89ea1a8aba5a09a97968e764f22201c171b09213d5c86b6d3e1f2ff +ad3b412d414c5469eab8e33b74433c3c3b3a39352e2c292a262b2f332738 +271619142023193520191311e0ffddbabdbfc4c9cacecec8c4ccc5c0c2c5 +c4c1c0c1c3c4c1bcb9babcc6c6c6c6c4c1bebdbababa12190d0c080c2b37 +53707c939c88817e807b5d3b302d2a2c2c337674809ba7a47d7f3906080c +1724604c210a0e0800062425232221252a2c210d111b141f1046ddd0b51c +053d3626260c0d251d04031a1e2a312e2d30302b29292929282828282526 +25282b2c2b2a2a2c2b292b31312b3132333d4b48414755708293a3301b25 +43474337281d1c20272d242b160d4c391a181406061217101638481e0710 +1a2d24561f13181d5c3840454339363939343f6f868da5b5b7c1d6cba836 +460e17040b112b2817183b42423a38353f7140454c5e310004151c376636 +263b3e3d587989858576543a302a373034372517171753292b4953340d12 +10243b3c30a3a3aa9f9d97c9cec5bbbcb485297d97342b725e35363c3634 +344416192327242a2c212a373026141d2154432b2633342c20132d2c3513 +bed0c1bfbf371a17110f15170a0b182326344953424c433e41383d241f1a +110801000000020201071321436d47433e42493a25243714112626572812 +111119161a1200050d181811304348403c301b2c221d200e01113c2f2624 +2b27262423222122222323211f1b150e0e120c10181a1715192022180d21 +2d2d2f1726364c79b5daeaf0ea871522172b2c3453daaad62d622b1f1711 +0c0b09080a111d2025292a1e2d1c0a0f0a191b112f1e1c1b1fe6fdc49593 +979b9b9693969a9a9b928d8f92918e8d8e90918e8986878a94949494928f +8c8b88888811180c0906082430506e7d97a2918c89867e613b2f2b272928 +317375849fafa980813d0c0f141f2b634e23090e0901061e1d2023292d30 +30200b0f1c1b2a2153e0d4c6351d51422c2b10132820070c22232d343130 +33332e2c2c2c2c2b2b2b29232123282d3131303032312e3033332e352d1c +191d1610161f313b4d6806081c373b3b2f2016171c2a3025302023726b4f +48381e12151713295a7b542d29232e2b5c25181b205d363a3c362c262623 +1e274c51424546404b70766c113812281716163134344372899da0a59682 +984d49586d431015262a416b36223235304a6c7f7e8072533b312d3d353a +3d2c1e1f1e5a303251593b141a1a2e454435a4a2aaa5a9a8dee4dad0d1c7 +983c8da33c2d74643e3f453d3b3c4c1b1e292d2a2f322732423b311f282c +5f4e36313e3f372b1c34333c19c5d8cbd0dd6150534c45443e29242d3536 +41555e4f58514c50464b302b262018140f0b0b0f0c090c1a264873524e46 +474e3e2a293b1818344281625048444a4344371d22242c281f3b4c504943 +39293b2c25271b19356d675e5e6663656664636263646566635f584d423f +403c3c3a3b3f4145474442527d999a88543c3d5783bde2f3fdffa02c3424 +383b4360e7bbe8447a4335291f191616151a1e2424292d2f233524141813 +21261c392b2d2822e2f1ae786b6463605c5b5d5f5e615954565958555455 +575855504d4e4f5757575755524f4e4b4b4b1c221a1a1a1e3a435e7a8194 +9d867d7d828065453b38373938367c787c95a19d6f7632010d141b221b0f +04040c1017264e66788998a49f916e47362e202e1b34b3bccd544870422d +0f1a1005101a1209202b312d2c30312d2a2a2b2b2b2b2b2c292725262728 +282726272523262c2e2b302d2530434a5c788898a8a79c43303e55606d66 +513f37393b3c32282432a4b2b0a97238171923263b6aa97e230e14232447 +44101332714938342a24241e22386490a4aec6d9dbdbe9d53f64793d270a +0919331f250e1003000013190d33000061835414131c1b284f271e36434c +6c8d9aa2977c592f110614050608031228274d253a687851171426371e0d +002606000011287aa7b5b4beae8821758c46176c501718355879540f191b +201b1a2b352b24282c281521235442597b7437060e29362d34079bbaaac2 +e0a190b2b2b6af9a7f69645f4e464948161c202e2646200d2b323b444c4f +514e3736312e2b1c2138343426242d25273b46232b4668a1a2aeb5acb3a8 +a598736e6a634033435e4f3a3a3b48451c1d18234167c3d7e2e2e8e7ebe9 +e6e2e2e5e8ebede9e3d9c7b3a8abadaea8a5a3a29f957a5024201f1a2010 +203d5e87b6d2dff0ffaa454f29303a4b56e3d4e7543c40413c3b3b3b3933 +2e2a2e27353c3f2f422c211e1d2435285638262900affffab3b8bac4cbca +cccdc9c7cec9c5c7c8c4c1c1c5c6c5c1bbb9bcbfc6c7c8c8c6c4c1bfbdbd +bd12180c0c080c29344f6f788f9c898181837e603f312d292b2d2c74747b +98a5a67d813702080d111b191005050c0e11121e21222223282a2a200f14 +1a13230e33ccceb21f10432c2206150f0a1e2512061e292f2b2a2e2f2b28 +2829292929292a282623242526252423242321242a2c292f3033404c4642 +4f5a6f8b928b2f131d3942473f30242021232930291a0a4c33151a1a0803 +10140d12294928040f1e2e24464311193b7e5a4c4b413c3c393d475f7f91 +98afc0c2c5d6c4325c763c26090718362120173b433d393d414878333078 +89530d080e0b1b441e172d353a5672828c846d502e15102215141207101e +1d4c2a457582551107122b2734309c9ea2a09f96c6d0c7babfaf8a267b92 +4f2276551a1b385879540f191b201b1a2c352b22262a26131f2152405779 +7235040c28332c3712aed1bec1b9531117090d16110d0b1522232c3b4214 +1b1d2c22421e071d1a140f0803010300030d171b151c352c2e25252b1f18 +2a3a171a2222340a04120f19151a170007121b0b0f2d524c3d3d3a3a3510 +16110b06063a332c262a272927252424242424252222211a1010130b0c12 +151616171e20150b202b2b2e1a25384e7ab5d9e8eef5871f30131a182637 +cbc2d8462d2d25170f0b0b0b0909101f1e2c33362638221714131d2d2250 +36293105b3fde7959494999a9694969b9a9d97939596928f8f9394938f89 +878a8d9495969694928f8d8b8b8b11170b090608222d4c6d7993a2928c8c +8881643f302b2628292a7275809daeab80833b070f1519221e1207070e11 +13131a1c21252b30322e200e131c1c312243d0d2c339295738280b19150e +21291c0f232c322e2d31322e2b2b2c2c2c2c2c2b26242425282b2c2b2a2b +2826292d2f2a2d271c1c2116111b1f2f4753570c05162e373e38291d1a1d +232b312d252276684f5040200f15171322477959242127322e4e49151938 +7750403b312c2c262a3041514f42454a4b567a7f08477144361b121e3d30 +3e42728a959da9a08a9f41358699651f191f18254a1f11242a2e49677681 +7d664b2a140f231515140a15262552304b7b8b5e1b111d35303b359e9fa3 +a5a9a3d6e4dbd0d4c49f398b9e5624775b23244160815c17212328232231 +3d332d3135311e2a2c5d4b62847d400f17303a323e18b4d7c7d1d67a4651 +4444453b2f262b343439484e21292e3a31512c152a282623211d1a1a0a12 +191f251c233c37382d2a30231d303e1b22303e5d43424b424b42443e2025 +2b311d1d395c5544444247421a1e18181c27686865616663686664626263 +64656663615d524541443d3b37384145474844414f7a979786553b3e5984 +bde1f1fbff9f36422027283746d9d2eb5d44433b2920191718171a1d2623 +31383b2b402a201d1c25382c5a41383c0cb4f5d87d706564605a595d605f +625c585a5b575454585958544e4c4f52575657575553504e4c4c4c1c221a +1a1a1e39415b787e919e877e80807f65473c3a373c36307a7577929d9c6a +743406151816160a040a100b0c111b4e677c8c9da49e8c6c45372d1f321c +2abec6c543385d271711290e198cd98c12222a2f2a292e302d292a2a2b2b +2c2c2d2c292421201f1e1c19191715192124222c2a2432464f637f8890a9 +a4834b273d4b596d6b58453f403e3e3b232635b4c8b5b582401716212229 +55b08e240b1726352a5f322824443b2c251d1f241e274a819cb4bcc0d1e5 +e9d46e2d6774530d0f10243c182b0a0b0002000306013e08255e83541113 +1f1b284d312b3b424d6b80889c998067411e191606080a06172517411f2b +3f524c1e1120310302002e1403000d1c6b9aaaafbfb8962674844d015a61 +19284d505849261917222b2623221a2c1114261b1e113d39486a74491910 +1b382a340990b9a7bfe4bc90b6b1bbb69d876f68614b3d39312a2829764e +9e2a292d3b4b5c6c767b7a624e342d322f35487f602a0e121018313c153a +3b8496b2c0b4aab2a5a59b75715a684f3e2e3f291f4652815218261c2d38 +53b6d3e3e1e2dfe9e5e3e0e0e2e7ebebe8e5e0ceb9adaeadaaa19e9fa0a0 +937b502524231f291b233d5f88b5d1ddeeff95334c292b334956c1dedba1 +35552a3c3c3e403c35302b2d23353b3f2c40272016171c36286340292700 +78fcffb3c1b9c6cdcdcbccc9c8cfcbc9cbcac5c1c2c5c5c3bebbbbc1c6c6 +c7c9c9c8c6c3c1c0c0c012180c0c080c28324c6d758c9d8a8284817f6341 +34302c2e2b2672717695a1a578823c0710110c0f08030b110b070b051d20 +2223252b2b292012181a12260d26d3d1a40b002c0d0a06200b1c95e0890c +1d282d28272c2e2b27282829292a2a2b2a28221f1e1d1b1916161513171f +22212b2e32404b4443545a689094763a0c1e2f3b4542372a2627242b3924 +1c0f5d47111c1d08010d120b091b462d020d212f35275e3631315450433c +32353731385072829aa3a8bacfd5c25e1e5e6f5311110d213c172211363f +503f37354187505c7486530d0b14101e472d2632343a4f64728a876f5939 +1c1d201416150b161e104226364a5b4f16040c250c27329ea4a5a1a295c5 +d2c9bcc1b9982b7b8c560b62641c2b50505849261917222b2623221a2a0f +1224191c0f3b3746687247170e1a36293712a3d1bbc1c472171e09121912 +130f15201f21292b282726734a9c28231d1c1c1b1717181b0f0a040c1a1f +293e775d2a0e110909202d0629173b271916110d181117170005001d1615 +1432261f495277440c1c1217050034322d23242128272524242425242321 +23241c120f120b0a0b0c0d10141a20150c212b2c302025384f7bb5dae8ee +f6720d2d1517112231a2c5ca9329431116100b0c0c090a0f1e1a2c323623 +361d160f101530225d3d2b2e017cf8fc9da292989a9795989b9b9e999799 +98938f909393918c89898f94949597979694918f8e8e8e11170b09060821 +2b496b7690a3938d8f86816641322e282b272470727b9aaaac7b833f0c17 +1914160d080d130d0b0d07191c24282e32322c200f161c1b342237d8d7b7 +2616411a110c2512219ae69416232b302b2a2f312e2a2b2b2c2c2d2d2e2b +262322232222201d1d1a181a20231f2620191f2216121d1e2a50594a1e01 +1b24303d3c2e211f23252d3a282728887f505545210d1217131834745a1b +1a2a383f3064392e2a494131281f20241d263647474d463a4862767a2d07 +57735d1c1d16284427413d6d85a5a19d917faa5e617f95631c1a221e274b +2c2029292c4358647c7d6856371d20221519170f1b2517472c3c50645823 +0e182f132d37a0a5a7a4a89dd0e1dbcfd6cead3f8b975d0c646b25345958 +60512e211f2a332e2b2a22351a1d2f24271a464251737d522219223b2e3c +17a7d5c2d0dc974a57444b4c3c362b2f36303036373635378459aa36312a +2c303336373739291f1417272933498468341617101026320b3125585152 +544a424c41453f202518322925213c2f27505a825116251a23181a606666 +5f605d676563616162646564626261564842423c362e303a414545434150 +7a9695885a3a3e5a85bddfeefaff88223f2122213442b2d8ddaa415b272b +211a191a18191d251f31373b283e251f17181d3a2c67483738097ff5f088 +836766615b595c5f60635e5c5e5d585455585856514e4e54575556585857 +5552504f4f4f1f1f1b192021314a57797991a088827d8874715c41393238 +372c7772798f9d9d7974230d07192b1f0d0d020b10050d2465577b99989e +9e8b6647342d26272714addac548444c291f16162b3287e8760e1c262f2d +29292c2c2a2b2b2c2c2d2d2e2e231a17171515171516161718191b1d2a25 +2937444f697f939ba4a154423c333a53666c6d533e4343482e38263f9ba3 +c1b49955201f1c2127459ea2390314182947443d342e322a201a1a1d1f27 +456b99abcbbfd5cfe2ee81202d2c29251f2431372a161a12030000000f16 +0029383f2222150012170226423e2b3b4153617e8798997f775927251e17 +0c0204101e2214340a3d46561d29363f0500002621000103135794a0afbf +c39c2e5a8947153b4a1e3b4b4e8572280d1a1d20222620231f1a1d171d1c +163a3c4d67765c271630350d1a2354c1bab7cfd48abaaec3a9b090676964 +4f4a3e362113559b689932192b2f5781878c9b9c7c5f443c3932302f8f78 +3f1e141128342a283b4f6e97b3bab7b0b0afa7a38d676f525f3c2d301238 +5e395c636a181734304f9ed8f2dff1e1e2dbe6dfeadee9eceeeae5dccbba +b2b0aba7a19fa1a2a09476512b1f262e281c233b5d87b4d1e0f2ff863f41 +24253c4056a8e4c7bf42492e343e433f3d3d332630262c4f112219131a17 +0e193026151a1a210833f8ffbfabc1c6cacfcecbcaccd1cdc6c3c2c3c1c0 +c6caccc9c2bebfc2c6cacdcac5c2c3c6c6c6c615150d0b0e0f203b486e70 +8c9f8b86818b746f56392f272d2c226f6e7790a0a687822a0d021221180b +0c030c1000040b3310223223252c2b1c15161a191b150bb7d89905001209 +0b0509212f8aeb6e0417242d2b27272a2a2829292a2a2b2b2c2c21181515 +131214121314151617191c2c2c35424441455263738e944a3623151f353d +434b36232a27342a371c1944221812281304140b0b0f11343c13031c1e27 +4143413d3e444138302e2f2d334d68838bada5bebccedc6f0e1e21242624 +2a2c3027120d152e4447414a4f4479867c3f2c1b0210140023423d283230 +3b4162788d87685a3c0b0f10110c0507111c21173b15474d56151924330c +212d8ca595a09d97c0ddccc4c6c59e3561914e193c4b1e3b4b4e8572280d +1a1d20252923231d181b151b1a14383a4b65745a25142f340d1e2d66d9ce +bdb39118270a1c0b2118021320202b2c2e1d11529866973013190d203221 +182328170b050d191a1c1f84753f21130a19231b1928292427180d151316 +19181a0f000f03211011200d39613956595e0e0d200503253e3f1f332526 +212c2732242b2a2a26232019111117121211121214161b1b17121c2d3528 +1821364d7ab4daebf2f6631c2212141c1a2d81c7b4b3383a1611110e090a +0e0d081f1b21440819120c131209142a200f171d250b34f8fbaf919a9696 +999b9b9c9ea09b949190918f8e94989a97908c8d9094989b989390919494 +949414140c080c0b1934456c7190a594918c90767256372d232928206d6f +7c95a9ad8a853015091a2a20101107101204090e320e24362b2e342f1d14 +141c22292b1ec0e3b0241c2a18140d102a3691f27b0f1d27302e2a2a2d2d +2b2c2c2d2d2e2e2f2d221b181a18191b191a191a19181a181f1a1d221e14 +11192535526026201e13162b373d422e1c2526352b3c27326f5b5b4e532e +101a15171c275a63280d272a324b49423834362d22191515161b38474940 +5544565675943f0019272b2b272a323830212b4063869ba0aea67e9a927d +4536270e1d1f0a2a443b232b262f3654657b7b625c41171c1d1b160c0c15 +21261c411b5057602224303d14262f8ea796a39f99c4e4d7d5d9dcb34873 +9c561c4050264353588f7c321724272a2e322c2d2823262026251f434556 +707f65301f37390f212f6addd5c9cab4495e46543e4d3c202e37323b3a3b +2c1f63a974a53e21271e374f463f494d37251a1d2827282c928049281911 +202b201e2e363f4f514c4e484a49464635192b1936211f2a143e68416064 +6817152b161d4e70775b6f60635e69636e6169696a66625d534845463e38 +32323d4447463e405473979f7e53363a5784bcdff1fcff7930341e1e2b29 +3d93dbc8c950512c25251e17191e1c142721274a0d1e19131b19101b342a +1920262e1439faf5a07673665d5d5c5d6063655e575453545251575b5d5a +534f505355595c595451525555555520201c1a21202d4456777a8f9f8a82 +7e79777c59393c3b39392e75767b909fa0717724010e2e332f1b15120901 +061832596b7789a19f9d816447362e2828271792e0bd636a5e3222331519 +429feb7d192028312f2c2c2e2e2b2c2c2c2c2c2d2d281e16151513121414 +15161617191b1c2b272c3c49546e84919ca2924b3f3e35324b5e64655c4b +41594e42533f44a8b5beb9a362231b1e27243f92a43d0c141f2c78453c3b +382f291d1b1d21293b5e869fb8c2cde2d8e9a826154b3f3537302c434233 +2c1f1804000000050a00150800283610000c0f152a6f8e82643f4e638088 +8d9582735429291a10070709101a22539b6f756f716b6a4f5f3520001a2b +15130f1654969ea8b8bc9b314c845117474a26372f245455272b23233728 +291d181a18080c19252f24282e3c443b2c25262e181f1530beb2b5ccd081 +a7b6c5b3a2956b6560584b3530372b273b27292a313333588295a0aeac8f +6d4f443f3632304d4d2e211e1a2d3624202a446e93adb9b6adb0afa9a692 +6f71555d453739293a3f3f48847d252b1e2a468ad1eee2ece1e4dde5dce6 +dae2e4e7e6e4ddcfbdb2aca39e99999e9f9c91734f2920292f2c20243d5e +88b6d2e0f2ff843a34212437405290eaccd4614c45353e43413e3d35262a +242c4218211d1c15201b1b2b2a1d1c0e1a190dd9fceda3c9d0d0cecccdcc +cbd3cec8c5c5c6c5c3c5c9cbc9c4c1c3c5c6cacdcbc6c3c5c7c5c5c51616 +0e0c0f0e1c35476c718a9e8d86827c787a553434302e2e246d727991a2a7 +80862d040b2729281914130800010f1c292722242d272e211c15171b181a +160a94d485161d1e0b081e040d3d9feb720d1b262f2d2a2a2c2c292a2a2a +2a2a2b2b261c141313110f111112141415181a1d2f2f3942454146536176 +8d8a4436291b192d373b433f30253b383c52331c513113112814020e0c15 +12132d411406172229734340464844413532303032405e7a8296a5b5cfc8 +d79714033b332f383733413b2e230e192d414844474c496e5c414b491f04 +1012152b708e7f5b2d3341637d86856b56360d140f0e0e1012151b2358a2 +787e7671635d3e543a3d28749d9da9a89cc5ead5c4c3c19d38558e581645 +4926372f245455272b2323372b2c1f1b1a16060a17232d22262c3a42392a +23252e18201d3fd3cabdb493161a141e12101b040d1b252b202531292439 +2527292b23111a2b221d2225180c050d1617171b424930241d131d251511 +171e2525120f14131618171a0f000a011915172822393f3f457c7119200d +08051c3d3b2230282a252f2933242826252423231d141114121313121113 +141a1c16131e2e34261821374e7bb5dbebf2f261191811141b1a2364cbb9 +cb5c403214110c08090d0c0816171f370f181617101b161625241719111d +190ddcfce58fa39d99989c9f9e9aa19c96939394939193979997928f9193 +94989b999491939593939315150d090d0a152e446a728ea496918d817a7d +5431312c2a2a226b737e96abaf8389320b122f32301e19170d0205141f29 +26252a363135251d14151d2229291ca0e2a0383d381d13270c1744a7f380 +19212932302d2d2f2f2c2d2d2d2d2d2e2e271d1716181616181819191716 +1618151e171f26221612182137545c2727281c142532353a3729213b3a3c +573f367c6b574f542e0d1518211e244b5e24102631347a4841403d332b1b +161211152242503c3d47557173956900004541393c302c424235342e4563 +839b9fa8a0818c66404d4d240d1b1b1d30728c7a54232837556973786558 +3e1b231d1b1817171920275ca87f87807d6e67485c404129759e9daaa69b +c3ecdcd0d5d7b44b6698601b4a4f2e3f372e5e5f31352d2d4134352b2424 +211115222e382d3137454d44352e2d3018221f42d6cec8cab4444f4f5646 +3d40222630383a2f333f373547333537393022334b4b494f503e2b1e2028 +26262a50573c2d251a272d1a161d2b404c4b4d4d494c4b4647371c28192e +2524322a3f47474e877b232817161b416d735e6b6267616a636d5f656464 +636260574b45433b342e303b4044443e3f5372969c7c51363b5884bbe0f1 +fcff752c271b1e27293375ddcde072584829251f17191b1a141f1e263d14 +1d1d1d17221d1d2f2e212218262317e1fada777f70635a5c61625f665f59 +5656575654565a5c5a5552545655595c5a5552545654545421201c1a211f +283d53737a8c9d8c817e7988905e343c3b31352c6b76788c9d9d7f7f2600 +0f272e6334030b0f08131b3d5c54688ba18ea5816548382f2828281969e9 +ac788a6a3c252527313521260c0e2129302f2c2d2e2e2d2d2d2d2c2c2c2c +261d1616161413141516171717191d1d2a2a313f4d5b7488919d9c7e403b +423a2b3e555c5d665d43463b4140272ea6a7c0c2b578311f283221387da3 +4017142825933d2d373825211e1d20283956779598c8c3d6d9d4c0441e29 +553b36383841342c253a1e200a00000000000019090a59783911110c1f20 +4b381d30415962777d7e91886c45160a000000000005141f1f60221d2c29 +351d2833242200233b1e11140e428999a5bab69d3a397d6416535631454e +3f3c3c333d251c2e211f1c20192c1b1e1916312342333439384447342931 +392821cab2b8d9eb94a1aeb3bfb69674655f5b4a3647383a2e3b412a2d34 +35335280a0b0b9b49a78574a443b3531373d29273232362f2729233d7394 +acbeb3adb0b0aaa99875745e5b4e383b3d31343622482e15312b2b4175ce +edeceae9e6dee3dde7dae4e3e2e2e5e3d6c3b4aba19a96969a9b988c714b +271f2a2f2d232640618cb8d4e1f3ff863d2a2326323e516fe3cbdc863f5a +39404444423f372a1f1f262a201c1c2018231b0e1720211e181e28069af6 +ff9dcdd7d5cecad1d0c9d3d0cbc9c9c9c9c8c6c9cccbc7c5c7c9c7cacdcc +c8c6c7c9c5c5c517160e0c0f0d172e446871879c8f85827c898e5a2f3430 +262a226370738b9da48e8e2f000c21275c31020c0e060c102634181c2c32 +1a36201b15161b191a170b61ce692033210d070b13242e212601021c272e +2d2a2b2c2c2b2b2b2b2a2a2a2a21181111110f0e0f101112121315191f32 +353b4344424956627a8b793b342f2113212d333a4840262723393e1a044d +2315182e1b050b132115142447150a11291f8d382f40483a3935322f323d +546f847ca7a9c2cccab4380f19462e303a40493327202f0b1d2f42414643 +485176615286954e201a1022234c3818252d3d3d5a727988795c39131112 +1314151210151e22672b2632292d11192a2837296b999297a091b3e2d6c5 +c7bb9f42458768144d5330444d3d3a3c333d251e3023212022192a191c17 +142f214031323736424533272f392c2fddcac2c6b42f1b100e1e231a090b +172628213c32362a373f282d312712142223202120170a040c1516161a2a +392b2b322d29201b1d12192d28131614131618161a110008061319162736 +30333521422208241a110a11403c2c31322f28322c36272d2a2424272a25 +1b131519191815121213171c1715202f3325182137507cb7dcecf3f3651e +12161918181e3ec0b8d4833a4b19150d090c0f0e0a0a10171d1513151b13 +20180b141d1b1b191e24049efbff8ea6a29c989da5a298a19e9997979797 +9694979a999593959795989b9a9694959793939316150d090d0910274166 +728ba298908d818b91592c312c22262061727991a7ac93933407152b2f64 +380810130b13182c341820343b253f271c14151c2027291c6ee18846563e +2113161c2e36292e0f0e222a31302d2e2f2f2e2e2e2e2d2d2d2d251c1717 +1816151617181816141418141a172228231914171e3a5551252c31250f1b +2b2f34403a2225233741241c795d57565936121422311f203a5c1f14243d +2b913c2e3b3d29231b130e0f182e4a5029464a697d8c8a220c2459403a39 +353e312b263f2948648391a0a39c89956b4f83934f25211929285038141f +2432344c5e6579725c3d1a191917171915141a24296d322f3e35381b202f +2b3a2b6a9992989f8cadded7d0d8d1b65555917119515a384c554845463d +49312a3c2f2d2c2e23352427221f3a2c4b3c3d42414d503b2a303b2f32e1 +cecbd9d35b4e4a4652503e27252d3a38304a404439464d35393c34232d44 +4f515250412d20212927262a3b4737343a3332271f211825454c49514e49 +4c4b46483a20281f292b24303d363b3d294c2c122d241c1d336e73686b6b +686169636d5f6664606063645c4f45423d3730313a3e42413d3e53729597 +7850353c5a86bddff0fbff7830201f2223272f51d4cce99850602e28201b +1a1d1c1513171e241b181c211a271f121d2625241e263211a9fffa7b8778 +675a5c64665d66615c5a5a5a5a59575a5d5c5856585a585b5e5d5957585a +565656231f1918201f283b506e7b889a8f7f7d7e8d94633a3e382f342b62 +7776899a9c8879260c263557cfb52e0b0b070f185055526d7ba092978765 +4b3a31292a291e41eea5818e653f27231c142618150d1f21282e2c2a2b2c +2c2e2e2e2d2c2c2b2b251d1718181614151315171716191e1f292a344150 +607b8d96a197693537443b2b314c5b596669534f536446263ecfc0bec7be +8d4223282d2131639844231430267d39192c2e1c19201d1e305070858f8e +ced2d4c9e17114231426253c2207130f0c14411c230b0200000000001c21 +3e3b6e4209030c1f225d452d464a4e577e8381927a543a15000000000000 +001b2618552e333126242c232727280e2c5037202f1f3e8097a6bab6a548 +2c767316535b31373c40393f363326190d28140e1300170a0619181d2f48 +282f42342c2a1819333a2e11bda7b9bce28fa9b4b3b8b0957a6c605c4c44 +6c68524d47384f3f51292d4b7aa2b5bcb79e7b5a4b453c39355f5b3c384e +5651382c3f2c387193adbbb5afb2b0abaa9a7b73675a553a3b5538402a3a +372a4030262a3a60c2e7f0e7ede7dfe5deebdfe9eae7e6e9e7dbcab9aea8 +9e9a999c9c988a6d47241e292e2d272b43658fbbd6e2f3ff87442b2d2c2d +38565cc6c8c99f2a593c4345464744392e3634342436241f1f172328292c +2b21151b131e1641eff6bac5d6d9cfc9cfd1cbd2d0cdcbcbcbcbccc9cbcd +cccac8c9cac8cacccccac8c9cac6c6c619150b0a0e0d172c416372839992 +8384818e946235362f242921587171889aa3978b3111252f50cab02b0a0a +02080d3b33202824341f29261913171c181a170c30c8581f2e140b050707 +07211b1805131c262c2a28292a2a2c2c2c2b2a2a29292018121313110f10 +0e10121312151a2134383e4342434c5a677f876533323326161526333848 +4c342d395a421612743b181b2d220c09131f17131b4a150b0c2c1c72351b +363e313137302c374d68757a70b0bac4c1dd6c0d1907171834220c1b110c +1236051c2c413a4a433f4b797986698d5b1b0c101f235c43283b38333561 +767a8b7653442d262833301b0c0f1a20185a353a35261e22171e27383264 +9a9290a796a9d5d3c7c7bba75339837a114a5630363b3e373f3633261b0f +2a1612150015080417161b2d46262d40322a2817172f362f1cd1bfc6aeb0 +30291d12191d140d0e1525282e60604e4943364d3f4f21120f1c201d1919 +1207010a1417181d52593e3c4e51442921341d172d291916161418171418 +1100040a101f16264b363d2939341d302016160e053b3a3230373129322d +3a2e333129282b2e2a1f171822221f1b151313171c1816233132241a2238 +517eb8deedf3f7682815222118142025a0b5c4a0284d20180e0b0e12110e +1f2323172b1b181a1420252629281b121c12181247f9fcb19d9f9d999ea8 +a39aa09e9b999999999a97999b9a9896979896989a9a9896979894949418 +140a070c0910253e6173879f9b8e8e8690966032332a20251f5773778ea4 +ab9c8f35172d3958d1b7320f0f080f1540341f2b2c412c322d1b12151b1e +24271c40df7a485434211313101128221f121f22292f2d2b2c2d2d2f2f2f +2e2d2d2c2c241c18191a18161715161814111217141615232b251b161921 +3f5442242f3b2d151125313340462f2b385943212ba0745857583e1a1424 +30221b27571d182443277636182e33201b1b10080d2239443b184e607683 +b0560722192c2a3f2205100c0c1544224862848ca5a393839a8383668858 +1d13192728614425352e282b5363677b6b4f432d2526312f1b0f14222a20 +603f444132282a1b21273732639b9392a690a1d0d3d0d7cfbe65498c8217 +4f5d383e43494249403f32271b37231e220b20130f222126385131384b3d +35331d182e37311ed2c1cebfcb5a5a54484f4a3a2a282a38363b6c6d5c57 +51435a4b5a2c21283e4e504e4c3f2c1f202928292d63674a4556584d3025 +382222444d4d50504d4e4d47473b232525272f222f533b4431413d273b2a +201f1d2466706e69706a626a6471656c6b6564676861544945453e34333d +3f42403c3c517494957550373e5c88bfe1f1fbff7a37222a2721203038b5 +c8dab53d63362c211d1d1e1c19292b2b1e31201f201b272c2d3231251920 +18262357fffaa28378695b5a65675f63615e5c5c5c5c5d5a5c5e5d5b595a +5b595b5f5d5d595c5b595759251f16141f21293b4c687b8497927e7e7b7c +846544403938372f5c7e798a9da08b7b2311293350b3ac27080d0d14113b +315575689da48386664d3d342b292a2227e3b08c8a5f4028222d1c150000 +011724292d2b2a2c2d2b2f2f2e2e2d2c2c2c251d17181816141512151717 +16191f22272a3543516581939da48e542e30413a332a435c5a5e6966484d +61472230c3bab8c1bc984f221f1a1e274c84492d1532385149182a291e1a +201c23426c89908d98cedcccccff2b1f281c3862945e180300041a492124 +0b0400000000002c4b79558f873117251b272c403a39334d61808c888c67 +505f594d3b453406000521243f4e203e5a78200b212a3328101d5b603b4b +3f54869cacb5bcb156236e7f1a466a3b22102d4b694b071820199a999999 +9a955b1c5366191e58395b8c6e351f1b2133312c089490aad9f1889aaab8 +aba4997c6b60625445654d35433a29353c1619264876a2b3b9b8a27e5a4a +42383633585e402e3740422a24493030628cb0b3b7b1b4b2acab9e80706b +5d5c3d3c6148582a3b3132311e2321304dabdceadfe6e9e0e5deebe0eae8 +eae8e7e5dbcabbb0a89e9d9da1a19d8e6c44221e272a2b282e466893bdd9 +e3f4ff77452e332f2b325556a1d2bab426453d4143454743382e1f21221c +4c43403e473428292b2e373959404f310ad7efe0bad1d8d2c7ccd0ced0d0 +cfcdcbcbcccdcdcecfcecccac9c9c8cacbcccbcacacbc6c6c61b1508060d +0f182c3d5d727f969582857e7d84643f38302d2c25527874899da79a8d2e +15282d48ada724070c080a0428192f3817373415221713171c181a180d0e +b55a23240a0904061910120602000f1f272b29282a2b292d2d2c2c2b2a2a +2a2018121313110e0f0d10121312151b2432393f434043505e6e82825330 +2e34261f121f3639414c472531564111036635161821210f020a0d161215 +46160b082c2c45441931363332372d2e44657a7a727ab3c9c2cbff2e2024 +132b558a5918090a0e1c410817263a484c362a3e829dbd7fac9b3f1b2518 +21273c322e223745667b80866a5f80909692a18a4b1d181b163c4e24425e +7a1d051722323129448ea18ea99fafd3d2c7bebdb363357f88133b65381f +0d2b49694b091a221b9d9c9c9b9a93591a5164171c5637598a6c331d181d +2e2b2a12a6a8b9cec32d1f17190e11170e0b12292e2f59452f403727333c +191a16121b20191215130701091316171c4b5c42323a3d371d1b40241121 +241e1019181a1814171100000b0f211725564353273b2e251f0e13140c00 +2a312e293332292f2b382d332f2c2a292c281d171922221f1b1615151b1b +1617273433241b223a537fbadeecf4f75a2a1a2c291a111c1b7abfb8b928 +3d24170c0a0e11100e080d110d3f3a393944332728282b3136593f442c12 +e5fbda91979c9ca0a7a49d9e9e9d9b99999a9b9b9c9d9c9a989797969898 +9a989897999394931a1407030b0b11253a5b73839c9e8d8f837f86623c35 +2b292823517a7a8fa7af9f91341e303753b7ae2b0d120e120d2e192e3d1e +4442202a1a12141a1c21261e21cf7f4e4c2b201212221a190c08091a252a +2e2c2b2d2e2c30302f2f2e2d2d2d241c18191a1818191416181411121816 +1012242b241d181a2642523525313e2f20101f35343b4442232e54411b1a +926c524f4b3d1d0d1d1f211718491d1b2448364541142a2c241c1b0d0615 +3141402d22587a849de8252532263d66955f180502061b4c25435d809dab +9a817aa5abbe7ba79a42242f232b2e3d3028182a3755696d785f58798a8d +899681461e1f272345562f4d6a86240918202e2e26438fa392ab9ba8cdd2 +d0cdd2c87443878f1a436c4128163654735515262f28acababa8a69e6425 +5c6f222761426495773e281f1c2b2d2d14a8aac0dedd564e4d4f433e3b2b +26283c3d3b63503b4b42323e46201f21293c4e4d484a412d1f1f2726272c +5d6a4e3b41443f241e43261937474f495350504e47473c251f272733242d +5c495a3043372f2b181d1b1815536669626b6b62686370656c6968666566 +60534a46433c35353f4245443b3a517494927150363e5c8ac1e2f1fcff6c +3926332d221c2d2f8fd2cdcd3d52392b1f1c1d1d1b1912161914463f403f +4b392d2e31343b3d5b44544025f0fbce7b72685e5b616762615f5e5c5a5a +5b5c5c5d5e5d5b59585a5b5d5f5f5f5d5e5e5a595a261f15152223283849 +637c8094957c7f7e70776344382e33342d517e75869b9e8a7f1c0617292d +2924010813141d10152f2254858d978e84664f40362b292b251dbcb89b8e +603d272d2504185f7f2e14262c2f2d2c2f2f2d2e2e2e2e2d2d2d2d261d16 +16161413141216181816192126242b374454698899a5a184452d2c3f3939 +2d3c525657636f5c4d5b684532acbab5c0bca55d251e111b1f3a6c4e3317 +304439552128221f1a2020325a7f949da1bed2dacadff50024191f3a5a89 +5f2805010b21412626110c0000060b01180000024c61100018102243432e +343b535768878a86605461574e414b3807000722221b4332414b7f1e140d +162316150c424e2f2521538ca0b3b6c1ba591d65862636732c2740625978 +5e1a231c10b2c4c8c1ccc8841d5d902b203c2e61a1873a12112836333313 +5b5e65a8e0a18f9db2aab0a27a665e655a3c3c4a22181d563582130d2345 +71a1b2b6baa9835d4a3f342f2d365b502c140f191021442d2f5b85b6b2b5 +b1b5b2adada286747160583b2e483936466482701f14221f2e4897d6e6de +e2ebe2e4dae7dbe2e0e9e5e3e0d8c8bbb1a39b9a9da2a4a1926b42201c26 +28292830496d96c1dbe4f4ff57382c332b2d304e587cdcbdc44c333d3c3d +41443d332b292a3032686a675d56321c1a1a253e49765f742e0097f4f4bc +cdd5d3cbc8ced1d0d0d0cecccacbcdcfcfcfcecdcbcac9c8c8cacbcbcbcb +cbc4c4c41c150707101117293a58737b9398808683747862403025282923 +4778708399a59992270a162325231f0007100f1303061d0420392b28201f +1612171c181a190e00875c2b25090603131400196a8a3111242a2d2b2a2d +2d2b2c2c2c2c2b2b2b2b21181111110f0d0e0d11131412151e28303a4242 +4046546377827945322d332829181a2e373a4651392f4d5f31024d371719 +1b2415010704130f153b17080627372b4d202f2f342f342f3b5875808284 +a0b9cbc4e4fd042b18182e4c7d58250a111b273c0e15263c323b3f464b67 +46302965711800120516393a262b2d414253767d7e626384909b9eac914f +1e181710134134454f811d0f050e1e182425647b66686da0cdd1cabcbfbc +693078911f2b6c29243d6057785e1c251e12b5c7cbc3ccc6821b5b8e291e +3a2c5f9f8538100e222e2a2e1b6a7674a0b64b170d150d1d2009040f2a34 +252f431c151a54358518171c181c22180d161a0c040b121414182b585230 +170c0f05183e23141c2126101a181a1813171302000c101d12173d342f40 +647f600b03151610001a2e2a2b3132262b24312529242925232422191415 +191a18171315171d1a16182a3733251e243a5381bce0edf4f03c201b2e29 +1e0f131a55c9becc512e251508060b0d0d0d0f151c235b61605b55311b19 +17223846765d692604a9fff19392979da4a6a2a09e9e9e9c9a98999b9d9d +9d9c9b99989796959798989898989191911b1406040e0d10223756747f99 +a18b9087757a603d2d20242521467a768aa4ad9e962d131e2d302d26050d +17151b0c0b1d04244338382d271911151b1a1f251e14a383594e2b1d111e +1c051e6e8e3a1a292d302e2d30302e2f2f2f2f2e2e2e2e251c1717181617 +18141717151112191a0c11242b25201b1d2c414c2d2c323f322a171b2e34 +343e49352d4a603a18776b514d4542230d1b1820120f371d1b284640284a +1c2826251c1b0e10273a413d384a658692c4f0053526283c5989602e0d07 +10234328415f84899da6a08a8e5934265f701b071e1322423f2424243331 +40646c71575c7e8a9394a18b4c21222720204c40505b8d2313030b181321 +2266806d6e6b9ac7ced2ccd4d1793e7f97263374322d466b62826828312b +1fc4d6dad0d8d18d266699342945376aaa90431b15222c2b321d6d787baf +ce7245424a424a44251d243c412f384b2620255f3d8c1e19242c3b4f4c44 +4b48322220262323273c695f3b2013170b1b40241b314357495351534e47 +47412a212a292f201f433a374a6c886b170d1e1b1a1442626563686c6165 +5d6a5e635f65615f5f5b5048443b3630323e4348473a395175938f715038 +3f5e8ac3e4f2fcfe4d2e25342c231a252f68dcd2df65423b281c181a1918 +151a1e252a626667605b37211f202b424d7660793d18b7ffe87f70645d5f +5f6565615f5f5d5b595a5c5e5e5e5d5c5a595a5b5c5e5f5f5f5f5f585858 +2720181a27252530465f7c7d91987b7f817479613f32272c2f29457b6f7f +95998577100c204554091517180c07131f2448493e888b8c988469514338 +2b292a26257da9988f6137281d231a49c4de3a00272d2f2d2d2f302d2d2d +2e2e2e2e2e2f2a2119181816151713181b1a181b242a212b3a45576f8ea1 +a89c7a3a302b3d3a3d37343f4f565c6a6c4f4971573d98b0b4c1bfaf6728 +221518182f5551361b2a3a3e4d27261f21191f2a4b70848ca6c3d7d5d1d6 +f0a6001720232d324c3a301d0f161f27252518130600020500323c3e2072 +752c1426292f3c4139443a455a88878a82604c2e000000000000000b252d +25422738577e3627242b2d162c103e534905005095a4bbbec3be53145887 +372b561a386a7443675327221511718991938e96742438571c162c2d4d79 +77471e141f2c26241c2e4b350c8fc38daab1aeada57c6c5e59583f2d3a26 +2e52b062971f09213d679cb1b3b8ab845c483e322d2b3974774819091816 +283922375e7fbab3b1afb3b4afb1a88f787161563f2a28272e555560512e +19301f304b86d5e1e1e0ebe0e2d8e6dae1dde2e0dfe0d8cbbeb4a59e9e9f +a6a7a1926a3f1e1c25242628314c7099c4dde5f4ff3b2c292b232b2c4c5b +5ed1c2c2862d3f3d3c40433d332c2b2928253c3727141f1724302b2c3022 +2b2639160045f1ffcdd0cfd5cec9ccd1d1d2d3d0cdcbcbcdcececdcececd +cccac7c7c8c9cbcccbcac6c6c61d160a0c1513142137547378909b7f8686 +787a603b2a1e21241f3b756a7c93a0948a1b101e3f4c030f141709020912 +173c3410422b202a1f1411171c191a1a1004454827240a00060616174ed3 +f04300262b2d2b2b2d2e2b2b2b2c2c2c2c2c2d251a1211110f0d0f0c1115 +1412161f2b303c434342495a687a7d6f3c362e322a2e23141b30393e4946 +303a67420c372d1b1d1a2819000b09100c172f180205202b2f44262d2c33 +2e3138506d767586a2bbbfc7d4f9b5042422202325402f2921232d2a250b +12273d413733373e767a7040857f2d0c18171d2c342f3b30384977787a71 +554a391b22303c3720111316181a3f273a5b8035221c222616321f516e69 +302f8dccccc9c0bebf642c6f9432204f1535677241675329241814748c97 +968e94722236551a142a2b4b7775451c1119221c1e213d6346066971191d +17141a2309080f1f30252033212b4faf639a271b22181821190c151d1007 +0d1516171b2e71794c1c060e0d2233191e211e2c14161618171219160800 +0a0e1915101d20244d545d411808231916010e2e28302f2f23261f2d2125 +20201d1c20211a1314181715131011131b1916192c38342620253b5482bd +e0eef4ed20141929231f0c0f1c34bec3cd8e2a291607070d0d0d0e111414 +162f2e22121e16232f28292a1f2b242c0e085bffffa795919ea9a7a09f9f +a0a19e9b99999b9c9c9b9c9c9b9a9894949596989998979393931c150909 +130f0d1a3452747c96a48a908a797c5e3827191d201d3a7770839ea8998e +2119294b570d191d1d1008111b1e3c33134c392f372719111619191d241d +176271554e2c1714101d1e52d6f24a072b2e302e2e30312e2e2e2f2f2f2f +2f302b211a191917181a1418191612131b1b0910262c272420212f3c4226 +343740353124171d2d333642432d356649216061514f4446290d1f1d1d0e +0d261e182b42322a3f212623271d19172738392f3b5368748cade6b0092d +2e292b2c4a3d3b2c1a1d222a263f62879b9c9c9682a391793d8180321725 +272b373b2e3426283763656b69514b3d2026323b39251a20292b284a3347 +678c3b261a1d1e0e2e1c557574393088c7cbd2cfd4d47438759a3828571c +3e707d4c735f36312723839ba7a59a9f7d2d4160251f3536568280502718 +19211d202440654d14809746514b4847452622242e3b30293b283458b768 +9f2a1b2729354d4c424a4b352421272424283f828657250d161224331a24 +333d5c4c4f4f514e474a45312428282b231923272d585c664c25122c1d1f +1a3462626766695d6058665a5f5a5c59585b595047423b352f303d414545 +39385177948c6e513941608cc5e5f3fcfb3122232e252317213148d1d7df +a13d3e291b181b1918161c1d1d1d36332817241c2935313234262b273d25 +1e69fff894735e5e636063646261625f5c5a5a5c5d5d5c5d5d5c5b5b5b5d +5e5f616261605c5c5c2721191e29242229445d7d7c909b7b827a767d603e +352f312f2a417d707f959d947707141e45711a121f120e0f10283653e24e +45939c807d6855483d2d2726222d4a89838259312e1f2c2133abcc2e1126 +2b2c2a2a2d2d2b2c2d2d2e2e2f2f3030251c1a1a181a1c161a1d1a181c26 +2c2430404b5c7391a0a6967336352c3a393e3e2c2845575a62765c446d5e +549dabacbdbeb46b272319181527424d311e282b51412b241d231c213962 +82817ea5d8d1cdcae6f961001b201c283342282d282d2f2719211d151004 +00131400202a27066252190a142c263a5a503c2e4e6278807d7769633300 +00000000000b11191e21402737483a293b1f313615301967a79b1d005da4 +a7bcc1c1bd4c0f548b45274834554b39327a50231e1d1f160d0907101822 +1e242b252b2d323440544e2e1731342012293884690c95e56fa2aab7a8a2 +817b644c524d423f2a3235652448360e21345991a9adb6ad89624d413531 +3035767b4c1f11211d312d12395c75b2aeaeaeb4b3b0b3ac94756a60584f +38272e3f59504563a1311a1c2e446ec6d4e3dfebdfe0dae8dee5e3dddbdd +dfdbd0c2b6ada6a2a3a5a29c8a673b1b1c2524282d37507098c3dde9f6ff +2e2525241c2a2645564dc5c2b5b12e413c3c41454039342123272a323223 +101a1c2a2b21323e300d140f2f1813dff5d7cdc8d3d6cfcbcfd1d3d5d1ce +cbcccecccbcccdcfcfcecdc6c6c7c9cbcccbcacacaca1d170e101a15111a +375275788f9c7f877e777d5e3a302527252038776b7c94a09f8410171c3f +6b140f1c110b0a091d2d4dd42b0c433c1a1c130f161b181b1d130e12311e +2209000a081f1f3bbbdb351425292a28282b2b292a2b2b2c2c2d2d2e2b20 +1713131110120c1013141217212d2e3b4344434c5f6f7c796637382e342d +2f2b130e2b3b393d4f3d335f45203e2c191c172413000a0c0e0a18271b02 +061b183f382d32323a3231405f776e6587bab9bdc1e6ff6e072422191f28 +3720282a3c3f2e130b11263a3d384242305e665c2d7b5c1800021a142d4f +44312142556b736f64555331081f2625262721171011163d27394a3c293b +1e2e2f0e2f227cc4b53e2798d8cac6c0bec05e2565923d1b403153493932 +7a50231d1f211a130f0d1218221c222923292b31323e524c2c1426281712 +2f4697760a779d0619111d151e0c140f0d263233352731346524483b1c22 +1514231b0c13190c050c16191b202d747f501f0b15122b290e2425182a11 +13131615131b1a0d00030c19231d1824334f4f42558f210d151706063025 +2d252a1e221c2c2227231b191b21241d15141b1b1713100f11171a151a2e +3933252024395684bee0ecf3f0131019231c1d0b171f1ca3c1c1b82b2e1b +0b0b11100f10060c121925291e0e191b292a1e2c382b0d1303261e23f2fa +bd9e8f9caaa79e9fa1a3a3a19c999a9c9a999a9b9d9d9c9b939394969899 +98979797971c150c0d150e0a13314e737994a1888d81797f5f392d242524 +1f397b71839ca9a58a1720274b771e18251912111025324fd43115504a27 +251811171a171b201a1e2d574647260f161026243ebbde3d1b2a2c2d2b2b +2e2e2c2d2e2e2f2f30303331261e1a1a18191b15191b1612141d1d0b1328 +2a25212023323d44293d3b4037342f17112a3834374a382c5c4b36665f4d +4e434829081d1e190e1120241628371e3b31222523281d171f34412a152f +64718298cefb7414332e20242c3f2d3e393732261720375c82979eaca277 +8d7e642c785e1e070e26203653462d1832425863645e5456360e222c2b2c +302e252122244833465748313d1a2929082d217fcac44d2b96d6ccd0d0d1 +d36c306f9c48274b3a5e54433c865c2f2b2c2e261f1d191e242e272d342e +3436393d495d57371b2a2818122f479b7e188fc2314d474f4143292f261e +333b3a3d2e393c6d2c50411d2725304a4b424a4b3624222725272b3c828a +5b29151f1a2f2a0f2b383758484d4d514f4a4c47362021262c32261f2c3f +5a574b629b2c161c211b29605e6862695d6058695d635f5856585d5d554b +45403a3434383b3b3e3c3c567a90886a4e373f5f8dc4e5f3feff261f2328 +1e2414243232bbd1d1ca3e412e1e1b1e1c191a0f161b212c2e24131e212f +30253642310b110f393433f8f4ac80626369625d61616364615d5a5b5d5b +5a5b5c5e5e5d5e5a5a5b5d5f605f5e5e5e5e2d1d17212928282c4458707b +8e9588737b7085704237262d332a2e6d6b7e98a6a0800b0f2e2d33462c21 +16031f10422f58ffa8357a836a766b5b4c443928171627415f72684c3731 +2b281f45759c250f22262b2a2726292d2d2e2e2f2f2e2e2d2b2a27211915 +1516250c1f1f0f232d27323c4852647a909aa1a4572b453f2c3338452e1a +314f606b706d3d638f39b7a9a8bab7b58338211b1a20202935291d2935a0 +502a1c111b152a528792788dbfcdd3c3e0f1fa2b021915274853443f474d +4d4530472018001705001211082234380920120218201c2a4a56553e354a +67776f6f745d662e0600000100001213090e18804a535a4e3b632b1a4648 +251f0f16194a4c6284a0c6c1c5aa8a305e9e412a5938463839313a2e3837 +260f29311c292f38303522261e24273f302d322b3d3f3a35311d21237956 +2489ff6eaba8b7ae9d8d736564594944333a2e302e1e312b312c36547b99 +b1bcb7b1765a4e40463430281b2f2c2925412615251e4875a1acb2b4b7b7 +b4b0a9a0746f6a5b5641263c394d2a4d51531c2f24282f5da8d1eaffe8e6 +e6e6e5e4e2e1d7e1dad5dcd0c1c3ada5a19fa19f99896034181d2c2e2f36 +485e7599c2dbefffee23182f20181d2c2744708be7b4d143563a3f3f3842 +3a3c2e2229332e2c302d302c2a2a30343736363238481e01c3e7efa2c7d4 +d9d7d1d0cfd5dcdbd8d2cdcbd0d3d2cccbcfcfc9ccccced0d2cfcbc7cbc9 +c723130c131c1b191f374f69788d958974796b806b3c3120272d24296868 +7b95a5a3820d0f2c2a30432a2015021c0d3d2c57fc9312453d161f140c0b +1620211c160b101f291e080109121c1d497da1230c1f252a292625282c2c +2d2d2e2e2d2d2c2a29251c130c0a0b19001315091e2a25353b3d3e435568 +73808d472242402c312b36230e2137393f474c2b5270025b3320200a1b1f +00020b0a101518150807161b8a4c3536343c30374f78795e74a7b9c3b6d9 +f0fd30081b14243f4a3d39454d4f44263b141c1c48413947423d5d757941 +492502080c0d214550492e243a5c6f666465494e261f2723282521201912 +12127a4c57594c3b683620413c1a2735463e758fa9bec5d0c0cbb49b3e5f +96331d5236463a3d353e303633220d2c382733333a323520241b21243c2f +2c322b3d39292431282d2f825d2677c9132b141d18151106091b24283029 +392e332e1e2e282e221b20242018171521080a191f2b232d2b1f32261d14 +311e14261119222215191819191a18171900061417231d0f2b2941274c4e +4c10241914061331322834202324252323212018221d1b261c0f1c181a16 +12111418201912172e3c33231b253d6090c1dbe7f4d50b0a271f130d1813 +222a4fdcbed03a4923160f0810060e0d0812201f212a2b302b28282b2f30 +3137322b3a1a07d5f8ed8e9b9ba0a1a4a5a2a7acada8a29d9b9ea1a09a97 +9b9b979a9b9d9fa19e9a969a989621110a10161312162f4663738b958b76 +7c6f846f3e33222931282f6e6f829cadac8e191b39353b4e35281d0a2514 +44335dff9a194f4823281d120f161c1b151417253944371d1112181e1e4a +80a72e15262a2f2e2b2a2d313132323333323231302f2a20150f1013230c +1d1d0b1b21161a1d2725202020243b5b372753523434323d291222373a3e +41431f4a761784675254424d41141218151a191e22191c29248c43241d14 +1d11192e4d4114183d588896c7ebff431e30222d444d444353594e3f243d +22374b8a999eafa18389877b424b2b0a1315142449524b2e1d2d485c5d60 +62484e241921242d2c2b2d251b1b1c865863695a456c321c3e3e202a364a +508697abc0cddcd0d7bea54971ab4a31624352464840493c4341301a3540 +2d3c3f493f412b2f242a2d4337343c354943312a2f22292f8767358fed3f +5e484f453b3323222f343339313f363a36283933372d2c37474d50514e52 +2d23292832293432283b322b243e291a2a1a2b3e4d4a5255545350494441 +1e242d2c34291935364f325457541a2c211f162e5b6a6e7e68696a686966 +64635b655d5a63594b503e3935323233363f41455d7e9184634839446593 +c6e3f4ffeb211b34271a18231c30466becc8de4b5a33281f161b12181611 +1a2624252e2e32302d2d31363835312a32472b15d9f2de73786e69616060 +61696e6f6a645f5d6164635d5b5f5f5a5f60626466635f5b5f5d5b2d1f18 +1d221f212747566d7890a1747885817d5e423c302a2227387f71758398a1 +7900243e2374be60251f0a1119563a45f1c34f586a6d6f665d52493c2816 +1724374f625f43312e251c2e3f0000061223272b2a2726292c2d2e2e2f2f +2e2e2d2e2f2d2923201f201b193f3c1819242936424f58687e919995883c +47372d492a373f2c1a27465f6872774a4b9b5aafb3a5b9bdbe8d41221b1b +201e253027223333854220150e151d3d74908285abd1e0d4cddee9d61301 +1b26222124292722221c1e1f4b2b19000a0b0204040c22130000282d0b12 +2522214346463c3d5168757475676c601c00000000000010120911166420 +1d262a121d1b022a3b2f190600140000358f9fb3c1bca98f365a9c462465 +3636384941453734312b2131231f20373b343826302c2c304c302b2f363b +432721262a2126543f0b4af87aa5aeb1b1a4927867655c4c475053394a50 +45424448382f466e90a7afb7b27b5b4c3d423122424b493b555344402630 +25436897acb5b6b8b7b3aea79e776e695c5240315143333431262a382f2c +2c284c97cbe8f9eae5e6e7e6e4e3e1e8e8e0d9dad3cdc9aea6a09e9d9a94 +845d34181e2d3033394e617596c1dcf2ffe9453f3925282b231c336e7ad6 +aeca534e454542404543413326303c3a35332c2222282f373530272e2925 +331c0f77eff2afbed3d7d5d4d3d1d5d6d4cfcacacad2d5d3ceced1d0cbcc +ccced0d1d0ccc8cbc9c725170e141715171d3d4d69758fa17678817b7759 +3d372b282025357e707482979f7900243e2374be60251f0a1119573b48f0 +b93a3335271f130c0d151e1f1e190d0c1c2b210800060c102c400101000c +20262a292625282b2c2d2d2e2e2d2d2c2e2e2b251d1814150e0d33321216 +2228343b3d3e475a6d787a732b3b322e4e2b2c3227151c30363a47573737 +782057411f1f0b1b1e000007070e1419190f101f19713f2f36363937456c +78646891bdd2c8c5d9e8d717021b231f1a1e242422221a160f3c25251b3d +49403a39425f5c2a3b654e140816191d43453a2a283f5d6e6d6d5c5d4b18 +211b202526221e1a1c20155e2221232612222a0d242f2422363b47292b88 +d0c7c0c4c6b8a0405790391a6136383f50484939312b251e342a2c2d3d3e +363a262e29292d492f2a2f363d3d11102c3b30325943113eca272919171b +191506041722263246523c4d50433e3c3d28171a2323140a0f1a02021218 +231e2047504933473e313826331b1a191e1c1b1a1a191916151700031114 +1b17153b31263131262931231f180912313623201d2021222121201f292b +231f221c161d161613111114181f1a12172e3c322118233c6292c2dbe4f0 +cf2f323522221b13171c2231c6b5c64b4333231610110b0e0d0b1627292a +2d272022262d323026212f261923110f89fffea9999e999aa8aba5a7a8a6 +a19c9a9aa0a3a19c9a9d9c999a9c9ea0a1a09c989b999722140c0f110c0e +133344606e8b9f7578827d7b5d413b312d252a3c84767a889faa850b304a +2f7ec86a2f271219215c404ff8c1413a3d312a1d1312171c181314171f2f +3e361a0b0e10122d4204060c16272b2f2e2b2a2d30313232333332323136 +3430261d16181b18193f3b141116161d2127231e201f2937482349484254 +2d323b2d1920333a3a414c292e7e36817452554954481a1012131a1f2529 +1f1e2b2272361a1711131020454a281a324c7198b2d3eeeb301e33342a21 +202a2b2e2c1d14103f313d457ca0a5a4998a8c6b2b3d68551b111b1a1c41 +433c2a25354b5c676b5a5a4a15140e1f2b2c2b2b2520231d682e2d34371e +28270924332c29363e583c348cd6cfd0d3d0bfa84c6aa85332724245495a +5254453c3731293d3032354b4f45473239323234503532394049491d162a +332b305d4c2156ee535d504948403727202d3133394e5743545a4e4c494b +352731424d4a464a4d2b1e21202922254b565140565144452e3a232c3647 +4f575755534f47423f1f212a282e25214741373c3b2e31392d2823182a58 +6d6b6f68686969696766656e6f6560625c56553d3736332e2d303d454e63 +838f7d5f4337436493c6e3f5ffe84644432d2c261d1b26404fd3bdd45a51 +4134271e1d161718141f2e2f2e312b23242b3238362f25271d1b2d211b8d +fff0917c76685e616364696a68635e5c5c6366645f5e61605c5d5e606263 +625e5a5d5b59261a14181e1d2025374b6d728da32c281f1c1d2521111913 +2021226560758ba8a896002e473cc1fce63d1c201814402f3cbcce6c486b +7661615b524d3f2f1d1c272d415b5b3e2b291d1c16241100162124272a2a +2827292c2d2d2e2e2e2e2d2d303131302d2b2929262e58512b2329333a45 +535d6f83969ca5843c3f372c2d3737393123213b5b60697a5d36977f9fb0 +a6bbc3c2944d271b1d1f1c212c252031305d30151311133059818282aece +ced0b4cfe4f9be0b0a1f1c232c4c705c25050b0b123f2715000900000313 +100c0c00003240130a1b242947403b3d485a68716f6b4a67420d00000000 +00000203030f1e582730465b350b0a012c383003171a0e000018759bb2b7 +b3aa95394f954f1a5f3e302734374135342324262621302732362f2e1932 +33243558312e303f272726242735232a464e1c29f27f91a8a9b8a9997b67 +635a4e47575d333f403d2c414b3a2d3f658dabb8b7b2815e4d3f40332950 +604f2d576347352232293f5f92b0b2b4b7b6b5afaaa1806e6a5d4f3c385c +60403f392e2c3928252723438eceeef2ebe8e9eae9e9e9e6e1dee4e5dfd9 +d4c4b0a5a09c9c9991805a32181f2c2e323a4e627698c3ddf2ffc44e5640 +212434351e2e6965c0bbca7d3649453c4240453b3023282e2b2929202324 +2c3743423a2d26282a2f21181ff0f9c9b4d5d3d0d6d2d6d6d4cfcbc8cacb +d3d5d4d0d0d1d1cdcdcccdd0d1d1cdcacfcdcb22170f131716171c2e4468 +6f8ca32e281d1718231f0f17121f20216560758babab980130493ec4ffe9 +401f231b17433443bfc95d2b3e3a1b16100f161d1d1d181008152b240900 +06061014251200101b212629292726282b2c2c2d2d2d2d2c2c2f302f2c27 +2320201a244e4a27222b35363b3f424d5f727c8c712d34342f343b2e2e2c +1e16253434405a4a2274484940191809191f040003050d1217171012241d +4f3226313533455c75696391b5bdc5abc9e0f9c0110e211b2025466b5923 +050c09073425231c3c363f3c4a4b5261365186752f0f19252b493f2f2930 +435b6a6866455f381833282a30332a19141b211f552b344357310e160c26 +2d26104e6150363177c0ccc3bec1bda94750904b175d3e322e3b3e453530 +1d1e2228283d363a393130193030213255302d303f292112152d4632364e +52221fc62e15130f211d190803142025304c5b3342403b2839402a16151e +221b140f1a080410171f1e2453654f27494e342d21351f18151e221a1819 +181817171802010d14161218444e353d3c312b321c181304092a3b2b1b1d +1e1f21212222211e1c2226221e19121313100f0f12171d19131a2f3b301e +16243d6394c4dce4efaa38493c1e1e24251917201ea9bbc8772934261312 +0a0d090a050d191a1d201b21242a353e3d302725251e1f16182effffc392 +a39998aaaaaaa8a6a19d9a9a9ba1a3a29e9c9d9d9b9b9c9da0a1a19d9a9f +9d9b1f120b0d0f0c0e13253c626a88a12d2a201b1c2624141c172526296d +687d93b2b4a40d3c554acdfff047262a201c483849c4cf62304542231d17 +16191c1915151a19263b3719080d0c12152716051c25282b2e2e2c2b2d30 +31313232323231313736342d27212325242f5952281d1e201d2026242023 +262f4c47264249423a3c333432221a2837333a4f3c197a5d70724e514a54 +4b21101013191b20261f1f2d214e271315110a1a314531224158556c80b9 +ddffd52b2b3a2d2b2c487160300f110a0b3a333d487d8da6a7ae9783753a +52887933131a2026443b2f2a2e3d4b5a6263425d3714291d2a353a33271e +1d23245e364054663f15140828332f184b635e443779c5d3d3cecac4b252 +62a6622c6b483e36434650413e2b2c303430453d474a403d253b392a395c +38353a49352d1d1a2b3e2d34515b3237e959494a414e443c291f2a2f3338 +54603b494a4636464e37262b3c4c50504a4d3120202026232a586b573358 +61473a293c272a304554535554524f48444227202828292025515c434845 +38333a26221f13215071716867676867696767666462686b66625d4c3e37 +34322f30303c444e65848e7b5d4238446595c8e4f5ffc34f5b4a29282f2f +1d213d3cb9c5d5853a45362322181a14150f16202021251f24262f3a4443 +392b201e2029262433fff6ad767e695d6362696a68635f5c5c5d64666561 +6061615e5e5e5f6263635f5c615f5d2217131c252a2a29364c74738caa0a +00100a0f160f0f310613181759667b7c819c8d062e505ccaf4b814041717 +142a263a697832226171626159514c453a281f2a273653573a28272c0d0e +0c0e06180c26282a2a2928292b2c2d2e2e2e2e2d2c2d2e3032312f2f2e2d +2639332328262b3b4a58647489999da744393f3b3a2c263936372d1d3155 +595e726d3f7a9c8da1a5bac6c397572a1e20211a1d251d1928313c271010 +151d4d6d757b99c9d6cccd8cc3dbf78d0006151d221e3f7568311709121a +321c13010b010a10322006312a092e361307132a3f473c383e4b59666e76 +684d612f322a1114191a140a05081114412b4063885e13000a3131300b4c +5e1d23101a5b99b7b0b1ae983f46915f0f574b2b1a2e4d66583410161f13 +55645f5a5f573e183f4319205c536f757925021328262e1c0429321c27da +8595ada3aaa99d816a635a4c4540542322233e335b070e22436e8fa9b5b8 +b389624d413e3627324b5522252f2a1517362c3f5f90a6aaafb3b4b5b3b0 +aa8d716a62503e37525f543759675e261e1f24233a7ec8eeefedecededed +ececebe6dce6ebe0e2e0c8b5aaa39fa09a917c542f19212c2e333c4f6376 +9bc5def1ffd461553f29222e341e2c5b5ea3d2cdad25433f2f403d463839 +2c2b2b282f3d3e1f1b1b2330363730202b3d342b1500c5f7dfadd5d5d2d8 +ced8d6d3cfcdcbceced1d2d2d0d0cfcecbcecccdcfd1d1d0cecfcdcb2318 +141b25272625324771728cac0b00100a0f1510103207161b1a5c6b808185 +a3940d355763d1fbbf1b0b1e1f1c323045737c2c0f4143291e1610151e20 +1d1515081228280e000817020c0d0f051206232729292827282a2b2c2d2d +2d2d2c2b2c2d2e2e2b2a2625261e333122292a2d363b40465265777f8e32 +2c37393d352a302b3228121c312f3752572857653d33181207131e080004 +050d1013130b0f2127372f232c33365a6c65607badbebdc487bfdbf99304 +0d191e1f193970652f191016152b1b21233c3d48496d62569199819a8040 +1b1c31474d3c2a293141556471674c61304c73716c6e6d572e1b22251942 +32475f81581307132b262a1e88af7180818ab0d2ceb9c2c2af514c926212 +574b2e2135546a58300a101b155e726d62655a40173f41161d59526e7579 +2700021b2f422b103139231fb1371a1a09111d1b0b03111d222b33522325 +233c2f5500000d1d29291c1310190f050e161b1f203550551c191c170d16 +39221a19201c1514151718191a1d0c000c14150f13384d4c375c6a5e1f12 +121207031c392f181e1f2021212323241e1723281e20211212120e0d1013 +161b15111b313b301f1926406697c6dde3eeba49483b271c1e2418171b1c +86cccba9142c240d10041009130e1014152334391d1b19212b312d2a1f28 +3127201503d5ffda8fa79f9baba4aba8a5a19f9d9e9e9fa0a09e9c9b9a99 +9c9c9d9fa1a1a09e9f9d9b1e130f161d1e1d1c29416c6e8aab0d02120c11 +1a1414360c1b2021637186878ead9e173f616dd9ffc5211124221f353249 +757f2e1144462f251d161a21211b141e172039381b0b0e1c060f11140b1e +102a2c2e2e2d2c2d2f30313232323231303433332f2b27292a2e293d3620 +211b17191c242424292d36550e26444e503c2d3531382e1821353030474a +205d7a62624c4d4a514b2711111419191c21191a282631241013110e2c36 +291d325a66607761b4dbffab212a32302a1f3b766c3c25161919332b3c51 +7e95adb4d1b089a9a0829a81431c19293c43342928303d4b5a6b63485f32 +4b6a666d73735f3a2623241d473a516e91641b06102d2e342586b07c8f85 +8bb3dbdecacccbb75b5ca47523635337293d5c75643e181e2921677b766f +75694d25494c1f24605a767f83330a0c222c39260e34433336d36150503b +3f443f2d20282d30343c572b2c2d473d610a0d1c324651504e4b4d38221f +202225273a565d28272f2a1a1e402a2b33464d4d4e4f4e4f4d4a48332027 +2a271f21455b5941657166271c1c1e151a426e7465666465666669696966 +5e696e6466664f413936343433333c424d68868e7b5c4338466798cae5f4 +ffd3615a493226292e1c1e353898d8d8b7263e331b20131d131e18191c1b +27393d201d1e263137362e1a2335302e2109d4f6c775857162675c6a6a67 +63615f606062636361605f5e5c5f5e5f6163636260615f5d231814203136 +30273232535a607a09200f091207185ca24e2f34294c5c615b54a2761a34 +3b2a445f2f13332724343a313a45563e537d665e62594f4a4b4635252a20 +2b454b35242219271a3ee9b31c2628282a2a2a29292a2c2c2d2e2e2d2c2c +2c2c2f313332312f3522251f202b242a3f4e5c6a7c909ea09a593a344e25 +3c4938363b331f2b4b555e66735853a28f9aacbecec3985f2c2221211a1c +231b1725332a2612131b3265777189aec1d2dad1a0d7e1f0580009161925 +2949725d2a190015252a16160c0b0300000c00001e1c0f21220907203946 +3934343f4e5b6871725e564b144f39252d2d2f230a00050c1a3122294472 +5b17151d2c171900353c2d23131e5b92acb4b1af97453c886c04383c222e +424c5141471b26321fb5b7b6b7c2b57f3d6e732d26452e3f4d70331f223a +18071b1c9ed4c4bef09087a3b0baa79f866e655c4a40324d221f316d6486 +43362d37587fa3b3b3af8f624b423938292a57854d241313121f412a395f +8b98a8aeb1b4b5b5b2ac967069665948373d252a2349676f340b242c2d39 +6cb5e4e5ededebebececececf7e9eaeadfe9f0dbbcaea6a3a39d907b4d2b +18212d2d344051657a9ec8e0f2ffcb593018242e32251a2b495d7fddc5c7 +3945442f443e4a3b332b2d28243349505246382f2f2d2b24373547393b20 +0482f9f8b4ccd4d3dccfd3d2d1d0d0cfd0cfcfcececfcecccac9cfcdcdce +d1d2d2d1cdcbc9291f1b25343730273231525a627e0d24130d160a1b5fa7 +53343930536368645dac8327414837516c3d2141353242483f4c5562424e +6b46322b1e12131e231c12170b0f2527110509081e183de8b0141e252729 +29292828292b2b2c2d2d2c2b2b29292a2d2d2d2b29301f242022312d2e36 +3b424a586c7c83854a31304f2a454e312d362e14162b2f39465b3f2f6d44 +3322150d111d0f0003050b0e12130b0f23322d32242b33436c6f5d6e8fa7 +bdcdc99cd6e4f76204121c1a2324436d5a281d0920242717242d3b393424 +4846478c9b9da380462a3447513f312527314157676d5f5b54227b9a9ea1 +9d9a783a1d212223352b30406a53141a23260d17157b9c9597999ebdd5c9 +c1c1c3b059468f750c383b25354953554143151f2e21bdc5c4c0c8bb833f +6e712c23422d3e4d70351c1531231a2a26a5dbcdb9cb430e101621191b0e +05111c1e252248211f316b6080382a1b14191f1b140e1512030812141f1f +2b5a8547180002071e4423171e23141513131516181a1d1300061418150e +211524264d6c6f2c01181a12050e2b29131b1c1c1c1d1f1f202b2022221a +242b1e11110d0e1115171b0f0f1b333c2f1f1b28426a9ac9dfe4eeaf4123 +14222b25151416122159ccc5c5262c2d101305140d0d0b0f111124404b50 +44362d2a28211e33313b2c31200f90fff29aa3a1a0afa2a6a4a3a2a2a1a0 +9f9d9c9c9d9a9896979d9d9d9ea1a2a2a19d9b992518141e2d2f281f2a2c +4e58617f0e271610190f2064ab593a3f385b6b706b64b58b2f494e3d5772 +40244236334349404e5562414b6947333024191923271f161d141b32331b +0d0f0e211b42eeb721292c2c2e2e2e2d2d2e30303132323130303230302e +2d2a2d2d36262a241f271c15171a1f23242e353f502b2c3e643e4e523832 +3c341a1b2e2e313b4f38337f655e554e504f492c11121317181b1e161a28 +2e242614151319362e141d3c536a7e8b7fd1e9ff7b2231362c2e2a457361 +35280f242a3229415a7b8f978eaa937ca7a49fa18047262b3a4131282227 +3340505e675a5753257c9195a1a1a07f4625221f223830384e79601b1d23 +2a15221c799ba0a49c9dc0ded9d2ceccb762529f841942412c3b4f595e4b +51232f3d2ec8d0cfcfd8c98f4c787c342c4b3546577a41271f361f142525 +abe5dccfec6d4346484f41403123292d2d2e2c4e29273b766e8c46362928 +34454d4e48493c211a1e1c252730618d5326131415264b2a273646434b4d +4d4d4e4d4b493b1f232b2c241c2d22302f567277370c2226211c325e6d5c +626060606164646572666a6a626c7360453c3b3838393840404c68878f79 +5a443a486b9bcde7f5ffc85935222d342f1f181d293b6edcd1d3393f3d1f +26162218181619191729454f53473b32302e2a22302e3f353c2a1590fbe4 +838376696c5e6566656464636261605f5f605e5c5a5a605f5f6063646463 +5f5d5b1f161219292c24182210293c2027011e260c21295893d19eb2afa8 +adbea3b1bac6bca8b0b0baacb6acc1d3c0bcc1bcbab4b5bcb0b9aa716c61 +5b504b4e4d402d251c23343a2d201d26162d65e79d061f2a292a2a2a2a29 +292c2c2d2d2d2d2c2c2e30303135363532362e3328272c26354454627084 +97a3a48037cba3879787d835393c3524263e50645e726e3c8f959aacbbcc +bf9662291e1f201a1d251d1a272f1e23151b284e717d7e9cb7c8e1ce8cb2 +e3eaf2390d0d111f1f1822342c232e16272d210f1315161210050400001f +0c011419030e3846372c303b485969707460515730004721090e101b1701 +000e1529332f2c3a5c54290c1b301c1801293e19120a114a88a5b7b0af99 +4d317c76003b462842454c83b73a171e220bb2b8adb5beb87a275a681c20 +34384b53713c231e3929142b0e81c3a2baceb299b0b3aaa9a38c72685e4d +403741221b366c545b8864352a4a7ba3b4b3b19a694f483c412a355d865c +3a1f1a1c233c1e2d558595aab1b4b3b3b2afab997069655d564032332a58 +4c6079852b252c2f375ea8e1e8eae9e9e6e7e6e7e7dfdfe5e7eaf2efd8c1 +b4aba7a69f907a472918232e2e364153667ca0c9e2f3ff9e5d37060f2634 +22212b415e64d7c2cc6c494e32454044382c282b251a212f2f110e101724 +2e36382b15190c1e130921faffc8bfccd2e1d7cecececfd1d0d0cdcfcdcd +d0cfcbc8c9d0cdccced1d3d4d4d0cecc2c231d243031261b2412293e242d +06232b142931609bd8a7bbb8b1b8c9aebcc7d5cdb9c1c2ccbec8bed3e5d2 +ced3cecec9cbd0bfc0a55f4e372819131c221d12140d0f1d2013090a1a10 +2863e498001727282929292928282b2b2c2c2c2c2b2b2b2b2b2d2f312f2d +342d342c2e373239373c45505f7482886b29c3a18a9e8fdd3030372e1913 +212e43405751185c503c2a1a14131f160002030a0e1315101428362c3327 +2e39556f6f687f9aafcfc385b1e5f1fd471a1818221d131c2f2921322535 +301f101e3240424539413f5a97999aa2834b374f5743302c292e3c4f616b +5b525b3e1381949899959a7c3b202a2a343c3a3334504824101f2a151a1f +75a89298a09db6d1c4c4c0c1b0613d86840c3b452b474c5387b736111720 +0ebac6bbbec5be80295a661b1d31374a53713e21123335273a1886caaeb8 +ad69241f1911181d1007101b1d22263a1f1b366c52588058270b101f2119 +0e141806071412231f346089592f0e0911203f190e1a261a1a1615141415 +17191400020f181d111223275c5365797f21191c170604222d1b19181818 +18191a1b13161b1f2229261912110d0e1317181b0d0f1e353a2e1d1b2a46 +6e9ecde1e5ee82452a020d2328151818122637bcc0cb59303c181405100d +06070d0b051224290c0c0e151f292f31270f0e011611122cffffb39c9fa0 +b1a8a1a0a0a1a3a2a09d9d9b9b9e9b9794979e9d9c9ea1a3a4a4a09e9c25 +1c151c292a21141f0d273d252d09262e162c34639edeacc0bdb8becfb4c2 +cddcd4c0c8c6d0c2cac0d5e5d2ced3cecdcac9cebab9a15b4c392d1f1c25 +2b24191a141827291c11101e142e68eb9f09222e2d2e2e2e2e2d2d303031 +31313130313432312e2f2e31313933392d27291e1e15161d2128343f493c +0ec1ae9db19ae336353d352119252d3c354c4b1c6b6d615850544f493210 +101116181c201a1e2a2e1d26191a1929342412233e5b8583579de2f9ff62 +3a38343528191e35302e3d2a38372a223a5c7c94a39e9e8a90b2a39fa383 +4a3145472f1f20252f3e505c64554d5a3e19838f929c9ca08446292b2530 +393c39405e542b13202e1d262773a69ba3a19cb9dad6d7cfcdb86a499291 +15434b304b525990c1441f272e1dc7d1c8cdd5ce8e36667123263a3f525d +7b4a2c1c37332135178cd4bccdcc9458564d3f43423425292d2d2c304128 +2340765f638d64341d29445152484944251b211c2b273a6790643d201b1f +29461f1d3046464f504f4e4c4a4a483f1c20282d2e211f3032655b6b8189 +2c2527251c27546e605d5a5a595c5c5f605a5c64686b75725e49403e3d3f +3d3c433f4e6c898c7657423c4b6e9fd0e9f6ff9b5d3c10182c321e1d1e26 +3f4ecfced96c434a2527191d17111217140c172a2d100f131a252f373826 +0f1209211c192efcf4a080766b7164606262636564625f605e5e615f5b58 +5a615f5e606365666662605e19161212191b17101d16232e11293e0d171b +29001a0e191e4430404b650c0d180012150c021d09020b04000206000405 +020000000e1b223e5d5e554c4b4f493a231b1e282c281f191b1f2263de9e +1c282b2a2a2a2b2b2a282b2c2c2d2d2c2c2c3433313234363632292a3025 +21231d334a5c69788b9ea8a67827558e000a99592e3938322922314c625a +6d714668858195a0bcb08d60241b1c1f191e251e182222131a152638686e +7b95b1c8dee1a857b2d4dee016180200121e354f523e33353c3531241811 +151e090c140400000f06000b17101a393f292a37455162706b615d59522b +01381b00000012160309222620293332384642344846584627000026070c +0e023585a6b7b3b3a35c2d707f082c63596e4f30405b4f3f37352095c5ab +b2b1b98b2d5671362b283939324c3d31332c2711210e54cab0b6c4d78aab +b2aeada990736961534640352a212c4126293a33293258809ca8b2b1a270 +544e3f49232c36493532272a291d2d1826467695aab1b4b3b4b2afaaa176 +6d635a5d4a313a254e31364b6e2529272b33559fe0ebe7e8e6e4e3e2e3e2 +e3edebe6eef0e4d3c4b9aeaaa9a08f7544281a252f2d363f56687fa4cde4 +f7ff9c795a221a1c281e27243f545bc8cec9a74c563645433b383a36342c +2326291d27252525262526263622261c282c250cddffe0b6c8cfe0dcd4d0 +cecfd1d1d0ced2cfd0d4d3cdcbccd0cdcccdd1d4d6d6d3d0ce2d27212124 +251d15221b2532152f43151f253309231924294f3d4d58721b1c29102528 +1f15301d161f180c161a12181b1c1918161f221d2c3f342417171d1b1612 +1213191b17100c12181d5ed9991422282929292a2a29272a2b2b2c2c2b2b +292e2b2a2c30323230282b342b2b2f2a383a3f4954677b898d661c518e05 +11a15d2c33332b1e11182e443c51521f38493022121313231f0004040b0f +14150e1126322a2f2735416763677c94acc8d29e54b4d9e8ec25260f0817 +1e334b4d3b31394b43342317192d3f3139413c355b8f989c9c8358434f4d +322d31323745575d575655563a1e7b9d9f9b97a189452e3c392d34413a32 +38342a494751412e23529a8da3b098a8cfc6c2c0c3b56e377a90152d615a +735737445b4b383332239cd3bbbebac0913158713428253737324c3c2f29 +2733242d1659d1beb8a794181c1a151a2112060f1c20252a2a27202c4126 +2734291d1a242c21110f141d07061511281329394c332a16191e1a30160e +1320201b161514121315181a0001091020170d2a2453383a4b681b1f1917 +08012234241a1a1818181a1a1b1c252321282a1b11110e0b0d1317181a0e +1221373a2a19172d4971a2d1e3e6ef80614d1e1a1b1e111e131a2325a0c7 +cb9133482014080b0e141214120e171e172223232321201f1f321c1b1121 +2b2914e3ffd09ba2a1b0aba4a2a0a1a3a3a09ea09d9ea29f99979a9e9d9c +9da1a4a6a6a3a09e241f1a1a1e1d190f1e172231162f46172227350b281d +282d5543535e7a22233014292c2319341e1720170b15181016181915130e +171a17283f382a212329262018171920231f1713171f2365e0a01f2c2f2e +2e2e2f2f2e2c2f303031313030303836312e2f2f33332d30372b2321161a +16151a202b3b49553e06509a1823ae663137393226171b2c3c32464d2246 +62514b424c4849370e0e1116171c20191927251620192222372110182e4b +758f6d35a7dcf4ff44492f232a28384c53423e445046392b25305375798e +9e937c8daaa5a29f86573d433c1d1a232c36475a5c555052553d26839b9a +9f9fa99051373d35262e413d3e4741334d49584838294e9796acb297addc +dbd8d1d0bf7843869a1e32665e765a3d4d655948444334ace0cacec9d09f +3d647b3f312e42423e584a3c322b311e2b185fdbcbcdc6bd4b524d434647 +3725292f313036323028364b32324034292a3b4e4f4848494a281c241c31 +1d3040533e37282b2c23371b1b263d4a504f4f4e4b494947452323252732 +2619352c593e435574262a26231c224e70655b5a5857585b5e5e616d6c69 +737769584b424042434140454252718b8a71513c3d4e71a3d4ebf8ff9979 +5f2c2423271a23192b393fb8d7d8a648572d291c191a211e1f1b151c241b +2626282827262726331e211929333217e3f8c1807b6f7269646462636565 +626063606165635d5b5d615f5e5f636668686562601c1c19161417181915 +211a1511639c172d8b940d17130d29ac726f7192140e1f140f0a1d121309 +161019101c0f0f2206100c0f1210182e3a565c584d484b4d43241e202225 +25211b12202a3b39201a132b2a2a2a2b2b2a282b2c2c2d2d2c2c2c353330 +30333333312e2c2f22272c253c50626f7d8fa2aba85633246c6f88562b2b +3a352e2c20264758576c6f59486b5e7381a49d815c20181c1e1a1d241a14 +1a180b101330467a676fa9cad8e1c4927bd7e2ded1002209081a1b324841 +34383d3a2b3037321811161a03110c00000509100a1925282c2d292e3d4a +515f68553f51563c200121190000000f0f000014151e222d272b2d333926 +06172b2c170331140000003e89a5bdb8bbb06b2c6b8a122f633738384751 +41484936322668c9acbcaeba9b344e71462d26514f3d4e4e465a32392a28 +2031cdb6a4c6f97ba5aeb3b4b095756b65584e4231413935342c422d3433 +35456893afacada270534e3f482d312833303a37473e1f2b1f2c386189a4 +aeb0b2b3b4b2afa97f7363565e4f3142332c2b3239372a372d2b314d92d3 +dee7e9e7e4e2e0e1e1ffffffe3e7e9e0dfc7bbb0aaa99f8c7245291d2630 +2d363f57697fa6cee6f7ff834f301e342b281e25163a4458b9d8c8cc4e5f +3c48493d3e3a2f2a282832342322222526282a2f3422202f26212b1700b9 +f6ecb2cacddddcdbd5d1d0d2d2d3d0d5d2d3d7d7d0cdcfd1cecccdd1d4d7 +d7cdcbc831312d272322211f1a251e1b1769a41f37959f18221e1b37b97f +7e80a1231f3227241f3227281e2b262f26322525381f2d2b2e3027293535 +423c2d1b1417181a13181a191c1c18110b192336341b120e282929292a2a +29272a2b2b2c2c2b2b292f2b292a2f3232312f30342b313933413d424b59 +6c808d90462a226e758f5e2f283530272111122f3d394b4c301a38191608 +101428270409080d101312080a1e2d27292639477055578daebfceb58a7a +d9e9eadf0e321814211e30443c31364148372f322f1d22313927363d4061 +879da9937c664839362c2d34363745524b37474e3d2d1f6aa3a5a8a1a98b +40222c242b2f3c31231f232f25071026343e58a9a39fa498b3d5c3c4c0c7 +be793473981f3061383c3d4f54414442322f2971d9bcc8b7c3a33a527144 +2a234f4d3d4e4d445330453b322534d5c6abafbb0f1b171a1e2413030d1c +21282a243b3835342c40272c2b201a1b1e1c0a0e1a02010f0b241c2c2836 +2e322634321c2e1e180c151f1a1312131415181b20020504081d190b3233 +313236392f1f2c211b0a011d3020211e1c1c1c1c1d1e5e5c3c1f23251a1d +0f0c090b1217171910142438392613132e4c73a4d2e5e6ef6737231a342a +1e131c0a1e191c87cdc7b9365327190f0e16110b0a0d1121271d1d202324 +2325282d1c1a261d1a281a04bdf7e4a0a9a3aca9aba7a3a2a4a4a3a0a3a0 +a1a5a39c999d9f9e9c9da1a4a7a79d9b982828241f1c1c1c1b16241d1917 +69a6213997a11a26221e3abf858385a82a26382b2722352a291f2c242d24 +302222351b292526261d1f2d2f413f342621242828191c1e1e21211d1912 +202b3d3b221d152f2e2e2e2f2f2e2c2f303031313030303936302c2e2e30 +313333372828281c211513171f2c4051602519237a859f6b3a2f39372f29 +18142d362f424834254b3535314242483b10101317181b1e14131d1c1116 +1324253b0b0022415b817c6668d4effaf92f54392e332735454038434c4b +3734383a30405e7973878a808e9fa9b1998268452f251919252f3646544a +35454c3f332a73a3a4afa9b1934c2b2e21242839332e2e30382a09172d3f +4355a7aba7a49abae3dbded3d5cb844180a32735643c3f41525d4b535243 +403a80e8cbd8c8d2b0485d7d4f332c5a58495a5b515b35433531283be0d5 +becce2414f4a494b4b392428303435372d45403f3e384b3337362f2e3b4a +52434448251820182e2633303d393f384740253523231d2f434b4c4c4d4c +4d4c4d4e2a2822203129183c3b37383f433c2d3a2d281d1f47675e5e5d5b +5a5a5c5f62a4a484696f7167644b434143454541454655748c886a49363e +5073a5d5edf8ff804f35283e32271b210e2a2d38a4ded5cd4c61362d251e +211f17151619272e2121232829292b3034201e2b22212f210ac0f2d98886 +73726a6d696564666665626663646867605d6062605e5f636669695f5d5a +201a171917161b231a1d161a171b2d200e1e1e1618180d06070004020817 +141b14121213141414151215140f1116130a0c16150f12171f2e4f9b565f +4b415049311a1a17273421181717492704130a2327272829292928282a2a +2a2a2a2a2a2b2c303135363432312a2d2f2c28272b385461758796a9ab9d +4235211993773125303531312d272c36495969716f3b433b4159999b603c +1c0e171a171932423415070c1217335d716b6cbbdcd7dfa72d7ec8e0dbbb +00220300191d2c2b462f1f0c1400053a30190928646f5f20000002151030 +222927332c3c3d424c616952383e5058381b04171d000000000e0c00091b +1c22581b2a383218170d27313800002b0e00000e1c89a9bbbabaaf793369 +9c2b2b6e392c1d29473e36381d392a5bc4adb5beb3ab422b814610394d2f +33292c2a290b141b2c2519c1adb3c6ee7e9eaca7acaa9d756767534e4543 +66484d535247534a3a2b33659aaab8b4a480574e58523b3151664b415558 +554524274936628aaab2b2b5b3aeacaea08c6c64645850347670212a3935 +3637322a2135457bcdd3deeaede5dedee1e1eff1f5ecd7d3d9d6dac7b5ac +a59a866d3f2919233f403b505e6e83aecfe7faff546258424339202c2b36 +20495c89e5bcc945534c4b3c423538352f2821222b331f33151933232323 +2a252b36192e2e1782f0fdacc5d8dae3dbd5d2d3d6d5d2ccd2ceced2d2cf +d2d8d2cfcccbced2d4d5d4d1ce36302b2a2621242c20231c201d24362918 +2a292126261b14160d13111a29262e272727282929292b282b2a25272c29 +232735342e302e2c3144823134190c1b201e141412222f1c131010411f00 +0b041e2426272828282727292929292929292824262a2f323332332b3134 +353234393c3e3d516473879087342f211d997d37272f332a2721181c2332 +3c474a4510170600001f291a160d080a0d0d0f1e2e27171e2c2b26395861 +54509dc0bfcd9b277dcce9e6c90232120b20202c29442e1f101e0401312a +19153c7a897c49405983a39aa6745a3b362a37363438475140333a454c36 +25205da8a2a5aba18e561d1c25272f6725222a220e160e202c402454a6a1 +a4a8ac93d5c5bfbfc0b681356ca6342a69383022314a3e343419362d64d4 +bfc2cabcb3482f81460e374b2d31272b2821091e2a32291cc9c0beb6b816 +18180e151c1900041918252b335e474d5654475044371d0e202b1b161518 +0c00091f2a272a51694b3b4445493f27263910212925191818140f121a14 +0d00031213160a677126313d352e2c2a221514000e36201e2427211d2023 +243233372c171014141d14090a101415170e1622344634131f345177aed3 +e6e9e736484b3e46391922252b0c221b4ed4b9ba34483a1e06160c0f0f0e +0a0a111e2a1a3113172e1e1c1c231e2530142b2d1785f1faa1adb3a7adab +a7a4a5a8a7a29ca09c9ca09e9b9ea6a09f9c9b9ea2a4a5a4a19e2a242020 +1f1b21291e231c201d233528192a2b2327271e17191018161e2d2a322b2a +28292a2a2a29262927222429261f222f2c262624232a4285383e251c2d2e +241618162835221a18184c2a07160e252b2b2c2d2d2d2c2c2e2e2e2e2e2e +2e2f2f313131312f30322f3437322722201b150b15222f47595e1a232326 +a78b4533353632302b1f1d1f2a343e454719261a1319464d3223140c1114 +1517293930160c1416111f322604002f525d856b1178cdf2f8e424563325 +32292e2a47342b1b200202342e232b5dacc6c08b758198afa7b280613c2f +1d242427314651403037434c392e2e69aba3adb4aa976329202421286427 +2d392f171b1027334b2951a3a9ada9ad9be5dddad3d0c68e447bb23d306d +3d332634534842432a473e73e3cdd3dacbc0563a8d50194256383e353935 +2c0e1d27322c25d4ced0d1dc474b4a3d42444021212f2c33383d694f575f +60515b4e402a203d55504f4b4731181c2e35323259705547565857492e2b +431f374a544f4e4f4c47484c43381e22292625166e762c37463f3d3c392f +21251c35695a5a62655f5c5e636676797f77625e635d5d4e454547464146 +455871869476473f425577aed6eefbfd50615d4c4f41212a272f1535396e +e7cacf47584a331d251a1d1c19141217252f1e34181c342424242a252934 +1a3235218cf3f38f8b8670716d6966676a69645e635f5f63625f62696361 +5e5d606466676663601e1a1a1d1c1a1e26232823261e1c2a1c16201e181e +2020252219211c2129262b151c1f1d1c1e1e1c1c1e1f1f1f212425202720 +1b2328283372cb5c5b584d4b5037211a142025151d2112210c0d11092025 +262728292a2929292929292929292a2c2f3031333131302f302e2924252b +3c5b687d8c9eaab18433313617382a2539323d3a33372616334556677273 +464230344b8a8343220e0c161b171b2b3833220b0a14254769797b95bae4 +d4d45c5f84d0d3f79d0017140c14172a458075450c00030e48272c2f5c5d +6a510e121f14131a26161f243330403f57655e4e3b3545554f311b051422 +000000000c0c000a1b1e203b1f598f782f0c0a1c31240c002a0c00000c1c +85aabbbab9ae7a3162953028623e3324223a59403115221d51caa9b1b7b0 +a84a237a4f2730412e3f5450191d08161f2a2214b0afb2c3ea879caeadaf +afa47e6d6e5a524643592e2224261e411616293368a0a2b7b9aa8b61545a +5032273b4f40313c493c211c1745245c7ba6b0b0b3b2adacb0a3916f6864 +5a5538466d4d363c2f423b261b142a3b6ec4d7dbdcdbdcdddcdad8e5cbc5 +deecddd8e6d0c4b6afaa9c84673b2518233e3b3a4d5b6b86b2d2eafff856 +515c4d5c3c351132391d3c6779e5ccd96c4b53473e423531322e29262a35 +3b517e7433311e24181a304a5e47563e103cfcf2d3b9cad9e1dad5d3d3d5 +d4d3cfd1ceced1d1ced0d6d1cecbcbced2d5d5d5d2ce322e2b2d2925272c +292e292c24253325202c2a24292e2e333028302b303b353d282f33313032 +3230303233333335383b39423e3a43433c3a6cb83e352c1e1b2a2216110f +1e24121a1a0817020509031d242526272829282828282828282828272425 +292d2f3231323334342f2c2e383c424357677c8b9771282e371c3c2e2739 +333b33272b190a2531394046461b1e0a040625240c08090c0b0e10101520 +2322222b2c33485e6661789cc9bfc4535984d3daffab002723181b1a2a43 +7e74440e0503063c1d2a376c6c7c66314f79919b958a5540292a24343347 +4e46392b324449402a221c56a9a0a6aba291581d1b24272b492753816a25 +0d0b152c2b2f47a29fa4a6ac93d1c4bfbbbcb48030619d37255d3d372927 +3d593e2d1121235ddcbcc1c4bcb152297c4f252e3f2c3d524f171505202b +2e2114b8c7c3b9bb251c1e15181c1d06081c1b262732512d2227281e3e13 +16211729371818181c13040b1d241a1d3b52402b2e362e1b1f183a062525 +2419171915101219170f00031012160c356c523d3f2d3a3020150c0f000d +382e1f1a191b2022221f2e110b222d1d1523120c080d151916150c152134 +422b0c1631517cb2d6e9eedf38374f495f3f300a2c300e1a2238ccc5cd60 +403e1b0a170f08090a090c1726324c7c72312c191d111026455942513b0e +3cfff4d0a8a9a6a9a8a7a5a5a7a6a39f9f9c9c9f9d9a9ca49f9e9b9b9ea2 +a5a5a5a29e26222123221f242a292e292c242230241f2c2a242b2f2f3433 +2b3330353f3a412c3334323133312f2f31313131333638353d3632383a33 +336cbc4640392e2b37291a1613232919212213220d10140d24292a2b2c2d +2e2d2d2d2d2d2d2d2d2d2e2f30302e2e2d2f313435342b1f1b1e1a190f18 +20344a665016273922473a3645383e3b3135220c222a3139434922281712 +1b45421f110d0e11151718212d2d22101014192830240c122e6064862c4d +86d8e4ffc6234944322b232c44817c521a0801043c1e2f448393ac9d677c +9ba3a7a49964492d251824233a4844382b2d3f4943312c2c64ada1adb3aa +9a652922232425492a5f90772e110d1c33353543a0a7aca7ac9be1dfdad0 +cdc48e4071aa412c63423a2d2d46634b3c2231336be8cad1d5ccc05f3588 +5930394a394b605d24200c21292f261ec3d3d3d2df544f51444546452926 +333035363c5c352c303428491c1e2c26445f4b504e4c391f1f2d31272643 +594a373f493d25261c42123842524e4d4f4c47484e483b2223282627193d +715643483849402e23191e182e65655c59585a606162627158546c7a6a64 +6f524847494c4b434343566e848c6a3b353d547bb2d9f1fff55250615768 +4637112e33152b415ae2d7e174514f3221281c16171614151d2d37507f77 +36321f2519192f4b5d4657441948fff1c18a7e716e6b6967676968656162 +5f5f62615e606762605d5d606467676764603d3c3f404040454b444b4b51 +4946524556585452544d4d595249504641443d43424d4f44414a4f4c4845 +474a463e424c4f5044414c514d4f74d5454a5b523d4b412f21121b160820 +2212172f68320d1725252728292a2a2a292929292929292a2f2f2f2f302f +302f3133322e292a31426170838fa7adb25e3225342517252f2c24323429 +2d2e1f1c4051647276544228284383773213080e161b1d1e242b3231150a +18395d738591b8c6dbe6a542a5c1cad4f86b071b04000f15243b6f6b4010 +13191b501d2d182632574d081e2609122f1e0b1d2c3d3c4d456168503a31 +374b553b251e060c27000000000d0e00081b0f3040233d6f6a2712131f39 +1b2900370c00000a1c7dabbbb7b7ae7f31558f3c19573c1a2a4844574f2b +1d292135bfa8b4b2b5aa61227966271f342e4a7b7e26150c1e262b21139c +b2aebddf8e8ea6a7aeada7846f6d5b523e404e261b2f474a7a22102a2c5e +a1a3b2b5ad9067555347352d3d5f663e19111f0c172a402953749fadafb1 +b1adadada7947168665b593f2a31212b7379876214111d343958a9d7e0dc +dae8f2ede0d5d4f3f2d9d9dddbded2c5b6ada79a83653b281d2e433c4250 +5e6e8db7d5ebffe6396b573b3a11233a2f311b306a65c8d3da993d57413a +3f373a39322a24242a2f557e882e291d27211e3a4f59455e4e2300f2e1f7 +b0c3dcded9d5d4d3d3d3d5d5d0cecfd0d0cdd0d3d0cccbcbcfd3d5d6d6d3 +cf4f4c4c4d4b494b4f484f4f574f4c5b4e5f625e5c5e5959655d575e544f +534b52515f6156535c615e5b585a5d5951555f62655d5c6a6c605a72c92e +2a372c1729271e140c1917071d1a070b235e2c0a16242426272829292928 +282828282828272424282a2c303031353736332f313a3e44495c6b85909c +4f2a24382a1c282d2a25322d1d212316122f343b42482b250d070e2f2708 +040a120d1014130e13212f2c282c435a666f769ba9c3d39839a0c0cbd8ff +77142a130c171824396f6b421214150f421329203440655c25567b839299 +6d392e23292a3b375050382523344a4b2f1b201747a89ba5a9a1945c201b +2315394b2a37635e22161719321d4743aa9ca2a3a893c9c5bfb8bab4822e +5292401350391b2d4d47574d271b282741d1bcc6c2c2b669287b66251d32 +2c48797b220d09262e2a1e11a6ccc5b9b735141a1115181c0806191a231e +2c44231b324b4d7721132716283f1f15141b13040613171b213c64693b0b +0011041a2e39122726251b1818130f1219191200030e10160f172f243073 +757c570d0f1a2205022a3628191929373429201f3e381d1a1c181a110b08 +0b141a18160e19263e43270d16345585b9d9eaf2ca1b514a373d141e3329 +2b1011251da4c6d6963240170d1611100f0c0a0a111b244f79862c271b22 +1a12304a574359461d00f6e9fba5a6a8a3a7a7a6a5a5a5a5a59e9c9d9e9c +999ca19e9c9b9b9fa3a5a6a6a39f413f42434344494e49504e554d485649 +5e615d5b5f5959655f585f5752564e5554616358535c615e5956585b554d +515b5e60575562635a5473cd3635433b263730241b101e1c0f2625151931 +6936111c29292b2c2d2e2e2e2d2d2d2d2d2d2d2e3232302e2b2b2e303638 +352d231f1f1b1a12191f3b4e6d321f223b2e22313b372a3435272d2b1910 +272c35404a312a14101e494014070911121619191a202b301c0e11212f2f +241d35416384631c9cc6d0e3ff91364b3224241f263a71734f1e18140f41 +112823415a8887517b98929da67a46382828202f2a464c3624222f454a33 +232c2955ad9baab0a79a682d222515364d3043716a2919181d3a294f41a7 +a4a8a3a99bd7dedacdcbc4913f63a14c1d584020345350615a352936354d +dbc7d4d2d2c47634877230283f3956878c31181028302f251eb2d9d5d2d9 +61454b3f4342452c253130332d374f2c253b565682291a30234065504c4a +4c3b211c2425282b446a72461c11200f2131401c36404e4c4d4e4d494b4d +4b3e24232725271b1d3429367d838d681d1c252e1b1f536a665d5c6c7b77 +6c6564858169686b6766524847474b4b4445455a738c8b62392f3e5883b8 +dcf2ffe1356a5c45461b253a2b2d16204442bedae7a743542f2228201e1d +19151317222a537d8b312c2029221e3b505a465f512b0effebed897e766b +6a69686767676767615f6061605d6064615e5d5d616567686865614c4d4e +4e5053585f4f56575e55505d5348494e5e6c635f6c6861675c565a555c56 +64624f495965645a50525e5c4e4d59676658525c625c5f70c3394b5d5e46 +4741402f171715051c1b203f97ee69150f26272829292928282828282828 +2828293130302e2f2e2f2f2c2f35343131354262748591acaeaa3d382121 +2c2a514022222e36342564850e374d6672745d3d221c3a80753111070b16 +1c1f2124263035210e1a43687c92abd0e7cfdc403e88bed8e8b8131e1f00 +15191c202d46402c221a1d21421926150f599f8003183f150c3e120a253c +4c4a524c52483b3a3b3d4a5432232a10053000000000101100051a1c281b +1f437473391c152331133100360c00000a1c74aabab7b7b188364b89501a +534920496f566d70281b2b3028bcb0b5b0b7ad7822717a1b1e36304b737d +411a19262727221386b3aab8daa88eabb2b1aba8876e6d5e554244452722 +456c7795431b21255090a4b2b5ac946b545042452a1b416f572c29121219 +502d38426d9cacafafaeacabaaa998736a645a5b443a291d365c495a641e +0f1128334e95cfe6e2e6fdfffce4d8deffffeedbf0f1e8e0d1b8a69e9582 +653828223c493f4e59677496bbd6eaffc94966506c1d14230f2721203066 +6898d7c8b73c5b40383b39403d342a201c1d1e2f2e380d181c1520182827 +28142f362a00aadcf9b0c5e0dad7d5d4d3d1d2d6d9d0d0d1d1d0cfd0d2ce +cccacbcfd3d5d5d6d3d05a59585857585d61505859635b57675d51525767 +756d6976726d73676165606a6472705d57677372685e606c6b5d5c687375 +6b6975796f6a70b8253441422a2b26261e0c1414041913143189e4631610 +25262728282827272727272727272726262526292b2d2f312e3337373334 +393c434b5f6d8c92952e312026312e503a1c232f2f28195a810928323a40 +4336270f030e322b0b070b11101116160e0e1f3336282a4a626a798eb2cb +b9cb333784bcd7ebbd1a292c04201f1f202b46402e24191715340f251f1e +66ae8d1d4a918b879c522a2c2b3233403e413323252c394a4c271c2a1b3a +aa9fa3a8a19761231c23202c24263f6c6b36211b1d27114a3ca399a1a3a6 +93c0c9c0bcbdb98e35488c52144c46204c74596d6e24192d3836d0c7c8c1 +c7bb812a757c1b1c342e49717a3d12142b2c221b1190d1c6bab9551a261f +18141b0902151a22202e39242248707a9242222415203524151218130402 +0b0f261d1a4672551f16010819542b271e27251c1b18131112151a140002 +0a0c161225241e395a434f591a0f141c080221372f1e243e4e422f232979 +782f1a2b2a221c150a060d161819101c2b4a462314193c5b8ebddae9f3ad +2b4c436a2119200a231d1a14211c6ac1cbbd2f3f1a0e141215130e090507 +0e132929360b161a10180c1c2528122a2a1f00b0eaffacacac9fa5a7a6a5 +a3a4a6a99e9e9f9f9c9b9ca09c9c9a9b9fa3a5a5a6a3a04b4b4d4f4f5259 +605257585f57505f554e4f5664746c6875736d73696367626d6775736058 +687473685e606c685a5965717267636f736b6672be2e3e4d4e36372f2f26 +141b1c0c2420224098ef6d1b152a2b2c2d2d2d2c2c2c2c2c2c2c2c2c2d34 +332f2d2a292d2e2d3234302621201a1713181f3f516a172b252934315648 +282733373225638205212b373f46392913091b4a4216080a0f14171b1c1a +1b2934270f0d212e282732506a6486092485c7ddf4d034494c21362b2420 +2c48483d311f1917340d211e2176c5af406ba9998fa65c353431312d3635 +3a3023242930424a2d24362d48ad9ca6aca39b6c2f2228232f292e4d7b78 +3d241b212f1c513aa0a0a6a1a599ceded8d0cdc69c45599b5f20544f2853 +7a62777b32273a433fd9cfd6d1d6c8903581882527413b577f8b4c1d1b2e +2f28231e9cdcd4d1d88149554c463f452e222e3133303a452d2c517b839d +4a282b203658544c494a3c22191e1e3527224c7b60302911132157302f2a +3f4d4d4f4d4c4a4a4c4f4326232622281e2c2822406551606a291b1d261b +1c466871666b849589766a70c3c37c697b7b6d5c50474244494647455c76 +958b5d3c31465e8cbcddf1ffc4456555772a1f2710241c1e22404287d8da +cb43553124272426211b140e0e15192d2d3b101b1f17231a2a2a2a132e36 +3010c0edfa91847c67686968676566686b61616262605f60635f5e5c5d61 +6567676865625e5e5d5b5e646b7063645f6358515d545955576a7a70656b +5a555d54535d5d6a4e5e5e4b45545d5a57494d626a5f5a62696b60565b5f +5e6468912e4b4b5a51443f473e1d181b0d17221f399bea510b1928292929 +2827262528282828282828293131312e2e2d2e2d2c2f31302f3139476578 +8897b0af952d2d2c1e1f1e43302d1d24313b1392f1032e4b68716c61391d +1c3a7a6e2d11070617191a1f2425272928141f486b809fc0c3e7e0a62766 +77b8cddf81173b2800091212132c3a2e202a33343f341712273117253147 +7c5500233d000e3148514c4949392d324242404d51322b361c023a0b0000 +0011130002162029262d2a2d3a302d1d322c2234063b110200081d68a8b7 +b7b7b494414685661a41503b564d367c994a291f2c22b099b0adb4ae8723 +628624303c2f474b4f442e2c2c2421221268b4a8b7dbcd99c0cab8adac8f +706f665c4f4a3b2a192d43434c371a172b4c7aa2b7b8b29a705955473c30 +27518265312c1b1e224b1a2d326399acaeaeadacaba8ab9b786a62595d48 +30272853504662966a3a1d23355182bbe5e6e8fbfff2e1dad3f3ecd8e3e5 +dde7e5d5bda89e958062322623444c3e5c636c7599bdd8ecffa86d9e5a52 +1d0d153023142834587b73e0bbc75b5f4d373a3d3b393228221f1f1f301c +1315182f122018211e27111c222c1645e7f5c0c3dcdcd7d4d4d3d2d3d7da +d2d4d5d3d2d1d2d1cecbcacccfd2d3d3d6d3d06666636161656b70636461 +685f58675e5f5b5d7080766b74635e665e5d676774576566534d5c65625f +51566b7368636b6f746c6670726d6d67871e3a3a49412f1f26240d11180a +111711288de04e0e1c29282828272625242727272727272726262627292a +2c2e2f2e31312f2d30373d444d627491968220272d2325204125251e252a +2d078bef0021303b3e3c3d2711060f2c230505090a0e0d111410101a293a +2a2d4b636e85a3a6cdcc971c6075b6cade821d443301111913132b393123 +2c302d322a1217364528353d5eaba36298953a2732353735383c2c181a2a +2f374a4d2d26362532aea6a3a6a19b65271d23232a2d342626343037262c +211c4742a098a1a1a495b8cbc2c3c3c29e43458b6814374a395951387c97 +4627213531c4b0c3bec4bc902b668824303a2d45484c4023252d2517180e +72d4c8bfc180293e3b1f141d0e011520272a342f24193047474a37251e21 +2223241d151a1507030c111c202454866324190a1422501922142427201e +1a141312131c170102080a1614192127534d3e558a673c241e130d192c2e +1d2238423627221b382d171e1b121d1e190f080f191b190b1a2d50451d1a +1e415f94bfdcebf68c4c844d502112142e21132218132d3ac4c4d5493f2b +1415140f0d0907070a10142a171113162d0d180a141b270f16141f124af8 +ffc0ada89fa5a6a6a5a4a5a7aaa0a2a3a19e9d9e9f9c9b9a9c9fa2a3a3a6 +a3a0575757575a60696e6364606458505e555b575b6c7e746971625d655f +5e6868765c6b6956505f67646153556a7267626a6d716a636b6e6a6c6c8f +284444534b382a312f171921151f2722389ceb5713212d2d2d2d2c2b2a29 +2c2c2c2c2c2c2c2d3434302d29282c2c2d302f2a211c1e1a191619234154 +5a0f273226251f4433322229323a1393f2001b29383d3c3d251109194238 +100708091111161a191921292e130c1e25222e454876836000547ac1d1e6 +943563511d26231713293e38323b3b34392b0f112f432f44577dc7ba72a1 +993c2c3737362f303426171a2a2b2e414c312d40343eada0a1a59f9b7031 +2429282f353e3536403836232e29264e409c9ca59ea196c1ded6d3d1cdaa +52559b7722425644625a4488a454342d3e38cbb8d1ced3c99f367294303c +473a53595d4f312d31291f211c7edfd5d4deaa576c694d404834222f3839 +3b403b2e23395250553f29242a364553534c4d40261c20212b2b2d5b8f6e +352c1a1f2a531e281e394b4d4f4e4c4b4b4a51462923242028201f252c5b +584d679e78492c252122385a716b71868f82726c65857b666e6d64695f54 +4c44454b47474058759a88543e334a6191bedff3ffa3679d5f5d2a181a33 +2211262632545bddd3e05f5743282726201c17121011171a2e1b16181b32 +14231b252229101a2131295dfffda88879696a6868676667696c63656664 +626162625f5d5c5e616465656865623f41413d3e474d504b453d453d3643 +3d5953484b54463a404f464d42444b49534655594f4a50514c5446485c66 +5c5456575f574c4e4e4e564f4f213f3a555d5a504b442a1a201816171c40 +96c140060f2829292928272625292929292929292a3030302d2e2c2b2b33 +34322e2c3441536c7d8d9fafb0752e2332261b1425112515182934078df7 +002546676d656734192e477f6c29130b0b1416161921221e1821192a4d6e +89adcfd5e7ec411b25182f192c12182627120320292d44443b334a524949 +32290b111d022d261e426000223a00183d4f53493d372d2a364441435647 +30252e1d00360c0000001314000013291b242f3b35342a301c3229323011 +38140500051c5ca7b2b6b3b39d493f817617415332443623503d36372129 +2bc2b8acb1b2b4912d548e3033342d46332f3b433d2f23252f184cb8a7b2 +d3dd89b1beb6a9ae93706e67594a46373f2b2b2d252938281b2f4a73a7b6 +b6b09c755b55494635181b32271d37372d3528191d305a93a9adabaeaeae +a9ac9e7c6e63585d4a362e233c34413f4a220c0e18274478c8e5eae6e9ea +e2dfdfe3e2d9e4f9f3ebf8ddd4c2b0a79a7e5a3228285152416c7070759d +bedcefff844a5a746629022f191f0f242c458164dbbec78c5a653c3f3e3c +3a332d2723211f222a1c261438212021272232222322352400e1f2d7bad5 +e2d9d4d4d4d4d5d7d8d2d6d7d4d2d3d2cfcecccbcccfd1d1d1d5d3d04345 +433f3e44494c47443d47423e4d455e554a50564b3f46534c534b4a54525b +4b585c524d535550584a4c606a60585a57615d585d5d5a5b4e4816322f4b +584b2c2226140e1a12100a0b2d85b73d0b14292828282726252428282828 +28282827252526282a2b2b2b3534312b282f3d444952677f929863221e32 +2b211621051b191c1f260086f8011a2b37373343261115172b1a0003090b +090a0d0e0d11151a312c344d647794b2bad0da34101e152c1429111d2d30 +1c0b242a2d44433e364d4e413d2929142636163e323671ae6e948e2b303d +3b39362e2e22161d2a29354f4731242e2523a5a2a3a5a29f6b2a1f242918 +28333831302d3c272c1e283d48979aa3a3a497afcec3c8c5c5ab4f428879 +11364d30473a25503b323523323ddad1c2c4c3c29d355a923033322b4330 +2c3437332e221a221256dac9bfbc951e33301d0e1d1100111f24252e2939 +2b2f3429273b36262a251f2c1d13161508030a102425151e362510242623 +352d1a17192125201f1b171716161f1a0505090916161d25213b2e38323e +1f1019170b07153c2d1c1a22262320232723181f2f251a29161814101820 +1b120d1e305b471c2427425f98c2e1ecf768294067662d092e171f0e2012 +023120b9cedd7936451c1915100e0a09090c10141c251a2412361c18121a +1f34221d14261e06f5ffdaa6a0a3a5a6a6a6a6a7a7a8a0a4a5a29e9f9e9d +9c9c9b9c9fa1a1a1a5a3a034363634363f464b48423b423b33423a585047 +4c53473b44524a534a4a53515d4f5f6157525858535b4d4d616b61595b57 +605d565a5a5a5e534f1e3b37535e52383032201824201e1b1d4095c2460f +182d2d2d2d2c2b2a292d2d2d2d2d2d2d2e33332f2c2927292934342f261d +1c24231f1b1c2c42583f14223a2e1f11200f261c1f2833078efa00142435 +373443230e192343310a060a0b0d0e121416191a19261611191d2337545f +809c0800181c371a3021334a4d371e2d2e2b424847455e5d4e472e290f1d +30174848508bc57f9e8e27303d3c3830272920172029252a4545352a3832 +2c9f979c9e9b9c7232262b3121333f49403e343a232e24314545939da69d +9f95b5ddd5d6cfcfb65d5198881f445b3b5043315c4840422f3b41ded6cf +d3d3cfab42669d3c3f3f3954413d44453c3427222c2062e4d5d2d9bd4c62 +5e4b3a4837202c3736363b364335383e323242392a3137405a534a4a4028 +1c1f2134301e253f302137362e3d301e1b2134484c4f4c4e4e4f4d534b2f +26231e2622232a26433a494652301c1f1d17193269756f6f757871707074 +71676f81786e775752514c4e514740415b78a38950493b4c6195c1e4f5ff +7f44597972360f341c1f0c211f215845d4dbe88f505c312e27211d181513 +14181a20291f29173b2323252b26332021213b381cfeffc583746e6b6868 +686869696a63676865626362605f5e5d5e616363636765622a2f322e2f34 +3735362e24312f2b362f2c2e2829312c2c363c31372d2d31262b2d32332e +2b2c2c2a3127252f342c26282a34312b2e2b252839272b3d465a62797e59 +4e3c1f1d1c1b2d160d1d2200061b2527282929292928292929292929292a +2c2d2e2c2c292625282b3030333a4859718191a6a9ab4e3429262725222a +161a21253232156299081f3f5d6560713217345188732f181210141c1915 +1c221a0d101e3a587799bcd4dbe8b41c2817170e1916111c071c13070b1e +1b2c2c321e252d271d273a1b061a01260f0b155300223a0024434a4c4535 +292d323945484c5b3f2e181a19002f08020000131500001119234b251e18 +1d1c130815222d200928170800051b52a3aeb0abac9e4e377a7c18566429 +383f3833324c50341f058da0abb9b0b8993a499230222f33402f33333f39 +25202e3f2036bba2abc6e17299a5b0a2ad97706b645347423759483f3f3b +41453828274175a7b1b1ad9e785d5548393a333c4d4744554b403d1a202c +32538ca5abaaaeb1b2afaea18273665a604e2f3d4f453643443e37334138 +2e345cb3e5f0ebe6e4e4e5e4e1eaebe6e8ebeeebded6c4b1a6987a52362d +2d5a5642777a7477a3c5e2efff5c544540253d2c3c2c1c162429447065b9 +c8b8b547743f433e433f372e28221d190a282329102324161c2112201e28 +252e2600abeeecb8d5e4dbd4d3d4d7d7d7d4d1d7d8d3d1d2d1cdcfcdcccd +cfd0d0ced4d2cf2b30302c2a2f3230302a2433343341372f2f292b322e2e +3b3e363b3331372c312e33342f2c2d2d2b32282630362e28282632323136 +352d2b3622213641596670582a2a24121516131e05000c18000e23262627 +282828282728282828282828272122242728282725282b2c2b2d3341494e +566b868e963e2a26292c2b2325091025292824095a9a0a16242d2d2e4e29 +0f17182e1b0001090c080d100c0b131511202d40566b85a4bac1d2a30f1f +121108120f0f1e0c231a0e0f1f1b2c2b352428281e15213e2a21381a3a1e +2344a162948c273d433b37362a21231e1f292c3a5344361b1d1f179a9aa2 +a4a1a2702d2225191d4d291b141d2122130f16222939819ba6a4a599aad1 +c5c8c4c5b2583f8382114b5d2738413a3330494e372817a5b9c1ccc1c8a5 +424f9630222d313d2c302c332d221e21311a40ddc8bcb39d0b1e1917071c +15000d1a1c202a29534843463f3f484736241f242e180e13150903070d17 +28303f514737423a363d1f24271f1c201e1f1c191c1d1c211f0b0a0c0b19 +1914324a423038373236394e3b1700002a2b1e1b1a1c2021232026261c18 +1a1818161a16131920190d112336624a1a2c2d47639fc9e7ecef3e332b33 +2541333b2a1c16200f031e1a92dcd39f1f5724201414100d0a0a0b0c0e04 +2321270e211f0e0d1411221e22151f2000c1fff1a5a0a5a7a6a5a6a9a9a7 +a49fa5a6a19d9e9d9b9d9d9c9d9fa0a09ea4a29f1b202320242b2f2d3029 +222e2d28332a282924262d2929373b323a3130352a31333839343132312f +362c2832352d272827333431383630303d292a3e485f6975653a38311c20 +242231170d1c230711252a2b2c2d2d2d2d2c2d2d2d2d2d2d2d2e2f302d2b +27242223282b2b2521202728241f20313d551c202d322f271d22121b282c +313117659c050f1d2b2e2f4c220c1c2748340b070a0b0c12130f131a1910 +16181a1d1f2c445b6c896f00100f1b1419171d33293f34201821192a303e +343b3c31242b3f2518301741313d5eb8759e881d3741383231241e222022 +28282e48403920242b1d928d989a979c7334262c232759352c2529271f0f +0f1a2a30397f9da79c9d96aeded3d2cbccb9644c9290215b6d34444d463f +3b5459402f19a7bdcedbd1d5b34f5ba23c2e3b3f4e3d433e413729232b3e +284ce7d5d0cfc4384c464533473b2028332f3237365d524c50484a4f4a39 +2b30445b4e4547412a1d1d1f273439465a5148554a414522272b252f4249 +4e4c50535553564f352b262029231b38504b3c494b4846455642210e1a58 +7677737172727574717878706c6e6e675554534d4e50443a455f7baa884c +4d414e649cc8eaf5ff564e4445314a39412f1a14211c214641afe7dcb63a +6d37342826201b16141314140827262c13262619202617211c2422343a17 +ceffdd8474706d6867686b6b6966626869646162615e605f5e5f61626260 +6664610f171b1a191c1b161d130715120b13070d1918151511121f1b141b +181b20101319150d0806080d110c07060b0d0b0c11152121202622141120 +0f2c34494d4672ab67564e26191b1f261c201a0b141b10232526282a2a2a +2b2929292a2a2a2a2b272a2c2b2b2824210b152430373f4957778291a7a2 +a53236341b272a2531322f22272f221a29270f1e37525a5b77381925498a +772e160f0c15201e151a201c0f0723486582a6c6d6ddf46322191e221612 +13190f0c2400061a25193757723909040f0320311d0b4164661b02046800 +1b2f002b4445433c281f2d33354553585a4636140f1600310c0400001414 +0000121f19401042716c440e0c0b2d342817321a080004194b9fa9aca9a9 +9f4d32737e0347602e271e343c44381d1d23088bb9a6b7aab7973d3e8e2e +173740372c3e29292415192e451e25bea5abc4e76e9eadb0a2b3a279726a +57564c3a5d4536373b3f31333220377193acafb1a68165594a443d34394b +4d4648494d372627492c477f9baaadb1b7b8b2b1a88a7a6b5e64533a3c5b +444543493639221f14213955a4d9efefecebeae5dfe5e3e7e8e3ebf2ece7 +dcc8afa0906f482e272c6057417474777aabceeaf0f93a5f474c493a4b4e +3e1d272d2f49576b9fd5a9c02a794044393a37312c28241e1a2e44434731 +2332201e281a252f4334302a0d71e4f7bdd7dfdbd4d2d4d8d8d4cfcfd5d7 +d2d0d1d2cbd0cececdcfcfcecdd3d1ce091115111013110c130b0212120c +15090d161714141013201b141d1a1d22141418130a0603060b0f0a050409 +0b090a0d0f1b1f212a2618121d0a252f464e4a6985383032140d13171a0e +0f0c01111c1422232527292b2b2c2a2a2a29292a29292020222525242321 +0d17232c30343b3f51596b878790222d321e2d2f242c2525232825150c1f +250e131e26282d55290b06102d1d000004060a13150c0b1517110d2a485c +7392aebdc6e0541810181d11090d1711132d050e2129193657723a0a010b +001d322823608888372538b76f918b253f3e302e33281f28201c2b3a4450 +483f181423199998a1a3a1a3742f21231f134012406d6a471a1509272f33 +3f829ca8a5a59ba8d3c6c4bdc0b35b3b7f84003c5a2a271e343c42361d21 +2c179ed1bcccbbc7a34544922d16353e352a3b251d180e1221391c2fdac5 +bcb7af11231d1706201b030f1a192b322a58453a3e3f3e323e3c1b152523 +1c10171b0f070c101e272a384e4d3e3a3b43342726431917211f1f1b1a20 +242223200d0d0d0d1a1b1b2d513f3f3d402d3724231109090a2d29201f1d +21262620241f22231c1d1e192020160d121b180f1323336043132b2d506a +a6cee9e8e421433143493e4e4d3c1d26271919161d6cdfc0b10a5d242414 +0f0d0908080a0d0f2842424630202d150f1d1929313e2621221285f8fbac +a7a5a8a6a4a8acaca7a19fa4a6a09c9d9c979e9e9c9d9f9f9e9da3a19e00 +050908090e0f0b1209000d0a040a000511120f100c0e1b19121c191c2113 +161d18110b0a0b10140f0a070c0c0a0b0e111d22232d291b1624102d354d +524d6e92483f4020191e24281d1f190c18201727282a2c2e2f2f302e2e2e +2e2e2c2e2e28292a292723211f0a121e21201e201b2019203a4059082437 +252d291f282c2d272c2e1f1928280a0d1925292d5324080b1f48390c0708 +08101a1a11121b1b100918222122334a6076a12b00071a24180c11252830 +4c22232b2c1734597a4c1e141a0926362a256596a15c4d60d8879b861a3d +3e2f292a1c172422202c363b47433e1918291c908b9699979d7333242a27 +1d4a1e4e7c754e1a140a2b35373e7f9ea89f9f99ade0d4cec4c6ba664a8f +940c4c6838332840464d41272a331aa2d5c9ddcbd6b152529e3b24434c43 +384c342b2215192a45293be6d4d0d3d43d514e46354c44262c332e3c3d35 +5f4d4346484637423e2225434b4d4649453121201f2d33334055574b494a +4e3b2b2b471f253c44494a4d535855554e352d27202b2623325946494b51 +4045312c1a161921577178777575787670757174756f72756a655d544644 +48423a465e79a68042493d556aa3ceeef3f7375a485455475555411d2429 +252f36448bebc8c622733a392620191414131315152c47474c3627342322 +2e1f2a304233343a268ef6ea908177716a66676b6b666361696b65626160 +5b61605f5f6161605f6563601a1a1b1c1b1b1a191b1a1a1b191a1a191617 +171615181e22191918191b1a1816141b1b141012110d0c0b0b0c0b090d15 +10171f2627241f1d1618253941455471835e454d4b2e1b1e2126241d1a1f +23222b2826272622242a2820242822253030242c322e2318110f020e1f2d +37435566788e98a9b17d40362c2b2b2b2a2c3031232d3a271f231919232f +4a504d675d21283785682e0d0d0d141718151b231f111a31516f8daccad9 +e9e11a222e18221b171b0511082800001a10205165845b1506020e322329 +1c0d0e180b08000000172700274f4b56291e1d182a3e40485d6856300a16 +0d002e180000000f140000221b244027366d985f1a00121d1f3710262800 +02090e3294a6a8bfb1a6671a69932e29732d262041505f69180d170970c6 +b0afafbb9d532c97421438583b51a675211219292e352b08bda7b1b5ed9a +96b8b2b2b1a78d726868583e54652d1d1540325a1a0b2d3a648c9daeb2a9 +90684e4b3f4b35202f301b12232920113a4b2b486e8eaab6b9b7afa9a9a5 +997d606066543a3c504931464c756219262e2d3d4377cde2e7eafdffffe3 +ece5dddedddeeaeeded6cab5a48d61341b1d3e7d4a586e736e80aee5f1ff +d925593c3463553d522b272c322d2a406f7cebbad25e634e332f2d31302e +2925211d1b4052a898323223241a11295d868872411e13f5e9ddcacbd2d7 +d8d3d2d6d3cecdd5d2cacad5d7d1d0cfd0cdcccdd1d4d3d3d10d0d0e0d0c +0c0b090b0c0c0d0e0f0f100e0f0f0e1013191d15151718191816140f1514 +0e090c0b07060505060503070f0a111a2125221d1811121e333c40526461 +352131351e10171a1c1a1310151a1c242324262726282e2e26282922252e +2e22282923160d0b0d0716262f30343c45506372879769302d2a2c2d2c29 +272728212b301c12160f0d11172b2c294541070b052c14080002060f120d +08101c1a0f1427445f7996b2c4d7d10f1a26121c150f15041512360c0d26 +172250607f571104010c2d1927282b405441403c3c7195982c3135273d2e +2d281a1a282c34495953330d2125258e9b859ba59c773513271a213f2630 +67905c1b0416222a4b306daa9eaaa79599d2c7b8c9beb5752671952a216d +2a231f3f505f6c1c1420147dd4c3c4c0cba85a319a41133656394fa47219 +06091a25342f12cdb8c0b3ca4e181f18181d1c0f050e23281f435f2c2018 +402d551b09201820291a1b1b1d19060111152d21152c301a0f1b2116062d +3c18222523201b191c1e1b1614110400081514122741432f464a725c1118 +19111612223523191b365e592d2d24202426211b1e1b1b1209111d1b1114 +233e7028232a3a5476a4dbe2efc41048313063553c4c26232626201d1e22 +35ddc4d4534a311a140d0e0d0a0a0a0e10164155ab98312a18160f143163 +857e66381e1effebd1a59ba4aaacabaaaeada7a4a8a399969e9f999c9d9c +9b9a9b9fa2a3a3a307070808090908090b0b0b0a0a0b0b0b0b0c0c0b0d10 +161a141415161a19171513191b1210100f0b0a09090a09070b130e151e25 +2825201c171625374244556b6f452f3d4128181e2124221b181d1f202b29 +292b2b29292f2e26292b2425312f23292c291d130d0e010b161a16171d18 +0b152948664820282b2e2a272423282b24303824191d100d1115292c2944 +3e060f11482e15070a0d1518151118231e12161d212323334e678d9d000d +231420150c151230365d312a361d214e648668220f0711312235404f7190 +898a7f7193a394253a402b381a16170d1a2b2e354a564c2a061d25238a93 +7c939b947435172b2028472e3a719b63200719252c4a2d69ac9faaa898a0 +e1d8c5d3c4bc803686aa382c77332c274a5a6975251c271a85ddd2d5d2db +ba6c44ab51214463465cb17d241013212a3a381eddcad5cbe87448554c4a +4d463525283836274b6331251f48345b200e2926374842484844391f111d +21392c1d33382218262c1f0e36431e2d363d444747484743423f3725161e +28241b2e4647344e557d6a1e27282028254372706b6d87aca47a7d757275 +76737374696252413e45403b486184b5644f43435574a3dce9fbd5235b42 +3f6f5f44562c24262a27262f4457eecde0635f472f251815141412111417 +1a455ab2a0393526271f1b33638a8774492a22fdddbb8b77726f6d666468 +6664666d6b615d65625c6060605e5d5e62656565651e1e1e1f1e1d1c1c1d +1d1d1e1e1f1f1d1a1a1b1b1a1d2124181818191b1b1b1a2023211a171715 +10151314151310131914181d222423211f13162235424b5b716d5a464644 +36261e212c2e2119212a282f2c2b2a25202329221f292f2622262426292f +2c241a140f0f16222c37475b6c818c9fa6a75a37292d2a2b292a2a2e303b +212b260f33440b1a2645555b716224154383611f09100d080d16171c2321 +1715294d7ba4bed1dce6ab152128171f191b1f0b12072600030e0c1c4f61 +754d19130f18322126201501070000000001181c001f504f5127181c1b2d +3c3e4c6267462a0c1205002a160000000d1300001c17172f25375c816024 +0c101b121b061b270001070e3091a7b0c5b7ab6c1966972a225f31273747 +4f55541412221361bfafb0aab5a25b268a5e1e284138336e72321b28392a +19150dabb9b8b3d68f88b8b0afafa78f746a695f3e4444171b2b6073835c +19333a578297a9b1ad997357533f3a363955776735051014143e49283f65 +85a9b7b8b8ada8adaaa086656268574e3a332c274d516c60501d282c3230 +63c1e3efeef3fffce0dfdfe4f0ece3e8ebe4ddd3bfaa8f5d302225468052 +5f6e717189b7eaf4ffaf1c33264769593b240c283334261a386b75c2c3c7 +7b464e2e332d31312e2927221e283a4e7f702b1f1c151819263c535e5b35 +230ad6fff1b9d0ced5d6d1d1d3d2cdced3d3cbcbd4d7d1d5d2d1cecbcbce +d0d4d4d20c0c0c0d0c0b0a0a0b0b0b0c0c0d0d0e0f1011111215191c1212 +141517171716171a18110e0e0c070c0a0b0c0a070a100e12171c1e1d1b19 +0d101c2f3c4555624f36262a2f271b181b2728180e141b1b252526282624 +272f28252d30262022202528261f140d0a0d16212b3030343d4658627985 +8d462922292a2b2a26262627351a211d0427350006102b393d5343060015 +2d0e00000406070c0907121e1c11091639658ca6bbc9d59f0b1820111911 +121a0a18133510131b15204e5c6e44121210182e141d24313c4e3f3f3c3e +729a984629312735302f2b1d1e282e3c4d573f2a0d1d2223869490a1a49c +7c3a132118162e22325577591f0b152624312059a99da6a5979cd4ccbdc9 +c0b87a266c98261b5a2c2434464f55571819291c6acbc0c2bbc4ad622b8d +5d1d263f36316c6f2c0f1428241d1e17b2c1c7b8bf4d081a16171b190c02 +0c202b1d313e151c2b5f6e7e5a14231819251b1a1a1a1908041511191c28 +4e766735020807042d38172029261f1815191d1b18151206000913122321 +20232651546c5a42060d0d11101e3327221d2a4443271b1b27393d2e1d1c +201e140d141f1f17252f456c29262f3e5d84abdadff1980b261f45695738 +1e05222a281d1e242025a5c3d07d2f2e171c12110e0b08090d12233b5384 +70291710070d1c2e4454544f2a2012e1ffe59aa7a2a8aaa9a9adaca6a6a9 +a49a979d9f9a9f9e9d9a99999c9ea4a4a40a0a0a0b0a0908080909090a0a +0b0b0b0d0e0f0f1013171a12121314181818171c1f1d161313110c110f10 +110f0c0f1512161b2022211f1d11142033404959695b443336382e211c1f +2b2c1d141b22222d2c2c2d2a27282f28252e3226212321232629261e1612 +0e0f13181713131b15090c324f682e1e1c282a292523232428392129220a +2b380008122c383d514106002048280b050e0e0d1213121a2420150d0f16 +293442556d8f6f000f1e13190e0b171832396038342e1e214c607655221a +12182f1e3249637e9c9a9b8e7f9aaa964335412f311b13160f1b292f3f52 +5739200719202285918c9a9e96783a17251d1c3429395d80612611192824 +2f1d56ab9fa8a89da6e4decdd4c7be853684ad342361332d3d4e575f6021 +21332573d7d0d6cdd7bf743e9e6d2b344c413c777836191f3028202521c4 +d6dcced9713b544c4a4b4734242734382437401a20336775845f1a2d262e +42404547443c2216221e242730567c6f3d0b13110e37401d26353a414140 +42413e403d3827181f28242d2726262b545b746651161e1d221f3b6b7171 +6e7a918f736d6d79898c7f7674746b5947414544415a6d8bb1634f44455c +80abdde8fea81b372f53756243280d262b2c22212f3f48b9cdd98943452b +2c1916151211111416293f578a7a34241e161b213046585d59382914dbf4 +d5868b756f6d6461626361686d6c625e64625a6362615e5c5c5f61666666 +1f1f1f1f1f1e1d1d1d1d1d1e1e1f1f1d1a1b1d1d1c1d1f21161615161719 +1a1b22221f1a191a18141514141615111216121112141516171718181819 +1b1c1e252f312b22272f291b1c2c3123171e2b2f2a2423231d191b1e1e1c +282c1c12141212151a1e22211f1a1d1f242c3a4d63728a8da7aa94312b19 +1d1c1b191a1a1e201d21351b0897d10e19243e515c6e5d241c6c8f6a1e0c +140e0d0f1514151c1d17393c4f78a5c3d7e3ea661623221c20191e200f12 +0a2500041d201e332c33292d252125311f1e1f1c040500010000021b1b15 +124a4f4628161f22323c425565604b3f27220d0028150000000812000012 +1c1825253036494133221925130602062a0000050f2f8ca5b2c3b7b1731a +5e9a3825543b2e4d4a46bb903e1b160841c2aeb1a9b2ac691f7a52131933 +4d435c7f3c1d29433118181d8fc8b7b5cea581b3aeaeafa68f7468675d46 +4843222738606060600b2a344f7e98adb5b2a07e625a4b363332416e631a +0e161f2844462d416182a5b5b5b4aaa6afada58a686267584f382b2b3157 +4c5265891e2f3a363564bae7f9f5ebede7e0d9ddefffffece5e6e8e2d8c2 +aa8a582a222548754d5e6b707596beecf7ff741c322b5764604e1a132830 +2c1b16376466a2dbc7b4375830303434332e29272523221c21251d0f101d +1a1c1b1b1713191f2221008efeffb1cfcdd4d5d3d1d2d1ced0d6d3cccdd4 +d6d1d7d4d2cecac9cbcdd3d3d10d0d0d0d0d0c0b0b0b0b0b0c0c0d0d0e0f +1113131415171910101112131516171919161110110f0b0c0b0b0d0c0809 +0d0c0c0d0f10111212131313141617191813110d0b13201e1516272b1a0c +111c201f1d1c1e1c1a1c222220292c1c10100e101111111214151822272c +2f3139424c6165828b7a1d1f11191a1b1916161517161a2b12008bc20006 +1028394254410a023e3917000308070c0e08040b1718112d2a3c638dacc1 +d0d95a0c1b1a131810151a0f18173412152a292232272b20262422252d12 +1523383d4c41424145739c9b7125332c2d2f28282020262f455250413a25 +2a292783929aa6a49f83451b24231924222b31423a2e211c2f231a1b42aa +9ea5a39a9bd1ccc2c7c0bb8127649b341e4f362b4a4946bb9342221d0f4a +cebfc4babfb770247d511217314b415b7c361318322b1c212796d0c6baba +650518141619180c020a1c2925353d20283860606163091d1411211b1b19 +1918080311181219213a6d631a0d10131834371e2427251d151214191818 +16140a00091211211d16202f584f525f7d09141b17161f2927261b1a2426 +1d0d112b4a50351b161e1d150f121a1a13252f456024252c3d6191b2dbe2 +f65d0b252555645e4b140c1f27231515211d1b81d5d0b720361919161410 +0b08090e141b1b24281d0c05110c121c201c140f131720089afff896a7a0 +a5a7a7a9aba9a6a7a9a49b999e9e9aa1a09e9a9897999ba3a3a30b0b0b0b +0b0a09090909090a0a0b0b0b0d0f11111213151710101213141617181e1e +1b161516141011101012110d0e121010111314151616171717181a1b1d1f +1f1e19151c2724191a2b2f1f1218232727242324211e1e2323212b2e1e13 +110f111214181c1d1d1b1c1a17141218211b12103b545505130e181b1917 +1515161a1d213317038fc70108112a3943534009054954310a08120f1214 +120f131d1c132d1c142235465b74932800101714150b0e1a1b323a5d3833 +3b3223302b3631362c26252e1b28486a809a9c9e93869baf9c7033433329 +1d1015141c28314654504037262d2d2d869499a2a19a81451d28291e2a29 +32384a423527213123191840ada1a7a69fa5e0ddd1d3c9c48c377cb04226 +563d3453514ec59c4b2a271953dacfd5ccd2c982378e6120253e564c6385 +401c223a2f1f2631a8e5dbd0d38837514a49494634242531362c3b3f252c +40686866680e262128404348494740281b24271e242942736b22151a1d22 +3e3e2329333841413f40403e413f3b2b1b1f27232c241d24345c565a6b8b +18252b27253c6272776f6d74756c62667d999e85716e746c5b494142413f +5c6d8ca35c4e4144608db2e1ebff6d1b3633627069562014242a28191a2d +3b3c96e1d7c0344e2d291e191712111116192220292d2515131f1b1d2123 +1f18181d25280a96f6e8858d766d6b6661606160676e6c636062615a6564 +625e5b5a5c5e6565651f202020201f1e1d1d1d1d1e1e1f1f1d18191c1d1a +191a1b1616151414151719191916151719191814121316161212130e0e0d +0d0e0e0f101214120f121614121720201a1f2d312a181e2521191a263138 +302c2c2d292627221e252611060b0e06060b131e242522201f242f3e5469 +778f93aab478161d0f0c0b0a090a090c0f0d0409100783c80a2228353c43 +514726328c9677250c110d0f0e0f0b0a12191b4c4f57709bc4dbe1ed331f +282021221d1e1c0e0f0f260300141310334349313241393535271d1a1607 +040002030000151a330e404c3a2a161e27363f455b625247493b2d160028 +1b000000060f00000f1a1c252d3533383c43402d38281621043004020410 +28819fb2bdb6b37b1d559b381346312d444233654c2e2523172fcbafb5b1 +b3b6781f6e75282627372b222d3a212736281d170b74d0abb5d1cd8ab1ad +aeafa7917769665244413e2c262a382f2d4217323d54809cb0b7b4a58568 +5a4239372f35595d371c20282c312b23355b7da1b0b2afa8a5afaea7906d +626456443f353935493d3c4e7b212f3b2b2d54b4e5faf7eee8e3e5efdfd6 +e0e0d6dfedeae7dec7aa85522819234d6b4c5e6b75749ec4edfeff462628 +283f42544f1e1b2c281d16193159628ce4c5d54462402b3839352f2a2828 +262f291c100f1c2b3029211e252925272b2225073af6ffc9bfd0d5d6d5d4 +d4d3d1d4d7d6cfcfd2d4d1d5d4d2cec9c8caccd1d1cf0d0e0e0e0e0d0c0b +0b0b0b0c0c0d0d0e0d0f121312111213101011101011131513100d0c0e10 +100f0b090a0d0d09090d0909080809090a0b0d0f0d0a0d110f0700040605 +0e20282413191c160c0b15222b26222528272627231f25240f0105080202 +020811181e202225292e333d4852686d88975e04100708090a0906050606 +060000060078bb00121521282d3c320e195e4024030305060e0d0200000d +1415413e445b83acc5cddc27141e1717181415160e151c35130e1f1a1131 +3e41282b403a35311a141e324048414141466c98a09a2e3531252c22201e +2125314952443c4036312e2e819699a4a29f874c222b251f262c322e3137 +403f30403628353caca3a6a29b99c9c9c3c3bfbd892a5b9c340e412c2a41 +4133684f32292a1e38d5bfc6c0c0bf7f2270742724253529212c37171625 +221e1e147ad8bcbbbf91121a141619190e03091b1c212e352a272a3b3434 +4918281e18251f1e1918160700080c151d1e2e585d371b1a1c1f241e161c +26241e15111217171816160e02060f0f14201e2d304a403c486f0c171f0f +0e122629291f1d1d1e20211112272f241b211e1c1611121615111c2d4a56 +21262c426099b8dce8f32f151b223d42524c1813231f181114191a2065d6 +ccd92d4029141a16100a06090e1525271d110e16202219151d2b2d251d1f +17231249fdfdb299a0a3a5a8aaaaa9a6a8a9a59e9b9e9e9ba2a09e9a9796 +989aa1a1a10b0c0c0c0c0b0a090909090a0a0b0b0b0b0d1011100f101110 +101211111214161715121113151514100e0f12120e0e110d0d0c0c0d0d0e +0f1113110e1115130d0a10110e16272d28171d211c13121d29342e2a2c2e +2c2829252127271205070a030307101b2225231d191512131b251e1b1841 +5f39000704070a0a070706080b0e05080e047ec200151723292f3b310e1c +695b3e11080f0e14130c06081318153d2c1a1a2b48607496000012121616 +0f0e161a2d3e5c372b31241332424c393b483e35322327436483999d9e96 +8997aca3993b453a221e0e12151e263249524340453d3a3839899b9da4a1 +9d864d252f29242b323935393e474535433728343baea7a8a5a0a1d7d9d3 +cfc8c6943a73b142154833334a493b71583b32342841dfced6d3d1d08f33 +7f84353132403429344020202d2622241d8aebced1d7b342514a49494736 +2625302a2834382f2b32423a3a4f1d312d3146494d4c48422c1b1f1c2128 +28365e653f232426292d251d223038403f3d3d3e3d413f3d301e1d242120 +282631364e4744547d1b272e1e1d2e5e737a72706e6e70766664757d726f +76736d5e4e43413e3f536b8f99574d41496196bae2f4ff3f252c304a4e5d +57241e28221c151a26353c7ae5d4e241583d24241c18121011171d2d2c22 +1616202e2f261f222b2e272529252e1446f5f1a482786e6b676260616167 +6d6b646162605b6364625e5a595b5d6363631f202020201f1e1d1d1d1d1e +1e1f1f1d181a1c1c19171616161716141111141717131010121315171412 +121718151416101011111111101011131313191f1c1821211f1c1c21272d +211516201f151c2d2b201c20242019142520272b17080a0f0f0c0e12191e +1c171e20273444586c78929daab55615130e0a09080708070a0c1b0e0f1d +1465980c20242825252c2c212e7b83742b0b0d110a0b11100e131b20273c +536e9ed0e6e1dd1e26291f222121201b0e0e1a2c070010222c4a4d4f3e45 +483e38333523170d0400000002000010113a112d44362a1c1e293a434a5c +5c462e352e1d10002322010000060d0000081320252d282320222a2f2027 +26203100300702030e21779db1b9b6b486275099561e60434d4c59494446 +4d4c3e271fc1afb3b8b5b7832161871b233944444841524d524631373112 +51d0a8b5c8e28db0afafb1ab967c6d685f4d3d383b34383a2a282e323637 +4d6c98adb4b2a78a6e5c4a4c3c282c30292b313740412f22272f55779faf +b1aea7a7adaea9946f6160554946353d303b36363a4b31383f2a2b48a7db +eff2f5f0e6ebf0e2deedf0e5dfe3f0efe5d0af85532b192b5f6a4f636f7f +78a8ccf1ffef2b2f19313536494329253c25141b242c4c6667cbc5d36054 +51313a3b38312e2b2c2a2837232323202d15271e192128242629302d1f02 +d8faf7b3d1d5d7d8d9d5d4d5d5d6d5d1d1d2d4d2d3d2d1cecacacdcfd3d3 +d10d0e0e0e0e0d0c0b0b0b0b0c0c0d0d0e0d101212110f0d0d101112100d +0d0f12110d0a0a0c0d0f110e0c0c11120f0e100b0b0c0c0c0c0b0b0c0e0e +0e141a170f0d0a0a0b0f1621281c100d1512060b1c1c130f151b1a141223 +1e2526120204090a0704070d1215152024292f35404a536d7a899a3e0306 +060607080703020405110405130a5a8d0014151815151c1c0f184d2d2109 +02010a090a0400040e161a1a2c405986b8cfcdcb121a1f1618161615120c +13253a160a1b292d4848493741473f382f281a1b293d3f3e3e404765949c +aa3f303322281e1a1c2025324a4f3b212926202328759796a3a3a0894d26 +2e2525282e25201b1d272e212c302e4126a6a2a4a19d96c3cbc4c1bfbe94 +35569a52195b404a49584947495150452e26cbbfc5c8c2c08a2463861921 +3742424740514641352b38391b57d8b9c0baab1b1d16171b1c12060a1a26 +28282f3933383d333339372e1b13151f1d17151507000211282217252f29 +2b3031363524171e1a23241f16111116161413161004050b0c17221b2c2b +3c393937401f21240f0f0c242c2b252c2c262825171d39493b261e22201b +18161516131b335a54242b304c64a2c0e0efd9141e0c2b3336473f231b31 +1c141b1b12162c3ab3c9d74932391a1a16100906070e151b322222201821 +07151117252a221b1c282d2c15e3fae390a1a1a4a8aaa9a8a9a8a8a4a09d +9f9e9ca09e9d9a98989b9da3a3a30b0c0c0c0c0b0a090909090a0a0b0b0b +0b0f11110f0d0e0e101113110e0e131615110e0e10111315121010151613 +12140f0f101010100f0f10121212181e1b1416141313161c252c2014121b +190d1324231a161b201e18152621282a1606080d0e0b0c0f171c1c181b16 +1412141a241f1f2844631a000004070a0a070706080c1a0f101c13629506 +18181b16161c1c0f1b58483b17070b120f100e0b0c141a1a121515183058 +7177890000131116121211131727435d37252d3331494c5347504f433830 +312d3e5b80909a9d978c92aba1ab4c3f3b231c100e141f27324849392a37 +352f323681a09da6a4a08b4f283129292d332c2722242e342630322f4127 +aaa6a6a4a19fd1dad3cec8c79d426caf602062475352605150525a594f38 +30d5ccd3d8d2d19a357296272e444d4d4f48594e4b3d2d3a3c2467ebcbd2 +d1cb4c544c4a4b4a3a29273035302f323e3840443a393f3d392a2c374c50 +4e4a46311f1e24362f212d353133383b3f3f2c1d231f2e3842423f3e3f3f +403f4035201c201f232c243231404040424e2d31331e1d26587177747a78 +737677696c8391847470777264584c45424354729d955950435365a2c2e6 +fbe6242e1d394042544d2f263921161d201d2d4551c3d2e05d4a4f2a251e +1b141111181e2438282829232d14211a1a242923232635373213ddf0da7d +7b6f6b6864605f62656a6a6663605e5c6162615e5b5b5e606565651f1f1f +1f1f1e1d1d1d1d1d1e1e1f1f1d1b1c1e1d1916151513161615121114171d +1916141110141a15111013151312130f10111212110f0e16141212120f09 +051b151315151319272e1b15212116182536313033332d24211b17242e1e +0b0a0c0f0c0a0d11130f0b1f252f3b485a6d7b97a5aba0361d0e130d0c0b +0b0b0a0d0f06121009073d580713181b191717171a1b506f6b3011161e18 +1c26271f1a1a1d15304d6ea1d8f2efac1f24221e1f1e22201a120e202e0d +01091a1e2b25352a21201a1c203a2c1d11060000040a03001504291c1539 +342924202a3d474d5d5a46303027140c001a260a06040e12000002131d25 +3221252425110c070f1c223400270503020f1c70a0b0bab9b48f344c905b +1155393c253931313a34271b1716c2b4acbcb6b38e2854900c184c42242f +1e282a342716262e152ecaaeb9b7dd8badb0b0b3ae9c817069645443465e +4a4d47463a3c4a3d435c758ea3aaaaa58d725c3f4537334e5146524a525d +5c3b2d362c4c729bb0b1afa9a9adadac9a736161564d48375148453a353e +37423f3e322f458ac9e3e5f1f1e3e8e6e6eefffff6e3d8eeeee6d0ab7e4b +281d3168624f656f7f84b4d7f5ffbe232e264746363b3f3e43492a16262e +293f6355b2d7ca883c5538393c38332f2d2e2c33432e34362c3a213c3c38 +332b242a30352c2700c8ecffb3cfd5d6dadbd7d6d6d7d6d5d4d3d3d5d5d2 +d2d1cfcccccfd2d5d5d30d0d0d0d0d0c0b0b0b0b0b0c0c0d0d0e0f121413 +110e0c0c0d1012110e0d0f121713100e0b0a0e140f0b0a0d0f0d0c0d0a0b +0c0d0d0c0a09110f0d0d0d0a04000c0404080a0a142229150c1614070411 +2522212628241e1b15111e28180501030906030307090a0920262d323841 +4c5673848e861f0c010b090a0b09060506080008060000334e00080d0f0d +0b0b0b0b072219180e080a17171b19171515151808203a588ac0dcdc9c12 +191815131014151110132a3b1b0d121e1d29202f241d1f1b1c1c2d20212d +403b3f404650669994a55a283226222016171f27334a503e24251e151d20 +669294a1a29f8a4d242926252a35202221200e0b0812242c3f18989da2a2 +a095c2d1c5c2c2be9d425293590c523639243931343d382b1f1e1dcac2bc +c9c2ba942a538e0a164a40222e1d272524160d26331c34d3c1c6aeac2020 +19181d1f15090b1a2a2f2c3b59494d4c514949513a2b27241d1d1716190e +000308231d2247504652494c5352312330192123221b1314161612101714 +0603090b1720193e41443d383c2f322a261a170d142929212e2e24251818 +2b4b5e4f2d15201f1c19161211111f396149232d304e70aecbe4f2a80c1d +19414436393b38393e211a27210d142f2191d7ce711c3f2119140e090507 +0e152339293130242e11282d34352d231f232d2e3612d8f1fb93a19fa3a8 +aaa8a7aaa7a6a4a2a1a09f9f9f9e9d9b9a9a9da0a5a5a50b0b0b0b0b0a09 +090909090a0a0b0b0b0f1113120f0c0d0d0d1013120f0e13161b1714120f +0e1218130f0e11131110110e0f101111100e0d15131111110e0803130c0b +0f100f18262d19111c1b0e0d1a2d29282d2e29221f1915222c1c0906080d +0a0a0b1012100a1a1818151419212127334c53000000090a0d0d0c0a0b0d +100713110a083c57040e11130f0d0d0d0e092d34321c0d141f1d2123221d +1b19150009101c3c68868f6100030e10130f1311121b26455b3827232922 +2c2639322b271f1c1d3634445d808c9ca09e9895b29ca565363a261a140c +111f2a3446473b2e3631272f31749e9ea6a5a28b50282e2a282e3a262928 +2715110d17272e411b9ea2a5a2a59dcee0d6cfcbc7a64f68a66413593d42 +2c41393d4641342a2827d5cfc9d9d0caa239619c1723554b2d36252f2c2e +1e1028372442e4d0d7c3ca4e554e4b4d4d3e2d29303937343f5f4e555257 +4e4f59453b4145494f4d4a4a3b26211d312a2c4f564e5a51565e5b392b34 +1f2b364545434040403e3d4139231b1f1f252b23444849443f473c3f3934 +2824264469726d7a7a71736a6a7a96a4957a64736f665b4e4443455a78a5 +8a5650435472b0cfecfeb51c2d2a4f51424649444446261b292819274538 +a4e1d785335433261d1a1511141b1f2d4130383a2f3a1c333435322a2125 +2d3a3a3d13d5ebf6847f706c6b67605f636566696764615f5f6062615f5d +5d60636767671e1e1e1f1e1d1c1c1d1d1d1e1e1f1f1d1c1c1c1a16131213 +0e1216161313161a1f1d1b19130f162119130f11110f0d0f0e0c0d0d0d0d +0d0d100b0e181a1411161514161918171e252f251e1d1d1c1d1d292b3232 +291a1518120b18271d0d0b0d0707080a0d0e0f0c202a36424d6076879ca6 +b0781e220e160d0c0c0a0a0a0c0e1b0a0b19130b12110f121112130e0c17 +1538766630151b1f20232c2b1f16171b2533507caed5eaef6f2a1d1a221e +1a211d19160d1e29120c2117143e6a9b6a17000009113a2b1e130d000407 +0f08001400172f012c342429282e3f4c535f6053483b2b1510001a30170f +0b1920000000111022443144565e270b10192a2d3a00220805030d15679e +acbab9af933b42806c145048361e2d344555392216180699bfa6bcb8b09c +3348922321564d2c4d433514141f1f2a332922c1adb9b2e08fa8aeb0b3af +9e82726a564c3f466038352c301939241930485e8599a09f9b896b564840 +342d39464034363c414427273a1e466d9bb0b2b2abaaadafb09f7864635a +4f4b3d6258453c3d4a4c382c2532263671c3e3dfe8e8dee8f3eddfd8d5dc +e5e6e8e7e0caa4754323202d604e48676c7c8ebcdff7ff8829292836482b +3351444a442a1a28342d38575ba5e4c5bb3b5a3d363a383431302f2e261e +1615182026291f25251f1b212c2f29271824d5e3ffc6ced3d5d9dad6d6d8 +d7d6d5d5d5d4d4d5d4d3d2d0cdcdd0d3d4d4d20c0c0c0d0c0b0a0a0b0b0b +0c0c0d0d0e101212100d0a090a080c11110e0e1115181614120c080f1a12 +0c080a0a080608090a0b0b0b0b0b0b0e090c1618120f110b090b0f111219 +232a1e1412100c0909151a21231a0d0a0d09020e1d130301030000010306 +090a0b202730353a4554637c8994600911010d080a0a0805050406100000 +0f09010807050908090d08060c000a20130e0c0f181f221f1b151112151b +223c6797bdd4dc5f1d110f16120b131210131026351e172819133c659566 +150000090d2d1f222d443c43434a54659a979d7f27332b1b1f17151d2835 +4a584e40322416201e5c90929a999a8c512426231827473243535b24080f +1a2d3242268d99a3a3a292bdd3c6c3c2b9a0474a836a114d45351d2d3448 +583c261a1c0aa1cbb4c8c2b8a2354790211f544b2b4d433511040e162837 +2d25cac3caadb52c221a181d20170a0b181924253a5b3735303a28482d17 +1b1c1723241d1b2016050515201c1d324540343436393d2022380f1e2425 +1f191618170f0f17170a050a0d151f1c4d4e443f4048462c1c111c100506 +2d34232a281e2220181419252c26201d1d1c1a140e0e10223559361c3032 +4d7bb6d2e6f27212191c30462b314d3e3f3723232e230f142a2379dec8a6 +1f442616120e0805070d1415130f101316191709141f201c1d202221292b +3ce9ecfcaa9f9da0a6a9a5a6a9a6a4a3a3a3a3a1a2a19f9e9c9b9b9ea1a4 +a4a40a0a0a0b0a0908080909090a0a0b0b0b1011110f0e0b0a0b0a0e1515 +121215191f1d1b19130f162119130f11110f0d0f0f0f101010101010130e +111b1d1714171311131718181f2830251c1a191614121e20272821141013 +0e0716251b0b090b0707090b0e0f0e0918181815121a2629313b55300000 +000e0c0f0f0d0b0c0f111e0d0e1a140a110f0d0e0d0e110a081005153b2d +1c111920252829261d171615120e193254738b9a2e00010916160e131011 +1c213d4f382d382519416b9f74220705090e3633455e858aa2a5a49f96b7 +a0a08a323b2e161610111e2a35454d484b453628302e6a9c9aa19d9f8f55 +2829271b2b4c37495a622b0f151f3236452a939ea6a3a698cae1d5d2cbc2 +a9555d967518544c3d25353c5161452f252715acd7bfd6cec5ae42559e2e +2c5f5633554b3f1a0f16192b3a3634dbd1dac3d35a574e4b4d4e402e292f +292d2e3e613c3d39432f4f36242c35374c514f4d4f412c25282d29273a4d +4a3e3f40444527283b142737484a484544433f3f453f271d2021242c2754 +56494647535238291d291c1b326a796d7473696f716a65666d74746f6c69 +645b514542475f749c744d5041537fbad9f0ff7f22262a3c53373e5b4c4d +412a222e2b1b223e3c90ead1b9365b38231d1a1514151b1f1f1b16161a1f +2323151c1f1b171a242c2e363240e8e9fa9f81716e6d67605e6363656868 +66615f60626362605e5e61646666661d1d1e1e1d1d1c1b1d1d1d1e1e1f1f +1d1a1a1916120f0f0f090f15171515181c1c1b1c1a130f1928231a141414 +110f0f12110f0e0f101213150e111d1c0f0c131015161311111211262b26 +181722231a202c3935210f0e15170a121f180f1318111012121210101021 +2d3b4552668293a1a3b35712210e180d0c0c0b0b0a0d0e060c1809061619 +1114120a0b130c0b181a3687652a111511111017150d0c1723252c5294c5 +d3d3d742321516271e1a231b171809161f131415181d3348847129070a13 +153c2514090c0003040b040009070e3d0024331f2c2e303f4f5561675f4c +37241012002041241a152634130007200b1a41212e465435040d19261d29 +00240c09040a0d5d98a9b6b7aa913b3970670d405033283146667340231d +271194cba4bebbb2a93f438d3a1a323938808775240827352e271f25bba8 +b8b7ed9ba3acb1b4b19f84736a65594240531f201e4c2d712d254354617e +9094928e7c5c4943383b302e54684b15141923142a4e2a3f6897afb4b2ad +aeafb0b4a47e67665d58523e5c452d3a52637a37271d3b283768c7eee5e6 +e3dfeef2f9f2e5dce2e7e3e5e1dbc69f704123212c5a41466a6f7e91bee2 +f7ff6531261f1b4d374f81493e35261b263230334b6195ddbedf4d634234 +3937343231312f2e1223191e2c1b322b2b23191c272b221f260b50eee7f9 +deccd0d3d8d9d5d4d8d6d4d4d6d6d4d5d7d6d5d4d1cdcdd0d2d1d1cf0b0b +0c0c0b0b0a090b0b0b0c0c0d0d0d0e100f0c090606060309101210101317 +151415130c0812211c130d0d0d0a080a100f0d0c0d0e1011130c0f1b1a0d +0a11090e110e0c0f100f21241c0d0a1212060d192624100000080a000715 +0e05090e07090b0d0d0e0e0f1e262f353b4a5e7183899b400011030f080a +0a090605050600010d00000e120a0d0b03060e0a060f070831120808090a +100f0a050307121d1a1c3e7eaebabdc332260b0a1a110a120d0e150b1e2b +1e1c1b1a1c3043816f29070b13112f19182343373f3e444d588ea19c9e2c +3731151d19141b28364d5f5f49332012201e59918c8f8c938c5726232f13 +1f46222f455132010c1827202c208999a4a3a28eb9d2c4c2bfb49e474175 +670a3d4f3227314669764326212b159bd5b1c8c3b8ad3e438b3818303837 +8087782200162a2a282229c4becbb8c93e2319171c1f160a0a16262e2734 +4e1e2021553a7e36253531292e2f2924271e0a07161a25232653684b1311 +111b0f284d1f1e2527241c191a180f0e18190b050a0e19221842382b3d55 +63772d190b29170a073e4b312e2921281d212322272a231a212323211b13 +1214253151291d38395480b7d5e5f14f1a1613154b374d7d4333281f252c +211217252561d1bece35502b14110d0806070d131805191417220e21161a +1a181d231f15172a1f6cfff2f5c59e9b9da5a7a4a3a7a5a2a2a4a4a3a2a4 +a3a1a09d9b9b9ea0a1a1a109090a0a090908070909090a0a0b0b0d0e0f0e +0b0a070707050b14161414171b1c1b1c1a130f1928231a141414110f1015 +14121112131516181114201f120f161015171412141514272b2415131c1c +11131f2c2a1807060f11050f1d160d11160f10131414130f0b1514151311 +1a2a343a3f5f14000200100c0f0f0e0d0c1213090f1b0c07191a1215120a +0c140d0a120b134c2c160d1312161514100b0d161d140d2355788183900e +0e020a211a14180d0f1e183141342f2b2624374a8a7a3311101312382d3b +5484869fa19e9a8fafada0a7363e36141816131d2b3446545752422f212d +2b649c95969298905a29263216234a27344b583908121e2c25312691a0a8 +a6a593c4e0d5d0cabda7555488711144553a2f394e727f4c2f2c3620a5df +bad4cec4b94c4f9843233b403f888f812d051e2e2b2c2935d3ccdacce56a +564d4b4d4e402f292e373830385423282a5e43863f314649465358555152 +432e232a26312d315b72551e1c1c26162d522527374b4e4d4847453f3f47 +422a1e21232a30254b4130445c6d8238261735211f30768c7876726b756f +74736e6e726f686b696963574c494d647192634955465886bedff1fe5c2a +23212158435a8b51413226262c291e23343e78ddc8e04b663f231c191515 +151b1f240e211a1f2b182b1f201b141720231e26362870fff4f6be86736f +6e68615e626363656967616062646564615e5e61636363631f202020201f +1e1d1f1e1e1d1d1e1e1d171c1d160e0d0f0f0a131a1a1513181f1e1c1a17 +1413192022080c1e1812130d0f100f0c0e12110d16080f1c14090c11110c +12160f0f1615222a291f191e1f1b192837382c1c16171419131d1d17201f +1b1d1c1d1b1e23282a33404d5d738b9aa6aaae471f2b3129221e1a171818 +1a1a1f1d1c1c1d1e1a120f0f0f0e0e0e0f121c32805f2715150e0b091115 +110f1823292c4071b0caa874382d1f18181b1e20191510121b171d2f984c +0d46595a4a29151608261b241e110e020601090000110305330d061f332b +2e343950585c65553f481f1e11131e3b4237313e472e110a191616261c2e +3b4a402208242b19220112270001020d4d8fa6b5b4b6a7503380851e2b5f +302d3458485c571d15280a8bcbc1beb3c1ac59348f401c2b30405c626f1c +1522442c162510adb6adbae69f81a8aeabafaa8b706a5f5042364a231e21 +6a7c6c4a0f33534c616a707675615458463e4236283f636c3b0c1115183e +462f4e628cacafadacadb2b7b1a68e685c685554463a3917425b4b4f4b1a +1c2a302e5da3e3d3d1d7e9d5f7f6eee9dfdce8e9d5d7d1bd9668401b2040 +4c445160708193cbe0f8f7353d292827382d5a5569361719252530362c3f +6b6ed6c4c7674752303b3d383839383129211b1c222726262a2e2a1f1c22 +2725241f009ae1e4e6ffc2d7cbd8d5e1d2d5d2d9dad5d0d1d5d7d3d3d2d1 +d0d1d1d1d4d4d10d0e0e0e0e0d0c0b0d0c0c0b0b0c0c0d0b12130c050406 +06040d1515100e131a191715120f0e141b1d030719130d0e080c0d0c090b +0f0e0a13050c191106090e0e090f130c0e15121d231f130c0e0f0a061322 +25190b0508040c0812130d1915111315181a1e232724282f37425468788b +9599340d1d26231d1b181513131212151312121516120d0a0a0a0b0b0d0d +0c09042a0c050c09070a080405070a131d1d1d2d5c98b392612921150d0c +0d0e0f0a0a0b14222325369b4c0a4056574a2c18190a240e19232b434542 +3b404558969f9aa256272429171616152936455d5640481f211b2c497a92 +928e91865b2a18231e1b2b1d2f3a493d1f05232a1a232270ad92a09d94af +cfc6c3bcbfb45c3c86851d2a5e2f2d3458485c5a20172a0c8fd4cbc8bcc8 +b059328c3d1a2a30405c65731a08113926152512b6cdc4bfc84a07181413 +1b1f0f04121c22242743221e246e8274500e283a21262320262b201c2b21 +222e2a223f666c3909090d133c4526332522251b15181510101319180400 +16121e1c1c291242604e4d45100f1a200707294e2d24263415241e1f2325 +211b1f1e2d2b29201719112545422b2b32415d84c4d2e6e01e26191c2136 +2d5851632b0b14312d1f1a151d2b34bfbeba5634390e12130c090e121312 +1211151b1d1b16151d211e1b1d1b181e2515b7faf3e5eb98a296a4a3b0a1 +a4a1a7a8a39e9fa4a6a09f9e9d9e9f9f9fa4a4a30b0c0c0c0c0b0a090b0a +0a09090a0a0d0b13140d060509090811191916141920201e1c1916151b22 +240a0e201a14150f13141310121615111a0c1320180d10151510161a1314 +1b19242b281d16191a140c1827291f110d0f0e15101a1c16211e191b1d1f +1f20212218141312131e2e384452620c0012242523221d1a1a1a1f1f201e +1d1d20211d1411111112121212100d0f45261311130f100e0e100f10171f +1d161c3f7289694012151415181a1b190f0e122032333848aa58134a5f60 +5235211e0925152a435c8594a29e9d9592b9aea0ab5d2e282a161618192c +353f524e4554292a24335081999793958b5e2e1b25211f2f2234404f4426 +0c29301f282978b697a39f98badbd5d0c7c8bd684d968f23306437353c60 +526663292336189addd4d2c5d2bb653d974825323848646e7e2512193d28 +1a2d1fc5dbd2d2e274384b48444b4934242b2e2d2e2c4a27262d798e7f5c +1c384f3c4645454b4e3e394232303a342c476f78461414181a414a2b3c37 +46504d464844424443433a20172c242e2a2633184a6657584f1b19252a1a +2c5a886d666a795e736f6d6e6c686869616c6b675d52524d65858164544c +4b5f8bccdff4f02e3626282b4137655f7139171a312f27261d2b434ccfca +cb694a4e1e20211b1b1f211f1c19191c222523201e23221a161a1f212c33 +20bffff8eae682806c72686e5c5f5f686b68616062646163626161626262 +6666651f202020201f1e1d1f1e1e1d1d1e1e1d181c1d160f0e0f0f0b131a +1b16151b211b1916141314181d1611181b0e060f17111312101216151115 +0a0f1a151115150b0f16151321271a1f282b241b171a1d19212e352d201c +1e1e22161a1508100d1214130e0b0c12192c394756657994a2adbe771f19 +1f2515171412101010121215171816141614120f0f0d0e0d0e0e121b317f +5e2613140d0b091114100e151f1a293538404b4e4731261d17171a1d1f18 +160f142226262f242320462a1f29232936303b2e1a0f040b010702090000 +130204251b00202c2d26343b4e5b6665445a4a1519323216000000000000 +0914242a242032252f32393a2315312e14180000210000040f488ea1b2b3 +b7a7532b747c172e5330343d4453fa6d1921092b559b9ea9a6b19c563a6e +462f2d29344b525f29261e2c1c12200e86b3a6b1e0b890aeb5b0b0aa8b71 +6763614a3d4b242b293f3d55632c3a4e455f5e55555a575f74604f3d2724 +4c6c674e190d1731544421394f82a7afb0aeaeb3b7b2a88e6b5c65585a50 +444526404c3b53ac3e2f1e233e447badc8dbfffffddcdcd6d2cbc8d4d5d1 +c4c3b9853e1d1e22434c414f617281a0cee9fddb2b38241f23353a5b5660 +3617151d1d272d263f7576cbd0d99b3758353b3d3737393832271f1a1b20 +2425252a2e28201d222826292901c1e3e2edffd1d0ced4d6e0d6d8d6dad9 +d2cdd0d5d7d1d1d0d0cfd1d3d4d7d7d40d0e0e0e0e0d0c0b0d0c0c0b0b0c +0c0d0c12130c06050606050d15161110161c1614110f0e0f1318110c1316 +09010a140e100f0d0f13120e12070c17120e12140a0e1514122026191c23 +241a0f0b0d0d060c19201a0d080d0d12090f0b01090607090c0c0c0e1419 +252a333a4759718396ac650f0a121b0f1211100e0b0b0a0a0b0d0e0c0c0e +0e0c0a0a0a0b0c0d0d0c0803290b040a08060a0804040609101a0f1b2425 +2a363835231c140d0c0c0c0d090b0a1428302f3727231d40271e29262c39 +3139210f141f414241393e4156949d9da072282e23170d161727374a5d45 +5e4e181c3944352a3331262328221e252f292535263031383720122e2d13 +171957a4919ea29aafd2c5c2bdc0b45f377b7f162d5230343d4453fa701c +230b2d59a4a9b2adb59f56386b432e2c29344b5566291a0d2116101f0e8f +cec0bdca6c1c1f1b181c1f0d020d1e312a2c41222a29413f59672b333d28 +342c1e1e2a2f3f5944372b1d234f6e674c13050f2c51431a241a1c241d18 +1a160f0f111716040011101f2124341f40513f53a93623121822051f3742 +4d7075592721212527231d213234353c210000182a4842292937496393c6 +dbebc4142114131d333a59525a2b0b1029251813131f3536acc4d192233c +1315130b080d121210100f14191d1a15161d221f1c1d1c19232f17defef5 +edf7aa9d9da4a5b0a5a7a4a8a7a09b9ea4a69e9d9c9c9d9fa1a2a7a7a60b +0c0c0c0c0b0a090b0a0a09090a0a0d0c13140d070609090911191a17161c +221d1b181615161a1f18131a1d1008111b15171614161a1915190e131e19 +15191a10141b1a18262c1f232a2c23191517170c111e2520131115171c12 +171409110e0f111311100d0f0f15131212131e3140526e330000091a1318 +18151312121515161819171719181611111112121312100c0e4425120f12 +0e100e0e0f0e0f141e131a1c14131b2021181a19181c1d1c1b100f101e34 +3c3e44362f284a3026312d353e333a2820344e8192a29e9e9492bcb1a5a7 +792d31261910181b2c3947523d61571f233f483a2f39372c292b26202933 +2d293a2b35373e3e27193533191d2161ac94a1a39db8dfd5d1c7c9bd6b47 +8b881c3358383c454c5dff79252f173964adafbbb5c0a86043764e363431 +3c535e70352615251813251a9ed9cdcde1934d544f494c49332327313d35 +32492732334d4c657339434f3e4f493b3b4447546a534437262b587a7359 +21121a335848212d2e41504e4b4c4744434342392116282431312f3e2648 +57485db2412d1c20302246677785aab0986c666665645f60626c696f765d +353b5669887f5d504d4f639cd3eaf9d42431211f273e4466606839171729 +271f1c192a4d50bcd2e0a53c532422211a1a1e211f1a17171b2024221f21 +25221b181a2023313d24e6fffbf5f5997e75746b706264656b6c65606162 +645f616060606264656969681f202020201f1e1d1f1e1e1d1d1e1e1d1619 +19120c0c0d0c0c141b1c19191e24201d191616181919131714151d1d191b +21211f1b1a1b18121f16181a171a1d15141f271f1f3339241c242b2a1d14 +151d1b1b2432322622271f21161b15070e0d0d11100a03030f1a2e3e505f +6d849fafb1c8410e151217080c0c0a090b0a0a0a090f100c0b0f11100f0f +0d0e0e0f0f141c32815f2613140e0b0911140e0b121b141f231c16191c19 +2620181417191c1d1b1a11162e39332f2b2527564d4e4633625f4531391a +1c1b06000601060000140504172c001e242d20333e4f5f6b63352138342c +311812090e0800011d2d2c281c1519352b3431353c3d3e473f33340e0029 +0400040b34829eb0b3b8aa5b25678017304a2e3c47342b46273934252c1e +0b0705000e1e18231c272b2f3432262124233f3a3d3023211759baa6abcf +c885aeb7b1aea98e7366585f44323f292f2a3d2b2f3b2b373d463c3c3635 +383335483a48473021313a29332a312a23241a2128437ba4b0b4b3b2b7bb +b4aa92705f63575b4e4145313a364a3b562825431a2328455e8284a9a196 +adadaaa69f9ea9ae969392836a4b2b1a2646493b49617384abceedffa824 +3122261e18273c52736e221d1f171d27243b5a61a0d7d4cf356f3c3e3c37 +37393934241d1a1a1e2224242a2d261f1d222928272611e2dcdceaffeac5 +d1ced5dedbdcdadcdad1cccfd4d7d0cfcececed1d3d5d7d7d50d0e0e0e0e +0d0c0b0d0c0c0b0b0c0c0d0a0f0e0703030403060e16171414191f1d1a16 +1313151616101411121a1a16181e201e1a191a17111e15171916191c1415 +20282020343823191f2623160a091008070f1d1d110d130e1109110d0108 +0602060a0a0709121b262d38404d617d919cb9320008050d010707080706 +0504040108090504080c0b0a0a0a0b0b0c0c0a09042b0c040a08070a0804 +0404060d160a131309020608081b17100e0c0c0b0b0c0f0c1732423b352d +2323504a4e49386562462f2c0f21363c3f40383a3d53939d9e9c922c331e +190a191b28384d5936263f372d35222426353529263436271f1b181c362c +3530343b3c3b443c30312947a5999ea79ba1cac3c2bdc1b467316f831831 +4b2e3c47342b46273934252c2012100c03111e172219242a2e343229252c +25332a31271e1e1763d5c4bbc08417211d191a1c0d0109102d242135272e +2a3b292f3d2b333235231f161821222a3d28343a2b21353e2b312429221e +21191c17141b25201d1f1a101010171907000e0c1a1b1d312a3a3d513e55 +251e3910130d18172c28483c272d27272d2e2923261b20221f1b18191b2f +4b3e20253c536c9fc6dff2910d1a121a1816273a4e6c631618291f101211 +1c1c2075c0d2cc23511b1a130b080d10120d0e0f14191c1b17191d221f1e +1e1d1b212c27fff9f0edf9c697a3a2a8b0abaca8aaa69d9a9da2a59c9b9a +9a9c9fa1a3a7a7a70b0c0c0c0c0b0a090b0a0a09090a0a0d0a10120b0606 +09080a121c1d1a1a1f2524211d1a1a1c1d1d171b181921211d1f25262420 +1f201d17241b1d1f1c1f221a1a252d2525393e2920262d2b1e1313190c09 +14222218161c181b131a180b120e0a0c0e0c08050b0d1311121214213549 +5b82070000000e080e0e0d0c0c0c0e0e0c10110d0c101312111111121213 +13120d0f4626120f120f100e0e0f0c0c111a1217130300000000191a1b1c +1c1d1b191313121c3b4b46413a31315c53564e3e6e67483033203f657c8f +a19d9d9394beb4a8a1962e36221b0c1c212d3d4d502e29473c313824282a +3c3b302c3a3b2b22201d213b313a363a4142424b4337383252af9d9ea69c +a8d6d3d0c7cabe733f7c8c1d365036444f3c355031434031382c1a151409 +1a261f2a222d32363c3a302e37313f34352a2225236fe0cfcad7ab465551 +4a4a4734232424392f273d2c363448363b493741424738352d2e35343a4b +343f4432293e49373e32362d25281e22212840525350514b464543443c25 +1825212e2c293c31424359475d2e2642181d1e2f37514f7164525e59595a +59535556474b52535453575b708b7a53494e546aa9d5f0ffa31f2a1f2622 +2131475c7c73241f2a2117191724313889d2e0dd3b692c28231c1a1e2020 +171515181d2020202327231d191d21252f3a34fffff7f6f9b87d81757174 +6b6a696d6c635f606366605f5e5e5f6264666969691f202020201f1e1d1f +1e1e1d1d1e1e1d161918110c0d0e0c0d141b1e1c1d22272926211c1d201e +1a1c2a231f30301e192627252121221f19241f1e1c1b272a1b171e281f17 +2328181b1d252c2313111a1d181f31362a222420211a231e0c11100d1211 +0b0406162634455968778eaab9b8ac2b10140c0e0e080908080a0a090907 +0c0c080a1213100f0f0f0e100f11141d3483612713140f0b0911130d090f +171515151a262b200f1c17131214161b1b1a1a0f13303f35292516183a2f +32302b413b2a1c4b21190c050005020700001409000f2e0011212e25343e +536268623c1f29261f3517171106100e1026322b1d211d243c29261e2213 +22251915282c00002e0b000307267b9eb0b2b6a969235d8a1e2d4e25393c +291d4837322d1f2317181b1e1d202729311f281b1c38413c4a454245342a +2a2e301f37beaaa9c3d471a5b3aeaba7917566605a4f3549564040384130 +2d47472a323236363636291e2a29373a2e222c3a3c40454e443e2e193121 +3e789fabafb1b0bbbfb7ad987661635b5a463a41403b31233628360e172a +51141f33473842424354554f4d4848535b50636f52352a180f2845433143 +607486aecdebff6e2a2c271a1b16342927271e343430181c2c2934586682 +e3b7c8395c46403c3636393934241e1a1a1f2223252b2a221e1d23292926 +1943e9d2dce3fefec0cfc9d3dadddedcdedcd5cfd1d4d4d2d1cfcdcdcfd2 +d4d3d3d20d0e0e0e0e0d0c0b0d0c0c0b0b0c0c0d0a0f0d0603040503070e +161917181d2226231e191a1d1b171927201c2d2d1b162526242020211e18 +231e1d1b1a26291c1821292018242717181a22271e0e0a0f0d040a1c2115 +0d100c110d1916090e0b00050c0d0a101c2729323d475369869ba49e1d02 +08010507030406060505040400050501030b0e0b0a0a0a0b0b0c0c0a0a06 +2d0e050a08080a08040303040a120e0b090a12180e011312100f0c0b0b0b +0b0d091233463c2d251212362c323330443e2b1a3e161e24383d3f37383b +50919e9a9d9e392f1f19111b1f2e3948553b222d271e34181f201d2b2924 +2f311f111f1e253d2a271d21122122161225291641a79f9da79b97c7c5c1 +bcbfb3752f678e1f2e4f25393c291d4837322d1f231a1f23252223272830 +1c251a1b38413f4e4d463b241e21282e1d3fdacabfba96071b191615180e +030817262e223f543f3f353d2e2d4747262a2529282b3027222a1d2a332b +25303e3e3e3f43393629182c14141c241c1b1d16121210171c0d020b0c15 +0f112b363b382a3a28350910234c1315101706110e070801030708040000 +00101d0900090f173349351722405c74a4c4dcf3571315170e1514342723 +2016292e3820131b16131d254cc3b9ce273e251e130b0a0d10120d0f1115 +1a1d1d1a1b1d20201f1f1d1c201f59ffeff0e7f2e097a69faaadafaeaaac +a8a19c9fa2a29e9d9b999b9da0a2a3a3a40b0c0c0c0c0b0a090b0a0a0909 +0a0a0d0a10110a06070a080b121c1f1d1e23282d2a25202124221e202e27 +233434221d2b2c2a262627241e29242321202c2f211d262e251d292d1d1f +21292e2515121710060f21261a1419171b172221121712090c100c080810 +151312151415233852676d000000000a0f0a0b0b090b0b0b0b080c0d080b +12151211111112121313120e114828130f1210100e0e0e0b0a0e1616130d +0b11140c011618191a1b19181612140d17384c443831212044373a38344d +452d1b45273c54798da29f9e9294bfb6a4a19f3a31241e131e2535414b4f +3627362c23391c22252534322d3637231324232a422f2c23271827291d19 +2c301d4cb0a19ca69d9fd4d6d1c8c8bd813d73972433542d414431275241 +3c392b2f2325262b282a2f3038252e2223404946575852462e22222a3328 +4ce5d5cccfbb354e4d4745443625232b33392847594747404b3b39535334 +39363a393b3e342d3427333b342e39494a4b4d514741301e321e28415251 +4f514a4b4a4445402b1a23222a221f373e433e3243303d10182a521b2024 +2f1f27252026222121201d1d1f182e433631424e5675897047414f5870ad +d5efff692525241a1f1f3e3431302537383b2218211a1c313d64d8c6de41 +58382c231c1b1e2020171616191e2121202627231f1c1e21262e2f66fff7 +f7f0f4d58186757672716e6d716f686364656562615f5d5e606365656566 +1f202020201f1e1d1f1e1e1d1d1e1e1d171816100c0e0f0d0f151c1f1f20 +24292b2b2723262b2923213d3c2b2820181f21232220222727231e1b1c1b +1d2e34252121292619161d1b1d1b212c28190f131b151a2c34291e1a1f21 +1c28220b09070b0f0d070005172a394b62738399b3c0ce75201d0e120c15 +08090a0a0b0b0a0a0b0d09060e1b1b1110101010111112151c3383602410 +120e0b0911130d070c121213141114181b18131110101213171a16160b0c +26362c2123191927213e3117100d0b094c27291e05000601070000130f00 +101e0301252c282d38586464685876562d274d322a1e16231c0c11222d32 +21212d462d292735291b150e142c3318002a0c00020924819eb1b2b6a979 +25598c1e265c262f2322401c2922222d211e1b1f272d261a1812202b242d +412c1832201a19242930322e232db6a8abc4e778a1b4b0aaa9987a666a4f +57334f7b3f45404743494d3a403e373a36333531303f3d34293038353842 +42474f4a4b37274f24407699a1a7aaa9bcbeb6ab997b645f605c4a404954 +413531303026321a3b3417122b2c261b2a2d3636312d292a3640503e4a46 +3b280d1a293f392b3f5d7288b1d5ecf84237292d2625193c2d353e453f41 +3c1d1c363330596966eab1c36e494d433a363939373326211e1e21232427 +2a261e1b1e20292a2d128fe4d0e6e1f8ffc6c8c3d0d4dfdcdbdfdfd9d6d6 +d4d1d5d3d1cfceced0d1cfd0d00d0e0e0e0e0d0c0b0d0c0c0b0b0c0c0d0b +0d0b0503050604080e171a1a1b1f2428282420232826201e3a3928251d15 +1c2022211f212626221d1a1b1a1c2d332521242c2919161c1a1c1a202925 +160c0c0c0306181f1409060b1110211c080904000309090911202c2f3743 +4e5e738fa3bb6913100408020e0304050606060505060804010916140a09 +09090b0a0c0b0a07052d0d020706070a080403030207100d0c090504080c +0d0e10110f0d0c0a0b0709050c2a3b3124211512231e3e361f14100c073f +1c2c36383c3d36383b4f8d9f95a1994f25241c18191d353a41595476552a +22462d292320312a16141d21261c202c452c282634281a140d132b323141 +a09d9ba8a199d1c9c4bcbcb38531639021295f29322322401c2922222d1f +1e20272c30271b170f1d28232c412c1b362a200f141d2629292035d2cac3 +bfaf15191a16141a1406061f19331e44793e443d4441494d3d403c353832 +3137383943372a26303c3c3c443e41443f4130244a1a1a1e1f1412160f10 +0f0e131d1001050c120f16314a413c3a3733262f1536382920231a190f20 +201a16171c1e191514220d15161717112837432b112243637fa9ccdde52b +20121d1a20183c2b31373c373e41221a2b1e0c202828c3b7d15c282e2313 +0d0c0e11130f1215191c1e201e1c1c1d1f201f1d1d2515a5ffedfae8edf0 +a3a5a0aaabb2aeaaacaaa4a1a1a19fa19f9d9b9c9c9e9f9fa0a20b0c0c0c +0c0b0a090b0a0a09090a0a0d0d110f0906080b090f151d202122262b3131 +2d292c312f29274342312e261e25282a2927292e2e2a2522232224353b2d +292b3330211e2422242228322e1f15130f03081a2419100f161b1a292611 +130d05070a0601050f16141415171a283b55813f000000090a160a0a0907 +0a0a0b0b0c0c0a050f1a1b1110101011111212100c104827100c100f100e +0e0e0b080b1314130f09070b0f1114161617141413120e10090e2b3e352b +2e23223129463a221d170e08462c4b66798ca1a09f9593bcb9a0a4964d25 +291f1b1b243c44475653806335294d332f292a3c35201d24252a2226324b +322e2c3a2e201a13193138384daaa09aa6a2a0dcd9d3c8c8bd913f6f9926 +2e6430392b2a4a26332c2e392c28242930352c201d16242f29324934223f +362c1a1e21272c2f2b40ddd4cfd3d2434b4e4844463c292234273f254c7e +464c484f4c5357464a474043403e4342424c41332f38454447514d4f524d +4c382b51252f444e49494a434a484242412e1d1e242923243e524942413f +3a2e361c3c3b2b232e282319292928232224241f20232f20313c474e4e69 +788366403e4e5c78b4dff0f83d32222824272046383f474d464745251d2f +2316334041d8c3de76434032251f2021202019191a1d2022212329272220 +1d1d21273424b2fff5fff2f1e78f8778797377726f73746e6b6b68646563 +615f5f5f61626162641f202020201f1e1d1f1e1e1d1d1e1e1d1414110b08 +0b0c0a11161c1f202125282c31322f323a3a34293532262325252932312b +2524272622221e1f1c1a252a1d26222a2c211d272b27262a302e20120f14 +1418242d291f1613171525210806050e100b020006182a40536a7f92a8be +c8d63f11180b190d1009090909090909090e0f0a0713221f101010101111 +1214161930815e200c0e0b0a0911140d080c110e0e1211121414130e0e0d +0c0f11151819190f10212b2626382d273351986e2207040b0a3e233d4109 +0005030b0000111101100d1300262c252533576665716b7c5c261a332425 +272c2e221b2c362b1d1c1c2a4530323e58521505141e22262a0c2d0e0000 +061d789fb2b2b6aa8724528b202a623b2e1b2a2d5ea33a152f0c21231f19 +1f1919313022241b273c3b589c95692a1e1a29393c2f4db0a4a5c3f291a2 +b8b5aeaf9e80666a4d512c43742c3433273c5e2600392f2d312c292d2e2f +3b37312c363a2a2c4c4237332c2c1d1b4c2c477c9ba0a9adaeb8bcb3a99a +7e635c5c574c49505d3b3238507c401a101b372612251f25131b1324221d +1a16172530322b402d1e1d04112c39302a435e728fbde0f6cd2d3a293023 +262246383a4043423a321b223a37354f6251d2c2c7b644524439363b3b38 +342a25221f202225262a221a191c1f282a2f11c8d9d2e9e1f3ffd8bec3cd +d0ded9dadedfdbd8d8d4cfd6d5d4d2d0cfcfcfd0d1d10d0e0e0e0e0d0c0b +0d0c0c0b0b0c0c0d08090600000203010a0f171a1b1c2023292e2f2c2f37 +373126322f232022222631302a2423262521211d1e1b1924291d26252d2f +211d262a2625292f2d20120a0802041018140a030207091e1b0706040104 +07070a12212c353d48586a829aabc535050c001003080404040505050404 +090a05020e1d190a0909090a0a0b0a0904022b0b00030204090804040303 +070f0c0c09060305090c0c0f11100d0b0b0c0a0c090e25312b293629202c +4f98732a0b090c08311840593c3e3c363a3e4e899c98a68e65222a1d1615 +1a363c405f6578571e1026181e242e342a212c312012151927422d313d57 +511404131d212543569f9d9ea7a094cacdc5bbbcb494305c90232d653e31 +1b2a2d5ea33a152f0a2128241d231a182e2d1f211a263c3b5ba39f6f1f0e +0b1f30372c55cec9c1c2be301a1e1b181d1a0a031f142b1738722b333024 +3a5e29003c3230342e2d34373942342c2b3b4333324e3e2e282020151647 +24262823161418110c0a07101c130000060c0e1d36533b3941598143190d +193b38201f132014251b1f1c1e2327221c1d1f1423120d180f233b3d2313 +29496a8cb7d7e7ba16231220172121463636393a3a373520233422101a22 +0ba5ccdba4213324140f101012141316191d1e20211f1e1a1b1f201d1b1d +2714def7effde8eaf5b99fa3aba9b4ada9abaaa6a3a3a19ca2a1a09e9e9d +9d9da0a1a30b0c0c0c0c0b0a090b0a0a09090a0a0d0a0d0a040205080611 +161d202223272a323738353840403a2f3b382c292b2b2f3938322c2b2e2d +2929252623212c31252e2c343629252e322e2d313735281a100a0206121d +1911090c111326250f100c0806060100040e1417161a1d2431425b8f1100 +0000130c130b0a0806060608080d0e090612211d0e101010111112121009 +0d46250c080c0c0f0e0e0f0b090b1211110e0c080a0f1311131413100d0c +0e11130b0f242f2e2e4137303c5ca0772d140f100938285f877b8ea0a1a2 +9894bbb9a3a78963212d221b18203f48485f67876b2d1b3022262f3b4237 +2d383826161c202e493437435d571a0a1923272b4a63aaa19da4a09ad6dc +d4cac8be9d3c669628326a453823323768ad44213b172b2c2720261f1e35 +342628202c444362abab7b2d181020333b3760d8d2ccd4e25d4c524d484a +422d203423381e4077333b392f45683209453b393d3a383e40424a3d3333 +414a3c3e5b4d3f382e2c201d4e2f394c534a4c4f4846443f3f41311c1921 +23232c435b433f4860874a1f141e3e3a23291f2719261d23202020211e1f +21211e39333a504d657e7d5b3f44505f83c1ecfcce2a33222b2128294e43 +444b4b49403c23253427182a3a27bcd6e6be3f45332521232321211d1d1e +20212322262c27201f1f1e22273623ebfff7fff2efefa7837d7b727a706f +7476726f6f6a6368656462616060606263651f202020201f1e1d1f1e1e1d +1d1e1e1d1a19140f0d10110f13171c1f202224272c363934353d3e39322b +2d33353d3e35403c32272222211d262022211a1d211a1e1c2424212b3630 +33393c393225160d1215171c28302b1f141312231e06070a12110b03010c +20334959728aa2b9cdd3af200c0f0d150e0b0b0a09080708090a070d0d09 +12201e0f12121213131415161932825f210c0e0c090811150e080d120d0a +0f171e1d150c0d0c0c0b0c0f14181b1b14141d1f2433222333383c745d38 +08061824401c271c0e0206030e0300100f0b0c061d00242b1f2633546669 +7163826b2820415349372f312e374f5546383a323242282b38546b210f1d +26252129262d0f000001136a9fb1b4b8ad9120478a1d2b454b2b2a3e5e3d +6d631904392025252737291e322726282733362535697b5d1e1f1e2f3223 +2f7ab0aaa3beeea39bb7b6b0b3a586686c614e363a56272c375d6a986a0c +452f2b33312e322c272e2d302926292849837b3b110d252c254029467d9c +a3acb3b3b9bcb2a99d84675c6055494947552c2c55657e5f2a1c1841271d +2b33312b271d24211c191316232a264d7b420c0d0a2932352c304d607499 +c3e0ff8c28302e2f302615292e4a768b47261c1b273232415b7761a5c4b1 +d043554437383e3d38342b26232020202225291f15171b1e262a2b18dad8 +d4e3e2f0ffeeb4c6cecedfd8d9dcdbd7d6d7d4d0d4d4d5d5d3d2d0cfd0d1 +d20d0e0e0e0e0d0c0b0d0c0c0b0b0c0c0d0e0e0904040708060c10171a1b +1d1f2229333631323a3b362f282a30323a3b323f3b31262121201c251f21 +20191c201a1e1f2424212b352f32383c393228190c06050409131b160c03 +06061b1b060a09050507080f1a29333c424e627a93aab79f170105030c04 +030605050403040506050b09050e1c18090909090a090a0a0904042c0c00 +03020508070405040308100d0a090e13120b070c1012110d0c0d0d0c0e0e +1322252834201f2c313a7765400c0b192233112b34413f3c363d404e8596 +9fa48c762a291f14171c343c435e5a79611b122f433b2f2c34343d535541 +32332d2d3f252837536c22101e272620406e9d9ea3a49d8dbecdc7bdbeb6 +9e2c518f202e484e2e2a3e5e3d6d6317023720292b2b3b2a1d3025232526 +32372638708563160f0f23271d2c82cecfbfbfbc44151d1c1a212110051e +2828212f51262b345a69986d0f4a342f37353236332e322c2f2c2d34324f +857732040119221e3b23262b2619191e160b0a06101f17040007070a1a2d +4a2c335e6e8362291b174026130e121b1f261e1e1b1e2426231d20254b73 +3706121c3e41391f19354f729bc0d7f1791119171f242114292c466f8241 +231c1f2d311b1928381570d2c9be1e362515111314121416191d1e1e2020 +201e19181c1f1c191d231bf0f6f1f7e9eaf2d298a8aea9b7aba8a9a6a2a1 +a2a19da0a0a1a1a1a09e9da0a1a40b0c0c0c0c0b0a090b0a0a09090a0a0d +10120d08090c0d0b13171d2022242629323c3f3a3b43443f383133393b43 +443b4743392e292928242d2729282124282226262c2c29333d373a404441 +3a2f20110805060b18201d120d0f1026261013110c070602020914191a18 +1c2532404e646b00000001110f0e0d0b060302050607060c0a060f1d1c0d +0e0e0e0f11121210090f47260d080c0d0e0d0e100c090c130f0c0d131918 +130d1111100d0807070b111510111e2129392b2d3c41477e674215111d23 +3a2148628090a0a1a59d97bab4aba58572282d23181c243f4a4e605f8c7a +2f233d50483e3d45444b5f5d47363a3434462c2f3d59712715232c2b2648 +7aa8a2a2a39c92c9dcd5cccabfa7385b9525334d553532466847776d240f +442a2c2b2e3e2e22352a2a2c2c383c2b3f78916f231912252b21378dd6d7 +cad1df7047514e4a4e4933223437352837572e333d6371a07416503a3840 +3e3b3f3b383b343533333a3b5b928643150f252d26422d3b4f564d50554d +46443e3f44362019231f1f2a3a523439657589692f211c452e1e20252829 +2b22221f1d20201c1d21214e825532495a7f847957434d55658ecbecff8d +2529272a2e281c31395481934f2c24222d2f2122374d338adbd3d83d4834 +2523262621211f2021211f2021262e271f1f1e1d2027322afbfff9fff3ee +edc480847f747c70707272706f6e6a6466646565646361606263661f2020 +20201f1e1d1f1e1e1d1d1e1e1d2a28231d1b1d1e1b14181d1f2020222428 +33372f2d32332e35374e57443f46413531281e1b1f211e1e191f2520222a +292b2f322d334d55423c494e42342a1a10121a171a2a3c3d2e231e182723 +0705070f0e05010412283c51617992adc4d3d67714100f150c0f0c0f0c0b +0809090b0c010c0d070b19180d10121314141514181d35845d220d0f0f0a +0b10110f0a0e140b0b0f0e0c0a0b100d0e0d0b0c0c12181215111216131c +36533b474f39504754442b21283517220f130605030e0400120a11070827 +08202a1b283651616c6d505c66311f2442392a2d392f1a0e15365941312a +3c28314462652d1d171c281a0a20190804000115689fb4b7bdaf991b3d87 +1321194820384c4a3f90311c3404301b2129402e20362a2c211a25302e3f +667262221f1d383a23198db0b6a9c0e4a890b0b2afb5ac8b6b58663a3227 +2b1d1e21834f5b710d2f272c322a222727262e2d372e2c322c2f4c854821 +13131a3267244478959ca8aeadb4b7b0aca59073646e58443f3848263461 +4447526f0f2c22282f3645292c1d1b25211b1a181922281d0b281b141b03 +1937352a3353647aa2c5daff5b2a23302c2423202f31385154531b0b1c2d +2a284958887c85caa8e264554437393f3e38332a2523201f1f2124291e15 +171a1c22262622dde3dde0e6f3fdf8acc9d1d1e3d8d9d9d6d1d1d4d4d2d1 +d3d5d7d6d4d2d1ced0d20d0e0e0e0e0d0c0b0d0c0c0b0b0c0c0d1b1c1612 +121718150d11161a1b1e20212530342c2a2f302b32344b54413c433e3430 +271d1a1e201d1d181e241f2129282b30322e324c54413b484d43342b1d0f +080a090711212217171811201901050602020409132231393f44516886a2 +b7c26a0c07060b0305050807050403050508000b0b060b1716090a090809 +090a0a090607311104070808080606070504080f090b0a080301040b0d0f +11100d0b0d0e080a0b10171720375238404835504c59472c23272c132829 +443f3c3741434c8191a7a38d7c312821151e22323c495945586325111634 +2d1f243637271d1e34533f322b3d273042606028181219271b29799899a4 +a6a192bfcdc7bec1b6a227478c16241c4b23394d4a3f90311a3202301e25 +2c412f1f352929201924312f426b7a661a14122f35221b99cad4c0c1bd56 +0e161817212313060a2d161d1a241a1b1e804e5b7110322c30352d252727 +262c28322d2f3933334c7f3d150507132d601219232217181e1611100c13 +211a0600110a0916234125356144475270102d1f211f1726131f1b1a1e1c +1f2427242024231328191320122b46392122415676a2bfcef443110c1e1f +1d1e1b2929304b4c48130a20312914211b381a40cec0d84a382515121615 +1415161a1e201f1f1f1f1e16151b1e1c1b1e2428f1fef5f2eef0f1e596ac +afaab7aaa8a8a49d9da1a19e9d9fa1a3a4a2a09f9ea0a20b0a0c0c0c0b0a +090b0a0a09090a0a0d1e201d18171b1c1914181d20212325282c393d3533 +3839343b3d545d4a454c473c382f25222628252520262c2729313033353a +333a525c47434e55483c302414090b09091526271d1b1c1828240d0f0e09 +0400000008141a1b1a202c3b4b546c3d0000000c080e0d100b0703030407 +0900090c040b18170a0e0e0e0f0f1212100c144b2b0e0b0f0f0d0c0e0f0d +080c130c0d0e0c08060b110f11100c0806070c090e0f151b182139584350 +5a445c505c4c3022253122485a8796a1a4aaa097b8afb5a28879332b2415 +1d2438444f5a496778392225413b2f354744302423395744362f412c3547 +65662e1e19202d202e7f9e9ca4a4a198c9ddd8cecdc0ab3351921b292150 +283e5252479839253d0d3a2328314634243a2e30261f2935334771857125 +1c1632392a28a7d7dfced5da7e3e4a4c48514d3724203e2226232c232425 +87566379173932393e362e313130372f3933363f3b3c568d4b2312131b34 +671e2c444d464b514948463f42483c251d2c221d242c482b3a694c4f5a75 +153226292c29382029201f2520202322202125211534313b5755738b7850 +424f566b9acbe4ff59261c2a2925252233363d595b561e10233027162a2d +53405fdacaf0654e3526242625201f1f202422211f20232c231d1e1f1e22 +293134fcfffffcf9f9f3de818c81737a6c6e70716b6b6a68626163656767 +6563626062641e1f1f20201f1f1e1f1f1f1f1f1f1f1f2f312f2a221e1d20 +1c1f21242421201f29282625252628292a26212022242423241f1a1b1e1f +1c171d1e1f212122222225232122272a2a2a25272521272c20100f171616 +273d4b4726192b301e130f090f0f07060f20334364648b9bb3cfc7d2281b +110a0c0e0d0b0d0b0d0b0d0b0d0b0907060505060b0c1013151514120f13 +1f327e5d220a0b1212110a090f1216150f0b0d0c0d0e0d0e0d0c0b0b0d0f +0e0d09160e150f0a1b05341e42362922312e362c2e302a0b2508130a0a05 +080000180a03011b271d142916273a57656d714f39404d4d4c4d41323f43 +20020004334c392316202c28324f3c482e31361a1b04120c0c0a00000d66 +a5b0c2b6b699423870081d26282c3a45444aba2f29282424483028282c0f +2319232427292c3035393a3f352b2e3026221ba2b0adbcb8d6d790baa9c0 +b5b0956a625a4731261e2332434343575f32214c3e382d2623201c1b242e +342f3a284f6d6c52374121262c3549557e94a3c0bfb2acabaaaba9a18a6f +655c41262728305a5946505a8f201f263e364a5d4626202b23271f13111d +25212444562a1e0d1c213623283c4b6995b3d2e6eb4d313229201e1e2930 +30354c6c5b310e18272221396f899583ccbacf8f4a5f344135373d2f2c26 +2322212122262f2819151a1715221071e8e6e0daede8e5fcc1d1ded8dcd9 +dad6d4d1d0cfcfced5d4d4d3d2d4d8dbcfd0d10c0e0d0e0e0d0d0c0d0d0d +0d0d0d0d0c1a1d1f1f1d1c1d1e17191b1e1f212120282725242425272829 +25201f21232322211c17181b1c19141a1b1c1e1e1f1f1f24222021242827 +2822252220262b1f0b040b0e080714222a21202d2a0a0009060203070f1e +2e383a4a3d5c6e8fb6bacc1f120702030504020405040504050405080808 +0a0b0c0d0c0a080909090909060102341c0b080b1007080a0a0907070909 +090807070808090b0a09090b0b0a090915080e07061c09361e3c2d211d31 +2f352b2e2f2a1135253e3f4441463e427b95a1a09d6e3a19251723273b48 +515944434d4b47494c3e2a2e382b1c181a293d3f34252b322a2e442b341a +212c1920348daba1a5a4a893c0cebdc8b8b69b4a4274081e27292d3b4645 +4bbb302a282424483028282c10241a2225282a2d31363a3d3f32262c2f2a +2a28b3c4bfc7b6c39c18210c231d2218021424261d1914192a3d4040565f +35244f41382c231d18140f141e292838274d6862472a3617212b291d0e20 +2222373627211c1715171607000211110c21282b4f47344455902322273b +313e513f211f2c222623181922262229495525180a20283e2927343f5a87 +a6c7d8d32f141b1d1b1c19191c1c25446449210d1c261d15161c161321b9 +cad487323d111c0f131e181d1f222322212020241e14131b181826197ef9 +f8f0e8f6eee4f6afb6b8aaa9a6a8a8a6a3a19e9c9ba2a2a2a1a0a2a6a99d +9e9f0807090a0a0909080b0b0b0b0d0d0d0e2126292723211f211b1d1f22 +232323222e2d2b2a2a2b2d2e2f2b26252729292828231e1f2223201b2122 +2325252626262a2726262b2d2e2d292a29252c302511080d0c080c1a282c +1b192a2e160d150f0c070000010a101325162e35455c5174000d05000608 +090709070707070707070603050407080a0a0c0c0d0d0d0e0d0d0b124d32 +13090d130d0d0c0c0d0b0c0d0d0c0c0b0b0c0c0d0e0d0c0a0c0c09060110 +121e1c15210835204a4238313d333326262a2c21575d8c9dafafad9c91b6 +b2aca39d74421d240f182037444d554245535653525449373e46311b1317 +31443d2c1e252e272f48333d232b351f26368aa7a5a9a1a596c9e0d0d8c5 +c2a7574c7d10232c2d313d48474dbf342f302c2c503830303415291f2729 +2c2c2f33383e4447392c3135333739c7dcd5dbcbd9bc4657435850504023 +2c343126221d24354749495e673c2b564840342c27231f1b1e28312f3d2c +526e6b4f333e1f27302d2a203a43496160514b48434244402f1e1f261f15 +232a2f5753404e5c9528272c4238485b47282531282b261b1b252a262d4f +5d393e436a79896347413f5586add7efeb472a2b2721211f232728304f6f +572c121d241a151d363d434acdd7e89f4a55252d1c1d261e242628282623 +21222c271a181f1d1f2f2287fffffdf5fffcf2faa399896e6764696d726f +6b635b59636363626163676a5e5f601e1f1f20201f1f1e1f1f1f1f1f1f1f +20292b2a26201f202321242623201c18171f1e1e1c1d1d1f1f2622201e22 +22232124211d1c1e201e1c1d1f20212121212225221f1f21232220222623 +1f242b261c131713132a4458583725313724150d07100d070712253a4a6a +7996a4c1c7d4a416110d0c0e100f0e0d0d0d0d0d0d0d0b0b08070404050a +0c0f13141514120e131f3176531d06070d141106050d131917110d0d0c0c +0d0d0e100f0e0e10110f0c100703171601030e27231b19111716101c181d +1e1e0b230c0c0302000000001c0b0700241d3120281b263754626c714c26 +242b292426262433320e0000002f45251911131e1c1c282a3825201a0f1c +010b0005090003105da4a6b8c1c3a743316c121a171b1c1a1d1a01300b21 +242626402827262c151b0e2021212120212326262e291f22211c1e1cacb9 +bbc1bac7d488b2a6b8afaf976a5f5d47302521263031372e323a251e3d35 +312c2725222120161923232b3a2e3c3f3f485a4538343d4b628e9d9db0af +a9939aa5aeb1a78a6b675038262739454c5c584d475b1f364f5649526c74 +68513b53534735323a403d263e49262216232a3a242940536f9ec0e2f7e3 +48413b41352a385d7a765f5665593e2328302a2a437893aa89bec6d0a43e +6b3e3d4333382d2825201c1f232726212625252720191c0f94ece3e1e1e8 +e8eeffd4b1c2d8e7dedad7d5d4d3d0d0ced3d4d3d2d0d2d5d8cfd0d20d0e +0e0f0e0d0d0c0d0d0d0d0d0d0d0c12151a1c1e1e21231f1e1d1d1c1c1c1b +1e1d1b1b1a1c1c1e23211d1d1f21201e211e1a191b1d1b191a1c1d1e1e1e +1e1f23201d1d1f21201e2024211d22292416060c0f0907152531302d3633 +0e0005010302071021323b3d4a4e66779fb2cfa310080403050706050404 +040404040405050708090b0c0c0c0908080909090906000030180806090b +05060a0b0907060608080807070808090b0a09090b0c0a0b130a000f0d00 +03122c251812090f140f1b151a1e2317392c36383f3e443d3f7696aa9ea4 +5b4723271f2423384a55583d2c2e251f212320181b22180e131720312e2e +2220241e181f19240f0f1312293d94a3969ca4a995b9cdb5c1c5c1a54937 +6f131b181c1d1c1f1c03310c22252626402827262c151c0f212222222123 +2527252d261d2124252a2dbec9c7c5b8bea8191f0d1e151d16010f24261b +15141622272f282c37241d3c342e261f1914110e02051418253528333432 +3b4f3c33342c15112c2a1b25241e0b0f12181e18060004070e13253b3c38 +403c393d5a22364e53444d676f634e38505044342f393d3c293e46221c11 +222c402b2b3e4a608baed7ebc92b24263c392e384e65604f5362492e242e +3026221e1a10171596c7d5a2274b1d1b1f121d181b20201f20232320161b +1b20262320271ca3faf1ededf4f1f3fdc59699a8b2a8a8a9aaa9a6a29e9c +a2a2a1a09ea0a3a69d9ea0060707080a0909080b0b0b0b0d0d0d0e1c2124 +2423232325222222211d1c1b1c23232221212223242a2724232627272528 +252120222422202123242525252526282522222426252325292622272e29 +1a0d100e080d1d2c32282230341a0b100b0d06000000070f112123363c55 +596750000b0706080a09080707070707070707050303030405090a090c0c +0d0d0e0d0d0a0f482c0f06080c0a0a09090a0b0c0c0d0c0c0b0b0c0c0d0f +0e0d0d0f100e0908030b2428120b112824232420262217190e151c292d62 +698898a9a8a7988eb2b3b3a1a5665428231115182d404d533a2a302f2a2a +2c2c262b2f1a0a0a13273a2b251a19201b1922212d1b191b192f3d8c9d9b +a3a3a79ac4e1c8d0d1cfb357437818201c1e1f1b1e1b02330e262a2e2e4a +323130341d211425262624232224292b352d2226292e383fd4e2e1decdd1 +c144554354494c3f22283531241f1e232f323a3236402c25443c37302a25 +211e1a0d0e1b1e29392c383a39425541373632222445493f4c4b4533383e +454b442e18211b1a17263a41414e4a454660273e545a4b546e766a553f57 +574b3a363f444230464f33404b72838e62444343598fbae8ffe2413a3543 +3c2f3a556e6c595a695438262c2e231f25353c4d44b1d9e9b84363322b29 +19221d22272826252524221c2123262c28282d24aafffcfbfbffffffffbe +7b6b6a6e62696e75746d645957606362615f6164675e5f611e1f1f20201f +1f1e1f1f1f1f1f1f1f2020211f1c1717181b2222211e1a16131417171815 +171619171b1819181b1a1b1a1f1d1b1a1a1b1d1e1a1c1d1d1b1b1c1d1f1c +18191b1d1b181c201f1a1c24272415150b0c223c575c331d27312015110b +120d060b192d404f698aa0b1d1c9e1650b0b0c0e0f0f0e0d0d0d0d0d0d0d +0d0d0e0d0c0908090a0d1112131312100c122131744f1b07070a13110504 +0c101515110d0d0c0c0d0d0e11100e0f1111100d0204080c1e1a060d061e +1825111a141916141714160f200a07000000000000180d0a002e093b2b2b +21283552646e724c2d2423221e1b1f282b2d190400081e2515151411191a +1315101d1e1f110c1600250a1117080b114ca8a1a4b8b7ac51335f1e190f +18180e1426180f231c101c1e1a17332f24110f101f201f1c191718191623 +221a1a18171e34bcb6b6b6bbc4eb8bafa9b5acb19e725d5d4d2f2526282b +1b281e141e201c2827292a28252121201921182c202a1c2323191d1f2520 +27354e63909e9fadaeb3abadacaaa59a8369684d3b2f1f1f2b2834392a33 +3d29201d3b3538393232332b35352e2120272d29262d2f1b1f16202a351e +25435872a2c6d9f0af282e1e29181414222f2617182d2b251f2225242f4b +8195ad8194d3d6cb396346394e373b322827221c20272b262327251d1818 +191917caf2e0e3e8e0e4e7f5ffc0d1e1e3d4dad9dad8d8d4d2cfd3d3d3d1 +cfcfd1d3d2d3d40d0e0e0f0e0d0d0c0d0d0d0d0d0d0d0c090b0f12151619 +1b1d1c181514141515151413121213141416151415161716151a18161515 +16181915171818161617181a17131416181613171b1a15171f221e080a0b +07030f1e2d201a282d0f01070305020512263741434b617185afb5d86105 +02030506060504040404040404040402030305070808090807080809090a +0701002c11040507080405090a0805040608080807070808090c0b090a0c +0c0b0b070908091a1806100a1f16210c151119161417171d1e382d34373f +3c433d3d7397ab9cab454d2a2623251f344955563722190d0a0c0d0e110b +161c1a1f1b0a0e19231d151a1a14150b131215111b3439a6a09199a3a692 +a8d7b8b7c5b9aa50325f1d180e18180e1426180f231b0f1b1d1815312d23 +100e0f1e1f1e1c1917181816221f1818191c2641cdc5c2bbbabdc1222216 +1e141f1b05092224150f1212170d1e140a161814201f1f1e1a150f0c0c03 +0c071f1724161a180c10121a172122231c2d25171c1b1d120f0e1118190d +000e08111c1b1d1e11151d162838261b132f2a2d2e272728202828211613 +1c201f202a2c181a15212f3b2327414f638db4d2ec9c1117102c24201a1c +221b1220372a23252d2e2927221e101d0c5dc0ccc1224726192d1a221f1d +22221f21272720181c1b18171b202424d7ffeef1f6ecedecf1f2a6abb0ad +9fa8abacadaba6a19da2a1a19f9d9d9fa1a0a1a2060707080a0909080b0b +0b0b0d0d0d0e1317191a1a1b1b1d21201d1a181714171a1b1a19191a1b1b +1d1c1b1c1d1e1d1c211f1d1c1c1d1f201c1e1f1f1d1d1e1f201b17181a1c +1a171b1f1e191b2326220f0e0904081627331c13232e170d120e0f060002 +0a121513192d3944655f7917000506080909080707070707070707070404 +04040506090a0b0d0e0e0e100f0d0c0f44260c0607090909080809090a0b +0d0c0c0b0b0c0c0d100f0d0e10100f0c0105121a312d12150d2321302029 +2225181419202f3d686d8592a09d9e928bacb1b39dad505930231816142a +404e523626211a181a1a1e2320262118191913181c231c161c1c1617111b +1c201b203638a29f9aa6a7a898b3e9cac5cec6b8604069231e131a1a0e12 +241811252014212523203c382b1814152424231e1b191a1d1e2a261d1b1d +223151dfdad8cfcccdd94b564a53474e4525233432201b1d1f231a291f15 +21231f2b2a2a2a27221d1b180f150f261c281a1f1e131719201c25282d2e +49483f47474a403f3e3f423f2f1f281d1d201c1e251b242b21303f2d221c +393235362f2f302831312a1e1c2429282a33372d424f7183875b40464a5e +92c0e2fdb2252b1d31241e1a2029231822382f2825292923242a3b3b5039 +7cd6e4d93c5e3b28361f262323292a26262928221e24231e1d20282a2cdf +fff9fefffafeffffed8d7e766d5d69707878746a5e58606262605e5e6062 +6162631e1f1f20201f1f1e1f1f1f1f1f1f1f1f201e1a150f0e0d0f181917 +1512131214181918181818191915151617191918171a1a191716171b1e18 +1a1c1a1716181b1c1916181d201e1a171e201b181e262c1d160a0b1d3651 +5e2e1117241b111210130d0813233648576b90a5bdd4dccd2e0c0d0f0f0d +0b0a0a0d0d0d0d0d0d0d0e1111100e0c0d0e0f11111212100f0d12253575 +4e1c0b090b13100401080f1314110d0d0c0c0d0d0e100f0e0e10100f0c08 +0c12000200001e1e0a1c240d1a10181a1b191314171b0e09030100000000 +130f0200310029292a222a3752646e73503e2b262b28201f26352e160000 +00132516181b191b17162226181b20130d1300380f1a22100b133d9ca6b0 +c4baba632752281a12181512311b291f2e160f201b30202c242227211d20 +21211f1c1a1a1b1e27241e1f1a171c4ec6aeb4b2bfbdf391abb1b7b0b5a5 +78585e4a2b2224262313211d1621251e1e20262b2b26211e1e1f250b2c1f +0f2522221f2d2236272739576791a4acb2a5a8b9b7b1a79c92816b584e30 +31382c3341414232291b20333f3140595a3e2a2a2c262b2d2b2e33322c26 +25201619151f30301923465e77a7cdd8f57f282a1b1a0817202c2a201410 +130d111616151c2f4b8999a48569dbd1e25a464d37453d372f282b272325 +2c2e292c2c2c231b20252126edeedde3efdbe4eae6ffbecacad4e3dcdada +d7d7d4d4d1d4d5d4d1cfcecfd0d3d4d50d0e0e0f0e0d0d0c0d0d0d0d0d0d +0d0c090a0a0b0d0d0e0f13100c0a0c0e121413121111111112120e0e0f10 +121211101515141211121619131517151211131617141113181b19151219 +1b16131921230e0b0c0a040913220c0213220e010806060207172d3d474a +4e6a7a95b4c7c22805040606040201010404040404040403010101020304 +050606060708090a0b0705002b0f020709070204080a0604040508080807 +070808090b0a09090b0b0a0a0c12150103000021210b1c240b170d171a1c +19161b2636333a3c433f453f3d6e97a19cab3439262222241f3449555738 +2d1a0b10181411151c20211315170814171f1a1414151b2a2b18151e1a24 +3d42ae938a96a0a0929dd1c5ccd6bdb75e2350271911181512311b291f2e +150e1f1a2e1e2a222126201c1f20201e1b1a1a1a1e27231c1b18182358d4 +bec1b9c1bbcd2b1e1d1d131f1e06042124110e13100f0515110a15191210 +12161916110a07080710001f16091f1c19142013271a1a242d1f25211d1f +131217110b0b151a1208040d0a1e3228222721231e1e1419262f2131494b +2e1b1a1d151a1c1a1a1f1e1b1a1d1a1418172235341c2344556892bbd1f1 +6e11130f1d142629272116131c2312151a1f2526241c24161a1126b9bdd4 +4830321b2722211f1f262723242a28202122221e1a232c2a30fafcebf1fd +e7edece0fba3a59ba0b0aaabacacaaa6a3a0a2a3a29f9d9c9d9ea1a2a306 +0707080a0909080b0b0b0b0d0d0d0e131514131212101117151210101212 +16191a191919191a1a161617181a1a19181c1c1b1918191d201a1c1e1c19 +181a1c1b1815171c1f1d19161d1f1a171d2528150f0b0607101e2c0d0010 +23150c13110f060309141b19151429364d67767000000709090705040407 +07070707070707040404040607080b0c0c0d101010100f121244240b0809 +08080807070708090a0d0c0c0b0b0c0c0d0f0e0d0d0f0f0e0d0b121c0e15 +100c2a2810242e192a222722212327374d6b778995a19b9a8f88a5afa79b +ac3f462d201816152c4250543833241a1f252020252f2f250f0e13101e1c +25201b1c1a1f2d2f201f29242a3c41ae9798a5a8a699a9e3d7d7e0ccc872 +345b2d1e161a15102f19271f301a1325203929352d292e28222526262320 +1c1c1f2631291f1c191c2962e1ced2cbd0c8e253525151484f47281e3331 +1a171d1c1b12211d1621251e1d1f232725201a1715141902261b0d23201e +1a271a2e21212b39354549494c403f48433d3a3d3d32241e21152234292a +32303229261c21303a2b385352382224241f22262225282925242a282c42 +5271877d513b49506397c7e1ff8125251b221423282b261e181c22151619 +1a1b1d222642404b3e47d2d6eb604745292f272422242d2f2b2a2d2a2327 +2a2a24202a343139fffff6fefff5feffeef88e7b65646f6d737877736b61 +5d636463605e5d5e5f6263641e1f1f20201f1f1e1f1f1f1f1f1f1f1f2521 +1c150f0d0d0d12131110111213161a1c1d1d1d1d1c1c1b1c1e1f1f1f1f1f +1c1d1d1b1b1c20221e2122201c1b1e2225211e21272925211e262b262021 +2932241a0c1121355567421d1824170b0e0e130d0c1b2e3e4f607393accb +d2ef9b13110f0e0d0a0808090b0b0b0b0b0b0b0e14151311111110101010 +100f0f0d0c122738774e1b0c0a0b12110401080e11120f0d0d0c0c0d0d0e +0e0d0c0c0e0e0d0a09000d1815022aae810d1f11071c10081112110e101c +191d0801000000000010120006330011222b1f2a3b57656f75554728181c +1e1711151d1910000000051f1c1d20211a0e183b5a200f140d070d0f3806 +1a251109173793a6a7937a9a7027472e1d19140f1d542b1f201a1e262819 +192d443a19131111212323211f1d1d1c2529252225201b1f70cbb3bcbbc3 +b3e39ea7b6bab6b5a679585945241a1c1c1a1b1f20232b292324262b3030 +2a24212013152e231e1e251b121e321f38281b3a596f9fb2b2aa96a8a6ad +afaca196836a43692e0f332c2332362630342f2f39333a2f39473b2c292b +2a2e2f2e2e2d29252d2e201a1615213b2e1c2a4f6781b2d8e1f657342b2c +201618313f3328241605161e221e171e36508c9b979b60d8c6dc992b5239 +2e46342528282a29292c2e2d211d282c2527261351f5e7e0e1efdbebe8f3 +ffcfd7d1d8e9dedad7d5d3d3d4d5d6d7d6d4d0cfcfd0d0d0d10d0e0e0f0e +0d0d0c0d0d0d0d0d0d0d0c0e0d0d0c0d0d0d0b0c0a0605080c1114131213 +13131312121112141515151515151616141415191b171a1b191514171b1f +1b181b21231f1b182025201a1b2329130f12130f0a111f0f000e23120102 +0106040b1e33414b51586f86a6b5d98d0b09090807040202030505050505 +0505030100000000020303050506080a0a0b0705012b0d00060805010208 +0a06050506090808070708080909080707090908080a01121c19052bad81 +0d2214071b0c06101413131b2f38453d4147424845406e9a959fab301d1b +1f1b2020364853593d361b08101d1a15171b22302120230f1c1f1d14100c +09214a692b0f161724435da072778c9a9a979cd1cdc9a980956820442d1c +18140f1d542b1f201a1d252718172b423817121010202222201e1c1c1d28 +2c241d1f1c192377d8c1cac5c9b6c1341219170f17190502202413111612 +0f0f1313161b19111012151a18120c090800011f1615151f150c15251027 +170a1e2a2125201e1b111d050507101f23150700300d002a230e1616081c +292524251d2b232c3b2e1d1a1a161b1b1b19181410191d191a1a1d274031 +1c284a5d739dc4d6ea3f18101a1d1e223539281f2422131f1e1c1d242822 +18231c1d3115aab0d08b1c3d23173021161e2529292827252216131e2724 +2a2a1c5bfff5eeeffde9f4e9ecfab5b4a6a7b7adaba9a7a5a5a4a3a4a5a4 +a29e9d9d9e9e9e9f060707080a0909080b0b0b0b0d0d0d0e16161411100f +0f0e100f0c0b0d1014171a1a1b1b1b1b1a1a191a1c1d1d1d1d1d1c1d1d1b +1b1c20221e2122201c1b1e22231f1c1f2527231f1c2429241e1f272e1b13 +100e0f111e2d16010c21160a0e0b0d0507131f221e181121355567904c00 +000b0a090604040507070707070707070707060608090a0c0d0d0e101111 +110f1314452309080907070707070708090a0d0c0c0b0b0c0c0d0d0c0b0b +0d0d0c0b0e04162525143dbd8d152719112b231c1e20222739596f8a8d99 +a39d9c9389a4b29a9daa3a29231f1214172f424f563d3c24131a25232023 +28292f1913191023282922201910264d6c2f1922212a435da37c899fa49f +a0a6e0dcd3b490a97d324f33211d160f1b52291d201c222a2d1e22364d43 +221a1818282828262421212231352a211f1b1a267fe1ced7d1d5bfd25c49 +504e474a44281b2f2d19141a1a17191d1d2026241d1c1e222726201a1716 +090a261d1a1a2319101a2c172f1f122a3a3b4e514e493c4737393a3f4342 +32230c4318042d261722231427312d2c31293227333f352221201f212421 +221f1d19252d2b36495b7591764e40505b70a4d0e7fe552e232824202136 +3d2e242622131e201e1b1b1f23254245465936c6c5e4a2314e2f1d332319 +262c31312e2d28261e1c272e2c31332364fffef7fafff6fffefcfaa48e73 +6d7a73757775716a666465686765616060616161621e1f1f20201f1f1e1f +1f1f1f1f1f1f1f201d14110d0d0c0d14151413131516181c1d1e1f1f1e1d +1d1e1f21201f1f20221e1c1c1c1d1e1e1f1e2123211c1c202629241f2126 +27211b1f282e2a211f26322316070d1e335771582a1b2416060e11100c15 +26374455677f9cb9d7d8e35d10120e0c0a0a0b0c0d0b0b0b0b0b0b0b0e13 +161414141212110f0e0e0e0f0d0d13263b7a50190c0b0b15110401080e11 +120f0d0d0c0c0d0d0e0d0c0b0b0d0e0c091606050b0700176d850f28160e +1b181113141112121e1529060100000000000c13000836000b1b2b1d2a3c +59666f745449280d0a0d0a0a0d150f0c000000001917191f262117295562 +210d16130907214a091e291103152a8aa2a36848737a29362e1d1f16203b +7158272a1926211e20314f4a4016142621242525221e1b191822231e1f26 +232229addfbebbb6beb4dfb2a1b7bbbab8ab835a563f2119191819241d1e +232726272b303234322e2a24210d2696431a3519212e2c2e29656a384a67 +88b5b8a79c9fd5acb4b1a99e98907965cf8e2d36302b3a4327383a1b2236 +3a4f2d202723202d3939373633323334362e331f1a0d17213f2a1f30516a +8abadbf0e83935282b1e1d293b3c261e2723141e2329271a23415f889690 +ae74bdc0c4be254b3f285e49292623272d2a262d39422621271d1e1f0b88 +ebe1efe2e9daebe0fff6cedee9e2d8dedcd7d3d1d2d3d6d7d8d8d5d2d0d0 +d0cbcccc0d0e0e0f0e0d0d0c0d0d0d0d0d0d0d0c0b0907080b0d0c0b0e0a +0706080c1012121213141413121213141615141415171415151516171718 +171a1c1a1515191f231e191b20211b15192228241b192027120b1017130c +0f1e14000b2316040101050711273a434e57667d96b3bbce4d0509080604 +0405060705050505050505030201000000010204040407090a0a0a060202 +2e0c000307020202080a0605050609080807070808090807060608090707 +15070a130e00166a810d2c1b131d140d101313171e34365640464a444b49 +446d9b96a1ad2f14111c161d1f364753583c3d210a0f1c1f1e20282b3d28 +252911201b150e0f0f0f3469773010161d263f6da3626f8a9c9b9e96cccc +c57e4b6e7022332d1c1e16203b7158272a1925201d1f2f4d483e14122520 +232424211d1a181824251d1a201e1e2ab4e9ccc9c3c8bbc04c111a161115 +190b041d2115151713121a1312161512111315171917130f0c0b00178938 +112c131b2826251c545623282b28261610142c5e1a120a0d1c2219101b9f +701e2d25141c230b282f11121b204022151b17141e282624211e1d1c1d1c +121c151a17222842271c2b4a607ca7c7dfd2190f020f131b29362f150f21 +281e1f1a14182428241c1f1f26532788adc0b6193d2d154b391d1f20252b +2721242e371c1a221c21231291f5eefdf0f7e8f4defae6b4bbbeb3a7adaa +a7a5a3a3a5a6a5a6a6a3a09e9e9e999a9a060707080a0909080b0b0b0b0d +0d0d0e12120e0d0e0f0e0e12100e0d0e1114161a1a1b1c1c1b1a1a1b1c1e +1d1c1c1d1f1c1c1c1c1d1e1e1f1e2123211c1c202627221d1f24251f191d +262c281f1d242d1a110d0f11111d3021040b2118090b0b09040e1f292520 +1916233a5d6f8f1c00000a0806060708090707070707070707080a090909 +090c0d0c0c0f10111111101015482307060805080707070708090a0d0c0c +0b0b0c0c0d0c0b0a0a0c0d0b0a1b0c0d16160c287d90182f1e192a2d2823 +21222b38596b9a94a5afa7a69b8da2b19b9eab3a231a1f0e141932444f55 +3c41281115212425272f2f391e171d0e26262421231f1a38687833192227 +2c3e6da970849da39ea4a0dadcd18b5c8288343e33212318203b6f56252a +1b2a2523273a5853491f1d2d282b2c2c2725201e203031251e201b1d2cba +f2d5d4ccd1c1d07446514e4a4a462f1d2c291716181719231c1c20211e1e +2124262826221e1a17061e903e1631171f2c2a2a235c5f2c36444d5b4f45 +42538449443e3c4042392e32af7a2330291e2830173237191c2a2d472619 +1f1b18232e2c2a28252424252721302e3e4a62768f6a4b42515f7badd3f2 +e93128191e1b1e2b3a361d16252b1d211d191b1c21282d3e454a7649a4c0 +cfcb2d4e391b4d3a1f26293036302727323f25222924282c1a9afef7fffb +fff5fff4ffe9a79b917f6f757576736f6b696868696966636161615c5d5d +1e1f1f20201f1f1e1f1f1f1f1f1f1f1f1c180f0d0a0a0b0c151618181817 +191a1c1e1f1f1f1f1e1d1f20211f1c1c1e201e1b1a1c1f1f1c191c202320 +1b1b212827211c1f24251e161e2529251d1a223027160409192c55786c37 +2025160610150e0e1c324049596d87acc7dbe3b62814120e0b0c0f100f0c +0d0d0d0d0d0d0d0d10111212121213100d0b0a0b0e0f1017253c7f531c0c +0d0d15120502080d11110f0d0d0c0c0d0d0e0e0d0b0c0e0e0d0c0b100303 +0a162f36351417160d0d14171e1a1719151d0d3110090300000000010c08 +0337001a16251f2939566771714941260e0602030509041d535a58460c05 +0d1923292a273352461e1c2020140e3b650f202810001018799ebe815e71 +822029301e221c3f596e471f1f1c1e1620303a5b5597aaa06f0c26272825 +211d1b19191d1d2025242a38ddecd3c4bbbabbdac398aeb4bab6af905f54 +3b231d1a19211e1a1f2120262c2c32302e2c2b26221d1b40a5621b2e1a28 +1e2323367f8d353d7aa5d3cdac918eccb4bab3a6999ca08c57ca93312825 +3542274686912c28324733282d31251e24242c2a2a2c2d30333930361b14 +081a243f292737546c91bfdcffd63c3d3e302b291d2a332f29271b121e23 +323321254b6e8a8988a48885c4b2c54343453375652f2a21252f2b243550 +7c422a2b22272e1d7491b7f5e4e5dae7ecff8882aad5ded7dddcdad6d4d3 +d3d3d5d7d8d6d3d0d0d1cccccd0d0e0e0f0e0d0d0c0d0d0d0d0d0d0d0c07 +050304080a09070c090707080c0f101111121212121110121314120f0f11 +15141413151818151215191c1914141a21201a15181d1e170f171e221e16 +131b25160b0f1611080b1c190007241a0703040409182f3e444f5c6f8fa5 +b9c79f150708050203060706030404040404040404050402020202030403 +060708080908050005330f000307020103090b0807060609080807070808 +090908060709090807060e090d131a2a2c2c101c1f150f0e0e1617172023 +3732624d525449504c456b97a29cae2a210a14161a1a3348545333362719 +1b24292a2c2749909d9c7e2a1415171010151d3d665a2c191a242b417fae +5b6b8ca6a3a68fbec5da8e5d697a1c272f1d211c3f596e471f1f1c1d151f +2f38595395a89e6d0a242526241f1c1a191d211c1b1f1f2639e4f9e4d6cc +c9c8c469161b1715131d16071c1e1717161317171315140e101411161412 +11100e0c0c10379c5912251422191e1d2d727c1e122d2d2b1a141837763a +27120a151f1a1911a67e261f1a1e24092f7b8b22181329221f2427191215 +141917151516171a1b0b18101714292a3c201b2d4a6285aec6e8b40e0b0c +061118101919110f161912150e0a1422242223211d325a3d4fb8b8c43f3b +3924665924251e232d281d2a43723a2225212731247d9bc4fff2f3ebf0e8 +f9776a8baeb2a8abaaa8a6a5a4a5a5a5a5a6a4a19e9e9f9a9a9b06070708 +0a0909080b0b0b0b0d0d0d0e0c0b07070b0c0c0b1110111112141718191a +1b1b1b1b1a191b1c1d1b18181a1d1c1b1a1c1f1f1c191c2023201b1b2128 +27211c1f24251e161e2529251d1a222d20110b0f0f0c1a312b070a22190b +0d0e0305152a31271e17152b415f7e69000006080506090a090607070707 +070707070b0d0c0c0c0c0e0e0c0d101112131313111a4f280a080b080a0a +0a0a0a0b0c0c0d0c0c0b0b0c0c0d0d0c0a0b0d0d0c0b0d13090e18253e44 +3f1e1f1e181c2a2d2e28232a304e5ea4a6bbc9bdb8a68f9daca499ac3531 +161a11131731455051353a2c1d1e262c30322d4c8b949175281920252425 +26283f64592d222630334280b769809ca7a1a795cdd6e89e6f7e912d3235 +22261e3f596e471f211e221a253743665ea0b3a978152f30312c2a242223 +292c24211f1c253beaffece0d4d0ced18d464f4c4d484a3b1f2923191917 +171f1f1b1e1e1a1d2220252321201f1c1916183ca15e172a18261d222132 +798428254d5d695c4d455793615444393a413f3a29b4872c242028301539 +818f2a222235282025281b1418171d1b1a1b1c1d20251d3030424e6e7889 +5f4945526385b6d3fecf2b28271a1e20171f221b1a1e1c141a15151c1d1f +2a37403f4f755c69c6c4d6504a4329695b282b272e383124304a7b452d2f +292f3a2c86a4cdfffbfcf5ffffff7d606f87817478777775716c69676768 +6967646161625d5d5e1e1f1f20201f1f1e1f1f1f1f1f1f1f1f211a120f0c +0c0c0d11141718191b1b1c1c1d1f1f201e1e1c242324201d1c2123221e1d +20252520191f2226231f1e262c27201d20292a251c222528231d1a253333 +1d070c1729567c844b2c2d190410150c0e2038474d5c718ab9cdd8ea8a11 +18140e0c0c11100c060e0d0e0d0e0d0e0b0d0b0d0f101111100a09090a0e +101319274084561f0f101117130702080d11120f0d0d0c0c0d0d0e0f0e0d +0d0f0f0e0e0f140106000032432a42050d100e16151a161319131c08381b +130b000000000004110037002b131e2227345568726d422e1f0f04000000 +0000001b121e2a0c170e1f2724262526323725271c1d1c23636c0b17200b +000c118497af613f4f802b293822201a4d5d4f3d28172323252e28447462 +a8bdc4c06f292a2c2a27242221171e212225242d42dde7eae2d4c2bac4c5 +879da6b1adac9463553b2a231d202914192423222c352a322e282625221f +18263540501e1c2b1d172920204f69295f7fb2eef1c98c5d819ba9afaca5 +a6a78e5e975b242d2d382e3a3b4e69104132303832332d2a343a2f38393f +4244403f3f3a3e1b1207222c433336465b729ac8e1f6b53a3e5532362f2d +282b312e2622282930424429265078907e808d9259cfb2cb71464b407c6f +252f2124322e253e6478351d28272a2e1d27217be8e4e4e0e9f0fb3d6fac +d3d8d6d9dcdcdbd8d5d2d1d4d6d7d5d2d0d0d0cfd0d00d0e0e0f0e0d0d0c +0d0d0d0d0d0d0d0c0c0906060a0c0a0806050304080b0e11111212141313 +111117181715101114181b19161b1e201914181d1f1e18191f27201b161b +22251e171b20211e16151e292213131913090c1f27040d291f080001020b +1d333f444f5f729daeb9cf72000608050103060701000304030403040305 +08090604030404060506080908080704020b3a1501060a060204080b0807 +060709080807070808090a0908080a0a0908040d071205002a351c3c0c1b +1d140f0a0f0e12212538336e5d605d4f534d446892ac95ad2232070d1618 +152f49544f29232222262b2c2b2a2f355b545b5b25261a221c11151e3045 +472d20101b2d4f9fa84a5e88acadaf8ec9b8c06437467d2d2937211f194d +5d4f3d28172222242d26427260a6bbc2be6d27282a28252220211b22211f +20202d47e7f8fef8ead5cbb67b181913120f1a1a09181a1717120f1a0d14 +1a160e141609100c0707090a090820333b4a1311201411241b1a44581430 +252b3633311d1840312212101d221816207d4c1b241e1e101e2748670930 +100a1d1d1e18111b1f14191a1b1e1e1a17150a1a0f1819332f3b1f21344e +678fb9cad98d05031a011415160e0a0d0e0f19231e16131c25211e26291b +384d431dc1bbce7042443370651c2a2024302b1e31576e2d1725242a3121 +2e2a85f5f2f5f1f2ebee2c588dafafa8a9aaaaa9a9a6a5a5a3a4a5a3a09e +9e9e9d9e9e060707080a0909080b0b0b0b0d0d0d0e110f0a090d0e0d0c0c +0c0e0f12151719191a1b1c1c1b1a192020201d19191d20221f1d21252620 +1a1f2326241f1f262d27211d21292b251d222628241d1b25312c1b111210 +0e1d343c1412261d090a0a0004182d32251b151232445e8a4600020a0805 +060a0a050007070707070707070e0e0d0c0c0d0e0f0c0d10111213151313 +1f552d0d0b0e0c0b0b0a0a0a0b0c0d0d0c0c0b0b0c0c0d0e0d0c0c0e0e0d +0c0c140712090c3f4e334a121c23242e2c2d231a23254355acbdd6e4d4c7 +ad9098a6ae91ad2f4415151613132e46524d2c292926282b30313337395b +525658292d26312d2425263141462f281c283550a0b2597093a7a4aa92d8 +cbd2774c5b923c353f27241e4f5f4f3f2a1927272a35314f7f6bb1c6cdc9 +7832333533322d2b2d272e2b2624212f4bf0fffffff5dcd2c39c434a4748 +42493f2328211b1b161721141b23201a22261a211d18171818161224363f +4e1917261915281f1e4a601d444b637e7b6c483458554d45404547433a35 +8853202925291c2a304c6a103a20192622231d1721261b21222528292522 +2320363548597b7e865e4c4c586b93c0daefa82321361724201e1715191b +191e27221f2327241e2a3d473a50656237cec4df82504c3a72661f30282e +3b3425385e7738212e2d323a2a38338ffefbfdfbffffff3452788b837678 +777776736e6a6868676866636161616061612020201f1f1e1e1e2121201f +1f1f20201d18120c0a0a0c0e13191b141c1f18201d13211b18231d161e20 +24230e2822291e14191d2a2a1d11201c1f241e19272125171f2022282417 +1d2220191e1d202939160407182e437a84682b1b180610120b1b2b3b505d +6b829bd1c6e0f33c1115110e0f0e0f0e0f0e0f0e0f0e0f0e0f0b0503060b +1113110c0807080a0e13161c21428b4e25150714181608000712140e110f +0d0c0c0d0e0f110c0f0711031c0f13170c00020829463716070d0516071e +112311210f1411730e0b000d000000000806002b001a12161a26464e6b7b +5d5f48130d0f00000000000000000000000202031c191f15343646241b33 +31291c657503002c2400041474afb87048408e3a2434242c1f4857444727 +22292232361d42636418020918161a1f272d2e2a241d25212d202b24344f +ede5d7dcdfddd9c7d562a2a3a0b7ad90645f342c30263529241c31202b2f +353d3b2e372725131e141b3836302e2b2d212a1b342c2d483c577ccff2f6 +cfa65d5f8398b4b3a5a4a9934f43401e36303a33433a4e323e343f475b45 +363b413c3b4142464a48494b4b45453523180f1c37413e4a5260759ac5e4 +dd715355503738272a2e35353433271e213c3b502a1b6b9196806d688668 +d4b8bb973238444146301b2e2d372e373f5a513a211c223a1e37495947d7 +e3d1eedcffd0648c9cccdcdacfd6dee1ded9d7dadbdad7d2cdccced1cfcf +cf0f0f0f0e0d0c0c0c0f0f0e0d0d0d0e0d0a080606080a0a090808050006 +0d0813110915110c19110c12161819021e161f1911141a2527180e1b191a +211916221e20141a1d1d251f14181f1b16191a1b222c0f0e131711001d22 +1906131e0c000004182835454f5a6d83b7a9c5d622000202030303030303 +03030303030303030509080706070805050508080908070401000f420e09 +0c010903070908080d0b050b0a08070708090a0c070a020c001706040c11 +080f0e1f36280f112017210112061b102b24343fae535a52675c5446629b +a89aa5212205050e1624274c5d4146371124362d32241722201f1a140e0a +0b16151f1519143e424f240e232b333d95a73d449cd2bab296b6c5bd6639 +3491422634242d204958454828232a2332361d42636418020918161a1f27 +2d2d2a241f28242d1e2a243859fdfaf1f7f9f5edc39e0a311f091d1b1305 +1b0a11160c130b191727101310101410030e02050006041b3c34271f1a1c +121f152f26223928281b3f3233373b232824161a15181d1a211c3336172b +1f1e152c2b4e36392319162c17080d0e09060c090d0d0b0a0c0a06090916 +1f212d36311f26364c6a91bad2c0461c181401110b1013110f13191e1c1b +290f282612353b33262e2d2f1dbcbbbe98303339363b2a182d2d35282d2f +4d47341b191f3a213b506251e4f1e2ffe6fac1537781abb7b09fa4aaaeac +acadadaaa8a5a09b9a9c9f9d9d9d08080807090808080d0d0c0b0d0d0e0f +0e0b0806090a0d0d1012110a1319131d1b121f1a16221b151c1f22220c27 +202820181b212c2e1f1522202128201d2925271b2124242c261b1f26221d +2021222a36160d0f15150c32392c0d111c0c0a05000f1f29332c221e1f49 +416c9a010008070707070707070707070707070707070c0b0b0c0f100f0d +0c0d1011121314120f225d261511050f0c0e0b070a11100a0f0e0c0b0b0c +0d0e100b0e0610021b0b0912140b181c37503f1f1b272537233828321522 +152f56e8b8dde8fbdcbb9191adaa97a63137170f101625284a5b3e49411e +2a3b31383026302d27211a18181a21212e23231a3d3e4e26172e373d4299 +b04952a0c8aaa996c6dcd37e504aa24f323c2c32254d5c474c2c272f283a +3e274e6f70240e152422262b33393b36302c37333929322c4163ffffffff +fffff4d1bb305d503e514a3b233016181f152117211d2f1a201f21262316 +20131405130e1d3d372c262224192519332a2840313c467c7f7f74673c3f +46424e48434546452f3d3e1e31272a21363250373d2b28293c24151a1d18 +161c1a1e1f1d1d1f1e1b222a4256697b867c5b524f587096c2e0d6623b37 +30192317191a1b1a1e22231f1f2f1e332513455652424343513ccac4cfaa +3d3a3f3a3f2e1f35374032363956524027242a442a445a6b5aecfaeafff2 +ffd45d726e8c8d806e717879777573726f6d6a65605f6164626262202020 +1f1f1e1e1e2120201f1f1f20211f1a120d0b0c0d10161b1e181f2421231d +111e1d1b2017191f1e1f24172314251d2220201c1720201f191f281f1723 +26272320221c1d2b241e1d24261d121a293317100d1a303d669073321f18 +0613160d1e303e51607086a9d2d9f0b61c1b191312121212121212111111 +111111110b0200060a0f100f0c090706090d131a1e1d3a8a431c04041217 +1507000711120d110f0e0d0d0e0f10140611130b15031112140700000830 +5d381e1704000c1718251d150c0d3426a70e140905000000011008002500 +0e0f17132a3e4b6b647df4964d1000000722270e00000000000602000012 +15211e36344b3c312c202c18326a0a022a100910207fbbc763475997381d +271d282e4f4154472c202526204d56475c562608161c171c1d24282f3034 +332b2b312e372c2a36c1d5d5d7d2cee4fdff7792a6abb4a5976f4f3b332e +2c2d2f25252934363a414953382f2a282022112d243e33412a37352b182b +323b363c6b97d3f7fdd48f50628cb5bab0a7c19a7a643939283231473930 +4f45472e32525d5a514a5055515052555e676b6d6e6a5e583a20120a1c3b +493a4c5c6b82a2c2dad05c3b4144302d1b2a30393734322c25292e413a36 +3c6a96aa94686e8a649bc8bea1183b464d412e37433d3738434548452f2f +3b303a26383a454ee5e6dfe6ddf5c3727bc3cfcdd2d4dce2e3dfd9d4d5da +d7d2d0d1d2d1cfcfcfcf0f0f0f0e0d0c0c0c0f0e0e0d0d0d0e0f0c0a0807 +090c0b0a090a0600070e0d13130a161613190f121717171d0f1c0c1e1a21 +1d1f19161d1f1c181c271c16202524221d21191c28231b1c21251a111723 +291018181a17000f2e2007111d0c0403081f2d37454f5c7090b7bdd69b02 +010302030303030303030202020202020205080907050403020206080909 +07050301000b46080500000903060808080c0c070b0a090808090a0b0f01 +0c0e0610000802090e0d0f10284d2a1b281f091f160f1c181819265959e4 +55625e5e5b5f6074a7b09ea2171a0305081a1b244c4861de8650322a2e4d +6265503b2317171b1715161d2f292e29423e4f3a26222038365b97414898 +bfccbc9db8c9c251334da046242a1d2b2e524258482f212826234d58475e +562808181c191c1f232a2e3233352e2e333039323548d9f3f7f9f1e9fcfa +d41f211d0d110b120a070f151411090f1418151a110f0d12190000000000 +00002d2a3c262a0c191b170b22293027283c3643383a3a24152c2e361d0d +15381312392e321e211725171642464d291d261e10010000010000000004 +0a0c0e0d09050f0b121a202c332d0d1c3553779bbbccb331030205000400 +0c11110d0e171f2329231d1934312f404b3f2e332a0d76c0bfa416353d42 +382834413b35323935383d2929382d38263b3e4e58f2f4f0f9e7ecb26168 +a9b1aba9a6a9adaeaeacacaba9a5a09e9fa09f9d9d9d9d08080807090808 +080d0c0c0b0d0d0e0f0e0d09070a0c0e0e1214130d151b191e1c12211e1e +211a1a221f22251a24172623272625221c2625251e252d251c292d2d2a26 +292224312b24242a2d2319202d32181a14181a0c2245320e10190a0b0902 +111e242b241d1d2c4c5982660004100a0808080808080807070707070707 +07080a0b0b0c0c0c0b0d0d1011111213130c1d5f1e0f02030e0c0d0a070a +10100b0f0e0d0c0c0d0e0f130510120a14020b050f161a2125406741303a +34223f3e3a47361f1013516cffbdeaf9f6dcc5a7a0b8b39da62a3219130e +1b1f274a455ee0935f3b2e34556e74604b3022262a292622263730342b42 +3d503d2e2d2c443e619d485099b0bbb09fc9e3d9694c61af512e33273236 +57475b4d34262f302c5964536a623414242825282c31373c3f43443f3f42 +3d4842475ef3fffffffffafffff1474f51474a3f3f2c1d1e1f1d1a171c1e +2120272222232931160f0c0f0b10072f2a3f2d341825262012272e362e31 +5063818588785231445263544444643e354a363926292233252149484d2d +263733291a13171b1715171820272a2c2c28232c2d43596c818878484650 +617fa2c3d9c94c201f2010140614191c191b2026262b292b243535435d6b +5c44494f2f88cdd1b7243f42463b2c3b4c48423e423f4248353543384330 +44495761fafdf8fff1ffc56b649a95857b74747978767371716f6a656364 +6564626262622020201f1f1e1e1e20201f1f1f1f20211e1a130e0c0c0e10 +151a1b1920272c271812292f2419122529342a191c352734251e1f2d3325 +1b13262e331e11233733341a142937342811262b362307102f363b13170b +152e3a5697793720160412141125384558687c97b9d4e0f35d1521191614 +141414141414121212121212120e0403090f141513120d0806070c131b20 +243d834a1a0b0b1917140700070d110e12100f0f0f101011120c0f132c86 +1d1019150105000027614f00000000001207130425130c270bba13000005 +0f00194020160c340010121a2a22415b696f5f5428120000001e464a4f3a +1d000000000000000000040e2329451c1327121328676d090e421507114e +a2d8df4d3c668f2a1e3b3b1d215d2c45422a2c271f168fdd525a738e511c +0f2c29292c2e3131323133362e2a22181625acdeddd7e2e6eaf0ffafa7be +c2c1aea17f3f3c30242b212f2b322b4039474d59876a514e3c39342a3129 +43322c34483b40373f3c472f5064a7bee4faea965f749ebfb5c3cef5a78a +544c35284a57463a54534b4a32354556878f93969a9a9997949da5abafb2 +af9f72451f0d092044565e6a6b7082a5c8e0df5e35363d34352c333a423e +36332d271b1a3d2f1e2b8faf93835571987b73e6c9c437394f4d4735373e +3f343e4e564a51323341343b3c4f3d4172f0dde0ddeafea57471f9dbc9d9 +dae1e7e6e0d8d2d1d7d4cfd0d5d7d3cececece0f0f0f0e0d0c0c0c0e0e0d +0d0d0d0e0f0e0c09080b0c0c0a05060000050f15170e0c23291e130c1f23 +2e2413162f2131231e1d2d31251913242e311e0f233533321a1229353426 +11242b342305102d34350e180f151c070c3a26050a160803040e26363e4a +54657da0b8c5d94200060102030303030303030101010101010103060907 +04000002050809090807060504081445130609090f03040808080b0a070c +0b0a0a0a0b0b0c0d070a0e27811807090b0d1b110e225747000f251e1c1c +07130730282d5341fb5b4b4c5a655372aebcc5b6b821200a09201321344a +53434224282d3e6081a2a6b09f7d5532201d222e3238282c2c3733461910 +2b202e4d92993c4fa9b7bcaec0cfdcd2392a5f9d3e263f3d2123612f4a45 +2f2f2b211a91e1545e7592532011302b2c2e313334333434392f2c282429 +3fcfffffffffffffebe843201e0d08010e12001119131a09131116091402 +07040d371a0508000001082f2f3a1b080819101e1d2e2f381e3b374c372e +3e50241c383e3d111a376d2e332f422b1830321a0f36444d4e2c1b10061b +1516191b1b171511182023272926261b1110171f2d342c1e293a5175a2c7 +d6c3330000000009081216140e0c131e25231b271a1f20545a3a341e312f +173dd1c4c5353346423c2c323c3d303642453a492e2f3d30393a4f41487b +fdecf1f0f4f392605de3c1a9b3acaeb0afadabaaa9a9a19c9da2a4a09b9b +9b9b08080807090808080c0c0b0b0d0d0e0f0f0c0a08090c0f0e0f110f0d +161f252419162f332a1d18292f38301d22392d3a2e2628353c2d241b2f36 +3c261a2b403d3d241d33403e311b2f353f2d101a383f3f151c10131c101b +4f380e0c14070a070514212225211f283c546a8f17000d110b0909090909 +0909070707070707070705090a0a09090c0e0e0d0e0d0e10121316265e2a +110e0e170e0e0c0a0c10110e100f0e0e0e0f0f10110b0e122b851c0a0a13 +1d33302f40705f1a2d4a4b4c4d3947304229245259ffc1cee0e9deb0aed1 +cbcab6bd363a221c2816263748503f423236323f6186afb5c0ab89624231 +2f3239393c2b2c2c36344a2019342b3956999c3f55a8a8aba5c1e2f7ec52 +406fa845314b4a2c2f6a364e4c3538342d259eed6069819d602c1e3c383b +3d4042434545464c43413e3e4762f5ffffffffffffffff755a5e524c4042 +390e22231b2216211c221725171f1f295437212214151416322f3f251619 +2b212c2836363f26444b7772788a8e553b52646d4d556c9b5753404b3322 +3d432b20424b4c4d2e2422213f3e4043464643413d454d51555754513d37 +475e74898c785b5457617fa9cfe1d94e1a1318121a141b20211c1a1e2328 +251f332321266a795a51354b573d55e2d8d9433d4b46403139474a3e434e +4f44563c3d4b3e46475b4c5284fff3f8f6feffa56b5cd5a883867a797877 +74726f6e6e686364696b67626262622020201f1f1e1e1e1f1f1e1e1f1f20 +211e1a130e0b0c0f111419171f2c3d5148301b2a42503d1d244c6b51172b +65676a361a43616e531b1b516e6d27175373605218325a78692a16667b80 +451c4c877e6f1d1a090f25314c947b3d271a081215192c424f62748eaac7 +d6e1ca1a271c1a171717171717171716161616161616130b0c14191c1f1e +1c110a06050a121c201c2d70460a14020b17130500050b0f0f1110101011 +1112121213081856bd3b0b1c13001504061d5da018000000000d0005043f +37200f00c5001f2a00113d8a992c20214c001815140d134151547f751d0f +323e32301a281c0a19292c1e080000000000000011202fb4410129282328 +51550b2d512d1b378bc1e8ee434274984c10081a0b247a35357c1c396da9 +adcfc44f457adcde8946271017222e363a3b3d3031233538220b022d6465 +5b67697290ffe4c7dad6dac7b18e47362b1e2e322e373d544a4f6b708394 +928d91614f3e37323435683b474d42393b453034367342f6d9d2d0ce825c +6ac5c6c3ceb2ab7984554438533455585f4f576d591a734d7aa8bcc1c3c4 +c7c8c4bec2c3c3c5cbd0be8b501f0d0f2a5166858b7e7580a4c6dbe3694d +47453632303a3e4544403d3427352530453736c99a8f785d6b988d63cdc2 +d3782d564352524a4a4f4241444f46484845474c4c424c4943a1edd7d7d1 +ebff7c6a7fffe1c7e0dce1e5e5dfd7d0cfd4d3d0d1d5d6d2cfcecece0f0f +0f0e0d0c0c0c0d0d0c0c0d0d0e0f0e0c09080a0b0b08030300030d203936 +281928404e3b1b224a694f1529636568361c43636e551b1d51706d291755 +7362511a315c776b2918657d7f471b4e867e6d1a17070e170a0e3f2a050a +16080305172f3e47525f748faabcc6b0000c010002020202020202020101 +010101010102050603000000020807090a0807060605040b391200150104 +0303090a090908080c0b0b0b0c0c0d0d0d0e031351b836020d0d0c32231d +2059a0271622190e230c13175757484034ff466c774b5c89d2ffc9d7d3d6 +362b10060504222d36665c0f175c93a5b09ea49a90a2aea27e5a433b3b3f +45383e453e3cb7450f4450535c86853b64a7b9b5bce5e1e8e4363774ab63 +1a0e20112a813c3c83234073afb3d5ca554c81e3e48f4c2d161d28343c40 +41403132253b433628285b96978b918c8e87e06a30281010090f1500050f +0a1a180c0c0c1a0600100c19272525320a00000429352446060709020412 +27191f215c139b54241c3610172e69481f1f132108383337283b0d241e2a +29426b590e520e191f1f2424252826231b1f201e2026282e291911192434 +372d3539414e72a4c9d3c13207000000000007090603050d141836261c31 +322489443e332c2f32282db6bad474274b38474945474b3e39383e364044 +41434848404c4b4aaafae6eae6f5fa67566df9cbaabbaeaeaeaeadaaa9a7 +a6a09d9ea2a39f9c9b9b9b08080807090808080b0b0a0a0d0d0e0f0f0c0a +0808090c0d0d0f0b121f3249463526354d5b48282f57765c223670727542 +284f6f7a6127295d7c793523617f6e5f273f6985783725738a8d54295b94 +8a78231e0a0c160f19523b100e13060a080b1a2322212027364c5f757300 +010a100b09090909090909080808080808080807080908090b0e130f0e0d +0d0e101314111b50280419060b0e0d0c0b0c0e0f0f100f0f0f1010111111 +12071755bc3a051017285a52494374ba48475d5b4f5d46524f7b6c54515a +ffa5e0f7c4c1d4ffffd8ddd7e0504b2e1d100b28313662570f246896a2af +a0aea69baab7ac8c685148454346353c434042c050184b585d678e853b67 +a8aea9b7edf6fffc4a4880b269261c2e1d368b44448b2b4a7fbbc1e5d861 +568bedf09b5839242b36444c50515345463a55615952578fcbcab9b7aaa4 +a2ffa373725f5c4f4a42121a1b1525251c1d1f301f1c31303f4e4c4a542a +1c0f172e372c541a1f221a18223323282a6627c48d6b657341364a90785c +604d543356444132481f39343e384b6c59125d233a4d545b5a5d5e5f5954 +5659565a5e63614f414c658195927c726760617facd0ded951291c16080b +0d16191917191d1f1f3b2b283d3930a4675f5042485a5045c8cfe8833353 +3c4b4e4c52594c484448404d524f5156564d585754b3ffedf0ebfeff7861 +6deeb3888f7c777575726f6e6c6b676465696a66636262622020201f1f1e +1e1e1e1e1e1e1e1f20211d19110c0a0b0d0f151d1c30456690832848808b +6938336d839d803c5794a1a65c3589a3a283355f92aead5d498fb0a3873a +7ba0b19d465ba0bbc0815385bfb4b02c2614161b1f3987764432240d1518 +22364854687c98b7cfdbf17d152d181e1a18181818181818191919191919 +1919191d24292c2b261f160c0504090f191e171f9b3a1007020714120501 +05090d1010101111121212121614052552681c0811070026171d1d564910 +1110070f360b050f28231604079c1317140c62b1d6b72c19214f0015130d +222f39475e66583700253c1c10000e0c0a0000061b2a34383d3c382b2d31 +1c2a70512d2700000000281949435b658eaecbdfe6405079b2989e21080d +2968413f6930a8d1cfbcbfac41364e7ed3d6e5babababab8b2aaa29e1021 +3982a4702e0000141213161862d4ffffc6e9eef4e0cba36d3e332b3f5b3e +4b42784b7ba39591aac0d4e6b99e826b442f31b791555c63564d594b4964 +b252c2bbd0dcdd96604fffe3c3d4daca9e745739a4ff4f4d694f6d745368 +41ffab97b5cacececdd1d2d0cccecccacaced1bd96521e0f15325c728c96 +8a7f8aa8becae280848575594c51505257595c5a49311835423e2f23b9c3 +715c6e72a8b395b3b8c5863054444d7d47343848494e56513e695530413f +3c513e3ec1e9f2f1d9d8ed6783aef4dec8ccd6dce1e1ddd7d0cdd2d5d5d4 +d2d1d1d1cecece0f0f0f0e0d0c0c0c0c0c0c0c0c0d0e0f0d0b0908090a09 +06040500112447736e214a828d6b3a356f859f823e5996a3a85e398ba7a4 +87376394b2af614b93b2a7893d7da3b3a0485ea2bec2845588c1b6b22b1c +09100f050a3d29080d1a0c060a233a454c58667e99b1bfd6630012000300 +0101010101010102020202020202020202000000000001070a0b09080808 +080605670d050c06020302090b090708090b0b0c0c0d0d0d0d110f00204d +6317020809074d403d2a5c542b46534d4c5b282735504e493c45e05a615d +52a1ebffffcad8dae23a2d12031c241b24404d3f2f1363acadb19eadb1bc +b6aca5a1a5abadaeb2b6a4967f473d7963556243392d245f46707cc2d7ed +eddcdce53f5082c5acaa280f14317049487238b0d9d6c3c6b3493f5787db +deedc2c1c1c1bfb9b1a9a311223d8bb68b552a274f4e4a443e7fcad17e26 +2c181811181a0b0008091d3008090021000d2810051c324c6742301a212f +2915864800010c0c122d272b48941e6134272e49261d18d67223212f362e +29322388ec190d200d3e584a622cdd602416161a17161a1b191517151211 +16161e2d190f1a2937372a2c36435279abc7c2b030251c0a000001020000 +00030c0b060425251f1a006f6f2a24484252626ea5b3c37f28473740723f +3134423e4044413867512c3d3b3a514142caf6ffffeee3e1506f9ce4caae +a9aba9a9a9ababaaa6a4a2a2a19f9e9e9e9b9b9b08080807090808080a0a +0a0a0c0d0e0f0d0a070507080a0b0e120f213759877f31578f9a7847427c +92ac8f4b66a3b0b56b4598b3b193446fa1bebc6d589fbfb3984c8cb2c2af +576db1cdd1936497d0c3be33250f120f06104c391414190a0d0a1521221d +1c1d2a3f596c9332000b06120b090909090909090a0a0a0a0a0a0a0a0809 +090809090a0d0e0d0b0c0d0f121410127d210d0f09080d0c0c0c0c0c0e10 +0f0f1010111111111513042451671b060b183388827a547c72568aa4a59f +a16a717e8e83786d80ffb2c0bca8e4ffffffd6e2dfec554f321c2a2c232a +40493a2d206eada6ab9cb3b7c0b7b0a9aaadb1b4b6b6b59f917f4e4b8871 +5d68473f392c5a417583c1d7f3fcf6f7f74d5c89cbb3b83a21243e7b5451 +7b43bbe6e6d3d8c354486090e6e9facfd1d1d1d1cbc3bbb6253656aadcba +8c686a938d8375659decffbe707c6e6f615c4e31191b1a2e44202410410d +34543f364e647c946c573f3c382d2199631e222c27283e353754a0348a6c +6a7385563e35faa0616571705c4a443097ff30273d2850644d6431ea774b +4e555b57585a5d595757575254565a585644506c8a9b967c6b64636989b4 +cccdcd574f473419131c1a1715161f24201710323731291490934a3f5d58 +778381b4c9d88f35503e477a4a3c42504e4d504c44745f3a4b49475d4a4b +d1fcfffff1e9ef60789cd7b28d7f78706e6c6e6e6c6b6969696866656565 +6262622020201f1f1e1e1e1d1d1d1d1e1f20211d19110b090a0c0f111b1e +3d5684bfac636b8b9fa0795c7ea3a496697e9baaba925aa2b1b7a86192b1 +b5c38d7aa5bbc5bd5f96b1c5bb6b89a4b6c29d7988acadbc1d241a1c1815 +296c674034250d14172d3e4c586e849ebcd6e4eb38241a1c251b1b1b1b1b +1b1b1b1d1d1d1d1d1d1d20282f394147413424190e0604070f161a1918e4 +311f000c0f140f030205070b120e0f101212121212101d091b3b3a280e07 +00002e1d240e3e532a03000000241108100100090e09360e05236ec6d8d2 +ad2c0b144300131c180d0c204f6c6f612c111a370700000000000000040d +0c050513141111202f1c41695715000005232720223e46a2a0bcbfd2d6d0 +3043509db0aa3e32323e5768545a48afb5a6abb2a34d506274c9b2d3bbca +cacaccd0d5dade554c3e4e510908060012010c3d7ac3feffffa0dff6faeb +e4c3a36a5f5f729470658cf4a9a7a7bdddb7bfcdd8c8c5b79255374ba9b7 +70938e7e5e59544c58904adfe1e3ceaa775856a1c5d6ded8c3be88703561 +cd77c5c56c6a796b7b5096a8a5c9d7d8d7d7d5d9d9d4d9dad8d8d8d5bc93 +4c1a111a376278959e8e7e8bb0c5d4f198aaafa69999b4928f8e8d8f876e +4f4dabe9a57f4771dc80534f3778bcfffcd5cc694c53503f895b3a2e524b +595147327b76465144465052316f568ad3ddf0e6625c55457cbcd8d2d8dc +dddbd6d0ced2d6d6d4d0cfd1d3cfcfcf0f0f0f0e0d0c0c0c0b0b0b0b0c0d +0e0f0d0b0907080908040003001c35639f975f7191a5a67f6284a9aa9c6f +84a1b0c09860a5b7baae6498b4bbc6937dabbecbc06599b7c8c16e8fa7bc +c5a37c8eafb3c31d1709131006072d1d02091507050b2f434a4f5b6b839e +b7c6ce1c0900010901010101010101010303030303030302000000000000 +000004080c0d0b0a09090e02b7081802110d0302080c0905060b090a0b0d +0d0d0d0d0b180416363523090508055e4d4e244e674f44434043573d3a46 +372d414b4c7d574d67acfafff4f6cad1d3db332f1f0f0a02052f50564a24 +285cb1a3aba6b0b4c0c5c5bdac9f99949c9fabaaa596555e7b7755514f78 +8b7e5f4b5564e2eaf7e3d9d4d83d505fb0c3b7463a3b4761725e6452b9be +afb3baac575a6c7ed3bcddc5d3d3d3d5d9dee2e5534a445b682a353e4055 +43476ea0e1fade940e2c261e1624292b10161a2840140524842c1d101b34 +0b16283b353b3333332a25695e06232120121e2523346e0e71503a251c0d +202c66663e2a2223483844163c9c3576701d30555a6c32604f261d151615 +1516171a151a1b191616131826130e1d2d38342629333c4c7ab4d2c8a92a +2e291d152244231b100f15170f051d83bb7755101f874029381a3981f0ff +d3c960414341307e53342a4c404b3f372c7972424d40444e523578639ce8 +f5fbd84a4845376aa4b7a7a6a4a6a9aaaaa7a4a3a3a19d9c9ea09c9c9c08 +08080709080808090909090c0d0e0f0d0a0704060709080a100f2d4876b4 +aa707fa1b3b68d7292b9b8ac7d94afc0cea86eb6c5cbbc75a6c5c9d7a18e +b9cfdbd175acc7dbd1819fbaccd8b38f9ec2c1cd252111160e0308382c0f +1216070a0b2125211816192a44647e960000000a180c0a0a0a0a0a0a0a0c +0c0c0c0c0c0c0c0b0d101415120e090b0c0c0c0c101213160ecb1a1f0414 +120d0b0b0d0c0a0c120d0e0f11111111110f1c081a3a39270d081d3baaa1 +9855708a8398a9ada9a6868fa08f80949c9dcda495a6dffffffefdd6dcdb +e95154422a1b0b0e344f514422366cb29fa6a4b6b9c2c5c5bfb2a69b98a6 +a6a9a5a095606e8f865e54507b968557435b6febf5fff9f5ece5455664b4 +c9c7594d4c566d7e68705ec5cdc0c6cdbd61637587ddc6e9d1e2e2e4e6ea +eff5f768605e7d9460788990a68f8ba6cdffffffce557d7c766a6f655934 +34374964392a49ac584e45546f47516272696c6255413134817e2c4b4842 +2e343733427c279e8b7d68563b3d4484907b716c637c5d5b264eb2509591 +3c466360713a706b51595b5c5b5b5b5d5f5a5f605e5c5c5954503e507393 +a2967a676160658cbfd8d6ce59625c51444a68443e36353c3b2f20359bd5 +916d2d47ae62414a2c569dfbffe8de734f4d4837865e40395a50584b4238 +8680505b4e515b5c3e7f69a0ebf7ffe75851452c54828c746b67666a6b6c +6c696a6a68646365676363632020201f1f1e1e1e1d1d1d1d1e1f20211f18 +120c0a0b0c10111d1e425a87c8ad7a7e929fa7896e92a0959a7b868f9ea9 +a176929faeab8091a59fb89686a4adc2c1798ca6beba8485a0b1b59c878b +a0abac0c251919181620575a3d35260e171e34414e5b7590adcadded9e1d +2b1622251f1f1f1f1f1f1f1f202020202020202634435668736c533a1c10 +0804080d14150e0bf91f0f000208130e030204050a120d0e101112121211 +0a1e09113352480a050000301823002c2b24000000000d0e110e0600131a +0e11176eb3cdccd7d8bc2700083d001b2e29141c3c52404e652603003608 +0200000006080c080501010b0b0000000416043e2c472b2708072c5a1d2d +2b5fdabcc1cadbd4bb1f352786b0a39db8aca267732f3579a7a3aeb9baa2 +5c3e2b69e2c3cec9cccac8c6c7cacdd2dedddeca9c0602080810124092d4 +e6dbffff89c6e2f2efeddcc4a4979fafbeb0a59dbda5cac3cbbadddaddd2 +d7e1e3b3564867729f9db8a6a894736460596f69bbd5e3dca7805e5b46c7 +c9dbebddc67d546a70797ca29174b69392967b5b9fb0cdd1d0d5d5d0d2d7 +cfd3d4d1cfd0cdb987461a15223e677da0a8917d89b2c6d8ffa3b4bbbdbf +c3e7c5c2c1bdbdb29a7d75859156585c6bd062534f517ba0f3d9efee5d59 +57514d763221174a3259534f4b5f47171f31625d434c745381ede1eecd6b +7887587db9ccd2d6dadbdad7cecbd3d4d1d0d1d3d4d5d0d0d00f0f0f0e0d +0c0c0c0b0b0b0b0c0d0e0f0f0d0a08090a08050003001f3766a898778599 +a6ae907599a79ca1828d96a5b0a87d97a6b3b28598aaa6bd9d8babb2c9c6 +8091adc3c1898ca5b8baa38c92a5b2b60c13030e130f081e130006120408 +1436464d53647890abbece82020f00070903040404040404040505050505 +050502000008141b180e0701070c0f0e0d0b0a0700cf000a030707030108 +0c0702050b08090b0c0d0d0d0c0519040c2e4d4308060f07674f551f444b +553d4b56524d4753534840525c535960b6f4fff7f5ebfac5c9cdd8353b34 +241314203124374e1c102fa9a2aeb3afafd7dfdecbaea0a3aaa39da5a8a0 +8e48624874829f9497acc365553464f7e0ddd8d8d5cf3b4d3b9ac1afa8c3 +b7ae737f3b4185b3afb9c4c5ad684b3876efd0dad5d8d6d4d2d2d5d8d9dc +dbe3d8b62c36464f5a5880c5fcffe0edbf1d3327221b272e302521252a28 +1c232035112713110018171e1b2b3e49402a333828372236293a392a2a2f +2e46243d35343620213346247f3f2a2c2d40201f44403d2d462f1a75677b +81551c3c291f1211161612131911151613141512171d0d0d23353c332429 +323a4778b8d8c7a013151310172953322a1f191c1e170f213d491015120e +792b3749495a88fff1f4e9514d46403e69281b1344274b413f455d43131b +2d5e5b43507d6093fff9f9bf5365774a6da2ada7a4a3a4a9abaaa7a5a19e +9d9ea0a1a29d9d9d0808080709080808090909090c0d0e0f0f0b08050708 +090908100e334d7bbdab8895abb6c0a087a9b9acb3929fa6b7c0ba8daab6 +c6c298a8bdb6d0ad9ebbc5dbd992a5bfd7d39d9eb9caceb5a0a4b9c2bf14 +1f0f1210090625210b1014050d1328281f15162032506e8d530003001017 +0f0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e121e2c34302316080a0b0b0c0f +10120e05e30c11050b0d0e0b0c0e0c090c120c0d0f1011111110091d0810 +3251470b0b2849c2b3ac556a728f9dc2d4c6a598b3bbb6b1c6ccb8aea4e6 +fffffdf3e7f9d0d7d6ea55615842231f2c382331481d2344b0a2aeb6b9b8 +dbe1dfcfb5a6a6aeb0a8a5a29c8f557860878b9e9398b7c95a4c3d77fff6 +f5f3f5ead83e4d3c9bc8bfbcd7c9be818d474f93c1bfcbd8d9bf7453417f +f8d9e6e1e6e4e4e2e4e7eaebf1f1fffde76a8199a9b3adcafffffffffff0 +597a78786f74736a585156616556534c65456051523b5d5b615b67777f69 +3b3c4a435c4e6455615a4540423f56406d737978584b4e593ca47a727a75 +7b4c395956574d6b553d8d788388602f59545e58575c5c58595f575b5c59 +595a57534538527c9ea9977869625d618ac4dcd7cc4e555150525d835f59 +514c504e433645626e3438373ba34b4d57566d98fff5ffff655b50484572 +3327225237584d4a536b5222293b6c684d59846697fffbffcc606b773f56 +808172696363676c6c6b6a686564656768696464642121211f201e1e1e1c +1c1c1d1e1f201f1f1a14110d0c0b101524264b5d85c09c827c81889d896e +8d928e9f777c8b9e968588929c9c938a889799b59081a9aebda28e97b1b6 +a792819db6ac867d95abb5b214331a1319181a4d513a382c16222b364350 +617f9dbddbe3f54828252b2a26282a2a2a2a2a2b2b2b2b2c2c2c2c2c3342 +55708c9d95785821140a06070d11131208ea20031b020e110d040606040a +130d0d101112121111100e0320314a2f0000000035192d09361d5d240000 +020f0e09000c0e0f0e153ca8cacfdbd4e6dfc625000d4600213531163020 +2a3e3a3c271a004f1400000000000000091311010009000008111900332f +420c0400001f4903432860ddcfccccd5d3b725412c9acea7a8a7a3b54d68 +301fb4ad9bb1adb29e4c513b81eed6cec9c7c9cccfd0d0cfd2d7cbdad6c0 +180f07080d44a8d5cad5e4f3ff97c1d1f0f3ebdbc5c5b6c0cbbfcbb6b9b1 +c0d5c1ebe3e1e6f6e0e4e1dd9f53436d7399c7b5baa0ac72526466709db6 +c7c7c995744d4943f2c9dcf3e8c59779685d65a69ba0b7ae9b8f9a4a839a +c4d5d3cfd9dbd5d6ddd4d1c7c0bec7cfbe7f411a1a29426a7e91a0938590 +b1b9bfffa7bec9d0ccc0d9c2c3c3c3c5c5bba9a59099a3928888816f673e +46556bdbd7f0ff654d58446c5dbdbda5b25e705a5150587c92a49ea25040 +6f7d5160e4d7f5d06972a38183b1ced1d6d9dbdbd8d1ced4d1cccdd3d8d8 +d5d1d1d10e0e0e0d0d0c0c0c0a0a0a0b0c0d0e0f110f0a09090a09070408 +0121365fa38b81858891a49275969997a6808394a59d8c8f99a3a39a918f +9ea0bc9788b0b5c4a9979eb8bdae9988a4bdb18b829ab0bbb91321050814 +13062019040d160a132238474d576d859fb9c1d125040106040002010101 +010100010001000000000000000011273534251b00050c11100f0b0a0d00 +cb040020050c0402070b0702050c07080a0c0d0d0c0c0b09001b2c452a00 +04120a7057632c534292775e5562585158495b585450567ae6fffffff1f7 +e5f8b9bdc3d73c48422f1324060b262529212b39c0acadb5aeb5cbcccecc +c6baada1aca7b3bdb29543635e84788c9097a5b144632f63eee5dad2d2d4 +c93e5941addfb4b3b2aec25a763e2dc2baa8bcb8bda9585e488efbe3dad7 +d3d5d8dbdcdcdbd9d6cce0e6dc4044454c5184e2ffebecede8e83d391c22 +222227212d212020071b1c251418210222140f182f21303538221e283820 +243817211b42281b35373647332e314225282d3b2db6452c2e3244414139 +21164228284a5f687885243f2e3421100f191b12101914171613131a1c24 +1a0b102a3c4037271f31425482b8c6a8a5161b1a17110c2713110b0b1119 +191622172533271e1a22344a3a464869f7f4eef8563c48376055b9bba3ae +536248434e5b7e94a39ea0504373865b6ff5ecffc253619574749cb0a8a4 +a3a4a8aba9a6a69f9a9ba1a6a6a39f9f9f0a0a0a0909080a0a080808090c +0d0e0f0e0d0907080b0a0a0c1412354b76b99e93969aa2b6a387a7aba8b8 +9195a5b7af9ea1abb5b5aca3a1b0b2cea99ac2c7d6bba8b1cacfc0ab9ab6 +cfc49e95adc3c9c31b2d0e0c110f0527261217190c161d2324181017253f +627a9f0700010e110f110f110f110f110f110f110f110f110f101a2f4756 +533f2d090a0b0d0d0e0f0f1304db1205230a110e0a0c0e0c070c130b0c0e +10111110100f0d021f30492e040d3051cebcbb667f6fd4dfdadadbb6a8c1 +bdd2d1cbbeb4c3ffffffffedf1e3f9c3cad0e858696247242e1111262223 +233f4fc8adacb4b4bad0d0d0d0cbbfafa4b5acb1b6ac95507770927b888d +98b0ba3e5e3974fffaf4ecede9d5435d46b3e9c7c9c8c2d36a834b3acfca +b9d0ccd3bb64665197ffece6e2dfe3e6e9ececebe9e6e0faffff7b8a929d +a2ceffffffffffffff717b6b7775706e6068595e624d5c52594b53604568 +5c5a6074646f71724c30314c3e506d51574a66412e47494e6a696e707a55 +4c424c42d88177807d7d685a4d3a35685355737e7b828e33585269685e5c +64665e5b635d5e5a55555c6062463c5782a5ab96765b5c626a93c2ccbad1 +515a5d5b554b634e4b49494e53524c564a5663554c494c525e48525976fb +faffff694c55416a60c7c8b1bd637156505c6a8ba1b1aaad5c4c7c8d6476 +fcf1ffd16067946b61818c7c6f656166686c6b6b645f60666b6b68646464 +222222212221212120201f1f1f1f1f1d1a191814110b090c18173457659e +a4a17a7f8a9495817a888d958a79808d93977d858c9497887f888e999889 +8596a9b0a9829daebdb68387a6af9f848394abbf97192f201d101c172830 +303138342f32375061717cb7cadff8c53a3a443a44424a4a423b44545349 +4d4f4f4e4b4d4f555d697f8c90917b5225170b040407101311048c110609 +08080b0b0806060a0e120f0f1210101111110d0f0a173032190400000037 +242d0530234f0e010007160e0f03110d0e3075c9d6dcdfe3e4e4e5c53708 +1c200069251f1f262c2e2c2b2a1f0700431704000000000000060c0b0a06 +010003082b2d0022174d250a020a1b521f3d2258e1bdd1ccd0c5b92c4430 +b1c3b4c3b5c5cf3a6c2039bdb8b4b6bebdac525b3981dccfcbd6d8d8dadb +dcdddedfe1e8e4cfe153041c2b81c6c9bfcdd8d8eaff94cfece6e8e8d2cc +ced2dbdddcd8cac4c5cfdde8eff0eaefd8e7c6c2c8a852556474afcbd1e0 +c8af655a5b5e96a1b5b8e0ff745d5f3e3cffd5d8f4e4a49384765b89bdd0 +b7bdc4aea298525fa7eaf6d3e2d5e0e8efebe7d5dfccafc0ceb26c371610 +2b475f85949b867d96b9c9d9ff80abbacad5dbcfd4d4cdc9cec8bfc1c8d7 +cfc2c6ba9f8a99975e574184e1d5dac5487054584640e0d9e4ff7b788348 +4436abeedff1c3555885573f7ff3d7f9b76576987879fecad0d6dddfdddc +d9d4d6d2cecccfd2d5d5cecece0d0d0d0d0d0d0d0d0c0c0d0d0d0d0d0e0f +0e0a0808090b0a0900082433738a957b86909b9b88808f939c9080869499 +9d838b929a9d8e858e949f9e8f8b9cafb7b28ea6b7c6bf8b8facb5a38887 +98adbf94121f11110410040c10101523241f28334f5964689ba9bacf980b +080f030b070c0a020002100d000405030000000000000411191c231e0a00 +02090d0d0b0b0d0c007f0401090603040506060405090c0909090a0a0b0b +0b080a08152e30170306110e766666294e4887656b5a70665a6a636c6055 +6ea9f6faf9f6f2ede8e4efb7acb09a41993c2217151213181b1f242b3bba +b2b9bcb8b0b5b8bfc3c5c1b9b4aea4b3aeb89f4d6662aba49c979691a84e +55356ffddbe8dbd2c3bb314c3dc4d6c0cec1d2df4a7e324bcfc8c4c3cac7 +b75b65438ee9ddd9e7e6e6e8e9e8e9e8e7e3ecece3fd79335062b6f4f0dd +dfe4dae2ef323a2b1217242126292a292622221e1b15171e2323201c2515 +2c161a272b15312d1f2f270f1e27372232352a4033383e80b1312b422b26 +e953272c343a534f3b0d21383c1e376678908c311c354f39081d131a1a19 +172120433c212a291f120c1424424a33393641485b8ebcc8bcbb0a221e19 +17170a10150f0e15110a0c0d1c181424261c204f6a4953408df6e2cba72f +5a47514543e6dfe6fd726a713b4a46b9fbe9f7c7595c895e4789ffe5ffab +546a8f6f6deaada8a9abaaababa8a5a5a29e9c9da0a1a19a9a9a0c0c0c0c +0c0c0e0e0d0d0d0d0d0d0d0b090a090a0b0a0a0b0c0315374c8ea3ab8d96 +a0abab98909fa3aca09096a4a9ad939ba2aaad9e959ea4afae9f9bacbfc7 +c19cb7c6d5ce989cbac3af9493a4bacb9f1a291613041208181f1f232a27 +1f1e18211a1509374c6c9b7b051121181e1b23221c131d29291b2120211c +1b1a1e1f2126364043483d220a0b0c0c0c0c0f111002880b070b0b070b09 +0b0809090f100d0d0e0e0e0f0f0f0c0e0b1831331a0b16344ec6bdb56582 +7fd1cce3d6e3c5b8dfdedfc8b1b9e3fffffffef7f4f1f2fdc4b6bca753ad +4e33241f1b181a1b1d273b4cbeaeb0b3b3aeb7bac0c5c7c4bcb5ac9ea9a4 +b29f546f68ab9d9291979bb554593c77ffe6f8eee7d9d0445f4ed3e5d6e4 +d7e5ef598a3c55dbd7d4d6e0e0cb6a6f4d97f2e6e2efeff1f3f4f4f5f4f2 +eff8fffeffa667899becfffff9f5f2e7f7ff657c7a66686e656465676766 +635f58545357636a6c6b676e5b7054555d53273b4240626658645d5d343d +424063627279aed85044563e3dff9377827d6a6e634f2744677056698a90 +9c98443b66918d6475696f6f6f6b6e6782795d6a6e6346425d7ba2ab8a81 +68645d6999c5d0cedf3a585b5d5d5f52585a555359544d4f54615b535d5a +48466a7f5861509efff3e2bf456f58615352f6edf5ff837b814c5853c4ff +f3ffd2646794685293fff0ffbf646e8a6661df9d8e8070666468706f6a64 +605e606365655e5e5e242422222222212120201f1f1f1f1f1d1b191a1712 +0d090b1519375b6aa1a39e7a818b9595817a898e968a79808d92957c858c +9497887f888f9894858292a2a59f7c95a6b4ad81879ea597838396badf67 +112c181c172215181617284a4e413a3f59657d8fbdcce3e8906165615c73 +75779bb4a275585a67716f6c6d70727172747c8b959696825c24180d0807 +0b1013150872120a0f0f0b0a0a0a09080a0e1111111112101011110d0f0a +152f3119050000001d011700232331000000010c15000508002b9bd7e6e5 +ebeeefedebe8ce4e1f28383cca6113232a2d2b2a27261b00005431190b0c +0f0608090c0f1214151a0b0b06270b183815472312100e338e133c2162c8 +b8b9cad1deae3f4727b7beb4d1c5bce141671b50c8b6bebec2c990454c40 +93dfc9cadcd8d8dbdcdddddedfe4dfe1d9da47175babc2cfc6c3cfd5d6df +ffa3bedde3e2dbc3c0c6ced8dbd9d6cecccccfd5dde1e6e0e1d8d8cdc3c7 +8c4f4d5b78aec4d4f0d19e684b495688c7b6fcffff575d5d305dffe5b4d4 +e0b381746e7da8b9c5cdced4afa3834b74d7fffff0eee9f2fdfcf3f0e3ff +ffffc8bcca6331161430485572888b767298c4dbedff88b1bbcadff2ebed +ecddcfd4d7dce8e9eff0e3ccb7ada6cb9d4d483b9cd4c9eac06f834e4234 +73cdedd5dc83966f5f5538bec9dad29c665f9b5332aae3e6eda681a1946d +8fffbeccd3dadbdcdcd7d1d3d1cfcfd1d2d2d1ceced00b0b0c0c0c0c0d0d +0c0c0d0d0d0d0d0e100e0a0707080b0b0900072232758a947b87919b9b87 +808f949c907f8693989b828b929a9d8e858e959e9a8b8898a8aca888a1b2 +beb7898fa4a999858598badd5d051f0c0d09110406040216363e322e3951 +5b6d77a0aabfc265343630263a3c3c5f7864371815212824201e1f21201e +1d1e2528262c271600030b0e0d0c0b0d0f036d0d050a0a06050505040305 +090c080808090a0a0b0b080a08132d2f1704000f08583f4c1e3d42665154 +62685c63566461456ed2fffffbfaf7f3efede9f2b9a7a09c84fa77151715 +1415171b1e231836bcbabdbbb7b5a4a5abb1b7b7b3b0b6a6a28f9a665d77 +5fa59b9893848fd0334e3a7fe9d9d4dcd8dca93b4932c9d3c0dcd1c9f153 +792f64dcc8cecbced39b4c544aa0eddadbede9e9e9eaeaeae8e8e8e6edee +f86b438adbeef3e4d8dcddd5d4ed3d281d12171d161b1c1e202123231f1d +181716191c1e1a1f1d2523202a12142c2c2b3523102c2e2a2f322f293058 +49a0e9e3303c441f4fe97112193f615444312a3a2b26293f6f738e77292e +60875a272d282c2d211d2a3598d59e4d2d4c16121c2e4a4f32343640475d +95c7d6cec51a31261d21281e23261d14191c1e241c2126241a1a2a3e816e +364444ade9d1d29d516d423f377cd9f6dbdb7c895c545e4cd0dae7dca56d +639f5938b2ebeff39d74988d6685f1a3a7a8a9a9aaaaa49ea2a19f9f9fa0 +9f9e9b9b9a0e0e0e0e0e0e0e0e0d0d0d0d0d0d0d0b0a080a0a0d0c0a0909 +0013354b90a7ac8f97a1abab97909fa4aca08f96a3a8ab929ba2aaad9e95 +9ea5aeaa9b98a8b8bcb796afc0cac3949ab0b5a59191a4c6e8680f260e10 +09170c121213223f3f2f2019201616153c507595523948463e4d4d527891 +7d5032313d45423e3d3f41403f3d404a4f4e5248300a0c0e0e0d0e0f1113 +077111090e0e0a0909090807090d100d0d0d0e0e0e0f0f0c0e0b1630321a +0a112f3f9e8890536e79aab1c1d0cfb1b8c4d8c79cb4fffffffffffefcfc +fcfeffc9b3aeab92ff8422211e1a18191b1c262744bfb3b2b0b1b3a7aaae +b3bab9b9b4b3a09b889767647e62a4928f8e889ee040584185f0e0dfeaeb +f2c0546046dde6d6f2e7dcff5f85386de5d6dedee4ecaf5c5f54a9f6e2e3 +f5f1f1f2f3f3f3f2f1f1f0fdffff8f6ab4fffffffce9e5e0dbe4ff6d686a +63666556575a5c5e605e5d585857575b6164676566626661595f3926353e +4b68665c74674f3e36383d568b82d3fffe454d573166ffae5e6a83876954 +43445f5b5e6574978f9f85415296ceb4878a8184857b73797cd3ffd5866f +8c4c4b6683a7aa8475645e57669ccedddee74764605f69746b6f71665b60 +63666e696c6f67564d545f9a80465253bffee6eab569825650488de9ffe9 +eb8c9a6f656d57dae4f0e5ae776eaa6544bff8feffb2859b875c7bed9a95 +856f6261656d6967615f5f6061605f5c5c5c242422222222212120201f1f +1f1f1f1d1b191a17110d090a1419375b6ba3a39a7b828c95938079898f97 +8979818e91927c858c9495867e8991958e7f7f8e99988f748d9ca49c7a85 +929485716c748fb22a072911191c231714100e203e4338344d636f8ca4c2 +d1e7d1313942444c4e35585c687370655e5e58534f51585c59585e616d73 +727466461d150e0b0b0d1415160d4c160a10110c0a0a0b0a090a0d101010 +11110f1010100f100a132c2f1807000a00716c620f23506752464e282439 +3d1c3676bcdbdeeae5eaf0f3f7f7f8e4987c7e6740a14f17262a2b2a2724 +221e17146655514d433c4338271d1e2a3c4731503b3c591d2a3f417f5237 +527f848c2c463a73d6d8ccdcd1ed8f4c4c32c6c5dbc1c1bed2326b2752c2 +b7bfbac1cf7c5e4a4098ddccc7c5cccdcfd1d5d6d7dae3dfe3e1e87a6cbb +d6cac2c6cbcac4c5cfffbcb2d1ddd3c5c3c0c3c6cdd2d5d6d0d0cecbc7c9 +ced2dfd8dbc4c3b6be744d54576896b8c3c5b18152444e557cc3faffffec +3f52523e75ffffb4d1f1ce788f6d6b95cecdcccba7809271547bbfe6d9d5 +e2ebe5f1ebe8f3adbeffffffd3884b2411122b3b3c4f626e68739abdc9d9 +ff86b1b8c2d7eae5e0eae4d8d8d7d1cee3c4cbd8c6b6a884a681535947c2 +cedaff8b526b57592d9ce8ebf1e0677e5f6b3655f1e5f5d86a61719e4d33 +d0e6edfb9a7da38366a2fff7c6cdd4d6daddd8d0d1d0d0d1d3d2cfcdcfcf +cf0b0b0c0c0c0c0d0d0c0c0d0d0d0d0d0e100e0a0706080b0a0800072235 +788c927c88929b99867f8f959d8f7f87949798828b929a9b8c848f979b94 +8585949f9f998097a6aea6828b969887736c748fb020001c050d10140804 +0000102d352a2840565e788ca6b3cbb4151c26252b2d153a404c5451453c +39312a2424292b2822242123201b1f1d0f00060e110f0d0b0a1008471105 +0b0c07050506050405080b07070808090a0a0a0a0b08112a2d1605001522 +a4a28f283567929ea4b1846b7d896b7eb6f3fffffff9f9f9fcfdfefffff1 +eadbb475c25b1416151416171a1d1f2035a9b7ccd0c1b3b3a89c969aa5b1 +b9a7c3aba0a85852606dbeab99b1d1beb24259518ff5f5e4ecd6eb8c4a51 +3fd9dae7cccdcbe2447d3964d4c7cfc7ceda8765524aa5ebddd8d8dfe0e0 +e2e3e4e4e4eae7f0f6ff9d94e6fff3e6e2e1d8cec2bad052201b1915101d +1e1b1a1b20272d2928251d1714161a27252c1c1f1925001a3f3832393720 +1f27222a384539396ea6daf0d1223a413876e7b72d316a8f59663621344f +3d3542423d71582831494d2316273023271718370c3fa4dbc26627110f1f +324c4a241b1b2e42639dc6cabab40c281c1319241c1a27261e1e1b13122b +131e322d31382e6b5c455b55d8e8e5ee6b39584e5833a5f4f4f7e260734e +634069fff6ffe2736875a25439d8eef6fe91719a7f629afadfa3a5a6a6a9 +aba59da0a0a0a1a1a09d9b9c9c9c0e0e0e0e0e0e0e0e0d0d0d0d0d0d0d0b +0a0a0b0a0c0c0a08080115354d93a8a99098a2aba9968f9fa5ad9f8f97a4 +a7a8929ba2aaab9c949fa7aba49595a4afafa58ca3b2bab28d97a2a4937f +788099bb2b0523070f10190f0f0d0a1b353527181e2218222a4359828800 +1e34373c3820464e5a6360544c4a433c37383d403d393a393e3e3b3e3824 +0a0d1011100f1010140c4b15090f100b09090a0908090c0f0c0c0d0d0d0e +0e0e0e0f0b142d30190a072b4edddec6505990c7eafeffd7adbedfc7d0fd +fffffffffffefffffffffffffff9ecc485d1691f201c1a1818181a232f46 +b1b6c7cac0b7beb3a59ea2acbbc3abc6ada2ad605e6f78c3a998b5ddd4c9 +50605793fafbeef9e9ffa1606550eaebfde2e3def25089436eded6dfdae1 +f09b755d54aef4e5e0dfe6e7e8eaecededeef4f2ffffffbbb7fffffffff7 +efe1d0c9cdf0835f65655f555b595856575c62666163605c58575c606f69 +6d595b505b272946474c656f615d5840333a4a485a98d7ffffe434485146 +88ffeb6f79a5ae6976493a577c726c766c5c866b43567d907a7382877a7d +6e6c834f76d3fff29d5d444a6887a9a572594749516da4cbcfcad93f605b +5863716a6773706767655d5c73596070635e5e4b7f6d526762e6f9f7ff80 +4e6c616843b4fffffff1708360724c74ffffffeb7c707eab5e45e5fbffff +a47f9b76578ff6d590816b5e5d646c686560606162615e5c5d5d5d242422 +222222212120201f1f1f1f1f1d1c1a1a17110d090a1319385c6ea8a5967b +828c95927e798a93988a7a839192907b858d9394857e8a9092897c7e8e95 +8f827085929489737f8387765d56524e530c07210e1c1d1f1b1115141820 +1f2439576d799ab4c5dbe9bf3b4a41151728261b0f0d1314101929262321 +23282b2a282e2f3a4242463d2417100f0d0f111616140f2315080d0f0a0a +0b0b0a090a0c0f0f1010100f0f0f0f0f100912292c180a1600005f00261b +342f4912161c00000300000017384a3730494e5357595c5e512f24342700 +170a26282a292825221f1f200e32171c2e3c4754452d1c1823333d534849 +6139235b4852605673737d888c1a2e39498b8b8e9cb5c24c2b343fb8c2b4 +adc8c9b425561e55c6c5abb4bdae84523e418dc5cfdfdbdbdde0e5e9eff1 +f3e9efece0ead7d4e2d9d8e1eaeeeae1e4e6fbc295aabcbcbeb5afaca8aa +adb2b6c6c5c3c1bdb9b7b8b4b9c8bdb7b2af7247463c5c87acb5ae9a7d45 +3a3a45aafffffffcbf474d3a209df8ffaaccefaf559361739dc7bcc7b9c2 +8483535488babfc0d5d2cfbedee7ecd2c2b583544f504234170b0f242f23 +2f3b535c7096b6c0d3ff77a4b5bdc1cac8c3cdc7bfc6cacac7c1c0cebcaa +cec56e7b573e484ae2cfdaff685b675a5827c4f5d6f8c85a8979663987e7 +ddedee667675844439def8e6d48b7ea97d69aaf7f3bfcaced1d7deddd6d4 +d3d2d3d4d3d0ced0d0d00b0b0c0c0c0c0d0d0c0c0d0d0d0d0d0e110f0a06 +06080a0a07000823387d8e8e7c88929b98847f90999e908089979896818b +93999a8b849096988f8284949b968c7c8f9c9e917985878b785f56524e50 +020014021011130e0407060b1414192e475962819aabc3d5ac2c3f370a0d +1d1d190e0b110f0b121f1b16111214151410140f0f0d070b0a00020a1013 +100c09090b0a1e1003080a05050606050405070a06070707090909090a0b +0710272a160510000b8929492c3f3f69506673402f39372c394b646d5346 +5a5b5e61666a6b727272775c0a2a0e1c1715151517181b1a181457577188 +8f94978a796e6f77838ba19696a469436b55698693b8b3b0a39c273f4d62 +a7a6a2aabbc3492a3b4ccbd5c1b8d3d6c135673067d8d5b8c1c8b98c5c48 +4e9bd6e2f2eeeef0f3f6fafdfffff3fcfcf5fff7f8fffefcfffffffbefe7 +dbd4742720262d35353128201e242f374948433e3933302f2d32453d3c39 +37192640303f4a4f392b2d352e3c403b80e4eaefe6b1323b3224adf3d843 +4c8585487d3f3f57674b4f496c49633a2c4754423242413b2036353c333b +4f330e0b02000a0c21354d441506011d3d669fc3c7bcb607282c231c211d +1d282720272a25262b3243372f616c2d4f413b525cfae9e7ee4d46595357 +2ed0ffe2ffcc56816d604399f8ebf7f76d7d79884b40e6ffefd78272a179 +67a3e8dca0a4a4a2a7aeaaa3a3a3a2a3a2a19e9c9d9d9d0e0e0e0e0e0e0e +0e0d0d0d0d0d0d0d0b0d0b0b0c0c0e0c0a090116365299aaa69098a2aba8 +948fa0a9aea09099a7a8a6919ba3a9aa9b94a0a6a89f9294a4aba698889b +a8aa9e85919397846b625e585b0d051b06121117150e1413141812131a23 +241c2d3b4a6b8e81173d40181823201e13101615111927231f1b1c1f2120 +1d1f1c20211d211d0d0b0e121312101010100e2214070c0e09090a0a0908 +090b0e0b0c0c0c0d0d0d0d0e0f0a132a2d1909120b29b356714653588f89 +abba7d5c65726c737b8b8b68536261646a6f777c8585868a6e1a381a271f +1a17171616181e27245f576e86939ca799867978818e97ada29ead75507b +66778f96bdbdc1c0b637465467abadabb5cbd55c3c4d5cd9e4d4cce7e7d1 +42713a71e2e2c8d2dccd9f685257a4dee9f9f5f5f7fafefffffffffdffff +fffffffffffffffffffffff2eeebef9c585b63656b666159504f525b6275 +7473706b686867656a796e6b66643931423a516b7c6f5f564d3439404498 +fffffffbc041473d2fbaffff7a89b69d52894f55738d777d779165784d46 +69837c7c908c856b81818575757e5a33322c2c3c486c8aa99d62422a374c +6fa4c9cdccda375c64615e64615f6a6760676a67696b6e7c6c5e8a8c4560 +4d445b66fff8f7ff60596a63673edeffeeffd8648e7b6e4fa3fff4fffe75 +858291554af1fffee6937e9f705b99e3d48c7f685a5b66716c6863626363 +625f5d5e5e5e242422222222212120201f1f1f1f1f1d1b191a17120d090a +1419395f72aba5927b828d95917d798c9599897b8694938f7b858d939283 +7e8b8f90867b8090958c7d75848f8c7c6f797c826f5759563a1e0f09140d +1a16161c0913181a1a17284c637686a4bbcae4d76026203929393930160b +0d1a1b0d080f0e0f12121114151611111d272a2c2715100d0d0e10121919 +13100913070c0c090a0b0c0b0a0a0c0d0f0f0f0f0e0e0e0f0f110a11272a +160b100144be001a39278478000000000000000c1600001b1302090b0b09 +0503000000000013051f1a2f2929292521201d20292f47210500071d1b19 +110b0702000000000a1526003f7d7124032500001e130e444e3100144b87 +8985272e42381d006291611d16003d4446002d3c004e89333f3c38321300 +0500000003070c1012131821180825251d181922282523262a290e26393e +62685b5b646566645f5b58595b595a5c5e5c564f54574f50506553392d35 +2e59596185aa88402b31353058caa9c1b7491a4950224ea8cd8190974929 +6931496f98b7c072ba816a3342739e97b1d4c8b8a6c2c5bac8b7a56f3826 +273226130e0f2327191e2f4751658eb8d9f9ff658ba5aa9ea1a2adbbc1c2 +c9bfb0a99fa3a39cd1fffc5a5c50504d55e3dcedff564b5b553c27e4ecf5 +f8a05270695039b5f4f5f1c251669d6b2c50f4f5f8e36778955a66cfffff +bbc9d0cfd3dddfd8dad8d5d3d3d3d3d2d1d1d20b0b0c0c0c0c0d0d0c0c0d +0d0d0d0d0e12100a0605060908050009263d83918d7c88939b97837f929b +9f8f818c9a9995818b93999889849195968c8186969b93877f8e99948475 +7f80846f575754381b05000701100c0b1100070c0f100e20404e5c6a88a1 +b1d2ca592525423646473e291f212c2b1d161a1817171514151617171214 +130c0c0b01070d1114100c08080a0b040e02070704050607060505070806 +060606080808090a0c080f25281405050057dd073442288b8d0f2432292e +202a3a41221e352613181918181817151728161c30152514221615151516 +181917111f5445373232413636383939342e28272a34393c053e7c793828 +501e14221016515f4614285e948f872931494631056d996929230a4e5557 +043b490756913c49464540241018131214171b1f21232426322c1e3f423c +393a4245403a3b3c3b232f261325251a1f2c2b26201b1b21262825242628 +251f181b1f171a1a2f1d13223b35563d2b32523d1125424b3b47b092b5b6 +49103f502f6db8ae3e374d37316e303d526878762b835e59282d4d5d4c6c +91866e4e5b50435a5a623d0d0000050c12293c50451301011d3c649bcae4 +edd4173444402e2c303f4f575b5f53403a373f403d79debd2f4249575e6e +fef8fbf93f3a50513e2ff0f8ffffa4526a5e4d41c3fffffbcb586da27033 +57fcfdffe75f6e905867cdfcfaa0a7a8a3a5adada7a9a8a5a3a3a3a1a09f +9f9e0e0e0e0e0e0e0e0e0d0d0d0d0d0d0d0b0d0b0b0c0c0d0b0908011739 +579eaca49098a3aba7938fa2abaf9f919caaa9a5919ba3a9a89994a1a5a6 +9c9196a6aba3938b9aa59f8f818b8b907b63625f432610061005110b0f17 +06111617110915282321213444547e862d1021473e4c483e271e202c2b1d +171c1a1a1b1a191a1b1b1714191c1819170a0c0f1214121010100f0f0812 +060b0b08090a0b0a09090b0c0b0b0b0b0c0c0c0d0e100b12282b17050100 +68f9234b4b2d93a03352604f45344b5e613d3346341b1d1c1e1f1f222227 +3b2a2f4224311e2b1c171715141516181e2c5a453632394d47484746443f +3835373a42474a16508c864330572c293f2b2357664b182f659d9d963840 +59533c107fac7c393317585f610e48591769a44d55504e492c171f1a191b +1e2226292b2c2f3c372b4e524e4c4b51534b4240403f2838392e4646383b +45444039343334373b3b3c3e42423c373b3c343432463422283b3b61544b +5c7a5c23273c483f59c9aecbc4511948583572c5cd676572453474384964 +8095974da0746b3840667f759bc4b69f819087798b86855a2917142c3c4e +7691ab9b5d3926354b6ca1cee8f9f03e5e71706060637080878a8f84726d +6a716f69a1ffd8424f515d6575ffffffff4f4a60604b3cfcffffffb05e76 +6c584cceffffffd26073a8763b61fffffff36e768c4c59c1f8f38d826d5c +5865726f6e6a676565656463626262242422222222212120201f1f1f1f1f +1d1c1a1b18120f090a141b3d6177b2a89079828d95907d7b8f9597877a88 +97948e7a858d9291827d8c8f90877d8291958c7d7b859089776f787b7862 +4e56543212190c0b0f140f1116090e151e231f2b4c6f7c94b1c2d0e8a418 +321815000e4c87a25b1000030e1211090c1010100f12100905111c1e1f1c +0f0b0a0a0c0f13181914140410090e0b0c0a0b0c0c0a0a0b0c0e0e0e0f0d +0d0e0e0d100a112628150a151144e1736e3d3aa08f000100011a090e0116 +262a21101c1f1f1c1a16120f0c150c0f20202a201727272623201f1d2227 +3a57504742435558595553504d4a465a87bfc1db302d5e7d374ca9a5c3d7 +9b2547375c266f6d423c59343635454469f7616ae7a32939323f57cc6d22 +95ad5933424f3f25222d2a2728292a2d2f2f2f2c2b2a27332e2926323631 +232330352a292327242f32313c3f48555854493e394240434850514b446a +867b76788342272e341c679adafbf5bc3135231e2d2bacbad0c740314d44 +1180966e44696730373c442e41c1fff9b5756f542e344255472f5f614e3a +44565a46464c392c281b1b190f0d0c1b1f1117233c4a628cb6d8f8de2e49 +5d605152563e48515b625a5b684e4944424d5c5a45353741373f6b513343 +36502938593e5a715c6b4f2b375a5023708895a7602f2e4d5c3742ac88a7 +64565e654a67a5c5dfb5c9d4d0d1dbddd8dedad7d5d4d4d4d3d2d2d30b0b +0c0c0c0c0d0d0c0c0d0d0d0d0d0d13110b070505090805000a27428a948b +7a88939b968381959b9d8d808e9d9a94808b93989788839295968d838897 +9b9285858f98917d757c7d7a624e5452300c0d0000030a05060d00070b15 +1b182541545d7492a7bbd89c1a3b292d112a69a4bf782d121c2728271b1e +201e1b1a1c2024202122181413090b1013120f0a07080b0f000b04090607 +05060707050506070505050607070808080b080f24261305080a51f68a7e +3d35a19c1e342f353f27302536424235212b2e2e2e2d2d2b2a283025222c +2427160814151413151718160c255b666762565f5e60676e716e6761719e +d5d3e232295a814665c6bbcbce912952446b38817c4c435d383c3f53587b +ff6871f0af3747434d65da792b9cb4603d4f5c50363541413e3f40414142 +42424042413f4b4944414d514a3c3b484a444b41362627262734353b4142 +3f3a39393d3b3e454d4f49426680736b6c76321d2f40307699c7ccbe8c17 +3b3c3d452da7bddad6492c464723a6b4661f2d392f4d54593d43b4f5d692 +585e503032353529255f5d41201b1e1c0a142920161000000c152d3a4a3f +1103001c3c659bc9e6f7c20218282414161d08161e292c231e2b100b0405 +122a332d2b3a504c588669413b244421365d48667f6975562e36544d2b7d +959fb069363552613e49b390af665055624a69a5bed09eabb0a8a6acaca7 +adaaa7a5a4a4a2a1a0a09f0e0e0e0e0e0e0e0e0d0d0d0d0d0d0d0d0e0c0c +0d0e0d0b090802193d5ca5afa28e98a3aba69391a5abad9d909eadaaa490 +9ba3a8a79893a2a5a69d9398a7aba292919ba59c89818889866e5a5f5d3b +18190907070b060a12070f141a190e1525251d293f4c608a5d0026232f15 +2d679fbb74290f192426251b1e201f1d1c1e201f191e221c1a180d0d1012 +12110f0f101013030f080d0a0b090a0b0b09090a0b0a0a0a0b0b0b0c0c0c +0f0b122729160200045aff9c8b3d319ca2314f4a4a45293a33414d4c3e28 +3033333233333231334139333c30321e0d1815141313141516152c5e6464 +615d6b6e7075777a756f6a81aee3e1f23f37688c4d6accc8dee9aa35584a +703c8583554d684348495c5f85ff7a83ffbd42524d5870e5873aaec67049 +5865583e3c48474445464748494949494a494955524f4a565851413f4c4d +454c433d323434323f3e454c4e48413d3b4342454e585a564f748e827978 +803d253340317da9ddecdda4243b3638473abbcee6dd4e334d4c27a7bc7b +3e5155374b565e444fc5ffeea86c6e5e3c3f464c434079765b3d3b43412c +3141352b2615213a53788fa292573823334b6ea2cfe9ffd81d3646463538 +3d28333d464c42404d393429273245483b3441534f5d8d734c4832522e43 +6954728a727f60373e5e5836869ea8b76e3c3b58674651bd9bbc735c5a5b +3e5b99b8c98c8776605864716f726c696766666564636363242422222222 +212120201f1f1f1f1f1d1c1a1b1a140f090b151d3f647bb6a98e76818c94 +907d7c92929483788897938c7a858d9290817d8d8f918a7f8290938b787b +828e86717074746953494c3a1c0f19110c140f0f160f1114171e211b274d +7882a0bfccdbe15c0012040603000000331f0e0a0f0e0d0c0b0b0d0f1111 +120c0500060f1012130c0808080a0d1217181515090c0a11080e090b0d0c +0b0a0a0b0d0d0e0e0c0d0d0d0c100b12262713090d0e1185a7802e444236 +041200081714120b100c192c201b1616161413100e1006171b1b1a1f3332 +24232321201f1f222f220d0000000315140d000000000004000015362300 +5f575f00004e24001f3826463e3f0051a267746a252d40410904be530029 +5f2a2649390081aea5b992533b3d3e291b17110f111011111011100d160f +161f1e1a1a1a181b180f1017150b1b18192017161212131d2c302b221918 +141516191c1e1a185fb4cba3a7953c1b1439294b17061720481a45341131 +60b90011391a495738294ba9eaffff8637251d463a458bb1856868864c36 +3730352e091d140f1e1d4357596356200915161c0e08080610150a141b31 +415f8cb2cbded22b464b453e403b332d252633467fc3c7b0a0bcbd652a43 +392e3447867d855846444e4c4d2b58968f4f0e4547475739414b1907202f +413355353291b75f0026685e57656c431e3da3c0d4d5d4dbddd7dad8d6d5 +d6d4d1ced3d3d30b0b0c0c0c0c0d0d0c0c0d0d0d0d0d0d13100b07040507 +0705000c2a468f978a7987929a96838298989a897e8e9d9992808b939896 +878393959790858896999180838a948c77747676695147493719090d0100 +0805060d090a0f10181c1825435d607f9fb1c7d55a07231d232516181e4d +38242023221f1e1919181a1b1b1a1c282525251a1717100d10120f0c0807 +080c100407050c030904060807060505060404050506070707070b091024 +25110400051893b7892b3b3e3f21392d31342b2f292d262e3f322d272729 +2c2c2e2d2c1823231f191a282314131313151517161b16161114180e1712 +0f0d0f12171819070923432c00625c6d14146736071a312a4f494a045cab +70786e29344a501c15c659063369373357460a8eb8afc09859434a4b3a2c +2a262729292a29282625242f2a2f3835322f2f2d302d2728312e27393631 +352a2926241e252d2f2f2c2e2f2423252b3133312f73c5d8acab95391a19 +4743672b0c05042d0d514f344f6ec5122a5128444d373873cff3f9e26d41 +423c65575c98b5816062845343443b393b2e4c40353a2d4653505a521e03 +0a050c061228303d360f060018366199c3d9e5ce203a403c373c3a363128 +2a324476b4ae917f9b9d4c18393c39485f9e919862403846494d3262a39d +5c184e4b475438485523102936483b5a3a3798be6603286258576772461b +3290a6b4afaaafafa9acaaa8a7a6a4a19ea1a1a10e0e0e0e0e0e0e0e0d0d +0d0d0d0d0d0d0e0e0e0d0e0d0a0808061d4060aab1a18c97a2aaa69392a8 +a8aa998e9eada9a2909ba3a8a69793a3a5a7a09598a6a9a18d8e95a09883 +7f8282755c5254422213190c080c0607100d1116171a160910202619304c +58718b2100111927271714194a35221e22211f1e1a1a1a1c1d1d1d1c211b +1f221b1a1a1310121312111011121114080b0910070d080a0c0b0a09090a +09090a0a0a0b0b0b0b0f0c132728140100001ea0c4902632353c29483a37 +2f212a272b252f4336312e2e2f3030302f2f2431302a21202c2615131310 +131315161d16130b0f1514231f1b161316191c1e1316304c350969627015 +156b40172e4335544d4e0860b2778177323e5357221cd369163f75403c60 +4f1397c4bbd0a8674e52534133302b2b2d2d2e2d2c2b2a2a3631363d3b36 +32302e312e292a32322a393633382e2d272620283134322b29292324282f +343837357acce0b3b49d401f1c48446b361c1b1a3e164f4a305179d31d31 +55294a553d3b72d2fffffb80433e3e685b62a1c0906f70915d4b4a414244 +3754493e453a5764616b602b111a1727354f718292854f371f2d466da2ca +dcebdc314e514f474d48453d3736425289c9ccb19eb8b5612844433d4961 +a2989f6c4a425154593c6caca6652257544f5d40525f2d19303c4e3e5e3e +3da0c8700f346c5a4f59643b162c7f837b685e66716e706c6a6968666360 +646464242422222222212120201f1f1f1f1f1d1c1a1d1a14100b0c181e40 +637bb7a98c75808c94907d7d93909180758696928a7a858d928f807d8d90 +938c80828f918972777c89826f6e6f6b594c4f4a260d16151513190c121e +0c161d201f1b152e618083a7c7d3e2d8271f130b000d00020705080d1012 +10121313100f12171b170b0600020a0b101511060707090b0f141612140e +080a10050e090b0d0d0b0a0a0b0d0d0d0e0c0c0d0d0a0f0b13262613080e +0b0f00000c3b404b1c1b11070e1218170c110f1a291912181715120f0b08 +0b1b1b0e13221b2d2420212121212221221d21160a03060d262821130904 +04080b2193161f2b2f4b484e190a4a3e292c2f2d3650311741ab2621411b +3b4b3d161ca42e1b312b11494143075d5c304257364247452e1a0e0e2416 +16171717161514191518201e2724181b1c1b160e0b0f15151a1219060e11 +0b0f181c1b1513131916181814110e0f1214787f121c28182a3e231a9a81 +392c4d3341251c1b64d0b60e1f40304b4b1e2d673b012960314736391269 +e3d7f5e7895080383c443020131002002a704f3718181d1f1114180b0f09 +070c060e140a15243037548ab9d9ecad15362f2524231113141719100e3d +87dbc9836a8969394b303a443046159acc335d4e4656334a2182c6424b4c +423c4b54d4eebc3e444f4f4e48233962f929506e6d4d53684a31568fb5d2 +d6d6dfe1dbd7d6d7d7d8d5cfcad3d3d30b0b0c0c0c0c0d0d0c0c0d0d0d0d +0d0d13100a060404060605000d2c4993998a7886929a968383999697867b +8c9c9890808b939895868393969992868895978f7a7f828f887370716b59 +4a4d47230a0e0705060e030c180711181b1b17122c58646286a8b9cfcd27 +2a2525192e2022241b1c1f22222020211e1a171a1f201c1b2b2627271e1c +1f191011110e0a08090b0c0f0903050b0009040608080605050604040405 +06060707050a0911242411020101120202113637472130322c302a2f332c +2f2a333e2e252a2b2c2b2b2928252a2213162119241a1513131313141516 +111d2525221f1625252120212222201d2e9d1f28323755566232235f4d30 +282b313f59381e48b02b26462244564b2529aa322139331b534e50116764 +38485b3c4b51523d2b23233c2f2f30302f2e2d2d34323338333b37282b2f +2f2c26272d31282c273526302f2521232423232732382a2a2b2c2a2a2c2e +2d8c901c202712253f2e34b99e4b2b42273c31353980e2c82b3e583b413e +1938896113284f255250522b82faeaffed8b50823f4656453a35413c3661 +a17c5e393331301b161400050612272b3430100d101b2c5392c6e2f4af17 +3c3933383c2e343536362b255193dcc4795e7c5e334b394958455924a7d3 +30564b46593a542e8fd34c5451453b4b58dbf5c3454c5757534d283e69ff +2f5369674f5a70523351829eb5b4afb3b3ada9a8a9a9a8a59f9aa1a1a10e +0e0e0e0e0e0e0e0d0d0d0d0d0d0d0d0e0e0e0f0e0e0c0a0b071e4364afb4 +a08b96a2aaa69393a9a6a7968b9caca8a0909ba3a8a59693a3a6a9a29698 +a5a79d878a8e9b947f7c7d77635558522e131914100f12060c1a0b171e1f +180c00132f2515355565828d000c17241c33221f20191b1f222220212220 +1c1a1d2224201b241b1f221c1c201b111212110f0f111310130d07090f04 +0d080a0c0c0a09090a0909090a0a0a0b0b090e0c14272714020000190c0c +17322e3c1b353932311d1f252127253041332c3434322f2c2723222f2a19 +1b261a25191312101012131516111a1e1c1a1b1b2d302b26232222202136 +a7282f383a5756612f2060523a37393a445e3e244eb6312c4c28495c4e2a +2fb63e2d443e255d57591b716f43546748545a5a44322828403333343433 +3231323b3a3a3c363a3525282b2d2a26282f342c302a36252f2d24212526 +2523252a32292a2f2e2e2d303232939725292f1c2c433035bca6573d5333 +4231313783ecd433415a3d49451f3c8a621d386233544d563289fff1fff9 +985c8e494f5a483b37453e3864a581633e3a3837242222101e314a6e7985 +794a362b2e3c619fcfe7f7bc264a453e414334393a3b3c322d5aa1f1db91 +74906f41553e4c59465d2bafdb395e544e62445e3798db555b574a415363 +e5ffcb4b4f5a5a57512e4471ff3b5c7067444a6147304d727e7d6d626a77 +726d6a6b6b6a67615c64646423242223232221201f1f1e1f1f20201e1719 +1e1812100d0c12283d6983b6a6876a8b8e928e767d9195927d7f8b939989 +7888908f897e80939194828085899284767581887c716558605357563816 +0d131618161413110f0d0b120813302628647ba3aec3dceaaa2517100b08 +06080a0b0c0e10111211110f1a1a0e08192418070400080b08181e050507 +0a0d101013140f0d0b0a0c0c0c0a0b0b0b0b0b0b0b0b0e0e0e0e0c0c0c0c +1010060d1d38160f0b0c0a05031b3941470c232604101a1606090a1c1b19 +13111620120c151500180e0f1d13151d1f2a1e1e21222527282417140d01 +00081a242a2918060003090b1bb124261e104e434708224b1a23271c3141 +3c32251d3a0d1e1d1f40403e2525be271225251f414440149475051b203a +3841462e30202b321f16281f1b3b182313322a32274e36212d2f2a1d181a +1a1b2f332f2d2a282a2d292c2b2928292a2f3c3b342e2a2824258df85e1e +2938362b2f2f35e0a11b222f3730342922afce4f06101f31394b355bee9c +29232e38403f462f8c5c03150f226d7d4e4c3b35220b1223181f6830270a +15241b190a21230e0907090b070309152c2b345891c7e6f3832839351a29 +191e1816220d1215084a1c0a0c21241b2d4d332d473c3735534d215a4f36 +3b464a1d656a2e4d4a323e433d1d4649254c6843403550c9e1bd30576e68 +34535a3f2e457fb0e0d2e1d4d4dedbd8d6d6d9d9d8d5dddcdb0a0b0c0d0d +0c0d0c0b0b0c0d0d0e0e0e0e0f0b040104080600070a32519299876d9194 +98947c83979b98838591999f8f7e8e96958f848699979a88868b8f988a7c +7b858c807367585e51545332100709090809090a0b0b0b091004102c2124 +59638490a7c3d79f232121202121211f1f1e1d1e1f1d1c1a182121130d1e +271b12242428251a26280d0d0f12120f0d0c0d0a08060507070705060606 +060606060605050505060606060b0b040b1b36140b01030c0d0b1e353944 +113641232c2f2c262d2d3c39352e292e382b2832321d33201d291d1b221e +261614131415171516131d242220222324282b29221f23231d26b8292b26 +1a5e586223385d2528271c384a4437281e3b102122274a4b493330c22b16 +2c2c284b4e4a1e9d7c0c1f243e3f4c533d4235404a3932443b3555323f30 +4f454a3b5e452e3a3e3b31313638302f30383f4445423f312d2c2c323940 +4346403b39373735339aff601a1d281f19283748fcbc2f282b2f2e393736 +c2dc5f1f2c31352a36285cffb93a2723304a4d4a318e5e05170e1e677548 +4c4448422d2f3f394493605a3e434a34280d1b1805040e1c2723180f0e1a +19275493cbe9f27a1f383b283d363f3b39432a2d2e1f5c2912112221192d +513e3c564b453e574d205850393f4d542a727738564f35414640214a4d2a +516d48453a55cee5c134576964375b664b3445759fc7b1bbaaa6afaeaca8 +a8ababa7a4acaba90d0e0e0f0f0e0e0d0c0c0c0d0d0e0e0e090d0f0d0b0e +0e0a05101b496caeb39f80a1a4a8a48c93a7aba89395a1a9af9f8e9ea6a5 +9f9496a9a7aa98969b9fa8988a8791988b7f7364695c5f5c3c1a11141313 +120d0d0b0c0e0e15050b200d072b1d313a5373926700091923282826201e +2020212221201f1d27271913242e22141f1c23221a272a10101215161514 +14140e0c0a090b0b0b090a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0f0f070e +1e39170c0206181a182736363f0d3a48282d261f192326393b3937353a42 +322b302d152c201e291c191e1a23131212131618171610181c19191f282e +353730251e22221f2cc02f31291b5d535d1e355d292e31263e4f473b2d23 +401526262a4c4f4b3634cb362136363154575327a686162a2f4947525942 +4638434c3a33453c3656334238574c4e3c5d40273337352f2e373a353939 +3d41434342413432313133383d414844433f3f3e3d3ca3ff6c282b352f25 +2f3a4cffc53a383a3a333c3737c8e76c262f3338313f3161ffbd4433333b +4b4d55409d6d12241c2d758456584b4c412e374a424c99645b3c434b382f +1627261a2c425e706c593f2f30293965a2d7f0f88b32484933463c443f3d +483034352768392524343227395a423f594e48456055265d554048555d32 +7a7f415d553a464b492c55563055714b483d59d4eeca3f616f632c4c5841 +32436981916e72626a77736f6c6c6f6f6c6971706e23242223232221201f +1f1f1f1f20201e171b1e1812110e0e1629406a88bcab8a6d8e9296907880 +9294907b7e8a9096867b8b92908a7e80929093817f84899081697485846e +6163625e504e472b110f13141414110f0e0b0b091009152e2e3c6d7d99b6 +cadee2721517110c0b0c0c0f110d0e0f0f100f0f0e0c1a1d18140e101800 +00060d0b17190507090d0e0f0f1011100d0b0b0c0d0c0b0b0b0b0b0b0b0b +0b0e0e0e0e0c0c0c0c090c0814233b150b0b090805071b353b4d152c2c07 +1016141c0b0c00062512101405130d0d040e0f1511120f0d1d131c1d1f1f +21262727211b170d010004131b201d110400010b11096f150d0d154c4c3d +0e16291519181b2c5456301f1836181b161c3848422614341421101c3046 +3f382b3d27212815353a4a5238351a120d1b08090a1204000f1602140c17 +041c1c241b1513100908161b1d140e0a0d131a1b1c1814100e10131e1f1c +1a17161210449c1e0312242c2f2a33177623160e1d262a2a2b225e570e18 +1c2330384a344f5816021a372b253e412edfd01c133633434a4b5d4b3527 +272712161b480000070a3a2a0b15200f14110f10110e0a121d27282a3c59 +75868e4f26474e302b1f242b1f322f2e222e945b2e1618181f384b323942 +3b1a19211d334e403c3e4632140b101c4548364f40421a2a2414405c433a +3121130d170a626a5d3c5b5e392a3778a8d3c7d9dadfdadedcdcdbdcdcdc +dbdcdbdb0a0b0c0d0d0c0d0c0b0b0d0d0d0e0e0e0e100b04000407050108 +0d33589aa18c7294989c967e86989a96818490969c8c8191989690848698 +969987858a8f96876f788988706363625c4e4b44250b070907070708090a +0909070b051028283661667e9bb1c8d067141f201f1f1e1d1d1c1c1d1e1e +1e1d1a191523241f1b1515231a1920231b22210a0c0e1011100e0d0f0b08 +060607080706060606060606060605050505060606060407061221391306 +04030a0b0a1d32364b1a3e43232a2d2e403333222746302d302130292a22 +2c2a2c25251f1926181b18151313131412121a2326221c1c1a191e212220 +1d1f201f1072120a0e1d5c61562524311618171e335d5b331e1533171e1b +2442524c301c3717241420374f494134442b252b183841535d45472d2725 +352425262c1e1828331f2d21291329272f2824262623262918171d23282b +2b29231f1d1e20222626282423232423201d4ea31e00040f141b20362489 +3726111b20252b332b685d182b2f2c2e2733234a65290f1e31262b433b23 +d4c5130f34313d424359544d505140242e3c75373b4c486c471813160309 +0c121c232219161819161c33547383873e1540503c3f3a434c3e4f4b4739 +45a86d3e221f1a213a4f3b445046211c201a324f4341454d3b1e151b254c +503b5343421a2a27174561483f362618121b0e62655942686e48363d749a +bda9b4b2b2abb1b0aeadaeaeabaaabaaa90d0e0e0f0f0e0e0d0c0c0d0d0d +0e0e0e090e0f0d0c0e0f0a08111e4a72b5bca385a4a8aca68e96a8aaa691 +94a0a6ac9c91a1a8a6a09496a8a6a997959a9fa6957b8495947c6f6f6c67 +59544d2f1512141110100b0b090c0c0c11060a1a10162f1a23425d7d9239 +00101d25282824201e1f20212121201e1d1a282a25211b1b2717141d211b +24240e1012151615141414110c0a0a0b0c0b0a0a0a0a0a0a0a0a0a0a0a0a +0a0a0a0a0a080b0915243c160a0b0d171b1929393a4c1d4249272b272536 +2b30222e4f3b3b3e2c382c281a22212623211c1521141715141313151617 +15181f201b171c22262b2c29231f1f232216771911121f595c501f24331b +1e1d2539626138241c3a1d231f2744544e321f3e1e2d1d2b4158524a3d4e +362e34213f495a634b4b312a27362526272d1f192c3b2734262910221f27 +211f222424282f2321222426292b2c262421201f2023242a28292a2a2b29 +2658ad2a09131e2226283b2a90423320282a2b2d3530716b24323531332f +3b2b516b2f182a3f2d2b464734e5d6241d423e4b5152675b4f4c4f47323a +457a38374743694b201e210f1a2c3f566361503b2f28222d4668818c8f50 +28525d484641465141554f4e3f4db1794d302f292e46584048534a272128 +21375348454b5544271e212c52533e56484c24342e1c48644b42392a1c18 +24196a695636576141363d6b808c696d6c7773767372717272706f706f6e +23242223232221201f201f1f2020201e181b1f1914110e0e1729406991c2 +b1897391969a8f78839295907b7f8b8f95857d8d94928b7f80928f917d7c +83878d7c6771817e695d5f5d4e413c30190e13151212110f0d0b09090c0a +0d17243552738a99c5d2e8c8381a17130d0d0f1215120b090a0a0a090908 +0f120e0d1108040f140b12171316160b0a0c0f100f0d0d0f0f0e0c0c0d0e +0d0c0b0b0b0b0b0b0b0b0e0e0e0e0c0c0c0c05090715243a12080d070909 +0d1f343547122b29060c0f11000516130e1e121605111b12131016161212 +0d1304200e191c1e1e212525251f1c1a130a08121e251c150e0701020e18 +163c2311102a56573d1e1d161e1a13172f5c632f241222191b141e3c4d43 +28190f232d0c1a293851384d1d0e2a1d193b364443242a150f0c080b0508 +23111d150b180b10202310160e0e0f0f0d0703071713060000000c141412 +0b05000000000708090b0d0a06050046000d1c181616332a2814000d1717 +20241d2d2c2712111614151f3046374521142d0d1f2d211f462934192636 +13406d3c434e4427171f1e152f090c001c4e262f1d06253628291c181919 +15141d2833312b231d181516251e29311d0f11150e0e1e171f231f557f3c +1a1b1d2c3e342d43494719212022363228414653241c1a0e3d463a2c4d3a +3c1b1c1a204043323b454c15171825646547405a572c2c305392d0d5dfe3 +e8d6dbdbdcdbd8d7d8d9dcdbda0a0b0c0d0d0c0d0c0b0c0d0d0e0e0e0e0e +0f0c040004070402050d3261a1a88e78979ca0957e89989b96818591959b +8b83939a989185869895978382898d93826b738380695d5d5b4b3e362a12 +0709090505040607070707070507101b2b48667581acbcd4b9301a1e1e1e +1e1c1b1a1a1d1e1f1f1f1e1d1c2124201f2017131e261f22251e1e1b0e0b +0d1011100e0e0e0d09070708090807060606060606060605050505060606 +0600040513223810060703080c0e2132344719393d1f25272e1f2d3e3832 +4236372531392f302b31313030282a172c141918151212121210101a2227 +242021201e15171c1f1d1a191d15371804062860654b281c0c110f0c1838 +67682f210c1d161c19264655482c1a10242d0f1e303f5a3f5424122d1e1a +3c3b4b4c2f3927242422251f223d2b352e2430222532311c231b1b1e2223 +1f1c1a1c1b1f23272b2c2d26242422201e1d1a1b1a1d2022221e1a125508 +1019110a0b2e292d1d01131411181d1b2d2d2710101c1b16191f31263b24 +1d330f1928211f401e260b19301344703c415255494e5641325032442e6d +a16f663a0d1a24161b14171b201f1b1d2226221a16110f0e0a0c071c2f27 +222a312a27322a32363268914a24211c2c3e37344c534f1c20191d37362d +464d5a2b252317444d4234523e3b181a1a21444838444e511a1a1b286360 +4648686b3f3b3a528abebbbebcbba9aeaeafaeabaaaaababaaa90d0e0e0f +0f0e0e0d0c0d0d0d0e0e0e0e0c0f120d0c0e0f0c0b1120497bbcc3a48ba7 +acb0a58e99a8aba69195a1a5ab9b93a3aaa8a19596a8a5a79392999da390 +777f8f8c75696866564740341a0f12130f0e0d0909060a0a0d0907080a12 +2531222152698f8209021620262825221e1c1d1f2020201f1e1d23262221 +231a1621261e222620211f131012151615131313120d0b0b0c0d0c0b0a0a +0a0a0a0a0a0a0a0a0a0a0a0a0a0a04080816253b130b1111181d20303d3c +4f214246262a272c1d2d403e3e504648343c43332e262828282821241128 +121717161415161617151d24252120262c2e25242523201c1f231b3d200d +0e2d61654b2921141a17131d3d6b6e372a16241d211d2847574b2f1e1529 +351627384963495e2c1b34231f41415353353e2b2726232620233e2c3732 +2b3a2a2a3431181c141419202121201e221e1c1c1e22272a2624211e1b19 +1817191a1c212524221f185c111922191413342e33260e21251f23241e2f +32311e2028231b1d25382c432b263f1b252f23214a2e371c2a3c1f4d7946 +4e5d5c4a4850453a57364329649766613e172832222a2b374b5452453730 +2d292a2a272216141f1b2e3c31282f342e2b3930393c396f9b55302d2a38 +48403a515552212521233b37304a5360332c2a1e4c534536554143232522 +26474b38434d541e2122316b64423b595f39403c4d73907e797782727573 +7473706f6f7071706f232422232322212020201f202020211f191c1f1a15 +13100f17253f6797c8b88677929b9f8d7685929b927c82909295857c8c94 +928b7f81938e8e797981868a76716f76766b60523d3026231a0d0d161411 +11100f0c0b08080e0810171a38607496a4ced2ef92202c16120e0e101318 +140a060606060506050d0d01000c0f0a0d0b06060e1012181c0b0f11120f +0d0b0d0f0f0d0d0e0f0e0d0b0b0b0b0b0b0b0b0e0e0e0e0c0c0c0c090b07 +15223611090c050a131a2a3732400e2221080f0d110f1502150e12000000 +000005071a200b060d091703270f1a1b1d1d202224231d1e1c1710101a25 +281c140d0906040e1a252434261a2d5e533e232e1d292219093b5a612935 +18171d18141d55514423291c1f1e091933476737422b261d122e374b5949 +202a1b13130e14110e0e080b120f1603130424120e1017170c0c15140e11 +0c00000000070d16130c0500000203060607090c0c0a081b3e0810121016 +19341f3b1314141e1c19191d343c271c301c1b1a2132474747270c192629 +21193636384d333030123c5219455755300e01311b1c0000001e2428030d +171b252c17221f1f201e1d242c302f2e27211b181a292e1721251b201c0f +0f170e1a200a188b35101f222d361e2340493e1b20292e301f1b42455a1c +24281d4834222e454a36241f20333f2b2233323b202d232c59663b455249 +223337488bc1cfc5c4d8d8d9dbdddbd7d5d8dadddcdc0a0b0c0d0d0c0d0c +0c0c0d0e0e0e0f0f0f100c040103060400010c2f69aaaf8b7c98a1a5937c +8b98a198828896989b8b82929a989185879994947f7f878c907c73717878 +6b60503b2d231d1406060c0804040506060706060902080d0d285063828e +b6bddb841a2d1f201f1f1d1a191a1e202020201f1e1d2522161421241e1f +191111181a1a1b1d0a0c0e0f0e0e0e0e0d0a0808090a0908060606060606 +060605050505060606060406051320340f07090309121929373444173034 +1f28262e303824373236230f2020172423343929273128321833151a1512 +100f11111010192127262325232115161b211e161217221d24120a23635d +46242107110e0f0a466768292f100d181919255d564521271a1e1d0a1c37 +4b6e3b462f291e132d364e5d5029372a2628262e2b282822232a262d1726 +1634201d1c26271f202a2c211a1a1d1e2022212128292b2a28241f1c1c1c +1d1f21211f1b2c4b1115110b0f1434203b13100d15141213193237211427 +1a191518263b3b3e240c1924261c173437374325242a19495f264c616d5a +4d4565494c334244787c74372115090f1b0a1a1a1b1f201e222726231e18 +120e0e0d12170c2132303c3828272a1f2b33222d9c3f1721202a331d2648 +51431c1e1f28312520474d61232b2c244d3c2a374b4e331e1c1f32402f28 +3c3b402530262c58613a4d625e3846444d86b2b7a69eadaaacaeb0aeaaa8 +aaacacabab0d0e0e0f0f0e0e0d0d0d0d0e0e0e0f0f0d1012100d100f0c0a +0d1f4885c6caa18fa8b1b5a38c9ba8b1a89298a6a8ab9b92a2aaa8a19597 +a9a4a48f8f979ca08a807d8484776c5b46362c271e0e0e15120e0d0d0b08 +0809090f060604000e2c2b2b2b5c6c9c53001d1a23292925201d1a1d1f1f +1f1f1e1e1d2523171522251f211c13131a1c1d2022101315161413131312 +0e0c0c0d0e0d0c0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a080a0816233712 +0c14111720293743404f20393b252d2a32353e2d414046331f2f2c202924 +3133211e27222b1331151c19181715171716171d242724272b3031252324 +25221a1b2029242e1d142b665e48282a131e19170f4a6d7031391b181f1e +1d275f5949262c1f23220f23405678464f38302317323b556658303d2f2a +2b282f2c292923252e2e351e2c1a34201a1a23241d1f2b2e251f1b181617 +1a1e2028272623201d1b1919191b1d222422213351181b17111618362243 +1d1f1d26211a171a333d2b233827241c1d2a3d3f432d162531312218353c +3f4e3230341f4f652c566a7158443a61494e333e3c6c706a332820171c25 +14272e3c47463c302b25252b2d29221716242b1c2d3a353f3b2c2b302632 +392632a348212d2b353e252d4b54462023272c3325234a50672b33352a53 +3f2c364b513c282525374230283b3a4328352d36606538425555354d4c49 +72877b635d7676737375736f6d6f71727171232422232322212020202020 +2021211f1a1d201a1513100f18244268a4d2be837d97a6a98d778c99a294 +7a84949695817a8a92908a7f81938d8b75757f848570736f747062554125 +1f16161410131811121211100d0c09090e08131b193c6c7c99b4d3d2ea4f +1f3116100f0e101316130b05050406050505000c0b02060b0d1013120f11 +120e0d140c111413100d0c0c0f0f0d0d0e0f0e0d0b0b0b0b0b0b0b0b0e0e +0e0e0c0c0c0c0c0f0f1f2a3910090a050f1d26323b35471624211014080e +00101609006777aa9a95b19c5d00202f2715001a285a2a131c1c1e202222 +211d232019110e141b1b181008060609131a1e162c2a1d246e5b3a19342a +272624004e76822331251e241a11177768551c2f1c131c0e0f4158562b19 +1b1d1323342d42584a1e30211310180b1016001b00142000132b2414190c +14100b08070b1118110e040000030b0f1510070102050b0d0a060404060a +0b0c223717141014181323221f321b1e1925150e2639382b26162527221d +28353f316940052e19131b3e4a37432409212d2f39174034231517190008 +202e0a001a33070f1f2f2325332223212326252223282928272526262625 +1c2d152a3a2b2e2128171a23210f0a2d91330d232528301e364d552c1b13 +272a2c211f403e4d101b1a2e442f244539513027211f31321c2946402d1c +1424417f653a4f523f203336317bb1dbded6e4e7dbdde1dfdbd9dcdedcdc +de0a0b0c0d0d0c0d0c0c0c0e0e0e0f0f0f10110d040103060401000f3076 +b5b889829dacaf937d929fa89a808a9a9c9b87809098969085879993917b +7b858a8b767571747060533e2219100f0d06090c05050506070708070709 +00090d08295666849ebbbcd7421b34222121201f1d1a1c1f212120201f1f +1f1524231a1e2322241e1b181a1b151013090b0c0d0d0c0c0d0d0a080809 +0a090806060606060606060505050506060606070a0d1d28370e0709030c +1a23303b374d1f3132252b2329182b3125198798cbbbb7d1ba79163a4c4a +381c333b642b0e120f0e0f111312121d242723201f191516171b1f1e1812 +131c111a14091871633f141e0b08101d055d858921291b121c19161f7f6c +53152517131b0f0f445b5a2e1c1e1d1422322d435b4f253b2f25242d2328 +2e1033182c3312263c3323281b22201b18191f242718191d1d1c19151218 +1b2124221f1917181614121415141326371611090a0d0e292b202c0d0d0b +190e0c253833241a091a1d1b1924343e2f643a012b181219405945441d02 +223b475631534941435b674c516674553f74864a3927230b0d261c1d1c1b +20211f232825201a1617191c1b0e211535524b504346312f38392b2a49a0 +380d201d20281b37525d311c112125302a2848435215201d334734294b3f +522b1f1b1c3033202f4f4933211727417e603a5964563a49473979a5c6c0 +b3bbbcb1b3b4b2aeacaeb0aeaead0d0e0e0f0f0e0e0d0d0d0e0e0e0f0f0f +0e1113100d100f0c0b0c224992d1d2a195adbcbfa38da2afb8aa909aaaac +ab9790a0a8a6a09597a9a3a18b8b959a9b84827d807c6b5e492d231a1715 +0f12160f0f0e0e0c09090a0a0f040804000b2f2c2b3961709c1600292228 +2b2a261f19191e222221212020201626251c2025252522201d1f201b171b +1215171716141412120e0c0c0d0e0d0c0a0a0a0a0a0a0a0a0a0a0a0a0a0a +0a0a0b0e10202b3a110c110e17232e3b4743592839392a312a3021343c31 +2796a7dacac3dcc27d1739484431172f39652f141a181817191a19182127 +28232425262323212123201b1a1b2117262115227666431b2b1b181d2409 +628c932c36261e271f1a22826f581c2d1b152014174b6463372527251927 +352f4862552b3f3227252e23282e1033182e3a1c2d443a282b1e25201b18 +1b20282c1e1b1a18171717171f1f20201f1e1c191813131315191b1b2f41 +1e1811121512272825361e201c25150d2336372c281a2a28221a23303c30 +6b460f3620171a3d564548240a273c475430574c4340505940465e6c4e36 +6a7c433832311b1b2f201f22303a3a3025201a1d24292e2d25231b2f1f3b +544a4f424632323b3b2c294aa33e1529282b33223c566034201425293127 +274a47561b2624394e382c4b3f54322a25233535212d4c4633241c2c4984 +643850584e3954513b6a7d8d807385877777797773717375737373232422 +232322212021212020212121201b1e211b161411101b25486bb4dec78184 +9fb4b6907a97a5aa9577849a9c957e7b8b93908a7e80928c8871727e8282 +6b666e77684e45463d23141317161517101312110e0e0d0a0c0e08161f21 +4271869fc7dae0d825272815110d0d0f1215130e09080709090a0a05100f +08090600020d15100b0f09040b0e141616120d0b0b0f0e0c0c0d0e0d0c0b +0b0b0b0b0b0b0b0e0e0e0e0c0c0c0c0a10162b353e10080c0612232b353b +374b1d29241412000a21112c1d31e5523545353e52df320e23000b141a07 +24141f1f201f1f211e1c191e1c171110161a19140e0300040f1a17161622 +2b2834887b3314302e212c2a0c68a1b61f1a231f1c251420918b6d232631 +10202b184a6c73201b1a08192c2439536c51192b20171a121015110c8844 +001e4b00084a5c001415080b1c1c0c0a1816140d090a0f181a1610050104 +0b191a130b0504070b0f1202181b1d22241c132428191d1814292a25172f +2d25242a0a2327251a21293d2280722244212d2a301f412e0e2a35273d1e +275049332413001614070f06404941376e21111f231914232226292a2522 +242b27221e1c1913100c1c0f1e200e1716180e0d13120b030a6120102e33 +2e2e23435757201c193336232426443f3a0d142a48442c265035431b1f27 +2d392e1a34334024211545526d523a5655341f2225257492c4d9d5d4d3db +dbdedddad9dadbdbdcdf0a0b0c0d0d0c0d0c0d0d0e0e0f0f0f1011120e05 +000205030401133586c1c18789a5babc96809dabb09b7d8aa0a29b848191 +999690848698928e77788488886e687077684c43433a1d0e0c100c0b0b04 +06070708080908070700080e0c29586c86b0c2cac719252f252526242220 +1e1e2021201f1e1e1f1f1a25221b1c191314181e19161a12090a080a0c0c +0a0a0b0c0d0907070809080706060606060606060505050506060606050b +1429333c0e0609030d1d25303b3b52263432262a1b2233223e3149ff6f55 +65575e70fc4d2a411c2e31301529111511100d0f11131313192025252423 +1e19181b1d1e212119121a171619182a8d863a0f180d021829177bb2bf1d +12171314241928968c68181b2b0e1e2a194a6f76231e1a09182c2237526c +541e342e262c26252a2924a05c0d2f590916586a0f2524171a2b2b1b1926 +1e1f2323201a131010151d21221f19191d1a14100f10121200121416181b +111133391a130300171e2019312f201a1c0012191e1a273446267d6a1c41 +212e2a36345630051f3033533b41625b4c4b4f45625d454c428190816785 +1800020d1719201d1c21222024272c24180f0d0c0c090216132d3c303b38 +362620282c2927286c210b242822241e445c5f2520192e34292f2f4d443f +10172d4b47302a563b4416152028372f1e3a3c492a271946516c4d3a6066 +4d3b3d382e7488b0bdb1aba8b1b1b1b0adacacadadaeae0d0e0e0f0f0e0e +0d0e0e0e0e0f0f0f100f1214110d100f0c0e0d274da2dddd9f9cb5cacca6 +90adbbc0ab8d9ab0b2ab9491a1a9a6a09496a8a29e87889498987d757c83 +74574e4e45271814181514150e100f0f0c0a0a0b0b0e020706000b30312a +4a687f8f001027252c2d2c2620191820232221212122221d28261f201d17 +181c231e1a1e170f121215171715131311120d0b0b0c0d0c0b0a0a0a0a0a +0a0a0a0a0a0a0a0a0a0a0a090f172c363f110b100a1321293643445c2f3a +352a2e222c3d2c4a3c55ff7d627263697aff542e4318282d2e182d1a1e1e +1b19191b1918171d2125242529272323211e1d1f211f181d1b2025233391 +884016261e12242f197fb9c82a2125211f2c1d2b9a906e20212d0f212f1e +52787f2c27220e1d2e233a58745b243931292e27262b2924a05c10376412 +1f6173162c2b1e1f302e1e1e29212121201e1c1a191a1b1d1e2020211f1c +1711101214191a0a1c1c1d202017122c331e1e1611272824162c2c24232b +0b2226251a232c412584752a4c293228322d4f2f0a253633513940665f50 +4a473956524047407d8c80698d290b14191a1517192530312619161a1b20 +22242014100d221c323d2f39373628242b2d2925266e25112c302c2d2549 +606128211b3235272b2e4c4743171e34504c332b5639461d1e282e3a311d +3839462a271c4b59725138575c493e48463368647b7e7377757775767572 +717172727374232422232322212021212021212122201b1f211b16141010 +1c254b6ebee5ca7d86a4bfc0917b9eafb69a7889a4a59a7e809096938a7d +7e908b866e707c817f675d6a705c465375863018131a181516151212100e +0e0c0a0c0d0b162229406b8aa7d0d7e8b21a2c23140e0b0b0c0e11121312 +100f0f0f1011181410141409102b141c0c00000505120f141817140f0b0b +0e0d0b0b0c0d0c0b0b0b0b0b0b0b0b0b0e0e0e0e0c0c0c0c0a0d1126313c +130f10091322262e37383d1a2b28181503181c16121920f0807d65755f62 +e945001229160b102b4f331a262622211e1a17121413100d10171b181612 +030002171f120e141e252b407675261d272d242e1914618eb61d19201815 +241a39868f612b22280a162c27668ba0202e250e1e27233f7d956b212d22 +1920171d190911b18e004fbf04004d940019140f0907070b10170e0b0403 +080f191b1d130601050f2022180d09080a0f15171514110a161f21342e26 +20071f152e26271c2f27251b2717262c2d232c3651292b170b5a4a39274c +4c3a21182436381e28444b4a393a33230d21292534dcb9aed6ed3a2a352b +140d2427272a2a24212322212325242422221d1b151a1104111d181c170f +0f180e002213172e36332e25425744120c1b2b3320252c52522e15182131 +31192454523a121727333a2c214444451a191d585a523c3b56512a26191f +5fbeb3becfd5dde6d9d8d6d6d9d8d7d5d9dadd0a0b0c0d0d0c0d0c0d0d0e +0f0f0f101011130e05000204030501163890c8c6838baac5c69781a4b5bc +a07e8faaaba08486969c9990838496918c74768287856a5f6a705c445172 +832a1009100c090a0906070608080808070600060e10254d6c8db7bfd2a1 +102d2e2729292826252221211f1d1c1c1c1d1e25211b1f1f141b361f2a1a +080e100c12090a0a0b0a090a0a0c08060607080706060606060606060605 +0505050606060605080f242f3a110d0e050b181e28363b44233534282a1f +2f241a1a2631ff989983957f82ff61172f4934231f324e280a1411101112 +131212151d25282a2c2923252a2722273024131e221d1d233f8487331d15 +120c22232979a1be1d0e120a0b211d3e8b8e5a1b132208142b28668ea323 +31250f1d251f3d7a946b24342d27322b322e1e26c6a3135ecc10065ba504 +2b25201a1616181e2218191d1c18120c0911161e2423211a1b2220181412 +1416160f0d0a030f191d39484026000600191a2722392e25141906141e28 +29404e65352a0f05584f3f2953614918030921362838524f4d404b595440 +4d483e4cf9dbcce6ea1e07191e232129211d1f2121242927231d1816181d +1d13151a292b24313b2d2e251e233231122a0e0e212723231e415c4c1a12 +1c29332630355b573216192232321d2858583c0b0d202e382d254a4d4e20 +1f21595951373b6165444335356ac0abadb2b3b3baaeaeacacacabaaa8ab +acac0d0e0e0f0f0e0e0d0e0e0e0f0f0f1010101514110f100e0c0f0d2a50 +ace4e19b9ebad5d6a791b4c5ccb08e9fbabbb09496a6aca9a09394a6a19c +8486929795796c767a664f5c7b8c341b121916131413100f0e0c0a090b0b +0d04060500082730305265896b001b282b30312c251f181a222523222222 +23242b272125251a213c232d1d0b1114121a1315171715131210110c0a0a +0b0c0b0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a090c1227323d14101106 +09161c283b424c283734282b23372f25252f3bffa4a48ea08a8dff6c2235 +483223223a56361724201e1c1c1a1814171c2023272d2c272a2a231a202c +27171d2325282e478789392523231c2c252a7da8c9291e2119162a24428f +9361251a240917302d6e97ac2c3a2d142228203e819c732b3a312a342c33 +2f1f27c7a41765d51c1166af0e352f2a221d1b1e21261a19191818171615 +1d1d1e2021232423211a151214181b1c1915120a161d1e353d352606190f +2a24291e3127251b2616242b2e2735415c31301a1363533f264c5842190a +122a3b29385558564a525a513b4c4d4556ffe4d6f3fb351d282720151513 +1c25261c110f101621292d2c24211c1f202c2a212e392e30282124312d0e +2c1213282e2d2b25465f4e1c121e2a33242c345a5a351b1e273737202959 +563b121628343b2f2446484b201f245d5f573b3b595c4147434370b58779 +767681897772707071706f6d707172232222232322212021212021212222 +201c1e201a1413100f161f4c6ebde3c97885a4c3c49079a1b4c0a07c8ead +aea182859499958b7c7c8d8b856c6e7c807d625d6162504970a9c637180c +151611161b1010100f0d0b0b0c110e162027385c80a8c9c8df87192b2215 +0f0c0b0b0c0e0f111210101112141511131f28190736877f7b4d16080200 +0a0f141717140f0c0c0f0d0b0a0c0c0c0a0b0b0b0b0b0b0b0b0c0c0c0c0c +0c0c0c0d0a09182534171b150b111c1d2433372d152f2f232219343a4d0a +33019f6176727d79737112150b060e1f0e1126292d2b2824201c18140f14 +120d0a090c0d08201f0e000a1f220b020a15131c34434a1c262026292b01 +14424f881a2924141b15174a6a753a241d0e211f111a78846e242619191e +25322a446a50122c271e261f1213150a85ca83abf59a94a8ad1213848863 +292a628683110f0a080c141f22160f0401030b1a1a120a0505070d11141c +1315101d150e2b312a111f12280c1a101632343c15141b1a21221928314d +1a2216171708232148513e312d1919352a1c5e666a412d29283518263654 +f44f1fd2c111342410171428292728282522241f2226241e191516231215 +211c161a22302a2729170d2538171f1f1c20282e2b5b744b1e051d1b242a +2e3464672816171e1f37283962712d1e161c2022202a5a5d4e1d17193d44 +3d344159542934212e039db3c5d6dddadfdfdad8d8dcdddad8d7dadc0a0c +0c0d0d0c0d0c0d0d0e0f0f10101012140f06020304040500153795ccc77e +8caac9ca967fa7bac6a68294b3b4a7888b9a9f9b91828293918b72748286 +8368616565534c70a7c53412050e0c070d1207070706070706060703060d +112041668fb1b1cb79132e2f2a2b2a2a2926242323211f1e1c1d1d1e181a +242d1e0e3d8e87855721120c04090a0a0b0b0a0709090a08060507070705 +060606060606060605050505050605060805041620321216110509121520 +323a341f37392f322e4741500e3c0eb0758e8e9b979391323529252c341c +14201d1d1916141312110f0e181e24252626211a333931232a382c13141a +1a121b3751592729141419250c28555e8e1a21190913141a4f6d74331812 +081c1d0f1978846e24261a181c232e28436a531a36322c362f2425281f9d +e39abbffa6a1b8bd2225969a743a397195901c1d1e1e1c1915150f12181b +1c1914151c1a130f0f101211170c0e0917100a2f463f171500110010101c +3b3a3c100a0d0c1720223c496126231014170d28254e5e47261800042b29 +216160643f3642475534374260ff622fd5b500130c0726262c231d1e1f20 +252924242019130e10111c0f1c3338363940453b343626223f4e1b191611 +131d24265c785023091e192430373d696b2916161d1e36293d66772f190c +151b20202b5e615221181a3c433a3242626541503b4412a2afb7bdbaafb0 +b2b0aeaeafb0adaaa9a9ab0d0e0e0f0f0e0e0d0e0e0e0f0f101010101315 +0f0e100e0c0b0a284eafe6df949ebad9daa68fb7cad6b692a4c3c4b7989b +aaafaba19292a39f998082909291746c6e6e5c557ab2cd3d1c0d15140f12 +170c0c0c0909080a0a0f070607030823353f59658c4a001d282b2f322f2b +25212125262421202122231e202a33241645948a875923140e080f111317 +1715121210100c0a090b0b0b090a0a0a0a0a0a0a0a0c0c0c0c0c0a0c0a0c +0908192435161a12050710131f373f3a2139382d312f4b4759174517ba80 +9899a5a29e9c3d4031272a351f1b2a292827221f1d1b181513191c1e2022 +25221e373a2d1f25352d15141a201a233e545c2d302022262f0e295b659a +26302917201c2155727a3b221a0c2022141f808c762c2e1f1d1f262f2949 +725a1d38342d362f26272c22a1e8a2c8ffb6b1c7cc2f31a2a47c4240789c +96201e1d1c1c1d1e1f17171718191c1e1c1b171310111517181e1415101b +140b2e3d38171e0c230819121836363e16151a1920251f333c5824281a1f +21112b244a57422a1f0a0d332e25666a704a3d464954373f4e6eff713fe8 +cb0c281a0c211a1b151b1f201a141310192427241e16152418223739353b +424a423a3c2b233e4c1e1d1b171a252c2c607b53260c221e262e343c6c6e +2e1e1e25243c2d4067752e1f151c2125222d5f6253241d1f444b4337445d +5f41544a52199b928a85807a7a797472727475726f6e6f71212020202020 +20201f2022232322201c161f191012110e0e0327486ec3ced37984b1c0d1 +8774afbec4a6709aaab8b3788ea0a89986818285897665697b81705b5b53 +52405996b4c0201106080e101216120f0d0f100e0d0e1311151e222d4766 +97bad8cc3d2322271b19160f0d0f0f0b021309120e0519131b19151c1c13 +3c8901163521090c0c0e13131212111011110e0e0d0c0c0b0a0a09090909 +0a0b0c0c0a0a0a0a0a0a0a0a0d0b0f171e22292f1e1515171825302e2721 +2d46444150c2dad11e1831e53d23393532242d000d0f0c11181c1f232b30 +1d1d1d1e1e1d1c18151b150804031734c5789e7e030ac0170e141c171327 +404522282517141a1a10312f2e2124261318161828413f281b1e1c18181b +123a393e1d25231716232b289e3b181618353c2d87854a1e05245d00121b +2f1b1f20020e113e9ec0acad4410090d040a1c04110d0e16111100140b12 +206345230c103403130f0f1311101a271e1e1d16131413100b1d2b2a2624 +1d11091c13163e4429222b1c0e131c1c2f534036342e1e1b2427265a5a56 +59341e293e472b29119bdbd1e6cd281d291d3614292622201e2021212626 +2622201d1914181808100d11000608000f02071304110a1a1b0a16201b31 +585f373d03131e15201d49544f2e29111d1c241c325f512f26171c22201e +315c614a2b192030342b3554615a73bfcae8d0e8aca0d7d6dae6e5e0dddb +dee0e1e4dbdad80c0c0c0c0c0c0c0c0b0c0e0f0f0e0c0d0d170f04050603 +0800120d33a8c7d6808bb9c8d98f7cb7c6ccae78a2b2c0bb7e91a3ab9c89 +84888b8f7d6e72848a7964645e5b49609db8c3201105060a0c0e130d0604 +060705030408060910131c375583a6c7bf352229342d312f2a292b2a2620 +3023282113231c211d19201f18418e02163522080b0b0c0e0c0b0b0a0b0c +0c09090807070605050404040405060707050505050505050508060a1217 +1d2228180f0f12162433332f29354f4f4c5dcee4db29233ef34d364f4c4e +414f1532343334322c242122251012141515131213192728211e1f2f49d8 +89b1911519ce22181c1f18142a454a252920100d171b1538333021222310 +1616182b413f27181b191515180f39383d1c24221514212928a344232428 +454b39918f572f1c407f1a26293d2a2e30121e224fb1d3bebf5621121412 +192e121912121a191b0a1c10172a6c4c2a11133402100a080c0a06112222 +241c11090a0c0b091d2c2a2422180c071b141c474f32272c1b0d131f1f30 +523f342d2414111d221f535050593f3343535c404029b5f2e3eecb1a0c19 +12351526211917181a1d1e2222201b1916130f171b15252c341327251620 +101422131c0a141505111e1a325c63383c000d161024264f584f2d260e1a +19221c366357332410171d1b1b2e595e4728151c2c30273458666482d2e0 +fee3f4af97c1b1aab3b7b4b1afb0b2b3b3aaa8a60b0b0b0b0b0b0b0b0a0b +0d0e0e0d0b0a081410080e0e0b0c00171f49b9d7e9939bc6d5e69c89c4d3 +d9bb85afbfcdc88ea4b6beaf9a9596999b8777798b8f80696b6462506aa7 +c3cc2a190a090b0b0b0e0a0705090a0a0b0c0e0a0b0f0c122839506b9192 +1106192b2d3536333436352d222e22261f13221b211e1c23241e47920618 +37240d10101114131313121213130f0d0c0b0b0a090908080808090a0b0d +0c0c0c0c0c0b0c0b0e0c10181e23292f1c1313161b293839322c374c4b46 +56cae5dd2d2946fe5a445d5a5c4f5b213b3a3230312c272627291716171a +1a1b1a191c27261e1d20334ede90b797191ed1261a1f241d192f494e2c2e +2718151e201b403c3c2b2d2e1b2120223449472f2124221e1e2118414043 +2229271817242a2aa74925242542463790915d36244b8b293e43573f4340 +212b2c57b8dac8c9602b1b1c151c2e131b15151d1b1c0b1f141b2c715230 +171a3c0a17110f13110e162623242117121314110e1f2e2c29271f130c20 +161c444b312a3121151b262435574439342c1c192529275b595a61433442 +545f454835c2fff7ffe1311e24163310211e1c1a1a1a1a191f212422211e +17131d221b2a2f38192e2d212a191c271620121e1f0c18231f365f663d42 +0917211725234f5b5735311925242d243964553429181e24222235626752 +33232a3b3f353c5b696687d9edffeaf29c76927a6c727977747274767778 +6f6d6b2020202020202020202022222222201d171d191114141110171245 +6cbdd6cc7486b1c3d18777b0c0cba773a0b4c3b97e96a9b19d837b7e858a +7a6b6b787a6f5e5e4b554584adc9830d07080f16131010130d0d0f100d0e +10100e172429282f3e62788d8931272a291d1915100f110f08090b040a0e +0d161112171615100b17320b0f0d1d0918031011100f0f0e0e0e0f0d0d0c +0c0c0b0b0b0a0a0909090a0b0b080808080a0a0a0a0f0e131b22262b3225 +1c1f23212734392721374640372071719f1e2e07f4cbbebac1d3c2ba4b12 +03080d161a1b1b1f211a191a1a1d1c1d18131c1d150f060a1ca5000057a3 +6aaf0c10161e1914283b3b2a312c1c171e1f184e47432f2e2915191a1d2f +413f2c29331f1214172045433d262e2c1e1c262b259c5132272b47504cbf +cbc5250952de6c6e74606071561210709c53070023587c29211b04070415 +0b040c160e100f0a0a67603b53400f3f560f0e1117171117221e1c1a1712 +10101110222f2b24211c120a191018444b32272a1e0d0b141b30524a3a30 +2b1d161e24245c583e34334a62c4c6762d187d7924201701191827414d3a +3128201e1e1f20222423201f1f1c16111619210f09002b816e71320a315c +0b171f22151818193e5e5d426438241a1f1824515f4d38372614151d2247 +66441f231c181f1e2040646349311b0b193137255b6239002b0c0014185a +94c1dfefdee2dfdddcdedededddad8d70c0c0c0c0c0c0c0c0c0c0e0e0e0e +0c0e0e1811060909060c1902082da6d6cf7b8db9cbd98f7fb8c8d3af7ba8 +bccbc18499abb4a0867e848b908172747f8477686756604e8bb4cd850d07 +070d120f0d0d0e0804060704030505030b181e1d24314f657d7e2b293034 +2d2e2c282a2d2b262b2e2425221d211716191716130e1c35090b09190413 +000b0c0b0a0a0909090a0808070707060606050504040405060605050505 +050505050a090c141b1f242b1e151a202027373e2c293f504b422c7e80af +2c3d14ffdbd0cbd7eddfdc70382a3031302a201916171113141614131011 +182a2f2e29222633b6030a5fad77be1a1519211c17293c3c29302b1b141b +1c154d47412f2c291319181d2d413d2c27311c0f11141d42403a242c2a1c +1a242925a15b3e363b585f58c8d3ce331c6eff8c83836e6e80651f2081ad +661905376e8c312524121918251a0d10170f1414141570673f5743123e55 +0c090a100d070c18191a1815100e0e0f0e202d29221f1a120e1d141c454f +33282b1f0e0c141a2f4f43302b281a13191a18504e39373e5e78d6d88e48 +369a93392b19000e0c1c3743312b221a1818191a1c1e1d1a19191611121d +2838302e21509f898440173c671215191f1417191d42625e4161301c0d17 +192a55604c3531200e0f1a21486a4a232219151c1b1d3d6160452d170715 +2d35255e6740063c200a2b2a6290aebbbfacb5b3b1b0b0b0adaca8a6a30b +0b0b0b0b0b0b0b0b0b0d0d0d0d0b0b07120f0a0f110c0d16031a42b6e2e2 +8d9dc6d8e69c8cc5d5e0bc88b5c9d8ce94acc0c7b3978f92979c8b7a7985 +867a6a6c5a665595bed891170f0c0e110c06060a0505070c090b0d0b070f +181c191e212f3d5b601114222c2c313232353939302c2a1f20201a1d1515 +1819181813223a0c0c0a1a0817020f12111010101010100c0c0b0b0b0a0a +0a0909080808090a0c0c0c0e0c0c0c0c0c100f131b22262b32251c212728 +2f3e44302c414f453a22757daf2f421dffeadedbe5fcede879412f2f2d2f +29231a191812131415191819181b2a2f2b2a232a39be0c146ab67fc31d19 +1e26211c2e41412f3631211b22231c554f4c3737311e2123253849483432 +3c271a1c1f264b474129312d1f1d272a27a55d3e3338525854c7d5d53c2a +7cffa1a0a28b8897782f2d8bb56d2310427b993c302b151b1724170c1119 +1117171619776f48604a19465d13101117150f14201f1f1d1a1513131413 +25322e27241f140f1e151d4750372c302413111c2237564b39322f211a20 +23225a57403c405d76d6da924f40a8a44e4130101e16203642342f261e1c +1c1d1e2022211e1d1d1a1517232d3e35342a59aa94924b20426b1820252a +1c1d1d2045656247683b291e221b28586554403f2e1c1b25294d6b4a2427 +201c232226466c6b533b2616243c422d636d480f462b15312a577786877f +6774767473747472716d6b692121212121212121202121222221211d1920 +1b1215130e0f150b5b7fc5dbc27a89b2c7d1877cb1c4d2a675a5becfbd82 +98acb29b7e757d87897b6e6c76756e63525b3e67afb3ca2d05060d151915 +1211140e0b0d100d0d0f0f0c13222a251e203037403e29282c241c1b1913 +1112100a180c0e0e18221d20311a0e110f0f0e0c0517140a081604110f0f +0e0e0e0d0d0d0b0b0b0b0c0c0c0c0b0b0a0909090a0a0a0a0a0a0b0b0b0b +1110131b23262b2e3023283027222e38261c3d330d0406818c723d18038a +02010e0000000b00021d080e171a18141413191818181b1a1c17151e2019 +150b050e5b3910002c6687150d1722231e2b38342d38362721282b253633 +372e3535272f2024333d3a2e3443291d2a222f43453c323a3628242d3027 +482d241d2739312f5e8b73061526e55b6a7a5c6d7b5e0d1e5cb29595ac93 +78823503150a0f151101191e2614200706005348050a3e677b390b0c131d +1c15161c1c17181d1b14141a1d2c352e2421201b101c1a274f5438272b26 +17131e2b3c554a352f352a1f252e3b61553023344838a7a07b2e2c91e9e7 +f49217261e2b4f3540362b221e1d1f1f1d20201e1f221f18151b2d3c2e2a +2e66cb04339c65448b0d1819211d1b161d4b5b481f3b251411301e37595f +362d2b2128231e26566a40282c2e171e1e1f4a5c5036373418182d2c366b +62411da9cfc7b6c3d79eafdde1dae1dedfdfdfdedcd9dfdcdb0d0d0d0d0d +0d0d0d0c0d0d0e0e0d0d0e101911070806030915001e40add9c37f90bacf +d98f84b9ccdaae7dadc6d7c5899db1b7a0847b838d8d7f72737b7c736857 +60426bb1b3c82b0203080f100d08090f09050707040406040107161f1a13 +121e2330312229322f2c2f2e2c2d2f2d293a2f2d292c322826351c0f1212 +12130f03110e040210000b09090707070606060606060607070707060605 +040404050505050505040404040a090d151a1d22282a1e232b24212d382b +2447421e181a949e844c29119a12121f07110d2b1527443032312a1d120b +091012121412110f101a2e3433312921276d471a0336739623121823241f +2a37332b3634251c2326223332342d3234242e1d23303c372d3140261724 +1c293d40372d3531231f282c2549302c29364a403b67937c12263dff777d +896b7d896d1d2e6cc4a7a7c0a78b923d0a20192129210f22222715240f11 +0a5c4f090e416a7a3808070c13110a091116121318160f0f15182730291f +1c1b19111e1c294f5538272a2516121d283950402a2830281d202430564b +2e28425e51b9b2934948aefff9fc92121b121f432b3730251c1817191917 +1a1a18191c191316223c544f4f548ceb1f46aa724f961416131e1c1a1721 +4f5c491e381d0c05281f3b5d60352a2519201d1b25576e442c2d2d161d1d +1e495b4f34353216162b2c376e67482abae2dfced8e29d9fbdb4aab5b5b3 +b3b1b0aba8adaaa70c0c0c0c0c0c0c0c0b0c0c0d0d0c0c0b0913100b0f0f +090b13003055bde6d792a0c7dce69c91c6d9e7bb8abad3e4d299b0c5cab3 +948b9199998a7b798182776c5d664b74bdbfd5380d0c0f13130b06060b06 +05070c09090b0a050b161d160d07080a171e121b2829292e31303133312b +392b28242a2f2424341b11141717191404110e040412000d0d0d0e0e0e0d +0d0d0a0a0a0a0b0b0b0b0a0a0908080809090b0b0c0b0b0b0b0b11101119 +1f22272c2e2229312b2735403127483f180f118e9e8851301ca721223118 +211b361f30492f2e302920130e0a11121213171618171d2d33303229252c +7752240e3f7b9b26161c2728232f3c38303b392a22292c293a383d333b3a +2d342629394240333a49312330263347473e333b3527232c2d284d352e27 +33443b376696851e364fff8f9ba88897a3822d3b79ceb1b1cbb2999f4a14 +261c2328200f212329172712150e63571217487182400f0e131b19121219 +1a16171c1a1313191c2b342d23201f1c131d1b2851573a292f2a1b17232f +405749322f362d22262c385e53332b425b4db9b4975053bcffffffaa262b +1c23432a3a3429201c1b1d1d1b1e1e1c1d201d171b28415854555d95f62a +54b57a559a1a211f2924201b24505e4b233f28171333213a60653d333126 +2d29262d5c6f452b2f321b2222244f63573f403f232338363c736d5032c4 +f0ebd8dbda897d8e796a767776767574706d726f6d212121212121212121 +212121212121201c20181114100b0f061a516ac6dbc5868db3cbcf8680b2 +c8d5a175a7c3d4ba8392a4a8937a757f888374696c7575695e495a4d97be +b878060e0f131413121518170f0c0d0f0d0d0f120c0d171f1e1a1c1e2225 +17241f251f1f23241d161213100f01120c12221d3083370e131006060a04 +4663050c08120b0e0e0e0e0e0d0c0c09090a0b0c0d0d0e0c0c0b0a090909 +090a0a0b0b0b0b0b0b0f0d0f161c1c1f2228161b2a241a232c34224c3e07 +0014b0d8ce2a230085f2d6c7e6ddd4d958050b0e13191a17131312191717 +1619191b17181d1b12140f0b12091a0b1c0d0e010a0d152227263039332a +353526212b34344440443c3c3520272b2e353b3731353f2924412f343642 +41363b35262430352f2f32301f272708008692aa33220f56294e3e282f32 +4a0213002619000900004b9515150c0e13080f0313100718080906052c19 +0a05153b280b0c161d1d18191c1d14151f1d1315202531362d221f21230f +1f2738545136232e2d242336454a52402d313e362733414d5c4e34232c2e +007f7d6b26003ac42c3e0a05160f262139342c241f1e1f20201a1e1e1c1f +2522190f0a15170f0c061fc3460114588f901c14101c1d1f272e4f544b26 +312c241832304c5f5e2e393a33272a282e595c2f29363c17242c2f5c5a43 +2233472f28332635756b3a023727061d1d2a52bfddcbe3e1dfe0e0e1e0df +dde1dedd0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0e11170e05050000060607 +1229abd7c38993bbd3d78e88bad0dda97dafcbdcc28a99a9ad99807b858e +87786d707a786c61495a4d95bab47200060709090706090c0f0a06070604 +04060701010b14130f0d0a0c130a1d1c27282e363a36302f303032243127 +2632283687390f17130b0d0d02405d0006020c0508080807070605050404 +05060708080907070605040404040505040404040404080609101313161c +231116251f17202b372957511e1732ceede13d350d95ffe7dafbf4eef779 +27303637332a1c110a081011111210100e102030312f322e282b1d281524 +171b0e1512162328252f3832283333241c262f2f3f3e413a39331d25282c +3239342f323c231e3b292e313d3c313630211f2b312a2a313429363a190f +929db33f2f216c3e5f4d373f425b122507382b0e1d130f5b9d1b1f1b2027 +1b1d0c1711081b1014110e331d0e08153a2706070c13120d0c111710101b +180f101c202d31291d1b1c1f0f1f2738525134232c2c22213342474d3522 +273931252c3a43524733283c4418918f83411556de3e460b000b021a152f +2b261e1918191a1a14181816191f1c141012242f30332f45e3621522659a +9b24130d191c20283253554b242f251c0e2a304e605d2b33322b1f22222b +585d312b373d18252d305d5b442333472f28332636766e410f483d203834 +3954b1c1a3b6b8b6b4b4b3b2aeacafaca90c0c0c0c0c0c0c0c0c0c0c0c0c +0c0c0c0b120d090c0a05090409253fbce5d89ca3c8e0e49b95c7ddeab68a +bcd8e9cf9aabbcc0a99089939a92837679807f7166516257a0c8c2800e13 +1212110b08090c0d0706090b09090b0d05030b120f0b0600000701151722 +252b3438332d2b2c2b2e202c22242f243486381118180f131203405d0008 +040e070c0c0c0e0e0d0c0c0808090a0b0c0c0d0b0b0a09080808080b0b0b +0b0b0b0b0b0f0d0d1418181b2027151c2b261e29333e2f594f180e28c6ee +e7443f19a4fff9ebfffffdff823036353332291f120d0911111111151517 +17222e2f2d32302c3026331f2f20231419161a272c2a343d372d38382922 +2c35354543483f4038242a2f31393e3b3439432d28453338384443373c34 +25232f322e303637283134130c92a1bc4d403583597d6c56595b6f223315 +443718281e1d68aa2728202226191d0b18130c20131815153b26170f1d42 +2f0d0e141b1a1515191b11141c1c10141d242e352a211c20200f1f273855 +533725313127263a494e543d2a2f3f372a33414b5a4e382b3b4114919187 +482064ef525d20121b0c1e152e2e2a221d1c1d1e1e181c1c1a1d23201815 +1529333538354eee6d202d6d9e9f271b162222242a3354574d29342d2719 +35324d6262323d3f382c2d2c325d5f302a393f1a273134616049283b4f37 +303d2e3b7a734917524a2d433a364694996f7b7a7877777776737174716f +212121212121212121212121212121201d1e161215121117607f6058cede +c4758eb2cfcd8485b3cbd89e77a9c3d2b3828b97978575747d828370646a +74715f51484e94bec7ac16101417191615171c1e19100c0d0d0b0d10120f +0e111517191e1c262e1523131e20222d332718111418130e251c1723284a +8030050e0e08090c136e941e0e0713081011111211100f0c0808090a0b0c +0d0e0c0c0b0a090909090b0b0d0d0d0d0d0d100e0f141514141613010419 +1d1a1f221603282c07000042408c2b1016ed490005c57e000b08081f1315 +1817141316181917171518191b16191d180f14120f12100f1504120c1617 +11152026262e352e27302c1b162431333e3c423a36270c13323336393936 +34341a17392c31313d3e2f31281a1b2c36333a42391e292d0c0696c9eb68 +100cbfcda1a5e7dfa0ae3c193c87a39ba0979cae9b0e17100b1107151231 +120c0d0c06081011000d0f000b020d0e14191c1b1e2020141219170f121f +252c2f271c191d200f1b2733403a2c1f312c2020394945403629313c2e1e +2f4440443d321a1c2b0dabbade3f1c0d66d2d0ac17212b1b4230211d1b1b +1c1d1d1c1a1f1f1b20282519171825140d110500052319000320030d1610 +1c1c263e434b442f14212d2d284c4f5b5a4f20313123182f434e6757292c +343512273e486c5d441f2b3b2221393a526e480e124684ad6ba4a9a5aec9 +dcd0e0dfdbdadddfe1e2dcdad90d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0e10 +130a030602020c5f6c2117b3dac27894b8d5d38a8bb9d1dea47dafc9d8b9 +89929e9e8c7c7c83888774676d77715f50454b8eb8bfa40b05080b0c0906 +080d12100a060707050407070404070a0c0e1008101b071a0f1f292e3d48 +40332f3238332e44372b33335084340912110d100f0f668c1605000a0007 +080809080706060303040506070809070706050404040405050404040404 +040705060b0c0b0b10110000141613171f160a36422420156a5ca33f2429 +fe5a0317da9506272626423a39322719110d0e101111110f100e11233131 +2d34342e2d24201f0c1c19232214141f25242c332c222b27160f1d2a2e39 +373d353122070e2d2e313434312f2f120f31252a2a3637282a2214152630 +2d2f3b38273a42231da8d8f8741d1bd0deb0b4f6efb0c04d2c4f9bb5adb2 +a9aebea31624221f251a231b351310121614161715021112000a0108090a +0f11101115170e0c1311090c191f2629211613171c0b1a26323c38281d2c +2a1b1b34444039291c2737291c283d363a3833222f4428bfccf65a382980 +e4d8ad0f141b0c33241817151516171716141919151a221f14161d342c2f +382e25273f2d10102b0c15150d191b273f444d442f121f26261e454d5b5a +4d1d2c291b10273d4b6557292e3639162b424c706148232e3e25243c3b51 +6d4b151f589bc988bfbdaca8b5bba8b8b6b2b1b1b3b3b1aaa8a50c0c0c0c +0c0c0c0c0c0c0c0c0c0c0c0c0a0f0a080d0c09105d6e342dc4e8d78ba4c6 +e3e19899c7dfecb28bbdd7e6c799a4b0b09c8c899194927f70767e796758 +50569cc6ceb31b15161716120d0d1014110a08090b09090c0b0805060808 +0a0d07121d071b1021282c3a433a2a25262d2e2b3f3229302f4e83330a13 +1611161410648a1406000b000a0b0b0e0d0c0b0a070708090a0b0c0d0b0b +0a090808080809090909090909090c0a0b10111010141200031a1e1b2228 +2010394020190b625fab4a2f37ff6c172beda51533303046393531261c12 +100f1111111014151717242f2e2b333531342d2a2b17252129261919242a +2931383128312d1c162431343f3b433937260d12333237383a3535351d1a +3c2d32323e3e2f312618192a343137423d26343b1d17a8ddff843032eafa +cfd3ffffc9d65f3b5da6c1b9beb5bccbb0212c26202418231a3617131618 +17191f1e0b1a190812090f10121719181a1b1a0e0e1313090e1921262b21 +1813191b0a1824303d39291e302d21213a4a464032252f3d2f212f443e42 +3e37242d4023bed0fa61433791f8efc22425261336261b1b19191a1b1b1a +181d1d191e2623181c213930313d342b304a3818182f11181d1620202b41 +464c442f15242d2e294d505b5c52243334261b3247526a59292d3538152a +434d71644b2633432a2943405672501b2864a9d796c8bea490928e747d78 +7473747677766f6d6b202020202020202022212120202121211d1c161319 +191c268bbf9075dbddc26e90b0d1c98087b1ccd99b7ba8bbc8a67f858e8d +7d6f70787b86706168706853454878afd4c4560d0c0f161c1c1d1f211f1b +120d0d0d0b0d100f11141516151619182832191e0f1f29222f382e1c1417 +1b191e2f291d1e325447240d0d0e0c09031c5c67320713060f1011121313 +11100c0908090a0b0c0d0d0b0b0a0909090a0b0d0d0d0d0d0d0d0d121011 +14151111111200011017161813180f1c1c0810000b1454121c00bad7c8b2 +e0bbbbc765190f121214121011171b1a17171518191b17151b1a1416150c +0b190d122c1e0d0c1716141b2121262a222429200d0a1826291a1a252527 +1c071227292c2d30302a23170a1f1f272e292224251a0b0f233031222b23 +0f1c24040026413f3b2809e16c0030a978001800091a4821363c22808552 +001c160a130d12436e351f0c0d0302000e08090a0d1b11100f1114181b1f +201a110e100e090d161b1f1f1b141114170e131c201f1f1e1d2e220c0b24 +332e2a30282f31190b1d32322b242a1f1c210767aaa3501e00c8af433904 +10221e0b1a191616181a1a18161b21201c222e2a1c081a3c1f0e13130710 +15212017734e18180f1b19203e44419055353831170d3c65605a4a2f3b3b +24142d49505549303c30270b203a44574838232e32120e2e416062472638 +2e3832b5a543526f9dc1eadddcd8d7dadde0e0dddcda0c0c0c0c0c0c0c0c +0e0d0d0c0c0d0d0f1011080408080b1b8aab4f31bed7bf6f93b6d7cf868d +b7d2dfa181aec1ceac878e97948477787e818a726468706752424572a9cc +bc4b0200030a0e0f0d101213120c07070705040704060a0b0a0a0b0b0513 +210c140a202e2c3f4b45363033393a3e4c44312e3d5d4b28111113141007 +18545f2a000a00060708090a0a0807060303040506070808060605040404 +050504040404040404040907080b0c08080b1200000b0d0c0e0d16162b36 +2b3b273a366f2a320acde9d9c4f2d0d2e282363039362e22150f0e111111 +11110f100e12213437343a392d28301e1c36281a1b2219131a201f242820 +1f241b0803111f22151520202217020d222427282b2b251e100218182027 +221b1d1e1305091d2a28152022182f3d221b4056504b3417f17b063fb889 +0c2a121c2d5b33484e3492955c022b281f281f204b743923141812100312 +0c0d0d0d1a100b0a0a0a0d101215110b080a08030710151919150e0b0e11 +080f181c1b1b1a19291d07061f2e2923231b252c1709182b2b24222e2b30 +3e247bbdba6b3a0ee2c24b3a0002120d000e1010101214141210151b1a16 +1c282417071f4b38313c3e3035333731247e5820180e1a18214046439055 +33362c100635636058482a36341d0c26444b53472e3c322b0f243e485b4c +3c273236161232425f61482d4540524fd4c25a5e6c8da5c6b6b3afaeaeb1 +b2b2acaaa60b0b0b0b0b0b0b0b0d0c0c0b0b0c0c0d0a0d08091012131f88 +ad6348d0e5d483a4c4e5dd949bc5e0edaf8fbccfdcba949da8a49484858a +8d957e6d727a6f5a4d5080b7dbcb5b121011181b1917171717150e09090b +09090c080a0b0c0a08090b0b1c2b151c1024312d3c453d2b22252d333b48 +3f2f2b395a4a2712121717160a17525d28000b00070a0b0c0d0f0d0c0a07 +0708090a0b0c0c0a0a09080808090909070907090909090e0c0d10110d0d +0f1200020f16151917211e303527321b323878364018defdedd8ffe1e0ed +8a3e3538322d21181011121211111014151718213135313a39322e382828 +42322222261e181f2524292d25252a210e0a18262919192424261b061126 +282b2c2f2f2922180d2020282f292224251a090d212e2d1e2827172b371a +153f5b5a5a4a31ff98255ed5a32640262d3c6941545a40a0a2680c322c22 +291f204d743c26171a15130a1b1516141522181211111215181b1b140b08 +0a08030710151919150e0b0e11080e171b1c1c1b1a2d210d0c25342f2a2c +242d321c0e1e32322b27312b2e39207cc1c072451af1d3604f0e131d1500 +101314141618181614191f1e1a202c281b0c234e3c333e44363d3b42392c +825a2320141f1d233f45429055363932170e3d66605b4d303d3c25172e4b +51584a313c312a0e233d475c4d3d2833371915354664664d334e4c6161e6 +d0605a5b7380967d75717071747676716f6c1f1f1f1f1f1f1f1f22222020 +20202221221f16131b191f2d48788b82ced7c4788fadd1c57c88afccd596 +7ca4afb8967a7d878a7a6c6d767e856f6165695f50486cb0b2cf82102406 +10181d1d1e22211c1a110c0c0d0b0c0f0c10141618181614171e27191715 +2429202a332b1f18191a0c13141a120c2a41443823160e02041635463e31 +091906121011121313110f0c0a09090a0a0b0b0c0a0a0909090a0b0c0d0e +0e0e0d0d0d0d12100f1414111011150707111215170e140d0b2012171b31 +7ea82c2a0329a19ec7b0b5b5994500180f0f110f0d0f161b1b1817151819 +1c18121c1c1415140d0b081700180018140a1410171f1e21241c1f221b0a +0717232328232a26241704131b23272524241f16150a151f1c291a152020 +14060a1e29272a2b2716191f030019276a3f020a94c2c3b1c1b6afce7d08 +0c748fc59d1e5f706e182211050c162340773f130d080d03130a04121001 +0a151211101114171a1a13100f0d0a0a0c0e13131313100e0e0f0d0c1418 +14151a19241704061b2420232e2728240d0515262d291e26251f16000f30 +4f2a360db1c9805a08212519272c1b171617181918171920201d26343122 +1f325d3715080f080b1d061647763e19170a1919142a3a45551f22332c16 +09272317221f212a2f130c172f2c282a25312b1909152830322e29242c2b +140d21323f2e1f24335f8f7294c1765f53b6bbccdbdcdad9dcdddddce0de +de0b0b0b0b0b0b0b0b0e0e0c0c0c0c0e0f1311060207080e2144644a3eb1 +d1c17992b3d7cb828eb5d2db9c82aab5be9c828693938374757c82877161 +63675c4d4568acaec87c081c00050d111111151411140c07070705060903 +070a0c0e0e0c08060c170c0d10232d28394440363233362b333133251b35 +4a483c271a130a0b1b313e3629011100090708090a0a0806060404040505 +060607050504040405060604040304040404040907090e0e0b0a0c170907 +0c08090b0612141c3e3b4a5768a3c446441a3eb3b0d9c2caccb160183736 +332b1f120d0d11121211110f100f1320363a373c3b302a1e290422032523 +171911161e1d2021191c1f160502121c1c23212824221502111921252322 +221d141005101a172415101b1b0f01051924201e212822324028213b4482 +52131aa4d1d4c2d2c7c0e3921d228aa2d7af2e6f807a2533241a21283148 +7c431817161f151c110816130109140d0c0907090c0f0f0a0a0907040406 +080d0d0d0d0a08080907060e120e0f14131f120001161f1b1c221b211f0a +02122126241d2b3335351724436647542bcbdc885800131508161d121110 +1112131211131a1a17202e2b1d1e376c5138313c33323e1e29548148211a +0b1a1a152c3c47551f22312a11042221151d1a1c252a0e07122a27232823 +312d1b0b172a3234302b262e2d150e22333e2f222b4172aa93b7e2916f55 +a9a4acb6b4b1b0b0b1afaeafadac0a0a0a0a0a0a0a0a0d0d0b0b0b0b0d0d +0e0e07081012162543665e55c3dfd68da3c1e5d9909cc3e0e9aa90b8c3cc +aa8f95a1a2928182888e937d6d6e7267585076bbbdd88a172b0b131b1d1b +1b1e1d1718100b0b0b090a0d060a0b0d0d0d0b0a10182216161729302a36 +3e392c25262a25302d2f23183147473b281b170d111e303b3427000f000a +08090c0d0d0b090808080809090a0a0b0909080808090a0a070507050707 +07070c0a0d12120f0e1016080910111317131f1e233e37434d62a9d05353 +2a51c7c6edd6dbdabd69213a352f2a1e150e101213121110141518192133 +38333b3a342f2935102e0d2d2a1d1f161c242326282023261d0c09192423 +27222925231603121a22262423231e17170c17211e2b1c17222115070b1f +2a2728292c222e3920193a488c612733beeef2e0eee1daf8a52e3097b0e5 +bb3b7c8d862e3a281d2228314a7f461b191923192319111f1a09111c1413 +100f111417150d0a0907040406080d0d0d0d0a08080907060e1210111615 +231605071c2521232c252926110919282e2b232f3433301225476c4d5e36 +daed9d6d122420101c201515141516171615171e1e1b24322f21233b6f52 +3a334139394528305a854a231f101e1e172b3b44531d22342f170b292418 +2320222b30140e18302d292b26312c180a162931332f2a252d2c17102435 +433327314a80bba6cbf39c6f4a9685837f767372737473727472711e1e1e +1e1e1e1e1e2322201f1f2022222822161117161a294c4e8482bfd7bc698e +abd1c37a88aecbd0917a9ea4ab897375838b7b6b6c7b847f6d6062645b55 +55abbbd1b6251e130f151b1a15161c1c1819120c0c0c0b0c0f0d0d0f1117 +1c1b181b181814111a25211e262a26211e1c160e14091819113440432f16 +12110524695d4f4c2b14110b080f0e1211120e0e0b0909090a0a0a0b0b09 +0909090a0b0c0d0d0e0e0e0d0d0d0d100c0e121411101108030a0f121b22 +1a1c0b115e5c444b6574590d0d05a9a218143c3929acbb0c16100f11100e +0f15191c19171619191d17121a190e1013101222524f322a29513e0f0b14 +1f2023241c1c20190a0b1c2826251e231e1c1203161f2b302923211d1706 +07162716281c24202015070b1c24222b221f121d36363c48b6e389120f2e +c2afc6c2c0c6b876000d87c3cfb349556a700e0c161b1113224f89571216 +0112000c110907070b100911120f0d101315130d12130e0c0e0f0c100e0e +10110f0d0d0d0b141f1c1b1c131a110a10232420292b25231b0b0b1c271e +322e241814221c405cc02c1f0e3286cf501019192c11161e191716191b1c +1c171f201d283937271923523414000b0c05191a2b374b4e0c1a071c1f0f +1c38566b36311e0b0a0a172d1c2b262f2727040c112c2b232b2523250d09 +111f28232c2e251e191516202c28252929004fbba6a4a19e9c3dc0d1bcdd +dfdedee0dfdddadedddc0a0a0a0a0a0a0a0a0f0e0c0b0b0c0e1019140600 +0302091d483a403ea0cfb96a91b1d7c9808eb4d1d69780a4aab18f7b7e8f +948573727f88816d5e6061584f4fa9b9cfb4231a0f0b1215140f0e141511 +140d070706050609040405070d12110c0b080b0807152425263039393635 +33312d3223312c203f4947331a18190f2d6e5c4a44260c0c02020608090b +090805050404040505050606040404040506070704040404040404040706 +080d0e0c0b0f0c070a0d080f16121a12247d897b8aa09d772a291fc0b72a +264f4f3fc4d3273534332b20130d0c0f131311121010101522373932383b +36333a645d3e3637624d160e14202024231b1b1f160708192221231e231e +1c1203161f2b302923211d1703041324132519211d1d12040819211d211d +24243c5e636b75dcffa327213fd3c0d7d3d4dace8d11249dd6e3c35a6678 +7e1c1f2b33262732578e5b171f1025101718100b0c0e10080e0d0a060609 +0a0a070c0d08060809060a08080a0b09070704020e191615160e150f050e +21221e24211b1d1a0a0c1b24182f2e2c272e423c5871d949402c4c99d74e +070b091b0007151311101315161611191a17223331221828624e372b3b39 +2e3a333e445658141f0a1f23131e3a586d38311e0a0907142b1a29242d25 +25020a0f2a2921292323250d09111f28232c2e251e191516202c29292e32 +0a67d8c9cac4baae3fb7bb9eb8b7b5b5b4b3afacadacaa09090909090909 +090e0d0b0a0a0b0d0e141107060c0d1121473c5555b2dece7ea2bfe5d78e +9cc2dfe4a58eb2b8bf9d888d9da39180808b948d796b6d6c635b5db7c7dd +c230281d191d211e19191f1d191a110b0b0a090a0b070706080c11100e15 +1315120f1b292828313635312d2b2a2830202d2a1d3b4646321b181c1132 +715a4642230a09030207080c0d0c0a08070808080909090a0a0808080809 +0a0b0907050505050507070a080c1112100f120b060c12111b2421271c2b +7f8675819aa182383730d2cc3e3a605d4cd0dd2e38342f2a1f160e0f1014 +1311111515191a22333630373b39384470684a42406a541c131c2528292b +2123251f0e11202c28261e231e1c1203161f2b302923211d190a0b1a2b1a +2c20282424190b0f2028242a24282437565c6372ddffb03a3759efdcf3ef +edf2e39f2134abe4eed0647083892726303527263259915e1b241329141d +201814121518101514100d0e11120f090c0d08060809060a08080a0b0907 +0705030e1b1817181219120b132627232b2a2427201211232b2236362f2a +2b3f395a76de4f493659a8ea631a1c1423060c1a17151417191a1a151d1e +1b263735261d2b624f392c3d3e34413a454a585916230f2426141d39556a +3531200f0e0e1b301f2e29322a2a070f142f2e262e2825250d09111f2823 +2c2e251e191516202e2d2c32371273e8dcdfd7c6b23aa8a3788379777777 +76737072716f22222221212020202222222221211f1e251f1a161413181e +404a6d66c5e2bb7b89b8d5c17f8fb2c7be937d8c9b98846a798484816472 +797d8465596258456397bec4c94b0f1d1e09110b270c141419191612110c +060c11080b0c101214151717131b141716132627272b2c2f281a101b1511 +0f0c0d183148462a1312140d070a2a5a4846041b040c0b0f131514070b07 +07090f07030806090c100b080a06040f0b0f100e0b0a0c110b0c120a1114 +1308060900100b1b2517160e0e687d61380a03240a1b0087d7636c74768b +c2bd150609191d21160916161616181719191c171717180e0c12100988e4 +f2d5a6969873100b141622242326262b170f0a1d231c1f212f19281a030a +2c1b211d2f072f12070b173122241f23202204160031241e1c301e15096a +4c4c5a455a0a0d2074e01a0009000644eb0f251d00010a2a474fa041091e +14170c3454484b240b1403050a30535a4b4149593811090a0e1511120814 +0d0c0f080c120f110c0a0a1e060f0a0f0a1513121f0e191101042b262627 +251d2d25000a1c2326262c25211c526c8ba4eb27252823d8ba37071c2323 +1b231e1c1b1a181716161a1c1f2121201d1b163144381d121920183b421a +404b48503719181313273b54593e25241e010a2121362e1e1e0c3303051f +262e29212e2a27160f11312424312b2e2b2607163c2f2d272c1a19aac96b +686d746847b1a9ccdadededededcdcdae2ddda0e0e0e0d0d0c0c0c0e0e0e +0e0d0d0b0c16110a05000007123c362922a6dab87c8cbbd8c48292b5cac1 +96808f9e9b8770818e8e8b6c787d818664575e523f5b93c0c7cd4f131f20 +0b140b270c14141918130d0c0701070b02050607090b0c0d0d070e070c0d +0e24282c33373d3a2e2533322f29221d243c514a2e19181c1712122a5643 +4200170008050b0d110e02050202040a0200030104070b06030501000902 +0507050201060b05070d080c1211070c0f000f04111a0f1416228aab9a7a +472f452837169eec787e878ca1dad530252d3d37311b070d0c0d10121310 +100f1527343835363c382ca3f8ffe3b4a7ac841910171925272326262b15 +0e081c211b2022301a291b040b2d1c221e30083013060a163021231e221f +2103150030231d162f292d2d9981838e73812a28398df62e0d1d101c5dff +293f3405151b3b555dae521d362c2c20445c4d4e291623181a17395c6152 +464c59370e0705070e070c020e07060902060c090b060404180009040904 +0f0e0d1a0c171000032a2525261f1a2b28000f1f2324252f2e3339748ea4 +bbff4647493febc338001013120a1415161514121110101416191b1b1a17 +161436545444404b50415e5d2d4d5652583f211d18192b3f585d4226251f +020a2120352d1d1d0b3202041e252d28202d2925140d0f2f22222f292c29 +2405143a2f2e2c33272cc5e9908e92917b4ca994aeb5b6b6b6b5b3b0aeb4 +aca80d0d0d0c0c0b0b0b0d0d0d0d0c0c0a0a110e0b0b090a0f163b383e39 +b8e9cd909dcae7d391a1c4d9d0a58f9eadaa967e8e9a9a977984898d9372 +646c604d6aa1cdd6d95b1f2c2c171d1531161e1e23201a13120d050b0d04 +0706080a0c0d0e0e0b150e121212272c2f35393e3a2f2633302d261f1c22 +384e492d19181f1916142853403f00160007070c0f121206090606080e06 +020705080b0f0a070905030b050608060302080d090b130d1217160c0a0d +02140c1c281e22212b8ca9937040324e334325aeff8b92989aaee6df3728 +2d3936301e08100d0e1012121515181a27323732343b3a32acffffeebfaf +b38b201620202e2e2d2e3033201613242c232424321c2b1d060d2f1e2420 +320a32150c121e38292b262a27290b1d07382b2520372d2d2991797d8a73 +8835394da3ff472736283371ff384e42122025435e66b95c243a2e2d1f44 +5f51532d1a261b1d1d406369584c53613d150c0b0e150f10040e07060902 +060c090b060404180009060b061312111e111c150509302b2b2e2923362f +0915282b2f2d38333737738da8c1ff4b50524bfad44a101e201c12191a1a +191816151414181a1d1f1f1e1b1a1739545543404c52456464335358535a +4224211b192a3e575c41282723071229263b3323231138080a242b332e26 +332f2a171012322525322c2f2c2708173d313230392d33d0f8a2a3a49f81 +489c7f8c807878787775737178716d222222212120202022222222212120 +1e251e1a161411171d3b4b716dc5deb3738bb6d1bd7b8aacbfb58c7b8a97 +94816a768183816371777c7b6854494c669dcdd2c88e1509211e07041304 +0e111e0a16180f0c0c080d130d0b0c101214151617121a1316141326291f +2d3c2c26111f0f110d0d0f1420334756361914160e050724545a3d0b0e0a +08090b05050b07100e09080b090b100e0f090c06050e0d09101010100f0e +0b0a081101130e0b0510111000101717151516111e0f11050000020b1909 +150c005eafa39a71948e37001a0a14141b130614181918181617171a1514 +14160c0b10130f0021261e05000b101305111c2c221e201a1e1f000d1e32 +1d2613172c21000f1a12232819161b13250b05122c241b1518251a110409 +192720271d130b092d223b08002c120d002fc8dabcd4b4a7d1d21e6fe3ee +ae4d383b33000118060e1020405865421b18120b0e0026698860211b3c34 +130c0709100d161a15040311110f0c070a0c10090304190a12141612131e +24150e080a222221253a1f15080008202a272e2420132c6d4b45598a3226 +1723db920e0b27251e181e1c1a1a1919191818191b1e212223222113385f +451c212417128ee48c515a94ce4f23130b142f43565f3920240203182621 +2f1d2a4e290c1115241e1b2a312c201d05022035282d243326312e1a0826 +2f3025251c0690ce7a7e3d373d49aab0d1d8dcdddedfdddedde3dcda0e0e +0e0d0d0c0c0c0e0e0e0e0d0d0c0c16100a050000061137373029a8d8b074 +8cb9d4c07e8dafc2b88f7e8d9a97846d7e8b8b8969777b7e7a6752454660 +97cbd8d2961d112927100b1a0b151824101a170a070703080d0705060709 +0b0c0c0d0710080d0e0f242923324637352232272d2a2625242c3e4d5a3a +1f1d201913112653563c070d06060509010306050b0904030604060b090a +040701000908040a07070706050504030c00110d0a040f1416051416140f +0d121028233231342c3d373c2733260675c4b6b087aca652173931382e2b +18040b0e101212120e0e0d1323313633353c3c341b393a30170a2224200e +1a23332925241e2221000f2134212b181c312604141f17282d1e1b20182a +0e08152f271e181b271c13060b1b29222721222731605b76403057382f1e +4ce3eed0e9cac0eced3a89feffc25e47484005132f1d26253450606a4523 +232423260a3374936928203f35120b05040b0811141100000b0d09080106 +060c03000015060d0f1110111d23160f090d252524283a1f190f0311272e +2931282b2648916f6172a7534b3941f19e10041b150d070f131414131313 +12121315181b1c1d1c1c113d6f62434f56493eb1ffa160659cd8592e1c15 +1c38495c653f262907081d2b212f1d2d512c0f161827211e2a312c1f1a02 +001d33262b2231242f2c1806242e352e302b1aacefa1a762554e4ba09ab3 +b3b4b5b6b6b4b2b1b5aea90d0d0d0c0c0b0b0b0d0d0d0d0c0c0b0a110d0b +0b090a0e1536394440bae6c5889ec8e3cf8d9cbed1c79e8d9ca9a6937c8b +9798967583878b88755f53546ea5d9e6dea3281c3430191322131f22301c +251f100d0d070c0f090506080a0c0d0d0e0b110c0e1010252b2435483b3a +29382b2e282322232a3a4b59391f1c221b1613254f553a060b0507060a02 +060a08110d08070a080a0f0d0e080b05040d0c080c0a0808070607060710 +041613100a15191605171c1d1b1c2120342c37302f23373842313e331585 +d5c7be95b8b0591b3b30342d2a1b050e0f1112121113131618262f353234 +3d403a2343453c2113282b2815232b3d312f2d292b2d091b2a402a2f1b1f +34290717221a2b30211e231b2e150f1e383027212433281f121727352e33 +2c292a305b55703d315d413b2d5ef6ffe8fedfd4fdfe4896ffffcb664e50 +480f1d37232a283550636e4a26272625280f397a996e2e26463a18100a0a +110e15161000000d0c0b070305080b0500001607111315151622291b140e +142c2c2b31442924170c183137353a33312c49916f6577ad5851424cfeac +1f142922170f14181818171717161617191c1f2021202014406f60424d55 +4a41b5ffa665679ed95b3221171e37495a633f262c0b0c23312b37253458 +31141a1d2c26253239362721090624382b3027362934311d092933393334 +3021b7feb2b9726055489485917e7677787876757479726e222221212121 +2020222222212121201f231b18151211171a3a4b726ec4d8ad6e8bb4ccb7 +7786a4b3a8847889948f7e68747f8180627075786f644e415c95c3d2c88a +1b002017090e061d060124050b11210e060a0a0b100e0b0c0e1014151515 +111911141314282b1d2f3d512713210c130c0c0f131a2734672d050d1b12 +0b141e506a34120310060b19090b0e0907010d0804070b0b0805090b0303 +0b0b0406060506090e0e0c070c130000230d000d1a0011081c2317131a11 +0907000f0000001706090271d49c79da7800000506160d1011211d0a1519 +1b191815151518141414150e090d1313101514221b0a1622020417171a0e +191520110f1701080d251c1b141d22130002180e12170d19110e0c061017 +191e2520110e07070c1b21221b2328090804000012061a1a251d005c9dad +a37e3c3e0e00080d1e6d773f499a7d3e1f0a4f0c0546517336121a0c0e0f +130800000203030310010808090c030c0b0e0a020602030a161203021a17 +0f010e09080a181b080a19030211201e18221420210b040a1b1a191b1c24 +121426212e2c1917201f0044c313191c111420291a1819191a1a1b1b1d1e +1f20222324232b497448100c0301060028314e4c272d3b1309041031485d +572a2234030813172b2b27221716070f19222829342b1f35141414221d2a +3d27312e2e030d2033271234302828054ba4b2bae1935295aacad7dadcde +dedfe0dfe1dbd90e0e0d0d0d0d0c0c0e0e0e0d0d0d0c0d16100a06010006 +0f3937312aa7d2aa6f8cb6ceb97988a6b5aa867a8b9691806b7a87878668 +74777a6e634c3f5891bfd1d09627022d24161b132a130e31111719210b03 +0805060c0a0506080a0b0c0c0c0811080f0d0e24291e33455a342132202d +2925232326303a6b310b16251d191f2250683410030e060919070a0c0804 +000803000206060300040600000606000200000003080907050a12000023 +100012220114081a1f15121d1d1d262a423036253a24271d8bebb38ff08e +061220223534342b3122080c0f121312110c0c0b122331353233393c3831 +302a363223323b15132524271b261f2a1b17200911152e25261f282d1e0a +0d23191d2218241c19150f192022272e2919160f0f142329281e2b3a2834 +3834384a3947424b410b7cb4c2b8955659291624283581894e54a78e5236 +236824195559783b19271f272826170a090d0e0c0a15040907080a010a06 +0c0500010000081110000015150a000c070709191c0b0d1e080918272721 +291b272b18111725231f22243126324c474b493a3d47441f5fd116151103 +04111c11121313141415151718191a1c1d1e1e294e8465383d3733332145 +465d572f37492217121b3b516660332a3c0b0f1c202f2f2e291e1f101a22 +2b31323b322337141212201b283c26302d2d020c1f322a1b413f3b41236f +cbdce0fda253878fa8b2b4b4b6b6b6b4b3b3ada80d0d0c0c0c0c0b0b0d0d +0d0c0c0c0b0b100c0a0b090a0e1337394541b9e0bf839ec5ddc88897b5c4 +b995899aa5a08f7a86929392748084877c715a4d67a0cedfdda2330e362d +1e231b321b173a1d23242b120a0d090a0d0b0506080a0e0f0f0f090f090c +0d0e232a203648613c2a3c272e27222122242d386a300b15271f1c21234e +693411030f080c1b0a0f110d0b040c0703060a0a0704080a02020a0a0303 +020002050a0d0b0a0f1805072b17071825051910252d23222c29262b293d +2930243e2c2f2898f9c19dfe9c121c27263733302a3025090f1013131210 +11111417262f3432323a403e3a3b35413a2a36401c1a2e2c30232f283424 +2229141a20372c2a232c31220e11271d21261c28201d1c1622292b303732 +24211a1a213036362d38442d35363136493c4c4a544d1789c6d5cba7676a +3a2430333d888d5158ad985b3e286c261a585c7c411f2d232b2c2a1c100f +1112111019090d0c0d0f060f0a0d0901050102091511020119160e02110c +0c0e1e211014240e0f202f2e2833253135201a1f2f2c2b2c2f392d344d48 +4f4f3f404c4a286ade25241f100e182316161717181819191b1c1d1e2021 +22222c518463373a353436244949605931384c251a131d3c50655f322c3f +0e1523273a3a38312624151e27303639433a2e431e1d1d2b2633442e3633 +33081224382f20474441462b7bdaeaedffa54d7a7a857d75767878787776 +77716d21212121212121212221212120212120231a1414121115183c476a +66c0d5ac6f8cb1c4b073819ca79b7c7487918b7b6874818381626f71736b +5645558cc1d0bfa9a395ac8523181d0d75928c8991ab5e2c11060b0b080b +0b0c0d0e10131415150f170f131314292e253032882d1c1412110e0f0f10 +1523329d52191b2410061121526a3112051408001c0306080a0f0a0b0b04 +0e11090c09080e08030b0c090c0a0b0d0d0e0c0d0c000f000b00000e030d +111c0e00040c1105060c1f04090b021302041e008db2001654bf1b3a1f19 +070d0f152f2f1517181a181714151519171717181009090d0d111b1c1f1f +1d180b1a18160a080e240e1914142312271605210d161319250f190a121f +1319062e1f0b121d0e0c131902221c1306171c1b1219160d0d0800061e00 +09130f103220d286435edd4100101a0815000d3a484f729edb90066c4e0f +244763401d150c0c070810120f151b12010a060d070c0e030e010a130b0b +07010e01100a060f030e0a0008130a0d120b231f14120916201a0b161d0c +0d08020e231e1c231c1e18001e142517221117042ed20e251e191d251d1b +19191a1a1a1b1b2322201f1f1f201f203e5a331a0d002c2b0f1e31757c26 +1c18050d0d0f2a415b4c211a1e090c15261c2a1d1428250401002735171f +312020230a0b27261e1f372c211d07111d1f2d331c230c210093d38dbbb7 +402fa6a9d3d8dbdddedededddeded8d70d0d0d0d0d0d0d0d0e0d0d0d0c0d +0d0e160f08050301060d3b342b25a5d1aa708db3c6b275839ea99d7e7689 +938d7d6a78858785667173756a5543538abfccc1b2b1a3ba9331272c1c84 +a09a979fb9682c0e0308060307070607080a0a0b0c0c0911090d0d0e252a +25313792382922252928252320212c38a1561f242e1e141c25546a331206 +1409001d0207070b0e09090600090c040704030903000607040706070709 +090a0b0b000f000f0000150a1416201100030e140d14203c28363c303a24 +233b14a8ca062c6cd736553c362934332f3f34130e0e111211100c0c0c12 +2531363431353634323737373a3a372a312a281c1a1f351f2722222f1e33 +2213301e252428361e2a19232e2428173d2e1a212a1c192125102e2a1f14 +2329271e201f202b3127395431393e36375947f4a05975f75d072d382630 +17224c56597db1f1a91f856623334f684526242128231d23242124291d0a +120b110b0d0f020d000a110b0907000e001008060d030c090008160d1217 +122a281e1c16232d271823291d1f1a141f2f28242d2a3537194635443d4a +3a40294be31423160b10151012131314141415151d1c1a1919191a1a1e44 +6a50433e325f5b373b4684862f262a181f1c1d354d65562b242914172233 +2432271e353413130c364424293b2828270e0f2b2a22233b3025210b1622 +2436422f38233e1eb9fbb7e0d24e2c958bb0b3b5b5b6b6b6b4b2b0aaa60c +0c0c0c0c0c0c0c0d0c0c0c0b0c0c0c100b080a0a0b0d1139363e3bb6dfbf +849fc2d5c18492adb8ac8d8598a29c8c7984919391727e80827863516198 +cddbd0c1beb0c59c3a2e33238ba9a5a2acc67438170c0f0c070808060708 +0a0d0e11110b11090d0d0e242925333a943e312b2b2b2723211f1f2936a0 +551f23301f171e26536c321408160d0421070c0d10160f0e0a030d10080b +08070d07020a0b080b0708090a0d0f1011051707180b0b1f121a1c291a0b +111d231a1f29402833382d3925263f1db1d6123978e33f5c423a2b332f2e +3e3714110f1212110f111115192830363431363a393b42404143403c2d39 +34322624293f29322d2d3b2a3f2e1c37252c2b2f3d2531202a352b2f1e44 +3521283325222c311b3c372d213339372e32302e35372b3c56343d443d3e +604efdad6783ff6b153b4330391c274e575a81b8fcb02489682436526c4b +2b29242b2620272825272c210f150f140e11130712050c160d0e09041004 +120d081205110e05101d14181d1a322f27251e2b3530212c352729241e29 +3b343139353d3c1c483a49404c3e443153ed203123181a1f171717171818 +18191921201e1d1d1d1e1e2144694e3f3b30605d393f4987872e272c1c23 +1f20374d66572c262d181d283b2f3d31273d3918150f3b492c3245353533 +1a1b37362e2e46392e2a141c282a3b47353d294425c2ffc3e9d94e238573 +8a7c76777878787675746e6b212121212121212122212020202122212018 +121112111215363f6365c3d7ab6a8aabbba86f7f969e937772858f897a67 +75838482616c6d6d614a4b7cb8d6d2c38ca9070aa474050d3fb713131b1b +1fcc2b10060c0a070b0b0b0c0f10111214120e160d1112142b2f2a2c3c8d +2f1a130f090b1112111a324b563918090b0e131727555c340b10130b1e58 +404439302b1e070e0a1e1f0f1b1c091511090d121620212122180d06080a +328b15517d8c723b1517015d79979e8b949a2603010a160010041d0c0d4e +e4e0d0d3d9dee1d000250e0e122c2d1517181716161416171b191a171711 +0c0a0a0a0d16160a0e1c160d1f0800242a2f3c242a170d1b0e1938382710 +0322281522093108120812101b1921181712070a1516001f2b080c0d1e25 +2b360d1a03150e000e142329111415e0886f61d9a65e591f122323253f2d +2a5520001210120d26294547593d15180f06160f0f140900031c100c0600 +030c020f0d0406000a14030b0c0b00030700061712120a0000070b14111a +1a051204160b091604131e181000030a0100030b10121810222004040e54 +db2e482c1c1d20161d1b1b1a1a1a191923211f1c1b1c1d1d296661324337 +1a5753321e3b8876265525121c18162b394b3f4242181a12000a20021424 +1306171117130d0d1d190d170a13120c242b181e10272a23161e12181d07 +1a2c3c158ebf3734c5c3289bcdcbdddddedededddcdaddd9d80d0d0d0d0d +0d0d0d0e0d0c0c0c0d0e0f150f08050301050c362c2424a8d3a96d8badbd +aa718198a095797487918b7c6977858684636c6c6c60494a7bb7d5d0c595 +b51316b181141c4ec6212129282fd52b0d0309080507070708090a0b0c0a +0b0911080c0c0e252b292c4096392823232125272521263b515a3d1e1215 +1c21222c595d380c14140e1f5b414739332b1e050905191a0a161704100c +04080d111b1c1f1d160b05090d358f1c5885947a431c1b05617c9aa494a0 +ab3a1c202e3d2433243d2a296afdf8e8ebf1f9feef184735322c3c32130e +0e0e1010100d0e0e14252f3535343333312f3432272c3d3c303a20163c42 +45523a3e2b212d202b4a4a3b2717393c2c3620451f261f26272f2d352c29 +26191e272a0f323c1b1d202f34333e1e36253d3b20393b454c34393dffa3 +8579f3c47e794030403c3a4f3b3461330d2d2c2e273a384c4c6046242d2d +24302422271b0a122a1b160e01071003100e0505000915020c0b0c000406 +000518151611010310151e1e2828162317281d1b2a1a2b363024100f160d +081b2c373b3b33494c31303572ef3847261011130b14151514141413131d +1b191615161718276a714f6d69518e835b3d5397802f61382a312b283a47 +564a5050252921101b2c0e223224192c292c28201e2b271923161f1e1830 +37242a1d343730232b1f27311e33485b38b7ea5f57dfce2286aaa1b6b7b8 +b8b6b5b3b1b1aba70c0c0c0c0c0c0c0c0d0c0b0b0b0c0d0d0f0a07090a0b +0c0f342e373ab9e1be809dbcccb98090a7afa4888396a09a8b7884919290 +6f787a7a6e575889c5e3ded4a4c32122ba8a1b2355cd2a2c36383ee43716 +0c100d0808060607090a0d1012120f170c100e0e2528272a3f953a292324 +212425232024384f593c1e11171d24242f5a6139101718132460464e413a +35260a0d091d1e0e1a1b081410080c11151f20222119100a0e143c982662 +909f854e2624106d8ba9b4a3aeb54321222c3a1f2f213c2a2d6efffff2f5 +fbfffff41d49342e2b3b3514110f0f10100f1213171b2931373534353738 +383e3d2f34423f34432a20464c505d4549362c392c375656442f20414534 +3f284e272f272f2f38363e33332f232933351d404c2a2d2f414748533044 +2f45412640424e523a3f3fffac9285ffcf8984493846403d4f3b33613a17 +343031283b3b5252664b29302f263127262b1d0c152d1d1810040a130714 +12090b040f190810111005080c040b1d1c1f19090a171e272631311e2b1e +322727352535403a2f1d1d241b1525333c3f3f374e4f34333a7af8425532 +1c1b1c131919191818181717211f1d1a191a1b1c286b704d69664e8b835d +40559a812e613c2e362f2c3d4a584c53532b2e2817233a1c2f3d2c1f2f2b +2f2b262636322731262f2e283e453036263d40392b33272e3824384c603e +bdf1675de0ca14718e797f78797978777573746f6c202021212121222222 +21201f1f2122211e161010100f10112f386268c5d4a36485a2b0a06b7e93 +9790736e838e89796678858683606664634a5378b1d3cdb7a785ae78868f +460b0524b373775f7d86b81e0c060c0a0b100e0c0d0f10111214110e140d +1012142b302725656935101e08090c11100d183553596e5f280b1315052b +554d3a081910114a8850443136414505100924220816161a251c0a070b12 +1e2025261c0d04060c6b5f00814808569000180b754010182e22b9561620 +090b170b0e0c071905040000000900031703060f0d0919190a1619161517 +1719191d191e1815120f0e0d0d17101916161a11190e1444d0d1c4ced9d4 +ac0e270eabe7dcde9e0d71bc0d1c57cc083c800f1c11151b0e2162584738 +4d767d031a23d0c8e1d7f8d3cd29000a170a0e243030270558a79c9a9f8f +b1af4906131c153e453944501e0911231613414235634f17181109100804 +0e171408000209090725351b1e241e220602121235373c21080e3f1d040e +212629252e3f231a07114068003979864f21101600599390907581500023 +001e0515000315000ea43e572d11141c231c1c1b1b1a1a19191d1d1b1a1b +1c1d1d257e5816353106153b261a5d8844167e3c1c191621393e412f646c +22172012341b121e130a25120d11110a1b1504131711312714150011150d +12030d11121602021b1841320040cebeaff0d35cb8abcededfdfdfdfdcdb +dadfdad90c0c0d0d0d0d0e0e0e0d0c0b0b0d0e12150f06050302050b2f28 +2529add2a46786a4b2a26d80959992757085908b7b687785868360666362 +495277b0d2ccb6aa8cb781909953181231c27f856b8a93c11d0903090809 +0c0a0809090a0b0c0a0a0811070b0c0e252c24266a73401d2d1b22242723 +1d243e595d74653216212413335a513f0c1e13164d8d5348343a4445030b +041f1d0311111520170502060d191e23241c0c0509106f66068b5214609a +001c0f7b4617213a32cb6a2e3a2629362c2f2b2535211d07100624132238 +2429363123291e080d0f0d0f111310101014292d31343737363439313734 +373f3a402f3060ecede0e8f4ebc4253f24c1fdf2f6b9288cd7283772e723 +579b2a372c303327397a705f50648d941a313ae7dff2defee2e446202e3b +2c2c404d4f4a2d7bc2b4b2bbadd2d16c2730352a4e5144506439262e3f30 +2650493a6a5a29302f282c201c232c281a0f1014130f2d3a2022271f2207 +02131236373d21090e401d07152a2f332f3b4c312b1923547c114f919e6a +3d2c341970a6a09d82936718491f432d3e2d3342292fbb4b592a07081019 +16161515141413131717151415161718218268335f643e4d6d503975974e +1f8a5438322e344b4d4f3d737b33283325462b222e251e3c2b292d2a212f +2716232722443a27280524292126172125262a191b363360552169f9e7d1 +ffda539e84a3b7b9b9b9b7b4b2b1b3aeab0b0b0c0c0c0c0d0d0d0c0b0a0a +0c0d0f0e0905090a0b0b0d2d29373ebddfb87a98b3c1b17c8fa4a8a1847f +949f9a8a758591928f6c727170576085bee0dac4b99ec8909ca55c201a39 +c98b927b9ba4d22b140c100d0a0d090708090a0f101212141c1112101025 +291f20646b3a1628171f2425211c223b575c72653118222716365d54420f +22181a54935a513d434d4d080f08232107151519241b09060a111d212627 +1e110a1019787011955e206ca60c281b89562730483fd573323b24273125 +2826233624220e1a102d1b273d292b352d2228210910100e0f1112151519 +1b2d30343539393c3b423a413e3e453c45383b6cf7f9ebf5fff9d0334b32 +ceffffffc43397e233427df22e62a6354237393d2e43847a6b5c729ba42a +434cf9f1fff8fff9f6562c3a4736364b55544c2d7dc9bebcc6b7dbda722c +34392b4d4f3e4e6b422c3243312a534f40705e2d32312a2d221e262d291c +12111614112f3d23252c242a0c0a181a3b3f42290e1645250e1d33383c38 +44553a33232d5d85195a9baa7549373f247eb4b0ad93a175215225492f42 +3035452d34c354653512141a211a1a1919181817171b1b1918191a1b1c22 +8367315b5f3b4a6c4f3c779a4f1e8a583c37323a4f52524076803a2f3a2c +503a313d3127422f2a302e27383324323734554b36371332342c31222a2e +2d3321223d3a6359246dffebd3ffd2428565797e7a7a7a7976747376716f +202020212122222222211f1f1f2123211e130e0f100f0f0e333e6767b9c6 +9b647c99a598687d90928f716a7f8d897866798686815c605b594e7bb0ce +d1bf98740c1e347e72432820266b6663715b64591209090b090d130c0c0d +0f10111111100d130c1012142c3120218f6b490f1a0a0d0d0e0c0b17334e +4b524522101518112b4e4a3e0e160f150057425a534b371f0712082c2d0e +1b172f35230a050a111a191e231f140c0c0e3aa988a17e66775900111175 +5c3e435652b23d000e0d0a11180e03231b0f10261e1f08051b1b110c0c10 +090f0d05161917171a1a1c1a1c172c1e141010110f10120818191614010b +132445d8a78a7e8ac2e41c240ad5a7002fcdcdd1c500083fea3b7fdd2e26 +43130c205ce2ebebcdd6e6d7012d1ade4c092f1b31dc74150b1d1c2c4522 +1612110b020502000a0000081e111e0f2c33394f461b1a1e1809133d3e3c +514c210e1010001415060416190e05101521566d4a43454b5b2a09132769 +26484c2f1d65210d145379927d86b98b270d126ecc2e8add7bc5c802073b +e4b1a7a3a2c0c7382e24000f1d08061c080421153c27181e171c1a1a1a1b +1b1b1c1c1d1c1c1b1b1b1b1b3486532243492e0b051613536a4e31433c1a +1615254143432f5e673f002950cad6e389254da2022738a4c1ad95b8d471 +18080f8f9b19a3cad699410a2546c5ccc4c4c5bd883300002a2f714824b2 +b2cfdddbdedfdfdedddcddd8d80c0c0c0d0d0e0e0e0e0d0b0b0b0d0f1215 +0e06040504040a352e2a28a2c69e697f9ba79a6a7f929491736c818f8b7a +657784847f5a5e59574d7aafcdd3c19a7711253b867a4d322a3078706f7a +666f601107080a070b0f080809090a0b0b0a0a090e050a0b0e262e1d2292 +73531d2a1e2625241f19213c544f584b2c1b23271f35564f46131d141c00 +5e466157523b22050d0327280916122a301e0500050c15171d221e150f0f +1241b190ab8a7483620614147b654a506664c6510f23221f2a362e214035 +29293f373823223a3c34323434231f12030d0f0e11141613110f12353330 +32383a3a39372a393a3b3b2d37384465f8c4a89ba8deff363e24efc1064b +e9e9ede110245bff579bf94a425f2f273b77fdffffe7f0fff11b4633f765 +1b341f3bec8a30283936445b393231352f1e1e1b1728190a2b3f3038253c +3f445b5a36373b3423264c4541585733272f321e2e2f1e1c2b2d20151e21 +2b60755248484e5e2d0c162a6c294b4f32206824111d5d839f8a94ca9d3b +232886e449a5f997e3e8242759fec7b8b3b1d1de58544c27384938384c34 +273822402510140d1214141415151516161716161515151516308a633f6d +7c66433740326b7c5a3a4f5437312e3a5455523e6d7650113d67e0e9f69c +3b66be1f4555c1ddc6abcbe58432232aaab635bfe6f2b55d274263e2e9e1 +e2e4deae5b2922524e864e179487a0b6b8b8b9b7b6b4b3b1acaa0b0b0b0c +0c0d0d0d0d0c0a0a0a0c0e0f0e0804080b0c0a0b322f3c3db2d2b17c90aa +b6a9798ea1a3a0827b909e9a89738591918c676b67655b88bddbe2d0a986 +24374b9387573b3339807c7d8b7883731f1210100c0c10070506090a0f0f +11141a22151613122629161a876648101d132225221d192039524e564b2b +1d242a223759534917231a2209664f6b625c462b0a11072b2c0d1a162e34 +2209040910191c2227231a14161b4bbc9bb7988191711623238b745a6075 +70cf5a14262320262e23193b342a2e443e3f2c2a3f4138333330221e1504 +10100f111415181618193a3633333a3c403f4034424341402e3a414f72ff +d2b3a9b3ecff454b33fcd01357f5f5f9ed1c3067ff63a7ff564e6b3b3244 +82fffffff4ffffff2c5a47ff7931513a56ff9f413847435068413633352f +2225221f3020103144323923393b3c59613f3d3f38242a4f4b475e5b372b +31331e2f30201c2c2e22151f212c6177544c4f556734151d337332525839 +296f2d1a26678da8939fd4a7442e3390ee52b0ffa3eef52e3464ffd5cac3 +c4e1ee635f542c3c4c3a394e352b402b4b301b1f161a1818181919191a1a +1b1a1a191919191a318b623b69776340363f356d7c5a394f583d38333f58 +595743727d5718466febf8ffab486dc2234759c5e1cdb8daf79543343bbb +c743cdf2fec0682f4a69eaf1e9eae9e3b15d2d2654508142047864747d78 +797a79787675746f6e212021212222232223211f1e1f2123221d1109090f +0f0e0e404a665aa6b7986f78929e92657c8f8f8f6e677b8a887662798585 +7e585a54516ea5cbc6c2c29d6676797d7b2008130c0b2f2b566052310a0c +0b0d0c080f11070d0e0f10111111100d130c1011142b311a209e8e5e1a08 +160b090a0c11213c53632f0e151a0b08192a484c4014110d17459b646b62 +6a6557060f093845293932383a250d0e1a232923272b292116100b13708e +7c5a5b68210b0704343b4848445f65200c06131b110b0a212e64200d0e58 +220b14030f100b0a150f1310091817191a1c1d1b1818113623140e0f110f +1016101d0f0f1e0e15181200785175736d5d7f15070958a7211e0057acab +101518d9c5a3d4c9cdd92519130034152d0400004e090a15c5bec2cdcbb8 +f14d0620121b133a2829102b0d2325202013101912110a2413334b525059 +17150d12162f3c3e4b3c402c04111a1109060c0c07080f0d0c000444694f +4b494d5c27040d1b5c13000d434b7a060a030e0023324e6d0000190e40cd +58b6bc6ea0d1072312d5a176747560e6850319141300130809031b1e2e36 +181121171c1818191a1c1d1e1e21201f1c1b18181642743b273d3e3b020b +12257e683c495b301c2220253d41443a597d9c161f44ed3036b7d577e52e +16096ca6ded3cad45c18160dadbd28ca7429adb40c1762d8393e3b4760e0 +6401181f39a3765dc2a7b1d8d9dbe0e1e2e1e1dad6d40c0d0c0e0d0f0e0f +0e0e0c0b0b0e0f13150d0807060405083f37302394b69b727994a094677e +91929172697f8e8c7a647783837e585a535070a7cac5c1c19c65777c807f +270f1a151439355f695d39110e0a0c0b060a0d010708090a0b0b0a0a090f +050a090d272d1921a4966826182a24211f20212d465c69381821281d1b28 +335054481d1a16204ea56d756a726d5e0b130a3944283630333520080915 +1e2721252928221913101a7997866768742b0e09073a435254527076311e +18252b2424253c497d3a262a743e2833243233313138292314070f0d1014 +181915110e10453c3331373a3a393c353f3234463a3e3a3218966f918f89 +77992f212374c33d3a1373c8c72c3134f5e1bff0e3e9f341352f19502f47 +1b171568232530e0dbd8d7d0c2ff621d3a2c322b50414632523440413d3f +34333c3532273d28455a5e607234322a2b2e424a4754474f412235413329 +262a2a24222722200f124f7458525051602b08111f60170011474f7e0a11 +0d1b0931405f7f0d122f2458e573d1d888bcee274030f1b889858673fda1 +253e3a3b2b4038362a3c353d3a180c1a0d1211111214161718181b1a1917 +151311113e7549446670723538384193774853694b3a3f393c5053534968 +8eaf2a355cff4549cceb8fff4b332689c1f6e9dfe77132312acadd48e791 +45c9d0283580f95a5c596881ff8a273b3e53b27850a88387b5b7b7b8b8b6 +b5b3aca8a60909090a0a0b0b0b0b0a08070a0a0e10120a06080b0a0a0a3d +3b4038a2c4ac858ba3afa3768da0a1a07e788b9a9886718490908a646661 +5e7db4d8d3d1d1ac75898b8f8b3119241e1d43416e7a6f4e231b1214110b +0e0e010708090c0f0f1114182015181414282a141b9a8b5d1a0b1f212120 +1f202b455b69371921291f1f2b3853574b221f1b2755ae767f757d786811 +160f3d4a2d3d35393b260e0d19222a262a2e2d261e1a162282a08f707180 +371d161648505e605d7a7e38221a272b221e1c35447a392a2d78422e3829 +36373230342622170a120e1114171a191816164a403533393e403f453e48 +383a483b42433d23a17a9d9d9786a83e303282d14b482181d6d53a3f42ff +efcdfef2f7ff4f413b255c3e562b272779343843f3ededf2edddff772f4b +3b40375b484a335133444543443b39423b372b412b45575a5f773c3a3030 +32464d4c594b54462435403228252a282223292321121553785d5a585a6b +34111a286920091a50588713191623113a496989171d3a2f62f17edce395 +c8fc324e3bffc69a959882ffad3147434331453c392f413b444320132215 +1a181819181a1b1c1c1f1e1d1b191918153f774940626d6f363b3b45987a +48526a52444740425657584e6d95b6334068ff565addf99bff51392c8fca +fff7f0f88443423adaec55f79f53d7dc343f8aff6366616f86ff8d2a3f40 +52ab6b3d8d615d7f7a797a7a777675706c6b24222421232022202820231e +24241824281306070a10151336424d629caa9e6476909a9066738592926b +6d7985876e63767c8073533f4d6ca3c6beccb19d4e061a1d2b5c5d240a0d +2a8fc19060434d210a0f070410140d0c100e101514100f11130c0c100c12 +31571d21a2995608230b0d16030a1f16385c5b340f14021c130c2c3e5131 +0a181b0368a8171f0d1b35be01000d88380b0a2420522d0b0f0c3d141617 +0b1f56101308655d020d0400386c0d0f030d1827444b301f0b110f0c1a0f +16171b1c1915100f15120e101213110e100c0b1b03080c1a121211131515 +17101e14140f120c0e131004210f1311131e231b30eb001aa30000d96221 +21a2af019b9e003eea121c2ede2a00950900b09900136bc21e2a3a283329 +1b220478ac9dabb2d7de3b0e0f1e16161516151313130b230b080c081312 +1e09122d1e256e897613150e1527164c3e345045041103080c090506080a +06001a00170f026c7b4e62585d09040d0e366b4a4744464800081316455d +3c3a56410c120300659997aaafbe70011f0079c1c1bdc3b1ca530d14110f +0c0d13051514242c291a141a1d1b1d1d1e212123222122201d181b1a1a16 +5763354c423a050a122450684a425c583e111d1e2a412d4b4443603f051e +03868b0a0c46a9d73a1e1f090b1257a2d827065a3315d1b6eae3d3d8a20d +1f27dda7c5b9c5c0c66a1e10072e8b4e3fb58a9ed4d4d4e3e2dce7ded7d8 +d80c0d0c0c0b0b0a0b100b0e090f0f03152214121004040c0a2c2b213890 +a99b6378939d9369768998967271808c8e7567767a807657435473a7cac0 +cbaf994a02181c2b5c60270e143397cb9a6c50592a0d1006030e0f070307 +05070c0e0a0a0c0b040409070d2f571d23a69f5f132e1b222f1b1f312646 +6867401d2615312b1f3543583a1525281277b925301b2943cc12121c9341 +0f0c221d4f27060d0a3b121112061d540f140c69620a170e074375121206 +111f2e4b54392a161c1a17251d262a2e302f2d2d2d343130323536343234 +2c2429070303110c0e111313121215373a3c383b38393e382a4634363739 +4141374cff0e30b60a06ec783738bccb1db5b80555ff293244f44014ab1c +15c3b01a3086dc333c4b39443b303c1f95ccb8bbbee6ee5025293a323436 +393b3d3d3d31462e2e2f2a35333c252a4131367d9c933432292c3a25594b +43635d22342d353634302f31312a21370e2e21127a87586c6267130e1719 +417453504d4f5102132125546c4a4b68531f28190e7db1afc2c1d0831736 +1993dcdbd5dac9e16b243035393635392a362f3739301d12151712131314 +171b1d1c1b1e1c181616171511516141646968373737406275554d676b5a +313b3941543c5952506f5119341da0a01d1f59bfed5034351f21286ab5eb +3a19704b31efd3fffce8edb4223642fdc7e3d7e3dee48739281b3d924c36 +a57284b8b5b0bbb4aab4aba5a5a708080807070606060c0609040c0a0012 +2216100d06060d0b2d31324c9eb7ae7587a2aca2788595a4a27c7d8a9698 +7f7280858a7f604c5e7db2d5cdd9bda8591023243364672e171e3ca2d7a6 +7a60693914140b0811130b060a080a11120e0e12160f0f110e1332591d22 +a59d5c0f2a1a25331f223326476867401e2819342f253a495e3f1b2b2e19 +7ec1303a263450d7191623994a18182d2858310d120f3e1515160a205714 +180f6c660d191009457a18190f1a2736535b402e1a201c19271e25262c2e +2d2d2b2d3633323437383632322921290a0706140e0f11151819191b3b3b +3c3a3d3b3f4540334e3a3c3a3c45494257ff1a3dc51915fb864548cbd92b +c2c51363ff374052ff4e22b92b23d2c02b4297ed46505f4d584f434d30a5 +d9c9d2d8fdff65373a483e3e3d3d3c3c3c3c3248323135333e3c4630344a +383d82a29b3b3a3032402a5f5148675f24362c32322d29292d2e2a223b12 +362b1f879564766b711c17201f477b5a555254560717242859715355725f +2d35241887bbb9cccfde92244424a0e7e8e1e8d5ef77323c434744414433 +3d363e413622171919171b1c1d1f1f211e1d1f1d1c191c1e1c1755644164 +6868383c3f4b6e7e5b51696f653c454247583f5c5556765b24422cb1b12e +306acdfb5e42432d2f367bc6fc4b277d573dfae1fffffdffc8354853ffd2 +ebdfebe6ec8d402c1c3a8b40258e5861887e767e766b756c6a6c6f242424 +2323232222251d221f25251a29301707080c10120f3f47475794a59d6775 +8f998f667483928b66677581826a5e7b7876694f476fa2bfc9b7b9b48b23 +24292e15090b08111120800e0aa471755a0e130d060c0d0f12100e0f1412 +0f0d0f14110f1210162b433614a585740a191113081a06110a3e3e5e3e0a +202509021137394838160514002295959c84888372000d0051835f6c554a +4a380d0c163b363b392e3b5d0a0b0c2c7159615a3d4d4d0b030839584d41 +30393b1b0500041610141719181714121113100e0f10100f0e0e12131c0a +181614120f0e0d0f11120c1907100e0f150d0a191c1010161b191d28072a +ed6790f08f91f1740f039ce84cb8cb7172ee162b26ef9268ea8b4ec5bc08 +1043edbac0aac0b69e19100c246686a39f7a352116072219171412100c0b +0a110d0615250d0021121e0d142f2a6e615a0d1b14121e1b5a2b40715707 +1107091c202b2a1f212c2f05272f107bbe33858a264ea30c1215853c4081 +3029674a151748a12a8875155985062413a99462cc7e72c666262c0c867a +a6b5b5b64a232328192512042215291d2622150f161c191c1c1c1e1f2021 +2124221c19181918196349224f3e2d081e2227457c664a5a6e1f29081f2c +354f3d677d7ad5451e1087c019340d21ba58102b3be55017190a9fb22d41 +09a875111500669e1c290665b4a4c1bce0d97c4b0c33218e7037aba07ac1 +d2d3dce1dbe4dfdcdcdb0d0d0d0c0c0c0b0b0e090d0a1010051a2a1c1a17 +08040a072f2d213689a4986277929c9269778998926d6e7c8a8b73657b78 +766c534e76abc6cdb9b8b2871a1c242c13080a09141527881816b27f8364 +13140d06070806090503060b0c09080a0a07080b0b1129423715a98a7912 +211f281f321b23194c4c6c4c19323a211924403e4f412114231135a8a7ae +969a93840d260562906970574848350a09153a36363429395b0a0c0d3075 +5f6a634756560e060b3c5d5246354143230f080e201a1e23272b2b2d2f2f +33323233333332323232292a0e130d0b0c0d0e0e0e0e0f1338313937383e +353241423535393e3b3f462445ff7da3ffa1a1ff87251ab6ff68d2e28788 +ff2c3e39ffa579fb9c5fd6d1232d5effccd1b9ccc2ad2c27284488a3b5ae +8946332b213e37383a3a3a38373639352e3d4a2f1f3f2e392328413d7f75 +772e382f262f2a673a5389752a3933374b4f5a594c4b545528464a268dce +409196335bb0191f2292474b8c3b347255202558af399786266b97193829 +bfab79e08c7ed376394224a195c1d0cdcc5d353a4c404c37254030402e31 +29190f12131012121214191a1b1b201e1a17161615145d472c6462563344 +403d52866f5569833d49243a40485e4b728a89e75b352ba1d52c472034cd +6b233e4ef8632a2c1db2c43f5724c4922b2b0f76ad2c3e2085d4c2dedafc +f5976320412a906e309e8f65aab7b0b4b1a8aea9a8a9aa07070706060605 +05080208050b0b00172e1f1812090608053236304799b2ac7686a1aba178 +8695a49c77788691927a6d858280755c5680b4d0d8c6c6c0962b2b2b3118 +0d100e1b1e31932222bf8c906e17160f080b0c0b0e0b090b10100d0c0e12 +0f0f1211172e473b19ac8d7c1423202d25361e251c4d4d6d4d1c343d251f +2a4744554627192a183cafb3baa2a6a290152b0c6a99737c6455533e1310 +1a3f383a382d3c5e0c0e0f31765f6962465555130b104161564a39444626 +110a10221c1f2327292a2a2d2d3231323335353432302f272a1117100e0e +0e10101415181b3a303b393c443d3a494b3d3b3d423d414e2c4eff8ab1ff +afb1ff96332ac5ff76dff09596ff3a4d48ffb489ffac6fe6e2363f71ffe2 +e5cee2d8c03d35364f92b1cbc5a05a473c304a413f3d3a39373635393530 +3f50382a4a3a4430334b44877c7f353e362d362f6d3f578b772c39343545 +475253474954562c4b53339bde51a1a23c64b9212728984d51903f387659 +242658b23e9e8e3077a5274334cab381e9998ee385474f30aca0ccdbd9d9 +6b43485c515d47344b3b4836372f1c111316131b1b1b1c1d1c1d1d211f1d +1a1b1d1e1b614a2d656258394d4b4a629278596c8647563043474c614c76 +9090f168453cb2e63d583145de7c344f5fff743b3d2ec1d049622dd0a03c +40278fc443533194e1cce6e4ffffa06d2744298b62208d7b487e82787773 +676e6b6e707224242222212121201f1b221f24241d31351c0c0d1012110c +434845518d9f9b68748e978e667485948b67687783866d6172756e5a5067 +9dcacbc8b6a6b72532241a33220e0e110e004b5a0021800055c00c10100d +0b080e14100e0f13110e0c0e13131212141b23291420928a6a361f0c0118 +111519051c5954301c0b0b0c1b07265e4a3a140d120b4ac56d88a9001000 +0318008cac6d8e4d0a161200000c3d24364a2f041400150b18584d4d4803 +050b0e020026311d293b2341270502080f050e1011111211141311111111 +100f0f100c14141a0c211e1114120f0d0e0f120c2f141417091117150a18 +0b201510101b1c290099bcb4bf9e9eb84d171031b7cdd8c5afccb9352400 +84dcb3d7d5b9e78e001f299602000000000b0b1b1455ced3b0a288b54800 +131e171513100d0b0a0a0d0e0900142311101f1d0818112766733d041718 +131d2661484d644b0f00003a4020100f0d141200211606103aac8b9bbc8b +a8b52d1c0c5599548d6d71a372120029a45f639e674b982c150db59b62b3 +7e6dd19f28272ebce7e4b67b80611f271e1c6a758664553f171f1d130f15 +1b1b1a1b1b1c1c1e202127241d191717181a695f607f5039130d12627b85 +57566666202b2933334d5863656472e5781d3975e94c50511297b9242c1e +d85e25582f5de4492a2bd18d373e363ccd80411c092f70b2b48e515a530c +1c10868449a6aa68aad2d6d6dedbe1e1dbdad90c0c0d0d0c0c0c0b0a060d +0c11110a222f211f1c0c060904332e1f30829e966376919a916977899892 +6e6f7e8a8d746572756e5d546ea4d1cfccb8a6b521291c1531200e0d1211 +005263022e8e0366cd1111100d0603050b0503060a0b08070909090b0b0f +1621281521968f6f3e2717142c242728132a645f3e2a1a1d1f2f182f6351 +431f1c211c5dd87f9abb1220111c31149eba7a94510c161100000d3e2534 +482d041400160c1c5c51534e0c0b111103022934202e4028492f0d0a1017 +0f181c1f23262a2e31313335353433323433372d28101f15080e0e0d0d0b +0c0c104b3c3c3f30383d3b303d30453833333d3a460fb1d2c8d2b1afcb60 +2d274bd3e9f2ddc7e4d14d3a1297efc6eae7cbf9a4143c44b01703020a02 +1c1e333076f0f1c2b197c65b152a39353636363535343435352f1f374632 +2e3b381e2c233a77875a253431272e356e57607c69322527686e4d3d3c37 +3e3a22443523284ebc98a9ca99b6c33c2b1962a45f96767aac7b1d0937af +6c70ac755ca83e2721c9af76c58c79deaf3a3a44d4fffcce919674313d3f +418d96a3806d51252822140d1112101011111216181a1b23201b17151515 +1864606c946f5f382f2c74878d6164787b3b47444c465f6771737383f990 +375490ff62666728adcf3a4234ee743b6e4570f65b4046edaa5155484cdc +905636264c8cccd0aa6d766d242d1b8a844199975395bbb7afb0a9ababa7 +a7a80808080807070706050108060b0b041f33241d170d08070236372e41 +92acaa7785a0a9a0788695a49c78798892957c6e7c7f78665d76aedbdad7 +c4b2c22f3a2b1c342310121718095a6c0c37990e70d61513120f0a070a10 +0b090b0f0f0c0b0d11111212151c262d19259992724029191a332a2b2b16 +2b66613f2d1d2125361f366957482521282364df8ba6c71e2f1d23381da8 +c383a05d1820190705114229374b30061602180e1d5d52534e0b0b111608 +072e392532442c4c32100d131a11191c202325272d2f3032353534333434 +30332a281322180b100f100f121316194e3c3e41353f46443946384b3c37 +353f424e18bbddd3e0bfbfda6f3b375ae1f7ffe9d3f0dd59471fa5fdd4f8 +f5d9ffb2254c55c12a15151d152c2d3f3c7ff9fcd6c6acd86c2338443d3b +3a3735333232343430223d4c3b3846432b372d417f8e622c3a382e353a74 +5c64806b342427666b483839353d3a23483a2b3259cba8b6d5a2bfcc4332 +216aaa659d7d7fb180210b38b37278b58066b54a332cd2b87fcf9989eebe +484851e0ffffda9ea3823f4b5053a0a5b18c795b2e2f281810121516181a +1a1a1a1a1c1b221f1c1a1a1a1c1d68626c9571623e383982979a6a677a7e +46534f534d636a7276788aff9c4665a1ff70747536bbdd485042fc82497c +537eff654b4ff9b862675e63f3a76947365a9adbdeb87b827a2e341d897c +368986386a878074726a6b6d6b6e7025252222222121211f1a2220232120 +39351d0d0f1316140d4046434f8a9c9967748d958d657585938a66687784 +866d6168746d5d6d9ec3c8b6c8aab951012b1e222f211e1f110e04295272 +719c98af7a0c090e130f090d0e12101014120e0c0e1015121015201f188e +6c77a490a3e0a6041600c4d0b655554924061b0a14a857353153959d170c +0257da3e55eb5d693d140005ce92185fb10b3a1714131b762e1d44390a11 +0b1d043d3f10144d26190a050b16312a112a48194129090e0d0b060a0b0c +0b0c0d111210111414110f11130f14131c0d1f1c13151412101112130c26 +590c256b3b041e4b0b1020110d10180e1b00cbad6fc7ac00000a1d0f3ee7 +84a0d435001e511c1294e89ab0e9adb8710d2d03a8ceac6d89adb0150720 +37a1090edc899970071f0d100f0e0d0c0d0d0e140a1b210a001b120c0d37 +21113c807b380a1218171e294f353b7d560331471c0f040d110208181400 +1b15150491a98a80200000000934486963552c001009222169787258561a +1b370b1d373d87826d5c212740241657927d33a1c6a68f05000052bcd2d5 +a4a935151b1b1513171e201b1c1d1d1c1e212429251e1a1614181e3c323e +6074bbaa75193c355a5a6157501d1324373e52485e6076adc16e09151b98 +e1cceabd969025320a50b0cfc8b9b2da343a1743c3bde0e3b1d95b213734 +c9edbeb4a8ada8245a3c25301e49b49b4b90d2dad4dedee2e4dad9d70d0d +0d0d0d0c0c0c0a070f0d10100d2b3022201e0f0a0c05302c1d2e7f9b9462 +7690989068788997916d6f7e8b8d74656874706071a2c7cfbacaaab94d00 +25161b2a1c1c1d100f09305d7c7eaaa9c087110a0e130a0404050705070b +0c080709090b0b09101b1d168d6d78a894a8e5b013290ad3dec15f5f532f +11291926bb663e365a9ea8261b136aed5067fd6f794f2c1b1ce2a32669ba +0f3e1a17161e7b321e44390b110c1e0541431418512a1d0e060c17342d14 +2d4d1e462e111615130e14171a1d20262b30303338383533343736372d2c +121d130a0f1010100e0d0b0f3e7c2f488d5d2943703035453430333b2f39 +1ce6c587ddc212142034295affa2bbec4d0e36693228aafbadc3fcc0ca87 +294d1fc2e3bf7e99bdc2281f3c55c2251fe998a9811a35252d2e30313334 +36373b313e442d18392e27254b35244d8f8e55282d312b2f385e47509675 +295b754c3b2e373b2c32403a1f3c322e18a3b99a91310a0c0f184355746e +5e350319102b2b74817d6263262745192d484e98957e682a334e34286aa8 +9349b4dab8a115130f76dbeff1bcbd461f221e140e111515111213141618 +1b1f25211d181412161c3c384c7592dac8902c493e6264706b68352a3a4b +4f61566c6e85c0d886253238aff7e2ffd3aca63b482066c6e5decfc5ec47 +50325fe1d9f7f5c1e86c365150e5ffd4cdc3cac841765334391f40a48535 +7dbcbfb1b5aeafb1a8a8a80b090a0808070707050109070a09072834251e +19100c0a0333352c3f8fa9a876859fa79f778795a39b77798893957c6e72 +7e79697aabd2d9c5d6b6c55b0b3323222e201f2215140f36638586b3b1c8 +8f150c10150e08090a0d0b0c10100c0b0d101312101621221b92717cab97 +abe8b21a2f0ed8e1c361615531152c1e2ac16d453c60a3ae2b221a71f45c +73ff7b885d362224ebad2f73c31847211e1b237e3520463b0d130e200742 +441519522b1e0f0b111c3932193251224a32141918161115171b1d1f232a +2e2f3238383533363733332a2b1520160d1111131215141618427e334c96 +66324c79393d4b3a34353d344124efcf91eacf20222e423868ffadc6f859 +1a42753f35b7ffbbd1ffced895375a2dd1f4ce8ea9cdd03629475dc93031 +fcabb99128422f33313231323132333a304046311f4339322f563e2b5596 +955b30343632363d634b539a772a5a754c3a2d363a2b31403b2341383523 +afc6a79b391214161f4a5d7a74653c081e16302d7686816b6b323352263a +5258a09c867639435b433478b3a054c2e5c6ad24221f86edfffdc8c85028 +2a25191415181b191a1b1918181b1c24201b1917171b213e384c7694ddd0 +9b3a594d6f6d736c6a3f3845545766596d718ac6e092314046bffff0ffe1 +bab449562e74d4f3ecddd3f64e5b3b6bece7ffffd8ff8049605ef3ffe9e1 +d6dcd74f815b39381a3797781e558b8a77776e6e726b6e70232323222121 +2020211c2421211d2241371e0d0f1416130b384243518c9c9764758c948b +65758490876365758183695b6f6a6778a1c5cdc2b4acbd71050e0c1b171b +0b111202050700000b0000040009210d0a120e0a100c1311121614110e11 +1113100d14221f148cb045539a0069e00c1e0fed522a374873b244302133 +ef0b1c424639e6381b27308b8b79ad96b4a7001c107cab9c838991944315 +000871405c594d3c320703000848482e44303b32090f112a37343e3a2b3d +1a050e08090f0a0a0a0908080c0c0c0e1112100f10100f111a311e1d1517 +141413131513120b6de80f13b9600255d70b160e0f1b1a13231908deb16d +bbd58a9451140d42e7726febcc728738191cb2c0688fd97c611c09210970 +b1e1f1edc96b1d181b4aaf3c32912a62e70e0b160f0d0c0d0c0f10111d10 +05110a339a2c0e83a52a232eab9a3415141d17182c4630537c4015271800 +2f2d3b43332e353539303c2b42e17c20a8b11e26361f2373a1162b973911 +391d186490530f607a001c26304a5795131b7a2a253c3d4d71aa71007398 +5fc27f1b2000103b3f243e0512181a1615191f221c1e2122202125282a25 +201c16121922242e66773f374f8525432f21346c69514648233448415c41 +5656301b10274941c1ca99c582161d22294067b46b909410002438311ec9 +9dadb561491d35784a8b93006ad6b6c9280b4e523d0b51b7934174c2d7d3 +dedee3e4e0dddb0e0e0e0d0e0e0d0d0e0a1310100e11363223201e100a0b +0328281d30819b925f778f978e687888948b67697985876d5f6f6a6a7ba4 +c9d1c6b7afbd71020b06131115050d1001060c0204160608150818260e0a +12090507030806090d0e0b090c0a0c09060f1d1d128bb146579e016ee819 +2d1cf85b343f507bba4c392c40fe1823474d42f1472a38439e9d8bbfa8c4 +b90d372893bdad91969a9d4a1c06107948625d5140330b07040949492f45 +313c33080e102b38353f3d2e421f0a130d0e17141518191c20262a2c3035 +363433343738353441231d0f0e0e101111100e0a0b80ff2e32d77e2275f7 +2d383134414039463a29fcce88d3eda2af6b302b62ff928bffe78da25331 +34cad67ea5ef9274342741258ac8f4ffffdb7d31313669d059449e3a72f9 +22222f28292a2d2e323435413427332950b5442497b93c343fbaad4f332f +342b293b554268955f3b5348305855636b5b565d5b5c51594759f58e32bb +c4313949303280ab2034a040183e24206e975c18698205252f3c5663a221 +2882322e484b5e81bc830985aa6fd38d2d3c1f2c5556374f121b1c1a140e +101417131518191a1c202326211f1b141017222838768c59506599334c35 +293e7e7e695a5b3545574e6a4f646845342b456b61dbe1b0dc992d343940 +577ecb82a7ab2609354e4c3ae7b9c7c772582c488f64a5a70780f0d5ea4c +2b6a67490d4aa67b2b64b1c0b4b6b2b3b4b0afae0d0b0d0a0a0a09090a06 +0c0909070a3236261e19110c09012b312c4191a9a673869ea69d778794a0 +967274848e90766879747384add2dacfc0b8c77b0d16121e1517070e1306 +0a1005081a0c0f1c0e1d29100c140d090c080e0c0e12120f0d101113100d +1523221790b54a5aa10471eb1f3422fe603642527dbc4f3e3246ff202b4d +5347f74c313f4aa5a997cbb4d3c71740329bc7b59a9ea1a4502209137c4a +625e5241350c08050b4b4b3147333e350e1416303d3a44423346230e1711 +121a161719191d2025282b2f33343433343634313140261f111110111414 +1715151586ff3337e1882d80ff3741373a44413a4a3f30ffd691dff9aeba +783c366dff9d96fff298ad5e3d40d6e38bb2fc9f8240324c3197d6ffffff +e9893c383f6ed55f52ae497fff2b2a342d2c2c2c2d2e30313f3429352e56 +be4e2fa2c4463c47c1b3563b363a3230405a466b99613c544a325a57656d +5d585f5e60565f4b61fe983cc2cb384050383988b4293ba74820442a2370 +9d6121728f11343e48626fab2a318f3f3d5458688ec68f1291b47cdd9a3b +4a2c3a626445591b242522191515181b181a1d1c1a191d1f231e1b191513 +1a242737758d5a5570a4405b453447807f6b6569414d5e546d52676c4a3b +3450776eeaefbeeaa73b42474e658cd990b5b933133d595546f2c7d6db86 +6d3f599d71b4bf2098ffeafd5c38756c490a429c711642858e7d79717174 +7274752423232321212120231e25201e1c254d3c210e0e13151109323f44 +548e9c9561768c938a6474828d8864667581826759725b6297c3c8bfbfb6 +ab97061401100f06150e0e130907000e14050e0d191d393e16080e080814 +0f12111216151211131213100d1420201a419d4d498539956010250e9e38 +1a5a58515627191400a1bd76406fb0a1140f021300000800000200150c07 +00100000090200130e0e091405070000020500060d0a1e1410261a12000e +0e0000101f2d21171d05040f04050b0b0c0c0906050708080a0c0e0f0f0f +0d0c0f203f2c251617121313111312130b49ed6991eb9c5d77e9001d0a11 +1a14131220006496a281b496cb510b270e81b6a991b2c5c52d2d0d5abdc3 +bac7a8caa90d2a1b71a83d0002619834283100728b8e94a3a289081c0913 +110e0c0c0e0e101433261f2375e71147f0773d321f584b1e161621181740 +5636406246361e184b322110111a1812131a12353014b9ecd1c3eebabc5e +384d428c7176949b6f744f37926687657ab68378791f3a6f8a666b948175 +7b1f294a83897896aaabf4ab121828c287afb7a71e1216171515161b201d +2126282525282c2a2623211a131b28213f697097d4c6bf631f2a4451547a +dce0d5b4433141696267b2cca36d163925c9ba3592d8794a38473959c21c +32b68254342a431be47d23b7b26c455d8367b3b22464750e9ea00c194278 +4359b3a85658a8ced3d9dae3dfe0deda0f0e0e0e0e0e0e0e110c14110f0d +16423726211d0f09090122251e33839b905c788f968d677786918c686a79 +85866b5c725b659ac6cbc2c2b9ae970411000a08000c05080f090801161e +101d1c2d314b4317080e03030b060706090d0f0c0c0e0b0c09060f1b1e18 +409c4e4a863d9965192f17a7401f5f5d555b2c211d08abc67d4576b9ac23 +1e13260d091a110412102d272213240e0a180f071e1919141f0f0f060408 +0b040a110b1f1511261a12000d0d000011202e221a20080914090a101316 +17191a1d2125262a2e323333333435363d523425100e0c0d0e0f0e0b0909 +5aff84acffb87995ff1c3f2c36423c3b38432085b4c09dd0b2e76f294730 +a3d8c7adcee1e048482872d5dbd0ddbee0c42b4b398ec0530a1673ac4b41 +4d1b91a8a0a2b4b39b1b30212b2b2a2a2a2c2e303453453e4090ff275bff +894e4330675e37312f382b284f6849587e685e4a487859463536413f3939 +4035544d2dd1ffe5daffd1d0724b5e51997b7f9da27379543c9a6b8e6c81 +bc8b7e812742779370749a877d852b3758919a89a7b8b9ffb7223044dc9d +c2c7b427161614100b0d101514181d1f2020232727232220191119292c4e +7c84aae7d7cb6a252d4a5e6692f4f2e5c2513e4c747076c5e1be8a365d47 +e5d14ca9ef90614f5e5070d93349cd986545415e37ff993dc9c179526e99 +7fcac434788f2ec3c5323a5b864852a2903f4b9bb9b8b5b1b6b2b2b2b00e +0d0d0d0a0a0a0a0d080d0a08060f3e3b291f18100b0700252e2d4493a9a4 +70879ea59c7686929d977375848e8f74657c656ea3cfd4cbcbc2b7a10f1c +091610000d080a100b0a04182012201f2e324d46190a100707100b0d0c0e +12131010121213100d1521231d45a1524e8a409c6920381eac4323626058 +5e3024220fb4cd854b7cbeb228251a2d1415261d10211e39302b1d2d1512 +1f150d221d1b162111110504080b040b120d211713281c14041313050516 +2533271f250d0d180d0e14161819191b1d202326292d30333333312f3139 +50362712110e0f12121513141461ff8bb5ffc385a0ff2749353c443e3b3b +47278cbcc8a8dbbdf27a34523aade2d1b8d9eceb5353337ee1e7ddeacbed +cf35524396ca5e151f7db55346511f94acaaafbebda52237252f2c2b2828 +2a2b2d315247414497ff3266ff93564b376c643e38363e312f546c4d5a81 +6a604b4a7b604e3d3e48443e3c4339575132d5ffece0ffd7d779526558a1 +8486a4aa7c7f5a409d7196768bca988e8e344d829c797da6958a91374263 +9ca493b1c3c4ffc32f3c50e9aad0d4bd301f1e1b1713121619191b20201d +1c1f23221e1e1c17121c2b284b7a83aeede1d97a333c56666a92f6fcf2cd +5a4652787379c9e6c592416953f1df5ab7fd9e6f5d6c5e7ee74157dba56f +4d496742ffa74cddd48c637ea68bd8dc4e91a643d5d53d435f86444a9886 +2d2b718a83797175717475742626232322212020241c241f1c1c2b593e21 +0d0d1418150d324047568e9b925e788b928a6473808b8b676a7984836859 +636381b4cdc1b4b6adaf27070b090e0a12210e040a0b140d000006130002 +22294313060f07071510100f10151513111413131212151c1f21102e224b +650610101c2f00262e1c414360131e0a302404293646597103131e150c29 +11232b152327171026040819210219022011180f010f040c17140e110600 +0c0400110a010a1704130d0e0f101a110003000b11080c060b0c0c090706 +070607080a0f131413100a0e183123291d17161512101112161218b4aad5 +d3d0dbc4b5001d1216150514180d1d1600200900000d0e1a15071707070a +00001c010f25212a0a000506140019281d2920181d1f08161721351f1202 +0b0a0909002317131714110e0e0c0d0e0d100b120430f0c3d7e60015294f +545d202015231d1e4b563f20744d000e3c0c000e08071004001a0233393c +11344215040e00216242525594340a0014062e6d1a9a252f1300150050d7 +343b711016191225306c2a3e8253102000172f1809151c14bd4728153500 +141617161414181d1c232a2c29282a2d2c2928281f17202d343b6169643a +40bfc943483a4e5162b56c86ed655b64504e5476dbd6af4b4f3250beadc2 +b4b6d5963e3c1491946b8d9aa7b238330e6dbbcfd4dacdd18f713e15c3cf +c4c5b7c3600014104a204cbeb556438cc1d5d4d6e3dae0dcd90e0e0e0e0f +0e0e0e120d15120f0f1e503926201c100c0d0522262135839a8d597a9195 +8d6776848f8d696c7b87866b5c636381b4cdc1b4b6adaf26060806080307 +17050006091411020812231016363b4814060f02020c070504070c0f0d0c +0f0c0c0b0b10171d1f0f2d214c660711132033032b311f45476117210d35 +28082d3a4b607a0e222d261f3c23353d2733392f2b411c1f2d35152b142f +20271e101d1016211e16190b01100500100800081503120c0d0e0f1b1200 +06000e140b110b12151718191b1f2325282c3135363534333535442b2917 +0e100f0d0b0a0b0c0f26cbc0ebebe7f2ded1143d343b3d2e3d3e3340391c +412a150f2e2f3b372939292528181b391e2c423c45250f1d1e2c1837493b +463b3134361c2d2e3a513d311e1e181a1a0f362a282c2c292828292a2b2b +2e292e1d47ffd5e8f70e23385e636f373729362e2d5a685238906f1c3c6c +39242e28293529243f28565b5b2f505b2e2029193a79566566a34114071b +0d32721f9f28331701180353dd3a4177171d20162b367432488c601d2d0c +243c251323322cd35939223d031413120f0a090d12131a21232423252829 +2627271e161e31434e747b734748c2cb454b405b637aca7a90f76f666f5b +5c668bf3f3cd6d75566cd9c8ddcfd1f0b159572facaf86a8b0b8c34f4e2c +8ed9e9e7e9dade9f85542bd2ddd6ded8e88a23372e5d2745ae9a3f3a84b2 +beb4b0baaeb4b3af0e0e0b0b0b0a0a0a0e080e0a0707164b3d291e17110e +0b03252f304693a8a16d899fa49c7685909b99757887908f74656f6f8dc0 +d7cbbec0b7b92e0e110f120b0b180600050a1412020912231015353b4b16 +08110606110c0b0a0c111311101313131212161d2224143226506a0b1518 +293e0c313624484a651a26123b3113364351667f1427342d26432f414933 +42473b364c2627343c1b2f1632232a2113201017221f181b0e0413090415 +0d040d1a0918121314152017050b05131910150f181a1b1b1b1c1f212527 +2b30343534322d3031422d2b19111211110f1213171a2fd3cbf6f7f5ffed +df1f483d413f303f4136443d2146311c18373844413343332f3020234126 +344a454e2e19272836213f4e434c42383c3c2333343e543f332125212221 +163c302b2f2c292525252627292e2931224dffdff2ff182c3f6368733d3f +323d35325f6c563a93711e3c6e3e2d3b33333e312a452b5a5d5d31515f32 +243020417f5d6c6eaa491d1023153b7823a32f3c220c271162eb484d8321 +25282237427f3d5296692636152d452e1d2e3d38e065432b480e1e1c1917 +120f1318161d2424211f2122221f22231c141f30404a727b784f53d1da54 +5a4c63677acd839aff786c755f5f6a8ef7f9d577806278e4d3e8dadcfbbc +64623ab7ba91b3bbc2cb57573697e4f6f8fcedefae905f38e7f7eef4ebf8 +96293b2e59203ba18f2d1d5f878c7b71786d757573262626232321212024 +1c231e1c1e2e613b1e0a0c151c1b14354348578d99905b798c928964727f +8988646775807f6555527eafc7cbc4b7aab36c090f0a10090d0b14080d12 +0304030a071804202a180f340804140b07130c0e0c0e1414121114141314 +1717191d241c0c65569c2c0a0c1f2017150f1749634d1c1916211c251730 +5c6c3f1d231d152012170e2c2d032635421c121819001e0e17180c19090f +071600020b030305150c0e0b1d091b14010c150c11131526250e0e070b06 +09190f0a0b0c0a080707060a0a0d11181a18140a0b0a150d2722161c1913 +0f10141b1a20c9cac6c6e2c9ae9d0c0f0f1d1f01141b0a121f2a1c220f22 +09111d132b1626221223121019272834413b2b28231f1c12311f251c290e +0e1a16142c2c18222b12120f11180e0a211715130f0e0e1111150e131f14 +0c978c4a34182134455c5d43371722231f42383a3b4e1d2a4d76a3959f8b +89965f14041a0f493f266f571c140d12216e5e46458a220b140b2320813f +5f6b1d201016097fcb39516a251f04160b44551e37903118141c1205141b +100c0371bb8a995e18171919191514181d1c232b2e2b292b2d2d2b2b2d24 +1b24323452666cd4f9defebf214b445a536edbf7e8f95f5d4f736a752960 +63113b2651041017022a5c12213e3421040208093a030041370c07000e2f +450021696c2009030b00000000001718154c225fc29c4e387bbbd9d3d4e6 +d9e3e1dd0e0e0e0e0e0e0e0e120d14110f11245a36231d1b1110130c2529 +223682988b587b92958c6775838d8a66697783826555527eafc7cbc4b7aa +b16b080e070d0306000a00070c02040710112412303d2c1f3a0904140602 +0a030301050b0e0c0c0f0d0c0d1012141b221a0b64559b2d0b0d1f201715 +10184a644e1d1a17211c251a3361734828322c26332529203e3f13384c5c +362a30301836232c2c202d1d2219260d10190f0d0d1a11120c1c08191200 +0b140b10121427260f110a0e090c1e14111417191a1c1f23282a2d333a3c +3a383332272815271c0d16130e0a090d11172dddded9d9f8dec5b7282f31 +44482d40433035424d424534442e333f354d3b48433341332e374545515e +5846433e37393354404439452726322e2d4648344047252420232a201d35 +2c2b292827282a2c322b2f392c20a89d5841252e43546b6f564a2833322e +514a4d536b3f527aa6ceb6bca8a9b884392940356c61468d7338312c2f3c +87755a589b31181e142c278544626e2024141a0c82cf3d556e2924091a0f +4a5c2440983a201e261c0f1e251e201a83c997a262181413120f0b090d12 +131a2226262426282a282a2c231a22364469797cddffe0fdbd204d4b6765 +83eeffefff6664587e78873e798032604c76222b321d45772d3c594f3c1f +1d232452141055522a280d2a45550a2d777d341d101810160d1b21403f34 +5f2a5bb285393278afc4b5b0bfaebab8b50c0c0a0909080a0a0e080d0907 +091b543a261b161212110a2832314792a69f6b8aa0a49b76848f99967275 +838c8b6f5f5e8abbd3d5cec1b4bc73101610140d0d040b00070c00040610 +1024122f3b2a1e3a0b06160a060f0809070a101210101314131417181a20 +271f10695aa0310f12292a1f1d151c4e6852211f1c29242f233a67794d2e +37332d3a2c352c4a4b22465a6943363a361c38242d2d212e1e261b260d10 +190f0e0f1d141510210d1e1704111a1116181a2c2b14160f130e11221817 +191b1c1c1d1f2128292c32393b39362d2d232617291e101815120e11151c +2236e6e9e7e8ffefd5c6363a3b4b4c2e414533394651454b3a4d363c483f +5744514a3a493a363f4d4d5966604f4c474141385845473d492c2a363231 +4749354048292827272e2421362d292725242526272e29303a3027b2a763 +4a2e3648576e735d51303a3733564e51556f41547daad5c5ccb8b6c48d41 +2f43366e62458d743b353135438c7b615fa23820271b332f8e4a6977292f +1f261b91db496079322a0f251a56663049a3432b27302519272f2729228d +d4a0ab6d221d1d1a1813111318161d232423202022232125272118233541 +63777ce2ffecffcb2e5a556d6984f2fff9ff6e6c5f827b8b437e86396855 +7f2c363d2850823847645a472a282e2f5c1e185e593231183653651b3d84 +873d28212b24271c2627423e2f591f4fa37526185989957f727c6a787877 +2b2c2c2c2b272421281c1d2620192b64381e0b0a10161916284c5055929c +8e657b868f8b6170858f835f69787e816a545b84c2c3c5c3a6b4860f050f +05130b0f11101011100805030307172127180716140a050a0d070a110f0e +0e131311111415171615191f211d19162f4a742819151e101318100d8771 +561f372d13251f1b4a887c39163a2f21191c1884ef2a1bddddbde345071b +0a1e0b1518100f13140f0d0e100e0d09080708060711161209040c0f0e0b +101e23200e0d0d0c0c0d0e0f060e0b070c08020604070712140f140e0c19 +0f00132e2a1a1812160a0c18161748e4914466e665313a001c1707181107 +1114181c1f1d1a15111719161a23221a1f1513191c1719232828252d3528 +17141236292027180f131010172224201d2115120f0e0f11111117101917 +111a17120a0d0c141a1df563102f1e1b16544a6688f42a36341f4537363b +543c3501447168d3c860786214081417353c293b3c0c1a171e286d52616a +8d320919161b476f5c8c783b12101c106dca4c80722b081c1a2142371e2c +6038171513101012151522009d9200020f12151717171616191b19212a2e +2927282a2e2b29262a251e2c1c2c655621130d181425332e4e4b70001a18 +1628515144616437327c522c3e671c2b211f32562d3f45321a23211c3e44 +2432371e19110d435f4422617160161f2524211d17141213111c191459b2 +9647395fa8d1d1d7e0d5dcdbda1213131514131110170d0e17130c205c33 +231e190c0a110e18322a34879b89627d8c959164738791856169787e8168 +545b86c2c3c3c1a4b2830c020c0211080a0806070b0a0705070910213037 +2b1a251a0b050a080201080403050a0d0b0c0f10121110141a1c1b17142d +48722718141b0d12170f0c8671561f362c12241c194d8d834221493e322c +2f2a96ff3c2beef2d4fa5d1f342338232d3028242829242120201e1b1713 +11100b0a12171108030b0e0d0a111f242111101011111213140d1716141b +1b1a222227273237323431333d29111b2e2411120c110807110c1555f8a3 +5677f9784651063a392e413f33393a3e424545403d363e3e3b3f48473f42 +38343c3d383a414646434a5245323133594b3f46362b2c292a313c413d3a +3b2a262222232525252b242d2d27332d2b242724292d2eff701a39282523 +62597597ff3743412c53464953715e5d2d719c85ece37d9884392d3a3d5b +604b5b5c2c3b383d478a6d7a81a1451a282325507861917c3f1614201471 +ce5084752e0b1f1e25463b2233673f1e1e1c1b1a1d1f223513ab9f02060f +0f0f10100d0c0c0f1210182126242223252b28282529241c302f43786126 +130a14102337375b5d8412211b1a2d56584d6f764c4e9b7551648c3a473d +3b4e72495b614e363f3d385a5c35434b3737322b5f75562f6d7d6e293231 +32333538393b3b353a2d1c56a58135375f9fc0b6b5b9adb4b2b20d0e0e0f +0e0c0b09100607100b041a5937261c140d0c0f0c1b3b394597a99d758c9a +a39f7382949e916d7584888b735e6792cecfceccafbd8c150b1309160f10 +0b07080b0a050506070d202d342716221a0d070c0c06060d0a090a0f110f +1013161817161a2022201c19324d772c1d1a24181a1f15118b7358213b32 +1a2c272454938947274e4539333636a2ff483afeffe4ff6929392739232d +3028272b2e272220201e1c181513130f0f171c170e091114131016242926 +1615151515161718131e1c1a201f1c232024242f332e312d2e39260f1d30 +2614140e150b0e1917205effaf6487ff89576115454335453f34393b3f43 +4847433f3c43464347504f47483e3b42443f41494e4e4b525a4d3b39385b +4d4249382e302d2b323b3f3b383a2b272623242626242a232c2a242f2a27 +2124242c3335ff792443322e29655c789eff404b473256494d5575605f30 +76a395fff68da58e41333d3e5c604a5a592b403f424c90747f87a84c212f +2b2e597f67978548211f2c207dda5c8f7e351226272e51442d3b71472825 +25212323282a3b1ab4a70b0f19181918181614141717131b2224211e1d1f +2421232027221d2f2b3d76632c1d15221e30424061618514292423335c5e +52727a5152a07b596d9544524846597d54666c59414a484365663f4b543e +3f39356a82643f7b897730393d3f4141413f3d3a3132220d45926c1f2245 +7e95817878686f70743231312f2f2c2825292022231d192e5f351c0c0e15 +1a191324474d56929b8e627a868f8c6170838c896467757f7a5d526eaac5 +ccb8a9b9a038010f10010a0612110f0f100e08050607161f1a11090e2b24 +150a0c120d0d10110f101514121215141616161b2326240f1536495d1918 +151b1616160f134c4b4a1c39331a271c15235b66390f3b3c181a1b0693d7 +0363f10c00e5901a002203141614100c1013140f0f101010111011110e0f +11120d0d0e090d0d090f191f180e0d0c0c0d0c0e0d0e110c070902010e12 +0b050a0b0c130e071109072a483d2614101b151219161f28c1dbd7ccecc7 +c3c7241919100a030d15171a1e1e1c16121213110f13191b192015111515 +11131c25221a191f1811150f32261d26160f120f0f131c1e1d1e241b1814 +110f0e0c0a09151a111715190e12100a101211b4330331271e2b84858d4a +9d1e262825372e7b735f281b003c7c52d6d8978d883643423e463f303f4b +343a3028346e4d52387a2922351a26422f343a53151d1c191a2674153351 +28231121192c2b2a395010232121201f20201e170f65d57f211a07151818 +16141414161a202629262525262b25202126221a1e2754826b2d2524232f +2b2537688385262026203c46484f71683d3a442d406082212030347b6d49 +334a37181e1f4f909e474a43291e142065504a3394ad61172422211d1a19 +1613151e262d1769ad933c324d91c5ced3dddbd9d8d81716161716151412 +160f1114100c235530211f1d110e110b142d2735879a895f7c8c95926473 +858e8b6667757d785b506eacc5ccb6a7b69d35000c0e0008040d0806060a +0a0605080b1c292620191e372a160a0c0d0804070604070c0e0c0d100f11 +1111161e211f0d1334475b171612151010130d114c4b4a1c373117211612 +26606d421a4a4b292d2e18a5e91573ff1f04fca832123e1f3133312a2628 +2b2c2425242422211e1c1b16141615100e0f0a0e0c0a101c201b11121111 +1214131415181514181519282f29252a2e2f33312e3423172f46371d0e0c +19130f140e1d36d5eee9ddfddad6dc3e363b3735303b3d3d404446443e3a +393a3836383e403e453a34383834363d464338373d362e343255483f4535 +2d2e2b292d363b3a3b3e302d28252322201e1d292e252b2b2d242b291f24 +211ebe3b09382e273692939b54a6272f312e423d8d8b7b49401e69a46dec +f1b2aaa8586867646c6654636d565d534b558d6a6d54914037482b35513c +3d415a1c24231f202a781937562d2616261e30302e3e5415272828292a2b +2b2b292172e0832417010e0e0e0c0a0a0d0f11171d202120202128221f20 +252118223a6b92752e221c1b2c2b2940759294312327203f4b4f587e7951 +55634f6586a7423c4c509789654f6653343a3b6bacb6585857423c353e81 +665c41a0ba6e28362f303033363a3a393f403f2066a1812d33508cb7b7b3 +b7b3b1afaf0e0d0d0d0f0d0b0b0f080a0d08041d5334241d1812100f0917 +36364697a89d728b9aa3a07382929b977273818883665b7ab8d1d8c1b2c1 +a63e051313040d09110b07090a0b0705070a1a28241d161b352a180c0e11 +0c090c0c0a0c1112101114151717171c2427251218394c601c1b191f1a1a +1a12164e4d4c1e3c361e2b221d2d667347204f5230343524b1f52182ff30 +17ffb43c1641202f312f29272c2f302523232322211f1e1d19181a1a1513 +140f13120f15212520161615151617171a1d201c1a1d191b292d2722272a +2b302d2930201632493920100d1c16161b19283fe0fcf7edffebe7ed4d44 +453e3b333b3d3e41454846403c3e3f3f3d404648464b403a3e3e3a3c444d +4a403f453e363934574a4147372f312c2a2c353938393d312e292624231f +1d1c282c2329282b21282620252626c8461542382e3a93949e5daf303638 +354640918f7f4e46246fae7effffc3bab562706d676d6554616c5761594f +5a9270745897463c4e323c5842444762242e2d2b2c368324405c312b1a2c +24393637445d1b302e302e302f31312d2578e68c2b200b16171715121214 +16161a20211e1c1c1b211b1a1c231f192136659176332b2928373734497b +9797352a2c284651555d8480585c68586d8fb04b47575ba294705a715e3f +454676b7c062616049443c488c73684eacc3762f3a373736383a3a393538 +35310f538b6918213d6f908578766e6c6d713d3c3a393936322d27232520 +1b1a3a58321a0d121a1d19111f3f4a57929a8e5e7985908d626f80888b6a +64718070515b96b4cfcda1abb75406031b12030f08150f0d0d0f0e080607 +0c1e1c0c020110272a180b0c131110101210111615131316121516171d26 +2a28190d29455a282b191a18100e0c213347431d35311a231c1a28475a4a +172f3410191e102fb9d1cf6a005cdf0002301c0a18161516131112161212 +141414131314101112130f090b0f080c0d080f191b120e0b0b0b0b0b0d0e +100f0a0c0e0711292c14060402050701091207021e3932201b141b130a0a +0c1e1a1b2c688e99cdcec22c170e0d120b0b181d1d1f1e1a120d1c151111 +15171d2022150f10110f141e24221812151010180d29211b21151111100e +0e141b1e20241a171512100e0a070d13090923001417120d061313147115 +0b170d17296b6c8308320c1118292f2e7369411a180053c89d7da4bccea9 +05080d1b313b362715001111102c6257774caa330d1009558c5379649216 +150f1a3fb17e285b7a040c1f153d4f2d417e90271010111211110e0d0916 +056358121f1216171715111111131a1d20222121212126221c2127241e15 +0d6f9f7a17102832261c104272985d19252b234d443d596b674b562a2346 +58592f242a29663c433d3a31171d0f5d90823d3e37221101176159573987 +973b1b3223201b19191916142227391a7cae953a333d78bad1d1d8dfdbd8 +d721201e1f1f1e1c19151214110e0d2c4e2d1f2021161111090f25243687 +99895b7b8b96936572828a8b6a626f7d6d4e5896b6cfcd9fa8b14e000016 +0d000a06100907070b09060608102425160c0d1c312e190b0c0e0c070707 +05080d0f0d0e110d101112182125231408244055232614121008090a1f33 +47431d332f151c1414284c6153223e43212c312241cbe3df7a056ef4171a +4c3828363533332f2a2b2f2a2b2a2a282725241e1c1c1d171110140b0f0e +0b121e1e171313131313151515171613161d1a264349322624222527242d +3220102234291715101b13090709212b31427b9faadee0d7463430363f3b +394040434546423b36453e38383a3c3f45473d353637353a414745393336 +312f39304f443e4334302f2e2a2b3135383a3e33302b282624201d21271d +1d3712262b282318221e1d78190f1b111e34797a8e0f340e141c30383c82 +7e5d393b217eeeb78fb9d3e9c6272d324359635d4e392737363551857896 +6bc64f26271e6aa165866f9b1f1e182247b8852f62810c11271d45563546 +83932c1518181c1c1c1c1b1825106c5b131a0b0c0d0d0b0a0a0c0e141417 +191c1c1c1c231f1b2026221c191d83ab7f1409202a231f174d7da3661e26 +2a24504944647a7a627149446b7e7e50424847845a615b584f353b2d7bae +9a4e4c4b3b2f24387e6f694591a146284133302f31363736333d3c472179 +a3852d374376adbbb2b2b7b0b0ae1312101012120f0e0b0a0d0a0807294d +31221e1c17130f07122e334797a79d6e8a99a4a174818f9797766f7c8878 +5963a2c3dbd9aab3bb580a051d13040e09140d090b0c0d09080a11242415 +0b0b1a302f1b0d0e12100c0c0d0b0d1213111215131617181e272b291a0e +2a465b292c1b1d1b13100f243549451f38341c241f1e3052675828434a28 +33382e4dd7efee8a1982ff2524503b2834303131302e30332a2828282726 +25241f1e1e1f1a141418101413101722231b171616161617181b1f201c1f +221e2944473023211d20221e292f1d1025382c1a17111d150f0e122a353c +4f89afbcf2f4ea55423a3c443d394042444646423d3847403d3d4042484d +4d3f38393a383d454b493e383b36343e32504640443632312e2b292f3437 +393d302d292624221e1b20261c1c3611262a25201825242482241a261c26 +387a7b9017401a1d25363d3f8783613e412885f9c8a5cee5fad431353845 +59625c4d39263a3c3b578b7d9b70ca532b2d236fa6698c73a22627212d52 +c28f396a870f142920485c384c879a301b1b1e1e201e1f1e1b2814716218 +2113151616141212131418171a1a191818181e1a171c24231f1a1c81ab82 +1b112b352c281f5383a96d242b2f29554d4a687f8068784e4d738787594a +504f8c62696360573d433583b6a458555442372a3f867a75519baa4c2e44 +33302e313435332e36333a11668f6e1a29355f8a8c7971726b6b6e484340 +3f3f3c36312726281f1d1d475330190b111a1d1a121e38485a929b905d76 +84908d626e7e84866a636d7b645071abbbd0acaeb9620c0f0e180a0c1708 +0f0f0c0b0c0c070608121f1003070b12101a0f0709100f1111110f101515 +131216121516171d262a28220b2a56612e2f1f1a151012131d414546242e +25131b2327243b4048282d39371e1b0c93800034631200a67300100a1c13 +101720201410131615141311111010100e111311090607080c0d0b131b1c +110c0b0c0b0b0b0d0d0f0c0a1011081533370f0604030c0700000e0c0418 +3648502e1d1f150d111b34277eedeee4eaf1a932001f200b040910191d1f +201f1a110b201612171b1b1f281e140d0f12171e261e241f191a130f150a +221c1b1f131410131010131b1e1f1f11100f111211110e0b0f174875110e +120d0a0716141b3e1120130715245653691216181c24363f3c49784f0f11 +1e78e44700d0bf8ee18e001f292e3943311a1b0f141120312b5d2f35091c +250d3c67385f5d90190e06113193684c6f81211b041f313f333e4a5c2910 +111010100e0e0d0217041214160f171819181712100f101a1b1b1d1d1e1d +1c1e1f1a22221f220f17676b56161a28151b1a12556d91321825242a534c +325f544245531c2b435224252a28415122314126241724116e7b432f3e3f +2814061c503e4a6596863e2b2526201b1b1b1a18161b1f291c80b1903d37 +3366b0d7d3d4e0dedddc2927242424221f1b1314150e0e1039492b1e1e20 +1611120a0e1e2239879a8b5a798a969365718086866a616b78614a6eaabd +d0acabb65c06080711050712060d0a07060a0a0706091323160c10141c19 +1e1007090b0a08080604070c0f0d0d110d101112182125231d0625515c29 +2a18100b090d0e1b414546242c230c14192124404751333c4848312e1ea5 +92044473210db889152c263a3330353e3c30292c302f2e2c2a272422201e +1f211c1410110d1110101823211914151415151617161613111a201b2a4d +542d2424232c271f222c201019313f47281b1f160e121a383999fffff7fb +ffbb470d3c423331393e3f40424647423a34493f393e403e414b463c3537 +3a3d444c4147423c3b34303830483f3e4135332f312e2c30353839392b2a +292a2b2a27241f232b5c87232024211e17241d22401120160a1a2e626173 +1514161a24394647568b682d3243a0ff5c02e2d4a8feae19445056616b59 +4243363b3847565080505428394229588050716c9d261b131b3b9d725578 +8b2b240e2739473b434f5f2c1516181a1b1c1c1d12250f1a17150a0d0c0d +0e0d0b0b0c0d13121214171918171a1b1921201d20132577755711131e0f +1b1f1b607898351824232957513a6a63555c6e3a4c6577494648465f6f40 +4f5f444235422f8c995e404c514332293d6e565c72a08f47363336332f31 +3434312c2e2e331e7da881343c3d65a5c0b4aeb8b3b2b015120f11131311 +0e080a0e07090a36482f211c1b171310081127314a97a89f6d8898a4a174 +808d9392766e78836c5679b8cadcb8b6c16610100e18090b1609100e0b0a +0d0d09080b1524160b0f131b181f12090b0f0e0d0d0c0a0c111311111513 +1617181e272b29230c2b57622f301f1b161114141e434748263128141c24 +2b2c464d5639414f4f38352ab19e1053833624cc971f3029382e2b333e3f +343031312c2b2927252322201e20221e161213111515141c26251c171717 +171718191b1e1d1b23251f2d4e522b22211e27221a1e2a1f101d35424a2a +1c21181317224143a2ffffffffffcf5a1e4a4e3b363b3e4042444747423c +364b413e4346444a51483e37393c40474f454b46404039353c3149414042 +363531312e2d2e3437383828272627282725221e222a5b872320241f1c17 +25222a4c1d2c1f1320306261751e1f21252c404c4b5c916d353b4caaff6f +19f8e7b7ffb9234c5558616b5842433b403d4c5c568455572b3d462c5b84 +54756fa32c231b2545a67b5c7d8d2c230d293c4a3e47536431191a1b1c1d +1d1d1d1225111c1c1b111616171716131213141a17171717161513171815 +1f212023162576765b181b2719232522667ea03e2029282e5a553d70685c +627542556e80514d504e67774857674c4a3d4a3794a1654a555b4a3a2f44 +7660667ba9964c3a34332f2d2e31312e2a2a292a136e976e253534518594 +7d6f736e6e714f4c4846444038302927291e221f55522f180b0e161b1c18 +2235465d929c945e74818f8d626d7c82826c676b715c5889acd5c39dbf81 +03061a110a05101101090d09090a0a0707090c1d0a030d10180a09070709 +0c0a0d0f100e0f1413121114131515151b2326241c1749816d1f1b1f170f +1925211468484629271e1218262f57855b391e16131c15280fb18d026fe9 +0008b5aa091f1112120f131e1f1510121514121210100f10201711100f09 +0504060a0c0a131d1c110c0b0b0a0b0a0d0d110e0b0f0d0005203100000a +10231b0e030f090417344b5c5b443a24151416252c0239557ca0bbe0c93d +110712100a03151a1d1f1f1b130d170e0d1519191d231b120d0e12192027 +17201d1617110b110a1b16191b11150f151515171e221f1909090a0e1213 +1413110e114174130e0f0c0d0c170d17170d121e1809216e6c54291e1d26 +2c2b3a323d58302e3f376fe67067df3700a6c3374140333b4e412e3a3132 +2e36353965352b232b2917243b354a3a330915141620553731382c101e0d +172628213f4545141a19161414141618181626311f1e0518191a1a171411 +10131a1b1a1a1a1c1b1a18201a211714220a2f6657411a1c26161d160c51 +6183252e242641524d246653557c69213c5075171d1b1e3e4e2339473525 +11190c6d6928304944281921415c1b1e7f9f643f311e201c1a1b1d1e1d1d +1619141b71a57236322c55a2d7d8d4e1e0dedd2f2c282828251e19131316 +0d101045462a1d1e1d120f1410121b203c879b8f5b7789959365707e8482 +6a63676b565086abd7c39dbc7e0000100a03000b0d00090b070709090606 +0a0d210e0913161e100a080709070504060503060b0d0c0c0f0e10101016 +1e211f1510427a661814180d0512201c1268484629251c0b111c27578a62 +422925222d283b21c39f147ff90e16c6bd1f3b2d30322f333e3d322b2e31 +312f2c2a282725342b2322211b1412101211121b27241b16161515161818 +18181412191a0f1a3a4e1c1f2930433a2d21291b0c162e425355423b2818 +17162e4320556f91b3cdf2de572e293a3d3a313b3c414647433d37403734 +3c3e3c3e46433b36373b41484f3d46433c3a342e3430413c3f3e34373134 +333133383a3733262627282c2d2c2b26232555862520211f201a22141a15 +0b101c180c297a7a5e28161720292b3f3b4869474b5d5995ff8276f04917 +c2e15966675c64776b57635a5b575f5c608b5b4e464e4b39465a53624d45 +1b2625242e62443c43371c281921303229444a49181f1e1e1e2022262828 +25323a201c000e0e0f10100f0e0f101311101114161515141c191f151220 +0b3b725c4013121f1320201a5f6a86222822264156522e71626893823e5a +7297393e3c3f5f6f445a685646323a2d8e8a43415757443844647a34308c +a86b483b2c33312e2f31322f2b2122161a6d9d662f3b375697c0b9acb6b3 +b3b116130f1012120d0906080f060c0d45462e201c181311120e15242f4d +97a9a36e8696a3a1747f8b918e77717577625d91b9e4cfa9c78907091911 +0a030f0e00090e0c0c0e0e0b0b0e11240f0913161e100c0a090b0b09090b +0b090b1011101013141616161c2427251c1749816d1f1b1f18101a272215 +6a4846292821131927325f9068472f2a29342f422dcfab208eff2530dace +2a3f2e2e2d2a303d3f363232322f2d2b29282726352c2524231d17151215 +15151e29271d1818171718191a1c22201c2222161d3b4c1a1a242b3e3428 +1f281b0e1b32455657433d291d1c1e354b28607ca2c4e1fff1683c354242 +3c313c3d414547433c36423939414442454c453d38393d434a514049463f +3e38323833443d404036383236333234393c373222222325292a2c2b2724 +2656882722211d1c1a241a2120161b2722132c7a7a5f3023232a32334540 +4e704d536763a0ff968bff5d27d0ec636e6c6066796a59655e615b636165 +8e5e524a504d3b485d556451491f2d2c2d376a4c4247391c27172231332b +474d4c1b2221201f20222527272232392421051616171918161515171b19 +181616161512131b17201817250f3b725f451a1a261a25221d62718f2d32 +27284359563077676f998946647ba04245434666764b616f5d4d39413495 +914a4b605e483d486a823b3a95b1734d3d2c2f2c2c2d3033312e23211515 +64925a253831467b96836e726f6f70625d5a57554e42382d27281f261e5e +4e2d190d0f13181e1f2833455e8f9b986172808d8b606c7c838469676661 +56659dc1cab9ba821804130d0c0b0d1105010e0c08070a0a07070a042311 +0b0b02191405080c0c0c090c0d0f0d0e131311101413151514192023201a +1e4c8d8031191e1b0e1b2a2c27a2813d29221f1a1a272b56ae732f1d2b2b +25211f16a8ebcbc1ebd5bdf27e00182a0f1a141012141315171312111010 +1313153222150f0e0b0a0b070b0a08121c190d0c0c0b090a0a0b0e0e0f0d +0e0e0204183c00020f183122100e0e04041b3035384d3e381e0f0d060c16 +2ca6cddbac3009370519191102080811181b20201c140e100c0d13191b1e +1f18120e0c0f13181b1b221a0f110f0e140c16131b1a10170f1516181a22 +2520160a09090b0e0f1111191300002203130f0a1011180e170d17151b1d +0f327e703a1f1912243025313970652a4a4c100060adc785253f9598371c +21222f3f280a0a070006141f3a4f28120e040c211905076d480913180c0e +1c6036639a681b02160f362e1c66957d1d14110f0c0b0d0f111811112a12 +121814191b1c1a15131214181b1c1c1a1b1c1c1e28202616142e0e3d6e71 +40180a222f1a12125769721a1d2531575140256c6860a1782b4b64870d1a +1437354c1c46563b21131512625a2b3549331616396d7b23197e82231c1e +2513131517191e21241f1f1021658549252828468acbdad7e0dddcdc3f3c +38383732271e1611140c120c4c42281e201e0f0c161718191f3d849a935e +75889391636f7e85826763625b505d97c0ceb9b87f12000c030202070d03 +000e0b0706090906080b0524120f0c061a1506090c0c070403040402050a +0d0b0b0f0e10100f141b1e1b13174586792a12140f0411252725a2813d29 +201d13131b2356b37a38283a3a36343228bafdddd1fbe1c9ff8f1431462d +3a343032313030322f2f2e2d2d2d2d2d4a3a2a2423201e1d121312121c26 +23181717161718181919151514181b1319325618212e3851412f2b261209 +19272a2f473c392414120b17314dc4e9f2c1451e4e1f363b392f38363437 +3d4446443e38393534383c3c3c40403b3735383c40434148403534323137 +323c39413d333931343534363a3d3830292828282b2c2b29312810113415 +25211d201d2213170a1412181c123a887c42190d081c2a2431407a743e65 +6a322380bfd3943856b1b65941484b5b6b54363632292f3d486378503a36 +2c34473f2b29865d1e282d1f212d714572a8762a0e221b4238266b9a8121 +19191718191d222428201d331310110a0e10121312121313111112121415 +16161a241e2414122b0f4778723b0e001b2e221d21657072121320315755 +452f777773b890486985a82e3b3558566d3d67775c42343633837b464656 +4632355c909a3c2c888b2a242631282a292b2b2b2c2b22200e1d607e4022 +32324680b5bbafb5b0afaf211d1c1c1d1c140d08060d06110a4c442e211e +19100e14151b222e4e94a8a7718495a19f727e8b928f747170675c6aa3ce +dac5c58a1e07140c0a070b0e04000e100c0c0e0e0b0c0f092814100e071c +17080b0e0e0b0808090a080a0f110f0f13141616151a2124211a1e4c8d80 +31191c1b0f1a2b2d28a2813d2923201b1b272e5eb9803d2e3f413d3b3934 +c6ffe9e0fffbe3ffa11f36472b352f2d3135363939302d2c2b2b2c2c2d4a +3a2b2524211f1f141615141e28251a1919181819191a1d1f211e21231a1c +3355161c29334c3b292926130c1e2c2e32493d3b241816111d3856cff5ff +d258316030444741353c3636393e4447443d373b37393e42434447423d39 +373a3e4245444b43383836353b353f3a423f353b32363735373c3f382f24 +23232427282a2931291112361727231b1d1d23171f151f1d2124173c897a +44231b1327342c3946837b476e743c318fd3e9a94966bfc163494f4f5e6e +553739382f33414c677a523c382c3448402c2a8a60212b32252835784a75 +a976270a1e194239276e9d84241c1b1918191c2020251d1b321513181216 +181b1b19181819191a1b1a1817181619231f271917321448797641160822 +33251f2468787c1f1e2431575648317b7c7abe9a50738eb137423c5f5d74 +446e7e63493b3d3a8a824d505f4d363a60969f433391923027282f232427 +2a2d3132332b25131e5d78391d33313a658c8571716c6c6e736e6b6a665d +4d403326272127175d492b1b1314141821252e32435c8b999a62717e8b89 +5f6b7d8484605e5e555b7baad4b8b59d28031f0f090d10130d050c100b07 +06080806070b153828271b0218140a0b0c0b0e0d0f0e100e0f1414121115 +12141414192023211c223268754325201b141c252a36918c36281b1d1e1a +252754ae7d3c1a262d1517240092efafd4cabedadf440b0a1f031e19130c +0d13161411100f0f0f101114261c14110f0c0c120d100c09111b17090b0a +0a09090a0b0d0d110f0e110b0c184e00010b122e1a060808040a25343538 +1f2027110a181a210891cf3548d1ae14330d170e0e0b12060e15191e1f1b +130e10111211171e211c15100d0a0d0f0f0e1c22180b0e0f0e120f13121c +170e180e14151718222825180f0b08090a0c0b0d0d121309151514040b10 +1218131a142029212828599b782622221c2a3a37346a717a2a27221d052f +51739fc8dde3bc151e22242a2e1c0a0a19050e0b11302e1e000605030600 +04233639131e1203040f231351582a0f040e1d1f12266b60421914121210 +0f10101208110f1f0d1a1e0a171a1b1915141215151c1f201c1b1d20242c +202a1d23461e57656621221c201c1e1b31707f621e112035514e3442646b +2253422352636d0d17194a43482e414e24111b1f2554504252522d171a3a +6a6a29539a871b1912160b0c111212141b222c2a282e6e663323262c3f74 +bbdadadfdddad94f4c4849473f3125190e100c13054a3a26202623100c19 +1d1e181d3b8098955f7486918f626e7f86825e5a584d5370a4d3bcb49b25 +0017050003070d09040b100c0806090907080c163929281a0317150b0c0c +0b090806050503060b0e0c0c100d0f0f0f141b1e1c151b2b616b391b160f +0a12202534918e3828191b1713191f54b3844525353c262a370ca4ffc1e4 +d7c8e4eb531f233b213e3c332c2a30312f2f2e2d2d2d2d2e2e40362c2927 +2424261b1a16141c26221719181819191a1b1b141715181e1c2132681b20 +2a314d3923221d0f0e202b2a2d1b202b1a1220212e25b3ef5362e8c32949 +2734303638423331343b4245433d38393a3a373a3f3f3d3d3c3936373939 +38444a403334353438353938423d343b30333433343a403a322e2b282728 +292827252a281e282826161b201e20161b111a231e27295ea5842e18110e +1e3234336f7a893e3f3e3d264c6280aed9f2fdda3743494d565a49373744 +3039363d5c5a47222f2f2d30282e4a54512b362a181822362563683a1f13 +1d2c2b1c307166461d1a1b1b1c1e20232519201b280f1818010c0f111414 +1515150f1215161615171a20281e281b20431f5f6d651a17111b1d282b43 +7f835f12041a355152394c727d356a5a3e6e818b2e383c6d666b51647147 +343e424877735f605f4033395d8d894266a49022211a2220252724211e1f +2128242027655d2b213138416aa5bab2b2aeadac2d29282a2b271c120a02 +080712054c3d2c23241e110e171b21212c4c90a6a97283939f9d717d8c93 +8f6b68665a607eb0e1c8c2a83009220e070b0c110a020910100d0e0e0e0c +0d111a3d2d2c1f071c190d0e0e0d0d0c0b0a0b090b101210101413151515 +1a2124221c2232687341231e1b151b262b37918d37281c1e1f1b252a5cb9 +8a4a2b3a432d313e18b0ffcdf3e8e3ffff662a283c1f3936302b2e363a36 +2f2c2b2b2b2b2c2d3f352c29272424271c1c18161e2824181a191919191a +1b1e1e2321222623243367191b252b47331e211e111126302e311c202c19 +152327342bbcfa5e71f8d63e5e38423c3e3e463633363c4246433c373b3c +3c3a404647443f3b383536383837444a403335363539383c3b4540353d32 +353636373c423d312926252526272626272c2b212c2c2a181a1d1e221b20 +1a242d272f2e61a6823023211b2a3d3d3b75839047494948355c7493c1eb +ffffe5414b5053595d4c3a3a4a363f3c405f5d4b24312e2c2f272d495653 +2d382e1d1f293c296568391c0e1829291b2f7166471e1a1a1a1a1b1d1f21 +131b17250e191c0614171a1b1a1a1c1d191b1e1e1a17191c2129212b2027 +4c24616f6a211f192121292a43828c6a200e1c3351533c4e75813c706447 +798b95373f42736c71576a774d3a44484e7d79656b6847373e61918e496d +ad9728241c201b1f252626272b2f37322d2f6a602922353836517e87746f +6a696b77736f6e6a604d40382727232710583f261b1b1c18192328303141 +5b8b999b616e7d89875e6c7d87815656554d628ab3cccdb04006190c0812 +130f0e070b15080b0706080906070b3555434839151c0f0f0c08090f1312 +10110f1114151313161214141419222422162a283f45291d25141b242820 +26353f372814161817232722695640171b311c1e16171d32147fd6182e33 +041c0e16141c1e19100f16140a1412100e0c0c0c0d0a0b1014120c0b1014 +140e0a111a15080a0a0909090a0b0d11170f080b07060d52000001092c19 +060b0f09050b0f141f454a4a260f1a1f231469dec5d6e1e39bc04a140f18 +00060e0e14181e201a130c1015130e121e201912110f0e0e100f0c161d15 +0b0f0f09091112111d160e190d101312141d2625190f0a06060708090a0f +0c1a1910170e0b11141414121512150d23312064c9991525221e1a2a321e +7bcb8615321e051590ede9f0b7ec8c2a00192331393120120d0e00181016 +4449590f0d09080b0c0e1a34492f0e06192b2d211b5a2b080c0e09051c18 +1940261b121011121212100f0f25181f1d0a17061b15181b1a1715151717 +1e2324201e202220251926202f572b4e60711216121a1d171c3e6f724421 +181930394a31645c5d1b1f1f2a5b5643182f1710130e3c394e2a17261812 +1f1d2865562b1911163120248ca576101d1b140a0d11110d0b131a353141 +3b7b552f2d2e384065aed8dadbdddddd534f4d4d4b4231231c0c0e0b1400 +4a3725232a27120d1b2022181b397a9597607484918d616e7f877f53504f +455a82adcbcfaf3e0213040007080605010611070c0807090807080c3656 +424738141b0e0f0c08070a0e0c070805070d0e0c0e110d0f0f0f141d1f1d +112521383e22161e0a141d231e2636413829141416121c22236c5b47222a +422f322a2b31462691e622383f152f2732323c3e392e2d322f26302f2d2b +2929292a24252a2e2c26252524221c181f2825181a1a1919191a1b1b1a20 +19151a1a1b256c15171e2647341f1d1d110609090b16414a4e2b19252a36 +318bfee3f0f8f8b0d56431313e2b333a30333a4243423b36393d3931333d +3d383a3b3938383a37343e453d3335352f2f373837433c343c3032323132 +39423e352f2d29262728272729242f2e23281f1a21221e1c15140f0f071d +2e1f65cea1181d151312242f1d7ecf902646392539b1fffaffccffa64720 +3b4858605a493b393a2b41393f6d70803735333235363a4253674d2c2235 +444639336f3f1b1c1e1814282222452a1c131415171b1e1f1f1f31232821 +0a1200100a0d1113141415160d1218191515171c1a2114241e2d542a5264 +6f0b0c08151c1f284c79753e150c14303a4e356c676c2e363a4777725f34 +4d352e342c5d5a6f4b38473b3542404578673f353038503d3b9fb27f1725 +23201e232521181213172d263731744e2a2c353f405d9abab4afadacab31 +2d2a2e2f2a1c1310010707100049352a252723120d191d221e2a4a8aa4a8 +7284949e9b707b8c938a5e5c5b50658db9d9dcbd4b101f0f070f0e0b0801 +030e05100d0c0e0e0b0d103a5a474c3d192013110e0a0a0e12100c0d0d0f +1415131417131315151a232523172b283f45291d26131c2529232838403a +2b16191b1924292871614d28314a363b33363c51329ff63b5357273d2e35 +30393b362e2f36362a312d2b29272727282324292d2b25242624231d1920 +2925181a1a1919191a1b1e2129221d211e1e256b11131a21422f1b1f2014 +0a0e0d0e19424c4f2e1b29303c3994ffeeffffffc3ea753f3b4731383b32 +353b4245423b353b3f3c353842453d3a3a3837373937343e453d33363630 +303a3b3a463f373e32333433343c4342362e292523242525252a26323127 +2f261f2122201f1a1c18191127352569d1a31d2a26211f2e382585d8992e +51443247c0ffffffddffb5552b45515f675e4d3f3c3d2e473d4371758539 +3732313435394255674f2e2538484a3b35703e19191b1511262321482b20 +1517161a1a1e1c1e1c2d1f27220c16021812151a1b1b1a1d1e161c20211b +1a1a1e1c22182723325b305567741214101b2121284d7b7c48231618303c +4f386f6b71343c414f827d6b40573f383d36666376523f4e413b48464b7f +6f4639333a554141a5ba861d2826201c2024211c1a1d223c34423c7c552e +313f4538487588766e6b6a6e7a767066584c413a2f2d2c212a33613e1d1c +21201e1b1a1f242c465c97a7915a677f8884626e777c805b4c51596a9abf +d0d25112050606130e0e0f0e0e0d0d0a0a090a0a0b0b0b0b462d0d0a1e23 +1a1b0e0e0f1211100e0e1411101115171512121316191c1f22231316293b +3d302729100d151f20282e292f2a231a14141c24292c2025231b221e1a1a +0e3abb80baf29faa942e270024151a18120f141d1910121414131517120a +141312111111111215110d10141510090b08070a0e0d0d100a11130b0302 +070e4f00060806352701150f090908070e1636424c141b1129172106b0a3 +729cd1b3c04b0025090c0c0911191a1a1b1a140b160c121a191a201e120f +0e0d0c0c0d0d1d1712100d0a0b0f1111171e1c141012161210151e221f1a +0b0c0d0d0b0604010a1411130e3970411a100a292e100f201918252d75b9 +762027172116152340859b6a262827260000042c9380bfc7d026171b324b +472b191a17060b1329444c5d0810120c07080d1432571e0519212d171346 +532f110905010a0620285d2f1d0f0e0c161d130705090d1b0b180d141319 +1f1e181111171d201c21242526221f1c231d1c20262b2c2d70576d2a220d +1816141d3f6c7f3f281e121933272a575d4320141343c590559ad5edbc50 +0a50435a26202c261c17162f3e491f2715112420369bca690d0d170d0b09 +0c10111012192f433a3755584b546168454598d0d1d5e0e0e053524f473d +30241d0e0f0f0819285a3f292a272016111518161320357a998e6170888f +8a6570777b7d56474c546595bccecf4f0e0000000c040504040403030508 +080909090b0a0b462d0e0b1f241b1b0c0c0d0d0c0b09070d0a090c101210 +0d0c0d1013171a1d1e0e1424383a2d24260d0b131d1f272f2a302b241b15 +151d25292d232c2e29343230322450d193ccffaeb8a4403d174033383630 +2c3037332a2c2e2e2d2f312c242c2b2a292929292a2b2521242829221b1d +18171a1c1b1b1e181e221d16171f2768121f211c493c0f180e080807050a +12313d4b1724203d303f24ccbd89b1e6c8d56210462e35383333383c3d3e +423c353e34383d38373d3d3537363534343333433d38363330313537373d +44423a3638393533384044413c2e30312f2d282421282e29261f487d4e27 +1b132e310f0c1a11101e2670b4731f25162018182641869c6d2f363e4625 +21264aaf9cdbe2eb4132385069684e3c40402f32394f676d7e293135322d +30363c557b41293d45513933647047251b150f140e252c5e2e1a0d0b0b15 +1e180f0f11111c0a16080a080c12110c05071016160f101316171613111a +17161c21262a2b6f5468251b061313131e406b7c3a2019131c34282b5a64 +50332d3061e1ac6cb1ecffd36a216a5f76443e4a473d38374e5a62384331 +2d3d384baed9761818221b1d1c1c1c17111013263a303050574c545f6540 +3d88bab1acaeaaa53432302a221a120f0507090312225239272a2720140f +0f1215172d478caa9f7181999f98747d8183845d4e535b6c9cc7dce05d1c +0d0c09140c0a0805030101020b0d0e0e0e0d0f0d482f100d21261d1d0f0f +101112110f0e1412111317191714100f14171b1e212214192b3f41342b2d +14101822242c332c342f281f191921292b31283234323e3d3d3e315ddea1 +d8ffc5d2bb544b21443538342e2a3138342b2d2f2f2e30322d252e2d2c2b +2b2b2b2a292420232728221b1d18171a1d1c1c1f1b2427211a181f24650f +1c1d1947370f1f160e0d0c080b133541501c2b274437472ed8ca99c2f7d9 +e8721c4f34373932353b3e3f40423c343e34393f3b3b4340373736353434 +3434443e39373431323638383e45433b37393b37353a4245433e3030312e +2c27211e262d2b2a264f86572d211834381715241c1b262e77bb7a273326 +2e24212d468ba17638414c53342f3255bdaae9f3fc5243465b736f544043 +4231373c526b72832e3639353032383c577b43293d45513832646e47241b +15101610292f6333211212101b221c11111314200f1b0e1210161c1b160f +10181e1f18181b1d1c1a17151d19181d252a2d2e745b6f2c230e1a1a1923 +457183412b201821392d305f6a5639323669ecb87cc1feffe3792f776b81 +4e48524e423d3c515e663c463430423c50b4e07e1e1e281e1d1a1b1a1713 +13152b3f3837575d515e6d6e3c2a6689786e716e6d7f79706353443a3530 +2d2b21262c5334201e23211d1b1a1d2129425996a99360647f89845f6e77 +7f79564a565c6e9bc4dca422050d11080d0d0e0e0f0f0f100e0b0a0a0a0b +0b0b0b26210d010e15100c0d0e101111100e0d0a121a18100b0e14131415 +181b1e21231e212e3e3d30282a1a141c22232c342f323532251d1c1c1b3c +424c393c1527190f2a003fbb566f4d5a89c61002200b130e1012151d2621 +17402a140c0a0b131d1515151414131212110e0c10191b16120f0c0a0d0d +0c0f13110b060305080a0b5100080b083229060f0d0c0d100f151e333f4f +1b1b0b22160076ea4713b5b766aabb0e0c0c11071c12171a1c1b16100d14 +0d1317151b2018110f0e0d0d0d0e0e1d150e0d0d0b0c0f0f11181f1d140e +0e100e0d131b1f1c170d0d0e0d0c0908060407001224c59e4fa94f1d6960 +080a15221a1d1e2f3f2f1d29140f13211f213f2f34242e29290a081d382a +000000907304142e4a5236150f11090e0d294d4d49101010110c0500002d +50261c2e24190024423f1b060405050c071b414f290f180e0e375655573d +012e560e1b121d181c1b1c19131218191a1d20222423221e1c231f1f1f22 +21222268524b1a1705101719234567692e211212142a212652553a141d1a +5bea7b31db7702aed80851554a2018211e1717172c44441b1708161c183b +acb1501713120f0b0c1117191414181a313646717765645c5f3e3a7ec0d3 +d9dfe0e058554f4537291d150e0c0c081523513c302e241b131115181310 +1c30739492697088908a636e757c74514551576998c1d8a01e01090b0206 +0605050505050506070808080909090b26210d020e16100c08090b0c0c0b +0908050d14120a05080f0d0e0f1216191c1e1c1f2b3b3c2f272919131a21 +222b3330333633292120201f3c424d3e4723392f26441156d16c825e6999 +d825193b26312c2e30323a40392f58422c2422232b352d2d2d2c2c2b2a2a +292725292f312c26231e1c1d1d1c1d23201d18171a2023246a161e1f1b45 +39100c05070c1010131a2d394a1b241c3b330a94ff612acacc7bbfd2282a +2f39314434363c3f3e3c38373c35363934383c353435343333333434433b +34333331323535373e45433a3434363433394145423d30303131302d2b29 +2224162735d4aa59b6592670630809121a1216172838281a2817131a2624 +223e2c33283a3f493434435a4a161812a98c1e2e48667054363239323633 +4c6e6c662d2f3134322d292753764e44564c422048645d351b181413160f +204450280c13090b3455565a42062f550b160b130c100f100d07080e1210 +0d0f1113141311111a19191a1d1f2022654f481714020d1416204264662b +1e1115192a2023515a4527363779ff9548f08914c3ed1d686f643c343f3c +3838394e63623933242f342d50bfc25f26201f1c1b1a1d201b130e101027 +2d3f6c7665645859393374aeb8b2ada8a3393530291f140d08050507030e +1a45312d2e261d120f0f121013294287a7a2788099a0986f7a80837a574b +575d6f9fcae7b12d0f17150c0d0d08080604030303080b0b0b0c0c0c0d28 +230f041018120e0c0d0f1012110f0e0c141e1c140f1216111011141a1d20 +222124324242352d2f1e181f2627303834373a372c242323203c4251424d +2c453c34511f64df79906e80b2ee3827462d332e2e2e30383f39315a442e +2624252d372f2f2f2e2e2d2c2a292422262d2f2a25221e1c1d1d1c1e2323 +1f1a181b20202167131b1d1943361115100e111212141b313d50232b2340 +39129eff6e3adbdd8cd0e03532353b304436393e41403d38363c35383b37 +3c40393636353434343535443c35343432333636383f46443b3535373534 +3a4246433e343233312e2b27252022182a3cdbb663bf622d786c12111b25 +1d1e1f3040302336261f242c282643333b33464d5842414e6457232823bd +a02f3d57717a5c3b363b3438365073716c33343638352f2b2954774e4455 +4b3e1c46635b341c19171618122449552e131a10123b5b5b5f460a345b12 +1d131c161a191a171111171a181717191b1b1a18171f1d1d1e212223246c +564f1e1b09141b1d27496b6d3225171c1f32282a5760492d3b3d81ffa45a +ff9f2ad6ff2e787c71473f47443d3d3b5065643b362733383255c5c9662d +2827221b1a1b1f1a110e0e0f283246737e6f706965362151808177726f6c +837c716152423832302b2b24232a47311c1a1f1f1c1916182327425892a6 +9467667e87825f6d757b6a4e495e61749fcde36e00031110090c0c0d0d0f +0f0f100f0a0b0b0b0c0c0c0b09191200040c0a040a0d0f10111110100c14 +1c1d1814141617161516191e21232728303b3a302a2d211a2024252e3732 +3b413c2a2023231d2926453664323e1312130794d30000000011dc6f1517 +051e191816171c1f1b1344291515140c0d181717181817151312110f0f14 +1c1e1a17121110110d090f1416110d0b090704015605080b072b2407080b +0d1116171d232d35401513051f1d46a0dc8a7ae56000b6ce0a1d120e0a0f +10151e2825140c0d110d121215212516100e0d0d0d0e0f0f22170e0d0e0d +0c0d0e11181e1c130c0b0d0b0d131b1e1a1510100f0f0e0d0e0d0e1e0406 +008f5000086c7e986f1012191c18172c362f373a3027151e281c25353533 +252a1e140e29473107100d009be101192c43543d160c0b0d12082550462d +1a10080b0c09090e214a38302a0f0e032e37290f0608070b080b26715430 +061512143f3f0a164a4d2d69031311201717191b1814131615151b1f1e1f +1e1d1b181e1e1f1e1e1f22244f4c31292e1711161924495c4f262e1b130f +25212d5553361c212625a1bba9db550087c208593f371b121a1713191a31 +43362017112b19182e9d74231b150f130c0f161e1d171416111d1c2c5764 +54514c4b393464add5d9dedfdf5c584e42342619120e0a0c0b122147382c +2a231a1311131315111c2e6f9193706f878e88636d7478654942575c6f9c +cae16c00010f0d0607070707060707060706060606070707090717100002 +0c08020607090a0b0b0a0a050d1516110d0d0f0e0d0f1013181c1e22232e +39372d292c1f181b22232c35323b423d2b2124241e2926463b6f41502929 +2d21aeea14040f0521ee842c32203c37383635383b352d5c412d2d2c2425 +302f2f30302f2d2b2a2b29292e3537332d282524231f1b1f262a24202021 +211e1b6f1e1e1f1a3b320f0503081016181b1f272f3b151c16363a67c2fc +a894fc7504cbe5243b353634373234404b483a3435393535343440423533 +34333333343535483d34333433323334373e444239323133313339414440 +3b33333233323131302c3b1e1b0a9e5c06167b8ba2761415191915122731 +2c34392e2617222b20263432322936343438556d5327302a0db4fa1b3348 +5f725b372f33363a2e4871654c392f292e32313237477060585439362b52 +5947291e1c191a16163079573105120f113c3e0b194f52306c04120e1b10 +100f11110d0e1112100f0f111212111111191b1c1d1d2023254e4b30282d +1610151823485b4e252d1c1410221e2852563f2d3a4343bdd5c0f067039c +d71f705951372e3835343a3d5362553f352d44323046b287342c241e201a +1b1f221d130b0a05110f22505e514f494938315e9ebcb5ada8a43b383025 +1a100703040307060b183d302b2a261e140f0e0f14142b4285a4a37f8098 +9e966f777c7f6b4f495e6275a3d3ee7a0c0e1c160f0d0d09090705040405 +070a0a0a0b0b0b0c0a1a1302050e0b0507090b0c0f0f0e0e0c141d1e1915 +151613101112151a20222829333e3e342f32241b1f25262f38343d443f2d +2326262029264a3f75485a36373a30bdfa22131e1c38ff953a3b273e3937 +3535393c362e5e432f2f2e26273231313232312f2d2a2a26262b3234302b +262423231f1b1f262b28242321201b186c1b1b1d183a32110e0e0f15181a +1c202933411d231d3c406ecbffb3a3ff8615dcf331433b3833373437424d +4a3b343539353736374346383535343434353636493e3534353433343538 +3f45433a33323432343a4245413c37353433302f2d2c2a391f1e11a5680f +1f8293ab7e1d1e23221e192e38333b413b34232b30232a39393a34424243 +4662785d343d3a1ec8ff2c42566a7c633c3335383c314c766a513e342e32 +35333439487160585237352a5058472a1e1d1b1d1718327c5c360b191618 +4344101e53563571091815221818181a191515181917191a1b1c1c1b1a19 +202223232325282a5451362e331c161b1e294e61542b3321191529252f59 +5d44343f494bc9e4d2ff7b17afea2f80665e4239403d393f3f5564574137 +304836344ab78d3b332b25261d1b1e231d120c0c0713162a58685c5c5a56 +36223e73867b736f6c847d706252463c39332c2e2823314531151a23241f +191215242a445b92a4936a677d8483626f706e5b494a66637aa3d5df4c00 +110d06090d09090b0c0d0d0e0e0a0a0a0b0b0b0c0c051415070a0c0b0c0a +0c0e11131313131812101b292c201318171415171c202323242931312c29 +2d1b151b23242a322d3e43361a121f282532263625542c360a1e0f147bcb +7178a1988be976090b2714261f161011131211211611191e18110f161719 +191815120f141012161b1c181512151717110b0d140e0e13150e02000059 +0e070b061d1a030a0e0f1115191f2428292f131919383e631344b6a76a01 +0f6657001d0e120f0b0d1325362e17090b0c0c0f0f15292c1a0f0d0d0d0e +0f1010291b100f12100d0c0f12171916100c0a0b0b0e13191a1510141311 +0f0f0f1011001c10130a304b1910001a7c5f030a0d293a2c363d3a422a3d +3d21303d2f3c3e44422f242831323acabdc9d8cfcfe6c70b222830413015 +130a0c12071e43351c160c090c0a08112034452e2011000a1621241b1114 +120c100b0b2b6e4427050e0b00253f1b061a2866751509000e131e161919 +14141718171d1e1f1e1d1a1917191c1f1d20283238434b1f37432c1b2327 +3151533b223d291d162f353e5b4f2e27235a4766abc7c9c1cad1aa004052 +091c161f17141b203847292119183a243d357b3d0f1e1114141012191f1d +17141523261e294750453f3b3a3b38549bcfd3dddfdf5b564d4034281d18 +110a100f1228453b2829261f1610111118131f31718e927370848a86646f +6d6b5644435f5e75a0d2df4b00110d06080c070707080708090906050506 +0606070700121005050a06070406080b0d0d0d0d110b09142225190c0f0e +0e0f11161b1e1e1f272f2e29282b1610161e1f28302b3c43361b13202925 +3026372a5f3b482036292e95e2888db4aa9dfe8d24284433453f36302f2f +2e2a3b2e2931363029272e2f3131302d2a292e2d2c303536322e2b2b2d2d +251f212823262b2d281f191973271d1e162d280b07070a11161a1d202223 +2a14222b505b863866d6c38418267d71093b313837332f354759543d3133 +3434353237484b3932333333343536364f4136353836333235383d3f3c36 +3230313134393f403b363736343333333334203a2a2b1d41592721082989 +680a0e1029392b353c3941293a391f303e303c3c424131303e515964eedf +e9f8eaeaffe0253c444c5f51363632353a2f4466563d352d2c3232303a49 +5c6d56483b26323e4546392d2c2720221b1b36784c2c080f0a0024401e09 +1f2d6b7a180a000b101911141411111617141312131412121111161b1d1d +202b353b444c2038442d1c24283252543c233e2a1c152a2e37564f35363a +756582c5ddded3dce6bf08576c2438333d38353c435b6948403836564056 +4e935224312425231b1c1e201b1109091417111d3d483f3d3c3c3c38508f +b9b2b0aba73b352d2418100907050108080a1f3b33262c2b251b110d0e1a +1b304586a3a48281949a95717976725c4a4a66647ba7dbeb590d1d170e10 +120c0a0807070506060709090a0a0a0b0b04151408090d0a0b06080a0d11 +1111111812101c2a2d21131411101113181f2224252c3435302e301c141a +22232b332e3f45381d15222b253126392e6342522b42363da4f2989ec5be +b1ff9b2f304835473e352f2f32312e3c302b3338322b2930313333322f2c +2a2d29292d32332f2b28292b2b241e202926282d2f271d181670241a1c15 +2c280d0e0f1013181c1e2124273019272f545f8c4070e1d19328368d7e16 +43373b37333137495b553e313334343634394b4e3c343434343536373750 +4237363937343336393e403d3733313232353a40413c373b38363331312f +301d382b2d23486430290f30916f1217193141313b423f473145472a3842 +323e3f47493d3c4c606872fae9f6fffbfbfff4364b525769583b3a34373c +31476a5b423a32303534323c4b5c6d56483924313d4345392e2c2821241b +1b387a4f300d1410052a45230e23316f7e1d0f05121720181b1b18181c1d +1b1e1e211f201d1e1b212328252a323e424951253d493221292d37575941 +28432f221a31363f5d573b3b407c6f90d6f2f3e7f0f9d21867792f433b45 +3d3a41455d6a4a423a3859435a52975729372a2c281f1e21221e130d0d19 +1c1a2748554d4b4e493e2c3567887c77716e867e7164554a42403a33352c +233d46341d1f27231b1410142126405a93a092696a7a7e806670675d514c +4e6c6080a9d8d7370e1908060c0a090909090a0a0a0a0a0b0b0c0c0c0d0d +0d100e0c110b09130b0f1214171818181d110b172c32221018171616161a +1f221f212328282525270f0d162022292e263135270b0619282828303228 +38395d5c524f3a77ab8ba5b8ab8c5d000f1b1a0e19120c0c0d1012141213 +0f0b131e1d13131416161613100f110f0f121516141314181d1f1a121114 +110b0910130d070555100209041215040c0e0c0c1017202526272b202f3c +52510a0500000011262116171615101b0315101322302813090e0c0b0e0e +122528150f0d0d0d0e0f101022170e0f13120f0e111414120f0e0d0c0d0d +0f131615100b1615120f0b0b0e0f160f0d0f11001c0500140e000b0a0019 +3052443322213a2f453d1b314e443920224146334450360a9e391c55433f +54410c1b1d1d23190e100e09110b182c201a0a0c13130b040d1e4f350c04 +080207080f1514151a130e151409192d170b090a210e010d1a0a04180000 +081412120a041417161213181b1b1c1e1f1e1e1a1816191c1b161d2e4049 +4748102b33281b2c3e4356482c1d3d2a2923404a4c594321180f19399ec5 +4a1c20293ed89a3d33331d1c271c141921394d1d17110d2e23584f5c241d +23101e141515191d191414171c242c3d5050463e363238384583c4d2dcdf +e05b554d41362b221d160e14131236483e2f302b20140e101216111e3371 +8d917271818484666e64584a4547655b7ba4d5d739101b0b090c0b080909 +09090909090605050606060707070b08070b06030d0506090b0e0f0f0f14 +08020d222818070f0e0d0d1014191c1a1c2126262322250a07101a1c2429 +242f33250b06192828262e322d434871746d6b5692c5a2bccdc0a173172a +3839303b342e2b2c2d2f302b2d29252d38372d2d2e3030302d2a292e2d2c +2f3233312d2e3035372f27262c2b25252c2f2b24226f29181b1420210c0a +090a0c11191e212021261f364b676e312e2522162e40382d31303331412b +3b333544534e3931363433343135474a373233333334353636483d343539 +383534373a3a3835343332333335393c3b36313938353332323232362d27 +2724092a161029210c1814061d3352443323223b2e3f35162f4e42371b1d +40483d57705d34c25b3c755e5a6d5a26353939413a2f36363239333e4f43 +3d2b2f3639332c3647775d342e322c2f3033373431342b2329281d283b22 +14100f240e01101d0d071d05021019161309021215141112191c1a161617 +1818171414171c1b191f32444d4a4c142f372c1f3042475a4c3021412b27 +1e36404252402625233455b8de6030353e53edb1544d4e3939453d353c44 +5c713f39332c4d41746b753d3538253326201d1d1d170e090a0d141f3146 +48403c3b39403d447db3b7b3aeaa3b352d23190f0b0a08050b0c0a2c3d36 +313734271b1210131a1a2f4889a1a3838191949072796d5f514c4e6c6181 +abdee3461c27141014100d0b0907070505070709090a0a0a0b0b0b0f0c0b +0f0a071107070a0c11121212190d07152a30200c120f101012161d201e20 +262b2b28292a100b141e20282d273236280d081b2a28272f3430474f787e +787764a3d6b4cee0d3b28123333e3c313c352f2d2e3133342f2e2a262e39 +382e2e2f3131312e2b2a2c2b2a2d30312f2c2d3035373028272c2c26262d +302922206c26161b1320210e0f0f0f0e13181f2224252c253c506a723634 +2e2b233c4f483d3e3d3b38442b3c353746554f3a31363433353337494c39 +3434343435363737493e35363a393635383b3b39363534333434363a3d3c +37323d3a37332f2f2e2e332b28292a10351e172e2713201d0e263a5a4c3b +2827403449401d345043381f23485449667f6c42ce6549826f6b816e3744 +47444b41343938343b354153474130333a3c352e3849775d342d312b2e2f +33383332352d242a291e2b3e261916152b16091724140e210804121c1917 +0e07171a1916171d2020222326242622221f242627222b3b4f564f4f1732 +3a2f2233454a5d4f3324442f2c223e484a59472c2b2a3d61c9f277484a51 +66ffc1645a5944414d423a3e465e71403a342e4f43776e7941393d2a382a +2420201f1a120f11141e283b51554e4a4e4943362f5b87827b736e8a8478 +6b5e544c494a434130224d4a32221f211d18130d0d1f223a56919f8e686b +7a7d7d626a5e4e4b55566d5983abd6d2240f150a11100308080807090808 +090a0c0c0c0d0d0d0e110e070a110a06100e1012151819191913100f141b +1c16101817161716191d1e1f22232524211f1f0a09152022292c2521251c +0a0615222425311e1b0f18221f151702a0b336505c8562550f161300150a +080a0e120f0d0d111c1a1013201e10121213141412110e0f0d0c0d101313 +1416181c201e171517341a070d1b1b0f074c0f0007060b1208090c08050b +172229272d2f252d373928101b1208220e0e101d0424211015090e161416 +1a150d0d14100c0e0c0e181a0c0e0e0d0d0d0e0f0f130c080c1111101011 +13120d0a0c0e0e0e0e0f1112100c081614110f0b0a0c0d15011718182411 +1814000d08021e15071a2f332f242238433a31141c333631252d333c3a44 +290f00cb320095770000000e10171b140d0d0e11060f0e12180f170e0f0f +09071021312e1401040b0a08070911100f120d0b15140c150a0c07100600 +150f051107000c24001c1005050d101517171314191c1b191c1f22221f1d +1a1e1d180e15293d453f3c192b281f0e1d3c4047372a1f3b2a1d183b4b4a +513c24193e281259db9babaaa999d9bd34191a1a1a251a11171a2d330f14 +180c1c0b39432c111f1c0f20141819191917131218141a293a4345434237 +2c2f2d346ab3d6dbdfe05d5951473d322a25251f211814464b3d3530251a +120e0e0e180e1930718c8f717280807f60675949444e4f66527ea6d3d42a +161c111815080c0c0c0b0b0a0a0905060606070707080b0801040b04000a +0507090c0f1010100a07060b11120c070f0e0d0e101317191a1d2123221f +1c1c05030f1a1c2327201f231a0806152224232f1e201a27363730331dbb +cc4f66729a796d2a333222392e2c2c30312e2a2a2d36342a2d3a382a2c2c +2d2e2e2c2b2a2d2b2a2b2e3131313335393d38312f315038272d3b3b2f25 +6929121b16191e10070706060d1922252127282435464e4739483a2e442e +2a2a341e403f31382f343936393d3b33333c38343432313b3d2f34343333 +3334353539322e32373736363739383330323434343435373836322e3937 +343332313031382133322d372229280a20190f281c0b1d32332f25253b42 +30260d1731342d2028303e445746362aef5411b292090f16282a3339352e +3034392f37363a3e353d313535312f384a5a583e2b2e3534302f2d33302d +2e27232d2c242a1e1e151b0f011a140a140a00112c02241509060c0f1315 +1512131a1d1c1314191c1c1c19181c1d1811172d3f4842401d2f2c231221 +40444b3b2e233f2b1b1230403f4739272652402e73f4b1bfbfbeaef0d44e +34363738463b343a3d505733383a2e3e2a58614a2d3b3528392926211e1d +160e0b0d090e1d303b3f3f413f393c383866a5beb6b1ac3e3930271e160f +0f1311160e0b3e4337393830251c1512121f1a2c4789a2a182828e8f8c6b +70604f4b55566d5984addce036202619201b0c0f0f0d0a0a070707090a0a +0a0b0b0b0c0f0c05080f08040e06080a0d121313130f0c0b10191a140c12 +0f101112151b1d1e212628272423230b07131e20272b2422261d0b081724 +26243020231e2e3d413b412ecce0637b87ab877933393523392e2c2d3234 +3330303037352b2e3b392b2d2d2e2f2f2d2c2b2b2928292c2f2f2f313337 +3b37302e305138262c3a3a2c236526101a15191e120c0d09080c18222625 +2b2f2a384951493d4d4237503b3839442b4c47383c30353b383b3f3c3434 +3c38343533333d3f3135353434343536363a332f3338383737383a393431 +333535353536383937332f3d3936332f2e2c2d341e3433323d2c332f0f26 +201731241426393b372a2a4048392e141b32352e242e394a5066544538fb +5e1ec0a31a232a393941433e3534373b3139383c41384035383833313a4c +5c573d2a2d34332f2e2d342f2d2f28232d2c242b1f20181f1407201a101b +1107152f0426180c0a1114181a1a17181e21211f2127282a272723292724 +1a23364b51474320322f26152443474e3e3126422f1e163646474f402e2c +594a3a84ffc9d7d4d1c1ffe45b3f413f404b40363c3f525733383b2f3f2c +5a634c303e392c3d2c292422201b1412151118273b484b4d515249443429 +497e8e7f75708e8a81796e655f5d645d5439275c4f2e1f181c272e291607 +2d273b548f9d8c666d7f7f7a575c534a4c62616d5086acd1d21a11130e16 +10080a09090706050407090c0c0c0d0d0e0f1519120d16150f120e0f1215 +171818170f111312111214161414151617191a1b1a1d2224211f1c1b0e0c +151f21282c262120190f0b1420261f2a1a2827332c18121502bcebabc8b9 +d7c1c5550508130d0b070b10110b080a111b1f1a1818130a111212121313 +131114100d0b0c0f11131513141818141416382010151c160c084c140009 +07040d07060907040a1822282834301e1c261f070a00231a201e141f122b +0716110a1b0d1514100d0d0d1013140c0d0e0a0d0f080f0f0e0d0d0d0e0e +0c08080d100e0d0e0d11110b090d0e0d0c0d0d0e0f0d0b0912120f0d0c0c +0c0e0e0d1c180b1f030c1315110a151000111013212225281e2029231709 +15252838331b1c22310b091fe0b780deda8a9386220e1825130d140c1107 +0f0c0c11070e120f080412293432070009100a080a1007100e0a0e0d0b14 +0c131a0f1c130f080b160c010f17100c04000e0e0a0c0e101c1d1e1b1b1d +1d1b11161d2327252321222016090f213234312b2c31251c050d2c323229 +31273726100a2d3e3a40362b1d272c1e0082534565534e6472001f1f1714 +1c141017111a130a131c0f1902141c0c0a1414131815191b1a1916111014 +22222f3e424346442e2223252a539bd3d8dcdf605d59524a423c383e3834 +211958523a322a22252a27190a27171b31718b8d6f7381817a55594e4342 +595766497fa6cfd6221a1c171f1710121112100f0e0d0c07070707080807 +080e120b060c0b05090507090c0e0f0f0e06080a0908090a0d0e0e0f1011 +131516151b2022201e1b1809050e181a2127211f1e170d0a131f261d2a1b +2d324240302d311dd7ffc4decfeed9dd70242a35312f2e2e33322c26272d +35393432322d242b2c2c2c2d2d2d2d32302d2b2c2f313133313236363231 +34584232373e382f28692e121d1712180f050707050b192223212d291d21 +343426362e4e42443e303b2c452334322d413338363330303336393c3435 +363033352e3535343333333434322e2e3336343334333737312f33343332 +3333343533312f3535353433333332312d3a342334171e262822181f1906 +151313202124281e1d1e160e03112326362e181e2c44282e47ffd79dfbf5 +a4ac9f3c283443342e37323930383535392f363837302d3b525d5b302832 +39343232382b3430292c29272e2930342731251e16161f1308141c15110c +0213120b0b0d0e171b1c1a1a1e1e1a0b0e151d21222020201f14090f2432 +34322c2d32261d060e2d33332a322838250b0122312d36332e2a3b443a09 +9b69597a68657b89123a3b34323d35333a38413a313a40333d24363b2b28 +32302f342d2b26232119120f111d1c293b3f4145473b333433345592beb7 +b2ad3f3c363128221e1e29262717104f4936383430333832200f31243049 +89a19f8083908e866062554a4a5e5f6d5187b0dae12d23251e261d131413 +110d0c0908080a0d0d0d0e0e0e0f1519120d14130d0e06050a0d0f101211 +090b0f0e0d0e1212101011121517191a1b2025272624211f0f0c151f2128 +2d2724231c120f1824281e2a1d303647473a383f2eeaffdaf5e4fee5e979 +292c36312f2d303537332e2d30363a3533332e252c2d2d2d2e2e2e2e302d +2a28292c2e2f312f303434302f32574333383d372b25672d101c17131a11 +0a0a09070d1b242728343123253535283932554a504b3e493b522f3c3931 +42343a3835323234373a3c3435363134362f3636353434343535332f2f34 +37353435343838323034353433343435363432303937363330302e2e2d2a +3a35273920282d2f2a212822101e1c1d28292c302624261d130512242939 +34212a3852363e53ffe2abffffb5c0b34d37424d3d353b353b323a37373b +31383b39322f3d545f5d322a343b333132382b34312b2c2a282f272e3327 +322721191a24190e1a221b150f0416150f1012131d20211f1f2222201519 +22272d2b2b282b271f11192b3c3c373031362a210a123137372e362c3c2a +0f062838343e3a35304250481ab181728d79758b991f45463c3a423a353c +374039303940333d25373d2d2a343332372f2d2a28241e17151824263346 +4a4e53564c433e34293f719382766e928f8a847e7975727b7365422c6853 +2b1a16243e534d2a0b3e3340558e9a88636f8383794f534e4c4d6a666e4a +86acced21818170f110b130b0b0a0806050405080a0b0b0b0c0e0e192923 +151a221c160d0d1112161416141510100f15171b1a131315151818191710 +171e2021201d1b130e161d1d252b242b2319100c12212d2130211c151722 +181c0a00573a0000060100082d40150a0e0b06070c0e0c0f16181614130f +0b0e1512121112121415141c17120d0b0c0e10120c0a0b0f0f10130f0b13 +181608060e501a000b07000501060a0904091520222738301b172c2c1811 +009ddfd2d9711308c83108270d14120f13110e1014110c160b0e120b0a0e +0c10100f0e0d0d0d0d0e0c0d11100b090a0910110c0a0e0e0b0b0b0b0c0d +0d0c0b10100e0e0e0e0e0e07140812190a1b0d05090410100b170b13182c +191a2f1d1b26161204172d19201a25290e21180d0029605d5f74829cbf38 +0f18280f0914080e0910090a12050405090b142d3c28060f00080c090b06 +03020f0f0b12130f100b150d08130d050f10050d1206030b0a0921080d0b +100f12222729252423201a09101a24292b2a26252115070c1f2928301e2f +2412140713272f292337272a19140b2832272b28252c1d151c00d373006a +900000d843121a160d150e121a0d0f12140f0b031d13180d101611171d11 +1419181919150d0b0f1619314b4c463c2f1e161b232b4687c8d5d9db6161 +5f5c58524e4b534d442a1e65583a2f282a3d514d2e0f3b252333728b8b6c +728283774c4e474244615c64437fa6ccd92222211a1c161e161716141211 +100e09080909090a090914221c0e1318120d0408080c0d0e0d0e0c0a0709 +0c1111130d0f0f10121314150e151b1f201f1c1a0e090f18182026222922 +180f0b13202c213025242029363137261672530c091c180f234a5f372e32 +322d2a2f2f2d2d3334302e2d2925282f2c2c2b2c2c2e2f303a37322d2b2c +2e30322c2a2e2f2f30333332373f3a2c2a316e371621190d130b070a0a08 +0d191f2020312b1a1c3a41383d2ecafff6f98d2f22e24b25452e37353235 +3431333737323c33363a3332363436363534333333333432333736312f30 +2f36373230343431313131323333323133333435353535352b3728303222 +3221181a121d19121b0d13162a18192e1c181b0a0900152d191f17242b18 +3436331a4b807a7b8e9cb5d8522b3446302c3a3037323932333b2e2d2e32 +343d5665512f3b2b313533352e2b2933312d32332d2e29332b252d251a23 +1f13181d0d0a12110e260c0e0a0e0d0d1d22242322221f190409131d2426 +2523222012060b1e28272f1d2e2311130612262e2822362629170f021d27 +1c21252a3931303817ec89087fa51008f25e2e37342e3631353d3436393b +36322741373c2f323830363c2f302e2a282720161213191c334d504a4238 +2f2b2f35374d81b6b7b2ae41403d3934312f2e3a3a351e155c513534343a +4d5f5937184636394c8ba09c7b81908f8255554e4a4966646c4b87b0d7e3 +2c2b2a20221a2218171612100d0c0b0d0d0e0e0e0f0f0f1a2923151a201a +120505090c0e0e10100f0c0c0d1115191a1110131416171a1a131a222526 +252420150f161e1e262c272e271d141017253123322827242d3d38423227 +8569222133281b2c5064392e32312c2c313634373b37312f2e2a2629302d +2d2c2d2d2f303138342f2a28292b2d2f29272a2c2c2d323331373e382a28 +2d6c35161f190d140c0b0c0c090e1a242527393220203b42374032d0ffff +ff9b3d31ef582d4d33393734373633353938333d33363a33323634373736 +353434343435333438373230313037383331353532323232333434333237 +353534323230302733273036263a2a1f221b26221c26191d213520213624 +1f210e0c00162f1b241e2c372442414026578b88899fadc9ec6339425039 +323d3239343b34353d302f3034363f586753313c2c333732342e2b283332 +2e31322d2e293129232c251b2422161c211310181712290f120f13121323 +282a282727241e0b111b252b2d2c2a2926190c11242e2d3522332816180b +172b332d273b2b2e1c1507232d22292c303f383b4628ffa12192b62016ff +69393f3c333b33373f3335383a35312741373c30333932383e3131312c2b +2a241d1a1c22253f595b564e473f3c3a39333d679085776d99948e8d8e8c +898585886d54245e4729151652c7877bba1695a6234d989882696d828063 +4b494d4b5663687b4c85b0cbd01b00180e110e0b0c10080905091606090a +09090a090807151012130c0e120c07120b0c140e0f0d11071c0a1e240e15 +181618151810171910211f2026201a10170a07342219321b21221a0e1311 +1b271336151e1423191e1518005878102b1c0b11786035260e1507070b0c +0a09121d1915110e0f1112120f0b0c10100e12191c17110c09090b0c1901 +160d100b130a0b0f110e10130e084f300f0e00050a0200150201160a192e +3b1f2a1c232d1f18111cdd7c005de0c34ada5c1a001f0d120f1516110e10 +131108130b081611060f100f0d0d0f10100f0e0d0d0f11100b060c0c0c0c +0c0c0c0c0b0b0a090a0b0c0e0d0c03142206073d0d02240b0b0535282025 +091b573c0411121a1f1e1e201f1e291a110b241e2222212314181b140d11 +1e808eaab4a8edb23e1b00161b09150d050a0a090b0d08000e061b403c12 +0005040408090c0a090808061219100a0d0e0c0e0d0c0b0b0c0c16020b04 +09021106060028140017101424292f28212620080f11182c2b252d26241d +180f0f17242e2f2622221a0f0f18202f292f37251c210d141f282b29241e +132307200088ed679ee36470d38711131110121213100f0e10100f0d0b0d +11141312111213131210160f271d1d12140b1a102f47342524190e201b1f +262e73c6d0dadc666362626364615c5c5f4c3a185b4e38292859c6867dc2 +1f959b0a2d7e8985726f807e60454243404b585e71457eaac9d92806251b +1e1c191a1e1618141825120e0b080809080504120b0d0e07070b05010e05 +080e0a09090b021605171f071013141313130e14180f201e2026201a1014 +0702311f162f1a20231b0f14141c2814371a27223630373034127391263f +302229937d544832392e2e2e2f2b2a303a35312d2a2b2d2e2e2b27282c2c +2a2e373c39332e2b2b2d2e3b233831322d352e32373836373a352c6f4e29 +260b171a0e021606091e0f1a2d3619241c2a3c37383d4cffa40e7dfcdd61 +f476371e40303532383934313336372e3933303e3b303938353333353636 +35343333353736312c32323232323232323131302f30313234302f293b4b +2f30643426462b271e4e3f333617285f42061110171c1b1b1d1c191e0f0b +06241f23232023182431323339409eaac6cec2ffc8583717343c2c3b352e +3336353739342b3a32476c683e262e30313435353331302e2c363d322c2f +302e2e2d2c2927262429141a13140d1a0d0b032b1500140b0d1d2228231c +231d0608071125241e26211f1b130d0d15222c2c231f1f170c0c151d2c26 +2c3422191f080f181e212223252237223e11a1ff7db5fa7b87eda22d302f +31333536373635373736343234383b373635343535313032293f32302323 +18271d3c544131302924373233363571b7b5b6b047433f3f40403e3c4049 +3b2d0c524635303469d6968acd28a1ac2045979e96817c8d8b6b4f4a4b46 +515e66794d86b4d4e2300e2d21241f1c1b1e16151115221011100e0e0f0e +0c0b191214150e0f130c030d0507100b0b0a0f061a091e250e1619171918 +19131b1e152626282e2824181b0e0938261d3620262820141919212d183c +1e2c253a363e3b402386a73e5a4832359c83594a32392d2d303132313a42 +38322e2b2c2e2f2f2c28292d2d2b2f373b38322d2a2a2c2d3a22372f312c +342c313637353637322a6e4c28260a171a0e0518090b20121f333d232e24 +303f37374050ffac1a8affec71ff833f26453237343a3b36333538382f3a +33303e3a2f383836343436373736353434363837322d3333333333333333 +323231303132333534312a3a472b2a5f2f22452a2a2255473a3e20316a4e +121d1d2227262628252026150f0a26212728282d24303e3d3e434aa9b8d4 +dfd3ffdd6945253e45323e3730353736383a352c3b33486d693f28303334 +3536373531302f2d363d332d302f2d2d2c2b292827262d181f181a132113 +0f08301a051b1215252a302a232a240b0f0f182c2b252d2725201912121a +2731332a26261e13131c24332d333b2920240e151f262929292b273e2b49 +22b7ff94c7ff8995faad38383736383738363534363635333133373a3736 +35353636332f33284135342a2a202f25455d4a3d3c363247403c362d5c96 +867c6f9c9792929495939092917556295d45282b00959b00002d00caab76 +428c9e83597080795e494a4e4c5f6667754983aec3e22d0e1514110a0e0b +0f0809080b1c0c0b0c0b0b0c0c0c0a0d070a0d080b120c0b0f0b080d0605 +011318031212101b1f171e0a1817092014141a1b1b17131c24001a0b171b +2b171b241d190000153b7235141f230d0a240e0e2405a8edd2d0d5eabbe0 +bd051a08140b090e100f0b0f161814110f10111111100d0d11100f131911 +0e0c0c0d1013150519080d151506130a0e0e0a090a08024e341114031319 +110a08040018110e1d1825352d23381d0f100076ce1800007fbee063031f +1216060e11120e0d1012100f170c050f0d0d1b100f0e0f111211100f0d0c +0d10110f0d0c0c0c0c0c0c0c0c0d0c0b0b0b0c0e0f0e1a15110d01287a71 +1101011b29a2edf0c17e84aa6e160711171c1b1b1d1c1b25190d01172428 +180b25251b18160f0b1dc3d7e2e3c4d3611a00221b010d010f08140d0000 +0f1000002f432304070d00030407090c0c0d0d0a0f14120e08080d0d0d0c +0b0a0b0b0b17152122a7aca27c634b5a371115102133211b22272b27180b +101c292525302f291909091a2c353625282d2a1808102238303126293727 +12070d172024231f1c221808270226909b9bb18891a99100171011111210 +10100f0d0f100f0e0e10121412100f11110f0d2b180f0c1c13221d111416 +02220f2600310d1f25211d70a2ced8d867656466686967646769523c1d5d +4f3842129c9c00003707cca25e2472918963727d765842404341545b5c6b +427ca8c2eb3a1b222120191d1a1f181c181e2c1a1511100e0f0f0d0b0c06 +070a05080d07070e0706090401000e1600100d0e161c141d091716081f14 +141a1b1e19151e2700190a161b2b171e27201e01011a4077381928301f1f +3d292b4021c2ffe6e1e7ffd3f8d8243c2a382f303133302c2d3334302d2b +2c2d2d2d2c29292d2c2b2f3731302e2e2f323537273b2c3139392a3a3236 +363231322f2970542e2e19272b1f120e0c08221a131d1522322d2c473531 +3927a1f43a131596d5f77a203d3339293134353130333533353d342f3939 +394738353435373837363533323336373533323232323232323233323131 +31323435313d3b38362a51a3983825233945bdffffd28c91b27418070f15 +1a19191b1b181e1208021b2c2d1d0f292d292e3435313de1f3fefddee977 +34123f3c23322937313d3927293d3e2f2c5d714f3033362b303133353535 +353530353836322f2f31312f2e2d2c2b2927312d3635b9bbad856a505d38 +10120a1c2b1a151d21282415060a172420202b2a27170707182a33342225 +2a2715050d1f352d2e232634240f060c141b1f212225342f25451f41a9b1 +b2c89fabc4ad163531323436373737363436373635353739383634333333 +312f4b382d2a382c393125262814342138124827363b32266e97b6b8b148 +44424141424241474f3e2d115347374820acae100e4311d9b3743c8ba597 +6f7e8881624a4849475a6164734a84b2caf442232a27251c201d1f181a17 +1a2b1a1715141314141210120c0e110c0f140d080c08070a050202121904 +1513131d231b230f1d1c10271c1e24252725212a300721121e23331f252e +2724070720467d3f1f2f3623244230334b2fd3fffffbffffdfffe1293e2b +382f2f33353533353937312e2c2d2e2e2e2d2a2a2e2d2c3037302f2d2d2e +313436263a2a2f373728373135353130312c266f532c2d17262b20140e0e +0a241f1925202d3d37334a35323d2ca8fd462124a6e5ff882845383b2b33 +36373332353735363e342e38383846383635363839383736343334373836 +3433333333333333333433323232333536353f3c3732264b9d933323223b +48c4ffffda959abd8024131c2225242426232125190e061e2e3123183438 +34393e3e3a48ecffffffeffe8c45204d452c382b39333f3a282a3d3e2f2c +5d71503134382c333434363737373531363836322e2e312f2e2d2c2b2a29 +28322f3939bdc0b38c7054643d1819142336221f242b2f2d1c0c0e1b2824 +242f2e2a1a0a0a1b2d3639292c332e1e0c16263e34372a2f3b2d160c111b +212526272a38352d4f2d54bfc6c4d8adb8cfb81e3d363736363636363533 +3536353434363838363433343432304a352d2c3b313f3a2e30321e3e2b42 +1d563446483923617b8a7f6ea09d999a9b9d9b999a9676522f5e44271406 +c8725a8c7600c462aa458c987c59757b6d53454a4f4f696a676e467ca8bb +e848140b130e070d060b0609090f1f0f0e0f0d0e0f0f0e0c0a0306080408 +0d07060507080d0e0e0e0302061a1e1a1114061d1e1a0b111f0e1a10141b +1916140e200e0e121d18081d1919362e140c0227200f13101a171411150e +04536800001900004c5b1e34070f0c0b0e13140e0c0d151310101111100f +0f0d0e100f0e11151211101011111111071c0a060901120b090c0c080505 +060545320a100718231a14000300101a151e2b3b31281c3a201f180042b4 +b8ba92b9ccb2150f1c1909220d0f100d0f1414110c15110c0f0b07130f0f +0f1113131210100e0c0c0f1112120c0c0c0c0c0c0c0c0d0d0d0d0d0e0f10 +150f010f251600092800131f20000e1d86500d05231d0d1c0d1518171619 +17170e040c1b1915191b331d0d1324160e1a04120505114d94afc06c0d00 +1b1a110b0804050c0700021124342e1101070f06050306080b0d10110113 +0d020a0b070f0e0d0d0c0a090a0b0c001700458dc16b2f192d1f0503011c +231f262b262117050913282d2321221d22170d0c151e211f302c29221306 +0914221a373127352106070a141c1f201f1d05231c07120b0a0000000000 +29cf290c121211110f1010110c101314131111121b181513131312111005 +17181ab6e9d5dd445dab1000a345dad5e3e2701a4995cbd7d76968676a6e +706e6c6d6d5338235e4f3a2b19cf755d928404ca5e9429748b8263757567 +4c3b3f44425c5f5c643f75a2baf155231a221d161f181d181d1b2331211c +1a1818191916140f06070905090c06060505080b0e0c0d010103191b190e +13051d1e1a0b1422111c14181f1d1c1a1424121216211c0f2420223f371f +170d322918201f2d2e302e322a1e6a7d0a0329060e64763b532933302f30 +35332d292a312f2c2c2d2d2c2b2b292a2c2b2a2d3332313030313133332b +402e2a30283932313434302f2f2e2c69542a2e2130382c20040e041e251c +2029392f2a264c3a413f2868d6d5d6a9cee1c92c2a393a2c453335333032 +373734323b39363b39384137353537393938363634323235373838323232 +32323232323333333333343536383227364e3f2a3451243a433f132b389d +641f16302713200f15181716191a170b030c22222324253c2519243c3735 +40242e1f1f2864aac5da882a213d3f3934312d3138352c324354645e3f2d +33383232333334343638392739332831332f37323131302e2d2c2b2a1731 +125aa0d0783a22342408030019201c232a242117050813282d2321221d22 +170d0c151e211e2f2b2721110507132019353025341f060c12171d202326 +2b1a3f3b28322824061a060c1144eb462a33333435363739383334373837 +3535363f3c393737373635342c3b3a3cd5fff2f85c75c32806ba5df2effa +f88024498bb5b8b24a484444454645454c513d29175447383127e1866ea0 +8f0fd86fa9408a9d8e6d8181715444474a496365646c477dacc2fa5d2a21 +27221b211a1d181c1b2131211d1c1a1a1b1b1917130b0c0e0a0e120b0805 +080a0e100f1206060a1f221f171b0d252622131d2b1a281f232a29282620 +2f1b1b1f2a25172c2829463e251d133832212826333434343a352d7c9222 +1d421a1c707f41562a33302f313736322f3034302d2d2e2e2d2c2c2a2b2d +2c2b2e3331302f2f30303232293e2c282d25362f303434302d2d2d2b6753 +272c2030392c20051005212b262c36463c362f503b42442e71e0e3e4b9df +f2d73a33413f2e473436353234393936333c39353a37353f373636383a3a +39373735333336383939333333333333333334343434343536373c342835 +4a3b232d4b1f37414115313fa56d292039311f2c1b2124232023231f1409 +142827262a2e4530252e46403c492f3a2e2e3a76bfdaeb96382a46453b36 +332f3239352c324254645e3f2e343a333535363738383a3b283a34293032 +2e36302f2f2e2c2b2b2a2a1832145da4d57e40273c2a110b0a222b252e32 +2f29210d0d152a2f2523241f24190f0e17202323373332291c0d121b2b21 +4038303c2a0e12151e2225282c2e1d43402f3d3635172913191e4ff64e32 +383836353534353532343738373535363f3c39373737363532293b3b3eda +fffaff667fcd3210c267fefcffff8d2641728c816ea3a09d9da0a1a09d99 +92704a335c43272f00d5651846ce22c50b814b9d90726175715e4a424952 +536c6a6a6c4570a1b6df710908120d0c0d050a0408070f1f0e0e0e0d0d0f +0f100e120807090305080014090f0a05060305091317130f04190f22040c +13081d141c0b0e1f120111242e1a1521111e091a06041b212f1f1c150500 +110f05031f0e281b0d1c4db9b1bc95af928427202a00140c090910100d09 +0a131110101111100e0e0e0e0e0d0d0f11141313131211100d1100190c15 +0a6a340a0c0c0a08080c0e3a32020c0717241a1b09130910171a14141e15 +222a34130d0f0eb2c8567adc8d5fd8871b19071e0712121210141a19140d +0f0d0b0d0b090d0c0e0e101213110f0e0e0d0e0f1010100c0c0c0c0c0c0c +0c0d0d0d0d0d0e0e0f0a0f0b121c0f00030f0919070e0d1e0d000712131a +1a10040b11131110131313311000090913130e091122131b12080c22c95c +252f14150c204823100a000b010a0004100a000d2b3a18030d150b080e07 +040505070b0f10071f11000a0d050f0c0d0d0a09080709181006090a0000 +12140c1e1d120f0b1e20212118152123110b0c1c1915242a2b2a20151319 +1f201e211e1c19120d131e221c1e1f1e1f1e19090c1217191b1c1a101810 +01130b2467433e54292fe95c1a1312100e0e1010130f111313121112131e +1a1614141414140a0d1e1300b765001e4c44d7b015c37ac34f006bdd482c +94c4d7da6a6a696c7172716e6b694e30275d4e3b4804de681b4ddf33cd08 +6e328585786b73695740373e45465f5d5f613b699bb4e87e1817211c1e1f +171c181c1b233322201e1d1d1d1d1b191c120f0e080a0b03150a0e0b0407 +0206081416130e04170f22060e170c2118221114251a08182b36221d2919 +2613241311282e3d2d2a2313021f1d171a382b4538283362cbc1c8a1c0a7 +9a3f3b471e362e2b2b2f2f2a26262f2d2c2c2d2d2c2a2a2a2a2a29292b2f +323333333231302f33223d303c31915b32343432303234366156242c2431 +3c2f291721182226241a161d142837492f2f3433d4e67291f1a072ee9e36 +3628412a38383533373d3c37333737373b3c3b3e36343436383937353434 +333435363636323232323232323233333333333434352d32313945392b2e +3832402e302c3d2a12222b2a2d2b1d0e14181a18171a1c1a351405161a26 +261f171f30253633313342e5763f462b2b223a6440322f22342a332b303e +3a2f3f5f6c4a353d4337313a34343232333437382d45372432372f393331 +3131302f2e2d3a322425240c0825251b2b271b160f202223231c19282a18 +1011211e1a292f302f251a181e2425232522201d16111722262022232223 +222016191d1e2022272c2a373324352b40815d586e444bff7a3934353435 +3537393a3335373736353637423e3a38383838383134453919da860c3a68 +5ef2cb30db92db670580ed512d8cb1b9b44c48444445464544474b351f1b +55483a4d12ef7b2c5de93dda1982489b9584747e745f483f444c4d666467 +694471a5bff1861f1e26212223191e191b1a223221201e1d1d1e1e1d1b1e +1412120c0e1008190c130d090b070b0e191e1b160c22192c121a22172c24 +2e1f22332718283b432d283424311d2e1c1a31374636332c1c0e2a282122 +3d2f4b3e314173dfd8e2bbd4b8a84b444d21372f2c2c31312e2a2a322e2d +2d2e2e2d2b2b2b2b2b2a2a2c2f3232323231302f2e32203b2e392e8e5a32 +3434322f3033355e54232922303c302a18221b262d2e28252d2434404e32 +313a3bdef180a1ffb183fcac3f3e2d432c39393735393f3e393437363639 +39383b35353537393a383635353435363737373333333333333333343434 +34343535363134323841352427322c3d2b312e423018293232343326181d +2224221f2223223e1d0e1e212c2d27202a3b2f3f3a353a4df1854e583d40 +374b724e3b3727362c352c313e3a2e3e5d6b49343d4338333b3736353536 +38393a2e46382431352d37322f2f2e2d2c2b2b39312426250e0b292c2233 +3024201a2c2e2f2f2724323420141425211e2c333333281e1b222729272e +2d2b28211c222d312b2d2e2d2e2d281c1f232426282b302b3935283e364e +906a657b4f56ff823e39373434323435373335373736353637423e3a3838 +3838382e31443a1de08f1546736bfdd639e59ce5731591fd5a2877898373 +a6a19e9ea0a19f9c9d936e43395a3f25101bec903154c10adc004053a38e +6d5d6e665143414a565b6d666e6f466096b4d2a7080f1311180c080d060a +070e1d0c0b0a08090b0b0b0b1a0e0d0b06080b040700100f090f0f150620 +000d084d898331241e4d2e1a190f4b2d38454b412018261d0f4216024955 +534300342e266d756446483e2e241f0b292007163885d3efcab496320c38 +0e130e0a080b0e0d0d0f110f0e0e0f100e0d101212100e0e10100f101214 +1514141214021a0c160a6832100f0e0c0b0b0c103438040c0b1322170c14 +120f06131709101a1012151e150a101592dc1200110a32e7930b0e0a2105 +13131312171c1c16190f070301070b0b0b0c0c0e10100f0e0c0e0f100f0d +0b0a0c0c0c0c0c0c0c0c0b0c0c0d0d0d0d0d081518120a0611211c111610 +150d130e1c1f1b10101c1b0c0a0f100c0c0f11120d15190f060a12101602 +18162f1a0c1d24d9eddae2e9d0e1c62b1424100c04110c130a0005253226 +0b0a0909090607080805030404080b0e172d1a020c0b000a0a0c0c090807 +0606000e100d0e160b0c16131509070c081021130f12131717091a0e1c13 +0d180e0b190b0003101c1c180d141b190e070c161225080a1c13140b0a0c +0f1112131312160608150d0e40b3d0d0d2cfc0d651001412110e0f0f1113 +12141312101115181916110f0f1010100f1d1207069a8c24784724c9b2ae +7cb197b90f08ec5f2366bad3db6b69686a70716f6b6d684a2a2d5b4c3929 +2ff596375dd31ce6002f3c8e8374686d5c4738363d474c5e5963643c5990 +b2dbb4151c22202a1e1a1f1a1e1c233221201f1d1e1f1f1d1a281c18160f +1112090a0111130a1210180623001008508985352a245334222117523641 +4e544a2924322b1d502410576664550b46403a818774585a5446413c2a46 +3b1f294991daf9d9c6ab4927552b322d2a282b2c29292b2d2d2c2c2d2e2c +2b2e30302e2c2c2e2e2d2e30323333333436243e303a2e8f593635343433 +3336385c5f282e2b313f311e26242219242512131d13192335322c3136b0 +f62904221b43faa9262b2b442b39393635393e3e393f37312f32393f3d35 +323234363635343234353635333130323232323232323231323233333333 +332b383e3933303c4e473c3f37392f342f3f423c2f2b352f1f1b20211d1d +202321171f27211d232b2728142a2c4c3d354642f3fff1f9ffe6f7e04731 +4635332d3d383f36283557665d3f3e3b393734333638363331303133343d +53422a36372c34313030302f2f2e2e1535322c2c3224252d2a291c181a15 +1d2e201c1f2025251a291d2b221c271d1a281a0d101d2929251a2128261b +1419231f321517292021191e2120201f20252a342a2e3d32305ecfeaeaed +eadcf36f1f3535353536383a3a363635343233373a3d3a35333334343433 +41352a27bbac4494633ee3cac692c7adcf241afb66235da6b8b84d484442 +42434140474630161f5345382e3affa6476cdd26f20e4250a1917e6e7565 +50403e444e5163606b6c45619abde4bc1b2227252e221e211b1f1d243322 +21201e1f20201f1d2b1f1c1a1416180d0f0416160f17151f0e2a09191259 +95914136305f402d2e246245505d655b3a344036285b2f1b62706e5f1550 +4a438a938366685f5047422f4c442b385ba7f4fff0dabc57325d2f342f29 +272a2c2c2c2e2e2d2c2c2d2e2c2b2e30302e2c2c2e2e2f30323435353535 +37253e303a2e8e5837363534333334375b5c262d282f3d3020282828202e +3221263024292e3b362e383fbbff3915342d55ffb72f3330462c3a3a3837 +3b40403b4037302e2f363b3a343333353737363533353637363432313333 +33333333333332333334343434342f3a3f382f2c354740353b3439303934 +43464134323c36262328282424272728212b322b252a322f322036375241 +374a4cfffffffffffbfff1553f4f3d382f3e394037283556645a3d3c3a39 +373434363a3a3534333535374056422a35362b323030302f2e2e2d2d1434 +332e2e3528293330302320231e2637292528292e2e2230223227232c241f +2f1f1516252f312d232a312f241d222c283b1e2032292a22252627272526 +292c342a2f3f383968dbf7f7f8f5e7fb77243a3735343334363736373635 +3334383b3d3a3533333434343341372c2ec4b74fa26f4df0d6d09dd2b8dc +352eff76234c818376a5a29e9fa1a3a09ea3976f40415a3b201e0962b0c6 +9f3e10870e2d6d9883675c6357473f444c59606f6170764d5289aec3cd20 +0b130e19080e120b0d090f1d0a07030405070809081b0f0d0e0c10140d11 +01292a16170f163208001513d37d7eb2640890730b251cc3eeeca7c6f4b5 +48201134dc3f73deb8d0dc483e2560ebd0d0bcd4b4c4241e251714123998 +b6e0e0e2ceb72f2e390a01110c0a0d0e0e141a110e0c0c0e0f0e0d151819 +151213141216161615141312100f210d070a000f0717110d0e0c09070827 +38000b080c1c120e1b08050c565051566d57470e1b2217140019ab849546 +0f0d824304171a0a231011121013171813190d0e0b010000000e0d0b0b0d +0e0e0d0b0e11110f0c09080c0c0c0c0c0c0c0c0a0b0c0d0d0d0d0d140a07 +0b100f03000d0b0c090f0f110e0700000b131314190e11110d0c10131425 +1a1f1a2000001c0e0a2a0a1c0e000a00af55000e0100000c2813000f1b03 +0c0b0804092234240800010c0c070606050805040404070a0b101d100209 +0a040a0a0d0c090806060627000a100f011d0d0a14130d16171518180913 +2212071b374b292a160b180d1709111b1d181311121615171d23241f1a03 +261e1316161c17111216161616171401080f10051308080000000000000d +22121210100f10111214141311101116191714121111121211080f1f210b +3fcd289ee875ad67a7c7e168ec1c00bba22462a8cdde6a67666a6e706d6b +726b4c27355b4836371f6eb7cdab5224930d1c5683787067604d3c34373f +4a516052636b434a81acccda2d18221d281a20241f211e24322221201e1f +1f201e1c2d211c1d1a1e1f1616062c2f191c121b350c001915d77f82b86c +0f987a142e25ccfaf8b4d1ffc055302346ee5185f1cce3f25e543b78ffe6 +e3cfeacce0423d44342f284ca5c1e6e7eedec9444554251f2f2c2a2b2a2a +2e342d2c2a2a2c2d2c2b3336373330313230323232333231302f2e432f2b +2e24362e3d373334343131324f60272f2b2c3c2f232e1d1c206a605c5d72 +5c502034413a320f33c297a6551e1c95591f343b2d493637353335393a36 +3c3538393232322538333131333434333134373735322f2e323232323232 +3232303132333333333337302d333a3930263836353236333234332c2833 +39343336272a2a2625292d2c352a32323c121937242040223b342c3311c9 +6c0c25180f182645301334442c383734323954685b3f2d38403e37343233 +38363431303030313643382c35383236312f303030303030511e31342e1f +3b2a2933302a2e30292c2c1d2736281e33506140402d212f232e1f282f31 +2c2725262a292b313738332e173a32272a2a302e2c2d2d2a29292c30232f +393a2d36262406170918160e2c433535373738393a39383635333233383b +3b383635353636352a3141422c5dea45baff8fc47dbddbf57cff2f04caa9 +235894b1bb4c47434241413e3e49483013275341343c2a7cc7ddb95b2d9f +1b2e6a9486776b6756443c3e464f5665576c734c558eb7d5e2331e27222d +1e242820221f253322201e1d1e1f201f1d2f231f201d21231b1a0a31331e +2219213e15092421e28b8ec6791fa58a233d36ddffffc5e3ffd2663f2f54 +fa5f91ffd7f1fd6b5f4882fff3f4e0f8d8eb4a42493a36335ab6d5feffff +f5dd55535d2c21312b292b2b2b2f352e2c2a2a2c2d2c2b33363733303132 +3035353535343332313044302b2e24352d3e38343534312f304e5f242d27 +29392d2432222229756f6e708670612c3b463e3a1a40d0a8b868312fa467 +283c402f4a37383735373b3c383e3537372f2e2d22373432323435353432 +3538383633302f333333333333333331323334343434343b312e32363529 +1f312f312e35333737342c2a353c39363a2c2f2e2a292d2e304239403e47 +1c2442312b4b2c40372d371bd67c1c372a242c37533e1c3c482e39383532 +395366583c2a353e3d373433333c3a3634333433343946382b3436303530 +30302f2f2e2e2e4f1d303430213d2e2e383830383734353726323f33263d +576c484b352c372e362a303a3a3730302f3532363a42413e3722433d3035 +333b36333433312f2d2f31222c37392f3c2e2f132414231e163148373736 +3634353636383736343334393c3b383635353636352b3243473568f853c8 +ff9ed28bcae6ff85ff401ae1bb284c737f7ba4a29ea0a4a6a5a2a3966e3d +465a381f2a070927011400001616317f8f795b5b564b404047515c66755b +6e7d574a7ba2b7db5300170d13100f130b0d090e1c090402020305060706 +1a0d0b0e10161a14120f5a726c7877826e101e150dc11500228f9dc24e13 +2e00254686a9c692230f0f2b68f051a3be3061d4682d128deb655d3f3449 +ea330f0b0e261b21a65a5a5f8871830a292a1918100e0e100e0f151c120e +0b0a0c0e0f0f161b1b16131414111b1a181613100e0d071a0a0e15140614 +1e140c0e100c0604133200050402160f211f100b2ebc757d668684b94737 +140c330886ee88c8e79c1d6fcb092c0d12090c10120e0e11131110091314 +05060e0b12100c0b0b0d0e0e0b0e11100e0c0c0e0c0c0c0c0c0c0c0c0b0c +0e0f0f0f0e0d1209080b070a121700111004091615090a0504090d020216 +1013130e0d11141831131d3f995518002980b42e112723030e02322a4868 +74c9c7520d1b05336f0007000f2f361900000700000c100a060706050405 +06090c0d060706060809080b0b0e0d0b090808060016110014140e08000a +080b1203031315101311030b2a432000130f0c180d21110e0c0d13191e1f +1616130b070d192324002023131c0a0d181a1d1f1f1e1f1d140907081302 +121e22250b1318141b071112111111111011131616151415151718161414 +161615151f060f1b1524cc4b0064bc89b51d95ef6de34e1680e4363492c2 +dd6967666b7072716f726a4b243d5d4735431e152e082213152418236a7d +716466534135353a424b55664c61724d4273a0bee6600c241c221f21251e +201e233121222220212223211e2f221f201f25281f19165f79717f7b8972 +17221b11c719062998a6cb571f3a02305393b8d3a1301e223e7bff67b9d4 +4878ec7f482ca8ff7f74564b63ff512e2a2b413133b1625e659481951f40 +4534362e2c2c2d2b292d362e2c29282a2c2d2d343939343132322f373634 +322f2e2c2c263c2c3039382a38413732343834302e3d5a232c2824382d39 +34282444d2868a6e8c8ac45952352f50209cff99d7f6ab2c80de21492e35 +2f323635313033353433313d42363a453f3c363231313334343134373634 +32323432323232323232323132343535353433382f2e3331343f442d3e3a +2d303d38313c3b36393b2b2a3c323535302f3336354729375db977381843 +98cc49304d4f2c2c1c49415f7f8ae2e16f2a3d2a5c982b332b3d5f684d35 +313e35343e4038323537363432323231322c2d2e30343739393230313231 +3232331a403b1438362d2a22312d3033241f30302b2f2e21294b64401e30 +2d29362a3f2d2a28292f35383932332f28232a354040193c402f39262b39 +3b3a383736393b383234353b28333b3d3f272f35323a28343538383a3a39 +3835353534333437393a3838383a3a39373e252e3a3340e8650b7bd19fc8 +2fa5ff7ef55f268ceb352a7fa8bb4b4741414142414047452f0e2e544233 +4826233e182f1b1d2d25347d8d7c69685a4a3d3d4147515b6b516a7a564d +80abc6ec66122a2127242529222421263221201f1e1f2021201e30232022 +22282b231f1c657f778784917d212d271dd3251239a7b7da682f4a144264 +a4cbe6b44331314c8aff75c6e25486f88d5339b3ff8c86685d72ff59332f +2f483c41c377777fae9aab324e503b38302c2a2b29282d372f2c29282a2c +2d2d343939343132322f3a39373532302e2e283d2d3139382a38433b3335 +38342e2c3b591f292623372d3b372c294fdf969d83a2a0d6675b3a33582c +aaffabeaffbe3f90ed2b51333730333737333235373635313c403336403b +3b3733323234353532353837353333353333333333333333323335363636 +35343b302f322d30383d263736292f3c3c333d3b373b3b2d2a3d34373631 +3034373954374468c481432350a4d65235504e2e3629595171919ff6f27d +384632609a2c342c3d5f674b322e3b32323d403833353b3a383735363738 +2f302e2f333536373131313130303030173e391338372f2c283635363c2b +2a383b343a362b31546d4b293e383741384a3b3636353d4147463d3b3a30 +2e3240484b2147483a4131334042403d3b3a3a3b362e2f323b2b3843484c +323a3d3a3f2d3637373736363335363737363536383a3b3938383a3a3938 +4027313f3d4cf6761c8de2add73db2ff86ff713da6fe3b205f777ca4a29f +a1a7a9a8a69b8f6937485a381f0e3218212110170d0e2f2e789381545450 +453c424a525d6879566a805f487299b6dd85002114141e0c10080b080d1b +070704030507070807190c0b0e0e1519121512607258554248391a051019 +76643c282c5380260e0d2952382d367a761814231815a6bcc8b4bab9970b +1d0d58d3cee2d4beaddc0d141e17140088e41304d6aa83be8d12291c060d +0d10110e0c111a120e0a090a0d0f0f13191a131012110d14141413141516 +161800140c100a130e1e120c1216120c080a3000070601191211020d0936 +db352a404a49d95440081c061290e02f0345dbcfa9f003051b0f140d1315 +100d0f12110f060a09011a475b12110d0a0a0c0d0e0b0e0f0f0d0d11140c +0c0c0b0c0c0c0e0e111212110f0e0e170808121009070209100a0a0d0e08 +0e030e060113160c0e131816111014181c1527210082aac5b4d6a5840e0b +0b0c141c35dbece8deb8de58101214030e1116061a31341b010009040907 +00010a0c0704040405090c0e0e12090b110b0709070d0f0e0c0b0a0a070b +040116000e0d0e0a0d01080d001340919d9f918c8d5c0e07197eb0a7751b +01753a040c4b8799909aada7691f072d609c197ec7c0aa360a19181d1f20 +1f20201610151343151b0f1b141d250d1a19151111131313111010111517 +18171414151311111315131312092718131a0061dbd4dea344d82326a584 +b0f1d5e2ba213680b8db6967676c727776736c65472141604938284a262b +291a281c172d2066837959594b3a31353e434e596d495f75553e6a96bae7 +8f042e2123301e221b1f1b212f1f24222122232422213124202222292b22 +201b697b615d4a5041220d18217e6c4430375e8c321c1b375f483c478b87 +2a26362b28b9cfdec7d0cfae22342772ede8f7e9d5c7f82b353f362f119a +f11c0bdcb693d0a2294437232b2b2c2e282429322e2c2827282b2d2d3137 +38312e302f2b30303031303334363820363034313a3241352f353c393331 +3157202b292439302b1c26224cee4436475154e6675b293d232aa6f34013 +52e8dfbaff1b223c323a313737322f313434352e363a33518092403b3532 +32343536333637353334383a323232333233333232333436373736363d2e +303c3a36342f363d373435342d353342383141423636393b393433373b3a +2c3c3b179fc7e0ceedbc9c292a31363c3a4ff2fffdf3caf36f2a2e342835 +3a42334a61644d35313b363b392f2e37393436363635353535363a31343a +37353733333332333334343438312b40253531313236282f3221345eadb9 +bbada9aa792e293b9ed0c7953b219257212968a4b5acb5c9c3873d254e81 +bc399ce5dcc450263b3d3e3d3b3a3c3f38373d3b6a393d2e38313a422c39 +38373334373a3a3a3937333437383737373735343436383a37362b463732 +371179f2eaf1b554e83132b291beffeaf7ca293472a1bb4b474244464645 +44423f2b0a31544134294e2f3534232f231e382f7690845f5d5142373c42 +48535e7150677d5e4975a1c3f0980a3427283422241f201f22301f222021 +20242221203124212121282b2224206e826a68555b4e2f1a252e89775143 +4b709a3e2728446f584f599b973834453c39cadeecd6deddbc30423481fc +f7fffce5d4ff333a44393619a6ff2d1ef2ceaae4b3374d3e272d2b2d2c27 +2429322f2c2827282b2d2d313738312e302f2b3333333331333435371f35 +2e34303932433931373d38322d2e541d272520362e2a1d2a2957fd574c61 +6b6af9786632442b34b3ff502363f9efcaff252a41363b31373833313336 +36362e3537304c7a8d3e3a353232343736353637363433373b3535353333 +3232323234353638373638402f2f3a36312d282f3832323535333a354039 +31414335363a3d3b36373b3f423a4d4c28afd7f1ddfdcaa8322f32353e44 +5cffffffffe0ff813b3c3f313c4045364a63644c33303a353a3831313a3c +373737373738373a383c33363c383537343433323232323231352e293e24 +343133343a2d34382a3d68b9c5c7b9b7b8873b3547abddd4a2482ea26531 +3776b2c3bac0d4ce91472f578ac744a7f0e8d15d32454647454241404239 +363c3a69393e3140394248313e3d39353637393936353434363635343333 +363636383a3a3935342a483a353f1a85fff8ffc363f53c3ebb99c7fffbff +d92c28557582a09e9b9c9f9fa09fa1805d2f525b2e141b1c22272523242a +2c274e858b6c555141413e464b5d51687a436a7573355e8db2c8be131914 +130d11161a100c1b1b040c04070a04070b071f0709090e1c140f14094355 +aac7c19e8c25200b174285b2cbb5b998111f08267fa1d6c5c8e2bf32181c +3ea8a8c5d4c5ccb515280245b1add2b5d8df9b14141418130c92d13482ed +1300c69e1126011a0e0e0f10141515130c0d0e0d0d1012121118150c0e17 +150a1413161a170f0f15140e0b0a0f12131320181111100c0a0a14290908 +08100c120c110f030fa2816f6c737ca62c18190b191504be7100262288c9 +a3071b0c1311141314110e0e0e0f0f030a00040b352c200f060a0c04050c +14100c0508170d08120e0a100017111117121113100b111f7a23081c0e01 +0d090b08070b0e0d0e12090e1414110e1215181b1b1319251b151a182028 +81afa0e8dcbcd44616121416121030638897acebbe7b0a1406170e021c2e +2e0e00040f0c0c05040a0b060406000904000b2c352632312f2d2c2d2e2f +3234342f2a2525262625201e202123251f1a261f1b1a307fdba18cad94a4 +d900081cca691f7dae5c93820a192688e2ecb1cbcb72201319b7d017b397 +2fa5d9131e231a2717133c1f1b3a320f131c0a13191a1919181717150718 +140b16130b131414141414141413100e0e0f10101212130e141d1c100b12 +1a291e1a2b2415221e1a12110c0c1625549cd3636363666c6f7070765a40 +1f4f66442f343232332f29282b2a2042787f64534e36322f3a3f52465f71 +3a606b692b5487b4cec41c2321221f232a2c221e2d2d18211c1f221c1f23 +1f371f221f2533292222144e5fb3d0c9a6942d2814204c8fbed7c1c6a923 +311a3991b4e9d8def9d74728284ab4b5d4e1d5dcc7283b175ac8c2e3c5ea +f5b6313335393227a9e3428ef92303d9b429411e392d2c2b2c2e2d2a2826 +2a2b2a2a2d2e2e2d34332a2c3533283231343a352f2f3534312f31363b3b +3a423a3333322e2c2d34492928272f2b312b2f2b1c22b38d79767d88b641 +34362c38321dd5830a332f95d9b61f382d3937363634312d2d3032352c38 +2f3c487469544034383a3231383d39362d30403630373331392840353436 +2f2e3334353f4da2493046382e3a383a3635373734343931383c3c373435 +38393c3931374338312f2a323a93c1b0f9edcfea5e33343b39302c4a789b +a6b8f7cd8d1f2f263b362e4f6461412d343d383831303538333035323b36 +2b3b5a61525b5a5856555656565a5b5b57524f4f50504f4d4b4a4b4d4d47 +424c423e3b4e9bf5b8a1c2a6b6eb12243de8873b99c876aa9921303d9ff9 +ffc3dddf8a3b2f37d7ed34ceae41b4e5253f4b3e49342f583a3857512e35 +3f2d333938373736353534263a362e393931393636373838383838333333 +3435383a3c3a35383f3a2a23252b382b24352d1e2b252529303332333552 +8cb447454040414142424c3622063c563826303031333029292d2f274c82 +8b6f5e573c37343e43564a62763f687371345d91c0dad0252c2727212529 +2e22202f2f19241e232420212521371f1f1c1f2d221e23185468c2e1dcbb +ab423b252f5699ccefdbd9b327311c3f9dc3fae9ebffd94c384060cac8e7 +f2e5ebd5374a286ddad3f3d4f8ffbf39383a3e372eb1ed4d9aff3213e7c1 +3348223c2f2c2c2d2d2d2b2925282928282b2f2f2e35352c2e37352a3433 +3439332c2a302f2b2b2c33373a39443c3535332f2b29314424232129232b +262d2e2130c5a3929198a2cd564244353d3624dd8f17433fa5e8c4294032 +3c38353233302f2f3234382e382e39436c62503d34383a323439413b352d +2f3c302f3d3b363b273c3130312d2c3234343f4da44a2f44342935323433 +33383b393d4033373e3c3835393c3e43413b424e463f423e4850a9d7c7ff +ffdef76839363a3b3a385989acb9ceffe4a3324035494237526464422c34 +3d393932333b3e39393b333a352b3b5862535d5c5a5a5b5c5e5d5a5a5a56 +514d4d4e4e4d4a4848494b4c47424f46424258a7ffcab4d7beceff273046 +f39247a5d583baa7313e4badffffcfe9ea94463a42e2fb42dfc057cbfd3b +4e574c55423d6445405d5430343b2930383a393938373736283b38303b3a +323a3835312e2a2a2e31353b3c3d3b3732323532363e3a2b252b323f332d +3e3627322b2b2f3538332e28396a88a3a19e9ea1a2a29f9c7b582352512d +1d1b1d20282d2c2e31373056847d60534e424240484b5c506679495d7177 +3f5581a8bfd456001710100e2e4734120e1a140e0d0b10050f0d0a10040c +0707191718191f697fb1bdc7a18b1600323a5075b0cdb08d651024201250 +78c9eecba27d122623005184d8edd1a080152a2a10789fe0ca9950330813 +27161b001ba0b1b47700298429054a14000e0d0e11141718151312121212 +14151610111113151719191515191e1c16161a1413110f111110101d1712 +12110e0d0e13290a0a091211170b030d0d217e90845e7baab333131b0e11 +1d26c5891196efc5caa8002514111d111415141516181b190b0b0203001f +370a0300040704060b090a12130a08060b13121605000e1b17161615130e +09070c320801130c0a100a0b080b0e120f10131113161512121417145be2 +c4c0c8c8d46e0523075779583e3a43a76c02191112170d6d9c7f9578959d +7c0020270207353613000310100b0d0c10130f0b080a0b1300001a312b18 +0b1413141212111212111314130f0e0e0f12110f0c0b0c0d10130a12141e +15062793b7bebebab367092500789a1c042c88bfa800151201003aaad3c9 +000e25195dc5addad1aecee32c210e002b29261c0b081217251815151b14 +141515171718181c2b231719150c1513141515151513131a1714110f0e0f +10140f0d13181e2934493f4d554446401f2e261b150e0b13224890cc6666 +666a6e71737372593d14515e45383432333736312d2b2e254b7973584b44 +3332313c3f5347607343566a6d354a7aa8c2d85e05241f22224259462420 +29261f201e231a242522281c25202033312d292d768cbdc8d2ac9521073d +465c82bed9be9d7624393425648bdbffe1bb9527362f065d8fe5f8dead90 +263d3d228db2edd8a9644b253248373a1834b4c2c385043d9a412067331f +2d2c2a2b2c2c2c2a2d2f2f2f2e3031322c2d2f31333537373434393e3c36 +363b37363636383a38373f363131302e2b2c3148292928312f362e262b26 +348f9c8e6786b8c5492e382f303b42dc9d23a4fcd2dabb12423537433334 +353433353a3e3f343b363b345e74413531363734333735333b3b322f2d32 +36343b2d28373f3733302f313233373c5c2e293d39373f393c39393c3b38 +363937393938353435383279fee0dce3e3ed831733176587644d4954bd84 +1f3b3335382b87b390a484a0a98d0f3946262e646b4b3136403e37363439 +3c3a3737393c4531304c615c4639403f3d3b39373737393b3c3b37363839 +3c3b393938393a3a3b3135373f362241aacccecec8c172193f1794b5371e +439fd4be132b2817084db8e1db0c2641377de2caf3e6bcd8e83a4033224c +484336251f2a32433838383e34343535353736373b4a45393c3832383636 +38393a3a3938403c38353436393a3d38343636383f46574a565c4b4b4524 +312f33393c3c3b3d4d85b04a484343434645464a3420003d4d382f2e2d2f +32332d2b2b312951817c63584f3a35343e43564a6277475d71753d5282b4 +d1e4690e2c24242341594624202c28262624291f292724281c221c1a2a28 +2829307e95cbdae6c2ae371b4f54688bcbf3d9ad7e233432296f9cefffef +c2952a46471f73a3f6ffefbd9f364c4e36a0c3fde5b66f552d374d3c3f1c +39bbcaca8e0e48a54b276d36222f2e2b2c2c2d2d2b2c2d2d2d2f3132332d +2e3133353739393636383d39313134302f2f313536373641393433322d2b +2a2f4324232229272e28222d2b42a1b4a984a2d3dd5e3f4638353d46e4a6 +2fb1ffe2e9c91c4a3c3a443231323335383c4242363b34382d566d3c3230 +353936363a38353d3a312c282f3c3d412d27333b322f2d2e313232373c5b +2f283b343239333836393c413e3f423a3a3b3a37363a3d3a83ffeceaf4f6 +ff982d4a2e7fa17c645e66cb8e253d3437413696c3a2b79ab6bfa1244d58 +363f6e6f4c3337423e3838363d4241403f434346302f4961594437414041 +3f4040403f393a3b3a363536373a393736353637383a303739443d2d4eba +dfe5e7e3de90324c1f9fc0422b51ade5cc24393624155bc5eee91a324d42 +8af2dafffbd6f3ff545243325d5a5547342d343945373432383131343435 +3638393d4c473b3e3a353c3835312b28282a31434546413c352f2e373431 +3234353d46584c5b6251514b2a363435393a38322e37698ba4a29f9fa2a2 +a2a0967b59216148261d1d2028343b3938383e3a64856c524e453f44434a +4c5d516778564d6d7d4f476d9babdda3001b120f061a2c200d101506050d +040c0010060616141f0e04151616130b864c1b4d707567001a2b00887b50 +5a987a6d08100f27a29a7e8f879992201f2140e3b999a79eb68521241648 +ede0c0d7a9ae9f220f031815240719030209111715082b2e00170e0c0d10 +13181a19110f0f1011121415140e0e15161112171314171c1b1716191112 +110e0c0b0b0e1a151112110e0c0e102709090912131b0c0716080247a6b9 +b2d4a96a2f0f0c23181761ee3d2aca98007adc1d2a180b060c0f10111415 +191c150a090607000f5200000002050507080e050d151007131b1a081510 +19041310121515110d0d060107090b0e0c0d0c070806090d110d0d0f1413 +12101115191c119add39564e4274ee3b1801c09c051309009dd70610131e +160dd4a4737779688ddf3f000a142d47250300060f070717171812080408 +0d0c030116322f0f01090708090807050504060809080605060807070605 +040404040a080e0b110d03167e9690a099908012201907aba5af92929576 +0a191961b9acaabed2a9590023048ecccadce7d19e05221f34a6aebcaac0 +bd7d060a1a0f051812121313161517161824201716141119121314151514 +1312221f1a131010121213110e0e1b3145505d535c5c4d575735352a1b13 +0d0c121f387dbd6767676b6f7273746c593e126256403b36343840413b34 +32342e577a614844393034343e405448617351466673453c6699afe1a902 +2821211a2e40341f2224181620171f12251e1e302e39291f30312c251a95 +5a295a7d82740a27380a96895e66a48a7e1a23233ab4ac8fa099aea6342f +304df2c6a9b4aec6973237295dfff3d0e5b9c2b73f2e24393441202d1411 +1a252d2c21464b1f362d2b292a2b2d2e2e2b2b2b2c2d2e3031322c2c3333 +2e2f353234373c3b373639343535353332323239332f302f2c2c2e304729 +2a2a33323c2f2a34231858b2c5bee0b77c4429284135347cff513cd7a50b +8cf238483b302c3031323333373a3f3a3337383e284c8e32313234353534 +33372d353c372b373d37253434402d3a333031313034373732312f333839 +3a3a353937373b3a3633363b3b383637383a3d2fb8f95570685c8bff502a +12d0ac14231a0eb3f223323541372af0be868888779ef2561a2b3a577658 +3929383f34334040413d3533393d3e363449666141313935343231302e2c +2b2d2f302f2e2d2e302f2f2e2f2e2e2e2e322f312e322e1f3095aba0b0a7 +9e8b22373422c3bcc6a7a7aa8b1f2e3078d0c2bacee5bf73154325aee9e3 +f1f7dda5143d4054c3c9d6c4d7d49521273932283c34343535353736383a +4642393937343c3537393b3c3b393645413b3735373a3c3c393530374959 +5f685d6461525a5a38383333363b3a3b3b4176a64a474243444445474434 +2100504735333232373e3f3a333235325e8269514d433537394244574d65 +77554d6d7b4d446ea6bbedb50b3026231b2f41352124271a1d261d251528 +20202f2d36241a292a2927219c63366a8e93871d384817a1926b7ebc9985 +1a212240c2c0a9baafbfb13f3f4360ffd7b9c5bdd5a542463a6effffdff2 +c6cdc14733293e394525341c18222e3834284d5122392f2d2a2b2d302f2f +2c2c2c2d30313334342e2e35373233373433363b383231342e2f3130302f +2f303b353132312c2b2b2d422423232c2c352926362a256ac8ddd8fad192 +5536344b3b3883ff5c4ae7b61b9aff435041362f3030313435393f454037 +3737392245862e2e3133373739393b2f373b3629333c3b2937343d29372f +2e3232323336342f30303236363737323634373b403c3c3d403d3b393a3c +414439c2ff617f776d9dff633e26e7c32b3a2e1fc1fb293437454038fecd +979a9b8ab0ff682a3a4765805c3b2a39413736444445433b3b4047453935 +4a646240313935353435343433302c2c2d2c2d2c2d2f2f2f2e2e2d2d2d2d +312e333037352a3da5beb7c9c2b9a93b453d2dcfcad6b8b8bd9c323f4086 +ded0cadef4cd80235034bdf9f7fffff5bf2b4e4f63d3dae7d5e7e2a12a2b +3b2e243833333636373838393b47443b3b39363e3737322e2a292c32494d +4a433d3631323838342f38495a626a5f6765565f5f3d3d3837383b37332d +2e5a86a3a19e9d9e9fa09e947c5c2a7a4921161a222f3b3e3a393d414572 +855f47493d3e46474d4c5e4f6576653f6680603f57909cd0cb2417170d16 +0e09071023220709180b14081b0d111e1f28110415140f133bca1e1fb768 +5ebf2d210b49cf0900b88c6ccb22251752d80808c8aaabbf182e0351d700 +01bccac0be2131005bc0621cddb2b9ba00212f18001a101d1618261f0605 +122425120f0e0d0c0f13191c1c140f0e1113131315161210131a1d1b1717 +161616151415170f11110f0d0b111515121011100d0c0e0e270a09071012 +1c050008120c6a6f361a2571da6804170c20050bc3c5c2d8810890ce0104 +1d21090c0e10100f1013130c0b07050b000860000608040307090816070a +11170e1f101b111112160713040c14140f101610060a1a150a0c09030b06 +05090e110c0b0d13110f1015191d1f084addcbd0b4c6c7d10f281281edc7 +d4dbacbed6081d1a07270bce8d604c634f6eed70081f48320b00060f0a04 +050e13180f090809060302062033270d00040d08090b0d0c0b0a080e0e0e +0d0b0a0a0a09080a09080706060b0d0e080b13161fca420d120622c67c00 +2250e3391a2a1435ce3e3507a9ad2f285d2a94db373825cc9b153d3248d5 +c1150c69eb4d3148264cdd831e151e101d16151614141313120e15171412 +10111610121315151312101c1a1816151618170f151513213c4e515a7971 +5a646355573b2c19110c0b111b2964a56766676a6e7071726a5a411b7b56 +3b3333363f47443c353435396678523c3e322f3638414155495f7160385f +765634508e9ed2d12d21241c28221c1b223531191c2b1e271d3025293839 +422b1e3231282449d82c2dc5766ccd3b2f1957dd170cc5997ddd35382965 +e81817d7babbd0293f1463e91013cedcd3d134471371d5752cedc4cdd20e +4050391f372931292937361e1e2d4142312e2d2b28292b2e2f312e2b2a2d +2f2f2f3134302e31373a3835373636363534353732343533313235393430 +2e2f2e2b2c2e2e472a292730323f2922272d227d7e42263480ed7e1c3429 +3d2224d9d8d3e89117a1e41c224046313335343332333638333434353f29 +419934383a36333434313d2c303439303f2d30262b323a303a2b2e333331 +37403e3432403c32363631393735373a3a3532343a3937383b3e40402668 +f9e5eacbdddee8263d2793ffd9e6edc1d5f1253c3b2a492beba977617664 +83ff8c2845705e3a2c39413a3131373c413a36373a3835343953665a3e30 +343d363737363534323035353534323231322f303031302f2e2e3234312b +2c323239e1571f221430d18a123a68fa4e2f3f294ae3534a1ec0c4443b6e +3fabf6545846ecbb30534457e1d02f2985ff67485f3d63f79e3d37423441 +3a3938383637353630373936353334393336373a3b3937343f3c3938383a +3d3f363b39323d5461606381765d656456583e35313338393a3936629645 +44403f40424345423726066b4c322e30353f47443b3635373b6a7f594446 +3834393d4545584d6375643f667e5e3c589babdfdd362a2a212c23201c26 +37361d2231242d2033272b373841281b2e2c252b52e13538d08379da483c +2662e82219d8ac87e13336296bf82f34f4d4d2e2394f2471f71e21dceae1 +df4355217fe6843bfad0d8dc1645553e243b2e3830303f3e282534474834 +312f2d2b2a2d3133342f2e2d3033323234363230333b3e3c373635353532 +3132322e30312f2f2f3337363230312e2b2b2d2b442724222b2d3925202a +342f8e935a404b97fe8c283c3143282be4e6e3f8a12ab1f2272a464c3332 +34343534373c3e3a3837353b243a923035393535373a37443233363a2f3e +2b31272c31382c392a2f363633363e3b3132413b3134332f373435373d3e +3b393b3f3b393a3e4446473072fff2f9dbedeef8364e3aa7ffeffcffd2e3 +fc2d4140305338f9b78772877594ff9a35507a6740303a423c34343b4045 +403c3d413f3c3b3d56695d4231363d363738383736343034323231313130 +31303031333231302e3133332d31373d46f16a35392e4befa4204474ff5f +42523c5ff6685d30d0d4554c8252bdff646755fbca43685a6cf9e53e3793 +ff785a714f73ffa7423840323f3a393a383837363631383b383735363b35 +3633322e2c2f32454648443e383536333c39344056656368847a626a695b +5d433a35353937342f244b77a4a29f9e9fa0a09d94785330844822151723 +343e3d36383e3f537b815843463d3f484a4f4f6150617373395c7d6e4349 +7e98c1d17308121018130f0808181e0f061509101018091215111706051d +1b111755cd558ab50028dc2b190356c43b6dc0001aef3a16156dd72e88df +003ff22e161d8ae52b90ee003bea320e13b3e4665ebe3448ec3114001312 +1f171313251a19071b1217331e040f0d0c0f13191d1e261e191b1c181618 +12171413243b3724211e1914131515161415151312151e2512100f11100c +0b0f0c270b08010a0e1c020e0b0800bbb388bbccace950012e0f0b210279 +cfc6c2b0bbdcab181314130b10111312100f11120b120d050a000158080c +0b0403060b0b110e1511191c43293b533f310a0d18050b11100d1019150c +0d170c05100701150e0c0f1315110f1113121113171a1c1c1717a9773e99 +cbb5a601272511a77446a1c89c8f00001a2108006bb7aeb297a0939d4f27 +3833090f000a0e0406151303070309130e00000b3033250a020c0c000405 +0809090809090c0d0c0c0c0a0c090c0a0d0b0b0a09080e0b070b14180f00 +cbb7c6aec0a9b8a61b0027c2a4b0a792a5d85c1d3e76eda3caadcae0df1c +2f20bddcc5dbc7c9d9dc214b62e1baacb7b097eb71182116001212121311 +120f110e101015171310100e100f10111110111014151618191919180f16 +171524404f4e66969d847d6d5a5e4c3823181210141b214e8b6868686b6f +7271726a55372184553b322c3542484136323533446c724936393130373b +4344584a5b6e6e32557364373f7b98c3d57a121f1f2925221b1b2b2f2019 +281e25252d212a2f2b3323223b392b2963db6398c30637eb39271164d249 +7bcd0228fe4a26257ee43d96ed024dff3d2a319ef93fa4ff0e51ff48262b +cbfb7c70ce465eff4e331b32313c302a26362d3222362f34523d232c2b28 +282b2e30313d373537373432342f34313041585643413e39343335373936 +37373534394047322e2d2f2e2a2b2f2c472b28242d313f26322a250bd0c4 +97c7dbbbfc661a4a2c283e1a8fe2d7d1bfcaefc234313739333839393835 +343637313b39333b2f368d3a3e3b343033333236313630373a5f3e475f52 +4b2c34402d3034333036414239343e322d3a332f433c393b3f3e3a36383c +3b3a3c3e3f3e3d3535c59155afe1ccc01b3e3c26bc895bb6dfb3a9191b3b +442a198bd5caccb1baadbb6f4c6160393f2b3a3b30313e3c2c322e36423f +3233406366583d333d3c2e31333435353433313331303030312f2f2f3030 +30302f2e2e312f292d33372b13e2ccd8c0d0b9c6b42c133ad8b7c5bca7b9 +ed7233558dffbadfc2e0f9fa394e41defce0f5dcdceaed376278f6cfc1cc +c5aeff8c364239233838383637353534343333383a353232313335373839 +383534353536393b3c3d3c363c39323d55605b6d9b9e857c6c595d4f4338 +373b3c3b3931518444423f3e3f41434744351f0e784e37302f39454a4438 +343835476f774e3d4035353d4047485b4e5f7474395c7c6d414a86a4cfe0 +841b27263029281f212f36271f2e21282830232c302c34212039372c3370 +e66ca1cc0d3ef242301a6fdd5488de1231ff49252585f452b1ff1f68ff50 +353aa7ff4aafff195eff553237d7ff897cdb5269ff56382037364035302d +3d34392b3d353a574026302d2b2c2f313435433c393b3e38363833383534 +455c5945403b3631323436353536363433373f46312e2d2f2e2a2a2e2b46 +2a2520292d3b24302d2d17e1d8acdff2ceff73214e302e46249cf1e9e4d2 +dfffd03f393d3c3538393a3b3b3c3e3f3a413c33382c3087373d3d363538 +3b393e373b33393a603f455d50482b33402f363a393437403d34333d332d +39322f433c3c3e42423e3b3d403f3e40434747464040d19e63bdefdacd28 +4c4c37cf9c6ec9f1c3b62423424a342596e0d6d9bec7bac57a5467653d43 +2d3c3e333744423238353c4844363744676a5c4138414030343335343433 +3230302d2e2e303031303333343636353431332f2b2f383c3620f2dfeed6 +e9d2e1ce3c2149e6c8d8d1bcd1ff8948679dffcaf4d7f5ffff4b6052edff +f1ffefedfeff457086ffe0d2dfd8beff973e473b253939393a3839363635 +35353a3c3633333335363433303031343c4041423d383332333d3b36425a +676173a1a38a81715e6254473d3a3d3d3831243c6aa8a5a2a1a2a3a19f95 +714333793f22191a25353f3e383b4440607b7253444441424a4a4f52654f +5a6f7c3e51757553406592b8c9b11708170d0c0e0b09141709040c0a0c1d +1004131b0c0e060d271f120e095b66683c00384f001e1100538984301357 +6a0b26181682d9b64d1168971d103024adeec1620e7fa509121444b6eae5 +e4ddc0c31107261d1003171f14200c19070e07293404160f0e0f10171a1c +1d31261e201f181315141d1b1327433f26232019100f1414121413121113 +18212611101012100b0b0f0a260b0800080e1e0005011110cd711573c94b +5a2a0e1c1a290b25ed702e63e7577455161f150f130d0e10100f0f101107 +0e0d05090a04570d0a060504060c0f0b0e1707123498968496889b490500 +110d0f0e0d0d11110e0f140a0e190d0415110e0f15151111121614161616 +1618191947dd6027cc8732e471162c6ce45439e26d56da72131b05220c06 +0300040000000623312c14000d0e0a06060a0f0e0b0c090b0a000014352e +1c0600070e0a0207080a0a0b0a0c0d0a0b0b0d101111100f0f0f0e0e0e0e +0d0c0f0e130e0a0f00504e03363909379901210a77500058370b725c2361 +408e2a19642733ab4e19347382253a4e3b65ae1e65418de6d1a7b9b6c46c +140d1c23060c0d0d0e0f0e10100f070f161313160f100f0f0f0f0f111314 +171a1c1d1c1a1817191613234051546878958d655f68555a402719131111 +16213d6f6c6b6c6e727575746b4e2923794b3a352e364248413735393150 +6b6243353532333b3e44475c49556a77374a6b6b47365f90b8cbb8201525 +1e1d211e1c272a1c17211f2132251c2b33262a222b453e2e20166974774b +04475e0a2d20046197923d2166791b3628238ee5c1581b73a22a24483cc5 +ffda7a299ac0242a2c5ccefff7f6f1d6db2e24453c2f1f30362833203425 +2b26485323352c2a28292c2f2f30483f393b3a332f31303a373143615d44 +413f38302f34363436353433353a41462f2e2e302e292b2f2a462b28212a +30402129222f2be4832682d85c6c3e25353644263dff834174f868876c31 +3d36353b35383838343435362d343631373b35883f3c3632313132342d2f +35242e4db1a88a9894af672b293a3535333033393c393638303441363042 +3d3a3b3e3e39373a3f403f3f3d3b3a3a3763f77a3de29d49ff8d324686fe +6b50f98770f68e313926443028231d22191e1628485a5844293d3c362f2f +333837333434383a302f4768614d3730383d3a323435363638373636312f +2f31343534333232323130302f302f3330352d292a1267651548491945a8 +11331b8a62106c4b1f8672397857a53f2e7a3d4cc66b385593a242556852 +7ac13178529ef7e4b9cecbde86322e3f492c3233323435363636352d3239 +3535383136353636363635353535383b3b3b3a393a3b352f3b53605e6f7b +958c625d66545f4e3c383a3a37353546714743403f414344494530121371 +473a38353d484d463c393d34536e6546383837384042484b5f4d59707d3e +51747451416b9dc4d7c2291d2e26252825232d31221d26242435281e2d35 +272b232b4740322c26767f7e50094a610f32270d6ca49f4d2e6d7c1a3528 +299af5d76e3489b63a2b4c40c9ffe18432a5cb2f363868dafffffffce1e5 +362a4a413423353c2f39273b2d312b4d582638302e2c2d31343536504642 +42413a3335343e3a3346635f443f3a332d2e33353537363534363940452f +2e2e302e292a2e29452a2720292f3f1f29273736f2973a99ed6e7a472b39 +394b3149ff945288ff7c987a3c453b363b3537383a3a3c3e3f363d3c3437 +3832853e3b383536373b3d37383d2a3251b5a8869390ad672c2d403f3e3b +363438353235383137433a3345403d3e404039383a414141434243434342 +6fff874bf0ab57ff983d5393ff7d62ff987fff9a3b432f4e3c322e282d24 +281f31505e5b462a3d3c373333393e3d3b3c3b3e3e3432486965523e353d +433e3637383735353434322e2b2d2f343536353636383739393836313332 +37322e351d7575295e62325fbf21412b9b76268463379e894e8a67b55043 +915460db7d4a64a2b1526677628bd03f8662aefff5cde1dced933c35434c +2f3536383738383937362e343b3636393239363533333335373c3d40403b +352d2e363c37323f59676777829d9269626b596351413d3f3c38302a355b +a8a4a2a2a2a3a19f926f403f6a301a14181d273339393c40446e775f4e43 +4046464d4a5054694f546b8046476a75653d4d80a6bfd05b0719130c0c10 +16221f0b111119173a15112228100e0b14291e122e0a151000131d000711 +091c160308000c0a0f041a1d102f0d1415242e1c271a25240c1906032517 +1e0a13411b0018404320551c0005281a041c1a0f0b151f0f071a0f002437 +0c0f0e0f1012181a1b1a2b1e191e201814171a1f201a27383626201f1911 +1215130e121011111316181811111213100b0c1008260c09020b13240c07 +04000d9dbbbfbec8adea83221a150e2023ec929591f196a07e0c16241a12 +0b0d0f0f0e0e0f1009050a0c080e085d150a05090b090a0f0f0b10020f2e +abb69a9494c27c04000f0c0c0e100e0b0b101417121317100b1014111014 +141112131616161412141b202912bee3b5e06c0ad08324113fdcd2b5e418 +31de64002028000d2600160c14041a40482302000707110c0b0e0b050913 +12110b0207192b330f060307080509111111100f0e0e0e1010100f111516 +161514131211101114121015121707021d107ad00065bf0a0af2330803b0 +7400b16b0052d414455eea2b1cd83613a1ad1d2a63e90042e21237e66a30 +373d5580bec7d79458190f000e0e0d0d0e0f0f0f11111805081412161d11 +13110f0e0f101416191b1e1f22222221201e1a1d2c4252575b596e71595d +68585a3f221511111014222a536e6e6e70727575746a4c25326b3f34302c +2e343c3c373334345b644c3b333037373e3d454960484f667e4142636e5b +33457aa3bfd4611127241d1e242a36331f25262e2c4f2a263a402a2a2732 +463d2f411a252109252f0e19231b2e271418101a181d13282b1e3b181f1f +2e36253028393d26331f1f40343a262f5c36103056573469320e22453923 +3b362822293426243b2e1745582b2e2b2b292b2c2e2e2e4136313638312d +30333b3a36415553433d3d36303035353033313030323536362f2d30312e +292a2e26442b28212a3246302b251928b4cdd0cfd9befc973a322e293b3a +ffa5a7a1ffa7b3962733433c3634353737333334342f2b3035313a348b45 +3a3236363130342f292d1d2846c3c69b919bd2982a223a36343235343234 +39383a38393e39343b3d3a393c3b38363a3e40403d39393d40462ed8fdcb +f68222eda1422d5bf8eccffe334cfa801e3e4822324b1f382e36263f6771 +4f302d39383b343235322b2f3b3a3c3832374b5d653f3632363732363e3e +3e3c3b3b3b3b3a37343335393a3836353433323031323331373439262138 +2b91e70c77cf1a1aff401513c18403c57f0e68e8295a74ff4131ee4c2dbc +ca3a4a80ff0a5ffe2e51fd7c40474d6491d0dcecae7237301c3333343435 +3636383839402d2e3734383c33393937363536373738383a3c3d3e3d3d3f +3c363541535f605f5c6e70585c6759624e393436383634393a5e46423f3f +41434449462e1022653c353435383d43433c3838375d664e3d34313a3c43 +444b4f654f556c8348496b76643c5086aecbdf6d1b322e27282d333d3c26 +2c2b3331522d293c422b2d2a344a40354f2a342b10292f0e19231d322f1e +251f27232618292b1e3b1c252837412e372b383a25342323473c45323b67 +41193a61623f743d182a4b3e28403a2d2830392c2a40331c4a5d30332f2f +2e30333535354c403d4042383235373e3b374053513f3835312b2e343632 +383633333537363631303233302b2c3028462d2a232c3447302b2a2133c2 +e1e4e3ebceff9e3e3432304648ffb6bbb8ffbbc4a23037453b3430343739 +393b3d403a36393b33393389453c373b3d393b3d3a3335242d4ac7c6968a +94cf992d2a4344403e3d37312e33383c3b3c433f3a41433e3b3c3a353235 +3d3f3f3f3e41464b543ce7ffd9ff902ef5a94a3867fffde0ff445dff8e29 +49532c3b542941373f2f476c7550302d38353a36373a3934384342433d34 +374a5a62413a383c3d383b4341413d3a3838363634323133393a3a3b3c3b +3c3b3b3c3d3c3639363b2b2643369ff7208be63131ff512523d39b1bdd98 +267fff3e6b82ff4f44ff613ecfda4a5990ff186dff3c5eff8a4d565d77a3 +e4efffbd81423922393939393c3b3b3c3d3b422f2f39363a3e343c3b3736 +3637393c3d3e3d3a38322e2e393a3737445a6769686376765e616c5d6551 +3f393e3d3931312d4da6a3a09e9f9f9f9d9070475366270f080b0b101e2b +3031314776735048433e4a494e4a5055694d5066824d416374733d446a91 +b8dca10b16130c0e0c091114070902120f3d08091d270a0a0b16271d1616 +161a1321260d280f1e0e170c14130f2015172a142230172229271935272b +29162a211a211825213b111c1b0f20105916212b12132b10131913131618 +130c1f0b120912282212110f0f1114171a19182115121c211c1a1f191d22 +252d363b39222420191b1e1a11151314151817120d13121314100b0b1006 +250d0b040e182b08021a0d0f000f07090707221218271d26130768aca593 +8d9aaec0261b1a1524151516151513111218060d14030700591f0e070f13 +0b080f1407100b10086558696c69765f1219020a090e15120a0b140e1514 +0d0c1013131a17161a1b1a1a1b141315131317222c4016135b772d00194f +19253a223c5c3f3e000e41031714122507091113130b2941390c0d15000f +080e0d0c0e11110b040610131531483003101315120e0a0a0b14120f0c0a +09090b11110e0f1111100d1413100e10111314190d0315130f1d003dd8bb +e0f0b5bad850190c77e9abdce7a1a2de365855bde2beecebcbe4c924342f +d1cac4e2c3c9dc99323e3ebff1decf9e9c7c14261e201416161514131111 +103014101612141a0c151311101014181b1d20212426292c2d2623252b3a +4851535367696f867a616153391e141517191b1f1d3e6d6d6c6e71747372 +684e2e4567352825211b1c272e2e282537635f3c36312c3a3a3f3d454c63 +484b6480483c5c6d69333a628bb6dca71522211e20201d25281e20192924 +521d1e323c22232732443c3129252a2332381f3b213020291d25231f2d23 +2539222e3c222d3331233c2e32352a443a343d34423f592f3a372b3b2b72 +2c37412a2e462d3238302f32312a21382a332a334943312e2b2b2a2d2e2e +2d2c392c2a343935333731353b3e464f54533c3e3b36383c393236343233 +3534302b2f2e30322d29282e24432b29222c364a2c253b2b2b1824191b1a +183626303f36412d1e7fc1b7a39eabc1d63f353734453a3c3d3c38353636 +3c2c333a2c3029854c3b343a3b312c3134252b26271f796666676e867b37 +442e3430343a3731323b3236373231363939413e3c3e3e3b3b3f393c3c3a +363a434a5c322d758e440d336d3a4358405a795a5916295c1f3330304529 +2e36383830506862383b432f3f36363331333737312a2c393c415e775f32 +3a3c3e3b37353537403e3b3836363635383532333534312e3534312f2e2f +3032382f2537322c381a54efd0f2ffc6cae75d251986f9bdedfbb7b8f34b +6b69cff6d4ffffe1fbe33e504bede7e1ffe0e6f6ab404b4ecefff0e4b5b6 +9830443f43373b3b3a3b3a3a3a39573c363c3336392e3d3c38353537393a +3a3a3a3b3e404444403e3c3f4a565a5a576a696f867a6166614c3732373c +3c3a3a3250423f3c3d3d41424744321a3862352d2d2c28283035332d273a +65603d36312c3b3f44444b51674e5169854f436475723c436d95c1e8b321 +302e2c2e2b2830332628212f29572021353f24272a3648413a38383a303a +3c1f392130222d252f302e3d302e40252e3a1c272b291b35262a2b213b36 +313e384a49643a45433644327937424c34374f33373d3633363630263c2f +382f384e4836342f2f2f3234353635453a3640433c383b3335383a42494e +4a31333231363c3c373d3d3a3b3b38322d32313434312b2c3026452d2b24 +2e384c2c2740353727372d2f2b28412d34413a4a3a2e8fd4cbbab2bfd0e1 +4434322c3c33373a3b3c3e3f424a393e4332342b864f3e3940433a383d41 +30362f2f258067616168837e3d4d3b444141433d302f36323b3b38393f42 +4248433d3c3834303532363939383e4c556a403c849e521e40753f4b604b +65896b6a273a6d2d413c3b5033373f404038576d66393b432f3f34363437 +3b40403c35353f40405b71552a383e403d3b3b3b3a43413e393533313135 +353233353636333c3b3a38393a3e3d3d3127393732412562fde1ffffdae1 +fc6e352a99ffd5ffffcfcfff5c7a74dbffe2ffffeffff04d5e59fbf5efff +eef4ffb94d5b5ee1fffff7c7c7a63e4f48493d434342423f3e3e3d5c3e39 +3d38383c303f3e3d3b3b3d3e3f3e3b3733312e2e303337363d4a59616260 +7373798e82696a62503c3a4144423c3529429f9d9fa3a39d9ea2a1722c5a +80b2a89b9aa0ad8d95412d35536b5f474a4c4648444f45504e66584d6175 +6a494b6c6e533c5e71a8c5c547252f262e1b253139220e1a161c1816292d +3921131813371b11120b163b1c120000120813070712040c144d312b0b09 +20172771535b654962494310172106071410111a0804000b044836622810 +150c1a000e0f11101214181a0109060e1639000b170e0a12222a21141f05 +111011202421261e2604443e323c271b1f2513142613161e101e1d0c1b12 +161421171316001608241905121514270611121916182a161d2529172a1e +281f2b162c0b0a0012030c03111d1b2d131f1b1215170c151b08160d090d +090f0354330a090b0a14100d10121015131f4c5f5f53446c61000a0f0d0e +0d0d1011141616161410101012131f0823301b1a24232813112b12171d2d +3326312b5601244f6d44371a384c38090e1d1d161617171d252413031e04 +26543116050d0f0a0e060c15130e0e120f071208113c47260b171810180e +1a08120f1d162b210905010d041b080814131c0e16171712121618151b17 +1311121313130e1b2d213b3a2a7c5d002312292e2f273129a17055613e3c +4e463d4470b4453c193540485945447da032531792a0509fd6c6c52d0929 +0c1d15411b0c0c120817131a11180d031e1516110e0f161b1f1f22172736 +33434d372a2c2e385453363953565e57565d5654472f1c171818171a1c25 +2e69676b73757272797950134e80c0c1b7b0b2bb95983e242943584b3336 +3a343835403845445f534b5e72674443646649325469a5c3c84e313c373f +2e3b474f3826322c302c293c404c3428302c523629231a264b2d23120d24 +1a25191823141c21593d3816152b21307b5c646b50675354262e3a202432 +30313a28221e2821634c783e283027371d2b2c2d2c2b2d3033202c272f35 +5814283229232b3b41372c361f2b2b29393c363b343b19585246513e3237 +3f2d304531363e303c3929362e33313c332e321b32244035212b2e2d4328 +3433373232412b323a3c2d41364038463043221f0823141d15243232472e +3b3b3336372e363d2c3a312f332f352a7d5e353436323a342f30302a3029 +36606d5e4e497c7d1b343a3634323132373b3d3937373535343638412b45 +503b3941424837324b32363c494f404b45701b3b698b65583b586c58262b +383830302e2e3743453528432b4d7d5d42323a3c383c3234383833333633 +2b372d37636f4e34403c333c323e2e3836443f544a35312f392c412e2e37 +363f31373835302e3234333a3632302f302e2e263243364e4d3c8d690a30 +213940403b453eb4836774504e6159505784cb5b54314f5c657966659ab3 +426328a3b365b5ede0e14925472a3b36633d31333931403c41363e2e243d +363e3a3534383c3c3b3c2d3d4b4655604a40414048605d3e3e565860595a +615d5f5a4837353a3a393c3a40483b393b42413f414d553400427ec1c8c2 +bdbec6a0a145292b465a4c34353832393a473f4b4c66595065796e4b4e6f +71523b5d74b0d0d75e414d474f3d49545c45323e3739332f404450382d34 +31593f35352d365a372a140d261c271d202d212b31694b411c1525161f63 +41474f31493a441a263621283a3b3e47352d2830276a5783493239303d23 +313231303032343725302c343a5d1a2e39302a3242494236442e38363340 +40393c3134104d463a422e222a362a314a3b41493b4744313d3237354337 +3536223628443925303332472a3638413e415340454b4b38493a423c4f3d +5334341e37282d212b332c3a1d2c2e282f342f3d473848413c403a3e3181 +643b3b3d3c45423b3d3b373b343e67705a4a457b8123404a4847423d3b38 +3a3a3b3c3d3d3e4042414a2f444b302a2f303b2b29462f3841545b4f5c56 +812a4d76936a5f42637767363b4949413f3e3c444d4e3e304b3252816045 +353d3f383c33343a3e3b3c4241374033386067432430322d38303e313b3b +49455a4e38322d382c422f2f393a43374041403b3c40423e3f3937353536 +3737324051475f5e509f791a413450585a545d53c592717b5452675f565e +8bd366603d5c6a73887574a8c2517338b5c478cafff1ef57315132433f6c +46393a40374440463c413529423b403e3c3c4245443f3d2a313a303b422e +2b30323d5c5c41445f646d66666c67655e4c3e3d4444423e38393da29fa0 +a3a39d9ea28b5d265b636d595862666b59652e22335c6a5d4a4c4b444745 +4d484951665c485d746e4c486570623e50688fb4ccbc8d938d94a7b4c7c3 +b69ca9a9b8c8c9cec4f4dec9cac5dcdbc3baa599a68a8e8a87807d8c8380 +887e88817a70858d8a9774a6ebe2ebf3e9ffebd192665d777a654e645849 +585b6f6e93697443343a38422e24252523222021202a2518243962232e10 +2029241c1b1a160509161612251e201841b1b0ba9d94a8807442191b1300 +1b0906000007000f06020000000000000900170f00030811290000000400 +130b0711050c09170508050c0a210e1f19391c21191d48454545514b4338 +21071616160204100b09030036190000070209070600090a132d5c6a331c +161d767e1609010104080c0d0d0a090f1112161918120d14282724563d26 +20121e2413091b172b34261b2045090024484a251f345f1e09191f1b1c26 +25170d426a2d1a173048100e070913150513090e100e0c0a0d162000273d +2f1d1e170a2321210b1c1e1f070d141c11112017010b1e1518160b16150f +111311141a1d1c1817151517181817050e19000000045ac821260d160700 +20090a8db0496e3c141f1a374d78de9a51292c34232f272753ed6e273fed +940780bf6fbcb6101519180f251a0e1e180f0e1c1313191e22220e181616 +17171a1f24342d2f2c293f4c3c48372d5450412135373d474c575e51402b +1d130f0e0d0d12161b216c6b6d7375747479633b0c4e637b72747a7a7963 +692d1c274c5749363837323736403d40476157465a716b49425d68583345 +5e89b0cec198a09ea6bcc9ddd9cdb6c3c0cedcdcdfd3ffeddaddd9f3f1d9 +cbb4a9b69a9f9b98918e9d9491998f988e857c8f9794a17daff2ebf3f9ef +fff1dfa47a749196836e85796a787c8d8db0818c5b4c55535f4b4142413f +3b393a3c494839455881404b2b3b443f373635311f2330302a3c33342b55 +c3c1cbaca3b79287572f342d193929261b1b241c2b231f191510171b1322 +122e2610171c24401c141620142d241d271c22212f1e212127243825342b +4a2c312a2f5b57585c68645e523c24333436232835302e29225e4121282f +282d28271d26262d457481421e16268a9d3c332b2a2a2b2d2f30302f3232 +34383b3a342f3545443f71543d382e3b402f243533464e40353960241141 +666b4640547f3e29363a35333d3b2a235d884b3c3c5771393a3436404030 +3f32343333312f313a42204a5f503f3f392a403d3d29393c3e2830394239 +394b442d33463a3d3b2e39373032312f3036393837363434343533321d26 +2f0e090e176bd42d331d27190b341e1fa0c25b7e4b232e29465c88edac64 +3d445040504b4c74ff813a54ffab1d99d989d6d02a3034332b433b30433f +3637453c383e3f433e2c3d3d3b3937373a3b4a41423c384d5b4b57463b60 +5848273a3b414d53606a5d51443b3230302f2f33363a40403c3e42434044 +4d3f1f0045617e797f8685846d723320294f594a37373630373b4743454f +675d4b617872504c6873633b4d6795beddd4aab3b2bacddaebe7dbc5d2ce +d9e5e3e6d8fff2e1e3e0fbfce6ddc7b9c5a7a7a29f9895a49b99a199a59e +978c9ba095996c94d0c0c4cbc1d7cbc8966f6e909a8d7b94887985859592 +b68b9665565e5c655147484543403e3e3f4c4c3e4a5d86465132424b4840 +3f3e3c2e343f3d34423633274cb7b1b9998ea07c734823302e214436352a +2a3227362b27211e1920221a2919342c171e232b4620161e2b203e38323c +2e302d3923252532334a37493f5e3c3e322f554944424e4f4d453322373e +43343847403e362d6649283039333b37362c34343a517e89471d14258ba2 +45413b3c3d3e3c3936313036393d42474640393c4940366240231e182731 +231d34374f5b4f464d7337245170724d495f8c4d38464b46434d49393068 +925545445e753d3d373b454636423437353939383d484e294e5e49312e21 +132e2e2f1f353c402d36414b41415149303548404341343f40393b3c3a3e +4447443c3939393a3b3c3b29323d1c1a1f287be43b432d3b2f234c3330ae +cc5f7e481e2924415987f0b06b46505c4e615b5e85ff904965ffbd32adea +9ae5df373b3d3c364d44394b463d3d4b424046484c493443424345444545 +4147362e21172932243629224c4b41273e444d5d63717a6b5b483d37393c +3b393a353538a5a2a1a2a19e9e9e91623a705029060f0107070f21151837 +6163564c4f4b454a474d4d3f55666241536e725344576c70393a618ab3ad +aa33242b1d0000201000000706181f111f304a2d1e2728305a3239262132 +2938382d3f425455565f5e6b6d6c80656b88b695b9e3e7ddd8e1f3dfc4c6 +c8cea2a9a9a6a0958ea2999faecadec5adadbac5bca4c1c1c2c0bbb8b6b6 +b7bbb6bbc1e1bad1d3c3bfccd1c8c4cbccc7b5bfc4dac2d9c9b9f7ebf5f4 +fafcf8f0e5bdbec5aaa09cb4c9a7acb0b1979da8a3a19f8a898d8aa6a18d +8e92a1bbad86a0a2908d86979a7b878c8d78767c7d817c67736a88607175 +8bedf6e5ede6f6f0d199666c4b5659565951585b65888f635d50393a3e45 +5a55555e6491ac7d6a8f8bb491534637292e373b3c38312d342b23242c33 +32302f2a3c6fcbc2d5bfc5c3bb7e563027544627335f50402a3255502d3c +486d29222b2d262534382e28236a251a74692b141e18120d16092b1f140b +08111b1f22243f6c443191beb3c7b0bbcba8681f162512110b100e081418 +0c120e150f0005071011100a0a0d0e0b0e0e0e0f11100d09104598b1b3a3 +829bc419160d66ad8c888e97c3c12c88aeb4cacee0d1ceebb65c1e3b9daa +beb49cb0cc850f0075c6adabae8ac8d32b191818100d1e081102060c180e +0f000009161606090d0e0d0d12192d1f3c86c2ccbfb89eb59c8038402f26 +0d1a1a11080a0b0306040b11120e0e101111126e6d6e74767574776b4020 +635238222d1c1d181c2816122d525042383b37333a384042354b615d3e52 +6d6f503e5164662c2b5582acacaf3b303b2f0d0437271819221d2e33222e +3d55382b3639426c444a3732433b4a4a3f515466686972717c7a77896f74 +90bd9dc0ebeee3dce5f4e2ced4d8e1b7c2c5c6c1b8b1c3bbc0cfe9f9e0c8 +c8d5e0d9c1dedededcd7d4d2d2d6ddd5dadefed5eceededae8ede4e2e9e7 +e2cfd9dcf2d6ecdac7fff7fffdfffffffef6cfd3ddc5bdbbd5e9c6cbcdce +b3b9c4bfbcbaa2a1a49eb8b49e9da1aeccc6a3bdbdaaa79fb0b3949ea6a8 +939199999d967e887c99707f839afbfff4fbf6ffffe4ae7d84667478777c +767e828cafb78b83765f5e5f667972727a80acc79274979acdb27970614e +51565b5c5a5653574e45464d53524e4c445383ded2e4cfd8d7cf936a453c +6b5d414c7a6c5c495175714e5c6a8f494248483d3a474a3e3a3985403897 +8e523d49433d383e2f51443a312d36404344445d89614baad6cadcc3cddd +ba7e362e412f312f3636324043343b353c36242a2c3233302a282b2a272b +2b2b2c2c2b2824285db0c9c9b998aed225231d77bfa19da3aad6d33b95ba +bfd3d7e9d9d6f5c06a2d4fb4c7dfd9c5d5e79c26108fe1c8c6c9a4e2ea41 +2f2c2f2625392632242d33413634251a2932342b3032302a292a2e41304b +95ced6c7c0a7bea4873d44312a1422251e191c201d272a2e33332f2e3133 +343545413f424341444c47250f5a4f3b263525282224301b162e55524339 +3c38333b3f494a3d5367644558737859485b717135325f8dbcbec3504852 +4522174737272c352f3c3e2c35435b3c313d414c78525a4742534958564b +5d5e706f707877848a899a7b7d92b5869ebcb8a7a1aabbb3b3c3cddbb8c9 +d1d5d4cbc4d2c5c9d4eeffe9d1d1dee9dfc7e4e4e2e0dbd8d5d5d9dfd8dd +e4ffdcf3f7e7e3f3f8efecf4f8f3dee6e6f6d5e8d0b8f2dfe6e0e4e6e9e5 +e3c1ccdfcecbcde8fedadddbdcbfc5d0cac7c5acabaca7c2bba6a4a8b6d3 +cba7c5c8b9b8b3c6c9a8b0b3b39c989fa5aba7909b90a97d888493ecedd5 +d8d2e9ead09f75846d7f8a8a908991939dbec1958e816c6e70778b828086 +8bb5ce97769a9fd2b9847e7161656a6a67635c565d544f525c6261595445 +4d77cab7c3abb8bbb6805e403d716b52608f82725e63807a5767749b5851 +58594d4b56584d46448e49409d9459434f49443f46385a4c3d32333e494f +504f658d5d4097beadbda7b3c7aa72302e44373c3b43423e4b4c3c413c43 +3d2c32353c3d3b3533363632333131323332312d3469bcd5d7c7a6bcdf33 +332d8bd3b6b0b4b8ddd5388caeafc0c4d6cacbedbf6b3458c2d7f2ecd9e8 +f8ac3621a0f4dbd9dcb5f1fa4f3c3737312f422e3b2d343a473e3d2e2534 +403f31353b3c3a373631381d2c6ea0a4948d78937d6627362c2d1c2f3731 +2d30352c2c2b343d423e393835302fa5a3a1a09f9e9c9a81553b7d562a0a +16161c13211f23284d5f544b4c504b4a4e494e5139546565404665735c44 +4860726f4348598fb0d4855d667d24072e07090706001c22000527321b13 +170f003d0756301c190a0e0f03140d0c07020000010015350600256378da +e2e0bfb2ccd6c6c8cecfbe060e373e076192964e0000331207231c060e01 +000406080805020100030d0b0c0418031c3d2610111e2625221b33283620 +2d3aa3a2c1f0ecebdbeee4ead4dbc3c08d755a62417b92935d5fa06c7f7d +858e625a465d7371635f606a7a8b77adb1b08bb6dac5a5b2d1e3dccec2d7 +dfd3c7d0bbd2b6d4bfbffbf6eef3f0eef5f1e9edf2bfafc6bfb4c1b5b4bb +c9d4bad2e4e3e3dddcdcdee7e7ccd9e9bae5edb5ccbdd0dad2d1d8e1e7e6 +e0d8d4e5dad0d1dce4e1dcdfe6d3def4e5fef3f5f8fbe7e1becbced7edcb +dbd2b2aed8e6dee6e4d1c1bdd6d2dfe1dee4e4e2e6e2d0edd3e9dac8e2cc +c7cdcdddcde2c5d0cbc7c8d1dee4e5dfe8d0b3e2f8f1e1fefcf5eedcc4cc +deced5c9c9c2aaa49eccc4c1c9c9c8cac3cfd1cec6c3c2c1bcc4c4c5c6c6 +c2bbb7afafc6bfb9c1bac2ccaedba49dc0c0c2c8beaac797ddf9fee8ffff +f3fee3dbd5c8a5e0cdd0cdb2bad3bac5dfa8bcd7cacccfdbdfe8f1e3d0cf +b4c6c0bfb6b6b89caeb7b8aca9bcb3a9acb4b8bab9babca8b9dafeffeeed +fffffffeffcababcb6b5bcb3aba5a2a394a2a2a7a8a4998f899895906e6e +6e72737473735b362470583a26343135263028262343504439383c39383e +3a41462f4d60623d456470593e42586860323b4f88add68d69768f381d48 +212423221933350d123039221c201904491566422d2a1b1f2014251e1e19 +1512101305213e10012a697de0e9e6c4b5ccd4c6cdd7dbcd1a25535d2784 +b5ba72191f542f223e3721291e0e21232424211e1d1e222c2a2921331e37 +58412c2f3f474744384e445137424db4b0cdf8f3f1dfeee6f0dde7d1d4a2 +907781619bb2b37c7ebd899a99a1a57a705a6f817e6d68677187a090c5cc +caa4cff2ddc0cdecfffaece0f3fbede1e5cee4c4e2cbcafffff6faf7f6ff +fbf6fdffd7cae3dfd7e5dbdae1effae0f6fffffffefdfdfdffffeaf7ffd5 +f6fecceae2f8fff9f4f7fefffffffdf9fffcf2f2fbfffef6f8fae4ecffef +fffcfffffff4eecedbe1edffe6f7f0d2d0fbfffefffff3e2ddf3edf9f6f1 +f6f4f0f4f4e4ffeefffdeffff4f2f5f5ffeeffe7f5f3eeedf5fffffffaff +e5c5f1ffffedfffffff8e9d4dcf1e7f1e8ece7d0cdc9f6efecf1f1eef0e8 +f4f3eee6e1e0ddd8e1e1e2e3e1ddd6d2c7c7ded7cfd7d0d5dabce9b4b0d5 +d5d8ded2bcd6a3e6ffffeefffff6ffe5dedbd3b3f6e8f3f2dce2f4d7e2fe +c7dbf6e9e9eaf2f5fbfff4e1e0c6dcdbdcd7dbdec2d4dbdcccc9d7d0ccd1 +d6d8d5d0ceceb8c8e6fffff4f2ffffffffffcebebebabec8c2bfbdbec1b7 +cbced0cec5baafaabab7b44744414142424548371a1267553a2a3c3a3c2d +372d2b2744534539393d393841414a4e37546669444b6a7962484c657367 +38445a98c0eba4838fa7503259323739382f45441a1b3741282327220d55 +2275503d3a2d313428372e2c231c16111710314f1c0b2d5f66bab5a88272 +8c9794afc6cfc81b2d616f3c98c9ca80232559372b47402a322414272928 +2825222020252f2d2d273a253e614a37394850504e4861525c3f454baaa1 +b9e0d4cdbac8bfcec0cfc0cba399879578b4c9c89090cd99aba7afb3867d +65798c8776716f798da595cfd7d9b8e5fff5d5e0fdfffff6eafffffef2f8 +dff2cfe5c7bcefe0cfcecbcfdde0e2f2ffdbd5f5f4edfdf2f1f6ffffebff +fffffffffffffffffff5ffffdcfeffd4f2ebffffffffffffffffffffffff +fffefffffffffffffbdcdbe5ccdccfd6dee6dadcc3dae7fafffbffffebe9 +fffffffffffff1ecfffefffffffffffdffffeffff7fffff6fffcfbffffff +fdfff3fbf5f3f5ffffffffffffe0b7dae8dbc5dfdfdddfd7c9d9f5eefdfa +fffae5e1dafff8f5fbfbf9f9f1fdfdf9f1eceae8e3e9e7e8e9e8e4dfdbd3 +d3eae3dde5dee3e7c7f6c3c1e6e6e6ebd9bed199d5eceacce1e3d9ead7d5 +d9d5bcfffbfffff5fbffe7f2ffd9edfffbfbfbfffffffffeebead0e7e4e4 +e0e3e7cbdfe7eadbd8eaded2d7e0e7e8e0d9ceababbed4cdb6b2c8c8cdce +d9ada7b3b9c5d6d5d7d5d6dbcad1cfd6d9d4c9bcb3bcb6b0a2a1a09e9e9e +9b957c4f377450321819141d1725121b21485b4b464b4d4a4b4c49505338 +506266453f5c71684d4150695639424e77a7b9bc643f7d1d141c14678168 +2915201618251c141a23230c714b3a170c0a091529252c1b080c151a1e1e +131a1b1a121e295adfd8d4b4b1d4dbd0c9b0a6a54238441a278a87806904 +0249122e73530e0b0f131114151514121112110b030a0d1b080d182f2d0b +00070c010021141b0a1819799bf8f9e3d6b6e6eadae0e0dcf04901000007 +a1e4e26f00000c04000005000600010f110d10121416002e464d28000000 +000000000000060b000000080e000000b7b5d5f1e0e9dfedf0ecdddbe0c9 +4e08563111637d8352113000000000000001060e0e000034632500212565 +2e0100090004090c0b06000005040a141d1a0c0037b5bad4f2f3ebefe5fa +ede1e4cfc35333242278a28a882b4c4e1a1b4d3b1b0a0e212a292f2a2121 +2700311724170d081a0f18121a192a23131b190a0920333a0294ceb8f6ee +e2ffdff2f0e6e8ecb875273b2411427f8664251b1e180e171b142a2c2d29 +292c2e2b292b2c2d2c28221e2017211f1e2c2a202c283d3b3222281f1b2c +4ccdc3d2d2e7edebe5e2f7d6eaf2cc58472e4e7056514c524936173b332a +342029373c4c676457353553484d3c2f333f2e42453d5e4641444a515554 +4e4b9cd2ece6f3fffff2fff3f1fdfbc59f56665c4c6a8577551d39383b43 +4d575a5b605c566c6c6d6f7274726e5630216a5242343831392c371d201f +3f4f3b33383a37383c3a43482e495d63443e5b7065473b4a5f452633426e +a4bbc2704f8e312a352d829f86432b3324222c20171d27271279554b291e +1b192539343c2b191e282e32302226252419232e5fe4dcd5b5b0d2d6ccc9 +b3acb0514c5e3647acaba58e28276c304b90702b282a2e2c2f3232312f2f +302e28202628342025334b4b2c1d2c32271f3e3036212c2a87a7fffee5d5 +b4e0e6dbe4e6e8ff5d19161426c3ffff8f0e0b282007061c06190c0f1919 +141312141d09455c653f051610151c13170c11262b0e19192223040b06c3 +bfdcf6e2ebdfedefede1e1e9d6601e714f3387a2ab7a3a541f151611191d +242a2f2f1c11568646193b4589562b172d1d1f2225262623222a292c353c +3726154ac5c6dcf8f6edefe7fcefe5e9d7cf62473b3c96c4adad4f6d6b3a +3b6d5a382729383d3b3d362b2b330f45304138323042373d363b35444038 +4442312d41535619a8dec3fff4e5ffddf2f1e7ecf3c38339523f3164a4ad +8e50474a42383f433a4f514f4b4a4d4c484646474847433d39382f393736 +4442363d364d4d45383e3532405ddbccd7d7e9ece9e3dff3d2e7f3d26258 +497097817d72776e5b3c60564b533b404a4c58716e61424667636b5e5459 +655266645c786364676a6e6e69605aa9dcf4ecf6fffff0fff0f0fcf9c6a2 +5d716c6184a49b7c4a6a6a686b71787a79827e7a46444241434444453214 +0c5e4d42383d373d313b21232240513c353a3c393a3f414c503651646a4a +4663786e534756684b2a3a4e7fb7d2da8a69a84a41494197b9a05c424431 +2c34291e2430321e846155352c2d303e535156422b2c2f2f303029323130 +23272749bca9997370959e9fada2a2ac54576f4c60c5c1b79e342f723853 +9878333031353336363635333132322c242a2f3b2a2f3e56553527353b32 +30503e41272d247a93e8debea984b0b7b3c3cad4f65c23272c42dfffffa6 +231f3d351a192e17281b1c25241e1c1a1c23104b67714f192e292e34292b +1e1e33361c2728313413180ec3b6cad8bbbaa9b7bfc5bec5d8cd62298467 +4ca1bdc59450642b2425222a30373a403e281b5f8c4d264a52956037233d +2f3236393735312f333238444e49372351c4bcc5d6cbbbbbb5cdc7c4d2c8 +cb67524d53b0dfc9ca677e79474a7c6c4a393a484c494a4237353f194e37 +493f3a384c434d464e4a5b523e464638395060611fa7d4b2e2cebad3acc0 +c7c5d3e3bb844362544a7fbfcaa661545750444b4d45585a585453545450 +4c4d4e4f4e4a46424239434142504e4147415a5b54464c42384157ceb9c0 +b9c4bcb6b3b6d0b9d8ebd26b685e89b4a19887877e6d4e72695e654c5059 +59647b786b4b50706c75675d6472627678708f756a6d757e827a6a5795b9 +c1aeb1bdbaa5baa9b0c4d0a79156777b769dc1bb9d61716b6e757f878783 +847d769e9f9e9e9fa09a9186553a6f422910060b15192915223457574846 +4d494649454551513c495b64513f536c705942465d7d5e4a47629698c392 +6180060c153ba29da24e00061e2c27332c28251f0a72616445320e0c2e62 +66755222191a12100522250b171a3d4553cccac7bbc9e3e3dfdcb072456a +2d31171c73506498351a43182e62440d141a180e10100f0c0a0a0b0f0d0f +1615161214152335362006000912220907182e072165d3d7e0f1dbf5edf5 +eed0a2984b332519247c6e799830150b2238292e03161d0b0e141d22282b +26147e5755211e210e0f3c1f2a251c281516151a1e21121d414185e2fff1 +ecc1d1e9f1ead8c4915221472d1b7b9c9d741147130c1615160b07090c14 +1407202f000b0c0027120e01101215181815110d0b090a10161d1a130d0c +5879defefad1c8d2e7dee8e5c8b8612829003bc7beb574006313114e370d +0612181312232b28282a371d6175592f14120011070004051d07090a0f20 +31291806358fbcf0eef5deb8e2f0e6d1cea578171808004baabcbc4e3a42 +310c080c0f070b0e0b0d1013100f1011131414110e18171e1b1112120b0c +100a1c15011a162310017b85f0ffe2dfb9cee2e9e4e79f9c2b0208439da9 +b7625f532f231000180f2d5d6820121011271b0a2b0e0d100d100b000805 +0018110f0e12171b1a130e3a9af3fffcfefffffffffff2ffc79a2e191411 +5993907f4f33261202000306040d0a09686b6d6f7375716a603624654439 +2c282a33313d232a34514d3a363a3636393638464735425861503e526b6f +563c40536c4b393a579198c99d70911b222e56bebcc16918172b342b332b +27241f0c76697257441f1c3d71748461322a2d2625183232151f21424856 +ceccc6b9c4dcdbd7d8ae744b773f47333b97748abd5b3f66364b7f612a31 +3533292b2d2c292728292c2a2b322e2f2a2c303f5358462e293133412522 +3042182e6fd8d7ddebd1eae3f2eed3aaa55d494037469f919bba5335293e +52424418272a1414181d2125262621926b6b363439282a5a3d4a463d4937 +3632363838252e4f4c8be6fff0eabdcbe2ebe7d7c79b6235614b3da0c3c6 +9d396a352d3736372e2a2c30383a2d46561c2f2f1c513e3827312d2c2d2e +303030302d2e313739352a201d6481e2fef8ccc2cbe1dae6e5ccc26f3a40 +1b5aeae5de9c138030316d562a212c2f26222f352e2e34442e78907a513a +38233427141e1a382e353637465249331b4599c1f1ebefd7afd9e9e1ced0 +ab82252a201b6ccce0e57b68705c373234372d30302e2e31322f2c2b2c2e +2f2f2c29302f3633292a2a211d211c302b17322d382411868df5ffe1dab4 +c8dbe0dbdf9b9c34122165c4d5e48c897e5a4c391c3b2e48747a2e1c1715 +2e23173c2528312f34301d2b2419342d302f3032312c211a44a1f9fffdfd +fffffcfffcedfec79e3527262978babcac826c5e432c222223222e2e2d42 +444443464845413c1a0f593f382f2a2d35333e242c36534e3a373c38393c +3b3f4e4f3c4a5f6856465a737761484c5c724f414468a5b0e3b98dad363a +446bd4d8de84302b3b41363b332f2c291882747b615233355c9297a57e49 +3a3425201432381f2a2b464141a99a8d7c8aa5aab0bd9f69497d4b5c4b57 +b18c9dcd66476c3e53876932393c3a303231302d2b2a2b302e2f36353634 +363b4a5d614f36303b4453332b34410e1d57bab3b2b99cb2aec5c8b4939b +5d54535162bdafb7d5694c41546958592b393a23202327292c2d2e299974 +784749514345745761594e58434340444746333852487dcddfc0b17e8dab +bbbeb8b290613e726358bde2e4bb537d413c464748413d3f404645384f5d +253f432d614b4434403e3e404343444342393a40484e483c2f256272c9d8 +c7948894adabbfc9bbba7246523176fffffeb6269040407f683c343d3f35 +2f3b3f3a3a3e4d388099835b454533473c2a37374d3536393f5161563e20 +448eabd1c2bfa0749eb5b7afbba183303e3a378befffff9078806c474040 +41363939343536373432323335363635323a39403d3536362c2729263b38 +243e353b22067575d5deb3a0748ca7b5baca8f9c3b223781e5f8ffa2998f +6b5e4b2f4e405984883b262120382e20442d313a3b4240303f39314c4237 +343b4548402a162c77bdc1adaab2b3a6abb0adcba1872d2a344195dbdfd3 +9f735d48383234332c332e2b9c9e9fa0a2a39b8f75473877472b1a17191a +1c22111a324b5044494d44484e4343524f44405660603f49607162444051 +5f4f373b54869db4a596781017133f694a7f56161c30372e24201c1b1e1c +7980e0c58c1a0021645d765017121912180c101f17131a72c7a8bfcdc4c7 +dbdfdde0dde3b691b4341619087a6b6c6c0005481916261d0c181b0f1516 +1412100e0e11050a151a0f0612171a060d30371a061002191f181e2c3e83 +9fdbedebe1d7e7f2eae1e5b66e93592a411e626c759b16130041a5a18f39 +19151712171e222a322b127a5a4527150f191fc5d7d874050f1517111c11 +1a2b336e1c75bbe7eeeee0fff8fef4d7b3696942263d5778745978236323 +0d0c091010151203010f0000120c061d0d13000a101b181b1c1a17120f0c +1313110e11151f29493057c7e1f5f2ecfafdf1f2de9f5f6629384c477069 +796e0e6a1d4baa897527141a130f1b24292f2b20158a572e280c130d5b7e +6a6c141708010b283d341d09461f3a7ff2f5f1dfecf8fafff0cb7d4c4727 +231c547c5c7575434b4724100a160f12130f10121210181817171a1b1b1a +1616100f0d0b171f202a19120c111e0f1a311d2f3bb3ecdeeaceeffff9ff +ed9b633d202c3d7c6f697b44352f6b5c3a0c031f3e1d102d37352a321c3d +32182e1b11104b6c67491a1022222426282a2b2d354f9feffef4fdffffff +f6fffc97744d3d2b1852776668513c3424140c121818141516666a6e7176 +7872685128226d4a3b36393b3936371f2232474738393d34373d34364745 +3d39535d5f3e485e6f5f413a474c3a232e49819db9b0a589252d2c5a8569 +9e712e2c3b3d30231d17151b1a7984efd99f2c0531736c856028252d282f +21202d221c2177c9abc0ccc1c2d4d4d1d5d5ddb695bf442c33279d8f9293 +182b6d3a34433a2935362a3031312f2d2b2d2f22262e33261d282f35222d +555f45353a26383b3336404e8fa5dceae5d8cbd9e6e4dfe6bb7aa36f4560 +3f859098be3a351c5cbfb9a54b28201e16171b1d2328281b8b6c583c2b27 +333ae3f6fa97283239372f382b313f41792679bbe5e8e8d7f5ecf2ecd1b3 +6f7555405b799c9d84a34c86432c2b2a3133383728273727203b372f473a +412534363b2f2e2e2f303132323937322f2d30363b56395bc8deeee8e1ef +f1e7ebdba165713a4f68699492a6972e873a68c9a892422e2f241d252c2d +33322a239c6f4c483037307b9c8481242f2f2f385363583a24592b407fee +ede5d0ddebeeffe8c77d5251363836729e7f9da1727a754f3c343e353838 +343335342f35333232353636352e2e282725232f36333b2b26222936262f +442b3b42b7eddbe3c4e5f3ebf3e29462412d425ca29b97a973645e988763 +31243a552f1c353b382d36254a44304c3d35356e8f8567352c4343423f3c +3b38363e55a4f2fef0f8ffffffeefbf79677554b413476a3979b8a787059 +403131353635393a42434545494b463f2d0c0d61433a393b3d3b37382024 +3448483a3c40373d43393d4f4d44415a66674650697a6a4c4650523f2c38 +5a95b5d6cec4a74045426f9d86bd8e48434d4b3c2b241e1f2625858ff6e2 +ad4021529a93ac824236342625181d2e28252b7bc4989e9e8c8ba0a7abb7 +c0cfac94c553434e44b9a9a7a4243475413c4b42313d3d3137383533312f +2f31262a33382e253339402d385e694e3d46364a493c3a3e437b8bbac1b5 +a1919cacb2b6c6a46ea37a5a7c5ea5b0b6da544e3677d8d1bc613b322e22 +2326242a302f229376664f42414e57ffffffad3c4547443a463a3f4a4a7b +1e689fbcb4aa92b0b0bebead9b61735c517395bcbda6c5689a523e3d3d44 +474b4938344131284140435f4f51344243483f3f42444646484546434140 +424348495e364ca9b3b8aba1b1b7b4bfba8c5b7344618085b4b2c7b54399 +4c7addbca4553f40342a3137383e3c332ca67956533c474390b49f9e4547 +362f3b5a6e66482d5d273267c9bfb1959aa7b2d0c3ae71525d4b535796c4 +a7c0ba848c855f4940483e41403a373736323b3a39393c3d3d3c38383231 +2f2d393e3a4335312d33402c303e1c252392c1a69f7ca0b7baccc6845e4a +3e5a7bc6c2b9c0837670ab987543354b633b2840464136412e534e3a5649 +434581a39d8150414a484d53544f4131232562a3a6959da8a8a399b2bd6a +5c4a4e4f4c96c6bfc6a880705f4b414345403a3938999fa0a1a7a79e8e78 +4842884a2112171912171c1828485e4a404a4e444c554741524d4a3a555d +6a4041556d65473b4a5d634b3f37559ba3b8a34216230e4f6d6d84471119 +23282e33302520222066734f6e6a0a00316a446f4a0f0d150e190f1b0b16 +1a1560e6b5b8d1c1c8dccfd2e1ccdebac5a8340b1800819eb59a03143d1b +191e1d0c06121510100f0d0b0b0d10170d0b1718121a0e13170e0b1f372c +0d17080d11161e66e5e0cce3e2daefebf6edeaf5eea5d0384525177da9aa +c61503112c79676c341c212f242224202833300b88edf2f164130c17a27e +97680c18100b0b240e1229144691d0c8e2e9d9d6edf5e8e3edfbb1b86d22 +1d2f468a83a81148100a13111007060a0f0b100b0e1a050c0600100c1009 +0e14171817140f0a08090f131310141f2c4274aecce6ecd8d6e3f0f0eaff +dd5a7a3a3d401f678c7d9f2e31146cd795c732213e49473f322a302f3023 +7ab182230e05006dbcb6ba23130c0c233b2c0f132f553c7b9ecbd7fdd5e7 +f5eaf2ecf9ca9c74391f014d9c778d611117312714040f0c1111100f1213 +111a1715131416171719190d151d13121510111713111b13161841474094 +acc5dad8ddefe7e8f3eeeda58736201c72787979350a1ba9a8a976152c9f +63472038212c33205a8d6262181900689bb2a0291417181819181e28334c +5aaafafff7fffffffffdffffbe93644927074b7d7078651e242217101014 +14121619656b6f72787b7367542d2f805134303b3d343432262e46584034 +3b3e333b44383649434333505a673d3e526a624135404c503a322c519ca8 +c2b1532a392468878ba26126282c2c2c302b201b1f1e6677587a77170340 +7a57825e24232d2733262e1b24251e67ecbbbbd1bec4d6c5c6d4bfd5b9cd +b94a2434149bb8d1ba283b653c383b3a29232e312c2c2d2b29292d2e3529 +2730312931272e342f2d4662593a3d2c2d2e2f3275f0e5cce0dcd1e4deee +e9ebfbf7b5e4506245399fc9c8e2311f2d46917d7e45272832241f1f191f +282a0f95f9ffff76292430c09db98b313d352f2d442c2e4227569cd8cce1 +e4d1cae2ebdfdeecfebbc78039384d65aca5c9336c342e3735342a2b2f34 +313633374330373327403a3c2f30302f2f31313334343135373430313940 +517fb4cee3e7d0ccd9e8e7e4fede5f864d545c428ab3a4c44d4e338dfab8 +e64e3a50595045362d302f332c87c59d413029228ddad1d1372d373e5568 +5735334a6a4b83a0c7cff1c9dae8dee6e3f2c59b78412d1465b895af8d40 +4660523f2e3a343838363538363339363230313334343434282e362c2b2e +24252b2a29332b2d2d54574d9eb3c9d9d2d1e2d9d9e4dfe39f873f323694 +9fa2a25b3346d4d3d29b3445b2704f24381f2a3324629b747934382088bb +d0bd4632393b3a3633353b425a65b2fdfff2fafef6fff1fcf9ba956c543b +226da49da999555a53433634343534383b404446464a4e484034121e754a +322e3b3d333230262e475841363e4139414a3d3c4e4b4a3a56616e44455b +736b4b3f495256423c3a62b0bedbcb6d43503b7e9ea5bc7a3b3b3b383737 +322722282970826186872a1d5d9b77a279393031242a1c281a272b276dec +b1a6b59da1b6aab0c4b6d0b5cfc057384a2fb6d1e6c9314267413d41402f +273235302f2f2d2b292c2e372d2b353631392e373c38364d685f40483838 +3633316ee2d1b2c1b8a8b7b1c0c4cce1e6abe35a725a52b8e2e2fa473545 +5fa99494593b3a41302a2620242c2e189effffff8c41404edcb9d2a14450 +453b374f3739492d5696c9b5c2bca296acbab4b8cee9b0c487474d6581c8 +c1e84c7c403a4545443d3d3f443e413b3d49374848394e47473a3a3b3b3d +40414344413d4043433f41464b567ba6b6c2bda199a4b7bcc0e3cc588654 +627158a6d0c3df626045a0ffccfb634e64695f51413438393c3590cea64c +3c3935a4f4eef158463e3d566d60403e536d48768baaaac797a3b1acbec6 +e0bfa08456483487ddbbd2a6545a72634f3c433c3f3d39363938353c3b38 +36373738383b3b2f353d3332332b2c3432333d35332e504c3b8392a4ab98 +95aba8b0c5cad99f8f4e4851b0bebeb86e4557e7e6e6ae4859c3805c2f42 +2a353d2f6da68087424a339fd4ecdb664c433f44464643423b413b79b8b4 +a1aaaea4b5a7bec5957f6156463586c1bcc9b15c5c584c43423f3e36393a +9ba3a7a7a39f9a9572374a70461a151b1a09111b192b48504a4b4c49484c +504f434f564c454d5b6249444c61675745414f5a4d36354d769ab2b15e15 +2a055fb4cdbc33392b48373b292b172114277b84adfff9730d416b3f672f +0a0d1313130f150b1b222e4ea2a0a6a09f82b1a6a99abdafa8d1961f3a31 +214a48535e2b10391822190f1113141b1b150f0c0c0e0d0c160c0e130e10 +1412191715110d152b400d130f071b294ab3b8bad3cdedcbf0d2d4cad8ba +b2d231383c3e67ebebf1251c112183696e550d21261d1f2a2b2228341c74 +9a59814a03002678767c6603100e07131808170c172aa7dbd2d8dddbe6ed +f4ccecd1e8bcc0472c280832eef2c85251021605040f14080b0c0c0d0d0e +0e0e0c0f0d09080d0e0e121312100e0b0705100417051410101219c9e8c2 +e0dfe3dfe5f1e6e3e9feb3c34343590542c5b4b84d47173681758c2a0b72 +7e3235252d34333f184ba4c97a320f3d8b776b7c3f0009363913060c121d +2a28cdf9c6d8f5e0e7f3f0eff1f3edd59037330621d5c9a97b0002040a0a +0d0d0b0d0f12131312121212141414161618181614131313111012111113 +14131618141b1a60f5bcc1d3e0e1e1f0ebfff3fedfbe4024148ba9989f1f +1e238b786f76005af0ab4432343328391f34e8f6f3b2201c55746a843b0c +131014150f17221e598ef9eafffffffffffefffffffed4af484212069f9d +847525181013140f10181517196a727774716f6d6a4e1e3c705333354243 +302e2f222b42463e3f3e3b38393b3e384950463f47565d443f475c62503e +373f4b402b2e4c79a1bcbf6e263c1771c9e4d3464a384f37382426121e15 +2a8087abfcf876164e7e57824b272a2f302d282c222f36405dafabaea6a1 +82ada2a38faca2abe2b5445f4e33554f5c704838633a40372d2f31323939 +332d2b2b2d2c2b342a2c2f2a292d2b35343433333d546c3a40382a373e58 +bbb9b9cfc8e9c7eed2d9d4e5cdc8ee50595f5f85fffeff31292637987a7b +611325261a1a2422191e2e1a779d608956130a3b92949c89283638323e41 +2f3d2e3544bbeadcdbdbd5dde6f3cff0dcf5cdd45c43401e45ffffd56878 +3243322f373c2e313031323233343332373835373a3a3738363535393c3d +3b3d2d3e2c39332f2e31dcf5cce4e0e2dee7f4e8e4eaffbcd1585e7a2763 +e4d3d46a683a5caa9db0482082863535242c322c38174fb1dd95523362af +9b8d9b5c203a6e6f463637373c433cd9ffcad9f4dbe3efeae8e8ebe4cd8c +36380e2de5dac5a42c3133353537383336383a3b3b3a3a38383737373838 +373634322f2f2f2d2c2b2a2a2b2c2b2c2f292f2d71ffcacedbdcd7d5e1db +efe1efd4b8422e26a2c7b5b6343944b09e9396186cfbb04330313025371f +36eeffffc334346e8e86a0582d3a3b3f3d363d443d74a5fff2fffff5feff +f0fdf7f7f7d2b25150251ebbbea99a4a3d373c3d38373e37363742494945 +403f4347340a31684c2d303d3d2b2a2d212b42453e3f3e3b3b3d42443c4b +544a434b5c634a454e636958464049524933365482abc8cc7e38502b87dc +f4e1545441573f3f2a2c18251a318690b9ffff87275e8c638d562d2e302e +2a24261c2d374462b5afb1a6a080aca1a393b6acb4e9ba4a685c4769626d +7c4e38613b40372d2f31323737312b2626282726342c2e322d2e32303938 +3735343d566d3d433a2c3a415bbdbbb7ccc2e0bee2c6d2ccdec9c6ef535e +65688fffffff413a3b4ead8e8e71233130212028251a1d302586ae729e6c +2c2456abacb39f3b49463b44473440303541b9e5d3d0cfc7ced4dfbcdfce +ecc7d3614b4c2b54ffffe8767d344837363f46393c3c3a3a3a3937393d43 +413e3d3f3d3b3b3a393b3f403f3d433345334139343131daeec3d6d0d0c9 +cfd9d2d2dcf8b7d15b65833372f6e7e97c794d6fc0b6ca643b9b9d48412c +313533401f58bae6a05d4174c5b3a8b87c39416d71493a3d3d41473bd5fa +bcc9dfc5c8d4d4d8dfe8e9d89b484c2547fff4ddba404545464545413b3c +3c3c3b3a393939393939393939393836323030302e2f3031313538353737 +2e302b69f8b9bac4c3bcbfcecee7dff2dac24e3a34b0d2c3c8494c57c3b3 +abaf3184ffc3533d3c392e422b43fcffffd74c4e8cafabc7804c49414645 +3d404535638be6c9d6d1c2cacfc1d3d4dae4c5ab50532c28c6c7b2a25243 +3e42433c3c4139383799a1a7a4a29f99926d3349693f160f151309131b1f +3650524c4d4a49484c5051424c555046485664554746586359453b48544e +3c3542668db4b39411260f4b83b4962e1b201b262e2e1f071b19094a8f52 +788a0000358880662f0906090b12161b1f292f1e206b8174260b20242126 +234b88b4a5451e332c26342a415724043218231c111313131a1515161819 +150e090c0f100f141819151e1b18120b08131e441b1e181022478be9bc8d +5f61566266777297b3ccd46a75944219281c5b251d050b9b9e785e373d37 +2c2524221c212a1c86edd9ee9bac8d1faa9d937a0511040b030c0a0b0f41 +819bbbb5b5bdd7dfb1b5ccbabab3b6d56b8199601f7a98a04b50040f0305 +09120a0c0d10101011110f0c0d0c08070a0c0a0c0c0c0c0c0a06060b0515 +0b140f1a1b509fbcb1cad7dddfdbdceee0ced5d3b2564148202088d2da55 +3e1b0f8e64936a1c98e2aa413634282d373268b87d2d4422122486748d5e +152d260e020d0d091453b0bdc1cdd3c8eae1dce4e2edf5cbdb8c353b1f33 +86b99c760b04080a190c080c0d0e0f111214150f0f0f0f10101313141312 +1112111110100f0f101313151620302e74d9c1cedde8e1efebdae3dae9d6 +c847402d41d1dee14b140462727580213c8644473c25202c32201a9d6b29 +3b121128918770620a0b0b0e0806131c11457ddad2e3eafdfff5fdfff2ff +ffd7ad5c3d36254796eb84291b1315120b0c141416196a7074716e6c6a67 +4b1c3f6c4e31323f3e31302e253246463e3f3e3b38393b3e37464f4a4042 +505e4f413f515c523e313b47433230406792bdc0a22137205d98ccaf422c +2d24292f2d1e061f1e1153934e6f860005439d9c844e292627292e303438 +424833357d91802f12232621261d3c7dbabc6a475a48363a2943643d2d5c +3b413a2f313132393434353738342d282a2d2e2d303432313a3937342f30 +3b4b754c4a3e2e375694ebbc8d5f645b676d807ca6c6e4f08997b661353f +2d682d291a25b0b1856a3d41372b23221e181c261a88f0def5a6bb9f35c4 +bbb69f2b3a303a3339363435639fb3cfc3bdbed5daafbad6c5c9c6caea83 +98b0743188a5aa5e7a38413532363a32323232333334343531363735373a +3a36343232363a3c3e3d382e3e343c353d3a6db5cfc0d3dddfe4e2e4f1e3 +d0d9ddc26e5f6b4341a6eef67562423abc92bb8c33a8e8ab41353426232d +2f6bc28f456246374aac99b2813e646248383f3a30356fc8cfd0d8dacded +e4dfe5e3ebf3c8d98b38422a4299cebba13b333738443833343637383b3c +3e3f37373737373735353433302f2f2e2e2c2c2a2a2b2b2b2b2c34454288 +ecd5e2eaebdeeae6d1d8cfdfd1c84e4d405aeef9f15a2920859899a03b4d +8e464438221f2b32201ca072344a23263faba38e822e363a3e3833414639 +6698eddce6e7f4f7e6edfbe7f6fbd6af654845385fb0ffa04439363c3e39 +383c363535404547423e3d4045320c3565492a2b3537292c2a253147463e +3f3e3b3b3d42443b48514c42445462534546586359463a44504b3a36456c +96c4c8ad2e473271a9d6b4493333292e3332230b222214589c5d82950c10 +4ca29f8650282527292f2f30323e45363a879e8e3e2232332d322b4f8ec8 +c4704b6153454a3b506d412958373f382d2f2f2d342f2f2f31322e25222a +2f302f333736343d3b39352f2f3a487249493f303c5d9df7c697696d616d +738785adcce8f38b98b8633945357138372b36c3c295784b4c3f3126231d +1518252597fff1ffbcd2b74ddbd3cab23e4c3d40373c393636629db3cec3 +bfc2dae0b2b6cec1c6c4c9ed879eb87d3b93aeb46579344036373b423a3b +3a3b3939383638373c3d38393c3a37343333353a3b3b3a3d3442383e383f +3c6bb3cdbdd2dddee0dad9e8dccdd8dcc270616f494ab1fcff8270534bd3 +aad5a852c2ffbf4d3b36272b363874cc994f6d54495fc3b3cd9f546b6249 +3a403d353a72cacfcdd4d3c6e4dbd6dfdeecf8d1e49947543c55aadfcdb4 +4f47494854433c3c3c3b3a3a3a3c3d373737373636343433322e2d2d2c2c +2d30313334373736373d4a4387e8ccd7e0e2d7e4e2d2dcd5e7d8d0565546 +5ff2ffff6d3e3599adb1b95467a55b55462d27333c2c29af8448613d435f +cec8b4a94e4640423c363f42315b89d9c3c9c6d3d5c9d3e4d3e7f1d1ac64 +4a483c61b1ffa34b413c413f39373c3737369ba1a6a4a19e9a9167314f62 +39120b0f0c0b151d254055544c4c494a494b50524146525549404e64614b +3f4b5b5947393f4c4f4639355079a0b0c337201b1b43265324061f4e5b34 +1b22110d12042067e7ebf3232503242a57290d0f0f0d10120d271d2f011a +2f0b3c254153013e3c363529102f00001c16195f745c4f2e142f131d160e +13130f121214171b1c18110b0917110a14120c14191513100b07080b193a +45121e362f52887c4a181e2f1c241a1f4f948631063147372a2968673120 +14008adec569171f24201b17191c20221e367b4c7e3450391fdfe6d89e00 +0f120e1210081d4c503c5dc8ba6730191c363517155fe5b389483d7c761b +192f481e4c0d09050805100f0d0d0f0f111212100a0a080505090c0c0e0f +101114131312120a0d0f1207150a2b7bddcf864b40514959656585a6bfb3 +492d3e5b3b0e08541c2c2906bcb5b7842c86f5e824242926272b0e13aebd +7a913d120eb8a4a581171b110000060d1a3361c2c3c2b87d5e534f4d4b44 +5db5bfdb7e414a3a460d002d3f070907001207070d0d0f0f12151a1d0c0c +0c0c0d0d101011101110111010100e0e0e0e0f101212021d3b6cb9be9847 +3a41453b3f61b1dac493442f804204003d181204509aa3955365f1c6751f +314823232e1a99cb93ab462206768e7f7f100f01050d080a1d2b5e73c0d8 +d1a59e91a5ada89ab1c3d89852514f5c4800242c24191314100b0a101215 +186a7073716f6e6b66451a4565482d2e393733322d293c4b463e3e3d3c39 +383b3f36404c4f433a485e5b4538445452402f3441443c32304d7aa4b9d0 +45312e305d4472401e325d663e232a19171d133274e9e9f52932163d4876 +4b2f2f2d2b2d2c26403344162e411b4c324d5c084442382e2619431b153c +3026667764604a3d59353b342c31312e313133363a3b37302a27352f2830 +2e283035333234322f323847686f353b4d405c9083511f273c2931202357 +a197451f4d645445427c7942323015a6f8d87b23292d28201d1d21252622 +3c82558943604d37fbfffdc42a3a403d423d344672725a77ddc9723a2121 +3b3b201f6af4c59d5f56978e3331465f3b78413b37353239383434343434 +3535363337383537393a35343233373c3f41403d3336383a2d382c4993f1 +df905345574f5f676585aac9c2624c6482603028743e525334ece5e3a947 +9affed28272e2a262a111cbcd195b1613937e3cecfab46554d3a33393a43 +5680dbd7d2c788675d5a58564e67c0cce99057655868331b596e3a3a3630 +403333383838383c3f4245343434343434323231302f2e2e2d2d2c2c2b2b +2b2a2b2a2a19345081cdd3ad5b494e50464869b9e3cfa2584b9f652c2053 +2d2d2779c7cdbb717bffce7821344b26273222a3d8a3bd5c3c2195afa2a3 +383d32363e383847537f8fd5e4d5a4978899a09c91adc3da9e5d60616f60 +143d483f37363d3e39363a363434424746423e3e41442c0a3b5e4326272f +302b2e2a2a3b4c463e3e3d3c3c3c42453a424e51453c4c625f493f4b5b59 +48383c494c443936547fadc2d952413f436c4c75442236606840262d1c19 +2116367af6f7ff353b1d414a784c2e2e2b292b2b223c31451b354b285b42 +5d6b185250454037284e251e473d3676886f684d3955343b342c2f2f292c +2c2e303435312a252737312a33312b3338353434312e303545666e373f53 +48669b8d5b2930422f392c2f62aa9f4c24516a584c4985834c3e3c23b4ff +e6872f32342b231d1c1d21252b4a92669b5877654fffffffd73a4a4d4346 +40374873735a78decc763c24253e3b1d206cf7c9a4675da0983d3b4e6741 +773d3a3638353f3e3b3b3c3a3a393739373a3a3738393a37353435383e40 +414043393a3c3c303a2d4b95f2df925548574b5b646587adcbc7664f6787 +683a337f485d6143fffbfcc464b3ffff342e312b2c321823c5da9ebc6d48 +49f6e4e7c358594d3b343c3d475a83dfd8d1c48462555454524d68c4d2f2 +9a627063743e25647e4b4b463e4d3e3c3f3e3c3a3b3d4144343434343333 +3333302f2f2e2c2b2b2d2e2f313133343434213a5382cbcea65242474a42 +476bbce8d5a95f4fa2692e26613e403a8bdae3d28992ffe1872d3d522f30 +3d2dafe8b3d173553eb2cec2c5524a373a423a38454b7681c4d0be887b6b +818d8c82a2bbd79e5f6365756418414c463f3c413e3935393636359ca1a7 +a5a4a29b9262305a5d35120b0d070f181b2b4856504d4b484849494f5342 +414e594d3b466166503e4251564b3e37444f50423140668daeca7d292408 +506361181a0620161a121e221414120d2b0d2a5103120b2b4149210a0c10 +121516232031bc2d131623bbadcfad42ebbecaae1c97bbb8ad0e1e1d2324 +242809024113180f0c181b110e14131110111213130b190f0b160b0a2b1a +130e0f0e0b090b0c00344a65511e251d5e7b8c9154548985782f38678385 +3f283d383c8f55211c1c0619162d2f0d2a2a2a231711120d03003adec4f1 +7d06040033203b5503080004180e295d5d290b1e564036464f2d303b4652 +0e6445011a09000e1139523d0b431a02070b010c120c0d0e0e1111121009 +0b0906070a0d0d0f111215181a1816190d04111306191b0e2d534b3a1d32 +3233311823244d4d49072025001963293a102d2b0085b9a77c0d0a78ac27 +3927161420252d9fa145553d0d0084adb3940900040801071c3140090355 +6c6d35311325333a271863625413180f010c3331250f11341d090207110e +0f121316191d1f0d0c0c0c0d0c0f0f0f101212121111110d0f0f0e0d0f0f +0e210f221e446b5a173427232f37164152590a321400180e3018261e0728 +94b8c148003458512e2a111f0f280741ac87590002044bb9c2692a0a060c +0e0a162f3c2406437b6a3d2a362c3132202e486f291011100e214f4a2b1e +1812130f08080e1114166b70747272726e6a421b5060462d2e353034322b +2f424a423f3d3c3c3a393a40373b48534735405b604a373b4a4f44372d3a +4445382739638cb2d28b3b3a22708887393922382a2a202c32262827253e +17305910252449606b432c2e303032303c3946d141272835ccbddcba4ef7 +cad3b122a5ced0c725312a2f2d323c27296a35362d2a36392f2d3332302f +3031323229372d2932272647383230333635363838275a6c82683133296b +879aa2686b9a8b79323f7393995640585357a86e38373c2839344846213b +3939312520211c110347ead2ff901d1d095445658031362735483b558483 +4828376b5347555e3c3d454e5b197356153024142c325a756033744c3437 +382e373b353433343434353635393936373a393635343437393d3e3e4236 +2d3a3b2e3f3d2b46685d472839393b391b242450565a20414c2942894b5c +35555a29baeed7a62d2288b72f4231201d292f3cb1b7617561352ab2dce4 +c43d2f4042393a4c5c652a206d817f454022334148362b787b71313a352c +3864635a4345654e3932363e3b3a3b3c3f43454735343434343331312f30 +30302f2e2e2f2c2e2e2b2a2a2a263a263a33597f6e2e4a3d39454b2b566a +722550372541395734423f2e57c5e9ee6b0646655b37331a2a1a321552be +9d701121246fdeea93573a373d3f3a465c6547215789713f25302327291c +2f4d78341f242422386663443936373c3d38363835333243474743414245 +47290a47594026272c2a2d2f2830424c423f3d3c3c3d3c41463b3d4a5549 +37445f644e3e4251564c3f35424c4d402f416a94bbdd964948317d908a3e +3c253a2b2a212d3228292a2744213c64192c294b626c422b2d2d2e302f39 +3647d448303443dccdedcb5effd8e2c232b2dcdcd433403b3f3c3d432926 +6634362d2a34372d282e2d2a292a2b2c2d29392f2b352a294a3a34313335 +33333537265b6e866e383c357493a3aa6f71a2998b434f81a0a45e4a5f5c +5eaf7540404732443e514e28423e3c32251d1c17110950f6dfffa12f311e +675875903e45313a4c3e5889864b2c3b70594e5a6341434751601f7a5e20 +3b2f1f373b637b6635714931373b313d413b3939373836373736393b3637 +3a3a38363636393e414140463c313e3d30423f2f4a6d614d2c413f3e3b20 +292c595f622546512f489255663d5d6434c8ffedbe463a9fc93c49332222 +303843bbc26c806d413ac2eef5d84b3340433a3d50626b2f2471847f443d +1f34424b392f7d807739433e33416b6a624e52735c453c3e444140414041 +42454735343434333232322e2f30302d2c2c2f2e31333132333330412e3e +365a7e6c28473a37434c2e5b6e772c583d2b453f5e42504e3d67d6faff7f +1b5a7667403a1f30203b1e5ccaab8024353b87f8ffac6c443c41433c4659 +5f40184b785f2a0f1a141b201329497736242a2b29406e6a4b423e3d403d +3834373535339ba0a5a5a5a49d925f32685a34150e0d0713181b324a514c +4e4a47494a484e52443c495b523c40596053433f4851514b343d49534c36 +3b598ba8bfb6561b16816136000e0610081d1d06182921180d0c191b1a18 +1612382a391300020b161f2117031bf019101424cb260d1d11d71e3af15f +de4e338613271d20200b0a05063c1a190e0f22281a1113110e0b0b0e1316 +0d130c121d0d1b552a1d100c0b08080a07171122c8a70f240eb8efc6bc63 +b7d8d1d89ac5f1f0ea975b513f3b472c322b112236322f290d2022252114 +1216160f11185a4076530021143f6a6031000c1a0f0046640a4ea80f2619 +61e4d6e7b177e0eded94081426a57605151c1a180500392b00080d000a10 +0a0a0c0c0e0e100e0a0d0d0a0b0f0f0f0e0e0f1216171613120f08161311 +3c7a09111157d2b4c08f5fafbcd159289dada045000d1538050f081a3e00 +080f1010081fa3d0633f19140a160f045cc59b851b170005000b12000000 +030d1f312b17620218216faf98b79b5088a18858005a81802b091a0e0900 +0e286140270410110b0c1015171a1b1b0f0f0e0e0e0e1010101216151412 +13130d0f0f0d0b0f0d092a12091b0964727b6c4189948451170b3741072f +0a142c2a2818000b08261016081d75aaa0661c0f200a151b3b9ed4e67611 +190c002f3700000e120711353c1e512c365564bdbfc69264b9a988460561 +6641242318251d201b1713130c08080d1114166a6f72727374706c3f1d5e +5c443031352e36312a3344453e403c3b3d3b383941393643554c363a535a +4d3c38414a4a442d363f483f292e4f83a6c5c2693533a58a621d34282e22 +35321b30433d362c282c292b2c2f305a4e5d3721252b343c3b2f1830ff2d +242635dc371e2e22e82f4bff71f05f449522372a30322226272d633a372c +2d4046382f32302d2a2a2d32352b31282e39293771483c34333535353731 +3d3443e5c0263820ccffded780d5eed8d69bc8f8fcf7a96e695a58644a50 +4e36495b55504629393a3d362a282f2f28262c6e568d6d1d403866948e61 +263e4c4028738d2f71c52a3f3078fbedffcc8eeff7faa2162439ba902537 +42454534326b5c30393b2d373c3333333434343435363b3b38393b3b3734 +3130313334353437362f3d3a38619d282c2869e3c2ca996cb9c2d75d2ea9 +bfbb681e3840612b3631477125424948402e3eb9e373502b271d2b231b75 +e0b7a6403f273734444c2e393b3d455462583d8420353a84c2acc9a95c96 +b39f73187ca8ab5a3a4d413e35455e95755935414038393b3e4042414137 +373636343432322f313433302e30312c31312c2a2c2a24452b2032217987 +93885da5b0a16e342958632954303a54504a3a263b3e5e484a31418fc0b2 +772d21311d282f52b9f0ff98374035245c662e3241453a4365684674494b +656cbfbdc28d60b8ab8e5014747a583c3b303d33383636393c3c38363735 +33324246454342444748280c5557412b2a2c29302e273544473e403c3b3d +3e3b40473d3845574e383e575e51433f4851524c353e4750483237588eb1 +d1ce774241b1906522372a302335331c30443e382e2c3332333333325b4e +5b351f2128323a3a2f1933ff362f3445ee49304034fa415bff7ffe6f54a8 +35473b3f3e2a2a282a6039372c2d4044362d2d2b282524272c302b332b31 +3c2c3a744a3e34323332323430403848ebc72e412cd5ffe8e088ddf9eaeb +afdbffffffb57c7365606c5258543e50635b574c2d3d3c3d3728262b2b25 +2b3377619b7c2d524875a49b6d2f4953442a76913577cd33463880fff5ff +d394f6ffffad233348cba134434d4e4b3a3368582d363b2d3a3f37373836 +3735343435393b38393c3c3937353536393a38393d3d34423f3d67a12d33 +3073edcbd6a375c3cee3693cb5cbc46e243e4667343d354a752c4d555954 +4553cef280582f2b23302a237ce9c2af49493242414f57363a393e465867 +5e468d283b3f89c6adcdb268a1bda77c2085afb2603f5145443a4c68a07d +623c48463e3e414244444444373736363535333331333433312f2e312e32 +332f2f32322d4e322838257c88938b61a9b4a5743a31616c335d39435e5b +564632474a6b55584351a0cebe7f342538232f365ac2fbffa4445147356f +783d3944483d446567457044445b61b2b0b6875db6aa8e52197a81604645 +3a473e423f3b3c3e3c3834363535359c9fa3a2a3a0988b5a307257321811 +0d0b16171e3a4d4c4d4f4a474a4b464c52473b445958423e4e57544a3f40 +4c5453383a404f55443e4e7791bccc9a11075848210a01150e1004150712 +1e182327061007041016054d3819040210191c1d17211517e100293008ed +a5b05322f00c00c855e7af9b8724141f566b250c29242f16170d0e212619 +110e1011100f0f111314100b151a0d20542a1a0e080908090d0c1e1b04ae +cf4e3218b5aa2f400dafad199dcbbec19e8a2416382c2b2b31282a2f133a +6f3c0c020b0d100e090d1c2a2e14151a21100c161c08358a712c080d0425 +49511e0064e1142c2569e4736a4864f05d7ef22a0e87edbc000000081505 +002e3a00080e000b0d080a0a0c0c0d100e0e10110f101313101111101215 +1716140e1315160a0c49da151e1b5def889a776be986c4f776d9a0cdd312 +10070a131a1c053c075e7d6a0f0e0016120b2526233207061f070300290a +160a41626c16000b0008232e271400dd670d0c42ed979bb364eeb8bae15f +cab3b1d821001c15120a1a4e462b0a1203060a0e11151414131211111010 +10121211151918161313140e11120b0c0e0d058997092802b6c2a0ab51c8 +ab97e986018be408103019103347300213194b4f5c0b03000b1a4c32160b +1f141316010006080b1132675638151100041c2d2f1c02d368136f96fce2 +f0df7efbccd5ee30b0c8d97c0022201320191816120a07080c0f14166b6e +706f70716d673c1d6959423334352f362d2a3a44403f413c3b3e3c373941 +3c353e53523c3848514e433839454d4c3335394445332d3e6b8bbed6ae2d +2980754e35283b302e2031242e3c37454a28291e1d2c3529745f402b2633 +3739372f362a2af40a3b4018feb6c16434ff1e09e26dfabca38d2a1c2c69 +83422e4d485136352b2c3f44372f2d2f302f2e2e3032322e273136293c72 +483c32303335373a323f3a21c9e8664830cdc54c612fd1c8249fcdc3c8a6 +9534284e47474c544d51563c61955f2d1f28292c2a262a3a494c3031353e +2e2c3842305fb8a15e3a423756797d471585fc2c423b81ff8f886982ff6e +8eff3a1f99ffd517222a37473a32606b2f393c2e383a3433333434343435 +363a3b37383b3b383734333334343231313a3c3d31336efd363a3373ff98 +a7847dfb93d0ff82e9b6e9f83b3b32333a41453572419abca4443920332c +213c3e3f5126253d2421144a2f3e39769ba9573c4739425b61584025ff89 +2b295bffaeadbf6ff9c8d0fb7decd9dcff4e2a4b44433f51837b5d3d4334 +3537393c3c3b39383a3939383636343430343736322f30322e33342d2b2d +2a22a4b21f3f19cdd7b7c36ce2c7b3ffa421abff2a31513a31546b583148 +548a8b953b2a202735654b2f24382d2f3522182b30363d6297886c4a4433 +374f5f5f482af585297f9fffe3f1e081ffd5e2ff44c7e0f4971a3d382b38 +3437393b3a3939383633324345434041434343240e60543f2e2d2d2b312b +283c45423f413c3b3e3f3a3f4740374055543e3c4c55524a3f404c55543a +3c404c4f3d37487797cae0b93833887b533b2d3e32302132222f3c39464c +2a2e2422303729735e3d28222f3537362f372d30fb14475028ffcad57848 +ff321aef79ffcdb8a340313d778f48304d465035352b2c3f44352d282a2b +2a28282a2d32302a34392c3f744a3d322f3132343733443f27d0ef70533a +d7ce546a38dad336b4e2d7dbb9a743365b5252555a53565b3e6698633223 +2c2c2d2b242838444a33353c443837444f3c6bc5ab6741483b5a7b804b1e +8eff384f488dff9a92728aff789bff4a31adffe9293236414e40345d652b +363c2e3b3d373735363433323235393a373a3d3d3a3a383738393a363737 +414142363874ff3d453f80ffa7b7948bffa3e0ff92f9c4f5ff4141383941 +4847357443a2c5b2544c33453b2e444242542b2a452c291e533846417ca2 +ae5b3e4737435c655d492fff93353162ffb4b7cf83ffd8deff88f6e2e3ff +5430514c4a45568981644148393b3d3f424340413e3c3939383737353532 +36373633302e322d34362f3032322aadbb2a471fd3dcbdcd77efd2beffaf +2cb6ff36406049426377623b505c9396a049392f333e6c4f33283d32333a +271e33383f466ca393775248363a526061492af483267c9afbddece286ff +dae8ff4bcfeaffa225484437443b3c3d3d3a383637353535a4a6a5a3a09c +9385522d784f2e18130e0f17152243504d535049464a494549524a3b3f56 +5c4b3f4251554e3f3c485252403a3847585244445a7fb0c5c43a00125312 +04051100051a051b0e0b0d1c30111a1c1c1515001e1c16101a262018120c +1f1320e80f0a2729cf35342422e0000ada4fe93947ec5e2e301211000718 +103b0e140e0c1618100f0c0f1212100f0f1117100e1313111e331d110a09 +0b0b0b110f1b1000b09d235e5cd1eaa7d072e5d176aed49dd9b6e5d4183e +261823321d432919182e0c16230e151817100c0d151c3726000c0a192100 +0626563911001d1f5a381717104ce0091c294ceab1ad2d40dc0026e6374a +c6b8c6002a1a03000003234900090d000b090809090c0d0d0f1112171714 +151616111312111116191917141418120a0830e6280d163be26b6e2932e8 +0920ec4521003ae01e141d0f0f14071c46001b4f54120811120d0c1b1c19 +4a35292316150e08100e03294b3b0301060e252e1c120d00c489001a03c5 +8e574228f13e01cc8b16160ae6750518180401021f43110b0d020a0b0d0e +11111111131312121211131312171b1a161213130f14140c0c100d0466d6 +0020008ea92c2f02a2980382bd0cbeeb4f061b2e2f225b602a08003a4d4a +040b28240a283b32242f21182f1c090e111200104f413600150311312e11 +020294b7162025e9cf663922e15302cf81a36f5cd223190f272119191711 +0907090d0f13167072727070706961361c71543e3333333234292c41463e +43423b3a403d363843413539505645393c4b4f473835414b4d3d37313b48 +3e2e304a74b0cdd6561d3a803f2f2c3718243823392c2a2f3f5334393b3b +37391d47453d343d463d322b21322631f9201a3436dc42433332f00f1ff8 +6bfc4147ea5c333d282d1f2a3c325b2c322c2a34362e2d2a2d31312f2e2e +2f352e2c312f2d3a513b332e313538393b31372b1ac9b63b7677edffc5f0 +94ffef87b9dfa8e4c1f2e429543d344354446a51413e542f38402b333635 +302c2f373e59481f2f2c3e472b3255856a433552528a66403e316af71e31 +3e63ffcfcf5262f70d39f9495cd8ccdf154b413131333855782e373d303b +36353535353535363534363633343839373a3939393938363435393d372f +2d52ff49293051f37a7b3a4dff2335fd56340857ff463f46363139314d7c +305a90924a393a362d2a393b3c715e504838372f2a3537335f877d4a4642 +465d644f413928eaad20381fe0a66a492df74910dfa232342bff97253838 +2932375478464140333b3a3a39373836363b3b3a3a383735353136393832 +2e2f312f36362e2b2f2a2181f1133612a4bd3f4214b4ad1899d426d8ff66 +1c3143433b7f8d5c41377b8c86383a4e462b495e544650423b5544323a3e +422846847870374b3642625e412e2ab6d32b3030eed36a422cee6414e599 +be8b78ee3f3529413c34383a3b3a393a393735344b4b474140413f3f1e0c +674e3b2e2e2c2e30282b44474144423b3a3f3f393e4844373b5258473d40 +4f534e3f3c485354443e394552493a3b5782bcd8e2612542864435313a1a +263823392e2c314157363c3d3d38391c43413a323943392f2822362c38ff +2a274547ef55584849ff2632ff76ff545fff74494e3538242c3c315a2e34 +2e2c34362c2b282b2c2c2a29292d35302e3332303d533d342e3033353639 +333b3221d0bd458082f8ffcffb9efffa99cdf3bcf8d3fff439624b404e5d +4b6f53414155313a442f3538372f2b2e363d5a492133354750343b5d8f71 +4a3956558c6644433a75ff2f424f71ffdad95b6bff1a48ff5d72f0e4f52a +5e523e3a3a3c52722b353d303d39383836373534333333383835373a3d3a +3f3e3b3b3b3b3a3a3c3f433d37355bff52353d5fff8d8e4c5eff3448ff6a +451865ff4e464c3d3a3f304a7c305f969d57484c463c3541404076625550 +414038333d3d3761877b464340435c6653474234f7b92d432aebb078634a +ff5f25f0b23e3f34ffa030434332373b587c4a43433740404040403f3f3e +3d3d3c3c3938373733383b3a332f30312e35372f2e3230278afa1e411daf +c84d5328cac029a9e435e7ff783146585b4f8b9363483e81959045445950 +324e60564855473f5846363d43462c48887b723a4d39466660432f2ab8d6 +2c3032f1d46d4936f76e1ef0a5c99684fa4b41364e473b3b3c3a37363738 +373736abacaaa4a19c91814c2a7a4b2b17120d131914254a524d58504746 +4a4a4348524c3b3d535e51403b4e544e3e3a47504e473c33405a5a473d4f +7f9bb4c780100d020a0c0800171005061b00111d00162b262d1d1e2d2a17 +28382d2b2511081218141e28d94a475231e048463b37f34a4cdd4ce75053 +fb5123210b1c0d0a0f0b3f0c18160f110f0d120e0f0f0c0a0a0e13110e11 +131521292219130e0f0f0c080b1911210f9685152e1aa6a5000310b7a500 +75d930390b98dc28122232171b1323383917302b1b122510171f20191012 +172b44350c0608000a001b302d20033a5d2c17081c0f33ee241a1b3ee78c +aa302dea010aec50ced197e3001b11110d0602205101080d010c04070909 +0b0d0f1013161d1e1b1b1b17100f0b080b10131716190e12111a1416e248 +061c22f1b7c76521e31310e67a070c7ae42014091a212c333b2b040e4833 +1d070c011913120b0c0931411d1508201a1609131a4f1b1a070b273e2809 +12140093ac072101a9d7c1c81ded9b008bce1046ddcf4325141c2a120c15 +5704130e101110100e0f101213141313121211131312171c1a161111120f +17180f0e110e0535e005290947f0bdd33d6acb0040f01417cd8f0f251931 +1b5453220c0133474815150a001e0b0d3a47161b1614070c100b0a080028 +464a060028422a090b12066ad41c3005c0fbcfd728b18f00a2bf82c303ea +16202419181b1c19110a070a0e0f1216777877747370675f321973503b32 +32303333262e45483e48423b3a403e3739434335374d584b3a35484e4737 +3340494944392c3449442f273d7398bbd99b33342a32332d1d392f232439 +1a303f21394e495141455453404f5c504b422b21282c262d36e756505938 +e54d4c413ffe555df867f7554ef34c242c213a302d332a5f2a36342d2f2d +2b302c2d2d2b29292d312f2c2f31313d453e373232363736353336283826 +ad9c2c4632c1c0101f2cd5c01386e940491ba8ec3928394e353d38485e5f +3a524a382e412c333d3f3832343b4f6b5b342d311835234a5f5e53366d8f +5a40303f2d4dff372c3053ffa8ca524fff1820ff62dee1a8f70437343839 +36334e802f363d313c3437363737373737353032312e3034363638383839 +3a3936353a3135343d3638ff66223337ffc6d37742ff322bfb8f1c2697ff +463b2e3d3f4d5d6c62404e8972573b3a283d3534303536616e483c2d423c +3b3243518c5e614d465e725b393f3f1fb9d0273e1dc3f2d4d222f2a5039c +e1265ef5e75b3b2a2f463d3f488a37464143423f3d39373637383b3b3b3a +3837353531363a38322d2d302f37372e2c2e2a204ef81b3c1c5affcee24b +78db0e51ff272adfa01f35293f3178825747407488844b45352545323663 +6f3c433e3d3339403d3e3e3763818641325a725a36373b2c8cf0314210c7 +ffd6e33ac3a205bad79ddd1eff323c3f333334383b3938393b3c37353552 +514c4642433f3c19096b4a382d2d2a3030262d49494149423b3a3f40393e +484637394f5a4d3e394c524e3e3a4751504b40343e53503c33497fa3c5e3 +a4393b323a3a33233b322524391c3241233d504b514144534f3c4c5a4c48 +40281e262d2a343ff0625f6b4af961625756ff6b6fff70ff6865ff63393e +2e42342f332c5e2c38362f2f2d2b2e2a2b2b262424282f2f2e3133344048 +4139343235363432323a2e402eb5a434503ccacb1b2a37dfcb2296f95059 +2bb8fc4936475a4047404e61603c544d3c32452f363f413a33353b4f6a5c +3432371e3c29506563573970905a423245375aff48404364ffb6d55c58ff +262eff76f5fac2ff1c4d48494642384c7a2c343d313e3639393738363634 +342f35353435393b393c3b3839393a39383f353b3a433f41ff712e4348ff +dbe98d53ff443effa22f35a5ff4f42364347525c695f40508d7b63494937 +4b3f3d36393b65734e43354b454336454e87575945425b705c3d45482bc6 +de344c29d0fde5ed40ffbe19aef2346afff16748383e5143404b8d3a4944 +46474543403f3f4040403d3d3c3938373733383c3a332e2e302e3639302e +322e2755ff264a2a68ffdef96592f22265ff383bf3b4364c425a4884885d +4b457a8e8c554f3e2b4c373865713f45403f343c423e3c3e36617f843f33 +5b765c39383d2f8ef4364616cfffe0ef46d1b012c6e3a8ea29ff3d484a40 +3e3b3c3d393636383a373737a7a4a49e9da295744a225f4a241b19081113 +213344555949514a464c4f403f51503d3a4f60584437415258493b404b4f +4f43383a4d5e5746466d8bb5bac3480b0d1801170508140d0f1115191917 +110a110d090808090a0c121213180d151123201f2585a7a4a32bafa5b096 +3ebda2be8d0d88c7bda02c46352e2600140e12431316150f0b0d11110e0f +111212110e0d0f1113141a2225231e131511151002162825211d93e2b1c0 +7895e9a5bc6889e995d3ab59c996c0dc4e2b3537161418253f463e3f382c +2b1d191a1a1b222623190e17417c9d9993989589899697773e140c191530 +202fe9755b6851ef4a404529e45b53e470c8ecdef1102916111b070e1560 +00060b040805000c050e170c0d182a252d24322c0c110c0109060a12101c +181616110d1c0ae9770f2a06de640c270eb4421bcf8f56400fcb6e002023 +323a5a270404001e1d12071113101319130416000a303b20131e14200308 +392c010b422f100b131311026bd7001b1283a8111c01b3bf0278d738e496 +3e1516202723150e0c4a1110120b0d0c0f141511101218130f0f13151614 +13181d1b1512151a1b121217120e13100ee852050d1cbb14091233f31f1b +f34d0689cc1b1b102e1f1e411302000f441a08080806070a0a091829332e +1b0906090d0c060007150e001c382609151d141932e34f111c63e923060e +51c20450ef51e939c853121d1b1e221e1f150b0b050b0f11137370716e6f +776e5330125b503435392b2f2c31393f494939433e3a4245343045473734 +495a523e313b4c51423439444a4e42332e3c483f2e325f85b9c8dc662d2f +3a2338232530292b2d31353634302c3434302f2f30313035303031232923 +322f2c2f8eada6a228aba0ab913ab9a0c39f2192c6b39422433e41431f37 +3231613134332d292b2f2f2c2d2f3031302d2b2f303132363e413f3a3134 +3339372a3a41383531a7f6c5d48ca9fdb9ce7a99fba8e9be6cdba8d2ee61 +414c51323036435e655b5c54454234303133373e43403b354069a6c6c5be +c3c2b9b9c6c9a97042363f384e3c46fc866c7962ff60586044fc7369f781 +d7faecff213f30303c2c363f8d28343b343a37313c333a413434383a2f34 +2d3c3d25343834413e3c3e373e3a3837322e3d2bff93293f19ed70163932 +de6638e6a46b5629e98f1f3e404a558055383f3b5f5c4c3b3f3d3639403c +3147333b5d644738433b49333f746d474c7961403b3e3b37268cf718352c +9ac024280abdcb1188e94af6a85027263034393a3c3c7a4343453e3e3c3c +3f3d3734373f3a3737393b383632373b39312e3136393030352e2a2c2925 +fc66171f2ecc23182042ff2b28ff5a1396db2a2b203e35406c44392a4e83 +573f3a353132373a3944525f5a4939363b41433d3842504b374e6853353e +453a3c51fc631f2669ed2b162467d51763ff65fc4dde6b2a38363639373e +3c393c373c3937354e4946403e4a45321902524c333236272d293139434b +4c3a433e3a41463635494a39364b5c5442353f5058493b404c51564a3a38 +46544c3b3e6c91c4d1e36e3639442c3f2b29342c2c2e34383a38352e3633 +2f2e2c2d2e2c312e2e2e2128233534343897b9b3b239bcb4c1a751d0b6d6 +a9289ed8cbac3a584f4f4b23393233633336352f2b2b2f2f2c2b2d2e2c2b +28292e323334394144423d3336343936293a463f3c38aefdccdd95b2ffc4 +da86a6ffb6f6cc7ae9b6e0fc6f4e5a5e3e3c414d63685f60584a483a3637 +383b4247443c343c68a5c8c8c4c9c7bdbdc8caa86f4035403c564754ff9a +808d74ff6e646b4dff7f77ff95eeffffff3b5747444d3c403e8825323b34 +3b38323e333b403331353a313a3445452c3a3b35403b393d36403c3a3c37 +334434ff9f36502aff862f4f42ec7648f8b57c6436f398264648545c8153 +363d3b616357484e4b43424740344b373f626a4e3e49404b333a6e653d44 +745e403d444342329bff264439a8cc354227d8e32498f756ffb25a33333f +4446403c3e7c4444463f4240424645404040463f39393c3e3a38353a3d3b +34313437392e30352f2d302e2bff71232d3cdc362f3a59ff413bff6b24a7 +ee3f4239584c4c73493e2d53885c46413b37383a3c394554605b4939363a +3f3e3a353e4c46344d68563640453b3e54ff6a283075f938253175e32571 +ff70ff58eb75364141403f3b403b36383439383837a3a0a19d9c9f916e45 +2c674e2318190f1615233a4956594f504b444b4e403d4e53413a46565648 +3b3b4e594f3f3b464f50483c37485d5e504146749dbfd693320d1708171d +170f12121112131515110e100c09080a0c0d0f0b130e0b1227241a272718 +2f2121512c4a2a3d64395038393d2038433540443147538a5c38011f4214 +16140e0c0e0e0c0f1114161717161611121211172125261e141a13111512 +24255d69526a978d9f877aa9a1bd807eccb5bf7e5197808c7d788082714d +3a140e1f28262f322e332a242119161a22211b07041432433e3d3f625750 +53513d1d0813212750362cd6c4e7cd60dbf5edee52f4ededd01b2a4436af +1f34453d231b17115c0006090506000a1104000f0d082cb38f85807b894f +0f17000200050a061512180f201e2318a8dfece65acee4e3e55dd6d5b8e4 +7c8becb4dc6820322a343d4e04040001010c0009141815161b180c051114 +0d1d3d473c424d362a3b30243f20160e181919222349c697976e70dbd1e5 +8c84edc1e5c782dea6694b4544433f3b20043829130f0b0d0c0e12141112 +14111111100f0f1314191c1f1c19181d231c1118191b1d1d2914979a8b69 +329fbea7b465dfe8e4e66147bcf57242242b341637271605040b0004090c +0d0c0906060614242e3033393d383735353e48433b412c0e0c170d09231b +b3aab18363cfa7c2ac77dfd7f6e039c3d6f77f34212822251d17190c1508 +000f12166f6c6e6d6d766c502d1c635433323932332b313e434a493c403d +3a41443631424a3b3440505042353548524838343f4a4f47372d38494638 +2d396ca0c9e9ac4f293324323830272a2a292a2c2e2e2c2b3433302f2e2e +302f282d241f2235322532311f331f1b461e3818284e233d252e4127383c +29333b2e4e63a27b59233e603234322c2a2c2c2a2d2f3234363635343131 +302f333d413f37303831303736433a6c7a637ba89cae9484b1a8bf807cce +c2d08f62a8929e8f8c93988764512b293a443f484942463d3735302d333b +3d3a2e2e3e5c6d6a666b8d837d817f6b49323740446b4e42e7d3f3d86be3 +fef9f85efffbf9dc23324c40b92b4457513c363737862c34393739303d43 +342c3b37304abf9084807e936632473b403e3d3c303931362c3d3b4035c3 +f7fff76ad9ece9f47afaf1cef48997f9c6f280394a3e4651702e34313d41 +49313d42423d3c4441393847453d48666e626a77645d726c637b53433a41 +403e444366e2aead8483ede3f1988ff8cdf1d38febb37659535250535c49 +2d645643413d3e3c3b3d3c3737393838393835353436383b3d3a3534393f +382e32333335323e27aaab9b773faccbb6c371eaf0ebed6951c5ff825336 +3f4d365d52493f3f4638393a3b3a393939383340525c6063696f6c6e6c6e +77817e72715837343d312b4237cbbbbe8b69d2aed2bf89ede3fee63fc9de +ff8d45353f393832333d39463a303b3a384a45433f3f48422e150d5a5032 +2f362e3129323f474c4c3e413d3940453735464d3d364252524639394c59 +4f3f3b4751574f3e3642545345394377a9d2f0b357343e2f3b3f352b2c2c +2b2e303333332f34322f2e2c2d2c2c262c221e22363327383a293c2a2754 +2d48283b633a533b3f4a2f444c3d4750415e70ac805e2541623436342e2c +2e2c2a2d2f30323131303230333231364044433b333a33323836453f7382 +6a83afa3b59d8ebcb2cc8c8adbcbd8976ab29caa9b97a1a595725f393441 +48444d4f494d443e3c36333840413c2b2a3c5a6c6b6a6e938680817f6948 +30374248725a50f9e6ffec7ff6ffffff6affffffec36476359d4455d6f69 +5049423a842b3439383a314044362c3c362f48bf948a88879d6e3849393d +393a392e39333830413f463dccffffff7aedffffff88fffddcff99a7ffd2 +fd8a4054475058722d34313d434e39484f4e47454a453c3b4949414e6a73 +656c7662586c645a734e40394345464e4e74f0bebb9291fbf1ffaea5ffdd +ffdf98f3bb7f625e5f605e634b2f655945423e42404144444040423f3d3b +3a383839383b3e3f3c38373c42392c3334353735412db1b5a8844fbddccb +d887fefffdfd765dd4ff92654c57614366594d43434a3c3f3f413f3e3b3a +393641525c6063696e68696768717b786d715939343e312c443acfc3c798 +77e1bee1cd97faf1fff44bd7e9ff984f3e473f3e37363d3642372d3a3a3a +a19fa29e9c9f8d6a3e386d51221618181a1424404f5557514e4b44484d42 +3c4756483b3b49544e413545575847393e4b505146383f57635e47316385 +b2ccd2640b171d1228210f141513100f11141615100c0b090a0b0c0f1615 +18251e101f332c363a443b415e5b655a51656269895f47564a5c51436144 +45399083631d331c1414120f1215130d12141618191918181311100f151f +27271312231b0d120b0d337e777663787f818d82939babad91a77f93868e +8b7f88777975667b9c96442a181e1a292f2c342d29261e18191f1e170c04 +02050805050500000002090b0d111a1323878d62795c69837171877f8c60 +74797c77678188757275766c65768c5f2e60090503040800000306000310 +0530f8b698a89fcb7b000a000000020a0715102a1417183c4b696375764f +6e7370876463715976544b686257425664596164701b2928100106000713 +19151417170f1111121415171818101a17120f070921220d0c1714192e41 +2f5558585c336a7767844364647856467a665451535252534c582a373613 +0e100f0b0d1113121317111518171311161918191a1817181e2524191f18 +1d20142f423b3b4761423c5265732f3c5e6f5b3c36525b3f3c4b3935354b +501e0100000a02060b0b0904020604070a0d0f0c0a08080605080b0a0504 +1811090b171f2326223223353b32422f47672c49625a4d412f614a303a3f +372e3c3f3a37090c0a040f11156b6b6e6f70766a4d282b6a573230383834 +282f414646443e3e3d3a404438303c4d423535434e483b2f3f5051403237 +464d4e412e32464f4a36245b83b9d9e578212d33283f3824292a28252729 +2c2d2e2f302d2b2a2929292c2928332a1a273b333d3d433431483f43362a +3c383f5f3e364c3e5045385a414b45a29c7e3a523b31312f2c3033312b30 +3234363737363633332f2d313b403f2b2a3c3429302926448b8483708388 +8890818b8f9997799279968b95948c96888b877a8eada7553d2e37313d41 +3e453e3a37312b2d333533332f2b2d302e2d2d2320222a31333435362b3b +9ba17489697188726e807681556e76797364808977787d807874859d7551 +8a353333353b34323637232f3a2d4effb493a39dd18f1b3d333c3e3d3c31 +372e46303334556480778582587375718c74757d5f755049676861506775 +676e758c3e555a483b4137393f413b3a40403c4242424141403f40384443 +40423c41544c34333a35374b5c45686a686a41768373904c6c6b7f5b4b82 +6d5f5e6466686e6a794d5d5f403e403f3b3a3c3c39383c383c3f3e383737 +3a3738373533343a3e3c2e342d31342641514845516849435b72803b4462 +715b3f3a59654f526556525169724932342a3f3335383836353839343438 +3b3d3c3a3a3a3a393c3f413c3742372c2f393f3f403744323f4135453553 +73344b5e4f3f311e55422e3e4a463f4b515459333d3d353b3b3849464641 +4148402b101b6153312d3535332731434b4948403f3d393e453934405044 +373745504c3f3343575847393f4d565748373b505853402e668ec3e2ec81 +2e3a4033473e292c2d2928292d303333312e2c2a292927282a2828342a1b +293e3b45464b3c3c544d51443c4e4c53734f4054485c53486a525951aca3 +853e553e353533303235332d30323234353534343234312f343e44432f2e +40382c322b2a4b918c8978898f9097899699a7a489a1839d919b9b949f90 +9593859cbdb7654b393e39464b484f4844413832343a3b363028272c3030 +2f2f2822242a31323133372d3fa2ac82997a869c8681928791637a818481 +75929e8e909499908b9ab1835589343335393e3636393b2530392d4effb5 +99aaa8dd98214032373639392f362e473336375a698882929269878a869f +817f896d855f5775746b596f7f70777d9040565b493d453e424a4d464346 +443f46464644444444423a43423d3d34384d4831323c3a3f536753767875 +774c828f819e5b7775876151857365666c6f7377727e516063434042413d +3f42424040443d4144433e3a3c3f3a3b3b3936373d423e31352e32352843 +564e4e5b7859556c829049516e7d65484363715c5f7466625d737b4f3738 +2e43383b3e3d3b393a3a3637383b3d3c3a39373635383b3c363241382e2f +3a3e40413a4839484d4454455f7f3f586d5f4e3e2e614f3947504d465055 +5558313938313a3a3ca3a2a7a3a1a18d683a466c4c1f1717191a11244350 +5153514e4b43464c433b42554e403741525347333c4f5d54403a414d5855 +40384c61685137526f99b0e5a023152c111d1f17141814121215191b1a11 +0f0d0b09080a0b0408040a101e2827302d2f324250525a557575706f7fa9 +6b6d564f5456483e4948398f926121290f1312101219201c141414151514 +13111010100f0f152025261a101a110c1e24273986597c7d8284869497a4 +a6a1bbaca4a7a593a09192988c7b867a72888c452127271e2a2e29322b28 +29252121211c11100e0d0b0c0e0c070b0a0d1317181d2535242179777276 +7c7f868a85899b8097888e928a89706e7d657a656f7077abb63d4d0a0d0d +0805020004321600110003d6ae91a58dbc821d0f0c1505020d0f17192519 +1a1945705d5f5f5d74736e65668467776584a59f7a74646e6e5a555c5cc8 +5b2c3c030f000605101714121415121807122e2b0a02160f0d141d1a181a +1d2d12131c1a1c2d4f5a5f485760615e5a59695e6266616e695c57565957 +504a4b4da77a4d2f130b150f0b0c0f12121519131619191816191a171717 +161516181c241821141c210e2d466052444d4a554d544e5e554b606a6369 +5f5555444b4142455f996019230a130c0a0807070404081414110f0e0c09 +070c0a0b0f0d06020604141d161120251521364b3d333f414743483c4656 +545c616a4b4d534449333f2c3d404a14120e000c0d0f6d6e7374757b6c4e +263a69553231353732232c4345413e3d3b3d393e433a30374c483a313b4c +4d412d3648564d39333c4a5550362d3c5259412c4b6c9cb7efae35294025 +31342c292c2927272a2e30322d2d2b2723201f1f14160e12152229283530 +2e2b33393130233f3b31303f69324538354049403a484c419ba3753a462e +302f2d2f373e3a323232333332312f303232312e33393d3b2f232f262136 +3c3c46916485868987838a888d867b8f7978899282958c939f978a978b82 +9599502e3b3e343e403a40393637363232342f2a343734323334322d2e2d +2f3536383d424933338a8882838584848174727e5f75687278747763677a +667f6b77787fb3c85b75333a3d3b3a37343965472d3d2521e2ae8ca08bc2 +9642454e5c4b3d3e3335333d3132315d836e6d6c6377726b605f7e5d6a50 +6c8a876869617277645f6469dc7852683444353b343b3d39373b3e3e4534 +3e5a54332a3e37353e47474547475132333a363544636a6d545f6668625d +576658585b545f5d515157606664656868c2976e543c37423f3b393a3b39 +3a3e3a3d40403d3b3a3b3636343331323435372a33262c311c385069594b +514d585058525c4f3f535b545c58545c55615d5e5872b481425039403732 +313234353a3e44403d3b3a3a37353d3b3c403f3834342a333c342d3a3b29 +3144564437414349474b36383e3433363f252f3d39483848354a55683c40 +3f303a39374b494b48464e432b0d2a6250302e333532232f454b44433f3d +3d383c443b343b4f4a3c333d4e5145313a4f5d54403b43535e573f354659 +604b345375a5c1f9b741344b2e38392f2a2d2a282a2d3335362e2d2b2824 +2020201417101518252d2d3b3734323a413a3a2e4c494241507a4150403e +49534b4856584ea7ad7e414c313433313339403c3432323331302f2d2d33 +333230353d41403429342b263a40414c976a8a8b8f8c8a928f9791889e8a +879398889b9298a59d919f958fa5aa623e46463f474a444b4441423e3a3a +3b362e3231312f32353530322f313638373a3e4a363791928f9396979994 +8784907085757e85818574798d7a93818c8d94c8d66377353d413f3e3b3a +3d694b303e2721e0ac90a796ce9f48474c5643393a3335343d3334335f89 +7576757186847e746f8a66745f7c9b9776776c7d806d696f72e37e556b38 +483b413c4448423f4042414837415d58352c3e37343c45424042434d2f32 +3c3a3a4c6c777a606a72726d6664716261635b646155555c666d6b6e7071 +c99d735a403a45413d3e40413e42443f42454543413f4039393837343537 +393b2e35282c311d3a526e61555d5c6961645d6759495c625b65605c665f +6e696a6780bf8a48553f463e3a373839393c4046433e3c3b3a37353a3839 +3d3c3531312b353e342e39392831475c4c424e5256525442454c43454750 +343b49414e3e4d3c5058683b3d3b2c383839a5a5a9a6a2a18c6537516345 +1e1b13141b142846515153504e4d434349463d3d5051483a3e4f544b3937 +455c5f4c3b38485d634c383f57695446365986a7dddb6c151c1617151911 +1612121316191b1b171715110c080a0c160d0d210f1a163a3839403b4855 +5772717d889a8d8d968380706a484d61494f503b787f452d191314120f12 +1a221d1512121211110f0e0d0b0e101217202422140a191917180e141d91 +6a7f848584959d8fa7b2b0abb4bcbcbbaea7a7938f8a8b8c7b6093b6792c +3630212a2e252c262a2d2c2725231e140a0d1110151a1b1518120f0f100c +0b0f121a22867b7f7884798d769e93949f9f9c9c8f89939f90788387737a +7977a4d0302300181e0e01000615776c354e3f15415443523458595c4450 +511e000d11151c0511211e2e686b757975746971857a7e81989a968fa9ac +99877a5d5a6d6b70ee7e1721031c09070b14181816181819141a1e1d1918 +1818170a0e141011160f170b1c22221b22576e86626d62716f6d815b7487 +8988878079746e6a60554b4b58c29650241a0415110d0c0f121215191312 +1214181818151a191a191917131416111c151c261b28445d505a605e6658 +5857677281807b746966706c59495353484ca997171f140d18100c0f0e09 +0306030708070706090c08080b12120e0c12190f11171210181b182b4046 +4342444a4a4a7276626b87828a6584684d55494a424a4a6e656356330a0c +0e6f717577767b6b4b2348634e3035313230242d4446413e3c3b3f393b43 +3d3232474b423438494e4533313e555845343142575c452e344c5e493c2f +5383a5dde17a272e292c2a2e2a2c2b2b2b2e3130302f2f2d26201a18171e +120e200e181438393a3b2f31352a3b30353a4836353e32413e452f415f49 +53523d7a8553413632312f2c2f373f3b333030302f2f2d2c2d2f32323135 +393935251b282826291f23289a738789867f8a88717d7e726467737e8880 +828e848a8d9499896c9cbf80374948394040373d37383b3a383636312c2c +343534373c3a34352f2b2b2a26252520242d93898d848b7a84637f6a6164 +605e5f595b6f847f7080887881807eabdd4e4a29434d4036363d4aa99d62 +7a6834545e4753376272837c92986137372d2a311b2636324277787e8075 +72636678635a5366645d5879837a75725d5e74747aff9434462e4d3a3636 +3a3d3a383b3f413c424645414042423f32353b3433362f3628363a372e30 +64768c666d606e6a6265374e5d5b59585554565d65676666666cd4ac6b45 +3f2d413e3a393b3b3a3a3e3a39393b3d3d39363938373635332f2c251c27 +20263023304961515a5e5c64544c4650545c575049414559605953656551 +53b9ad354239343d3531363938383930303130303235383434373e3e3a38 +3a382b2b302824282a2435484943424448433d5d553431423941224b3c2f +44434942515c8a8c9087663b3a374d4c4d4b474e422a0b375b4b30343132 +312431474c44433e3d3f3839433e36364a4d44363a4b52493735455c5f4c +3c394c61644d363c52644f44375d8eb0e9ed85313830312d2f272a28282b +2e33333331312f29211c1b1921161225131d193d3e3f4133373a31413840 +475646454e414c474c334564515c5f4a8993604c3e37353330333b433d35 +3230302f2d2b2a2a2f323333373d3e3b2c222f2f2d30262a2e9f788a8d8a +83908f79878a817679848b918a8992898e9299a19278add093495752454b +4c434741434643403d3c37302b2f3332383d3d3739332e2c2b2522222126 +31999298929b8c9776917c7476716d6e67687d938f7f919a8b949391beed +564f2d4953473c3b4450b0a2677d6c364e5646573e6b79887d90925a3435 +302d3219273733437c7e85887f7d71768973665e72746e6b899389817d67 +677e7d84ff9f3c4e35523f3c3d434643414144433e444847434041413f31 +34383232352c3124333a3a34396d819871776b77716a714359676561605c +5b5e656c6f6e6f6f77e0b7744c453144413d3c3e3f3c40443f403e404343 +3e3b3e3d3b3a393733302a222b24283125324c6456626969726258505a5e +645f59524a4e636a635d71736265c8ba3f48413b453d393d403e3c3c3332 +3332323336393535383f3f3b393a3a2c2a2d2622252724364b504d4e5053 +4b4466604140554c54335a49394a474e4a57608b898b8361383839a6a5a8 +a49f9c865e325c5c3d1c1d0f0f1a192e4954575750504f433f47473e3a47 +504e413c47505045393c53615742364156655a4139495f60562a4474a2c4 +eabf34071b200f111210101012151716161c1d1d19110d0e100f06091a0b +4b254028304148555c60789b908ca298a8a1a77e8a7a6156514f44573578 +752a340f1415140f0f151a160e11111111121213120a0c0f131820221f13 +0d161c1c0d0a34118c8a7e7f8f84929490aaa8b7b4c7c2a1b2beb1c0a297 +947f829074915c38374e412d3432272c2830312f272323211b100f0f0e0f +1415151b100c0e1417191e1f36046c808172708887938e9ca3ad9aaab2af +a3878c8d83797b7c6d66637d833f19041212060006011079864a65662d27 +3f1b211e34466e5d675e1d000912171209110b0c176970777278787e6e7f +7ea6ad9daab19ca19286887c6c756e515491721e151e1315100f12171818 +171617142121130d14130a0f0f1c251a1312100a0c160c150f0e5a737a5d +616d62635f809ab0af97ba9fa88e847b6f655d5655568c762f1e24061a12 +0d0d101311121717141114191b1a161c1a191919150e0a0c0f1112142329 +164f525e60545c4f6070777d8e908ba4a5a7928371735a60445a3e8ec019 +0c15161a131014120500000f1516130d0a0d1108090b0d0d0c0a0b0a0904 +050e1616141a3c45443a394e52615a6b7688a6b6aea9a4917783604e3d41 +412f44513e44350c0e0f707174757376654620535c462e372d2d2f273347 +4744403c3d41393741413531414a483b36414a4a3f33354c5a503b2f3b50 +5e533a3243595a50233d6c9abceacc471a3035272a2c2a2a2a2c2f2f2e2b +2f302f281f1816151005071504441b3b272f3838383329364e392f3e2f3e +35422c4849434a53544b5733747431462c3534312c2c3237342c2f2f2f2f +303031322e33333236393730221a23262617143f1a969283808d797f7567 +726466596661466076759383878f848b9a7e98613a3f645d484c483b3e39 +41423d38343634333032312e2e32323134292123282b2d2e273a0c758d8e +7c76857a7663635e5e45525b615f51637375737d82746d6a84905b3e2b3d +4138353d3847aeb779908f4f4150262a2743639a97aba55e2b2b2422241d +251d1e27777a7c737571725e6a5c665d4a555c4b585557686a6475725a5e +9d823433443e423b3537383636383c3d35424436333c3d3437364045382d +2a2523252c20271c1961777a5a5c635758444851666145664d5a4a4f5359 +5f656a6b649a86453b452d433e3a3a3e3c3a3a3d3e3b383b3e403b373b39 +363635312a221916181a19292d1a50525c5d4e564952504c4b544e43585c +615453505f54624a583c93cd2f273334383131393a3431323b3d3e3b3532 +3539303133353534312e26211a192125221f2342494539374b4a52414642 +4455594d4849433955413b323e463c5c756b75683d3c3b4e4c4c4944493c +24084454432e362d2d3028374a4e48463e3f41383541413834434c4a3d38 +434e4e43373c5361574337455a665b4139475d5e542a4577a7cbf6d54e21 +3538272729272727292e2f302e3334332d221c1919150b0c1b0b4b23412c +343b3b3c372e3a544139483d4c445038524f454a52575163418584415234 +3c39353030363b362e31312f2f2e2e2f312e323334383d3c3729222b2f2f +201d451f98958684907d837b6d7d71756a7974576e817d98888a938890a3 +88a8744f527268535855464a434b4c463f3b3c3a352d2e302d3034363539 +2d2426292a2b2d293d0f7a95978884968b887676717358626b6f6e5f7180 +82818c92847d7c96a066463244493f3d443f4eb6be7f969550384620292c +4a699d99aaa15a2a2c2826241c241d1e27787c80787c797e6b796a746a5a +686f5e6b676777766f7d7b6368ab91413d4d4548423e3f413e3e3d3f403a +474838343c3c3336353e44382e2c2620212a1f29221f69808463636b5d5e +4b5562756f53735b6755595e656970737671a79350434c3247413d3d3e3e +3c3c4043423d404446403c403e3a3a39352e26211e1e1d1c292e19525461 +645862575f5b565660584e64676c615f5b6b606f5a6d51a6dd3a303b3c42 +3b3a41423a35353e3f403d3734373b3233353737363632292118171f221e +1b20424a494142565557454e4e53666c615c5b53465f473f36454c425e73 +6671633a3a3ca7a5a8a29b97815a2d665b3a1a1b0c0f181e34495459594e +5252433d46494039414d5045393c4a55524037465a5c4c3e3b4a5d63513d +4051655e4138568ca8d2e17e1c161e1510150f0e0d0e101313131a1e1f1b +140e101412241a0a22dd783f45413e4347516b818f9e9faaaabdb7a2a79c +7c6e544051566048d6ab1a1d0a1c1615100d1015130d1313131313141414 +0a0c0f11171f221f22180e0a161a55d4446d8b7d809d898b8aa2b2abbeca +d8c6dbc2b39fafb6ad98a2888682ef7e34525b49353c3c3239373134332b +26242018181412121010131823160e0d11121317118c336d9384828d8a8f +ba8797a7a7c1c4b9b6b1a4898b948d6770827c5585823e19140c00000206 +01033542181c28074a471619282724212f2d2b07000c14190d1c1222320d +72747e85886b7f7f828db1c4b7bac3c5bea48d92837876665b614a8c2c15 +20040c12121315171918151613141b22231a171a060e1d28281c12111215 +0e032f2f0b51656a6e6a73666a86a1bcb5c5c7cbb3c4bcaf9e8873625956 +52698c201e201119110e0e111410111317161616181a1d1d201b17171815 +0d0c10170f181026450f5853555856776263798499b7abb8c9b0b2b19d8b +7f67746a5e4f80ee44232118171212130c010312040a0e0f0d0c0e111115 +130d1014110b091911081015192b082c3b434c575b485b6c7c97a9b7b7bb +b9cbafa6a867576047472c293c0412170c0e0f70707473717261421b5d5b +432c352a2d2c293744454642383f443935404337303b474a3f3336444f4c +3a303f535545373342585e4c383b4c60593a314a809cceee92302e362f2a +322c2b2a2b2d2d2d2b2c2d2d261d1513150f1f130017d26d36453f342f27 +232f36393e343834433a2e454c434c4a465b606041caa41d2b273d35322d +2a2d32312b313131313132323431333330333735302f2217131d215cdb4b +75908180977b71636f6e595d5f64516756514d7089938ca2908f8cf68336 +5a7269535857484d494346443e39373330363432302e2c2c30382b201f20 +222121128b36749d8e8c91847d985452544a5a534a515a5d556780856976 +8c865e8c8f5a3e3a372f32383f3a3a6a744747502d6b632b29373c434e6b +71704324251b1c1b2f2532421b7c7c828481606e6b6a5f59554649535b61 +555068696c756a646b53973d2f422a343837343134363738383030384446 +4241442e353f46402f2420252a21133d3812546465645f67575a5d4a4c41 +4e4d503953575c5e5e5c5e616259709832363e36423d3c3c3f3d3a393b3e +3d3d3d3d3f3e3e3f3a3434343129211a1b121b1427450f565150534f6f5a +4b433c485f494f5d434b544e4c5348615d52477ff554373a33322f303534 +3038452d30343532313336363a38323337332a212d23181f2022310d2e3b +414954553d4248495352524544425b4e556c3c384d3d47373e5e2e434a3d +3c3b514e4d4741453820034e53402c342a2d2d2b3c484c4a483b41443833 +40433a333d494c4135384853503e37465a5c4d3f3e4d5f65523e3f50645d +4139568caadcf7993732382e272d27262526292a2c2b2e30302a221b181a +16261a081fda733b4742353028252f3a3c423c404050483b5257494d4842 +5a626a51deb62e382f443a38312e3136332d333331313132323330323332 +363b3b37372b201c272b66e35178948482997b74687479676e7179647a66 +6059788e968ea4939696ff964b6d80745e63625358554d504c443f3b3732 +342f2f30302f30343d3024232322212014903b7aa698969d928da9656566 +5d6d655b636a6b61738b90758298926d9c9f65474340373b42484341727b +4f4e582e605422263a4148516c706d41262923231c2d2331411b7d7e8589 +88687876776c69665a5d6b72766a607676767d736d7562a94d3c4c333c41 +3f3d3c3c3e3c3c3a34343c4648413f422d343e464233282323251f133e3d +185b6c6c6c656b5a5d655b62566262644e65696c6e6c6c6c6e706b82a840 +42483c463e3c3c3f3f39393d4344444443454545443f383838352d262324 +19201729450d57525459577a67595048576f585e6d565e66615d645a7471 +685e91ff6142413a3b373a3e3c363e49313337383837393c3c403e38393d +3c2f252e23171c1c1d2d092b3b44505d5f45464c505e62645c5a58716164 +76433d51454f3d415d2a3f453a3a3ca8a5a7a29b978158286b5b3918190a +11162036474e5958495253443b474b42393e4a5046363546585a46363d52 +5c5346383f54685c413a47585a5d3639729bc2dbc84811111d1317120f0d +0d1113141412161916110c0f141c111f2e0c8c1b39313d46564d51819ca1 +b3acb1b1a6b8aaac9591735f6555505d26e4b5273222101514100c0f1515 +1117161614121211100e0f1110161d222110161b1e261b61ff8b5788897f +96889295a9b2ccd1c4c7d8d0ccd4bf99a7b4a88da19169f9a441504f3e2e +3c433f4d4f2c3338342d261a0f151113181713121917100d111616181c29 +ee5d558d82878b899e747dafb2c2c5c7c3c2acbe9f9a998d838276797cd6 +9d16072017050904000400000d0300151d191f0f1c2d2625080000000004 +120e1212140d7696086481857f8d8b957371b7c7c6ced4c7c5bebeaba586 +7a756f70608feb391d17180d17181615191d1d1a191a1a17130f0f0e0d1a +150f111c18100f0f16121e777521426f6d6f6964785f86bdded4c6ddcee5 +c9c7c1b49c826e625e6080db311f1316101411131716100e101215161414 +14192029221c1a1d1b1512101a0e201a386b22496158756160656072a5b0 +b4afc3c3cbc1cbb1b09e7e6d5c5b5f55c92d1c251b1b14120f06071b370a +0d0f1112110e0d0b12100a0f1c1a100f0b0518220f3999222f47544c404a +68696c75a4afc2cccdccc7beaea59772624d4e3d47782216060a0a0b7373 +76736f71604018645c442a33282e262837414246433542453a323e453930 +38444a40302f405254402f364b554c3f31374f635a3f38425355562c2d64 +8dbae3d95b2629373036312e2c2a2b2d2e2c262828241b141213190a1523 +007c0c2e2c383a3d261a3b463c443433322638303d394b474c625b555d23 +dbb12a403b2f34332f2b2e3434303635343230302f303233302e2f353533 +1f232425291b5ffd8a57898a7d8d747264665e6a65514e5b4b495e5a496c +8d9484a29570ffa74257665e4c585e5761613e454a4740392e2732303035 +332d2c312c231f202424242527e95c58948b908e7f86483f5c4d514e4c4c +5145655666787c7d857e7f82d8a42c27443f31393933392d2c3c2f273d45 +3e402a3545424a38332f372e272715171e2419809f116a85867d837a7a4f +43735e494d5045494c5b5a685d626d737d6c92ee4533383f36403f383637 +3c3c3c3b3737363536373837423c2e2d342b1f1e222921287c782142706c +6a605564444e535a4e3c524057414c555c5d5b5d61646283e24137313b37 +3b3a3a3e3e393739373a3b3937373a3e48413937383730291d2113231b38 +691e455d536f575659412e4a4f4d3e4a444a415447585d4f514a4c5351cb +372d3c363835343631344c6733333537353431302e35332d303d3b2f271f +17262c183e9b222e434f473d475b44373150484b484344464a4e575a4141 +404d4456924440343b3b39534e4e474044371e005454402a32262c262b3b +45464c483745453b333f453c333a464c42323144565844363d525c534739 +42566a5f443d46595b5d3537719ac7eee1622b2b362c302b282625282a2d +2c27282b251d17171820111d2b08861334323c3c40291d3d49424b3d3e3d +33453d4d445348485d5958652eecc0394b42343938322e31373632383734 +3230302f2f3233323033393b3724292b2d32236aff925f8e8e809076756a +6f6b7975625f6d5e5b6e685272909687a69e7affb856697469566369636c +6d4a4f544e4740352b302b2e33342e2d332f272323252524242aed615d9c +9299978a93574e6c5f6361605f65587767738386878e898b90e7b4393250 +493a43413a4136364438304547363525324746503a342e352c292a1b1b1e +23197f9e106a888a828b8283594e826f5b63675d6165706d786b6f787c86 +78a3ff534041463c4646413d3f41413e3d3b3b393735363635413b302e38 +2f262120231e297f7d294a757170635a6649576772665369566f57616c72 +706e6d6f727194f24e4139433c403e3f43403b393b3d4243413d3d41464d +463f3b3f3b372f232719281f3a6a1d445e57735f5f65503d5b605e505d57 +60586a5d6e7161605a5f6762da4337443d403c3d3d3739516b3736383a39 +38373434393933374442342b2017262b153a96202c44534d4450644c413e +5f5b61605c5c5c5d5c6462474849554c5b93433e31383839a39fa2a3a3a0 +82532b685634131814141a243f544f5357454c534c3b3c4c4a3c31405151 +42373f4e56584332465e5d523f34515e67623b3850686b49354f83a5c9e6 +a4281e1112191110101315181a1a15120f0e0d0b0c0e0c151e2d382c1e1c +38434e4f506183a2b3b2c0bcb5b2a7afafb8ae657d665e6662213053364d +3c13100d0d0c0c0b0d0d0e0f1314121315160d1214131e29271e1c122022 +2f3f24ff63177d91788b898593b6d0ccc3cbcfc9d9d6dad2bf93afb39899 +99615d7f473f4e473f3e434449584238363d3a2b1f1b1415151616161616 +170a0b131214202a30764a0d7a989b90a88c65a2a8c8cad2bfc0c2c5c1bd +a688a493887b838bfcd63924181f011110000b0d0e0e0e1011131d1d1715 +1513110d090a0b0906070e142a0d2668c725477780817e8d8868aeccc5ca +ced3d3cecac7bbab9e938270606286fd57281c1906161212120f10111519 +0f10101011100f0e131311141616100a06161e326ade2f325e725b617a7d +619ab7d1d1d1d2d4dbd1d5cbbfae947868696662c04522170f151c17161a +19130c0d1d21200826180e1b2d2915181c181b0f0a1416201d3fbf3c5544 +706b626c70597ba9b3b4c0c2c2cfd0cdc6b7ac98766b5e6752c05f381219 +12050a02150d0f7a3e1e0c0f1011120e0e0d090917241b0a130d110f212c +1eb249463e414a484860736f97c1bcc5d8cbd3d2c2c3abb397705050473b +863b33070b08077572737373735c361b625c432932332d22223a4b444748 +363d474132334344362b3a4b4b3c31394850523d2c4058574b3a2f4c5962 +5d36314961613f2943779dcbf0b13931292f38302f2f2d2e2e2e2e2e2d28 +221d1916140b101520291b0a0c2e383b3021202e3d3d32393331322d393a +4d5624534e546463243357405b502e313333323231313130313332302f32 +322c31302c333e3c3230242e2a2e3614f6520a778e7582725c515f67584d +575d4f4b43555f624c7c93889398615c7e444562645a5659585b68524846 +4d4b3c302f2c2e2f303030302e2f1f1f2522222b2f2b6d480e7f9fa08f99 +6b30564452434b494f4e51535b544d8082827b8184edcd423b36442c4041 +313a3836343436393a403c3936383a3c3d3b3c39322621212439192a68c3 +214578838174755c285c6a514c4a4b4842444b4f535d6a706f707084f75e +3b3b423647423f39343132373b32333638393a39383b363332322e241f1b +27273463d72a33667c63616b6036534a504d4c49474941494b535c5f5d64 +6d6260c6583d3a343a3c3532383b393938403f3e2644362c384a46323539 +35382b1f2621251e3dbb3851426e665b6062342e46504d544d4146404146 +4b5e64585c535d4cbe66472b3a3b353c34453a38a3664634373637383434 +332c2c3a473e2c2f25251d2a301cac403b353b484749503e243f5b464048 +353d423e50495f4e3d3c4f47429350512e37393951494945454935160252 +523c262f2e2a24253e4e484b4d3942494535364646382f3e4f4f40353d4c +54564130445c5b524136536069643d3851696a48334d81aad8faba40372b +2d332b2a2a2a2b2c2d2d2b2825201c19171410141a273023131637404136 +27263545493f48433f413c494c5d622a554e536567293c60496457353636 +34333332313131323232303030332e33333036413f332f242e2c333b1eff +621b83977c8778645d6f786b5d64675a5b55666c6c5281988b97a06b6a8e +55556d6c6360646369776157555d5b4c403a2e2b2c2d2f2f2f2e2f202025 +22232d322f724d1383a5a494a0723a625060525a596163686c726a5f8c8c +8c858e94ffe05349414d334848384241403d3d3f4141423e3b3b3c3f423f +3c3b372e231e1f2336172b68c4224a7d8c8b7f8269366a7964615f615f5c +5c636669717c807d7d7d92ff68424044384b46443e3a3637393d34353738 +393938373b38353436322b22161f24336ade3138697d6561706540615d66 +64615d5a605863646b72736e7278706dd25f44403c4347403e4345423e3e +4647462e4c3e3440524e3a3b413b402f222825292240bc395243716a626a +6f45405a625e635d535a595b5f626e7060635b6856c9704e323f3f373d35 +473d3ca76846343737383b35373430303e4b422e3225241d292f1dac433f +383f4d4c4e5a503b5773605b635056595361586c594645554f489953532d +363638a09da1a2a39f7f4f3068523011141213202743554f515444454f4c +3e3b484b43303c4d5246383b475b5f4b3642575e5e443742556865473748 +5f674f353c688eb7d2d169072515151312111214141514120e0e0c0c0b0b +0c141525424b2e1e2a42434a514f557ba7a7a5b4b9bdbfaeaeaaaaaf7a91 +786b67592e45b7563d3412100c0d0b0c0b0b0d0d0f131413131716141818 +161d24211611201328224f35132612749384908f60a4bec4cde0d8c2d0e6 +e0d8ccc5a7b8b2aba99748318d48482e28323e444445464b3f3c403c2b1d +1814141516141414131015150d070c203d382c1200458d8ea8a79a619db7 +c4cebdcebab3bdc4bcb4b39e96898a88696d8a4533340e010500130b0e0f +110f0f0f0f1715110e0e0d0b0b0b0d100e09080c10214235622913135b6c +7e8a82926db8ced5cec7cbd6dbd3c8c8beaa927f766860627d465529081e +0b0f11121315191f22100f0f101010100f1114171917120f0b1a132f341e +52181b285a5b6c707e6798d1ccbcc6cecad4dcdad3c6b4987c68616b6771 +36461a11212121211b150d08080b1619172622231c1b1e131a1b14180e09 +050a27302b4708251c5662676f6f5b74adbbaaa6b5c3cad1d0ccc0b1a083 +72556d56755546300d10090f010d09003a2d12090e0e0d0f0b10100f0f1b +2722140b0a0d2637383e20212122324950546e706c86b2c2d0dcd0d6d4c9 +cdb9c3b294544246425231131f0f0a0976727272707058321e625a412731 +2f2921213a4c4446483839434133323f453d2a36474c4032354155594530 +3c5158583f323d50636040303e555d4529305c86b6d5d976183d2f333231 +2e2c2a2827282d2b2925211b171515131c373c1d0a19383739342216253f +2f21292e38403539363f53335e585b635a364ec2634e472b313433333232 +3231313133322f2f31333337342f3239362b27342332224422000f016c91 +838978355d615253655f5258584b5158655c838f96a09448318b454b4043 +4b5558565556584f4c514d3c2e2b2c2e2f30313131302a2e2b21171a2e42 +32210d004a9593a69677284d4f4a443558493c43494b566c727f8289855e +5a7d4a464e3029342f4236343433343537383a3633353738383839393731 +28232325314c375e1f0a0e5b7080846a5f23575f5e514342464943404e58 +5c5f6672766e5e754a664831503e42413e3a383a41453637393a3a3a3a39 +37373938342e2623312435321347111c336a69726460374e644d3d43473f +4248464950565a5a5e6163617849633d36433d3b3835323335352e333634 +433f4039383b30373831352b231a182f2f264104231c5661626561342347 +58453c42433d3b3a424a5a6764644a665174595349303d3c47373f351f5d +553c313636353531363632323e4a4536292421343f3938151515172b4751 +5761391c2c4a4a4a49383c3f3e504a615a553d414542593e2b3e393a3b4e +4846444346311206524f39242d2b2623233d4f484a4c3c3d474537354247 +3f2e3a4b5044363945595d493440555c5c453944576a674838475e664e33 +3a6691c4e4e47f1f3f30312d2c2a2928272727282624211c181514171621 +3d4325132141414139271e2e4a3b2f3c414951464b494f603b635b5c625c +3953c86b554e303634343333313131313032323030303135393733353c37 +2c253220312248280821147b9c8b90803f6d746968776e5e62685e606570 +6389959ba59b523d99565a4a4a525d63626265685f5c635f4e42392e2b2c +2d2d2d2d2c272b2920171b2f45362713054e9897ab9c7d31565a55534368 +5b525c65676e7e7f898a91906e6d915d555b3a313a35483d3d3d3d3d3e3f +3e403d3c3c3d3e3d3b3938362d231e1d202e4b365f200d14637b8d90786e +326870716358565d605c58656e72727981837b6c82536d4b33513f454541 +3f3c3f4347373738393939393838393b3b38322c25291a3133194f192135 +6a69726868435d776050555852575e60636a6e6f6a696b706d825069433e +4d4b4a4844403c3b3a343b3e3c4b4748414043383f40393d31241b193134 +2a4305241e5866686e6e46365c6a554a4f525054535b606a706964506d58 +7c625b5034403d46373e362261553b31363635363237373434404c47372b +232235413b3c1919191d324c565c6b4e35456365656351545553605a6e66 +6047494d4c61442f40383a3c9f9da1a2a29e7f4f396a4f2f121410122129 +45564f4f53463f4c4d413a424a4c323645534f3e383e545f523b38455464 +504132496566583c3d4f625d41314d73a8beebb826171c10111010101012 +13120f0f0f100f0e0d0d0e0f2a5a6031192d454048534e47628db4b0b9b3 +afb1a6adc8aaa87f8a78736d682044ecc3701e1c100d0f0c0e0d0d0e0e11 +1314131315150a0f12131b242219001e1e311050712615216b8b8585915d +6bbacdbccfd2c4d3cbd4d1c8c6b4bfb1a3859b5298f08c3a26192a3a3838 +392b463f3d3f3a281a1412111212121212120a150e08121212266a231e1f +3ba38ca5ad9b5387bab1d7d8bbc1cdcfcdb4a6a594a49589785b51feaa25 +3227120305060a0e111412110f0e19181411100d0a080b0e13110d0b0d0f +08273f5b1b1e0738637d9785995aa0c9b4c8d6d5cdcbd2d4c0baa4887d80 +766865ac8638200a20130f111416191e2327141211110f1010100e141a1c +1812100e0a1931403e1a071016525d6c637b6d87c1c8cbd5d9d7dae2d9d7 +cdbba48f786a6c6d734b4c3821141f28291b120f0c0a1429171d16171e08 +121b161d1a10150e0d1415234853271f100a475d6769695c6b92adb3b6c6 +cdc4d1cfcbbea695816565604b48642824170c0712050c1601121b090810 +0e0c0f0b0d0f100e151e1b12080a18171d153d270f101328454d4f636b63 +76a5b9b0c0e0d8d3cacab5b9ae976540454029520e1f120e0b7470727172 +7157322764574028312d2822233c4d4444473a33404236313944462c303f +4d493832384e594c35323f4e5e4b3c2d4460615135334558533626426ca6 +c0f1c2352c342d2f2e2d2a29262526282a2826221c17130f0d244f512008 +20403b3d3f2c131a32463638302e332f3c5d4956405f5e676b6c284df9d2 +8130353233323332313130303133323030323331363431353c3a31183733 +40164e66160312678e888380352861604454574d58424b545c6e71909292 +809c559af28b40393241514c4a4a3b564f4d504b3b2d2a2e303132323232 +322932271e2422222e6318191e40aa91a4a07d1f3f5c415857444c535352 +43485e688f908c785845f5b1384d493b33353635353636373838373c3937 +3839383735373837312a242222183141591218043b6b8395736e1a496241 +4b524c3f3c444f4954575361787e7263a88f4b3f3350443f3e3d3b3c3f46 +4a3a3a3939393a3a3a34373c3b352e2726212a373e330f001021646d745d +644445584b4e54544d484e464e575d63696b67646a7a5e695b46363c4240 +35303437363747353b34353c263039343b382e332b25262028474e211a0e +0a485e64615d3a1c2f4a514e534f3a3d3b41494e595e555c5d484868353d +3a393a48383c3f243543333038363435313335333138413e3424222a2525 +16371e04050923445054594123294a4c35364e44413f4b425050534e4045 +42305f223e3a3c3d4a4746464447331411544c3a252d292524253f504848 +4b3e3744463a343c4648303443514d3c363c525d5039364352625142334a +6667583c3b4d605b3e2e4a74b3cdfdcc3c2f362b2d2c2927262525252425 +2423201c16131110285556260e27474141412d171e3951434a4242484350 +715a64496661696c6f2b52ffd9893a3c343434323231312f2f3032302e2e +303130353533363e3a3115332e3d16516a20132575978f8886403975775d +696b606a565d646b7a7a96989886a15ea6ff9b4e4037475755545448635e +5c605b4a3e352f2b2c2d2d2d2d2d242e241c242222316a201f2446b097aa +a9852b4b6a4f6969575f6a6d6e5f607075969691806353ffc14658524137 +393a3b3c3e3f3f3f3e3d42403d3d3f3e3a383837372e26201d1e1730405a +151c0b447691a3817f2a5a73525d676055505a645d696b6570878b7e70b6 +985244375248434341414044484c3b3a39393839393935393e3e39322d28 +1920333f3917081825646d76616c5253695d6066655d5b64606871757778 +7570717584656f614e404a514e423b3c3d393d4f3d433c3d442e38413c43 +40363b312728222b4c52251e110c4c636b6c6b4a2f435c5e59605d4a5353 +5a5c5c61625661645152733e44403e3d48393c4126374332303836343632 +343635333a43403527222c2627183b230a0b11294a575a624f343b5c614a +4d655a54525c535f5e60584a4f4e3a6729413c3c3e9e9da2a5a5a0805046 +6d4e2f15161114232947594f4c53493e4a4f463a3b454f3b353b4f574b3c +36455c5e4a3936486461542f3f595f674b3740596b593a41608faed5e588 +0726160f0e0e0f101315150d0e1112130f0d0c0d0c21464a261d3b42404a +54514851678694afafa7afb9d1dba49e838275756b694a6982d3c9321912 +0f100f0f0e0e10101114141313151204070d111a22221c11141c12144a29 +1b21327389837c8e7f49a3d5d0d2d5cdcdc3ded7c1b4abbab5a6a99b7d69 +c4775d32182430272c34223732333633241912100f0f0f10100f100c150b +0c211916375119170d2e9e8888a0985d62a6acc2b2b4c5c8b4c8c3b8a49b +a686808c8063fff6522520120c13030c111519171512101a1a1614120d0a +070c0f1314110f0e1013202c20211916356a788c949d4a6db0c2c4c4c8d2 +d8d3c4c5b7a38d86847a6e75fcde2d1a180d150f12151618191d1f151311 +0f0e0e0f10111216181714110f1017263b48180e181c505b606576695bb7 +cacfc3c5d5cec6d3d0c6b5a39279667488f8cb563e1f1a1b27291d181c19 +11143f0e13131b271e161d161d1d17201b19140e0f423f09101611495a62 +626b735a729fc2b8abb8c3c8cecbc2aca29a7a75594b5aa13f1d1b0e010c +050a1e171513080c130e0d120f0c0f100c0c100e0a24141d0567821a111b +19182d4749414d695b527bbdd0c0bacec8c7ccc0c1bfa9724c4744389543 +1e130f0c7370737475735a33366a55402b332e2a24233e504441473d323e +443b31323f49352f3549514536303f5658443330425e5c4f2a3a545a6044 +2d364f614e2f36568badd7ec95193b302c2b2b292929292926272726231d +17120e0a1b3d3e170e30404046493920161b292a3a36303947677a4f574e +5f606c6c6e53748fe1dc4632313332313130303030313232303032353135 +3535383c3a342b2d32251e4e27111527718d8c7f835f0e516f5e5a5b5556 +456568636872929c9ba89e8470ca796545313b473a3e453348444549463a +2f2d30323434353534332c342525352b26414c0f120d35a78f8896803124 +5349533d404f4e3a50575f6173938588938360fdff6540423b3c43333738 +3a3b3c3c3b393f3d3b3b3b383633353735322b252120212a301e1d141539 +74818e877b132455564e47454a4f4b455156565867797e7674fee841383f +3a423a3b3a39393c40453b3b39373838393a3738383734302a2725282c3b +3e0e081b2a646f6b636549215655594947504339484e54596369685f6c86 +ffdc715f413c38434338363f423a375d2c313139453c343b343b3b353e36 +2e241813403a030b16124c5d625f6354111543655440403e3b4047515565 +76676e584b5ca74d353c39323f37384639373b32343b363538353235332f +2f33312c402c2f136c831508120f1128464c45474b2c142f61644535433d +424d4d565d625a4c47463ea2573b393b3c49464949474935151f5b4d3a28 +2f2a272625415348454b413642483f3435414b3933394d55493a34435a5c +4837344662625530405a60674b353e576956373e5f99bbe4f69d1d3e2f2a +2927262627282822232424221d1612100d1f42421c133445424547372018 +1f31364a49444f5e7d8e62655865656f6e72587a97eae34f393433333232 +2f2f2f2f2e30302e2e30312e323435383d3a34282a2f211d4f281923387e +969184896a2067877875746e6c5b787973747b9aa2a1ada58c7ad688724c +36414d41484f3d5250515754473c342f2c2d2d2e2e2d2d272f2222342b26 +43531819153db09992a18d3e33635b6450536567536c7175727e998a8b99 +8a6bffff734b4b414047373d3f42444443413f45434140413e3936373736 +322a231f1d212b311f1e181b4480909d988c263566665e59575e635f5864 +69686876878a8182fff44a40463f474041423f3e4042463c3b3937373738 +3938393a3a38342f291e202a3b461612222d65706d686f56306765695855 +61564c5f666d70747772677993ffe67a664b46464f50434045463e3d6534 +3939414d443c433c43433d463d31241a16453e070f181651646a6a726424 +2752705e4a4c4f4e565e63656d7a6975605568b3583f433f36403838483b +393b31343b36353936333635313135332d432e311470871b0d1717182f4e +554e515536213c707457485650535e5e666c70675853524aab5e3f3c3c3e +a09fa4a5a39c7a46506c462c15150f13232a485b4f4b534e40484f4b3d36 +3e4d483935475a59463739576961493641606c663e3c47526b5e3c374b6a +69493d486a9bb3e9de421e1c13100f0f111212150e11131413110c0c1310 +0f171d172a5241464b4e51545556667aa0aeb2becde2c58e928c84766d5f +6558521b617c181b12101211111010111112141412121411080a0f12181a +1814050b1b01266b302d123b8c8784878895504f7ebbcfd0d3ccd8f1d5b2 +a0a2b0af9097aa8d8b99d9f72b0f17221b2634272928292b281e17130d0c +0d0e0e0e0e0f101a13151d112c735744250b599a9b949ca57c2e66a4bbac +c4c8c0b4e3d2ae869ba58c80938271aaf0d34f0c0b0e070b0c11151a1816 +121014121110100f0c0a0d0f1515141211102369351a0b170c3b6b727393 +9b614a6fb3bfc4c7c7c9d2d7d1baa6a09484747165c4c16b2819070a1315 +1816141311131412100e0c0d0e0e1b141114191b18131f0d47622a1b180a +1b4e6058706d6c4c649fd9d6c3c7c8dcdfd5c7b5a5947b666b64d2dc7a4f +1e1b1521231c1e251e114c8338272c20171f222214191e1e2a273a141c3e +6d31191b15174f596062748b715f6994adbecac8c8daccbea798936f6864 +5865b37b390e1600060808131816140a0f120b0c13110f12130f0d0e0e0d +0d181d0caafe542f201c1b2f4b4c41495b70533f77b9cbc8c6c1c9c7bfb6 +b1936a4d4a4a5094682a130f0c75727574726f542b416a503c2b322c2924 +243f5244404742343c4440342d384742332f41545340313351635b43303b +5a67613937424d6457322d41605e3e323e6297b1ebe75131312d2d2c2c2b +2b2b2b24252727231d161217100b11120b1e4941484c49443b2c1c1b233e +4547546383714959626b6a6b646f635d2a72902e36313232313130302f2f +303233313133353b3e3d3a3836322c1f2534173675362c0a348e90929185 +7f210a24525e5b5e59688a78646274919e8b9ab19695a3dfff40282f3a2e +39473a3c3a3d41403932303133343535353533333a302d31233b7d523a1f +0b60a2a39896935a0023535e4658564b3f726e5c497a988d8b9e8b73aefc +e66a2e343e373b37383a3c3d3d3b393938363739383533353534312c2621 +1e3173391a09160f43797f7a8f84380f225050504e494c5560665f5f6d78 +78767768cacf81493f2f32393a39373536393b3a38383636373838413a33 +333637312b341c5062251617112a6375677363561d10356d664e4d495b60 +5e5d60686b655c6564daed9570403d353d3f383c4846396da156454a3e35 +3d404032373c3c48424d22243f6b2a1316141a545d62617070310d173e52 +5a5a4e45565255545c6c5a63665a69bb8b512f3f303838313635353a3437 +3a33343937353836323031312f292d2f1aafff52281612142c4b5048494c +5328062b5d615249424c4e4f4d4f4c544f494c539e7a4536383a4b484b49 +4746300e2c5b4739282e27262626425548444b463840484437303a494637 +3345585744353755675f47343f5e6d673f3d48536b5e3a35496866463a47 +6fa5bef7f05635342c2b2a2a2828282922242525221d151218120c13160f +224c414547453e36281b202c4b565b6a7a99885c686c716e6e6771676331 +7a99393d33313130302f2f2d2d2e302e2c2c2e31363a3a393737312c1c22 +30143374363117449a9795938c8b331f3e707c787b76819f8b746f7e99a4 +919fb79d9eadedff452c333e34404e414344464c4a423b342f2e2f303030 +302f2f372e2d32253e7f594329156aadaea4a4a36a0c3566735c6f6d655a +8e887259859f918da2927fbafff475373a423b3f3d3f42454544413f3f3b +3c3c3d3c3937373636322c25201e32743a1c0c1b164e868f8ca0964a2134 +626163615e5e677378706f7c8684828377d8dc8e5248373a4242423e3a3a +393a3b39383635363737423b35363a3b362d2f154d622b1c1f172f66786a +7a6e632d1f437c745e5c5a6f75747375787971657170e5f79e774a474049 +4b43444c483b74a95e4d52463d4548483a3f44445049512327437031171a +191f5a666e6f8183411b23495b64685d576b67666466715f6a726675c898 +5b384534393a333a39383b33373a33343a3836393834323333302c30311b +b3ff572f1e1a1c35555b525151572f0f376a6f6059535c5f5f5c5e5c615c +575962aa844c3a3a3aa3a1a5a49e926c3753693d2411120c122229495c4f +49545343454c4f423438485042363e535f5442334b62685a3e3a50686b55 +40394662664a393c5967553e355188a9d5e9aa1f101917151111100f1011 +12141614100c0b090f0c0b12182f50474c4c48526167625f5d6b717e959d +adc3908f8a7d7369636c3d0e2a1608001b12121211121111111212141412 +12140f05040c13191b191910101209001a24180d5fac7d7b8f8c96946062 +848caac9bcb7d8bcb0b1b9b1a5a2a37c9d5035303f1c091019151c251e24 +242424201a16100e0b0d0d0f0f0e1013130f171e13255b45461b158e868b +8d9ea6a551475879a9bec4d6e3ffd3aa9ea0ab9d86887b85668ca43e1f12 +0b0a040a0f131715130f0e0f0f0e10121414140f1115171614121116602e +36311f09596d776c889b955c486d9acadbcac1e3ffc1aa9fa29a83757665 +70606426180a16191b1c1a140f0d0d1111100e0e0d0e0f201710111b1f1b +170d0d44562b300c0c2c66685a6f6c878958649bb8c0bfb9dfe2cebaaea4 +94827462604b545942240d15191b191c211c11073d1109241c122436311b +1a1a17221e20051830542435180e1c54595f5e6d81947956567aaabcb0cf +f3d9c4b39a90715a62574d614d2b1a15050712100f1516120b0f10090b12 +0f0f1012100f0f11130f251902255c1a1a1b191a2f4b4d454b4b6e715b54 +5a84bbc3cbdcd0c7b8b38e5f49514c44424729130f0c787476736d67481e +466747372a2f292723234053443e484737394144392b32424a3c30384d59 +4e3c2d455c625438344a6366503b34415b5f402f324f5c4a33294680a3d5 +f0b52e2331312f2e2b2a292925262626221c16110d0f0a07090d2447464d +4d484b534c3b27181b1a2539435b7f5b656c6c6e6d6b75481b38281f1738 +31323231302f2f2f2f313333313133373a3d3d3b3835312e28292b1f1229 +2e1c0759ae888a9d918a742b182b2b436057598371707e959a9aa1ab87aa +5d423a4d312328312a2f383137383b3d3c37333232343436363635343631 +292f32253462403e1815948e93939b9b8c2a11192e535f5e6e7bac7b626b +84a1a29497888d6e9ab759413b3b3a34353638393a3a3837373535373b3d +3d3b353432312b26221f246b333731200d637d8777898c78310b18396572 +5d5476a6645c6278827b777e6b79707c463d303c3b3b3a38353535373737 +363636373837483d33333a3c372f221c4d57292e0c153e7b806d786a7b67 +110c3f585b544a6e73675e656f726e6a5c5f53657160462f353a39373d44 +3f34285b2f27423a3042544f39383835403a33131d314f1d2f160f215b60 +65616c6e5f35120e2d545c455e826e676b666f6059665b536a5d433b3c32 +373f3830313338353738313338353536353332323435283a2b102d5f1815 +1412142c4b514b4f4660563218112a57575b6d65625a5b4e4a4b504e474a +55403437384e4a4c48423d2400335a3f33262b24222525435648424c4b3b +3d45483c2e34444e40343c515d524031496066583c384e696c56413a4762 +6648373a5764523b33548db1dff8bb332733302e2c282726262425262522 +1c17110e110b080c11284844484740414a4536281d262a374e5c72946d73 +767474706e7a4e23413227203e33313130302f2d2d2d2c2e2e2c2c2d2f34 +37393a3a36332f2826271c0e262d1f1367ba8e8fa09794833f31494a6181 +75739a85818d9fa2a0a6ae8db0664b465636242c352f353e373e3f414240 +3b3934302e2f3031313030322f282f3327376847492321a099a0a1acac9f +3d282e456c77768996c894787c90a9a8979c909879a7c5644a413f3e383b +3d404242413e3b39383a3c3f414140383636322c262220256d3639332416 +6d8c97899d9f8a441b2b4a7783706789b7766c71848f8683897b887f8851 +463b47454644403c3635353838373636363737483e35353d403b311d154a +592e33141a427e82717f7589751f184c6469645b80867c73787f80797568 +6d606f7b684f394043433f424641362d63372f4a42384a5c574140403d48 +3e371420355524331b1427636a71707e816f421d19355d68557096827a79 +72766661726761796a4f4443373b423a3535373934373831333936363737 +35343436372c3d2f1330641d1b1b1a1e35575c57584a605b38201a366366 +6b7e75726a6b5e5b5a605d56576048393939a3a0a4a39c90683259663721 +11110b122128495e4f4955574541465148373543514c3e35455d60533840 +4e63674c383f56636848344151615e4536455e604a35466699b8d3e16017 +1c1815130f0d0d0f13141615120f0b0b040d10151b1d2c494d4f52525761 +6a707a6d737687a2acb9bc968b81716e676d6a4e1e3119191f0c12121312 +13121212141315151212130f00000a151c1e1f201703001f180a21081280 +af7b7b849091a593846b566c867c99c5b6babfc4ad9f999295915512171a +15101114151212131f21201e1a1815120e0d100e11111011150c0c192627 +2122252d0f23b499929c8c99baa87b433c5f6f7690a1daa6a1bdad988e8b +9792740f1d0a001d15091a060a0e121514120f0e110f0e0f131617171212 +1516171513120e170916290f1081727b7a7e91a88c6f4f546586979cb5d5 +ada29a9c938377746f75292115180f22181c1c1b16100d0e0f1011101110 +10101c1511121a1d1a17090c0c091824021f3e826268676d88b0be745e66 +8ca191aedabba09a9483746f718e6027180c191814141516181a1b1a1425 +2319271d1a1d3333211f19111b191d1d2516212033110f2356555f5e626b +859e90674f58728b91caa9999c857f696052524826111225100d0a121614 +1919100a10110b0e130d110f1010101011141a1b12140905111e1917182b +44484349444760898f66546d7e98baaba59ba2805b49594c4222281c1612 +0f767375726d6444184c6642342a2e282722224055443e494b39353b463f +2e2f3d4b46382f3f575a4d323a485d61463239515e63432f3c4b5b553c2d +3c53553f2a3a5c91b5d6e86d2831302f2d2c2a2a2827262625201b151008 +0d0e1115142340454a4d4f555b5c57543c3734435b647a8b6f6f6d6a6f6c +7773592b3f2b313b2a31323130302f2f2f2e3032323131343735393b3c3a +3632322b1712352b1a2d0d0a78af848d969b91957150290a1931294f847b +8999aa9e9a9c9ca2a06320252b2d2a292c2a272728343638373636343432 +343435353534343329242e38352c2722250c23b89f99a28d91a98c551304 +1d24243c4e8c606a969895959aa59f7c192b1e17403e394a363635373839 +393837393736373a3d3e3e3534312e2b2723201c22111a2d12178e828c89 +858c976f430f07163340455e8464656e7e8681808178813a38353c334638 +3a3a39373637383536373839383838443b3434393a36311d1d160f192507 +2850977a7b7474849a8c32171c3b4d3953816858616b6866696d8d68352e +293a3a36363637393c3d3c3546443a483e3b3e545442403a323c36302b2a +171c192e0f10285f5e6764635e5f6c5e3216162637366e544e635d655e60 +58584e2f1e28433538373e3e353535363438393336393337353333333334 +3633302522130a101c1614152a464c49504743516e642d0e1b263c5f5252 +4e594b4d4a584b442834303335374d494b47433d22003b5a3a30262a2322 +2424435848424d4f3d393f4a4231313f4f4a3c33435b5e51363e4c61654a +363d5562674733404f5f5a413241595b453246679ec0dff0752f3632302c +2826262528262625211b1613090f0f121515244142444746494f5150513f +3f40526d7a8f9e817d7871747079785f3348353b4632333131302e2d2d2d +2b2c2e2d2b2b2d2f2f33383b3c3836342c160f3229192b101585b98b9198 +9f99a0826644283752476a9c919ca8b5a5a0a19ea8a56c293033312b2b2e +2d2a2a2b393b3c3b39383735302f3030313130303127242f3a38302d2b30 +172fc4ada9b29fa6bca26c2b1d383b3b566aa67a81a9a79e9fa1aea88925 +38292046423b4c38393a3d3e3f3e3c3b3b3738393f424343393635302c27 +23211f26131d30171f97919e9c98a0a981542019294553566f9575747b8a +908c898a87914a4642483f52454544413e3736363637383839383838443c +36363c3e3a321b17150f1d290d2d549a7e817c7e92a7983e25294a5c4965 +957c6c747b7773757b9b7540393143433f3f3f3e3e3e3f3e3a4d4b414f45 +42455b5b49474139433a342c2d1b22203414152e6667727275706e77693c +1f2033464883696272686e666a64665e3e2e364e3e3e3c41403a39393733 +383933363a34383635353535363837332925150e15211d1b1e3252575558 +4c4456736d361929364b706464606a5d5e5c6a5d533640393939399f9da4 +a49e926b365c67362012130c142027495e4f49565a453d42514c3a34414f +5244303958675f453e425f725c3e394659734e344043586c50363a586a5b +413c407da0c9e2bf381a1714120f0f0f1115151714130e0c0b15110b0e16 +162f56505259615f59606f77788e9498a19da49482827f7572616a75432a +0b2c1608141012121212121414141515151211130f080911191e1c1c1b11 +120f0d0d0c1a23067d9a8992788d8991a3b6c1bca9a3aab5e4cac0b0ad9d +a09b949691472e1b21131410101412111c18191916141514140f10111212 +121414121820212434382c3732101aa0998991929b9cabb5ae9e70767b8f +9ff2cdb5b19e8d9291878f722b2b1e1e0b17050b0c0c1113161513110f11 +0f0b0a0c0e0f1013141416171514130513201b001a0f81757488788392aa +afb28c7071747eabdfaeada59a8d81756a636d22141516151314181b1a16 +120f100f1214131413121112101113161715141404172118111309338253 +78676c618da19cb799767484c8f0c6a39b947c6e6f795b7043261c171c13 +10121415161f291e0b281e191420141b251f24201a282a15131a1a19201e +240d22514d60656766758e929295847a8c9ee0b69da3847765644e606042 +34271011190b07111317100f0a11151013160d191514141312111414181c +021c1a1915151415284147444d44474e617c8d8f8c8badd1b29e8c93735d +4b5f4e5d523b1e1a1411727073736f68481e516741342c30292922214055 +443e4a4e3931374643312e3b494c3e2a335261593f383c596c5638334154 +6e492f3b3d5263472d314d5f50362f33739ac7e6c8452b2c2c2c2c2c2c2b +292726241e1914101913090d1010264c41434e5a5d575a6160596567686e +6a7872677073727569727c4c34194031263532323230302f2e2e2e2f3232 +313234373b3d3d3c372f2b2a20242321201a262700719890a18a9c928e93 +9796886f646e7db39f9b949c939fa09ea4a0563f29322b2e2a282c272631 +2d3133323235363631333435353534322f303533323f4131342c0d1aa49f +8f9793989098998c76403e3f5063ba9b8d96918c9a9d939878323932392e +40353b3c383838393a3a3a3b3b373332333536353633302e2a272321121e +2820051f188e858597808189989083553534353f6ca57983898a8a88837b +6f7a342b33383935343637383738393a353537393a3b3a393a3834353534 +312e2a14232a1c1418124295688b75766582817087653c364185b08b7276 +796e686d775a764f3837353e3837373a38383e483f2c493f3a3541353c46 +4045413b49472a21221e171b1923102a5a57686b685f5f7072716d56444f +5b9d77667a6867626654666649403a2c364136333634332d3534393d383b +3c333f3b37373635343630302f1427221d1414131428444b4b544b484750 +5e63594e47668c6f61535e4e524d5e4b5a54432f33353749464848454028 +043f5b3b32292c24242123435848424e523d353b4a4634303d4d50422e37 +56655d433c405d705a3c374558724d333f4156684c32365365563e393d7e +a4d2efd14d3231302d2a2828282a292924201b16131a120a0b1010274b3e +3e4850504a4c585a57696e747d7b8983767c7d797a6c7582533d22493a30 +3c343131302e2d2d2d2b2c2e2d2b2b2d2f36393c3e3b35302f2326221f1e +1a242a077da396a68c9f9797a0a7aa9f88818a98c9b3aca2a69ba4a4a0a7 +a55d47343a2f2f2b2a2e2a29343033343332343735302f3031313131302d +303635354346373d361826b0ad9da7a7aba6aeb0a4905a57586b7dd3b4a5 +a9a29aa7a9a1a78842463d423444373d3e3b3d3e3f403f3e3c3a37353438 +3a3b3b3a3834322e29262418222b2308231f979497aa95969ca89f956847 +4646507db48991979595928c857d8a42393e444541414142403e3b383836 +37393a3b3b3a393a3836373838352f271121291f191c1747996d917e8071 +908e7d93724a455296c19d8587887b747a8468825b42403f47403e3d3d3c +3a404b44335046413c483c434d474c4842504b2d2224211c211f28152d61 +6073797a6f6c7a7d7a7661515e6daf8c798a76726b72607476595049383f +493c363c3937313633393d383b3d34403c393938373638333435182b2520 +191a191a304d56555e514d4e58666d665d56769e8071646e5f625c6e5c6b +6350393a3a3aa69ba9a49c93633769573a1d0f0f11141d17465b5b3c5259 +513e3a4f584a3834435552372d47657160463a516e6d503539555e6a4d25 +3e4e5f65423a43536b583b3f5982b4e4d7981c150d1f060f0b0f1b1e1f19 +120a090b01160e0f11163d455b626a706f67616270727d8080888d858883 +7f78745d776a78491f280b22071212100d111618161214151415120f1110 +070e171d21231e181f0b1d0913171b1e117e9795847e8f8c918ea6a2afc5 +bbc6c7c8c19ab0a7a6a1999893822d202413111a0f0b19190e1211121212 +11110f101313131313131214141e23383a37463b414e1e18a99c978a9290 +959ca8aebdc5c6bbcccabab5a8a59c8d938a9384763227161d17100f090e +0e1010111010100f0e0e0f0e0e0d0e0e101618181715110d0f170f131c0b +04787c70737d8087959cacbcbcafadbcc5bfb39b8d988c6e6f6b6b63311b +12190e1317171b1c17100e1013141512101011130e1115151b1d170c0c1a +130c1a1b0b071f776761796c7074847aa2b0b3c4b8b3c0a9957d81826e73 +6d756a4327251518110b0b14181a21281e1d1e221f19191c1f171822231c +1d29181511192721181b0e1541635f6c595b647775888b80a0a8acb99e89 +7b6a63545d4e635e333b1517150e09070a1117190b0d12110d0b0e111313 +17191a18141213170f0d1616161e1e121a1e3850464f51414a5c61687d93 +9cc3cfaf866a636959554c5a535a3a251f1413796e78736d694221605946 +31292c2e291f113d525031464d45322f444f41322e3d4f4c3127415f6b5a +40344b68674a2f3450596548203848565c39313848604b2b2f4d7ab1e4db +a22a282239232c2a292f302e281d15111005180c0e0b1135374349566369 +655f5c63606566636a726b7273737373617c6f7d4e28351f3d293735322f +313434302c2e2f3132312f3238353c3d3a35322b232d1a2d192121231d04 +6e8f968f8da19b9a8e9c9094a698a0a1a5a27f9c9aa1a29ea29e903c2f32 +262a362b253331262a292a2c2f2f313130312f2f2f2f2f2e2e2c31354545 +3e4a3e3e481b18aba09a8d938d8d8f9698a1a7a49aa9a79a999298978e98 +919a897735332a383a393f393e3a3735343537393b383837363635333333 +3535312c29231c1c22191b25130d82887d7e8481838a8a919b9a8a86959e +9d94848196927c837f776c4333303b32353737393a3836383a3637383836 +36393b363938373a3c3428252d2118222013112d86797286767874786688 +908f9b8d8899887a6c768072776b736e4d383c333b3a36373d3e3d40473f +3e3f43403a3a3d40383943443d3e4630271c1e261f161c131f4c6e67725b +595c6d697b77688083838e7768645d5f5661526761394427323736343331 +32343631373a393533343739393a3c3d3b37343030272024201b221f1119 +1f3b544a56584447504b4957676c93a084614b495755574a564f583e3236 +31394f444d48434323094f4e422f262829241e13405554354a5149363348 +52443430415350352b45636f5e44384f6c6b4e3338545d694c243c4c5b61 +3e363e4e665235395785bceee6ac332e273a212825263032312b1f171313 +06170d0c0b0e333641444f5a5b5652505b5c656968727b767f807d7a7864 +7f738154313e2846323d37332e3034352f2b2d2c2d2e2c2a2b30323c3e3e +3c393129301d2d19212225220e799a9b9390a39e9f96a79ea5b8aeb7b8bb +b48ea7a3a5a4a1a4a09343363b2d2e372c263433282c292a2b2d2d2e302f +3130303030302f2f2e35394b4b46534547522422b7aca99ca5a0a2a3acad +b8bfbcafc1bfb1b0a7acaba0aba3ac9c8b48413541403d413b403d3c3b3a +3b3c3d3c3736373638373939393a39352f2a251f22261b1d2415128b968e +929795949898a2aeab9c98a7b0ada4948da19e878c88857b4f3f3b453e41 +424243423f39373938393a393737393b36393a393d3f382b222b21182524 +161330897d798f8083808271959f9dab9e99ab998b7c868d7e8378807957 +42443b41403c3a3f413f424a4445464a47414144473f404a4b44454a3227 +1e222b24191e1621507472806a676976738582758f9495a18c7b766e6d62 +6c5e73704953353d413e3a363637383a32363a39353335383a3a3c3e3f3d +393634342b2427221e2523161e24425d535e604d505a585866787ca3b295 +725a5665636458655e664a3b3c353aa49da7a1988b59306b56351a0e0f0f +111e18445f60404f5957453d4c58503d3242565d4a373d55697456393c59 +6c634e3041546858363a45565b523535525f5f3e394d7298c5dacc550c20 +0a0c120d0b111517120c08070b1a000f0e181b2d615d6c7574727377786d +6d7679757d8179776b736b736b786e736a371729110b0710100f0e0e1014 +191f1c1816151412120e131b202225221b021e181a2713201f136ca48284 +878b7f96939e9c9b9d9aa6acaab6b1b49f939ea599a0a17a0a252c0d110f +0a101411131110121110101011151616151515151717192236423f3e3938 +42131a968fa2a2a69993959da2a9aaa5a1aba09ca794819a8b8c879f9d7c +262423141d1a140710101211110f0f100f0f0f100f0f0f0f0f1413151513 +0e0b0b0f131214172002598377797f7f848d8c9aa6aaa3a3a8aca98c968e +907f7f7e687d685d171810210e12131414110f0f13141616141010111311 +131416191d170e000a12100d151d1a1971665f77707470736f81837e8994 +a08a7f7f777974677a7e7b786625122b0c120c0c1013141e261b1b1c1c1c +1c1a191a17181d1e1b1c2219130e131a1c1f2621114e5258586b61636258 +636f73808680826f6d6f6d6a5055615a4b4d4117221c100f110e1117110c +1014130f0d1013151517171715110f1116110c1418171a2111051b3a4e50 +434f525054535b6351646a635e646157514d57615e5e564a38311e13776e +76726b633a1c6459442e282c2c2620123b565535434d4b3932414f47372c +3c50574431374f636e50333653665d482b3c4f635331343f4d52492c2a47 +54522f2a406892c3dcd25f1a3322262f2a25262726211a1311111e000e0a +13132552404b5a636a71757666646869676e756e6a5f6c69736c796f746b +3c213d2e302e383733302d2e30333936353534343536363b3d3935322c26 +0f2d2728311b241a025b988089929b8fa49ea19b93918c9495919f9fa494 +8e9ea99fa8ab8517323d29312d282c2e2b2b292a2c2e2e30302f2f2e2e2f +2f2f2f2f2c2c31434b46423c373f1019968fa2a1a3958c8c909397999692 +9c918f9b8c7e998c8f8aa09b77242d372f40434437403c3936343436393b +3939383737373434373432312c26201f1e211d1e20290a628b7e7e848082 +87848c9597918e969a98808e8c978c92927a856e6b2d3635473437353535 +3435383b373838373636393b393b3a393b3c342a1720241e181f2522237b +716a81797d77736c767369717988757177757b7a6f807c78786d32264831 +3d3c3c3d3c3a3d453c3c3d3d3d3d3b3a3b38393e3f3c3d4135291e1d1e1d +2027271b595d5f5a6a6065665b6169697274696b5c5e666a6d5657645a4a +4f48253a3d393c3e37373833343a3c3b373536393b3b3a3a3a3834313032 +2a242626211f2512051a3b4f534652524d4943444632434b484754574f4e +4d555e5856504a41443a364d444b48423f1b0354503f2c252727211f143e +59593947514f3d3645524a392e40545b48353b53677254373a576a614c2f +4053675735384352574e31304d5a59363149719cd0e9de69233a26272b26 +22272b2b241d1512111f000c071010224f3c4653595d6268695e5d656967 +7179747369736e756e7b717870422a463638353836332f2f2e3132383533 +302f2f2f32363d3f3e3c3b352c15302a29331d27200c65a2858d949b8fa5 +a0a8a39e9d9ba4a7a4afabae9a929eaa9faaad8b1f3a442c302d282d2f2c +2d29292b2c2c2d2d2d30303030303030312f303649524e4b433d461721a0 +99aeafb4a69e9fa4a6adaca9a5b1a6a3afa191aba0a29db4b08d393c4238 +46474639423f3e3c3a3a3b3d3c3837383739393a3a3d3b38353028232023 +241f1d1f280d69988e92979290918f9da7aaa19fa6aaa88e9b99a195999b +84907a7638403d503d403f3e3e3a383a3b393a3a393737393b393b3b3b3d +3f382d171e241f1a212825257d75708a8286817d75848078818a98848086 +8288867c8c878182773b2f4e3743403e403e3b4048414344444444424142 +3f40454643444636271e1f21212229271c5b616766786e716f646c757481 +847b7d6f71777b7c62636d66585e583246463f41413b3a3d3534393c3b37 +35373a3c3c3c3c3c3a363333362f282a2722222614071f3f54584d5b5e58 +5750545842545b575761625a5757606964655e564a4a3e38a49ca6a09987 +522f705431170e0f10101c153c5f644349545d4d3e43525645334052635e +433345637e68432f42657065332d4760634e35384c54653c2d4a4e64513b +3c5978a3d2eaa02e130d140c120e0e10110e0805060a040811200980518a +909590929f9f7e57696a70716c71746d7985c3bcb5aba7b1beb3b0740f19 +15080e1215130e0d11151e1c17141414121112171d1e2123201a1325101a +2915104d3a53c69ca496918f988e889ba6a1a6a9aeaaa49ea1ccbeab9eb3 +9bb2a99e350b100b0e0b060c120f0f10100f0f1010121517171617171818 +1c161d2d403b28313224430e96a1a49ca09a9ca095979ea09e969d93939b +93958992a18d909a976e1b2f1a0f040b070b131311110e0e100f10101010 +100f1010161110151209060b120b1420102c0049867a7c807e7f817b7d83 +8a8e8e8d8d8d7d8c7b876a766d5d6c7374241c160c040f1111100d0e1114 +1717171511101012131415161919150e11080f17181d1f16086e7a71796d +6e67637074838b7e7e7e7b6f6f6b747163757b78708a61222e05130d0b0c +0d0f161e191c1b171a211e16161a1a18181c1c1a190e101312192527260c +3062614f5b4f505560616c71646a6c6963685c5b64494c59525161422c1e +1a090d0f060910030f111514110f121416141516171613111316110c1118 +1b17191c3015255441394a4e404542496b645f5c514c4f4a495560565641 +5957573d131217756d75716c5f351d6a59402d282c2b231e0f335659383d +4851413338494d3f2d3a4c5d583d2d3f5d78623d293c5f6a5f2f29435c5f +4a2f32434b5c33223f4358422c2f4d709fd1eda83b24202c262c28232323 +1d161010100808101c017647786f70737e93997c5565636767646d736b70 +7cbdb8b4aaa6adbab1b17d22363c333a3e3f3a302c2d3138363332323435 +333538383532312d292537222833180f43263fb693a29a999ba69c92a3ab +a2a5a3a098948e94c1b5a79db39fb7b0a73f1c2e2f302d252a2e29292a2a +2c2d2e2e2f2d2c2c2e2f2f303031292f3c4b4431363322410c939ea1969a +9494988a8c93979a939a92929d95978b93a08a8b928e69254335322d3b37 +3b3f3b37343436393b3a3a38383837353539323134302522232419202a19 +35054e887c7b7f7c7c7f78777c8387878787897b8c7f9077857e6a6c737e +38393b372f383836323234393a393939383736383a3b3c3b393b3b342c2b +2024292628271b0c727d747e71726e6c77747d7f707072756f73747d7b6b +7978736d8d6a33492a40403e3e3a37373d3a3f3e3a3d444139393d3d3b3b +3f3f3b392b26231c1e292b2c153a6c664f584d595f69686e6f606464625f +655e616b4f4c564c4e5f4638323b323a3f33353829373b3d3c3937383a3c +3a38393a39363434352e25262a27201f1e301525544138494b383a343756 +4f4a4c45464d4e505c61544f374d4d5441222b3a4b434a47433b17055c52 +3d2b2527261f1d1136595d3c414c5545373c4c50412f3e50615c41314361 +7c66412d40636e63302a445d604b3134464e5f362643475c473138577bad +dffcb5442c262e232925262727201912111009080e19007445746a6a6b73 +878b6f485c5b6265626c716c7581bfb9b2a8a2acbbb4b684293e43393b3d +3e39322e30323937343030313132373d3f3d3a3a352e29392429351d144b +3148c098a79d9b9ba69c94a6afa7adadafa8a1999bc5b6a69bb19ebab6ae +4823302f312e272c2f2a2a2b292a2b2c2c2d2f2f2f3031313232342d3341 +514b383c372746119aa5aaa0a6a0a3a79a9ca4a8a9a4aba2a2aca4a69aa5 +b29d9fa7a37d314c3c362f3b373b403d3a3837383b3a383637383a393b3b +3f39363732262325281c20291430055294898d8f8a87847f858c93979795 +959788988a997f8c8572767d873f3f413d353e3f3e3b38373b3d3b3b3b3a +3837383a3b3c3c3b3d3d372e2c202529272a291e0f758279847a7b76737f +80898d7f7f80817b7e7d86847684817a7694733b50304543413f3d393c42 +41454440434a473f3f43434141454540382924231d212a2a2a14396d6a57 +6358626872727a7a6e7273726e766d717b5b545d56596c52443d42363d41 +36363a2c373a3d3c3937393b3d3b3a3b3c3b3836393a3229292a271f1d1d +30152554413d515645484347675e59595152585758626659574059585f4a +272f3ca19ca5a09c844f3573532d161010100f1813325b6447404c60533f +394859503c3a445b6954373d5972745d3936546b6b4a2b3a4f6462383342 +5169543b39415f6a493341638db9d6d983001d1b0216151213120d080607 +0c1c200b272fe1817a908f8482918e591a26252a2a23282a232a45adacad +b4a9beccacffa202260c0700050f1412101111171b1b1814141211151a1d +1c1e1f1c1713000a0b1f251ccdf085fff8fff5f3f9e8b26b6c756a777476 +736d7387fafff0fff8ffe9f0fb46321b0a0f10050d14070f0f0f100f0f11 +1114171716171718181e12171d2b2510242714c833d0f2e1d8dde4ebe1a2 +8c8a918c7b8489807582b4d9d3dcd5dce2d1ba4b171d1918160d0b141412 +100d0e0f0f0f0f0f0f0f0e0f0f120d0e141207020b11111519136e3343ad +a3a3a6a3a2a093807e8289877e7e83818381c7bcc1b9c6bfbfbc8c011c10 +1a090f141211121311171a181613101012131313131514120d1109010b16 +1526500b84b4b5b6aeb6b9b4a36b6e89848c887f6b656c9ac0babfbfd7c7 +ccb53b1622100a060a1116191a1a1f1c151b272416161f1f171720201712 +0b1015141e271f3d4114b4b4b8b0bfa9a9a3725c5f587763656b6d596ba3 +a7aca7a49fa09fa025240d0f11060c16080d101313110f11131211131518 +19191816130e0807141b161130630a65fdc5f9e0dfdaecb8655c56585f5e +5c544b5a81cbc8c6b9cbc7b692281c1c726d74716f5e3125705a3d2c2a2d +2b221a0d2952593c34405447342e3f504a36343e55634e3137536c6e5733 +304e65654627364b605e322d3948604b302e36535b3a26355987b7d8dc8b +0c2e2e1a2f2e2726251f171111122020072225d676676f6d686e85885516 +1f1c21211e252b22243da5a7a8ada0b5c1a3fea91545353731373d3e3832 +2e2d30353734323434333437363331322f2c2b171f1d292817c2df72f8ec +fbf1f3fdeebb75767d6f7b736c6660667beef4e6fdf3ffe9f4ff4d413a32 +3534272c32232929292a2c2d2e2e2c2c2c2e2f313232382a2c303d341d2d +2b14c62fcaecd7ced2dae1d79a84848e8c7d888d877c86b8d9d1d6cdd1d6 +c4b4532b383c41463d3b403c38333336383b393937373736343437303137 +34292427231f21241d753543aa9d9b9e9b9d9c917e7c8087857e7e838486 +84ccc1c9c1c9b8bac19e1f443e4c393c3d393637393739393a383636383a +3b3b39393836312c2d23192028212f510980afb0b3adb7bebdac6e6b7e78 +81827f726e77a3c7bebebad1c2cbb8482f4840404042413f3a383b423f38 +3e4a47393942423a3a43433a392e2d2b22282d25464a1dbab5b6a9bab0b4 +ac765f5f567563656d715d71a6a9a79e9b989a9fa83743363f44383c4434 +373a3b3b39373739383736383b3c3c3b3b362f2621282b211735640964fa +c1f5d9d5cee0aa554c484c555b5c5954688cccc2bbacbbbaaf9236344048 +434947463a150e61523a2a2728261e190f2c555d403844584b383242534c +383842596752353b5770725b37345269694728374c615f342f3c4b634e34 +323a575e3d2d3f6495c5e7eb981835321a2c2b2a2c29231a131312211e06 +1f23d4726168645d63777a490a15151a1c1a20261e243ba3a3a4a79bb0bf +a4ffaf1b4a3b3b30343d3d3b34323034363a3532313332373d3d3b383935 +312d19201f2b2d1dcae778fef0fff2f3fceeba74757f727e7877706a6d7f +eef4e4faf0fde9f7ff55483d323634292e34242a2a2a292a2b2c2c2e2f2f +3031323333392c2f34413923322e14c730cef0dfd6dae3eae2a591909998 +899398918691c3e5dee4dce1e4d5c25e343f4043463d3b413e3b3736383a +3a3735363637383a3a3d36353b362a232827222120156e3245b3a9aaada6 +a39d94898a8e95928a888d8d8f8bd2c5ccc4cec0c1c7a221443e4d3b4143 +403c3d3c3a3b3c3c3a3837383a3b3b3a3a3a38342f30241b2128212e530a +81b3b4bab3bcc2c4b377768c868f8e897a757baacfc7c6c0d5c8d1c15034 +4b42424143454341404248453e44504d3f3f4848404049493e382a2b2922 +272b2341451ab8b7bbb1c1b6bab37f686961806f717a7d697db5b5ada1a0 +a0a4abb341483a4145393e443536393b3b3937383a3938383a3d3e3e3f41 +3c342822272a1d132f5f0560f5bef4e0dedaecb7625955586064645f596b +8ecec4c1b3c5c3b79a393640a29fa39d9c7c463874522b14121110111717 +2b56644f3e47615a463641595c4f36374e6d6a4a3a416079775135415c6a +6337323b5a6a483f34485568522d3d536d5a3d324a759fbbe6c93216180e +15141010110d0a090e1403072a2726483f605c676255575d421b25242929 +2126281f2c26705b5e6a4b554f5bfa91461e1111000000040e1212121321 +292218151415181c1f1c1b1d191408000e0d1d2726deff328d8190838375 +7f4d0f1e332c3937493939412d766c7e6272545f67ff6439220e13150f15 +1a071010100f101013141414151415151515170d0b0e130e0b1d2f30fa5a +c9e0d0d9cbd2d4c56f534e564e424a4e4a3a4581f9e5e7e8e8f1f3ffd81e +1f1b21100912121311100d0d0e0d0d0e0e0d0d0d0c0c0f0c0c110d020005 +051e190c22b06d35fffffffffffffae94b423e423e33333b2b3a66e7f9f6 +e0e6e5cfe9f504160900020d151615171411191a18161311111312101010 +120f0d0d0110060b1b1550ca289be0ededdbcdc3d8ac5642504342382d26 +263683d2dedbcfdbd6cce17c1d0c06010108151c1e1a191d1b141a262417 +15202016162021140d0b0c0c1422271f90bb35cec3cec5dddaddc6764f46 +3754493b312d2663d0fee3efefe4e1efe129200b060500050d050a0e1010 +0f0e0f10100f101215181815170b0a07000a19172829ca7628b5d2cfd5cf +ddfbc0583c3b37302b2f342d3855e0f1f0f5edfafafa672c087370747070 +582b2770593b2c2c2e2b241911224d5944323b554e3b2b38505649303148 +676444343b5a73714b2f3b56645f332e37566642392b3f4c5f472232475e +4b3027406d9bbae7cf3c2429222b2d282826201917181a0406241f1b3a31 +4d414b4c454e563c1318151a1a161d231a231b6550545d3d443d4df49659 +403d44363432343738332f2f3a423e3635363435373835343635322a1f2c +252b2a21d3f9227d717d73776b7b4c0f20352c39333f2e2c351f675d6f55 +674c5965fe6446433a3c3d32373723292a28292a2d2d2e2e2d2e30313333 +34362b292a2c26202c3530f955c0d4c1cabbc3c8ba664c4951493f494f4e +3f4982f7dfdcdbdbe2e4fce1323a3e4a4039423e3b373333353739373737 +353535333336313237352a2625182c25172cb56c2ffbf9f5f5f3f7f2e446 +3c3b3f3b32323a293861e3f3f0d7dcd4c2e8ff22403b35383f423f3c3c39 +3438393a383637393b3a38363635322f2c202e22232f2356ca1f8fd4e1e2 +d5c8c3dbaf51364031322e2c2b2e3f87d2d8d0c4d1cdc7e0853432383b3e +44484740383a403e373d49473a384343393943443a3a352f29283132289a +c53cd0c2c5b9d2dae1c7744a413251483b312d2662cdf7d9e1e0d8d7ece8 +3c3f34383b363b4035363838383736353636353335383b3b3b3e3230291c +232c24322fcb7624b1cbc8cbc3ceecb1492d2e2c2a262f3836425edfe9e4 +e5dae9eff972442c4744484649340e1364523a2c29292620181325505d48 +363f59523f2f3b53584b34354c6b6848383f5e77754f333f5a6860342f38 +5767443b2e424f624b26364b614e372f4b7cacccf9dd482d3023292a2a2c +2b241c181a1a0604241d19392e47383f3e363f462e08100e131510181d14 +1e17614a4b54343d394cf69a5d424047353133343b3b3833333e47413834 +37363b403f3c3b3b3834291e2a252c2f28dbfd2580748176796c7a4a0d1d +322a3934473433371f645a6a4f63495968ff6c4c483b3e3d36393b262d2b +2a2a292b2c2d2f31323334353536382d2b2d302a252f352ef552c1d6c4cd +bec8ccc06b534f5750464f5451424c86fae3e2e2e2e7ebffea3b41424c40 +39423f3d3a373637393833313334353738383b37353a352922241c2f2311 +23ae682ffffffffffaf8efe14d48464a443a38402e3d65e4f3f0d8dddac9 +edff203e38323840454341423f383b3c3c3a3838393b3a3837373734312f +233023232e2356ca2091d6e3e8d9ccc5e0b458404b3d3d37312e303e8ad4 +dcd4c8d2d0cde88c3a35393c3f454c4d49424146443d434f4d403e49493f +3f494a3d37312b25262e2e2392bd35cbc0c6bdd8dce4cb79514839585043 +39352e6ad8ffdae1e3dcdff5f0424436393b353b41353537383837363637 +373635373a3d3d3e4539332b1d20281d2a25c36c1ba6c3c2ccc7d5f3b850 +3435322e2a313935415bdbe6e4e6deeff5fe74442ca2a0a09999743d396f +4b27151311101319202850625a41465d5f523f3e5461613f374467786340 +2c51707f653f364d656a4b363149625a512d3a3e6760333d425460503132 +5586add0dd9b1417200f0d090a0b0a0a0e171f2e1d2f3f46333958505854 +4d545d46252e2d34322c2f3028262369555c6c5b646a3a5453271e43122b +180600050e111113232a21181413101b1f201e1c1d18110f210914312c27 +59b91f706157586150603e20292c1c1d1e27202628206d545f6a51585d53 +514a3523191c1f1c1e1b0d0f1011101112151515131313131211110d0904 +110d0a201d26286a255c5e5059646265681f1c1c20192020161e1f17355f +505c604f515da9c625311d1719180a0e1010100e0d0c0b0d0d0d0c0c0c0b +0b0d0d0b0a07020004051d1d2628764731756b676765665e4b2721202524 +21242c382c1d4f4e585d655d5d68a5383214130610161314181914181a1a +171412141513101011120e0e1003140c172b1e49b924545d49485058614c +361a283b332b2128251d1238676357654e584d7d6a3c16000002050e1517 +1416191712161f1e17141c1d15161e1f14121a11071526282c5c9d215e55 +4a51513a544a22283327342b2a2e362c304d4a55573f414a5c865020160a +04070600010a0e1010101010100f0e10111212100c11020e180a0c1b1d17 +26533a376558464f46535a42272a3a40392d2d2e26273d49534d5a495b5e +6f5b290f7371716c6d50222a6d553a2d2d2e2b261b1a1f47574f353a5153 +4734354b5b5b39313e61725d3a264b6a795f3930475f6647322d455e544b +2431355e5528323848544426284d7faad1e0a321263223232323231f1c1c +21252f1c293538242a473c4544424d563e191b181c1d1920251e19145b47 +4b5a454d52264a573b40704867543e31323534302e3c433d3433322f383a +3b39393c3b39394b30324331244faf13604d3e3f483c5033162124141314 +1c151a1a115b3f4b57424a534a4c47404646484842413a2a2b292928292c +2d2f2e2f313132343535312d28332c293e352f29692052503e455050525a +1313161a0f161a121e20183457464e5040424fa3cf394c404049483a3a38 +363334353537363636353434333234343433312e2d281a2b293132794427 +65564f50525853421c16161b1d1b1e262f2211413c45484d434962b1555f +4b50414848403b3d3c353737393937383a3d3b3836373531303222332a31 +412d4fb51842493538444f5d4a320d14241c161222252214345d50435542 +4c447a715139333d444545423b34383c3a353942413a373f40383941423c +434b3a272e37353666a4265f503f3e41325041171c261c2b24282c342527 +403b45452d313e578b623f3f3d3f43423b34383838383838363635343334 +353533323c2d353b2a26302c212c5538315d503c4136434a2f171a2b342f +27292e282c3f444a3e483548526d65423347454542462e0715604d382d2a +2a24221a1c224a5b53393e55574b38384e5d5d3d35426576613e2a4f6e7d +633d344b636748332e465f564d27343861592c36394854482e335c91bde3 +f1b02a2d34222124272722201d2325311a293437212740313634303b4631 +0d1413181813191f15110d523c414e3a454e254b5a3c42734a67523d3235 +3a3a3535414841383535323e4342403f413d3835472b3043352b57b01361 +4f42434c3d5131151e2111121520191c190e573a44503b47524d504e464a +494b4a45453f2e2f2d2d2a2b2b2d303232333334353535312d28342e2b40 +352a23641c504f3e465150545a1514181c10171a111c1b133054444d503d +3f4ca3d64253444249483a3b3a3937373737363230323134343537393936 +35302d2a261d2c272b29703d25685f5c5a56574d3d201e1f23241f222832 +2311403a41454d464b64af505845493d4749434043423c3c3b3c3b39393b +3d3b3837383733323425362c303f2a4db418424b373b46505e4b33141d2e +261f1724231e0f315c524455424e478177563d343c43454848473f414240 +3b3f4847403d45463e3f47483e404536222a312e2e5d9c1f594c3d404230 +4f421b202d22302b2d31392c2c494045432d32425d916642413e3d414039 +353837383838383737363535363737353542333a3d29232b251820482b25 +5043323e36434b311a1d2e363027282c23283a3e433b46364a5670663f31 +9f9e9c9699733e4367452415120f0f15192826485d624343535f5d493d49 +5c6858433951727656333f56717052373d5361614635384c605837333853 +5d4a3b333f5f5c3c2e3b6594b5d8de56201f100c08070a090b121c251d2d +4b553d37395d55524a4f646f58384c4d53534c4f51484c538e7063645e67 +606480fc563b573851341403030c1214121b1f1715181710191e201c1a17 +12090e2a20253f383c21250f5a5a57626c807f563b2c2b30374a34363d2e +469a6e655c64506c439fb43922272d28271c111011121111121418181413 +1111100e0d0c070c04231817421e3f4028295760525b5a596272272b2a2d +2c3935212d3024416e54596c6b643a607036313f3c48360d0a0d0e100e0d +0b090e0e0d0d0d0c0c0c0a0e0a01030f1215222e253d2b2416356c646367 +6a736c592a2b2e343839373a2b3641686e737a6f71734977422510161f23 +1e100e171b1a181919161513161717131315151113171b15101c251c223d +204865676a6b61686541383c4042393728262b2e51706b6c675f5e52734d +6e921b1e1f160b0911141616151516171919161a1b18191e1f17213b2b14 +24292436193b25485558625f728a5a272f3634332e2b1d2736445f646266 +66755d676a2c3c3f2e283423090c0e111213141414120f0f111314120f09 +0c001c38271b272a2d341e1c3e57646f6e7698784b3e2d3831383733302b +364f6a676d786e63626e32313c706f6d696f512434654e372d2c2c2a281b +221d3f525737374753523e34405662523d334b6c70502d39506b6a4c3137 +4d5d5d423134485a522e2a2f4a523f30293353503124335e8fb3d9e4602d +312222212323211e22272e1e2c424b2f28274c4847434a5f694e27333034 +3430383e373b427c5e504e434a444f74fd685d84708f745039333535322d +3638323037362f36393b3a3b3f3e3c435d4d485542391a1f074a443a424c +60623e271a191e2338282a2f1f3386554c45503d5c3999af4248595a544e +42322d2d2b29292a2c2d30303233333435353631362e4d403f693d4a4128 +254c513f4642444d601920222218242316262c203a6146485a5a562e5d7a +4a4d626679673e363534333435353637373636353434343337362f313d43 +3e373c31483326122756494549515f5f4c17181d24292a2b2c1b242c4f51 +5255494f593f80605349556060544037393c383536383838393c3f3f3b39 +3b383435393c342f383b2b273810334b4d5458555e5b33221f1f211c211d +21282a445b4d4e535150466c5281b54e5e6357453a353438393838393a3c +3c393d3e3b3c414240537058393f3c3341234328484c4a4e4b637b461119 +2020232221131d2731484b4d5151614e5e6d3b5a6b6464726347443c3b3a +3b3c3c3a383535343637353231392c476049383e3b393a1f19374e5b6360 +658766382c1b29222a2c2a2927314b615d5c65594f536a3c47604443413f +492e09215949352d2b2823221a242042565b3b3b4b575642374358645641 +374f707454313d546f6e50353b515e5e433235495c54312d324d5643342a +335354372f4270a3c8ebf26a35332220252727232222292d202a434a2e25 +2544383330364c59421d2e2c31312c32382f3138705042403842404c74ff +6a5e87718e73503b37393b3a363d3f39373a3b343e42444240413d373b56 +4644534440211f044a463e475163663e2818171c22382a2c2e1c2f7f4e45 +3d49395c3a9db6494b5a5d5753453731312f2d2b2c2e3032333434343434 +34342f342c4b3f3e68384239201c464c3b4340414c5e181e202017232110 +1e231530583d3e50504b22567c5151646576643b35353535353534333331 +323235343636373b372f2f3b3f3a3a3d2f40281b092459504f51555e5644 +191c23272c2d2b2b1b22274a4b4d4f46505a3e7b5849404c5a5b54423d42 +45403b3a3b3a3a3a3d3f3f3b3a3c3a36373b413931393928233510324e50 +565a555d5a322524262821231b1d21213e564b4c52505048735887b94f5d +625949414341413f3e3e3f4042423f43444142474842506853323a362c39 +1a381f4047474d4a607845131b2322242422141e2a334e4e4a4c4e625163 +723e5c6c6462716246433c3a3a3b3c3c3b3936363638393734333f324d62 +483436312d2c1108273f4a55575e8062342a19261f272825231e2b425853 +55615850566b3d455e9b9c99969b77454e5f3f22130f0c0b1312281f4058 +664640485a614d3b3e566a704f3038637f6c482d3e5f76633d313f587157 +3e2f3960584934404255603829395b5f4839344c77a5d8e4ac2d1014130e +0c0e0c0d121c25231959455225243950514e516379817c82838a8a83878b +828579926d656968665d525ef4a2794635503518070810181a1216151018 +242217141a1c1a17140e062842744b2e2233421837474c5b5e527b957372 +6f79806a6d6a6176727d975867615e5b5d38e9ff522a3b3f342d1a080f13 +1212111416191916141111100e0d0b0b120a3628265b1d2636321d475347 +625a69829b4647474d555c574c4f44457e745d57524d5e4f8ff09819464c +493732070b0d0e110e0c0b0f0f0f0e0e0d0d0d070f0900061e2a2d42552f +2e302f2d2d6a62666d7889887740464a4b4a473c354c4e59717062716b5d +6287e655426941413c2a120911191916171816151617181c171619191517 +1e493036352129351e224259534d5564838b534f4f54665c5c5b46434c68 +716065535c4e8be25e396246514f36180b131c191616191815171d191b1c +1c1e20211d2e5b4b2b362d1d352d0c2a585567576075a2724a5656595255 +59494d5a59676b6362625551e2ec364455443d4f31050812161617181817 +160e0f13161918140e0b002c56422c3336212721184a6b56656885d0ae72 +644d6e5f655d57595a616f6d5f695e6467b0ed2a38486a6b6a6974562d43 +5f4a352d2c2a2a291a261a374b5937343d51584732354b5f694829315c78 +65412637586f5c362a39526b51382933574f402b35374a552d1e2d4f553d +2d28416ea1d7e7b43a1f26282828282423242c312c1d59414a1b182e484c +4b506076776d6d6a6e6e697278717468815c5355514f484055f5b1956c65 +886f503a35393b3b3033302d35434338333739393a3c3a375b739e6d4630 +384117323c3a4241345d78595d5a646b52595c5566606a8240534c4b494f +2ee3fc5b4967685c533c272b2c2b2a29292b2e313234333334353635353f +37635552853d3339321a3e46364f45546f88373a3c404045443b423a3b74 +664f46443f54478ffaab3265727565603333333534353433383838363635 +35353038352b344c5b5557633b3937322822584c4b5462767a692d313639 +38352d23393940544f404c483f4e81ef706b9e7d7e77614232363c3a3536 +373838393d40423d3c3f3c3839406a5155513637391a1630433a39435678 +7d41373234463f444c3b3a425759434941504282e0634c8376898c714d3a +393e3c39393c3b383a403c3e3f3f41434445608d784f53432e4237112d55 +4c58444d6693603741414540454b3b3f48454e524e4f4e4545dcf044607b +7473876b3f3e403e3e3f40403d3c343536393c3b3736382e597f664a4c49 +2e2e231644634c595a74be9b5f513c5d4e534e484c4d546563555a4c5257 +a6eb344c683f403e404d35132f5342332c2a2825261c291e3c52603c3841 +545b4b373a5165704f3038637f6c482d3e5f76633d313d566d553a2d355c +52452e3b3b505933222d4f56433734517fb2e7f6bf42262a2b2929292421 +242b2f291c5740481a182a3b393a3e51676d6668666d6d686f746a6c6079 +52474a4949454056f7b4986f6789704f3b383d4140383937333b48483d38 +3d413e3e3e3934566d9a6c46333e46132c3a3a4545365f7a5a5c59636a52 +5a5c55665e667d3c4c4747474e2fe7ff604c686a5c563e2a2f302f2c2b2c +2c31333333323232323233333c34605251843a2a2e2a11373e2f49404f69 +843234383a3b3f3e33393031685b443c3934483a87fcb237687374635e32 +333434363434323434343535353537323a362a324a57545c663b35302922 +1e584f5058647271602930353736332a1f35343b4c48374342415081ec6b +63967577735e44363c424138393a3a3a3b3e40433e3d403e3a3b42715858 +54373738191630453d3a4355767a3f3734394b41444937333950553f4641 +504485e5695288788a8d755344464a423d3d403f3c3e4440424343454748 +475d8a754d4f40283b2f0a244e47534049618e5c334040443e454a3a3e48 +4651554b4b4d4547e0f347637c7473866c403e403e3e3f40403e3d353638 +3b3e3d39383d345e81664849452726180a3858404d4f6ab494584b355647 +4f494344454c5c594b53485057a7ec354b67a29ea3918965314c603e1f14 +1109060d0f132431476c6b423d4e686a4b374b637b71492b47747a682b35 +446c855c31394d5f66543a354a60614833364f5e523d363e535c462c3e63 +8bc0d4d57d111315130d0e0f090c131412182228271c161531554b38634a +5f68616172806e7b5c7c766b736b57596a4b46419595dce42a0e2a1e140d +0e1217181b161213171a17141717171616141211082e6f36196d621a1110 +455e5465706b7f777b7b8582839c8183718a6c866c6c7f4d6c55869dcf8b +4d453d2d1c110f101010101012131516141b171317140f111a1702276992 +9266411d2e032f48575c5764777f94788b8a908093877c6e8a91756b4d53 +59434579f8c5845b5ac859220f0d0c0d1011110f100f0f0d0c0b0c0d0d0e +0e0a0717426eb38562431e1e27154b576462779e7f917e8d7e8f8d828083 +898c7d74775677684c6b81f0ca35445560382222180c0f1515191b191717 +191a1a1917161515151552643f27473c13161a224e63605e63778b7d859c +8c8f8c9187a78388807d78665a5c5791ecd369343b31292524211d181a15 +12141614141614232a20191d211e12514e41351e592818131d42615e5e6d +7473868d8984859a9592778da68d716a6f615c5073e7fbad4e392e343629 +18120f0f0e1115181816180f0c131815100d05000b384a2230867f280c1f +274e786f787f948c8c92828c92a3878e9c828e7d756a6f695b65d7fce967 +306c697266654b2046624a322e2f2b2a2b221c232a37585a333449686844 +2c3951716c4426426f756326303f6780572c3243545b492f2a3f55563d26 +29425145302c344750371d2e5681bad4db872225292b26272822252d2b27 +292e322c2017153052483860475a6057566472606f50706b6068614d4f62 +42403f969ae7f63f2b504a3d3636383a3b3c383435393c3a373939383838 +3635342b508e5231807325130c3e554957625c6f676b6b75727189717361 +7a5c765c5e7141624f8098cd9362635b4b382e292a282828282a2c2d2f2e +38363237373338413f2a5193bbbe88502031042c444e514a57686e836a7a +797f6f82796e617d846861444c5240457bffd3967479eb814c3937343434 +33333337373735343334353536383431416c91c7916c4c26222711434d56 +54688f70826d7d6d7e7c716f727679695e5f3e5d54406884fde2576e8692 +6a54524638383d383b3d3d3b3b3d413e3d3b3a3939393875855d425c491b +17161942555253586c806f7688777a777c75987479716e66564f555290f1 +de7c505e5a54524f4c433e403b383a3c3a3a3c3a4950463f4347463e7d76 +6453386d3823191e3e59534f5f6f7081868079788d8683687e977b5f5a61 +5552476ee6ffbb6155505a5d52443e373534373b3e3e3c3e3532393e3b36 +35322e38646f434c9b8e32101f234870646b71847b7b81717b7f90767d89 +6f7b6e6a6166605360d5fff37745403d473c412a0630543e2c2b2f2c2a2d +262129324163623a394d6a6d4b34455d7a734b2d49767c6a2d37466e875e +333a4b5a634f3730475b5e432f304b584e372d3549543c2438608cc6e0e7 +932c31302b2223241c1f242320232c312f231c172b493f2e5940545d5554 +6472606f5070695e665f4b4d604342429a9eebfa442f534b3f38383b3e3d +413a36373b3e3c393b3b3d3a3a3837362d51905535867a270e0338504554 +5f596f676b6b7572718b7476627b5d775d5e71416351829cd09563635b49 +392c2829282828282a292d2c2b33302c32312f35403e2a5092bdbf874917 +2a00253b474b424f61667b61727177657a706558747c60583b444a373b76 +ffdea07b7ced814b37353331343234313636363433323335353637322f3f +6a93d09d75532923250e414b5553658c6b7b63706374746a686b70726053 +5532504d44718bffe4586c838f67515246393a3d3a3c3e3d3b3b3d403e3d +3b3a3939393a7b8c6549614f1e1b171a4455515156687c6c73877679767b +739571746c696256535c5896f7e48254625e5a5856554e47433c393b3d3b +3b3d3b4a5147404448463f80786655396c371f15193b564f4c5c6b6b7b80 +79737287817e657b947b5f5b6157534a72ebffbe6759525d625647413936 +35383c3f3f3d3f36333a3f3c373735323b67754850a09334132124486e60 +6264777171796973788a6f7683697567645a615b505dd6fff47748a89fa4 +94895f2d4f65422217120d070c0b0e1d2e41626a4e2f475d645a41435c6c +7c6436345871774e373a5c7268492e3c51615940323e515e4f3b35445657 +4d323548574e36384c6894c2e4bd49060b1011110e0e100d0b0a0b121717 +1210121708221f1a915f78771792190d8b186372847c0d281d0a1f182040 +1f3443082418110b090c0f1112130e0a0a0e110f0d0f0f101011100f0f18 +071c0c15535129200c0f1f35372c4358677a48447647636033634f6a6c2a +3223362c168ea8c9e5672d0a111d100c1510101212141416151b07021928 +140b1f0a1a191f10001425e999832e1c2e51555b5156797c776c72887b80 +6464886a8a59575b52473165c4a6e3da6c10562914100e0c0d111314110f +0e0e0d0c0b0c0d0f10110e08091a32445d8c905a33230d396b705b606e7e +77768289917d89778086718c75685d714d545793b4ac741e052a100a1210 +0c111511141616141416181414121110101010281900258aa0571d1b172f +45565a5569686a805e6f90898d6c667c8167415e6554524567abae867f48 +352017191c1e1c19141114161415181c282c21191b1d190b1c0902132d90 +982919081841534c404174696677708d729284775f7c7b64585659573122 +76cbcd6f4113080e100d0b13111012151817162b1d111013131414140a00 +0412021757b364341d0a22494e57506e665f775d7f7c8781766f7b8c675f +61546c493766c7f78f456f6a736867461d49684d332e2f2c2a2b20191d24 +2f4c563f29475e6355342c4762765e302e526b71483134566c6243273144 +544c3325314451422e2837494a40272b3c4b3e26273d5b8dbfe8c759181f +25272727292b2b2625242629251d19191b0a24211c935f78771790170886 +135e6c80770b281e0b241d29492c41521a3937342e2c2f32343536312d2d +3134323032323232302f2e2c352338282e6c6a3c290f102036362b3f525e +713e396b3b57542756445f63242d1e342b178faccdef7b47222b352a242f +282a2a2c2c2e2e2f36241f3847342e432e40414839284048fca28c342130 +5254584c4d70716d5f657f72775b597f5f805152575249366bccb0f1ec83 +2b774f3e3a38363535353333363636353433343537383936303142535a6d +9a9e673e2b133b6c6f575b66746e6c787f87737e697278647f685a4f6344 +545d9dc5c393442e58403a423e3a3d3f393a3c3c3a3a3c3e3a3a38373636 +36364d3e1e42a3b364261e182f43525651656362775463847a7f5d586d75 +5d39556153524970b8bf9d9a6758473f41474947413a373a3c3a3b3e424e +52473f41434134473227344aa9ad39230e1a404f443c437a6e68786f886b +887a6c557071594f51575632277ed6dc845a302731353432393736383b3e +3d3c5143373639393a3d443c2b313b273572c7753e240d21474a5047645c +546c52746e7973665f6b7a59555c4f6849396acfff9e58423e4841422703 +33573f2b282d2e2c2e251f252d3b585f462d4962685c3e3c566d80683a38 +5c757b523b3e60766c4d2f394d5d553c2e3a4d5a4b3731405253472b2c3e +4d41292d426495caf3d366262a262424212222211d1e1e2429282322211c +07211e1b925f787919931a0e8c196470817b0e2a200f27212e4e3247571e +3e3a36302e3134363738332f2f33363432343434343332313039273c2c33 +716f4026080a1a3132273c525f723f3d6f3f5b582b5d4865682831223730 +1b93afd0f07a4422283527242c28272a292c2b2e2c311f1a32422f2a412e +41414a3d2b434afa9d87301d2b4d4f534648696b64595d78697054537a5b +7e4e4f5450463267ceb9fef88b327c523d39363434353635343536363534 +3334353738393630314258677ca7a96f422d1338676b5458647369626c75 +7d6a78666f755e79605144583f5c6ba9cfcb98473058403a423e3a3e3e39 +3b3d3d3b3b3d3f3b3b3938373737395546274aaaba6c2b231c314451534e +626060785365847d7f605870755e375662585a5277c0c6a3a16c5e4e4749 +50524e433b383b3d3b3c3f434f5348404244433a4d382d394eadae39240e +193e4c423942786a63736a846586786a5470725d52555a5b362b81dae189 +5f342c373b39373c3837393c3f3e3d524438373a3a3b3f463d2d36412f3f +7bd07d472c14264c494a3e5b534e664c6e6b7670665f6b7a5853584c6747 +386dd2ffa35eab9fa59789592b5867412013100c080a10101d2d3d586964 +32414e606d523c465e817d4b2f3f627d724030425874683330435a62513b +373f58584b393747565a39333e535b4939365479a9cfe29423101118130a +0f110c0a131216191a191d24101819183daf00385c4fb3454fab43c9404c +7615121a28220e24281c19131219110d0d0f1315151515120e0e11141311 +17161615151514151e12151411191b1419190f11280f0550c77a94894c89 +0b1ca136d071a19d11211d1f1d0c2e272a2a3a24140c1110110e0d0d1111 +1412141209282c160f121311130e020b0c010a0f6c354e2204081e08120e +4b86879e39684c2f437a1e20197b46111e1825032a7046625d2f0d301806 +0f0d0b0d0f1013110f0e0d0d0d0d0c0c0c0d0f110e0a0b1223243a443126 +1d07001e20272c6d7480722761453e742c53637e820b1d311d3020144523 +234405000b01070f0d0f110c0f121313111112141211100f0e0e0e0d1512 +060726383029180e0c0d1912082a7491962d536403395f1287898150180b +1b1a1317241b141c3a260e050c171d1e181411141616171b2028281d1313 +120e1913110e0a001c1e222a1a081223241c0b4f928f7b1c6f35183c4111 +2b8e1b27191820211b1d14001e120c11140d0a0a0f0d0c0e10121212291c +0f0b0d0e100f000908091409000b0e0a17211a15140c2012389d9eaf3653 +520f3d5e1c9f9882182a2d2b1f3b241503071c756b746d673f1a5066492d +2629292624221a1c242c435655293f4e5f68462734547b774529395c776c +3a2a3c526e622c25364d55442e2a324b4b3e2c2a3a494d2e2932474b3928 +274772a6d1eaa23322242d2923292c27252e2b2a2b2926272d1922212045 +b7013d6154b64852ae45cc434f791a1a2431301c363a312e2b2b35333333 +35393b3b3b3b383434373a39373a393938363635343d2f32312c34362c29 +25191b32170a53ca7a9388498605169b33cd70a09e122422272516383235 +3952412e292b2d2b2b272a2b2e2e2f2e2f26474b362f3435343936293435 +2c3534854760311213281017124c86859d35674c2f437a1c20177a451423 +1f3011387f5674704a2b533f323b39373737363534373736363636353535 +36383a373334373f3b505a45392f170e2a2a3032737882712660443c7227 +4e5e7980091c301c32292055373e652c2c3b3339413d3c3d38383a3b3b39 +393a3c3a39383736363636403f2e2c4753473c25191617211b1133799496 +2c52610034590f848880511b10242520283836333f614e3b343b464c4d41 +3c393c3e3e3f43485050453b3b3a3746423e3931213d3c3a3e2a141c2c28 +21165da09a83217035173b3f10288d1a271e1f292c282f270c3a312f363d +38353637353436383a3a3a514437333536383b2f3f3b384131222c2a222b +3227201d1424143a9f9eaf34514d0a385715988e7b162a2d2c23432d2214 +1b33463c4945421e0039543a232025272625241c2129344a5c5a2c405064 +6f5036425f85814f33436681764434465c786c342d3d545c4b3531395252 +453331415054322a34494e3c2e2c507aafddf7af422e2a2e27202627221e +2928292d2e2e31361e23242348ba0743675abf515bb751d54a547e1e1d26 +36331f3a3e36332f2f38353636383c3e3e3e3e3b37373a3d3c3a3e3d3d3c +3b3b3a3942353837333b3d3029251a1c33190e58d1829b9054911120a53a +d676a8a31729262a28183a34373c523f2f272c2b2c2928282c2c2f2d2f2d +244246312c3336363a382e383b323b3a8949623415152a121a134e86869b +36654c2d437a1d221a7f4a19272534143b8663827e53335944333c3a3836 +37373736393938383838373737383a3c3935363d4b4b5e654e3f33170e28 +292f327379816d215c423d732b52627d830a1a2c1831322e6242476c312f +3d343a423f3f403b3c3c3d3d3b3b3c3e3c3b3a393838383a47453634505c +4f422b1d1818231a10327d999e325a68073b63168d8e885622162b2b282f +3f3d38456856413c43505655473e3b3e404041454a5252473d3d3c3b4c48 +443f3827423e3c3f2a141d2b29241a60a39c862474371c4044162f95222f +24252e302e332d123e36333c413e3b39393736383a3c3c3c534639353738 +3a3c30413e3e47392b35352c343a2f2422162311379c9eaf3552510e3c5e +1c9f9682172a2f2e264632281b223bac9ca39986522e686d4b291b1b1915 +1317151e2c3a4b63724c3a3e5d74684a315274826846374b6d7c57362b43 +7077523338495e604c39324e5c5a4231394c584a3935475c57422f437290 +a9d5ca6a161420180c12130f121312121516171d221418130f5aed8b6339 +36dec6c8dc34efa9ac7f0d1d1b11131e22171b1a17200c0f0f0f10121211 +1013100d0d0f111110151413121413131307252a23160c1516111a130a17 +0d2991aa1d25294ade8989e76dcd7d5c300d2930091f2b0e1f40261a282d +1e111114120d0f12151616141316565d23132d2e120d18140a0910161117 +00231511131f122300a099247f54957f4f51cb001784ee7d020d194b1f10 +1524140c21291c18190f0c0b0d0f101211100e0f0e100f0f0d0e0c0e0f11 +12171b18161f2012111813171213271dc36155ad51d63b289e61998765c7 +6814160e20161c2b190d100f160d0d14140e10120a0f101010100f101012 +11100f0f0f0f0d16131008010711121c201d1319111957de639f9971c24a +54d04db87195ce46181c1f2a2c1c0d0a0b1a1005050d15191c1914131519 +181c1e272a281c1411110c03000814140f0f13133133180e1116171381ab +177b6bb3855775ab007be1531a1f1a141a262825270e1013160f0707110c +0c0d0d1011141417110e0d11100e0a06110d050e130d0d171f1912111820 +291b0759d9144a5886dd5676d241c462c59c17172a383f3f172c2a1e7669 +746f64381a5e6a4f342b2f302b2723191a2227364f6243363e5d6f5e3a21 +486e7c6240314567765130253d6a714b282b3c51533f2c25414f4d35242c +3f4c3f2f293b4c47312036688dacdbd4782725322b21272c282b2c282627 +2524272f2127201c67fa956d4340e6ced0e43bf7b2b78a1a2a2a2326333a +303738353f2e313232333535343336333030323434333635343333323232 +2644494233293232292f261d281e369eb4252b2c4de08a8beb71d4846339 +16343d182e3d2033543b3444493a2d2d302e292b2e313232302f33747b43 +334f5035333f3b33313b413835193c2e25273223320daba22b86599c8858 +58d2061e8bf5850c19275d3324293727223c4a4141453b39373637363534 +373736373738363635353538383b3e4038333b3c2f2c312b2c2727392fd2 +7063b556db402ca2659d8b6cce711d20182b242e3e312b3538433d3d4444 +3b3d3d3338393939393839393b3a39383838383845443f3328292f2d3335 +30262d252b69ec6fa9a177c84d57d353be799dd852262d323e45392e2f34 +453d36363d454b4b423b383c3e3f41454c514d4339383635322837413f38 +3636324d4d30222325292795bf298978bd8e5e7cb10081e75a242c29252d +3b3f41442f333a3f3a34373e3534333536393a3c3d393435373834333847 +40363d3e3533393d362b282d333b2a1567e41f53618de45a78d440c361c5 +9f1b1c313f4a4c28404039473a48453f17004557402621262a282521181b +232b3b516544373e5f7567472e5378866c4a3b4f71805b3a2f47747b5330 +3243585a46332c4856543c2b33465043302b3d4f4a37253d7096b5e7e085 +312d362f2228292527292627292c2c3138292c28246fff9f774d4af3dbdd +f14bffbbbd9020302f272a363c343a3a37412f33363637393938373a3734 +34363838373b3a3938383737372b494e47392f38362d322c212f253ea7be +30393b5cef9c9af77cde8e6d421d3a431d333f2234553c35454a3b2e2e31 +2f2a2c2f32333331303172794232505237364442393942483f3d2043352e +2e392b3915b1a9318c5fa28d5d5ed80e2695ff90162532673c2f3445362f +47534945483e3c3838393937383c3b3b3b3c3c3b3a3a393a3c3d3f434845 +4349483733352d2f28283b31d77566b85adf4635ad70a89776d87822221a +2f2f3c4c3d353d3e4841414848404243393c3d3d3d3d3c3d3d3f3e3d3c3c +3c3c3e4b4b453a2f323734393a342a2e262d6bf57bb5ae85d65c66e261cc +86aae45e2f3538454a3f33353a4c433d3d474f565548403e414444474a52 +5653483f3d3c3b382f3d47453e3b3a35504e322325282d30a0c8339280c6 +976886bd0c8ff56a3035302c334045454834373f4340393b413736363739 +3b3d3e403b37373a3a37353949433b43453d3c42473e322e32373f2d186a +ea255a6897ee6584e14ed16fd1a61e203747505430494b44a798a0968150 +347a674a2d20201e19161c1c212c363e546d6b3532576d7b6a303e597a84 +6636335770734d27375b6b724134344b605a402b3d525c4d3834404d5740 +2f354d56493628576f99c1d7b13212191915171615181816171b1a1a1f23 +18252605095571b2dd32f5dad6e754f56a8edb483524211d1b1516150b10 +1810151515141313131417151312131515151a191716151515161426170f +181c201d191015161c1d2650f1ccc15c38efe7ebed2aeef4d5f03214221b +121b222c313d3b22151c1c10101d121417191a1a191612201c131d231709 +0c18201106090b0d1f1918071915141f1a08a1d377531c6ae3cfb1e2007c +cbc1af0c272f60382623222c2926210f1c140f0d0d0c0f1012100f0d0e0e +12110f0c1011110c0b0d1418191a242b28241c12190c030f1cec77283500 +e5c7d8dd5319171bd38a001926161c1d12201b040c080b0c11100a10170f +1111101111111110131211101010110e1907050e1724200a0e181d131813 +1953e26b775a00f2c9c2e93c1e005aeb671a1d141c2117151b1402040809 +0b0f14191914131419181d1f2f2c291e1a171712200d100b061715191825 +23212a2b221d1957eb7846145be1d3d6e31370f1b40f2a322d24251d161c +22160c0a0d0e0a0b0e10121114151b1b120f12111615130b0f0f0802080e +151e1522201b24221918281d38e0a68e4e29c7f5e1da43ce6872f93c1f3c +3a1c28331b1e187368746c5f331f6c614931282c2e2923231b191e242a40 +5d612f305568745c223452737d5f2f2c50696c4620305464683627273e53 +4d331e30454f402b2733414c3623293d4639271b4d6999c5dfbd401f2628 +27292a292c2c2a292a292729302937371619657fc0ea3fffe6e1f25fff78 +9cea5946373635343134342d323c34343434333232323336343231323434 +3437363433323232333143362e373b3f3c382f323134353a63ffdcce6740 +f6edf2f636faffe3ff4327353027333a464b57553c2f36362a2a372c2e31 +33343433332e3c38313b42362a2f3d45382c3133334139382735312e3730 +1bb3e587632a78f3dfbff00988d7cebf1e3a457752423d38424042423443 +3f3b393635373635333434333537383433353836333034393d3d3e464d4a +453d313629202b38ff903f4308efd0e4e86026242be39c092b382830332a +3c3c29353338393e3b33393e3638383738383838373a393837373738394a +3a363d444d452d2c373a303531356ff87e886b10ffd6cff6492b036afc7a +30363039403a3c44413135393b3d414448403936393c3d404452514c433d +3c3a394f3e3f3a33423e403d48454049493e383572ff8f5c276df1e1e2ef +1e7dfec3203e494640413a353d483e35363a3b3a3836363537373b3e4135 +353537393b36333f413a32353b40463b47423c4341363441334ef3b9a060 +39d4ffe9e249d46d77ff432846442a3945313633433847423a1302524b37 +221b20231f1a1c16161d2429415d602f31586e7c692f3f5a7b8567373458 +71744e28385c6c713e2e2e455a543a25374c5647322e3a455037252b3e47 +3c2c225573a3d1ecc94b282e2f2b2b29282b2b292b2d302f333933414120 +26728ccdfa4ffff6f3ff71ff83a5f1604d3d3b39383436362c313a343739 +3938373737383b393736373939393d3c3a393838383937493b333c404441 +3d343a383e3f4571ffebdf7953ffffffff44ffffeeff4b2e3b352c353c47 +4a56543b2e35352929362b2d3032333332312f3d39333d45392f35434d3f +35393b3c4d464532413d3b433d29bff194703785ffecccfd1796e7dece2c +4953855f504c46504e4e4b3c4a453e3c3837393939373a39393a3d3d3a38 +3b3d3c3836393f454b4c5257534c42343a2d242f3cff97474e14fbdff4fa +7137373bf3aa153542323b40364745313b393d3e4341393f453d3d3d3c3d +3d3d3d3c3f3e3d3c3c3c3d3f4f3e3b4349534d33343c3e3439333873ff8d +987b20ffe7e0ff5a3c137aff893d3d343f4540414a46373a4042464a4e50 +473f3c3f4243464a58575249434240405543454038484445434c47434c4b +413f4183ff9f6a357bfeeef0ff3090ffd832494f4b4445403a424b403939 +3d3e3c3b3839393a3b3e42443938393a3d3e3a353f423b363a40474e444f +4b4348443a38483e59ffc7ae6e49e5fffcf75fea838aff4b314f4e334351 +3c423ea298a08f784c398768543d3232312b262c312f3640404c65784336 +495d82824c2f42698a783e29455b7c673a353f52755943313d57614f372f +3f515345383a445a4a37303f5151452b3c4a88a8c8e0851d1117241e1a1c +16201f2226262325281d1b1e294a772466f123f791d0de48e71e36f44c16 +132b191c131d1e191e1714181a1b1918171b1c1f1d1d1b1c1c1e1f201f1e +1b1a1a1b1b251a0e101d1c13192311232521251b192f4595f526f7dae4f5 +0034111de26617252f19173434273b392917141718161411121417181818 +171a161525342b1f251f090f1a2521131a0f201e223f2e161f2c0e2bb4f1 +e8cc74eff0eedb27ebce9bcd0c25182f1e21302c2c1d1a21201e08141110 +101415161514100f121516120f0f1518140f1013151e160f121e241e1712 +222b1f0781cedbe080b2ecf4e88d061c44ebb91129281d271f1e15161e1c +210f0d10100b12191417151414161615131313121212121310130f120e02 +09192023252a21251e0c218cd5e7d74dd4d4f2e96638a8e3c84c16271914 +140f111005090c0f0e0a0c151f1c1814171a1b1e232f2b241e1b1a19150d +0810150b1c110a21221b1f302f2322211682b5ddde5be1f4efe56d0ea5eb +2627271914232a2016090d1217181511101214151515181d201b1a171314 +1717120a0a121c1c120e10131a171b2c36383b1d2f2c4b839ee5a8a0f2cc +f599b1d360ee9a4a40373d1c201a1e1b70687468562f24775d4f3c353637 +332c2c2a24272d2b37536d3b3044587b7742253b62837137223e54756033 +2e384b6b4e3624304a54422a22324446382b2d3850402b24314141361f33 +4587aacee88f2518202d29282a242e2d2d312f2c2c322b2c2c3758853072 +fd2fff9ad9e751f32a44ff5d27264031362f3b3c393e3a34343333323030 +3335373635343435363738373333323233343e332a2c39382f3642324143 +3c3d312c4155a2ff2effe0ecff0d421f2df3772a38442e2f4c4e4155523f +2d2a2d2e2c2a27282a2d2e2e2e2d322e2d3d4d443b413c282e3b4644343c +314240425c4b323943253ec7fffadc84fffffeeb34f8dba8dd1d382d4638 +3d4a3f3e33323e41412e3a39363636373534333230343638333130373936 +3032343640382f333f453f3931414a3e259feaf3f08cbef7fff49c172c56 +fdce274140333d35363237414148383437352e333a353a38373739393836 +3636353535353638403f423b2e303e4344464940443d2b3ea6ecfcea5ee5 +e3fff87549b9f6dd632e433531333237382e35393c3b373940463d373336 +393a3d424e4a433d3a3938363434393e3443383147453e42515145403e31 +9cccf2f16df1fffcf27a1db4fb393d4035303f473f382b30383f403d3b38 +3433343434373c3f3a3936323336363432343c4644393535383d3a3c4e58 +575a3a4a46629ab4fabbb1ffd8ffa1b9d967f6a3534a444b2d322e34333f +38473d310d075d473b2a242729241e22221e22272634516b3930485e8385 +4d30436a8b793f2a465c7d683b36405373543d2b37515b493129394b4d3f +32343c51412d263142443923384c8fb6daf399302229342d292a242e2d2f +333433343b3434354263903c80ff3dffabeaf862ff364dff642e2c453337 +303b3a3639363137373736343437393b3a393838393a3b3c3b3837363637 +3842372d2f3c3b323a4739494b45473e3a4f65b3ff41fff6ffff1a4f2c3a +fd81313e49312f4c4b3e524f3d2b282b2c2a282526282b2c2c2c2b322e2f +3f51483f45422d33424d4a3d453d4e4c4f6a593e4651334cd5ffffeb93ff +fffffa44ffecb9ed2d493e56474b594d4a403c464647313d393737383838 +37363435363b3a383335393e383534393d4a443a3c464c443b34444f432d +a7f5ffff9cceffffffb12b436affdf354d4c3e4840403a3e47474d3c393c +3b343a413a3e3a3b393d3b3c383a38393739373a3a4341443e3135444949 +4b4e4349402e44b3fcfffb70f7f6ffff885bcbffee733a47383536343a3a +32383e41413d3f474d443a38393e3d4245534d48403f3c3d3b39373d4238 +483d364a494244565347484c44addcffff7bffffffff8b32c9ff4a484539 +34434b423a2d32393f403d3a383635363636393e413c3b38343538383531 +323b45463e3a3d40434041505a595d42555370a8c2ffccc3ffeeffb8d0f1 +7affac5c544d54373c393f3d9d99a0886e483f8f7b6f605956554d49424b +4548524a485a746446354e767f70393a4e74815d39374869745a392f425f +6a583f36475b594a31334253503c353c4f4f44353747514e3e3437658bb4 +e2d45e2d293b2e2e37292a292c2f2f2d313434203f2e2fd7d8cba423e22f +8dc41fdfd2c8e419312c1d30322816181d20262321252725232123242827 +2724252427292726252120202122201125282b2e202f2b1d241c1c2c3b54 +c27a80f913f8a6adf02fc68e7ff55219543c2b191d293b39273735211a24 +231519191a1c1d1e1f1f172728272f2f262524142529251d122719211c26 +322820242f283a611977f44ceeb2d5ec4cf7edf7f01b301d222424313a31 +2e32282116201d1b19181d1d1e1c1d1b1b1e22231f1a161d211e1d20201d +0a1d28231a141d2f301d2e361d2d491cc8c795ef91f7ce405913a8f01f0e +2a211e252f1d171e120e20181c201b1c1f1a211d1b1b1d1d1b1919191817 +181819180f12181e1e1b1c1f201c231d242c17103f2d20c89ca0f5a5f591 +78e8a2310c272824212022211a14181919161416202728231f212425282d +362e262221211f1c1b1c1424131f211f202e2e292a28272f2a1f422b16e4 +c4c2ef99f77e1660f26024323c36281e1b171e23261c0f0d18251e21201e +1d1e23272929241d1d22231f271c1c221f1d201f23262f37393632323f43 +32429c3280ec84e3a2e1ba85f974f2a94545463a202e2e21196d6a75614c +2b277e6c64595453544e483a3f37363e363347665a3d2f49717768313347 +6d7a56323041626d5332283b555f4c332a3b4f4d3e252736474430293043 +4338292939433f322930628bb6e6d8602d293b32323b2d2e2d3033333132 +373c2b483738e0dfd2ab2ae63391c823e3d9d1ed243c3a2b40443c2c2f36 +3a413c343535353131313436373534333435373534302f2e303132322339 +3e41443648473b403834414e65d08688ff19fba7b0f637d09889ff5f2863 +4b3b2c303e504c38464430293332242828292b2c2d2e2e27373b3a41413a +39392c3d413d362940363e39434d43383a433c4a712785ff5afcc0e1f855 +fff6fffc293e2d363a3a454b403c453d3b323e3b39373637373634353333 +363a3b37322e353936353838362538433e3630394b4c394b533a4a6432d4 +cd9cf69affd94d6824b9ff3224403831384436333c312d3f373a3c343437 +323b3a3738393a3736353634343435353633393f42403d3b3d3e3a413b41 +4a352c554032d8a9adffb1ff9d85f5b2431f3b3d3d3b3d40413c363c3c3c +3935373f4440383436393a3d424b433b3736363434373a3343323e403e3f +4d4d484947464c4134583e26f2d2cef9a3ff87216bff703747514b3d3633 +313840433a2d2b3642373736343334393d3f3f3a33333839384439393f3c +393c3c40434c555754504e5a5b4a58b24591fc91eeaae7bf8afe79f8b04c +4e4f442d3b3d322c3d3c483627090b645550464140423c362d332c2c372f +2e4163583e334f7884733c3b4f75825e3a38496a755b3a30435d6550372e +3f535142292b3a4b48342d344545382929394342342d376995c2f1e36c37 +334335333a2c2d2c2f343434363c3f2f4d3e3fe7e7dcb534f13f9dd42fef +e3d8f42a403d2c40443a292930313a363235363532313234373736343434 +3638363532302f3031323223383c3f423445483d433b3846556dd99295ff +27ffb9c1ff44dca293ff672d664e3b2a2e394b4632413f2b242e2d1f2323 +24262728292b2636393841413b3a3c2e3f45413a2f453e46414b564c4245 +4e47577e3290ff65ffcbedff64ffffffff364b3a414545505347454b423c +353e3b37353436343634353335363c3b393230353b3637383a3a2c414c45 +3a343c4e4f3c4f5942526f3fe2ddacffabffed607d36c9ff402f4b40383e +493a363e332f41393c3f38383b363c3838363a3838343634353235333636 +31383e42413e3d3f403c433d454c3730604e40e7b9bdffc1ffad95ffc151 +2d44403a3a3b3e403b373c3e3e3d3a3c4448443937373c3b40434e443e38 +39373736383c354534404240414f4f4a4c4948524f45664c35ffdddaffaf +ff96337dff7f3e4a544e40383330373e41382b29343e343534323132373b +3d3d3831313637353f34353b3a3a3f404447505757544e4f61655665bf53 +a1ffa2ffbffdd5a0ff8cffb85457584d35434439329c9aa1846847429471 +6b625c5856514b4d59514f5951434e6e85582946667088503c355b88804f +2d3d4f76723e2b3f496d634930344c58523a2f3951543e31363c4a493730 +3c494b3b32394b77aac7e6b15d4755444a5c494e4b4e515352555a504955 +4c45655a6d39487440605d245e63715a43544e554e42584652533d4a4648 +4c4f4d494544454a4a49484747494b4a4846414140424147304635334a32 +363838403f44382941b7d5e9912dbf5a50c01db2e7edb63b2a42383f323e +3f483943393535332a2d332d2c2d2c2f2f323236352d344849362a2f2633 +2930412f2f322827352b2b393533204cecf9e7bd39f06e94e2054d677ee4 +153c342e362b2f373639372834232c27242223262727262b29282c30312d +272729272222272722302d211e2d312b2c2a26492d1d9edacdeaba5bfe4e +df9a79f7cddadb212e342b2d351c232c2d3c25271e25312e2c2b272a2523 +2325262421232222212222232225231c1e262521263730392c2b3c332689 +f5b3e9a855fb41f795acf2d2c682393038322725221e2422222425262a2d +3136312c2e3031353a443b322e2e2e2c2c2b2b1d3621222a2d23393f363a +404044461e84f7d6e3936edd3de0764db2f9d45d4f493a2b2730322a2a28 +292e32312f3434332f2c2c30343437373232363530362b2b2f3034352b30 +354a5c5c5f6c745d49334cd0dbdfb733b75399c24dbaf1e89a737c733c45 +29323a416e6e785d4628287e5f5c555150504b4340473f3b453a2f3b5c77 +4c203f616a8249352e548179482636486f6b3724383f62573d2428404c46 +2e232d454832252a303e3d2b222e3b3d2f28304474a8c7e6ab55404e3f46 +58454948494e4e4d4f565049554c4565586b37466f3b5b581f5960705944 +555259544b63515f604a5a534e5154524e4a494a4f4f4e4d4c4c4e504c4a +48464646484a503b5342405741474d4d545254463349bcd8e9902abc544d +be1db2eaf0b93e2f4741453b484952434a403a3c3831323a323332333436 +37393c3b363d515240343b323f373e4f3d3f443b3a483d3d4842402b55f5 +ffeec440f77599e708506a81e719403b3943383d3f3e41413442333f3a39 +3736373836353a38373b3f403c3636383631313636303f3c30303f433d3e +3c3a5c4230b2eedbeeb85bfe50e19d7ffed7e6e8303d463a3b432c364041 +523b3d3237413c3836333a3836363839373436353534353536373b3c3534 +3c3b373c4b464d413f50473898ffbdf2af5cff45fb99b0f9dbd08c473e47 +423a3a37343a3b3b3a393a3c3f40443d383a3c3d414650473e3a3a3a3838 +393b2d4933343e41374f544e52585859572b91ffdde79871e040e37951b6 +ffdd685d554837353f413939393a3f43423e4141403c39393d414144443f +3f43423d4338383e3f43433b42475c7070748188715b445bdfe8e9bf39bb +559bc14ab7f0eb9d767f78414d313a444d3d3f4a3421090d664949423f3d +3a3530303933303a32263458764e254668768c513d365c8981502e3e5077 +733f2c4047685b41282c44504a322731494c36292e32403d2b222e3b3d31 +29354b7db3d1f0b560485543455542454345494b4a4f554e47554c45655b +6e3a497541615e266067765e4857535852465d495656404f494a4d504e4a +4645464b4b4a4948484a4c49474542424244454b354c3b39503a3f484852 +505346354cc0ddf19833c56058cb29bcf3f7c043324a3e43364041493a42 +38333431292b322b2b2b2b2d2e3032383731384e4f3f333b323f373f503e +3f463f3e4c41414d4846315cfcfff4ca46fd7b9fed1159738af02249433f +493e40424144423442323b3634323031323130373534383c3d3933333533 +2e2e3333304441353241433d3e3c39604537b9f7e4f9c367ff5deeae8fff +e3f2f137444a3d3c432c343f3f50383b3037403d38383337343232343533 +303231313031313232383831313a39353a4a444e424051483c9fffc6fbb9 +66ff50ffa4bbffe4d9954a3e423f3635323137383838383b3e4143443b36 +383a3b3f444e453c3838383636393a2c4733343d40364d554e5258585c5f +349affe5f09e78e747ec825cc2ffe66a5d554837353c3e36363334393d3c +393a3a39353232363a3a3d3d38383c3b363a2f31373a40433b44475c6e6e +6f7c86725f4b62e6f0f3ca45c764aad15bc8fef2a27b847c4550333c454d +9d9d9f8e62435a87756557555753525452534f4a4e524b405e8b7b43384e +6a87753d2d505a7e8e362b4e5f6462402a3c4e5c563c2e3b4f584e3c313c +4f52412e3546514839343f4c473c333d5a88b5d5e1924c545f4a4b5a5a53 +52545658606a615d626d6e686b746c6a6b6c71757879736867737c756e6b +82776b6464636363686c6e6f6f6f71736d6d6d6d6d6d6d6d666767686a69 +6a696e68686c6b656465636465676969696a6567686b72767a78756c6665 +686a6864696768646261605e5554555454535453565556535454595b575b +5f615e5f62656362605d5a5c6165656b61555b65615f6f625372aaa97247 +666262676e6b5f537b6d61626564615f5d5f5e59585b59554d5156575453 +53545c5b5a5856565759524a49525450545e5956535153555b5f596f7963 +4e54799c915c5b8d4a64674c91a4976b5058594b5354544f4c4b4e514f50 +51545352575e585552504f4e4e4e4d4d4e4e4e4e4d4d5552525555535456 +5a5658585d5d5956468788795c50715e6c5e65859d9578636b655d595758 +5857595a5b5a5b5f646762605d5a5a5d6062616160606163656661676d6d +6966666a626d736e696a6a6974665e6c7d7c6e627e7b767373787e827675 +76747372706f696867696c6b67636a655f5e606262616665605f646b6a66 +6a6f716e6a676b6e6664677277726f7174726a615c606a75676a69666e78 +75686c6c6f727473706d6e6b697173766940243f6e60524646484746453f +3d39373b3e372c4b796b372e4764816e3323465074842c2144555a583620 +3243504a30222f434c4230253043463522293a453c2b26313e3b30283453 +83b2cfd5853d45503c3d4d4b4643474749515d54505560615b5c655d5b59 +5a5f63666765595967706b65647b736762626464616465676868686a6c66 +666666666666665d5e6061636566666b686a6e6e68676b6b6c6d6d6c6a69 +67605f5e606466676866615b5a5d5f5e5c616261605e5d5c5c5152515250 +515051525352515052555954585c5e5e5f62656263615e5b5d62676a7268 +5c606763606f61526ea6a56c41625e5c616562554971655c5e646562605c +5e5d5a5a5e5e5c54595e5d5a5656575d5c5b595757585a534b4a53555155 +5f5b575453555a60645e757f6c535c809f8b504f82415b60478ea3986c54 +5c5f51585b5b595655585b595756575553565d5b5b585655545454535354 +54545453535c59595c5c5a5b60605f5e6163635f5a48878677584a685563 +585f819b9578636c665e5c5c5f5f5e6061605f5d5f636663615e5b5b5e61 +63626261616264666760666c6e6a686b6f68737c797475747278665e6a79 +76665874716d6a6d72797e7576757572716f6e696867696c6b67636c6761 +606264646368676261666d6c66686b6d6b67666a6f68666c777c7976787b +776f665e606a736264605d636d685d686b6e7173726f6c6d6c6a40434a3f +1d0724584d41343335312e30302f2c292d332e2547776c3b364f708b763b +2b4e587c8c34294c5d62603e283a49544e342633475046342934474a3926 +2b3c453c2a25303d3b322c395a8abbd9df8e444a533b3a47443e3c3f4042 +4c554c474c575953555e585655565d616467655c59677069605e736a5c56 +555656545b5d5f60606062645e5e5e5e5e5e5e5e565758595b5c5d5d625e +5f63635d5c5f5e5f6061636261605c5c5c5e6467696b6d69636061635f5a +5f5c5b575352504f4545454544444444464646444445494d4b5155575657 +5a5d5d5d5b5856585d62646b61555a625e5b6d5f506da5a46c41615d5c61 +6663564a7063595b60605d5b585a5955555757544c4e53514e4b4b4c5554 +53514f4f50524b43424b4d494d595a59565254565c5e5a717f6b575f86a4 +8d5253864660684e95a89c6e535b5b4d525354504e4c5052514f5050504d +525854514e4c4b4a4a4a49494a4a4a4a494954515154555354585c5a5c5e +61615f5b47878778594c6b58665a61829c957861665e585555575756595a +5a595a5d61645d5956535356595b5a5a59595a5c5e5f5b61676865636569 +646f7975707173717968606b7876645773706e6b6f747d7f737171706d6c +6a6961605f6162615d59615c5655575959585d5c57565b62615c5c5f6262 +6061666a6563687176716e7074736b625b5e6a74666865626b7571636969 +6c6f6f6e6b676866629c9a998d65434c6c766c6259575654535253514e4f +534e464b748963363b5b6e8a5e323e5268816a373146686b523a2e44565c +493536465351413336465047382f3d4a483b313742493c31344c75a1c4e3 +d4675c5358555057545457575559605854575f605a5d666260606164676a +6a695f5e6a6e696464726960595a5a5a58565a5c5c5c5d5f616060606060 +60606065656563636362626f6a686a6a65676a6966676667696c6e757472 +717475747279726d6d70716f6c75737371716f6e6c666667676869696965 +6565646365686b6b6d6e6d696a6e72707172747c8a9aa6ada79b8d8b908b +7c7b7d78787e7d797c848485878a888480897f7776797673727173716c6c +6e6f6b6b6c6f6f6e6e7071757271747a7f8180887f7b7e7c74747b7a7979 +79797b7d7f6f7f88857d7976788e7a79997a878682757a786e6f7d848471 +72716f6d6f72757372757877777e837c7a7c7a7b77777474737675777475 +747b77777a7a7775797a7877787b7e7f7f6a897e837d748a798784807a7a +7a787486807c7a797a797773737471727174767473737373737373717171 +71727475777374757374737476767c7c787778777477787c848683818386 +84827f7d7a797a7b797a7a78777574737270707171706f7b76716e6e6e6e +6e75757473787d7b7574777978777476777471727a7b7772737376797875 +767c8079777572767a7a736c6b6b6b6d6e6e6d7473707272726742243051 +5f564c464444423e3b3c3a383c403a32335f75522931556883542834485e +77602d273c5e61483025384a503d292a3a474535272a3a443b2c23313e3c +2d2329343d302529436b9abad3c354493f44403c434040434341454c423f +42494a44464e4a484546494c4d4f50474652595450516058504b4d4e4d4a +48494b4b4b4c4e504f4f4f4f4f4f4f4f545454555555565665605e62625f +5f64636362616060606064625e5d5d5c5b59605c59595c5d5b5962626160 +5f5f5e5f5a5a5b5b5c5d5d5d5959595857595c5f5f6061605f6064686667 +686b7381919da7a19587838881726e706b696f6e6a6d777776787977716d +766c66686c6c6968676968636368686767696969686868696d6a696c7277 +797880777376746c6c726f6e6e6e7072747668788380777372707c656484 +66757472676f6f67687680806f70716f6d6d70736f6e6e6f6e6d71797676 +7676757371706e6f707171706f6e736f6e71717071757674727376797776 +617e71766e62786674726e6b6d6f6d6a79767271727372706c6c6b686564 +65676a6b6b6b6b6b6b6b696969696a6c6d6d6666666667696b6d6f757775 +74787671706d717777726e7073716f6e6b6b6b6c6e6f6d6d6b6a68676564 +626263636261716e6966666666666d6d6c6b7075736c646567686666676a +6966697175716f706d70726f6c6c6f736a68636062666461616262626465 +66656c6a674241474022081a3e4f483e3533302c292b2e2c2a2e32312b2f +5e7758323a5f728b5c303c50667f68352f44666950382a3c4e54412d2e3e +4b49392b2e3e483f3025333e3c2c2228333d30272d4873a2c3ddc95a4b40 +433d353a35353838363c41342e313b3c3638423e3c3a3d404345484c4544 +4e564f494a564e433e3d3e3d3d3d3f41414142444645454545454545454a +4a4a4a4a4a4a4a595452555551525453504f4e505152535a585554575756 +55635f5b5b5d5c5a555c5a575653524f4f4a4a4b4b4c4d4d4d4949494847 +494c515357585755565a5e5c5d5f626a7888949b93897b787d7768666863 +62686763666f6f6f7172706b666f655e5f63605f5e5e60615a5a5c5e5b5b +5a5b5b5a585b5c605f5e61676c6e6d756c686b696161696b6c6c6a6b6b6d +6d60707f7c7773736e78605f8165737472676d6a5f606c75756364656361 +616467646364666564696f6a6a6a6a696765646263646565646362686465 +686866686c6d6b6c6d707374715a786b70695e7462706e6a666769676170 +6c6968686968666262645f5f5e606260606060606060605e5e5e5e5f6162 +635d5d5f5e5f606466676d716e6d70716c6a696b71706a67696c6a696767 +666869686665656361605e5c5b59595858575665615c595959595960605f +5e6368665d57575b5b5e5d60646360626869656061616468666363676d65 +63615e6165665f5d5b5b5b5b5c5b585f5b589b98968967403b486f6f695c +5759585355585652525555544959898d4c2a445b87874e2f4052708c5825 +2c5a67614e2a364b5c5741343b4851493a323a494c462f35404840333137 +4e40332f395885aad9e9af4b5553614c5656585b59555558605c5d63625e +61696361616163656767696161696c6765696e68625e6060605d595b5d5d +5d5d5f615f5f5f5f5f5f5f5f60605f5e5d5a59585e5956565654575c5e5c +5a58595d5f62606160606364646363615e5f6263615f5b5a5b595a585856 +54535355565758585b5c5c5c5b5c5f626363615e5c5d60645e5d5a56565b +63697c6c68645f6a6c5569686c6b6161696a67696d6d6b6a6f7377706d6c +6d69656567696762626567636866656567696c6c6c67656a747a7b78756e +6c6f6e68696f696a6c6e6f6e6b6a686c6f7274746c6374827e7f837b7483 +80726b6e706c6c6f636263636265676a7171727677777b816a6a6e6d6f6b +6a6569686c6b6d6a6a696f6c6c6c6c68676a6d6b68686b6d6f7071726176 +7c72837c748081726c72766f7473727172706f6d74767774747275736d6e +707272706e6c70717273747474757874706e7175757572726f6b6f747571 +6e727a7d7976798079797a78756f68646a6a6b6b6a6867667473726f6e6e +71726c6a6865636365675e6060606468645e676a6b6c6f6d6c696f6c696b +6b676464666b70706c6868687a75747373717375746f6c6a6c6f73767171 +70726f6f6644201c2c555751464244433c393c3e3f4043413d303f70783b +1e3e58807e4526374967834f1c23515e5845212a3f504b35282f3c453d2e +262e3d403a2329343c35282329403427232e4d7a9dcad89c373f3b48333b +3b3d403e3a3a3e454142484743444c46444141434545454842424b4d4a48 +4d524d4847494a4947434547474747494b49494949494949494a4a494847 +4746454b4744444444454b4d4c4a4847484a4b4947444445464645464340 +41444644423e3f3f3f3e3e3e3f3f404042434445454849494948494c4f50 +504e4b494a4d514b4a4644444951576b5b57534e59594253525654494951 +5251565755515053575b5653555654525455575550505557565b59555557 +5a5b5b5a55535862686966635c5a5d5c56575d5556585a5b5a5958565a5e +6162625a505964626368625b6c695e575c5e5c5c6257595a5a59595b5e63 +6162646563676d5a5d5e605f5e5a58595b5c5e5d5d5a5959565658585656 +595c5a5757585a5b5c5d5f4b5e645767605864665a545c605c5e5d5c5d60 +605f5d646463605b595a5b5b5e606262605e5c6061626364646463625c58 +585b5f616160605e5d616667635c5e6465615c5f645d5f60605d59545056 +565555545251505c5b5a575656595c5a5a5855535355574e505050545854 +4d504e4f5254555352585655585a56535353585d5d59555252625d595858 +56585c62615e5c5c5f6265605f5e444146402607081e484b453931312e2a +2d313231323538372c40747f4328486187834a2b3c4e6c8854212856635d +4a262e41524d372a313e473f3028303f423c252b343c332420263f342725 +325382a6d1dea2394139442e32303235332f2f31322c2d353430323c3634 +32343638393b413d3d434842404247423b393b3c3b3936383a3a3a3a3c3e +3c3c3c3c3c3c3c3c3d3d3c3b3a3938373d3936363635373b393533313335 +393b393838383a3b3b3b42433e3f4242403c3634343232312f2f2e2f2f31 +323334343738383837383b404242403d3b3c3f433d3c3b38383d45495947 +45413c474831454448463d3d454644484a494443474b4f47444546414142 +494b4b4444464a464b48454547474b4b4c47454a545a5b58554e4c4f4e48 +49514e4f5151524f4d4c4a4e56595e5e584a4e5957585f5b546463554e50 +524d4c51494a4b4b4a4b4d505654555859585c624d4d4f50504e4b484a4b +4d4e4e4d4b4a4c494b4d4d4a4c4f52504f4f5153545352513e52584c5c55 +4d595b4e484f534e535251525453525057585a55545253514f4f51535351 +4f4d515253545555555555504e4d5054585856565654585d5e5a5255595b +554f52564f505354534e4b474b4b4a4a49454643504f504d4c4c4f514c4b +4946444446483f4141414549453d424043454b4b4c4a504b4a4a4a464141 +42474e4e4a4644455651504f4f4d51555856534f4d5052534c49469a9796 +87653d3033535d5b4e4a51514c4a4e4e4b484a4d5254486f9a72322d4d65 +987c3c30445e797d44283a5262593e313c4e594f3d35394a4e4736313e4a +4e3a333644483c33314a46403832426b94c1d7e86b504b595856595b5c5a +5756575c595a5d5c5a5f655e5c5b5c5e606262615d5f62635f6164666260 +61626362605c5e5f605f5f61635e5e5e5e5e5e5e5e696868676362626166 +646261616163656867676565676a6b676665676c6e6f6e686766686b6b6a +67686868686868696763626263646566665e5f60605f6062656262605e5d +5e5f60626367666665646362515c615d707d68675a636e6a6e6e5a626367 +6663646a6e6b69686a67615e626565645f5f646563666260616568676669 +666363676a6968676363686a686a6f68696b6d6d6b69656466676664676e +746b7c7e697b6c6c7583746d70726b676a6767676768686a6b6b696a6d6e +6e707569696b6d6d6b6a6868696c6d6d6c69696f6c6c6d6d6865666e6c69 +67696869696f6e63717165777b6c7274747b7f7a6d72727173727271716f +71747777777a786c6b706f716e6d6973727675787576767e7d7a78797c7d +7e7372706f71777b7d7c7673777d7e7b7675767a7c7b77706d7373737272 +71706f72747673706f72756e6d706d6c6b72747272747276787773757575 +797f7f7b77807c78777776757477797c7b777372727c77787d7c7478817a +76737170747a7d777a7a71716f63421d101736424236323a3a322c303638 +383a3b3b382a527f5e25274a5e8f7333273b5570743b1f31495950332530 +424d4331292d3e423b2a25323e422e272a393d3125233c38322a23335c84 +b4c7d7583c363f3c3b3c3f403e3b3a3b3f3d3e41403e40463f3d3a3b3d3f +3e3e3f3c3d41413e41464644424346474644424444464445464943444344 +434443444e4e4d4d4b4b4a4a4e4d4a4a494a4b4e52514e4c4c4e4f504a49 +484a4c4e4f4e474645474a4a4946484848484848494a494b4b4c4d4e4f4f +4748494948494b4e4b4b4847454748494b4c4d4f4f4e4d4c4c3b434b4457 +644f4c3f48524d51503e484c4d4a47474a4e4b4a4b4d4c48484c4e4f4c47 +484d4f4d514d494a4e51504f524f4c4c50535251504c4c51535153574d4e +505252514f4e4a4f4f4e4b4e55594e5d5e4c5d4e5059685953595b545055 +5657575756565758555352555653555a5253555757555452525356575756 +5352514e4e51514d4d505654514f4e4d4c4d53544755544555594a505457 +5e635e53565656585a5c5b5b595b5c5c5b59595c55585a5c5b5b57565d5f +60626262606064615e5c5d6062635b5a58575b616567645e585b60615b57 +56595d605f5d585559595958565554535658585552515459565a5a5a5658 +5c615c5f5e5f6065615c5958585b61635e5a64605e5d5d5d5c5b5c5e6160 +5c585757605b5c615e585c676464615e5d5f64675f60614344483f260801 +0c2e3b3b2c262a2a2322262c2a2b2d3135352c5788672f3153659478382c +405a75794024364e5e55372932444f45332b2f40443d2c2734404430272a +37392d22203b37322a2638638ebdd1df5e3e353e383434343533302f2d2d +27292c2b292e342d2b2b2c2e303232353334383835363b3b3937383a3b3a +383537393939383b3c3837383738373837434142403f3d3e3c423f3e3c3d +3c3f3e3d3a3836383a3c3f3a393a3c3f414243404140404543423d3d3d3b +3b3b3b3c3c3a3b3b3c3d3e3f3f3738393938393b3e3d3d3c3939393a3b3d +3e404141403f3c37242d343043503b3b2e37443f4345303b3c403c39373b +3f3c38393b393231374042403b3a3f413f403c393a3c3f3e3d44413e3e42 +454443423e3e434543454b444547474744423e3b41434244475050404b51 +3e5243454e5d4e464b4b423e42464848484848494a484646494a484a4f44 +45474949474644444548494948454446434345464241434a484543454244 +42474539474638494d3e444749505550464b4b4b4d4e4f4e4e4c4e505150 +4f505147494c4d4d4c49474f5052535453525257555250525557584f4e4c +4b50545a5a58524d4f52514c4544474d5253504c494c4c4c4b4a4948474a +4d4e4b4a494c4e4a4b4d4b49494f524f5051505356544e4b4a4a50575856 +525955514e4c494847494b4e4d4b474646524d4e53534c505a5756534f4c +4c4f50474543989a9984603b2e30323e3f35333a3c3735363634302e353d +4945557f8d5b2c314d83956237394b5a85703e253f595a5939333a4e574a +382f3e4d50403033414c46362e3a4744372e3e4449433333547ba3d1ddc8 +4a3e40514c50514f4e4e4f504d4c4c4e4e4e52585452535456585a5a5b58 +5b5b5b585b5f5d5c5d5e60615f5e5a5c5e5e5d5d5f60606060606060605f +5a5858575959595957595959595a59585758595a5a595958605d5b5b5c5c +5b5a59595a5b5f605f5d5e5e5e5f606061605b5a5a5a5a5a5a5a61626463 +6363656762636465666563625c5d616365656361635563695d6b7b6c6861 +6b6f6166736d6969696c6e6d6d6b6a696a6c686260646668686464696c6a +686664666a6b68656c6d6d6a6766696c6d6a6a6b6b69696c686969696968 +6767686c72736e69696e6b687564716a7b716d6c6b696b6d6d6a6d6b6a6a +6c6c6c6b6e6a696b6c6a6a6c6f6f6f6f6f707171696b6c6e6e6c6b6a706f +6e6f6e6867676b6c6c6d6c6a6a696a6f6b6b6a656f6e796b62656c6b6a6c +6c6c6a6a686a6c6e64666a6e6f7072736a6a6b6a6b6a6b696c6c6e6f706e +6e6d7076787672717377737373716e6f777e7d7671737c807c736b6e7274 +75737271777777777675757471757877747172747475787675757a7d7272 +716d6f7375726e6d6c717879756f7674716f707374736c70757879787777 +7371757b797071787574747473767a7e818a8d6f7371603c1a0e13152226 +1c181f211b14181d201f2023262b253260764b242c43788a572c2e404f7a +65331a344e4f4e2d272e424b3e2c2332414434242735403a2a222f3c392c +2330363b332322436b99c9d3bb3b2b2a3933343634333334353332323434 +34363c38363536383a39393b3a3b3d3a3a3d433f404142444544433d4041 +424041424443444344434443443f40403f3e3e3e3e3c3e3e3e3e3f3e3e3d +3f3e3f3f3e3e3c44413f3f40403f3e3b3b3c3d3e3f3e3c3e3e3e3f3e3e3f +403f4040404040404047484a4949494b4c4748494a4b4a4847414245484a +4a4947493c4850425060514b444e5143485551515251525251504e4a494d +4f4d494a4d4f504d49494e504e4c4a484a4f504e4b525353504d4c4f5253 +505051514f4f514d4e4e4e4f4e4d4d4d525859534e4e524e4b5847534e5f +5551504f4f515353535758575756565453534f4e50514e4e505555555555 +5657574f5152545452514e4f4d4d51524d4d50515252514e4c49494c534d +4d4a454d4c574942474e4f4e50504f4f4f505256584e5052535354545753 +545454545454535556575959585756585b5d5b5756595d5959595753555c +63655e56575f635c534e5155585b5b5a595d5d5d5d5c5b595855585b5a57 +5455575c5f60605d5f62675a5c5957575d5d5a535150555c5c58525a5855 +53555859585054585b5c5b5a5a585659615d5657615f61615f5c5d606466 +6d6f43484d402407030d111f2217111416100d1016151515192029283868 +80562f334b7e905d32344655806b39203a545552312930444d402e253443 +4636262937423a2a222d3835261d2d333a3426284975a4d6dec5422f2c37 +2f302f2b2a2a2b2a242121232525282e2c2a2a2b2e303030302f30323130 +333835353637393a3b3a3535393738363a393b393b393b393b3936343633 +3533353333333533353435312c2b2b2c2e2d2d2e36333333343433333133 +343337363533333333343434353533333333333333333a3b3d3c3c3c3e41 +3c3d403f423f3d3c36373a3d3f3f3c383828353c313f4f403d364046383d +4b45454445454643423e3b3a3d3d3a35353b4144423e3e4344423e3c3a3c +3e3f3d3a45464643403f4245464343444442424644454543423f3e3c3c41 +494a484345473e394a394842544a4645434242424241494a494949494847 +48444345464343454848484848494a4a4244454747454442464444474742 +4042444545454441403e414742423f3a43424d3f373c4343424445474444 +4446494b414346484748494b45464646464646454748494b4b4a49484c50 +52504c4b4c504c4c4c4a4848515859524b4b51534d443e41474a4e4f504d +4e4e4e4e4f4e4e4d4a505352514e4f51525256535352585a504f4f4a4d50 +534e4845444a5154504a4f4d4945444544433b3f46494a494a4a47454b52 +4f474a535152524e4a49494b4b4f4d989b977e5a3b3232272f2f28262a2a +28292925221d1b212a334f4f608e894b21475c87815439384b6c7f5b2f39 +4b526148352e3f5352403034434e48372e3744493a2d303d433c30323b48 +49392f436083bfc0f17d1d33282f343531303336353535363737383c3f3d +3c3c3e41424442464748474746484b474749484b4a4a4a494b4c4c4b4b4c +4e5050505050505050535353545556565851555756565857535556585858 +58565558545353555757575859595a5b5c5c5d575757585a5a5a58575556 +54555355524f4f535152515454525155565a5a565364615c5959595a595f +586062565a655f58585e5e55565c5b5a5555585c5e59545f5c5e605c5857 +5b5a5f5f5c5d606260605f5f6061615e5d5c6064615e5d64695e5d5e5d5e +5c5d5c5a59595858585b5b66615f646765625f6957675c5f5e7361646b69 +5f5b5f5f595f5d5c5d5e5d5d5b69646265656260616261605f5f6062635d +5d5e5e5e5e5d5e63616263625d595b565b5f61616162616263605c626967 +5a6e6460645f5659665c5c59575555585b595b5c5e5f616365605f5d5c5c +5d5f605d5e5f5f5f5f5e5d595d63645e5a5b5f636466645d5a5f675b6064 +616063676759595b5a5a595a5a5c5e5e5e5d5c5d5d5f606463635f5f5d60 +60605f5d5c5d5f6667656161666866676564676d6f6c696b6b6a696e7577 +776d727b7e7f7b757176767b7e7b747374797b807f7e8084897989986f74 +7159361a11150912150e0a0f0f0b08080c100f0d0e12132b2a3c7278411a +3d517c76492e2d40617450242e4047563c292233474634242837423c2b22 +2b383d2e222532383125242d3839261c30507dbcbceb730e20141a1c1c18 +171a1d1e1f2223242324262926252325282928272b2d2c2c2b2b2d302c2c +2e2f303131312e3031313030313335353535353535353a3c3c3d3c3d3d3d +363a3a39393b3a363b3c3e3e3e3d3b3a3d3c3b3d3e40403f3d3d3d3e3d3e +3e3f3939393a3939393a3c3d3b3c3a3b3a3a343738393739393c37383a3d +3f3f3b3849443f3d3c3d3e3d453e46483c404b453c3c424138393f404341 +3f4244433d38414042464541424642444441404444424241414344444241 +404648474243484f424342434242414142414140414141414c48454a4d4b +46454d3d4b424443584649504e444145453f47474647464542404c474548 +4845434546454443434446474141424242424140423e4145454241443e41 +45454341404146484440444b46394d434246433a3e4b4141413f3f414447 +454848484746484a4848454544464749454747484748464743494f4e4842 +43484b4d4c4a433e434c43494b494547494b3d3f41424445464646474747 +464442424447484a4746434447474746444344464d4e4c48484d4f4d514f +4e515656534e5050504f535a5c5b50555b61626059555c5f6467645e5d61 +66686a6a67676a6e5b6a76434b4d3c20090a110914160d07080603030307 +060402070e142f31467e824a224557827c4f343346677a562a34464d5a3e +2b2435494836262a39443e2d242d3a3d2e20232e342b1f212a3839282036 +5a8bcdcbf77c152415191a1813121518161414151618191b1e1e1d1c1e23 +242420202021212022242725252728292a2c2c27292a2a29292a2c2e2e2e +2e2e2e2e2e33343435353636362f3334333335342e2e2f31313132302f32 +3231323638383532323233333434352f2f2f303030303033333232313131 +302b2d2f2f2e2f3032303133363836322f403c373234323331362d35372d +313c3830313739303137373b3634373a38322c36323437352f2f35363b3b +3838393a37373636353636343334393d3a37363d42373637363735363638 +373734333132303b3434393e3e3b383f2e3f3539384f3d40474339343836 +303b3c3b3c3c3b3937443f3d40403d3b3a3b39393738383b3b3635373637 +36363639383a3d3d37353632343839383636363b3d39353a413d30443a38 +3c382f3342383a37353436393c3a3a3d3b3b3b3d3f3c3a393738383b3b39 +393b3a3b3a3a3a363e44433d36373a3f3f3f3d363237413941443f3a3b3e +3d2f303436393a3d3b38373737383837393b404445434140404240403f3d +3c3d3f4647454141464846464443464e4f4c4547454340424747463e434c +51524f4b474d4f56595650505358595c59555153533f4b5395999277563d +34312d2d2b2a272627282f2a23211d171c252a484f4f73906f353d406a7f +74502f43516d6e4d363a495457413034464f483c2e354149413130394541 +362d323f40372f323f4841333948648cb3dbc53926131c2223201f22221f +17191b1a1a1a1d1e1e1d1d1e20201f1d2323252326252523212224232423 +242526292a2a28282a2b2b2b2b2b2b2b2b2a2626262729292a2b2e323430 +3236373235353434333332322c2a2a2a2e31323231333332323335373939 +3a3a3a3a3a3a393839383a393a393b3c3f3e3f3e4040403e3f404444413e +403e3c3d41474a4b3e3b3c3d3c3d3f40404443464e493e39454041444848 +4642494645484644434642474a484a4c4d494e4e4d4b48484a4c48484c48 +48474d4f4b4b4e4d504f524f4b4a4b4c4c4c4e4e514741454b4c50515146 +4e4748414b474a4d4d4a4b515350504e4f505454524f55504e52524f4d4d +525252525252515154535251515253545453545755504d4e4b4d51535354 +58584e4a4b48505750494c515759524c4b4f4d4f4f4d4a47484845464647 +47484b4f4a4a494848494a4a4a4a494949494a4842434648454241434948 +4a4b4744454938434b454041474a43434341403f3f3f3d3e3e3f3e3d3d3c +3b3939383a393837413f3d3d3d3d3c3a393d3d39383b3c38343031333638 +373535373938404a4d4c4b4d5152514e474344474a47464747444346494a +494c52587991a76e726c52311c13130f1011100d0d0b0b0c080a0e0f0a0b +0d0a212629557c632e33355f7469452438466263422b2f3e494b3524283a +433c302229353d3525242d39352b222734352c222530382e1f24386391b6 +dac12f1902090e0e08070a0d0c080c0e0d0b0b0b0c0c0b090a0c0c0b0a0f +100f0f1011110f0d0e0f100f1011100e1011110f0f111212121212121212 +12111111121111121215191814141819161c1c1b1b1c1c1e1e181717191c +1f201f1d1d1d1c1a1b1d1f21211f1f1f1f1f1f2021202121222122222526 +2726272729272726292b2b282527232122262c2f30262424252425272727 +2b2a2d353025213331303133342f2b302e2d32333132332c2e2f2d2d2f2f +2b30302f2d2c2c2e302d3031302d2f323730333335353737373738373839 +3939393a302a2e3435363a3b333833342d342f3236343133393b38393736 +373939353238333135373432323536353635363435373735353436363735 +34373c3c3a393b353739383736383a3533322f343b332a2d343b3d393334 +3836383b393836373a373838373534373934343332323334343434333333 +3334343135383734302f30353232332f292b3124303631292b2f322b2d2c +2d2d2e2d2e2b2b2b2c2b2a29282726242525252222292725252525242221 +2525212023242323222022252524211e202121263134312f31333637342f +2b2e34363534373633313436353233383d5c7385434948371e0d0e111114 +14110c0907070a060607060104090b262e345f876d363b3b657a6f4b2a3e +4c6869483135444d4d3524283a433c302229353d3525242d393529202330 +2f261c1f2d383021294273a5c7eacf3a22080d0f0d0805080a0801030605 +04040708080708090b0b0c06060204040508080606070a0a0c0c0d0d0a0c +0d0d0b0b0d0e0e0e0e0e0e0e0e0e0c0c0c0d0d0d0e0e1115151112161712 +151514141416171711111112181b1c191210100f10111315171716161818 +18181b1b1b1b1c1c1c1c1d1f212121212223222121232626231e201c1a19 +1f2326271a1618191a1b1d2020262529312c211d2f2a292b2e2d29232924 +23252523222521272826272727232826252321202225222428242423292b +27272a292c2b2e2d2e2e2e2d2a282826281e181c2425292c2e252d282b24 +2e2b2e302d2a292f2f2c312f2f3032322f2c322d2b2f302d2b2b2d2b2d2b +2d2b2c2a2f2c2d2a2c2b2e2f302f3135352f2e2d2a2a2d2d2c2c2d302e2d +2d2a30372f272a303739342e2e32303234322e2c2d2f2c2b2d2a29292c2e +29272825272629272927282628262929272a2d2d2a2423222a252627231e +1e251d2a312a2120252821222424262729261d1c1c1d1d1c1e1f20202121 +24242421272321212121201e1d21211d1c1f201e1b19181a1e1f1d1a1818 +1513151d1e1e2125282a2a27231f21262b29282a2c2925262724201d2122 +3e516295978c71553f342d302b282b2a26272b332c2726221b1b212d3144 +4c55787e542b38576d866c303647587464322b43455f4d372f3b494d482d +2a354848362e33404741302d3c4341332f3849473a363a546daccfe49012 +241d2529242124221d1c1f211f1d1c1b1a232221232322201e2222222224 +26242022232323222223241f222423222223242626262626262624262525 +2526262727262a2823252c2f2a2826242220222325282522201e1d1b1c24 +24232120232628232324232322222221212223242526271f222425242425 +2625201f1e22232220272524272928241d292822222c2b2629202d272229 +241e2a201d1e1f2122232227221e22232121231c222526262828232c2c29 +241f1f242a2d2a282625242423252626242324211f1d1e20222221212021 +23282c261e1f251d242120291d1828251f1e212526262822212225282926 +232c27262a2d2a282826282a2b2b28262429282624242628292624252a29 +232223222426242424282b231e2725222220292429251e2029241a1c2023 +221e1a17171a1a1a191a1d2125202222232322222222211f1e1e1f201f1d +1b1a1b1e1d19171f1a1c22252220221b21241f1d1f1f1b1f201f201f1c1b +1a1d1d1e1e1e1d1c1b241e1b1a1d1f1f1d1e1b1b1b2020201b1c1f231f20 +1f201a1a17161718191b1c171c2020263236353b393636373c3f413a4041 +3c3e474744494d504e4f525b6494afc56e70654c301d130f120e0e11100d +0b0d140d0b0e0f0a0a0c0f0d19233461714d202d4c627b61252d3c4d6959 +2720383a53412b232f3d413c211e293c3c2a2328343b3625223138342622 +29373526222b5270add1e28a08170c12140f0c0f0f0b0d1213110f0e0d0c +13121111100f0d0c0f1010101113110d0f1010100e0e0f100a0a0c0b0a0a +0b0c0e0e0e0e0e0e0e0f1112121211110f0f0e100e0909101310100e0c0a +0b0d10121513100e0f0e0c0b12100f0d0c0c0f110c0c0b0a0a0909090909 +0a0b0c0d0e0f080b0d0e0c0c0d0e0d0b07090a0b0a070e0c0b0b0d0c0804 +13120c0b15140e1108150f0a110c06150e0e0c0d0e0f0e0e100b0a0e110f +0f1105090c0a0a0c0b060f0f0c070404090f14130f0d0c0b0b0a0c0d0d0b +0a0b0a080a0b0e10100f0e0d0b0d12161008070f09110d0d14080313100a +060a0e0f0d0f0a09090c0f100d0a110c0a0e110e0c0c0b0d0f10100d0b09 +0e0d0b09090b0d0e0a080c11120f0e110e100f0c09090b100b090f0d0a09 +040d080d0b0608110f05070b100f0d0908090c0c0c0b090b0e110c0c0b0d +0c0b0b0b0b0a08070708090b0e0e0b0c0d0c08050b06050c0f0a080b080f +110c080b0b070b0c0c0d0d0d0c0b0b0b0c0c0c0b0a08110c0708090d0b09 +09060306080b0806040a0b0a080a08070b0a0908090a09090408090a101b +1f1b211e1b1b1f24292b262e2f2a2e37393337393a3936384047748da243 +4744311d110e0d14100f120f09080b110a080a090303070f0f202b3d6b7a +552833526881672b3242536f5d2d243c3e55412b23313f433e2320293c3c +2a2126343b34231e2d322e201c2635352724326081bfe0f096111e121413 +0e090c0b07080c100e0c0b0c0b1312111112110f0c080606060a0c0a0709 +0c0c0c0d0d0e0f09080c090808090a0c0c0c0a0a0a0a0a0e0e0e0e0e0e0d +0d0c0f0d08080f120f0c0a0a08080a0c0e110f0c0a0a0907040805040203 +04070b0606060506050505050506090a0b0a0b0205070808080b0c0b0805 +04060706020907060709080400080701030f0e0a0d04130d080f0a04120c +0b08090a0909070a05030507050507000407060608070209090601000002 +080d0b080605040403050606040304020003040406040100000000040803 +000004000a06070f0500100d0702040809060a060505080a0b06030a0506 +0a0e0b0909040408070904040007040400020206070605080d0c08050705 +0707020200030907040d090805030a070a0a02060d0c0204080c09060201 +000303030201010708030103020403030303020000000001040706040506 +0400000200000104000003020b0d060304040004050607090a0906010000 +00000100010b0806060a0d0d0a0803010306080603020709070607060306 +0403030405050300010100020b0f0c1413101013181c1e1b22231e212a2e +292d2e2d28201f23274e677897938d734f3d3a303131302e2e2c2d2c2a29 +2a2b2926201e2526394350597e7246313e566f7a56323848566a5933353c +48514b372e3a494e3e34313b4643362c3541453a32363e42383134424943 +3a35466491b8d7cf561a2421212627232123222323232020212022212123 +26262622222323242423242324242424262626261f232320212424222324 +242423232527262626262626262625282828282726252625252424252526 +2523232222232324212122242525221f2624232326282727262322222424 +232225242322222222232422232122232326242627282624252529242221 +222323222222222222222222212121222324242424232322222323242523 +22232527262622272824232526241f232724242528262829272726252221 +252423222222222323232322222123212422242224242424252525242423 +232323232223212222212222222424252525272625252727262527262424 +262624232324242523222221222120232526252421222223232424232323 +23222223232321222223222121202020202020212121212020212323211f +22212120202121221d1e20212221202022222222222424221f2020212120 +201f1f2020201f1e20232122222121202020222123201f1e20212321211f +201f2020212122212220201e1e1c1c1d1d1c1d1d1e1d1d1f232b32363a39 +3939393b3d3f404041414244484b524e5855585e72a4c3bfbf6e6c664e2a +1b1913141517151210111213100d0c0d0e0f0d0e070f16273b716b3b2433 +4b66714d2c2f3f4d614e2929303c453f2b222e3d423228252f3a382b212a +36372c242830332922223037312825395c8bb4d5cd5010150f0c0f100f0e +100d0e0f0f0e0e0f11100f0f0f10100d0d0f10101111100f0e0f0f0f0f0d +0d0d0d090e0d0b0c0f0f0d0e0f0f100f0f11131111111111111111101010 +10100f0e0d1110100f0f1010111010100f0f1010120f0f101112100d0a0e +0c0b0b0c0e0d0e0e0e0d0d0e0f0e0d1110100e0e0d0c0d0e0e0e0e0d0e0e +0e0c0e0f0f0c0a0b0b12100e0d0d0e0e0d0d0d0d0d0d0d0e0d0e0d0e0f0e +0f1010100f0f0d0d0e0e0f0d0b0a0a0c0e0d0d080d0e0a090b0c0c0a0e0f +0c0a0b0c0a0c0d0d0d0e0d0d0c11100f0e0e0e0e0f0f0f0f0e0d0c0b0c0c +0d0c0c0b0b0b0c0d0d0d0c0c0b0b0b09090a0b0c0e0e0f0e0e0e0c0c0b0b +0b0e0d0c0c0e0e0d0c0e0d0b0b0d0d0b0a0b0c0c0d0e0d0d0c0d0c0b0b0d +0e0d0c0c0d0d0e0e0c0c0b0b0b0b0d0d0e0e0e0c0d0d0e0e0e0e0d0d0d0d +0d0d0d0c0d0d0c0c0d0f0f0d0b0d0c0c0b0b0c0c0d090a0c0d0e0d0c0b0d +0d0d0d0d0c0c0d0c0d0d0e0e0d0d0c0c0d0d0c0b0c0e0f0e0e0e0d0c0b0b +0b0d0d0e0c090a0a0d0e0e0c0c0b0c0b0d0c0e0d0e0d0d0b0b0c0d0d0b0b +0a090a0b0a080b0f141b1e22222222232527292a2d2e2e2f3135373b353d +3b3c4152839f9a96424345341811120f1011100e0e0d10110b09090a0c0c +0806080210192f437a73432d39516b76502e32425062522a2b323c45412d +26324146362c272f3a36271d2834362b21252d30241d1e2c332d24254067 +97c2e2da5a18180d07090a08080c0a0d0e0e0c0c0d0e0e0d0d0e1212100c +0909090a0b0a0a0b0c0e0e0e101010100b0d0f0a0b0e0c0a090a0a090808 +080c0c0c0c0c0c0c0c0c0b0c0c0c0c0b0a0b100f0f0e0e0d0d0e0b0a0a09 +080909080505060a0c0b0a090e0c0b0b0b0d0c0a0a090a0c100e0b080805 +0203070a0e10100d0d0a0a09090a080a0b0b0b090c0a0c07070608090b0a +0a0a0a0a080807080a0c0a0b090a0907070808080809090a09070606080a +0909070c0d09080a0b0a070b0d0a090a0b090b0c0c0c0c0b0a070a090807 +0505050808080807080707090c0c0c0e0e0e0e0c0d0d0b0a0a0707090a0a +0a0907050303030305080a0c0c0c0a060705090708050906060408060605 +090a0a0b0b0a0a090a0908070b0a090a090a0c0b0d0a0c090b090b0a0c0b +0d0d0b0c0c0d0d0a0a090907070707060706060305040808060408070706 +0809090a080b0d0e0f0c0b080a0a0a080808080806070708080707060809 +090b0a0c0e0e08070706070606080a0c0d0b0b0b0c0c0b08070606060607 +07080808080706070a0a0a090908080607040304080c1314161414141517 +191b1d1f20202123272c332e322a24212b566d6560 +currentdict /inputf undef +currentdict /picstr undef +currentdict /rpicstr undef +currentdict /gpicstr undef +currentdict /bpicstr undef +grestore +showpage +%%Trailer + +%%EndDocument + @endspecial 1359 2189 a Fq(Figure)27 b(7:)37 b(Wiring)27 +b(of)g(the)h(STK500)515 2534 y(The)f(follo)n(wing)g(picture)g(sho)n(ws) +g(the)g(alternate)g(wiring)g(where)g(LED1)h(is)f(connected)g(but)515 +2634 y(SW2)g(is)h(not:)530 4249 y @beginspecial 196 @llx +337 @lly 416 @urx 454 @ury 3401 @rwi @setspecial +%%BeginDocument: largedemo-wiring2.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: pnmtops +%%Title: noname.ps +%%Pages: 1 +%%BoundingBox: 196 337 416 454 +%%EndComments +%%Page: Image0 1 +/readstring { + currentfile exch readhexstring pop +} bind def +/rpicstr 548 string def +/gpicstr 548 string def +/bpicstr 548 string def +%%EndProlog +%%Page: 1 1 +gsave +196.4 337.6 translate +219.2 116.8 scale +548 292 8 +[ 548 0 0 -292 0 292 ] +{ rpicstr readstring } +{ gpicstr readstring } +{ bpicstr readstring } +true 3 +colorimage +9ea4968d6b332a195f6854485145271528657550321f1b262327273d4d50 +4a242a1156acc946235892cedc811a142d18284185cfba631c4ac75e1639 +85acb0a9a7949f9e9daaa7a69da8acacb0a9a7af813b1822211c21212120 +3d759da29fa299989694918e8b8a827b7c795a2f212c21201f20262f383e +6563615e5d5d5e5c6447664e76aeb59fa59aaf853b2d322622241d252b2b +3c3c3c6d7a79818c9fa9c4b6acbdd4d6cec09039140d0b1920222a4dafd6 +dabac6bbc0b9c7c4b5cbe3d1dadbdad9d8d8d7d6d8d8d8d8d8d8d8d8d2cf +c9c0b5b1b1b5b0afacacadadababa78b5a313924322c335746242f30242e +4d627badbeb5b79db6c1c5bcae9a82776f716b66636263645d615d585d65 +5e525e59595a525a5c57626a6f7b8b949eacb0b1b4b7bcc1cacfcdced0d0 +cdc4b9ad8e837b746e6861534b40383028231f212e32332f2b2a32392921 +55959994a3a9a9a4abc1d3cec4b68f4a0b090c0719101300061c38383d60 +5a3d29242d302c26386466463779495c7a8a8f9a8472867473818a98aba4 +95abc5969fafbf9f8059443e545c3b231d131a1d21252b2e2f322f321f0f +1d1c10150f1a165a1e0816150d1308000b3079bfe6f6f4fff9f1c7323c3f +3c4522211408101b211e21231a0f151718191d21232415191a1f17249dad +b0c1bec3d1c7c2d0c0bfc1bebebbb8b5bab8b8babec1c2c2c0bdbab7b7ba +bec0bbbab9b6b4b4b9bcbcbcbcbbbbb9b7b4b4b4b9babbbab9b8bebcbcbb +bbb9b8b3b4b3b7bf707c7579653b3c36808d74646856331e2f6a79543320 +1a2523272a425159532b271269caeb63325e97d6f29f3d35462c3a5397e2 +cd7e3c72f38f4564a9c7c2bec2b6c1c0becbc7c7bbc7c7c6c7beb7be8942 +1f29282328282827447ca4a9a6aaa1a19e9c999693928a838583643a2c37 +2c2b2a2b313a42486f6d6b6867676869775c7d648ec5ccb4b7a9b78b3a2a +2c1f1b21232a261c1b1b246b96a5aeb1af9d9567413a3b3a404f4917121b +1c241f21335ec2edf5d9e7e0e5dfece8d6ebffebededecebeaeae9e8eaea +eaeaeaeaeaeae5e2dcd3cac6c8ccc7c6c5c5c6c6c4c1b799663d422e3d37 +4266573843483c455b7394cfe8e0dbb8c0c0bcb0a1927f6e56504944403e +41413a3e3b373c4440343d38383830383c37444d5360737d889bacb3b8bd +c2ccd4dbd8d9d8d7d1c7bab4a5a29d9c9ea4a8adb8c1cbd5e0e8ebedeceb +ebe8e3e0deddbea6c6f2e3ced1cdc9c4cce4f1ede2e5d7b090a1a89d9c8e +92694c444946538081613b2b2b2f2f324b77724d3f90819798a8c9ddbca0 +a6929ca7a1abc3c3b8bdad4c190c1d17231a111532422a18160e1013171d +252c32352a2c14040d0c030a071719622c192b2e3045555b6984afddecf4 +f5fff9ebb112171c243b21281e0e101517161d26231818161617191e2023 +141c1e282132aeb6a4a79e9fa69b92a39798999995908c898f8f8f919598 +99999794918e8e919599969796938f8f91949292908f8c8a88888c8f9293 +9493908f93918f8e8c8a87848b8c90983c494c584f2e3c3c8f9f89797a66 +4127356d7c573724202b2b2f31485a605a353a2678d5f7714574ade9ffa7 +433a4b354661a5f0db89477afc964d6db7d8d6d3ddd2e4e6e7f4eee8d7dc +d8d5d7cfced1964c2933322d323232314e86aeb3b0b5aeb0b1afaeabaaa9 +9f96968f6e40323b3231303137404b5178767572717174727e61856f9ad3 +dec7cbbcca9b4835382f3c40312d231926304893becacdccc8b3a97a534c +504f56635b271f24242a2427426ed3fdffebfaf2f8f2fef8e7fafff8fcfb +faf9f8f8f7f6f8f8f8f8f8f8f8f8f4f1ebe2dbd7daded9d8d9d9dadad8d8 +d1b48053533a43393f5f4f2d373a2e3b5c7a99d8f4f1f5d5e3dfcfb4916e +4c35201d1b17181a1e211e221f181d231c101a15191c151f251e2a2f2e35 +43474e555552575b5e667179787d83878580766e5552515660686e70777e +85909aa3acb2bec2c5c6c7c9ced2baa5ccfaf0dce1e5f2edebf7fcf2ecef +e5be9faeb7acb09d986c544e5149517b7c61453b4041403e527e805d529e +8295a0b0cde5d3c2d5c4c8cecaccdfd7cbd3cf7d584f563f35232027424f +34201e151b1e222831373b3c30301c0c17160a12142a38906b6788a2c2e4 +efeaedf6ffffffffedf4f9f9d7414344465331301f0e10191f212b353227 +292624242729292b1c23272f2b3bb8b58e84756d6f5c5262595d65656763 +5d585a5757595d6061615f5c595656595d605f5f5e5b5a5a5d6060606160 +5e5c5c59595a5b5c5d5c58575c5a565554524f4c5353575fa7a19aa16e20 +213a94361c004084221b205868472c1c18201e1e1e36484c4d313e1b4eab +c74429416a7149150408192e25365f7d49131c2bc95d133887b2b6ae9390 +a69b90a59c7d87a4aca19f9479622a19202d2520241f25191825271b1315 +1a191a18181514121610151e1e141b2928262522222325261a191a191a18 +19151205150d2d989d866756654e28282d27282c2422282e3c3d3fa1a394 +9aa5c1aab1acafc5ddded4c7a5481e1612192026285dc6edd4aabac9cab5 +c9d7bab0cad4dadbdadad9d8d7d7d8d8d8d8d8d8d8d8d8d6d2cabfb8b3b1 +b0b0adaeaeadabaaa9884d2d3229322d4c442b2b291e2f3b4a86b2d1d0ca +c9a6c1c0b7aa97826f68676c6c6b6b6a69696c6a6563655c58615f5a5b5d +5b5f605b565f6673858c94a19ca9bdcbd0cfcecddad8d8dce3e9ece9d0c6 +bbac9e8d7b6a6256483d36323131303032312e2e32393f3459888b8ea3aa +b1a8a9bccfd2cfc7a8601202020013121408072e433e375153392b323e3c +322b3f5c5c3f1e391657605257a37f788c9d8887838ba0a49bb0c3aa93b1 +b6ab8266443c5158381e191116191b1c1e1d1c1f2028190e17160c0d100c +1c86571b0b0c0a0c0400031e5ca1d2f0f1fefcfee6742b363e331c1d0f0a +131c22231e1a130e161d1f1c1715191d28211815161d84b9adbdc2c2c9c9 +c7cbc3c1c1bebebcbab8bcbab9bbbec1c1c1c5c3c0bdbcbdbfc0bebbb9b6 +b5b4b7b9bababababbb9b8b6b4b3b7b8b8b8b8b7bfbebfbfc0bebdb8b4b3 +b7bf79797a8d68283557b55b3c1c57952e24275d6c4b2d1d171f1e1e213b +4c5556383b1c61c9e96138476f795f3327293242374871905c2e3c53f58e +4263abcdc8c2b1b3c8bdb1c6bc9ea6c3c9bdb6a98b71342027342c272b26 +2c201f2c2e221a1b222221201f1d1a1a1c181c28261f243431312e2d2b2e +2e302323222322222122231a292343afb49b79656d542726272021292726 +231e1e1d2ea3bfbfc3c4c89477553b3c403f44535a231a2320221d25316e +d9ffefc9dbecefdbeefbdbd0e6eeededececebeae9e9eaeaeaeaeaeaeaea +ebe9e5ddd4cdcac8c7c7c6c7c7c6c4c0b99659393e333d3b5b553c3f3f36 +4a525e9acff6faf3ecbecbbdab988676685d4c4b4b49494947474a4a4545 +463e3b44423d3d3f3c40433e3b454d5b7077809193a3b7c7d0d3d3d4e1de +dee1e8eeeff0e2ded3cac1b9b3b0b9bdc1c6cdd5dbe0e0e3e8ebeae9e9e8 +e1c5d7f1e0d0d8d7d7cbcedfededeaefeac1969ca29da096957349524f42 +47677052353135332f314e6d6445234c478a7b6e8ee3b9a9b1bfb3ae9b9e +b8c0c0c5b0651212141e1f1e0b0f2c3c2413120c0e0f1114181b1f1f1b1f +0f040d0c060b100f2392662d1f232a3e4f58617294bfdef2f6fffef8d357 +061326261b241710111618191a1c1c17191c1d1a1312161c27241c1e202b +95c2a0a5a29ea09d9a9e9a9a999995918e8c91919092959898989c9a9794 +9394969999989693908f8f9190908e8e8c8a898a8c8e909191918f8e9493 +9292918f8c898b8c90984546516c521b345dc46d513169a53c2d2d606f4e +31211d2526262841555c5d424e3070d4f56f4b5d858c6d3b2d2e374b4356 +7f9e6a39475bfe954a6cb9dedcdacbcfebe3dcefe3bfc2d8dbcbc6bca184 +402a313e36313530362a2936382c24272f3133333232302f322b2c343125 +293838373533323437392c2c2d2d2d2c2e2b2a1f322e50bdc6ae8d788064 +3533333040463629201e283450cae7e2e1e0e2ab8d68505055555b686e34 +282c2929242d407eeaffffdbeeffffeeffffecdff4fbfcfbfafaf9f8f7f7 +f8f8f8f8f8f8f8f8faf8f4ece5dedcdad9d9dadbdbdad8d7d3b1734f4e3d +433c584d323432283b4a5fa1d7ffffffffd6e4d2b796725034271d202223 +262a2b2c31332e2b2a221d26241f2327272c312c262c2f3745484d55464f +6170767575758484868d969ea2a28e8a87827f7a747175787a7e88929ca7 +b1b9c0c6c9ccd3d7d6c0d6f5e7dce6ecfcf1e9f2f7f4f5fbfad1a3a8aea9 +b1a39b79555e5b4b47656e5641434a48403d55746f55365b4c8d847993ed +cdc9ddefddd5c1bfd4d5d2dad09452544f48332a1c233d4a2f1b1a13191a +1c1f242628272124170c15140a10181e3fbca1777693b9dbe6e7e7e6f3ff +fffff2f8fdfff383323b48402b2c1a10141a202428292b26282c2b27211d +1f242f2b25252a349fc18d837b6e6860595d5c5f656567645f5b5c59585a +5d60606064625f5c5b5c5e6062605e5b5b5a5b5d5e5e5d5d5e5c5b5b5959 +595a5a5a57565d5c5959595754515353575fa2a79e98662c191961647b7c +6f610a101d4d5d432d221e201e19183446495342351a429b971122333769 +420f21220f1f1c505f8b8121103fcf5e133a91c1c6bc947f94887697a084 +8ca4ada39a7b4c2c0d1a2a291e242d26322e2a272321262d242425252624 +252331292525292a2d30262527272825252327272b2c2d2b2b2727291c19 +18a19974422b302a232b27272c32292029353c3b54c7b4a3b2bac58aa0aa +b8d3e8e6dbcdbb54231b15171e281c3f95e2cdb3acb8a29db3b8a6b8d9d8 +dadbdadad9d8d8d8d9d9d9d9d9d9d9d9dbdad8d5cec6bcb6b1b0afb0afaf +adadaa8a45322d2e3337583721322921414466a3cad0bec3cfbac2b39f90 +806f64646366686a6a6766655d6763637169606b69626061696660576567 +626572798498a6adb1b4b5bdc6cfdbdadfe4e9ececebfdf9f2eadfd1c1b3 +a093817167605f523e36342f29252527372f486770829faab2a7a2b4cbd8 +dbd5bf781d00000005091415003c4a454151513b3749574f423c38525244 +2d351f76b78952bf978c879088827c869ea49ca8c0c288adacb68b78493f +5156351d1a1417181818181514151b251d14151006060b021b8d72300f06 +0d0e0803040f3f7bb6e3edf7fcffffc63b2f3d251c1c0f0e171c21231d1b +232f262b2a1f1313202d2b2c2b22231154bfb0b9c0c1c2cacec5c5c2c1bd +bdbcbcbbbdbababbbec1c1c1c4c3c1bebcbbbbbabfbdb9b7b8b8b8b7b9b9 +bbbabab9bab9b5b4b5b5b7b7b7b7bebebfc0c2c1bebab3b2b5bc747f7e85 +61342d3682899b9886721619245261472e231d1f1e191b394a525c49321b +55b9bb31333b3c71582d444328332e62719e943c3067fb8f4265b5dcd8d0 +b2a2b6ab99bac1a5abc3cabeb1905e3b17213130252b342d3935312e2a28 +2d332a2b2b2c2b2b2a2a36302b2d3033343a2d2e2e302f2e2c2c2e303134 +33333131363a2e2d2eb7ae89543a3b312529212026302d21242722234ad0 +d4cbd3cbbb625540373e424045566c2918211d1b19252550a8f9e8d2cddb +c7c2d6dcc7d8f5f2ededececebeaeaeaebebebebebebebebeeedebe8e3db +d1cbc8c7c6c7c8c8c6c3bb9a533e3a3b4045674832463f395b5f82c1eef8 +eaeaefcdc6aa8c796959525249494b4c4c4b4948404b4749564f46515049 +494a514e49404f514f53616974878f959ca1a7b1bfcadbdde3e9f0f3f3f2 +fffffaf3ebe1d8d3cac9c3bebec1c5ccd4dde3e8ecedeeeef3dce0e8dad7 +e3e3e5d5d0dbe7ecedf2f7d19f9ba4a3a99d947a3b574b3d40545a3f2e37 +3d362f34426056422a4047a1c89c84ffd4c4b4bbb8a99499b3c0c1c1b287 +12170d231921050926361f10130f1110101012131414141b160f14140f12 +1b132ea083421e192a3d505c62637aa0c8edf7fffffdf3aa160c25181920 +1412151617191a1d2b37282a281d0f101d2c2a2f2f2b2d1f65c7a5a2a29f +999da0999c9b99989491908f92919192959898989b9a9895939292939a98 +949290908f8e8e8e8d8c8c8b8a8b8c8c8e8e8e8e8e8e9393929393928f8d +88898c93404c55644b272c3c919bb0ad988224222a55644a322723252621 +223f53596353452f64c4c73e4550528466354a482d3c3a707faca2473b6f +ff964a6ec3edece8ccc0dbd1c3e4eac8c8d8dccfc3a37450232b3b3a2f35 +3e37433f3b383432373f383b3b3e3e3e3e3d4a423b383a3a3a3c33333435 +3735363538393d3f3f3e3d3b3d4138383bc5c19c684d4d4134362d304048 +392521272f3b6cf7faeef2e5d47a6a564d545a585e6c7f3a262d2824202e +3460b9fffbe4e0eedad5e9ecd8e7fffffcfbfafaf9f8f8f8f9f9f9f9f9f9 +f9f9fdfcfaf7f4ece2dcdad9d8d9dcdcdadad5b46d544a4446456240283b +332c4e5886cbfafff7f9fedbd1ad86674a30202024292d3234363738323d +393a453e35403c35393c4544413844443e3b4547505b59595d5d60676f76 +8382858b91939393a8a9a7a4a19a908a807e7976797e8693a4b1b8bec2c6 +cccfdac9d4e3dadcecf4fff6e7eaf2f5fbffffe3ada7acaab2a79f864b6a +5d4c48595f4a3f4d564c424144615f503f524fa8d8ab8dffe7dfdbe5e0d0 +babad0d5d3d5d3b34e56475033341c2039452b191b161b1b1b1b1e1e1e1c +1c231e1619170e101b1b3fc1b7846f80b2d3e3eaeadfe2f0fafff9fbffff +ffd0413647322a2b1a15181a1f2225293844373a362a1d1b263432363832 +37286fc993827c716362625a5e6065646664615e5d59595a5d6060606362 +605d5b5a5a5a63615d5b5c5c5b5a5b5b5b5a5b5a5a5a5858575758585656 +5c5c595a5b5a57545151545ba5ad9f8e593219146d726285866b2a191d44 +5744302725221e161534444450462f2150b39a0b383a499a7d2c1e1e1628 +276a7dcbe57e1747cf5c0f3a98ced4c9ba808a87656f7d70a1a4a6ab9d6c +3e3522292922202b2f271f25272423272c2e26272a292b292b292a282723 +2727241c232328282c2a2c29272629292b282a2722281d1c1092916a4129 +2825282b222a2a302a1e2e3c383c84c1a3a0bfb69967a0b2c8e3f0eadfd2 +d05c221c18181f2d262b66d6d9d5b7b5bdb1b7b1a8c5e0cfdadbdbdadad9 +d9d8dadadadadadadadad8d8d8dad9d4cbc4b7b5b2b1afb0afb1ad985442 +2f333845412d2d2b2a33404d8aa5b7b0a4b1bfb4ad99847e766b666c6967 +666365696d6f6c8684808d866e6863595963858277695c5e56555a58596b +7d8c99a3aab0b7bdc0c6d0d9dee0e5ebf1f5f8fcfefaf5f0dfd3c3b2a196 +8d7b5a4a433b312b25242d2a394a5369828b9b9696a9c3d4d9d4c5882c02 +00000000141e0039464c515e513e41535d50494c3f594d372f351858847d +27aebfa49a8a7a778395a9aa9b9db9d18c9eabb8988a5949555736201e19 +1a1a1b1b1b1a191a1b25231c18130a050c0f1c5f5339210a0c0b09090808 +275b94d2e5eff7fffff9832d3227241e19151d1c1d1f1f26405e746c5637 +1e18243260707c6a572031babfb4b7c2c0c7cfc3c6c2c0bbbbbcbebfbbb9 +b9bbbfc2c3c3c1c1c1c0bebcbab9c0bbb9b8b9bbb9b8bbbabbbab9b8b9b8 +b6b5b5b4b6b7b8b8bcbcbebec0bebab6afadb0b677857f7b543c2d338e97 +82a19d7c362225495b48312824211e161839484d594d2c2463d1be2b4942 +4ea2934a413f2f3c397c8fdef899376ffb8d3e65bce9e6ddd8a4aeaa8792 +9e92c3c4c5c8b78252442c3030292732362e262c2e2b2a2e33352c2d2d2f +2e2f2e2e2d2e2a292b2e2924282a2d2f303130302b2d2d2f2f2e2e2d2c37 +2b2e23a5a67c5238332c2b2b1f26272e2c1d2830232c85d1c5c4d7b67b27 +41363840423e45567d2d111b1c1a17272d3c79edf4f4d8d8e2d6dad4c7e5 +fbe9edededececebebeaececececececececebebebedeee9e0d9ceccc9c8 +c8c9c8c7bea862513d42475552414141424d5c6cadcbe1daced5d7bfaa89 +6c61584e4e55514d4c4c4d505457546e6f6b7871595552484a547572695a +4e504b4b5150515d636c7c88939da8b0b7c1cfd9e0e5ebeef0f1f6f9fbfb +f8f7ede9e1d7cdc8c4c8cad2d7dce1e7eaebf0e2e2e2d9dde8e3e8dad5dd +e8ece9ebf4dbaaa0abaaac9e98822f53443f495b513e3644473d3b474562 +4e352d424284968f57eaf8d6c1b1aaa19ba8bec6c2bab6a225120d1e151f +090b24301c1017141414151515171717141b1c1715141010181d2a6d6045 +2b1a28384d5e635c6988b0e4f7fdfffef8e0600d1a191f1e1c1618131215 +19264764766b54351b15213160738071612d3fc2b69f9da1989da3979c9b +989693918f919090909296999a9a9898989795939190999692919192908f +908f8d8c8b8a898a8d8d8e8d8d8e8f8f91919191918f8b898484878d4354 +565a3e312c389da997b6af8c442b284c5e4b352c2a27261e1f3f51546057 +3f3772dcca385b5764b5a15247443445458a9decffa44277ff94466ecafa +faf5f4c4d2d2b4bcc7b5dfdbd9d8c8976a59383a3a33313c403830363835 +34383d3f38393c3d3f3f41413e3e393534342d272e30333539393b3a3637 +393b3b3a3a39353e343a31b4b990664b453c3a372a343c43382228343246 +a4f5eae6f3d09541594e515b5d585f6e913f2129282622333d4c8afdffff +ebebf5e9ede7d9f4fff8fcfbfbfafaf9f9f8fafafafafafafafafafafafc +fffaf1eae0dedbdadcdddcded8c27c644a494a544c38363535425067b3d8 +f1eadee3e1c1a57a54413224202c373c3d3e41494f53526c6c68736c544e +4a40434f7573695d4e4f4541423d3c434246525b6163676a6a6d73797b7e +7f87949aa3a8acadabaaa09e99928e8d8d9498a0a5aab0b7bdc2cec6cdd5 +d2dcecedfcefe4e8f0f6f8fdffedb8abb1b0b1a6a592446a595156645b4a +47575c504a4e435f534242554e91aaa365f5fff1e8dad0c7c1c9dbdcd3cc +d3cc5d4f4850373b24243942291a1f1b1e1e1f1f212222201c24241e1c18 +0e0c162037888c7f7279a6c7dcecf0e0dae5effffffefffffffe88363c33 +332a251b1e181a1e233051708579624226202a39687a89796a364ac4a582 +7a766463645860606462626461605b58585a5e6162626060605f5d5b5958 +625f5b5a5d5e5c5b5d5a5b585956585859595756575857575a5a58585957 +53504d4c4f55b1a89e99511e174a913300013f6611011a3d55472f26261f +1e171634423e473b2f2258d1c22d513cb0e9da803315192f617a9ee7e9cd +413ccc580a389ad3dacec792a6aa837d7d6a9fa2a5a89c75504b1920242a +312f28262c30302b2929251e2727292829282827252b2f2d2f32312a2a29 +292727252625312f2e2c2d2c2e2e282529241b83a5854a2f261d1d252536 +2c2d2c22353c2e46b8a494a2bca06f72b1c4daeff6eee5dbdf66281e1f22 +2630282e65dad4d3b5bed4afb5c7bab6ced4dadbdbdadadadad9dadadada +dadadadad8d7d7dadddcd5d1c9c3bbb6b3b2afb0adaa6e5334363d4c2722 +321e2b3b3371bbc5cec5cce7d9b290827677766f6d706c68686d788697a1 +b9cdd3c7ac7f6060746a7894dadfd9cb9fa29c94886f5a5f626b7179838e +9aa2b3b9c2c7cbd2e0ebe3e5eef4fafcfffefffaf2e8dccdc1b18d7e7162 +53473d363632373b3e4950546f74809abaccd5cfc69a3c07000000001423 +002f3947505745393a44443739493e503e2c2a2918517d860372c69bc0c3 +837f93a7aca99f9cb1d1a28daeb5aa9a72575b56331e1d15171719191a1a +1a1a15191f1d19191913141d1f3732322814050300040501163e72b4d7e8 +f5fbffffd93c1f2d2c1e261b1e1b1a1b1b24405f6d61482d1a161f283e4d +564b410f0388cfb3b0c0c2c4ccc6c4c0beb9bababebeb9b7b8bbc0c4c6c6 +c2c3c4c5c4c2bfbebbb9b9babbbdbdbdc1bfbdbab9b7b7b6b7b6b7b6b7b8 +bababdbdbebebebbb6b2afacafb4868281894c282b68b2581b1e56781d0a +2242594b3027251e1e171939464750422e256bf1e64d6244b6f4f09e5838 +3543738cb0fafce86164f8893963beeeece2e6b6c9d0a8a2a08cc2c5c4c5 +b58b645c2124282e35332c2a3034342f2d2d29222b2b2b2c2b2b2a2a272f +31313237342f2d2e2c2c2a2a2929333330302f3030322f2f33322b94b797 +5b3e3326232725342b2c2b202c2f2140c3bcb7bfc389351836343a403f3d +485d8a33111a1e201b282f3e76efeef0d6e1f9d4d8ead9d6e9eeedededec +ecececebececececececececebeaeaedf0efeae6ded8d2cdcac9c8c6c1bc +7e6444474f5f3a36483645564e91e6f2fbeff1ffe8b5866b5655544c4d55 +5956565b65758690a8bdc3b79f7253556b64728dd4d9d3c59b9f9991886f +5b584c4e565f6a78858ea1abb7bec3cddce8dfe3e9eff3f7f9fbfffffcf7 +eee4dbdad0d4d3d4d9dfe4e8eceaebe8e2e4e4d9e2dbdee8f2f1e8e6f3e7 +b4a1aaababa09d8c37513f404a554c42414b4840475848553f2e3244548c +9ba032a7f2bcd3daafabadb7bfc3c6bfb8b14b0d1414131a15112129170e +161214141313141414140f1115110c0c0d090b171c3835362e201c2b4054 +5e585d7498d2f1fcfffcfaf6b91c071d221a241817110f11162343636f60 +462b18141e273f505a524a19108dc7a199a39e9ba09a9a99969492908f90 +8e8e8f92979b9d9d999a9b9c9b999695929190919292929293928f8d8a88 +88888e8e8e8d8e8f8f8f92929191918e89858483868b53515768361d2a70 +c16a2e306686291325455c4e342b2b24261f203f4f4e574c40387afcf25a +7459ccfffea65e3c394c7f9abefffff36c6cff90416cccfffffaffd8eff7 +d4cecab1e0dbd8d7c9a07c702e2d31373e3c3533393d3d383636322b3636 +38383a3a3939363b3d3a393b393334343332313032323f3e3c3b3c3c3d3e +39383d3d3aa4cbab6f51443731332f413b3a33253138335ae3ded7dddfa3 +4e32524f565d5d5963759f4421282c2d29373f4d86ffffffe9f4ffe7ebfd +ebe5fafdfcfbfbfafafafaf9fafafafafafafafafaf9f9fcfffefbf7efe9 +e4dfdcdbdcdddad49576514e515b342d3c293a4d458eefffffffffffebac +6d492d272722273a4b52545b677b8e98b2c7cdc1a87b5a5b6e667694dee5 +e1d3a9aaa2988a6d56503f3e41464c51585963626563616570818690979d +a2a6abaeb5babdbebebab6b09a9796989ea6b0b8c3c8d0d5d9e0e4dee7e0 +dee8f3f7f6f8fffbc4abb0afb0a8ad9f4f6a5552586054494b5551454855 +3f4e433a45575f9ab3b944b9ffddfdffd6d0d2d9dddad7d2d4d88048504a +3e3d342d393d25181e191d1d1d1d20202020191c201b1615110a0c1b274d +58666a728eafc8e1eee3dde0e9ffffffffffffffde452b3a3a2931211e19 +17191d2b4c6e7c6e5438231f262d4457635a53221990ba89797b6c63635b +5e6062606160615f5956575a5f6365656162636463615e5d5c5d5c5d5c5d +5d5d5f5b5b56565254545a5a5857585958585b5b58585855504c4d4b4e53 +aaa9a19748240c35766157413f2906161e3e5d5231242720231f1d384543 +47332f225bd2bc25525695e7ee99311b2b2b6d759ae3f0d03251cf5b0d3b +9ed6dcd0bb9db0ad929a977b8fa9ada29d906d50121e242c30231f2f2424 +2222262b2a2629292a2a2a2928272b2e2e29242527282d2c2a282828292a +2e2c2a2827282a2b31222a1c1567aa93693d291c1e353b40312a2f2a3732 +2c6ccf9698a4a07d67a1c3d7e9f4f6eee8e0d4652c222124272b232a63d3 +ccc9afbbb1a6c0d0b7b7d3dbdadbdbdbdbdadadadbdbdbdbdbdbdbdbdcda +d9d9dadad8d6d9d4cac2bcb7b0afafb47e5438394345291f2c20323844ae +b2b4b9a8b6d7b8807d7873787975726f6f6f798a9fb9cfdceeedf4e39d53 +435756516a8fecf1ede2dbdacfc5c0b0a8b3aea48d7c7373797d8894a1ad +b6bfc8ccdcdfe5ecf0f5fafcfcfcfffdfaf3eae1d1c3b19c897664554a45 +413d3d3c38384b5a6c86a5bbc9c7c8a94a0a00000000081d001d24333535 +30282627221a2034303529251f192b6fbe990045bf93bbc89a8fa0aba5a1 +a1a2a8c9bf84adb4b5a7845e5850301e1d13161616171615141312101920 +2432403a2e2c2f3c36281d190000000004061229508bbfddf0f8ffffff6f +1f2d2f202b201d1c1c1b17182430211c151111161b1e2524191b23160762 +cab6b1bcc3c4c7c7c2bfbdb9bbbbbebebab8b8bbc0c4c6c6c0c1c3c3c3c0 +bebcb7b9bcbcbcbcbec0c4c2bebbb9b7b7b6b6b6b7b8b8b8b9bac0bfc1c1 +c0bdb7b1b2afb1b57f838587462e22539a867a5e563b101f234361563225 +261f231f203d494c503a2e2571f2e045635e9bf2ffb7563e47427f87acf6 +ffeb5279fb8c3c66c2f1eee4dac1d6d2b7bfba9fb2cbcdbfb8a983611a22 +283034272333282826262a2f2e2a2c2c2d2d2c2b2a292d30312c27282b2c +302f2d2b2b2b2c2d302e2c2a292a2c2d352933262177bba47a4c36252439 +3d4031282c232c262470e2b3b7b5934f132c34343a403d3f4f668132141c +1f221c242a3a74e9e6e6d0ded4cbe3f1d6d4eef5edededededecececeded +ededededededefedececedededebeee9e1d9d3cec9c5c3c690654a4b5558 +3d34443a4d5662d0dee3e6ced2e9bd796b5c525354514f545f646d7e94ae +c4d1e5e4ebda964c3c5356556c92eff6f2e7e0e0d6ccc7bab0b6a5957e6b +6161656975808f9ca7b1bbc3d6dae0e6eaeff4f7f8fcfffffffff7f7f2ef +e7e1dddbdbdbdde4e6e7e8e8e4dcdddee6f0f4f3ebe8f8f7c2a2a8a8a9a3 +9b924e4d363433353937373a37343f4b37362e363f5389d1ffd3448af5b7 +cdddc6bdbabbb4bac8c7bab87a13191111161c12181f110d161215151311 +0e0d0c0d0f0a0d0b050d160e030610272b26212616243446585c5e6982b3 +e0f8fffdfaf8ee50071a231725181312111110152533211b130f0f151a1d +26251c1f2a1f1167c6a99da2a19d9d9e9a989594918f8f908f8f8f92979b +9d9d97989a9a9a9795938e909191919193959795918e8a8888898d8e8e8f +8f8f8e8f9594949493908a878786888c4c545d663123205ba8988d706649 +1c282746645936292c252b2727435253574440387ffdec527573b1ffffbf +5c424b4a8b95bafffff65d81ff93446fd0fffffcf7e3fbfce4ebe4c3d0e4 +e2d1cbbf9b75272b31393d302c3c31312f2f333837333535363638373635 +393c3a332c2d2e2f35363432323235363c3a3836363739393e313c323187 +cdb88e5f49363245494a3b33332a34323989ffd3d6d1ad692d475051575d +5c5c6b7f9543242a2d302c343a4984f7f5f6e3f1e8def6ffeae6fffffcfb +fbfbfbfafafafbfbfbfbfbfbfbfbfefcfbfbfcfcfefcfffaf3ebe5e0ddda +dbdea675544f5554342b372f444e5ad1ebf7fde5e7f5b966472c1c1e282f +3949606c7788a2bed5e2f8f7feeda85e4c62625e79a1fffffffdf6f6e9de +d7c6bbbda6927761534d4a464a4b4f5456595f6882898e929499a0a6aeb6 +c4d0d8dbd9d1bbb0a9a2a1a1a5a9b0bcc6ccd5dad8d3d3d3dbe4eff4f5f9 +ffffd2adaeafb2aeaba465634c46413f403c3e3e3a313a432f30313e4e61 +91daffe9539affd7f5ffebdfdfddd1d0d9d9d2daa94b554a43413f303234 +20171e181d1d1c1b1b1a19191814191a171e241b0d111f3a494d506a7b9e +b7d0ecefe8e4e3f8fffffffffcffff792b383b2a33251c1a1919181c2a3a +2d29201c1a1d20232b2a232834281b6bbd96827d736661605d5f61606160 +615f5a57575a5f6365655f606262625f5d5b5a5c5e5e5c5c5e60605e5a57 +54505252575a5859595957585e5d5b5b5a57514d504e5054a5ada38c4033 +0c1e5c6078514c210f221f40675d311f251e23221f3545484a2d372967ce +ac114269b8f5e0640d0f2016344a73b0d071025ed25e103c9cd1d5c8ba9a +9c8e787f7d7593aeb0a3a7a3774b1a2826252a211e302b2725272828292a +272a2b2b2b2b2a2a2725262728292d322b2b2b2c2e3031322c2c2c2c2c2d +2e2e30252e241b76c5ae803d242336635f4132263330342638abd1a6a097 +786b8ac2d8e9f5f9f2e9e3dbb258312924272a2c313571d9dcd5bcbcc4c9 +e1d8b5bfd8d4dadbdbdbdbdbdbdbdcdcdcdcdcdcdcdcdcdddddbd9d8dadc +dedbd7d3ccc4bcb5b1ae773f383c45302a2b272e343c82dabfacb8b0aaa9 +8672727577797b7d7e78747b90aac3d6e2e8e1cec6a45c374046484a6a8a +eae3e0dbb5b4adaebbc4d2e7ece4d8cec0ac968779797b8799aab2b1bec4 +ced8e0e6eef1eceeeff4f6f4f3f5fcf8ecddcdbaa694807361544e44393c +3f4957688099afb6b6ab581604000000001007050e202220201b17121011 +121b2d2b20100000154159330030a7a1a1a3a59db3beb1aaa69f9fc1d786 +a3b9bab1885c4f483026281f21202121211f1e1c170e1b2a385774715c54 +524f472f191c05060000050f131b35609fcce9f8fdffffc6412831272824 +1d1f1f1a17191815191918191a1916142c28121512130328afbdbbb6bfc5 +c6c7c1c0bebbbdbdbfbebdbbbabcc0c3c4c4bfc0c0c0bfbcb9b7b6bbc2c1 +bcbbbec3c4c2bfbbb9b8b9b9b5b5b6b8b9b9b8b7bfbfc0c1c0bdb8b3b4b2 +b2b67b89877d3f3f223c80859b6e6333192b24456b613220241d2322223a +49515334362c7deed2335574befff78532323c2d465c85c3e38c2286fe8f +3f67c0ece7dcdcc1c2b39ea5a298b6d0d0bfc2bc8d5b222c2a292e252234 +2f2b292b2c2c2d2e2a2a2b2b2b2b2a2a27252628292a2e332c2c2c2d2e30 +31322c2c2c2c2c2d2e2e3028322c2481d4bd8f4c312c3d67614133242c26 +261b36b7ebc3b89b56221c3635383e403d42536965291b23222623293845 +83eff6f2dbdfe7ecfff9d4dcf3ebededededededededeeeeeeeeeeeeeeee +eeefefedecebedeff3f0ece8e3dbd3cbc5c28c524a4f59453f413e484f59 +a1fde9d6dcccbbad7f615a565455595d5f6169798da7c0d3e0e6dfccc6a4 +5c37424b51587597f6f2eee9c3c3bdbecbd6e3f7f7ecddd0bfa78c7a6865 +677285959ea2b4bdc8d2dbe3ebefeef2f8fefffffffffffff9f2ebe5dedc +d9dedee2eceeebeee7e9ededecebeaeaf5ffd2adafaba8a49e996e4a3130 +2624292c2f2e2e3135342f2b2e353b5dabdfd9a76da1fddfc7c5d6cacbcd +bfc0cbc6babea22519170d1518080a141015211e21201e1b191716161a0c +0a0702101f1702020e1e29221c2919262f3c536363657594caedfcfffcfa +f4aa291521191d19111313101014161417171617181815132d291519161a +092daeb3ab9fa0a09e9d999997969391919092929193979a9b9b96979797 +9693908e8b9094938e8d91969795928e8c8b8a8c8a8c8d8f8e8e8d8c9494 +969796938e898987878b49595f5c2a3320448c95ae80713f233228486e64 +36242a232b2a294052585a3e483f8bf9dd3f6688d4ffff8c38364035526a +93d1f1972d8eff964770cefdfbf4f8e2e9ddcbd2cebed6e9e5d4d5d2a572 +2f353332372e2b3d38343234353536373132333335353434312d2e2d2e2e +32373131313236383b3c3636383838393a3a3a313d373393e7d2a45f443d +4d736d4b3829332e332c4cd1ffe1d4b66f3d355150545c5f5c606e807739 +282f2f34333a485291fdffffeff2fbffffffe8eefffdfcfbfbfbfbfbfbfb +fcfcfcfcfcfcfcfcfcfdfdfbfbfafcfefffffdf9f5ede5e0ddda9f615453 +573e3635343d48549cfff7ecf6e4cfb677472c1f1a2134485d6977879eba +d3e8f6fcf7e4debc744f595f626587aaffffffffe0e0d7d8e4ecf7fffdee +e0cfbba1826a544a4447535e63616c6d747a7f848e989ba8b7c9d5dee2df +d4c9c1b9b5b0adacabb2b6bcc9cac9cecdd1d4d8dde5f0f7ffffe1b8b9b6 +b6b5aba97f5a443f322f3233332f2e2c2f2e2a29313d4766aadee4b475a9 +fff8ebeaf7ebefeedcd7ddd5cfdbce5a545243454029262a1f1f29242928 +27252624232223171a1b1c2e3c311b18233343403f5e6f93a8c1e7faf8ec +e3e8fffffffff8ffffd24d333c302e291d1d1d19171a1b1a242523242320 +1b19322e1c2221241533a9a7947f746c63615e6060626362605e5d5a595b +5f6263635e5f5f5f5e5b5856585d62615a595a5f605e5955535052535558 +5759595956555d5d5c5d5c59544f52505054b5aaa0953d26175c982d6417 +5f810e191a3c685d2b161d171b1b172a3c4546252f1658c6b10e21438588 +4c0a07181c231c2c667466101157cd5a0c3692c4c7b9b78c8c9289818094 +a4aaa5a5af9f6e4713242121333020212522252b2923232a2728292b2b2c +2c2b2c27282e302b282a29292a2b2b2a292927292c2e30302f2f2e2e2f29 +1172b895752813254f897a3b2f2135332f1e44dfd4c1aa91656fb5cee8f3 +faf7eddfd7cc934c37332a2f3337334186e0dac8b5b9e0c1ccd7bcb4ccd9 +dadbdbdbdbdbdbdbdcdcdcdcdcdcdcdcd9dcdeddd9d9dcdfd9dbdddedad2 +c7bfb2a66b28373e451d1e3524342c41bae0d4abc8dfc2885e756e747777 +7b868a877986a3bed1d6d4d1c4ab9257253d58353e486d87e3d6d4d4c9ca +c5c3c4bcb6bfe1dad7dbe4e6e0d8cfab80686c7c878b99a3b1bfc9d2d9de +ebe9eaecf0f3f6fbfffffffefcf2e5d6c0ae8f7b6f5d50524b4d4e526077 +94a19ba15c2212030000000d110007222a2e24241d181b201d1c2d342909 +00031f1e3224333b6e9c9db1a7a6c8ded1c3b19d9abce08a94bbb7b58452 +45433231372e2e2f3032323233301e101c2f41698d8d7d776a514837211d +090a00000512100e244386bddff5faffffff6728362e23261e211f181b24 +241a151618191a19191812231e2b1a21171d97c0c3b0b9c8c6c5c2c1c0bf +bfbfc0bfc0bebcbdbfc1c1c0c5c5c4c3c0bdbab8b8bfc5c2bbb8bcc3c3c1 +bebcbababbbcb2b3b5b7b9b8b6b4bbbcbec0c0beb9b4b3b0b1b48d888786 +3c342f7dbe528734769318221f416c612c171c161b1b1a2f404e4f2c2e1b +6ee6d730344e8b93632b2c3b383a303e7887792b317ff98b3b61b6dfd9cd +d9b3b2b7afa7a5b7c7ccc5c1cab884571b282525373424252926292f2d27 +272d28292a2c2c2d2d2c2d28292f312c292b2a2a2b2c2b2a292927292c2e +30302f2d2d2d322d187ac5a484341e2e568f7c3b2e1d2a26231749efeedb +b6812d0f302e3a3c424340455569502627302c3130383c5198f6f4e5d4da +ffe4ecf6d8cfe5f0ededededededededeeeeeeeeeeeeeeeeebeef0efecec +eff2eef0f2f3f1e9ded6c6ba803e4a525a32344d3b4f4760d8fff9cee2ef +c57f4c5c4f5356585f6a71757588a5c0d3dbd8d5c8b1985e2b445f414f5b +7f9cf7eae9e9dee1dcdadcd4ced8f9f2eaeaedebded2c5a0735b5e6f7c80 +8e99a8b7c2ccd5dbeaebeef3f8fefffffffefcfcfcf9f3f1eaeae2e2ebea +e9f3f0f1eee5dee0e4eaeeffdfbcbdb3a9a4a7a4874b35382e2c262c302f +343a372a242d37354382d1dacfb4c7c2d8ead2ded8d1dfebdcd5d5c4b9c2 +ba3818220a171100000f1220322f312f2f2c2a2a282a22100a050012231b +0c0f1512212521291b2729314d63635f6e82b9e2f5fffdf7f6f45213231f +14191215130e141d1f1812141617191818191324212e1d251b2097bcb89c +9ba49f9b9a9899979593929195959394969898979c9c9b9a9794918f8a91 +97948d8a8f969694918f8d8d8e8f878a8c8e8e8d8b899091949696948f8a +888586895a5a5f6727272f84c9629a44849f222923446f64301b221c2323 +213549555636402e7cf1e23c4562a1a57132323f3c423b4c869587363c87 +ff92436ac4f0ede5f5d4d9e1dcd4d1dde7e5dad6ddce9c6e28312e2e403d +2d2e322f3238363030342d2e2f3131323231322d2e3435302d2f2f2f3031 +333233333133383a3c3c3b3835353b39288dd8b9994a323f669d8945331e +303031295ffffff6d09b482a4b4855585e605e616f7e6133313b3840414a +4b5ea6fffff5e6edfff8ffffede4fbfffcfbfbfbfbfbfbfbfcfcfcfcfcfc +fcfcf9fcfefdfbfbfefffffffffffffbf0e8ded2934b5153552928403146 +425bd6ffffe2fbffd684403e201d202a4767848f8c9dbad7eaf1f1eee3cb +b278455e7957616c93b1fffffffffdfffbf9f8eee8ecfff6f0eff4efe3d4 +c49c6d52515f686058545b62676c747c9098a4b0bcc4cdd0cfcbc9c9cac6 +c2beb8b6aeadb5b5b1c1c8cfccc8c8d2e3f0f6ffe7c4c7c0bbb7b4af9359 +44453a3932373735383b362a29344242518bd1d9d8bdcbc8e6fff1fff8f1 +fffff8ebe5d3cddce1684e5a42483a1f1c25212a39343837373637373636 +2b1a1a1d1f35493d2a2a2c27363d3b53638599afdffdfdeee7e3fbffffff +f6f8ffff73323f36292b20211f171b24231d1d212322211e1e1e18292835 +2630272997b3a681757468615f6062636364615f605d5b5c5e60605f6464 +63625f5c5957585f65625956585f5f5d5a56545255565256565859585452 +595a5a5c5c5a5550514e4f52b0ab9e853b2c0d45753e06207445111a1536 +67683a1f201a1915131f35413c30361f55a97e07283a3b5b200d160c1f19 +20305b664e270b6cc6560c3b8ab4c0af9d68a3b6707dab97a0aea7abac97 +78441622282727292b2a2727272727292a2a2a2b2b2b2b2b2b2b292a2b2c +2c2b2a292f2e2c2c2c2c2e2f2c2c2c2d2d2e2e2e2f31282a187dc9954800 +265e898f4832322a38392c058ce7d3edf07a72a3c0e6f8ebf9faddd4d0b2 +59473c2b22344642373482ebd6dcb2b6b8bbb8bab2b6d6dcdcdcd7dcdbd6 +dedcd9d9d9d9d9d9d9d9dadad9d9d9d9d8d8dcd9d5d8dcdbd5ceb9b78818 +4242302029222d34187be3cacea0d1df90687072747a7e818b938a767595 +b8c7ced6d9d6e0954f2f2e3843403e4c5784cbded2dcd5d0cfcad4c8afc1 +d0d1d6dadcdfe2e3e3f59d58455450647e8591a2aeb5c2d1d6dbe4ebeef3 +f9f9fbfafffffffffffff3e5d2c0ad9b8c796158565c65707b7f807b5f33 +140d0c060009000009222c352e31222221242a2d44382c13000c23202400 +3737598984a9a69eaabfd1d8c7aca7b6d6b09cabd6b3845e413233373734 +2e2f323635343739241f2935486b8d968f83705641322315130202050002 +0c13152b67abd4ebf8fcffffbe332c2d29261e1e1d1917181f25261f1419 +231e1822192e3425202a241062cfb8b5b4b8c9c5c2c0bebebfbfbebbbebd +bdbdbdbdbdbdc0c2c2c0bdbab9babcbec0bfbdbdc0c3c4bebfbdb5b8bcb6 +b7b8babab9b9b9b9bdc2c4c1bdbebdbab7b6b6b78a8b87783d3a25669b63 +2a3d8b571b231a3b6b6c3b201f1919151624394a453735246bcba4293b45 +43683a303d323c3034426d7961422b94f2873b66aecfd2c3bc8cc9db95a2 +cebbc3d0c7c8c7b08e551e252b2a2a2c2e2d2a2a2a2a2a2c2d2d2b2a2a2a +2a2a2a2a28292a2b2b2a29282e2d2b2b2b2b2d2e2b2b2a2b2b2c2c2c2c2e +282c1e84d4a1540a316690954a3230242b2c1f0094f7e9fbe752222d2a3a +42334550404b635f252c322e283a4947404292feedf7d1d7dbded8d9ced1 +eff2efeee9eeede8f0eeebebebebebebebebeaeaebebebebebebefeceaed +f1f0eae3cdcc9d2e555645353f3a444f3299ffe9eab5dce084525453535b +636a78827b6d799dc0cfd6e1e4e1eba15b3e3a4651505366719de4f8ecf6 +f0ebeae8f2e6cdddeeeeefeeedebe9e9e6f7a25e4c5e5c6b72737e919ea6 +b4c5c9d0d9e1e6edf5fafffffffffffdfcfdfcfaf7f5f5f1eceae6e9ebe9 +e7e4dfdee7f3efd7c3beb5aba4a277453b352a28212a252b2b2c2e252b22 +30364286d1dbc078ccc2c9e1c6dfd7c5bfcddbe9e7d2c8c2bc6f3021331b +170f010314273235312f2f302d292c33281f160d051423221c1b1816181d +2020241b25363f4d616966729ed3eef9fefbf4f6a91f1819171711111312 +10111920231b1217221d19231a323728232d261365cfb0a59a97a19c9a97 +97969593908d939494949494949497999997949190918e9092918f8f9295 +999394928a8e918b8c8d8f8f8e8e8e8e92979a97959695928c8b8b8c595c +5e58272d256da6733a4d996124281e3e6e6f3f24251f211d1d2a42514c41 +473779d5af354c5958794736423540383f507b876f4d369cfb8e436fbce0 +e6dbd9aeeeffc2cef8dfe1e9dcdadac6a669292c32313133353431313131 +31333434302f2f2f2f2f2f2f2d2e2f3031302f2e34333131313135363333 +353638393937353732392c96e8b76a204579a2a3573c332432363014abff +ffffff6c3d4743545b4d626d5d657a7132353a3534485c5a4f4fa1fffdff +e3eaeff2edeee4e6fffffefcf7fcfbf6fefcf9f9f9f9f9f9f9f9f7f7f9f9 +f9f9fafafefbfbfefffffbf6e5e1ae395b55402c332d3a482f97ffeef8c8 +f0f290544636282c384b7294a29896b2d5e6edf7faf7ffb7735554606b67 +667582b1faffffffffffffffffffe7f2f8f4f6f7f7f7f9f9f9ffb8766679 +767358414349494953636974808c91979eaecad7d6d3d0c9c6c4bdb9b4af +aca8a2a8b7c2c5c7cbcfd3d8e4f2efd8c8c8c8beafa87f4f46433839333c +363a373739343e394b525c9bdae2cf88d3c9d7f5e0fbf5e2deeaf6fdf6df +d9dadf996154684c3e2e1b172331393a3837383a3a373a3f312929252637 +49473b342e272a2e333e5c6b89adcce6fcfee9dceefffffffaf9ffffc83b +33342f2c23221e1a17181d262e291f222a231e271e353c2f2c36321c6acd +a58e776a6d645f5f606263625f5b5e5c5c5c5c5c5c5c5f61615f5c595859 +5c5e5e5d5b5b5e61645c5d5b53545a54575a5a5a595957575b60605d5a5b +5a5755545455afaaa18b391d07504b010006330c081d0d2a56593621221b +1513131e333f3c32291a5bb3800725395797651c09122314334f4e8d8845 +086acf520e4b99b7baacab849796787d8e9597a5a9a7877e6c4717222827 +26292a2a272727272728292c2c2c2c2c2c2b2b2b2c2c2b2b2b2b2c2c2e2d +2c2b2b2c2d2e2c2c2c2d2d2e2e2e312f3431168be29a2c1555949c6f2f34 +2e312f2e2418b8e7cfd1a16e86bcd4f4fcf0f1e9d2d0bd8b3c3435343b51 +5743314088e7dcdbafbfb4b6aca9a9bbd9d1d9d5dddfded4e0dcd9d9d9d9 +d9d9d9d9dadad9d9d9d9d9d8d9dad7d6d4d3d3d5d6c69b4e3c2d2b291e2b +2c3625aad5cad6c5c8a3706a707481747c9090796f7799b0c6ced9dbc49e +8d736357402e2a242b486291cbd4c4cccdc4c6c2d2decdcfd6d7d6d7d9db +dfdfdfe1a13a2f2e304054646d7a87909da8b5bfccd8e0e8f2f1eaeaf2fa +fffffffffffef1e6dbcfc4b39383797474787e7f746e542e18191d190b19 +1c000a1b363137331d181d191d2934261e0700041b1e000003356cba9b9c +b4a7adc5c4d3cfc0c4daeccc94a0c0b4916c4b352f33373937312e343737 +322f292834414d66797b7d73634f3e3027201b0d040100000714121b498c +c5e6f7fbfdfff166292235341f1d1a18171a2025404f554f3e23161e1d3a +4f4c484331183dbcb5acbab9c7c3c2c0bdbcbdbebebcbebdbdbdbdbdbdbd +c1c3c4c2bfbcbbbbbbbfc0bfbdbcbfc0bdbac1bfb5b5b9b5b7b8b9b9b9b9 +babbbcc1c2bfbcbdbebbb9b8b7b88b8b8b803b2d2173712619234b1d1224 +122f5a5d3722211a151316233748453b281f72d5a62938445fa47f3f3038 +402b476160a09b602892fb833d76bdd2ccc0caa8babc9a9fb1b7bac8c8c4 +a09480561d252b2a292c2d2d2a2a2a2a2a2b2c2d2d2b2b2c2c2b2b2b2c2c +2a2a2a2a2b2b2d2c2b2a2a2b2c2d2b2b2a2b2b2c2c2c2e2c32331992eaa5 +3720609ca17231322827201e1916c3f6dbcd802c1e333242443a444a465b +644b1623333b455a5e4b3a4e98faf3f6cee0d4d9ccc8c5d5f1e7ece7eff1 +f0e6f2eeebebebebebebebebeaeaebebebebeaebecedecebe9e8e8eaebdb +b1624f41403f3441434f3fc6f2e5e8cec6975a4b4d51615a698286726a79 +9fbcd1dae5ead1ad9c84746850403a3945647eace6f1e0e8e9e2e4e2f2fe +edeef2f0ecebe9ebebedeef3b8565055595f565863717c86919ca6aebac4 +cdd6dfe6eef2f6f9fafafcfefffffdfdfdfbf7f6eff2f0eeebe8e5e5e4ee +ead5c8c8c3b9a5a68f493a2d32222b322d3239332f32322a353a4380c5cb +8a3b82add0ffd9cee0c9c1d1cfe2e9e0e4e9dd9a3c28322d3226110a1526 +343a37302b2c2f2c2a2c2c28261f161c221c1f1e1c191a1e232629252229 +36465a6e686682b5dff6fffff4f8df52120b21221212121212131a1e3a4b +534e3d24171f213e524f4843311a44c1b29fa399a19a999796949392908e +9394949494949494989a9b9996939292909192918f8e9195929196968c8c +908c8c8d8e8e8e8e8f9091969895949596938e8d8c8d595d646226222079 +7c36293357271b2a16325d603b2627201d1b1d29404f4c443a3280dfb135 +495874b58c45353b4433526f6eaea96b339aff8a457fcbe3e0d8e6c8e0e3 +c7ccdbdcd6dedcd4b4a9986b292c32313033343431313131313233323230 +302e2e2d2d2d2e2e2f2f3030313133323130303134353333353638393937 +37333d4028a4ffbb4d3674afb483403d2c28272b2a2bd9fff3e69b47394d +4a5a5c5360666175785b212938414f69715e4959a5ffffffe0f3e9ede1dd +dbecfffcfbf5fdfffef4fffcf9f9f9f9f9f9f9f9f7f7f9f9f9f9fafafbfc +fdfcfaf9f9fdffeebf6b533f3933273539493cc7f6ecf6ddd4a15d463a35 +3b354b759193a0acc1d2e7f0fbfde4c0af96887c6756514e54708cbdf9ff +f5fefffafefbfffffffffdf7f7f6f8fbffffffffe4868690978d624c4846 +443f454a555c686e7174788cb1c3c3c3c0bcbab7b8b4b1afb1b0acb3bec8 +c6c7cbcfd0d7d6e1decbc5cdd1c9afad9450443941353f443d3f45403d43 +48455459629ad6dba15393bbe0fff2e9fbe4dcebe5f5f8eff3fefabf6655 +60585442291d222f3b3f3f3834373c3a373735323737353d443a39312a26 +262a313e56657a98bcdaf4ffefd9dbf5fffffffffffff96d2e273c3a2623 +211c191a1e2546595e5643291b2324415754504d3d264ec4ab8c83707064 +615f5f6061615f5c5e5c5c5c5c5c5c5c606263615e5b5a5a5b5f5e5d5b5a +5d605d5b616056565a56595a5959595958595a5f5e5b595a5b5857565556 +a9a6a08b371e1672a56f9c937a3e23050b2140453125251e191a1a213038 +3831322a78ce8e1a3a56b1f0cf68230e16296a957deded7e1774d4480b51 +9cb4b6b1a49c98929d876170a4a8a8955e867c4517242a29282a2c2b2a29 +2929292a2b2b2c2c2c2b2b2a2a2a2b2a292929292a2b2b2b2a2a2a2a2b2b +2b2b2b2c2c2d2d2e32273032188ece6c1353a2bc8e4221352d392c26163c +e6e6f0bc6379a6d4e1f4f4f3eed7c6cba9603a383931354f5744335297ed +e1d3a8b2e6c3acbfbfb5d0e5d8d6ded2e5dbdcd2d9d9d9d9d9d9d9d9dada +dadadad9d9d9d6dadbd6cccbd3dbded4c8b35026272427342d264fcbd1d7 +e0dfb66e6278737989848b927d616c8bb7c1cdcdcac4b9abb8bbcdd5c4b6 +bfc3b6c8cdd6e8e0d3dca5acc1b4acc1cad4dbdfdedededddbd8d7c8a41c +13080b16253d474a52637a89919fb2c2d0dde9eae1dfe8f0f4f9fcffffff +faf7f5f2eee4d0c1ad9e938f908f8379603f2a26231e3b3c38000c204e38 +1c1a0b000300000004000000000d2a3601000a5372c2b5b8dec8bfc9a7c4 +deebe3f4f0da9398a8a79073553f3636393c382e292f3737302a3230383f +414f5b57514c453b302b2d2c292411020503061d2f25376db1deeef2faff +ffb42e263c3f221e1916181d232439525c4f3821181d293a48443c342a1e +1395bca7babcc6c0c4c0bcbabbbdbfbebebdbdbdbdbdbdbdc2c4c5c4c1be +bcbcbdbebebdbbbbbcbdb7b5bebeb3b1b7b4b8b9b9b9babcbcbdbcc0bfbb +b9bcbdbcbbbbbabb87878a823a2e3095cb96c0b0904f2e0c102644493226 +241d191a1d263441413a312f8ff3b63e4f63b9fde98b4a3435427ea78fff +ff99379cff793a7cc0cfc8c5c2bfbab5bea88292c6c8c5b1759b8e521d24 +2a29282a2c2b2a292929292a2b2c2d2d2d2c2c2c2c2c2c2b2a2a2a292a2b +2c2c2b2b2b2b2c2c2b2b2b2c2c2d2d2d2f242e321b95d6771e5eaac39143 +2032242d1b180d3df1eeeea2271b253c394241424b484e6c643123323d3c +425b624f3f60a7fff8eec5d3ffe3cadddbcfe8faebe8f0e4f7edeee4ebeb +ebebebebebebeaeaeaeaeaebebebe9edeee9e1e0e8f0f0e6dbc564393b38 +3b4a443f69e7ecebe8dda95944534d546b6e7e8d7d647094c1d0dadcd9d5 +c9bcc9cee0e8d6cbd1d8d0e3e7f2fffceef9c2cbe0d3cbe0e9efebe9e8e7 +e7e8eaebf1ead15353505b57424951555a677a85868f9dabb7c2ced6dde4 +ebf2f7fbfffffffffffffffffdfcfbfcf8f5f1eeedeeeff8f6e5d9d3c5b2 +bead974135314c34233640425141333c403d494f598ec6cb652260a3b4f8 +dedbfde2d1d5b2d1f4fffdffe7b7523d363a4139281f222c363d372b2327 +2f2f2a27322e302c24272b241f1f1e1c1b1e272e3638271f314056778974 +7197cbedfcfbf8f9f9a2170f252d1415151415181a1a334e5a4e39221921 +2d3e49453b3228201d9fbc9ea79fa2999b97959291919190939494949494 +9494999b9c9b9895939392939392909091948e8d95968b898f8c8d8b8b8b +8c8e91929195979391949694908e8d8e5759636325232f9bd6a5cebe9d59 +34121429474c362a2a232122242c3d48484343429dfcc04a6076cefff691 +4f37384989b59dffffa442a4ff804285cee0dcdddedddfdbe9d3abb5e1dd +d7bf87aea465292c323130323433323131313132333132312f2e2e2b2b2b +2e2d2e2e2f31323331302f2f303031313333353636373735362b393e2aa7 +e98d3474bfd6a455303d293125272051ffffffbb413641555258575c6664 +698477412b34403e4a6974614d6bb4ffffffd7e6fff8e2f5f3e6fffffaf6 +fef2fffbfcf2f9f9f9f9f9f9f9f9f7f7f7f7f7f7f9f9f8fcfdf8f2f1f9ff +fffaeacf6535322c2f3e3a3968eaf3f6f3e8b0583c4336394f5775939791 +adcbe4e5edefece5d9ccd9ddf1f9eadee5ebddeef4feffffffffd4ddf4e7 +dff4fefffaf5f4f6f8faffffffffff949da4b2a77e716c5b4f4c5658585c +64676767677593a2a6a7a6a7a8a9adafb2b9bdc3c6cacdd0cdcbccced2d6 +d7dddbcdc8cdcabcc8b59d473b395a433342484955463b454b4d606976ab +dde389477bbacafffaf7fffbe9ebc4e1ffffffffffd574605a5a5e513c2e +2d343d423f342d323c3c36323a393f3f3a3f41372b26232122283343586b +7383aecce9ffffebd4e1fcffffffffffffba332b41472d28241f1e1e1f22 +3f5c65563e271d2430414e4a433d352d29a8ba8f89777262635f5e5e5f60 +5f5e5e5c5c5c5c5c5c5c61636463605d5b5b5d5e5e5d5b5b5e605a596162 +58565c595a595757585a5a5b5a5e5c5856595b5959575657aca6997d2d22 +1d754b000002000610141d293737302c2b25222423242a2e2e29312d83d9 +881e4268b4f4e77b2a101842a89e78e1f0972975cf3f0c4c8fafb7baa18a +604a6e7977a8a5a7ae833186823b19242a2927292b2a2a29292828292a2a +2b2b2b2b2a2a292928292a2a2a2a29282a2a2a2a2a2a2a2a2b2b2b2c2c2d +2d2e3327262e297b842822a3d4a75c282c332f382c270467f3e6ff9d67a1 +c9e7eceef3f6e8c9bbbf8a2f30373a2c27415145344790e1cec6b0a2c3ab +aedbd7b5c0d1d1d1ab7ac3e2dddcd9d9d9d9d9d9d9d9dadadadadadad9d9 +d6dadbd6cccbd3dcd2d7e7ec522429202f323036a2d0d6d9e8ca95666f81 +7a818d9c99785d648cabc1c9d6d5bba8bee5e6dde2e8e1dfe8ebe2e7dcd2 +d0cacad8b4b7d3c5acb9cad8dbe2e5e8e7e4ddd6d0bdad21030100061f19 +060827474c415a697e90a0b0bcc2cfd3dce4e8ebedeff3f4f5f7fafaf9f6 +f8edd9c6b8b0aeaaa098856b584b3b2f140d0f0010365a400618230b1407 +000300000000000f25362100163a1a25263037353f501a212f39292f3745 +3e5a74786c5e5044383331332f27232a32322d295a4e46352524251d2929 +262422222c332f331c060a04001c493630559cd1e5edf7fffff555373642 +2b231b171a21242027322c1b191d1e242c2f2f2519141819005cccb1acbf +c3bec5c2bcb9bcbec2c2bdbcbcbcbcbcbcbcc1c3c5c4c1bebcbcc0c0bfbe +bdbcbcbcb9b0b5b8b0aeb4b4b9b9b7b7babdbdbebec1bfbab7babbbbbcbc +baba8a8a867430323a9873191f1f1317191c222e3b3b312d2a2422242629 +2e37373232349dfeb0425775bcffff9e5136375bbcb08af4ffb2499dfb70 +3b77b3cac9cebfac816c8d9a97c9c4c6c99d469993461d242a2927292b2a +2a29292828292a2b2c2c2c2c2c2c2b2b292a2b2b2a2a29282b2b2b2b2b2b +2b2b2b2b2b2c2c2d2d2d3025252e2c828b302caadaac5d26292b22271a19 +006afbe9f86d0e2632404341434c4f475471571023374337344d5c504054 +9ef3e5e2cdc1e3cbccf7f1cdd6e5e4e3bd8cd5f4efeeebebebebebebebeb +eaeaeaeaeaeaebebe9edeee9e1e0e8f1e4eaf9ff64373d344346454cbae9 +eeebeac1834b4c5c535d728b937b636e96b8ced8e5e4cbbad0f7f8f0f5fb +f4f4fdfff8fff4eaebe4e4f2d0d3eee2c9d6e7efe4e5e8ebededececf1e9 +e565535b605c543d29294663614f60697785929eabb3c7cfd9e3ebf1f5f7 +fdfdfdfdfcfaf8f7fffffffefbf8f6f7fafffffff5e6ccb0816a5e393649 +614a24517d7c90836f756d6f787a7ea1c4c1732f5272484b444a4d474e5b +232d3f4b3a37322e101a21293233302c2b2e30322c211b222a2c2a27594d +402d1813130916161818171b26323b452b1b2e394d76a4866b7eb4e3f6fa +fbfdf4e33e1e1f2f1e1e1a17181c1a16212f291a1a1e2228303330241811 +151b0d6ad1aa9ba3a1999e999591909292949293939393939393989a9c9b +989593939595949392939394918a8f928a8a908e8d8b89898c8f92939396 +97928f929493918f8d8d5a5b5e551b27389e7d282d2d2021201f26313e3e +3531302a2a2c2d2f373e3e3b4446aaffba4e6888d1ffffa456393a62c7be +98ffffbd54a5ff774380c1dbdde6d9c8a491b9c5beeae0dadaaa57aaa758 +282c32312f31333232313130303132303130302e2b2b2a2a2b2c2f303234 +3332302f2f2f303030303333353636373735372a2d3a3b949e4545c4f2c2 +723b3c3a2b2f262a137dfffcff852a45515c5a5558666b636f896a1f2a39 +42393c5b70644c5da9fff3f0dfd5f8e0e4ffffe7eefdf5f1cb9ae3fffdfc +f9f9f9f9f9f9f9f9f7f7f7f7f7f7f9f9f8fcfdf8f2f1f9fff8fbffff6631 +3228373b3c49bcf0faf7f6c68140384136435f81978e879fd1edeeedf8f7 +dbc8defffffefffffffffffffffffff6f6f1f1ffdee1fff2d9e6f9fff5f6 +f7fafbfeffffffffffaca8bbc7c3b4916d5c6371664f5c5f6465615e5b60 +7e868c90909192949ca2aab3bdc4cacbcfcccdcdcfd0d1d5d6e0e2dddad8 +c9b588716239394f6b542e587e7a8e8170766e75828b96bad9d898546e89 +5f605e63655f636d32394c594a4a49482a343b3f48463f3934343638352b +262d3738353261554c3c2a2523141a1817181d233444556d6c74a0bbd7ff +ffffd1d0f0fffffffffffff9583b3c4b38342a232323221e2d3a32221f22 +252b3336352a201a20281e77d4a0817e736467615e5d5f6161605d5b5b5b +5b5b5b5b60626463605d5b5b5e605f5e5d5d5f615e595e615b5a605f5c59 +5555585b5b5c5c5f5c57545759585a585656b0af986d23210c465b080029 +261904223136332d2d2d2a292528252223242421302c8ade7b1a3963c0f2 +d555181d191b414e8ad2c15f0e66c73f1e5388afb9bcb3a29c979f917986 +afa3c1911d6157201a252a2927292a292a29292828282929272727272727 +272725282b2d2d2b282528282828282828282929292a2a2b2b2d2f34272c +38583d1c5ec4bc733c2d3f2b342b29200497eef6e1698dc8dfeff6f1fbf4 +dbc7d0d392312128302e334c513c424295efdce0deada9b8bfc7c2cae6e4 +f0ec822192e4d6e0d9d9d9d9d9d9d9d9dadcdadadadad9d9d9dadad8d5d5 +d7dad2dde6cb2d1c302c2a2b2979e9d2d7d8ef93686c75797e8e96998560 +5b84afbfcbd6ddd3beb7ceece6dbdde2dfdedcd3dae0dfdde0dfdbdfd1b8 +c5c7bdc3c0c4dfe4e5e6e5e5e3ded2c6b644000a00020018230e00001a35 +2c3a4b5b68768290acbac5d1d8dce1e1ebedeff2f4f5f6fafffff5e7dcd5 +d2cdbfb9ab9a8f85776c60431b0c0012241e06294e272f2a2b26201b1e19 +181f27381a0009322a122b30231d1e260206090420151d21343c5251413f +3c342c25242427242428292523252e28252019232d29151415171718252d +2734250d0d00000e403b303f82c0dcedf2fcf4ff9f372e43382e20181e26 +281f282a1c0c131f232927292c281e1818190525d0c49ebec0c0c6c3bdba +bdbfc4c4bdbcbcbcbcbcbcbcbec1c4c4c1bebcbbc2c1bfbebebdbdbbbdb0 +b0b5b1b0b5b5b9bab7b8babebebec0c2c1bab6b7b9b8bcbcb9b990928467 +28332969832f1d463c2a0d2a363b37312e2e292825282827272d2d2a3133 +a4ffa33e4e70cbfff17a4145383455609ce5d47a2e8ef3704d7eaccacbce +cfc1bab8bcb197a5cdc0dba93072662c1e262b2a282a2b2a2b2a2a292929 +2a2a2a2b2b2b2b2b2b2b292c2f30302d2a282b2c2c2c2c2c2b2b2c2c2c2d +2d2e2e2d2d32262f3c5f442465cbc0753a2a372022171413019cf5f2be21 +18333640504b4f504c5277976c1f1c2c39383c5359444c4fa3fff2fafbcc +c9d8dde3dce2fbf8fffe9433a4f6e8f2ebebebebebebebebeaeaeaeaeaea +ebebebecedebe8e8eaede3eef6dc3d2d413e3c3f3c8dfee8eee8ef875452 +52565c70808f84676792bdced9e2eae2cec7defef8edeff5f2f1efe6ecf2 +f3f1f4f2f1f5e7d0dcded4dadad7e7e6e8eaeceff1f4f2f2f08b51686162 +465b644f36364e615157626c76818d93a2a8b7c6d2dce3e8f3f4f7f8f8f8 +f7f6fbfefffffffffbfcf6ffffffffffe9d3b89163491e2f373b3b7fccc2 +d6d3c7c7d6d9d8cfc6cdd5c76a223c6252344847322829320c10130e2718 +1a141b1822211f25282927242323211c1a1e212223252d25221c17212b28 +1514151715151e2c34452e1a262c3f65998c696799d2effefdffeef9891e +17302e2a211c1e231e152027190b1420272d2b2d2d271b1212181436d7c1 +8ea49f9b9f9a969392949496929393939393939395989b9b989593929998 +969595959596978c8b908c8d92908d8a88898c909393979999928f909290 +918f8c8c61665f471227276f8d3e2b544732142d3a3e3a3432322f2e2d30 +2f2d303434334345b1ffad4a5f83dffffd8045473b3b606eaaf3e2853996 +fc775587badbdfe4e7dddcdbe6dabdc4e7d2eab53f82793c292b302f2d2f +302f302f2f2e2e2e2f2f2f2e2e2c2a2a2a2a2a2d323539393631302f2f2f +2f2f3030313133343637373532372e38486f57397fe5d98c503f4c312e22 +232514afffffd2393553575d665f6569686d93b0812d222d383a45636e59 +5858aeffffffffe0deeff5fbf5fcffffffffa241b2fff6fff9f9f9f9f9f9 +f9f9f7f5f7f7f7f7f9f9f9fafcfaf7f7f9fef7ffffe33d2737302e33368b +fff3fcf7f987493b32303754739094848fbfeef9f6f8fdf5ded6ebfffff9 +fbfffffffff5fafefefcfffffefff4dceaece2e8e9e8fcfbf9f6f6f8fcff +ffffffcda5c8cbd3becec8a3796f7e8e7e81827e77706b6467666e767a7c +80819097a2aebbc3cbc7bfbac1c8cccfcfd2ccd5dddfe7e8e1d2ba936044 +1a2d3b3f3f80c8baceccc4c2cacfd5d2cfd8ded585404f705e405859493e +3b40181a1f1a392b2f282e262e2d2d3233312d2929292b2725292e2d2d2d +332c2d2a252f3830171413171a1e2e3e456365698da5bfe8ffffd4bfddff +fffffffff8ffa03b344e494133282a2c261e2b32221319242a2e2c2e312d +241c1e282948ddba7781726768625f5c5f6163625d5b5b5b5b5b5b5b5d60 +6363605d5b5a61605e5f5f616262685c5e63606368645e595455585c5c5c +5f615e57545557555a585555adaf996e2829062b696f6c70411a0a1b2e32 +281d23221e222224211d1e2022212b2588da6a11295172844a0404181d1b +182d737f48070494c44032678fb1b4b5a891a1a9a3a4a3ac9f609493518d +73431a252a28262829282a292928272828282626272828292a2a26292c2e +2e2c292628282929292928282929292a2a2b2b2d25392d292f35224b92a9 +7f503d3a40243c26291834cef5fc9d5ab9e6eef6f6f1f9e9d2d8f8ffc57e +46332927364a43253d4299f1e5ddd083a7aba3a0939abdc2b8c0590479ed +d0d3d9d9d9d9d9d9d9d9dcdcdadadadad9d9dadad9dadbdbd9d7d6e3e18c +19212f30303226b8ead8dde4df6a507173778ea3a081646785a6bdc5d8d3 +beb0c0dce4d8d3d0dbe2dedfe3dfe0e3e1dfdeded9d2e9d4dee3e0dfd6e1 +e2dedad6d7dce1e2d0cfba6b000c0000090b0c0f151a181419222e383e48 +53658395a2afbdcad6dde6eaf0f5f7f9f9fffffffff6f1eeefece4dbcbbe +b8b7b6ae9f8450430f1b172500174e201e1f2a2411121313131514272d13 +0c2631194b52594021090d1c261c19151f12261d343935322e261f1d2024 +252627262018161b2522241f16181a111a15151817131a212233331e1402 +0002304b473e6ba7cbe5ecfbffffe843344b45382519212d2d231e2b2821 +2221202a292a2c28252427240e04aed3a4b7bdc0c5c2bcbbbdc0c5c4bcbb +bbbbbbbbbbbbbdc0c3c4c1bebcbbc2c0bebdbebdbcbabdb1b6c0bab4b6b7 +babab7b8bcbfbcbbbfc3c2bcb8b9b9b8bdbcb9b88d9487672d3b234e9196 +908d572b132333372c2124231d212224242222292b2a2c2ca2ff92353e5e +7d9466292d403c342c3f85925b2224bcf0716192b3ccc6c7c2afbec7c0c1 +c1c9bb7baba9639d804c1e262b2927292a292b2a2a292829292929292b2c +2c2d2e2e2a2d2f31302e2b282b2c2d2d2d2d2b2b2c2c2c2d2d2e2e2d2337 +2c2c333c295399af815039353617270e140b33d4fbf06c002c3b36425454 +5349496baccfac76473b322f3a4d482b454fa7fffbf7eda2c7cbc1bcadb2 +d2d6cbd26b168bffe2e5ebebebebebebebebeaeaeaeaeaeaebebecececed +eeeeeceae7f4f19b29303f40404437cafdecf2f4df5f3d5852556e8a8f7a +687193b8cdd4e6dfcabdcdecf4e9e4e2edf4eff2f6f0f0f1f1efeeeeebe4 +fbe6f2f6f3f2ecf4eee9e3e0e2e7f1f7edf7eda94c6056555e5d5e5f6366 +605653575c6168707a7f7f8492a0b0bfccd4e0e5ecf0f3f6f7f8f4f6feff +fffffdfcfafffffffffffff9ebd39c85414034483c75d6c3cccdc9c3c4cb +c9c2bbb9b7aa6e332d474c2d5d6060452a1517252a1e18121c0e1c102125 +26272724201e1f211d1c1b1c18161920241f211d131719111b1616191611 +16223042372524283956889a7f6281b8e1fafbfffdf8d22a1b383b36281f +232c2619162525202122242e2d2e2b261f1e1f231e19b8d2959f9c9b9e99 +959292959596919292929292929294979a9b989593929a98959696989796 +988f949d979294918e8a88898e919190969a9a9491929290928f8c8b5e67 +614a192f21549ba59e9b62331a26363a2f24282723272a2c2b282b303233 +3e3eafff9c414f7191a4722f31423f3b374d93a0692d2fc4f978699bc1dd +daddd9cbdeebe8e9e5e9d38cb9b671ac915d272b302e2c2e2f2e302f2f2e +2d2e2e2e2e2e2e2f2d2c2d2d2b3034383c3b3834302f3030303030303131 +333436373735283c32353f4c3c68b3c99a68524b4e29361c271d45e4fffe +7f154c5d585f696769636588c8e9c1854c3d3131455e5e415257b2ffffff +fdb6dce2d9d4c6ccedeedce0792499fff0f3f9f9f9f9f9f9f9f7f7f5f7f7 +f7f7f9f9fafafbfcfdfdfbf9fbfffea2292b3433333831cafff7ffffe75b +2c392727456c87828395bae0f1f3fff7e0d0defbfff3eeecf9ffffffffff +fffefefcfbfbf7f0fff2fdfffffff9fffffff4eae6e9f1fcfbffffe69ac0 +c1cadbdaccc0b8b2aca4a5a7a79f9289817462595f656a6f73758087919e +a9b3bab7a5a2aebac4c9cacdc9cdd2d9e4f1f6f4e7cd90793538324a3f77 +d4becacecfc7c0c6cac7c6c3bcb4844a3c505336676d73593b21202e352b +2a252f1d271723262b2f2e292422252828272727252122262a262c2b2427 +271b2018181d1e1e27343d59666b8397b1d2ffffecc0cdf0ffffffffffff +e7473956564e3b2d2f342e2221312e262726252f2e2f302b29282c33372e +c1cd827d716767615e5c5f6264625c5a5a5a5a5a5a5a5c5f6263605d5b5a +5f5d5d5d626363646b6267736f6c6f6a5f5954555a5d5a595e625f595657 +57555b585554a7a995702d2c0f3d5f7d8f846329330c202b221922211c23 +2324201d212527251e0f6ebd4600194565601c0a1709131f24363e61501e +0277c7352f6e93adaab2927886897e818798660035576fd2b06c1a252a28 +262829272a29282827272728262627282a2b2d2d24252526262525242728 +292a2a29282728282829292a2a2b25302b241e2a31779a815f4c3c333327 +3a282d1082f2f8cc6e89dafbfdfeecebf0e1ced0d2bb9783583d2b272c37 +321e242f5689897464294e42425c523436332b3f200d64efdcd5d9d9d9d9 +d9d9d9d9dcdcdcdcdadadadadadad9dadadadad9d7e4dc522233292f3634 +4bdbd4dae1d69d5859747b8b9ea99a766985aabbc5ced8bfa6accde9e9da +e1dde2e0d4d5dddce1dfdedbd9e2e6dfd7dae2dbd9dbd6e8dfd9d6d2d4d9 +deded3dac69019140d000000010b0d0d0d110b0e1314161c23385f707883 +95abbfcedce2ebf1f4f7fafffffffaf6f6fbffffffffeedfd9dae1d5b1ab +948f6b4f19010000462c29293c3b393f3f3e43423e534048151c2525646b +4e4c3c0f231c21122329261c1c18202932302a231d1d2227242626251c14 +111511121d211f272b24261e1b1e1c13141722303e301806000025646d47 +588bb6d9ebf1ffffff8443574e3f281b2637372c1621242629201b262f2d +271c1d272f270c026ed8c0adb9bfc2c0bcbabcbec3c2bcbbbbbbbbbbbbbb +bec1c5c6c3c0bdbcbfbcbab9bbbdbcb9b5b5c9d7cab9b5b7bbbcb8babdbf +bbb8bcc1c1bdbbbcbababfbebbb9888e8369323d2d6287a4b3a1793a3c14 +2530261d23221b2223242322252e302e1f1688e271222e527070382f4031 +3238384850746339229ff3665e99b7c8bcc4aa96a3a69a9da4b380194c6d +81e2bd751e262b2927292a282b2a292928282829292b2c2d303133332a2a +2a2b2a2928282c2e2e2f2f2e2d2c2d2d2d2e2e2f2f2e242e2a272231387f +a087614a362b29182310170483fafcba311d3a3f3b464d544c4449698d93 +85815d45312b2c3632202c3c649b9f8e7f486e6260776c4c4b473e51321f +76ffeee7ebebebebebebebebeaeaeaeaeaeaeaeaecececededededece8f3 +ea61303f363f46465cede7edf6e69d4f495e5d6c82948d746e91b8cbd5dd +e4c9b1b7d8f6f7e8efeef2f0e4e6eeebeeebeae7e5eef4ede5e8f3ebebed +e8fbf7f4ede9e8eaeff3ebf7edbe4f515049474b555f62605d5e54555656 +585e686b6f6c6f778191a2adbac4cfdae2e9f0f3f2f5fafefefdf9f6fafc +ffffffffffffffffeddea87b36202c49bbb6b8b2b2a8a9b2b3b2b7b9bab5 +644e1f272a2663694b4d43192e23210e1a21231b1f1c232c322f2b272221 +23241c1a1a191612151c12111718131a1c13181111171611131d30404031 +23273a4b7bb1a36b6d9dcceefdfcfef7f36c2a44453d2d222a352f220e1b +212528211f2c3331261a171f24261d187bd9b39498999b97939191939394 +919292929292929295989c9d9a97949398959395969897959093a6b5a899 +94918f8a898b8f91908d93989a969495969394918e8c59615d4c1e332b68 +91b3c1af8442411728332920272621282b2c2a282e353737312895eb7a2e +3f65848044354433353f43565e8271442da7fc6d66a2c5d9d0dac2b0c1c8 +c1c4c6d1972a5a788df1ce84272b302e2c2e2f2d302f2e2e2d2d2d2e302f +2f30303131312a2d2e3135353734302e3132323131303131333434353533 +293330302e414b94baa17a625042412d35202c1895ffffc641355c625d62 +6165645f6887aaae9b8f6347312e38484c3939446fa7ac9d905c83797a92 +8768665f4f5f402d84fffcf5f9f9f9f9f9f9f9f7f7f5f5f5f7f7f7f7fafa +fbfcfcfcfcfbfcfff768313b2c32393a56edeefbfff5a548303729355375 +87818eb7ddececf0fce2c7cbeafffff3faf8fffdf4f6fffefffbf8f5f3fc +fff8f0f3fdf8f7f9f4fffffffdefe7e4e7eeeffffff299acb8b8b8b7b7b9 +b3b0b2babbc1bfb6a69a92867c6d66615c5e5e5e60626b747e868f918c8f +9aa8b3bcc0c3c6c7c9cedceaf7fef2f6d9c8966e32233553c2c0c6c5cec5 +bfc5cacbd0cdc6c07a642b2d2e2b69745e615323342b2b1c2d363629261b +1c2532342f2a2524282b27262625221d1e2216162329272e3125251b1a1f +221f252d395069717c8eabc1f2ffffccbeddfbfffff8ffffff8648626255 +413236403a2b19272a2b2e25202c34322b1f212a3238372f84d4a2756d68 +645f5d5b5e6062605c5a5a5a5a5a5a5a5d606465625f5c5b5d5a5a5b6163 +636363667e8f8373716c625955575b5d59565b605f5b595a5a585d5a5755 +aca58d6a211e10536d201b497b3656161e2f2a232f2d262d28282521262b +2d2a250b65b23d0325583f642e1a1b071a18306e538f783c1ca2ca271f68 +8ea19db390869aa3a5a7a7bc5f001b1840b78f311a232a28272828272828 +2625272728272727282a2c2e313222211e1c1c1e212229292b2c2b2a2826 +282828292a2b2b2d3329282417364986866f67532f242d3330272a06bdff +fa975fc1dffbffffe7ebe7dac3a469230b232c252c34303031292a2e0e0a +1a1119122417070f14192310131c263557e4e2d7d9d9d9d9d9d9d9d9dada +dcdadadadadadadbdad9d7d7dadcdadecd24263a25372a2781f1dcdee3b4 +5a566f79859fa19b897d859eb6c1cfddcbaeb1daefded5e2dedadcddd8db +ddd6dfdfe4e3dde3e4d9e3e8e3d3e3f2e1e4e6e3e5e4e6e3dfdddae5daad +38242e170f070811130e10181d1e1f1b1a1c23344e58575b6a8099a9c0c9 +d5dee5eaf1f7fffff9f6f8fefffffffffef6f0f1f4eacec5b0a6b4a36e45 +05006367706c82828289817c7e797183506d1c272e456c5b47615d11220b +1f241a2512161020161f2a2b27231f1d202224232524201816181f1d2323 +1e242b22271c1a201f181619212f423517050000166c7c474879abd4eee6 +f8ffffd04c5f53442c1e2a3a3b2f25211b2029221d2530322c21222b2b1c +090f39d1d59db2bdc1c0bbb9babdc1c0bcbbbbbbbbbbbbbbbfc2c6c7c5c1 +bfbebdb9b7b8bcbebbb9acb9dbecd9bfb6b7bbbab8babebfbab5b8bec1be +bebfbfbcc1c0bcba8c8a7e662a332f7994473c659144601d21322d26302e +26302b2b28252a3234322a167fd463253c694f754a3d412d3731427e65a1 +8e573dc8f7564e93b4c1b7c9aca4b7c0c2c1c0d475082e284ec398371e26 +2a29262729282b2b2928282827282a2c2d2f313435362625211f1f202324 +2c2d2f30302f2d2e2d2d2d2e2d2e2e2e302626261d3d518e8c73674f2617 +1e1e150f1800bbfce96d0a433a3f434c45524b4a4c4c31060227332c2f35 +2e2e2f2c303618182a242e293d301d23282b3321232c364567f5f3e8eaea +eaeaebebebecebebeaebeaeaeaeaecededeceaeaedefedf1db2e2e433046 +3b3b95ffecedefb7504458626b868c8b807e8cabc4cfdce9d6b9bce5fbea +e3f0ece8ecede8ebeee6ecebf0efe9eff2e7f1f6f1e1f3fff1f7ffffffff +fbf8f4f2effdf6ce5f4f5b4d514d4f595c57585f6262615e5d616a6d685f +58555a6678859aa4b3c2cdd7e0e6f1f2f5f7f8f8f7f6f5f9fdfeffffffff +fffffcececce8e65323abdd1dbd0d5ccc8cfcac5c9c9c7c5656c1f282b40 +645543606118270e1c1c121e111a192c232a2e2c2b282422211f1a151516 +1515161b1e1a1b180f12150d120a0a141712121b2b3842362123353e66b8 +b873618cbfe7fff1f9fbf4ba384f49402e232d3c3a291d19131b27211e29 +31332b1f1d23211a152147dad28d96979592909091929190919292929292 +929296999d9e9c98969594929091949695938794b6c9b69c92908f8a898c +90918f8a8f9599979698989596938e8d5b5d5749192c3182a3584d739e4d +69232637322b35332e373234312e333c3e3d3d288ce06e314c7b5f855543 +442e3b364e8b71ad996246d1fd5e569cc1d0c8dec2bed5e0e4e4dff08c19 +3c355bd1a745272b322e2c2d2e2d30302e2d2d2d2d2d3130313234343637 +27282626282c3030312e3233333231313131313234333533372d31322b4f +64a3a48c7f663b2b312f261f2e14d1fff97b1d5b5a62656b5c6663656865 +4a1c13333b32343a393c443f3e41222337333f3b5146343b40434c353339 +435476fffffafefefefcf9f7f5f3f5f5f5f5f7f7f7f7f8f9fbfaf8f8fbfd +fbffe838313e2233292f94fffcffffc651363630304d61748190a9cde1e9 +edf9eacfd0f7fff8f0fbf7f3f9faf7fbfef6fcf9fefdf7fdfff4fefffeee +fffffffffffffffffcf3ededf0fffff79894aca3a8a29da1a09ba2b1bfc3 +c2b9aca4a09a8b7b6a594d4b4d4b53535a61696e767a85899199a2aaafb2 +b2b8bdc5d3dfeaf0eef0d8cacfba83643743c6deede8f5efeaf1ebe6e6e0 +d4d1767c282d32476f6154726d222d152529212e1f251e2c1c242f302e2b +2725262625222223232020222421282822282a20231815202420232a3549 +686c667ba7badfffffccbbdbfaffffedfbffffd1536c645943363c484233 +28241e222c26202a33353024242e2c282d3752d7c373716a645e595a5b5f +605f5c5a5c5a5c5a5c5a606167666660605d5c59595a606364645a688ca1 +90766e67605955585c5d5853575d5e5c5b5d5d5a5f5c5a56aaa794661b23 +1693520008189e211f0a132e2b1d362c2e24383e211f2c29313a1f0786db +592e1e3a94d2a65a262212276e557cf1ce8508a1cd2f18766864aba19b98 +959ca29ba5c46018212d2d8f803a1c23282a292d36202624232427292b2b +2a2d312f261d1a191b1b1b1b1c1c1c1c232e2e2424302e2223272d2e2c2a +2b2e2a342a1a20375168789f6636382d2e30392e1420feffec76b4d5e9f3 +fbf5f3f8e7ceb07f4f4640292922253037332d2d2c333431333a35292d2c +41484d3813192428241166e6d6e0d8d0dadfd4d6ded5d9d9d9d8d9dadbdc +dbdad9d9dadbdad6ddda7d1f31313e334021c4edddf8a45c67737a80909d +9b8c7c89a1b6c7d1d7dcbec8d7e1e2e1e0dfdfdedcdcdcdcdbdbd9dadbdc +dcdddfdfe2dad3f1e3dfbb7a867c85acdeeee8d4d6dedad3b8b89c908384 +898a89898d8f92978498886f877f9ea1826e274f676d8f959db4c1c2d7e5 +ebeff4f7f9fafffffffffff9f3f2f7f9efe7e2dad0c4b7ac6432598a7096 +9c98989d999d9796a0935d5f2f1b3f4739473c513c1e2a2e1e1d1221271b +151e252435342e2a27252525262929282928282a27252524272a2a2a2423 +21201e1f1f1e1d3933301605000b1651a8733d4b97cae6f1fcfbffff8848 +593d33252c433931212129302f3028161c1f1f212a34362e281319d8cdad +a6b5c2c8c2b8b0b3bbbebbb9b9babbbcbdbeb9bec5c8c5c1bebebcb9b7b5 +b6b9bcbfbabec6ccc8bdb7b8b9bab9b8babbbab9babdc0c0c0bfbfc0c0bf +bebd898c8666283d3bbd7b132732b12f2910132d2a1d3931322b3f452823 +302b33402e1ca0f7764a3851aaeac17745412e3f7f638dffe5a029c6f65a +43a1908acfc2bbb7b4b9bdb4bdd870272d343393823c20282b29262a3523 +2b2c2d2c2b2a29292b30343229211b1a1c1c1c1c1b1b1b1b222d2f252835 +362c2b2f32322d2b2a2b242d271b253f5c7380a4632d2a1814141b160716 +f2f1b41e3b4346484d4a4a5854524f3c2e3a44333226232d343230312e35 +383539403c3236384a5156411c222e32301d73f5e4eee7dfebf1e5e9f2e9 +ecebe9eaebecedeeedecececedeeededfbf68d2530304340573bdfffeafc +a14c444b5662788c8d837a8ba7c1d3dce2e4c7d1e0ebeeedecebedeceded +ececebebebecedeeeeefefeff2eae3fff0ecc88997909ac1f2ffffecedf6 +f4ecd1d2b5afadb2b7b9b9b9babbbec3afc3b69eb6a6bab38e7120425658 +797f88a1abacbfced8e0eaf1f3f4f7fafffffffff9f9fdfffffffffef5e7 +dad2916596cab0d1d0cac8cfcaccc5c5cfb87169381f414638463e533a1b +252717160f242e2620292c27332f2c2b2b2926221c191716181c20221f1d +1b191b1c1c1c16151312121314161b37323326211b3f5b9bf1b06262a5d6 +f2fbfffaf8f6793a4c353128324b43351a151d26282b26141b1d1d1c232d +2c2625182ceedfb0918e8e9295908c8c8b8b8d8e8e8f909192938e939a9d +9a969393918f8d8b8c8f92958f939ba39f948e8d8d8c8b8d8f908f8e8f92 +96989697979895949392565d614c1e3e44cd8f293b43c03c351c1d353225 +40373b33474f322e3b384050412fb1ff8458455fb7f4c87b48433143876e +97ffeda930cefc614aa89a95dbd3d4d6d3d9dbd2d7f0873a3d44419f8f48 +292e34312f333d2a2f2f2e2e2e2e2e2e303539372e241f1e202121212323 +2323273233292b38382d2d313535322f3032303d382d3852708793b7763e +3927212025242138ffffcd344e58636a726c6772706a634d39444d3c3b31 +2e383d3a373a3a424441474e4c4145485b6267522d313a3e3c2b83fffeff +fffffffff5f0f3e8f3f7f6f6f5f6f7f8f7f6f3f3f4f5f4f3fdf99a31362b +2c223d2ee8ffffffbc593e3126243856727e88a2bdd5e3eef8fbd8e0eff7 +faf9f8f7f8f7f7f7f9f9f8f8f7f8f9fafafbfcfefff9f3ffffffdb9eb1a9 +afd2fdfffff0f3ffffffeff5dddddfe4e8e5e1e1e3e8edf4e4f6e7cce0cf +e2d7a882273c463d54504f5f605965717a81898f9192989ba5abb2b7bdc6 +d1d9d3d1cfcecac7c4c58c6699d3bce3e5e3ecf4ebe8ddd5d9c078723f2a +4e564a584d6047262c2e1e1d162b362c262f342e38332f2d2e2c2b292726 +2726282a2f2f2a282627292b2b2b2322201f1e212225294c545c4a6294d0 +ddfffff3cacaeefffefaffffffff9053664d473b40564c3e221f272e2f31 +2b19202222222a3535333a2b33ecd39b766d66635e5552555b5e5b595b5a +5d5c5f5e5b5e6768676160605e5d5b595a5f626562666e77736862605c58 +57585a5b5857585b5c5d5c5c5a5d605f605dab9f83481a2724996a583852 +651b0d1021142b311d1a193412251c1c26243e54390088eb4c313840b5eb +e0771f232e3c745f84e4eeb9318dd0312a826b67abaea89b8c847b646781 +4c17262744b3a04013152c2628352f2e2423222326292d2d292726221e19 +17181a1a1a1a1b1b1b1b1c1d222829251f1d2225282a2b2c2e2f362a2122 +2e486680a97e4332312e373a252f134ffeffbd8ecbe7f0f0f4f8f8ecdac2 +8e625a584f4f30292831342c23211e25282b2f312b243939405678491316 +191f1e1455e3dbdce0dad7d6d6ddded3dbdbdbdbdadadadadbdadadbdcdd +dcd9d3da5621343b3d3425366c8bb2994a617783888f979e9a91929eb6c9 +d4d8dadbd6dae4e7e7e4e2e0e0dddddcdcdbdbdad9d9d9dadbdcdfdfd3f2 +e8c4641c07141210121d3b72bfede4e3dbe3dbdec7c5b4b0b0afafb0b1b2 +9daea7ae90708d889c976a61253e50484458667287a2bcc1cfd6e1eaeef3 +f8fbf9f9fcfdfffffffdfdfcf7f0e6dbcec5bd8c8a96718ca1a69aa3a5ad +a8a8af98626943214d5a4b433b33374f5a361e2b2738413833383b383736 +322f2c2b2a2b2d2f323334363738302e2c2c2e302f2f21201f1e1e1f2020 +2f52524a2c1a00000d3a9485494783bae0f1f6fcfdffba3c5f4634303b43 +3b3b372f2b2a231f1c110d12191e25282014170c009be2c69caebac2beb4 +abacb4b5b8b5b5b6b7b8b9bab5bac0c2c0bcb9b7b8b8b8b8b9b9babab9bc +c4c9c6bdb7b8b6b5b4b6b9bbbbbab9bcbebfbfbebebfbfbebcbb8b87764a +2b444ac4937c576c782b191820122b332123233e1f32242429273f5b4b18 +a2ff664b525bd0fffb933b3f4a54826c95f7ffd452b2f75a52ad9692d3d3 +ccbcaba3967e7d965d242f2f48b5a3431a1c2f2625322e312c2d2e2d2b2a +28282a2a29251f1a181919191919181818181a1b21292d2a27272c2d2d2e +2c2b2c2c2f261e233550718bb081412721171c1b08180643e8d76a1c3e4a +504c5050494954563d2e43575a5e3a2d242b2e2b28292024272a2e302d26 +3d3d445a7e4f191c1f25261e63f3ececf0eae8e8e7f0f0e5eeedededecec +ececedededeeeff0eff1f3f867282f3741423f5588a1bd983d4649515f70 +8290928c90a2bdd3dee2e1e2dfe7eef4f4f0eeeeeeeeeeedececebeceded +edeeeff0f1f1e3fff7d370281320201e222f4e88d7fffdfcf1f9ecefd6d7 +cfcfcfcecececfd0bbcec6cfb192afa9bcb17d6d2739483e384c5965768e +a4aabcc5d2dde4ebf3f8f7f9fcfefffffefefffffffffef7f2eee9b8b5c0 +98b0c5c9bcc5c4c9c1bdc0a86e734927505d4e463f3735494e2b1325273c +49413a3c3a322c2a292a2b2a2724211f1d1e22252a2d2624222222242323 +1514111010111214264d4e4d3c341b274981e0c7745e8ec2ecfcfefffafb +ad2d4f382a2b3a47443f2d1f1e1f1918170c0b1014191e21160a0c0b14b9 +fdd38b8984898f8c888784828a8a8a8b8c8d8e8f8a8f959795918e8b8c8c +8c8c8d8d8e8e8d90989d9a918b8c8b8a898b8e90908f8e91949595949495 +9493919058575334234857d7a9926b7d873827252e1f373f2c2c2d48283b +31313836516d5f2cb3ff755a5f66dbffff973f424d588b759dfeffdb59b8 +fe605ab49f9bdde3e6dbcac0b19795ab7135403c54c1ac4c222438302e3b +36382f2f2e2e2e2e2e2e2f2f2e2a241f1d1e1f1f1f1f1f1f1f1f1f20262d +302d29282d2f3031303031333f3733374863859fc3924f352c2125210c22 +2067fffc8833515f6c6e73746a666f6d4e3a4b5c5e654439323738302b2b +2c3235383c3e3a33494950668a5b25282b31312a6efffffffffffffff7f7 +f0e5f5f9f9f9f8f6f6f6f7f4f4f4f6f6f5f5f0f87132352e2621264d9dc6 +eac0574d3a2e272d415f7f90a6bdd0dfe8eefbfceef0f8fdfdfcfaf9f9f8 +f8f7f9f6f8f6f6f6f8f9fafbfffff3ffffe6863e29383a3839435f95e3ff +fffffcfffcffe9efedeeeeebeae8e7e8d3e7e3eed4b7d5d2e5d69d83363f +463528343739404f5e5e6f737d8183888d919399a4aeb8bfc5c5c9cbcdcf +cececed0d2a9acbf9fbcd5ddd7e1e0e1d7d0d0b57a7d55335f6c5f554b42 +405358331929293f4c464245483e342e2e2e302f2e2c2d2c2e2f32353b3b +312f2d2d2e302f2f21201e1d1d1e1f2237636f6e536794bbcee9ffffddd0 +def3fcfeffffffffc1446952423f4a534d4836292727211f1d1210151a1f +25281e151d1b1bb7f4c2776e605c59514e52565559575758595a5b5c575c +6264625e5b5a5d5d5d5d5e5e5f5f5e61696e6b625c5b58555456595b5b58 +575a5a5b5b5a585b5f605e5da1a798553117066776346b320e001a161236 +2c0b3b640f161f25171b261d26282a0077eb54475c7bcdebd45111161a2a +48438debdd64059bcd20257d6f73a0a4998b828a8d818bb069111b344d6f +5c281f20362f2e351c2b2423222326292d2d2b251d171617181819191919 +1b1b1b1b1d141d3437241b23232224262b2d2e2e271c2130416493b0c352 +29342b2b30322e2e1377fddf94b2dcf4f9f3f5fdfde4caaa68465a584453 +251e1f2c3530292a2d2b292c2f302f3236373a6098551f1a2025221f3eda +dbccc5d6d8d2d7deddd9dddcdcdcdbdad8d8d9dadadbdbdcdcdad6c52925 +313f383439290710242648777d88939ea29f9e9ca8b5cad7dbdadcdde1e3 +e7e6e4e1dfdcdfdededddcdcdcdad8d8d8d8d9dadddedaf1902d08232820 +2327271a0a1a5c9fdfddccdbdcdcc7c7b8b3afafb1b5b5b3bac3afa58273 +9ba3a09d686e332b4236343d464e5d738690a4b0c1d0d9e1e8ebf4f4f8fe +fffffffffffefdfaf3ece4dee4ceb7b59297aaa8b7b0a5aebac0bd985d6c +51205065624b3b353a3a3227211926343d342e3335323838343232302d2e +2b2a2a2823201e1d1e1d1b1c1d1e1e1c1e1d1b1a1a1c1e1e2546443a2220 +0400041e78a0604569a7d0eceefbfcfff4445e50363e4b4645493d2a1e1c +120d100f12121519222622181e1d0050e8df98a6adb6b5ada5a6a9a8b1af +afafafb1b2b3aeb3b8bab9b5b2b1b2b4b7b9bab8b6b4b8b9bec3c1b9b6b7 +b6b5b5b7bbbebfbfb8babcbdbcbcbdbebebcbab885918e5942342c929f59 +8a4c2110282018392f1344701d242f3522262d242b333c1391ff6e617696 +e8ffef6d2d32364259519ffff58126c0f4494da5979bc6c9bdaea4a9ab9d +a6c77e232b405778653128293a2f2b321b2b2c2d2e2d2b2a28282a261e18 +1516171716161616161616161b121c353b29232b2b2a292a2c2c2c2b2319 +1f33466c9bb8ca55262c1e17191916190464d9a134344752564f4f534941 +4b4b211849594f602d201b262f3131322f2a282b2e2f31343a3b3e649e5b +251e2227292a4dedefe2dcecede4e8efece8eeeeeeeeedeceaeaebececee +edefeff2f2e1382c313f4046544824252c223a5b50596c818e929599a8ba +d2e3e8e6e4e5edf1f3f4f2efedecefeeeeefeeeeeeeeecececececedeeef +ebff9f3c1732342c3135372c1d3074b7f8f6e2f1ededd6d9d0ccc9c9cbcd +cdcdd4dfcdc4a393bcc4c3be817e3a2b3e312d373f455065757d929fb0c0 +cdd7dfe4edeff2f9fefffefaf9fafefffffffffffff8dfd9b4b5c7c3cfc6 +b6bdc5c6be975a694f22526a6753443c3a37281c161022343d332b2c2922 +23212325292a26231b18151312141617141311121314121012110f0e0e10 +12131f41413d303722243d62c1e08a5c74aedffbf9fffafbe5314739222c +3e3b3d41301a111108060b0a101010141b1f180e131c136cffeb8882787f +8584807e7a77828383838385868782878c8e8d89868586888b8d8e8c8a88 +8c8d9297958d8a8b8b8a8a8c909394948d8f91929292939393918f8d5362 +6b423a3839a3b16c9c5b2f1d352c26483e20537e2a313e44343840373f47 +5027a2ff7d7083a1f3fff67131353946615ca9ffff892dc6fb4f55ada1a5 +d1d9d5cac0c5c5b3bbd98f31384c61816c382f304339343b23332f2f2e2e +2e2e2e2e302b231d1b1c1d1d1d1d1d1d1d1d1d1d201721393e2c252d2d2c +2c2d30313132322a34465a81b2cddd68373b2820211d141e1782ffc6504a +5a67717173786c5e66613323515e5568382d2932393533343b3836393c3d +3e4146474a70aa67312a3134333052f1f6efeefffff8f8f9f1edf8fcfcfc +fbf8f6f6f7f6f6f5f7f6f6f6f3e23f323133282c454b42505a474b58392f +313f4f6584a0c0d7e5f1f1f2f9fafbfcfffffdfcfaf9fcfbfbfbfcfafcf9 +f7f7f7f7fafbfefffdffb24f2c474a444b4f4e402e3d80c1fffdedfcfdfd +e9efeceae4e2e2e5e5e4ebf7e9e3c6b9e5edebe19f954a333f2d25292c28 +2d384143545a6a737b80848992949ca7b2b8bac0d5dddedbd7d2d2d1e0d2 +c4cbb3bdd7d4dbd3c6d0dbe0dcb6778465315e706a554b46444031241c13 +23343f383234372f2c292b2c2e2e2d2b26242422222223231f1e1c1d1e1f +1e1c1e1d1b1a1a1c1e212d55605e4a6b90acc0cdffffeec4c6e4f2fefdff +fffff84763553d44524c4c4c3a241a19100d11101515161a22262019242c +1a6dfcdf786a5856544e494b4e4c545252525254555651565b5d5c585554 +57595c5e5f5d5b595d5e6368665e5b5a585757595d5e5f5f56585a5b5858 +595c5e5e5c5a9a9d90432b1334b446588f45872913181225154bf2ed3c0b +5f51323032272e2a232681e05f342968aa9c6c0c212a152a304874855516 +00a6cc19207b899aa89fa79b95a2aba1adcf5e0006282a0301080c201724 +2e30202d2423222326292d2d2d23181315181a191818181a1a1a1a1a2016 +1e353c2b232a242425272e2e2c281b1d28365493ccdc852924342a272129 +3a261fa1ffb3a0cfedf8fdf9f4f9f8dfb389513d5048333c3f37363e3f36 +28254336292626272f3d2f292b41683c322c373a34322ccdd6b992c5dcd5 +d8d8d9e1dad9dadbdbdad9d8d8d9dadad9d9dadae88e132c2e3a33331e19 +1f2f233d71587b8899aaaaa2a3aab7c3d4dbdcdadee0dddee3e3e4dfdbd9 +dbdadadadbdbdcdcd8d8d7d7d7d8dadaf1bc4e2c2e41464c41434c514637 +425ac9e2d4dddddcccc9bbb5b3b6bec3c1bca3adafb6a48f97877b8b6176 +42234c4c3b2c384447403f546b7a8fa5b6c5d1d9e9ecf0f6f8fcffffffff +fffdf8f1edeadce6d5dbcbbdc2b1b1bdbfc3b8b3b8a17b866a273b404334 +5b56553a1b2837212b34362c2932393b3a3a363632302e2d2e2f2b28221d +1717191a1a1b1c1c1b181b191717171a1d1e13272b3121230b00030f61b7 +7e4a5796bfe3edf3fbffff784f513c4552474849432b20211813181a1916 +16192124211a19210d18d1efa790a0ababa39b9da1a1a9a6a6a6a7a8a9a9 +a6aaafb2b3b1afadacafb2b5b6b6b4b3b7b6b8bdbcb7b5b6b5b4b3b5b8bc +bdbdb7b9bbbbbbbbbcbebebcbab8828c8a4840325cdf707daf5f9d3b2426 +1e2e2158fffe4d1e7264433f3e333939383f9bfa794e4382c5b787273c46 +3143425a889c70331ec9f14046a3b1c0cec4cbbfb9c4cbc0caea78111d3c +3d15101719291b242d2d1f2d2c2d2e2d2b2a28282c241914141719181515 +1515151515151e141d363d2f28322c29292b2d2d2a25191c29395999d2e2 +8a2a212e1e180e152912087ecc63334a565556514b4f4d46453a1619434b +3d46453630363c37322f453528252526313f332d2f456e4238303438383b +3ce3f3d7b0e3f6ece9e8e5efeaeaebecececebeaeaebececebebeceeffa6 +22363342424a3c383a402736603b525c758f97969ba7b9c8dce7e9e7e7eb +ebeff1f3f2efebebebececedeeeeefefebecebebeaebebebffcd5d3b3d50 +525850525c63594d5a72e1fbeaf3eeeddbdacfcbc7cad3d8d6d2bbc7cad4 +c4b0b8a9a2af7e8c4f2a4c4c392b3540403631465a687e95a7b6c5cedee1 +e5ebeff3f6f7f7f8fcfffffffffffdfff4f9e7d5d9c4bfc7c4c2b3a8aa91 +6b7860233b444d3f665f5939141d2c18253032261e2123211c1c1f222525 +211d1c1b1613121111111110101112120f0c0f0d0b0b0b0e11140d242732 +2c372728394da4f3a763629fd1f7fcfcfbfbf86032321d27362e3134311b +13160e0c1315171411141a1d17100d1e1e31eafa9b7071777c7a76757270 +7a7a7a7a7b7c7d7d7a7e838687858381808386898a8a88878b8a8c91908b +898a8989888a8d9192928c8e90909091929393918f8d52606832373566ef +808dbc6ca8452e312c3f3168ffff5d2d8375575454494f4e4d53acff885d +508fd0c0902e434a35484c6491a4793b25cff9474fabbbcbd9d4e1d9d1dd +e2d4dcfb851d25434319151c1f30242e353627352f2f2e2e2e2e2e2e3229 +1e191a1d1f1e1c1c1c1c1c1c1c1c2319223a41322b342e2c2c2e32322f2e +272e3d4c6fafeaf8a03e323c281f14162211189cf388505f676a74757276 +6f645e4f28254d52465051443e43453b33305143363333343e4c3f393b51 +7a4e443c454641403be0efd9b8eefffefbf7f1faf9fafbfcfcfaf9f8f8f7 +f8f8f7f5f6f5ffa827372c332d383c4c65745657682d322b374c5c6c8eb0 +d2e6f1f7f2f0f8fdf8f9fefffffcf8f9fafafafcfdfdfefdf9f7f6f6f8f9 +fbfbffdf704e5265686e676973776a5b667cebfff5fffefdeeeee7e3dfe2 +e8edebe9d3e0e8f6ead9e5d6c9d19ca35f34544e3a272e342d1d14212e36 +485a66717b7f8e8f959ba0a4a9b6d0dcdbd8d2cfcdcfc8dad2e1dbd5e1cb +bfc6cad0c9c6cdb68f997934434545396a6862411c25321b252f332a242b +2f2e2826292b2c2b2a27282725221f1d1d1b1c1b1b1c1d1d1b181b191717 +171a1d1f1935425148698aa2b5baf2ffffc0b4dae9feffffffffff764e51 +3c434f4343433d251c1e1613191b1c19171a21241f1b21312835e7f28d5b +55524e46424448474c4b4b4b4c4d4e4e4b4f5457585654525154575a5b5b +59585c5b5d62615c5a5b585655575a5e5f5d575759595957585c5e5e5c5a +99917f362d1853d281bf5d83a33c7562455d6c74bf956f5ea0a6a6b4ab9d +acafc8b2b8c129000d5a682f13001a1a0c112c5672772b1011b2c5333a89 +a3b4b1a4b1a79fa4a49393a94d263c4346333d403d61142735282e2d2623 +222326292b2d2c231814181b1a181a1a1a1b1b1b1b1a1b1618232b292628 +2727282b302c261f2426283e83d0debb2d1e302b2524192e252036ddf79e +c0e0fef9fefff2ece6caa46d4d46403c3933413b425563625b5b7a67503f +2f24252f40363b302d2f4d473d3e3b3a20bedbb882bad8d5d8d8d8e1d6d6 +d7d8d9dadadad9dbdddcd9d8dadcf0481a342d312f2f34442b0e2f5b6d7b +7e8da2b4b4abb0b9c7ccd5d8d8d9dfe2d9dce2e5e6e1dad4cdcdceced1d3 +d4d5d6d6d7d7d9d9d9d8e9964f614f41444b4c4342494b464e5d9bdfdedf +dce0d8d0c1bdbdc3cdcfcac3c4b8aeb2a7a0a7a0737d566e44163539322c +465351432a333e4957677b92aab9c8d3e2ebf0f4fbfffffffffffdfaf8f6 +ecf4e6e7eadadfcbc6c5beccd9dcd6b17c8470392f232c3154364a5d3315 +20282e373833343c4547403e3a3837332f2d2a2b2b29272320201a1c1c1e +1f1d1a171615131214181c1c151e2d4b3d2e0b00010950bea560507facd9 +f0e7fcffffc7484d45484d49463f3a231e24211f201c151314191f1f1f1c +18151400a8f7ce7a98a2a19a94969c9d9f9e9e9e9e9f9fa09ea1a6aaaeae +acaba6a7a9acaeb0b2b2b3b0b2b6b7b3b2b3b1afadaeb1b3b5b5b7b8baba +b9b9bbbdbebdbbb886857e42443a7bfeabe57da0bc538976566e7f87d4ac +8678b9bcbcc9bfafbcc1e1cdd3dc45192976844c30143737292d436a888f +472e32d4ea5960afc9d8d5cad7cdc5c9c9b7b4cb6e445960624f57554f6c +1b2a34252d2d2b2d2e2d2b2a29282b221713151817151515151414141415 +181317242c2c2b2d2c2c2b2e2f2b231e2327294185d5e2bd2d1c2d251b19 +0a201b0d10a2a73a4a596756504e45454b484c32222b3840413b43393a4d +606665657c664f3e2e232731443a3f3433355349393a3e4435dcffdfaae1 +f9f0ede7e3ece5e7e8e9eaebebebeaedefeeebeaeceeff5b28413942464c +5566451e304e555c5866839da3a1a9b7c8d3dfe5e4e6e9eee9eef2f7f6f3 +ece7dee0e1e3e6e8e9eaececededecececebfaa75e705e50535a5b52525b +5e5c6675b3f7f4f5edf1e8dfd0ceccd2dce0dbd5dad0c8d0c8c2cbc69ea8 +7988551f3b3d342f49545140232a2e3644556a8199a8b8c4d4dde0e5ecf2 +f4f7fdfffffffffffffffbfbfdeaefd6c8c2b6bfc4c2b9925e6b5e2e2c27 +363c62404e5c2e0b151d252e2f27212225231c1d1f2123221e1914131313 +15171a1b131212141513100d0c0b09080a0e1215121c294b433e26213343 +8df5ce7b5a88c1f1fff4fffbf8ae26261c1f2521201e2413111817181b17 +12100f14181815120c122213bdffc55f6e71746f6c6d6c6d727272727273 +737472757a7e8282807f7a7b7d80828486868784868a8b87868785838182 +85888a8a8c8d8f8f8e8e90929392908d5b5d5f2c3c3b83ffb9f288a8c359 +907f66809098e7be9889cdd1d1ded7c7d5d9f5dee4ed532735828f54381a +3d3b2d314b75939952383bddf36269b8d4e4e1d7eae2d8dcdbc7c3d5774c +5f6465505856537223333c2e35352f2f2e2e2e2e2e2e31281d191c1f1e1c +1c1c1c1c1c1c1c1c1f1a1d2931312f313030303335312a2631393d549ceb +fbd445313e33241f0f1f0f061fc0ce60646a786b737873706b626244333a +434b4c485247495a6969666688745d4c3c31343e50464b403f415f564a49 +474630d2f5daaae8fffffffaf7fef8f9fafbfcfbfbfbfafbfdfcf9f6f8f8 +ff5f293a2b303447668b7e5a6068513f2b2d425a6b7da1c4e4f0f8f6f0ef +f5fcf6fafffffffffaf6eeeff0f4f7f9fafbf9f9fafafbfbfbfaffb97183 +7365686f7269696f6f6a727fbdfffffffdfff8f2e5e2e1e7eff2efebf2ec +e9f6f3f0fdf7c8ca979f672e474840385058513b1b1b1516232f3f536570 +7a7f8d92929499a7bac6cbcccecfd3d8d6e3dae0eadde5cebdb9b4c6d5db +d7b28089743e33262e366549576435131b21262f302b272b302f28282829 +2c2a262220202120212124221b1b1b1d1e1c19161514121113171b1d1b29 +4067636f7789a6b1e6ffffccafcde0fdfffcffffffc341453c3d403b352f +311e1b222020221e1917161b20201e1d20252f19beffbc4e56514b423b3f +4445484545454546464745484d51555553524d4e5053555759595a57595d +5e5a5958565250515455575759585a5a5957595b5e5d5b58998e7f432e07 +0e436754004e3438d1c2c6d6b97fc2a3ab9ba493838b84809a9f41316c94 +1e11343f4f1f293a28223725465a83ae66402693984b4b76807e7a766f6d +6a6f726764716e6b787a8483847a89b32c30362130272624232326292b2d +29211915181a18151b1b1c1c1c1c1c1c1617151720282923292a2b2d2c27 +211b1e212b65c5e7a4542c47472721211d331c334cf1c7ace0fcfff8ffff +eee2ca97905f473d292a353040322b302f22130c19171516191e2630252c +412f1e3a321e2c2e2f2c18addfc194b3c9cdd4d9d6d2d0cfd0d1d2d4d6d7 +d8dbdedddbdbdde1d81a2837332d2d2b28301b0a4561517d879ab2c0bfbd +c1cad6d7d7d8d9dae0e2dadce1e4e3dacec4bdbcbec0c2c5c6c7cfd2d5d8 +dcdcdbdadc925866474049444e4f4d463c3845557ededfdbd6dad6cbc0bd +bcc1c8c6beb5b3a2a7b4a78e807786805868582b3735263b655d5d653a28 +373733333b4e667992a7c2d7dfe6f0f8f6f9fffffffffffffcfbf6f1fbf1 +f6e7dfc59c959a9a8e6056645d4631282d3d5737547954252734202a3336 +393f413f45423c393835312f2a2a2a2824201c1a1616191a1b1814101413 +111013171c1d1d18254b3a2b0d0000083aabc982546098cbece6fbffffff +63464b49454b40372a1b1d2a333c3c2f231a14141d2d44545b3421006bf6 +f483909b9b9590929798989797969697989897999ca1a6a7a6a49f9f9fa0 +a3a7aaacaaa7a8adafacaaabafadaaaaadb0b2b3b5b6b7b7b6b7b9bbbebd +bab88d888452492b396f927a206d5054eadbe0f0d49addc0c8b8c0af9ea6 +9c98b2b85c4c87af3a2d505b6b3b4557453f54405e729bc9846148b5bd70 +719ca4a29e9c96979496998f8a9895919ea1a8a7a7989ec03533351e2f27 +2b2c2d2d2b2a29282620181415171512161615151515151513141416212b +2c282c2d2e2e2b261e1a20242e68c7e9a6542a44432117161128131a16a2 +6138667770564c4941494b3851362b2d27303d363f2e22282e271d171b16 +1415181d283229304533244038202528323a31d0fff2c5e3f2f0eeeae2de +dfe0e0e2e3e5e7e8e9ecefeeecedeef3e929374746464b4e4c5133174250 +365a627895abb1b4bec9dadde3e5e5e7eaeeeaeef3f7f5ede1dad0d1d3d7 +d9dbdcdee5e8ebeeefefeeededa36775564f58535d5e5e584f4e5c6d96f6 +f5f1e7ebe6dbcdcac9ced5d5cfc7c8bbc3d5cbb5a8a2b5ac7c866a383e3b +2b406a63616539222b2724242b3d56677f96b2c5ced5dfe9e8eff8feffff +fffffffffffbfffbfeeadcbb8d807d796739314342352728334762415877 +4e1e1d2b1721282722211d192121212223211d1a100e0e0e0e0f10100c0c +0d100f0e0a060a090706090d12161b1722483d362423293c71def19f6069 +afe6fff4fffcefeb3f1d1e1a171d1312140b101e2935372a20170f0f1626 +3a494f312a0980ffef706b6e6d6865676a6b6b6a6a69696a6b6b6a6c6f74 +797a797772737374777b7e807e7b7c8183807e7f83817e7e818486888a8b +8c8c8b8c8e9093928f8d6564663f422b3f789b8326725458efe2edffe5ab +eed2dacad5c4b3bbb4b0cace6f5d98c0483b5c677646505f4d455a47687c +a5d28e6a51bec6797aa5b0aeaaa9a5a7a4a5a89b939f9a949fa0a6a5a396 +a1c63c3c3d27372f2f2f2e2e2e2e2e2e2d261e1a1c1e1c191d1d1d1d1d1d +1d1d1a1b1a1c2630312c31323333312c25222d35417bdeffbf6c4059542f +201c1524041326c2895d7d88826e777d7777684c64483a3a343c4a444f3d +3335362b1e1927242223262b353f353c513f304c442d3536393b2dcaffef +caeffffffffffaf6f6f4f7f6f7f9fbfafbfcfffefcfbfefff12c323c3231 +3f546e877b5b716225302b38536c8095b9d7f5fdfdf8f1f0f4faf7fcffff +fffbf0e8e1e2e4e9ebf0f1f0f3f5f9fcfefefdfcffb57a886b646d687475 +726c605c6a79a2fffffef7fbf6ebe0dddce1e6e8e3dfe3daeafffdece3d9 +e3d39ea28049504b3e537d736d6f3f221f17110f14233541546277838687 +8d989da8b3bec5cdd4dadfe3e1e0ece3e9d7cdb1867f8284794c4354513f +2f2a3146684b6382582625301a242c2a282927242d2c2a2a2c2a26231d1c +1c1b1b191a19151517191917130f1312100f12161b1e201f356360646777 +94acd6ffffe5b6b6d8f9fffffffffafc593b3f3a3437282421161a28323d +3e31271e16161e2e43576346391385ffe9625851493f3a3c43444240413f +404042414142464a5050504d484646474a4e5153514e4f54565351525652 +4f4d52535555575859575657595b5e5d5a588b866e341e16100b060e0705 +1b0d13269e9c9f8cae400012292a49849a94937c3f316281474f6f50526a +5a6051536b5d5c53595749674739483d313c3b2d3235262e2b272b282226 +27231b2d2b231f2e78ac26202a252c2c2624232426292b2d2a241c181818 +1a181b1b1b1b1d1d1d1b1917181d272e2d262b2c2b2824201d1b16284896 +d9ac543974734a28201f2931344e6fd3bbdffafff6f3fffbeae2aa536753 +392924272f393d2b1f2022190e0a1116140d090c0d0d28405350628c321b +1f1f22190d90d3be8e9db9c9c9cdcdc3c5c3c1c1c2c4c8caced3d8d9d9da +dfe599122d363b302b26280e11264a67718493a8c0c9c8cbd0d3dddad9d8 +dcdfe2e1dadadcdcdacdbfb4b4b3b4b4b6b7b9bbc1c5cdd4d9dadbdadf9e +6f9471352b4c3f4b575e636665608eebe1e0e0dcd8cdc7c4c2c4c4c3bbb2 +ae704f4e483c363e251c0c202d18242d1e31553c3d552f1d38342c221e23 +2d3850638098aabdcdd9dde5eff7fbfcfffffff1fffffffffff9ffffeac8 +95736b525a65534f2f362b334037454b372b2a1e1d2733383d404340413c +393534333132393a3a352f29221d1d1d1f21221f191514120f0f12171d1e +1b151f3d2d2d1d0c00081b7cd7a15f4582b9daecfbffffff9c434a4a404d +383a30262833445958422b1f16131b3155727546200032ceffad85929793 +8f9092929392929191929293919194989c9e9b9897969797999b9d9f9e9b +9ca2a5a2a0a0a8a6a3a4a8acafb0b2b3b3b2b2b3b6b8bbbab8b789877b49 +3d3e3b3831352a243a2b3245bebec1aed06423364d4e6aa5b9b3b2985a4c +7d9c636b8b6c6e86767d6e70887a776f75756787695b6d6256616052575b +505a575357554f53544f475a58504c5592be31242a242b2c2b2c2d2c2b2a +2928272119151515151314141414131313141616171c282f2e292c2d2c29 +231f1c1b1a2b4b99d9ac5437706e411d14121d222228246f4363838d6952 +4741445e561f423b2b23282f373f3c27161a211e18151315130c080b0f0f +2c4457546892381d1919262b2cbcfff8c8d4eaf1eae4ded1d5d5d3d3d4d6 +dadce0e6eaececedf2f7a7203d4b5751524f4d2f262e43525261728ba7b6 +bcc5cfd6e2e3e5e7eaececeeecedeff2ede3d4cbc9cacbcdcfd0d2d1d6db +e2e9eeefeeedf2b180a582463a5b4e5a6870767c7c78a6fff7f6f2eee8dd +d4d1cfd1d3d2cbc6c58c70737269676f54482f3d3e242a3224375b424258 +311c302b231913161f2840536e869aabbcc9d2dce8f0f4f8fdfffff2ffff +fffffff7fffbdcb17951452a31423539202f2937463d4749312322171822 +2a2c28251f1c21211f2021201c181b181613100f0e0d1011121515130d09 +08060505080d13171b141d392b342f2928364baaffbf6d5199d4f0fcfffd +f1f67a1a1d1d13210d151a161b273a52533d281c110e142a4b676941270c +44dcff9f656a6a656263656566656564646565666464676b6f716e6b6a69 +6a6a6c6e7072716e6f75787573747c7a77787c8083848687878787888b8d +92918f8e63676138373d413e383c2e273c2d354ac9cacdbadc7231445d5e +7bb6cdc7c6ad6d5d8ead717997787a91818576789082807a807f72927365 +766b5f6a695b60665c65625c605b545657504657534b455093c2372d322c +33342f2f2e2e2e2e2e2e2e28201c1c1c1c1a1c1c1c1c1c1c1c1c1d1c1d22 +2d34332e3132312e29252223263c5eacf1c46c4f8782522b1e19211f1625 +39957088999d7c737d80828f6e2c534b3a31343c444f4c36272629221917 +1f23211a16191c1c38506360749e442927252f2f2fbfffffdef2ffffffff +faebeeebebe9eaecf0f0f4f7fefdfdfcffffb22333383e3c4d6181767976 +6d5b35292f45657c92adcde5fffffffcf7f5f5f6f8fbfefffcf1e5dbdcdc +dde1e3e6e8e6e7e9f3fafffffffeffc292b7965a4f70636f7c84878a8a84 +b2fffffffffcf7ede7e4e2e4e6e5e2dfe4b19da7acaaaab18c77575f5a3c +40463a4d715855673e222e261e140d0d1418293246545f69767b767d8e9f +acb9c8d4dbd0e4e4e6e5e5e0f1f2d3a96e473c222b3e353c25373442544b +56573f302d1f1e282f302f2e2b282c2a282727262523272624211f1a1917 +1a1b1c1f1f1d171312100e0e11161c1e1d1a2a505062616d8aa6baffffff +c5a3cbf1fffffffffbff92383e3e303a212627212531435a5a442f231815 +1c3254757d5539194edffd9656514b413b3c3e3e3f3c3e3b3d3c3e3d3d3b +404248484742403f4040424446484744454b4e4b49474f4d4a494f515453 +55565654545558585c5b595873817642305053333a57524e5d69554e6736 +56474e544a5257443f4b38293e3b413e3a3132363a1b44a13e132e2c191c +2c0d2824151d211c0b230e0f180e1c1f131f1b10151813100f1c0b1a111a +25456ba735252e35242c2624232426292b2b2d27201a18191c1c1a1a1a1a +1c1c1c1a1b16192732302c292b2a29241d1a1c1e253f69acb95a337ca77c +352321233b32525e95b4dbfffffde7edf9ecdede931f3a492f20383d3c58 +422c1a191a150d0c0911100807131a1a1e332b306daa201a201c1d0e0478 +c1ae6e80adc7bcbac0babbb8b5b3b3b6babcc5cbd1d4d5d8dee5631c2933 +42322a211308092b4e67808199b0c5cbcad1d7d5dbd7d6d9e0e3e3e0dddb +dad9d5cabbb1b2b2b1b1b2b2b3b3b1b9c3cdd4d7d9d7d6b77285a9ad8d84 +8882797e959f886694e4cfd7e1dad5cec4c0bdbdbdbbb5aea94c15161e17 +06060b0c0e1b271d2a432921371e203a262d262a2b2a231c1b1b1b263b51 +6b86a1b0c6d0dee7ecf0f5f8ffeffffffffffffffefdfefffff5ca8a6069 +4a52345543433c383d3f3a3d39271b20272b30373d3e3a34312f2d2f3034 +35383a37342f2a241c1a1c1f201a150f1312100f12171d1f1c2235504045 +2e0e090b004fd5b1693a71aac8f2f3ffffffca4144493d4c313d2d221c1e +2d443f2215131617171c2f4232200d0617affccf7a8a959591918e8d9090 +8f8f8e8f8f908e8d8e929596938f91929293939393939692939a9e9b9897 +9b9897989da2a6a7afb0b0afafb0b3b5b9b8b7b5788b885d537a8060657f +76707f8b78748e5e7e6f767c72787d6a636f5c4d5f5c5e59554c4e525637 +60bd5a2f4a493538482b4642353d433e2d4833343d3341453e4b473f4448 +4342414e3d4d444d587289ba422c3134232c2b2c2d2c2b2a29292a241d17 +1516171713131313121212131815182631312b2a2a2b28231c191b1e2945 +6cafba5b3178a27328150f0f26182a233c4764969480594c453e4d78660e +2c3e2b224047435b41281313181817150b100f0706121c1c22372f3473b0 +261c1d1b262228a7faeeafbee5f7e3d8d8cecccac7c5c5c8ccced7dde3e6 +e7ebf1f66f2a3b4c655c574e3a271a2f424f5d5b7b98b1bbc1ced8dbe2e2 +e4e8edf1f0efefeef0efebe0d2c8c9c8cacacbcacbccc8ced8e2e9ececea +e9ca8396babe9c9397918a90a8b49f7dabfce5edf3ece5ded3cfcccccecd +c9c6c36b3a404f4b3d3e3c362f3437262e482e273d242740282d25282925 +1c16100f0e182a425c7892a3bcc7d4dfe3e8edf1ffebfffffffcfffffbfa +f3fcf6d6a56238442a3620483b413b373a38323531211a1f22211f1d1d1c +1f1d1c1c1c1c19160f0e0b0b09090a0a080a0c0f100d080307060405080d +13181c21324b3a473c272d352d7bfed17a4a87c3ddfffafefaf2ad1d1c20 +16260c1f17120f12233d3a1d12101112101525372718101227bcffc86267 +696461616261636362626162626361606165686966626465656666666666 +6965666d716e6b6a6e6c6a6c71767a7b838484838385878a908f8e8c5a70 +724e4d7985656b817671808c7a77956686777e847c838a77717d6c5d706d +6e6a665d5c6062436cc9653a555140435335514d40484d4837513c3d463c +4a4e475450454a4c4541404b3a483f46516d89be4834383c2b342f2f2e2e +2e2e2e2e312b241e1c1d1e1e1b1b1b1b1b1b1b1b1f1b1e2c3736312f3030 +2e29221f212634537dc2cf70498fb8883a241b182b19282958708ebbaa92 +7375848590aa7b18394e392f4d53536c51392321231f191a171e1d151420 +29292e433b407fbc322826232d2b34b9ffffd9edfffffffcf4e7e6e2dfdd +dde0e4e4edf1f7fafbfcffff7b2d2f3647485a6d7b7a7278684d331a3250 +7288a0bfdcebfcfffffffdfaf6f4f9fcfefdf9eee2d8dbdddee0e1e2e3e2 +dadfe9f3fafdfdfbfadb95a8ced2b1a8aca69ea4b9c5ad8bb9fff2fafffa +f4ede6e4e1e1e2e3e1e2e6976e7c92968d897e70625d5943475e443d533a +395035372a2b2c2b231a140f080b162333475b5f656a7b8c96a0aebad1be +dad9dbd9dde3e8e9e1e8deba8a481f311d322251484f4b474b4841443e2b +2225282927282a2a28252322222221201e1c1d1a1a1617151315171a1b17 +120d11100e0e11161c1f1e263b616070615d85a3a4e4ffffd2a1c1ebfaff +fffffffec1393e40313d1d2b241d191c2c45412419171819181d2e45382d +232234c4ffc256534e443d3d3d3c3c3c3b3b3a3b3b3c3a393a3e41423f3b +3b3b3c3c3d3c3d3c403b3d4348444240443f403f44494d4c545355525252 +56575c595856514e49423b36343434363535322e2b292b2229111d141b28 +1512060b1904271a1c16271b271c201eb8d8a71b1c5662455d2d30271c28 +1e1648a0a0a7981c1a241d1a18151414151413160f0d12141d35698d3823 +292a2f28262426292c2f30302e2825282e2c201617191a1815161a1e1e22 +272a29282b2c272729241a141a243549859c58282d2f58673a2a2e2b3e4b +7288a9d8ffffffe8e8e3dbdee8cc6502303f3b19325a46464325141b2218 +0f120d0d0d0c08080f1b1f342936488c3f0f1d25210e00235f564940474e +70b9b3b8b4b4b3b2b3b4b6b7b6c0bbcad0cddfda1e2c3639353023170d0c +1c3c57697f91a3c1ccd5dacfd5e8dfdcdbd9dadde1e2dcdadad8d1c6b8af +aeaeafb1b3b4b3b2b0b2b5bac1cbd4dbe0a69d8c84afd7f0e6e7eae7f0e9 +a25da8dad6dcdadcd4d2c2c0c2c0bab6b2b0a677102e2d0e0c0b18031522 +2a2d2a4c363b332a2c2e2b2d27262219151416181b1c222831405b7690a5 +b3bed2dfe6eeeff9fffffffffffffafaffffffffffffe2b377493c505b4f +46424849392c2a241a1b20273138393535312f2e2d2f34383f434544413b +3630261e1d1c1d1b18141514121011141817241a29363237341b010d1537 +addd80345999bde9f0fffffff74e47463c3c332e2623212427241c161511 +1010171f282c141e18020672eef1738b8b9b919688908e8e8b8a8a8c8f91 +87888b8f92928f8d8d909293918e8d8c8b8c8c8e8f909191989694939699 +9c9e9ea2a5a6a4a3a5a8b2b1b2b35f60616264646464605e5c5956555352 +574f563e494046513d3a2c313f2a4b3e3c33443844393d3bd6f6c5393a74 +80637b4d50473c483e386ac2c5ccbe42404c4a49474645464748474a4644 +4b4d566689a2472c2c2a2e28292c303131302f2e2b2724272b291d131214 +13110e0f13191b2126292827282b2426262319131924374d889f5b292b2a +505a2913140d1f1e2a314a739fac8c624e41364c7f91590c323e3f1f3a62 +4c4942210d17201b16190f0c0c0b0707111d23382d3a4e9245131c282e28 +22579d9b8e8384849edfd1d0cac8c7c6c7c8cacbcad5d0dfe5e2f4eb2a3a +4d575e5f554634292b3c484d5a6b88adbcc8d2ccd8efeaeae9e9eaebeef1 +eef0f0eee8ddcfc6c7c7c8c9cdcecdcac6c9ccd1d6e0e9f0f2b8b09f95c0 +e8fff5f6fbfafffeb974bff1ecf2eceee4e4d4d5d4d2cecccacac69b3a5f +654b4c47492a333837332b4d373e383032322e302c2b251b141312121313 +171e2634506a839aa9b4c9d6dde7e7f2fefffffffffffffffffffdf7f0ea +be90572c253d4e45403b3f3e2e2424221d1e202425241d192020201f1c1a +1612100d0a09080606070c0d0c0b0c0b08070807050506090d10241a242f +28323e3121343e62daff98486dafd1f8f8fef9fae032282720211b191413 +13181d1c1610120e0a0a0f171e21091717091380f7f1656e61695e665c66 +62605d5c5c5e6163595a5d6164646160606365666461605f5e5f5f616263 +64646b696766696c6f727276797a7877797c89898a8b484a515760646868 +615e5957565453545a5259414c434c574542353a4a35574a4b4352465247 +4b49e1ffd044457e8b6e86585d5449554b4474ccced5c74b4954504f4d4a +494748464546413e44464f6088a54c33333236302e2f313334343433322d +2a2d3230241a191b1b1916171b2024292e31302f31332d2e2f2b211b212c +435997b06e3d4140676e3b232117252536446c9bc7cda57b72727b95c1c1 +6f153e4c4b2b476f5a5852321d252b221c1f1b1a1a1915151e2a2f443946 +5a9e511c222d36373b7cced6d1c9c7c2d0ffede8e2e1e0dfe0e0e2e3e2ea +e5f4faf5fffb363b3d3d404f607281858682654226223b66819ebbc5dfff +fffffffffaf6f4f6f8fdfdfbf6ebdfd8dbdbdee1e4e7e6e2dbdbdee3e9f3 +fcffffccc1b0a7d2faffffffffffffffc984cffffafffafcf1f2e8eaeae8 +e6e4e6ebefcd76a2b09ea69f966f716a615547624c514b403e3d3535302f +2e272221211e1e181514121a30404c5a646d7e898e999eacc0cad0d6dde3 +e1e2e1dcd6cec6c19a72401e1f3f55504e4b504e3e33322d2627282d2f30 +2c27292625242221201d201d1e1b1b161615191716151615121011100e0d +0e111517261c2b414b5a595a6e9dbad2ffffeea1b2e1f6fffffffcfff24b +474639342822202020242827201a1b1714141a22292f1a29291b238bfcef +5c5e4b4e3f4237403d3c3938383a3d3f3536393d40403d39393a3e3d3d38 +3936373638383b3a3d3b423f3e3c3f42454545474c4b49464a4b55555657 +2b29231e181513141f212221201d1a16141718151b2024001c72637a7630 +201c1e94afa4bb7f0090cde9cb7827afe9dcd19320162b1d2f30c2e1d4de +8d0f211019181614141212100d110e0c11111830668c38252c2e322a2628 +292d303031302c2927292c2b231b1c1e1e1d1d1d22232225292b2a2a2b2c +2c27231e17161f2b526e653f23182e1c1d38393533384f6693aed3ffffff +f3edede4cdb6976c2e02333d352337483e443a26191c1c12090b0f0d0c0c +0a0b111b1727373d475f3523262b281e02011f18241813133d9da8b3b3b6 +b5b4b4b4b4b5b0b6b4bec3c5ddb31a28323737312317060e25455c6d879a +a0c6c6cedbdfe1c6c8d0dbdfdedbdedfdbd9dad8d1c5b7aeadadaeb0b1b1 +afadacafb0b3b8bfc6cbd4a9afa8919298a6d1ddecede7cd9569addcd6db +daded5d2c0bdbdbbbab6b1aba47f102a2f0a0a0910000f1f292a27454435 +2b2c3137352b20201f1a141416191816181a1c21314352708a9fb3becee1 +e7edf3f5f6fcfffffcf9fdfffffffffffffff8b9724f504f4f5763665536 +1e1627211d212c363b393331303132373c4354606868645d51412c23201f +1e1b191517161411121418181711212e2b30352606090d2795db9d534789 +b7e2ecfeffffff813e40282e222628241f1f1f1b150f1614141315192023 +1b1711070241e4f0907b8f969d918f8d908f8d8a8a8b8d8f8b8b8c8e8f8f +8c898c8d8e8f8f8e8c8a8b8c8c8d8e8e8f8f9592908f9194969896999c9d +9c9c9e9fa5a5a6a740414342444544444b4949484747464644474845494c +502845998aa19d5646413eb1ccc1d89c15adebffe99645cdfff9f1b34036 +4b3d4f50e4fff9ffb337493b4948474546454647444a47474c4d53638aa4 +4a30312e312a292d31353534302f2b2826282b2820181919191816181b1e +2124282a272728292624201b16151e2b55706942261b2d17142922160f0e +20242c3f73a9b99d72574741404b5a5539183d433b2b3f50414639231518 +1a120c0e0f0c0b0b090a131d1b2b3b414d653b27273036392b355c5c6b5c +524c6ec7cbd2cbcac9c8c8c8c8c9c4cac9d3d8daf2c628384d5b65655746 +2c2830404b51617589b5b8c3d5dfe8d2d7e0ebefedebebeeefeff0eee8dc +cec5c6c6c6c8cbcbc9c5c5c6c6cacdd4dbe0e6bbc2bba2a3a9b7e0ecfdff +fae2ac80c4f3ecf1ecf0e5e4d6d6d3d1d0ceccc9c6a840606c4d50494224 +2d33342e274343372f30363a362f282927201917171715121214141a2b3d +47637d93a7b3c2d6dee4e9eceef3fcfffffffffffefaf5eff0eed99d583b +3f41444b5658492c18162a25201e201f1c1a1c1e1d1c1b191613191c1e1d +1a18100c0c0d0a0b0a0a08050706040405090b0e15111b231d293c39232c +3451c3ffbb6b5c9dc8f0f4fffcfbf86a2729141d12191814111315130f09 +13110e0d0d111618100e0e0a0d51f2f889636662675f656664615f5c5c5d +5f615d5d5e6061615e5b5f60616262615f5d5e5f5f606161626268656362 +6467696b696d7071707072757b7d7e7f3133383e434748464c4846454646 +474644474845494d532c49a091a8a45f4f4a4bc1dacfe6aa23bbf6fff4a1 +50d8fffffec04d43584a5c5deeffffffbc3f51424d4c4b49474644443f44 +414146454d5e88a64e36373639322e31333738373534312e2c2e312f271f +2020201f1e1f2325292c303230303132302d29241e1d26335e7c7551372c +3f2b293c34261d182a32475f98ccdcbb907a757a859196814f25494f4736 +4a5b505549342427271c15171b1a19191718202a2737474d597147302b33 +3f4c4b649ba5bdb1a293a6f1e7e7e5e5e2e1e1e1e0e1dce2dee8edefffd5 +33383a3f49596d7c818989805e3b23253b7087a3c7dff0e0eaf7fffffff8 +f1f3f8fcfdfbf6eaded7dadadee0e4e4e2ddd9d8dbdce0e7eef3facfd3cc +b4b5bbc9f3fffffffff3bc90d4fffafffafcf2f2ebeceae8e8e8e9edf3de +80aabfa8b2aa9974736e6253435955463b3b3c3f38322b30322e2c2a2c2c +28211c1811101d272b4053616d7178878f95a1a7b0bccbd4d6d8d4d1cdc9 +c4c3c7cbbc874930373e4a55606555372420332e29292c2f2e2a26242323 +232321212b313532312b241c191916161514120f11100e0d0e1114161a13 +1f313e4b4f596790b3c7ffffffc5abdcf6fffffffdffff8444462d2f1c20 +23211e1f201e19131c1a1817181c2126201f211d1f60fbfa8357544a4b3e +3f3f3f3d3b3838393b3d39393a3c3d3d3a3738393a3b3b3a383637383839 +3a3a3b3b413c3c393b3d40413f4043444341454549494b4b23221d191312 +1213121617171614111010110d200e10261748d0dddddd91140e5cdfdbdf +d8433fcdd4c6c9c8125cded1d9db9aa9c6aabdd0d5d8cecd301519131615 +15141312110e0b100e0d1210152c618634212a2c302929282a2c2f2e2f2d +2a2929292a2926222423212226262a2828292c2c2b2c2d2e2e251d17161c +2835497757252d2049364c3f3f36344d6a8eb3e8ffffffe2e8f5efdab389 +5122151c3b45302e3b35354039322927221a14130d0a090b0a0b0f172126 +3d302d282b3836362b2b170318271f1e1e1a47abaeaab4b7b6b5b4b4b3b3 +afaeb0b2b4bbd3721a26313a3a311f120316354f60708da3bac6cadce6e3 +d9aac2cedce2dfdadde0dbdbdad9d3c7b8aeafafaeb0b2b1aeabacabacad +afb2b6b9cea4a3a9a69e8c887e8dabc8caac8a78b3dfd5dadbe0d6d1c1bb +b8b8bab8afa7a09018243208090809000c1e2a2b283c4c302f454f53472b +17191c1b151213171918171c1f222a34384e626e76798db0cfd5dfe8ecf2 +f8f9faf7fafefffffffffffffffff9c883433d58707d764822211d1a1e28 +363f403c3b3938393c40484f697e8b8983806e5135282321201d1b181a17 +15131414181714122128262c362f0d0505146cc8ab593171add8e6fcffff +ffbc393b2128192724221c1b1d1e1c1b1515171413161e24221516190a0e +c0f2be6d8f91a68e958c92918e8b8a8a8b8c8c8b8a8b8d8d8c8a8b89898b +8e8e8b888c8c8c8c8c8c8c8c8f8e8c8a8a8c8e8f8f919495959597979e9e +9fa041414143434343433e3e3e3e4040434342433e513c3c4f3f6ef5ffff +ffb639337cfffbfff8635fedf4e6e9e8327cfef1f9fbbac9e3c7ddf0f7fa +f3f35b4246424647474646454545424846484d4d526088a2472e2f2c2f28 +2a2d323434322e2c2b2a2a2a2b28252123201e1f2123252527292b2b2826 +2728261f1714151b283549775a2931234b33412c220d011328353165b1d1 +b9855b4a3a3a464d432e262d454c3735423939423b312825201812110c09 +080a090a1119252a4134332e313c373b39443d355368625f5c547ad8d6cd +cccbcac9c8c8c7c7c3c2c5c7c9d0e8852b3a51626b68543f262d3c484d53 +6880a4b8bed4e2e6e2b8d4e1eef2eeeaeaefeeeff0efe9ddcfc5c5c5c6c8 +cac9c6c3c5c4c2c3c5c8cbcee3b9b6bcb9b19f998e9dbcdbdcc1a18fcaf6 +ebf0edf2e6e4dad5d0d0d2d2ccc7c6bb4b5d744e544d3b232933342d2539 +4a2e32485355492f212426231c17181c1b19181c1e212a3330445662696c +80a1c1cbd6e1e6ecf5fdfffffffffffefcfae9eefbfbe2b573332f4a606d +673d1b201d1d1c2024221a15191b1a19181613101e2a312d29281a0e0c0e +0c0a09080604060604040507090c1210181c1621373d27282d409cf7d179 +4984bee6effffefbf9aa262b131d121e17120e0f131616151212110e0b0e +141a170d0f17121ed2ffbf5b685d6e596b656663605d5c5c5d5e5e5d5c5d +5f5f5e5c5d5b5b5d60605d5a5e5e5e5e5e5e5e5e61615e5d5d5f61626264 +676868696a6c74767778393b3f42474848473d3d3b3b3e3f44443f403b4e +3a3b514171fbffffffbe413c89ffffffff706cfafff3f6f53f89fffeffff +c9d8f3d7eafdfffffcfc62484c484a484847474643423f45434449464d5c +87a34b34353437302f31343637353331302f2f2f302e2b2729272526282a +2c2c2f313333313031323129211d1d23303d517f63343d325a44523f341d +10213649578fd5f0d3a07d76717a898d7856403f5156413f4c44454f483f +36332d251f1e1a17161817181e2631364d403f3a3d45393e425a616897b8 +bbb9b19db3fff0e1e6e6e3e2e1e1dfdfdbdadadcdee5fb9433383c485565 +7680828d8d7b5331242e587996bfdfedebc3e2f2fffffffaf2f4f5fafbfa +f6ebdfd7dadadee0e4e3e2dddbd8d9d8dadde0e3f6ccc7cdcac2b0ab9ead +ceecf0d4b3a1dcfff9fefbfef3f2eeece8e8ecedeaedf3f28daacaaebab4 +9a7b75726753424c5839394d5454462e232a30302e2b2e32322d2a282626 +2a312d3b484c49424c6680838b9398a0a8b1c1c4c6c8c9cbd0d1c4cbdadc +c295521a264961706c4322262526272d3436312a27252424222223233342 +4b46434032201a19161413110f0d0f0e0c0b0c0e101417151b2633414958 +6484a9bbf1ffffd09fd0f6fffeffffffffc244482c2d1923211f1b1b1e21 +201f1b1b1b1816191f25251c212c272edcffba5157485339453c413f3c39 +3838393a3a3938393b3b3a38393737393c3c39363a3a3a3a3a3a3a3a3d3a +3a3636363a39393a3d3e3e3c403f444346451b191713100e0e1013151718 +16131210101b121b0b1a1d2d1e8ddfb0c6ba1734c9cec9d8650fc7cad2bf +c9e7791888d2c5c2d7e6e2e1dfd8c8c7d36c00160d18131415161412110d +0d110f0c1110172d6488331e27292f2a312f2f2c2d2d2d2d282929282928 +2829292623252a2c2d2a2a2a2c2c2e2e2f2f2a2017161c25323e36482e1d +3535bff3c16a4535446d85acd2ffffffd9d2edf7edce96612e0e15253d50 +3130382a383e2e271f1b1917140d100b0a0c0c0c0f152832412e2529322d +262d1e20180a223e6a65491e36a1aaa4b1b5b5b5b5b4b3b3b5adb5b0afb6 +bc331f29353d3c2f190a09224255617291a8bda0c6e6e1d0b2aad4d9dddc +d9d9dfe3dddddedbd6cbbdb3b2b2b2b2b3b2afacafadadacadaeafaf9e95 +969dacb1a39a999aaddce6be9f90b9e2d5d9dce2d8d2c3bab4b5babab0a5 +9f9c281f3306080804000a1f2c2c2a354426365f6765512915181c1d1812 +1318110f11151b21272c38454f534f4149678c9cb8d1dfe3e7e8eeeff6fa +fffffffffffffffffffffce1937e5d5f7b63352a1f222834424b504f4e4b +494a4b50586078909d95908f7f5d3c2d272321201c1a1b19181515151815 +19192228292e322d1203040a46a8a95427589fcbe0fbffffffe84c3b2e25 +1a201f1f1b1d232a30332a28231a1416212a363436391b0074ede8718993 +a490948a90908d8b8b8b8c8d898887888b8e8f8f8b8886898e908c878c8b +8b8b8a8a89898c8c8a88868688898d8f9193949495959a9b9c9d3f404040 +414040403f3f404143434546424c4249374344523faeffd1e8dc3956e9ee +e9f8852fe7eaf2dfe9ff9938a8f2e4e1f6fffffefcf8eaebf99423453e49 +4546474847454544444947474c4c52618ca6482b2c292e29323434343231 +2e2e2b2c2c2b2a29292a28252224272b2a292a2a2b2b2828272722181113 +1924323e33472e203c3cc3f2b653200504233141458fd1c6987256413638 +44483c2a242b435435333b2d3b40322b211a17130d090e0a090b0b0b1117 +2c3645322b2f3831252e283539345578a7a2845467ced4c7cbc9c9c9c9c8 +c7c7c9c2cac5c4cbd1493442586b71664c362735464d4e576f89ab95bbdf +e0d4bfbbe8edefeee9e8edf2f0f1f2f1ece1d3cac9c8c8cacbcac7c4c7c6 +c3c2c3c4c4c4b3aaa9b0bfc4b6ada9aabeeff8d3b6a7d0f9eaefeef4e9e5 +ddd6cfd0d4d4cdc6c4c95b5a754e554f3a292b3639302a32422539636b67 +532d1c2124251e17181d161414181e252b2f353e4649423139577e8fadc9 +d9e2e7eefafcfefffffffffdfef7efeef1f7ecd285714d4e6c582d241d1d +1e2223211b171b1b19171513100e1a29302825281c0e0d0f0b0707060505 +060504040406070a16171819171f2f3729262c3a7adcd87a416cb1daebff +fffcf6d83b2a201a1317120f0d1119222a2d27251d140c0e17202c292d36 +21088cffee64635e6a5b6a6564625f5d5d5d5e5f5b5a595a5d6061615d5a +585b60625e595e5d5d5d5c5c5b5b5e5e5c5a58595b5c606264666767686a +717273743d3f4245484747443e3b3c3d40434848414942493845495846b5 +ffdaf1e54360f6fbf6ff923cf4f7ffecf6ffa645b5fff6f3ffffffffffff +f6f7ff9c294b434d4647484948464341414646454a4a505f8ba64b313231 +36313738373635343232303131302f2e2e2f2e2b282a2e31312f32323333 +323232322d231b1c222c3a463a4d36294646cfffc66331151532415b70bc +f4e1ae8d79716f7784816b514341515d3e3c4436444c3d372e2825211d18 +1c18171919191e243842513e373b443a2a3232485a6494c1f8f5d29a9ff7 +eddde4e4e2e2e2e1dfdfe1d7dfdad9e0e457393c4251616d797f87938d72 +472a2737635f9fd5e6e0c8c3eff8fffffffbf6f7f7fafbfcf7eee1dadbdd +dfe2e5e4e3dedfdcdad9dad9d9d9c6bdbac1d0d5c7bcb9bad0ffffe6c8b9 +e2fffbfcfcfff3f3eeebe4e5ebedebe9f0ff9da8ccb0bfb99e837a796d56 +44454f2d3e666c66502c222a2f322e2a2c312a2827292d3034363e454b47 +3a212035515a6f818b8f9198a8adb5bcc3c8ced2d4cdc5c3c3c6b9a76b61 +404667542b2620232730353735302e2b29282525262535464f4743433824 +1d1b171312110f0e0f0e0d0c0c0d0f121d1c1920313c40505f7aa6b8ddff +ffcf9ec3f1fffdfffffffff25b4a3a2b1b1c1c1c1a1d242d3437302e271e +1719222b37373e4b371b98ffec5b564c523b443b3f3e3b3939393a3b3736 +3536393c3d3d393634373c3e3a353a393939383837373a3a383634323435 +39393b3c3d3d3e3f4344454612100d0c0808090a13151616130f0d0d081f +170c1e3609180041cdb7d6d16a9ce5b6cf9b117cdcc5bcbdc9bdda4a27bd +e5b8c5ae4b51a8b1cccbb00d14081814131416161614120f1215100d1211 +1b316f8f361f262b34303c36322d2c2c2f30272829282727292b28262425 +2a2c2c2829292a2b2e2d2d2e231a161a242d3741322826302b16b1f2e570 +3e446790a4c6faffffead2dcf4f0e8c67f3a0c04171e3c5838292f304340 +32241611161b170d120e0c0d0c0c10181a3943403f624e14192b211c160c +1f2e7580652333a8bbb3b1b4b4b4b4b4b4b4b9acb8b4b2b899112129343f +3b2a15080e2a4857627899acaf8cdceeddd8b2d4e0ddd9d9dadde0e1dfdf +e1e0dcd3c8beb6b4b3b4b5b4b2afafadababaeaeaca9488aa79f9f9f9e9e +aeabb1e1e8b89f90bae3d5d9dce3d9d3c4bab5b6bcbcb3a6a0a33f1c2b06 +06080000051a2a292d2f402131525451462923232729221b1c2224211a18 +1b20232329353e4b4b362e3c44557495a9b7cad9e0e7f2f8fbfeffffffff +ffffffffffffffe5a6776d50333f3735373d4b5a686e67656465666b737b +889ca39792958a6a42302a262423201e1f1c1a181816191518181e26353a +37301a0502072886a25b2a418dbbdcf8ffffffff7c383b1f2119201e1b1d +242d353b443c301f1414212c46514f45210023dff78d839c9a988d888c8d +8c8c8c8d8e8e8a8886878a8e8f908d8987898e918d898b8b8a8a89888888 +8b8c8b88858486888c8d8f9193959593939293943b3b3c3c3c3c3b3b3f3f +3f4041424444394f4438455b2b390c5de9d3f3ee8abcffd6efbb319cfce5 +dcdde9ddfa6a47ddffd5e2c9666ec5d1eeefd83843394b4a454648484847 +4545484b46454a4b536497af4e2e2d2b332f3d3b3735313030312c2d2e2d +2a2a2c2e29272526292d2b29292928292827252318121017212b37402d23 +2533321fbaf5db58130a18333a4f739ebba5846e50373a42463829221a15 +385737282e304344392b1a1314140b04100d0b0c0b0b121a1e3d47444568 +54161628252c2e2f4c61abb698565fd2e2d5cbcacacacacacacacfc2cecb +c9cfb0293b495e70736246312b3a4a4e505f798f9d84d4e8dcddc0e7f8f5 +eeebeaeceef0f0f2f4f4f0e6dbd3cbcac9cacbcac7c4c7c5c3c4c4c4c2bf +5d9fbcb4b2b2b1b1bebbc2f4facdb5a6d1faeaefeef5eae7ded5cfd0d6d5 +cdc5c3cc71566d4f53513c322c373c332f2e4024345759554a2d2625292b +261f1f252724201e21262a2a2d353c453f271b293245668ba5b9cddee3e8 +eff5f7f8f9fafafbfffffefffffaf5db98695e4329342c26201b1a1c1e1f +1b191917161515121423251b19221c120f100a0606050404050505040405 +0508121514171f28303730262d3860bedb8a4858a1cce9fffffdf8f56622 +260d110c100d0d1119252f3541392a190c0c16223c474440260f3ffbff84 +5d645e626665625f5e5e5e5f60605c5a58595c6061625f5b595b60635f5b +5d5d5c5c5b5a5a5a5d5e5d5a5756585b5f606264666868686a6c6d6e3f41 +44464747423f3e3b3b3c3f4347473d51473b4c6334421869f7e1fffc97c9 +ffe3fcc83ea9fff2ebecf8ecff7956ecffe7f4dc797ed5e0fafbe03f493e +4e4c4645474749484645484b48464b4c546596ae503333333b37423f3a37 +34333435303132312f2f31332e2c2a2b2f32312e3133333434333231261f +1c222c36414833272a383826c3fee66624192b46506b9bc7dcc19c897363 +6f7b7d6a53483b30465f3f3036384b4d4135252022241f151e1b191a1919 +1f272a495350517460221f31313b464f7696e9f6d78f8ef8ffeee4e2e2e2 +e1e1e1e1e4d7e3dddbe1c2353c3e485a6a737e81899185633c292c3f5b56 +c1eaecf0c9ebf8f9fffffffffbf7f7f9fbfdfbf4eae4dedfe0e1e3e2e2df +dfdddbdadbdbd7d470b2cdc5c3c3c0c0cecbd4ffffe0cabbe3fffbfcfcff +f4f2ede6e0e1e7e9e6e4ebffb0a0c4aebbba9e8b7b796e5748404c2d3b5b +5c584b302f313538322b2e3436332e2c2d323434363d474f492e1f25262c +4158666e7c8a949ca8b2b7bcc2c5c6c7cdccc4c3c5c2cbb87b4f49331d2e +2a2928292d33393c3533302f2f30303137464a3d3a3f392a201d17131211 +100f100f0e0d0d0d0e111c1c151c344242515f73a0b8cfffffd8aab6e8fa +fcffffffffff8a4847251c151d1d1c1f27323b414c4436251919242d4550 +55563c234bffff7d525346403d3b3c3b3a3a3a3b3c3c38363435383c3d3e +3d3937393e413d393b3b3a3a393838383b3c3b363332343438393b3b3d3f +3f3e3e3f40411211100d0c0c0c0f13151613100c09090f130c182515094b +7e90c5c3d5bdbedbbdd6b12746cdbfd4b38adfc5dab7274ddad8cec53e1f +c3decec33e0a2b0e141313151515151513131617110d12121c336d8e341d +232a322f37322d2726272a2b272627292827282a25242426282928272727 +282a2c2b29261d1a1a22282d333a442d282c1f25a9d0b26340577fa3c8f1 +ffffebe5e8e9ece4d6b96f1f0000232a375540242c3e4a46432b15141e22 +1c150d0a0a0a07070f1b1934333949806c151f2e271e121430364a716820 +239eb5aab6b8b6b5b4b5b6b7b8a8b4b6b7bc6d0d2027353e3925130d152f +475668839ea99ca5fae3cde8c9e9dbd7d6d9dfe2e0dbe0e0e1e2dfdad2cc +bdbab7b3b3b2b0afadaba9aaaeadaaa6288eac999b9c9e9da3b0b7e2e0b3 +b0a8b7e3d7dbdce2dad6c5bcb7b8bebdb4a9a39f5d1c2009050a00000011 +23242c26482e2b322f343b34363130333028292e39362f27252a2c2a2f2e +2e36423b354032384655627596b8cfdbe8f0f4f8fafefffcfcfffffffffa +ffffffdbae764b4336363d4d6478828485848282858b929a9caaaa9f9a9c +947a45342d272524242222201d1b1a191916131a1d294248423f2b0c0000 +09558c5e342c74a8d4f3fcffffffaf3a3926322825221d1b1d21272c352e +23161014212b303e392a130700bff4b9849e949e89898b8c8c8c8c8d8e8f +8e8c89898b8c8d8c8e8b898b8e8f8d8b8b8b8a8a898988888b8d8e8b8684 +86898a8a8b8e91939391908e8f9041414241414241403f3f3f4041424342 +404037404937266798a7dbdceed8d9f8ddf6d14766eddff4d3aaffe5fad7 +476cf6f4e9e0593adefbeee766375c414c4b4647474747474646494d4742 +4749516497ae4c2c2a2a312e3835322f2b2b2b2c2c2e2f2e2d2c2d2d2827 +2727292a29282727262726231e1b120f121c252b33393e2726302930b2d3 +a849111226374e729d99989585684330394b4927121619162c50391d273b +4b4b4c341e181b190f08090909090606111d1d38373d4f86721717262526 +242f566177a0974c4dc4dac9d0cecccbcacbcccdcebecbcdced384283d4b +6273715d43332d3b484c556b818e8e9df1ddcdeedafef4f1ecedf0f0ede9 +f1f3f4f5f3eee5dfd2cfccc9c9c8c5c4c5c3c1c2c4c3c0bc3da3c1aeaeaf +b1b0b3c0c8f5f2c8c6becdfaecf1eef4ebe8ddd6cecfd4d4cdc4c3c78b54 +5e4f4e533d3729343a3232294c322f3936384037342d2c312e2829313c3a +332e2e33353337363235392e252c1f27364b5e7499b7c5cddae5ebf1f5f9 +fff9f7faf7fcfcf0fbfffacfa1683c33231c191b2125231f201f1d1d1d1e +1e1e181f1f17171f1d1b0f1009050304060606060606050505060d141319 +2b353943412e2a334392cc9657438abae3fafcfbf6f4931b1d0c1a121311 +0f0f12192126322b1d10080c162126342c22181817deffb45f6658686267 +615e5e5e5e5f6061605e5b5b5d5e5f5e605d5b5d60615f5d5d5d5c5c5b5b +5a5a5d5f605d5856585b5c5d5e616466666666676869494b4d4e4f4e4945 +403b3b3b3e42474947463e4855433475a9b9f0f0ffebecffecffde5473fa +ecffe2b9fff4ffe6567efffffcf36c4deffffbf36e3d61454d4a47464646 +484847474c4f49464b4c556896ad4e31303239363d3a35312e2e2f303031 +3232313031322d2c2c2c2e2f2e2d3131313232302c29201d1f2830363d41 +422929332b34b7dab15421243a4e658dc0bab6b0a1846457667a78553c3d +3c313a5641242e425051513b27232c2c231c1817171714141e2a29444349 +5b927e232633323132406d819eccc57975e8f7e5e9e6e4e2e1e2e3e2e3d3 +dddfe0e596333b3f4b5f6e7481888d8d7855352d313f5178e8e9e5ffe2ff +f0f0fafffffffdf2f8f9fbfcfcf9f3eee3e2e1e0e1e0e0dfdddbd9dadbda +d5d150b6d2bfbfc0c0bfc2cfd8ffffdbdbd3e2fffdfffcfef5f2e9e3dcdd +e2e4e3dfe9f8c79eb3aeb5ba9e8e76746c554c3a583d3a413e414640413b +3a3e3932313845433c36353c3e3c42413e434a3f3235212026303846647e +878c99a3a8adb1b5bfb4b5b8b6bbbbb3c4cfcba57e4d27241c1b1d27333f +413f42413d3d3e3e41423f46463d393f3b331f1e1713111112121211100f +0e0e0e10191e141c3d4b4e5e6a759ab3c0fcffe0bba9d6ecfafffeffffff +bb4543272a1e21211e1d20262d323d36291c1519242c2e3c3d372e2c25e3 +ffae56574046373a393a3a3a3a3b3c3d3c3a3737393a3b3a3e3b393b3e3f +3d3b3b3b3a3a393938383b3d3e3b363234373836373a3b3d3d3c3c3c3f3e +0d0b09060505080a13151514110e0a0b15140a261c0162b2dde7dbd4d4ca +cbb4c3d85c1eb0c7cccb5e15a1d6b7d6820d81d2cad6ab86d3c9da910630 +2218020f13141313131314141417131115131c2f63842e1923282f2a2c29 +27242525272526252527272726262425272725242525282728292a26201b +1c1b1d2427272930252e302f22193529605a52709ab9f0fffff2eef5f5e7 +e2dcc2a3611c000d3139364c4625314c494d41230d111d1c19150d0c0f0e +0a0c1a2b2d2d29284365712823292827111336367faf9d3524a5cecdc1c0 +bbb7b6b6b8b9b8a4abb1b4b73c162329373e331e0f0e21364a586e8b9b98 +81b7e8bcb3dcd4d3d5d3d7dbdfe0dfdcdfdfdfe1e1dfdad6cdc6bfb9b5b3 +b2afadaaa8aaacaca9a3268d9f90a1a3a5a69eb5b4d1c9a1a69ab3e1d8dc +dbe0d9d8c5bebababfbfb6ada99a7a1f160f050d0000000a1e202d21463a +2f29282d353b3e363033342f2f352e2f2b23212628263a3930303f413e41 +393a3d3e3b425e87a8bac8d4dde5eff4ecf2fffffefefffff7feffffffef +aa6a504544597d9ba5a1acaaa5a3a3a6acb1aeb5b5aea6a0978149352e28 +272626262523211e1d1b1a16121d202a40453f40320e0000003174643e15 +5992ccebf9ffffffde49343a3d342925201d1b1b1d201916131012161e22 +1c201d120c070079ece49198989e8c8a8c8e8d8d8d8d8d8d8e8c8b8b8d8e +8d8c8d8d8c8b8b8c8c8c8a8a8a8a8a8989898b8e908d8886888b8888888b +9092918f8f8d8e8f3d3c3d3e3d3d3c3b3f3f3f4141444544453e314b3d1e +7bc8f1fbefe8e9e2e3cee0f87c3ed0e7eceb7e35c1f6d6f5a12c9dede3ef +c4a1eee6fab5315f554d3c474644454545454545454a464347484e608da6 +482b2a282e292d2c2c2c2a2928292e2f2f2f2f2f2e2b292a2c2a28272828 +28272626241e150f1010151e2425292d1c232e332c27402e563f1f263743 +678fa4a09a90744e35353c4b45200c141b1b26413b1a27474a524a2e1718 +1a130706090b0e0d090b1c2d31312d2c496b7727161b20271c28545ba6d9 +c65c48c7efead9d6d1cdcccccecfcebbc2c8cbce5331435267756d553f32 +353f484c5c747e7e74b1e0b8b4e3e5ecf0f0efeff0eeeceaf0f1f2f4f3f1 +ede9e0dbd4cdc9c7c6c4c5c2c0c2c5c5bfb93da4b4a5b4b6b8b9aec5c5e4 +dbb6bcb0c9f8edf2edf2eaebdbd6d1d1d3d3cbc5c6bfa45450524a55403d +28323a3337284c4237302f343b3d372b252b2c2a2d353033312c2b303331 +484537343c3a3233292a2f33333d5d7d8f9bacbecfdcebf4f0f5fffffbf8 +fffff3fbfbfdffe19956362212172a3732272d2b2826252525241b1e1e1c +1c1d1c1d0e0f08040304060807070707060605060c171417282f33444831 +28333670baa0653072a7dcf4f7fbf1f1ba230e151a18141412111013171a +16130d0a0a0e131813150f090e18139cffe16c605a666568626160606060 +6060615f5e5e6061605e5f5f5e5d5d5e5e5e5c5c5c5c5c5b5b5b5d60625f +5a585a5d5a5a5b5e63656463656667684b4a4b4d4c4a4740403b3b3c4146 +4b4d514c405b4e3091dffffffffffffcfde5f0ff894bddf4fbfa8d44d0ff +e8ffb33eb2fff9ffd8b4fff6ffc1386559513d4647444646464649494a4e +4a4a4e4e55658ca5492f3030363132312f2e2d2c2c2c313131323232312f +2d2e302f2d2c2d2d32313131302b231d1e1e222a2f30333621272f342d28 +42325e482e374c5b81a8bcb7b4ae936d53535d716e4d383e413733474320 +2f4d4e564f3420222b261f1d1a191c1b1719293a3d3d393855778335282c +2d2f1e295663b5efe27d6aeafffff3ede8e4e3e1e3e4e3cdd4dadbde633a +3e4251626f73818a948c6f4c34312e313d91dec9d2fdefe9e7ecfbffffff +fff5f7f5f8fbfdfdfbf8f1eee9e5e2e0e1dfdfdcd8dadbdbd4ce4fb6c5b6 +c5c7c7c8bdd4d5f5efc9d1c5defffefffbfcf4f2e6e0d9d9dcdedcdde8eb +de9aa2adafb99d92736f6954503a5a4f44403f44494c473b353837303037 +2f32312b2c3235375555474047413633292a2e31313a5b73706d7a82888d +949a929ab1bab6bac9cab3b8bdc6ceba7b3e271c15213e51534c5656504e +4b4c4e4e47494943403f3937201e17121112131413131211100f0e111a23 +161936444b616f7192b5bce2ffe6cc9bc2dcf5fbfaffffffe65237363027 +2324211f1e202326211e1916171b2123181b1e1e252c20a2ffda63514345 +3a3a3a3a3939393939393a383737393a393a3d3d3c3b3b3c3c3c3a3a3a3a +3a3939393c3f413d38363839363634373c3e3d3c3d3d403f0e0e0b0a080a +0a0d0e101111100f0d0d082b1621162fdddccdd08d332992bfd3d98d0881 +d4bfc393190059d4d2c1d94611bcd9b9d0cdc3cdbb1f141c1e0f0c161212 +100f0f1012141016131216151a2c5e83301f282d332d2a292b2b2d2d2d2b +282625272b2a272526292b2a262324262828292a29241a121a1a1d22231f +2228283f34292b2717151e576b93bfd4feffe3f8ffffe6d6dcd8b98f501b +0d182725313e4425345145514627161f2924212416181e1c181c2f413d29 +35304d45642a33354453311c2919468f932f1b9fd0d2cbc7c1bbb8b8b9bb +bca4a5adb0b1191c262d383d2f180c0f2e41505d768e938378c3ccadb8db +eddadadbdbdbdadadde0dededddfe1e1dfdbdcd4c9c1bbb8b6b3b1acaaab +b0afa9a40e85a29aa29397a79eb6aecacbafb8a0afe0d9dfdbdfd9d9c6bf +bbbbbfbeb6b0ae978a240e12020f000300061a1e2d21353c383136373336 +3a2e26292d2b2b322b312f2925282824323d4147534e3b2e30363f3f3128 +39596c85a7bec9d6e0e7f1e8eff7fbfffffdfffffff9fbffffe4916e4c52 +7ba9bec3cac8c0b7b2b1b4b7b3b8bab7b0a397824d393028242527272728 +2624201c1a1411201e1e2d2c29332e0d000c05296f6d41064885c3e3f4ff +fffffc5b2e47342c2a2825211f1e2020171719191b191815261b1b151707 +0034ddf5948b9f9c928b8e8f8f8e8c8b8b8a8a898a8c919393928c8d8d8b +89888a8b8a8a8a8a8a8a8a8a8b8d908d8985898b8987888a9092928f8b89 +8c8b4040414041403f3e3c3d3e3f4042444333523b44354bf6f2e1e4a149 +3eaad9edf6ad29a2f8e3e7b43a1579f4f1e0fa652ed7f4d4ebe8e0eadc43 +3c484d41414b45444342424345454147454448474c5b86a2482e2f2d302a +292c303332302e2c2d2e2d2f302f2c29292c2e2d2926272928272624211a +0f0812141a21221f212521362f29302f1f140a2f283a51597c928facb28d +5533303e474b3d211116161225383e1f2f4f46564f321f25281d14181217 +1c1b171b2e433f2d3934534b6a2927263a4e3328453e6db8bc5a47caf2ed +e3ded6cfcbcccdd0d1babac2c5c72f384c5a6d76674b352c3f464c506174 +766b6fc0caaebce6feeff3f5f3f0ebeaecf0efeff0f2f3f3f1eeede7dcd3 +cdcac8c7c7c4c2c4c6c5bfb9239ab5adb3a4a8b9aec6bedbdec4cdb6c6f7 +eef2edf1eaebdad6d1d1d2d1cbc6c9b9b45647534a57434129323a343b29 +3c443e393d3e393833231b21262629322d33342e2b2e312e3e49494b5249 +3123222834372e293d595e68778ca4bed5e6f2edf4f9f3f5f8f5fffffff8 +f7fff9d57a4b1a0e233f473f3b36322e2b2827261c1d1f201f1b151a0c0d +07040407090907060606060706070918130f1b1d20353e2a243c3d6bbbb4 +6c246099d8f1f5fbf7f3dd37031b0e0d1213131313161a1d141413131311 +0d0b1f14100c130f1555f9fe7b5b60616969646261615e5e5d5d5c5c5c5f +616363625e5f5f5d5b5a5c5d5c5c5c5c5c5c5c5c5d6162615b595b5f5b5b +5b5e63666563616262644b4b4d4c4c4a47423c3a3b3c4045494d43634d57 +4960fffffafdba6159c4f2ffffbc38b1fff1f5c3492488fffff2ff7740ea +ffe7fefbf0faeb5146515548474f484546454546484a464c4c4b4f4e5561 +88a44c33373539312f31333535353331313130323432302c2e3133322e2d +2e30302f312e2e251d131f1e23292a27292c283b332b33312119133a3a50 +6c7598aea7c6d2af724e485869746b513e3e38282f3a422335544b5c5638 +2831362f282c23252a2925293c504c3945405f5978393d3b45522e244646 +7cced87a6cecffffefecebe8e9e7e5e3e2c8cbd3d6d53a393f455367767a +8588917e5b3f3437302d46adcdc0d7fcfff0eff4fffffffffffdf7f6f7f9 +fdfffdfcfdf8ede7e3e0e0dfdfdcdadadddcd4ce38adc6bec5b4b8c7bdd6 +ceebefd7e0cbd8fffffffbfdf4f5e3dedcdce0e0dcdde6dfe69596adaebb +a094736f6959553c4c514c464d4e49474333292c2e2c2a302a30302a292c +30304a595656584d301f1f273844434562735b56616b6f78838a948f9aa6 +aab0b8b4b8babdb5baccc8ac5a350f0f2f5563646767605a545251514949 +4b49483f3735201e1712111315151414131211100f10142317142930334e +5f6487b8c4e5ffffdd96b8d4f5faf9ffffffff632e3e271f222223222123 +26281f1f1f1f201e1b16261b1e1f2a24245efaf9764f4e413d393a3b3d3a +3a373936383538383d3d3f3e3c3d3d3b39383a3b3a3a3a3a3a3a3a3a3b3e +413e3936393c373634373c3f3e3c3b3b3c3d0e0f110e0c090a0a120b1313 +0d1618161e0c0110055ae5cbccba4b0a5ad0c6c8bc1148bec0b7c3350419 +1086cec6bac11844d6c9b5cecbce47240e161c121118100c0d151312180e +1811141f0b0c242c638b361f2a2b34252928292b2c2a2b2928282624282e +2d292c2a292b2c292425222b2f2c231c1918181a1c1c1b1d21252f2c322e +3115374f53708dafd2dee6f8ffffffe0d4d9d7c5a67d3c131a140c1d273e +312537372c3639342a292f292023242d312c2e353328202f314f27273a42 +454a57553d220f030c58794e1077dfe3e0e0cccccab5b9bfbbbba9bac891 +1b241f2c2d3f2a210e2453485d637aa09f969cca8ac4dbe2dfdbdddcdcdc +dcdcdcdcdfe0e2e4e4e2e0deddd9d6d5d2c9bcb0afb3b1b2acb4b8910b69 +ac9f8c9fafa6a8b0b6ccc6acafb1ace3d8e6dfdbe1e1cec3b8b6b8b8b2aa +a5a19925080f0402020000000d1d2a334e6c5938414947553223252f2d29 +2c2b2c323128252a2d28383f3b5963744b292c3c2f2e332f2f28315c8da4 +b0aeb1c9d3dee5ebfdfffffffcfbfcfcf9f8fcffffe5a86b61a7d2b9d9dd +d6cabeb6b8bdb8b9b7b5aea59a885e3e2d29251d1d262c30302e261e1511 +15191e201d1d262f3a291008100c256640202c7aa5d9eaffffffff89363b +402b2e251f2223221d1b1d18171b20211d191d1a10241e25110dc9e9b072 +a0a29d8c908e8d8d8e8f91909090908e8d8c8d8f8d8e8f909090908f908f +8d8d8d8c8984858588888a88888688878787898a8e8e8d8d8f8f40424444 +423f3d3d423b41403d464745453126332476ffe4e5d3642575ede5e7d930 +6ce5eae3ed5c28382da3eee7dee53861f3e6d4edeaef6848333d433c3b46 +4243424a48474d404a4345503c3d555988a84a2c2e2a3122282c2e302f2d +2a282b2d2927292e2c272a28282a2b2927252126272219121115181f2424 +201e20222e292a272c1335402d302f3b56657997adc4a15e413b32364549 +341c171012272c4335293a3a303d3f3c302d31291e21212a2d2a2c35332a +223135532d2d40433f404c4c35282c2c3885a58252b6fffefaf9dedcd7c2 +c7cfccccb9c9d9a32f404b6266775c4829365c49575564847f7e99d091cc +e4eeedecf0f0f0efefefefefeff1f3f5f4f2f0f0edebe8e7e3dacdc3c4c9 +c7c8c0c8cca31d7bbdb09cafbdb4b5c0c6ddd9c2c5c7c2f9ebf9f1ebeff1 +e2d9cfcdd1d1cbc5c1c3c05442524f4d45392e2c31363b3f55705c3b434d +4b573020222e2c282c2d2e343128252a2c283b433d596270431e22332b30 +3e4249444b544344627897bfd0e0eae9eaf6fbf6faffffffffffffffffcd +802e1248663a423f403c3733313226221e1c1b1a1619130901080b08060b +0806040506090a0b0b0e1417181a26333f36252b43517cb7723d3a8bc3f5 +f2fcf5f5f8740c0c1e0e110a070d151817181a1614151816100e1c1b0e1e +101b1927f2ffaf516262716866625f5f606160605f605f5e5b5a5b5d5c5d +5e5f5f5f5f5e5f5e5c5c5c5b5856595b5c5e5e5e5c5c5c5d5b5d5d606264 +616263644143454444413e3e443b41433f4a4d4f54433846388bfffafbe9 +783888fff7f9eb427cf4f8f0fb6b384a3db3fdf6ecf34771fff8e6fffcff +7958434c544c4b534946464e4c4b5147514a4c5743445c5f8eac51343732 +3a292e2f32343434323032332e2c2d30312a2f2d2e303333302f292d322b +241b1c1c20232727242326293634352f3218384538414a5e7a8898b6d1ec +cc82544943527887705344332a332f3f342c3f4139474b473c393e352b2f +323b3e383a413f362e3d415f3b3d505759585a4f32283e4c5fafd2b182d9 +fff5edf5f2feffece2dfd6d6c9dce9ad2d323242466e7f939298975d4128 +3352505a88ce97d7f3faf6f3f6f7fbfefffffefdfcfbfdfffffffdfcfcf9 +f6f5f3eaddd4d7dedcdfd8e0e4b9338fcfc2acbecac1c6d0d6ede8d0d3d5 +d0fff9fffdf8fcfeede6dddfe7e7e1dad9dfe98a8ba9b4b3a08b796d655f +5955657c65444f5857633b2b2b36322d2e2c2d312f2623282828424e4963 +68714018182c2c3d5a6d827664635a5055525c77818d96969ba3a39fadb5 +b8b9b6b7babec89d5d1b0d4e76576f72706a605b5a5c534f4c4847413b39 +2a1b1013140f0e141414131311100e0d0a121f282c2b303f5c6a809fc3d0 +e6fff5bda3d3e5fff5ffffffff93323037222319171c2223212125211f21 +2726211c2420192c27332c34f6ffad4a554742343c3d3d3b3e3d3f3c3e3c +3e3a3a373a3c3b3c3d3e3e3e3e3d3e3d3b3b3b3a37343635393839383736 +37373637383a3d3e3e3f40410e0e0e0f13131312130b0a151417050d1347 +73563545e9c0c0c3cfe8e3ccbad55723ddbdccd6580020241125bddedacb +a5006de5d1c7c48b1713172429221912141316150d0a0e161116192c1812 +1a304f8333242c27352f2a282a2a2b2c2b2a292a2c27292e34343836332c +2825282c2a2d2b251e19191a12151a1d20252d31302e3432353da7ffdcaa +aad0dbe1f7ffffffe3d4d2cbc9c49d7234111a140717314c3f2b3538313c +373e3c312619182a232c2d27272d2a2328394526263723282728353b3022 +18101e5d85733379d1d3dae3d4d5d5c9cdcac2b1b2c6c466151f1a303d47 +271614374c49606e889f9a9cb1dbc4e9ece6e2e2dedddddcdcdcdcdcdddf +e1e3e3e1dfdee0dddbdbdbd5cac1b7b5b0b0a9b0b18400408d9e999fa7a5 +9cb2bbcdd1c2b7a3aae7dae2dfdde1dbcfc3b8b3b7b7b3adada8a23c0811 +0502070200000c1b2831434a33315b6b54462f212128262327263339362a +272b2f2a2832344a505d3f282c3425201d2026141b4d8a9d9a8b7f869bb4 +d0e5f5fcfcfafffaf5f3f1f3f6f9faffffe9a196bbd1dcdfd3d0cdc8bfbb +babcbdbab5ada3936849322b231a1c272b2f322f261d130f191b1d1e1b1c +2732392c130709061d5c3c211f6893c5e5ffffffffaf36423a2b2e2a2522 +201f212725222324221d20221a2221252c351b0097e0d37a9d949e919594 +93929290908d9191918f8d8c9090949393939291908f8f8e8c8d8d8c8a85 +8b8a8b8c8c8b8a8989898a8a8c8d8e8f8b8b8c8d4141414445474544453b +3a42414230353a6c98795664ffdddde0ecffffeddbf67342ffe7faff8423 +44432c40dafffeefc61c8dfff2e8e5ac3a363c494e473e3c46484b4a423c +40474245485b443e4658729e462e2e262f2c292c2d2f2e2c2928292d2d28 +272c2f2f33312e292523282c2928241b120f1217151d24252424282c302e +312c303294dd994c324d5c719db7d5a76b4a3e302b3d4848331d1411182e +3f5749333d3f38423d443f352a1d1c2c20282925252b2a232a3b492a2c3d +282a24222d3228293b435191b9b083c4fef0f6fbe7e5e2d4d8d7d0bfbfd2 +d477293c4968767e533828415048575e6e807887b2e8d1f6f9f5f0f3efef +eff0efefefefefeff1f3f3f1efeef0edebebebe5dad3ccccc5c5bdc4c396 +02519caea6adb3b1a9bfcbdee2d5cdb9c0fdeef6efedefebe3d9cfcccfd1 +cdc8c8c8c66a4155504c483a2f2a2f363a3d484c33305b6e564a3121212b +29262a29373a362a25292b282935374d4f5b3a2124302629313f4e41464d +3023344255718dadd0dfdee2ecf1fcfcfcfcfffffffff8f9f4b860475e60 +4e4644474a473b3026231f1e1f1f1d20140a02070c09090c050302030508 +0a0b0e0f15191c1f2a363b321f233b4b77b274412c77b6e7f0fcf8f9fca1 +0c13180f0f0b0a0e10131b24232020211c15131a1a27242119231c14c6ff +dd626352726c6b68656464625f5d60615f5d5b5a5b5e6263626361615f5f +5e5e5b5d5c5c59575f6061626261605f5f5f6060626364655f5f60613c3c +3c3e42434443463d3e474648373f497eaa8c6978ffefeff2fcfffffceaff +8856fff7ffff913254553d51eafffffbd52b9cfffff9f6bd4d494e5b6059 +514c4f4e51504843474e494d50634d474f6078a54d373a2e39332e2f3233 +353434333134322c2c2f3333373534302e2e3236312f2c241c181a1e1a20 +252727292e333a3a3c3636389ae8ab6756758595b9d4fdd5996e4c36395d +8390775940302c363f5148354047424e4b524e413526253831393a333238 +342d364755363c4d3b3f413c3c3726315b7288cbf3e9beecffdedfeef8ff +fffff4e7d9c8d0e8e47f202629455578828f98a37d462c223b52526cadee +d9fefffcf9fbf9f9fbfbfdfdfefdfbfcfefffffefcfbfdfaf8f8f8f2e7e1 +dddedadad5dcdbae1965b1beb7bac1bfbad2dbeef2e4dac6cdfff9fffcfa +fcf8eee6e1e2e9eae4dddde1ea9b86aab6b5a68f7b6e69635e575b593d38 +657763563d2b2b34322d2f2e3a3e382c262a2a292e3c4056575e37191927 +283a547594847373634c41312d3a50698893908d8c92adb1aeabaaaaacae +adbac5974e42667476757273726e635a5652504d4c4742412e1f1213140f +0f1512121212100f0d0a0a0f242f312e313f52627391b8ccefffffc89ec8 +dcf3f4fdffffffba30373325211b191a1d1f252d2e2b2b2c2a242427242d +2d2f2d3b3125ccffde60583a433841434340423e3e393f3d3e3a3a373b3b +413f413f403d3e3b3d3a3a393b3838333a3a3b3c3c3b3a3939393a3a3c3d +3e3f3c3c3d3e16120f0d0f0d0b070712162112150e44989a4a79918b7fd2 +dddad9c6bac4c9920f4ecb929474131519141a064f4c45503a111b253224 +11100c141714100f0c0613040003191e0700002334332013091f61922b1e +2b252f2f2c2929292a2b2c2c282b2e292a313d434747443b322c2d2f3129 +221918191d1f1b1d212325293135282424211b28a6ffeeb2c3e9d1dfffff +ffdebbc3c8c1c6c095662b0c16140e1e2c4b3f22222a2b332c271d1b2323 +2129242b2d262325241f182d4e2a44616e301a18222c2d2e2e2d3f5b6e68 +356dcfdfd8e5dcdcddd5cfb8be9d99a29b43281e2033454a271924494a53 +64768d8f879ab9cbe0e7e0dcd9dadedddddddddddddddddee0e1e1e0dedd +e0dedddee0ded8d2c7bfb4b3aeb2ae7f13325c7d939da3a5b6aeafd0c99c +9aa99ee9dddedde0e1d6d2c5b8b2b5b6b3afafa7a359040e02000a050000 +0a1c293030382d325155443f3727252b27262a29393b3628252c312e2432 +35414049382c373625190d1b2709215895a79e907c77757a8bacd1e3e7ec +f4f6f8fbfdfcfaf7ffffffffffeed7bccbd4d2d0cec7c0bfc2c4c3beb6af +a59572553c30251d1e26292d302c241b120f18191b1d1d212d393f341908 +06041b52412b115487b5e9faffffffe43f47352e292926231c1a25323d3e +494e3f24191a1937514d5a522e0058e3f5a1949e9d999a99989897959491 +9493928f8c8d92939795959494939392908f8e8e8f8f8d898b8b8b8b8a89 +88878c8d8e9090908f8f8b8b8c8d4743403f3f3f3b37373f434c3d3d366c +bfc1719eb5aca0f1fcf9fae7deeaefb62b6deeb9bf9f3d3a3a3134206c6c +67745b303c465345353430383c393534312d3f332c32484b342b214b5c5b +46392f4482ad3e282d24292c2b2d2c2e2d2b2a2a282e2f2a282f393d4141 +3e362d292a2e31291c110c0d1318181e22242322262925272c291c197ed5 +853438615b7fc9decc7c40383427293d45422f1c13111d3238544827272e +2f37302b1f1d2526242c22292b242125241f1b2f522e4a67733219151f2b +2c3e5b6a7c97abad8cbefffff3fcefedebe3dec8cfada8b0aa543d3e4f6a +7d7e523835504c4e596474706685bbdaeff6eeeae7ebefefefefefefefef +edeef0f1f1f0eeedf0eeedeef0eee8e4dad4c9c8c0c4c09123436b8da0ab +b1b3c3bbbfe1daafb0bfb4fff1f2edf0efe6e4dbcfcbcdcecbc8c8c5c585 +3a504b454a3c2e272c363b3b35392c30505745423929272e2a292e2d3d3f +392b252c302e27363b47424a382b34372c28293f55394a51392830384251 +586682a2bccfe1eaedeef5fdfffffffffffdfdf7d4b59465565356565146 +372b23201c1c1d1e1f22180d03060a0a090c05030102040609090d0d131a +1e24323d413b2523374871a67a512566aad6f4f8fafafcd6171812100c0d +0e0f0c101f2f3b3e474b391c0e12193c544949432c0683ffff8c5e607073 +706d6a6b696864616463605d5a5b5d616565656464636362605f5e5e5f5f +5d5b5f5f5f5f5e5d5c5b60616264646463635f5f606144403d3c3f3e3d39 +3b44495344454076ced080aec5bdb1fffffffff6ecf7fcc44081ffcacfaf +4b4a494145317a7973806a424d576456454440484c494544433c48393238 +4e513a32285364634f42384c89b44531392c333330303132343335353035 +342e2d323a3f4345423c333033363931261c18191c201f23272928292e33 +2e2e2f2b1e1e89e9a45961897e9bddf4efa56c59422f3a5f848c76584030 +303b3851472a2b373a433c372c2a312f2d35303739312e2f2e29243b5e3a +5a77864938323033314d84a3bdddeef0cfedfff4e4f6fefffffff3d5d7ba +bdcabf5c34272f4a607a7f8a9fab73482b263e413d68b6e1f6fdf7f3f0f3 +f9f9fbfbfdfdfdfdfafbfdfefefdfbfafdfbfafbfdfbf5f2ebe7deddd8dc +d8a93a57809db1b8bec0d4cecff1eabebdccc1fffcfdfafdfcf3f0e8e1e1 +e5e8e3dededde8b680a6b2aeab967f6f6b6763594b4b3a3d5e6457534838 +363d39383a39484a42342d343636304147534e4f38272d32323d517ba385 +8285785d49372a2a2c3349647b868b939da3a6aaadacacaabab9c6cebaa4 +8e6e73797b7b796f635b5955504d4945403f342516141310101511111110 +0f0d0c09090d222d323338465869778eb0c7eaffffd896b8d4e7fafbffff +ffef3a3c30281e1c1c1b191b293846485256472b1e1f23425d575c5a4217 +8affff8954494642464646444541403b403d3d3837363b3c423f413e403d +3f3c3c393a383b3939373a3a3a3a393837363b3c3d3f3f3f3e3e3c3c3d3e +13141516171615151511091315261f688493636336b31b1433232a252113 +27030932000e1905001d171622451e0e000f0e131009090b140d181a1a18 +19212c322e3d43404e5f636f7f80644087ada69a9dbf2c192f2c2c2b2e2a +2927282b2d2e2b2b2c292f3e4a51525555504841372c2d211813161b2123 +22242627292f373b34312b3436469fefc4bbdef5e4ffffffd7bab5bdb8be +cbb68d58230a141413212d4f48251f2e383e4f3b1f1a292a201e252f332e +292827211f203d383f54bd2b1a141c27292d2d2d2d2d28220444c2ded9e7 +dededed7c08c455e7a7c521b30212d323f3f2a2a3c514e5e687c968c87a6 +c4b6eddddde3e0e0dfdfdfdedfdedfdfdddedfdfdfdfdedddedcdcdddfe0 +dedbd4cdc2c0b6b5b18500163b586b798fa39eb6aa9ea4b6bb9c86e6e2dc +dbe1e1d7d5cabdb6b6b6b3afb1a8a477050e010009060000091f2d33313e +3c393a323344443532352f2f322f36373022222c363730383d3e3b3e3733 +3d372b1e0e23360e1a5092a8a39c8d7f7b64596d8fa8bcd3e7f1f7fcfcfa +fbfbfbfaffffffffffe0caccc3c0c5c6c5c3caccc8c2bbb2a69a7e634737 +29222025272a2c2b241c13111615171b1e24313d413d220c0601103b3e32 +093e7ba8eaf7ffffffff583f342d292825211918222e4a484f5441211112 +183a62586750300018d1f7d188b5969e9e9d9c9b9c9c9d9c989694918e8f +95979493939494959697929190919392918d8d8c8b8a888786858b8d8f91 +92908e8c8e8e8f904142434445434242403c313b3d4e4590aebd8a8a5bd7 +3c3554474e4b473b4f29254e2133432f26413431395c3a2b1b302f32312a +2a2c38313c3e403e3f47525a56686e6876858994a4a28660a7cdc6b8bbda +3f23312b26282d2e2c2c2b2b2b2c2b2e2d2a2d394448494c4c47423a322b +3026170b0a0d14171b1f21222224272b2d32353f342b5f8b40284b6e77af +e9e38455393024273238423c2d1e1211203237554d2a24323c42533f211c +2c2d2321252d312e292827242224413b4559c2301b151f2a314565737474 +6c6f6199f7fff4fdf1f0ede7d29e556f888b612d46415b69757153454b56 +4b565a697c6e6893c6c7fceeebf4f1f1f0f0eff0eff0efefedeeefefefef +eeedeeececedeff0eeede7e2d7d5c8c7c3970f274a6878869db1abc3baaf +b5c9d1b29cfcf6f0ebf1efe7e7ddd2ccccccc9c5c7c2c5a13a4c4943493d +2d252b363c3c323c39363933344645363538343439363d3e362825303839 +3640454641423a343d3b35322e4e6a403f4736272a3540454c41435c799a +bed8dee4eff7fafdfffffef8f9f9f7f6d9a574665d575349392b25201b1a +1b1d1f211b1006040808090b060402020405070708090f181f2736414644 +2f253343638f7b5e2357a0c8f7f6fbfbfcf833110f0f0c0d0f0f0b0e1c2d +4a484f523d1b090c183f655556412e0740f7ffbf587d6b7875726f6e6f6f +6d6c686663605d5e61666363636464656667626160616362616060605f5e +5c5b5a595f61636566646260626263644142434445464547464239434556 +509abacb99996be74d4665575c5854475b363a633445533f355144424b6e +4839273f4044423b3b3d48414c4c4d4b4c545f64606f75707e8e929dadac +906bb2d8d1c2c3e1462c3d33302f32313130323336373335322e323d464b +4c4f4f4a46413831372c1f16161a1e2123262829292c31353536363b3532 +70a76752759696c8fbf7a2775e503030465e8589755b4130313a3955502e +2a3b474e5f4b2e2835342a28313a3e383332312d2b2d4d4a556cd6463a33 +32393c5d98b9c2c6bdbdaed2fffdedfbffffffffe0a8627fa3a878373a29 +3e4a5d727f92aaa76a4b2927433a3a73c1cefff5f4fcf9f9fafafcfcfefe +fefefafbfcfcfcfcfbfafbf9f9fafcfdfbfbf8f5eceae0dfdbaf263b5f78 +8996aabebcd6cabfc5d8debfa9fffffbf8fefcf4f3ebe5e1e4e4e0dadcdb +e8d17ea1afacab9a82716b6c675d4e524c474b47495b594a484b48484c49 +4f504638343c4545424b52534d4d3f363b3e414d5d92be95868a81685346 +3a3132211a2e475d738891969ea3a3a4a6abadaebbc7d0dac69f7f7c7575 +7571685e5d5a534e49454040382c1c1513111114111110100f0d0b08050b +1c2b31363c4a5c707d8aaabeddffffe594abcdddfffbffffffff54352e27 +1e1c1c1b181926355452595d4b29181822456e606958441748faffbd4e66 +41494948464546464544403e3b3835363a3e3b3b3b3c3c3d3e3f3a393839 +3b3a393939393a37373435323a3a3e3e413d3d3b3d3d403f11151716100c +0d0e0b111a11080f095775425e68607d03000500020817000a240f121818 +15192545395933715e716c7c7477848c6975a4a19f999da8aaa5a5ad9ea3 +8471747e82708286802e6a666d73b4e2371d33312f332f2b2927282b2e2f +2d2a282a384a5355535453525553453021161111192226272425282b3035 +3d4034321e2a3a5b95b9d4daddecffffffecb0a9b3b6afbcccb4884d1d0b +0f10121c2847472a233646484e40281d22222028263038362f2a2929311e +302b3449c34a130d161d1c18120d080c08090037bed2dce4dde1e0dbb86e +05262d381618332233333f322634505648616983a5a3aac39791efdfdfe9 +e1e1dfdfdfdfe1dfe1dfdddddededededddddedddbdcdddededddcd8d2ce +bab1b0892a2c39557a92938892b5bdc5cec28e416de0e5dddce1e0dfdad1 +c6bdbab7b2aeb4abaa941410070306050000081f2f353e3d383b403d3d45 +483c3a3d3635363034342c1e1e2b393a373638343635342f302e261f142c +3f18174584a09e9c9484887566605d5c7198ccdeecf1f1f2f7fcf1feffff +fcfffffff2ddbcafb9c4c7c5cfd0cdc7c0b8b2a68e745743322924242629 +2a2a241f1715181718191b1e2b36383e260c040004222f2d04296d9be2f1 +fffcffff8633352e2924211f1b171a213b2b21211b10121a11233e313621 +190300a2f4ec8eac91a3a9a6a29fa0a1a5a59d9c9a9694959b9c97969595 +95969798939292939494928e9492908f8d8c8b8b898b8f91918f8c8a8f8f +90913d4143423c373636313740372e352d7d9f6e889086a32722291f262e +3f21344a2b2d373b3c40496654704886788d8c9d9598a5ad8a96c8c5c5bf +c3ced2cdcdd3c4c8a99396a0a28ea0a29c488480878ed1fd4a2735302930 +2e2f2c2c2b2b2c2d302d292b36454d4c494a49484a483c2e261d110b0b10 +141517191e2125282c2f272e222b2729393c3d3f4f70a7d5cc9d563e3127 +1b26383c463a3024110d1a292f4a4a2d2639484a50422a1f2525232b2630 +38362f2d2c2c342234313a4ec84f16121c282b3b535f5d5f585e5c90f6f5 +f5f7eef2f3efcc8216383b48262a4942616872624b4d5b574356586e8c86 +8cb39ca4fff2f0faf2f2f0f0efefefefefefededeeeeeeeeededeeedebec +edeeeeefefede4e0ccc3c0993a3d48658aa2a3989fc2cdd6dfd5a45783f6 +f9f1ecf1eeedebe3d9d2cecbc6c3c9c3c8ba454d4b47453d302529353d3d +3f3b34383e3d3d47483d3c3f3a3b3d373b3b322423303c403f40413d3f3d +3b3435373537395c774e3b392e211d242f2f413c404545517ba2c0cbdce6 +e9eef7fff5fffffff2f4f9f1bc97715b5550402d27201b1a1c2022241f15 +090508090a0a060504040405060608080d161c24303a3a4332242f3b5274 +7261284793bbf0f2fdf5fdf96307100e0e0c0d0f0f0f17203b2e2421190c +0c1714263e2b27141a1412c5ffde667c6a7d807b7572737476766e6d6965 +6364676b666766666667686964636364656563616767646461615f605d60 +63666564605e63636465404446453f3d3c3e3a404b4239403988ab79949c +93b03530372d343b4b2d405740424b4e4b4f597765825997879b99aca8ab +b8c09da9d8d5d2caced9dcd7d5dccdd1b29da0aaad99abaea855918d9499 +d9ff513041383337333231303233373839342e2f3b494f4d4a4b4a494e4c +3f312c251b17181e22232123272a2d3136392e2f21262934505c66697592 +c1ece0b26f5a5343273150698e8c7d66412c2d32354f4f342d4254565c4e +362b2e2c2a32323c4440393433333d2b403f4a61dc65352f323a3e5b93b1 +babfb7b9b4d4fffbfafefefffffad38926505e6c40343d2a454e61667790 +ad985744242b4c4e5a9195aafff9f8fffcfcfafafcfcfcfcfcfcfafafbfb +fbfbfafafbfaf8f9fafbfbfdfefef8f4e2d9d7b051515d759ab1b0a7b0d5 +dde6efe4b16490fffffcf9fefbfaf5efeae7e7e4ded8dedbeae988a0b0b2 +ac9e89756e6f6c625d534b4d54555760605253565355575155554a3a3743 +4f504c4c504c4e4a4338393e485970a8d4ae8f8b857056473f323d312d2a +23233e5d787f8e9494959da8a1b2c1c2bdc7d3d5b299786a6f736b60625e +57524e4946464035231a16141313111111110f0e0c09080b1b272e323645 +4f6d7a84a0b6cef4fee89a9dc4d4fbf7fffdffff832a2f261f1a191a1b1a +202845372d2b261a1a221d2d46373a282e241bc9ffdd5c66435054504b48 +494a4c4c4443403c3a3b3f423d3d3c3c3c3d3e3f3a39393a3b3b39373e3d +3d3a3a37383636363c3c3e3a39373c3c3f3e0d10121414161a1d323b5f47 +403c254e799ec1a8946172aba2aaa181a1ab9094b81f1e148a94aea7af9e +344b8b7e685d40503c3f4648362c22151219170a0308201500224f544e00 +1911300a62492b1c8ce1391e2d2a2b3a2f2b2a28292c2e2f2f2a262b3c4e +55534d4a45454e534933140c0e121d25292a2a2c3137393938363d49384b +5c82acbbd8e1ddf7ffffe1b8b89f9cabb2b8c3b884441a0e0f0b0d121d32 +38251f32413f3b2c1715262b282d242d37332b262a2e2a21382441537155 +1e1a23261e140a02050e10100234c2d1dbdfdce5e5e3c3721e3c34361c28 +2b2a3035492f243d62584a686d88aab3bdbc3a5cdfe2dde1d6dfe0e0e2e2 +e2e2e2e2dedededededededee0dfdededededfdededbd8d5bcaeac88422e +1f30669fb9b9bdbcbfd3b363331e65e0e6dddfe0dee3ded8d0c9c5bfb7b1 +b4aba99e220e060404080300061c2e373c3a3c4144423f3e443b3c3e3736 +33273231291b1b29373b3a31332a3834372f2c2d241b121e290b1739789c +9ea2a0948d7c6f6a614d435081a2c6e1edf2f2f4fff4effdfffffcffffff +eac8b0abb4c3c9cbcac7c3bfbab2a08769523f352c27292a2c2b27241f1b +201c1a1a191a20282e3d2c0f0703021624290d1a6292d8effef9ffffba2e +362d29211c1e1c18151525160c0a0f1113150c13242321100f100064f4f7 +b598a1b0b6b2aca8a7a7aaaaa5a5a4a09e9fa4a5a5a29f9d9b9a9a9a9796 +95959696949197959391908f8f8f8a8c8f9192918e8d8e8f909136393b3b +3a3c3f42545d8169625e4772a1c8e9d0b88593ccc3cec5a7c9d5bab9d53a +3d35afb9cfc4c6b3475ea29a887e61705d60676c5a50483b384040332c2f +453712426f746a19332b4721785f4134a9fc4c282f2925372e2f2d2d2c2c +2c2d322e292c3a4a4c49413f393740473d2d19150e0c0d101214181f252c +2e2c28252d392a312a34352e3e4c5c89c8c2815657321a1b1e2434484a3a +352d1207141c21353828223543413d2e1917292e2b30262f37362e2b2d33 +2e253e2a4758765a221f2b35323e545f626a676c6a90faf2f2f1eef7faf8 +d889304f43452d3c414b5c69795a45516a5640585a719199a4ae446ff2f5 +f0f4e7f0f1f1f0f0f0f0f0f0eeeeeeeeeeeeeeeef0efeeeeeeeeeff0f1f0 +ebe7cec0bc98523f2e4076afc9c9cac9cfe4c47649347bf6faf1eff0ecf1 +efe8e1dbd7d1c9c3c6c1c6c352464647423f342727323c3c3b36373d4242 +403f42393c403b3b3a303b3a302221303c40423b3c36413b3e3633393637 +3a5164443e342d261b1e292a2f2f374242404c5b7890b6d4e5ecf0f4fff7 +f2fefffffaf9f5dcb4875c4338342a221a181b1d2226241b0e080a0c0c0c +09090607060605060c0c0e161b1e242c30423727303b4c656b65383e87b1 +e5f2fdf6fdf79c06110c0e0b0a0e1010121525190f0d0f0f0f130f16241d +1305101d0a83ffef976f7a898d88807c7b7b7b7b767674706e6f71757573 +706e6c6b6b6b68676666676765626a6a6866656464645f61646667666362 +626364653c3f41424345484b5e678d756e6a537eadd4f5dcc693a2dbd2dc +d3b4d5e1c6c9e74f5148bfc9e0d4d8c6586fb2a8958d748570737a7c6a5e +53444147463932364d411d4d7a7f76254038552f866d4f40b1ff53313b31 +2f3e33323231333437383b3730313f4b4d48413d393740473d2f1f1c1818 +1a1f222124292f343635322d303a29323344515164727ba4ded99c6f6a47 +36342a30507896918670452827262a3c40312b3e4f4d493a252332353237 +323b433f3731343937304a38576b8a703f3c424a4a669dbecad7d1d3cddd +fffffffffcfffffbd98f446f6e6e4945343043536d636e8cab87493e222b +4f5e6e8b3c75f9fcf7fbf1fafbfbfdfdfdfdfdfdfbfbfbfbfbfbfbfbfdfc +fbfbfbfbfcfefffffcfbe2d6d3af6953415086bed6d8dbdcdff4d4855641 +88fffffcfcfdf9fef9f5f3efefe9dfd7dad8e6f09499aab0a9a390796e6c +6b625a4f4e545a5c5c5b5a4f54595658574d5a574c3c394350534f474b46 +524b483e3b454c5e77a2c8ab9b8e8a7c5f50493e3f3736382e201d213548 +6b869498999eb4a6a5b8c5c4c1cad6c9a885695c5c62625d58534f4e4b4d +493f2d211c1a17151414131311100e0b0d0f1a252a2a2d374568777f9cb4 +c9e8f7eaab96bed0f5f9fffdffffb8283227211816191c1b1b1d2f221816 +1b1c1d1e181d2c292416242d1488ffed8d5b59605f58514d4c4c4d4d4848 +464240414447474542403e3d3d3d3a3938383939373640403e3c3b3a3a3a +35373a3c3d3c39383b3c3d3ea9a4a1a7b5c1cacdc4accea9c5cda3908b83 +8ba572688964614a4e3f3d3d1b55de1e1b15ac3513040c2d39190b004b6f +4b024aa64000091119140f0f12161a1f111c1e8ba27580271f213b206c7e +563e70df3519282928362f2b2b292a2d2e2f2d2c2b2f3b484e4b4346413e +43483c250d090e141e25292a363d4a5457504641354a4a758cb2cdd7d2e4 +effffffcd0bfad948ea4bbbdbbb57637130d0f0d0e10263139312c39423a +4d3f292939372925282d322c221d2730282a372a343a1c212f2a31302216 +0d09030805060017b1cddddedde7e1dfcb840d6b8f5c322117302f374c2f +345d7f5a5272788faab7ba902b5fdce9e2e8d9e8e0e2e3e3e3e3e3e3e1df +dededededfdfe0e0e0e0dfdedfdfdedbd8dac7bab58f4b4a3c220f1e4d78 +96a1835b3a354f5671e6e4dbe2e1dbe4e1ddd9d6d2cac0b8b4aca9a03107 +0003030a0a0104182c35353d47453a3738383e3a3f413a3832222c2c2419 +1c2d3e413f33362d3d3339312f3423170f0d0e000c215f909ba2a7a09c81 +6c6b6c5f4136486280a2c0d3dee2efeceef9fff9f6fffffffffdd8bdb5bb +c9ccccc9c9c6c5beb29a7e645044382e2c2e2f2e2d2a2724241e1b1d1b18 +1b212c4031130a07040f1d22160d548bc8ecf4fefffbe736363027201b1b +1a15131519181716191d160b0b16212d251f16150229cef9da9db1b8bbb9 +b7b4b3b1b1aeafafafadaaaaaeaeb3b0aca8a5a4a4a4a09e9d9d9e9d9a98 +9a999795949494958f9093959696959490919293cfcac7ccd7e3eaede1c9 +eec9e5edc3b1afa9afc99288a681816a6e606162427afb393836d059331f +213e482a2118698f6c226dc963242d373f3a38383b3f4347363e40adc396 +9c433a3951367f9169548dfa48232a2822332e2f2e2e2d2d2c2d31302e30 +394445413838332e33382c1c10100c0c0c0e11142430404e514a3d321f2a +1d332f3c4041456385aabc91534242260a12272a304a4534363316091316 +283137312c39423a4d3f2b2b3c3a2c282a31343026242b372f313d303a3f +2126312e393f3a455e6c676860655e73ebeef1edeffaf7f8e39c217e9f6d +46382f515b687955506d8353445f627791a2a5883673f0fdf6fcebf9f1f0 +efefefefefefefefeeeeeeeeefeff0f0f0f0efeeeff1f1eeebedd8cbc59f +5c5b4d3320305f88a3ae936c4b48656c87fcf8eff2f1e9f2efeeeae7e2da +d1c9c5c1c4c25d3e3f4441443d2b252e393b3539424238373c3a3c373d41 +3e3d382b37372d2022324147473d3f36443a3f383640343438414c393a27 +262918131f23291f1e30434a473f41547599b8cddbe1eeeef0fafff9f6ff +fdfdf2cd97674b3f3b32271f1d1d1e222620150e0f11100d0b0a09080706 +06060a090e151a1c1f252f443c28303c485b6866493678a7d7f3f7fffdf3 +cd130e0d0e0c0b0e100f1015191b1a191b1d160b0e192027191715211a42 +ddf9c67e8e92928f8b888785838081817f7d7a7a7b7e83827e7a77767676 +72706f6f706f6c696e6c6a6867676768626366686969686765666768d8d3 +d0d5e3eff7faefd7fbd6f4fcd2c0bbb4bbd59f95b48f90797d6f7172518a +ff4c4a47e069423034505b3c2f25749c7f3781dc76343d444a433e3c3f41 +45493e4749b6cc9fa74e45455e438d9f776195ff4f2c36302c3a33323332 +343537383c3935353e4546403635322e33382c1f171a17191a1e1f213039 +4852554e4235212d223d42566064657f9bbed3ab756052332229333a4f7e +968f8a7a4a2c2722343b423d38454e46594b373745433531363c40392f2c +343f393b493e4a52353c4a474e545471afd2d9e0d3d3c9c6fffffffffbff +f5f4e3a63ca6d09961401f364255746277a0b374413e28314f6370632e7a +f7fffffff5fffbfbfbfbfbfbfbfbfcfcfbfbfbfbfcfcfdfdfdfdfcfbfcfd +fffdfafeecdfdcb6706f5f43303e6b97b4c1a37c5b57727994fffffafffe +f6fffaf8fafbfbf3e5dbd7d6e2ef9c8ea0aca8a7987d6a68665f51505857 +4e515753524c5359595b584a57554a3a3846545754494e47564a4b42404e +4e5e7895b3a39c85858264514d4548362e363f3925120a1533546f7f8a8e +9b9a9daab6afaebdc7d1cfb7917062636b68635d57545252534736292320 +1b161414141312100f0e0d0e1822282828304267747793b0c7e2f7edbe92 +b6ceecfdfcffffffe633302b211816181b19191d23242322272922151720 +2831272627312649e0f7bd6c726d645d5a575654524f50504f4d4a4a4c4e +53514d4946454545413f3e3e3f3e3b3b4142403e3d3d3d3e38393c3e3f3f +3e3d3b3c3d3e5f4a2f2321231c15161c6112020103090c0a000024351f09 +02005fa0a183111dda1a2312c9630028363e81410052b374c90738ad3100 +1b130e19190f0d15160e160f0ca0b8728829211b18198cf09e417beb3617 +2e342c312e2b2b2a2b2d2e2e2b2c3032384145443f454741413d29100d0b +0f171d24282a3d496076817b6d69606a6498b0cddde4e8edf4f4e8cfc2b9 +83888fa3c2c5b8a867260a0b0f1116172b2d34332d34382d2c343837362c +2a362c2d2d251918253430302139223038282d282b26140905020505050f +000eafd2e1dfdfe6d6d3ca8b2576780b1831262e353547304d839c5b587b +8397aebeb7735982dde4dee8d5e0e2e2e3e3e3e3e5e3e2dfdfdededfdfe0 +dedfe0dfdededfe0dfd9d7e0d4cac49b423e4149443530373e40323c474b +5a5780ede2d9e4e2d9e3e1e1dfdedad2c7bfbbb3aea33f090206020c0d02 +031528323d3e413e363e40373d3c43473f3c3322252620181d33444a4438 +3c2f3e2f373028321e14130a0903111b558c9da3aeabae957b6a61594f4a +49413c496d98bed4d9f4faeff5fffffffcffffffffffd0aed0d2d2d0d1d2 +d0cbc0a88e735f5143363433333433312e2c231f1e201e1d1e212c413211 +07030007131915004582b9e6ecfcfcfbff3f3432251e1d1a1713151a151a +1812141d1d110d17131f15221918130093f6e4b1b3b4babbbcbdbdbbb8b4 +b5b6b7b5b3b2b5b4bab7b4b1afafafb0a9a8a6a6a6a5a29fa2a09e9d9c9c +9d9e929496989a9a9a9a94949596856e53454140393130387d2e1f1e2029 +2c2a1a1b404f39231c1b7cc0c0a4353ef5354031ea841c3f494d8e50116c +d196ea275bd05524413934404238363f40373d3431c5da94a6473c36302f +a2ffb15798ff49213033262e2d2f2e2f2e2d2c2c2f333333363b3c3a3137 +38322f2b19060d0e0c0b0b0c10142c3e5a727d77695b44391b322b363d4a +5f779197825c3c34171a0b112e3431433d2c33371b0d18192a2b32312c34 +372d2b363a39382e2c3a2f33332b201f2c3b3736273f27353d2d2e2b3235 +2e3957686c69646e646ae5f2f5eef1fbefeee3a53c8b8c1e2d48414f6163 +7051638f9b504663697e97acaa706699f1f8f2fce7f2f0f0efefefefefef +f0efefeeeeefeff0eeeff0efeeeeeff0f1eceaf3e5dbd5ab534f525a5547 +42494e4d424d585e706d96fff6edf4f2e7f1efefefefeae2d6cfcbc5c7c4 +683c3e4541484330242c35383d3b3e3b3740463b3c39414743413c2d3031 +291f2436474d4a40433643353b342f3e2f2f3a3e47424530323a23141b1d +2b22181b2a3a484e463e39476995bcd2d8f2f8edf0fbfdfdf2f3f9faefc2 +7f4b5a4d3e3129242022282317100f12100c0a0b09080705040402040a14 +1a1d20252d463c252a353e4f6262502b6898c7eef3fffcf3eb210c0d0c0c +0d0e0d0d1219151d1b15161f1d13111a12190a1c181f2513a2fcda9b938d +9192919292908a8687888785838283848a898683818181827b7a78787877 +7471767471716f7070726568696c6d6e6d6d69696a6b907a5f514e4e473f +3f468b3c2f2e3036393528294e5e48322d2c8ccfd2b5454fff485243fb93 +2c515a60a1632079dca2fd3c6fe365324e443d47463a383e3f39423c39cd +e39db05147413c3cafffbf62a0ff502a3c3b303532323333353537373a3b +3c383b3d3d383034352f2d29190715171717191a1e2036445e737e786a5b +433d26474857616c7b8da3a998796153242320263c45527b918a8b804f30 +2d283838403e3a40453939424745443a38463e413f372a2936454142354d +3a485141433e44484769abd4e5e5dce2d2bffffffffffbfce9e7e7b45eba +bf49484e30344856726488b7bd60383d2e3b546e764d5f9ff8fffbfff1fc +fbfbfbfbfbfbfbfbfdfcfcfbfbfcfcfdfbfcfdfcfbfbfcfdfdfaf8fff7ef +e9c26763646c65554e575e60525d686d7d7aa3fffff8fffff4fcf8faffff +fff9ebdfdbd9e5efa68b9eaca8aa9d7e6762615a5750514e4c5760544e4a +565f5e5f5b4d504f46393749565c564d53485645473f394c495a7d94aeac +a88d8e8f7056514b534335303035352d1909020c2a507285869fa5989ca7 +a9acaab4c2d1d5b885607c7a726b66615e5b594e3d2f28251f1816161515 +1412100f090b152028292c313f646d6a86a4bfd9f2ecc68bacc7e2fbf9ff +ffffff3d2f2c1f18181818171b211f26241e222b291f1a211a23182a282f +331ca7fad18d7c6c635e5e5f5f5d58545556565452515253595754514f4f +4f50494846464645424049474744454346453b3b3f3f434143433e3e4040 +a1b71d48d49819121d164c50150e231e2225250f263f8a4c1b17b79a5c56 +003bdf1e1b1cc452192c1d86b17c3954a42ac21518c65304210f13121211 +0f1010110f150f90783bc4331315002a64eed32977e4331a2a292b2d2c29 +2928292b2c2c2f29292d363d3f3d3e3c3b37342b1e141413181a21293338 +4d59666d6d6d7380999ca5bbd6e4ebeae1f9ffe2c0bdb89773718fa8b7c5 +c5a463230a000c120e1b2b313535343839383535353434322e29222a2f27 +1a17202c302d2b2c2e302f2e30392c251f13040400060a0000169fe0e3d7 +f0d0dbe8d4b4382c1e18171e2a322b57314572b8a442686e9393b0b59b66 +4c8dd2e4dedfe2dde4e0e1e4e2dde1e5e3e0dedddddee0e1dfdfdfdfdfdf +dfdfdbe1dfd3e1d2dfc66a3135514c243b1a17201a3f3b30584994d7edda +e1e5dde0e8d4e2dedae4d8dec8c0acad7800030904000301000f29332e3c +443f383838393f3e3f41423b2a1c26271d1420373f373835353636323437 +2f2c271d0b100b00060d3b7682a5adb6b0ab8a6862584c5145423e37374b +7396c0d5e9f3fbfffffeffffffffffffffdcc9c0bbc3cfd6dbdad2b39989 +76604b4146413f3e3e3e3d3a312a25231f1a1d202e373a1513040b080d09 +25002d7ab0dfedf4f9fffe6e2f30241f1c18141215191c3654362b493517 +110614474c4454343e0355edf5bab8bbc2c1c1c1c1bfbbb6c1c0bebbb9b8 +bab8b9b5b5b7b9b7b6b6b2b6b6b3b2b3b1acafaeaeaca6a2a5ada09d9b9c +a0a2a19f9e9c9a98c5db3e68f1b4332c342d636a312b403b3c403c253c52 +9d61302ed1b577731a58fa39383ce47234432e93be8c4c6ec24ce3383bea +782a47353b3b3b3a3b3c3c3d3b4038b99f62e65531331c457cffe94194ff +46242c28252a2b2d2c2d2c2b2a2a33302c2e34373633302e2c2822190e08 +0f100d0c0c111b244050626c6c6c6f7173593e322e313c4a5b83987b5248 +381c0b080c1923333f423f30393219100e1a282f32333337383737373737 +3735312f2931362e221f283438353334353736332f382f32374156686469 +685b6070d3fef4e6ffe6f4ffefce4f41332d303847545583566182bea034 +5253797a9ca993695ba4e6f8f2f3f4eff2eeedf0efeaebf1f1f0eeededee +f0f1efefefefefefefefedf3f1e4f2e3f0d77b4246625f374f2c272d2a50 +4c436e5faaedffeef1f5ebeef6e2f2edeaf5e7ebd5d1c4cda02c3e49453f +3b312229383a2f3b433e3b3d403f3e3c3e43484235293332271c253a4139 +3a38383b39333437323335353140443d4232313d1418141e232a1608192a +364b4948453d3b4c7395bccfe1e9f0f7f7f0fafffbf3f8f5cd9872594137 +2f2924273124181717120c0b13110c090908070705060b1317181d222d3b +43283330444c5d5965284a8bbde8f6fcfafcef5407080b0f0f0c0a0c1218 +1c3657392d4b3719150911404441533a4a1366f9f6ae9b96999896969694 +8d8893928f8c8a8988898a8787898b898888848888858485837e83828280 +7a76798174716f707476757373716f6dd3e94d77ffc2423b443d73793f39 +4e49494b4a334a61ae72413ee2c68a852c6aff4c484bf381455340a6cf9c +5b7bcd58f44b4efa8837544043413f3c3c3b3b3c3e463ebfa669ef5e3b3d +275088fff64b9cff4d2d38302f3130303131333335353e38353339393731 +2f2b292520170e0a161b1b191b1f292f4753636a6a686c6e72604f4e5259 +636c7499ac906b655b38140d1e2d3146627b9690917b4e35262a393d4341 +43454845464446464644423f3b43463e2f2a333f43404041474949463f48 +3e434f72aad7e0eae4d1d1c8fffffffdffe4eefffae97b76685846393539 +3d765e77a3deb1333a283e385d6f644a56aceffffbfcfef9fdf9f9fcf8f3 +f5fdfefdfbfafafbfdfefcfcfcfcfcfcfcfcf9fffff4fff5ffeb8f565874 +6e455a3a37403a605c527b6cb7fafff9fefff8f9ffebfffffffffafce5e3 +e0f6dd799aada9a0927d625c5f57444b534e4e5157554e4a5058625f554b +5552423338494d454747494e4c4540413b4350617295aba7a28b878c5d5a +4c4f4e513b242a2d2b3528221b0f0913355273819094979e9c97a3afb2b6 +c9d5bd97827468686b6967686752413b352a1f1b221f1b19191817161210 +161e2425292f3f566c63889dc7dbf0e4e08e98c1ddf7fdfeffffff6f2a2a +1e1a191615161b2026406042395743251e101a484f4c614858206df9eea0 +89796d626161615f59545f5e5b5856555555565353555755545450545451 +50514f4c545355514d474c524742424147474846464444405de14829c37c +001f1f2874a98939292c321d263b5287eec84208d3a46cbe2f36e011151d +c647162547a1f59c1e45b35dc4051bcd6b151717121111100e0f0f0f0d11 +0059888175170b0b19296ba94d1975e3331b2c2b2c2d2d2a2a292a2c2d2d +2b28282d353c4142413d362f28221c1515171e202228343d505861666669 +6f7f949fb3cde8f5f9f8f6ece8d6bdab916f646b8ca8b9c6c6a561210500 +0812101c2b31353334373835353335363a3a363125292d24171625343330 +2f2f3233313032372e281d14090000020700001193dddcecd4ecd5d8cde9 +332315171f252927374c2a6598e2954a6978979bb1ac7d565f98d2e2dfe1 +e3dee1dfe0e5e7e3e2e4e2dfdfdededfdfe0dfdfdfdfdfdfdfdfdbdfe2e1 +e2dce4e3c9965a333d2f273d4b474f4d2d386e81c4e1e6dadfdedee7e4dd +e9dcd6ddd7e0d4ccb9ab7d03080a0103060200132729353535333436302c +34363838362f28232327241f243238363735363737353635322a25190e0f +0c00030220607faaafaeb0b197756961534c453f3d3a3435465a7b9bc1db +ebf8fffffffffffffffffffff9cea9b3d0dfe0d8dac9b399806b6260524e +4a484949494438302c2a241f1f243c3f3f2613050d0708091c001f74a8d7 +e9f4f9ffff872f34221f1f1b161315151f3e695a4f5e4322111527566668 +7963270038cef5ccb1bdc6c5c5c4c5c3c1bdc2c1c1bfbdbcbebbbdb9b6b6 +b8b8b8b9b5b9bbb9b9bab8b3b1b2b4b5afa7a8aca9a6a4a4a6a8a8a7a8a7 +a5a381ff6946df960e34343d89c0a35547484a30394d6398fdd9531be8bb +85d94c53fb2c353de664323a56aeffac315fd381e8293ff1913b3d3d3b3a +3a393a3b3c3d3a412884b3aa9c3c2d2c374586c1653492fe46252e2a262a +2c2e2d2e2d2c2b2b2f2c2b2e33383838362f281f18120c090b0f100e0c10 +1e2c444f5d6261616465604c38302f344353676c6e614d3f2a0e09070d1b +2534404640313b3319100d1b282e3232333637373636383b3f3f3b372d34 +352c201f2d3c3b383736393a3835303532343340595c6265635c606bc9fb +edf8e5ffeef4e7ff49392c2e3a42464961744a7aa3e38c39515c7d85a2a5 +7e5e6face6f6f3f5f5eff2edecf1f4f0eff1f0efefeeeeefeff0efefefef +efefefefedf1f4f3f4edf5f4daa76b4450423a4f5b545f5e3e4b8497daf7 +faeeefeeecf5f2eef9ece7eee4ede2ddcec8a434414a45454233252f3933 +37373435393e3c3737383b3e3f3c3632323532292b353a38393838393836 +353532303130313d433d44322d3c202416111d28150514232b3a484c4a45 +3c3c4a5b7a97bad0dde7f1f6f6f9f8f3f5f8f2e6c0834a3b403b2b243531 +271c120e121b13110d0b0808050502040b1317171b2139404536302e3f48 +585c6129377fb1e2f6fefafdf570070a090f0f0e0c0b0f121d3e695d5160 +45241515214f616779672d0a49e0ffc897989d9c9a999a98938f94939290 +8e8d8c8c8e8b88888a8a8a8b878b8d8b8b8c8a8585868889837b7c807d7a +78787a7c7c7b7e7d7a798fff7856eda51e45454e9aceb2615254563e475b +73a8ffeb652cfbcd99ec5e65ff3f444cf574404b69c1ffbc406cde8df639 +4fff9e464846413e3c3b393a393b3d452d8ab9b0a3443635415091cd713d +98ff4d2e3a32303131313232343436363a35323338393937342c271f1812 +0c0b141a1d1a191d2a3448505c5f5d5e606462544d4f58606b758385877b +665945210e091e2e334765809791937d4f37282d3b3f4542434647464847 +494e52534f4d42484a3f312e3a49484544464b4c4b483e423e444a6faecb +dee6e0d4d1c3f7ffffffedffebf8feff827562574b3e32304b6b5795c1f8 +8d292f2d4449677156466eb5effffcfefff9fcf8f8fdfdf9f8fafbfcfcfb +fbfcfcfdfcfcfcfcfcfcfcfcf7fbfffffffdffffeebb7d565f51485d6b67 +6f6e4e5a91a4e7fffff9fcfbf9fffbf6fffcfbfff5fdefede9f0df809bac +a8a5987f645f5d4e4c4644444c53544d48474e565c5e5b5959584f423e44 +464448494d4e4d4a43413c404b5a7192a8a6a2877b8464614e444a524129 +2b2e2b2e33322e25171017223a506c7e858d959a979ea3a7b4c3ccd0b98a +605f73776e656d625444352b2b3026231f1d1c1c1a181211161d21242a32 +4a5567697e98c4daedeae0948dbdd8f4fcfffeffff8a2c2e1e1a1a181716 +191b284873665d6c51301e1d2b57686f85733d1851e0f8bd8a7e71666564 +65635f5b605f5e5c5a5959585a5754545656565753575957575856515455 +5958544a4d4f4e4949474b4b4d4c4e4d4d4952c63f25e1b73a40353e9ded +ca42251731152e5868a0f4d22e0fb89a92d7203de406161fc8381a1f359e +ee5c0321797b431117390c14100a11110e0d0d0e0e0e0a1907030e0b0008 +190d1e1b554a081970e0321c2e2d2e2e2f2c2c2b2c2e2f2f2a292a2d3339 +4043433a2c231c171615141c2325252b3a464e53595f6269748494a7bfda +f3ffffffffeadbcdad875f4a54678cabbbc7c7a6611e040006110f1d2b31 +34333335363337333335393730272025271d111124343130313233333231 +3532302b1c1e2a0700000502000b80d9e0e9dce3dccde8d01d16131a2326 +282942403b95c4f771576b8595a2ab9864699fc4e2e4dfe2e2dbe1dddfe4 +e6e4e1e0dedfdfe0e0dfdfdedfdfdfdfdfdfdfdfddd7dbdddadcd6e1e7e4 +ba90a0700047b3bbb657145eb5cdeae1dddfe1dbdee7dde0e6dbe0e4dbe4 +e5ded2bc9b1d060000000700001023223a35313133312d2d2e2f2c241b12 +0d0c0b121617171a2228313333303234332f31292418140f0b010200114c +7aa3aeadacb4a27f6d6558453b353c423f3836383d5b86b2d0e3f2fcfafa +fffffffffffffffed8b2adc5dce1cdcbbfab9383756c635d595658575651 +3f3935332a222227363235330e080d0a040e16000d6d9ecfe6f4f9ffffad +3138221f201d1916131311223f342730200d070e11212621231617011193 +eedca8bcc8c7c6c6c6c5c5c3c3c3c4c4c3c1c2bfc2bebab7b8bbbcbcb9be +c1c0c1c2c0bbb7b9bec0bbb2afb1b5b2afadafb0b1afb3b2b0ae78ea6142 +fdd150534854b3ffe45e43344727406878b0ffe23f22cdb1abf23c5aff23 +3640ea58343445abfb6c163c9ba169373d5f323a38333a3a3a39393a3c3c +3c4b37333b37282f3c2e3c38706520348dfb4526302c282b2e302f302f2e +2d2d2d2d2d2e31353739372f20150e0b0a0a090f13110d14253642494f51 +505156584d413735363c4a5667534a4a3f2f23130c091120293541474032 +3d3519100f1b282e3232323637363a38383b3f3e37312a3131271c1c2d3d +3a3938393a3a39363330323431497768615f5e5f6166b8f9f1f6edf8f5e6 +ffe9342d2d343f45484b696556a5cbf565424f66798da1996e77b1d6f4f6 +f1f4f3ecf2eeedf2f4f2f0eeefefeff0f0efefeeefefefefefefefefeee8 +ecedeaece7f2f8f5cda3b383155ac3c8c6682571cbe3fff7f1f3f1ebecf5 +eef1f6ecf1f5e8f2f1eee6dac24d3e403f454535262e372e3f3833373b3d +3d3d363736312a252222202528262121252b343535343434322e312f302d +363c413f4538323e28261911192719050d1c21273b434a4f4d464141445c +85acc5d4e0edf1f4f9fefaf7fdfff2d0945534333735292d2c2219161516 +1412100d0a09070600030b131616192032313b42292e3b4755635f2e2071 +a5daf5fffafdfc9b080b090f10100d0c0b0d0e203d342730220f0a0e091a +23222315160724abffe28f969e9e9b9b9b9a989696969595949290909391 +8d8a8b8e8f8f8c9194939495938d898b90928d8481838784817f81828383 +8988868483f66d50ffe05e625762c1fff1694d3c52334c7587bffff25133 +e0c3bfff516cff33454ff665434555bcff7c2447a4aa74444a6a3d434039 +403e3b3a38393a3a3d4c39353e3a2c3442354440796e2a3d93ff4c2f3c34 +323233333434363638383636343336363838372d20150e0b0a0e11191e1c +1a1e2c3942474d4e4c4f5659514e4f555e66707b89746b695a452f190d0a +2333364866819791967f51382b313d414744444849474d4c4c515758534c +454b4c40302e3e4e494848494c4c4c49413b3e434674c9d3dcdfdcd8d2bf +e7fffffff5fdfcfaffff787060554a3d3332545e6bc6e7ff592327374758 +6e6d4c66b3e2fffffdfffdf6fcf8f6fbfdfbf7f7f9fcfcfdfdfcfcfbfcfc +fcfcfcfcfcfcf8f2f6faf9fcf9ffffffdeb4c2922268d3dbd6783580d8f0 +fffffcfefef8f9fff6f9fffcfffff8fffdfdfefef99595a1a4a59c816460 +5c48534742474e5356564d4e5151514f4f514f504e453a34343a474c4e4f +4d4c443c3d3f4a58758fa5a6a089777c666050414652472c292d27253134 +393b332519120e20426276818a9292949fa8afb4c2d1d2c0956755626f6f +5e5e594c3e36312f2a272421201f1d1d1213171e21242a324343556d7093 +c2deedf4e09f7fbad1f0fcfffcffffb530321e1a1b1a19171617192b483e +333c2e1b131614222a272d2328172babfcd88883746664646463615f5f5f +5f5f5e5c5b5a5d5a565354575858555a5d5c5d5e5c5957595f605c525051 +5652504d505052525756565295d13823e99a04142e57a9e66700181f2b1a +2f374855804612175e716e610048e4051a1fc631241d1876b14021080502 +0613191911140a1612110f0e0e0f0e0d0e06120b06052111201515183821 +2d1e6adb301c2f2d2d2d2e2b2b2a2b2d2e2e2d2e2f2e3033383d3c322317 +12121417161d23272a33424d4f51555b64708092a1b4cfe5f4fffffffde6 +d9c08c5a3c3a4d648daebdc7c7a75f1f0400060e0e1d2b31343132343531 +353130323531281f1a21251d14131f2d2c2c2f3031302f2e372c2d281f2a +51210400040700086dd6e1dce9d2d6e2d953040e1a1f1d1d2b3a443a69c1 +e4de4a63718c93a8a58c70badce7ebe0dbe0e2dee1e0dfe0e1dddedcddde +e0e1e1e0dedddfdfdfdfdfdfdfdfe5d7e2d7e2e4dbdadeebebe7f0ba25a3 +e6f4ea82347de2eee8d7d9e4e3dedfdedfdcd9ddeae5d8e1e3dcdbd3c545 +04000000050500081c262b2a2c2d261e20292a2923190f06000000000004 +0405111d2c2e2c2b2b2d2c292c29261a1d0c090402050c3d7092adb5a6b1 +a9876d675c46352a33424b4844433937476a8fafcde3f1f3fafffffbf6f7 +ffffffe9bdabbcd3ceccbfaea0958472746d69676765655f49433e3a2f26 +232731273241100b0b0704161508036697c9e2f2f8fffed3383728211f1d +1916151313131c13070d130e16211d1c1d1b16121a0e004de0e6aec1c5c5 +c4c3c3c3c5c5c2c3c5c6c6c5c5c2c3c2bfbbbcbfbfbcbdc2c5c4c5c5c2bd +babcc0c4c1b9b6b8bab8b4b2b2b3b5b4bab7b6b4bbf75a40ffb11a27416a +bffe8217393e442e414958659057252c758b897e1a67ff253b40e8513e32 +2883be5037242a292c393f3f373b333f3b3a3b3a3a3b3c3d4038443b3331 +4a38433633355339433687f64326312c272a2d2f2e2f2e2d2c2c3031302f +2e2e32343228190d07070b0c090d1212131c2d3a3d3f403f3d42474b413e +3c3d3e4249505546433f2a1a1f20130e18252b353f453f3340381b100d1b +292f3232333738363a3736393c3a3129242c30281e1d2a38353536373837 +3633362c313431539c80625e5e646366aafaf3e9fae6edfaf16b1b26363d +3c3d4b5c6a5d81cee8d93a4c526d7896a19482cfedf9fbf2ebf0f3eff2f1 +f0f1efeeededeeeef0f1f1f0eeedefefefefefefeff0f6e8f3e8f2f4eceb +effcfefaffcd3bb6f5fffa934590f8fffeededf8f3eeedecf0efebeefbf6 +e8eff0ecf0f0ed763c3b4142463c29273234312f3134312e333c3a393630 +26211e1c16151717131019233133323030312e2a2e2e3431413b3f424140 +393f2b1b1d1c17251b0505151c1d2d343f4e595a57544a48527090adc7dc +ebeff6fcfdf9f6f3f9fbe2a45d332e382c2b261c1919120b1413110f0d0b +070600020a121514161b28243550282d3742536a5f3b10639ad3f3fffcfe +fec50f0a0c0f0f0d0b0a0b0b0d101911050d1310191f15121c1c1610160f +136bfdf3999a9b9c99989898989895969697979693939495928e8f92928f +90959897989895908c8e9296938b888a8c8a8684848587898e8d8c8ac6ff +664effbf28365078ccff8b1f40434b374d556774a067363d879c9c902e79 +ff344a4ff45e4d433894cf60442f323035424848404239453f3e3c3b393a +3a3d4139453d36344e3d493d3b3d5c434e408dfd4a2f3d34313132323333 +35353737393835333332343533291a0e0b0b0e1212171c1b1d24323c3d3d +3d3e3e444d534c4e565e646a6f74796a665e432a231f11112a3938486380 +9492968154392d333f444746474849494e4d50555959524c474c50463936 +3e4a464446474a49494644383d42477fedeadcdcd9ddd6c0d9fffffaffef +ffffffb56b6e68573f303644555799f1ffdf2122243e4968746f6ac6f4ff +fffef8fdfdf9fcfbf8f9f8f6f4f5f8fbfdfefefdfbfafcfcfcfcfcfcfcfa +fef0fdf2fffffcfdffffffffffdc48c4ffffffa3559ffffffffaf8fffffb +faf7f8f6f7fefffff7faf9f9ffffffbb919ca7a8a28c6a5d5b5149424447 +4747515c5b5b5e5c5a585758504c4741342c303b4e515250504e433c3d41 +4f5b7f8ba1a79e907a786453504b43524b31262c2a232b2c354248423930 +1e1418304a63798b93949ba5aaacaeb3c3d2cb9d684e54645e5d5549423e +3429302d2a28272522221718171d20222a3139354871688fbedceefee4b1 +76b2cdeefafefbffffde3731221b1a1818161616191b241c12191f1c222a +201b2121201d27211c6df8ea968b71646261616161615e5f606161605e5d +5e5e5b57585b5b58595e616061615e59585c6064615956585a5854525253 +55565d5b5a586f480a0f48231c20183d21390c12261a2116231c51343d20 +2618193214000d4bda071919be29281d2c324a1f211827141e000a1d0d0e +2614121111100f10101119050e0f154f3200121b24273c323f2266d82d1a +2e2d2d2c2e2b2b2a2b2d2e2e2f2d2f2e2e3033372d251a130e101215191c +2028323d484f52555961708394a5b4c7d8e6f1f5f6f2e6d8c7a169442f2d +445f87a9bcc8c9a75d1e0600070e0d1b292f33313133322f312e2c2d302e +271f141b211f19151a2023262b2e2f2e2d2d31242a281c21541c0602060a +00065dd4d7dcd9e1d4e87000030d191e1b1c2d3f48419ed8fab13e6b778e +90a89f7c7cede3e5e2dadde2e4e1dfe2e2dedbdbe0e3dddee0e1e1e0dedd +dfdfdfdfdfdfdfdfdbd9ecd3e5dde4d8dbd6dde3debf3fadf2ecbd94535d +c3e6d9d5dde1e0e1e2d8e3dcd5dfe1d6d8e3dfd4cfd3d76b09090000030b +0000112828282a2a27221e201e1c18171714100d0000000000010c172424 +2424242225272423271825070205060500327589abb5a5aba98b6a65634e +3e2d2b34404546484c382a2c3e5c87afcfe3edeff2fbfdf9fefaffffffd0 +a9a8d2d3c4b0a199918a837d7a767775756d594d463f342a2626352c3c4e +1a0a060002161415015b8ec0ddeff9fefbed4a352d241f1b191818181817 +1d2118151d18091219161a1c141421180118c8ebc7c8c4c4c5c3c2c2c5c6 +c2c3c5c6c6c5c5c2c1c4c4c1c2c5c2bbc0c5c7c4c4c4c1bcbdbdbfc3c1bd +bcbfbdbcbab8b7b7b9b9bcbbb9b8976e2c2f643a32332a5137522731473c +3d2f3a33674a53363d32344f3522306ffb283b3de04942333c3f57313936 +4e3d451c314436374f3d3e3d3d3c3d3e3e3f49353e3c4178571a33393f3f +5248533883f34024302c27292d2f2e2f2e2d2c2c2f30302f2c2b2d2e241c +110a08090d0e0c0d0f131b27323a3a37332f2f333a3a393c424646474849 +424140351f1b27241710182429353f443d33423a1d110d1b293034323236 +3736373535383a37302b20272d2c2420262c2e32343736353432342a3235 +304a9f796360606966699ffceceaeaf4ebff870d1a27383f3b3d4d606e61 +b1e1faa92b51576d77989f8b94fff5f5efeaebf2f5f2f0f3f3f1eceef1f4 +eeeef0f1f1f0eeedefefefefefefeff0e9e8fae1f5edf5e9eee9f0f6f4d5 +55c0fff9cda56470d9fcefebf1f5f0f1f0e6f4efe9f2f4e7e8f4ede6e5f1 +ff9c414b4a4447442a1b27362f2e303435333539393737393a3a3734251c +141111131a24303030302d2a2a2d2b2e38334b3739403e3c333f36181f22 +1c231d0902101b1c29292c3b4d5a62666e5b4a4956709abad3e2ecedf0fa +fffcfef2f3f4c8763b26393126170e0e101214141311100e090800030911 +141314182a283e5c302b2d35506a5d4709538ec9eefffdfeffe421061112 +0d0b090a0a0c0d0f171e16151d180b100f0c192014121817173aecfeb3a0 +9a9b9a98979798999596969797969393929797949598958e93989a979797 +948f8f8f9195938f8e918f8e8c8a89898b8e9192908fa179363a70484041 +385c42592e364c3e4134423b725560444d41455f4632437fff374749ec56 +4f414c50673f454055434c23384b3c3b534141403e3d3d3e3e3f4b37403f +447c5d203a4148495d535e4389fa472d3c34313032323333353537373737 +3533312f2f31271f140d0c1013151514171a212a343938353232353e464a +4b515b6266686b6a6562604d3023251f14152b393948637d908e9883563c +2f354145494646494a494f4f52585d5e5953484f534f443c3e4240424548 +48474645453a3f454876f0e3dcdedbe1dac4d1fffdf5f2ffffffd56a7772 +6652382c384b595ccfffffa70a2026404e747b6e86fffffffff9f8fffffc +f8fbfbf8f3f4f8fcf8fbfdfefefdfbfafcfcfcfcfcfcfcfaf2efffecfffc +fff9fffaffffffe362ceffffddb5747fe6fffcf8fcfffdfefdf1fbf5f4ff +fff7f5fef6f2faffffdf94abb5aea89b735656594c46484d50515761686c +70767e8384817063554a423b3d4656585a5a544e47433e42565e8a899da8 +9f8f74766d4e504f48514e39272d2f272e28273443494c4a4d3119131c31 +5a7586909a9a9da7acabb4b3c1d1b775463e656357463b3837363533312f +2e2c29281e1c191c21232a2f3b364b776a8ab6d3eeffe7c276a9c4e6f6fc +fcfffff94b30271e1916161717181b1c232923212924171b1a151e231c1f +2b29223ce8f8b49472636361606061625e5f606161605e5d5c60605d5e61 +5e575c61636060605d585b5b5d615f5b5a5d5b5a5856555557595e5e5c5b +0a140f203924202033935523131c091c1a121f2e72462f2c2b2e12072516 +144bcc060f1cbc22202538363423321a122e7a9379121d15000c13121111 +10101112070f0a0231ad483c1321362a4165333867d72c192e2d2d2d2d2a +2a292a2c2d2d2b292c2d2f2e2f2f1d19130f101012151d1f222a3641484d +575a616d8297abbacad7e0e6edefebe1d6bda28064574434455a80a4baca +cba85b1e0800090e0c19272d302e2e2e2e2b312e2a26221d17130d111413 +110d0c0d1c21292c2e2d2c2b292026241a0a3f0304040709000550d0dcde +e0e8eb9c0c00151213171d232f395155c2ddfc854b6e7e888894926e6ddc +dcdfe0e1e4e5e2dcdde0e1dedde1e4e5dedfdfe0e0dfdfdedfdfdfdfdfdf +dfdfdce6e8dde1cee2d7d9d8dbe2d1cb647f9c9b7884787bcee5d6dfe1d9 +dbe0e2dbdbdcdbe2d8d5e8e3e6e7d1cdce890e17060002070000071b2626 +222023241d100e0a0c0e11120f0c060000000000080c1814171d1b141c2c +261f21112e060001090a0241938ea5aca6a5a8916c636758483428293039 +4247504f493c2a283e5b90bee0e9ebf5fdfcf6faffffffffdaaeb8c8ccc6 +b4a39d9e928c87858684827b6a5a4c443b312a27292a3d49210b0400000c +0f20074e85b6d5ebfafbf8fd683630251f1c1b1c1d1b181715211a141e12 +1c15201d191b111227220a0090e4dbc6c4c6c8c7c5c3c6c7c2c3c4c4c4c3 +c5c2bfc5c6c3c5c9c5bcc2c6c6c3c1c2c0bcc1bebec1c1bebec2bfc0c0bf +bdbdbebebfbebebd323c3440553c363445a7693c2f3b2b3f392f3a498d61 +4a48474b332b4a403e72f02a3340de423a3b484341354a3b395aa3bba03a +463e23353f3e3d3d3e3e3f3f343c362e5ad26b5d313c4e405377434c82f2 +3f23302c272a2c2e2d2e2d2c2b2b2b2c2d2e2d2c2b2917130d0a0b0d0f10 +12101117222b333338322a26262b3030343a43474a4c4642413b3632323e +402a1d111520293741443a33453e1f110c19272e31303133353338373533 +2e28221e181c1f1f1b181719272c323535343332302832353033875e6160 +6169656e97fef3edf1faffb120102d2d323b4146505a7474d2e5f87a3854 +5d676e8797818cfbeeecedeef2f3f0edeef3f4f1f0f4f7f8efefeff0f0ef +efeeefefefefefefeff0eaf5f6ebf1def3e8ecebeef5e7e17a92aba88895 +898ee4fbecf5f5edebf0f0eceef1f1f8ebe8faf4f5f9e8ecf6ba47595247 +474228171e2a2e2d292b3238342c303134393f41403d352a1c1313171d1e +2a26272d29212635312d36305539363c3a3a375558221f1e23231f11030c +1b1f27211e283b4f627180827d6d5854667a9fc1e0e7e8f3fdfffbfcf9f8 +f3d28b4428262a25180d101a1616151614120e0d09070710151614151c24 +4055382a2a314a605b500a3f81bce8fbfefcfff53f0714130d0a090c0d0d +0c0c0d1b16121c121e1316131a20120f1a1d201cbafdc8a09a9d9d9c9a98 +999a959695959594939390989996989c988f959999969495938f93909093 +93909094919292918f8f9093949595943c443d4b6148433f51b07241333e +2d413c334150966a5553555942395a4e4e81fe383f4cea4f474958545143 +5644405da7bda53c4a42273942413e3e3e3e3f42373f39315ed871643945 +584b5f83505789f9462c3c343131313132323434363633333232322f2c2b +19171110111418171a15171b242d323236322d2c333b45494f555e636769 +66625f554d423d423f281d182937384a637a8b8c9887583e30353f434645 +44474848525455565655504c464a4c473f3833313b3e434647464544433b +4247475fd9c7dadddce1d8cacbfffff4f9fffff47f7a917c5e4737303b45 +606ff3ffff740e1b2a3c4b67796d86fffcfcfdfefffffbf7f6fafbf8f6fa +fdfff9fcfcfdfdfcfcfbfcfcfcfcfcfcfcfaf3fcfff4feebfff8fdfcffff +f5ef87a0bebb98a5999df1fff9fffff8f8fdfdf6f4f6fcfffaf7fffcfcff +fafffffc98b9c0b9af9e76575253524a4649535d5e5c6d767c8794999d9a +91816b5a4f4d4c4c5a565a5e584b49524747555c968a9aa4a08f798a9056 +514c4d4f53422c2e35302e231d243543535d666156402921313f5e7a969a +979ca3a4a1a9b0bec9b57c484b585c57483b3b423b393737363431302a23 +191c22272b2d2d30476b6e87b3cfe8f7e5d07d9abcdceff8fdfeffff6931 +2a1f191617191a1a1a1a1a27241f291e2a1e211b1e23171a2e312b1fb6f9 +ca9772656665636162635e5f5f5f5f5e5e5d5a61625f616561585e62625f +5d5e5c585f5c5c5f5f5c5c605d5e5e5d5b5b5c5e61616160171a19110013 +3220135544172c2710151b1f1c2d4b481a07112a1e338a2f0050c80b0a31 +ca2117393b49411415150c8c9d4bbb67071a250f1211100f0f1010111416 +0b17749516101c232b3940a96c3f69d92e1a2e2e2f302f2c2c2b2c2e2f2f +2c282a2c2f2d292415120f0d1012131520262a30373d434a565b677b98b3 +c8d4e2e8e7e5e7e8ddcdb98f6d636b78705a586282a3bccdcda9591e0a03 +0a0e0b1723282c2a28292a272928271f18110f0e0e0a0501020102011319 +23282a292828201b1e201c003b0c00030401000244cae5def1deb92e0013 +1a1514181f27333e4f75dce3e2595c7282807d7ea1948bc2e1e4e5e8e8e2 +dedadfdfdddbe0e3ded5dfdfdfdededfdfe0dfdfdfdfdfdfdfdfededbcea +e7dce7dcdce5d8e5dfedc5c2c4e6e3e4e3dbdeccd8e5dfd4dededbe2d7dc +dee1d5e3e6a1c3efdbd0c5a911140a030807030c15111c2a2a1a1114160a +08040706040203050909030000080e0b150c13211d11213e33211809360b +00000f243179c194a2aba99fa9996e60655d503f322e2c2e353a3e4d5d58 +47342a2e5a84b2d0e0e7eff3f1fffff1fffffff3c3cbccd2cbb5a8a69e99 +93929292918a7b64524943392e281d283f3a2709050100010d2812457fac +cee5fbfaf6ff883b3027221f201f1e1b1e1e17292e31443534111d1d182b +35404c441b0044d6e5c5c4c7cac9c6c3c5c6c5c4c4c3c2c2c4c3c0c5c6c2 +c4cbc9c0c4c6c5c2c1c4c4c1c4c0c0c2c2bebdbfbdc0c3c3c1c0c0c0bfbf +c0c042423e33112b4834256958304949343c3e423e4f6c693b28334e445d +b65d2f7eee2f2e57ee4333504c595127303835b8c673e38f3043513b3e3d +3d3c3c3d3d3e4042343e99b6342d37393f4b4eb7784f84f44124302d292d +2e302f302f2e2d2d2c2b2b2d2d2b241f100d0a0a0d10131217171a1d2327 +2b2c30292221252b2f2f343a42464a4b433a3b2c293a526860412e1f1b23 +2b3a42423632474223120b16252a2e2c2d30302f3333312b231d1b1a1a16 +110e0e0e0d0d1e242b3131302f302c2a2f32342b86675b6160655f6f91fc +fdebfff0cd410f283132363d444b545f7292ebe8dd4c4a58615f6472a9ac +aee4f2eff1f4f4f0ecebf0f2f0f0f5f8f3eaf1efefeeeeefeff0efefefef +efefeff0fcfacaf8f7ecf8edeff8edfaf5ffddd8d3f3f3f5f4eef4e2eefb +f3e8eeeee9f3eaf1f5f9ebf6f8b2d4fff2efefda4a5657524e42312e2b1f +2430302420292e29303336393a3b3b3d3e3a30221f2526212b2227363123 +304d4132302b62423a393a4d638e87291e222c24241d090a1b20221f1c24 +32455b6d7c92a4a08b77695f738eb4cdd9dfeaf3f6ffffeaebfadca03d29 +282e2917111717181a1a1a191514150e090f191a16140f2040453c262933 +45545857113179b2e1f5fffcfffb620c13130e0d0e0f0e0d12130f232a2f +4235360f11131930363a3a3c311673f3d49e9a9e9f9e9b98979897969594 +9393929491979894969d9b92969897949396969397939395959190929093 +96969493939594969797494a473c1c37553f317261354d4a343b40444051 +717044313f5a5169c36a3d8bfb3b3a62fa4f3f5e5c696035393e39bbc873 +e58f3245523c3f3e403f3f404041434538439fbd3c3540444a575bc4865c +8bfb482d3c353334333334343636383834323031322e282314111011161b +1d1b1c1a1d1f2529292a2f2a272b36434d4f555b606265665f56513e343e +556963453228303a3a4c6377868998895c3f31353c3f4341414346464e51 +5451504d4d4e4e48413a36312b2734383e4241403f43424143464c58d7d0 +d4dddbddd3ccc7fffff1ffffff907a9d9b825c4333313f4c5c8efffff343 +1a1b2c344558919cb0eefffffffffffdf7f5f8f9f6f5fafdf6effbfcfcfb +fbfcfcfdfcfcfcfcfcfcfcfaffffd3fffff9fffdfffffeffffffe9e5e6ff +fffffffdffeffbfffef3fbfbf6fdf0f6fdfff9ffffbadbffffffffff9bb7 +cbc9bda68675654e4b54544849545e6278858e959ea2a8aaa8a08d746767 +625a645b626f6653576e5c4e5259a3949fa4a3a7a8c5c15f50505650594f +332d36322c221e232e3d4e5c6776847b644e3e303c5173868b8a8e9192a7 +a79aabc5b490585a5a605a473e423f3e3d3d3d3c39373a2b1c1d272c2e2d +202b45577182b3d4e6eee5d98892b7d2e8f2fcfbffff8b36291f1a191c1c +1b1a20211c2f383c4f41421a1d1b1d333b4650513c186deeda9774686a69 +66636364636261605f5f5f605d6364606269675e626463605f62625f605c +5c5e5e5a595b595c5f5f5d5c5c5e5f6061614da3a87c391d0b1f2a234e27 +1b07241b0f26151e2173542b0c021c8cc30a045dcd100949e029154f5b5a +8f5a0a160686b960ca3f03260019110f0f0e0e0f0f110c08153da333161b +151b125843e2c8286fdf301b2e2e2f31302f2d2c2d2d2f30312e2b2c2d29 +1f18110e0e0d10121416242e323334363e4a555e6f89aac8dde8f3f3ece4 +e0dacab28e6046546f858878666882a2bac9c59e521a0b02040807151d23 +2927242727241b1d1d1b1512151a130800000000000008121b2122212122 +201a18192105513200010100000740c7e1e1e6dc4000080c0e161f211f23 +374b478eefebc534637882787678cae3dae4e3e2e0e1e0dedfe4e1ded8d9 +e1e4d5c1e1e0dddbdbdadee0dfe1e2e2e2e1dfded9c368d2dce7dfd2d3e3 +cde1dbd6dce6e6eae4d9e2e4d8ecd7e5dad6e7ded4e5dfe0dcdcd6ebca3e +81d9d8d3c5c5180d131315090d25250a1e414c2e10142527030308050100 +070e091313070913150f150911252011254c361a0b003b15040414446fb9 +df8b99b0ada1ada3745e645e55473c322822262939424c52565340343342 +6192bad1e6f8fff1f1fffffffffff9dcbec1c8bcada6a39e9d9e9f9e9b92 +8a715a514c43352b28364a362e09070300000e2c173b80adccdff9f7f7ff +9f3f2e2725252626221d141e24455b667b67561d1c1a173b596f7b703500 +16d2e7c4bdc5cac9c7c4c4c4c7c5c3c2c1c2c3c3c0c6c6bfc2ccccc4c4c6 +c5c2c2c6c8c6c6c3c2c5c4bebabababec3c4c1c0c0c1bebebfc071c7ca9c +573821333c35623e372647413248343d4092724c312844b6ef383289f536 +2f6dff462f656c6aa17026392fb2e088f2672c522b473d3c3c3b3b3c3c3c +38313e64c65434383031266a53f0d43985f64125322e2c302f3030313030 +2f2e2f2d2c2d2e291f160f0c090a0d111413181b222322222527231c181b +253036363a3e43454a4c42392c191e3f647b735d46332a2d313e44433633 +484526150a1621282b2a292c2c2a25282b2926272a2f271d0f09090e0f0e +151d272b2d2c2c2d2b28282d3b31988957615f60586d8cfaf8eef8f15809 +222529313d4342475a6e69abfdeebf264e5e645d6372d3fbfbfff4eeecef +eeeceff5f3f1ecedf4f7e8d4f1f0efefeff1f2f2efefeeeeeeeff0f1ecd6 +79e3eaf5efe2e4f6e0f6eee9f0f8f6f7f4e9f3f6ebffeaf8ece8f7eee1f5 +f2f4f0efe7fbd84d90ecf2f2eef5504e60635e4c46544a28375863482d34 +4751373d434441434a514b514c3d38403e353a2e364a4534456b543a2f29 +6b4c403c3d6a99c7ad2d1f2c302327240d08181f232321262c3746576f81 +919ea7a99b826b687ca2c0d0e3f4fff2f1fffff5f2f290562d292c1f1617 +1b1c1b1c1d1c19191c10090f1a1c1713152c493e40232530424c585e1c2e +77aedbf2fffcfefb791210100e0f10100e0b0410183d55627967581b1413 +163f58696c69451b3eeee0a8999d9e9e999795959a979594939394949298 +9891949e9e969698979494989a989895949896918d8d8d91969794939394 +939596977dd3d4a762432e3e483f6b463b294942344a374045977c553a33 +50c2fc453f96ff413a79ff543c737c7aaf7d313f35b5e58af4692e532c47 +403f3f3e3e3f41423b354269cc5b3c40393c317660fbe24390fe4b2f3d36 +353634343535373737393a35313130291f171211101316191e1a1c1d2323 +2221212524202128384952565c5f60616362584c3b211f3e627a7a644939 +3a4041536a7e8a8fa194664933353a3c403d3c3f4042404852565a60696e +6456473c3a3a3831373b41444340404347434145565ee6f0cbdcd9d4c4c1 +bdfffef4ffffa26d9da3947e5f442e2b425a58a9ffffcb19212530324358 +beeefffffffefcfcfbf9fcfffdf8f3f4fbfdeedbfefffdfafaf9fbfcfcfc +fcfcfcfafaf8f3dd81edf5fffef2f6fff1fffdf7fbfffffffff8fffff9ff +f8fffaf4fffbf1fff9fbfbfef7ffe35495f3ffffffff9dacd4ded1b4a0a4 +90646d8a957b656f86998d9ea7adadb2bdc4bcbeb39d92938d7e80727c90 +897480a186696363b39fa09d95b5d3f8e05f505b5c525a57382b36342e27 +26282b32414d62707c82878472583e374563787d8490958a8da4b2b1b9d0 +95714e4f544a41424342414243403d3c412f1c1b262e2f2b28374f517278 +a7c9e1eaebe59288aecae2f0ffffffffa0392a221e1c1d1d1a17111f264c +6370867164261f1b1b425e757f7b52203defe8a5776a6d6b65605f5f6363 +61605f5f60605e64645d606a6a62626463606064666464616061625a5656 +565a5f605d5a5a5d5c5d605fa1aa4ed0660922162b31666c491422242921 +2c5e4fbcd274180039d348000372bd08144ddc2a235d778cf0a00d121371 +b16bc32e131a1010100e0f1011100f0e12110b63c47a70340f141f493ac5 +730e68e1252329282b322b2e2f2e2b292a2f3233322f261c110a120a1012 +15151120303b3c352d2e39475b7491a7bed0dce3eff4eddecebda285614c +455766665f5c5569889fb6c0b3934c1e0000000000120e16281c27212f28 +201e1509050a121719140c03000000000c100f1c18141f13161a261c1e00 +633f001400000b0955bddfd8eb640000000e0b1a15282b2a454b3ebeece8 +96416b6f8169737ef8e3e5e2dce2dfdfe3ded6dadedcdcdce2ef7f29aaf4 +dad2d6d8d4dae1e4e7e7e4e0dcd8e69e04b0f4e9f0eae9e0f0ede4ebe6ec +edeaeef4f2ece9ebf1f2eee9eeece9f1f0eadef3f5f6bc3929aae2d2cfc7 +460f13010b180d263000000f413900002b2a000000000000080f0c100f0a +010000030c0e10120b000006140d00000f0e0718568ea1b7d5958fa4a8a9 +a59c866f6661585038394d3b232f393b4053535e3d4d392e2b4678a5cae0 +f8f9fbfffffcffffffffcdb1bfb8a0a6a29aa6afa8a19f9a9f80655f584a +3a32282e4638270d180b07050d2d35207caac5e4eaf4fcffce38342a2828 +2927262721221c2a45453e4a24140f161c2f434646421c0b009eefb8b5be +c9d0cbcacfcccbc6c3c5c3bfc1c3c1c4c7c7c4c2c2c4c1bfbebec0c1c1c0 +c5c4c2c1c0bfbfbfc1c1c1c3c4c3bfbcbfc1c4c4bac56bed83273d2c3d41 +788061304446483d457563d0e88f382561fb70262796e530396ff8443970 +889dffb72b373b9cd790ea553c453d403d3e3f403e3d3b3a3d3c368ceb9f +93552e2f38604ed985207af1312d302d2b332c2f3332302e2f2f2c2d2f30 +2c23180f12080a0c0f12121a1b2128251f1c1d1b191d23272c343937363b +40424342392f1e1b27455b5c53504b4d463e3d44494d3f3f403a26120c15 +131c2d1f29202e2b2628261f222e3b403f392f22160f0e0f1c1e1e2a2623 +2e201b202f2d3b22a3905677595c6a5e9ceff4e4ff820a2726342b362f42 +4b4d6e7261dafaeb8c2e53576b586a7ffff4f9f8edf3f0eff5f0eaeef2f0 +eeeef3fd8e35b5ffededf5faf1f1efebeaeaeaedeef0ffb91ac2fff5f9f6 +f8f1fffff5f9f3f9fbf8fcfffffcf9fbfffffef9fbf9f6fefffaedfffffe +c44337bdfdf2f6f4764a61565c66586d72283849796e2b3061653d424547 +474e58605c5d5b54484140434d4d51544d4140465247303146423b4a84b3 +bdbaaf4a2829221c191a18141722282d212e51493647535e6e92a6c4b5c5 +9e84727d98b6cedbf0eef2f7f7f4f7fbe7b763333327161f21171b201714 +1a1b2713060f191813151322443e35232f31424d56664c2271a2cef6fdff +fcf2ab1015100c0d0d0c0b0d090d0b1d3e433e4d27140c11192c3e403e40 +241c10b4fbb49b979ea299979c9b9e9b9a9c9a94929494979a9a97959597 +94929191939494929796949392919191949494969796928f9597999aced8 +7bfd91324837494e848b6d3b4d4f4d414a7b6cd9f59a432e6bff7c3335a4 +ef384279ff51477f98adffc5363f43a3e099f15c424b4242424041424140 +3e3d43423c92f0a5995c33363f6857e08f2a86fe3d373a33333830333635 +343233373a393632281c110b140d14161919161c202429251c181a1c1d26 +30363f494e4f555b5c5a58544738251e2743595b57524a4c4a474c607993 +9ba6a89976513c383032413038303e3e404b5258647a8d92887d7163554b +47424f4d495149444f4241444c495b4feaecc7efd1c9c49ebcfaf7f0ffcb +78aab1b38e77483f362f505d5adbfff28a1d31293c2a4360eeecfffff7fd +fafcfffcf5f9fdfbfaf8fdff9541c9fffcf8fafcf5f7fafbfdfbf8f6f2f4 +ffc425ccfffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffd14c3ac1ffffffffbea4d0cdcfd2bdc9c8788493c6bc +7e84b7c1a5b0b4b7b9bfcbd3cfcfc9c1b4a9a8a4a19da3aaa49b9a9ea99b +838398958f93b8dde2ddd675575854504a483f35343736342934544a3a49 +545a647f889d87977c6146465566707585848b98a4abb9c9c8aa633f4d48 +3a47483f454b403739394a321a1c2424282b24304f54626e9fbadcedf3f3 +bc6f99b1d3f8ffffffffc932342b221e1b151416171c1d2f4e504854301c +13182033454a4b4e312618bfffb5826e7371645e636165646468645f5c5e +5d606363605e5e605d5b5a5a5c5d5d5e6564625f605d5d5d5d5d5b5d5e5b +57545b5d626094c887e8431f392e283ee8f16e1422221914306464c5f1b8 +0626aab45a2d0879b705114fdd260e2f5bb0dc731c150d56b0a49618101c +08150c0d0e0f11100f0f0a21181a3020230e2212022f5d79150f69e42824 +2a26292e2b2d2d2c2a292a2d3134312a1d110d0c0d141b1317211b192e3c +423c32303d506885a4bbccdbe3e7e8ebe5d8c6ae8a6951434351564d423e +485e84a3bec3ad8849270e03000000051b14191b2318140e100c0b0b0a06 +02000a0a08010000000000070104060f1b07173a5b4921004a5813000712 +044fb5ced8f2890900000400131c1b292a2c454257e0e1f1694f75777979 +83adfbede9deeef2ebe7f1f0eef0e9ede6eff4ec79157bead9dbd7d9d4d9 +e1e5e8e8e5e2ded9e4ab057db6afbec2c4c1c0bbc8d8d2c4cac5c4c6c4bf +bdbfa4aea79ea9b5b2af978484735c6257311e88d8d0cfc95e130d000910 +00000d000000070900051600040405020103080e0b0a0a06060304050a0b +0f100a03040b040d0f100b0029758baaa8b7d5a2839aa4b5beb18c675d5f +55513e3c4e3f2f41262d464042494244473f35323e5c8fbbd7ecfcffffff +fbf7ffffffd39ea1ad97a19ba2aaa7a4a1999c846a5d574b3c3028263329 +2b1111080601031d25126e9ec3dfe4f0feffd848382f2a2c2d2b2b2c2727 +212532230c0d1210171a171c24251b130f100662d2ccb7bdc8d0cbccd0cc +cbc5c3c4c3c0c0c4c2c5c8c8c6c4c4c5c4c2c0c0c1c2c2c1c4c4c2c1c0c0 +c0c0c2c1c2c4c6c5c2c0c2c4c5c5a8dea0ff603d55463a4ef8ff84304244 +342b447772d6ffd0244bd0dc7e4e289bdd2d366ff73c21406cc3f28d3c3a +357ed6c8bc40384935453c3d3e3f3e3d3b3b374e434557474631412f1d48 +7490292179f2312e312d2c312c2e31302d2e2f302b2c2e2b241b14110d0f +10080d1a191018222e2d231b1a18151b232930383d3b31373d4043403327 +1f1f293f48413835464e52575a5d5a5745494d4b381e10112a2428292d1f +1b191e21252d34393939423e383025201e1d1a201b1e1f2b371e27486e62 +46188ba66f4c676f5495eff9ecffa12a14263123353631424751706d7af9 +eff25d3a5a5e646d80b1fff9f8eefffffcf9fffffffffcfff8fffff6831f +86f9eef7f9fdf3f2efecebebedeff1f2ffc81d8fc2b9c6cbd1d0d0ccd5e4 +dbcdd7d3d2d4d2cdcaccb1bbb4abb6c2bfbca4918f7b60675d3a2c9cf3f1 +f5f48b4c5d5b636b5458653d514553533e4c5b4255595b5b5a5e666c6968 +65615c5959595d5d626560595a5f5557555145385da6b9cebcb4b6642622 +1a222e2c19080d20222b24314f46394b303f64728eafc0c9c2b09a867c88 +a7c5d3e0eef4f8fcf9effce3bb7126202a131d14131712141a181f0e0305 +0f130f0f0f182f2f3824272a3e454d5b471c6392cbf2fdfffbf6b8251912 +0c0d0d0c0a0d0b0f0c1629210f121513161712151d20151113181475e7d5 +a2999ea199989c9a9e9c9c9c9a95939595989b9b99979798979593939495 +959396969493929292929594959799989693989a9b9bc0f5b4ff70486152 +465bffff923c4f4e3b314b7e7de0ffdc2f54dbe68c5d37a7e8353f7aff4a +30507cd2ff9a47433d86e1d4c548404f3a494041404141403e3e3c53494b +5c4c4c374635244f7a96302b86ff40383b33333630323433323233373939 +352d1d120c0b0f161e1618211c111b252f2a1e16181b1f29353c454d5151 +4f545757554d3b2b201f283d47413938474e5159647586989cadb6b19169 +4a4151454744463935374350607486949d9a99918a80746b68655f625857 +555d69505a77988a704bcffbd6bbd7cf9dc6fffff3ffdd8996b7c0a18f6f +463c3132525976fdf0ed51253c36373d5590f1f5fffbffffffffffffffff +ffffffffffff8c2b9afffffffbfdf5f7fcfcfefefaf8f5f6ffd6299bcec3 +d3dce4e5e7e0e6f2e4d6e0dedfe1dfdadadcc1cbc5bcc7d3d0cdb4a2a592 +797b6b432f9dfaffffffcea3ced6dbdec2c0c79cafa1b3b6a4b4c3b0cad0 +d2d1d0d3dae0dddcdad6d3d0d0cdc7c3cad0cfcacbcfc1c0b7ad9985a6e1 +dbe6d5d1d88b53524e5661594028283531362f39544c425439436266748a +919ca39272543d3d5165707c8d96a1acafaec6b9a2682f344938453d3f43 +3a373836412e18131a20232422273d4564698ca8d3e6eeecb363839ccef6 +ffffffffd0433931261f1a141115191f1f293a2e18181c1a1c1e191d2527 +211e1f252183f8da8f777673645f625f63646568645e5c5d5e6164646260 +6061605e5c5c5d5e5e5f6465626160605e5e5e5d5c5e5e5d59585e606161 +91ae7bcb1a1213124957eedd470912152d233c626f8dd1870f2ea2a4905a +0889ae000b4ee230172518614a010d1f0e0c0b0a011a1116130e0d0d0f10 +12121211200807000c050a180e242c254832002869e62b252a27292c2b2c +2d2b2a292b2e2f302c2111090b11181d1a14192327232b3943463e3d4c61 +7c9bbbcedae3e9eae5e5ded0baa07c5f4d45454b483a2f2b374d769cbac3 +b39754361f110700040f360c0015343c2210271506030200000204050604 +01000001081106030a1b280d0a335035110035570700122c7cc7c9d9ecc3 +1a00090000091b1a1d2b29354d4280eceed34266747e829092b5dbd5dfdd +ccccbcaaa9a39289869d90856c63431947e4d8e0d4d8d7dadddfe0e0dedd +dad7e4b8002840292b2f252224393209000e120c09080704050906140c00 +1126251a1d123b2d0e1820371f68dad7d3cf811002000008000009000d09 +0e0e0b15190703040301000000010200000003040402010103050200020a +0719140412396d9d9eaca2b2d6ba7e999fa4a8a48f736866575642384138 +364c6047522b303f503d4e51534937385171a2ccebf2f4fffffcfffffffe +b397a6a6aca6a6a49ea2a3969c8b735e555144342d2525233a1d0e080500 +01182513679abfdbe1effdffe86640363030312e2f2e2f2c211f28201212 +0c0e15181b202a2d1a0f18151026b7dbbdbfc4cccbcbcecacbc4c2c4c3c0 +c0c4c3c6c8c9c8c6c6c7c7c5c2c2c3c3c2c1c4c4c2c1c1c1c1c1c0bfc0c3 +c5c5c3c1c5c6c7c5a5c494e837302f2a5b67feef5d253237483a50757d9e +e39f2d53c8ccb47b28abd427306efc462a362974601b2d443634312e2742 +3943403e3e3e3f403f3f3e3d4d35322b332c2d3b2c41473e5f49123a79f4 +342f312e2c2f2c2d2e2f2d2e30312c2d2b23160e0d101111090309161c17 +19253434291e1a1a1a222b30343a3d3e373b404140382a1e1b1e2936362a +211f2d3c4f62727b7b78555554504230282c56301635535b40314b3d3639 +3e3f434a4b4a47423b353332363e3331354a5739325c796245317ba55e56 +697abefcf4f9ffd4340731242a303b363746495c796da2fffad235505a66 +6e848fb8e2dfebeadadbcabbbbb5a49b98afa093786d4c2356f6effbf1f5 +f3f1edecebeceeeff2f3ffd316384c313136303133483f1206151c181514 +131011151220180c1c3130272a1f4333121a233e2a7af3f6f7f9ad4d5b61 +646e615b6b616c666866616a6c5d5f636565626266696a67646465666361 +5e5d6163605d5f635e6a604a5174a4d0cbd0b6b2b88025251614181f1b12 +15221e2822273c3b3d55675467536f96bab4c6c7c4b195858996b1cbe1e2 +e6f5fbf4f6f8f5bb5628261a1b13131310181c131c1409030c1415111417 +22284730262c3b424b56471d5c8ec7eefafffbf8ca4321170f0f0f0d0c0d +10110c10201e15170f111415161b2328140d1c1d1e38cae4ac9c9da09998 +9c999e9b9b9c9a95939596999b9c9b99999a9a9895959696959396969493 +9393939393929396989896949b9c9d9bbddba8f8473b3b366774fffd6b31 +3f414f40577c88a8f1ab385cd3d6c28a37b7df2f3979ff54394639836e28 +384d3e3c3c3a304a414945424242414242424140523a38313a3333413449 +4e45654f194486ff43393b3433343031323232323438373630221007080e +181b19131620221919243132261c1d20273342474c515556525659554f43 +30221c1f2835362b212335425061738696a498a8b2b1a085747091644966 +828a72668782828f9ea7b1b8b3afaba59e95918e8e93867f83929f80789e +b79d7e6fc1f7bbb7c6ccfaffffffffff7e6eb5b4b4a78e66463d323f5e5a +a1fffacd2538373a3c546499d2def7fae3e2d3c5c7c1b2a9a6bdada08477 +552f69fffdfff7f9f7f9fafcfdfcfbf9f6f7ffe42445583c3f4644464a5d +5021101f26242120211e1f232230281c2e4342383b305a4b2b2f32462c7c +faffffffeaa0d1e7e6ecd9cddaccd6d0d6d4d2dee2d6dae1e2e1dedee1e4 +e5e2e0e0e2e3e1e1e1e2e7e9e6e3e2e1d2d6c2a2a0bae5ffece8cfcedaa6 +51564a474b4c423331392f352f314342475e715a684a5c76928aa2a4987e +5941404860788c8b8e9ca3a1b1bfcba04e2f3d3d4440403e383a3c323f34 +1f121723292727262d3c717488a7cfe1eae5b3647c98caf2ffffffffe261 +43372a221d1613161f221f232f2b1e1d16181a1c1d222b2f201a282a2b46 +dbe99a7c7673665f615e63636468645e5c5d5f6264656462626363615e5e +5f5f5e5f646462615f5f5f5f5c5b5a5d5d5d5b59616263615d8b7d7f061d +20192345602c090f12201e17213e6431490e052a0b15142a0a7ca8000043 +d52e28332b49411a1e251e11210d022c100f120b0f101112141415150d09 +1b144146470a221c33232d3c331d6ae92b262a28292a2d2d2d2c2a2b2d2e +302c23160c080e12201d18242a252e2f2a323e494e55677c9ab7d1dce1e7 +e8e6e1ddd3c0a98f776552494545413832312e426585a0adafa57758381e +0d08111c7443101e272c030029120000000000010707080402010105060b +020305101f0a000709000011141a0a1f5891cce2d7dcd74200000d0b001d +1c14202e2c3f5248afe7f98f44756e82787d784b30282826202825222b2c +1d132e310c09101e331f34e4dae1d0d9dfdfdcdddcdadadad8d7dbbb1b2c +533c37404331203c411a1e382a27262626272a2c263029212f3e403c3e28 +3328182332442555e1ded0d39e0b0000000006020b0600080e050201070d +02020301000000000000000000010202020202010000040b000c1225598e +9e9693a3a3b6d3cc8199aeababac9d806961625e4834302f3b545f414928 +1627443e4549545a52453b3d6596c6dde9f9fffff7fffffffcae8cb0b3b2 +b0a79b9fa3999d957d6256554d393128222448270e0c00000719261563a0 +bbd8e0effbfff7844f4339363633312f322d24222627211d1e201a172126 +2423231f1b15100996d4c6bebec7c9cacdc7c9c3c1c2c2bebfc3c3c5c7c8 +c8c8c7c7c8c6c3c2c3c3c2c0c4c3c3c2c2c2c2c3bcbcbdbfc2c3c2c1c4c6 +c6c571a1969c233b3c313555703e1f2b3242392e355172425b26234f313d +384b2a9ece212563ef443b443c5c57343e4a4639473128543b3c423b4041 +4142414141413a36463f686d6a2d40394e3c4453472f7af73730332f2c2d +2e2e2e2d2d2e30312f2b22180e090a0c130d030f15131d201c252f342f27 +2120252c323332363a3c3d41413d36302b292223272d2c241e1e1e2e475f +73848e957b6f5e4f423b404aa57744535961392366524544433f48575c5a +59544d484747464a41434551604b3248483540555c66596ea2d1fffff0f1 +ea57151f333225423c343e4e526a8274cffaff8c355d5267646f734b3630 +31312c3532303c3c2d233e411a151a263a2947fef4f9e7f0f3f3eeeeeff0 +f0f2f3f4f6d52e3a5d423d464b3d2c484c23223c323130302f3033352f39 +322a374648474933392c1a26344b2f65f8fbf3fac94657665f666d6a716a +5a686d635d5c606762656868676567696968656565666564656464636160 +6266575c5c6996c7d2c6bfc6b7b7ba952b2b2a1c1b24261b14192129221c +262e3d5863485845466b99a2b3c0cfd6cbb296838fabc6d2dbeaf7fbeff8 +f6eebc5413241b171a1813191c12191910040817191316171c29563b2730 +36414f574b215994c3eaf7fffaf9db632d211713120d0b0b10100d111e25 +2422212019161c211d1e1d1d1f1d1c19a9ddb6a09a9d99999a969c98989a +9993929496989a9b9b9b9a9a9b9996959696959396959594949494958f8f +9092959695949a9c9c9b89b8aaac3146473d41627f4c2d373f4c40343c58 +7d4c69322e583c47465a39aad9292e6efc524a544c6b654149534e41523d +315c4242463f44454344444444443f3b4c456f747033484155434a594e39 +87ff453a3c3533323232323132333536373127170903070e1c1a1622261f +25231b1f2c312d29292d37434e504f5255565657564d43382f2b2222252b +2b251f222837495c6d8097afabb2afaba0979a9ff2c08d99a0a7816eb6a9 +a2aaafb2bfd0d3d0cec7c0bab6b5b0b3a8a5a6afbea7899c977f889ca6b2 +a8bbe9ffffffffffff986e90babea8ad855a463f394e6a65ceffff832241 +2b38313e4b2f2a324043383d3b3946493c324d5027212431443556ffffff +eff8fefefcfefefefdfcfafcffe63d47694e4b566053445e5e322d473d3d +3c3c3e3f4244404a433b4a595b595b475145313941533165fefffffffe94 +cbe9e0e3e4dde0d9c7d6dbd4d0d1d8e1dadcdededcdadbdddddcdadadbdc +dcdfe7ebebeae6e2ded9c1bdb1b2d5feffeedadcd2d5dabc585a5c514e52 +4e3d3131353931292f3649636e505b403854787c8c96a1a2957859444f66 +7e83838d93999cb0b7bfa14c224144434743393a3c33403b271415262f2a +2927263c7d7a84a8c6ddefe6b6697b9ec6ecfdfffffff180504232272018 +1615202221242d302b2828281f1c2328252527282a282a28b8e2a7847673 +6861615b63616266635c5b5c5f6163646464636364625f5e5f5f5e5c6463 +636260606061585857595a5b5a5960626261170c120b0f15161c3b784b21 +261f171b202b2b45833733252333001c07110f9da800003ec015212d372c +321f201c073c57645a0e0e1f0f1910101110131314141d131378ab918d33 +2f0b2241384b48286cec2e2528282929302f2e2e2e2d2d2d2e25180e0c0e +121416221c2f352d39312b2933485d6f8398b6cddee3e4e7e9e3d1c5b8a5 +90837e7c66584b45403c393736475f74818b969d9982624227120d0a0e0d +0004000600000e080b140b00000205040301000003080201000903000c05 +080e0a071b28111f3482b8d5d5cbe9f568000a06001a121a1912212e3142 +4d52d6f5db5e57707582717a99412c352f31282f2d2c3737302f45412323 +2b2632192ad4dbe0d2dde1dcdad7d4d4d4d4d5d5e4ba2d2d5c39252b1f40 +4737241d2d352c2b2a28272829282c2f2b2c33353b4c6952271c1e273b28 +2544dfdfccd3b219000d040006050800040f0b0812120f14030405050505 +03040003080806070e10030201000004090f14184991b5ada1a29da4a3b3 +cfd68c8d96a3b2b79e7963646a68573e302f3a4a464a6a63201d344e4941 +414848463e3d3d5d8dbde1f5f9f7fefbf2ffffe7aba1b3b6b5ac9b9da4a0 +9e9b856758564f3c2e24202547250b0800000b17240f539ab8d3deeff9ff +ff9c5c4f413d3d383330322f2924222520151c2b261d26252226252a2030 +1b036dd3d0beb7c2c6c9cac5c7c1bfc0c0bdbec2c2c3c4c6c8c8c7c6c7c5 +c2c2c2c2c1c0c4c3c3c2c3c3c4c5bdbcbdbfc2c4c3c2c1c3c5c52b222b28 +2c3332344d885b333c3b373d3b423f589148453d415825442b322fbfce24 +245eda2b343e483f483940412f647d888036394c3f494141414040404040 +4a403ea3d2b8af554d283d5a4f625c3a7cfa3a2f312f2c2c31302f2f2f30 +30302f24180e0b0a0907060d06171e162321201f212a312e29242a2e3030 +2f34383c3c3c37312a2c384438322c2926221f1e20314b616f7d8d9a9f90 +7b66524744484f52434b3f514d52615f656f6a5b5a65686764605a595b5e +5654515d5751605b61665e56677459657ac5f2fff6dff1fd7b102825163e +363d3c3445555d738380f2ffdf5847585a685d6c94412f3a363932393739 +43453d3c524d2c2b312a362345f2f6f3e2ebeeecedeef0f1f2f2f1f1ffd0 +3e39623d282e264852422c242f37323332302f303130333632333a3c4253 +70582b1e1f283b2d2d52f4faecf7db4f506d655f6666695f646d67636d6c +666c5e6165676868696a66696b6b68676b70646463616062646563638cce +ebdfcecbc3c4b7b7baa73f261616222d25110d19222b281f20293a4c484e +73753f4c6f9aabb6c3d2dad4bea7898da1bed9e9edeffcfbf4fef8a53e17 +17151e20181a1d16161b1304061318120f1219285539242d2f3f5455481d +4c90bde5f6fff8f9e77e3a2b1c1714100b0a0d0e10111722231a1f2b251c +21201b211f28223624107fdcc4a6989c9a9a999498969699979291939596 +97999b9b9a999a989595959594939695959495959798908f909295979695 +97999b9b43393f383a3e3d3e5995683f494642464248465f9c5253494c61 +304e39413ecbd92c2d69e739434e584e56464b4a376c8894893e4052434d +45454342434343434f4645aad9bfb85e55304461576a654489ff48393a35 +3331353433333435353534291a0c07070a0e13201d2f32262f241c161d28 +32343537444c515050525556504e493e35323a4538312926252320222c3d +4c5a617086a1b9bdbbb4aea7a9abadad9ea79baeacb2c7c8d3e2e0d4d7e4 +e9e9e6e2dcd9d7d9d0ccc7d1c9c3d2c8c9cabeb2bdc2a5aab6fafffffffa +ffffbd6b96a2a0c6ae9b764d434042566c75f5ffde4c2e362d35283b6c27 +2640494e3e4241424f524d4c625d3b383d36412d50fdffffeff8fefcfcfe +fefffdfdfdffffe550497049373f395d68563f343b433e3e3d3b3c3d3e3d +434642434c4e5466836e4435343a47332f53f7ffffffff95b8e5dad0d4cf +d0c3c8d1ceccd8dad7dac7c8cbcccdcdcdcecacdd0d0cdcdd2d7cfd1ceca +c7c4c1bab0a6c3fbfffae3dfdadbd2d4dbcb6955494a555e4e342830383d +3a2e2b33465854577875393c597c848993a1a9a48e775a59647884878182 +98a1a1b9c88d412e3c4149473a3a3d383e3e2c1614242f2a212021377876 +7ea0bbd9f1e4b6666e9bc1e7fafffdfffc9a5d4f3b2e261b16171e212324 +272d2a1e26332d242827232829332e4233208de1b88e79756b645f59605f +6062615b5a5b5e5f60626464636263615e5e5e5e5d5c6463616061616061 +595857595c5e5d5c5d5f616121031502201d20261b3f1d2e2513221c1325 +1d244d271a241c186e817b3a009da8020e56c90f212d413e2f0e1e321aaa +a58cc73b1a1c0c09100f0f0e101011120b0d00a27717361e111a2755606f +55466ff03024262a2a29302f2e2f2f2f2c2a261c110d1015161416291d27 +2b29443b3129334d6c849aafc8d8e1e3e3e6e5dcbda9978b83838d947c6e +5d50463f3b363a475c6a70768492968f857457381c0a0a18181609110f0e +060a161e13040004030202000103090d0b0706160c000b0a020100000000 +115495d4d1d0e0e9eebc09000b04001121221613222c3841496aebf88a56 +62678a85848895332933282b34322a262a252c3f291d100b19162e2e15a0 +ced1ced3d3c9ccc6c1bfc1c1c4c5c792231f593d333b52617c5826202832 +302f2f28272627232f2c2c2e36313c54766728151c23371a2736cce2d2d5 +c8540a27271e1c1b25211d201e1e282924282b2b2b2c2d2c2d2d2e343b3b +393a43494b4b4d4b4e565b5e6f7ca7d0cdb7aea9a99f96a2c3dbad86b5ad +a9ac9e816e6d62665d493631333433384f55151013304441423e3a3b4048 +4b48547fb3d9ebeffcf4f2f2ffffffaeb1aeaeac9f9ca8a8a4a29174605b +52433025252540230f0500000f14250c438eafcfdef1f7ffffaf6354453f +3f3b3734392f2821264056513e51442824242f4850514a69400b40ccd9bf +b3bdc7cacbc5c7c0bfc0c0bdbec2c1c1c3c6c9cac8c6c7c4c2c2c3c3c2c1 +c3c3c3c3c4c5c6c7c1c0c0c2c5c7c7c6bfc1c3c435192f1f3d3b3c3e2d4f +2d403b2f423e2e3c31375b382c3c3a3d94a99f5b1cbfce2a3376e325343e +525145283e5742d2cbb2ef6645493c3a41403f3e3d3d3d3e383a29cd9e3e +58402f37426e778669587ffe3c2e2f2f2d2c31302f3030302d2b271b0f09 +0b0d0a070516091315142e28241b17232e2e2925292a2c2b2f373c403833 +292529374d6150483b3128211b181f30495f6d778694999692897b67534b +526468685f6a6c6e686e7b837a6b666c6a6a69656464686c696564746b5c +6a6b66645d564e445595d2fffef4f5f2edbf1e132a25183343463b394c5a +69768098ffff8b4d4f50706c707a8f312a352d313a3b32303431384b3526 +18111d18303832c1e6e3d6dadbd6dfe2e3e3e2e1dfdedfa632285c3f353c +576784602d2628323435332e2b2c2a2932322f3439363f597b6c2a151a22 +371d2f42dffaeef7ee86527979716d6d777370736d6d77787275797c7e81 +82848585868c90908c8d9499a0a2a2a0a2a6a7a5b1b7dcfef7dccdc7cabd +aca7b4b36625392319202115141d17222a2422293336353a535f282b3767 +99acbdcad2d7d6ceb5978699bfd8e4e9fefbfffaf4f3a8321e141c221c1b +1e1c191e1b0d091216150d0f1b294d38292b304258554b1c3d83b4dff3ff +f7faf092412e1e17140f0b0a100c0d0e193d56543e5143251f1f28434d50 +4d704a1750d5d2ad999c9e9c9a949996969997929193949496999c9d9b99 +9a97959596969594959595959697999a94939395989a9a999597999a4d2e +402d4b454748395c3a4c483a4d473542383e66423a4845469fb3ad6a2bcb +d9323c81f033434e6260533549604adad6bdf76d4c4f403e454441404040 +40413e4030d4a5456149373f4b757f8e72628eff4a383835343135343334 +353532302c201008080b0e10172c222c2a253a2c1e12132433393b3e474d +4f4f525659584b413630323b4e604f45392e261f1c1a283a4b595e67788f +a2b0bfc8c9c1b8b1b6c6cbccc6d2d6dcd7e0eff9f1e2dfe7ebedece7e5e6 +e8eae5e1deeee3d2e0ded5ccc4b9aa989ccffefffffffffffff47987a9aa +a1b1ae946546403e4c5c6d8effff863e31273f363b4b6b1c254143494844 +3d3a403d465b4535251f29243c4238c8f2f1e9edf0e9f0f0efeff1f0f0f2 +f7be47396b4c444e6b7d9b754036343c3f413f3a373a3937434240444c49 +526c9182432d2f3241223142e3ffffffffbb9ecfcdc1bcb9c0bcb6b9b8b8 +c6c7c5c5c1bec0c2c3c4c5c5c6ccd1d1cecfd6dee3e7e5e3e2e5e1dbe1df +fcffffe5d2cfddd5c4c4d3d690526d574e514b3930362e373b352e363f42 +41465c6126242b50727e8f9da9afb0a98f6a51586d7b7a7b93949fa5b5ca +9d3c3a3841463e3a4041424335201a252f2f211c23356d6f7e9ab7d7f3e3 +ba676191badff6fff9ffffae64533d2f271e1818222020212a485e594659 +4b2e2626304a5658567a56255ddcca997e79726a625a5e5c5e62615d5a5b +5d5d5f626566646263605e5e5f5f5e5d61636161626362635d5c5a5c5f61 +61605b5d5f6043668b520017291e31331f37170b140c181b1b19224c351b +0b44d7697c64149da2011971df182c354e969d4f001516bca55cd4490508 +1c151411100f0e0e1111211d00689b95bf3112251b4081a06a3172f33122 +242a2b2b302f2e2f302e292419140f10131617161c272752502a3e453e3a +44638299afc4d6e0e3e2e2e0d9c8a688726d76818c93868278695a4d4640 +41434d5a62697683848a929080674a321c0d0805100b0500000104030000 +00010506070606080a0c0706030c0400090107050000081b5fa0d5bac7d2 +d0f0c82f0000000c0d10252d1514212941474e93eabf595d6574948d9c9b +632b2a2a27291b1a1d2b383c59868e461a0321262317086cc1c0c2c3c5bf +bbb4aeacacaeb0b2bc86321a4b3b3d4085485a411e2b263327282721232a +2f2d3335302e37394354927a431f1d2a35332e24b1e8ddd6d9a991a0a2a6 +a29fadaaadaeb1b2afaeb1b6bcbbbab8b9b9b9b6bcbec3c3c4c7cccec1c3 +c3c2c6cdd1d0ced7e1d7c9d0cca9aaa09b9dbad6cf8aecccb2b0a9907466 +63635f4d3a38392e3b2e34342e332c312b3444443c383b42534c444d71a1 +cce2eceef3ecf5fffff2b8a8a4aca6a1a7aaaaa89b816b5e554c3c2a2825 +3423190302010e1228123a81a5c7dcf1f6ffffb96253433f403f3b373b30 +2921254c6b6658674c272421233a6158515e430f1ba2e3c1b1bac5cbcdc8 +c8c3c1c2c1bfc0c3c2c2c3c6cacccac8c7c5c3c3c4c5c5c4c3c3c3c3c4c6 +c7c8c4c2c1c3c5c7c7c6bfc1c3c4587ca56f1635453643442f492d27342e +33322f2c305d47332969fd91a08534bfc8293e91f92e3f465fa9b369203a +3ee4cb82fc7430354c46454442413e3e3e3e4e4a1e93c1bbe15330423658 +98b77e4382ff3d2c2d2f2e2c2f2e2d2e2f2d282318120b07090a0a080f1b +1b46431c2e352b1f1b252c2a27252628292c343d3f3e3627171b2b415463 +5d5c5547372a1f1c2128394f5e6976838088949c988b796d625958596968 +675e66696c69625e5f636a6b6c6b69696b6d6666636d665e6b636a65584d +525d99d4ffe5e9ecdef6c635141d242d2b2f47513d40525f787f87c0fdc3 +5450515c7b74888e5d282a2c282d1e2124334046628f974d200623262320 +258dd7cdc6c3c6c6cdd1d2d2d0cdcbc8d19a41224e3a3c3f884f6249232e +2431292c2925252e313135383231383c4457947c431d1c2834343330c0fc +f7f5fbd2c6dbdde2dedbe9e7eaebedeeecebedf1f5f4f5f6f7f8f8f8feff +fffffffffffffffffffffffffffff9fcfff2dddfd7b8c5bcb1a7b1b7912f +764622222a201312141e2826243039323f323739363f3d536e8faec0c9d2 +d8d9dbbf9e8d9ab7d3e3eef4fff7f2fde48f3a1e1922201b1d1e1b201e14 +0e11151715101d25423934283542575352233579aad7f0fff6fbf6a1402d +1b1413100d0b100b0c0c17466c69586549241f1c1e355e5754624b1b29ab +dfb59c9fa2a19e979a96969998949396959596999d9f9d9b9a9896969798 +98979595959597999a9b97959496989a9a999597999a6d91b67d243f5040 +4d4e3c553a323f373a3836333b67553f3472ff9bae9443cbd331479cff3c +4e566fb8c1762b4346ecd68dff7b373b504a49474342404041415450259a +cac4ea5c3a4a3f62a0bf874d91ff4b36363535313433323335332e291d15 +0c080a0e13152331335e572b383827181928353a3f434a4c5052575c5b55 +46322021304255615b5951453528201e262d3a4b555d6a7b7f93adc6d4d5 +d1cbc1b9b9bccfd0d2cdd5d8dbd7cecacad2dee1e2dfdedee0e0dad7d4de +d5cddaced0c9bcadababd8fffff6f5fbf8fff77f87a6b0b8b1a4a18d573f +3c3f596678b9ffc64e3d2e2e433b53613d172a3b44482d292e3e4d52719e +a65d2e1530322f292992e4dedfdfe4e0e3e1e0dfe0e1e0e0ecb356355d48 +4a4f9b62775c363d313c35373530313a3e3d444741404a4d566aab955b33 +2e363c393630c3fffffffff2e6fbfbfef8f3fffcffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffbe4e4d9bf +d8d4c9c2d0d9ba5baa7b57545546322c2a333b38313d453e4b3d403f393d +37434b64869ba7b0b9b8b7946a504e62747d81889799a5c5c78946353643 +413c3f4547483c2921252f332a1d232f5d6b8392b5d2f1e1c2715d88b0d7 +effff6ffffb965543d2f27201a1a211d201f2650716e6070522d2623243b +655f5d6d562736b2dca78781786f685d5f5d5f63625f5c5f5e5e5f626668 +666463615f5f606161606161616160626364605e5d5f616363625b5d5f60 +ba757ab3271d0e2217333a3f22210d111d12283b3fb7994c025ad4393e27 +00ab9b001576e213283060c5ec9d0216084c796ee2461416110918161512 +121113140c0f13338877d732151b24436e775d2674f23121232a2c2c2e2d +2e30302c25201011121314161516181a3ca6a13b2f474f515e7c98abbfd2 +e1e4e1ddd9d3c6b08d684f5164747a7c858b8b826e5e55505047434c5660 +6b76868e959892877461401e170d19040a0b000407070b12151410101414 +110e0c0c0f120a0c080c18050c1106023a70aeada2c0c5b1ccb33f040700 +0c0f08292f1f12141e28494f5ab8e169575c6a8c9092979b303037282621 +2926272f2d203769692d240e28261d1f1059c2b8bcb9c2c0b4afa8a6a5a7 +acacb68a4a2146394541494dae82292a202f2c2e2d2c33434e502f362c22 +2d393e4440343a2d363d1f25301596e6e2d0dce1e4dad1e2e4dce3d8e1d5 +d4dadadddcd4e0dfdbd8d7d7d5d4d5d3d1d2d4d7d7d5d6d7d6d2d5dbdcd7 +e3dbe6ecddd9d4b7adafb7acb5cade8ca7a1a2b1ac8d72686f6a624f3f44 +47393b3540293a2f1e0e17253c444343413c3b4d52454970a3c4e0f1eef6 +fffcffffbba39caaaba6a7aaaaa89c856d5c524b452b281f2c221e000000 +050a291433789ec2daf2f5ffffbf5d4e403d3f3f3d3c3631332518252b12 +14281c1532341f1d2c201c0c1909036ee7c0adb9c7cececac9c5c3c4c3c0 +c2c5c3c3c4c7ccceccc9c8c6c4c4c6c7c7c6c3c3c3c4c5c6c8c9c3c1c0c1 +c3c5c5c5c0c2c4c4cf8c94d0453b2b3a29444a51383d2d3338293c4e4dc8 +ab64207ffa61624814cdc1223a96fc293b4171d8ffb7223b30779f94ff71 +4145423a4b49474442414041393c3e5eae9df95433373f5b848e713a84ff +3d2b2c2f2f2d2d2c2c2e2d2b241e0b0b09070507090b13163aa39d332434 +302420292c262224292a2d323c43403c311b060f273d4a505d65685c4836 +2d2a2e292b3846525d6878828f9aa09e958f7b625f5a6d5d676b62666866 +666b6d6c6b6d6e6e6b686666676b64676367735e6465524877a6ddd8c7e1 +e0c4d9bb420e2817302e24444f443e465664848992e3f0694f4e5472787c +868f292e362926222c2a2b3633283e707033271028241b262c78d5c3bdb8 +c2c9c8cccccbc8c6c1bfcb9b5628483843404c52b5892c2c1e2d2c302f2e +3545505231382e242f3a3f454034382b343b1e26351fa4f9faebfbfffffe +f5fffffffffffffcfafffffffffafffffffffffffffefffdf9fafbfbf9f9 +fbfffefaf9fdfbf4fceff4f6e4dcd4bdc2c9cdbab5b2aa39361c13222819 +0d0f20252b28293c4941433b442c3b302222496b8da4b5c5d1d5d5dfd1aa +919fbed0e3f3f5fcffead7eb5d301d26241c1b1c181b1b130c080c131a0d +191e3637382331394f4d54293071a3d0ecfff5faf9a93d2a181212100d0c +0a0a120e071d2a13132619122d2f1a1b2b211c1022130f77e8bca0a4a7a5 +a1999b98989b9a9795989696979a9fa19f9c9b999797999a9a9995959596 +98999b9c969493949698989896989a9ae49ea5de50453344334e575d4548 +383c3f2f435558d2b9702b88ff6b705723d9cc2a43a1ff374a5181e7ffc4 +2d44387eaa9fff78474b463e4e4c4845444343463f424565b7a6ff5d3d42 +48658f967a4593ff4b35353536323231313334312a23110f0c090a0e151b +272d50b8ae402c362e2123313b3b3f454d4f52545b5e594f3e230d132c40 +4a4f5b62645947362d292c27293946515a65758499b1c7d4d8dacbb5b4b2 +c7bbc7cfc5c9c7c4c1c5c4c5c8cdcececbc8c6c6c8c9c4c4c0c4d0babbbb +aa9ec8ecfffad9e8e7d2f9ec856fadafc6bca2ad9a70493a3940647185dc +f36744342b3f3c4250650d223b3b423e3b3336403f354e808041361d3431 +262e2f7de3d9dbdae4e8e0dedadbdbdbdcdde8b76e3b574651505f66c89c +3f3b2b38383c3b3a41515d5f3e473d333e4c51595a4e50404246262a3820 +a7fffffcfffffffffffffffffffffffffffffffffffffffffffefefefdfc +fdfbf8f9fafbfaf7f3f4f5f2f5fcfefafff8fdffeee5decbd7e2e5d4d1d2 +d0656a53495757402d2b363a3e3a3649554c4e474f35403423192e476d88 +9babb6b6afb29c6e4f57717a7c868d9cb2a8aad155372e3e423d40444545 +3a2c201f282e2e191c244f648287aec7e6dac57a5b83a9d1ecfef3feffc0 +62503a2d26201b1c1b1d2720172830181b31221b34362020312624192b1d +1b80eab3908981776a5f605d616564615e615f5f6063686a686564626060 +6263636261616162616264655f5d5c5d5f6161615c5e6060a88093c7001b +171f2b4da599311b29091b1734535ef1ee7c00197a82c79909a58c010f74 +d7141a3a80ccee5c1628115fb08ab8250023130c1011121211101112200c +0d395f5640151d0919314c52331a72e3351d2a272933342e2c2d30281a0f +1414111311141e0e1215698e482a304164728193aec4d3dae5dde0ddc9c5 +bd9b5945454c515a676579848f8d877d6e5e534c4b4e51576672837d8b99 +8b7e848678624b3723161820231f1c1e2a3639322c34382f282b33362d34 +39393c42474b4b4a526d91aab1aeb1b2b0b6c758070d02020009222e682d +0e112a36494c58ae765c5370718f86829b7f3f2f3328342e2c25281d2339 +3b423e3131363535332416359f8ba399c6b0b9b7b6b4907e968faa625c10 +3c5e47394026423a344939372c2b2c333d474d4f27212b3230404c3d2f36 +383d3f32272b341c65e6e1d5d3d8e0e3e3e3e1e1e1e1e0e0dfdfdfdfdddf +e4e5e4e2e1e1e0e0e0e0e1e1e2e4e5e5e5e5e5e5e5e5e5e5e8e9e7e6e4e0 +d3c1b3ada3bab5bfd79891a5b2afa0a8736e6e636556383540353833565e +2d18281f0c0f325157544d453e323e504e476398cde0f0f9fafbffffffa7 +85a5a7a6aba1aaa99e89716057514636241c242b21090008000620211f6f +9ac1d7eeffffffe444654734473e373f3c37302825242224120f1924272f +342d2c2023140f171929b5ddb2b4c6cfc0cbc7c5c3c3c3c2c2bfc6c2bec0 +c6cacac8c9c9c8c5c4c4c7cacac2bec4c7c5c5c8c4c2bfc0c3c4c3c1c2c3 +c5c7bd97ade41b3934383d5eb6ab47384a2c362e48666cffff94113ea0aa +ebba29c7b2293494f12a2d4b91dfff76364d398ad6b0e0502752443f4344 +4544414041424d383864857c62373b2534496268472e82f34127332c2c34 +332c27282b25170a0a0905040007130b141d74964b282a2b342c2727292a +28252c293844434e524011090c17202e3f3f536169675f544537332e292b +2d334253696980948e88909ea1948274665e646f74716c6b737d7d78767f +827a73767e81787f8484878d92928c86899ebdd1d3cccccac7cbd8671422 +2a2e1d293b4786543e4b6a7889888ed6825848605b766e6c8b76392f3329 +342e2e282a21293f414844373438353330282e50b297a79dcbbdced3d7d5 +af98a69fbd7368173e5c4538412b4941374837352c2b2c333d474d4f2720 +2a312f3f4b3b2c33363a3d31262c382672f9f7eff0f3f0efefeff0f0f0f0 +f0f0f1f0f0f0f0f0f0f0f0f1f2f2f2f2f2f2f2f2f1f0f0f1f4f5f5f4f4f3 +f2f2f1f0ece8e4ddcec2c3c2b9ccbbb2ad4f2624231f182e07111f1f2e30 +222f444244405d612d1523252d3d628a9eadc2d1ded9dddfbe9898b2d3dd +eaf4f4f2f2f4d95418271d161e13171a1b140b080c12151511172b3c382a +2b43404a4d3a206a9ecce7fafffcf4d22842220c1a0f070f0d0d0d0f131a +2023110d1621242c322b2b212318161f2132bee1aca4a9a9959d99989898 +9a99949199959193999d9d9b9c9c9b9897979a9d9d9591979a98989b9795 +92939596959498999b9dd0a9bef226433c3f4768c0b5524053323d344f6d +77ffffa01c47abb4f9c938d3bd313d9ffe383c5ba1eeff8341564191e1bb +e8572d58484246474645434243465341416d8e856c4145303f536d735239 +91ff4f313c32333938312d2e322c1e10120f09090810211c293288a95a33 +2e2d342e30343e4448464e4c59625c64664f1c11131d232f3f3e525f6664 +5d5243322623272f373f4c596a687e9a9da3b8ced9d3c3b7ada8b0bec3bd +b5b1b7bdbab4b5c0c3bbb4b7bfc2b9c0c7c5c8ced3d2ccc5cce1fefff9e4 +d5cecfe0ffac7097bdcdb4b2b1a3c2713e334752676f81ce804f363f2c3d +3032584f23273b3b50483b31362c354b4f565245434541403b313257c1af +cac3f1dfe9e8e8e6c3b1c7c1de91802a4d6a5246533e5c544a5844403635 +363d4751595b332e383f3d4f5b50474e4c4d4a392c303b2878fffffcfeff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffff1eaebeff1f4f8fbfffffffffef8ece0ddddd1e4d5d0d17a5a5c5b54 +4857292c3534413f2f3b4f4b5049676a351c29231a234c778c99a7aeb0a5 +a3a1835e627179768a98a0a7b3c4b9461b353737413b44453b2e21202a2f +2a20131d3e677c89a3cfd6d9c28e4e80a9cee7f8fdffffea4e6a43262f1f +151f1f2121222323252819181f2a2b33373030262b21202a2c3bc3e0a08d +877c60625e5d61616463605d625e5a5c626666646565646160606366665e +5a6063616164605e5b5c6162615d5e5f6163697796ae001420264b6ff1a6 +1d0f0016121d41706ab7942a10276c8c9e6e00bd8006106ac41117284689 +70021218101a323822081e110a0f1011121110101112100c161203061812 +161c2c1f4639211a6fe336202c2829313130312f2b21160f071e10132917 +17441d39a2828d37424b728696aac0d1dbdfe2dad1c5bcbebfb05437413c +3e485754606f7d868a8b867d655a54575b5e61646d6f7a828b9b9e8c8d88 +919da199908c9ba3a8aaaab0b4b3bdc1c3bdbabcbfbfbcbebfbec3c8c8c8 +c8c2b7b5b5b5b1acb8bbadc2721800060008001e1a5548130d1c2433495e +7d9c55575f7d7d918682a76b2f2f382e302d2a252d2a394f4f544a4b504b +3d2b2c32291fa8beab79aabcaba8a9b29e97b3b5b859501e44442c454140 +50423c4634242c28262628292826241d252a2a3b483e3a4642332d2a2a32 +392859dfdac9c6cbe5e9e9e9e9e8e8e8e8e7e7e5e7e5e5e7e9ebebe9e8e7 +e7e5e5e5e7e8e9e9ebececeeececebebe9e9e8e8e7e4e3ddcebdb4afa3b6 +aebad5a185a3aaaea4aa81706a5b5e563a2e2d212545646b562d1a1c0e13 +2f526c6f60524433323e4c505b6d9dccecf3f4fdfdfbfffaa68aa9aaa8a6 +a8a89f8b726157514a3d2a1f252c230b000900091d1d155f8ebad7edfcff +ffed625d573c45443c453d38302a2724232320171b22242b2e262d222214 +10130c12a3e6bba4c1c6c7cbc8c7c5c4c5c4c1c0c2c1bfc1c4c6c6c5c9c9 +c8c6c4c4c6c8c9c3c2c6c7c4c4c7c6c3c0c0c2c4c4c3c0c1c3c57e8eb0cc +1a323d3f5d80ffb8332c1c392d34558378c8a6422e4c92b4c28f1edfa62e +358ade272a39579c861c323d38455a604d354b423b424344454442404142 +3d38413d292c3a34343847375c4f352e81f3442a352d2c302f2e2c2a261c +1108000f0002180b13472a49b48f933436282d272627282826262f313b44 +4d606f6e210c1815172435323e4c5a6062625d56463b2d2824242c364956 +697985969a90a4a9b6c7d0cec8c9d9e2e6e4e3e5e8e8f5fbfdf7f4f8fbfb +f7f9faf9fdfffffdf3e7dbd5d4d1c8c1cacec0d6883014271a381e3d336f +673d455d6b7b8a98afbd5c50516b68796e6d99622c2e382f302e2c28302e +3d55555a5051524d3b2926353c38bdcfbb88bcd3c6c7c8cfb9acc3c3ca69 +5c2445422a45434657493f4532222a28262628292826241d2429293a473d +38433e302b2929333e2f66f0f1e1e3e3f0eeeeeeeeefeeeeeeefefefeeef +eeeeedededeeeeefeff0f0f0efeeeeeeededeff0f0f0f0f0f0efefefedea +e7e0d1c3c2c3bbccbcb6b36021241b1b182b11121b1b29302426312e3653 +6e725627101a222e4063869baec2d8dce2e3d6bea89daecbe5e9ecf8fbf2 +eec44d16211b1b18121719130a05080f14151116283a372a2a43424d4e36 +175992c5e7f9fdfaf9df4a3d34161a150c120c0d0d0f12181e221f15181f +21282c242c212317141a131ab1f1bc99a8a39c9c9a9998999a9996929594 +9294979999989c9c9b999797999b9c9695999a97979a9996939394969695 +9597999b91a0bfd7243a4346678affc23e34253f343a5c8a83d2b44e3955 +9dbed09e2debb1363e95eb35394967ab94293d46404c646a543b51473f45 +464746454342434643414a463235443e3e435243675a40398fff51343e33 +3336343332302d2318100416070a221722583d60c8a09f3d3a2c322f3439 +414547464f4e565a60707c782a131e1a1c2636313d4a585d60605b4f3429 +282e373a40434d526272859da9abc6d2e2f7ffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff9e7d4d4d5cff7c486 +84acb3d6afbc9aba954d3a3f43536a80a3b654403643333d30346c411b2c +42434843382f3939496163685e5f5f5a4834303c423fcee9dfb1e2f5e1db +dae1cec7e5e8ee8a763a575037515256695b50553f2d3532303032333432 +302932373748574f505e5541362f2e3742376ef8f9ebebedffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffff4efeff1 +f4f6fafdfffffffffffff2e3dfded3e4d6d1d68a535b53514954352d312c +393f31333c37405e787c6031191d171f36597d8c969ea8a3a4a7a291846d +606f8d9297a6aeafb9a03f1935373d4040423a2e211e272b2b201419395f +76849fcbd8dec5904a739ec9e6f7f8fcfff86e64542f2e251c231f212120 +2122242727202128282f31293126281e1d241d25baf5b687897969645f5e +5f626564615e5e5d5b5d606262616565646260606264655f5e6263606063 +625f5c5c606262615e5d5f6182999079020e180936347b39001c0825241a +11301d3e3a12101d2329162100b868040c64b31824282442360b301f1f11 +0523061b280f11160e0f1211100f11120120181520251e0e1e222a14553f +26266fe539212d2a282e2e33352f231710100e20171526130d352e12525f +5e334867839aacbecfd9dfded9d3c2b2afb3b8bd663144323035423f505c +6c76818b8e8d7b6e67686d6c645b5b636c6f75859a9d9b95a0b2c5cccfcf +cad0d6d4d4d7d9d9cdd0d2cfcfd1d0cdd0cfcdcbd0d4d1cddedbd2c5bcba +babcb8bac39f1e0000030000112140662f080827283e535f6d4d5661647e +87989aa1a3441a252c2920201a151f1e2b3c373a2d363227261b2640281e +b0b78d78a1a5b8b4afb5a28f9d9b8f60641b3d5a4145353e3e4d4a2a2324 +262424252624201d201a1e22243543405165572d191e2a32322c44d6e4ce +d1d5e5e9e9e8e8e8e8e6e5e5e5e4e5e4e4e5e8e8e8e7e5e4e4e4e4e4e5e5 +e7e8e9e9ececebe9e8e8e7e5e2e2e0dedcd6c6b7b3b1a5b2a9b5d3b07fa4 +a6b0a9aa93716b5a5e5e432d22172f413648765c231b141a284a7d8b7866 +4c3e34324557595971a2cee6f1f5f0ebffffe28a93aea1a2a6a8a3927963 +5a544f412f23252b25100006000c1c1a115181b4d6eef8fbfff8894b6542 +3f463e463e3a322b28242322241b1e252a363d383226271d1d1f0d0772e5 +cb9ebbc1cac7c9c8c6c4c5c4c2bfc1c2c4c5c4c3c4c5c8c9c9c7c5c3c4c5 +c7c6c7c9c7c2c2c5c7c4c0bfc0c2c4c4c1c1c3c497b0aa97202c35224945 +8c4b133929483f3125432b4f4c2a2e4249513a4217da8e2c3184cd2e3739 +35554c255044473c2d4b31485540424944454544424141422d4c4340464b +40303c3e452c6b553a3a81f5472b362f2b2d2c2e2e281c10090601100603 +160b0e40432b686f5d262d32272427292828282b313e43475b7080924513 +261513182521323d4a535b6366685f4f3a2f28221e203045596368768690 +9ea4b2cae0edf3f7f5fbfffcfafcfdfdf2f7f9f9f9fbfbf8fbfaf6f4f6fa +f6edf4ece3d8cfcbcaccc8cbd3b437141e2d2730373f587e51354671768a +969697675a57566c7180848d953d17242e2c21211c1822222f423d40333c +3429241920433737cbd6af9bc7ccdcd4cccfb8a2adaaa1706f213e593f45 +384445544d2c2122252424252624201d201a1e222435423f4f62552c191f +2b35373550e6f8e7ededf5f3f3f3f3f4f3f4f3f3f3f3f2f3f3f2f1f1f1f2 +f3f3f3f3f3f3f3f3f2f1f0f0eeeeeeeff0eff0f1eff2f1efeee8d8c9c3c2 +bdcabdb9bb772129161b1b271f0e1c1b29352b2224233f52445079561916 +1d232038698695adc4d9e4e4e3ddc1a095afccdde9f3faf7fdfda0251624 +161410151c170d05060d141513152436352b273e42504e37144c84bde4f9 +f9f7fcee7531461e151a0e130d0d0c0e11171d2021181b2227333c373125 +28202023110f84f8d196a6a0a0989b9a99999a9997949495979897969798 +9b9c9c9a989697989a999a9c9a9595989a979291929496969697999aaac2 +b9a22a343b29504d96551e41324e46372c4a36595a36394b545b485126e6 +99343a8fda3c464945645a325b4d4f433755384e5b45464c464746454342 +434636574c4951564a3a474a5038786245458fff54353f3532333134352f +2418110f0b1a100f231a205258417d7f6b2f323832323a3f424446484b54 +5657687989994c1b2e1a181c2923323b4951586164604a3b34363d3d3a36 +3a4552575f6f8597adb9cae4feffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffff8efe7e1dcd7ddf4e9877e9ebdbec3beb1 +b0ba6d38314e4e63757f8b5c4b3e333c374248586e230e293a3d3533281f +2b2d3b4e4b4e414a413631242a4a3e3edef2d4c3ecedf6e9dce0cfc0d1d1 +c7928b3950674c51475457665e3b2f2d2d2c2c2d2e2c2a272a242a2e3041 +5051677d6a3a21232f3a3d3e5cf3ffeef0eff5f5f5f5f5f4f5f5f4f6f6f6 +f8f8f8f8f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f8fbfdfdfdfdffffffffff +fffffffeeee1dddcd5e2d5d4dda0536051534d51442b312c39453930312f +4c5c4f5b8260221c1a1e1e386a80818b96a0a6aab3baaa7e555f7f8e989e +a1a1b3c57e1b1e3b353a3e413d332720272b2a2212153256708299c5d8e3 +cb954b6a93c2e4f5f4f8ffff9a58663829291e2420222120212021252a23 +242b2e3a413c362a2d27272c1c1a92ffcf8989776e60605f60626564625f +5d5e6061605f606164656563615f606161606163615c5e6163605e5d5e60 +64625f5d5f60232e1b10000d2017846d3116161b200812202c604f362217 +181d14140a1a12ba57010669a7172c303317313026180e352607251b040c +0e190d0f1211100f111325220669acab8a26221f251f5256392872e83b20 +2b2a292e30322f25190f0c0f130e1f2020312e1e092427112b797a6e94ab +bccad5dbdfdccdccb6a3a5a1a1af88344133312a3134454d58636f7a868a +8b84828386827568544c4e5f6b6e86a19f95949aa8bacdd6dbd9d5d2d8dd +dcd7d8dcdddfdededcdadddfdddbdde0dedee4e1d7c9bdb8b9beb6b6c444 +0000000007001a2e656515160f2e2e415e4b2e176769647e9197abba8326 +131b1a2011111815222024312d35605f350e151c20331c1b887e6f8a9f97 +9ca5adc5c3b1b7b47a7e8c222c63401c23413a55501a1c231f2125292b2b +28251b181a1e24313d4063806e331419272d212b2ec3efdbe2e3e4e6e7e6 +e6e6e6e6e3e3e3e3e3e3e3e3e5e5e5e4e2e1e1e1e1e1e2e2e4e5e7e7e8e8 +e8e7e5e4e2e2dedfdddad9d3c3b7b4b2a7ada4b2d1c282a8a8b6b2aba16e +685b5f624e3226272e433738553d1b261e282b46889e8b7e584c40333a4b +5862667699cbe7e4e3f1f6fdffc386a7a29fa7aaa79b826b5e5951443526 +242b291700030007191d17527eb0d5edf7f8fffba53c654635453c40403b +342d2725232218121921232e3a3a251c201d23250f002ed2d6abb1c0c6c4 +c8c6c5c4c3c2c0bfc1c6cacac5c3c4c7c7c8c9c8c5c2c2c2c6c8cbcac5c1 +c0c2c6c3bfbcbcbfc2c4c3c3c4c43845352e1b2b3d30977e42282c38412b +2d3740735d47342f36423a3c2e3b32dc7d292b89c12d3f41442a474a463d +36604e2f5048333d414c4345454442414143514e3194d2d1ac48403b4037 +686c4d3c84f8492a342f2c2d2e2d281e1208050507000d10142d332d223e +3c19205b4b222624272827272b3334494c5067737d9473232d1e1c13181a +282f38414c576068706553463b322b29242c394e585a6b8c999898a2b4c9 +dfecf4f2efecf0f6f5f0f1f5f9fbfcfcfbf9fcfcfaf6f6f7f5efece7dfd6 +ccc9cacdc5c5d4581923282e3e25414c7b7d3947547e8393a1815229665f +566d7c8297aa7821121b1e2314131b1825242b37333b66653910151a1d36 +2b36adada7c8ded0cccbcadcd7c4c9c78e919a2a2f633e1c2749435e561c +1a211f2225292b2b28251b181a1e24313c3f617e6d33151d2b3228333ad3 +fff2fcfcf7f7f6f7f7f7f7f7f6f6f6f6f6f6f6f6f3f3f3f4f5f5f5f5f5f5 +f5f5f4f3f3f2efeeeeeff1f2f3f3f0f3f6f5f4eedfcec4c2bfc9bfbec08f +282e181e1f242909191c29362f21242f3a534542573a0f1f2226101b5070 +7d9aaacbdfdedde0d7c5a59baacee6e8f2fffff1e973192719111117201f +1408070e111413142132363028393e4d4c3b1b4c81b9e0f8f8f6fdf59728 +4c26101a0c0d0f0e0d0e11151a1d120e161e202b3939241b211e23280f07 +45e9e1a9a0a39e979a9897979897959494999d9d9896979a9a9b9c9b9895 +9595999b9e9d989493959996918e8e91949698999a9a4b55423825334337 +9e864c3237404a31343d477a6851423b414b45463c4a41e888313494ce3b +4e515439555751463e675839574e3942444f45474645434243475a593a9d +dddcb6524b474b437579584792ff56343d35333333332f251a100d0e110d +1b1d223c46423855512c3067532c33353d404242464a485958586c768199 +7c2d382723191c1d2a2f39404a535d5f5d534d4d4f4b463e323136465151 +64899b9fa1adc4dcf5fffffffffbfcfdfaf4f5f9fcfefefefefcfffffffd +fdfffdf9f9f7f2e9dfdbdce0dce6ff9f7a99b2c0ceacb8aec4ab49413857 +5a6b826a461d513c29373d415c79580e10232a342320241f2e2d35434149 +7471451c1f25263d323fbfc7c8edffeee3dedaeeefe2edefb3b2b741406f +49263356526d662b282c27272d313333322f2522262a303d4a5179967f3f +1a202e3632404ae2fff8fdf9f3f1f1f1f1f1f1f1f2f2f2f2f2f2f4f4f3f3 +f3f3f3f3f3f3f3f3f3f3f3f3f3f8fffffffffffffdfdfafcfdfcfdf7eadc +dddcd7dfd4d8e0b85b675557534f4d272e2d39473f31323c4860504c6345 +1b2723271724597274838298a7a9b2c0c2a86e566687969193a2a7a7b858 +163635373f43413b2f25292d292012142c4f6d8499c0d4e1cc9d586e94c0 +e2f4f3f7ffffba4d6a3e222b1c1e222222201e1f1f211e1c212727323e3e +292026232b2f191455f7e39d867b6d5e5f5c5c5e6162605f5d626666615f +606363646564615e5e5e606265645f5b5c5e625f5d5a5a5d6262615f6060 +160c08081c101c2252611a1d2308240e181f203b331f182a17193036430c +08b1560404799d0b2636393312140e23198aa44347141d2810000d0e0f11 +1010111317052dda852f7b3017222c324791722c77ed3c1b27292d30322d +221a130f0f0f140b1a1e2d3b2926187c9137d1cda087a7b8c5cfd6dadcd7 +c6bea390948e8d9d9f3f33353c2c2b35363b434f5b6c7c86909196989c95 +8b7d6a553b3f5d6c7788888d969da3aeb9c2dee3e7e5e4e4e4e1dcdee0e1 +ded8d8d9d6dde2dedcdfe4e6f2ecdecec2b8b5b5babe7500050b00000500 +1855666b0020202c2f3c643e093560666c8b9184a5b45c1f201a0d19110b +11132424263336468d8f5414152626261b0540586873729699adafbab093 +877e504869231f4c372a235a586f6022221a20202324221e1a1714161519 +2229313a58796f3b1d222b2d1a2920a1efdadddce2e2e3e2e2e2e2e2e2e2 +e2e2e2e2e2e2e2e2e2e1e0dededddddddee0e1e1e2e2e2e2e2e2e1e1e0e0 +dcdcdddadad4c6bab7b3a8a8a1aecbce88a1a8b8b7aca871635c5e615139 +3441222d32373b302a2d2433334887a59c93715d4d413c414e6066606c9a +c7d8e4f4f2efffffac8fa3aba9a9a69e8970615c52473927242b2c1f0c04 +0004131f1f5480add0ecf9fafef7b9425b4732423b39413e372e27232321 +2a292f2e22242e30241f27252d341d0a02afdec4a5bfbfc8c6c5c3c1c0c0 +bfbdc0c6cbc9c4c0c3c6c6c8c8c7c4c1c1c1c6c9ccc9c3c0bfc0c3c0bdba +b9bbbec1c2c2c2c22b2322263a2e393b65722b303a2545313336344e4130 +2a42353e565e672d28d37c2c2999b72139474a46282e2e4841b5cc6b7241 +4c5943364344454442424343433157ffab559d52353e46495da7853f89fd +4a28302e2d2f30281b10090505050a000c11243a31383094a034b1975221 +262525252428303a3e4f4e526870778c933527282b18161e1b1e25303c4a +596574716960564d44403c31222b49575d707d87929ba3b0bfcae7eff5f6 +f5f7f8f5eef0f3f4f3f0f0f1ebf2f5f0ebecefeff6f0e8ded5cfccc9cacb +8410212e272b3b333f717b8425546b828a92a66f25405d5a5f7b7e7192a5 +521b1f1e131f1510141628282d3a3e4e93955816152423292a26719abbce +cde7dadccfd1c5a89f98665a762a224e372d296261786625211820232627 +25211d1a1719181c252c333c5879713e21262f3222322db1fff1f7f6f7f7 +f6f7f7f7f7f7f5f5f5f5f5f6f5f5f3f3f3f4f5f6f6f6f6f6f6f5f4f4f3f3 +f2f1f2f2f3f4f5f5f5f6f7f7f7f2e4d3c6c1c2c8c0c0c0a1312a181e2320 +2c081119232e2c20294029393e3f3d2d1e25272e120e3957638193afc8d5 +d9dddfddc6a79eb9d5e2f0fffcebffd0551e1f1b13161f22180b070d0e13 +13121c2f3634303a3c4a483f245082b6dbf5f9f8fdf4af32462d0f190c09 +100f0d0d0f13181b24232c2b21232d30252028262e341c121dccedc596a3 +999b989795949595949293999e9c97939699999b9b9a97949494999c9f9c +9693929395928f8c8b8d9093979898983c332f3044363f406c7a3337422b +4c373a3c3b554c3a384e40476168753c37df873432a4c42f48575a55363b +395149bcd6757947525e463845464545434344474c3c63ffb660a95e404a +53576ab4934d97ff573139343535352e2218120e0e0e150e1b22354c464e +48acb749c6a7602f38383d3f3e40464d4c565353697079929d4033323521 +1d242022252e3948555e68666461605b5650493b282d4a565c707b8793a0 +abbccbd7f6fdfffffcfbf9f6f2f4f7f8f6f2f2f3eef5f9f4f0f2f5f8fffc +f4ebe3dddee2eeffc9698eaeb4babfa7a4c4b4a32b474c5b616b8a591730 +3e302a3f3a2f587a3912242a212d20161b1d3131374449599fa164221f2f +2c30312f82b2d9edeaffeeecdce1dac3c1bd8d7e9644335a4136356f7087 +76342f2328282b2c2a2624211e2021252e353f4b70918047242732382d43 +3ec1fff7f6f3f8fafafafafafafaf9f9f9f9f9f7f9f9fafafafafafafafa +fafafafafafafafdfffffffffdfaf8f6f2f3f4f3f5f0e2d8dbdcd9ddd5d8 +e0ca6462555a574d5126272b35413e333a5039474a4a49382c302c321d1d +496469777a899aa5aeb8c2bd966b5f75888b8e9a9992baa44424373f4042 +403e34292a2d251f1211274c6b85a0c1d4e0cca6667597bfddf4f7fbffff +d256654623291c19232323201d1d1e1f303137342729323227222c2a333c +241f32def4bd7f7e68645c5b5a5b5e60615d5c626765605c5f6262646463 +605d5d5d606164615d5a5b5c615e5b58595b5e5f605e5e5e3f0f0f011f18 +1e2830452e1c211b17151e2025222f371e1f1060ae80973a1da95107068c +9b0a304a4bb2411615261eb9b6c9ac2d170013180c0e0f0f0f1011131620 +02b9970011171522253a69eecd467bf03e1925292e312f25180f0e101110 +0e1a1620604a18667e969431b18893b6b7c1cbd1d8d9d7d0bfa587787c81 +8a96a05426383e312e39343439424c586672848c9aa2a8a4998ca7ab783c +374e5d676f80939c9fa3a8aabad3e9ece1dadde1e7e3e1e0dfdbdadbd3dd +e5e3dfe1e9ede5ddd2c6bdb8b5b4bcac100013020000001142687e56121a +2425374b673402555f6c7d908576a8a4372224180810100908081a1b1e29 +2f436576551b13222620150a1c42493a326381a8b1bdbdaeaaa89e7a9653 +25473a313947508c7b231f2e23252624201b191814181416212428373d5c +5c3e2e2c2e2e19241c75eddddedbe0e2e2e2e2e2e2e2e1e1e1e1e1e1e1e2 +e2e1e1e0dededddddddddedee0e1e2e1e0e0e0e0e1e1e1e0dfe0dfdeddd9 +cdc3bdb3aaa4a0abc1d29195a6b4b7acaa7c6261625e594843503a27252e +343d412e22313a4c81a6a89d896a534b47413e465a5f60719dcfe8ecedff +f9ffee869cb2aaa6a19d8c74615a534d3c2a232a2e24170700020f20204e +7ea9cbeafbfafcf2c9624b4c37403f3a423f372f28232221393639352321 +29292a27312a30382414007be1d8a3babfcfc6c5c1bfbebebdbcbec2c6c4 +c0bdc0c3c5c6c7c5c2c1c1c2c6c9c9c4c1c1bfbdbfbfbdb9b7b8bbbebebe +bdbc5426291f3d373b4143563f2f38383838393739353d4830372e85d4a8 +bb5b3dcb772f2bacb520435b5cc55730354b46e4def4d95c462e464e4244 +454542424344424c2ce3bd203339333e3f517fffe0598dff4c262e2e2e2e +2a1e0e050406070606140b175b4b247a96aa9a1f7f39273528252525262b +343e464741485d6d7c8d9a501e2d32211a241b191c242e394753676d7171 +6c665c547b875d262338465263768b93999ea5aabcd7f2f6f0eceff3f6f2 +f0f1f2eeedeee4eef4ede8e8edf1e9e5e0dcd9d5d1cccebb1c0e2c24282f +34456785936f3953738198a2a961195a5b627181726397982f1e271e0f18 +170e0b0d1f222532374b6b7c591f13222525262f5a97b5b0a4c9cee0d5d4 +d3c6c9c6b88ea55d2b493a3440515c9883271e2e26282927231e1c1b171b +171924272a393d5c5e4132323335232f2886fff4f6f5f7f6f6f6f6f6f6f6 +f3f3f3f3f4f4f4f3f3f3f3f4f4f5f5f6f5f6f4f5f4f3f2f3f3f3f3f4f4f4 +f5f6f5f7f5f4f5f1e5d5c8c1c4c7c3c1bca93f1f1618201e2c110e1c2127 +2c2830493d2e2e3636393526272c140923404f648092aac5d8dedddbdac7 +b1aabeddeeeff0ffedf9ad241d2214131a211b0d06090d151410172a3437 +393b3c49433f244980afd4f3fbf9fdf2c3583b36181a130a11100d0d0d12 +161831303632222028292b28322b2f37231c189bf5dd97a099a298959392 +93939291909599979390939698999a9895949495999c9c97949492909191 +8f8b898a8d909394939265363629473c41464a5e4736403e3f3c403d403c +48523e43398edfb2c96a4cd7823734b7c22e526b6cd4653d40544eebe8fd +df624c32495044464545434344484b5738efc82b3f453e4a4c5f8cffee67 +9bff592f373436353025160d0d0f101113221b286f603a92b0c5b439984f +3e4b3c3a3d3d3e42474b4d4841465b6c7c92a65e2d3b3e2c252b211e1e24 +2c36444e61686d6d6c69635d88956c332f445057637489949da4aeb2c8e2 +fbfff7f0f3f7fdf9f7f8f8f4f3f4ebf5fbf6f1f2f8fcf5f2ebe7e4e3e6ee +fffe7276a3a9b6b8ababbfc7be833640535a6f7f8d4c0946362f353e2d21 +61701c1b302e1f231d111011252a2f3b42567788642a1d2a2b2b2d3869ac +cfcabedfdeede1e2e8e0e8eaddb1c4763b55443d4a5b68a690332c382d2d +2e2c282323221e2220222d30364855746d483330363b2f413e9afffaf6f2 +fdfffffffffffffffdfdfdfdfbfbfbfbfdfdfffdfffdfffdfffdfffdfffd +fffffffffffdfbf8f4f3f2f1f2f2f5f1e7dfdedcdbdbd7d8dcd170595355 +554c522f252f353c413d445b4e3e3d43434743312d32211b3b58616a777a +879cadb3b5b3aa9276666f858a8685a59bbf8f213246413f3b3d372b292a +2522140f21446886a7c3d4e1cbab6b7297bbd9f2f9feffffe57a584d2a29 +221a2424231e1c1a1a1d3c3e413b2a252d2b2d2a362f353d2b2930b0fed7 +817d6a6b5c5758595c5e5f5c5c5e62605c595c5f616263615e5d5d5c5e61 +615c5b5b5b595d5d5b5757585b5c5c5a5958ae6a6a22181f1e1e264b5820 +142e1c1e201e331f4f88542d047b9c0019020eb243090995920b3a576ff0 +a43e0c0c0098ae9d420016101b000c0d0f0f0f0f12132b0414c891537727 +1d1d18317ceebf417af1401b262a2d2e231b120c0e111313081a18329271 +2a8d788c9462779baca3c1c6cdd4dadbd3c6ae8368636a7b8c8f977a2738 +393632353735343a3e434e5a6e7a8c9cacafa392bff3df8852423e486170 +818a939ea4a4afc3d9e3e3e3e5e8eadfd6dbe4e6e3e1dce4eae9e6e9f0f0 +ece2d5c6b6afadad9f5200190f010a060822667c9e29261e2226425c5727 +215b6e7a8d948d8fbc7d242418120c080f07110c1b1e252e2d3c4a585132 +2122241a13171537201316245794a8b0b6b0aeae93709653114749324029 +32746b24263e25262725232224261c2118162222263c3143473e39302729 +2225214ee9e1e2e2e1e2e2e2e3e3e3e3e4e4e5e5e5e5e5e5e5e4e4e2e1e1 +e0dedee0e1e1e2e2e4e2e0e0e0e1e2e4e4e5e5e7e6e4e6e4d9cdc2b5aba3 +9fa8b7cfa78faaafb4adaa8b66696560645748494842433f383130251a25 +364b7aa6b4a396795f50483f373543545d6385b7dfeaf0ffe8ffffb695af +afa49e9c9179655b5952432d21272d26150500050f1f1b4173a0c6e8faf8 +fbf2d68e3a4e3a3e463e433f372f28242020251e1d1c1317201f1d1e281b +1a23170b0036e3e4b5b6c3cbc9c6c1bfbebfbdbdbec0c1c0bebdc0c3c5c5 +c5c3c1c0c2c5c6c8c5bfbfc2c0bbbebebebbb8b7babcbdbcbbbac3818440 +363e3b37395c69332b4b3d413b3547325d99664522a0c2213d232ed46931 +2eb5ac214d6880ffba582c311fc3d9c86f2b45434e2f4243454542424444 +57303ef2b77999493b39324892ffd2548cff4e282f2f2d2b1e1408020205 +07090418112e8f7639a18d9a8f413234250d272725282c32383e41322e3e +526d8288957923312e282021201a1a1d2226313c515c69747e7f726495d1 +c1703e302f3c566778818a949ca1adc5dfedf1f3f9fafaece3ebf5f9f6f4 +eef4f7f2edeff1f3f4f1ece4dcd6d1cdb3620326241f2f353e558c97b244 +4e5a7686a4b69951325a696f7f867b7dac731d221c191311171016112025 +2c373546525e55362122231f263f5a9a9e9e9d9cb0d4d0cbd0ccd3d2af84 +a55d174b4c3649333e80732a283e282a2b29262527291f241b192525293e +33454b433f362f322b302d5efaf8fbfaf5f3f3f3f2f3f2f3f1f1f1f1f1f1 +f1f1f1f2f1f2f3f3f3f4f4f4f3f3f2f2f1f2f3f4f4f4f3f3f3f3f3f2f0ee +edebdfd3c7c0c5c6c5c3b6ab571c1a131b1e291e0e202022302f2c3c4548 +4a45372d241f212414071534464c697a94b0cad9dedcdfdecfb8b6cbdddf +eaffe7f9e7641a1f191317201e120707111817111425313635373b4c443f +223b75a6cff1faf7fef6d5882d3c1f1a1c0f12100d0d0d1014171d181a19 +12161f1f1e1f271a192214121b5af9eaaa9c9d9e98969392939494929093 +9493919093969898989694939598999c98929295938e9090908d8a898c8e +92929190d491914a4043413c3f63713a33514445423b4e3968a374512da9 +cd2b4b323de0743937c0b92f5c7890ffc865373a27cae2d175314b475131 +4445454543434548603b4afec486a55546453f569fffe0629aff5b313835 +3532241b100a0c0f11141226213fa48c50baaab7ad604f5243283f3d3c3e +43454648442f2a384e6c838fa28934413e352c2a281f1d1f1f222d3a535c +656c71736b649fe2d98a5948444a5c6879848f9ca7aabad1ebf9fcffffff +fffdf4fbfffffffffcfffffffdfffffffffffaefe7e5ebf4f0b06599a3a5 +bbb7aaaed5ced34f464154607e937d3b22453f37403f333b784f0d23282b +231a190d1915262d364040505d6a60412b2a29252d496aadb5b5b1adbede +d8d6e1e2f0f4d6a9c4762756553f523d4a8e803635482d2d2e2c2b2a2c2e +262b24222e2e324b485a57493f3431393a444575fffff8fafeffffffffff +fffffffffffffffdfdfffffffffffffffffffffffffffffffffffffffdfb +faf8f6f6f6f6f9fafdfef5ebe4dcdcdad8d8d5d18a555750514c503d2634 +35394747435058585a53453b32292729221e3355635f6e727a8b9ca5aaa8 +afab9474677279757c9e8bb2be592c42463e383c3b302b292926160e1d3d +6183a4bed6e6ceac6a678eb4d4f0fafcfffff7aa495230282a1f2524231e +1c19181c282625221a1b242120212c1f1f281d223472ffe896796e675d58 +58595c5f605d5c5c5d5c5a595c5f6161615f5d5c5e5f5e5f5d57595c5c57 +5c5c5e5b58575b5c5b585756ddb6d55f1922242545a8ca67161619211a23 +584d9bf09e4d007ea300281307b8390c0a908000314973bbc34e012108a6 +c64000151a08101d0d0f11110f1012150f2e005c96a56c1c1d1a1b24587e +4b1078f2421f2a2c2d2b19150f0d0e1215161a151a3078610a3872746962 +7aa2b0d1ccced0d5d7d1c3b29264505863798b84929a3038303830292c27 +282d3337434f5b687f97adb6a69299eeffe3ab68362f3f506475899ba19f +acadb4c2d5e3e2dbdecbbfc9dee8e5e0e1e4e6e4e5e8ebe5e1dbd2c4b6ae +b1b57100121a000510091a385ea0930d16282c2f415e3a21546d737f96a4 +acb9c5421f260d131607100b0d05111b28342f3935343a3b333132272110 +043e13061d1a4492b1b7b9b0aaa49c6698691b4b53403634333a33374229 +242525221f202425292c1f1b27262b43363b3c403f2e1e22312c2835e0dd +dadbe2e3e5e5e5e5e5e5e4e4e6e6e6e6e6e6e5e4e4e4e2e2e1e0e1e1e2e2 +e4e4e4e4e1e1e1e2e4e5e5e7e9e9e7e5e8e7ded3c5b6aea5a1a7adc7b78c +aeafb6b2ac99656b625b64593e34302e2a416b6537101419314974a9c2af +a1947d60493f3a36354556657693c3e9faebfaf8fff68ea2aea49ea09780 +6c5f5d55442b1d2025220d0000080f1d1433699bc3e7f5f3f9f7dfad2d4d +3a38494144413a312b25201f26171414141d28242427321f1a241d160005 +e3e3c5aec3c1cbc8c2bebebebfc0c1c1c1c0bfc0c2c5c5c5c4c1bfc0c3c6 +c7c7c2bcbdc3c1babdbfbfbdb9b8babcc0bfbdbcf7d2f27d37403f3e59bb +de7e32353f44373c6f61adffb4680fa3c9244e3728da61342fb09c16445b +85ced9691f432ecef16b20424a38425141434545434244453c592984bccb +903e3d38353b70945e238aff5029312f2c29140f09040305080a16141931 +7d691946776b4a271d27192d2425272e363d3f433c23233b506e837f929c +30362a2d241c1c1615191a1d2733414b5c708790847075cff5d3a1622d26 +354559687a8c9494a5abb6cae3f6f7f0edd8ccd8eff9f6f1f0f3f3efeced +eeecf0f0ece1d7d1d1d38700242e1623353148647ebcaa2d456a8391a2b3 +79446068687185929aaaba3b1c2711191f101a14150a1822313d37413d3a +3d3d3331312c2f364ca9a2a3b39eacdcdbd1d2ccccc5b67aa774224f5543 +3d3c3d443b3d462b2426262320212528292c1f1b27262b45394042444433 +262939343544f2f1f2f3f4f3f2f2f2f2f2f2efefeeefefefefeff1f1f1f1 +f2f2f3f4f3f3f2f2f2f2f2f2f3f3f4f3f3f2f2f2f2f1edeaeae9dfd4c8bf +c4c4c6c4b4ad73232413181c2526091c181a2e2f22252b3130476a612c0d +1f1d130a103141394c668298afcce2e8dfe3e1d4beb9c8ddefe4fcf3fbb9 +27222216162021140808131b1a11132231362e2f384d46401f33689ccaef +f9f6fffbe0a9243e2318201213100d0c0c10141620141113131e27232225 +2d1c17231c1e1624fbf1c39da29399969393959494929494949392939598 +98989794929396999a9a958f9096948d8f91918f8b8a8c8e9392908fffe0 +ff884148464360c2e584363842483d41776ab7ffc1731aacd42f5b4537e6 +693c38bba722526993dce6742a4d37d6f87227474e3a434f3f4143434143 +45494260328ec7d69c4a484342497ca16c3198ff5b333b36322e18130d09 +0b0e111624222943917e3060958a6a473c4438463b383a40484b4a4a3d21 +20374c6c81839ca83c43383b3026261c1b1b1d1e2632444d5a697c837a6e +7fe1ffeebc7e483b404b5f6f81939d9cadb6c2d7f0ffffffffe9dfebffff +fffffffffffffefffffefffffbefe8e7f7ffd25992a795a7b9aaa8afb9e3 +bc2c334e606b7f925c2c4a4b3a343f4850698c1e132b1c2528151b131810 +1e283846424c4a484c4a3d39373238415ab9b2b2c2adb7e7e9e0e6e2e7e4 +d99bc48a345b614c47474950484b52372c2b2b2825262a2d313429253130 +35524c54504d4736293146474857fff8f2f5ffffffffffffffffffffffff +fffefefefffffffffffffffffffffffffffffffffdfdfbfbfaf8f8f8fbfc +fbfdfffffbf2e7dcdbd8d8d6ced0a25b6252524c4e4522312f3045453838 +3f423e55786f3a1621201f1f3257685b63707b7f8797a4acaeb3a8927466 +6c7b857a99a1c49d2a39473e3a4143362e2a2a271b101b37597b97b5d0e8 +d6b671698aaed2f1fafbffffffca415535272e222623211d1b19181b2a1f +1a1b19222c28272a33231e2b24292736fff1b681775f5e5b5b5e6162615e +5d5b5d5a5b5a5e5f615f605b5b5a5f605f5f5c56575f5d565b5d5f5d5958 +5a5a5c575754cdb7600814152d3a63c8eb911218161c1d20274b99e0a41b +097eac8c95281aaa33080094760019183a6d3d0f130f25453c1710132108 +0d16131414121012171d1c201d0b01060e1e231c1b2f2e54471c80e7471b +2b2a331d10140a06131c1c1a1e26324900282538615c65829ca8b8cbe0db +d7cebcbaaf9180553a4863707b82879862263b252d375859352926393034 +3f52667294bec2b08fa5d7f2e1cf9f53383c4d697c8693a0a7b3b2a7afc9 +d7d5e3e2dddee4e9e8e5e4e4e5e5e5e5e7e4d9dad5d4c1bcbe810a050200 +000108123e6d8eb64409172e2539525f323e607c7891a493bbce9a1c241d +16120f0e0d0d090c07221a1f4b2e2b39382b2c2d2926350f01310d020f15 +3389a8afb6b3b19850658a7d1a3c5d3f453e453e43462f2723172d271b1f +182226181a242123394c333f4b3f28252a233436292bc5ede7dde3e5e6e6 +e6e6e6e6e5e5e5e4e4e3e3e3e2e6e3d7d5dee4e0e0e0e0e0e0e0e0e2e4e4 +e4e4e5e5e5e5e7e8e7e5e6e5ddd5c6bcb1aca7a5a9b9d2829ebbb3bbb0a9 +6c6d6a6465593e2b281c3f5c3d506518151833415fabd8bfb9ab987f5e42 +31303d363e5c6d78a5d8eff4faf7ffffc77ca894a89a93956d67584c3e2c +1d16191a1000000811100f256497c9e2edf4f7f5dbc84f4d563b39454142 +3e362a221e1e221a0f1a1f171e212428201c26291e170e05a1dae399b3cc +c8c9c1bbb8b9c0c1c0c1c3c2c0bfbfc0c5c1c0c5c4bebcc0c1c5c5bfbdbf +bdb7bebebdbcbcbbbababfbdbbbbf1db8228323148537ae1ffaf343f4044 +3c3b4266b4fbc03929a0d0b2bb4e3ed05b3022b69418302c4e81532a3130 +4a6b6440393f4d353c45444545434142474a48494632282c334043393749 +466c5d3092f751222b272e170c100600080d080a162539560e3930354a2d +1b1f211c1c222a222b323648524645281a305165717e8ba0662739222935 +56562f1f1522151a2b3a3f4870a0ad9c758eccf1ead79d49292b3b55676f +7d8d98aab1aebddef2eef5eee9ebf1f6f5f2f1f1f1f1f1f2f1f2f1f5ebe7 +cfcacd932121222323252b335885a5d16234547b819ab0ae675b66706479 +8d7ea9c3941a26201a161517161610130e2a21265234303e3a2c2b2d2827 +3b2b43a0acb1ada1a9e0d5c7cfccc7ac64769888213f5f3e44404741464c +352b21142c261a1e1723251719232022364c394652452c282d26383d3339 +d6fffff5f4f3f2f2f2f2f2f2f1f1f1f0f0efefeff0f6f3e7e5eef4f2f0f1 +f1f1f1f1f1f0f2f2f2f2f2f2f2f2f1f2f0eeefeee5dbcac1bdc1c7c5beb5 +a52b1d20101c212e08181d203032261f262045603f4e5f172421200c0432 +4a2d36486684a1b8d1e3e9d9dbe3d3b9bdd7e5ebf6f2faeb851d2d0a2217 +1620000a0e151b1d1e26333b32253a47483a22296193cbe9f6fffffadcc4 +4841432014190e0d0e0c0a0d12182019101d231b1d1c1d1e141220272120 +1c18baf1f29699a09492939291908e8e9194969593929293989493989791 +8f939498989290918f8990908f8e8e8d8c8d908f8d8dffe78e333d3c515a +82e6ffb1353e3c4341424b6fbdffcb4434aadcbdc6594adb633829bf9c21 +3835578a5e333b3953746c463d404c32363f3e3f413f3e42494d494b4a39 +2f353c4a504743565278683ba0ff5d2c352e34190b0f07020e1411152535 +4966204d4650674d3c3e3e3632353930373d3f505a4b4b2b1b3051636f7b +8aa2692c442d3742615f39271d2a1c1d2a38404a709eaa9e809edcfffbea +b5613c3b49607075808f9bafb9b8caeffffffffaf7fbffffffffffffffff +fdfbfafbfbfff8f6e9efffdd7f8e9ba1a1a0a39eacc1cfe6622135575c77 +8e8f493c44483139412d5d85700b25251b1511141b1d181b142d272e5c42 +43524f3e39372e2c47394fa9afb4b8aeb7f1ece1e5e2dfc57f90b29e3450 +6e4c524d5450555a43372c1d342e22261d282b1d212b282a415849586251 +3731362f43473d44defffff9fefefefefffffffffffffffffffffffffdff +fff4f2fbfffcfdfbfbfbfbfbf9f9fbfbfbfbfbfbfbfbfbfefffdfffff8f1 +e7ded5d4d4d2cfd0ce605d624f524c4d222d31354445362d342c516b4b59 +6b1d211e261e255d7c5e6267727d828691a2b7aca8a99475738486869296 +b2b76b1b422e473f424c29291f1b191a23354c7093a5cce0e0c088728eaa +d8effdfffffffae56759573125281d1d1c1a1514161c251f1522261e2223 +25271e1d2a322a251f1cc1f7ef85746f5a59616466645b5759595d5a5a57 +59585f595a5d5e56565a5d61615b595d5b555c5c5b5a5a59585658535251 +d25c080e1f2538608195bb2f1700220f1d090d2a3e6820140a3a37354203 +0dc52f0c009879082827244c270a1d190f061e051b1409122b0a13121210 +0d0e131927181721160c120817202619385d5e2d7ae7581728392716130f +0a0e1510192e413839a462a77f9db29e8d99aebbc1cedadad1bec3a2846f +79583f3e53697b858b8f6e333834293df5fbaa4e24332e39344258626e85 +9cacaf969bbad3f0ecbf74523640617d8e96a6aeb1a9a1abbed0e1e6e6e5 +e3e3e5e8e5e5e5e5e4e4e4e1d4e1d1d6cfbab22606000000000116337186 +b4a227151e3137455d54224e727a87a6928ba6cc561618130f0c0c0c0908 +070d081e19224c303a403e2d2021262433160b330d000a14297ea8b1b5b5 +b59e4950808222375d424030374c6450201b2f232e2319201c262a2a2022 +2b262e463e4d6e7249201b22352d2229b3ecdfe0e4e7e7e7e7e7e7e7e5e5 +e5e4e4e4e3e2dde4e1d1cbd4e0e4e0e0e0e0e0e0e0e0e4e5e5e5e5e5e5e5 +e5e7e6e4e4e4ddd5c9bfb4b1aca7a7b5cd9094b5b5bdb1a97a6e6a65615a +462e2e2f424b45748a3c171c29374c89d0ded5c7b299765843383d393f4c +5b6d8da9dae3f3fff8fff99193aca6a39da07b6e5d50402d1d1517180c00 +04080c0f11255f92c4dfe8f1f6f6dfc96a3e583b4045414341382d241e1d +17242a1a121b20221f1f222d36291e2728004fdde1b6aac4c7c8bfb7b4b7 +c0c1bebebfbebcbbbbbcc5c1c1c4c3bebdc0c0c4c3bebdbfbdb8bcbdbdbc +bab9b9b9bcbcbabafa842c303c3f507899b0d8513e254f373c2428475a86 +3e342a5c5b59682933ed5a3425ba97233f3b38633e25393a312b442e443d +333c58384041413e3e3e43475142404a3d33372a373c40304e70703f8cf5 +601925321e0d0d0b060a0c03081e3d3d44b577b6818b8453281e22232426 +24262d3250473d384f38252a415b7282909872343732283ff9ffac4b181f +1220222d31374b6c8c9d998293c1e5ffedb56640232b4966788293a2acac +adbdd5e7f2f3f2f1efeff0f3f0f1f1f1f2f3f3f4f0fee5e3d5c1ba351d1e +22292726374d8296c7bd4b47648697a6b69e5167736c718d797696c15217 +1b181311121212120f161128212953363f45402e1f212525352d49a3b2b2 +ada3a9ddd5c8cdcbc5ad59608f8d283a5e413e2e364e6656261e2d202b20 +161f1b2729291f1f28232844445675784c221b2238322b36c4fff6f7f5f4 +f4f4f4f4f3f3f1f1f1f0f0f0efefedf4f1e1dbe4f1f5f1f1f1f1f1f1f1f1 +f3f2f2f2f2f2f1f1f1f3f2f0f0f0e9ddcfc4bec2c8c7c3bbad46191e111a +1b270f1518202c3330242c31464f4872873d26271d0c00163d3a31374a67 +86a2bed1dfdfe1e0d5c5bcbbdddff1ffedf1cd461f221e1b192208090c13 +191b1c2330382d263b43443c282d5b8cc6e6f5fefffce0c865364924201b +0e0f0f0d0c0d111715232b1e171f1f1d131112212e27222f2e0568faf6b9 +939b939191908f8e8c8d909192918f8e8e8f989494979691909393969590 +8f918f8a8e8f8f8e8c8b8b8c8e8b8989ff90383c4a4c5c82a3b7dc523d21 +4a36412d314f6590493f3566676573343ef7633c2ec39f2a47423f69462e +44433b344d34483f3138512e39393b3b3b3e45475041424e443a4034444a +4d3e5b7e7c4b98ff6b25303a23100d0a050b0f0a102b4e5056c788c998a5 +a172483b3c3835353332383b574c413d533d282b415a6d7d8a9373383f3d +364cffffb85422281e26202a343e4f6f8da2a58ea0cbefffffce7f56363a +566e7b8495a4b2b5b9cbe7f7fcfbfefdfdfffffffffffffdfbfaf8f8f3ff +eef4f5effb8a85919da59d98a2aacac9e7c8412c405d7183967d2f40493b +374a27234b89350f201e120a080e1b1e1a1d162a242f5d44535b57432f2b +2b2a423b54a7aeb0b4b1b6eff2e7e5e2dcc47277a6a13e4d70514c3c445b +7564362d3a2b36291f27232c31312728312e3451546785865b2e272c3f38 +323ccbfffcfdfdfdfdfdfdfdfffffffffffefffffffffafffeeee8f1fbff +fbfbf9f9f9f9f8f8fafafbfbfbfbfdfdfdfffffefefef7f0e9e1d7d4d4d2 +d1d1d4795a615051484929292e333e453d2f393d515a517d90422323211d +1c4173766d686b72797f8898aeb1b0ac9c88786f847e8c9f9bb1a0332c43 +44494a5233291d1b1a1b223046698aa2c9dbdfc9987e8da6d5eefdffffff +fce8834e5e362f291d1c1b171515181b1a282f211a2225241f1e1f2d3b32 +2b322a036ffff9b0746d5a59606565625a5455565756545353545d59595c +5b56555a5c62615c5b5d5b565a5b5b5a5857575553504f4e570901200c29 +293a4241440b131e2a1a291923693e3b041a1f190007130e1acd1f060090 +6c0524232c472f191e1216240600171f1908160c13131210101115180a25 +103c9c7c26251d212a40607f755587eb681b2c370d10140b0916180b1d45 +6c31079da3ac4b898b82869cb6c1c3cac5d3cbb0b586696f7367523f465f +78828b847341303b223bdfeca9623c3726342c2f42504e547094cbc4bba4 +97c3f6f9e6ac69423d4a5f708992a3aea8a0aabed1dce7eae5e1e3e7e4e4 +e4e4e4e4e2e1ddd9d6d6cbcb510005000003030b2f59919bcd760820232f +424b5f2c0d5a807590ae918eb4b82521241d1713120f0e0d08100b1a1723 +472e424b58411710232526140b2d120008142273a8b5b4b4b4a14d3c7b8d +2f2c56422c3244608365231d1f1c23191824262f313d2c243228223a4b4f +6a6d3c101c3d34211d2493ecd9e3e4e6e6e6e6e6e6e6e4e4e4e4e3e3e3e2 +c2d3e0ddd8dbe0e1dfdfdfdfdfdfdfe0e4e4e4e4e4e4e4e4e5e6e5e3e4e4 +ded6cbc0b4b0aaa6a6b4d1b18bb3b6bfb0a7876c68675c5d503028302d24 +1f3e4c161725233d567bccf5ece1ccb6997d6750403f454a59707d7faed4 +e1fcf3ffffc886b5a3a7a3a1896d675a4c38282021200900080409141624 +5a8bbddbe7f0f7f7ddcc9032533b43424043423c3128211d222d4232456a +46212219203c4f4750724d0507dbe6d69dbdc5c4bbb4b2b5bec0c2c1c1bf +bdbcbdbec3c1c1c4c3bfbec0bdc0c0bdbcbebcb9b8bbbdbcb8b6b6b8bbb8 +b5b47d2f254028434150585a602a3746544246313b845957223a3f3b1e2b +393442f54a2e1fb28a203d3a405e45343a3238492c213e46433240394040 +413e3e3f424636513c68c5a34b4539383d516d887c5e97f9701d262d0307 +0e0707141301103d6e3d16aeafae3b62482811162226272a20343d365035 +2b3d4b453529324f6d7d8d8a74402f39213de3f0ab6132260c1d1c1b1e27 +2e3b6084b1acafa4a4cff3eddca25d352c384e5f7a879dadaca9b6ccdee9 +f3f6f1edeef2f1f1f2f2f2f3f4f4faf5eae5d6d55b0e2020262c292e4c70 +a1a9e09330586d87a2acb6723a7080667c987f7da8ae1f20241f1b181718 +1616141d1825212a4b3147505a4216102224282a4798b2b0aba6a4d4d7cc +cccac4b05d4c8a9a352f57412a304362856b29201d181f1716242632313d +2c2230261e39515871733f121c3d37262631a4fff0faf5f5f5f5f5f5f4f4 +f2f2f2f2f1f1f1f0d2e5f2efeaedf2f3f1f1f2f2f2f2f2f1f3f3f2f2f2f2 +f2f2f3f4f3f1f2f2ece1d2c7c0c3c8c6c3bcb56b151e131c1b261b10141f +2534382424323128223c4917232e1d1d14153f4d332f344967839eb5cfe1 +e5dedad5c2abc6dfe7fbebf3fb851329151a191d0e000b121717181d2831 +26283d3f42422d2c5685bfe2f4fdfffddecb8b2a46262319100f100e0d0e +10141d2c43364a6e451c160b10304745547a53111ef6f9d98896928f8f8e +8d8c8b8c94949492908f909196949497969291939092928f8e908e8b8a8d +8f8e8a88888b8c8a86868a3c334d36504d5b6361642c374552424e3d478f +64622d454a452a37443f4eff533628bb922744424966503d453d44523528 +454b42303c323b3b3b3b3c3f454635503d6bcbaa545247484c617d998c6d +a4ff7b2932360b0a100808151709194a83552dc2c5c3557d67442e313838 +343631464d41583b2e404c46372b334f6b798886764537442f4aeffbb769 +3b2e17231c1a222d313e6187bcb9bbaeaddbfffff5bb73473c4456657f8b +a1b3b5b2c2d7e7f1fffffffdfffffffffffdfbfaf8f8f8f6f3f8f6ffa266 +87939da09692aac0dfd6fe9b273d4a5f7d89944e13424e2d3d4f2b2b5e79 +071c2e2b1e141117212520251e29233056405b667157261a282a3438529e +b0afb2b3b1e5f3ebe4e1dbc77663a1ad4b426951383e516f9479392f2b26 +2d22212e30393b47362d3b332c47616981814e1e28473e2c2d37abfff6ff +fcfcfcfcfcfcfdfdfdfdfdfdfefefefddff1fefbf6f9fcfdfbfbf9f9f9f9 +f8f8fafafbfbfbfbfdfdfefffffefffff9f3eee4d8d4d3d1d1d1db9d5260 +5251454535252b3338464630323e3c332b47521c212d212c2f3d748a766d +67697277818da3b2b5aaa2997f5e7081859e98acc3681a463b454c4e3a22 +201e1f1e2532456784a4cbd7dacc9d7d889fceeafcfffffffaeba9425a37 +32271e1c1c1917171819233147394d714b2322181d3c54505d7d511126ff +ffd26b6b5d596061615e5653595b5b59575657585d5b5b5e5d59585a595e +5e5b5a5c5a5756595b5a56545454544f4e4b1a002430162e171c2f391a2a +163c191a1a2b2d86401f321b13253d2f0d1624b72213079e700d28272b2e +191420182c5982ab74070f1b1a191212110f10111416072c0c25c3b01324 +1b2b29543796a18a8fee61232c200716110a091619102750a3540d56ba8c +337875859eb8c2bfbec0bac0b0998071666c656d654c4459727a87876a50 +3336242fe6dead73322827312b2734434646506697bcdeca908ac0e8ffed +c48a5033415b727c90a6acabb0b8bcc5d6e3e8e7e5e3e4e4e4e4e4e2e2e0 +e1d1d7d2d48d01100a08050209234f7598b3c0440026272e42535a001966 +8a7c9daab6a9d67a18262118100908090c0c0913101818223a2538496955 +150720261a0d001b140007141b64a6b7b2b4b2a4623578963f1c4a412f47 +505b8d853b221c2429252a33343d353a322b2f2826322e416a7856312a2e +3020231e6becdde3e5e7e7e7e7e7e7e7e5e5e4e4e4e3e3e1c0d1e3e7e6e5 +e3e0e0e0e0e0e0e0e0e0e2e2e4e2e4e2e4e2e6e5e5e2e5e4e0d8cabdb3ad +a7a4a4b0d3d187acb7c1b1a9936c686a5b5d552e38443e3b332b352f1a26 +132b4967b4e5eeecdfcbae927c60413a454755676d6b7ac2d0e6fdffffff +9f9fa1a3a19e91686c6152412f2829250a0007040c1b181a5787b8d9e7ef +f6f7dbd5b33e453e3f414043433e352d241e211e372b52814410231a223f +56545e7e4d1e00adece49cb7c1c2b9b4b1b5bcbec2c1c0bebbbabcbdc1c0 +c0c1c1bfbebebabcbcbbbbbbbab9b6b9bcbbb7b4b5b7bab6b3b03e20454d +32452d3245513549396343403541439e583a4e3931455f53333c4cdf4d3b +2dc08e28403e3f45312f3c384e7da6d19a2e384544433f3f3d3d3e3e4143 +355a3952eed637443540395f3e99a08d9dfc6a232414000b0b050916180d +204ead651d60ba7d0c391c171c282b24242c2c3e3a342d2f2f403f4b4732 +2f47647288896a4e2d332231eae4b1732b1b121c2018141f282e4053799e +cac29791b7daf9e9be824428354f677187a0aaaab1bdc5d2e3eff4f3f1ef +f1f2f2f2f2f3f3f5fbebebe2e29a112527292a282b416988a5c2d6652e65 +7788a4b3ae3f4378856d8b99a79ecd7211221f1a141314171a1c1d262226 +21293e283d4e6b5717071f251c233982b0afaaa8a1cad8d0cacac4b47447 +88a2451f4b402c454f5d908b42281b2227252c353841393e342d2f282431 +344a717e59332a2e33252c2b7cfff4faf6f6f6f6f6f6f5f5f3f3f2f2f2f1 +f1f1d0e3f5f9f8f7f5f2f2f2f3f3f3f3f3f3f3f3f2f3f2f3f2f3f4f6f3f2 +f3f4eee5d4c8bfbfc4c4c1bbbb92171d19201c26250e1321203239203244 +403f362b332f1f2b111518113643302727354b637c98bbd6dedbdbddcdb4 +abe0dfe9f5f1f4ca33191a1b1c1c18000e141819161c252e22283c3d4349 +2f225381bae0f4fcfffddcd4b038392b201b121111100f0f10111a1c382f +5685430b170c123350526285532905c5fde68b9493908d8b8b8b8b8c9494 +93918e8d8f9094939394949291918c8e8e8d8d8d8c8b888b8e8d89868789 +8d8984834c2e545d40553b3f525b3c4c3b6242413e4e50aa64455a443c50 +6b5f3e4758eb564536ca98314a46484d3b3a48435a89b2daa3353a444241 +3c3c3c3b3e414446355a3c55f4df43514451497150aab29ca8ff732d2f1e +04110f090b181d14285cc6813779d29427543a3238413e34303842565044 +3733323f3e4a47332e47637083866a53373e2f3ef6f0bc7b33241b211e15 +17232a2e405583aad5cd9f9bcaf1ffffd899583843596f778ca4afb0b6c3 +ccdaecfbfffffffffffffffdfbfafaf8f8ecf4f9ffd15c808f9a9c958d99 +b6cadae9ed6c234a54627e8e8a1915444b2c434b524c884300232d291d14 +141a272c282d2629262f49375164826c2613252b28304487afafb1b4acd9 +f3eee2e1dacb8c5f9fb85b325f523d535d6a9f995236292f35313841434c +444940393b34323f445b818c683f36383a2b333183fffafffdfdfdfdfdfd +fefefcfefdfdfffefefeddeffffffffffffcfcfcfafafafaf9f9fafafbfb +fbfbfdfdfffffffffffffbf6efe4d7d3d2cfcfcfdfc1525d545446464026 +2a353443482d3e504c4a3f353e37222e16222e34667f766e6565676b747f +94a6afa9a8a38d6b5988828ea0a3ae9c31313a43494c431d262424242934 +466782a2cad5dcd39f73859bc9e8fcfffffff8f4cd524f3e302a1f1d1d1d +1c19191821213c325988491223191f3f5c5d6b8b532b10d1ffe1716c625d +5e5f5e5b5351595b5a58555456575b5a5a5b5b59585a585a5a5959595857 +54575a595552535556504e4a380d180a2121133d3d3e2411191917171231 +223f35163a270f46b88d27193fd2231b12ae7613292b33412c15201a1535 +5e9d7813130b091c110e0d0e0f1112121b0f0a0584a91e281b2f30473be8 +f57b87f3531c1f0f121711100b0d151a2940572a161d796c5a7c97a7b9c5 +c2bdc0c1b2a69289486161555d6e6e5745516a7786935d5c412e2e255961 +756f2a2b301c292c393e3f414345697bafe1d1a7a1b3cfe5f6e0a161413b +5867798a9aadc1cbbab9c0d0e1eae8e4e4e4e2e2e2e2e2e0dad9d9dabd0e +0c110608030017467389a1d0921e0c272f374662540046769193afb2d3d1 +c9311e222014090100040a0d060e11161c222f25333a544d1e1529271c12 +0009180206101653a1b7b0b6b3a6732e6f924e10454c2e444a59928a350f +272f2727302d2c35382b2d2f28282f2b373d443c333b3f302a27311a47e2 +e7e0e5e7e7e7e7e7e7e7e5e5e5e4e4e4e3e1e3e4e3dfdee1e2e0e0e0e0e0 +e0e0e0e0e1e1e2e1e2e1e2e1e4e3e3e0e3e3dfd8cbbeb2ada8a3a2adcbe0 +86a1b3bdb2ab9c726b6a5c5a522c3b4b3d3e40313640252f171c2f4d98cf +e5efeddec0a38e6f443340464a5058635992c1dff9fcf8ffda85a29a9b95 +9268645c4e40312929260d0106030f21150d5683b5d8e7eef4f6daddca68 +384339444145433f38302921201c341b1f3f1c14191c2334403422221f1f +005beff2b2a6bbbdb7b4b3b4bbbdb9b9b9b7b5b4b5b6bcbebebdbdbdbcbb +b7b7b8b9b9b7b7b7b3b7b9b9b5b3b2b3bab4b1ac592c35253b3829505356 +3f2e3a3f3f3a284334524b2d54432c66dab14d3f67fa4b4338d0942e4141 +495744303c3a375982c19e393a3232453b3a393a3b3c3d3f4b3f3a32afd1 +424835423d4e3ce5ed7a94ff5c1c1702050a070b0a10181a2946693f241e +69461a242422262c29262e3d41453c3e0a2e372f3a4d4f3b2d3d5a6d8292 +59573a282a245f697c7327201f0b21211a1b222c312f465594d1d0a693a1 +c9e5f6de9d5c3a35505d6f7f8fa3b7c5bfc3cdddedf6f6f2f2f2f2f3f3f3 +f3f5f3f1ecebce20222b272c272335618799aedfac44426d8597aac0a42a +688188819ea6c9cac32c161d1d191514182024292229262825293329383f +594f201528261f262e6aaeaea9a8a0bed7d2caccc5b885407f9e5615464b +2b41495b95903c162931292b3633343d403333352c2a2e2d3e464b42363d +3f302d2c3a2758f7fef7f6f6f6f6f6f6f6f6f4f3f3f2f2f2f1f2f3f6f5f1 +f0f3f4f2f2f2f3f3f3f3f3f3f4f4f3f4f3f4f3f3f5f5f3f2f3f5efe8d9cc +c0bfc4c3c2bcbaa7211b1b201d252b10111f1e2e331a33493f424231343f +242e16100e0e2f3e2e2728303d4d6583aac3cfd6d8d9d4ccaac7dae5f3ed +e9f57e0f2b23242226050f1518171519212b2428393c464c2c15547fb7df +f4fbfdfcdcdcc7622f321e1f151210110f100f101617331c23401b0f0f10 +15283a3226292428046efff7a388928f8c8b8a8a8a8b8b8c8c8a88878889 +8f91919090908f8e89898a8b8b89898985898b8b878584858c8983816a3e +45364a48375e606048343f40413e33514260593b614f3a73e6bd5a4c73ff +574d41da9e374b4c5462503b4845436790cfa942413734473a393a3d3e42 +43424b3f3c35b5d94e5544534e6150f8ff8a9dff6526220c0e130f110f15 +1d223154815c413a835f343d413d40413b35384b5d6657521733382c3648 +4c382b3c5a6c7f905a5b423438326d74867c302827111f1f1f21242b2f31 +4d609ddbd6aea4b7e3fffff6b4704c435b66778593a4b8c7c5ccd6e6f9ff +fffffffffffdfbfafaf8f0f3fafffa60758c929c95878ba8c4ccd8febd45 +34516271849b7d00354545374e52727a85040b24322d211a1c2431372d30 +2b2c2a2f3e354b536f642f212e2c28313b71afaeb0b3abcef1efe1e3dbce +9d5896b46b285a5d3c52596aa6a04c26383e3837423f3f484b3e3f413837 +3e3c4e575b5045494b3a3432412d5ffcfffdfdfbfbfbfbfbfdfdfbfcfcfb +fdfdfcfcfffffffdfcfffefcfcfcfafafafaf9f9fafafbfbfbfbfdfdffff +fffefffffcf8f3e7dad3d2cecfcfdcd459585453454647292a34333f4328 +40544b4d4e3b3f472c341c1c212b5a75716f6d6b67666d778592a1a5a6a1 +96875d75868f9b9894b76f1b3f3f4a4b4a24262525252b34466582a1c6d3 +dfd79c668598c6e7fcfffffff5fbe47c44442f3024211f1e1d1b1a181e1d +3820264421161a1c2234463d2f2f282d127cfff38e66665e5f5d5c585050 +505353514f4e4f5056585857575756575557585959575757535759595553 +525158524f4a9abeaa31242016242c45330a151222221d2d301f92854733 +061cb39a170031ce1c1913b8771228314c9d9c441d16236697480e001f18 +1309131211101214141313070e0c94c63231182049454dd6ff8b86f34f15 +1310240912170e0a151f262a19074b7a6b6a8093a5abb2babbbabbb1a4a2 +ac9e353f54515f6c71604a49627b7e8f4c55522b311d2a00093f201f2926 +1f33433b30363d4059667aa1c9dacaa89fb6e1fcf6c0754131435b6f849e +bdccc1b8b8c0d1e0e6e6e4e4e2e2e2e2e1e1e1dee9de4f0010090101020d +356c929db6ce55091324344150653d05697c92a7bcc5d4e48f1e3431291c +0b000000000001040a1420262d333e3136372d33392e282100021e05030d +12439ab4aeb9b2a775245f845f114862544936293f3f2f4b30311d2f4d47 +444d51362c3436322d293b3a3b3941534f32282c3c1c2dc7eedee4e6e6e6 +e6e6e6e6e6e5e5e5e4e4e4e2e6e3e0dfe1e2e0dde1e1e1e1e1e1e1e1e1e1 +e1e1e1e1e1e1e2e2e1dfe1e4dfd8cfc2b6b0aaa7a4aec1de9296aab7b1ac +a27c6d6a5f5a4e32404f36334d575a53191c2325273f72a8d1e1e7dec1a6 +93764634414b48444a5c5861aadee8f5feffff7f8981807c795f524b4134 +2721242111020604101e0f09547eb0d6e6edf2f7d8d4ca953641373e4345 +433f3a342d251f1f342315190c1c1a22202128210c00071d041de2fcd08e +b2b6b5b3b2b3b6b8b3b4b6b5b3b2b2b3b7babbb8b8babab6b5b3b3b6b6b2 +b2b4b1b2b3b4b3b1aeacb4b0aca9b7dbc54b3b352937425d4b2736354843 +303d4031a59b5e4d223cd5be3d2659f6443f37da952e404762b5b45e3933 +4387b86c3225453e3a323c3b3a3b3d3f3f3e40373e39bfee58513436564c +4ed3fb8a93ff56140903140008120f0d1a2429322b18506d442c26211c15 +161e262d35405062756e0c1c3434414b50412e314e6d768b434c48232d1c +300111461f181c191b29281b18222b2830385487bed0b59597b6e1fcf4be +743e2a3b5164758eabc0c4c2c2cdddecf2f4f2f2f3f3f3f3f4f4f6f2fbf2 +62142b262325252c4f80a0aac1e0733652738fa6b5c1883b87838592acba +cee28c1b2d2b292622212327292b2c2927292b2b2f3541363b3c3033382d +2b33305baeada6a7a2b4d4d2c8cfc7bc89366f90671649615148352b4246 +365233342035545050595d42353b3c35302c4243423f44554f322b314529 +3edcfff6f6f5f5f5f5f5f5f5f5f4f3f3f2f2f2f3f8f5f2f1f3f4f2eff3f3 +f4f4f4f4f4f4f4f4f4f4f4f4f3f3f4f4f3f1f3f6f1e9e1d2c4c2c4c5c4c1 +b6af3519191d1c222d15101b1e292c1e364c38374f595a511316211f1515 +22323531343b424c5f7d9cb2c3d2d7d8dee3c1abcfeae2eaf8fdc5242d23 +222123110d131716141720272626373c46492611527ab2ddf3fafbfadad3 +ca912e321e1e1815100f10100f1012183222161a0b1710161215221f0f06 +0c26142ff0ffc4768f8d8c8b8a88888784878988868585868a8d8e8b8b8d +8d898785858888848486838485868583807e8985817ec9edd65c4b463846 +5069572f3d394b4a3e4c4f3fb4a96c5a3049e1ca4a3365ff504c43e4a039 +4c526dbfc06b45415298c97c40304e474138403f3e41434545444337403e +c6f6635e4244675e60e4ff989bff5e1c120d1e0510181412202a323f4334 +6d875f45403b36302e34393d4052728794861a22353039444b3e2b314f6d +7488445151303b2a3e0c1c4e272025201a282d201821292838435f90c6d9 +c4a8afd0fbffffd4864f3a485a6a788fabc2c9cbccd6e9f8fefffffffdfd +fbfbfbfaf9f9ffff9a5d868e91958d879abbcdcde1f67d3341566c7e8d98 +5d094b3f373f55617a9755002739413f322a292d3638332f2b2e31313b42 +544a51503f3f3e33343d3c63afaeadb1abc2eceedfe4dcd1a14e86a67c2a +5d736258453a5356466244432f45645f5e676b50444b4c443f3d5454524d +53615b3c32374c2f45e1fffafafafafafafafcfcfcfbfcfcfdfdfdfdffff +fefdfffffcf9fdfdfbfbfbfbfafafafafbfbfbfbfdfdfefefffdfffffdf9 +f9ecded6d3d0d1d2d6d96a53504f44444a322b31343c3c2a415744425b65 +645c1f202c2b252d4762727275746d686c76798397a7a9a6a4a17c608198 +8c8e96b0a62132333c4040291f20212228324561839ec2d1ded496628395 +c1e5fbfffffff3f2e6aa4345312d2925211d1e1c1b191b1f37271a1e111e +1b221f212e2a180e122f233dfbffb65a69615e5a57534d4c4c4e524f4f4c +4e4d535457525454565253535356565252545152535453514e4c56524e4b +72bb9d321b302f2c4fa38a5f27271d2316285144d7ee8b34180ba7b11a16 +38d5262019c67f182c4072c9b6421a1d43b7363b3c120c15281613100e10 +1315141203150e117e8712150c2257422862b9aa7bbd310e1219200c1519 +12121f242526213587b676788aa2bac1c3c2bbb3b1a4a3a4c8ad52284356 +6167716f56435475757d444360372d212a08093d37291616162d423e3234 +3a40405f615c80bfe0d8a099a9d3fcfdd2a4544640546e839fb0b9b8bec2 +c7cdd8e1e4e4e2e2e1e1e1e1e8dfe2950021000807000930628ba4b2c8a7 +220e162934425957173a748297b5c5d3d1cb583447372316050000000000 +0400031121262d443d332d2f3536352e2b2c0b042706010d0d3593b2adb9 +b2a97a24577972164a6f2b364945423525393735225a9c9a92958d703d3d +61492229412824313330312e282b3e2220a2eddee3e4e4e4e4e4e4e4e4e4 +e3e3e3e2e2e2d8dbe0e5e6e3e0dee1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1 +e1e1e0dee0e3e0d8cfc1b7b0aca7a4abbcd9a38ea5b2b3ada7876e67645b +4e3f222b18264e62696632091b221d2d3a63949fa4a18e7968513b34434b +463f3f4b575c87c7e3f0fdffff92555954574d4e3a352f251a161a1b1003 +06040b150c104e77a8d1e5ecf3f8dfc5c7b9474140394345413e3b383029 +1c1a2124201a141621261f1b24252021171f1d0daffbea92a7adb0b1b1b0 +b1b0acb0b3b5b3b1b0b0b2b6b7b4b4b7b7b2b3b0b0b3b3aeadb0adababad +b0afa9a4aba8a5a48dd5b7493043423f65bba27b454a424429386155eaff +a24e342bc8d5403c5ffc4b463de89d3447588ae1cd5c363a63d8575c5d36 +30394c3c393836383b3d3c3b2f41393ca9b23a392c3c6a4f3168bbae88cb +360b06090e000b141215232b292c2d3b7d9638201518201f232a30363e4a +6f85ae9640152f3f44464f4e38293e656b753836532c2920301213463a26 +0c0d142429211c222724112a33396db0c8c19594a6d0fafbd0a2513f3848 +5f738ba1bac1c7ccd1dae5edf2f2f3f3f3f3f3f3faf0f5aa103b1c282821 +294a7599aeb9d3ba45415e7f98a8bbae5b67898387a0b4c8cecc5a344133 +292a2f33373a38353f30292a2e2b2d43403834363838322b2e3d3554aeaa +a4aba6aed1d0c7d2c8be8e3667887a1b4d702a354847453c2c403d382861 +a8a7a2a59d804a49684f252f48312b373632312e2b30472f31b7fff6f6f6 +f6f6f6f6f6f6f5f5f4f4f4f3f3f3eaedf2f7f8f5f2f0f3f3f4f4f4f4f4f4 +f4f4f4f4f4f4f3f3f3f3f2f0f2f5f2ebe3d5c5c1c3c3c4c2b9b3511b1b1c +1e212e1c0e131e2627271425182950646b642700171e151608162924242c +353b485e829ab1c5d3dbe3e6d8b8b6d5dee7fff6ed5a1b1d161a141b1016 +1b1a181b232a2523353a414023184c73abdaf2f9fafcdfc4c7b742342b1d +1c16110e0f0f0f0f0b101c22211b1313171a110f1c2323251b27291abbff +e3808a8a8a89888583827f8385888584828384898987868a898485828285 +85807f827f7d7d7f82817b767f7e7b7a9ee6c85b4154534e73c7ae864f50 +484b37487165f9ffb25d4238d7e34d496eff5b534bf4a83f526496eddb69 +444a72e96a6f70463e47584742403e404345444132443f42b0b944453749 +795f4076cab98ece3c1210141a07141b1a1c2c33343a435395ad4f382f31 +3a373b4145484f6396afd1b0501b2e393c3d4649362a406669733a3d5d3a +372e3e1c1d4d412d141217272f261e20232319343d4073b7d5d1a6a8bbe5 +ffffe5b7644f455266768ca4bfc8d0d5dbe3eef9fdfdfdfdfdfdfdfdffff +ffd9539082979b928e9fb7cad1d3e7c8473a4a62748192832c3046373045 +586f7d882b1c434443433f3b3c3f414045342c2e34313951514b47484744 +39323545415fb2acadb6acb9e8ecdee6ddd3a64e7e9d8f2f60823a455856 +564c3e504d493873b8b7b2b5ad905a597a5f363f5a423b45453e3d383236 +4e3538bcfffafaf8f8f8fafafafafcfcfbfbfcfbfbfdf6f9fefffffffcfa +fdfdfbfbfbfbfafafafafbfbfbfbfdfdfdfdfefcfefffefafbeedfd5d3cf +d1d2d6da82524f4c46444f3a2a2b363a3935212f22325c707771370c252c +24282338555354565550535564728a9ea9acaeac9875708a8a88949bbc43 +101d232c272c1a1c1d2026314461809abfced9cb93697e8ebae1faffffff +f9e3e3cf58463c2c2e26211e1e1d1a1a15182227251f191a22261e1b292e +2c2e2632392ac7ffd96a6a625d56544e4847484c5151514d4e4c50525550 +5253555053505053534e4d504d4b4b4d504f49444e4c4948a65b00182e23 +173a78ede497391e1d251338746ab8eee1480e13c0d618213adb211a11bf +74091e38bfbd6002141814748a8a56101d0f06090a0706060a0c0b080305 +070b0c0e172719323f505b8c78475f6d0006171b141e1618161d2c2d2c33 +3285a6756293a4b2b7c1c4bbabaabbc1b69bb4987e2e38475d61727f6643 +4a6b767048396e4a302fa3cc99481b2b221f12203741403d383a4b5b5d5e +5d6aa2dfdeb8999fc6edf6edc075373854698396a4b3c7ccc5c2ccd6e5e4 +e4e2e2e1e1e1dde7c32005040b0112051952859badbfd07d0a1e1b343841 +604c006a768da1c5d0dcd9a33d42462322170c050506080f0700000d2124 +2b4e2b3334312e221d23283015082e09010d0b2c8dadacbbb1a9832b5977 +7e194874443d3829385447392a261d75d3d2c0b9c6ad55498a5f142c4d3f +659a8c49201c2a273c271b87e9dfe2e3e3e3e3e3e3e3e4e4e4e3e3e2e2e2 +e4e3e2dedad9e0e8e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1dfdde0e3 +e0d8cec0b5b1aca6a1a7bbd4af8da2b0b6b0ab8f7265675e514d342d223e +564c5360912822201c2d2444484b4c4c44372a1a2a2f4347424035344f76 +669fe9eaefefffac2d3c343c2c432b29241d1413181a0f030804050c0b19 +4971a3cfe4ecf3faeec1ced46146513d4443403e3c39342d2d2c24241f1a +27281e24232428211a21241b260f77f6fcac9da5acb1b0b0adaba4a8adb0 +afadabaaafb4b5b1b1b5b5b0b2aeaeb2b1abaaaeaba7a5a8adada59ca3a1 +a0a1bd72152d41362a508effffb3574040432648847bcbfff8622a33e0fa +3c4761ff463e32e091273a53d7d57a1c2f333193a9aa76313e332a2d2e2d +2c2e323433312a2c30343739424f3f545b686d9a85526d7701010b0b020e +0c1315202f302c33317a873e0f241a19131d2a3031405f809d95b2957b29 +2d344241505c472631586865392a5e3e2a2ea9d6a6521f2a1b18111a2026 +2c2b251a161d2834445788c7cead8e96c2eaf4ebbd71302d475a7089a4ba +ced5ceccd6e3f2f2f2f3f3f3f3f3ecf6d4341e202b223323336794a4b3c6 +de96335b6a93a0aabf9b3a8e838890aebbcdd7a6414341212e374758676f +6f6c52392c2c30282b4c2c383c3a34241a21293f3750ada6a4b1aaabcfcf +c6d4cbbf993f6b86861f4a75433c3a2c3e5b5042302c247de0e1d1ccd8be +645692661a3254486ca08f4b201c2d2c45342c9cfff7f5f5f5f5f5f5f5f5 +f5f5f5f4f4f3f3f3f6f5f4f0ecebf2faf3f3f4f4f4f4f4f4f4f4f4f4f4f4 +f3f3f2f3f1eff2f5f2ebe4d4c4bdbfc0c1c1bfb967221d1e1f232e200b0c +1d25263122252041584e5560861d1c1c182007160700000710171d29607f +9ab0c6d8e1dddfdf9eb4ebe6f3effb8e0d1a10180b25141b1e1e1c20272e +2422363b3b372221476da6d8f1f9fafcebbecbd25c3d40221f18110e0d0f +0e0f191f1a1f1e1b262514181518201e1d2528212f1b81fbf8a088878787 +8583807e777a7f82817f7d7c818687838387878284808084837d7c807d79 +777a7f7f777077777677cf84273e52473b5e9cffffbe6149464d3558948b +daffff713840efff4a5470ff564e43ef9f32465ee3e1872b404443a7bebf +8b4451433a3b3c3837363a3c3b372f31363a3e404957485d667277a38e58 +6e78060815160e19151a1d273639363f418b99512137312e2b3542474a57 +769ec7c3d7b08c2f2b2d373647564528345a67633c31694c383cb7e2af5b +2832231f161e282b2d29211b1e28323e4a5d95d5dbbb9ea7d3fdffffd282 +403b51617690acc2d8ded7d5e0ecfbfdfdfdfdfdfdffffffff6f6e819a96 +a79194b6cfcdcdd6e99a2f4c54737b81956e07513b36344e607a8d6d1e35 +4836464e555e6a727673573a2f2f3531375a3e4b4f4b423021262e46435c +b3abadbaaeb4e5eadde8dcd4b058839d9d355f89554c493b4e6b6153403c +3690f1f4e3ddecd07767a5782a4266597cae9e572c2634324c3a33a1fffb +f9f7f7f7f9f9f9f9fcfcfcfbfcfbfbfdfffffffcf8f7fcfffdfdfbfbfbfb +fafafafafbfbfbfbfdfdfcfdfdfbfefffefafbeddbd3cecdced0dadc9556 +524d4a46504029283438373f2e302b4a645a616c972d2a2a26311b30251f +1f2326242422465c7a8fa1b1b1a6a4a45f6f9885848bbe68000e1222162f +1a1b1e22273346637d96bdccd1c292727988b5dff9ffffffffdde8ea7250 +52333029231e1d1d1b1924282225231f2c2c1f2422242d292630342f402b +8dfff5926d635b55504a454340464b4e4d4b49484d52534f4f53534e524e +4e52514b4a4e4b4745484d4d453f48474647655f7732281428379deaa526 +081b251c0b4c834d568db82b00185445000054c1161e20bb741414142a28 +2634303131233036413f515e4a6e6a67767172797f8d8f919191908e9090 +9197989296a1a39f512b0c0f1817171f191c22282e33363b464d596b879f +b2bac2c1baaea5a9b9bdad74a4c9951a3b41536e6d6f7d5f4459695a4837 +5a61281dc6f6d18e3d421c1e1821303c413a3e5a5a575451505b5399bdcd +bc928bbaebfae9d79f5530446b7e828fb1d4e0d5c8c4d1e1e4e4dbdeeddd +ebec4c000f020608090e438d8eacc0becf32161a2136285c65083c76799a +b9d1e6e5be623e3b1f23180430362120243019000013171c39503839544f +2010201c28250f0022171101062385adaab6aeae9347367e802f3c66461f +3148587c69301b2c1a57c7bfb7b2b8ad612f7b7a1a1e36345498864a161c +2b342819175aecdfe3e3e3e5e8e9e7e5dee6dee9dde0f2d499daeed6ebe3 +e6e1e0d9e5daeddddde3e0dee0e3e2dee0e5d9e1e4dedbdee0dcd1b2b7c0 +b632449eb1cdcd729eaab1ac979e72636d5b5754362337444041485e7625 +1c222a1a27242f2f2e2f2c271d0e162a4349403b34384169868bcee3e9ee +fec54228321e39392c2f251714100f140d0806090b0e1f2f4a72a1cae0eb +f3f7e5c3cbdd792b46434449473f3c3c3a2f2928262f311b1f472f1f1c2b +2f262937703c2e042ae6fec683ac9db7b1aaa7aeafaeaeadadacacacb0af +afb0b1b1aeabacaeafafadacacadaaa6a4a5a8a8a39c9c9da0a37a748c45 +3b273e4db3ffc042263d473d215d946069a2cf451938736922247be83b42 +41dc913230304442404e4b4c4d424f545f5f717f6b928e8b9a97989fa6b4 +b2b4b6b8b9bbbdc0bec3c0b5b5bdbdb35f310b080b06050f0f171f272b2d +2e2e3029211d1d1c19171c232c3341597895a781b2d79e1f37343b50484a +5b412a45594c39284a55221cccffde9844421719171a1b232d2829381e13 +16223246397fa6b8ab827fb2e4f5e6d49b4e28395f748293b5d8e4dcd1ce +dbeef2f5eceffdecf5f95c0d281e27282829589e9ab4c5c6e151485f7b9e +95c5c0506b907d90a5b9ced5ba65433d1c262a3283a6a3aaabaa77402f39 +2820374e393e5c5b28121d1a29322b3c99b0b4aaaea9ccd1c6cfc9c9a95b +488d8b353e67451e324b5d83723921322362d6d0ccc7cdc2723e86832024 +3d3d5b9e894c161c2e393126286ffff7f6f5f5f7fafbf8f6eff7effaeef1 +ffe5a9eafee6fbf3f7f2f1eaf6ebfeeeeef4f3f1f3f6f5f1f2f7ebf3f6f0 +edf0f2efe7c6c3cbc34861b8bbba9214221c1a1a152a06041d1c28342217 +344442454c60721e151b24121912171413191f221e1d3c5f839fb6cbdde4 +d8decaabd7e2eff3f7b934171f0b282a222b271f211f20282326323d3e39 +363a4a6fa4d3edf8faf9e1bcc6d97523372c23221b100d10100e11181b2a +301c1e4427151021272329397342340b32edffc174937a8d847c7a818180 +807f7f7e7e7e828181828383807d7e8081817f7e7e7f7c7876777a7a7570 +707275788b859d564c364c5bc1ffcb4d304650462f6da46f7ab3df542a47 +857932348af74d5252eb9f3d3c3c514f4f5d5c5f6256646c777486927ea2 +9e99a6a2a1a8adbbb8b8bcbdbfc0c2c4c3c6c2b7b7bebeb45f31100f1410 +111a181e262d323739383c352e2a2b2c2b2a323a464f5d7696b8d3aed7f2 +ad23342b2f45404459412d47594b3c2d5461302adaffe7a14c4a1e201d21 +22292e262637261e232c3a4d468aaebdb38c8dc1f6fffbe7ac5e37476b7f +8c9cbee1ede4dad7e4f7fbfdf6f9ffffffff985985899ba19d94b3e6ced8 +dbd1e54c3c4c5f7b6e9a9420354f3139445776887b382c38273940428ba8 +a3aaaeab773f313c2f29445c4b516f6b351e261f2d383748a1b6bdb1b1b2 +e2ebdce3dadac17460a4a14b537b5730445c7095834a31423474e9e4dfda +e2d58651989430344f4e6bac98582226353f382c2f74fffbfaf9f9fbfeff +fffdf7fff7fff8fbffefb6f7fff3fffffffcfbf4fef3fff6f5fbf9f7fafd +fcf8fcfff5fdfffcf9fcfefefcded9dfd4566fc7d4dabe46564c47413b4d +282236313a432e233f4e4e50586d832e252b322128222723222528282218 +2743698496a7b2b2a5a9916a8885818db1891103190d2e2f232a26212a32 +3c5b7998b7cfd5c4a68c7e8cb5dcf5fefffffadde4f28c384a3e34342c22 +1d1f1e191e2223303520244b32201c2c342e33458252441b3ff7ffbb6175 +505b4d413f484d4e4e4d4d4c4c4c504f4f5051514e4b4d4f50504e4d4d4e +4b4745464949443f4145484ba482661f0803040a4e622b01162826212a25 +28436f494531524e646e626891bd0c1918a9a3939d989a948d93918b8985 +7770627968645a6059514554403a3e2130312b20150b050302080a070f1a +1c17211006111e1c18191d21282f363a3f464e5a6b7e96abb8bdb5b0a8aa +aeb6bab2a280af935a132e3c4e686c717a644a5259503f34515e3819c1f1 +cf8434483223131c2d3c3e37426a807060423f584f5b87abc6bc9b90aed4 +fff6e1b472413c50787f92adcedfd7c8cbd4def1e8dae9e6ef7818120a00 +0b0312326b8c9cbbbcc69924141c21373863471d5a8182a1bbdadaefb47b +6b3f191b150020270c0707131100000e1b2035443a36586c431c140e1d22 +130019100700011c7eacacb5aeada55d3c8a8c351e4a382136404e766830 +15261b48c1b9b4b4b5ac6f33738124242b3b5e94865b261b2d31261b1849 +e8e2e7e6e2dfdedfe0e1e6e9dae0e2e2e589149cf4e1e6dfe9e0e9e9f4df +e5dbe3dedddee0e0e1e1e5e6e8e6e6e9f1f1eadcdcd2c4b57d0b156ab0bd +c97a96a5aaaea8b0836c7060595236314135283234382f1c2b1e1a1b2b19 +1d1b1817181a1f1d15263c43424039393c657680a8d4e1ebf8c052302f1b +2c3157787644180a1524160700060c11263e4d719ec7e0ecf4f9e7b7d0d6 +9f3550423840423e3b3d3b3324232330424458824b342322272e4258d3a2 +5c1f00a8f5ee899ca4b5aeadaea9adadadadadacacacaeaeadafb0b0adab +acadaeadacabaaaaaba7a2a2a5a6a4a19c9da0a2ba9879321b191a22667d +471f374a4b4241383e5986605f4d6f6e8592868db6e22f3c39c8c3b0b9b4 +b4aea7adaca6a4a1938e809787847a817a7569786561654651504c453e38 +353534383834363e3c302b1101080e0b080c131a23282b2a2b28231f1b1a +1a1a1a1a181e2c43627d919dab97c6a96c1e2f333a4a4a4c5744303c4a42 +2f2341523018c7fddc913b4b2c1e101518232c252d4341281c0c20433741 +6a8eada58780a2cbf8f1dcb06e3a3549767f92b0d1e3ded1d4deebfff6ea +f7f2f7822826231b29212d4a7b9aa4c1c1d0af4a4f6a85a5a7ca9b5b7d90 +7f93a7c2c1ddb2807344171e2a3481aca6acaaa37d432c372e2431403b3b +63784b1e11091e2c293688a3aca7afa9c9d1c8d0cbcabd724d98963b234d +39223946537f71391c2d2455d0cbcacdcbc28142808a2b2b3244659a895d +261b30362f28295efff9faf8f4f1eff0f1f2f7faebf1f3f3f69a24acfff1 +f4eff7f1f7fafff0f3ecf2efeef1f1f3f2f4f6f8f9f8f6fbfffffaeff1e4 +ccba841b3186c0b4992420181418213613091c1c262e1e243b352a383a3b +31192717121323131c1c1b1b1c1e1e2325436787a5c2d8e0d5e1c6aebddd +e9f0f6b94924210d1d264e7476481e121e3228222a393e3a3d494d6ea1d0 +edf9fbf9deacc9d09b2d432f1b1b170f0c0e0f0d0a1216294045577f432a +17181f2b425ad6a55f2200b0fcf08188828b7f7c817e7f7f7f7f7f7e7e7e +80807f8182827f7d7e7f807f7e7d7c7c7d7974747778767370727577c8a6 +88412a26282e728852294053534b4f474c6796706e5b7f7d96a2969dc6f2 +424f4cdad2bec7c0c1bbb6bebfb9b9b7aba698af9c998f948d8577846e68 +6c4c5655514b423b373635383631333a372c2a13050d181513161c222a2f +333436322a2524242427282b2b33445e809eb3c4d6c1e8c17a222a2a2f40 +41465545333e473f30294b5e3f26d5ffe59a45543625171c21292c232a44 +49342b19284c444c6e90b0ab908bb0dcfffff0c17f4c455981899cb9daec +e6d8dde7f4fffff7ffffffc0737d8a8da1999eaed0dbd3e1d4d9ad3f3d50 +637e7d9d6a28434d323b46626f9b8160684825313b4087aba4a8a9a37d41 +2d39342d3f4f4d4e7588582a1a0f202e344391aab2adb0b0deebdee3dbda +d58d67b2af5137604d344a566690824a2c3d3566e3dfdfe1e0d79555919b +3b3b445575a898693225373c362e3063fffffffcf8f5f6f7f8fafffff3fb +fdfdffa431b9fffefffcfffbfffffff8fcf4f9f6f5f7f9fafafbffffffff +fffffffffffdfff8e1ce962a3d94d7d3c155544c42454a5b37283631373c +2b2e453f3644484a402a36272120301d2221201e1f2123211a31547089a0 +b0b4a6af91707284828cab82200a180d222c5173764b2a253b637c93adca +d5c6ad9b818bb2d9f5fffffff9cce8eab24255422d2d2a211c1e1e1a151c +1f3045495d864e3523232c364c66e7b670310ebbffef766f5c5947424849 +4d4d4d4d4d4c4c4c4e4e4d4f50504d4b4d4e4f4e4d4c4b4b4c4843434647 +45424345484a414652606b897e7c92937b7f918e929296a69191a3918c91 +837d7878735b574f0a1e0b48444d514d4f575447535958566d70667c6e67 +826b809394a835001914141614130d0a080902070a0c151c19140a0d1018 +1f1d1714242730393f4448515c6d7e8ea1afb9babdb6b1b4b7b6b1a6a283 +8c381b1a262b495c6a71736957464748383343564a149ac4bc913d392718 +151b2b3b3b314372988f91682e32464d5b7295ada8999aa6d1f3ffefb77f +5134405c7a8fa8c6d8dcc2c0c9e5e1d6e9edb91a001d0900080c1d4e8a93 +b1bdb7c95118162424394a6326356e8497b7c3e4ede67d5e6e3419220d00 +0b1c0000000a0c0000081f252e3834355d7244161a27212217061e201200 +001474a9adb4afaba4652b808d420942493f5451567c73421b282137b7b4 +b0b5b3aa8236648b35282e3c415145483630312d231e192dd9e3e3e5e4e3 +e2e3e5e7dfe2d4d4e1e0e85a1f99eed8dee0e6d9e1daddd6eaf4f5d2eff2 +f1e5e2e3e5deedd9c7bab8b2b1ada194737253171241abafca878ba0a8b0 +afba91716d655b503c405b57494c423b353c472f2626321b1a1918171a26 +39431d24323a40423f3c3c606c7f8ac3d8ebefba6f483d2f30407f9e8f52 +292528221a0700070e132438486c98c2deecf5fbec9fd6cbc7454b412e36 +3d3b3c3d3a342b29252b3840516c342a1e1a1d2635405e553d2c0075f7f9 +9e85a8b5acafb3a4a9ababacacacacacacabaaacaeaeacaaacacacabaaa9 +a7a6aba6a1a0a2a5a5a49c9da0a254596573819f9697afb199a0b4b3b7b4 +b2bdababbdada7aea29e999c96807c742d3f2a67646d6e6a6b736f626e74 +7270898c82988a86a18ca1b4b5cd5a1f3e373333363636383a3d363c3b3b +3e443d2d1009070d100e0a091a20262a2a2624221a18191918191c1f2f39 +4b6680939b9fb19da54e2f282b243741494e51493a30383a2823344a4213 +a0d0c89e443c21100f111321281f2b4a5443482f0e1e31363d5377908f84 +8998c5eafbebb47c4e313c59798ea7c6dbe1c9c9d1efede4f5f8bf230931 +231e25273462969cb9c4bed86f475a7a90acbac7736886898ea6b0cfd2d2 +7d67783a1423232e77aeacb2afa887492c3533292b32333c6a7f4e1a1422 +232a283686afb7b2aea7c2d1cccfcfcbbe7a3c90994a0e454a4057565b85 +7b4b222f2a44c8c9c9d0ccc3974771943c2f35454857484a363034322c2b +2a42f0faf8f8f7f6f5f6f8f9f1f4e6e6f3f2fa6a2da7fae6eaeef2e7ede8 +eae4f7ffffe1fefffff6f0f4f3effbead5cac6c2bfbfb4a3756f5220295e +c1afa43b1a171118263b1d09141d2427223053554d5248423c3f4528191a +28181b1e201c181c2834182e4a6b90b4cdd7d2e2cdc0afd6e3ebe5a95c32 +2619192c6e92844823202322261f2537403d3b434a6b9eccebf9fcf9df90 +cbc2c2403f301315140f0d0e0e0e0f151521363f50692e20121015233542 +61563c2c017dffff9d7687897b7c887b7d7d7d7e7e7e7e7e7e7d7c7e8080 +7e7c7e7e7e7d7c7b79787d7873727477777670717476626773818eaaa2a0 +b7b9a1a7bab9bdbdbecdbabaccbbb8beb4afaaaca9928e8641523e79737a +7c787981807381898987a1a49ab0a29bb69fb4c5c4d66225443b3637383a +3838393932363533363b33270e0a0a111715131122272e3131302e2a1e1b +1d1f2022272d3f4b617e9db3c1c8d8c0c3633a2b271c2d38424a4f4a3c32 +353729263b544f21aedcd4a74e452b1b191a202a2a1d294b5f50593e1929 +40403f517792938b93a5d3fbfffcc78f63424a628196afcee2e7d1d2dcf9 +f9f1fffffb72619491909a989ab9ded3e0e0d0df6735435d6c818c953f30 +4a463f4e51748b9d5b567a482835303477aba8aeafa785482c383a343640 +434c7a8f5a262028222c324491b7bdb6afaed6eae1e0dcdad59556a9b15f +22585e546a696e968e5c323f3b55dadcdde5e2d7aa5982a54c3f47565865 +5756423a3b3833313147f6fffdfefdfcfcfdfffffbfef0f2fffeff773ab4 +fff3f8fbfef2f9f3f3edffffffe8fffffffef9fcfef9fff4e2d7d3cfcccd +c5b68a82642f376cd6cbcb6a4e4b44475264422a303337372f3b5e60585e +56524c4e53382a28331f2021221f1d24323b15253d587793a7ada5b29a86 +698485919d73341a1e1c213574968850313643567a8da9c7d5c7ab957d8a +aed5f3fffffffbb1ebddd9565343262826201d1e1b1b1b201f293b445670 +382b1e1b222e3f4e72684a380d88ffff9863645a434353474c4c4c4d4d4d +4d4d4d4c4b4d4f4f4d4b4d4d4d4c4b4a48474c4742414346464543444749 +8a989e967e74605b3c484541322b33273d6264441339636d67717177867c +8d89a7b4aaacadb6bec0b3c3ccb2c7d6d7d4c1ccc9bec8c1d4c1b7a5a4cc +4a07100e1316130f0b0705050a0c11151b1d130e0f1a1a1718191b1a282e +353e464c525c6d808e9da8b0b6b5a6a3a09a918c8d8d817464191b2c3228 +434f666f6c6e62403b453a38354955162b2a335b3c302b2a1e1e28393a2d +3b69979fbfd15d283040535e667598b6af917db2eafffbd98d453a546d7a +859ec0d6d4cfc8d3ddebf7ea4b1306100f05051d285a8fa5c1b3bbb02018 +1b28293a54592d527786adc4bedff4b9595975472621140000190000000a +0d0000031f272d352b314b50372732392a1f10000f210800000d67a7b0b3 +b1aba06c186c865407513c314038334c42252e2e2828a9b7b0b3b5a99239 +539048242438383c31433c36322a23231c16c0e4dce1e7e9e8e5e4e4e3e5 +e0d9e1dcf16915466c4e52504e4b443e425c809a9d75646a66544d505045 +43382f2824222d38331f0d24391c131e9fadd2987f9fadaea9b1956f6767 +5f4f41324f5d554d4854523d231c1f1419151a2126272b3a566835313033 +3a40403d3e50647a7ea7c9e3e4af8053433d2f4065735d352e383420140a +04091115191a3b6496c2dcebf6fef484d7c4d56635442b333a3c3b3c3936 +2f2b29262723212414171a17181b1c19010016130f39e3ebbf729fb5b1ae +b2a0a7a9aaaaabacacaca8a7a7a9abacacaaabaaa9a9a8a7a4a2a8a4a1a0 +a2a4a4a49c9b9f9e9eacb2ad958d7b785a69666457525a4c5b7e81613056 +838d8892959ba99fb2acc7d4c9cbccd6dbddcfdfe7cde2f1efecdbe8e5da +e4ddf3e0d6c6c5ee6c2d3631323435363535373a3d3f3e3f413e311f0f10 +0f0b090c10102125292925211c191617191a181a2027283a52636f798691 +8f897a2e2e3a37233236474e4a4e45282c382a28263d4f1631343f684230 +25221611101f271b233f514e74963d181f2c363f46577b9c967c6ca4def6 +f7d68b42344c6775829dc1d9d9d6cfdbe6f4fff2521c1425292321363c68 +99acc7bbc7c5444f67879cb2c4b7707983819db0aecddca75b65814d1e1e +28306db2afb7b6ae92573134362b272f2a385860402b2c322a251a256fab +ada3afa6bad1cfced1cbba812c7c925c0c533d32433d3a554d2e34343135 +baccc9ced0c2a74a60994e2a2b413f4234453c36352f2c302d2bd7fbf0f4 +fafcfaf7f6f6f5f7f2ebf3eeff79214f75575b5958554e484c668aa4a782 +717973625a5e5c534f463b3630303946442c0a1b321f293bbab2b454141a +16161b301d030a1c24252321455b59534f5d5b45221614080f1019222725 +2026374a20283a557a9fbccad0d8d6d3b9c9d8e0d3966437241e11264e5e +4a241d2923181b202b37403f30253c639ccce9f6fbfae470c8b9cf612c35 +141413110f0d0d0d1115181b222220210e0f0e0d10181c1b040213111141 +f3f9c36981897e7b87767b7b7c7c7d7e7e7e7a79797b7d7e7e7c7d7c7b7b +7a7976747a767372747676756d6f7072a7b5bbb59d94827e626e6d685d57 +5f54668c8f6f3e64929c99a3a5abbcb2c4bfdce9dedfdee5ebebddedf8e0 +f7fffffff4fffdf2fcf5fff5ead7d4f87530393334363635333234343838 +3735363325170d11130f10131818282a2d2e2c2a29221c1b1f2021232b33 +344962788897a8b6b2a8923f353b331d2a2f4249494f472827322a2b2d47 +5b223f404b714e3c312d211b1d28291921415c5f88a84a252f383a3d4759 +7d9f9c8376b1ecffffe9a0554257717c89a3c6e0dfded9e8f5ffffff9877 +778e98938e9b95b1d4d8e7d2d7ca3a384b65738492833a40453d4f5a4f77 +9e7f46638f63352f31326aadacb7b8af8f5431383c36333d3a48686d4f37 +3839282524357bb5b3a6aeabcce9e4dfdedad19c4595aa73226851465650 +4c665f3f42424046ccdfdfe3e5d6bc5c71a85c383b524f50435148403c35 +33363430ddfff7fbfffffffffffffffffef7fffcff882f5e84666a686461 +5a54567094aeb08a79807c6b6367685e5b5149433e3d4753543c1d2e442e +3649cdcfda8348514d4949594325273338332f2b4e66645f5f6c6a523024 +221418161e2429282831465627293245627f97a0a3a8a299777d858f8e5e +3d211f241d335865502e2d40434b6c8daec8d4c9a0777282acd5f1fcffff +ff93e7d7e977414828262624201d1a1b1d21222328272628181a1a181d23 +262715111e1c1d4effffc45a5f5a474454464a4a4b4b4c4d4d4d4948484a +4c4d4d4b4c4b4a4a4948454349454241434545473f42444513232d1f1000 +0c110f11080805080d0064afbb8150aadad1dcccc6b5c2bbcec3cdb4c1ae +baa0b2aaac94a493977a6f8079745169777b3b57715d6a82241a17181a1b +19140d0a08080e13181c1f1d120c0f1a1a14131a23252a3038424c555e69 +7e8d9aa4aeb3b4b1a6907451321b121000191b13251f34333c45606b666f +6942333f3f3f2e3f5a26360800252a2025212b2325343b313658969fbcff +c27b3b163c5762627598a396a1a0b4e0fff8d4ba4d3d3d5d8096a1aad0da +cabfcde8e2a2001f15090e0814283b729bb8c2b4c7740c1d1e272e3f544d +476d8490afb5b0d7e97f46454c463b3b2a07001c00000006140000001e25 +2c3b47433d3d4e605631473d31110e270b00000659a3b2b1b2abac852465 +85690a51523a413d384137313c2c261c91bdb3b2b7aa9a3e428d5c1d2636 +35382d3f38342a26262a2412a1eae0e3e4e4e2e0dedde8e0e2dadcd2f172 +29446741352c292f2825121b140a0e00171f201110171a10191e30424f46 +3a2f1e182f41561d22278bb2d8ac799cafa7a3a798706369605251313436 +323a4862634a1115261f2430232e3b3e3e495f704a3c312d323b4040433a +53647780b1d4d4a184573d381f2b2d3a3427252a303110120d060c181607 +2c5b94c2d9e7f4ffff74cdccd2972c5635373b3d3e3c3936282427292521 +1a0f1a1e1f18171d221e1b1723201d13b3e9e07592b3b9adab9ea6a8a8a9 +aaaaababa6a5a4a6a9acacabaaa8a7a7a7a6a3a0a2a2a2a3a4a4a3a29b9c +9e9e27374436291b293030342e302d31361786d1dda371cbfbf2fff0e9d8 +e5def1e6edd3e0cdd9c0d2cac9b1bfaeb0928798938e6b8393975776907c +8aa4473d3b3c3c3d3d3d3a3939393d3e3d3b39312211070c0b05040f1a1f +252728251f1916111516181b1c212b353e403c2f1f16131708282b24342b +392e2d2d4149444f4c2a24322f2f1f3354263c12022f2e201f1620130a18 +281f1e2e4e4c71e7a66f3209253a4543567a85798889a3d3f5f1d1b64231 +335379919fa9d0ddcec5d3efe9aa052924202a252e3e4c7da2bdcac0d790 +385b738fa6b9c5a8828b86839ca0a0c7d5714d565a4b2f32393b66b3abb2 +aea89c673a3435292633464a4d4d5764502a4841373567adb2b2b1a5b0cf +d1ccd4ccc69a387591711053533b44423f49423a42302d28a2d2cccdd2c3 +af4f4e9460212d3f3c3e304138342d2b2f373527b8fff4f5f6f6f4f2f0ef +faf2f4ecede3ff82324b6e483c333137302d1a231c121709212c2a1e1a24 +241c232a394e5852433b2e222832471b3443a8bebf6e151b1a0d13221b00 +02192323311d2a343642516b6b50131320151a2518222a292429384b2b2b +31456488a9bdcfc8dad6c9b3c5cfbf8262341a15000c11201d100e121723 +152732333b422d122d5a99cce6f2f9fceb5cbabfcc9224491f1a15141210 +0d0d080c161e2020190e1416130e0f1a20201e161d1b201dc6fce96e7587 +84787f757a79797a7b7b7c7c777675777a7d7d7c7b797878787774717373 +7374757574736c6d6e6f2e3e4a3c2e1f2d33353631302f33381c90dde9af +80dafffffffffcebf8f1fff9ffe8f5e1ebcfe1d9d9c1d2c1c6aaa1b2aaa5 +849cabaf6f8ba48e97ad4d413b3a3b3c3b3935333533353535333026170a +050c0e0809131f23292a2b292623221d1c1c2025272c353f4749473d322c +2f34233f3b2e392b352a28293e4843504e2a1f2c2f30263d60324a1e0e39 +3a2c2b242e2019242a1d1c305c6086fbb57d431a2f3f4a485b7c877d8c8f +abddffffe2c7503d3c5c8197a4afd8e6d9d3e3fffcd1538b8b8a958d8f94 +92b5ccdbdfd0e4932b42546a79888f6f484f473d4f4d4879a05645607469 +47433e3961aeabb4b6ad9a643b383d343242545a5c5a66705c3143404345 +75b8bab5aea8c3e8e6dde0dbddb5518ea9882668674f5755525c544b503c +3d38b4e5e2e2e7d7c4615ea46c2d3d504c4c3f4d443e3431363d3c2cbeff +fbfffffffffefcfbfffffffafdf3ff92435b7e584c433e443d3a252e271d +20122a343427242d30282f36485c676052493b2e38455a29404fbad8e69d +4b545443444f4324213235333e28333f414d607a785e20202a1e222b1e26 +30302f364a5c3a332f374b688191a096a29b89707e8b804c3d1e161c0b1b +1d29251a1e2a37566692b4c2cfca9d646379acd6eef8fdffff80dadde6a9 +3b5d342e2a26231f1a1b1519202626251f141e211f191c252b2c2d242722 +2929d7fff064575a504250474b4b4b4c4d4d4e4e494847494c4f4f4e4d4b +4a4a4a49464345454546474746453e3f4041132127231f0912081c110715 +18151c0e478f8c59548f7d6f69578274756a746a592a766a762f7d7a8738 +67929f6067a6a8822ca49fb42373adc1c07f101210170a0c0d0d0c0c0f13 +10161e2325201915171e1e1b191f23242d323944505b68758694a0abb3b7 +b3ab9172503c34312e2a2e392532381c2721373e5661606c6c4d33323d3f +2b3b543c3c432d311f162e27342a232d3a38395092a4a6ffffd98e442333 +4757616b829790888495bde8ffffe499503b4c678aa7abc6c1b7becdaf58 +0d150f15090726335f9ab6c1bbc3bc340b212428354650484f7592a3adaa +b7ddd06a53473349606e2e07001c0000030b170000001c252b3f524a382f +4051462925292f09000b000000014ea0b3adb2a9ab93335c8880123e5332 +2f32373d373d40201f146ec0b6b2b6ad9f4a3581711a2d38333b384b3b2c +1c23292e2a1878ebe6e4e1e0e2e5e6e7ebdee8e5e9e5e97f213a63362c36 +393c504f1f28281f272c262c2f28292d302b2726324d6a663d110c0e3c4a +540e191966b0cdc48596afa3a9a59f7b666b5f544e383423264352595665 +2111171416202d3a454643444e584d3f3029292f3b3f4b35424c6e6a97bd +b58f7e5d3f37232721262524261f263416150f0208191e11295892c0dae6 +f4ffff73b0dad2c13c63433c3b3c403e3a362e23252822202118191d1e1b +1a1c201f0e1b192d1b0462e3f3938eb1bdaea69fa6a8a8a8a8a9a9a9a4a3 +a2a4a8abadaca9a7a4a5a7a7a39f9fa0a2a3a4a3a3a29d9e9e9e28363f3c +3b27312a3f372f3f423f45376db5b27f7ab5a3938d7ba597988d978b7748 +9589954e9c9aa45582adb7787fbec09c46bebbd03f8fcce0e0a03335343b +2e303438393b3e40393939363025190e070a0b0b0d141e22292825201913 +120f1012161d222b343e3c352c282e333330333f2d3d4325291c29293841 +404e4e3524272f311e2f4e3c424d393b2314261b28180711272621264a51 +58e2e6d08b3d121b2d3c424b6075716c6b82addef9fbd88b432f426085a5 +aac6c3bac1d2b45d131e202c262340476ca1bbc6c5d1d0563e667f95b0c2 +c0a0828b8d8f9695a8d1bf625e5c434d5262363655ada6aeada8a3734033 +35272337515248414c554022242b31263f8fa2b5b4a5a7ced2c8d6cdc7a8 +476c94881843563534393e484246442427207fd5cfcdd1c6b45b4189751e +34413a413b4d3b2c1f28323b3b2d8ffffaf6f3f2f4f7f8f9fdeff9f6faf6 +fa8f2840693c323c3f425655252e2e252e332f363732313738352f303956 +716f441a1a142f354105273585c0bc8c24161908161d200903181e242d22 +2821284b5b6259642011161210141a20272621222e382b272a39517093af +d0c9dad3d4acb0b89f6e5c3a1c140308050c0e0f0e070d24192a322f3843 +351c2a5797cae4f1f7fbf1579bcbc9bc37573023181515120e0d0e09111b +1b1f20171315141112191e21101a12261b0d77f9ff90708285797a757a79 +7979797a7a7a75747375797c7e7d7a787576787874707071737475747473 +6d6e6e6e2d3b43403e29332c41382f3e413e473b76c0bd8a87c2b0a19d8b +b8aaaba0aa9e8f60aa9ea960aea9b46595c2cf9099d8d8b35fd7d3e857a5 +e0f2eda9373732372a2c2f313233383931323230281e1108070c0f0e1118 +22232a2926241f1e1f1c1c1e232b2f363f44413a30313a424746474f3843 +4524261826263842414e50331f212c3125395a48505945472f2133293626 +161d29241f2858656ef8f7e19e4f22293843474e61746f6b6e86b7e9ffff +e6984d394a678baab0cecfc9d2e5ca8767878a968e84958ea3cbd8d9d1da +d9572f4a5e6c818e8664474d4d4a4a445387934f606f64706b7038304ea8 +aab7bab1a27041353c3330465f5f574d5a614c2920283d384e9baab7b0a6 +b9e6e7d9e2dbddc36285ae9f2e576948474b515a5457502f343091e8e3e2 +e6dac76d5196812a44524a4f4a594736262e3941423295fffffffffeffff +ffffffffffffffffff9f3a50794c424c4d506463313a3a31383d383f423c +3c4145413c3c4965817e5429252040465416344197d9e0bb5a5156424a4b +492d22323232382e322c34586a7168722e1b1e171418202931312f303d47 +3c342a2e374e6b81a195a198956e767e63393624181b1218131516161c1d +2a556893b2bccacba56e6076aad4edf7fcffff7dbceae4d34d6b44362c27 +26211b1b1b161c242224261d1d201f1c1f24292d1f281a2d231c8cffff89 +545652454d4b4d4b4b4b4b4c4c4c474645474b4e504f4c4a47484a4a4642 +42434546474646453f4040401c240e1c13151d1c14181218140510130306 +3b84a49f8cb86252bdb7ada5b1b28e4dc6b4ad34beb3c6508bc4c06976be +c28f25bfaaba3984b3be7d320d19190c151514100c0a0b0e121a24292622 +1e1e28232121222322252d333b44536373818f99a6afb7b4a79773573c2e +2d302d2c34281a2433393d3a343c4d585e686b5c3c28383a2e3943478dde +d69c53293b2c3f362728343c3f5184a796e9fff2dfae5f39263d55596982 +899d9f8c878e7e60675547464a51657b92acb9c3c5c3af764f1813190e0c +25508bb0c9c4beca831717242e2d3a4b464856789db4b4bacfda59343339 +2c3345392904002001030e15180000001c25273c3d342f38321811201b22 +330e001806050000459db3aab3a9a591374983921f2a57372c2b3f514b4f +3f181d144bbdb7b3b1b3a5592c7387212038435c6c7f501b0f222b2c261a +44d9ddd8d5d7dbdbd5cfd3d5e9dedae8d184312c4b23243d5067616a1c1c +2a28242325272a282623232128201f35627555230f1334474d23271c3598 +b3db9b8eaeabb1a5a9876c6d5e58422e2f252b4242405f8c4226221d1921 +344048484139373d433e3229232532393e3b353f62697890907e79684436 +2e2a2620191c262120261b1208050c162124345a8dbad9e8f4feff7c87e1 +d5ce59555042393a403f3b36392323271c1a221e1b1e22221d1615161a23 +202f2d0013c6f2c094acb8b4a59fa6a8a8a7a7a7a7a7a3a1a1a3a8acaeae +a8a5a3a4a7a8a4a09f9fa0a1a1a2a3a5a1a2a2a2313926362f333f403b40 +3a423e323c3f2e3165aeccc7b3dd8777e0dacec6d2d3ac69e5d3cc53ddd2 +e36da6dfd8818bd6daa83fd9c4d455a0cfdb9d532f3b3d333d3e3f3e3b39 +38373535352f25190f0b0f0d0c11161a20252c29231b1412111111121922 +2a3033382f2924252e34332e32251a29393f3d35262730383e4a4d442f1d +2a2c212d3d4793e8e2a65727332031210b0a212a25243a524bafeeebe0ac +532811253839465c637c8172727f7254574537393f475f768fabb9c5c8c8 +b47a552324302a2a3c6397b5ccc8c9dc9c3e4d6f8d9eb8c7b39c8688929c +9aa5c4d14d3044533e373327292942a8a4adada9a479402f35271f313c3c +414a3e1c0b191a2433293d9badc2b8a5a0cbd2c5d7cdc1a64b598f9a252f +5a3a3132465c5658431a25205cd2d0ceccccba6a387b892327414a626f81 +501b12273439372f5bf0f1ebe8eaeeeee8e2e6e8fcf1edfae393382f4e26 +2740536a646d20202e2c282a2c3030302c2b29292e28253c687c5b2b1916 +232f3416333856aca5a73e101a0f1e1c281307191b25211923232d4a4b46 +5b83402a2a2219161d2122222122262924222935455d7f9fc2d4dad9dab8 +968e7d615c4a27191414120f080d14100e1b1e252b323c40382f355b92c4 +e3f3f7f6f15c6fd0ccc9544c3e2b181517150f0e17090f1a1519211d1816 +1818151313181c2219262c0829e0ffbf797d807c7a787a79797878787878 +74727274797d7f7f79767475787975717070717272737476716f6f6f343c +283730333e403a3f39403c2f3b40353a71bad8d3c2ed9787f3ede1d9e5e6 +c481fae8e065efe4f57fbbf4f099a6f0f2be56f0dded6bb6e4eba85a313c +3b2e35363634312f312f2e2e2f2b20140a07121011141a1d21252a28231f +1c1b1e211f212a333a3d3e3e30292426333d413d3f30222d393d3b322526 +323b414c4f422917272c28374953a1f4eeb26334402e40301a1623282427 +496962c7fffdf4c1693b22323d3c445960777f7377867c6064524243474f +637c96b3c5d2d9dbcaa7ab8f909a8e84889ec1d2dbd1cde0a33d3d516b73 +88917960484950565056728c27254e6c645d4d3529223ca6abbcc0b7a574 +40313c332c414a494f564c28192016213f3a4ba5b5c4b5a7b2e3e7d6e3db +d7c16672a9b13b436d4d4444596e6a694f26322e6ce5e4e3e1e0cd7a4686 +952f37525a707e8d5c25192d3b3f3e3461f8fcf9f6f8fcfdf7f1f5f9ffff +fefff7a64a405f3738516279737c2c2c3a38333436393c3b383637363c35 +354c788c6b38231f333f4727414467c5c9d7754d584c544a513825312d34 +2c222d2e39575a566c944e332d251b1a23292d2d2c2c303536312a292c38 +5570909c9e9b9d7f645b42293432211e21211d150e12202226466d8eabbf +cec8a8816b79a5ceecf7fcffff8391f0e7e06a61543f2b2627231c192516 +1a231c1e272321212323221e1e242b30202b341741f7ffbb5e534f4b4f4f +4d4b4b4a4a4a4a4a464444464b4f51514b4846474a4b4743424243444445 +46484342424213280a2a0d1811130a1c110d120f130b151383cbb8b6bdbd +7e4fbfae9da2b1b89735bdaeb027cba5bd478bbdb46a7fbcb48a36b8acb3 +82aeb6a93604150e1b0e0b0a0b0b0a0b0f141820292c27201e20281c171c +22272b34363b454e5c6d7e8b989fa7aeb0a58f7956493f342d2c30353330 +4436293a2d30313945515c666a67492434363036334890f2edaa67363f2a +4d432f25323c3d466a9592ceffdfefd7c4742e29414e5866787f8c979584 +71653f49504a41435363808ea1c1c3bbc5b8803626151c1a1774acaec8c5 +c4c446151a223433445246507686a6bfbccddfc3373b283a413b4a2e2909 +002c0905090b180000001a232033453344756e27092625202e10002c0700 +00003a94afa8b7abae963a397c99291e563c2b2641625b564217221935b8 +b5b3acb7aa652969952a20322e42649062220b242c2a20171dc6cbc8c6c6 +c4b8a19091a5c0a38fa887533e214127202d55984f7a2e2228241d252727 +2a2e2c262426292625325b77603519252f3c291a1f170e7e95e4ac87a9b1 +b5a6ae917372615d64362e303235313c4472271c211815253841494a453f +383943433d36302d393d30422d3b5468535e7773776f4832342b22241e1a +1c1a1e271d09030d120f192a405f8bb6d9ebf4fbff8567e2d8c66b3d5443 +343641413d38361d232f252530303a332c2720191d25363a5f64922d00a5 +f0e19ca4b0b5a8a2a6a8a8a7a7a6a6a5a2a1a1a3a8acaeafa8a4a2a4a8a9 +a5a0a0a09f9e9ea0a4a9a5a5a5a43348294c2f3c383b34483d3b4040453b +423eadf5e0dee3e3a273e0cfbcc1d0d7b351d9cacc43e7c2d962a6d8cc82 +94d2caa34ed2c6cf9ecdd6c9582738323f3536383a3a393938393535342c +1f1009080f05020b151c252b2a251e150f0d0f1113161e2933353230242b +3132313132352d2b41372d3e2d2c25272d343e464c4e3a192628242c2d48 +94faf5b06632371c382a100618282b29324c428cedd8f7e2c46f23172730 +344050596a797b6e5c522b353c393236485a79899ec1c5bec8be8841352a +34342a84b4b2cac9d2d862425e799aa4bac3a4979b929aa7a4b9d3bd303a +344b514440242a293ca6a2aba8a3a3773c2c392c1e2d473b54857a2b031f +28252c253da2aab2baa7a0ccd2c3d7ccc8ab4e4988a430235b3f302b486b +665f461b2a2746cdcecec7d0bf763571972c26393548669062220b273335 +2f2831dadedbd9dbdbcfbaa9aabed9bca5be9d634524442d26335b9b527c +30242c28242c2e2e3135332d2a2c2d2c2838617d66381b23242c1710292e +31968fb855112021221829190a1819273b1c212d343d3a423b6623202a22 +161c23222122212123211d1e283139496a8ea6d5d7dfdac47d666d5f6054 +280f100a030a09070c0c101e211c273c443a3336425e8ebfe4f6f9f3ee61 +4ccfcec16635472e17141817121014030d1f1b202f2f372d241f18131a25 +3a3d55598c3311bfffe282797a7f7c797a7979787877777673727274797d +7f8079757375797a76717171706f6f7175797272727132472b4d303c373a +33473c393e3d423d4847b9ffeceaf0f0b283f1e0ced3e2ebc969efe0e158 +fcd4ee77bbede49aafeae2b966e9dde5b3dfe5d6612b3a303b302d2e3030 +2f2f30323030302a1d100808130b09111c22292e2c28231c19191f202426 +303a43433c37272b313334373e413732483b303f2d2b25272d363e474c4a +35132328283437529fffffbc7441462d4b3d2216232a2b2b3d5f5ba7ffea +fff6dc8534253032343d4e5869797c70615834404743393d4e5f8090a7cb +d2cdd7e0d19d92858a816cb8d9cbd9d2d5d9653d475775798a8d6855564a +505d5a708b83143642657365582f2c263aa7aab9bdb1a6753d2f3e352939 +5448619286371127211f373850b0b3b4b7a7afe3e8d6e4dbdfc66762a0ba +43366e50433e5a7c78705226373456e0e2e3dce4d286457ea439364b4556 +739c6c2a132e3b3b362f38e3eceae8ecede1cebdc0d4efd2bcd5b47a5735 +553d36436baa638b3f3138342e3638383b3f3d373638393837466f8d7647 +2a313239231b333c44b0b5e98c4b58565646543d29322d3749272b38404a +4952507a32292f231a1f2a2a2c2d2d2b2c2e32302d2b28304a65769e98a0 +9f91553d382a36391d131e1b1317100d161b27496b82a2c6d7c4a28a757d +9fc8eafcffffff876dede7d87c4a5941292428231c1b2210192923263535 +40372f2a251f252f45465d5f964328d6ffe471574e504f4b4b4b4b4a4a49 +4948454444464b4f51524b4745474b4c4843434342414143474b47474746 +0c0c0d0e0e100f0f120f1015130d05071418606a51bdbdc97646947f8592 +aabb9437c7b7ae2ccbabbc47aaaeb9697ab8b2992abfaaaea5ada6330718 +0b0a1708080608090b0c0e10152024201e1f231f1b211e1f2d33343b3e44 +5164727c8c9ca3acaca496876c52413a3533323130303132313131303131 +34303648596167675b2f2938312e353798f5e2aa7b333d30578235222e36 +33293e80a5afffe1dfcfe5d13d2b343d55566875838c9298968e8163453b +41484c4e5f7a96a7b1babfbda9875536200d3fa2b3c5c3cacda22f211420 +2f3a4c57585e6b9badb8cfdff1720f1a536d857324141418002b11040006 +140a00000a171d242d2637557834121b1e2f2317062d1d0000002c65b3b5 +afb6b69f53346c8e54154a242e315048566a3c10271a24abbbafabb6a883 +2f6a9738122a2c4252796041183738241d1f158bc9b3b1c1b0a0799a9e96 +b2697ca783604924322821332a4017512b2f2e2521252a25252a2d2a282a +292c29272d2b2a36342c2c2f29231e100c5994e1b98d94a3aeacafa27b69 +6b6160533240482c2e37343134332b1e1b17303b4848434b51484a4c4f4b +474345403f3530384767692453636e7667463e3f34332b221f181b241b0f +030704140e304d6389b9dae6eefdff8755b2e5d8ad3f4b492a3a3b433539 +2f2a282a2f363a3b504736261d1d212233628c7ca7310054e7f8a1a4adb0 +bea0aca9a8ababa7a4a5a7a6a5a3a2a5abafaaa8a29da0a6aba8a4a5a5a3 +a2a3a6aba7a6a3a340403f3e3e3e3d3d423f40474a45403d3f3c848e75e1 +dfeb9666b49fa2afc7d6af51e1d1c846e5c6d65fc2c6d18192cec8af40d8 +c5cbc6d1cb5a2f403333403337393a3b3a3733302e302d201513100c0810 +0f101d2320211a1411120d090d1519242e3134352e27262b303232312e2d +2e2f30313131302f2e2424303d42464a4620192a2725303698f5e2a8772c +341f395e1300081b332b2a4d4d59e1d6f2ecf7d93e232020323241516069 +7076746f674a2c242a33393d526f90a5b2bec4c4b08f6046331d4cacb7c8 +c4d1dbb74c566f8f9da4aeab998b84a1a4a8becee26a101b537090833021 +1e352d92a0abaaa99f7d4e34332f2629312f436180360c1825362022348c +b5aebab0a8b4ddcec9d0ccb567467b9b5d1c502a3137564f5d7142163027 +37c2d6ccc8d1bd943a6f9839172f324551775e4017373b2b26292199d8c3 +c6daccc09bbec3bbd58b9bc6a0755026382f2a3c33461850282e302b2a30 +332e2c31322f2d2f2c302b2b312e2d3527222e34272325222f7797bf6c25 +2526211b272409091c223133203847323a3d2c25303532251e121f1f221c +131b2319191b212324324d6c9bbad4e1d6d2a63e595a5b583a0f00000001 +0204090a0f1e1f232a3b3b432c3f4d608bc0e5f3f7f6ef5b349bd9d3aa3c +42380f1a15190a0f0f101319222d35394d4433211515191f3d6c856f9a30 +056ffeff8f7f7c7d9378817b7a7d7d7976777978777574777d807e7c7671 +747a7c79757674727172757873716e6e3e3e3e3e3e3e3d3d423f40464742 +3c3d4648909a81edebf7a575c3aeb2bfd7e9c468f8e8df5dfcdbed77dade +e999aae6e0c757eed8ddd5ddd4613140322f3a2c2f303132302e2c2b2a2d +2c20181514100e161617272d2b2e26201f201d1a1e2626303a3e41413931 +2f32373a3a3b393839383839393635323024242e3a3f4144431d19292828 +343ca0ffeeb6863c4532537a2c191f2a332629566576f9e7fffcfff05030 +292536364655666d7175736d6a50322a323a3f43597594aab6c1c7d4decd +9e826e5883dfe4ebe0e3e4b848464e65767c857a5f46334949517089a943 +001d5f81a2933e2a273d3397a6b4bab8a682503735312b2d3a384f6d8d43 +1a1f1d2e29364ca0c0b0b6aeb2c5f3e4dae1e3cc7f5c8eac6e2c60384247 +665f6f8150243f3746d2e7dedae4d0a64c83ac4d2a4242545f8469481f3f +44332f332da6ebdadbf0e2d9b6d8ded6f1a7b8e3be906335463f394d4456 +2c623b3e3d3733363a35343938353335333937363d3d3c47413b3b382a25 +2d2e4293c0f1a2584f4e4c464f492a24323541422c455540484d41393f41 +3a2b2518292b2f2b212930292c2e2e2b282b3e51728395a09ea68723332f +3136270c101b171c120e1519274a6682a3c3cccd9c92817b98c6ebfbffff +ff7e53b7f1e7bd4d53482029222514191a1b1c2129323b3e544b3a282020 +24283f6e8c79ab421980ffff8d6f5e525c3d4e4a494c4c48454648474644 +43464c524f4f4944474d504d494a494746474a4d4b494646050507090a0d +0e0e0f0f13151007050b1709130725c7bbcb9478d4cbc9c3c6c88f4bd0c8 +b735d6bacf4d99a7c0637db2b0a12cb1bdaaabb54c0f02120b0f1a0b0706 +07080a0c0f131a21211d1a1e1e1b14191a2335373844454e5c6e7c8999a4 +a6aaa897826b54413732302f313132313131313131313132332f3242535e +676b66412e30312f2e2d7ed1b299612a371563b0582b373824222558a2b3 +fef2d0cfd6ee76262836414055626f7883909694977f6650443f444d4e63 +7f92a1afb6b5b4ab8d5423317bbbb8cec8c7d96015231a1f2e3a4d596171 +88a3a8b9b2e0bb4a112872705d531800101400301d080000180f00000614 +1a22252d4a5e74401e151d251d1801251f0000002158acb2b0b8b49e5a2e +698d5b123e3d41374f5e8696391e2d1c1d98c1b3abb8ae8e355f91491c26 +27322d4032262a39322023251574c4b3b4b4aca28087947c9a8c86ba7941 +4c2042421e26272e39312a3e2b262e1f25282d3033302b26292a282e393d +3b434d4c46382c3639191a4589ccc781929babaaafa27e6a6a615b52313f +5848403c4132271e260d1024273649514f59615a5a5b5f605d57564b3c31 +2a323f606d374968707a80544f52514d3d2f2822242f1a0f020602110e33 +425a82b4d7e4effdff7e58b5bbc5cf4c4a482f3c3b443b3d322b2726292b +2a293631291e19181d1a2834431f3d1b0015daf5c19db4b3b4a7acabaaac +aaa6a6a9a8a8a6a4a4a6abadadaaa6a0a2a8aca9a7a7a8a6a4a4a9aca9a7 +a4a343434241404040404142464b484341433f2b352947e9dbebb195f1e8 +e5dfe2e3a864e9e1d04eefd3e866b2c0d97c96cbc4b542cad8cacddb7338 +2b3c3539433639393a3a37353230302f2a1d14110f0c070e0f162421191b +100b090b0b0c111b202d3636322f2a272b2f303131302f2e2f2f31313131 +30302e26242f3a41464c4e2d1c2227262a2b7cd0af955a232e033c812c00 +09182c3120314a56c6e3eaf6f2ff7e24181d221d323f4c555f6a6f6f7965 +493629262d383d57768ea1b1babcbbb39961303e83bfbbd0ccd2ec7a3961 +80989e9fa29b918f96a5a0aca2d0ad4316306c6c65642c111c2a2389a4ab +a7a5a08051343330282a2a3452667a421c16292f1a1d2577b2b0b9b0aab4 +dcccc6cdcab46f407a9a671b4443443a55648c9c3f26362930b2dcd0c8d3 +c59f4065934a1e2b2a342c3e2f2329393224272b1d80d5c7ccd0cac4a3aa +b8a0bdada5d99856511f454a2a3230353a2f273b2d2d382a2e2f32353633 +2e292a2d2b313d413e403c3f4e4832383a2539608baa791926231e172220 +0806161d262e1b34564e49433d2b25202d14131f15171e1a101419121617 +191b1a243c5c84a7c6d8d4d8b75f525b59574a110101050a07060c0d1428 +1f242b3a3a422c42425682b9e2f3f9f9f152379eafc2d14e463c1a201a1e +1115121110121a2023243330261b1110131734403c112e16092ff4ffb57c +86828a7f817d7c7e7c78787b7a7a787676787d8181807a74767c7d7a7878 +77767374767974716e6d40404040404141414243474b47413f4447374135 +53f5e8f8bfa3fff6f3edf0f4bc7afff7e664ffe9fe7cc8d6ef92ace1ddce +59e0ebd9d9e47a3c2d3b33353f2f30303131302d2c2c2d2f291f18181411 +0e14171f2e2d282b201c1b1d1d1e252b2b353e3f3d393632353a3c3d3b38 +38373a3a3b3b3b3938353227232b363b3f474a2c1c2126272b2e81d8baa3 +6a33411959a34d1e262d2e2a1a366273dff6f9ffffff9131222328233845 +52595f67686977664d392e2c333f435b798fa1b0b9c4d7dac18b5c6bb2ee +e6f6e9e4f3772d48596b7677796b55453e443e50559480270f33787a726e +351a2a383091aab2b6b5ac88583936312b2d303e5d73884f2a1b1d262331 +3f8fbcb2b5adb0c1f2e3dbe0e1cb84548caa772a5251534963729cac4d33 +45393fc1ede0dae6d7b3567baa5f333e3d433a4b3a2c31413c2d32372a90 +e9dfe4e6e4dfc1c8d8c0ddccc4f8b771642d5457384241474e443a4c3a37 +41303537383b3b38332e2f32343a494d4d555c5b594830373f314d7db4dc +ad4a4a4648414c4428222e32383c2842645c58534e3d332d371c1c262126 +2f2d23292d282d2e312e2b2d3b4a5f7589989dab9c473538303130091121 +2b2d1e14181e2f52637fa1c1cbcb9c9574718ebfe8faffffff7354b8c5d5 +e05b554a292e25291b1e1d1c1a1b21262a2a3a362d221c1b1e1e343e441e +412a1c3effffb9776f5a50414c4c4b4d4b47474a4949474545474c505250 +4d45494d514c4c4a4c4848464b4e4c4b48470505070a0c0c0f0f13161b19 +1005050e1b28240935e6c4dc7e63ad9d989fb6c8905dccc1a83acdbfbf53 +9cbada6a91bec39327bba8b0b16b0d070f130e11150b0a0807080b0d1014 +1e201c18181c1d171119212b3a393b474e5764758492a1a9a3a39b866b54 +4334342e2a2a2c2d303132323232303031323430313d4c5a686d6c523227 +30332a28294403364e2c2f3558c87231363120293647939ebfda9aa1c2bf +6e1c3a3e3846424d5b67768591939f958871564240453f4d6275899da9ab +afb5bc90576fabbbc0cacfd8ae201228262a35425158647e99b2afb2c2d3 +7c411d26646650522d1024190028250e00021d16000007161e272b2e3630 +382f3430332f2b2700131f0000001e51a4afb1b6b3a06a2a648b6a113b4d +3c292715291f352f2e1b107bc3aeacb9b69b414e876015202f3e30373d44 +3d38281c2a2b1554b4a9b2a6b4bbb0a4b685889c73b67e5a672f59663a38 +3d36422e433e3133372b262e312e31363229322f2b3039403c3e4644412e +213d471b1f3b9bd7ee8ba1a4aba8ab9f806b665e545535354c423b434a5c +4c1f1a1a1915283a586769717a7877757a7a756c6556392f252e3c5d7356 +3c6c7687aa736c747a705843352c2e371c0f030500100f383d547cafd4e4 +effdff8d548f7475a8793532262f313b3434302a26272b2e2b280f121617 +19191d1c1d12210c10221200b1f3ea9bb9b8adb2aeaeaeaeaaa6a8aeabaa +a9a7a6a8adaeb1afaba6a6aaadaaabababa9a7a7abadaba8a5a443434142 +4242424246494e4f48414146434a462b57ffe4fc9e83cabab5bcd2e4aa77 +e6dbc254e7d9d96db6d4f484abd7d7a73dd6c5d0d3913430383d363a3e35 +3939383736343331342e2417120f0e0a0a14181e271e13150e09070a0d11 +19242b363a332a2524242e3131313030303030303232333331312f272329 +333d474e533d201724292423274101344a282822298c3600001021322e23 +444987c7b1c8e2d57b20302b1e28222d3b4754626b6e80796a553928272e +2c3e576e879eacb2b5bec79d6479b0bfc3ced5e9c8443f6d8f9fa2a19e93 +8b93a0aea2a2b3c66f3c2831626458603d1e29291d77a4a8a2a3a2855534 +302e27272e323c38403536353f39282c2163afafb6aea9aed8cdc7cbc9b6 +7f3c7598761a41533f2c2d1b2f25383538292392decbc9d4ccad4d568c62 +1a2532402f373b433c3828202e311d61cec8d1c6d2d9c9bbca999db188ce +986c682b586c4344463d452c403d333a41362d3234313237332a31302e33 +3d44423c393b4b3e273d441e344a8ea79115221d1a151e1d0a0410191d2f +1a274a48454b49594e23211e17090d111e21161719151a1a1d1d1b223652 +6e94b6ced1d8ca843f5353596c29181d25241a100f0d14281d232a3a3842 +2d443d507bb4dff3f9fbf368377d6c76ae7f372c181b151c1110100e0c12 +1a2124230c0f131411111319291c1c00021e2207c8ffdf7c8c88848a8380 +80807c787a807d7c7b79787a7f8285857f7a7a7e7e7c7c7d7b797777787a +777471704242424344444545494c5151494141474b56523763fff1ffab90 +d8c8c3cae0f2bb88f7ecd365f8eaea7ec7e5ff95bcebefc054ebd7dfdf9a +3b343a3c35363a313333322f2f2f2d2d312e261c16161511111a1d252d27 +1e211c19191c20252d35353c413b322f2c2e383a3b3b393738383b3b3c3c +3c3a3936332823282f3740494f3a1e17242a26272c4a0c4159373a3849b0 +5a1b2025252d2b275966a2ddc3d9f9ec8e2c382f212a25303e48525c6265 +7b766a543b2b2b3432455d758ca2b1bccbdbe5bd879dd8e5e6ebebf3c738 +2b4e66727875705b4844434d424b6e914c2822356f72656d4a2b3c392d84 +adb2b4b5b1905e3c36322e2f373d48454d414339353031403c7abab1b3ac +b0bdeee5dcdee0cd945087a886294f614e3b3b293f354743443632a2efdb +dbe7e1c1636ba2792e38454f3d43464b44403229393d2a71dfdae5dbeaf3 +e7dbebbabcd0a7eab3847c3a687a5252574f5841534d40444a3c353b3b38 +373c372e3735373c495050515756553e253d4b2d4969badbc8494d454541 +49432c21292e303e293457545158596a5b2f2b2722131c23343930333834 +39393c3834333c4952687d909aaaaa6a24342d355320283d4c4831211e1f +3153607c9fbec7c99d986f6b89bae5faffffff8753958188bc8b44382526 +2124181a1b1a171b22282b2913161a1b1c1c1e20291b230b132f3217d6ff +e37777624c4d4e4f4f4f4b47494f4c4b4a4847494e51545350494b4d504b +4e4c4d4949474b4d4f4c4948060608090d0e11111c1c1b191207050d061e +251130dfbed67a75c2c0bcbecbd89569d6ccba73cccacc89c3ccd55f98c0 +bc9630d6b8bc8405091417110f0e0e100d0b0a0b0c0f1418211d1814161a +1b17182c3632393e424b5c66727f8d9aa6a89d8f816c5542372f2f2a2827 +282a2e313233323331303232343232374454646d6a5f3a2430352b2b4944 +0011471e053157c28148322724293b3d738f9cd5a19ba672510b32393340 +36404c59677683899294998f795f4c433f414b5971899ca6aaabb9b9a1a1 +b4b9c9c1d7dd4d0d27282d3342535f5e6b88a4c6c6bdf2a44c586e545c4e +38342f464227001a280e000c201c03000619212647474b453e414a433933 +393b080a270000001a499daeb1b5b5a57c2a5c8878103b4f34434f323d31 +353a291a0e62c6abafb6b5a35040797018253f4631323c3b3f2e1e1d3230 +1b39bbafb39cabacafa4ac96a3c38da35d4f6f35445338302e2e24375216 +1e2616233c443f333542443c2f2928282d3a42432f201d141338471e1140 +b9faffaeb1a5aeaba99f876e656051583c2c31232d585b6e5a2d0012231d +30456a858c939e9d9b999b9c968a7e6a443728303c54706a356c7791ca8b +717c7c745b44372c2e361c0f0306000f113a45597eaed3e4edfaff8e2e4d +624c51a121161c272e39312f312c27292f32302b23242626231b1a161d10 +2a321f2419006aefffaab0b7b2b9b1b3b3b2aca7acb4afafaeabaaabafb0 +b4b3b1abaaadafacaeaeafadaaa9acaeafaca8a742424243434444444f4f +51514a4141432e40473352ffdef69a95dfddd9dbe7f4af83f0e6d48de6e4 +e6a3dde6ef79b2dad2ac49f1d5dda5292f3d403a3736363a3a3a37353533 +3232352b1d13100d0c0a132a2d231e190f0c0e0c0c0f1419212b3538342b +24212328323332323131313231313233343332312f2924252c38454e4e47 +2612222922254441000f451a011b217c360200061f2e311a2e4364bdb3c1 +c88d63142f2d1f261c23303b48565f6571777a725b42322d2a323e526b87 +9faab1b3c4c4aba8b9bccac6e3f2713c627596a4a8a9a28e8794a3bcb7ac +e49742597d635e4d3f403d4f402d1c63a1a5a2a9a58c5d362c2b25244547 +514d484b534d453a333e2856b1b1b5afa7aad6cecacacbbb913c6d958419 +4155374655384337394033282079e2c8ccd3ceb85f4b81761d2a42493332 +3a393e2e212036372149d8d4d4b8c3bbb5a4a68e9bbd8ca867556a2c4156 +3f39373527384f15202c202c3f423e32323f423a2c28282b313e4844261c +27221837421c1c419fbea829231216151a1b0f050b16182d201c2b273560 +5e71603301141d0b0e11242e241f211e222224252226354c5f89abc8cfd6 +d1a1344d50608d4320282b291b0f0d0a10241c232b38363f2c4643537cb3 +ddf1f7f9f070173f5f4f59ab2716161a191e120e110e0d141e2526262021 +23231d131013271a25261221260d80fcf88e878b8a91868585847e797e86 +8181807d7c7d8184888a85807e82817e80807f7d7a79797b7c7975744242 +434445464747525253524b424145384c533f5effebffa7a2edebe7e9f5ff +be90fff3e39af5f1f5b0ecf3fe86c1ebe9c45fffe7eeb4353843443c3735 +353637343231312f302f342b201814141311192f3228252018151b181a1f +252d363b3e3e3a312a282c30393a3b3838373637393c3c3d3d3a3a36332a +2423283440494b452510212923274a48071a5229123041a05d271a19252a +2f20415f81d7c7d4e3a87923383120271d252f39434b53596871776e5944 +35303139475a7592a8b6c1c6d8dac6c5d7dbe6daeff5672844516b767978 +6c503c3e465b5c5ea76b274b7a686b5d4f4e4a5e55432f72acb0b3bcb698 +683f3535302f50535f5a54555c4f3b333d51416dbcb5b3afaebaeae5dedd +e2d2a6507fa594284f63465563465345454c3d332e87f0d8dee5e2cd7461 +988c313d5358423e474446362a2941412d56e6e4e7cddbd8d7c8ccb3c0df +abc5806b7e3d52654f4848473a4a62252d382933484d463a3946473f332e +30343c4a5656413330221435482a3260ccf2e262533e454548433324252d +2b3e2e273732406b6d806c3f0b2029191f273e4e474449474d4c4c4b4542 +464c4c63778d98a6ae82182e29386e3529424c4a331f1b1b2c4e5c7a9cbd +c6c79d9a756f8ab9e6f9ffffff8c3156726066b73320202322271a171c1a +181d262c2e2c27282a2a271e1b1a28192c322332371b8dfffd8a73665656 +535454534d484d5550504f4c4b4c50535756544d4d4f504c4f4e4f4c4a48 +4a4c514e4a490808090a0e0f12121a161212110a080c291e191534ded9e1 +8a95dae2ddd4cfd2855dcdcac8aebbbdbf9ab6a5a65ba4c7c1b334848d57 +260f12150f0d15110f1a1211100f1113181e211c161317191d1a21444c36 +36464f546975808b98a3a9a18a725f4d423a322b2925242326282c2e3133 +323331303232333332353c4c5f6966684b2b2c312b3027467a483c1d1f2f +66b38e713a20292233364c7e8fc5b38da568711623424c3c39383c434f5d +6f7c848a969a97856b55463d3b4257718b9aaaaeacb2bdb4b4cccdd0e19b +0b152f26353b495864687a9ab5c6d7ede35c3766444a51463f374178482a +03103113030e1d1f0600041a2227463b383829231d191b20313b0c022c06 +0000194095acb3b4b5aa8a2e4d817f104b6434343a2f413f3b3b1f1b1454 +c9b0b0b1b1a761356b7a18234040333f513e2f1d181f332b202aa4aeb9b4 +d2c3ccd8c1c6d3e2c7aa5d61653f30302817183863617328232e1c2c1f27 +21141723261b1c191f2427425e653515080e18333e232c376a869d8db4bf +b2ada8a28f7565645651402e291d2c66534f5d7d0c1a232f374c769ba9af +bbbeb9b5b5b7b2a5967f54442f36404c65703c6b7493d2904d5654514134 +2d2629321d110407000f1138485a7dadd2e3ecf6ff861d3b8e8841a92809 +1c29373f3633342f29282b2a282323202023231c1b1a1f1e252d2217100b +2ae4ffcaa6b5beb8b6b7b7b6b0acb0b9b4b4b3b1afb0b2b3b6b7b6b0aeaf +b1afb0b1b2b0adacafb0b3b1adab42424344444545454d49484a49444242 +51403b3756fff9ffa7b2f7fff9f0ebeea179e9e6e4cad7d9dbb6d2c1c277 +c0e1d7c94c9faa784733383c36353d3935423c3b38363535353433271a11 +0e0c0c0d1f42412111130e050c0d10151e262c323934282323272b2e3434 +3332313131313132323334333231312d26232733424a4a4f33171c232127 +224379463a1b1d1c2e66372102001f202717163e56a6bfafca8b8b25253c +3e2a2423242a32404e58646c757c78674e3c2f2c2b374e6d8a9cb1b7b5bc +c4b9b6ced0d8f3b83a51797f9ca5a5a39b8a899babb6c3dad553316b585f +574746404a7b402a1f53a3a5a2aba69363382a2a242140393b4135302a24 +28272b3e2b4bb0b2b4b0a7a7d3d2cecbcbc09f405e8e8b19516a37374035 +47453f3f2729266ae5cdcfcecabd734477821f2843433541513e2f1d1b22 +37322638c4d2d6c9d9bcb6b49395a4b8a5934f555632292f2e20213f6662 +7027253225331d1f190c0d191c1415141e24294664683316131a1a2f351d +2a2c433c2700151e1516181b150706161722201d221d336f5b576585131a +18180d0e23332c2323212222232523242f43547c9dc1d1d5d4b33f4d5268 +9c52070b0b0c060105060d221d232a38363f2c4446547bb2dcf0f6f8f16e +0b2f8d8e4ab532101c22272a1b15140f0d11171d1e1e201d1d201d161317 +2727202117151c1e3df1fdb2838d98918b898988827e828b868685838182 +84888b8e8b8583848381828382817d7d7d7e807e7a784343444546474848 +504c4a4b4a4543445b4c474362ffffffb5c0fffffffef9fcad84f5f1f0d5 +e3e4e7c1deccce82ccf0eee164b4bc89563f41433b373f3936413b393735 +3534333233291d1613131414244747261818140b16181c232d383e424039 +2d27292d32353a3b3a3737363536393a3c3d3d3a3a36342f2823242e3c45 +474b31161c23222a284a815147282b304b8a61481f122721271c265876c5 +d7c8e7a9a43831403e2a232222252a323f4857616c747365504037363645 +5f7e9cabbbbebec6d4cccbe3e3e5f7b3283554536f75726b5a40363e4a57 +6d95a43423675764655958515b8e57423463aeb2b5beb8a272453737312f +4e474a50413932261f203551405ebcb6b4b1b1b6e8e7e1dde2d7b454709e +9b285f7846464e4357534a4a32343277f3dde1e0ded289598d97323b5452 +444d5d483927242b423c3245d1e0e8def5dddde0c1c2cedec6b068696943 +393d3c2f325179748337323e2e3d282c24171622241b1d1b262e35527279 +492a191a172e3a29404c707163374b50484949463c2a242e2c322d272a25 +3b78666472901d2626282127415856525454575654544f4a4c4f4c61708a +9aa1aa90222b253b763b091f28291a10101524495b7999bbc4c79d987870 +89b8e5f8ffffff8823459f9e59c13c1a262a3131221d1f1c191b20242624 +2724242727201e1e2926272d25232c2d4bfaffae706a675a58575756504c +5059545453514f50525558585850504f514d504f514d4c494c4d51514d4b +0c0c0d0d0f121212120c0a0c0f0e0e12101f30363ea4a79b707496969194 +969f8862a69fa2a9979fb1a2b0a4b19ac9d6cdcebbd3b8270c1b1d160f15 +1f19121a16161717191a1e211f1a1515181a20222d4e543a3c515e617380 +8a949da4a2937055443c38332d2a2523242427282c2d3132323230303131 +34373633374658616b6f5b3c2c2a2a2e3741dfca6d2c4a2b589689853f18 +241a33393d6a89a1ab68a555611b305a614b433d35343c4a60717d818994 +9d9b8974524335333f55708294b2b0abbbb7b7cfcfe9cf390e1c22293b44 +4a5162718dafb8aed1ff922c39693340433c413c2d2f3420090737170408 +141b0600001822244b40344440361b150a1d2d320f002705000014358ba8 +b2b4b3ad93393e7c8317296541242540565d472f0f161540beb5b2aeada7 +6f2f5f7d1d1935374161856c231218212f22231d97bab9b9c8947c8fa9a9 +9b9299815362554b372f2b1a2a61a056623f141e1d1a1d26241e1f221f15 +1311202827466b6f43210b142227251f2b375b7f9db4beb2b4b0aaa59b7d +6769644d43352f2a2c493f425f911d2b2a26354672a0b3bcc8ccc6c2c1c2 +c1b5a68d654e303743475d714660719ad4a431383a3a3127241d1f281f12 +030702121034465678a9d0e2ecf6ff8b2f3b6c8a437d4607162032382f30 +302d2a28292a2b2a2c211d2327232222152a27273e322b2408c1ffedaab3 +c7b7bbbbbbbbb7b3b5bbb9b9b9b7b4b4b6b6b8bbbcb7b3b4b6b3b3b4b6b4 +b2b1b3b5b8b5b2b14444454545454545453f3d42474646453641525860c4 +c7bb8d91b3b3adb0b2bba47ec2bbbec5b3bbcdbeccc0cdb6e5f0e3e4d3ee +d5462d3f423c363c463f38403c3c3a39383836352d2216100d0b0c132647 +411b0b100d050a0e161e29313335332c2121272c30333434333332313130 +313132323333313232312c23242e3b444e534124181a1e24313cdcc96d2c +491a22492d330d001a1627201336507caf86cb7d7e2f3759583f332b211f +242e40505d6169747f7c6b5a3b2f2324334d6b8197b8b8b3bfbbb6ced1f2 +e35d44637789a1a59d928c8892a7a899bef886273a734b574a3d46443430 +281e2449a9aaa4a7a6996c3b2b2b241e443d374d4c442a23152227352a3c +a6aab2b0a7a3d2d5d1cbc9c3a84b4f898f202f6b44272b465c6049331823 +2656d8d2cfcbc8c084416e88241f383a4363856c23121b2431262729b3da +cec1bd744749554c413f554a28413c382c2b2f223368a357613e1622261e +171a18121215120a090a1d27294d73754424141c22211c1523242c2f2620 +1b0b1519171c1c0b041520181f2024293152494c699921291e0e0906182d +2a1f1c1d1d1a191d1d1d2535486b88b3cdd0d2bd5048577bae7600000000 +000003030a1d2023273637402a3e425076acd9eff6f8f8741d2f698d4c89 +52111a1d272415120e0b0c0e141b2023271e1a20211d1a1f1a2f221d3630 +34341acbfddb8d90a28f908d8d8d8985878d8b8b8b898686888b8d92918c +88898885858687858382818386837f7f4545464647484848484240444847 +4748414d5e646cd1d4c89b9fc1c1bbbec0c9b089cdc6c9d0bec6d8c9d7cb +d8c1f0fff8fcebffe7583c4b4b453d414b423b413d3d3c3a3a3a38362e25 +1a141312151a2d4e47210f14130a0f161f2a364043433b3027262d33373a +3b3b3a383636353539393c3c3c3c393737332d23202a37404a504022171a +1e253542e3d17738572c3c6b5459280e22172724214c709dcaa2f0a19c47 +47615b3f3329201a1a2231414e545c6977796b5d433a3137496482939cb8 +bab6c8c6c4dcdef9e2512d414d5b7272655244363645483e71bc5e133575 +4f5d5a515a57474440343759b4b4b4bab5a77a483839332c544e485c584d +31240f1e31463f4fafaeb4b4b1b2e6eae3dddedabd5f61999f2f3d795336 +39546c6f553c212c3061e5e0dfdddbd49957839c372f4949507091762d1c +242d3d313335bfe9e1d8dd9b757b8981746d7c6943564f4b3c3a3b2f427a +b669714e232e2f292326241c1c1e1b121212262f35577e8358351b1e2021 +2120384256625e5a523f4d4e4b4a472f232f372a2d292c2f3759535875a6 +2d362c1e20213b565854545858555455524c4c4d4c596281999ca6972e22 +26457d54000413180f090c0e1d3f597595b8c3c79993756c84b3e2f7ffff +ff8e35457c9e5b975e1a23262f2d1e1c1c1918191d22282a2e2521272b27 +25261d322826433e434328d5ffd77b72765c5d5b5b5b5753555b59595957 +54545658585c5c5753545451515253514f4e4e505552504e0f0f0f121213 +1313110e0e10110e111b1d8ac6c7b9c7c7bdb9bed1d4d3d7d1d3e7d6dbda +d4e1dbe0dfdae2dee0dcd8d3decfe6d06b121b1d221d1b1f1f1d19181c1e +1f1f202224271c19171a1c1d242c374748404c5e6a75808a93979a978e76 +533e3735332d2826232425282a2b2e2d313131312f2e2e3033393934343f +5158716f654b2e282d2a281195d78c2a4b2a3e8e898a4d191c1a31323c52 +8c99be7b995442043156453b3d3733363941505f6c747d87959c988e6e59 +4336333c51627995acb1b5b6bbc1d1e18b0b1f221c343d4d52546983a1be +b7afdad7501d356b3c16152e435e5a2923190f0032140101091202000013 +1d1e29373962756523090c292f2a0f00290b0000112b82a3b2b0b3b29b4a +367f8c271b5f4c2a2b52535f632f0d15122cabb9afadaeaa7b2c58803416 +292d3c577f67291621252c1a261777bfb8c9dea97c999fa0999797896761 +534338372c1f345287444c4d1f2b2a221e212120211d161117132429213a +54493c2e1b1e2e241921273157789ab7bfb3b5b3aaa8a283696d6a4e4e39 +2b3d352d3c403d3c02242f293440699cb5c0cfd4cec7c6c9ccc4b59c7758 +2f354443526a4a4c6aa3d9c42a3031332d231e1616202113040906160e2e +455676a6cee2ecf6ff92282f283c223f7b1512132629232c2f2f2c29292b +3034614b3b3835271e180d2a38416b49412e057efaffbbb5c7bac0bebebf +bebab9bcbebebdbbb9b8b9b9bbbfc2bdb9babbb9b6b7bab9b8b7b9babab7 +b4b44545454545444444423f3f434444474b43aae6e7d9e4e4dad5daedf0 +edf1ebedfff0f5f4eefbf5faf9f4fcf8faf6f2edf4e5ffeb88313c414742 +404444403c393d3d3c3c3c3a3736261c15110d0a0f17263329130e0f0c0b +0d1620283237322e2a2724282e2d2f333233323331302f2e303031313232 +313132343026222a353b5452493119161f1e1f0a92d68c2a4d1c1149323d +23071214271f2128536bb78fbe7f621b3e5a4232322b25242428323f4c54 +5d67747d7a7155432e242532485f7a9ab0b5b6b6b8bfd1eaa1345b727b97 +9da4988988909daea399c7c94b1d3a78552d1a2f48655f2a17172c40a9ab +a7a9a79f74412d2e251c22343c697f723014152d292c29329ea6aeafa59e +cfd6d3cac9c8b05c478c983021654f2d31585962663214222340c2d5ccca +c9c3903e688c3b1c2c30405b8169291621272e1c28218dd6c3c0be70252c +1e151218292e1c272c2a272f2b253b598d454b4c212f312413110f0e0d09 +05020a091e2823415c513f311f222c1e10171c1a292b2a2a200f161a151b +200c00132013241d1e38393446494742042023110a000f29271b17171715 +141718181f2d3f596e9ec2c6cabf60436198c7ac07080508040408070b1b +242326363a422839414d72a9d7eff6f8f97c1621203b2848851f19121a15 +090c0b0b0c0d121a252d5c483a3732241815112e363c6549493a1388f9f6 +a697a59494909091908c8b8e90908f8d8b8a8b8e909697928e8f8e8c898a +8b8a898887888b8884854747474848484848464343464746494f4eb7f3f4 +e6f2f2e8e3e8fbfefcfffafcfffdfffffbfffffffffffffffffffffcfffc +ffff9a434b4d504b484a4a44403e424040403f3e3b3928211a1614101620 +303c311a13140d0d1019252f3b423d39322d2a2f3435373b393a38393736 +3433383839393b3b38363738332620273237504e463018161f20241199de +9634592b2665555f39131a1628232a3c7490d8b2ebac893a51664937362b +25221f2128323d454e5a6b7878735b4f3f3a3e4d65747e94afb6bbbec3ca +dbef9e26424f4f686d715c4338363c4c444483982e133e815c352d445c78 +733f2f2d3e4cb1b4b3b6b3a97f4b3839322a34454d798b7b3818122c333b +3a43a8abb2b5b1b0e3e9e4dbdedfc570599ca83f2f735e3c3f6669716f39 +1c2a2d4bd0e3dcdadcd7a5547fa24d2c3d3f4c678d7535222d333a28342d +9be6d7dbe39b5a665e564d4f56513a3f413d373e39334b699d575b5c2e3b +3b30211e1d1a19140f09131228302f4b675e504028252d2015222d344d57 +5c5f564450534d4f4e34212f37253229253e3c3a50585350112e3121201b +3252575355575753525355504f4e4c53537592949c953a182656897c0006 +121b120c0b0c1939597191b5c4c7978b746a81b0e0f7ffffff932e38354d +38579129231a24201419191919191c222d34634f403d3b2d221c14313b43 +715556482092fff2957b7f65635e5e5f5e5a595c5e5e5d5b5958595b5b5e +605b57585755525355545352525557545351151414141414141417171919 +140f162102a9e9e4e4d2e0e5e7e6e5e2e0e6e3e3deebdbebe6e2ebdfe5df +e6e2d9e0ccd2c4d5b37c102918221a1c211e171c231c212225262828292c +1b191a1e1f1f2a373f3f3c485f697282899297958f8675593d3031353228 +23252326292b2e2f2e2e3031302f2e2d2e2d32393a33313c4952746b6755 +322c332a29335dab8f2a43323da59b935f22141d3528392e7782b880acae +820926512e1928292f393c393e44556476808b9599978a72574033313f4d +797393afaab1c3bed1c444151c2c283d3e575e627a96afc3bfcdef8b4319 +206942032c78747568191f1a1100290f0000000b0000000e19192a3f3050 +70712c100a2f2a1e1100331a00000b23799eafaeb6b8a259368695371843 +35283c695e7b833c19201621a0c0adafb1ac7f2855823e0f212e3f507764 +361f2a2c2e172b1469c9b9ceedc28cb0c2c4c4c29b98816b6e483e453025 +2e21232628311e2b18252d2b2525231e1d1f150e21261b2a38212d392d2c +3f3221311a29607795a2b7b9b1b3a9a9a7866b71634f5b3b274d4e342e2b +2e363c342c30353b6398b6c2d1d8d2cbcacfd3cdc4af8a65353a47414c66 +514269aad9d9252b2a2e28211f1918252415040a0a190f2c4c5978a7cfe1 +ecf5ffa21e433f322538af301e14262727333838332b2524282c533c2c2e +31271d1816254152703030210745f1ffcab5c2c0c1c0bfc2c2bebbbcc0c1 +c0bebbbabbbbbec3c6c2bebec0beb8babdbdbcbbbdbfbcbab7b645454444 +44444444474749494440464e24c7ffffffeefcfffffffffcfafffafdf5ff +f2fffdfcfff9fcf9fdfcf0fae3e9daebc9952b4638443c3e4341383d423b +3c3d3e3d3d3b3835201814120c080f19211b0e0c120e091115202a323839 +2f2624272a32322c2c2f30303232312f2d2b2f3030323231313033373427 +21283136574c49391a17211c1e2a58a88e2a46281d6e505142180f182c1c +280f3e4ea489cdd7a22134562d132120242a2a242227384756606a777b7a +6f5b402d21223145777493afa9aebdbbd1cd5d3f5c7d8aa096a0998b8e9a +a5b1aabae383421d287958172f76797b6f1a171c3238a4aaaaaea7a47945 +3130271b273c3357797b36191030242026319fadabada39eced7d3c8ccce +b76b4793a1401e49382b426f647e863f202a2435b6dac8caccc5953d6591 +4515243143547966361f2a2c2e192b1c7fdebfc1c57d252b271d1e271324 +21213d2727372c29362829292a30202f1f252116110f0d08080b04011723 +1b314029333b2d293a2c1b2a0f1337333224251c1619141a210b00101310 +2c1b16474f39363434393e3021190f010f292a1d17171714131719191d2a +384c5a8bb4bbc0bb6d4169aad5cd0e0d02050202090a1023262325363b44 +2734455074aad8eef6f7f88c07313029223bb63822121a1108110f0f0f0d +0b101b254e392b2d2e24171515243f4f6d30362a134ff4feba9da49b9792 +919494908d8e929392908d8c8d90939a9b97939393918b8d8e8e8d8c8b8d +8d8b888749494848484848484b4b4d4d48444a532ed2fffffffaffffffff +fffffffffffffffffffffffffffffffffffffffff3fbefffe0a93e56454e +46474c473f44474043444343423f3d3a241d1816120e16232d2718141813 +0d1316202d353e3f372d2a2c31393a3535383839393a3837333237383839 +3b3a3837383a362721272f33534947361816211c222f5eaf96344f332c83 +6e6d5423151c2f20301f5f75c9b2ffffd1454f6a3b1d2825282d2a211e1f +2a374753616f797c766552433b3f525c7a6e91afaeb5c7c4d9d25933445c +6172666b593f373b434f516ea95e301c33886322428c8f91822e2e314141 +a9aeb2b7b0aa804c3a3a3228384d44678887402010322e2d373fa9b4b1b4 +b0aee2eae3d9e1e5cc7f59a3b14f2c57473a507d748d8f4628332d40c3e7 +d9dbdfd9aa507ca4572533404f608672422b36383a2537278cefd5ddeaaa +5d6c6b62606143493d38523a37463a354338393a39402d3b29312d251d1c +191411140e0a202c253b4b34414837303e2e1f321f2855585e5356515055 +4e505337222f2c233c261e4b533f414342484b3f312b241a30535b555658 +5b5653575a5655554f4f486a8a8c9391451329608e9300030b150f0a0c0f +1b3b576e8cb3c4c79587796d83b3e1f6ffffffa32149473e354cc6432d1d +261e171f1f1f1d191619242c55403133372d211c1b294456763a44392159 +f9fbab83827167605f62625e5b5c6061605e5b5a5b5b5c6264605c5c5c5a +545658585756565859575453191f1d161e201a1a171c1c17181e1f1915a7 +ead3d2dccdc5b9beb6a6a3a69a827e7b79654e484b423436322523251d0e +171e25292d30363a24313c3b312e38432d3b413b3d443721191c1f21252c +353f3d414854647482899192938b78645142332d2c2b2928262528282c2f +313235363231302e2d2d2d2e322f3237322e394e646c6f62432a27312d29 +3067772f2d2530aba89a9d1716161f323227539eb28a675f3a0d16342f17 +1b1e435d6049303b424c5c6b78838b8f8c8a7a5d433836364d647f95a7b7 +bab3c0ac75351f33362b3e604e6e7da7c2bbd0eec319341c172e50022e84 +69575b1021140c0023060000000200000004161827262c51755d30292225 +371e0a00231a01000c1e61a0abaebab399642f7380570f3d403233405161 +833c11161e1a86c5b4baa9bd9a383f845c0c21362e3930383832322e282d +2c1544bebdc1e3e180afc1cccdc5b39d866f654e4938694036383131393f +49371a2c2d2b232123231e171c171d201c2a485a57585559593a31513d25 +416c88a2afafb3b0b2a3aca0706f655955453344574c443932433426341c +31384693a9c2d8cec8c5c6cbcfcec8b69f744a3c455151584c4072a4daf9 +3e282e36342f2b1f1d2628110b080b161524666678a5cddee8f4ffad2e37 +5e916f56945711342c263b383b3a342f2928282b3729211c1820251a161b +27302c201d1f0613cbf3fa9dbbc7c9c9c6c3c4c5c7c8cbc9c6c4c2c0bdb8 +c4c4c7c8c6c3c1bfc1c0c0bfbfc0c4c5bfbfbfbf424b46424a4c46464348 +4843444a484036c3ffefeef7e7e0d3d6cdbebabeb09993918e7b635e6058 +494c473b383b32232c333b43474c535a44525d594e4b535e4452554e4e51 +40261816100c0c0f14170f0b09080a0f14161f283339362d2725282a2b2b +2c2c2d2e2f2f2f2f302f30312f30303131313231332e2d2d241c2435474d +524629121321211e2964762f30221f89726a8d1615141929270f1c659487 +81855924233a301517183b5350361a2126303f4d5a646e73717062472f25 +252a47617e93a5b2b4b0c0b58a5d5c82968a8a9b7b8b8aa4b6acc1e3bf19 +3925233e62102c806b5d63151e1b323ba3a9a4b2ada78552322f2d202928 +2f577c63362d25242f1e1d3588a5a8aaa89fbedfd2c8d0c9ae7640808c60 +1543433539465764863f151f2b2c99dccbd4c3d4af4d50946312273c343f +333c3a34322e282d2a1d5cdacab8be9c15241c18181c1d1c1b1d2b272c26 +63423c4038373b414b3b202c1f150d09090904020807111a1c2e50625a57 +4f514f342f4e3717243a3b3c30211b161a12222100070f1420211e39554f +483f334533222c0b140b0031272524141415161715161922364256769fba +bca9684277a8dbf12806030504050a080d1e261d2b323b3e2d2c5f5b74a8 +d6ebf2f6f793141d467d6351955a102e1c0b190f100f0e0d0f141b213226 +201b171f22171319252f2d2321250d1bd2f5f28b9da49f9b98959697999a +9d9b989694928f8d999c9d9e9c999492949391909091939490909090464e +4a454d4f4949464b4b46474d4c473fcefffafafff4ebe0e2dbcac8cabea7 +a6a6a3907873756d5e615c504d50473841465054585a61654f5b66615651 +5a654c5a5c555557472c1d1a171312141b201c191412131517191f28343b +383029292e313335353737373939383938383738383838383a3a38383833 +312e241a213143484e43281214222322306b7e373729279789809a1e1b19 +1b2c2d1f3c8ebab4bcc38f50465444232524465c5a3c1d201b223142505f +6a72767b725c4a4347424b5c7c94aab9bebbcaba8b544a6571605b63383b +2e43544f70a39201322c334e701d419782737628312d3d40a4a8a9b6b1a9 +88553836352b383740678c7142362a293a2a2b4192acb0b4b5b2d0f1e3d9 +e5e0c38a52909c6f23515244475467738f461e283438a7eadde5d4e6c25e +64a47320354a424d424847413e3a3237352868e8ddd3e0c94d65615f5b57 +4d423733413a3e36714f4a4d48474a5058472c382c221a1716140f0b1111 +1b2426395b6d69655b5c5738345541263a555b635b5354525549554e232a +2a29302b253d5854544f455441313b1b26201c57555c6153555556565654 +5452574e4c5d798f907e4013345b8db003000c1814111110183655658eab +c3c29b7f957b85b1dff3fbffffac2d3660967b65a7691e3a291a2a212120 +1d1b1a1d2429392d26211f272b1e1a1e2a34322a2d331d26d8f2e575817e +6f6764616263656669676462605e5b5862616364625f5b595b5a59585859 +5b5c5a5a5a5a1b211e1d241f1718271c151516151d2b1b2925263325131e +2715132022181e2f38242332373a4245374146444143474747433e3f4446 +4341443d363943494843515354555954381a201e1f242f383e444a52585f +6977879098948877624d3c312e2a2a2a2a29292a2b2d2f30333536363230 +302e2d2d2d2d302f3337322d37495d676f674b322b32332a29505d20261b +21696957752b0e180f2638384f7a7331111311081832342a22244a555941 +2f3437404b5867758188919491816a5543353c4c6c8d9ba0b0c1c3b59465 +443b3c425b5e5f7f8faba4a9d1cd73152c1b1b37371b395c505555262410 +0200160a0000000804000003161b20352b2033443e3a382f382918001121 +090109175598a9afb2b5a471356d856717414f36312c34351f2e493e2211 +6ec1b4baadb8a1483a8075141d3c3c3b2a373736362c2630301633acb5bb +ded97ba8bdc8cac4b29b846e6453554b7c55433d413b3f4a422e23222b29 +211e22221f1a1d1820272124384b494e4e524b2e274431223a5b77a6c0b2 +b2b2b3a8afa57a756a5e5949353d483b326069604a1e142f29303d7fa8bf +d5cdc9c8c9ccd1d3d2c4af895c4548545253544f83b4e5ff5e423b44484a +47362d342c130e090c1614235f6073a1cbdde9f5ffac36425c86c0c2ca97 +2f4d36353e3e3f3b363029282a2b2c1e1715141d1f141c1b1b201d151111 +14068ef1f8bdc4c1cbc8c2c2c6c8c6c3c7c7c6c4c2c0bfbcc5c5c8c9c7c4 +c3c0c1c1c1c0c0c1c4c5bfc0c0c13e44414349453c404c423a3b3938404c +38443d3e4b3d29343d2b2734362c32424a363544494c5457495358565355 +5959595653565b605f5d605a53565c625f5a63666564665d3d191a120a09 +0e1315120e0b0a07080e182230343837322b27272b2d2d2d2c2d2d2c2d2d +2d2d2d2d2f2f2f30303131313232332e2e2e261d2331414a524b321a161e +231e204b5a20261c1c5a47366a2b0d160a2032241e424a2325342b1a2437 +35292122464f4d311b1e1e25303d4a58646c747977685441302631446687 +969aaabec3bea7887a83929699897e9296a99ba1cccd7a203a2928444424 +3457525d612f231c2a2e97a9a8b3b1ae905d39333128263831253947403a +382c312929286ea4aaaca9a0badcd3cacbcbb983467a91701d4752393732 +3a3821314d462e1f80d7c9cfc2cdb45b4b8d7c1a23424241303a3a38352c +242e2d1e51d0ccbdc59f18241a1516181a1b191b26263334715549454842 +424c443027201d13090606060300080713201f2841534c4c434441292848 +301825363d5553301e181b15222000070d131e1f1b31433c3461685d471a +1024170d032a312b2716191b1c1c1a191a21323e4e668dacae9a6a4e86b7 +e2fa41140000020b120c0d20251d2a323b3d2a2956556fa4d4eaf3f7f78e +15213b69acb4c5962d4524181711100f0d0c0d131a21271b1614131c1e11 +17161a21201813131a0e99faf6b0aa9da09a9494989a9895999998969492 +91919a9d9e9f9d9a9693949492919192939490919192444847464f484242 +5245403e3f3c4653404d47485547343f4836323f41373d515e4e4d5c6164 +6c6f616b706e6b6d716f6d676466696d6b686b625b5c636967606d6d6d6b +6c62431f1e161110151a1d1b1a19171311151e2531353737322a26283236 +3636383838383937383837383737383838383a3a383838333231261d222f +3d444e472e18151f2420255161282e21206157497835151b0e2236303c69 +74546477664a4a544a3b3130555d5b3e26211a1c27344452606b7882847b +6b5c4e3d3742688b9da4b6c9cdc5ab846c6d75726a513a4137453c4c889b +5b123b34385554334a6e6970713e332a323293a5aab4b0ae8f5e3c373831 +3247413849584f4640333933333276acb4b6b9b2ccefe3dbdfe2ce97588a +a17f2b55614845404a472d3a58513a2c8ee5dae0d5dec56a5b9d8c283150 +504f3e49494543382f3938295bdcdcd4e3c74e605d595752493e332f3b3a +44447f6155525852515b513d332d2a20171312120f0b110f1d282a314a5e +5b5a53534a302c4b3621344856757a605854564c564f292c2a2a302b2435 +474141737a7058291e3227211c4b5b5f6256595a5b5c5c5a5a585c554e55 +6e8485704620436891b619070b191c20221a1c3b51628ba8bfc0977d8d75 +80adddf2fcffffa8303c5885c7cdd9a63b54342a2c2624201d1a191c2429 +2e221c1a1b24261a1e1c1f25251f1f2028199ff7ea9f937d736660606466 +646165656462605e5d5a6362646563605d5a5b5b5a59595a5b5c5a5b5b5c +35342e333a312b33343237404038363b31393e3e3b383e46424142424143 +4f5b4548473c3e575f4d5d50495462665d555a5b5d60656d767968707978 +76767f88858384867c5f371c2622232c3c474849545e65686d788892978a +765d48372d292b2b2b2b2b2d2d2e2f313232343535343230302e2d2b2b2d +2e2f3237332e354052616e6d573e312f332d283c491c2312132d3f468978 +1c0f23242e2d3a708b5f201c222021282c2d3126403e5649392f30343c44 +50606f79848b9390826a4a2f363247718e9aa8bcbdb8ae97704e47596d59 +6e90a1ac8da2cd9b191125191c3e64646b5b4d4b3c304c34160018180901 +020e0c0000000c14224e52373a50504038272c312b00063812030710468d +a7b2afb8b07f395f877911355b3c392b352c3e353319192068ccb6bbb7b8 +ae5f3270891a10333934293e362e281f203035181992afaed2cd7895acba +bebaa9937966635657496d483529273a46563b1a261f29261e1a1f211f1d +1b141823211d2e4842362724251a1b332a2134455996bb9cb0b5b5acb2aa +85796f645b4c383635282e6563546e3f002221283466acc4d6d1d2d2d1d4 +dce0e1d7c1a1714e4a55514d525892c4eeff8a5d5c656b75705545473216 +110b0e161422555a709ec8dee9f6ffa934475063d8f3dabe3e5843464447 +413e38312b292a2c30231d191822251c26201d1f23201d191f0046e7f4da +c6c0cec9c3c4cacdc8c1c4c6c8c6c2c0c0c0c6c7cacbc9c6c5c3c2c2c2c1 +c1c2c4c5c0c0c1c250504b5057504a555351565f5d55515648505555524f +525a545354545254606b5658574c4e676f5d6d60596472766d666b6c6f73 +7b858e94838b92918a8a929b9392919183623616170d06091318150d0b0a +0b080710202f3b3a362f2a27292a2e2d2d2d2d2d2d2c2c2b2c2c2c2d2e2f +2f31303131323232333030312920232b394653513e241919201e1d354419 +2416192b2d318175160a1e20291b123e5d472b37362e292c2d2c30253f3b +4f3e2b1e1c1f242c3744535d677078756952331c26263c678794a5b8bdbf +c0b59e8b909e9875829ca5ac8da6d8ab302a392b2a4a6d6763534f564a3c +4e403d3591ada9a9aaac915e342928232a54593c3d514d3c352425303926 +5bb3acabaa9fb4d9d5cec8cec5914a6c9382173b5e3f3f313b2f40373721 +232c78ddc7cec8c9be6f3f7c91201639413c30443930271f1e2d2f2140c4 +d5c3cea82b241c1716191c1c1a1922222e2e5f463931314249593d1c2a1d +1b1006020305040204000b1c1f213750483318131a19233d2e1f292f325a +612721191b17222006070c111c1d1a252e272d635e4f6a3d001f1911071d +3f383121282a2b2a2725242933404955779b9f8760518dbddff658180401 +05161d0f0b20251f2b323a3d29274c4c699ecfe8f3f8f78b10202940bee1 +d1bb3b4f2e271816100f0d0b0d121a212b201c1a182225191c191c252825 +1d18220853f3fad3af9da39c96979da09b9497999b99959393959b9e9fa0 +9e9b9896959593929293929391939495575451545d534f5758545b626359 +585d50585d5d5a575b635e5d5e5e5c5e6a786a6f6e63657e86748477707b +898d847a7d7c7d81888f989d8c929996919199a19c9999978b693b1a1c12 +0b0f191e1c1516171713121727323e3b362f2a27282c3539393939393737 +3737383637383636363638383a3a3a38373433332a202328343d4c4d3a23 +191b2221233c4a202919192e39408e80201122212d272c6184796b7a715f +4e49423e40354f4c614f3c281e1c20283340505c697581847c684d30302a +426f8f9eb0c6c9c7c4b3947b7c7f6b3b3b4a474c335aa087202740373758 +7c787a6a646857485b4c44358ca9a9aaaaab905c332b2c2a3562694f5063 +5e4b402b2d38422d62bbb8b8bbb0c5e9e4dcdce5daa55c7ca39125496d4e +4d3f4b3e4c43422c2f3a87edd7dddad9ce7e4f8a9e2c22454e494052483d +352b2938392a47cbe0d4e5c9595a5956534f473c302b3638403d6e53453c +3d4f58684c2b362a281d130f0f110d0b0e0915242a2a405b56442b252821 +263e3124313b447384545956574f5751312b2b2b312d262d352f3d787263 +7b4b0b2a26211c3a66696b5f666869696a6968666561524d607978613f27 +4b6d8eb235111a252c383927233f51608aa7bdbe967b836d7ba8d9f1fcff +ffa32c3d485edbfbe6ce4c603f392f2c25211e1a191c24293227221f202a +2d22252021252b292726311359f3f0c39d8176655f606669645d60626462 +5e5c5c5e646668696764615f5e5e5d5c5c5d5d5e5b5c5d5e443c32363e35 +34433e38302d3341494b484c50453e53604f586065605b595b5b52697560 +5063756b767d898975646f878c94998f807c8b9b8095a69a7f6e78877f85 +8f8f7446251d24252b3847504f505a63696e747e888d83745e47352c2828 +27292a2a2c2d2e303232323332333332302f2f2c2c2a2a2a2e2d3238362f +3139485a6c706048342b2f313239472c2f1a1c293b4383892917211e2e33 +325c87703225231d1b2d3e3f2d223523393430272f323438404d5b658189 +91989785664a60483543698ea2a7b0b2b4ad92705a60686784a4b1aea1b7 +b665000b1b181645362c373534383040382405000c20160b0c1a1b050009 +1e291c3a3d272b413e2a231c212f330300461500050b3c84a8b4b2bab588 +3e4e8685142a623e38294239483c371f191447cdbbbfc3bdbf7e3b6b9231 +1c353d424c69492710152233371f0681b3a6c8cb8783a6b3b8b4a48f735f +6459513c4a2d221b236068724e141f2527241b181c20221e2015121d2320 +33577c5328171b222630211f2f3d437cac8bafb6b5b1b4ac907c73675d4e +3b322d264a5d4d49886f0c1920243253accbdddbdcdad9dce2e7ede5d1b7 +86574b56524a4a5795cdeeffb47184898e98906d56513819140d10181624 +4e566d9bc5dde9f5ffaf304a4f54a6e4c8c1494c4b494749444039312c28 +2a2a2821211d161c211b1b1915161c1e1f1c270d18bef6e3bfc4cececacb +cecfcbc6c3c8cbc9c3bfc1c2c8c8cbcccbc9c7c5c4c3c4c3c3c3c5c3c2c2 +c3c5574f474e564e4d5f575149454b565c5e5b5f635851667160676f746f +686668695f75816c5c6f81778289959581707b9499a4aaa19493a2b297ac +baaf907f87968c909a9677451f110f0a080d1619130a0706090d131d2b36 +36332d2725282e322e2d2c2d2c2b2b2a2a2a2a2b2c2d2e2f2f302f313031 +3131333031322b232125313f5155472f1c131b1e232e40272e1b252d3337 +757c1b0b1b1828231233575036383225202d3d3e2f243824362c24191e1f +21242b354149656c767d7d6d4d334c372839648b9fa5b0b6c1c5b7a09495 +83728ba7b1b1aac7d1861a30392e25503e2d2e2b3744414d3a2d262076a2 +a19ca0a48f613a3136362642442e2e3f39231d161a2e402a4cb8a9a6aaa1 +afd5d8d0cbd0ca9a4f5b928e1a3065413e2f483f4c403d25201d54dacbcf +d0cacb8a45759837223b454a53704f2a12131f2d2f282fb6e2c6d0b74a23 +221b181a1d1c1715201f241d3a2a26232d686e7550162323191005000204 +04030600021622243c61865519041022313e271f29302b4f5d1d211b1a1a +201e0d050a11171b191e2323495b4841846c0e1b1e160d1146433a2b2f32 +33322f2c292c3343474963888f79534e8dc2d9ef7419160e0e1f26120a1e +26212f353d3e28264348669bcce7f3f7f8910c21232d87cdbfbe48453829 +1915100f0d0b0c11191f2320201e161c21180f0f161f24231d18261529d0 +ffe1a9a2a5a19d9ea1a29e99969b9e9c969294979d9fa0a1a09e9a989796 +959494949394939596985d554c525a5251625b554d494f5b62646165695e +576c78676e767b76706e7074708b97827285978d989fabab978691a7a9b1 +b4ab9d9baab89db2c1b498868e9d9496a09c7e4b2315140f0e141c1f1b12 +0f1014161c26333c3c37302826292e343638383638363636373735363637 +35363535373739393939393536362f25222429364a4e422b1a131c202834 +472d341f242e3e45868d2a151f1a2c2d27517d81757a695340454f4c3c31 +473649413828262323252a334048646e7b868a7d6043573d2f416b94aab0 +babfc7c5b09485795838455657565988a8711738443b2c564b3f43434a54 +4b5646362b1f74a0a4a1a2a68f603931383c2f4f544041544d332b202236 +463154c2b7b6bdb2c1e6e6dedfe7dfae616ba29d283e74504c3d584d584c +4b33302e65ebdbdfe1dad9985181a4432e47525763805f391f202a373a31 +35bcead3e3d373535b56544e483d2c263535382c4735312e39757c845f25 +2f30261c110d0d100e0c11090c1e2a2d456b92642e18202c353f27212d37 +38637d4a59555451544e372b2b2c2f2c27292b2c59705c56957d1b272923 +1f2d6d7373696f7071717171716f6d6a5a48536b6d5736254c7286ac5117 +333c3f4c4c31283f505f8aa7bebd94797b6978a5d6f0fcffffa9283f444c +a6e9d4d158554b3e332c26221e1a191b23272a2626231e24292119171a1e +26272826342030d0f9d59b89796a66676a6b67625f6467655f5b5d606667 +696a69676361605f5f5e5e5e5e5e5d5e5f615e584e54584c48555a484355 +6565656875657d91775d616678676f8989706c7f857c8e9d866f7f9a7d83 +8e917e6c78939298998b77707a867474736f6c6664626366727961392328 +222e3a474f52535762686e768086857e675848382e2825272527282a2b2c +2e2f32323132302f2e2f302f2f2c2c2a29292b2d3137373331333f52656d +655139292e333835483e452f2a3d3525414a2b2c16162e34273d6c702919 +18141f45594b4a48573e3c38373b272a2e3238414c53707886949d98826b +857c5b353a668d9aa8adb0afa999786561869aafb5acc3c4883600011519 +1248643d3b3c2d33342c342914001b3831252b342d1200031017233a423c +51715e28131b252b2d08003a1400030b327caab4b6b7b38f474488902c27 +613a261c3e3e6f64471f14173eb8c3c0b9a6a77534546731232e33445e7a +70310a182c3331240172bfa6bdd2a579a3b0b7b5a68f735e656159403c2b +2826438e7c746422182527211b181e222420241c16202a23305588613e25 +1b21211f131a283f436aa293adb5b2b3b3ab9b7c756a5e4e403430344949 +4a436054151b22263347a1cce0dfdddcdadde2e8eeeadbc596634b525047 +475392d6f1ffdc849fa3a4aaa28063573d1d1812131b17244a556e9ac3dc +e9f3ffbe334d546377e9ceca6b3e4f42464745423d352e2a2a2821273839 +2b2829241f1f18151a26343a3326067bf5edbbc1ccd1d1cfcdcbcbccc7cb +cfccc6c1c1c1c8c9cccdcdcac9c7c6c6c7c7c6c5c7c4c6c5c6c769635b63 +6a5f5b6a6d5b56677472707584778fa3866c707585747a94947b77898e88 +9aa9927b8ba6898f9a9d8a78849f9ea5a69988838d9b8787848179736f6d +6e6f797e62341815080b10141614100c09090f1a273135382b2925232529 +2f322c2b2b2a292928272a2a2b2c2d2e2e2f2f302f313031323232323232 +2e2721212b3a4d544c381f11181f27283e37402e2e413218252c10170b0d +2327121f3f4b26231e181f42574a4d4c5d413d3533321b1c1e21252b3439 +545c6977827d66516e694c2b35658e9aa8b0b8bfc2baa2876c8496acb5b4 +d7e5b46b31323a3422526b3f323433414739332929276fa1a09aa2a18858 +2e1f1f202c424b44567259210c131b28382b39a4a3a1aca4abd2dad0cfcd +c8a158519499322d643d2c22444472674d241b1f46c3cfccc2afaf7d3b5b +6e3829343b4b658176340c16292d292823a1ebc8ccc573232a201b1c1e1b +150f1d22281e2a252c2e4d96827766241a231b110702040706050a070616 +2726396296672f111223302f17182436324358281f1a171a1c1b14020710 +14171b1c24314847453e5c511922251c12083b44382b2d2f2f302d282426 +2e40434053747e6e504e8dcbdbec931d1f14101d2413091b262331383e3e +29263f47679acae6f2f5f8a21124273a56d2c4c96d3b3e251a120f0f0e0c +0c10161d1c26373a2e2b2c211214191e242b3134312c1990ffefa9a1a3a4 +a4a2a09e9e9f9a9ea29f999494969da0a1a2a29f9b999898989897969595 +979798996f6961686e635f6d715f5a6b7978767b897b93a78b71757a8b7a +809a9a817d929d98aab9a28b9bb6999faaad9a8894adaaaeafa2908a94a0 +8d8d8b858179757374768184673a1c190b0f14191c1917110d0d151f2d38 +3e4033312c282a2d31363434343234323232353535363636363735353737 +39393939383636363129221f222e434d47341e111a212d2f463e46333144 +3d293c44232613122730213760775f5e503e39536252565769504f484443 +29292929292d3438535b6b7b8986725c786f53333b6b93a2b0b5bbbebeb1 +966f424b4f5b5d5f90b099653b434a3d2251754e4749434e4e413b332e29 +71a4a9a4aaa88b5a2e202225354d5c576a866f331c20242f3c2f41b1b3b1 +bfb6bce1e8dee3e4ddb56a61a4a8403b734c3a30545481765d372d3259d5 +dfdcd3bebc88456578423540485b779186431923343734312ca9f4d4dfdf +9852605b58524c3e2f2433373b2e3831373959a3908675332730251b120e +0f10100e1310101f302f426ba177462a2530352f181925393a5679565754 +5050514c3f292a2c2d2c2c292e3c585c5b526d62252c2e2723236276736a +6e6f71727271706e6d6f5d46485c614f33264b7b86a7722042494a52533a +2c3f505f8ba7c0be9579776879a4d4effbffffb92c42485a75eedcdb7c4c +513b332c2622201c1a1b2125232c3d3f3532332a1c1c1d1d232e3a423f38 +1f91fde49f8c776d6d6b6967676863676b68625d5d5f686a6c6d6d6a6765 +6464646463626261636364657e7d7c808473656978606d9dae8d7b837774 +9ebd9c736f7a80787a878d86858a7f7078867864656e7a655b67736f6764 +67635e5c5f6163635e544849555d5b56544b4d5751372627293949515255 +59636e7378818987796a52483a312a272323232426292a2b2e2e32312f2e +2b2b29292e2e2c2b292828282b2d3034383532303a4b5c68675a43303230 +372c3f444d402039342e4e4f4027201b28281b29658b2b16171f2e525731 +38292a2b353e2417191e252b3139404652607285969c92826e8a8c613841 +69889fa8adadb6b697796d9ea7a6aea8c4a8561d0400101b1543532e2438 +364d67431316160b2a4e504d393d3824181b20220f2e3d3e65987a230c1b +2926200d002f160004072874a9b4b7b3b298553e8b973c1a4f3920234650 +5b6236182027081b0b0c0a0d25201029291c1d2225354e5d7a3a14222e2c +281e085cc2afbbd7c77fa3b2bab9ac957a626766634d3c302d253564463d +4d2c192028221c1b202424222020191d281c1d3b332e352e1d1f1e151325 +243b41599497abb6afb5b1aba57e736e5f5146353548382e3c3a302a1d1f +2424334289c9dedfe5e2dfe0e6ecf2eedecca16e4d484744414582d4efff +f688a4acabaca3876c5a3c1d1812161c182445546e99c1dbe9f2ffc83442 +455e5debd8d0913b4744454c44433f37302a282523304c55463d372e2a29 +1f1a26405c683d320235eafbcdbdcbd1d2cfc9c6c9cdcaced0cfc9c5c3c2 +c8c9cccecdcbcac8c9c9cacacac8c9c6c8c8c8c98384838b8f817478876f +7babb796808a8284accbaa7e7a858b82839194908c93877a8290826e6f78 +846f65717d79716e716e68696e737475706357566066645d5d52525a4f31 +17110b1218181410101214151c2b383c383224242324272a2c2c2c2b2b29 +292826262a2b2c2d2e3030302f2f2f3030313131323231322f2a231e2635 +46504e412a16191c241d343a463b1e36311d25211a0a0f10191b11163a65 +2319191b294c52313c303333384021131215181d22262b2e39445669797f +756755757d5836426d8ca0acb1b7c5cdb28c6a929a9fadb5e1d593604730 +3e39244d5a301d333d5e7a4e0e0f1f2c699ea3a492917b55352a28271636 +49496c9a761b03131f242a2c3295a39eafa6a5cddad0d0c9c7aa664b97a0 +4220523c26294c565e653b1d272e0f22121310132924132d3023232a2c3c +5564803d16202b241e1e207ee4cbc6ca972c2c221c1b1e1b130c19252e28 +28282f2d3f6e4c404f2e1b1e1e150b07090a0907050b0813251f24484537 +271a15222f2717211e3232344a2c1d18151b19191900030f13171d1d2742 +372f39352b292328281c1403233c32252c2d302f2c2823242739403c465d +6b65504a87d2dee8ac1e1c130c141f160e1a262332383f3f29263a466799 +c8e5f2f4f3b0131b18353cd7d0d3973d3a281a1a0e0e0e0e0e10141a1c2f +4d5649403a2b1a1c2024324556603938164ffdffbc9ca1a4a5a29c999ca0 +9da1a3a29c9896979da0a1a3a2a09c9a9b9b9b9b9b999797999a9a9b898a +898f9384777b8a727eaebc9b86908684afccad807e878f8488939a929298 +92848e9a8e787b829079717b89837d787a74716f75777b7974685c5c666d +6b636458585f54351a140d151c1e1915171814151d2c3e43403b2f302d2e +303133333331313131313131353535353536363634343636383838383836 +3635342e261c1d283b46473c26151c1e28223a424d41233d3c30433e331c +19161e221a29588e564c423c3d5858333f363c3e474f32242428292a292a +2a2c354153687b837a6e5b7c825d3946708fa4afb2b6c2c5a9764158544f +5a66a1ac83665a484e411f45603d2f474d688054151726316ea5b1b5a09c +835a392d2b2b1e41595b7faf8d30142028292c2f3aa1b4b1c3b9b7dbe8de +e4e0dcbe785ba7af502e614b34375c666f784e303a41223524252021342d +1c36382d2f353c4c6776904c252d362f27282c8af0d9dae6bd5a645f5955 +50423125313b423934353b384b7a5a4f5e3d282b271e1510111312100e12 +121b2e262c514f4840352c31362918221e3539466d5a55524b4f4c4a4628 +272f2f2d2f2b345049434e4b3f392f313327261e4a706e66707073737372 +71706a6d5f47404a51483321447f86a08920424c4c4f5041333d4d5d89a5 +bfbf9579726779a3d2eefbffffc62e3839555bf2e7e6a74c4c3f35332522 +211e1c1b1f222435525b50474134252524233048606f48461d4ef7f9b489 +776d6e6b65626569666a6c6b65615f60686a6c6e6d6b6866676767676765 +6463656666676b706e6c71675956695554687061606b6f5b5455595f543c +4b58584b4f5c5c49494b504e4d5857444e4c4d4c453e41494d443c3c4143 +3d34413d36312c2a2b2b2f26283233261f233a4551555659636e7b7f8588 +85796551453d35302d292622252527282b2c2f2f312f2e2b282623262b2e +2c2b292828282a2c2f323637332d3643536168634f3c2f2b35273a40453a +1c395c5d8e8464301f222a2d22193e713108071a2d4a48212519183f4c5e +2711141920262a31383c495666778a99a09f737c8d855832406a879aaaaf +b8beae9f95acb19badb2a9753c2000000d1a1634442d194e5c5675532829 +240a000300000000000410202827282e2d284a87823e111c2d28170e002f +1d0004041e6ba6b3b5b1b5a25e3381904e103e4226344952778b4c211422 +1a1e1d1f14181f1b24231f1f21292d323f445536272e2f2b2b221a40bdbf +c0d7e593a5b6bec1b6a2876d6c6862513e3b3627222a23212e342d242a25 +201f242827231a221815221916301f254045363b35202640282f3d538c99 +abb7b0b7b1abac7f73726253483537524c3b374138333725201e304375ca +e5ebeeece8e8ecf2f9f5e2d3ae7b51403f4039306bcde8ffff849fadada6 +a08c6c55391b1712151b17233f516d97bfdbe9f2ffca2f3a3c4653bed0cf +af4b3e503b4d4243403b342c27222227393d332d281f1e1f141220384d52 +30270906b9fbebc2ced2d0ccc9c8cacccccecfd0cecbc8c4c8c9cccecdcb +cac8cccccececdcbcbc8c9c9cacb6c7371747971646477605e727566616e +79695f6164695e465560605354646151525459575661604d575556554e47 +4a52564d45474e524c43504b443c35313030362e2b332e1d0f0a171b1d18 +110e141920242d383d382d2623222325292b2a292c2c2c2b2a2928282c2c +2d2e2f313231302f2f303031313131313030302c241d2430404b4f4a3622 +161520162d353b30102d54475846310a09131721210e1749240703152541 +43202a222349546429101114171b1d202427303b4b5a6c7b828156657d7c +5633446e899cacb4c1cbbfa888989e90aec4cfad836f4130403b263c4c31 +154b6669885c1d19211b293d302e2b2f2b201d2327262c363935528c8039 +0a1423261f2d3294a9a1b0a59dc7dad0cec7cab46f408d99541641452c3a +4f587a8d512619271f232225171c221e242623262931343b484b5b39292c +2923211f214fcecbc0c2ae39271d18191b19100a18222b2a2833382f2c34 +292430362f22231a110e0f0e0c08000d070b1f1c1d3d3532333231414832 +273a1f232c2c402b1c1a131d17171e00000e13171e1a274c4d3d353e3532 +3d2e241611030b3a33282c2e30302e2924252336423e3f4d5b6152467fd7 +e3e5be1d19150e101d1d151923202f363e3e282534426495c6e5f2f4f6b7 +1116101f34accdd4b8513538151d0c0e0f10101013171b263a4036302b1c +0e0f151c2c3e46472c2d2024d0ffdaa1a4a5a39f9c9b9d9f9fa1a2a3a19e +9b999da0a1a3a2a09c9a9e9e9e9e9d9b99989a9b9c9d717876777c736665 +78626074796a66737b696161666a604757626355586665545759605c5d66 +67525e5a5d5a554c51575d524c4b54555146534e47403a3736343c313037 +3220100d1b1f211d16131a1c1d1f2b37403e363031313133373735333432 +32303030303033333333353537353434363638383838373535333430271d +1a223240484532211918251c343b43381a39635c7a6b5021151a1d25261c +326e5033262c3246401b262127525f703620262b2c2b272625242b344456 +6a7b82835b6b807f5735456f889babb0bcc2b5935e5d59415e7a968a7d7c +5b4d53401b314f3d265c72708c6125232a23304944463f3f382b25282c2c +3541494667a0964f1c232c2b22303ba0bab4c4b9aed6e7dee2dedfc88150 +9da8622450543a485f688da2653a2f3d3337353526282b252c2d2c30343c +444a595d6b483839352e2a2a3364e2e1dae1d66c645e5a5754473629323a +403c3540443a384037333f453c2f2b221816161715110814111328232545 +40424d4e48514f34293c20273641665c52514a514b474c2726303030322b +345a5f524a53484249372f21231e336f716c7374767678777673696d644d +3b3c444434183780879a991e3e50504d4f47383b495885a4bebc94786c63 +79a2d0eefbffffcb2b32313e53c6e2e7c75f464e2e37232222211e1c1e1f +232c3f453d3732251919191b283e4e553b3b2624cafbd3907a6e6c686564 +6668686a6b6c6a676462686c6e706f6d6a686c6c6d6d6c6a686766676869 +48504a444a4b4343404b4d403f4846393d40444342413d373e3c4147463d +393a372c2f342d27272427211c1c1e1e1c1a191814141311110f0b0f1419 +1d1c16141118242e2f2d36464c545a5a5c626f798084888477634d3d3d35 +302e2e2c2926262828292c2d2f2f2f2e2d2a272623242b2e2c2b29292829 +2a2c2e313537312a333f4e5d696b5b482928372a3b3b362a2e559f859d90 +7e602a272126291e4385652411202a3b412412233567555e2926191b1e20 +23252a2f343e4a55698399a4b17a687a6327234e6e8ba7b5b8bbbbbfbeb2 +b790afbd8b4d302b00000f1b18263e2b0e637a41534720272b1c090d0206 +00060e15202a292021171f2f4360592d2221322f130d002d270206021765 +a5b3b4b2b9a7602474836b1b3b4d273231345d71392c1e2122231c231b28 +251e301d26211b252b272d2e2c2f393b32363c35262bb0c2bccdeea0a5b5 +bdc0b9a78e7570655d5447535340433348433042482e2b28292d3639332d +242f1d152828274263555754494f401935552a264565a1aeafb8b1bab1ae +b081707265574b35385761503843403136191a172a3f63c9ecf6edece7e6 +e7ecf2f1e7dabb8b5c423f433a2a63ceebffff809cadada6a29275563b1c +1813151b16233a4d6a94bddae9f2ffcc2c3d443e6496d2d3c2623d5e2b3f +3e42413d362f2823362c2b262022231d202018161e27261b181817008bf7 +fac5d2d2cccccccdcdcccccaccced1d0cdc8c7c8cccdcdcbcac8cdcecece +cecdcbc9c8c9cbcd464e48424a4d4749455352434047443741464a494847 +433d4342454b4a413d3e3c31343c352f2f2c312b2626282826241e1d1d1f +2223201d16181b2024231f1b14171f28231a1c2422201c130d0d161e262f +393e3b30231b222323282c2e2d2a2d2d2d2c2b2a2a2a2c2d2e2f30313232 +302e2f2f3030313031312f2f302e261e222d3a46504f3f2c0f0f231a2f30 +2c1e19387b4f4a373428030d0c1b2d181d584b1404172235381e12284376 +6266282416181a1a1a1b1e20222b313b4b64778294645974632b27526e87 +a4b1b9c0c4c1ae9ca88ebfe0c396858331323e362227412d0a628352644e +16172420222f252a242725232429271f25212d3c4e675b2b1f1d2b2a1826 +2b8dafa3b1a396c0d9d0cdc8cebc71337f8c722141502d3837375f733b2e +202325261d251b28241d2d1c2928222d3330363531323b392f2e322d2330 +bcd1c3bebb46231814181b190f091a21262b2f4953484d3d50493244472c +261d120b0a0a0704001106041c222a4c7560524744524a22344f24192b30 +44321b19121d17172200000e15191e16234c605339443f30381d1d0f0f07 +01413e342a2a2e2f2c282323253743413d43536057457adce8e8cb211b1c +1412202217141f1e2d343d3d2724303f6194c4e4f3f4f9b6101f22193d77 +c6d8d26e344609150d0f1011100f11132c292c29202223171213171b272b +1e10141c2a139ffff0aeaca7a19f9fa0a09f9f9fa1a3a4a39e9b9c9fa1a2 +a2a09c9a9fa0a0a09f9e9c9a9a9c9da0495149434a4c484948565648444c +473a42464a494847433d4642464c4b423e3f4035383f3832322f332d2828 +2a2a282624232223252523201a1d21282c2b2421191c252c271c1f252424 +211713141c23252a353e3d372d2931333436393a38333333313131313030 +333333333535353536363638383838363735333434312a1e1b23313e494b +3c2b1012251d333634282a4e9571766359431518131f302236797239202a +2d393b1e142b467d6b713632292d3134353434332e31343a496175809667 +5c76652c28516c849faeb4bcc1b48d6d715180a6967b808d47494e3d1a21 +46391972925c6b561f212c29293b39403738332e2d2f2c252e2b3a4c607a +7040302b33301b2a3199bfb7c5b7a9d2e7e0e1dfe3cf8546919d84315161 +3b464548748a5243373838372f3427322c23342230302c38403f47474443 +4a473a393b3a3846d2e6dddde479615b5756554b3c2d3536393b3d545d53 +59495d57415357392d251c19191a16120c1b100e262c3155817269615a63 +532739512620384a706855534c544b4a5028233030303326325c72664b56 +4f404528261a1e2028737d7a707072727372716e6b6e67523b333a42391a +348487949f1b4157544e4e483c384551809fb7b89176656074a0ceedfcff +ffcb27393d385c96deebdf7c475c222d232223221f1c1b1d3430312e282a +2d211f1d1c1e262e291e232831179efdefa087746c686867676668686a6c +6b6a666267696c6d6d6b68666b6c6c6c6b6a68666665696931303b423d3f +45413f30313736383e3a3730332f33322635373d323c34262d1417211c18 +2b271a43280a18180714150a1a1617020e15001b1010181b11110c082016 +33413a4249526056526479787782868888775f4839353532312e2b282626 +2729292a2a2c2c2c2c2d2c2b2826282a2e2d2d2c2b2c2d2e2d2e3132322f +2e2f2934435765675f56322a32332b3535222b83b09e9cb0a59d4b292019 +23283268722e201f2f32413f16163a4454722e2a1d181a221d14131e2c23 +374b5b728899b9a982502c252e375c6c96b3b4b9bebbcaccb29cb9994245 +331d0000141f1c373f36384e47353c39262f271d20201915181c1a171a23 +2723182c23231d28422934312c2b2c1c00272c04060a1d60a2b4aeb9b4ae +7b2b678177103a442d4d443f334833373b22222221202022232424201e24 +1e153b4a2f342b394337252a36342d248ec5afb8e9a893bbb3b8b8a69c77 +67655b594c5366404546473c4a343d2823313f46535b503b3c2a2b2e2b2d +302c45463b392e29321e2e4f24314875a9aab5b6b6b6b8b5aba070746556 +53413642483d2e58606b4d181e25292b52a2e0f0f1ebdfdce3e9edeaedd2 +c1a468433c36343a4dc1efffff8a98a1a4a4a19c8c6e4a1f1c1918211e20 +3c546d8fbcd7e4f8ffd024372a3a6787e0d4a89d3668343740413f3e3c36 +2c2125343e311b0f141e1c1d171321342f1a1a11220b39f0fbc9c2dabcd3 +d0d2d5d2cccdcececbccd1d3cdcccdcececccbcacbcac9c9cdcdcccbcece +cece2a2930352e323a393b2f3036313234302f2b2f2b31302435373d323c +34262c1216201b192c2a1d4830122222121f20131d192011232d0b2a1913 +181b181b1d131b09222c1f2220212514050f1c140f1e303c433f30231d1f +23242628292c2d2d2a2a2a2b2b2b2b2b2d2e2f2e2d2e30313130302f2f30 +303130313231302d29261b202e3e494a403714101d231f2c30160a4b582d +1b2f374309000b14271e08313f0508142b2e36320d184b5b687c281f1a17 +1a211e14141d281b28353e5161749d95774d2f2a3137546187a6acb7c2bb +b8bab1afe5da96a6997d4b2f392d172c383336504e3e453d2328201c282d +27252425201b1d262c2a213931312b344a323b3526242b2f1a81b0a1aca6 +97b7d2d1c7d2cac38d3b768d82183f4930504740334833373c2321211f1f +1d2021221f1e1f29221c4151363b303b44362327312c2122a5e9d0bfc354 +111f0f16231c190815282730324663444d4f4e424b333a24222113000001 +00000700020c111d2d304c4b3c362a252c1b2d4e23241e282f1616131316 +1a1e1d1d000f1215201a1a3244403660676d4a151b1e1904052e453b342e +2b2e33342e28302b3d473636494f4c505fcaeae5d033221915161f231b18 +221929353b402d22324a6692c5e4f1f8f5b30d24171c2d4fc3d3c3b3274a +1a1a1914100f10100c0a162d3b321a0d1018111514122031291416102815 +43f9ffc2a5b492a5a1a4a7a5a2a5a7a6a1a0a1a3a0a1a2a3a3a1a09fa09f +9e9ea0a09f9ea1a1a1a124232a2d272c36373c34363b3532322e2d282e2a +32312535393d323c34262a131b26211e312f224c33152424142122182622 +2716262f0f2f201c222722242519221028312425242429180b14241c1826 +333e4642362b292c33353736363533332f2f2f3030313131323334333131 +33373a393938383937383736363633302d271a1f2b3a46463d34120f1c24 +213136222570886354676466240f14182a271e4e5e232025393c46441e27 +55636f86362d2325364b565455595a403f41404c5a6c9a967b5436303637 +515b80a0aabacbbdaaa29591c4ba7c928c7b4f3842361e34403c435f604f +54492e3027212b33303232342c26242d303028413a3c38445d434b41302b +3033208abdb2c2bcaccbe6e3dbe6dfd8a3528da3982d535c415f56524b64 +4d4f5137312f2a27242526272523232d2b264f63494e4450564630303837 +3738b7f9e3dbea864d5e4c515a4f4b322c37343e3f506e505a5e5e525d43 +4b32282b241a181d190e170e101a1e28363b5e5f50493b3338223253282d +324a62545856545455534d49212f2c2b332c293f534f416b7179551e2426 +2417255b7f7e76706c6d7477746e7261625a35252d2f322c237786889522 +4557534e4546494545477799b1b5926f6465769bceecf9ffffc921382b36 +5374dfe5ccbe3e6433302c2822211f1d17141d34423722181e261f201d1a +283a3522241e341f4cffffbc8787627169696b6a686a6e6b65636365676a +6b6c6c6a696869686767696968676a686a6824273a45414347413a30343a +3637403e3b36393438352b3f374238413e2a2b1d1d2524211f115d746227 +1a16091214151a0b1c0c06060107171e2c2d2222262a39293a423d4b5a6a +5a686f7079828e969182715d483a32302f2e2e2b2a252425272a292a2a2b +2b2b292a2a2a2828292b2d2d2c2c2c2c2f2f2d2e2f3031302e30272f3d51 +646a665d3b2e2d312a313228337ab2b2b5bbacab653620191c23305b8847 +2523312b46445346212029463c35231d1f221a111320201f2b394d617585 +9fadb38d481416333d5e80a0b2adafc8c5cab6b1a66f3a2a1e270b00122d +282d564739433d324346474b3d252024221d1e21201f272e2a2220202e44 +39252e313d291f25383700032f090609195697acafb8b3b0832f61817e14 +335c443e383b3b574940361e1f222425262b2f31312e2427211c3b4b3948 +403d301c1b253038322375baa2b0e0b095bbb3b4b2a49c78635e55504446 +522d2b1524353e4c1d1b2237566a7b827b6e57413b3c36322e274b553b22 +1b212e1c2c3d17344f77a9b3b8b8b7b6b6b3aba37c7c6b5c554031352323 +3b5b4b5e6a381e29262a498dd6eaf0eee6e1e2e6edf0ebd8cbb0734b4036 +383749b3eeffff92959fa4a5a5a297794f231f1a1a231f20344d658bb8d5 +e4f8ffd221342738637edad6bab03e763f323f413d3e3e3b32282524221f +212425202224211c202825182129280f18cdf5d1bccdc6d2cfd1d3d0cdcd +cccdcccfd3d4cecccdcececdcdcdcccac8c9cacbcbcacfcfcfcf1b1e2c35 +2d2f3633312b3138302f3231302b2f2a2f2f273b3540363f3c2827191820 +211e1e125e77672f2420141d221e1a0b251e1e20191820202a2c28303c38 +321420251821282f151c1a15181d24324040382e25202022242525272a2c +2e2f2a292a2b2b2c2c2c2c2d2d2d2b2b2e30302f2e2e2f2f2f2f2e2f3031 +31302e2c181c2737464b443e1c12181f1e2b301c0e3540231a25293e1000 +091420190621491208162d27383447443339405334271e1c1f2520181c27 +241e232a33424e5e8297a4854614142c2f4c6d8ea8aab1c8b8c0bcccd9b6 +928a7f8053252f35201f4a42374542394849474a38212028272420212022 +2a33312b292b364c402c3538462f191b3346245cb3a6afa897b2d0cfccd1 +c9c695416f8f881c396147413a3c3b574940371d1e20232224262a2c2c2c +252a26204150404e4542311e19242d30231f90e6d0c4c262152114171f1b +17071424212826344a2f311e2b3b3f49191721231b0f080b13181308060d +0f1a26274c573e25191920102b411a271f1f241414131316181c1d200514 +15171e150f1f1d2745685461643019221a0b0826473d3733333434353332 +302c3c453633454d504c5abae9e5da40261d1a1b22251d1c211828343b41 +2d222c43618ec3e4f1f8f5b10a231a1c233bb3ced5c82f58291a1c16110f +0f0f0e0d11191d1e1f221f1a1c1e1b161a221f141f292a131ed7ffd1a6a7 +9da7a0a0a5a4a5a6a8a6a4a3a2a2a1a2a3a4a4a3a3a3a2a09e9fa0a1a1a0 +a2a2a2a21215212822262f323431383d342d2f2b2c292e29302f283c3641 +37403d29261a1e2728252417637c6b322622161f232324172c2220211b1f +292c383a363b47413a1d292a1f252b3318201f1c1f252e3c46423e342c29 +2c3134363635343230312f2f2f30303131313132323230303236393b3a3a +38383737333434353332302d1b1e293846484239190f151f202d352a2f62 +7b635c625b672f14131823211a3a642c1c273c384f4e5f593f40465c4336 +252a415c6c70797f6e57483f3c4049577e99ab9053201f332e48678aa7b1 +bed2b2b4aebdcaa8847e767a502837402f2c54494454564c5c5a53503c22 +222b2d2c2c2d2a2b3139373030314157503c484a553b232337492964bfb5 +c2bdadc7e3e2dee5dedbad5989a9a1334f745a50494e557363584c2f2c2b +2b29292a30303231292f2c2b4f6353645b56452d262c343b3836a1f3dfdc +e892505f4e4e554f4c332a302d333240573c3f2d3b4b515c2a25292e3130 +2f3134332819181f21273133606c513427262d1a31441f3137455b565958 +585655534f4c2b35302c33261f2c2b334e705b6a6e3b202a241b26517f7d +7b787776797b7c7a756868613d292e313a2d236c85849a2a475b564f4445 +4c4b45437395aeb38e6d5b5c6f95c9ebf9ffffc61e352c334864d2e3ded2 +46744030302922211f1e1a161a1f24242a2d2d28282a2722262e2d222c35 +371f2ae1ffd18e80717468656767686b6e6b676460636668696a6a696969 +686664656667676669696969121b3645444547413931363c37363e3d3d36 +3a3536342f483c4a414b5235221e171b222d2b33e6fc7c3115130d141620 +2051843c0427631d114896c7cecbc3bbe39c6f5a54615d585862696c7785 +918f8770594539322e2a2b2a2a29272322232729292a2a2b2b2b292a2928 +27282a2c2d2c2c2b2b2c2e2f2b2c2d2e2f303235292e36485d6969614a34 +2c2d2b3135343867a5b2bdbaa9ad7c422519161c2e4684542524352b554d +5159222e2a2f442c211c1a1912090f1e2a2c2730444f5e72819ec3c89750 +2721375862729aa6a6c0c5ccbbc1996566586f743a000b24282e67523234 +393133263a3d311e1a242a281b1c1d242d31281e1724403b313c43402d1d +242b383c02002a0a0304104687a4aeb4b1b38c385482871e27715c282b38 +2f4b402d211b24282728292d303232312523211e3645405c695b2f0c192a +303b39285cb7a3b5dec696b8b8b5aea8a07b685f57514541412224154878 +6c891b28253b648496999898735649453e383023537d6832130b1b1e2b2d +10375075a5b8b6babab8b5b1aca77b75655d594838343124424a36599e7f +1e2d242d4378cde6ebeee8e2e0e4edf3eeded2b67d513f373d32459ceafe +ffa28f9ba2a4a4a2987d51241e1a1a231f20334d6489b8d5e5f8ffce2338 +2a345367b8d0c2b8496d4a353f413d3e403d362d312f2b231e1f201f1d22 +272a28252323231e15200680f5f9c3bbd1d1cdcdd1cdd1cecbcdcfd2d5d4 +cfcccccdcdcecfd0ceccc8c8c9cbccccd0d0d0d00b14293732323836302c +353b32303332322c302b2d2e2b443a483f495033201c14181f2a2a34e7ff +81391f1d181f212720518d4d1c437c301e4e99cddadddbccdb8655392b2e +22160d1212131c283138423a2b2120212424252626272a2d2d2f2a2a2a2b +2b2c2c2c2a2b2c2b2a2b2d2f302e2f2e2e2f2e2f2c2d2e2f303132311d1b +2030414a47422b18141b1f283026152233232020203a2102071317150910 +4a2308162f27473f485a3247413c3e1f18181b1e1a151e2c342f24232d32 +3a4c5d7ea9b68c471c1424444e6391a5aac5c0c8c3d7c19aa79fb5b46f27 +222d2524604d303740393a2c3c3c2f1c1b2931312425262b34382f231b27 +3f392c373b3d301f1a20334b3551b0acb0ab9cb1d3d5cfcdc7c99e4a6290 +91262d765f2b2d39314c422f241d26282727282b2d302f2f262626223c4a +47636e60300e17292d332a2578e3d1cbc27d1b221916191b170616232127 +252d39242a1f4f7e6d8617221f2324251d1a263520110a0e111c2421527f +6b3511030d122830132b231f241e1515151515181c22030c0c131e19111c +29284c573f5d9b7718271a1207184440323133312f2e30332e2e3e453833 +3f4a524656a4e6e5e552201a17171e231d1d221927343b412d222a40608c +c1e2eff8f7b107231b1b1a2991c4d8ce3d53331c1c16110f1011100f1d24 +26221e1d1c1b1a1f242725221f1f211e17260e8afffbaf99aaa7a09fa3a1 +a9a7a7a6a7a6a3a2a2a2a2a3a3a4a5a6a4a29e9e9fa1a2a2a3a3a3a3030a +202c282b333435333d413830312e302a2f2a2e2e2c453d4b424c5336231f +1b1f26313039ecff853c211f1a21232d2a5d965420468037275aa8dbe8e9 +e7d6e6925e40313326181115181925323d41453a2e2524292d3033343434 +312f2f2f2f2f2f30303131312f3031302f303236393a3837373836373132 +3233323334321f1d22304047453d2815121b1f2b3633334f6e63635e5665 +421a13171b1c1b2863391a253d365e565d6c3f4e47454c302931475e6f77 +858d897253413d373a4b5d81b2c49c582c1e2a454d6092abb6cbbabcb6cb +b892a19bb5b6732e2a36302f68543d46534c4d3c4844341f1f2c37382d2e +2d333a3e352924304d47404b5352412c2528374e3959bbb9c1bdadc3e1e4 +e2e1dcdeb6627caaaa3d4389723a3c4b48685b44372c33322f2d2e303435 +36342a2b2c2d4a5d5a768274441d2431343e3d3a86f0e0e2e8ab545f534e +50504d332d2f2e3332394631382b5f8e7f99283029303c4746454a543a26 +1f23252a302e64947e441f101a1c2f3518353a445a5e595a5a5653504f4f +292d282a342b232a3834555f4666a48222312321213e78807e8182818081 +8488817778704d353537412a22598588a43b4053524b3f414b4b46447295 +aeb38e6c575a6e93c8eaf8ffffc71d362e313d4eb0dae3d9536e4d323029 +222120201d19262a2d2828282a2925282d30302d2d2d2e2a24321994fffa +97737f75696365646c6c6d6b6a69646367686869696a6b6c6a6864646567 +68686a6a6a6a0a1834474a4f5451493b3c403d3e44413f383a3434343250 +555f5764765227211d1c1b26202bc4d04f1b0e0f1016162146aaef7a042e +b24b2564b6ddd5c5b9b4e38d584b586e686269676d777f8891896252463c +352f292427272728252220222629292a2a2b2b2b282a292928292c2e2c2c +2b2b2b2b2e2e2d2d2d2d2e303336302f323e55626562593f2c2c2e303540 +375ba7b1bdb9a8ac904f291d111a2f376a5d281e34346752435b3b52413e +4f361d19150f04000818332b1a2b403c465b707e9ac5e0c36e1e2344555c +7794a1aad2d5c5b782474142424d220413181e296657322832333a34261c +1b1f202327252c2d303438342c23142a4c343262665e1c091d2b2c260000 +210a00010b357a9cacb0aeb5964343808e301a6f61172939677661391d19 +1f1b26272627282724221e191d1e2c383b5d7f7b420d1e343031362942b3 +a7b6d7dc95b1bbb9b1afa481695f5c594e433a27212e6c9677882130293b +648da4a4a4a88565534d453f3425447c6e432a171f2c27250f334871a2b7 +b6bcbcb9b3b0aeac7f70605c5a514439432f403d363967452131222e3b64 +c0e3e9ede8e4e0e5edf4eee5d8bd885a3f383f2d4287e2fbffb08a9aa3a4 +a2a1988054251e1a1b2420203751698cb9d5e5f5ffce2940303147588ecf +c3b56e4e4f433d3e3d3f4240372d2b2b2b28292e323037312d2f2d2c3541 +48433e430f3be1fed5b3d4cecdcfd3ccd2cecbccd0d4d5d2cecccbcbccce +d0d1d0cdc9c7c9cccdced0d0d0d005112a3a393e4647423a3c403a3a3c37 +352e302a2b2b2c4b505d55617351241e1a1918231f2ac5d3542016191a21 +212846aaf88b1c4ace623570bfe9e5dbd5c6db753a262733261719121620 +29363f412b28242326292624272727282a2c2e2e2b2a2a2b2b2c2c2c292b +2c2c2b2c2f312f2e2e2e2e2e2e2e2e2e2e2e2f313331251f1e2939444643 +3c23141820273032151836201e1919312a06031012151007342c0c102c2e +5b453a5d4c6955484b2b1313141511111e2d43341b233124293948577aaa +cbb15b090b2d414c6e93a8b1d5d8cfc89c696a6f6d75421c211f1e266154 +322e393b423a281c1a1f242b32323637393d3f3b31261428482d29565a54 +1907111e26353144a6acadada1afd6ded1c9c4cba855518e98382074641a +2b3c6c7a663b201c231e29272626272623211f1c2222323e42648480430f +1c332d2b29285edfd2ccbf9722201d1a1a1e1909131f232b2c2f2f272738 +739c78871d29211f222c271f25362411070d141f2722437f744628111320 +242612271c2128231717171613151b230202030e1b1e191d38314a4a4140 +643f1e2b1b16050a4044342f312e2c2d2f322c303d453c323a4654445692 +e1e6ed631c1715161b201d21251a27323a422e222e45638fc2e2eff7f6b2 +0c271f19162265bdd1c7663a38271713101011110e0d161e2627292e302e +35302c2c2a29313f464340491745eeffc395b1a5a2a1a5a0aaa7a4a5a8a8 +a3a0a1a2a1a1a2a4a6a7a6a39f9d9fa2a3a4a3a3a3a30009213131374346 +4942464a413b3a35332c2f292c2c2e4f54625a687a572b2521201f2a2530 +cad85824191b1c23232e50b6ff92204ed26a427ed0f9f5e9e3d4ea82442e +2d39281b1c151c2834424d4c2e292526292d2d2e313333322e2d2e2e2f2f +2f30303131312e30313130313438383a3737373736363333323233333535 +292220283842433e382012172028343f30436e616159516051211217161b +201d4b411b1d393c6f594d6c56715c52593c2b374d61717f8e9aa283544a +48312e3a495c85b9dec76f1a1833434d7199b2b7cecdc6c2996a6e75767f +4d282c29282d685b3e3c4c4e554a34241f21272e38383f4042444741372d +1e33573d3e6c726c2c141b272a38354aafb7bcbbafbce3ece3ddd9e0c06d +6ba8b14f368777293a4d82937c50312b2e27322f2e2e2f2e2b292421282d +404e54779893551e293b34353a3a6aeae2e3e3c4595b5852515550372c2f +32383a3b3d33334483ac8a992e392c2d3d4f534c4e5a432b2325292e312d +55928455361f212c2b2b173133445b5f5a5c5b57514e4f512c2520283031 +2c2c483e535247486f49273523241d2e7184838584838385898b837f7f75 +583d37394528254d848bab49374d4f483b3e494d47457294aeb48f6c5b5d +6f94c9eaf8ffffc8223c322f364485d5ded37b53523e2c26242224211c18 +1f252c2d31383d394038343535343f4c534f4d55224ff7ffad7189776d66 +69636d6c6b6a6d6b646166686767686a6c6d6c6965636568696a6a6a6a6a +0d18344a515d6969675248494b4f50494439393332313152747774829d7a +38221c1c19211915312c14060e0c0c151521291a150b0238b4231353a0c1 +b7b4bac1d394776e6564636767707a7a7d959b7d3e3a3936312a24202424 +2526232120222629292a2a2b2b2b292a2c2c2c2d30322f2e2e2d2d2e2e2f +302f2f2e2e2f3032332f2e364a5b6465634b31292c2e32433359b7afb9bb +b0ac9d603022131831305065381a2f3868462d291a261a303524231e160c +0000081522130936524140445e6b7595d8fec2691e1b41625e72959ec4d4 +dfc6a0601f2553612c090e0d181f5256311d2b3e64783618162a26191517 +11141615130d08082121423f45686c73300d1a2f351f0000180d00000722 +6893abb2b0b7a153357d904411575413333d485c5f340f121f2425242222 +201e1a1715111b1e252e335065764c1523382e242b232aa9a6aecae599a7 +babfb6b7aa89675d5e5b54433330182f444c34412126313b5f8cabaeacad +98745d54494337261b3a292437302c2e2b26172e366897aab5bcbdbab6b2 +b1ae9479665e584f45344a3c332b382231222a2d232d3454abddecf1ebe7 +e8edf1f2edeadbc2956441383e2d4179d5f6ffbe8a9da8a8a7a49f885626 +1d1a1c2520213850688db9d6e6f6ffce334d342f3e516cd0cbbcab394c4b +383b3e414540362b261f1f33556d6a5c5d452d24232a4056697d8049151b +c9f4edbad0cad0d3d5cdd2cdcacbcfd3d3d0cecbcacacbcdd0d1d1cecac8 +cacccecfcececece0a132b3d424e5e6064524a4d4b4d4c443a302f292928 +2b4d6f7471809b7a36201919161e1814322f190b1616161f1f28291c1e1c +1953d13e2966b1d2ccced7d4cc7c56432c2214120e16232731515b48151e +252a2d2b2927282828292b2d2f2e2b2a2a2b2b2c2c2c2a2b2d2d2d2e3132 +2f2e2e2d2d2e2e2f3130302f2f3031302a201b22303f4546462f17151e24 +2c361318461e151516232a0b010e121719091f361a0a25325d3b262b2839 +2b3a311b18161513111624323924103447302a2535414f74bbe2a84d0101 +2a5155719ca8cedeead2ad6e2f366270391216141c225155332533496c7f +3a18172b2b232426191a1c1c17100b08211f3e383d5f626b2c070d222e2e +2f3b9baeacb0a5abd7e3d6cbc6cdb365438b9a4c175c571635404d63663a +1518262829272522201e1a17181420222b343a576a7b4d1721372b1e2025 +45d1d2c4b6a82e1e21201d221b0e0d18242b302d272e1e374b5237401c1f +251b1a282920202a240f040a121e25201a3d2f2a362a202226271a240f1e +261c1818181513141a221206020b141816143e3e3d3a452b2f1f272a1d18 +030336473c343130303230302b31383f3e34354253465788dae6ee731e1a +19181d212227271b26323c432f212d44628ec2e3f0f8f4b5112d21191724 +43b8cec8aa2d352d12100f1012110c0a0f101832556d6a5c5d452d232229 +3e54677f84501d25d6f8de9fb0a5a7a6a7a1a8a6a3a4a7a7a3a0a1a1a0a0 +a1a3a6a7a7a4a09ea0a2a4a5a1a1a1a1050d24353b495c636b5c57585352 +4d41382b2d282a292d51757b7a8ba686432d22201d251e1a37341d0f1918 +1821212e332827231f5ad9473675c3e4dfdfe7e3dc8a614c332617151018 +292f3d5e6952191d262a2e2f2f2f313131302d2b2c2c2e2f2f3030313131 +2f3032323233363a393838373536363736353533333435332f251d23313c +4243422c16141e252e402b407e5f5a575257552c1519181d271b32482614 +303e6d4c3638314033443f303847596b7d8da2aaa37c54636742362b3945 +5a85d1fbc164130e34575a77a2aac6d5e4d2b3773e4675834a21231e2527 +575b3f32465b7f8f45201c2f2f25292d24262826201914122b2a4d485274 +7a803d15172b3533333fa3b6b6bab0b5e0eee7dfdbe2cb7d5da5b3632d6f +6a25444f6176784a2324303132302e2c2a2826211f19262d37444c697d8e +5f242e3f3228303450dbdfdbd9d262565a5a555a533c292a333b3e3a333b +2a445b624852302f312a364c57504d54492f2425292f312c2c503f384438 +2e2e2d2c1f2d243f54565b5d5c57524e4f513e2d24272b2b28234c4a4641 +4d323a2a30332727192463848788848386898989817f7b735e4235374429 +2947808ead56354c4f493e404a5249467194adb38e69585c6e93c9e9f9ff +ffcb2a45352e324161d0dfd6bc4351472923232325231a1519171f385d77 +7666674d352b2a31495f748b8f5a282fdff9cb818a79736d6c646c6b6a69 +6c6a65626667666667696c6d6d6a666466686a6b6868686813183147556a +7c7e886b5a5b5d6261584a3c393333313052827e8493ae9547211b181a1c +272d090a0507150b060d12274c47141d132cb2390f55aacdbfb6b4b4cc88 +69645e6468746b7579728ac1b86a2d30322f282120222225262626232223 +2729292a2a2b2b2b282a2c2c2d2e3234302f2f2e2e2f2f30313131302f2f +2e2f302c29304054636a665739282a2b2e403158c6b2b9bfb8afa4753b26 +16152d2d43694d1e2a36563728111a313c6345252620120600000812110a +12587e71663e42626a6c97d8f2e28120184b505b8490adc7e8ddd6a85550 +99ab59130a0f221b3e451e173d5a6c6e380e0c231b0d0f1214171817100c +0e14201f281e25465b622d132231320e00001616000408155889abb7b5b8 +a9642a788f5510404a1e3e40546d83551c12161c252522201f1c1915120f +1e21222e2f403e5647252c392f2429271c9cafacc5eaa59cb4c2bbbcad93 +6b5f645e564735462d3b2c27282f3f31343a5786acb7b6b3a68267584940 +3625283d3234403c4345372f293530608ca1b4bcbbbbb8b5b2ad9f7f6a64 +5a554d37585a40303b2f3d483022232a2f4e90cde7eeeae9eaececebede9 +dac4a171463939303f70c3f1ffce869ba8a9a6a39e8a58281e1a1c272121 +2f496388b6d7e6f6fdcd3651372d374a59bcd2c6d3464144383b3e414540 +372c292629384f5c594b3f2f2322272d38433b44512314028ff7fdccc7cb +d4d2d3d0d0cecdcdcfd1d3d1cfcccccccdcecfd0d1cecbcacccecececece +cece1015283c485c7278876d60616162615442332f292b282a4b7d7b8191 +ad96482019151719262c0a0b080c1a130e171c2e4c491d2e2a47d0572b6f +c1e3d8d1d1c5c36c43321f1712180d192427488b8946121e282d2c2b2b2d +292a29292c2e2e2f2b2a2a2b2b2c2c2c292b2d2d2e2f3135302f2f2e2e2f +2f303232323130302f2e29211a1d2b3a454b493b20131a1f2530141a5720 +1214151c2413010c13161b0d173d2f0a1e2e4b2f241327424a6b431d1a16 +1413151e2d383121205e7a685829223b474c77bad4c46103003a4559899a +b8d2f2e5daab565199ac5a140c1326203f46221f486777753c110f28251b +22231a191a19120c0e14201f272024475c612b0d15242d1b2b3e91afa9b0 +a6a2d1e1d9d0cbcebb763886995d16454d21404359748a5d22191d232c29 +262423201c191512222528343647435c49272a372c1e212934c2d9c5b7b6 +431b1f231d2319130c162529302d27433143342d2b303c2a281915222a24 +1f24230e03080d19221d2540383a42383639312e2c2e0d1d251c1b191816 +1515191d1a06020b10171812475a493f4a383d452d1f201a040525433c34 +302e2f2f2c2a2a2f3038413733414e4a5884cce7ee871d191917191e2229 +291b26303c422e21243b5b89bfe2f0faf4b7122d211a19262e9bcdccd641 +2d2612100e10120f0b080f1522374f5f594e42322322262c36433b46552c +1c0c9cfdf1b7aaaaaca7a6a4a6a6a4a4a5a4a3a1a2a2a2a2a3a4a5a6a7a4 +a1a0a2a4a4a4a1a1a1a10b1023364259717c8f796e6f6c6a63533f2e2d27 +29292c5284848c9ebda85a30241c1e202c320f100d101e1611191e345655 +26363250da62377ed3f8ece4e3d7d47b503d271d15190e1c292e54989952 +171e292e2d2d2f333130302e2c2a2a2d2e2f2f30303131312e3032323334 +373a3839393836373738373737363434333330271d1f2a39434845371c10 +1a1f263a2a3f8c5f57585453553919191a1b271c264c39132839593e3220 +304a5376513442526173899fb2b7a27f67929b7d652e233e4e5b8cd2eede +78150e444d5e8d9bb2ccf1e8e5ba6a66b1c16f261b1e2f24434b2d2c5a7a +89854818142b271e282b262627261e16181e2a2b352d3659707339191f2d +3321304298b5b1bab1acdaede9e4e0e3d38e52a0b2742c5860304f526c86 +9a6a2e23252b34322f2f2e2c2b251c192b3034424659566c583437423528 +2e363ecde7d9d8dd7653575d575b53432a2a383b3f3a344e3c4e413d3c42 +4f3c362a31485a5852524d352725262b2e2a36534848514747473b343136 +213c50515b5c5b5854515150492f2529292c2c2357665246514147503828 +292718234f77807f7b7b7e817f7b79786f695d432f323d2f30477990ab67 +2e474e46393b47524b477193adb38c674f52668ec4e8f9ffffcc2c47362e +31404cb6e1dce75548402924242525221a141a1d293c5766635749392b2a +2e34414d475260352716a5fde19c8a817b726b676a696c6c6b6965636768 +6868696a6b6c6d6a6766686a6a6a6868686810122941546f85879b80716f +6e717168513f39343633315081788a96aba4592526151b0a1d28232a140d +120b09090e303d8a2f170a30ad2210529fbdb6b9c3c8e1895a58606e7179 +8883857e86a8914424282b2b262321242327292a2a2725262729292a2a2b +2b2b27292b2c2d2f333532323131303031312f302f302f2e2c2d312e2a2c +384b5e6a6965482b2c2d2c3d3754c9b7c0c6beb8ab8d49291a0f23293f62 +59262e36453b15041e4853734919231c0b0000000711101326709aa99c41 +374a5658628bcdffe85d142b3d4d6b7b9eb5d6e3e0ca976f486c33101819 +271731412325546558412d111622120b1411141311110e090c1119202022 +213250532e2a322f30060000161f070e0e125486a7b9b7b5ab6e1e6f8e5e +16384d2e4240313a5a421f242323252422201e1c18151210212122333134 +32393f3c39322d2b322d128ebdb1c6ebb295abbfb9bbad9b6f61685e594e +4268454e3b4347495445323a537ba2b6bbb7af8c6e5c493d3526466a6d5e +4842595c3b292f4332577fa0b2b9bababcbab5ada07f706c5f5c583f485c +4e463a434c422f1125272a4b71b8dceaebebe8e6e5e8ece9d8c4ad7c4a3b +33303c6aafecffe08199a8a8a4a09d895c2a1e1a1d2922222c455f86b5d5 +e4f4feca3451382d2d3e5390d6cbcb7640413b3d3c3f43413a3224282a27 +221d181312151e2931312e2c15010c10200040edffe0bed0d4ceced1d0d0 +d0d0cfd0d2d3d1cfd0d1d1d1d0d0d0cecccccecfcececfcfcfcf0f112238 +49647c829b837878767572664c37312c2e2a28497c758695aca65b262412 +1a091c27242b171217100e111635408d38251e4bcb42306fbad8d1d4ded7 +d2682e20191912162527343b507f7530151e292f302e2f2f2a2a2a292b2d +2e2f2b2a2a2b2b2c2c2c26282a2b2c2e3034313130303030323230313233 +32312f2e2c241e1c2433424d4a482c161a1f222e1c185d251715151a1d1e +04081510160f16383a111f2b3b35130828555f7b4b13171310111928353d +38313a7c9fa8993824323d3e476fafe0c840001730466a7fa7bfdee8e2c9 +946a42672e0d1619271a32442a2f5f72634a33151b2a1d1d2c2417100e0f +0c090c141d272a2f2f42625f302426242b13253283a8a1aca59acddfd6d2 +cdcbbd802c7d98661c3d503144433843614a272d2c2c2e2b292624221e1b +161325252839383b383f413e37302a282c2f28b0e2cabfbf5c1c1a211a1d +15170c1323252e2f3262475443494a4a513e251b141d24231e1d1f0a0105 +0b16211e436b74664b3e4c4e3328323d161d23261e181717181817191602 +020d111b1f1633595755494d4e402d0f241b080c13393934332e2b272626 +292d272f423a3340494e5783bde7f09f1b181815141a1f292a1a26303b43 +2f211f385785bcdeedf8fab70d29211c1a222b6cc7cad174302418130f0e +0e0e0b090614202522201b16151a212c31312e2c15041019290a4df5f9cf +a6b2afa5a1a4a6a8a7a7a5a3a4a5a4a5a6a7a7a7a6a6a6a4a2a2a4a5a4a4 +a2a2a2a20b0c1c3345627d88a7928a87817e776949342e292c2b2b508380 +94a5c0bb723a2f19200f222d29301c161b141214193b4996412e2754d64f +3f81cdede6e9f3eae5793d2b21201619282a3a445d8d843c1a1f2c303130 +323530312f2e2d2b2b2c2e2f2f30303131312c2e30313234373a39393838 +383837373536373837363433332c221f25313f4945442913181e21352f3a +8f645c5b5657554921191c15201c244442182633443f1e13325e6b885a2d +4756647793acbec0aa9183b0bfbaa23b202e40475685c7fbe0540a23394d +6f80a4bee0eeeedba9815c7e45202425311f3649343b718575593f1e212d +211f302b26211f1d1915161d283134383c4f706d3d30302c32192b388ab0 +abb7b0a6d8ede8e6e2e0d5984697b17d3250634053524852715732363333 +3735333232302e291f1a2e303447484b484f504b443b3331363b33baf2de +dee38b51515b545750482b2938383f3e3f6e536050595b5e6650362d3142 +535753515036282524282d2b547d84735a4d5d5d3e303947253648575c5b +5a585754514d472e272d2b31322642645e5a50565a4d3a1a2c2719273766 +6e6f71706d6c6b6c6d6a5b55563c252a3434344c7095ab79263f49423535 +444e4d497193adb28b654a4c628ac2e5f6ffffcd2844352e2d384686dcdc +e1894b403027242322211b17101d282a2a27241f1c1e2631393938361f0d +1b22321355f7edbb8a8e827168696a6b6f6f6b686869696b6c6d6d6d6c6c +6c6a68686a6b6a6a696969690c0c203b54708887a089807d797879735642 +3a363935314e8176909baaad6a32200b200414163f40200c0a0a0e090b33 +52d46230163aa6161454a1c1bbbcc0c3ad684f5b656f7682857f8e824929 +1c041c20272c2b27262426292c2e2c2b29292729292a2a2b2b2b26272a2b +2d2f323534333231313132322d2f2f31312f2d2e33302c2a334259666d70 +533231312e3d3e4cc7bac8cac3c1b19f522e1d0a192336535a2e36373d48 +2a1e2848435b4e27221a090000030b1311192a6a95bdb5383d2f354c4e50 +80c0ef8f3b252d3b536987a0c6f2ede3d6884052180d1807181b29574a3f +525554513e323c351510150316100a0c0d0a0b0e221c31726f3f516b7267 +564859371a001729111a1c185b8ba3b8b6afa97115668d601c3a563a423f +452f3f32283c2e1e2624201e1b1713101310211f2136342d392b394a3f26 +242c372d0980c0b2c3e1ba8da3bab7baaba16c5d645857504e7f42433847 +3a3c393e2e374c6f94adb7b7b290725e493d382c214955442c3049383218 +264830486e9cafb8b7bbbebcb6aea685797565605b3f3440323022618b74 +2d052524294759a5d4eaf3f2ebe5e5eaebead6c7b685503c2f3035649ee5 +ffea839baeaea7a2a08d5e2c1e1b1f2b24222f496386b6d3e2f1ffc62c4c +382d26315b70dbcdb5a34c493f3d3b3c41423d372d2722252c2e2315171e +262a2e30312f32282125331e10bffbebb7d5d4c8c9d4d2d2d3d2cfd0d3d5 +d3d2d3d4d4d3d1d0cfcecdcdcfd0cecdd0d0d0d00d0b1b3449667f84a290 +888982817c72523a322e312c28477a738e9aacb16e3420081f0313154041 +230f0d0f130e103855d76b3d2a52c4363575c0dcd4d2d6ca983f1c1d1816 +131d222443461f0e0e00121b28313635312d2b2a29292a2d2e2d2b2a2a2b +2b2c2c2c2526292a2a2c2f3231323130303133332e3032343432302f322b +231e212d3d494e53371a1e22232e23155d2a1f16141b19250504130b0f0f +152e3b15232a36452a222e504b62512418121014213341463c3c427aa0c5 +bd3d3a282c3e3d3a65a3cf72200f1d304d6788a4c9f5ece2d4843c4d1308 +1403151a2a5b51495d625f5a4436413e23232e1a22161012131112172c29 +3f858355697d79664f3e56423b28749e97a7a296cae1d0d1ccc5bb832374 +9768223f593d44434d39473a314537272f2d2826221e1a1617132523273c +3b343f313b4c3d24212931301b9ee4cbc3bf6f1f181f15181019040b1a1b +28303a77424a404f3f3f3739231c15191f1e1a161a0700050b1622221d4a +5c4c2f2e3c2a2715294218171f2d211917181a1916151701041110181c10 +1c3a393d316e8d722b03251c0d1308323b3a3b352b25272a292a2029413b +313f47525781b4eaf3af201e1c18171b232e2b1a242f3a422f21233a5985 +bbdce8f3fcb708241f1c191e3448c1c4baa63e2f1f170f0b0b0d0d0d0d12 +17202d3126181c23292d2e30312f352b252c3c281ac7f8dfa5bbb1a09ca6 +a5a8aba9a5a3a5a7a6a8a9aaaaa9a7a6a5a4a3a3a5a6a4a3a3a3a3a30807 +172e4564828bafa09b99918a857751372f2b2f2d2b4e827e9cacc1ca894b +2c0f2509191b4546281412131712143c5ce07446335ecf434486d2efe8e7 +ebddab512b2a221c18212529484e2b1d1f0b1a1f2c3538383534312f302d +2d2c2a2c2e2f2f30303131312b2c2f30313336393a3a3938383938383335 +37393937353438322820212a3a45494d33161a1f213334348e67625d575b +545627181c10181a1e36431b29313d4c322d3a5d587262414d5d6a7e9cb9 +c8c6ad9888abbcd2c039311e273e454778b9e686331c273651688aa5cefc +faf2e99b5364291c231120202e5e5b556f75716b503f4743262733223026 +20201f1b1c1e3531488c8e607589836e57465d4842307ca7a2b1aea4dbf2 +e3e5e1dad39b3d8eb07f38526c4c534f5a4554453a4e3e2e383633333230 +2c26221c302e334a4b444f3f4a594a312c323b3925a9f2dfdfe29a504f58 +50534a4b2722312d3a3f46824c544b5c52524c4d342f323e4c53514c4d35 +282524282f2d2c5c6c593e3c4e3b351e304c262d3f585b5b57595958524d +4c302e332d3031222c4641433876997f38102f271c292859696b716f6761 +65666663514c533a1f242d3736516b9aab83233e4b46383945504c4a7090 +abb28b654b4d628ac1e3f4ffffcc243f342e2a314f63dad7cdb9584a362c +262122211d1b18191d2632382f1f20272e3236383b393e343036453123ca +f1cf8d9a876d656b6a6c70716b6a6a6c6d6e6f70706f6d6c6b6a69696b6c +6a696a6a6a6a1610253d4c6b86859499817a807d7d735940373a3532383b +817a8493aaa9703e240c0c0d0f172851391a06080b07142b3da495451a2e +a71c1452ababbdc4c0bf645453626b6f7c828f8a7b653717140e18252c2b +262424252b2e2f2e2b2b2a2926292d2a272828262a2a2a2a2c2c2c2a2a2d +3132312f2e2e32302e2e2e2f2d2c2b35362a283a53616b746445312a2d3c +3d55a8bcc3c5ccc0b6ab6f341f1a1923315a5f353c2e3c5154352f383a45 +42291e0e1100000118070719446aa2ae5f282e372b273e506076aca9651f +233a4550728fb0ceebf3d6ae878b390e1c1a23223e636459717e71766875 +5a4b17121006050000000100000212192667353230372a2f231f25332900 +1f44292239273f94a3bbb3b8aa8f2d577b7b242d642f3d3a453a4133341a +1c19103e2d2d35323c18171f49261248442a3f4948382b1d20323c2e103f +9690c1e8d66fabb2afbab69f7666575a63524c643c37141b363a601a182c +3d5f94a8adbeb897775f463b3325203d5f5c351f1c14142539382f416b8e +b3bdb8b3b5bbbab1aca0716a6d5d5f4c3530181c4b5a4f524d1e14272b38 +628ed1daedf2eae8e3e4ede8e7dbb98b5c3c312b335591d0f3ff8496acb0 +a3a79e875c271d1d212a2323324c6586b6d7e8f2ffad2a3a2f271b2d4b5b +b5e2c7b04d53513f3c434241423b2f26252a2b29272b2d2b302e2d393b2b +302439191f1a0981f8ffb4c9c6c3e1c7cfd4d5d0ced3d5d2d3cfced0d4d6 +d5d3cbcccecfd0cfcecdcfd0d0d1160f20364161808298a28c878c878174 +553b2f322b282f357a778194afaf7744240b0b0c0e1629523a1b070b0e0a +172e40a89c522b44c33c3573cbc6d2d5ccbc4524191e1a14191f30383832 +1706110d12202d302f2f2d2a2b2925252527292b272c2e2b282927252727 +272727272727272a2e31302e2f2f353331313334322f2b3431211a263945 +4e57482c1c181f2c2520412e1d11181216281904121b141313373e17251f +35505739333b404a472c16091b142538533f363d6080b4c0723c40483628 +39444b5c8f8c4a090f2b36466c8aadceedf9ddb58e903a0d1814181a3d68 +6d637c8b7c7d6e79615426272b24211a1619181312132128377847444347 +3332201a223a422168a19593a892a2e1ced4c9cebca13b6585832a326732 +3f3e4b42493b3d2326231a4837373e3a441f1b224d2a184e4c32454f4a3a +291b1d2f39311e57b3a9c5d0980e26190b1516120a0d0919302d365a3a3b +1a233b3d5e17111711182922131b190902060a141d1b1c3f67663b1d0f06 +091f39351b1726292c231913121718161918000012121b1919261c295a67 +5150491c1421150d1e26402e3532262625262b2728323936363c4b525c7a +b0dde3cd271a1b19111e22282915202f3c422c20233d5b84b9deecf4fca0 +091313141321293393cfcab5433f351c12130c0c0f0f0b0c16232a2a2a2e +323335312e3a3b2b30273d202623138afafea7b4a69db699a2aaada8a3a6 +a7a4a6a5a4a6aaacaba9a1a2a4a5a6a5a4a3a2a3a3a4140b1c303f608489 +a4b3a0989c918c7954372c2f2a293239828292a8c5c9945c30111112141c +2e573f200c10130f1c3347b1a65b3551cf494482dad7e5e9e2d15734282b +231b1e24363e3f3b2416221d1c2732363433323033302e2a2928272a2b31 +33302d2e2d2b2e2e2e2e2e2e2e2e2e313537363434343a383838393a3836 +333c37241a2538414851442819161c2f333c70685f585f57565c3e1c1c20 +1b1d1b3d451f2b243c565e443f4a505d5b4d51597a81a0b9d5b8a0939fa7 +c8c46e303036282036485469a19e5b161a3239476e8eb4d6f9ffedc7a0a3 +4e1d27222625426b766f8e9e8e8f7c8469592b2c322c2c251f20201a181a +282f3f80535051543c3927212b42492971a9a1a1b9a4b5f5e1e8dee3d4b9 +557f9e9a40457a414e4a594f5646462c2f2c245243434f4d5731262b5835 +245a593f535d59473628283840362763c3bde0f0bf3b5b52475152462e29 +212d433e4365454626304e50742c232a2a38535449544f392c2623262926 +2b4e7472492b2117192b413e272b4251646159535156544f4f4823243129 +302a2831252f616f5e5e58291e2b22203747695e6b6d6463636268605c5b +503b29222e333c4e6c8e989b22344646353c444a4a456d91adb087634a50 +6487c0e6f8ffffb4242e2927202f414eaee5ddc85c5a4c3028292320201e +17151d2a302f313536363936333f4333382e4628302c1c8ff7f394977f6c +7f5e676e726d6c6d6c696d6b6a6c7072716f67686a6b6c6b6a69696a6a6b +0f0b203a4a698585949a837a817e7d745b43393c3632373a7a7a8593a7a6 +754930120c0d1426416c341c0c0f110c182830737e47152f9b0f0a5394c9 +c0c7ca7e5e575c686d76868a8a8065320f07090016242b2a252527282d2f +30302f2c2c29272a2c2824252522202020222222222226272b2d2d2f3032 +32302e2e2f2f2d2c2c34352d2833495a65726c5540302a373c4fa0b3bfc3 +ccc1b8ae783c211919222f4f5b38352a3c4c43353b3f393b341f130f0200 +00070c050f1b4f78886a302e293a372c343b475f70856b39262b394c607a +99b5d5eae1caaf8e50171321263344582a17211b231e23271f230b040800 +0000000000000000070f15582a2c272d31231f16162424121a5244313e3d +5485a7bab1b5a58925407b7b20266f413a302b395f60370c152533a4c7c3 +bfc2c38d2d4f8956162b37408aac994b1812202a282d1a285f526fa4dd7b +a4b2b4bcb7a37f6b6368654c3d452e192d388c5d883617293752859fabb9 +baa37f604a3d332e1f316a865c2b1e1a1e29343128396084aabab8b7bbbf +bcb4aea2776d6f626151372c2c40514647609d4e232b28264a7dcbdbeef4 +f0eeeaeaede9eae0c292603a2826345288c4eeff8a94adb1a4a59d865d29 +1f1e222c2626304b6383b3d3e5efffb93a3b30342224425a98e4cabc5c42 +4f423c414343423b372f3035362f29241f202a2f333e3c2a241e33252a1a +004aebf9cab7c8c6d7cfd2d8d8d3d1d2d5d3d0cecdcfd3d6d5d4cececfcf +cfcececed0d1d1d10f0a1b313f5f7f8498a390898e8884775a3e31342c28 +2e3173778394abad7e5132110b0c1325426d351d0d10120f192b33788551 +2343b22c2a73b1e0d0d0cb6f331d1a1e1a1c272d35352c0800000c05131f +2b2f2e2e2e2b2a28242324262829282d2d29252624211d1d1d1d1d1d1d1d +2124282a2c2e31333533313334343230303734271c21313e48554f3c2b1d +1b24241d3b2a1a121812132519060f18141516303a191c19374f483c3d40 +3a3d3c25110f121a27424a3e3d416a8fa0834f4f4f5c4f3b363438495669 +502111162439516d92b4d9f4efdbbf9c571a11191a29435d33212c262b25 +262b232c1c1b2520241f2027241914191a1e226232332e343a2a1f151528 +35334f96968a9998abcccdd3c7cbb79b334e8583262b72443c3431416768 +3f151e2f3daed1ccc8cacb9431528d5a1c313f4890b29b4d16101c27262e +243a79687995ab24251a101415140f0e10222e2625392b1d334092608934 +131a151726241416181108070e161b2119337290622a130b112134301b19 +262a2a221e18181b191619180000100f1918151e2c4b6053495c994a2328 +180411234232343129292b2d2a25242e3634333745536381b1dbe7d9321a +1c18121e21272a1521303c422d21203a5881b6dae9f1fcad1e19131f1c1c +253470c8c7c15834372216140f0c0d0c11141c2c3430292724282f32343f +3c2a231e36292e210853f0fac3a6aca2aca1a5abaeaba6a7a8a6a6a4a3a5 +a9acabaaa4a4a5a5a5a4a4a4a3a4a4a40d06172c3d5e838ca4b4a39c9e94 +8e7c583a2e312b272f367b8291a8c4c99b683f171112192b47723a221215 +17141e30387e8d5a2e4ec03a3780bff0e0e1df82442b282b24252f353c3c +3512050e1d151e2633353333343233302e2c2a28292b2c32322e2a2b2a27 +2424242424242424282b2f31323436383a3838393a3a383939403a2b1e1f +2f3a424f4b3726191626313867625c585f57555d43201d1e1b1c1c35411f +221f3b544e464a524e52514952657487a0c0c5b19d8c9faeaa7f403a3844 +3928292c354c5f755f2e1a1d293b567499bae2fefae5cca967291f282834 +48603a2d3e3a3e3735362c3323212d2728222329281d181d20252b6c3f43 +40444332271b1d313d3c57a1a298ababbfe2e2e7dce0cfb34d689e9a3c3e +85534b403f4e74734a1e273847b8dddbd9dde0a63d5b9865283d4c559ec0 +a85a231d2a302b322d46887d92b4d04f58534c515149352b2a3a41353243 +34263f4da2739e49242d2d354e534b4f514232272728282b27427f9c703a +241e23303e3825283e4d5d5f5c58575a5851514b262430292f2b252b3451 +675b566ba8592f312312243f6e6971736e7070716e676262594430242732 +43576f8d99a2262f4546373e43494b466e92adaf8763454c6084bde4f5ff +ffc33732293028293b4d8be1dcd5714d4d372b292623211c1e1d25313935 +312c282b3337394444322b263f32392b1158f3f5b38c877277666a707470 +6f706f6d6c6a696b6f7271706a6a6b6b6b6a6a6a6a6b6b6b101022374967 +8185949c867e847e807860463b3d38333636727c8492a3a17d563711090c +12253f6222140b0c0d0b131c233555360c2e860d085790d5d2d3a3535c61 +676f717e8e8b855c422d64af843a15242b2925272b2e2e3132312f2e2c29 +292a29221f1f1e1c1717191a1a1a1a1a1e202225282c313531302d2e2f2d +2c2a2b3034302b2d3e516270726650362c363e509db1bdc4cdc3b9b07f46 +23181922293e56453a36505a3b3c49483e3a31200d11000000120206132c +5c7362301028263c4237323440564f676c4f2a202d3f4d657f98b5d5e4e2 +c29a7f37132c2b2a31542e2b33253e36432b1818130d353d2a1d232c2105 +0000141e1f654051525c46181b1b222b1d23255c5f4e47465e7ca4b5b3bf +b9a3464b859136236a3c242042436b89522113141a99cfcbc0c1be8e314a +7a531a212b3a4681894311122a3a2d2c1e1952451b2de99498b1bbbeb5aa +8365626c634f423a39214150a0547c3f1b2b31467398acb7bab087615140 +353b36325974502c2b26212323202130547ba0b3b9babfc2bfb6b2a67e70 +6f6462573f2e313e352b3f595f2c15222627426bc1dae8eff0edebe9edeb +ede6cc9e6438202134517eb8eaff968fadb0a7a49a855e2b2021262d2727 +304b6284b3d4e5f0fbc6453b34422d1d375670dcd0c97b3048403d3f4444 +413d302725282b282523211f252a303e3e2e2f22241e1e130621c4f3e8a9 +c8cdced7d5d8d8d4d1d2d4d2cecdcdcfd2d5d5d5d3d1d0cecdcececfd2d2 +d2d30f0c1a2e3e5d7b8497a4938d918a887b5e4133352e292c2d6b768395 +a9ab8b613910080b11243e6121130a0b0c0c121d263a5a3d163f99272675 +a8e7d8cf9634231b1e1f1e28373a3c1f130d54ad8b41131e2a2c2c2e2e2d +29272524242527282a2d2c2520201d1b1414141313131313191b2023252b +323634333233333433313234342e211d29384553554a39211922271e3c2b +1d151c1312221c0a0c121215122135241c234b5f424348453a3c3b290d16 +0c243150413f3f4e75897c503856586a644e3a2f3342374c523513071426 +36527293bae2f7f9d9ae8d3f11241d1e305935353b2d443b442d1c212424 +536c767474745f39221e292b2363394846554d21201e202e2737478b9b92 +9091aabdc8cec9d5cbb554598f993c286d3f26234849718f58291b1c22a1 +d9d4c9c9c997354c7e57202733424c878b450f102637282c2225675c2a29 +c146221e1716131a0f040c222824282d36244758a6597e40182019152327 +1c15171c0e06131719292e316380582e1f15121b23201718252c2622211e +1f1f1a161a1900000b0e171a191a304744384155582815211a0d131b3d34 +2e2824252b2c29211e28333530313f556b88b0d8ebe743191c17151d2127 +2a1722313d432e22203a577fb3d8e7eff6ba321f14292517203443b8c6cb +7b2b36271a14100d0a0a06070e1b242624242624292e313d3d2d2c21221e +21170a28cff9e69aaea8a3a9a7abaeaaa6a7a7a5a4a3a3a5a8abababa9a7 +a6a4a3a4a4a5a5a5a5a60b0917293a5c7f8ca6b7a6a0a29893825f3e3133 +2c282d30728091a6bfc4a67746160e11172a446727191011121118222b3e +60452049a7343180b4f3e6dea7443226292a2831404145271d1a61bb9d51 +202832333234353530302f2d2c2a2b2d2f32312a252523211b1b1b1b1b1b +1b1b1f2125282c31373b3b3a38393c3c3b393c3f3c31221d26333f4b4f46 +331c1323313765605d5a645b575c48261c1c1a1c18253c2b24294f62484d +585a5155545257747293a8c9b3a8968e9e9e7d43203a3d4e4932221b2339 +37515b401b0d182a3c587999bee8fdffe1b7984a1e332e2c355c3d414e42 +5a4f563a27282b2c5d72726c6e705c3721212e332f714b5b5c6757282625 +2b3730405093a59f9fa4c1d3dee2deeae3cd6e73a8b0523b804e35325859 +819d643426272dace5e3dadcdda841588a632c333e4d589398521d1d3440 +2c2e2b31786e4144e36e525553514e4f3625293b3c3535373f2d5365b66c +93552b312f324653514e505039272a2727353d3f6f8c653d3328252a2d28 +2025394b575b5c5b5f605c54534d2c242d292c2c2826384e4b4150666a37 +2129241823386f767979797b7e7e7d736e6e69563d29202f4b60718c9ba9 +312743463c3e42494e4a6f93adb08662444a5d83bbe3f4ffffd048362b3c +3221324c60d4dee093424c3a2e2827241f1d141218222b2b2a292a272c31 +3643433335292d282a201330d5f9da858b7c6e6e6c7074706f70706c6a69 +696b6e7171716f6d6c6a696a6a6b6c6c6c6d1718253549637b84939d8a82 +8680837d63473a3c38343534727f808fa0a1875f380e090f0e161d2c0f0a +070707080d121d122b16062f651d0a50a2cae4c7575a656e737477858b7d +62403b3289f1a63915232a2826272c302e3131312f2c2928282a271e1a19 +181615171818181a1a1a1a1a1d1d21282f3431302e2e2e2e2d2a27282f34 +302b384c6371736c5a3f313c4257a7b9bfc4cfc8beb289512515191e242f +53573e3d585c27272d3036382712091000000b150109174462573e23141a +29373e39363844515a5b615434232b2f43576e8097b9d5e4cab7ac5b1123 +331b3252361b1a31647a6636170c1210597852434b533d1000000f1a1450 +37515c6e630c040d2331111c103d4b3606004898abb6b4bbb39a4127698f +461a593b2d468352506c37221a170c495b59544f52442623392e1a242429 +4e707c5c35181a2e29261f1d6f812e28e7b090aec1bfb4b08e655f685c52 +5143362e263c47203b31252f333e6796b2b8b9bb8e635442384538243237 +23293c2d3631221c212a446c9bb0b7b9bdc1bfb6b4a888726d67635a4637 +403d262f443d272d302c272f3d51b5dce6ecf0eeebe8eeedf0ecd4a86c38 +1c1e324e79b0e6ffa589a9aca7a29985602e2322272f2929344e6585b4d5 +e6f2fec23e35394b311d2b4e5ac9dfcea1323c403b384245414038322a27 +29303c463629222124343b312f303744402c1b0481f1faafc0cecfd8d5d7 +d6d2d0d0d0cfcdcdcdced1d3d6d7d7d4d1cecdcdcfd0d4d4d4d413151e2c +3e59758396a59791938c8b80614132342e2a2b2a697a8092a8ad976b3c0d +080e0d151c2b0e09060606070c132117301b0d3975332568b4d4e1b73b2c +211e222324343e37240e171c81f3af42131d292b2b2e2f2f292725252527 +28292b2d2a211b1a171512121111111010101315181b1e252e3534333333 +353534332f313433271d25334653564f41281c272b27493623191f1a1522 +1f100a0d0f11111530321d285361302e2a2b3037321f0e19112743543f3f +3e61796d59494250616965513d33343b3f42483b1b0a0e152a435f7a9bc4 +e7f9dfcbba63111d261031563d232137697c65351915232977aba9a7a8a5 +844b241b232413492a3f486267170b1023311526245c766a444091d6d0cf +cad1c5ac4f3573974c1f5c3e2f48865753723d28201f145163625d575d4d +29253d32202a2c3154767e5e3316162b25221e237f96402ac86c201f1d17 +101d1500041a1e26333331312d444d253d3222262018212d251614221305 +1416132d2b233c452d2b301b2726221f1e1a2026272223211e1e1a161a19 +0600080f141b1b1f3a44333943361e262e2b201b170836382a2423222d2b +29201b25333732303f576f8cb3d9eff057151b14161c212a2c1722323e44 +2f23233c5881b5d9e8f1f6b83022192e27171d31299ccdcca534302b1b11 +110e0a0b0c0e10161e2b39453a2d26222331382e292d3442402f1e0b8efc +fba4a7aba6a9a7a9a9a8a5a5a3a2a3a3a3a4a7a9acadadaaa7a4a3a3a5a6 +a7a7a7a7101018273a57778ba5b8aaa4a49a9687644130322c282a2b6e81 +8ca3bbc3b08147130e14131b2231140f0c0c0c0d1218241a34211743823e +2e72bedeecc44a392c272b2c2e3d48412f19232990ffc051202731323134 +363730302f2f2e2e2e2e30322f26201f1d1b19191919191919191a1b1e20 +252c343a3b3a39393d3d3c3c3a3a3a382a1c212e404b50493c221726333d +6e6a625d67615a5f4f301b18181a1518373a262f576435383b424c564e4c +60807f99bac8ac9f8b99997a54342530444e46311c151a26343e4b412110 +13182e45647e9ec6ebfee4d2c36e1d2b371e3659452e344d7f917743251e +2b3081afa39da09f8049251e2a2d21593e556176721d13192d3b1e2f2b61 +7d755150a4ebe3e3dfe6ddc4694f8cae62326f4d3e57996a66824b342c2a +1f5c70716e6a715e3831493e2c36373c60828b6b412424342621262f8fa9 +5643e791505459524c534022233433353f3d383a37515d39544735393631 +43585a514e583f272c27243b3c314850393a44313a362e2625242e40545a +5d5c5e5f5c56564f36272a282a2c2c2c444c3b43534831363b3328242423 +6d817e7d80818785857d777876654b2e1f2e4e65768d9cae401e41433f3f +444b504b7094aeaf8561474c5f82bae4f5ffffd04736304232212c4546bb +e7e4be49443e302627251f1f1b1a1b1e2631404b3d30292629383f353336 +3f4d4a38271597fff592888172716c6d706e6e6e6c6b6969696a6d6f7273 +73706d6a69696b6c6e6e6e6e171d25324a617785919e8c85878385816749 +383a3735353271817b8ca09f8e61400d0c150f1009060b0a0b0c0b0c131b +1d1217010e2c3c260f38aed8dd8f3c6675787a7b7d8781674c2f302c84ea +a43e1521292724272b2f2c2f312f2b2925232627241a1514141318181919 +1b1c1c1b1919191a1b22292e31302e2e2e2f2d2b25272d35322d33425a6a +7270664c3b3d445cafbfbebecbc7c1b28f5b28151a1c23274c603c364441 +1c14162a4748260808080000170d060c1e5664462b211e1a303031343b47 +504d554f5352402d2a2438485e7185a2c1d8dfd7be8022072e21102f441e +2151626f6b34110e13002a3312071322170000001a231a413344596f7e21 +0e1126381e2b224c635417003678abb3b2b6af9a4c176392550f443c335a +5d48618a53331e0f222c211e201e27302b2228251b1e212e343334373a29 +2436222d2d184f76313bcdcb8dadc1c1b4b2a07367675952514237422139 +25242d3b3939363e608eb1b4b9bf946657473f4b2e2235433940544d5f51 +352b2f2b345d99aeb3b4b7bbbcb6b4aa92736d69605d443e5a60413f4c3a +464b3a241e293449a9e1e9eff7eeeee8edeff5efdbb3723b201b2d4b76ac +e2ffb983a7a9a8a19887602e2324282f292a354f6586b4d6e8f3ffb1232e +414a2e22244256abeacbc14d32413932404744433d393327232e43516c55 +4434272a2d232e31313b342a290636e1fac8b6cdd8d4d6d5d4d4d2d0cece +cecececed0d2d6d8d9d6d2cfcdced0d1d5d5d5d412181c273d566e8293a5 +9994948c8d84654330322d2a2a28687c7b90a9aea070440e0b140e0f0805 +0a0908090809101a21181b0412334937234bbbd8cd711028241f23262d3e +3f2d1e0b181e80edad46131e2a2c2c2f30302928272728292a2a2b2c271d +161513101313121211101011121414151920282f34333232353636343231 +34362c1f20293d4c54534b3324282d2f55402819201b1a20231509090d0c +130e2938181f3f49271c11203d47331811151e28524c403e406e75594749 +5456665e52453c3b3a3239353c3d27140d0a20344e6781a3c9e3ece4c887 +2105271b0f33482426566470683213152417486564666c715c351c192d2b +193a27354a66822a151426361d2e2b5f8581503e80bad1ccc8ccc1ac5a25 +6d9a5b14473f355c5e4a628d563622152834292529272f372e242c292124 +2a373b3a3639382720301c2526175a884743b98f22201f19101f23090817 +1a233131324228412c2b323b3430271e202d281511251705111210292022 +3f514343483b4e4635303021181f2a25241f1b1b19161a190e00050f111d +152250634b474931383f3823191a160830412f2727222f2d2a221b23343a +3633455a708fb8dcf1f36f121b11171a222c2c1722323e442f24243d5980 +b3d8e7f0f9a71e231f29201d1c2b2478d0c5c9552e301e0c10110a0c0e13 +151416253c4f6d5945332628281e272c2b383128270d46f2ffc1a1acaea5 +a8a7a7a7a7a5a3a3a4a4a4a4a6a8acaeafaca8a5a3a4a6a7a8a8a8a70e12 +152137547189a0b7aca7a59b988b68432e302b2828276b82839cbac1b683 +4f13111a14150e0b100f0f100f10171f22181e091b3d52412c52c1e0d77b +1d332b23292d36474b3b2b19262d8ffcbc531e272f302f32343530303232 +313130302f302c221b1a19171a1a1a1a1a1a1a1a191818191e252e343b3a +3b3b3d3e3f3d3b3b3c3b2e1f1c2437444c4b442c1e2533437973655b6663 +605e54371b151716161230412227434c2d27253b5f69534b6c87939fcabe +ab97879e8f5f3b2f32344c443321141315142328363c2b18110d20334f68 +82a5cce7f2ecd1912f133727143651303a6c7b857b401f1f2c21536c625e +666c59341e1d3436274a3b4a61798d311d1d304125353063878657478dca +e4e0dde1d9c4743f86b171275a4e446b725f769e67452e21343f36353a38 +42493d3138352d3033404544434646352f3a1c232e256c9c5c5ad4b15054 +5a544c554f2f28322f333e3b394a324e3e3e48534a433c3642565c4f4c5b +43282b26243a2f2e495a4f525e51615641363529243655595c595a5b5a56 +56503f282829272e27305b6c54525a464f53452b1f1f1e20658982808783 +8c8888817a7a7a6d5231232d4f687b909cad52183e404242444f504b7095 +adaf8560464b5d82b9e4f5ffffbf3234373e2d24273d4199eddfe06a3f42 +3121262820211e201f1a1d2a4354715c49382b2d2f252f3335413c333217 +53fafbb182837c6d6d6b6e6e70706e6c6a6a6a6a6c6e727475726e6b696a +6c6d6f6f6f6e101c212b475e73878d9d8d8888828683704d393938353530 +6d8378889c9e9565460b0815121812060e090a0e0d0d1a2a1f201a061a28 +201b1524aff6b65664667e7f7f83828374543c272f326dac7d3615212a28 +2426282a2b2c2f2d2a24212123252116111113121717181a1b1b1b1b1d1b +1918181d242833302e2d2f2f2e2b2b2a2f34342e2f3447606e71715f453a +445aabb9b8b7c4c0c2af91612c191f1b22204463413837351e15183a5f54 +24070500040015010a0f2a575b4527141e28282229384e6c7a714b4b4e51 +493525212834485f748eaec9e4ddc6b6620e1b21313140101b656f7f6738 +181e2104040000000000000000060c1211283131495853242422252b191e +13669a83340c4284acb2b6bbb9ae732b7298620b3a4430473f2f3a49281f +25231b2c2c252a31353a372c2425232226333b352c31474733282c3c3f1f +2e4e1112a1df8ca9bec3b4b19d7c6c6a62574f43555c424a4c463f3b473c +353e5785abafbabf9a6d584a494b362a43625a42495d5b4e332f3b313059 +95abaeaeb2b7bbb7b4ab9a786c6d5f5f4938506340324f6067471c101d23 +29498fdbe6ecf5e7e8e3eaeef6f1ddb77940241c2a4872a6dbffd082a9a6 +aa9e9689602e2423282f2a2c35506584b2d3e6f3ffa20a28454427272136 +588ce9cbcb74354b3e304049434533343023191d2b34160d10171b2b3835 +342d1d140e16291d08b8f2e7b9c9dcd3dbd7d4d7d6d3d1d2d1d1d1d0cfd1 +d5d9dad7d3d0cfcfd1d2d5d5d5d40b1517213a536a848fa49a95938b8e87 +6e4930312d2a2a26647e798fa8aea7754d0c0714111711050d08070b0a0a +172923261b071a2c29282431b7f09d2d2a1d231d232c353f3a261a0f1e2c +6cb2853c13202b2d2e30302f2a29292a2a2b2c2c2a2a24191212100f1212 +11100f0f0f1013151413161b23293333323436363735373736342e221c1b +2a42505454442c222d2f543f27171d191d1d231a09090d0a120a1f391b1e +323d2b1d132d5352321a1311262e5140413c486a6855433f57655c4a4243 +47575e512c30383c331c0b07132239516a88acc8e4e0c8b864101a213232 +43141d676f7d623617242f1c221b2a2b2e332c201c1f1d1c15272e2d4457 +5a2d28242328161d1774b4ab6c5191cad3cbccd1cbc081397ca068103d47 +3249402f3b4a292228271f32322d313a3d413a2e282929282f3c423c2e33 +45452f222332341b355f2a2193a9271f1c1b121c1e0e0b171e272f324e5c +4952534c433b3f3028201e292510112018070c0f0f20242a4d7066453d4b +494333343e2c1b222b25231d18181817181a160104100d1c161844634938 +4a54583b180f1b18100e1e402d24261c2c2828221b21323b3b384d607492 +b9dcf2f38b141d10181a222f2c1721313e442e24243b567eb1d5e5eef896 +0d24231e152220242353c8c1d785373e270f1313090e030b100c0a12212f +150e0f151926312e2d26150e0813262119cafbe1a5a9b4a4aaa6a5aaaba8 +a6a7a6a7a7a6a5a7abafb0ada9a6a5a5a7a8a8a8a8a7050d0e18344f6b8b +9cb6ada8a59a9990734a312f2b28282465827e99b6bebb8557110d1a171d +170b130e0e1211111e2e24241d0b223532302b37baf4a3353626281e2632 +3d4a48332a1f2e3a7ac092481e283031303233333030333332333232302e +291e1717171619191919191919181b1918171b20292e3b3a3b3c3e3e403f +4340403c32221816243a484c4e3d27203340766e6057635f625c543c1f16 +1914150d274326273640312a294b77775552768aa2aacbb2a89188957b55 +342334434532241b19282f280f1b2b3735200e08101e36506b8ab1ceece9 +d4c4711d282b36344c20327e8793764425303a262d232c2a2d322f232226 +252621353f3e5867643433302e311d221874b3ab6d5698d6e4dfe1e6e3d8 +9b5395b77e23505641585547505e3d3337332b3e403a414b5053493b3435 +353438454c463b4053533e2c24313c2948733e36accb535357564d534b35 +2c3335373c3a5564535f65625c5356463c383e50584a4c58462c28252734 +34365779725453635f543f3a4330243753585a56565859575753482b272b +232e29274e6d52465e6a6f4f2617201c16224c827b7a8076837f817b7775 +766d5435252d516d7d9098a76a17404045424552524b7094adad8560464a +5b80b7e1f3ffffae1e333b33232928344176e7dced97464f39222a2a2123 +13191b14111829351a12141a1e2c3936352e2018141e312d29d6fad38a80 +816c706b6d71767371726f6d6d6c6b6d717576736f6c6b6b6d6e6f6f6f6e +111e212a475d7089899b8e88878185837c553d3a3835342e638278899998 +996c4c0a0618192724141308060d0c0b20382226211516232112141dace2 +774f7b6f8685888b847862421c25342b140c01001420292824242525282a +2b2926211c1b20231e140f1014131515161819191a191d1b1918171b2125 +33302e2d2f2f2e2c2b2b2e2f3436322a3c586668706b513d47569fadb2b4 +c1bbbfa98e66301d261e27243e664b3f34371e171c3850350b020700070d +08000a153251463a28161e261d1c2e49678faaa37c705344493924212125 +344b627c9eb8ced4d2d0a3471317242f4d3c354a3e3740311f2e21130b00 +000000000004080c1214202c523a4c4a42444d463d403e312a2a14172129 +496fb1b5b7b6b1a97a235f8468113e573c4445434f4d4a423e26172d3a34 +3c453e3e332b1b2129272c35262c2e344a49311e2e3f46383353210f71e8 +8ea5b7c5b6ad937f6b64655a4d4d5b583c3b443a323746312a39517da8b2 +bfbc9e765851534835262c4d5c3c2938342e1a223d322e5d8da7adaeb2b8 +bcb9b3ada27b6c6e5c605234333a26285475876128192928213d72d0dce7 +f0dee1dce5ecf6f0ddb97c4428202d4a6e9ed5ffe988afa7ac9d96885f2d +2323272f2a2b38516686b2d4e7f4ff990127463e22281f2d5575dad2c39b +445e4c35444a41463a3a342922252b2a2a23292d292c312f2f30332b2a2d +28210079eef9c9c6d7d7dad5d2d7d7d4d2d3d3d4d3d1cfd1d5d9d9d7d4d2 +d1d1d2d3d5d4d4d40a17171d384f66848ba29995928a8d877a5134322d2a +29245b7e7990a5aaae7d530b0517182623131005030a09081b37262c2214 +1523251d2128add6571c381d221d28353939301e04142b29160f07001421 +2c303030312d2b2b2b2c2d2e2d2c292821171011111010100f0e0d0d0d0e +13151413151920263333323436383736393937322f2a1f131f3a484c5350 +3825312b4a3523181d161b17201c0a0b120a160d183a22252f412b1f142a +4433191615122a3e443c403f4a5f4d4643415b634a393d495774867f5a55 +3c3034230b0c1017253c526c8da9c2cacccea54d1b1e25305040374c3c33 +3b2d1d342f29281e242727252422201e23222d3a604b5c584c4b51483b3d +392f2c352d405c73a1bcdbcecdccc3bb8831698c6e16415a3e4643414d4b +484340291b33403c434c4745362d1f25302e353e2d33303648472d182434 +393038643c2167b92b1c181d1419140f070f1f272c39545843434b403637 +39221d1d1a232210131a190c080d11172026365b683f1d2621211a294230 +1d2a2723241f1a19191917191c0404110a1b1d1226382d2e4f6978542417 +271f0c07063928222315292626211b202f3d3e3e53667a98b9d8eff5a71c +23111a1822312b1620313d442e23253d577db1d6e6eff78d082924170d23 +221f1e37b2c5d2b04a5637141714070c0710130f111820232a24282b2425 +2a252526292322272225128ff8f5b5a6afa8a9a4a3aaaca9a7a8a8aaa9a7 +a5a7abafafadaaa8a7a7a8a9a8a7a7a7020f0e14314c678a97b2aba8a499 +98907f5235302b262522597f7d98b1b8bf8d5d100b1d1e2c2919170c0a11 +100f223c252a24191d2d2e23272cafd85a214123241c293840443c2c1426 +3c37251e150b1c2631333030312f30303333353634332e2c261c15161817 +17171717171717161b1918171a1e262b3b3a3b3c4041404044444039332a +1b0d19323e414b473121343c6b635b57625b6256513f21191e151c132347 +302e3343332c2c4b6a5a3e517e92acbec0afa49188866046342639423627 +2023263f524f353a2c2933250f0b090e1e37526d93b0ccd5d8dbb2592828 +2932594c4c63544a4f3c2b403a36362b302f2e2c2d2a2a282b2b36436b55 +696355535c5446463f322b31273a5872a3c4ebe2e2e1dbd3a24b82a38429 +54694d55595965615d554f38273f4e49535c5857453c2b313a383e47373d +3c4256553e242332423f4b784f3580d9575052584d4d4137292c37383742 +5b604d505d564f51533931343949554b4f53483225262c2d313240647450 +333e3733262f4633253d4e555a5757595c5956534f2e252c202d2f223043 +373c63818f6833222c2211172a6e696a7063737073706d6b6a624d322630 +56717e8b94a6841c464149434753514a6f94acad855f45495c80b7e2f4ff +ffa518383c2c1c2a272c3d5cd4e1e7c15a6548272e2b1f22181e1e18191f +282a2c262d302a2c322e2e2f342e2d312c31239cf9e99c7f7c706f696b71 +7774747371706f6d6b6d71757573706e6d6d6e6f6f6e6e6e1525242b475c +6d88879a8e87867d8584845c3f3b3734332c597f788a97959c73540c0b20 +2434311d190a060f0f0c26462928251d091b2c120f1fabaf4666687e8b88 +8b8e7d674e342418152012030d1114212a29262424222628292926231e1e +21231f14101114161516181819191a191b1a1a17171b202433302e2d2f30 +302d2b2d2c2c333b332637545c59686f5d464e53919dabb6c1babfa78e67 +2e1d2820332e3a61493d2a34302a27383e1b000e0600021b00051022344a +2d2125272f2121243c586f98b7b3c6a25831423d242226252c3f546b8ba5 +bbccd5bdb882251f1d3b606a4f3b3d393c4f4b51210c020000000000040b +0a030b071920552b34202d3c3424182b3f2c1d23171700000c699ca6b3b8 +b5b491395a877e223d5431313d4a5336372c2b1326282c2e383a2c32242e +2728281e2c423639373b3d2b18182b3f45361b371b0a4ce98da1b3c6b6aa +9a8a6e5e63554950524e242a222f325d371e1b324d78a5b0beb8a5816058 +5a46352e26437365331e18190b1d3c302653819fb0b6b9bbbbb9b4b0a97e +6c6c5b5f553e2d23233c5e6680703a16222d293c5dc6d6e3f0dbe2dce1ec +f7efdbb87e4729222e476896cefff688b1a9ad9e94875e2b2021262e292b +3f586c8ab5d7e7f5ff96052c42371c27222c4c67cadab8b1516b553a474b +40443b362b22232c312c221b23282529343435313324292e20260a4ceeff +d4bfccd9d5d1d0d5d8d2cfd1d5d6d5d2d0d1d5dad8d6d5d3d2d2d3d4d4d4 +d4d3101e1b1e3a4e638389a1999491898d88835839332d2b2822547d7c93 +a3a6b1845b0f0b202434311c1807030c0c0921442726231d0a20341c1923 +a39a1c291d2524202f3e3c34281a120d0f1e1406141714222d3130302e2c +2b2b2c2e2d2e2d2b262620150f101111100f0e0e0d0d0d0d141515151519 +1f2333333234363737353537332f313225132039413e4d54422d35284330 +221c201518111c1d0e10160c2217183b25232438372e222d36190b201a19 +2d513a3f3e434a5a3c344451614f3e3341515c7c9995a98a441f2e2a100e +1312192c41597995acc0cdbbb8862c241c385e69503c3b36384b4b582f22 +201b1b2328282829201419162c346c414730353e321e122338271e333b52 +4b366dbccfc2c5c7c7c9a649648d84273f5534343e485337382d2c162c2e +33374445393d2b342d2e2e2635493d3d393b3b2914122736352b1c483b25 +4cc1301c131e171817160403191e233b484d28322936385f2f120f191822 +27171616190d030c1412212c2f50806b2b10090c09203f2e1b2a2824231e +1b1b1c1a15181f050414091a1f18191d27425b5e776736141c22160c003a +2a2526162b2923201a1d2c3a3e3f546b829db9d4edf6ba242a131b172231 +2c1721313e432e21273d5980b4daebf4f38c0a2925140c22231c172ba1cc +c9cb5a67441a1a15060b080c0b0b121f2525231f242720222a2a2925291c +21281d2a1b5ff9ffc5a5a7aea6a09fa7aba7a6a8aaacaba8a6a7abb0aeac +aba9a8a8a9aaa7a7a7a60a181416324b648995b1aba7a397989188593b31 +2b262420517e7f9aafb6c494651613282c3c3922200e0a13131028492827 +241f0e24371e1a24a1991e2e242b251f3041423b3325201b1d2c23172425 +1e27323431302f2d2f303334353434312c2b251a15161818171717171717 +17171b1b1b1a1a1e25293b3a3b3c404141403f403b343433220d1a323835 +444d3b293b395d57565a645a5d4e4d42252124172a1f264a332e283b3d39 +364b5f483b688da0afcdb2ad9e907c74432e353b44332a1e2127243b514f +6f5e2b132d2c110d0f0c13263b557796b3cadac8c491342a223f69776250 +5049475957623a2f2b292b33383636342d1e221d323b744c553f424b402c +1e2e402b2032394e4b3976cae0d7dddedddebb627fa79c3d546943455360 +6b4c4c3f3e253a3c434854574a4f3d443d3c3a313e53474845474937251e +28373f3b2e5a4a3866e45f534f594d47433d2822323130445155333f3b49 +4e764628232f3447574f514f4a3422262e282d373658897940271e201629 +4433213a48525859585b5c5a55535330252d1f2c2f252427304e6c738c7a +4521262a1c1a1b6764656f5d6e6d69696764655f4e3227365e787e8790a7 +95244b4348404654524c7193acac825d474c5d81bae3f7ffffa51d3a3b28 +17282727334dc1e6ddda6976562f2f2c1c1e191a16151c282f2d2722292d +272a3333353134272c3226362d6efdf7b0847b7b6e66656c747272727372 +716e6c6d71767472716f6e6e6f706e6e6e6d171c1e233e546d81859f927a +81817f928c4c3843372e3227558473839d9597796300121127377c2f1d0d +0b0f0a102a42342e282305082b0a152ea8825c70747f898b8a7c5e4a3e2f +211a241c000a000d10212b29242220202828282726262626292721181011 +151b19171b1d1b16181d13141b1f1b161f2c302f2e2c2a2a2d2f32363430 +333932242a415557596c6c5249657d8ba7b0b7bec5b2975b2f0d1e1e2c25 +314d4f2e294a3f3c3e3a2a16090300000a210102102d3c32211f25272420 +2f3c57608ea4b8aec4e29e383c342f2324282e364154728aa4b0c1c0bfbd +822725413b36292940242d3231140a160b00000000000000050913150c19 +541722362a2418221f1b323d181b45000000004693a7bdc6b2ab8c375183 +942b336f3b2d30323f5353321b1a1e145268666c5e6967242f5f461d2f43 +45616386571a0e273427342e288a9f8d99e5a0a7bcb6b2b3a8927362635e +4f483a461c22206974715d2e202f47668eb4b1b6ac91725c514441242943 +806e49201c15113c4d29213b6895b8bcb8b8b5b4b2b9af8d6b5d5f5b5158 +323e35464939605f6f1c1d2d1f455c9ed3e2eddbeccce9e3ffe9edeb844b +2b232b3f6295cdf5fa929ab0abab947d502a1e1e2a33292e4d63728cb4d2 +e1ecfc8d28454a3b1f252e29506080ddbdb84a3f4e434e40484342382e27 +25272d2d21211625211b33283428222f301c192d2712d2fce6b5cbcdd1d3 +d6dad5cbc9cfd6d2d0d3d1ced2dad7d6d5d4d4d2cfcdcacbccce171b161a +3049637c85a59d878e8d87998d4c363f2f26281f4f82768ba9a6a98a6b02 +16152a3a7f2f1d0c0a0e070d273b251d1f230e173b161a26905a242b2526 +272b3a3c302c2a20140f1a16000f061512202c2c292728282d2d2b2a2929 +292928251f160e0c101412101113110c0d130d11181c18151e2b31323130 +2e2e3133363b383133382d1b1d30414040514f34293a3f31281a16141818 +1f111b0e120d180f163034181a41393a3b3829171012142642613f353144 +4f4741444b4b3f3233394f547f94aaa0b5d48f262c252111070912203047 +69849fabbebebcba80221b363333292c40242c31341b182c272627283339 +2d26221b2022213168242433281f0b11110f28371c36844d565364a1d5cd +c4c7c4c8a94d5a86972f306f4236373744585638212127205f77777e727b +732c37684f253749496363845516072537282720259ac7b4a9ca49221b0d +162221160100131f232c2c431e2a27727c7863301a1817191f2c1717150e +06060c162e222c4a8974481c1309083647261f24242825170e12191a121b +1c10080b1216192d142f344d4f3f63606c15121f0d1c0c2739302b193717 +2a1522123a694040516c869fbbd8ebedc83a1b1f1621242d241924324549 +2c1f2e41577cb2d9ebf4fd891e36332719232814232e5ccdccd25a424328 +21090d0a0f101011151b2027252c1d2820152b1e281c17272d1a19333422 +dcffe2a4b1a8a3a0a2a8a7a2a4aaada8a6a9a7a4a8b0adacabaaaaa8a5a3 +a0a1a2a4151713152d47648291b5af9a9f9d94a3924c373c2c23261c4f85 +7d96b9b8bf9e780b1f1e3343883727141216101630432c2322230d143812 +16238e5a252e2a2a282c3b3d322e2c251b1725240e231c281e2631312d2b +2b2b3131302f303030302e2a241b1312161b1917191b1914151c171a1f23 +1f1b233036393a39393a3d3f3f3f3b3335362a1617293a3a3b4a4934364b +4e4a55575c5b574e4d3636222017231c274245252142393d464e5350566f +93afb9cfae9e8e886f4c34323e3d2e1c18182a223a3c4135568d68182c28 +1e0f0c0f0f15203658789cafc9c9c7c183262644403e33354a2c34393d25 +23373233393c45483c3530292928243571353d4e3e351f24201b3341273d +89525f627fbeebe4e1e5d8d8b96277a5b64c4d8754454a4b586b69483131 +3630708a8b948a9389414a795e324255546f6f91632517323c2c312f36a9 +d3c5c3f380635e48464b493b231e2e34343a394e2a3737838f8a713d282a +313b4a5e4d4d4838261f1f23342531509080582d281d1944512d242e3d4f +59534d5256565056523c2722262826371e363a555b4d74727d27222e1b2e +274f6d6c715f7a5a7060725f7b97593c2c3e657a818b93a2a539384a3c45 +4850484d7291b0af7d5a4e4f5c7db7dff4ffffa2364b45331d242a1d3849 +78e7dfdf6951533b3620211b1e1b1a1d202931352e30232f281f3629362a +25343825233f4431e5ffd790907e7167666b6c6a6f75756e6c6f6d6a6e76 +73727170706e6b696465666812181a223952697e839d957e84858493a962 +3a3a333635214b7e737f99999c7e5f0217274463c3771c100c0f10111f35 +37421f090d0f150e152e8669556e78828888816c4e42392a1e1e13134eb1 +771612232d2d292625252726262628292a2a2827221c1614171a13161714 +171f1e161b181b1d19171f2b31333333333437392f3433303338352b2231 +49525a6e725f4d5d7d90a5b7b9c2c2b49a5f2c06161926232e484b323860 +4a403b382a160d0a00000a1504081c32332919161c242929363e5278909e +a9b5c5e87c30442f281f2227282c32435f7691a1b6bdc1c8a66520454e34 +24191d40392e2516150c00000000000000000100070d0a1959304a677c53 +221a272f382c2a295c1a0700073a89a2bdc7b1a98f424380933527653527 +22464c4a553a161a262877b1abb1a7b29a47347c5e171e3c344a53725820 +121d2d222e352c88b5a0aadea594b7bcb0a9a9987b6a6b63524a3f482420 +296662466c634f343a698b92b0b8b29b785e50423e2d2e3b6a5943391620 +2032321d1f335b89b5bfbbb9b3b1b4bbb2936d5f5f5d554e342d39243538 +3d40411c2f2f242b4d88c8dce8dfecd4e6dffdf9faec93502a252c3c5988 +c3f2ff9a93adaba9937f4c251c1b29342d314e66778fb3d0deeaf48f4967 +52311e363230445c70d4cbc67c37584646454f4040372c2523252b2a3548 +5c452f3228101a1e3254645146552600a5ebfbb7ccc8d1d4d8dbd8cfc9cd +d0ceced1d1d0d4dbd9d8d6d4d4d2d1cfcccccecf141815182e475f7983a3 +9d8b91918b9aac6238362e2e2d1c457c7685a4aaae8f69091e2e4867c67a +1c100b0e0d0e1c2b222d140b1922281b162167391724282c2a3039362c2e +2f211513080b4bb6832114202c2e2a292a2a2c2b29292728272723221d17 +110f10130c0f0d0a0d15130c1515181a18161e2a323436363536393b3238 +3731343a34261a26373d4151533f2b34483f2b21181613131f131d0e0e09 +120d1731341d27513f3a3a3a2d1a1217172b485842383744454341444644 +372b2d30436982949faebcdd6f2036231e1106050b1523385973909fb5bb +bec6a25f1236432e231c20443a2e281f232315293536434b43382814151a +1f316b38435c784e10071623302a324bab8d94857f9ed7d0c2c2c3cbb05d +4a80963824623e352b4d53515b401d232f3586c3c0cabfc8aa533f876620 +2442364c5370541c0b1b362720242898e1cfc2cc51131814171b21170503 +151f21292d422626306f6b4f796a4b1f0e2225121c1b180d040209142b29 +2e3e716047380e1714272a182024262a25170e131b1c11191910090b1014 +1b20131a34293f4546464015221e1108071e38302b20351f26121f254768 +483d4b6c8ba2b6cee5eed6491b1c151d263222182532454a2c1d2b40587c +b1d7ebf6f98b395140261e3629191b2f4cc2d6dc8e3e4f2d1b0e14071011 +111113191c233c55654c2f2f20050e13274e6151495c330eb2f2faaeb6a6 +a5a1a2a8a7a5a6aaa7a4a4a7a7a6aab1afaeacaaaaa8a7a5a2a2a4a51316 +12162a45607f8fb3b09ea2a19ba4b16439352b2b2a1947817f91b6bec6a3 +751328385370cf8124181314141523332b341a0a151c2212101b64371825 +292d2a2f3a362d2f3022181910165cca9b37202732332f2e2e2e302f2e2e +2d2e2e2e2928231d1715171a13161512151d1b151f2021231e1c232f3739 +3f3f42434848393b3a3336393223172233383c4d4e403b445050545e5e5e +4e474e3a3c231d131e1a2945482c2f543d3a42515a5a66809cb2b9c0a99a +8e82593a292a38392a160e09183237332c39558e451136271c1114130f0d +102243648ba2bdc6c7cba3612149533a2b2125473f3631282c2b20354749 +5359514737221e202033754b627e9365281b262f3b353f57b2949e99a2c2 +eee7e2e2d7d7bf7067a2b959437d4f423c6065636b502d32404699d7d5e0 +d9e0c3695599792f324e42585f7d632b1b283d2d2d3437a7ecdfdef68d56 +5b514541473d28213236363a3b4e3332407e7c5e8274593027424d425050 +4c3b271b1b1f2f2a3043776a5348232a2837371f252b3a4a58524e515656 +5055513c2b232627272a1a203a2f484e555652273630241c2142696c6f66 +78626f5d7272899a67412c406d7d7d858fa5b34636433a404654484d7290 +b0af7c584b4d5e7eb4ddf1ffffa45366502e1e342a212d4666dae8ea9c4e +60402f2328181c1c1a1c20272f33465b6c54393a2d131c21355a6c5b5266 +431dbbf8f69f9e81766a66696c6b6e746f6a6a6d6d6c707775747270706e +6d6b6666686910181b223b52687d829a97838584828fb17245372f373720 +40797479929c9f826408101a2b3a874513110a0b120e0f20262d160a0f1b +1b141b3967565c707e84888577593f3e3b25132525347feeb44614242f2f +2b292929272627272a2b2c2d2727241f1b16141415161818191a1a181e19 +181a1b1e252d2e303132333335362d3334303037383423283d4e5b6a726b +52538198a1bbbac3c1b5a066310713171f212b4045353f653e2e2628200e +080c00020d04040a242e27221715191f262c4463739799bbbfd0e9b6302d +3e2f361822211f1f23314a607e90a9b7bdc8c1a73b3049361920366d8757 +2810160a0a3a2f18191f221f1504161d171844253f5c7852180712233020 +0f06492b1c10183080a0bdc4afab9855367f954815512d212f5147466140 +0f1a171d6dc9b7bbb3bdaf6228836d2119323d4b576767392c282e242536 +256cbca8aad0bd8db4c2b8b1aa9d82706e6553493a392b1d2740371f383a +35303f628ea8aeb8b59f7c5f50453c3326223f2a1f2c283f3b34281f2626 +527eabbbbab9b3b3b5bbb399776564605442443c6e2e32342f3c35344636 +372f4373c3dae6eae7dff1e6efe9d6c9a05f2d28303f557dbbf0ffad8fa9 +aba7938347231a1b2b362e314c66788fb2ceddedf5925c6a4d2a1e3a3235 +3a545fbad8cdb13a574a3a44513e41392e2522232926466fa8773c382829 +212538586d635e6e1f0063e9ffc9c4cdd2d5d7dadad2cecdcdcdced1d1d0 +d3d8dad9d6d4d2d2d2d2cfcfcfd0121816182d445c7680a09f8e90908a93 +b27243332a2f2f1b3a77777f9dabaf916c0c141e2e3d8a481412090a100c +0d1a171e0f0e1b2c2a1d182744241c262e3030343529212e32210d1c1b2c +7cf0be4e14212e302c2c2e2e2c2b2a2a292a292a2525221d16110f0f0e0f +0e0e0f101011181617191a1d262e2f313435353537383138393333383630 +1b1d2b393f4d534b302a4c4a282716170f122218200d0c070e0d162b3020 +2e593428242922130e18192c47443f383e413a3c3f413f3b332b39516287 +8badb6c7dfab231f32252f0c0d080a0d1525435a798ba6b5bbc8c2a53023 +413319233970875a2c1a2723286c7e7d848a806b49242a2c2b2d552a3651 +78500c00071d2f241b2e9ea5b1a79a9dd4d2c3c1c4cdb9703d809a4b124f +362d38584e4d67461623202a7cdbccd4cbd3bf6e338e752a1f383f4d5765 +6335282735271928217ce6d6c4c06d10191e1f23221c0c09182122282831 +2a232e4940284240311d151f2c2d1b1b1b1105010815272d24234431232e +23362f29201c2519262b291e18191f1e131718110b080c13161321276733 +3c413842342d3925240e0512372d27262c27331d171a25404c444a6c8da5 +b4c6e1f0e65e191b151b26361f162332464a2b1e29405b7fb0d5eaf7f78c +4a573c20203c2c20142738a3dbddc143503313101805111110101015181e +4d7cb17b3c35201e151a2d526a6361752c076ff2ffbfb0aca8a4a3a7aaa8 +a7a8a4a3a4a7a7a6a9aeb0afacaaa8a8a8a8a5a5a5a6111613162a415e7d +8baeb2a2a29e979eb7744432272d2d183c7c808bafc0c6a679151d273744 +914d19160e0f130f101e1e25160f19262518132342231c272f302f333629 +232f33220f2123378dffd7632028343531313232302f2f2f2f3030312a2a +27221c171515151616161718181922211f2120232a3234363d3e42424645 +3a3e3f38383c372f181927343b494e4c3e3a545851635d5f4d4752424225 +1c121818253c412f365b332a2f45535766869eb2b5a8a396927b4b312728 +302f22161929344c40544f628a6d0114362e3616201b130b0a15334e768f +afc2c6d0c6aa3e35503e21283e758f6135232f2a32758b898e948c785631 +33312c305f3e53719266220c1527352d2738a3aab8b8babeece9e3e0d7d9 +c883599fba6a2f67473b496a605f77562632313b8fefe1eae5ebd88449a0 +88392d444b596372724439353d2e2537308bf2e5dde7a8525b5a4d494842 +2f2735383739363e382f3e5851374e4c40302d3e535b51524f3f2b1c1c21 +2c2f27284a3b2f3d374943392d232b2037475755545559584f54513f2f23 +2527231d282e6e39454a4752463f4d3737211e35686c6c6e736d7d696a68 +6976704b2c436e807a7d8ca8c15931413a3e4658444b7090afad7a56494d +6080b3dbf0ffffa6646b4c281f392c27233e53bdeeedd154624728262b16 +1d1c1a191c22282d5582b88446402d2c23283b5e756d6a7f3c167bf7fdb3 +9889786c67686c6c6e716c696a6d6d6c6f74767572706e6e6e6e6969696a +121a1e253c51687d8299998782807c81906f503b2c3235253a7679748b9c +9d8464040b071e121a000d120d0a120f0f1e200d0d1d01182d14214a595a +6c757d7e847e6947323b3a212c2919347fdc9f3114242f2f2c2a2a2a2828 +28282c2d2f302d2d2b27221a14101913171f1c11141e1916161b22292f33 +2d2f3031302e2e2e2f3536322e3237382c26354957626f705a4c7e9d9bbb +b4c3c5b8a76e380914181e1d24343b3037542c160d121103040c00060a00 +040b252721201c18181e2a355470849a9ab4c8e1d7500b492a2541182621 +1c191c273e506c819eaeb2b8bec48928323909276266775023121d07043d +43241f272b2a17000d17161030203953715c311c1b23260c1a023b2b1007 +131d739fbfc3b1ae9d652977935c0d44372d494e57809c631d161e1c54c3 +ababa9b0a5741b706d3621252f323d394b312f29342d273d1d45ad9ea3c7 +e597b0beb6b6aea388726e64554b382f3e2f31262b32262d2c38444f79a3 +a8b3b5a48264554d3a37262748413647485750453630301c4973a1b6b9b9 +b3b4b4b9b4a1816b67635745494a96573f392c41433930212b2e3e62bad7 +e6f3e3e6deecf7f7d5c3b05f35282d3c5378b4ecffc18caaaea79585451f +1a1e2e3a30324b677b91b2cdddeffb8c4e4530272432303239485793dacb +c75b424e383e493e41392f27232326232e4a765822151b2f24201e2c372e +2d39190624e8f4e0b5d2d3d5d8dadad6d1ced0d2d3d3d1cfd0d2d9d8d6d3 +d0d0d2d4d2d1d1d1141a191c2e435c76809ca0928e898285916e4e37262a +2c1f34737c7a93a8ad936c080f0b21151d010e130d0a100e0e1a15030a22 +0d273919193231242c2b2f2d33342f1d193136212823102d7ddda7381421 +2e302d2d2f2f2d2d2b2b2b2c2c2d2b2b29251d150f0b120c0d1512070a17 +1313151a212830342e30333432303031353c3d3633353634241b23343b43 +4e4e3a264b51242713151113241c240f0d0a0e0e1222291e284823110c15 +14090a191a2d402e3b39403b343a3f403a363331465d70888aa5bcd6cc45 +003e211f3d1118110e0d0f1a3146627896aab2bbc5c7811d2a37092c676b +7a53271c2e1f2276a8a3a4a8a0885725252829233e252f4873612c151923 +2b172d2f96adada9a094ced6c8c2c6cebe80307898610a42403952555e87 +a269241f272963d5c0c4c1c6b580267b753f292b33343d39492d2b283b30 +1b2f1955d8ccbdb89c201b1e1e2823211009151e212923243c33382f343b +303328271e101d2b17181b1409030b1a212c21264d483a494350443a2e2d +2f11272d2c2620202221141517130d06070f171324338c5a494635474032 +23131a11080b342f2429232a222929312635513549698aa4b5c5dff2ee77 +181c181b28381c152332474a2c1d28415e81b0d4eaf7f9823c3222202837 +2c21151d2f77d0d0d4633d3b120f14091111100d0f11141932557d5c2212 +132418151626342e2d40261632f1f6d9a3b5aaa6a4a7aaaaa8a7a8a8a9a9 +a7a5a6a8afaeaca9a6a6a8aaa8a7a7a7131816172b405e7d8babb3a49e98 +90909673513826282d1f387a8588a6bec4a879111814281c220412150f0a +110c0c1b1d0c11250d243715163031242c2a2d2c32332e1e1c3237212925 +15358bf1be4b2028343532323333313130303132333430302e2a231b1511 +1913151d1a0f121f1d1e1d22272e343833353c3d3f3d3f404146473f393a +3b35221921313840494f4733505e4c63595d504b584a49291f1718152032 +392c2f4c24171a344b5368899daeaa8b98918d6e422d27252a2820162332 +3d483f5266868c170038262b4b23322b1d110911283d617da1b8bec4cbce +902e394413326d71815c322638292c7fb2aaa9aea99263312f2f2d274738 +4a668a754025242b2f1b343599afb2b6bcb2e3ebe7e1d9dbcd934c97b87f +275a514763677097b279342e383976e9d5dad9dece983c8f884e36373f40 +4945573c3c364337273e2862e1dbd6dfd4625d5a4d504c4734283336373a +32324a3f483e454a3c3f373a372f44594e515145322222292730252c5352 +46585762584a3b3435193545565b59595b5850514e4334262326251e2c3b +9461524f4457534437242c231f2b666d6b756e766e777b7e6b6d79433041 +6b7f7c7d8daac56e2d423d40485a444a7091aeac7955464e6382b5daf0ff +ff9d5648312727332b2723314990e8e4e576514f292328191f1c18161a1d +22243b5b85652c1d2032262323323f38374a36253df8f5cf8d937e706868 +6c6d706e6d6e6f6f6d6b6c6e7574726f6c6c6e706c6b6b6b141c1f24394d +647c82959a8c83807c7c7a674c352b313528326f7c73879c9c8e58001718 +4c3d08150f15140f10161e29523a091200132c142552515c6f75797c7e71 +59392a38371c19261b346ab5913913232e2e2b292929272727282b2c2e2f +2f2f2e2b27201813151411131f2a271b15161a20293133332d3033343231 +3132303536322d30363a31252f44515b6a70675375a09ab6b3c4cabba872 +3c0c161a1c1a1d2b37312f3b2a150b0d0a02060f040a0700061123211d20 +1d1919202f4069748c95a5a9cbe473132158171a2f2927221d1b1b253747 +5d7490a3a6a5adc0ca5a303a11215d3e493b22121a08022d2d080009171d +0d000c181f182d2d3b4b49422923292b23002100292200000f1a619bc0c5 +b4ae9f722065896f12405245673e364d514139392f2643bdb5b1b4b6ae8a +1c637546201e4a4449384f464b4e31312e46222da2a5b0c6fb9ca4b3abab +afa78b716a6458513e3d5f44463b414a3d574339414f7c9ca7b2b5aa896a +594f494531385b654a43464d4944322d3725406592adb4b5b1b1b3b5b3a9 +8d726a655f4f41376e563e464e565e3d1b1d1c2d3654a7d5e7fae8efe6f2 +eae3cecfcf703d2323365072abe2ffd58cabb2aa9783411d1a20313d3234 +4d697b93b4cedff0f786492617252c2925283e3f6073d5cfca943559433b +40453f393028242425221c20181b1417281a1f1f1c2429190c0c1e1001b6 +f1f5bfcccfd6dadadad7d2cfd2d4d5d3d1d1d2d2d6d6d5d1ceced0d3d4d4 +d2d2161c1a1b2b3f58727f98a1948c88827f7b664a31252b2c222b6c7c76 +8ea7ab9a60001b1c4f400b191016140f10171f274d370c1b082135141735 +25242d2b2b2e343127171a3439201922152d67b7984013202d2f2c2c2e2e +2c2c2a2b2a2b2b2c2e2e2d2a241d1510100f0a0c182320161214191f2830 +34343033363736353435373d3e38343537382b191d2f353c494e472f4457 +262711151312211c260f0c0c0f0e0d1b27211f3024120a1010090e1e1d31 +3920383c403631383e3b3633373b575c78829399bcd765071a5314183029 +231b15110f1625354a65849da8acb8c9c451293a132864424c3d261c2c20 +206da6a19fa4a28e5b232a2c322a3a3031424e4b2a222e352e0d383088aa +a6a8aa9ec4d8cec6c9cec08b2a688f740f3e595170453d54574741423833 +52cfcacaccccbe96286e7d4f28244e4648374d44474c3531223a203dcad1 +cabcb82e181a171c242311050f1a212a26315b464c424a53445a402a1f16 +26281a191a170f050b1a2b3628355e694e4543463d392a2a361e262b2c29 +23222220151316171004030d1b1b191d63564750555c5b360f0f0e150c09 +2c31232b22302b362724203e5f35465f7c9eb4c5dceeee901b1f1c1e2937 +1b142333484c2b1d29436083b2d5eaf6ef7635140b223232251c1e15344f +bec7d29f324723100f1211110f0d0d0f11151f291f1e131120101515141e +26190c132b200fc0f5f0b0b3aaa8a7a7a8a9a8a7a8aaaba9a7a7a8a8acac +aba7a4a4a6a9aaaaa8a8151a1716283c5a7a8aa7b3a79d958e88806b4d32 +272b2f2432758885a1bdc2b06d0b24255647101c1418140d0e121a285442 +13200b223414173726252e2a292c333128181b35381f1923193572c6ab52 +1d2733343131323230302f3030313233343433302b241c1717161214202b +281d1b1f21272e36383835383f4042414344474a4b443e3b3c3b2b191b2c +3239444f523947624b5f5a60554d594d4d2e241b16121828342c29362619 +1c334a5971919caa9c778f8b86633a28232022201f1b2f2c3b3d474e79a0 +3e000a4f1b264545443a2a1c111321314c6c8ea9b4b6bed0d26239461f30 +6c4b55493228362a2a76aea6a2a8a79667303433362e43414a5d645c3c30 +343730103e358aa8a6afc0b7d7ebebe4dcdbcf9f4587af922c56695f8157 +4d6467554e51494365e3dfe0e4e4d7ae3e82905e35305a5356455b52585a +3e392e482d4ad4dee3e1ee6d575347474d4a36252e33383d363f6a535c52 +5b645469513d38364d574f51534b3827252a333b2d3c65745a5456585149 +37313c253141535a5a595857504e4d483a2721252a2722266b5e505a656c +6e4823201f2520275b6e6f7d717e7883767167798f4931395c797e7f8ba6 +c1812d4242454c5b444b7291aeab785345506584b7dbf0ffff93502a1929 +322f25202b294f6bdadfe7b3475d3a2424231e1c181415181c1f262e2525 +1b1b2b1b20201f282f21141d3b301cc9f8ea9d9580766e686b6b6e6c6e70 +716f6d6d6e6e7272716d6a6a6c6f6e6e6c6c151d1d2032465e777f909a90 +8585857f816842292d3733282a647a72859b9f9d53001b214f4b0f1f1511 +130f0a1b2f2b9bb122000c1e281f31524e5e6c797b85756149322b373219 +172b2c3a190e030013232e2e2a2727272525262529292b2c2c2b2b2c2d29 +24201823190d2b574d1d1d2023262b2f302c2a2c3032323335352f313332 +2f32373c3122283d4c5869706f6167a4a1b3b1c2c7b7a573400d16181919 +182435362d303525160f070209100b1302000a1c1f1d181d1b1a1b273c52 +6f97af8eadcdddb531243529121f1c3b2825201f2023313e4c667e92a09c +a0b7c6a056473c34504449473c2926170f24290000000e190d0018252e24 +2d3533342f3c3b3b373640301600131b00000c1b4d94bec4b6afa17e315e +847e1c345b4543384c57474c52372a2731a9beaeb4adb99222547f501a22 +4e423f303b372c301b232d45292094b5babff0969bb2aea7afab8f726a64 +5b5443496a39384139323c4720243a4683b7abb4b6af916e584e4c463035 +4961422227272929181f3c35395885a2aeb0acaeb2b1b2ad957668665856 +473038362841736a6b562d2f242f2d488fd1e8fcf2f7fffff3dddef4f69e +45211a2f4b699ed4ffea8facb1ab997e3f1d1c2336413335506b7c94b6d1 +e1f1f7895e2e131f241c1d223c3c6365c6dfcdc4405e553f41463d39322b +272426221c2815171f30461f2324242b332b1f1e2411005df6ffdcbec9d5 +dcdad7d7d5d2d0d3d4d1d1d4d6d6d3d4d5d2cecdcfd3d6d5d3d1171d1817 +2438526e7c92a1998c8b89828267402728312d2225617a758ca6aba85900 +1f25514e1222161214110a1d302d9bb52b0d1b2c2d1b1e3220232a32303b +31291f1821383b221b292633160d080013202d2f2b2a2c2c2a2a29282828 +28292b2a2a2b2a26211d131e1206245046181a1e22252a30312d2d2f3335 +3637383b38393c39373637392b1818283039474e50403b5e33281518130e +1c1b27100c0a0e0f0d17272620252f2217130f0c121f23372f1d38423c35 +303638343135414a5a7e987b9cbccda7251a31281322203f2c251e181313 +1c2636516f8ba0a5aec0c2975246403b574b4d4b4233382f2d68b0ada9ab +a998672d3a3941333a3b2b2f36483e3d40444e422f2975a6a6acb1a7bbd9 +d1c8cbccc1973b638d851c32624f4a3f535e4d525a41333441bcd3c7ccc3 +c99e2e618a59212a5246412f3935282e1e2321392731badfd4b7b632171e +1c18222413030b18212a283b633b3e48423942481d181e133349221c1b1a +120608152b33232e4965462424232021121c3b2e24272a29241f1f1e1712 +151b1304000c111e1c122b352f4b7a6d6a4f2122161d0e0a1b33252b2733 +71663827325b775243557197b3c2d7e8ebac23221c202b321b1525364a4c +2b1d2c456185b5d8ecf5ea764a1c0b1e2d251f1920153738a1cbd1cf3e50 +3919141711110f0c0c0d0f131d2f1a1a1e2a3e15191c1c25302a1f253121 +0a67fbfed0a9a7ababa8a5a7a7a5a6a9aaa7a7aaacaca9aaaba8a4a3a5a9 +acaba9a7161b15122135547387a1b3aa9c99948b876c452a2c3531262c6a +86849fbcc3be690c2b305d5719271a141610081a2b2ca5c13415202f301c +223523252b302d38322a2119223a3a211a2a283a211b1b101d273334302f +30302e2e2e2d2e2e2f3031303031312d28241a251a0e2c584e1f25292a2d +3035353132343c3e4243474b494c4d49444141402f1918272f37454f5849 +3c68565f5c615449544d51312519141015213431292b332d2c394e617b94 +9fa98c6c8689785b34231a171c1e21232b45522e4e779a840f0e28241831 +3b62514736281c141b2638567693a8acb1c7d0a861544b4561555857503f +44393771b4aeabadad9f7239444045384249424649584f4a45454f44342d +74a3a5b1c4becae9efe5dedad0ab5681aca23848725b5a51636e5b60674d +424451cde6dbe4dbe2b644749c6a31375e524e3d4743393c272b2d45343b +c3ededdce96e53584d434c4c38242b32393e394a73484e58534b525a302c +37325a78585555513f29232834392a3651705233373433301e2341352d3a +4d5658565453504a4c4c3f282126232b261c343d39558a7e7c613533272b +1e234870737f7985c2b387727a9bac6e343151727e8088a0b99730434449 +4e5647507494ada8744f48526688bbdef2ffff9465321a242c221e1e2e28 +5055c0e6eae55467502e2929201c16121313171a22352021263449202427 +272f3932272f41311a71fffac28e817b736b66696b6a6c6f706d6d707272 +6f70716e6a696b6f706f6d6b161e1d1d2d425b767e8d9a928484877d846d +452c30332d2a275e787284989ba5560319242d424328230e121108233e25 +9df75212162b3e233e5053656d857d866a523e312f352f17251b113a1e01 +011015242f2e2a272726282728272a2a2b2c2a2827292d2d2a28222e291b +2f524b27272a2b27272c2c2727292a2c2c2f323332303032313032373124 +27384656676b6c6c55a2a9adafbdc4b4a376481516141618192132342e2f +3b31211004030b100f1900000f241819181b1c1d2336506972aab59ab7e6 +c162364738101a1818352c29262626262d364358697e999d9eb1b3bf8e58 +4740414a3034403d311c050021000000041109000411231e2c4539322236 +352a130a20242f0e1b260500010b3d8ab8bfb4afa78d43567e862a285c36 +2d2f37363541412b242d2997c7abb6adb396323b7d5f1f23473d3e41443f +13130b1b2d3c28137bbbb2b8e8a095adb4b1adac96776c685f564942592e +202a273d524d0f17302f6ca5abb1b7b398765c513b3b3234386d68441c14 +1116152d482e39547d9babaeadb0b2adb0b09a7865645652563a2f28233e +5f58546e44282225274276cce7f9f8f5fff6e0d9dfe0cb8952261b2f4560 +92cbf7fb94a7aba899783f1d1e2739453636566b7b93bad5e3f1f680633d +2625231a1a24303c565faef3d2c857515d444a413c38332d292725211622 +29261e2935271d1e181a252622241a1b0e15defdecbac3d3dcdad4d5d6d4 +d2d4d4ceced3d6d6d1d4d6d4cfcdd0d3d7d5d3d11a20191622344f6d7b8f +a0998a8a8b80856c442a2b2e2825245c7a788ba3a7b05b061c273046472c +2611151509274029a4ff60232738431d272b222a2b3e33402c201a1d2b3d +3b232b1b0d341b00071615212e2f2b2a2c2b2d2c2b2a292928292929282a +2c2c29271f2b24162a4d462224282b27282d2d2b2a2c2e30303335393a3b +3b3a383634362c1917222a3745494e4d2d64442a1a19110b191e2e150c07 +0d13101625272124342f23150d0e151f2538231d3648343231333330313c +515f5c8f9e86a4d4af532b3f37121f201f3d342f272118131419263f5673 +97a2a9baafb88c5a4d4849503437464643342345b0b0adada99a692f2828 +352d394d362f2a3f382e1e182e36433d79aeb2b1aba0b3d8d2c6caccc4a3 +4d5b89902a26623e34363e3d3b4749352d3a39aadcc4cec3c3a53e488868 +262b4b414040413c10100e1a21302621a0e3ccb4b6471b22241f1e241505 +0b1821292a30502d23313044554c0e0e1a04223e261c191c160907121321 +1e28356f6c461b110a100f2a47292527292a251f1e1d1913161e1704000c +0d1526191e252746655b536a3b1d151713110d342625282f46432d283541 +3b2a41526f97b4c0d5e9ecc52c22191f2d2e1e1727384b4c2b1c2f476287 +b9dcecf3e8684f2e20252b241e1e1a1a2a2e7dd2d2d25747452423161210 +0e0d0c0c0f1213252c261b232d1f1516101422252228262b1b21e5fde4a8 +a5adafa8a2a3a6a6a5a9a9a3a3a8ababa6a9aba9a4a2a5a9adaba9a71b1f +16101e314f72869cb0ab9a9694878a724a2f31342e2c2d6787889eb9bfc6 +6f172d363f5252352d161a180b263f2caeff6b2d2f3e47212f32262e2c3c +303e2d211c1f2c3f3b21291b0e38240e17261f283434302f302f3130302f +2f2f2f302f2e2d2f32322f2d26322b1d31544d292f33332f2d32312e2f31 +37393c3f44494f514f4d4a44403e321d18242935434a56532b69625c5c5e +524654515b3927181010151e2f312a2c3b3c3c3f506884969ca278657b86 +66502e1b16121822292e234c4e3055948940253d320d222d3c6259514335 +2519181b28425a779ca5abbfbdc89a675953545c404654554f3e2d4db6b3 +afb0afa4773e343039303f5849443d50473922192e384a4379acb0b5bcb4 +bfe5ede3dfdcd4b86879a5ab443c724b44464e4d495556413c4a49bbefd8 +e6dbdcbc545b9a793638574d4d4e524d232117222b3c332ca9efe3d7e77f +565b574c494c3c272c333a3e3c40613b34414156685e20213120476b5b54 +5453443026271e2a27323e7b78552d221c1e1b314d2f303b4a5557545353 +51494c4f4329202520243224282e3251756c657b4e2d26241f273871757c +808499947e767c83764c37314e72818088a1b6a9333f40494f534b537694 +ada6704c4a53688bbfe4f1ffff886b432e2d2d231f22262b434b9df1eceb +6f5f5d393829201b1612111112151a2c332e242d382a20211b1e2b2d2a33 +343b2b2dedfdd9928380786d6564686a6c72726c6c7174746f7274726d6b +6e6f716f6d6b1b231e1f2d405a757e8b9991807f8277796e52382f27242d +2b5d7974839696a6570d1f3c3065b5743714181b0e314a2268f276360d2a +5e194048556b6f8a747a6448353132372c15212a121c070913091826302f +2b2727262d2c2c2b2d2d2e2d2b2927282b2d2b29292d2f2f2925282b2b2f +2e27252a2a292c2d2c2b2b2c303036333231302c2c2e3427283541536463 +6570469eada5a7b3c0afa27b511c1913131a1a1e2b302d303c3829110508 +11130f1d000010291014191c1e212e44617a99a4a3cbdfe28d3d3e4a4a35 +29001423302c2c2c2a282a313c4f5a7094a09eb0bcbfb35f242d25202a1a +1e1c151110111700000003131000010c1e192646322525251815110e2220 +2205091b0700000b3181b1b8b1aeaa9640447287352663342d2c2738544a +281919291f83c7a6bdb6ada74a26746d27183835415b6261211b12203538 +260768b8aabcf4b591a0adb2acae997e726c615851354c39201f34826d83 +39192c3f6e7ea6acb3b49e7d63563e433e37266a7b5a2a180a16284d541a +3e567c9bacb1b2b3afaaaeb29c786261664c573a372d314a3e48468e5e1e +282a254063c4e3f0f7f1e6e3e0dcded6cbb45f31253345588cc5f0ff94a3 +a4a597733f1d20283d483938586c7892bbd8e6f2ed634e3f3a36312b1c2a +243b445a96fcd5b667415a46523a3a38352f2c2a2823230a232922241828 +2225201f29251a160b2e1e00b8f5e8bfbed0dcdad2d3d6d5d5d7d5cdcacf +d2d1d1d5d8d6d1cfd0d4d7d5d3d01f251d172235506f7d8d9f988685867a +796f51372c24212a295d7c7a8a9ea1b15b0f213e326ab8773b181c201336 +4f2974ff884a1f396212292324302d442d36291a172132413a232a2c0e17 +0107160c16232f302c2a2c2b32312f2e2c2c2b2c2c2a28292c2c2a28262a +2c2a24202328292d2e27262b2e2d2f30302f2f303335413f3c3c3833302e +2f1e19212735424347512366502d1d18130c1b23361c0f060d1614141f22 +202535362a180d131d2425361a1d33492c2f3335312f32435d70828a8eb7 +ced27c2e33454a3c32061e2d3d3730281d1411141f3545628ea2a7b5b9b8 +b2632a352d262d1d242525272e56a4a8abaeaca0743c26222f2835503426 +2c2c1a171a1c2e2e332e61a0afb3aba4b0d7d0c3c7cbc7ac4a4b80933724 +693c35332e405a50302322372f96dcbfd6cebdb556327f7930203e39435d +615e1e18121f292e261589dec5bdcb67211b21201a2316080d191f272e20 +413721253b896e8138141d1d2c1f2518151b180d0a120f232727206a7f5d +2b170610224a531328292d2e28211f201b1316201904010d1b0c23162327 +3350444b458a55131d1e19190736271e26262c32303034312c444254729c +b5c0d5edf0d63523161e2d2b1f1928394c4c2a1b32486187bbdfedf2da4b +3b31363939332025131f1a285dd3cfbd6739482a2f1311100d0c0c0d0f13 +1e0a23281f1e10201a1d1a1c26241a1a143b2b09c1f9e4b0a3adb1a9a0a1 +a4a7a8acaaa29fa4a7a6a6aaadaba6a4a5aaadaba9a6202419141e314f73 +859aafa894918f818174573d332b283334698b8a9db3b7c774263853477d +c98647232526173a532f80ff965529406b19312b2a342f4429332b1d1924 +34423a23292b0f1b0b14271b212a3535312f302f3635343332323232312f +2d2e3132302e2d3133312b272a313438362f2b303130343539383b3c4248 +575755504b433c3836231c22263341444f561d676b5b5b5a524555566340 +2a170f13161c2b2f2a2d3d444646556f8d9a959a655c6d7c54442818110e +17242e333f3d355e80976227394b4835310f39505f554b3f2e1f17182134 +44618ea1a4b8c4c8c06f364038323c2c34343232365dadafafb3b3aa844c +362d362b3a5941383e3e29231f1d2e2f3a34639fafb7bcb6b9e4ecdfdcdb +d7c165689bad5039774742433e4d685e3d2f31443ea7efd3ece6d6cf6e48 +93893f2d4c45506a716f31291c273339301e92ebdadcf79b5952524f474c +3e2b2f353a3d4231524533354d9b82964a28323650495b5250534a352a29 +1f2e31322a768b6c3d27171e2e51591a343d4c57595655544f484951452b +20252f1c30222e313f5c545c579b68232d2a232c2e72747781808083817c +7d756e6c3e36527483838ca4b4b2333c3e49515050567993aba36d494b54 +678dc3e7f3fef66b574844403c3523291d2e30437ef3ebd781515e404325 +1f1b16121111121424122b3028281b2b252824252f2c2223234b3b17cafc +db9d85837e6f6364676b6f75736b686d706f6f7376746f6d6e70736f6d6a +11141e282b35516d7a7ca587848285777378542a2e2d17312f487878718f +a3ad62003d4240c4f9e14d1b0f1b18253a344ba1943e0e4c7c15384b5568 +7f827c736b4b3b402d293416161f171c4a905c181325302e2c2c2a242a2c +3030302d2d2b2a292929292a29282a2a2b2d2e2e2e2e2e2c2b2a26252423 +243126351d3da79b959597b0982d233c39355025394a6264637d6170b694 +9aabc3ba9a7e531f0e1c1517111a2c2d36565f3f2b140000101214170400 +1a2416111a1c2330455b6d7f949fa2c0efb71b352e3a182e3c0d13234e6d +60303b29312a3536415b7b939ea3aeaebba03d10302c4541321c0e101501 +23000000050a1a00030c151b284a25447b732f050d131f2a230b00310000 +000c257fabb5b6aba5924b2f68813b1d594134151d4c574d421a182e2165 +c9b2baaebfa56c217583232128422f53827a2914193233241e1143b8acb7 +dde682acc0b2afa89e886d67685b48453e3921215b825983382825315f77 +a4aeb9baa07b61584645442a2b6d845226281d1a2e382c26344b7697a7b2 +b4acb0b5b0aeac8864695f5a5c3c35402c333f403c55332e39211a3e56a1 +f0f4f1f3e4ded9d5d8dbd9b8702b181e314e77b5dcffa19da89f96713810 +232f3842363b5c767f94bed7e5fee653526251514e1b1b332e3141607ade +d4c39f315a50353f3b3b3934312c2823231f65466666284d21231f1d2d4b +6975674c3b075ff9efd2bbcbdad6ccd5ded6d5d5d6d4d1cfcfcfd3d8dcda +d4d0d0d2d5d3d0d017181e23222a47677980ad918c898a7a767b542a2e2c +1731314c7b7e7897aeb46803414644cafee6522115211e2c413e5bb4aa54 +225d8312242a262f3e3c352f331e1c312e3444241f211317458e5f1b1122 +2f2f2d2f2f292f3133332f2c2a2a2a2c2c2c2c2a292829292a2a2b2b2b2b +2c2c2b2a2928282729362a392343ada29fa1a3bba034263e362b44122430 +444646604340642a1f1d211d1726381e01100f130b10201f294a573d2c1b +03081d23292f1d1a3641332f37343136425366727e878eafdfaa0c292637 +1a38471b1f2e5c79662e32191c111b1d2c4c72909fa3abaabba443183632 +484435241f273241a5a7b5a9ac967f392822282d3a572c4781762d05151d +27322c2c45ada2b0aaa9abe0d0c4ccc6c0a75536788f3d1e5c473c1c2554 +5d534a24223c3178decbd3c7cfb37b2d808f2c292e45315581792611172f +291c1e1e61dac7bcbea41e3036201d1b1a1005112227222c313522276287 +578039271e18281f2a1d1b1f18060310111f2616236d8855272719162b35 +2b1c1c1b272c231f20181d231c202915091b121523131d362c3945433b51 +2c2631191722041d3e282028282c2c2a2c302e3944435f82a5bbcae7e5ee +48221d1a312e1c0e2b3f4543241c36526889bedeecfcd23a42594f545523 +1f3123191b2e3badcac99f2c4c3a181d1513110f0e0e0e111d1e64436161 +21461a1c1a1a2a4a68786f55471369feeec9a6abb2a79ba3aca5a8aaaba9 +a6a4a4a4a8adb1afa9a5a5a8aba9a6a617171c1f1d26466b818bba9d9793 +90817d825c3236341f3b3d588a8e8bacc4ce821e5c5f5de0fff96531232d +2a364b4868c2b8612d658d192d312e35423e332e36232136323644241e20 +141b4c996e2a1c2935343234332d33353838353231303233333333323130 +3131323334343434373633322e2d2b2a2d3a33422f4fbbb4b8bbbbd1b546 +354a3f334814232f42464b62393c7a5256595a524d5863401b1e11100f18 +2c2c3354624b48494a648f979489604f6669513925120d12232e2f2c3231 +2f559476002931401730411e354c79938044452625151c1927456b8999a1 +b4b8c7af4f23444057534431292f384ab2b4beb3b5a3914a3a2f2e2f3c5d +365691873b0f181e293535354aada1b4b8b8b4e9eae1e1d7d1bc705392a9 +54326b53492c32616b5f552e2e494089f1dfe9dde9cd9243949f3b363c54 +4064938b392222383227282769e6dcdae7d4546669514a454234282e3e3e +373f43443437749a6c954b39302e48475d5656584a302528232c32222e79 +946439372a24363c31242a3147565455544c51544e50553c283326273221 +2a41384555544d623e3540241e3128568a7f7c847f807c7876767466452b +3f5c7682849ea4c24037464953514d4f7c97a19562464d5c708fc6e6f2ff +ee5a5d6e5d5d5b2522362b2730495acde5e3b943634f2c2e241e1a161210 +0f1121246a4a6868294e2224212131506e817a64572173ffeaba8b858171 +61666f6a6f7374726f6d6d6d71767a78726e6e6e716d6a6a1b17191c2a3d +586c84829c7b2024113a1f211b0e071825171847737382958e945e043049 +5fd4f7dd34181319141a26223d6c520a0065980e3844556c898181716448 +39402d2730152327192983f3ae381526312f2d2e2b262a2c2f2f302d2d2c +2b292929282829282d2c2b2a2b2d2e2e2c2b2b2a262525243529262e2528 +5c9321124cb016363a3725298e3f283d5455636e665eac898e9da8af9c85 +602f181a1215131a2727314e402c1a09000510111415090d1e180b111515 +223a51677e929ba0bfdad673191a0813002334131e266892944a2f393c26 +2d363f4a61829ca6abb3b5ab6a2125404c49371b090b0c0023060200080f +2000000a17171d3a20415e754b16050f2d39200a002f05000009156fa2b3 +b2aca99a50337186451251460e387568525c3e1611251a54c2acb4b1bbad +7a246c8632232a3134648383451f21303323211034b5b4b8dae98eacc2bd +afaca38d7169695d554e3e36282136362d4d27262729537ea2aeb8bba582 +6557543940452e2b3429222a2b2e3732212037476d93a9b3b5aebbbeb8b8 +b18d646564605e473d474545373e424439344c391b374a90dfedeef2e0e2 +e7e1dedfe2c97a351e2130496ea8daffb78faa9c8f6c3315243144493840 +5f717995c0dae9ffcd4f65644e494b2925342f2f395770bdd6d1d0484a4f +36393a3b3a36302c2823171b5f82b8be5040201d18172c5071818e662a19 +25eaf8d9b7c5d4d5cdd6ddd4d5d4d5d4d1cfcecfd0d4d7d6d3d3d7dbd3d1 +d0d125201b1b233450688586a485292d163d23251f120a1b291b1e4d797a +8aa0999f6309354e65dbffe53c201c221d232f2e4e7f69220e79a50e2826 +2a354b3c3b2f2c1b1a2f2c313e23292915237ef1b13b132330302e31302b +2f3132322f2c2a2b2b2c2c2c2b2b29282c2b2a29282a2b2d2c2b2b2a2928 +29283a2e2a322b2e629a2b1e58bb1e3d40392422832f1425383846544b37 +672e221e161d2032472e0a0c0c140e101b19234236281b10091320222627 +1e2234312730332e2d38475a7385898dafcac9660d0f0211032d41212a32 +77a19c4f2d3230171a24313e577995a1a6b0b5af71292b434e4b3921171f +28319ba1aca6ac9d874226222a292f492947617447140a17313a20223ea2 +a3b1aaa9a4d7cec4cbc7c4af5a3a81964a13554d16407d70586246201b33 +2a67d7c6cdcaccbb883379913b2c303737668282421c1e2a291c211d4fd5 +cfc1c4b134373c2b1c1b1a11050e20252b332d2f27273d3b28482a292618 +252e2c1d1a1d1909040b190d1e2d2229382f252c282a342f20161c17222d +251f1c172b30282a2e1a0e1a1517211b233b43493a414141352e46361c23 +051a38292127222f37342f2e2d3b41415d83a5bcc9e4eef2651a231a2e2c +1b142c3f4e482320384d648bc3e1eefcb936575c4d4c4e2c2933281e1825 +2d86c6d3d0443e3e1d1a1613100e0d0e0e110e185a7db3b9493919181314 +294f7081926c33222ff1fad3a5a8afaa9ea4aba3a8a9aaa9a6a4a3a4a5a9 +acaba8a8acb0a9a7a6a7241d18161d2f4e698a8faf8f32341a422c2e281b +132434262a5b898c9db2adb58027526b7ff5fffa51332d332c323e3c5e8e +772e1a82ad16322e333b503f3d302f20203531333f232928162785fec04a +1e2a36353336342f33353737353231313333333332323130343332313133 +3435363533322e2d2c2b3e32333b373a70ac443870d1314f4e452c298730 +1525373a4b55403079515355474c52606f4e231b0e1212192928304c3f37 +373c4e6c8f948a79574d5b503c321b070512242e353733315073853a0015 +0e1c02253a223a4a8eb6b36542423c1e1c2028324d708d9dacbbbfba7b34 +37525d5a482f22262c39abb3bbb1b8ab9854362e302b314c30537286561f +0e19343f2c2e44a5a4b5b8b7aae0e7e0e1d8d5c475579bad60256157234d +8a7d646e512a27403976e8d7e1e0e6d5a2488ca34c3b3e4546759494552d +29343224292558e0e2deeae0676c6f5c49464436292d3d3e4146403f3937 +4f4e3e5c3b38362b41535c5455574a3427252b1c2c3b2e36443d363b3938 +3f36261e2b2d41555653524a5c60595a5a412b312a2a312a304750554b52 +5352463c543f202e244e807f7c837c838a837a76746d482d405c7885869c +a7c0572c4c4a4f4e4f567f98a7965e474d576b93cce9f4ffd45671715b55 +55312c382f28293e4ca6e1ece85b5451302a241e1a1611100d11131f6184 +bac05141211f1a1b305576899d7a42313bf9f9c78d868377666970686f72 +73726f6d6c6d6e727574717175796f6b6a6b1b20231f25364f5e7a6e9d71 +001c09020f0204333c13100407385c60778185b34b0a13232c6375500a0d +141c212a32363c4c4a36358ea40b354052718f7f836e614a3d4330262f1b +162d2b307ceeac2f162732302e2f2d282a2c2f2e2f2d2d2c292828272726 +27272f2d2a28282a2d2f2a282827272625252e1e292230261b7965387d5b +25223f232f21b25b293f4f5968677054a0857b8a9fae9774512f1b181416 +171c24252e43615028060002050a0f182b46502f101114162a4c677a8ea3 +9da5cee8a847270b080c052a3216201c3e444f3e345133291f2e373c4b6e +91a2a4b7adb6a249294c5654401e0f161a022614050009122100000a1915 +142c1e3d6276592a121b3225230e002910020007095c9db3b2b0b1a85f2f +6880580b434444455d4270b3691c19241a41beaaafb5b9b58c2a5f894a23 +393237443037372f322e312228131dabb7b3d0e3999db5b8b0ada9927469 +6961525142403e3635232a2e2a2f342e46769eacb7baaa8c6b574c444c46 +354455483c41434646352c3d3d44638eaab4b7b2bbbbb8b7b18d635b6864 +5b54434a5c4e4844413d4a2a291b1c2f407cc9e4ebf0eef8fff6e8e1e6d2 +863f231f2b44639cd9ffd87eac9789652d1a2133514c3745666d7798c3db +eaffb54d7c64472f2c2131322c2d324f6995d6cee46d3b462f2e383b3936 +302b2720181e3250697b312c201d19161f2c34353e31122000b1fcf5b8bf +cdd4d1d6dad2d5d4d4d2d0cececfd1d3d5d4d3d4d9ded4d3d1d2272a2820 +20314c5e7d75a77e02250e0716090b3a431a180c0f41656c828e92be5511 +1a2a336d7f5b161a2129313a42464d5f615251a9b7142e292d3e543d3e2c +24191a302e2e3a251c2d252976ecaf32142431312f32322d2f3132312e2c +2a2b2c2d2d2c2c2b2a2a2f2d2a2827292c2e2a2b2b2a2a292a2a33233029 +362c2380704288632d2945252e1ca94c162b373f4b4d5a366b3c231f1c27 +2326392c0c080e14121216141e36554a280b0810161c1f2838545f452e32 +332d2f43556580978e96c0dc9d3c1e04050c0b333d222a284e545c493c56 +36291d2a3334416284979bb2acb9a6502d5055533f221927333991a1a5a2 +aba08c4a26252e27263c294463735227152032221b1e3994a8afa8a99ecd +cfc8cbcbcaba69387a925e0c45484a4d654a76b9712623322a54d3c4c8ce +cac59a396c94532c3f383a462f36352c2c262a1d2b2036c9d4c1c2b6472e +30251a1a1e14040a1d2526342f373b393a2622262d373a231e2c2d1d171b +1a0f06070b11232a2740574e4244424443322b3322141c2c261d1a182b2f +282929190c1116171b24243a58504b47403a4626251a21220612302a2424 +2d404d453429283a3f405b7fa2bac6dff5f59010291c2b29161a293e5748 +1e213f4c6391c6e2edfaa1356f5f49312a2030312b231722275ac2cbe26a +33391c1316120f0d0d0d0f100d192b4962742a251b1814131c2933343e33 +182a02bafff2aba8acaca4a5a9a4a8a9a9a7a5a3a3a4a6a8aaa9a8a9aeb3 +aaa9a7a82729241a1a2b475e827db1870b2a110b1e1315444d2423191c50 +747c949fa5d4702d36464d8698712c2d343c414a52565d6e6f5d5cb0be1b +363335455a41412e291f213633313c261c2f293080f9c0431f2b37363437 +363133353736343231313333333232313131373532302f31343634343231 +2f2e2d2d3727383142383092865b9e78403953313622ae4f182a3740504e +4c2b75574b4d465050505d4921151215181d25242b405f5840354a688088 +7e736c777c5a382b1401061c3136394131396890651c150b10140b2e3722 +34385d646f5f536c47352227282735567b919eb9b4c2af5a395c65634d2e +232e3740a3b5b5b0b8ae9c5a35303329263c2d4e758662321a2334292a2d +429aabb5b7b6a2d3e6e3e1deded0845592a8741e5253585a725582c57c30 +2f3f3963e4d5dce4e4deb44e7fa6643b4d46495541484a3d383132243226 +3dd4e6dbe6e1786365594846483a2a2a3b3f3d4843484e4a4d39373b3e44 +4834384f5b5353554d3928221f223339344e645c525352514e39313b312c +3a535752514c5c5c595957402c2a2c2b2c343347665d5c58524b57343322 +24291f40737d7f838896a1957e73706d4d323e5978888698aaba7a1d534b +4d4b4c607c97af94574552556c99cfecf2ffbc558973583d35263536302b +2637437adee6fa7f484b2f2426201b15110f0d10132033516a7c322d221f +1b1a2330393a483f26360ec3ffe99889837b6d6b6e6971747472706e6e6f +717375747374797c706d6b6c1b35463c2e344654746f92700c0a111d1921 +1560a76758665e657c85878291c49e87848f8a909c8aa0adada8abaeaaa9 +aba29ea085806f16334b4d76867e7f6e6151434a3b2a2f211f19173272c8 +89251526312f2d2e2d29292b2e2d2e2d2d2d2a282727262627272e2d2b2a +2a2a2b2b27272727272726261d21332130311047888b6b2a343624333307 +6534173439516866715689875d6c8da58e62412c1f171816171c23292e36 +4c482500010709150a0206172116070b151d3a627c8590a2b0c5dad57e53 +401a141418322b151d17397a7a3011603a3419202732445f80959cb1a7b7 +bd7e48414a4b38160b171b0229240a00060e1d00000a1b17172724384849 +3d32242434272d1b011e1903000605509db6b2b4b6b17932567673113b47 +343e4d2a2e4c36362f2d1f33b8b1aeb5b7b899314f8a5f1e3532393d343d +413a40292d20331b0a95bbafc4dba389a3adb2b0ad9978686a634c524b53 +534447495f454b3e3b33375a99aab5baaf9572574e5550332d535e3e4440 +404846322e4845405886a5b1b6b7afaeb1b4af946a5868645659403f5d43 +3e474c60683a171f1d29396ab5ddebeef5fffffbeae4ead99249251b243c +5b90d0fdf975aa96835c241c1b33564a344571717d9ec2d8ebff9e447d63 +4d200f1a332923262b496c7bd6ccd1a443423831393c3a362f2a24211e2d +32302929111a1e1c1a1e25292621171824250965f9fbc7c2c9d3d1d4d7d4 +d5d4d4d2cfcdcecfd5d7d8d7d5d3d5d7d8d6d3d32b444f412e3145567978 +9f7d19151925222b1f6ab17164726a71899294929ed1aa93909b969ca899 +afbebeb9bec1bdbcbcb5b8bea6a18825333b2e484d3f3929201a1a30312d +37292317112b6cc78e2b152330302e31322e2e3031302d2c2a2c2d2d2c2c +2b2b2a2a2e2d2b2a29292a2b2a2a2a2a2a2a2b2b22263a283637184e9093 +73323b3d2a3733055f2a092225384b496040604d16121a2c241a2c2a0e06 +1214111115161c263f4223050b161b281a0f0d1e2c28263037333b53636b +7f95a3bacecb754b3b1813171d3b341d2621478c8c4225744e472a2c2e34 +3e536f8692aca6b7c2824c4348493618142633348aa8a3a3aaa28e4d2b28 +332927352e3c474636302929342021243783adaca7aaa0c7d3cecdcdccc3 +823b6a887a123d4b3a46553234523e40393b2f46cdcbc7cec8c8a7405b97 +6a273c383c40353c3f373a21261d362821b3d8c1beb65b21201a1a1a2018 +050719231c31354850474c4a563e4e4b453116172c1d16181d160a03091c +24141d4d60444a464248442f2d412e16192b251a171a20221f201f170f0a +13121326202d57423f4a4b5f6536131f231e080e29302a2530424f443126 +2638413c55779bb7c4dcf5f2b80b2d1d2a25111f263d5b42192048506999 +c6dfeefa8a2f73624f2009123028272419222c3ebdc6cda13e3927191913 +100c0c0d0f111326282922220a151917171b222625201417282d136ffffc +beaeabada6a5a9a6a8a9a9a7a4a2a3a4aaacadacaaa8aaacaeaca9a92a41 +4a3a262a40537d7fa7851f191b2729342873bb7b707e787f99a2a5a2b1e4 +c0a9a6b1acb2beaec2d0d0cbcfd2cecbccc4c5c8ada88f2c3b4536525647 +412e2620223939323a2b261a153276d5a13b1f2a36353336363232343635 +3332313234333232313131313635333231313233333331312f2f2e2e262a +42304243255ea5aa88454d4d36423b0a632b0922263b504b503266633836 +3b4d4a3f4b42201016191b1f26292a31484e392b4867818e7153393a4034 +281f12040f2a3b3831394560828e4e36371d1b1e203a33202d2b529aa05a +408f6758322c26273247658193b2acbfc88b5750565744241d2b353b9dbf +b3afb4ae9c5b39323729273530455759463b2d2c36272f33438bb1b3b7b6 +a4cdebeae2e1e1d99f58829e8d2449564653603d405e494a45463c55dedc +dbe4e2e2c15771a87c384c464b4f474e5448482c2e243d2e29bde8d9e0e1 +8b5656504b474b3f2c28393e34464a5963585f5e6b505d544f3e2b365651 +50514e412d1d1e2f35242a5b6d525a5451544f3633493e2c344e554f4d4d +4e4f5052504130242a2825372f3b6550515b5d6f7644212723221e37667f +83838c9aa2947d706e6e52333b5273888994a5b09c1557504a4548667896 +af8b4e425a5972a0d1e9f3ffa54e8c745e2c151d372d2a292535475ddae0 +e4b6524a392928211c16120f0e11192e31312a2a121c201e1e22292d2b26 +1b1f33381f78fff6ad938780736d6e6b717474726f6d6e6f757778777573 +757574706d6d122d3f3526232e343f62321e12141c1c042e3d73b79aa396 +8f7d999a7c7a7d7875796f7369535753374035272829211c221b0b110e00 +03113269527a7a8279716357474e442f2f25201f3d491d1c090813242e2c +2b2c2c28292a2d2c2d2c2e2e2926252424242727292a2b2b2c2b29282626 +27272626272721272e26252a201c38572a2f1b36313b3f1d261d1c384159 +5f66655a69823947678f88614233261a1a131419212b30290e1b12000301 +0009230e00010f1b1c1715244a708787878eb6d4d77f4e473a1d1215202f +23132020216d673b40803133241311253c506d8798aba7adb7a8752f3c42 +3a241a201c00202f0900010a1800000419171d292d303732344530172b37 +3421010d2001000703449ab7b0b4b3b18d3e507688193b5e43413a3e453e +3a40392c1d24a5bcafb3b8b69f3a428570171b3c48383631353c3d1c221f +39240679c1b2c2d9b9849fafb3b2b09e7c6a69635352495b5a38354a4a34 +422d1327375b91a6b4bab39f7b5957494543383336372f231e2b2f1c1a35 +473c4c799babb7b8aaa8b1b6b4a17a5d6963585b3d354b2e23576076624e +111f1c24395ea0d8e8eee8f1f4ece5e8f1de9e5325141c365588c3f1ff7b +a4948053221f1b375947374b747383a5c2d9f2ff7a33615c5a290f283521 +161b263e6c6bbce1c8d65341503c3b3c3a362f2a24201f2732252b201f1a +2a20191b242d3335302726171e33d7f5e0cbc6d0d1d0d7d8d6d4d4d1cfcd +cfd0d5d8dadbd8d5d2d1d6d4d2d1253d4a3c27242f39476d412f21222626 +113b4a80c5a8b3a69f8da9aa8c8b8d8885897f83796569664a534b3d3f40 +3832322d232f332324283b623850454435291d1a182f342c322a211d3642 +1a1b0e0d13212d2d2c2f312d2e2f302f2c2b2b2d2e2d2c2b2b2b2b2b2c2d +2e2e2c2b292829292a2a2b2b2c2c292f352d2d3228233f5e3136223e383f +3f1c2114122a31454149584d4d5903000323271e3231160613100c0c1018 +1b1800140f040e11101c32180103152d3b3d383a475d67687281adcdcf78 +4640361c13182334281823273083805963a65a5d493427303c465a748ca5 +a5aebaab772f383e3624212e302c7dada1a6a9a49455312932292b333230 +3631324538202b302627326eb1aaa8ada5c1d7d2cbcdc9c19649668b8f1a +3b61494942464c45434a433a2d37bad6c8ccc9c6af494e927b2022424b3b +3732333935141b1d3c2f1a95dec6c3bf7a221e1c1b1b211b08061521212f +314e55393a4b3e2b483b242b1c1c281c15171f1c0f000d0b1421262d383f +3629202b2d1b1930371d1b282217161a1b1b1b1c1a1914080f0e10241b20 +432d245a5f755f4c0f20221b0e0c23383127212c342f2626293a423c506e +94b5c2d9efefd2182b1f2d20112325415b3c1b244b52729fc6e0f3fa6820 +5c5d5b27041c2e201e1f1b1e2e30a2d9c3d3503d43271a16100c0c0d1012 +121d271b24191a15251e1719222b31332b22261e283ddef7d8b9acada9a5 +a8a9a9a9a9a6a4a2a4a5aaadafb0adaaa7a6acaaa8a7233a44341f1c2935 +4a7348362623252717435389d0b3c0b3ae9cb9ba9c9b9d9894968e928873 +77745962594b4d4e4640423b2f393929292e426a415a4f4f403425222237 +3e33372d25203d4a252b22201d2833323134353132333534323132333435 +3433333334343536373736353332323231312f2f2f2f2c323d35383d3533 +52714448324b424847212517132a3247494b473c4c671d1b1d3d463d4c46 +210f1a19191e232b2a22061c2227465c6f7b83552718233135260e091a32 +3e311f21507c914e333a3722181f2a3a2e1e2a2d378e947383ca7a755939 +2428323c53708ca7a8b2c1b4833b464c442e293131328fc3afafb2ac9e60 +3c3136292c34363a46413f4d3a1f2d3735374075b4afb5b9a7c5ecede0e1 +ded8b3657da0a22c476a55564d51564f4c534d453a46cbe7dce2e3e0c860 +64a38d3132525c4c4b46484a441f2322413321a0eedee2e6a75556534c48 +4d432f28363d3a454760694b4d5d523c54442b342d37514f4d4e5146311c +24202732343b454c46372f3738211f37442f31484f4b4c4d49464b504e49 +3b25282524372b2f523b366b718570591c25201c21305b8084827e868a81 +746f716f5736354a708889949aa5b31d56534b3f486c7a98ae814c435b5b +7aa9d1eaf8ff823e73716d35142836262022232d474cbdf0d9e6614c5436 +2b251e16120f0f1119252f232b20201b2b231c1e273036382f2830283447 +e4f4cba18b8376707071727474716f6d6f7075787a7b7875726f726e6c6b +1014161415191b1847400e4f18132a12350b1b211000413240436a440002 +0c00000000000c0606070503000000090b0715230b000f0705272e8d6973 +78857c76685c474e49312d272a112a461707000e11222b29282a2b27292a +2c2b2c2c2e2e2a2725232324272826282b2d2e2c29272727272726262626 +28201a291f1e321b23272818341b45272020192b2d1d31425b6b5d605981 +2d315d857d4f2d24211c170e12161b2d33240f1510060000000a1b050005 +0e191404132a53788a8e8a8bb8cbbc323a2d342a2a31353327181a200919 +0b35708d3545361d0d182c405d7792a2a5a3a6b69a3c273035312d2b1e00 +0f2f050000061700000012131f2737272a252130270d1928332200002600 +0008023493b4adb3afad8f474a778c19326e252b29393d3744412d1d1516 +81c1b1b0bab2a84a367a7c141c404a2e3c3c372b29121a2035250c5bc0b4 +c0d8ce85a4b6b6b2b0a2826c68615c513d545a2b192e4744523800163560 +88a3b4bab7a6815c5648494d3e2c426b4727090814111f423f34456d91a6 +b6b7aca6b4bab8ad87626b645d5a3f3237242d66595e5278270e20243c52 +8bcfe6ededf0ece4e4eaf1dcaa5d2c141a334f7db6e9ff92999481492321 +204359464657717389abc5e1f8f85731454e56321b343a221113242f6061 +84e9cfdf5b365b383c3e3c362e29242225273b242c222b262c2521232626 +262a2a3024231b1cb2f4f6d3c4ced0ced6dbd6d6d5d2cfced0d2d2d5d9dc +dcd8d4d1d1cfcecf2427251e1b1c1e1e514e20622a23361e441c2932210d +534652567b550c131d04050b06121f1a1a1e1b1b17151a25261d22302320 +36302d463d8c554f4647382c1c191228352a2c28280c233e13080213111f +2a2a292d302c2e2f2f2e2b2b2b2d2e2e2c2a2a2b2b2c292b2e302e2c2927 +2a2a2a2a2b2b2b2b3028213027263a22282c2d1f3c234c2c232117272413 +252f3c4e5259476606000627251320231009100b090909171c10000b0d09 +09080e1b290e00031127342c37414f60686b757db1c7b62c3228332b2d34 +3735261819251b342a5ca0c47182704f342f31374a62849ca3a3a7b99a3a +212a2f303236302b68ae9fa9aca99c6132272e252b2f36262c2821353319 +1a2125252d5ab5a9a9b0a8b8d4d2c7ccc4bd9852608d941b32712b333141 +443e4d4b372b252996dbcac9cbc2b85a4587872023474d313d3d35282108 +151f3a302076ddcac7c4952924231e1b211e0b07131c272b2447552c1e2f +3b3b58490a1f2126221b15172122140208071428292644734e2d0c0a1210 +1e3f351f1e261e1615161a171717131918040d0c14211a1d2f232e67585d +4f76250f241b180b1b3a35282125262321262733463e4f6b92b4c0d4e8ec +e2332424311b14252a4a5a392930485278a5c9e8f7f04522415157300d23 +30211b1d1f13262668ddcadc5a3450261d18120e0d0f1214181c3019221b +26212a231f2124242425212a23272526bbf8efc4abaeaaa5a9aeababaaa7 +a4a3a5a7a7aaaeb1b1ada9a6a7a5a4a522231e151113171a525124662c23 +341c4923323a2b175f5160648b651c232d120c0f0c17252121262625211e +2530312a32402f293b342f4942925e595254453926221c334032322d2d10 +2a49211a18271d26302f2e32343032333433313132333736343232333435 +3234373938363331333331312f2f2e2e332b2938323147323b3f402f492e +543228251a282514253144504046436d190d19393d2c34331a0f18161a1d +1f2c2c1b07131e283c4f687774451f111a272711090d20343b311c1a567d +86142f2f3930323b434436241f291f3d3e79c6eb96a1845833292a304661 +849ca4a5acc0a4472f363b383838302e78c1abb0b0aea36a3b2d31252b31 +3c2e3b372d3b33171c2834363962b9aeb6bba8bce8eedee0d9d4b56e77a2 +a72a3c7a37403c4c4e48565441363237a7eadedfe5dcd2715a9a99303357 +5e4251514a3b30111c243e34277feddfe4e9c05c5d5a4f484d4633293439 +41423a59693e31414f4c64500d242d3e494b4b4c514a341c201d283a3834 +51805e3b1b161d162446403033444947494a47434a4c4d4d422628242834 +2b2c3e3140796a6d60833214231c26294d7e868280817e746f70706a5e3b +37486f8b8a8f8f9fbc374e564e384d6f7fa2ac7e574d585b82afd4f2fdfb +5d3f5864693e1e333b271c1e25213e4281f3deed6a4260342d2720191412 +10131f2438212a222c272f28242629292929242e29323132c2f7e5af8c85 +7b717277767675726f6e70727275797c7c78746f6d6968691e1611171f21 +22201d000fa9620d4b9479060e180b1489a4636c8859161924161e211b11 +1b180b0d1a0c10120b121a1110211b0d1613020923a48660827f84767064 +484f4e352c292019383e0509040110212a28272a2b2728292b2a2c2c2e2f +2a262523232427282627292b2b2a292827272727262624241e1e19252122 +3426233033202a25322a2720639d8e1e34465a6e5b5e597f382d6185753e +170e181f15101b1b192c392b21110a07000012231f090d19151618161937 +5f7e95a7aba7d5ca7c33453b3f3f3f4642333022151e06270800002a211b +3f36271a1e3453637e979e9d9eb0ad7524242524211a1000002d00000000 +140000000f0f1d25402b172e1e0b0a0a171b352600002d01000300278db3 +adb6b0ae944833719226256845282528334b48331b1113125dc2b4b1baaf +b55f326c821c252d434478947a261b14212b2f1f1440bbb3bdd1db83a3b3 +bab3b1a38770685f58523a495228182d89877a6a00182e4d80a1b5bcb9ac +87615a584e3d2a25426a6c43160610172f5429293d6489a4b3b0aca6b6be +bcb795676c626153433a2c2b3c574748548f4b2829283f4877c2e0ebf8fa +f3e9e7ecefd9b46734191d334871aee6ffb191948241241f224c58465966 +71758cadcbeaf5de3e4a3c41463e3342412a11142b24555c5fd0d7d27d33 +58383f3f3d372f2924222a36574837352b2b1f21293437322e31303e3f3c +1f1eaeefffd5c2cdd2cfd6dcd7d7d6d3d0cfd1d4d2d4d7dadbdad7d4d0cf +cece342b222327272729290422bc741d57a38b191f2a1d289cba76829b6c +292c372a3337312a3130232733282c2f283037291c2d312e3f402e2c38a9 +76405242402c201b0e25372b29281b122e36030a0a08101e2929282d302c +2d2e2e2d2b2b2b2e2e2f2c2a2a2b2b2c2a2b2c2e2e2d2c2b2a2a2a2a2b2b +2c2c2626222e292a3c2e29333626302c392f2a21639b88152a333b51535c +4f6c1c00152f24070a0e050a0b0a0f0c051622161006060b080e24352d10 +0a161622383f3d4b59636f819299cfc9782c3d373f42434941312c1f1222 +19452e1b286e6e698b78583a2a2f3f4d708e9a9b9fb1ab721c1c1d212424 +202357af9eaeacaca26c34262d2127293b251a3622141a191b1627292f51 +beaaa9afa8aed0d1c7cfc5be9d564c879a2825684c302d303a52513d251f +232572dccdcacec0c56f41798d282c34464779957823130a1c2a342a2758 +d8ccc6c1a429261f201a1f1f0e081118222c213a4d291d2e7c7c837d1723 +1c161c191618212518040a141716151f4472754b19080e162c51271d2025 +1c16150f191313120c181c030908181a1c2321293b584647538f4b292b20 +1e08103633292b2927222227262e4c44546f95b6bdcce5ede8551e283614 +16222c5457373a3e48547caacff1f4d62f3d3a46493a223035291f222b0d +202441c3d0cf7c314d26201a120f0e1015171d294c3d2d2e26261d1f2732 +35302c2c26343c3f272ab8f5fcc8aaafada5a8afacacaba8a5a4a6a9a7a9 +acafb0afaca9a6a5a4a431261a191c1d2024290726c0761c53a08f202934 +2933aac78590aa7b383b463534342f272f302528372c303530383f332a3b +3c3543432f2e3daf804b60514f392b261a2f4133302e21193741111e201b +1c252f2e2d32343031323332313132343736343232333435333435373736 +3534333331312f2f2e2e292929353435493b394447343c3641352f25659c +88162b374353404746702b10223c371c1c1a0b0f141823231e2b321f160e +14263651788b744427211b1e29210d16293642433636778655244a484b49 +46505147433219251d4d433c529d9a8fa3865c37262b404f708f9b9ea3b6 +b67d29292a2a29251f2465bda7b0acaca46f3a2b2d21282c422f29432d19 +19161a1c363a3b59c1afb5b9a7b1e3eddee5dad5ba71629cad372f72563b +383b445c5a462f2a303383ebe1e0e7dadf86568c9f383c4457588da98e36 +2213232f382e2e62e8e0e3e5ce5c5e5952484c47372b33363c43374d613b +30408e8c8c811927282d40474c4d504d381f232b2c29242d517f84582814 +191c3358322b3240454648414640484a4a50492726212c2d2e3331374d6a +5857639b572e281e29233f75838288858075716f6c6365423c4c728e8987 +8a9dc156495a5233516f81a9a77a6659565d86b5dbfbfae1465950595a49 +3440412f1f222d17343d59d7e2e08c3f5d36322b231a1513121524325445 +35352c2c22242c373a353130273543483436c1f5f3b78e89807374787779 +7875727173767476797c7d7c79746c6968681511131a1b14171d0e160f34 +6c14084555041410150012030400060f151d151910151c0a0f18101e1504 +121c0d111e1329222219121a1a1e17aa964b8771846e71674950563d312c +271e2f342b634d0f12212b29272c2c29292a2b2c2a2b2d2e2a2727252425 +2829282828282b2a2d2b2828282726252523172c3123242c271e252e6e49 +18192d292f0398ffe31a2a41556a5d595d79432c507a73462013161f1414 +2321182c4035270a080d0000040c05002449381a101126476d85a0bccbca +e6c2294338422b2e27332b22312d19231f2a190500253c16384133140b27 +47526b8d959ca1a5b3ae5141322a20130f00003102000000100000001210 +1b21432c488f772b0508181a372a09003d060000002184acacbeb8b6a44d +226b9d3a235849142a2d3c695c501310181648c3b6b4baaebe6e30618524 +1123513c375e7d3d171d2d382c191c31bdb5bacadb7e9faebcb5b1a78c76 +6b60515a41404525213f746a556805253549799bb3bbbcb3946b5b4d4343 +3a293457694922171b1a243f1c22395d7e9eafadb3acbabfbdbfa6766b5e +644f49452c373c44463e384c24242d273b3961b2d8e9f3f5f0e8e5ebf0dc +c278402321314163a7e3ffc28693823c201824505648677177778eafcff2 +f1c93164434341504f5845321a1e37224c5b67bedfd2b24155433e414139 +2b27282826202e240f301e26282425282721222a2f2030232030caebfcd1 +bfd1d8d1d2d9d9d8d6d3d0d0d2d5d7d6d7d8d9d8d7d5d5d3d0d02e282629 +261f222c1e29244981281a57681828242c1328191a0e1c222830282d252e +352428322a3831202f392a303b2c352e36363a46464430b58f335e3c4729 +271f0f263b2d2a2a251b2a312a665316101e2828272d2f2c2c2d2e2d2a2a +2c2e2e2e2b2928292b2c2b2b2b2b2b2d2d2e2b2b2b2a2b2a2a2b1c34382a +2b332d242730704d1f203431340799fedf111f31384c4d5052692e030c2c +2a131210050c0a0e181205172a201600020d030213190b01224a412e3136 +435561697b9ab4bee0bf233b313d292e2a362d202f2a182c3a52463b2c6e +8f72989e865431323b3c5b839098a1a6b2ab49392a24211b1b2750b19fb0 +abaca46f36282e202325422c4f977e3213141e193032344fc1a9a8ada8a8 +d1d6cbd4c9c2ab593882a840235b501d3336437063581d1e28295dddd1cd +d0bfd07e3f709030182b573f3a617e3c10152a372f202945d9d0ccc3ae2a +231a22191d1e0f081015193328323e24243e69625e7a1a30231519191918 +2024160206090c192321365e72522a1b1d1a243e1a1721271e1a1509160f +13130f202206040416111d291b313a4648403a4e2627312626080b363429 +242423222428282e4d44587299b8bbc6e5f1ed701e2c380f141e2c575236 +43464c5881aed3f4e9bb21574146424c424a3a312428350d202a44a6d1ca +af3e5136211a120f1013141515101e170429192427232427251f20252617 +2b232a41ddfaffc9a9aeaea5a9b1aeadaba8a5a5a7aaacabacadaeadacaa +aba9a6a62a2220221e171c291e2d294e84291a576c1f2f2d341b3324271b +2930363e3636262a322125312b393423333d30354133413a3f3c3c474545 +34b997406e4c593b342a1b304437312f2a22313c387769281d25312e2f32 +363133323532323034363736343231323435343434343536373734323231 +2f2e2d2d20373e32353d3930343d7d5829283a34380a9dffe01423343d4c +3e3f4c6a3711193a3b24211b0b10131a2925192a37291c0710252a38565d +452a374f3e221c1513202f374453545a948c0b39415137382f3d3c35453d +20354b6c6d6a62a5c199b1af8e5632343d3e5b818d97a1aab8b45444352e +261e1b295bbea4b0a9a9a4733c2c31202528473459a2883a16141e1e383d +3d56c6b0b5b7a8ace3eee0e9ddd8c7734f94ba502f645a263c3f4d7a6d63 +272937386eece2e1e8d9e8955483a23e283867504b72924e2022313d3426 +314ee7e3e4e4d75c5f5658494d4a392d313332483d43503435507a71677e +1d342f2b3e474d4d50503c232322232f3530456e8161372729242c462525 +313f4349493e4942494d4c58532e221d2c262e382b3f4855574f475b322e +30242d1b306c7b7e7f807e77737471696a48425276908a8590a2c0643957 +5938546c7da79e746f625d608ab6defff6cc3b715759545d545b4839262a +3a1631405cbee8dfc24f6047332c241b171516191d1a28200c301f292c28 +292c2a2425292718312b344be4fdfdbe9492867471767978787372707475 +797679787b787975716d6c6a1a141111141614100e15110c0d08060f110a +0e151612151f2318192a2b1f202f28332a26292a33252e2f3235322e3746 +4a474242403c3d454da4992c5f7b7e656261574f5e4a243125092e404eec +af2817232c2e2c2d2c2a2b2b2b2b2b2c2d2e2d2c2b29292a2b2c2e2d2c2c +2e2d2c29262a2b2825262b2d272625252627282a272e2f2518141f2c2710 +6efdec0622424c5b6460716c3a2d51806e48281317171717141f20294039 +29190d0c090203100e0e293b210f171f3e587a95afcfd2d2ec681e2b4845 +2a1e121805172d26270e29412400001010111d0f1d1a0006394d56749299 +9aa6b5be96634b3d160a1806002e00000002110000000d1d171f281f3b6e +7d480d05131b251514004014000008106aa0a2b8bfbbb254256e90530c41 +411c2f385548704f2312161729b9b7a8b0b5aa871e4d893a092738354562 +624d261c28372a1a1f28adaeb7ade89f8fa8b5b6b1ad9b79656960514142 +37242c36444141512124324f779ab6bab6bdac7c614e4647412d2b3f2a20 +2a332d302f191f2c2c566f98b2b0bbbfbab2b0b3a3896d65604e4f48394f +3c3e393a403e3837302325304c8fcfe1f3faecdfe1e6eae0cc9046232023 +365a90d6ffe779817439221d2b535948647c7c7a9ca6daebffa324694642 +5b4145563f242036392934565eade6d6d55d34492d3e473b23222f323229 +242422201f20212324262626272a262c26292049dad9def9bfd2d8d3dad0 +d6d7d5d3d2d3d3d4d7d7d6d8d9d9d7d4d6d5d4d4332d2725282a2825262e +2a2526211f282a26272e2f2b2e363a2c2d3c3d3132413f4c434242464f41 +4a4b4d504d4b525d5854555b5f60646769b69c2244565130242322253f37 +192f260c334754f4b62e131d2628292a2a292b2b2b2b2b2c2d2e2d2c2b29 +292a2b2c2e2d2c2c2c2d2a29292d2e2b28292e322a2b2a2a2b2c2d2d262d +2f281d1b2936311571fce500152f323c42435c5a240a13392d1914090808 +0d100a1210152a24180c05090a070b14040529473c313a3d4d58697991b6 +c1c8e66117233e3d231c121b071b312a2b1e54795d3a305561749592a290 +4f333a39446789969ba8b6bd915b4337140d1f284aaa9090b2aea9753a25 +24261c27362f49777f470f091b232e253632aba7b1adad97cce2cbcfcac2 +b85f37839f5c0f434825363f594f76572d1e262a40d3d2c3c8cbbe992f5d +9546112f3e3b4b686850251a283729192235c5ced4b7ca5514131717171b +160201192428263431222b333d3d475e2f281d1d1f222318131c1400070d +0f1c25202a46362d373f37383319171c112920271d080d111210161c1307 +010b100a1a242141363e3d3e46443c3e3a2c251911293a29272b25212a2c +262d40424c6c9ab2bbc7d9f1f8a71f252d0d16233457502f3648515c96ab +dee7ef86125d413f594042533d221e332d13142c2d82cdc8cb5939471211 +0e0d1317141016121013171a1d212527282726242525252b212a2a60fbfa +f1f9a3a6a5a4b8b1aeaaa7a6a4a6a8a9acacadafb0b0aeabababa9aa2f29 +2423262827262a33312c2d28262d2e292b333430353e42353848493d3e4b +45504745464a53454e4f545754515963615c5b5f616063686abaa32d5568 +6644332e2c2f473d1f342a11394f60ffc63c212732323433353135333533 +3534373837363533333435363837363637373533303233302d2e33362f2f +2e30313233342e35372f23212b38331976ffec041e35353a403f595a2711 +224b412920120f0f1518131c1b21362d2216141c26273039261a31432d19 +1c172226333a485c5767ac440721474c332a1c2413263d36363581b6a486 +7d9a989baea4b19c5a393e384061849196a7b8c298664e431f16273153b2 +9792b2aeaa78412c2c2b2029362f4c7e8c551c141e252d253836b3b1bfba +b39dd9f2dde1ded5d0754d96b26d2050522c3e4964598262392c353950e2 +e3d6e0e3d6af436da5541e3a4c49597678613728323f2e1e293dd1dbe6d2 +f0885355524f4b4c432a23363d3a37413f2f39444f4e556738332e364550 +59514a5247282b2b2c373c343c58463d474d43433f252429224040525445 +4a4e4d494c5146332325291f2c322f4e424a484a525048483b29251f254e +72737c8580797d7f786f674f3e4e75868c9092aabd831e3e594a607181a0 +9168656c656698aee7f8ffa42c7557546e5255644b2f293c371f21404aa0 +eae2e4704c552525211a161b1d1e221c191b1d1e20232628292928272829 +2329252f3366fffff7fba0998876786e7373736f706f7372777577777a78 +78737471727028231f2025292726313127232b31364131424e453b404d54 +47454344454443414a4f3f3e434851434f4b4c514d4447545f5e58534c4b +4b4d50979434556874685e5c514350512f27261f181726aeaf3d16242d2e +2f2e2d2a2a292828272829292728272727292a2b2a2a2a2c2e2f2e2c2b27 +252325282a2a262626252627282b1d1f1e1713141b221e0d6dfcf0262432 +46657a6b604c2932507e6a402310141415191a232127413c392f282c2b25 +25323c221513050818234a66849db9d0d7dfc1331e3c5f7849220e120116 +2c21210c141300030000001616060d13080d3246496482939ba5b2bbac7b +553919111907003212000100110500001020191c201630566e582f19161b +1f06090040190000090f5f96a0b7c0beb46425638c640f35541b3c454864 +b8882012111620b3bbacaeb4ae922c508e571e2b34302e38372c251f252e +251c222294b5aeabe2b18fb2b7bab7b2a2806a6b6853483f38322e343932 +2f372733414d6d8da8b1b3bfb689664e4243413029374537333335495547 +313c2a4a638eafbcbec3baaea9aaa8936a63645450483d52545654473b3c +403e2321272c3e7ecaecebedeae9e7eaeee2d69d4e261b1d2f5183cafff0 +757d6a35231a2d5554486776757997aadcf1ff8c1b49324574634d332523 +2933332b3146638ce7d0d2782b433440463c241f3037352b2524221f1d1e +1e202224242427252429282c1c63d7d3dcf5d1d2d8d3d3cbd4d7d4d3d2d3 +d2d4d8d8d7d9dbdbd7d5d4d4d3d23e3935363a3e3f3e4a4a403b464c515c +4d5e685e5459656b5b58565657565453616858575c616a5c6864656a665d +60686e6b6a6868696b6b6aaa9b31444d533d28221d182f3a222227242122 +30b8b741121c2528292b2a28282928282a2b2c2c27262525252728292828 +282a2c2d2c2b2b2a2826282b2d2d29292928292a2b2c1a1c1d1a181c252d +281570fbe91a171e2c43504446381311153a2c140d0507090b120f161216 +2d28271f1d2529272a302d141624242b3939505c6e82a0bccbd8ba2c1534 +5570421e0c12041b3028272145523d40373f4a7d9a9daca5744c3d383a57 +798e9ca7b4bba7764d31160f1b253fa99d98aaa2a67f3e2522231a213029 +405f6d542a181d272b1926279da1aeadac98cbe4cecec8c0b96f35759d6f +14385b24434c4c68be90271e212937cdd6c7c7cac2a43d5d9a6026333a36 +36403f32261e272e231a2129acd7d2bdcc6d181f1b1b1a1b160300162828 +2d32302f2c32312f354131352e1f1d1f221a141d17030c0f0d18231e243d +514443413e515845252a12201e2820140a0f1211161a11070009110c171d +1e404c56584e434446442c292b1d0e243c39211e252c31302a283f404a66 +93acb8c6d3eff7be2a2c2b0d1b213758482b3842495d95b3e1eae8680940 +2a407164503626212228231719242e59c6bdc574364619110b0c1516100e +15110e1317191d2222262828252422232429232d297ffffcf7f8b4a3a2a4 +b6b1aeaaa7a6a5a6a7a9adadaeb0b2b2b0aea9a9a8a73b3633343b3f4142 +4e4f47454f575c65505f6962585d6971625f5d6061605e5d696f5f5e6368 +71636f6b6c716d64676f75716e6b69696a6b6baea33c54606851362e2922 +384029262c2828283ac2c44d202932343536353333333232333435353131 +3030303233343333333537383733332f2d2b2d3032322e2e2e2d2e2f3031 +2123231f1c1f272f2a1875fff12421272d42524747371518274f4125190d +10111319171d191e3633332c2d373e3c404640211a1e14131a132429343b +4c5d5f7d8c1a0c325e7f522f1a1e0d213932333e80a1969b918d85a6b3b0 +bfb481554137334f728896a2b3bdad7d583e211a272f4ab1a49dada3aa84 +462f2e2c1f242f2740647b653e28252727152429a5adbbb9b5a0d7f1ddde +dbd5cf854c89b181274763294b545773ca9b372c303847dce7dadde2daba +516eaa6f333e4642414b4c423a303336281f2731b6e1e2d5f2a05a635a55 +5150452d243340393c3c3d3a39404642454d3d42423b424c55514e564f35 +322c29333b34384d6154504e4d5e6752333822363b5056524b504d484a4d +46361f232b222a2e2d4c576063584e4f5450312b2a201a406e7d73788186 +8884806f6c523f4b6d808c9294aab38b173b5a5368717f9b866166666069 +96b2e7fcff8e2355415686786347382f3236302226344a7ae5d9e18d4855 +2c251f1a1a191f20221c181b1d1d1f232326282927262626242927312f83 +ffffffffb99d8a7674677073706f6e6f7072767676787a7a777572727170 +474544474d5253524d4f494953544e50495e64575c6c6a58565e5a4e515d +5a486a6a56555c626c5e5f5556626154515c6b716d6363686b675d7f7937 +4f5e7471766a60494e624d2f1f2b10162154782613202b2b2c2d2c282c2a +2a282829292a26272728292b2d2e2f2e2d2e2f302e2d312c27282b2e2c2a +2b2a2a2a2a2b2c2d25211d1c1e202324240f35817a19242d3d5d786c5b43 +2b44507e683a1c0a1215141b1e2420253f39231a191f1e18161d2f190b08 +0610242d526d8ca7c7d1dceb880d294a618b58260e10071c2d2120150b01 +000c06000017120704121c15233b43546f8a9ca6afb8bb97673b241e1f0c +00301d0806001511000012251e20251c2e3545483724232e22090800341e +0000080f5691a1b5c0bcb17622508377112636173c3f333c703434291e20 +19a6baaab1b8b49b373d7f6a0b1328353132393a413b38352c2d2d1d6cc0 +a9aedcca8db9babeb9b4a6846c6a654e504044554346504a483c45444a44 +627f9da7a8b4af8b5349484843373a50514d4e4e545d4b2238472a40618b +a9c1c2c7beb1ababad9f6a6266564f473c4e654d45494e58492419243132 +3d77cafdf7ebebefe3e7f8efdca254271a1b2e5078bdf4ff77775a2e251a +325a504c727773829bb7e1fafc6525453e516b5e42100f23302e292e353b +6665dcd7d2a635484140403c2b24313933282423221f1d1e1f2024252624 +26242427292d1b90d9d2e0f2ebd0d4d1cec9d2d5d4d2d2d3d2d3d8d8d7d9 +dcdcd9d6d3d2d1d05a58575a6166676562635d5d6a6a646761767c6f7181 +7f6b696f6b5f626e68597d7e6a697076807273696a767568656f787c7c76 +78828581728e80354349594a40302c1e2a493c261e2e171f295c7e2a0f1a +2528292a29262a2a2a2b2b2c2d2d2625252627292b2c2d2c2b2c2d2e2c2c +312d28292c2f2d2b2c2b2b2b2b2c2d2c221e1c1d21282d2e2c143880730d +1719243d4f4541311723153a2a0e0600070a0a14121710142b25110c0e18 +1d1b1b1e220d0b161f2f3e3d5362748daebed2e483072244598451220c10 +0a2131252428393e3449433c448198a0a5a58a583533384a68879ba7afb6 +b6905d331e1b1d24359c9d9ba89ea4833f242023181d2a26393c43412f21 +27382d1922238ea2abaeac99c5e0d0ccc8c1b7813262948216293d1e4346 +3740763c3b352b322fc0d6c5c9cec8ad484a8b7313192e3b393a4040423a +3a352b2b2c2482e0cdc0c88a1a2a1e1f1c1d1a070215252234303c524144 +48474e4651483b1c1c1e231e19242010000d131e26243352595758585a61 +4b1f2e37131a21291f1d0f141917181b16130005110e141b1d3c5d4b494f +545e4f2819212b1b07183c4c301c242e25252c2f404349618aa4b3c5ccea +f1da3633271121233e5f463147484c6b99c0e6f3df43133c364e695f4513 +10222c231b1d1f1c3634b7bec8a6404a2613090e16130c1015110f121719 +1d2223262829272421222427272e28acfffbfbf5d0a3a0a5b0aeaca8a7a5 +a5a6a7a8adadaeb0b3b3b2afa8a7a6a55654555860676869676a64667275 +6f6f65767c71748482716f7672676a76716184857170777d87797a70717d +7c6f6c768082817a7b83868275938840515a6c5d503e3928344f442b2433 +1f2634678a361d2631333435343135343434343536363030303132343637 +383736373839373439322d2e31343230313030303031323229252222262b +2f302f183d867b172122273e5348422f182a274f3f1f12080f12131c1c20 +1a1e36301d191c282f2e2f32341b1517191f2319272c34425a6270935b00 +1a44649463331a1c13273a303046748e8da69e8a80abb3b2b7b599613931 +3241608096a2adb7ba97663e2824282e43a9aaa3ada4ac8d4c2f2d302224 +2e283b4251534432303a2916212697aeb7bab5a3d0ede0deddd5cd974976 +a894293845244b4e424b82474b433b403dcde4d6e1e6e0c35c5b9b822027 +3c4946475050564c463d3030322c8debddd8edbc5b6c5d59535249312632 +3d33433b495d4e525d5a5e525d544e363e4754524f59553e21272d343a37 +436166636462666c572a3944232f3c50535a5055534d4c4e4b421e222e26 +2a2c2c486856545b626c5f3423282f2317366e9081767f897d7b83786f57 +4348647a88918ea5aca6203e52516e7286a18266746a61759abfecfffe66 +2d514b617e73582422303b3128272b2b5052d6dce3be525939281c1b1d19 +1d22211b181a1d1d1f232426292a2926252524272a332eb0fffffffed59e +8a7870676e71706e6e6f7071767676787b7b797671706f6e4d4c50535859 +5955585a56555d5851525367716c707a6f55666c685c64726e5d6261504f +53566056594d5063675a5662525c5b4f4f5b5e57635b4e2f4b5b7273816d +685242574f312222152c38183116111d272a2a2a29262c2929282829292a +2829292a2b2c2d2d322e2824232221212c29292d2f2d29282c2b2b2a2a2b +2c2d342f2a27282a28261c18121a1410261e3c4d616062512f3d4a796538 +18091313131b1b211f25372b19121013100a060a090e11110c142c405773 +93b0d1d0e0e050113042465e4326171a1c282d1c1a1c050f060b0403000c +120b00081e11133241485b7c939fa8b4bdb1855641362b150025190b0c09 +181000000f2824252c252f282d393b35353d2a1d1b0022280100070f4b89 +a2b1bdbcb48625457f8215234847473d4d3d4b39433824241093bcabb5ba +b7a2462b7080171f3c4b3c33332d39322923222f2d1246c6a8b0d1dd89b3 +b8bdb9b4a88a716a614b59404b6a4b474946492f4227333a5c76939d9da3 +a0845b5147424237323d4337221523403b1f354c2c41678ca0bbc1c8c0b4 +abacb1a972626559524d404952272b4e636c5321122432343c6bbbf7f2e3 +eef7ddd7ece2d9a55a2c1a1a2d4e70b0e5ff7f6d47271f1434594a4e7e7a +768ea0c1e1fde13e2031384b565f5d2f07233127202931335f52bce9d3cc +4e444e453e3d342c333b3328232222201e1f212327282927262625242825 +21bcdbd3e2edffd1d0d3cdccd2d4d3d3d2d3d2d2d6d6d6d8dbdbd9d7d3d2 +d1d0595b5c6266696764676c67666e6b6265657b837e828c8167757b776d +73817c6c70726160646771676a5e6174786b67715d65665e616e71697266 +522d434f60544c3032241c393b261d2318333f1e37180f1a242727282726 +2c2c2c2b2b2c2d2d28272728292a2b2b302c262221201f202d2a2a2e302e +2a292d2c2c2b2b2c2d2c312c27282b2f3030241d13190d06190d232f3a3c +4a3f1c1e11382a0c040008090b1311150f14261a0904050d0f0d0c0b0003 +101b202b3e4a53657b95bbbed6dc4b0d2d3d405a3e23141a1c2b301e1c2d +324a414741474b7598a3a09f925b2c323c415779939ea7b0b7a87b4c372f +2627328b9397a9a6a58244241f261c1e2b2a392f2b3233313947332c3325 +79a8adadab9cbbdbd3cbc8c1ba923757908d1a254c4e4e44514151414b44 +313626aad6c5cbcec8b2553878871d254251443a3a333a312b23212d2c19 +5ce6ccc2c0a21d281e1e1b1d1c0b0514201c3a304367494541434e384e2d +271a212129272128261a0f17161b25252a3c473d2819253e38192d401a20 +2b2e1a1b13181d1a1819181b00030f0f141e1f3447252d54697259230e1c +271a0712375339233341261c252941484b5d829db0c4cce8ecf14b362115 +2121405e4136554f5479a0c9e5f6c61f102933485762603209222d1f1419 +1d17352490cac9d1594532180b1119120c1215110f13171a1e2325292b2c +292724242525272830d5fffafaf1eaa8a2a8afafaaa7a6a6a5a6a7a7abab +adafb2b2b2b0a8a7a6a557585a5f666868676c706e6d76726c6c697a8580 +848e856b7a807e747a888573797969676c6e796e7265697b80726f78636c +6c636572756d776c5b38505d70645c3f402f2743442e2428213b492a4324 +1c252f3232333230363535343435363632323233343536363b37312d2c2b +2a28322f2f3335332f2e323131303031323238332e2d303333322721181f +150f2315262f3d404a3f1e24224e401d0f071012161e1c1f1a1e30241411 +131b1d1c1c1d0e131e24212128272328334666687f952b0228414e6b5236 +25262632392a29496d9a9ba79e9a8ca2b5b8b3b09f64313036374e728b99 +a3afb9ad835440372d31429aa2a4b2adae8c50312e332726312e3b353944 +484242493027332982b5bbb9b5a5c6e7e2dcdcd5d2a84d6ba49f2d345554 +564c5c4c5d4c5852414434b8e5d6e3e7e2c96a4b8b992d33505f514a4a43 +4e43372b2632322167f1dcdae4d25b6b5c5855524d362931382e493b4e72 +5653565861475c3b3b3241485757535755422d2f2b2e3735394a53493424 +31494323384c283345534d57525856504c4d4e4d26212c282b3230435532 +3a60778069321c272f251930689285788a96796d766d705d46475f738490 +8ba1a6b9333c46516c708aa07a687f6d6582a2cbeeffe5412a3e475b6b75 +734318303c2c202328254b41b1eae4e76b57482d1e1e221b1e24211b181a +1d1e202426292c2d2b29272727272c2d35dafffffffaf0a48b7e716b6f70 +6f6f6e6f7070747475777a7a797771706f6e5d5e64676864605b595a5049 +4f525c68485d726f5f57575c4e4a46464e534f484f564b4c4946514c4e42 +44565b504b524e585548444b493e47343030485367728b70756646494b42 +331c1b22370f1b2a1620282a292a2a282a28272525262628292a2a2a2a2a +2929241e150f0c0c0d0e191c252e2f29272a2b2b2a29292a2a2c32302e2a +262524241f1e0e1a1112201f3c4652566254232140756438190912121418 +151e222c382320181513110c0a0c0c13120a050a284b5f7a9eb8d9d4e1bb +1f2426313937372f2d3136352e1b141b03140a0300050000111002092310 +06273a3b49678395a4b3bcc4ab7f624d3515001f1f120b07130e00000822 +21222a27171a222a2f2d251c282d2f000d30090006104082a2aebcbbb991 +32417e831e273d3827293f2a31373728161b0977c4b6b2b9b4a75f296b9a +161a353f2b292d1e24170f112036361d2fc5b0b4c9e78da3b1b9b4b3ab90 +746b654f5b3c425c34272b34482f4613254d536884908c8d8c7957473535 +434233297e77511e0c1b25213d502f42668699b4bbc1baafa6a7afaa8164 +655c56544441351b36605b57625e16252c2e385794cadee0fffff2dce2d3 +cda260301d1a29456aa3d6ff955e36211410304f3d4777717490a3c6dffb +bc292c21283b435c683d11232d241b1e262d50568df1cbd26a35564b3d3f +3e37393c3127212122201f2022242727282626252721271839d8dcd7dfe7 +ffdad0d4cecfd1d4d4d4d4d4d3d3d3d3d3d6d9dad8d6d5d4d3d263676a70 +716e686563655b545a5f6675536b7d7a6a62656a5c5853555b605c555961 +555753515b57584d4e61655b555d575f5e514f565449503b34304650615c +5b333c361d29343229171b2539131f2c141e2628272a2a282a2b2a29292a +2a2b2929292929292828231d140e0b0b0c0d1a1d262f302a282b2c2c2b2a +2a2b2b2b2f2d2b2b292a2c2c24230f170c08141028292e334c4413030936 +2a0d050208080c100a12151c2813100c0b0d0f0e0e0e040b11121218314c +5667859ec3c3d8b61d23242e3534342c2a2f34352e1b132a2d4d423f394b +4c6996aba7a59d622b313b38466480929fabb4baa07255402a223283979e +a8a5a6894e2820281e1c292a1f1f1e21262928242e3943225daaafabaa9e +b2d5d5c9c7c2c19d44538f8e2329413c2b2d432e373f3f34242b1c8ddbcd +c6cac5b76b3473a11c203b45312e3423221611141f34352443e3d1c6bbb2 +29211b1b191c1d0e06101f1e3b2a3859322523314b38521b213525252f31 +292b2b231714091028302827807b531e0a151d19374a23252e2f19191114 +18161314151a0a000a0d1623222a2a193863615d655f121d22180c0f2541 +433c5f725035312b40494e5b7a94a8becde5eafb6c311d191d213e543631 +534a5881a4cee3f4a30e1e1d253a445f6b4314252b1e111316152a285ac9 +c1d875343a20111518110e1515121014191b1f24262a2b2b282624252825 +281f48f1fff9f7eef9b7a5adafb1a9a7a7a7a7a7a8a8a8a8aaadb0b1b1af +aaa9a8a76164686d706d6a6665675f5a60656f7b556b7f7c6c64686d5f5b +595a6166645b62675e5d5c57645d615357676e615e635e676558555c5a4f +57433d3a515b6d696b434d442b343e3c321e252e451e2b38212931333234 +3432343433323233333431313131313130302b251c16131314151f222b34 +352f2d303131302f2f303031363432302e2e2f2f2827141e13111e172a2b +32394e45140b1c4b401e10091011191d181e1f27331e1b1616191c1a1a1a +1118211f1b18202a1f2233476e738d7e041e2537444949413b3c3f3d3827 +2147699c9fa19ba19099b7c1bbb4ac6d3130352f3f5d798d9ba9b2bba479 +5e49322b4193a7abb1aead9057322c342926313122252c343b3a31272c35 +442868b7bdb9b4a8bde3e6dcdbd5d8b35a67a3a036384c4534364e39434a +4c4031382a9ae9dfdfe4dfce814886b32c304b554141463637281d1b2439 +3b2c4eeee2dedee06561585552514f3c2b2f39314a3643643f333a465e47 +6028324b4248585b555454462f271a21373e36348c865f28151f28244154 +2f3747524a534f53514c47484b4d32222b2a3038333a38264572716d7871 +212a2b241b274f778585abbe997d79696b5f4c475b6d7d898c9da2c35034 +3d52687187946c5f77656788a6d1ecffc12d352e364a56707c532332392a +1c1b20223f447bebdcee874650342223251e2127211b181b1e1f2125272a +2c2c2a2827272a282c254ff8fffffff8ffb3928678716e70707070707171 +71717275787978767372717045474a4c4b443f3b4349443d43434a553939 +4141372e34404238333b3e3936382d3730322c242f2c2921202728211c1e +222a2a221f201b131a1c2a36434757718f707879574b4e533923250e2219 +15251b232a29282a2b2a2b2a2828272828292b2c2c2d2c2b2a2915100a06 +0608090a0d12202e302929302d2c2c2b2a2b2b2c2d2f2e2b27242528241a +257b7720142633445656645825193c756639180a110e1217131d26333e21 +17130f0c0a0b0a0b111107080c0e1e41687fabc2dedbe2810c2c1c2e4841 +473f4243473a3228191e070d000401040003070f070c220e00142f354059 +748fa7b6b7c4bf9e75583c10001f2e1f05000d140000001918171f21121e +251f17160f041e2b310000330a00040e3379a3aabbbbb48f3e35737c2a20 +47251d302c274545351e12150958c6bbb3bbb4ac77285b992b2137474159 +756f30180c1a2d3b3a2920b2b9b5c7eba097acb6b3b1ac94796b6556583c +3c4b2a172a4b6e63782a244e4b5a717b7675776d5057544a443d35394c67 +6338170f1926474f2c3b577e98b1b9bdb7afa9aab3af8c68655d5858473b +392a4055463f61811f25232636426089b4bcd8e5cdbdc1b8ad92592c1a15 +20376193ceffb64e291b1219324838426c677894b0d0e5fd952c33253539 +26313f2d2a3234292224292f476470e8cdca9331584e3f3f44403d3c3127 +21222421212421212323222223222821260e61e3dad9dce7ffe9d1d3cfd1 +d1d4d5d5d5d6d4d4d1d1d2d5d9dad8d6d6d6d5d445494c4e4d48433f474e +4945484b4f5d3e4246493f363c4a4c413e4649444143343e3739332b3633 +3028272e2f282325292e2e2623241f171e202d39464a5a64633642462d29 +323f2c19220c221b17271b232829282a2b2a2e2d2c2c2b2c2c2c2b2b2b2c +2b2a2928140f0905050708090c13212f312a2a312e2d2d2c2b2c2c2b282a +2b2a28272a2d291d267872190a19202b3335514c160007372f1007030a07 +0a0f08121a262e140a070506090b0e0e0f0b060b13131f3b5a6c94abcace +da7e0d2e1d2e473d433c3f414539302617292e42363e3f49496d8da9aeac +a16a2f2839364056718a9facadb8b38f66472b193080a6a9a29ea5955b2e +222a1c1722261a2321160e0f0f092234411e45a7aaababa1a9d1d8c7c8c1 +bf9e504784872f224b292134302b4b4b3d281e231b6bdcd0c5cbc4bb8230 +62a031273d4d465e7c742e150e1d2c39392d32cedac9bcbc471d1b1b181a +1e12060e1c233628304527152247716c8433233f292731332a2b302e1c2c +2f2b2e2d2d374b69633814090f1e444e2424262a1e1c141518181616161c +1300070d132421222c263f58494564821e23201a180f11243f405c674d38 +322e3340495670889db2cbdfecfa972a191c222e434e31304f476289b1d7 +e7f67e152722343b293445332d3432261a1a1c1b263634b6c0d09b2f3c27 +181615111015171312151b1c2125252727272322212129242b1772fcfbfa +f2eefaccacafb1b1a8a7a8a8a8a9a9a9a6a6a9acb0b1b1afababaaa94344 +494b4a47424048514d484c4e55604141494b41383f4c4e46424a4d484747 +3c443f3f3b313e39382e2f34372e2b2d3137372f2c2d2820272936424f53 +636e724552553b37404a36242d172e272433272d33333234353437363535 +3435353533333334333231301c17110d0d0f101112182634362f2f363332 +3231303131312f3132302d2c2e312d222b7f79211320222e393c534c1905 +194c4420110a110f171e18202630391e14110e10111317151415161c2317 +11171d1d374d73809951002d223a59545a51504e50413b312545699293a2 +a4a492a1b0c1c1bcb0753529312e384f6a849caaabb8b5926b4d31223f90 +b4b4aba3aa9a61372a32251f292c1d292f2923211b0d213141234fb4b8b8 +b4a9b5dde8d9dbd7d5b3665b9899423156322a3d3b3657574a342c302979 +e9e1dde5ddd2984575b241374d5d59718e8743281a24313e3f363edaebe1 +dee87f5a5655525150402d2d373646333c4f3223395e847d924235544446 +5458504e524b323d403a3b3a3a4459756f421f131a294d562f343c4c4d54 +5052504d4a4a4d503c23292a2f3b36353d354f675a5577942e312b242422 +304e747c9aa688716a615a5749425361737c8995a4c37b2c36546d7f8b8c +655a6e5e6f91b5ddf3ff9b323d33444a3a4555413c413f31252325263750 +56dbdce8b044533c2a2425212427221c191c202023272627282825242426 +2d292f1c79fffffffdf8ffc89a8d7d7870707171717272726f6f71747879 +7876747473723736373634302e2d242c2d2c322a232530211a212a272423 +221b16191a1412150b130a0e0a020b070b0a08060505040011151c202220 +1c190b1a232e39404d717c5f636a5b52494a402d2a121b1b0e111a202622 +202225252928262625252527252728292929282713121112151615130d0d +1625292322282525242322222323222323211f1c1d1e160e44ecf23b0919 +2b4357566865301d3f786a3a1609100d1118151f2530391d16130f0e0d10 +0e0d0b07010e1c131c436f84b6c8dce2e04519212030434a4a3a3a36392a +3038241e0b0b0006080b0006040a0104160c000624313e4b6586a1afb3b9 +c1ad866d582300152a1d02000b140000000f0e0d1720273b4a3f29191314 +2122290000350702030e2974a3a7b8b9b08f4d22677c3d13472d151c1e34 +677d431f1915113dc6bbb5c0b9b6902d4d8e40192035304a727a4119091e +2c29251c1193bcb3c5ebb88eabb6b3b2ad977a69635d533f3b4135232d56 +6c637d3719394a505f645857605e6076775e422c252f5b70653f24161c2f +3d3c1d3347759baebcbcb5b3afafb6b5936b69615655493a413a3b3d3a3b +495920221c2534313651666a706f6b6c7277776b442316121b2f5281c7f1 +dc43231911223642394164627c96bcdbebf8672e201a38402525363c3c42 +3d2c2931322c40666bcddbc3c247524e413c454741393026232323232326 +222222201f1e2122252228078fe4d9dbdceafff7cfd2d0d0d2d5d6d7d7d7 +d5d5d1d1d2d6d9dbd9d8d6d6d5d432333332302f2d2b222c2d2d312b2226 +30231a222b2b282727201e23241e1b1d0e140a0f0a030b080b0b08070506 +040314181c20201e1a17091a26324049586c53262e3a302e2a322e21220f +191b10131c232625232528282c2b2a2a2929292a2424252626262524100f +0e0f121312120c0c15242822212724242322212122221d1e2020201f2021 +191145e9ed34000e1b2d3838585b24030c3d33110604090509120d141924 +2b0f090908090c1111110b07000f1d1216375e6fa0b2ccd6d9421b252332 +44484838373436272d3520272e3f323f45514e6f8aa4aaa59b713a243338 +3f4a607d96a4a8abb39f735941282d77a3a89f9fa69b6534242c1f18242b +313e44331d1213172328341e3ba3a0aea9a2a1cddbc6c7c1bb9e5f377887 +43154930181f22386d834b2925231f4dd8ccc5cec7c298335493431c2338 +354f797c3e160b212d28221f21addbc7bec26a1c1d1d1a1b1f1306081726 +2e292f3b322125526f6a89401c30342e323125252f343b565b473121212e +5d73673e201011273d3c1c211c28261d1a181b1c1c1b191e1600070c0d1d +1f1f33333a403d3e4c5c262823252a190c1922222320181616181a2a3a4a +667e95abc5d7eff4c225161e243b474832314b4b6c8fbfdfeaf0531a1718 +374228283c423f443d2a232a281c24392591c8c7ca45392b1f1610101214 +181513181c1e222726262624201f202328272f14a2fdf7f7f0f2f8e2b2b1 +b1afa9a8a9aaaaaaaaaaa6a6a9adb0b2b2b1ababaaa92f2e302f2d2d2b2c +232c2f2f362f272a32221c242d2c2b2a2a24212526202020151912141208 +130d1310100c0d0b0c0a1d21262a2b29252214242f3b48505e736137404a +413c393f3a2d2f1a26271d1f282c302e2c2e313135343333323232332c2d +2e2f2f2f2e2d191817181b1c1b1a12121b2a2e28272d2a2a292827272828 +24252726252425261e164af0f43c08161e303e405b5c280c1f534a23100a +111018201c222730381c13121010121616140b090e212f18081119163b4d +748ca21f10282c415960604e4841413038402f44668b8fa6afb19ca8b0be +bfb7aa7d40262e3039455a7892a0a4aab29e755b472e3884aeafa4a1a89e +67362830261e2a2f3343524733241f1c2226362545b0aebab5acafdbecda +dcd6d1b3754a8c995322553921282d43798f5633312e2c5ae4dcdee9e1da +af4967a6542d364b49638c9153291728312d29282ebaeddfdfec9e575956 +535251422d29313b3f353b453d2f3c69827c994f2d434b49515044424c4c +4d656a574131303c6c82764c2f1e21344544242f3048535455545151504f +505342252d2d2b36353244434a4f4e515f6f36362d2d32262034474a4f4d +423d3b3a393e3938495a6c778290a9bda9273455718d8f866556685d7796 +c4e8f8ff6e352a26454f37374a504e5149352d32302632504ab7e6e0df5a +4f3f2f2522232625251f1d202324272b29292927242325272f2d351aa8ff +fffffbfdffdfa292857a73717273737373736f6f7175787a797874747372 +1f1e1a181617181b15170f0e18181215121316181b1917141c1b19171614 +1314181a0c12120b120c0a0e0d08091014100e10182328231f1e1721191d +31414b70755a5a636867534d4f3424232218151a171c1f1b181b1e1f1f1f +1e1c1c1b1c1d17191b1d1e1e1e1d15171a1e21201c180e0608151a141114 +141312111010101211110f0d0d0c0a06150331e5f42504182d43504d656b +2f0f427c6b3812050e0c111c1a1e1f28301512120f0c0e0f0d0a100b0510 +1a0d1f547283bbc7dae3dd1b2710272b273936251f171a0d243d281a0612 +0000061401000d0a0000090d05041528353f5576939eb7b1bfb996897e48 +000c201a0d0d13110000000d0e0d1b251a3a5d60411b0b0f2d2123070039 +0508030c236ea1a3b6b7b3975d1d6687530e2243221d393a4168461b1b14 +172fcabfb4c1bec1a93e54955c1f1c37304069784d1d0b2733261f1e067a +baadc1e5c687a9b9b5b1af997b6a676550413a373929294a3f2b57372448 +4d4b524f413d494e4e574e4448413025454c3d2d34312b342622102c3e72 +9ba9b5b5b1afaeaeb5b3966e70655252483c3743443b3b372e271f221e27 +392c2134363d37354145434646472d1713151b2d4674c3e7f64020180622 +3238383f5b5f7992c0dbe7ec4024361f33443d3e41423d473e2725363323 +395d6eb4e6c2e35d4b4d413a434a42353026212424222528272423201f1f +232424212a06aee2d9ddddecf8fecdcecfd1d2d6d7d8d8d8d6d6d2d2d3d7 +dbdcdbd9d6d5d4d4151412100e0f13160f110b0a14140e110e0f12161919 +17151d1f1e1c1b1c1b191717090f0f080f09070b0a05060d110f0e101620 +221b1718111e19213a4e5a6f51272a373f4334323a26181b1e16141c1a1f +221e1b1e2122222221201f1f1f201616181a1b1b1b1a1214171b1e1d1915 +0d05071419131013131211100f0f0f0f0c0a0a0a0c0d0b09160430e2ef20 +000e213035345962260011423511050309060b151216141c24090608080a +0c0f0e0c130d050f160613455e6ea6b6ccdad71a2a152b2e273934231c15 +170a21392121274235394359536690a4a59d9577492c2b333a3e4d6b8590 +a9a4b1aa8473644729648c999ea5a7966735252f231c2a33243d57543513 +0b0f2d232d243da199b0a9a49fcbdcc6c8c2bfa872327792591024462520 +3d3e476e4e232520233dd8ccc0cdcaccaf4359985f221f3a3545707a4a18 +0d2a34251c211491d9c3c0c58220221f1b1c1f140405192c2a292d313627 +2446403260402a4541383631211f2d3535403c363d3d2f264851402e332d +24302927101e17292c1c1a16181b1b1a161a1400070a05161b1c243a413d +3c3a312c262b262e3a27141f1a1c120c1418120f04182c405f7a94acbed1 +f1efdd21151e1d3c423e302f494f6f8fc3dde5e32e122f1d33463f414445 +41493e2522312c131d2c1e6bcbc2e95b352d22140c0f13131a1614191d20 +2327282827242020222527283415c2fbf4f5eff6f5f0b7b0afaca9a9aaab +ababababa7a7aaaeb2b3b4b2abaaa9a913120f0d0c0d10130f110a0b1515 +0f120f1013171c1b1917212222201f1f1e1d1d1e1016160f16100e12110c +0d141815161a212b2e2824241d29232a41545f775f383a464f5143414933 +26282c23222823282b2724272a2b2b2b2a29282828291e1f212324242423 +1b1d20242726221e130b0d1a1f1916191918171615151516131211111212 +100e1b0936e9f627051625343c3a5d65290324584c230e08101019252125 +222a301510110f0f1111100b0c0a0f1f270d051c17113d4e7495a700231b +37413f534c392d2222132c47313e5d8e91a0aebea5a3bac0baaea484522e +282d343a4a67828da69eaea78275674d346e96a0a3a8a795673427312821 +2f36264265684b2817172f222f2a46aea7bdb5afabdaeed9dcd6d5bc8745 +89a4691d304f2e294849537a592e312c2f48e5dcd8e7e2e2c5576ca97033 +324d4959838f5f2c1931382a232a219febdadfecb3575c5b575454432c27 +333f3936373b4134385d544471513a58554e4f4b3937444a48504c474e4e +41385b645140453e363e322d182b2a47575153504e4f4f4e4e5042262f2d +25303231374b524c4e4d443f383a31363f2d1e2e3137312a312f27241f2a +282e43586b797e8bb0bec92937586b908d7a61535f5c7896cae9f3f8482a +3f2a3f534c5053544d564a302b38331d2b424596ecdcff714c4232232125 +272326201d212425282c2c2b2a272424272a30323d1cc9fffdfffbfffcef +a996897f7572737474747474707072767a7b7b79747372721a191919191a +1a1b181818181616161614181b1b1e201d151617191a1818191b1b1d1b18 +1516151412110f0e101313100c0f161f2526201b1b161a28333a41536357 +3f3d4d5a594f4f3c2f2921181d2a151e1c261e0e16161c1e1a1112171d1c +0c09080b0d0d10151b1f2323211f1e1e1d170f070405080b0b0c0d0c0a09 +0a0c0f100e0c0c0b0b0a0a0912e9fb2b13152933434e50462d1b6f9b6542 +1b0e050a0f1a1f2a221f2818120f0d0c0e0e0d0b0f0a050f19192a4e687d +9dbcdfe1b90b1a2425273c8e793b08110a0f2d342a230a080b0504050100 +0b0b00000f0c000016172d414a648b9aacb4b6bcb9937b7b171340312919 +182d0e000005231e152426343842441f0725341f150e00251c00010c195c +97a0b0b1b1a26e2064826f2127232f2e2c404bd4722a171a062f8ebebfb3 +b0af843f37673b3123273639394744262030291617201d46b5b6c0d3d17f +abb2b6b7ab9e896c695f574b3c2543273f272e3128303f3a373231353530 +2d2f34362f26272d2b1f2b353a3c44423d3f3b172d3b386190a0aeb2b1af +a9a8aeaba07f6a635b4c4341454b43524839442d2325151f54311d182024 +26282c312e2e38392c1e15171d25426aa9f1e43728180b123a302c4d565f +81a3c3d7ffaf27342c22353c334d6f6b453829242c362e263e6b8690d5dd +bb9d385836463d4a522f2d262525252424232825221e1e1f23241d1f1d08 +bcdedae2e6e6e9ffe9b7c5cfd6dcdcd7d6d9d6d1d5d3d0d0d2d6dadddcd7 +d4d60f0e0e0e0e0f10111010100f101010100e121515181c181314171a1b +1c1c1c1e191816131011100f0d0c0a090b0e0e0b0b0d13191d1b15101313 +1a2c3e475356472b141428383a34382c211e1b161d2a18211f2921111919 +1f211d14121a1d1c0b0605080a0a0d12181c20201e1c1b1b1c160e060304 +070a0a0b0c0b090809090a090909090a0a0b090811e6f6260e0e1e222937 +454127074064311d0e0b0204091419221a141e0e0808080a0c0e0d0d120d +060c110d1a3b546a8cafd5d9b50b1f2b2b2c3e90793c070f070c272e2328 +2a373e3e404a53598ea2a9a59c7d4c2a3427334140567c8b9faaabafa67b +5e7239539498a29a959f693c172234291e2b2e3732363b17062534201a2a +338aaaa4a9a899bed6c5c5c0c0b48437758e752327232f30304452db7a32 +2124103c9acacabebbb78b443a683c33242a3b3e40493f2122352d171420 +295cd4cfc4bb9823271a1e221b160f0416212c312c1e40253c242f362f37 +453b3429242626232124272b261f242e2d24313b3f4146433b3e3f1c2d2f +131c251a17171d1c19140f111b0b00040a0c132030403f51493a4530282a +19225734221b22211e1c1f25231a131f35495e7894a5c0cedcf9cc17191e +26304a34254049557fa4c3d6fba315252620353e354f716d473a29222931 +291920342e3dafd4bf9e263d1b22060f230f191a191b1e2121222926231f +1f20222421272b1bd3f7f0f5f6f0ecfdd99ea4a8aaafafaaa9acaba6aaa8 +a7a7a9adb3b6b1aca9ab0b0a0a0a0c0d0e0f0e0e0e101010101010141717 +1a1d1c1617191e1f1f1f21231e1e1c19161716151312100f111414121318 +1e252a29231e201e2435444d575d553c252439484a434839302c29232936 +212a28322a1a2222282a261d1c232726130d0c0f111114191f2327272523 +2222221c140c090a0d10101112110f0e0f1011111010101010100f0e17ed +fd2d15152428323f4b452b12547b472e1812090e15222731272229191110 +0e0d0f0e0d0807040a1720110a110b0c22477e9888001b35394057a99151 +171c1015333c33465d7f9aa7aeb2a99bbabfbeb8ad8b562f3424313f3f55 +798699a1a5a9a27b6077425d9ea1aa9f99a06a3c1a263b2f2733303c404a +502c142d36221d2e3d96b6b0b4b4a6cbe7d8dad5d7ca9949879e8530332d +3b3c3b4f5ce5853d2b2e1a45a6d8ded4d1cc9e574d7a4e42363b4e51535e +55352e3b301b1b2a376ae6e5e1dfc5566155595a5046382732363d3e3726 +49324f3943493f47554d473e383b3b373535393c39313742423a47515555 +5b57504e4822353b25394f4d4e5051504c484747483224262a272b354351 +50615b4c59433c3d252b5e3928242f32333030312b23252c303541556c74 +838ea1d0c026405c77869571515e5b5e84a9cde4ffb92d3a342b3f4a425c +7e7a5447352d32382f222c4b586bd4f1d8b33c502a301b25371e25242324 +262828282e2b28242425282c2c323422d9fefbfffffcf3facc88857f7978 +78737275746f73716f6f71757a7d7a7572741c1b1b1b1b1c1d1c1a191919 +19181818181c1f212226241e19181919191a1a1c22211e1a181715131414 +131213141413121114181c1c1914140f0b0d0d0a0b171d2e342e272e4459 +574c3b2a21232a2e151e1e2e31272f2c272929292e34312a0b07070a0b0a +0c111e1b1817181919191915100b08070809080a0b0a0807070a0c0c0c0b +0c0a0a09030924b0c23c150f212831322e2c252357885d39120605111619 +1417121529210e0c0b0b0d0d0c0b0b0807131f20304e6278a3cbe0f29115 +2516112b2a7594461d16080f25251d1f13111008000000000b0b0100100d +00000c192b3a445a7e99a7afb0b4b79b84815f3a493e3f29243e291b0a0e +1f1e161c192534454b2a101b271a12100019250200061354929fadafb2a7 +7420597d6e1e2c353631323c348856221c2b170f1508091313111513131c +2427242a373225263f34333a2f272c2f1835adb8bbcacd77a5afb5b4ada3 +8c69645f565345396b49374b2f494c4553413d363336393532333c423e31 +2b2f302c4746433f434d4a4032234245315890afadb0acababafb2aca484 +6d655f52474137575c4a3a42636f52281428472b1826181f24211c1c1b1f +25291f1612131619375c9ce7bd2e221012173831314f575f79a0cbe2ff92 +242e311d2937364b655b4225121e2f323036436d8585bfe0c5b33855433a +404f473a2f282725272625242825211e1e1f232424201722d0e5e2e3e8e5 +edf7f6bdcbd1d3d9dad6d6d9d7d2d5d4d2d2d4d8dbdeded9d6d80e0d0d0d +0d0e0f110f0f0f0f0f1010100f1316181c201e191416171818191b1b1d1a +171311100e0c0d0d0c0b0c0d0d0c0f0e0e1011110d090c090b1116171a1c +070c120e070f283e403a2d1f1b21282e18212131342a322f272929292c32 +2f29080404070807090e1b1815141516161616140f0a0706070807090a09 +070606070505050607070708020821adbd37100a1a1b1b1e272a20122c52 +2c170605040e10130e110a0d2119060706090b0d0c0c0f0b070e15111f3d +4f6895c1d7ec8c142b1f17302c7794471c16070c221f1624323e43413e41 +464c8ba0a7a69f83512d2f2d353a3a4a6c879aa5a7aaa583666e6c5e7f87 +978a85966e4e291f261e141c1e292e3c42250f1b261a16272877ada4a8a6 +97b8d3c8c6c0c2b98a376a89741d2c35363334403b8f5e2a24331f171d12 +111b1b181a16141e2629262b3a372c283a2c353f3328292f2148cad3c2bb +9e2325191d1f1a190f000e1e273534326847344a304c524b59443e353033 +35323132393f3d322d3436324f4e4945484f4c43362845390f162a2c1a17 +191b1b18100f1b0a00010a0d131e204a5547394364704f230d22442e2135 +292d2b241e212523181f3041546e889bbbc8d5f5a50c12152e3748332842 +4f5d7da3cbdef98415212b1c2737364d645d4124121c2d2f2b26222f2228 +8dcdc7b82c402b150b181c1b1d1e1d1e222324232926221f1f202224282a +2839e9fcf6f3f5f1f6f9eea8a9a6a7acada9a9acaca7aaa9a9a9abafb4b7 +b3aeabad0b0a0a0a0c0d0e0f0d0d0e0e0e0e0e0e1016191b1e22221d1819 +1c1d1d1e202123211e1a18171513141413121314141418191a1d1f1f1b17 +1915151a1d1d1f22131a221d161e374d50483c2d292e353a212a2a3a3d33 +3b3831333333373d3a31110b0b0e0f0e1015221f1c1b1c1d1d1d1d1a1510 +0d0c0d0e0d0f100f0d0c0c0e0d0d0d0d0e0e0e0e080e28b4c43e17112122 +27272e2f261c3f694127100b0a171c1f1c1d171a2c24110e0c0c0c0b0a06 +0100091520140f120a10346288b06600292827444590ac5b2c220f132d2d +264161829eaaadab9f90b8bebdb6af915c34312e373c3b4b6a83929c9ea1 +a1816874756a8b90a1918c9a73522e262e282126212c3c4f57391d232b1c +192d3383b9afb5b2a4c7e5dadad4d9cf9f497c99842b383f423f404b4599 +69352f3e2a22281e2430302b2d27262d3538353d4b4a3f3d50414145362c +30393057dce8dedcc8545e565857514c3b212b3439413e3a7152455c445d +625b695550474144464341424a504f46424a4e4a6665615d5e666154412e +4c452032525e504f4d4e4e4d49464933232529292a32325b655849557684 +64391d2e4d33263a31383b332a2724242228282d394d646d828ea2d4a124 +3f57828e9570535c5c6280aad7efff9b2c3337243241425a726a4f321e27 +383832302d464e57b3ede0ce42533b261f2d2f2a29272626292a2a292e2b +27242425282c3436323feefffffffffdfdf8e39790847875767272757570 +7372717173777b7e7c7774761c1c1c1c1c1c1d1d1c1a1a1a1a191919161a +1c1d2022201a1c191816181a1b1d221f1b1a1a1a18161717181817161616 +1614111113141313191312100a06060f131e23201e23323e4f574f342023 +3035201f131d221e2620191816182026231b0e0b0b0e0f0c0d1019140f0e +1214130e100f0e0d0b09070610121313110f0f1010101111121112101902 +0106150a0a22161c221b121319243367563a160b111f0d161a2422202b1c +0b0a0a090c0e0d0b0908091421233048657ba4cacde754256064262f4055 +6a45251b14202e261e23110f110a010000000b0b0202110f00000b21262e +46566a899da7aaacb3a691846f3c28090a0000003b3c2c232b2f30313b2f +2c323632343b3a362a240003240000000f4a8ba1acadb2ab7c224877721c +2841322b312f1c3439211d27211c1d1a16251d0f1f322d21131f252f3c39 +3034403a342a1e1f2a271d27a8c3bed4e7959dafb5b6b0ac946a67655454 +423b80534b633a42464f37293f3833353a393736333d3e342a2e33352230 +474126283736231d3c3d345f8c9daeb0a9a9adb2b4ada98b726961564a40 +3e5753303c616e7e633c23364236161b191c1e1c1c1d1b1d24241f1d1d1d +1d1d2e4f91df872b2511151934323a555e6783a6d7ebf6632226321a202c +2b3b595f51240b1e2f2721324f778e88aae6cece51505b333e4f373d302a +2828292927272826221f1e1f2121231a0a4ae2e1e4e0e5e6ede9ffcacfd0 +d2d7d8d6d6d9d6d3d5d5d4d5d7dadcdeded9d6d80d0d0d0d0c0e0f0f0e0f +0f0f0f0f0f0f0d111314171c1a1415141313151718181b15111010100e0c +0d0d0e0e0d0c0c0f100e0b090809080811101013110f111203060b080308 +1726384541291a212e35201f131d221e2620171614161d23201808060609 +0a07080b140f0a090d0f0e0b0d0c0b0a080604030d0f10100e0c0c0d0909 +0a0a0b0c0d0d160000031207071f11120e0a0d141814093326190c0c101e +0a1317211c1a2516050505070a0d0c0c0c0b070d16151f38576f99c2c5e1 +4e22646d2c34455a6c46241b131f2c221a282e3b43433f3f464f889fa7a5 +a38956313239312d39435677909fa4a6a6917369623e38293a302e306152 +352021211f263f34282b2e2d333e39362e38245da997a9a494b1d0ccc7bf +c4c092395983751b263f322d3333233b422a262e282324201d2c24152234 +2f20121e27313f3f373738323631232327252438c3decacbc34c221b201e +1b1f15000c1f23342e317d514a62394448523a2c423b36383c3c3a39353f +41372f33393b28364d472c2d3c3925203c31121f271d1e19191b1d1b120e +1d0c00010a10141b26494d2e3b63707b572a0b1f302c1b282728241e1c22 +29292429344457708b9eb7c1d0f1720a1718333b41312f4958688babd5e2 +e75113192c191f2a293b575e4f22091c2d261e22252f231e67c6ced64e43 +430e0f1e0e212323212324262626272523201f20222429261e63fef8f4ed +f1f2fcf3ffbaaca4a6aaaba9a9acaba8aaaaabacaeb1b5b7b3aeabad0a0a +0a0a0c0d0e0e0d0d0d0d0d0d0d0e0e1416171c201e181c1a1a1a1c1e1f1f +231e1a191919171516161717161515171a1a1716161716161e1b1b1c1916 +17190e131916121728364a555037282e3b412a291d272c28302a22211f21 +282e2b21120d0d10110e0f121b16111014161512141312110f0d0b0a1416 +17171513131411111212131314141d06050a190e0e26181a1a1414191e1f +1d4a3c2a15111624131c222c282631200f0c0b0a0b0b0a06010208141e15 +0f141a23477184af2e1165763a475b70815832251b2537302b455a7c9aaa +b0aea195b8bdbbb6b298623a393d3733404757738894989a9e8e756e6c4a +4536483d3a3b6a5d3e2b2c3031344237363d454341453e38313f2e68b2a2 +b5b0a3c0e0dfdcd5dad5a74b6b938429334c3e393f3e2d454b332f38322d +2e2c2f3e362531413c2e202c3440504f494a4f47423726262e303448d6f3 +e4eae97959575a57535342232b3736413939845c58724b535761493b514a +45474b4b4948444e524a434951534250655f4243504a3127443d233a4f4e +53504c4d50504b464c3523242a2c2b2d36585b3c49727f8e6f4221313c35 +212e3034342d282829292c2d2b313e526875838da5d977294c608d958f6d +5961626a8db1e3f7fe692a2b381f27353647656c5d301627382e252c3347 +4f4f93ebeaeb6355531f2131202f2d2b292a2b2d2c2c2d2b28252425272d +3734276afffffffdfffffff2f8ab99877773747272757471737373747679 +7c7e7c7774761c1c1b1b1c1c1c1d1b19191919191818191b1b191a1c1711 +1c191616181b1c1c1d161215191a19191515171917151719161411101112 +14150f0f10100d0c0f15221e161a2327231d334c5845251a273844371a18 +1c1e2a24322c2321252c32330e0b0c0f0f0c0b0d0909090b0d0d0b090b0b +0c0c0b09070607090b0b0907070a090b0a0b0c0d0e0d0d0b140b18230d10 +0b141c160c0b0f19205157412112141e1a2833433f383c260c0b080a0d0e +0e0d0b0b09101e232c40578ac1efecdc31215a66242041342d2c1f262e37 +382a1c110e0e100b040000000b0e06041211000001211c244b585a768f9b +a4a8b2b19c859078581e130e10002b322a23272c333b37282c302f2f302e +29312f2e0000360500000c4184a4abafafad85293a74792224402621261b +1615231f1a191d18161a1c231e1a1f1d1c2223252426261e24423a26120c +11263d3e231e9bb8adc6eaa993aebab8b0b29f766a6a565239307b45352f +3b3b3a76281b39322e2f333433312831352f292a2f2e404e7875340c0c08 +1f2647474773959db1b3afadacb0b4afaf937a6c645a4a3b444c4324486c +515554692f2f404b2f1d27221f1e23251d131a1815181c1c1816254184c8 +5328291610192d34475b636d93adddf1e043333027223543363753695e34 +1e2a33261e2f537d9b929de5d0d17a3d653c3c4c334031292927292a2928 +282622201f20222121170475ebd9e6e4e2e9e3e1fcded0d1d3d6d7d6d6d6 +d3d2d4d4d4d5d8dadbdcdbd6d3d50c0d0c0c0c0c0e0f0d0e0e0e0e0e0e0e +101212101113110a15120f0f11141515130c080b0f100f0f0b0b0d0f0d0b +0d110e0c0908090a0c0d090c0e10101013151a11090a0f130c061e3a4a3a +1f18273844371a181c1c28212f29201b1f262c2d0906070a0a0706080404 +040608080604080809090806040304060808060404050201030405060708 +0808110815200a0d080d0c09090e100c00202a221a15151d172530403c35 +3620060505080b0d0d0c0c0c050711151f324d81b9e9e6d4271b5e6d2a26 +4639302f21262f38362819182a38424441424a55859da6a6a48c5a332d3a +29223e4344648597a2a4a89e7f6571614e2225282c1a3936241615171e2f +3b302a2c272c3231283130412a58b6a3aba396abcbd1c7c1c1c29b404b80 +7c20203c2421281f1d1c2c282120211c181e2229241d211f1c2223252428 +29212a43321e1413162a3a3c292eb6d3bdc3d0681c1c24201b231b030d22 +213025267644352e3a3a39752a1d3c383435393a36352c3538322c2c3133 +42537d7a3911110b1f25463b2533301f221e1f1f1e191210201202000911 +1314293c3b22486e53524652110f253b3026342c1e171d25282323232a39 +4c658197b1b9cae1430c1e1f313a3830384e61739db4dae5ce2f2123211f +324033334f655a321a2831251b1e232d2a2049b6cde07f364a1713231126 +2526242426272827272523212021232428241c92fff0f4edeef7f6f1ffd2 +aca3a7a9aaa9a9a9a8a7a9a9abacafb1b4b5b0aba8aa0c0a09090c0c0d0e +0c0c0c0c0c0c0c0d11151515161815111c191717191c1d1d1c1511141819 +1818141416181614161c1b1916151617191a1517191a19191c1f251b1315 +1b1f1c162f4a59482d2533444e4124222627332c3a342b272b323837100d +0e11110e0d0f0b0b0b0d0f0f0d0b0f0f10100f0d0b0a0b0d0f0f0d0b0b0c +0a0a0b0c0d0e0f0f0f0f180f1c2711140f151713101315160c363f32221a +1a231e2c37494540422c100f0c0b0c0b0b080607060c18140f151c467aab +b2ad0e0f5f7538365a4d433e2d2e343d41352a34527497abb4b1a69cb6bd +bcb5b39b673f3641322d474a46607c8b95989f9a816a776b592e33373a27 +46422e2023262f3b3e32353d3e413f3a2d3334473362bfacb6aea3bbdde4 +dcd7d7d7b0525d908b2e2e4a312d342a272635312b2a2c27242a3039342c +2e2b282c2d31303538323a5749332019192d4147393ec9e8d6e0f392545a +615b53584a2c2c3a353e302e7d4c413c48484783392a4b44424347484541 +384147433f4148495b69938e4d24241a292d4e47364e584f57555251504e +4b464e392822282c28263849482f547b60635d6c29243445352d3d383029 +2b2d2a232a272128364a6270828ba5ce4e325a6c8e97876d5f6266719ebc +ebfde84a37342b263b493e415e74694028333c2d2228314856547be0eaf5 +93485d29253321332f2d2b2b2d2e2e2d2d2b28262526282d38342698fff8 +fffefefffdf1fac6a08b7a727372727271707272737477797b7c79747173 +1c1b1b1b1a1b1c1d19191918181818171d1f1e1a1a1c18131c1a1717191b +1d1e1c130f131616171a151112151513161c14141312111110110e0f100f +0e1011110b0e141516161a1d2032484d38201f2b483c1d1a222a3833201b +15100d131e29100d0e11110d0c0e0a0d100f0c0d13191211100f0f0f1010 +0d101213110e0e10111314151615161615150f0e17170e100b1219160f0c +0a0f2749573d200f0e110e120f1612111e0f0c0a0a0b1011110e0c0d090b +1c252f3c467b9ab9bf942a2f34202634454b4a413a4e5c534237270b130f +0f0a020000000b120c0614130000002a2f3457574d6a808f9ea7b0b5a488 +8a8c79452f1d2518292d2b2b2a242a3c271c252820191510132429270000 +300000000c377da6acb0aaac8c353073822b3043231b1c0b202531240e0e +22251b1a171b1b1f211a19271f1920323c3e64a68c551f0c0d1c2b2a3134 +a5b7a8b7deb289abbab6b0b2a682676859523a2c6a3b2c20577465a6551c +34322e2d302f2d2b2f33343231312e2b363767835627180d162e53494066 +8fa7b1b8b6b1aaa9b2b5b49c846f645a4a3734404b3a4e56364b6aa9422b +454539264947433b3430251d231f1e22252119181d36789b2920200f0e1d +2b38515b626d95aedffac43c4439313c596c6050566549372f3135312e3d +56809f9690d2cdcda12e5c4f394540422f282728292b2b2a292725232121 +2121241a0ea3ead7eaede4edd6e1f2f6d0d5d7d8d8d8d6d4d0d0d2d2d2d3 +d5d8d9dadbd5d3d50c0b0b0b0c0d0e0f0e0e0e0f0f0f0f0f171918131315 +110c12100d0d0f111314120b070b0e0e0f120d090a0d0d0b0e140c0c0b0a +0b0b0d0e0b0d0e0d0c0d0e0e0a0d0e0d0a08090b0e213a42321e1f2b483a +1b182027352d1a150f08050b16210b08090c0c08070905080b0a07080e14 +0f0e0d0c0c0c0d0d0a0d0f100e0b0b0b0a090a0b0c0e0f0f0e100c0b1616 +0d0f0a0c0b0a0e110d0301192c1e19120f100c100d130f101b0c09070709 +0b0d0d0d0a0b02010f192231407797b6b98a1d2635252a37484e4d453d51 +5f56423626122f3a42443f3e444f819da8a6a38e603b2a463b3247403758 +778da0a8a9a68a6660655e352b202d2029271f1b1a141c362c2625251b17 +181414242a382d53af9dada398a5c6d5c8c5bfc2a54c417f85292c3f211b +1e0f272c3a2d151225281b1a1b1f1f21241a18261e19203440416aa7824c +2113152028273441c0d3bcbbcb78161b26211822210d081e222e2523653c +2f22577261a2531c3636343334332f2b2f33343130302d2a333565825729 +1a0f142b503b1b262a29242528251c151014221808020710110e182e4137 +4c5638496197250a2631362d514a3a2923252a282c2a2d3a475c7c95acb5 +c5bb200b1e1e313e3332414c6276a1b7daeaad23322c293754665a4a505f +4333292e322e2b271d26271d2d97c6dfae2b41281927212c252724252628 +282728262422212124252b2a29c2ffeef6f4edfdeff6fbecaea6aaababab +a9a7a5a5a7a7a9aaacafb2b3b0aaa8aa0d0b0b0b0b0c0d0e0c0c0a0a0a0a +0a0c191d1c1a1a1c18141b1918181a1c1e1f1d16121619191a1d18141518 +1816191f19191817171718191618191817181919121518181615191b1e31 +49503e292b37524526232b32403926211b151218232c120e0f12120e0d0f +0b0e11100d0e141a16151413131314141114161715121212121213141516 +1717161713121c1c1315121618161617140f1631402e211714161115121a +1818261712100e0e0f0c0c0b0b0e09091619191d20516e8d97710d1f372b +36465b615e514656645b4c44382e567193a8b2aea399b1bcbeb6b39d6e47 +34514940544a3a567081929a9fa18b676268653f392f3a2d353129252521 +2b402f272f36312c271d18262e3f345cb6a6b7b0a7b4d7e9dddad4d7b95e +538f94373a4d2e272a1a313641341d1b2e312526272b2b2d2d22202e2623 +2a404c5078b99a612d1917232f324552d3e8d4d6eba04d58625b51575037 +2837353a2e286b41382e637f6fb061284341403f403f3c37393d403f4040 +3f3c484a7a946938291b1f3459482d415259585b5a564e49494a4f3f2d22 +2429241e263a4c425762445776ad3b1d353c3d335c594f413633302c3530 +282c36466073808aa5b033365f6f8f9d846e665f6473a1beeeffca40483d +343d5b7066565e6d514137393d3732332e42555364c5e5f3bf3c543b2833 +30382e2f2d2e2f313130302e2c2a29292b303d3a32c7fff6fffffefff6f7 +f6e3a5928074747472706e6e707071727477797a797371731b1b1a191a1b +1c1a18181717171717161b1c1b19191c191417181918191a1e2120181518 +1713151d1c130f131513151b141514120d0b0b0b13151515191d1e160507 +0f1313161b21211f2c434936221b292612131c222f261112141612111b25 +1a161619191515181e201f19131825321b171514141517191b1e2122201d +1c1e191b1c1c1d1e1e1d161a15242c190f10101215120c0a0a0e29394d2c +150b0d1216170f120d0f1e100e0c0b0c1011100f0b0e0a0a1d2a2f373049 +3c3c4932263d251f302f4c4e3f4444555d4833383412130b070601000000 +061211091214060019536464725e4a5b717e96a3a9b2ab918a8b856c4f19 +2224292d2b2d2b23273c2d2a2f37331f11111c2a31220b09280000000f31 +73a5a9b2abad95442a6e842f41472f1e1e0b2f397d6034191816161d242d +271d272b221b261f1f2b2c2346898c4e180a172e3e3b2a4bb6bdb9bad7c9 +8ca9b6b3aeb1a88c68665d4c3924442b1b213c725a7b6b0b363939352f2e +2b272826272c333a3936404063775225191c27304233355f849bafb9b7af +a7a5b1b6b3a28b7162594a35323743454f47384d34722b305d4e515a6673 +7a6e59504d51322e2f3231271c1c1a337065181b1b090c232a3e5858606f +95b5e3ff8f2e3725222229322f252229272a2c2a2a2c2e3b61869f9b8ebb +d1c9c444555e38363f362c2726272a2c2c2c2a2927252323222221191dc1 +e6d9e9eee8edd4e2e8ffd9d7dcd9d8dad8d3cfd0d1d0cfd0d2d5d7d9ddd7 +d5d70b0b0a0b0c0d0e0f0d0d0e0e0e0e0e0e151716121215120d0d0e0f0e +0d0e121518100d100f0b0d15140b070b0d0b0d13090a0c0c0a09090b1315 +131213151310080e12120d0c0d10100e1e384334221b27241011191f2920 +090a0c0b07060f1b1311111414101013191b1a140e13202d161412111112 +1416181b1e1f1d1a191912111212131414160f1310212b180e11100f0906 +0c110f04030922101010101316150d100c0e1c0e0b09080a0b0d0c0b0508 +0000101e262e2d463b3a42261532252434334f5142484758614b363a351c +2f343a403e3e45507a9ba9a5a18f684649707161614631496a7e9da7a5a5 +936f5f6063564416202426282524241e263f39363234302017181d2a3234 +3c5ea498aea49da1bed5c8c7c0c3ae5e3b7a872d3d432b1e1e0f33408667 +381d1b16141d26312920272c211a251e1f2e2e274c8b804518111f323b38 +2d58d1d9cfc1ca951b19221e161e2015071a262824193f2c1e243c6f5475 +6507363b3d39332d2924272524293034332f39395c735023191a21283a23 +101f1f2022262b2519110f15201b0d02040e0f0b142639424e473a4f366b +1615433d526370746c56413f4d5a3a37383f47587897adb7c58e160f201f +32443134464a607aa3bedbec741424191b1d242b271d1a211f2426242429 +2b242125241b1e73cadfd74738371e212522242625262729292929282624 +23232526282938e2fff0f2f4f0ffeffcf4feb6a6adacabadaba6a4a5a6a5 +a6a7a9acb0b2b2acaaac0c0c0a0a0b0c0d0d0b0b09090909090b171b1c19 +191c1a1516171a19191a1e21231b181b1a1618201f1612161816181e1718 +1918151414151d1f1e1d1f22211c0f14191a17171c20201e2d464f3f2e27 +322f1b1c242a352c1617191915141d261b17171a1a1616191f21201a1419 +26331d1b191818191b1d1f222526242120201a1a1b1b1c1d1d1e171b1728 +311e1416181815121417150f1821361f1714151718181015121627191412 +0f0f0f0e0b0c0f140b08172021251c332625321a0d2e25283f3f60625153 +4e5d64503f474937546a89a4b1aea49aabbbc0b4b19e7552577e81727153 +374762728d989c9f936e595a62594c1f2b2e2f2f29292b252e4637363b45 +45342520212a36384365ac9fb8b0abafd1e9dcdcd5d8c26f4d8a963b4b51 +392a2a1a3e4a8d6f412624201f27323c35292f3127202b2627373a335a9a +965a2417213542433e69e4eee6dbe8bc51565e585154523f283439342d1f +4531252d467a60837315424748443f3b372f2d2a2b323b42413f4b496c81 +5d2e23252b334530223a474f565c5c564b45484b4d4332221f2521192030 +424b5651465b457b2724504556687a8685705951555f453e35353a455f78 +8390a8862c3f647493a582716c5b6274a3c5f0ff93313a2723232b33322a +29302e3234302e32322e3244535459a5ebf4e6564e4a2b2a322d2f2e2d2e +3032323231302e2c2b2b2c313a3943e9fff8fffffffff6fdf0f8b2978375 +7476746f6d6e6f6e6e6f717477797b7573751a1a19191a18191a18171717 +16161614171614121214130d11171c1c1a1a1f241f18171a150e131f2717 +0e1115121218131413100b0a0b0e0a0a0c101a2322151108080d171d1c1a +211c1f3243402c191f2517191f222f26101014191713171d1b1716191917 +181c1f201f1b17192229151413121213141510131617151211100b0d0e0f +0f0e0e0e130f0d0b131207120e111511090a0d12232d4d2c170c10140c10 +0d15110f15020d0c0b0c0f0f0f0d090e0a0a1b262524131e1b1d22212128 +172e1d083225222c232021170f242d121a0c0505030000000010120a1116 +0f0a386a7d889c855a4d646f8b9c9eaab19e8b867d7763242620222b2519 +17181b262230435d683e100b1a232d17202731140000112c6ba2a6b1aeaf +9d5326657e2c3a3b341c251c36365e41271c18161e281e29251925312d24 +1e2123282d2d4573714b2411162a31210f53b3a8b7b2cbde9cacb1b3b2b4 +aa906d656344391b1e1f20313a5f5165803c3640433b312a27241f1a191f +2933393a38465c615143495a3e383a3347738b9dacb1b1aaa6a6b1b5aea4 +8e73615a4b373a352c3a42393934323f39394b2c2331303c4840322b292b +25242a2d281a1212102a6531141916070a26273e5c57647a9fc6e9fc5224 +271d38352b23221f21291e222623212425376b91a4a597a2d1b8c9734f5e +392b382f2b2626272b2d2f2e2b2a2927262524231e162ad5dfe2e6eae9e4 +d9dde4ffe2d0dcd8d8dbd9d4d0d3d1d0ceced0d4d7daddd7d4d70c0c0b0b +0c0c0e0f0d0d0d0d0f0f0f0f1314120d0d0f0c06070d10100c0c11181712 +11140f080d192111080b0f0c0c1008090b0a090a0e110d0d0a0a0f15110a +181611111517110c130e13273d3e2c191d221416191c271e0505090d0b07 +091114100f12121011151819181410121b24100f0e0d0d0e0f100b0e1112 +100d0c0b04030203030404040c08080812110813110f0a060c11120a0000 +230f121113150c0e0d15100e15020b0b080a0a0b0907000500000e1b1c1e +121e1c1c1a130f1a1532200a352826302825261c1328301c3736383f4242 +47517097a9a39f91715469878a858a6b413b5d7194a39b9f997f65626265 +5a232723262f291f21262d3a323c465c664118121b232e29517caeaeaca3 +a09cb6d2c5c7c4c5b66d3771812a3637301c25203a3d65482b201b161d26 +1e2c251924302b221d20232b2f314b75654224181e2e2e1e1060cec7d0be +c2ae2d1c1d1e1a21221709172a1e2210192025363959495a75363440463e +3128211c191410161f272d2e2c3b51594b3e4657362e3021223329221f21 +252018120f141b1c1101010c100d1c21223741393c3b4049332c3c262d43 +3e423a27181a29342b282a303443678da5b4bf5f1b15252632472e324849 +6687afcfdfe7340714112e2f24191814161e131a1e1d1b1e221d262a2621 +1c52c7d3e37b3237251e221e252625262a2c2c2b2a292826262527272627 +46f6fef9ededf1f6f7fbf4febf9facababaeaca7a5a8a6a5a5a5a7abb0b3 +b2aca9ac0c0c0b0b0c0c0c0d0b0b0b0b0909090b141917131416140e1218 +1e1e1b1b2026241e1d201b1419252d1d14171b18181d161718161414171a +161615161d2421181e19181a20231f1b221d213549493623282d1f212528 +342b1313171b1915181d1c1716191917181c1f201f1b1719222a17161514 +1415161712151819171413120c0c0c0d0d0d0d0d14100f0f18170d18181a +18141519181514173921191518190c0f0d1716161f0c16130f0f0e0c090b +11180f0a17211f1e101c171818120d1916352916443732392c2829201c34 +4337596887a2b4b2a69ca2b5beb1ada07e6178979b989a78473b55648393 +9299997c5a5459615b282c2829302a1f22272f3b2f3c4f6c7b54251a1f23 +322d5883b4b6b6b1aeaac9e6daded9daca7e4981903844453e28312b4345 +6d503429221e253128352f212a35302722262b343b3c57847b57301e2031 +35292271e1dbe6d6dfd462595958555754422b313d2b2c161f252b3c4163 +546883423f4a4f473d352f271d16131b2731393a3a495f6455454d5e4139 +3b2f344e5051535656514a46484a474233221c22221b282c2a3e49414545 +49523d35432a2e4547525344332d333b37312a29283350707f90a65c3547 +6a7994a87f706d586580aed8f7ff56252a1f37332b222322262e23292b29 +252829283948555a5b87e9e6f088484a30272e282f2e2d2e323435343231 +302e2e2d2e32393952fdfffffdfefffffffbf1fabd918474747775706e71 +6f6e6d6d6f73777a7b7572751a1919191918191a18171717171616161a1a +17110f110d070d161e1e1919202619141518130c1423311d0f1215121014 +0f10100d0c0e12180f100e111d252111080306080e1216191b2022242f3a +33211b231a19181f37362b241b1c1d1b1f23120c0a0c0d0c0e13080b0e10 +0f0c09080a0a0a0a0a090909090c0f100e0b0a090e101010100f0f0f0b09 +18050d2006110a1217140d0c101728335d3c240f080810130d1512111b09 +0e0c0b0d0d0e0d0b070f0b08171e16101914181b0f271c1922261e1e2f38 +785a1e0a070a0e26341d2d180a0603000000000e10060d1818183c596d8c +b8ac6e445a66899c99a4afa380847c76764d4b2b3d49391b172021222c32 +2e455d3b1018282a2f091a20190200000c22649ea3afb0ada25e26627826 +24262e16272e39299759271d1f23231d1d27231a1a181b262029251f2128 +354c453f2f1f2136371c1269bea5bbb1c4eea3abafb9bebdae926b60633f +3b1f0f272734483d3540422a3644493f312823202a2219151a202830353b +31262e342f2d292f40414e7089a3a8acaba9a7a9afb1ada793715d564b39 +3735263229192a171f0537282b3031453634332f3131281c1e1b2329251a +141905235c0a0f12130a0726223c5b566b89acd7f0ff312e35362c3e4237 +2d24212a2324272a2c2b30467295a2a79387c9a6bb92424d392b37382924 +25272c2f31312d2b2b2928282725231b3be7e3f0e8e6e5d9e1dae8ffe5c3 +d7d4d5dcdcd6d5d8d5d1ceced0d4d9dcdad5d2d40c0b0b0b0b0c0e0f0d0d +0d0d0e0f0f0e1615120c0a0a0600030c12120d0b121a110e0f120d060e1d +2b17090c0f0c0a0e07080a0a0a0e151b12100c0b121913090f110f0f0e0f +0e0e1015171c2c3833241b211211171c2b24140f111615100e1208050305 +0605070c0104070908050201050505050504040404070a0b090605040706 +060604050505040213000a1d05100a0f0f0e1013130d070836201a100b09 +10110d1511101a080b09080808080704000600000b140f0b16131718081c +0b0d222c2122323b7b5e230f0c0f132a37294c464244443f3e466893a8a4 +9f93755b67737688a8985e3956668a9a9299a08f656762626844462c4353 +482e2d3a3d3a38383249603e181f27282d1a517d9aa1ada5a49ab3d1c1c8 +cbcabd753367792320232c1629313d309b5d2b202223221c1e28241b1918 +19241f28261f242b394b3a342b1f213433191779d9c2d5c2c6cb42251b1d +1e24241907122c1b27150d26263345372b353722303e463c2b2018141b11 +0a090e131b20252a2018222d2d2b24253326212922271e1c1b1917151213 +14191102000d120f19211b2d281c2d1e2e10341e202b3b54453a2a1d1b20 +221f2524293033416a9293a5b13a1e1824262e452a334c4b6f94b7d9e0e1 +0d0b1d2825393b2d2118151e18191c22222126242025272b233ebcb9ce98 +2a322f252b2c262725272b2e2e2e2a2a2828272727272a2a52fffefff1ed +f1ebfcf3f4fdc597adabaaafada7a6aba8a6a5a5a7abb0b3b0aba8aa0c0b +0b0b0b0c0c0d0b0b0b0b0909090c171b181210120e080e171e201b1a2128 +1e1a1b1e19121a29372315181b18161a1413161315161e221b1817152025 +221415141617181a1b1c1e23252937433d2d272e1f1e1f253730241e1c22 +22202022110c0a0c0d0c0e13080b0e100f0c09080b0b0c0b0c0a0b0a0b0d +1111100c0c0a0f0e0f0e0e0e0e0e0c0a1a0711240b18121a1c1817191816 +181c492f2315100e12140f171616221014100f0e0e0c090b0f191009151c +16111d191d1f0f22110f222c282d414c8a6929130f121933463f6b788fa7 +b8b2a2939bb2bdb0aea2866b77828799b5a161354d5a7c8e8a959d885455 +555965454a304352452a2a373e3a36383b55735125272c2b32215884a0a7 +b5aeafa8c4e6d9dededcd087467b8d342e2e3920353a4638a4663429292b +2a24232d291f1e1a1c29242d2b272d3444594b453929293f412a2a89ead2 +e6d6ddec7560595c5c5d57442b2c4129301d122c2c3b4e41364345313e4c +5147372d262022170f0d121a242b323a30252c35322e2a2e3d3738494d59 +514f4c4a48474746424137221b21231d252a23332e21342435163d27282f +3d574c463d3330322c262f2b2728262e4f6f6b839e3e3d4c6a798ba0756a +6d596e8eb9e6fbff312b33372d3f42362d24232c26272a2d2d2a2f323749 +555f5b6cdacadda840453a2f37382f2e2d2f33363737333231302f2f2f33 +3c3d60fffffffffdfff9fff7f4fdc88c87757578756f6e72716f6f6f7175 +787b76716e701c1d1d1c1a191b1b1b1b1b19191818171a1a19150f0d0d0e +0b1b1f1b1c1c1c222316111417151519240f0f1c18101214131514120f0e +1216130f0e121a1c19100410171212181a17262418232925343316142329 +150c284f3b391e0f12182026140c0b0e0e0b0c0f0a0a0a0a0a0a0a0a0909 +090a0a0b0b0b090a0c0d0d0c0a090b0b0b0b0d0b0b0b120b0e120f141912 +161615120f0f131a20385b3c240d0e1811121211100f0d0c0c0c0c0c0c0d +0d0b0a0a0b0b0f17181616141518191b1d1b1d2e2822335779713212070e +192f341436220e0403020200001a06060e1d0a194856748996ac8b3f4b5d +7e9daaa6a3ad8c78747c796a50302626313a33221a242d2c34496d412819 +2b292514001e1503000000155e9bacaca8ac9273227289211d151d282d32 +33289964301c1a234161262223211d1213181a1d20211f1e1e2121242626 +25232220127cc4acabb9b6debb89b4bcc6bfa3906f5953492c18191b2123 +232223222325252324282f2f2926302b231e1717212f2b2c2b2a28272424 +1c293049577e93a6a8b0b5adb2b4a4acb3b1a37b5955473d433d32272326 +221f331e3131313c2f33463b2f27272a302d201c1615201b0d0f1e3b5b00 +0c13151c1e241e404b647391c1d1ffc73836302c2d383d30252729252c1f +27292d34345785ad9593a1698ec1b3c54a3c4b1d2c7c46201b2c2f333930 +283b6d3529302625271174e5a1c8e8e7e1dde9e1fcb546a2c6d9d9cfd5da +d5d0d4d2d0d1d3d6dbddd6d6d5d40c0d0d0c0a0b0d101010100f0f0e0e0f +1114130f0903030401111511121010181d130e1114121216210c0c19150d +0f110d10110f0c0d1115120e0b0f1417110d07141a151216181423211521 +272534351c1310191a10172b0a13191819140d0e080706090906070a0505 +050505050505040404050506060604050708080705040405040503040404 +0b04070b090e130c0e0e0f111313110d0414361d12060d18100f0f0e0e0d +0b0a07070705050303040204040408101311111112121313131621372d29 +385c7b7436170b121d3338225b57504945433f415f9ca5aea6985c4c6864 +76838ca38a3f49546d889597a0a97c61585f5c503d272a364a5953423836 +28263d5873442e1c241e1b253f8b9faaa3b6a699b5cfcac6cdd4b285246c +821d1c151d2b3035362d9c67331f1d264162272223211d121318191c1f20 +1f1e1e1e15171a1919191c201d8fe0cac6cfc6d078191f10171916180b0d +1d2a211716161516171a1b1c1a1a181413171e211d14110a090a0c0e161f +16131212151b21251e251c22172724271e1e1f161b1e11150f151c0e0514 +141725282521222a2b24301623232432303b4f4432241d1d20262b312c2c +384b6987a0aa9e202422212d3a3f283f4661799ac1c5e49c090d131c2737 +38261717191720131b1d2024202821331d2a4f337cc2b4c442384e232b7b +49241e2f2f31362d25386732262d23252d1c84f8b7dbfaf7f1ebf7eafbaa +3185a5b5b0a2a2a6a19da5a4a7a7aaabadb0adadacab0c0d0d0c0a0a0c0e +0e0e0e0d0d0c0c0d141817130d0b0b0c0a1a1e1c1d1c1c23291e191c1f1d +1d212c17172420181a1c17171a161513191b1a1414161e1e1c160e1d231e +1c21231f2e2c202c322f3e41282123261e131f371d221f1d23232324140d +0c0f0f0c0d100b0b0b0b0b0b0b0b0a080a090b0a0c0a0a090d0c0e0b0b08 +0b090b090b0b0b0b130c0f1313181d1619191917161614141022472c1e0e +1520181816151312100f0b0b0b0c0c0b0b0c0d0e0c0c0f171918181a1b1c +1d1e1c1c203431334b709085411d0e131e343b2f788b9eaebdbbaa9697be +bab9b4a87261756f838d94a485353d4b668392949ba06c4f4c5758513f2a +2b354754504138382c2a425f83553a252b26242f4690a9b2a5b8aba5c8e7 +e4dddde0c1993d88a1342a1d2732393c3d33a36e3a26242d496729222321 +1d12131a1e212526272628271f21282b2f323638319eebd4d1ddd6eaa351 +61585c594b4531293439291d1d1d1f202325282a2b2b2a2725272e2e2720 +231b161310111e2a27292828282728271d2627373952575c524f4d43484b +3d424144452e1f2a252631312c25272d2a27392130302e3b353e5449392d +28272a2e3134292228314059748a97324a5b697d8d8c65695d687799cbdd +ffc7332f2929313d3f31242426242c1d25272a2e2b3a435c4a55775394d4 +c6d657495d2f3989522d2738393c41383043733d31382e313d2e94ffc4e9 +fffffef6fff1ffb0387f82837c6b696c67646f707375767879796f6d6c6b +1c1d1d1c1a1a1b1d1b1b1a1a191818181b1b1b17120e0e0f0d1d201b1d1d +1d242019171816111217190e141f1a14151310161b1c17120f0e15121114 +191b1915141515181e24221c413922222323393e1c19272d1910294a5f40 +1e130b102528150c0a0d0d0b0b0e0a0a0a0a0a0a0a0a0909090a0a0b0b0b +090a0c0d0d0c0a090b0b0b0b0b0b0b0b0c0c161a12131918191815110f11 +151c242f4d332b1b131111121211100e0f0e0d0d0d0c0e0d0d0b0a0b0a0a +0e1518151616161718181917192d2b2b354c6a6543251717182322041508 +000000030a04001800000a1d090d4c5a74828ca49255485a809fada79ca0 +927b778281785723191c2a39382921293b3b3432513c30272e2d2b18001a +11000000000f5693a8a898a1a28c2d546f1819141a1c14171f1e1f0e0915 +20222835291c120e0f0e121817181918151312141a1b1c1b1b1a18150f8b +c2b3b0b9b1d0bd81afc1c8c0a793725d554b2d191b1e252624211f1f2022 +2726282c302e26242f2d2319161b2229292b2c2b2a272323212c34546890 +9dab9eb6b4a7a5a5a9b1ada8a1825c4b4b2b3a3830272426241f2a253430 +354837242c26211e232b3738282316101916070c2d4c4c000609111f2d2b +2c4a495c7195c2e4ff942b3c3322242b2f2a292f2f2725222f30353a365b +91a0938ea18080cfc3d16d3d4a25377c522c2029292b332e33517d4a292c +273529278b612984e1dfe9deeef0fb795b95d0cfd4dee3e3e0dcd6d3d0d0 +d3d5dadbd9d6d5d40c0d0d0c0a0a0d0f10100f0f0f0e0e0e1212120e0905 +0405031316111313131c1a161415130e0f14160b111c171112100d131819 +140f0c0b120f0e1116181614141515181e24221c41392222232339402418 +121b2119161e200d151e1512111009070508080606090505050505050505 +04040405050606060405070808070504050505050505040405050f130a0b +110e0d0e10121312110d0a0f2913150f10110f0f0f0e0d0c0a0907070706 +04030304030605050910131010101011121213141d3632313a516c684629 +1b1b1c2726123a3f4343413f40475d98a4aba89c5b3d6663737d86a3995d +4850648091959da38b6a5f645f583e1718273f53503e302c2a2e3f45593f +362a2721202c4691a1a7abbbaa9cb1c9c6c0bfcbc39e2a4968151b171d1f +171a222122110c1823252b36291c120e0f0e121816171817141211111110 +0f0d0c0d14191ca1ddcec8cfc2ca8b201d111013181b0c0e1e2b21161612 +1112141719191717151311151b1e1b120c0704050a12191c14121011141b +2024272b1c241b2c26251124211414171d1e090a1c160c101f091e232321 +2227261f2015241e253a2d1f2d29221c181a1d24262e292731446281a2ac +821b211d1b2a403e314a465d7a9bc0d4e666001016101c25231a14181b15 +1816242324241c21211c20305e5267c2bbce6e40502b3d825933242c292b +302b2d4b7744232924352f3396713a97f7f2fbecf4f0f56e4a80b5afacb1 +b0adaaa8a4a5a6a6a7aaaaaeadadacab0c0d0d0c0a0a0c0e0e0e0d0d0d0c +0c0d151717130e0a0c0d0c1c1f1a1e1e1e2726211f201e191a1f21161c27 +221c1d19161a1f201b161312191615181d1f1d1a1e1f1f22282e2c264b43 +2c2c2d2d434c2f26252923161c2b331e1a201e1f2a28150d0b0e0e0c0c0f +0b0b0b0b0b0b0b0b08080809090a0a0a08090b0c0c0b0908090909090909 +0b0b0d0d171b15161c191919171616141212131a3720221919191c1a1a15 +14110e0d09090b0a0c0b0c0c0a0c0b0b0f161a171a1a1a1b1e1e1f1d1e35 +383f4e67837b55321e1a1b28271d577592aabbbbad9e99bbb7b4b4ab7151 +736c7b848aa191503e47617e909397987958535c5d59421b1d2940545243 +37353235434b665042332f2b2e374e97acb0afbcaea5c4e3e2d8ced7d2b2 +47698930281e24261e2129282918131f2a2c323b291a100e0f0e141a1b1d +1e1f1c1a19181414191e23292f322fafe8d7d4ddd4e4b1535e5a5a554e48 +332d353a2b1d1d1c1c1d1f22252728282b2725272a29231e221e140e0e13 +1e262528292a292927262329293e4560606046554e3e3d3f444a3c3b4738 +272430172a2c2a25252925212922312c32473626322e26212024282f3134 +271d2128364d769184354c5863798d8368705962779bcdeeff9425332c1e +272f2f272328272122202c2c2e302939494b4b557d6e7dd6d0e18253603b +4d90633b2d3533353b36395783502f342f413f43a8814aa6fffffff7fffa +ff76547b9780797a77716e6e6f73747676777977706b6c691c1d1d1c1a1a +1b1d1b1a1a1a181818181a1817130f0c0c0d0e1d1f1a1d1e20281d1c1e1e +1a16192022131015181f20141b212829251f1b1a191918191b1d1f20271b +141c292c251e2b2b1d21211d2e2f2a2022271b16253b7146251d0d143239 +140b090b0c0a0a0c0a0a0a0a0a0a0a0a0909090a0a0b0b0b090a0b0c0c0b +0a090b0b0b0b0b0b0b0b070d1d211411181a191815110f11151c26304c31 +2b1d140f11121211100e0f0e0d0d0d0c0e0d0d0b0a0b0a0a0e1517151616 +161616161615324544454142524e5e4739342e2f2d170f08060402020903 +00130000091f0c023d536e7b80978f6444527497aaa79c9c9b797178787d +5c1a11142435392f2a2e272b1e0b1f1f1b1823242315001a10000002000d +4e91afb2b0a5a3933e486e23181214140d1118151816191e1e170f0e1917 +151f201e14101919181612101012171918151516171618adbeb8b3bdb7d0 +ca80a8c3c1bcac997a645b4e33201f212324221f1d1c1d1f2627272a2c29 +20202b2c201618252a26262a2a2b2a282725262c30526e9da9b2aab7a7b6 +b69aa2a9baaca47f544a8b6b30302e2b2b2c2b27472c2a2a374d43322324 +26282c323c44403c2b1c1f190b0f2b4d28000809112a251f33554f6487ad +c4edff602f3d2f25252a2a293138352926262e29313e436faca79d889487 +61ccc4c78d3649374a724c2f262e313238373955724e263028392726b049 +346ad9dfe5e1eef3fc52868fd2c8ced4cfd5e2dcd7d3d1cfd1d3d8d8dad7 +d6d40c0d0d0c0a0a0d0f100f0f0f0e0e0e0e1112110d0906050607161813 +151618221a1a1c1c1814171e20110e13161d1e131a202728241e1a191818 +17181a1c1e1f271b141c292c251e2b2b1d21211d2e312e1e141b251f1413 +320d101e161824260a060406070505070505050505050505040404050506 +0606040506070706050405050505050504040006161a0c0910100d0e1012 +1312110d0c1028111511110f0f0f0f0e0d0c0a0907070706040303040306 +0505091012101010101010101012354a484843445451604a3c3832323024 +30394345403c3d455b95a4a9ada8673a595c6d747b97996e464758758c94 +999e987060615c60450a0a14283939281b1b11202b1e2622211c1d1c1f2c +48939fa0a3afa497adcbcdc6cfc6c0a640436e251a15171710141b181b19 +1c21211a120f1815131c1d1b110d161615130f0d0d0f1616120e0d0f161b +25bed4cdc4c9bec59c2719170b0f1b1e100f1d281f15120f0d0e10131516 +1514171414181c1d1b140e0b06030c1c211b15141415191e22252b28151d +1b3027231b2b233636181b1a211625170510624f1b2123222223221d3d22 +1c1823392f221619191817161a1f202724212b3f5e7b98a55716231f2235 +30232e4d486390b6c4e1e637051a1a151316120e121c1a131419221c1f26 +2733351f2c2c4d523db9bbc68b3344324c76503329313132353436526f4b +232e263b2e32bb59457deff2f7eff4f3f647767ab7a7a8a99ca1aca8a5a5 +a5a5a5a8a8abadaeadab0c0d0d0c0a0a0c0e0e0d0d0d0c0c0c0d14161511 +0d0a0c0d0f1e201b2021232c25252727231f22292b1c191e2128291b2226 +2d2e2a24201f1e1e1d1e2022242531251e2633362f283535272b2b27383d +3a2c2527261c1a1e452019231d243b3a150c0a0c0d0b0b0d0b0b0b0b0b0b +0b0b08080809090a0a0a08090a0b0b0a09080909090909090b0b080e1e22 +17141b1b1919171616141212151b361e221b1a171c1a1a1514110e0d0909 +0b0a0c0b0c0c0a0c0b0b0f1619171a1a1a1a1c1c1c1b3a5054595a5d6b64 +6f53413b35373734517194adb9b7aa9b95b5b4aeb6b279496463757c7f97 +91653b4155748a909091875f565b5b644d14121e334445382e2e1d283125 +36332f2829292e3a539cadaeadb6aaa1bfe3e9dfe1d5ceb759618a3c271c +1e1e171b221f22202328282119141d1a1823242218141f1f1e1e1a181816 +110f12151a21282e35cee2ded8e3dbe7c157595f5551524c382e34372a1d +1c1b191a1c1f222424242a2727282927211e201e13090e1d242325292b2a +2b2928272729243b47676561535c4b59593c43465046503a2226725b2428 +292727282725462d29262f453b2d1f2122222022283035382b1d1f26344a +6f8d5d34505b6a847f6a66745a688db5d0f9ff612b382b201f22201d222b +292020232c262b34364d5f4f57516d7057cfd0d8a04858465b825b3c323a +3b3c403f415d7a562e3931473e42cd69558cfdfffffafffdff4f80759a7c +77746367706e7073747574757774726e6f6b1c1d1d1c1a1a1b1d1a1a1a19 +181817161714130f0d0b0c0b101e211b1f20242d232222201e1c20231f23 +2d2a2124281c222529282726292b2322231f1e1e242739261b242f2c231e +1a221d262823302e3d2a1d1a171924326d5c361a0d112a3d130b07090b0a +090b0a0a0a0a0a0a0a0a0909090a0a0b0b0b090a0b0b0b0b0a090b0b0b0b +0b0b0b0b070c1b1f13111819191815110f11151c23375937241311131112 +11110f0e0e0d0d0d0d0c0e0d0d0b0b0b0b0a0e1517151616151515151512 +2d3935372e1f25203f342d2b28282a221b120c0704040500000f01000721 +16082446677476857e60454c658aa3a89f9ca27d6e6b6a79611b16121a27 +2f2d303422231a07141a0f1415191c0f00201607050b02094187b3b9b5a9 +a08f413361231f141112121a1a0c20201c14101214151b1e171e161c181d +191a191613131516171719181717181832d1bebcb5bebed1d4849ec5c0bb +b2a0846b5e53372525242323211f1c1d1c1e2728292b29272121292d2119 +22333428252627292a2b2b294f4b436283b8c7cbc5af90ccdb9c9da4ad9e +a17e555adaca2c2d2f2e2f33383799542d303637383f35383b3a393b434c +52563f2b261f0e112e4e0d030e07122e3d294760546286a6c6e9ef424236 +232c2a2d2e2f3439342b292e332b38454a7cc3c5a97f7c7750bdc9bca432 +43434e523b2f303d45413e3c424e52472e443139372f9d3e485ed6e4dae8 +ebeef452948fcfcbd9d9c9d8ecded8d4d1cfd0d2d6d6dddad8d60c0d0d0c +0a0a0d0f0f0f0f0e0e0e0d0e110f0d0a0706050609191a16171a1c272122 +20201c1c1e231d232b2a1f24261c212628292627282c222322201d1f2328 +39261b242f2c231e1a221d262823302e3b261517211f150c2e1d120d1118 +21300b060204060504060505050505050505040404050506060604050606 +060605040505050505050404000514180b09100f0d0e10121312100d0917 +35170e070e130f0f0e0e0c0c090807070706040303040406060509101210 +10100f0f0f0f0f0f303d3839302127234137302e2b2a2c2d373f4446403c +393f5890a9a9b0b07c48414d646d7185876b48434c688491999da077645c +5664500f1010182320150f140a19271a1a1b151813151b2c4d9aa5a09ca4 +9f96a8c9d1c9cbc3baa24733652823171415151d1d0f23231f1713151715 +1a1b141b1319151a161715120f0f11151c1d1a1614151a2040e3d1cdc1c5 +bec1aa31171e0c0e1f2216101a241d140f0c0b0d0f121415141316161719 +1c1d1c171211090614292b1f1918181a1e2124275145282b2a4036322f27 +195f6e291915191227180923b6b51f24262522222326924e211b1b18171d +15191b1813101215111b1d1b263b58728d9b31172521263b3c1f36504760 +8cb0c9e0d41c1a15111f16151210151d1c171921261b21282739453b3a27 +323e23a1c1bda12a34354b563f333340453f3b393f4b50452e44343d3e38 +a84e5971ecf7ecf6f1eeee47847cb5abb4b098a4b8aaa6a6a5a5a4a7a7a9 +b0b1aead0c0d0d0c0a0a0c0e0d0d0d0c0c0c0b0c1313110e0b0a0c0c1120 +221d222427312c2c2b2a2726292d282d36342a2e3124292b2e2e2c2c2e31 +282828252324292d4330252e39362d28242c2730322d3a3849342420221f +1a17413220171a223442160c080a0c0b0a0c0b0b0b0b0b0b0b0b08080809 +090a0a0a08090a0a0a0a09080909090909090b0b080d1c2016141b1a1919 +171716141412122243261b11171b1c1a191513110d0c09090b0a0c0b0c0c +0b0c0c0b0f1619171a1a19191b1b1b1a3949494e473a3e364e4035333236 +39435e7a99b0bcb7a69690b0b6adb5b6885449536b7577878263413c4867 +818b8d8d916b5b5757695a191c1d2632332b2a2b18222d212a2d23242024 +2d3c58a5b5b2adb2a89fb9dfede3e0d4c9b35d4b7e3c2e1e1b1c1c242416 +2a2a261e1a1c1e1d22241f261e242025212223201d1d1f1b161315191b20 +262b4befdfdfd9e1e0e5ce5d5263535056513d3133362a1e1c1918191b1c +1f222121282627272625221f2220160c14282c2425292b2d2c2c2b285049 +394b5a7d7b756c593f7f8d4a41434b41503d2538c4be26292b2a292a2c30 +9a582d2a2a28282e24282a282221252c31392d1e1e2533476b893d38575e +6f8a8a666d755b658aafd2f5f5413d30212922222120252c2a23242b3028 +313a3b58746e654d555e40bad6cfb6414b4c5c624a3c3c494f4a46444a56 +5b50384e3d484e49ba5e6980fafffafffdf8f84f8e789a82877c606a7e70 +71747475737473727573726f1c1d1d1c1a1a1b1d1a1a191918171716140f +0e090a080a08101d221b212127302d26231d212326230f2e524a2d1f2622 +1f20252322202527272627201e1c2328392b242a2e28232323291f24282b +3c3d4b371b0f101925325977511b0a040c29150d07090c0b0a0b0b0b0b0b +0b0b0b0b0a0a0a0b0b0c0c0c0a0b0b0b0b0b0b0a0d0d0d0d0d0d0d0d0f0d +151913151a16191815110f11151c20375a3622120f11101111100f0d0e0d +0d0d0d0c0e0d0d0b0b0c0b0a0e1516141515151515141412181d18201d11 +160f1514131518181f241d10030002060700000b07000016190e133d5c68 +6b7470614f4e5e7d99a29c9aa0837468626e5619161013202a2b3034271b +140e1d270d1616191911012c1d0d181c0b072e73a9b4adc0b5a04b204b20 +241d17110f1a221a11181b18181d1f1d1a27232c161d1218181817141211 +13130d0e13131513121154edcbcac2c2bfc7d98e97c5c0beb3a38a705f53 +3827292627242320201e202124282c2c28231e202527201d293c3a2a2122 +2224262b2d2c675d4e698dc6d9ddd2ab7ab1ca99a5afa69ea7886356b798 +2a292c2f333b474b94532d3742424b4e46494a4744444b58656e54382d20 +0e103852081010030a27473054645e6e8daccdedd22b3c271823282e3130 +3032302c2c363c36474a4b84c2d7a17e7c795993d4c3c55540474c3d403e +40484e453b3b4a4b45473c503e413860872a3469e3d8daebe8eed75279b3 +ddc4ccdcd4d9e3d6d8d4d1cfd0d1d6d6dfdbdad80c0d0d0c0a0a0d0f0f0f +0e0e0e0d0d0e100d0907050605060b1a1d181b1e212d2d29232021262626 +0f31524d2d2226251f2326262323262a282928231f1f2429392b242a2e28 +232323291f24282b3c3b44311d161b1f1a111c311a00090d0a230e060002 +050403040404040404040404040404050506060604050505050505040404 +04040404030305030b0f090b100c0d0e10121312100d061735160c060c11 +0e0e0e0d0c0b09080707070604030304040706050910110f0f0f0f0f0f0e +0e0e171e19201d111710171716181a1a202d35373a3c3d3d3b3f558cafaa +b0ae8a573242596166757a6e5447445b788a93999e806d5e586551171814 +151c1b110e121014211f2026101a15181e3257a6aa9b9aa0a39aa2c2cbbf +b9cfcbb356275329281e1812101b231b12191c19191e201d18231f281219 +0e14141413100e0d0f13151819171616191c63fedddacdc8bfb8b4411622 +0f1120231a11151e18120f0c0d0f12141616161512131517181817161311 +0b0a1b3130211a1a1a1c1e212426675733302a4137353526145b7030201d +181930241721998b252927241f1f25318f522121201517170c0f100c0604 +0707000c12121e334e648b8f211c271f24343a17374a4b6793b6d1e4b806 +14070616181a1b18181c1e1f202a2e242a271d373e4a382a32392371ccc6 +c247262f48434442424a4e43373748494549405445473f689237437cf9eb +ecf9eeeed14869a0c7a8a9b4a5a6afa3a6a6a5a5a4a6a7a9b2b1b0ae0c0d +0d0c0a0a0c0e0d0d0c0c0c0b0b0c11100d0a09090b0b1221241f25272b36 +37322d292b2f302f193a5c56372b302c27282b2b28282b2f2d2e2d282424 +292e43352e3438322d2d2d33292e32354646543f291c1d1f1e1a2e492f0b +11161831160d07090c0b0a0b0b0b0b0b0b0b0b0b08080809090a0a0a0809 +0909090909080909090909090b0b0e0c141814161b171919171716141414 +11244625191015191b19191413100d0c09090b0a0c0b0c0c0b0d0c0b0f16 +1816191919191b1a1a1c27302e3837292c2224201b1f2629354c637894ac +bbbba9978eacbcacb0b1925e374660696d7979674e414359738082879177 +675d596a58222420222d302a292b201c27272f361f262328324564b3bbb1 +b2b5aea1afd3e6dbd1e2d9c2683a663831231d1715202820171e211e1e23 +252525322e3721281c222222221e1c1b1d1d1717191a1b1d21226affe7e9 +dfe0dbd7d56b4f655553575342312e30251b1c191a181c1e212121212222 +252623201e1e1f1d140e1a2f31262227292b2b2a2928675b445160838382 +785b39768c514d4e4a485a483335a592292b2b2a2a2d353e965a2b2e312a +2d2e242726221d1c202729352d1d1b202c406f8735425b606f83895b6f71 +5f6e91b5daf7d528361f141f2223272525282a292c363b343e3d375b707e +614e555b438ce1d9d7604149594f4f4d4e565a504545555651554b5f4f53 +517ba448568dfff9fafffaf8db50739caf817f836f6d756a717474757373 +7372797576721c1d1d1c1a1a1b1d1919191917171715130e0a0808080808 +0d1d211d222428312c282627303b3f3d262e3a3629292c23292d32312c26 +23232424231f1b1b1f2327242428282626292c35303a4346534d4e3e200e +0e192736417c6f36180b0c24170e07090c0c0b0b0b0b0b0b0b0b0b0b0a0a +0a0b0b0c0c0c0a0a0a0a0a0a0a0a0d0d0d0d0d0d0d0d130b0e1210161a13 +1a1815110f11151c1e315030261a1109101111100f0d0d0c0d0d0d0c0e0d +0d0b0c0c0b0a0e1416131515151515151513191e161d1e171d1310151316 +1c18202f221102000004070000060a000009150d11374d545b65696b5a52 +5c758e979393938571615c5a390b09030817232325262612080d273d1215 +18191b1409321b021a1d0d051d63a5b6b7c68e885328412a1c1d1d140f26 +424923262723201f1d1a30392a361f2d1b1c1d1d1c19151212110a0c1113 +1312121175f1dcdbd7ccc3bedd9e94bfc0bfb1a692715c4e36282a282625 +232222222427252c323129221e1e211f1c202f3e38281f1d1c1f22282e2f +4b4841648fd0eaf2dfbe7b7a8b8aacb4aea9a68870526b4027262b303741 +525a4f3c304156656d5655575858575b6170858e6d473524121237410916 +1107132c443962666c829ec0dffbb4263029241e2c313635322f2f313036 +352d3d4659b0bbce8e77857d6564c7c0d58a434b534a464b46454c464149 +4a4d4b4f44454148348882403b8ff0e3dfe2e4f9b4576aeaffcfb8ced5cd +d3d9d9d5d2d0d1d2d7d7dedbd9d80c0d0d0c0a0a0d0f0e0e0e0e0d0d0d0d +0f0c0806060606060a1a1e1a1f2125302c2b292a333e424029313d392c2c +2f262c3035342f292626272726221e1e222627242428282626292c35303a +4346534a43382b1d191d1e18063226020e120e2212070002050504040404 +040404040404040404050506060604040404040404040404040404040303 +09010408060c10090c0e0f121312100d04112b10100e0e090e0e0e0d0c0b +0807070707060403030405070605090f110e0f0f0f0f0f0f0f0f181f171d +1e171e15131816191e1b20373c3c3a3b3e3f3c3e5585b0a9aca48c5c303c +4a4f58687577604d42536d7f8b9090826d5d5a5b40181a14141d1f160d0f +160c151c273914191a1c22375faaa3868b95a5a0a1bfcdc1bdcc9e9a6034 +4f34201e1e151027434a2427282421201e1a2c3526321b29171819191815 +110f0f11101415151617191c87fff1eee5d5c6b5bf5a171f11151c241d10 +10171411100e0f111317181816150e1113120f0c0d0e0d0b070d1f302e22 +1a1a19191a1e22264b412628263e383b3b3b21313c26221b1f252c22211d +513a2b2c29231d1c293b493c2425262624050002030100020606000e1612 +1c30495b7c73191d26222e372e123a425578a2c9dfee9100000008061217 +1a1918191f25282e2a1c24222c6436442d2d3f3d2c3fc4c9d37a202d4f50 +4c4f48474c443d47484d4d534b4e4b523b8f8a4d4aa0fff6f1f0ecfcb14d +5ad8fbb798a8a79ca0a6a7a7a6a6a5a7a8aab1b1aeae0c0d0d0c0a0a0c0e +0c0c0c0c0b0b0b0b100f0b0909090b0b11212521282a2e38363432333c47 +4b49323a46423535382d33353a39342e2b2b2c2c2b272323272b312e2e32 +32303033363f3a444d505d55534631201b1e2120184b4118191a1a2d190e +07090c0c0b0b0b0b0b0b0b0b0b0b08080809090a0a0a0808080808080808 +0909090909090b0b120a0d1111171b1419191917161614140f1e3c1f1d18 +17131b19191413100c0b09090b0a0c0b0c0c0c0d0c0b0f15181519191919 +1b1b1b1d2a332c35362f32241c1f1b202b2e3a5c6f8199adbfbfae9890a8 +c0adaea89463354051565f6d75755c4941516873787d877d6a5c5d604620 +221c202b3028252323161b2333482024272b354b6cb8b39da9aeb0a4a6cc +e6ddd7e2aea870425c402923231a152c484f292c2d29262523223b463743 +2c382627282726231f1a1a1d1c1f20211f1d1f208bfff6f5f0e4d9cad97f +4f5f5654545247312a2a221b1d1b191a1d1f212323231e2225221c181518 +18160e0f1f2d2d2421232425252626274b48394c5f878e8e8271444c594a +555355575b4940315c3e2c2c2c2a2a2d3b4b53442e343c41422521232221 +2022272e344138221f222c3d677032495f677f8979536f686980a1c8e7ff +af1c1f1817131d22262525252a2f333b382e393c498a6b78565063604f5e +d9dae8943e49605e585a545358514b545559595e5557545c4da29d5e5db2 +fffffffbf7ffba5664d6e695717b7564676d72757576747474737a777774 +1c1d1d1c1a1a1b1d1919191817171615130e0907080a0a090a1b201e2325 +28312b2f33363d474b49412d23242c3a3d313a3d3e3a322a27262221201e +1d1e212420272c2d2d31343448514b545b5a5c4d403d24100f18222f3868 +8567301e2628170f07090d0d0c0b0b0b0b0b0b0b0b0b0a0a0a0b0b0c0c0c +0b0a0a0a0a0a0a0b0d0d0d0d0d0d0d0d120a0d11101519121a1815110f11 +151c1c345734271a120b0f1010100e0d0d0c0d0d0d0c0e0d0d0b0c0d0c0a +0e141613141415151617171518231b1a1510150a0f1612131a121a2d2313 +050000000500000008000003140e0e323f444e575b625a51597088918e8e +928b69515247230a09000008121312172818111d4672321f19191b19143c +1800161b0a000e53a0b6bbae4058512d2f291c1c1d1d26466264211c1818 +1a1c2125395f7dbeb8ab511a212222201c19181712121619191919188fed +e2dbe2d6d4cbe4b491b3bdbfaba89873584931262a27232321222325282b +31393f3c322824231f181a25353c352b23211f20252b3434353c4573a4e6 +ffffeec57c596e93b6bbabb3a88a8068544126262f383e485b654e4a414c +596b7f6981838587898c8e9aaeb2865236231415312d0f170d0c21386063 +886f748192bbe7ef853d3c383d2d3c3f42403b3432302a31302834375ed4 +bfba876b7f7e817dc0b7c8b54d5b5a4e454d45404a4747584c4c504f4c39 +3f42418b6c3e38a6dfe6e4dde6fb936472dff8d6c3ccd8d7dbe5d9d5d2d1 +d2d4d8d9dbd8d7d60c0d0d0c0a0a0d0f0e0e0e0d0d0d0c0d110e0907080a +0908091a1f1d222427312e33373a414b4f4d45312728303e41363f42433f +372f2c2b272625232223262720272c2d2d31343448514b545b5a5c4a3235 +36281a191e18011e30251c232b2b14080002060605040404040404040404 +04040405050606060504040404040405040404040404030308000307060b +0f080c0e0f121312100d02143214110e0f0b0d0d0d0d0b0b080707070706 +0403030405080705090f110e0e0e0f0f1011111117241c1b1611180e141b +17181e171b3942444543413f3c405278aaa9aea08c5e2f373c3e4b5a6670 +604c3f4e677a868b8b8265515a553b282b211e24251d161520171f284068 +2f1f1b1f263e68ae976c7a8aa7a7a2c0d3c6bcb04c685f3b3d33211d1e1e +27476365221d19191b1d2225355b79bab4a74d161d1f1f1d191615151416 +1617181b2226a3fffcf5f7e8dfcacc771a170f151624210f0c1211111211 +12131618181816131012140f0701020405030311232d29221c1b1918191e +2428353729353349424543412819252f2117162a281b2a313c3f30302d28 +1f1f2e4448492f261d1a1d000e0e1012141719160e1d22171c2d44556a52 +15171f263b3e402f5645587696c1e1d85600000009000d10131514151c24 +242f2c1f231d3c904035332e4242495ac5c9cba7263856584b5147424946 +45564a4b545556464d504892744947b7f2f9f6ebeefd905d65cfe7c1a7a9 +aca5a8b2a7a7a6a7a6a9a9acaeadacab0c0d0d0c0a0a0c0e0c0c0c0b0b0b +0a0b12100b090a0c0e0d0f2025232a2c2f39373c40434a5458564e3a3031 +39474a3c454647433b33302f2b2a292726272a2c2a313637373b3e3e525b +555e6564665543443a281c1b1f2014374f40282931321b0f07090d0d0c0b +0b0b0b0b0b0b0b0b08080809090a0a0a0908080808080809090909090909 +0b0b11090c1011161a131b191917161614140d2143231e1a1a151a181814 +12100c0b09090b0a0c0b0c0c0c0e0d0b0f151815181819191c1d1d1f2938 +31302b252719181e1a1e2a2a375f7990a9bcc8c5b19e91a1bfb4b7a99a69 +343b4548545f68705e49404d606c7178858366535d583d2a2d2320282c26 +22222b1d222c4a733829272d385073b9a6819aa5aea7a2c7e8e0d8c55c75 +6c46483d272223232c4c686a27221e1e2022272d446c8acbc3b65c242b2a +2a26221f1c222d33302d28272929a4fffdf6f8eae3d2e299505654544e53 +4b3126251e1a1f1d1c1d1e2020222221212528231a131213120c0912212a +2923232525252325272a373e3f5c71989f9f8f7a4c334255595450605b46 +4d4849442f2f32322e31435552513d3b393b4426393a3c3e3e4143474c57 +46291f222c3b5b5835495d7192948b6d89696e7e97c1ebec76241d182014 +1f2023262624292e2e3a3a30363657b5756a574d63646c78d8d7dec04556 +6764575d544f5754536458596061604f565b5aa5895d5ac9fffffff8fbff +9b656ecfd5a2827f7b70717b7275757575767575777677741c1d1d1c1a1a +1b1d1919191817161615150f0a080a0c0c0b091b212025272930353e433f +3a3b39353434404740414a4b3f3d372e2521232622212021222426272b37 +3d3b3d464844625e443c3a383c303238271410141a273d56918f3e26331f +191008090e0e0c0c0b0b0b0b0b0b0b0b0a0a0a0b0b0c0c0c0b0a0a09090a +0a0b0d0d0d0d0d0d0d0d100a1014111419141a1815110f11151c183e6a41 +251111130f10100f0e0d0d0c0d0d0d0c0e0d0d0b0c0d0c0a0e1416131314 +1516171818171629252017111a10121812131c151a311107000000000505 +000006000807170e082a353b464a4950534e546c858f8b8b999160404b42 +211b1a0900030a0c0f181a1414235a9544191b1b2023224920001d1f1000 +024293abb9b03466653323312b201b243d5f6652251d1a1f222022274d57 +558f9dad632f1c1d201f1e1b1c1b1a1a1b1a1b1c1e1f9de0dacfdfdae2df +e5c190aab8bfa9a89a7458452e24282522212123262a2f35434c534d4238 +322f251b1c2c3a3b36302b2927282c353c3d2a37497da8e1f8fcf1b36f58 +83b2c7cbc6dfd3a48c6b383e292b3943494f5f6b5d49374e5f73a7b2b8bb +bcbcbebebcc1c9c59054311e1013392817170808223765749b747b8799ca +e0cf5b5c59484f495b5a59564e453d362437464542304dc9c5a988617380 +aac7d4bcb9ce5a6a563d444f474149464456544a4f4e583b413d398c7642 +44c9c4afeae1ecf0766e779b7caac7cad3dddad1d9d5d2d1d3d5d9dad6d6 +d5d40c0d0d0c0a0a0d0f0e0e0e0d0d0c0c0d130f0a080a0c0b0a081a201f +24262830384247433e3f3d393838444b44454e5044423c332a26282b2726 +252627292b2c2b373d3b3d464844625e443c3a383c2a21303b2e1a151814 +0d0e36401f23382417090102070705050404040404040404040404050506 +0606050404030304040504040404040403030600060a070a0f080c0d0f11 +1212100d001e45200e050e130d0d0d0c0b0b080707070706040303040508 +0705090f110e0d0e0f1011121213152a262118141e1417211a1b221c2040 +39424849433f3f464d6da4a9b3a392612a313435434d545e59453c4d6679 +868c948b5f485d5c454548372a29292420231a17242f50853d181e232d48 +74b694627a8dafafa3bccebfbdb140747340303b30211c253e606753261e +1b20232123274b55518d99ab5f2d191c1d1e1c1a1a1917161616181e272e +b5fdfbf1fef6fae8d6891e110d141122210f090e10101414121416181616 +13101314150d0200000000000113262c2824201d19181a20252d2a34303c +343f3030442f1f1c3949271a274d482c302f203d33342f2b2424344c5546 +201e14112f2c2928292c2f302d281825261717263c4d6844191417213b3b +3b3963465e7b9acbd4ac1909000000000807090c0c0e1319122c3d3a331a +2f8b4f314130404d78aae0d4c2c2334853494c554a434b454154534c5256 +644c534e40917c4d53dad7c2fbeff4f474666a8d6f99aea8a8ada79ea7a7 +a6a7a7aaabadababaaa90c0d0d0c0a0a0c0e0c0c0c0b0b0a0a0b14110c0a +0c0e100f0e2026252c2e3038414b504c4748464241414d544d4e57564a46 +40372e2a2c2f2b2a292a2b2d2f30354147454750524e6c684e4644424636 +333d3c2d1c191b1a1d26575d2e2a3c281c1008090e0e0c0c0b0b0b0b0b0b +0b0b08080809090a0a0a09080807070808090909090909090b0b0f090f13 +12151a141b1b191917161614092b56311e11191d1a18181312100c0b0909 +0b0a0c0b0c0c0c0e0d0b0f1518151718191a1d1e1e21253c3a352c252a1d +1a201c1e2e2e3a677492b1c4cdcabaaa949bc1bcc4b2a47133373c3f4c54 +565e59463c4b616c727a918f644b5f5d45444635292a2b282729221c242f +588f441e272e3e5a7fbda17599a6b3a99ebfe0d8d8c650817e4939443626 +212a43656c582b2320252826282f5863609ba7b86d3822242424211f1d26 +363b362f2b2a2e33b9fffff3fff7faede9ac525151564a544c3126231c19 +1f1e1c1d1e2020212222292d2e271c131011100908162529272628272825 +26292b302c3b46667592908f936944365a746560698b815c57492d423233 +37383537485e604f3236353a5f5f5f5e6061646262605c634c291a1b2537 +604f3f4d5c7197948373926a74859ccfe0c23d332816201b262324272725 +272b223c4e4b48314bb08161634d5f6e9bc6f0e0d3da5263645559615950 +5a5352626359616170545d5852a5926166ece8d1fffcffff7f71748d5f7f +8f827b7c72677273757576777776767675741f1f1f1e1e1d1c1c191a1c1d +1813171e2c201412181f1f1d1d1e1e20222528292d2c2b2d2f2f2e2c3535 +3636312c2d322c27221f1d1d20231e1e1e21232524222425272828282828 +2c2928292928282d31382a1e1713172a3e45779e602d4747170f10130c0b +100e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0f0f0f0e0e0e0d0d0f0f0f0f +0f0f0f0f0e0f10101114191d1b1916110f10141a202a5b3821170f131112 +11100e0d0e0e1107080c0c101106080706070e1719151512101014171714 +5ac638261f190715150d1a14171b1931161b0f000000000000001400000f +13140921413c2d3438464e454d64779f7e81857b4f31304665616d491e04 +0209121814231132666a462722162a222a56220c190e1705043b7cb1bea5 +494d63411835272f262b43754f4e26201f23221d1b205b63551f04141212 +12171e20212023261f221f20261f181d88e1c8cdd4d3d2e2fbff9db7bdc1 +acaf97835b3c2f2624292d202b252d273e45525679876555543d34282a37 +3b3630332d2a363d343e473228265d90e3c9e8ffffa66f627fc3e0e2c6be +af9d8c6e49362c31414852636d685d4b316d6b95b3bcc8cccdcdcbcac7cb +cdbe82482a1a131d301a191c0f10223d658c8b79788babcee6e88f938d81 +709198918682867f6243457dc4b766493d9ed6a474546c6aadfff0d6d8c7 +5c704f322d7645153f3c59514756313d862f333e40a162385578467ee3df +edf381617c624f88abcecad7d9d7e1d8d4d4d3cfd3d9d8d8d8d80f0f0f0e +0e0d0e0e0e0f11120e090d162a201412181f1e1c1c1d1d1f212427293030 +2f313333323039393a3a35303137312c27242222252823232326282a2927 +24252728282828282c292829292828271f2d3f382112171b15041a493520 +464b12050609020106040404040404040404050505050505050506060605 +0505040404040404040404040203040405080d110d0e101112110f0a060a +36170a0b0c130f0f0e0d0b0b09090b010206020607000102010209121410 +0f0c0a0a0e1111115cca3b29221c0b1c1d17241e1f24214748636651524a +3e434c6fac98a6aa8f692d2a41392a344252523c34465b8e7f87877e5844 +4e6c91919d77482a212325271d2e253e5c573d2527203a4879bc8a72737d +bbbdabbdc1cdc8aa555b6d4b223e2c32292e467852512923222625201e20 +5b63531f0214111311181e212122232519191518201f212ea4ffeff7fefb +f7f8f3d22e21141613271c190a05101512191d101b131708150f100a232d +0b0000000000041826242020170f191e131e281d2823444f6c251e395224 +1f23325135231a1e1618272e2f3532322d262533464d5543113513212820 +1f1f20202122211e151e1c0f1122384d57311818202836393649504a5b7f +accbcfb63a271207001e160c0409171f1507195daba14e2c1c656c3a3b32 +454186f6fff4e8bf394f4e4339804c1b403b564e465937479441475047a6 +684361895991f4eff7f77f5b7056427993b0a0a9a7a4afa9a6a8a8a4a5ac +adadadad0f0f0f0e0e0d0d0d0c0d0f100c070b142b2216141a2123212223 +2325292c2f313939383a3c3c3b39424243433e393a3d37302b282626292c +2727272a2c2e2d2b2e2f31323232323236333233333232332f3b40372317 +1922231a396846294b4e180d0e110a090e0c0c0c0c0c0c0c0c0c0a0a0a0a +0a0a0a0a0b0b0b0a0a0a09090a0a0a0a0a0a0c0c0c0d0e0e1114191d1c1c +1a1917151514131948281a17171f1c1a191412100d0d0d03060a0a0e1007 +080807080f181b17191614141a1d1d1c69d64a3a332b16221f1623202a35 +386e85b7d0d0dfd8bcab99a5d1b2bdc0a77e39314b44333c4452533d3746 +58846d7986835d48506d90919d77472b2324292a2230233c5d5b3e282b29 +495580c193818d91bcb3a3bbd0e3e1c0656879552c47323930354d7f5958 +302a292d2c272528656f5e290d1c1918161c20232121232d33382e2d2e29 +2a38b0fffffffffffffffff3636157584c594a3f2a1c1f1f1e24281b261f +241827262b2846512f1f2010140e0f1d25222024231e2d30242b30222a2a +5a79ae7b8198a260464056827b716464575151493c3a323438363a495b5e +625028523b52615d605f6260605f5f5e5b5a41201417263d54414255687e +99977c7e7c6c718bb1d2dfd16358483a2b4944393234414435233274c1b6 +664839889c685b4a605fa5fffffef7d6576a5e4d458c5c29524b695f5868 +4753a14b525c5abc7e57779d6aa0fffcffff8a657a583964778c7678746f +7c75757775717175787878781f1f1f1e1e1d1c1c191a1c1d1814171d4136 +2a2425262522232425262626262528262627292a28262c2b2c2c2722242a +2927252422212122212020222425232228292928272626272b282627292a +292d2e3028211d151728384567996c303c3c180f0f120b0b0f0d0d0d0d0d +0d0d0d0d0d0d0d0d0d0d0d0d0f0e0e0e0d0d0d0c0e0e0e0e0e0e0e0e0e0f +10101114181c1c1a16120f11151b2631613c23180f111112110f0e0d0e0e +0a050a0d0b0e1209080807080f18191615131112151716132ea13e14081c +150c120e1912171d1929111c11000000080b000015010a1316190015363b +32362c2e31384e69799b7a737b5f270b0000000000000000090f0f11171d +0c2550533c210f0e26263d72270002121806053981b2ba9a33396249172a +2d21212a445b413f322923222220252b5166541a0b140f2213161b1f2223 +2529272e322d2217121251d8dbc8c7d7d9d5f9ffb3a7bcc5aea1a1865b3e +362f2828282d2733394a43425f6d909f969d996c563c2c333c3c34323935 +3e423a455241342a526fe9dbeeebd99d6d6787cae0e7d6d0c5ad916d493c +45395c6d4e496876635d4cbdb297b6d0d1d6d7d7d6d4d2d1d8bf80432618 +14212c1817190d102641688e8f7d7d92b3d7e5e695a8b4c1c3eacbc6bab3 +b1a98d717c8ba9996c644c88bc9271505a5f7ed4e4d8eae770875332406a +5c5f76796d545e5e394f64647d89a5b15c3d6d8f535cd8e3efe883638890 +7d90a7becde5e3e2dfd7d3d3d2cfd3d9d8d8d8d80f0f0f0e0e0d0e0e0e0f +11120e0a0d153f362a242526242122232425252525252b2a2a2b2d2e2c2a +302f30302b26282f2e2c2a292726262726252527292a2825282929282726 +26272b282627292a29271d283a392514161d180c11433715333c11050508 +010105030303030303030303040404040404040406050505040404030303 +0303030303030203040405080c100e0f10121212100b0c113c1b0c0c0b11 +0f0f0e0c0b0b09090400040701040802010302030a1314110f0d0b0c0f11 +101031a5411a0d221b151b192420242925454c6e72635d534d4f4e67a8a8 +b4ae9673282238372f353437332f384f649285878d7344312b292f222a20 +191d222220202a35293548413421191d394e88d1864d567db6b7abbcc9d5 +caa23f456a4f20333125242e475f4443352d26262524282e5469571d0e17 +1225171a1f23262829281e2227251d171c256ffffff8f8fffff4fbe84b15 +131a12121e1501000f17101010150c14141d09000809212b212925060700 +000e2228201714090c0d09192a283225352c72392b25341f1f2837553223 +1f252121272a2e37432c3537121345615b50287c51181c22171617171819 +18171e241c0d0d1b30474b2a15192029373a3349514e6187b3d1c8a93024 +202934592d231b1a22261c102c486d6233280e3b56374538404261cafcfa +fce4526b55434e786566797a6c535f613f5b7478939cabb6624879a0646f +e9f3f9ee815d7c84748493a1a6b6b1afada8a5a7a7a4a5acadadadad0f0f +0f0e0e0d0d0d0c0d0f100c080b1340382c262728292628292a2b2d2d2d2d +343333343637353339383939342f313534302e2d2b2a2a2b2a29292b2d2e +2c2a323333323130303135323031333433332d353c39281a1b23231f2e60 +491e383e180d0d1009090d0b0b0b0b0b0b0b0b0b09090909090909090b0a +0a0a090909080909090909090b0b0c0d0e0e1114181c1f1f1c1a17171615 +19204e2c1c1a191d1c1a191312100d0d0601080b090c110a080908091019 +1b18191715161b1d1c1b3ab0502a2032291e201b26232d393b6a88c2dde1 +eae1ccba9ea1d3c8cecab38b362b45453a3b363632303a50638b777c8f7a +48342e2a31242e231f222728272530372532464132211b24475a8ed58c5a +6e8fb5ada1b7d5e9e1b74f53775b293c3a2e2d3750684d4c3e362f2f2e2d +31375d705e24151e172a1a1b20222524282d2f363530241f263687ffffff +ffffffffffff8056585e4f485040251922251e2020251d24263222162a2f +4c584e58542e27150a152327221e252027291f2a352e352c4b55b48e8b84 +815c46475c897a756f71685e55493d3d4633474e2c2d59726a62429e7e4f +5c676061626060605f5e655e401d1014223c4e4044596c839f9a77787a6e +7895bbdbdac85c5d5c666c90675c535257584a3b536b8f82564e35658562 +604e595e7fe2fffffff76e84624d5b8574768a8c7e6571724f6981839eaa +c1cc785c8fb47680f9fffffa8e6788886d747b817f88807a7a747376746f +7175787878781f1f1f1e1e1d1c1c1a191b1c1814171d39322c29292a2b2c +292a2a2a28262320221f1f2022232120242323231f1a1d24242525252422 +201f1f1e1e1f20201d1a232323211f1f222424221f20242726252a29262a +281816273142518c7e352d301b0f0e100a0a0f0c0d0d0d0d0d0d0d0d0d0d +0d0d0d0d0d0d0e0d0d0d0c0c0c0b0e0e0e0e0e0e0e0e0e1011111113171a +1c1a17131012161d2733643d231910111111100f0e0d0e0d0a070d0f0b0c +110a0a09080910181a1615141314161616122c5923141318130b0b0d140d +121b19210616050100000b040100040000000e1a000b2a34363929232c38 +4a5763827067512a00000000000000000000040b161b0e0e0a234b4e482d +2e252a1a1f5b2100002c230c103e8bb3c49d313a735e21292e252d2a5557 +474029222222272932394e665a2826200c1a1617191c202120222b2a2c27 +1c1a180a1f8c8f83858b837d9af7e3c3e2e1c6adac9569453831343c353e +3d3e4c4856778393aab3c0e0dca48a6e554843404247484b5353494d503e +2e376168e6daebddc89e675d79b7d0efe5e5dbbf956c4c40af9dc3c37c63 +7b7a717159d8dfaac4d7d9dfe1e2e0dedcd7dab97a47311f182425141413 +08102844648c8b7a7b95b5d9e6e8a0bbc7d1cae1cac9c4c0bfbdae9c9087 +898282978598957d795451625aaddbd2e3d65f865b3f4f61a0e8eaeea66a +6e6243664fb7dfe9e7ba715982855254d0e2efde8c708a938496c8c2c8d2 +ced8dcd6d2d1d1d0d4d8d8d8d8d90f0f0f0e0e0d0e0e0f0e10110e0a0d15 +35302a272728292a262727272523201f222222232526242327262626221d +20272728282827252322222121222323201d232323211f1f222424221f20 +242726221c21343c2b15141e1c1607393d091a2a12050406000005020303 +030303030303040404040404040405040404030303020303030303030303 +0204050505070b0e0e0f11131313110d0d133f1c0c0d0c110f0e0d0c0b0b +09080401070901020703030403040b1315110f0e0d0e1010100f2f60291b +19201b17171b231c222b2a42466f6e6f6559554d566197a3a4a1987e2c1d +2d3230372d282b2e34415482858c7d5c2f2b312c3025231a121010131c27 +2b36323e4a4244333d3944466ab476514f92b8b2aab9d3d9daac3e467662 +2a32352c3131595e4b472d2926292b30363d526b5f2d2b25111f1b1c1e22 +26272624252024221b1e241f40b5c0b6bbc0b7a3a3d480343b3326181e17 +0200030a0d140b120f0c140605171215212531524e23211a141a242b2723 +1208070604112020282d3f216f3e3429322b1c1d27422b2f292f302e2b29 +3035a07d83742d2458696862309477242321161413141515161722241c12 +141a293f3c22161b212d38382c434d4b638db7d3c5a22c251e20213b201c +17161b1f1a13111118110f200a232f32554542524caef7f4f5d5476e5a4b +6173adf1eff1a4686f654a725fcdf7fcedbc75618e966367e1f2f8e48a6a +80887c8eb7a7a2a59ca4aaa7a4a6a6a5a6abadadadae0f0f0f0e0e0d0d0d +0d0c0e0f0c080b1336332d2a2a2b2e2f2d2e2e2e2e2c29272c2b2b2c2e2f +2d2c302f2f2f2b26292e2e2d2d2d2c2a282727262627282825222d2d2d2b +29292c2e2e2c292a2e31302d2b2e373e301c1923232520555316202c170d +0c0e08080d0a0b0b0b0b0b0b0b0b09090909090909090a09090908080807 +0909090909090b0b0c0e0f0f1113171a1f1f1d1b181817171a22512d1c1b +1a1d1c19181312100d0c06030b0d090a100b0a0a090a11191c1819181718 +1c1c1c1a386a372d2f352e2723242a232f3b3e6583c3d9ecf0e5d2b6a69b +c2c4c2bdb5983e2b3e403c3c2e24272d374457807e85806333303431362d +2c26201f1e202a3333383139484243314040515370b87b5b62a1b6a8a0b7 +dfecefbf4f54856e333b3f363c3b6468565138333133363a41485b716531 +2f2915231e1f212226252623251f211e1721323a69e9fbf5f7f6e7cac0f5 +b676837b665256472d1a1d1f222c232b29252f22263d3e45575d698c8859 +4a3b2a25292a2c2f2a272b2a232a30282c36574bb18f90827a64433f4f76 +70827d827c6f5b483f3da78a9d934d416e7b7b774ebbaa5f676c65656566 +66636362685c3e221916213a443c465c718ba79c6d6e746b799cc3dfdac4 +5d626166647b5f5b5655585c544b48454c454658435a5f596f5a596c65c3 +fffeffe7618668576d81bdffffffb97d83785c826edaffffffd58e78a4aa +7778f1fffff097748b8e7983a38c7d7b6b72777372737370727478787879 +1f1f1f1e1e1d1c1c1b191a1c1915171c2220211f212228292a272723231f +201d1c1a1b1b1f1d1e1a221f211f1d181d221f20221e201f201b211e201f +211d1c181d1e1f1e1d1f242823201d1d2329272329252835311b1421293f +407a8f48282d1e0f0d0f0a0a0e0b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c +0d0d0c0c0c0b0b0b0d0d0d0d0d0d0d0d0f101111111216181c1a17131113 +171e2030633c221911121011100f0e0c0e0d100a0d0e0a0c11090b0a090a +10191a171515151616161612302513151506060c0c12110a0e171d232c30 +00000003180908000d0700000d1502091e29303a302e374249474d605849 +3d34232a25090000000000010a0b100e0400091f4042401611091b262c62 +1f020945301c2f59a0b7bf962d3d7a681f15162929145d4f3b3d1c20272f +363a3f425d5b5c383a34231c1f1d1b1d1f1f1c1b1f151a27303626050010 +070e12000636a1fefbaed8dcd8cfbdb49367483d4e6a7d49474ca678859d +a8b2bbbbcaedeec4baab9169453c4f6874828e8d7f725f492d486a77d8d3 +d7d6c1945d586b94bbebeeede5c9976e4f42677aaaad8a8c96847c8b66a3 +b7b1cad1dce2e4e5e4e3e1dbd2ad75503f2a1c242013110f050f2a45638c +8b797d96b5d6d8d997bbc9d3c8d2bdbdc0bfc1c3beb6c3bcbcb1bbccbcb5 +848295654d6850afdbc8d9a6527e694c4a3ba6e9e0f2ab6c786b485336c5 +d7d7dfa67969946b3b61e7e6f1d49295aa8a7ba7f8d1c8d1cedcd9d5d2d0 +d0d1d5d7d7d8d8d90f0f0f0e0e0d0e0e100e0f110f0b0d141e1e1c1d1c20 +2327252422201d1c1a1a1c1d1b1e1f201e1d222221221d1b1d251f232321 +2122211e2221212222201d191d1e1f1e1d1f242823201d1d232927201e1f +2f3e3218121a1e21022f440b091e13050305000004010202020202020202 +030303030303030304040303030202020202020202020202030405050506 +0a0c0e0f11131414120e06103e1b0b0d0d120e0e0d0c0b0a09080a040708 +00020702040504050b1415120f0f0f1010101010342e1a1d1c0f0f171821 +221c212a32476e8b646a676464545f72a5b4a9a7a3853b1e25262a35302f +3237353243697a7f86877c8784664a26231d1a1c1c1c1f2832384146483e +442429273c5579b96f4f52a1b2abb2c2e0dddcab3d467c6a29221e31311c +6557434524282f373e42474a66646541433d2c2528262426292926211e12 +1827323d371d0e3a38454a323c60b4e5a126322c312f212619040000112a +3b060102541c1c25221e1d18274a4d2e37414133252330392b2727262427 +28252138422c644033373e30191b1d28243a32323838302d333149434c40 +253f7075747b3d5f4f29261815121214141313161e1c17171a171e2f2e1e +191e2631393427404b4c6793bbd2b68f1b1b11130e1e1012110e10141310 +222223181e2b16252145775945634eb7f7e6e9a53e6862545c51b8f6e9f7 +ac6a796e4f5f46dbefeae5a87d71a07a4c74f8f6fada928fa08077a0e8b9 +a4a69ea8a7a6a4a5a5a6a7aaacadadae0f0f0f0e0e0d0d0d0e0c0d0f0d09 +0b121f2120202023292c2c2b29272725242326262527292928262c2b2b2b +2724272c2728282626272623272626272725221e2728292827292e322d2a +27272d33312b2c2b3543371f1721242b17465b1b1121190d0b0d08080c09 +0a0a0a0a0a0a0a0a08080808080808080909080808070707080808080808 +0a0a0d0e0f0f1112161a1f1f1d1d1b191918131f502e1d1b1b1e1b191813 +120f0d0c0c060b0c080a100a0b0b0a0b111a1c191919191a1c1c1c1b3d37 +2a32382e2e333034322a303b4769a8dac9e1ede9dcb9aca9ced2c4c0bc9d +4e313837363b2e2a2e3537394b6e7b7f8c8f848e8a6d5333322e2e31322e +32373f3f40454a3f45252d314d6581c0765963b0b2a5adc5ecf0eebc4d57 +8b77332b293c3e277262505031333c424b4d54556d6b6a464842312a2d2b +292b2b2b282119090c1d2d434b434682879795777a90d4ffd5687c77766f +60604c302121324c5f2925257a43475355585a59688d916d6b695e432a26 +384b495056554d463d3125425a55a38e898780643e3c4459678887898779 +5f4b423b5558706a4f63898889955f8884696f6668686968686766656553 +392822191b313b3a4a617792ac9c6567706b7ea4c7e1ceb24f5b59605967 +525454525459575265626459616f5e635067916f5c7964cafff1f8b7577f +7261685ec6fffaffc07f8d81616f55e8fbf9fbc19688b68f6085ffffffe6 +9e9bab887698d9a1827c6e767472727272717373777878791f1f1f1e1e1d +1c1c1c19191b1916181b1f1f1e1a18161a1b24201c1818191d1e1c1a1b1b +1e1e1d1b211f21211f1a1e241f21201a1c202320272627272925221d2224 +26242223292e2b2823222b332f2628232d3e381f151a213735669a682f32 +23110d0f0b0c100c0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0e0e0d0d0d0c +0c0c0e0e0e0e0e0e0e0e10111313121315171c1a17131113171e2033663d +211911111010100e0d0c0d0d10060709080d11090c0b0a0a10181a161516 +16161616171533302d160f0c12100d150d0b101422296c69000000071d11 +0013201a000001010003131e2636323737464e4a4b4b452b09192533352f +2b170000000000000000000000072d3b490f1c0d0e1b32802e000e4e4544 +668bb9bbc58c27458b86340d0222170b6f432d4b343a424647484848654a +604a43424c3b423f3c3d3f3f3c39120e1930403b2101000e08060c07459b +d3fdf090cddbe0d9d5d6bd977769768e9d707885dfa6a8b5bcc2c5c6ccdb +dfd0d5ceae77453b56758ca7b5b3a48b6b534451577dbccbbfcfb9795861 +6c75aad6edeae5ca966e53445e91b5b5b0a999948f9e766b8fbcc4cddbe0 +e4e5e5e4e3dce0b174584d311d211f12100b01112a3f6892907d809cb7d3 +eae09cbeccdddee5cecdd3d1d0d3d1cecdd1d7d0dbdbcbb6929db271475c +4ebfdcc9e8896e877a53483ec9e4dbe6aa7089865c465de0d9d8d5916a68 +ac652774efddedbc7da2c38073aefec7c0dcdddfd7d5d3d0d0d2d5d5d8d8 +d8d90f0f0f0e0e0d0e0e110e0e100f0c0e13191a1815121113161d1b1513 +101315181a1a191b1c1e1b1b1f1f1f211d1a1c241e221f1b1b2122212627 +26282826211e222426242223292e2b2823222b332f2422202d3e371c1015 +1f280922441b041b14060204000105010202020202020202020202020202 +02020303020202010101010101010101010103040606040507090e0f1113 +1414120e0512401c0a0d0d100e0d0d0b0a0a08080a000103000307020506 +05050b1315110f101010101011133a3a352017151d1d1b25211f262a384d +adc165646a6a6d5d5c8cbfd3c1bcab80411d1e1d1e2d2e322e383939495d +71747092a1b2b5ab9c7d4334262325272a31322f403d404057273e373952 +81d97c424d97acb4c9dbece0e6a73a4e8c88401e0e2c2015784d36553d44 +4b50505251526f546a544d4c56454c4946474949464218131e364848341c +233b3b3b433f7bcaf1f0a00d2829302d29332d1b110e19313d0e141d7130 +25261e1916121829302b3b4b4e382222323e3232312f32312b2a2f3a252f +4a4531494d281f2c26182d3c372f3a3d3433382c2d3e3728304a6b858790 +51282837241817141415151413172c211517190e0c1e241d1d242b393b2e +28424e506e9dc3d5ca961d190d171b2c282d2a221c1b19161920271f2723 +0f1732679565445f55cff3dff1865c716b525a58dff5e6edac718a886151 +6df3f0ebda916c6eb6743887ffedf9c27d9fbb7973abf2b19db0adaba5a6 +a5a5a5a7a7a8adadadae0f0f0f0e0e0d0d0d0f0c0c0e0d0a0c111b1e1c19 +16151a1c25221d1a1b1d202225242425272826252a292a2b2824272c2627 +2520212628262c2c2c2d2e2b27232c2e302e2c2d333835322d2c353d392f +2c2935463d23161b222d18375d2f0e211b0e0a0c08090d090a0a0a0a0a0a +0a0a080808080808080809090808080707070808080808080a0a0d0e1010 +111214181f1f1d1d1b1919191423552f1c1b1b1e1b181812110f0c0c0c02 +0507060b100a0c0c0b0b11191c18191a1a1a1c1c1d1e42444a3b3c3e4a47 +40463c383d41506fe3ffc5d6e9e9debba1bbdfe8d3ccbc935734342f2b32 +2b2c27353e4356697a7b799babbbbeb5aa8c574a3e3a3c3c3c42413c463f +46445a2b47454c668ee1864e5fa8b1b6cee4fdf3f7b84b5f9e974c281a38 +2f21875945614c505a5c5f5e605e795d735d5756604f5653505153535049 +160d17324b5855516a9097979689b9f8ffffd55174777b7571766a51403a +465e6d3f464ea262595e5b5a5b5b62737b70797d734d29263c5358666b69 +6357453836444059888c7d9087533f484a4467828c88897f63514739405c +665d6374879a9eaa735460786e696d6b6c6d6d6a69677356372b26151227 +373d51667d9bb1986569726f86afd1e4e2bb525b5a666a786a6d6d676365 +636062686f67706d5c5a6089b17b597268dfffedff9974887e626865edff +f8ffc1869f9d75637dfffefaf0ab8586cf8b4c98fffcffce89aac68175a6 +e69a7d897f7b7272737272727371767676771f1f1f1e1e1d1c1c1c19181b +1a17181b1d1a1814111112141c18131011151b1f1e1c1c1e20201f1d1e1e +20221f1b1e232326231b1c262b282626282a2b292521272b2c292321252a +2e2b24222c373124252633433e291a14192a37509a8e3f3c27130e0f0c0e +110c0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0f0e0e0e0d0d0d0c0f0f0f0f +0f0f0f0f10111313121213151b1916121113171e24396d402119100d1010 +0f0e0d0c0d0c0804060a080d120b0b0b09090f1719151616161615161a19 +43371b0c17120d090a0e04101b131e1f6881000004000b062a412b1a0104 +0a1400000b161f2d2a303e4a5047463947331b20160a040f23202a1e0e07 +070808070000090628496d282e240700006127001e577187a4b6c5bad383 +224b96aa61250412091c7a3e3261585d5d57504e4c4a503a686062525841 +4c4a4a4b4e4e4f4d2626232a2f19030500141400245a9dc9bcddfba6d5dc +dbd7e1e0ccb6a799969d93a0a4a8b3a9acc7c6ced7dcdedad9dde3d4aa74 +4b495b708eadb9b4aa906d5a4d5554869cbec4ecd66e5b5c5c59b2c6e4e4 +e3cb936e58485392bdced5bcabcaa9986759aff2d8d4e0e7eceeeeeeede6 +fec582675f3e252a22130d0700132b3b68928d7a7e9bb3ccefe4a5ccd3e2 +dedcd9dce2e2e0e2e0ddd7d9ddd9eae1e0cb95a0ad67464d56d6e2d5ee67 +77877c5b2949e2ebe9e09a73787b4a2b80e8dde6d38b6f78b35e269be5e1 +f5b87a9cb46c65bbffdcbfd4d9d7d7d7d6d1d0d3d6d4d8d8d8d80f0f0f0e +0e0d0e0e110e0d10100d0e111414120e0b0b0b0d15110c09090d13191b1a +1a1c1e1e1d1b1c1c1e201d191c222225221a1b252a27252527292a282420 +272b2c292321252a2e2b24222c37312424232d3b392413121f2819163c32 +071d16080304010306010303030303030303030303030303030304030303 +02020201020202020202020203040606040405070d0e10121413120e0918 +471f0a0c0c0c0e0d0c0b0a0a08070200000400030804040604040a121410 +101010100f1014174c4325161f1c1816171f1727322d3643a6d666697160 +5c568abfd1dbd0d0c2a2441c1a1717222327313b3b3949537c8b9ab6afa6 +a2a7b2a39d82685c5c5f64675f536149465784495a573b2c47ba733e5290 +bfdaeaf0ebdbf7a3375697ab7139121e1528864a3e6d646969635c5a5856 +5c48746e6e60644e58575558595b5a5a333330373c2a1922204046335b91 +d2f9e2dab22933272421262c272126221c21172226262d1b14231716181d +1f1f222b353f3d2c252e353024261e1b2629272e323519312c41487e802e +2d30210d4f41362b3c4437373d2c132a24243d4c75b8a48e431a4d713b23 +2221201f1f1f1e214a321c1d1c0a04181e1b212835433f28243e4c4f70a0 +c4d1d39c2927141819212e35342c2422201e1d232d2b3c332f393f739059 +445666e7f5e2f15f656f66523b67fcfef9e89c74797d4f3390fbf4f9d78b +717ebd6d37adf6f1ffc07999ac6766bbfdc79eaaa9a3a5a8a8a6a5a8a8a7 +adadadad0f0f0f0e0e0d0d0d0f0c0b0e0e0b0c10171816120f0f12141d19 +141114181e2326252527292928262727292b2824272a2a2b2820212b302d +2b2b2d2f302e2a26313536332d2b2f3438352e2c36413b2e2c2c3746402b +1a171f292325574b14231e100b0c090b0e090b0b0b0b0b0b0b0b09090909 +090909090a090909080808070909090909090b0b0d0e1010111112161e1f +1e1c1b1b191918295c321c1d1b1a1b181712110f0c0b04000408060b110c +0b0c0a0a10181b171a1a1a1a1b1c202255513e394d51504d4b4d3f495148 +5267d9ffbfd3e8d7c7adc7e8e9eadad9ccb05b35312b22261d1e29364046 +5a648a97a9c4bdb3aeb4c2b5b29a80717070717572656b5150608c526768 +534558c8814f67a3cbe2f6fefeeeffb24868abbd7e441f2c253696584e7b +747779716c686864685380797c6d725e686767696b6c6c6a3c39363f4c46 +4864749fa991abd2fffff9f7e76d7f78746e75766c615f5a555d535f6362 +685751625a5e656b6f7072777c7966443035424a5261625c5f54433f3940 +355b67858ebdb153494941337e808b868c8666544c3a2b4f5c63787c95ce +bba9694786b288747878797979777873916841342e170f26353f546b85a7 +b89461626e6d89b3d4e4ecc25f69616a6b70747a7b76706f6d6b686d7572 +837a77776c92ac70596776f7fff3ff747d877b654972fffffffbb1898e92 +6346a0fffffff0a58a96d6844bc1ffffffcd87a4b96e6ab9f3b47f827b73 +7274767372737470767676761f1f1f1e1e1d1c1c1d19181a1a18181b1714 +110f101214161916131113181e20221f1f202223211f1c1e2225231e1f24 +262b281f212c312e2324262a2c2b2722272c2e2b242023282e2b221f2a36 +2f1f1f26384541312213121f3b3c90ae4c412c140e100d0f120d0e0e0e0e +0e0e0e0e0e0e0e0e0e0e0e0e100f0f0f0e0e0e0d0f0f0f0f0f0f0f0f1012 +131312111213191815111012171e233a6e4020180f0b0f100f0e0d0b0c0c +040816190e0b100b0b0a09080e1617131616161414161c1e3c4d19051109 +00060d0c01233a252114458b06000700193a83843516070c173d06020912 +1d29252842505549412547410f0a020302010d071a1b20292d2416122d27 +37172649792a010b0a07004f1302305d9dbec6cbc6c4cb7321447aa07f4b +2f2e2e4470454b4f616a6f6a64615e5a4b3c6065a0866c54525255545655 +5a5956594b4a4918000700091a1f679ab2b0b9dbffb6bec8d2dee4e4d3c3 +bcb4b1b5bab8a5a6a9bfbdbfdae3e5e9ece5dee2e5d5a56e50525e68a0c4 +cfc7bc9f78684e546495a3d2f7ffeb635f4e4752d6c3dcdfe5ce8d6a5b50 +68a5ddf0e1c3afbda58e4e58cfffe8d9e6ecf1f3f5f4f4efffc688797651 +333223120b0401192f38628e8a777d9bb0c5d6d1a1d1d6e4dfdbd8e0e8ea +ebeae8dfd7cec5b4c2b5d3dd88918e55504866e4e9e7ea49687d6f643571 +e4e6ebdb8c90908f543ea5eee6efbe7276909f4928b3e6eef5a6808d8f68 +6bcbfffbced5dadad9dad8d4d1d4d6d2d9d8d8d70f0f0f0e0e0d0e0e120e +0d0f100e0e110e0b080607090a0c0f0c0907090e14181c1c1c1d1f201e1c +191b1f22201b1c212328251c1e292e2b2021232729282421272c2e2b2420 +23282e2b221f2a362f1f22252c373a2c18111e252a082b450c1e18090305 +020407020303030303030303030303030303030305040404030303020202 +02020202020203050606040304050b0d0f111312120e0819481f090b0b0a +0d0d0c0b0a0907070002101304010604040504030911120e1010100e0e10 +161c445a24111a1309111b1d153a523f39377fdb696c735c6b8be6ffe2e1 +e1e6e1da56241913131d1a1e343e423e484584a4a2b7b3b9b9b5b8a8afa6 +a3abb3b1aaa1a7959d654d6099543645454c52ac603f5a86d5f8f3eee0df +f09738517ba393633f3b3b517d52585c6e777c77716e6b67584c6d75ad95 +79635e61616362636669676d5c5b5c2d0b2423354a539cd0e7e3e7e2d23d +1d11171d1d1f181723231c1f2422100f0e1e140b1c1f1f222825242b2a30 +2d22273735212a2e201b2a2d2d372d2b233c36608bc2a8323c2b19158a53 +362b444d3a3943301e2a2d2e364472a6a1882e1d728b54302e2c2b2b2a29 +272b4b2f1b25270c0012191a222d3e4f45261c38474c71a3c5d0be8d262e +1a1d1b1b1d25272521232525272b2f293b34527144656f434e5379f7f6ee +e73d546551554791fffdfbe6919291915946b5fffcffc2727796a95839c5 +f7feffae7f8a89626ccbfde6acabaaa8a7abaaa6a6a9a8a5afaeaead0f0f +0f0e0e0d0d0d100c0b0d0e0c0c1011100d0b0c0e12141815121014191f23 +282727282a2b292724262a2d2b26272a2c2f2c232530353227282a2e302f +2b27313638352e2a2d3238352c2934403929292d3844423321161c233015 +49631a2521110b0d0a0c0f0a0b0b0b0b0b0b0b0b09090909090909090b0a +0a0a090909080909090909090b0b0d0f1010111011141c1e1d1b1a1a1919 +172a5d321b1c1a181a181712110e0b0b000414170c090f0c0b0b0a090f17 +19151a1a1a181a1c22294f6b423951514c535a55476478605b5dafffbccf +e2cbcedcfffff3e7e3e7e1e16d4033271e1f14142b3a464c5b5a97b7b4c8 +c3c7c7c4c9bac3bbb7bbbfb8aca9bcacac715c6ea460465b636967bd7252 +729ce6fffffff7f4ffa548628fb49e6d4e4b4c618e62696c7f878d87827e +7c77685b7e85c0a88c787476797a7c7d8083838876777d5a47707e98aca9 +e0fffff6f7feff806b64686e70716761666660666b69545250615752666b +6e737a78777b77725b3e353e453f5c6e6b65695e4c4a36394168709ec9f8 +d35254413336b18b8886948d6656513f39566d75787994c0baa4554babcc +a081848283848482827f9266423f3d211327343f566f8eb3bf945a5d6a6a +89b6d6e2d8b25c6f666e6f6e6a727675737473706f6e6c62736a88a26b86 +8e5d64658afffffffc536d7d6968559cfffffff8a5a7a6a66d59c5ffffff +db8c93b0c26f4dd9ffffffbb8d95956c71cbf4d590857c77747778747374 +746e757474731f1f1f1e1e1d1d1c1f19171a1b18181a1f19110e10121110 +131315171b1d1e1d201f1f202223211f1b1e232725202024242a2820222d +312d2425282c2f2e2b27282b302e2724272c302c231f2b372f1d1c263943 +41352613111b402e7eb856482e140e0f0e10140e101010101010100f0f0f +0f0f0f0f0f0f1111111010100f0f100f1010101010121214161312101011 +171712121112161a183165361b160f0b0f0f0f0e0e0d0c0c071327281307 +0d0b090806060e1516131616161311151c2131a16d20020c151d0c070033 +54362007409d0d00080d5eb1b8a53512080103361609090e1b2a252a3853 +67614b18322e150000000605101009040000000000030f15340e1944812c +241118453c6d1a172d55aed2c9c9c6d6cf813c51648e977a858085807464 +73365466777c7d7c7874644e4851cdc5978b85888a8986878a8d7a878390 +984700000c093b73bbb9b6beb7d0ffbabcd5dcdce5eadbc8c0bfcbded4c5 +d3ccd2c4d3d4e7ede5dfe8e9e0e0e1d5a76f4d4e5862a7cfdacfc3a0715f +56465e8fbbf8ffffd34a654f4b5df1b9d0dbe1c57f5d59567ab3f1f6d7c8 +af8e869a5559b7d5d9d6dbe1e5e7e7e6e7e2dba97e7f81583129200e0703 +08223334588383727ea0b9cbeedb9abdb8c7c8cad0dae2e1e1ded9cebfba +b4a3b4b5fbff7e82734355436ae0e6faef49637d5c602982dfedf1d05b6f +7b794243aceae7f0a3455e90893c23a5d9d9bc5a5863606471b4ced5bdcf +d9d5dbded8d1cfd4d7d2dbd8d8d60f0f0f0e0e0d0d0e110e0c0f100e0e10 +14100b0807080a0b100e0b090b0f161a1e1d1d1e20211f1d191c2125231e +1e222329271f212c302c2324272b2e2d2a26282d32302926292e322e2521 +2d39311f20262c373b321e121b21340025540e1b190a0405030507010303 +030303030304040404040404040405050504040403030304030303030302 +02040606050406070b0c0f111213110e0416481e090b0b0b0d0d0c0b0908 +0707020e22230c000304040604040910110e1111110d0d11181e34a97b32 +1927343b2b272055775b483881f4766c7068a2f2ffffd8d8e3e0d5dc7133 +1b0f101b1a1e283c4c4f523e7fa3b6b7aabbc7c4cbc4b2a79da0a6aaafae +a296a5664d6bb26c77707aaba9d46850506fd3f9e8e4dcedef9e4f5c6697 +af9698909590847483476375868b8c8b8781715a5460dcd4a69b95989a99 +9695989c8d9e97a7b163161f343569a2e9e6e1e6dcd5d84c262421181b21 +1b12161a2132291d282224121d1827281f1a242823231e28291f23302d19 +2c32251f2d2c252e3524274b69a3d6e6a12345322835c265372e505c413d +49352833403a3351777a7c8b331e60625039322f2f2f2f2f2d30351a1025 +2d11000c1719212d40544a2a213d4c5176a8cad3daa337371d232628292e +3432313233323038413d545ca6e44f615c395c5481f5f3fcea40566c4757 +3ca2fbffffdb6274807e4a4ebcfdfeffaa476398944b34b7eae9c9645c63 +5f6374b5c9c8a4acaaa3a7acada8a7aba8a3aeaeadac0f0f0f0e0e0d0d0d +100c0a0d0e0c0c0f18150f0c0c10111217151616181c212329282a292d2c +2c2826272e3030292b2d2b312f27293438342b2c2f333635322e34393e3c +3532353a3e3a312d39453d2b2b323d45473d29181c1f360a3b6c1a202012 +0c0d0b0d10080c0a0c0a0a0a0a0a0a0a0a0a0a080a080909090808080707 +0a0a0a0a0a0a0a0c0c0e100f0f0e0f10191a1a191718181810255a2e191b +1917181815120f0e0b0b0612262713070c0b0a0b09090f16181518181817 +1b20292f43be9e645d7687917d726392ad8f7b70c1ffc7c5cfc3f3ffffff +e1d7dfddd6e88e593f2b212014121b36515d65518fb4cacbbdccd8d6dcd5 +c7bab0b0b2b2b3b6b6acb5745b7ac078878493c4bee57c636686e6fffcf7 +f1fffeac606e7ba8bba1a7a0a5a0948493577688999e9f9e9a9484706a75 +f3ebbdb2aeb1b3b2b0b0b3b9adbeb8c9da95566b8b8ebeeafffff1f0eef2 +ff8b7074726a6d71685c5d5f687c776a746b6c5c676272776e6a76797573 +6c6a583a2f383e376275726a6c5b4341403444729adaffffc6405c464050 +e29687879b94665456464c66868678879a9397aa584c97a3988885838485 +8582817e774f354144230d1e34465e7997b7ba8b585f6c6e8ebddce6f5c6 +6672616c717371767c7d7c7e7d7972767a6f8488d0ff6f7c76516e6491ff +ffffff556a7f5a684aafffffffed758794925d60ccffffffbd5c79adaa60 +48cbfcf9d970686d676b7bb7c3b786867e72757978727375726d77747672 +2222232424201f1d1e1b1a1b1d1c1b19191510101416110f0606181d2020 +16201b261d19251f17251d21231d24281f2623232b2523292a331b232c27 +282e29262a392b2d24251e3a2e2d2b202c392e302a1a2f433b3b27101417 +424c50a7915431160b0a0c0d111614161414131313110f10121313121110 +151715101116150d150e0d0f11101418191214150d0d0f0a141514151414 +151616187f25131817050a0b0e1111110c0a051d3d3b18050a0d09060507 +0c1014151118130f100e1323257f55251b0a0020120c0500000103001b19 +00001751bedbcebf5a160f090d350c0007001c2d242540506e72a3a13718 +00000000131d19180c0400000000000000071f001c2b391e00000017304b +08223e2ab5d7d8cbd2cfe581493635b8b6a0abb0b6b67f575f0d54bcbfa4 +a7b8bb8b645d3153d5c2cccac5c6c4c1c2c6c4c0c1c8bfb3bf89000b0a52 +98b2b6bdc1bec6cfffce9ac2d4cfd7d4d0cdcfd5dee3e0dfdededbdad8d6 +dedfdbddebece3dfe1c4b46050555374a7c9dad3b995726052383991d2ff +ffffa632594d2e63ffc9c4d4dfeb6468586182c7d8dac3c48f7b9483546c +b1b8b4ccd0dacae1dbd9ced7cea2978b7a402c1c111006041a2926294864 +706d79a8ced1e7cb7bbeadb9aba4aba6b2b2b9cdc8bfada78d6c7596e2d5 +4c4b4c2d4834677468665d3f4e3d41432b5a6646595d3c43443f4a314640 +3636423b35494034398550001a405661626270501d69b0c9cdddd9d6ceca +ccd1d6d6d6d8d9d5101011121211100e0f0d0c0d0f11100e0d0c0b0b0a0c +0e0f0f0b0c04000715291d261c19241f16251c21221d23281e2625252d27 +252b2c351d252e292a302b282d3c2e302728213d31302e232f3c31332d1b +2c403a3a2510181330250f5842181d140604030002050303030304040405 +030406070706050406080702030805000a05020406040507050003060207 +0d080f101213141413110c0d731b0b1214040b0c0b0c0a070505031c3e3c +1700000608070406090d0f100c13110c0d0a101f218166474d4a3c66544a +3d37383e444a7381636d80a2eafbfaffe2cae0e3dde1772f21010f1d1a1b +2a2f4150a2cc9da7a8b0aeb8d0dad2cebfb5aaa7a8a9aaaba99e99565e69 +8685878394b9bfc15a57593bcff7f8e9ede5f78e503d3dc9d4c0c1c1c7c9 +926c742469d1d4b6b9c9cc9a6e673b5fe3d0dcdcd7d8d6d3d4d7d5d1d2dd +d5cee0af1c383a7fc2d8d7d9d9d2d5c5d27418222213171617181c212325 +2524211f1c191717222521212c2c201b1c16350d2536272b31302b272926 +293537262378b7ebf1f1851139311854f7963c376ea84c665241314d3d3f +466d6a6b7d62262d5d503b443d412d444041384645252b312e070a0f1621 +20263f4c3f302e4258617aafd5d2d7a63e705357493d3a303d3f475f605f +5557472e3d63b2ad343e4a355b50838b786d5b3c4b3c454d40757d5b6a6d +484f504b574159554c494c443f554d444a9762032a4e606a696774552268 +a3ada2a9a4a4a7aaacaaa4a1a7adaeaa0e0e0f10100e0d0b0c0a090a0c0d +0c0c0f0f0f0f1215151714111a17151a1d3029322a25322b24312a2d3029 +31342c32313139333137384129313a35363c37343c4b3d3f3637304c403f +3d323e4b40423e2d3f534c4a331a1b143028155e471a1f170a080807090b +0b090b090909090907080a0b0b080906090b0702030806010e0806080a08 +0a0f0e070b0d080b100b131415161616161714157d26161e1f0c10111212 +110f0c0b082142401c06080d0d0b090c10141514101716151e212d3a3298 +9186a2aeabd6c2b19c8e8c8f96a1d4e0b6b6c1d9ffffffffe0c1dae2e7f9 +a364542c2d2a180f1d284860b4dca2adb9c5c2cce4eee6e3d5c9bfbcbaba +bbbbbcafa8626a74908e918ea1c8cdcd68676e4fe0fffff3f8f2ff9e624f +50d9dfcbcfd1d9daa37d85347ce4e7cacddde0b189825679fdeaf5f4edee +ece9e8ebe9e3e4f0edecffe056797cc0fcfffaefe3dbeae7fdaa586a6c5d +605c5b5b5d62676d7275716f6a6866646e706c6d79796e67645360272f3c +36496571766f6451444646363a95daffffffa22c50472d6bffbf8688acd1 +627360595c8a898b88a08b8599814b58918d7e8e8b917e938e8c82897b51 +4f4b3b0e0b1934597488a7b09b785b5d72798fc2e8e7f2c867a087908275 +6e647478839e9f9e92927d5f6a8cd8cf4a4f5842695b8f998880704f5c4a +505751888f6c7a7d585d605b68516a68615a584d49635d545eab76153a5b +6a716f6d7d581b5483857577706f6e6f73716f6d71767973212122222120 +1e1d1e1d1b1b1d1e1b191a15100d1416110c040417242c2513131c1d1112 +2221181c191d24282c271e2331302a1e202b2a2b2e26222436382323212a +242b242c21242a201c232b2b23111b203233282b2311151a3e4c418c9151 +371d13131313151818181817171616141210100f0f0f10100f1214101115 +17121a1413141515171d272426251e1a1811111213141414141418279032 +100b13100a0b0e1113110e0a0518363516040b0c090605070c0f14141016 +100d100d1224336142240200000000000317130000110a0c034689aeeaed +dac46f170c01012a0c040c0608141c2a4265806a5631032c06000000080d +0c0f0d0d080000000000002e3f002f261d3e21040000165b16213c3cd2e2 +d1d2dbd7e67e444c37acc6c6d3bcc5de844f561977cfbcc2c7bdd1916263 +4465d7c1cccbcccccac5c4c7c4c0b7c1c6c4ce9b12216b92b5bdbdc1c5c3 +c7c5e9c08cb5bbb8bdbbb7b7bcc3caced0d1d3d3d2cdc8c2b7bdc6caced1 +d5d6dcbd9b4d454d546e99ccd4c5b37e4f55511d43eafbf5f6ff8130594a +2468f5e7adc9d7bc2f4d605868a6c7dfa486a967775f4e6b9ca5b4ece2dc +bfc9c1c2bac6af918876643627140c0902061f2a1a142a3d4e5f7eaec9c3 +eac1456c565a595456576865584b455d4d52434847361f0a333939315050 +7f925b2a313d41344c49428fa0661044544156484a3f66633d1f50503c58 +543b4592ed442b5f745b41576b5a2c559fcadbd5dadad3cecbcedaded8da +dbd80f0f10100f0e0f0e0f0e0d0d0f10100e0e0c0b0b0a0c0e11110b0904 +02081320221f131424231a1e1b1f262a2e29202734342d22232f2d2f312a +2528393c262927312a322a33272b3027222a3132291620223434292c2513 +14112a2a0e48410f1e180d08060202030101010202030304030404030303 +0101000404000105050007030408090402020600020504090f0d0f111112 +1212121216258d2f0d08100f0b0c0c0a09070405041c3a39170201050907 +0606090c0f0f0c120e0c0f0d11202d645750464b4b5652464a5b5a4a4e64 +606d73b5e6effff9f1ffe8c0d7dad2d87b442608000614202c404b40525d +6fc6bcc1bdbdc9cecdceccccc7bcb7b6b3ada9cbbd5e796f76b3bbb6afa5 +aacc624f5149e7fef2f3f6ebf284475347c3e8e8e8cdd8f39b66703391e9 +d2d8dccfe19f6b6c4d71e5d1dee0e1e3dfdad9dad7d2c9d5dfe3f1c64052 +9abddcded7d7d6d0cfbcc1771f2b1f1217171818191b1c1e222223211e1b +1816121c2529272624252f292f0824363233374f43363d241535401640ea +fdf5f0f56a173d341866ffcf444d88932b575f422b4d5a754f4d915d6747 +2d3f615d5f8c796f505c575d576245282924250a0f11161e1c213a433320 +222d445c80b3cbbfdba923422625211a19172a2b1f1515312530262f3327 +12002a3741426b6e9da96b31323e443e5b5d59a5b5792154624f64565a50 +797853325d594765624b56a4fe553b6d81664a5e7262385d9ab7b2a1a5a9 +b0b1aeaaa5a7a9afb0ad0d0d0e0e0d0c0c0b0c0b0a0a0c0d0c0c100f0f0e +12151717171318191a1c1b262e2c22213330292b2a2c35373d362f334340 +3c2e323b3c3b403634344848353737413a423a43373b4037323a41423929 +343749493d3e341f1a142b290d494211211c110e0d0a080a090909090707 +0707080808070705040403040500020505010d09090c0d0a090b110c0e10 +0d0f120e100f1213131315151b2a94361611191510101111110f0c0b091f +3d3c1b07090c0b090a0c121315130d1311142127334347858c9ba9c1cddb +d3bfbcc6c2b0b5ccc7cbbbecffffffffffffe3b9d4e1e6fbb08161391f15 +11141e38534e616871c6c7d1cdcedadfdee0deded9cfcac9c6bfb9dacb69 +82767ebcc3c0bbb3b8da705e645cf8fffbfafff4fe92586557d1f4f4f9dd +e9ffab768144a2fae7edf1e5f8b988896a8bffeaf6f5f6f5f2ebeae9e6e0 +d3e0f3fffff3748ad0f0fffff0e5ded9e4dbe6a558696052555352505256 +595e696d6e6d6865615e565f686c6c6c6c6b6f5d531d2d3c404f66898676 +714a2d44502655ffffffffff842d53492c7bfff18693b8b33a606d595585 +9db7887ab17581614c628d8d98c9bbb2929d9599909673504b3b2e0b0d18 +395d7b92abaa855c47475c7195c7e0d6f8c9466850514e433b394f534c46 +476459625459584830173b444c4c7478a8b77b4446505348626669bac88a +31636f5c716369608a8b6843655e4d6e6f5b68b8ff674b7a8a6c4f647c65 +2e487a8d86717171767572706f71757a7b782322212120201e1f1f1d1b1c +1d1e1a191a15100d1415120c07081727312a1913161a1d22231c1a1f2325 +292b2116253d2a2b1a12273c3626151a26313f2706224041392e13314649 +4622123f585750161d4a6f61442e261a171d3c5541759653361f19191919 +191b1e1e1e1d1d1b1b181a1816161617191a15191d1b1a1c1d1e211f1b1c +1b191f2a3b3f4140372d20141311121313131312142788320e040c100a0b +0d1112100e0a06142e2e14060d0e090706080c1113130f130e0d120f1223 +43443736010000000001060000030a16154462a4cbd3f1e8dfc386140700 +00240d0b0b060c1f262c395d75724b05004f0a0000000000050d00080c08 +070a08060e243c00222f3559361c1410387e2123453cced9c8d3d3cee974 +3c5338b2d7d3d7d2d8e66e57561086d0bed1b9bbf17d595c4a6ed6c9cec9 +cccbcbc8c8cccac5c9c1c5bbba9e4354a4aab1b3b9bfc4c4c1cbe7cc7e97 +98a9a4a19e9ca0a4a8aab3b5bbbec0bbb6b0c3a99ea5b3c1c3b1bfa4723e +46464142787d949c7a5d4f41343c44b4b9c1c6b64f19404514369981646e +8264123f512b4a8cc6cc9c67b1865821274053525c9b997a534d4b534953 +7d787253452821120807020c292d15071b2a3f5d80adcacaeac32c4b4649 +58534e3d382f2d2c4893c7d9bcaec0d6752d58593e3a41384753ec674e6d +5f4a5a3e353773ca4f58615040303d5bafc1783250795859473359a5f24d +2971855834606854314391c2dfd6dbdddbd4ced1dde4dadcdeda11100f0f +0e0e0f10100e0d0e0f100f0e0e0c0b0b0a0b0d0f120d05060509161d1c1d +2025261f1d2226282c2e241928402d3120182d423c2c1b202c37452d0c28 +474a40371a3a4d524d2b19485f60571d244f7163452f291c16172a361135 +4a1217120a05040000000000000000000001090907070708080904090a08 +07090905000001070702000000000000000204050d0f1011111111101124 +852f0b01090f0b0c0b0a08060405051832321504030407070505090c0e0e +0b0f0c0c110f1323424e54684a525b465053514b48535e635284b4f8ffff +ffedf5fdfdbcd2d4cbd17846240801112124263c4248422b62e3c7cecdca +cbcfd6dccdd7dbd4d3d6d4c8bbbab65a6f7a8cc5c0babaa9b5dd5e485a4d +e5f5e9f4f0e4f77d435c49ccf8f5ece3ebfb856e702a9fe9d4e7cdcdff8b +6566567de6dbe3e0e3e5e2dfdfe2e0dbe0d9e0dbdec56e80d0d5d7d4d4d6 +d7d5d2cdce9528281c262426262727262626323435373634302f4832272c +333d392b46422d153741352642313b4431262e312e3b47bbc1c7c6b14208 +2d37103ba87d2c2a544a0c435327366a999d7649a183612d2c3e463d3e76 +704f282727312a2a3a2b291516081312161c1a253f432b12131b365a83b2 +cdc8e0b3142d272a393a4137312a29294793cadec2b7cce586395757464b +59546369f96e4f6e625469524a4c86db5f666f5c4c3e4b6bc0d48d435a82 +6366554368b6ff5c397f92633d676f5d414f90b3baa3a7aeb7b6b0aaa8ab +abb1b3af0f0e0d0d0c0c0c0d0d0b0a0b0c0d0b0c100f0f0e121314141613 +151b1e1e21262a2c3134372e2e3137373d3d3528394f3e3f30263d504c3a +2b2e3c45553b1c38575b52482c4b5f635f3c2b597171692f376588785941 +38281c192a3411364c161d19110e0d0a09090b0b09090909090911100e0e +0e0d0e0f0a0c0e0a0b0b0b090b0b0c10100c0b0d141313151513100a0f10 +111214141615182b8c36140a121510101011100e0c0b0a1b353519090b0c +0a090a0c121314120c100f14212732496a7f98c1bbd4e6d5dcdad0c2bdc4 +d0cba5c4e3ffffffffffffffffbdd9e5eafcae805c3821201d1717334756 +533865e3cbd2d1cfd0d4dbe2d3dde1dbdadddbd1c9c8c163778093cfcbc6 +cabbc7ef705a6d5ff5fff2fbf8efff8c556d59dbfffffdf5fcff957e813b +b3fde9fce5e5ffa57f817094fff1f8f2f5f4f2ededf0eee8e8e5f1f4ffee +9bb1fffffcf3e9e4dedde2e6eebc575b525a55545353545556586a6d7072 +726f6b687f685d626c777566796b4a253e47413c666071775c45413e3a49 +58ced8dfe0c8561b4048214ebb985d5d79631a4c5f36518dc4cb9f6dbe98 +723b3f53625c649f9c7c53504d564c4c5d4d472c200b131e3b5f7e99b6b0 +815238324b6d96c5e0ddf9ce344f494c5b575345413e424667b5ebfee2d4 +e4fa984965645155635f6f77ff816380715e705b5b5f97eb6e737c68584b +587ad0e5a0536387696f62537bcaff6f498c9b69426d7962373b718a8e74 +75787d7a74717276777c7e7a2524222121212021201e1c1c1d1e1a191a15 +0e0d1416130d070c162935312f2d190f1d343830220e344352532b103b6a +69633629557d806a2e41688595642a508c92916d2f5a99ab9f55317db0b6 +ae4e3a86c0ba8f44271e151e375c44619a592e1d171517191a1b1e1e1e1c +1c1b1b191616161617181a1a181b1e1c1a191a1f2c2b252522232e3f5867 +6b69604a2d1c15101112121212110e17611f100c0b0a0a0b0d1011100e0a +0711262712070e0d0b08070a0e11121210100c0c100d102133282b410f07 +0e00000e191713130c0f5fadcbd2d0d7f7ece7c39b190800002300022a00 +0a201f203f5663795500004726110f0b00000000080b0d0e0e0c06081f23 +3a00223c4563432739527795203a433fcae1d0d4cedaee6a47503dc9d3b9 +c5d9d4df6b684f148aebcdc6d3c6c87c5c594f78d5d6d9cbd1d4d5d5dae0 +e3dfe2cdd4cfd2d5b5cad1c8c3c3c4bfbbb7bdc2cfc5758075897a777473 +747478766b6c717779797572625c666759596566576545282b29415d6d7e +adb36d2d211f243c196a87a7976a0c27563c0b539664655c593a2945442f +2a95f8dfe9827785661a26312d27163842271e26334844524d6463372b1a +190c0706071836391c0a182843627ea6d2e5f6ce2a3f43363f352d201b19 +2417154e859c9258456a381356522d424949454dd95843705c444a33473f +70b0294166433a444d3840462c204492634936324e6a561730787f59406a +643e2a3883add8e0dee0dcd7d2d5e0e4dadcdedc1312100f0f0f1112110f +0e0e0f100f0e0e0c0c0b090b0c0e100f0103050b27341f15223a3d362714 +39495759301640706e6a3d305c84877135486f8c9c6b3157959e99793766 +a1b7a7613989b8c2b656428cc5bc91452a201519273f1826531c0f0e0601 +000000000000000100010102010000000103030301040402000000000000 +000506030000010101030b0901000a0e0f101010100f0b145e1c0d090809 +0b0c0b090706040506152a2b1305040406060505080c0d0d0c0e0c0c120f +13263a3b4f795c63715d5b666b666264615788d3fffffff8fdebf9f9ffb6 +c6c7bfc55e373f0000141c1d2f3835514a1347cbd8d8d6d2c7c1c2c2cece +d0d1d1cdc7bfbfadac55708695c4b9aac0cfdadd4d555851e4fef0f5eaf2 +fe76505d50e3f4dadaeae7f4827f692ea3ffe3dce7d8d88a68655e89e7eb +f0e5edf0f1f1f4fbfbf7fde9f4eff5fcdcf4f8eee6e3e1dad2ced5d1c7a4 +39321d2f2428292a292724241f212324262627271c1a2423100a1215132f +22162a30455a5a60878d4b15131c2644227796b39d6b081f4b360e5fa970 +5744452d23434837339dfee0e67c6d837a3741473e36203f472e2832445a +59552b32330d0b051312141a1d2e4a4b2d13101a3a5f7fabd5e6f1c41c30 +362c393a413e3836403230699fb4ab715f8454275a52355360645d60e65f +4672624e59465a5281c0374d72504450594650573f304e996c53423f5b77 +62243c84896247716d4c3b4788a0b7b1acb1b8b7b2aca9aaabb1b3b11110 +0e0d0d0d0e0f0e0c0b0b0c0d0b0c100f0f0e111314131516121a1f22343e +2f25354a50463a244c596a6943265380817a4f406e9499814758819cae7b +4369a6aeac894a76b4c7ba714c99cbd2c96957a2dbd3a657392c1d1d2841 +1928572115150e0a0a0a0a0b0c0c0c0a0c0a0c0c0a0c0c0c0d0c0d0d0b0c +0d0b090606070e0d0e1212101116212627282a21120c100f101113131514 +121b65231612110f101010100f0e0c0b0b182d2e170a0c090a090a0c1213 +14110d0f0e142126324c68759bd8d0e8ffede7ece9ddd8d7d5bbc8faffff +fffffff9ffffffbdd4dfe2f3926d742c1b20170e1f2e385c5a1e4bcddadb +d9d5cac4c5c5d1d2d4d5d5d2ccc5cbbab65d74899ccdc7bcd4e5f1f36068 +6d65f3fffbfef5fcff84616e61f2ffe9ebfcf8ff928f7a3fb7fff8f1fff0 +f1a4807d739dfbfefff4fbfcfdfcfffffffffff4fffffffffffffffffffc +f3e5d8d4e1e4dfc35d5a4555474848484847484845484b4e50504f4e4140 +4a4a3b3740403a4f38243236506d7884b0b46c2f2427324f3188abc9b37f +192e59441d6fba8678666041314e534244b2fffcff988698853f4c545049 +3959644a414a586e6a68444f4d23160a17223e6183a5c3bb875635314f72 +93bee8faffdd364d5247534d48403c3e4c43457eb6ccc18570936032665e +405b686d696ef77157816e58604d696391cf44597e59505c65535f67503f +579f755d504f6e8a78374c9293694f79764f33346a7d8e857b7b7e7c7774 +7378777c7e7c2423212020201f20211f1d1d1e1e1a1919150d0d1415120d +0713162c3a3e555d5d2f376d909368245e88b0b7724177aacab8664c82b5 +c8b6485181add0a04a5da3b7c49f5076b7c6cc714390c0cbc45e65a3d6e3 +cd56241c10182b56484f915a2a1b14101013171818181817171515172022 +232324232222262626262726272f38362f2b282d405781999e9b916f432a +180f1011121211111113481815140d0c0a0a0c0f100f0e0a070e21231108 +0e0c0b09090c0f11121012110b0a0d070f223530293c110002010e00081c +1300195bbae9e4d6d4e6fff1eec8ab311d101035051a7510081314274159 +667b5200005b331b212a211c1a101910101d2625242e244f4500373e306b +59567fb2c4b12d4e465bc9d8cdd9ddede64644433cccdae4e6f1dfe26446 +2d3da4b7c6bbb0c9b85f4a484961949599918381796f69645e565b434f41 +39362427241d1e212016100f0400062e21493f47423f3a393a3b3d393834 +37383b3c3a3841373b49545f696b7e6b250f2224273f92ae9d908e441241 +240a28a97b52769d132139240f73d8e8decd8a313137324b447e966bad69 +6c9a66273733252a121a211d41402e23152129595e281c0f100803060a1d +3a381c0b18253e5e7ca7d5ebfbc22231381f1c110f141b1724120009470b +150e0c0e1d3674602f4c493c1f1b301232654f343a4641170d140058823c +2d48512b11181a354f80453d46422e0b0308497e7653485f60392d2e6a9d +d3e1e1dfd8d4d6d9e0dfd8dbdedc12110f0e0e0e101112100f0f10100f0e +0f0c0b0b090a0b0c0e1200000312475f62363e74979a6f2b658fb7be7948 +7eb3d2c16e558abed0bf505a89b6d8a95268aec4cfac5b83c2d3d77e4e9d +cbd8cf6970aedce8cf59271e10131f3d1f1b502311100903000203040202 +020303040403010001010000000000000000000000000000000203020202 +1017141722180504090d0e0f10100f0f0e10451512110a0b0b0b0a080605 +0405061225271206040306040405070a0b0b0e0f0c0d110c142c434a557c +635f6867715c5d6e6555709ed6fbfffff8fbfeedfaf6ffbbc5c3bdc25b48 +8712000c1525353e3c5344083ec8c7c0c6cfc6bfbdb3bcb2b2bfc8c4c3c5 +aac5ac48828479bdb6b9e1ffffe049605b72e5f5edfafbfff956515351e8 +fbfffbfff2f77b5d4757bdd0dcd1c4dbc86f59595c76abafb5afa3a29a90 +87827b73796470645c5a474c47403e403d332b2c251a0f250521111a1d20 +222222201c1c2a2c2a2a2a2b2d2f3d363a464c5155576e5f1e0e29313750 +a1baa495904211432d1939bb8e6383a4152139281985efffefd88b2f2b34 +395e65a6c290c77469997642534f424a333e46476f7060584c4628434815 +0c05110f11181d304a482b141219375b7daad6ecf8bf1f323f2c2f2f3945 +49454d38162a63262c231f212f447862375a5d52332d3c193568553e4957 +51271b2008628c4635525b371d262a4358874c454e4b36160e1352867e5a +4f666a4844437798b7b7b1b1b4b4b4afa8a5a9b0b3b1100f0d0c0c0c0d0e +0f0d0c0c0d0d0b0c100f0e0e0f101212141a1019222d586c75485186aaac +823d78a1cad08c5a91c4e5d281669dcfe3d0636b9cc7ebba657ac0d5e3bd +6f94d6e4eb8f62aedfe9e37d86c4f4fee46c382b1a192340231f56291718 +110c0a0c0e0f0e0e0e0c0e0c0e0e11111212110f0e0e110f0f0f0e0b0c11 +1010111414151b233b4747484c3a1e13101011121515141415174c1c1b1a +1311100f0f0f0e0d0c0b0b15282a160b0c080a080a0d1212130f0f100e12 +1d20314f7083a0d6d1daeeeff3d9d2ded1bfdaf5fffffffff8fcfffbffff +ffc5d2d9dfed8a79b53818140d1625333e5c511344cbcbc4cad3cac4c2b8 +c1b7b7c4cdcac9ceb6d1b54c85867fc8c7d0fcfffffa5f767084f3fff8ff +ffffff65626362f6ffffffffffff8d6f5868d1e4f1e6dcf3e1866e6b6d87 +bbbcc1baaeaba397918a837b816d7f7772746369655c55544b3b32302c25 +1e381c3b2b312f303032323131303b3b3b3b3d3e41424e484c59636a7072 +8877301c333a4460b8d4c1b2a958214f362043c99f7796b6242d43312391 +fdffffec9f3d373d41646caecda0d8887eab834b5e5a5057444e58577c7c +6960514f38585f28190e16223e6084a6c3b78857362d496c8fbbe8feffd4 +3447523d3e39384147455343243b78393e342e2f3b4f846e4263665d3e39 +4c2946776148505f5e36282c146c964f405c65432933394e618d56505b5c +4928222563938962576e734d3c325d78928d837d7a7777757573757d807e +2221201f1f1f1d1d22201d1d1e1e1a1919130d0c1315130d071817334755 +808f6a304281a5ab83336f9ac4cb804d8eb8d8d3836da3c7d8c87174accb +e7c6788bc6d5e1c07c9ed0d3e89779adcbd6d78a87a7bad3dd5924211214 +274d4e467c582b231e18171a1c1b1b1b1b1a1a1a181d2b2f2e2e2d2d2d2d +34302d2f3233353a3e3b33302d344a638fabaeaaa2794227181011121212 +111114194017110b07100b0a0c0e0f0e0e0a060d202210070d0b0b0a0a0c +0f11100e100f0b0907020f282220162e0e0000030a050607051d65c1e9f1 +e3e0e5eaf9fdf7dbc16a574a5169172277150f19141f38536972570f0553 +8167758985838474615757626d7177828186530031475264747b7a898772 +1039444b574a5a7173758c002e3d22484062795b1f2d02353131252d571e +2bafa236444443341e08050100010407111a1e1a14031a14191f21201e21 +25292723252828211e3e394d41403a373432343538342e29292727272523 +1b16286ec2d2a9869a69160d2f33152e05000008280f063334158edf3c00 +3f5819172d200b312f04537355254c4e1c1f6ab2cdccb552889551323f2d +1419100f000e5d552b11081a17525720180e0e0401050b182d280f061518 +2b4f78aad1dafda81d2e3b241a1b1520281d262f2941b94a211d2d131c2d +614b23494c3716130f2444634a3c3e554d1e2a252b46584c3c4541302025 +0b13605c283e4d432a141d134e746f435158584139254993cbd6dfdfd6d5 +d7dbe0ded8dadddc100f0e0d0d0d0e0e13110f0f10100f0e0f0d0b0a0808 +090b0c1200030c226d8e713b4a8cadb68b3e77a5ccd6885896c3e3e08e7a +aed4e3d57c81b7d8f2d38398d3e4edcf88addce2f4a685bcd7e5e39996b3 +c2d9e25c272312111c382b1743250b0d0800000000000000000000000000 +010000000000000003000000000000000000000000000103141e1b1d2a19 +0000080e0f1010100f0f11163d140e08040f0c0b0a070504040505112426 +1105030205040305070909090c0f0c0e0d0916353640466d5f5a61686c62 +5d5a566fbbfffffffffffffef9fbffffffdbe0dcd9da5f4986180a141722 +313d424d451936a6f0e3effffffdfdeddad0cdd8e3e7ebf2e8e3a7447587 +93a7b8c1bbc2b3902045596572677a918f90a20e3f50396561828e6c3040 +174c484b3e466d333dc1b2465557594c392423222226292d343d3f3d3628 +3e383d4042413f404546454144495044354835423536393c3f3f3f3e3a3b +41413c383535373a3634468ad8e3b48ea2711d13373d2545201708203817 +08354128a0f24f064f64211e3429194549206d865e27494d233490e2fffb +d56286925a445548343f3c41324a9c966f554c4d2951541c140c110c0e16 +1b293c361f101414284e7aacd0d9faa51e374d403f474755594b51554b5d +d05d302936192231634f2d575e492621182a4a6952464d63592a342f334f +6155434e4a3a2a2f171d67602c44534a311b241a557a754a555f65545440 +5b96b7b3b2b1b2b3b3aea6a1a6afb2b10e0d0c0b0b0b0b0b100e0c0c0d0d +0b0c100f0e0d0e0f1110101c0e1d2c4181a0844f5fa0c2caa0528cb9e1ea +9d6cabd7f7f3a28dc2e7f7e89094cbebffe697abe6f7ffe29ec0f2f5ffb9 +9bcfedf8f9aeadcbd9eff86f38301c18223d311d4a2c1619140d0a0d0e0d +0d0d0d0d0d0d0e0e17171816151414121912101114121618141213141416 +1e2842525151573e180f1211141515151414181d441b17110d15110f0f0e +0d0c0c0b0a142729150a0b0707060a0d1214110d0d0f0e12191b30555b6f +84babbc2d1dad9cabeb6afc5ffffffffffffffffffffffffffe1eaebf3fc +8774af391e1a0e111f32435551233bacf9edfafffffffff8e5dbd9e4eff3 +f8fff7f2b149768797b0cbdad9e0d0aa375b6e768375859c9a9baf1c4f5f +497372919f7e42512a5e5a5c525a824855d9cb5d65656658442f2d292b2c +2f303a4144413f314a464d535554525254544f49494e52483d5243504141 +3f404345454746454745423f3e3e41423f3e5096e6f5c8a3b7842f214249 +3455352c20384f2a1741472eaaff60185f722c263a302250562e7e956d33 +5455293993e6ffffe2729ba569506253414a494c3d54a39c72584d513361 +672d22171a1f3a5c7d9bafa1764e3423395e89bbe2ebffba32485b4b484a +444f564b575e576be26e43394729303d6f5a37606853332e273858775d50 +546c653640393e586a5e4d575344343b23276f693750615a432e372c6588 +81545e676d584f314579968d8880787677757472757c7f7e222323232222 +1f1e22211e1e1e1e1a1819130d0c1315120e081a193f5d71a6b2844e69a0 +a7ac9d5f98b3c9d59a76b4c8c6d99d92c0cbdad08d8bc6ced8cb91a3c4d1 +d4b8809fc4c8d9988baabccdc8958da9afc3d549202a17142440513d5e51 +33363836353838343939393939373739383937373a40464a4e443c3d4142 +41444d4b474644495b718ca6a19b996e371f191011121313121213162e0e +0d0702100b0a0b0d0e0e0e0b050d21230f060c0c0d0c0c0e1112100d0c0c +0808030011342e273466534e4e381e3e4e454c78a6c7d8d6d0d1d0cfd9e8 +ddcdb48d80777f8c08062815171c100b334b64594a1a001c1100000d0000 +000000000000000000000000000030484d01192400071e2e104d4249284a +8c9395a49b163340384190e0bdc8c79c091f3e425dc3bb3472d87c4c3038 +4d4a3031393d3534302a2828241d1d0f1d0d1817211e1d23241b100a0a0a +050b0e1a100e0e0f0c080505070b0f1218181818171613111d1600104642 +212029211319292e2f937b4a6984400e252c1e22adc76666864502274614 +35b3b74b535738243f4b2632914500010c217b6d524d4e3e2519120b110c +4e371606020c063e43121b17130701060b1420170505141725426ca7d2db +ff8f1d2e361f060e060a1c181d28212b8d915e2b251f36525a4530565a35 +191b232c36452a3a465344111b0735613c19434e4934131c214e603d2343 +454133362c155b766c2e595d4f3930202c7eb4d0dcdedcd8d7d9e0e0d8da +dedd101111111010100f1312101010100f0d0e0d0b0a080909090912000a +1d3a8cad8a5a74acb2b8a86ba3bfd4e1a582bfd4d2e8a9a1ccdae6df999a +d2dde4da9db2d3e2e3c98fb0d3d9e8a99abbcbded7a59fb9bbcbda4c212c +17111a2f34152c1d00050702010404000505050505060504000000000003 +090e12050000020201020b0b0f12100d0e1114221b1b2c170000090e0e0f +10100f0f10132b0b0a04000f0c0b09060404040604112527100402010403 +020407080908070c0c0d0c071c43444964a49ea6ab977a96a1959bc7f5ff +faf0f8fef8eae1ebe7eaefe1e2dddcd93d283619141b160f2d394236361d +0d53543d475648434332333831221e272e2d2633392c6a808233484d1e25 +353e185859644567aab1b1bfb12c4957525eb1fdd2d9d8af1e36555974da +d04984e88a5d424c63624d4f5c635a5c58524e4e4a45443743323a373f3a +394041392e2b2d302e332d321f191c212426272929282626302d2a272423 +242535311827574e2726312a161b283036a39165839a4c131e292935c0d9 +777593510a304f1f46c7cf61605e3b243e4c2e41a862091d1d2a7a694f4e +554e3c3b3e3f4b4b8f7855453f3d224b4b151b17160e0a1418222e271612 +1a1927446ea6cfd7fb8a1e3a4e42333e30323f393a40343895965c271c14 +294a5c4e3a63684325252b323c4b324455604e1923103c6843204755503b +1a242955644127474847383b311a617970325c645c4e4f404588a6b2b2b2 +b5b4b0aaa3a3a6afb3b20e0f0f0f0e0e0d0c100f0d0d0d0d0b0b12110c0b +0c0d0e0f0e1d0d263f5aa5c3a0708ac2c8cebe81b9d5eaf7bb98d5eae8fd +bfb6e2effcf4afafe8f2faefb3c7e8f6fadda6c4eaedffbdb1cfe2f2eebc +b5d0d1e0f05f3339231a2235391d3529111a1c18171a1b171c1c1c1c1c1c +1e1e1d1c1c1a1d22282a2e201a191d1c1c1e2726282927272e3742544e4c +563a11091413151617171616171a3212130d0815110f0e0d0c0c0c0c0914 +282a14090a0707060a0d1213110e0b0c0d111516305a5b648ad7dff0fbe9 +c7dee3d2d6fffffffffffffffaf1eefaf3f2f3e1e1dfe4eb5d4d59342520 +0c001d2f413c4126145a644e586759545544454a4435313a41403c454634 +6c81883e5c693e4754582d6c6b755575b5bcbccabe395765616cc2ffe3e9 +eac02f46676b86ece55e9affa47150576e6c55576266605e5a52514f4b47 +4b3f4c3b44424a45444849413630313330333036241d1f21242426272a2c +2c2d34302e2c2c2c2e2e3f3c253769643f3e463b272a363f46b3a67a9ab1 +62262e342f39c7e58788a45f153754234dd0db6f73714a2e46513146ae6a +172b2f3b8c7a6260675d4c474b4a5654957e5a4a42412654582427211f20 +3153748b97876449342534517bb4e0e8ff9e3048584838402f31413e424c +4249a8a971382f253a596857446c714c313138404a573d4e5c6858242e19 +46704b28505d5845242f345f6d4a325357574b4e442d71887c3d656c6453 +4a35327089908a837e7875747476757c807f262728282826232223211e1e +1e1e1a1819150d0c1314130f081b19476e84bcc2ab687aaaabb5ae7393a6 +b5d0a789b4a9c7e4a697b6bbd4dbaa95c0c3d3dc9e9bb8d1dbc78fa3bec6 +d89a90a3b5cab5887db1bfc9cc34142e170f1d324930404038434b4c4f53 +524c5656565656545654595755575f6b7a828271646366646360615f6064 +62657181869c948a8d6834211711121313131312130e1a04111107110b0a +0b0d0e0d0e0b040e23240f050b0b0d0c0c0e11120f0d080a07050100143c +2e19347150432e0000000000001418181110080005171918171200000000 +0000000d0c3f2e251e191f4265473f2b03355c4151665b606d64617d8068 +6581928db2bb5f083c517b61a4be9bbfc18830454a61488aa74a2e547117 +2839412d9dd21e2886b1272641313771c9a092c688474038423616130c00 +0a0c0906070a080206021408181319120a171c150d0b0b0a070909111a14 +1910100d0a0b10151b1f202328292c2a272316272958a697544551351e20 +2f3a32a99d3c253e2615292a1d277a511f131f191d1e431b15413f021d19 +29463b301e44d569151b1240585d484b45473a2317071200110007202c30 +002c2f061d201b0f020a0f141b11050a16202d3e5e9edcf2fa751c353e2a +091413030d131b281f1d33945924242e35583c2e2850592b191f25293b47 +1833545c47102b244b753723454a4237191f1b46552b2445454e2b15211e +818a6c1c5a5c4821181f1b6297d1d6dfe0dad6d5e0e3d9dadfde14151616 +161414131412101010100f0d0e0c0b0a08080809071100102a4b9ebab174 +86b6b7c1ba7f9fb2c1dcb395c0b8d6f3b5a6c5cae3eab9a4cfd2e2ebadaa +c8e1ebd79fb3ced6e8aaa0b3c5dac59a92c3ced1d135152d170e1623320f +161000070f10131716121c1c1c1b1b1c1b1c201e1c1e26323f4747362827 +2a282424292b2f302c26262a21312928392300000a0e0f101010100f100b +17010e0e04100c0b09060403040603122728100301000403030407070708 +030a0b0d0a071f4c42375da6918f7f433f413e3b46595d53393338313439 +2a21232a2a383832312a27281a412e25251f1d3449282a281657866e7c91 +868b988d8aa6a98e8ba7b8b1d6e18933697da385c0d3acccca903752617e +65a6c365466c872d40535b49baed313896c23a3b56484c86deb2a2d59756 +524c595233352f26323433302f32302b312d3d2d3b32352b233038322c2e +313231332d31342e332f343637383838383838363736353433342a3d3f6b +b29d554553361d1c2b3835b2aa4c354a2b121e2426398b5f2a1e28212627 +4d262452510f1e1627463e35264ddf721d2317435a5a434a4a5756494942 +522c5441465d6660143b390a1b1e1b1208141a212a22191b21273442609d +d5e9ef6c1b3f544d36443b252c30343c2f293995561d192227504038355d +633521272b2f414f224061694e142f284f793b27494e463b1d231f4a582e +284949512e182421848e70205d6355393a443b7391b8b0b4b9b6aea6a3a6 +a7afb4b31213141414121110110f0d0d0d0d0b0b12110c0b0c0c0e0d0c1a +0a2f4f6ebad2c98c9ececfd9d297b7cad9f4cbadd8cfedffccbddce1faff +d0bbe6e9f9ffc4c1dff8ffeeb6cae5edffc1b7cadcf1dcb0a7d9e3e6e549 +273b23161d2a3818201e142028292c30302b3535353737373939403e3c3e +46525f656552444346423f3e424245474441454d495b534f5b4016101415 +16171717171617121e0817170d16100f0e0d0c0b0c0c08152a2b14080906 +0706080d1215120e070a0c0f1113315c4d4271c5bbc0b47971716661687a +7e715246443a3c453a3231342a33302a2f313d4635583a271d110e2b482d +33311d6096818fa4999eaba19ebabda3a0bccdc7eef6973c6e80ab93d5ee +caece7a74a62738e73b2cf705276943a4c606a57cafe4048a6d24b4c6758 +5f99f1c6b9ecae6b5e536156393733293436322f2f32302d373443334137 +393027343b362f32343430312d30332d302a30303235383a3e3d3c3a3c3c +3e3d3f3e354a4d7cc8b5715f68482d2b394544c3bd634c603f232c2e2b3d +936c3c30392e2f2c4f2a2b5c5f20332b354e43382852e88130362b56696b +575c5d666454544a5b335a474b626a64153e4316282923212849697d8774 +5847352f3e4d6cabe5faff7f2b4b5f5139443b272f363b473c3749a7672d +2930365d4b413e666d3f2c32393b4d5a2c496971581d3a31588244305257 +4f44262c2a536137335455603f293732939a7b2b666b5e3d393c2e61799a +8b87827a73707479767c8180262525242423212020201f1e1e1d1b1b1a16 +0d0d131614100c10244c747ab7beab7f7b95a6aea080909ba3ab958399a2 +bbbea096a4b2c4c29797aab8c7bc9a99b6c3d9be9ba2b6cdc8978c9cbac7 +a17e8b9bcbc3be200f331915182d46403235364b5f676666625f695e666d +6360675f5f5b585f70879eaca28a70666a6b62514e4c4f52585d63666766 +635f534029161511121313131312110f0c0c0d0d0c0a0d09090d100e0c08 +060f23230f050e0f0d0d0e0f0f100f0e0a000707090045772d3338120000 +000000000000050d121709090402050b151b1a17100b0b0c1417100e182a +35301f14192534352a2327336f4642554e352e35192e3021162c5277935e +2e083b505702609430383746253a39471157c59f8494692332343f0e389c +342314231c30384124287f72779b7d4640484a331717211b251928131a1b +1f271c1b1f3a26393229362d2a2f31281f1c24201f242a2c2a231f1d1c1b +1d1f222524262a2b2e2c2a291b22087ba72e0e292d272025292a4571171a +201f1a1b2833212c352c22221e17091b212027261914232a27282c241f27 +30282b26285768412f51473218301f0605000006114b572100171e13172a +281307071018150b060b1a1e1e28405a6b71644e2f2a3e3f291a151d1417 +1011282546a332171c28354a2a1e3f4e612c112825333e321e423c501e1b +22345a592d25584e4b2010272e4443252b4954361023225c8b614335545b +35231b13198891c2cdd7d7e1dbd6e9e0dad9ddde14131312121112111111 +1110100f10100f0d0b090707080a0b0400132d3e96b4b18d89a3b4bcae8e +9ea9b1b9a391a7b0c9ceb0a6b4c2d4d2a7a7bac8d7ccaaa9c6d3e9ceabb2 +c6ddd8a79caccad7b190a1b0dacbc3210e31171413223226110c05152931 +3232302f392e363d3332363134302d34455c7280765e42383c3e32272d2d +29262322202122232729261908000b0e0f101010100f0e0c09090a0a0909 +0e0a0706060402030513272710030404040405050505070905000b0f120c +51853c4655391c2d3237373636383e454a4a3636393a3934302d2b2f3338 +3a3a37352d24232d3531241a171b1f1c171930478d6a63766f564f55394e +503e33496f8ea26a4120586e74186f9b34393b4d314c53642d71dcb598a8 +7f394a4f592854b3443021332c414b57373b908186a78953525d614c3336 +43414d41523d444549504746485f48574c414e47464d504b45444c474344 +484a4946434443423f3c3837363535343233323329321888ad2e081f211c +181f26294573181b1c1a13111d2d293a3f342725211b0d22292a30302217 +191c1f27312d252a2e21211c23546a45355a594e40655e4d5046484d5288 +914d122121110f202212090e1a26251d1b1e2a29292f43586363533f262c +4c5c51463d4037362d2a3f3757b03a1e1f28344d342c4c586830132c293a +473c284f495a221e25375d5c30285b514e23132a314746292d4b56381225 +235e8d6345375864433c413d41a092aeabaeb2bdb3a7afa5aaadb1b21211 +1110100f0f0e0e0e0e0d0d0c0c0e13120c0a090a0c0e100e13335564b5cf +cba7a3bdced6c8a8b8c3cbd3bdabc1cae3e7c9bfcddbedebc0c0d3e1f0e5 +c3c2dfecffe7c4cbdff6f1c0b5c5e3f0caa8b6c5efe0d735203f241c1a2a +3b2f1c1a1a2c40484949494751464e574d4c534d504c495061778d9b9177 +5c5256554a3d403f3e3d3d3e3f40414243433d2e1b0e1617181919191918 +171510101111100f120e0c0d0e0c0a090a162a2a14080c0a05050a0e1013 +121009000a1117156192414a5d483349525654504d4c4f54595b4b4b4949 +474645413b393735323030353d3c393e3f331d0e0b121e201d2237509878 +72857e655e64485d5f4e43597fa0b982522c60767c2684b5515554603f58 +62723b7eeac2a3b18a44565a663762c3544031423c515a65484ca2949bbd +9f665c626750373845424d41513c434448524d4d4e654a594d414e46474d +524d48464c464343464844403f3f4041414243413a383b3b3d3d3f3f3641 +2899c346243a372d272b2f3151802a303330231c25312c3d48413a383227 +16282c2c373a312a31332e2d342c252f3b33393439677751436967594a6b +6551554a4b51568d95500f20281c1a29261a2038586f705f4a3c372d2f37 +4c65727465523739576053453f443b3b3331474161b9452828303a543d35 +5562723b1f3735445045325852632b252e3e64633931645a552a1a313a50 +4f32395763472134356d9c705143616b4c4142393893809588827b817871 +81797a7c8081252524242424212120201f1e1e1e1b1b1b160d0d1316140f +0d10254e757cb7bda8807f96a1a59a7e88939ba28b798f97a3a88d8795a0 +aca88f8e9ea8b3aa8e92a5b0c7b095a1b6cbca948aa1babb98818da9bddd +a211092b1f181527423e2f2d24323e403f3b39343e3b2c2a3939353f2e2f +34342a1d202925242a35404035262221272d34393a383a332e2b271d1207 +1211121313131312110f0c0c0d0d0c0a0a08080d10100e0b070f22220e05 +0e0f0d0d0e0e0f100f0e1407080000006a7533424f2d0a0b05030102040a +0f181c1e100c09080b11191e1716120f0e11161710101a262b241a151b1f +2728211c1d2213000007060000000a03000f04083802201a201c4e56580b +148c23100d22284c4e43034393501c1a2310303d4c143bb9261d12251e32 +3a452945d51b00051a2b35414c402f30393923202722191929181b1c262d +1e2023211b16151919120c0e100d0a080a0b0a0711111112141619191514 +191b1d1c1918161f032b782a25312f23151e2e2d2b381e2429271d181f27 +21222117181e1c150b132127251d1c1f262f2a232522232e3d2824222950 +5c373746554625070e1c0603010000435218031b1e1618282a1f1714191d +19110f1525241c14161b1c1a24241d1d2a302d33222010071d110f102c72 +1e12192626351f164258622c0f1c3d3c3b281847474e1b1d2a3c564d272d +5954441f142a3c4c341c324e5d350e153c627a583b3b59625113112219a3 +c5a3ccd6d3dbd6d3e6dedcdcdedf13131212121212121111111010101010 +100d0b09070708090b0400132e3e95b3ae8e8da4afb3a88c96a1a9b09987 +9da5b3b89d97a5b0bcb89f9eaeb8c3ba9ea2b5c0d7c0a5b1c6dbdaa49ab1 +cacba893a3c0cce5a51006271c151020322a150e04121e21201f1e1c2724 +151322221d291b1c2121170a0b14100f131e29291d111615100c0807080b +1416191b191104000c0e0f101010100f0e0c09090a0a09090b0906060606 +0406061326260f03040404040504050507090f070c050904767f3a4c6048 +2e3635373837383a3e4347493b3b3c3d3c3c3939313233353534312f2823 +232a2b251c181816151410111e2c29181723211b1813221b14271a1e4e0f +1e1523255f686817198d210e0f293660685f1a59a5602d2b37274858642b +51cc33261e312c424c573b56e5280110223643546158484e5b5d49484f4c +4343534146474d53403e3d3b3430323738343234342f2a28282929273131 +2f2e2b28272728292828272626262833163d832f23271d120b1b3232303b +1a1b1b180f0d1626272b2519151919130e18262f2a211e1c1c2324242b2b +292f371f1816214d60404358706b5644536a55524c393d7a843e131d1b0c +0b19201916192129282322283632271d191811090f11101934444f594843 +31283a2c282740852d1f2431304030294f60642c0d1c3f43443525545457 +1e1d2a3c59502a305c574722142a3c4c382036505f3710173e647c5a3d3f +5d6b5f2c385046c2cb94adb1aeb7afa6aea5acb0b2b31111101010100f0f +0e0e0e0d0d0d0c0e14120c0a090a0c0b0e0e13335667b6cec8a8a7bec9cd +c2a6b0bbc3cab3a1b7bfccd1b6b0bec9d5d1b8b7c7d1dcd3b7bbced9f0d9 +becadff4f3bdb3cae3e4c1a9b8d2e1fab8221736271e17283c33221d1321 +2d30302e2f2c373627273636333e313235352b1e1e27232225303b3b2d20 +2221201f1f20212229282828261d110716171a1919191918171510101111 +100f0f0d0b0d0e0e0c0c0b16292913080c0a05050a0d1013121013070b05 +0b0d848b404e67513c47494c4c474646484c4e524b4d4d4d4d4f4e4e423e +3a36322e2c2f343434363527190f11111516161923353423222e2c26231e +2e272033272b5b1f342c3634697275252ca23724243b436b756b2866b36d +3733402f526370395fdb43352c3f394f5a654966f539132437484c5a665c +4c505c5d4a484f4b424252434c4d5256423e3c38312d30353a3533353430 +2927262724222e2e2f31313234322c2a2d2e302f2f31323e244b95433b40 +3322162235353444292e322b1e15172427303026282d2a21171c2931302c +2d2f343730292b28273343302e2c365e6b494f647b735d47586c59564f3e +42818b41101a22171520211d24365263615342393e352b2220231f192224 +21273e4b515a4b49382d40332f2f478b3425283331423730586b70381a26 +4b4d4d3d2e5d5d602525324460573339656050291c3244544129415c6c44 +1d244d718967494a667468313d5043bcbf7f8e85797b746f7f787c7f8182 +232324242424232320201f1f1e1e1c1b1c170e0e1316140f0e12254c757e +b8bca58283979d9e957b88929aa188748a93959a838190959b9386869297 +9d96818c969db19f8b9badbfc38b86a0b1a88a8188aeabec76090e2c251b +13243f3e2c20131619171413100a1b35384a6f592a2c2f1c0f0f1212161c +0f1116191915110a13151e242d2f2d281f150c0a0c0c0a07101112131313 +1312110f0c0c0d0d0c0a0b090a0d1112100b070e21210e050e0d0b0b0b0c +0d0e0e0e08010d06151daa91344555341c180f0c0d0c0e11161b21211513 +0f0f10131a1d16140f0d0c0b0c0e10131a1f211a1618211e1d211f1c1a17 +140f1416172325150c120b1b1f53ba251f2735365a564f0a51c744212220 +1c383739001d4217080b1921303641102fb0181411241e353f482e2fb323 +190d18433a484d3d2414100e090c07110002170008090b030c1212040e0a +0b0d0a05060a0f0d0a08080c0f100d0f1013141718130703080a0c0b0807 +000701005c1b10102a220e142a26140d131c24251c161a231f1c150f1723 +1f140d0e1d211b282b1116211c1219222930391d151f2d484a2b2a394317 +1e1e240513191e29313933000d1c1f191a242b2a252121211e1a1c221f22 +221f1f222424232c271c1a120f1712181a021d0d0c240b30030917322c39 +1e1e576c5a27131e42393325235b62511416263746361d3765623f1d101e +3b3e3320485b6f3e20193d5457462f485f63504b4146358dbdbacbd7cfd4 +d3d0e1dbdedddfdf11111212121214141111111110101110100e0c0a0708 +08090c0700132e4096b1ab9091a5abaca38996a0a8af968298a1a5aa9391 +a0a5aba39696a2a7ada6919ca6adc1af9babbdcfd39b96b0c1b89a93a1c5 +baf3770508241f150e1d332e18100e171c1c1c1d1b172a46495b806a3b3a +3b2819191c1c1f25181a1d20201c16111e1c16120d0e101319191b1c1b15 +0d050d0e0e101010100f0e0c09090a0a09090c0a08060708060606122525 +0f030404050505050506060903010f0c1d26b49934455b40313532323637 +38383a3d3f413a3b3b3b3b3d3d3d3535353533312e2b2623242621191617 +1d1611121313151c25262b2d2e3a39291e241d2d3064cb2d16182c33605e +571053c6412025292e4e52540f2d4e2112182a35494f57233fbd201a192c +28414d563c3cbf2c20141d4a47575f523c302f302c322d39282a3f272f30 +30262e302e212827282b2927282c2d2926242526292a25242322211f1e1f +2527262726242424212a2416742d1c111c120b1d3b3b2417100f13130f10 +1d2a2821150b0e17160e0c1122261e26240d172520171f282e343c1f1721 +304c51353c516140505b69505e626165666559111317140906111d222427 +2a2d2b292c312e302d27221f1a140e1716161e232b393339381f3a28253b +1f43161b27423a49333265725a240d1b423d3e3230686e5a141525374939 +213b69664220101d3a3f37274f5f714020193c545948334f666c5d646a77 +66b4cab1b0b4acb0aca5aba5aeb1b3b30f0f1010101011110e0e0e0e0d0d +0d0e14130d0b09080a0b0f0f14335869b9cfc5aaabbfc5c6bda3b0bac2c9 +b09cb2bbbec3acaab9bec4bcafafbbc0c6bfaab5bdc4d8c6b2c2d4e6eab2 +adc7d8cfb1a9b5d7cdff891616312b1f15253d38241a141b21201f1f1f1d +2f4d506388724545473423232626282e2123252828241c17242423222223 +242425222020201c161018191c1b1b1b1b1a171510101111100f100e0d0d +0f100e0c0b15282813080c090505090d1213111007010c0a1f2dbea64051 +6950424746474a48484748494a4c434546464b4d51524946423d38343031 +33323030291e16131a13111517181b222d2e333536424232282e27373a6e +d53a292d41446e6b641e62d65232363838595d5f1d3a5a2b1c20323c4e56 +62314ecd2d282639344d5a63494ccf3d3227315a505c6355403331312e33 +2e392a2c41293637362a30322f1f272526292b28292d2f2c272523252627 +252527292a2c2e2b2523242527282728232e281e803b2c232d1f121c3534 +21191b2026231912162225251f1a232d291c141625292531341e2931291a +1d242a35432b26303f58593e465b6b46575e6e536368676d6e7064180f13 +1a1412171c1f29374b57554a3c3831312f2a272825211f282622292a2e3b +3a42422742312c4326491a1d27413a49383b6e7e662f19244c46443a3971 +7a631c1b2b3f50422c46746f4b27182340444031596a7d4c2c254a606554 +3e597075666b707b6ab3c3a0938a7674716e7d797e808282222323242425 +232421211f1f1f1e1c1c1d19110e1316140f0d13264c747fb7b9a6828398 +9fa0957b8c979fa58a768c96979a81829295978c82839090938b7a8a9293 +a39081919fa9af818295a097807b7b9899c6430d172a241b12223e3b2416 +0d0c0e0c0b0a0700554d2b1c2b22111d00224d66644b25070a0908050305 +0b0f0b0d161b21221e19170d040207090a0a0f11121313131312110f0c0c +0d0d0c0a0d0e0e0f1214120b080e1f1f0d050d0c09090a0c0d0d0e0d120f +100000003b23363f48211e1d171211101112151a1e1f1413121112121313 +11110e0c0a09070a1214181b1d18191c211e1c1f221e1e1c141118171621 +241408101207053cb2242b27212a595c52151e5500071a1813404057160e +0f0e1e140a1b333d430f0538111211201935434c331a110d230e19353e4d +513e28150b0c070a010a05050b0b070f0c040c181408100e0d0c0c0b0b0d +0e0e0e0c0a0a0d111113171819191b15080408090b0b0a07080413106824 +0514212213101c1c0f0a0a141f221b14161f1e1c17161f272113131c2921 +2a5a59111a211a0d18262a292a12132a3a423c24473a3a2a1c0109160518 +00318699931b121b1e1b1a20292f2a2827252323272b24292b2725252928 +2a2b211d221e1213271e23041d1a161924240d0f0e271e28192466724920 +17212d292a242f656b4518131c2936241c496a66361b1011302a27195053 +66342214213a3d34225764507aad9eaba1a09592c6d8ccd0d4d1dcd7dbdc +dedf10111112121314151212111111101111110e0d0a070808090d080013 +304297b0ac9091a6adaea3899aa5adb398849aa4a7aa9192a2a5a79c9293 +a0a0a39b8a9aa2a3b2a090a1aeb9be9191a5afa78f8d95afa9cd42060c20 +1c140d1b342f170c121a1e1e1f22211d736c4a3b4a41303c1f416a838168 +41232625221f1d1f2327201f1a181514161926272626231e150d0d0d0e0f +0f10100f0e0c09090a0a09090e0f0c08080a0806071223230e0303030505 +0505050506080d0d120101014429333a472629303131343536373637383b +353637373838383836363534322f2d2b282522221d1714181b1513161918 +181d1f22292827323223151d1f140f46bc281e161623585e54171d550009 +20242457586f26181512221d192e48545720114015161527223f4d563d24 +191529111a38475a5e503b2d272b292d24302b2b31302c322f252e373226 +2e2c292a2a292a2b272727262424252723222221201f1e22242726262525 +23252726352d7f350f161516141c3337261808070c101013202d2720140e +1218140b12202f272b574e0a222e23161d2b2c2d2f191b32424b432f5852 +584f4b38485945573663aebaaf2c12110f09060c1b282b2d2f2e2c2b3034 +2e33332c26221f1a1819131729302e32433a3d1c35302a2c35331c1d1933 +2836303d747946180d1b2c2e35333e73774c18111b293627204d6e6a381e +0f102e292b20575a6a362214213c3f38295e6b5987c4c9e0d8cca88eaeb7 +abaeb0a8a9a2acb0b2b30e0f0f10101111120f0f0e0e0e0d0d0f15140e09 +07080a090d101533596cbccfc6aaabc0c7c8bda3b4bfc7cdb29eb4bec0c3 +aaabbbbec0b5abacb9b9bcb4a3b1b9bac9b7a7b8c5d0d5a8a8bcc6bea6a1 +a6bfb9df52161a2b271c14233d392115151a1e1e1e22221d756e4d3e4f46 +354124466e87856c4426292623201e20232723232323232323232b282524 +24211b161a1b1c1d1d1b1b1a171510101111100f1213110f1012100c0c15 +262612080b080404090d1214130f110e0f0004074d37444e59393b414243 +47484949474747473c3c3f404345484a484844403c383634332d2b2a251d +18191b1616191e1c1c222529312f2f393b2a1e25281c194fc6332f292735 +686d63262b610b162c302e5f62793324211d2d2420344d5a602a1f4d2121 +20312b4857604930262239222c475060645441312a2d2b2f26312e2e3436 +3238332a303a34282e2c2a2a2c2b2c2d2b2b2b2725232525252528282a2b +2d2b252324242626272729283731873f1b232322181a2b2e201813181f20 +1811152022231f1d262d261a1a232f2730625f1c2f3628151925292c3321 +263d4d544b35625c6257533d4f5f4e603f6ebac9bd36100f161512151820 +2633444b493e35332f3436302b2928272627222331342f354e464a28413b +33333c381f1e1b33293736447d835123182534343b38457c835620162131 +40302b58797544271716332f342a616475422e202d484b433368756290cc +d0e8dfcfa682948e757174707a767e7f818222232324242523242121201f +1f1f1c1c201a11101617140f0c12244a737eb6b3a6808098a3a6997b8d9a +a3a98d79909a9c9a7e7f909293897e8291919187788994909c887d8b959a +9a7c848a91918177787e8e7a1711161c1f1a132038341d0f0f1316141412 +0c050c030610100f0d040b000017597c520d000001040606020105090d10 +12110d0908020102070704030f11121313131312110f0c0c0d0d0c0a0b0e +0f0f1318170f080d1d1d0c050d0b0907080a0b0c0d0d050a0e080a0d0e27 +393c3f1628281e171011121213161c1e1315171716120e0b0f0e0d0d0b09 +0809131412171b1a1b1f1c18191a19191b1e1f161b1f1a1a1c15250f211d +160d4f1a0f0d0c2a6568521918190a1a0a10136155671b16172021011016 +3b47431e17031518141d1738494f35530f1e131032414257553c2b1f171b +11110b0b170d0314111213180b0a090e0d0a08080c1012101213110e0906 +070811141515151513120c0c101314141310150a131848270d301b1d110d +171b110d111820221a13131c201d18171b211d150e1929252e5e5c132f30 +241924302c241b0b112c3a38322b5e4b373e2a1f1623232e148ade8c7f24 +1117191b1b1e252b25272827282a2e2f2d302f241c181919232117182625 +1814161e341b131527222e1d1b1c10211c2410225c6944301d171b1f211e +375d60302f1e191e2a1f235962592c1f19122a231d1d5f5c623429161131 +382c20666e3e163f261a07266371bad8ced1d8d3d8d6d7d8dcdd10111112 +121314151212121111111111110f0d0a080708090c090113304398acad8f +8fa7b2b5a88a9ca9b2b89c889fa9acaa8e8fa0a2a3998e92a1a1a1978899 +a39fa897899aa1a9a68b90999da08d888f959b8015090a0f13100c1b312d +13050d14191c1d201e1a211a1f292827231f2c221b3a7da0742f1e1f2124 +2626221f1f1c1c1a191a1a1c24242526231c11070d0d0e0f0f0f100f0e0c +09090a0a0a090c0f0d08090e0d0a071121210d0303020506060505060707 +00080e0a0e12152a37383d1930383534343638383635373a3437383a3837 +3433363534323131302e2a231f1e1b171415131214181714161c241f2428 +2121231c291323201810511a070505266267511b181c0e21131a21726c7b +281d151d1f0419254e5a542b1d05151814201b3f50583d5b152215123143 +46605e493c342e372e302c2e3a302635323132392c2b2a2f2c292526282c +2c29292a2a27231e1c1c201f1e1e1e1f20201f201f1e1d1d1c1d241b2225 +4f2707250e17161b3036271b1110121413131f2a2921150c0c0f100d0f1e +322b2f584f0a3941322229332d2620141b36444139346a5b4d5a4e4a4657 +545e40aef9a18e2c100d0c0a090e1b28282d302e2b2a2d2f2d3130251b16 +120f16150f18313a38363033472e2525352c37241e1d0f201a29273d6d6d +3e26110d1a242c2d466b6c372f1c181e2a21275f685d2e22181128242426 +686366382c1914343b30276f77482055515040557871a6b8afafb6aca8a3 +a8acb0b10e0f0f10101111120f0f0f0e0e0e0d0f16150e0a080808090c0e +1532596fbecbc7a6a6bec9ccbfa1b3c0c9cfb39fb6c0c3c1a5a6b7b9bab0 +a5a9b8b8b8ae9fb0bab4beac9fafb7bebca0a6aeb3b5a39c9fa3ab902318 +16191d18132139351e0e12181e1f2223221d2620263032312e2831231d3c +7da075301d1e202123231f1d202223232323222227252526262119121b1c +1d1d1d1d1b1a1715101011110f0e1013120f111615100c14242411080b07 +0202090c1114131104090c090f161d394d51532c4348454444494b4b4a49 +4a4839393d4041403f3f454443423e3b3a3630282524231e1c1d1816181b +1a181a212a262d2f2b292d24341c2f2924195d2414121537737961282425 +17291c242c7c7482312722282a0b202a52605b342b1221221e2924475a61 +4866212e242141505167654f4339343b3435313240362c3c3936373e3130 +2f34312c29282b2f2d2d2f302f2b241e1d1d232325252729292923212222 +222223232922292d593315351f231a1b2a2f241c1d1f23231a11131d2424 +1e1c2125221a1421312b3462611d4348331f232c2825231924404e483f3b +76685a655a535262626c4dbeffb4a1390e0b161a1918191f1f2d3d413e36 +2b272d333429201b1918201f1a20353b35383d46583d33324036402c2522 +15251f2d2d4475784a311d16202830324d74784137211e26342d336b7468 +3a2b20172d292c2f716d6f4135221d3d4439317880512a605a5c4b5d7b69 +8d917972797378767a7d81822323242424242323222120201f1f1d1d211c +13101617140f0b122447717eb3afa37e7e97a4a79a7b909ea8ae937f98a4 +a69e7e809293938a7c80919291877688958f97867b8c9297907b85888a90 +837a857e863a091819131717131c2c28140a11171d1a18140f0722111515 +04040d02030d0a00021512000e0c0c0d0d0903000e0f0f0f0d0a08070001 +050c120f0a070f11121313131312110f0c0c0d0d0c0a060b0d0d131b1c12 +090c1b1b0b050c0a06060608090c0c0c080d0b080a11002834393d15352d +1e120f10121213141a1f1415191a19140f0c0e0f0f10100e0a0d11121116 +1b1a1b1e1d1b1a191512191f1f11151d140d1014160419111e182d2a0f16 +173e7068471c13001517001a2a7b5b5c0d211f1b1e1a1b1c4c49421c3c1e +191c161d184154561a3a2a1f19212d414462542e1e150c100a090d061405 +1a0714020c0c0c131c00040608070c13151514110f0c0c0d0f0f10131313 +100e0c0c0e1116171a1a181512151010151c1024201c131a2d2d17091217 +1f221f1b1f272a221914161b1e1e151a2d2e242c2c10292a231d2d36322f +1f1311202c282c3758512d29233f281111191a96e26134000f1315161920 +252621242827272c30302d2f2e262122262624251a13160e0002151c1318 +0c081712150c17201a232727162f5962545a321416201a1a466060353f29 +1a16201d255e674c2d2b281a20211c2b726e5d3d3826122a372a2e798443 +1e98b6aeacafb9b9acd5cfcfdbd3d5d6d4d6d9dc11111212121214141312 +12121111121212100d0a0807080a0b090111304597aaaa8d8da6b3b6a98a +9fadb7bda28ea7b3b5ae8e90a2a3a39a8c90a1a2a1978697a19ba3928798 +9ea39c879194969c8f8b9c96943d050d09030a0d0c1727230c020c151c1d +1d1f1c183525292c1a18201a22302c1e2437311b2e2c2a2b2b27211b2322 +242425262626222324282720140b0d0d0e0f0f0f100f0e0c09090a0a0a09 +070c0b060911120d08101f1f0c030201050706050606060603090a080b14 +002b35373e183f3e3630353a3d3d3a393b3f393a3c3d3b39353436353332 +3030313029211f1f1b1411121114181a1612151d241a1e241b1417181a08 +1c14211b302a0f16173c6d65461b15041c20052332876e6d162119131619 +222a5e5b4f253e1c181b151d1b46595d1e3e2e21191f2b3f47665b372b26 +202725262c2732263825311f292a2d353e2526272724252b2d2a28282828 +282724231f1e1e1e1f1f202120201f1e1d1d1d1c1b201917151604161518 +17254041271211101216181b263133271609050a11181823383828261d05 +2f372d262f37312e1e131324302f3340625f40444365523f3f443fb5fc73 +43010f0d0b090c142028272d2f2b2525252624292924202121211d201a1c +2a2c292a32352a2d1f18251c1c0f171d151c1d282d4c6a664c4c25081325 +2529576f6c3b3f26191622212b646d52312d28191d2225357c7764413b29 +152d3b3137838e4d28ace0e3e6dfd2bc9ab8b0afb9afa6a5a5aaadb00f0f +101010101111100f0f0f0e0e0e1017140f0a08080807090e15315a70bdca +c4a4a4bdcacdc0a1b6c4ced4b9a5becaccc5a5a7b9babab1a3a7b8b9b8ae +9daeb7b1b9a89daeb4b9b29da7aaacb2a59daaa2a14c131b140d1315131d +2e2a170d131a22222323221f3c2c323425232e2427322e1f2538331a2d2b +282929251f1928282929292928282324262b2c271d161b1c1d1e1d1d1b1a +1715101011110f0e0b10100d11191a130d13222210080a060102080c1114 +1210070a08060d19093a4a4f52294b48403a40484d4d4b494a4c41404243 +44413e3c403e3f3c3b3938342b242224231e1c1c1b1c1d1e181416202a21 +252c231c1f212311251d2a243932171e234a7e785629210a22250c2c3f93 +75741f2b251e211f282d605f552e4b2920211d25224c5f652747392d252c +394c506f633e332d272d2c2c312c3a2d402d37252f32343e472d2f2e2c28 +292f2f2d2f302f2c2b282524222224242626272624232424242423222224 +1e1d1d201025252620273e3f27191f202424201b1e282e2a1f19181d2324 +1d2234372b3030163b3d2e232a312d2c231b1f2f3b3739456c6c4e4f5070 +604c4e544fc7ff87560e0f0d161b1d1e1c1d1b283737322c1f1c252d2d27 +25262727252722212b2a232a40493c3e2e27322626181f241c23252d3350 +726f59592f121a29292c5e767847472d21202e2d37707b5e3d3932212427 +2c3e85806c4a44321e364439408c975632b7ecf1f4ebd7b582907a727c75 +787a777b7e81252524242424212122222020201f1d1d221c14131617140f +091022436f7db1ab9d7d8098a0a2977c909fabb296839da9afa483869898 +978d7d80909193897889948e97867b8d93979278838d8d8c81818b8b7016 +121a2016101613151d1b0e0b121a1f1b1612120e0706040609070911070b +0700000710100c0a09090c1016190e0c090500000000030a121b201c140d +0f11121313131312110f0c0c0d0d0c0a050b0d0a0f18170d090c1a1a0a05 +0c080504050709090c0c0c0c0a0a0b0e0f302f353e113526160b0a0a0e0d +0e11181c0c0c0e1110100e0e11131618181612121216191d1c181c22201c +191714131b1f1d1115180d090f120e1317000b232b20080d08356a64401c +250d0d0e0419266d7b74101e1911162804185e5d5e072516191c161f2251 +62612d18140915282138486f5d2b21231a1c130f11110f117e1e10295300 +0f3f6e09030f14100c0f171a170f060406080c0f1213130f0c0703030c0f +141619181714161c1b23101c1f18201c1b2b40391e100f13191f21222c35 +2d201713171c1f1e232933342619191a181c1918262c313e30261b1e2524 +2a3a5b473b371b091d4927210f2dc6dc95210c11110d1422262222282824 +262b323132323027201e1b1817170f101b1b11146395656d3c0a34831917 +1a221e1b22151a4963584b663d201626141b616b623a3e2d1f1820222b61 +6e41303535251827192d6d643d3238311f213530457b813514492e06121c +263da1d2cdcbd8d1d3dad2d5d9da13131212121212121313121212111212 +13100e0a0807090a0b0a01102e4597a6a4898ca4acaea3889cabb7bea28f +a9b8beb39295a7a7a69c8c8f9fa0a2988798a099a29186989ea29d838e98 +98978c90a1a17c1a0c0e0e05030b0d101a1608050d1820201d2021211e1f +1d1e211d1f271b201c13121c23231f1e1b1b1e2226281b1d202426272624 +252325282822180f0c0d0e0f0f0f100f0e0c09090a0a0a09060c0b03050e +0d0808101e1e0b03020206060606060506060708090a0c121234323a441a +433a322f363b40423e3d40443b3b383736363637383633313030302f2826 +27271c120e121414181b1814171f272024261b171d1d191e2009142c3429 +13180f3969633f1e291618190d2028738983171c0f050a2307236e6c690b +2310141a131e21526566301b140713251d35466f61322b322d302c2a2e2f +2b2f9a3b2942701d3061942f2731352d25272b2d2b262121242626242423 +2223242525252624232422212022252e2b2e151b180e17181b2e47402210 +0b0a0d12171c28363629160b080d141b283542402b160c0d111a1a1c292d +2e3523160a101d232f45695b53553f344b7958513b52e6f7ac3312110b05 +0d1c26282d3230271e1f1f1d222525211e1e1a17161b1922384343468bba +898d5a25489426201d211b1418183366745c43562d15142b222d727a6c40 +3e2a1e18222631697547343735241527223a776d44363b34222439374e85 +8e421c5b583e4d4d414291b6b0adb9ada7aba6a9adae1111101010100f0f +10100f0f0f0e0e101814100b08070707080e142f5872bec6bea1a4bcc4c6 +bba0b4c3cfd6baa7c1cfd5caa9acbebebdb3a3a6b6b7b9af9eafb6adb6a5 +9aacb2b6b197a2acacaba0a3afae8826181a1a0f0c111116211d120f141d +252423232627242424282d2a2d3422252118171f2727231f1d1d1e22262b +232526272726252427282c31332e241c1d1e1d1e1d1d1b1a171510101111 +0f0e0a10100a0d16150e0d1321210f080a060101080c111312100d090708 +0e151940454d5223463b332f3940474a4846484c4545444441413e3d3d3a +373532312e2d26262829241c1b1f201f1e1e19161821292327291e1a2021 +1d22250e1931392e151a174579754f2b321b1a1b142a3781928a21271a0f +14290c256e6f6f14301c1b1f1a2427576a6c37221e121e302b4051796c3c +34393437333136373639a5432e477625396b9f3a333b3e332a292c31322e +28252626252524232524262526262727262727262523282e2b3019212019 +282927374d462b1c1c1d21242220253031281c181b2025262b333d3c2e1f +1d1f21251e1b222529362c231a212c2b334972665f5f4b3d5885665f4862 +f5ffbc3d1211191a1f28241c1f29333029231814232c2b2521201f1c1b1e +1b22343b3a4397cc999c6530539c2e272427221b201d386a7c655063381d +192f252f7981784c463126222e323f76855540433f2c1c2f294280764c3f +423b292b423f578e964a2767664d5f5c483c7a8f786d7973787f777a7e7f +262525242423212022222120201f1d1f221f17141414141109112042707e +afa8977b81979a9a917a8797a3ab907e99a6b0a584889b99968b7f818f91 +938b7b8b958e97857a8b919595727d908f847a8783915407171320190c15 +120f13100b0b0a141b1611111213071403001207000f0b0a0f17150d0b13 +0f121515120f1213130f0b0802000000040b121a1c160c060f1112131313 +1312110f0c0c0d0d0c0a09100e090b120d030a0d1b1b0b040a0705040607 +08090c0c0f0b0d0c08002723333d440c2e1b120c04070b0c0d0f16190806 +0606080a0c0f14161b1a1a181514141c24251e161a231e1712111314191d +1610140e01030c090408090d070c150d141104367269350a140f00121b14 +267f8e850d14232d1e171b2f6d637600202e15191520285b6d69141e111b +13362f3559846b2c1d1e100a15110d15031ddf3f0064c200004ab1170719 +2418080811183428180e0c0e0e0d1112100e0a050102080d0f1213131211 +11090e230d0f2616151a1f303e321e1a1414181b1c1e272f2a1c16171c1e +1c170c1c201a1e211e1c151918191c1b253c3a31201d252427364e494521 +2c4379927f3d2b178f9328000c120d070f222721282c2c25222a2f2e2d2e +2e2a2523201a1e160b15313c302cc1a2003e8a776391191c141e26233123 +14596b4327462c23192b141f706a5227392f251e262a366b672f2b363e31 +1c36283a6e5e2a2e4249321f3638526c6512262a6f8b5f67abc693c7c6c5 +d4ced2dbd3d5d9d91413131212111211131313121211121113100d0a0808 +0808090801102d4596a59e878da3a6a69d8693a3afb79c8aa5b2bfb49397 +aaa8a59a8e909ea0a29a8a9aa19aa39186979da2a17f899d9b91859495a2 +5c091107130c010c0c0a110d050809151e1d1b1e23271e2d1c16291e0e23 +1e1b2028271c1a201c202223201d1d1e1d2024272a2a2926211f2023221d +120a0d0d0e0f0f0f100f0e0c09090a0a09090a0f0c0201080600080e1c1c +0a02030105060606050606060a060b0a0800272335404b1a403632353239 +3e3f3c3c3f4436332f2b2b2e3235393734322f2e2e2d282c322e1e100e15 +120f11151715171e2424262013151b171216141610151c1622210f3d746b +370e1b180a1d24182883988f0f11171f12101c37786e7d001a261017131f +275b6d6c171e111a11332c3255846f352a30282633302c342139fa5a097a +d918146ad23b2b3a4134231e252c4a3f332b292a28252524242324252524 +2422222120201f20231b1e2e151024110c131b2d3d311b160d0b0c0e1013 +1e2b2b20100c0d0f0f110d242a231f1b110e0a1316191e1c21312a1c0b0c +1a212c415c5b59394a659fbaaa655138acae420414140b030d212c293236 +31241b1b1c1b1d21232120211e181e1a172951656360f0cc2462aa9379a4 +2625191e231e2c26297278451f3a1f1c1a33233181785c2e3a2e28232d32 +3d726e352e383e311b39334978683135464c35223a3f5b76721f303e97bf +9898c9d28db6afaab5aba8afa7abadaf100f0f0e0e0d0f0e101010111110 +101116150e0b0a080a09090d112d5870bdc4b89fa5bbbebeb59eabbbc7cf +b4a2bdcad6cbaaaec1bfbcb1a5a7b5b7b9b1a1b1b7b0b9a79cadb3b5b792 +9fb0b1a49ba7a3ac67151d131d150911101016140f0f0e19232524272b2e +2432211b2f26162c2522272f2b211f2622232826232021242628292a2a29 +28272526292c2e271e161b1c1d1d1d1d1b1a171512101311100f0e141109 +09100d040d1220200f070a050303080b0e111010100a0c0b0a042f2f444f +551d40312d2f2f3841434241454b4546433e3e3e3f3e413c3834302c2a29 +272c3533261a1c24201a1718181718202525282215171e1a1519181b151a +221b23211547817a4419231d0c1f2921358fa2981b1c232c1c18213a7a72 +83092633171c18252d6375731e2619221c3e373d63907b3e32342c293533 +2f392944ff651485e7242277e14939494f402e292e35574d3e332f2d2925 +24242524252425252727282628262525251d1e30171429181d2329384539 +26241d1c201f1c1b212a2d231a1a2022201d122629222425221f181d1b19 +19171e35342b1c1c282a304565656443546ea8c2b36f5e47bcbf53101613 +16121b29281e272d342a221e1615202a29262424211b201b17284e5f5c5e +fadc3570b79e84ab2e2c1f262a25332d2e7780512c4629241f3626358881 +66383f332d29373f4d827e453d4548392140395081713b3d4f553e2b4349 +647f7a273a49a3cda9a7d3d27f9883757e73768078797e7d272727272626 +2626232221201f1f1f201e1f1c140e0f13110c141e4b7291bcb2a2768997 +97a38e748f98999b7e8a91989b9b83899996958d7b858c9291817a869197 +91807a869090868078889783778c9a7b2b0f110f1c121414141313141413 +190a1920110a04190a080d09040b1006070a0d0d0b0b0e1212110f0e0f11 +131514050c05080a0109010e131014190c000b0f1011111111100d0d0d0c +0c0c0b0b0c0b0b0c0e0e0b0a06111d1d110704070708090a0c0c0c0b0c0e +0c0d0f0d172e3e3a3e141e19141305170d0e14090a15313e4848515b4930 +070e361b0f131b0b23297c39241c1c201b1816181817191a1c0f080f0008 +000d16030a0d110c0d1a191915558a7b2e15170d0b191a1d5db7b0960411 +231f1b2c244089947512232c1a14191e26829d8f1c201b111628302c6089 +9d191e10180c1c0c0a080d19b4a157a4e479807ec52d074fa4916b2a648d +a6631206100f07120e110d0d1410080a03150f093c312712012938190d1d +1819191d2224221e1c1a19191717191a191811161c1a17171d2321191214 +1c201f1a1215191611121e292e34221c251b2351523d28314d4fa4d5b264 +2d2bc0f1b80a090f0d0a101e2b2e322d262123272a2b25232321262a2821 +1a2012131816120062c829000c4774a615200b13261f29303a6049471d34 +282e2b29324d6b6a451d362d211e25364f636638223439262a435167766d +432435381a2e3a54807e4f29271439608dbe715762aab6b9dcc9d9d6d8d6 +d6d5151514141515141414131110111110110e0f0c08080a080606070019 +2752a6b3a98295a3a3af9a809ba4a5a78a969da4aaaa9298a8a5a49c8a94 +9ba1a0908995a0a6a08f89959f9f958f8797a6928397a07d2b0d0e09140b +0f0f0f11111212121a0f20281d17142b1e2025221a21251b1c1f20201e1c +1f2121201e1d1e2022242517231e24261d2519232622252b1d070d0d0e0f +0f0f0f0e0b0b0b0b0a0b0a0a0909060707070605010f1b1b0f0200020506 +070807070706070907080c0a142b3838422336393b3e324436353b2e2f3b +556067666f79674f242b5136282d35233536854024191416110e11161817 +191f2b241b2211170d181f0a0e10140f0d1d20221e5c8e7f321c1e141422 +212461bbb79a020b18120f242343909b78111b241713181e26829d8f1c20 +1b1116272f2a5c88a023312d3b354737332f2e36ccb669b6f88d9694df48 +226abfac86447ca5be7b281d28281f2722252121292821231727201a4a3f +35200f364320101e161411151a1c1b171412110f0c0d0f100f0e0a0e100e +09090f1717110c0c1214110e0d1317140f101922242a1a16241b28585b45 +323e5c62b9edca7b433ed2ffc6150a0e0d0a11223035393228211d1c1e1f +20201e1b1d201e1914201b25343c3e268cef4c0d285d84b31e240e13251e +2833446d5047192e252e343643607c784f243a31292932445b6c6b3b2131 +37262b485b758077492b393c1c303e5a86865736382f5e8cbeee97726eaa +aaa5c1a8b4adafaeacad0b0b0d0d0e0e101011101111111113140f100f0c +0c0e100c080e0e32507dcad1c39aadbbbbc7b298b3bcbdbfa2aeb5bcc1c1 +a9afbfbcbbb3a1abb2b8b7a7a0acb7bdb7a6a0acb6b4aca49eacbda79bab +b08a371a19131f1316151516161717171c1228332d2824372522251f181f +261e2124262624232628282525222325272b2d212923282a20281d282c26 +2c2f240f191a1b1a1a1a1a191616161315131212100e0c0d0e0e0c0b0714 +20201408050608070a0b0d0d0e0d0e0f0d0e13111d3646454d2836343637 +2d41383a403637466d7c84828b937f6336395c3d2c2e3423393c8c482e24 +1f211c17181b1a191b222e271f26151c131e261217191d18172426272364 +97883b24241a1927272a6ac6c1a6101928231d312b4a96a17f19262f1e19 +1e262e8ca799262a251b1e2f37356d9aaf2d352b352d3e2e2f2e333ed8c7 +7fceffa5aba9f059357dd2c19b5b94bdd6933d2d342f2328212320222c2a +252820312a24574a402b183e49261522191a1c202527231f1f1d1c1a1a18 +1819171612191e1c1a1a1e25221c16171d22201c14181c1712131d292d33 +25202c232e5e64503b466366bcefce834e4de6ffe0270e0c0d0c13232c2e +322e272321201e212627241f20211f1714201a25353d3f2c9aff5f1c366a +91bc272d151b2d26303c4d755a53273a30383b3c4a668481592c3d322b2d +3a4f697d7e4e3342442e304e647e8a8155354447283c49669291623f3f36 +6697ccfca4796ea0948496757d777b7a7a79272727272626262625242322 +21212121212422170c0c13110f161f4e759ac5baa6758a9da0a98f778d98 +999a7a858c95989881869694948c7b868d9393837c888e948e7d78848e8e +848180898d7f7c8f935a1a0e12111918121212131313141315131f0b1118 +120b170f100f090c100908090d0c0b0b0e101312100f0c0d0f0f0a0e0f11 +060e080f140f0f141005030e0b0f1011111111100d0c0c0c0b0b0b0a0e0c +0b0b0c0c0b09081f322b1709080b090a0b0c0c0c0c0b0b0d09080c0a152d +625b511a191309030c06001118172869d0b1a899929daacb400e18171809 +0d110e084c1c1a201b121c19181a19161818011f10181b120012020b1f13 +0d0a1f1318201b4c78732e13180f0c17191b4b939d8a0f1a1b16121c1735 +787d5c03121513101d222d7e96861f211c0e13222c2845696e0b19151f0e +15152020000066816367736a5854570012003677c8bcb699463d000b1205 +0a161714100f11110e0e1f00159b7f64784f2b4979000f192411181a1d1a +1b191c1b1c1819191e1b1712151a1d1b17161c22201913141b1f1f1b1116 +1a1713121921242d1e19272632596c4525313b224884a25526256fc54c00 +0c110d0a1324343c3b352c2422232421202021222930322c27220e0e1111 +15090029160d0b09020c1616141b2e26333e4054503e2e33301a11335b6d +654e382c3f2c15172d4552534938394634141630605c4f4633283832171e +273a54533c253b52845567ad774d7a5f98bad1cfdae4dedcdad915151515 +15151414161513121212121211120d080a0b0704040700192957afbeb081 +96a9acb59b8399a4a5a6869198a1a7a79095a5a3a39b8a959ca2a2928b97 +9ea49e8d88949e9e949190999c8e8b9a9256160a0f0e16150f0f10111111 +1213191b28141c27211c2b2426261e21241f1d2122211e1e1f2122211f1e +1d1e20221d2223251a221d24292222272318161d0e0d0e0f0f0f0f0e0b0a +0a0a090909090907060607070604031a2d26120403060405060707070706 +0608040306040f275a5755293336322c352d213339384a8aeecbc2b3adb8 +c5e75a2934343527292b1f1255201a1d150a120f1115171619201334232b +2d240c1d0b1222130b081c111d2722537f7a351a1f16131e2022529aa18c +0d13120b0a1617397c815f020a0d12131d252d8196881f231c1113252d28 +446a74182c2f40363d3f4744210b80987478847b69686c092b135091e2d7 +d1b25d551422281b1f2b2b28242324242221300325ab8f74885f37538206 +121a240f111313131112121412110f1214140d08090e110f0b0a1016140d +07080f1313110f1618150e0d141c1f281b182729355e70492c3a46305894 +b16637357ccf56000b0d0c0a1529394140372c221c1a191b1f201e1c1e24 +24201f2216202d3440351750392d251c12161d1a171b2e2633414758503c +2a2f2e1e1a426c7e735b4030402e1e223c565e5c4b36343f301316356966 +584f372c3a341720293e585a43324f6fa98095dba16d8e6791a8b4afb5bd +b7b4b2b109090b0b0d0d101013121413151517151112120f0f11110d0a0c +0e335082d3dbc999aec1c4cdb39bb1bcbdbe9ea9b0b9bebea7acbcbabab2 +a1acb3b9b9a9a2aeb7bdb7a6a1adb5b5aba8a7b0b3a5a2aea26424181a19 +1f1e16161516141415151a1e3123303c362c34272420191c221d20252726 +242426282928262524252728242b2a2c212922292e28262b271c1a221718 +191a1a1a1a191615151514141411100d0c0c0d0d0c0a0920332c180a090c +08090a0b0b0b0d0c0d0f0b0a100e193169655e2e32322c26312a2335403f +5399ffeee3d4cbd5e2ff713c403c39292a2a261b5e2b24281f151b18181b +1a181b221537272f31281223121a2b1d1613271c232d285985803b20251c +1924262858a2ac991b23231c19242142858a660a15181818252c378aa294 +2b2f261a1b2c3232567e8221302c392b3235424226138daa9096a2978380 +811e3f2967aafdf4efd17c712c343626242c2a262322282829283a1032ba +9e83976c435d8b0e171e2612181b1c1b1a1a1b1c1b19181a1d1c1611151c +1f1d19181e24221b15161d21211c14181d1a14131b23262f24202f303c64 +7952343f4a315894b66d41448fe87115110a0a081225353d3c342c231e1d +1d1f25282520222624201d2018223038463e27614c3c342a1f2027232023 +362e3d4a51635c49383d3b29234974867c644b39422d1d2443606c6d604b +48513e1b1e3b706f615842374640232c354963644d3b5675b189a2eab17c +9769899492807e8480807e7d272727272727262626252221202021212527 +24180b0c13110f171f4e78a2d1c7af748ca7aeb3907c909da09e7a838b96 +96967e839391938c7c868d9493847e8a8c928b7b77848e8e7d7d86887e7c +868e7e2d080d1114141c121212121313131312131b01220f0a210f010410 +100d0f0a0a090d0c0b0b0d0f12100e0d0c0c0d0d141a060e000d0e110a01 +0212180d03050b0f1011111111100c0b0b0b0a0a0a090d0c0a0a0c0c0a09 +082a413216090a0b090a0b0c0c0c0c0b0c0d08070a08122a53544b191b23 +1a1111111a1f03031e90a60f001e140020c3590d0a141d090c1919246a34 +16111a261d1b191b18151818100d0d150011170b101723261101240b1220 +1a3d5d632c121d171115171633616f6817271c171b19203d73725714231e +0d0a161419555e4a20221c0d0f1c25205c6f4d0d19243b315b959a5f1112 +609324112e2b292a461f0f2f9d8c48051535798b290113171900140e1213 +0d0e110b160e1c8a470030757782b01217191f121b19181313141a1d1c18 +181b211d140a12171b1b18181d221e171112171c1d1b141a201d1713171c +222c201a2d37435d4b2d1c2d2c193eb2a3952d1e0e2d0c100f110b091326 +37403d352b222121221f1e1f20232a3338351a160d1c1e0f100b1200140e +1a13123a1c06100b221f354b454b6a4b4739421b0b243f47413934343d28 +0e091f363a2e323442482e0d0b1f3d342b32322e352313121f2c2e2d2b22 +031ca7a9b2ae98b7be4fadcfc5d9d7d8e3e0dcdb15151515141414141413 +12111111121315150f090a0b0704040800192c5fbbcbb98098b3babf9c88 +9ca9acaa868f97a2a5a58d92a2a0a29b8b959ca3a2938d999ca29b8b8794 +9e9e8c8c95978d8b95997d29050a0e1111190f0f101011111113171a230a +2d1e1932231619262623231f1f2122212020202223211f1e1d1d1e20272e +1a22132021241d1214242a1f12100e0d0e0f0f0f0f0e0a09090908080808 +080705050707050403253c2d110405060405060707070706070803020402 +0c244d52522833433d353331373c212440b1c1270d362d0739dd752a2732 +3c282a332a2e7338160e141e13111216161519202225222a11232416191e +26291101220b15251f4262683117221c161a1c1b3868786e192515101717 +24467c7b5c14201b0e0f19191c59604e22261f1112212824627555172634 +4e4771afb67d2f3080b03924413f3d405c352848b5a4601e2e4e90a03f18 +292e2e11282226272021241e271f2e9c59044085838cb9191a1a1e101614 +110e0c0f1318151311161a180d030a0f13131010151a160f090a0f141516 +12181b18100c10151b271d192d3a46604e3223383a2b51c7b7a941301b38 +12130e0d0909132839423f372b201b1817181d1e1d1c21292c2b1418172f +3b343d3a40293b32372b2447250a130e2522384e494d68453f313c1b0f2e +4c544b4036323826121129424133302f393d26070820423b2f36322e3321 +11101f2f3131322f193ccdd4e1dbc1d6d054a4bca8b6afafbab7b3b20b0b +0b0b0d0d10101211131214141513151514100f11110d0a0d0e33538adfe8 +d298b0cbd2d7b4a0b4c1c4c29ea7afbabcbca4a9b9b7b9b2a2acb3bab9aa +a4b0b5bbb4a49eabb5b5a3a3aaaca2a0aaab8d371015191c1a2216161515 +141414151a202e1b413530442e1b1a232320212022252726252526282a28 +2625242425262e3521291a27272a231918282c2115141718191a1a1a1a19 +15141414131313100f0d0b0b0d0d0b0a092b4233170a0b0c08090a0b0b0b +0d0c0e0f0a090e0c162e5b5f5a2d3340393132303b40292b49c0de492f58 +4c2557f68b3c353c412a2a3231377a4120191e291c1a191c19171b222427 +252d15272a1c20262f321b0b2d151c2b2548686e371d28221c2022213e70 +817a2633252025242d4d8382621c29241313201f25626c592e31281a1927 +2d2d708562202c344c446eacb77f373a8dc254425f5a5657734c3e5ecdbe +7c3c4d6dafbb562a373633122721252624252b25312938a865104d928f96 +c221211f23151d1b191514161b1f1d1a191d221f150b151a1e1e1b1b2025 +211a14151a1f201d171b1f1c1713171c232e241f35414d675538293c3d2f +55cabeb24c3e2e4e2c26140c0a09132738413e362d231f1d1d1f25262423 +262a2e2c141719333f3a42424f394c40453730502e131c172e2b41575459 +75534e404a271a37545c544a423d3c271314324e514645454e4e35111125 +4843383f3c383e2c1c1b29383a3a3a372447dae4f3f0d5eade5a9fab8a8c +7c7986837f7e27272727272726262323201f1e1e1e1e242522180b0c1312 +10181f4c78a7dad1b87290b0bcbf928198a9aeaa818791a099967d819291 +928b7c858c9292837e8b8c918a7a78868f8e777989897a818f885f100810 +0d160f1511111212121313120b0046464d588f8b572e130e060411190c0a +0d0d0c0c0e0e0f0f0d0d0c0d0e0d0d0b000a0f0f150f1d1b1206050c0d07 +0d0f1011111111100b0b0a0a0a0909090d0b0a0a0b0b0a0805293d290f07 +0908090a0b0c0c0c0c0b0c0f0b0b0e0a112748544b1a1623180e14090e15 +0d22105bc49ab8a8a0bcaac23708120c130a1012150f3e1b0e1216141d1c +1a1b171318191100070f17564a4127140e4f23041e15121a1534484e281a +19191211141629473c3b11241411190a07234842300a1f1715111b151d48 +453021262012101c221c666d3a1c212e463b4e8f9d7c160044e3aea4b488 +89a096480014878b7d8689806a7643001a06151f0c0b16190e0d130d0913 +07417917000f4a505f1a0914132a201d1b1413131a1c1b151518201d1508 +0f13181a191a1e231f19131215191b1a131c21211b18181b1e261d152637 +414b362b212d272234b6cbc6441f270b151013100b08101e2b332f29221f +202224241c1d1e212832373727180d201e050a13060a1f131a08197c3c16 +1e10231721312c3872503b28341212101116222f312f2e2613050b1d2623 +313134342714121a1d222837342c2f1d1510283a2c262b251542ca90888b +898cb048b5c6aedcded1e2ded9d615151515141414141111100f0f0f0f10 +14150f090a0d0905050900172c64c4d5c27e9cbcc8cb9e8da4b5bab68d93 +9daca8a58c90a1a0a19a8b949ba1a1928d9a9ca19a8a88969f9e86889898 +89909b905e0c050d0a130c120e0e10101011111110044e4e58679f9d6a42 +28241c1a252e212222222121212120201e1e1d1e1f20201f0f1e22222620 +2c2a1f13131a180e0d0d0e0f0f0f0f0e0909080808070708080605050606 +0503002438240a0204030405060707070706070a060608040b2144545229 +2b40362c3022272e2a40327cdfb2d0c0b9d5c3dc53252f2d322c322e2418 +451f0e0f0e0c131213161514192325121f242c69594e321d125226041c15 +151f1a394d532d1f1e1e1716191b2e4e46451526120d170c0e2e554f390f +1f161816201a214c4934252a2416152127237079442528334b43569aae93 +321e68ffc8b9c99d9eb6ac5e162c9fa3949da0977f8b5911301d2a34201f +2a2d212026201a241a538b290c1f585c69210d1714291d1a16110e101519 +161210151b1a10050c10151716171b201c16100f1216181711171c1b140e +0e11141f18122537414e392e283b39374dd1e8e15c3234131a11100c0606 +0e1e2b332f29201a1719191a191b1b1a1f272c2e231c18353d2e39453638 +4a393a232d8a461d2214261b2535303a6e48301d2c0e14171a1f29312f29 +2420120812252c242e2928271a0c0c191d25283733292c1a120f273a2f2b +32322f63f0bdb6b9aea8bf4baab08fb6b6a8b9b5b0ad0b0b0b0b0d0e1010 +0f0f101012121210141513100f12120e0b0e0f31538fe8f2db96b4d4e0e3 +b6a5bccdd2cea5abb5c4bfbca3a7b8b7b8b1a2abb2b8b8a9a4b1b5bab3a3 +9fadb6b59d9dadad9ea5b1a36c1a1018151e151b1515151515141416140c +5b616e7eb8b178492b221a18242f24262727262627272727252524252626 +2726162529292d27332f2519161d1c141718191a1a1a1a19141413131312 +12100f0c0b0b0c0c0b09062a3e2a10080a0908090a0b0b0b0d0c0e110d0d +120e152b52605a2e2c3e342a31262c35324a3c8dfad4f2e2d8f3e1f56937 +3d36372d312f29214d28181a19171c1b1a1c1a161b24261421272f6d5e54 +38241b5b2f0e271f1e25203f5359332524241d1c1f2134564f4f2133201c +241816345b553e15271e1d1a26202a55543f30352d1f1b272b297a854e2e +2e374f45589cb5993d2976ffe3d8e8bab9cec4752e44b9bfb3bcc0b79ca6 +70233d252f35211e292c25242d27222c215d9535192c6368732b161e192f +24211d1815171c201d19171c2221170c15191e201f202429251f19181b1f +211e161b201f1b1616191d271f192d3f49553e332e3e3d3c52d8f0ec6841 +45262e23170d0a07111e2d33312b231e1c1e1f2222262422242b3031241d +1c3840323f4c44475a46472e389350272b1d2f242e403b467c57402d3b1c +20212328333d3c332c24170d1c303c38433e3e392b19161f252c303f3b32 +35231b172f423631383a3c74ffd0cdd1c8bed254a8a27391857485817c79 +28282828272727272423201f1f1f1f2022221f13090c1415111a204977a9 +dcd3bd7195b6c4c993859fb4bcb6898c9aaca29c7e829595948a7b858b90 +90827c898d928a7b7b89918f7e808d8b7e848571380711130917110f1111 +1112121213121215bbca8492ae1f0c00001b22150c050e0c0b0b0e0e0d0d +0b0b0b0c0e0f1010170f11131b090f0b030c100904060b0c0d0f10111111 +11100b0b0a0a0a0909090d0c0a0a0c0c0a0905202b1908090b06090a0b0c +0c0c0c0b090d0d0f110a0f21404e4319142f2926212644452a18003a7818 +1a140e1900132000110609090d07251d402b1b1e22211d1c1b1b1713191b +040a0e00548f24467e4e1b71331a19191d19153942422a2e1a1d17141a1f +30473833203221191e0c172c413b30223a31130e1a152c4d4938242b2719 +15202520364226282b2d35242f716f611c0f199e14040014001f0d011801 +3d2f233a331d1d75b008120512180d0f16160d0c12140900110510020a10 +03140713050a0f2721201e181513161717100e111b1c170e101215151415 +181b201a1411121414140e161d1f1d191819161a1109132329292b281e25 +251c003f56663e1335220810130e0a0a10182024201e1a1a1e2225251a1c +1d1e232b312f21181c3c360c02050b0c000a131e4a9232181411291a171d +253a6f59302c250d11192226282c2f302925180d12233134363330292018 +1a2036353138302b332518152f3f322a322b025cd97a3d392e063927b3ce +b2c6dadfdedbd6d314141414141414141211100f0f0f0f1012120c06080d +0a08060b01172b66c8d8c77da1c2d0d59f91abc0c8c29598a6b8b1ab8d91 +a4a4a3998a949a9f9f918b989da29a8b8a98a09e8a8c99988b9190783704 +0e1006140e0c0e0e0e1010101111171cc2d28ea0be311f0e1833372a201a +23242323232322221e1e1e1f1f2021232a2324262c1a1e180e1719120b0d +100f0d0e0f101010100f0a0a0909090808080807050507070504001b2614 +0304060104050607070707060408080a0b04091e3e504c282847413e3639 +57594236195b922f312b2530152d3c1f31282a2d31253426472e1a1b1a17 +1312141615141a251923271569a2355588572275351c1919201c183c4545 +2d311d201a171d22334e42402636201820102039504a3b293d311816211c +3354503f2b322e201c272d294553302f2b2a301f2a71777236313ec32f1b +142c1137251930195244384f4732328bc51d281c2a3022252a2a201f2325 +1c13241824161c201120111a090d0f26201f1c1713121416150f0c10191b +150d0f1114141314171a1f1913101113131309101719140e0d0e0b100a04 +1022292a2c2c26343d391e647b885a294229090e0e0905080e161e221e19 +15131417181b171a1a171922282921202b555938333a41402b34373c60a3 +3f211b182d211e2329396b51231f1a070f1c262a2b2a29261e1c130d1629 +3433312a221c130d121d353630352d262e2015142e4237323a3a1d81ffa8 +6c6753224627a5b690a0b1b6b5b2adaa0b0b0d0d0e0e1010100f100f1010 +12111212100d0d1213110c1010305291ebf5e095b9dae8edb7a9c3d8e0da +adb0bed0c8c2a4a8bbbbbab0a1abb1b6b6a8a2afb6bbb1a2a1afb5b3a0a2 +afab9ea4a48a450f191b0f1d171515151515151516161d26d2e7a7bad847 +2e161c33382b211d28282727282827272424242526272829312a2b2d3321 +2520141d201711131616151617181818181712121111111010100f0d0b0b +0d0d0b0a06212c1a090a0c0708090a0b0b0b0d0c0b0f0f11150e13274b5c +532d2947413e393f5e624c40236cad4f514b454f334652313e312f2d2f25 +392d4f37222425221c1b1c1c1a181e271c272b196ea83c5c91602c804128 +2523292521454e4e363a26292320262b3c564b4932422e262c1b273f554f +3f2f44391c1927223b5c5a49353c3628222d302e4c5a3937333137263179 +827c433d4ed64a3a33482d513f314a336d61576e68514da3da2e35242e30 +2323292924232b2d22192a1f2d1f282d1e2c1b241416172c2624211c1817 +191b1a1411151e201a1215171a1a191a1d20251f1916171919190f141b1d +191415161318120b1728312f302f2939413f276d8494683752391b1c150d +0b0b13192325231f1b1a1c1f21242225231f21272d2d232230595d3b3842 +4d4d394043466bab482a2522382b282f3547796034302a151a252f333435 +3531262119151f354545473f392e241b1d263b3b363c342d35271c1a3447 +3b353d412e94ffc086816e3a5933a5aa777b8382817e7976282828282727 +2727272626232222232321211e13090c1515101c204776aaded3be719bb8 +c6d19588a1b9c4bd8d90a0b6b2a683869c9d988a7d868b908f807b888f92 +8a7b7b89918e7f81847e746e5f45190a15140b1516101011111112121211 +13177176759fc28543221316130c1112100d0b0c0f0f0e0c090b0c0d1011 +131309020a00031e29392e10000c160a02030e0f1011111111100c0b0b0b +0a0a0a0a0e0d0b0c0d0d0c0a0916190e080c0e08090a0b0c0c0c0c0b060b +0b0d10090d1f353c2f191e4a494e4870b5ad6710096cdb706e8593a192a3 +34040c0a11090a08161d402e0b06111c1c1a1b191513181e1a0912003a6d +0007165477b5370200122519153a3a382a34322e221d22242f423e372f3f +34272b221e2c322f27253b2f1b1a281a30403b302b322e1f1b28302b2a2d +26282a2d2a1919989e742417004191a8b79c94a8b58b0f003c58555b5f68 +5591d000111d160011150d08110f0b12220d1714001c0803041b0d131a08 +130b1d1e1d1a16121111130d0a0d151a18131211110d0b0a0d0e1b16130e +0e0d0d0b060e16191b17161614130e060b141a1513251f1b201b0216286c +2b2314020718130d0a1017181d201b1a181b1e2022201c1c201d1e262a28 +15111d49491f110f1300002716164d515248130e1d181c2a36496d5f3641 +1e0e111c2a2e2f33363733210d0f1d2c2f2d3337392e1b0e172840372c36 +3833341c171a29312c2a322f142679a2a1b3c8cdbc6f9ab4c9ddded6ddda +d6d51414141414141414151414131212131311110b06080d0b0a070d0115 +2a67cad8c87da7c4d2dda194adc5d0c9999cacc2c1b59295abaca7998c95 +9a9f9e8f8a979fa29a8b8a98a09d8b8e91897f79674c190712110812130d +0d0e0e0e10101010171f7a8181add19758382a2e28212427252523242424 +23211e1e1f20212224241c161d0d142d364337170511190d02030d0e0f10 +1010100f0b0a0a0a09090907090806070808070504111409030709030405 +060707070706010606080a03071c35433a28325f5d61597ec3bf7d2c2b8b +f384829caab8acbf53232e2c342f3128252444310a000912121314161414 +1c282f252e1652820a18235e80bc3b060014281c183d3d3b2d3735312520 +252732464844374333262d292939413e322c3e2f201f2d1f34443f342f36 +3223202d3534393f312f2b2823111196a4843e381d67afc3d0b5adc0cda3 +2717516d6a70737d69a5e51327342e17262b211c24221c2335202a290d30 +1a151429171b1e0a160b1c1c1b1814100f0f110b080b131816121112100e +0a0b0c0f1a17120f0d0e0c0a01081013100c0b0b09090401061319161226 +292d3b3d2a4254934b3a220805120c06050b1216181b1613111113151516 +161a1a17171c2023161a2f656e4c44484c3224563c37656360521c172620 +26323c4b6b592b36160811202e323231302d28170a0f2434352e2e2f2d22 +100614273f372b353530311b161a2c3835353d42334fa6d2d3e1ede7c76d +8a99a7b5b5adb4b1adac0b0b0d0d0e0e1010131214131313161411110f0d +0d1214120c12102e5192edf5e195bfdceaf5b9acc5dde8e1b1b4c4dad8cc +a9acc2c3beb0a3acb1b6b5a6a1aeb8bbb1a2a1adb5b2a1a1a49b938b7a5c +25121d1c111b1c161415151515151516202a8b979bc8eeaf694330302b24 +282c2a292728292928262324252628292b2b231d24151b343e4c3e1f0b17 +20140a0b1516171818181817131212121111110e100e0c0d0e0e0d0b0a17 +1a0f090d0f0908090a0b0b0b0d0c080d0d0f140d11253f4d402d33605e65 +6087cecb8a38379dffa5a3bccad7c7d768353a35383030272a2c4d3a120a +141d1b1b1c1d19181f2a3228311a5687101f2b6789c646110b2031252146 +464436403e3a2e292e303b4f524d424f413439332f3f4643363245372423 +33253d4d4a3f3a413b2c263339393e433735302f2b1c1ca1b2914d472e7a +cbe1efd3cbdce9bd41316e8a898f949c82bdf824343c32192729201d2826 +232a39242e2e14392621213623262a161f132221201d1915141416100d10 +181d1b171717161310101214201c18141313120f050c1417161213131111 +0d080d19211b172a2b314246344d61a25a482f16121e140d0c11191b1e21 +1c1a18191b1d1e1f222726211f2428291a1f33697451484f573d2f604740 +6f6d695b25202f2b303d485878673b4625161b29373b3b3c3a38301f1117 +2e3f43404446433621151f2f473f333d3e393a231e22333e3a3941494563 +bde9eefbffffdb788b8e8e918779807d7978282828282828272729282726 +2324242424242114080c15150e1c214775abe1d5bb71a0b6c4d59688a0bc +cac29092a6bfc2b0888ba3a59d8980888d918f807a88909289797a88918c +7c827a6e665337250e130e14120d16131010111111121211000003001008 +012126100b12100e1210120f0b0c0e0e0c0a090c0d0f1112141315191b16 +268f767a8c4e170a0e0a0a0f0f101112121212110e0d0d0d0c0c0c0b100e +0d0d0e0e0d0b0a0e0f0b0b0e0e0b090a0b0c0c0c0c0b080c0a0b0d091023 +43402d22294c34311f43828a6d0b053cde78606d5d544d503a09110d130b +0e11160b1d271e27241c1a191b1915131a20230011140c3c1703050f102d +0c17131a27211e3830362e30433522222c2d2f3b352f2b342d17202b2a31 +2f322b2e3c2b272c412a373633332c312a19162635373d2d3122262f291b +1692b8bf520006a38f1a357ec82e2b1f0c154b7f816c60637e546a001a0e +0a210d18080c312d11100b140304091600130411110b1d0e140d171a1b19 +151211110f0c0b0e1317171613100e0908080b0d1714120f0e0b0a09040b +13181a1816161710100e0e131a161d332c1d272a3d43a7d12c3e230a210b +160f0c13191a1c1e1b1c1d1f2123211c1c1e231f1f23262324161132381f +252d1e2f7fd0aa464e4c8d9c2d1c140e172d384d6d522e380d09151a2024 +2c353736331a0814252a26213336372d1707132c2d2a26383c332b0d0e1e +26242524292f1e000d99b2b8a48c381f92c2c9ced3e6dddbd9d814141313 +13131414151615141314141416140e07090d0b0a050d02152a6acddac57d +acc2d0e1a294acc8d6ce9c9eb2cbd1bf979ab2b4ac988f979ca09e8f8997 +a0a2998989979d99878d85776e5c3e2b0e100b110f0a13100d0d0e0e0e0f +0f1004060b041b1610323b26222a28262725272423242626242221212222 +22232324282c2c27359c81839051170a0d07050c0c0d0e0f0f0f0f0e0b0a +0a0a090909080b0908080909080605090a06060909060405060707070706 +0307050607030a20464738313b6046402c4d8e988327265bf68d7481746b +676c5928323238333631251222271d211d121012141614141d2b3b182e30 +28552b16161d1a35141d171e2a211e3830362e30433522222c2d2f3f3f39 +31362b15202f333e3c3f34333c2b282f442d3a3935352e332d1c1929383c +483b3c2a2b30281b1699c4d26c1e2bc7ae375099e3474439242d6094947f +737690697f0f3227233b25301d20443f20211f29181c202d1025141f1d15 +2312160d14151614100d0c0c0a0706090e121211110f0c080607090c1513 +100e0c0a080700050d120f0d0b0b0b060608081219171d34353045526b74 +d8fc5058310e1b010f08040c111515171412131316161412161c1d19171c +1f202721244f5d4c58665a6bb5ffd26869609ea93a26211a253942556f50 +2a3109091923292d303534302c1508182f37302834332f261005152e2f2c +283a3e352d0f1225303134373c4743263dcbe4e6c8a5411c80a6a6a7abbd +b2b0aead0d0d0e0e0e0e101014141514131415151514120e0d1214120a12 +112e5194f0f7de95c4dae8f9baacc4e0eee6b4b6cae3e8d6aeb1c9cbc3af +a6aeb3b7b5a6a0aeb7b9b0a09eacb3ac9b9f9788816d50391a19141a1813 +1a1714141515151616160d111e1d37332f4c4e33282e2c2a2c2a2c292728 +2a2a282625262728292a2a2b2e32332e3ca4878a995a1f12130e0c131516 +171818181817141313131212120f120f0e0e0f0f0e0c0b0f100c0c0f0f0c +08090a0b0b0b0d0c0a0e0c0d110d14294f4f3e363d614a4534579aa59135 +356fffac95a2938a82846e3a413b3e3335302a18282f252b251b191a1c1d +1a19222f3f1c32342c5a321d1e2624401f292329332b28423a40383a4d3f +2c2c3637394849433d4339232c3a3a444245393944332d344b3443424141 +3a3f362520303d404c3e402d2f35302320a3d2e07d303dddcb556eb7ff65 +625440497db1b49f9394a87c901d3c2c273c25301e2148432728202a1b20 +2633192f212c291f2f1d22171b1b1c1a16131212100d0c0f141818171614 +110d0b0c0e111a181513110f0d0c0309111617151313150f1112121a211c +1f363a364d5a7882e7ff60653c19250a17100f141c1c1d1f1c1b1c1d1e1f +1d1b22292923222427272e272a5363515c6d6275bfffdc717269a6b24330 +2a2630454c607c5e39411715242c3236393f3f3a341c102138403c384848 +44382012213a3b3834464a41391b1d2f39393b3d4251533953e2fbfee2bb +52257e988a807a897f7d7b7a282828282828272728272524242223232726 +2115090a13140d191f4876aee4d7b971a3b5c2d79788a0becdc69295aac5 +cdb78b8ea8aa9f89838b8f9290807b889091877878868f8b7b8779696248 +251e111b0713170512131010101111121210141144573d42484325140f12 +0e0f141113100c0c0e0e0b090b0c0d10111213130e1a0d11109628003435 +2d1e100c111811101112121212110e0e0e0d0d0d0c0c100f0d0e0f0f0e0c +090a0b0c0c0c0c0d090a0b0c0c0c0c0b0e0f0b0a0d0b142a403826293249 +1a081045847a6f100a147d34202b1a21393b1f041608070711101a1f353a +1d191d2019181a1915121a20130e101a04110c0208021012110f070f2c2c +29382c3c342d3824121c3438394446403b392e0f17322f342f3831333b29 +091c3e2a38343a462c2f25110f23373b2f1b311d262e1c09024339613c06 +0f8cb1493a87c95a6b671a1309203b59809266869d260b0c100d0c1e1021 +5e5420150f1b0e031f030d14120b10111412011916181b18171315140e0c +0e0f15151714130f0d090b0c131416131411120e0e0c070d14191b191717 +140b0c110e131b1a22281b183f4e76658a93292b1a0f10161b120d121818 +181b1c1d20232626221d1b202522222326231213214d4f240d0007002f85 +c4584667598b15150e0a132b39598254312c0c16122130322b27292c2814 +0c202d2c292e392d261e1106142b292d2c372f222009052228202424222b +280f1fc5835584e16b2d91acbee6dcd6dbdad9d914141313131314141413 +131212121313191811080a0d0c09040d03162b6dd0dcc37dafc1cee3a394 +accad9d29ea1b6d1dcc69a9db7b9ae98929a9ea19f8f8a97a0a197888795 +9c9686908270694e2b220f18041014020f100d0d0d0e0e0f0f1018194c61 +485159573a2a262a26272825282524242627242224242525242322221f2b +1e201da1310137352c1b0b050a110b0d0e0f0f0f0f0e0b0b0b0a0a0a0909 +0b0a08090a0a090704050607070707080405060707070706090a06050705 +0e2743413138445d2c171a4f8d87842b2b359547343f313a54573e253a2e +2e303b322924383a1a1316160f11151614151f2e2c302f37212d23161a13 +1c1c1b170f152e2c29382c3c342d3824121c343839464e483d382a0b1532 +363d3a4338363a26081b3d29363238442a2d230f0e22363e36243b273139 +2a1813564f7b57252eacce6657a4e4758480312b1e354e6c91a37899b33c +242529272436253670662f272334261b361a2428241b1e1d1c1805191111 +11110d0c0b0d040504080b0e0d0d0e0d0807060a0e1211110f0f0d0c0907 +02080f12110f0d0d0a01040b0b121b1b212c262f617aaa9abfc24e472812 +090b130a050a101011141213141819191513181e1f1c1a1d2122161d356a +76514039463668b7ef7a627d6a9923231f1b253d4a678a58332e0e1d1c2f +4140352e2b2c2714132a3e3e393c4032271f130c1c353234333e36292712 +0e3038343a3c3d4c523f52f8b682a9f873287e919bc1b4adb0afaeae0d0d +0e0e0e0e101013121312121214131617140f0e1214110911112f5297f3f9 +dc95c7d9e6fbbbacc4e2f1eab6b9cee9f3ddb1b4ced0c5afa9b1b5b8b6a6 +a1aeb7b8ae9f9caaafa898a193827b5e3b2e1a210d191d0b161714141415 +1516161823265f7a667077704f382e2e2a2b2f2c2d2a28282a2b28262828 +292a2a2a29292632252725a73809403d3424120d12191516171818181817 +141414131313121011100e0f10100f0d0a0b0c0d0d0d0d0e08090a0b0b0b +0d0c10110d0c110f18304c48373d465e301c23599c97953c3c48b1675560 +50586f6f5336483733323a332c2a3f42231d1e1f18191c1d1a1a23313032 +343b27312b1d241b282627221c213a36334236463e37422e1c263e424352 +59534a46391a223e3e4440493e3d422f0e214531413d4551373a2e1a162a +3c433c293d29333d2d1d1a5d5a88683743c3ec8675c2ff93a29e50473b52 +6c8aafbf8eaac1492b2a2d2826362637746a362b2431281d3c202c313028 +29292724102318181918151313140c0c0c0f1315151414120e0c0c0f1417 +1716151413110f0d080c151919171616130c0f15141a2520262f2a356a85 +b7a8cfd25e53331b11131e1510151b1b191c1b1c1e2022221e1c23292b28 +2527282a1f263c707b5644404d3f71c0f8836d8874a22c2c29252f475270 +9564403b1b27263849493e3837362f1c1b334648464952453b31221a273f +4144434e463937211d3d453f454646555e4d63ffc997bcff802e787e7d97 +81777d7c7b7b2d2d2d2c2a2929292626262525252523272420170c0a1114 +0f16203b74a1dfd3b67695b3c8cd9585a2bacdc68b90abc3c7b88399a4ab +a4867a868f9491807a878c9889727e928f8187804a5e798b260e12111010 +1213110f100f0f0f0f1011100b1e99a3938f889960210b0e15150d16110f +0c0d1012110e0d061015070a160f1519090e1646340c0711131d05141416 +1513141412100e0c0e0c0b0c0e0f0e0c12110f0e0d0e0f100f0f0e0d0d0d +0e0e0a0a0a0a0a0a0a0a110c0a0a090a141e23353c1f2e5c1108054ccebc +98220b09a0beb3bbc3d79aaf601a0f1508090d141d1f24312e1e171e1e1b +1b1814121a1f0f160e09130b000711050018060e08131d25262a30272129 +2811030d1f28292a25262f301e0b132a242425292e2c2823120f1c282423 +2623221f150c0f1a2223251e1b19181f1600051c277d3d000833a686a4a0 +a996a69f210d2dc5e5d9c588345c531d0414180a0f1115335f6821191211 +0e090b0f0e09111711572208100f111f11151d1318130e0c130f141b1614 +1805110312110e0f151b141913050e090908131613130c10130908060b12 +12191d2d200f4f474049514332251c15181a0f0f1010171d1f1b1c1c1d20 +2323221f21232825201e1f22170c3164711f050b0008000012345b5e331b +1e16040a17253f58725415301b020826161b2e15122923110e0c201e0e1a +2617271e1e0013161827121c2d1f1313181c26171a13002b302900d0ae75 +7ee7d12c8ab8c5dddcd2dadad9d815151514151414141212121313131313 +1916100c0d0d0a0a090a040b2960cedac082a1bfd4d9a191aec6d9d2979c +b7cfd6c792a8b3bab39589959ea3a08f89969ca898818a9e9a8c8f875164 +7f8e2910110e0d0d0f100e0c0d0c0c0c0c0d0e100f26a1ad9e9e99ad7538 +24272d2d242d26242425292b2a2a291f282a1a1b251e2428181b214f3b11 +07101018000a0a0f101011110f0d0b090b0908090b0c0b090d0c0a090809 +0a0b0a0a09080808090905050505050505050c07050503040e1b263c472e +4270241a1259daccaf3f2f2cbad3c8d0daf0b5cb7f3b333b2f3237362c24 +27322b1910141414151714151f2c2c392f2a31281a2025170d261218111b +2127282c3229232b2a13050f212a2b2c292a2e2c15020d2627282c30312c +221b0d0c19252120221f1e1b12090c171f22252324272c3936202b444c9f +5d1b204dc4a5c1bdc6b3c1b8382442daf8edd99a476f69331d2d34262929 +2a48717a3028272a26232428272025291f632a0e140f0915050b11090c09 +0202070508110a0a11000a000b0c070a0e160d140c000704060610110e0c +04080b0305040b15141c20352f287475758389745a412a180e0f07090808 +0d13151110101215181817151e21221f1a181c221b194581964c36423d47 +26243d567774452c2f27161e2d3d566c83611f3a25101c3d2f3442261e31 +2a1a1c1e393929323724322a2a0f25292938212b3c2e222429313d323733 +20515f5b2effe2a39ffdd823789ca4b8b7abb1afaead1111131212111111 +111111111111131316151312111212120d0e1223508af0f6d99ab9d7ecf1 +b9a9c6def1eaafb4cfe7eddea9bfcad1caaca0acb5bab7a6a0adb3bfaf98 +a0b4ae9ea29963748f9d381c191514141617151314131515151617181a33 +b4c6bcbfb7c68a462b2c31312a332b2928292d2f2e2d2c232c2f20222c25 +2b2f1f23275643170f18191f06131317171718181614121012100f101213 +12101312100f0e0f101110100f0e0e0e0f0f0909090909090b0b130e0c0c +0d0e18242f444d334371281e1a62e8dbbf4f3f40d3f0e7eff9ffd0e3944c +4144363436372f282c373220181d1d1c1f1f1c1c2532303d362f392e2327 +30211a31202420282c3334383e352f37361f111b2d36373835363c3b2613 +1b343031343838342c261413222e2c2b302d2c291d14152026282d29292a +2d3835202c4654ab6c2d3866e0c2dfdbe4d1dfd657435ff7fffff4b2587d +763e243237272a2b2b49757e352d28272824292d2e2830352a6f351a1f19 +141e0f141b1216120c0b110e121a14131907120513130f11161d151b1407 +0f0b0d0b171815140f13160f100f151e20232538342f7d8283919883664c +331f161712151515181e201c1a1a1a1d201e1d1d272c2e292422252a2421 +4c879c513b4744502f2d465f827f4f363931222938475e738b6a29442f19 +2545363b4b302a3c342325284042323e4735443a3a1c31373b4c36405143 +37383d444f4347422f5e676439ffefb2aeffe0246c86818b80727b7c7b7a +2d2d2d2c2a292929262626262525252325221e160b0810130f15223e77a3 +ded0b47594b3c8cd9383a2baccc68b90abc2c7b8839ba7b0aa8d7f8a9195 +91807a878e9687747d8b8d8b84624c648a72220e1111101011111111100f +0f0f0f1011100f000f00000c010513011521170c0718101211110e0b0b0d +0c070d15161b1e1305110d0f00140c0011060111110e0711111010100f0c +0a090c0b0b0c0e0f0e0d11100f0d0d0d0f0f1111111010100f0f0a0a0a0a +0a0a0a0a0f0b0a0b0a0a131c3832292335551400092b8ba19712000dd36d +00159dad0c0a060a0e0a1b1f030314181c232119181b1c1a1a181412191f +0e0e0e1016140d0e0210130d0d0f08001621222328231d211d0c030e1d23 +2424211f25281b0d1223282524282927241e0f0d1c282422231f22231809 +0a1b292b2b261f1209151f1712457bdc851704299a988996989c8fad7600 +122229606d513863886d2a090f1310171f446c722718131208093882a8a6 +868f7b983f0d07040715171c21130c0c16100c060e1b180f11111b110e06 +080e15120b0f1312120a070a11100f171d1203070b090a0e14192028241a +04271b09191d1f1a1514181a0d1114161920232121212225272826211f21 +24231f1b1d2022001e594e0e0b204043210a14417c82332a181d24100b1f +2b464e2013131a0c0d05050d06132d211c271809100e070e001916081121 +13241a002c13000d2416160f24000e2f2834413a006a93a49dae9e37a7c1 +c4ccccd4d8d8d7d51515151415141414121212121313131317140e0b0c0b +0909090a060e2c62cdd7be81a0bfd4d99f8faec6d8d2979cb7ced6c792aa +b6bfb99c8e99a0a4a08f89969ea69683899898948b6852678d74240e100e +0d0d0e0e0e0e0d0c0c0c0c0d0e1016021a010e1b121929182e3a2f241e2f +25272929272727292823262a292c2b20121e1a19071b11001105000c0a04 +000a0c0d0d0d0c090706090808090b0c0b0a0c0b0a0808080a0a0c0c0c0b +0b0b0a0a05050505050505050a06050604040d19383634324a6d2c121c3c +9db4b1312330ed85032cb6c82728262b323042482c25221b1d221e140e11 +121314171417202e2d33333337322a291824251d1b1b140a1a2324252a25 +1f231f0e05101f2526282521232112020a1f28292b2c2c261c160a081622 +1e1c1d191c1d12030415242828262824263c4d4b497bacffa6341a3fb5b7 +a6b3b5b9aac88f0d2a373e76816649759c8443252b2f2c3137597e813427 +282c2222519bc1bf9ca38ca649160e04000b0b12150900020a0600000211 +0c05090a130a060000070d0b03080b0b0a04060a100f0c14170f00050b0b +0c121a20253135352a575343514e453522140e0f050b0e0e111619171516 +171a1c1d1b1b1c20211d19181c20290b327471373b557c825a3c3c639798 +453b2a313a2b273c4862653324242c222823262e242d43332a382c242e30 +292e192e291b27382f40330742290e23382c2e29402031544e5f72702b9f +c5d0bec2a32f94a6a4aaa9b0afadacaa1111131212111111111111111111 +131314131111101011110d0e1426538ceff3d799b8d7ecf1b7a7c6def0ea +afb4cfe6eddea9c1cdd6d0b3a5b0b7bbb7a6a0adb5bdad989fabaaa59d78 +62769c81311a1815141415151515141315151516171a200e2c192b3c3032 +3e26353f332824352a2c2d2d2b2a2a2c2b262a2f2f3333281a2622220e23 +1707190d0513120d06121314141413100e0d100f0f10121312111211100e +0e0e101012121211111110100909090909090b0b110d0c0d0e0e1722423f +3a374b6d2e172346abc3c2433544ffa1224bd4e542403b3c4039494c2e26 +25202228251b171a1b1b1e1f1c1d2633323939393e3a3232232f312a2829 +2216262f303136312b2f2b1a111c2b313233312e31312313192d32323335 +332e2721110f202c2a282b272a2b1e0f0e1f2b2f312e2d2624394a47467b +b0ffb5463157d0d4c4d1d3d7c8e5ad294652598e997b5981a78c48292e32 +2d32375a82863a2c292b232656a0c8c6a7ae96af531f180e0a14171b2112 +0c0b160f0c050e1a180e14121e1211070b0f18130e101613150e0e121817 +171f231a0d121717191e262a2b383d3e3563604f5e5c52402b1c16171017 +1a1b1c2124201f1e1f202221211f23282a27232124283313397b773d3f5b +84896343466ca2a34f45343a453432444e666b3a2c2e362d312b2f372e3a +51413542352d38393339263f3a2c35463b4e491f5a41263b514446405635 +4567616f797231a5ced9c7c9a62c858b7d7a6f74797a79772e2e2d2c2c2b +2929272726262626252324211d1508070f110f15224078a2ddccb27393b2 +c7cb9180a2b9cbc58b90aac1c7b8839caab6b498858e9396917f79878f94 +86747c888a8d723b516b8e4c190b1112121110101113100f0f0f0f101110 +0a21a3b1919cb7be83360a0217291a0e111516130d090c0f131818171a13 +11171818171a0308090c0a141106130a0913101011100f0d0b0a0d0c0b0d +1011111011100e0d0c0d0e0f0f10111111100e0d0a0a0a0a0a0a0a0a0c0b +0b0b0a0b1219221a11171221150600142b2952171f0dc1bc9ba3bfd089b2 +90311411000a14100b111314151719191a18191712131a1f1c110f0b0000 +020003060d00160710100e20211b20221c1b170905101c1e1d1e211c2024 +1b1014202b27242524221f1c0e0c1b292521221d17211c0c0919211e2626 +24170c1d363d31464b7930000d39cf66000d00000e81cf07566535000315 +424242260a161e020a111a44696c250f111711061b4e727a172017431e14 +180f1a18191216110d1e0b121c1b12070f17110b03030b131812161a2215 +080708110c04060e0a070d0312120500050f19152c121720001507100413 +1b140b0e151510171d1e1d1f232425252528292927231d1e211f1b1a1c1e +11073d693b313e2c39483b1811478076173b1b15240e0e1e373f40285f21 +181e0e1c332707010f181f1d111a303a33253e473d1e0f171c6446038296 +aa6b101f252aa5b3b2acadc98d710d00082c5182782e98a9bcd0d1ddd9db +d9d71414151414131414121212121212131416130d0a0c0a0807090a0610 +3064ccd3bc7f9fbed3d79d8caec5d7d1979cb6cdd6c792abb9c5c3a7949d +a2a5a08e88969fa49583889595967941546d904c19090e10100f0d0d0e10 +0d0c0c0c0c0d0e10112baebd9fabc8d29950251e30423125262a2e2c2927 +2a2d3134312f2d241e24232322230a0c0e0f0b130e010c03020c0b0b0c0b +0a080605080706080b0c0c0b0c0b09080708090a0a0b0c0c0c0b09080505 +0505050505050706060604050c161f1d1a262a3f3324192f43436f384531 +ddd6b3bdd9eba4d0b052383725333d321915141312120f0f101013161517 +21303d383630221f201c1e1e200526141d1c1424251f2426201f1b0d0914 +2022212225201e1d12050c1c2b2b2b292721191409091826221e1e19131d +190906161e1b23262d2c2e4b6f7b748785aa5619234feb84192b1b0d299c +e821707d4e121a2a5454563d23323a20282d32597b7b321e29332d223769 +8d922d342851281d1f1214100e0a0b090216000a11130700040f09050000 +050d120c10141c0f0201020e0f0b0a110a070d03111409050b17231f341f +2b3c22453d493a433f2c180e0b0a0a141a181517191a1a1a1a1d20201e1d +1b1d1e1c18171b1e151150825a56675d7484714937689b8a294d2f2b3f2c +3040595e5c3f7335303a30425b4f2d222c3235332c3b56625b4b5e645839 +2c37408866219db1c586293a4048c4d7d7d4d7f7c0a84324395870957c25 +858f9fb0b2bab0adaba91313131212111111111111111111111113121010 +0f0f100f0d0e1428568deeefd597b7d6ebefb5a4c6ddefe9afb4cee5edde +a9c2d0dcdabeabb4b9bcb7a59fadb6bbaa989ea8a7a78b51637a9d582514 +1515151414141517161515151718191a1b37c0d5bccae6ebae5d2c213446 +372b2b2f32302c292c2f33373533332b262c2929282a1215141610191508 +130a091312121312110f0d0c0f0e0d0f1213131212110f0e0d0e0f101011 +121212110f0e0909090909090b0b0e0d0d0d0e0f161f2a261f292a3d3326 +1d364f52814b5847f5efcfd8f4ffbfe8c56548422e373f331c1818181919 +18181b1b1d1e1e202937443f3d382b282a27292a2e1335242d2a2230312b +30322c2b271915202c2e2d2e312c2c2d23161b2a353433322e29231f1010 +212f2d292c27212b24140f1f25222c30342f2d4869766d8386b163283866 +ffa03547382a46b9ff3c899564262c3b625e5f4328363d22282e345c7f80 +38232b342e253b70969c383f325a32262719201b1c15191410210e151f1e +150a121a160f090711171e161c1e28190e0b0e191813131a1613190f1f21 +151119242f2b3f2836482d514954464f4b3620161312141f252420222223 +222020212321211f202325231f1e2326201a57895f5c6b627c8c7b504271 +a69535593a364a363a495b6060457c3e3a453a4b655b3a333e4343403744 +5f6a65566b74694a3c464e987d3dbacee2a347575d64e0f1f1edefffc4a5 +45263d5b75997d1e7674777f79807a7b79772e2e2d2c2c2b292928282626 +26262422241f1c1508060e120e131f3d75a0dcccb07191b1c5c98e7ca1b7 +c8c2898fa9bfc5b6829cacbbbaa089929596907e79878e9687727e8e8a7e +51295c7275290f0c1012131210101315100f0f0f0f1011100600252fadad +242c0f081d1c100f111e1d1c1a14111012150611151c1f11245532120209 +040104080248540c0807120e1112131312100e0d0b0a0a0c0f111110100f +0d0c0c0c0d0e0c0e0f100f0d0b090a0a0a0a0a0a0a0a090a0c0c0b0c1218 +20231c1f01011c091524345c7c12020039909fb1aec8adb184000026100d +14030912131114191c181816171612111a200d07171e131d32353d213230 +681400030e2225192024201a1a0906101e1e1c19211f22241c1115212824 +221f1f1f1e1c0e0d1d2b2825262118201907091d2720201f1f160a122424 +1c1d010c00081a1886b7bda69bafc0b77a024296d6cac456465147240a06 +111a18191a486b713617100f12100500030f0c0f011e0d100c000b070f0d +110d010a0c020110170b0f11101c111307020d0b0b0005020d190e0e0600 +000b0c050a0900080d0f0f100b000e00100a190e000c121e1e0d060d1412 +142028241d1b1f2124242526282624211b1c1e1c1a191a1b18185f791d27 +340e162b382321658d652876572a15102f29393d422d894d17191f80bbbf +c0752a62982113439bd5dfcac5e6b7401e0730da6f5bd68170dba5092b50 +d288413b453cb29d5001001743a994369ab2b9ccd6d0dbdddbda14141514 +14131414131312121212121316140d0a0c0b09080808050d2d62cbd3ba7d +9dbdd1d59a88adc3d4ce959bb5cbd4c591abbbcac9af98a1a4a59f8d8896 +9ea696818b999285572c5e7475290d0b0e1011100d0d10120d0c0c0c0c0d +0e100d0a303ebbbe3742292339382928293532312f2d2d2e3134252f3134 +3222315f3b1b09100806070b0347510903020d090c0d0e0e0d0b09080605 +05070a0c0c0b0b0a08070707080907090a0b0a0806040505050505050505 +0405070705060c121a21232e1b2443313b47567ea0372b1a57acbaccc9e6 +cbcfa41e1c4a35343b221716120f0f12120e0e0e1115151823312e304045 +383f5353593c48437a2410111628291f242a24201e0f0a162224201f2925 +2422150a11212c2d2b28241f1b190d0e1d2b2825262118201907091d2820 +1e222c2e2e435c655e5d3b3f222a3531a2d5d8c1b6cadbd2941c5cb1f1e6 +e06e58625a3b23222f383635345d7d7e4126282b2e2c20191e2a2426142f +1a1b150109030b090d0900060800000c13070b0d0c1a0d11030009090700 +010009170a0e0f03021312080d0f000f14181b1d1b0c1b0e26273f3d2640 +444a4024100d0c08111e26211714151719191a1d1f211f1d1b1b1c191716 +191b1c2170903a485a3b4d666d4f4583a5793a886b42333255505c5f5e46 +a065323945aae9edeb9b4e81b2383067c5fffff4eaffd65f3f2c57ff937d +f5a08df8c2264a6ff4ab69656f69e5d486342c4060bb952d87989db0bbb1 +b2afadac13131312121111111212111111111010131210100f0f10100c0c +1225538bedefd395b5d5e9edb2a0c5dbece6adb3cde3ebdca8c2d2e1e0c6 +afb8bbbcb6a49fadb5bdab969eaba597673b6b8081331813131516151414 +1719161515151718191a17134255d6dc555a3a2e3d3b2d2c2d3b37363431 +30303336273134383829396842221118110c0e12084d58100908130f1314 +15151412100f0d0c0c0e1113131211100e0d0d0d0e0f0d0f1011100e0c0a +0909090909090b0b0b0c0e0e0f10161c262c29311a2042313e4d608ab04a +3f2f6fc4d5e7e4ffe5e7b9312c563e3b402518191714161a1b1719191b1d +1e202a383536464c40485c5d6447555188331f1e2334352b3036302c2a1b +16222e302c2b34313130251a1f2d3534322f2a27242213132533322f322d +242c231111252d28292b34322e40595f5a5c3c432b364645b8eff3ded3e7 +f8edaf3573c6fff4ee7a626a61412826313a363635608184472b2c2e3130 +272027332e2e1b3622211a07141119171b170b14160c0b1a2115191b1a25 +1b1c110b171415090f0b1722181a180d0d1e20171c1d101f24272b2d2a1b +2b1d34354c47314b4d53492c1a1717111a29312a211c1e1f1f1d1e1e201e +1c1c1d2021201e1d2123252a78963e4d5d40546e7558518eb1844694764e +3d3c5e575e60624ba86f3d4450b8f8fdfcb06496c3483e73d1fffffffaff +ea73523e68ffad99ffbdabffe044678cffc7837e887ce8d186352e4464bd +9726787f788184787e7d7b7a2e2e2e2d2c2b2b2b28282827262525242520 +1d1509070f100b121d376e9ad9ceae6f8faec2c68b7a9fb4c5bf888ea7bb +c1b37f9aabbbbba189929596907e78868d9a89718195815f333369754919 +0c131112141414141415100f0f0f0f1011100d0e7576cdaf02304921140b +0d17121532291e16161817141e1a16202414327757271013150c0c0a106e +7e1d03030d051212131413110f0e0a09090b0e10100f0f0e0d0b0b0b0c0d +0d0e0f100f0c0a080a0a0a0a0a0a0a0a080b0d0c0b0e13181218151c0f20 +52313c5c7d9f981e0b008ad065576655456dcb5a190e0f0e09180f151512 +151a1b151515151511111a1f1d0604081861c2e7e19f8d7aa12e01001024 +251a2025211c1907000b1d211f1c1b1d2423180c111d1e1b191718181b1b +090716232120221f1f1d0d00011c2c2a29221f190b0c0b00000500111426 +1900268695ab995715200c0502000012531d55738b9e8939246319191546 +626635101c0c050c1009040602100f19090d110e0f0c08050d0d03091319 +070704000a02000005090f0d0e0310091013130b0304080a0b00000e0406 +070710070a1c1d232d383f1400110c0c1219150808161a1114212c271e19 +1e21232223232625231f1d1c1c1b1a19191922065a872b375f6300071404 +196a804a0f575030132c6d60364a4f226a6c231921bbb6285cc9a292e11c +16203a6798b7b5df5e071e2112c7a18bcb9b6dc6af131a32bead9da8baac +b5994901001f1d76972094c2a5b0d7cddbdedcda14141413141313131313 +13121312121217150e0c0d0c0a090607030a265ccad5b87b9bbaced29786 +abc0d1cb949ab3c7d0c28ea9bacacab098a1a4a59f8d87959ca998808ea0 +896639366b75471809100f101212121211120d0c0c0c0c0d0d10141b8185 +dbc01646633c302727312b2d473e332f323636364039323937253f815e2e +14171a0f0f0d116f7d1c01010b000d0d0e0f0e0c0a0905040406090b0b0a +0a0908060606070808090a0b0a0705030505050505050505030608070508 +0d1008121a2b2d4980636c8ca8c9c2473628adee83758475658deb7b3a30 +31332e351a1915101013110b0d0f1215151823323f312f303e86e4fffdb9 +a490b43f120c1a2c2b22262d27241f0f061323292526282a2c27170b1324 +29282826231f1e1e11111f2c2a292b28282616030a253633302c30302d35 +3d38353d35423f4c3b1442a2afc5b371303b28211e121530713868849eb6 +a255428237352f5b7474401d332822292d2621211b27222a16181b151310 +0c091111070d171d0b0b08020e060003070d11111007120d1217150f050a +141b190408170d0f10131c141a2d30363e4a5631243b3b3d3f40331c1216 +120914242c26191214181a191a1e2122201e1d1d1c1a18161819250f679a +44547e8a313d442f3b84965c1f69664b33509888596a683981823d3946e6 +e55789f3c9b4f93233446495c6e2dcff7e2741473bf1c6afedbd8ce5cd31 +3851ddcfc1cddfd7e6cd7c3326463885961580a78b94c0afb3b0aeac1515 +1514141313131010100f0f0e0e0e14131111101011100a0b10214c85ebf1 +d193b3d2e6eaaf9ec3d8e9e3acb2cbdfe7d9a5c0d1e1e1c7afb8bbbcb6a4 +9eacb3c0ad95a1b29c784945788152201217141315151717181916151717 +17181b1c1c24919af6dc315d7245342828322f314c43383335383837413b +353d3d2c478a66361d20201616121674822106061006131314151412100f +0b0a0a0c0f111110100f0e0c0c0c0d0e0e0f1011100d0b09090909090909 +0b0b0a0d0f0e0f12171b131c202e2b437d606c8eafd5d259493ec3ff9b8d +9e8e7ca4ff8e4b3c3b3b34391c1a1713161a1a1418191d1f1e202c394838 +3638478feeffffc6b29ec34f221c2637372d3238332f2b1a121e2f343130 +3133373325191f2e2f2e2d2b272525251413243131303431312f1d0a0f2a +38383a3538362f373c37363e37474655472357bac8e0ce8c4b5640373324 +233a7b3f6f8ba4baa65844843938305e76774423392c262f332e292a222f +29311c1c1d1b1e1c18151d1d131923291717140e1a120c0e14181e1c1d12 +1f181f22221a12162025241017261c1e21232c242a3d3f47525e68413147 +434445473b251c221f161c2b342e20191c1d1f1c1b1b1e1d1b1a1d1f1e1f +1d1d20212e166fa04858818f38474e384791a36a2c7573563e5ca1905b69 +6c3f898d4a4656f7f76ba0ffe6cfff47455472a2d3f2edff933c575c4fff +e0c9ffd8a8ffe94d546df9eadbe7f9e8ebcb7d342b4b3f8a9b1375926a6c +8e7b807e7c7a2e2e2e2d2c2b2b2b292928272625242325201d1509070f11 +0b1320376993d5ccae6e8caabec289799db1c1bc858ca4b8bdaf7c97a8b6 +b69b858f93958f7d77848d978773858f6f432e4b736623170f1813131417 +1a1a1714100f0f0f0f1011101400adbc9985202b280f161a1717121c4235 +241a191914103e26141a1f182e5b3e1c100a0d030e0f255f672a0f080a08 +0f101111110f0e0d0a09090a0d0f0e0d0e0d0c0a0a0b0c0c101011110f0e +0b0a0a0a0a0a0a0a0a0a090e0f0c0b1015192f31281408206b62514f3e26 +1f0010009bbf43354046587cda4d070d1619101115171313161717151514 +1414110f181d0e0b13100b1c3e55612b0d002c090307102021191f211d1c +1706000a1a1f211f0f161f1e11060c16131111101013181a08020d171414 +191816160e0507111511191010100b0d0f060a060c180e0d131960d45450 +80a418000d000c1a1201092f3544495c632b13410c11104150502f0c1113 +0f07060d0e081316131413151411000f000209050700000b05121d1e2404 +0f1129070a0c1f2e1f1e203b3b1b1914002e42092c71585d490e0c0d4787 +747a8a8c99a31d211f0a0e12111118201a0b131f2a261c1a1e2423232324 +272625221f1e1e1b1b1a181724146168182b4a4317141c163e867d423f53 +47300c123b2c43454e435e62281a0050a142002855a5d52f201c001c222b +5aa3553d145d211e9e9a7e76709483192c126eabc5a9afc6ddac5c2e091b +188aae1a82b7909adcd2d8dcdad914141413141313131414131213121111 +17150e0c0d0c0a0a060a060a2155c6d6b87a98b6cace9585a9bdcdc89198 +b0c4ccbe8ba6b7c5c5aa949ea2a49e8c86939ca69682909a7649314d7366 +22160c1611111215181814110d0c0c0c0c0d0d101b03bbcba9963441422a +323731312c3457483933353836326045323332273b654520140e10061112 +2660682b0e0709060a0b0c0c0c0a090805040405080a0908090807050506 +07070b0b0c0c0a090605050505050505050504090a07050a0f1121272b26 +284da09d8c8771564d2a3d27bfe263556066789cfa6e282f383b332d2018 +131111100d0b0d0e11141518223133383e3b334263777f472717421c1417 +1c2a2923272b25261f1007142229292c22292d28170c1523222426252221 +212316141f2926262a292727201719232723282124292830363237333945 +3b383e3f7dee6e6a9abe331429182b3a32242a4c48555c747c4931602a2d +2a56625e3a19282e2c24232a2b252c2d282622231e1b0a1b0c0e15111309 +0217111e292a300e191b311112162738272828454325212010425419397e +656a561e1b1e5a9c8b919ea2b4c241494c3737352c24201f130513242d27 +1a15181b1a1a1e212426252321201e1b19181717271b6b772d4466664646 +4b3e5b9d90524f655d4c2e3a67576561665770753f37207bcf7228547dc6 +ed453c3f264a4d567fc6755d36824b48c4bea09690b2a134472d8ccbe5cb +d3ecffdf8f5f36403097ad0e6e9d7682c5b8b0aeacab1515151414131313 +1111100f0f0e0d0d14131111101011110a0d1321477ee7f1d192b0cee2e6 +ad9dc1d5e5e0a9b0c8dce3d5a2bdcedcdcc1abb5b9bbb5a39daab3bdab97 +a4ac8859405a7f702a1c131b141415181d1d1b181615171717181b1c230b +c8dec2b04d564f33353530302d385c4e3e37383a373361473437382e436e +4d291d17170d16172b656c2f130c0e0b1011121212100f0e0b0a0a0b0e10 +0f0e0f0e0d0b0b0c0d0d11111212100f0c0b0909090909090b0b0b10110e +0f14191c2e32322825469a97888875605c3d523dd5f87a6c797f8fb3ff81 +393b42443931221a15141717161418181c1e1e1f2b383b3e45423b4b6c81 +8a533425502b24262834342d323530302a1a121e2d333435293036322318 +1e2b27282928242426281714212b2a2a31302e2e241b1b2527252f292b30 +2e363b353c383e4a403e454a8fff8783b5d94e2c3f2c3d493d2a2f504e5c +6278804b33622c302b5964613e1f2e35322c2b32332d33332d2a25241f1d +14271a1a231d211510231f2a37363e1a25253c1b1d2032423232334f4e2f +2c2c1d4d6228498e757b672e2e306bad9da3b6bac9d44f53523c3b39332b +2b2d23131d2a342c1f1b1c1e1d1b1b1c1f1e1d1d1e1f1e1d1c1d1d1f3023 +747e3248696a4e51554869ab9e615c716a583a44725e67626a5e7a834d47 +328ee6894271a0e7ff5d525238595e6792dc8c764f9c6360dbd6b9afa9cc +bb4f6248a6e4fee4ebffffe090633c483aa0b30e678e5b5e99877d7c7a79 +2e2e2e2d2d2c2b2b2929282726252423221f1c1408060e0f0c18283c678c +cec7af6e8aa6bac088789baebeb9838aa1b4b8aa7893a3b0ad927f8a9093 +8f7d768391908079857a54333a5b6e49111916181513141a20201911100f +0f0f0f101110080e9db1bc9d2f2747211f20191516274036281e1917120e +1e120e1116273e4b3b242010191e3e443649442f120d090d0d0f1011110f +0e0d0c0b0a0b0d0e0e0d0e0d0b0a090a0b0c1111100f0e0c0b0b0a0a0a0a +0a0a0a0a0a10110c0a11181c19171f111027738a6e250e15150008061a8f +b2c5afc5c1cba21e011d1518180e1f180f121614161a16151514100e171c +0a0d100d0c06040d1f12080f1a160c05111a1b181f1a181c1a0e0d121916 +1b1f0a10191b140d0e130e0e0e0d0f12181a0f070d130e0f16160a0f1516 +130f1013100f17180c0b11111a0d161c0f0812257ae03e295dd7804e6520 +1303070a00273644432809000d1c0d1a1b47474b4836040d151008080e10 +140a0406171b110c2455464f51404e2f100703558c7e75530f2571210d0f +549fa8926c908b402700144f751f437e334492221307487f2816131c4eb7 +3d171d0f1514181e2623180815212a261d1b202323232325262726232422 +201d1c1b18160f2473532c59663f130e191a4d83612e6163492a1a1e2529 +443e4163737162111e1895770c161d2ead6002273da66416201542d67b29 +2251c7621b1c144cbc782b272c3e7398b9c482674c3f130d107abb3894bd +918cc8cad6dcdbda1414141313121313141413121312111117140d0b0c0b +0908070f0e0f214fbfd1b97a96b2c6cc9484a7bacac58f96adc0c7b987a2 +b2bfbca18e999fa29e8c8592a09f8f8890855b393d5d6e470e1611131311 +12181e1e160e0d0c0c0c0b0c0d10111babc0ccae433d613c3b3d3632303f +53493d373736343240312c2a29364b543f2723131c214147394c4833130e +0a0d0808090a0a080706050403040607070609080605040506070c0c0b0a +090706060505050505050505050b0c07040b1212090b22233359afcbaf63 +4849462a373040b4d5e8d2e8e4eec23f223f3539392729190f10110d0c10 +0e0f1214141721302f3c3d38342c292f3d2e2226302c1f171f2725252927 +2229241b171f2323252d21292d2c211a1d2623282a29272627292520252b +26272e2e22272d2e2b27292b2928303024232c2d382e3b453c38435299f9 +564177f19c6a843f3325292f23464b565640221b2b3b2c38355c59595343 +1b2a322c26262a2d2d21191827291b173567586163526041221915679e90 +876520367f321b2062b0b6a37aa19951350f27658832548f4355a335251c +5f9943312b346ad6613f46383b36312f2c22110418262d271b161a1d1a1b +1e22252827262624201d1a19171712297c603e6e7e5e3f3e45406999733e +717560463e495556635656768483772c4141c3a63941444ec2741c4763d1 +8d3f433560f49d4c4a79eb853b3c3268d6924541465a8fb6d9e9af987d6e +3e2f2684b82c7fa27875b4b2b0aeadac17171514141313131111100f0f0e +0b0d131210100f0f100f0b121b264678e0ecd292aecadee4ac9cbfd2e2dd +a7aec5d8ded09eb9c9d6d3b8a5b0b6b9b5a39ca9b7b6a49da4976d494c6a +7a52171d18191614151b23231d1516151717191a1b1c1823b8d3e5c85c52 +6e453e3b34303141594f423b3938353241332e2e2f3d535d482e2a1a2328 +464c3e514b3617120c0f0e0f1011110f0e0d0c0b0a0b0d0e0e0d0f0e0c0b +0a0b0c0d121211100f0d0c0c0909090909090b0b0c12130e0e151c1d1617 +29252f50a7c3a9624c54543c4b4655c7ebfee8fefaffd752334b4042402c +2b1b11131714151919191d1e1f202a373742433f3c353239483a2f343e3a +2e252a302f2e33302c322e2421282d2c2f36272e34342a23242c26292b2a +27272a2c231d252b28293232262b2f302b27262b2e2f373a2e2f37384237 +434b413a4758abff6e5990ffb4829953423132352548505a5a42261d2d3d +2e3a365f5b5c574923323a373030353534271e1c27291a193d73666d715e +6e4d30252373ac9c95712a408a3c262a6dbac1ad85aba45b401935729741 +649f5367b546392f71aa5646455082ea6f474c3a3c38363738322313212a +322c201c1e1f1b191b1d20201f1d21211e1d1d1e1d1c192f836642718061 +484a504b77a7814d80836e524a525f5c65585b7d8e91883f5557dbc25863 +6b74e18f355c78e2a153594e7affb8686492ff9b52534a80efab5e5a5f72 +a7cef0fbb59c8274473b3490c3307c9762568f867f7c7b7a2e2e2e2d2d2c +2b2b2929282726252423221d191005040d110e1d2c3e6587cac5af6d89a4 +b8be87789aadbcb78188a0b2b5a87691a0aca88b7b878e938f7d75829589 +7b81856a402e4861652e0b18150f1511121a23231910100f0f0f0f101110 +0700301a0e1d1c1f7937160f0e11152a35312a211a151211081320150b25 +3f363e251b001228565c4a504337090b03040e10111212100f0e0d0b0a0b +0d0e0f0b0f0d0c0a090a0b0b100f0d0c0a0909090a0a0a0a0a0a0a0a0a0f +0f08060c131728121a0f0e00020003000b0d02090e001995bbb5ae910e11 +0008191317180a1926190d121612162219161715100e15190f1207031312 +0c17161613260f160b100f1514161b15111a1c18181a140b0f160a0d151a +181311100b0c0d0d0f0f1619190f12140d0e16170b0c101210162c45484d +564a271212141a0c120f12170e0144b9bbd5a1bab6a2ab441606120b1829 +332a4a5624121b070717163b333f59591e06000d1307030e0e0e130c130e +0b17648b50413d44897f16010b675f09245d745a8e1f110006284167648f +5c000c12013b81467aa43b6c95160c003d996484706e597d3300130c1715 +1722272218111b252c271c191d201e1f2123262727242724211e1d1c1817 +222769443a58593b1c141d20558663416a7b56181b2c2235456051678bc0 +e0222b33c399203a3625a5cf232211ac7933554e50a5c2361c2dbaa27c81 +9c82ccb321373677c9d9c6b2a0997b482a37212c4e1293bd8d73abcad7de +dede1414141313121313141413121312111114120d0a0a09060608141617 +234db9cab97995b0c4ca9384a6b9c8c38d94acbec4b785a0afbbb79a8a96 +9da29e8c8491a4988a8e907347344a61652d0a16130e1412131b2222180d +0d0c0c0c0b0c0d100d023d2b23322e328f50342f2e31314246423d393837 +36352c353f3120374c4142281e03152b595f4d5346380a0c0403090a0b0c +0b090807060403040607050408060503040506060b0a0807050404040505 +050505050505070c0e07060f1617220e23243026393a41274544363a3f1e +3eb8ded8d1b431341a293a3537382b322f180c10110d0f180f0e11131417 +2230363f342e3c3b333c383631432b302527222726282d27232c2e2a2a2c +261d212c272b30322e292a2d2a2e30302e2c2d30352d2f312a2b33342829 +2f312f354e67666b72643e29292c352833343e47402e61d2d4f0bbd6d2c1 +ca643628352e3c4746395d6b3d2e392626353050454e646839241d2e3428 +242d2b2a2c2427201b2b7ca56a58545a9c9229141e7a751f3a73886ea233 +25111a3c557b78a36f091f281855985d91b95081aa2b230d56b47f9f8a88 +779e571e3a343a332f312d21140d1e2a2f281b17181a181a1c2026272726 +2826221e1b1a1716222b7251496b715a474245426f9973537d9372383f54 +4c5b617564799dd3f73f4e5cefc54c635c46bce43d4035d29f59776e6ec3 +e2584253e0c79fa1bb9ee6cb394f4e91e3f5e5d3c4c1a574565d3d3c5008 +81a6785f9cb4b3b0afaf15151514141313131111100f0f0e0d0d11100f0e +0d0d0e0e0c19222c4976dbe7d291adc8dce2ab9cbed1e0dba5acc4d6dbce +9cb7c6d2ceb1a1adb4b9b5a39ba8b9ad9da1a2845742576d6f35101b1813 +1916171f27281e1416151717191a1b1c190e4d3d384744439c57362e2b2e +32464d49433d3a3836352c364134233b52474b31270a1c32606454584b3d +0f1109080f0e0f1012100f0e0d0b0a0b0d0e0d0b100e0d0b0b0c0d0d1210 +0e0d0b0a0a0a0b0b0b0909090b0b0e13140f10181f23301c2c2931233435 +3e27494b4349503151ccf2ece7c845482f3c494142433439341d11151713 +172118191b1e1d202a363b44393442413a4441413c513941363731353436 +3b35313a3c38383a342b2f392f33393c393431332f30343231303336382f +33353031393a2e2f323432374f6970767e714c37373840333c3a41494133 +71e6eaffd2ece8d5dc73413139303a474c40637041313b28283731534953 +6a6f402c25353b2f2b32312e302428201a2c86b277666268aba138232d89 +832d48809377ab3c2e1a2345608683ae7d172d362664a86da1ca6194bd3e +351f6ac792b4a5a38fb165273f363c353338392f231b252e342d211c1c1c +1817191b1e1d1d1b22211d1c1c1d1c1c2a347957506f755f504f514e7ca7 +825f8b9f7d434b5e586465786b83a9e2ff516472ffe069838067dbff5658 +4be7b46e908788ddfb71596af5dab3b6d0b4fde3516766a8fafffae6d2cb +b17f616a4b495c1081a067467d8d837c7b7b2e2e2e2e2d2d2d2d29282726 +262727272b21160b050d1f251947b59c5a81d5cdad767b9bb3b6927192a9 +b4ad7e8396adb59c7e8d9e99978976859096927f7986968b797d7b522f38 +4e7f4614031e1a0c160a071c142723111111111110101010161bc3d5cdc7 +3320481a10130d0a12303d2e331a201a10090c15100e0d2245405719081a +130e11043a57613b0a010d090a051a061111130410060813110607150e1a +070b1504040c051502071a0a060f090608010c1003090504190103030e03 +071a07021111040f070a0906050a070464d52e082ad25100031313171712 +1813542b07081211121b1c1817151110141b11090910100c0c1112111214 +120e10180a00190c1b1c19110509120c3070635214004639081f116a1f00 +2d1a0d1411151a0c151f2e2b2f3543931b010a75d1c0c2bdb6c4cd370710 +0e0e1927281a11140104050300000000060009150c110330403341643613 +0514150f1846384855400d0b0e0f0d0807090c0d0c0c09080705256d674c +6e76564812080d0c62300000295f7017000e03161d192d496e34050f1900 +2871757389776714011500488a757d8aa19b2309001b210f231c1920290e +1f1f221e1a191d231e2425252a302e26242829201b1d1d1a113c6d69437a +712d0e1e254e7fa6515977805e292721434e4f7c766970c6df3224246de2 +ceb4c8c2d6c22e341c3f90a7aea8a0d3812733283696afb7c28d8d343b70 +8050974f34b6cccb890024463c22321295b96a5ba2c8d6dae3e814141414 +1515151514131312121313151c160d0b0f1212140e3ea87f2148bcc9b482 +87a7bfc29e7d9eb5c0b98a8fa2b9c4ab8d9cada8a69885949fa5a18e8895 +a79b898a875b353b507f4614041f1b101d130e23192a24100e0e0e0e0e0e +0e0d141fd4ece7de432d5931333d37312f444c3b442f3c3c3731343c322c +2536544e5e1d0c1e171214073a57613a08000b06050116020b0b0d000700 +000907000009020c00000d000006021200041505000a06030500070b0007 +04051e0a10142015172a1a1d3238303f383d3c383a3e3b3284f14a2749f3 +721824343337353036295b290607110e0d11110c0d12151b273737353539 +3a36353a3b38383a3731333b291e382b3a3b38302428312b4f8f82713517 +6a5d2c45399449295945353a35373b2d36404e4b4c5563b53f27309dfce8 +e5ddd6e3ec5727312f313c4d50433a391e1e1e1e1d1c1c1c28212a342c31 +224a514152774e2c2332332b315b4b5661522c31343534302f3033312e2c +2926232247918769888b675721141c1d74450d144177882f12271b2e332f +435e834919253414458e928ea492822f1a2e1263a59097a6c0bc472d1d3e +402b382b2225290d1f22221e19161a1e191e2020252c2a222429281f191b +1b1911407678548f8a4c394a466a92b8637094a385524c435e6563908a7f +87e0fc53474a93fff4daeee5f2dd4a533c62b4cbd2cbc0f3a048544c60c1 +d8dce2aca74c5486996bb26b53d2dddfa827557867403f1186a6584e9bba +b4adb2b71313131313131313131212111112121319120e0d10161c1e1443 +b1914471e3ead09a9fbfd7dab695b6cdd8d1a2a7bad1dbc2a4b3c4bfbdaf +9cabb6bcb8a59faab7aa989a976a454a5d8b501c09231d13231a16291f2f +2916151517191b1b1c1e2a38e8fef6ee533d6337353b3530334b53414b34 +3f3d3630333b312c2537575168281727201b1d0e445f6942130a160f0902 +17030f0f11020c0206110f040413101d0b101a0908100b19060b1b0b0410 +0d0a0c040d11040c0a0a2411181c2a21273a29283b3d33413c40403f4249 +484199ff603b5eff852935434244403b413465340e0f171513191916161b +1e212d3b3a38363b3935373c3f3f4347494549513e324c3f4e4f4c44383c +453f63a396854625786b3a5245a05532644e3f4541434a3c454f5d5a5c64 +70c14b3039a5fff2f8f4ebf7fe66343a3837425052453c3f2c2f32312f2e +2b2b322a2f372b2e1d49594c5a7e52302332332c3560525f6d5c31323536 +332f2e2f32312d2b28262426519f9679999e7b6c362a3131885820244d81 +9239192e2538403d516f965e313c4724559ea29fb5a595422e422576b8a5 +aebed5cf55392544432e3d30292b311527292a26211f21241d201d1c1f23 +1f171a21231b1a1e20211b4b7f7f5c948f5142575578a0c46f789ca98a58 +554f6f756e97958c95f1ff665b5fa8fffff1fffbfff25f685378cce3eae1 +d7ffb459655c70d2eaeff7c1be646a9daf80c78067e7f7f8bd3763837048 +471789a24c3b819786767a7d2e2e2e2e2d2d2d2d29282726262727272a1f +130a040c1f26204695886381cbbcaa737899b0b48f6e91a9b3ad7e8395ac +b0997b8a9b97958775848f95917e7885888d887c6036366266581e130f14 +0d1502081a1a0f1d120711111111101010100a03acaa914e2d3433131211 +0b111629353a372816070d11080e0a0d0e1f414240211e2313151d0f2345 +62350b040f0b130611030b0814110c13130c0b14181318080c1403051b00 +090f020404010d0b05030a030a100811150004090504100b0809110f0f03 +1e0a15130b040405020060de918785e6b5b5d2781b101e151516452c110f +120f10181b181817120e1319110a0a0f0f0c0c10110f1113100b0c1422a0 +bcc7d3b4c9b84f1b1c22cccda9d398408fc62b081ddc4c09ad610024091a +06147dd6e6e6c7cedbde42090993c01f1c2e2a4dc9740c0d100f1725261b +1418191d1f1c15121316080714110d20203a4d4b4e5425180e0b1511235a +38414f3c161411090b0f0900090809080a090908004e6c7063647f651c00 +280f6178948f78576d60000a0d84976aab8546838e000514a08e49ab9c39 +877f2818161d4a51806f654c141b30070d344021351f08111b1e1e1b1716 +1a201c2224272d34322b292c2b231d1d1c180f415f5c5a7f90915b261248 +526e5567706e53372a2f4b475751526471796016383f388d9fb1ba68421f +274c3119a5927b8d66100023462937c79d89aa9142153ebeba7bde4f02a1 +8064e7670016435a621b85c37f4b7dbcd7dce3e815151515151515151413 +13121213131518140d0c0e110f10133d8b702d4ab1b6af7f84a5bcc09b7a +9db5bfb98a8fa1b8bfa88a99aaa6a49684939ea4a08d87949a9d9688693d +3c65685a1e161218111d0c152423162215080e0e0e0e0e0e0e0d0607bcc4 +ad663b3e402a383f3c3b353d4245463b3229313930362e2d283553504928 +2527171921122645623309020b0811040f0106030f0c050c0c02010a0d07 +0b00000900011700070e01030100080904020701050b030f14000d16171c +2b2722242c2c2f25433140403a35363a372c7ff6aca3a4ffd6d6f3993b30 +3c3331294b2a110f120e0b0e0e0b0c11161b28363936363b3b38383c3d3a +3c3d3934353a46c4e0ebf7d8eddc733f4046f0f1cdf7bd65b4ed55334bff +7a37db8f264e30412937a0f9ffffe6edfcff673033bfef4a40504c70ec98 +303235343d4b4c413a3b37393a39353335382a2a36302b3f3d525e595e66 +39312a29332d3c714a525d50373e3933353933263131302f2e2c2b2b2775 +908f7c798f742604341e718da9a69072857b1725289faf81c29b5c99a313 +2133bfad68c8b956a49a43333136636a9b8b846d353d52282a4d55303e24 +09121b1e1e1b1515171b171c1f1f262b2a25272c2b221c1b1a170f45696a +6d96a9af834e325f627e678091967f624f4c60586965657b8b967f395b64 +5db2c4d6df8b613c466b513cc9b69fb189311843644b61f5c6afcdb05c2d +54d4d396fa6e23bc8e72ff8d204d747d731c79b171427bb3b8b1b4b71111 +111113131313131212111314141316100d0b0f151a1c1a4293804f72d8d8 +cc979cbdd4d8b392b5cdd7d1a2a7b9d0d6bfa1b0c1bdbbad9baab5bbb7a4 +9ea9a8aaa396784d4a747566281d171b1220151e2e2c1e281c0d15151717 +191b1b202124d3d5bb72484a4930393d393a3a4448494b3f332a31382f35 +2c2c2733535352322f3220222a1b2f4f6c3e160f1913160512040a071310 +0c13130a091215131c0d111a0c0f25091216090908040e0e0a080e060b11 +09141a07141e2126343333373f3c3c2f4b384645403a3d423f3993ffc1b8 +b8ffe7e5ffa8483d473e3d3757371b191a1411161714161b1f212d3a3b37 +373a3a37373d4040454b4b484b515edcf8fffff0fff48b57585effffe5ff +d077c6fe65435aff8946ea9e365e41523d4bb4fffffffaffffff773f3fca +f95a586b6586ffa83c3a3d3a404e4f443d4142474b494442414233303832 +293a385266666b7040352d29332e4077545c6a5b3c3d393133353122302d +2f2e2e2e2d313184a0a1908ea68b3f1d4c3588a2beb89c7b8f841e2c31a8 +bb8fd2b073b1be2d3645d1bf7adacb68b6ad5646444a777eb0a0987e4449 +5b2f30515a3543280e1723262825201d20221d1e1c1c1e221f191b22231d +1a1c1f1d19507373749caeb78d5a3f6d718b718796988268585a736a756e +73899aa6934c6f7770c5d6e8f19e734e5a7f6852e1ceb7c79d4227506f57 +71ffd8c2e1c573456bebe9abff8236d1ab8fffa02d547b837a217daf6831 +64928a7c7c7d2e2e2e2e2d2d2d2d29292727272728272a1f130a0309191e +1e3c60686c84ccc0a8707698b0b38f6d90a7b1ab7e8394aaaa9478859694 +948575838e94907e77858e8b7e684d3547768a4e0b000518101017051710 +10140d2311111111111110101e126861c9ab35282c12110a041116213537 +2d231910120d090a0710101a3c3f3c1a111609070f0d2144743811090d07 +0f080d080a00060a030d120c0b110c0404050c0a0905071706050516150c +10000604100a0c130f1815050c12002b6c7d8e878a7f780e200d06050504 +0a0f0e0d1c9096957070668b964a030b1c0e11191f1a0f0c1011151a1918 +1917120f1417110c0c0f0f0d0d1011101214120e0e1446dca3829b8fb4db +a3000a3be47a0f3aa7c8d3c91b0f00c4c187ddd09ea2720d2307144f7880 +1c1d1c5317110046c2bda8b8b4a1d058001815131720201815181b1e1f1a +1411141513132516080f1c2d4164837e31150e11151127642d4560540705 +0b08070a161f1a1a1b1b1c1b1d1b33ae5e50ad683c949b2818159f684498 +674081971522249c7a478e7c4380a129221b88a46ca4887187bc46142d31 +8b9a917d78785e0000121e91b8563513031a1a1b1c1916151a1f1c23272b +313838343132302923201b170d2a2e3f7e7f7283bc5f2855383c536c716c +5d4931305354575558546a62260c3d4d55cbb15287bc6134493c464dcd67 +0a64ab52333f353b35bf825fadcc888b89b66c39c3b08ca5ac7de7730000 +0f486a2183c78b3b57a9d3dcdfde15151515151515151414131313131415 +18140e0c0d0d08060f315650364db0b9ae7c82a4bcbf9b799cb3bdb78a8f +a0b6b9a38794a5a3a39484929da39f8d86949e9b8c74563c4d798e520d01 +0a20181924112118171810230e0e0e0e0e0e0e0d1a16787be5c34332392a +3838353b353640413b37333034343031292e282e4c4d45231a1d100e1612 +2647773811090b0710090c070900040800080d05040a0200000005060604 +091b0a0a0a1b180f110007030e08070e0a161408151f0d418497a9a2a59c +983045342f31323339403f393ba9b1b18f9187afba6e252d3c2e2f2f2518 +0f0f101010100c0b0d11161c29363a39393d3d3b3b3e3e3d3d3e3c37373a +6affc6a5beb2d7fec61c2d5eff9d325dcaedf8f0453a1df2ecb2fffac5c7 +9530462a346f979f383c3b743b362272eee7ccd7d4c1f1790d3a37363a43 +433b383b393c3c3a3433363938354638272d394553749392482e2a2f332d +407b3f55706a2a31343433374049444443434241404059d37f6dc67d4ca3 +a5322424af7d59af7e5897af2c3b3cb4925ea5925c98b9413f38a5c189bf +a38ca2d6602e4748a2b4ac9a95987e111e3039a9cb633e1602191a1b1c19 +1514171a161a1f22282e2f2d2d302d261f1c19161031384d91968ba1e083 +446b484a648390928470534c656369696b6b847f452f60727af0d677acdf +8051685b6670f18b2e88ce73535f535d5feaab84cdeba3a49fcc8554e0cf +adc1be8eff9d2a353c69792077b87e3459a4bab6b6b31111111113131313 +131312121414151316100b0b0e10121316375e605875d6dac8949abcd4d7 +b391b4cbd5cfa2a7b8ced0ba9eabbcbabaab9ba9b4bab6a49da9ada89982 +654c5b889a5d190a10231b1e2d1d2d232121172b151517171919191e3331 +8f8af1cf4e3c422e37353139383b44433e38322f33312d2e282e282f4c50 +4c2a212518161c182c4e80421b131611150d110c0e04090d050f140d0c12 +0b070c101717171215241310101f1d1416040c08130d0d12101b1a0f1c27 +174c90a6bcb7b8aca53a4d3b333437393f4746444fbfc6c6a1a298bdc87a +313947393a3c31251918181616181514171b1f222e393e3c3c3d3d3b3b3e +4142444a4c494b4f80ffdcbbd4c8edffdc324374ffb34873deffffff554a +2dfffcc2ffffd6d9a8435a404b86acb44e504f874b46307ffbf7e4f3edd6 +ff881943403c3e47473f3c4143474a47413f4245413e4b3a292d37475d81 +a09b4e322d313530458149627f752e32363332343f474342434343444446 +64e3907fda9263babe4b3c3bc6926ec18c64a2b9344246be9e6cb5a772b0 +d3595148b5d199d0b49db3e7713f585ab4c5bfaca7a78b1c273840add169 +431b081f222526231d1c20201a1b1c1d1f24201d2124241f1c1b1c1c193b +4256989c90a9ec91527957576e8b959589775d5a797675727979938f5942 +74858dffe889bef292637c6f7d86ffa3449ee284626c5e696ffbbd97e2ff +b8bab6e39b69f2e1bed6d6a8ffad353b426e802579b5752443849185827e +2e2e2e2e2d2d2d2d2a292727272728292b22170b020512161a363c4c6d7c +c8cba8717799b1b4906e8ea4aea97c8191a6a49176829393948575838e94 +917e778592896f52444a607871250b17181102171204190f1920070d1112 +121212121111140c3335a7d6134c4d241103000c132236394e1e1d1b150b +0e0b0812101534396f280617190c0e1a2447813b140d0e080f1e232b3021 +1f171106030912161f2a0f1519080a0718668269423f3c21170e0d071917 +161d17181d15080e0f6d955c676a6b93dd24080b0d1112110c09080b040b +00000f000000040f0f1c1a0e100f0a0f0b090e15191a18191a1512111517 +100b0c0d0e0e0e110f101314141313150d8badb0a89d90a2560825008593 +240a1e4590c2000d0382a17d7d9a6876cd340e053d72060f12131a1e0e25 +0028a48d9294b9b9b7510616181314171813141711110f0c0a0708091101 +1014110c1a2429598f983e0e091b0e1430692a54775e1500001b2f281f1f +1e1e1e1d1c1c1b1b1fb6a074b9a981ba95191d15748a6d88936a877b291a +05217e7b8874534f682b070013867b7969372662352d6379a84900627c5c +862800120033672220251d051a1b1b1917181d2120252b33394144403a37 +352f28221b161c2e2d4593817d948667182b26254a706ea7d6c39c4a484c +4d68756e9bc6ac8d514e3ea9d89eb0dacfbb976331138bbda79cb69e9582 +3c2e0072b1a9cabe999bbba132022961855c6e5e4d12170b0d3a3d2594c6 +86354a97c9d9d9d21515151515151515151413131313141519140f0b0c09 +01000b2b31343645adc4ae7d83a5bdc09c7a9ab0bab5888d9db2b3a08591 +a2a2a39484929da3a08d8694a2977b5b4b51667b7529111e211a0d242012 +251921240a0d100f0f0f0f0f0f0f100e444fc3ee20565a3935312e363237 +42435c303638352f322f282e282944477a331120221517212b4e853f1710 +110b1323272e33241f17100500060d111a240c14180a0d0d206f8c744b48 +43291c110e081715111812161c180f1b1f83ac76828487b0fd442a30343a +3e3c39363533232614143023211a2833333e3c2e3025100f0d0c0e141410 +0b0c0e12161e2a363b3c3d3f3e3e3e3e3c3d3e3f3e3d3c3b30aecdd3c8c0 +b0c5762b451aa5b6442d4168b3e725372daccba7a2bf8b97ec532e285d92 +252e2e2f363d2f492252ceb4b5b4d7d9d67226383936353a393635383231 +2f2e2c2b2c2d35263335302b383d3d6ba1ac572a25392b304c823e668976 +3a2b2a475b544848474746454442404045dbc191d2be91c9a1252924849f +829fa97d9b913d311b3996929f8b6c688045221c2ea196948351407c4c44 +7a90bd60127e9879a44912310e47782d27281a021a1b1b191615181a171b +21282f3537373435312c251e19151f353753a69896b1a687323e33315b84 +89c8f9e6ba61595b5f7c8885b5e3cbb0747363cefdc3d5fdeed8b6845136 +afe1cbc1d9c2b5a25a50269bd7cce9dab2b4d1b74b1d4682a97b8777713e +493c3656482388b77c324e96b6b8b5ad1111111113131313141312121414 +151415110d090b0c0b09102f3742566cd0e3c8959bbdd5d8b492b2c8d2cd +a0a5b5cacab79ca8b9b9baab9ba9b4bab7a49da9b1a4896a5b61748a8135 +1d282a21132c2d1f33252c2f131516161818181a1a1d2727585ecef8295f +623e352e2b34353a42425c303336342d302d272f282a44487e391727291c +1c2731548e4820191a141c2930353a2b271f180d090d141821301d262a19 +1e1b2b78957a524d492c2216120c1c18151c181b221f19242c90ba85979b +9cc2ff4f3438393e41423e3b3b3d3539292641312f28343f3f4a46393b32 +1c1b1915161c1b1814161a1b1f242f3941404140404040413f4245484c4d +4e4e46c4e4e9dfd6c7db8d415c30bccc5b41547bc6f936473dbcdbb7b4d1 +9eaaff67453e74a93a4344454b5142593160dcc5cbcdefeeea813341403a +3a3e3e3a3a3f3b3c3a3a38373839412f393a332d3a414879afb75e2e293b +2f34508949749782402b2d485c554a4a494948474645464850ebd2a3e6d3 +a8e0b93d413b9bb497b1b78ba69c46392643a2a0af9d807e985c352c3fb2 +a7a59462518d5e568ca2d072218ca687af521a36134e7f332f2f230b2425 +25231e1e1f211a1a1f222527272626282623201d1c1a263d405cad9e9bb9 +b1943f4c433f658d90cdffecc56f6b6e6b859693c4f3dfc3888676e1ffd5 +e7ffffeaca97664cc5f7e1d4ecd2c4af655c37adeae0feefc8cae8ce6130 +5893b98d9b8b814952413a5a4e288ab4722137788e8b85792e2e2e2e2d2d +2d2d2a2a2827272829292820160b020512161c3d3c496c6db2c6a8707596 +aeb28e6d8ba0aaa67a7f8ea19f8f75809193958676848f95917f78868d82 +634340617e8043171a030d322d3b2d39492e22351e0b1111121212121111 +101b7fc6c4c31f7870311108080c12273248902417120e120f0c09141217 +363b833a0b171f14121e1f437138100c110a505f39252329342d150a0d1d +221812141a0b3e2b01102242857f5652531c00040e082025232a21192122 +0a0607709d5452403466c61f0c150c1217140e0e1b2927161c1a2e00171e +041a140f0f151b0f1418100b10181914171a1a15121216160f0c0d0c0e0f +0f0f0c0d101215171718119a3600584d0047a1221b16b384158282002cdb +580809a3af0e57a11713b988002c5ce3ad9ea19e8d96371214003577a1a1 +aa7d501100111a1515131512151718130f0e11110e0a1f170e14161a1f1b +254b6f6d27100f15091b3f692d5d7c4d030b202a220f04020a0a0b0b0b0b +0b0b003e9fa59f832c1c21091a0019836c6b5e250004120d11217d635e7e +3a0030270f0a25ae633f7a511c4743345c7c99530c636023747e19181a40 +7f3d31150d0f1715171616181c1f2328313c44484e4f403b3a352f261d17 +293034599f8e8a7e9ed86831453b466d667f999fe18c664c57585d7086a4 +ad813e583b30636f75947f75565e53140b21293c4b4d1737393613000f33 +564e2621929b271e01000014020f00000f06292d23289dc080384485bbd5 +d5ca1515151515151515151514131314151516130e0b0c0901000c333131 +353594bdae7c81a2babe9a7997acb6b2868b9aadae9e848fa0a2a4958593 +9ea4a08e87959a8e6f4c47688486491d220d193e3b493d4655372a39210b +10100f0f0f0f100f0d1d90e1e1dc2c827d4635373736303b3c519c372d2c +2c322e2b252e27294449914819222a1f1d27284c783f171318135a69432d +2b2f3831180d0d1c1f150f121d1245340a1c2e50938e635f5e2502091209 +1e231f261c17202511131783b36e6c5c5083e63f2e3731383f3b35374450 +4431393a4f223b442a403a3534373d271c18120e1017140a0b0e10121621 +2d373c3e3f3f3f40403f3c3d3d3e4041413f34ba5516776d1667c0423a36 +d2a434a2a31950ff7d2f30cad43378c0342ed4a31c4c7affc9babbbaa9b5 +563337165c9cc1bfc69c6d311b3238363435343334383935313335373430 +453b333637393c363b5e82833f2b2a3124365a8143708f672a3b4d574f3c +2f2d35353434343232321b62c0c2b9983e2b2d1526022a98818071370418 +24212537957a789853054a422a263fc87d599168335e58497191ac68237e +7b3f919c363531538e463515070c17181716151517191a1e262f363b3e42 +393834312a221b182c373e68b2a5a399baf27e435147547f7f9cb7bcf89f +7359676c7087a0c1cca4617d605588949ab79e92757f733730464e616e71 +375757563823325372693f37a7b1403b211b1f382230272d40334c452a23 +91b277364e8aadbcb6aa11111111131313131414131214151614120d0b09 +0b0a09090f34353e545ab6dcc89499bad2d6b291afc4ceca9ea3b2c5c5b5 +9ba6b7b9bbac9caab5bbb7a59eaaaa9c7d5b57789294572b2f19254a4656 +4c57654637452a13161616161618181c2234a0ece9e3358b834933313132 +323c3b4c98332a292a31302d262f282b454a944b1c262e23212c2d517e45 +1d191e1a64734f38363b433c21161724281e181d2e2457431b2a3a599c95 +6b65642a0a0f150b21242027201c262c1b1c2491c17f83726595f54a3840 +373b41403a3b485752424b495e30494f354b433e3d41463129241e17181f +1b1315181b1b1f28333c424546434444444340414347494d4f5048cf6a2b +8c822b7cd5574f4be7b949b7b62960ff8d3e3fd9e44389d24641e7b83465 +92ffe1d2d2d0bfc96a464a286daed8d7deb07f3e263b403b39373938393d +403e3a3c4142413d52473c3f3e3e423d486d9190493231352b3d618b507f +9e74313d525c544135333b3b3a3a3a3739392670cfd2caab5240432b3c17 +3eab9491804510232e2a2e42a18887a9671b61573b344ed78c68a178436e +695a82a2bd793189864a99a43c3b375a954f401f1317212121201d1e1e1d +1b1c22272b2b2e2f27272626241f1c1c333f476fb9abaaa2c6ff8c516155 +5f8986a2bfc4ffae866a74757e95afd1e0b7759073689aa6accab0a48992 +884b435961748181466462634a364668877e554cbcc6544b302a2d46313f +313345365049302791af6e27366c8a93887b2e2e2e2e2d2d2d2d2a2a2828 +28282929251d130a0308171b133947526d6aa1bea86f7190a7ac8a6a879c +a6a2787d8a9c9a8d757e8f93978775838e94907e77878f6e4a405986957e +5f191506539b7e747e7b88985226121512121313131312121e19080a0612 +197e6f2b0d0d0d0c0c202d49912414140f0d0a0c0a13142041445e3e1a0b +0f110f0e254b5d3e0f0a11065a805c4e494847370004101d272214032738 +6f330615000c00101b37471e03050c062630282e271a1a200d09003e9b97 +938893968a0d180c03080d0e0f1a364f411115345e1b0f00171603060e12 +191316160b0810171916191d1c140f151a190d0b0c0a0a0f0f0e0d0e100f +13191a1917e75e13b98e1156e7220916baa458a3c64c59ce7d050498e462 +a6ea8f7cd9a50c0d3adf7e455c3134300502190579d5e1b6a88d9464080c +1a17161314141718140f0d0e12130e0a04210b0d020f0f142e6886621314 +180a0f1f3d4f27538259001d2c13000613120e0f121416151919198fc542 +4fba6511292c20205b97302b8d8627423a211b35ac502791a75279682c13 +3baf7f4f7cbb7686521a4a65739e7369888c937d0604115f9731442f0c12 +1310111114151a1d252a35414a4d5358443e3c3c362a1f1a23373e638882 +948d99f087314e4d52776baae2dced755d6a7363667363686e2f54755302 +0f131a5369484c454524220a0c536676244d4d1b110d1470695325699692 +11221f23021710161d1411141c1b312691b479313467abd3d6c715151515 +15151515151514141414151513100b0a0e0c0604032d3d38363284b5ae7b +7d9cb3b8967693a8b2ae848996a8a99c848d9ea2a69684929da39f8d8693 +9b775347608d9b8465211f1261ab90858f8a95a4592c1415111110101010 +11101b1b1a22212926877a40313a3c362a3438539e35292d2c2b282a242b +272f4f526d4d291a1d1f1d1c325968491a151c136890695b5554513f060b +1220272213052e437a4013250c1d0421294451290c0c1007262e242a2218 +172014130851b0b1ada4afb3aa2d392d242a3031323d59725f2e32567f3f +35253f3e2b2e34373e2e1e150d0a1016140c0d1112111624313a3c42413f +3f42423f3d3e3d3c3e44454138ff7d32d8ad3075ff412835d9c377c2e76d +7df2a12a29bcff83c5ffa892eebb282d58fd9a61764b4e4c21213a289ef8 +ffd2c2a9af81242a373633323133343737343235383936322a472f2f222d +2c2f457f9b792b2f33252a3a58673e6a9776254c5b422b323e3d393a3a3c +3e4041413db0e55f69d17722383b2f316dac47409e9639544c332f4cc268 +41abc16b9483462d52c6966693d18b9c652d5d7884b18982a1a7ae9a2120 +2872a438462d060c13131111111213141b1f28333a3d42493c3936363227 +1d1b263e48729b96ada5b0ff983e5a595e887fc1faf4ff8568758377798a +7d858d52779a782734383f7688676b666849472f31788a9a466d6b3b3432 +348f846c3b7eaba92b3f3f45263d363e4a44413e3a2d342085a975334170 +a0bdbbab111111111313131314141313151516140f0a08080a0d0e0c062d +3e435355a3d2c89395b4cbd0ae8eabc0cac69ca1aec0c0b39ba4b5b9bdad +9ba9b4bab6a49da9ab866257709da992732e2b206eba9e95a19da6b46938 +201f191717171717171b3030282c282f2e8e7e412f3536322c35324b972f +242a2a2b2a2c252d2b32505370502c1d2022201f385c6c4d1e192019759f +796b63625d4c12151e29312a1b1140558c50233419270e29324c5a2f1312 +1309262f252b261d1e2a1e1f1560c1c2c4bcc5c5b9384234292c3233343f +5b786a3c42628e4b402f494633363d4046372b2319161a1e1b15171b1d1c +202b3741444949454546464341424342454d4e4d4bff9247edc2458aff56 +3d4aeed88cd6f87e8dffb13a39ccff94d7ffbca7ffd2404670ffb2798d62 +656236354d3bb0ffffe8d9bec08f2f323d3b373537383a3c3b3a383c4144 +423e37543b392d37343a538fac8737383c2c314161734c78a8842d526148 +343b4746424344444647494949bff46f7ae38b364d50444581bf5951aea5 +4560563d3854cd744ebad27fa996573a62d4a674a3df9caa763c6e8796c0 +9489a8aeb59e28242e79ac42523a141a1d1c1b1b1a191b191c1d222a2d2d +30342926262a29221e1f2b445179a29db4afbeffa84e68676a9288c9fffe +ff957a87908087988c95a1658bad8b3a464a51899a797f797c5c5a42448a +9aa8527a7648474549a399825093c0bb3c4f4e5132483f464f46433d3c2f +392485a56a252d558096907c2e2e2e2e2d2d2d2d2b2a29282829292a2820 +150a0308181c0e2c4a4e6973a1c3ab70708da4a9886a8499a29f757a8798 +978d757e8f94998874838e94907d77848a553f5e869f936f9f17061d736b +090f0a0e2f98470c091612121313131313130230290f1b213b5757220e0a +080c0b19385d6e341917170909110e1314274a495040230f131815142e58 +484a130b13040248445d5b4938280d00001229343f4748688c2d0411045a +6f6a5b503e3832070c092f35202221171d12000c12236f726f81a29d620a +0500111112120f122132210e0b152803101614170f1a180d0f0e0f0e0607 +0c11151a1c201d130f161e1c0b090c08080e100c10100e0a0f1619171ba1 +c9b1cfd8dadddf32180d71d7c4bfd8afd2d6530c182cb1d7c7c2c2cff181 +0d2b1889793d1e143b8e610b21014586252daeadada91700141313111213 +1513080a0e0f0e0b0b0b172200293f45171e29759c6f15151b0e19203f44 +31437f68281e100a1c34301c191a1c1e202124271669e5b290ede4b1a54e +1c142fa19c788aa884876928090b637f7779846595bd0a00063567674057 +6a7d2b12707820212d142a1c000b00040051ae3021090418110e0f0f1315 +191c23273341494c5359473f3e403a2e231d1f52506a6d648cb37eaa6c36 +3f3a495b676665635428476d4c41616356665a304ba1881a131942777d31 +465b521d1d1e3d898b772b47492c0d111584745b3f8fca9424170a201d10 +11130a041f302637372993b1722e2c4797ccd6c715151515151515151615 +15141415151616130d0a0e0c070500204034333c84bab17c7c99b0b59476 +90a5aeab818693a4a399818a9ba0a594808f9aa09c898390925c46648ca5 +9975a620122a847e1e241c1f3ea550120b16111111111111111000333b28 +37394860623732373735292d43657a432c2d3125252a2628263658576052 +3521222724233d67575921192113155d56706c594534160905192d38424b +5075993d1423166c7f7b695d4841390c100b2f331c1e1c151a1204161f34 +8288899dbeb97f282317303031312d303f4f3d2c28374a28363e3c423a43 +4134362b190d080b0f111213101413101625353f3b42423f3f43423f4141 +3e3a3c43443f3cc0e8d0eef7f9fcfe51372c90f6e3def9d0f3fa77303c4d +d0f4e2d8d7e1ff95274934a59357362c53a87d2a402268a74148c7c8c7c5 +321a2f302f2e2e3030322b303436343333333c48134b5f623338438fb386 +2d2d33263138575c485d9688534f413b4b605a46434446484a4d4f4f3a8b +ffcfaafff9c4b85f2d2744b8b38f9bb894977b3a1d22799791939f80b0d7 +21181c4b7d7d566a7d903c24818a3033412c413517270c1d0662b8362005 +001211110f0f10121213191c2633393b414a3c38373a362b221e245b5a79 +7e78a3c990b778424846556b7778777564344e765c55747a708379536ec6 +ad3f383e679a9e50657c7542424564b0b09b4d69694c303436a08d7154a1 +dca93b33274242393d403a3249543e42362087a76f343b5391babeac1111 +1111131313131514141315161615120d0a080a0d0d0b00203f3d4d5ca2d5 +c99494b1c8cdac8ea8bdc6c3999eabbcbbb199a2b3b8bdac98a7b2b8b4a1 +9ba6a56e56749ab3a783b62f203a948d2f35303351b65f20182019171616 +161616191146472f3b3d4e6566382e3031312b2c3b5a703c262a3026282e +2a2b2a39595860523723272c2928446c5c5e241c221a23706a817c695544 +2515112338414b576388ac4d243124788c857466524a4312130a2f341d1f +201a211c0f222f44939da2b5d4ce8f332d1f333233332f32415548373641 +56313f4644494149473b3d33251b14161819191b1a1e1e1b202c3b45454b +4c46464949434646423e41494b494dd4fce4ffffffffff654b40a4fff7f2 +ffe1ffff87404c5ee2fff5edecf7ffad40634cbdac704e446bbf923e5435 +7bba565ddddbd6d13b2036343332323437372f33373b3d3d3f3f4c552157 +6c703f45529ec39439373d303b426368566ca8955c564842556b68545152 +5254565658594697ffddb9ffffd5c9713f3855c8c39fabc7a1a48544262a +84a39ea2b093c3e831242a588b8a64788c9e4c329198403f4830473a1c2a +11210b69c2422e140c201b1a191919191a181a1a1e282a292d352825272c +2b24202028606380867fabd49ec78852575463788484838173446087695e +82887f938d6682d9c0524a5079adb164798f8854545675bfc0a95975765b +434849b5a38669b7f0ba4b41354c4b3f40433a3048523e443b2389a56626 +283b7194927f2e2e2e2e2d2d2d2d2b2a29282829292a3026190b02061419 +19274a415f77a0c4af73728da3aa8a6c8297a09d74798595948b747c8d93 +988872808b918d7b74837048558ca195816d5f2725004e9562616a6f5288 +190b200811121313131313132700201c013448324b27180b040f141e4a85 +6c5c1a0718130d181413132a50495536140d17120c142451314e150e1907 +68884c42312f4d6d19000b39462414201a278d5e0709259430120a0e0d49 +6306100f3737161417131a1c0e0b0b096783a893614b3a14001b07070d15 +171212170f221609110e180b08150d0d0f111b1617130d0e0e0c10191e21 +1e120e18201e0b090a06080e100c14130f080d141714124fcabdc4a9431d +221b1a0b2ed0b7c7cd6e0d224a330f29d6af94c8dfa29856052a0d66acd4 +ced1d8ac4700291769941603983a28ce660b0d0e0e0d0d10100e0b121c1c +1510141abc750986d6c03f2120526f5813141b151722505c4f3b68580d0b +1f32260801100c0d0d0e0e0f1011150c6a84514845474f2e120710130019 +1603263f6f2211090500080009175ec11e11100b00000810266525135e79 +2a11110b07020e13040a160060302b0e110f140f101014171b1e2024303f +47495058473f3e413d31252025431e5d885f1900190f182c2e345d658338 +001c09234d5e6d47706a574e1f296b9658152b1c4c795d4a4f4832280f10 +3c9aa569364d402e130e2e79553463a6c17121232d1a12140d130d191319 +3a402c32a8b96d36323889c5d4c615151515151515151615151414151516 +1e19110d0d0a0302091d402a294086beb57f7e99afb696788ea3aca98085 +91a1a0978088999fa4947e8c979d9987808e774d5a92a79b877366303103 +5faa77787f8163952213240b1111101111111110230131351d49533b563b +3b3631383030568d76692b1b302c2630292625395b576548261f29231d27 +3564426027202b1a7da1625846425e7d260c15434e2d1b2825339c6d161a +36a440201618154f670a141137371210120e171c121317197a99c0af7b66 +55301a3623232931312c2c302a3e342a33353e3333403838383a44342115 +1112110c0d1212151310152737413b42433f3e43423e45443e383a41423c +336ee9dce3c8623c413a392a4defd6e6ee8f2e436e57304af3caaddef1b4 +a7681f482b82c6eee6e9f0c5621c45368ab3311cb15442e98127292a2a29 +292c2b2b2d3842443c383a40e1992aa6f3db593b3a6c89722a2c312b2d38 +687469558278393d4f6254332b39353737383a3b3c3c392e8aa16d625c5e +6443271c272d193029153651813625201d192312253279db35272621130d +1b24387737256e893a2324201f1a282c1d2229116a342907060712121010 +111414151619233137383f493c38373b392e24212a4c286a99722d0b2518 +1f3537406b7391460e28122a52657b5b8381716b3e4c8ebb7d3a5041719c +7e69706b574d363763c2cb8f5a6f604f342e4d956e4975b8d484383d4b3b +373b3b443b463a374c482a299eb16e3e434684b6bdab1111111113131313 +15141413151616151a130e0a090b09080a1b3f32415fa1d8cd9796b1c7ce +ae90a6bbc4c1989da9b9b8af98a0b1b7bcac96a4afb5b19f98a48a606da2 +b5a99581763f411271bb8a8a949777a63320301419171716161616193413 +3b3a214c59405a3c372f2c3433304c806b60251930302a342e2c293c5f58 +654828212d2a242d3d6a496429222b208eb7796d5953708d3619214d5936 +25353749af80292a46b34f2d2224205b731317103737131116141e261d20 +27298baed8c7927b663c253d27242a32322d2d3533493f333d3c473b3a47 +3e3e3e404a3c2d221d1d1a16161a1c21211b1f2e3d47454d4e48484b4b45 +4c49443c3f4648444482fdf0f7dc7650554e4d3e61ffeaf8ffa03f547e67 +415bffddc1f3ffcabe803860439adffffeffffdb77315a4a9dc54630c565 +4ff4882b2d2e2e2d2d3032312f3943464340454df1a939b5ffec684a4b7d +987f38383c3638437480786493874244596e61433b4b4747474647464745 +453a97af7b716c6e7554382d373c283e3823455d8b3f2e2827222e1f3343 +8cec4332332c2018292f468345317d96492d2a23211c293021262f187440 +371717161f1b1a1a1a1b1c1a17171d2628282b342825272d2e2722232e51 +3172a179361533273144464e78809e531b36213a65758664918f807b525f +a2ce904d625383af917d837e695f474672ced89c667b6d5e474361aa825e +8bcce595484a56443f403b41394337354c4a2d2c9faf6833332f668f937e +2d2d2d2d2c2c2c2c2929292a2b2c2c2d2b2014080004121712273949615c +98baae776d8a9baf807085909e967b768996938e737b92949387767f8d95 +8b7b73774f5b8aa3b29d5e4f4f2f0d142d696c545b74754d1100130b1413 +14151718171619171d04272829434f22140b0315081342a69954161d0818 +0c0f1b1406314b495b3f1010110e021a2c363e511205140b7b99312b393c +49ac25040c49905838585e82bd76000e0f8c6068665c647051170a132832 +2c2522180f280f00202399b8897a7c82872500170d0d0f0f111212101110 +13151614131208080b0f110f0c120b1c0f09120e051a1d132b050d0a282c +04423c1703281b00100c0d12141010140b7dd25262cd8c102c1813184bd6 +644bb9db2f514f320038e99e60a5df6f735f1421154eb8d2b296c1c98c29 +19223da18f80918ba8b4520917091a1009150c0e080b141a19151d28e557 +2bca861416222d42483d161a0a1e192c565824446d2c01132b120019060b +1317030e0e0c130d16276e1c000a0105181e1c0f080c0b060c0b0f42851d +0f0f050c010a063bb1cd130d130f1213112d445e2a1e7470230a12100d0c +0a0a0b0b0c293c301a0e0f0d100e11111212181c1e25323c403f43484441 +3d37332f2b251f26347390791e1e22212534293b83909c2b22261b374551 +526b7b7772432046766e1f2e26225672312a5d3127131e142a955b1e354f +352c111746751a1759b79a4b232619171c0f0e0c0f15161619231f3a9eb9 +6530303c6eb1d4ca1414141414141414141415161718181919150f0a0b0a +0302041d2f322b2780b5b4837996a7bb8c7c919caaa2878295a29f9a7f87 +9ea09f93828b99a197877f82555e8da6b5a06255573819243e7e816a6f86 +865c1c04190e141211121415141312182e1d433d344a58363635303d2425 +4eaea361252f1d3023262f27184056576d5324242421152e3e4a51642619 +282395b349444f525ebf361619579c6545646b8ec985091e1f996d747062 +677250170e14283227201c130c2611012930aacd9f94959ba14012302627 +2727262727282a2d3136383b3a3b3335383c3c3a3733171e130d16110212 +13092303141b414e3478724d375c4d32403d3c4144403d3d2c9cf17181ec +ab2f4b3732376af5836adafc507273562059ffb97abcf18182713041346d +d4eccaafdae2a74636415cbea897a8a2c0cc6b2230223329222e252b2a2f +37403e3b414cff7748e5a02b2b39485d62572d301e322d406c703e5e884d +30485d4225442f31393d29383a3842393c49903c11261d1f32383629242a +2922221e2156993426281e271c262257cee92b2427232627233f56703a2f +8481331d25252524242423231f384534180704050e1111110f0f1113131a +252e302f343b3c3a36312f2e2b29242f3e809d872f2a28242b3b3247919e +a8342b2d213d4859607f8e8e8c603f69999344534b477b9552497e544c38 +453c52bd81445971554d32386590332c6bc8ab5e393e35353d353b3b3c3c +362c27271a3195b5673a41496aa1bdaf1010101012121212131314151819 +191815110b07070a0807041b2e3a43459acccc9b91aebfd3a494a9b4c2ba +9f9aadbab7b2979fb6b8b7ab9aa3b1b9af9f97986b71a0b7c4af6e616447 +2933508f947f879c9a6f2e1325171c1818191b1c1b1c242a382247403a50 +5d3735312d3c282744a19858222f2034292c362d1c435a586d5225252827 +1c3548515768271a2727a6ca615a666771d046242964a86e4e727ea4df98 +1c2e2fa97d827c70767f5e2111162a342b24201913311d0f3841bce0b6ab +abafb04b1c352a2829272728282c31353b3d41404141393a3d4142403d3a +232b1f181f1a0b1d1e14300e1e23485740847e594467583b4a4442474844 +40433baeff8393febd415d4944497cff957cebff5f8181642f68ffca8bce +ff95978746564982eaffe2c5f0f8bc5848536ecebca9b8b0ccd672273526 +372d27332c2f2b2f394346444d58ff8658f6b13d3c49596e71643b3d293d +384b797c4d6d995c3a50684e345543464e523c4847434c4247539a471c32 +292c3f4543363035342e302c2f61a23c2e2f253027323065def7372c322c +31302f49627a4739918b40242926252423252525233d4e3f261715141b1a +1b1b1816191817181f25231f21282928262526292b2c28344788a6903736 +36333b4b41559eabb6433a3d314b59666b889c9c9b70537cada657665d59 +8da8655d91675c4854485ec78c4f657d625c434b79a547417fdabd6d474a +403d443838353737332a27281e3498b4623237374d7d93822d2d2d2d2c2c +2c2c292928292a2a2b2a2920130700031318152d4453696098bbac776a87 +98ac7f6d828d9c9479748694958f737a919493886f818f8e867b6959627e +b2abae6b61470e112419003153635947231a040315191313131416171615 +15161a260815444f5a2215020f0518283c95917f0c03070c140a001a0e24 +48515f2d0f0e1d1c16081f5c3d4e1e130100418c91968565706b1a12060a +6a888b7e692f4430001c005d82716f4f1c232a0005071b231f1c1d171203 +070006288a380084a36f975300090e0e1010101112101210121414141413 +110e0f0f0b060c1e360c15120b121913180f1f140e00aa5c1565772d0a7b +b0070f0c0d10110f11191577e4b0b6e6dcbec751101348d9c1cbc8e6cadb +792c1a2494d1c8c5d4c8d399072c2f4a6e501900133b46292e200733372c +3b241f2b0e1018131d0f0e1a0c0b0e0b0e13110d0d138fd5b5c94f021c35 +25474d42280121220d265d623a3f632e213072887590818d8e771c010211 +1f161314441a00140d13171d1b10090d0b080c1c2a5d842d13051615060b +0a4ab7bc201b1f1715130f2a2d47343c6b5b161f1d1c1b1c1d2024251226 +37332517110b110f11121213171b1b202b3538373b4132312f2b2a282521 +181f4496b07c1a1e2223262d1c337e948a241d231e404e55304e5b6b713f +264b925f04272740634d2f314e3b1f1f160e329153142d4d31210c4ba19e +1c2568c3652914211d191b0d0d10151a1c1d1c1d26328a99502f2b375ba1 +d0cc141414141414141414141415161617181a150f0c0c0c040309253c3e +352e81b7b2837693a4b88b798e99a8a0858092a0a19b7f869da09f947b8d +9b9a928775646780b5aeb06d634b14193026084468796e5c352b110c1b1d +13121011131413120e15283d212a4f566336372c3c2b343a47a09d8c1a15 +1a20281e112d1f33565f71412321302f2a1c33705163332b160f5ca8abb0 +9e7e86802f25171c7a989b8e783e503f0d2c056a8e7a77521b212800060b +1a231a1717100d0209060f349a49049ab986ad69141d2323242424252425 +292b2f3337393b3c3c3b3c3c3631373f420e19160f15160d0e051712160e +c37e4399ab613bace2373f3c3c3f413f41443998ffd1d5fffbdfe6722f34 +67fae0ece9ffebff9d503e45b4eee3dce9dae4ae264f4f698d6c34152c56 +61464b4027505143523c37442729312c3628273325272d2d3035342f2f33 +acf1cfe062132d483f6367593e1533321d38707851597e525065a4b8a0b9 +a7b1b29b42272c3d4e423939693c20352b31353b392e292e2d2626324073 +9c462e20313223272666d4d83832332b2927213d3f5a454d7c6c27323132 +3435373a3c3d25354037231106030f1211100f101214121620282a2a2e36 +2b2b2927272727251d264da0ba8627262122293528418ca2932b23262143 +515d3e626e828b5c456eb584294c4c6588705052715e44473e365ab9793a +51715342306ec0b9353a7bd4763b273735363a30373b3c3a352d251e222c +8597543a3b435994bab41010101012121212131313141717181817110c08 +0a0b0b0809223a434c499bceca9b8eabbcd0a391a6b1c0b89d98aab8b9b3 +979eb5b8b7ac93a5b3b2aa9f8d7a7d95c8bfbf7a705720263e3618557b8e +8371493d221b27281d1a19181a1b1c1d20273343262f555c6837362a392c +383c3f9293851a17202731271b342636576071422425363633273e795868 +362b17146dc0c2c7b4949b934034272a87a5a89d8b536652203c167a9e89 +84612b2f36090b0e1f251e1b1b17140a15121e44aa5b19b1ce98bb761d24 +26262525252626282f3237383d3f4040424041413c373d46501d25221a1e +21171910241f2116ca8750a6b86e49baed434b4644454543434a47a9ffe2 +e7fffff0f883414579fff2fdf8fffaffab5e4c54c3fef4eefceef8c33a62 +647da1814929406974565b4f365e62536048414b2c2d35303a2c2c382c2b +2f2c31373a383940baffe0f073253f594e7176674b203f3f2a447e855f68 +8f605a6dafc6b1cdbec9cab3573a3c4a584b424172452b3e363b40454438 +3437373133404d7ea64d352738382b323274e2e442383c32322e2b444961 +4f55867431383230313236393e3f293a4942301f17121a1b1b1b1819191b +15151c201f1a1e241b1b1d1c20232628232e56a9c49030312f323842364e +99afa23b33373052606a496b7c909a6c5981c9973c5f5e779a8363658471 +54534a4064c384455d7d5f514081d4ce494d8ce6864935423f3c3f323334 +3735322c2420232e899a53363837407191882d2d2d2d2c2c2c2c2a2a2828 +28282929281e120700031318142b4a57686091b6a978668394a77f6a7f8a +9b9276708391989073799093948a737e8d92856e5b5586a9cbba8c2b4036 +410500072ea4ad9b7e7455571c0a0a0f13131314181918161e16191c0921 +3c36502107001901151139ab8f5e0d22320710150b1b1224534f6e261d13 +030021161c51365006021f0a41a37f699c2b010a0109043aca7a48997900 +0518031408ab6127507128061b080807161c191a201c1b010c111649a135 +1968320b807619120d0d0e0f0f0f120f100e0e0f101212120f0c0f110c0a +1e3ead151d1d0c0f200d22170a140000d59a078ec0561688d6000f0d0d0e +0d0d131e133776706b5e5f6866221e2003272f3f1c0b1c34160a29161d28 +0f0e04000a12143428252d18090e001119112124182d1c050f0400040019 +0d12160b12190a0c0a06050a0d0c0b0b55b83124182227242f4f4b7cb125 +221b3233493b383d6f4c270e5c7d70cab8586a6a140a0e0f161a1c121e1f +12211a1f313633282022211d252b2646481d1f1c151a1f25163e723e1919 +1f171718183548342246645b0b1813110e0e0e1011140c0f191f1c14100d +111112121213181c181d232b2d2c30352b29292825232220180e3988984f +00151e2423230d2c7394701d19212750584f365e5f798149405d846d0a1c +235a77662d52665d171f14234d854c2b444c21150558bb9c2c6797d0461a +11201c17150b091017181c24211a1a217670302521314687c2ce14141414 +1414141415151414141415171a16110d0e0d06050a26454438307db4b184 +728fa0b38b768b96a79e827c8f9da29a7d839a9d9e947d88979c8f78655c +88a9ccbb8b2d423a450c0a133eb5c0b0948a6a6a2c161213131210111213 +1210171527332236473d5933262845272e2346b79a6a1b34441b23281d2e +2333635f803a30261510342932674c671e1c37235cbd9983b7441a211820 +1950e0905eac8a0d1429142518b86d30567427041705080a151b14151915 +16000c151e55af452a7a441e938a2c2520212021212121222427292c3135 +3a3b3b383b3d3735475cb917212310121e07170c02120604f0bc33bef086 +46b8ff153d3c3e3f3e3e454b395b97948c82808c87463f44244b50603d2c +40583a304f3a41492f291e141f2c35594b464c3526291a2c342e3e44384d +381f2a1f1a201935292e32272e352528282424292c2a27276fcf4637282f +3234496b6592c43530273e41594e4e578b7056438ead9bf3dc7a8c8c3830 +383b45464539454437443c425359554b4547463f43474263653a3c393237 +3c42325a8e593231362f2e302c4a5b473559756c1c2b27272727282a2b2c +202124231a0e05050f1111110f10131512141b222322262e252525252423 +23231d15408e9e5507191a20252b1b3c83a179221c2229525c5744727290 +9b665f80a7922f41487f9c894d7289803c473c4e78b0745168704236297b +dab8457caae1562a2134333031292d3536312f2e251a181f7571352f2f3c +457eb0b81010101012121212141413131515161719130f0b0e0e0d0b0b23 +42484e4a96cac89c8aa7b8cba38ea3aebfb69a94a7b5bbb3969cb3b6b7ad +96a1b0b5a8917e76a1c1e1cd9b3a4e455016141f4dc5d1c3a99f7d793b24 +1d1e1d1a191a1c1d1e1e29273239273b4d4560372826442a35273fab9266 +1c384e26313627352a36635f803b342c1f1c42373f74576f221d37286dd4 +b09acc5a2e332a302a5eee9d6bbb9c21273b263528c87d3f648335122610 +100f1b201a1b201c1d0716202b63bc553e90582fa195332b242222232323 +26262b2c303036393c3d3e3b3e403d3b4d64c7262d2f1b1b2913251a111f +110cf7c53eccfe9454c6ff224a464544424246504469a6a29b908f9a9654 +4e5233595f6f4c3b4e66483d5c484f583e3a2f26323d46695e575e47383a +2b3d453c4c514558462c352821241d382c2f332a32392c2c2824262c3132 +32337cdd574638404444587974a0d2423d334a4c665c5c64997c5e4b99bb +acfff495a7a54e4348484f4f4b3e4c4a3f4a45485c5f5e514d4d4e484e53 +4d6b6d40403d363d424a3d669a6439353c333434334f624d3c5f7d732431 +2825242425272a2c21232a2c251a15121a19191918191a1c1615181b1a16 +1a1e19191c1e20232728231d4a9aaa611124282f3238284992b18a352d34 +385f68624f7b809eaa767393bba542545a91ae9c62879c934c5346557fb7 +7c5a747c5145398eeecd598fbbf366392e3d3b35352b292e312d2d2d261c +1b227a7539313236315f8a8f2e2e2e2e2d2d2d2d2b2a282726272828281f +1308010412160a1f434d5d5885aea97d638191a382677c899a92756e8190 +999172778e92948b7d7987977e56597dabc4c2b14d0d10230f001207144e +180976868a8717131c07131314151919181713171b0010202b56493c1100 +110a200b20a39e63350f021a05103c2019134041501c191101415e133348 +396047001b0564b03b2bcc76365207201740d88450a8d279865e121010b3 +a25d7daa662c250c0d09141a161a201c101f170000027092a2ad96858037 +00070e0e0f0f1010100e0c0a0a0a0b0e0f110d070a120f0c2142f522181b +150916121418051b130ca0e1afcfcfc7c6ceb50a0e0e0f100d0b111b1a19 +1718130000000000182a1d1f240e15111609161622303d2d241e2c271a1c +142c1e1c281b171c1b16120f1b25252b240a0f141a18050e050c0e0e1714 +0b150f0d0a0b0d0d0d0ca5e6221129321c133367578ff2602e382a2b3c34 +5d5d69240100253d38a9bd73767d2e283221243334302030232a25272a2d +2a21191715110a1625543718110b0b080d0d07457b4202050f090b10132f +59302d71837e15090f0c0a0808090b0c120907090b070b13101012111213 +161b1a1b20252826292d2f2c2b2925201e1f210e3d77833602212129231e +09316a8b571918273b625d3e346f626c6b3a455cae7f191b0c5b7c533065 +705d10151128535c384c695013150c2a6b562da0b2be3d1d141b1611120e +0610131019292d24222c7b60202422393c6fadc815151515151515151615 +1413121314161d1a1311110f0807041e423c302a73afb1896f8d9daf8e73 +8895a69e817a8d9ca39b7c81989c9e95878391a188606384adc4c3b24c0d +102612041b11205e281c8da0a19a271f240b15131112131312100c16290d +2733345a504d30263a2f381c2fb0aa714420142b18234e332a255254622f +2c2413537126485e4f766012351e7ecb5346e7914f6b213a315af29e6abf +e78e9b74282323c5b26985ae682c210a0d0c1419131519150b1c1701010c +7ca0b1bca59590480b191d1d1e1e1f1f1f1f212123262a3035393633363e +3a374a60ff251e21190b140c0c10001b1b1dbbffd7fbfbf2f1f9e0383c3c +3f413e3c424b423f3b3e3725222121223c504145483239353a2f3c3e4a58 +6353453e494235393a544440493b37393734302f3b47474c40252a2f3634 +212a21282a2a333026312927262729282524bbf9321e3239221f4a8371a5 +ff6c38403235484473778548301f556b61cfdf92959c504d594b50605d59 +47574a514c4e5154514842403e382c3646755839332d2a272a2a2461975d +1b1d2721232828446e434084968f261c2425232222232526271b12100b04 +030b0f1011100f10131615161a20211f22292b292828252121242515417b +8538041f1921222619457c9b601e19263a646148458375838557647fd1a4 +3e403180a17850859382383d3c537e8760748f743439314f8c7347b5c5ce +4a2b222c29262a28232a2920232f2e24222d7c65272d2c413e6ba0b81111 +11111313131315141312131415161b1713101111100e041a3e4245468bc4 +c8a187a5b5c7a68ba0adbeb69992a5b4bcb4959ab1b5b7aea09caabaa179 +7c9ec6dcd8c45c191a2d190d241b2e6d382d9fb1b1a9342b2f16211d1c1d +1f2120201e2836152d393d635a5432263c3542232aa7a6714928223b2732 +5a3a312752526433322b1f618037596c5c81651636238fe06b5bfca6637f +324b4069ffab79cff89fac82363131d1bf7592ba75382f1517131c1f1a1b +201c12231f0a0c1688adc4d1b8a59d52121d20202121222424262627282a +2d32383b3a363941403d506aff342c2d24171f18191d0d272625c2ffe1ff +fffffffff0474b4949484340464f4c4c494b4532302e2f2f4a5d4f525640 +4743483c494a56647060544d595346494760514e58484447453f3b3a4650 +50554b3033363a37242b22292b2b36342d352a26272a2d2f2f30c8ff412e +4349322f588f7eb2ff78444b3f4154518084915438265f7a73e6faaeb1b8 +69606a575966635d4c5c4f5651535659564d4644423d36414f7c5f3e352f +2d2a30302c6ca36620212b25272c2d497349468a9c962d202522201f1f20 +2425281d1616150d0e161718191818191c1d1b1a1a1c1b17181e22222324 +2525262a2e1f4d879244102c2830303126508aaa71312b364a716c514d8c +839194677892e5b751534392b38a659aa6924447435a858e687c9a804347 +43619f8558c8d6de5a382d34302b2e291f27261f222f30262431816b2f36 +364330507e942e2e2e2e2d2d2d2d2b2a2726262728262c23150a01031013 +08163c4053547dacab82628090a086677b899c93756e81909a9172768c91 +938a797b88896b5475afc1cbb7781f1a06140b0b110b3c600000800f29b8 +66120d2614151516191a19171b1b0e6aa57f4c3a788b6200000c75851a90 +adaeaec13a000e34dbafa86352474e34161420bba5003744326dd8240100 +34aba9a8c8a1a3a9390e0016889b91758b809a4a081d00384f38352e1c24 +270907040d120d10140e0811000929090c1511090001000a0e0f0f0f0f0f +101011100c0b09090a0e1011160e0e1410080d21be17180f150b10191322 +15110b003cabc1d9cdc5c5db8a000c0e11130e090c1529302121170e1918 +1c281813252432210b1e1a09141b0f321d18321d3b2e221814261b1e2618 +0f060b0a0c161e1e1d151d15160f0a0a040a080a091214090a14191c1a15 +100c0b0c379a25222225262069a59868722c101926364c468083710d020c +5dc1ab9aaac0c2b44d0000030c1219250c1101070706161816100c090705 +020a27633c1d0d0b0e0609050c5a99770f11180f0f13122a41272f6b6160 +1f201e1c1c1c1d21252a24170e0d0a040b140f101213121316191d1c1e23 +242123272f2b2929231d1e241b115078853813222a312421144467833f17 +182f4e705c2e2f76604c402345639143183a0021410e375a553512121413 +2d241a4b6e57181a1b07221d1aa0b0b429171013100e11150a13120b152d +39363234674a1d2b2f3c425a93be15151515151515151615131212131416 +221f19151511090604163c3428286eacb38e6e8c9cac92738795a89f817a +8d9ca49b7c80969b9d9483859293755e7fb6c2cbb5761c1805150c0e1612 +446c0904972940ce7820152a1615111213131210121a1c81bc92543e7e9c +811d272e8d96289fbbbdbcd14b132147eec3bb77665a6045272532ccb70c +49564783f13d1a194bc4bfc1e1babec454291831a5b8ae92a79cb6662438 +1a50634a43382228270909060d100a0b0d07030e000c301319211d140c0d +0e181d1e1d1d1d1d1d1d1e1f1f202122282d33373e37373d3931363fca1a +1e151c0f0e130b1a0f11130457cce5fff4ecefffb3273a3c4143403c3f45 +545847493d363f4042503e3b4b4c58472f423e2f3c463a5d484358435f50 +423a3c5146464a3a2f2629282a373f4140383b32332c2728222826282730 +3227273031312f2a24201f1e47a82e2a252725267fc1b07c8036161d2a3c +5654949b8d32313e8decd1bec9dddfd26d1f272d383f4451353d2d333332 +4345433d383533312a304e8a6143302e302828242977b592282b3229292d +2a42593c448076733233333535363a3e42443a2b1c150a01040f0c0f1112 +101114161a1a1c22232023272e2a292a272222281f15527783360f1a1e26 +2329245a7a95481a172c4b6f6338408a73635a406486b4683d5f23466633 +577a785a3a3a3f3e584f4373947b393e422e463c35b7c1c436231c212120 +24291e231e13192e393733396b5125333543475d8eb51111111113131313 +1514121113141516211e1a171614110f05143a383c4385c4caa686a4b4c4 +aa8b9fadc0b79992a5b4bdb49599afb4b6ad9c9eabac8e7798d0dee5cd8b +2d250d1a11131c1a4f781712a7384edb842b203522211f2021232222272c +2989c2995f498aa4841f2b3799a0289abbc0c5de5b243258fcccbf766458 +624c2f2f40decb225f6a5890f8421e205bd8d6d5f5ced1d7653a2942b5c6 +bea0b5a8c2723043255a6e544e422e3333131512191b1312150f09150513 +381c222d2d261c1b192124232020202023252626252525262a2f35384039 +3b413d353c49d8292c21261a191f18271d1d1e0e60d5f1fffffbffffc538 +4a4b4d4d474042495d62525348404a4a4d5a4945565663523b4e4a3a464f +4366514c634e6b5c4f46465a4f5056443a31343234404847463e433a3b32 +2b2a24282626273034292b333332322f2b292a2a54b53d37343633348ccc +bc878b4022283648605f9fa7983b374597fce4d6e5fbfdee863338394145 +4a54394030363635464846403b3836343239558f67463230322a2d29317f +c09b2d2c332a2a2e2c445b3f47837977363734323233363a3e41382a1d18 +12080c161315191a1b1c1f1f231f1f201f1b1b1f2a28272c2a282b332a21 +5f8590431d272c363134316588a3592d293d5c7d6d414893817169507899 +c87b5072355878456c8f8b6a464446445e55497b9f87484c533f564e46c9 +d3d44631282a2824282a1d221e151a303b39373d745b3040454b40487196 +2f2f2f2f2e2e2e2e2c2a272626282a2832281a0d03030e100c133b3a5057 +7aacac88617f8f9e896679899d95766d81909a9172768c9092896a808770 +5f74a1c5c5c19d2b132e1c0f07100600346e517d787097b13005190d1415 +151519191816102a0bb678153c432a6f9c0c12006b8c12676b6222c05e10 +1330c8453e3647486f4a182118aab356503d3d74c81b0e14081300060000 +1208121121160700000200001b08021b00070d150c00000605000501090c +07090c0515130c0c070017150d31220c0a160c0f0d0d0e0e0e0f0f0e0e0d +0c0c0c0e10121a151415140d09103b0e2d131214131509171b0c1c0c95e2 +7465a1d77d4f2f070e0d0f120e090a0f22251b251910101405201a1d2715 +314925180b120b261b19370f190c2e030818112116161a141e1f1312060e +151621231e1e180e0b0f0f0d0c09050b06081505151b1a140f0f1011375b +08181e1c1c0b46567e4c060e26241f313823495f600c0e005ac735006ea6 +88b19c170c1c2415293a261b151818191b1c1e1c1917171923141c402116 +142418181f1914384e33161a1f14161b1729291d24574330171b1a171513 +13161b1e16120f0c0a080d120f111517171717181f1c1e23242121232f2a +2929262225302f2263707b2d14172d3627251e5a6681271015304f685527 +4683673a261d4d80b64c022522161b1c3a5e56281d15282111121638555b +211215051d221d9cc1d12019141516100e111417150f1529393e39364a42 +374d5a56484779af1616161616161616171513121214161829261f1b1812 +08050a153d2f262c6caeb4946d8b9baa95728595a9a182798d9ca49b7c80 +969a9c93748a917a697eabccc6c19b29102c1b0e061109043b765b8d8f8c +b2c742132111161511111212110e062817ca8f2844473080bb333b12829c +22777a7333d170222543db59514a5b5c815b293127bbc368614f528ae034 +272d1f2a131d06112b232d2e3e36270d182322213d2a243c1d26282c1f0b +070f0c040703080a040305000e110b0f0e092222163a29161423171c1b1b +1c1b1b1c1c1d20202124282d3235403d3b3e3d36322e471133191818110f +010f150c261eb0ff9689c5fca2765530393b3f42403b3d404e504350413b +383f2d4b42484f4059714b3e313a36524748633b443756292c3e3c4e4341 +4039404034332731383947463c3b352b292d2d2b2a272329242632212a2d +2c262020211f43650e1c1d1a180f5c73965e131728261f353e305b777c31 +3d2d89f25b138cc1a3ccba3731444f4255665248424848494b4e4e4c4947 +47465041476c4a3e3c4a3b3a403831556a4e3234392e30352f414135396c +58452a3032312f303235383b2f261d160d07080d0c101416151515161d1c +1f24262323252f2a2a2d2b262c363324626e77270c0b1f2a252d30707c93 +3013122c4d685c3157977a51403a6ca3d971274a473b40415d817b4d453d +534c3d3e3f617b8145363c2f42433ab3d2de2c252122231f1d2120211a10 +1527393f3e3d534c3e525c5952527bad1212121214141414161412111315 +17192a27221e1b17120d0b123a353c4885c5cbac85a3b3c2ad8a9dadc1b9 +9a91a5b4bdb49599afb3b5ac8da3aa938297c4e6e2dbb33e213923130b15 +0e0a4581679a9d98bdd24c1c2c1c22211f20222423231e3d27d5972f4f53 +3c8ac038411c90a922767d7a3de184363b54e9625549595a8563333e3acf +dc807b676598ec3b2c342f3c282f1b253f363e3e4e45361c27322e2a4733 +2d43242b2f3226121016140d141016170f0d0d06151611141410282a2549 +39221e2b1d221e1e1f2123242424242426282b2f3437433f4042413a3838 +5522412524231c1b0e1c23183228b9ffa095d3ffb48768424a4b4d4e4942 +414557594d594b44424837544c515949637b56493c443f5b50506c444d40 +6034384945544948494149493d3a2e373e3d4a4a44413b2f2b2d2d2b2825 +2329262836242d2f302a27282b2a51711c282b27261a677ba0681c203432 +2b404a3965818739433193ff6e2ca8dfc1e9d44c435058475869554b454a +4a4b4d4f504e4b49494956474d6f4e403c4b3d3c453d395d755535353a2f +3136314343373c6f5b482e31322e2c2c2d3034372c251e17120c0e131316 +1c1e202020212824232625201e222f2c2e30312f36423f31707c85351919 +2e3832383a7b89a14126253d5b74643a5fa0885f4f4a80b6ed843a5d594d +525371958d5d5145595240414567868c53444d3f52544ac3e2ee3a312a2a +2922202120221d14172a3b4342435c564e657168514265942f2f2f2f2e2e +2e2e2c2a272627292c2b3a2d201106020b0d0f1039384e5774a3aa8b5f7e +8d9b8b6477889d95756c8090999374798f9293896a7d7b6876a5c3c4c2ab +5605132718141e1709040921162f302713140a1f28051213131316171513 +1e250f946d022d23435f740000004f95645a4b8342903704152696241e30 +464b5b320f220854808c5f485a7b4000170f0f0c08222314051d061d0e06 +1324191413000714160b051605020c1d1b0a07130b050a0d070b0f080f03 +010f0d1929141e300f09121600140d0d0b0c0c0c0c0c0e0d0c0d0d0d0f0e +1012131112151414021034210e1518101a1916060a048fd88b82bbe39681 +7f130f0a090d0c0a090e15120e1d161c0b0f1b14081c1b17242906091427 +0e1319121c1c16041f1616010317191f1c1011090d1606121e10181a1612 +080c151611050a0a0403022740080e13110d0f1517145949111c2411171b +4c39674c0d081c1a2e404a434c65661c182181e04917b5a20062d14d3429 +2d232f2f250e1c1710161616181816121214160b122013100b1216131107 +0410151107070a0107100a19191e2c766f30160616120e0907080a0d0f0e +0905080f131111151b1e1e1c1a1a1d1a1c2224201c1e2b26252725202a38 +5a39716f7a281c1d263122201d626280180f12293d4d452551735826161a +50a3d05f4387b08d4e0039695d2c1e162f2c12162439495a230b0a0e1d28 +2ca5c0a825251c1718110b10181b1b16151c28313b4851605d6174624130 +609c1616161616161616171513121315181b312d251f1b1408030f143d2d +272f68a8b5976b8a99a797708394a9a181788c9ca39a7b8096999a907184 +826f7daccacac3ab5303102415121c170a080e281d3d48432e2a1c2d320c +14130f0f0f0f0d0b14231ba88414352649709222270f66a5736a5a9452a1 +4916293bac3b33465d5f6d401d321764909c70596f90570f302825211d39 +3a2e1f38213a2d2734483a383b2a303d3f322a39241f25322c17121a0f07 +090b04050801080000101222341f263815111b21081f1818181919191a1a +1d1f1f22262b2e31363a3b39393c3b320e133a271419180d121110061416 +aaf6aba2dbffb7a4a53c3a38393d3e3c3e41443e39494148363b46403348 +46434f542c2f3a4f393f48434b4b45334b413e2c3247464a4537362c2e37 +273541363e3d3731272b343631252a2a242321465f242122201c1e23241e +614f131c210b0f1e60567d5e170f1c1a2c434e4d5e7c83414854b0ff6e37 +d0bb197bec6c585158505c5d533e4c494248484a4a4a48444444453a3f4d +3f3c353a3d373326212d302c2324271e242d24333136448e84452b1b2e2c +28262526292a2824190f0c0f0e0c0f13181b1c1a1a1a1d1d1f2528242222 +2c27262a2927303e5d3b706b741d100f1625202a317a7a9321120f253b4d +4c3062876b3d30376fc6f38468acd5b2731a5c8c8251463e5a593f424d62 +6f8047313439444c49bcd1b5312f2621231f191b201f1a14101726324051 +5e6c666674654f40679f1212121214141414161412111416191c342f2922 +1e18110c11133c333c4a80becbaf83a2b1bfaf889bacc1b99990a4b4bcb4 +959ab0b3b4aa8b9e9c8997c6e4e4e1c76e18212f1c171f190c0b14302748 +544e393526363c16201f1e1e212422222c382bb38c1e4235577a9a292f1b +76b4786a5f9c61b35f2c414eba433644575d71492a412c7baab68c7384a1 +6519352f333230494c3f3049344c3f3845584b48453136434537303d2923 +2a37331d18221b1617180f0f10090f040415162738253345231c24270f23 +1c1c1e1f21222323222123252a2d3033393c3d3b3e41423c1c2448332024 +22181f1e1e122020b3ffb6afe8ffc8b7b8504d484749474342454c474252 +4a513f444f493c514f4c585d373a45594248504a53534d3b544a4835384b +4b504b3c3c32353c2c3945373f3f3c362c2e363530222727232223486227 +25252521252c2d286e5b20282c151a27695e886821192824374c59576884 +8b474c58baff8150edda3899ff81685b5f555f5d533e4c48414747484949 +474343464b404450423d343a3c373529273339332622251c222b23323136 +448e85462c1c2e2b2724232424262421180e0f11121014181f2427252624 +2724262a2b252023302b2b3132313c4c6c4a7e7a822d1e1c23332d343a84 +86a132252236495954366a90794b3f4783d9ff977bbfe7c4852c70a09461 +5246605c424553687a8b553e4449535c59cce1c53f3b302a29221c1d2222 +1f19141b293644566678777c8e785236578c2f2e2f2e2e2e2e2e2c2a2726 +272a2e2c392d2113070208090f0f393549526e9fac8c5d7c8b998b637687 +9c94746a7e8f989374788e9090867370676f96c4cebebf960b090f12031d +0b010b1f00060a0a00060027583715130f1110111414131222101a26732f +3c3a3a311d0000030241454d46603c2e0f131a086f726a3a2e4e452b131e +1b3c2a041744567b141b1c121a1819080d1404142a181b32070e11100a16 +110b0b0b180f1c0c0d0a000006010b04060804090f0b0d0d0a130d040b1a +1d1d0b13080e03130b0b090a0a090a080b09090807080808070e0f070712 +15130b0b21260a111e181d1b161b0c093fb2aea6a7b2a9aebc1b100a0608 +0b0b0d11162226210a1e0c15160a0f2307192613191d0b0d19101d221627 +120c09040e0d151a13191c1618090c19021021131a1e110b010a0d0a1113 +0a110c070e55761f13140d090e1411090517141324161618637675301a0f +1a263234353d3c575818363a1baac7abc860044adb5537131725301c1600 +160900010d0d0d0d0802000209030300000b05040806090912150e1c1211 +12070e160e181d1f2065621624292a27222122262a2d2924140708141710 +12181f2323201e1d1c1a1c22241f1c1b261f1d1f1d1a2535562e6b6c7e22 +181917281b1918636181161412232b333723535d481f1a2761cea4298ed1 +8ba3da3a38623f1912131d0e130e25464f5721121212061229a091352221 +140e12100f191a1d1e1c130d161f254e5b715b3e4f36331d4c8a16161616 +161616161715131213161a1e37322b221c1408040f11392a262e5e9db498 +698897a5976f8293a8a080768a9ba39b7c83989a9a907d7a71769dcbd5c4 +c19609060b0c001806000b20010b11191d291e446f49231b13100e0d0d0d +0c09190d2234843c423e403e341b181b124d525b55714c3e1f2229157d80 +794c426154381f2a264736102655678e27313329312f301f272e1e2f4737 +3c562b33363735433e38373441373f2e2a2615141910150c0c0c06090e08 +0a0c0b16120c142324230f1a0f170c1c16161717171818191a1b1d202328 +2a2c2d36352d2d35382e1711272d11151e151510101a141957cecac4c4d2 +c8cfe141393534383b3d3f43454e524d364a384142363b4f3345523e4145 +3338443c4c514556413b35303939424a4044453f3f2e2f3c2735473b4044 +322c232c2f2931332a2f2a252c72933826231c181d231e130d1e18162313 +131b758e894124131a26313739474d6d733a61694ad6edcfe87e1f63f774 +583942505c48442b46392a333f3f3f3f3a3432323832322c2d37312d302e +2f2c33362f3b302d2e232a3228323537357a7529373e42413e3d3e424649 +413824110d15150e10151c20201e1c1b1c1a1f252723201f27201d22201e +2939582d696876170d0d091e1922297775911c130e1c27333c2e606e5a35 +344482f1c94fb3f6aec6fe5b5882623e3a3e4a3b403b506f757b43363c3e +2d3849baa747302e21191d1e1d231d1c1c170d09121f2953647961414d39 +45335a9512121212141414141614121112171b1e38352d252118120b1110 +39303a4878b5cbb081a0afbdaf879aabc0b8988ea2b3b9b29399b1b3b3a9 +96938a90b7e5efdedaae1f191a16051e0a000d2406111920232f264a7753 +2c261f1e1c1c1f1f1e1c2e202f3f8c454e4a4c473c232327225b585e5a78 +594d2f353c268a897e4c405f59412b38385b4c283d69799d353c3b313f3f +402f363f2f4259494d663b4346463e49433d3a38453943302e2919171d17 +211918181213160f1112101b160f192a2e2f1a24171c11211a1a1a1d1f1f +21201d1d1e222427292c2e363630303b3e37231d3337191e2820221e1e28 +212661d9d6cfd2e1dae2f4564d4643464746464a4d575b563f53414a4b3f +44583c4e5b474b4f3d414d4554594d5e49433e394242484e464a4b454636 +35422d3b4a3d43473731252e302b3032292f2c272e76973d2c28231f242a +271d1828231f2b1a1a227f98944b2d1c242e3940425057787c43676f52e3 +ffe5ff9a3c81ff8969464b565f49442b463929323e3e3e3e393331343e3a +3831303a322f302e3030383b3640322e2f242b3329333739387d792d3b41 +44423f3e3f43474a4139241311191a13151c2329292927262624262c2c26 +23222c25252929293545653b777685271b191629242b3180809e2c251f2c +353d423268786642435495ffdc64c6ffc1d9ff6e6d97754e46454f3e433e +56757e874f444a4b3c4558c9b4533b37291f21211e252221211b110a1321 +2c576b847154654a45274b84302e2f2c2c2d2d2e2c2c2d272f2c25404827 +1818110d0f0b0d1d373a435472a4a5915c7a8e9b906a70889397806a7e8e +8f9b6a6f8988917966656a9bc4c2c0b9b23b071104061a0e0f0c0c0a040e +170b02000129324a0c0c090d1112131314151e191f2022153738381e170d +0915131319405f681e0e18141b2a1112071a5a4f5e1015131d1613211b61 +666518202e131318180388770a3fa4d2cebb260a1b0b0a0a150a09120d14 +0c0d0d0c090805050501040703070d090403080c0c0c131b241a130f0e08 +05060808070708060706100004081704070305070004090d121103133231 +251b101a211a25160f090746618bbbbcc9d7a82d1d140c08080a1118151a +202117121c2c111113181d1c18130f100e0d152328261e19130f0e0e0d0c +16181c201e19100b0f131515181c1d1a0d0b0705070b0f100a180e13151c +30170d021505090f1a0b0f110d121e1d181a626b86270f0d26262644253b +5672414127040000263a575891bac7730c191a1f212107050b070b09050a +0e0f0b060405090805070e140f05010d0b020d262a1a1819151211111414 +22194d242b140d1a0e1509070b10190b10140701110a071816191a1b1b18 +18191b1c1e212221201d1a1f23211e202427244179696b241b16191c1a1a +396d74512d211f21222c2f25615d4e26243862c07138c1ad001cde632e6b +2e0d14190a150f091e40651d1d110e11141b637c5b1b201f1a1612111114 +27251e120d0f1a241f1c3b504c433c3b2a243b6418191717171818191717 +18121c1811364e372a2a221c160e0e1b312b28365895a99d68869aa79c76 +7c949fa38c768a9a9aa6757c9897a087747376a5cbc9c6beb53d060f0000 +100409060a0907131e1e292d2d515365201a1010100e0d0b0c0d16161f23 +271a3a3b3c222016121b15151e4a6a762b1b221b1d2a11120c24685d6919 +1c1a241d1927236b7273293240292f363620a492255bc0f1efde4b314535 +35354035323b363b3333302e2b2724211c141718121418120b0a0d111111 +1820291f161413100f10131315161718191a22131d2235272b2c2e2f2427 +282a2d250d1a393b2d200f14160f1d1415161d607ba7d7d9e8f8cb52433d +3736383c434841444a4b413c46563b3b3d424746423d3a3b3938404e5452 +4a453f3b39393837414347484641383135393b3b3e444341322e2a282a2d +2e2f27342a2f2e35472e211628181a20291a1c1c161926221d23727e9635 +1811292927492c486786585f4d2f2b2f5468807eb1d8e38f2b3d42474a4a +302e3733373532373e3f3b36343234322f32393f3a302d39372b364f5342 +3a3733302d2d2d2d3a2e60373c251e2d262e22202429322224251409150d +0717131314151515151618191b1e1f1e1d1c171e22201d1e2225223f7565 +651e150e0f15191f42777e572c1d17191f2d342d68665b383b5583e49a61 +e7d21a3bfb7e48874d313a4437453f364a678a3d3b3134393c41859a7633 +37332b25211f1f1e2823190d0709141e1b1a3a514c433b423f3f527a1414 +1312121313141414150f181710344c362a2c29211e13101c3332394e75b2 +c2b5809eb2bfb48e94acb7bba48ea2b0aeb8898fadaeb7a18e8d90c0e5e3 +ded4c84c141c0a07180c0d0a0f0e0c192422282a2c53586e2b272021201d +1b1a191a211f272a2d204142452b271f1b272221244c6e7931212b252936 +1b1a1226695e6f2226242e2725332e757e7e333c4c343a41412eb2a33870 +d5fffff15b4053413e3c463b383f3a40383634302d2a2725221b1e20191a +1e171110131717171e262f251d1a19131112151516191a1a1b1b22121a21 +332327282a2e23292b30342c16203f3d3024151e241d2c2225262b6d88b3 +e5e9faffde65564f474544454c524c5056574d4852624747494e53524e49 +4344424149575d5b534e4844424241404a4a50504e49403a3e424444474c +4c4838322e2c2c2f31322b382e33333c4f36281d2f1f2228302124221b1f +292621287f8da340211a2e2e2c4d34507191666a5636343963789493caf0 +fba53f4d4e51504e34323a363a38353a40413d3836373d3e3b3b40464036 +303c3a2d385155443c393532303031313e33663d432c25332a3226252930 +392a2d2f1d142016111f1c1d1e1f1f1e1e1f21222427282524221e242828 +25292d302f4c8373732c231b181d1f25498088633a2c2626283238306e6f +6444496596fab077fce52d4dff915f9d6141474d3d4941394d6e9248463e +3f43464a8fa4813d3f3a322a242222202d281f110909141e1c1d3f56564f +4b4a362c3e652f2e2e2d2d2d2d2d2e2e2f272c29254246241716110d0d09 +0c1a3739405274a8a38e5a778b998d677289939780697d8e949c70738685 +8e715d6184bbc4babfab64170014100f1a120e0a100f06080e020019291a +2d5017000a0e141616171a191723291816163f3c4419100f141b1a1f1c53 +707726061b26233022232237696a4d192a1b1c1a16193a8f9577192c4726 +00070631e96a007ee61d32e46a08000b110d140a0a12090c0d0d0d0c0a07 +05060b06080d090b09000506090d0d0f172122180f0e0d0b090a09080706 +0708070702042135482208000001000205090d0c080d303f331d122a2108 +0e0c131e45aeebded6e4dba85e080e0d0f0c0c0d0d0f1c1f2220150d121d +111112171b1b171311110f0e141e23201c18120f0e0e0e0e1a1c1d1e1d19 +130f0e111212151b1d1a0d0a060306080b0d0e130c1812091a140f0c0c15 +1508000f11110d132325232a7c7e680a100a1c262c36287a927f282b1c08 +1250aebac5cbc6cd682a071a232f3633140c0e070b09050a100f0b070405 +060c0a0505090d0d0e0000152d260f040a0c09070505050707408f45230d +0d090700204a271e000b2338000412071a1e22201d191616181a1e1e2022 +22211d1b2122232323242626193c6b574b25241510121417346264423329 +1b181b20252c625738142e545774abc2bd6e2e4baf6448682a151610170d +11142d4a6d29251713243c497e7d52151c1c1c19161312131d191412171a +19173235474d4643413c382d364f1a1a19181818181819191a1219161138 +523a2b2a201a18110d182c2a29365593a39a668397a599737e959fa38c75 +899a9fa87d8095959e816d6f90c5cbc0c5b06617001109050f0705040b0e +090f17171e4e5a46526e2d0313141312100f1012101e27171517423f471c +100f1118141c1f5b7a8234112329202b1b1e213a737556202e1f1f1d191c +3f969e84253d573c1c292651ff87069aff3c53ff8f2f24373c383f35333b +323534343332302d2b29281f212421201c111211121414141c24251b1211 +12101114131315161718191915183a5267452f1f262a24242222241f1315 +38473b22112516000509192b5ac8fffaf2fffac97f2d3336393a3a3d3f3f +48494c4a3f373c473b3b3c414545413d3c3c3a393f494e4b47433d3a3939 +39394244454645413b3736393a3a3d43454234302c29292b2c2c2b2e2731 +2b20312b26232029281b0d20201e181e2d2f2d358a8e7516190f1f2a303b +3187a3923e473e303e80e0ebf3f4e9eb8446233b48575d5a3b3337303432 +31363c3c3834313031343430303438383b2726425a543f302d2b28242221 +21201e54a256341e1b1c1f1539634036081e3548090c16091a1c1f1d1a16 +131315171b1b1d1f1f1e1a181e21222222232525173a6955492322120a0f +131a3b696b443123131018212a34655c4122446f779ad4ebe3924f68ca7d +608046363c3b443d414159718f4a4135374c626fa39f70323735312c2825 +211e20181210131613112c2f424b454341454f4a516a1513141313131313 +1616170f151210364e372a2b27201e140f193031394c74b2bdb27e9bafbd +b18b96adb7bba48da1b0b1b88e93aaacb79a8689aadee5d8ddc47523091a +110d170f0a0811130e151c1a1c48574558763a12242423211e1a1b1a1724 +2c1c1a1b47444e2318171c232025265e7c843513262e27322325273f7579 +5d2a372826241e21459ca78c314764472632315cff971bafff5166ff9f3e +3040453f453b394136393939363533302c2b2c24262a252520151817171a +1a1a222b2a2017161614141615151616171819191316374e623f2a192226 +242526272c2617183a493d25172c240b161a293b6bd7ffffffffffda923f +4648494947474849535558564b4348534747484d51514d49454543424852 +5754504c4643424242424c4e4f504f4b454140434444474d4f4a39332f2c +2d2f313131352e38322839332e2b29322f22142725241c202f312e39979e +85222215242d333f368fada04c554838478aebf9ffffffff9a5c384e5863 +645f40383b34383634393f3f3b3734363a404039393d3f3f402c29455d54 +3f312f2e2b2826252525245ba95e3c26242323193e684740152c43551719 +221626272826231f1c1c1e202424262828272321252728282a2b2d2d2245 +746056302f1d14161b21437175513f31201d21262e376a624a2d52808caf +eafffaa8627adb9178985c4749444a4143445c7698534d4043566b78aba8 +78383e3a36302c272422271e1713141713112e3146504d4d4d4a45384057 +313130302f2f2c2c2b2c2f272a27284c48261714100c0d0a0f1a35393f4f +6fa4a08d5b778a988d657389929780677b8d9699757682868a665f7bafd1 +bebec38b22050316150e0f0e11090c0e0507100b112322000b0f0210070d +1214151619191b242b1e1a194b575c210f111616121b183d39523312190e +171e1b16182c47553a213e21181b17112558514e143546141b100c19d0a1 +85d4aa0046e357141716150e130a0f190c0b0f0f100f0e0d0b0c130b0a0f +0c0e0d0204040508090b131f22170c0a0a0a090a080808090a0809090b02 +0b11280f030000060e07060406080c102c3c3b2e1a232c272b161615052c +2f5d87a0b8c9be70070e130c0a0d0d0a1e20211e140b0b1011101114191a +16121112100e11171a181a16110e0e0f0f0f18191a1a191614120e10100f +141c1e1b0e0b070405080708070c0814140d151206200b0603110c230c0d +0a1020252a36bab0620c240e1523302f2aa1b59126282111002a93a1b2b5 +cae79f661b212322413e1b1010070a0806090e0f0b060404040808050408 +0b0a0501122d2a0c00090808070705040405053e7c2d111113050020986a +6f905d1e5579030a0e04272124201a130f10161b1c1d1e2122211d182120 +2123252525251c40614c2c2f38211f21272d42635c383335251b2324283e +605a3e20354d444ebf8ba3c5b2b2cbb659461e1919112d120c152c3a5422 +20130816292a4b41290b191b1d1d1b1712121f201c1411141c232137494c +494a46372c242d3d1a1a19191818181816171a1217141442553d2b281f19 +181210182b2a2833508fa099678396a499717f959ea38c738799a1a48283 +919598746d87b9d9c4c3c58c210300100e04040308040a0f0a0e1b203b56 +50282e2c1820101011100f0e0f12141f291d191a4e5a5f240f1113130c18 +1842415d411d211114191411172f5160432842251b1e1a142a5f5a5b2046 +562a37312a37ebbca0f0c61867ff7c3b414140393e353842353436363635 +3433312f32272628252622151613121312121a24251a110f0f0f11141212 +1314151617171b15212b452f2726262d3226221d1d19151531414032191e +241c24151d251c484b79a3bdd7eadf952c373d3a383d3d394a4a4b483e35 +353a3b3a3b3e4344403c3c3d3b393c42454345413c39393a3a3a40414242 +413e3c3a363838373c44464437332f2c2b2b2a292629252f2f262e291c34 +1f1a16241d32191a1519282d323fc6bd6e162b131824313231abc3a33942 +4339245ac5d2e0deedffbb823742484a68634237372e33312f353a3b3732 +302f2f3333302f333635322e3f5a57392c352b2a29262421201e1e559040 +242424181838af8186a7713265870c101003251f231f19120e0f151a1b1c +1d2021201c1822212224262626261c40614c2c2f38211c2027314a6b643b +32311e1421272f45635d452d48676572e5b4c9e9d2cee6cf715e38383d39 +583f3c42586379443e332e3e4f5070634a2a36373635302a262126231c15 +10121a211f35484c4b4e49414542485814121313121211111112170f1310 +13404e372a29261f1e1512192c3138496faebab17f9baebcb18997adb6bb +a48b9fafb5b69596a6acb28e87a1d2f0dcd9da9e2f0e0b1a160c0c090d08 +0f141014212539514e273434252f1f21211f1d191a1a1b252e221e1e535f +662b17191e1e18212046445f421f24161b201c181d3453644a324b2e2225 +1f19306563632c506335423a3542fccdb5ffdc2d7aff8c4a4d4a4940443b +3e4839383b3b393837363231352b2a2d292a271b1a1818191718202a2a1f +15131313141614141516171718181a131f28412a2321232a322826222320 +1a19344443351f25312a34252d342c565785b1cbe9fbf2a73f494d494547 +4741555657544a4141464746474a4f504c484544424043494c4a4c484340 +4041414148494a4a494644423e40403f444c4e4a3b35312e2e2f2e2e2b2f +2b36362d3531273f28231d2b24391f20191e2b303444d4ce7e2235191d28 +353737b4ceb1484f4d412d64d0e0f0f0ffffd1984c5558566f69473c3c33 +373533383d3e3a353335383c3c37363a3d3c3733445d5a3c2f362d2c2b29 +27252423235b97472b2b2c1f1c3cb5878eaf7c3d72941b1e1d11322a2b27 +211a16171d222324252829282420272526282b2b2b2b24486b563639422b +2728313c5576714a42422e242e30374b68624d3656767888fccae0ffe7e3 +f9e389764f4a4b435f443e455b67814d483e39485859786c512f3c3b3a37 +332e27242c2a241a15171d24223a4e54575a584a42383f4f32323131302f +2b2b26282c272a282f594a2717130f0c0f0c141d343b414c6da49f8f5e79 +8b9a8f67748892998166798c9792747581837f5b6fabcbc2b6c6ad4f0b0b +0c10130c0a11150a0808030d1f203012001b52420b08080d121416171b1b +21161f2929164a6a602c1b1716150f140335344f3b0d1e1e191a1e141627 +324736214121151919151c444b69252032290e06130080677a693901468a +32001604130b100b1521151212121212100f0d0e130b0b0b060c110d0605 +05070809121d25190d09070605070809090a0a0b0b0b0702080d280d0000 +0a1225120c06070a031128324c644f3b312622080f1d153db1bad8a34d00 +2a110d15160b050b0e0c181b1c1b16100e0f100f0f1317181512100f0e0e +0f1214141a16110d0d0e0e0d111417181613100f11110f0f151d201d110e +0a08070806060108060913151411150400101a101009060d0c0e161b2638 +b9a6561d31121d1d292f1f7b817a2527152b110004012f34304a7a9c2610 +13193736190f10070b08070b100e0a060505040302040c110b01031e3023 +060002130c0e0e0d0b0b0a0a0f1c35080a0e1008091180340e2658797190 +0804010621211c1a16110e1219201a191b1e22221e1818191d20201f242a +3149584a1b34412f2429323c4b5a4b262740321f2f37364a574b35262622 +2035d45a231a12234bdc691d1b1c17162e14080f1c1629101311100f1104 +1a111717181a1c1b1b1713131617100b090e18211e3f46413e3b351e1e1d +26331c1c1b1a191817171113171217151b4f573e2b271e191a1415192a2c +2b304c8d9f9b6a8597a69b7380949ea58d728598a29d81818d928d677bb5 +d3c8bbc8ab4e09080609090200080f05070b0a182c3858402443735d1f16 +0f101110100f11141c111d2828174d6d632f1b1713120911033a3c594618 +26211615170f152a3c503d284525181c1c18214b5473312e423f2a273116 +9b829584531d65ab56213e2f3e363b363e4a3e3b3939383836353331352a +2828222529221917141413141b242a1e120e0c0b0d0f1011111214151515 +15121a23422c20212e364730281d1b1908122c3650684e36291e1e0a1b30 +315dcfd8f5c36c1f4d36333f4037343b3f3b44454645403a38393a39393d +41423f3d3b3a39393a3d3f3f45413c3838393938393c3f403e3b38373939 +37373d4548463a3733302f2e2c292229252830322f2a2b180d242c211f16 +131815151e202b3fc2b25f2535151e1e2a3226848d8a373e37533d273431 +5d5d506694b64231383f5c5b3e36372e32313034393a363231302f2e2d2f +373c362c304b5d5033262f3c3231302f2d2a27262b354c1f1e22241d1e29 +984b253a6c8b7f9c100a03041e1e1c1a16110e1219201a191b1e22221e1b +1c1d21242322272d344c5b4d1e37442f222734425363522c253d2d1b2d39 +3f51584c393038393f58fa83493e324267f77f333439383c5941383f4942 +503535333637372a3f363a3837373837352f2b26231e170f0c111b241f42 +494544433c2c373b425011111012111210100c0e140f13111a4d50382a28 +231f1e17171a2b31384669aab9b3829dafbeb38b98acb6bda58a9daeb6b1 +9497a5a9a78195ceeaded1ddc05e16111011110a050d130b0d12101e343c +573d234378662a231f1f1f1e1c1a1a1c2217222d2d1b52726a36231f1e1d +151a0b3e3f5b481a29261d1c1f161b2f3e5545324e2e1f23211d27515d7c +3d394f4a35303c21ac93aa996a3379be66314a38473d413c4450423f3e3e +3b3b39383433372d2c2c25292d271d1b191a1718202a2e221612100f1012 +131414151617171716111a213f271d1d2c3448322c2322200e172f39536b +543d362b2d19293e3f6adae3ffd27e306048464f50443e4546434f515251 +4c464445464545494d4e4b4642414040414446464c48433f3f40403f4144 +47484643403f41413f3f454d504c3e39353231312f2d272e2a2d36383631 +3623162d3629261e191e1a1b21242e45d1c26e32401c23222e372c8d9997 +454c415b4631403f6d6f677eabcd5744484c6461443b3c33373534383d3d +39353436363534353e433d333550625538293440353332312f2d2b2a2f3a +522525292b22212b9c512b4377978ca81d161011292724221e19161a2128 +222123262a2a26201f20242728272c323b53645627404d392d34404e6072 +623c3a50412c3b4548595d51423a4449516cff99605649577cff974b4a4b +474560463a414c45573d3e3c3f3f4033473e403d3a3b3b3a36312b2a2b28 +1f18131822292449525050504c393c3b434e3535353432302e2d26272c27 +2a27305f4b2716130f0d11111418303c444d6da89d8f5f77899a91687386 +919b8365778a998f73707e7d6f588dcac6b4c0b46f1607110d0a13131019 +1409080706152825000c001c32441d1c0e1318191a1c1e201b0c1320230e +395149292318141a15140c373e4f42161f1a19182219182e3a483e1d361d +13151a22224d507233212b3610191e29c32103578f000491a909191e0f08 +0f0b1421151314131412100e0c0b0f0f18170b0a11120c0b0a0b0b0b1420 +22160b06070506090a0a0a0b0c0d0e0e05080f16381700000d1434141207 +070d06152a2c3f58483b52271d130a022497d34d73c1c32337150d12130b +060c0e0d14181a19171513110f0e0f13181815110d0c0c0d0e0f12151b17 +110d0c0b0b0a090f151815100c0a11100e0d141d1e1a110f0c0c0b0a0806 +070706070c030a2c8a80752200196a2f0611131113131e3560522f222812 +261b252f16453943121c34261107222b2f00070014b26c050f2a252b1510 +13090b08090d11100c09080703030302070e100d202b230800060c080c0c +0e0d0c0c0a0b090f22110e04020300053e6e0d00023b798925130511090f +1516171513141b201a18181b1f201c1812161e201a182433464c4d4b1930 +3930202737464f5342231d453714253c3e46584528242a241a15bebc8e9d +bac9b4e8820b221e0f18190d0b111807110c0f141412150c1e1013181617 +18171514131515110b0d141b1d1c2d4f453d3f383b2b1d1a1d1d1d1d1d1c +1c1917161213171217141c55563c2a271e1a1a161414262b2c314c919d9b +6b8395a69d747f929da78f718396a49a7e7c8a897b6297d2cbb6c1b36b12 +040c0803090805100d07090c0f22363c23361f3f4f5b2e26141516151414 +17191607111f220f3c544c2c231811170f110c3c46594d20271d16111812 +173144514521392016181d252754597c3f2f3b4a2c3a3c47de3c1c72a91c +20b0ca2d3f463a333a363d4a3e3c3b3a3a38363432313231373628272d2b +24201d1d1a1a222b291d120d0c0a0b0e0f0f0f10111211130f131d284e31 +1c1d2d3452302b1f1c1a0912292d405947364a211b16181a46bbf36a90e1 +e2445a3a343c3d37353b3f3c4043454442403e3c3a393a3e4343403c3837 +3738393a3d4046423c3837363635343a4043403b37353c3b39383f484945 +3d3b38353432302c2d2a27282b222747a09487340e2a793c111a1c181816 +2139685b36282a12251a24301b4c43512232544e3c36525b5d1a27062ecc +882633504a4e3835382e302f30363a39353231332e30302f343b3d3a4b56 +4e3327313731323231302f2e2c2a262b3e2a251b191b101a53832112144c +87932b17050f060c15191a1816171e231d1b1b1e22231f1b161c23251f1d +29384b5152501e353d331e253b4e585c49281e4232112440464d59442b2d +3b3a3736e2e2b4c1dde8d3ff981f3b392f3d413a3b4146333d3536393a38 +3b334335383b393937363532312e281f18171e24262534574d474844463c +393a3b3a1111111211110f0e0b0c120d13101b535037282823201f191413 +27313a4769aeb7b18199abbcb38a95a8b3bda58799acbab09492a2a1937b +b0e9e1cbd5c57c210f130f0a110e0b15140c0e12182b3f4222341f415563 +383222242423201f1f211c0d16242713415953332b201c221b1a1440495b +4f222a221d19211a1d3646564d2c42291d1f222a2d5a62854b3a48553743 +4752ef4d3287c03235c4db3d4c50433a403c43504240403f3d3b39373332 +34333a392c2b302f282521211f1f252f2f23181312101114151515161718 +181711151e284c2e1a1b2c3352312f23212010192e31445d4d3d572d2925 +252652c7ff78a0f0f4556d4c454c4d443f454642494c4e4d4b4947454342 +43474c4c49453f3e3e3f404144474d49433f3e3d3d3c3b41474a47423e3c +4342403f464f504b403c39373634322f302e2c2d30272d4eab9f933e1832 +80441721211e1c1b2642756c4634361a2b202a3521564d5e313f5f564540 +5e696d2c3e1e45e39d39435d52543e3b3e343634353a3e3d393635363435 +35323940423f515c553a2e373e373533333231302e2d2a2f422f2b211f1f +131d568828191e56929f3923111a11151d1e1f1d1b1c2328222020232728 +2420191c262822202d3c4f555856243b463c2b33475b676d5b3b33574824 +344c51555e49323645484749f8f7cbd9f3fde8ffb038514c3e46493f3d41 +463440393d414341443a4b3d3e3f3b3b3938343231322f2a2121282d2f2e +3e6258535754584c454545423c3a3a393734312f2f2a2d292b252d5c4926 +1614100f13120f0f293b464f70ad9b8f5f74859891696f83919e87667589 +9a91736b7a6f626eb4cdbabec9822c040c13111016140e100d0b0d080b1d +2313000c003c485821000f13161719191b1c1617170e121034313d282818 +0e1513121730484c4425201018161d190f2a4a4245172a1611131c2a276d +5551262c28220f140623ea5833b0db4440c3c2001c0e0f0a130c0f170c0d +14131412100d0b0a0c152425150f110f0e0b0d0d0b0a121d1c1208070708 +090c0a0a0b0d0e0f100e0e0a0403290f0009040a360c0e06050d1214282c +2723243f2f1015191b101e7eda96b4c9e181b06c09090b0e0d0d0a0a141a +1c191514120f0e0e10151919140f0c0a0b0d0e0e13191c17110c0b0a0908 +0a11191b17110d0b12100d0e151d1c17110f0e0d0d0d0a090e02060f0b00 +065bb3435474672b7d67020f131516121c2e2e282b31291a241d2a2d1f3e +2d2e1729150c19152f3b4432384c33c8a800071e1b231313150a0b070a0e +12100c09080800080a0200071926291d0d0505070605090a0a0a0c0b0b0d +0a161d0e0a0a08000f0b00280a110d00050f000000190d18101318181412 +15191f1a17181d1f1c18171b2222171222384e4b444724302f2b151d3447 +4a483f2e2b46310913343e3c464b352b303429015fa737506a303a5aa01b +211d0c1a0e100c101a0a10130c130f10150e21100d0a1514141211111316 +1b201c0f020513232e4d3937381e1e1611162025222323221f1e1b181816 +181418121952543b2a261f1c1c170f0b1d2a2e324f969b9b6b8091a49d75 +7b8f9daa93728195a59c7e76847b6c75bcd3bcbfc67e2500070e0a070b09 +030706080d0f152b352c1d33215b616c2f0412121414111114151112150d +11113734402b28180b120d0f173550564f2f2811130f13120e2d524b4c1b +2d1914161f2d2a725c5b323a38362b352441ff734cc9f55e5bdfe11e4034 +37353e37384035363b3a3a383633313032384748372e2f2b272422221e1d +242c271b110e0e0d0e110d0d0e0d0e0f101113140f113b25172320265026 +261b1818110f262b2622213a290a14212d2c44a6fcb6d4eaffa5d5913033 +373a3c3c3b3940454744403f3d3a39393b4044443f3a3735363839393e44 +47423c3736353433353c4446423c38363d3b3839404847423d3b3a393936 +333136282c322e16277ac9576686783c8a710b161a1a19151d31342f3135 +2919211a292e22423538253c353444445f6b6f5858684de2c41a2b443d46 +36363a2f302c31353939353231342e36382f2a344653544838303032312e +313030302f2e2e2f29353a2b26262419241f143d1d241e05111900000017 +071511161b1b1715181c221d1a1b20221f1c1b2127271c17273d5350494c +2935332e131b364d5351463129432c0412384443474a38343e4a452284cd +5d748d505a76b62f37382c3f373c3a4048383d3f353c35363c3546353330 +3b3a38363535353533332e1f1213212f3a5b4647472f2f2b2e373f451313 +151413131010100f130f140e18504e3628282422211a0f0a1f303c466cb3 +b3b18196a7bab38b91a5b3c0a98897abbbb2948c9d93858fd3e9d1d3d98f +350a0e14110c110f090c0d0f15171f363f331f32235e68753a112120211f +1c1c1c1d17181a1216153c3947323020161d19181f39535851312b161a17 +1c1a14325550542636221b1d2432317866643e454541363e2f4cff8462df +ff7570f4f32f4e3f413c443d3e46393a403f3d3b39363231333a494a3931 +312e2b2825252221262f2b20161414131417141415151617181817161112 +3b23172221275127281e1e1e19162b302b2728413516222e39374fb0ffc3 +e3f9ffb5e7a3414344474644403f494e504d49484643424244494d4d4843 +3e3c3d3f4040454b4e49433e3d3c3b3a3c434b4d49433f3d44423f40474f +4e48403c3b3a3a383533382b2f36321a2c7fd46272928246937a141e2220 +201a223a423f3f4135212a212f332b4d4044324a403c4d4e6b79806b6f80 +64f9d92d3b51464c3c3c40353632363a3e3d393635372e3638322d374b58 +5a4e3f373739383433313131313030312c383e2f2a2a281d27201740232b +280f1d250c0b0922111e161b20201c1a1d2127221f202527241f1e212a2a +1f1a2b4157544f522f3b3c372029435b626258443f5842182244504b4b4f +3d3b4957533397e2748ca3676f8cce474e4939483d3f3a40483840423b42 +3e3f433c4e3b36333c3b3836353334373d413a2c1f202c3b486856575a41 +433e404a5154434242423f3a3734322d2c2a2e262b594624161512131514 +0e0b2438454b6bab9c9160738399936c6c8090a18a677488929475647666 +639bc7c2b7c8a941080f1111141515110c070c0f0e04092223060b06032e +11020d1a0c0f111214131416191d1a0a1018433e452624180d0f111a1443 +91703716232d20202329183b7454421729110f151f2939bca2641c1e202a +1a17191ce1c7b3c5d3b5c9da7f00230610101c100b10070d12121312100f +0d0c0d111e20130d100e0b090c0c0a080d18181108080808070b09090c0e +0f0f100f080c0a0e38190006040638070c0300080c0b1d2522243663482b +20111c1d0934b9c2a593d3b7c065160a070e0f0a060a151d1f181110100e +0d0e12181c1b140e0e0b0b0d0d0d131d19150f0c0a0b0a0a0c13191a150f +0d0d100f0c0d141b18110d0c0c0d0e0e0b0a0c070b0a10020349910f002d +727bb876000a10192424252f363c413b382f1f2e3636343e3b3831332726 +322f91c9becbcce9caddab191212141e1012170c0b090a0d100f0b080707 +030406030613222a140c080b0700030b090808080a0b0d1110160d060810 +1003100202010f001e15181415160b110b0912181e1e1916181b1e181417 +1e24241f25242421140c1a303d403a382d322721060d2435312e2f2d393c +270b0e293630253a312a2220220068c50001a64c0021c94d151d11181514 +0b0c15090d1705111214170b1d1213111312111110111216171b19120807 +0f182d401b2024000b16080d15172828282825231f1e1b1617151b131951 +51392927211e1e190e0718272d2e4a949c9d6c7f8fa59f78788c9cad9673 +80949d9c7c6e80706aa2cdc7b8c7a53b00070a0b0b0c0a060100050c110d +1633371e2a28204725131a200e0f0f0f0c0b0c0f141818090f1946414829 +24180a0c0b171346967a4220282e1b191922153e7c5d491b2c140f15202c +3cc1a96e282c303e3638373afce2ccdeebcfe4f69e19442a383b473b3439 +30363939393836353332333744463630322d292725252220252b271c1311 +110f0e100c0c0c0d0e0e0f0f0b141419482b131b1c1e4d1c201512110901 +18232123335e4228221b303e345fdde2c4b4f4dae58a3d34333a3e393739 +41484a433c3b3b3938393d4347463f393936363838383e4844403a373536 +3535373e4445403a38383b3a37383f46433c3a3a3a3b3c3a3733352f3330 +3628296aa922043f838cc5800911141c2724242f3a3f433a382e1c2b3335 +344241403b45454c5d5ec1f9e9f1ecffe4f7c7383638364133353a2f302e +2f343736322f30333135343134414f573f373336322b2b33313030303031 +333433382c25252d2d1f2516171622092f26241e1b180b0f050611191f1f +1a17191c1f1915181f2525232928282518101d3340433d3b30352a210309 +24393935352e36341e040c2b3a352439343330363e1d8bea1c27ca6f123d +df612b38313d3c40393c45393d44323d3b3b3e3244393b393b3a39393839 +3a39353533291e1a22293e512c323614202f273035371717171716151313 +13101210170f174e493227292624231c0e06182d3b4267b1b4b38295a5bb +b58e8ea2b2c3ac8996aab3b39687998984bce5ddccd9b4490d12110f100f +0e0a07030c1318141f3d42282d2a244c2c1b232c1b1b1c1a171617171a1e +1d0e141d4b464f302c20151717201b4b9a7c44222c332221222a1c437f62 +5126351d171d253143c7b37734373d4941414245fff3e2f4ffe6f9ffb02a +533642424d413a3f343a3e3e3c3b39383433363a4749383234302b292929 +2422272f2a2017161615141613131415161617171017161b482b141c1c1e +4e1d21171616100a1e2826283a654e332f273b473d68ebf1d6c5ffedf89d +4e44404748413c3f4a51534c454444424142464c504f4842403c3c3e3e3e +444e4a46403d3b3c3b3b3d444a4b46403e3e41403d3e454c49423d3a3a3b +3c3b383537313533392b2c6fb330104b8d96ce8912191d232e2c2a37464e +5248443625323a3b3e4d4d4d47514f556668cdfffafffffffbffdc4c4645 +3f47393b4035363435393c3b373434342f3232313441525a453d3a3d3b34 +353b3330303031323436353a2f282931312228171a1928103930302a2724 +151a0f0f171e24241f1c1e21241e1a1d242a2a262c292b281b1322384548 +4442373c332b0e173045464545404b4933161a37453b293e393a39414a2c +9efd313ce0852955f77942493e464343393c45393f47354041424539493e +3d3b3b3a39383738393b3f4240372c293139506340464c2935453c464a4c +4748484644403b38312a2a2a30292d5b4423161814141715110c23374245 +65a3a0956374849b9770697e90a38c6774888a92746275636ac4c3b7b7bf +740d061b0e0810151212151010130d0004252a080c000f35260d20100f12 +1415131314151c13110f191c5161491e191813121a302c4da77633171717 +171b1f2f1e4e9c6e3e192d100c17202631bb9657252a1e211d0d130bbcd0 +cac5cdc4c5c97004081a101423160d0f0912101012121211100f0d090e0e +050711110d0e0f0f0d0a0e1919110a070805030508090c0d0e1011100b0c +03023015000b0d0c3f080e030003110d120a0c1f2b44451f191922150137 +ce7b1267d8929cd82a14060b0c05040e131d1f160f0e0f0e0c0e13191e1c +140d110c0c0e0d0c131e17130e0b0b0b0c0c0d121715100b0b0d0f0d0b0c +1319150b08080b0d0e0e0c09081310000e1500024c320c0001276d32040a +1121383a343831413f2b41411f483e413e2d3339382126463f0158721d1d +5619240f11050b1c0d180b0e140b0d0b090c0f0e0a070606070000051a2a +271a040302030608080507060505070a0e100d120f180e02020803141009 +0a1417050a010911060316111a2128292421242818120f14202a2d2b312a +241e1108122525322d252c302012111629362d29333938291b100f202922 +2d2e212f281b220a2ad6a064c8c37989ed830e21150d160b0f0a10060915 +0214070f15081b121410111112101311101220141734585b370e2a2e0011 +322e689a9b8660372c2d2d2d2a2624201b1316151d161b534f382928221f +1f1a110617272a28438ca0a16f8090a7a37c758a9caf98738093929a7b69 +7c6a71cac8b9b8bc700700110702070c07070a070912120612373d20271c +2649371a28140f10110f0d0b0c0e170e0f0e181d54644c211918100f142d +2b50ac7e3d211c18121415281b4fa475421d30130c17212734c09d602f36 +2c35392e3329d9ebe3dee5dce0e58d23293e383f4e413638323b37373838 +38373635353136362b2d34332f2d2d2d29262a312b201815130e0c0c0d0c +0c0c0d0d0e0f0e140d0d3e25101f2120511a1d120c0a0c030b050a1d283f +3f1d1d253a372d66f49c338bfbb7c1fe543e32373b34353e40484a413a39 +3a3937393e4449473f383c37373938373e49423e393636363737383d4240 +3b3636383a3836373e4440383838393b3c3c3835343c3922363e1c256745 +200c13387b3f0d111524383a333733433e2b3f3f1c453b403e30373f4031 +426c6a2d86a0484374333c272c242f402f3b2e31372e32302e333635312e +2f32352f2a33485854472f2e2d2e3133302d2f2e2d2d2d3034363035323a +302424261b29251e1f282916180d11150601130e19202728232023271711 +0e131f292c2c322b251f1209132626322d252c3020100b102739332f3638 +342010080b202c272e2f263839313e2a4dfbc68aece79ca7ff97273c3532 +3d373d3a40363945324130363c2f42393c393b3b3c3c3d3e3d3b42343451 +74754e253f431327484781b6bba9835a1718181919171614100b0f101912 +1950473127282523221d1106172a373c5ea8b8b78596a6bdb9928ba0b2c5 +ae8996a9a9b1958396848be2dececccd7f13071a0e060a0f0b0b100c1018 +180f1b414b2a2e202c503f23331f1b1b1c1b171617161e1414131d215969 +532821201b1a20363355b0813f23201d191c1e302254a77b4b28391c141f +262c3bc6a7693b42394044373e34e9fcf9f4fdf4f5fa9f35384a42465447 +3c3e363f3c3c3b3b3b3a3736373338382c2e3635302f2f2f2a272b332f23 +1b1817131112131314141516171715170f0f3f2512202221531c20150f10 +130c120b0f222f464b2829314440366effab449bffc9d4ff644e3f42433a +39424651534a434243424042474d5250483f423d3d3f3e3d444f48443f3c +3c3c3d3d3e434846413c3c3e403e3c3d444a463b3a38393b3c3c3936353e +3b2438401e2972532b181f428648161b1e2d4042393f40504c374a4a254c +42484839424b4d3e4d75733893af59568c4c543f41383f4e384134373d34 +383634383b3a36333333332b28314858574a353434353a3c3a35312e2d2d +2e3135373237343c322626281d2a2821242f332023191c20100c1c171f26 +2d2e2926292d1d171419252f3231362f2923160d182b2b3a352d343a2a1b +151a32423f3b454845332117192a332b32332a3f413c4a3960ffd99ffffd +b2bfffaf3b4d423a42383d3a40363b473444363d4334473e3e3b3a3a3b3b +3b3b3a3d4c41425f828660375458283e5f5d97ccd2bf996e5456544b4543 +403e372e33322c25305d422516161711101714162432475068a19e8d5b72 +7d9c9d726b818b9a8b666f898e91686f655495bec8b3b18b2c0310160e0f +1214141212110b0e0a04071e27000a07102a1d0e190f1212111212141516 +1d161719111e5ea77d2611190f101c2b23416e754b2316160e172121274c +758635291c1413171e222aa68b722a1a201a0e17080a2b443188dc302819 +1610002911111719140a0b13140e0a0a0f12100b0e0c09080a0d0e10080c +0d0d0a0c141b1f1915110d06050705080a0b090a0c0d0c0a061118270604 +060e2a1e0603000711181c1b1a233b52471a171a120f2165e26729b6b000 +29dd590c0413060c100d132c311b090d10090c0b0e253a2e160f0b0e0e0a +0810213024170d0d0e0a090b101b1f160b090a0a0b0b0c0d0e0f0f100509 +0e10100c08060b0a031011080c0f081e11000e0b0014040d1a0d48553e35 +2931353c41311f1d43423a2f2c313938443c2f0066c40016b76600170917 +0811150f0a0a0d100f0c090a0b0b0b0a0804020002142727140007060707 +07080a0a060b0b06060c0f0c0b0d0f1312100c0d0e0f0c0d06060e190c16 +180d0b0b10151b23292c2e2f2c261c120c1527322e252d2f29190c0e1922 +2e2f2f2f302c1e110f172b392f2b32393329180e1625261921242523201b +171400679d949a9379738b94001b1b170d0b0d0b0b0a0a0a0a0d11111012 +13151413110f0f0e0f0e0e0f121031dcb3b6da6662e144008f8293bb557c +e062383a38312a2a292721181f1d19121e554d382626251c181b1311181f +2d3346889e9a687f8aa9aa7f788e98a798737c9494976e756b5a9bc4cdb6 +b2892800060c070a0c0b0907090b060d0f0d15323d0f211b23382a171d0f +100f0e0c0c0e0f1118111518101f61aa802911190c0d16282244737d552b +1b17090d1517224d7d8d392b1c1412161d232dab927b34262e2e2c392a2a +485f4aa1f4484335332f204d393c42443d33343c3b353030353836333735 +3231323334332b2e2f2c292b3237342b24201a1310100c0c0d0b09080a0d +11110f1a2335141416203a2e14110b0c0a0c12161821384f44181d282d36 +5296ff8b4ddad3194eff8336303f353b403d40575c4634383b3437363950 +6559413a36393935333b4c5b4f423838393534363d484c43383637373838 +393a3b3c3c3d35393e403e3a363439362f3c3a34353524342712201c0921 +0d141e1048543b332930343a3f2f1c1a42413a3230383f466061572794f2 +223cd580152f2433293537322d2d32353431303132343433313033303345 +5858422c333230302f3030302f35332e2e3437343133353635332f2c2a27 +24251e1d222d1d2422140e0b0f12182026292b2c2923190f0912242f2b22 +2a2e28180b0d18212d2d2d2d2e2a1c0e0810283a332f34372d210d041024 +271d25282d30313233341e8cc3babfb89d93a3aa11383b3c34373b3c3c3c +3c3c3c3a3a3837393c3e3d3c3a3b3b3c3b3c3c3b3a3655fdd3d3f57f7bfa +5d10a99eafda759cff832022221a15161717140d1818150e1c5245322326 +28201b1c110e18233a4761a5b6ad7b929dbcbd928ba1abbaab868fa8aaad +868d8372b3dae3c9c497360911150e0e0e0e0d0b0e0f0c1315161e3b4a1a +29222a41322028191b181716161819181f171a1d152366af873019211718 +22312a497780572e1f1c10161f20295280934237261e1a1e232834b19c84 +40323b3936423435587060b7ff60584a45412f594343484a43393840403a +3333383b373339393433343635352d30302e2b2d3438372f292520191617 +14151615131315151717141f2536151416203a2e15120d1012161a1c1d26 +3f564f232933363d599dff9b5deae62b61ff93463d4a3d414441465e634d +3b3f423b3e3d40576c6048413c3f3f3b3941526155483e3e3f3b3a3c424d +51483d3b3c3c3d3d3e3f4041414037393e403e3a36343937303d3c353738 +2f41341d2c26142a161e2719505c443e353e42474a3a25234a49443b3b42 +4b516b6a6132a1ff334fed992d4739483a4340383333383b3a3735363738 +38373531302b2f415555422c3635363637383b393134332e2e3437343234 +36383735312e2b27262722232b36272f2c1e1715171b21292f323435322c +2218121b2d38342931342e1e11132029353838383937291910172f3f3c38 +40443b301b0f1a2a2b20282b3036383a3e412f9ed6cdd2cbb3aabbc12548 +484439383b3939393b3b3d3d3e3d3c3e40403f3e3c3c3a3a3a3a3a3c4243 +63ffe2e5ff9391ff7327c0b4c5ef8ab1ff965f5e5c55514e48403a2f2f2b +262536663f231717180f0c151318252e404b649fa1915f717e9c9f76677f +89998a666e868e856963576cb2c4b3bd9b490b07130f0b0d0e0f100f1110 +0d10130900284c5229170d2317000b19141615141516171817111116141c +44726026201f13181e1f1b2e4d4d301a1818151c221c162a4144352b1f16 +14161b1f08462c3d2522202d1d0c151e4a937b9be894bdb76312250f1512 +12110f0e18250c1a252011070b130a0a0e0c0907090c0a0e0f0d0b0d141d +1f160f0e110f0f0f0806060c131410070808040f17260505070e2a1e0807 +0309161c212120212f3e3327250c0a29456ebbc3d3d9610162bd2807171f +060203052d3c3e2a191716110e0b0b1c2d231110090c0e0b090d18211b11 +0a0c0f0d0d0f0d1518110a0a0c0b0a0a0b0c0d0e0e0f090b0e0e0d0b0909 +010b0c0d0c0d0d0806080b0a11140c0d18180315323a36332b2f31343625 +110f2e302f28262b2d28300d00056cd36c84e7b39091942c0d1b18120f0b +0d0d0c080c0a08090b090a0600081c231c0f060106060807070606060307 +090504090c0b0c0d0e0f0f0d0d0d1c110c08130c050007071f290001110c +23282b2a2b2d2b2611090d1f2b2a2d3430332c19090c1d2c2e2e2c2a2d2d +1e0d0e1c272c2f3031303c2d1b0e121b2227242525231d181512130c0000 +0000000033c7450d1110072a0e0d0b0a0a0a0a0b1212121415171716100f +0e0d0d0e0c0f111211d854002e2e34e4bf5876b267b8000086b041434139 +35332f2924191b171312245e49362727231914191210171b262c4286a29e +6c7e8ba9ac83748c96a697737b91958a6e695d72b8cbb8c09c4807010b08 +060809090706080a080f1812093c62683b251a2d20000b1811100f0e0f10 +1112120c0f15131d47756329201f1015181c1a31525538221b170e121612 +1129464b382d1f1613151a1e084930462f2e2e413e313a406ab096b6ffae +d8d3823346333d3d3d3c3837414e33414b46372d313b33363735312f2f32 +303133312d2f363b372b222123211e1c130f0d101617100a0f110f1a2234 +1313151c352912110b0c0f10171c1b1f2c3b30272b1d275276a0e5e8f7fe +862888e65231434b35323335586769554442413c39363647584e3c3b3437 +39363438434c463c35373a38383a3a42453e37373938373738393a3b3b3c +393b3e3e3b3937372f3938393839392f2423232025261d1b222107183239 +3331292f2f323423100e2d302f2b2a2f34364b3221319aff95a9ffcda6a7 +ad482e3f3d3732303234312f33333132343533322b3b4d544d40342f3232 +3130302e2c2d2b31312d2c313433323334353533302f3a2d28242f271e0d +1b182d330505140c20252827282a28230e060a1c28272a312d322b18080b +1c2a2c2c2a282b2b1c0a0716263034373530392711070d1a262d292d3032 +31313132373125130c1a1b084ee0602a33352e533a3b3c3c3c3c3c3b3b39 +393b3e40403f3c3b3c3b3b3c3d3c3c3a39fe751a4a494efed97292ce86d7 +191aa5d1252626211f1e1b17160c12100d0e225b41302426271b161a100e +171f333e5ba3b7b17f919ebcbf96879fa9b9aa868ea5a89e847f7388cede +ccd3ae56150d16100c0c0d0b0a090d0e0e151e1912456d73452e23372909 +15201a1a1918191a1b1c1912141a18214c7a6a3028271b20242522365658 +3b25201d161b201b182f4a51413929201b1d202410503b4f3b3a3b4c4739 +434a79c0abcbffc5ede89444553f474443423e3d455238464e493a30323b +3739393733313233313333312e30373d392e262527252322191615191f20 +1a131516131e24351414161d372b14120e11171a1f22212433423b313727 +2f587da9f3f8ffff98399bf8623f50543b3635375e6e705c4b494843403d +3d4e5f5543413a3d3f3c3a3e49524c423b3d403e3e403f474a433c3c3e3d +3c3c3d3e3f40403f393b3e3e3b3937372f39393a393a3a342e2e2f2d3032 +27262c2a12213c413c3c363b3c3f3f2e181635383934353a3e41563b2b3c +a7ffa7bcffe6bebfc35d3f4d453d38363839373438373536383837332836 +49504a3d342f35353736363635342d30312d2c3134333334353636343230 +3a2e2927332e25152622383d0f0e1d162b3033323335332e191115273332 +353a36383320101324353737373538382a150e1a2b33383d3e3a44331c0f +131f272d2d30343738383c3d454136241e2d2e1c63f471383d3d33553939 +39393b3b3d3d3f3e3e40404242413d3c3a39393a3a3f434645ff862c5f5e +65fff089a8e49beb2e2eb9e26c6c6a63605a4f423a2f2e29242334623922 +1a1a170c0c16181c272b3a45619ea396646d7e99a07c627c87978a676d82 +8c7c6d57508ac6c2b1ac6309000f1006090b0b0d0d0d0f11150b06061c8c +9a8e8f5e1a10180d0f131718181817181718271e17151314213441282f23 +121c1f191d2c3e382621251f141a23221a222922322e241b17191d201f38 +29372825112713060e025bbf838a8e6e64b666001f1214110f0e0d0f1a26 +10263a331b0a0d170a0e15140e0a0d110e100f0d0d0f151e291d11101514 +12110e0d0d0e11110e090506040e172a0a0a090d251c0908060c181c2327 +2723262c291b171e48653908092e2921130b0f030b000d0d09151210161d +1e170e0b0b0b0e0c08111c150b0f090c0e0e0d0d0e10110b080c10101011 +0b0f0f0b090b0d0c090a0a0b0b0c0d0d0e0f0f0d0b0a0b0c060d160f0a04 +09111d0e0f0d0006130c1318001c1721312a282c2a2b2a1a08071a1f2424 +23242119172616060c6c848b948a929dc0410a0419130f0c0d0c0b070b08 +070708070603061626210d00000306060908080605030c10110b08080a0a +0d0d0d0d0d0c0c0e0d071825647b88737c5f6d7109071b10262b2b28292c +2c2916090f27322827322d322c18070b1f312f3433303233230d10272d28 +2b2d2a2a301f1312181b1b1d2021201e1a1615131800173a292b392136e4 +74051216040d0e0d0b0b0a0a0a0b101110121517171611100e0d0c0d0f10 +061713b9602475662cb3abb77ac569e7350054da4d4f4d484540362c2519 +1a151111225a43362a2a221611181414191820263f86a4a3717a8ba6ad89 +6f8994a497747a8d917f6f5c558fcdc9b8b1660b000d0d03060909080707 +090b100a0b0f2a9eaea29d6822161c0d0e10121111111112141522191514 +12152437442b2f230f1919161c2d41402e29281e0d10171615212e29352e +241b16181c1f1f3b2d3e30311f3b352f34277cdf9fa6a88a80d2851f4038 +3c3c3a393638434f374d60594130333f333a3e3d37333539363635333133 +393d453729282a2925231d1a18191a1a15121315121c2538181515192f26 +11110b0d0e10192222212329271b1d2f658e6a3a33554e483931352c352a +39393845424041484942393636363937333c4740363a34383a3a39393a3c +3d3734383c3c3c3d383c3c3836383a393637373838393a3a3c3d3d3b3938 +393a343b443d3832373a3e2a2a28161a241a1d21012017212f28262a2829 +2a1a08071a22272727282827324b3e323a9aadb0b2a4a8b3d95d2b283e3a +3433343532303434333334343231384a58533e2e2b31323232312f2d2a2a +343839332e2e303033333333333232312f263a478599a58e94757f7f1610 +221426292926272a2a2714070d25302625322d322c18070b1f312f34322f +3132220d0d27313036383331301d0d0f192025292b2e3132313133353c1f +3f6150525e4455ff9125343b2b363a3b3c3c3c3c3c3b3c3a393b3e40403f +3d3c3a393a3b3d3d33423ee18445948248cfc7d396e188ff511871fa2e2f +2f2b2a272017140c110e0b0d20573b2d2729261814171111181c2d3858a0 +b9b6848d9eb9c09c829ca7b7aa878d9fa492847069a3e0dccbc477180b18 +160a0d0e0e0c0b0b0d0f1610111633a8b7aba8742d222717161719191919 +1b1c1f1e291f1a191719293c4b32372b1a24251f24324643312c2d241519 +21201c27322f3e3a2e251e202225274238483d3d2c463e353d308beeb4bb +bfa095e797304f434643403f3c3e47533c52635c4433343f373d42413b35 +373b363736343133393f46382b2a2d2c292722201e1f21211d191618151f +263919171519302713100e11171a212828262a30322529396d9471434166 +60594c44483e453746423e494442474e4f483f3c3c3c3f3d39424d463c40 +3a3b3d3d3c3c3d3f403a373b3f3f3f403b3f3f3b393b3d3c393a3a3b3b3c +3d3d3c3d3d3b3938393a343b443d3832373e4736353321252e25272a0b29 +212b3a33313533343424100f22293030303130303d54483d47a9bfc3cabd +c0cbef723c36463f3a38393937343837363637373531354655503b2b2b31 +333336353434322f363839332f2f3131343434343433333330283b498aa1 +ad97a0808b8a1f192c1f323636333437373421141a323d33323e373a3622 +1115293d3b40403d3f40321914293432383c3a393a2817161d2324292f34 +383937383d3f482c4b705f63705769ffa1323e4330383939393939393b3b +3d3c3b3d404242413e3d3b3a3a3b3d40394b47ed9456a8985ee5dde9abf6 +9cff662a83ff787875706d645445382f322b27232d5337241f201a0b0c17 +1d232d2c3744629fa39b68667e94a080607b87978b696d81897a6b4f5ca0 +c3bfb673200007110a03090b0b0b0c0e10120b0d0c09289c4900364f3720 +1a0f121718191919191a1919161613131823323f34293627141a1d1e1f30 +413d2c2e2c1e131a272d2a33362f30312b221d1f24262740493f39522e2c +0e181204a0d10b00000009b3d724090b151618181512141718222d2a1e13 +10110e0f1313100f12150f0f0f0c0b0d141a281d13121515161812151612 +0a080e130a0c090f172e0e0d0b0a1f1a0b0c090d12151b262a2927282b20 +26343f3515010d270c0611160a1f0f0a0f0407170b040a090b0e0f0d0e12 +0d0e080a110b060e0d0d0e10100f0b090d0a090c0f100f0f0d0c0a08090b +0c0b0909090a0a0b0b0b0e0f0f0d0b0a0c0d110009030c0407150c07010b +0d0a17140d0909190a1f2c1f2326232225180a0a141c242424231e161f0c +021b00134155779dbfecbd470918120f0d0b0c0b0c080606090706030606 +231e160b020001040405090a0a0807050e0f110d0a090b0d0e0d0c0b0b0b +0d0d25040e299fd3e6bc6a4d4f5f00030f0f20262624252929271306081d +2d2a222122272213070b1a261d272b2625251806071c231d1c1717252519 +0e0f191e190c171818171514141418247fd2cec9dad0bce074160c182810 +0f0f0e0c0c0b0b0c0d0e0e101314141311100e0d0d0e1011140a0670b244 +94e1929a9c54e2da78b4980000c45a5a57534f493a2c21191e1814111b4b +41382f2e25151119191b1f191d253e87a4a875738ba1ad8d6d8894a49876 +7a898c7c6c5261a5cac6bd7a260009140a03090a0a0907080a0d090c1112 +35ad5d0440553b221a0e0f1211121212131416161111111217243542372c +36271117171b1c31444234332f1d0c0e1a2125323b3433312b221c1e2325 +27434b46415c3a4033433a2ac4f22a07141f25d2f8482d313d4143433e3b +3d403f49535044393639373b3c3c39383a3d373735323234383c473b2f2e +2f2f2e302728282119171b221c201b21293e1c18151227200f100a0d0809 +14212827242529232c455c5e4633394e332d373f33483a363b3036473b34 +353436393a38393d383933353c36313939393a3c3c3b3735393635383b3c +3b3b3a3937353638393836363637373838383c3d3d3b39383a3b3f2e3731 +3a32353e2e251f27252029251a1312200d1f2c1d2124212225180a0d1721 +2728282725233a312a45273e6a7a93b5d5ffd6632a3c3938343435373534 +32333534333333365552483d332f2f323031323331302d2b34373733302f +31333433323131313333482a344fc4f8ffdd886865730f111c17262a2928 +282d2c2b160a0b21302e2525292e291a0e11202c232d312c2b2b1e0c0c24 +2e2c302a28322e1d1114222c29202a2b2f30303237393e4aa7faf6f1fff5 +ddff9538313f513a3b3b3c3d3d3d3d3c393737393c3d3d3c3d3c3a39393a +3c3d41373198d865b3ffaeb6b870fef795d1b3151adf36383533332e2318 +110c13110e0d1948392f2c2e2717141816181e1b283758a1b9bb88869eb4 +c0a0809ba7b7ab898d9c9d8b7e6374b8dcd8cf8a340c151d140b1110100e +0d0c0e110e1115173db5640e4c63472e24161619191a1a1a1d1e211f1817 +16171c283a473e333e2f1c22232425364946373734231418242b2c383f3a +3c3d352c2426292b2f4a57504e68484b3b494233d2ff3e1b29343ae6ff58 +3b3c4748494944414144444e5653473c373b3b3e40403d3c3c3f37373633 +3133383d493b302f303030322a2c2c261e1c21271e211d23293e1d1a1614 +292010110c0f10131b272d2c2b2c342c384f64644d3c465f443e4a51455a +4a4346393c493b343b3a3c3f403e3f433e3f393b423c373f3c3c3d3f3f3e +3a383c39383b3e3f3e3e3d3c3a38393b3c3b3939393a3a3b3b3b3c3d3d3b +39383a3b3f2e37313a32354237302932312b352f231d1b2a162936282c2f +2c2c2f2212141e27303131302d2b433a3451344e7c8dabcfedffec783b4a +403c3938393a39373536383736353638544e473a302c2f32313234353632 +302e353738343130323435343332323234344a2b3552caffffe69373727e +191a25223236383437393b3725161a2d3f3a343133383324181d2c382f3b +3f3a393b2e181226302f312e2f3a37281a1a272d291f30323537373a3d41 +4755b1fffffdffffeeffa4443a4453393a3a3a3a3a3a3c3c3a39393b3e3f +3f3e3e3d3b3a3a3b3d40463d38a2e576c7ffc4ccce85ffffa7e3c6292bf0 +817f7b746f6553433931332c29262d53382925251d0e0d181f262f2c3643 +619ca09e6c5f7d8e9d82607c88968b6b6e7e83785b4773b1c0c28b2c000d +0f080a0107080b0b0a0c0d0f10150f0008825010001d1c14140f161b191a +191a1a1b1919111b201f1e27384632293a35251c1825192c3f3b2a2b291b +1c1f292f2d333731343935282123282a222c392e3e6b432d000e0f0095cb +3b4e5a565d97cc1013211a1c1f1d1a14110f131518161311101016110b09 +0b0d0d0c0d0d0b0a0a0b0e131512111214151d2516161516151414121215 +1011162a0b070d071b160c0d090d0d0f15222a2b2a2a29283038260a0d20 +15150d1e0d1c14090908140e0c12070a150f0e13130f0f120b0f0b0a0e09 +050e0e0d0c0d0e0e0c090e0e0d0c0d0d0c0a100a07070809090807070708 +0808080a0c0e10100e0d0e0f0e091e010c0f0c070c230e1219020d294701 +150d12221f1e1e201c1d22150a0c1a1f2623222220180d160b000776d3e2 +e9d6c0db752400070e0b0b0909080807070607020106131b2a1a06000004 +07060305090c0e0d0b0a060507080a0c0e110e0c0b0a0a0b0d0e00041800 +04001f1c03010329030c0009191d1e1c1c1e1c1805080b1019201e171818 +150e0a0d1214131b1f1a16181816121213151611111b1c1e160d0f18180f +13141413121011130702162b24181a1d12100a0c08041800110f0f0e0e0c +0c0e0e0f0e0f12131312121210101010121210130726d6390053c25cbf1f +54e4c38dcd5e3eb361615d57524a392a221b1f1916141e4b423a34332816 +121a1b1e21181a243d82a1ab796c8a9baa8f6d8995a398787b8785775d4a +79b7c7cb94350615160f0e050a0b0b0a0807080a0e1412011391631e001f +1b1211090f140f101213141516160c161e1e1d283b49352c3a3522191222 +162d424032302c1a15131c2326323c36373933261e202529222f3b354675 +4f41213b3c23bdf15e6f7a767cb8ed34374742474a48433d3a383a3c3e3c +393736383f3a343234363534353533323031343737313031323339412f2e +2d2b2a2927272a2d25262a3c1912170f1f1a0d0f090b06050e1d282a2929 +272b364943333e52413f364736453d343434403b393f373a403a393e3e3a +3a3d363a3635393430393a3938393a3a38353a3a3938393938363d3a3737 +383939383737373838383837383a3c3c3a393a3b3a354a2d3a3d3a333143 +2e30351d233b550e1e141625221e1e201c1d22180d101e262a2a29292725 +2838312833a1fcffffeed6f18e3f1b2b3737343535353434343634323138 +434d5d4e3930303435342f313334343331302c2b2a2b2d2f343734323130 +30313334282d411e2f26454125211f41171e101725292a28282a28241114 +171c252c2a232629261f1b1e2325242b2f2a262828242124282e332e2c31 +2e2c241b2230322b2f2f2f303033363a2e2a3e534c40424337342e302e2b +412a3b3c3c3c3c3d3c3c3a3938393c3d3c3b3b3b393939393b3b3c40324e +fc5a1c6fdd77da3a6fffe0a8e37355cd3b3b3935342d2014100d14121010 +1b483a322f332a191519181b201a2636579db5bc8a7d9bacbba07e9aa6b4 +a9898c9894856c5989c7d7daa34413202017170e131213100d0d0c0e1119 +1707179669270e2e291f1c13171b1718191b1e1f211f131c2323222c404e +3c33423d2d241e2b1f324744353431201d1d262d2e38403c40453e312729 +2c2f2a36473f53815d4c2940422ac9fe71828f8b90cbfe4445524c4e504e +49433e3c3f41413f3c3a373a43403836383a373637373332313235373833 +323334353c44333231302f2e2d2a2a2d2627293c1a141811201b0f0e090e +0d0e15232d2f2f2f323442534b39455b4e4f485948574f4544414b413e42 +373a46403f44444040433c403c3b3f3a363f3d3c3b3c3d3d3b383d3d3c3b +3c3c3b39403c39393a3b3b3a3939393a3a3a3a3a393b3d3d3b3a3b3c3b36 +4b2e3a3d3a36394e393a40262e455e17271e1f2e2b28262824252c211619 +272e33322f2f2d2d31423c3440b1ffffffffeeffa4542d393d3a38383838 +3737373837343339454e5e4c3a2e2f3435342e303234373432312d2c2c2d +2f3135383533323131323435282f4321352e4e4a312c2b4d22281a223135 +3834363636301f2025283338382f31312e2723282d2f2e383c3733373731 +28282d323734333c3a372f242832332e3336363838393c413532465b564a +4e5047443c3c373043293a3939393a3a3c3c393837383b3c3e3d3d3d3b3b +3b3b3f3f3f433856ff6b3084f28cef4d82fff0b9f88867de84847f756b5f +504040343427272c39603a2925251f0f0d181b232d2934425b929da17159 +7d889b83617d8894896b6d7b7c6a464b89c2c9b13b02041906010e040407 +0a0b0a090a0b02091611013a1e0521140002130f181d191a1c1b1c1c1a1a +1c28302e231d222d3027393f382516241f2b3b3827282d29211f272c282c +312d363c37251b1e2629312a362e304738384034402184c8a1d3dde1c2a3 +5c0f1208131615100e0f0f0d0e1216130e0f151c21170c080a0c0b070b0b +0a0a0a0a0b0b0d0e1113100f161f150d0b17262719061619120f13280601 +0f0617150b0f090e0f0e131e272a2b2c28231b2c332210000b59585f320c +00245218050911191017100c0a0c0d0b0b0c0b110d0a0f0b080f0d0b0909 +0a0b0b0a0f11100c0b0d0c08100907090a070708080808080808080a0a0e +11100f0f1012063a72230808100c3290b3c7b47482b888090f0219221122 +1d1f1a181c1106071c2123201f21221c2815191d000a2522455180b8bcb1 +80170f0c0b09070605020b0701000613232c171108020102070703050a0c +0e0e0e0d180f09090b0b0c0b0c0b0a0a0a0b0d0d0d0509000c0913050a11 +031a151b0410141718141314120d162427190f1318171313100c0d121311 +121212120f0f151e220e090a080d0e0402111c1b171716161a1b1714100e +10111c1b0e060b090813131212131309101b121210100f0f0f0f12121112 +1314131111111111121212120d0e0d0095cbbcc0c62cd33a003fbb4dcfdb +c8b764645f574e443427261e1e14141a2958443a34342917121a171b1d15 +182137789eae7e668a95a8906e8a95a196787a847e68464d8dc8d0ba440e +0e23100b170b0b0b0d0b0907050600091a190c483012241100000d080e13 +0f1012141616171717232e2d221e2530332a393f352210211c2c3e3d2f2d +302617131a2021293432393c3523181b2326302a38353851444c67646f4e +aef0c6f6fdffe3c6803438303e41403b3738383635393c3934353b444840 +35313335332f3333323230303131313233353231353e332b273342433222 +32362c27293a160d190c18150b0d070908070e1c26292a2b2626213d5049 +412c378381885b35264f7d4431363e4640453c37353738363637363c3835 +3a36333a39373535363737363b3d3c38373938353d3937393a3737383838 +38383838383736373a3c3b3b3c3e32669e4f36363e3859b2d5e7d2909acc +9917190b202614251d1f1a1b1f150a0e23282a272628292943373f472b35 +4e47616996ced2cc9f3b38383736343332323b3731313845555f4a443b35 +333435352f313234343535343b322c2c2e2e2f3132313030303133353932 +39263b363e2d3035233630311824282b2b282628252129383a2d22272b2b +292c2925262a2b292a2a2a2a26262c363929282d2d3333241c2832333236 +39393b3938353333373a4544372f3431303b3b3a3a39393039453c3c3d3d +3d3d3d3d3e3c3b3c3d3e3c3a3a3a3a3a3a3a3939393c3924b9ecdbdce147 +ee551b5bd767e4edddcc3d3d39332e271c111510130d0e1629553c322f31 +2b19151914181d1724325193b2bf8f779ba6b9a17f9ba6b2a7898b958b75 +525a99d6e0c9531c1a2f1a142013131416130f0c0b0a030b1d1c104b341a +33220c0c1910161b17181a1b202022201e29333227222a353a314147402d +1c2a253143413231352d201d242a293039384248402e21242a2d3832443f +455d52576e687554bafcd8fffffff6d99044453a474846413d3e3c3a3a3e +3f3c37383c464d4639353739353135353232313132323132343633323740 +352d2a364546362333342b27273a160d1a0c1a170b0e080d0f0f14212b2e +3031312f2d47585048354493939a6d4737608d513c3c434940453f3d3b3d +3e3c3c3d3c423e3b403c39403c3a3838393a3a393e403f3b3a3c3b38403b +393b3c39393a3a3a3a3a3a3a3a3a37393c3d3c3c3d3f33679f5036363e3b +60bcdff2dc9ba4d7a32023142a2f1d2e25272222281e13162b30322f2c2e +2f314c414a533845605a7983aee6e9e1b1493e3b3a39373635343d393332 +394656604b453c36343335352e303234353434333d342e2e303031323332 +3131313234353a353b2a413c47373b4130423b3c232f333639333433332c +37434838303239363433302c2d3435333436363634343a4241302d33353c +3c2f2b36403f3b3b3d3d4243413c39393c3e4b4a3d353a39384547464642 +42353b443a3a3a3a3b3b3d3d3d3b3a3b3c3d3e3c3c3c3c3c3c3c3e3e3a3c +3c2ac5fbedf1f65aff662c69e576f9fff2df8786807265584b3f3f343326 +272e3b61392720211c0e0a1317202a27344358899aa375577f859984627e +879186696b777653395f94cccf6f0703101306060f09060a0e0f0f0c0b0b +160908090016190d0001041b110614211c1c1e1e1e1f1d1c0f141e282823 +252e2b222e33372a17212728323426262e2d1616222a25272b292c342e1a +101723282b2735302427384a5134332a95ab4e3345644b4d070a12170a0d +0c06070c0e0c121417171616191b2019120f0f0f0d0b0b0b0c0d0d0c0908 +0f0e1113110b0b0e100a09121f2013050f150e0e142e0f0a130512110b10 +090d1010141e26282b2e2a28171f1e100f0261e0b5bfc988292ccf470308 +111208060e100f0e0f1214130c110c090f0f0c120e0d0d0c0b0b0b0c0c10 +100b0a0e100c0c07070b0a060509090909090908080a0d0f0f0e0f12161a +083b7f2a0a020e131978b4d6a13a2d3a680f0906101d0f1f1c1f18191d11 +06081b1e1f1b1b1f231f1f100a0a013f772c001011001044611a0b0a0b08 +060505040a0301091923211b07070a08040104050506090a0c0c0e0f2d1d +0f0d100d0a090d0c0a0a0b0c0c0b07070f07050001040d1306090d130e17 +1113120f0f1315133a382f20161517181818140d0d141b1d1d1417242313 +0b0f14111e13001c39222112101f251a111721221c181312151510161a1c +1d160f0e030a0f131516000412121010100f0f0f141210101312110f1011 +1314151412101c011c0b003a5e50290616291b0119091b1f262366666054 +483d3027261f1d13141c2b5943382f3026160f1513181a131822346f9bb0 +82648c92a6916f8b949e937678807651396198d2d67813111c1f13131913 +0f1112120e0a06061409090e092428170100001509000a16111314171819 +1a190a0f1c27272428312e252e333427111e242935392e2b2f2a0c0a151e +1e242e2e2f342c180d1420252a2737372c3144607a656459bfd373586887 +6e702b2f383f3538373130353735393b3d3d3c3c3f434742393636363432 +333334353534312e36353537352f2d30322c28313e3f32252f352c282d42 +1f161b0b1311090c050709090f1c25292a2d282b1d303b3740348cffe0ea +f4b35457fa732f353e3f36343a3b3a393a3d3f3e373c37343a3a373d3a39 +393837373738383c3c37363a3c393937373b3a3635393939393939383837 +36373737383b3f433467ab56362e3a3f409dd9f8bf5645507a20160f1724 +13221c201b1c20160a0f2227282424282b2c3a3230342d6aa0511928270c +265f803e36373838363535363c35333c4c56544e3a3d3d3b363332333132 +3132333332334f3f312f32302d2c302f30303132323535394038362c3030 +37392a29292e262f2c2f2e2b2b2f312f56544b3c323133343636322b2b32 +393b3b3235424030282d3433443f2e4a654c44332f4049423e424644413d +3a3b3e413c424648463f38362d34393b3d3f292e3c3c3d3d3c3d3d3d403e +3c3c3d3c3a3838393b3c3a393738482f4834225c7d6d441f2f43351b3420 +2b2d36353d3f392e261f150f120e120c0e182b563b302a2d281812141015 +1a1524334e8aafc193759da3b7a2809ca5afa487898f825c436da4e0e687 +211e2a2b1c1b221c181b1b19140f0c0c170b0d110b272b20100e0f231605 +121c17181c1e222325221115212c2c282d36352c363b3f321d272d2e3a3d +312f343115141f28262b333438403723161d272c322f4341393d526b8069 +695fcbdf856a7c9b81833b3f45493e3f3d37363b3b393e4040403f3f4045 +4c48403d3b3b3937353534353534312f35343537352f2e31332d2a334041 +34242e322a272a411e161d0b15110a0d0409101115212a2d30333334293a +433e473d9cfff1fbffc66568ff803a3b434236343d41403f404345443d42 +3d3a40403d433d3c3c3b3a3a3a3b3b3f3f3a393d3f3c3c39393d3c38373b +3b3b3b3b3b3a3a3a383939393a3d41453568ac57372f3b4247a6e2ffc961 +4f5b84281f18212e1c2b24252223271c13172a2e2d29292d2e32433c3b40 +3a7ab26431423f243d74924c3c3a3b3a383737373d36343d4d57554f3d3f +403c3734323330313031323030315041333134322f2e3231313132333334 +353a443d3b333a3b4344363435393039373a3a36373a3d3a625f57473e3c +3f3f3e3e3a33333c4345453d404d4e3e36383f3d4d483857725a5744414f +554a44494f4e4a45414142443f45494b4a453e3e3940454345432b2d3a3a +3a3a3b3b3b3b3f3d3b3b3c3b3c3a3a3b3d3e403f3d3a472d49382b688f7f +5733435444283f2e44484f4b888881706053473e3932352b292b33513722 +1b1d180b070d141d2726364559879ca6795681849783607e858f846a6c78 +7244397699cdcb260112110c1411080b090c11120f0c090907070a0e0f1b +2100120d0710060b21141d1e2020201f1f1e1910131e242021262a21221f +292c1922221d262c221c1f1f0c0f1e2822212523212824100712232b2c25 +261f1b1f2f28020f00009cd0a2c1c0d9e3beb5200c0c070d0f0b0c12110c +16100d131c1d150a1211100f0e0d0e0f0c0d0e10100e0a070a070910120e +0b0a0d0e0f0b0705080c050d0a0c18351a1411000b0c060b05090e0e131e +25262b2c271d0b25280e0f0994cc35125abbb682e0470618170e0b140e12 +110a090e0f0b0f120b060e100f15101212110e0c0d0e090e0e0a0a111412 +0703070c0a04050a0b090b090909090b0e0e0d0b0c11191e0d002800120f +0908020400261b0013080c0a0b0a00191111161815171b11050814171916 +171c201d2211111f0040dab4a5afa6b3b791500e070708090909090a0400 +02152d2b120007050504050504030709080707070809261306050f0f0d0c +090a090a0a0b0b0a0403050904030611000512110f1318120e100f0d1019 +1f204a2e171821221e1b2020190e0a14222b453b455e5e3c1e1613305c4b +275d9d8f7e380715271c121c20201d1917171b1e2c110a10101517091708 +1217021b1413121210101010101014121010100f0b090e1013151514120f +11131914141c2a2e412d44331a1e281d2615191c65665f5243382d26201b +1f17181c254d42362c2c24130c1113181b131c25336b99b284638e91a692 +6f8b929a8f72757b6f3f37789cd4d4320f201f1a2220171a16191c1b1611 +0c0a080a0f1518262e081109030a0001170a121416191a1c1c1b140b0e1c +232122292b22231e2626131c1f1c273026201e1a0204131e1b1e26242128 +220f040f20282b25292623293b3e2b402e28c6f7c7e4e3fcffe5dc4a383b +343a3c38373b3a353d37323841443a313b3a393635343536333536383836 +322f312e303739352f2e3132312d29272a2e27302a2a324e2e261f0c1412 +0a0c05070909111d262a2c2f2a24183946353e39bff55e3b83e4dfabff71 +3043443b38423a3e3d3635393a36383d3631393b3a403b3d3d3c3938393a +353a3a36363c3f3d3433373c3a34353a383938393939393837373534353a +4247392a54283e3b35342b2b264b3e19302325211d1b08261e1b1f211e20 +251b121521252825262b2f3040353949236affd8c3cbbecbd1ad6f313234 +383939393a3b3531354b6061482e3d3b38373635312e3332313031313233 +4c39292b323533322f303132323333333436383c373437402c3038352f31 +36303031302e313a40416a4f383942433f3c4040392f2d37444d675c667f +7e5c3e363858887b598ecbb8a35826364c46414b4c4b484442424649573c +353c3c41433442323d422b443d3c3c3c3c3c3c3c3c3c3d3b393939383735 +37393a3d3d3a39373e3f4239363a4648564259493036403336252b313f40 +3a2e251b140e0c0b120e1117244a3a2d262924150f1011151b1727344a82 +acc29674a1a4b9a5849ea5aca185868a7a464284abe4e5421c2b2a232b27 +1e211e2122221c17110f0d0f131b1d2a340e1f181116090a1f121a1c1e21 +242527241b1114212825262e302728262f301d2626222c33292323200a0c +1b2622252b292b322d170d16272f332d32302e35494931453633d4ffdaf8 +f9fffff6eb5643433a40413d3d41403b443e383e4749403641403f3d3a39 +3a3b3837383a3a38342f302d2f3638342f2e3132322e2a282b2d262c2728 +314b2d261f0c13120b0e070a0f1016222a2d3136332e21424e3c4443cfff +704d97f8f1bdff813c4c4a403b423d414039383f403c3e433d3840424147 +424443423f3b3c3d383d3d39394245433735393e3c36373c3b3b3b3b3b3b +3b3b3b393736373c44493a2b55293f3c363731322d534421382c2c292723 +112f2624262827292e241b1e2a2e2f2c2d3236374a414355317affeedbe3 +d8e5eac384443b393c3d3d3d3e3f3934384d63634a303f3d3b3a3a393634 +36363332302f2e314d3a2d2c36363633323133323433353536373b403b3b +3e48373943413a3c403a3c403f3d40494f50795e474851524e4b4d4d4438 +333d4d56736b77908d694b4141629185649cdbcab66d3b495c524b555554 +514d49494d4f5d423b3f3f44463a4b3e464931483f3e3b3b3b3b3d3d3d3d +41413d3d3d3c3a383b3d3f3f3f3b38363b3e443f3f45545769536a573e42 +4a404d3e41468d897d6b5c534a423d322f322a1f304736201522190b0b0b +130a2723383d617fa19b855c7b898d816074888a8076706d533f5274afc6 +a30b12121211100d0c0b04010f140a04080700070d090e1813030a0d0b0a +0c0f12131e1f22221f1c1b1b120e0e141d232524241e18151312171e2325 +2827231e1c1b0d0c292422322928221d2219060e222227332620261d1f22 +11110f0988ce444743524b3d522526000b08070b0e0b0c0d0b171c140f12 +140f0e0d0e100e0d0c0d0c0e131616130f0c0d0d0f0f0e0c0c0b05130408 +0b1403090c060510052d240e0c110016060100000c15111e1a27232b2322 +172a24220b162fda6d1b041c88b9dc3c13160b0f0f0a1012110c1015140f +1316140c0b1012100d0a0f110e12160e0b0b0e0f111213120a090a0a0b0a +08070a0a0b0b0b0c0b0d071117150b0e190d090b0e10100f0d0b100f0d0c +0d0f131418100a03060607060811031a19060e09160d11170f06120e200d +160a0f12c4b7677f6b545a5d3c220d12010d0e030c0103091a2b270d0000 +0502010407090a070b080607080300000706070509080807000409090707 +0a0d06050506060808080e0d0b0b0b0b0c0d1e546f585b6b66612a030039 +9f95a5542a1f913e111236abcfbdbac8e9ce5d181932ce8335caad70bec1 +2122192b20281726251b0029360210121412110f0e0e0817100f04102c0f +13121211111212131716120f0f0e0f1017110c0c1317161310170e163947 +4750535c605d43353a1c1f211f1a65635a4c403931292419181f19142849 +4737283225151311170a2114211d38609aa28c6787989d91708292928579 +6f6948344f76b6d3b21b20201f1e1f1f1d1e191924291d1617140a141713 +18221d0c0d0c0a0807080b0c14181b1c1c1a191a0b07070f1b222425231d +17120e0b10171c202325211c18150703201e1c2d2425201b1f16030b1f20 +26362a27302a2b38363d3930adf1646765767168825a5d36403b383a3b36 +3435313d423a353a3a3737383939373635363335383b3b38343235363636 +3533302f2937262a2d3623292e282730254d422b26291428150f07070d14 +12211d2c2a3430332b454549364256ff9240273fabdcff61383d353a3c37 +3e403d38393e3d383a3e3c37353c3e3c3734393c393d423a373737383a3a +3b3d37393a3a393836353638373838393b3a333d4041373a453935373a3c +3c3b393739383634333536373931292023212221202719302f1c241f2c24 +282e29202c2b46374034393ceadb899e8a72787a5b44373e2d393d323c31 +353b4f625c4433303d3a37353635312e323031363936322e353230313234 +34332a3035353333363a36373637373737373a38363331313233457a957d +808e89844a26235ec4bbcb784839ae5c32355bd0f2dddae6ffe97736405f +fdb465f8d695dadb393c384e4a56495b574d2c57602c383a3c3d3d3d3c3b +333f38382d3955383c3b3b3a3a3b3b3b3837363535393b3c433e37383d41 +403d3d403639565f5b62606a6e6d55494e3235383936423f3c2f28221b13 +0e0508110f0e25443d2d222f23161511180c231929284870aab29e7b9daf +b6aa8a9caba7998c8177503c5883c8e6c52b2d292724242324241e1b272c +211a1c1a101c201d222c27151412100d0e0f13141d20232625252422130f +0e152027292928221c191513181f24262928241d19150706232220332a2c +2b262a1f0c1226252c3d33313a3337433f484741c0ff7d807e8e84788c60 +6039443f3d40413d3c3d3a464d454044453f3d3e3f3f3d3c3b3c3a3a3e41 +413e3a353432333332302e2d273525292c3522282d27262f244a40292529 +152a18120b0a121a172622303039363a324c4c503d4b65ffa5533d55c1f2 +ff744a4c4143423c3e3e3c373b42413e4146464041474b49454245454043 +453d38383b3c404245443c3b3c3c3938363537383a3b3d3e3f3f36404444 +3a3d483c383a3d3f3f3e3c3a3b3a383636383a3b3e362e2629282b2a2a32 +243b3a27312c3a32363c362d393953434c42494cfdf1a2baa68e9498785d +47493844473c463b3e445769644b3a353e39393a3e40403d413c3a3c3d37 +2f2a35333432363537342d3138363634393d38383a3b3b3d3d3d43413f3d +3c3c3b3e568da89093a29d985f3a3771d7cede8e6252c067373961d9fff4 +f3fffffa843e4765ffbb71ffe8a8f2f453534d615a635263605639646e38 +42444443403d3c3e3947403e333f593c403f3f3e3e3f3f43494a46424042 +44454c443d39393732313842383d5e69666e70777b7a6154573d43484642 +948d7d695a534d48463e3d3d30243651322a2319251612070010181f3142 +4b7aa09d875e7a898d82637484877f73655d4b42557eb5c98c0210121211 +100d0b08090611170d080a0b12040003030b0f040606070d100c0b0c1a1d +20201e1b1b1c160f0d151c1d1e1f231f1b181410151d1e2024282926201b +1505171a1d2a24261f20180e0f161f2c21261f1c1a1625331a0f0e003757 +000d00000000442d31050607090a0c0f100f141b1e1a1412100e0b0b0c0b +0c0c0c0d0c0f141614110f0e0d0d0f0f0e0c0d0c0e0e10120a0b0e0e0e0a +0912072c250c050c011b110a04050113161a171c202d2b22171d1b150904 +0b91bca8afc0a9d3a14a0003171705140e10110e121717130c10130f0f10 +0f09110c11110a0d120c0d0d0f0f1010100e080708090c0b0b0a0a0a0a0a +09090709120600090a0d150d090b0e10100f0d0b100f0d0c0d0e10110c13 +110a0c09080c140f0303191e1119010f0d040010200800171c0706074036 +0000061f38664c0509090727310d04020d29341c0000000900000003090c +0c0b000b0a0000020100080806060809090802070b0a0705080b00000001 +04050607121111100f0f0f0f85bd9eb1ba8e9bc714051b67cd22359e9758 +c35a002312609dd0d4aedd4d1624173ac6b172b79576b0dc3d2b2b12121d +20150e13120a081e0f1112120f0d0c0c0a141016121d341b121211101010 +11121718171617171a1a0f0c0c0e131515130c151929475155656162565a +575046221f1c1b196964584a3e3a342d2b232428201a3156464438293120 +1a0f041316141c24235a98a38c6686979c9372828e8d827261553c354f80 +bdd89d1320201f1f1f1f1e2023222d3326202220251511110f17190d0b07 +080d0e0a060714171a1d1c1b1b1a10080610191c1d20221e1a160f090e16 +191b1f2324221c171101131518251f231d20160d0e151e2b222b26262724 +33493e39331c5777062b1c1d141f76646b41403e3c3b3b3c38373a414440 +3c3a383636363736353535363336393b3936343335363636353331303232 +32342c2d2e2e302c2b342b50472e252c1d35261d161208161b1f1c232b3a +3c36323b3d3c312c30b6dfcbcfe0c7f1c16a23283e4131413c3e3e3a3b40 +3e3a32383b393b3e3d373c373b3b35383d38393938383838383935373839 +3a39373636363636363637363e322c353639413935373a3c3c3b39373939 +3736353638393238362f2f2b2a2e342f2121373b2e361e2c2d232031412d +294348333031665c1e09284157856b27323733555f3d34323f5b6852342c +364037363334353633302432362c2d3a3c3238353333353636352f343837 +343235382f313233343536373f3e3c3b3a3a3a39aee6c4d5dcb0bbe73425 +3b89f1485bc2b16fdd7718463584c0eff1c9f7662d403c65f2e0a0e2bc96 +caf2524347353c4b554c424540352f453437383a3b3b3a3a363d393f3b46 +5d443b3b3a3939393a383837383a3d4246493e3b393a3d40403d363d3c48 +606563716b6a6064635e57363738393747443b2e28241e18160e10171311 +2d523d39312631211d1207181b1c252e2e67a7b3a07b9eb1b9af8f9da7a3 +95827060433c598fd0edb1252d2925222221242424232e342a2426252c1d +1b1c1b2325160f090a0f130f0d0e1e212426272525251a100e1620212224 +27231f1b1611161e2021252728231b16100014191c2b252a282a2115161b +243127312e2f302f3e564a45432f6e9022473835282e7f676c4142414040 +41424241454c4f4b484444403d3c3d3c3b3b3b3c3a3d4143413e3c393432 +333332302f2e303031332b2c2d2d2f2b2a33294e462d242b1e3629211a18 +0e1b1f2322292f40433d39434643393640c8f3dfe6f7dfffd87f36384d4d +3a463c3b3b393d4243413b404545464b4a464c4749473e3e433b3a3a3c3c +404042423a393a3b3a393837373739393b3b3b3b41352f38393c443c383a +3d3f3f3e3c3a3b38363535363a3b353e3c35353433373f3a2c2c42493c44 +2e3c3c353142523d37505540404179713623435d76a48a43444440626c49 +403e4a66735c3e364045363336394044444236434334313b382f38383636 +3839393832373b3a3735383b3132333438393a3b4544434243434345c0fc +dbedf5c9d4ff4d3e54a2ff5f72dcd28ff4851d483b90d4ffffe7ff7c3b4b +456cfbeaadf2cdabe1ff6d5b5d494c5a5d534d504f454056444443423e3b +3a3a39433f45414c634a4141403f3f3f40414b4c4b4a4a4b4f5348433f3d +39362f2f323f404d676e6e7d77776c706f69613f434343419b917f6c5f59 +55504c4848432f233a582628311c2003020711132022213b536f9e9d8a60 +7b878e86687784847a6a54473f475588bccf6c0010121211100d0b080705 +10160b070b0b09111a0d09343e0e160c0a15150d0a0f1b1d2021201e1d1f +170d09151d1a191d1f1e1e1a110b111a1c1b1e2326241d1708001524262a +262b1c2518070a060c282c1f23271d10141609151d035ccf745b606d7373 +c16d4707060a0c080b14160f1413161917100c0c0d0c0c0b0d0d0d0d0d10 +1414100e0e0f0d0e0f0f0e0d0d0d14000412000315070a08081008252407 +030d07221d130d0904101517252016131617262b231a191037c7995ca8b6 +6772e09813181a11000d0c0e100f1418181410100c08090f11100e080e0f +07090f0c0e0e0e0d0c0b0a09050508090a0a0c0c0b0a0909080909091104 +0b1710080a0c090b0d0f100f0d0c0f0e0c0b0d0e10111219110e10100a12 +0d10200f253016288e6f2a0f1d589eb6141d0b0a131507537c9dc4bad4e1 +871c060706262f0500172d2f20040000040505050508090b080603090907 +0a13130f19181717181919181f2224231f1c1d1e29292a2b2c2c2f2f2626 +2727262526265de2bab4cac5b3c124111331bc63200d5586bb99131d0d00 +01313780d45a1e1829043394b8e2c9bcb4a0120d3b2277a29da8aea5a35e +01111314131312110e0d14130f1715182414121211100f0f0f1113131413 +1516181a0e0e1012151617160f16223950556079818c7669655a5443251d +18156f695b4a413f3b36302c2d2c1f19355d3941452c2b0c0b101a17201a +0f1f2d5095a28f6885959d9576838c897b685040303a4f8ac4de7d0c2020 +1f1f1f1f1e2023232e32272023201d242b1b17424a181e120e16160c070c +181c1e2120202122140706141c1b1a20201f1f1910080b14191a1d222524 +1d17080015232529252b1e291a0a0a060f2b31262c342b22262e2d3f4228 +7cef9279808f999ef1a27f413d413f393a413e373a393c3f3f3834343837 +37363636363634373939353333343537363635343131381c263420253527 +2c2a2a322c49482b252d253e372b221b0f171c202e2b2322292e41494540 +41385cecbc7fc8d68590ffb8363d413b2c3a3a3c3c3b3d413f3b38383734 +383f43423c363a3b33363c393c3c3a3937363535353638393a3a3a3a3938 +3636353636363d3037433c3436383537393b3c3b39383b3a38373637393a +3940383535352f372f32423147513749af904e32407dc3dd3e4735343a3c +2c779fbfe3d9f3ffa43e313735565f352e495f6155392a30393a39373535 +3433302e2b3134343a45474147444343444545444b4e504f4b48494c5959 +5a5b5c5c5c5c5353525251504e4e82ffdad4e8e0cddb3e2c2e4fdc85422c +6d9dd5b634402f162150549aed723834492858bbe2ffeeddd0b92a295b48 +a5d2ccd7dacfca83243234353738393a3a393d3c38403e414d3d3b3b3a39 +38383838353536383c4145463a3a3b3d3e3f3f3e373c435666676c80878f +796f6d6461543d3936354c463b2e2928241f1814181a12103159333b432c +2f111217212028251b2d3c60a6b5a37f9eafbab2919da39d8d765e483541 +5999d7f3911e2d2925222221242424232e332a242725242b3526224d5621 +2112111a1b120e132124292b2c2c2c2b1f110f1a24201f252524241f1811 +151e222223272a261f17080217282a2f2d352a342613140e1632372e353d +362e323a394b523b93ffae9599a8aeaefba680424044433e4047463f4342 +454849403e3c3e3d3d3c3c3c3c3c3b3e41413d3b3b3a3433333332312f2f +361a25331f2434262b2929312a474629242c253f382d251f131d22253531 +292930364a534e494b426cfccf93dfed9da8ffcd494d5047353f3a3a3b3c +3f4546424040403d40494c4d4b4547463c3b413c3c3c3d3c3e3d3e3e393a +3a3b3c3c3a3a393839393839393940333a463f37393b383a3c3e3f3e3c3b +3c3b393838393d3e3e473f3c3d3e38403b3e4e3d53604658c0a15e45538f +d5ec4c534140494d3f8db5d8fff5ffffc25941413f60693f3852686a5d41 +32384140373435383b3d3c3a373d3d3a3e44433e47454444454646454c4f +51504c494a4c59595a5b5e5e5f5f585858585857565a95fff3edfffbe8f6 +59474969f59e5b4891bfeec63d463825386d76bbff8c4942583868caf2ff +fff0e5cf423f705bb5e0d6dfe5dbd993374545444341403e3b3a41403c44 +424551413f3f3e3d3c3c3c3f4141404143474b4f45454444403b3736363f +485c71737a9097a0887d786e6a5e49454140a09988766c67625c5758574d +32263f5e4c231f21272117120d071f182a35526c9a9c8a617a888f886978 +8580715d493e3b4c558cbed04c0010121211100d0b0804020c1208020808 +040c190e2082c1a42c180f1514080813181b1c1e1c1d1c1f150807161d19 +1820181a1e1a10080d15201f2122211f1b190908191f161418191b211f13 +040524495122191b161c212314070e125ee5c0c8bac1b899d45f3b0e020b +0d060a17190e0e090d181a120f1212100d0c0e0e0e0d0c0f12110d0b0d10 +0e0e0f0e0e0d0f0e1505274d0c0e180b0708070e0a1e2504050c0b212212 +0f0a001224201b0d1320190c09170c12100b22e38f0001160617d88e0022 +0b0d170d0c0d0e101416141216120d08070404020600060b0607100f0e0d +0c0c0b0a090807070809090a0c0c0d0c0b0a0b0c0d0e0c0310120a0b090b +0a0b0d0f0f0e0d0c0f0d0d0c0c0f10110e10091a1e20121707082011191a +121160b7b09ca5c49c42000a141a0c1124bedcdfccb5be934e02080e0606 +0d000d35351500000a080503090a0a0b0a0907060e00051e2a1d151e1f1d +1b1b1c1d1c1b181a1c1b18151517120f0e0d0c0b0c0b0606090909070707 +0058839d728e7f571f0d1a005e9c839a828f937500201c58c9bab0c2c3be +c357192142d6b58d92b2b6d4ac271f27b6b46f735c5ba2d35c291a181717 +1615131016110e120f0c111014131211101010111111100f0f10100f1013 +14151516191a1717254050525f79929e806865595a5731211513746f6155 +4d4c4640393a3b34201938635f3b3330312a1f1c170f21141c1d2f5192a1 +906984939d9677848d85735b43342c3f4f8ec6df5d0d20201f1f1f1f1e20 +20202a30241e21201b202b203193d2b33721141a170b0913181b1f202021 +222313050516201c1c241c1e211d10060a132022242524221f1d0d0c1c22 +19171b1d2129271a0b0c2b525a2c262c282f373f3a31353781ffdee6d8e1 +ddc0ff906e4439424037394441363430343f433b383b3d3b383737373736 +333637363230323536373635353433323929496f2e30382b292a29302e42 +4928292e2b413e2e291f0c1d2e2a281a21312d2224352e38363347ffb212 +21362435f8ae1c473135423a393b3a3c3d3f3d3b3e3d3a37383939373630 +343a35363d3c3b3b39373635343537383839393a393a3b3a383738393a3b +382f3c3e363735373637393b3b3a39383b3b39383838393a373730404446 +373d2b2e46373f40373685dcd5c1cae9c26919343c42333649e3ffffecd4 +ddb26b24344036383d313f6767472e323c3d37363938383735343231392a +304b584b464c4b49474748494847444648474441414340403f3e3d3b3a39 +343335353432302d20769eb88ca6946c3425321979b7a1b598a3ab901641 +3c79e9d9cddfddd7db70333d62f9dab2b6d3d3efc7464452e7e59999807f +c3f27845373737393b3c3c3c3f3a373b38353a393d3c3b3a393939383737 +363738393b3c3c3d3e3d3c3c3d3e3a3842596460687f939f7f6a69606365 +493f35354d49403631312e281f2025201210325f5d3b34353a332a26211a +2e222b2d4364a7b5a6809fafb8b1929ca29882664d3c3146599dd9f4711f +2d2925222221242421202a30272125242127352a3b9ddcba3920171d1c10 +0e1b2025282c2b2c2e2e201010202925252d25272a261a1115202c2b2b2c +29272220100f2127201e24282d3432241514335963352f36343d454b453d +444995fffafff2f8f0d1ff9571463c45443c3f4a493e3d373b4649413e41 +43413e3d3d3d3d3c3a3d3f3e3a383a3b35333332323131303727486e2d2f +372a2829282f2c404726272d2a403f2f2a221123373330222a39362d2f40 +3843413f57ffc525364d3c4dffc32f573e3f493f3c3b3b3f414343414644 +403d3f3f3f3f423c41443d3c423f3e3b3c3d3d3c3d3b3b3c3a3b3b3c3c3a +3b3a3b3a3b3c3d3e3b323f41393a383a393a3c3e3e3d3c3b3c3b3a393b3c +3d403d3e37494d4f4048373953444c4d474695eee7d3ddfbd57a2540484e +42465bf6fffffff0f9ce893d41494041473a48707050373a4545403a3936 +36383b3b3938403137505849434a4c4a4848494a49484547494845424244 +3e3d3c3b3a3b3a39343638383a3836383590b9d3a7c2b18951414e3494d2 +bbd2bdc6c5a3214a478afff6effffef5f3864a5577ffedc4c6e4e5ffda5a +5763f6f3a5a48e8dd4ff8d5a494946454443403f433e3b3f3c393e3d4140 +3f3e3d3d3d3d3a3a39393a3d414245494a47433f3d3e3c3d48606f6d778f +a5b19179756a6c6e554a403fa49f9385807b736c6f73715f3d2f48693a1d +2a2d122213060b0c172c31383f6d969b8a627b888f876a7b867c654f433f +3f4e568abbcd370310121211100d0b0806030e130905090b2204070c0024 +545626150d131103020e1314141614151618120806131916141912161b18 +10080c131b1d1f1d1917191c120f0d0d0c17251c190d1a1d000017274013 +151810151014180f130e1c712b150c0e0f0a6c22312c01080b040815180d +0f0a0e1a1d17151813100d0c0e0e0c0a0a0d0f0e0b0b0d0f0e0e0f0e0e0e +101003144479110e0b0a0d100b1010192b04070707182211130d24120e19 +150f0d0c16190f230b150e1b005ba0714d300e277074001c0c17200e0f0d +0c0e12110f0c0e1010100a0100000500020906060c0a0909090b0b0b0b0a +0b0a0a09090808080a090a0a0b0d10120e07130200130f0b0a0b0c0d0e0d +0c0c0e0c0d0d0d0e0f0f0c0d0b200d140a0a1c1016181d0c2511469391c4 +d9bfa6b1331b0e0b1117012c414f65819eb5c237020e0900082028321406 +00070d070a12090c0d0b0c0c0e0f0705152c2a120c17110f0d0c0d0e0d0c +07080909080706050b0809080605050408090c0d0c0b0a0a23b8916c6a82 +7fa4a03625119edc575a5a435fb4431b235ede393f4d5150d2b7104252e0 +925b596062a9e73d414eb1b4848c767f9be865101d1a161616161412120f +100f0f0d0e1c15141312121212121514131311110f0f151717161616191b +1615284752515b6b7f825f5568675f4e3923151077736b635f5e554d4d51 +53442a21416b4c353d3b1e2b1c1217151d2b25252255919f906985939a92 +76868d7f654e3e363041508cc3dc481420201f1f1f1f1e2024232e332721 +25243b1b1e20123666673421171d190b071116181b1c1c1d202014080817 +1f1c1c211a1e211e140a0c1521252826222022251b18161615202d26251b +28290c0924344d21262c262c2a3440393a333f8f4630272c2f2f944f615f +363f3d35374241363631354146403e413e3b383737373533313434333030 +323436363635353534342738669b33302a292c2f2d323440522b2e2e2b3c +4130312639231f2a26201f202c302b432d3b3443237fc1926c4f2c458f94 +1241323f4b393a3938393b3a3837393d41433f3b35333a2f323937373c3a +39393938383838373b3a3a39393838383a393737393b3c3e3b34402f2a40 +3c383738393a3b3a39393b3c3a3a3a393a3a37353348353c303242383d3f +44334c386db9b7eaffe5ccd85b433431373b254f616f85a1bcd3e05a3043 +3b2b3a525a64463832393e393b413536373738393b3c34324259563e3641 +3a383635363736353031323231302f313939373634333130343535363534 +312f3fd2a9847f9792b7b3493826b6f471736e5777cf5e38437dfc565b69 +6b6aebce24566dffb57e7d817fc6ff5e6b7de6e5a8aa929ab6ff7e293837 +36383b3d3d3b3b383938383637453e3d3c3b3b3b3b3b3d3d3c3b3b3b3b3a +403f3d3a38383a3c3834445e645d626e7d815c546769635b544537344e4c +4740404039313135392f1b163b684e3944462a3a2d2227242d3b3939386b +a8b8a883a0afb6ae8e9ca08e7156453b35485a9bd6f15c262d2925222221 +242424222d3229242828402126291c40706e3521191f1c0e0d1a1f232528 +27282c2b211414222b28272c25292d2a1f1618222d30312f2927272a201d +1d1d1e2938323328353518122d3c562c3037343a39414a45494553a7634d +4244443f9e5565623a44443c3d48473c3d363a464842404344413e3d3d3d +3b39383b3c3b38383a3a36353534343434342738679c34312c2b2e312e33 +343f512a2d2d2b3c4332332a3e2a2732302a2b2b393e37503948414f338f +d4a58164445da4a925513f495240403c3b3f41403e3d3f424546433d3737 +423a3e433e3c403c3b3b3d3d3e3e3e3d3f3e3e3d3d3c3c3a3c3b3a3a393b +3d3f3e3743322d433f3b3a3b3c3d3e3d3c3c3e3e3d3d3f3f40413e3d3b52 +3f463b3c4f444c4e53425d497ecccafdfff8e1e9674d3f3c444b35627686 +9cbad6edfc703d4942314159616b4d3f394045404247363536383b3e4041 +3937475c573d35403c3a3837383938373233343433323130363534333131 +302f333637383938363855edc5a09cb4b0d5d1675643d2ff8c91937a93e4 +6f465291ff76808e8e8bffed45778affcb918d908fd6ff6f7b8df6f4b6b5 +a0abc9ff943f4d4945444444433f3f3c3d3c3c3a3b494241403f3f3f3f3d +3c39383a393a3e4047494846424141413a374866706b748192936f647575 +6e645f514340a7a39b939190877d8388866d46334a6838211d0625728894 +672544871c314f64949a89647f898c816d7b806f5644414346495c89bbc9 +2c0a10121211100d0b0707020e1309050a0b0b061a210a0b1407120e121b +1b0c070b1313151512131416120e0b101715100f11131918130c10151011 +1212121216191810061216181d07170e233a2d180f061400131410160c1c +0d160f0724bbb8bfc6c8c0a0b1383131010508050811140d0f0f11161612 +12140f0c0a0b100f0c080b0b0c0d0e0f10100f0e0e0e0e0e11110508123f +00140c0c0c110a0b0e102c020703030f200e181109002379839a9e9ba885 +36120c220f09167dccc8d8c067075cbd2714161b0c0f110c0a0c0f0e0b0d +0f0b0806050c1d2f1504020705040704080809090c0c0d0d0f0c0c090808 +080809080808080b0e10091f4727050f090e0a0b0c0d0d0d0d0c0c0c0c0c +0e0e0e0f1413131e013f615f595f605d570207002e9f706c6e5a68b44600 +0d18110b17589fa8aaa0a69fb95300000b0a203e2b0b000b0d04030e1514 +1514120d0907080b001c30281207080a0a0706040605050309080a0a0b0a +0b090707070808080909050608090908080b00dc7a1d4036256ce9381400 +72cb6e60656472e67a137358dfa5a5b6c0c2ddb52a4a3cb8c2bec7c3c5c2 +ca3941436cc2cbc8c0d6b7cc63271d1813111314120e1413160d1112091a +1414131313141415131313141313141418181a191c1c1d1d1d1e38555856 +5d63667567666f6b664f382113117b787470706f665c606564513125416a +4a382f16307d93a174324c891422354d909e8f698692958b788386735442 +3b3a373c568bc3d83d1b20201f1f1f1f1e2025242e3327232827271f3338 +211f281a241e202926170e121a1b1d1f1e1f2222181111181e1e1c1b1d1f +22221912131b191d1e1e1f1f2326251d131f222429152920354c3d292018 +2612292c2a31293d3842392c47d9d3d9e0e4dfc1d7615e61363c3a36373e +3d363637393e403c3c3e3b37353639383531323231323334353537363535 +35353535292c346122362b2b2b302c2f3538542a2f2b2b3644323a302210 +378d97adb4b1bf9f52322d46352f3aa1ede9f7df85267bdc48383c43373a +3c373537383736383c3b3b3c3f485b6b4c38343937353835383839393939 +3a3a3c3c3939383838383938353536393a3c364c7454323c363b3738393a +3a3a3a393c3c3c3c3b3b3b3a3f3e3b4629678987808687877e2c302657c5 +9692927e8cd96c23313c352f3b7cc0c8cac0c4bdd7782b33403f55735d3d +323d3e35343f44413e3d3b3936373a3d324e60553e30303232302e2d2e2e +2d2c31313233333333333536363736363636313232323231302d13f49232 +5549367dfa4b271287e38677797887fe932e9074fac0bfd0dadaf5cc3c5e +54d6e5e1ebe5e5dfe75a68709ff1ebdfd7edcde2794038343235393c3a39 +3d3c3f363a3b32433d3d3c3c3c3d3d3e3c3c3c3d3d3d3d3d3f3f3d3c3a3a +3a3a3c3c546c6a62646567736567716d6a5c544537374e4d4b4a4d4e473d +404748391e183a694e403d25428fa7b487455f9e2b395067a9b9a986a3af +b2a68e96967f5f473f3d3a43609ad6ed512d2d2925222221242425232d32 +29252a2a2b243a4029283121261d212a281b161c2426282b2a2d2f2e2620 +1f252e2d2a292b2d312e27202229282b2a2a28282b2e2d251c282e303722 +372e43584a332a22321d36383942394c414b453e5bf1eef4fbfcf4d2e267 +61653a41413d3d44433a3b393b3e3f3a3a3d3e3d3b3c3f3e3b373939393a +3b3c3d3b3735343434343535292c356223372d2d2d322d2f343753292e2a +2a3544323b3227184098a2bbc2bfcfae60413c54423c4ab1fffcfff49d3b +90f05946494d3e41433d3b3d3e3d3c3e413f3e3e40485a6c53433d423e3a +3d393c3a3d3d3f3f403f41403e3d3c3c3c3c3d3a383836393b3d394f7757 +353f393e3a3b3c3d3d3d3d3c3e4040404040414146454550337193938f95 +98978f3c423869daaba7a894a4ec792e3d48433d4b8cd3dddfd7dcd5f18b +353946455b7964443944453c3b464c47423f3d3a39393b3e334f62583f32 +32343432302f30302f2e3333343535353532323030313333333330313134 +3433323628ffae4f7267549bff69452fa4ffa2969e9ba6ffa73fa289ffde +e2f5fffeffee628376f2fbf4fbf1f2edf76b7983b2fffaede7fde2f79056 +4d4944434444423f4140433a3e3f36474141404040414140383638393b3c +3f41444443424242423e3e3c57727470767a7c887a797e79756560514342 +aba7a19c9c9e968d929591744933466043221a15a2a3482079267cc64b27 +545f92978864818c8b7b7379765f483d3d444840648dc0c7280d10121211 +100d0b070500090f060207090a1a201004171e090a111c24211612131212 +13110e0f101315171412181d170f111216181813161b141010151b1d1915 +1e150e2417000d0e14170c152c2221462b1720111a260f221313121c004d +63bfd6dcd9bda3292f3f070305070a0e100f0e1315110c0d0e0e0b090a0e +1516120d0d0b0c0f141714110f0e0e0d0e0e12121b0b00050b201c160b11 +07060c092d00070101091c09170d091663b550302d3f4394a24726091423 +08c8c41a2fa6dcaa8de4390512140616140d0a0d0f0e0d1010090000000e +3254290f01030103060308090a0a0d0d0d0e0e0d0d0b0809090a0c0a0806 +07090c0d071d52360e0e02120b0b0c0c0c0d0d0d0c0c0c0c0d0d0d0e0e11 +121d159fd8aca7b7b5b1d4500315449e260201001fbbab02041d1b1f21a2 +ca60414156317fe00e001627262d1400060a090207131308181610080300 +04081627291304080c0a0f0c0b090b0a0a08090709080a09080607080808 +09090c0c0c0c0c0c0c0d0e110d74bbaaa4b7999fb64003212aa47c7a926f +6a817923614f9b8e2a6f7c545dcb445850828d1927862459a58a374d4175 +98a6b9dee0c257001b16100f1212100d1415180c191e0610121212121314 +15160f101112141515161c1c21252b2b28222a2b41504546565b5d6f7576 +685d634c2d1911147c7b77767a7c74696c716e5633233c6054382d24aeaf +542f893587ca45193d4c8f9c8d69889392827b8079624538373a39335e8f +c8d6391e20201f1f1f1f1e2023222b312521262727363b291d2e35201f25 +2e3630251d1d1c1e1f1f1e1f22231e1e1d1e242a271f21222325211c1d24 +242122272d2f2b273027203629101e212b2e232c4238375c412f3a2d3745 +30473e3f3c41206b7ed9f0f6f5dcc750586c393a3738393b3938363b3d39 +36373838373435393e3f3b3634323134393c393637363534353536363f2f +1b272d423b352a30292a3331552a312b2b3144303b2f28337ed067474456 +5daebd66472d3a492cece53b4ec5f8c6acff5a29383c31413c3532353736 +383d403a3634394f74946346363836363936393a3a3a3a3a3a3b3b3a3938 +38393a3b3d3b383635373839344a7f633b3b2f3f38383939393a3a3a3c3d +3d3d3c3c3c3a3a3d3c473fc9ffd3ccdcdad7f976293b6ac24a26230b3edb +cc26263f3c4042c3eb81626176519dff402d4d5e5d62472c373b38313642 +4035413f3d3834363c404e5d5c433131332f34343131313230302f2f2f30 +30312e2e34353535363636363636343434353433298ed5c2b9ccadb3ca54 +173642be9694a6837f968f3c7a6ab5a84387946b74e1576e6aa1b13e4daa +4476c2a95a766e9eb3bccef3f6d8701b3a3734353a3e3c3a3f3e41354247 +2f393b3b3b3b3c3d3e3f393a3b3c3c3d3d3c404041454847423f494a5e68 +5856616162747a7b6e656c5d4b3f373c4e4e4d4f55595147484f503c1e14 +33605c453e37c4c56c46a04c9de35f335a68acb9aa87a5b0ae9c9092886b +4c3c393b3c3a689edbeb4d302d2925222221242423212a30272328292b3a +423024363d2620242e36332a2326262a2b2c2b2e30322d2e2c2c343a372f +31323335322b2d3333313035393b35313a312c42371e2e303b3e333a5045 +44674e3b473b4757435747484853358399f4ffffffeed3575c6f40413e3f +3f413f3c383b3d38323334363a3a3b3f4445413c3b39393c4144413c3735 +3433343436363f2f1c282e433d372c322a2a323054282f292930432f3b31 +2d3b87db755756686ebfce78583d47563afaf64e63daffdcc1ff6b374546 +3848443d3a3d3f3e3e42443e3633374b7093674d3e403c3a3d393d3e3e3e +3f3f3f403e3d3c3b3c3d3f3f413f3a383537373a374f8468404034443d3d +3e3e3e3f3f3f4042424242424443434648534bd5ffe2deeeedeaff893e50 +7fda623e3c245af2dd32324b4b4f51d4fc9475768b66b5ff493050616066 +4b303c403e373c48463b4745423c38383d414f5f5f4736373a353a363433 +34343332323132323333312e2f2e2e2e31313232343433343435353c3ea7 +eedcd4e7c8cee56f32515cd7afafc9a69eb1a6508e7fccc361a9b68d96ff +7f958dbec7505ab65184d2bb6e8a83b2c4cadfffffed86304e4a44424647 +454045424539464b333d3f3f3f3f404142413736393b3e3f3f3f403e4042 +4648433d44445a6a5f637377788a8e8e7c707565564c4448aca8a29ea1a5 +a0989b9f98794d34445b38212819cb720008030882b0b826276992968664 +838d887778776c553e393d4148396b91c5c6270b10121211100d0b070702 +0b100804090a080b11131311100d0d1621211c161617090b090706050709 +151c1a171c262316131214181a171a1e2a201e2531322619181217392916 +5992908c3d0b2b325cced7c9d3bfbc993617141e0f13097082c7e6dfdedb +c44d423d0a02040a0d0c0e100f191b120b1014120a090c131c1e1a150f0c +0c11191c18130f0e0e0d0e0f12130c1519041b0909060f1309060f093102 +070001051a020e01060250cd747275838bc3ac111c081c0a0c5ddc560004 +1d93ccd6311216130f0f150d090d0f0f10150807070400031d3836160000 +00030a080a0a0b0b0d0d0d0e0f0f0d0d0c0c0c0c12100d0909090b0d1100 +0f03021909130b0b0b0c0c0d0d0b0b0c0c0d0e0d0d0c0e12111511aec049 +40413453e483002336e4a17a918574c0c6171f1e092102a0de567c797a7f +b3e23100273c190501080600050f0f04030b0707050100030c14331c0500 +030b0c0b0e0c0a09090a08070c0b0b0b0c0b09060d0a0a09090809090b0b +0a09090b0d1000338e00097400006f9e001f0dc1350071590044e84a7157 +b2910b69b93440cc84432464da2b31d872518ee0192c1c2c87c9d6a0916c +501a1b15100e1212110e0d10150c26341316101010111213151614141517 +1718191a212329333b3d342a32303e392229454f5555545a515056331d0f +0d157e7c79797e827d727479745a34243a5d49383a2ada810b1815188eb6 +b51b12598f9b8b698a948f7d7f7d6e543c333437392c6593cdd5381c2020 +1f1f1f1f1e2025242d322723282925282c2e2e2c2926252f37362f272525 +1719191917181a1c222827242c373428252425282724262b3b35333b4748 +3c2f2e282d4f3e2b6ea9aba95827454c76e8f1e5efdcddbc593e404a3938 +2a8f9ce1fef9f9fae674696a3c39363b3c3937393741433b353b3f3c3634 +373e4547433e363331363e413d38373635343536363730393b263d2b2825 +2e352d2d36315b2f342b2b2f422a352727206ee9908c8e9ca4dec9303d2c +42303081fd771b2339afe8f552363a39383a3d35313537373b42383a3d3f +3c455f7a714d373635383d3b3b3b3b3b3a3a3a3a3837363638393b3d4341 +3d39363737393e253c302f46364038383839393a3a3b3c3d3d3e3d3c3c3b +3a3e3b3f3bd8ea7063615776ffa71f4758ffc19aafa08fdce53941402a42 +23c1ff779d9a9a9fd3ff63395e73503c343b3731343e3c31303833333433 +353d48506f563b30323634313332302f2f302e2d3231313132312f2e3737 +37363635333335333231313133321b51aa14218c0b0884b3133927dd530a +856b0459fe60876ec8a7217ece4955e39a5d4388ff5259fc926da8fb384e +4150a2deedb7aa876c393e3a37383e41403d38393e354f5d3c3f3939393a +3b3c3e3f3d3d3e3e3d3d3c3c4142474f55544b44514e5952373b555b5f5f +5f675e6067494139373f4d4b4d4d565c574d4d54523e2015315c51484e3e +f19825312d31a8d0d0393176aeb9a987a7b0a993928b7a5c413535363c33 +6fa2e0ea4c2e2d2925222221242425232c3129252a2b292c33353533302b +252c3537332e2c2e2226262727272b2b323837353c49483c393837383834 +363b4d4844495555493c3b353b5d4f3c81bbbcb96935545983f5fef3fdec +eecf6d4f495345483da4b5fcfffffffff27b6e6d43403d42423e3d3b3941 +423731343838393a3d444b4d49443d3a393e4649453e3735343334353637 +30393c273e2c2a2730362d2c3530592c3128292d412934282e2a78f59e9d +a2b2baf3db424e3c4f3d3e8fff882f384fc5fdff634446423e40473f393d +3f3f41473c3d3d3d39415b7875543e3d3b3e413f403f3f3f3f3f3f3d3a39 +383a3b3e41424845413b3937383a412a4135344b3b453d3d3d3e3e3f3f3f +41424243434244434347474b47e4f87f77766b8affbd355d71ffdab3cbbd +acf4f7454d4c395132d0ff88b0adafb4e8ff6a3b6176533f383f3c363a44 +4237363e3c3c3c3a393e48506f573d343a3f3e3a39353332323331303534 +34343534322e3330302f31302f31333231313132343b2f69c22c3ba62623 +9fce2d5240f56b25a88f2576ff759c80ddbc3899eb6874ffbf8262a2ff63 +65ff9f7bb9ff4d675b66b3effdc9be9a814d514c4646494948433e3d4439 +556142433f3d3f3e414044433f3f42454645423d3c3a3b41484a433b4242 +504f3c4565717878757a6e6d71544d45434bafadadacaba8a39f9fa79971 +483163543b18280fc5724c9a903f883b9c8e4661979480707f8e83737c73 +61493c3c4144464a5a91bccf33001112110f0d0c0e0c04020c0e08070902 +060c0e090a11120d0b0f101e1b131c0e386d8b747c7268461e121130b9bf +c3903e00868413211a74d2d1bf8edad58928240049df503be07b75beb929 +4d23c3c98a6d5f4f6dd4650d101317180c7cb97168769c8c8524314c0e08 +070607090b0a0c1319180f090a0d0e0f0f0f161a171111151216140d100c +151412100e0d0e0e110f0e0f1316150f1107060e020e280e02010006120b +030807031290814e543b619d821407141817041d9f5f1850ada8b7a7210b +1312160a0f0e0c0c0d111314120e06000500002f1a0400000e0009070a05 +1207020f0f11091a190c1f020a0e090909090b0b0c0c0b090a0b0b0c0d0d +0c0a0a0c0a080a100a0b0c0c0b0b0c0d15201b140935c4cdb9dec2bcbe3e +062b0f74c5a5a6cab1ba6615011d111b1032aaaea9998d85766416303b1d +00000c0f0b0909090c0c090404050300010d202f1000000402030c0e160c +0a121208060e0a0c0e0c0a0b0f1206080a0a09080a0b090e0f0d0e141412 +0429e14328c96f1a79cc1a1b00aab03db2c0617dd499666687eaaab6e9c4 +d9eaaa3a1d25b5cab3e1dcc9ced73937144fc0db95d0dbb2b8201314150f +0e1f251512100e1115171411140e1d0f0f1f121a0f1c13161c212a1e2f32 +2a3c3f272a3433404838251b242f30472e3c40242a160e09060584848487 +88857e78788073522f1f5a564d323d20d4805aaaa15196429c8533529699 +8575849489787f755f4637363938373d5493c4de441121201e1d1c1e2125 +22242e3027262821252b2b26272e2d292729283630282f204a7f9e8a9189 +7f5b2e222241cbd4d7a45212989624322a85e7e7d5a5f1eca03f3b1760f6 +6751f69491ddd646693fdfe5a68a7c6e8ef789333c3f413d2d9bd38b8090 +b7aca74b5879403f393736363433343b4141393435373a3a3a3a3f43403a +383c373b393235313d3c383634333131343230313538342e332929342836 +523a2e2f2b323c352b2e2a2432ad9e696f557bb99e3328383e3d283ebe7e +346cc8c4d3c6422f37383f333736343435393e4142413c37433a3a71563e +3437452e3b393b3641362f3c3b3a2c3c3c32462d373d3838383938393838 +38393a3b3b3c3d3d3c3a3a3c3a383a403b3c3d3d3a3a3b3c414c453e335f +eef4d8fae0dade5e264d2f92e0bebddfc5d28536223e323c3153ced2cdbd +b0a8998b486a725437363e413c3a383838383533343637373b495e6d4e3c +3739323137363d312f37372d2b332f3133312f30343a3032343433323233 +3134353334373734274cff6344e5893493e6363915cad35bc9d27490e8ab +79799afebdc9fbd6ebffc359414ee0f5dbfffce2e4ed5152336fdbf5b0eb +f8d1db45393e413b3d5056443d39363a3d403c3a3c37453837483a423a44 +3b3b40434b3c4b4d4455563b3d4a516064533d32374142584252573e4636 +363532315150565a5e5d544f4f594f351911515557415034eb9a75c4bb69 +b05cb6a25171b6b9a393a1aea18c92826a4d3b3637383a445ea2d7f35823 +2e2924201f20272922232d2f29282a23282e312c2d34342d28282836332d +362a568dad98a299916e3e323253dfe9efbc6a2aaeaa36423a97fcfeeab7 +fffcb04d492570ff7966ffaaa6efe856774dedf3b49a8c80a1ff9f464748 +4d4d40b0eca49aa7ccbbb1525d7c4746403e3c3b3a35363b403d352d2e33 +3d404040454946403f433f43413a3d373f3c39373534333336343233373a +3731352b2b35293651392d2d2a313b342b2f302d3dbbae7c846c92cfb347 +39484b48364dd0904981ddd9e8da533d4341453941403c3c3d4144464644 +3c354036366f5742383b4a344240423b473c34413e3c2e3d3e354b333d43 +3e3e3e3d3b3939393b3d3e3f3f404141403e3e403e3c3e44404142424040 +43444a55514a3f6bfcffedfff8f2f5753f6648acfddcdcfee6ee9945314d +414b4264dee2ddcdc3bbac9a516e77593c3b45484341404041413e3b4044 +423e3f4a5d6c4d3c3a3f3c3e47424437353d3d3331393537393735363a3c +2e2e30303130313331353636373b3b3d3a62ff7a5cfda24dacff4e512de1 +e975e9f695aeffc18a88a8ffcbd8ffecffffe1765b62f1ffe7fffff6f9ff +6b6d4f88eeffc1feffe5ef584c4e4e4847575d4a443f3e4045464440443d +4d3e3f4e424a414e474b504f523c3f3a2b383a2229353949554a3d384657 +5a725b69694d514142423f3eafaeababaaa7a49fa4a494724a2f604f4524 +1c23e263002eac478e5129b8825e96937f717f8d8173786750403b3d4042 +484b5f8fb6d24903141413100d0a080502010f120806090304090a060a12 +120c080b0c1e1a131c0fc69b624c595ca0b909101b69c136458fcd6d8894 +050c16266c9db498be6e230f120c65e16e77eb7468ccb91a2313b7dba6a5 +a4949bdb5d001a16100815b5970d15d4ae8ec6a0245909060808080a0d0e +0d0f11110d0b0b0b0a0d0d0b0e100e090f10101717121617141312100e0d +0f0e100f11151919140d1007060d010c240f01030008120d04080e05005b +9f8e77909c915b0518140e111659de53178dd8546dca651f1a1b150d100f +0d0d0e1112140b0a05000800002d2d0200010b0005050706110c0c130c18 +1a1c170c19120a0c0a0a0a0a0c0d0e0d0a0a0a0a0a0a0a090b08090c0c0b +10160c0b0a0b0e0f0e0f16151b251a1caa7d227cc7c5ce761a2b169ac13c +47ddb0abd35202161c240f11180b06070200010e392b1b0c040304030405 +0608090a0b08000906000a2528171000000506090b07080a0d0d0f0f1110 +0807070608090c0c090a0c0c0a0a0b0c0a0d0d0a0b0e0e0b130fabafb2e7 +c0baaebc260f005899999dc09f8fae8f507f447e7a818a6e768fc95b3d1f +373a3a3c413c4fb5985e3353c87b239bd9accb9805080f100d1516081316 +141213161714211819110d0d0810081d191613192a251c54696d7175817c +796f352318381f1003171f24241d1a1227282a2c8485858788857d787a7d +6e50311f5753593e3135f2730240be599c5829af6f4f9598847685918676 +7a674d3b35343636393e5991bee15a142422201e1c1c1b1d20232f322725 +282223282723272f2f2926282938332a3023d9b177637075b9cf1c212e7e +d64c5ba7e2839ea91a1f273982b5cdb1d7883d292c267ffa8790ff8e87ed +d8394030d3f7c3c2c3b3bbfe812246433b2e36d4b3272feecaaeebc74d86 +3b3d3a3937373637353739393735353536383836373937323637353c3c37 +3b3c3c3b383634333231333233373b3b332c322a29332936503b2f2f2c32 +3c352c2e3127167bbcaa91aab8ad7a263c3a34373a7afd7233a9f36f89e7 +85413f423e363837353536393d413b3b3b38443e3c6d693c3a3b42313737 +38354039393f383e3839352b3c39323839393939393a3a3a3a3a3a3a3a3a +3a393b38393c3c3b40463d3c3b3c3d3e3d3b4241454f4446d4a23e96e3e1 +ec963a4b34b8dc535cedc0beef7323373d4530353c302a2c271f26386b62 +52433b3836353436353738393738343e3c36456164534c39343736373933 +2e313234343636372d2e2c2d2d30313331343636343233343033322f2e31 +312d3833ced2d2ffdcd6cada442f227cbdb9b4d3b2a0bfa06090568e8a90 +997c83a0e47c624963666461605563c9ad754e71e49a42bcfcd1f1c13033 +3d3f3c4647373e3e3c3a3b3e3f3c494041393535303832443e393336453f +336b7f828385908d928c513e315136261b313a4244403f3c55585a5c4f51 +54575b58524d50544a341b104e52624b4249ff8a1b58d671b67243ca8d6e +b4b6a2939faa9c8989735641393535363c4563a0d1f66e26312b26211f1e +212120222e3129272a24262b2d292d35352d262627393730392ee7bf8875 +8289cfe42d313f91eb6373bffd9bb5be2d30374a99cde3c5eb994e383b37 +90ff9ba6ffa59bffea4b503ee1ffd3d2d5c7d0ff99345149443b49e9cb40 +48ffdfbdf4cc4f89424441403d3d3c3b3737393833313133393e3e3c3d3f +3d383d3e3d44443f43423e3b393735343433353435393d3d362f342c2b34 +29354f3a2d2e2b313b352c313730238acebfa8c1d0c38f394c473f424689 +ff8448beff849ef9944d4849443c403f3d3d3e4143463f3f3b37423a386c +6a403e3f47373e3e3f3d463f3e423b3f3837352e403e3a414141413f3e3d +3d3d3e3e3e3e3e3e3e3d3f3c3d40403f444a41414041434445444b4a515b +5052e0b253adfbf9ffad53644ed2f9727bffe2dcff8234464e5641454c40 +3a3c3931384674675948423e3f3c3e3d3f3f42414242414c483f49626451 +4a3a373e4246494037363a393c3b3e3c3533343235353938313234343332 +353633363835343737374a49e4e8e9fff4eee2f25c463892d3d2d3f4d2bc +d9b46f985a8e8a93a08793b2f78f745970737271746b7ce4ca946b8bf9ac +54cfffe4ffd341434a49444b4c3d4548464445484946534a4b433f3f3a42 +3e55514f4a484e3c214e595759606f6d726d382d2b55443b354c555c5953 +4f4862646668afadababa8a5a29ea6a390714a2b5c4f23221e20cda64349 +bc32a7510069715a96907d73818a7e707257403a3e3f3f4347486189acd6 +69001314141413110e090203111509050906040705020914130a09090b1e +1d12190b8f9089908f799b7c0e1d0141b421000049a3be8603220d071510 +3470b0520e0d1910158bb5abaea5a7a04f06270474d2cdcfc7c1b8b84211 +080c17172adb971283dd0900b0c6096801040a0b090b1012110e0b0b0d0f +0e0d0e12130e0d0e0d0a110d1114130f1016141212100e0e0f0f110f1014 +1716130f0e08060b020920120203020814100809051900187ab49fa7b38f +6309200a11210463e3785fd5be0045cf6c000a130a120f0e0c0c0f111214 +0b0809030901002442000706090204090c0c0f080f0e06271e1e28212030 +100f0c0a0b0b0c0c0f0f0b0b0a0a090807070a080a0e0f0f131a110f0d0f +15171615141c1e121b3edd7b30bbb11c91d8492126b1dd6d82ca263de979 +16170c091216120f100d05062341371300010a05030507080a0907050504 +110000182d29130407040b0c0201090b0c191c0f0c1010070e0b0a090c0c +0c0c0f1011100e0d0d0d171918131314130e09001c3a2a261a1e26745505 +08000c0000090b0166d16c764628312a2e4c6188ee854b3c272948555f61 +55bac73b1b3ccc9f567c7c5aa8d4150d0c0900060f0e080f1210131b201e +1d160e1f241b262e2b3229323e46585590d6f0edeef9fcf3f4e7af9396a8 +9a9cb99bada199a094aeb4b4b2ad8685868786837c787d796a52341e5553 +373e3536deb7535bce43b357005f5d4a95978478878f817171553b343535 +3537383b5b8bb4e57a1023222122222321211e232f33272327242124221f +263130272727293a362b3021a5a59ea6a894b59523301456ca390d1a61bb +d69c1835201c2e2a4e8bcb6d2928342b30a6d0c5c8c1c8c37027472491ef +eaece6e0d8db66373339423d4dfab32c9df9281dd6ef3798363b3c3c3838 +393b38363333373938373a3d3e3936373633383436393834353b3c3a3836 +34343232343231353837322e2f2b29312a324c3e2e2f2b303c362b2c263a +193595cfb9c1cfab822a443037472885ff987cf0d90f60ec8c222f3a333b +3a393737383a3d3f38383c39433d3a627e353e3d3e3736393b3b3c333a37 +2f4b37323e3b3d51363a38393a3a3b3b3c3c3b3a3939383736363937393d +3e3e424a413f3d3f424443403f47463a4366ffa14cd5cd38aff8694446cf +f88595da334eff9d393b2f2c353b373635342c2d4a6c69482f363e3a3537 +393a3a39373533364a3a395167614b3b3e383d3d312f3739344242383239 +363034343032323532333638393836333232393b3a35333433302e1e415d +4a46393d459374252b1d3122171c1e1276e17a8453343e363a576b95ffa2 +6d625255727a7d7b6acfde54395cecc279a1a283d3ff433b3a382f333c3b +30373a383b434846453e36474c434e5552584d51595f6f6aa2e8fffcfdff +fffffffec7abaec0b5b7d7bad0c8c3cec4dfe5e5e3de5051525758554f4b +515146351d0e4d543e494344f0cb6a71e457c96d13777865b4b4a1959fa5 +94837f604238383634373b42659ac7fa8e22302b2725252527251f222f33 +29252926252828252c37362b2725293b3a30382cb3b6b1bbbea9ccab343f +2569e15127337dd5eeb32b462f2d444165a0e0803a39453c43bbe5dcdfd7 +dbd6813856339ffdfafcf8f4edf17e4a3c3f4b4a60ffcb45b4ff3a29dff3 +37983a4043433e3e3f3f3d383533363736363d43443f3c3d3c393f3b3e41 +403c3d413e3c3b39373736363836363a3d3c3733342f2d342c344d3f2f30 +2d323e392f302d432745a8e4d0dae7c1973b523b40503491ffa78effee24 +73fe9b2e38413941403f3d3d3e4043453d3c3f3b443d39617f374342463f +3f434543423a403b334b34303c3c41583f4343434442434141413f403f3f +3e3d3c3c3f3d3f434444484e4543414347494947464e50444d70ffae61ec +e34ec7ff805a5fe9ffa1b5fb556cffad4c4b423f484d494747453d3e5b7c +74503a3e4942404044434643433f4041554541586960483639363e423b3c +46483e484b3e3b3f3f363d3a39383b3b3b3a3b3a3b3a383638384244433e +3e3f3e3c403154715f5b4e525aa8893a3f304438323a3c2c8ff183844a26 +2d2830536c9bffaa766b5b60828d959689eefd725575ffd58cb4b597e6ff +534a4742373941403a434644474f5452514a4253584f5a64636d676d7675 +77638ac2cfc5c6d3dcd5dad4a593a1c0c0ccf1d7eee5dce5d8eef3f3f1ec +adabaaa8a6a3a09ea8a3927349285b523b30270a65b4c1b05c0070272125 +4772978e7d768388786d644b3a3e4441424a45405d80a5d5860013151616 +15110d080304131609030807060602000814120809080a1e1b1014065762 +70605a5f7036001514249d8b94846c918f3e0329177589939c8ca9b3932a +1a00288fa3b3bbb3b1c36911160c4ea69fc7d2d1d0a4210c211510000299 +c4becca80b20a677006000040c0d0a0a101315120d0c0d0f111111161712 +0f0f0f0e17121b191718151f121211100f0e1010130e0c0e100f11100b08 +030902061d160206030817140a0b060516628250211f419fc51d050a1b00 +0a0978b5bcc37f4576c253001d1e0d16100f0e0d10121413100c0c060701 +001851000706070a070e0d100c030d0a0e498f777e776c80320a0d0a0a0b +0c0d0f0d0b0b0b0a0a0909090a0a0d11110f11160a0a0d0e101212131e11 +20331f13afcdbfe083008ac12b241a5cc6c7d0b516379d4e02111a1a2202 +0f14120b142c3833180300070d04030b0002060708070a09000016323217 +0a100d0b13130a0b13141724261a1112100b0c0d0d0c0908090a0e101110 +0f0d0d0d0a0d0f0e1217191508160005000e1500007b9d05180927293636 +4b3f7be16a71927facbecbe2cdd1edce510a1a7bb5aeaec1aee3d743222c +74abbbc8c6b8c7c08f7f7a76696670767f8689888d959792aea799bac6b4 +c3c5cdd1cddcd4bec8d1d4f4f7fcfff9faf0f5edf1c6c1706671713b7a87 +6f540c19221d16148686868784817b787d796c54331a5458534f422278c5 +d4c36f0c7d2c1e1731629795847c888a796c624833353937363b35335782 +ade4970923232324242320201f222f342721262523231f1d25312f252928 +283c37292a1c6c798679747b8c50142b293ab6a3ae9e86aba757193e2a8a +a1adb6a6c4ceae45351b43aabdcdd5cfd1e68a3236296bc3bae4eff0efc4 +43314c40382526b8e0dae8c72c46cea42794353b3e3e3937393c3c393433 +36383a3a3c41423d383838373e39403e3c3d3a44393a3736353433333631 +2d2f313030312e2e29312b2f49422e2f2b2e3a372b2a2423347d9d6a3b39 +5bbbe441293044262f2b98d2d7de9a6091df701c3f43343f3c3b3a38393b +3d3e3b393d393c3b35548b2d3e3d3c3c373d3c3c372c363134689f838d8b +849d54303738383a3b3c3c3c3a3a3a393938383839393c40403e40463a3a +3a3b3d3d3d3e4939485b473bd5f1defca219ade54f483e7ee4e1e5c5254a +bc7125343d3f4729363e3c353e57636149372f3b3e36343d303437393839 +3a3d373b506a664a393e3a383d3f35374142424c4e42393a383334353534 +3130313235373837343232322c2f3130323739362b3b1c281d2d31180e97 +bc25382c4c49504b5f4f8aef757b9b88b5c5d1e7d1d8fce46e2c3fa3dcd2 +cddbc6fdf462465298d1e1f1efe3f2ebbaaaa4a1918d979da7adb0afb4bc +beb9d5cec0e1eddbeaecf4f5eff9edd3d9e1e3fffffffffffff8fffeffd6 +d3847e8c905da2b4a08a445257514a484f51525456534e4b524f47371e0d +4e5857544b2c87d5e5d4801e8e3f332e487cb3b1a0969e9f8b7c6f533b3a +3d38383e383a6191c0f9ab1b302c29272725262420223034292328272727 +25232b3735292825283e3b3035297d8b9b8f8b93a46725393a4fccbdc9b9 +a1c6c16d2e4f399bb9c6cfbdd9e3c156462e58bfd4e4eee7e6f99b434539 +79d1cbf4ffffffdb5c445546423236ccf6f2fedb3d51d6a7279239404545 +3f3d3f42433e3938383a3c3c424748433e3e3e3d454048464445424a3e3c +3a39383737373a3532343635353632312c332d314a432f312d313e3b302f +2c2d3f8eb081545274d1f95137394a2d3837a7e2eaf1af75a4f18028494b +39433f3e3d3e3f414344413e413c403d37558d2f43424445414746454032 +3c36376a9c7f8a8c88a55e3d45454544454442424040403f3f3e3e3e3f3f +42464644464a3c3c3d3e42434345504150655145e0fff2ffb72ec1fb655e +5697fefcffe64668d184394751515a3a474e4c454e67737057423d464c41 +42483e3f4544464448484243546b6445313433313b403b404e4f4b56584c +4344423d3e3f3f3e3b3a3b3a3c3e3f3e3c3a3b3b383b3d3c414648473e4e +303c3242472e24add13a4d405f5e69667a689ffc7973886b96a6b7d3c3d0 +f7e16c2e47afedeaeafce8ffff7e5e67aee6f6fffff6fffecbbab2aa9994 +9ca4b3bec1c0c5cdcfcae6dfd1f2feecfbfdffffffffffe8e1d7c4d3c8c7 +cac6cec7cdcad8b9c38288a1ad80c5d5bea65d66675e5755aaa9aaa7a4a1 +a09fa6a6947246265d562710191415170d000301190e29383778988a7c78 +8481706552433e454641444e453a5777a3d1a30115171715110c0a070b07 +14180b0408090b0a0501081210060802051c1c0e13065a6aafc4d4d3b571 +250019025287c4d3dabcb13f021802174790d2dac6a57e1c181d071543a9 +ddddaf954012290f2e96bbe7d38369580f271213221c020b2b2f2c0e0001 +1500077602070f0f0b0a0e11161513100d0e12160d12130e0c0d0e0e0b09 +1a100e18111b1111110f0f0f1111110d0f14140f0e0e0a0b040904041b1d +0508040918190e0b0b08005dab91a7bac4cfc62212141f101909a6dac4c1 +d9d4d9d76411201610121110100f11121314150d1007060501135b000705 +080a070d050b0d060e0a155bce9f969997b755000e0b0a0a0b0b0c0c0b0a +0a0b0b0c0c0c0b0b0f13120c0b0f111418171416181c2814203d290c367e +74300a0031310b2c4130653006141b120913171c0a0224120b06000c3046 +30050e0e110f0a0303061111100b080202000028443218151918261b1814 +0c0d0e040a0e13130f0b0d12070c0f0e09070b1104080a0c0e0e0f111213 +110a0908050000131e678ea29e9392c2a907131867c4bbb9d0d3c0d482a8 +ecf9fff2f8fffcfffceca8b4adb5c3ccc6c9b4c7c8bfc9c8c7d3c8c2bfb3 +b2b3d1c8cfd6c7babab8ada69d91867b6d6260563d4b4524221626201619 +0b1576d2e8faf6fefffdfffdf0efffd9bb4921120e006d9c918d49422b1b +0a0485868686827f7c797b7c7155311a585f4132362d292b1f0d15112511 +222920669894837e89846f634f3d343a3b35353f352d5179abe0b4122525 +2423201e1d1f25232e34272024252726201c252f2d232724243a38292b1e +7181c5dceeeed08d3c112e186b9fdeeef5d6c958182f182c5fa8eaf2dfbe +97353136202e5bc1f5f7cfb86131462c4ab2d5ffee9f85762d4a3a3e4a42 +262c4a4e4b2f1b29422e3bad3a3e42403a3736393c3c3a3736373b3f383d +3e393536373732303f35333d364038393735353534343430303535302d2f +2d312a312d2d44462e302a2c39382b2828241577c4a9bfd4deebe546363a +48393b29c3f7dfdcf2edf4f48133423b373b3d3e3c3b3a3b3c3d3d383d36 +373a364a92303c3a3a3c373b3136352d332f3875d9a19fa5aad073233536 +383839393b3b3a3b3b3c3c3d3d3d3c3c4044433d3c3f3e424443403f4145 +513b47634f325ba298532f1b5b5c395a6c59895020292e2729383b412e28 +4a3b34312b375b745e343d3f4040393434374242413f3936333335627a65 +453d3d3a463b39373336393034383d3d3935373c31363938333135392a2c +2e302f2f3032313230292524211e1f333d86a8bcb6abaadac3232f3787e3 +d5cfe4e3cdde8baff1fefff5fbfffcfffff7b8cacad7e6eee7e7d5eaefec +f9f7f0f9edeae7dcdbdcf7edf3f8e8d9d6d6d1ccc3b7aca19388867c6371 +6b4a483d4c453634202683def2fffcfffffefffdf4f4ffe0c758332a2b1b +97ccc7c5867e64533f394e50525354514c4a4e524b371c0e545e40333a32 +34362d1b23203320343c347cb0ad9d969d977f715a473d403f393a423834 +5b88bef5c824322e2a262320232326242f352a2327282b2a27232b353327 +2923263c3c30352a8193dcf4ffffeba34c1f3f2d81b9f9fffff1e36e2d3f +263d77c2fffff5d4ab49454a364473dbffffe4cb7243563c58c0e6ffffb4 +9b8e475e4444544f363f5f6360422b33472f39aa3b414645403d3e414543 +413e3c3d41453e43443f3b3c3d3d3937473d3b453e463d3b3a3838383838 +3834353a3a35323431342d332f2f464830322d303e3d312e302f2188d8c1 +d9eff7fffa5642434c3d4536d3fff2efffffffff913f4c433c3f3e3e3d3e +3e3f4243453f433c3e403c4f95334240434543483c3f3f343b353c76d59c +9ca5aed77e31444647474846454340404041414242424141454948424143 +414245444343454b57424e6c583b64aea866412c6b6d496a7f6d9f673b46 +4c44404b5154443b5f4d46423c486c846e444d4d504e494243455150504c +4843423e3c647a603e322f2a392e3033323a403940444949454143483d42 +45443f3d414535383a3c3e3e3f414344423b3a3936323448529bbfd3cec3 +c2f2da39454c9cf8ece7fdfadee8889fd1d5d5c6d0dee0ecefe9aec7cee3 +fafffffff8fffffffffffffffffffff2f1f0fffdfffff1dedadee1dfd6ca +bfb4a69b998f76847e5d5b4e59554d4f3b3a89d0cfcebcbec6c2cbcbb9ba +d6beb3533f424b41bff4ebe8a59875604d47a6a6a7a5a2a0a1a1a4a6946c +412962573124151928160d280d1d102122324484978678778179635b4540 +41464540444c493a516e9fc5be250d13181815161e24160d131a0f050809 +0d0d0904081211090700011a1d0f150a3b66a8b8c6bfa565031a7a3f6599 +c7e4c8b09b502b1026598cc4ccbcbdc1981c0e1127a0c6b9b9a8acb07d1b +17165fd9ddb6c6b6c7c13c001c131617230e1c091b171b1b00050758070a +0e0e0b0b0e1015171716121316190d11110c0c0f100f13162b110a1b0b0e +1010100f0f0f12120d0d16201f130d0a0a0d040906031922060b07091b1d +110a1214057ea90a28b8703b42051e0e04171d14cb761b3fcda328452a02 +14151e111311111112131414140c1109050c08105d0907020906070a050a +120b0a01053cb591948d88ad7928100d0c0a0a0a0a0a0a0a0b0b0c0d0e0e +0d0d0f12110c0c111416171615131416131e282d2e350f30080013295c5b +4025205e66090d19300f170f11091327452a0b0d1b2f372a13020b0f0e05 +060d0c0403020001030402002420212b404f54525b5f60481e0d0e0c0808 +0c10100d1118161a1f1e1b1a1d223135383a3d3e40424b5259606c787f80 +837887c0dad5c3c3b1b6c0a8d2b8a1c3b9b1a2a09dd3c8cdf5fffff6ffff +f5f6fafff1df856f7f6a768081734b5c3f1a161006080300173000000209 +010000000000000000000003000100080f111c1a131b212e1b0d4786c6f8 +fffffffffffff4fff8d990633c2b160f64765a6e5a37402c130783858685 +827e7d7b7b7f704f2c1f5e614e4733323f2a1f3a1f2e1a231a20296e9891 +807d867a62573f39373b3834353d392d4b70a7d4cf361d21252624283139 +2e272d34282124252929241f252f2e2626202039382a2d21527cc0d2e0da +c3811a3091557eb3e2ffe3cbb56941273c6ea2dce4d4d5dab135272a40b9 +ded1d1c2cbd19c38343179f3f7d0dfd1e1dd5720443e3c3d442f3b283b3a +4247313c40933f41413f3a3836383b3d3d3c3a3b3e41383c3c3735383938 +3a3d50362f40303337383635353535353030374140342c2b2d352c312f2c +424b2e312a2a38382c252d2f1f98bf2240d08a576129443730403f34e893 +365ae6bc43624724363a453a3f3f3d3d3b3c3b3b3c343c35343c3a459241 +3c373b3635362f3238302c242654ba8e959696c195493738373838383839 +3b3b3c3c3d3e3f3f3e3e4043423d3d41414243423e3c3d3f3a454f54535a +34542f263e578c8c7459518d8f2d2d3448293733352f39506e55363b495d +655942313a3e3c34353c3b3534333335373836355e59545966706f697074 +78633e3136373232363a3a373b42404449484544474956595c5e5e5f6163 +6a71787f88949b9c9f94a1d8f0ebd7d7c5cad6beead2bddfd4c7b6b1aadc +cfd1f7fffff8fffff2f2f5fff5ec9a8b9d8b96a3a79e7a937d5443352b30 +28223c56231a1f23190f0f0e1411141e222123292127242e353742413940 +40492f1d528fccfdffffffffffffeffef5d793694a3f30328fa691a99876 +7a664b3c4b4f515253504d4c4d544c3119155b604a433336453129442938 +243029303c83ada79793998c72654b4140433f383a423c34557fbae9e348 +2a2a2b29272a373e30282e352c2427282d2d2b262b35342a281f223b3f33 +392f6491d8ebfbf5df992a3ea16a94ccfdffffe6ce7f56374a7fbaf8feec +edf0c5493b3e56cff8ebeddbe0e2ae48444288ffffe1f3e6f8f572354e44 +474a5542503d504d515035393a8f40444544403e3e404446464544434849 +3e42423d3b3e3f3e4144583e374838393c3a39383838393934343c464539 +313031372e33312e444d30342e2f3e3f332c363a2ca9d43a5aeca36d7539 +4f3d31444941f8a3496dfad05672572e40424a3c3e3d3c3e3d404242443c +453e3c46434d9642403d444042433d3e433935282b54b487909599c8a058 +46484848484745434240414142434444434345484742424544434443403e +41433f4c565b5b633d603e364e669a9a8267629fa343464f644450494d44 +4e648268494b596d756952414a4e4c44454c4b44434241434546443f5f53 +4d4f595f5c555d636a5a392f363d3e404448484549504e52575653525558 +66696c6e6f7274767e868d949eacb3b2b5aab8f0fffff0f0dee3eed6ffe9 +d3f4e9dccec5bae1c7b8cfd1c8b9cdd0c9cfd8ebe6e39d97b5aabccbccc0 +94a78c625a50464a433c566b372b2f302316151627262b3339363a3e383c +3b434c4c59524249525e472d547ea6c5c4babcc8d3d1afbec0b07e655558 +535cbcd4bad1bf958e72584aa2a4a5a4a19fa1a4a6a78e5f3c3166522322 +1712221713172315272f35295ea8968173747c6f564f404143424245474a +4c3c4a6195b1d559050f1718171e2f3e1f12131a11090b0b0d110c060a13 +160f0f03031b1e0f150a788a6d768d768a530017462d9e8a506a7d9a952f +111a10399a333398988b8413131e0a8f81033fb5ba9d871f20095cda6c41 +cacfa1c775162a160f071c221913181a11090001006a080a0c0c0b0d1011 +18181a1d2021201f1415120e1114141025314921162f18130f0f0f0f0f10 +1313100f16211f130e0e0810060808031828070b080a1c21150d060e0463 +d7a39fcab9cbdc52181a121a1600cfe9b4a0ebdbcbd49023130e211f1312 +121213131414140b160e09100b0a571b05000e040b090f09140f06040625 +856c715c47646417140f0f0c0a0a0a0a0b0b0b0b0b0b0b0c0f0c0c0e0e0f +151d1f1c17161919140f0e0d2d453316206a2c0d00003a4223101e643a00 +1a131427160c230600113f4b05223f3d1f04020f0a0d0e0c141c1c16191a +1f2d414f5555965d5296d7e2e2f2e7f2f7d9a58b8b889497969192999c99 +bbb9b6b6b7b5b0adb4b6b8b7b3b0b1b19b9c9b938e8c88847d68635d594e +5144513e3634535025131824261b2785d2e4f9fdf3f2fffffcfafff6e5c9 +5e0c000d98a5a48750453528332b140e102c51472b232529252c342c3323 +22271e0f162c444d4b230a13191f262a212628253941aaeffff6f2fdffff +fffffbe28673574121174e7e6d716c201e170d0881838684817d7d7e7d80 +6a442927655e4047372f3a2c262a342430322b154291948c7b7b8171554b +3a3a39373536383b3c2f44639dc0e66a151d242626304253372a2b322922 +2424262a2721252e312c2e25223a392a2d218fa08590a791a76f0f2d5d44 +b7a46b8598b5af482831264eb04848aeaea19a29293420a5961854cfd9be +a63c3b2376f18358e0e8bbe391375241352d3d433832383f3b382f3938a7 +42413f3d3a3a38393e3e4043484948473f403d393a3d3d394c586e463b54 +3d3836373535353636363332374240342d2f2e382e31312c40502d312929 +373a2c241e261b7aecb9b4e2d3e7fb763e433e433820ecffcfbbfff4e6f1 +ad45353348483f403f3e3c3c3b3b3a333e38353e393a8c513a3440343935 +393138312825253a86656e5e52777f37393a3a39393938383c3c3c3c3c3c +3c3d403d3d3f3f40464c4b46414041413c373432526a56384290563b2d2e +737d5d4a56996918403632453832482f273a68752f4f6c6c4e35333e373a +3939414b4b454a4b526276848a8bce9282bff6f9f4fef1feffeec1acafb1 +bfc2c1bcbdc4c7c4e6e4e1e1e2e0dbd7d9d9d9d8d4d0d0d0babab7afaaa7 +a3a0958179716b606154614e484667663e2c333e3b2c338fd8e7fbfdf3f2 +fffff6f1f6e8decc6c221c2bb9ccd0b98a887f6a614e3733334f75694a3e +3c3c36393f3d5249474d43353b52697370492f393e464e4d3f403a334145 +acf0fff3edf6fff4f4fbeed981745f51393876aea3aeab605b5145404b4d +5051524f4d4f51554627181d615c3b40342d3c2f2c313c2b373b362151a3 +aaa2908e948063594642423f3c3d3f403f364e72b0d5fa7c22262a292932 +4858392c2d342d2628282b2f2e282c3538303024243c4033392fa1b59da9 +c2aec5871f3b6d56cdbd86a2b5d0c85e3a41345fc86563c6c6b8af3e3e49 +37bcb13371e8edcfb84c4c3285ff936af5fed2f9a94a5c47403a4e564d47 +4d514940323632a0434443424040424349494b4e545354514646433f4043 +433f535f764e435c453e3b39383838393a3a37363c4745393234313a3033 +332e425230342e2e3e41342c2832298affd1cffeecfdff8447473d45422d +faffe2cefffff9ffbd4f3f3b4d4a3e3d3c3d3e3e4042433b4844404b4644 +90533e3a493e4642473d443b312a2a3b805d695d547e8a464b4b4d4c4b49 +474543434343434343444744444646474d524c45403f41413e3937385870 +5c414b99624838397c85685563a77929554c4a5f514962453d507e8b4562 +7f7e604644504a4d4c4c545d5d575b5c637286949a95cb8876afe4e5dce6 +d9e8f4dfb5a5abb3c8d2d1cccdd4d7d4f6f4f1f1f2f0ebe7ebececebe7e5 +e5e5cfd2cfc7c2c2beb8ad97908983787a6d7a67605e7f7d5442464f503e +3f91cac8cabfadaac3c8c2c6d4cdcbc16d2f344de2f7f7daa2998876796c +5550516b8f825f514c4a40424547666061645d4c5569838a8a6049505857 +504f494f4e40433485b7bfacadbfd4c4b3b8b7b06b6f6a6b5f65a7dfd2da +d683705f544fa0a3a4a3a09fa3a5a7a687573937694a33101c2518173c2e +3325313039475695917f70727a6a4f474447454042474a474a3c45558aa4 +e27f091218140f14283a26131118120b0c0c0d1110080a1318131a0b081e +1d0b0e04b06d004aa077b18f301d0f40d23100aab16fbf89171913939f01 +47d06c70d05f130a42d34f0cb3b22696dc260c2896d99841bd732bd4bb01 +160d1d161026072a0f111800140a04610c0a090a0e1012131d1c1d242d30 +2b231615100d1115140e0d1f3d120a2d160e0f0f0f0e0e1011141912141a +150d0d150a13080b0c04192d090e080a1b1f1209160507082b242b212c2f +541508200d17200358948e91747e718a5a0b231f1b151716151414131312 +150d1b150e140d0552270601170915111908110f0c171c307851493a4369 +7c181513110e0c0b0a0a0c0c0b0a0a090808100c090b0f15202e524a4043 +4a4c423730171c272a1c41502a0b2b172a58552c4a463f3b3f4754555745 +7165676b7d8b87aec0a88f8d928f9da6aeb5b7b4b4b6b6b1aeb6c2c8c6c2 +dab8b6def1edeafafef5efe8ddd5c3a36e7876666a7c7f7042382e2c312e +2319232320191008060406090703010100000100080808001907080c160b +030d15171c0e272a123188c5fff2fffffffffaffffffcd6c46291226687c +81816a382b2b6d6c4e2d0612402e1b1a2228282d2d1b3f2c2a2f1f09193c +a7ada24a0f13101a0e1e181b2d4a645cb7f1fffafcfffffffffdffffd69d +74412b03238a938076150b0b0c0a7f828483807d7d7f7e7f653c282e6958 +52353c3f2d2949393c2c342d2d353e82928777777d694d443c3d3a35353a +3d3a3e313f5791aff18f171f25221e263c4f3e2d2a312a232323242a2924 +263035323a2d273d3a28291eca860f62ba91caa74733265aeb4c0bc6cd8b +d9a22e3029a8b3155be68286e675292058e96320c7c841b3f9422742b0f3 +b25dd78e46f0d7213c36433c3447284b3339432f47413d9c44403c3b3b3b +3a394340414a5358534d42413c38393d3b353244623731543c3536373536 +353536373a333339362e2e382d392e3131293e502b312928383c2e243121 +2122453d433b464b73372d48373f452578b4adb0919b90aa7a2d46423e3c +40403f3e3d3c3c3a3d34423c353e332f8156353043333e373e2d3533303c +414c82534f45547f98393c3c3c3b393838383c3c3b3a3a393838403b383b +3c434e587a6e64646b6b61564e363d4a4c406777553b5b485b8989607e77 +6d666467707175659488878ba0aeacd4e9d6bebec3bec5cad2dbdddddddf +e1dcdce4f0f6f4eeffe3dcfdfffdf4fffffaf8f5efecddc594a19f9195a9 +aea1756b6160625e51444a48433c342c27252728261f1d1d1b171a151e1d +1d0f2b191a1e2b2018242f3138283d3c213c8fc9fff2fffffdfef4fff4fd +c26d503d2e498ea6aeb3a2756d689c9476542a35624c332f333632343228 +5c504e53412c3c61ced6cb73373b354037463b39445c7267bcf4fff9f6fb +fff8ffecffffcf9e7b4d3e1c44b1c0b2aa4a4243413f494c5152514f5052 +52564221162567584c2e373c2e2b4f3f43343b3639434e95a69c8a8a8e77 +5a4f4746423b3c41444142394964a3c3ff9f24282b2521283d52402e2e35 +2e2729292a2f2e282a343934392c293f4030342bdb9a257ad5ace8c15740 +3469ff6121dee5a1f0b6404037b9cb2e74fe999dfb8a3e356dff7b39e0df +52c1ff503853c1ffc16be8a15bffef36473c4c454056395c43454c354a3e +379643423f40414244444e4c4f5760645f594d4a453f4145423c3a4c6a3f +385b453c3b3938383a3b3c3d413a383e3b33333a313c3134372f44563437 +30303e42322b3a2c2e3156535b525d608543354a36414d3185c3bfc2a3ad +a2b987374c46403b3c3c3b3c3f4042444943534d464e463f8b5e3d3a5043 +504a513f45413c45495081504f475b8aa64a4d4e4f4e4c4b484748464546 +464544424a433e3f3f434e567162585962635b514c384250564c74866549 +69566997966e8c867d77777c86878d7caa9e9ca0b4c2bfe7fbe6d0cfd4d2 +dee4ecf2f4f1f1f1f2edebf3fffffff7ffdacfebf1e0d2dcdfdadde1e1e4 +dac7a1b3b1a2a8bcc0b2887c726e716c60545b5a564f443c38363a3c3a34 +3233312d2e2933323222412d2e323e332b36404044354b4828387da8d1b2 +bebab6bcbacfccddac5f4f484469b5d0d5d6bd8a7b7abab799754a537e66 +4b4243433c3c38316e66666b5c48587eebf2e78f515550533b4641435266 +72579cc7cbc1c2cddcd2cbb6d4dfbd9985635f446fdce9d7cf6956504f4d +aba9a7a5a3a3a2a3a9a384514627624425201d1c24313b3e3f3a3d3c3f45 +5f918a77747c7256484c48444346454143484c43374a81aec0c624110e16 +1413160c090814190c060d0f10091e190b171325281603181d090f17e059 +1aae98006fd335110e6cd4525de23e05b7b70e1707a2b271b0bf0e3de05d +141b21d3a0a2f15d0592c526140d49d0d1ddd6b9b6c76315191613131718 +130c130e0f0a0a10056314050c0b0e130c161a1b252d271a181e1f150d0d +200211141c1717150d0f140e140d171512001f15111b210d111403140e15 +18080915182e0d1611000d18060b0703180c070d000a0013141913211b25 +1a1d090b000400050f09101a191f241e241b1c15170f020e051119141012 +0f08464400001300151816080e01001736587547121133728f3d0f0c0908 +0d131a1d16181c1d1d1e212239283c50544c64a8d8d6d3d8e0e1dbd4aa85 +87a1b59faeb3a3acaeadc1e0dbd6cbc8c5bebfc9cfd8d3c6d4c1c8b5b6b5 +c3959495847a6c6e6a76766d5a5b5c4e453f3e2a395e42128ac1bde4e3f0 +f7d8e0fae4dce3d8a946000000000d9ea6944c1d1f110300050003060607 +090a0c0d0c0e10141a1d1d1c151515151515151414141415151515161920 +1c2d48432491f1effdf1fffffffffffff19e8d35350153786986781c1032 +8fa0a37206298eb066332936282831236eceb2cd59171c39896e7c640109 +1e0d0c0b0e132d255392eff9f5ffecfffffffffffffff1dba645481d1176 +b4deba371612100f88888683817e7b797e7c61353520645445443d343439 +3c3b352e3130333851888b7c777e715342453e39383b3a36383f423c344a +84b4c7cf2e1e1b242423292225263135251d2123241d3735293736484a36 +253a3e2a3035fe7534c7ae0d83e74a272686ee6e7aff5920d1d1252c1ab5 +c483c2d42453f9762a3136e8b2b3ff701eade0422f2a66f0f1fff6d9d5e6 +81353f3d3a3a3e3f3a333c393b373a4037974b3b3e3b393c323b3c3d4651 +4d403f484e443c394a2836393e3a3c3c353a3f393b323e3e3b2844372d36 +392830372b3b303437262733354b2a333120303e2d312a25382c272d1d29 +1a33313934423d483f422f31272b202c342f353d3b3f433d4540403d403a +2e3c303b3e3832322d266967231e33203537352a322a2845668295633031 +5496b46438353232373d454844474b4c4e4f50516754677a7d748dcbf5ee +ebedf0f1eae2bc9aa0bfd9c5dbdfd0d6d4d1e1fef9f6eeebe8dfdbe2e3ea +e8dce9d6dbc8c9cadab0b5baafa99d9b888e8e8775797b6d645f5b475578 +5c2aa3dad3f5f1f9fedbe3fce6e1eae2b3581524201f37ccd9ce8c5f6253 +3e23362b2d2e2e2f2f31313231303135383b3b3a33333331313131303030 +313232333335383e35425b502d97f5f0fceefff7f9fefcf7eaa1994c5629 +7ea595b0a043355bc1d5d4a0314dadc87842353e2f2d352e89efd1eb7434 +3d5fb49cad922e3545353b3a3b3c50446da7fdfffbffebfffffaf9f4fbff +eedcaa4e552d258ecffad65b4142403f505253535352504f5455411d2516 +615342403a34343c4142403a3d3c4149629b9f8f888d7f5e4c4d463f3e41 +403c3e444a443f5693c4d7de3a27212724222720262835392a232a2a2b24 +3b38293632444935263b432f373fff8345dbc6259cff5b343293fd7c8aff +6a31e2e2353d2bc6d899d8e93968ff8c41464bfbc6c5ff7f25b4eb50403c +78fffeffffe8e7fb9b4c48423f3f4346413a423f3e3a3c403695483b3f3f +3f423b444849555f5a4d4e565e544c4656333f41474044433d4148404238 +4342412e4c403841432f35392b3a32373c2e313e43593a413c29363f2c32 +302e4337343c2f3b2c423f443d473f4c474b3a3e363c313d443c3e433d3e +3e373e383c3c44413b4c435158524b4b453e7c7a36334a394e5351434a3e +3954728ea06e3a3c63a6c6754a4948484d53585b54575b5e5f606261745d +6d7977697fb7d6cac7ccd3d6d3d1b095a4c9e9daf2f8e5ecebe9f8ffffff +fffffbf2f0f8fbfffdf1fce9ecd9dadbecc1c6ccc0bbaeb2aab4b4a89393 +9081766e695561856936a8d7c7e2d0cecaa4accabec3dadab562273a3738 +50e6f4e6a57573634c3144383b3a3a393838393839393a3e424646453e3e +3e3d3d3c3d3b3b3b393a3a3b3b3a3b40394357461875c3b4b9a9bfb6bbc8 +d1d6d09095526743a1ccbcd6c3625279e6fdfcc4546fcae4905543493731 +383494ffe5ff91546083d7becdb34d52644e4540414256476ca0eeefe1e8 +cfe6e8e3e1dee8f3e9deb35d68443da6e4ffeb6b51504e4da9a8a6a5a6a5 +a7a7a6a08a5845316e4a281c1618293e4b4d4b4c48494547699483767476 +6a524749494544464541424547433a4a7caac6d340021b1a251e1f170808 +161b0f080e10190c180e0a160d0b0c0d06181b0909039ecac8c35e0070a2 +0c23142397bcbf980c329c530030122b87b38d3b063a6b0910260e3f7c83 +5421203830001f2e0d0f5684542c2a2505131110100f10110f0d0b080c0f +0f120963220406080a17171913131a23221e242f1f1d0b0c161e2e231c15 +161b1a1e1f140920170d270a0c142212151c1c140e12150e1416160f0c2f +08080b03111d070006040e0c0c110f170e191219121b101510190a0f1022 +14130e001c48575b635f676f613b17121c1c140f0e1417291f3d6f604447 +4137353d3e4159626c7f8cacb88d88c8bbbec0b6b7b0abadb5bdc0bfc8c9 +cac9c5c4c6c7e0dacccbe7dac1e6eff4f7f8fdfffbf2dbd4ccaf87908488 +798972766589803e494222221b19222c241b2210170b0f0a072c441e0000 +00000d0000000500090105000e2c41320d0a498bb1edf1ece1cbc3deedef +dcb388552d210b0047765f776a30364131080b000d0d0c0b0d0c0d0d1110 +1214181917161212111110100f0f1010111112121213120f243057396fc1 +fef6f6e4feffffffffffffddb3502c00398a93867c130b277f6c6671231c +b6df532418292f342f0c1794b0be82130839736960682000192314090f0e +1200597ce4c6d6eaf7f6f0fff2fee0f0e4cf9161494c602c267b61261712 +100f8685858381807d7d7a78673c352d725a48433630374346413b3a3638 +383c6291867c7675684f40423e3a393b3a36393e403d37487bacc9db4a0f +28293430322d26273336281f22222b20302a2839312f2e2c283a3c2c2c25 +bee7e3dc740c82b421392b3ab1d8dbb6284eb66a1446253e9ac6a0511b51 +8220273d23548f96653439544b163c4d2e337aa979504b44233335373736 +373838363634373b3c3f369355373735353f3b3d34343b4747434b584e4c +39383e434f423b34383e4047483d2b423c35523532363d2c2c373a37363b +3b313737362f2c4f2829302a3a49352c2f2b3330303530382e392f373039 +2d33323d303537493b3a34243e6872757b777f8b7f5b3d3a4849413b3539 +3a483c5b8d8062655c52505a5d637e8c9bb0c0dde6b7b2f2e4e7e9dfe0d9 +d4d6dee6e9e9f5f6f7f6f3f3f3f4fffff3f2fffce2fffffffffffffffff7 +e4e1e0caa8b9b2b7a8b79a9983a29a59696647453a343841352b2f1d2314 +181717415f3f1c2830232b160315221f292226182c4a5c4d251e5a99bef9 +f8f2e4ccc2deecf0ddb5895e46412d1f6ea394b4ad787f8670403c2d3738 +373636353535373634363738353433333232313130303131333334343435 +342f40486c497bcafff8f5e2fafafcf5f8f8fbe1c2694d2164b6bdac9c2f +2348b3a79da34d40d3f4632f1f30323730152fb1cbd8992d265c9f99929a +4e2b404d453e403d3e217896f9d5e0f0f7f2eaf9effee1f5ecda9e725b5f +76423e9379423f403e3d4e4f525355545353535447242522715a47403530 +3a474d4b46464448494c72a2978c85837558484944403d3f403c3e454847 +425589bbd8e85618302e3730302b282a393d2f272d2c3527342b28352d2b +2d2e293c4132322ec9f5f4f08b249aca32463948bee4e7c1345ac57a2554 +364da9d5af5f2c619432394f3665a0a575423e5856244e61414386b2825c +5c593f4a413c3e3b3e3d3e3a3c373d3e41423b95583a3b3a3c4747494343 +4c5757535c6a605e4945484b54453d363940434b4e43344b443d5b3e3d42 +4e3b3a42423b383d3e353d40433c3b5e373839313e48322b33323c3c3c43 +3f473d463d423a41333b3b493b42465a4c49412c40676d6a6d67717d7556 +3e42555c5854525658675a77a5957a7d776f6e787a7e98a2adbfceecf5c7 +c2fff6f9fbf1f4edeaecf4fcfffffffffffffffffffffffff8efffecd1e7 +dbd6d6d8dce1e2e0d3d8e1d3b9cfccd3c2cfb4b59fc0b574807c5a594e49 +4f56473b402d33252927275270502d38443c513f2c3a423b3e3335243754 +67563129629ab5e5d7c4ad9289a8c0d1cdb08e6d5a58483b8dc2b3d1c890 +92967f4d4a3a4341403c3c373735383736383c3d3d3c3c3c3b3b38383737 +3636353536363637352e4148673f67abdac6bca5bdc0c5c4d3dae5d2bd6e +5e3a84d9e3d1c254456bdbd1c4c87362f1ff7a432f3a3b3c341a39bfdeef +b84e4a82c4bdb5bb6f4a5f655346474341247a95f4ced7e6ebe6dcede6f6 +dcf1eedea67c676d834f4a9d834d4b4d4b4aa7a6a5a5a7a7ababaa9e8c55 +383776462417121930464f4c49534349424075927b75726b5c4c46454845 +44464543424348473d446c9ac0d98609190911080b05030210170c060b0b +0e0a17090a191509010f13202218190f0021150d12052c071d1e130e0d0f +190511131d041b1d06180d13071a2d24231816262c000d0d032a271f1618 +1321130633320b1a0c0c201a1f1e1e1b171415171b141216100d085d2506 +161b08111a1b2d26221f1811141c1f131a221f0e2316362319161517170d +1c2a11001201050d1916101109070a000400000000000026050000000517 +07000810080a0c0e1b18282f2c3b323b37404b5b50565e76645b7a6fa3e4 +ebe3f1f7f3f5e1d6bbb2c1a2abc3cdcdd2d9bddde3d5d0e2d9e7d5e4dedf +e2dbd7c4b0ccc8ada7c78f98838984796d686a6b665f4242403d39383a3c +1d2d131675c3c3e1e4edece3e5f1eee4edecbc66001412346dcbccb32201 +402c2539000705060f0a171f2d2b373032274063725f2f09090c05362f2a +18001003000a2a3833100435223565c3f0f1e1e7fbf7fff6e4c28d694424 +12075077606d711d102927070d100e0d0c0a0c0b0c0c1210121215151412 +13121211100f0e0e0f0f101010111111160a18233a26a6ebd4e8fffdffff +fffffffff8fce57c29072199e0e0d945191a59706b813e0984586a3b2c35 +2d27343234b4ae43663e20026491777639070d00030e120a1c326469bcd1 +ec947c7d7c6b656d587fafb84920322d2c292c32311913100f0d82828483 +828281817e76693b28337a58463d31313f4d4c423b43323b37386e8f7e7b +746a5a493f3e3d3a393b3a38383c41413a426b9cc3e08f15271a221b1f1d +20212d32241c1e1f221e2e252839382b202e324143393b311c3e30262819 +401c32342a25272b35212d2f371b3130172b242a1e31443b392e2c3c4316 +24271d44443e34383444362b5958303e2d2c3e3a434444413d3a3d3f453f +3c413c39348c5538464732383d3e4d4642423c353a454a3f4449422e4031 +523f3534343a3a2f384633263c2b2f3238322b2c262930203327251f2124 +2b513021292a3549392731352c2e30323c3949504b5b525b555e6b7c7177 +7f97857b988bbcfcfdf5fffffffff3edd8d4e7ccd5eff9f8faffe3fffff8 +f0fff7fff3fffdfffffffff5e4fdf6d8d2f2bac3aeb4afa4989395969089 +6d6d6a67636263654251363692dfddf7f4faf5eaeaf3f1e8f4f8cf7f1439 +3c66a5ffffe24b28685653692d37322f3326282b36343e3739334d768c7e +5434383a2d5e5755462841342f3c59675e3b2c58364372cef6f5e4e6f9f6 +fdf6e4c48d725a42302673a091a6b161546b623b3b3a3838373535343434 +38363434343432303433333231302f2f3030323232333333372b353c4f39 +b3f7ddeffffffffffffff5fcf6fff393462b48c2fffffa62313b8ba79fb1 +662c9f6d7a46333b2f2a353b4ad0c75b7b573d248fbfaaa9683335253745 +473b49598787d5e4f89b7f7d796b6c786792c4d16641544f514e4e54533e +3d3e3d3d4d4e5153565657575752492218287958473e34354453554d4850 +424a47477ea08f8b83786752474543403d3f403e4043494b454f79abd4f0 +9e233222291f201f2426353b2e272c2a2d2734282836342a223135464840 +443b274c413a3f31583143423a353639412d393b44293f3e27392c322639 +4c4344393949512634382e534c433f4747584a3d6663394a3e415853534f +514c4a4549495148484a47423f945f41505240475051625b5756524b4f59 +5b4c5050442b3b2a4633292a2e34363043543f334a393f444d47403f3635 +3b27392c2c272a2d345a39282e2c35483627373e383a3e424d4a5a615d6a +5f665f697a8d828890a89486a08cb8efeddfe6ebe8efe3e3d4d6f0dcebff +fffffffffffffffffffffffffffffffffffffffff2ffffe8e2ffcad3bfc5 +c0b5aba6a8a9a69f8080807d79787977545d3c358dd3d0e0cdccc8c0c2ce +d2cfe2eecd84214c527dbcfffffc6745826f6a7f414b4543493b3a3b4743 +4e4749435e879d9066454c5250827b75603f52423a435f6d6541345e3d46 +6bbedcd2b7b6c9cadcded8c195816f5a4c4391c0b1c3cc78677b70494a48 +4441403b3b3636343937363639393a383d3c3a3938373434353534343435 +35353c303b415437aae3bec6d5d0d6d8dadcdae9e7faf39b584365e2ffff +ff82535eb0cec6d58a4cbd88915a45473b313a4255dedb7398765f49b2e1 +c9c6844e4f3b444c4f424e5e8987d2e0f4947875706365746490c7d56c4a +5e595a57585e5d47494b4a49a8a8a7a5a7a9ababaf99874f2e437f461b12 +111d31444741415039443d3f7f8d74767061514a46464846454545434240 +4c4b3d3b5a85b0d0ba25090f100f1a110909151c130f1515131e31160e15 +2113040e0f1d1a0e1513151f1f1c2c141c21241b13260f111823212c1f14 +33230f182817213324161e1d20151b220d00261e2f231a261110190f433c +41582013271d0e0b0a0b0a08080b1209020b040408552400070d00061615 +110c0a0c0c0a0e1625112417293ba1b49998a9b9b1987656332f32362c2f +4c3c3d56565f665c5b5464717b6b74868590957c878e98b7bdb59fbaaeae +b4c1decfcbd2d9e7d6d9d8e3e3e7dde1dde4cfcfcab1d2f7f6eaf3effcff +e2ebe9e5c95665805a2f4d5e5e5b61602b291d2c020605090603130d042f +511b00000e5f3d130100000000000000090807050305080c121a04002d77 +a2e9ebeee1ced4e7ede0d2d3ac8f372d1f2743816f8d591a501e31804640 +200615140c1c1e242d282f2524646d43180d150040a6b59d5a000400002c +3d1b11151f563b5f97c1d7e4d8ddeee3eaddebfbcda9682a1c0e0480996f +7c13000001000d13080807070a0b0e0f100e10101415141314131311100f +0e0e0f0f0f0f0f0f0f0f14150c1c1c36a5ecdce3e6e7dfd4dcd4dceee1d4 +cb733c4e4e433b5180330a003d8e89955d4ccdcdb0541d27322b2b2b0170 +b57c9d3f060447a4c1b24d131c18090f09102f4f2124486875423f364835 +313335252c300e120b09092a2d182c13110e0d0c83838383828281818371 +64351e3f83583d393236424d473b37442d3935397b8b777972614f443f3c +3d3b3a3a3a3a3839444539395786b3d7c23219212423312a262530372a25 +282826344a322c354133232c2d3b3b2f3735353f3c37452a323639302a3d +292b343f3d46362a4635212a40313b4c3a2a3231332a323d291d453f4f44 +3a4734343d366962677c4133453d31302f302f2d2f323c332c352f2f3383 +54293538212c3a38332e2c30302f333c4c3949394857b9ccafafbfd1cab3 +927149464d59525a76656176717b857d7e7b94a2ac9ba0b1adb6bca3aeb6 +c1e0e6dec4dfd2d2d8e4ffefebf2f8fff5f9f8fffffff9fdfaffebe8e2c6 +e4fffff4fbf5ffffeaf8fdffea7c8eac875d7b8b8b888a87504e404e2428 +292d2f2e413c35607f462027398a683e2c272121262a28273231302e2c2b +2e31353a221b468eb6faf6f7e8d3d4e7ece2d6ddbda7555149577fc1a8c3 +88497f5067b97f79543642341d23252a302e352e307584603b3642306ed7 +e6d090303f3a3c697855484a5481546ea3cddee8dbdeebdfe8deecfcd0b2 +7d44362923a4c6a4b853283a392d373a3233323233343637363432323334 +32313534343231302f2f303031313131313036372c38344ab7fce9edefee +e6d8e0d6d8ebe2ddd887566d72686074a25227156dc4bbc3866fe8e2c061 +262e362f2e34178ccb92b256232670d3f4e67d4045433f483f425e7a4643 +617d854c453a48393f474a414b53343d373535545740523b3d3c3d3c4e4f +5155565757575c4d441c0e34825a3f3e373b4a56514542503b4744478a99 +86887f6d5a4e474443413e3e403f40414f5147476898c6ead543282f2f2c +39312e303b4238333736343f51362e3440322834354344384141424e4e4a +5b41494b4e433c4f3a3a424b4953443754412d34422e384937283132372f +3a48372f59505a4d495a4a4a5347766d708852485f5645424142413f4043 +4c433c453f3f439262374448333f504e4c4745484a494d535d43513a424b +a9b69895a8bbb7a4846c5458606c656b8c7b798f8c939a90918ca2b0baa7 +abbab7bfc3a8b3b8c3e2e8e2cce8dee0e8f7ffffffffffffffffffffffff +fffffffff7efe4c1d6f1e5d1d4cfdfe8d3e7f4fcef89a2c7a67f9fb2b2a9 +a098636156673f4343454541514c436e8e563037499a794f3d383434393d +3e3a444344444242434448472a1e4388ade7d4ccbeabb0c5cecac5d2b7a9 +5d5f596b97dac3dda6659b697fcd938d694c59492f333538413e453d4085 +94724e4857478ff8ffeda8434d44446e7c574d4e5a875b73a1c3cccfbcbc +cac2d1cee6fed9c1925d514642c4e5c3d46c3c4b483b45493e3c3b383936 +38373735343438393a393e3d3b393837343435353333333333353f413944 +4051b7f2d7d4d0cdc7bdc7c1cce2dddcde9267828c857d92be6f453391e8 +dee5a68dfffdd774373e423a373d249ae0aacf76434990f1fffe94575954 +4b51494b64804c46657e854b453946383f484d4450593d4642404060634a +5d4548494948aca9a8a7a7a7a8a9ab9485522f517d431813141a2a3a4041 +3d493442404c8d8b72736c5b4b484747484745444445433d4e4d3d354e75 +a2c4cb56001b0c09100004020e140d090f0f172533140d091c0515120f24 +20090f170e1a1c07201a141b1b1a0718121a0921283636220f1c1e240e4c +523d4c5352624e4a081724181f090f07010b1f191d0f4559564229251135 +2f27272f363837393e3b394c484c528aa569697269808f8a7e7e82898e8e +8e90a2aab3ab9bb7f1eaf8edeff5eee4ddd1dee1d6d5beb1c0beb0c8b8be +dfcbb7cfd3d7ca9d8d918082927575695b656660597a685249566e555d5d +6272595c54524e4b3a403027182ec8b7cceaf1f7fae6ebffeaddd8d7a302 +27492a288b98ac7f174a0000001000060e0b0300020000152a0d11040012 +0c0f06070808090b0f140e11100f0e1014181e0f2345273878e2f3f2e4d5 +dcf3f8eaefc66357412a533a4f826369710b340b62d2ad994b0014464d4e +30302c2a37312b83c0a1501a08004b8387957900000f1f2a1c00050e0729 +2997ead4c7e6f0dfe7e9fbebebf6dbcd7c20251d028ad6b0923100050309 +11060c0908080c0e1113110f0f0f12121211111110100f0e0d0d0f0f0f0f +0f0e0e0d08151317234a84bccf9d6157494551434876cbcb9c4636365123 +0b16180916172c9ec1dc730c1c675a42353327171a211063c0b3a4470b0f +102d6679280608111102073040232f272d534782c2b3af6b91bab1955400 +709383290b0b0f170d19100d0c0c8484848282807e7d7f6c6238224d8155 +3b3936373e4747413a432c3a3a48898a74766e5b4942403d3d3c3a393a3b +3936464739334b76a4cad6630c2d21202a17201e282e242024242c3b4b2d +29273a23322e2b42402931382f393b243b332d312f2e1d2e2b34233b4251 +4e38232e2f3728686d55616562725f5d1d32443c442f332b242f453e4338 +6c817c664a462f55524b4b535a5c5d5f6764627573777db7d498969c92a6 +b3aea1a1a5acb1b3b3b5c6ccd2c8b6cffffbfffcfdfffef6efe2eaefecf4 +e4deecead7ebd7dbfce9d6f1f8fceec0acad9a98a989887b6d777876779c +89736a778e757d7d8292797c74716a66545a493e2e41d8c5d5f1f3f8f8e2 +e3fde6e1e3eabd224d75585abfcde1b14678241e2839242c34342c22302a +1f47583b3f3228403a3d3435363636383c3f373736353434383b3d2c3e5c +3a4b87eef9f6e5d5dbf2f6e9f2ce726d5e4f7b6989bf9c9fa23a653e9aff +e9d3812442665a5133342e2c3a383493d5bc714032227cb8bccdb332374f +606b5d3b4249425a46aaf9e0d1ecf4e2e6e7fbececfbdfd690383d361cab +ffe1ca6d3a403839382c343433333537393b373531313131302f32323131 +302f2e2e31313131313030302c3a36363e6198cfdfad6f6557515c4e4d7b +d2d5ac594d5370462d3a3c2d3a415dd3f2ff9c2f3a7f6e51423f2e1f202d +267ed6c9b95e28343c5f9db05b35333f4a3e4066725257494a6c5a91cdba +b474a2d0ccb3761d9cc1b3593b39393e323f3c3c3c3c5050525556575656 +5848421f1142805741423f3f4950514b454f39474856989883857b67544c +48454342403f4243413e515347415c88b9e0ea762041323039242c2a353b +343035353d4955342d293a253a39374d4b363d473e4b4d36504943484746 +32433f4532484f5c5a432e38393b1f595e455055556755591e394f4c5742 +413937455c585a4a7b8b85725959476e68616169707272747b787689868a +90cae8acabb2a8bdcdc8bdbdc1c8cfd0d0cfd6d5d5c3a7b9e8d9e3d5d9e3 +e1dcd9d8f8fffffff9f3fffff4fff6f9fffff2ffffffffd4bebba7a3b190 +8f857783848382a898827b8aa58c96969ba99091898682816d715d4e3947 +d5b8c0d2ceccc7b2bcdbc9cad3e4be2d608e797de6f5ffd45a87352f3c4d +3b434b4a4235403a2d5265484c3f354d494c44454646494b4f52494a494a +494a4e4f513c49623e4982e0ddd3c3b3bcd4ddd4e1c36d6b625785799fdb +b9bbc2588359b3ffffe9993d5a7d6b6042403d3b494845a3e6cf8453483a +9ad8dbe6c9444358666f613d474d485f4eb0fcdec9e0e3cfd4d8f1e7eeff +eae7a85259543dccffffe5854c5048474739403d3c393b393b3b38363333 +3636383739393838373633333333333332313134384a494a5373a3d3dca3 +60564a47564a507fd8deb9685f65855c46525445525a7bf2ffffb84b5497 +8666534f3e2c2c39348febe1d47d46515778b2c46c45434c55484b707b5a +5f5252736196d3c0ba7baadbd5bd8229a7cec1674948474d424c47464646 +acaca9a7a5a5a6a6a9998a57304c6535181311131c2e3d453c3c303b405d +9082716f67584b484849484846434545413b494f4338476996bad38c0914 +0001070002010c130c06070500040e0012132d0e120b0a2c3116191e1e3e +4c202117171f303933433d32205d6b464b5c46575d5481cbcccdebdedaed +ccc9876b737a708398989b909b9aaec6c9cdcdb1a2c3b2c9c8bdbac3c9c6 +c0c0b5bab5c6bab6aec6c7a9bdc7b1acafb29e9c9d9fa09b918e7f7b6cc4 +b5e0e2f6eee6effdf9f2ebe3cdd56e342e1519649eac711b1f2d0f180e0b +0b00020d0d24150712110f15161c48543d1601070f000000000f000c0600 +131206190d080d3882b0e7fff6e7dbcef6fdf1f1d5aa82352d3b21287165 +836c21671a060a0a0a130d101309110b000d1000080a14150e031112140f +0905080b0d0e0d0c0c0d0f131a0e264b3f7ea2c6dee2dfdae5f4f2e3f2e9 +94765f1a51181b719087a325330f238479896c053d9e6a5c2734332c342c +1247b0c17330161d5b80706b750c04163d1904030b00002f86b5d3c7d2df +ebd9ede3e2dbd6d6d6e18f2d3d28242644436b27000a000d13060e0a0908 +0a0c0f111613120f10100e0d0d0d0d0d0c0c0c0c10100f0f0f0e0e0d0c08 +0f04182047677f62364534374c3b3c215c52311c3724271b1d2d22241500 +013e3e601c0429b9b0935215092028170c196fdcdf7e1c13231f41460f17 +1307001025372c00a47b085258c5f4d5c775b4ef8eb8de41c9a7ba871415 +1d171817110d0d0b84848382807e7c7a7d71673d23496b483a3b3531343e +47493c3a2d383c5b8e81737166564843413f3d3d3b3a3b3e3a3441473d34 +446a98c0de9b1928191b231b1d1b262d221c1d1a121925152b2c492a2a22 +24484e36393f3f5f6b3f3d323237464d4959564b3a77855e617058686b66 +9ce8e5e1fbebe4f7d8d79a8594a099acbfbdbfb5c3c4d6eff3f8f5d7c6e4 +d0e9eae1dee7edeae6e6dee3deefe4e0d8f0f4d6eaf1d9d4d4d7c1c1c0c4 +c5c0b8b29e9886dbcaf0f0fff7eef6fffffbf5ebd3dc805054424993cad3 +94393c4a2c372c272515161e1a2e1e0b14130e14142362765e3722272f1b +15141d311e2e2818312d2233261e1f478fb8ebfef3e3d4c4e9efe8efd9b7 +975251654e5aa59cb9a254994a353837343d373b3e373f3b2a3d402d363a +42453c333f41423e373435393738363532313336392b3e62508db0d0e3e5 +dfdae3f2f1e4f6f3a58e7e3f7c4852a9c3b6ce50604159bcb1c1a03366bc +765e2936322e37321b57c5da92543f498ab1a19eab453f557c5843424836 +3160a7cce6d9e0e9f4dff2e5e6e0dddfdeeea345553f3f456b72a1613d45 +333d3a2c36353433333537393c3934312f2f2c2b2e2e2e2e2d2d2d2d3232 +313131303030322f3324363a5d7d93754a59484a5e4d4c316c6344314e3f +443a40524b4f42253574708f482c4cd8c9a86526192d342926368af4f799 +3e3b51547b82484c4237374c5f70602bce9f286e6ed7ffe1cf7ec3ffa5d3 +ff66f2d2e8b53f3e423a37383b3c3c3b5051545554555453564d49241240 +694c4447413c404b5154484538434a689c8f827e7463534a49474343413f +4345413c4c544b43557eadd8f4b232402f3239302e2a353e3731322f252a +331f32314c2e363233565c45484e50707d515247474f5e6661706c5f4b86 +926a6c79627074668bccc8c5decfc9dec4c894849badabc0d0cfd5cfdddd +effffffffde0d4f5e8fffff9f6fffffffdfdf4f9f4fffaf6eeffffedffff +f2edeef2dddcdee1e2ddd5ccb0a087d3b7d5ccd6c8bfcadce0dcdadee1f8 +98666b5960ade7f2b45b5c6a4c56504c46312e302a38271420201e262936 +71826d48353c483731313a4d394941314d483a4a3a2c294a88a9d4dfcab4 +a091bfccc9d6c8ae985a617d6d7dccc3e5c667a45845484a4a534d4e5147 +4f4936494c3943464f514b414e51524e47464849474848474747494a4d3b +4a6a5790b0c8cdcac5c0cadbddd4e8ea9f8e8145835667c4e0d4ee707d5c +73d5cad8b84d82d4866a3643403b46402a67d6eea66a5562a8d1bfb9c358 +4d5e855f48474d3c3a67b0d4ecdde1e8f1dbeee2e7e4e5e8ebffbb5f715e +5d648a8ebb774f55434b4939423e3d39393739393d3a3633343434333535 +35353432323234343333323131343f40493b5051728b9a794958494e6859 +5b407b7353425e50544c53655d6055394d8e89a9614562eddfbb7636283d +423735469fffffb459546866898d53544a413f566a7b6b35daab337a7be3 +ffeddc8dd6ffb7e6ff78ffe3f8c55050554d4b4947464645acaaa7a6a5a4 +a5a5a89f8c552c49614d140e0e0e15222d313a2c2c333f6c8b7470685f56 +4d48474a484845424546413842504c3c405a86aec6b84f373e4843546567 +757e71665f596c7280779795bea2a5a29fbec9bab4ad979ea599a9a0a19d +bcc8c5b3b7cfb7beabacb7aaa8c5da90b3efdfd2d6e6ffeee0cbc7bfbc8c +7e9081636d7d7575545668787f6d3f515c5e433a383f3e332c2d141d111b +0a07000005002336250d0000000000000104000000031293c1e4dceff3db +d2dadbe0e5e4d8d244000b000c80c9c7ab29001506100e16231c1e21101c +211d26282e2d2733593e2d12070e0e1532404d48161f2317090f071c1722 +32601a77cef7fcefebfafff0ebf7d5927173202b374a6674696b31461b06 +0000050500000c070a11050500110f1101070d060000040508090d0f0d10 +11100f0e1114131b132858dde9cfd7e0e5e6ebefede5d9f5d8b582285b33 +0059cad9dd53382126757174780b3897a0752034362d2f2129459f7f4253 +3b18046286708f47343e1800000507071b52decab2b6b57f7f6f776d5d6a +88a6c7ce622e49384c1d0e1a2a06001700060e0f0b0a08080b0e13151713 +120f10100f0e0f10101010111111131312121111110d1103062e12001a1f +5571739275809e878750191863671f0e13232d171c0f0a11114245581b09 +002b163f472916171811222b0900000e0d0b0d4e654b05000e1107332d1a +040095ac0f232b96d75f53327bd11b1dd576997429dc491912153514150e +0d0c828281807e7d7b797c77693b1f4667603638332e2f353b3b402e2c31 +3d6b8a73726a5e544a4340403d3d3c393b3f3a333a4846383d5886b2d0c6 +604c58636172807e8b948a7f776f8289958dadacd6b9b8b4b4d5e3d5d3cc +b8bfc6b8c8bcbdb7d1dddac9d0e8d2d8c5c4cebebbd7e9a1cbfff5e2e1ed +fff2e5d3d5d6dab1a8bbaa8c95a69ea17e8093a3aa9563757c7e665e5c63 +625752533d463a44353223222f294d604e3621221e1e1d23292c2821191b +27a6d0efe4f5f5ded4dbdde1e8e6d7d6531b312c3eb4f8f3cf4a1132232a +262d362c2c29161c1e151b1b1f1e142d6c5e4d31272e2d3454616e6b3942 +463a2b2f273832394570257dd0f3f6e6e0edf4e1e2f2d79c838c40516179 +98a89ea2697c4f3a302f34342a2c3935383f33352d433f4331393d382e31 +3436383a3c3e3b3c3c3b38373739343b2d406beef7d9dde3e8e9ecf0efeb +e3ffeed3a55188612982effcfc725b4852a4a0a2a22e57ada7752034362f +33293555b498617661402b8baf9cbd7767724e32343b3b3b4c7effe7cdcd +c9908d7c8177677696b6d7e17b486352673f364960403b52323638373535 +333334373b3d3d3934312f2f2d2c2d2e2f2f2f3030303232313130303030 +372a2a50311534386c898baa8c97b79fa16a3131797e392a314351414a40 +3f494a7b7c8b4b362850375c62432d2e2e2b424c281a102e333a428aa58c +423a4446426f6753381cc1d1304042a9e86e5e3d85dc2b31ed92b7974cff +69382c2d492d3b3d3c3b504f52535354535257534b240f3d65664248433d +3c4346454c3a383e4b7998817f776c61554a48484343413e4346423a4555 +54474e6d9ecbebe17c6973807d8c9390a0a9a0958f87999ba69ab8b2dabf +c7c8c7e7f4e8e5decbd2d9ccdcd1d3ceecf8f5e1e6fce3e7d2ced6c5c1db +ee9bb1e2cebbb7c4ddcdc5bbc6cedcbab8cebca0aec2bcbe9796a3acb19d +6f8391957c747279786d6768515a4e5848453635453f6376644c373b3837 +383d434642392c272aa0bdd1bbc5c3a9a3afb6c1cdd9e5ef6a30464055cc +ffffef6b3352434d52595e4e473e26282920292c323530477d6b5c433c45 +495170808d895760625646483e4d43474c701f71bbd6d2bdb2c0d0c2c5dc +c99483934f667a97bbcdc6c178865a473f3e46463d3f4c45474c403f374c +494c3b4249433a3f424446494c4e4a494c4b4a494a4c474a3a4a72f5fad8 +d1d2d7d8dce2e2e1dbffecd3a9578e6e409effffff9179656dbebababb4a +74c5b77f2c40423b3f364364c5ac758c785a4aabcfb7d58b787f5a3c3e45 +46465a89ffefd6d5d29896848a807182a1c3e4f091617e6d845b50637854 +4d6040444643413e3c393a393d3d3e3a3633343435343536343434353533 +3535333332323234423b40694d2f4d4e7c9595b49aa7cdb7b88149478e90 +48363c505d4d574e4d585b8e90a05f493c634a6e73523d3c3c38515b3c2e +2545484e5295ae90453b464a4a7a735e4528cee13f5054bafa817051a0f8 +454cffaacfad62ff804d4345624348454443aaa9a8a5a4a4a6a6a19e894f +2d537a86929195979ca2a19c3e252d2f4178896e70655a555047474b4849 +4542434640363d525341394b76a1bddaa6748e866279777b8c9687776a5d +5763715e6e5b8b785e5c505e675e574032393c2f39313b2f362c3c2e2027 +202d213938060622997face6cedadec4e1d7cfcec8bf9c00003d240d52ac +91861800193b0000202106010401050e0b000003040f020e071510091900 +082a47421c0e120f0b0d151c1b19152a293489c9fff4e7d6dbf2faf5e9d7 +b0a23d211d090d606f56976614141d55928d69220f201c1f1e1e20223432 +283d80422d19110e02199bb4bd8c1f070d090e190d140f202d52639fc5db +f0e6daebf4f6f9efebdbb6a9442215162f9d81925423150700080d030c07 +1002000e0b050b120018060b07080c0a08090a0a070406080b0b0b0b0e10 +10200b2259c8c9d3d7e0e6e7e3dfe1e6cddccbb67e29473838297197a752 +383500769a869d4689e9f8b631322e282d242128aab5848a542d097cccc1 +cd5311190a0c160406272b222e759b96661324181c3019182e4e6f561b0f +2212152d1a18160b21481b0a070c0d0d0c0e13181e211410100e11121312 +1213131415151616141313121211110f090b0d9032091a07b7d5c3c79eb7 +ddb7decd2e2adacc102e281f1d1d72420a01053659702c0b140d02223c45 +3e291d251d2d0a1317170b1700362f462c020209303a0b0e0f0432dc2019 +114feed8d78b36f46700c4b386cf07db51122431112e16110f0e807f7f7e +7d7d7a7a7576663721538399b6babab8b9bab3aa482b31314077886d7265 +58524a423d413d3e3c393c413b30354a4d3a354876a5c4e8b788a7a38096 +8f91a2ac9f8f82756f798674826e9e8b6e6b61707d77725f515a5d505850 +5a4b4e44544638423b493b514f1b1934a890c1fcdee6e5c6dfd4cdd1d1d1 +b61623684d367ad5bcb2441b44672b2b4645292429262a33302522292d38 +2b3732403b3444273355706b45373b3834363e45443e303d3c4394d2fff5 +e7d4d9eff6f1e5d5ada4493a44384294a184bc8733313872ada88239202d +24221d1716162320143491624c38302e213bbcd7e0b0432e3431373f3238 +2f3b44646fa6c7d9eaddd0e1e9ecf3eeeee4c6c060453b405ccbb2c58c5c +4e3d323d40343d363f302b3d3a343b44214a383d393a3e3c393a3b3b3835 +36383b3b3939393a3541293e6fdcdae1e2e7edeee8e6eaf1ddf1e7d7a756 +78665e4b8fb2c26d575927a3c7b3c368a4fdffb93334302c332e2f3abfd0 +a3ad78522ea0f0e9f780404a3c3e48363657594e5497bbb4822a392b2d41 +2a2941648570372d3d2d334f44484f486086543e3336373837393c414649 +3a36323030313130303132333434353533323231313030312f3232b35127 +3521d0efdde3b9d3f8d4ffee4d48f4e52a4a4641444aa47b4640437193a8 +613f433b2c4962695f493d4645572f383c3d394b2c77758c71433d436b76 +454743345dff44382a64ffe8e6973ffd7201d5c89ee921f5692838422144 +3a3c3b3a4e4f5153545453535053481f114b829fc4ccccc7c7c6bfb55237 +3c3d4e85967b7f71655d544945494344413e4347423a42575b4a465d8ec0 +e0ffd5a9c6c3a2b4a7a6b9c4b7a99c8f879099828d75a4927e807584928b +8571656d70636c646f636a60706050574e57485b57201d36ab86a0ceb1b6 +b295afa7a6b2bcc5b51c2f79614c94f3dccf5f305470323151533c383c39 +3d464338353c3f4a3d4943514c45573a4668847f594b4f4c484a52595851 +434c434084b7dec9b5a3a9c6d3d4ccc9b8b95f4e554854a9b89ed9a65251 +5694dad5ab5b3a40312b251f21243638304fa36f5e4c45473d57dbf5ffd0 +634d514b4d5244483c464a666d9eb9c4d0beadbecdd3dddce3dfc6c66c58 +525979ecd3e0996357473e4b51454e464f3f3847443e454d2a5341464445 +49474748494946434244474948484a4a455034497ae5e2e4dee0e6e7e2df +e5eddcf2eadcad5c7f737364a9cddd88737140b8dec8da81bfffffc23f40 +3c373f3a3c48d0e3b7c3906d4bc0ffffff955058474953414465685b5fa1 +c6bf903a4a3c3f533c3b5072937f4c4558484f6a5c5e625a6f935f493e42 +4341403f424348493b373432353639383839373839393838363534333332 +3233384145c96d43503ae4ffecf1cee9fff2ffff6962fff93956504a4b50 +ad844e494e7fa1b76f4d534a3a586f776e564c5551653f4a4e504959367d +778c6e3f3b447380515250426dff544a3e79fffffdb15eff9220f3e5baff +3aff8340515c3b5b48454443adacabaaa5a2a3a1a495785a2b4c75867c72 +6d6864615f5e19151e1a47827d6d69635b54504c4b49444a463e414d4938 +3549544d3d3d6498b5c7b917031e2f2c0000061900000000000305000020 +1608010707040005155d29080016050100010904290e0c1213171827450c +121c5265caf0e3bfb5c4dcd4dfd29fbd9e2e2b4e3613557f739150012650 +114d996117181a18181816110e0e100f0e0d0b0a0b0b0e0f0a0715314345 +020b0e0d11100c13162d353f64c5deecead7f2f9e7fbe1e3a06f9b543027 +0b4f82718e62000d08809ca6880d00222d251a1d1d1c2129312bc1dbd8a5 +42000013806f7c7b0100100a030a0c0b1920122fbaeed3daeceae5f0f1e0 +f2e2edeed19944312d0328c7dfcc7a192f0c000a060702040506090b0e0d +0908090909080706070707070708090a07080809090c0d0e1a0e08376baa +c9b8a98175878d7c8a7c7ea5aaca563328314a4a2a14512831290b9adbdc +c42b024892781a2f181e1f150b288d9f655541220024728a9d50050f0607 +04112352310f0e1411427a5e796e633393756c520c569382780d1c140a0f +00093159331e00120c0b0a090c0e1214100f121316161310111215191c1c +191711121416161513110a1a00a2a9012d0087a526200365d30001e07524 +daea22231d2b1c085451410a0000564c2e1603040f090b1f383e2c151410 +0f0e11100d0900053b491300162b35100a17100325d168001313c3aa1922 +1999b70065d053f0479e9515241e25181d110e17818282807e7b7775796f +57421f4c7e9a9d9b928c847d7570271f241e49847c6c686359514a47413f +3b413c343a4843352f434e46393a629abad2c82a1b3a4d4915031c2f0b08 +1714131b1b12053125170d1214130c1c2e7848271e3625211e1f231e4328 +262e303334425c21252e6175daffedc3b4bed2ccd8cfa3cab54c4d755c3b +7ca89ebc7e30547f3e78c1873c3d3f3e3e3e3c3736363a39383737363737 +38393431415d6f712e373a393d3c3838313f454d6ecde1ece8d4edf4e1f6 +dcde9d72a86e58574084b5a0b384202b23a1c3d2b334233f44372525201c +1d25292cd4f8f5c461171c35a192a0a228263937333a3b363f412d44c9f8 +dadbeae7e0ebeedef4e8f6fce3b05f5150284eeffffbb0546a452d433b3c +36353636373a3a3c3a3a3b3b3b3a393839393939393a3b3c3b3d3d3d3d3e +3d3c44362c5987c5e1ccba9083959b8a998f95c0cbf082655c62716d4930 +6d47545039cbffffef52235f9e7f2035202629231d3ea7bc867865471d4e +9cb7cc8136433a3b38455483603d383c39679d7d95887b4bab8e856d2873 +b4a5982d3e3a3742394973996f5730413636353435373a3c363534353535 +312e2e2f3236393936342f30323434333130303f23c3c71c4717a2c0413d +1f83f01925ff9846f8ff3e3f3b4e48398b8e854f3e3d9288684f3c3a433b +3b4d6468564144423d3c3d404144374d86945c3e54677049404b40314ff6 +89172c27d4ba272d24a3c20974df64ff58b2a9293630372e3f37363f5052 +545655545250564b382a11447da1aeada49c9389827a3029302a56918c7a +766f665c544e49474046443c424f4d3e3b4f5c564a4d78b3d7f0e94b3f5f +736b301b33472723322f2c33302311392a1e1d262726202e428b5c3b334b +3a3635373e395e413d434241404b64262930646ab6cfbb907e8a9f9daeac +8ab9af4e56846f5499c6bedc98446387447ecb944c4f4f4b4b4b49444242 +46454443424142424647423f4e6a7c7e3b4447464a4945484653525065b8 +c4c8bfabc7d4c7e0c9d8a883b97d64634e94c8b4cd9f39453ec0eaf9d651 +374d4c3b272725242b364041e5ffffd876303851c0b0c0c14744554e4144 +453f484a3449ccf7d3d3ddd6cdd8dfd1e7def1fce7b86a60633b65ffffff +ba58704e384e494a44444544444445444141424242414241424244444445 +46474645454848494b495242386392d0ebd5c19586989e8d9e959bc7d4f9 +8d70697082805d45825b686149d9ffffff633671ac892c412b31352e294c +b6ce998e7d613767b5cee090444e454643506291704c44464577b092aba1 +9563c3a4997e3683c7b9af4457514c5549557fa379603a4b423f3e3a3b39 +3c3c373636373a3a39363435383c3d3d3a383132343634333132334831d6 +df37602eb7d1524d359bff3847ffb661ffff4c4b45544b3d8e9188544746 +9c92735a47444e46475a7174644e504d4a494a4e4e4c3a4c828f55364f65 +76524c584e405fff9c2c423feed3414944c6e22991fc80ff72cbc2414e48 +4f434b403e47adadaca9a7a5a3a1a09a7b51274c5b480701000001040507 +18121c1c56827a6d67635b53504d4b48454a473c3f4a493d394a55524037 +54849fbfcd5a33635a663f1c1d1505161a1a0f10180c001a191b1c201b1b +31693c3a2a27100d13414e5042111e111d1e1213111421171c243c36a8de +decac2d2f0f0e0d7aa6b54663d1917155c71567d520f1c4c061c4b2f0b14 +181615171815100d0f0f0e0d0c0d0d0e080e13140f132331521f06080a14 +1507192b509fd4e9e6e2e5d7e0f4edebedffeeb5b9532b2e1946a7b0d085 +04010076744d61310f1f361b171b1814161f241d73816a5d1f07040b7062 +646e051317011205080908001068a5dccdc8d3e6dcd7e2d1d8bdbfbac2d6 +696f8760285b6a6c6415380a0007010206060807090a0d0b070709090a09 +0a090a09090809090b0a100e0c0a09070809000f1a0f2f7b9791532a162b +11141c232a3035502710001414364431391a173f002c4b576c141867f0cd +574215151d1c0b0866b6b7914910000a2f0f371d02000b01082c2e1b1783 +7800121886e3aad2a77fe5bdc0d57198cda1c98f001f0e0101021b423e21 +00050b0c0d0d0e0e0e0e1211131317161412111214181b1b181612141517 +171614120a09007cc50e1d155aeab5ce6623dc4700a193004fd372101922 +221538442900090e433c23140605080707081020303a110c0b0a0d0d0a05 +09000d17040a2b351a0705101517249eb58e825b8dde8d916f82dbb7d6cf +3e7fd4e4a32a2c292a2521201d148181817f7d7b77757573593b1e4d655c +282724232322201e2b2026225a84796c676158504b46413e3c413d353a47 +463a33444f4c3c335184a3c8da6d497d7883532e312a1c2f353529282e1f +0f29262422252226407b515345462f2d33616e6e5d2c392f3c3d31302f31 +3a2f2f364e46b6e7e4c9bfcae4e5d8d2ac7667805c3b3c3b81987fa87e3e +4a7b3349765732393e3c3b3d3e3b38353a3a3938393a3a3b33393e3f3b3f +4f607f4e33353741422d333f61aedef1e9e2e4d3dcefe7e7e9ffecbbc96f +535f4d7cd8def6a824201f9aa27f8f5d3541533329262019191e2122869d +857a3e27232d93878b972e3f4331493c3d3a33233183baeed8d0d9e8ddd9 +e7d7e2c9ceccd6ee848da7814c7f8f96995073453641393a3b3a39393839 +393a383a3a3b3b3b3b3b3a3b393a393b3b3c454543413f3d3c3b2a3b4435 +519bb5ab693d2a3f2528323b46505b7a57442948405e6a555d42436f3467 +8892a2444287ffd9635023262f30232283d5dab66f3a2b3d62446f573d2e +473c436567514bb4a7243c42acffccf1c49affd9dcf291b9f0c6e9af1f45 +3b343c425e857d5a3234373738383737363638373535363532302e2f3135 +3838353330323335353432322c2c1b99e028352e73ffcfe9823ffa661ec8 +b61c6bee8c2c37454e466f846f3d484a7f785f50424043403d3e4452606c +4745413e3f4143444f465a644d506971513c3740414149c2d4a9986f9dec +999f7d90e9c2e1db4889e0f3b33c413f43403f423f395052565555555250 +52523d230f456663373a36332f2d29263229302e6691897c736c6359524e +49464146453c414e4f433f505b5a4b44669cbee5fa8e6ea29ea56e464a45 +3b4d5252444043301c302c2b32393538538f6467585a4442487685887a49 +54475151433e3a3941333338503b95bab6998c99b4b8b1b2946661816147 +4f529eb79fc899525983394e7d634149494544464744403d4141403f3f40 +40413c424748444858688554393b3d4748384a5771b5dde6d6c8c6b6c1d9 +d7dbe0fdf7c9d67a5b665888e7eeffbe393534b4c4a2b076484d59352928 +231f222c323595ab968c533e3f49afa4a8b34a5a5c45503f413f392a388a +bff2dad2d7e5d8d4e3d5e1c9d1d0ddf88f98b6905c8fa1a49f54794b3e4c +464749474744424142403d3e3f424242424444444545454647454d4c4a48 +49474746374850405da8c0b8764b354a30333f47525d6888655239564b68 +75616b4e4e793b6d8d98ac4e5094ffe56f5b2e30393b2f2f91e7edc98450 +425275547c6245344f444b6e725d59c2b12f4a52c1ffe7ffe2b7fff1f1ff +a0c8ffd9ffc6355a50454a4c678d84633b3e4240413e3d39383639383737 +3b3a3a383435373b3c3c393732343537353432312d3024a9f53f4d4487ff +defa9757ff8540e9d43883ff9b38414b514a72846f3f4f52878067584a48 +4b4947484f5d6c77514e4b494a4c4c494f42545e4648646f5644404a4e4f +59d2e6beaf87b6ffb3ba9aadffdefdf563a2f8ffca52565457514a4b4941 +afadaba9a7a5a3a2999b784a2b5f5f2c18110f0f1214171a170f1b256d81 +756e67615a534f4c4a47474c453c3d484c44364352574a33436c98bfd592 +3f5c3b5842171910397376852c121a12141b2127272923131974424c2634 +0200288393988826150c1b150c140e1914201a42817cb2d7d0c4c8d7e9e4 +e0d9e79470a23912150a46756888430016510f0917100f17171514141514 +0f0a0e0e0e0e0e0f1112180d0d1719100a0f23503e08041210131c3361b0 +d3b8cededbe9eae8e3d5e0ead7c7c0452140363bc7d9e38f171100357b5c +7d5914154a531b1c1915181f221da9c2adae6c4f240e7183898702080701 +0f00120a00376e647caeb0ad857668735a4a535cb1d5b89d53596c621a1f +262a43114607050400000a0a0a090a090b0b0606090a0c0c0d0c0e0c0c0b +0b0b0c0b13100d0a050606071300190a00281d3760636d773880777c5623 +417b7c6421000c1a230f050900430012452a2a000017575d2a3a22221a0d +070f210a00161d0f0c01494a5600000e000e23251f000093c813190a48cf +36361f38da3b14b8a61d281ba8cc0016071c0a00011b3a1204090c0e0f0f +100d0b091210111114151412111214171919171513141516161513121d15 +104bd6360a0c20c76b281e0cdb790078d41b0fb2b4221a181e140b2d2300 +00081113030000000004080300031625373431313434312c302533403735 +2f180c0d080b1520104fa8998d8157a88ea07c477a7e7672363e5f614021 +3031221e2e3e41348081807f7d7b77766e745934226069403a3834333435 +34332b20282d7080726b655f57504a45403e3e433e353745494233404c51 +442f3e6a9ac4dea15374577253272d25508c91a2472c302525282a2c2628 +2618218155633f4f211748a3b3b8a645352c3b362d342e372f392f56938b +bbdbd2c2c3cee0dadad5ea9f80b75530362d699a8fb16f1f44803f36443b +393f3d3c3b3b3c3b38333a3a3a3a3b3c3e3e41353542463d3a4053826e38 +34423e3b384976c2e0c2d3e0dceaebe8e4d7e2eddbd1d463496f686df5ff +ffb03630185aa78aa9813732636629261e18181d2020badec8cb8b6f4430 +95a8b1b12f3636354a284c422862958599c5c4be93837280685b646ec5eb +d0b86f758a823a3f4650764b8040403f3839403e3b3b393837383537393b +3b3d3c3d3d3d3b3b3a3b3b3b484744413e3d3d3c452e4734254c3e577b7d +8791529b9299754667a6ab9756314150564238403b843e5e947670333346 +75734050383a3529252f432e243f463e47438c8f9b4643583d5569696037 +32cdf83f43336ef358553e55f85933d7c33c4b40c8ec1f3b304d443f415c +764b363838393a3a3936333138363333333432302e2f3134363635333132 +3334343331303d352d65ed4c1e1e32dd813f3825f5941097f23728c8cb39 +363945444069643838434c50403f36363940433e373c4c5e73706c6a6b6b +6c6d7870808b7e786c503d3934363d46316cc3afa29163b498ac8e5c8a8a +7e793b4064684d32474f44404a595d5252525555555552514b533c1d1358 +6a47464744413e3e3c3a322831387f90857c726a6259514d48434348453d +414e544d3c49565d523e5280b3e1fdc2769a7e956f4046406fabafc06245 +45342f2e2f32343a392b349266755364362c5fbaccd1c2614e4350493e41 +393f363d32579584a0b8ad9b9ba7b9b7babad7917db8593b494385b7aecf +88325186433b4a44474b4641404041403c373d3d3d3d3e3f4141473d3d49 +4b423e445583703a34423e434d6189cee6c1ccd5cedadddeded4e1f2e6dd +dd6b51777178ffffffc34842276dc4abc69a4a406a6c2c28221d20282d2f +caecd9dd9f845d4bafc3cbca464d4a434e284d432c689c8ca1cdcdc69c8b +7b8871636e78d0f6dcc37b81958d454a53597a4d8447484743444c4b4946 +4340403e3b3b3d40414242444544454544454545504c494645444444503a +5440315a4d668c8e98a263aca5ab895a7ab9bfaa683f47525a463c433f86 +3d5c91747235394e80814d5d43443e342f3a4f3e35515a50554f9596a048 +45573f576b6c663d3bd8ff4c534585ff74725d73ff7348ebd54e5e53ddff +344e445c50484a627e543f42434243403f3835313937353538393a383433 +35383a3a37353334333434332f2e3a343372ff63363446eb8e4d4739ffaf +2db4ff4f3edddb4741424c48446a663a3d49525545443d3e41484b464247 +58697b7872717272726f776c7a867871674f42423d3f4953407cd4c4b7a8 +7bccb1c4a471a1a0938c4f55787a5e42555a504a5562685aafadaca9a6a5 +a4a39a9c75452b696d3919120f0e0f101112150d1c347f7b706c66605954 +504c4a47474c473c3c454c4b343b4b5a543a3c5b85afc7be6c5b54803c0d +190c50877a9a3c090b0e2b292826241e2a24168884d9d7bc330017676273 +8f25140c1108071614201413155bd1d0b9d5cccbd5dae1d9ddc6e8c5b9c2 +271a18003da5b4ba56001250201816111813161816110f0f0e0d0b0b0c0d +0e10121420140e161d1509030710445722000f170e20518cc5bcc2b0beba +b1acc0b8b2bfa6c6d67c6f82540d2f21404a1a080037c6bb9f5d3b465d62 +171a1a181d22251b7081757b62502a0292b4bcb11b0a0110000d0d00304d +3a2346a4a35f07262c0e2b2f260f537c5812110e001f163f4f41260d5204 +0a0000000708080808090b0b08090a0b0c0c0c0c100f0e0d0d0c0d0d0e0a +08070707090a150e748b0612126edad4e1bf50d9c0ddd48888ceb7d1a300 +030504020709001c041b7d61410600000011051d1a2c34321c120f131a13 +090a0500374342050000001f2f0908000055ca1e0f0716e4b7b88718e386 +056ed71a2d81d594132b15010d0300093c0b0b120e0f0f0e0f0c0b0a100e +0e0d10111111121213161818161314141515151413130e0f1617b9844c42 +25a1a4546f3785df88b0c0344bcdde6e2a2327270d1d3d06001200080005 +00040001060705020301130e0f0e11110d0905030a0a040b11040d191411 +152006212e1b29381f26252d342c2a21273d464642453941373a2e36253a +4b5280817f7d7c7b78776f75562f226a774e393835333131302e2c20293c +827a6b68625e564e4945413e3e42403736424a49313845544e34355683b1 +cecb7c716b964d1d2a2167a297b75a23212139322d27211a27261c9194ec +eed54f1235878293b1473830362d2b383641312f2d70e4dfc0d7cecbd1d4 +dbd4dac7eed0c9d74036351f5dc8d9e18029417f5048433d443d3f403e39 +37373736373738393c3e4040493b37414a453b353942768953313d432f3c +6aa1d7c9ccb9c2beb5b2c8c1bbc9b3d7ee9d97b1833b594661693a28155c +ebe3c380585d6f70201f1a171a1f1f1d829b8f967f6f4a26b8dde6de4a3b +3246324b4931637d634867c0be771d3c3f2140443d266a96722e2d2c1b3f +365f6f675744893e433b3739403e3c3a3938383838393a3b3b3b3b3b3f3e +3d3c3c3b3c3c403f3d3c3c3e3e3f473ea2b63039358ff9f0fddb6cf5dffc +f4abaef8e4ffd3313d413e3c43463b665672d3b6915043342031223d3a4e +59574238373d443e343e4846828e90544b3d4d6b79504e412c8ff845342b +3affd6d7a433fea01f88f0354ca1f4b02f4b3a2c413e3a45753f3b3e383a +3a39383533323634302f2f302f302f2f3033353534313232333333323130 +2b292e2bcc945b5132b1b466824a9af39ec4d4465bdcef81403f494f3c52 +77403647354139403c40393d41423e3b393a4f4d4a474848484949495251 +44474734384039363740223b432e38452a2e2b35443c362724343937353c +384949554f573d4e616a52545556565553524c543918136478534445403c +3a38353232273247918a7f7970695f58514c4643434a483e404b55543a41 +4f5e5a42456a99caebeb9e9694bb6936443e86c0b7d5763c36304439312c +2c2938352ca2a4fdffe964274da09baccc605046483d3944404837333173 +e8dcb0c1b6b1b8bac3bec7b7e2cac9da4741473476e4f6fe983c4b85544a +484651494542403b393939383838393a3c3e40434f423d474f473c363a41 +7588502e3b4642527eb2e1d1ceb8c1bdb4b2cbc6c2d2bce1f8a69fb98d48 +6756727b4935216cfffddd966a6b7b792925221d2128292990aaa0a79183 +613ccff3fcf15c4a41503348472f6681695070cbc9832a4a4e3051554d36 +7aa5813c3b37264a416a7a705c478e424a4342444b484743403e3e3d3c3d +3e3f4141414147464746464546444745434242454647524aafc6404a48a2 +fffffff081fff4ffffc1c5fffbffe93f41413f3d43473a65526cd0b39051 +463b2d40324a455862604b43434b544f474c504b85919051483848697852 +5047359aff56474152fff3f4c251ffbb389fff4a61b6ffc645604d3c4e46 +424d7e4a45494443433f3e37353237353231343537353533343739393633 +3434333333322f2c26263236ddab726643c0c172905bafffb6ddec5e72f1 +ff924e4b535742567b443d4f3c483f4644484145494a494645435754504e +4f4d4c4b48474e4d434547363e47413e414b2e48543f4b583e43414a544c +463737474b4a474d4656535e586047596c74afacaba8a6a5a5a4a09d7545 +2458613a140f0f1014171818120d1f4984756d6c65605b55514c4a47464c +493f3b424b4f383942575b453c4d7aa5b6d2984453783e0d1904415e486d +3f070c17362f2a2a2b1c2e3317653a6e7a891b00267a6370721112131813 +100e180d0c0f294dc4bfb6cec7cad0cad0cecbc0c0b4d8d03f363415246b +6179441b15481a1a150c1108151b1a110b10171b0a0a0b0c0c0e1012151f +21160c0b0d0c030e0f2b51360b1219143e7bd9dc953c2f293338352a3478 +cfb178282c3f421a24476245110e000ecce7d57c29121f25191b1b1c1f21 +1b0e739098652e000000374c4f6107020002000116334e2d2b11141b1f74 +728a76405c8e9e75430414217b65051d1525240f140a5809090000030305 +050707090b0c0d0d0e0e0e0d0d0c131211100f0f10100e0b0b0a0b0d0d10 +000489d000131960db551e241ce2620db2b942330075cd12020f07071302 +16240900304433000003161f0d0c05192f3a3b2805010f0b090d06001741 +2800030d2c151900070a0030e33319160dd4943d4900c4b00054f02a8dc5 +8c2b0d191f1513070a0b4a1c120c0f0e0c0b0c0d0e0f110e0e0e11121211 +1415151618181614181818181817161818182d1d93c0b2b8706eaea0cb95 +4bb8a8a8713a578c99714343424b3f286e33151e0511090d070c04030203 +070a0c0c070403060809040100020200000617190e18151a172110283b43 +463e4e4a50433549495b6359696a64655353303328323a42577480807e7c +7c7a79787576562f1a5b6d4f35343435373837362b202c5186726564615d +554f4a45413e3c42423a353f494d37383f52553d344675a3badba557678c +4e1b29185a79678c5d23222943362e282411262f196b467e8c9f360f4298 +818f963738393f3a36343d302b2c4265d9cebfd0cacdd1cbd1d0d0c9ccc3 +ebe457504f31408b839d6d4644784a4a453b3f343e424138323740443636 +3738393b3d3e3c454941393b3e3f3641435f83683c3f3f355b96f0efa54a +39334044463c468ce2c9944c546b6e4449687f6231302232ecfff1953b22 +282b1b1b1817181a140e83aab2804b151f195d757d91393728393c3f526b +815d5638363c3d928ea6925b75a7b78e5c1f2f3e9885273f39494a37433d +8b3e4038393c3c3b3939383838393a3a3b3b3b3a3a39403f3d3c3b3b3c3c +3a3a3a3b3c3e3f402d32b7fb22393c83fb743d433bff802bd0d964591e9f +f74139493e414f425c705e3a8a9d84443b3f444934362f455b666754342f +3d3937434b426690774f525c79605f4448493a64ff5238352befaf576118 +d9c40868ff3ea5dfa44123323b3a413941427c4b3c343939373635363637 +3734303030313030313131323434323034343434353433322e2c402da0cb +bac07777b8aad7a158c3afad763f5c919f7c52555c6863539d62414a3441 +3b423e453f3e3b3c3d40404242413c3b3a3b3b3b3c4242352c3742403139 +33373239263c4b515247555053463b4b434d4a383f3f3a433c4932423f4b +4a5067865253545556575655535539180e546d543e3d3c3d3d3d3a382f26 +355c95857c796f685f59524c4643444a4a413f4a56583f3e46595f484156 +89b9d5f8c7788caf68354333789786a9793b37374c3c312b2c1f353d2679 +568ea0b44b255ab29dabae4c4d4c5049433f463630304669ded1bccbc3c6 +cbc5cbcbccc6ccc6f1ed615d604658a49eb783574e7c4c4c49434c3f4447 +463d373c444839393a3b3c3e4041434e51473e3f42403742415d80653942 +4c486da7fefdb255433d495050485297f0d5a05860787b545b7b9174403c +2e40ffffffab4f3239392827211e20211b1690b7c1915d29322c70878c9f +443f303e3c3e526c84615c3f3f45489d9ab4a06c8bbdcda47032404ea892 +334b4555554149408f44473f4245454544423f3e3e3e3f3d4040403f403f +4645464544444545434040404145464a393fc6ff344c5297ff88515750ff +9843eaf27d7034b5ff513e4b414350445c705b36889b8547424954594544 +3b50646f705d3e3c4c48474f5042638d72494c56735b5d454c4e426fff66 +4d4a43ffca727d34f6df2181ff56bdf6bc593a48504a4e42484985554840 +4542403c3b38383738353232353638353735353637373533353535353332 +312f2b2b463ab3e1d1d58986c4b6e5b16bd7c2c18a5372a7b79267696b76 +6f5ca3684a533e4b444a454c45444445474a4b4c4a4643434142403d3d42 +42362f3b484737403b3f3b433147585e6056656064574958515c5d4b5352 +4e544c543e494552575d7492afaeaba8a6a5a6a69f9a754a28545a341712 +131519191718111024627b6f6d6b66605c56524e4b47444c4c433a3f484f +443f3d4e5d503f415e8ba9dad26a677d3a101a064863648038151f27312e +2b33311d1e1a219999baceee6407106e668282120a061017160e16041f2b +3d3192adb59e6c616c65655e597f989eb3792d46432f11280940331c274d +120f0e070e0b121b1b110e1821250b0b0b0b0b0d0e101924210e06090b05 +0a060a031147511b100a06285c6252232f392e362d35252c3e3b353c3404 +19242669712f061f1a00161f22260722432e2121201f1f1e15053076bda0 +6f100f0013282f3d0e0f050f0e00394c194ebc13143046d7d9e6d16bd6e8 +d0eac10b1163d8b609171913110c0e055613040302050101040407080c0d +0e0e0f0f0e0d0c0c1212111010101012141414121211110f25005de01313 +0c29d8c0b58020bc6f0277e51c050c9fe3050f1b090a1f17393413001a34 +270504090005090f0906080a143b33170606150f03000b5227000940270b +11070c0f110dcc733a4b2990b349693681ea7aa4e861e1cf808551161a34 +2f1118053d2a170b100d0b090c0d10121412131316171615181616171818 +16141b1b1a1918181719271b2c16202c202c32143e2525492f433b5b4e5f +46404f475a534b4c54389887321c0e110c0a000502060b0907060c110604 +06090c0c0a07040c0f0c0e1008000b110b1711141027344c3c36434b4a4f +64646d837f86a1917e8372725858433e3e313952807f7e7c7a7a7a7a7473 +56361e57654c3537383b3c3c39362a25316a7c6c6562605d56514b47423e +3a42453e373c464d433e3a49564937395788a9e0dd79798d481f2a1a6180 +83a2573136393e362c2f261012141f9da0c7dfff7d212b8983a1a83d3331 +3a4140363c29404a594aaabebea27068736e6e686790aab2c98f445d5a49 +2c4429625946537d423f3e363c373a424238353f4a4e36363636383a3b3b +3f484739333a3c38403c3d37437981483b302a48777c6735404a3f4b444f +4148585756615e2e424945858c4a2341401f3a4042411e35503a2927231f +201f170d428dd7bc8a2f30233a545d6f43463d494a3b73824a7be53a3952 +67f8fbfff38bf0ffeaffdc262d82f7d72e3e403d3b383d368746393a3b3e +3a3a39393839393a3b3b3c3c3b3a39393f3f3d3c3c3c3c3d3c3c3c3d3d3e +3d3e512a86ff39372e49f9e1d49f3fd88b1e93ff3a252ec3ff2e3e4d3a3c +5150787b61446f87744b44432e363a403a3a3a3c466d654937364445443a +539a6f3f52876c4c4f4143414137e88950613fa6c75d7a4791f885aff26f +f2e3919561283051553d473569543b2f383836343536383a3a3835353536 +3434333232333434323037373635353534333a2b39222632222e35174229 +284f344637534758413c4c48605f5b616f58baac5642343b3839323a373d +3f3d39383c433f3d3b3a3b3b3b3a3b4346413d382a1d262d242e25282135 +4156423c474d494d5c54525c4a475c473644415046554a4b463a425e5253 +55555557575752543a1e125067503d3f3e3e403e3a382e2a3a758e7f7c77 +6e666058524e4743424a4d45424753584b4441505e514246699dc1fafb9a +9dae633643357f9ea2be7347484746392e302e1a1e202ca9b0d7f1ff933a +46a6a1bdbf4e4541484d4c3e4531474f5d4eaec5c7ad7b727d777772709a +b6bdd69d526b6a5a415c427b6e565c814441423e49444249493f3c465054 +3c3c3c3c3d3f404148545240393f413b423c3e354278814b443d3857888d +7a49545e535e545e4f56676565716e3e545c5a9aa15d334d4b2a484f5152 +2e46614a36332c272421160f4c9be6ca9b41413349616a7849493e4a4a3b +74844e80eb41415b70ffffffff9afffffffff13b4294ffe83e4d4f4b4943 +433a8c4a3f4144474341413f3d3e3e3f3e3e4141403f3f3f454546454545 +454644444444444446465e3798ff4e4f4760fff2e6b353eea136abff543c +47d9ff40485441435a577f7f6546728b7a53505141474b4f484545454f74 +6e5445445451463750966b384b8167484e43484a4d45fda0687957bee076 +9461abffa1cbff89fffcabae7a3e45616248513f7460493d44413f3a3b38 +3a3a3b3937373a3b3c393a363637373735333838373633333230382b4130 +3c4a3b4548264e35375f47594662576a575367647a7772748065c4b5624d +414743433b423f444a484443484e464443414343403e3e46494543403627 +2d3129342c2f293e4a604e48535a575a675f616e5e5c715e4c595460525e +52535349516cb0aeaaa7a6a6a6a69c987249316563351815161717130e0b +11162c7a6e6c716c66605d5754514c48404b4f473c3c444b4d4337425b5c +473b557a9cb6ce772f304425230b567e9693321e222a27342b31242d3928 +1d6d696587b4450b2499aad993150802050a1210161c403e32215d887a59 +1f151f1515140e204e5c65200f211e2b23523a6b451b235616080a081010 +1318160f111c201c0f0e0e0d0c0c0d0e24211b13120e0901030900000d12 +2449526717120f30a3b9cdbb62aabecaa24f93bbd6e2a21e232b25201d28 +230d1014384d3b2f00041b1d1b1a17161a1d180e1f15090010011708305b +66430f00000515433306005be316162830cb7937430aa7941172d52d33a2 +d7da0a050b0401020e005221000703030202050508090d0e0d0e0f101010 +0f0f111111101111121517191a181714121111003de137061427c1ae6041 +12a8b10247ea3f30164bd64f0418182d3b482f0f00010f22120c0e070e07 +0e120f050107080c153c3f2327292a2b1a24253242320f1218131c17290f +aae7c8d59273ecd2d89f6bc2c6c69b3da2a89eb6724e4a313f2548213334 +1b140f0c0c0c0e0e0f10151416171a1a18161a1817171818161518171615 +141313161a1530414136363e523c474f4d5055485a605b6f656c6b5b6155 +51444d4286bc612120191816090c02080e0e0a0506050807090d1011100d +07090506101310110e1105140e120f164144454f504f4e6465718a959bb6 +c4b5c4be9f8d77664a44513f3c457f7f7d7b7a7a7a7a717153342768714d +3738393a3a37302b2a2b39826f676763605d57524d47433f364148423939 +424b4e42353d54523d314c759abad5853f3f5031331f709bb5b5513a393c +32392b2b181e2c1e176d6f7197c65b253fb4c5f8bc43333031363e3b3e43 +635d4d3a749a855f27202b242526223667757e3a293b3440396c588b6a42 +4f86463a3b39403e3b3e3c35374248443a39393839393a394845413d3e3f +3a34384136323f4454797f923f36304cbbcfe2d07ac4daebc670b2dcf9ff +cb47474b3f383341402e3640677e6a5a24263b3933312c2a2e322e25362d +23192c21382e58879576453837404f7a68392a86ff3b394b53ee9e5c6a2c +c2ac298aef474fc1faff3330383332333d308152333e3c3c3b3b3a3a393a +3a3b393a3b3c3c3c3a3a3c3c3c3b3c3c3d3d393a3c3d3d3c3a39381d63ff +5a263345e0ce7d5e2fc3cc1c61ff594c326af570283c3c52607360492e47 +576851454137423e454a473f3a4041454b727354585d64675660606d7d6a +4344453b4238482abcf7d8e5a283fae0e4a972c9cbcb9e42b0b8aac07c5a +5a485f4b70495958383435373737373737383b3a38393939363535343333 +34343231343333323130302f2a2039484337333b4f39454f4c5256444a4c +495e565e6256605a5b525e579dd67d3e3d3a3e3e353b32383e3e39343234 +3d3c3a393b3c3b3a383a363236332a27222618271f231c204a4b4852504f +4c5a4947555147585b4a5c60504e4b4a3d415045424d5453545455575757 +4f52371f1b6172513c3c3d3c3c37312a2e30428d817b7f786e666159544f +48443e49504944444f5553473a435b5b463c5d89b0d3f2a2605e6a494c3a +8bb9d4d16d504b48383c2b2b1c25352723797d7fa7da723e5ad1e3ffd053 +443f3e414942464a6962543f7aa497773e36433b3e3e3a4d7d89924b3a4a +42514e8372a47d51588a483b3f404c4b4547453e404b504c4140403f3f3f +404256554e49494641383c4238334045567b849949444161d3e7fdeb92db +effcd681c4efffffdf5b5d6258524b57523d43496d8370612f3248453d39 +312b2c2b221f3c3930273a30473b64909d7a4737343e517d6c3d2e8cff41 +3f4f57f2a4626f36d7c641a2ff5e65d5ffff45414b454342453487573943 +4343424242403e3f3f403c3d3e3f3f3f4040434343424545464743434545 +46444443472c76ff703f4f5ff2dd8d7041d8e13378ff72624a7fff83384c +4c6272836f553a5163746258564d5752595b544a4347484c557c80626668 +6667565e5c69796741454a434d475a3dd4fff1febb9cfffafec48ee5e8e8 +bd60cbd2c4db9772715a6e567a53666648434240403d3d3939383c3b3a3b +3e3e3e3a3c38373737373332353431302f2e2e2c292242585a535056644a +535b5a616855575857706b787f747f77766c7268abe38b4e4d494b4a4045 +3c424848433e3d3e45444142444342403d3f3d3b41403b35292b1e2d262a +24295355515b5a595765575567665f727966777a66635c58474c5e53505a +afacaaa7a5a5a5a6a29a6e4130716c301715181b1d1a1511131b318a646b +736d67615d5855504d473e484f4a3d3a41494f412f3757614e3b436592a1 +d6b43a35351f17004f85a7862d1a121d1c3a27221e1e2212126794a4a5a9 +2400004b4c8379040a130a0006101b3649301419182134474d5c583f5068 +6d292116505a5918141d0e45203a1b07095118060a080c0c1416110b111c +170a1211100f0e0c0e101d242a2b190507150405090a05090f0fa0c42a20 +1842d4c2ad9e40d3b688b5b5aacebda96906221f1b2a221f1e1218034175 +330e0d0f00060b0b080b151e201b16170f1a1c0e12070949602a08071514 +3f2b0a15002ee44018220fd7dcd3b7059ab70044e75666e47dd11d0b0f10 +100d12004e2b000b04010507070808090a0b080b1013171a1a1814120f0d +0f111315101415161614110f14193dca6a383e10b49b38633677dd568be2 +6bb59e73e96b11242c3929551d0f060e001107020b1a18060a0b0d060411 +0314101b1a1e2f181d2523262b112314191b0e1d351c454d4f6761596c43 +555c4d665744544358555a373d4c413e4e39363b895e484115150d0c0e0e +100e0d0c141315171918151419181717181817151413131112121314160f +152e483f47403e59514d6c545f79808689787a7d6c73685f6c5a4e474faf +781a1f111614070a100903060c11130e0a090b0e1313120f09111112160e +09120e1204191c281e14443954454d516360647c99a6c1c2b1dabec6bcb2 +a783635e4e474646807f7d7b7b7b7b7b77754e2c28747a4836383b3e3f3c +342f2b2e3e9066666b64615e57534e49434034414a453a373f4952443034 +525a44303a6190a6ddbf494645312c156ba5c9a850392c332b432c231917 +1d0f126b9cb0b5bc3a0a146b6ba7a2323a453c30373d435b6a4c30353438 +4050566a6752657f86443c326c7675332e3427613f5d403136814a383b39 +3c383c3c373137423f323d3c3b3a393939384145505345343747393a3e3d +36383e3ccbec50443961f0dec7b85cefd5a9d7d6cbefe0ce8d2a46413946 +3e3e3f373f2f74ab663f3937222b2c2a2729343f403a32322b383c323831 +357a9360403f4d4f7b6541462957ff633b4532fafff5d925b5d1125eff72 +82ff9df44334383b3d3b3e2b7e5c30423e3a3e3e3c3b3b3c3b3d38393939 +38393939393b3c3c3b3d3d3d35363a3d3c3c39373a3d61eb8652572acfb6 +537c4f90f66fa5fc85cdb688ff812c3f47554878463e3b472b4c3e353948 +4b3e4243453f3d4a3c4b464f4e50604a4e5654585b4151404240313b5133 +5a5e566c6863764e6064526855404f3b504f5c3b415247495d4e5058ab80 +6a63353735373939393735343a3938383a39363338353434353533312d2c +2b292727272625191e344d4149403c564b425e424a5d56565a4b4e564b5a +59586d615b5862c58d3139313c3e353a40393132363b3b39393838393b3b +3a3a363e3d3a382a20252225162827312519473c54454b4f5f4e383d504e +5b50365b4251555d624e3a464749494c5655565455555558555835191d6d +7a4a393c3d40403d36312f34479c757a82796f67615a56504b473c49514c +43424a535749353b59624f3e4b72a5bcf7db66605c45412b81bce2c1664d +3b3e32482f251d1e24181c76a9bec5cd4f212c8487bfb641485047393e43 +4b6373573b403f465a6f75878670849ea45f574a828b8a463f463b765471 +503d3c834b393f4046454645423a424b493a46434441423f42424f565d5f +503e414e3f4042413b3e4441d1f45b524a75fff4e0cf72ffe7b8e3e5dcff +f3e1a3405c5a535e565352474e3a78ad694442412d34352f2a292f363534 +363d3643473e453d3e819762413e4a4d7c69464b2f5dff69414b38fffffe +e232cae82975ff8898ffb2ff58484c4e524b47308261344742414543423f +3f3f3f3e3a393b3c3d3e3e403f414142444649473e4043444544413f454b +71fe9c6d7545e2c7649063a4ff85bcff9ce5d0a3ff9941525a6a5c8c5a50 +4d583b5e524a505f5e4f5352524a46534352505a595b6e53535a58595d41 +5141444637455c416b727289847c8f647679687d6b576653686975565a6a +5f5f72615f66b78c766f4443414040403f3b37363d3a3c3d3f3e3d383d39 +3a383939363431302d2928282826221a234060586058516759506d525b6c +62626c6067736a7a7877897b6e6870d39e434a40494c42464c453e3d4247 +474241403e40434342413c4446444438303329291a2d2b362b1f4e435c4d +565a6d5c474e6364736a52785e6c707477624c565758585aafaca8a4a3a5 +a7a9a88c7742286f5f31181617171817161817186873726c6e656a5d5e5b +4d51564440414c5245353b50514a353c4d55563d3d4e7798b6cb8809191e +19081c35323e34150c2a463e24150f0d0e111225598cc6be3210051d2948 +5d15090b00000a1c442b159460001f0967e3b3afaa54d8b29fcb488bb59c +b458171a0215090d0705124a1b07060d172817120d0e11120f0a0d101517 +1612131422283e730e11050f051504060c0e120081d3524a2250e56c5c5b +51d2994781dfaad4bfa293100f1910160d15091c1a1f2d33240f0a0b0a0c +0a0d0d0c0d101a211d160e0b0c0b0704001e2e19030a2435260009190518 +e64e0f1f0cb6b77a670a6ac4013ce263bae9b2e959072213191513024c2c +0007000401000f08000b00050900303d34443c373e1b0b0e100004170b12 +010d1508100d17241eb5eec5d2748eecbed3af71c5aeaa903e6da6a2a454 +4a4a4e3e465b3b0c27120b0b08090d0616110d0e12120c060a1b21140707 +09080b111616171c27311b122820111e5a5561665c575e5d585e61616166 +696b6965685c54524e474140393eb1a1460f0f09090a0c0e10100f0e1212 +1113141618191914100e12131314130e0a0a0d0c0f121200222f41394142 +3f4e585e61769393a2aaaeada8a0998f7c6b725b524a59c5c80922280e09 +0008010f0b0a260004181111110f0f0e0e0e0f0c0d11130e0f110b021b1f +136b93104441484e4b525f6e638ba9b5bbc4cccdcfc7c2bcb1a592695548 +454583827e7d7c7e80817f69582f21746f4b373939393734322f2b297279 +74696a5e64575855474b4e3f393c474d402f384f56513a3c4b525036364b +789dbeda981e353e392a405b586458372a465e5235241e1b1b1e1f32659a +d8d44c302944547388433a443737414d6a4b2fab7b1b422876ecbcbcb967 +edc9b9e666abd5bfd778363923382e353232427c4d39363c46543f3b3537 +393b373335393d403e3d3b3a444a6299393d3541374736363a3a3e1fa3f3 +6f6a4270ff8d7c7b6ef0b5629cfac8f4dcc2b231343f3b433a4234454049 +5c64533a322f2c2d2b2b2c2b2c323a413a34313034383836325568533b42 +5c706737444b303eff6e2f3f2cd6d4957d2386e3205bff7fd6ffceff7523 +3e2f38363a2f7c623743323e382f423b29433240422454553f4843445a41 +3b44423030433741303c45353d393e463bcfffd6e083a2ffd3e5c185dbc9 +c9af5c87b9afac5f5f646859627a5e3251413b3e3b3c3e3747423e404444 +3e383c4b514437373937373c41413f434c543c30453b2a356e625e5f5b5b +66655f615f5953515353515059534f53555452535058ccbe683437343435 +3739383938373938363637393b3c3c37312f3031302c2a21191716131418 +1d0b2e3a4b454d4b46504d483d43564a4f5255555251535753526a605f5e +72ddd91c3c4c3a3d3942374039344e262a3e3a3a3a3a3a3b3a3a3b383839 +352f2c2c24172a28166a910e4340484e494e57552a3e52544e4d4d494d49 +4d5455554a38464948485c5a56545355575d5f4d4420176d6c4a393b3b3b +3a38363532317c85817a7b6e7263645f5155594641434e54473941575c57 +4044565d5e46485e8cb1d5efaf33434b46364c66657164433551685b3d2b +231e2124273b71a7e6e25b3f395564849852484d3c3b445273563ebb8e2d +553d93ffdddcda87ffe8d4ff80c2ead3eb8d4b4e364b3e413b38467d4e3a +3a424e5d47413d3d41413f393d3f4546464343434e546ea442483f4c4252 +414247474b2badfe7d77517fff9c89887cfbc06ba3ffd2ffead1c4444754 +4e564d5547575357666b5b433c3b36363233312e2e313940403c37383c3e +3f3d385a6a543c41596e693b4a523947ff793a4a37e3e4a692379bf7346f +ff95ecffe4ff8b3954454c4741327e64384436423d35463e2b42303c3c21 +545945514b4c5e443d46493a3d50424b38424938403c434f49e0fff0fda0 +baffe8fdd99df2dedec474a0d7cfd07d7475796c778f744767554f4f4c4d +4d4655504c4b4f4f474145555b4e4141454140454848474a545a43384d42 +313d79727b807a767b7871726d68626060605e5f6c686567686564646269 +ddcc743d413b3d3c3e40403f3e3b3e3b3c3a3b3d3f40403b383638393836 +3228201d1b19181815022a3c54515b5a565d5b554b54665b5f626b6e6f71 +777a736f82736f6979e7e92d4d5a474a444d434e48425a333547403e4040 +4141434344413f413e383433291c2f2d1b70961349465058575f6c6a3d4e +6367616162606561676d6e6e624e595b5959b0aca9a5a4a5a8a9a2876e3a +2469582d1614151517171719192a6e70716a69646a5d5f5c4c4f55473d40 +4b5348383c4b504d3633404f5c4c37416388aece9d350d24321307434849 +0f040718231a131418221c070516190c1a1c000c0c0e445e440400080003 +18361a0a0ec388000c0c86a9232e2542d64315ad6aa2831e4f240015244e +2e0a0b25084919040a11152213100d0e1011100d1012151412100e0f2626 +30510a0d050b031004091011160354e721598882e3ceb2bd98e9c77caee2 +83b98492ea5e0b171114090f04151312262e220f0b0b0b0c0c0c0c0b090c +1217251f17100c0d10140b1a25282a31312700000e201a19d18c575740af +b6474c4768d96b91dd7480aa99d4651122252e2516003146000d00050f01 +02080f0100040f056eb88e8c9c92af5e000006081109080d000c110c1811 +13363f707e79906b64856673796a7d63545d566162596458625c675b5790 +8a1f4c2f1b10060609070f0d0b0d121413100f1c20150b0b0c0b0f171c1a +1514171e221920242b0a2a6164695f5a5f5d5960676e767d8286847d7266 +5c5750484443452f7b913d1215110b0c0c0c0e0d0b0b1212121213141617 +1715151415171618150e0b0c0e0e0f10151a0b234e3f42494d4f5e616a8a +a8b5b8bec2bfbcb5afa59879705956493c82b612131a120d010004040d12 +4245180f1312110f0e0e0c0c090a101818110a0a08191f233e68a33b3c38 +4450515867766c8ba8bdc5c5cbd3d1cbcbcbc2bcb18e5b49474686858280 +7f8081827b6351281d706847353737373433302d2c387876736965606457 +595646494f41373a464e4333374a57563a363e4b55452f3e648db6dbae4c +2f4a5839306c7172362929393f352b2c343e351f19292b1e30371c30363d +76906f3030433e4352673f2623d8a118322e99b6323f3857ed5d30c888c2 +a34172472035477356353855397b4b353940414e3b393637393a3936393b +3e3d3b393736484852773239343b334034373b3b40276fff3b74a5a2fff0 +d4deb9ffe295c5fba0d6a0aeff7b2e3d3e453c4235423939525a4d373130 +2c2d2a2b2b2a2b2e343944403c39393e454b45545f606065655f3c33454f +4039efa873745dcccf5d5c5983f688acf88f9bc3b2ed7d2a3b3e47423b29 +627d374a3d404838373d463d3c454a368dc78c849696c4842d34413f4239 +3a3f323d413a443b39575b868f859976789a767f8371876f66726a726d5f +645d71717e7572aca93f7058463e35373d393f3c3a3c4143423f3e4b4f44 +3a3a3b37393f42403936383c3f34393b3f1d3d6d6466606067645c5c5653 +5253545452524d4a4b4e52515154584492ad5d38403e3637373736353434 +39393737393a3c3d3c3a383736353230291f1513110e0c101c26162f594c +505557515042374553544d4d4d4c4a4b51585d525e56605b5598c6232d40 +42463f3a3e383b3968693c34383a3a3b3b3b3b3b35363b413d342b292431 +2e2a3d639935373744504e555f5c2d374b58544a484b49475057575c594e +464b4849605e59565354585b5c493f1a1368654437393939383735343341 +82828077746f726565625255594b41444d554a3a3e505d5b433f4b596555 +445178a1cbeec25c39536142367277783d3132424a403736373f39232030 +352a3d42273c4247819b7f3d3b494043536b483236edb72d4747b7d6515d +5674ff784be3a2d9b855865b374c5b83623e3e593d7c4c393f464a57433f +3c3d3f403f3c3f414443413f3d3d51515c803c423e47414e42464b4b5037 +80ff4c85b5affffadee7c2ffe99acbffa6deabbaff8d415051564f554655 +4c4a5f6356413c3935343230302d2d30363b4945423d3e434b5049566161 +6063635e3e384c574b44fab481826bdce374757196ff9abfffa4b0d9c8ff +954051545b52442c6680384d42464f3f3d41493d3b4144328fcc978fa29f +c9852e354546504745483942433a433a3a5c6694a39db69290af8d979c8b +a0877c87828c8b7f887d8682908685c1be56886c594e45454a4449464446 +4b4d4c494855594e4444454245494d4b45404144473b40414624447b7e83 +7c787c766b6a6662605f5f5f5b5c5f605d5f616262666957a4bb6a414744 +3d3e3e3e3e3d3a3a3e3e3d3d3c3d3f4042403e3d3f3f3d3c34291f1d1a16 +1312141a102d5d545961635e5f51485766675f6167696b6f757a7d6d7467 +6c655ca3d6353e4d4e514a454a464a487577483d3e3c3e3e414143433e3f +4247453a302e283535304369a1393d3d4e5c5f6a777540475d68665c5a5f +5d5c656e71777266595a5a58b1ada9a6a4a4a6a7a08568342367532b1512 +1313151516181a43756e6f696467665a5e5c4848524b3a3c47524b3c3a42 +4b513e333848605839364d739fc8b572080d2f11056564400002090e0e0b +0f160c182529261f17110707170b0f1c64442d140d0008342e0b211a09bf +8a090e006ed994ad2a45e71c00b16fafcf8eba5d08132047310a05170650 +1e040e0f081312110f0e0e0e0e0e101112110e0d0d0f2a2621290a0e090a +060d040a0e0f12094dcc100b0a39d6521d262ab5a62068d72b632f51d670 +130f120e090d04191d1d1a22190b0b0b0a0b0b0b0b0a09090a0d12244158 +646768686f70757b704d1e000b0e040b2127c4edebe78e74e1eef2c53edf +f0e79935063e386e503245463e3a44221f55000100000005030001000000 +00006bf7b9a0b296bd830703000009000809060e0e111e1315426b5b5a65 +676e5c5a686070836d73797f9f92848477866d5e676151acd138200e0a0b +090b0d0a090a0b0c0f111415121b1d140e0f0f0c12171d1b120b080a0a0d +0f0c2817336c5d5e56535a5b5c697180919da4a5a69e86776e66594d4747 +4132528325141e0a0c0c0c0c0e0e0d0d121112121315161716181a1c1a1a +1919160e090a0c0c0e111a5217224c4444495850655b6a99abbebdc1c3c3 +c1beb9b1a98b7c6363583f64b7451f150f06070005000f11426d210a1211 +110f0e0c0c0c070d1823241a0e0b0c172021442a3f12222335474e576475 +638eabb5bbc9d3d2d2cdcdcabdb9b495604e4b48878682817f7f7f807961 +4b221c6e63453435353532312f2c2b507d727168606362565a5845454f48 +3739444f48393741505842363644595131314b76a6d3c487283355372d8d +8d6926272b2f2b262a312b3843453f383029222539333e4e9b7959403f36 +4570663b46361ed1a025311a8af3aec94461ff3806cd8bcbebaad67c2633 +406a5835324737814f353d3e343f3a3a383737373737393a3b3a37363636 +4c48434f32393539343b32363836392a66e026242354f3723d464ad3c43d +83f248804a6bf08b32323b3b383e33444644464e443331302b2c292a2a29 +28282c2f3146647f8f979b9da4a7aaaea27d4c27404030303f41dbffffff +aa90f8ffffd44ff2fffaab4718534d84694b60615a596a4e4f8c2b413836 +2c3f3c2e3e293736281984ffb598ae9dd6ad3f43373943323838333b3a3b +4637375f836e6971717c767479666c765f656c779b928685768a7a6f7a76 +67c5ed5743343339383c413c39393a3b3e404344414a4c433d3e3e383d42 +4541372d29282526231f3928427a6a6d6662676258574e4f525452504f51 +484a4b4d4e4c4e535143659a41364435373737373636363639383737383a +3c3d3b3d3f3e3b3835342c201613100c0b0f1b551b26534d4e525e4e5339 +314e4f544b4a484645484f57645b605765645176c456393b3f3f433c3d34 +3d386891452f393a3a3b3b3b3b3b3639434c493d312a272b2f284325350b +1f2235494d545f5d263c50504b4c4b4745444c5050555854494d4a4a615f +5957535356595a4739141266604236373737363534333359887e7e766f72 +7064686650505a5340424b564f403e47565e4b3f4352696146456089b9e5 +d798333c5e403595936f2d2f3438332f33382d374548443d37332d2f433b +4655a281664d4a3d4871673f4f4231e7b73b4730a2ffc7e15d79ff501ee5 +a3e3ffc0eb913e4a557d673e384b3b85533a43463f4842403e3d3d3d3d3d +3f4041403d3c3c3d55514d583c42404341483f4346454a3d7cf83d3a3767 +ff814c5355ddce458cf94e885578ff9e46464f4e4a4f4557585551574d3b +3a383433312f2f2c2b2a2d3034486884959b9fa1a8aaaeb1a37d4c294447 +39394a4ee9ffffffb69effffffe961ffffffbf5b2e6862997f6175766f6b +77575993334a4141374a4736432b3735281889ffc3a5bca7daac3e43393e +4e3c424039403b3a463738638d7c7c898c9687858b7c8390797f868fb4aa +9fa195a58d7f8b897cdbff6c59494749484a4e4743434445484a4d4e4b54 +564d47484843464b4f4a403632302e2d2c26412f49857d847d7578726767 +62646768686360635d5f5f605e5c5e63615576aa4f424f3e3e3e3e3e3e3e +3c3c403f3d3d3e403f40414347474442403f372a1f1c19141212164e1a29 +59565a616c5c63494462646a62606464676b737a8375776b74725d84d568 +4a484b4a4e474a424c47759f51383e3c3e3e414143433e424a525143352f +2e3236304b2b3d1226283f565f697675384a5f5e5b5e5f5a58586267676d +6f6a5b5b5a57aeaaa7a3a1a1a2a3a28867342a6b532e1512131515151819 +1d59776a6e6a616b65585e5e494551503c3b445050433a3a40534b3f3843 +5c5a48373f5e8ab8c2a51b0029120f5d602c0a0a09090e12110c04081825 +261d191b150d1400000c4c2c2000031f28230d090b261db76c001b1f6db9 +43600c43e82500b66a9880048cc72222131a130c0f0a01522208110d030e +1012120f0c0b0c0d0d0e0f0e0d0e11152b2c201412120f0f0e0e0a0b0f10 +12102ee09b878f45d6bc9ea570abdca2d1d959b8dadad87c573d271d1912 +00020f0e0e1610080b0d090b090a0a0909090708060c0f100e0906050000 +000d100c0b0d00121b3a5e41637e749477365e55696e587d6d665b775e77 +646866676f645d77937b315100030204030600001e240000170846dbac94 +9d75b1841a171841300d0507090e090e180d122b636075765f6c64608776 +7e957f9f9584928c8f967874786b6b6c5494c43a1b13171a120c0a08090e +11110f0d0f111217171210110f0b10161c1a120c09091113180d20112759 +5557504e575b61738498aab6babdbeb8a3968c7e69554c49413b4daf3d15 +14080d0b0c0d10121314101011121314141512171c1d1b1717191b130c0a +0b0c131a2e7d4c37455a5b5d5d556e576aacb1b9c1c6c7c7c7c7c3b9ae9d +8f72645d4e6489642f1a0d00080601090d0c1f4b180e100e0e0d0b0b0b0b +090d172123190f0e17162e2e3c251c1a111229434a515c6c56789ab6c5c7 +ccd2dcd5d4cec2c1bc9f68554f4c8483807e7c7c7b7c7b644a2223726348 +3435353432312f2d2e667f6e70695f6761545a5a46424e4d3938414d4d40 +373943584e3f343d53513f323c5f8fc0cdb83b1e4f383785895531312e2b +2c2f2e2b282f3c47453a363a362f3c252d4387634c243354625a40342d40 +30c981133a4290de66832c62ff3f11ce82b0961ca5df3e40323b38343a37 +30835339403c2f3a3b3b3b38353435363637383736373a3c4d4d42393a3d +3a3b3a3a34353635352f44f1af9ba55befd5b9c18cc7f8bdecf474d1f0f0 +ed93725c4a43423d282d38383a433b3132302a2c282929282829292a252b +323637363636332e313a3c36313528383c55715375908aac8e4d71647475 +5e80706b607e668273797b808a837e9ab8a7618634434446414432335e69 +4a404a2b5ae3a88d9b7fccb0545b5e867048342f323531353a2d2e447a72 +8482697c807a947367735271685d7474808d70727f78787d66aadd563b38 +4048423e3e3a393d40403e3c3e40414646413f403e3a3c414441372f2726 +2a272b1c2d1e31676a6e6761635d53524e4e504f4c48484c4e5052534e49 +4a4f4a485ec25732362e35363738383a3c3d3737363738393a3b373c4142 +3d383534312518130f0f12182a774735455e6364604e59302c5a4f4c4947 +454444474d545e61695c60625974947349403d344442393a3933456f3c34 +393a3a3a3a3a3a3a383c444c4a3e352f322a3b353b2015130e122b454b4f +5856202c4456564c44454d4a4f53525b5f5c50534e4b5e5c575450505255 +5c4a3814196a60453637373736353534366f8a7a7d776d766f626868514d +59584241485454473e3f4a5e5749424b646252465173a3d3e1c946275841 +3f8d8f5b3838363434373630282c3c48483e3c3f3d38442b34488d6a5730 +3d5a645d433a374d41dd96284f56a6f17a974177ff5628e69ac8ae34bbf7 +5658474e4840433d3688584048443a434241413e3b3a3b3c3c3d3e3d3c3d +404356564c424446434645474243454548435cffcab4bd72ffe9cacf9ad3 +ffc8f5fd7bd8fbfdfea585705e5856503b404a4845494237393631312d2c +2c2a2a282a2b272e34393b3b3a3a3732353d3d3532372e4145607f61839e +97b89c5b807788886e8f817e73917996888d90949f9791adc8b46f94424f +52545053404068704d434d2f63eeb79da989d3b1555a608b79503c37383a +31343b2c3148827e979882938e87a486818e6f8e85788c8c97a287879189 +898f7abff36c504b52575049494343474a4a4846484a4b50504b494a4842 +45484c483f352f2c312e322335243a727b807972736c646565676a6a6762 +6064656868665f57585f5b5970d3664042393f3d3e3f404242433e3e3c3d +3e3f3d3e3d42494a46413f3f3c2f241c1816181d29774b3a4f6970746f5e +6a424170666362626163646a6f747b7b807171756b84a8865a4d493d4e4d +46484642527b483d3d3b3d3d4040424240444a52514438343933443f4327 +1d1a151a37525d65716d30395164665e5858615f64686870746e60615c59 +ada9a7a3a1a0a1a1a38b6635326f52311714141616191c1d276a75686c6b +626b65555d614b435053423d404d524a3d353d555348383a54595741394e +76a3c1c2580e36180f21361c0a0d0b090c120e04090f0a0110281e000d04 +071511001b3d29263b391c0300151a150fb59324303370a00a171a3ad06b +47be68a6b947a3c312201a100601110d004b210e110e07150d10100f0d0d +0f110f10100f0e0f1317262d23111a151211110e11101a282c2e26bcbdc6 +ed5172b8c7dc8d76bcc0c7734c88bcc2a27f8e70827073612f0f130d070e +09050b0d090d0a0a0a0b0b0b0908110e0b0b0b0c0a080a0304060605162a +22201c325d535457484b5a61706662766b777d7f767c7976796165696658 +4e67a4ae35240100040d060000173a691c3b432d0e69574b5137314b5047 +2e5a281402050c0d0a0b0c0f121c5564807771706962757892a599aca9a8 +9d9a958a877c75756c785e607d3a251b1b1708040b0f0a101516110d0c0c +1011110e0e0f0e0b10131716100c0c0d10161a27622c0d5d585853505b60 +697d9fb0bfc7cbcacdc9beb0a6957d63544e4e3d49ce6e1f0e140c0b0c0e +111213130e0e1011121213130f14191a181515161c160f0b090d1a28314a +361f133f4c5a625e755467b4bec2c3c9ccd0d2d2cbc1b0a59779655b4d52 +3f5a2a1a12020a030411050e081810130e0d0d0b0b0a0a0a08080d13140f +0c0f0a10175c3e181f1111132b484e4e5765675a6cabd0c8c6d8d5cfceca +c1c1be9f6c5a54508382807e7c7b7a7a7c6749232b76624b363736353332 +303035747b6c6e6a60696151595d473f4d503f3a3d4a4f473a3440585346 +34344b504e3a344d79a8c8d275325c3e374961473334302c2d302c253139 +3228364b4123322d344646375877554e676a4f34293c382c20c6a53a4b54 +96cb343c3d59eb815bd07ab8c959b5d72a3a362f2a273b392f7a503d403d +3541383939383636383a3839393837383c3e484d4536403d3a3c3c383936 +3e4c4d4a3acbced7fc6184cad9efa089cfd3da87609bced4b592a3869c8f +968655383c38333b342e32302a2c272828292b2b2b2a312d2d2e33353635 +37302d2e292734483f383042665c5d63585d6c717c6c63725e666f716973 +71747b69747e8179718cc9d464593c40475047393b567eb26980724b2071 +544853454f7b8d8f7aa56f502e272f2e292928292a3168758d827c81857a +786766664c58585d5f6970727571777c74836d7293554440454538364044 +3b3f4445403c3b3b3f40403d3d3e3d3a3d3e403d352f2a28272929326b33 +11676e7268605e55494953504c48423e3e444c5154565148484c514656df +83392b3634363739393a3b3b353535363737383834393e3f3a353332342a +1d1510101923263e2b180f41526064575e2b265f584d4847454547484c50 +535f675c5859535d4a6a443e4038443d3a4231352e3e363a3a3b3a3b3a3b +3b3b39373a3e3d363432252423603c12180c10132f4b5150555338182050 +6751424d47444a50545e635f5658524e5d5b5754504f51535d4d3715216e +5f4838393838373737373e7e87787b786e776f5f676b554d585b48434653 +564e413a47615d5142425c61614c485f8cbbdbe2833e65473f51674d393b +36323438342a31373127374d45273831394a4a395b7b5e58706f53382e43 +423a32dabb516067a9db444e506dff9873e892d0e271cdf044534c433a34 +4742378258474a47424c3f3f3f3e3c3c3e403e3f3f3e3d3e424552584f3f +49454245454445434c5a5e5f55eaecf3ff7b9ce0edffb198dde1e89267a2 +d8e0c4a3b89db3a4aa99684a4e483c403a34393631312b2a2a292a282a29 +302f2e30353939383c3331302b28364a45423b4f756b6c7165697a7e8a7c +75836f7680827b868689907e8991948c849fdce7766b4e505861594b4d67 +8bbb6f8578532c7e65596250577f8e8e7aa87558373035332b2929282c34 +6f7f9e9692939084877a7f836c7a787b787f82828581868e87978288a86a +58525552443f484a42474c4d484443434748484545464542434446443d35 +322f2d2f303872391a717c8379706f665e606d6c6b66605b5a5f66696a69 +6257565a625767f1964a3b423e3f4042414243433c3c3b3c3d3d3e3e3a3f +464744403e3d3e33281e18171f292a4233201d4e60707367703d3c767068 +6463636466696a6e6e777d706c6f69735e7a534c4d424f4846503e443b49 +41413d3b3d3d40404242403f4044433b36362e2f2f6c471c2013181b3a5a +62656d6948242d5f766457625d595f656772756f63655f5baca9a8a5a3a2 +a3a3a18a623437714e2f18151516171b1f2137726d6b6c6b636764525a64 +4f434e544b403c47524f41344154534d3c324e5b5d493942658db2c89e35 +21080c00170c020a0f0c09090d0e0907090d18201f18212213232316072a +2c4e5216000a111328100896ccafa5754dc19a9d904cabb3bbb92e44a9a1 +a9501a222e384126210a194a1e130d08060f090c0c0e1113151614141411 +0f0f11142227201518130f11110f16142a4e5557495c5d74827373766a80 +7b809c808f86a098868c988d9790907c958c4f100b04070c08060d0d080d +0b0a0a0b0c0e0d0c0e0d0e0f100c010005040b16170f0b0f13151f396f73 +71645861655d4e7276728e8685878b7a8979726d746f6e6c5f5c87ad3202 +0400000000000508299a3f3e5856224842312e251e2a434450832a000007 +0e0c110b06231c175c71786d897775746f89adb6c1c5bbc9acad9f879b8a +777969736c597b9312080d0d06040e10090f1415120f0d0d0c0d0d0c0c0c +0d0d101011110c0a0a0d00241321af8921515a5e5b5b64666b7eb1bec8cc +cfd0d2d0c8beb3a690755f55524738835a352d1b100e0f0f100f0c0b0d0e +11121313131210121415151314151b19140e0a0c1c2f6332241e11354e68 +606370515b9cbac7c2c5c9ced3d2ccc0b5a69785756a58484d7738180c07 +0a000b1104150f0c13100c0a0a09090909090c08070b0b0b0d15202321e7 +b5242c1413132c4a4e4a505b7b6d5b6b9bc8d8d4d1d0d1ccbeb8b0936c5a +5552828281807e7d7c7c7a66452230785e493738373534343332447c736d +6b6a6165604e56604b3f4b51483d39444f4c3e334154514a362a43505440 +313f6390b7d5ba59452e32273f372b3336312c2a2e31333433374048453e +484e40545850436157747a4123353835432318a5ddc1ba9071e8bebdab63 +bcbfc6c4394fb3adb8602e3a4654604a483445794d423c37343b34353537 +3a3c3e3f3d3d3d3a38383a3b444742373d39353737353a364a6e72725c6d +6c828d7d7a7c6f858086a286958eaaa5939aa59da6a0a492afab72363430 +3437312d3230292c292828292c2e2d2c2c2d2e3336342a222e2c2e353329 +232426262c417276776b646d6f634d69675b6c5f60656a5d7268666b7b80 +848b827fa7d05b323d383b433037444a6ce48c838777355445343537405b +838b9bce733728242b282a231b372e266b7e84789487898164666d5f5955 +4c605262625975726e7a6c7a77688dac2e2c343c363943453a3e4344413e +3c3c3b3c3c3b3b3b3c3c3d3d3c38312b272613331e28b48c21586a716b62 +5d4f3f3d575049413c3a393d42464d53534c494a514d40906b4a44383639 +3a3a3837343334353637383838373537393a37353231332d251b11101c2a +542114140d34546e635c5b2a1c485355474442434446474a535b62646666 +5c4f58874f3a3b3b43383f41303d37323939393a3a3b3a3a3a3a3d393638 +363436383b362dedb31e240f12163350544f504f59391b1d3d5b5d504b4c +565b575d5d59575954515c5b5856525153555b4c331426705b46393a3938 +38393a3a4d867f7a79786f736e5c646e594d565c5346424d5653453b4b5e +5c55443954616753465278a3cae6c86551373b2f473d31393b3732313535 +32313135404848414d5145585c5244645e7d8247283b3f3e4e3128b8f1d5 +cfa381f7ccccbc75d0d5dcda4f65ccc5cf7947525e69745a57405083574c +464141463b3b3b3d40424445434343403e3e40424e524c4146423e40403e +4642597d84877a8b8b9fa998949485999396b294a59bb3ad9ca5b5adbbb7 +bcaac6c08649463d3a3d373238342e2f2b282827292b2a292a2c2d333736 +2c24322e3238362a25272c2e354e8187877b727b7b715b7a7a6d7d717176 +7d71867b7a808e94999d9693bee67148504a4f564449565a7cef948a8f80 +4362584747454a60858d9ed37a3f302c312c2e231c3830297287948aa897 +948a747a877f7c796d7f6c777466827f7f8c7f8d8b7da1c0433c4346403f +494b41464b4c4946444443444443434344424242423d37302d2b1838242e +ba93296279827b746f635655736d6760595757595d5f6367635a5658615d +53a37f5d564841424343403f3c3b3b3c3e3d3e3e3e3d3b3d4142413f3d3d +3f382f241b1924315b291f1f1b42647e726c6c3d31606e6f646262626263 +64646a7076777b7d77696c975f4645464e434c4f3d49413d423f3c3a3c3c +3f3f414144403c3d3c38383e46443bf9c02a2f161a1f3d5e646368656745 +292d4f6e726763636b6f6a6e6d686667625faaa8a7a5a4a3a3a39d885f33 +3b72492c17151516181c20244b77676e6a6a6360634e576552444c525442 +3740505245363e4d515746304555604f3c3b5679a0bec06609000a0a0e04 +04090d0d09080e140e000a1d1500001a0c1200000517030216090803050a +11342f363c50615e673e1d4b3844552c4f5d4c503e45502b453e46414458 +8a805e1735451313090609060e0d0c0e1316161513141412100f1013221f +15160f120f1212101a1130656b6b756e6a757c7e6f959799a2939ba1acb0 +9da8a6a89e898e9d8d7099a26b201c180c0d08070f0d080e0e0c0a0a0d0d +0d0b0f090300020912180c060001060b1115121c19286b63675c6a625c70 +6f77737d8a898a8d9483928e918e79655e60636079a339100f0900010800 +0000178b36002c3b2a4340261f1b231f1f0200220d0d010c0f0d1c130b49 +640c5274706688727a807495b8bed4dbd6dbbec1b9a6b4998b8678767b77 +9fe7301e181a130f0e060c0f10100e0d0e0e090a0c0c0b0a0d100c0f1010 +0d0b090b10322e1b85812223515c63686f6d6e7cb5bfc6cbced1cfcfcfc7 +beb49f846a5a524f3846514641211411131415110d0a0f10131415151414 +1412111013141616181d1f1a100c1a30572b1312121c48565a626f64586e +9bbec1c2c5cacfd1cdc2bcac9a8d7d72654f719e5b26070707050f051311 +1614120b0a090908080809090e0a090d0d0c0e17140f11c8b1252a20100f +29484c4649516e807459699dbbb2ced6dfd6bdaea68d6355525180818080 +7f7e7c7c76644221347959463938373534333332557f6b706969615e614c +556350424a505240363f4f5144353c4b4f5440283a4a554635375378a1c7 +da882b233032362c2f3236342f2b313a382d34473d222540333b2b2a364d +3b353f2e2d282c2f32514548495d6e6b765034654e546131505b494e3c46 +5533504d56555871a6a1833e5f71414137343732393635373c3f3f3e3c3d +3d3b3938393a47413738313431343331382f4c8186848a817980817e6b8b +898a91828a909ba49aabaaaea79599a99980adbb8a4346443739312e3430 +292d2c2a28282b2d2d2b2e292321262f383e32281d1a1b1d20231f27222c +6d65685f70655b6a5e5c50504f4a4d525b506568757f766b6f79827f91bd +5c3a42423d40453d332c59d480445e6046564d312f32474f5a4544695146 +262426222e2219546f175d7e7972937d807a575f65525755505c495b625c +726b798377798282b0fc4b3f3f464344433b3d3e3f3f3d3c3d3d38393b3b +3a393c3f3c3c3c39322c2622233f372085801f21576364605e4c3832554c +433f3e3d3d3d3b3d475156524c4a4b503f516056533c383c3e3f3d393532 +353738393a3a393939373635353634323333312819131f2d4a1a03070e1e +4f5f62605e421d1e3b514e4944434547494c595f636c6e6e6a5979ae7248 +33393d3b40333d393e3c3a363a3b3b3b3b3b3a3a3f3b383a3a383a3c3022 +1dceaf22241d10133250534b4b4c5a5f461c1c415140586272736461625f +565855545a5a575653525355574a30132a7156433a3a393838393a3b5f8a +777d77776f6c6f5a63715d4f575b5d4b3e4757594c3d47565a5f4e374b5b +66574748668ab3d8e994372f3b3a3e3435383a39322f353d372a32453d23 +2843383f2e2c3a4f3c384536352e3135395952565a6e817e8b6444745c64 +714464705e63525b6b4a6664706e7187bbb2934d6d7e4e4e4441463f403c +3b3d42454544424343413f3e3f41504d41423a3d3a3d3c3a433a5a8f9798 +a59f969c9e9882a3a09fa4949ca0adb2a3b2b3bab6a5adbfb199c5d19e56 +56513e3c35333a342e302e2a282629282826292620202630393f352a211e +1e1f2326252d2b377a747a707e7469786e6f6464635d5f666e637a7d8b94 +8b81838d9794a9d67250575550525850463d67dd894b656952645e433f40 +5359604b496f5a4f2f2e2e2732251a56711b63878882a78f8c8669768172 +79787179637073697e768996898c9596c4ff5e504e514d4a493f44464747 +454445454041434342414445403f3f3d38312c2829453e268d86262c6776 +78757161504b7169625c5955545455565d65675e58575b625265756d694f +4645474847433d3a3e3e404142423f3f413f3f3e3f403f3e3e3e3b31221b +253453240e151c2b5f6e6f6e6e533337566e6d6862615f6161626d71767f +838787748ebe82543e4449474e424b454846423c3c3a3c3c3f3f41414642 +3e3f3f3b3b423b302bdcbd2d2e26181c3b5d635f6260666a532c30566859 +727989877671716c67696665a6a4a4a2a1a1a2a19c885f343f74482c1612 +1415181c2024597964716869635a634c556654454c505a45353c4e554838 +3443516455333d4b6157403a4d6c92b0c496171306140c09110502060a09 +0c0e0c07070e120f0b0a09000c0e0603010b0d111a161a1b173349455a46 +45344c4d584f4652585964656e606b5253525d40454841448eac8e283c35 +030e090e170d15120e0f1415130f0e10111211111215281b0c1608111115 +15131a0a2c696d686b67806f8389908b9f94afaaaab8adb0ada4a0a091a1 +a98e926990a0691716140f0f09080f0e0a0e110d0a090c0d0c0a060c1314 +100c0a0a03090c0a090c0e0e122012207b676865627574777a707c9b9ea7 +a9a8a79e9597868a7c7f79615f6163852d19040c02000200050700000000 +0307112a2a161e1b261a0a00000000000411100c261a1465e21e49767971 +887e8d867394c1ccd6d8dbdbcccbc8bdbfa589828071706d84c34c29110b +0c13191312110d0a090a0c0d080a0c0d0b090d130a0c1112110e0d0d1812 +472e1e17122140505f69746f6d77b1bac1c9ced1cdcdd4cfc6bdab8d6e5b +5b454a6e8f4a33341513171a1b181310111215161717161618140f0f1416 +171719222b24170e1a2f2b35180e1b18584f5864757f5e4b7cacc7c6c6c8 +ced2d0c9bdae9b8a6c5d5e525298703e0f0a05090c0022070e180a0a0908 +0808080809090906080b0d0b0c12150f00050b101d1b0f0e28484d454850 +4b678b917458688ca4b4c8c2a2918d7d5b504e4f7c7d7d7d7c7c7b7a7564 +4222387b58463838363434333332617f667367686158614a536452434a4e +5843333b4d54473732414e614d2b3240564c373349698fb5d9b637352a3a +32313a312b2f322f2f3434312f3535322e2d2c2533373230313832323b37 +383832495b5566524d3c54545d52454b4c48514f5b4e5e4a5157634b5158 +5358a7c8af4d635f2f3c373c4539403b37383d3e3c3837393a3b3a3a3b3b +4c3d2e3829322f34323035254380847e837d9079837f7e727e6d857f7d8b +808b97989a9e95a7b0969a739fb284383d3e3a3b322f352f292d2f2b2827 +2b2c2c2a252b333734302d2d2527251f181718181d2b19247d6969666472 +6962594345574f525556585554605a6d6a7b81737a7b7597473c313f3939 +3b313e412c412e3938323648412d35384e4a40393b3a382a2525231d3325 +1c6de723507f837d9583846b434e61554f474a4f48545b5a63616c7b7d72 +727590d5654837373d484e4843403c3938393b3c37393b3c3a383c423a3c +3d3b372f2925291f4e311d120b1e41535c605e4c362d514942404343423e +3a3b45545a554c4952444f769b59434a393e424543403b3837383a3b3c3c +3b3b3d39343436383735333a3d35211721301f250c06191e615d64686d64 +2d05264c6059514d4e52555a6167686b5f5b655e5aa5875e393c393f3d26 +4c2f364035373b3c3b3b3b3b3a3a3a37373b3a38383933250d0d0a0d1a18 +0f133152544c4d4e455a71683a10122e41556f715d575b5d545755565656 +545350505253564a30142e7355433939383738393a3b6c8b738075766f66 +6f5861725f50575b634e3e43555c4f3f3d4c596c5c3a4351675d4a455a7a +a2c8eac5464136453b3940342f3134323335342f2e3437343231322b383b +3535353b3837403c40403b5469647662604f67677063575d605b65646f64 +725f666b796169716b70bdddc05d726d3c494449544647413d3e4344423e +3d3f40414040414458493842323937393a383e30519094939b95a9929b97 +948793829992919f949ca3a2a4a9a1b7c3abb18cb6ca994b4e4a403e3634 +38342c2f312b2625262727252026303332302f2f272929221b1b1a1a1f2f +1f2d89767b78738379736c575a6e64676c6c6e696a777183809298898f92 +8daf5e5044524d4c4e424f4f3749343f3e393f534f3d45485a544a414443 +42352e2e2a2439271e6feb2756888f8da696957c59667d736f68696a6068 +6e6c72707e8d90848788a6e9795a4442444e524c4a484441404143443f41 +4344424044483e3e403f3a342d29302554382319132953666f7373624d46 +6c655d5a5a59575254555b656b625a556356628bb1705c5f47474b4e4d4a +4340404142434444414145413d3d404242404046493d2a1e2735292f1813 +262a706a70747a75421d41687d766e6967696a6b7075777b737381786fb6 +976b4545444b4b33583b40483c3c3c3a3c3c3f3f4141413e3d3f3f3b393e +3d331d1a1818232117193a5c645e616353647e7850262b485d6d85846f65 +676c666a6869aba8a39a999da09f9e7e583a27594b2b17111717161f2a29 +6b686d706c665f64624f4f646045404f564c3d3947565346304550575d47 +3945545f513b3e5680a1b2c34c0a1024120b0a070a110f05060e0c0c0d0d +0f0f100f0f0d0d0d0d0c0807150f0a132c0f1c3d4f4b535a4e4952596b6b +676c726f7b99916e685b595a48555149463b84999521170a150f01080b15 +3825120f12121111100f0f0f1012141629170f0e0a0c0e081408201d2364 +7d716d7b747c8f919895a1a5a6a9acafb2acbbabababa2a09e94956f8e7d +4d331d181314130f0d11100b110d0b0d0f0e0c0b1010100e0d0c0b0c060c +07050f111014103958136462606b6b7a6c7d7c949da2acb2afb7ac9eaca4 +a18c8f747b6e6c6abab40b200c0b0c020004050b0d010002080b10161c1d +1a151d1a120a0707050412100a14323f145c9c432f4991757e8c988866b3 +c8cadbd9dcd2d5dad1c8c8b18583857981735466384e2f091e10110b1011 +0e0e161d160a110e0c0d10110e0c0b0b0f141717120e1d0e374b2d1c1613 +1d565f5761676a649db3c1c1c6cdcac5d3d4bdcfb39170605d415dc3f57c +503b120a0f1a1d1719221c1f207f2d191a131914191a111419162328342e +180b28563f251414091f4d4b61576e8e804c486c89abc5c0c7e7f2d6aca2 +9a726c575b4e48262f1017130a030b0e0f1111110f0c0e0c090707090c0e +0b090d11110c090e111313171d1f1c181a0c1b534751474645495f7f9a95 +79797bb6c8aa9592816559504f5081817c7574787978775a3b2820605b45 +393739362f333b36716c6f6f6b655e63604d4d625e433e4d544a3b374554 +52452e434c53553f2e3a4954483437527ca4c5de6727324838333330333a +372d2c342f2f2f2f2e2e2d2e2e2e2e3033312f2c372c272f45232e4e5d57 +5f63554e5354584f47494a434e6c674b4c4850594d5d5c55554d9ab4b445 +3c34403a2f363941634e3b383b3b3a3a39383838393b3d3c4d392f2e2829 +29242d21373136778e8688948583877e77686a6661606164676c918f979f +9ea2a39b9b75988c635042423e403c3633322f292d29282a2e2d2b2a2f2f +303131302f2e25281f171a1815191c47631c6b66636e6a71595c4b554f4a +484a47544a42585c655f716679787e7cc5bc1d3b31393d363338393f463e +374242403f41403e3b394446443e3b3b372e2e241b233d47185d9d443250 +99818b8d7f5b28605f4f52484c444b56535152585f7a8078827a6078516d +55334f45464041403d3d454c4539403d3b3c3f403d3b3b3b3b3d3d382e26 +2e193c4b2a170f10205b6253534a3b20454b4b434248473c3d403c666259 +4e4e544060c9ff885e5136343944453f414a424545a4523e3f383e393e3f +35363b363f434841251631593a1e0e120d295b5d73646e805b16021e3551 +6258577887765e66715b645c675c533345303f433c373b3a393939393a3c +41403c3a383a3b3d3a383a3e3e393737312a23211f1d19171d13245d5158 +4c4b4d4d596a77643d35326d8770666c63555a5b5a5b5b5a534b484c5051 +5840291a165858423a383b39343a433f7d787c7d79736c716e5b5b706c51 +4b5a61554642505f5a4d394e5a61644e3e4a5a65594447618db5d6ef7837 +3e54413b3934373c392d2d35313131313131313133333334363734323930 +2b334c2c38586a656d72676167686c655e5f625a65837d61625c636b6070 +726d6c63afc7c6554e44504a3c43464c6a54413e414140403f3e3e3e3f41 +434559453a393231302834283f3c4486a0999ba897969c928a7c7d797674 +76787b7d9f9ba3abacb1b6aeb18db1a37862524e4443403b3637322b302a +2628292826252a2a2d2d2f2e2f2f272b231b1e1e191d1c4765217572747f +7c846c6f606a676260615e69615970727e76897f91919694dbd1314e4348 +4c444146474c4f433c444646474a4c4d4a4953534f494646423a392d2328 +414a1b5fa149395aa6919c9f9470417c7d6c7065675c646d6965686e748d +948a978d768c657f623f564b4a44464643434b524b3f4643414245464341 +3f3d3e41403d322a351f4253311e171b2f6e7362645c4f375d64655b595b +5950565a527773665c5a655273dfffa07866444045504f494b544b4e4ead +5a46474046414748414247414b4e53482d1c365e4125181d183368697d6d +7a8f6d2d1c384f6b7e716d8b99846b727f6b797281766743533d4b4d4742 +4747454543414140423e3d3b3d3f434542404043433c373b3c38322d2c28 +221d22192b665d68605e5a59677b8d7a564e4d889f86787b6f626e717071 +acaaa7a1a0a3a3a0987852362b5c4d2c171416171a1e2836706d726e6b65 +5b63674c5164634c3c4d554f42394253554a343e4a565d4f3e3c4e57503f +3a4a7094abc2921b0f11110a0a0a141f1c0f090f0d0f1010111111110e0f +0f0f0d0a0807050d1007151a1d34544f5357525157626d797a7e8481879b +967c7869615e4d5250535d466f6e562c1d0f1a14060a08101e1207090e0e +0c0c0f0f0e0e1012141624140d0f0b0e130f201801090f637d7d737c7986 +8e8b99a4b0b5b8bbbdc2c4bdb3b2bab7a59ca1a2a48cefcd392a2d241516 +151011131310120f0d0f11100d0c0f0f0f0e0d0c0d0c0b0e09030e121218 +1c698f1a487874606a7873747f99a1b2afbabcbcb8b5afa29d949ca9a57f +6f6df9d8353b3017060a10110b090e0801070403070c0f120f0e0b0d0b09 +0b10101003121612252959b82600072c716e727a8a8a6caec9cad2d1d2ce +d3d5d0d2dac77773837c7b727fbf96171b130b15100b0c0e0d0d1319140b +100e0c0b0b0b0b0a0c0b0f131716131019153d441d0e0f12145965515763 +5f49769ebec3bab9c5d4cbd5c6d6b595746252524866be9e8539140b0e17 +1913161e15140d5721151c170f1a2e301c1115141f1c1c1b140d17291a1b +0a1012244f4b4c616b6d859a865c4b66808ba2c5c5a0a697927973564f43 +5b402a181c050e0c0c0e1111110f0e0c0d0a0a090a0d10140f0d0d11110c +0b10111211141c201f1d0e1d1f3c424f475140484b4c648396a6b8e1dfa9 +7d706f6b4c4646498283807c7b7e7c797154352424635d46393a38363331 +3640766f716d6a645a62654a4f62614a3a4b534d403740515449323c4652 +57473634434e473633436995bad8ab362c33363131333c47443730332f2e +2d2d2d2d2d2d292a2c2c2a2927262329281c2628293e5d585c5e55505351 +45434040433b415758464d4a4e574c58575b68558184714d403644403438 +363c493b30323737353538383737393b3d3c48362d2d28292c27352b121a +1f738a8e8f988989816c6a6565605c5a5a5c5e64738398a19a9ca4a7a992 +f5d74b454e4c3e3f3c353434322d2e2b292c2e2f2c2b2e2f2f3131302f2e +2a2a1e151917151d28789b2551807b63696c5c4a414b454a3f45474a4b4b +504d555a74919d837d7cfbdb42525141343a40413a3a403f3b43403e3e3e +3e3c393535373735373a3a341f2929212e2e5ab825000730797a827b6a52 +2658605250484744494f4c4e55604d6a7b797c788ad1ac363f3d3b474540 +3d3d3c3c4248433a3f3d3b3a3a3a3a3a3c3b3b3c3c372e272a2041441a09 +08101e69715755533d122b40524d3f3b47503d4b4f736c6356524b514a6c +c6aa944f38353841413b3e463b3a327c463a413c343f5355403537343d37 +322f221a22301b1a0b131931605f607273696e7452200b203237466a6e52 +6869766b725e5e53664d40364234403e3a3a3939393a3b3c40413d3c3b3c +3f403b393a3e3e393939332c242020201e1c112528474c574a5850565148 +53666e7886b1b383605b6167535252555c5c57524f525352523a23161a5b +5a433a3b3a3938383f4a827c7f7b7872687073585d706f584758605a4b42 +4b5c5c513d47546065564543545f5847435379a7cdedbf473c3f3f383837 +3e4744362f33313131313131313130313232302e2c2b252a2c212e31354a +6c676b6e666064645d5b59595b55596e6f5d615c61675c686a707c6a9599 +845e5347544d41454347504136383d3d3b3b3e3e3d3d3f41434554423a37 +3030312b3a321a242c829ba09da69898927e7c787973716e6f7274788493 +a8aea8a8b5babda8fff061585f584443413b3a393731312c2a2a2c2a2726 +292a2c2d2f2e302f2c2d23191d1d1a2026759b295a8d8b747b8070605863 +5e63585f6163626268646d738eabb59e9793ffee5360604d41464c4d4441 +47423c43414243454848474443454442444646402a31302633325eba2a05 +0f3b868a928f816d42757e6e6c625e5b60676466727b637f908e918ea0e5 +c1484f49454e4b4442434242484e4940454341404040403e403d3e40423c +352d31264a4c2310101b2a767f6362604d2540586a6554505c6555646587 +7d6f625f5b635f82ddc2ab644841444d4b45485044433b854e4249443c47 +5c5e4c41434148423d382b2228361f1f101a233a6a6a697c7e7780896939 +23384a4e5b7c7e607373827a8473756a785d4e414d3e4b49474545434141 +403e413e3e3d4042474944424043433c393d3d39322c2c2a262216282d4d +56645d6a5f636159667c86929fc9ca98726a6e75666a6a6dabaaa8a4a4a6 +a49e99764f3336614e2a14171518201924487771746a696656626c465161 +66553748515449393b4d55503f363f535b594935445052483d3c5b839fbd +c74b100e0f0f0909121c1a0f0a0c1011111113131314111315130e090809 +09000f1b1a1d272d5953515557575b69789196979f9d9da39e8f8b7a6d66 +55565854532f627d3637200f1814090b060c0f0c0a0f12110f0e0e0e0d0e +0f11131623130d0e0b0f161200241e88a26e8676787d7e8a877f9aafbfc4 +c8cbccd0d0cab2b4bcbaaca2a1a59e83ebe4392c21241517161213161715 +1214131112120f0c0e0e0f0e0d0c0c0c0d0f09040f1217220c3550051e5e +6f6d7b7976557aa3a9bcbac1bfb0b8c1b5ae9b9c9dcdbe86706d69974b2c +23170a1011150d070d0e080602010204090a0a090e0f100e10161514120d +0401241d52722a1d141f506e7e8fb092578ebcbcc2d2d3d4d3ceccd2d8c4 +85788b8b847a9df0e52c1c1d0a090c08090c0d0d0f12100b0d0d0c0a090a +0d100d0c0e12161614121625585b33211c180e495349525b5b50476590b7 +cacac5c3d7e1c9c59d8472654b675d4454313c26150d0d131410131b1514 +032b19131f1c0d192f35231818131c1c1c1715110d0c10260e161927594e +4a5a5f5c74969a867978767995c1c7a79e8a806f6d5a59585c4f231a1d00 +0f0e0e0f1111110f0c0b0d0a0b0c0e10151813100f12110d0d110e0d0c10 +171c1e1c22090837504c47554e4a4e595a555b646e837c635754514e5d57 +54538183817f7f817d77725232212f685e44383d3735372c31507b737368 +686555616b45506065543647515449393b4d55503d343d4f5753432f3c48 +4a4035345382aacfdc622a2b2f312e30384240362e2e2d2d2d2d2c2c2c2b +282a2c2a252221222317222823232d335f5b59585653504c3c434341433f +3f4a4a46504e51554f555b595a3a73924f5641344240373a35383a353338 +3b3a383737373637383a3c3c47352d2c26282b2510332b95ae7a92869297 +8c8872565d62625d59555556595d5d7089989ca0a7aca589f1ec48434148 +3d403d37363736322e2e2d2e2f2f2d2a2e2e2f3131302f2e2c2b1e161a19 +1a2617415c10286878747c705d28364e434a4447453842514b504b5b6daf +b0867a7767965440413d353f3d4138343d403c3e3e3e3d3e3e3c38343839 +3733363a39342e2618132f225170271a14235a7b8f908f5a123b5c4e4a57 +5455544e4a4d515b5b6f83878480a8fffb4b4047393b413b3a3c3d3d3f42 +403b3d3d3c3a393a3d403d3c393b3b372f2927325f5e321b141b22667060 +615b4b2c0c18314b56534b47596b6372605b5a5a4768624c5f3d4d3c3937 +373d3c383b433b3a28503e384441333f555b493c3a333a38342e26201a17 +182b161d22346a62606e6d626b817a604f493f3b517c876e726c706b7367 +6a69675b363843283f3e3a393939393a3c3d40413e3e3d3f41433e3b3a3d +3e3a3b3d332b221e1e1f1f1d2711124259544a5c5e5c5a5c5648454b5267 +65504a4e4f516563605f5b5c5855535554505338201325605b41383e3939 +3d333a5b878081767673636f7b556070736244555d60554545575f5a4a41 +4a5d6561513d4b57594f44436292c0e5f1743b393a3a36353b4341352e2f +31313131313131312e3032302b2726272417262e2c2f3b416d6866676662 +6160555d5d5a5c595760615a645f60655d636c6c6d4c85a563685244504d +44443f41413b393e41403e3d3d3d3c3d3e40424553413a362f2f30291438 +339ebc8aa2969fa4999681686f7475706c6b6b6d6f7474859aa8a9abb5bc +b89fffff5d5550544546443d3c3c3b36312f2e2c2d2d2b2829292c2d2f30 +31302f2e231a1e1f1f29133d5c14327489869085723d4d655b645e605e51 +5a696268647387c9caa095907ca6634b4c463e47464a3f3941413a3d3e3f +414246474744484946434346453f392d1f17332656752e211c2e668b9fa4 +aa772f597767636c696a6965646a727a73849a9e9c98beffff5d50534342 +473f3f4041414346443f4141403e3d3e414441403f3f413c362f2e386765 +3a251f242b6e78666865563a1e2c47636d69625f7183798670696868587a +766175536151494543494844454d4645315947414d4a3c48606654484640 +45433e362e27201b1a2e1923293c746b6b7978707c949177655d5450668f +977d7f767b7983787e7d796b45434e314948454545434141403e413e3f3f +43454a4c47444143433d3b403b352d27282624212a131446625f596c6d68 +686d675c5a61697e79635b5c5c6078797675a9a7a5a1a2a4a29c9f795133 +43664c26111813162115255a78747764696a52636f444f5b665c37424d57 +513d364654564c34364a545e53343c49535547374a7192b1c69027170d15 +100a0a0d0c080a0f1011131313131414141a1c18110b0a0d1804141d192f +793e5b5852535a5a5a6984a4abaab2b5b0aea8a29c8b796d605d59595a45 +a0db3708210b120f090b060d10121416171512110d0d0d0d0f1114162516 +11100c0d1310142a1bc3f8469189777d7f84797aa2b9c8d0d3d5d6d6d6d3 +c1b7afafb7b1a399957280a94d4d281f17191a1516191b19151716131112 +0f0b0d0c0d0d0d0b0c0c0d0f080710131927392511050f386876817e7e45 +7cb6b1b3bcbdbfb1bbc3b0b5a3a48cc1ac7d706a4ad7cb5322261b0d0511 +0f0a10100a08050304070b0d0d0e14181512141716120a0a110e1f232e21 +10150b19456b7587ad9b5769abc6c6c4bfc8c7c8d4ddddc6937a85857f70 +7bb5c2702b1618000e0a0a0d0f0e0d0c0c0b090b0c0b0a0d141a0e0c0e11 +15171514051946452a211810203e3e47524b566a6155597a9cb0b7b9d2df +c4b3857469625e6158545516141a160e0d10110f141b1e2210171b14201e +171219211f201f1715252c22150e0d0b0f1c0a1103165c4a5a585a5f6267 +819d98989ba3b6ccc39d91837562595051535950291b1c080a0a10121312 +100f0d0b0e0d0d0d0e12161917131213120e0f130d0c0d11191d1d1a0f10 +252c344457463f3a3b4c53526163545a575862615854515150527f807e7c +7d7f7b75785534213c6d5c40353e353338262f607a737562676951626e43 +4e5a655b36414d57513d364654564a323448525a4f3036434d4d3f2f426e +98bfd5a23c31293632303033332f2e312d2d2c2c2c2c2b2b2b2e302c251f +1e22301a24261c2f783d5e5e5855585249433a4649424445404242495352 +50535357585c604eadee4e254230393b353a353a3b3b3d3f403e3b3a3636 +3636383a3d3c49362e2c24242622223524ccff4d98968e93887b5c495a60 +5e5b58545252545959616b83a1aea9a59e7985af595f43413d423f3a3737 +38342e302f2d2d2f2d292d2f303131322f2f2c2b1f1a1d1c1e2b3f2e190e +1944737e8676671a385e473f46454539434f44534f60579f9c7a777148d4 +d365404d463a323c3a353d403c3f3f3f3f4142413e3c3f3f3a3636393834 +2b272a212a282f1f0b120b1d4f78868c956e1f2355645c554e5453525c62 +5d626d7280837f7687c7db8c4e40462d403c3b3d3f3e3d3c3c3b393b3c3b +3a3d444a3e3c393a3a38302b16264f492a1e1212365c5f6469585556381a +0c1e3846494d6a81757459585b5b5d645f5c612526343a38373a39373c43 +4448353c403945433d383f474546433935434739281f1c191b28141b0c21 +6a5b6e6c6c6c6562738a817b7879869d96787675726865606263625c3c37 +403339393a3a393a3b3c3d3e42413f3d3d3f41413f3b3a3e3d3b3d3f362e +28242422211e15192f363d4b59494b484552524e5858474f4e5160635c5a +5a59585a595955525153524e593b22133265593d353f37373e2e396c8781 +837075775f707e535e6a7369444f59635d4940505e60573f41555f685d3e +44515b5c4e3e517fb0d9ecb84f40373f3b333334322e2c30313131313131 +3131313537332c2625273018242b253b864d6d6c666266615b585360625b +5d5d5859575b666360605d63666b705fbeff60375340484640423d404141 +4345464441403c3c3c3c3e40434555453c372e2a2a2425392bd5ff5daaa6 +9ea1978c6e5c6e74726e6d6a69696c72747a8092aeb7b5b1af8c9bc76f73 +544d46484742403f403b3334332e2e2d2d272a292c2f313131312f2f2520 +2321242e3d2b1b13235285919a8b7b2e4f745e565e5e5e525c665b6a6777 +71b8b695938b5de5e0714a544d403843413b40403b3c40404345494c4c4b +4f4e4a444243423d342f2f27302e3424121b15285b8898a0af8b3c3f707d +72686267686a788180848689979b99909fdff1a1614e5337494340414342 +4140403f3d3f403f3e41484e42403f40423f39331e2e585234271e1e4166 +666a6f5e5d61482c2035505d626583998a876a676a6b6f777271773a3a45 +4a4643464543464d4f533e4549424e4c46414a5250514f45424e52412f26 +211c1926151d1127736579777a7c76768aa0958f8c8d9cb1aa8985827d74 +736f7273736c4b434c3c4343464644444241413f403f403f43454a4b4945 +4244433e3d423c37312b2a28241f151830384455665857535160625f6b69 +5b605f616e7068686b6c6b6daaa6a19d9fa4a39d9d7750314e684a220e15 +10141f142a6a7572775f6a6f4d626f4a4a5463603e3c49575744373f4f59 +573a333f4b5d5a3e3340505a523a3f5d83a2bac45d120a1b17100c0b0c0c +1014101011111111131314191d19120c0c0e0c1323122374ff7c555c5753 +5f5b55668cacb1adb5bbb9b4b2b0a596826f6a655a595d4d9fee531b2f10 +0f0a070a070f0d111211111111100d0d0d0e0f121517241712120d0f1515 +2c271b91db2a697e7981837f717eb0c2cbd4d8d9d7d6d8d6d2c4aca8b9b6 +9e94aa631a7b473c3b29191c1f1a1a1c1d1c191c1a130e100f0a0d0c0d0d +0b0a0b0b0b0e0909110f13244f460e100b378877717f8f4c72afb1acb4b5 +bdbfc0b7ababa9a87e9f8e74726769f6f7782d1c0c010210110d100d0b11 +0a0a080b0e1113131115120f101413100f04120f24654b30232112285d7a +7f9790ad773f64a0c5c4bfc6c0c7dcdac4a699838c837d726675655b2c0a +1c080f110f1111100c09080a090b0c0b0a0d141a0e0c0e12151615140a0c +1d130c16110f334842444a3d485f6f696872787c8fa3b5c9bab084716356 +565d5b5962392218140f0e0f1112171d1d291f151e161c1d1b101014151d +231e12262e20110c0d0d100e0d1b00136458585c585057666c67757a8893 +98a0987f71777164585a5a5855493b1c1018080d10121312100d0c0b0e0d +0d0d0f11141619151415151010130f0e11151d1f1e1a1a20130c616f6a66 +697373715b4f5d4d585d5a55534f566aa7a7a7a6807f7a787a7f7c767653 +331f476f5a3c323b32313625346e7470755d686e4c646e494953625f3d3b +48565744373f4f59573a333f4b5b583c303d4a544a32375987acc4d36f29 +243738332f2e303032362d2d2d2d2d2d2c2c2d31322e251f1f2122272e15 +206efb78545f5b55594f403b3a46453b3e403b3a3e494e524e4b53585458 +6055abff6a364f3437363339363c383a3b3a3a3a3a3936363637383b3e3d +48372f2d2424272336302298e1306f868a9084704b446160595956535150 +5457595b5a729fb1a7a2b66b2081524d52493d44443f3b3a3a373235332c +2a2c2b282d2f2f31323231312c2b221e201a1a274f460f1513439584797d +7e27355c4b3f4443494b4c47414c55644a7d7e747c716af7ff8b4e443b32 +313d3c383d3d3d433d3d3d40454645433d3c383335393a3734272f26336c +4c2d1d1e122c668a92a48895540a1e4e6861595f5a6175735a55787e8883 +7f7972867d774f3147384143404141403c39383a393b3c3b3a3d444a3d3b +393b3c39322d1c1a271a0e160f11415e5a5f6352535c5943312e2a28374e +6788838769635f5759646164714a373339393839393a3f45434f4339433b +41424136363a3b43474032444939251f1f1d211d1925051a6c64686e6b61 +626c6c646e6f777b7c847f6c66747770666a67645e554d38344334393a3a +393a3b3d3d3e42413f3d3c3c3c3c3f3b3a3e3e3c3e403a35302d2b292420 +23291d1669746a666b7776745b4d5b49565b585555535a6eabaaaaa95a58 +514e4e53534f573921113d675739323c34353c2d3e7a827e836b767c5a71 +7e595963726f4b4956646350434b596363463f4b576865493b485660573f +446aa0c7dfea833933424137333030303135313131313131313131353733 +2b2525252025301c2b7cff87646e6762675d514e515e5d545455514f515a +5f615b575d6262666f62bbff7a475e4243413c3f3c413e4041404040403f +3c3c3c3d3e41444656463d382c292924383528a0ed3e7f999ea59985605a +7777706e6e6b6a696c7278797182acb8b0abc47e369768616458494c4d47 +4442423e393a38302d2d2e282a2b2e2f31323434312f2723251e202c4f46 +131b1e53a8978e929139477060545a5c6062635d57606c7b6195988c958a +7effff99574c43393943433e423f3e44404041464c4e504f4a4b453f3e41 +413e3c2d352c3872513427271e387599a3b7a0af6c2438657d756e726f79 +92917e7693959f9b98938ca0958d634257444c4c45454544403d3c3e3d3f +403f3e41484e43414041433f3a34262331241a201c1e4e6b646668575965 +66524443403f4f657d9e98997a726e696c777778845c4844494746474546 +4b514e5a4f454c444a4b4a3f41454850554c3f4f54402c25231d1b161526 +09227770757c7a717682847980808a91939b95807785857c737777746d63 +5b44404c3f44464644444241413f403f403f424346474a464344443f3e43 +403a35312e2b241e20261c176c7a747277807f7d675a685764686561615e +657ab7b9b9b8ada8a29ea1a7a6a095704c2b546747210d1110141c1a3973 +6f6f795d6d74475f6b57454e60614f394452594f3d3947585c4738374356 +5a4f323a455556403a487091bdd29e1a0e19151110101111100e0f0f0f0f +101010100f141615100c0b0b091422243869eb57445a5c58625a4e6495b0 +b2b0babfbfbdbab6a6a08c70716d655857343d834f39411a110a0709060e +080d0d0b0d1112110e0e0e0f10131619201412130e121c1d28292e181700 +278281868c8a717bb2c8cbd4dad9d6d5d5d8d7d6baadb5ab9799a24b38f8 +c04b3a1719202523212223221f231f130c0f100b0c0a0b0a0a0a0a0a0d0d +0a0b100b1025353a0d120b308e7e708496594e7fa7beb9b7b2bab0aec1b4 +a9a6838c837777675ebfebc379270d1f090e0c0a0e0705110e0d0b0c0d10 +12131a1a181110110e09170107061d71452c35240f22656f6f8a87a4975c +494b7caac8cac3d1f0e4bea3958d9b8a7e7f73713b0e270e111b0d0f1411 +10100d08070a0d0d0c0a090a0d100d0e0f1316171614160f160e151f1413 +295550414342464658657c8c8c838a96acbba69e76675e544c61675b4c24 +121d1410100f1113181c132021171a18191c18151b1a11141e1e19202119 +12120f09140f1a28151a4f6865645a5057686a5f636570746f7478716467 +5d594b56565c58474f330b1a091413131413110e0d0c0d0e0e0f0f111314 +19161617171310120b080c11181c1b1a236b4420d7fcf0fffffdffffc360 +554f494a44444b4a4f62fbfdfefd83817b797c827f796e4c2f194d6e573b +31373231302841776e6d75596b7346616a56444d5f604e384351594f3d39 +47585c47383743565a4d3038424f4e3832447296c4dead2d253433323133 +353532302e2e2e2e2d2d2d2d2b2d2e2a251f1e1f1f272c25305ee050415c +5e585a4a3635404642393b3b373a3d4646524e4250575b56593a46936555 +613e39363439363b33363634363a3b3a37373738393c3f3f44342f2e2525 +2b28302e331c190028878d8d867345395c605556565350505557545f5e6e +97a6a2aab2573ffec8574f323d46494541403f3d373c382c282b2c292c2e +2f3132323232302e2522231a1b282f3106100e3c9d8f7f898b3a18354957 +4f4d464d43435b575762526c7579837660c2f8da9b533f54393d38373b37 +364139383a3d4245444346443e37373a3a354028281f2e7a482b32210e28 +7180849c92a2883b13062a516b6f6a7c9c916d667d89998c82898185532a +4a343c4b3d41434140403d38373a3d3d3c3a393a3d3f3c3a3a3b3c39322c +2a20201619211412285859515756574f52535c6157484b5b789185876b64 +615b53696f665b37293a3a3a3a39393b40443946453b3f3d3e413e3b4140 +373a42423b403d312927221b27202731181a516e71746d62697776676866 +6b6b63666e6c656e6a695b6462665f53614e2f4233403b3b3a3b3c3e3f3f +41403e3c3a3939383d3a3b3e3e3c3c4038342d2a2a2824202c744f29dcff +effcfcf6fbfdc05f534f4c4d47474e4d5262f9fafbfa5d5a524f50565652 +4f321d0b436654383138343537314c837c7b84687981546e7a66545d6f70 +5c46515f655b49455162685344434f62665a3b434d5b5b453f538bb3e0f6 +c43e353f3d3736353533312f30313131313131312e31322f2a2524201c23 +2d2a3b6cf160526b6b6467574647555a584d50504b4c4f56545f5b4d5b63 +6663654655a27363704c453f3a3d3a40393c3c3a3c4041403d3d3d3e3f42 +454852433d392d2b2e2a33323925250e3a9ba5a9a08d605477796f6e6e6c +696b6e73767f7781a3ada8b2bf6752ffdf6d62434951554f4c4a4a464143 +3f312c2e2f2b2b2a2d303232343434332c28291f212d31340d1b1d4cb0a3 +949c9c4a2844596865635d625857706a6d7767818c909b8d75d5ffe8a75c +485c4345413d413b3a453f3e40424a4d4f4f535049403e3e3d38462f2f24 +35814f313b2c1c36819097b0a6b79d502a1b40657e817e93b6af8e8597a0 +b1a59da49c9e6d4260474d594b4a49454444413c3b3e4141403e3d3e4145 +4443434345423d36352a2c21252d20203a6b685e605d5e565c5f6b72695c +5e6f8ea598997b75726d667e847a6e4839484748484745474c5044515147 +4846474a47444c4b44475050474b483b312c281b211620301d225d7c7f84 +7e767d8e8e7c7b787f807b8087837a817a7868716e726f616f593b4c3f4b +47474543434240403f3f403f414144444946444545403d403b37322e2c28 +231c276f4b28dffff7fffffdffffc7675e595556505057565b6cffffffff +aca8a4a1a6aaa79e926f4d2a5a64431e0f0c131617204a7a6a6d7a5b6f77 +405966653f475b5e60363f49575743323d5459533f333e4d545c3b3c3c48 +54473a3b5680b0c5c75818171312131214130f0a0d0d0d0d0d0d0f0f0d0d +0e0f0e0d0a09151517373b2439062e535f5d66584b649db3b3b3bfc3c2c6 +c3baaaae9b75777369616c4a1c5665244a1e120b080a040d0a0e0d0b0f15 +16110f0e0f101215181a2015131411141e211836733c151526878c87949f +7768a1c5c9d2d7d6d2d0d0d7dfe5c6b4b8a9959ba75b33dfb86357271a21 +2a2b2a2b2c2b272b24150d12120d0a0a0b0a0a0a0a0a0e0f0c1016141d39 +5641271b1a3a7a7f8088937e475589abacb8a9b9aebff1bea69c93888372 +6f69678796ab6e1100060b0807141f10040f1314100d0d0e0e0f1e1f1810 +0d0e09040008180b081d1620180f15348d81737971759ea4925a5d7c787d +7c9cc9c0a09a908893827579706b3d001f170e160e07130e0c0f0e09090c +100e0c0b0b0b0b0a0d0d0f14181915110b0914141c1d0912255c58494a4a +4a4355555b6977848e97999d807d5f5958595f5b54585f45202214131210 +1113161811171b1b151e1a1e1d191d1c13141b191f1f1e191614100c0b15 +1a1f2e1b2580645a535152535b635d60707d756b6256625b587874786f7c +9385918b3516101513131413110e0c0c0b0c0d0f12141517191718191813 +0f1007040509121b1e201fbcab1785b3b6b1b8a29cbd7c1d29332d2b2629 +3531292d4d535d6482817d7c818580776b4b3018536b5338333435332b2e +527c696b76576d763f5b686640485d606238414b595945343f565b554135 +404f575c3b3a39454e4132375683b5cfd3692d2f2f3132343635312c2f2f +2f2f2f2f2e2e2b2b2a2826221f1e2b281f3631162a002b55615b5b463034 +494a443d3e3c383d40444158543f4d575d5e6c4e26667b3e6a423a37353a +343a35373634383e3f3a383738393b3e41404434302f25262c2b1d3a763f +15172589918789824421465a50535554525156585361626f98a4a0aeb968 +3be6c07068413b474e4d4a4948463f443d2e262b2e2b2c2e2f3132333331 +333229292b262a3c4a2e1a1319428b9191908f661913334d4e574653475a +9065595d666d7a777f7b6d8ea7c896412d3f3f3a37434e41353c3836363a +3d40403f4c49433b383b3b3630333d281b28191f150d143a999288948e8c +a3936b1f1228232a2f548784676f808693867b85807f5516423d39463e39 +423e3c3f3e39393c403e3c3b3b3b3b3939393a3c3e3b332c211b201e2221 +0b0b0e434a4652585b525e5551575f656e787e887276616063646a665f65 +705b3a423a3d3c3a383a3e40373d3f3f3a433f43433f4342393a413d413f +3a342d292320202625232d18217f6965646666676d736a69757d7268625a +6c6a6989848477829b91a3a6573e3a413b3b3a3b3c3e3f3f3f3e3d3c3a3a +39393b393a3e3f3c3b3e373228252627272628c5b42089b4b3a7a78d8cb1 +71162634302e262934302628434a545b5c5a5452555957504c311e0a4963 +50353334373732375d89777985667b844d687778525a6c6f6f454e586565 +51404b6267614d414c5b606645454450584b3d4670a2d2e8eb7b3e3b3a36 +37363734302b30313131313131312d2d2d2c2825221f2824213c3c253d0c +3c646e68695441445959554d504d484d50545065624c5963676776593275 +894b774e44403b3e383d3b3d3c3a3e4445403e3d3e3f4144474954463e3a +2c2a2f2d203d7b462126379eafa9a9a1654165786f70716e6b6c6f757886 +7e82a3aaa6b5c3784ef9d5837a504a525a595754534f494b44332b30322d +2b2c2f303235373639362f2e302a30414e34232029559fa7a5a3a074261f +405b606b5a685a6ca3776b707a808f8b969183a1b9d6a24b37484a45434d +58483c42403f3f4047494b4b59554c423e3e3a353439432e222e20272018 +2248a9a29ba79e9cb6a68035293f383e436aa2a0878d9a9ead9f959f9a9a +712e58504a544c4448424043423d3d404442403f3f3f3f3f424243464945 +3d352c252c282e2d181d286061595f616359655d5c636c747b878f9b8386 +707275787e7c75788269474f474b4a4847494a4c444a4b4b434c484c4e4a +4e4d46474e4b4d4a453d352e291f171c1f2232212f8f7c77787b7e7f858a +7b7a89958d857e7585817b999390828ea89fb1b16348464c474745434342 +40403d3d3f3f424345454745444646403c3e39322a262525242223c0af1d +8ab8baafad928fb5771d2d3937352e313c382f2f4b4f5960a9a8a3a3a8ab +a59a9774522c5d623f19110a15191526567e676c7b5a7078395464703e46 +595e6d373d45565d482f3752555c49333f48526447413841524e3c354377 +98bbd2a52013191612111416140f0d0d0d0d0c0c0d0d0c0b0b0d0f0e0d0a +001916384a4216211f506060685748649dafb0b4c2c2c2c9cbc1adbba67a +7b79655b67563da7e36247190c07060a040c0d100f0c1016140c0f0f0f10 +1316191b241814150f121b1d211c452c2b00327e908196aa744f86b7c2cb +d2d3d0ced0d8e3e5c1b0bcaf939696a95c92c3e4a92a18222d3030323332 +2a2e26140c10130e0a0a0b0a0a0a0a0a0e100d131f2230506b463e0c2064 +8786828097b16443576986acabc8c0d7ffaea0909a848167636868430319 +1109140a0f080f2b3e280d10181712100f0e0e0d12120e0a0a0d0d0b150d +04011c0a1a1c21120f1d7e726f77766b8b90afaea589838483a4d0c1a4a8 +a58f938779796b603418101315011606110c0a0f100d0c0f13100e0f1011 +0e0c0c0e10171a1a1612100d131117170c232e55514f5144454a47484c54 +5d636565656f5e6c5d5a5a5a5b6b655a63613117181715100e0e11111715 +1821142620212a191214171e1e131a1e221d13080911102b231f543726ba +b0b4b5b3b9c0b4a26a5c5b5f59585b57494d75d8f7f9eafbf6edf1f1761c +150c0c0c0d0d0d0d0d0d0a0b0e101315171a1816181a19130f0d0b040205 +0f1c252a1d454e0f59505d545f6c6169453149202432342f2e2a3247676c +71727f7e7c7e83867e737050351a56694f363532373528335c80666a7958 +6f773b5666723f485b606f393f47585f4a313954575e49353f4a5264473f +363e4f4836313f779ac1deb6352d35343332363836312f2f2f2f2f2f2f2f +2b2a29292926221f14291b37403609191d4f625e5d452d354d49413e3f37 +333c4243405e5e424f5b5758635543b3f67c673f3736373b343938393835 +393f3d35383838393b3e41414839343226252a282921482f2d0235839784 +8b91470e335451535654515255595b676171a0aca0aaa6b66399cbf1bc44 +3a465152504f4f4d4549412f282d302d2c2d2e303233333335332c2f3433 +3d55603531041f6b9696928b96a3441319213554526f677fb963615d7771 +7e6f757d77521a393837453e403a3d5a6d573e3d3a3837383b3d3d3c3e3c +3935373d3f3b4132251d2d151f1f211213248b8384929788988d9887714e +46494c73a49b80909c91978d83877b744e37333a3f2f46364039373c3d3a +393c403d3b3c40413e3b38393b3d3f3a322a241e201b1e1b0f1d183b3f47 +544e535b54514e5257585b5a5c685b6f646666666676706573744833393c +3c3a383a3b3b3f3b3c43364842454e3e36383b4242373c3e403a2c212026 +253c2e2352321fb4b0b8bcbfc8cfc3af73625e605a585d5c515a82e4ffff +edfbf4effbff9241413c3e3e3d3e3e3e3e3e3c3b3b3b3b3b3b3c3a383a3f +403c3b3d3e372e282b303334264b5411594c57484b544d573727431c2230 +322d29262c3e5b61656757565352575a534c4f36230c4c624c3235323939 +2f3c688d747887667d854863758151576a6f7c464c54646b563d4560636a +55414b565c6e514a41495852403f5691b3d9f4c8463a413e3a3737373530 +30313131313131312d2c2b2c2a28252012261e3d4b441a282b5d6e696b53 +3e455a57514e514a474f565853706c4f5c676463716553c3ff8b744a403e +3c3f383c3e3f3e3b3f45433b3e3e3e3f4346494a56483f3a2c292d2a2c25 +4f383a114699b4a5abb1662e51716f6f726f6e6e7177818c7d84acb3a6b1 +b3c676ace0ffcd5346525d5e5d5d5b5850524a362c31342f2e2f30333437 +37373a373133393a435b643b3b13317eadafa99fa8b4511f242f486a6883 +7d95cd7874708b84918289908c652c484744534b4e454a64755f43424341 +4040444747464948423c3c3f3e3b44382a21341b2526291c1f349b9597a5 +a696a89eac9a8762585b5f88bbb29aaab7aab0a79ca1958d654c474b4f3c +5240463e3c41423f3e4145424041444542414142444848453d342d282924 +2824182b2f56575c635a5e635c5a5a5d636666686d7a6c7e747476767888 +8277838356414a4e4d4a464747474b48484f42544e515a474244474e4e43 +48494a423326262720342822533627bebcc4cccfdbe2d8c282706f746f70 +7472666b92f0fffff6fffffeffff9d4a4a4647474745434342423d3d3e41 +434447484644444847403e3f413a312a2c3133332347500e594d5b4c4c54 +4e573728431d2331352e2d2730415b5f6565aba8a4a3a2a09d9a8a744b2a +5559421d0f0c131f172965785f756d53746c5a4c6773593c4d63615a2c49 +4a646336364350545f47283d5b4d5d3a333f45565230405491aac5ca690b +14150616160b1b0c161513120e0d0c0b090b0d1013110d0b120e15395c4e +2c1b236364496361414a86acbdb9bac8d0cbc7c1b7b1a78c7a7a6b676e5d +3d95d3b98009040e020f05060d0d0d0e0f1214160f10121212171f251c15 +0f1113131113184b79262b0035877c92909796574180a8c4d5cadbe7e4ff +ffd0b1b5b3aba198a0a26b93999b7b161b1c20282f33343230322a1b0f0d +0d0a0a0c0d0c0c0b08090e0e100e1116212c3019221317948f8e87978da1 +a37551385969798983abd89b99a08b7c736b67645e3b0e1325140b161311 +11151a1b140f141411100f1012131111111111110f121412111214121215 +1d0a131a746e697576737d898f9cacafaca5acbfc1ae9c978d867c7d736d +75624d2110151a1409171414120f0f0f1112120e0d13110a090d12121213 +1719171613090f1810101917153a405049424a373c4640494c4c59575e53 +656663498d6a7b6e82918991a233121b0c150310170a19181a1d1f1c1a1d +372a1c191f211b142825191e2014120d1c12262aa0b626daf1edf6e3f5d9 +d694402f483e2f4146352f274066919376806f7482a56d27180b00000500 +000913130e0c0c101517141114131311100f0f0c06053b1e2013261a2e2e +202a536869727a94a59d32333f3f533d50483447485170776275807f7e7d +7d7b767363512f184e60523a33323236242f64765e746f5778705c4e6672 +583b4c6260592b4849636235354350545d47263d594b5b38313d43534f2d +3a5090afd0db802634372838372d3b2a34333231302f2e2d2b2a2b2c2c2a +252024191a39564624182365644758502a1f3a4a5142363a3c38383f4753 +5e55515f5e5f66583b9be2d0a1333443374236363634343536393a3c3536 +3838383d454b443b34322f2823202354822e32083d928b9c9089782a0130 +4858604e5a645e8d8c6b6586a1aeafaaaeab7098a4ac95363d3e42484c50 +504e4c4e483a312f312e2b2d2f313334343236342f2a26272e332e141f13 +1a9b9998919d8f9e98643b121a1d2d3f3a6999666e80787478787d7e7856 +2b34483932403d3b3c404546413b3b39373637383a3b39393939393a3a39 +332b2625221d1c1d24111b26847f7e8a8b848a908e959f9e9a939aadb09d +8e8e8f908689827d8778663e313b423f3544413f3d3a373737383a36383e +3e39383c3d3a38383836302a24161a1f15141d1813374253514c5441464e +464c4f4e5b5961586b6e6b51957081768a9a95a1b2452a392f3e3142473b +443e3b3d3c39393c574b3c393f413d3648463a3f3e32302931223230a2b2 +21d2e7e4f0def4d9d6943a274038293e45352f2a41658f8e6d755d647aa7 +7e45454437464a40383b3f3e3b39393b3d3d393639383837383a3a3d4244 +744f49313d29383220264b5d5b636b83948e232430324632453f2b40414a +656a556856535150504e4b4c42351a0a44594f363333353c2d3b72846c82 +7c63847c695b748068495a706e67395657717043434f5c5e685131476456 +66433c484e5e5a38485fa2c2e2ed9237434332413c2f3a2a363534333130 +2f2e2c2c2d2f302e2923261b1e41605131232f716e5266603c3047576055 +4b525654565b606b7268637070747d6f53b1f7e2b03f3e493b453a3a3a39 +3b3c3d4043453e3f4141434850564e443c39332d2726295b8b39421950a6 +a2b5aaa29041194963727b6a79847fafb08d819aadb7b8b4bbbc84aebac0 +a643494a4e555a5e5e5a5859503f3330312e323638393a3837363837342e +2b2e36393318281f2baeb2b3acb7a6b3a97448212f37475a5785b6828998 +8e898b888a8b87673d455b4b43504b4745474b4c443e4242403f3f424445 +434341414140403e362f2b29251f1e202a1926329391919d9c949aa09ea5 +b0aeaaa1a8bdc0af9fa1a8aba1a199949d8d7a4e40464c483e4a47464441 +3f3f4041423e3f45443f3e4246444341413e37312b1e20251917201d2048 +51625e58604d525b545b5e5d6a68746b7b7b785ca07c8d8197a9a3b0c259 +44534550404d51424d494a4c4e4b4d4e645447444a4c4740534f4348463a +382d3221302e9faf1ecfe6e5f4e4fce3e2a046324b4235474d3d3731466a +9492727b697187b3884f4b4b3a4a4f463e444847413e3e424546423f4241 +4140404040424a4b7b564f39432e3a332025495b5a60667c8d871e1f2b2c +402c413826383b425f624f60a9a7a5a2a09e9c998871482a575a431e0e0d +141f1a2f697a5f726a4a6a66553e606d5c3f445e655e363a4c61664f383f +4e57614d2f3952515c513d394b574f443c51719bc2d59a2e0318100d1512 +1510131212100f0d0c0c0b0d0e1013120e0d090e2146604b2110245a665d +6f64403f6d8ea5b1bccacfcbbcdadebb98807574646e6476797586d09027 +130b0009030f0d0e0d0e0f1113140f10121213171e241c14101213111013 +1a1b5123140c759583888396b38d57586d88a9b9d4dad4fdd9c0bdc0b09e +96939aa5462e180e190718191c23272b2c2c2f302a1b0f0c0b0a0d0e0f0d +0c0b0b0b0f101110121720273323151214818e8c8e9483919e908e907c7c +737b88b6d8a2a09a857677716b6060431d1d1018161311100d1014130d0a +131311101011131412121212121211141c18121312111318101a1a0a6f7f +76766e717a7d7f8a94939f96949ba09b9a9a958b79817b64686c77361822 +080d170a080b0c0f0e11151815110f11110e0d1213141316181918160b14 +130d202b1e220e276e72696b6d786f7f655154575c504f4a5c585e65d8df +e4e7e5e1eaebe1721120121905060f18131316191b181619231e1c1a1d1e +1a141b1e170f130f05101f3220187ba92a768565695e68686d3129402e32 +38321b202a2037545d57505564465570632a3621202728180b0d14161914 +0f0e10121516121212110f0e0e08001c5e2d2b2f433225231e31576c6a65 +6791c7a5697a86636987816880867383747f6a657e7e7c7c7c7a7572614e +2c195061533b35333133223167785d746e50706c57405f6c5b3e435d645d +35394b60654e373f4c555f4b2d37504f5a4f3b3749554d4134496f9ecee6 +b14b243c342f3634332e2f30302f2e2f2e2e2d2c2c2c2c2a262018192646 +5d451e0f245d695b67582d1a263440424144433e355f7365574f525f5b6a +5f72767992e6b1514340323c333a363534353638393a35363838393d444a +453d35332f29232227255b2d1d1880a495988993a26d28191f2e454e6163 +5b8b787385a1aaa8a8a7a7ad4b32242336283a3b3c4044474846494c463a +312e2f2d2b2c2d2f3132323335332e2925262a2e362418161a8895939399 +87969f8f8c7f4c4038435185ad7d83887b777e817f7b7c603d3d31393a38 +3938383b3d3c39333c3937363637393a3838383838383737352d2522201d +1f221a2324177d8f87877a7c828586919996a09591989c9793979b95858d +8773797f8e523a483038473a3536373736373a3d3b37373c3c3b3c413e3a +39383936312d1c231e15252f2226132e75797072717c73836854575a5f53 +5552625f6168d9e0e5eae9e8f0f3ea7f263e38463b41494f453f3c3d3c39 +393c47433e3f42433f3b41453f383b382d3337422c217da9236c78565b52 +5d5e662a1c332328322d191e281e334e544d44444e30476c6d45625c6775 +76614a413e3c44413c39383a3b3c383838393a3b3b3d30609d665b556146 +32281e2d4f625f5a5e8abe9a5e6d78565b7c765f797f6e7f6d76615c5352 +4e4d4c4a4a4940321709485a50373434353a2d3e75866b817a5c7c78644d +6d7a694c516b726b4347596e735c454b59606a5638425b5a655a46425460 +584c3f567caddef8c35d354a42393d36352e3232323130302f2f2e2e2e2f +302e2a241d1d2c4e664f27172e6672667466402b34405053565d605e557e +917e6f6466727081768b9192aafbc25f4d46384037403a3a393c3d3f4243 +3e3f434344484f554b413b38332d27272f2e65392c2892b7abaf9fa8b582 +3c2e35475f6a80837cac9b93a0b3b8b2b2b2b7c0614b3a3646374645494e +525556555858513f332f2f2f33373838393737353835322d2b2d33363b28 +1f212a9bafafb1b6a2acb39f9a8f6259546070a3cb9ca1a2938b90908a86 +886e4c4c424a4a484542414143403a354242403f3f404243414141414141 +403d3a302925211d1f231c282d208a9e97999092979a99a4aca9b4a7a4a9 +ada8a3aab3ae9da59d888b909e604451383f4b3e3b3d3e3f3e4043464440 +3f434341424747454242423e3833232822182830232919367d837a7c7c88 +7f8f776366696e62635f6e696a6fdee5eaf1f2f2fcfff992415a4f594749 +4d544c48474b4d4c4d4f534b48474b4b48424a4c473e433e35393b422c1e +78a11b637051585261666e32263c2b3036311a1f291f324e554e464a5a3d +567a79506b626b777a67514c4a494d474240404244454141414141414145 +3969a66f655e694d382c202c4d605b545782b9945a677550587672587377 +6876676f5c55a8a5a4a19f9e9b99866d452c5a5b41200f0e131d1b356f7c +5d71694563685735586561453a556a63492e495864673e35445763563e36 +44525864483248534d5936475386b1d1ca6c04181a0813190c161010100f +0f0f0d0d0f0e0f121313100e0e11192f3f311a18495e615d64635455556a +7e94a9b8c1c4d7f5e3a47f7f7e716b6e686a401d11393b04010306120814 +0f0e0e0e0e0f10110f10111214181d211b141012131010141a0528180a14 +97977d868591a9a78b7b565d69758c919dcfccc0bebaa69ca2a49bbb6344 +4023150f1717191b202427272d2f2a1c110e0d0d1111110f0e0e0f101112 +141315181d231e1b050e157694908990858d9a959ca7bec3b4b0b5c7c696 +81827e756f6d686657341a1d0a1b1d1111111111110f0e0c1211100f0f10 +11121212111110100f1116130f110f0d1014171119005571627882817d76 +767a7e7f868585888c8c878070847d8083706e738d54091b1317180a0d12 +1313121113161813100f100f10171414121315141312100e0f0e2119196c +2b38ccdadfe5d0e1e6e7974a3d3e3b2d2d2b3b34343da6b5aeb7a0888f92 +ab791b1c0000050800050a0b0d11130e0e1213131514151414130e171c12 +2c31030b10322f38484819615853766f647c7c43212c24402a303a2a312d +43615c596c6a665e85d2854a445a3b42402b1610131410121619150f0a07 +0f0e1010100d0b06011044343d2d5383311a101f3f657875747d9e7b848b +8e9691909797898588856c716f617d7c7b7b7b7a74725f4a291b5362543d +3634303123376d7a5b736d4b696e59375764604439546962482d48576366 +3d35425561543c3442505662463046514b562e3f5189bae0e18723393b2a +343b2a342e2e2e2e2e2e2f2f2e2d2b2b2b2825211d1c1e2f3c2b17164960 +635d605843341b1e2a363f46494c648d895c495863636a736a6c4525204f +5c2b3034353f313b3636363535363738363737383a3e4347443d35332f28 +2323270f3022131d9fa492989193a0916a4e1f1c2127393d477f87899cac +acb0babbacc6694a4c383230393736383b3e3e3e444642372e2c2c2a2c2c +2c2d2f31323332312d2824232427211e09141c7e9b9a90978b919b949b9c +a19d8e8991a6a77b6d7479767679787a6d4b34392a3f433b3d3d3d3e3c3b +37353b3a393838393a3b3b3b3a3a39393836332c2725211d1c20211a2207 +5f7d6e8387848079777b7d7c8381818283837e7c758c84878a787983a06e +29413e464b3d3c3e3f3e3a39393c3e39383a3b3b3f433c3a38383735322f +28211e19291e1d6d2b38ccdadde3cedfe4e592453839362a2c2c3a332f39 +a0afaab39e878e92ae8537452838464e4447474240403f3c3c4042424143 +44454544404a514761663a382940393e494510564b446761587272391521 +1936242b382a312b3f5b534f625e56507ad18e616c907e8b897052423d3c +3c414545413a322f37393b3c3c3c3a3b4154846f6f58759e442818234164 +7774767f9e7b828789928c8c9295898589876c716f6152504d4c4b4a4949 +3e2e140b4b5b5039353534382e447b8869807957757a664465726e524762 +7770563b566571744b414f606c5f473f4d5b616d513b515c5661394c5e98 +cbf3f39835484a343b3d2c363030303030303030302f2e2f2f2d2a252220 +243745352221556c6f696e685645292a3948555f646881a8a372606b7474 +7a867f815b3c37646d3a3a3b3d4537423b38383a3a3b3e3f3d3e40414347 +4c504a413b38332c27282d183b2e222eb2b7a7b0a7a8b5a67f633432393f +5357629ca4a6b4bdbabbc6c9bcda8164644d4441454444464c4f504e5454 +4e40342e2e2e35373735363738373734322d2b292c30262312202e93b5b5 +adb3a5aab0a6abacb5b2a7a4adc3c69a898e908b888985857a594347394d +504748464643423e393741403f3e3e3f4041414140403f3f3e3c37302926 +231d1c20231f291069897c95a4a39f9895999c99a09c9c9e9e9e99958b9f +979a9d8b8b93af7b344a454c4f414447484744434447494442434444474c +46454341403c37332c25211b2c21206f2d38ccdce0e6d1e4e9ea994c3f40 +3d3132314038333aa0afabb4a18c949ab7934c5939454c50454648454448 +4a49494d4a484a494c4a4c49474e574b676a3f3d2d413a3c443e0950453f +64615c7a7b421f29213e282f3b2c312c405d54506362635f8be19d6f789a +84918f775a4d494845494d4e4a433c3941424445454442434a5d8d777861 +7ea54a2b1b2440627370757ea07b85888d93908d96968b858b866e717161 +a8a6a4a1a19f9c9a886c45305d5c401f1010131b1d3c757c5b716d45616f +643b515f684f354b69665e363d4d5e6d5032354e61615139384c55635135 +3946505f3c39477390b9d5ac300e1210131a09181111100f0f0f0d0e100f +11121313100d121210151d1717266e635c5a5a5f676d5d626775828d9caa +97c1c19786887a60585f6c6a3a382f1d13040e0f1919050d100f0f0e0e0e +0f0f0f10111315181b1e19131110110e0f121214151218148e9280889191 +94a2b1b2a2998a828b98b1dbd9c1b0a29290938e98a85026312820131716 +15171c2025252b2d2a1f15100d0f1514121010101214141314141517191c +1c1e0f140d6b87828c958f8f958c8b9196afb2aaaaa89e898d8081776f75 +707070442e1d1f1a120d11121212111011121111100f0f10111112121111 +100f0f0f0f0f1012110d0e142e1b4e062f816d81797679889385797b848a +8b89898b847687ced9ced5d1cac1d3e24f0c0e1000051316171612111215 +17151212100f1113131211100f0d0d0d11000e101b132182502a9a8a8782 +70776f82461b323d39332c242d2c2d2c656056585b5d594c73526a601c09 +111804010606080c0e0b0a0d1714121113131212111319134f682223361b +212b2c1825666d625c4e73ba9f574c4b6072525765436e6f64676053594a +5843b3fbd84a3b3c2729281b0d0c1010050b1419171411100c0d0f0f0f0c +0a0400000f07040055e456331a1419364f4a4f465462746b3b596b6a6050 +3968716c492530357d7b7b7b7b7b75736149291f5963533c3736302f253e +737a5973714b6775663d505e674e344a68655d353c4c5d6c4f32334c5f5f +4f37364a53614f3337444e5c3431457597c6eac64d2e3230343926362f2f +2f2e2e2e2f2d2f2d2a2a2826211f211d15151a1414247067605c58585a54 +2f25252b2f313d4b3d6f7c605c6d695a5e6b737141434033342b383b413f +272f3637373636353636363738393b3e4145403b34322d2622241f1f1e1a +201b959d959ca09992999e9781725d525a647dabaea3a1a4a4acb1a8abb5 +562d403e3f3738363534373a3a3a40403d352e2929282b2a2a2b2d2f3133 +312f2c27222020211f23161a14738f89939b9594968d8a8d899ea1989896 +8b7980787d78747c7c7e7e5441353d3e3a39414343413e3c3a3b3a3a3938 +38393a3a3b3b3a3a39383836322e2c2c261f1e203825550d368874847975 +78878f8274767d83848080827b7188d1dcd0d7d4d0c8e0f86d323b43393f +454746423d393a3b3d3b3a3a3b3b3d3f3938373635343230301c2322261b +26834c2595857f7a686f67783c1126332d29261e272423235a554b4e5257 +5347715b8a8f514856624e4748423f41403d3e4249464443454849494b4d +544e8aa55f5652292b342e171d5d62544e4268b0974f4244596d50566644 +6f7064655c4d5043503cb0fee361606d636c6d5b483e3a3a343c45484640 +3d3c37393b3e3e3d3b3b37344f4239237cff72482c22254058545a535e6d +7b723f5d6d6e6454406f7a75502c373c52504d4c4c4b4a4a402d140f505c +4f3836373436304b818867807d577381734a5e6c755c425876736b434a5a +6b7a5d3e40576a6a5a4241555e6c5a3e424f59673f3e5284a9d7fbd75f3d +3f3b3b3e2a38313131303030302f312f2e2e2d2c282324211b1d231d1f2f +7c726b6866686c673c34333c4348556356869175707e79686c7985845457 +5448453a44444b48303839393938383a3b3b3d3e3f4244474a4c453d3834 +302a2628252527252d2ba7b1aab4b7aea7aeb2aa94857268707b94c3c9bb +b6b3b0b7bcb5bcc86e475753534747434244484b4d4d53514c40352e2d2d +36353432353436363532302d2827282726291e262486a6a3afb5afaaaa9f +989c9ab0b4aeb0b0a7949c90948c878c8a898b614f41484a44444b4a4847 +433f3e3f40403f3e3e3f4040414140403f3e3e3b36312f2d29211e203927 +5b133e927e95959598a7b0a194969ea2a39d9d9f98889ae0ebdfe6e5e0d8 +f0ff783b41473b434c4e4e4b464344464846444444444648444342413e3b +3834331f26242a1e2a85491f8f7f7c77656c65773d1228342f2a261e2722 +211e5651494c5357574b7664999f5f515b634d45474242454746494a524d +4b4a4c4e4e4e4f5158528ea86259552c2c332b121a585e514e446eb8a25a +4b4c6173555b6a46717266665d4f534a5f4ec3fff573707b6d7474645049 +46463c434c504e4946454042444646444242403b584a412b83ff764d3023 +253f57555e596773857a4a6679776f5d4a77837c5a344144aaa7a5a2a3a1 +9e9c8c6c4435625a3d1e101113191f43797a5b7273495c6f6e444d5b6c5a +39425f646b4d324356666b422d4158676145363f525558442c3b5659532d +415c77a6c5d57811081d17130d1715141311100f0e0d101012141512100d +080f151a1f171725705c5c6663626769726f6d6f6e6f7f8f8cb0b8977f74 +6c636767636640260f171918150a11150e19111010100f0f0e0e10101113 +16181a1a161210110e0b0c11121b151c18118d938e848c9597a2aca8bac0 +b7afb2b9c8d2bcaaa09b9496978f95a56f392619201015151315191e2323 +292a2823191211131817151313121415151515141516161712151a1f0c74 +9b9a90918d8992979399829295898a90909a9b7f847d778279737f706015 +200f0b110a0a0b0b0a0b0d100e0e0e0d0d0e0e0e0f0f0f0e0e0d0d0e110d +0c0b0909121c091b9a2f40faf5dff2e4dde9d78d4f454a4d473d3c454841 +67bacec0c0bbb5aa88e77c1c131407080d0e0e0d0d101517151616131210 +0e0d161513100e0b0a0c0b03150f1836353d391059545c566463646f3a23 +3d36303337292a2e39456d676b5762706a76a661486c4f423c3815030606 +090d0d0b0a0d181616191f1d150e18110c00416734424524541f171a344d +4c6c6b55688d898087908c79959588828a997f69737469614e3e84f7f1b2 +4c210a090703050b0f0e090708080c17252f0b0b0d0e0e0b070208000600 +160f03143d271c170b131c0f120a41b298bd774ea70027973e6abda69631 +152e7d7c7c7c7d7b7775654929245e64503b3737302d274577785974774f +627570464c5a6b5938415e636a4c314255656a422b3f56655f43343d5053 +56422a3954564d273d5e7db2d6ec932e253b35322a34333232302f2e2d2c +2e2c2a2926231f1c171d1c1d1e1414257463626a625e5e5652453d3a3330 +3b4e4d7989756766646571786f724b332031393e3d3235352a3737383838 +373736363737383a3d3f41413d3833302c2421231f261e252017939ca098 +9ca19ea3a79fadb2a69ea1abbac3afa5a6adb0b8b7aba6b07541352f3f34 +39363332343738383b3b39352d2625272a29292a2c2e3033312e2a26221f +1d1c171a2125137ba2a09697928c9396919884959687888c8b95967b827c +79867d7983766c293d3436423f41403e3a38393939393938383939393a3a +3a393938383738322d2a2521242a13239f3341f9f4ddedded7e3d187463c +41453f33323b3e3a65baccbdbdb7b3ac90f79842444e47474643403d3c3c +3d3f3b3c3c3b3a3a38373a3939383636353533263327273f3c3e32064f4a +4f49575657602b142b271e242c1e1f212c375c585c4a5766606da068689b +8481817f5d4746403e403f3d3f424846464b51524c45514a473d7ea67377 +623662291d1c33484464624f6387867e848d897895988d878f9e836a7274 +67604f438affffc86d4c3f4546423e3d3b3a3b3c3a383c46545e373a3c3e +3e3d3c3b484245384d402e3b5e443830232831272a2257c8a9cf875bb207 +32a44b77cdb6a33e223b53514e4d4e4c4c4c442d1414555c4c3736383434 +325285866781835b6e817d535a687967464f6c71785a3f506373784e384a +61706a4e3f485b5e614d35445f6157334b6b8dc2e8fca43e33463d372e38 +3534343231302f2e302f2e2e2d2a26211a1e2224261d1f2f7f6d6e76726f +716961534d4c45435062608c9b86777571717b827d825d463242484b493c +414036413a383838373938383c3c3d4144464848423b37332e282427252c +252e2b25a1adb6b0b3b7b1b7bbb2bfc3b8b0b3bccbd6c3b9b6bbbbc2c2b7 +b8c48d584c44514447454244474b4d4b4f4d4943382d2c2e343332303332 +343534322f2a282625221d202931238db5b6aeada89fa5a69fa693a4a89c +9da3a2acad92978e889289858f827832453c3d49454644423e3b3c3d3f3f +3f3e3e3f3f3f4040403f3f3e3e3d3d38322d2823242a1425a23645fffaea +fffaf3ffeda161575c5d574b4a53564c70c2d7c8c8c5c1b99dffa34b4b52 +494c4d4b49474647494b4849494746464443484746423e3c3b3935283529 +2c4442402a00454047414f4e515b281129241c2128181919242e54515744 +5564616ea26e75ab928a86815c46464242444644474a525050545a5a534c +58514d4283ab787b663a652a1d19314542626553699191898f9692809d9d +918b93a1866e77766a686159a0ffffdd805d4d504f4b4748464544444342 +46505e684244464848464442514a4e4054473542654a3c3425293229342e +65d5b9dd976bc41744b45c87ddc5b44e334baaa8a6a5a3a29f9d8d6a4337 +655a3a1d1012131821487b755b70774c5466704d46556963473d4f606d62 +383d4e607b5d37394b6367543e334e4b5d55313754536b3536456a9aafda +b83c0f201910121416161412100f0e0e111316171916100b0610161a1f19 +18246a585861605c5f6474767b7f80808b99b4b39d84756c676b62596975 +382528280d0f0a030a11161f1110111111100f0f10101114171918171513 +11110d0a0d111f111725070c8f8a877b818e91949d9d94a7a3a5a6a7ad9d +a39b9a9b8f8f9ca2a8aa7e482f15221f17141213181b1c1f272726241c13 +1114171716141413141517151212131315141c19203b09569b929c9a9b98 +a5a68b8298918f81878e8892777ebdcab8bbb3baaabeb93f1a0d0f120a07 +0506090c0e100d0d0d0d0d0d0d0d0d0d0d0d0d0e0e0e0e07030000031222 +2e38b14f3ad7c8a5afa29baaa15b2329252a2a26262d2e281b5061615d4f +5357527f5e382a0901001e180f0b0b0f1214131617141313110d181b1713 +0d09090a2016181c1a2a332231275d676653635e867f4c4050484e5f5b50 +53525661777b7664675d5697ffc420463a3b37381c040b0b0d11120e0d11 +13161f293029190a14131000203216291a2b9f53210f14254f5d545b766e +7b826e6e6c84907d67424f71713a2e3e2f29340e29274539341606000001 +060c0f0d0c090806090f171d0c0b0d0d0d0b07030003110000060c19120d +11140f13160f160054c119274b45d08a94b56777ad23df7513237d7b7b7c +7d7c78766647282762644d3a3738302c294a797359727b525a6c724f4554 +6862463c4e5f6c61373c4d5f7a5d3537496165523c314c495b532f355250 +652f33456da3bfedcf562b3c372e2f31343433312f2e2d2c2d2c2b2a2823 +1d18151e1d1d1e1616246e5f6067625b5a575d5a5a5d595760708d91826f +6966656f6f677581413239422d35322b2e31323d37383939393837373838 +383b3e403f3e3b3633302b2322242e1e222e0e109391968d929b999ba09e +96a6a5a7a9adb5a4a9a2aab1adb0b8b8b5b1834e3e2c42453d3a36343536 +3534393837362e2524272a2a2a2b2d2f3031332e2a2522201e1b211e253f +0f5ca198a19d9c97a3a48882a29d988a8c938993757bbac8b6b9b1b9a7bc +c04d35323c4744423f3d3a393a3938383838383838383838383838393939 +39322a231e1f27323a3eb54f38d3c29ea79992a198521b211d22221e1e25 +2623194e5c5a53454b53548b795e5c464743594f443d3b3e3c3c393c3d3a +393b39353c3c3d3b39383a3b4d3f3b382d373c232d1f555d5c4959517970 +3d2e3e363c504e4546454752686c67565c534d91f9cb3d716b7476795b41 +423d3c3d3e3d3d413d4049555c58493c46484738596d515b3b42b2652f19 +1929505e555e79728188727070889786704d587a7a4133433230411e3937 +5752543f3739393c3f413e3c3e3e3a38393e464c383a3c3e3d3d3c3c3142 +4d2e2c383b443932343531323530361e71dc323d6057e09aa4c57789bf35 +ef85233353514e4e4e4d4d4d452b1317595c49363639343334578781677f +875e66787f5c53627670544a5c6d7a6f454a5b6d88694242546c705d473c +5754665e3a405d5b6f393e517cb2cffedf65374741363535363635333130 +2f2e303030302f2b251e181f2324261f212e79696b73716b6e696f696b6e +6c6973809fa1917e7772727a7770818f524349513c423e353a3c3e473a38 +3939393839393a3a3d40434746433e3a35332d27252833242835181c9fa1 +a9a1a6aeacadb1b0a5b6b4b6b8bbc2b4b9b4b9beb7b9c3c5c5c49764513e +51524a474645474949494f4c49443a2f2b2e313131313233333436322c29 +2726252125222b481b6ab1a8b4b0aea7b1b1938eaeaba79b9fa69da78a8e +cbd6c3c4bcc1b2c9ca563c38414b484641403e3e3d3d3e3e3e3e3e3e3e3e +3e3e3e3e3e3f3f3f3f382f27212028323a3eb64f39d4c4a5b6aaa3b2a963 +2a302c312f2b2b32312a1c5160615c50586161978467634949455f564c46 +4548484846494a47464745414a4b4a47423e3f3f50413d3b333d43252412 +4851523f4f487169382a3a32384b483f3e3d404b616562535a524e91fbd1 +4b827a7f7d7f6046474444464947474b494c5560676253454f504e3f6073 +57624248b869321a1c2a52605a65827d8d947e7d7c93a18f79535f818147 +3949393a523550506f68695146444444484948464744433f434650544342 +46454744444339495535333f414b4038383a33353735432f83ef4652756d +f7b1bbdc8e9fd54bff9c3a4aaba7a5a4a2a19f9c8a643e376758381b0f12 +1318224c7c70566a784f4d5d735b3d4e6168563a3d5c6b6c4f39435b6d6e +51383e5762604d2d424d5d5c463a44516c513434597e9fc9d7872d161b16 +151214131211100f0f0f1315191b1d18130d0b100f0f17161724675a5253 +56545a65656c737b8389909480796b6c7975635d615970752b2a2b101917 +1414130e120f11101213131211101010111418191714161513130e090c13 +1d17151f161c828f84898e9091949ca39ba1969e9a96a0909e97a0aa9f9a +a3adafbfbbb3b4571c141c1815151618191a222225241d13101414131414 +1312121217130e0d0f100f1119222d976083feedded8dedbe7d897735b48 +5250575f5157526cceead5d7d0dfcfd4e68e261e100c100906050b0e1210 +0d0c0c0d0d0c0c0c0a0b0b0c0c0d0e0e0706070a0a0b15212b1e572f256f +63584f5551585b32182f262b31343534312e36525b5f5a54605b4f6c652f +3c2e3f4c3326130a0b0e100f1317171212171713191a1610090505073731 +15262a14292d1c1c3d464a4f5c68868b7c879083888b928a8c8984827975 +61666f696290f8e56b5f31210e151a19131214191a15151919202a323329 +1b1011171410150f020813116451352902031a24201b130d778a8a6e2a68 +2818564e0032894904252821061c2f2912230a110e08050609090c0c0709 +0d11120d07010f0e0c0b0b0a0a080f010d0b060f0e161b1c16131818171b +270048d2a67c7b3abdc9dcf0bc6ae92ecbc741367c7a7a7b7c7b78756341 +232764634d3a3638302c2a4e7a6e546c7c555363755d3c4d606755393c5b +6a6b4e38425a6c6e4f363c55605e4b2b404b5b5a4438424e664b31325b85 +abd9ea9d443137333431323131302f2e2d2d2f2e2e2e2c251d181a1f1814 +151315246b615a5b5956575e585b60696e72797f6e695f64767365616a64 +797b33333c273b3f3f403b34343137383a3b3b3a39383838393c40403e3b +3c3835322c2524282f2620261a1e829390969a99989aa2a9a1a79ea8a6a4 +b0a0a7a0aebcb6aeb4bab3c1bab6c06d3a3a46443f3c3937353338373837 +31272428282b2c2d2f30303035312a252423211f1e26319a6386feedded6 +dcd8e1d3907264545c595d6552564f68cae7d0d2cbd9c3cce6983d414044 +4d49433f3e3e3b393939393a3a39393937383839393a3b3b373634332d2a +2f353727592e2067594e454d4950532a102721262c2f302f2e2b334e5355 +4e4754534f767d556e6d8693705d483c3b3d3a37393d3b38383d3d393a3b +3c3a38383a3d6a613d48412533321d1a3a42464b57617f82727c85787a80 +8b8585827b786f6b575d69646291f9ee8182574e3f4a4e4a3f39383a3b39 +3a3e39404a53544d41383b434340454134373932826c4e3e151229332e29 +211d899a977a36743626645f0340975711323531213b4a412a3d29363c3c +3e3f403e3d3d393c3f42413c332e3a3b3b3c3c3d3c3d463a44423b413d43 +46473f3c41413e424c2369f1c297914ecfdbeeffce7cfb42ddd953485250 +4d4d4d4c4d4c42250e175b5b483535393433355b887c627988615f6f826a +4a5b6e7563474a6978795c4650687a7a5c4147606b6956364b5666654f43 +4d5970553c3f6a95bbe9f9ab523c423b39343433333231302f2f32323334 +332d261e1d221d1a201e202e766b656668656870696d73797f82898e7c76 +6b71817e716c716a828740424c3547494849453f3e3a3837393a3a393938 +38383b3e424543403f3a37352e28262b332b262e232a8e9f9ea6aaa8a8aa +b0b7afb5abb4b4b1bdadb6afbbc6beb7bcc3bfd0cac7d07a444352514d4b +4c4b4a474d4a49453c302b2f2f2f30313232323235312b27272725222129 +349f6a8ffff7eae3e7e1ebda987a6d6068686d7564666077d8f2d7d8cfdd +cdd7f0a1434544454e49444141423f3d3c3c3c3d3d3c3c3c3a3b3b3c3c3d +3e403b3a39372f2c30343726582c1d65584d444b474e51280e251d22282b +2c2b29262e4b515652505e605b82895e75728a977564504545474643464a +4945454a4a46494a4946403c3e3f6b613f4a472c3c36170e31393d42515b +797d707a8376797e857f7f7c76766d6a565e6b686495fef796986c614e58 +5b584c48484b4c494a4e484f5962635b4e44474e4d4a4f4a3d3f423b8c75 +55431b172e3837342e2c97a9a78a4682433371690e4ba2601a3b3e3e324f +5f5942543e494b494746474444444040464749423c344341434143414343 +4b414b47414843494d4d4540454543495c357cffd7aca866e7f3ffffe694 +ff5af5f16b60a9a8a4a4a3a09e9b855e3a366757371b0e131318234e7b6c +506477524b5a786935485a69603933596a6e653639575671663b354d5b67 +592b37525a5b583c33515f6d3c2e4a5f95bbddc4490b1d1c161210100f0f +0f0f101014171c1f201b140b091011151d1a151c5c5b55555a56545f5f5f +5f626971737179786d636461606b6479696e66471a291409040a0607120e +0f111214141413121010111418191613191615130f090b1309270f124141 +75ac9ba6a7a7b1b2a397a0998a9b978a9a908083abe0f6f5f6f8f6fff9f3 +f774223e221c1916191717151f1e21231c110f131010121212100f0e1510 +0b090a0a0b0e1e2f27bd6746d6a9aea1a69fad9b4c1e3a212f2820261b24 +2a1c5d736e8374748065989e232c1b1a150b05040b0d100c0c0c0c0d0d0c +0c0b09090a0b0d0e0f0d050c1924241e1e242e382c1f3460645857757a73 +6d472b38413b373534363d45415a5e55505d654448dce84044483c293222 +0b02070f13121317161113191c1b1717130c05000103334e131f43312e16 +090e3a4f61756168777b737a7e7b8a8a887a76777b7b6154635343474a42 +818957574a4e1e09101c1717191c1d19191d232a302f291f19141a15070f +1410151415030f0f0e3a1c140e0f110e0e2ab181619f42c27a3f81b40655 +ed9b0b1f250c1e1623192f2c111c100d0b090603070a0a090b1217191713 +13110f0d0d0c0c0c15051310010f1314121b14162c2e252e1f2c2f5cc0ac +d8bf7eeedcdae73af18980f175557a7978797a7a77745e3c1f2664624c3a +3539302c2b50796a4e667b5851607a6b344759685f383258696d64353856 +55716439334b5965572935505859563a314e5968362c49629cc7edd55f23 +383934312d2e2e2e2e2e2e2e303031322f281e18181f1c1a1b17131c6062 +5e5d6058535b5656565961696b6973756a616261636e677c696e684f2740 +3634333b37333d37373a3a3c3c3c3b3a3838393c40413d3a3c3937352e27 +272b1e391c1b454173ac9fadaeabb3b4a599a29d90a3a196a89c8689b3e9 +fffcf9f7f0fcf6f3ff883f65514e4944403c38343a3838393228262a292c +2e303132313037322b2726262422263129bd6746d4a7a99ca099a4924117 +3d28332c22251a222716566c687a6c6a705995a73a4f4b52524b423e3e3d +39353839393a3a393938363637383a3b3c3d383f4a514c403a393e42301e +2f56594d4e6e736c664024343d39353332343b433e57564b414e583a46e6 +ff65768783706f594034373e3d3a393d3a35373f423f373839373434383b +69803f425f443b1f12154054667a636a777b717879768485887c76777979 +5f526254464b514b8b996d756c774b383d473c37353839383a3e40464b4c +463f3a38403d313a403c4443412d3735305b3a31292a2c282a46ce9b76b1 +53d58d5294c71968ffae1e323726433f463a4b4830403a3d40403b38383b +3a393b3f4444403c3a3a3a3a3a3c3c3d44364441303e40413d463f435759 +50564550507bdbc5ecd18efdeae9f54aff9990ff8365504f4b4c4c4b4c4b +3d200a165b5a4735343a3433365d87785c7387645d6c8778425567766d46 +4066777b72434664637d71443e5664706234405b636461453c57636f4037 +5771acd7fce56d2f43413c363130303030303030333436383630271e1d22 +202026221e266b6c67686c65616a6767676a70787a767f80756c6d6b6c77 +6e83737a755c374e403d3b423e3c443d3736393b3b3b3b3a38383b3e4243 +423f403b393731292a2d213d22224e4b7eb6aab7b8b6bfc0b1a6afa99cae +ada2b3a89495bef2fffffffffaffffffff91456a59595551514e4b464d49 +48463d302c302d2f31323333323136312a2729272823283028bf6948d7aa +afa2a49da997471e46323f382f33282f32205e736a7b6a6b7a63a0ae4053 +4d53534b434041413d393b3c3c3d3d3c3c3b39393a3b3d3e3f3f3c434e54 +4e423b3a3d412f1c2c545547476469625c361a29312c282625272f373550 +534a4455614553f2ff6e7d8c8774745e483b4146494446484841454a4f4d +464746403c383b3c69814046634b44240f0e3c5062766269777b747b7d7a +8889887b76777c7c645768594d54595494a6848f858d604a505a4f4c4b4e +4f4c4d5150545c5a564c49444d473d434b454e4d4c3941403a6442393233 +37353854deac89c565e69e63a5d62877ffbc2c40433353515a4d605d4450 +484746453f3c3d403e3d3f44494a46424140403f3f4040414a3b49463644 +4546434c45465d5f565e5260638df0d9ffe7a7ffffffff61ffb0a9ff9d7c +aba8a5a7a9a7a097845b3d2664533a13100b151e1e4e866e575c73652e58 +6f6c41434f5d7957214a67638a56323e616b724e323c58655c50333f4a5a +5e3f2c40595755352e507da8c9e49e1f1211161413110d0d0e0e0d0d1316 +191a140c0b0e080f0c1915253d135d435253584c5f575c55655e766f6c76 +7a706b626b7267737876829e9a845d151a0a0600030d0012071316111218 +160c11111011161a160e190f101006010504111e0f1f95edc5fcfdfefefe +f8ffdf664a556656585c4c4f3a3260d9c8bbacc0a0b08da9ec823733251c +1a191d1d1a171a191612100f0f0e0c1305150a120e0e050c090407030110 +2a3a2a52243577534d635a59515b262028262927292322202a3a5061615c +576d673f6f89402a4127403e2b0a010d11050a0a0a0b0b0c0c0c080b0d0c +0a0b0e0e0a05404a12264a202b39291830565e525e5f7a7b7d5a66676f67 +717163707d727d5e675c5f62536379cde58c2d1d313b131614110e0d0f12 +14181a15151715121112100d09050000101409083666541c120c0b172933 +332c405f5b7c383b7c252e6a334984937e3d1b0a1c1b11222b2d140e1014 +10080c1a1f1f1c1b191b1c2024292c29251e181318140f0f1113100e0d09 +0d11121c1e130821090d0f27a99318330381c1dac0e52d51deed29203519 +1613171814101318110f0c0a0d0e0e1014141313151a1d2014141411100f +1112161617181817171613252f2e38454134423f3d2b752c66ee5ff3d2b3 +f761bae7b4e3845b7a79797c807e76705d39221964605133373132322650 +846c555e776b345e716e40424e5c7856204966628955313d606b704c303a +56635a4e313d48585c3d2a3d53524f322c5280afd2f1b0352d2d3432302f +2c2c2d2d2c2b2f2f312f251b181d1a21171e13223a1160475b5c5f4e5f53 +554e615a726d6a747a706b606a716670736f78969686692d3c373b303d44 +2e43333c3e393a403e34393938393e423d353c3233332723242029311e28 +9aedc2f9fbfcfcf9f3fcd85e424d6050555a4a4d342a5ad1c1b19fb191a3 +83a8f59553595a57504d4b49413b3936322e2b2a2b2b2b3527392e393536 +2d34312b2a27242a343a2a512331724e45594e4d454f1a151e1e2321211b +1a182030475859534e6258336c92574d715f7d7e6844343a3a2e36363637 +373838383437393836373a3e3d3a737a3e4c693a3f452f182c4e5347575b +7677795662656d67717163707d727d5b62545355485b79d7fdb15f5a7681 +504d49443d3a3a3a3a3d3c3a393c393631323438383835364646352e537d +652d25201f293b45423b4d6a64853e41822b38753c528c9b86452416292b +23354147302d343e3e383b44433f3a37373b41434447494945403a383e3c +3a3a3d403f3f3f3a3e414148493b2e472f33364ed0b6334c1997d7f0d6fb +4468f5ff403a4c394243413d332d303a393c3f4040403e3d403d3c3a3a3d +40433537373637383a3b3e3e3f404140403f3c4e585a616e6a5b625b5742 +883d75fb6afbdabbff6cc5f2bfee8c66514f4c4f52504c473c1d0d085a57 +4b2e36323639315d927a636b8377406a7e7b4e505c6a86642e5774709763 +3f4b6e777d573b45616e65593c485363674835465d59593d395f8fbfe3ff +be4238383e3a34312e2e2f2f2e2d323335342c2220221e231b241e2d451c +69506265695a6b61655e7069817b7881867c756b72796e77797681a1a493 +7739463d41344149344732383d38393f3e3439393a3b4044423a40363737 +2c2527232d37232fa0f5cbfffffffffffaffe0694d586c5c606555584037 +66dcc9b9a6b898aa8baefa99565c5e5d5a585856504b4b46403934312f2f +2d3628392e3834352c33302a2c27262b3338284f212e6f4b43584e4d454f +1c19272b2f2d2e28252329384a59564e47605f3d77995d5173607e7e6946 +373f3e323939393a3a3b3b3b373a3c3b393a3d40413e767c3f4d6b3b3e45 +2d16294b4f414f506b6c6e4b5759615b65655764736875545e52555c5066 +85e3ffba665f7b8353504f484540434245464843454545423e3f4041403c +39374647363159836d342921202b3d47474053706d8e4a4d8e37417b455b +97a693523324393a31444f5848494e56554c4f5a5b58524f4f5054565352 +5754524a464149444341464647464a484c4d4b53524539523c40455fe1c9 +486230aeeeffebff567affff50495c484f51514d453d4046434242424141 +40404341403f404346493c3d3d3c3c3c3e3f404041424342444340525c5b +65726e626d676650994d88ff7effefceff7ed9ffd3ffa178a9a7a6a5a8a5 +9e96825a3c2a68553b150e0a121c1d4b836f545c786a32526a6e553e445c +6a593732516a707c383d4a616f5b443b46555c5a373843585f4834374d52 +5d473547668ebfd1ce61111a071313110f0d0e0e0d0c100e1013130e0e0d +0e0a14181226a381a18e92848888a1966f555b4d574d4d545a4744599bcd +c8c5c9dcd8cfd3ffbc0b19151100000707030712130e111a1b1611111112 +171d1a14110f16160a050b0d001a482891ff8a99857e7a7f777971332a26 +34252c1a3631311e1c62556059555d4848437e562a2c2119181d23241f19 +1a191614100e0f0e080c0210040a0609080708121c161a33183b39281b2e +5e554a60536b917824352e37363738373e4226456c6048545a525951b5f8 +8d222a494b341a0b0c10100b0c0a0c0b0d0b0e0c0b0b0f0c0d0b10101000 +1f5247354556382914091b415f694f677f71768e898e8c8c877f8a767a6c +7b605e5761544d458b7a848c50000012070c1010100f1113131818151515 +141213120f0d0a080707000c10090f202519110a060810120e0633b7abab +9f44c0371f848475be6ea6da3a0d1325262b2d3822150f12120c0c151717 +151212131417212727261f1a151415110e0e0e0f0d0b0d070c10141f241a +25302826150363beddddb56cdce9ede4652671da63263b3a271c1b1b1e1d +1f2114110f0f0f101214191917191b1f23251e1d1e1d1c1a1b1b1b1e2020 +2020202215304b5455585a5a5d4a3a53eaecdee4559b9966c48088cdcbe6 +a2907876777a7d7c746f5b38231d6862523535302f30254d816d525e7c70 +38586c70543d435b6958363150696f7b373c49616d59423944535a583536 +41565d463236484d574132456591c5ddde7429352531302f2d2c2d2d2c2b +2e2a292b28211d1e231e221f1223a07ea191998b8d8ba093694f574b554d +4d545a47425898cac3bebccdc8c2c8fdc6213e444b383547443a353a3b36 +3942433e3939393a3f44413b3632393c2f2b2e2c1b32593395fe87927c76 +70756b6d62241a1624151c0d2924210c0a51404b423f49383d418665424f +56565353555249413e3b36322f2d2c2d2c3329382c3430363435343e4842 +4352243d39291a2b594e41554860836c18291e2728292c2b32361c3c6358 +414d51494c47b3ffa445577f877154423d3d393235363537363737383437 +38383637393d432e5282735d6874503b1e0f1b3d5a644b668072778f8a8f +8d8c89818c787c6e7d615d535b4d48438f869cb181302753414241403d3a +393a383a3a37373a39343332333537383a3a313c3c2f2e3939302e292325 +2b2d261e49cdbcbcaf54cf4731969485cd7db5eb4b1f293e41484c59453b +394145413f44403b3835353a3e4146494c4b46413e3d403e3b3b3e3f3e3e +413d4044464f5249515c545240318ee5fcf6ce85f2fffffa7b3d88f17d40 +555a534c433f3c383a3f37393b3d3d3c3c3a3c3b3938383b3f4137393a3b +3b3c3d3d393a3c3e403f424437546e78787b7d79765e4c64f6f6e6ea589e +9b68c7838bd0cee9a5934f4d4b4d504e4a463a1c0d0c5e594c3034313337 +305a8f7b606b887c4464797d624b51697766443f5e777d89454a576d7a64 +4d444f5e656340414c6168513d3e4f54614b3d5273a0d5eded8235402f39 +34312f2e2f2f2e2d302d2d2f2d272425261f25251c2eab87a9989f919392 +a89c755d65586259596066514d60a1d1cac5c3d4d2ccd6ffd22c464a4f3b +3749473d33393a353841433e39393b3c414946403c363d3f352e322f1f36 +60399eff90997d7471766f71692b24202f202717332e2c18165b49524842 +4b3b4144886844515a5b595d605f574d4c47413c3430302f2c3228372b32 +2e333333333d49414554243c3724162653483c51445c826c182d28343536 +38373c40243f64563b4548445352beffaa495c818872564541423d373939 +393a3a3a3b3b383a3c3b3a3a3d4046305584765f6a76523b1f0d193a5660 +48627b6d728a858a888a867e89757b6b785c59525d544f4e9a92a8ba8837 +2d574344464443404141414344404142423e3e3d3f3d3d3c3d3b323e3d32 +33404036342e2b2d3436302a56daccccbf64e2573fa4a495e090caff5f35 +3e52545a5e6c5b524f555853525856534e4b494b4e4d4f5254534d484443 +46434040424342424c494d51515b5f535e69615f50409ef6ffffe49bffff +ffff904f9aff8e4f64675e564f4b474345473b3b3a3b3b3b3b3b3e3c3b3a +3c3e43443c3c3e3d3e3d3f3e3b3b3d3e3f414345385470787a7d7f7c7d67 +566efffff3f867adaa77d6929adfddf8b4a2a9a5a4a3a5a29c9580573c2e +6d5539150b09101a1d477f734f5a7e713949616e70423a5a6066602a425e +6e80632a44526d685136354c5f61423239525d554331424b62563e3c4d76 +9abde3af2a17141d13110f0e0e0e0b0c0f0a080d100d0d0b0900131c2234 +f5cea5a1a3909098ab9e51252e25271e24262219171e4e7c797771746d6a +69e9c62c2d0c0001000000020912110d101a1f1d11121314191f1e19180f +12150d0a0b071b063719409e44475b5e595f5d58532f382f29353d2f4531 +323948867576756f675d7346858d45315242352b28231b151a1a1613100e +0f0c0b0906100708040d1109091d2d262846401c3836272855444c5c5152 +7c885f666f746d79786a656c7c798b6a4a53574a3f50adf4c36d3c218a50 +1b0807070d160d0c0d0c0e0d0e0e0d0d0f0e0e0e111013050a231c002e98 +643c221c111f3f4d4747536d757528617656505c3c3d6c7476511c1b2b1c +2b162a272422190d000004080e1112121215131818141416151211100c0a +0a0b0d0e1a141111110e1418110c0a0a0d0f0b0744d13d545a21bfa2b0ac +b711140066cc440f0d18141b222f28130301050100021414131111101012 +1b20221e130d0c0c1613101011110f0e120c1012131e261e27332b1c2d28 +002f3557ea8cc6f0a0f19b2241e0b94038363322191a212424221e1c1a1a +1c1e1f201e1f1f21252a2e3031303232322f2e3033393c3b3a3c3f423f51 +6a787a777a7e868769487c817d7d734377626c79807c7177657175747578 +7a79726e593523236f655235322f2d2e25497d714d5c82773f4f63706f41 +39595f655f29415d6d7f622943526b664f34334a5d5f403037505b534130 +3d465d50383649759dc4efc14031323b302f2d2c2d2d2d2b2e2826292925 +2020210d22252231efc9a4a2a7949198a6994a202822241c222420181419 +4776706c615f58595be6ce42523d3142413a443e373a393538424745393a +3a3b404645403d34373c3633322c391f4a26449e3e3e50514a4f4a453e1a +2318121e26182e1a1a212e6c57595855514d6a468a9b5850887f70645d53 +473d3e3c383431302e2e32312e3a3134303b41393b4f5f58586c52213c38 +2827524045534849717e555a5b605b696a5e596275738565454e5345384c +afffda8e6752c18a503b3732343d3535353536363637353637373637393c +43373c53482654ba805134281a23414e4a4b577179792c657a59535f3f40 +6f787b57221f2c1c2e1d34393f44443f3732373a3b3d3b39373835393937 +36393734323131313336383b47403934302b2d353634303031312b2761ee +566d7037d3b7c6c3cc26280e7ae05a272937374049595343373b403f3b3a +45423e3c3d4045474b4e504c443e3d3e484744444545464447404244434e +554d535f574859542854506dffa1d8ffb1ffac3354f3ce564f525a4b3a37 +3839393a3b3c3e3e3f3e3d3d38383737393c404240424446474846464649 +4c4e4e50555b586b8492928f8f929490724f7f817c7a703d715c69767f79 +6e715f6b4d4b494b4d4b484538190d11645b4c303130313530568b7f5b69 +8e834b5b707d7d4f47676d736d374f6b7b8d7037515e78715a3f3e55686a +4b3b425b665e4c38444c645a42425783acd4ffcf4e3e3d4534312f2e2f2f +2e2d302a282c2d292625250f272c2a3af9d0aaa7aa97939aaa9d5227322b +2f272d2f2b201b1f4e7a757064645f6368f1d94d5a423544443d473f373a +3935384249473b3c3f40454d4c45433a3d413c3737324126512e4da64843 +4e4b474f4c4743212c221c2830223624272e39755f5e5c58534e6d488d9e +5c538a82746b655d52494a46413b3632302f31302e3930332f3941393a4e +60575a6d54243d3723224b373d4c43446f7d565e666c6976776a656b7c77 +876241484a41405abbffe2956d57c68e543f3b3839423737373738383839 +3738393938393b3d45383d554b2857bc8354362819223e505156627c8585 +38718668626e4e4f80837f572222312437273e434a4e4d463e363a3b4040 +413e3f3e3e40423d3f3f403d3b3a3a38393c3e3e4a413b38332f323b3e3c +3b3b3d3d383671fe6a81854cebccdbd5e13b402693f9723f3f4c4a525a69 +635145474e4c494956524e4c4a4a4d4b4d4c4e4a413b3a3b454340404141 +41444d4b4d4f4d585f555e6a6253666136646382ffb6eeffc5ffc04565ff +df645d5d614f413d3e3e3e3c39393a3a3b3b3b3b373537353a3c42424342 +46454845464444484b4c4c4f53585568838f928f90939795775586898483 +79477b66727f8782777b6975a6a3a2a1a19e99937c503b32725536120a0a +0e191e447b794d557e754440556a7851344b596f7c3d3b4e6e797d384045 +666b58352f4a5e5d52343246535d53353c435f5d4437416a8cc2d7e06407 +1a071413100f0e0f0c0a0e0b0b0d0c08090c1e0019222b2ba774474d554e +4c4f55524211232627212a24222c32263e5f5d61776b6a70407585123732 +1a2c280000000b12120e10171b1912141515191e1d181f0c070d13202f32 +2d3c2c291b24336655655a5b6e7b7045414d394e4d564a46424e61a68b69 +636566655852c2f77c2b5b4128181415171815151411110f0f0d0e04090e +0d0d050e030209213e464e66492824200d0c474e61415d6f737680867d8f +929c92806a818770755859564b53415982a4b9ac650d4420080a120b0609 +0d0c0e0d0e0e0f0e0e0d0e0d0e0e100f0c0700050e000d403c1b1b210c0b +2121151a69ac88bb614e8f1d3192608cac89a77e081b231b2f1f1b160e08 +090e10100c0f13121210121313161714141615111110100d101012132814 +070c171714110a090b0f101113151dc4bba5ac367ed5edd7dc193699d2cb +3119231b0d1c2627341e0a05070707091314141312101011232829221811 +11141110101213131113151015171827322d2f3338362b2a2db2a18fefa8 +9ae153e5b0597aeae87b6051504138383f41403d42403e3e414447484b4b +4d4f53585e60605f616263615e5e646b6d6c696a6f74706a6d7a807c7a7d +767f7b7172737c8c83817e7c7e76787476686e777272737576756f6c5531 +222774654f3532302b2d264679774b57827b4a46576c7750334a586e7b3c +3a4d6d787c373f45646956332d485c5b50323044515b5134373e5a563c2f +3b668bc8e0f07a213825312f2c2d2d2e2e2c302d2a2c2a2422253a182a2b +2b25a06d454d57504b4b504a3c0b1d21221c251f1d272b20355453556457 +555d33728d295c6357706e403938383a3a36383f4341393b3c3c4045443f +46332e353e4d5a5b4f59433722242d5d47564b4c5c685d302c382237333d +312f2c384a8c704c494f53595453c9ff8a468c7d624f4644413e3a373532 +302e2f2f352c31383739313c33343b547179819260352f2a13114a4f5e3e +586a6d717b7f6f7f8490877a667e866f745859574c53415d8ab5d1cd8b39 +755239393d342d2e333434353436353634353435343636383a382d333a29 +34665d3733341b192b2a212574b793c66c59962438976591b18fb1891326 +2e253c302d2c2a2a2f393f41393b3c3b3736353434373835353938343433 +3232323537394e37282e3636313232343637383737363ee3d7c0c54f94eb +ffecf02d4aade6df46333f3c31444e52604f3f3e4443423f43403f3e3f42 +464854575851474040434241414142424241413b3d3f404f595456585d5b +504c4fd0b79fffb5a5ed5ceeb96286f6f68c71656c5d4d4a4d4d4c4c5757 +5858585755575a5a595b5d61646666686a6d6f706d6a6a6d727272757c81 +7f797c868c8783837a817b6f6d6d738178767371756d726e6b5d636c4a49 +47484947454334140c15695b492f31312f343153878559648e8756526479 +855e4158667c894a485b7b868a454d517174613e385367665b3d3b4f5c66 +5c3c3e44615e473a477499d6efff882e432f35322f2f2f302f2d312e2c2e +2c2726293d1c3132332fa874484f564d49484d483e0d212728232c26242e +32243858545766595a633d7b983164685a7170423c3c3b3a3a3638414543 +3e404143474c4b464d3a353d4553616158614b402c2e3762465146495c6a +6137333f2a3f3c4337373844549575504c51555b5557cfff934d907e6454 +4d4c4d4943403c3733302e2e342c3137363a323c35353c57747c8495663b +332b130d4347573954676d7581877c8c939e958674898e75795859524751 +4b6997bfdbd694427c593e3f433832343636373737383838373737373738 +393a38352b333b2d3969623b37381e1a2c2f2f3988cba7dc826fb03e54b4 +82aecea5bb8d192c342e4538373735343a4247463e3c403d3d393b393b3c +3f3a3c3d3e3a3a393b383b3b3d3c513b2d30393935373a3d3f4144444545 +4ff5ecd5db65abffffffff4563c6fffa614a554f41505a5b69564545494b +4a494f4b4845444346435051524b413a3a3d3c3b3b3b3c3c3c3e44414547 +4857605b5d606664595559dbc5afffc5b7fd6dfdca7194ffff967b6c6f60 +504c4e4d4a49504f4f4f52535554575557575c5e6464666569696d6b6a66 +66686e6e6d6f757a7a7477828883808179807d70716f78857e7a79757a70 +767071616970a5a3a29f9e9c9793794b3835755331110b0d0e192041777f +4f4d7572513d49616f653736506a7b583444597f736e3439546a6746313d +515760403239455b5e43393a585e4f3c3a5675a5bee3b23221041513110f +0f0f0c0a0a0c0e0e08050a13260e1e28352d3a1b494d4d525050586b4818 +2a2b2b273029212428274d716258535b5d614d68b54d084f4a454c230602 +0d1414121213120f13171817181a18130b071018141b2c35325b172c3d1e +2b51505d50536a838a6b6581776f75807081857e6c9b8e6c727051635f8f +a4d197667f614021100906070e1010100f0f100f0d000f0a1013070c0c10 +08030b0e070d5dca8b52360d112d4a3d503a566a7c72446972554e6e4652 +2c5c772c3136212f162b383d423c1f06040103070c0c0b0b0d0d0f0e100e +110f0f0d0e0c0f0e100e0a0d101111130d00180a1a210c0f1a0d22037eb4 +0b446045d25676b5613a3c1cb6a200221e171710241c1d241c0907131414 +141212111416121516121214130f1112131517171616171716141111161a +17191b191716181b0a276364c6cb5ef0cbe2e43d9de4ab472c1827251922 +24203325150d0c0d1015181b1c1c1a181617272b2b271f1b1d201d1e2023 +232425272a292e333748565360514a615b563e63d3c29c5960765279875e +8599a38376717b736f71716f6e6e6a6867676b6f7475706d6e6f71737778 +757576777979767470767776747376797a6c666d716b696c6e666778777a +726b66866a746d61696d82717b72706f717373716d6c522c1f2a77634c34 +33332b2d2843757d4d4f797857434b636e6436354f697a573343587e726d +3339526865442f3b4f555e3e303743595c423435515745322f5073a7c5f0 +c54c3e22312f2d2d2e2e2e2e2e3032322a242932432a3133352830124349 +4c514b494f6241102223221e251e16191d1d4367584d454c4d524367bf64 +2d8084858d6445393a3c3c3a3a3a39363a3e3f3d3e403e39312f3b44434a +5b61587b2f3d461e2548455042455c747b5c56726860647060727a725c8a +7b575f61465e6093acdaa27caa9773523d312a292f2e2d2d2d2d2e2f3026 +3530363a2e35373d38343e413c3a7be09f65451b1c364f42543e596d7e74 +42676f5751744d5a34648033383b26341e3748505c59432e2e2d2e323533 +30313333323433343435323331323234333434373d3d3d3f36263d2d393d +25242d20351790c61d557055e06483c06b444427c6b41136322d2f2b4038 +3b443e2e2c3a3b3c3a383333333531343534333636323435363635343332 +333333313033383d3e4243413d3b3a3b27437d7bdbe073ffdcf1f34cabf2 +b9573e2e41433a474a485a4d413d3e3f40413d3c3b3b3e4144454f50504c +4440404340414344444546464643474c50616f6c79696279736b5374ddc9 +a05c60765078855d859aa6887e7b877d757371706f747474737372717071 +7172707070727375717272767a7c78756b6d70717173777a7b6d676d6e66 +626569615f6e6b6c625b56765a6661565f6374636d644847464646444343 +310f09186c59452e32342f343350838b5b5c8584634f58707c7244435d77 +88654151668c807b41455f73704f3a465a6069493b424e64674a3b3b585e +4e3d3d5e81b6d5ffd4594c2c3532302f30302f2e2e3032322b262b34472d +37393d2f38174548484c4541485b3b0d202123212b241c1f211e4266564b +42494e554b6dc86a3385888791684c3e3d3e3e3c3c3f3e3b414546464749 +47423a37424d4b52636a638639474f282f4d434a3f445c7780635d796f65 +6a736377827c6692815c63644a62659cb7e9b48ab0997657433936333836 +33312f2d2c2c32293833393f33393d423c394245404086eda86c481b1831 +4b3e55415e768a815075806660825d67416f89393e3e29382945575e6967 +4f3a3a3635393b3836343636363737373838363635353637373532333a3c +3e423a2a43333e4129273127462fa8de356f8a6ffd81a3e08e676843d6be +1b3f3b3839344b43464f48373541403c3d393835383836373a3638383a36 +38393c3b3d3a3936373737353334393f43484b494644464835518e8deef3 +86fff0ffff63c5ffd3705443504e434d4d48594c403d3d40424443433e3d +3c3b3a3b464848443c38393c393a3c3d3d3e3f4147444b50546573707d6d +667d776e587be6d3ab656c805b8090658d9fad8c817d877e75726f6b696a +696869696b6c6f706c6b6b6a6c6d70706e6d6f717575736f65666a6b6a6b +6f7273655f6567605c5f655d5d6c6b6b635b57765b6561545e6174626d63 +a3a3a19e9d9a96937a49373777522e100c0f0e18223c72835745666c6142 +42566a764d3247606e6f4033526a7b81452f3e61755e382b3c51604f3c31 +38515c5138354d5c5a49343a6376b4cbdf892b091615110f0f0d0b080407 +0d0d07040f1e29262a3e504d2428505249504d54668e5e38443c41424b4b +5552534f6b7e63535f5f5448526ae0b74857353556370a0b0f1416161411 +0d0a13181b191818130d170f0c00001d6599642d2956230d29445e615f69 +666c80787a7d797c9188876d6278688379596b635e3134babee9f8c02719 +110805070d140c0d101011121311110c2812171d0e0f09130e030b131110 +0c84534a370f0b1b132315028c9c8da9455e5c1b308b2300168cbe21001f +262e18272415100d0d14191f1a0a020911140e0f0f0f10101010100f0d0d +0f10100f140c1411010a1d172520252010141c101b1172db75544b1ee0cd +e6dd9a01172bc3d821231e20161a0715180e121c1a0a161515121214171a +121415121113120d0a0c111416171716131d1f17121318181f202222201e +21231e49914862f255d8cd8df765bdf7ad8c6a2f262a242426303d372e27 +24252b313a3d3f403e3c3938414445464546474a505256575858595b625f +6465646f79736e7f7c76687b826a5e7b7f7d8d8b8b878d748d7179827f83 +7c7c7c7e7c777779706e6d6f73787e7e706c6d6b6a6a6c6b6d69696b6e6e +6b6b686c6d6c6d6b6a696d6d7378726a6c756a6f7670616c78767a74787d +667b7a7b77747a706e6f7072716f6c6c532a1e2c7962493334352b2c2a3e +708155476a726748445869754c31465f6d6e3f3251697a80442f3c5f735c +36293a4f5e4d3a2f364f5a50353046524e3d28325d75bad8f2a34827312e +2d2d2e2f2f2f2b2f34342e2b33404b423d4850481a1d484d444c464c5a82 +56313d3338363f3c4643444360755a4a56564a3f4d6dedce6d876c709172 +433d3a3c3e3d3b3834313a3f413f3e3e39333f3a382f2a4f97c98e514568 +2d0f263a5456555f5d637971757874778d84836b6378657e6f50655f5f36 +3dc4c7f1fed14c493e332c2c2d30272829292b2c2d2e302d49333a403336 +303e3b323c45433f31a3706450241d2b1f2f200c96a599b4516a692b419e +3612299ece2f0b292f382838372c2a2a2d383f454031292e373a31323232 +3333333333323030323333323b353d3b2b3648424d464a422e31372b372c +8df48e6d6134f4e1f7eea910243ad5ef3b3f3c3e363c2937382e303a3628 +37393734313234382e3232313335353330323233312e2b2a273138333135 +3c3f45484a48433f3f403961a75b74ff65e5d895ff6dc5ffb59777413a43 +4044465158524d474748494b4f4f4f50535658585b5b5c5b5a595a5b6163 +6566646465676c696e6f6e79837f7889867f7184886e5d797a778480807b +816a8368737e7e827b777473716d6f7571706f6d6c6a6a6c67686664615f +5f5e605e5e62676a676259595c5e606162616565696b645959625d646861 +4f5a64636661646b576e6f6e68656b614647454544424243320d081a6e58 +422d33362f33354b7e8f6354767e7354516577835a3f546d7b7c4d405f77 +888e523b496a7e674134455a6958453a415a65583c364d5a5847343f6b83 +c8e8ffb056323832302f30302f2e2a2e33332d2a33414d4644515a4f2221 +46493e433c414e764b27332c3336413f494647435e7055434f4f48405172 +f3d4738b717497784c46403e4042403d3b3841464a484747423c49434139 +3458a2d39a5d5072371b31425352535e5e6680787c7e7a7b8e83826c6880 +6e8477556760633a44d0d8ffffe5544b41393334383b302f2e2d2c2b2a2c +33324e3840463b3d3745413a434c4c4943b5807157291f2a1f2f2415a0b4 +a9c66178793b51ad472138acdb3a143236413548483c3b3a3c464c504b38 +30343a3d35363636373737373736343436373734382f39392a394e48554f +524b36373e34453fa2ffa483794cfffcffffca314657e9fd484b47494146 +334143393b4542323c3939353434383a3234363335363734313337363834 +32312e383d3733363c3e464a4c4b47444748426bb46982ff74f5eaa8ff82 +daffcaab884f45484141414a514b47424344494c52514f4d4c4b49495253 +5454535354555b5d6061606061636b686d6e6f7a847f798a877e7083886f +627c7e7b8984847f856b8469737d7c807974716f6b646469636262616467 +6b6c625f5e5c5a5959585a58585b5f615e5952525455575757565a5a5f62 +5b51525b575e655c4d56635f655d636754686b686560685ca3a2a19d9b98 +96937c49373a78502b100c110d1621376b84623e5765704b3f4d6673653c +3b5765786334464f7f74693c334d6a6b4b2e3247555c4a30324552574535 +40505e5a3b305e6fa7b6d7c24500181611100f0e0c0805050a0b0707111d +3c3b2f5060512b27384e48514d5c6789806f7a6b7b8186877a7d847b8080 +67645c55594a5b68a6b8c65e1b233b220009101214171613100f11181d1c +1a18120b080c1a150000031212007ecd4f15161a4244494e3b4b74696b54 +2874413c662c52756b7f621e2b251d05095e5e5a7a632420201c130f1115 +1013141516161514151f4a221d221618181c150b0c070206191c000f0700 +181626120017c2701e554f65926074c41d0066a9dd4004254c5727281a10 +18231d110510181613130f090f0f10101011111114110f0f121312101806 +010d181b15081010131312191f2113191b7db8ccda74acebc1e0c91d2d0f +9bea4b0b1718141921140f151b1b1c2119171a1a18191a1c181a1a171518 +17120f0f13171c1f2222221d19191b1b17122124282c2d2f33363636c7db +e8aa2f8e952cbd7390d5afc99d5f51524b4a4c586668625e5d5f6163686c +6e706e6a6666747475787b7f7e7d7d8083838280838285818381797d8177 +7d707b82816f76828e757c887a896f75867c7f706c6b6c66717070747371 +70716b69686a6e747c7a746f7071727273737572707275777573787a797c +7f7e79756f757d81807d7f807577847d7d7d7c6c6783705f7b80557a7a81 +7c776e6e70716f6d6c6c552a1e2f7b61493534372a2a2939698260405b6b +7651414f6572643b3a5664776233454e7e73683c314b6869492c3045535a +482e3043505642303946524d2d25566dadc2e8d9621d312f2d2e2e30302f +2d2f32332f2f38445f58435a604c201d2e4741494350577c796974637173 +76776a6d746d757760605a5556495b6db5d1e98b4d5a72562e3539393b3e +3d3a3635373e4342403e3831303646452f2837443e209ce159171313393c +434a394a746c705b307e4b477138618475866521302d28141a6e69617d6e +4248463f342d2c2d2627282a2b2c2e2e313c673f3b40363a3a423d353836 +3034434424322715312e39250c27d381306a6a82af7d93e53e1d85c4f755 +15355a673d3f342a333e3a3026323a383536322c31313232323333333633 +3131343534323c2b2534424740353c3b3b39373b4143353b3d9dd8e9f58f +c5ffd7f4db2f3d21b4ff682c3b3e3c41493a313537323239363939383635 +363831363837373a3b393636353533323131312e2e323a3f3e3b45464a4c +4b4b4c4e4b49d8e9f5b43996982ebf7491d6b2cca3695f656064666e706d +6c69696b6a676868686b6e707171777475777a7b7a777477797976747476 +7d7c807e767a7d76796c787d7c6a6f79846a6e7968755a6071676c5f5d5e +625b625d5b5d5c5b5e646262615e5b5b5a5c6365636361616060625f5d61 +676a6865615f61666b6c69655f636a6b656161656268726c6a6867575270 +5d4e6c734a6d6b706a664646454442404243340d081d7057412e33382e31 +344677906e4d6777825d4e5c73807249486472857041535c8c8176483e56 +737454373b505e6553393b4e5b5e4936404e5c573a33657bbbd2f8e97228 +383330303031302e2c2d31322e2e3743615c4a636a53261e2c41373e3742 +486c67596658687076786b6d746a6f6e56554e4b51455b70bad6ef90545f +79613a403f3e404544413f3e40474e4d4b49433c3c4251513a33444f4b2d +a7ec65231e1a3a3a434b3c4f7c737661337f4a436d36668b7e8c6c26332f +2c19247e7f7d9e8a4d4a49453b35373731302f2f2c2a2b2d35446f47454a +4144444d474143403d43595d3a45342036323f2b1634e395467f7b90bf8d +a5f6512f97d7ff66254467764b4f453b46514c42353e46413e3c362e3333 +343434353535383533333637363338242131414a463b4544454440444a4c +3e4447a8e5f7ffa0d9ffeefff3475739caff7a3d494b464b53453b404340 +3f433a383b383836393935373a3638393b38353537373938383838353336 +3c3f3b374345494b4b4c5052504fe0f2febe43a1a73dce86a3e8c3dbaf72 +6263595959616766646365676968686968676664616370727375787a7977 +75787a7a787677767a76797771757a72766973797864697482686d766674 +595d6e646858565659555d595657545050545150515254575b5c5c5b5a5a +595959595b5856595e615f5a5956575b60605c5852575c5e5a56575c5b61 +6e65666364524f6a5947676b44656669665fa1a0a09d9a9796947d4b363c +7a502d120b110b15203568856a3d4e617a543e485d616b402d4e60767f4d +215764787b553139556c603f313d4c6557342f3c495b563935415c654737 +35637ea8c8e58e1f18161110100e0c0b0c08080908081018251f0c415b42 +2f111847535e5a665f71696978677b7d78786c6b71696d664c4e4640421c +37666075a32c0507040d0a11101012161716151610181f1f1c19120b1609 +090c07070a06060c0f1d15201317191e1f1510549c869d8b2ab7051a8465 +9c94687e640c171e112f12083c24242a3134342c1e15151a151618181818 +171511285d281a1e161c171815171a10101e081214031c151a140c29250f +bfba7f692056dcd4c5e02d50d5a6cf682216313d241a1c2622110f1b1c16 +100f111012121111111212131313191614141718171511211e16150c0a1a +141719232a231f2b4a211f592721d6b080f183ecc15fa26b6bee780d2e22 +1d11161e1f1c202b2d262325282826242424262a2926252625222626282a +31363b3e423c3a3f3e36363e4c5155585b5f6264525d5569676f62607176 +616e6a6b716d78697e8175796e66797b7876787a77757c7e8282827f7b7b +787676797e7f7a777a7d817f7b7a7a7977747a7a737778706d7387637b80 +74797e7b7f7e756895787a81757e756a7d6f7c7776797c7a7b7c75727272 +767b828271707276797c80817b777275797c7a787776757b82817b747571 +6f747c827e75726671707c707a7e6d7879887a767d657480747b6d6f7171 +6f6e6c6d592c20317e6248373437282828346481683c52678058424a5c60 +6f442c4c5e74814f235660747a5731374f665d3d313b465f51312f3b4655 +5134303a52593b2b2b5d7daed5f8a839302f2d2d2f30302f333131313030 +363e483e235062432d0d1446505b5662566a696a776377776f6f63626863 +69654d50504b4b2741747391c6553438333c34393737393d3e3d3c3d363e +4545423f38313e34353b37393c3632343038272d1c1c1d22231a175da693 +ab9c3bca172e987bb5ac7c8f7219263129482a1e4d302b364c53534a3a2e +2c2e292b2b2d2d2e2d2d2d437843373b343a373a393d423a3a49353f3f2a +4237383128423b25d4d095813d76fcf4e5ff4c6ff1c1e87f352741503c36 +38423e2d2b373a342e2e3032313231313131313232323734323235363533 +30403e36372f30413b3e3e454c44404969403c764239ecc693ff94fcd16f +b17a7eff8f274c433e34373d3b3333393a35373b3c3c39373434363a3c3a +3b3f403d413f3e3d3d3e40424741444d514d4f57616266676a6b6d6d5b63 +596a686f625e6c6f5a6763646c68766980867c847a6e757271727577726b +6e6f7073757778786f6b686b6f706b6566696c6a6561616466666d6d666a +6d6562687a566c7165686d6a6c6a5e517c5f5e685e6761586c5d655e5b5e +61626569656562605d5d5e605d5f61646568696a64605e61666b69665f5b +5d636b6d6760615d5959606460595b535d5c685963675664657569686f57 +636d616845464544424242463710091f70563f3030382c2f33427390764a +5e738c644e576a6e7b503a5a6c828e5c30646f8288633b425b7268483b46 +52695b3a37434f5f583b36415a634535366b8bbee5ffb7463a3431313131 +2e2d302d2d302f2f373f4c4129576a48320e13424b544d574d605f627260 +7679747468676d656863484b4843462342777995cc5b3a3d3b4440433e3c +4044454443443f474e4e4b48433c463b3e43414245403d3e394131362522 +2023261e1f66b09cb6a442ce172c9679bcb685997b212d372d4d362c614a +484e5555554c3e333235303031302e2c2b2d314a7f4a3f433e454246454a +4e4648594a56523b4f4140372c494633e7e5ad994f85fffff4ff5e81ffd4 +fc914637505e484244504c3b3945453e3633333433313030303333343434 +39363432353635312a3a3933383133464245464e554d47516e45427c4b43 +f9d3a1ffa4ffe17fc48d8fff9d34564a45383c423f393a42433c36383a3a +3735333335393a38383b3b383c3b3b3b3d4043454b44454d4f4749515a5c +60626567696a5a635a6c6a7164637276626f6b6c736f7b6b7d8074766c5f +6a6967696e706e696b6c6c6c6c6a6769686765686c6d686365686b696764 +64635f5d64645e62675f5c62744e656a5e6166636563584b77585a61565f +584e62535f5954575856585a56555556585b605f5655595a5e5f63625e58 +57585f61615c5552535963645e5758544e50555a554e534c565561535d61 +505d5e6e615f664e5b665a619f9f9e9b9a9c99927851354c69562b14070b +0f1724345a8b7a4f4259746d4531536875673c365f6e776d38335a768169 +2f3452695d46352e425d664f2e2b4357614d37334a5c523d34496e9db3d7 +cb581411191414110617100f0c0b0b0c0e100d0f141d232218100a12232c +311d267162666c0d812c2654543686718889001b140f0d111819160f110e +0e0e0f100f0e101011131515121013171c1d1b1713100f0f0c0d0f111417 +0f12141617140e0b120d2217118bb7192d421bdb698ebb7aaabf89794b12 +1c22140e17252b32372f3536292a271c201717151716161617161415181b +1d1f1e1e211e1c1c1d1f1f1c15191c1a1e25292521271e0a3fc5d2dcce68 +ebd7f1de51b6e7a2d5a50a30232c1f1d1c1c1c1c1b191717191919171917 +11131818171617181c1c1d1d1c1b1c1b2322201f1c1d1e1d202324292f28 +283942432ea6ddc8e48f4de24e8aaf3cbfead7a6663a343f44403b3e3e3d +424a4f4e4c4c4d4f5356565558585a575656585a5a5d6164676969697174 +736f6e71726f76787979797979797f7d7d7c7c7d7f81817f8388847c7c81 +797d7d787375787977747477767374777675747273727171737474757677 +787a76797b7a7b7d7870787777797a7a77757675797e7e7a787a797e8282 +7c7878797a7e817d7b7877737b7a777372727172767572707071767a726e +6e72726f6f7275726f6e6e6d69676a696a6d6f6b666067625f616a707271 +6d6d6e6e6f707170666362615f5e5d5d595c5f60707273727476726c5432 +1f416b66453830322d2a2b325483744d445d7871493351677f713e325667 +7e763c314f6b816d3332465b57463a2e364d5a4a312c394a574532314557 +4c34293d6699b6e0da6d2b2c342f313126373332302f2f2f31312e2e3035 +3631261b151d2d353a262f7a6c7275168a352d5b5b3d8d7a91930b292927 +272b313533303433353738393835373536383a3a3735383c4142403c3837 +383838393b3e41423a3b3b3b38332d272921362b24a0cc2e445933f380a7 +d596c8dca3906128343e35313946474948414a4f42433d32352c2c2d2c2e +2e2e2f30303235383a3c3c3c3f3e3e3e414343443f444644464c4c474046 +3b2559dce8f2e07afeeafff063c8f6b1e6b61b4237443b3b383838383735 +33333333333433342e3033323130313235353636353533323a3937353536 +36373a3d3c414740404e53513bb3e7d0ea934fe4508db23fc2eedbad6e44 +404e534f484b4946464c4f4e4f4f4e50535351505355575757595b5d5c5e +5f6060605e5e66696866676b6c696c6b6c6c6c6c6a6b706f6c6b6b6c6e70 +70717479756d6d726a70706b696b6e6f6966666969666669656462616264 +63636564636465666767636668676868635d66666668696966646564686d +6d696767656a6e6b6561616361686b676564635f6763605c5b5b5d5e6362 +5f5c58595c605d5b5b5e5d5b5a5e605e5a5a595a5653565556585a57524c +534e4a4c535a5c5b555556565758595a504f4e4d4d4c4b4b45484b4c4648 +4846474949473416082f5d593a2e2c312f30353f6292825a5068837c5440 +5f778b7d4d436777887f473e5f798d763c3d546a614e4036425864513631 +4254625039364b5b5039314773a8c7f1ed7e39373d36353023342f2e2c2d +2f313536333134393a34271d171f2f3a3f2b3483788086279b46406d6d4f +9f89a09f17322c29282c3539373538393a3b3c3d3e3a3c3b3c3e40403d3b +4044494a4844403c3a3a3b3c3e414648403f40413f38322b2f283f3633b1 +dd3f56693ffd86abd699d3eab2a06f3540493e37424f5257584d4d4c3f40 +3b30362d2d2d2d2e2e2e2f2f3336393c404244444949484a4d4f51504f54 +54504e515049434b433068eefdfff890fff8fffc6fd6ffc4fac82b4e3e48 +3e3d3b3b3b3b3a38343432323030302f292b2e2f2e2d3031323233322f2c +2b2a32333132323336363b3e3e43494242515a5a44bcf1dbf69f5cf35f9c +c14ed1fae4b37146404b4e4841444341454b4f4c484646484b4c4b4a4d4e +504f4f5052524e505255565958586263625d5d5f605d6363646464646362 +696664636364666868686d726e68686d65686863606164655e5b5b5e605d +5d605d5c5857585756565857595a5b5c5f605c5f616062635e575c5c5c5e +5f5f5e5c5d5c6065656160605e6165635d5959585a5d605c5a5958565e5b +5854535354555c5b585554575b5f58545557585455575b5755535453504c +4f4e4f535756534d544d47474d4f4f4e4b4b4c4c4d4e4f4f454443424140 +3f3f3c3f42439fa0a09a9b9b98907850354c6b582b14080b1016202d517e +805641506d6f513a4e5c686f563e5165736f46364c64766d4d38415a645c +402a3e566053372c405162523e303a4e5653333b5787a9d3e6a9280a0c11 +14160b1211100c0c0c0e10110f1011151b1a151018140f080f1444ad3d4a +8121ac3b4675817198363564021a110e0b0e14161310111110111212100f +1110111214151311111418191613100e11100f0f11131618121314161613 +0f0d1a111a1d1e74caab9a710ad4d7dde2a95eccdbc2ea340a31170e1523 +2a333a3634372a2b261b1e1414141415141415151313171a1c1e1d1d1b1a +17181a1d1d1b1f212222222728262610121d2a514975e95ee2daa6f76d88 +f7cdf5c01e261824201e1c1c1d1d1c1a1f1f1f1f201f201f212224232222 +25272324282a2c2e2f2f2e2e2e2f31333637383c3d434b454658604c3d75 +877f8d5e41854c5f77435f6d7069605d676f6b61696b6966686d6e6c6968 +686a6e6f6e6c706f716f6d6c6f716a6d6f71727172716d71716e6e737371 +747475757575747479787776767778777875777a76707279757a7a757174 +77787b78787b7b78787b7977757575767675757574747576777775777675 +777c7b7777767677787775726f6e717778757375686c706e696464666369 +6b67646463606a6a6866656362626867635f5a595a5c625e5d5d5b565457 +514e4b4b4c4b4846484747494b494440383432353d444748404243444243 +444441414042444547484d4f5253727575747576736d53301f416c664538 +31332c27272b4976785241527173553c4a5b767d593a445e7a7c4a323e56 +7674543830495c5c472a3142534e3b30333f564a382e394c524a262e497f +a6d8f1ba3f24262c3134293131302f2e2e303132302f303335322a242a26 +20191f2656be4d5a9131bc4b56859181a8464675132f2e2d2c2f35373633 +343436373838383736353637393a383636393d3e3b383536393a39393b3d +3f413b3c3d3f3f3c3834382e3639398fe5c6b58c24eef2f9fec67eebf8db +ff4e26513d373e4a4b50514b484c3f403b30342a2d2d2d2e2e2e2f2f2f31 +3538393b3c3c393837383c3f3f3f464b4c4a4b4f4e49482f3139446b5f8a +f76aefe6b0ff7792ffd5ffcd2e382d3c3a38363636363533353535363536 +3536383939383736383a3637383b3d403f3f3e3d3d3e40424546474b4c52 +59545464674f4075867c8756397d445971405c6a6b655c5c66706d636b6b +696361646463606060606161605e5f616362636467695d5e5f616261605f +5b5d5d5b5b5d5e5a59595a5a5a5a59595e5d5d5c5c5d5e6062626467635d +5e65616666615d6063646966666969666669676563636364646363646262 +6364656563656463656a686565646465666563605d5c5e64656260625156 +5a58534e4e504d5355514e4e4d4a56565452514f4e4e53524e4a45444547 +4d49484846413f423c393636373633313534343537352f2b23201e222a32 +3535282728292a2b2c2c2b2b2d2f3132343537393c3d484a4a47484a4947 +3617082f5c57382e2b322f2e3138588587604d5e7c7e60485b6b8188684b +566e848455404d65807c5c42405967644d323b4e5c543e333c4b62554233 +3e4f534d2d37568eb7ebffcc4f3133353534272c2c2b2b2d2f3238373532 +323536342b252e2a28212c3264ce6674ab4bd6656f9ea898bf5d5a892740 +363231343a3c3a373838393a3b3b3a393c3b3c3d3f403e3c3c3f4344413e +3b38393838383a3c41433d3e414343403c39403642474aa2fadbca9f35fb +fbfdffcc8bfdffefff5f345e463d444f5258595047473a3b362b31272a2a +2a2b2d2d2e2e3233373a3d3f414143424243484b4b4b5557585251514f4b +4a323644517a749fff82fff4baff819effe8ffe03d42303c393735333333 +322f323232303030302e3031323332343638343335353334343434363637 +3b3d40414448494f595154646d56477d8e85916144884f637b4965716f64 +5b586168625860615f5a5b5f625e575555565858575557585a5959595c5c +4c4b4f51555456555154524d4d4f4d4c4e50515151514e4e5352504f4f50 +4f5054535659554f535a565b5d5854575c5b5f5a5a5d5d5a5a5d5b595757 +57585855555454545556595957595a595b60615b5b5858595a5959565352 +575d5e5b5a5b494b4f4d4843434542484a464343423f4d4d4b4948464747 +4e4d49454241424448444343413c3a3d3734313132312e2c2e2d30343837 +363228221f1e242829271c1c1d1e1e1f20201e1e1f21232426272c2e3132 +a3a3a29c9b9b978f7650364d6b572b140a0c10151c24446e846141456171 +6249444e5b76784c3d5764715c42424f646c663f34485f644b303a495557 +44323a4659564935304156633c3841688eb4dbd76b1e0c1513160e090f0e +0c0c0d0f1113120f0f11171919161f1d180b0c1149ba351c3500ccb3b7b7 +8e7bb8777681001415120f12161714111213121313131111121111121415 +1311121416161411100f131110101113151614151718191a1a1b22241f20 +17317aa1b8cc4cb3ebd8d99808402237ed560f2a25171822293039383438 +2c2d271c1e1616161617161717171517191c1f20202022211e2024272827 +22242421212322211e2d302358c7c7b0dc55afad52d05c3d3d42838d303c +37403b393736383837363c3c3b3b3c3b3d3d4141403f3e3f44474546484b +4e50515154545557595c5e605c6061676e6869798f707372697676707a7b +7e717985746a6a71777777736d666b6f6c67686b6c696c6a6a6c6f706e6c +6768696765646567686a6c6d6d6c6c6b646a6b69696c6b676c6d6d6e6e6d +6d6c6f7070717170706d706d6e6e6a676a716a6f706a66696c6c706d6d70 +706d6d706f6e6d6b6b6b6c6d6a6a6968676768686b6a6662646b6e6c6766 +65656564625f5a595b60605b595b606365645f5b5b5c585d5e5b58585754 +48494948474442404443413d39363536363230302e2826282d2b2a292a2a +28261e1d1c1d1d1d1a181d1a191d262e32343c3e3f3f3e3f404040404043 +46494c4e57595c5d767877767576726c513020426c65453833342c262322 +3c667c5d41476575664b404d69847b4830506b7e603e344164736d3f2337 +576452302d35485248362d344d4e43332f3f525a2f2b33608bb9e6e88238 +263030342c282f2e2f2e2f31323433312e2f31312e2b32302b1e1e255ccd +472d4602ddc4c9c9a08dca89889312293231303337383734353638393939 +393937363637393a383637393b3b393635373b3b3a3a3b3d3e3f3d3e4041 +4243434240413b3c324c95bcd1e566cdfff4f5b5285f3d50ff702b4a4a3e +41494a4d504b484d41423c31342c2f2f2f30303131313133373a3c3d3f3f +403f3e4044474849474c4c4948494845404c4d3e72dedcc2e860bab65cd9 +6445444a8e9a404e4a554f4d4b4a4b4b4a494c4c4b4c4b4c4c4c50504f4e +4d4e50534f505356585a5b5c5c5c5d5f606365676367686e746f6f7e8f6e +716d636d6b636d6e71666e7c6b615f676d6f706f69626768655e5b5c5d5a +62606060615f5d5b55575859595a5b5e58595b5c5b5a5857505355535355 +5450515252535352525154555657575656565a5a5b5b5754565d565b5c56 +525558585e5b5b5e5e5b5b5e5d5c5b5959595a5b58595756555556565958 +545052595b5a555453535352504d4847484d4d484648494d4f4e49454546 +424748454242413e3435353433302e2c2f2e2c2824212021211d1b1b1913 +111318161514151513110b0a0909090905030806050a131c202124232424 +262728282a2a2d303336393b414346474c4d4c49484a4846341709305c56 +382e2d332f2d2d2f4b758b6b4d5370807157515d748f8a59426075866b4c +43506e7b75493347626c5838374151584b39364059594d383442535d3634 +406f9cccf8fa9245333934342a232a292b2d303339393833303132332f2c +363432252a306adc5f47601cf7dee1e1b6a3e09f9ca7263a3a3635383c3d +3b38393a3b3c3c3c3b3b3d3c3c3d3f403e3c3d3f41413f3c3b393b393939 +3a3c40413f404445464747474849474a435faad1e7f977dafff8f9bb3571 +5064ff8139575345474e5155585147483c3d372c31292c2c2c2d2f303030 +3436393c404144444a49494b51545555575858514f4c4945414f53497fee +f1d8ff76ccc566e26f52565da2ab4f584e564e4c4a484949484549494846 +46464745494948494a4b4e514e4f4f505051504e51515254585b5d5f5c60 +616770686b7a8f7174716772716a7475786c7481706463686e6d6a666057 +5c5e5b5555575a5558545454565553514b4d4e4e4d4e4f4f48474b4c4f4e +4f4e474b4a46464744424649494a4a494746494a494a4a4947464c4b4d4d +49464b524b50534d494c514f544f4f52524f4f5251504f4d4d4d4e4d4a49 +494847474a4a4d4c4a46484f54504b484747474646433e3d414646414041 +414244433e3a3a3b373c3d3a373736332b2c2c2b2a2727252a292723211e +1d1e1c181616140e0c0e1311100f10100e0c040305080a0b0c0a0d080606 +0d121413181819191a1b1c1c1d1d1f2225282b2d36383b3ca4a4a39b9a99 +958c744f364e6b572b150b0c0f141a1f3b62816b4540586e70583c485371 +8a5e334a526e6f5242455565674438414e564c3e39404c594e3637414c55 +5440313a506048413e567c9bbed5ab3511190e12130a0d0d0b0c0e101214 +100e0f1114181b191a20261f1911379da1b5af2ba9c3d0e28896d7849dd5 +3e1118151314161613111214141413131213131111121415141217181918 +1514141414131211121314151718191a1a1c1f231a2a27221e31595c5ede +8d96c8a0d09466977190de58204b321e181f23293332373d32332c20231b +1a1b1b1b1b1b1b1b1c1e2023252726262d2c2a2d31353635353535333434 +35333d42472f4189a3aa8843696c5179624b5b5769754851515258555453 +5455555455545554545556575c5c5a5756585e6262636465666665656161 +616161626263626563666a61606f716273655e706f736f716d6764717a6d +6c706c635d60656865676765656b6c696360616367676664666869676665 +6467636566676665646364686a696a6b69656b6b6c6d6d6c6b6b6d6e7071 +71706e6b6b6a6c6b6765686c646869635f61646564616164646161646565 +636160606264605f5e5c5b5a5a5a5f5e585253585a585654525251504e4b +4b48474947403d3e36383937333030302c31322e2b2b2b282d2d2c2b2a29 +2726232425242220202124212123231f1f22222120202120201f201e1d1c +1c1c1b1b1e1c1c20283035383f414242414243434444424446494b4d585a +5d5e77797875747470694f2f20436c65453934342b25211d335a79674542 +5c72745a3847617f8d5a2643597b734e3437556c6e4427304656533e2c2c +3f54523a2a2f404d4e3e30384c573b34304e79a0c9e6c24f2b342b303129 +2d2d2e2e3032333533312e2f3032302e2d3339322d254ab0b3c6c03cbad4 +e2f49aa8e996afe75026353434353737363435373a3a39393a3b38363637 +393a39373c3d3e3d3a39393c3c3d3c3b3c3d3d3e404142434345484a3847 +433e394c747777f7a7b0e3bcecb186b68ca9f5723c6b5745414644464745 +4b524748413539313334343435353535383a3e41424445454b4a4a4d5155 +56575a5d5d5b595a58575c61624a58a0b8bc944e717559826851625f7182 +556264666a676463646564636463616060616364676765626062676b6869 +6a6c6b6c6b6b6565646464656566656866696d646370705e6d5f54666064 +5f615e58586570635d61605854575e615d5f5d5856595857565655575656 +54525456585958595a5b535455565453504f4d5154535254524e50505152 +52515050525356575756545455575958545254585054554f4b4d5051524f +4f52524f4f525353514f4e4e50524e4e4c4a494848484d4c464041464746 +444240403f3e3c3939363436342d2a2b1f2223211d1a1a1a161b1c181515 +151219191817161513120e0f100f0d0b0b0c0f0c0c0e0e0a0a0d0d0c0b0b +0c0b0b0a0d0b0a08080806060908080d151e232527262727292a2b2b2e2e +2f313336383a424447484d4e4d4847484643321609315c56382f2e332e2c +2b2a42698875514e677d7f6649576c8a9c6b385363837e5c43465f74764e +3740515e59463638485a553d333b4c585843353b4d5a423d3d5d8ab3dbf8 +d25c383d2f302f2428282a2d31343a3a373330313133312f313740393830 +58bfcbe0da56d4eefaffb0beffacc3fb64373d39393a3c3c3a38393b3d3d +3c3c3c3d3e3c3c3d3f403f3d42434443403f3f3e3c3b3b3a3b3c3f404243 +464747494c4f404f4f4c4a5f898c8dffb8bdecc0f0b793c89fbdff834a78 +604c474b4b4e504b4a4d42433c30362e30313131343434343b3d40434648 +4a4a555455585e6263636a696963615d5a575e64695566b0cdd2ac648484 +648b745f74728693656c68676a6763626364616061605d5c5c5d5c5d6161 +5f5c5f61666a686768656562615f57575959595a5c5d5c5f5f62665d5c6a +6e5d6d5f556763676264615b5a677164606460564f505457525454505155 +57534d4a494b4c4c4a484a4c4e4e4d4d4e4d434245464847474645494946 +4646424045474849494845454748494a4a49454447484b4a4644494d4549 +4c464244494848434346464343464747454342424444403e3e3c3b3a3c3c +41403c36373c403c3a3634343332322f2f2c2d2f2d26242417171816120f +0f0f0b10110d0a0a0a0710100f0e0d0c0c0b090a0b0a0a0808090a070709 +09050508080706060706060506040607090a0d0d0e0a09090f1417171b1b +1c1c1d1e1f1f2121212325282a2c37393c3d +currentdict /inputf undef +currentdict /picstr undef +currentdict /rpicstr undef +currentdict /gpicstr undef +currentdict /bpicstr undef +grestore +showpage +%%Trailer + +%%EndDocument + @endspecial 1161 4432 a(Figure)f(8:)36 b(Wiring)28 b(option)f(#2)g(of) +h(the)g(STK500)515 4778 y(As)21 b(an)f(alternativ)n(e,)h(this)h(demo)e +(can)h(also)f(b)r(e)h(run)g(on)f(the)i(p)r(opular)e(A)-7 +b(Tmega8)20 b(con)n(troller,)515 4877 y(or)i(its)h(successor)e(A)-7 +b(Tmega88)22 b(as)g(w)n(ell)h(as)f(the)i(A)-7 b(Tmega48)21 +b(and)i(A)-7 b(Tmega168)21 b(v)-5 b(arian)n(ts)22 b(of)515 +4977 y(the)f(latter.)34 b(These)20 b(con)n(trollers)f(do)h(not)h(ha)n +(v)n(e)e(a)h(p)r(ort)h(named)f("A",)i(so)e(their)g(ADC)i(inputs)p +515 5179 V 515 5255 a Fp(Generated)j(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 334 350 +TeXDict begin 334 349 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(334)p 515 +236 2865 4 v 515 523 a Fq(are)28 b(lo)r(cated)i(on)f(p)r(ort)h(C)g +(instead,)g(th)n(us)f(the)i(p)r(oten)n(tiometer)e(needs)g(to)h(b)r(e)g +(attac)n(hed)f(to)515 623 y(p)r(ort)40 b(C.)g(Lik)n(ewise,)i(the)f +(OC1A)e(output)i(is)e(not)i(on)e(p)r(ort)h(D)h(pin)f(5)g(but)h(on)e(p)r +(ort)h(B)515 722 y(pin)f(1)g(\(PB1\).)71 b(Th)n(us,)42 +b(the)d(ab)r(o)n(v)n(e)f(cabling)g(sc)n(heme)h(needs)f(to)h(b)r(e)h(c)n +(hanged)e(so)g(that)515 822 y(PB1)29 b(connects)h(to)f(the)h(LED0)g +(pin.)44 b(\(PD6)31 b(remains)d(unconnected.\))44 b(When)30 +b(using)g(the)515 922 y(STK500,)22 b(use)h(one)g(of)g(the)h(jump)r(er)g +(cables)e(for)h(this)h(connection.)35 b(All)23 b(other)g(p)r(ort)g(D)h +(pins)515 1021 y(should)j(b)r(e)h(connected)f(the)h(same)f(w)n(a)n(y)g +(as)f(describ)r(ed)i(for)f(the)h(A)-7 b(Tmega16)26 b(ab)r(o)n(v)n(e.) +515 1168 y(When)g(not)h(using)f(an)f(STK500)g(starter)g(kit,)i(attac)n +(h)e(the)i(LEDs)g(through)e(some)h(resistor)515 1268 +y(to)19 b(V)-7 b(cc)20 b(\(lo)n(w-activ)n(e)d(LEDs\),)22 +b(and)d(attac)n(h)g(push)n(buttons)h(from)f(the)g(resp)r(ectiv)n(e)g +(input)h(pins)515 1367 y(to)28 b(GND.)h(The)f(in)n(ternal)f(pull-up)i +(resistors)d(are)h(enabled)h(for)f(the)i(push)n(button)f(pins,)h(so)515 +1467 y(no)e(external)g(resistors)e(are)i(needed.)515 +1614 y(Finally)-7 b(,)38 b(the)f(demo)f(has)g(b)r(een)g(p)r(orted)g(to) +g(the)h(A)-7 b(Ttin)n(y2313)35 b(as)g(w)n(ell.)63 b(As)36 +b(this)h(A)-9 b(VR)515 1713 y(do)r(es)29 b(not)h(o\033er)g(an)f(ADC,)i +(ev)n(erything)e(related)g(to)h(handling)f(the)i(ADC)f(is)g(disabled)g +(in)515 1813 y(the)e(co)r(de)h(for)f(that)g(MCU)h(t)n(yp)r(e.)39 +b(Also,)29 b(p)r(ort)f(D)h(of)f(this)h(con)n(troller)d(t)n(yp)r(e)j +(only)f(features)515 1913 y(6)k(pins,)h(so)f(the)h(1-second)e(\035ash)h +(LED)h(had)f(to)g(b)r(e)h(mo)n(v)n(ed)e(from)h(PD6)h(to)g(PD4.)51 +b(\(PD4)515 2012 y(is)34 b(used)g(as)g(the)h(ADC)g(con)n(trol)e(button) +h(on)g(the)h(other)f(MCU)g(t)n(yp)r(es,)i(but)f(that)g(is)f(not)515 +2112 y(needed)27 b(here.\))37 b(OC1A)27 b(is)g(lo)r(cated)h(at)f(PB3)h +(on)f(this)h(device.)515 2259 y(The)h Fm(MCU_TARGET)d +Fq(macro)i(in)i(the)g(Mak)n(e\034le)e(needs)i(to)f(b)r(e)h(adjusted)g +(appropriately)e(for)515 2358 y(the)g(alternativ)n(e)e(con)n(troller)g +(t)n(yp)r(es.)515 2505 y(The)20 b(\035ash)g(R)n(OM)f(and)h(RAM)h +(consumption)f(of)g(this)g(demo)g(are)f(w)n(a)n(y)g(b)r(elo)n(w)h(the)g +(resources)515 2605 y(of)31 b(ev)n(en)f(an)h(A)-7 b(Tmega48,)31 +b(and)g(still)g(w)n(ell)g(within)h(the)f(capabilities)g(of)g(an)g(A)-7 +b(Ttin)n(y2313.)515 2705 y(The)34 b(ma)5 b(jor)33 b(adv)-5 +b(an)n(tage)33 b(of)h(exp)r(erimen)n(ting)g(with)h(the)f(A)-7 +b(Tmega16)33 b(\(in)i(addition)f(that)515 2804 y(it)h(ships)f(together) +g(with)h(an)f(STK500)f(an)n(yw)n(a)n(y\))g(is)h(that)h(it)g(can)f(b)r +(e)h(debugged)f(online)515 2904 y(via)39 b(JT)-7 b(A)n(G.)41 +b(Lik)n(ewise,)h(the)f(A)-7 b(Tmega48/88/168)35 b(and)40 +b(A)-7 b(Ttin)n(y2313)38 b(devices)i(can)g(b)r(e)515 +3003 y(debugged)23 b(through)h(debugWire,)g(using)g(the)h(A)n(tmel)f +(JT)-7 b(A)n(G)24 b(ICE)h(mkI)r(I)g(or)e(the)i(lo)n(w-cost)515 +3103 y(A)-9 b(VR)28 b(Dragon.)515 3250 y(Note)34 b(that)g(in)h(the)f +(explanation)f(b)r(elo)n(w,)j(all)e(p)r(ort/pin)f(names)h(are)f +(applicable)h(to)g(the)515 3350 y(A)-7 b(Tmega16)26 b(setup.)515 +3613 y Fs(22.37.2)93 b(F)-8 b(unctional)32 b(o)m(v)m(erview)515 +3813 y Fq(PD6)h(will)h(b)r(e)g(toggled)e(with)i(eac)n(h)e(in)n(ternal)h +(clo)r(c)n(k)f(tic)n(k)h(\(appro)n(x.)53 b(10)32 b(ms\).)54 +b(PD7)34 b(will)515 3913 y(\035ash)27 b(once)g(p)r(er)g(second.)515 +4060 y(PD0)22 b(and)g(PD1)g(are)f(con\034gured)f(as)h(UAR)-7 +b(T)23 b(IO,)e(and)h(can)f(b)r(e)h(used)g(to)g(connect)f(the)h(demo)515 +4159 y(kit)31 b(to)h(a)f(PC)h(\(9600)d(Bd,)k(8N1)d(frame)h(format\).)48 +b(The)32 b(demo)f(application)g(talks)f(to)i(the)515 +4259 y(serial)26 b(p)r(ort,)i(and)f(it)h(can)f(b)r(e)h(con)n(trolled)e +(from)i(the)g(serial)e(p)r(ort.)515 4406 y(PD2)k(through)f(PD4)h(are)e +(con\034gured)h(as)g(inputs,)i(and)e(con)n(trol)f(the)i(application)f +(unless)515 4505 y(con)n(trol)37 b(has)i(b)r(een)g(tak)n(en)g(o)n(v)n +(er)e(b)n(y)i(the)g(serial)f(p)r(ort.)71 b(Shorting)39 +b(PD2)g(to)g(GND)h(will)515 4605 y(decrease)26 b(the)i(curren)n(t)e +(PWM)j(v)-5 b(alue,)27 b(shorting)g(PD3)h(to)f(GND)i(will)f(increase)e +(it.)515 4752 y(While)i(PD4)g(is)g(shorted)f(to)h(GND,)h(one)e(ADC)i +(con)n(v)n(ersion)c(for)j(c)n(hannel)f(0)g(\(ADC)i(input)515 +4851 y(is)24 b(on)g(P)-7 b(A0\))25 b(will)f(b)r(e)h(triggered)d(eac)n +(h)i(in)n(ternal)f(clo)r(c)n(k)h(tic)n(k,)h(and)f(the)g(resulting)g(v) +-5 b(alue)24 b(will)515 4951 y(b)r(e)33 b(used)g(as)f(the)h(PWM)h(v)-5 +b(alue.)52 b(So)33 b(the)g(brigh)n(tness)e(of)i(the)g(LED)h(follo)n(ws) +e(the)h(analog)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 335 351 +TeXDict begin 335 350 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(335)p 515 +236 2865 4 v 515 523 a Fq(input)31 b(v)-5 b(alue)31 b(on)g(PC0.)47 +b(V)-9 b(AREF)32 b(on)f(the)g(STK500)f(should)g(b)r(e)i(set)f(to)f(the) +i(same)e(v)-5 b(alue)515 623 y(as)27 b(V)n(CC.)515 770 +y(When)32 b(running)g(in)g(serial)e(con)n(trol)h(mo)r(de,)i(the)f +(function)g(of)g(the)g(w)n(atc)n(hdog)f(timer)g(can)515 +869 y(b)r(e)36 b(demonstrated)g(b)n(y)g(t)n(yping)g(an)g(`r'.)62 +b(This)36 b(will)h(mak)n(e)e(the)i(demo)f(application)f(run)515 +969 y(in)h(a)f(tigh)n(t)h(lo)r(op)g(without)g(retriggering)d(the)j(w)n +(atc)n(hdog)f(so)g(after)g(some)h(seconds,)h(the)515 +1068 y(w)n(atc)n(hdog)28 b(will)i(reset)f(the)h(MCU.)g(This)g +(situation)f(can)h(b)r(e)g(\034gured)f(out)h(on)f(startup)g(b)n(y)515 +1168 y(reading)d(the)i(MCUCSR)g(register.)515 1315 y(The)k(curren)n(t)g +(v)-5 b(alue)32 b(of)g(the)h(PWM)g(is)g(bac)n(k)n(ed)e(up)i(in)f(an)g +(EEPR)n(OM)i(cell)e(after)g(ab)r(out)515 1415 y(3)g(seconds)f(of)i +(idle)f(time)h(after)f(the)h(last)f(c)n(hange.)50 b(If)33 +b(that)f(EEPR)n(OM)i(cell)e(con)n(tains)f(a)515 1514 +y(reasonable)g(\(i.)56 b(e.)e(non-erased\))32 b(v)-5 +b(alue)34 b(at)f(startup,)i(it)f(is)g(tak)n(en)f(as)f(the)i(initial)g +(v)-5 b(alue)515 1614 y(for)32 b(the)g(PWM.)i(This)e(virtually)g +(preserv)n(es)e(the)j(last)f(v)-5 b(alue)32 b(across)f(p)r(o)n(w)n(er)g +(cycles.)50 b(By)515 1713 y(not)25 b(up)r(dating)h(the)g(EEPR)n(OM)h +(immmediately)f(but)h(only)e(after)g(a)h(timeout,)g(EEPR)n(OM)515 +1813 y(w)n(ear)21 b(is)h(reduced)f(considerably)g(compared)g(to)h +(immediately)g(writing)g(the)h(v)-5 b(alue)22 b(at)g(eac)n(h)515 +1913 y(c)n(hange.)515 2176 y Fs(22.37.3)93 b(A)32 b(co)s(de)f(w)m +(alkthrough)515 2376 y Fq(This)23 b(section)g(explains)g(the)h(ideas)f +(b)r(ehind)h(individual)f(parts)g(of)h(the)f(co)r(de.)36 +b(The)23 b Fs(source)515 2476 y(co)s(de)28 b Fq(\(p.)14 +b(338\))27 b(has)h(b)r(een)g(divided)h(in)n(to)f(n)n(um)n(b)r(ered)g +(parts,)f(and)h(the)h(follo)n(wing)e(subsec-)515 2575 +y(tions)g(explain)g(eac)n(h)g(of)h(these)f(parts.)515 +2838 y Fs(22.37.3.1)92 b(P)m(art)38 b(1:)52 b(Macro)37 +b(de\034nitions)81 b Fq(A)32 b(n)n(um)n(b)r(er)g(of)g(prepro)r(cessor)d +(macros)515 2938 y(are)d(de\034ned)i(to)g(impro)n(v)n(e)e(readabilit)n +(y)g(and/or)g(p)r(ortabilit)n(y)h(of)g(the)h(application.)515 +3085 y(The)42 b(\034rst)f(macros)g(describ)r(e)g(the)i(IO)e(pins)h(our) +g(LEDs)g(and)g(push)n(buttons)g(are)f(con-)515 3185 y(nected)30 +b(to.)45 b(This)31 b(pro)n(vides)e(some)g(kind)i(of)f(mini-HAL)h +(\(hardw)n(are)e(abstraction)g(la)n(y)n(er\))515 3284 +y(so)h(should)h(some)f(of)h(the)g(connections)f(b)r(e)i(c)n(hanged,)f +(they)g(don't)g(need)g(to)g(b)r(e)g(c)n(hanged)515 3384 +y(inside)j(the)g(co)r(de)f(but)h(only)g(on)f(top.)55 +b(Note)34 b(that)g(the)g(lo)r(cation)f(of)h(the)g(PWM)h(output)515 +3483 y(itself)j(is)g(mandated)g(b)n(y)g(the)g(hardw)n(are,)h(so)e(it)h +(cannot)g(b)r(e)g(easily)g(c)n(hanged.)67 b(As)38 b(the)515 +3583 y(A)-7 b(Tmega48/88/168)28 b(con)n(trollers)k(b)r(elong)h(to)g(a)h +(more)e(recen)n(t)h(generation)g(of)g(A)-9 b(VRs,)35 +b(a)515 3683 y(n)n(um)n(b)r(er)25 b(of)g(register)e(and)i(bit)h(names)e +(ha)n(v)n(e)g(b)r(een)i(c)n(hanged)e(there,)h(so)f(they)i(are)e(mapp)r +(ed)515 3782 y(bac)n(k)19 b(to)g(their)h(A)-7 b(Tmega8/16)17 +b(equiv)-5 b(alen)n(ts)19 b(to)h(k)n(eep)f(the)h(actual)f(program)f(co) +r(de)i(p)r(ortable.)515 3929 y(The)25 b(name)g Fm(F_CPU)e +Fq(is)h(the)i(con)n(v)n(en)n(tional)d(name)i(to)g(describ)r(e)f(the)i +(CPU)f(clo)r(c)n(k)g(frequency)515 4029 y(of)f(the)h(con)n(troller.)34 +b(This)24 b(demo)g(pro)5 b(ject)23 b(just)i(uses)f(the)h(in)n(ternal)e +(calibrated)h(1)g(MHz)g(R)n(C)515 4128 y(oscillator)f(that)h(is)h +(enabled)f(b)n(y)h(default.)36 b(Note)25 b(that)f(when)h(using)g(the)g +Fo(<)p Fm(util/delay.h)515 4228 y(\()p Fq(p.)14 b Fm(361\))p +Fo(>)26 b Fq(functions,)h Fm(F_CPU)f Fq(needs)h(to)h(b)r(e)g(de\034ned) +g(b)r(efore)f(including)h(that)f(\034le.)515 4375 y(The)d(remaining)f +(macros)g(ha)n(v)n(e)g(their)h(o)n(wn)f(commen)n(ts)h(in)g(the)h +(source)e(co)r(de.)35 b(The)24 b(macro)515 4475 y Fm(TMR1_SCALE)35 +b Fq(sho)n(ws)j(ho)n(w)h(to)g(use)h(the)g(prepro)r(cessor)c(and)k(the)f +(compiler's)g(constan)n(t)515 4574 y(expression)27 b(computation)h(to)h +(calculate)f(the)h(v)-5 b(alue)29 b(of)f(timer)h(1's)f(p)r(ost-scaler)f +(in)i(a)f(w)n(a)n(y)515 4674 y(so)k(it)i(only)e(dep)r(ends)i(on)f +Fm(F_CPU)e Fq(and)i(the)g(desired)g(soft)n(w)n(are)e(clo)r(c)n(k)i +(frequency)-7 b(.)53 b(While)515 4773 y(the)34 b(form)n(ula)f(lo)r(oks) +g(a)h(bit)g(complicated,)i(using)d(a)h(macro)f(o\033ers)g(the)h(adv)-5 +b(an)n(tage)33 b(that)515 4873 y(the)28 b(application)f(will)h +(automatically)e(scale)h(to)h(new)g(target)f(softclo)r(c)n(k)g(or)f +(master)h(CPU)515 4973 y(frequencies)g(without)h(ha)n(ving)e(to)i(man)n +(ually)e(re-calculate)g(hardco)r(ded)h(constan)n(ts.)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 336 352 +TeXDict begin 336 351 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(336)p 515 +236 2865 4 v 515 523 a(22.37.3.2)92 b(P)m(art)34 b(2:)44 +b(V)-8 b(ariable)33 b(de\034nitions)81 b Fq(The)29 b +Fm(intflags)c Fq(structure)j(demon-)515 623 y(strates)e(a)h(w)n(a)n(y)e +(to)i(allo)r(cate)f(bit)i(v)-5 b(ariables)26 b(in)h(memory)-7 +b(.)36 b(Eac)n(h)27 b(of)g(the)g(in)n(terrupt)g(service)515 +722 y(routines)d(just)i(sets)e(one)h(bit)g(within)h(that)f(structure,)g +(and)g(the)h(application's)e(main)h(lo)r(op)515 822 y(then)j(monitors)e +(the)i(bits)g(in)g(order)e(to)i(act)f(appropriately)-7 +b(.)515 969 y(Lik)n(e)36 b(all)g(v)-5 b(ariables)36 b(that)h(are)f +(used)g(to)h(comm)n(unicate)f(v)-5 b(alues)36 b(b)r(et)n(w)n(een)h(an)f +(in)n(terrupt)515 1068 y(service)26 b(routine)h(and)h(the)g(main)f +(application,)g(it)h(is)g(declared)e Fs(v)m(olatile)h +Fq(\(p.)14 b(62\).)515 1215 y(The)24 b(v)-5 b(ariable)23 +b Fm(ee_pwm)e Fq(is)j(not)g(a)f(v)-5 b(ariable)23 b(in)i(the)f +(classical)e(C)i(sense)g(that)g(could)g(b)r(e)g(used)515 +1315 y(as)j(an)g(lv)-5 b(alue)27 b(or)g(within)h(an)g(expression)e(to)h +(obtain)g(its)h(v)-5 b(alue.)37 b(Instead,)27 b(the)550 +1522 y Fj(__attribute__\(\(section\(")q(.eep)q(rom)q("\)\)\))515 +1749 y Fq(marks)c(it)h(as)f(b)r(elonging)h(to)g(the)g +Fs(EEPR)m(OM)j(section)c Fq(\(p.)14 b(21\).)35 b(This)24 +b(section)g(is)g(merely)515 1849 y(used)i(as)g(a)g(placeholder)g(so)g +(the)h(compiler)e(can)i(arrange)d(for)i(eac)n(h)g(individual)g(v)-5 +b(ariable's)515 1948 y(lo)r(cation)18 b(in)h(EEPR)n(OM.)h(The)f +(compiler)f(will)h(also)e(k)n(eep)i(trac)n(k)e(of)i(initial)g(v)-5 +b(alues)18 b(assigned,)515 2048 y(and)h(usually)g(the)h(Mak)n(e\034le)e +(is)h(arranged)f(to)h(extract)f(these)i(initial)f(v)-5 +b(alues)19 b(in)n(to)h(a)f(separate)515 2148 y(load)33 +b(\034le)h(\()p Fm(largedemo_eeprom)o Fq(.)p Fh(\003)28 +b Fq(in)34 b(this)g(case\))f(that)h(can)f(b)r(e)i(used)e(to)h +(initialize)g(the)515 2247 y(EEPR)n(OM.)515 2394 y(The)27 +b(actual)g(EEPR)n(OM)i(IO)e(m)n(ust)h(b)r(e)g(p)r(erformed)f(man)n +(ually)-7 b(.)515 2541 y(Similarly)g(,)29 b(the)h(v)-5 +b(ariable)28 b Fm(mcucsr)f Fq(is)i(k)n(ept)g(in)h(the)f +Fs(.noinit)f Fq(\(p.)14 b(21\))29 b(section)g(in)g(order)f(to)515 +2641 y(prev)n(en)n(t)e(it)i(from)g(b)r(eing)f(cleared)g(up)r(on)h +(application)e(startup.)515 2903 y Fs(22.37.3.3)92 b(P)m(art)35 +b(3:)45 b(In)m(terrupt)34 b(service)f(routines)82 b Fq(The)29 +b(ISR)h(to)e(handle)h(timer)515 3003 y(1's)i(o)n(v)n(er\035o)n(w)e(in)n +(terrupt)j(arranges)d(for)i(the)h(soft)n(w)n(are)e(clo)r(c)n(k.)49 +b(While)32 b(timer)g(1)f(runs)h(the)515 3102 y(PWM,)g(it)f(calls)f(its) +h(o)n(v)n(er\035o)n(w)d(handler)i(rather)g(frequen)n(tly)-7 +b(,)31 b(so)f(the)i Fm(TMR1_SCALE)26 b Fq(v)-5 b(alue)515 +3202 y(is)30 b(used)g(as)g(a)g(p)r(ostscaler)f(to)h(reduce)g(the)h(in)n +(ternal)e(soft)n(w)n(are)g(clo)r(c)n(k)g(frequency)h(further.)515 +3302 y(If)d(the)g(soft)n(w)n(are)d(clo)r(c)n(k)i(triggers,)f(it)i(sets) +f(the)h Fm(tmr_int)d Fq(bit\034eld,)j(and)g(defers)f(all)g(further)515 +3401 y(tasks)g(to)i(the)g(main)f(lo)r(op.)515 3548 y(The)20 +b(ADC)h(ISR)f(just)g(fetc)n(hes)g(the)h(v)-5 b(alue)20 +b(from)f(the)i(ADC)f(con)n(v)n(ersion,)g(disables)f(the)h(ADC)515 +3648 y(in)n(terrupt)32 b(again,)g(and)h(announces)e(the)i(presence)f +(of)g(the)h(new)g(v)-5 b(alue)32 b(in)h(the)g Fm(adc_int)515 +3747 y Fq(bit\034eld.)k(The)25 b(in)n(terrupt)h(is)f(k)n(ept)h +(disabled)f(while)h(not)g(needed,)g(b)r(ecause)f(the)h(ADC)h(will)515 +3847 y(also)22 b(b)r(e)h(triggered)f(b)n(y)h(executing)g(the)g(SLEEP)i +(instruction)e(in)h(idle)f(mo)r(de)g(\(whic)n(h)h(is)f(the)515 +3947 y(default)28 b(sleep)g(mo)r(de\).)38 b(Another)28 +b(option)g(w)n(ould)f(b)r(e)h(to)g(turn)g(o\033)g(the)h(ADC)f +(completely)515 4046 y(here,)23 b(but)g(that)h(increases)d(the)i(ADC's) +g(startup)g(time)g(\(not)g(that)g(it)g(w)n(ould)g(matter)f(m)n(uc)n(h) +515 4146 y(for)27 b(this)h(application\).)515 4408 y +Fs(22.37.3.4)92 b(P)m(art)39 b(4:)54 b(Auxiliary)38 b(functions)82 +b Fq(The)33 b(function)g Fm(handle_mcucsr\(\))515 4508 +y Fq(uses)40 b(t)n(w)n(o)f Fm(__attribute__)c Fq(declarators)j(to)i(ac) +n(hiev)n(e)f(sp)r(eci\034c)h(goals.)74 b(First,)43 b(it)e(will)515 +4608 y(instruct)19 b(the)g(compiler)g(to)g(place)f(the)i(generated)e +(co)r(de)h(in)n(to)g(the)g Fs(.init3)f Fq(\(p.)c(22\))k(section)h(of) +515 4707 y(the)25 b(output.)37 b(Th)n(us,)25 b(it)h(will)g(b)r(ecome)f +(part)f(of)i(the)f(application)g(initialization)g(sequence.)515 +4807 y(This)k(is)f(done)h(in)g(order)f(to)g(fetc)n(h)i(\(and)f(clear\)) +f(the)h(reason)e(of)i(the)g(last)g(hardw)n(are)e(reset)515 +4907 y(from)22 b Fm(MCUCSR)f Fq(as)i(early)e(as)i(p)r(ossible.)35 +b(There)22 b(is)h(a)g(short)f(p)r(erio)r(d)h(of)g(time)h(where)e(the)i +(next)515 5006 y(reset)29 b(could)h(already)f(trigger)f(b)r(efore)i +(the)h(curren)n(t)e(reason)g(has)g(b)r(een)i(ev)-5 b(aluated.)44 +b(This)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 337 353 +TeXDict begin 337 352 bop 515 203 a Fs(22.37)94 b(A)32 +b(more)f(sophisticated)g(pro)5 b(ject)1191 b(337)p 515 +236 2865 4 v 515 523 a Fq(also)24 b(explains)h(wh)n(y)h(the)g(v)-5 +b(ariable)24 b Fm(mcucsr)g Fq(that)h(mirrors)f(the)i(register's)e(v)-5 +b(alue)26 b(needs)f(to)515 623 y(b)r(e)34 b(placed)f(in)n(to)h(the)g +(.noinit)g(section,)h(b)r(ecause)e(otherwise)g(the)h(default)g +(initialization)515 722 y(\(whic)n(h)27 b(happ)r(ens)h(after)f +(.init3\))h(w)n(ould)f(blank)h(the)g(v)-5 b(alue)27 b(again.)515 +869 y(As)22 b(the)g(initialization)g(co)r(de)g(is)g(not)g(called)g +(using)g(CALL/RET)g(instructions)f(but)i(rather)515 969 +y(concatenated)31 b(together,)i(the)g(compiler)e(needs)i(to)f(b)r(e)h +(instructed)f(to)g(omit)h(the)g(en)n(tire)515 1068 y(function)e +(prologue)e(and)i(epilogue.)45 b(This)31 b(is)f(p)r(erformed)g(b)n(y)h +(the)g Fl(nake)l(d)40 b Fq(attribute.)46 b(So)515 1168 +y(while)21 b(syn)n(tactically)-7 b(,)20 b Fm(handle_mcucsr\(\))15 +b Fq(is)20 b(a)h(function)g(to)f(the)h(compiler,)h(the)f(compiler)515 +1268 y(will)i(just)h(emit)g(the)f(instructions)g(for)g(it)g(without)h +(setting)f(up)h(an)n(y)e(stac)n(k)g(frame,)i(and)f(not)515 +1367 y(ev)n(en)k(a)g(RET)h(instruction)f(at)h(the)g(end.)515 +1514 y(F)-7 b(unction)33 b Fm(ioinit\(\))c Fq(cen)n(tralizes)j(all)g +(hardw)n(are)f(setup.)53 b(The)33 b(v)n(ery)e(last)i(part)f(of)h(that) +515 1614 y(function)h(demonstrates)e(the)h(use)g(of)h(the)f(EEPR)n(OM)h +(v)-5 b(ariable)33 b Fm(ee_pwm)d Fq(to)j(obtain)g(an)515 +1713 y(EEPR)n(OM)38 b(address)e(that)h(can)g(in)h(turn)f(b)r(e)h +(applied)f(as)f(an)h(argumen)n(t)f(to)h Fm(eeprom_-)515 +1813 y(read_word\(\))i(\()p Fq(p.)14 b Fm(223\))p Fq(.)515 +1960 y(The)27 b(follo)n(wing)e(functions)i(handle)g(UAR)-7 +b(T)27 b(c)n(haracter)e(and)h(string)g(output.)37 b(\(UAR)-7 +b(T)28 b(in-)515 2060 y(put)g(is)g(handled)g(b)n(y)g(an)f(ISR.\))i +(There)e(are)g(t)n(w)n(o)g(string)g(output)i(functions,)f +Fm(printstr\(\))515 2159 y Fq(and)20 b Fm(printstr_p\(\))p +Fq(.)29 b(The)21 b(latter)f(function)g(fetc)n(hes)h(the)f(string)g +(from)g Fs(program)j(mem-)515 2259 y(ory)35 b Fq(\(p.)14 +b(260\).)53 b(Both)33 b(functions)h(translate)e(a)h(newline)h(c)n +(haracter)d(in)n(to)i(a)g(carriage)e(re-)515 2358 y(turn/newline)c +(sequence,)g(so)g(a)g(simple)h Fh(n)p Fm(n)f Fq(can)g(b)r(e)h(used)f +(in)h(the)g(source)e(co)r(de.)515 2505 y(The)21 b(function)g +Fm(set_pwm\(\))d Fq(propagates)g(the)k(new)f(PWM)h(v)-5 +b(alue)21 b(to)g(the)g(PWM,)h(p)r(erform-)515 2605 y(ing)k(range)f(c)n +(hec)n(king.)35 b(When)27 b(the)g(v)-5 b(alue)27 b(has)f(b)r(een)h(c)n +(hanged,)e(the)i(new)g(p)r(ercen)n(tage)e(will)515 2705 +y(b)r(e)31 b(announced)e(on)h(the)h(serial)e(link.)46 +b(The)30 b(curren)n(t)g(v)-5 b(alue)30 b(is)g(mirrored)f(in)h(the)h(v) +-5 b(ariable)515 2804 y Fm(pwm)31 b Fq(so)i(others)f(can)g(use)h(it)g +(in)g(calculations.)52 b(In)33 b(order)f(to)g(allo)n(w)g(for)g(a)h +(simple)g(calcu-)515 2904 y(lation)d(of)h(a)f(p)r(ercen)n(tage)g(v)-5 +b(alue)30 b(without)h(requiring)f(\035oating-p)r(oin)n(t)f +(mathematics,)j(the)515 3003 y(maximal)c(v)-5 b(alue)29 +b(of)f(the)h(PWM)h(is)f(restricted)f(to)h(1000)e(rather)g(than)i(1023,) +e(so)i(a)f(simple)515 3103 y(division)f(b)n(y)g(10)f(can)h(b)r(e)h +(used.)37 b(Due)28 b(to)f(the)h(nature)f(of)g(the)h(h)n(uman)g(ey)n(e,) +e(the)i(di\033erence)515 3203 y(in)g(LED)g(brigh)n(tness)e(b)r(et)n(w)n +(een)i(1000)e(and)h(1023)f(is)h(not)h(noticable)f(an)n(yw)n(a)n(y)-7 +b(.)515 3466 y Fs(22.37.3.5)92 b(P)m(art)39 b(5:)53 b(main\(\))82 +b Fq(A)n(t)33 b(the)g(start)f(of)g Fm(main\(\))p Fq(,)f(a)h(v)-5 +b(ariable)31 b Fm(mode)g Fq(is)h(de-)515 3565 y(clared)18 +b(to)h(k)n(eep)g(the)h(curren)n(t)f(mo)r(de)g(of)g(op)r(eration.)33 +b(An)20 b(en)n(umeration)f(is)g(used)g(to)h(impro)n(v)n(e)515 +3665 y(the)32 b(readabilit)n(y)-7 b(.)48 b(By)31 b(default,)i(the)f +(compiler)f(w)n(ould)g(allo)r(cate)g(a)g(v)-5 b(ariable)31 +b(of)g(t)n(yp)r(e)h Fl(int)515 3765 y Fq(for)e(an)g(en)n(umeration.)44 +b(The)30 b Fl(p)l(acke)l(d)40 b Fq(attribute)31 b(declarator)d +(instructs)i(the)h(compiler)e(to)515 3864 y(use)e(the)h(smallest)f(p)r +(ossible)g(in)n(teger)g(t)n(yp)r(e)h(\(whic)n(h)f(w)n(ould)h(b)r(e)g +(an)f(8-bit)g(t)n(yp)r(e)h(here\).)515 4011 y(After)39 +b(some)f(initialization)g(actions,)j(the)e(application's)f(main)h(lo)r +(op)f(follo)n(ws.)69 b(In)39 b(an)515 4111 y(em)n(b)r(edded)32 +b(application,)h(this)g(is)f(normally)f(an)h(in\034nite)h(lo)r(op)f(as) +g(there)g(is)g(nothing)g(an)515 4210 y(application)27 +b(could)g("exit")g(in)n(to)g(an)n(yw)n(a)n(y)-7 b(.)515 +4357 y(A)n(t)33 b(the)h(b)r(eginning)f(of)g(the)h(lo)r(op,)g(the)g(w)n +(atc)n(hdog)e(timer)h(will)h(b)r(e)f(retriggered.)52 +b(If)34 b(that)515 4457 y(timer)29 b(is)h(not)f(triggered)f(for)h(ab)r +(out)g(2)g(seconds,)g(it)h(will)g(issue)f(a)g(hardw)n(are)e(reset.)42 +b(Care)515 4556 y(needs)37 b(to)h(b)r(e)g(tak)n(en)f(that)g(no)h(co)r +(de)f(path)h(blo)r(c)n(ks)f(longer)f(than)i(this,)i(or)d(it)h(needs)f +(to)515 4656 y(frequen)n(tly)25 b(p)r(erform)f(w)n(atc)n(hdog)g(resets) +h(of)g(its)g(o)n(wn.)36 b(An)26 b(example)f(of)g(suc)n(h)g(a)g(co)r(de) +g(path)515 4756 y(w)n(ould)e(b)r(e)h(the)h(string)e(IO)g(functions:)35 +b(for)24 b(an)f(o)n(v)n(erly)f(large)g(string)i(to)f(prin)n(t)h(\(ab)r +(out)g(2000)515 4855 y(c)n(haracters)h(at)i(9600)f(Bd\),)i(they)g(migh) +n(t)f(blo)r(c)n(k)g(for)g(to)r(o)g(long.)515 5002 y(The)36 +b(lo)r(op)f(itself)i(then)f(acts)g(on)f(the)i(in)n(terrupt)e +(indication)h(bit\034elds)h(as)e(appropriate,)p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 338 354 +TeXDict begin 338 353 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(338)p 515 236 +2865 4 v 515 523 a Fq(and)27 b(will)h(ev)n(en)n(tually)e(put)j(the)f +(CPU)g(on)f(sleep)h(at)f(its)h(end)g(to)f(conserv)n(e)f(p)r(o)n(w)n +(er.)515 670 y(The)34 b(\034rst)f(in)n(terrupt)h(bit)g(that)g(is)g +(handled)g(is)f(the)h(\(soft)n(w)n(are\))f(timer,)j(at)d(a)h(frequency) +515 770 y(of)d(appro)n(ximately)e(100)h(Hz.)47 b(The)31 +b Fm(CLOCKOUT)d Fq(pin)j(will)h(b)r(e)f(toggled)f(here,)i(so)e(e.)47 +b(g.)g(an)515 869 y(oscilloscop)r(e)31 b(can)i(b)r(e)h(used)f(on)g +(that)g(pin)h(to)f(measure)f(the)i(accuracy)d(of)i(our)g(soft)n(w)n +(are)515 969 y(clo)r(c)n(k.)45 b(Then,)32 b(the)f(LED)g(\035asher)f +(for)g(LED2)h(\("W)-7 b(e)31 b(are)f(aliv)n(e"-LED\))f(is)i(built.)47 +b(It)31 b(will)515 1068 y(\035ash)37 b(that)i(LED)f(for)g(ab)r(out)g +(50)f(ms,)j(and)e(pause)g(it)g(for)g(another)f(950)f(ms.)68 +b(V)-7 b(arious)515 1168 y(actions)28 b(dep)r(ending)i(on)f(the)h(op)r +(eration)e(mo)r(de)h(follo)n(w.)41 b(Finally)-7 b(,)30 +b(the)g(3-second)e(bac)n(kup)515 1268 y(timer)e(is)g(implemen)n(ted)g +(that)h(will)f(write)g(the)g(PWM)h(v)-5 b(alue)26 b(bac)n(k)f(to)h +(EEPR)n(OM)h(once)f(it)515 1367 y(is)h(not)h(c)n(hanging)e(an)n(ymore.) +515 1514 y(The)h(ADC)i(in)n(terrupt)e(will)h(just)g(adjust)g(the)f(PWM) +i(v)-5 b(alue)27 b(only)-7 b(.)515 1661 y(Finally)g(,)40 +b(the)e(UAR)-7 b(T)39 b(Rx)f(in)n(terrupt)f(will)h(dispatc)n(h)f(on)h +(the)g(last)g(c)n(haracter)d(receiv)n(ed)515 1761 y(from)27 +b(the)h(UAR)-7 b(T.)515 1908 y(All)35 b(the)g(string)g(literals)f(that) +h(are)f(used)h(as)f(informational)g(messages)f(within)j +Fm(main\(\))515 2007 y Fq(are)31 b(placed)h(in)h Fs(program)38 +b(memory)33 b Fq(\(p.)14 b(260\))32 b(so)g(no)g(SRAM)h(needs)g(to)f(b)r +(e)h(allo)r(cated)515 2107 y(for)h(them.)59 b(This)35 +b(is)f(done)h(b)n(y)f(using)h(the)g(PSTR)g(macro,)h(and)e(passing)g +(the)h(string)f(to)515 2206 y Fm(printstr_p\(\))p Fq(.)515 +2469 y Fs(22.37.4)93 b(The)32 b(source)g(co)s(de)515 +2670 y Fq(The)27 b(source)g(co)r(de)g(is)g(installed)h(under)515 +2817 y Fm($prefix/share/d)o(oc/)o(av)o(r-)o(lib)o(c/)o(ex)o(amp)o(le)o +(s/)o(lar)o(ge)o(dem)o(o/)o(la)o(rge)o(de)o(mo)o(.c)p +Fq(,)515 2964 y(where)f Fm($prefix)f Fq(is)i(a)f(con\034guration)g +(option.)38 b(F)-7 b(or)28 b(Unix)g(systems,)g(it)g(is)g(usually)g(set) +g(to)515 3063 y(either)f Fm(/usr)f Fq(or)h Fm(/usr/local)p +Fq(.)515 3343 y Fn(22.38)112 b(Using)38 b(the)f(standard)i(IO)e +(facilities)515 3543 y Fq(This)24 b(pro)5 b(ject)23 b(illustrates)g(ho) +n(w)g(to)h(use)f(the)h(standard)f(IO)h(facilities)g(\(stdio\))g(pro)n +(vided)e(b)n(y)515 3643 y(this)32 b(library)-7 b(.)47 +b(It)32 b(assumes)f(a)g(basic)g(kno)n(wledge)f(of)h(ho)n(w)g(the)h +(stdio)f(subsystem)h(is)f(used)515 3743 y(in)c(standard)e(C)i +(applications,)f(and)g(concen)n(trates)f(on)i(the)g(di\033erences)f(in) +h(this)g(library's)515 3842 y(implemen)n(tation)34 b(that)g(mainly)f +(result)h(from)f(the)h(di\033erences)g(of)f(the)i(micro)r(con)n +(troller)515 3942 y(en)n(vironmen)n(t,)26 b(compared)h(to)g(a)g(hosted) +h(en)n(vironmen)n(t)e(of)i(a)f(standard)f(computer.)515 +4089 y(This)e(demo)f(is)h(mean)n(t)f(to)h(supplemen)n(t)g(the)g +Fs(do)s(cumen)m(tation)g Fq(\(p.)14 b(168\),)24 b(not)f(to)h(replace) +515 4188 y(it.)515 4451 y Fs(22.38.1)93 b(Hardw)m(are)33 +b(setup)515 4652 y Fq(The)26 b(demo)g(is)h(set)f(up)h(in)g(a)f(w)n(a)n +(y)f(so)h(it)h(can)f(b)r(e)g(run)h(on)f(the)h(A)-7 b(Tmega16)25 +b(that)h(ships)h(with)515 4751 y(the)34 b(STK500)f(dev)n(elopmen)n(t)g +(kit.)57 b(The)35 b(UAR)-7 b(T)35 b(p)r(ort)f(needs)g(to)g(b)r(e)h +(connected)f(to)g(the)515 4851 y(RS-232)e("spare")g(p)r(ort)i(b)n(y)g +(a)g(jump)r(er)h(cable)e(that)i(connects)e(PD0)i(to)f(RxD)h(and)f(PD1) +515 4951 y(to)27 b(T)-7 b(xD.)28 b(The)g(RS-232)e(c)n(hannel)g(is)i +(set)f(up)h(as)f(standard)g(input)h(\()p Fm(stdin)p Fq(\))e(and)h +(standard)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 339 355 +TeXDict begin 339 354 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(339)p 515 236 +2865 4 v 515 523 a Fq(output)28 b(\()p Fm(stdout)p Fq(\),)e(resp)r +(ectiv)n(ely)-7 b(.)515 670 y(In)48 b(order)e(to)h(ha)n(v)n(e)g(a)g +(di\033eren)n(t)h(device)f(a)n(v)-5 b(ailable)46 b(for)h(a)g(standard)g +(error)f(c)n(hannel)515 770 y(\()p Fm(stderr)p Fq(\),)20 +b(an)g(industry-standard)f(LCD)i(displa)n(y)f(with)h(an)g +(HD44780-compatible)d(LCD)515 869 y(con)n(troller)23 +b(has)i(b)r(een)g(c)n(hosen.)35 b(This)25 b(displa)n(y)g(needs)g(to)g +(b)r(e)g(connected)g(to)g(p)r(ort)g(A)h(of)f(the)515 +969 y(STK500)h(in)h(the)h(follo)n(wing)f(w)n(a)n(y:)p +515 1044 V 515 1143 4 100 v 568 1114 a Fs(P)m(ort)p 1468 +1143 V 768 w(Header)p 2422 1143 V 652 w(F)-8 b(unction)p +3376 1143 V 515 1147 2865 4 v 515 1246 4 100 v 568 1216 +a Fq(A0)p 1468 1246 V 850 w(1)p 2422 1246 V 911 w(LCD)28 +b(D4)p 3376 1246 V 515 1250 2865 4 v 515 1349 4 100 v +568 1319 a(A1)p 1468 1349 V 850 w(2)p 2422 1349 V 911 +w(LCD)g(D5)p 3376 1349 V 515 1353 2865 4 v 515 1452 4 +100 v 568 1422 a(A2)p 1468 1452 V 850 w(3)p 2422 1452 +V 911 w(LCD)g(D6)p 3376 1452 V 515 1456 2865 4 v 515 +1555 4 100 v 568 1525 a(A3)p 1468 1555 V 850 w(4)p 2422 +1555 V 911 w(LCD)g(D7)p 3376 1555 V 515 1559 2865 4 v +515 1658 4 100 v 568 1628 a(A4)p 1468 1658 V 850 w(5)p +2422 1658 V 911 w(LCD)g(R/)p Fh(\030)p Fq(W)p 3376 1658 +V 515 1661 2865 4 v 515 1761 4 100 v 568 1731 a(A5)p +1468 1761 V 850 w(6)p 2422 1761 V 911 w(LCD)g(E)p 3376 +1761 V 515 1764 2865 4 v 515 1864 4 100 v 568 1834 a(A6)p +1468 1864 V 850 w(7)p 2422 1864 V 911 w(LCD)g(RS)p 3376 +1864 V 515 1867 2865 4 v 515 1967 4 100 v 568 1937 a(A7)p +1468 1967 V 850 w(8)p 2422 1967 V 911 w(un)n(used)p 3376 +1967 V 515 1970 2865 4 v 515 2070 4 100 v 568 2040 a(GND)p +1468 2070 V 764 w(9)p 2422 2070 V 911 w(GND)p 3376 2070 +V 515 2073 2865 4 v 515 2173 4 100 v 568 2143 a(V)n(CC)p +1468 2173 V 774 w(10)p 2422 2173 V 869 w(V)-7 b(cc)p +3376 2173 V 515 2176 2865 4 v 530 3867 a @beginspecial +173 @llx 322 @lly 438 @urx 470 @ury 3401 @rwi @setspecial +%%BeginDocument: stdiodemo-setup.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: pnmtops +%%Title: noname.ps +%%Pages: 1 +%%BoundingBox: 173 322 438 470 +%%EndComments +%%Page: Image0 1 +/readstring { + currentfile exch readhexstring pop +} bind def +/rpicstr 662 string def +/gpicstr 662 string def +/bpicstr 662 string def +%%EndProlog +%%Page: 1 1 +gsave +173.6 322 translate +264.8 148 scale +662 370 8 +[ 662 0 0 -370 0 370 ] +{ rpicstr readstring } +{ gpicstr readstring } +{ bpicstr readstring } +true 3 +colorimage +14141414131313121313131516161310151515161717181814171b1f2122 +2324272929292a2c2a272a2b2a2a2f271d2b27282a2c2e2f2f2f32322f30 +35322d31383c3f3c353030322c323131302e3434322f3235333435303535 +353534333130323334333232333533323232333436363635363939373739 +3636373738383839383939393838393a3b3635383a37343538373a3d3b37 +383c4041403c3c3e3d393b39393a3938383a40434f57544e463b44424245 +45434141423f40434542424447474748484848464d50534c44484b444645 +4445484a4d4d4c4543464a494b504a48484c4f4f4e4f4f4e4d504f474a5a +5552525353545b635f59565045372e2f3132302d2a292a2c3430332c2932 +442a1f1a20231bac4792958f563a6c6ead938f66353f97241c2827180f10 +0c09182c292a252125312b3b3a2e3153a9ab97c2a058795a7166744a2e2b +171a191b1c1f0d1d3d4b1d1f242e3019151b10111a19162120191e1e418e +3c311b262b3744446e838b5b62587b848b5f4d4097a87b2a2b2421212425 +23201f1f2223222735403e341b1e3024254f653f36454654705535486234 +3570475c8f71475a5d4785894734411e313534362c39293d404446422e6a +bd9fdcd9dbeae3dbd4f56f706f4f9c99aa8c7d7b898383a3a569a2808b96 +a26b7cb9e2b9c5c8767b54bfe3e7e8e4e0dddccdc09f545ec2b3a5c1b538 +3d1d46789e973b3d69596ca08d345369d983295f547451c467534a2a4055 +ce9b4154718567b27d3e5486d889447b678a8ed97e7ea3c9c3c2c6bec6c9 +caccccbbb48b7a89a9e7c8cfd1ebe5d2c0babec8def0f9ffffffffffffff +fffffffffffffffffffffffffffffffdf5eee6dfd9d7dae1e9f0faffffff +f9f2dfd3cdd6edfbfbf3ded6cfd9dfd6cabdb9bbc4bdd2c1a8afdce7dbe9 +e1e20d0d0d0d0c0c0c0b0b0b0b0d0e0e0b080a0a0a0b0c0c0e0e0a0d1115 +1718191a1e2121212224221f22232222271f15231c1d1f21222323232424 +2223282520242b2f322f282323251f252424232127272522252826272823 +282828282726242322232423222223252322222223242626262526292927 +27292626272728282829282929292828292a2b2625282a27242528272a2d +2b27282c3031302c2c2e2d292a282829282727292f323e46433d352a312f +2f3232302e2e2f2c2d30322f2f313131313233333331383b3e372f33362f +3332313235373737362f2d30333234393331313538383738383736393830 +3343403d3b3c3c3d444c4844403d33251e1f242525221e1d1c1e22202320 +24314a342b282e3129ba549f9f9960447678b69ea0794851aa3931404339 +373d3e405167605c4e40383a2e3a35292d4fa4a692bb934863425550664a +3a4539423f3e38361f2e4a582628293338211e261d222b2a23282019272d +55a040321e2a333b3b375c727a4b514667717a5349449eb5893f48464343 +4647454241414546454a5865675d42404e3e3c61754d435255637f65485c +7547437d51649274495c5c46848e554e6b536c73707067746576716b5e4d +2c62b192cecacad9d2cac5e7616664448b8aa28a807e877b74908f579a82 +949f9b5c6ca4c5a2bec875723aa2cfd7d8d6d3d4d4c7b5944e5cc4b9abcc +c14954345886a89c3a38604d5f95822e516bdd872c5d506e4abe675a5539 +5062d399384763795ead783c5281d180366d587d81c9656088b1abacb3ab +b0b1aeaba794886256627cb2888987a19f958f98aac3e0f6f8fcfefefbfa +f8f5f3f3f2f0ededeff3f2f4f6f8f7f5f2eee6dfd6cfc9c7cbd3dbe3edf6 +f7f2e8e2cdc1bac3d7e5e3dbc6beb7c1c7beb2a5a1a3aca5baa99097c3ce +c2d0c8c907070707060606050808080a0b0b090508060405060605050104 +070b0d0e0f0e0d0e0e0e0f110f0c0f100f0f140c021008090d0f12131515 +1717121317140d111a1e211e171212140e14131312101616141114171516 +171217171717161513121213141312121315131212121314161616151619 +191717191616171718181819181919191818191a1b1615181a1714151817 +1a1d1b17181c2021201c1c1e1d191a181819181717191f222e36332d251a +2220202323211f1f201d1e21232020222323232422222220272a2b241c20 +231c242322232628292928211f222524262b252323272a2a292a2a29282b +2a2225352f2c292a2a2b323a3631322e25171110141413100e0d0f111411 +1410101c301b1311151810a13a85868045295b5d9b8080592a3796282232 +34261f201916243939392c201a1b111c180c12368e927fa880314e2a3f38 +4c30222c2028282822220f1e39461515151f230c0d150c101b181218160d +16163c882f240d191e2a32315868663137305e6b734530237f9b7830322d +2a2a2d2e2a2726262728272c3844493f2525322320475a33293838466248 +2c40592b2963394d7d5f34474a34727a3c3147293e403d3d313e3143423f +3a2d154b9772aba19eaba49e9ec4464d52306f697d6355535e5453727741 +856c7f8071314b87a7798a924749177a9da3a7a7a7a9ada7a1802a339f9d +9dbea92937173e6d908626254f3d4e836e183a53c26c1144355430a44b3b +371a3346bc842737566b4d9a64273d6dbf6f2b6251757bbc4f446a8f8987 +8b83898b89888a776f4636415b936c6f6e8886797175879bb9d0dae1e8e8 +e8e7e6e1e0dcd6d0c8c4c6ccd6dde3e5e8e8e7e7e1dcd7d0cac8ced2d0d2 +dce0e0d7cac0a99b929bb0bebdb5a29a939da39a8e817d7f888196856c71 +9ba599a79fa01514141413131212121212141516141214141617191a1a1a +1c1e222426262727292a2b2a2b2c2a27242c2c262b2c262c2f2f2f2e2d2b +29282b2e2f353d3931312b2d2f2f2d2e313431323032302e3233322e3133 +3031312d2f3031323232323134353533313031322d2f313334333130302e +2c2c2f3131303534343536373635323233323334373936302b2d30313336 +38353436363434363b3b38343436363338373a3f423f3c3a37373e45474b +493f413e3c46464741433d3a3a3d3d3a3a3b3c3e3f41434445463f3d3f41 +434a4c444040403f3f40434449434042474949494645464a4b4845444648 +46464641455354545049474e55584b4949463d322d2f2c2d2c2a2827292a +2e2c2e2a26304c27221f201e0e55083239556f40435f2e0d48572508231c +2a2614170f0a172c322a35221b1c28657e7275601d59a2756f775e117975 +434f853e212f1d151221211a1c0a042118262e393d1e17251c20110d181a +2136171c21373c4a363032252253474d4d4a44494f4945624705b0ba921f +28231f1e20222322241820242647583c23241e2738343f64f5b2a6c49719 +96722e2e64253dc9c3b9fbdd287fffc3d1fe8a1d44443f36384d3931453b +4e672c1f361b68a697a7d4cdd8a4fcf78ede3816bcfde095704b543b2c92 +b033b9ffb1cffd837ba7ffcac1d0243c58afdec6c8cfd5d3bdfff9dd9278 +f6d9c0e8d5334b3c3f53d4e47c40f48dc0f8ea3f5986d7f33f60eeadc6ff +c33d47514678e0f25e76fff4f5fead4d568ee6ff33d4f9d9d5ff838ba4c3 +d0bccdbec2cbcbcfc3b9d3a9947f92cec2ddcda6a4cefbfffffffaefd6ce +c2b6b4b9c0c1bdc3caced0ceccc8cdcacbcbcccdcecee4ecfbffffffffff +fffffce8d4c6c0c1daeefffffee7cfc1c3e5ffffe6c7bbb7c0c2cfc09f97 +b2eaf5f2e7eef1f50e0d0d0d0c0c0b0b0a0a0a0c0d0e0c0a09090b0c0e10 +10101214181a1c1c1d1d202223222324221f1c24241e23241e2424242423 +211f1d1c1d202228302c24241e2022222021242724252325232125262521 +242623242420222324252525252424252523212021221d1f212324232120 +201e1c1c1f2121202524242526272625222223222324272926201b1d2021 +232628252426262424262b2b2824242626232726292e312e2b2926262d34 +363a382e2e2b293333342e302a27272a2a2727282628292b2e2f30312a28 +2a2c2e35372f2d2d2d2c2c2d2d2e332d2a2c303232322f2e2f3334312e2d +2f312f2f2f2a2e3c3f3f393230373e41343433332b201d1f1f20211f1c1b +1b1c1c1c1e1e212f5231302e2f2d1d64164045617c4d506c3b1c5b6c391f +39334241333a3a3849636b636c514239386e7e6e705b19559d706a705302 +645f2939793e2f493f3d38423e31311c122e232f363e42231e2e272d1f1b +25252338232e384b454e3a373e2c1e46353b3b3933373b3636594308b9c8 +a3364847434244464746483c45494b6c7d634a4b4248554c5376ffbfb3d1 +a426a3813e3e74334ad3cbbefee02a81ffc4d2ff98366c77787170836f6a +7d717b8a412831105c988898c2bcc795ece882d3300baef0dc9675505233 +1d7f9a21aeffb9d5f8766c93e4b4bbd325344093ccb9bac2c9cab5f8eed5 +8c76f8dec4f0e14360504f5fdce77b3beb81b4ede2385788dbf7415eeaa7 +c0fdc34454605685e5f1556af6e9eef9ab4b548ce0ff27c8ebcdcbfc696e +87a9b8a6b7abacb3afae9f92a97d6b546499879d8c666799ceeaf4f8f5eb +d1c8bcb0adb1b4b6b0b4babdbdbab6b4bebebfbfbfc0c0c2d7dfedfbfbfb +fbfafcfcf0ddc8b8b1b1cadcf1f7ead1b9a9abcdeaeaceafa39fa8aab7a8 +877f9ad2dcd9ced5d8dc0807070706060505070707090a0b090705030506 +08070707090a0e10121213110f0f100f10110f0c0911110b10110b111010 +1211110f0f0e101312181f1b11110d0f11110f1013161314121412101415 +141013151213130f111213141414141314151513111011120d0f11131413 +1110100e0c0c0f1111101514141516171615121213121314171916100b0d +1011131618151416161414161b1b1814141616131716191e211e1b191616 +1d24262a281e1f1c1a2424251f211b18181b1b181819181a1b1d1d1e1f20 +191717191b22241c1e1e1e1d1d1e1f20251f1c1e22242424212021252623 +201f21232121211c202e2e2e27201e252c2f222125241d1210100f0f0f0d +0c0b0e0f0e0d0f0e0d1a381819171816064d00272d496233365221003b4b +1d03241f323023261f1b243b3e38452f231b1b516251533e003c875c575d +3f004f4812215f2416302623212d281d200c011c121c212a2e0f0c1d171c +100a1314162b0f161c32323d2925281a133e3131271f192130302f4a2a00 +9aae9126312d29282a2c2b2a2c20262a2c4d5c442d2e262d39323a5ceaa5 +99b7880a87642323591930bab4a8e9cb156cefb2c0ef7f19494e4b413f51 +3d374c405062200b1b00427b67719a919c6cc8c968bd1d0093ceb76e4c27 +2b0e0061820b9aeca4b9d04c4d78c78d899e000f1e6c9c858d969fa18ed7 +dcc06a4fd1c0b6e3c92641343547c5d26728dc71a4dbcf254270c2de2945 +d18da8e2a72536413969cedc445ae6d7dbe394323d75caec17bae0c1c1ed +5250698894819083858d8a8b7f7590624d34437a6981704a4b7aafc7d2d3 +cfc8b3aea49a9a9ea4a49f9fa1a19d979191a1a4a7a9acafb3b6cfd9eaf8 +f8f8faf4f3ece0c9b29e9490a8b8cbd2c5aa948587a9c6c6aa8b7f7b8486 +9384635b76acb4b0a5acafb311111110100f0f0e12111011121212111213 +16181a1b1b1b1f22242626262626292a2a292a2c2a2720292826292a2728 +2a2a2a2a29292827272b2d343d3931312d2b2a292a2d2f30342f2d2e2e2c +2b2e322e2f302d2e2f2a2b2c2e3031323232333333323030303130313335 +3533323030302e2b2f33312b343332333434333136363533323234363934 +30313436393b3c3734353838373739393734353737353735373d42403b37 +393737363a46493f413d36454143383b3f3d3e3f3f3d3d3e414344444140 +40414c4b5150443e424445454442414043444e4c48484e52504b4b484648 +4b4b4d4f4a4f4d4848474b54595851494d5959505453534d3f2f292b2627 +272724252727282a2829222f5722201b191a16230d1e1612191b191f1227 +101b152d27221510120c162b3a352b290a0d14183197c0adb1be0654e899 +9be89412afe7bcccff3c2a2e1c1b15181d25201e21503c302924241b3e19 +1a241f1f1716272625221e737a41382c26122932433837353e4234352e31 +6d0e2e3e851d201d1c1c1d1e20211c231929534d26172226293137313345 +d8aebae0d725b5f75977fbc137cacfacbfbe3f71d0ab8dbe8f3934463941 +494128414829291415627f752d44abe5e0e8d7c2a55cffff841d8e587c61 +7ea5ffff68ffff6b89aea39ccd9c889949485eac604875ccae95959d8b9a +8ddaffffbf3260504066905343403f2fced8b337cacdd5baff4a3b55cce6 +8535d4c1bfdaf83a46424c2db5e5a733e1e5c5f1fc514949eef69d58ffd9 +bcffe98baec2cac4c7bec6c6bfd0c8bed28a78a5c1cbab98aff3ffffeccc +afa0a2a8c3dcfaffffffffffffffffffffffffffffffffffffffffffffff +faefe2d3c9c5bebfc6d6effffffffffbe2cec7d2e7f9ffffe6cfbfb7bac0 +c6c5b6a2a8f2fee1edecf6f4f9f90a0a0a09090808070b0a090a0b0b0b0a +07090c0e1011111115181a1c1c1c1c1d1d1f1f1e1f211f1c151e1d1b1e1f +1c1d1f1f1f1f1d1d1c1b191d2027302c2424201e1d1c1d20222327222021 +211f1e21252122232021221d1e1f21232425252523232322202020212021 +23252523222020201e1b1f23211b24232223242423212626252322222426 +292420212426292b2c2724252828272729292724252727252624262c312f +2a26282626252935382e2e2a23322e3025282c2a2b2c2c2a2a2b2e303131 +2e2d2d2e39383e3d322c30323232312f2e2d2d2e38363232373b39343431 +2f3134343638333836313130343d44433a32364242393d3e3d3a2d1d191b +191a1c1c1b191919161a181d1d2f5d2f32312f302936203128242b2d2b31 +243927343047433f35313836425c6e6c64603c3837313f9dc0a9abb80250 +e39496e18c069fd5a6bbf83f38483e4138393a3e37353461493c3129271e +411c1e2b252726252e2f373a3b8c884a413a381f2b2a302222212a2d2122 +202a6d153c519a38434544444546494a454c42527c764f4046484a4f5148 +4553e4b8c4eae12fbfff6381ffc93fcfd2afc2c14274d3ae92c69d505774 +6e767a70577078584f2f2364796a21369cd5cdd6c7b2964efefe7b158753 +7c6586acfffa59fcec547aa7a49ec7927c892f345bb2624260b4a08a8994 +839284cffefebc305e4f426c9c63544f4b37d3dbb231c2c4ccb1fd453857 +cfea8733cfbdbad8fb4053515b3abae4a02bd6debfedfb524a48e9ef9650 +f6d1b3f7cf6c91a8b2aeb1a8afada3afa597a95d45708c98796781c7efe2 +c8ab90838791b4d0f0fdfcf7f8fbfdfbf8f7f9fdfdfef9fbfdfdfcffffff +fefbf0e5d8cbc1bdb4b5bccde4f8fefefbebd2bcb5bed3e3f8e7ceb7a79f +a2a8aead9e8a90dae6c9d4d3dddbe0e00404040303020201050403040505 +050401000305070808070b0e10101010100e0d0d0d0c0d0f0d0a030c0b09 +0c0d0a0b0b0b0d0d0d0d0e0d0c1010171f1b11110f0d0c0b0c0f11121611 +0f10100e0d10141011120f10110c0d0e1012131414141313131210101011 +101113151513121010100e0b0f13110b1413121314141311161615131212 +1416191410111416191b1c1714151818171719191714151717151614161c +211f1a16181616151925281e1f1b14231f2116191d1b1c1d1d1b1b1c1f21 +22221d1c1c1d28272d2c1e181c1e232322201f1e1f202a282424292d2b26 +262321232626282a252a28232322262f33322820243030272b2b2f2b1f0f +0c0c09090a0a0a090c0c080b090d091743151c1c1a1913200a1b100c1315 +11170a1f0a16112c2a29201c231e273c4a443b38191a19142583a68e919e +0037cd8083cf790088bd8ea1dd241f2f2528222424292523214e37281c15 +140b300b0f1b171813121e1e21201d6f71352c23200b1d1f2a170d081118 +131b171a53001b3587272b2a29292a2b2b2c272e22325c562f202a2f2f35 +382e2d3acca0abd1c816a6e84b69edb228b9bd9aadac2d5fc09b7eb18434 +364d42484d4229444e2e2a100a4e6354091c7fb4acb2a3907734e8ec6c02 +6b335a405f83dcd83ae1d64267949286a36e627016132e823d224192735c +616d5c6b5dafeced9d0a38313460864834323322bfc8a021b5b5bda2ed32 +2542bad3711cb9a4a4bfe02437343e1ea3d08e18c0c4a5d0dd322b2accd5 +7c39e2bea2e2b64f73878e898a8186857e8c85788d4028516d7958465fa4 +ccbea6887163697297b6d7e7eae7eaedefede7e4e2e4e3e1d9dcdee0e3e8 +eaecedece4d9cec0b6b2aaa9b0bcd0dfe4e1dccab0989199b0bed4c3aa93 +837b7e848a897a666cb6c2a3acabb5b3b8b81110110f100e0f0e14121210 +1010111116181b1e1f201f1f2123252625252525292a2a2a2b2d2c29282a +282e2e25262826272828292a2b2b2e3130323633303435312d2c2f30302e +372c2c2d2e2d292e332e2f302d2e302c2e2f3031313131302f2f30303132 +3334373634333333353633393935363b372e333434343332313136373737 +363636373433333538383534353432343636363634343435373837353b38 +383b3d3b393941413f3939484d44443f36454043383b3b3c3e4040414243 +45474845403c3c3e443d3c3d38415c724543403f3f3f403f484b4a484b50 +4e48454445494a49494b48514f474748484c534e4949555d55464d4e514d +3e302b2f2526262725242726282e262b21306120211917191a1320232023 +161d25112219201923252620180f0b22383e382c19090c14182830504442 +47905064a79e9cbfa42984a89f9bc38f896329212226212022231a4c191a +2523232920212917291a1e182f3e272d283b4534312b732c272a3429673f +49453729353663356973491921202322211e1f1e1a2c4753462a1d212828 +2d363938322a60473b688532acec7297fb8b19422b1e2a472c1d3d062427 +3c1d2f592c4447483b433d424c203670f88e55434a75ccd18e5d8478b8ff +ac33d9a1976f6763d9fea6dcff5753bc93a6b68f2eab242b75df50252f5c +272327191c26344f3e2c4826364b2b2c2e4b47527726cec7e060c1ffc9c0 +ff99844eadcbb85ed8ffbecaf367514f3c1f98b7cf40aff8b9c5fe839e49 +cce2b655bff5b3c6ff97bccbc4c5c3c4c4c6c4ccc2b6cba3c3c2ac96b3f6 +ffedbc9c8aa8dcfffffffffffdf2eae0d2c4c1c1c2c5c8cbc9c6d3d3d5d1 +cdc9c8c7d2d2dae5f2fbfffffffffffffff6decbc4c8d3e7fbfffdf4dac1 +b8c3d2d2c7c7b7979ccde3f1eff0fbf4fff0f0ea08090808070706070b0b +0909070908080c0e11141516151517191b1c1b1b1b1c1d1f1f1f2022211e +1d1f1d23231a1b1d1b1c1d1d1d1e1f1f20232325292623272824201f2223 +23212a1f1f2021201c21262122232021231f21222324242424231f1f2020 +21222324272624232323252623292925262b271e23242424232221212627 +272726262627242323252828252425242224262626262424242527282725 +2a27272a2c2a282830302e2828373c33312c23322d30252828292b2d2d2e +2f30323435322d29292b312a292a262f4a6032302d2c2c2c2a2932353432 +343937312e2d2e3233323234313a3830303131353e3932323e463e2f3639 +3b3a2c1e1b1f18191b1c1c1b1918181e19201c30652d34323032312a373b +36392c333b2738303a36404347443e37364e666f6c604d3b393b363c3c54 +423c418a4c5fa29996ba9d21789a8f8dbd93997d4b4445463d393b3c315f +28262d2624281e1f2715271e2d2a38473945455555403d39853b2b222011 +4e29333024182930653e7a8a603644484a4a4846464741556e7c6d534448 +484649504f4a3f36684f406d8a37b4f1759afc8d1b442a202c4a2f20420e +2c30462f4e815a73716e616965656632396af08349343a65bbc07d4d756b +adfba42dd5a29d76716bdaf896c6fa4040b090a4b189269e0e1a76e75521 +1e471b1c1f1318222b42322547263246282f395952597d2ad2c9df5dbcff +c2b9ff97834dafcdba5dd6ffb9c8f56d5b5e4b2c9db9ca39a7f3b5c4ff84 +9f48c9dfb14fb9efadb7e4769daeaaadabaeadada8ab9f8fa2748c897765 +87d0e9d09f7f6c87b8ddecf3fbf7efe6ddd4c6bab7b7b8bbbfbfbebbcccf +cfccc6c3c2c2cbcdd3e0ecf5fbfffefefffefeeed3bfb6b9c4d7e8efe9e0 +c4a9a0abbabaafaf9f7f84b5cbd9d7d8e1dbe9d7d6d10303030202010101 +06050401020101010305080a0c0c0b0b0d0d0f100f0f0f0d0d0d0d0d0e10 +0f0c0b0d0b111108090b07080b0b0d0e1111131613151815101417130f0e +11121210190e0e0f100f0b10151011120f10120e10111213131313120f0f +101011121314171614131313151613191915161b170e1314141413121111 +161717171616161714131315181815141514121416161616141414151718 +17151a17171a1c1a181820201e1818272c23221d14231e211619191a1c1e +1e1f2021232526231c18181a20191819121b364c23211e1d1d1d1c1b2427 +2624262b2923201f202425242426232c2a22222323272d2820202c342c1d +24262d2b1e100e100808090a0b0a0c0b090f090e06184c13201d1b1d1d16 +23252124171e241021161d1822272c2a251d1b33494f483a27181c201c23 +243d2b24297233498e8686a78a0a60807572a3787f64322c2f2f26232829 +1d4c1512181312160f1018081a0f18142534212b27383b2825226d241a15 +17053a111b1b160e1d204d215a6e4e242c2d2f2f2d2b292924374f5c4e33 +252b302e323738342b2053382a5673209cdb6085ea78062f160b17351a0b +2e00171b2e152e5e3349494538424044491a265add6d331d214b9fa46133 +5e589bec971dbc837b544c46b8d87caee62e31a07f8f93690f8b00004ebe +35060428000000000000042222152b040c2619242840323a6111b9b3ca4a +a9edb0a7ed826e3899b7a448c1eca5b1dd5340412e1287a4b72690d698a5 +df627f29aac09435a1d797a0c9577e8c87878587848583887f7084586e6c +584564abc3a87757466498c0d3d9e0ddd5d0ccc6bab0aeaeaeafb0afaca5 +afacafacaaa9aaacb8b9c1cddce5ebeff4f4f3f1ecd9bda59b9aa3b5c7ce +c8bd9f857c8796968b8b7b5b6091a7b5b3b4bcb3c1afb1a9161415141514 +1514171616151616191a21222527282827262627292a2a292a2b2e303130 +3235343235373135322c35313131302f2e2d2c2c34383634343030393330 +2f31343634323a2e312f32352d32332f30312f31332f3434343432312f2e +3030303133353636373634323233343530383a3433393a36323639373431 +32342c2f3437393a3b3b3435373a3c3c3834373a3c3c3b3a3a3a393a3c3f +403f3b393c3d3e403e3b3c3f4044463f3d494f4842403a44414641453a3e +414345484b4d44474949464446484e474f5c5c55504c534e4a4a4e4f4e4b +4e5558545356565450535a605e564e4b4752524c4d4e4c4c504c4d535858 +534f4f51544f41312d322d2b2a2b29282a292d32292e263564211b151a1c +1b161c161f1727131b27211d1d25341c1d0f0c0d37323f4d3a1307181525 +1d1a205d533e69b4192d98696299550c63e8adb2db031323181917222523 +262b3574221b272823302b2a2335222b2d2d245f423c3f373d3c3b385e15 +2e25302d88ab4579382c202c4533435c2a2b2a2a2d2a2927292a3b4d5139 +211b27333331363c4046463b606d126aa224a7ffc8bdffb02aaecc4885d5 +5e5ccbb623a1db343a5b3d5f445147485b4e47342a1d764752556029191a +155272363834212d4fa5873d4f3b54c0aabcf3669dffd4cafee930777351 +c3994f2f32526f3f434c4f4f6d945c49435781c54b3844354d8ca1385a4f +ff2219694350536f774a46439613304c3e42596c2e414331396cab205768 +594d7875973c7555b41b6d554c41698eb1d2d3c1c6c4c4c3c7c6c6b5b1ad +aaa6cafcffce977e91c8ffffffefd8c3a09b9dabc4e0f5fcffffffffffff +fffffffffffffffffffffffffffffffaf3efdbd4c8beb9c4d7e8ffffffff +f3dfcbbec1ebffffe8d3b0999ac6f6fffae3e4e6eddbe1d4e5ee0b0a0a0b +0a0b0a0b0c0d0b0c0b0d0f1017181b1d1e1e1d1c1c1d1f21212021222223 +242325282725282a2428251f28242626252422212020262a29272723232c +26232224272927252d212422252820252622232422242622272727272524 +22212020202123252626272624222223242520282a2423292a2622262927 +242122241c1f2427292a2b2b2425272a2c2c2824272a2c2c2b2a2a2a292a +2c2f302f2b292b2c2d2f2d2a2b2e2f33352e2c383e372f2d27312e332e32 +272b2e303235383a31343636333133353b343c4949423e3a403b37373b3c +3835383f423e3c3f3f3d393c4349473f3734303b3b35363735353b37363c +41413c38383c3e3c2f1f1d221d1e1e1f201f1c1b1d221c232033672b3130 +3537342f352f38303e2a323e38363943553e4138373a66616e7c69423643 +3b453429285c4e3661ae142893645c9453085cdea2a9da09233d383b373f +3e3b41464c8931272c29222a25231c2d1a29393b29675050584e4a444344 +6d212f1c1a136d932f64251c14294940567443484a4c4d4c4a494a4c5c6f +725c423e48544c494c4f4f524f426370136ca527aaffc5baffaa24a8c945 +84d6615fd0be2dabe340537d6385646c61617667563b220f693b43464f18 +08090443652a302e1b2a51a990485a4558bb9ca7d94c87f8cbc3f8e32b6e +6143c4a3582e23416a3d3f4a4f4c61855345455879ba44384f41508ca139 +5b50ff211868414e516f774a464698122d493b415b71384e503b3e6ea81b +5164554c7976983d7454b017694f46324b6b90b4b9a9aeadadaaaba6a48e +887e736d95cedfae7e697cb1e7f4e0c2a69785878b9bb4d2e8f1fcfbfbfc +fefefefffbfefffffefffffffffffffffef7f0ecd7d0c4b8b3bdcfdef5f6 +f5f0e2cfb8aaaad3faebd0bb988182aedee9e2cbccced5c3c9bccdd60908 +06060606040406060503050406070d0e1111141211101011131212111213 +1213141315181715181a1418150f18131212131212111212191d19171612 +101915121113161816141c10131114170f14151112131113151116161616 +141311101010101113151616171614121213141510181a1413191a161216 +1917141112140c0f1417191a1b1b1415171a1c1c1814171a1c1c1b1a1a1a +191a1c1f201f1b191b1c1d1f1d1a1b1e1f23251e1c282e27201e18221f24 +1f23181c1f212326292b22252727242222242a232b3838312a26312c2828 +2c2d2a272a3134302e31312f2b2e353b39312926222d2d27282927272a26 +242a2f2f2a262629302d211110130e0d0e0f0f0e0f0e0e130b110a1c4c12 +1c1d2224211c221c251b2a161e2a242020273823251a191b46414e5c4920 +1425222e201613483a214c9800147f514c813e0042c3868cbe0008222023 +202928252e3338761e131817101a15130c200d1a2524155037353b32302c +2b2c560b1d0d0f065a7b174f160f081832243a5a3036333335332f2e2f31 +4154553e25202b393633373b3c3e3c30525d0157901295edb4a9f19a1498 +b83472c44c4abaa71593cc28355c3e5e3f493e41574a3f29170458252e31 +3b0400000030551c23200f1b3b8e71283823379d8292c83d79e9bcb1e0cb +185d4d28a2803d190c2544172231332b3b6444392f39549a342e3f2b3168 +7f173930e403004c283538535b2e2a2b83001c36282c455a1f3436222859 +97083b493a2e5a56791e563695005037301b2f4d71929683888484828480 +816d6860554f75acba87553e5187c0d1c1a58d7e6a6c7384a4c5dfebf7f8 +f8f9f8f6f6f1e0dde1e3e4e6e8eaecececedebe4dddbccc7bbaca5abbac5 +dbdbd8d1c4ae988988afd6c7ac97745d5e8abac5bea7a8aaaf9da396a9b0 +1515151616161617191a1c1d1e2124262627292a2a2a2928292a2c2c2c2c +2d30313232313336363333393235302e3d3134343231302f2e2e2d333434 +332e2d353233343536363433372e352f31392d32312d2f312f3234303636 +353433312f2e353433333435353534353636363533332d32322d2c333a3e +33373a39353333352d30353839393939373837383c3f3e3c3b4043413e3d +3c3b403f414444403b39373b4043403c3c3f3a3e423d373d423c3d3e403c +3c3b3e3d393e424345494c4d424547474646484948404349454245474742 +3e3f4345454140464b49464648494c4c4e504e4a494a4b56595658585454 +50535a5b554f545e5a5b5d5646363034322f2f2e2c2c2d2c30342d2e2b3b +61241c161d1c1a221d1b1f0c22281c1f0c2131251c14140f1a3f333c3116 +0c151a1117262a2225a5d2b1c6f43566f3b4b5dbc14c8787817c8b697861 +302626302b23362327652f2322252e2a331a32222a4438294646554c404c +3f5930336d434f6b7340398d99bf34462f443e3b322c2635292a2c2c3036 +3f445b5533213634283333363c3a37424f51f8ff4cedf86f50a79993a5a9 +4afafe65a4fcb961fdeb4cf6f65a3937495646462252391b20132128251a +3c443b42483c463d4a20353c3f403c8b723a3241c16531649c5d82958472 +78c3464d7c9c5b4044425985a9756263496f98885d585c78958966746d63 +95869976657d7f7e8989c1b2a9c19b9cada9b4b0c9bdbdc5ced2d4d7dccf +e2c9dad2c7c2dad9cfcbd8d0efd5e6cde4e7ebe5aeb8c5cec5c5c8cbc6be +c5c2cfb8a2aac7fdffcda088a4e4fff7dbb1959dc3e0fcffffffffffffff +fffaece1d9d6d6d7dddad6d1cfcdcdcbcac5c7cad0d5dce1f7fdffffffff +fffffeecd2bebdd0e8fbfff4e6d1b19596c1eef4f1e3eae2f1f1f3ebede5 +e8e80a0a0a0b0b0b0b0c0e10121314171a1c1c1d1f2020201f1f1f212323 +232324242425252426292926262c25282321302429292726242322221f25 +27272621202825262728292927262a212822242c20252420222422252723 +2929282726242221252423232425252524252626262523231d22221d1c23 +2a2e23272a29252323251d20252829292929272827282c2f2e2c2b303331 +2e2d2c2b302f313434302b29262a2f322f2b2b2e292d312c262c312b2a2b +2d2929282b2a262b2f303236393a2f32343433333536352d3036322f3334 +342f2b2c30322f2b2a3035332f2f31323535373937333233343f423f4141 +3d3d3b3e43443e383d474346474334242024222222222323211e20242023 +2539642e31313837323a35343825393f3336233a4a433a363838466d6269 +5e41353c3e33343f3b2d28a2cba9beed2e61eeafafd8bf4a818077778a6f +86784c43424941394f3c3c783c2c27262b232a1126161e3d3c3145465a58 +505a4359323775484a5e5d26207583aa23392641434844423f4d40424244 +464e555c716d4a394d4c3f4946474b4742495354f9ff4aecf76e4fa4938b +9da142f3f75fa1fbb863fff054fef95f4b5066715b573161492928101014 +160e2d352a31362c362f3e162f383b3e3f937c473f4ac461255285466c83 +786b73be43466b905e4b4d434c75a57560624d6e8a7854555f7889795970 +756a927e9371627a7e7d898cc3b4abc19b9cada9b5b1c7babac4d0d6dcdf +e6d7e7cbd7cfc2c0d8d7cfcbd8d0efd5e6cbdfe2e4d69094a2b0a9abb1b4 +afa5a9a4ad947b7d95c8cfa27d688bcdece0bf916e7194b6e1f4fdfdf8f6 +fcfdf8f2e6dbd5d2d2d3d8d6d0ccc8c8c8c8c4c2c1c7cdd4d9dff3f9fefe +fefdfffef2dec2adacbdd5e7fcdcceb9997d7ea9d6dcd9cbd2cad9d9dbd3 +d5cdd0d00808060707050506080709090b0d101012111314141413101312 +1414141415161415151416191916161c1518131120131715151414131414 +1218171715100d15141516171818161519101711131b0f14130f11131114 +16121818171615131110151413131415151514151616161513130d12120d +0c131a1e13171a19151313150d10151819191919171817181c1f1e1c1b20 +23211e1d1c1b201f212424201b19161a1f221f1b1b1e191d211c161c211b +1b1c1e1a1a191c1b171c202123272a2b2023252524242425241c1f25211e +1f2325201c1d2123211d1c222725212123242727292b2925242526313431 +33332f2f2a2d31322c262b35313339342616131713111212121213111115 +0f110f2249151e202726222a25212512272d21241125342b201b1c182549 +3e483d23171f241a202c2b1d1791b996abda1b4ddb9c9fc5aa3369665c5a +6e536c5e352d2c332c243a2729642a1913141a131b021808102d2b1c302e +434036402a3f1a206034374d4f170c5d6b95112917302c2e2a2b2c3d2c2c +2d2e2f363e445a55301f333225323235383531394443e9f13bdae55a3d93 +857e909435e3e74f90e7a44eebda3de7e449313247503a3712442e0f1100 +0609030018201821281d2924320c232c30312a7b612b212da7460f3e7538 +5f776c5b5faa343659783f2d3831395c8253494e36506557454c4e5c6357 +49676858735a7151415b60616f71ab9c93a981829391a3a1b8a9a9b0bbbf +c4c7cdbfd1b6c6bcafabc1c0b7b1beb6d5bbceb4cbced2c17674828e8486 +888b867d827e8a725a5c74a8ae7f574162a3c1b6986b4d547a9dc4d9e3e6 +e8e9f4f6f6f0e6dbd2cfcfcac4bbb8b6b5b4b5b5b4b1b3b6bcc2c8d0e8f0 +f5f4f0edece8dac3a8918e9db5c6dab8aa9575595a85b2b8b5a7aea6b5b5 +b7afb1a9acac15151516171818191c1e20222325282b27272829292a2929 +2a2b2c2c2b2b2c2d2d302f2d2f31312e2f2e2e46402b352b2e2d2d2d2d2d +2e2f272b2c2d302c292e32353736322f2f30322d382c2d392b2e2d2a2d2f +2d2f312c303131323231302f373533323333323133343535353433323030 +302f2e31363b353637383736343336373837363434353232302e32373835 +3236373635373633373536393935323237383b3e3c39383b39383a383437 +3a373b434d3a3b333a33343a3d3c3b3e40403c3c3c3c3c3c3b3b40455153 +463f444945444242434346454345494b4946484d504d4a48484b51584950 +525254514d4f474e55524c4b4f544f4f524e42363237312e2c2b2a2b2c2c +2f2f2f2c30435b2a271f1f1a1a1c1b1f202320221e233e362523191d2539 +3f3e3b2c201b1e22262c33282e422b74867075bd984b6e816971913d813d +2d3b829162502e34302e313c935b282122202024262c1b66ac2a45243544 +b6814442453a50b3762366100b95c64e4673effff0b645382b2f281d3335 +35393c3f454b545843252f4135323d34353b3e3f404b5862b49753697a49 +66734f495f6e596a746b98a4826c85b0a7a582a7b2b2b6a5bac6b5c77775 +978482857f8a75787d7a707785a7d8dafbecf5f4fcf1fbfbfaa3d399a8cf +edece8c4d2c3c4cddaffd39bfffcfbffffd2d2fffffdfef8d1cdfffefcff +e0dcfffff5f9ffd0fafffffafffff9fffcfdfffefffffffcfefffbffffff +fff1fffbfcfef6fffffffcfffdfffffffff8fbfefefefff9ffffce8fc8d6 +ccd6c2bec3c5cdc4bfb1c6dcf4ca9e8fa7f1ffe3b79387b3f2fffffffbf1 +e1d1c5bdb7b0cdd3dbe5eceff1f2f3f2f2f5fcffffffffffffffffffffff +fffff9f1e2cfbcaebac8e1fffffffff4d3bca787a1e4fffffffdf8feffff +ffe9eef8f9fff9f6070707080a0b0b0c0f11131616191c1f1b1b1c1d1d1e +1d1d1e1f20201f1f202120201f1d1f21211e1f1e1e36301b251e23222222 +21212223191d1f20231f1c2125282a292522222325202b1f202c1e21201d +20222022241f232424252524232227252322232322212324252525242322 +2020201f1e21262b252627282726242326272827262424252222201e2227 +28252226272625272623272526292925222226272a2d2b28272a28272927 +2326292628303a272820272021272a29282b2d2d29292929292928282d32 +3e40332c313632312f2f3030302f2d2f3335322f31363936333131343a41 +32393b3b3d3a363832393e3b3534383d383a3c3b3024222721211f1f2122 +201e1f1f1f1f283e5b323834342f2f313034353833353136514b3a3c323b +485e67686556453e3c3b3d4148393a46296c7a646cb69146697c646e8f3b +7d37263681956c5f444a4641404ba66e392e2d2723232125125a9f1d381b +2f3faa763f444a3c49a76b1c630a0082b139315fddfde1ab3e352e393630 +4847404243484c545b614a2e364a3c3b443d40464947464d5960b0945066 +7746636d473f55644f606b64919f7d6a84b2a9a77fa8bbc2cab8c5cdbacc +7d7995796c6e6f7e696b6d6a6069779acfd3f7eaf3f5fff9ffffffabd594 +9dbedad9d6b4c6bbbecad6fbc28ffffffffff2c2cefffffefff8c1bafcfb +ffffd2c8fcfdfbfdf9c2ecfefff3fdfffafffefffffefffffdf8fcfff9ff +fffffff4fffffffff9fffffff8fff9fbfefffff6fcfffffcfcf3fefcae6b +a5b5aebcaba7acacb1a69d8da0b4c9a0776881cbe5c197736793d1f4f3e8 +e4ddd0c1b6b0aaa7c3cbd6e0e7eaecedebebe8edf2f9fcfefbfcfcfefeff +fffffcf8f2e9dac6b1a2abb8d0ebfdfcecddbba48f6f89cce8f8e9e5e0e6 +e9eaedd1d6e0e1e8e1de040404050405050407080a0a0d0d10110f0d0e0f +0f100f0d100f10100f0f10111011100e1012120f100f0f27210c160d110e +1010111114150c100f10120e090e1417191814111112140f1a0e0f1b0d10 +0f0c0f110f11130e12131314141312111715131213131211131415151514 +13121010100f0e11161b151617181716141316171817161414151212100e +121718151216171615171613171516191915121216171a1d1b18171a1817 +19171316191619212b181911181112181b1a191c1e1e1a1a1a1a1a1a1919 +1c212d2f221b202523222020212122211f21252724212328292623212124 +2a3122292b2b2d2a262821282c292322262b26272e2c2216151a12110f0f +1213121110100f0e1328411a2523231e1e201f21222520221e233e382727 +1c212a3d4444413224202225293037292c381c5f6c545ba47f335669515b +7a24641d0a19657a53482d35312d2d38935b271c1c1510110e13014a8f0d +280a1f2c9460292e34262f8f550952000071a0261c47c5e6ce992c221921 +1f1c37372f2f31353a41494e381b24372a28322a2f363938383f4b53a485 +41576835545f3a354b5843545c547f8c6a556f9c93916e98a6a8ae9aa7ae +9cae615e7e675e5e586451585d5b535e6e92c6c9ecdee6e7efe4ededeb93 +bd7e89aecbcbc8a7baaeaeb9caeeb279e8ecf3f3e1a9abe2edf0efde9d99 +f0f6f4e7aba5ecf6f1ecda9fd2eaeae0edf1ecf3f1f2f4f2f4f4f1eceff3 +ecf1f0ededdfedeaebede4edeeefecf3edeff2f1f0e7ecefefedede5f3ec +954b85928a97827e83848a8078697c91a67a50415aa4bf9b714d416daed1 +d2c9c5c2b6aaa3a0a1a0c1c8d3dde4e7e9e7e0dbdce0e8eef3f4f2f2f5f4 +f4f3f3f3f2eee8decdb59f8c949eb6d0dfddcdbd99826d4d67aac6d6c7c3 +bec4c7c8cbafb4bebfc6bfbc1515161718191a1b1c1e2021212123252727 +272829292a2a292a2b2a2929292a2d2d2c2a2a2c2b2933242d635b292a2c +2e2c2b2b2a2a2b2b2b2a26282e2d292d2b2f33312c2a2c30322f3c2d2d3b +2c2c2a272a2d2b2c2d282a2b2d2f30313131343230303131302e33312f2d +2d2f31323331323535323031373433353939343035353433313233353536 +34323438373233343434383d3d39393535393b38383a3f3b383737363639 +3b36373a3a4045433e4a5d42473a473c40454743404243423e3e3e3f4041 +403f4242484a44444a4c42444543403f44474644464b4c48494e4a4a4c4e +4c4a4b4e4c50504f504b464a484e514f535954495855544d3e2f292d2d2b +2726262729282b2a2d2832455630242225242d22282e2622291b2d1c3c20 +1f1520313d3c432a1712101a22201c1b1d27181512553b0d181309061308 +1c260506110b0f1e1e0a081710191c2426273f5e76576f4e4145455b476c +9b989798998872c2adb5acadbf73c5c8dfbfdcaf88e8a57279b597a5eee7 +f4ebe4f1f5ecf7fbfefffffffffffffffffffffffffbfbfcfcfbffffffff +fefffffffffffffffffffffefffffffffffffffff7fffffffffff8fbf2fc +fcffffe5e4eee4faf7f6f1feeaede8edfffafffffffff2fffffefafef3fc +f9fefffcfffffffffffffffffffaffffcfe2fffbf5fcffd2f9fffbfff5ff +bee0fff6fafdc7f2fffff9ffffcbfffffffffffff4fff5fef9f9f9ffffff +fdfffffdfefff9fffdfdf9fffbfbfffdfffdfefffcfffffffffefeffffff +ffffc3a0d6d2cac3cacdc7c4c6c7bcb1d4ce9e94adf2ffe2a490a6d9ffff +e5c5bcbec3d1e4f4fffffffffffffffffffffffffffffcf9f7f2eae1ddd8 +d1c9c0b8b8bbbec6d1dbe6f4fffffffffffff2d5b7a28f94c2deeff6e9fa +edf4fdffe0e9fff0f5f9e5f1edf20707080a0b0c0d0e0f12141515151719 +1b1b1b1c1d1d1e1e1d1e1f1e1d1d1d1e1d1d1c1a1a1c1b1923141d534b19 +1a1f212120201e1e1f1f1d1c191b21201c201e2226241f1d1f2325222f20 +202e1f1f1d1a1d201e1f201b1d1e202223242424242220202121201e2321 +1f1d1d1f2122232122252522202127242325292924202525242321222325 +252624222428272223242424282d2d29292525292b28282a2e2a27262625 +25282a252629292f34322b374a2f342734292d3234302d2f302f2b2b2b2c +2d2e2d2c2f2f3537313137392f3132302d2c2e31302e3035353132373333 +3537353334373539393839342f3333393a383c423d3241403e3a2c1d191d +1d1b1a1a1d1e1d1c1b1a1d1b2a415634303032323a30353d332f36283a29 +492d2d2633495a5b654c39312d33342d272629331e150c4b2f010c0c0201 +0e03172102040b0508191a0d0d201d2829302f304a697f5e735140424054 +3e608f8d8c8d907d60b0a1aea9a8b162b5bbd6b6c99a78d996646ba68b9a +e7e4f6f0edfefff9f9f9fcfefffffffefefffffffdfefefcffffffffffff +fdfef8fffcfffefefffefefefef6fdfdfafef9fefafff0fffefff7fffbff +ffffffffffe2e3edddeadcdbe1f3dee1dbdffcedf2fbfefff0fffffffcff +f7fffffffff9fafdfcfafcfdf8fffff7fffcbed3fffffbfcfcc2f5fff9ff +fcffacccfdf5ffffb8dcfbf8fcfff3b7f1fafbfafcfef4fff8fffafbf6ff +fbfffbfdfffbfcfff8fffffffbfffdfafffbfffafafef5fcfefffffefeff +fffbfdf2a37cb2b1aca9b1b6b0adaaa99c8faea87b7187cce1b879657eb5 +e8ebcbafa8acb3c0d4e5f2fcfdfdfbfdfefefdfbfcfdf8f3efeceae5ddd6 +d2cdc6beb6afb0b3b6bcc7d2dae7f5fdfcfdf8eedbbe9e8a777caac6d7de +d1e2d5dce5efc8d1e9d8dde1cdd9d5da0404050405040505060608090907 +090b0d0b0d0e0f0f0e0e0d0e0f0e0d0d0d0e0e0e0d0b0b0d0c0a14050e44 +3c0a0b0e100d0e0e0e0e1111100f090b100f090d0d1115130e0c0e121411 +1e0f0f1d0e0e0c090c0f0d0e0f0a0c0d0f1112131313141210101111100e +13110f0d0d0f111213111215151210111714131519191410151514131112 +1315151614121418171213141414181d1d19191515191b18181a1e1a1716 +161515181a151619191f24221c283b202518251a1e2325211e2021201c1c +1c1d1e1f1e1d1e1e242620202628202223211e1d20232220222727232429 +23232527252324272529292829241f23222828262a302b202f2d302b1e0f +0c100e0c0a0a0e0f0f0e0c0b0d0a15283c1b1c1f2121291f232a211d2416 +2817371c1e141f313e3b4229160f0e161e1b17181d251209003f23000000 +00000000040e0000000000000000000b0915171c1c1d39586e4c62402e31 +2d422d507f7b7a7b816b4a988b9b969497489ea8c7a7b88561c27f4a518f +7586d4d1e1dcdaecf4e8ebeaedeff1f1f0efeff1f1f0eeefefecf1f4f2f1 +f4f4f1f2ecf3eef1f0f0f1f2f3f3f3ebf3f1ebefe9ece7ecddeae8ecebf3 +eaefe5eae2e4e3c3c4cec1d1c9c6c7d7c6cbcad2f1e5ecf5f6f6e4f3f3f0 +eef1e6efecedede6e9edededeff1ebf1f1e8f3edacbce7ecedf0eca9d2e3 +eaf6ecea88abf3f1f4e791b7ecf2f3f1d394d8e7e9e8ecf1e8f6edf6f2f0 +edf6f3f4eff1f3eeedefe4edeaeae6ede8e6efecf3f1f1f6edf4f3f4f3f2 +f2f4f4f2f4e48a5c908e8884898d87848383766a8a83534960a5ba925642 +5b91c3c5a688838892a4bacedfecf1f3f4f6f8f8f7f6f7f6f0eae6e4e2df +d7d0ccc7c0b8ada6a5a8abb0bbc3cad6e2e6e4e3ddd1bc9e7f68555a88a4 +b5bcafc0b3bac3cda6afc7b6bbbfabb7b3b819191a1e2020202024232528 +27242427292e312d2928292a2a2b2c2b292828282b2b2c2b2b2b2c2d2d28 +272e33322d292929292828292d3128292b2e31302d2a2d2f31302d2c2d2f +2d323e4238312e293030302f303031312e2e2f313232302f33343432302f +2f30333231303031333435333335343132363432343b3b35333630393a34 +3638383937383a3a3938383936333337373539413b363436393a38383232 +33373b3e3d3b3e3b3b3d3e3c3c3d423d3d41423f40464342464d4c444144 +3f433f3e45413f4a4544434244484a4a4247473f3c4045444a41444b4f4e +4d4741524b4451484a564f4f47464f4d4a545b4c4b444d4750544f515047 +3a302b2a2c2c2c2d2b2a2a272c2f3031233b520e1012181c1f1f1f1d2125 +2c36414d565b5d6f767170766a555855555e707a7d786f818f9bc2efedcc +c0c5cac5c1cce8fffcfcfcfcfcfdfdfafcfcfdfefefdfdfcfcffffffffff +ffffffffffe2bfffffffffffa4ffffffffffffb4ffffffffffdeb4ffffff +ffffc6cffffffffffdfcf9fafffffffffffffffffffffffffffffffffefd +fdfcfefffffffffffffffffffffffefdfffffffffdfffff6cda186abd6ff +fffff8fffafffff2ddd6d5d3d0dae6dcd8dad8d2def8fffffffffffffffd +fdfdfdfdfdfdfcfcfffffffffffffffffffffaffffffcbc8f5fefaffffda +aeebfff9fefbaad1fffffcf8c092f3fff0fff3ddacbffffffcfffff8f6fe +f4fdfffffffffffff7fcfffffbf3c5dff1fcfffffffcfffdffffbda7affa +fff9f9fae7fffff39cc3cdd0d4c8c7ccccbcc9cabbb4ae9daeddfadca08b +b9f7fff6bc999dbfe8f9fffffffffdf3e7e0d1cdd2cec0c0c4c0c5c8ced7 +ced9d7ecf3eef6fffffffffffffffffffffffffff6daaeaa92899db8d9f3 +fae4e6eae7ecedeae6d4d2ded4cbd8dae2eff8f90c0c0d11131313131717 +191c1b18181b1d2325211d1c1d1e1e1f201f1d1c1c1c1b1b1c1b1b1b1c1d +1d18171e23221d1c1c1e1e1d1c1d21251a1b1e212423201d20222423201f +2022202531352b24211c2323232223232424212122242525232223242422 +201f1f20232221202021232425232325242122262422242b2b2523262029 +2a242628282927282a2a2928282926232327272529312b262426292a2828 +20202125292c2b292c29292b2c2a2a2b2f2a2a2e2f2c2d33302f333a3931 +2e312d312d2c34302e3934333231333739392f34342c292d2f2e342b2e35 +383736302a3b342d3a31333f3838302f3836333d4637342d3630393d383c +3a34281e1b1a1a1c1e2122211e1b1c1f20241835500e13171b2122242222 +24282f3946525a5f6175817f828a826d6d68656a747b7b7875878f97bae3 +dfc0b4bec3c0bcc7e1f8f7f5f6f4f5f6f7f8feffffffffffffffffffffff +fffffffdffffffdab7fffcfffdf990f8f7fffefff3a1f3fcfcfdfbcaa8fe +fffef9ffbbc7fefdfdfdfffffffefefefefdfcfcfdfefcfcfcfcfcfcfcfd +fefffdfcfcfbfbfbfbfbfbfbfbfbfbfcfafbfbfafafbf4fdfde6bd92779c +c7f6f8fcf5fffefffce9cfcbcfcdc6cacbc1c9d1cec7d3ecfbfcfbfcfdfc +fdfefefefefefefefefffdfdfcfcfbfafbfcfcfcf6fffff5b6b6f3fffdfd +f3caaaeafff9fffb98bcfdfffffaae7adefbf1ffe3c79bb1fefff8fffffb +fafff6fffffff9fffffff5fafffffaf0c3ddecfafdfffefbfff9fefab29c +a6f6fff9faf8e1fcfcdd7a9fa9afb6aeadb4b4a4adac9b92887a8dbcd7b5 +755d8bc9e9cd9a7f8ab2e1f1fffefaf7f1e8dbd4c8c3c6c2b4b2b6b0b4b6 +bcc4bbc8c6dbe2dde5f2f7fafcfcf9fcfcfdfafaf9ede1c59591786f839e +c1dce3cdcfd3d0d5d6d3cfbdbbc7bdb4c1c3cbd8e1e20606070b0d0b0b0a +0e0b0d0e0d08080b0d1115110d0c0d0e0e0f100f0d0c0c0c0c0c0d0c0c0c +0d0e0e09080f14130e0b0b0a0c0b0c0d13170d0e0e1113120d0a0f111312 +0f0e0f110f1420241a13100b121212111212131310101113141412111314 +1412100f0f10131211101011131415131315141112161412141b1b151316 +10191a141618181917181a1a191818191714141818161a221c1715171a1b +1919121213171b1e1d1b1e1b1b1d1e1c1c1d211c1c20211e1f252221252c +2b2320231f231f1e24201e292423201f212527272025251d1a1e2120261d +20272a2928221a2b241d2a21232f2828201f2826232d3526221b241e272b +26292c251a100e0d0c0d11131312100d0d101013041d37000003080d0f10 +0f0e11151c26323e495053677068686e624b4c4a4a52636d6f6e697b858c +afd7d4b2a4acb1ada9b4cfe6e4e3e0dddbdadddfe8ecf0f1f1f0edececf1 +f0efefefefedededecc7a4ece9eceee877dde2eceeecd983d9e7f0efe8b2 +8ee2e6e5e0e6a5b0e7eaeceef1f2f1efeff0f0efeeeeeff0eeeeeeeeeeee +eeeef2f2f1f0f0f0efeff0f0f0f0f0f0f0f0efeff0eeefefe5efedd6ad7f +6487b2e3f0f4e6efe7e8dfccb2ababa9a3a9aea6aab2b3b1c1def2f3f4f6 +f4f3f1f0eeeef0f0f0f0f0eeeeececececeeeef0f0f0eaf1f1e5a19edaed +f2f2e0b087cbf3f1f4e3749df4fbf6e28654cdf2e9f1c2a27d96e4e6dfeb +ece8e9f1e8eff1efe9f1f3f3e8edf0ede6ddaec8d8e5eaedeae9f3f0f6f3 +ac969debf4edecebd5f2f3cf5f7d878c9289888e8e7e8686746c63546493 +af8e523b6aa8caad775a6288b5cadde1dfdfdbd4cbc6b9b7bab6a6a5a9a3 +aaacb2bdb4c1bfd4dbd6ddeaedefefefe9ececeae8e6e3d4c6a87772574c +607b9fbac1abadb1aeb3b4b1ad9b99a59b929fa1abb8c1c2202021242727 +2626272627292824242625292b29292a2c2c2a2b2c2c2c2b2c2d30323232 +31313233322d2b2f32312f2d28282929292a2b2c2a2a2a2c2e2e2d2b2c2d +2e2d2a2a2d302a2c34362f2c2e2b2d2d2d2e2f2f303033312f2f2f313131 +333434343332333434343333333435363331333535333538353233373731 +30333a3d3f3c38363330343536363536373836383836373a3d3e43413f3f +3e3a3838393939383738393a3c3b3b3c3b39393b3c38393e403c3d414340 +4245443f3e433e42403e414141453c4043454644423f444a4a4440424442 +47444a4c4744494a49513d4c44444e4146484a5056524f514a4c524f514e +4f4d484b4c43372e2a2b342f2827282a2c2b282d2c26226ee9e2e9edf3fa +fffffffffffffffffffffffffbfffffdfcfbf9f4fbfafbfdfffffffffefc +fdfffffffffffffffffffffffffffffffffffffffffffefcfcfdfdfdfdfd +fffff9fdfdf5fdfffefdffc0c1fffdfbffff84fffffffff5f5a5fffff8ff +ffcfb2ffffffffffc0d2fffffffffffefefdffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffafdfffffffffe7c4c +7441534c305bb4fffffffff9f4dbdbd7d6d9dbdfe6e4e0d6dae8feffffff +fffffffefefdfcfdfffffffffffffffffffffffffffffefefffaffffbc89 +c2fff9fff6cf7badf8fffff9a09efff6fcf5d282c7fffffff0fc98bcffff +fffffefafdfff8fffafffdfbfdfffffffffeffa9084d9cfbfffffffffbff +fbff772737f5ffffffffffffeac68dc9dacfcbcacbc7c4cdcfc9c1a7b3d1 +efce9987bbffffe59a8c9cdefffffbf9dcd9d1c8c6cedde9ffffffffffff +fffffffffffffffffffffffffffffffcf7f2e9ded1c3baaa9484818a8cb7 +d8f8fffcebe1e8f0f0ebecf4ebebeff1f3fef2effdfaf5f2f3f613131417 +1a1a191a1b1a1b1d1c18181a1a1e201e1d1e20201e1f2020201f20212322 +222221212223221d1b1f22211f201d1d1e1e1d1e1f201c1c1d1f2121201e +1f2021201d1d20231d1f2729221f211e2020202122222323262422222224 +242423242424232223242424232323242526232123252523252825222327 +272120232a2d2f2c28262320242526262526272826282826272a2d2e3331 +2f2f2e2a282827272726252627282a29292a292727292925262b2d292a2e +302d2f32312c2b302c302e2c303030342b2f32343533312e313737312d2f +2e2c312e3436302d3233323a26352d2d372a2f3133393f3b383a35373b38 +3a37383631363630251c1a1b221f1a1b1f21201f1b1d1c191768e5e0e4e8 +eef5fbfffffffffffffffffffefef7fefffffffffffffffffffffffefcfd +fefefbfbfdfdfcf8fafefffffefbf9f9fbfafbfbfcfcfdfdf9f9fafbfbfc +fafafffcf4f7f6eef6f9f7f6fcb9bafdf8f6fbfb73f0fefefceee795fcfa +f0f8f9bfabfffbfcfdffb9cbfefcfbfafbfcfcfbfcfbfbfbfbfbfbfcfcfc +fcfcfcfcfcfcfefdfdfbfbfbfbfbfbfbfbfbfbfbfbfcfffafdfefcfafdf1 +6b395f2c3e361a46a0f3fefcfef5e8cccbc9cdd2cfcdccccd3d0d0e0f6ff +fef7fcfdfdfefffefffefefdfdfefefefefefdfdfdfdfefefefffff4fafd +a675befffbffe5be75acf6fffff78d89f4f2fff5c36cb4fbffffe0e687ae +fcfffafffffdfffffafff8fdf7f5f7fffffffefbffa4014594f3fffcfeff +f9fff3fc69192bedfcfffffdfffcdab06ba5b8aeafb0b3afacb5b5aba185 +8daeccab736090d2d9b871687ec6f9faf8f6d4cec6bcbac2d1dcf5f1fdfc +fcf9fbf5fbfafaf3faf8fbf3fbf8fbfbf8e9e6e1d7ccbfb1a6947c6c6771 +719abbdce6e0d3cad1d9d9d4d5ddd4d4d8dadce7dbd8e6e3dedbdcdf0d0b +0e0f1211100e0f0c0d0f0c08080a080c0e0c0d0e10100e0f1010100f1011 +1313131312121314130e0c10131210100b090c0c0d0e11120f0f0d0f1010 +0d0b0e0f100f0c0c0f120c0e1618110e100d0f0f0f101111121215131111 +111313131314141413121314141413131314151613111315151315181512 +1317171110131a1d1f1c18161310141516161516171817191917181b1e1f +242220201f1b1919191919181718191a1c1b1b1c1b19191b1b17181d1f1b +1c20221f2124231e1d221e22201e202020241b1f202223211f1c22282822 +1e20201e23202628221f2425222a16251d1d271a1f2123292f2b282a2426 +2926282526241f232821170e0d0e14100d0d101212110b0e0c060150cac7 +ced4dae1e7ebececececececebeaebedebf2f1eeeceae8e3e8e6e6e9eff1 +f4f4f2f1eeeff3f1efeaeaecededebe8e7e7ebe9e8e4e2e0e3e5e5e6ebec +eceae7e7ece9e1e7e6dee6e9e5e4e9a6a7e9e2e2ebe957d2e6ebecdbca74 +dfe4e3ebe5a58ee0e0e4e5e89fb1e4e7ebeef0f0efecedededededededee +eeeeeeeeeeeeeef0f1f1f1f0f0f0efeff0f0f0f0f0f0f0f0f5f0f1f2f0ed +efe15b284e192b21053597ecf1ebe9daceafaaa6a6a8a9a7abaab3b0b5c9 +e3eff3eef4f4f4f2f1eeeceef1f2f2f2f1f1f1eff1f1f1f1f1f1f2f1f3e6 +eaea8e5ca5edf0f4d1a2518deafaf4e06c6ceceff4db9c47a3f3f6eebfc1 +6993e2e5e4ecedecf1f4edf2ebeee9e7ebf3f3f1ede8ed90003281e0ede9 +ebefeaf3e8f360101fe0edefefeaedeaca9b4f83958b8a8b8d89868f9085 +7b5f6888a4834c396db1b89951465aa0d0cfcbcdb0b0aaa2a2acbbc9e2de +eaeae8e5e8e2eaecece5edebede5edeaecece7d8d2cdc1b6a9998e7c6452 +4c53537a99b7c1bbafa8afb7b7b2b3bbb2b2b6b8bac5b9b6c4c1bebbbcbf +2828292a2c2d2c2b2d2c2d2d2b2828292b2c2c2c2f3334322c2d2e2e2d2d +2e2f2d2d2d2c2c2c2d2d302c29292a2a2a2c2a2a2a2b2c2c2b292f2d2b2b +2c2d2e2e2b2c2c2a28292c2f323032332e3034332e2f2f30302f2f2e302f +2e2e2f31313132333332313031322f303030313232323131323434333336 +35313134343131342f282d332f313631303131313131333534383833353c +3c37393a3b3c3a3737393637373534363b3f3a3a3b3b3936363a46434448 +484342443f3c3b3c3c393c41404244413e4246413f40434445474a4d4a50 +524d4a49494549414047484d4e4a4c5050cb7f5641584d4a4d504d4d504f +465154514a5252525154554b3d3432353b342c2a2c30302f2d2f322f2774 +fffff9faf9f9f9f7f6f5f7f6f6f4f5f6f7f8fbf4f0f1f2f1f0f5f5f6f9fa +fafbfcfbfbf4f6fafaf4f8fffef8f6f9fefffbf6fafbfcfcfdfdfdfdfcfd +fdfdfdfdfcfdf8fffffff0dff3ffffffffa2cefffff9f9ff94fffffcf4ff +f18cfffff7fdffcd9efffffffffda2a4fffffffffffffffffefbfbfbfcfc +fcfbfcfcfcfcfcfcfcfefffffffffffffffffffffffffffffffffbfefff7 +ffffff9a3a5a66706a6d5e5946a9fffcfff6e0d9ddded9d9d7d3dbe7dae0 +f1fffffffffffffffffefefdfdfefffffffffffffffffffffffffefefeff +ffffffffd2ccf5fef9ffddde97dbfffff8fea7a2fffeffe4dd88c6ffffff +e3ef92c9fffffffffffffff8fdfffcffffffffffffe8ecf4dfd3446e73ff +fffffeffffffffffa45b4b8cffffeafffeefdaca98d0ddcec7cbcec5c9c7 +cacbc8bbdbdaae94b3f0f5cda17fb7effffff2dbd6c9e2f0ffffffffffff +fffffffffff7f3e5d4d7cecaccb6baa49e938f82847b878d847f8b8991a7 +bddde5f5efefe8f0f2ebe6eaf4f0dfeaf4e6f4f1eff6f0f6e6e9e9f2f8f8 +f6f61b1b1c1d1f21201f212021211f1c1c1d202121212428282620212222 +212122231f1f1f1e1e1e1f1f221e1b1b1c1c1c1f1f1f1f2020201f1d211f +1e1e1f2021211e1f1f1d1b1c1f2225232526212327262122222323222221 +232221212224242422232322212021221f20202021222222212122242423 +232625212124242121241f181d231f212621202121212121232524282823 +252c2c27292a2b2c2a272729242525232224292d28282929272424283330 +313535302f312c2928292926292e2e30322f2c3035302e2f32333436393c +373d3f3a3736332f332b2a3131363733353939b4683f2a41363336393636 +3938313c3d3a333b3b3b3a3f3f382b22222529241e1e23272723201f2222 +1c6cfff9eeeeeeeeeeecebeaecebebecedeeeff0f1eceaeef1f1f3f8f5f6 +f4f2eeebebedf8f2f0f3eee6ebf5f2f1eff4f7f8f3edf1f2f3f4f5f6f5f5 +f5f6f5f5f6f6f7f6f0f7f9f9e7d6eafef9f8ff9dc9fffff8f7ff89f9fafb +f5ffeb82fffff8fbffc49bfffffbfbf79b9dfdfaf8f7f7f9f9f9fdfcfcfc +fdfdfdfcfdfdfdfdfdfdfdfcfdfcfbfafafafbfbfcfcfcfcfcfcfcfcfdff +fff7fbfef98a27454f574f51423e2e96fdf7ffefd0c6c9ccd0d2cec4c3d0 +cfdbeafafffffdfcfefefefefffffffffefdfdfefefefeffffffffffffff +fffffefefef7bdb8effff9ffcbce92dbfffcf9fa978efcfbffe4cf74b5f9 +fffad3db80b9fbf9f8fffcfefff7fcfff9fefefef8fbfbe5e7efd8c8375f +64fdfefdf9fffffbfef6934a3c81f9fde9fff7e1c9b077aebcb0adb3b6af +b3afb0ada899b5b4846a88c5cda57a5c99d5fcfde4d2cfc1d8e2f2fefefe +fdfafdf6fcf4efdfd9cbbabdb4b0b49ea28c867b7a6d6f6672786c677371 +778da2c2cad8d2d1cad2d4cfced3ddd9c8d3ddcfdddad8dfd9dfcfd2d5de +e4e4e2e21312141416151411131213110f0c0c0d0e0f0f0f121618161011 +121211111415121212111111121215110e0e0f0f0f0f0d0b0d0e1010110f +14120e0e0e0f0e0e0d0e0e0c0a0b0e111412141510121615101111121211 +1110121110101113131312131312111011120f1010101112121211111214 +1413131615111114141111140f080d130f11161110111111111113151519 +1914161d1d181a1b1c1d1b18181a1617171514161b1f1a1a1b1b1916161a +25222327272221231e1b1a1b1b181b20202224211e2225201e1f22232426 +272a282e302b28272521251d1c2323282925252929a4582f1a3126232629 +26262928202b2b2821292929282c31291d1415181d171110141818151010 +120f0655e6dfd8d8d8d8d8d6d5d4d8d7d7d7d8d9dadde5dfdadbdcd9d8db +d9dcdedfdedee1e4e9e3e2e3e0d9dbe5e2dfdce0e4e5e0dce2e3e2dfdedc +dee0e2e4e8e8e6e6e4e3dde5e7e9d6c5d9ede7e6ed8ab5ece9e3e8ec69d6 +e0e6e5edc95ee1e8eaeee8a57ae2e6e5e5df8181e2e4e9edeeeeece9ebea +eaeaebebedecededededefefefeff0f0efeeeeeeefeff0f0f0f0f0f0f0f0 +f2f6f4ebeff1eb7b18343d433a3b2c2b248ff1e4ead3b6a8a8a8a7a6a59b +9faeafbdd0e4edf1f1f1f5f5f5f2f1efedeff2f3f3f3f3f3f3f2f3f3f3f3 +f3f3f5f3f3f1ede1a29dd5ebeff3b5ad6ab9f4f7ebe17673f3f4f1c8a851 +a3f0f3e6b2ba6aa9eeedeff6f7fafdf5fafbf4f8f8f6edebebd2d4dbc5b4 +244c51eaeceae6edece5eae38138296de1e4cde3dbc6af95588b998c8a8f +928a8e898b878274908f5e4465a2aa82593c77b2d8d7bda9a59ab5c5d5e3 +e3e4e3e1e4dee3dcd5c3beb0a1a49b979c868a746e635f5252495359504d +59555c7287a5adbab2afa6acaea8aab1bbb7a6b1bbadbbb8b6bdb7bdadb0 +b2bbc1c1c1c12a2b2b2b2d2e2e2b2f2f2f2f2d2b2a2b31302d2d31363430 +2f2f2f2e2d2d2d2e302f2e2e2f3030303332302f2e2e2f312e2d2c2d2f30 +2e2c32312f2e2e2f30313030302f2d2d2e30332e2e2e2b2d312e35363635 +34312f2d2b2c30333637353335353432302f2f302f303132333333333536 +3737353433343936353738383a3e4836363a313239323333333231323436 +383a39383b403f3a373637393938393c393a3a3a3b3e424642434545423f +41454240414444414143464444464645484c4d4d534f484f554a44454646 +46484f554c5153514e4e4d4a4546484e464c4f524a4f4b5c42495f47524c +5051494b514e4f5753564c58585d585a594c3b303034302e2d2c2d2e2b2a +312a2e332a73ffe6fcfcfcfaf9f9f8f8fbfbfafafbfdfffffdf7f4f9f9f6 +f6faf5f8fcfcfcfcfdfcf5f3f6f7fcfffffefdfbf7f6f7f9fdfffcfbfcfe +fdfefdfefefefefdfefefefffffffbfffff7fafefffdf76caef7fbfffeff +4bddfffaf8e8ed65eefff6f3ffc874f9fffaffffa899ffffffffffffffff +fcfbfafbfcfdfcfbfbfbfbfbfbfbfbfcfeffffffffffffffffffffffffff +fffff8fefff6ffffff4d6f6e6eb0c2ca685c5353fffff8f3e0e5e6dfcece +dde1e0e2e0f6fffffdfdfffffffffffffefdfdfefffffffffffffffffffe +fefdfdfdfdfffdfffff1d5d5fcfcffffd3e298f9fcfffffb9dbefffcfed9 +dd86e5ffffffe6f3a4e4fffffffffefffff9fffffbfffeffffffffa9c4eb +c5e13b6259fafff3f2e9dbddfe785d575473e5cb9dfff4cccbc5bfd4d1cf +cfcaccc9cdc3c8d3c6a6b99ca2edffcf9982acf7ffffe4d2d6ebffffffff +fff6ebdac5b9ac9f91887e82868b8e8b8492858593a9adb5cbd3e4d4d4d1 +e7e2f9f9fcffe8eae6e7e7eeece9e8eaece9eaf6e6e2e5e5eff0f2fcf5fd +ecefe7f2f7f2f0f51e1f1f1f2122221f23232323211f1e1f26252222262b +282423232322212121222221202021222222252422212020212423222122 +2324222024232221212223242323232220202123262121211e2024212829 +2928272422201e1f2326292a282625252422201f1f201f20212223232323 +25262727252423242926252728282a2e3826262a21222922232323222122 +2426282a29282b302f2a272627292928292c27282828292c303430313333 +302d2f332f2d2e31312e2e3033313133333235393b3b413d363d44393334 +353535373e44393e403e3b3b37342f3032382f35383b333834452b324830 +3b35393a32343a373a423c3f3541414641454339291e20241e1c1d202425 +221e241a1e241e6cfbdfedececebeaeae9e9ececeeeeeff1f3f3f1ebebf1 +f3f0f0f4eff0f1efeceaebeff0f0efeef1f3f3f3f4f4f2f1f0f2f5f5f0f2 +f3f6f7f8f7f6f6f5f5f4f5f5f7f7f7f4eef7f6ebf1f5fef6f267a9f5f9ff +ffff45d8fffcfcebe960eafffaf5fbc371f8fef5faffa192fefaf7f6f8f8 +f9fafdfefdfefffffffefefefefefdfdfdfdfcfbfafafafafbfbfcfcfcfc +fcfcfcfdfafffff7fcfff43d5c575595a3ac483d393ffdfff0e9cccecfcd +c5c6d5d5cccfd7f2fffff7fafdfffefefffffffffffffefefefdfdfefeff +fffffffffffffffff9f9fce5c0c2f6fdfff8c3d295faf9fdfff48dadf6f8 +ffd8d176d5f8fcffd7e095d7fdf6f8fdf9fefef5fcfdf6faf7fdf8feffa2 +bde5bad22a4f46e7f4e8ede4d7d6ef6647413f65dec89affe9bcb4aba1b3 +b3b3b7b4b6b3b7adaeb5a584937476bfd6a773608eddf6eed2c3c7ddf8fc +fef8eee5dac9b4a5978a7a6f6365696e71716a786a6c7890949cb3bcccbe +bcb9cfc7dedee1e4caccc9cac8d0cecbcaced4d2d3dfcfcbceced8d9dbe5 +dee6d5d8d3dee3dedce1121313131514141115151313110f0e0f14131010 +14191814131313121111131415141313141515151817151413131414110e +0f10131414121716121110111011121212110f0f1012151010100d0f1310 +171818171613110f0d0e12151819171515151412100f0f100f1011121313 +131315161717151413141916151718181a1e2816161a1112191213131312 +11121416191b1a191c21201b1817181a1a191a1d191a1a1a1b1e22262223 +2525221f2125211f202323202022252323252524272b2d2d332f282f3429 +2324252525272c322a2f312f2c2c29262122242a21272a2d232824351b22 +38202b25292a22242a2729312a2d232f2f342f32352a1b10131712101012 +15161310140a0e110852e1c5d6d5d5d4d3d3d2d2d7d7d8d8d9dbdde0e1db +dadeddd8d8dad5d9dbdcdcdcdddfdddddddddfe2e2e1e3e1dedddddfe2e5 +e2e3e2e1dfdedfe1e3e4e6e5e6e4e4e4e3dedbe6e4dbe0e4ece4df5495e0 +e2ebefeb23b2e6e7edd6c638c7e5ece8e0a350dae8e1e8ea8575e1e4e9ed +efeee8e7ebebeaebecedeeedededededefefefefefefeeeeeeeeefeff0f0 +f0f0f0f0f0f0edf6f4e9edefe42d4b4541808e9431292c34edecd9ceb1af +afa99e9faeafa9afbad7e8ece7ebf2f3f5f5f3f3f2efefeff2f3f3f3f3f3 +f3f3f3f5f5f5f5f5f5f5f0eee9cda3a4dcebf6eeacb16ad8f0faf0da6c93 +edefebbaab54c5efebeab8c07ec6efeaeff5f5fbfdf4fbfaf2f4eff3e9ed +ec8faacfa6bd183e35d6e4d6dad0bebad84e322a2a4bc2a979dfc99b948a +7f908f8e938f918e92888b91825f6f50539bb3844f3d6cbad1c9ae9ca0b6 +d1d7dcd7d0c7bead988a7a6d5b514545494c515049574c4d5a71757d919a +a8999695ada9c0c0c3c7aeb0abaca9aeaaa5a4a7b0b0b1bdada9acacb6b7 +b9c3bcc4b3b6b0bbc0bbbbc0282a2928292c2c28292a2a292727272a2d2d +2a292d302e2a2f2f2f2e2d2d2e2f2d2c2b2c2e30302f2c2d2e2d2c2c2d2e +2f2d2c2d2f31313033333332323233333435353534323131322e30323031 +322e38393938363431302f3033373a3a38373a3a3937353435363737383a +3a3b3b3b3a3b3c3b393939393d3b3a3b3c3d4043523f3e4237383d363a3a +3937363638393f3c3c414443424348423d3d3e3d3d3e4644434243434241 +3d3e40413f3c3f4343424346484a4c4f43434547474444463e3f45413a41 +453a4244484b4742414347494b4a4a4a4c4a524f4a534c564f4a5b4e5857 +5b54585753535e645d5d5f575556545f595d585e5c5d5a4a382e2d322d30 +3333312f2e30342f3738277efff7f6f7f7f8f9fbfdfefffefdfcf9fafafa +fafafbfcfcfbfbf9fdfdfefefdfefdf9fbfcfdfafdfffef6fafbfcfcfbfb +fdfefefdfefefefefefffffffffffffffffffffffefffffffffcf9ffff8e +cafffaf9fffc6ee3fffff3fff76cf2fffcf9ffd275fffffbffffc2b8ffff +fffffffffffffcfafbfbfcfcfbfafafafafafafafafbfffffefefefefffe +fffffffffffffffffdf6ffffffffff5e8180e6decaffff6f544fecf6ffdd +9cb0d4e9e8d9d6d6e1edfdfffffffefffffcfffffffffffefefeffffffff +fffffffffefdfdfdfdfefeffffffffe1d8caf8fffffeb4d991f8f6ffffe3 +8ee2fffeffc6ed75faffffffdbffb4f7fffdfffffefffafafefefffffbff +fcfeffff675460ec5f586e4f5b254144514f5291a397b14979b99efeeed7 +e0a8d6d3cacfd1c7c9cac5d3cbcdc7a0bacffdcc978cb6f1ffefdedde3ff +fffff5ead6c5ae9d97989b9da7b5bad6d3e1dae5e5ebfffffefbecfffffe +f6ebf6edf3fbeae1ece0e4f3dfdeefe2e0e2e8ebf7fff2fff6f5feffffea +fffffffffffff0eaeffffffffffc1f21201f2023231f202121201e1e1e1e +22201d1c2023211d222221201f1f202121201f2022242423202122212020 +212224222122232525242525262525252626272828282725242425212325 +232425212b2c2c2b292724232223262a2d2d2b2a2a2a2927252425262727 +282a2a2b2b2b2a2b2c2b292929292d2b2a2b2c2d3033422f2e3227282d26 +2a2a2927262628292f2c2c313433323338322d2d2e2d2d2e343231303131 +302f2b2c2e2f2d2a2d31302f30333537393c30303234343131332c2d332f +282f33283133373a3631303234363837373736343c39343d353f38334437 +4140443d41403c3c474d4646484040413d484246414745484437261c1d22 +1b1e232727272524271f27291b74fff0e8e7e7e8e9ebedeef0efeeededee +eeeeefeff0f1f4f3f0eef2f2f2f2f0efeeeef6faf7f2f2f5f3ebf2f5f7f7 +f5f3f2f3f2f4f5f8fafafaf9f7f6f5f5f6f6f8f8f9f9f3f9fcf9faf3f2fc +ff87c3fff5f6fffe68defffff7fff367effffffdffce70fdfef4faffb8af +fefcfaf8f9f9fafafefdfefefffffefdfdfdfcfcfcfcfcfcfcfbfbfbfbfb +fcfcfdfdfdfdfdfdfdfdfff8fffffdf6fd4d6c6acec4aceef7533939dfee +f6d28798bdd6ded5d2d0d2dff5fffffcfbfffffcffffffffffffffffffff +fffefefefefefffffffffffffffffeffffd7c3b7f2fffffaa5cb90fcf7ff +ffd77fd2f6f6fdc3e56aeefbfcfecef5abf0fff7fafdf8fcf6f6fafafffc +f9fef1f1fef95f4c54dc483e543848183a3f4a44407b887b98386eb39af8 +e1c3c68ab8b7adb5bab3b5b6b1bdb1b1a67e94a7cf9e6c6695d7f0ddd0cf +d5effaebdfd2bfae9786808184868e9c9fb9b6c3bcc7c9cfebf6e2e1d0ec +ece4dcd3ddd6dae2cec5cfc3c7d6c2c1d2c5c3c5cbcfdbeadaf2dfdee7fb +edd3ecf2f8f7ecefd9d3dbecf8f5eee8101211101112120e0f10100f0d0d +0d0e100f0c0b1013110d1212141312121314131211121416161512131413 +12121312120e0f1013151716181816151414131316171717161413131410 +1214121314101a1b1b1a18161312111215191c1c1a191a1a191715141516 +1717181a1a1b1b1b1a1b1c1b191919191d1b1a1b1c1d2023321f1e221718 +1d161a1a191716161819201d1d222524232429231e1e1f1e1e1f26242322 +232322211d1e20211f1c1f232221222527292b2e22222426262323251e1f +25211a21251a2123272a2621202225272928282828262e2b262f27312a25 +34252f2e322b2f2e2a2a353b3434362e2f302b3630342f3533353628180e +10150f1216191b1a1616170f1716055be6d4cecececfd0d2d4d5d9d8d7d6 +d7d8d8d8dbdbdcdddddcdad8dcdcdcdcdddcdbdae0e1e1dddee2dfd7dfdf +e1e1dfdedee1e4e5e4e2e1dfe1e3e4e5e7e7e7e5e5e3e3e1dde3e8e7e9e2 +e0eaed75b0ece1e3f3e944b8e4ede8edce3dcceaf4efe6ab50e0ebe2ebea +9d90dfe3ebeef0ede7e6e9eaebebececedecececeeeeeeeeeeeeededecec +ececededeeeeeeeeeeeeeef0f2edf4f3efe7ed3d5955b6ab92d2db3b282b +ccd7dbb66c7c9eb6bbb2afaeb5c4deebedebecf3f4f2f5f5f5f3f3f1f1f1 +f3f3f3f3f5f5f5f5f5f7f7f7f7f7f7f7f8f3ecbca497daf1f8ef8ea864d9 +effbedbd60b9edebe6a2c04adeefe8e4aed38cd4e6dfe7edecf1ebebefee +efe9e4eadddeeae248353ec5362d432637052729302828637365821e5293 +77d4bea0a36894928b92989092938e988e8c83597083ad7c4a4272b4cbb9 +abaab2cbd6c8baae9d8e7766616265676f7d819996a19aa3a2a8c4cfbdbc +abc7c7bfb7adb5adb1baa9a0ada1a7b8a4a3b4a7a3a3a9aab6c5b8d2bfbe +c7dbcdb3ccd2d8d7cccfb9b3b8c9d5d2cbc5292b2b282a2e2d2927292a27 +262829282b2d2c2c2e302e2b2a2b2b2b2b2c2f302a2827282b2d2d2b2629 +2b2a2a2b2b292d2c2b2b2d2e2f2f303133333333333430313232312f2d2c +302e33363536373234353535353433323432313032343535383838373637 +393a373737383839393a3739393737383a393a39383737373839332b3038 +373a3e373a3a3938363536383b36373d3f3b3b3f473f3837393a393a413f +3d3e3f3e3b37343435373634363a3a393938393a3c3d3a3b3d3d3b383635 +3f4145433f42443e403f4043413c3c4144454646474749494548434e404c +46444c55545643563e5247484d4e4a4b4c475a524e565656545a5758564a +3a302f32323537343130333533303e3c2688ffebfcfcfcfafbfafbfbf9f7 +f8f9fbfcfffff7f8f8f7f9fdfdf9fdfcfafafbfcfbf7f5f4f7f9faf8fbff +fcf9f7fafffffffffaf9fafaf9f9f9fbfefffffffffefffffdfffffffef8 +ffffffffff98c1fffcfff7ff70eafff6fffff485fdfef0f5ffcd8effffff +ffffbbbafffffffffffffffefafcfefdfcfbfafbfdfdfdfdfdfdfdfdffff +fefefefefffffffdfffdfffdfffdfffaffffffffff647467e7ff46c0ffd8 +6856ddfffdf1dea596c0ded9ced9f5fffffffbfffffffdfffffffffefefe +fefefefefffffffffffffefdfbfdfefffffffbffffbbdfdafffaf9ff81dc +b0fffefbffc68bf2ffffffa2df6bffffffffb5ecb6fdfffdfffffefefaff +fefcfffff8daffffffe327607fe39452bb7b966b5c716c717ca4937d7f72 +839e89fffeabbcbdcfd1ced0cbc6cbc8c3d4cbc8c1c8e1e3a695b9edeee3 +dccfecfefef4e6d5c5aaa2abb7bec4c8d1d8d8e0d3dbcfd6d1e0ded5efcc +c7cfc5d3d1d1c8ccd8dad8e5dde2edded9e3dcdde5e5f4e9eae7e2dfdcdd +c4e7f0e1d3e0d6d9e0d6d7dedbd9f7f6eee1dce02022221f212524201e20 +211e1d1f201f20201f1f2123211e1d1e1d1d1d1e21221e1c1b1c1f21211f +1a1d1f1e1e1f1f1d22212020212223232223262626262627232425252422 +201f2321262928292a252728282828272625272524232527282828282827 +2627292a272727282829292a2729292727282a292a29282727272829231b +2028272a2e272a2a2928262526282b26272d2f2b2b2f372f2827292a292a +2f2d2b2c2d2c29252222232524222428272626252627292a27282a2a2825 +23222d2f33312d30322c2f2e2f32302b2b3031323333343433332f322d38 +29352f2d353e3d3f2c3f273b3031363733343530453d373f3f3f3d434043 +4037281e1f221e23272827282a2c26232d2d177efbe1eeecececebeceded +eaebecedeff1f3f5ecf1f0eceef2f1edf1f0eeeff0f1f1f0f1f0f1f2eeec +f0f9f6f4f2f5fafbf9f6f1f2f3f5f7f8f7f6f7f6f5f6f6f7f8f9f3fefdfc +f3f0fcfdf9fffa8fb8fff4fcf5ff66e1fff3ffffec7cf7fcf2f7ffc785ff +faf9f7f8b2b1fcfbfaf9fafafaf9f9fbfdfcfbfaf8f9fbfbfbfbfbfbfbfb +fcfbfbfbfbfcfdfdfdfefdfefdfefdfefffafefdfbf9fd535f51cff42ba5 +f2bd4d41cffff4e3c98b7eafd5d5cdd5eafefffef9fefffffdfffffffffe +fefefefefffffffffefefefffffffffffffffefef8fcffb4cccafefcfafd +72cfb1fffffafcb87de3fdf8ffa0da65f8f8fdfdace3b2f8fdf8fcfbf7f8 +f2f9f8f9fffef6d6f3f6f4d91d566fce79359b60815c546b62636789725c +625c739583ffee949d9cb2b7b4b8b7b4b8b5afbdb3aba0a6bbbb7b6a93cb +d1cdccc1dff1f0e1cfbda88c848d99a1a7aeb7bebec3b6beb0b8b0c2c2b9 +d3b0abb3a9b7b7b7aeb2bfc1bfccc1c4cfc0bcc6bfc0c8cad7cfd0cdc8c5 +c4c6add0d9cabcc9bfc2c9bfc0c7c4c2e3e2dacdc8cc0f11110e1014130f +0d0f100d0c0e0f0e0e0f0e0e1113110e0d0e101010111415100e0d0e1113 +13110c0f11101011110d100d0e0e11121515151616161515131412131414 +13110f0e1210151817181914161717171716151416141312141617171818 +18171617191a171717181819191a1719191717181a191a19181717171819 +130b1018171a1e171a1a1918161516181c17181e201c1c20282019181a1b +1a1b211f1d1e1f1e1b17141415171614161a1918181718191b1c191a1c1c +1a1715141f2125231f22241e1f1e1f22201b1b2022232424252525252124 +1f2a1b27211d252c2b2d1a2d15291e1f24252122231e342c252d2d2d2b31 +2e3032281a10121513171a1a1b1b1b1d16121d180265dfc6d3d2d3d2d2d2 +d3d3d3d3d4d5d9dbdddfd6d7d9d6d8dcdbd7dbdad8d9dadbd8d6d6d3d7d8 +d6d6dae4e0dedcdfe4e6e5e4e2e2e1dfdedcdee0e4e5e7e7e5e5e5e3dae3 +e2e2dddbe9ece7ede87ea7ece1eae9ed43bae6e2f3edc853d5e5e7ece5a5 +66e4e8ebeae79590dde0e9eff1ede4e3e5e9ebeae9e8e9eaececeeeeeeee +eeeeededecececedeeeeeeeeeeeeeeeeeef0f4eef2f1eee8ec414c3ab7d9 +0e87d4a0382cb5e4d7c6ae706493b8b8b1bcd4eaedeceaeff3f4f3f5f5f5 +f5f4f4f4f4f2f3f3f3f3f5f5f5f5f7f7f7f7f7f7f7f7f1f1eb98aba9e5ee +f4f45bac85e3faf8e99d60ccf1ece47ab445e7ebe5e08bc28fd8dfdbe6e8 +e7eae5ebe8e6ece5ddbbdbdfdec0043b58b966238c4f7049415549495276 +614b50455a7863dfcd747e7b90929194949097948e9b91897d8397985847 +6fa8afa8a89cbccecdc0af9b886a626b777f878d969d9da3969e91968f9e +9b91ac89868e84929292898d979997a39a9eab9c9ca6a1a2aaacb9aeafaa +a5a2a2a68db0b9aa9ca99fa2a99fa0a7a4a2c0bfb7aaa5a9292c2c282a2f +2f2b282b2b2726282a2a2b3133323030302e292a2a2a2a2b2e30312c2a2b +2d2f2e2c2a2d2d2c2d2f2f2c292a2b2c2b2b2b2b2b2d2e2f2f3031332b2b +2b2c2c2c2a2929272b2e2b2d302d303030303030303033302d2b2c2e3031 +343433333233363832313130313232333133332f2e313433343434333333 +323130313335363835303536363534333334343434353533343637322f30 +3233353734353637383838373a39393b3b3a3a3d4242403e3d3c3b3a4243 +423f3d3c3d3d3a3f403f413f3c3e423d3b3e3f3f434a4848484949474847 +455e676b464f596e604f4e3c5050514b5356504a4c4e4d4e57504e4a4f4e +5151494c4e45392f2a2a2e2e2e2b29282a2c2e29333021a0fff6f6f7f7f6 +fafafcfdfbfaf9f9f9f8fbf9f7f8f8f8fcfffffdfcfbf9f8f8f9faf8faf9 +fbfffffafcfffffdf7f5f8fbfcfafffefbfafafbfbfdfdfdfffffffffbfb +fffbeff7fffffffdfeffffb8d4fffffffffc8debfffffbfffca3fffffaff +ffd68cfefdffffffbbb4fffffffffffdfaf8fcfffffffdfbfbfdffffffff +fffffffffffffffffefffffefdfcfdfcfdfcfdfdffffffffffffff5b6253 +64cabbbbbc8a8278c2fff9fffff2ebf0f6f8f8fffffefffbfcfffff9faff +fdfdfdfdfefdfdfcfdfbfdfefffffffffefdfdfdfffffffffeffffade9d3 +fffefdff67ddbcf1fbffebc094e9fffeff7db877fffcffff90d5bbfffdfe +fffefffffffffdfaf7f6e47fd2eaed8d3f6cb4d9ca3b79585e655969716f +72746366785c7d868afc8f68a9e0ccd0d0d1cbc8cfc9c9cdcfd1b0c0b996 +afe8e1c2d6e7eefff5ecd5c1aea5b6c2cbd7e3e4dcd4cececdd0d1d4ddd6 +d4dfd1d0e9d2ddebe5e5e2ecdfeae9ead8e7f4eee8e6eef7f0e9e8d9dac9 +e0f4f3e6e5f9e6faedefeeecffffffeef3edf3f6faf9f6f5f5f622252521 +23282824212424201f21232120242625232323211b1c1c1c1c1d20222523 +21222426252321242423242626231e1f20211f1f1f1f1d1f212222232426 +1e1e1e1f1f1f1d1c1c1a1e211e20232023232323232323232623201e1f21 +2324242423232223262822212120212222232123231f1e21242324242423 +232322212021232526282520252626252423232424242425252324262722 +1f20222325272223242526262625282727292928282b2f2f2d2b2a292827 +2f302f2c2a292a2a282d2e2d2f2d2a2c312c2a2d2e2e3239353535363634 +32312f4851552f3842574938372539393a343c3f393335373637423b3733 +38373a3a32373832271d1a1a1a1c1d1f1f202123211c22211296ffece8e9 +e9eaebeef0f1efefeeeeeef0f0f1f1f3f2f1f1f4f3f0efeeeef0f2f5f6f7 +f9f6f6f8f3eef2fcfdf9f2f0f2f3f1eff5f6f8f9fafbfbfbf6f6f6f7f7f8 +f9f9fdf4e8f1fafbfcf6f5f8fbacc8fdf3f3f7f37dd9fdfaf2fded94f8fc +f5fdffc97deeebf7f6f3b0aaf8f8f8f9fafaf8f6f5f8fbfaf6f4f3f5fafa +fafafafafafafbfbfcfcfdfefefffefffefffefffefefffffdf7f8fdfc4a +4d3d4cb2a2a2a3716862b3f9eef5fcd8d3deeef6fafffef6fffbfcfffffb +fbfffefefefefefdfdfefffffffffffffffffffffffffefefcfcfbffffa8 +d9c4fdffffff5bd3bffbffffe0b186ddf5f2ff79b474f9f5fdff8ad0b8fd +f9faf8f7f7f7fafcf7f5f5f4e47bc6dae1813361a2c3ae1a583844524e61 +645e58563e4158426a7780f17b4d85bdafb8b8bab7b5bcb6b5b6b7b48f9e +93708cc6c1a6bed3defde6dcc2ad9588959fa7b3bfc2bbb3b0afaeb3b4b7 +beb7b5c0b4b4ccb5c0cecacac7d1c5d0cfd0c0cdd8d0cac8d1dad5cecdc0 +bfb0c7dcdbcecee2cfe3d6d8d7d5f2e8edd7dcd6dcdfe6e5e2e1e1e20f12 +120e101515110f12120e0d0f13100e131514131313110e0f0f0f11121517 +171412131517161412151514151717120c0b0e0f0f0f1111101211121112 +11130d0d0d0e0e0e0c0b0b090d100d0f120f121212121212121215120f0d +0e101213141413131213161812111110111212131113130f0e1114131414 +141313131211101113151618151015161615141313141515151616141517 +181310111314161814151617181818171a19191b1b1a1a1d21211f1d1c1b +1a192122211e1c1b1c1c1a1f201f211f1c1e211c1a1d1e1e222926262627 +27252423213a4347212a344739262513272728222a2d272123252425312a +25212625282820242a23190f0d0d0f10131313131214110b120c007de4d1 +cecfcfd0d4d6d8d9d9d9d8d8dadbdcdad7d6d8d7dbdee0dddcdbd8d9d8da +d9d8dad7d9dcd9d6d9e5e5e0dcdadcdedddde9e9e7e4e2e1e1e4e3e4e7e8 +e6e6e4e0e0d7ccd7e3e5e9e3e4e7ec9cb8ede2e3eee25bb5e6ebebeecc6d +d8e8eff4e6a960d5ddedece39487d7dde7eef0ebe1dde2e6ebeae6e4e6e8 +ededefefefefefefedebebebebececedeeeeeeeeeeeeeef0f3f4f3ececed +ec3638253296848384524f4a96dbd0d8e1bfbbc6d7dfe5eff1ebf3eff0f4 +f6f0f3f8f6f6f6f6f6f5f5f3f3f2f2f3f5f5f7f7f9f9f9f9f9f9f9f9f6f6 +ed8bb8a5e6f4faf843af94d8fbfdcc946bc7e9e4e3538f55e9e5e3e06ab0 +97dcdcdfe5e5eaecf0efe7e2e0dbca60aec1c96719458aac990747293541 +3c4e534c4b4b35384d33596265d560326ba18f94969896949c9594949592 +6c7b6f4c66a09b819ab0bcdac5bba28c7668767f858f9d9f9a928e908f93 +94979f9896a1928faa93a0aeacaca9b3a4afaead9ca8b1aaa6a4b1bab7b0 +b0a2a291a8bab9acaec2afc3b6b8b7b5d2c8cdb7bcb6bcbfc3c0bfbebebf +2b2e2e2a2c32322d282b2b2725282927283033312c2a2a2a2b2b2b2a2929 +2b2d2e292626282927252628272426292925282b2d2e2c29282927292a2a +2a2c2f322c2b2b2b2c2d2e2d2f2b2d2d282a2f2e302f2e2e2d2d2d2d2f2e +2e2e30313030343332313030323433323130303132333133312c2a2d2f2e +323436363636363432383530333632303435363635353535363c3c363337 +3835363434353434363b383a3c3c3a3a3c3e3b39383a3b39393a3c3e3f3f +40403f3e484744403f4246493d43414248413c44413d3f46484341454b4a +4c4b4c494544494c424d3c4f494a47464a4f4c44524948514e4b54534b4b +4d505a5159525144494f524d42362f2c3130302f2e2d2b2b31323d351ca5 +fff3fbfdfaf9f9f8f8f7faf9f7f7f8f9fafaf7f5f7fbfffffefcfcfbfaf6 +f1f1f4f7f9f8f8f9fcfdfaf6f3f6fbfefffffffffefcfbf8f7f8fafafdfe +fffffffffcfbfaf1e9f9fffdffffffffffc8dfffffffffff91e8ffffffff +f7a0efffffffffd092ffffffffffc6b1fffffffffffcf8f5fcfffffffffc +fdfefffffffffffffffffffefffffffffffffffdfcfcfcfcfdffffffffff +ffffff7a6f552f3e2f5e32389389bdfffffefbfffffefffffcfefffffeff +fffefefffffdfefefefdfffffffffefdfefefffffffffefdfdfeffffffff +ffffff82d7d6fffffff05be3d7fff5ffc6cdb6ffffffff5cc5a1fffffff7 +6bcfc4fffdfffbf9fffffffffefffcfff65ac8fffffa753d97cfd64e7f68 +606c885b728668797f887c6b79423ecb4eaee3d8d6cfcbd2d0cbd1cdd3d4 +cad1aea7a4d1e5b3b4dffcfff8e1d4ba9dabc4d1d5cdd1d4d3d3d3d5d7d9 +ddd8dcd0e7d2d8dce1e4e3e6dce6d9ddd5e4d5e5e0e9daf0dee2e1e6e3de +e5eae9e4f1dce3e7ebeceef5e4fee9f3faeafaeefff4ffebf3f4fdf6f3f3 +f5f322262622242a2a251f22221e1c1f201e1c2326241f1d1d1d1d1d1d1c +1b1b1d1f22201d1d1f201e1c1d1f1e1b1d20201c1d202223201d1c1d191b +1d1d1d1f22251f1e1e1e1f202120221e20201b1d22212322212120202020 +2221212123242323242322212020222423222120202122232123211c1a1d +1f1e222426262626262422282520232622202425262625252525262c2c26 +23272825262424252424262b26282a2a28282a2c2927262829272728292b +2c2c2d2d2c2b3534312d2c2f33362c32303137302b33302c2e3537323032 +3837363836332f2e33362c3725383233302f3338352d3b32313a37343d3c +3434383b433a423b3a2d32383d3a30261f1c1f1e20232524221f25252d26 +109bf9eaefefeeededececedefeeefeff0f1f2f4f1f1f3f5f6f4f4f4f5f6 +f5f4f3f3f4f6f5f4f4f3f4f6f3f0f1f6f9f9f7f5f5f7f5f4f5f6f7f8f8f8 +f6f7f8f9fafafaf9f5ece3f3fcf6fafbfdf8fdbdd4fcfcf5fcf881d8fdf4 +f9fae78edff0f4f7f4c383f3edf4f2f8b8a7f5f6f6f8f9f9f6f4f4f8faf9 +f3f0f1f4f9fafafafaf9f9fafcfcfcfcfcfdfefefefefffffffffefdfaf9 +fbfefbf8fa675a3c152215451b217974aef8f4f0e7f5eeedfbfffafcfefc +fbfffffbfbfffffdfefefefdfcfbfbfcfffffffffffffffffffffffffefe +fdfdfdfffb78c6c7ffffffec4fd9d8fff7ffbabea8fbfdfdf854bf9cfffe +fcee65cbc1fff9fbf4f2f7f8f9f7f7fbf7fff454bafdf2eb662d83b7b62b +5b4846597b5062734e5b5d665c4d5f2b29b73693c1b9bcb8b4bebcb8beba +bfbeb0b58d8580afc59598c7e5efe8d1c3a68993abb4b6acadaeafafb1b2 +b6b8beb9bdb1c8b3b9bdc4c7c6c9bfc9bec2bac9bacac5cec0d6c2c4c3c8 +c6c1cacfcecbd8c3cad0d3d5d7decde7d2dce3d3e3d7eadde9d7dce0e9e4 +dfe1e1e11113130f111717120e11110d0b0e0f0d0c1215130f0d0d0d1010 +100f0e0e121214110e0e10110f0d0e100f0c0e11110b0b0e1011100d0e0f +0c0e0d0d0c0e11140e0d0d0d0e0f100f110d0f0f0a0c1110121110100f0f +0f0f1110101012131212141312111010121413121110101112131113110c +0a0d0f0e121416161616161412181510131612101415161615151515171d +1d1714181916171515161515171c181a1c1c1a1a1c1e1b19181a1b19191a +1b1d1e1e1f1f1e1d2726231e1e2025271c22202127201b231e1a1c232520 +1e21292828292825212025281e29172a2423201d2326251b29201f282522 +2b2a2222272a31283029281b20262c2b2217120f13121315161513111715 +1d130082ddcdd5d5d4d3d5d4d4d4d9d8d8d8dbdcdddcd7d6dadbdbdadbdd +e2e2dfdfdedddcdad8d7dbdbdddcd9d8dadee2e3e0dfe1e6e6e7e5e1dfe0 +e1e1e3e5e6e7e8e6e3e0d8cfc9dbe9e3e8e9eae5ebabc2ecece8f3e85fb4 +e6e6f3edc566bedbeeeedaa164dadfeae8e69b83d2d9e5edefeaddd8dfe6 +eae9e3e2e3e8ededefefeff0f0efededebebe9eaebebececeeeeeeececee +eeeef0f1ece8ea564526000a002700025e598fd8d4d3ccddd6d9e6edebef +f4f3f2f8f8f4f4f8f8f5f6f6f6f5f7f5f7f5f3f3f2f2f3f3f5f5f7f9f9f9 +f9f9f7f7f5f1e55da8aaeaf1f6e037b6b0e4ecf6a09f8de5edecda2f9b7e +edede1cd41a8a0e3dee5e1e2ebecede8e7e8e3eadd3a9fe3d8d44f146a9d +9f174b393748683c52644150545d51425019149f1c78a69c9b96929d9b97 +9e999c998d906a605e8a9f6f73a3c3cec7b0a58b6e778d96978b8b8a8d8d +8e9295979f9a9e92ab969c9ea4a5a6a9a1aba0a49dab9caca7b09fb39d9e +9fa6a6a1acb1b0acbaa4abb0b1b3b7beadc7b2bcc3b3c3b7cabdc9b6bcbd +c6c0bcbdbebd2a2a2c2d2e2e2f2f2a292828282827252b2b2b2b29292a2a +292828292c2c2b2927282a2b2a292828272626282a2b29282a2a2a2a2a2b +2b2b2928292a2c2d2d2d2d2c2b2c2e2f2f2e25272c32332e2a292f39372e +303331302f2e3032333131332c2d3032312f3033332e3235302f34362d30 +31313133322f353a38353a3a353434353132383834353b38302f37393638 +3d3a3a39363a3d383d3a38373738363538383a3f403d3b3c3d3936383a3b +3b3c3e3d3e424545444644454342444746434644413f3f40414347454345 +494c4d4d514a403e484b484949405648433f48564e53524e4d4a484c4948 +4a4d4e4b4848505254555959544d534f534e3e322f2f342a36322f2a352c +333735301ca9fff3f8fafbfcfdfbfafaf9fafafafbfcfbfbf9f7f0f6ffff +f4f1eef2f4e9f9f4f8fcfffff7fff9f6fef6eff7f6fdfffdfef9fdfefeff +fffefefdfefefefefefffffffffffffffffffffffffeffb6d2fffffffff9 +93e7ffffffffefbbf4fffffffeb699ffffffffffa8c4fffffffffcf8f9f9 +fffffffcfffdfffffdfafefff8fbfffef8fef8fffffefffffffdfff6fff7 +fafffffffefffdffff8c5c2c2e2c4677242f8387a7fffff2fffffff8ffff +fdfffffffffffffffffffffffdf8fffffffffffffffffffafdfffffdfeff +fcfffafffaffeee0ff90e5dbffe4eca769d0e6fff4ff81baccffffe0cc3b +c1cefff7cf8b67d7d0fffdfefffffffffdfff4ffffffff288feaf4c03b62 +b2d1dd5a6c6c515d5f5850786e6762697f65895d929085ecdad2ccd1d6d1 +ccd4d6ccd5d6d2c3a8b2d9c695b4fcfff3e7d1c29c85432e4fc9c4c1d3c2 +d6dbc7d3dccfd7c3e0cfd8decdd8dfe3dce4d8dde0dcdce0dae6ebebdfea +ede9e1f6e7dadef1f5ebf0e6ede9f0e5e5f2eff5fbfcf7efebf8fde9fcf6 +edeff1f3ecf4f5f91e1e2021222223231e1d1d1d1d1d1c191e1e1e1e1c1c +1d1d1c1b1b1c1f1f1d1c1b1c1e1f1e1d1c1c1b1a1a1c1e1f1d1c1d1d1d1d +1d1e1e1e1c1b1c1d1f202020201f1e1f21222221181a1f2526211d1c242e +2c232326242322212022232121231f202325242223262621252823222729 +1d2021212123221f2429272429292423242521222828242529261e1d2527 +24262b28282724282b262b282625252624232525272c2d2a28292a262325 +272828292b2a2b2f323231333132302f3134333033312e2c2d2e2f313533 +3133373a3b3b3c3529293134313232293f312c28313f373c3b3736333135 +32313336373431313b3d3d3e40403b3439383e3b2d222222271a2925241f +2920272b292411a2feeaedececedeeefeeeeeeefefeff0f1f3f5f2f5edf2 +f4f8eff4f3faf9edfffbf8f6f9f9f5fff8f4faf6f2fcf8f9faf3f7f4f4f5 +f7f8f8f7f7f6f7f7f7f9f9fafafafcfbfaf9f8f7f7f8faf7ffafcafef8f6 +fdf18be2fcf9f9fce1ade5f3fcf6f7b091fffbf7f4f999b6fdf6f5f6f2f0 +f5f5fff7f4f1f6f1fafdfaf8fffff6f8fdfbfcfff6fbf9f1fcfbfffcfff9 +fff9f9fbfdf5f4fff6fcf679420d0d0926590a176b7296f2f7e7f2f0f5e9 +fbf9f5fefcfffdfefdf7fcfcf7f9f8f3fef9fdf8f7fbfcfdfff8fbfffffd +fefffdfffbfffcfde1cef87fd4cbf6d9e19c5bc2dbffe9f777aebef4fad1 +be2eb4c3f9ebc3825fd2cafef7f6f8f7f8fff4f7ecf7fff8fe1d82dbe4af +284d9ab6be384b4c374a534c3e6359504b4f624565386f7067d1c2beb8be +c3bcb7bfc2b5bdbdb9a78b92b8a5799ae4f8dfd2beae88702e1837b2aca7 +b29fb3b8a6b2bbaeb6a2bfaeb7bdacb9c2c6bfc7bbc0c3bfbfc3bdc9cece +c2cdd0ccc4d9cabdc1d7dbd1d5ccd3d1d6cdcedbd8dee4e5e3dbd7e4e9d5 +e8e4d9dddfe3d9e4e2e9100e1011121213130e0d0b0b0b0b0a090e0e0e0e +0c0c0d0d0c0b0b0c0f0f100c0b0c0e0f0e0d0c0c0b0a0a0c0e0f0d0c0d0d +0d0d0d0e0e0e0c0b0c0d0f10100f0f0e0d0e1011111007090e1415100c0b +121c1a111215131211101012131111130e0f121413111215151014171211 +16180d1011111113120f141917141919141315161213191915161b18100f +171916181f1c1c1b181c1f1a1f1c1a19191a18151716181d1e1b191a1b17 +14161819191a1d1c1c20232322242223211e2223241f22201d1b191a1b1d +211f1d1f232625272b2419182124212222192f211c18212f272c2d272823 +21252221232625221f1f282a2b2c2c2c272028262d2a1d121212170a1814 +120d19121b1f1b140088e1cbd1d2d5d6d7d7d8d8d8d9dbdbdcdddedfdfe0 +dad9d2d5cfd7dde5e5defaf3ece6e5e4e6f2e6dfe1dcdde8e2e0dfd8e4e1 +e5e6e5e6e5e4e4e3e4e4e4e5e5e4e4e4e6e6e9eaeeedebe7e5dde695b5ec +eaeaf3de66bae2eaf0ecba7ebed9f3ecda8c6de3e8e8e6e57a91dad9e4ea +e8e3dcdae8e2e2dfe5e1ebedebe9f1f4eaeff4f2eef3e7e8e7dee9e7ece8 +efe6efe4e4e8f1e9e8efe6ebe56831000000114100004f557ad5dacbd8d9 +e1d6eae9e8f0f0f3f6f9f9f4fafaf5f6f2edf8f1f8f2f4f5f3f4f4ebecf1 +f3f1f4faf7faf5f8f1f1d0badf65b8b1dcc3cd8641a5bde3d5de5388a1dd +e7bca10c92a5e3d5a96138aaaae4e1e3e7e8e8efe3e4d9e4ece5ed0962bc +cb9d173a8099a21f383d2a3b3d362a5048403b40543655265b594bb3a09b +959da29d98a0a1939795907f636c95825475c0d3bcb3a095705b19011d93 +8a84917f939885939c8f9783a08f989e8d9aa2a69fa79ba0a39fa1a39da9 +aeaea2adaeaaa2b9aa9da1b6bab0b7abb2afb5abacb9b6bcc2c3c0b8b4c1 +c6b2c5c0b6b9bbc1b8c2c1c7282a2d2f2f2e2e2f2c2b2a2a2b2c2b2a2d2c +2b2b2c2d2e2e2f2c2a2a2c2e2f2f2d2e2f302f2e2e2d2d2c2c2d2f2f2d2b +2f2f2f2f2f2f2f2e2d2c2c2d2f30302f2f2e2d2d2f2f2f2e2d2d2f32322e +2c2c2f37342f32333030383332333333333531313233322f2e302d292c30 +2c2d32333538383736363430363936353a3a373a38393534393833343b36 +31353f3f3b3e3a37393a393e423e3a3a393a3c3d3d3d3a3a3b3c3a373638 +3937383b3c3c3f433e3d3e43464646463d3e3e3e4043423f444546474745 +4240474848484747494b57554e4d525250524a444c4746494b4b4c4a4c51 +5353514e524d4b4e5252504f524f4a45474d5253514d4d45372d2c282733 +372c30282f2c2c3a2a3625b1fffaf8fafbfcfdfdfafafafafafafbfcfbfb +fee7fbfdfff7f9ede7edf2f5999dd2feecc4baaaf6edf4f1feedf8fdfdfe +fbfdfcfffffffffffffefefefdfefeffffffffffffffffffffffffffffbb +e7fffffffbff88feffffffffe5cfffffffffffc5c2ffffffffffc4d6ffff +fff3f4fffffff8ffedfff8fffffefffcf0f7fdfffff7f3f7fcffffffffff +fafff9fcf5ffffffffffffffffffff9b7f9eb87c3e73b23c739992fffeff +fdf8fafefffffffffffcfffffffffffefbfffffff9f8fcfffffbfffdffff +fffdfdfffcfffbfff9fefaff90568790ecceff59653d8bf2fbdf37642fc6 +ffc89f515a48e8edf05864515dc8dbfffff8fffffff3fbf9fbffffffff2e +9dc47c491358bebce48660885b595d626f5d7769628f605d7389d75c92de +ccd3d2cacdd3d2d1d6d7d8d4d0b5acc3a78cccffffd9d7cb915a4030221b +19cbefefe8e8eaf3e4e6dbe8fffaecfceef6e5e8e1ebdaebdae9e9e1d5e6 +e3eae3e0dce3ebecf4f6f1eee2f1e7eeeef7f0f2f1ebe9f3f7ecf2f0f9e8 +ede6f6f1f4efedeaeff5eef3f1f81a1c2022222121221f1e1d1d1e1f1e1d +201f1e1e1f202121221f1d1d1f2122222122232423222221212020212323 +211f2222222222222221201f1f2022232322222120202222222120202225 +25211f1f242c2924252623232b262223232323252424252625222123201c +1f231f202526252828272626242025282524292926292829252429282324 +29241f232d2d292c28252728272c302c282827282a2b2b2b272728292724 +23252624252829292c302b2a2b30333333332a2b2b2b2d302f2c31333335 +3533302e3536363635353739403e37363b3b393b332d35302f3234343533 +353a3c3c3a373b3634373b3b39383d3a332e2e3437383736383426201f1c +1a262a1f231b2320202e1e2d1daafff1edececedeeeeeeeeefefefeff0f1 +f3f5f7e6fffffdf1f8f2f2fbffffadadd3f6e0bcbcb0fcf1f3f3fff2f6f6 +eff2f8fbf5f4f6f6f7f6f7f6f7f7f8f9f9fafafaf9f8f7f7f6f7f8f9fdfe +fdb4dff9fafbeeff85fbfffcfcf2d8c1fffdeff2ffc1bafdf4f6f2fdb4c7 +fffef7e5e7f8fffdf4fbe5f5edfef8f8fffff2fbfffffff7f9fbfafbfdfb +fcf8f2fff8fdf4fffefffdfcfdfdfff9f389647d9257195297235b847efc +f0f4f1ecebeef4fcf6fafcfafffafafaf9f3f2fffffff9f8fafdfef4fbfa +fffffffcfbfffcfffcfffafffeff803e717ad8bdfd49552f7be2ebcf2755 +23bdf6b990424b39d9dee149564654c1d2f8f8f0f9fef9ecf3f1f3fbf5fd +fd2390b76c380041a49ec5643f6841464e535a486257507a453d4c5fae36 +73c6bac4c2babac0bdbcbfc1c1bbb59a8fa5866db2f1ecc5c2b87d452b1a +0c0603b6dbd8cbc7c9d2c3c5bac7ebd9cbdbcdd5c4c9c2cebdcebdccccc4 +b8c9c6cdc6c3bfc6cecfd7d9d4d1c5d4cdd4d4ddd6d8d7d3d1dce0d5dbd9 +e5d4d9d2e2dde2dddbd8dfe5dee3e1e80d0f1012121111120f0e0c0c0d0e +0d0c100f0e0e0f101111120f0d0d0f111212111213141312121111101011 +1313110f1212121212121211100f0f101213131211100f0f111111100f0f +111414100e0e121a1712141512121a151213131313151313141514111012 +0f0b0e120e0f141515181817161614101518151419191619191a16151a19 +14151b1611151f1f1b1e1c191b1c1b2024201c1c1b1c1e1f1f1d1918191a +18151416171516191a1a1d211d1c1c21242424241b1c1a1a1c1f1e1b201f +2221211f1c1a21222220211f21232e2e27262b2b292b231d25201f222424 +2725272c2e2e2a272b262427292927262a27211c1a20242526242722160f +0f0c0915170c100813121422121e0890e1d2d1d2d5d6d7d7d8d8d9d9dbdb +dcdddedfe4d4f0eddfcfdcdbe1ecf3fdaeadcbe9d2b1b7acf2e2dfddf1de +e1dcd4d8e7eee5e4e5e5e6e5e4e3e4e4e4e3e3e4e4e4e6e7ebedf0eeeee8 +e6e2e097c8e6eef2e5ea5cd0e6ecf3e1ae90d4dfe2e7e39b96dee1e7e2e6 +93a0dadfe4d8dee9e7e2dbe3d0e1dbece7e8efeee4ecf2f4f6ededecebea +eae7e8e3ddece4ebe0ece9eaeae9e8e7eae1e075536c85470941840d4167 +63dfd5dad9d6d8dee5efeaedededf6f4f4f5f5efedf6f6f6edeceef2f4ec +f5f1f4f3f1eaecf3f2f8f6faf2f6f0ef69265962bfa3e32f3b1461c8d1b5 +0d360096d9a27b2b2e18b8c1ca343c262b97b3dee3dde8efe9dae0dcdee6 +e3edf1117095552800318d82a8492c5b3437393c45334f433c67342e3d4f +9c1f56a4949d9e989aa0a09d9f9c98928a6f677f654e91cfcca4a39a6430 +1a0c0000009bbab6aba8aab3a4a69ba8ccbaacbcaeb6a5aaa3ae9dae9dac +aca498a9a6ada6a39fa6aeafb7b9b4b1a5b4acb3b3bcb5b7b6b1afbabeb3 +b9b7c2b1b6afbfbabeb9b7b4bdc3bcc1bfc6272c30323030313332312f2f +31323232312f2d2e30333433343231313234343531323233333232313030 +303131312f2e323333333332313030302f3032323231323130303131302f +312f2e2f2f2e2f312e312f2d32302c2e302b2a2c2e2d2c2b2c2a2b2e302e +2e2e322f3235313236362e31333333343331383733353a36343b383a3534 +3836313235343137403d383b3d3a3c3d3c4245413f404142414040404544 +4444413d3e41464748494744474b403f4145484847484b4d4e4e5052524f +4e4f505253524d4a474b4e4c4745484c4e5352515555545952545159575d +6159524b535d5b5a5b56605751545b5e5d5b4e515353575c606155535143 +3630312a2d4f432f352b302e28382b331dc3fff4f8fbfbfcfbfbfbfafafa +fafafbfcfbfbfaf8dc70c0f7fff8f8f4a3c36e73dffde1b2a6c6f3f8fcff +f1f9ffffffffecf7fcfefffffefefefefefefdfefeffffffffffffffffff +ffffffccb8a8c9b1fffbcd899ba6b6ffe6c8acccb4bfffc09b99d092b6ff +8b8292d384d5fffffffffff7f3f8fffffffff9fefbfffff8fcf8fcf9fff9 +fffdeeccd3d5fffffcfffffffff8dbdaffffffffff9a93a6c6802f608c20 +36867cfff5f4f7f9fcfbeafffdfffff9fefffffffffffffcf4f7eef5f5f3 +eefbfffaf8f9fcfffffffefffefffafefdff8e6360acf58b215b683994ff +7018685043f4ff1f1b5d4b4fffd60f27692f84fed8fcfffcfcfffdf4f7fc +ffffffffee4a69798dac325ecc4bc8b74c8156546558575660665e716c56 +7888825567dbd0d1d5c9ccd4d3d1d5d8d3d2d2b0a48e96f0ffe5ddda8437 +2e0f1b1b2d3112b6e8e0c0dcc9c1c4dbc4d5bfbdbedadcceeff1d6f1e7ff +f5f7e3c8d7ddcedfe6ede9d9e8eaf8dfe6f2e2eeebfdeefffafffdf7fff4 +f9f1f3ddf8f9fce3fcfffbf5fcf3faffffffffff191e2224232324262524 +222224252525242220212326272627252424252727282526262727262625 +242424252525232225262626262524232323222325252524252423232424 +232224222122222122242326242225231f21231e1a1c1e1d1c1b1f1d1e21 +2321212125222528242529291e21232323242321272622242925232a282a +25242826212223221f252e2b26292b282a2b2a30332f2d2e2f302f2e2e2e +323131312e2a2b2e33343536343134382d2c2e3235353435383a3b3b3d3f +3f3c3b3c3d3f403f3a3734383b3a3433363a373c3b3a3e3e3d423b3d3a42 +40464a423b343c464443443f49403a3d44474745393c3c3c3e4345463b3c +3c322523241e203f3420281e23201a2a1d2712b9f9ebecececedefefefee +efefefeff0f1f3f5f4fbec81c8f9fffeffffbbe0908ce5f8d7aeadd5ffff +fefff2f6f8eff8fde9f6f6f5f6f6f7f7f7f7f7f7f8f9f9fafafaf9f9f8f8 +f8f8f9fafac5af9ebfa6fdedbf7d93a1aff7d5b79abca3acf5b09291c887 +a7fc7a7082c474c6f7f3f6fefaf3eff3fbfffef6f1f9fafffffcfff9faf7 +fffafcf0dcb7bec3fdfbf9fffffbffeecdcdf7fdfffffe887885a05a093e +6e041c6e68fee7e8edeeefeeddfdf5fffff7fcfdfbfcfffffffffdfffdff +fffffbfffffaf5fafafffffffefffdfffbffffff7e4b4b97e17a104c592a +85fc5f07574137e7f8100a4c3a3efec700185a247bf7cff2faf1f3f7f6ed +f0f5fbfff8fae43e5e6e7e9c1f49b430a9952b613c41564942414b544b5c +523654615c3149c4bec3c5b9b9c1c0bcbec2bbbbb997887277d3f6cdc5c5 +6f23190008071a1e00a2d5c9a3bba8a0a3baa3b49e9c9db9bbadced2b7d4 +caeed8dac6abbac0b1c2c9d0ccbccbcddbc2c9d5c5d1d1e3d4efe0ece3df +efdde2dadcc6e4e5e8cfe8f3e9e3eae1eaf3eff0eff50c11151713131416 +151411111314141414121011131617161715141415171718151616171716 +161514141415151513121516161616151413131312131515151414131212 +1313121113111011111011131114121014120e10120d0a0c0e0d0c0b0e0c +0d101210101014111417131418180e11131313141311171612141915131a +191b16151917121315141117201d181b1f1c1e1f1e242723212223242322 +2220242222221f1b1c1f24252627252225291f1e1f2326262526292b2a2a +2c2e2e2b2a2b2e2e2f2e292623272a26231f2226272c2b2a2e2e2d322b2d +2a3230363a322b242c363433342f372e282b3235323026292a2a2a2f3233 +2a2a2b201512140e0f2f210d150b13130f1f121700a0daccd2d5d5d6d7d7 +d9d8d9d9dbdbdcdddedddae6e279bbebf3f2fdffbde69a90d7e5cdabb3dc +fffff3f3e2e5e2d6e0eae2f1e8e4e5e5e5e5e5e5e5e4e4e5e5e6e6e6e7e9 +ebedf1efede9e3a99283a692efe2b4676c7793e7cda5728b788ee9a3756c +a46b94ed6a5a619d50a7e2e6eaefe2d8d6dde5eaeae4dee6e6efefebeee9 +ebeaf3eaecdfc8a2a9afeae8e6edede7ecd5b0abd3dadde1e2706374934f +0034630005544de1ccced4d8dcddcdefe8f1f3eaedeeeff0f3f3f3efeaf0 +e8f1f1ede7f3f8f2ececebf1f3f3f4f8f8faf3f5f2ef6731307cc65e002f +3c0d68df43003b2211c4dd0000381e20dfaa0003430652cdaed7e4dde2e6 +e6dbdde2e5eae5e9d82e4050698d11389c138c7a18542f3241322f2e3840 +3a4b4327445049192da2989ca19799a1a29d9e9d9591906e614d58b5dbb1 +abaa540b060000000c0f0089b7a9859c8981849b84957f7d7e9a9c8eafb3 +98b4aaceb8baa68b9aa091a2a9b0ac9cabadbba2a9b5a5b1b0c2b3cebfcb +c2bdcdbbc0b8baa4c1c2c5acc5d0c5bfc6bdc8d1cdcecdd324292e302e2e +32363533313132333433312e2b2c3033333230313436363533312f2f2f30 +30302f2e2c2c2d2e2e2d2c2b3031313231302e2d2f2e2e2f313232313332 +323233333231312f2e2f30313337363633353b383335322f32383c3a3531 +35323236393837363a36393a36373937323538393b3d3c3944413d41453d +3a423739363539373234363e403f44454345403d3e3e3b3e403b3d404343 +403e3e3e47454445464444454544444543404043403f4044464544454042 +4343434544414947444446474645484b4e4d4a484a4d484f4f4d51515155 +4e564e5f52535c5a554e5b6356535b565e565153595b5b5b5c636b6c6b68 +6562585a59483733362e3a5944333937392e332c363b18e0fffdfbfbfcfc +fafbfbfbfafafafbfcfdfcfcf9f7cf20b7e0ada69f9a2e7bb086f4f9fee7 +e69e8983b0f2f5edfffffffffdfffcfefffefefefefefefefdfefeffffff +ffffffffffffffffff2a66c6aa0bbcb52171c56218c36f386cc65d3fca54 +4b8ded4b599e3652b1df2fb7fffffffef7f8f3fcfffcffffcac2e7feeefc +fdfdfffff1ee94c6ffe6e5daf7a198fbfccdb9c4a38ed7b0fafcd39c70b7 +e58e879d79335c776bfffff7fef1f6ede4fffefffffbfffffffffdfcfff6 +f4f7f5e9e8f7f1f9f7fefdfffbfbfefffffffffffcfdfeff7c2a41b0cdb2 +494e3028aaf28e26483134f5f256363b2e66f9ff34492c3d99ffc8fff9ff +f9f7fafffbfffff8f5fdfffffbf3ffffff84d0a9a4d33f715b5171595c89 +91636b67807865717c6b66c3d4d4cfcfd4d4d0d3d5d1d9d9b0988d9cfbff +edef9b3611121e1f222624251672cbc2bcdbd3cadcedd1d2d6c9c2d6e2c5 +dec4d3d8bbd3cad7e4dbd7ded5e8e3e6efe4e0e3e8c7d3d9ced1dae7c9e4 +dcebe4dde2d5eeffffe4f1ebf4daeffceeecf0ead7e3e2dfe1e8161b2022 +21212529282624242526272624211e1f2326262523242729292826242323 +232424242322202021222221201f23242425242321202221212224252524 +2625252526262524242221222324262a2b2b282a2e2b2628252222282c2a +2521282525292c2b2a292d292c2d292a2c2a222528292b2d2c2933302c30 +342c29312729262529272224242c2e2d323331332e2b2c2c292c2e292b2e +31312e2c2c2c343231323331313232313132302d2d302d2c2d3133323132 +2d2f30303032312e363431313334333235383b3a3735373a313838363a3a +3a3e373f37483b3c45433e37444c3f3c443f473f3a3c42444545474e5455 +524f4a473e434437262629222a4935242c2a2c21251e262e0bd4f6f2edec +ededeeefefefefefeff0f1f2f4f4f4fce53ccbeeb8b4b2b54fa2dba7fcf4 +f6e6f7baa9a1c8fffff5fbfeedf0fafff6f5f6f7f7f7f7f7f7f7f8f9f9fa +fafafbfaf9f9f9f9f9faff235cbca000afa51162bc590cb65d2559b4472a +b6423d83e23d4a8d2340a1d01fa6fcfcf5f5f1f4f1fafff6f7f6c2bde6ff +f1fffffcffffefeb8cb7eecdccc5e89991f6f7c5aeb69480ceabf5f6c88b +5697c069617c5c18425f57f6f5ebf3e6e9e0d6f8f6fffffcfffffcfcfafb +fffbfdfffffbfafffffffafffffffcfcfffffffffffffcfdffff6a12299b +b89e383d21199be37d15372026e8e447252a1d55e8f423381b2f8df9bdf7 +eff4f1eef3fcf4fffcf1eef6fdfef1eaf4faee71b88e85b11e51413b604a +47747c515852665b444e57494bafc4c6bfbfc1c1bdc0c1bac1c2977f737f +dee4d2d9852100000b0d0e131011035db7aa9fbab2a9bbccb0b1b5a8a1b5 +c1a4bda5b4bb9eb6adbac7bebac1b8cbc6c9d2c7c3c6cbaab6bcb1b4c0cd +afcac2d1cac5cbbed7eaebcdddd7e0c6dbe8dcdaded8c7d3d2cfd1d8090e +131511111519181613131415161514110e0f131616151314171919181614 +1313131414141312101011121211100f1314141514131110121111121415 +151415141414151514131311101112131519191916181d1a151714111218 +1c1a1511171414181b1a19181c181b1c18191b19121518191b1d1c192320 +1c20241c1921181a17161a181315161e201f24252325221f20201d20221d +1f2225252220201e262322232422222323222223211e1e211f1e1e222423 +22231e201f1f1f21201d272523222525252327292c2b2826282b21282826 +2a2a2a2e272f27382b2c35332e27343c2f2c342d352d282a30323030343b +42433e3b37342d313325161519121a39221119171b111811191e00bcd8d4 +d3d5d6d6d6d7d9d9d9d9dbdcdddedfddd7e6e23fcceebab7b9c05eb3ecae +eddee9e2fec6b6abcaffffeaebe8d5ddf1fae8e4e5e5e5e5e5e5e5e5e5e5 +e6e6e7e7e8eaeceef0f0ede9e80741a187009f98044b933000a553143184 +200fab362260c222377d122880a90088e8ece7e4d7d9d8e3e9e0e3e2ada9 +d1eadceaeae7edede0da79a4d9b9b8b0d5867fe3e4b29a9c735ba785cfd2 +a86f3d82ae59546d4e072b453cdcdbd3ddd2d8d0c9eae9f1f3ecefedebeb +e9e9eee7eaf0f1e5e4f1ebf4f1f9f4f4eeecf1f3f6f6f7f7f2f1f1ed5200 +0f809d831c2104007ec661001b0203c6ca3415180337ccda0f26071467d0 +9ddad6dededde3eae1ece6dedce6f3edd6cde2ede262a07168960b44342d +4c333461693d4741574d353b44302e8ea09f9b9ba0a19fa0a0989b996f57 +4e5fc0c9bdc4700c00000001050c070600489e8e819b938a9cad91929689 +8296a2859e86959b7e968d9aa79e9aa198aba6a9b2a7a3a6ab8a969c9194 +9fac8ea9a1b0a9a3a99cb5c8c9abbab4bda3b8c5b8b6bab4a5b1b0adafb6 +1f232728272a2f3531302e2d2e2e2e2d2d2a27282b2e2d2c292b2e302f2e +2c2a2a2928292a2a292826272829292929292b2b2c2c2b2a29282b2a2a2c +2e30302f3030303132333231323030323333343734343132383530333836 +394045423c383d393839393633323532343531333531383b3d3d3c3c3a36 +353331363a322d33343836363b3a363943545341393a38363c393a3a373a +3c3633363a3c3c3c3c3d3b38373b3e3e3b393b38383b3d3e3e3f403d3d40 +413f3e3e4345464443434340423f3b3a3b3d3f3f3e3f3f3f3f3f3e3e4b50 +4d484c4e4c4e4d4f45574740494c514851564a4c544c514e4d4e4f4f4f51 +4e54595757575a5a54585947342e312c35423432373d3b293a2e3a4618eb +fff7fbfafafafafbfbfcfafafafbfcfdfefcfff0e41bb5b45d7866786eae +a23ef9fdffffe9272652194ad2d2b0d4fcfffaf4fcfdfdfdfefdfdfdfdfd +fdfefcfdfdfdfeffffffffffffffff2946ebc33927224250db7648283538 +64ff91581530438dd25d5c253e2b95c943c2fffbf5f9f7fefff8ffff58ce +ceb4caf58bfff7fffffcffe0add3a4a09292d2ff7affffc4a8593a505fb4 +cccfd07e63d39dcffcffffee755c6affffebeee9e1dcf9fffffef8fefcfb +f9fffef7fffffff4fefffffdfffcfcfef5fefffaf7fefefdffffffffffff +8b5060c9c2b740483959d8fb973b3f407bfcf16c393c4ea7ffe06d503d61 +b5fbadffedfefefffeffffffeef8fffff8fffdffffffffbfd1dd92de4e81 +704f6a6b5cb5964d6a66786b5441c57c3f99e4c9d0d2d5d3cfd3d8d3dec5 +997a91ffffffcb54121724282326242e21222d3dd4bfc6bfcccfd8c9c3cc +c9d9d8efd6d3dde0f5efe0edeadce6d9dfd7d3ecded9ded5e2eaede2f1ec +eae3f1fae2ececf5f5f6e5e7ecefe8eefae7fcf2f9fdf8fbf6f7eef8faf3 +fafe1115191a191c22282423212021212120201d1a1b1e21201f1c1e2123 +22211f1d1e1d1c1d1e1e1d1c1a1b1c1d1d1d1d1d1e1e1f1f1e1d1c1b1e1d +1d1f212323222323232425262524252323252626272a292926272b282326 +2b29293035322c28302c2b2c2c2926252825272824262824282b2d2d2c2c +2a262422202529211c22242826262b2a26293142412f272826242a272828 +25282a242124282a2a2a2a2b282524282b2b2826282525282a2b2b2c2d2a +2a2d2e2c2b2b303233313030302d2f2c2727272a2b2c2a2c2c2c2c2c2b2b +343936313537353736382e40302932353a313a3f33353d353a3837383939 +393b393f42403e3e3f3f3a4144362321242025322523282e2b192a1e2836 +09ddf4e9edeeeeeeeeefeff0efefeff0f1f2f3f4faf5fe3fd5d17a978aa0 +9cded563fff9f8ffff5760925783fff8c1d7f5fbf7f5f6f6f6f6f7f8f8f8 +f8f8f8f9f9fafafafbfafaf9f8f8f8f9fd1f3adfb72a17112f3ecd6a3a17 +21234eeb7940001c337fc44d4b122b1782b731b2faeeeaf1f1fafff6fff9 +4dc3c6aec8f58bfff5fcfef6ffd9a0c18984777cc1fe71ffffb99947263f +52abc6c7c36b4ab479abd8edfad45b4454f5f5dfe3ded6d0edfefcfcfaff +fffffcfffbf4fffffff6fffffffafef7fdfff8fffffcf9fffefdfefcfefd +fffd773848b3aca32f372848c7ea862a2b2f6cefe15b26293a93fcce5b3f +2c53a8efa0ffe1f4f6f9f7fbfcfae9f3fffef0fbf7fff9fafcadbbc475bf +2e615439595b47a0813a575061513722a45e2586d6bbc1c2c5c3bcc0c4bf +c8af816279f1f2e9b13e000111161115111c0e0f1b2ac2aaa99eabaeb7a8 +a2aba8b8b7ceb5b2bcc1d6d2c3d0cdbfc9bcc2bab6cfc1bcc1b8c5cdd0c5 +d4cfd0c9d7e0c8d2d4dddddeced0d5d8d1d7e6d3e8dee5e9e5e8e3e4dee8 +eae3eaee04080c0d0c0f1218141311101010100f100d0a0b0e11100f0c0e +111312110f0d0e0d0c0d0e0e0d0c0a0b0c0d0d0d0d0d0e0e0f0f0e0d0c0b +0e0d0d0f1113131212121213141514131412121415151619171714151a17 +12151a18192025221c181f1b1a1b1b1815141714161713151713181b1d1d +1c1c1a161412101519110c12151917171c1b171a23343321191a18161e1b +1c1c191c1e1815181c1e1e1e1e1d1a1615191c1c1917191616191b1c1c1d +1f1c1b1e1f1d1c1c212322201f1f1f1e211e1c191c1c201e1f1e1e1e1e1e +1d1d262926212527252726281e3020192225281f282d21232b2328232223 +24242426262c302e2a2a2c2c292f33241310141016221210131b1b0a1d11 +1c2600c3d7ccd3d6d6d6d6d7d9dad9d9d9dadddedfdde0e1ff4be2df8aab +a0b9b4f5ea6cf4dedef3ff6576ab6c94fff9b7c2d9e0e4e5e6e4e4e4e5e5 +e5e5e5e5e5e6e8e7e9e9eaeaecededede9e6e70420c59f1507012026a642 +2007161229c0552600111a62a73437011a0062930d91e3dbd8dcd7dde8df +eae339afb196afdb71e8dce1e6e0edc78dad746f6267afec60edeca78631 +0b21328aa4a3a34b2c985f91bed1ddb9422a3cdbdbc7cdcac4c0dfefeeef +edf3efeae7edeae3f1f1f3e8f3f4f6f1f6f1f8fbeff6f3eeebf2f4f3f5f3 +f1eeede75f20309b948a151d0e2eadd06c1012134bcfca4b17182278e3b6 +472d183885c97ee1c7dbe1e6e5e9e8e6d5dfedeee5ebdde6eaf0f39fa4a6 +57a31952482b4544348f702948425342271091460a65b1969a9ea3a29ea0 +a39ca3885b3e57d4d7d4a23000000208050d0b1808080d19aa8f8b7f8c8f +9889838c899998af96939da2b7b2a3b0ad9fa99ca29a96afa19ca198a5ad +b0a5b4afafa8b6bfa7b1b2bbbbbcaeb0b5b8b1b7c5b2c7bdc4c8c4c7c2c3 +bcc6c8c1c8cc1e21242626292e322f2e2c2c2d2c2b2a2d2b292a2c2d2c2a +2b2b2a2928282a2c27262425272826242325272827272828292828282727 +27272a29292a2c2e2e2d2d2d2d2f3131302f312f2f30302e2e2f2d2f2c2a +2f2e2b2d343132353836333234323133322f2d2d2f2d3031303335302f33 +3535363633303738383d423d383c30343435393835382b414538343b4143 +37353839383d403b35373a3b3b3b3a3a3a36363a3d3b3836403c393c3f3f +3f4044403f40403e3e3f414444414041424147474746464647484e4b4849 +4a4b484845494441474c4b4b504b47524a464a4b514a4b4c4b53564a5253 +56575551525551565958595b60625354554531282b2a2f2e2b3231352e30 +2734363b1af8fff8fafafafafafbfcfcfbfbfbfbfcfdfefdf5f2e318bda6 +66d841cf5c77b233f0f5f4f7e125b9c7b21f221a38cafffcfff8fdfefdfd +fcfdfdfefdfdfdfefcfdfdfdfdfdfefefefefffeff2f31dec6286a442b39 +c2714a474317518f5a545c470f67b0447d514117879b49c1fffbf7fcfdff +f7fff4fa4e997a759c9c9afbfffffefff9e352f23f4d513e79b57effff80 +61f19f7c7a45d4e9d473678e71ffee8efdf8b06355f7fff9d1c1e6d8f8ff +fffef6fcf3fbfbffffffffd5eafff4fffffaffffc3f5eff5f8fefffbfefc +ffffffffffff996790e7ff5f3f4b8479ffff42335e8790ffb4293757a9bc +ff78264a8a7fdbff85fffefffdfffffcf6f3fffffbfefffffffbffffffc9 +c7ed84df7882765a5c66586f6b685790b55a3a1e61535995d6d5d7d0d2d5 +d3d2d8dbd09a7b90f2f8ffbb24172c2b24291e1d1e2628272c18cdbecdbb +dcdddac7d6d6d5d2cad2d7d8d4cfdad1d4d9e2d8e5e1e7cbd0eee6eae4d6 +e6e7e4e9efebf3ede4ede9e1e6e8e9f6f2f7f8fff8faf7e3f6f9f6f4f4fc +eef4f0f4f5eef8f710131618181b212522211f1f201f1e1d201e1c1d1f20 +1f1d1e1e1d1c1b1b1d1f1b1a18191b1c1a1817191b1c1b1b1c1c1c1b1b1b +1a1a1a1a1d1c1c1d1f212120202020222424232224222223232121222224 +211f22211e20272422252826232227252426252220202220232423262823 +1f232525262623202627272c312c272b2024242529282528192f33262229 +2f3125232627262b2e292325282929292828272323272a2825232d292629 +2c2c2c2d312d2c2d2d2b2b2c2e31312e2d2e2f2e34343333323333343a37 +3435363734322e322d2a303534343934303b332f33343a333435343c3f33 +3c3d40413f3b3c3f3c41424140424547393d4034201b1e1d1f1e1b232226 +1f1f1522242a09e8fde9eeeeeeeeeeeff0f0f0f0f0f0f1f2f3f5edf6fc3d +e4d195ff78ff94abe558fcf3eefbff5afcfffd66634b55d5fff5fdf7f8f7 +f6f6f7f8f8f9f8f8f7f8f9fafafafafaf8f8f6f6f6f6fc2325d0b7175931 +1625b2633a362f023a77413c44300057a0326b3c2c01728735b1f5eceaf4 +f6fdf5ffeef2438e6f6e969899fafffbf5fff1d841dc2531362868a876fc +f97350dc89686a3acbe0c7604e6f4ef8cd70e3e0964b3fe6f3edc6b6dbcc +effcfdfcf8fffcffffffffffffd2eafff5fffff4fafac3faf2f8fcfffffd +fefcfefcfffefef7844c77cefb492b397267f6fb30214a7681fea3172444 +94a8fc641137776fccff77f8f0f7f2fdfbf7f1f1fefff8f8fcfffff9fff8 +fcb9b3d467c058625a434b55435a5655447d9f43200345394485c8c9c8c0 +c2c5c0bfc3c7bc836479d9dee5a00c00161712180d0c0c1416161c07bda8 +af9abbbcb9a6b5b5b4b1a9b1b6b7b3b0bdb4b7bcc5bbc8c4caaeb3d1c9cd +c7b9c9cac7ccd2ced9d3cad3cfc7ced0d1dedbe0e1e8e1e3e3cfe2e5e2e0 +e1e9dbe1e0e4e5dee8e70306090b0b0e111512110f0f0f0e0d0c100e0c0d +0f100f0d0e0e0d0c0b0b0d0f0b0a08090b0c0a0807090b0c0b0b0c0c0c0b +0b0b0a0a0a0a0d0c0c0d0f1111100f0f0f11131312111311111212101011 +10120f0d11100d0f16131215181613121614131514110f0f110f12131215 +17120f131515161613101617171c211c171b111515161a1916190b212518 +141b212319171a1b1a1f221d17191c1d1d1d1c1a181414181b1916141e1a +171a1d1d1d1e231f1d1e1e1c1c1d1f22201d1c1d1e1f2626282527252829 +2f2c292a2b2c292520221d1a202524242924202b231f232428212223222a +2d2127282b2c2a26272a292e302f2c2e3234282b2f22100a0e0d100e0b10 +0d110c0f0714161a00cfe1ccd4d6d6d6d6d7dadadadadadadddedfe0d8e8 +ff4df5e4afff97ffafc3fa61f0dcd4eaff6affffff82795953c5e6d9e8e5 +e5e5e4e4e4e5e5e6e5e5e7e8e8e9e9e9e9ebeaecebe9e5e3e60b0bb6a003 +4720050d8e3e212626001a5122243a28003d861a5729190053641490dcd7 +d7dddae0dce8d8dd2f7859547c7b7bdce3ded8e4dcc62dc70e1b21115495 +63e9e7603cc7724f501eacbfa7402f5030d8aa4cbebc7b3127ccdcd5b0a2 +c9bce0eff1efebf3e9f1eef0f2f3f4c9e2faeffbfbf4fbfac1f4ebedeef3 +f3eff2f2f5f1f1ebeae16f3761b8e43213215a4fdee31809325c62e18f09 +16357f8fe34c00286656abda54d8d5dfdeeae9e4dedcebede7eaf2f1eae2 +f1eff4aa9bb649a443534e35374132494546356e9135110030202764a5a3 +a19ca0a4a2a1a4a699614259bbc5ce8f00000b0c060e05050a12120f0f00 +a690937b9c9d9a87969695928a92979894919d94979ca59ba8a4aa8e93b1 +a9ada799a9aaa7acb2aeb8b2a9b2aea6acaeafbcbbc0c1c8c1c3c2aec1c4 +c1bfc0c8bac0bec2c3bcc6c5202226282a2b2d2e2d2d2d2e2e2e2c2a2c2c +2d2d2e2e2d2c2d2d2c2a29292c2f2b2826272a2b29272527292a29282829 +2b2a292928292a2b2d2c2c2c2e2e2e2d2e2e2e3031312f2e302e2d2e2e2b +2a2c3137342d303231323330323536343333323234363635353732303335 +34393a332f333738393a3835333636373d3c383930353535383633364652 +50433a3433373736393b3a3e413c3c3c3c3d3d3c3a383e3d3d3f3f3d3d3f +403c39393a393b3e4743404141404042424545434346494947494b4a4847 +494a474441414345434142484541484e4e4e4c4b574f4b4d4f4d5359574e +4e56574e55575b5d5a56575b55575853504e4d4b5b555144332a2c2b3230 +313431312b5f4b32373528f0defffbf9f9f9f9fafbfcfbfbfbfbfcfdfefd +fdfad124c572199200992764b248f8f6ffe8ea30223c49238ed4e0f8f4fd +fef8fdfdfcfcfcfdfefefdfdfdfefcfdfdfdfbfbfcfcfeffffffff3659bc +9c4a4837375e7b623e3b2f5c796e55462e4f4a647941382c4b65859647c4 +fffff4fcfffffaffffff8c434451528e69f8fbf9fff7ffffb9928648515c +ace1fffcffda95ff938aa43ca5e4e47d6f9278aeff8ecfff9c6c5aeafcff +f1fff0dce1fefefffbfbf7fcf9f8f8fff3aca5f7f7c7abf8f7d087f1fefe +f9fefbfdfffbfffcfffdf9f2a45d867c5a252d347867634c193c418d8651 +362e2443855f541d2b235e825a446fe1fffff8fcfffdfff6fffffcfffffd +fdfefffff9ffd8e48dc7a15f8a6a635e7475795f658e4937352d5a775b39 +b6d1d7d3d3d5d3d4d5cdab5c75e5e7f0901c221f222426212434312b2f29 +2a18abe4ded1f3f7eee8ead3eae9e4dbf0d7e3e9e4e0ede5e1e4e1dfedd4 +ecfae1f2f5f9feeeedeedee4e6e4ecf0f2e5ecf5e8fbf4ece9f1fbf4feff +f7f7f5f7f2fceff2f1eff0eaf8f31214181a1c1d1f202020202121211f1d +1f1f20202121201f20201f1d1c1c1f221f1c1a1b1e1f1d1b191b1d1e1d1c +1c1d1e1d1c1c1b1c1d1e201f1f1f21212120212121232424222123212021 +211e1d1f262c292223252425262322252624232322222426262525272220 +232524292a231f232728292a2825222525262c2b27282025252528262326 +34403e312822212525242729282c2f2a2a2a2a2b2b2a28262b2a2a2c2c2a +2a2c2d2926262726282b34302d2e2e2d2d2f2f3232303033363631333534 +32313334312e2b2b2d2f2d2b2b312e2a3137373735344038343638363c42 +4138384041383f414547444041454042413c37353230413e3c33221d1f1e +221f202320201a4c381f242216dfcbfeefeeeeeeeeeff0f1f0f0f0f0f1f2 +f3f5f4fbe545eca55cdd42e26397e066fff4ffebff5f5b7d8a63cafffdff +f1f5f8f4f8f8f7f7f7f8f9f9f7f7f7f8f9fafafaf9f9f9f9f8f8f7f8f62a +4bac8c38362222496b532d291b4664573d2d15383754672c2315354d6d82 +32b1fcf1e8f5fbfff5fbf9f9803738474b8964f3f2eeffe9fcfea97c6c2c +37469bd6fcf4fecb83f57973922d9bd9d76a5675578ce072b8ec835444d9 +edf8e6fbe5d0d8f6fafffffffdfffcf9f7fff2aeabffffd5b6fffed58bf6 +fffffdfffdfffff9fcf8fff6f3e68e426b63440f181f6655513a04272c7b +7741231a0e2d6f493e09160d487049365fd2fefaedf4f9f7fdf5fffffaff +fff9fcfdfcfeeffbc6cd70a8813f6e53504d5f5f6349527b33211e164461 +4a2aa9c5c8c3c3c5c2c3c2ba984861d0cfd777020b0a0e1214101325221c +201a1c089cd0c3b2d4d8cfc9cbb4cbcac5bcd1b8c4cac7c3d0c8c4c7c4c2 +d0b7cfddc4d5d8dce1d1d0d1c4cacccad2d6dacdd4ddd0e3ddd5d2dae4dd +eaebe3e3e1e3dfe9dcdfe1dfe0dae8e305070b0d0f101213101010111111 +0f0d0f0f10101111100f10100f0d0c0c0f120f0c0a0b0e0f0d0b090b0d0e +0d0c0c0d0e0d0c0c0b0c0d0e100f0f0f1111111010101012131311101210 +0f10100d0c0e141a17101214131415121215161413131212141616151517 +1210131514191a130f131718191a1815121515161c1b1718111616161917 +1417263230231a1413171716191b1a1e211c1c1c1c1d1d1c1a181c1b1b1d +1d1b1b1d1e1a17171817191c26221e1f1f1e1e202023211f1f2225252325 +28262523262724211e1e2022201e1d211e1a212727272524302824262826 +2a302c23232b2c232a2c2e302d292a302d2f2f2a23211f1d302c2b21120c +0f0e130f10110c0c083d2a11161100c5ade1d5d8d8d8d8d9dadbdadadada +dbdcdde2e5f5ec54fbba77fd66ff7baaf06efde5ede0ff71769ba87fe4ff +fffde0e2eae8e5e4e4e4e4e5e6e6e7e7e7e8eaebebebeaeaeaeaeae8e6e3 +e01231937522221111344a32191b1439473721190e32283d511710032035 +51611393e2d7d0dbdfe6dfe7e4e56a21222e2f6b44d3d1ceddcce3e89265 +5514202f87c2e9e1ecb86fe268617e1680bdb74a37553467b94a8cc3653c +2cbfd6e0d0e7d3c0c9e9eef3f1f3f1f6f1f1f2faeeaba9ffffd6b8ffffd9 +8af0faf6eff3eff1f3edf1ecefe3dbce792f584f2f00030a503f3b240012 +17635a27120f03205a32260005003a5a2b113db1e1e0d9e1e7e7ece1efee +ebf3f4ede8e9f1f6e6eeaeae508b6c3062453f394e51553c446d26130e04 +2f492e09869fa19fa1a4a4a5a49a772740b1b5c16300030507080a080c20 +1f191b130f0087b7a693b5b9b0aaac95acaba69db299a5aba7a3b0a8a4a7 +a4a2b097afbda4b5b8bcc1b1b0b1a3a9aba9b1b5b8abb2bbaec1bdb5b2ba +c4bdc9cac2c2c0c2bec8bbbebfbdbeb8c6c11f2126292b2a2927292a2b2c +2e2d2b29282a2c2d2c2c2b2b2a2c2d2d2b2a2b2c2f2d2b2b2e2f2e2b282a +2c2c2a29292a2f2e2c2b2c2d2f3032312f2f30302f2d313131323332302e +312f2f30302f2f312d3632282a2e2e2e2d2e34393a37353430303234322e +2f31323033333236372f35383a3a3938353134393634393a3737363b3a39 +3c39353740444444413837413a37393936393a34383737393c3d3c3a3a3b +3d3d3a383d443d3c3c3c3c3c424846413e3e3e3e3f423a3d3f3d3e434749 +444647454242464a4746444547494a4a4f58554e5052504f4f5a74574c4f +524f4f646652484b4d4d4c4d5053524f50535757555153585e6064574f44 +362d2e2e3234353132333697af333a3c2caf58fefbf9f9f9f9fafbfcfbfb +fbfcfcfdfefdf6fbc924c3a65d6b5b7876c3b64ef5f2faf5e6e3cc8c6023 +1d437fe0f8fff8fffdfdfcfcfcfdfefefdfdfdfefcfdfdfdfcfcfdfeffff +ffffff524eda96153730516188501e2f346c6976422f3443525b6e353336 +365777872fb1fffef7fffffdf2fafdffea5f7069635b687fc8dddd93dafe +ff295d5c68684f61faffffde45998085883da7f7db887296695b6a79595c +726d68e3ffebd1e0e2ded7fffdfcfbf8fcf7f1fffff6fff88899f0de77f4 +cd77d1fee4f4fffff1fffef7faf5fef1e9df9e5c3e565061715654513f3f +768a57585349407b7a503e483b4e8c5d4d59399374b5fffffbf9fdfaffff +fff9fffdfefffffafffffff3c2eeaea9b544b576756e74727c7e6e593e26 +2d3334524c66cce5d0d8dad2d2dcd3b65951c4ede6931f21232a272b2729 +37232922282b32155ad9ffd5cdd2cacac9c0e8eac5dff1e5dfe9e0e4f1e2 +d2e7d9d9ffd7e6e5ceeeeae8e4d1e5ebd6eee4e5f9f2eee3efffe5f7e9f1 +faf1fff5f9eafcf3f6fff4fef4f3f7f1f2eefff91113181b1d1c1b191c1d +1e1f21201e1c1b1d1f201f1f1e1e1d1f20201e1d1e1f23211f1f2223221f +1c1e20201e1d1d1e22211f1e1f2022232524222223232220242424252625 +23212422222323222224222b271d1d212121202124292a27252420202224 +221e1f21222023232226271f25282a2a292825212328252328292626262b +2a292c2925272e3232322f26252f2825272724272822262525272a2b2a28 +27282a2a27252a312a29292929292f35332e2b2b2b2b2c2f272a2c2a2b30 +34362f3132302d2d313431302e2f3133343438413e37393b393838435d40 +35383b38384d503c3235373736373a3d3c393a3d42423e3a3a3f43454a40 +3a332520212122222420212223849c202727179b45edefeeeeeeeeeff0f1 +f0f0f0f1f1f2f3f5eefddd46eddea7c0b1c5b3f4e06cfff4f7f8fefffbc0 +985a56739ff0f8f8f0fcf8f8f7f7f7f8f9f9f7f7f7f8f9fafafafafafafb +fafafbfafa433ec88400221b3a4c77400f1e215855612c181d2e404a591f +1d1d1d3f5f701a9ef4f0ebfcfef7ecf3f2fddb4e605b57525f76bececd82 +cef2fd15454250544056f4fffbcf3383656c732d9beccd775b79483a4c5d +4246585552d2f0dfc6d5d7d2cefef9fdfffefffaf2fffdf5fef990a4fff0 +88ffda82d5ffe5f6fffff3fffcf3f6eff7e9e2d18740223c394a5c41413e +2c2c6175424642392d67633a2732253877473744288364a7f9f5f0f2f7f7 +fdfffff7fffbfafffffbfcfcfde7b2d9948a9524995f625b615c66685b46 +2b131a2022403d57bdd7c0c8cac1c1cbbfa3463eafd8d07d08090f17141a +161b28161b14191d24084bc8e9b6aeb3ababaaa1c9cba6c0d2c6c0cac3c7 +d4c5b5cabcbce4bac9c8b1d1cdcbc7b4c8cebcd4cacbdfd8d6cbd7eccddf +d2dae3daeedee5d6e8dfe2ede1ebe1e0e7e1e2def0e904060b0e100f0e0c +0c0d0e0f11100e0c0b0d0f100f0f0e0e0d0f10100e0d0e0f13110f0f1213 +120f0c0e10100e0d0d0e12110f0e0f101213151412121313121013131314 +1514121013111112121111131019150b0c1010100f1014191a1715141010 +1214120e0f11121013131216170f15181a1a191815111318151318191616 +171c1b1a1d1a161820242424211817211a17191916191a14181717191c1d +1c1a18191b1b18161b221b1a1a1a1a1a202625201c1c1c1c1d20181b1b19 +1a1f23251e20211f1c1c2026232220212325272628312e27292b29282833 +4d3025282b28263b3b271d20222221222326252223262f2f2c28262b3032 +392e2921150f11111314140e0d0e12738d111816028227cfd7d8d8d8d8d9 +dadbdadadadbdbdcdde2e3fae452f9efc2dfd2e1c6ffec74ffe9e6edffff +ffd8b378738aacf0eee9e5f0e5e4e4e4e4e5e6e6e7e7e7e8eaebebebebeb +ebeaeae8e8e6e42c27b26e000f082a395b2600141a4d3d46150817293438 +460a0809072743510080d8d5d1e2e4dfd6e0deeac63a49413d3340559bad +ab64b4dae4002b29383c2940deeae7ba1d6e52585e1481d0b0593c5b2919 +2a3819213d3d3ab8d9c7b0c1c5c2bff1edeff1f2f8f3ecfafaf3fffb92a6 +fff48fffe388d6fbddebf4f3e5f3efe7eadfe4d2c6b77532142d293a4b30 +302d1b1b5064313228201e5c5b2d151a0d21663a29310a614084dcdbdce0 +e7e6eeefefe8f3eff1f4efe9f3f6f6d999ba736d80158d51514a524e595b +4d381d050b0f0c2820389cb49ca4a9a3a3ada485261e90bdb96800000811 +0e120e12211018111414170036aecc978f948c8c8b82aaac87a1b3a7a1ab +a3a7b4a595aa9c9cc49aa9a891b1adaba794a8ae9bb3a9aabeb7b4a9b5ca +abbdb2bac3bacebec4b5c7bec1ccc0cac0bfc5bfc0bccec7222325262829 +292a2a28282a2b2b2d2f2b29292c3033323134333233343433312e2e2d2d +2c2b2b2a302f2d2b2a2b2e302d342b2f302d342c2f2f2e2f3234322d2e2c +2b2c2e30302f34302f312f2a2c3334302e2f302e30342c2e343b3f3d3731 +34322f2d2d2f323433373835323234343537393b3b393735363739393838 +3737403a353636343436363f44413f41403c35333a403b383a3a393a3938 +3a3e3c3735403a37423e363f44423f40433d3a403d3c43453e3c4142464b +48504b4f443f49453d484d3e4344434142434344474b4b544d444a4b484c +4f52504c4f55524a59554f4e51535453585952544d55555c61625a5a5b57 +5c585950524133312e2e2e2c3031382e3584972f3a3d39b939fffff7f5fa +fbfbfdfbf4fffffafff6fff6faf1c625c38c3c3e35364095a84bebf9fbf9 +d64771c3d6d9cc8f4eabfaf6fff6fdf6fffff9fdfcfffff9fffff5fffff6 +f6fff1f3f6fffff1d85440534546573d53574a475a412c4e525148624841 +3d5556516630848a486270b9fff5f8f9facb90bfdb5536414c5d51607b34 +ceebf2a3c2ffff214d3b52412e4afbf7fffd2eb96d6f84326bfdef91677e +7fa8746b5e5a8a6475fffdffe8fcf2fffefffffff7fcf8fbfffffffbfffc +fbd89a896f86abe9fff9fffcfaff99d0ffffffffff6ccbf1b381514a434b +8e423f513f4655812e4c4f4c556b663557425eb7c049405063a58dd2ffff +fbfafffffefdfefdfdfdfffffcfefaffffe4d2d3de92df3f9e846c6c7569 +717152362f2e333b31756a3670d4d8d6d9d3d6e8aa435e79ebe18d1f2133 +2f2b2d2c28292d29272f2a252d3413b8ddcbb2cbd1d9decddccacedde3cc +d6d8cec7c9d6dcdde0ddd5e7ebded8c8dfddcddadae1e7e8e7e5edf5f3f3 +ece6eeeff1f3f1f3eae5eeedfcedeefef5f6faeefafffdfeffff14151718 +1a1b1b1c1c1a1b1d1e1e20221e1c1c1f2326252427262526272726242222 +2121201f1f1e2423211f1e1f222420271e222320271f2222212225272520 +211f1e1f2123232227232224221d1f2629252324232123271f21242b2f2d +272124221f1d1d1f222423272825222224242527292b2b29272525262828 +27272626302a252626242426242d322f2d2f2e2a2321282e292628282728 +2726282c2a25222d27242f2b232c312f2c2d302a272d2a2930322b292e2f +3338353d383c312c3430283338292e2f2e2c2d2e2e2f3136343d362d3334 +3135383b3935383e3b33423e39383b3d3e3d42433c3e373f3f464c4d4343 +423e413d3f393d30222421211e1c1f20271e2371821a252623a424edf8ef +edf2f0f0f2f0e9f5f6effeebfbeef6f7dd47eec2838e857f79c4d36cfbff +f8fae66393eaffffffc574c2fceefdedf6f1fcfef4f8f7fbfdf4fafbefff +fff3f4ffeef0f1fff7e6cc452f41302f41263e4238374d331d3d3f3c334c +332e2c4341374d166a702e4a5ba5f5eaeef2f4c589b7ce46242f3a4b4152 +7027bfd8de90b6fff21038263e312444f6f2ffee1ca152556f2360f2e180 +4f625f85544f4642704c5ffceef3ddf1e7f8f5fdfdfff9fffbfcfdfafdf5 +fdfafcdda3947990b3f0fff8fffcfbff9acefdfffef8fb62c0e19c653730 +2c34782f2c3e2c33426e18393d3c43574f1f412c48a1a9312a3b50927dc4 +f8f4f0f3fefffffffffefefdfcfcfdfffafcfed8c2bfc473bf1e806a5759 +62565b5b3e221b1c212a22665a2761c4c8c4c6c0c2d4962f4b66d7cd780a +0b1d1a181a1b171b1f1c1a251d19212907a7c2ac93acb2babfaebdabafbe +c4adb7b9b1aaacb9bfc0c3c0b8cacec1bbabc2c0b3c0c0c7cdcecdcbd5dd +dbdbd4ced6d7dadcdadcd3cedad9e8d9daeae2e3e7dbeaf4edeef5f1090a +0c0d0d0e0e0f0f0d0b0d0e0e10120e0c0c0f131615141716151617171614 +12121111100f0f0e1413110f0e0f121410170e121310170f121211121517 +1510100e0d0e1012121116121113110c0e1517131112121012160e10141b +1f1d171114120f0d0d0f121413171815121214141517191b1b1917151516 +181817171616211b161717151517161f24211f21201c15131a201b181a1a +191a19181a1e1c17131e1815201c141d22201d1e211b181e1c1b21231c1a +1f202429242c272b201b211d152025161b1e1d1b1c1d1d1e2325242d261d +23242125282b2925282e2b23302c2423262829282d2e25272028282f393a +31312e2a2e2a2e272c1e12131111110d0f0e13070f60710914140c8907cf +e0d8d6dbdadadcdad3dfe0d9e8d5e5dbebf5e351f7ce99a79e9284ccdc71 +faf5e7ece3679df9ffffffe187caf7e1f1dee4dee9ebe1e5e4e8eae1eaeb +dfefefe2e5f1dddddde9e2d0b6301b2d1d1d2c142d3122203d2a16332e27 +203f2e2a2235302637005357152e408ad8ced3d8dcaf76a4bd33101b2433 +283552079eb8bd729ce6d8001d0b25180b2ce0dce8d70489373a520440d2 +c464354a4a713f392e2a573247e2d7dbc7ddd5e8e6f0f1f3ecf4f2f4f8f6 +fbf5fffdffe1a89a8299bef8fff3f8f0edf08abfeef1eee6e649a2c78a59 +2a231e266a201d2f1d24335f0a282525354e47122c14308a99251c263271 +59a1dbdadce1eff1f1efefeef0f1f3f3edf2f2f7f6caa89ea154a80d755d +4648534850503317100e131a0d4f400a42a3a4a0a6a2a7b97d142d48bcb4 +63000012151214130d121614121c150d1115008da58d748d939ba08f9e8c +909fa58e989a918a8c999fa0a3a098aaaea19b8ba2a0929f9fa6acadacaa +b3bbb9b9b2acb4b5babcbabcb3aeb9b8c7b8b9c9c1c2c6bac9d3cccdd4d0 +29292a2b2d2f2f2e32303031312e2c2e2c2a292b2e2f2e2c2e2d2c2c2d2c +292728282828272726262b29282728282727262e282c2c29312b2d2d2d2c +2e302e292f2e2d2d2e2f2f2f313333302e2f3030302e2d2f302e2e302e2e +33373939363339373431313233353335342f2d31373a3334363839393838 +373a3c3b373537393c3632323435393e3f45464141474c4c423c3e3f3938 +3d3f3e3e3b38393d3f3d444e49464f49404842423f42494741434e494c4e +49484a484348474f4b544e4c515e5288945b4b4e3f454948484a49454550 +4f4b505050575c585352524f4b47525252525251504f58554f5b5658545c +5b5c5555565359575851544435322e2e342c352f28383b6888303f304fea +31ecfff7f5fafbfbfdfbfffcfaf6fefcfffcf7f3c41dc37b84a29daaa3cc +9c4af0f8f6fff4a575302c2f82b4d7e9f4fffffffffff8f3fcfffffefffb +fffbfff9f6fffff0e2ffffd3aad1dc312f4d6b746946333851665c573d2c +3f3b477b483e3941705d7b98c5c33d74418af7fff2efffd56bd6ed69c37a +5078377b522dc8dff3c6aef5d52f4e2d2e22484defffffe1379e46626a4c +69f6ea993a6f8176786b54556c5baafffbffd2fff0e8d2f5fff4fff8fff5 +fffffffffffffffff5fffbfffcfffffff8fffcff73b4fff7fffdd05fc9ed +c46e4d4b5b4d4e2f4150555656363d51575f574f523455576197732a4074 +629078dafffffefffffdfdfdfdfdfdfdfffffcfffbfeffe1d3d8df79e15c +71675b3839384446352c2c292f271c42574e7bf3e0d9d6e3eea02e1a60c1 +d4d2352033302e2b2d2f2b2c2d27222929292d2a1fb9d4cad1dfd7d4c5e1 +dad3d7ead6ebf9e1d6d8e6dce1f4e8dcdcdfdfd7dfdadfd2cdedeff3f0de +e9dfe6efeff0eae2e8e7f0e9dee6f0f7fbf0faf9fffbf2fffffaf3f4e5df +e4e21b1b1c1d1f2121202422232424211f211f1d1c1e2122211f21201f1f +201f1c1a1c1c1c1c1b1b1a1a1f1d1c1b1c1c1b1b19211b1f1f1c241e2020 +201f2123211c222120202122222224262623212223232523222423212123 +212123272929262329272421212223252325241f1d21272a232426282929 +282826292b2a262426282c2622222425292e2d33342f2f353a3a302a2c2d +27262b2d2c2c2926272b2d2b313b36333c362d352f2f2c2f36342e303b36 +393b363537353035343c38413b3a3c4a3d737f4636392a30343333353430 +2e3938343939394045413c3b3b3834303b3b3c3c3c3b3a39423f39454042 +3e4646473e3e3d3a3e3c3e3a3f3324252122261c241e18282956731b2819 +39d519d9f9efedf2f0f0f2f0f7f1efebf3f1f6f6f4fde043eeadc2e5dfe5 +d5f9c870fffff4feffb98d4d505ebbedfffffdfdf7f6f8fbf3eef7fffaf9 +fcf6faf6fff4eff9ffefdffafacba0c7cd221d3b545d532f1e233f564e4a +2e1e2d283468352d2b315943607eaba9235c2b76e8f7e8e9fcd064cbe058 +b0653b66276d4420b7ccdcb3a4eec91f3a191e164049edfffed323862847 +553c5eeddf8924546055584f3d3e544394fdedf7c7f9e5dcc6ecfff0fffa +fff5fbfbfcf4fcfbfcfdf3fef8fdf6fcfefef1fff9ff70b1fdf1fdf5c654 +bcdcad53323343373b1c2e3d42434323273e474f453d3e1e3f424c815c13 +2b5f4f7d68cbf5f7f6fcfffefffffffffdfdfcfcfdfffafbfed5c3c4c55a +be3b534c452526242e3021181a191f1a0f36493e6ae0cdc6c3cfda8c1a06 +4cadc0be200a1d1c1b181c1e1d20211a181f1c1d211f13aab9abb2c0b8b5 +a6c2bbb4b8cbb7ccdac2b9bbc9bfc4d7cbbfbfc2c2bac2bdc2b5b3d3d5d9 +d6c4cfc5ced7d7d8d2cad0cfd9d2c7cfd9e0e7dce6e5ebe7dfeef6e7e3e4 +d5cfd4d210101112121414131715131414110f110f0d0c0e1112110f1110 +0f0f100f0c0a0c0c0c0c0b0b0a0a0f0d0c0b0c0c0b0b09110b0f0f0c140e +1010100f1113110c11100f0f101111111315151210111212131110121210 +1012101013171919161319171411111213151315140f0d11171a13141618 +1919181816191b1a161416181d17131315161a1f1f25262121272c2c221c +1e1f19181d1f1e1e1b18191d1f1d222c27242d271e2620201d2027251f21 +2d282a2c272628262126232b27302a262732285e6a312126171d21202224 +231f1e2928242929293035312c2b2b28242029292727272625242d2a222e +292b273133342c2c29262b292d282e2114141112190d140a01111342600a +180722ba00bbe1d8d6dbdadadcdae1dbd9d5dddbe0e0e5f5e44ef7b8d1f6 +eff3dcfed173fff1dfeaf6b78d515c70d8fffffff8efe5e2e5e8e0dbe4ec +e7e6e9e3e7e3efe1dde9efddcce6e4b487aeb80d0927424b3e1d0d122b46 +434227151f17255a2f2622244b324b6592900a44135dcbd9cdcfe6bc51b9 +cf489f5228500e52270099aebd9589d4af05210004002930d6e8e4b90a6c +0c2a361b3eccc16f0d414f464b412d2c3c297ce3d3dfb1e3d3ccb8ddf1e4 +f4edf4e9f2f4f8f1fafafdfff6fffffffffffbf8e9f4eaef61a2eee1ebe0 +ad389cc09d482727372a2d0e202f343535151a2f3038373335112a273169 +4c051a4a315c44aad8dfe3ecf3f0f2f1f1f1f1f3f5f3eff3f5f6f6c5a9a3 +a23ba82a4841371618192325180f100c1209001e2f244ec2aca5a5b4c173 +01003192a7a60d00121315121414121415110e151311110b008d9c8c93a1 +999687a39c9599ac98adbba3999ba99fa4b7ab9f9fa2a29aa29da29592b2 +b4b8b5a3aea4acb5b5b6b0a8aeadb9b2a7afb9c0c6bbc5c4cac6becdd5c6 +c2c3b4aeb3b12c2b2b2d30323130302f3033343130312f2e2d2e3031302e +2d2d2c2d2d2c292730313131313130302d2b2a2c30302d292d3431333230 +36323232302f3133302c313131302f2f30312e3436312f33322d302f3032 +32302f303332343536373839363432302f303233363735313034393c3839 +3a3b3c3c3d3d393d3f3c3734373b3937363738393d424144423c3a404546 +3e393a3b37393e3f3e3f3f3c3c3e41413e4643404741393e444744454e50 +49455048474a494949454d524f534d55525455694c63726350595760625b +585a564d49505353534d4c55564e4b5255514f52595b5d5d5a585757615b +596b68665e655c5f595b5b59605f5e595e4d3c363232383e44454a3b275a +843c43355fff48e1fff7f6faf9f9fbf9f8f7fefcf5fffcfaf2f8b249d371 +4c5d595251a9935ceee8fcf2fcf4f2eed6931d162257b0f4f9fffbfff8ff +fff6f9fffffffffff6fffffdeefff9fbeccbc9d9e73f424c4f393b35383a +554a473c133d5083645029353d5c7a5162595c784ca046b0fff6f4feffde +45a39c3c668f3eb428b75041c0c7a56380fa6bc69148ff75a2c6abfffdd5 +d9f653456f5853e7e8a0314d6a5c626355586974a6ffe5ffe9eedcfbe2ff +fbfffffef1fffffffcfff8cb897665515d6ba3d1fbfaffffffffa2f0ffff +fde2f3a6c9e6c6555c4f565535394754544851362d534d4b5b4b37305b56 +72d9a82345626ac484e9fffbf4fdfff9fdfcfdfdfdfdfffffcfffcfeffde +d4deef9de17a698a6b202127302d282a2b232824374558493eb1d1d6e0e0 +851c1f2f50dbd6890f282c272e292a2d2a2b2d272a30303135241470f3ca +c4cdcad8d4dfe3d7d1e1cfdee9dbd3dcf3ded9ecd9d4ddd7dedff0f3e7d8 +e0f6e9e8f1daf0dde9eeeaeae3d9dcd8e4eff2fbfefcf8ebedeafdfff4f0 +f1eee7edf1f7fffe1e1d1d1f222423222221222527242324222120212324 +232120201f20201f1c1a2425252525252424211f1e202424211d20272426 +25232925252523222426231f242424232222232421272924222625202524 +2527252322232625242526272829262422201f202223262725212024292c +28292a2b2c2c2d2d282c2e2b2623262a2927262728292d322f32302a282e +33342c27282925272c2d2c2d2d2a2a2c2f2f2b33302d342e262b31343132 +3b3d36323d353437363636323a3f3c403a423f424155384f5e4f3c44424b +4d464345413832393c3c3c36353e3f37343b3e3a383b4244464643414040 +4b4543555250484f474a4244424045444442493c2b2925262a3134363a2b +15486f272c1f47fb2fccf9efeef2f1f1f3f1edecf4f2ebf6f2f4f0ffd577 +ff9d7889847a7ad6c388fff1f8eefffffffff9c35b56597ebdf3effff5fb +f3faffeff2fffafffafceffafff6ebfff4f7e6c4bfcfd8302f393822251e +2125423a392f062f4072513d17242f4c6236483f425e3487309ef8ebedf8 +fcd83e978f2b537a2ca218a94233afb38d4f79f461bb8138f66b9cc4a9fe +f3c5c4dc3326574748dedc901c334a3c46494043515f92fad7f6dde2cfee +d5f7f3fffffff2fffffdeafae1b4715e4d39435186b7e9edfcfdf9fa9cea +fffff5d7e799bcd5af3a41373e3f2127354242363f2419403d3c4a39231d +47435dc4910c2e4c57b274daf5f0edf7fdf9fffffffffdfdfcfcfdfffbfb +fdd2c4cad57fbe594b6f550d0f151c19111618121c182c3a49382a9cbcc1 +cbca6f060b1b3cc7c274001518131b18191c1c1f211d202626282a190861 +d8aba5aeabb9b5c0c4b8b2c2b0bfcabcb6bfd6c1bccfbcb7c0bac1c2d3d6 +cabbc6dccfced7c0d8c5d1d6d2d2ccc2c5c1cdd8dbe4e7e5e3d6d8d5e8eb +e1dddedbd7dde1e7efee1312121417191615151415181714131412111011 +1314131110100f10100f0c0a1415151515151414110f0e101414110d1017 +141615131915151513121416130f1313131211111213101618131115140f +13121315141211121514141516171819161412100f101213161715111014 +191c18191a1b1c1c1d1d181c1e1b1613161a1a181718191a1e232124221c +1a2025261e191a1b17191e1f1e1f1f1c1c1e21211c24211e251f171c2225 +22232c2e27232f272528272727232b302b2f29312e2e293c20374637242f +2d363a3330322e2522292c2c2c26252e2f27242b2e2a282b30323434312f +2e2e36302e403d3b333a343730322e2c32313330382a1b1815161d212421 +231200325c141a0a2fdf11afe1dad9dddadadcdad7d6dbd9d2ddd9dcd7f4 +d784ffa883948d8280dccd8bfddcddd3f1f9fdfffdd174716d85b3ded4e3 +dfe8e0e7eddde0ede7ece7e9dde7ece3daede0decca8a4b4c31d1e282810 +100c1114332b302700263362422f0d1c243f5625312427431c711b86decd +d1e0e9c82c877e1b4469188c018f2818959873365fda469f671edc5084ad +92e5daaba9c11c113f2d2cc1c27907223b2d383a2f30394277e0bddcc5cc +beddc5e9e6f1f2efe0edededdef1d9ae6d5c4b3946548abae5e5f3f1e9e8 +8cdaefefe2c1cd7999b79f31382d3434161b2936362a33180e3126253a2d +180e2f2540a97f001e35378e52b9dadadbe9f1edf4f2f2f2f1f3f5f3eff3 +f6f6f3c2aaa7b05da84840644700030b13100b0f11080e081a24321e0f7f +9da2b0b25800000223aea95f00070f0c151111120f111311161c1c191803 +0044bb8c868f8c9a96a1a59993a391a0ab9d969fb6a19caf9c97a09aa1a2 +b3b6aa9ba5bbaeadb69fb6a3afb4b0b0aaa0a39fadb9bcc5c8c6c4b7b9b6 +c9ccc1bdbebbb6bcc0c6cecd2928282a2d2f2d2c2a292b2e2f2f2f31302f +2f30323433322e2f30313231302e2f2f303131313130302d2b2f3537332e +2e3231313131322f353534333436353232343534323132342f3437363637 +353134333435353434343737383837393c3e3433323132333537393c3d3c +3a3b3b3a3f3e3e3d3d3d3d3e3c3e3e3c39383a3d383b3f41403f3f404245 +464241434444413e4245434344403f43484a48474848484d4b4a4e4b474a +484d4a464c4e4844453d3c4141434541484d48493f46434748544f3e4570 +4a505053514a474848455052565c5d595a615a524e51534f4c4d5352514f +4e4e4f4f5656576663625a5f5c615e61635f6664645f624f3c3532332d33 +30313d2b4f848440373c4dff5ed4fff8f6fbf9f9fbf9fffffffffcffffff +fff5c24adb968c9cd9b78ebe8f4de9f5fff7fcf8f0cad24d4783aadcf9fd +fcfdfdfff9fffff9fff6fffdaefffffff8fdfff6f3d5cddbcad5dc483f51 +4f43627ebc79602d2f1e2f2e26303a322c203a394a5c313ca16768831eb2 +fff2f1fcfff450ab8532286b6b634dfa4816cee6839b75ff40a7524efd95 +8cff8ff498227d9cb14b5d328fffe39a324f5f60445243535c8596d169ff +edeaffff64b3fffff2ffffffffdf9a402c314151816e783832211d51b8ff +ffffaee6fffdffd0e2b3d4f9ec4655504d5c3431544e51544d322b565847 +4d3a33394e4384cd8b17455869b1a4e0fffffbfffffffcfcfdfdfeffffff +fdfffcffffddd4e0faa6afb272855b2e2a2f332f2f302f253c1c2a304749 +41a9fee2e2871e2343253ad6d9432630292b2f2726251f21282726271e1a +30322a41f4ead1c7ccc8d7c4c8d1d5dff8e4dfdddbd9e5e6eef2e6ebe3db +e4dde2e9dbd7e8f0eadfe9d1ebe9f1f1e9eceeedf2eeebfbf9f4eeebf2f2 +fceff7f4ede6f3fef8f8fbf8f7f71b1a1a1c1f211f1e1c1b1d2022222224 +23222223252726252122232425242321232324252525252424211f23292b +272221252424242425222828272627292825252728272524252722272a29 +292a28242928292a282727272a2a282827292c2e2423222122232527292c +2d2c2a2b2b2a2f2e2e2d2d2d2d2e2b2d2d2b2827292c282b2f31302f2f30 +303334302f3132322f2c30333131322e2d31363836353636353a38373b38 +3437353a3733393b3531322a292e2e30322e353a35362c33303534403b2a +315c363b3b3e3c3532333330393b3f454642434a433b373a3c3835363c3b +3a38373738383f4041504d4c4449474c474a4a464b494a484d3e2b282527 +1f2623222e1b3d726f2b212635ec45bffaf0eef3f1f1f3f1f4f4f7f6f2f7 +fffdffffe87affc0b0bdf6d6b1e6bf79fffdfbf3fffff8d6e56a75b3d4f9 +fffbf5f3f6fcf4fcfcf2ffeffbf6a7fafff9f0f5fff1efd0c6d5c1c9cd37 +2c3e392c4b68a2624a1b21112120161f271f1a102c2732411723884d4f6c +09a0fee7eaf7fef049a2782217585a5441ef3e0cc0d66f8b6fff399b4440 +ef8b88ff8df08c11637e902b432083ffd98b203944432b3c3141477082c2 +5bfee1def6fc54a6fcfeecfffffff5ce83240e132334645159171002043d +a6fbf6fea6ddfdf4fec4d4a6c6e9d52e3d3a3749221f423c3f423b201945 +4a393c281f263a306fb875002e42569f94d1fef8f4fbfffffffffffffefd +fbfcfefffcfcfcd2c3cade888d91546a451b181d1f1b181c1c1730132225 +3835298fe6cdcc71080d2d1126c2c52e131c15171c16151511151c1e1c1d +141124271e31dbcbb2a8ada9b8a5a9b2b6c0d9c5c0bebebcc8c9d1d5c9ce +c6bec7c0c5ccbebaced6d0c5cfb7d3d1d9d9d1d4d7d6dbd7d4e4e2ddd7d4 +dddde7dae2dfdad3e0ebe8e8ebe8e7e7100f0f11141612110f0e10131212 +121413121213151716151112131415141311131314151515151414110f13 +191b17121115141414141512181817161719181514161716141314161116 +19181819171317161718171616161919181817191c1e1413121112131517 +191c1d1c1a1b1b1a1f1e1e1d1d1d1d1e1b1d1d1b1817191c191c20222120 +20212225262221232424211e2225232324201f23282a28272828262b2928 +2c292528262b28242a2c2622241c1a1f1f21231f262b24251b221f211c27 +231219441e26262b29222122221f292b2f353632333a332b272a2c282526 +2a292826252526262d2b2c3b38372f34343935383632383639363c2c1b17 +15171216120d1702255a5a180c0f1dd027a2e2dbd9dedadadcdadedededd +d9dee6e1e3ebe986ffcebcc6fedbb7eecb7cf3e6e2daeff3ebcce16e84c7 +e2fdf8e6dbdae3e9e1e9eae0eddce8e394e5eae4dbe0edddd6b3a9b5a4af +b8251d2f2b1c395391523c0f16081815090f18100c011f1b263000056a32 +395a008ce3cbcee1efe4399167120749483f2bd92500a6bd577457e81f81 +2a26d5726fea76d7720048647d1c320a6be6c0740c24313117271b292c53 +67a540e4c7c6e3ec4496edf1deefeceae2bc751803091b2c5e4b54120e00 +00369ceee6ec93ccece3eaacb984a1c8c322312d2a3b1411342e31342d12 +0b33301f2c1c14152110509b60001c2a367b72b2e4e4e4eff6f8f6f4f4f2 +f4f4f5f3f0f3f4f5f3c0a7a5b76474804a61380d0c1316121215150e2402 +0f0f211d1176cab0b45a000018000eaaad1b04110c10160e0d0804050e0f +1213080214130617bdac93898e8a99868a9397a1baa6a19f9e9ca8a9b1b5 +a9aea69ea7a0a5ac9e9aadb5afa4ae96b1afb7b7afb2b5b4b9b5b5c5c3be +b8b5bebec8bbc3c0bab3c0cbc7c7cac7c6c6262626272a2b2a292d2a292a +2a292b2e2f2f2f2f303131312c2d2f30302f2f2e292a2b2c2d2c2c2b2e2a +27292e302e2a2d2c2e2d2f332f2d3031302e2f3233313133343432323335 +3231353b3c38363735353433343535353636383838393b3d3b3a3a3a3b3c +3d3e393e4040403f3d3a3c3b3a3939393a3b3e3c3b3b3b3c3c3c393d4141 +403f3f3f3a3d4041424546454340444642403d35393e4446444040414042 +403f42414043454c484142434040403b3d413f4145453f4542443b424145 +453d4d50496c48494d49484a4b4b4f57504a4a4f4e4a4a4c5552504f5253 +514e57535050525251504a54555b545955565258585e605c605c5d575945 +322d2c2f342d37332c2c968d9b503e4754ff5cd6fff7f6faf9f8fbf9f8f0 +f0ffffbbac8ed68e8938c3b99ca1dcd2acbd9d5df2fbf8f7ff5a39a0e863 +7d96afd6fafffffffafffefcfbfffe6a6564867c67fffffffaffe5d6e2dd +dbdae84f3a4540443f73926ab23738292b303935323d2a38434d5e473671 +b67d33482997fbfff1fafffbffffffffffc9f3bfb5f356a3f1efffa595ff +a9b4e189ffeac9a6a7ff712c7a983f2d742e3090f1b31d60685a4253415f +716ba3dbd4f8f8eec8f1cce1ffffffffffaa55408e485c54485b817e9c85 +7a6058353165bcfebdd4ffffffd5e1bfacfbe23c373c343c365b2f2f3a3c +33326b2c323a373d7265312977b8ad9c423267b49da1fffffffffffcfdfd +fdfdfefffffffffffeffffdfd3dee8c9aadc466455292023272d35343230 +5d2e2729434c456df5ba4925442d435b26c7c2332e202d2e342d2a261a18 +1f2321272928302a1f10bcd5cdbbd2caddd5dde3d3c2d4cfd5d2e9decbde +f1e7e3e0e1dbe2dbdae7e2ecdfd1dcddfaedf0f2fbf4e4e6eef1f8f2f7fb +ece9f4f9fcfaf6fbfbedf0f3fffffaf6fef7f4fa181818191c1d1c1b1f1c +1b1c1c1b1d2022222222232424241f202223232222211d1e1f202120201f +221e1b1d2224221e201f2120222622202324232122252624242627272525 +26282524282e2f2b292a2a2a2928272828282929282828292b2d2a292929 +2a2b2c2d282d2f2f2f2e2c292c2b2a2929292a2b2d2b2a2a2a2b2b2b292d +3131302f2f2f282b2e2f30333433322f3335312f2c24282d3335332f2f30 +2d2f2d2c2f2e2d303239352e2f302d2d2d282a2e2c2e32322c322f31282f +2e333027373a33563232363231333434384039333338373333353e3b3938 +3b3c3a37403c39393b3b3a39333d3e443d423f403d434147474345414340 +443421201f2328212c271d1e867b863b28313ce743c1faf1f0f4f3f2f3f1 +f0e8e6fcf9b1a285ce94a964eee3c0c1f8efcae2c983fffff5f3ff5a3397 +df5f86a4badcf6fafffbf4fcf7f5f2fef6625d5c7e715cfff9fcf3fedfcf +dcd4d0cfd93e27312a2e285a77519b24281b1b2027221d281526323a432c +1c589d641a311386eff7ebf5fff9fefffbf7fdb9e6b4aded509de9e4fd98 +8ffca1a8d27af1dfc3a1a3fe61175c761b0c591b2388e9a70d4c4f422c3f +324e5c5690ccc6edece2b9e0bbd1fbfefffff799402671283c362c446b6b +8972674a3d18164ea9edaec7fefcfcc9d3b19debcc2520271f29254c2020 +2b2d24235c1d242e272d60531d1664a597862d1e54a28d93fefffffefefd +fffffffffefdfcfdfffffbfdfdd2c2c8ccab88bb28493f170f1214191d1f +1f2253271e1e32362951dba2300c2a162c4510b1ad1e180a1919211a1916 +0c0c1317171d1c1c241f1300a3b8b09eb5adc0b8c0c6b6a5b7b2b8b5ccc1 +aec1d4cac6c3c4bec5bebdcac5cfc5b7c2c3e2d5d8dae3dccdcfd7dae1db +e0e4d5d2dde2e7e5e1e6e6d8dde0f4edeae6eee7e4ea0d0d0d0e11121110 +120f0e0f0f0e101312121212131414140f101213131212110d0e0f101110 +100f120e0b0d1214120e100f111012161210131413111215161413151616 +141415171413171d1e1a181918181716161717171818181818191b1d1a19 +19191a1b1c1d181d1f1f1f1e1c191c1b1a1919191a1b1d1b1a1a1a1b1b1b +1a1e2222212020201a1d202122252625221f2325211f1c14181d2325231f +1f201e201e1d201f1e21232a261f20211e1e1f1a1b1f1d1f23231d231e20 +171e1d1f1b1022251e411d202422212326262a3229232328272323252e2b +29282b2c2a27302c29292b2b2a27212b2c322b302a2b2a302f35332f322e +322e3322110f0f131a131a1106046c637126131a24cc25a4e2dbdadedddc +dcdad9d1cde3e0988968aa7aa86ffef3d0cefff7d4ebd486f6ece6e8fa52 +2788d05485a7bcd8ebeaf1ede4ece7e5e1ede34f4a47695b46e6e0e5e0e8 +c5b2bcb3b2b3c42e19261d201646623d8b161b100e1319130a150212202b +381b03397e4606210574d5dad1e1f4edefedeae7edaad5a29ad73a87d4d0 +ea8579e68a90bb63dac9ad8b8ae44700405d0f034e0c1273d4910034392a +142415303f3772afa9d1d2caa4ceabc2eeefefefe6872f17631b2f2b2036 +5d5c7a63593d34100b4098db9bb6eceae6afb68e76c7b51510160e181339 +0d0d181a111049080914171e523f020043857f711803337e6c78e6ecf3f5 +f9f7f9f7f4f4f4f4f6f4f0f3f2f4f3bfa4a1a4876faa1e40340b05080d12 +191a191947170d0a1e1f1339c2881a0019041a30009c980b0a0012141b13 +1109000005090d131310160d00008598907e958da098a0a6968597929895 +aca18ea1b4aaa6a3a49ea59e9daaa5afa496a1a2c0b3b6b8c1baabadb5b8 +bfb9c1c5b6b3bec3c8c6c2c7c7b9bdc0d4cdc9c5cdc6c3c92728292a2a2b +2b2b2d2a292a2b2b2e32323231302f2e2e2d2b2c2d2c2b2a2a2a28292b2c +2c2c2b2a2e2b28272829292829282e2c2f352f2f2c2d2c2a2b2e302f2e30 +313131303031302c2e363832303432333230303233323232343435373738 +3b3b3a3a39393939383a3a393b3d3e3d383736363637393a3c3a38393b3c +3b39383a3938383b3e3f3636363637393b3c3b373839373a38303a3b3e3e +3b37383b414040403f3f40403d43403b3b3b3a3f413d41443f3f43444349 +46483f47464a4c423e4f414f51464842434b4c474b545d54535552535450 +4b4b4b4d515655504d4b4a4c4f4f4b464d5959594f5856574e54535a5f5b +5d57554e4f3d2d2a2a2d2a273036341f724f9a4737305bff31bcfff8f6fa +f9f8fbf9f2fafffeae13326fc132574541342848ddbd87a5ac7cf9f5fdff +f1ae36678118351d89d3ffffeaf1fdfdfdfffeffec08324249416dffffff +ffffeb8e9fb6a7d9dd413d4c5865276f8567c33c361d213a2b322727244c +3d54493f278bade8345d38a0f8fffffffff7fcf9fffff59ee1c8bdf0beed +fffcffe294ffc8d1ffd465dbedb1c5ff711a98a7435f7a682151e8e35d51 +67544e5456646b8e99d7f5fffdddfafbd4faffffffab4f929789935d5e54 +58554955506681ae96494f3a40638275ecfff0e8d3b55be8ffc0bebbbbbc +c6ffbac7cbc4c0eaffb8cbcec5cbf5f1d5deccb979d6e5ecdda38e73ffff +fffdfbfafbfbfefefffffffffffffeffffded5e0e9de8bd4252722361d1e +202b36302d3330222630464840326d46533e515b46352387cb4f362f2930 +3d363430221b1c1e26201f2124355e76cad2fdeacbd2ddd6ddd9dff8e7f0 +f6e5eaf4dae3eadae4e3d8dbe1eaebf4edf0ffebf7f0fff3e3e9fdf6e6ea +f2f4f8f1f0f5e6ebfdfefcfcf5fffefffff7fff7fffffffef3f6191a1b1c +1c1d1d1d1f1c1b1c1d1d202425252423222121201e1f201f1e1d1d1d1c1d +1f2020201f1e221f1c1b1c1d1d1c1c1b211f222822221f201f1d1e212322 +2123242424232324231f21292b2523272728272523252625252524242527 +27282a2a292928282828272929282a2c2d2c282726262627292a2b292728 +2a2b2a28282a2928282b2e2f242424242527292a2a2627282629271f292a +2d2d2a26272a2e2d2d2d2c2c2d2d2a302d282828272c2e2a2e312c2c3031 +303633352c343337352c27382a383a2f312b2c33342f333c463d3c3e3b3c +3d39343434363a3f3e39363433353838342f3642424238414041393f3c43 +4642423c3b373a2c1c1d1d211e1b252b2811623f8632211a41e718a9fbf2 +f0f4f3f2f3f1eaf2f5f4a4092864b32e6d6a685f5373ffdea5c3ce98fff3 +f9fff1ad2e576f072c1885cdfaf9e8f1f7f6f6fff5fee4002a3a3e3763f9 +f7f7faffe48897ae9ccbcc302938424f1056694ba825230b1029181d1111 +0e382b3f2f240d7295cf1b46228fecfcf9fefff7faf6ffffe992d8c1b8ed +bdecfff7fcd98ffebdc5f1c456d0e7abbffe600076831e3f60571649e0d8 +4d3f513e3a434655567986c8e7f8f2cfeaeac3e9f7fbf79f3d7c7b686e37 +382f36372d3b394f679276292f1e264e7166dcfde4dac4a74cd9edaba9a9 +a9acb7f3abb8bcb5b1dbf2aac0c3b6bbe4e1c4ccbaa664c0d1d8cb947f65 +f6f9fefafafcfffffffffdfdfcfcfffffafcfdd2c2cacdc069b3070c0c24 +0c0d0d171e1b1a25261b1d23342f2112532e3a2437412c1e0d71b63a2019 +151b2a23231f140e10121c16121418295166b1b5e0cdaeb5c0b9c0bcc2db +cad3d9c8cdd7bdc6cdbdc7c6bbbec4cdced7d0d3e5d1ddd6e8dbcbd1e5de +cfd3dbdde1dad9decfd4e6e7e7e7e0ece9ebf9e4f7e4fbf1faeee3e60e0f +101111121212120f0e0f1010131715151413121111100e0f100f0e0d0d0d +0c0d0f1010100f0e120f0c0b0c0d0d0c0c0b110f121812120f100f0d0e11 +13121012131313121213120e10181a141216151615131214151414141414 +151717181a1a191918181818171919181a1c1d1c181716161617191a1b19 +17181a1b1a18191b1a19191c1f201616161617191b1c1a1617181619170f +191a1d1d1a16171a1f1e1e1e1d1d1e1e1b211e191919181d201c1f221d1d +2122212722241b2322262317152618262a1f231d1e2728232730382d2c2e +2b2c2d29242424262a2f2e29262423252828241f24303030262f2b2c262c +2a31322e2f292a25291a0c0c0d11120d1315100048256e1d0c032acc008b +e3dcdadedddcdcdad3dbdcdb8b000f4890136a7377706686ffedafcdd89c +f8e4eefaefa923485b0023127cc1eaeadce7e9e6e6efe4edd1001523281e +4adedcdee5e8c868738a7cb0b8201e2f374100425336971715000019070a +0000001f152e2213005373b10738157fd4e0dfebf6efebe3ededd982c7af +a5daa9d8ede4ebc87ceaa9afddad41bad195a7e646005a690e3251450234 +c9c236273c2722292c38395a68a9cadad6b5d3d6b1d9e8eee8912f6f705f +662e2f262c2c212e2b415a866b1e2410153b5f53cceacebfa58223b2d496 +94939395a0dc94a1a59e9ac4db90a4a7a3abd4caa6a8968549a9b9bda76d +604be0e8f4f3f6f7faf9f7f5f4f4f6f4f1f1f1f2f1bca2a3a59a4ea20005 +0118020306101a16141c1c0b0c1020190d003c16261328321d0c005ca329 +120e0e16241d1b1507000206120d0a0b0c1b404f9395c0ad8e95a099a09c +a2bbaab3b9a8adb79da6ad9da7a69b9ea4adaeb7b0b3c4b0bcb5c6b9a9af +c3bcadb1b9bbbfb8babfb0b5c7c8c8c8c1cdcaccd9c4d7c4dad0d9cdc2c5 +282b2d2d2c2b2d2f2c2a2a2c2d2e3034323231302e2d2c2c2c2c2d2b2929 +2a2c25262728292826252d2e2e2c29282a2c23242e29272c262b2e2f2d2a +2a2d2f2f2e2e2e2f2f2f2d2c2e2d2d2f302f2e2d303232303133322f302f +303134363736353535343332323138383735373b3e3d3736363636373839 +383837383838373638383632343a3d3c3e3c3a39383839393b37383a3b41 +42393f3f4244433e3e403a393d3f3e3e3f3c3d3f3d3d3f3d3c42413e4144 +403e4141434741423a424145494f474a434951444f4c4c4e4d494a4e4946 +4c504f585f5959535053534d48465554545556575553505653564c524f52 +525552595f5c5e57574f503f312e2d2d2b2f272e3e2b5151a04a382c68ff +3bb0fff8f7fbf9f8fbf9fefaf9ffb513258660588660b5bf9995838680bc +ac83fffef5f0fbc9273a4621353cfcfffffff3fffffdf8fffeffff242f54 +79657efffffffbf9e2c6e0d9cfe2e950282a3d3a228e8a28242c2d399843 +3e3545bc5b9f3b3d523e2da54c8a5d7251bdfffffffef7fffffdfbffd953 +a28d87898bd4fbffffcd699e828178bd3a7a896d7e8d4e3686ffb7193ea5 +4497e5f5be466f504b4e54596673cfe8f4f8e7ebffeedaffffac46795d6f +4f4f465c525666777d937260526e7b9a68473c4c4677f4fae2ffb9d273e2 +eef0fafafffff3f8f5f6f8fbf1f5dcf7ebe7eef7ece8eee8a7bc63c7f8ef +d4839881fffffffdfffefbfbfefeffffffffffffffffffdcd7e6d0fc9ab0 +1d40333b21232328322c29312f2c23233b3a49502a2a342d5e533c3c3344 +c381717a2c413e332f2f241d1c1c28262f3b3749667d86c1fcfbb5ccccd2 +d2c1c3dac0c8d8cccbe0d7d9ddd4e1efdde5e2efe8e8e2dfcedbebe2dcd7 +e1f8d4d8d5e1eaebeee6ebf1e2e1e8e2e9fbebf2dce9f8cff1e3f3e0e8de +daed1a1d1f1f1e1d1f211e1c1c1e1f2022262525242321201f1f1f1f201e +1c1c1d1f191a1b1c1d1c1a19212222201d1c1e201617211c1a1f191e2122 +201d1d202222212121222222201f21202022232221202527272524262522 +2322202124262726242424232221212027272624262a2d2c272626262627 +2829272726272727262528282622242a2d2c2c2a2827262627272a262729 +2a3031282e2e3133322d2d2f27262a2c2b2b2c292a2c2a2a2c2a292f2e2b +2e312d2b2e2e30342e2f272f2e32323830332c323a2d3734343635313236 +322f353938414842423c393c3c36312f3e3d3d3e3f403e3c393f3c3f353b +383b3d403b424643433c3d383b2e2021202121261c23321d41418c362216 +4ef4229dfbf2f1f5f3f2f3f1f6f2effcab091b7849488f79d9eed5d5bfb6 +a2d5c391fff4eff0ffd228363f1a313af6fffbfbf4fffff4effef5fefd19 +24496d5972fff6faf3f1d8bdd8d1c4d4d83e141627240d756c0807121726 +862e271c2da4448a25273823138d3470435a3babf6fdfffdf7fffffffaff +d24c9c8a868a8ed7fcffffc76397757267ac2b6d8165737e381861dc9300 +26963b92e0eeaf345839353c444a525fbcd9e6edd9ddf9dcc7f3fb9c3a6b +4a5630291c2e202434474d664230213e5376442721363466e5ebd3f3aac4 +64d3dbdce6e8f4f8e5ece9eaecefe5e9cee9e0dee1e7dbd8ded995aa4fb3 +e4dcc5748975fefcfffdfffffffffffffdfcfcfcfffffafbfcd0c4d0b5dc +788f00251c29131510131a17162325251a16291f282d0e0f191242392222 +1d2eae6c5b63182c2b201e1e160f10101b19222e293b596c6ca4dfde98af +afb5b5a4a6bda3abbbafaec3babcc0b7c4d2c0c8c5d2cbcbc5c2b4c1d3ca +c4bfc9e0bcc0becad3d4d7cfd4dacbcad1cbd4e6d6ddc7d4e5bcded0e2cf +d7cdc9dc0f12141413121416110f0f11121315191515141311100f0f0f0f +100e0c0c0d0f090a0b0c0d0c0a09111212100d0c0e100607110c0a0f090e +1112100d0d1012121010101111110f0e100f0f111211100f131515131315 +14111211101114161716141414131211111017171614161a1d1c17161616 +16171819171716171717161519191713151b1e1d1e1c1a19181819191a16 +17191a2021181e1e2123221d1d1f18171b1d1c1c1d1a1b1d1b1b1d1b1a20 +201d1f221e1c1f1f21251d1e161e1d21222620231c222c1f2b28282c2b27 +282c241f252928313832322c292c2c26211f302f2f3031322e2c292f2c2f +232926292a2d2930322f30292c262a1c1010101115170a0d1a032727741e +0b0035d9047fe3dcdbdfdddcdcdadfdbd6e39200005d2a318a7ee5ffedf0 +d7caacdccb94faeae3e6fdcf222a2d08252de6eae3e5e4f4f1e5e0efe4ed +eb051033553f58e3dadfdcdabd9cb3aca4b9c4300b0d1c17006154000003 +0915721b15081588256d0d122b12006b1255324e309ddee1e6ebeffaf1ea +e6edc23c8c7974787bc4ecf1f1b95385645f5398185a6e505d67200044bf +79000a771c74c3d29820482b272e3537373e9cbac9cfbec3e2c8b6e4ed8d +2c6043512d281d2e212535474b633e2c1d3a4b6a36180e212052d2d6bcd8 +8b9f3bacbdc4ced0dcdfcbd2cfd0d2d5cbcfb4cec2c1ced7c9bfbdb26f86 +349acbbe9e4d6a5beaecf4f5fbfbfaf9f7f7f6f6f6f4f0eff0f2f0baa3a7 +8ab65d7e001e141f0a0c0a0e1612101a1b150903150a151900000601342a +131108199b5b4e5b1127271a16140902040413131c28203049585184bfbe +788f8f959584869d838b9b8f8ea39a9ca097a4b2a0a8a5b2ababa5a293a0 +b1a8a29da7be9a9e9ca8b1b2b5adb5bbacabb2acb5c7b7bea8b5c59cbeb0 +c4b1b9afabbe282c2f2e2c2b2d30302d2e2d2c2a292b2c2c2c2c2b2a2a2b +2a2b2b2a292a2d302a2b2c2d2e2c2b2a262a2d2c28272b2f2b2e3b322a2d +28302f302e2a292c2e2e302f2e2e2f2f2c293235332e2f33322c30343635 +3436342f33303031353939383334343434343333393a3938393b3c3a3937 +3735353434343537383735333333393a3835373b3b373a39393b3c3a3939 +3a37383b3c413f3331333941413c383937373e434243443f43413f434844 +4045454044484544464443463f413b46474d4c494e42474a404f4d4e4c48 +46484b4b4d4d5351494f554c5e53515b5c514c505353514f4e5054575857 +525a51524d5354554e5459585a525a52534435332d2d2f35342d273b5250 +a44e313162ff60acfff9f7fbf9f8faf8f7fbfbffb22831aa822778f7e266 +1608125b91d1927cfffdfffcef4e0f42a121393efffff9fffdf4f8fffdff +fbffff1040ada83440fff7fae9c9e7dad6e3e3dcf3bcb4c3941a117d5c30 +8ad5ccf5ffa98e98fafae3ece2f5e34374c0515267c7fffffffffffffffa +fffffffff5a56b5bb6b695d1fffbfdffd7d2dadde1f26d7aefa993df5836 +9fd2ff248bc04fffd9e4bb427740465d4e6c7472ceedd6f3fff5ffffe274 +64324178564a5b414574b4edffffffffffffffdd899d765951524f45a7f4 +ffffb5cf7bffe8e0edece2ecf1f5e5eae9defcecf2dddee4dfe5e4e5ebe6 +a3c14fe1f1f6d3809597fffffffdfbfbfdfdfefefffffffffffffcfdffdc +daefa2ca9eaf1a4e4a2f1a1f1e202a2a2932342e273a675b6583b5576048 +5262533932297ba0a2b3304d372720201d19191928282e34282e1f1171ee +ccccc2e9c8e1d1dcddcbd1ddf2e0e0dfdaddece6deede4ecdce7dde3f3fc +f5fef0f1f7f9f6ebe5eff4fefff5f0e6e5f0ebeef4dfdeefe2ffeaf2ffde +ffdff7e5f7f4f3ff1a1e21201e1d1f2222212021201e1d1f1f1f1f1f1e1d +1d1e1d1e1e1d1c1d20231e1f202122201f1e1a1e21201c1b1f231e212e25 +1d201b232223211d1c1f21212322212122221f1c252826212226251f2327 +2928272927222623202125292928232323232323222228292827282a2b29 +28272625242424242426272624222121292a2825272b2b27282727292a28 +27272926272a2b302e2220222830302b272824242b302f30312c302e2c30 +35312d32322d31353231333130332c2e283334383732372b303329383536 +34302e30333336363c3a32383e35473c3a44453a35393c3c3a3837393d40 +41403b433a3c363d3e3f383e4342443c433d40332423201f1e24241e192a +3e3a8b351b1b4af04594fcf3f1f5f3f2f4f2f1f5f3fea81c2599671174ff +fa8a4b454c8cb2e6a181fdf0f7f9f25311409a1a3339fffdedfbfef6f5fb +f6fef2fbf60535a19c2832ffecefdfbfdcd0cdd7d5cde2aaa1ad7e050064 +3e126dbbb6e0f5937580e0e1ccd5caddc92a5ca8393a4eb0faf8fdfff9ff +fffafefffffff2a26959b2b493cffff8fafed1cbced0d2e35e6be29a82ca +3e167bade10777b146ffd4daac2f602830493c5b5f5ebee0c8e8fee6fbf1 +cd5d491a2f643726341a1e4b8cc5dff2f2edefecc69d495f3c282c373832 +96e5f5fd9eb96cf3ded5dedcd2dce1e7dae1e0d3ebdbe6d3d5dad4d8d3d3 +dbd691ae3bd0e1e5be6c858cfefcfbfcfcfefffffffffffdfcfbfafffcfd +faccc6d686ac7c8e0033311b0c110b0b151518242a271e2f56424663993d +452d3747391f1b13668b8c9d1c3922140d0f0c0b0c0c1b1b21271a201100 +57d1afafa5ccabc4b4bfc0aeb4c0d5c3c3c5bdc0cfc9c1d0c7cfbfcac0c6 +d6dfdbe4d8d9dfe1ded3cdd7dce7e8ded9cfcedbd4d9ddcac9dacdecd5df +f1cbf0cce6d4e6e3e2ef0f111613131014151513131312100f0f0f0f0f0f +0e0d0d0e0d0e0e0d0c0d10130e0f101112100f0e0a0e11100c0b0f130e11 +1e150d100b131213110d0c0f11111211101011110e0b141715101115140e +12161817161816111512101115191918131313131313121218191817181a +1b19181716151414141414161716141213131a1b1916181c1c181a19191b +1c1a19191916171a1b201e1210121820201b171815151c212021221d211f +1d2126221e23231e22262322242221241b1d172223272620271b20231b2a +292a28242224292726242c2822262c23352a2832332823272c2c2a282729 +2d2e2f2e293128272428292a23292e2d2f27312a2f2114131012141a1409 +001025227521060430d52778e4dddbdfdddadcdadbdfdce78f040b7f4c00 +6bfffe965d5a609dbbeba684fae7e8eae94c063388072326eae4d3e4ece8 +e6ebe6eee1e8e200218b840e18e3ced3c4a4beada6b1b2aec896929f7000 +004e26005baaa1cbdd7c5f68c7c3acb5aec5b816428c1d203aa0eae5e4e4 +e3eef6f0eaeaececdf8f5442999b7ab6ece5ebefc3bbc0bfbfce4b58cf85 +6eb527006192c200569025e1b6bf951e521c233e3049443d9dc0abcce4cf +e6ddbc4f3e10235b3526371d214f8dc6e0f3f1edefebc79b40522e171924 +282386d2dcdf7c9241c9bbb7c1c2b8c2c7ccbcc2c1b5d1c1ccb8b8bfc0c5 +bfbbbab26d8d20b6c7c99f4b6470eaeff5f8f7f7f7f7f5f5f7f6f6f4eeef +f0f1ebb5a5ae5e88637f002c2a12010805061010111b1e170d1d422e324e +8326301a26362a0e0900537a7f9213321f1009080402030415151b211115 +04003cb18f8f85ac8ba4949fa08e94a0b5a3a3a49da0afa9a1b0a7af9faa +a0a6b6bfbac3b6b7bdbfbcb1abb5bac5c6bcb7adaebcb5babeabaabbaecc +b6bfd1abd0aec8b6c8c5c4d12d2c2b2b2b2e30322c2c31302f2e2c2c2c2c +2b2c2d2d2b292827292d2e2c2c2e2f2f2e2c2a292b2c2b2a2a2a29282a2d +2c2a562e2c2824343032312b2b30322f282c2e2d2d2e2f2e2f30302f2f2f +2f3032332c31322e3331323130333637333035303634333531383a38303f +3a37363d3533343537353638333e323a343538323b3d36333b393741393d +4142403d3a3941343342424d3b3738443641393f4440433b3f433f444942 +4141404347413f484444474a4b48474747444444423f40433f44494a4949 +47444a4549454e485050484e4f5057554c474d505251535859575456524d +4f555651505c5e5c5d554f55605d5b5a5854575b534e5947333734343439 +313e3338c59ea26432306fce9797ffeefeeef9ffecfbf9f8f9ffe50e438f +511d5afdfbf6eaaa5b6a95d4958bfffefdffffe316b7e8893033f2ffffff +f3fbf4fffffdfbffff123f5f514353fff4d4e8feffdadfdbeae4e7e3ebff +df2744ffc582afedf7c829423551b0342f9fd8e8d42534684065428fbb9b +88d5c3fcffff6aecdca5c0fd96adffc9c5f7f393fffeffffffffffffa7a1 +f4c4cadf4d617f70ff34a25930e8e9e1c33e8c5e5455646a756adcdd68ba +fff3ffff6d3659594954594e4f9ef0fffffffffffffffffffffff6b6a17b +5c474a4f44d3ffffabda94f2e0d9eff1e9e4d1c4d0ebe9e1ecd5bacde1e6 +e1faf3eaf6ef96a066e0f1ffd39896b7fffffffdfefbfffdf8f8feffffff +fffff4f0fcc5dbfd61ddcb972d44323420171a1f21282b28372a1e2b3a6d +ff8bb76d6b77dbff9d3b5251423786ab3c5f302c25201c1816151a21222e +342e2a14abf2d5dcddcedddce1c5d9dbdeead8cde3e2dfdadee6e5dce4e6 +ecdfdedeede7e8eaf2e6efefeceeddedf3fffcf0f2e4f2f0f1edf4f1e9f8 +fbecf6fbfffaf4fdfff5fdfff5f71f1f1d1e1f2224262023252726252323 +201f1e1f20201e1c1b1a1c20211f1f212222211f1d1c1e1f1e1d1d1d1c1b +1d201f1d49211f1b17272325241e1e2325221d2123222223222122232322 +1f1f1f2022231c21221e232125242326292a262325202624232521282a28 +202f2a27262c2422212424242527212c222a24252822292c25222a282630 +282c30312f2c29282e21202f2f3a28242531232e262c312d30282c302c31 +362f2e2e2d30342e2c352e2f323536333232322f2f2f2d2a2b2e2a2f3435 +3434322f3530343039333b3b3138383a403f3631373a3c3b3d4243413b3c +3833353b3c3837434543443c363c454242444442474d443f4a3822262220 +1b1d1b291d1ea57b8144181a59b47579f9e9f8e8f3ffe8f6f7f6f4ffda00 +327a36034af6feffffc97c88aee6a08ffef6f4f9ffdc0baad97a2428e7fa +f7fef1fcf5fefff8f4fff7073250423443fce6c7dbf1f8ccd1ccd8d2d5d0 +d8f2cb1330f3ac6997d7e2b3142a1d39981c1687c0d1bf111e51294c2875 +a28172c5b8f7ffff60e0d5a1befb91a4f9bab4e8e68cfffcfdfcfefffafe +9b91dfaeafc331426052f9198d4a27e3e2d7b22972423a3e4f555d55cfd4 +5cabfde7fff7581630322d352515217ad6f8fcf9fefaf9f6f0efede58f48 +3b2a28262f3832c2fcfb83b783f0e7dee6e2d9d3bcb3c7e8e5d4d0bab0c9 +d6dbdaf2e3d6e2dc818d55d2eaf9b47882aafef9fefcfdfbfffefafcffff +fcf8f3f9fffdf5b0bedf48c3a875102b171e0f09090c0e171d1b2d231723 +2b5bf9709d53535fc3eb84213b3a2b207095264818130f0c0a0908070f16 +172427221e0391d3b6bdbeafbebdc4a8bcbec1cdbbb0c9cac5c0c4ccc8bf +c5c7cfc2c4c4d2cccdcfd7cbd4d4d1d3c2d2d8e6e3d7dacddedddddae0de +d6e5e8dce3eaf0e9e3ecece2eaf0e4e6120f100e11121616101215161514 +1212100e0d0e0f0f0d0b0a090b0f100e0e101111100e0c0b0d0e0d0c0c0c +0b0a0c0f0e0c38100e0a06161214130d0d1214110b0f1110101111101112 +12110f0f0f1012130c11120e131114131215181915121510161413151118 +1a18101f1a17161c1210101215141517131e131b15161b131b1c15121a18 +1620181c20211f1c19181f121120202b19151622141f171d221e21191d21 +1d2227201f1f1e21251f1d26201e212425222121211e1e1e1c191a1d171a +212221211f1c221d211d26202a281f2326252e2a211c22252726262b2c2a +272b2722242a2b24232f312f30262226302d2c2d2c2a2e332d2a37251216 +141516190e1606058e67703507054199595de1d3e2d0dbe8cfe0e2e1e0ea +c400185f21003decf7ffffce8390b3e8a28ef8ebe3e6edca0097c4650e14 +d3e5e4ebe2ece7efeee5e1eae3001f3d2f1f2ae1c9a7bbcfd6a7aaa3b0aa +b1afbad7b20018dc96537fbfc796000e031f7e0000659eb1a400093f1738 +115a84665aaea6e4edeb47c6bb88a7e27483d49189c1c670ecedf1f0f2ef +e7ea857aca979aae1c2d4b3adf00702d0ac6c8be9e1663342b2e3e404136 +afb54294e8d1eae3470b2a2d2932291b247cd7f6faf4f8f1f2efeceae8dd +863b2c171313243026b0e1d85f8f57c0bdb6c5c5bfb9a197a6c5c2b4b8a5 +97b0c2c9c7ddccbec7bc626f39b7d0e2a2635f87eaf0fbfaf8f1f1eeecee +f7faf7f2e9ecf0ece59ba0bb20a2946908240e1105000105070f14122113 +05101847e85b84383745abd5701029281b10628819401816110d08060504 +0b10111b1e16100076b4979e9f909f9ea4889c9ea1ad9b90a6a6a29da1a9 +a89fa6a8afa2a3a3b4aeafb1b9adb6b6b3b5a4b4bac7c4b8b8abbbbcbcb9 +bfbdb6c5c8bbc5ccd2cbc5cecec4ccd2c6c82d2d2c2c2c2d2f2f28272524 +2225292d2c2c2b2b2c2b29282a292a2d2d2c2d2f2f2f2e2c292727282a29 +292a2927282c2b233c242d31282b2d2e2d2a2a2c2d2b2d2f302e2d2f3231 +2d2c2c2e3335353437332f3b3a2e2e2f30303133333330303c3133374146 +3b3839372f39353a3b423c3a3a3c3d3c3c3f3d43393f3c383b334a473b35 +3b3c3e483e40424342403e3d3b3d3e3f3c5042383e443a403a4344444542 +43454344443f42413f424742404849474749484544454647494c4f515353 +5454525051524f4a4c4c4c4f4b4b4c514f555656544d505d515353515255 +55536064646160615d555e5e58535353555c645756646557545d5d4d4737 +2b3330322e3c3d392f30988da0632f287dbe6e9efff7f9fffef3fefcfeed +f7ffff465abbcf7c92fffbfdf3f7f1cba1b39ea8fcf6fdf8ffff244242e0 +634f91b9fff9f8f1fbf9faffffffff0d83903d5b53ffddf5ffffd19adbea +dfe0edf2ddf2dc2f78ff375593fffc84397c647ccb7ca8ffdbf4ff264c52 +94eb478e9e6f76ffe7ffffff3f60634e3f927254cfd5b1c5dca9ffffffff +fcfefdffa18af0dce7d37b3e413dff432caea3ebeee7f149615f5150605b +6ec0ffcee0fffffff25f2e59565f573e56a9fffffdffffffffffffffffd6 +b7b9dbdadcb980794c464476afd3d4f991c7fdf5f0e2e4e3e3c7e6eaeaef +f9ece2f2f2f4f1f8ffffffe8a5b9a876feffbead9c939ffffffbfffefbfa +fafdfdfffefffffef4f8ffc9cbf44ce6c076313e3235251a191a1b242b2a +2e30271f29294fa53f5990dcffffb11f2e3c402a3a413f5e272724221f1c +1a1a122029322e2c2d2bc7eccdfcdfd7ced0e6d5e2f4f0e1d6d1e7e0dade +effdfcf2d5eef3d7e4e9d5ddfff9f9effffffffdfffff2f7e6e3fee9fff4 +ececfbfffafff3f6fcf8fdfff6f7fcf6fdffffff20201f1f202123231f1e +1c1b1b1e2224211f1e1e1f1e1c1b1d1c1d20201f20222222211f1c1a1a1b +1d1c1c1d1c1a1b1f1e162f1720241b1e2021201d1d1f201e222425232224 +2524201f1f212325252426221e2a291d1e1f23232426262625232c212327 +31362b2829271f29252a2b32292727292a292b2e2b31292f2c282b233836 +2a242a2b2d372d2f3132312f2d2c282a2b2c293d2f252b31272d27303131 +322f30323031312c2f2e2c2f342f2d353432323433302f30313234373a3c +3e3e3f3f3d3b3c3d3a353737373a3636373c393f40403e373a473b3d3d3b +3c3f3f3d474b4b484748443c45453f3a3a3a3c41483b3c4c5147464f5141 +3a281b221e1e15232a281b18786a7f461a176ca64d80fdeff1fef3ebf8f7 +fbeaf2fcfa3645a3b6657ff4f3fdfaffffdfb3c1a7a9f8eef4edf6fd1332 +30d0534084b1fff6f5effcfaf9fcfffef50073802c4a43f1cfe8f7fbc38c +ccd8cecfdae0c9dfc91e64fb213f7deee77022654c64b3648feec3ddfa15 +393c7ed42f7684555ef5daffffff2f4f57483d906b47bcbf99aecc9effff +fffefafcfafe967adac2c8b45c222622f329189e9ae4e7dbdf3346443637 +4b4755acffc7d1eef5f7e754193b2a3130162275eaf7eefefffffcf2f3ee +c382594950434c3f2e44272d30618da28ab467b4fefaecd7d5cfcbb4dde8 +e6e2dbd0d8ede6ebf0f6f3faf3d38ba19366faffa18a848190fafdf9fffc +f8f8f8fbfdfdfaf6f4f6fffffcaeacd736cf9c501223171f150c08090a13 +1d1e242920171c183a8c274079c5eefb980617252913242b29480f0e0e0e +0c0c0c0c07151f282220211aadcdaeddc0b8afb1c9b8c5d7d3c4b9b7cdc8 +c2c6d5e3dfd5b6cfd6bacacfbac2eddeded4e7f5e4e2e7e5d7dccdcae6d2 +ece2d9d9e8eee7f1e3e6ebe7ecefe5e6e9e3eaf2eeee10100f0f10111313 +0e0d0b0a090c10130f0e0d0d0e0d0b0a0c0b0c0f0f0e0f111111100e0b09 +090a0c0b0b0c0b090a0e0d051e060f130a0d0f100f0c0c0e0f0d10121311 +101214130f0e0e101315151416120e1a190d0e0f12121315151513121c11 +131721261b1819170f19151a1b22181616181b1a1b1e1d231a201f1b1e14 +2a261a141a1b1d271d1f2122211f1d1c191b1c1d1a2e20161c22181e1821 +2222232021232122221d201f1d2025201e2623212123221f1e1f20212326 +292b2d2d2c2a2826272825202222222521212227242a2b2b292223302426 +26242427272633373734333430282f2f29242424262c32252534392e2c35 +392927150b121013101e1c14020061566e360903528a2e64e6dcdce7ddd4 +e2e3e8d7dfe9e41d2a89a0536ee3e6f1f2ffffdeb5c1a4a3efe1e3d9e3e8 +001b1ab73c2b719eede5e6e0eceae7e9eae9e10063701a362cd7b2c8d5d8 +a067a5b0a3a4b2b8a6beab024ce60c2865d1c84f0346304a994a71cf9fbb +da002a2f73c41554613446e2c9ece9e415353f3026774e2491906b84a882 +ecf1f4f5eeede7e88063c3abb39f480d130ddb1000847dc8cdc3c91e3331 +2323362f378bdfaabadae4e5d3400830273131172677eaf4e9f8f8f6f4eb +edeabf8059474b3c433420361f28275072826d93418ad2d1c7b7b8b6b196 +bcc2c1c2c3bbbfd7d6dadbdfdce1d8b67085784cdfe89377605b7bf1fcfa +f8efe5e3e9eef3f6f1edeae9f1f4ee9b90b511af8c470d1c0c1208010001 +020b141218190e04090427760b215aa6d4e3820005131903161d1b3d0f12 +11100e0c0b09030f161e1612130892ae8fbea1999092a998a5b7b3a49996 +aaa49ea2b2c0bfb597b0b69aa9ae9ca4d0c1c0b6c9d7c6c4c9c7b9beaeab +c4b0c9beb8b8c7cdc7d1c2c5cdc9ced1c9cacbc5ccd4d0d030302f2f2e2e +2e2e2c2b262323272d312d2d2b2a2b2a2a292c2a2a2c2d2b2c2e2f30302e +2c2929292b2a2a2c2a28292b2829332b2c322e3034323233333131322e30 +302d2d2f3131322f2e31393c3b393f3b394a493736383235353635343435 +503d3430373d3433393931363139373b3e3c3b3c3b3837393b3c383d413a +3d3848463f3e43413e4241403f3e3e3e3e3d3c373a43454e454a3f3f3f41 +3f494244444746464a4743434949474c524c474a464545494a4b4c4f4f51 +504e4f52504a4f4d4b4c5255514a4e5350594c504b535153535350474e62 +5b5b5a595b5d5c585c6164646566625b5955555656575854645f5b5b5e61 +5c584e5255423537302f34322d272a2f697bab5d221e7fb05ba3fafffefc +fcfafffcfbfff3fff61a65a82d5d6bdcfff5f0e6edf4ecf8fcf0fffff8f6 +feff355e42d49143fffff9fcf2f6fffefaffffffff1372621d6e3dffffff +fff9e4d2e6dce3ebe7dbe5dac92c50e5227b88d3aa3c577b5d59a4a03f4f +5356a4232f2f68993e42453236d5b0feffff39b7ffa9b8f34f2eccedbcc2 +e16bf8f9ffffffffffec9497ffeef0e181394558b95edbf1ffeee8f1fed7 +963d2d3c3f4988ffffbbf2ffffe33038424859534b9affffffffffffffff +ffffe3b9b3d4edeff6fffff9cbcf67404453838ac0ffc1e2ffeee1bedbff +fffff1dbdef7fffffef4faf1fdfefffaffffa1bcbb35fffcaeb798aa60ff +fffefbf9fffffffffffef8f8fffffcfaffdecaf046fec14b38363037291e +1d1d1e242b291e2b0a526e666b385094d3ffffeb77364341393968464a5f +212124231f1b1919161d26302a312247f2dfc8e1cfc8d6d6dbe7d8cac9db +e4d1e6e2e0e0dfdbd2cadee1f1dfd6e9d7dee1e1ead8cfd5cde1f6d4fde8 +d5f6e5e5e7e6ebe5e5e7ecffe7f4fbf7fbfbe9ebfdfbfdffffff23232222 +22222222201f1d1a1a1e242822201e1d1e1d1d1c1f1d1d1f201e1f212223 +23211f1c1c1c1e1d1d1f1d1b1c1e1b1c261e1f2521232725252626242425 +232525222022242425222124292c2b292e2a283939272628222528292827 +2728402d2420272d2423292921262129272b2b29282928252628292a282d +312a2d2836352e2d32302d31302f2e2d2d2d2d2c29242730323b32372c2c +2c2e2c362f313134333337343030363634393f393437313030343536373a +3a3c3b393a3d3b353a3836373d403c35393e3b44373b363e3a3c3c3c3a31 +384c454544434547464243484b4b4c4d4942403c3c3d3d3e3f3948433f41 +484d4a463e42443325272322282828232322546192481513749f4188e8fa +efedebebf3f1f2fbeafce5054d90194d5cd1fef3f3f0fcfffbfffff0fff7 +edebf1fc244e32c48034f9fef2f9eff4fffdf7fafffcfe0662520c5d2ef5 +f1fdffecd7c3d8cdd4dcd5cbd2c9b81c3ed30d6572be9527426645418c88 +27383c4291111c1b54862a2e2e1b20c3a3f6fff929a5f7a1b3ee4821bad6 +a5acd061f5f9ffffffffffe78c88eed5d4c2621c2b3f9d44c7e2fae5dfe3 +ecc17b2214262d3771fcf7b2e2f0f8c61b27313236271a6de5fafbf3ffff +f8eeecbf7c4230445349424a4a504b76322232384a31468669a9fbe5ddba +cdf6f8fce6d5d4e8f6f7f2ecf1eefffffdeaece8829a9c20fbf89e9d778c +4bfbfefdfbf7fdfefbfbfafafafaf9fefffaf9bdafdc3aeb9c1e10171a25 +18100c0a0b131d1d142401475f54541f387dbceaf9d561202c2a2222512f +3349090b0e0f0d0b0b0b0b1219231e251436d8c0a9c2b0a9b7b7becabbad +acbec7b7cccac8c8c5beb5adc1c4d4c2bccfbec5c8c8d1bfb6bcb4c8ddbb +e4cfbcddceced3d4d8d2d2d4d9f0d7e4eae6eaead8daeceaecf1f4f31313 +121212121212100f0c09090d1317100f0d0c0d0c0c0b0e0c0c0e0f0d0e10 +111212100e0b0b0b0d0c0c0e0c0a0b0d0a0b150d0e141012161414151513 +1314111313100f11131314111013191c1b191e1a18292917161812151718 +17161617301d1410171d1413191911161119171b1a181718191616181b1c +191e221b201928251e1d22201d21201f1e1d1d1d1d1c1a151821232c2328 +1d1d1d1f1d27202222252424282521212727252a302a2528201f1f232425 +2629292b2a28292c2a24272523242a2d2922262b28312428232b282a2a2a +251c233730302d2c2e302f2b2f3437373839352e2a26262727282924322d +292a3135322e272b3220151712121c1c14080602394a7e3502005881206b +d4eadcd8d7d6e0dfe1ebd9ead3003576003445bbebe4e8e7f5fff8fdfae4 +f1e6dbd7dee710371bad6c1fe6ebe0e8e0e5f0ebe4e6eae5ea005242004b +19dbd6e0dfccb7a2b3a6adb3afa7b2ab9e032abf004e5aa1760823492b29 +746e0b191a2173000e104b770f0d0c0008af92e3eadf0f8de18e9fd82c01 +94ad7c87b248e4edf5f6f4f1efd37771d6bfbfae500a1a2b872bacc5dcc8 +c2c8d4aa660f0011191f52dbd793cbdeeab80a15212532282072e1f1f3ea +f3f3ede4eac08048364d5f554d5351554a722e1a2627371f3977518bd6be +b897b0dadddec6b1b1c9dbdfdad7e0dbebe8e0d0cfcb667f8003dddb8786 +546a36f1fbfbf1e8e9e8edeff1efecececf2f6eeefae94b712ca8c191014 +0d170e070403040b1211081400354c4042091c5d9dcbdebd4a0b1a181212 +411f233c070d10100d0b0a08070c111a12170722bda18aa3918a98989eaa +9b8d8c9ea796a9a6a4a4a29c958da1a4b4a29bae9fa6a9a9b2a0979d95a9 +be9cc5b09dbeaeaeb0b0b7b1b1b3b9d0b6c3ccc8cecebcbececcced3d6d5 +3233333331302f2e31312e2d2d2d2f3132312f2f2f2f2f302e2d2e30312e +2d2f3031333332303030302f30312f2c2d2f2d3632362d323233322e2f34 +34302f332f31312e2e303131302e2d2f3435343237353442433738383537 +3638383838384035332e2f35353e383b393a364138373d3b3a3b3a383739 +3a393c3f423b3d3d3e3b383c413e393745423f3e3f404140504c443b4655 +433348444f4f525a4a4b464c47444a453f43494b4c51575046454544474c +4f5053564c4f4e4a4e56554e494b4d51585b554d5053515851524e535d5b +57595e5b5a625453525356585755595c5d5d5f636462706c767e7a7b7b71 +6d716e6a6a6c67615b665f4534353736332a263037375d6faa7d3531accf +669afffffffff8fff7fbfbfff3ffb120526f2a456ebbfefffbf6ecf2eaef +fbf9fefffff7fbff21243e8a6838fffffffffffaf6fffffbfffeff0d5699 +756834fffffef7d9e9f3f6f1ebbfc5bcd6fdce293328535023906f44737b +4d3849282f2acab28a373d455055549c2d8e7c9eb1fffffe86bdcc8cbbfc +b29ac68d8babe292fffffaf8fafbfbc983d4d3cac4bb7f655e3b5442ffbd +f3e7eff1f4ffffc06b3d415ce1fffcb6f8ffa62642565155375be2ffffff +feffffffffffc7c3d0eaf6f6f9fefffffafce3e18e593e4987a3c2e3daff +ffe6b3d8ffffffe6d5e1fcfffffff8f7fffff9eaf4f5ffeca8b9b74bffff +92d8bbc065fff9fefffffffffffffffffafbfffffffefff6d6f64fffcf32 +3d3b33362d282a2c2a2d2f28281f1bf1ffffc66e78ccffffff7f9e533f4f +4f51886344561f2124211b1715161c1c25352b381388d9c9c9d0d3d4e0d6 +e1e4d6d7deeae3d9dcdee4eaebe6e4e6ded7e7f5e5f0eaf4eff1eeeff3f9 +f3f9f2ebf8efe2edefe2f1ebeeeef2f3eef7f7f7f0eeeff1e8fdf2f2efee +f3f025262626252423222525252424242628252422222222222321202123 +24212022232426262523232323222324221f202220292529202525262521 +222727232226242626232123242423212022242524222624233133272828 +2527292b2b2b2b2b3025231e1f25252e282b292a263128272a2827282725 +262828272c2f322b2d2d2d2a272b302d282634312e2d2e2f302f3d393128 +3342302035313c3c3f4737383339343137322c303638393e443d3332302f +32373a3b3e41373a3935394140393436383c434640383b3e3c433c3d393e +464440424845444c3e3d3c3d4042413f40434444464a4b4957535d656162 +6256515252505153514b46514d34252a2f2f2d272831342e4a5791682826 +9ebc497cfcfcfcf4e9f6ecf3f4fceefda4103e5b1c3c65b4f8fffefcf6fe +f4f5fcf6f6f8feeceefd12132d7b592cfcfffcfffff9f3fffcf5f8f3fe00 +4689645925fefdf0eccedbe6e8e3dbafb5acc5eebe1922173e3a0d7b5a2f +5e66352031101712b39d76252b343f45448c1b7a688ca1f8fff774a8bd83 +b6f7aa8fb3797496d28afcfffaf8fafcfac67bc8c1b4a99e624a4725392a +f3aee8dce4e2e0f9f3a7552b304cccfdeda6e6fa8909263f3b3d1a37b8f5 +fafff8fdf6f1efb96348404d4e443e3e41413448577b51372b29463b334b +5aa1e5c8a9d4fffdebd2cad7edfdfdf2edeff8fffff9f5effad589969432 +feff84c0979d53fdf4faf9fbfffef9f5f5f8fffffffefff3f6ceb8e243f4 +ab0715191b241c171719171a1e1c1f1813e6fdf8b05661b8f6f2f36a883d +2838383a714c2d3e0a0d100f0b080709111218291f2c0676beaaaab1b4b5 +c1b7c4c7b9bac1cdc6bfc2c6ccd0cec9c7c9c1bacad8cbd6d1dbd6d8d5d6 +dae0dae0d9d2dfd8c9d6d8cedfd9dbdbdfe0dbe4e7e7dfdddee0d7ece1e3 +dedfe2e1151616161514131215151413131315171413111111111112100f +101213100f11121315151412121212111213110e0f110f1814180f141415 +1410111616121115121414111012131312100f1114151412161413212317 +18181517181a1a1a1a1a2015130e0f15151e181b191a1621181719171617 +181616181a191d20231c201e1d1a171b201d181624211e1d1e1f201f2e2a +22192433211126222d2d30382829242a252228231d2127292a2f352e2423 +1f1e2126292a2d302629282428302f282323252930332d25282b2930292a +262b34322e3033302f3729282726292b2a282c2f303032363735413d474f +4b4c4c413b3d3c393b3d3a34313e392212181c1d1d161012130d2c3f7d55 +1510839e2960e8ebece1d4e0d8dee2e9dbea91002540001d4898e0ecedee +ebf4ebebeee5e1e4ecdadbea000019664416e8eceaedeee7e2ece8dfe1dd +e8003679544610e4e2d3d0b0bec6c5beb78b938aa7d1a50210052b230060 +3d103f491d0819000000937e5b111f2c37362a6b00594f7891e6e9dd5c93 +aa72a3e3937392565277b977f0f6f2f0eeeee8b366b2ab9d968c50373510 +2412d891cabcc4c3c5dfdb9140151c33afdcce8cd0e87b00182f2d311437 +bcf6edeeeaefe9e8e7b4634b49565b5251535451435158794c2e1d1a342e +2d464f90cba685afdfe1d0b7aab4ccdfe3d8d7daeaefecdad6cfdcb56c7a +7814dfe26aa4757d3df1f0f7efebe9e5e8e8ecedebecf1f3f6edf1c29ebf +1dd39d0115170f16120f101210131410100600d2e8e29b3e4297d7d3d84f +71261626282a613c1d32050c110d0b0504030b090f1d111c0062a38b8b92 +9596a298a4a7999aa1ada69e9fa2a8adaca7a7a9a19aaab8aab5b2bcb7b9 +b6b7bbc1bbc1bab3c0b8aab6b8adbbb5bababebfbbc4c6c6c1bfc2c4bbd0 +c3c4c0c0c4c23233333332302f2d313233322e2b2b2b3333323231323334 +303033363633303031333536353433333635353533313133343928352f36 +312c312e3036373332363033353433333332363639383736353534373136 +39373c383a3835353737353232313b3b3b3b353b3a3c3f3f3d4f43443f3e +3e414242434641424646403d3b3f4c443f40424445444a47444344464746 +40444c45494846544a43504d51534545484c453e413c363c424443464b46 +3d3b4747494c4c4948494445423d414a4c454d50525354534f4a4e4a4e4e +5650525052544f4b53585450504f4f515354545357575754545556565652 +595c5559605e6661687a76615c695751443a2f2d2e2b343730332e3c8085 +9256213481d3a5798c52a5fff9fbfbf9f4ecf6ffbc0a4056803867c5fff3 +f9f3faf6f8f6f8f9f1eae6f7f6ff466d887b4f55ffffffecfcfefffffefa +ffffff2f65634a493ffff5edd9f4ffffffe9a9819ef9fffbc82b32312c2d +47967e534c333a818e584835ded5c5663e2b58704b9552ffffff92f7fcff +5e24241e264c4c2a754b236d96a6fff8ffffffffffc96ddd7c667795994c +51585a422be2f8f0ffefe7d9ddb78f76abfefffdffadf97f255059514839 +a2fffffff8eaffffffffbec8dae1eff9fffffff4e1ece4dfcfb7b07b3646 +71b2c6dceceadbd9f1fffffeb4acd3f9fffff3dfe1f6ffffe5ddefdcffd2 +b3adb254ffff75ebdc7e70ffedf7fffff1eef0f5fffffdfffff4f4fdfff5 +c6cd5ef4d22b3e423532322e32363231312927310ebfe27e3658abe5f9dc +6e8af1a7366a59525e5f4634232425231d1b1b1d1d2332422d3618d9e5eb +d5d9cde5dfecdfe0e3e2e4f7dbd8eee4dfe1e8e8e3e0f4ffe6edeee9ebff +def0ecf6f8eef9f9e7fdf7f7faf1f8f0f9f1f7f9f8f8f0f3fdfff9faf4fc +f3fffbfdfcf8faf825262626262423212526272625222222262625252425 +2627232326292926232324262829282726262928282826242426272c1b28 +2229241f242123292a262529252828272626262529292928272625252326 +212629272c282a2828282a2a282522212b2b2b2b252b2a2c2f2f2d3f3334 +2c2b2b2e313132352f303434302d2b2f3b332e2f31333433393633323335 +36352d3139323635334137303d3a3e4032323539322b2e2923292f313033 +38332a28343436393936353631322f2a2e373932383b3d3e3f3e3a353935 +3939413b3d3b3b3d38343c413d393939393b3d3e3e3d3e3e3e3b3b3c3d3d +3d3940433c4047434a424c5e5b46414e3c372f2924272e2a2f323032282f +686773390c1f69b57e577d4d9efff3f7f9fbf8f1fbffba05374d7e3864c2 +fff2f9f4fcfafaf7f3f1e5dedbefebfd395e796c4048f6f7fce7f9fbfaff +f6f0f6f4fe2055533a3930fae9e2cde8f7f9feda99718ee8f8ebb71c2221 +1a1933826b40371e246b78423220c6c0b1552d1c4b643f8844f3f6fb82ea +f1fd4c0f14121f46441e66380e5c899ffff9ffffffffffc866d26b515d7a +7e323a41442c17d3ebe3f1dfd2c2c59f7b659cf2feedf295e36a123d3f31 +231783f6f7fffff8fbf8e69c433d4b4b4e4e484641372a3b3946555d7455 +1f2738573b3d4c5f7a9fddfdf5efa39bc6eafdf6eadadbeef0fff3f2fae0 +fec49c909139f7ff64d2ba6164fce6ecfcfaf4f3eff0f2f8fffff3e3ebee +f2c9a0b04be1b5081c23181a1f1d1f221e1e201b1b2803b3d26a1e4097d2 +e4c75975db911f53423b44452c1c0e1213110e0c0e10101624341f2908c7 +caccb6baaec6c0cdc2c3c6c5c7dabebed4ccc5c7cbcbc6c3d7e5c9d0d4cf +d2ecc5d7d3dde1d7e2e2d0e6e0e3e3dde4dce6dee4e6e5e5e0e3eceee8e9 +e5ede4f5ecefedeaebea1516161616141311151617161411111115151414 +13141516121215181815121213151718171615151817171715131315161b +0a171118130e131012181915141813161716151515141818191817161515 +1316111619171c181a1817171919171412111b1b1b1b151b1a1c1f1f1d2f +23241d1c1c1f2121222521222626211e1c202b231e1f2123242329262322 +232526251e222a232726243228212e2b2f312323262a231c1f1a141a2022 +212429241b192525272a2a2726272223201b1f282a21272a2c2d2e2d2924 +28242828302a2c2a2b2d26222a2f2b2727242426282929282a2a2a272728 +292927232a2d262a312e342d374946312e3b2b261c150e1116151c1e1613 +060d4c4f5f27000a519b613b68398beadbdce0e3e1dae4eaa100182c5812 +41a1e3d6e1e2eeecece7dfdacbc4c7dcd9ea264b66592d35e4e4ead4e8ea +e6eadfd7dddce80d45442b291de2cfc6b3cedcdcdfb9784f6dcaded2a309 +131106011a674d221a030c54612b1a05aaa3984323154356276821d2deea +72d9dbe5360004020f363106491a0042768ff6f3faf8f6f4f0b653be573c +4c696d212a2f2f1400b6cbc1cebdb3a3a987635189dae1ccd87dce57012c +30241a0e7ef2f3f4efdfe7eae39f48444d4d53565456564d404d42495055 +6c4c11152545343a4c5c6a87bcd9d5d2877fa6cbdfd8cdbdc3dbe6f1dad3 +dabfdaa17a70721bd5df48b497414ceee0eaf3e9d9d5dadde5eae9eae7dc +e6e9efc08b922ac3a5021a2010101816181b171716100d17009dbb520626 +76b1c5a83e5ac47a0d41322b35361d10090e110d0b07080a080d1b291219 +00b1adad979b8fa7a1aea2a3a6a5a7ba9e9db1a8a2a4a9a9a6a3b7c5a9b0 +b3aeb3cda6b8b4bec1b7c2c2b0c6c0c2c3bcc3bbc5bdc3c5c4c4bfc2ced0 +cacbc8d0c7d8cfd2d0cdcecd303030312f2e2d2c3131302d2827272a2c2d +2d2d2c2c2d2e2d2d303434302e2e32333534333130303736353432303134 +2e342c352c302e2f33323437383737382d31343332323230393b3f3e3d3b +3b3c3e423a393a3c423c3e3b36353736322e3d373c3c3f3f3636413d3f3c +3b4e414743424243424141433a3f4143374139404f464649464747434241 +40414242424238454b373c3d3a41453d413b3f3b38383f413d3a3b3a3a3f +4444403e42413d3e454446484743404045443f393b4142404c4e4e4a4747 +48484b444945534c524e525b574c4f565756585657585856565852545656 +5452504f57585c5a53535a5e5453595f5c5558646b5c50482b1718120715 +121620439c89553e30311b86af86351173fffffcfcf8f2f9f9f1c21b3d44 +2f1f449afff7fffbf9f5fff9e7eaf2f1e8eef8ff273333333320ffffffff +fffffffef4faf4e0da212a2831280ceef2dffdffffffdd847dd6ffffd4a4 +961c222d3534a6add04145414a3bc4ad811e311b673b40394d623e4278bf +acf881fffffffffffffbffffe8effffdfffffffffffffbfef9fbffec91da +a7b8cbb4803e574e54568dfffdfaf5e1a178806584caffffe0f7f9865d40 +40464e4745a6ffffebe3e3f4ffe6c2d1f3fbfcf2eef1e9dbd0c6e4fcdfcf +d0b7c47a464c518db3c9fce9e2ffffffc595a0d2f7ffffe9dad5dcf5fef7 +ced4cc73936798a6af4286713189b34c99f9fcfdfffeeeeaeef9fffffffd +feffffffffffd99b89eac221323f3939352d2f2f2a2b2c2623220af1c74f +80c1f7fdfb908eebfff55f973f5e6d6e4627252627252425272a2525303a +2d2931f0d9e9dfe0e2dbd3e4dbe0e6d4c9f2e2e7e1e0e3e8eff0ebe7e0f7 +dfe1e6ecfffff2f1e8eefff5f9ebddf0f0f0fcf8f3fbfaf7fffff8f8f9ff +f8fffffbeefffefdf8fcfffffcfd2323232423222120252524211f1e1e1e +1f2020201f1f2021202023272723212125262827262423232a2928272523 +242721271f281f2321222625272a2b2a2a2b22262726252525232c2e2f2e +2d2b2b2c2d312a292a2c322c2e2b29282a2925212d272c2c2f2f2626312d +2f2c2b3e3137322f2f3031303032282d2f31273129303e35353835363632 +31302f303131313125323824292a272e322a2e282c2825252c2e2a272827 +272c31312d2b2f2e2a2b3231333534302d2d32312c26282e2f2d36393935 +32323333362f34303e373d393b444035383f403f413f414242404042393b +3d3d3b3937363e3f43413a3a414338373d4441393b474e4139372317211c +0b17191c203b876d39231b1c03678664291071fffffdfffffcfffffcc91f +3d443626499cfff4fef6f6f2fcf4e0dfe3e2dde6edfe1a2623242613f6ff +f9fffffcf9f3e8eee8d2cb121a18211800e2e6d3effefbf3cc736dc6f7f0 +c394850c121d231f9299bc2e302b3425ae976b081906522a322c425a3639 +6eb29ce770fcf6f5edeafcefffffdfe4f1edf9fcf8fffffffafffafdffed +8cd298a6b49d662742393f427cf2eeece5cf8d61695072b9f5f9d5e8de6b +482f333531211d84f7f3e7e4e2e8e09f53444f50564f53574c3d35315978 +63627d759052282c27463e334c4263c4f7feb68691c4e9fcf0d8d5d5def2 +efeedde8d7748a5781898e257664207295389cfffffaf6f2f2f5f6f8f9fb +fdfbf2f1fcf9f4e6ae7872d6ab06162016181e1a1b1b16171a18171a00e5 +b73b68a9e3eae87d79d6fbdf4880284753542c0f1214151615161a1d1819 +222c201c22debecac0c1c3bcb4c5bec3c9b7acd5c5cac7c8c9ced2d3ceca +c3dac2c7ccd2ebeed9d8cfd5ecdee2d4c6dcdcdce8e4dfe8e7e4f1f0e5e5 +e9f4e7f1eeeadff8efeeeaeef2f1eeef1313131413121110151514110e0d +0d0e0e0f0f0f0e0e0f100f0f121616121010141517161513121219181716 +1412131610160e170e121011151416191a19191a10141615141414121b1d +1f1e1d1b1b1c1d211a191a1c221c1e1b1817191814101d171c1c1f1f1616 +211d1f1c1b2e212722202021212020221a1f212318221a212e2525282526 +262221201f2021212121162329151a1b181f231b1f191d1916161d1f1b18 +1918181d22221e1c201f1b1c2322242625211e1e23221d17191f201e2828 +282421212222251e231f2d262c282b342e23262d2e2d2f2d2c2d2d2b2b2d +252729292725232228292d2b24242b2e2221282f2c2429353e3027230c00 +0401000000000016685524100807004b6a4811005ae8e6dee2e0e1eaeade +aa00191e0c002175dfd5e3e0e3e1e9e0c6c3c4c5c7d3dbec091313111502 +e4ece7edece9e4ddd0d4ceb8b4000a09120800caccb9d5e4e1d6ae554ca5 +d9d4a97d7100030e0f0a7a80a11015131d109982540000003d1a29263c4d +1f1a4b9283d560ece0ded8d7ecdfefefced0d7d3e1e8e8f3fafbf5f9f2f0 +f3dd79bf8592a28b551531282a2a62d3cdc9c1a96a414a355aa5e2e5b9cb +c958351d20232314137aeae7dcd4cdd2d399594d5a595a505159554b4745 +6c86655b6d6583481d1d1132343256495db3dadd976974a7ccddd5bcb8b9 +c6dfe8e5c8cdb95569355f696f0755440453731781f1f8f3ede2d7d5dee4 +ebebe6e4e4eaf8f8f3dd9b5c52bb9b00121d1011181414140f10100b0707 +00cd9e224e8dc2c9c85d5ebbe4c8366e183744451d030b10111110111415 +0f0d171f100b0fc8a1aba1a2a49d95a69ea3a9978cb5a5aaa4a4a6abb0b1 +aeaaa3baa2a6abb1cccfbab9b0b6ccbec2b4a6bbbbbbc7c3bec7c6c3d0cf +c4c4c8d3c9d3d0ccc2dbd2d1cdd1d5d4d1d22d2e2e2e2d2d2d2c2f2f2e2c +2a292a2c282a2b2a282727282b292a2d2d2b2a2c2e2f30302e2d2d2d3431 +2f2e2c2a2b2f282f34352a2b2c352b2d2e2d2d2f2f2e2b2e2f2e2d2f2f2e +32333435363635343a3c3436363338353a393737363534323b3132323941 +3d4143393c393647363e423f3d3d3c383839343c383f314d3c423b353b41 +3b39393236383b3d3d3c3b3b3f8ba04d2b36413e4742403c4237403e3d3c +3f403e4146464548444245454346403f4043444141424342414144494d51 +4d4e4e4a484b4e4f4c4746474c4c4f504b524f47484b4c5052515253514d +4e5253565a5d5d5a5858525a5e5c5a545358575f5b4d4e5e635b625e5441 +233860565e6264636b5d8c6a5c653429318c7d75543e577153543f435044 +514c61a783a17c738260bffff0fffffaf3f0edf1f6edf5e2f0fd21222a30 +2549fffffffffdfffcfff9f8d7b5a51e202b252842fffaffffffe18f7fbf +feffe3bf789ddc1a363a322c5f67b35e6425242532aec99cdae7e22c3f37 +48654866c9c8acabc0e7def0e9f5e1eefee4f2fbfffffff6faeaeaeaefec +e1e0f0fbe4ffffffffeca253634c403e48fbd5b29c8da2afb0a9effffbf4 +ffffe02950374148365acafffff7ffffffffd2d0eaecfcf5fdf9e5c3bde9 +ffffffffa064749bcfbe6b423b7bcc9de3ffe7ffffbba1daf4fffffffded +e0e1ebf9ffffedf4ef84935ec0b88d5e72586c73814fb7dceaf3fcfff8f6 +f7fffffffffdfffefffffffff186b1e89f162a373a40332a2b2a26252722 +2a2518ce55a2e7f7fbf59d89e2ffffff668d33838f763432282626262728 +2b2c2d272d2d301f6ae0cacec8bdd5c6e1efe7d9def4e1ebe3f6dde6ecea +e9e6e2dbe3eff3f2e5dbe6cbe5def0ddf0e5effbf1ffd9edf3dffffaf3e0 +e6edeff6f3effffdf2ebd7fffffffffbfffffaff20212121212121202323 +22201e1d1e201b1d1e1d1b1a1a1b1e1c1d20201e1d1f2122232321202020 +272422211f1d1e221b2227281d1e1f281e202120202222211e2122212022 +222122232425262625242a2c2426262328252a292727292827252b212222 +29312d3133292c292637262e312e2c2c2b272728232b262d1f3b2a302a24 +2a302a28282125272a2c2c2b2a2a2c788d3a18232e2b342f2d292f242d2b +2a292c2d2b2e33333235312f323230332e2d2e31322f2f3031302f2f3237 +3b3e3738383432353839363130313636393a343b3830313435393b3a3b3c +3a36373b3a3d414444413f3f39414543413b3a3f3d4742343543463c4241 +3e322241746e71767a78786284594853281d21755c584d4057725458454d +5e53605a6daf8aa889838d65bfffe9fffff2ebe5dfe2e3dde9dae7f11415 +1d23183cfafefbf8f6f9f0f3ebeac9a5950d101b151835f3eefefbfdd07e +6cacebfdd0ae678dcb0a262a1f1a4d56a24d50110f101d99b386c5d1cd1a +302c41614663c3bd9e9aafd6ceded4e0d0e1f5dde9f0f8fcf4e9f2e6ebec +f0ede2e3f4fee1fbf3f2f3d78b3e50392e2c38ecc5a08a7a8c989c96dffc +f0e9fafac913402c34331233a9f9fcf9fff7f1c2684d4f444e46535e6056 +659dd4e8eae86a375580ac98462023568126344d4eb0df998ccbe9f9fdf6 +e7dcdae7f9fff7f7f9ffed757b40a1966a3f5f4b5b5e6947d2fffffff6f7 +fcfffffffdfafaf9fdf6f8f6eef2c66198d78e02111811191a1716150f11 +15141e1a0cbf438ccddde8e58a76cef3ecfc4f761c6c755c1a1a15171719 +1a1b1c1d1f191d1d20105bceafafa99eb6a7c2d0cabcc1d7c4cec6d9c3cc +d2d0ccc9c3bcc6d2d9d8cbc3cdb2cec7d9c6d9cedbe7ddf1c6dae0ccf2e7 +e0cdd3dadfe6e3dff0ece3dcc8f0f3f1f1f0f5f5eff41011111111111110 +131312100e0d0e100a0c0d0c0a09090a0d0b0c0f0f0d0c0e10111212100f +0f0f161311100e0c0d110a1116170c0d0e170d0f100f0f1111100d101110 +0f11111012131415161615141a1c1416161318151a191717181716141b11 +121219211d2123191c191627161e211e1c1c1b171718131b181f112d1c22 +1a141a201a18181115171a1c1c1b1a1a1d697e2b09141f1c25201e1a2015 +1e1c1b1a1d1e1c1f24242326222023232124201f20232421212223222121 +24292d2f292a2a2624272a2b2823222328282b2c242b2820212425292928 +292a2824252926292d30302d2b2b232b2f2d2b252429262f2c1e2130342a +3331291b0622514c5153534d4c39603b303d120507563d3a33283b533437 +232a3d323f374988617e5d56623d99dfcce6e8ddd6cfc5c5c2bcd3c7d6e1 +04040d12082be8ece8e5e3e6dad9d1cfae8c7e00000c080924ddd6e4e2e4 +b6624e8ccbddb2924d76b900171b0e04353c8631370000000a869e6faab9 +ba0c29283b562f44a19d84889fc4b7c6bfcdbed1e6cdd8dee2e5dfd8e5dd +e5e7eae7dad8e6edd0e9e2e0e2c67b2d41281a161ecda37c625267767b78 +c6e7ded7e4e6b905301a2322042496e4e3e1ede7e4ba6a555d53584d565c +5b5163a1e0f6f6ec60223863998d3e140b3b6c1e415d51a5c87d6faecddc +e0d9cfc2c0cbdfeff2f5ebeed8606326847a4e223f2b3f414723b1ebf8f6 +eae6e3e3ebefefeae2e0edebf3f5ececb5477abb7c000d160d1415111110 +090a0b070e0600a82b74b4c2c7c36a56b3d8d4e43d640c5c664d0b0e0e10 +101112131516160e100e100048b692908a7f9788a3b1aa9ca1b7a4aea6b9 +a0a9afadaaa7a49da6b2b8b7aaa1ae93aca5b9a6b9aebac6bcd0a5b9bfab +d2c7bfacb2b9bec5c2bed2cec6bfabd3d6d4d4d2d7d7d3d82d2d2d2d2d2d +2e2e292b2d2d2d2c2b2b2d2e302e2c2929292d2a292b2b2b2c2f292a2c2c +2c2c2c2d2f2c29282524262a2f292e2d2e322a2d2d31302c2c30302c2c2e +2e2c2b2e3031353332353839363237342f38382e31312f31333432323436 +3a353937373832373c323a3a3847323b3b39393a3b393a3c3e463c44335a +41443f35383c35383f3c34383e41403e3c3c36434732484d474741423f40 +4837484348444a4c44454b463e4546464a48444643424143434242444643 +4141403d3f44494b4c4a494a49484e4e464e464e4d5452524d4e53504c4f +4c4c4f504c484a504e4f5254535050525a63615e615c5a625d5d5953585f +57484c5b512d1b558254594d5351572e585e5546373b13777c7a4c35675c +49a6acc9d1404f4c8dafbffd825c6167a7fffffdfbf3e8e9ebeaebe4d6da +f1ff5c353c362761fff3ecebdfcfd4d9bd9b7179a15c3c3b3f313ce2fff3 +d67f527fc2ece3bd845fa5eeff15393a323b2df7ffffd083528bdfffffff +fffbf427373054513a74fffefffff9fffffefff6fffff6faf9f7ffffffff +fffff9fefdfdfefefbf8ffffffffffc4b23452524a4658ffcd887c8ba7c0 +edfffffbfffffdd13d3d483a433a89c8ffeff3ffffffe2d8e3eff9fcf7ff +e0c4d5fffffffbfff8ff7942487ea2c983494065e79cd5ffe9e0dacbf8f9 +ffffffdad3e7f6fcebc4b6abc2dcbf294047b2b4736247313b6e7e3c8d95 +92b3effdfbfbfcfdffffffffefc6c2e9ecf0d16ebce5871a33343336332d +2f2e2a28282222202684b7f6fffff6ac8accffffffff55533399877f3426 +2a28262626252524262a382d3518a6e1d3e5d7e1dcdde5e0ded9d0e9d5e1 +ded5f6f2e8e0e6eeebe0e3ebe8d9e5d8d8e4ffd7eac5ebeee4edeae1dff0 +f4f1fdf6ede3f1f8f1f6f8f9f6eef1ffe7fff8eff9edefeee6f020202020 +212122221d1f212121201f1f202123211f1c1c1c201d1c1e1e1e1f221c1d +1f1f1f1f1f20221f1c1b1817191d221c212021251d202024231f1f23231f +1f21211f1e212324252322252829262227241f28281e21211f2123242525 +27292a252927272822272c222a2a2837222b2a2828292a28292b2d352a32 +21482f322e24272b24272e2b23272d302f2d2b2b2330341f353a34342e2f +2c2d3524353035313739313238332b3233333735313331302f3131303032 +34312f2f2e2b2d313335363433343332383830383038373e3b3b36373c39 +353835353839353133393536393b3a373739414a4845484341494547433f +42463a292c3e3c231e659e747769726e6d3a545347372f3408665f5f4031 +625744a2accdd74a595695b4c2ff936f706ea7ffffefece4d9d9dad7d7d4 +cad2e8f650282f291a54f6e8e1e3d7c4c6c8ac8a6069914b2b2b2f212fd6 +f3e5c46b3d6aabd5cca86f4c91dcec04272821291be6fbf6bc6f3d76caf3 +f7f8eae7e1172a264f4f3973fff5fdf6e6f8f0eaece1faf5edf3f0effcfb +f8fef9fffafffefefffffffafffdf9fcfbaf9d214141393648f1ba766978 +94acdaf7fbeff8fcf4c42725362a322064a2f5deecffede27e534947484b +4d65524f81d6f7fbf3fcf6fe6f3842758ca95a242b4db53b2f3f425a8297 +dae9f8fefcd0c1d7f0ffffebdcdafcffd122272490924f4434222a58673d +c1e1d7e3faf8fafffffef7f5f9fad49e8da79ea18d3797cb70031a161015 +1c1a1a191314161415151a75a5e1e5e9e39c77b9f6f0f2f93e3c1c826d65 +1a101919191919181616181c281d250997cfb8c6b8c2bdbec6c1c1bcb3cc +b8c4c1b8dcd8cec6c9d1ccc1c6cecebfcdc0bfcbe9c0d3aed4d7d0d9d7ce +ccdde1e1ede6dad0dee5e1e6e8e9e5dde2f1d8f1e9e1eee2e4e3dbe51010 +1010111112120d0f111111100f0f0f1012100e0b0b0b0f0c0b0d0d0d0e11 +0b0c0e0e0e0e0e0f110e0b0a0706080c110b100f10140c0f0f13120e0e12 +120e0e10100e0d101213151312151819161217140f18180e11110f111314 +141416181a151917171812171c121a1a1827121b1a1818191a18191b1d25 +1c24133a21241e14171b14171e1b13171d201f1d1b1b14212510262b2525 +1f201d1e261526212622282a222329241c23242428262224232221232322 +222426232121201d1f2325272826252625242a2a222a222a29302b2b2627 +2c29252823232627231f212721222527262323252b34322f322d2b332d2f +2c272d3228171d2e270a0141764b5141463e3c0c2e332d20181a00483f41 +26184539247f88a8b52736316e8b97d86642454581dde1d4d5cfc4c2c0b9 +b6b3b2bfd7e640181f190a44e4d6cfcec2aeacae927046507a391b1c2212 +1ec0dbcbac52224d8cb5ad89502e78c6db00191a0f1503cce1daa3572863 +b9e0e4e1d2cfd00a24244b432455e1d6e6e4d7e7dad2d4cce8e4dce1dfdc +e8e7e4ededf6f4fbf8f8f8f6f1ecf1ede9ecec9e8c10312f271f2ed39950 +414e6c87b9d9e2d9e6ebe3b41c1b2a1b220f528fddc2cfe4d8d67c585558 +5a5b56684e4676ccf3ffffffffff631f2054759c541c16339e323d544a57 +7481c0cfdbe0e0b5a9bed8eaead0cdcae4f3bb0f130e7777352816051040 +481b9abbb8cbe9e5e5e8edeee9e5dfe1c99e95b3aba684237db462001614 +0c0e161415140d0d0c070501045e8dc6cccec37a579bdbd7dae42c2a0c72 +5e560b030f12111111100f0d0d0f190d150082b79ba799a39e9fa7a2a19c +93ac98a4a198b9b5aba3a7afada2a6aead9eab9ea0acc79eb38eb4b7afb8 +b6adabbcc0bfccc5b9afbdc4c0c5c7c8c7bfc5d4bbd4ccc4d0c4c6c5bfc9 +2a28282a2d2e2b272a2a2a2a2b2c2d2d2f3234332f2d2e2f2d3234302e2f +31313432323333302f302f2e2d2b2a2c303331323333343433323333322f +30333330302f2e2e2f3032322e33383a3936363533333331353736333437 +3532333937313435343335393a38353838383c3f3b35383d3a3e353a3639 +403d31423e3e37393d3a38362948354345373c413c383f3d3a4046463f3a +3e464c4843413f3c3a3a3d3a4249433e4041464039383e4446443d3e3e3e +3e3f414346444343434242444a4a49494c50504e554a4c454854515a5851 +4e54565250514e49564b4c6662565a50505a51504b5f5d5a575456585652 +4d544b535657515e625452390f6d624646584b5f514e4c5a592c2a1e177d +7e79573f3ceecee571abffdddad9f3d18bfae2eef958a9fff1e1d5cddbd9 +dce0e2dde8f3ffff2b3d4b2f2920ffffffede9eee0d5b69fcaf3ff30322c +2a2f14e3ffdf9491deffffecbe8aa4efffffff0f322828281ddaff9664b1 +fffffffffbeff5ffff233c2a595e376ffffcfcfafffcfffffffefdfbf8f4 +f6fcfffffffffffefdfcfdfdfbfbf9fcffffffffff7dad465058585251a0 +aac5a69293e6ffffffffffff56274051493b425a9c6ff9dd88ffffccdfff +fff1fff5d1ccecfffff99b6c6c646f664235577e9ed4a84e4549fce9a9ff +f4eaced7fffffff6d0c6f4fffff7ae5b3b3d3b7064386d86a1b5646e4444 +49689b3c805d5275e3f5f9fffff9fbfdffffff95bdbbbae0be89adff7d1f +2e33252e2c2d2e2b29252626281f2aa6dbf2fff1b290d0ffffffffff7d3f +48737b77232d27211f22282a2621233439293628ccbcceced5d1dad0dae7 +c9daead0dde5e8f6e0e0dae9ddf2e2eae1e8dbdcf4dde0eeffdcefe8edff +e8f6fff6f5f9f6fbfbeefeeef2f9fdfffaf9fefbfbe9f3ffeceefaf6f4f6 +fdff1e1c1c1e20211e1a1d1d1d1d1e1f2020222527262220212220252723 +2122242427252526262322232221201e1d1f232624252626272726252626 +25222326262323222121222322221e23282a282525252326262425272623 +24272522232927212425242325292a28252828282c2f2b25262b282c2328 +25282f2c20312d2d26282a272523163522303224292e29252c2a272d3333 +2c272b333935302e2c2927272a272f36302b2d2e332d26252b3133312b2c +2c2c2c2d2f31343231313130303134333232353939373e33352e313d3a43 +413a373d3f3b393a37323f34354f4b3f413737413837324644413e3b3d3f +3d393740394141413641423940321986877069796c7f695b4a4f4b1d2216 +0d6c615c432f2bdbbbd563a1fbd9d7d7efca82f9f3ffff60a7f9e3d1c3bb +c9c7c8cbcecadcebfdfa1f313d211b13f3f8f7e2dee2cfc1a28bb6e2f81f +201a1a1f04d4f7cf7e77c4eeebd4a5718bd8eef8f4001f1617170dcaef86 +529ff3f8efeee9dbe1f3f7153122555e396ffcf5f0e9f0e7ecefedecedef +edeceff5f9fbfdfefefefefffefefefefffffffff9fcfc6a9a333f474943 +418f97b1927f80d4f7f3f1f1fbfd521f272f271d263d7c50e0c66beec25a +3f524b3e514b3c579fe9feffb3909a98a58e4c3050758fba7c22292ed397 +0d4444515d8bf1f6fff2cfc0e5f8f8ffdab0bfdad4eeaa50626b85974452 +303437527f41cdcfc6cffffaf2f5fef1eff4fff4bf23301c154a462e6edb +57000e17111d191a1916111114181b141d97c9dde9d79d7dbdf6f3edf5f9 +682a315c64600c17161412151a1c1813122429192619bdabb3afb6b2bbb1 +bbc8acbdcdb3c0c8cbd9c6c6bdccc0d5c3cbc4cbc1c2dcc5c9d7f3c5d8d1 +d6ecd4e2efe3e5e9e6ebebdfeedee2e9edf0e9e8efececdae3f4dce0efed +ebedf4f80e0c0c0e10110e0a0d0d0d0d0e0f101011141615110f10110f14 +161210111313161414151512111211100f0d0c0e12151314151516161514 +151514111215151212111010111212120e13181a18151515131515131517 +161314171512131917111415141315191a18151818181c1f1b15181d1a1e +151a15181f1c10211d1d16181b1816140726132123151a1f1a161d1b181e +24241d181c242a26211f1d1a18181b182027211c1e1f241e17161c222422 +1d1e1e1e1e1f2123262423232322222326252424272b2b2930252720232f +2c35312a272d2f2b292a25202d22233d392d2d23232d24231e322e2b2825 +272927231f2721292c2c253133282a18005e5b423f4e3d4d372d232f3108 +0d00004e413e2a1811bd9bb3407ddab6b4b1c9a057cdc7d9df3781d8c6b7 +ada5b5b1afaeadacc6d8edea112330140e03e2e6e3ccc8cab5a687709bc8 +e20d120e0d1000bfddb5665ea9d0ccb286526cb9d4e1e1001108050300b1 +d56c3a87dde4dedad5c3c8dbe5082d2052542453ddd8d8d7e1d6d4d6d4d4 +d6d9d9d9dce2e6e8ebeef1f2f6f8f8f8f5f3f1f1f0efe8ebec5b8b242f35 +362c2873778e6d5758aed6d6dadeebee4614232d25151a2b6534c1a44dd7 +b85a49615c51645842508dd3e8f6b39eb2b0b190441d335678ab791f1d1b +bf8c1b594f53577ddddce4d5b3a6cee3e4e8b98997ada5bf88364e566d7d +2b3a171b213b6721a19e99a9ede6e0e5f1e6e3e3e6dfc23a53453d674f29 +5fcb4e000f140813131614110d0a0a0b0b020a80b1c2d0bc7e5d9fd8d8d4 +e0e65519234e5652000a0c0b090c11130f0a08171a091606a89196909793 +9c929ca98c9dad93a0a8abb9a3a39baa9eb3a4aca4aba0a1baa3a9b7d1a3 +b6afb4cab3c1cec2c4c8c5cacabeccbcc1c8cccfcbcad0cdcfbdc9dac2c5 +d3d0ced0d7db2928282a2d2e2b282f2f2f2f2e2e2e2d34373a3935313030 +272c2e2b292b2d2d302e2f31312f2e2f2d2e2d2c2c2c2d2f292b2d2e2e2e +2e2e32323130313434322f2e2d2e2f303434303336363634343335333333 +3635353432353634373c39333a3835333537342f3737363536373532343a +3a40383c3535333f373b32373843413f3f49567c4d313e313642403a3b3a +434445443f3c3f45353f413a3c46453c3b3a4856504542443e3e40434546 +423f4a49474644434242464341414243444746494d50525150504d474e4a +4c51494c554d484a4d4d515748494c4e4d555d514a525652495958605559 +5b59585856514e554e514c4f516555544f2f056e5b3ee0d3ede8a486935f +532f262250ccc27a3d4558eda5796396c796abcb428297b64970ea4bbcff +f5f6f2faf4f9fff2f7f8f8fffcba1b1e2b2b2d12f5fff8f4f6edeacdc8d8 +f2f8ea20262f27240d5f7383afefffedcb908ac7f6fff3c9ac112832332b +1e98a2adecfffffbfff0f8fff9ffff282f286a673275fff1f5fffbfffff7 +fffdfcfbf9f5f8fcfffffffffefcfcfdfdfdfbfbf9fcffffffffff8a984b +57575c5160847d99bdd6fffffff4ffffffbf263d4b51494d69755365ffec +bbf3c3e9fffdf2fdd6c4f8fffffee9e586312a242b2652589d8aa6d1a154 +4743ffffb6f0faf3f3ebffffc8959ebef7ffffeea24d2a1d2d676946acc9 +7bc7554b546e6a4b9a5e885a535bdaf2fffae3f0ecfffeffffb3e8fdfbe8 +c498bcf65f2e3b293022272929272624242320206df8ffffffdd93a8f6ff +ffffffa3664b617a726021262525252324262b2f2a352b322d42ffdae5d9 +c7d6d9d9d6dbd7d7fff4f4f5e1e4e1dee0eee6edd8daf3d9dde6d7e6e6ff +f5efffeae2fff3efe8f2fef7e4e9f7f8fdeaeaedf3fdfffff9faffebf4ff +f6fffcf8fdfffff91d1c1c1e20211e1b2222222221212120272a2d2c2824 +23231a1f211e1c1e202023212224242221222021201f1f1f20221c1e2021 +212121212525242324272725222120212223242420232626252323232526 +26262625252422252624272c29232a2825232527241f2727262526272522 +2228282e262a2424222e262a212627322e2c2c3643693a1e2b1e232f2d27 +2827303132312c292c32222c2e2729333229282735433d322f312b2b2d30 +32332f2c383735343231303034312f2f30313234303236393b3a39393630 +3733353a32353e36313336363a4031323537363e463a31393d3930403f47 +3c4042403f3f3d3b38443e413c3d3a4a38393d2a118b876cfff0ffffb68d +8e50411e191742b8a55b232f40d48c614c84b989a1c1367588af5887f953 +bafee6e5dee5dfe4e9dddfe4ecfcf1ae0f121d1d1f05e8f5ece8eadfd6b8 +b3c3dde4d80d141d17140050657295d4e9d2ae7670addbebdbb39500151f +221a0d88929ddaf4f2e9ecdee6f5e5effc1a242066673475ffeae9efe8ea +f6e6eeedeeefeeedf1f7fefffffffffefefefefefefefffffffffefaf877 +853a4648504550736a85a9c4f0fdfee6f6f4fab31f322b271d2647562f3e +e3b97897474c48384058404391d7f1f8faffbb757e7d7d60604f8e7c9cbe +78262627e0e2253a46506e8ef3fbc1959ebceffdfdf8d5badfeef4ffc368 +a4ac60ad3931405e58347e67e1dfdcc9fffbf6e8d6e6dffffefadb293232 +3030312a6ebd340b190f2218161614120e0f1115141560e9fbebeec37e95 +e3faf2fcfa8e51354b645a4a09131718181616181d2119251b221d33fdc9 +cabaa8b7babab7bcbabae5d7d7d8c4c7c7c4c3d1c9d0b9bbd6bcc3ccbfcf +cfeaded8f0d3cbecdfdbd5dfeee7d4d9e8e9eddadadde3edeef3eaebf2dc +e4f0e6f1f1eff4fcf9f00d0c0c0e10110e0b121212121111111016191c1b +17131212090e100d0b0d0f0f12101113131110110f100f0e0e0e0f110b0d +0f1010101010141413121316161411100f10111214141013161615131313 +151515151615151412151614171c19131a1815131517140f171716151617 +1512141a1a20181c1414121e161a111617221f1d1d27345a2b0f1c0f1420 +1e181918212223221d1a1d23131d1f181a24231a191826342e2320221c1c +1e212324201d2a2927262423222226232121222324252224282b2d2c2b2b +28222925272c24272e26212326262a301f202325242c34281d2529251c2c +2b33262a2c2a29292724202a2528252728392828270d005f563bd4c4dad1 +846168332b0c0601289d873e0c1826b66d3f2a6096677e9d104b5d852f5d +d22c94dac9cbc6d0cccfd2c2c3c9d6e9df9e010410101200d7e2d6d0d0c4 +bb9b96a6c2cbc20006110a05003b4b567cb9cdb490554f8cbdcdc19c8300 +0711120800717983c2dcded5dbcad0ddccd7e80d201e635d1f59e3cdd3dd +d9d9deccd4d3d4d7d8d8dee3eaeceff1f1f1f3f6f8f8f5f3f3f2f2f1efea +ea68762a36353a2d37574a64869ec9d9ddcbdfe1eca7152c2c291e213b42 +1521c39a5e884555574a50664b488ccad9e0e7ffc38ca29f936b6146775f +81ad76261f19cfda345052556f86e1e3a77b84a3daeaece0b490aab5b9d4 +9f4f919a4b94231a284744226848b1a6a69cebe6e6dccdddd6ede2e4e143 +62696556432b64b22e091a0e190c0f120f0d0a0a0a0a06034dd4e3d3d5a8 +6177c5dfd9e4e77d40273d564e3c00050c0f0f0d0d0f14160f180c120d1e +e8afad9b89989b9b989d9a9ac5b7b7b8a4a7a4a1a1afa7ae9a9cb69ca2ab +9dadafcabcb6ceb1a9cabebab4becdc6b3b8c7c8ccb8b9bcc2ccd0d5cbcc +d5bfcad6ccd6d5d2d7dfdcd3282727292d2d2b292f2f2f3031302f2e3135 +373734302e2e2a2d2e2c2a2b2c2d2d2c2e3232302f30292b2c2c2b2a2929 +2a2d2f302f2e2e2f2d2e2d2c2e31312f3030323233353738343436363535 +34322f2b2c2f2e2a2c302f333434383b3a34393633333739352f36343434 +3331313434363238343b383c404a3f383a433d41433f40423645323b4235 +35403f3c3b3b413e3b3a38373b413842443c3c44453c40404e5b54464243 +4c48423d3b3c41453d3d3e4043454545484746464748474646474c504f4b +4b50504b4e4b4c504c504b48494d4e4c4c504e544f5b585260555e5e5e5d +50565260535b62605a56524f4b514d534f5352605e554c3f0e65474aeb53 +4dc88a647a6b524548393b88996e5a4764ff935b4c6aedffd6d9a9994fb8 +fb94f83bb7f8f9f0ecfff8f1f8f6eefbf8efff2a2626321e3211e7fcf3f7 +f0e9f1eaebf2e8b7a7292231313026388fdfffffdbb1a0b6ebffffddbfa2 +9e202f2d2a2d1da8e8f7fff1fafaf0fafff6faffff2d2f2863683464ffff +fbfdf5feffebfefdfdfbf9f6f9fdfefefffdfdfcfefffefdfbfbfafcfeff +ffffff9e7f4f5b555a4969826691d9ffffffffffffffac3b483b4f445d79 +7847377dfff9c6f3effffffedebecafffffffffffaeb9630311f1d26607c +897faae2825b4736e2ffc5e2e7f4eee3ffbd78b9fafffffff9c290683828 +382f4186ccb15bac545d9a707f578a5b8154585ec5edf8ffede4f9f6fcfa +ffa6d9e9ebc6bb8fa4b3362e352334232b2c2b2a2a2a2a282d0fb4ffe4e7 +ecb2414d7dfffffd941f2c32545f5946292a22232524242324261d312b3a +245effafd6ded0f3e4eff8ffe2bfddcac5dcd7e6e5dce0e6e9e8dce0f3e4 +d9dbd6dddcffe0dbe8ddd8e6dad8dbe7f3eddfe8f3edf4e9f3fbfefff7f4 +f5f4ffeaf5f8f6fbf3fefffbfaff1c1b1b1d20201e1c2222222321201f1e +24282a2a272321211d20211f1d1e1f20201f2125252322231c1e1f1f1e1d +1c1c1d202223222121222021201f21242422232322222325272824242525 +242423221f1e1f22211d1c201f232424282b2923292623232729251f2624 +242423212124242622282229262a2f392e2727302a2e302c2d2f23321f28 +2f22222d2c2928282e2b28272524282e252f3129293132292d2d3b484133 +2f3039352f2a28292e322a2a2b2d30323232353433333435343330303539 +3834343939343734353935393431323637353539373d3945423c4a3f4545 +4544373d39473a424947413d3939353f3d4440423d46413a3a3a1c847679 +ff6560da92616a53372b35282970774a40314ced78433656ddf6cccf9d8c +40b1ffa9ff41b3eee8dcd8ebe3dce2e0d6e7e9e4fe1e181824102201d7ed +e4e9e2d8dcd3d4ddd3a39516101f1f1e15287fcbe6e2bc948199ceece6c4 +a78c870a1c1a181d0e99dae9fde1e9e9dfe9f0e4e9f7f92126235f683362 +fff5ecece2ebf3dbeeefefefefeef3f8fbfdfdfefefefffffefefefeffff +fffffff6fb8d6e3e4a464e3d5971537ec6fef7f5f2f3f4f9962739262711 +2b4c54240b41e0944a5f464a474e47467ad9eefbfaf4fcffd0849c8a735a +63676e67a1d35f31261ac8ee4137354d627ddca970b9fefffefdebcbc7d9 +eaf4f9c78d99b68b3c923944855d69427169d9d5e1ccf6f7ebf8e3ddf3f1 +f8e0c82d30272512281c517a0f10170921151a1916151515171a2106a9fd +d4d3d4982c3868f4eee77f0a161c3e4c4333131814161716131213150c21 +1e2d1752fb9fbdbfb1d4c5d0d9e8c5a2c0ada8bfbac9c8bfc3c9cbcabdc1 +d6c7bfc1bec6c5f1c9c3d0c5c1cfc6c4c8d4e3ddcfd8e4dee4d9e3ebeef1 +e8e5e6e5f2dbe7eae8ede8f3f7f1f0f70c0b0b0d10100e0c121212131211 +100f13171919161210100c0f100e0c0d0e0f0f0e1014141211120b0d0e0e +0d0c0b0b0c0f1112111010110f100f0e1013131112121212131517181414 +1515141413120f0d0e11100c0c100f131414181b1913191613131719150f +161414141311111415171319141b181c1f291e1718211b1f211d1e201423 +10192013131e1d1a19191f1c19181615191f1620221a1a22231a1e1e2c39 +322420212a26201b191a1f231b1b1c1e2123232326252424252625242220 +25292824242929242724252925292421202425232327252b24302d27352a +3131313023292533242c33312b2723221e27262d2b2e2c373129241d0058 +4245d93b32aa63364939241c261613565b30291a32cf5a211133b9d3a8ab +77621587df82e01b8ecbccc3c0d6d0c9cdc8bcced2d0ec0e0b0b19051500 +c7dacdcfc7bcbfb4b5beb6887f0502131310031165b0cec8a0766479accb +c8a68d7575000e0c0a0d0082c0cee4c8d5d5cbd5dacccddde4111f1f5c5e +1f49e2dad9dcd3dadbc1d4d4d5d7d6d7dde4e8ebeef0f0f0f3f6f6f8f5f3 +f4f2f2f0efe6ec7d5e2c383338254057355ea5dcd6d3d5d9e0ea891e3223 +28162c47440e0025c7803e5d4d57555b504873cbd9e4e8e7f9ffe4a6cab8 +967272665b4b84be5b32210fb9e44e4a41546578cb9159a1e5e9eaeddeb8 +a8aebac1c4986f86a97e2a7b242e724c5b315b46a79ca99bd6dfdbeddad5 +e7deddc9c43e575956373a1f496f080e19081a0c131511101010100f1300 +97e7bdbbbc7f0f1b4ddcd7d26c00080f313e3825080c090d0e0d0b0a0b0b +02140e1c063ce5859fa092b5a6b1bac9a582a08d889f9aa9a69da1a7a9a8 +9ea2b6a79ea09ca4a5d1a79faea39fada5a3a7b3c2bcaeb7c5bdc3b8c2ca +cdd0c9c6c9c8d5becccfcdd2ccd7dcd6d5dc272727282c2c2b2a2c2d2e30 +323130302b2d2f302e2d2c2c313233312f2e2e2e2b2b2d31322f2d2e2a2c +2d2d2b2a29292a2c2f2e2b2828282c2d2c2b2d302f2d2a2c303131313132 +3736373838373532362f31373630323933353535373a3934353535353739 +363233333537353234393a3a343a353b383c3e4239323f4537384941424a +3e3f344747423a3e3a413f3e413e3c3c3c3e4349454341403c39383a3d3c +43484341413d4342434648484a4c454648484644444448494a4b4c4c4845 +4d49494c4c484b52504e4e4d4f5355575152555a595553544b514e555551 +564d504a4b524e5753625a626a69635e5a585c594d55545d585a5f614a30 +107e3f29c1d0b0a5466886696542444c4c908f72525488da635d4ec3dfff +d69d97b5c3e2f69df93ebdebf0e6afc6d4ccd2f6eafefae2ff343628203b +2e14d5f6f5fceffdfcecf2dbaa99c6283228232a2845d0fffbcbae9fc5ec +ffecd09c9fd9ff102b35333a16b4fffaf8fdfff6fffcf8ffffffe3302b23 +6f8a3c47d2fffbf1fbfdf1e0fcfbfcfaf7f7f9fbfefdfefdfcfcfffffefe +fdfcfafcfdffffffffa8755259565154aefcd3ebe6effbf1f9ffffa55358 +454e403ea562535468b4ffe4eafefffdddb8b1fffffffef2fefffff1b538 +2a0c0e175d905165c5ca90743c2ec1ffe9c8fffbfcf9dbbdd5edd6f0f0f7 +fdeecb803c2d0f344f7c8c4c5b8257c2925a5d3e806d6b77546fadeefff3 +ecfed6f2d49fa172aad8e1cace9b897e2d27262423282422212223232321 +2608e4ffffffbe72556b585442564a32272c434648342c27292625252828 +2726342c32300e9dffcbd5d9c1dacacfcec5d0c0dfdee2f0dfe1ecdfe7e3 +e9e0dfe7eef5dedceed7edfff6e6e7f2f4edeaf1f2f2fbfcf8fffff0fdf2 +f8fbfbfef7f5fff7fff3fffdf9f1eaede8e3efff1b1b1b1c1f1f1e1d1f20 +2123222120201e20222321201f1f24252624222121211e1e202425222021 +1d1f20201e1d1c1c1d1f22211e1b1b1b1f201f1e202322201d1f20212121 +212227262627272624222622242a2923222923252525272a282325252525 +2729262223232527252224292a2a242a2329262a2d3128212c322425362e +2f372b2c2134342f272b272e2c2b2e2b2929292b303632302e2d29262527 +2a293035302e2e2a302f3033353537393233353533313131353637383939 +3530363232353531343b39373736383c3e403a3b3e43423e3c3d343b383f +3f3b403737313239353e3a49414951504a45413f46453d46484e43404246 +35291c9b6e55dbdfc1b34c6576514a2b323c3b7a71543c4272c24c463ab1 +d1ffce958ea9b6ddffafff42b9e1dfd29bb4bfb7bde0d4eaebd7fa29291a +122d1e04c4e5e5ebdeeae5d3d9c49584b1151f1611181733bff3dfad8e81 +a8cfe5d2b58287c3eb001923232a07a5feece8edf3e5f4ece6f6f2f6d424 +221e6b873b43cbf7ece0e8ece1d2eeeff0f0f0f1f4f8fdfefffffefeffff +fefefefffffffffef7f7fc976441484745489eecc2dad7e2f0e8eff4fb8f +373b282c17117531241b20578f5a4b4f4d493d3145c3f7fffff2f1f5fdff +eb8b987a6047627a324ab8be72522018aeec742a54547093a6a7cdecd9f2 +eaeef1f7ffeae5f1cbca998e7828426e41ac7b4345276a79b4e4c6cbd5f3 +f2e1e5fed4edca8363090b1a2216372330420a0f0e0c0e1513100e0d0e10 +12131a00d9f8effba55a3d56423e2c3f351c11182f32342218151b191717 +17171615231c25230192febdbcbaa2bbabb0afa6b3a3c2c1c5d3c2c4cfc2 +cac6cbc2c0c8d1d8c4c4d6c0d9eadececfdadcd6d3dddedfe8ece8eff0e1 +ede2e8ebebeee8e6f0e8f6e4f6efebe3dfe2ded9e5f80b0b0b0c0f0f0e0d +0f101113131211110d0f1112100f0e0e13141513111010100d0d0f131411 +0f100c0e0f0f0d0c0b0b0c0e11100d0a0a0a0e0f0e0d0f12110f0c0e1011 +111111121716161717161412161113191812121913151515171a18131515 +15151719161213131517151214191b1b151b151b181c1d2118111d231516 +271f20281c1d12252520181c181f1d1c1f1c1a1a1a1c212723211f1e1a17 +16181b1a2126211f1f1b212021242626282a232426262422222226272829 +2a2a261f262222252521242b29272726282c2e302a2b2c31302c2a2b2226 +232a2a262b22231d1e25212a26352b333b3a342f2b292f2d262f32393231 +3233200c006d3820aeb494821e3a5539391d242c27625538252c5aa62d24 +178dacdca97067818cb3dc89df1d94bec1b7839eaca4a8c9bcd1d4c1e617 +190d07221100b4d1cccfc0cac6b5bba578699c04110a050a051da5d6c793 +75658aafc5b197676faeda000d17161a008ee4d1cfd4dcd1e0d5cedcd4d9 +bd14191a687e272aafddd9d0d9dac8b7d4d5d6d7d6d9e0e5ebeef1f2f1f0 +f2f4f6f6f6f4f2f2f1efeae9ed87522f36322f3087d3a8beb8c2d2cbd4dc +e7812c33222a150e712a14080a45815048545854453745bee8eae8dae1ee +ffffffb3cbaf8f6b767d202d98a46a501c0d9de17d395e5b738f9892b8d7 +c4dddadfe5e6e4c4bac1989d7e7e6d1c2e562a9769333917525586ad929c +b3dce1d5dbf4c7daaf6b58102b484e3948252a3a040b0e0c090e0c0c0808 +090a0a0a0e00c7e5dbe68f42233b2a27172d240e040d242729160f0b1210 +0e0e0f0f0e0d190f1512007ee8a29e9b839c8c9190879383a2a1a5b3a2a4 +ada0a8a4a9a0a1a9b1b8a3a2b49eb8c8bcaaadb8bab4b3bcbdbec8cbc7ce +d1c2ccc1c7cacacdc9c7d3cbd9c7dbd4d0c8c3c6c3becadd272728292b2c +2c2b2e2f3234343332312b2c2c2b2b2b2c2e313030302f2e2e2f2b2a2c30 +302d2b2b2f2f2f2e2d2d2e2f2c2e31312e2c2b2b3031302f2f31312e3034 +3739383635343636373838373532383133393a34373d3a393736383a3936 +35393a37343333323235393b3935363a3c3d3a433b3c363933333a353f42 +3d48444442403d473a343c4741413c4b423d3c3c3e3f3f3f444a4848494b +4a47464740414240414b4e4448423f41424141424a4e52504c494b4e4a4b +4a494c4f4d48524d4b4f51515256494d5056575656544d4b494848484c50 +4f51564e535c504b515e61554758575c5d62666562605c58685f4f504d58 +56565c5a4d3d11643f6ee74138a672447e6a5c403a2d1682796d4842432d +287052c4cdb265360d52bc4e2589f43bcdfbecebe8fbf5fbe1f6f3f0e7eb +ff42382733263016cbfff1f7f0f6f2e7b992b5d7ff33252c2f352140c6e7 +b57dc2e8fff1d8bea4cae7faff163727232b21c9fff3e5d2e4dec1e4f8fe +ff9d843530186b771e54dcfff1dce7e2ded6f4f7faf9fafbfefeffffffff +fefdfffffffefdfcfafcfdfeffffff946f565a5c574ec5fff5fff9f0cee4 +ffffaa34534d494f37c4ff3a588bafebfbf1f7f0e4cda7d7ffffe8f8edff +fffffcf7e2330b00153a4941514ad3eb7a783e3589ffffb1f7eff5ffc7d1 +f2fffaf8ecf5f8f5e38c49180d2747533b444a89598458525054a69a76c0 +a4c8d0fae4f8ffd7969a6690eac1b9faf6d2d1ab9586342221241f26211f +1e1d1e20201e2926ffede8cc6562626667615f624e4f332f3b3b41292b27 +2827262425282d303123323921daffead2dcd4d7d6d9e2d7d8dfdbdae5ee +e6e7ddd7ece9f2e7ebf3e8e5e0e9e9e1ffefe6f0f0e9e8edf4f6f4f1fcff +f4f1f6f3fcf1f6f6f4f9f5f5f4ebf9ecfaeef0e6fae7e1f2ffff1b1b1c1d +1e1f1f1e21222224242322211e1f1f1e1e1e1f2124232323222121221e1d +1f2323201e1e22222221202021221f212424211f1e1e2324232222242421 +202427292826252425252627272624222824262c2d27272d2a2927262729 +282525292a27242323222225292b2925262a2c2d2a332b2c242722222722 +2c2f2a3531312f2d2a34272129342e2e29382f2a29292b2c2c2c31373535 +3638373433342d2e2f2d2e383b31352f2c2e2f2e2e2f35393d3b37343639 +35363534373a38333b3634383a3a3b3f3236393f403f3f3d363432313232 +363a393b40383d463a353845483c2e3f3e4344494d4c4947433f4d463a40 +3e49413c3c3d3732197f6b9bff544eba7e477359493033281279695a3935 +341d176042b7c5ac6132074ab34b2f97fc3dc7eedddad7ebe3e9cfe1dddc +d8dffd35281722151e05b8f1e0e4dde2d9cea07ba0c2eb2012181c220f2c +b2d29961a4cdedd6bda58cb5d3e8fc062919151e14bdf9e5d7c4d5cfb1d4 +e8eff190782d27116673194ed2fce0c9d5d1d0caeaedf0f1f2f5f9fbffff +fffffffdfdfdfdfefefffffffffffefdfa835c45494d4b42b5fde3faebe6 +c7defbfd971a3224182015a7f60b102d3860624b4d433636398ce1f8e0f9 +eefffefaf6ffff746b605c675a383830c3dc605f2c277cf29a1f4d4c75cd +96b7e7fffbf9e6edefffffe7e3d1c5bf9c7536324082496e3d353238919b +a3ffebffe3f8d8edffdd9a985771b16121443c203428334516130f10070e +100e0b0a0b0d0f111f1ffae2d9ba4e494a4e4f48484b38391f1b27292f18 +18161a18151312151a1d2013252c16d2ffdcb9bdb5b8b7bac3b8bbc2bebd +c8d1c9cac0bacecbd4c9ccd4cbc8c6d1d1caf0d8ced6d6d1d0d6dde2e0de +e9eee3e0e5e2ece1e6e6e5eae6e6e5dcebdeece0e2d8eedbd5e6f4f40b0b +0c0d0e0f0f0e11121315151413120d0e0e0d0d0d0e101312121211101011 +0d0c0e12120f0d0d111111100f0f10110e101313100e0d0d121312111113 +1310101417191816151415151617171614121813151b1c16171d1a191716 +1719181515191a17141313121215191b1915161a1d201b241c1d16191212 +18131b1e19242222201e1b2518121a251f1f1a29201b1a1a1c1d1d1d2228 +26262729282524251e1f201e1f292c2226201d1f201f1f2024282c2a2623 +252824252423262927222b2422262828292d2024272d2e2d2d2b2422201f +1d1d212524262b21262f231e243134281a2b2a2f2e33373633312d293830 +25292934302d2d2b221600523664d3261d874e1c533f38212315005c483c +24221d03003f2094a1883c0d00238a220a73d718a3ccbcbcbdd4cfd5b9cc +c6c4c1c9ea24190a180b1200a7dbc6c6bdc1baaf825c83a7d60f040d0e13 +001497b581498cb2d0b89f87709abbd4ec002010080e03a7e2cbbdaabeb8 +9abdced2d0705e1a1e0b626a0636b7e2cebac7bfb6b0d1d4d7dadbdfe6ec +f3f4f6f6f5f1f0f0f4f6f6f4f2f2f1eff0eeeb734b333538352a9ee6cbe1 +d1cbadc4e4e7860d291e131a0b99e7000423305b5d4b4e473f3b3886d8ed +d3e9deefeff1faffff9e9e9794916e39220fa1bf5358221a69e29e2a5651 +74c587a6d5ece9e7d8e2e6f2fac8bda593907b5d231e25652f572c27282a +767978d7bfd7c3dfc2dbf3cf89813a55a0623a6c6340452e303f0e0e0f11 +050a0907050405070808130fe9d0c6a63c3532363732363b2a2c14121e1f +250e110e11110e0c0c0f13161606151b04bde8c29b9e9699989ba4999ba2 +9e9da8b1a9aa9e98aca9b2a7adb5aba8a5afafa8cfb6acb3b3adaeb4bdc1 +bfbdc9cec5c2c7c4cbc0c5c5c6cbc7c7c8bfd0c3d1c5c7bdd4c1bbccdada +2a2a2a2b2c2d2d2d3031333232302f2e2f2e2c2a2a2a2c2d2f2d2e30302f +30312f2e3032322f2d2d2e2e2d2c2b2d30322c2d30323332312f3031302f +3031302d32363b3d3b383635343536363636353434303035373536383b38 +35343738373632383b3834333638363b3e3c3837363537373239333a3d48 +43343f384249464c4f4f49443c3d3f45334741464354433a3b3c3e403f3d +3f4335404542454d493d494a4a46464f504463584d4a49494c5143484c4d +4b4a4e534e4d49464a5356534f4e4f525658575451555154555259585857 +5757585a5c5d5e5e65575f6c5a596f5a4c5b738f7a6c6b6c6a66625f5b57 +6868656a60686a6a6d7969462e833334a9aa9fa572578071532d1c171098 +847156204be6d4ca7ac3c9a399534666ab6a27a6fa37c4fbf0e5d7f1cffe +e0e0fbecf4f0ff54273021282816c3fffdfffffce9c6c3e3ffffff3d182c +22242142adeacf9be8f6f3d2c2c6d6f8ffffff142035322a1cb0ffffefcf +e0ffeefcffb75669c744272877943b49e9fcf2f2fff1fae7eef4f9fbfdff +fffff9f9fbfcfdfefffffffffffdfcfcfcfdfffff5765e585b5d5848e6ff +fffffffffdf8ff9a32585749535962d3b435a8f4fefffbf3f0eccac2f5ff +d8d1e9fbfdfefffffcf8ea2f0e18222d494c565cffff2b5a463b4cffffa2 +f8e7e1ffd2ffffebe7d1d8fffff2e9a5181c13286540535b5bab8128333d +3e4aa88d618e73e4abffffffc7623c60aee8fff8a4e3e2d0d1ada6962a20 +2321271d2b27272726262627202ffefee1996a686b667272526853463029 +373a3c252732232a33322d28292b3046282f54edf9ffc1d2dcc6cbc5d5de +d8eedfe1e9eae2e2f1ecf8e9e8dee0e5e6e6e1e6ddf4f2ebeaf5f1e6ecf7 +f9f8fdf5fcfff4f1fafdfffafffdf8fcf7f6fbf8fffffff7fffffff8f9ff +ffff1e1e1e1f1f2020202324232222201f1e22211f1d1d1d1f2022202123 +2322232422212325252220202121201f1e2023251f202325262524222324 +23222324232022262b2d2b2826252324252525252424272323282a282628 +2b2825242627262522282b2824232628262b2e2c2827262527272229232a +2b3632232c252f3633393c3c3631292a2c3220342e333041302728292b2d +2c2a2c30222d322f323a362a36373733333c3d3150453a373636393e2e33 +37383635393e39383431353e413e3837383b3f41403d3a3e3a3d3e3b4241 +414040404244464748484f4149564443564133425a7661535253514d4946 +423c494c4f585159554e4d5a4e38349a5b5cc0bbb3b77b58735f401d1414 +0e93776247133cd6c3b96ab4be9a934d3d5e9e652db0fe37bfeee2d6c7e3 +bfedd0cee7dae5e4fe47172010181605b0fce9f6fbe5d0abaaccf0f6fb28 +05180f110c2e98d2b581cedcd9baaaaec1e4f9fcf9061328241d0fa4f7f7 +e1c1d1f3deecfea8485cbc3c1f216f8d343edbecdfdfefe2eedde6ecf1f3 +f7fbfefff9fcfefffefefdfdfdfdfffffffffefefff7e5654b464a4e493c +d6f9edf1faf8f8f3fc8d1c3c321c1f2b46b88e00477465594840434b3c52 +aee2c4cdeffffffafefdf6feff635e6d675d66524540f3f51447362b3df4 +a71b544b6ee6a2f9f5e5e5cfd0fcfffcfff3a8d0cbc5c36b585158a6710f +161d222f8d806fac95feb0fffdf8c5663f5e9fcbeba30f2b251d322a4253 +0c11100d12081a1816141315171a1627f5f2d186534e504c575938513d30 +1c1525292b141621141b22211a1516181f361a244ce7f3f5a8b3bda7aca6 +b6bfbbd1c2c4cccdc5c5d4cfdacbcac0c1c6c9c9c7cec6ddded4d2dbd7cc +d2dfe0e1e9e1e9eee3e0e9ecf3eaf0ede9ede8e7ece9f8f1f3e9f6f5f4ec +edf8fbf50e0e0e0f0f101010131414131311100f11100e0c0c0c0e0f110f +1012121112131110121414110f0f10100f0e0d0f12140e0f121415141311 +121312111213120f12161b1d1b1816151314151515151414161212171917 +16181b1815141617161512181b1814131618161b1e1c181716151a1a131a +141b1d2822131d161e2522282d2d27221a1b1d2311251f2421322118191a +1c1e1d1b1d21131e2320232b271b27282824242d2e2241362b2827272a2f +1d2226272524282d28272320242d302d262526292d2f2e2b282c282b2c29 +302f2f2e2e2e2d2f31323333382a323f2d2c422d1f2e46624d3f3c3d3b37 +33302c2735373a423c4444403e48391d106c2627928e82854c2e53472f10 +070300765745340329bfa99b49939e7b732d1c3a7b3f098bd91199cbbfb5 +adc9a8d9b9b8cfc2cecce8340813060b0a009fe4ced7dac3b18d8cadd4db +e617000d010200157bb69e6ab7c3be9e8e92a6cce5ecec000b20190d008e +e0ddc7a7badcc7d3e189253aa027141b6c832228c1d3ced0e1cfd6c2cfd7 +dcdee1e8eff3eff3f7f8f6f4f1f1f4f6f5f5f2f2f0eef1e6d6553a323639 +3224bfe2d9dde4e1e2dde97c0e302a16141c31a379003e71675c4c444750 +3b50a8d9bbc2e5f8f4eef1f4f6ffff8a8fa4a28b784e2b1bcfd60239291c +28e4a5215b4e6bdc94e8e6d5d6c0c5f3f6f1fadb85a397929e4f41383988 +57000610161e725e4b8672db90e4e6e4b6552c457eabd29c254f4b3b4430 +404d040c120f0f0313110f0e0d0e10120c1ae6e2c175433d3b3542452943 +3025130c1b21230c0e190d141b1a140f0f1115290d1239d1dbdb8a949e88 +8d8797a09bb1a2a4acada5a5b2adb8a9a89ea2a7a9a9a6aca4bbbdb2b0b8 +b4a9b1bdc1c1c8c0c9cec5c2cbced2c9cfcccacec9c8cfccddd6d8cedbda +dad2d3dee1db2d2e2e2e2f2f30303332323131302f2d31302e2d2d2e2f2f +33303032333030323230313333302f302b2b2b2b2c2e313328282a2e3132 +2f2c2d2f2f2e2f31302c2a2d3132312f2f303738383736383b3d3a363637 +3b3b393638363536393a3938353a3d3a383a3d3f3a41423a363837313433 +2e3630394252563e4e3e404a453b453d3c494f4644444d55414847564342 +474647494a474647464e4f4b4e575245454144454041423d3e3d424b4e4a +494c5151504e4c4b4a4b4f4f4a464b5457534f5354515155544f585a4d4d +4c4c5c5d5758595b5e5e5c585c605c575f61595b67616770615c5a746e6e +6c676463605e585a5d645761625e71644e2f29712e54ac334ecb754d926f +4f312d3b30917a623b3d6eff493d519fb52a2c44707ca7e48697f63ec7ef +ebe3bad8add5c4ddf2f4fffffd3d3a3c453f473e98c3a5aea7939c897b94 +a68e91505d64606b73625a60666c795c686971bbfbfffffde51d2029292d +1982fffff6fffdfffbdb85528ed7ffa43a32ccd13968ffffe9c9dbc6dfd0 +eff6fdfffffffffff1f3f7fafdfefffffffffffdfdfcfcfefaf4ef775059 +5b5b5b4efffff7ecf4f2fff8a9455b484647445e645a6da9ddf4f8fffff6 +dab9c5ffffc4c5ebf1f9fafffefffff8e52b1e25252e2c4b6595ffff1661 +573e46ffff9ce9ebc5fffbf8d8fffdfffffffbf8efac2c1215206e5173a4 +a293733d336d8a917d6a8746b3f0baeff1c55e6389d3f5f3fcffa1d3ded9 +d49ea37e23262223291e2b2a2b28252526281959ffd68b4f696c84666f5f +584f5e4c39314241392421342e333a3e3d37302a2f45334392fafcffd3d4 +decbe7e1d8e9dde3dddfd7ddd8e0dddce7dee4edf3f9ebf5e2e4e6f2e8ec +f6f2efe9f4f7eaf2eee5eaf1edf1f7f2fbede9ded8e2e7ebf9f8fffffff9 +fffff5fffffdfafd2122222222222323232222211f1e1d1d242321202021 +2222262323252623232525232426262322231e1e1e1e1f2124261b1b1d21 +2425221f202222212224231f1a1d2122211f1f202627272625272a2d2d2b +292a2e2e2c292826242528292827252a2d2a282a2d2f2a31322a26282721 +24231e2620293040452d3b2b2d3732282f27263339302e2e373f2b323140 +2d2c3433343637343334333b3c383b443f32322e31322d2e2f2a2b2a2f38 +3b3736393c3c3b39373635363a3a3531363f423e383d3e3b3b3f3e394244 +3737363646474142434548484642464a4641494b43454e484e574843415b +5555534e4b4a47433539424f46504b425043321e2b845579bb3855d17444 +7a5333191f322885674c252956ec2e23378aa1191c345f6b92d7869df83c +bfe3ddd5accd9ec6b5cde0e2f2fdee2e2a2c332d332b83af9097907b816e +627d8e787c3b4a514a555d4c42484d53604350545ca7e9fcfbf1d913171e +1c1f0c75fdf8eaf9eff1edcd784580cafe9c3229c3c82d5ceff6d6b6c9b7 +d5c9e9eff6f8f9fdfffff2f5f9fcfefefefefdfdfffffffffefcf4ebdf66 +3d474a4c4c42eef1e6dde9ebfdf5a43845271e1b1e3f4a383251605b4d57 +473e373367dde6abb6e7f5fffffff6fdfefdff585d6c6a6b5a615673e8f4 +004e412429eaba204a5563e9d1dcc6fdf7fbf6fcfcffffebb6c6d2c3d382 +7c9a9c8a5e211653797c5a477643b8f5b7e4e0b3525d88d2ede4e2c70c15 +1a223922463f000e070a17111c1b1a171313171b0f51fecd7e3e5352694b +54463e384836251d2f30281512251d22272b2a241d171e3525388af4f6fb +bab5bfacc8c2b9cac0c6c0c2bac0bbc3c0bfc9c0c6cfd4daced8c8cccfdb +d4d5dcd5d2cfdadfd1dbdad1d7dedce0e6e1ebdddacfc9d3d8dceae9f3f7 +f1ebf9fae9f4f8f1eef111121212121213131413131211100f0e1312100f +0f101111151212141512121414121315151211120d0d0d0d0e1013150a0a +0c101314110e0f1111101113120e0a0d1112110f0f101617171615171a1d +1c1918191d1d1b181816141518191817151a1d1a181a1d1f1a21221a1618 +171117161119111a2232351d2c1c1c262117211918252b22202029311d24 +23321f1e2524252728252425242c2d292c353023231f22231e1f201b1c1b +20292c28272a2b2b2a282625242529292420252e312d26282926262a2924 +2d2f2222212131322c2d2e3033332f2b2f332f2a31332b2e3a343a43342f +2d473f3f3d383534312e22262f3a323e3b3441321d0206572045900f29a3 +481d5e3e270f1423136b493418204add190c1e6f8800031b454f75b76479 +d11598bdb8b28fb187af9eb6c8cad8e6d91b1b1f2921281c709775776e59 +6351445e7260672a3b433d474834262c373f4c2d3839418ed1e5e8e1cd0a +121813120062e5ded0dfd5d7d3b258235ba7df852722bebf1d44d6dec5a7 +bba4bcadd3dce3e5e7edf3f5ecf0f6f7f8f6f3f2f4f4f5f5f3f2f0ede6da +d0562c333635352adaddd4cad7d8eae29128381e161009232f1d20455e5e +535c51463c325dd1dfa6b3e4f4fdf8f4e9f1f8ffff7788a0a3976755394e +c3d4003f341717dbb4204f565adac1cebaf1ebefeef3f4faf9d894979a8c +a962617f7c6b430b044269673e2958249ad596c6c69f444d74b6c8bbc1b9 +2039404047244138000e0c0e150b151413100f0f10130544f1be6e2e4543 +563641322f2a3b2b1c162829210e0b1e161b2125241e17101428182677de +dee19c96a08da9a39aaba0a6a0a29aa09ba39e9da79ea4adb5bbaeb8a7aa +adb9b3b3bbb3b0acb9bdb2bbb9b0b7bebec2c8c3cabcb9aeaab4b9bdcdcc +d8dcd6d0dedfcfdaded7d6d9313032313131313233333232333334333231 +32333435353537343234332f2d2f2e2d2d2f2f2d2d2e2c2d2f3030323537 +343333373c3c38342e2f303031333230313437373535373a3e3e3d3a393c +434738363332383937313837383c40403f3e4143423e3c3d3f3e3c454338 +353b3a32353a3e493f3d3b455d516f54434b4c3f404e51474643493d7365 +4042414e414a4b4645484c4b48464a423d3e42434140443d434c4741474f +4c494b4f4c484b52484545464a4d4c4a4a4c49474b514e46565c5a4e4a4f +514d4f544a4d4c4957555e59545054575958545d4e545b4f545854595e5a +4a4a48544b4f51515256595a7066595a4f5f645d6263563133752539b4a8 +a5935e3f948257453b3a28777e664c4f71ff71495689ffdd38598f8059cb +faabfb31defee7f2d6efc9bfb8f9eeffffff3e466b606965616458484553 +4c5c5a635d5b4d525d63655f67686c6562706b5e646d5e707fa9fffffafa +d90823272b2c1b5ffff7ebfbfffffb7e57b7e9f4ff89263ad9ea3e36c2ff +ffddffe4e2ccf4fbfffffffffffbf8fafdfefffefefefffffffefefdffff +e8effc904e5c5e5d4b48fbfff9f6efeced8aaa794256384a9f616b86b7e3 +f6fefffdf0e4bcdafffff7eff8fef4f3fbfafffffffff13828221c2f2f5c +97bec29a218a804a45dfffadefe5d1ffffd7efdbf4fdfdfcfdf8f4ca261f +1028634e80a46d423c46938e72715edcb45740564babb44a90c2c5dbe0eb +eeff9dc7dcd7ddad9f5b2a2f2029222a31322f2b28282e321b8ffd6f4c48 +6173777c606a594f433d352c3c3b3227203732282025343c372e5a17292e +60d3ffffd8dcf0deefddc7e9eee2eff5dbe2d8e5e2e4ece5e5ebe3dfe3e1 +d5e3e2d2fad8e3e9f3e5e3e5d6e5e0e3eff6f1f9fff6fef7fffcf8fefcfc +fbf6fafffffdfffbffffffffffff24242524242424252323222221212223 +25242526272828282a2725272622202221202022222020211f2022232325 +282a2726262a2f2f2b272122232324262523212427272525272a2d2d2c29 +282b32372b292625282c27212827272b2f2f2e2d3133322e2c2d2f2e2c35 +3328252b2a22252a2e392f2d29334c405c413038392c2d3b3b343030332a +5d522a2f2b3b2b373833323539383533372f2a2b2f302e2d312a3039342e +343c3936383c3935383f35322f313438363534373332353c38313f464338 +33393a37383d33363532403e47443d3b3d4243423e47383e45393e423e43 +484431342f3e32363838393d403f4f453e443d4d4a4041423b2134864759 +c1aaab9459317c66392a292c1d6b6b5036385af6572e3b73f2d12c4a7b6b +44befab0fc2ed6f2d9e3c8e3bdb3a9eadef4f8ef2e355a4f56524b4f4132 +2d3b354340494343353c474c50495151564f4d5b52444a57485a6b98fcfa +edeed0001a1e1f1e0e54f5eddfeff6feec7049aadce7fa821d30cfde3128 +b1f7efccfad7dac6eff6fcfdfbfefdfbf9fcfffffffefcfafdfdffffffff +fefce1e4ed7f3c4a4e4d3c39ebf7e8eae7eaee89a268273412257f3f3f48 +5b695d534d443b413678ecf6dfdeedfaf6f8fffdfffefaffff5e63686570 +5f71879a9e7b0d79692c26aec436534f6ce7d9c0e3d5edf6f0f3ffffffff +aacfcbccd28c8d986434242a7978635f3cb99c47395144a2a83f89bdc3da +dee3e0db140f1519403247220715030f101b1e1f1e1a1514171b0983f569 +433646555a6145513f382c271f1528282118112821160d122129241c4805 +192155cbfff8c0bfd1bfd0bea6cad1c5d5dbc1c8bec8c5c7cec7c7cdc4c0 +c6c4bbcbcabbe3c1cbcfd9cbcbcdbdcecccfdce3e0e8eee5eee8f0ede9ef +ededece7ecf9f2eff4edf5f5f5f5f4f31414151414141415141413131313 +141414131415161717171916141615110f11100f0f11110f0f100e0f1112 +12141719161515191e1e1a161011121213151412111417171515171a1d1d +1c19181b22271a181514181b17111817171b1f1f1e1d2123221e1c1d1f1e +1c252318151b1a12161b212a201e1b253c304d321f27281b1e2c2d252221 +251b4f431c201d2c1d28292423262a29262428201b1c20211f1e221b212a +251f252d2a27292d2a262930262121202627282426262521272b2a202d31 +312321242822262b212423202e2c352f2b262b2d2e2d293223292e22272b +292e332f1d1f1b291c20222223272a2a3c342b2f2939393032332807125c +142796837f682f0c60512e211f1f09514d3829304ce5461b265bdab91635 +6250279ed688d405afccb6c4adc9a79d94d3c5dbdfd81721483f48443d3e +2f1b131f162525302a291d25323a3f3b4341413730403e3339423142527e +e4e3dadec100111513110040dfd4c7d7dee4d5562c8abac5db680c26c5d0 +1e0e97ddd9baeac6c3aedbe3e9eaebeff0f1f3f7fafaf8f4efeef2f4f3f3 +f2efecebcfd2da6b283437362522d4e0d4d4d2d5dc77955e1e2b09156623 +26334e646059544a4244336dd8e1d3d7ebf9f5f4fbf4f4f2eefbff758f9c +98966b686e7a7c5c00675b21149dba32564e60d7c9b0d5c9e3eceaecf7f8 +f7eb85a09699a7676f7e47190a126261504b219d822d1f3427858e2977aa +aebcb8bcbdcb24313c3b5137451b031407120e16181816120f0d11150077 +e85934283b4a484c323d2e281e1a140d21211a110c21190c060b1a221d12 +3e000a1041b6e8dda4a1b4a0b19f87abb1a5b4baa0a79da8a5a5aca5a5ab +a5a1a6a49aa9a899c39fa7acb6a8a9ab9eaeabaebcc3c2cad0c7cdc7cfcc +cad0cececfcad1ded7d4d9d3dbdbdbdbdcdb2d2e2e2d3232313634333234 +373836342f3234313032312e2c2b2c2e302f2b282e2d2b2b2b2e30323a38 +3633323334353736343333363b3f3435353333353533353635333436332f +373434373635394143493c4d473f4343453d37373b3d3f403b3a37373b41 +424140413f3c3f45444045414a5c464745423c4549443e404343393a3d3c +3c3c3f3f404d4f403e464435313c434040454540413e3a3b3f444546523d +3f663f605e4740444441424747414c443f3f4142444544413d3f484e4c46 +4e50504c4b4c4b47434a5253504e5052585149504c504f57565349534e56 +4e504b514951565560575951566264615e5d544e5959645e60555d6f4a34 +2d6a1e53b39485ba601b947653533a3b1a7c6e623d556dbd282e62bdc079 +272156e5edbe7bb7ec3fddf1efdbcff0d2fcc5edffffd8a4356362626b6c +6f676261696c6c6765626466676e6c60646d656b636b6a6a5e6871726a61 +8381fff3e5e9f816342925341e79ffecf8eab6685f83d6f6eeebff6c2c40 +4a586d5faffff7cbf1cdffe4fbfefbfffff8fffdfefcfbfbfdfefffefcfd +fffffffcf1e8eeecffa26e6664657359c2ffe9fffcee9b9287543f383ede +e299acc3f5f8f7fff6f2d4c6b6e6fffffffbfffffaebfef9fafafffffc6d +0f201d31324e56595d60729a80474ea0e5afe9e9c7ffffc7eff3efe4ffff +fff8fad537140f234748794d473e5e7fc2ae3a4d5d936f552d44af4ca2db +fbb4feebe1e4eaffaac1d2e3ccc4a84b3222292c293032322e2f302d4249 +2876ca44695083716b6f646e6050473f3f6d3545262c1e3c4766423b5b4c +b2aaae44695756dffbffe3c6e4ddd2dae7c9f1eaace4c4c1fed5d9dddee0 +dfeae9dfeae4e3e1fee9f6edf1f3fefdffecf5fff9e4fdfefff7fbf4f8f9 +fffff3fdfefafbfafffffffefffffffff0fffff71d211e1d222221262423 +2224272826242227292625272623212021232524201d2322202020232527 +2f2d2b282728292a2a29272626292e322728282626282826262726242527 +24202825252827262a3133392c3d352f3131332b2525292b2d2e2b2a2727 +2b3132312f302e2b2e34332f3430384b353634312b3438332d2f32322829 +2a2b292b2c2e2d3c3c2f2b353124202b322f2f34342f302d292a2e333433 +3f272950294a48312a2e2e2b2c31312e39332c2c2e2f3132312e2a2c3238 +3630393b3b37363736322e353d3e3b393b3d433f343e373e3a42413e343e +3941393b363c343c40404a42433b404c4e4b4844393340404b4545384053 +3529307a396ec49f8ec05e1385623e3d282b0d7265572d435bab171d4ead +bc7d2f2346d2deb881bfef3cd5e4e0cbbee0c5efb8def8f7c692204e4b4b +5152554d4948505354514f4c4e4d4e5351454b544c554d575654444d5659 +514b6f70fde3d6dded0e2b2019281271fbe4eddfab5e5377caeae2dffd62 +21333b475c4e9ef8e8bde5c5f9def8fbf8fffff6fffffffefdfdffffffff +fcfdfefffffaece2e4e0f4945e5654546347aefadafbf8eea0937a3d1c16 +22c3bf655a54695546563f453f4d60aef2f2f1eff9fef5e8fffdfffbfeff +ff8a4e706c70565642363942628e692b347591354f504ed9e0b6f0f9ecdc +f5feffffffffb6bfc3c8c9988c413c2f4664ae9b25374983684f253ca747 +a8e5ffbcfeeae0e1e1e9361a0e1f2544531811090d0f0f1614171c1e1a10 +191e0660c54566405e484b544b584a3a312825521d2e131a102d35532f28 +493a9f94982e534447d4f3facfadc6beb0b8c4a8d2d094ccaba8e5bbbcbe +bfc1c0cbccc2cdc7c6c7e4d1ded5dbdde8e7ead6def0e5d1eaebf7e4e8e4 +e9ecf2f7e6f0f1edeeedf8f3f6f0fbf8fafbe6fcf6eb0e110f0e13131217 +141312141718161411151714131514110f0e0f1113120e0b0f0e0c0c0c0f +11131b191714131415161918161515181d21161717151517171513141311 +1214110d1512121514131721232a1d2e27202323251d17171b1d1f201b1a +17171b2122211f201e1b1e24231f24202a3b252624211b2428231d1f2222 +18191b1b1a1b1d1e1e2c2d1f1c252214101b221f1f24241f201d191a1e23 +242430191b421b3c3a231c20201d1e23231f2a231e1d20202323231f1c1d +252a292228282a242524251f1d242c2d2a282a2c322b232a262a272f2e2b +212b262e2628232921292b2b352d2e2629353734312e26202c2a352f3226 +3045241313550c419a7763943500664a2d321e1e0057443b1d354393030b +36939f62180d2cb2bf945590c211aec1c1b2aad0b4dea5c7dedeae7c0b39 +39394041443c35343a3d3c3a3a3739393a403e323740383e363e3b3c333c +45453b335454e3c9bfc7d9001a110b18025ee7cfd7c995453d5fb2d0c8c5 +e2470b202833423280dacba3cfb2e7cee7eae7f1f1e9f2f2f3f1f0f0f1f2 +f0eff0f1f1f1ede5d6cacbc8da7a453f3d404c2f95debddddbd68a837137 +180d16b0a9504e4d68584c5b44473b444f97d6d8e1e3f2f8efe3fdfcfcf3 +edeffd9c81ab978f66583722212849785b1f236487304d4b45cbcda2e0eb +e5d9f3f8f6f1f1ed8d92969d9d716e29261a2e498d7d142931694c351027 +92318ecceca4e6cec1c2c4db413634453f5356140a050c11101512101214 +0f0815180053b233553358423c3f354135251c16184713260d160d282944 +211a3b2c91878b20453334bedce1b48faaa1949ca689b3af72aa8c89c69a +9c9fa0a2a1acaca2ada7a6a6c3afbcb3b6b8c3c2c5b1bccdc4b0c9cad7c4 +c8c3caccd2d7c4cecfcbcecddbd6dbd5e1dee2e2cde3ded33134312f3333 +3236353432333535332e2d3031303032302d2c2c2d2e302f2e2c2f2f2e2e +2e2e2f302f2f2f3031323334303030303234363832302d2c2f33322f3435 +353334353432353536373534363a35393441373333383534363b3f3d3938 +3e3a393d3f3c3c3f3d38363a3f3f3d3c3e36384532383b3b4a4d4b443c38 +37363d3a383b41464643424746403f413f38383f423f4247453d41404143 +454542404b51677b3e41454043454646474a4b4848423f40414141434746 +44454c52514d4f504e4a494b4b48494d4f4c4b4e505055524c4e4b4c4a4c +50504a524d524b4e5057545857545b5550535e6259555c615754615f655e +645d64855c30245a2785b34f66a4752d987f4743362a1a6f705f3f252463 +0d1e6d742e1f10262371a13d23d6e338d8e9f2f2bdc2b8b7ceffecac8ab4 +38566d6c5f6e6c69655c61666b696061676965686e6c63696369626a6765 +706f6865696d8b7de3e6dce1ff16383234362a84ffffcf6c28368dfff4ea +dff3ff861b3e557a7465adfffadfedf4fffffdfffffefbfffffefdfdfdfd +fcfcfdfffcfffffff7f0eff0f3f2ff9c5962646d837489fff2d7de68a463 +46433b41deffd293d8effffffff6e3cfc0b88ed6fffbe8d1f0f0f5fffcfb +f7fbffffff910e1815234b54515b4a5e52576e415384b6a9f2f0c9ffffc4 +fff5f9eafafafafcfbd03a171b153739533a3a45476258375549543d2f31 +2336482bf3c1c0a7c9cbefecdfffeab1eadbd2c88c473f3436373336383b +32333c547d514c5f5c37475e81817d6a666f64545a75b7ff6b353726253c +48836974bd9bdfd6c2878a7c83bffffff8c5dadcd0dbdedce1e1cde0d6d6 +ffd8eae5e3f1e9eaedfbe7e7e2f1f9eeefebf0e6e6e9e8d4d6e8f3e3e7de +e9dceae4e3e6f1fee0fbf5f5ebe8f1f5f9f6f5eaf2efdffbfdf22124211f +232322262524222325252321222526252527252221212223252423212424 +2323232324252424242526272829232323232527292b2523201f22262522 +2426262425262523262627282625272a2327222f25212126232224292d2b +27262e2a292d2f2c2c2f2c2725292e2e2c2b2d25273421272a2a393c3a33 +2b2726252c29272a303535323136352f2e302e27272e312e3136342c302f +30323434312f353b5165282b2f2a2d2f30303134353535302d2e2e2e2e30 +34333132363c3b37393b3935343636333438393635383a3a423f393b3839 +37393b3b353d383d36393b453f43423f46403b3e484c433f464b3d3b4846 +4b444840496e4b2a286a409fc55e71ab73288d713430241a0d686b5a3216 +155500115b69312c222e155e963b2be0e637d0dce3e0acb2a8aac1fbde9c +789f224054534453514e4a41484d55534b4c504f4a4d514f484e49514c56 +535155524d4a50577669d2d7ced3f30b2d27282a1e7cffffc7641d2b82f7 +e8ded3e7fb7c0f2f456860529dfcedd4e2edfdfff9fffffcfcffffffffff +fffffffffffffdfffffcf2eae8e9eae7fe8e4b52535c716279f5e3cad562 +a35d35271821c9fa9f466d675a5a4e3d393e4e6557b6fcf1ddc7e9e9ecf9 +fcfffffffef3ffa8506e6c6a715c413f2b44444b5726405f67335a5342b6 +ebaffffff8e2eef0fafffffbb3bdcabec69a6e322e35324e4e2e45384c38 +33392b405139ffd3ceb0c9caeeebdbf18113220a1d3a31101c191a1b1618 +161a1a18151f35050a304930424e5c565d51505b5042465f9dea501d2314 +172d356e5661ac8ac9c0a86d736772b3fefde7adbfbdaeb8bbbbc2c7b5c9 +bfbfe9bdcdc6c4d2cacbd0decacac5d4dfd4d5d3dad2d2d5d4c0c2d4e0d0 +d4cbd6c9d7d4d4d9e4f1d3eee8e8dedbe3e7ebe8e7dee6e5d5f1f1e61215 +121014141317151412131515131010131413131513100f0f10111312110f +12100f0f0f0f10111010101112131415121212121416181a14120f0e1115 +14111413131112131210131314151312141a15191421171313181514161b +1f1d19181e1a191d1f1c1c1f1c1715191e1e1c1b1d15172411171a1a292c +2a231b1716151c19171a202525222126251f1e201e17171e211e2126241c +201f20222424211f272d43571a1d211c1f2122222326272627221f202020 +202226252324292f2e292b2a28242325252223272b28272a2c2c312e282a +272826282a2a242c272c252828312c302d2a312b262931352c282f362c27 +3430342d332e385e3b140d4616729d3547814c026d572322180b004c4b3c +1f0300380000454d14100a17003e761500acb709a9b9c6ca9ca39b9aaee3 +c482628a0d2b403f31403e3b372e3439403e38393e3e393c3f3d33393239 +343d3a3944443c373a3f5b4eb6bab4b9dd001b15181a0e69eceab24f0715 +6ce1d2c8bdcfe26300182e5047347cdbcdb8ccdbf1f4edf1f3efeef3f4f2 +f2f1f1efeeeeeff1eff3f1e9ded2cecccdcbe37331393f485b4a5fd6c2aa +b84a8f512e241416b6e38a366567606155433a394353429de0d6cbbbdfe1 +e5f3fafffff9eae0f6b684ab998a88694133172d2a35491b2f4f602f554e +3caddd9cf1f2f3e0eeeef0f1eee08a8fa1959a6f4f1b1e261f352b0f362e +39221c2114283c22ebb9b495afaed2cfc0e1882a49343e50380d16121618 +18181413100d0e1b38070b2a3a1e2f4156504e3b3943382a2e4a8cdb4513 +1c101426275d45509c7abbb29b5e63545e9de7e4cb91a2a1929c9d9ca3a6 +93a79f9fca9fada7a5b3abacb0beaaaaa5b4beb3b4b1b5adadb0af9b9fb1 +bfafb3aab6a9b7b3b5b9c4d1b1ccc6c6bebbc6cad0cdcdc4ceccbcd6d9cc +2e302d2b2f2e2c3032302e2e2f2e2c292b2c2c2c2d2f2d292a2b2c2c2c2d +2e2e303030302f2e2d2d2a2b2b2c2c2c2c2c2d2d2e3033343332322f2a29 +2d32302b2f31312e2e3032313337383634343534363433352a2f2d3c3432 +3235383a3e433833343b393130363e383841464340413b353945393c3c39 +3c3b3c3e3e3e4044433a33374248443d443e3c3f403d3c3e3d3f3e3d4249 +463c3b3d4042423f3c3a483c3e4c3b474a434b4948494845444447444445 +4543434642434646484c4d4c504e4a48484b4b494f53524d4e5556524f50 +524f5352565251535158545552544e575757534e524e515357554d4e5351 +5b5b6563625e65635e654e3a3c611039a2b7ba7e7526826e402b261a2263 +736254377fff4d4b869c32203c39536d7b981bd7dc45e9f6f2d1c2e3b8e4 +e19c605c5e6e30686a636263606f6855bc734d68635f656762636a6b6767 +6468656c676569716f6966657e69f2e2d4e8ff0d3e3e3a3d3c88ffc0503c +78c3ded9dceee5d5f3a62f49505c5e7cdafffcc5f5ffffeef9fdfffffbfe +fafcfbfdfffefcfbfdfffffffdf4eae7ecf1f5ebff8e4e6a6b6f7580dfff +feefc7ada04b413d35ddffffe6d7f0f1fffffeeed2c0aba38ce1fffffffc +fffffff2fff9f9fefff2f9b4090e0c122f41625c61523e519041566782aa +eae4deffffb9ffe6fcf3fffffff6f1d1551f1d1433534755433d43293236 +2d3b2f3f2d7397552609d6b7e8dbe1f2eddce1ffffa9f2efdddb925c553c +322e333c383a3b4d517ccba48e664a5853626b877b6f65646e7ba9e1eeff +8d432a3f3a3d36a96b88702996bebc555a4f3976fff0ffd6dce0d2dfd1de +ded8dbdfe6f0f8dce1dfdfcbe2edf8e4dee3ddfcf2f1e9efece7e3eef1f1 +effcfcfff8ecfaedfcf0f7edf8fde8ffedece5e8eceee3e6ecedf8f1e0fc +fff52123201e22211f232523212122211f1c1f2020202123211d1e1f2020 +2021222325252525242322221f2020212121212120202123262726252522 +1d1c2025231e1f21211e1e2022212327282624242524262423251a1f1d2c +24222225282a2e332823242b292120262d27273035322f302a242834282b +2b282b2a2b2d2d2d2f33312821253036322b322c2a2d2e2b2a2c2b2d2c2b +3037342a292b2e30302d2a28322628362531342d35333233322f2e313432 +3233323030332f303030323637363a393533333636343a3e3d38383f403c +3c3d3f3c403f413d3c3e3c433f403b3f394242423e393d393b3d413f3738 +3d3b41424c4a48444946434e3d3440712953b4c3c585732077602d18140a +155c6e5d472870fc3e3c718e352d4b414559709624e1df44e1e9e3bfb1d3 +a8d7d490524c4c591a52514a474845544d3aa35a37524c484b4e47484d4e +4b4c494f4f58534f4e54544e4d4f6955e1d3c6daf90133332d302f7df8b5 +45316db8d4cfd2e4d9c9e79a203a3f4a4c6bc9f7eebbedfdf8eaf5f9fffe +fbfefafcfdfffffffdfcfefffffffaefe5e1e5eaece2fb83425c5c5e6371 +dafbefd9ae968e39282017c3f6f093687a6a5d4c433f42545f7067c8f4f6 +f9f6fffff7edfffffffff7e6f5ca46646b666457614b4a3c324475264449 +3c3e54424aa3d393feeefdeefbfcfff8f5f9c3bacec5cbbe6e54392f3a24 +373c2d382b40368bbf865732eec3eadbe1f2ecdde6eea6071f10153b2416 +281e17151a201715161e0d21582a1e0d153a42524f67605650525e6b97cf +d9f3762d162e2b2c239458755f1881a9a23b40382767ffe6fec1c3c2b0bc +aebdbfbec3c7cdd7ddc1c4c0c0acc5d0dbc7c1c6c0dfd8d7cfd7d6d3cfda +dddddbe8e9ede5d9e7dae9dde7dee9eed9f3deddd8dbdee0d5d8dde1ece7 +d6f3f3ea1113100e12110f131412101011100e0b0f1010101113110d0e0f +10101011121113131313121110100d0e0e0f0f0f0f0f1010111316171615 +15120d0c1015130d0f11110e0e1012111317181614141514171514160b10 +0e1d15131316191b1f241813141b191110161d17172025221f201a141824 +181b1b181b1a1b1d1d1d1f23231a13172228241d241e1c1f201d1c1e1d1f +1e1d2229261c1b1d2022221f1c1a25191b29182427202826252625222123 +26242425242222252122232325292a282c28242222252523292d2c272a31 +322e2b2c2e2b2f2e302c2b2d2b322e2f2b2e262f2f2f2b262a2626282c2a +22232826302e3834312d3434323e2d1e254d00268c9b9b5b4c0059461c0a +080002404e3f341553df2b295c731811342a2838507000afb016bac6c6a7 +9fc399c7c17a38323644053d3d36343532413a278f46223d3a363a3a3435 +3b3c36373439373f3a383d46433b37374e3ac5b6acc0e30021211c1f1e6b +e6a1311b57a2bbb6b9cbc1b1cf840b252b343451addad3a2daf0f0e1eaed +f3f2eff2f0f0f2f2f3f1efeef0f1f0eee7dbcfc7c9cdcfc3df672842474a +4f5abdddd2c19a86822f231a0db2dcd6835d706660524c46414a4f5b54b4 +e0e3e8eaf6f6f0e7fdfdfff8e3d0ead775a1a194866e674338251a316a1d +363e3a3e53404aa2ca88f0e1f7ebfaf8f6eae4df9c8ea2979c924f402f26 +290e1922233320302373a4683714d4abd4c3c7d6d0bec6daaa1e483d3a55 +2d1422140e0e161c100d0e180e2867392c130f2f3243445c4f423b3c4552 +7fb7c4e168200d262424158347644d067098932c31261350e6cbe1a4a5a6 +94a0909ea09da1a5aeb8bfa3a4a1a18da5b0bba7a1a6a0bfb7b6aeb5b1ae +acb7bababac7c9cdc5b9c9bccbbfc6bdc8cdb8d2bdbcb8bbc1c3babec6c7 +d2ccbbd6d9ce2c2f2b2a2d2d2b2f312f2e2e2f2e2d2b2e2c2a2b2d2e2c28 +2a2c2c2b2a2a2d302f2f2f2e2e2d2c2c2c2c2c2c2c2c2c2c31302f323536 +33303433302e2f312f2a2b2e2e2b2a2d303132383935333637353b353937 +2d372d3c3a3633323338424b39383a3d3a3435393535393e42403f3f3934 +39423d3d3c373e3b3c414241454c4c40363740443d35433b373c3f3d3d41 +3c3d3c3b4148463f44444443434345464942434a4e52524d4d49484a4741 +4042454446474543454a46494d4c4b4d4f504c4a48484a4c4b49474e504c +4d53524b42454e46504d524a5353525757575658545a5c5b575658575859 +5b5652585a515d5a5f5f5e5f64606862392c4e5226b56f253be96c417e6a +402b3a4b57756f54343594fd4c5e7acbe94f224da07244c782cdcd3fe6e5 +e5dfc4edca923e32364d3350406170756d646c616e655b687b647367676c +6d6c6d6a6c6867696b6f67656a6e6c6d6e6a7a63e7ebefede90b42343a32 +344a963f2cc4ffe6e6dfe4deefeffac9555b624b4d65b3e8ffe3d2f0f7ee +f7fffffffffefffefafbfdfdfcfcfdfffffaeee8e7e8eae9f3eafa975666 +675f6f7bfbfeff97b08952413b43e4fff7ffeef8fff2f0e8e3bead756869 +65ccfffeffffffffffebfff6f8f6f6eef7d40a140d1741446947705b6f69 +9a404e6c7d9ef3f2f5ffffc2fff6f5edffffffebe9db82281918235e293d +3e3b3c2d272d2d27302f1e3a36000046ca9bd7cbc4e0e5e8e0f6ffa9dae5 +dae8a37975604e3b35394544415a5d9cdbbd9773535a4a644863566c686a +b0e8ede7e1f2be433a47455439cfab2c314658e8d9892c425759e0ffffde +d1e0d8ecdce3dcd9d6e1ddebdee7f1f0f5e9eadde7efdee0e0feedefe9f4 +f1f7edf1eff9f0f1eefff4edfdf3ffeefceefffcfeffe7f9fefffffff1f9 +fffffffaeafefdf71f221e1d20201e22242221212221201e22201e1f2122 +201c1e20201f1e1e21242424242323222121212121212121212124232225 +28292623272623212224221d1b1e1e1b1a1d202122282925232627252b25 +29271d271d2c2a2623222328323b29282a2d2a2425292424282d312f2e2e +282328312c2c2b262d2a2b303130343b3a2e24252e322b233129252a2d2b +2b2f2a2b2a292f36342d3232323131313334362c2d34383c3c3737333234 +312b2a2f3232343532303237333637363537393a37353333353736343239 +3b37373d3c362f323b333d3a3d353e3e3d4242423f413f45474642414342 +424345403c42443b43414646444548454d4d292652623fcf813146f06c3b +735b2f19283b4a6e6a4f272483ee3d4f66bdec5c3152915e37c48bd9d33e +ded8d6cdb3ddba853126283d213b2a4b575c52495146534a424f654e5d51 +4e535251504d504c4c4e5359514f4f5151525552654fd6dadfdfda003527 +2d22243d893421b9f8dcdcd5dad4e3e3eebc464a4f383b53a2d8f2d8c9ea +f2e9f3fffcfffcfefffefcfdfdfdfcfdfefdfff5e9e2e1e2e3e2eae1f18c +4a5a5b536270f5f7f27e906731201c28cdfbdcec7e6d76614d3f3e2c4029 +394d4ebbf7f7fefffefff9e6fffafff8ebe2f3e641656d717c637342604a +64597c223b4c3a345f4c5487aa8bf5f9f6e8fbfbf8e9ecffe4bac9cec1d2 +5a44332e3d3939433c31333733647c3f548cf1aad6c5c0dcdee4e7e0c40d +0c060d3e2723383125161216201c121a022649230700052b3054354c3f56 +565aa2dcdfd9d1e0a92d2735344426ba9819203343d1bf6f122b454ad9ff +f6cbb8c2b6c9b9c2bdbcbcc9c4d0c3cad2d1d6cacdc0cad2c1c3c3e1d3d5 +cfdcdbe3d9dddbe5dcdddbefe1daeae0eddbe9def0eceef4d8eaeff4f1f5 +e3ebf0fafaf1e1f5f2ec0f120e0d10100e121311101011100f0d12100e0f +1112100c0e10100f0e0e11141212121111100f0f0f0f0f0f0f0f0f0f1413 +121518191613171613111214120d0b0e0e0b0a0d10111218191513161715 +1c161a180e180e1d1b1714131419232c19181a1d1a1415191414181d211f +1e1e181318211c1c1b161d1a1b202120242b2c20161720241d15231b171c +1f1d1d211c1d1c1b2128261f2424242323232526281f20272b2f2f2a2a26 +2527241e1d21242426272422242925282a29282a2c2c2624222224262523 +21282a26292f2e251e212a222c292c242d2d2c3131312f312c3234332f2e +302f2d2e302b272d2f26322d32302d2e33323c3c1910373e15a2590b1ec7 +461757441f0b1c2c37544a31141267d12a3c4ea2cf401a3b723d17a15ea7 +a312b7b5b9b5a1cdab7420100e240b26153643483f363e3340372e3b5039 +483c3a3f3f3e3e3b3b3737393b4139383e413e3d3f3a4a34bac0c6c5c500 +24161c12142a76200ba3e2c3c3bcc1bbcbcbd8a933384027253b88bfdbc4 +badeece5eaf4f1f4f3f4f6f4f1f2f3f1f0eff0eeeee2d5ccc9c8c6c5cbc2 +d4703042453d4f5adbddda6a815d2a1b171dbbe3bfd470666e5c4e44442d +391b27383eabe9e7eff4f5f8f1e0fdf9fcedd7cce7f06a9da7a5a47f7c3e +51365049721a2d3f34345f4e5a8eaa86ebeef0e4faf8efdcd9e5bd8d9a9d +8ea53c322d282f251f2e35302c2a224c5a182b67d493c2afa7c1c2c7c6c9 +c422323234593224352b1f0e0c1018140c180934603b1e0b05232144263e +2d41404388c2c5bfb8ca961f19292a3717a987080e2232bfb05e01192f33 +bfe4d9ad9aa69aad9ba39e9c9ba7a5b2a5acb3b2b7abada0aab2a1a3a3c1 +b2b4aebab6beb6bab8c2bbbcbbcfc1baccc2cfbdc9bdcfcbcdd3b7c9d0d4 +d4dac9d1d9e2ddd2c4d6d6ce2c2f2c2b30302e3330302f30313131313330 +2e2f31302d2b2e2f2f2d2b2b2e312e2e2d2c2c2c2d2e2e2e2d2e30333637 +35323031343533303033343231312f2d2b2d2d2a292c3031303536323136 +3938322e3639333a272c3334363836343539343a3c3734373a3b333d423e +3c403f3b413a39393b3c403f454243464541454c4f463e3c40423e38433f +3a393c3e3e3d3c3f403e3f43444245444341404144464947474449444548 +4845464a4944454b40414242403f4349494c4e4c4a4c4d4d4746474a4c4c +4b4a4a5255504e52524e53565d535b55574e504b494b5352525158585a56 +5558595a4d57615b53585e5a5e5854595b62625c5e5c4b28414c1152b5b5 +bc544718908a52413c40375e695e624e9bff323c3c8cffc32e3c9c8374ae +9ed7c143ece6e7fff5df73263b3c483b455d30625e5f635f64506965755b +69607266656b6b69686470666a676d7167666b7073726963888dfffff7e8 +e71e3e383a3250483f4d70d2cbc1cbdce1f0e2e0eecc5b6576675f5acaff +eabcfdffdeeff1fffdfff8fffffafdfcfdfffffffdfbf9efe5e3e8ebe9e5 +e1f1ffba674e5d5e63a2ffffae969e585b3f4ae4fff9ffd8eefdffede3c6 +b8ffd7cbc5bfe6fffbfefbe6f6effffffffcf3ebf5feffed1c25100a4541 +4e454b51474780574d6a8394e1f5edfbffcafff9fceffaf3f7f6fded9d2d +241b2465281a324121171b1a14262f2904090d315754a0d5c693ccd3dbff +e9e9ffaecfdbe0d5bd8a7566645047433954596767bccdbda2976ab28059 +2c70629ecb96b4ffe3e4e6f1dd3d503466753aa3e510243726cbc3ef1f21 +4347d2f6fff0c0d0c7ccc5c4d4dbd8dbd5d7d5ecdeeae2ede3e5d9e6e8e0 +e7f5ece9edf6eff1e8efeff9f4fbf5fff4ebf9f7fff9f1f2fefffff5ccf8 +fefbf5fff8fff9f3fdfaeffcf6f42023201f242422272525242526262626 +262321222423201e212222201e1e21242121201f1f1f2021212120212326 +292a282523242728262323262725242422201e20201d1c1f232423282925 +24292c2b2521292c262d1a1f2627292b2927282c242a2c2724272a2b222c +312d2b2f2e2a302928282a2b2f2e343132353430343b3d342c2a2e302c26 +312d28272a2c2c2b2a2d2e2c2d3132303332312f2e2f3234363434313631 +323535323337363132382d2e2f2f2d2c3036333638363436373732313235 +37373635353d403b393d3d3940444b41464042393b3634363c3b3b3a4343 +45414043444536404a443d424844443f3e434348464143473b22455c2a6c +c7c1c75a4714847b412f2a302a576457533d8af9232d287effcd3c418d6f +67aba7e3c742e4d9d8eee4cf63192b2d382b33481a4c4546484449354e4a +5c42534a594d4c52504e4c48544a4f4c54584e4d50535857504b7379fbf8 +e7dad80f2e2829213f39324165c7c4bac4d5d7e6d8d4e1bc4a5463544c48 +bafdddb3f5f8d9eaeafef6fff5fcfffafdfcfafdfffffbf8f2e9dfdce1e4 +e2dfdbebf8b15d445256629dfbfa997f8436290f29cff7e0d97d665e6b49 +43343ea3939da5acdafefdfffde8f6ecfafefffff8ebe9f2fffc4d6d675d +7f65604b474840365b3132443b274b4a3e619480f6f7fceaebe1e9eefcff +f5b5d2d2c7df652b29362b303b3b2e3b3b3a29476da2c8b5dcf3cb8cc1c4 +c5efefd8e424140d1d29361f1c1a1e100b0e0d28241d0035291002100e79 +634c1f614d89ba87aaf9dcdbdbe1cb2b3d235464278ed300122511b5a9d4 +060b3138c8ecf9dfa9b5a8aaa2a3b5bebec1babcb8cdbfcbc5d0c6c8bcc9 +cbc3cddbd2cfd3ded8ddd4dbdbe5dfe6e2f6e1d8e5e3f3e6dedfebefece5 +bce9efece7f3ecf6ede7f4f1e6f3edeb1013100f14141217131312131414 +1414161311121413100e111212100e0e11141111100f0f0f101111111011 +1316191a181513141718161313161715141412100e10100d0c0f13141318 +191514191c1b1511191c161d0a0f1617191b1917181c141a1c1714171a1b +121c211d1b1f1e1a201918181a1b1f1e242122252420242b2f261e1c2022 +1e18231f1a191c1e1e1d1c1f201e1f232422252423212021242628262623 +28232427272425292823242a1e1f20201e1d212725282a28262829292120 +212426262524242c2f2a282c2c282f30372d332d2f26282321232a292928 +323234302f323132242e3832282d332f332b292c2b31312e32362b0c2a38 +003f9f9b9f3423006a6631211e21173d463b402b6edd0e1a1063e4b2252a +6e4e47887cb39916bdb6bbd6d0bf54081b1821121d330537313235313622 +3b37482e3e354537363c3b3937333f353a373e4238373f4345423a33585e +e1decec0c3001e18170f2d261f2b4fb1aaa0aab9bccbbdbcceac3a445545 +3b34a3e8caa2eaf0d6e7e4f6eef6eef5f8f2f5f2f1f1f3f3eee9dfd3c7c2 +c5c7c5bfbbcbdb94422b3c414d89eaea886f772d2a0d20bcdcc1bd685a58 +694845343b9b868e989ecef2f2f6f0ddeee5f2f8fbfdf2dfd3dcf3ff6e9d +9c8fa77f6a493b372e26532821312f204c504b6d9b81edebf4e4e8dde0e1 +e8efcd859d9c92b046192434201d262a2b3c3730182e47769a8abad9b579 +adadaed6cdbee03333333f4344251e1a1e0e0a0a041f1e1c0746442c1c21 +117253390c4e3c76a6708fddbfbebfc8b5172c134654167bbf00001100a0 +98c100001b21afd1dcc18a988b8e8484969e9da09c9e9ab0a0aca5b0a6a8 +9ca9aba3acbab1aeb2bcb6bab3babac4c0c7c2d6c3bacac8d8c8bebecace +cbc39bc8d0cdcad8d2ded7cfd7d0c7d2ceca2b2e2c2b303130342d2d2d2e +2f303031322e2c2e2f2d2b2b2d2c2b2928292b2d2d2c2b2b2b2c2e2f302e +2d2c2d2f313334312f2f3031302f2b303332303031302d2e2d2a2a2d2f2f +303334323235393b35322f332e372d303737393936312f302f37372e2d35 +39373a46493f3b404039423f413e4540413e3a393a3d3f3f42454543403f +3f4041414344403a3a3e3d383f4344403d3e40403f3e3d3d3c3b3a393f39 +31313f413f41474748494745464a404041423f3e42474748484747494846 +4546484c4d4b4a4b545757524f4f51524f51544e514c4c48524a49495452 +54515753554d4c52505450555c585255564e5f59545c5b64615c5b573c21 +5d4626c29dd08ed1311f9298484f463a2058746f474e7667122d8ca8982e +1d1c3aa88b6038eee06fe7f0ffe37415313c3e4a3f94c0ac287d655a6b6c +64715b6060866e59636165686362676775666f676f71686b6d6f71726860 +8995ffffffecfc6a463f423c3c3b3cd4faeff0f4dad1e8e8e0f7fcc13c61 +7a766572d3fff9cefdeffffff2fffcfffffefffbfffdfefffffffaf5e9eb +eae7e6e7e7e8eceaecf7ffffffffffffffa5bfc284443e59e0ffffffdae6 +ffffede8c2befffffffffffefff8f8f5f1eaeeebfaf8f7f4f0eefffffff2 +37262a232f492c2a12111b637e55516476a3f8fefffff6b0ffeaf8f7fde3 +ebfafff7bc4a3f1e2f5a421d4569161631020000000b00455254494d9cc6 +dd81c6ffd3ece6f4ffc3a9cbcfc0e0a57d718076716a5563677d8bd0c7ca +bbae84f5f5949de3e2ffff3a0ecee8e1e3dcf9c1d2a46e7b5d5af58a7291 +72f9fbff799b7a5ec6fdfffebcd7dddae4eed9d9dccee7e1e4e4e1e5e8d5 +fdfbf4dae4d7e7e9e9e8f4f8fff8ebf0ede5e3f3f9fff5f0f5f5fef4ffff +f6fffbf8c8effffffdfffefffffbfffffffff9fc1f22201f242524282222 +22232425252625211f2122201e1e201f1e1c1b1c1e20201f1e1e1e1f2122 +2321201f2022242627242222232423221e232625232324232021201d1d20 +22222326272525282c2e28252226212a20232a2a2c2c292422231f27271e +1d2529272935382e2a2f2f28312e302d342f302d2928292c2e2e31343331 +2e2d2d2e2f2f31322e28282c2b262d31322e2b2c2e2e2d2c2b2b2a292827 +2c261e1e2c2e2c2e34343536343233372d2d2e2f2c2b2f34313232313133 +323030313337383635363f42423d3a3a3c3d3d3f423c3c3737333d353434 +3d3b3d3a423e4038373d3b3f393e45413c3f403845403e46434c46414142 +2c1c61563fdcafdc96d7311a8689373d362d134e6d68383d6256031e789a +99392b2129917e5c41fae670dfe3f0d16304212f2e3b2f84ab9712674c41 +505149564045476d58434a484c4f48474b4b594a544c56584f5052525657 +50487480effdf2dceb5b362e2f29292a2dc8efe4e9edd3cadeded6ebedb0 +2a4f6763525fc2f1ecc5f5e8fdfae9fcf3fefdfbfcfbfffdfbfefffdf7ef +e1e1e0e0dfe1e1e2e6e4e5f0f6fbfefafffff784a7ac69210e29c3f4e7da +826b6b654149384fcceff3ebf7f4fffefffff9edefe8f3f3f6f6f3ecf4fe +ffff5f6478716a764d41221c225e602f353d2e37624f4a627457f4ddf4f0 +ecd0d9edfdfff8b0cfbbbbc77f36456a374c70433434384944a0bfc8b4a5 +d3e2e279b9f8c1e0e9e4e85110212b2b62381a172b282a2d253730332350 +2b2823302bbeda8995d8cffbfa2f07cae5dcdad1e9afc0925b684845e378 +607f5ce0e0ed5e85684fbcf3feeda7bebeb8c1cdbabcc2b4ccc4c5c5c2c6 +cbb8e0ded7bdc7bacdcfcfcedae0f0e4d7dcd9d1cedee6f0e2dde1e1eae1 +eeebe2f7e7e5b5dff5f0eff5f2f8f5eff6faf6faf0f30f12100f14151418 +101010111213131415110f1112100e0e100f0e0c0b0c0e10100f0e0e0e0f +11121311100f1012141617141212131413120e131615131314131011100d +0d1012121316171515181c1e18151216111a10131a1a1c1c191412130f17 +170e0d1519171925281e1a1f1f18211e201d241f201d1918191c1e1e2124 +2523201f1f2021212324201a1a1e1d181f2324201d1e20201f1e1d1d1c1b +1a191e1810101e201e2026262728262425291e1e1f201d1c202523242423 +232524221f202226272524252e31312c29292b2c292b2e28292424202a22 +21212b292b28312d2f27262c282c272c332f272a2b23342c292f2b34312e +30311c06463215af87b66fb10f006e74272f291d0035514c252b473a000b +607f7a1b120a0b715e3916ccba44b8c0d3b94f00111e1e26186b96820052 +382d3d3e36432d323359432e343236393332363644353f374042393b3f40 +434238305965d6e3dac5d746261e1e18181818b2d9cecfd3b7aec3c3bbd3 +daa01c415955434eaedcdbb4eae2fdf8e4f3eaf6f4f2f5f1f8f3f2f2f3f1 +e8dfccc8c7c4c2c1c1c2c6c4c8d4dde2e8e4ecedec7b9b9f601b0e25b5dd +c9bc6e5c63613f463548c1e0e4dfeceaf5f4f9f6eee4e7dfebedf2f1ecdf +dee8f1ff788da8a192935e4721161b5a602e292c202d63565973805bedd4 +e9e6e5c9cfddeaedd6889e888a9d60213d642432552b272a2732267d959b +887db3c9ce66a6e3abc6cacbe159253b443e6e3e1f192e2828281b2c2932 +2c5f43403a3e2db7c9737ec4beeae81900adc6bebdb5cf97aa7e4a573532 +cf644c6947cccdda4b705238a3d8e1cf88a0a19ca3ae9b9ca193aea6a8a8 +a3a7ab98c0beb79da79aacaeaeadb9becec1b6bbb8b0afbfc6d0c4bfc6c6 +cfc3cfcac1d6c6c495bed6d1d4dadae0dfd7d7d9d5d9cfd2252926262b2b +2a2f2b2b2a2a292a2a2d2e2b2b2d2d2b2b2d2b2a2827282a2a2b2d2d2e2e +2e2e2e2f31302e2c2b2b2b2b333332323233333333353532313334312f2e +2c2a2a2d2d2b2f2f31333230323637382b2f2b33383a3b38343331313438 +373b3a3533383b3b383d3c37363a39343639413d463b37313d3b38383c40 +3d373c3e403e3c3c3f424041403d3c3d3d3a3f4243403c3b3c3c43424142 +43413e3b3a43484f4b46404446494a464342434345454647454245484c4b +4a4a4e514f4a47484a4d4b47484c4f4c4c4d4c4a4a4c5151515551525256 +554f54515b555a575b585c514c5351585e5d5f5e5c5c5a515b5c5c645b62 +60605e56502c553724b25d2d838273137fad3c3b2b1d0b45768042184e8f +1d3d7f5b22242b3237a5b63f26f8b65af6e7cb7351585253394c459bb8ba +2b5969685f6462616969655f666c68696d6d696d74727563716570726a70 +786a606974728472b2e1e8becccfd3d6d4cb94796fbca5837f9fb3e2e8de +f5dfffbf2f3f64563f5cd3ffffffeff1e9ebfefffffeecfffcffffffffff +fffbf2ebe6eaedece8e7e8ebe7e9ecf1ece4eaf8ffffa6cdf2793d295ced +ffffffc9e2fffffce0b6dbfffff8effffffef9f3f4f8f4fbfffffff5fffd +f1f8fffffaf15c26182624582a20252e489076384c6470a4f9f1ffffeec0 +fffffffffffdffffffffe4896b67758a9a987f50876f6567575750434142 +4c74685c90f6f5eaffe8dbfeefffffe392a59da7b9a09191a192897f8872 +657e8ea7989690875d81bba4d2cdaf857a3a14b0f1e0e8e7e2e6ffe15784 +4d58898f7caa80aab2c08e8f8d7385dfffffcbd4ddd7d8e0dfcedacff3ed +e4e5eee2f6d9ffcedcdfded1e6e6e6edf5f3e8e1dcdde8e6eaf2fdfdffff +fefdfaf3fff8f8fdecedeefefcfafffcf7f5fffffbfffffff5ff1c201d1d +222221262323222221222222211d1d1f1f1d1d1f1d1c1a191a1c1c1d2020 +2121212121222423211f1e1e1e1e23232222222323232325252221232423 +2122201e1e21211f232325272624262a2a2b1e221e262b2d2e2b27262424 +272b272b2a2523282b2b272c2b26252928232528302c352a26202c2a2727 +2b2f2c262a2c2e2c2a2a2d302e2f2e2b2a2b2b282d30312e2a292a2a3130 +2f30312f2c292730353c38332d3133363733302f303032323334322f3033 +37363535393c383332333538363233373a373738373535373f3f3c403c3d +3d41403a3d3a443e43404643473c373e3a4147464847424240374446464e +434a45454441402759473fcd6e398b86720e749e2b291b10003a6f763207 +3a7e0c2c694b232f3937268ea73b2effbc5beedabc6241474243293d358b +a3a51543504f444947464e4e4c4650564f515555505459575a48564a5557 +4f555d4f454e5c5a6e5c9ed0d6acbabec2c5bfb6826860b09a787898acdb +dfd5ead3f1ac1c2c51432c49c2f8f4f8e7eae4e3f4fdfbf5e5fff9fffefe +fcfefcf5ede4dcdfe2e3dfdee2e5e1e3e5eae5dce2f2fef68bafd760200a +3ed1f8ebca6c6274595042337ee5edddd4ecf2fbfffffffffefffffffeee +fffcf1f5fefdf7fb7b585d6f63906053535569a16b203a442d3b63404a60 +625df1fafbfcfbe9f3f9fcfff2b5c1ccd1d6ccb88d6ccfd2d5dfcfd5d6cc +cac1bacca887a9fff2e1f9e3dfffedfbe9932a332f3e5944353748414242 +584633413c421f181c261c59a89ccac29c726b320eaff0dde2ded4d5f1cd +426f3843777d6a986a9197a57376796379d3fdf9b6bbc0b8b7bfc0b1c0b5 +d6d0c5c6cfc5d9bce3b1bfc2c4b7ccccccd3dbdbd1cac5c6d3d1d5ddeaea +ebefedece9dff9e1e1e9d8dadbeeedebf2eeebe9f3f4f2faf9f6ecf80b0f +0c0c1111101510100f0f0e0f0f101110101212101012100f0d0c0d0f0f10 +10101111111111121413110f0e0e0e0e1616151515161616161818151416 +17161414121010131311151517191816181c1a1b0e120e161b1d1e1b1716 +1414171b171b1a1513181b1b171c1b16151918131518201c251a16101c1a +17171b1f1c161c2022201e1e21242223221f1e1f1f1c212425221e1d1e1e +252423242523201d1922272e2a251f23252829252221222223212223211e +1f2226252424282b2823212224272521222629262425242222242b2b292d +292a2a2e2d272b28322c312e3532362b262d2a313534363531312f263231 +31372b323032333030113e2314a04411666353005e8b1b1b0c000024555d +22001f62001a523104112020086e861805d89031c7b79d482a3532331928 +1e748e90002e3c3b313634333b3b38323b4139393d3d3a3e444245334135 +40423a404a3c32394442564485b6be96a6aab2b5aea36e544b9a84625e7e +90bfc2b8ceb9dd9b0d1d43351d38aee3e3e7dce2e1e1ebf3f1ecdbf4f0f4 +f5f2f0efebe5dad1c3c3c6c4c0bdc0c3c1c3c8cecbc5cddcebe882a7d059 +1a0536c5e3d4b55a576f574e3f2b6fd4dbccc9e4ebf4faf8f7fbf5faf6f4 +f4e6faf7e7e4e8e7e8fa8d79879c8cb17a6863667ab17c2d383924356448 +58706d60eaeff0f0f1dee5e8e8eadb9a9ea4acb2afa07c56aaa6a7b2abaf +a496948e8ba4866b93ece1d0e7cdc6e8d4e6de92313b38435d4738394a40 +3e3d4e3d2c3e404a2e26292d184f9787b5ae8d63581b0091d1bcc2bfb7bb +d7b52d5a253063695482557b82905e60614a61b9e0da979da29b98a0a191 +9f94b8b2a8a9b0a5b99cc3919fa2a396abababb2bab9b1aaa5a6b4b2b6be +ccccd0d4d1d0cfc4dac1c1c8b7b9bbcdceccd7d3d3d1dddcd5dbdad7cdd9 +252825242929292d2f2f2e2c2a2a2a2b2f2d2e30302e2f332e2c2a2b2d2f +2f2f2e2f303131302f2e2f2f30303030303032333536353536363e3c3733 +3235353334322f2d2e312f2c2f2d3034322c2c3027342a36303137333330 +2e303234373b39373636343234373b3835373b3d3d3a3b3d423842383836 +3f3d393c48524e433d40413f3b393c3f3a3a3c3f3f3d3e403c3e3e3c3a39 +3a3a423f3d3e4142413f44423b423e454348414749454246484648484a4b +49444445484644454c504d464a4a4c4d4944474d504b4d5659544f505050 +4c554d514f59535058545d545a5856545c4f484d4c575259646256545b5f +5961656c5a5e5f65635d491a593e27b939384338772c7e893226232d2a4b +6e715142b2ff374b869b3a2929395cc4db801cfba94eff7a3a463f4a3f42 +4945476b673e2d66675d62625f696c6e6164676f6c6867666873756e705e +6e616d6f6870697276736b6785805f3752625b7061595568686868554956 +cfe491eaeae5e4ecebf293617c646790fcfffffffdfffffff8ffffb8a4ff +fefbfefffffffcf4eae6ebedebebeaeae9eaece6e8e9eff1eeffff94c2ff +88402b67ffffffebc5f4fffff0d8abecfffff0f4fafffffff1f3f7f3f7f6 +fffbfffff3f5f1fffffaecf383333d21364c363226312a48604d434c7196 +f1fffff8ecb595bcb499979bb6b4adaa8c3f04240900002b873e87544b4b +44404131424f5570b00501060908113101000b141d374b5c5d594f5a6261 +65586163596b7c76554255565a53402c130a0e0b16345b7d0c60f9e1dae5 +e6eaebc48e685a4ba18b20441d62ffda6f26403059d5ffffe7dbe7e9d8d4 +d5c1dcdee4e1d2f6ddece2d6dcddd6dce7dbedeee5f1f0e9e8eff1e2f4fb +fcedf7edf8fff9fbf6f4ffefffe7c9b9fefffcf7fffffffffff8e5eeede6 +e1f81c1f1c1b202020242727262422222223221f202222202125201e1c1d +1f2121212122232424232221222223232323232322232526252526262e2c +272322252523262623212225232023212428262020241a271d2923242a26 +2623212325272a2e29272626242224272a2724262a2c2c292a2c31273127 +27252e2c282b37413d322b2e2f2d29272a2d28282a2d2d2b2c2e2a2c2c2a +28272828302d2b2c2f302f2d312f282f2b3230352e3436322f3335333535 +373836312f3033312f30373b362f35353738342f32383b363841443f3a3b +3e3e3740383c3a443e3b413d463d4341413f473a333835403b424d4b3c3a +4145424b4f564246444a494839155f4e42d44a434b3c7626737c22141320 +1d40666641319ef7263a708c3b34373e4badcc7c24ffb04ffb6d2b352f39 +2f3239363659522917504e444747444e5153484b515953504e4d4f5a5c53 +5543534652544d554e575b58534f6f6a49233d50495d4e463e5153565746 +3d4bc7dd8ae3e1dcd9ded9df804e6951547debfdf9f5f5fefdfdebfdf9ae +9cfffaf9fcfdfefcf7eee4dcdfdfe0e0e1e1e3e4e6dfe1e2e7e9e6fefd84 +abee6b230e4cf9faf3b267757c57483e2c8eeae1e1ebedf7f6fff8ffffff +fffdfff7fdf8eef2edfbfef2e9fc9b5c755f6e85726e606758635c3c342f +312d5b4f4b4c5f4d599a9d878488a19a8e8f7c462b5634191a3d8c55cab2 +b5bbb8bac5b5bfb9a09fc60c04050200052c0905030000020c1b1e1c1219 +1b171e1728332e435145190000000a1215120603030003214e75085ffae1 +d6dcd8d9d7b07a5345368f790e2f0749e5be530d2c1e4ac9f5fed2c2caca +b7b3b6a4bfc4c7c4b0d7becfc5b9bfc0b9bfcdc1d3d4cbd7d6d1cfd8dacb +dfe6e7d8e4dae4ede8eae5e0f9d6f5d0b5a5ebf3ebe8f5f4faf3f6ecdbe5 +e4ddd7ee0b0e0b0a0f0f0f13141413110f0f0f1012121315151314181311 +0f1012141414111213141413121112121313131313131516181918181919 +211f1a161518181619181513141715121513161a181212160a170d191314 +1a161613111315171a1e19171616141214171a1714161a1c1c191a1c2117 +211717151e1c181b27312d221d2223211d1b1e211c1c1e21211f20221e20 +201e1c1b1c1c24211f202324232123211a211d2422272026282421252724 +2624262725201e1f22201e1f262a261f24242627231e21272a25252e312c +27282a2a242d252927312b282f2b342b312f302e36292227253029303b39 +2b29303430363a3f2a2e2f3738372900432a17a7201b261b580c5f6b1306 +040f0a2c4f50311d83db1226596f1c161e272d8dab5900dd8625d34a0c1b +18251f22292322433d14023b3a303434313b3e4034373c443d3838373944 +463e402e3e313d3f3840394246433b375752310b283a354c3d352c3f4042 +43312735b0c36ec7c4bfbbc3c3ce6f3f5a42456cd7e8e6e3e8f4faf7e2ef +eda291f3eeecefeeefe9e3d8cec3c5c2c2c2c0c0c1c4c6c2c5c8d0d2d1ec +ed77a3e7671f0a45ebeae09f5b6c7857483c2682d7cccedce4f1f1faf0f6 +faf5faf5f4ebf2efe8e9e1e9e8dbdaf7a572968491a38e887881727e774f +372928295c55575a684e518e8f79757790897c7e6d34103919010327783b +a180848b8b8b8c7b8788777faf0000000000001900000000000007171917 +0d1519161c132129253b4a40180005050d100e050000000000133d5e0041 +dabfb3bbbbbdbe97623e32237b65001a0033d0a93e00140633afd8dfb3a4 +acad989497849fa3a9a694ba9fafa5999fa0999faca0b2b3aab6b5afb0b8 +baabc0c7c8b9c6bcc9d2cccecbc5dab7d5b09484cbd2cdc9dad9e2dbe0d4 +c0c8c7c0bcd32e2a262527282725292b2a28292d2e2b2d30312f2c2b2f34 +33322f2d2c2d2e2f2f2e2c2c2e2f3030322c332d28302f2e313130302f2f +2e2e333131313435363635302d2f32312f2e2d30333533312f2e2a2b2d30 +333432313137383331373c3c373636353535343438393a3c3d3d3c3b3b42 +413d3e3d3b3d47463f383f4b4b424547403d443f3a404147423d413e3a41 +3d3e44453f404646493f3c3f3e40423f423a413d3e433a41494644444341 +414348403a494848424a464b4e4c4c4e4e4c4741474b474b524e53495253 +4c4b49504b5d515a535b59495353565655545758515253504c4b4d50555e +635b5c615e62664c5660586555605f59482270413ae593a2aa6d492d6785 +44353745344c69553a4bb2f43d4451cefe41325e9de268e49af69e65ff51 +40585d68716765636b2a514c3d6a71635b68666b6166716a65647e6e6467 +665f606b64646469756f647266696a716d6a845da3aea52f257659485251 +555c5a545863d87972ffffffffffffffffffffffffffffffffffffd6decf +dae8de8160fffbfffafffff4ece5edeeeeefeeedebebebede8edeee8f3f7 +ffffb0c0fc80333065fffffff7cef5ffffe7c8b7f3fffff2ffeafdfeffff +fffef8f6f6f6ffffffedfffffffffff6f3faac36463d4147463e36383c65 +504d3a566b9df5fdfffddcd564cfaa93908ca29bc2ab9d887ffef02b3a74 +9837b9cbc1b6b4bfb9c1cfd8e176d92c1c4f7f2f53b0193030383d3b3b3d +3833393d3f3c423e33323a3f2d39524740463a43392e275cb57823417e72 +2b30f6e7e1e6e9e8f5ad8b774662adee343b404effe1de48403842d4f9f8 +f4c9d2d7dbd8d8d1d9dce6dae4e7f1e8e3dde6e8dae8e3e5f4dcdde8eaf0 +e1f6f8f5ebfdf4eafff4f8fcf2f2f1f6fffadce28bafede6d1f0f3dde7e5 +e6d1eff6f9f7f8fd25211d1c1e1f1e1c2123222021252623202324221f1e +2227262522201f20212222211f1f21222323251f26201b23222121212020 +1f1f1e1e232121212425262627221f21242321201f222527252321201d1e +202326272524242a2b26242a2f2f27262625252524242728292b2c2c2b2a +2a31302c2d2c2a2c36352e272e3a3a3132342d2a312c272d2e342f2a2e2b +272e2a2b31322c2d3333362c292c2b2d2f2c2f272e2a2b30272e36333131 +302e2e30352d273633332d353136373535373735322c323632363d393e34 +3d3e3736343b36483c453e4642323c3c3f3f3e3d3d413c3d3c3935343639 +3e474941434845494f36404a404d3a454544381d765255ffa4adb2704827 +5f78342527382741614a2a3a9ee32e353dc0ff4c40638ccb5be1a2ffa566 +ff4431474d576157545259183c372754584a404d4b50464b58514f4e6858 +4e5150494a524b4b4b505a5449574b4f525955526c478d988f1a10614433 +3b3b404a49454b58d0726bfff9f9fafefcf9fbf3fafbfafafdfcf9f8fece +d5c7cddbd17559fff8fff7fffdefe6dee3e3e0e1e3e2e2e2e5e6e3e8e7e1 +e8ecfef595aaf072140e4cfbfcf0b56d7a715f3e3641a1f2e9eafcebfffe +fdfdfdfffffffffefdfbfce3fdf8fff8fbf0f1ffbb506c6a6a7176726d6a +687f4a38273526325d4d5458546d20a389797b7a8d7f9981817b81ffea21 +31677e28cff4ede4e6f1e9eef9f6e66bc316134a792643a00f271d1d1c1a +1d21222023231b161c1e1c1b191d0c1830201016112226222053a8660f2f +716a272ff5e4dbdbdad7e1977561314d9bdc22262a36e3c5c22d2a2332c6 +ebe9dfb0b5b8bab7b9b4bcc2c9bdc2c8d2cbc6c0c9cbc0cec9cbdac2c5d0 +d2d8c8dde1ded4e6dfd5ece1e7ebe1e1e1e5e9e1c5cb779bdad6c0e1e5cf +dbd9dac5e5ecefedeef314100c0b0d0e0d0b0e100f0d0e12131010131412 +0f0e1217161512100f10111212110f0f11121313150f16100b1312111212 +111110100f0f14121212151617171a151214171614131215181a18161413 +0d0d0f121516141313191a1513191e1e17161615151514141718191b1c1c +1b1a1a21201c1d1c1a1c26251e171e2a2a2124261f1c231e191f2026211c +201d19201c1d23241e1f2525281e1b1e1d1f211e2119201c1d2219202825 +232322202021261c162522221c242025272525272725211b212521252c28 +2b212a2b22211f26233529322b3330202a2a2d2d2c2b2c2f2b2c2c292524 +24272c3538302f3431353d212b3328352532343328075a2e2ad37a858d51 +2c114c6825161727142d4c361a2683c5192025a3e02e274c6ea939be7bda +7c3edc21122b34435147444045042722123f44362d3a383d3338443d3a39 +5341393c3b34333c3535353a453f344236383a413d3a542f76817a050050 +332229262d3635303842b9584fe4dcdddde1e4e6e8e2e9eae9e6e6e5e1e4 +edc1ccbcbdc8c06549efe9f1e6edead9cec4c8c7c3c4c5c4c3c3c5c9c5cb +cbc7d2d8ece58a9fe467110c45efecdea966756e5f41373d96e1d3d5ebdd +f4f6f8f9f9f7f5f7f9f3f0eef0d7f4eeefe5e5dae4fac05d818180878a87 +82818198664b292e1f2c5c505c5f586a17967a686864786a8771736a6cec +dc1522576d11abccc9c0c1ccc3c7d3d4cf59b50802376917369303180f12 +13111316151215160f0b11110c0b1014030f27190c120b1918120e429858 +042160550e11d6c3b9bbbdbbc87f5e4c1e3c87c80c11131ecdafad18150e +1baccecac092979b9b989a949ca1ab9fa6abb3aba6a0a9ab9fada8aab9a1 +a3aeb0b6a9bec1beb5c7c0b6cec3cbcfc5c5c7c9cac2a5ab567abab5a2c2 +cab4c3c1c4afccd1d4d2d5da2926232326282827272a2926272b2d2e3231 +302e2c2b2a2a3432312f2e2f2f302f2e2e2e2e2f30304c3e3c332d323031 +2d2e3032323231303532313337383532302e2e313333343632333231302f +303131313233343432302d2e3031302f3236383735333233363832333536 +373c42473c403c363737373b4245423b3a4148494144444445403d424143 +413e3f3d3c3f3a383c3c37393e3d413c3e403c3b3f3e493e4140454b4144 +4544464a4a4846474d4f494d4b55504f524f4c4b50544f484542464a4b4f +52504b45525a5b5a4f4a63675458505559554c53565e5e585b5856504c4d +53565450585c626367635b5e5d596360616b726c5b5745276c3728aa1600 +6762383b375556463f2d394a53585456bde22b4566a6fe6d394bf8ffb5f9 +9ef69955ff505e63524b55525736373b81852f5e6962706e6d6b69727867 +66677865544f50525c6871726c6a646961616b6d6d706665907effffff26 +2a5d665a4e575a57575c6061da7060932738241b3031504f714351554c54 +3f4e900a1922131725766afffdfffffef6f0e5e6f1f0efeeefeeeeecebeb +ebececfaffffff7edbff8b30256dffffffd9bafffffee1c2baffffffffff +f2f5f7fafffffffffbf6f6fbfffff6fff6fffdfefbfefef8f2e0dadce4e6 +e1dbd9dce6ee9d5a415374bdf1f8fbf3d4ff8ec3d398ad71b469cb9199ae +79ffff3e46807b42b3f5b5f0dee9eff4e5ffff8de577164e7469343e3631 +3938332b282a2c2c2830333134332e32343d423b4c4a2b2f372f272d212f +9d772d335e50351cf6f4f2f7fff8d9978774466184e45321454178b7b54f +244137a1e5f4e3d2d4e3f1c6e5e6ebd6dae5efe7f1dceef0d7ece6f3f4ea +e6d9f4e5f4e9eaeceae6e5ebf9f6f3fefbfaf6eef0fffafaffffdbe1ffff +f5fffef8ffffffffffffffffffff201d1a1a1d1f1f1e1f22211e1f232523 +252423211f1e1d1d272524222122222322212121212223233f312f262025 +23241d1e2022222221202522212327282522222020232525262824252423 +222122242424252627272523202123242322252928272523222326282122 +2425262b31362b2f2b252626262a3134312a293037382e313131322d2a2f +2e302e2b2c2a292c2725292924262b2a2e292b2d29282c2b362b2e2d3238 +2e3132313337373533343a3c363a36403b3a3d3a3534393d3831302d3135 +363a3d3b36303d4546453a354e523f433b40423e353c3f474741413e3f3b +35363c3f3d394145484a4e4a424546434d4a4953575341443822724843c5 +25086d6536342e4949362f202c3f484d4445acd11c365298ff784751e9f6 +a8f6a6ff9f55ff464f52423b4642462524296c7019485049555352504e57 +5f4e5051614e3d39393d46525b595351494e4646515355584e4d7866f3fb +fb0f13484f43343e4345464d5356d26859891c2a160c1c1c3b3a5c2e3f43 +3c44314285000f160408166962fff8fffff9f1eadedde6e3e2e3e4e5e5e5 +e4e4e6e5e5eff6fcf46bbfed7d220c52faf7f6a45d977d6242344ec2f2f6 +fffff8fdfffffefcfafcfffffffffff3e9fce9fdf0f1f0f9fefffceff1f5 +f8fdfffdfdfffffb8a3c282b2a4c56484e544fe1468fa979975fa04a9c62 +7a9967f1f61c2a645624b0ffbff9e8f0f4f5e0f4f969bf5703416b5d232a +221d221f1a14161e26292529231e21222122181f272538361219231f1d26 +1a238b63192151482f18f2efe9e9f1e4c381715f314c71d2410d2f275c98 +99340b2c2793d7e5ceb9b7c4d0a5c6c9d1bcbdc8d0c8d4bfd1d3bacfccd9 +dad0ccbfdccddcd1d1d3d3cfced4e4e1e0ebeae9e5dde0efe5e3ebf1c7ce +fbf1e6f2f0eafbf6fefbfaf9f7f4f5f60f0c09090c0e0e0d0c0f0e0b0c10 +1211151413110f0e0d0d171514121112121312111111111213132f211f16 +101513140e0f1113131312111613121418191613151313161818191b1718 +17161514151413131415161614120f101213121114181817151312131618 +11121415161b21261b1f1b151616161a2124211a1920272820232323241f +1c212022201d1e1c1b1e19171b1b16181d1c201b1d1f1b1a1e1d281c201e +242920222422252829262525292b2529252f2a292c292524292d28211f1c +202425292c2a231d2a32313025203b3f2c30282d302c232a2d35352f302d +2f2a25262c2d2b272f3337363a362e31342e3833313b423f3033270c5624 +189800004b481f211d3939271f0f192d363b34318eb30721397be05a2e37 +c8d386d381dc792fdc222e362924333236151315575b04333c3542403f3d +3b444b3a3b3c4f3c2b242728313b44433d3b343931313a3c3d403635604e +dce4e60003373f31232a313132384042bd513f6e000f0000040728274b1d +2b2d232b172a71000308000001564fede5edede5dbd0c2c0c8c3c2c5c6c6 +c6c8c7c8c9cbcbd9e2ebe45cb3e27017054befebe7965697806646334cbc +e4e5ecf1eaf0f7f9f9f7f7f5f3f2f8f8f0e3d9efe0f1e0dedce6f2f7fbf2 +f7fcffffffffffffffff9d4824212146544b525850dc3a81996782478735 +8a52688653dfed131f56440c8fdc9ddac6cfd4d6c3dae659b24800305a4f +19231b161a18130c0c12181a14191410131210120d171e1a2d2b0b0e1a12 +11160a157f580e1341331700d5d1caccd5cbab6a5c4a203b60be2b001810 +4683841f00171079bac6af9b99a7b186a7a9b09b9faab3abb49fb1b39aaf +abb8b9afab9ebaabbaafb2b4b3afafb5c5c2c2cdcecdc9c1c6d3c6c3ccd0 +a6addbd0c7d3d3cfe1dee6e3e1e0dededfe02b2927272a2c2c2b282a2b28 +282a2e2f31302e2f32322f2c2f2f2e2e2d2d2c2c33343434333334344d3a +3733303432363636353533323131373433363a3a35303635353635333539 +3636363432323233323233333433312f3634363c3b35363d3b3c3b3a3839 +3c3e4243423f3b3c4247454740393a3c3e434141403d3b3c41453d3d4447 +413f42444442444440404241403e424543464a4742414849413e44464b45 +4b4d5152494a4a49494b4b484647494b4345404a45434d4946474d524f49 +53555353595855555a535753535d5c5c5a584c56524f4e4e545c545a5b55 +5e5857575553515052545c5750525753535c535a60565b5a70635f533922 +68321a7ac0b4a549242a3d49564a453e353c4349765779320e247d7f5326 +241c93ffb3521ff0966aff2663615a545a4c531d266ab2ad3a6366636a6b +696566646b64736e564a3f3b3d40464a51686f656e6c6e736b68666f6d6d +9075ffffff3766547645555b5d5755585a59c86e77e80d2f5baaff787a87 +588e5d996f89815f7543ffff514072796bfffffafff1eaededf9f9e8f1ef +efefeeedebeae8f5f0ffffff65cfffba352b71ffffffc9dcfffff5e3b7be +fffffffffffff0f5f4f7fffffffffffcf7f3f8fffffffffffffff1fbfff5 +efefedf5fdf9f1eef1f4f0ffa9605c5d70c1fff2fff6b8ff99acd4a49d8a +957dc2a987b471ffff7752966983a2ffaafff7ece6ce80a3ec76c3a61838 +99614c313931292b2f313232302d252e312e3131313a3734443450632b26 +27282534332a8a6a4e31643a430f85c5b79e9076463a57584d5d4cede362 +75626247668a6f7a5482c7d1d3ddd1e4ffddeddefbdde7d9e5d8e1e2d3d5 +c0cac4dbdfeae1f3ffe9fdf8d5e1f5fcfff2fadffafff1f4fffffffffff5 +fffffef6fff5edfffff6fefbf7e2fbf6f4f8fcff1f1d1b1b1e20201f1d1f +201d1d1f232424201e1f22221f1c1f1f1e1e1d1d1c1c2324242423232424 +3d2a2723202422262626252523222121272423262a2a2520262525262523 +2529262626242222222325252626272624222927292f2e2829302b2c2b2a +28292c2e3132312e2a2b313634362f28292b2d3230302f2c2a2b30342a2a +31342e2c2f31312f31312d2d2f2e2d2b2f32303337342f2e35362e2b3133 +353035383b3d3335343433363533303234362e302b35302e36322f30363b +38323e3f3e3e44434040453e423e3e484848454337413c3938383e463e44 +423c453f40403e3c3a393b3e433e37393e3a3a433c444b424542554a4540 +2c1d6e433595cfbfab4c2223343d493d38312831373d6646682302186c74 +5633342284fba65229fc9c6afa1c54524a444b3d420c13559d98244d4d4a +4f504e4a4b49524b5d5741352a26282e31353c52594f5553535853504e57 +5555775cf8f0f61d4c3d5c2b3b42464544494d4ec0666dde001f4c99f762 +657243794b875d7971516634fcfc412e626a60f9fff5fdece4e6e4eeecdb +e3e4e4e6e7e8e6e4e1ede5f7faf553bcf99e141065fbf8ea827ea77d5849 +3964d8f7f7f3fefffafffffffffbf8fafefffff7f1fdfbf0fcf8fcfde6f8 +fffaf4f4f4fbfdf9f4f4f8fbf5f88230342819485f445c5d3be25177a681 +84788161937a6ea259eef350367c4b6a9affa9fff3e8e6cb7390d45caa8d +001e834f3b1e2018161a1b1a1b1f22231d2625201f1e1e221a172b203e52 +1a15191a1828271976563a1f572f3b087ebaa78d7a6030244243384839db +ce4e5f484628476e54634272b8c0bec4b2c2dcbccec1e1c3ccbcc6b9c4c5 +b9bba6b0aac1c5d0c9dbf2d1e5e0bdc9dce3e8dbe5cae7f4e0e3fef7f7fb +ede0eceee9e3eee5def1f1e8f3efebd6f1ebe9edf4f70f0d0b0b0e10100f +0b0d0e0b0b0d111213100e0f12120f0c0f0f0e0e0d0d0c0c131414141313 +14142d1a1713101412161616151513121111171413161a1a151017161617 +1614161a171717151313131414141515161513111816181e1d17181f1b1c +1b1a18191c1e2122211e1a1b212624261f18191b1d2220201f1c1a1b2024 +1b1b22251f1d2022222022221e1e201f1e1c202321242825201f26271f1c +2224271f27272d2c2524262325252722222123231b1d18221d1b24201d1e +242926222d312d2d33322d2d322b2d2929333030302e222c272423232931 +292f2e28312b2e2e2c2a282729292f2a23252a24242f2a2f362a2d2a4036 +342f1b07521f0a68a49789310d13252f392d271e171f272d56324a040002 +525637151a0863d8843006d87644d4003333302d382a3200024288830f38 +39363c3d3b3738363e37484530241913171a1e20273d443a3f3d3e433b36 +363f3d3d6146e4dce50c3d2d4d1a2a2e343132363c3aab4f54c300052f7d +df4d525f32683771455f57374f21ebec2a164b554ce6ece1e9d6cacac7ce +cab9c6c8c8c9cacbc9cac7d6d1e6eae645ade9900b0757ecede27c7ca681 +61513a5ccdeceae6f3f4eff8faf9f7f7f4f2f1f1f4e9dfeae9e0efe9eae8 +d4e7f6f3ededecf1f5efebeaf0f3eef3832e28180f405f465f5f37d94365 +966e6e60684b836a5a8c41dbe9492b6d334b75dd8ae0d0c3c0a85372ba45 +9479000f764331171c140f12141415181919121b191313101016120f2417 +3448120b100f0f1c1b0f6b4b2f11471b2400629e8d7362491b0f2f322737 +28c7b93648313013335941512e5b9ba29fa695a6be9dafa1c0a2ae9ea99c +a4a5989a858f89a0a4afa7b9d0afc3be9ba7bdc4c8bbc6abc7d4c2c5e1da +dadfd0c1cfcfcac3cec4bfd2d4cdd7d5d1bed8d5d3d9dfe22c2a28282a2b +2b2a272a2d2c29292c2f33312f323535322e323233333331302f33343535 +343333344132373b393a383d3e3b373331313233383737383a3936343b39 +3737363334363436383836343231302e2f31323332303332343736323337 +34383c3d3c3a393a38393b3b3a3b3e403a3d37313436363a3e38373b3e3b +3838423c444841434a493d383e40383a3f39413e4246464849443e3d4445 +3e3c424442465155534d48494c49464645444649575048504a4a464e4c4f +5151515253544d55514f55514b504a4d574c424a4d4f504e4d5657514c4a +474f454e5453645f585b5b57514f5358565c5c63675d595959575a585c56 +5f5d60503824713f31abb7bfb96b4949442536502b393c3d3d5d452294a2 +1e5ebd5533283c3e3b8fb83b29f99166ff55555e6d71766d70203381c08f +3e5b65765d625f6468575e6a7c604846433f4142403a4340497c6067676b +6a6967707172895f817ced3986566858585251555247474ed47d4a6f1f18 +a8ddff4ba79b74c074a77f97686fbc78e3ff66227d5276ffffdafff8f4fd +f3e7e4fff0efefedececedeef1f9ffffff72d2ffbe312885ffffffcfe4ff +ffe0ddbcc7fffffefffffdfcf9f3f8fbfffffffffffffeffffffc0a4999c +dffffffffaf1f4fafefffffffafbfeffffffa761626371dbffeaf3e9d0ef +8491ceb9adb8a9b0bdc1af957288c190545242965ef58e6f756b62494c7f +8b47a59f26404f36393530332b313c464949423e3d464744494a4d534d43 +4f3f586e403b304b3e353629472b33322f4f8f2334594b3f3d432b3c493d +41503ac6ff6c7f76d97c8a8f898f6a4bce919ac2cfd5d1c0d4c7e8ebe7de +dcdfe2f3d4e1e4d9dee5ffffcee5eadfdedfd6e9f2f1eff1fedcffffd8d4 +ede6ece0f3e8eaedf2f1e5f1e6f8f3eaf0fbffeffffdfbfffffd201e1c1c +1e1f1f1e1c1f22211e1e212223211f222525221e222223232321201f2324 +2525242323243122272b292a282d2e2b272321212223282727282a292624 +2b29272726232426242628282624222120212224252625232625272a2925 +262a24282c2d2c2a292a27282a2a292a2d2f292c2620232525292d27262a +2d2a27272f2931352e3037362a252b2d25272c262e2b2f33333536312b2a +31322b292f312d313c403e38333437343131302f3134423b333b35353139 +35383a3a3a3b3c3d373f3c3a403c363b353842372d35393b3b393841413b +363431392f383b3a4b46414444403a393d423d43434a4e44404043414544 +46404644493d2b2277504cc6c6c7be6d46433a1928431e2c2f3031513813 +85931252ac4a37364c472e7dae3b33ff9968fe4b484f5d61675e5f0f1d6c +ab7a28454c5d424744494d3c4551664932302d2c2e312d28312b3466474e +4c5152514f58595a70466863d31f6c3c4e3e3d393a43413a3c43cc753f63 +0f0797c9fb3592865eab62956d86575eaa66d2f9520e6b4369fcffd5fcf2 +edf4e8dad6f4e5e5e5e6e6e6e7e8e9eefdf7f05fbcfaa1110669fdfcd78c +86b390534a3b6fe9fcfcfbfef9fdfffffffffffdfbfbfbfcfffff9eeaa8f +8689caf0fefffdf6f4f8fffffef4f1f4f8f9fffb7f2f372b175e613a4850 +548e3f5ea09492a39795939796815264996b3738277d50ef8968665d5a3c +3464712f8f86051f31202b27181b1d242b2e302d29262a3334302e2c2b31 +2f263428445b2d281d382b232417331721201f42841725493726242a1427 +362a2b3a24b3f456665cba5d6b726e78573abe8083a7b0b3ae9fb5aaced1 +ccc3bfc2c5d6bac7cabfc4cbe9e5b6cdd2c7c6c7bed1d9d8d8dae9c7f6f0 +c7c3ded7ddcfdfd5d7dadfe1d5e2d7e9e5dce5f0f6e3faf2f0f4f8f5100e +0c0c0e0f0f0e0a0d100f0c0c0f1113110f121515120e121213131311100f +13141515141313142112171b191a181d1e1b171311111213181717181a19 +16141c1a1818171415171517191917151312101011131415141215141619 +1814151914181c1d1c1a191a17181a1a191a1d1f191c1610131515191d17 +161a1d1a1717201a22261f2128271b161c1e16181d171f1c202424262722 +1c1b22231c1a20201c202b2f2d272223262320201f1e20232f2820282222 +1e262326282828292a2b29312b292f2b232822252d22182021232624232c +2c26211f1c241a23272637322f32322e2824282d292f2f34382e2a2a2e2c +302c2e283030372c1a0b5b2c21999ba09e5533352e0d1b320b191e202343 +28006674003c922c1615312c0c598b1911e47443d9272630434a524b4f00 +0f5b9865133038492f3431363a29313d513724221f1d1f1f1c141d161f51 +3138373a3837374041425a30544fc20e5d2d3f2d2c25282f2f272a31b960 +294b00007bb0e4207f75509a4e7f556c3b449250c0e83a00552e56e7ecc1 +e8dad3d7cab8b3d1c7cacacacccccfd0d4daece8e251afec9102005dedec +ce8484b4955954406bdeeff0f1f6f0f5faf6fafaf7f7f4f2f0f0f6f3e3d6 +957e777ab7dcecf3f6efeaebefefefe7e2e4e8e9efef7728271c0f5c633d +4e525285304b90827d8e7f8083878269394e8d632f290c5e2dcb6b4b453a +361a18495615777000102613201e1417141b242a2c2a2522242d2d272524 +2228251e2b203b542621163124191a0b280c15120f3170010e301f101016 +0416271b1d2c16a2e1415045a54857605d664626a462648a93979080968a +adb0aea5a1a4a5b699a6a99ea3aac8c494abb0a5a4a59cafbab9b8bacaa8 +d6d0a9a5c1bac0b3c4b7b9bcc1c0b4c1b8cac8bfc9d4dac9e1dcdadee3de +2b2a29292a2b2b2b292d30312e2b2c2e3535363534322f2d313234353433 +313032323333323231323a30393c363331373837353434353637393a3c3a +3838393b3b3735373a39383737383a3a3836343231313133353636353134 +3431303335332f333739383635353b393737383938373a3f3c393d3e3b3d +3b3433393c39393d3d373e45414348434c474c4f474a4f4a47403f3f3d40 +433f443f41444142464644484b51524c4a474b48484a4b4d505359544d55 +4f514e55494a4c4c49464545404b4b494e4b48514c505a4e444e5252544e +4e494c4d4d4d4a54535a5e5d645d5f5a55565b5f605e51615e60635d605a +63595f6166736168544d49397e3825c31600d184831d4e4444473e4f4542 +3b505132c1b5216fbeb24c333e4c77cbc49727f97b80ff486b6b656b6c77 +7910214940323b60607161675f6b7063687270444c49443e3e41423e374c +4948756d6f6a6c73716e696f8d656f1539504f5368465a55555a594e4c4f +b563504b2719f7ccff81b36a646b5c626b6e6b6ba1a8fcff6553655554ff +faafc5d5d6cc975a71f7f0eeeeebe9ebf1f7ffffffdb48fbffaa444d5fff +ffffc3dcffffdfcaaed5fffff7fcfffffefcfdfafffffdfaf7fcfffff5ff +b65a67667868558feafbe9f0f9fffbfafcf9fbfffffefeff905b4e5564e3 +ecffffe8d0a76066686c27322a2a2c346a7a567a9a53454267af4dd57339 +6e6b70727c786a4688de27313b24294d5d212b292d3136383b3a39403f3d +434646483b3b3e343a3c2f343664523b3a382a5246473876ad3d3e5e6160 +554f3a443934483a236def827b6e84b1c29c75787b63c87d69ade6dddad8 +cdd6d8f0cdead7e7dcd4dfe8e5dbecded9edf1fff3eee9fdf0faedebe1f4 +fff9f2f7f0f7feeefff1fdfcfffefffff3fffffffbfffdf7fbf8ffffffff +fffe1e1d1c1c1d1e1e1e1c202324211e1f21262627262523201e22232526 +2524222123232424232322232b212a2d2724222827262423232425262829 +2b292727282a2a2624262928272626272929272523222121212325262625 +21242421202325231f232729282625252a28262627282726292e2b282c2d +2a2c2a2322282b28282c2a242b322e3035303934393c34373c37342d2c2c +2a2d302c312c2e312e2f33332f31343a3b353330343131333436393c443f +38403a3c394032333535322f2e2e2a3535333936333c373b4539303a3e3e +3f39383336373737343e3a4145444b4449443f4045494745384845474843 +46414d444a4d505d484f3d3a3c37844942de2507d68680174438363a3142 +38352f444423b4a81764aea9524251566dbbbc9731ff8282ff3e5e5c565b +5b6668000b342b1d254a4758464c445055484f595a2d3635302c2c31312d +263a34325c545550545b59565157744c54001e3533374c2b403c3e474841 +4046ac58443c1505e2b6fb6a9c534e55474d575a57578d93e7fa4f3f5344 +45fef1a8becfcec2894b61e8e7e8e8e7e5e7ecf1fdf8fcc932e3f8881623 +4dfce8de7e87c386503f3d84f2fbf7fffffffffffffbfefefffffffff8f8 +f3ffa6404d4d61513c7ae1fbeef5f3fcfffef6eff1fbfffefffd71322923 +0c664b54534c5249213941480a1817150c134d5b315479362824489438c7 +6f335d535856585247276ebf000719091b404c10211f1c1a181614131219 +191517161317141a1d161c1f12171947352022221740343528669e2c2948 +464338331f2e272232240d58da6c62536591a17d585e6551b76a508fc4ba +b7b7aeb9bed8b4cfbcccc2bac5cecbc1d2c4c1d5d9e8dbd6d1e5d8e2d5d3 +caddf0e5dfe4e0e7efdff3e2ecebf4edf4f2e4fcf4f4eef5efe9ededfdf9 +fafdfbf70e0d0c0c0d0e0e0e0b0f1213100d0e101313141312100d0b0f10 +121312110f0e1010111110100f10180e171a14110f151514121111121314 +16171917151516181a161416191817161617191917151312111111131516 +161511141411101315130f131719181615151a18161617181716191e1b18 +1c1d1a1c1a1312181b18181c19131a211d1f241f2823282b23262b26231c +1b1b191c1f1b201b1d201d1e22221e1f22282923211e221f1f212224272a +312c252d2729262d20212323201d1c1c1c27272528252029222630241822 +26262a24231e212222221f29262d31303730342f2a2b3034332f22322f31 +332c2f2b382f35353845323b2b292b20682516b10000b66e6f0b3a2c2929 +1e2f27252338340e9488004e948a3021353b4a9797750fe6605ddb1a3b3b +39424754580000231808103533443339313d42353b45451b292a251e1e21 +211b12261f1d463e3e393a3f3f3c393f5e3641000d2425293e1a2f282c36 +383030359b462e250000c79ee65a8e454148363a3f413c3e757ed6e73a27 +3d3032ece095abb9b7a76c2a3fc7cacececcccced6dbeae8edbd27d9ef7e +091337e8dcd67782c08556463f81e8ededfafafafafaf9f5f8f8f7f7f4f4 +f1f1e7ee8d273639513f2665d0efe8efe7ecf0efeae6e8f1f6f4f5f46e2e +201a0b6c515c5d505341122630380007060400043b46173d6a2e221a3377 +1bac561b43373e3e423d311257ab00000f00103744081713141416151514 +131a1813141410130d11140e14190c1113412f1718150932262718568b18 +163333332a2514211b1627170047c7574c3e507c8e6b484f573d9d4c3273 +a89e99988f999db695b19eaea199a4adaaa0b1a39fb3b7c6b9b4afc3b4be +b3b1a8bbcfc4bfc4bfc6d0c0d4c5d0cfd8cfd6d3c3dbd3d2ced5d2ccd0d1 +e2e0e0e3e4dd2b2b2c2c2d2f30302c2e3133322e2d2f3234363633313132 +32333536363433313635343435363534372f37352d2d2c3336383a3b3a39 +3735383b3d3b3635393d3d3836393c3a36333b3b39373535373938373637 +38393837383d3c37373d3e3a3e3d3d3d3e3f40404f48413d3d3d3c3a3439 +37363b3c38383c3c3e3e3a3a445149474e575756534e4846494946484c4b +4d45413f3e444c4b4e4544494b4e504e554f454d5554554d515053575855 +54544e56504f4a5855525e5854585d5b5651484e504f4f4d4d52514c4f48 +49595b59534b4f464e5253564d4f514e505757555b585452535558596472 +645f616272705c595d585e7a5c60674e352a753c42e27b8ebf85a11d4a49 +50456162504e50774a1ac9b536adbae0fe503f61c7d959e393f9817ff648 +686b68766c6c741526281131426c615f6d62656b65676b71613c42413e38 +37393b3b3b493c3d765c6f8b6d72706f6d749168d5cdee3f41405a6a5254 +5551504c463da77f57c05662a67d7f43638177707a797d61776b7f3b3e55 +3f59449447a1804036504b50575167ebf1efeeeaeaeef8feffffcd4ff5ff +9f2e2f5f9fffffb5fcffefd5bdb2e9fffff3fcf9f4fbfcfdfcfffffffefa +f6f9fffffff084c6d5d6d6deddc0f1ffeefcfffffbf8fafbfffffffcf8f6 +81644a5b73fafbfffbf6d1ffd76483a51b372a333534697567caffdf4753 +978c52ba64416456564856564c4c69d841218ba34c2eb321322b25262c32 +363b373f3d3b414542423b3f383d3e35373737625146444438b599442851 +7d4b403e37535d5139392b383d463340e86b1a3842c2e5fd69232c29cfc2 +5e8ed0c2dbdaceccd1dbd4c7cee1ebd6f2d9e0dfe5f7efdef2e1ebe7e2e4 +ecf1f0fef5f9f1fdfeffffffffedfffefff6ffeefffffcfff0f6f8ffffff +fffafdfcfcfefefd1e1e1f1f202223231f21242625212022232527272422 +222323242627272524222726252526272625282028261e1e1d242527292a +29282624272a2c2a2524282c2c2725282b2925222a2a2826242426282727 +262728292827282d2c27272d2e2a2e2d2d2d2e2f30303e37302c2c2c2b29 +232826252a2b27272b2b2d2d2929334036343b444443403b353336363335 +39383a322e2c2b3139383b323136383b3d393e382e363e3d3e363a393c40 +413e3d3d39413b3a3543403d47413d4146443f3a33383a393a38383d3c37 +3a33354547453e363930383c3d4037393835373e3e3c45423e3c3d3f3f40 +4b594b46474858574644484448644347503b28287e4d5ffd8a96c2879e17 +423f443854554340446b3d0ebcaa2ca3aad7ff5f536ebdc951e49eff8881 +f23e5b5c59665b5b62021013001c2c56484652474a504a4c52584b272e2f +2c2827292b2b2a382a2860435571555a5857555c784fbab2d32425243e4e +383d403e3f3f3a349e744aaf444c8e65682c4b69615a6464684d61556922 +243b29432f83379577392f494044494154dceaebeae8e8ecf3f9fffdbd3b +ddf88108003186f1d56ea4ca7c58363b9ceffbf1fffef6fdfffffbfefcfc +fffffffffbfaffeb6fa8b7babbc5c3ace8fff4fff8fffffcf3f0f6feffff +fff7694229261778574f47524eb59c3e5f85001b1421221e4e5744acfcce +2e34766c36a55d38492f2b18252822294abc20016e8c3a1da110241d1412 +131312130d13110f14140f111019121619101414143f2e25282d27a58732 +17406c36262117313b331e221825262e1d2ad355011c23a1c4dd4c091617 +bbad4570ae9fb8b9afb2b9c3bbaeb3c6d1bcd8bfc6c5cbddd7c6dac9d3cf +caccd4d9d8e6dee2dde9ebecf8f9f4def6efefe6f4dff9f0edf0e3e9ebfb +f4f3f4eff2f2f5f7f7f60e0e0f0f101213130e10131514100f1110121414 +110f0f10101113141412110f1413121213141312150d15130b0b0a111315 +17181716141215181a181312161a1c1715181b1915121a1a181614141618 +1717161718191817181d1c17171d1e1a1e1d1d1d1e1f20202e27201c1c1c +1b19131816151a1b17171b1b1d1d1919233025232a3333322f2a24222525 +2224282729211d1b1a2028272a212025272a2c262c261c242c2b2c242827 +2a2e2f2c2b2b262e282722302d2a352f2b2f34322d28222a2c2b2927252a +2722251e1d2d2f2d2921241b2327282b22242421232a2a28302d29272828 +292a3543353030314141312f332c304c2d333e2a1711612933d05f6fa571 +8f0b3733362741423233385f2d009c8a138a90b6e23e37529aa52cc27ee6 +665ccd1a383b3c4d4749540002020007174134323f34373d37393e443616 +2325221b1a1a1c1b18241413492d3e583b3e3e3d3d44623ba9a1c2131716 +3040272b2f2d2f2e2a238d62379b2e34764d561e3f5f564f56535335493d +520e132a142e1c71278566271d362a2a2c2033bbced2d1d1d1d7dfe6edef +b030d3ef7900002170dcca68a0c679563a3d96e6efe5faf8f1f8faf9f6f8 +f8f7f7f7f6f6f6f4f3d7548c9fa5aab1ac94d9f5f2fbebececede9eaf4fb +fdfdfdf2694022201a80625a535d53af8e2b4f76000f071314103b3f2892 +eac42a2f655520924d29381e1b0a1719121636a70f00607e2e1397061912 +0a0b0e1112140f14120e11100c0c090e090f110a0e0e1039281c1d1f1795 +792407305a25151108253129151a111e1e24101cc24000070e8eb3ce3e00 +0803a290275492839a9a909197a19c8f95a8b09bb79ea5a4aabcb5a4b8a7 +b1ada8aab0b5b6c4bcc0bcc8cbccd7d8d5bfd7d0d5ccdac2dcd1cecfc1c7 +cbdbd7d6d7d1d6d7d9dbdbda2e2f303031313233312f3134343232353032 +3435353536373a3b3c3d3d3c3a393a373435383b393739333b3732363639 +3b3b3b3b3a393737373a3c3a363435383d3b3b3d3d3935343c3c3b383737 +3a3a3b3a393a3a3a39383b3c3c3c3d3e3e3c4643414143454544413e3b3c +3f42444540443f3c424442433f4245423d3e48523c4245494c4844474b4d +4b494c4d4e534943434442474e4c4d43434a4d51504a59584b545b5a605a +5a5a5c5e5d585451565f5a58525f5d5959524e5258595854514e4f4f4c4c +4d4a403e4a4d505850495f515d5a65615f66605a61575e7270787375746d +6764696e54645b63675c635b595959535e675a5e6754363c7429308b61b4 +9f59c00d4537353924381b203068831cb67f77ffffb7fa442f57fffe92d3 +6df56c94ff426f5d616b6969760f224795913d606a686d59636f5b636676 +5f443d3d403f3d3a3c40482b42d49278656f6d6c6b7473718b66ffffff48 +5a43645d6264645f5d584e43b29353f019363733643f50835b2d26292621 +43547d406bb751334b8f62b38a5257838271646473e6f6efededf2f8feff +fac387fcff983a2c96daf6fbcaffffedd9caa5fffffff6fef7fdfffff8ff +fffdfffffffffffefbf9fae0e1e3caede3e2f6d0edfff4fcfffffaf7ffff +fffcf7f28984476053607dedfbfbfff7aeffff4b629038373d2e3622566b +e6a4fbfe1e66a54a589a67405c7a55645349565242da760c3e8f703f312e +34271b1b1f23282c313a3a383c3c393d41443b464e46473b496954464336 +22907954265b5c3d4b48354d614f322d293a333d2929ec892740459dd6fe +6c334430bbfa5c73c4dcebe7dbd7e6e1ffc8ebfbe5e5e3d0e4e0e8ffe7d4 +fdeff4e4e0d8e3e0e8e9ece6d5f4e9dbd9d0ded3eaf9f0effdeffffffffa +fffffafdf0fcfff0fffffaf7f7fb1e1f202021212223211f212424222225 +21232526262627282b2c2d2e2e2d2b2a2b282526292c2a282a242c282327 +272a2a2a2a2a2928262626292b29252324272a28282a2a26222129292825 +242427292a292829292928272a2b2b2b2c2d2d2b3633313133353534302d +2a2b2e3133342f332e2b313331322e3134312c2d3741292d303437332f32 +363836343738393e342e2e2f2d323937382e2e35383c3b35423f323b4241 +474141414345443f3b3b414a45433d4a4743433c383c42433f3d3c383939 +373738352b2936393c443c35493b47444f4b49504741483e4559575f5d5f +5e574e4b50563c4c434b4d4249434344443f485141455041293a7d3d4da6 +70bca25bbd063c2d292e172b0e12225a7710a97470fffdaeff554364ffee +8dd478ff7395ff38624e525b585863000c31807c274a514f523e48544048 +4d5d492f292a2d2e2c2c2f33391a30bf7c624d575554535c5b59704bf1f9 +f32b3d264741484d4f4e4d4b423aa68746df04201d184a27376a42140e12 +0f0b2b3c6425509b371c367c52a7814b507c7765565360d7efedebecf1f7 +fbfdf3b775e5f87b19076dabc1c18bbad47953483abbf5fcf6fff6f9ffff +f7fcfef8fefefefefefffffffcd8c7c1aacec6c5dabae4fffdfffafefaf9 +f6f8f9fafcff9d8e3741312615625545484c27cde82c4672161626202e19 +4456d299ffff0c478123307c5a2e33400f1e1817272c25c56a04337f5822 +1613190f090a1112110f0f141412191a181817180f1a231d201624442f24 +261f13836942154847262e2611273c2e161817291c251313d7730e24267c +b5de4f192e1da7e24154a2b9c8c6bcbdcecaeab1d2e2cbcbc9b6cac6ceea +cfbce5d7dcccc8c0c9c6d0d1d6d0c1e0d6c8c9c0cfc4ddece2e1efe1f2f6 +faedf6f9edf0e3eff2e5f5f6f3f0f0f40f10111112121314110f11141412 +12150e0e10111111121316171819191816151613101114171513150f1713 +0e121215161616161514121212151715110f101319171719191511101818 +1714131316171a191819191918171a1b1b1b1c1d1d1b2623212123252524 +201d1a1b1e2123241f231e1b212321221e2124211c1d2731181a1d212420 +1c1f232523212425262b211b1b1c1a1f2624251b1b2225292822302b1e27 +2e2d332d2d2d2f31302b27262c35302e2835322e2e2723272d2e2b2b2b2a +2b2b2626252216141e21242c231d3426322f3a36343b332d342a3145434b +4648474038353a3e24342b33362b302b2e2f2f2730392b313e3018236018 +217945958545ae0033231b1c0418000519516700895456e6e38ddf332748 +ddca67b258e45273dd143f2d35424446550000236d6712353d3b3f2b3541 +2d353949341e20232624221f1f2226061aaa654b353d3b38394243415b38 +e0e8e51d2f183933373b3e3c3d3b342b987735cb000806033b1d30633b0d +0404000013244e123f8d260a256d4399723b406a634d3b3540b8d5d6d4d7 +dce3e8ede3ab6bddf17514005b97b1b582b4d179544632aee6edecfbf4f8 +fdfbf2f7f8f2f7f5f7f7f9f9faf6eec3aca591b9b4b3c4a3d5f8fcfdebe8 +e2e4eaf2faffffff9e8f3a3f281b166961545a5c2ec9da1a38670d0f1e15 +230a303bb179e9f30a4575142474542c2f3e111e14101d1f13b054001f6f +4c1a0d0a0e030000060a0b0b0d13130f13110f0f0b0d06111c17190e1e3c +271a180d0070593405393616201a051e342712131322161b0605c65e000f +1269a4cf410c210c8ec62438869daaa79d9caca8ca91b3c3aaaaa895a9a5 +adc9ad9ac3b5baaaa69ea6a3acadb1ab9ebdb5a7a79eaea3bbccc7c6d4c4 +d5d6dacdd4d7cbcec3cfd2c7d7d9d6d3d3d72b2c2c2b2a2a2c2d332f2e31 +343335383535353535343433333435363535343339323032373a38353430 +3834313734303634313132363b3e37383a393734323236373b3f3e3b393a +38393b3b3a39393938383738393938383c393b41423d3c3e3a3837393d3d +3a36404143434342414141423a353a3e3f413e40413f3e3f403f3f454440 +4641424c4347433e4644464f4a494d4f4a4846404f46474f5356544d4c55 +515a59525d5d575557595855545351514b51494a474b524e4c4c4a484e51 +584d4f535055574e656067635e666a6e6f57615e685d5c6d6b6171616274 +62696a645d585b5c5c5a5d6557656a5a615c6864616477646d78716c454f +72336cab9b70e483cb152d314f2721b9518cdca15957c68524d3e76a401f +2b1490f07b4435fb6b8dfc475f7379708eb0b5182596c4ac366173695a69 +5c7a666a6c8564433d3c3b3c3939414b4c493667697f80676f6f737a6c5e +8373ffffff6b6e50615d605a5d6159422f299ca133ff203f46c2ffe55453 +372c212c2a303c5e7e6eccffd623677349832f46414b485d646a73e2fcf4 +eff3fbffffffb68bffff6e30337fe1f1c9cfffffdeceb7bdfffffff8fcf5 +fffffdfffffffffffdfefffffffff7f7fee9dfd7c1d6d5dbced2f5fffcff +fffff7f9fffffffaf5f5a8874b5e4f5a8ef9f8ffffead0ffff3e6380592c +1f2023264f649076f7fc475a6a4ca08b6d3f5768616c5859525743c2750a +267f613b44444935221c1e20262c293236353a3a3940444c4a4c4d4c4c42 +486a54424e442049494b304e34553c873841594d3531292a333736118f79 +7e776681cbc08a6a736a7cff6f6dabd9c8ded0ebd8d2d9bed4dde0e6cce5 +dfcae7cce8c4d6e2ebefebdce5e1eed2e1dcd0f2eef0fef8ffebdfecd1f1 +ffffe1e7e6dcebe2def7f0eeefe8ecece7e6eefc1e1f1f1e1d1d1c1d231f +1e2124232529292929292928282624252627262625242a262123282b2926 +25212925222825212725222021252a2d26272928262321212425282c2d2a +282927282a2a2928262627272627282827272b282a30312c2b2d2a282729 +2d2d2a262f3032323231303030312924292d2e302d2f302e2d2e2f2e2c33 +2f2d312e2d392e342e2b3131313a3534383a3533312b3a31323a3e413f38 +353e3a43423b4646403e3d3f3e3b3a3c3c3c363c343530353b3835363332 +343a41383a3e3b404239504b534f4a52565a59414b485247465450465444 +4558474e4f4b44424243414041493b494e3e47444f4e4b4e5f4c535d5657 +394d7d4c8dccb27fee87ca0f2425441f1ab24984d3985253c1801ec9d964 +4a333e1f86e172443eff7291f83d526059495f8393000f83b29720485850 +415043614b4f516c4e2e2928282a2829313b3b3824535369684f57575b62 +52446756f0f0f95152303d373b353743453e393cafac2df005202aa7f7ce +3b3a1e150b19171e26456554b5fabf0c516139792c463d45415053555fd2 +f2edeaeef9fffffeac7dfaf84d0f165fb6bd8787dae26c50354ccef5f9f9 +fffafefbfcfefffefefffefefcfcfcfeffffffe1cabca5babac0b2bce8ff +fdfffdf5f3f7fcfcfdfafcffbd923c402d1c1c624c4e453e45bff0214b67 +3a0f111f2a2946548170ffff353c45267869582526230c15121f233126ad +6a041f724b1f232328180b0b111617170d13131217181718121513171817 +160f1237251a2c2d113e38381d3b1f3b1f65131c362e1c1e1a1b1f202400 +7a62635b4b66aea36c4e5b5568ea554f89b6a5bdb1d1c0bac0a5b9c2c6cc +b2cbc5b0cdb2d0acbecad3d7d3c4cdc9d6bbcac8bcdedbddeee8fedcd0df +c3e3f6f4d3d9d8ceded5d1ece2e3e1dde3e3e0dfe7f50e0f0f0e0d0d0d0e +130f0e11141315161313131313121213111213141313121117100e0e1516 +1611120c16100f13120c12100d0c0d1116191215171614110f0f1011171b +1d1a181917181a1a1916151517171617181817171b181a20211c1b1d1a18 +17191d1d1a161f2022222221202020211914191d1e201d1f201e1d1e1f1e +1b1f1e1c201d1c281d231d1a20201e272221252722201e18291e21272d30 +2e25232c2831302934342e2c2c2e2d2a292a2927232721201e2029232321 +211d23283127292d2a2d2f263b363b37323a3e42422a34313b3231403d33 +4232334332393a352e2b2c2d2c292b33253336262e2a3937343647343c48 +434423345d25609d8658cc6cb600151530080098326fc2873f38a16004b0 +be44270e1e0062ba4b201fe8516cd3192f404238557d8a0002749e820b34 +453c2d3c2f4d383c3e58391d202121201e1c222b29240e3b3c5250373d3d +4148392d5244dfe2ea424423312a2b252c3b443d383aada621e1000c1292 +e9c63635190d000a06080f2f5143a5eaad0043532c6f253e3439313d3936 +3cb1d9dad6dae4ecedefa072f1f148080e52a3a8797bd0dc6b513546bfe1 +e4e7f6f4fdfbfafafafaf8f8f6f6f6f9fafafcf9f2ccaf9f8da4a7ab9aa5 +d8f3f7f6eadbd8e0ecf4fbfcffffc0943f4023111b695a5e584e4cbde411 +3f603811101a231e353d6250e7f1333c3d196e6053242928131b121b1924 +169a56000c613e141a1a1f100301080c10120a10110e110f0e10090e0c11 +1413140c10341f12201b002a282a0e2a0e2a0f590a143029171813141818 +18006950504636519c9361424f4450cd3a336e9a879e92b09e98a1869ba4 +a5ab91aaa48fac91ae8a9ca8b1b5b1a2aba5b499a8a59bbdbabdcdc7ddbd +b1bfa6c8dbd7b6bcbbb1beb5b1ccc5c5c4bfc4c6c3c2cbd92f2b29282a2b +2b292d2a282a2f32302e2e2b2b2d302f2e2f313131323231333331323435 +333231313333322f2c2d3033303137312e293e363634363b3b39393d3b42 +423c3d3735363e3b33372f3737353c3d3c37383e3d37403239453e363b3e +3f3d3e4244413e3d42454543434545414748494a4b4a484646484247383c +3c473e3b3c3e403e3d3b3b3f4445474a5156504f524c54464748484f4d4b +5155504b48594a4d4b3e4d45454c4645474c544d57504d50535251515050 +4c5b606b625d67636266645a52505b59574e57505458635c605c525e5c74 +665d66706b6564605b5e5d58565d5e5a637070787e7b7d7f746471595c61 +7c7476663e555d292c9a89377666ffe6e7e4f3f2fffed8d0c3cae1e9fa9a +0880a8382a303b378db1d35245f9699eff405e6c88b0e6ffd61f2083a790 +3a696c6b5a5c5a5d5e6a62656c8064413846443b3e43463e57676c746c69 +7469666f6c6c8bb169399c4862515e45505d594728110005203f1f693425 +91c2ffbe4c5647211e2b222b3854a25797ffe526683c3e7e3d5a4b3d316c +6b7062e3faf2fbffffffffa4a1ffff68303a8ae0ebd4caffffdcccc4b8ff +fffffff6fefffffffffffffffffffffffffffffefbfdfff9f3ecc4cdecf4 +fffeffffffffd3bee7f4fffffffcfbf8d469535d5158a2fefffcfaead4ac +854a647a691e1405110c2c5e74424e5747693e509d7cf349635e70736454 +594a2fdab118331e1b2a44893a322e24192123252a2e2e3d403a4d495051 +50505154585b585e58524344352f3c3e3e3947ab24b451364b4c3627252c +35232b227aa268786460c5a5b15f6b6659d99e598cdec6d8dcdee1e5d7e6 +e5edeff8e3e8f5f3f4e8e6e8f6f1edefe6edfedaf9f1edfff0fcefecf9f1 +fbf1e7f0fbf6faf3e0fcf4f5fffffdfffcfafffffffefdfbf6f827231e1d +1f201e1c201d1b1d22252321242121232524232424242425252423232427 +272826252424262625221f20232625262a221f182d23232123282a28292c +262d302b2d2725262e2b25291f2726222b2d2c27282e2d27302229352e26 +2b2e2e2c2d3133302d2c3134343232343430363738393a39373535373136 +272b2b362d2a292d2d2c2929272d313334393e433d3c3f3941333435353c +3a383e423d383548373a382b383030372f2e30353d36423b383b3e3d3c3c +3939354449544b46504c4b4f4d443c3a45434138413a3e424b474b483e4a +4659473c434d484244413c42423f4044413b3e4a4a525c5d66685848573f +40455e55574e2e546d4857c8af548b72ffe1ded9edeefffed8d0c3cbe6f3 +ffa107769a3338474d3f849fc64d48ff73a3fe37524f49587ca898000c76 +987e204e4f50434a4846434b434a586e4e2a21302e25282e31294251565e +56535c515157504e68904c1f8935482d2c0b121b0f0b0e1c274d6d772750 +0c0071aafbab353a2e0d0e201a1f263f8d448afdd311562c307947654f3c +2c6053564acfeae5ebfdfffffd9290f9e545041375c7b6928de8dc69443f +4dd4f7fdfffbfffffefdfefefefefefefefefefefefefffffdf2e7dcb4bb +d8e0eceaf6fcf9fbc1aee0f0fbfefdfdffffe26f403f3118265a4d424440 +4340492a4d654f0e1d1d2a1e295163313d432b4a20337e5dd42431191313 +14152b2912bd91001f100f1924641713100b0712161312100c151309130c +0c0d0f0e0d0c0c0c0713161d1d2a28242a2b2b2735960b9731152d2f1f16 +1920231121166786485b5251b38b8f3d505047c8883f6ebca5b7bec1c7cb +bdc9c6ced2dbc9cedbd9dcd0cdcfdfdad6d8cfd6e7c3e2dad6eddbe9dcd9 +e8e0eae2d8e1eee9ede5d5f1e9eaf6f5f2fef1f1fff7fcf7f6f4eef01410 +0c0b0d0e0d0b0f0c0a0c1114120e0b08080a0f0e0f121313131415141414 +13131615151213111513140f0e0d12130f10170f0c061b12121214191a18 +191a13181c1b1e1816171f1c181c101714111b1d1c17181e1d1720121925 +1e161b1e1e1c1d2123201d1c2124242222242420262728292a2927252527 +2126171b1b261b181a1d1f1e1e1d1c21232525292d322c2b2e2830222324 +262b2b272f332e2926362629271a271f1f261f1e20252d26312827282d2a +2b292927253239423b343e3a393d3b2f2725302e2c232c25292b332c302d +25322f443329303a352e2f2c272c2d292b302f272c37373d434147494030 +3e26282d464042361435491e29978028644ee3c4c1bbcbcbddd8b4aea1ab +c6d1e27f005d8015141d25165d779c2729e3507bd8102c313a5786b39900 +0166856a0f3d3f3f3136343430392f35405a4322192523181a1d20162d3a +3f463e3b4439363d3836547d3c107a2639212300030f0e17293a40638184 +294b04005a92eda42f362702000e0509122c7a3377eabf00481f2373496b +50382652393324aed3d4dbe9e9eced8686efe141010c64b3a6827bd8d466 +484247c7e1e2eae7f3f6f9fafaf9f9f9f9f9f9f9f9fafafcfcf9eedfd1c5 +9da3c0c7d1d1dee5e6e6a994c4d5e6ecf1f7feffe26f423d260e28635950 +514b483d3e1b4564581924212f1e22414f1d2d38284818256a48c21b301e +1b17130c1c1802af860014030009195b13100e07030d100f100e0a131005 +120b0d0c0d0f0e0f10110d171719141b15121c1c1a131f810087260c2529 +170c0d1419071508587839493c3a9f7a8534474231ae702652a086969c9f +a4a89ca9a9b1b2bba8adbab8baaeaeb0bfbab6b8afb6c7a1c2bab6ccbcc9 +bcbbcac2ccc5bbc4cec9cdc8b7d3cdcedad9d6e1d5d4e3dae1dbdadad7d9 +282625262a2c2c2b2c2927292c2e2d2a2c2726282a28292a28292a2a2b2b +2c2a2e2f3131312f2f2f323130303031313125342d28372f36403b383838 +383434373335383d3e323037353b382c312b313e373f4239323337383830 +363c3634373538383a3d4041413f393d3e3c3c3f41403c3b383637393c3e +3b3d39423b403d443e3b3b3f42413f3f404344403f44484a49464542473f +3d3f403f42464846423f393c3a3a454242383d46474c4e4c4e464c49484d +51515152444a4c5652564f4f4a4a4d515352525355575c59655b59575658 +50584f515359615c5e615c5a5a5a5858555252585a586a72655f5b535557 +535c656a656f746762533b5f522b14231414181d30c6c9a4d60c1c1a55d0 +a5f1680ff49b4293b49c4c38444abfbd91c146fe5ba7ff265a94d1a0baa0 +73312d37192237686d6b627c626568756d6a65715a473c3f3e3a3c3e5655 +6a72706f63646b736e677085897943121f262a86aa4e636a746b38241218 +2335267d3534ddedffbc34744c1217111311255785558fffc04b44456079 +47535733266b727872dbfeffffffffff8b86ffe04c2b6cbeffffcfd5ffff +d0c5b5b9fafffceef8fafffdfffffffffffffffffffffefefefefefffffd +f9fffffffcddd2d6a9b6fcbd9be5f7fbfffefafbfffce9675a5e505eb5ff +fffdffecce8778477370602c465d67383d6c953da4ee6b354199976bfa68 +606b6b6f654e43472b8be6242a2f846e3cc2313f281322251a222832404b +4846555f696d6c6d6e72787a806f6e5e5d533a1e6a5f3e3b6fcb3ba57a30 +4b46332b2f36273a2e1553ea4b3d3329b2a7e74a444232d8d25b83d8c4d5 +e0d6dbd8e7d6e1e2efe4e4dad5e3e7e6dae0f0eceaf2eff8f9f1e5f2f1eb +f8eefaf6fbf0fff4e7f5f3fcf0fbf9fffff7fff5ffedfaf6fcfafffcfefe +f9fa211f1d1e1f2121201f1c1a1c1f21201f211f1e2022201e1e1c1d1d1d +1e1e1c1d212426262422222225242323232424241a29201b2820252d2825 +2526262424261e20272d2e221d2220282820251e202c262f322922232728 +2820262c262427252727292c2f30302e282c2d2b2b2e302f2b2a27252628 +2b2d2a2c28312a2f2c332d2a2a2d302f2d2d2e31322e2d3337393633322f +342c2a2c2d2c2f3335332f2c282b292934312f25273031363735372f3734 +33383c3c3c3d2d33353f3b3f38383334373b3d3c3c3d3f4146434f454341 +3e403b443e3f3d40443d3d403d3b3e403c3d3f3d4043413b464b3f3b3b3a +424439414b504b535649433b2d60674f4659453d373237c7c6a2d8132727 +62dbb0fb731dffa93e87a595584d5551b3ab7fb847ff65aefc1d4b6d7d27 +281b1e00122a0c13204b50504d6b51504d564c4e515f422f242726232527 +3f3f545c5a594d4e525b584f5565645626000f15105e6f081513131c1937 +5b7b878033640f0abfd7f8a5185b390718191e151d47724280f6a9343437 +5474505d562e1e5d585c58c6f2f9fffbfff8786ef9c52a034098f9f29a90 +e9d85d48354cb0edeef1fcfdfff9fefefefefefefefefefefffffefefefe +fff8f2fff8f6ecccc1c295a2e8a987d4eef4f7f7f9fdfffff267463f2c1a +305c50434d473f1e3e2a5c5a4820577c824a3c60842687cd4a16247f7d50 +d73e302a1211140e18260b69bd0013238166209d10200a000d13080f0e13 +16170700020200000203040303050d0514162a332911574929295db7258b +5c122e2b1f1a262a1629260e40ce29222422a390c525272c21c8be4365b9 +a3b7c4bac1becab9c2c3d2c7cac0bbc9cfcec1c7d9d5d3dbdbe4e2dacedb +dcd6e5dbe7e3eadff3e3d7e6e6efe3eeeef4fcebfbe9f7e3f0ecf3f1f8f5 +f7f6f1f20e0c0a0b0d0f0f0e0e0b090b0e100f0b0b0807090d0b0c0e0c0d +0d0d0e0e0d0d1012141413111111141312121213131306130d08150d131c +1916171818151516090b151e1f130c0f0d171912170e0e18141f22191213 +17181810161c161417151717191c1f20201e181c1d1b1b1e201f1b1a1715 +16181b1d1a1c18211a1f1c231b1a1a1f24232323242726221f2327272522 +211e231b1b1d1e1d20242624211e181b1919242120161922232829272921 +262322272b2b2b2c1d23252f2b2f2826211f2226282727282a2c312e3a30 +2e2a262620292427262a32292a2d29262829262828282a2e2d29363a2c25 +221c22241e263235323b3e312e2112404023152816110e0b15a5a37cb100 +000037b188d65100e388256f8e7934242b278d85579127e44084d3002450 +73303d302500071900000e3b403f3a573d3d3a443939394b36251a1b1a15 +15152d2a3d45424135363c4340353a4c51431600000503526900090c1a32 +42627e9ba79739600600a7bfeb9f15573501100c1007103a64316be29724 +252a466e57675b2b1b503d3733a7dce8ece8eae76a62f1be28013d8fe8dc +8880dcce58463447a3d7d3d4e5eaf3eef7f9f9f9f9f9f9f9f9f9fafafcfc +fcf9f1e4dfeae2ded2b0a5a77a87cd8e6cb8d1d8e1e4e7f0fafdef65473c +200f33655c50594d4118301c565c552e5f818b4e3754741679c445131c70 +6435c1302e30161211040713005fb7000b15705312940b1e0a000c11060b +0d1117190b000a0d0d0e1011121315171e131d1926281900493b1815479f +107a510828241610171c0c21190032c01d110d088e80bb1d1f1f0dafa529 +4b9c84959f959e9baa99a5a6b2a7a99f9aa8adaca2a8b9b5b3bbbac3c2ba +aebbbdb7c7bdc9c5cec3d7c7bdc9c6cdc3ced0d6e0d1e1cfdcc8d5d1d6d4 +dedbdddfdcdd2727292a2b2c2d2d28262526272929292b28272929282727 +2b2c2c2d2e2e2e2e2c2e30302f2e2d2d302f2e303333302d3036303b3630 +2f313d3a383838353538403e3533343b414541433a36383a3937353d4038 +30303437343336363336383137393935363938333337393837393b3b3938 +363433353b3f3a3a384140433d3e423f3e41444342424043413a3a404340 +474540423e3f3c3e42383f484340434245404a3b4242464a474b4a504f49 +4f4f414041454747484a5050494b444e5057585a5a54505052523e434c4c +5a504b48585e4b5c5854554c5a5d5a555656575d5654504f4f4f4f515260 +5d6269696d6e6b7a726f635f6e6b765d35684b2d21192113262c1dcc2876 +ce0f3539174428684624f88a7fc8a2ebfc34458ef4e881e376ff5babeb49 +a0faffb2cbc88a38241814273e6362695e615f6265736a655a5e62635a54 +575a595975706e67696c69736d6a70776c6d9dd8cafeff485a838b526477 +7d724f452a191b3424db6458893e6f545f5a43031b29111b394b61573927 +364651636a795153744d2c7a7b7b8cdbfdf6f4faff7fd2ffd6303051ffff +ffb7caffffe6d8b0b6fffffff8f8f2fafffffffffffffffffffffffffefe +fefefeffeff9f6fffffff3ccbad1d0d8cfb0e5fefffffffcf9fcfffffc59 +60605266c3fffffffeddd4ffffca7a77825852151213296c918ac2fff136 +618e6d62ffa95456646564563f503c57f2491a5dfff427b921282a282319 +20283137484f50677e9dc8d3d3d1cfd0d2d0cab39f7c72565726b9a55032 +63674a789517464a3d2b29222d2526281bf7a02f353073c0ee8b35472f92 +d54d5fc1deebdae7e0ccece7f4dbf5def5e3cfeaecf4e5e7ece4e5eee8e7 +f7f8f1f6f7f2f3f8f9f5f8eafff5f0fbfffff9f6fdf3fff8eff3fffffffd +fff9f6f6fcfffcfe1f1f1e1f202120201b1918191c1e1e1e201c1b1d1d1c +1b1b1f202122212121211f212323222120202322212326262320252b232e +27211e202a272727262525272b292525242623231f2527282e2e2622242d +302820202427242326262326282126282824252827222226282726282a2a +2827252322242a2e292927302f322c2d312e2d2f323130302e312f28282f +322f34322d2f2b2c292b2f252c35302d302f322d37282f2f33373438343a +393339392c2b2c3032323335393932342d3739404144443e3a3a3c3c282d +3636443a352f3d4335484642433a4548454346484b51443f40434443403f +384341465156606157655c5b4f4956535d4c2e6f6454555359464e4c33dd +3686e0264e54325f417c512eff9377b78fdfff425190e7d56fd976ff63b2 +ea408dc8b329293325000006081b2948454e49514f4d48524948444c4b48 +3f3a3d403f3f5b57554e5154515b52525a5f514d7ab5ade7fb373c574c05 +0d150d182f5b747b76722dc84d3f74264f314044390c364e383945474e3d +1d08152940585d715050643a206b646173cbfafffffff765baf8b50a072a +f6f7f38c9debc957473360ccebf0eef4f1f4fbf3fcfefefefefefefefefe +fffffefefefeedf7f1fcfff4e5bda9c0bfc7be9fd4eff6f6f3f1f3fafeff +fc544b3f23183d5b504b493a50a2eeaf615d67485a271f18225c7e70a5f6 +d01745745548f683281d1a161d1a142c1c35cd2b0957fff21099020c1213 +0e04080c0f0a0d0300000a15201d20232427292b2d25261d2c273b13a38f +3b1d4e52335e7700292f291a1d161c141e1f08db8014262664a9cc691831 +1d80c13544a4bfcdbecbc6b2cfcad5bcd8c1dbc9b5d0d4dcccced5cdced7 +d4d3e0e1dde2e2dde0e5e6e2e7d9f6e4e0ecf3f9ece9efe5f2eae3e7fef7 +fff2f5f0efeff4f7f4f60c0c0c0d0e0f0f0f0a0807080a0c0c0c0e0c0b0d +0d0c0b0b0f100f10101010100e10121211100f0f121110121515120f1117 +101b140e0e101b181717181616171616181a17150907030b161b2220150f +121d20181010141714131616131618111618181415181712121618171618 +1a1a1817151312141a1e191917201f221c1d211e1d21262526262427231c +1a1f221f23211c1e1a1b1a1c20161d26211e2221231e2819202024282529 +262c2b252b2b1b1a1b1f21212224292922241d27292e2f2f2f2925252727 +131821212f25201b282e1e30302c2d243233302d2f2e31372c2a292d2e2d +2b2b27312c30373840413c4a444036313e3b4732124e3d2825232c1d2927 +0fb91361ba00262b09361a573313e97862a57ec9e31f2d6bc5b44bb554e3 +3c86be1565adad3340492d00000000011435333b343a3838364138362d36 +3d3d342d3031302e4a433f38393c39433d3a4245363466a29dd7ec27314c +47000412193154829196938732c13d29590e422b3e4741133d543d3b4544 +47300800041930464c66555764331456443e54b1e7ececebe758aeedb007 +0525edeae47b86d8c75d4c3153b4d0d4d3dbdde4f3eff9faf9f9f9f9f9f9 +fafafafafcfcfcf9dee2dde6e6dacaa08da2a1a9a283b8d2dadbdddfe3ee +f9fdfa514a3a190e3e625955523f4e9add9e5a5e6e525d29251b1c4f6d5f +95e9c9123a633d2de17629231b121710041c0d2bc5230047efdd008e0008 +0e0e0b01060b100d130d010c1d2d4345474846484a4b4a3d37252c1f2d04 +96812a0a393d214f6c00232820100f08120c111000cd73030f0d4f99c260 +10240968a81b2986a0ab99a6a38fafaab89fb8a1baa894afb2baadafb5ad +aeb7b3b2c0c1bcc1c3bec2c7c8c4cbbddac8c6cfd1d6cac9d2c8d7cfc9cd +e4dde3d6d9d3d5d5dde0dfe1292a2b2b2a29292a2525252626282a2b2d2b +2b2b2b2827282828292a2a2a2b2b2d2f313231302f2f302f2f3031302e2c +3428283e2a2d3a38383736363636383b3034343b30374d64583f303e252a +313937383734333638373938393a3a3b3b384245423a383c3b3536373939 +39393735383b3d3d3b3b3d403b3b3c4142433e3c43403e4042403e3e3c40 +3e383b44453f4748454b3e444144483d454c4347514d3f415148493d4543 +46454247443c454b4b4b4b4a49484a4d4a4d4c57565c524f495050494549 +4d4e4c5259545f5959595b5c4e58575857504c55534c504e4c565a595758 +544b4a51606f6d6d6f686661555b524f64567d8070662c6a4523191b1a27 +1f281a3f2c38132a2f3a2834596b3833f6709fffedcfff303c56e9df7287 +73fb5db3e29fe0ffffb0edcc87482681b59c376365706a52626567746c6c +6268656d67626c706b6c6e6e686774756b706f66656f7675787cfaffff71 +645f9060798c9da87a4c2724285228ff3e2e1b3e7b7c4f4f3a002f65544c +3f45694f59ddb7393979787d3f76b38b207e9ab4d9fffff5f5ff8adce38b +353f47eaffffb0e2ffffd7d6aed0fffffbf3fffff5f7ffffffffffffffff +fffffffffefefefefeffc5f0eff2fdf3feeff2e2c4e6e2eefffcffffffff +fbfbfcfeff4e6568596fcffffbf7f3e0b8ffffe04383986c251613272262 +98d17affff3869a87861922e554d58585c5a404a494ce4700b25b8ff2c4d +3b2b29232022332a3339566e81a6b0cde0ebe9e7e3e0dfdbd0c297909582 +8224687d60236c5d4963c01c3b453f2729263023273111eee51e43485be9 +f0e136413388ff5b60b9ebe9d1d6bccee8dbe3e4e8dbf3e4d4e7e2e9e9e8 +e5e5f1fffaeee4effaf3f5f2e7fef9f3fcebfef5fffbfdfbfff1fcf3f6ff +ffffeefffaf1ffe9fffffffffefb1e1f20201f1e1c1d181818191b1d1f1f +211f1d1f1d1c1b1c1c1c1e1f1f1f1e1e2022242524232222232222232423 +211f291d1b311b1e29272726252626292b2b1b1f262e1e1b22332714162e +181e1e2426282724232628272928292a2a2b2b2831343129272b2a242526 +282828282624272a2c2c2a2a2c2f2a2a2b3031322d2b322f2d2f302e2c2c +2a2e2c262a33342e343532382b312e31352a323930343e3a2c2e3e35362a +323033322c312e262f353636363534333538333635403f453b38323a3a33 +2f333738363c433e49434340404134414246453f3b4644404648484f4a44 +464c49403d404b555254595758534447413e5342696c5c5828745e4a4d53 +4f57474a3455424e2d464e5a475275814740ff7999fddcc4ff3e485ce0d2 +688174ff65bbe197cbe2bb274e3923080170ae95264b4a55554252504a53 +4b4d4c534b534d485256515355554f4e5c5d5356544c4d575b57555bdff1 +f85e442f4a080f131a40505a6776727f29f62d1e062456552d38360d5494 +85735144573339b99018266c69703567976f1070869cc1f9fffefeff77c0 +cc7012181ec3f7ea85adebbf5040296bd7e8ece8f4f9f0eff3f8fcfefefe +fefefefefefefffffefefeffc4f0eaecf6eaf3e2e3d1b3d7d3e0feeef3f3 +f1f0f4f7f9fbfd4050432015455a4a423e3f3dbff5c926657b59241a111f +155183b85ef4e01a4d8e6049760c2e1c1813192012232527bf520022bdff +19301e1218140b09130309020a0c061a1d25151113151515181b1c1f0c20 +434b600d51654a0e57482f49a2001e2a28161b1a1f121d2500d2c503343e +4cd4d0bf1a292176f843459bceccb4baa2b4cbbec4c5cbbed9cabacdcad1 +d0cfcecedae9e6dacdd8e6dfe0ddd4ebe6e0ebdaede4f0ecf0eeffe4efe5 +e8fafcfbe2f3efe6fae0f9fafdfdf6f30c0d0e0e0d0c0b0c07070708090b +0d0f1313121312100d0e0c0c0c0b0b0b0b0b0f1113141312111112111112 +1312100e1509081e080b19171716151617191b1b080e1b251005000a0000 +001f0f120d1114181714131618171918191a1a1b1b1821242119171b1a14 +1516181818181614171a1c1c1a1a1c1f1a1a1b2021221d1b221f1d1f2222 +2222202220181a23241e232421271a201f22261b232a2125302c1d1f2f26 +271b232124231e23201821272525252423222427232625302f352b262025 +251e1a1e222321272e29342e2e2c2f30232f2f32312b27312d282d2e2d35 +332f3236332a2a2e38443f3e413b3b362a2e272439295154443e0b52371e +1f26252f222711311e28061e25311e2c4f5d2824e85e83eac8aee61b2438 +bfb0445d52dd3c8cb368a0c3b12e60492500005691780c333540402b3b3b +38423a3b353e3c4640394345403f4141393844453b3f3f35353d403d4148 +cee0ea4f392548070f182a5b747d828e8f962deb1b05000d464e2c40441d +66a696825b49532724a17f0915595260366e94640056637aa7e7f1edebef +69b4be650c131abcecdb759dd9b454492a61bfc9cdcadce5dde2edf4f9fa +f9f9f9f9f9f9fafafafafcfcfcf7b2d8d4d4dacdd5c2c4b395b8b6c3e1d3 +d9dbdfe0e4ebf2f6fb3f4d3d170d455e5049454438b3e3b71e637f5b2219 +121d0c4170a249e5d712427d482f61022f22180e13150314171eb74a0011 +a9ec0822180d110d060514040b07141b1b3439484445464443424344413e +232c4744540043593c0044351e3a97001623200c100e170a111700c6b800 +1f2537c1c5b50f1d0d60e0292a7fb0ac92957f91ab9ea7a8ab9eb8a999ac +a8afb1b0aeaebac9c5b9adb8c5bec1beb6cdc8c2cfbed1c8d6cfcecbddc2 +cfc8cddfe2e1c8d9d3cadec3dee0e6e6e1de2a2c2d2d2b2a29292a2a292a +2a2b2b2c2e2c2d2c2d2828292a2b2a2b2b292b2b31323535353433333333 +33312f2d2e2f3230302a373a422a373635343535363938302d3b2d4c97e1 +e695422d30393e423737363535383a3a3a37373b3e3a393e3d424039383f +403c3b39393c3f3d373335393d3e3c3a3a3c37393d3d40404241413d3b3d +3f3e3c3c3e42423f42494740424649503d444446433f484b424a53484544 +3f454a405041494a48524f444a4f4f504f4b494a4e51474b4c5653574d4c +4c53565251565a5a4f565a505752575b5f5b5958535e5459555e5a525654 +525c5e6061655b4f4d58525e57585b5b5c58615c555e76576a6258592772 +3b2e28191e1a1b1e1c27363c402c32653e346760472af43829eccf422b30 +2c345ab773415efb62c1f0e2fdffffadc0b8813136a2ba972861655e6363 +62686a756f6e686e646b676974736a6b656d686a73716d6f697373696a78 +8481daffff966069716f99bad7cd7e674200042a1dda4d3037edffff6751 +370011390000043b5b7f9dffff3b4b7147653b6adbc00d7ab5dffdffffff +ff5d87ff763c3954e2ffffbcd7ffffceb9abddfffcfcfffffffdf8fbfbff +ffffffffffffffffffffffffffffffffbcfffbf9ffecf1e7efe2cbe7f1f5 +fbfffbfdfffffdfcfbffff57716e667edcfffffdf8e8c9ffffff51859845 +394f695a565b8bba67d6d069745a58978d36555654595756474a4b46ce6b +2128364d2354332f2912222b32322f4379acc4deced6e2e9e8e7e2e0ddd7 +cdc8a4907b989e6a5e5e655554325627cd3f2e434025252b253023291bb2 +c359746287ffffff787c6e47ff94557de2d5d0efd6d4e6f2faebdee3dfd7 +d7d9d7d8d3d6d4dae8f4f2e7e1f8f0f3f9ebeefaf9f4fff3eef1fff1e7e9 +ffebf9e8e5f0fdfffcffd7d3fffcfaf8fffffdfe1d1f20201e1d1c1c1d1d +1e1f1f202020201d1c1d1c1a1a1b1d1e1f20202120202425282828272626 +26262624222021222523211b282b31192626252425282929231d202d1627 +5ea0a55d1e18222c2d302627262525282a2a2a27272b2e2a292e2b302e27 +262d2e2a2927272a2d2b252124282c2d2b29292b26282c2c2f2f3130302c +2a2c2d2c2a2a2c30302d3138362f2f33363d2a313133302c35382f374035 +2f2e292f342a3d2e3637353f3c31373c3a3b3a363435393c3034353f3c40 +3635353d403c3b4044443940443a413c4141433f3f413e4b4148444f4b46 +4b4c4c5147454a504a3e3c4338433a393f4147434d48414a6243554d464d +237951515548473c39363038475156454d80574a7b715b40ff472ce6c83e +37423e435fb8794866ff69c4eed8e8d5ae36393d2e001895ba971b4c4b44 +4f5150524d544b4f4f584a504c4e59584f504a524d4f585652544d575b51 +4f5a6160bffafb7f3b32250a13233e5246666c2d31400ebe381c1dcef2f7 +483c30072d5e22111138496581f7eb15366237542953baa00071a5cbe4f0 +f9fdf9426ffa5f201932c0eef391b1ebbe4e3c3e8ee0e1ecf0ebeeecf1f5 +f1fcfefefefefefefefefefefefefefefeffbbfff7f3f9e3e6dae0d3bcda +e3eaf0f6f1f0f1f1f4f6f8fbfa425a4820154e5e544940475ac9eeed3062 +792d2c455646434672a048b5ae4858404281741a352b1918141a131c211e +a54a1025394b0e3716181f080e0c080100021b31292e18160e0c0e0f0e0e +1013101d1018225d7d5347464f3f3f1d3c0daf2110262713141d141f171b +0596a63f635678f9f7f15c655932ea7c3b62c7b8b3d2b9b7c9d5ddcec1c6 +c5bdbdbfbfc0babdbdc3d1ddded3cde4dcdfe4d6dbe7e8e3f4e2dfe2f9e2 +d8dbf4dcead9d7e2eff2eef4ccc8faf3f0f1f7faf5f60c0e0f0f0d0c0b0b +0c0c0c0d0d0e0e101718151614110f0e0d0e0d0c0c0a0a0c131417171716 +151515151513110f101112100e08151821091616151415171919120e1724 +040a316a6f2e000517231d1c1417161515181a1a1a17171b1e1a191e1d22 +2019181f201c1b19191c1f1d171314181c1d1b19191b16181c1c1f1f2120 +201c1a1c1f1e1e1e2024241f2128261f1e22252c19202224211d26292028 +322721201b21261c2e1f272826302d22282d292a29252324282b2024252f +2c30262323282b27262b2f2f242b2f252c272c30353330312d3a3036303a +36303535343b3534383d362a28302732282529282c28343029324a2b4038 +3035085a2d292c1e1f1715120d14232a2f1d24572f24564d381ce6260fcc +ac21131a1418368e4d1e3fdc3f95bea7bbb49c323f402600007394730031 +342d37393a3d3b433b3d3b43393f3b3d48453c3d373d383a43413d3f3841 +433734404d4daee9ed71322b250e1e34536f69868443505813b3250406b9 +dfea4643401d45783c26213f455669dbdb08234b1d422959b593005483aa +d0e5f0f6f33b63ec51140e29b6e3e7819edbb84d3a377fc8c3cbd5d3dcdc +e1e7e8f7f9fafafafafafafafafafafafafafaf7a7e8ded9dcc4c6b8bfb2 +9bbac6ccd4dcd8dddfe3e5eaeff5fa3f543f18114d60554c484c51b8d9d9 +275e7629243c503f35335c8733a2a43f4c2f2a69600f3a341b140e12060f +15169f430614263600291012150007090a040006294648523e3f3e3f4040 +3e3b3b3b363d282426556e41393a41312e0c2d00a517081e20090a140c17 +0b0e008a982e4f4063e6ece65157481dd3642245a99891b09795a9b5bfb0 +a1a6a49c9c9e9d9e9b9e9da3b1bdbdb2acc3bbbec5b7bdc9cac5d8c6c2c5 +dfc5b7b8d3bbcbbcbcc7d4d7d3d9b0acdcd6d5d7e0e3e0e12f3031303132 +313131302f2f2f2e2c2b2d2d2d2e2c29292a333433333131303232343637 +36363536373837332f2e2f32332143bf3c3a2f413d3d3c36343534333741 +3d433b6ea0bcd8dea84c392d2d2a373a3c383332383d373735383b34323c +3a3d3c38373c3f3d3c39393e41403c393e3f403f3d3d3e403d3f443d3f3c +4141413d3c3f42424243464747464748443f3e414a4e3e4248463c3f4849 +4448483a494e4454494054463f3f3a42433d474d47494946474b50525055 +504f41464b574e50514f4e4e4e4c51585c51575256575d5a615a5362525c +4c4f4b494c4e535c5e6162655b52525b5b68636163615e55595c58676155 +616560482c92332d3a2c382287b069cf8251303a586b3e456c68402bf169 +218a862b3e313f4265a2ba2a61fc63b5ebdceef4f27b7b5c3724308b8a6c +4c5b6271675b5d6467726b6a61656e6e6d717771696768746f6a66636d74 +736d7179756f7e9367114e57526675a7c5ebd6d19e4402041534457b5214 +4cf1f8ff4160826c3508110d05474e6e82ffff4a485945604e265e870f9a +dbf6ffffffff5979c55c28297cddfffe9cffffffccc1a0f3fdffffffffff +fff8fafcf6ffffffffffffffffffffffffffffffffff87f8ecf6ffeff5f3 +ead5dee1f5ffffeffbfdfffffffdfefffb6a7b6d708fe6fff7fef8d0a97e +4b585bb983907abc88e067967f8c485273516d38688c7b6d333f52625953 +50544f3d917d2f2a222a30567124252028273138364d7fbed5e9dbe2e7ea +eceaeae7e5e1e1cdbda48acda0851a324c3b3f3fc629b07a234241291e2b +2b282027295ae37b885d48cfbfcf56636944e59d3f62dbe1d7d7cfd8e8d4 +e2ecdfeed7d6dfdce7e6dfe8e8edefeef3eff8fbf3edf9f8ecf7e3e4f1e9 +d8e1fadee4ebe9e0f0dbe8d9ecc8ece8edf3f8ddd7dae4ebeaee1f202123 +24252424242324242423211d1c1a1a1b1918181c26272828292928272527 +292a292928292a2b2a2622212225261434b02d2b1e302d2d2c2927282826 +242d2f301b3e5b6d8999782e281f1c19262a2c282322282d272725282b24 +222c282b2a26252a2d2b2a27272c2f2e2a272d2e2f2e2c2c2d2f2c2e332c +2e2b3030302c2b2e30303031343535343637332e2b2e373b2b2f3533292c +35363135352733382e3e332a41332c2c272f302a343a3234343132363b3d +393e39382a2f3440373a3b39383838363b42463b413c4040433f47433c4b +3d473a3d3b393c3f444a4142474c463d3d45424d44424443423b41464251 +4b3f4b514e3c2899474b6052543899c078de936243506d7d4f5476745240 +ff7822858028464050526eaac4366dff68b7e9d4e0d3b2281f0d070b238c +9373444b485751494b4e4a514749464c535352565c564e4c4d59544f4b48 +5258545157615b545e744d003b3d2a2b2538293f32505f351828303c2c56 +370030d2ddf324477269401a2318033b3a576dfaf6263349324e3b134270 +0898d0e5f8f7f9f83756ae49130e5bb5ecd26ed0eeb2473638aad1fbebf8 +ebefede6f0f6f3fffefefefefefefefefefefefefefefeff86f7e8f1f9e6 +e8e4dcc7cfd4eaf8fde5f3f0f0f1f4f7fcfee64e63421d19565f49473f31 +444735473993627567a66ac04d8065712a3251315121547a66561a191a1e +131017242315665a1b211f231939540d1d18110400000005163223200e10 +12121415151516181e181d1d2586766a001734252929ab0d925c05252815 +0d1a1a1712191340c761774e37baa3b13a49522fcf872749c2c7babab2bb +cbb7c5cfc2d1bdbcc5c2cfcec6cfd1d6d8d7dfdbe4e7dfd9e4e3d9e4d2d3 +e0d8c9d2eacfd5dddad1e1ccdacbdebadedae2e8edd2d0d3dce3e2e60f10 +1112131413131312121212110f101516161513100e0f1617161414141313 +1416181918181718191a1915111011141301219d1a180e201d1d1c181617 +1816162226220418242b4760501418140c07161a1c181312181d17171518 +1b14121c1a1d1c18171c1f1d1c19191e21201c191d1e1f1e1c1c1d1f1c1e +231c1e1b2020201c1b1e22222425282927262627231e1a1d262a1a1e2624 +1a1d262722262719252a2030251c32241d1d1820211b252b212323202125 +2a2c292e29281a1f24302525262423232321262d31262c272b2e36343a35 +2e3b2c342627242225282f342f303438332828302e3a322e2f2b2a22292e +2b393428343938220d7a242537292c11739951b5693816224253252b514e +2a17db5100655e051f1523233f79920645df3f88b9a3b1aa971614000000 +00626647202a2d3e3931353938403738333840403f4149433b3938443f3a +36333d43403b4047403949603c002d302225263f3e574b6c7e522f3e4d53 +304d26001bbdc8e21e4a7d7a5630392a103f334550dfe61a1e2f143a3d19 +4168007fb0c7e8f0f5f53550a03800004ca9e0c55fbfdfa84a392f97b6dc +cadad3dbdcd8e4eaeaf8fafafafafafafafafafafafafafafaf571dbcdd4 +d9c5c6c3b9a4aeb4ccdce0cadedfe0e3e6e9f0f4e34b59391717555e4849 +45353a331e332f8a596a59985fb33e6b4c56101d452645113c62554e2024 +1d1d110a0e18180d605412120e10092b4c07120d0b0000030009254c474a +393d42434543434242424639372e2b806859000c28171c1ba0028852001d +210c0512120f070c0633b952633923a795a62f3c421cba6f0d2ba3a69898 +9099ab97a7b1a2b19c9ba4a1adaca7b0b1b6b8b7bebac3c6beb8c5c4bbc6 +b4b5c4bcacb5d0b2b4bab9b0c2adbfb0c39fc3bfc6cccfb6b4b9c5cccdd1 +31313132353735342f2e2d2f32312c2a2e2e2f302f2c2d2f323231312e2d +2d2e303436373736363638373533313030313237262132353c403d3f3c38 +363634323440383f51a6cabfc6ebcb7229364137383939373332353a383f +3d383a35333b444443413f3f40423e3c3c3e3f3e40434645444241414142 +4344483c3f393f3c423e3d40444445464744444646424040413d4a494144 +4f46404246494948423b3f4c546a4b43433b48463d4143435054484d4e4c +4e52545449545659494a4b544f4b4b4f5352504f4e53554a5451534f5055 +54554f5855595953565b5c5e666a615f5d5c585354595e6d6a6c72716f63 +636a7069555b6c6e5e3d2aa23a2e2b2b2738e583fb95275b4533495f2831 +6b66465bf98370aeffb2766d768eaeb3d9ada0f8a5d2f3dce3e4f1f1fbfd +f3e7ecd2d0d8ffce5b64647161676874707065656b6b6f716e6d6c66636f +72766e6870686c767a7571798f9f7720124d2d4e95bbddf0e7c9591d2011 +1b4b60785223a3ffe0f030815f514948534b496b696d66abe04a529baf47 +3b143d794bccf8faffffff5c88cf48441da2ffc0ebabffffffd4c9b0f5ff +d8fffffff9fdfbfdfffcf8fafdfefefefefeffffffffffffffffffff7cff +ebf6fbeeeef4f0dedbdef8f2f6fffaf8feffffffffffd07784697aa6f0fe +fffdf7d67d36578e3fba818e7bb26ee3796d66bd53feff8150537a9a964b +3047535d5c524b4f4a39586d1f25494d3663da2a1e2429343f3c45526fb9 +d7eeecf0e2e1e5e8e7e7e6e5e2d9cbab81c3b2c71da7ff7d375b9c3a90c6 +203b3c362736342a2f2b3239ff5218291ec1e0ea6b224322c3eb4144c0d9 +cad6d9dbdadee1e1dbe8dce1e0dff3ebe0e7e4eff2edf5f4f7f2f5eaf2f8 +e7f2f2fefbfff5fbfff8f4f4eee8f6f2fff7ffe7fff7fffffcf5f9faffff +fdfc20202022252728272423222425241f1a1b1a1b1c1b1a1b1f25252626 +2625252323242627272626262b2a2826242323242328171222252c302d2f +2f2b292b2925232e2423246979646b9c8f470f252f27282929272322252a +282f2d282a25232b3232312f2d2d2e302c2a2a2c2d2c2e31353433313030 +30313233372b2e282e2b312d2c2f323233343532323435312f2f2e2a3736 +2e313c332d2f333636352f2829353d53352d2d2535332c3032323f433538 +3937393d3f3f323d3f423233343d383434383c3b3938373c3e333d3a3c38 +3a3f3d3e353e3a3e403a3b404042474b404041413f3d3e4345534e4d5453 +51474950564f3d4354584c3225a74a474a473844ee8cffa135695644576b +2f376c685166ff856ba2fca973707c95b2b5ddb5adffa7cff0dae3dedbd5 +e1edf9f7fee6e4e6ffc0444a4e5d4f514b534c4f4a4c504f53555251504a +4753565a524c544c4d57605d575e6f805d0b0033021143453339454f1906 +22222b4e46502e0487f9cede15644238383b483c31504d57579ac42c3c87 +9835300e337555d5f4eaf3f0eb406cb937350d88eb8bad71d7e2984c3d39 +aaeabbeee1efe5eef0f1f2f3fbfffffefefefefefefefefefefefefefeff +7affe6eff0e1dfe4e0d0ccd1ede7ecf9f3efecf1f7fafdfeb7586a3b1b26 +5f5c55453c3a230b47821d926173629749be5c544ca235e0f563343c688a +863c1f2716110d080f1d20112d4602113d3d1a41b911161c0e0b07000907 +032617161019131618191818191b1a1a1a12096b78a0008cf9652145811e +72a6001d211f142523191e1b1c1ff43b06180dafc6ce4f082c0badd52b2f +a9c1b0b9bbbdbbc1c4c6becbc2c7c6c5dbd3c7cecdd8dbd6e1e0e3dee1d6 +dfe5d4dfe1edecf1e6ecf4e9e5e6dfd9e7e3f9e7f6d9fde9f8fceeeaf2f4 +fcfef6f510101012151717161211101214130e0b14131413120e0f101515 +14141312121112141617171616161a191715131212131015040012151c20 +1d1f1e1a181917151924190e033a3a1d245a5d2400152118181919171312 +151a181f1d181a15131b242423211f1f20221e1c1c1e1f1e202325242321 +202020212223271b1e181e1b211d1c1f242425262724242625211f1f1d19 +26251d202d241e2024272726211a1b272f45271f1f1726241c2022222f33 +24272826282c2e2e222d2f322223242d262222262a292726252a2c212b28 +2a282d322f30262d292b2a24262b2b2d35372d2c2c2c2b26272c2f3c3838 +3c3b392f30373f36252b3c40341608872620211e0c16c15dd76f02362210 +263b030b4440263bd75d437cd78048414c628083aa8482de80a4c3a9b1ae +b2b0c0c9cdc8ceb3afb3da9d252f3645393c39423c3e37383b3a3e3f3d3c +3b35323e41453d373f37394249433c435a6c4c000026000c45514e575d66 +3320373645614746200072e3b8ca0a5e443c40424e3f314941403a80b822 +276c7921341a3b764dc4d7d0e3eaeb3f68ac251e0071d97da263c1ce934e +403397cd9bcec8d7cdd9dee3e9eaf0f7fafcfcfcfcfcfcfcfcfcfafaf9f9 +f9f365e4c9d2d2c1bec2beadabb1cfcbd1dfe0dedee3e9edeef3b2535d2e +17255c595247433e18002e6c118652604e8237ac4a3e318519c8e658282c +5273773729341d15100707121409274100062f2d0c35b20a090f07070800 +090b1240404540453f41434544424243413c372713696d910081ed591638 +7813689b00151a190e1e1b11140e0f12e52b0004009bb7c043001c0098be +13128a9f8d97999b9ca1a6a89eaba1a6a5a4b9b1a8afadb8bbb6c0bfc2bd +c0b5bfc5b6c1c3cfcfd4c9cfdaccc4c3beb8c8c4dfcddbbee2cedde1d1ce +d8dce6e8e3e22e2c2b2d3033302e2827272b31312b293334353635313335 +34323230302d2c2d2f31333434333333373432313232302d352e2f39342f +393334373633333535323836375665a8c4c6ccdaddd73936302e3d363031 +363836343d4c483c3d3c393e3d3c3c3d3b393b3f4140403f3c3b414a4140 +3f3f3e3d3a383d3d42373e39403b3f3c3a3d3f3f3f40403c3c42423e3e44 +453b484343455345484542474d4843475d504b58394c474b454843494c49 +4d4a484e4f4d4d4f4d494d504a4d464f51595b524e5357534e4d5556544a +58585952515c4f575459636063565c66605e615e625c5551514f5151555e +534c51535651504d6551595e63405542178749604c4a4d70faeef0edc0b5 +afb2b2bfc3d3d8d3ceb6dec0d4c4cac9c3ccccbabfb0ada794918c86837c +7b757579645e61515d5b656fd6e2596a5f646464616d6d746a6966676f6e +676d746c6e6b636a696f7e6f7474727274767879b5ffff9124579bbcd1f4 +ad70412a2216113a46e4903b4633242f4a766f777284779179538a622427 +45333e52933d5e30909062c2f8ffffff5c8fa854432d71ffffa6b9fffff1 +dbc8b3ffffffd5fffffffff7f0fbfffefef5fdfefefefefeffffffffffff +ffffffff7affe2f6fffaf1f3f1eff6fffbfbfff4f7f4f9fffffffdffac80 +8b6c87bcfbfbf8f8eed5668bffff91b8919378ae91cf737d6e9f69e4ffda +375e977391373335616068604b4447415152361f758768469c202f22273c +404c4a536dcbf4fff7ebe3e2e9ebebeae8e8e6ebc6bd97bac1d25b90ffce +1e6f9b7e5ae61e3f3f3e1e222f2a2c322f14d19f17332a5ee3d1b6253a2f +a0ff7c90d1cfd4d9d9fbe2f3e1f7dbe3edf4e1dff1e1efece0eff7f1f4ee +e6ffeeffffe9fff3f2fff0fdfbf6eef3fff9fff7f6fffffbf4fbfffcffff +f6fff6f8ffffffff1d1b1a1c202323211d1c1c2024241e181d1c1d201f1e +202424252525242423211f212324242323232a27252425252320261f202a +241f292324272926262a282527221a2d2a5d6c666c8295a1151d20202d26 +2021262826242d3c382c2d2c292e2b2a2a2b2927292d2f2e2e2d2a292f38 +302f2e2e2d2c29272c2c31262d282f2a2e2b292c2d2d2d2e2e2a2a30312d +2d33322835303032403235322f343a353034463934412336313532353238 +3b383d3935393a38383a3834363933362f383a42443b373c403c37363e3f +3d334141423d3e493940393e4846493e444c443f403e48443f3d3d3e4042 +444d40393c3e413938354d3941494f314a3d18915b7968655f7effffffff +d5cac4c7c3cdcbd9d9d6dac2e5c1d1bdc1c2c0ced3c2c6b9b6b1a39b8c84 +8688908c878d7f80908386818484d9d64250474e4f4e464e4c534f504a4b +53524b515850524f474e4d5362535555585a5a5b595a9bf7fb77001a4946 +2a431a050a172122214031c2701e2d1e151e2e544a5554695c75572f6948 +151b331f293a782c613fa1a37ed7faf3f3e43a70903e311957f3f0677ad3 +eb9b53363cb1e2f8baf8e8e9f6f0edf8f6f7fffcfffefefefefefefefefe +fefefeffffff75ffd8ebf4ebe1e0dedfe5feedf1f7eef2edecf4fcfefcf8 +8f5e6e381e346759463e353e166bfcfd709172795e906ba9576454844ec8 +f0bd1d478564852d2919220d13110c141f1c282b150463764c2479032516 +090c020a0e0b03373128181216191a191a19191a18230817135881a73974 +f2b6055680613cc600212425090f1e191a1e1900ba880422194cccb79a09 +201889f9687dbcb8babcbbddc3d6c6dcbec6d3dac7c5d9c9d6d3c9d8e0da +e0dad2efdaebecd6eee0e1f3e1eeece7dee4f3ebfce8e7f3f3ebe6edf2ee +f5f7e8f6eff2fcfffaf80d0b0a0c101312100b0a0a0e13130d0810121113 +110f111414141413141514111011131414131313191614131414120f130c +0d17140f191314171815151817151f190a1100242519203b5b7300091315 +1e161011161816141d2c281c1d1c191e1d1c1c1d1b191b1f2120201f1c1b +212a201f1e1e1d1c19171c1c21161d181f1a1e1b191c1f1f1f20201c1c22 +211d1d232117241f1f213123262320252b262226382b2633152823272326 +22282b282d292428292727292723262923261f282a323229252a2e2a2524 +2c2d2b212f2f302c303b2b30282b332f30242a332e2a2d29312a27242424 +24252831221b1f21241d1c19311d252e34142c1d006e35513f382f4bd3c9 +cbc99c918b8e8d9a9aabadabac94b997a6939898939fa08f9384817f7a78 +685d59565854555a4c4d59484e48494caaae22352d363a39333c3b423c3a +34353d3c353b433b3d3a3239383e4d3e414041403f4044468ae6ed6a0015 +4b5246602d151d2a3132384e2eb6630e1909000a204a424c4c6051694b21 +563100032916141e5a1a6852b3b181d0e4d9e3da396e86301b003cd9df58 +6bc2d98c533736a3c8d99cddd1d4e1dddce9edeff8f4fafcfcfcfcfcfcfc +fcfcfaf9f9f7f7f25fe4bdcdd4cabfbfbdbec7e1d2d6ded8dfdddce5eeee +eae88755602b1b34655644413d430b56e3e761825e6245785494424e3966 +31b0e1af10377151792b34282d151a14070a15132226100057663e187300 +190a0108030b0d0c0f4f5956473f41434646444343413f482a2f20597797 +2d69e9ac004f775931bb00171b20040b171110150e00ac78000e0538bca8 +8c00110877e14f5f9d98999a99bba4b6a8be9ea6b2b9a6a4b7a7b7b4a9b8 +c0babfb9b1ceb9caccb6d0c2c3d5c4d1cfcac4c7d2c8dbc7c8d6d9d1cbd2 +d7d3dadccddad5dae6eae7e5312f2c2b2c2e2e2f312c2c272e31282e383c +43372b2c2e30293a3a31322c2a353d3533353130302e34353432302f2f31 +343433333335373832353d39373a3636374048506dc2cacecdd2e0df7b3e +463a383b333748433c473f3f483f3841413e373e3c42363b363b37393d3f +3d3b41483a353f393d37423e443e3d383c453f3d404146464040413c4347 +464142494b47475149493d607453484946474945444c4d4a4b4e4e494646 +4a4745474744404045464843484d454b4b59464e5359525752535455575a +61685e595552584e5b59554e59534f5e47444d484b4a454649404d504459 +504f4c608173738b998d9098a7a1c1b8b2c3ffacbdbaabb49aada7a4a090 +856d6876767f717874715f60687a64685b535d6cffd1555c5c72525d6c68 +626baaaa8c525551524a3f3b393f4a555b79c7e9516e6461656f776f7b6e +6a6a6d65686e6c686a6a6c697e776a777368717471666c757b91cbffffa3 +6251a0e2c0a882613d261b0e074856dd8015332c71bf6474776a7e7a6e80 +5a66a0865cfbff5236719d645f4a3d3f1cb9f5fff14785b3633a3360a0d6 +ffa5ffffffd4c3b1fffffeffdafffffcf7f3f6fafefffefcfefdfefefefe +fefefffffffffff9f8fe5efcffc9eeedeeede8bee7d5fffefff2f9fbffff +fff8faff7193905d95d2fff4fff3edbe3c94fdffd5837b4d658a94a87664 +62ac909effe04b6382512d232c425f6a6e6251463c3d4f432f29499ab46c +45362f2934434a4e4f536aade0e7edede4e7eef0ede9e7e8ffe6d3c4a1a0 +d3b9837ef3fa296cb6a849de44363c3a2829262f3130342091e63847584a +fffffb46614770ffd0c2dadccfdacdd0c3eee5d4d2dbd7e6e5edcee5f7ed +e1e2e6fbf1f4f9f2f9eefffafff4e4f3fcfcf6fef1fafff3fffffbfbf2f4 +fffdfffef9fffffff4eaf7ffffff1e1c1b1a1c1e212226211f1a1e21181b +21232a211517191e182b2a2424201d292d242224201f201e242527252322 +2224242322222325272822252d29282d272626282019246d6c6d6c768d9a +471c34302829212536312a352d2d362d262f2f2c252c2a30242924292527 +2b2d2b292f3628232d272b25302c322c2b262a332d2b2d2e33332d2d2e29 +3034332e2f363834343e36362a4d61403536333436323139353233363833 +3030373433353532302f3231332e3338303634422f373c423b403b3c3d3e +40434a5147423e3b41374444423b443c34442f2f3a393c3b3432312c424a +3e534a4b485c7f716f8793878a8e9891b1a9a3b6f8a8bfc2bac9b5ccc8c6 +beada48f8e9e9ea5959a918a7170758a777b6a5e6473ffd85c686c846671 +80796d72a9ae9f73828588848385888786878395cfe03a534a4b50595c4f +5a4f4f5151494c52504c4e4e504d625b4e5b564b5258574e525a5c72b1fb +fa8c3a1650742c10060c1a23262221564dc86d04241d60aa455052476260 +546536407c6746eefc492457805772736c714bdbf9f0d82a6896451d173e +719ad061d8ef984a353bc3f0d5ebb4f7ecebf2f6fafcfefdfefdfffffefe +fefefefefffefefffef6f5fb56f2fbbadddadad9d4a9d4c4f2f3f4ebf8f8 +f8fdfef3f9fd556e6f2123436e524a3639320079f5fdb55e5f354d6f7285 +594b4a937684f8c4304d7146241f2a2b1c121413161a1c212a1e0c0c3589 +9d5020171e1811120a0c180f0520241314161114151411101315321a1018 +193c938f6162d8e110539b8b2bbe22161f1f1014151e1d191c087ad12334 +4638f4e8e02a452d59fabeb1c7c5b5bbacafa4d1cab9b5bebdcccbd3b6cd +ded4cacbcfe4dde0e5dee5daefe7efe3d3e2edede7efe3ecf1e4f4f7ecec +e4e6f6eff2f0edf4f6f7ece4f0fffef80f0d0b0a0c0e1011140f0e090e11 +080a0f0f160c0002040a04181a141714141d1e141214100f100e14151614 +12111113141312121315171812151d19151a14171e1c0700002c221e1f2b +49611f0126271b1b131728231c271f1f281f1821211e171e1c22161b161b +17191d1f1d1b21281a151f191d17221e241e1d181c251f1d1f2024241e1e +1f1a2125241f20272a25232d2525193c5231262724252723232b2926272a +2b262323292625272724211f2120221d22271f2524321f272c322b30292a +2b2c2e31383f35302c292f253233332c332a1f2d15121a181d1c18171913 +22281c3126262337594b4a626f63666b777090888296d7859a9b91a08aa0 +9b948875695351606068585e59533f41475d4a4e3f343a49dbae303a3d54 +353e4d4c4b538a89713e47474e4946464747484a455a9cb5183631333b44 +4b40493d3a3b3b31343a3a3638383b384d46394644393e424034373f475e +a0eaec7e3210517d42271113212a2c2b305f46b75c000f084c9733404033 +4a47394a1e2b66522edbf2400e3c6247808f8a8a5dddebdbc41c62903a0d +01235782bf4ebeda91483331add3b9d19de1d7d7dee3e9eff4f6f6f7fafa +fcfcfefefefefdfcfafaf7edecec41d7e19dbfbab9b8b38ab6aad8dde0d8 +e6e9e9efede0e5eb4a65601622456c4f493a42350064dee7a64e491b3354 +596f47372e755b6be8b8253f5f341b1e373d2d201e18100f0f1522180804 +2a798d421a12140e0b0e0b0d130c0d33473c3f423e4142423f3d3c3e5a3f +3232273c877f5557cfda0b4e948320b1160b17180e110e16141112006cc0 +12233224e1d6cf1c371e47e5a695a9a5949c8d9085b1ac9b959e9cabaab2 +94abbfb5aaabafc4bcbfc4bdc4b9cfc7d1c5b5c4d0d0cad2c8cfd2c3d5d8 +cfcfc9cbdcd5d8d6d3d8dadcd5ceddecece632312e2d2e2d2e2e2c282e30 +2f312d3735406bd3d46d3f273b313239393335392e363b38353534313233 +333333323133383a3c3c3a393b3d393b423a353733373d41638baecac2cd +ced3d5dab651442e3b3b34343b36323d443c413b323334393f4340453b3f +3b3f383a3e4244423d393c37403b3f3a44404340393d3a4c3f3f47474641 +444e49353e3c4045484a463b4440425b4c4c4d374345444446403d434244 +494d4b47474a45494a47474a48433e4e574d4d5349464d534b564f54524b +585552525355575853525253594e5753574554615f4c5e9ba9a6a9acadb4 +bcbbbbb2aca4a4aca59da07b8e987c87866c7f716771637bff42604d4d5a +55474248524e544946473f4256494ba7a9c96a5c68c6e4e681b6f4fc8ac9 +fbf6de5c575f68f6fff9cb314e353d352c2b2c323d48536bb9da48876967 +676f71686f6a686d70696c726e6c6e6e686e8b8774787774736c6f74746f +84bac7ffffc0586baaa18b867860361b140f115f72b174101eceffff6f77 +6b69757e6bcb73635c8c83d9ff66288e71787038292d2899fef847819961 +3d3c6ebda2a6c0ffffe6cbb9b0ffffc1c8e38cffedfff8f8f8fafdffffff +fefdfefefefefefefffffefefcf7faff836ff5fff7dce8d6d5bcb78ff9fe +fcfff9fffffffcfcfaf96aba7b629cf1fefbffefdcbe6192d8f3ae857f6c +827058535d737b9c8d7da696605d66493b302d336c746e6051463d404b45 +332a4251382546392f3349444c4e4e4a6194dadbe7e6e9ecf3f3f1efeeed +fff2dfc5a086c09fa45957745a68276233b4742b3c453018293134343130 +58b276746f6affffff83757962ebe2d5fbc5cbdde3d3e1cedce4f6ecdbce +e1e7d5dafff3e6f2ecede0fafae9edf1fff4fafef4f3f4f8fefeefeafff9 +fffffbfffffffefefffffbfcfffffef2f9ffffff1f1e1d1c1e202121211d +21201f201c221d2651bbbc582a13292121292925272b1c252a2724242421 +222326262625242327292b2b2a292b2d292b32292426222629222e45596c +616c6d767a8b782631242b2922222924202b322a2f29202122272d312e33 +292d292d26282c3032302b272a252e292d28322e312e272b283a2d2d3434 +332e313b36222b292d3235373328312d2f4839393a2430323131332d2a30 +2c2c31353531313432363835353836322b394238383e3431363c343f383d +3b34413e3b3b3c3e40413c3b3b3c4237403e44323d4847374b8ea4a7aeb3 +b1b5bbbbbfb7aea6a5ada6a0a580959f818c886d7b6c626d5f7bff4d7167 +6d807d716e747d79817b797d727483726dc3c0de7c6e7ad6eeed88bdfeff +92d1fffff371696d6ef8fffff168907d8483858787848283848bc3d33169 +4f4e5159564b504b4d54564d5056525052524c526f6b585c5a575450555a +5951649badf2fbaa33345e3e0c030b161c20282b2d706da46c0a13bffdf7 +5256484b5d6b56b45341396d6dceff661673526e91746e7364bfffe72e64 +7c43191544895b5a74d6ee8f41243ab9dcada6bd69f9defff9fcfeffffff +fdfcfffffefefefefefefffefdfef9f5f8fe7860e5fde2c7d1bfbea7a37d +eaf3f3fffafffffbf5f5f7f15096511e245f68594d35333e237bd2eb9161 +65576d5b3e38435c658775658c7b484a5640373030222c1c140f11171d24 +2a22120d3044291023181b1d22110c0e1709020d270e1613161717151516 +1b1f36291c1716228279833b3a58414f0b45159453091e28160318201d19 +1918429c605f5d58f3f4f966575d4bd9d2c6eab0b0bec2b0c0b1c1cbdccf +c1b4c7cdbdc2e7dacfdbd5d6cce6e6d5d9ddeee1e9ede3e2e5e9efefe1dc +f5eaf7f0ecf1f2f1f0f0f8f7eff0f3f6f6ecf2fffefb100f0d0c0e0f1010 +0f0b10100f100c0f050b369fa03b0f00110a0d191a1a1e200e151a171414 +1411121315151514131317191b1b1a191b1d191b2219121410161e100c12 +1822141d1e2831494504201a1e1b14141b16121d241c211b121314191f23 +20251b1f1b1f181a1e2224221d191c17201b1f1a24202320191d1a2c1f1f +2626241f222c27131c1a1e2326282519221c1e3728282b1521232222241e +1c221f2025292824242724282a27272a28221c283127272d2320262c242f +282d2b242f2c29292a2c2e2f2a29292a30252e2b33212b342f1a2b6b7e7f +858a8c939c999a8f877e7d857e757c576b755863604555463c473a55dd23 +45383e4f4b3f3b3f4741483e3e3f37394a3a3a9292b3544654b2cccc669b +dbe36dace1dfca48434a52e0e5e1c02f523d4845454644424343424c8ea7 +0f4d36383c44453b3e39383e3f35383e3c3a3c3c373d5a5643474845403a +3e413e374f879ce1ed9c2a2d5e431d1511171f23292f397a6794590000ac +eae440433433414b37953a28235856baf65c00583664a49895957ecaf8d3 +1a54743b0d042e7145435dc0d67e412630a4bc8a8aa653e4c9ebe7edf0f4 +f7f8f9f8fafafcfcfefefefcfdfaf8f6f0e9ecee6449cce1c5a8b29f9e88 +8865d5e1e2efecf3f1ebe3e3e4de438a4313256267574f3a3a3f1869bcd6 +81514e3c52402723344a4d6a5b4d7d703c3c46312e323f353d2c20160f0d +1018211c0d05223316001d1312121d0e0c0c1003061e45353e3c43454544 +434344465c4d3e3223227566743032543d4b073d0a854400142215001118 +15120f0e358e524e4944dfe1e8564c513bc3b9a9cc91929fa392a191a3ac +bbafa093a6ac9ba0c8bbafbbb5b6abc5c5b4b8bccec1cbcfc5c4c8ccd2d2 +c6bfd6c9d8d1cfd6d7d7d6d6deddd5d6d9dbdfd6dfecece9363432323130 +2f2e332d39383436383f4b2c84dccddad36c2627393f373d463b413f3532 +383b38373536353839393838373c3f3f3c3a3a3c32363f3a383e404c504f +a6dcd0d8e9d3c4d4d9e0df74393742403d3d3c3b3f46463941443b353440 +3d3e3a3d383d3b3d3e454a4b4c4a4137403c423f3f3d444044433a443a4e +3d40594e4541495b62586d594f4b4347515154464b6955484b4a484b4a4b +4c474347454a5154504b4b504750524d4c525049464d52494c534b4d4c4c +515f51555a4a5d585353565957545355585a615359525453615e644c8ad5 +8173695e514c4f504d4c77906c7a4b8e82bd9b425a515ae4e762d3fb5666 +ee354f3a42465434333c3b353a3633373a453d4d40e3f2eae134bbfffffd +81f8fffff574f7f9fcebfffff9f6ffeb4c2d293636322d2a2c2e38434e5f +bded58966466656e6d6d6b706e776f686a6f6c6a6d6e6d6674746b6f706f +6d717a78736d7dab5711176a374973666c73796939180f0f102f2a46390e +17eccfff675d4a4435564b574c41466d71dffc7942805567622641222aaa +e644b4b25d4a397affffbae4fffff0d1d8e4fffffefdbc7595fff0f4fdff +fefefbfdfffffffdfdfdfefefefefffffffffbf6faffa36d658ee2ffffff +ad688fadfff3fffdfffffff9f5fcfede74ef7169aefff3f4f0e6d0b77557 +484a4f61675a532c4975595f5754676c585c665e594c3f2a2a32606f726d +5c4b44464440381f252b192a5c96173d4441554d4f4e6d91eae0e8e1e5e7 +ebeceae9eaebeae7e1c6a77fbba6c51d4897544233ef4689bf2538443f28 +2f3132352b3a2db38a91858393c0c26a89805b67b3f4ffead7e7e8d3ffd9 +dfe0f7ece3e5f7eed1cce4e1dcfefff7c8d5e9e8e4d7dae2f0f7d0ffdfe8 +e8dfffcaedeffff8fefffff2f2ecedf3f4f3efe4fff6f2f9fbfe23212121 +21232223262029282323222932126ac2b3c2bc581113252d242b34292f2c +221f272a27262526282b2c2c2b2825292e2e2b292a2c21252e27252b2d35 +3325668a7073887467777c8999431e29322e2b2b2a292d3434272f322923 +222e2b2c282b262b292b2c3338393a382f252e2a302d2d2b322e32312832 +283c2b2e463b322e36484f455a463c3830343e3e41333856423538373538 +3738393430342f343b3e3a35383d343d3f3a393f3d3630383d34373e3638 +35353a483a3e433346413c3c3f42403d3c3e41434a3c423b3f3c48454c3c +80d68f8b8a837570706b5e5780956e7b4c8f88c4a44e655c63edf06bdcff +6377ff52756977808f6f6e75716e74727276767e6f7663fffffff644c3ff +fff67ef7fffff06ff4fbfff3fffff4f4ffff877b7e8b81808284807c7c7d +8383cce94178484b4f5753504e53555e554e505552505253524b59595054 +55545155605e584f5d8c3d000759171a2f100203101d1f21292e273b253c +380b07d9c2f75042302d264b3f4836262b5461d9ff7b326537628e6f9574 +6bd0e73199953c250f49dfb65d8cd7eb7942496fe7ede7eaa15b87fcf5fc +fffffffffffffcfcfefffffffefefefefffefefdf9f4f8ff985e557dcdf5 +fbee96537b9df7e7fef9fffffff6eef4f7d35fcb3d19306a5d5137313749 +4144414235444e46431d3a644549454256574244504b49443c2d3326271c +171514141c26221f1a091926141d3d740022180b150d180d1113421e1e14 +18181614151a2227242420181d1b8283a4002b7b3b2917d226689b041825 +23101e20191810241aa0737a707284aea74a69644455a4e9fed7bec8c5b0 +e4bcc6c7ddcfc9cbddd4b9b4cbc8c5e7ebe0b4c1d6d5d1c4c7cfdfe6c1f3 +d0d9dad1f1bce0e2f6eaf0f1f2e6e6e0e1e7e8e9e5dafef0ebf2f4f71412 +111111121111150f1918131414141300459d909e9a3700000d19151d2a1f +211d1310171a17161516171a1b1b1a18171b1e1e1b191a1c11151c16141a +1c25250d3a4e2623392419292e425e1a091c23201d1d1c1b1f2626192124 +1b1514201f201c1f1a1f1d1f20272c2d2e2c2319201c221f1f1d24202423 +1a241a2e1d20382d231f25373e3449352b272125302f3222274531242928 +262928292a25222622272e312d282a2f262f312c2b312f2722272c23262d +252725252a382a2e3323342f2a2a2d302e2b2a2c2f31382a30292e2c342f +321b5caa5e57554f45424542322c556c465122635c9877203a3138c2c540 +b1d9374ad62242333f465737363e3d3b413c3d3f424b3e4a3bd9e8ded729 +acefefe66be3ececdc5be1e6eddcefede1dfe8dd513d3d4a484647474440 +41403f4395bc1f5c30363a4542403c413f483e37393e3b393d3e3d364444 +3b3f403f3c3f49453d3548782c0000490c102c130e11151f202026313749 +2230260000c8afe23e311f1b113529312113163e48c3f66e1b4a1f5ca79a +c19c89dde1208887331d033acba34c78bbd473444b66cdcbc5ca86426de3 +dee7f1f5f7f8faf9fafafafafafafcfcfcfcfdfaf7f4ede7e9ed84473c63 +b2d6ddd077366286e6d9f1edf3f4f0e5dce1e4bf4ebd3012336f5e523c36 +3c4836352f2f2632382e2a0627543a3c312a3c42343a453d3a373732443c +382c2621170f121b191612000912000c387200191509150b1107141f5c41 +443b434444434144474b47463f312a1b716f93002377372513ca19578b00 +0d20220e1718121207190c91656a5d5e6f9a943b5e5834418dcde1b79fab +a792c59ca7a8bcafa8aabcb39792aca9a5c7cbc093a0b5b4b0a3a7afc1c8 +a2d4b3bcbdb4d69fc0c2d9cdd5d6d8cecec8c9cfd0cecac1e7dad8dfe2e5 +343231302f2e2b2a2e2934322f383a3e3b61aebc9999b9d9cb6e2c2b3839 +37373436373c3d34334131302f3134363536323637383635353632333a37 +34393944428dc0c8cfdfdbcbbfc9d8e0d8ab323e40393a3c393b41443a32 +3f453e36323a3b393536373b3c3d3943484442434039433f42413e3d413d +464444453e473c4040384253565154585045494b3e3c46494a4a576c564c +4a4c444848484a474448464b50504b464548424648454647443e584a4648 +4f4d444f4b50535c54545a4e504e4b4b50555451505355555b4d524a4d50 +5e4b52449fbf5b483c322c2d32383bb8f6e5ffff80ffffa8fc7577867edd +dd62afd42579ed223d383a2b3f2c2e31333135353231333c424e4887f4f7 +f679ffffff87d1fff8feffa6acfffbfefef6fffffbb3202d342e3a393430 +30333c465255b5ec50765f766068656c6670696d6a66696d69696e6e7a6b +6a6e6d707270707578737575778e582d1f4b184c71506a6e776b4022130f +1740193f48224bffadef445065615649504698606e794554834251616765 +45232a1d3a6831bee965362f41cfffdcd8ffffe7dfd4abc5fce9a54b64b5 +9af1f4f5fcfffefefcfdfffffffdfdfdfefefefefefffffffdf7f9ffa27b +9e6560625f3d67a3b79ffffffefffffbf7f7fafbffae8af86a6ecefffffc +faecbf947763585a686e655b55354a6054586f636273656d61635850371d +2733536e7a7e6d5a525053423d271e4d5e3c57d825413e45504e54516278 +cfd3e3e9e2e2e7e6e6e5e7e9e1e1e6d1af84a7acb84ab1ffe741458b6955 +e3303a3e3a272b2d323a2c3321ce9b23232562d8e89b2f3c3855f7f4fcfd +cae6d5bcd6c9dae1dfd6c8e7e0d8c1dae7f9e9e9e1f0e2ffcce6f7f5f2ff +ffffddfbd3fef2d9fee7e2e5f1d7e6e9f8ecf8f1eef5f9f8f3e1fffafbff +ffff212120202221201f211c24211c222323214693a17d80a2c3b55a1717 +23242424212324292c232230212022242729282620232627252425262120 +27221f2222271957746c6876786e646e79898c7310292d27282a27292f32 +28202d332c2420282927232425292a2b2731363230312e27312d302f2c2b +2f2b343232332c352a2e2d252f40433e41453d3236382b29333637374459 +43393739313535353734313530353a3a353032352f3335323334312b4235 +31333a382f3a34393c453d3d433739373434393e3d3a393c3e3e44363b33 +363943333d369ccb76716f6d67676a6658c9ffecffff7dffffafff828795 +8beaee73c0e73b93ff4c72757b7185717272716f7477767371746f72629b +ffffff82fffdf77dcdfffcffff9ea6fffffffbeffeffffd3678990848382 +85857f7c7d82897ec6e83957415b49514b514b555357514c4e534e4e5353 +5f504f5352555755555b60595a55546d3d1a123b00243604100a0f1b2023 +2b2c2c471035491f35f4a2e9333d52514c434a3d864a5767395289434147 +4e6474707e6b76882da7cd47180f1da0ba897bbfe2834a392f72d3d7963a +4fa392f3fffffffffffffffefbfbfefffffffefefefffdfefffffbf5f8fc +976c8e534b4a47254f8da590f5f9f7fefffdf9f4f1eefca278d42b0f486b +6757423f383b4b53515352544c46462c445745455f54536252594a4f4a48 +3624342e24211c19100a151e261b1c11174c5c343eb90922110e100d190c +06002d171b1c19171413141b252a1d1b1e1a18166381942a93e9cb28296f +4934c00c181d1c0d1a1c171b111d0fbb84090e1456c8cd7b0f1e2144ebeb +eeedb1c7b299b5acc1c8c5b9aecdc6bea9c2cee0d2d2cad9cef2b9d3e4e2 +dfecf4f5ceecc4efe4cbf0d9d4d8e3c9d8ddece0ece5e2ebefeee9dafaf4 +f4fcfffa1211101011100e0d100b14110d14150e001b68765557799c9039 +00000e1315161214151a1c13122011101113161817161215161715141516 +111116110e121215033540291b23271e151f293c4e4400181e191a1c191b +21241a121f251e16121a1d1b1718191d1e1f1b252a262425221b231f2221 +1e1d211d262424251e271c201f172031322d30342c2125271c1a25272826 +33483228282a222626262825232723282d2d28232427212527242526231c +3424202229271e2924292c352d2d332727252222272c2b28272a2c2c3224 +29212627301b2013739b3f373433313439382a9dd7c2dada54d8d783da56 +5a6a60bfc24794ba0d64df1a3c3c41354938393c4040454745434247484e +4580eeefef71f4f4f174c2f3edf0f3939af4f1f6f2e5f1ede9ac2f484f47 +4c4b4d4c46444546453c90bb173b2946373f3a4038423c403b35393c3939 +3e3e4a3b3a3e3d404240404448403f3c405a2c09022b001830041916161e +23252b323f5a132b390e28e68ed1212e444440353c2e783c4753213b7b35 +2a2e3860929eac9290932497c13d10040f8eaa7769accb744e412d62b5b3 +751c348b7bddeaf0f6f8f9f9f8f8f9f9fafafafafcfcfcfaf9f9f8f4eee6 +e6e98357773b302e2b0933758f7de7eeedf5f6f0ebe3e0dbe88c64c4220d +4f736b5b4a453c374244414144433833331b384e3e3e4f3f3c4e444e4244 +3d3d322a474536312e291a0d1217211415060537472137b6051d0e0b1009 +13070707453840454342414041434a4c413e42362919566e841d8be5c824 +25643a21ad000c161a0c13141016081203ad7600000040b1ba6c04141330 +d3ced1cc93aa947b968ca2a9a4998daca59d87a0afc1b2b2aab9add198b2 +c3c1bfccd6d7afcda7d2c7aed5beb7b8c6aebdc3d4c8d4cdccd2d6d5d0c0 +e4dee1e9ede82f2e2d2d2b292726282a33313642414161e1daaaa79798a0 +b6d4b76132363e3b3b362f31343331343634303134373839343432333637 +37353d39403e3f413c4768d2cbbfddf5d8cdd2c8c7e2d6e3653f4139393a +383839373a3845453e3d3634413d3b393d3f41403b40413f4349463c413d +3e413c3f413e44414d42433d3e42413e4c5e5a4e4d51494952544a454541 +574f4f574647434544494744474645484346484846454342524d4e545652 +4d4d5b515051534a3e484d58514f554f51514d4f4f4e5055575653555552 +574d554e65505e5d5c44b5b3593f2d261f2023291ec78a71effffaf1c8a4 +fcb6e3d2a4c6e85ea5f54272e32033342b1c2528292a2b2d2e3235373d44 +4a4876adfefff7fffff8c9a8fcf4e6f2faff73ebf7f9a270fff8f9493829 +243b424239353639424c4c50b3e954646d826a6a646d67726a686a676b6e +6a6c7070716e7078756f7172786c696f7c797b98beffffa4273d61536266 +736d482c1d160b472e4b46525e3f35364857505a234148344d6063666162 +636573726e7040203231321280d17b2c2ea9c5e0ffb5ffffffd8d4bea38e +2924306d829c8efff6f6f7f7fbfefffffffffefdfdfdfdfdfefeffffffff +fcf8faffed86764f7e4a57635b6588b7fffffefffff8f6f5feffff81c8ea +6683e4fffffbf3dfaf826b5e5b544f5f7968422b3a494b57746757616367 +6064544c3323272853707c88887e79695f53432e12468d6b126f2c314750 +495a545c6b86cce0e6f3e7e7ebececececeff1e9faedc4a69cc0986a6eff +ff1e71bcb55aec503a403c27212b313b382d1da2f93a44393ccbe9e1304c +4136fff6ffffc2e2e9e7e6e2e5dbeae6d9f7e9e4dffddffcf6f1eeffedff +e4e9f3fdf4e8e4eaffeeeffff0fff2fff2faffe9fafafffcfefffffffdf7 +fff9fdeedbd1d4da1e1d1c1d1e1e1c1b1b1a221e1f28252545c4bd8f8c7c +80889ebd9f4a1a20282526201c1e2120202326242324272a2d2c22212021 +252626242a262b2725272022338e775e748d7570776d6c8b8ba53a212c27 +272826262725282633332c2b24222f2b29272b2d2f2e292e2f2d3137342a +2f2b2c2f2a2d2f2c322f3b30312b2c302e2b394b473b3b3f37373f413732 +322e443c3c44333430323136343134333235303335353332302f3f3a383e +403c3737453c3b3c3e35293336413a383e383a3a36383837393e403f3c3e +3e3b40363e374e3943444737b6c37c736d6d6a6a6b6442dc9678edfef2ec +c6a9ffc5f4e3b3d6fa70b7ff598fff506e79756a7373706d6a6a6d747774 +74726b6183b4fffff9fffff8c0a1fffff7fffeff73eeffffa36cfcfaff6f +85887e8b8280838481808389857ac6e43b424d6553554d534e595452514e +5255515357575855575f5c5658595f5451575e595675a3fbf799141d3112 +13090a131a212a2c1c4d233e424a41232f363d473f4d1c3c432b3c4c5159 +5b606260615c5c746d647770602674b45c0e1596b4c0c362cae582433839 +535e050a1f5d708a81fffafffffffffdfcfbfcfdfffffffffffffffffeff +fffffaf7f8fae57b6a3f6a35424e455379abfbfffefffffaf8f2f1f0fb6f +b7c5181558696b543f3e423f4950534d3d4a5f5236273a473f48685f4c54 +53554c524643332c36282e27140e0a0715171a1d1c160944886200571010 +17160916100e08082a2419221c1c1717191f282b27182321181e41856e4a +50f7e304559e9539c92d191f1d0d101a141c1d170b90df202f2830bccec0 +0e2b2a25f4ecf6f2a9c3c4c2c4c5cec4d0c9bfddcfcac7e5c6e3dfdad7e8 +d9efd1d6e0eae4d8d3d9f0dfe0f4e2fce4f5e7eff6deeef0fff1f3f8f7fd +f5eff8f1f7e9d6ccced40e0d0c0d0d0c0a090a0a120f111b191020989162 +5d4d525a72947b2a0008111015120d0f121110131614121316191b1b1413 +1213151616141b171a171618120f14613b1723382220281e1b3e48721709 +1b19191a181819171a1825251e1d1614231f1d1b1f2123221d222321252b +281e211d1e211c1f211e24212d22231d1e22201d2a3c362a272b23232e30 +2823241f352b2b332223212322272522252424272225272725242221312c +2b31332f2a29372b2a2b2d24182226312a282e282a2a26282827292e302f +2c2e2e2b30262e274029322e2c158c92443530313135393616b16e4fc7d8 +cdc49f80dc9acab98cafd0468ddf2d61da1e38403a2e373a38383b3e4046 +49484a4d4c446fa2f3f3ecf6f8f0bb99f4f0e5eef0f467e3f7f89d63eee4 +ea464d4840504e4f504d49484b4d41388fba1c29385341443b423a453d3b +3b383e3f3d3d4141423f414946404243493c393d4440436292eae787050e +270e1913111c2429303736652b38373d3917191e2b3a374716383f263543 +43464347504d494448738e93a18f6f2566a4590e0e87a0a9b450b1d07c47 +433e484800000343587470efebf4f8fafaf9f9f9f9faf9f9f9f9fafafafa +faf8f6f3ebe3e3e6d2675428511a27332d3b649beff6f6faf8efebe3e0de +ea5ba3b514186174735c4a443f363f45463d2f3950442a1e38483f455c4c +3843464b45483b3a31334b403f382b27201a1f1b1d1b170c002f74510053 +0c0b151409130d0c0b144245404c4749474546484e4f4d3f4c46302a3c77 +5e3d48f3e20351948626b3190a161b0c09120e17160c0082d2111e1418a5 +bbb104221c13ded1d8d18ba6a7a5a8a7aea4afa99ebcaea9a5c3a7c4bfba +b7c8b8ceb0b5bfc9c3b7b5bbd1c0c3d7c5dfc9dac9d1dac2d4d7e6dbdde2 +e3e6ded8e1dae1d5c3b9bec4302e2d2c2b2b2a292c3238383f434254bbd3 +c4aea099a19aa5afc2d4ba662b2e45403d3b3d48493d3b39353435383a3c +3c3a37383c3e3c39444147484a4c445181d3c0ccdae5d4d4cdbfb9dfd0db +a13c423b3a3b3c3b38363c3d47413e47413b413c3d383e3b3e3c423f3d41 +4e544b3d3c3a39413b434342403c4f3e45384045403d3f403f44463f5859 +4f403d42403a6d4f3f454148434d484d4a454646454741424344474a4946 +4c44464f514b484c4d56594b474d4a524d594f4959525458585c5d575458 +5b5c575957535a545f595a49535a523cc1a1472d1e1c1a1c222723dbbed0 +fbbcd6fae1d9eb2f39286cecef3e99b72890e90f352f24262429272d3436 +3133373b494c3bbbfefffffffffff9fd7ef5fcec7abefcf5e073f8f9ffd6 +fffca158532e373343413532363a424c4651b9ea5e6d7b797068666a6971 +726d67686d6f6b6c706f6e6d666e706c706f6f6c6d6c7679798db9ffffca +5f5057485660746e4a2d1e180c3e203d5656545f5450576a64442b394849 +4566615d6f5e60766b6a606c732d3c3b18a3924e3025aaffec9ed9fffff6 +ced0a3b950785566634666a3f4fff9fef8f7fbfefffffffffdfdfdfdfdfd +fefefffffffbf7f7fbffffffca946c989e5d4090e4fffffef4fdfdfefbf3 +fbffff7cffcb63a7effffff1eac9946d554d5555625c6e5937302f2d555c +534d59625e5d5a6155492e28242440677ea0b9beb491756b433117257582 +323d2f404a504c4f506680a8d9f5ebf2ebeaeff2f1f0edeff2e7fef4d0bb +97cda8a87ee6ff41668baa57cc83314247361f2e2f303c332352ff624650 +39fbffff74524744f6f3feffe3d4e0dedfdbecede4ebecf3f4eaece8eff0 +e3e3f2fde7ecf1e7e4e7f0f2f7f9f8f4fff7ddfff3f7e8f8fff8fffafdf0 +fefff9fffaf4fff9ffffffffffff1f1e1d1f20201f1e1f22272225272435 +9db6a892847f87808b97aabda24f12162e2a2a282a35382c2b292827282b +2f2f2a2725262b2d2b28312b302e2e2f272742826468717d71787266608c +859a6e18292928292a2926242a2b352f2c352f292f2a2b262c292c2a302d +2b2f3c42392b2a28272f293131302e2a3d2c33262e332d2a2c2d2c31342d +46473c2d2a2f2d275a3c2c322e35303a353a3732333332342e2f30313437 +3633393130393b353236374144363238353d36423832423b3d4141454640 +3d4144454042403c433d4842443239413d2fc2b36e656267696a6b664efa +d3dcfdb8d0f6e3e1fa44504185ffff4ea9c93dacff4071756f7571746b70 +7378737779787e7656cbfffefff9f9fef6fa75f1fffd92d4fff6e279ffff +ffd2ffffb281a18a8b7c7d7c82858383878c837ecbe54549585a56534f53 +505b5e59514f54565253575655544d5557535756565657545857536a9efb +fec352362f110f0a10171819252b244c1a324f4c39454c4b4b5c5539283a +494438534d4d645655675a5953719b65706536ab802d0d0797f9da7890a9 +df95443a255b215e394c4f365692e4f8f6fffffffffefcfdfeffffffffff +fffffffffffffcf9f6f6f9fbfeffbf885c878a492e80d9f9fffff6fffcfe +fdf0ebf6ec65f9a60b2b5e6d5e473a343b3d3d434d4d55495340292e3432 +4e504a475259504c474e47423032342821200c0f181f2a1c18241113071d +6a75252c161d1a160c09061017253737181b1c1c1a1a1e23292b25101f1d +18272f897a8860c9eb27496d8b37a85f0d20251a101d120f211c1340ec46 +313f2fecf9f64f312f33ebecf5fecab5bbb9bdbed5d6caced2d9dad0d4d0 +d6d7ccccdbe6d3d8ded4d1d4e0e2e6e8e9e5f0e8cffee5e9ddedf5ecfbf0 +f2e5f3f8f1f7f2ecfaf3fbfefbfafffe0f0e0d0e0e0e0d0c0e121714181b +1921798a7963544e544f5a697e947e2d00001c1c1b191b26281c1b191716 +171a1d1e1c1917181b1d1b18221d201f20211911194d231d20281e252116 +104042624300151b1a1b1c1b18161c1d27211e27211b231e1f1a201d201e +24211f2330362d1f1c1a19211b232322201c2f1e251820251f1c1d1e1b20 +201932332b1c1b201f184b2b1b211d24212b262b28232424242620212223 +262928252b23232c2e282528293033252127242c26322822322b2d313135 +36302d3134353032302c332d38323624282b220d98813728252c32383d39 +21ceaab4d893acd1bcb8d11926195edbdb2984a31683e3113e3f373c393c +383d444845464b4c545037b1efeff3edeff5edf16ce6f3ea7abdf1e6d46b +f6f6f8c9efec9257674b4f444b4c4e4d4b4b4e4f3e3d97bb263145484742 +3d413c4445413c3b40423e3f43403f3e373f413d4140403e3f3a3e3e4057 +8deaedb04125230a1313181f23252f3a3e6624304742303837353b514e35 +23354440324c423d4e3f4352403f4274be94957d38a06a1e130f91eac665 +819bc9854443295911472335371d3f80d5eeedf8fafcfcfcfcfafbfaf9f7 +f9f9fafafafafaf8f3ece4e1e2e5ebecab70436d71301669c5e9f4f7f1fa +f7f4f0e1dbe5db53e2960a356b7b6a52453a353131394240453a4839262f +3a38555041374048474441473e3a2f3b4b41313026303a3f432e2328100b +000a58651c25121918150c0705111c334f594147484a4a4b4b4e4f514c3a +4b4634372e7e6b7956c5ea264563792290490017241909150c0a1a140632 +e138202b16d5e4e7472a2321d5d0d6ddac989e9ca1a0b5b6a9aeb1b8b9af +b2aeb7b8acacbbc6b2b7bdb3b0b3bfc1c8cacac6d3cbb2e1cacebfcfd9d2 +e2d7dccfdfe4dce2ddd5e3dde7eae8e7efee3231302f2f302f2f2d313435 +3d394c84cbafa298a4ac9da89aa4a0a0c7dfaf643128384333333c383434 +302f2e2f30333f3e3c3d3f3e3c3945404442403e37458cdabec8dfd1d0ec +d6c9d6ffdccfd064363735333a38333934323c393a443e3638363b353d37 +3b373d38363c45473f363c3b38423b464443403b483d423a3e4440434749 +4a504e4146605b4548504a434f3e3e4c4a4e3e46444a4843444442433c3d +3d3d404546434f4d4e51514c4d52465052434553555a545755505b545c55 +575c5a524f5256555053524e55505b524d5553575347d0994f382b272320 +2326233d93a564672c584563412644392f333b356f723592d9213b2e2932 +2d2e2f33303c38383637423f5df9fcff9449f6ffff9fcbfffece3e64f1ff +ff8fb5f9fffff0f5555e36344041473f312d32363a414f4bb1dd4e6d7275 +686067666669716965666c6d67676a68767666696f6c726f6871746d7378 +7886aae6ffdd57506c4c515b6c6a4a2f20150c24253d4252545f52625953 +6146212f3733526071666d726f7674726d6089364b1e90c58c3c27abffff +ffb2feffffc7b0c1ffffbd78e9a6602fb7fffffffffefffffdfbfdfdfdfd +fbfbfdfdfdfdfefefffcfaf6f6f8fbfcfeffffff96ff93575bacfffffbfc +f8fcfffffaf9f9ffe0b0ff946bcafffffef5e0c28764534e4e504c474a42 +352f22212840444752504d515057574a28261b2836739ecaeaf2e7b8a488 +4e3e382f443e282e3d2f3a4a5b55646e809cc1e8ebf3eaeaf0f5f3f0eaea +e9e7fce6cbaf87b99aa8452040535923643780b42c424433242e342e3335 +2d25a28194876bb6ffff8f929c7a98b0f5ffe6cfedede9d8ddf0ecf2e8e4 +e4e5f0e3e7ecf6eef1edebf7efecf2eaf7f3f7eefeefedfff3e9f5fcf7ff +f5f4fcf3f9fafffff0fafbf7fff7f6fffefbffff22212022242524242021 +211f231d2c63ad90837c8890828f818a8688afc8954b1b12222d20202b27 +24242322212225262d2b2a2b2d2c2b28322b2d28231e161642805d647a6d +6d8d7b7283b4928e96381b2523212826212722202a2728322c2426242923 +2b2529252b26242a33352d242a292630293432312e29362b30282c322d2d +3133353b392c314b4630323a342d3c2b2b39373b2b333137353031312f30 +2a2b2b2b2e3333303937383b3934353b303b3d2e303e40453d403e39443d +453e4045433b383b3f3e393c3b373e39443c3a3f3c3e3d38cea9716b6a6e +69656463586bb6be706d2d5c50755c47696055534a3f767c43a6f94c7371 +6f7b73726d7173837e7f7b75786877fffeff8b40ecfbfe96befeffde5779 +f6ffff92befdfdfff8ff69837b8687807d7d868b8a8785878d79c3d83349 +4f564e4b525150535d554f4f5556505154526060505359565c59525b5e55 +55544f618dd3fed84f3e4b1c1310171d1a19222a30442e393d48444e4351 +463f503d24373f35484c564c585d565d60646668a95f6a349cc07217038e +fbf3f373b0cc8945345beeeea466d7914a1aa8fdfafcf7f2fcfdffffffff +fffffffffffffffffffffefcf8f4f3f6f9faf9fff7fe87f082474da0ffff +fdfffefffefffaf6e8f8c395fd6d08436b71534934373e44414545484335 +2d26272e2c2925373f434c4940423d44494329302d2e1b2a1c1f242a341f +292c1015201c2d2b2025250c0a101b0e120f0e121a260f11151616181e23 +28281c101b0e10181f736c89270324393c0545175c9008202217151d170c +181e1d1387657f7864aaebe56a7184698da9ecf7cdb0c8c8c6bbc6dcd2d5 +cecacacbd8cbced3dfd7dad6d7e3dcd9dfd7e7e3e6ddefe0dff6e5dbe7ee +ecf6ebeaf2e8f1f2f9f8e8f2f5f1fff1f1fbf9f6fcfd1211101112131212 +0f111211161121508b64554d585e4d594b57555a839e702c0604141f1111 +1b1714141211101113151f1d1c1d1f1e1b18211a1d191511070013421919 +2a1818392822356a51546411061715131a18131914121c191a241e161a18 +1d171f191d191f1a181e272921181c1b18221b262423201b281d221a1e24 +1f202325242a26191e38351f242c271f2d1a1a28262a1c24222826212222 +21221c1d1d1d202525222c2a2b2e2d28292d222a2c1d1f2d2f342d302e29 +342d352e3035332b282b2f2e292c2b272e29342e2c322c2a2519a77a3e32 +313637383c3a2c3d8c964c490b37284b311c3e342c2c291d555a2081d221 +443e3b4641413e423e4b48474542473e54eae8ec7c31e0eeee87aeedecc3 +375adfeced7da9ecf1f1e1e7465842484d4b4c4a4d4f4e4c4a484a388fb0 +16333c443f3a3f3e3b3c443d3a3d43443e3c3f3d4b4b393c423f45423b43 +463b3b3c3d4f7dc2ecc43c2a3c1214151a2326262f3b4a593536373f373e +303f38344634192a322a3e434d3f474a4247454a546bcf8b894192aa5707 +11a0f8e8ea6aa4c386453456e1dc9052c37e350595ececf4f4f2fcfefefc +fcfcfaf9f9f7f9f9fafafafaf9f2ece5e0e1e0e1e6ede2e870d6682d338a +ecf1f2fafafdfaf8eee7d8e9b382e65e0b5179816357403c3535353c3c3d +34272523273438362e3a39373c39383b393e403b2b3a45462a3d3e4b5558 +5b3d3e371311140d1f1d151c2108080f1b0c1413162234493b414548484b +4c4e4d4d433a47372d291e695c771d00233838003300447a001621160e15 +130a111610057c576e634a92d6d6626a7857778dcdd6af93ababaa9da6bb +b1b5ada9a9aab6a9afb4bfb7bab6b6c2bbb8beb6c6c2c8bfd0c1c2d9c8be +ccd3d0d9d0cfd9d2dcdde6e5d5dddfdbe9dbdde7e6e3eced31302d2e2f31 +31313434363b47436ac7c8d1bec9d7d0d0bcb09ea2a9a0a6c7deab57323f +3f3e403638383834323032353b3c3f3e3d39363439363f424447485bb2ce +c6d1c8c9f1d8d1bce3ffd0c1c26c363d3b343c37343e39343f3f41443a2f +34333b3640393f3c3b3b3c3d3b38393d403e3a453c464342433d423f3d3d +39404d46454743444b503c6b6b49444943433f414b4d444e4653474f4f4c +4e4e4b4b4748474343474946494f524c4644494b4c494c4c565c4f4f5f56 +5c58574d5843585b5952505659575155555157515950475547525b48c58e +45332d2a221f242a2a2e272a56e2e574e7f6de3be0442b3b34bbf7e981a8 +cb233e2f2f302c303731354235313b52778266fefefff6faffffe488ffff +f6695848c0fcfff673fef8fff8864e64543b43474f4b403c3d3c40435345 +b7f156766377726c7b75726a736767686e6e676768656b7d797870636b6e +7a6a67727e787fa57811106a21315d3b4d505c5f4e3928160b1f1d39434c +454c54545c5a55482020262f444f5e61646f7468686d5f516e4c2056b381 +2726b2ffffffb8f3fffad9c0b8ffffffe065fa7860a5c6ffffffffffffff +fdfbfaf9fafbfefefefefefffffffdfcf8f5f6f7faf7f7f8fbff58a77e73 +a9abfcfff9f8f8f8fffaf4fff9ffbbeaff7d88e1fffff0eed2bb764b3e48 +4445413f2a241f0e000706132f3c363c46484b484c4222220e1d4993c6e6 +f2f3f3cbb19d7043282b372b2756b02a47494f5c868a9cadcdf0f3f3e8e9 +f2f7f6f1eceae4eeffe2d6b59ec5a2be484cc962303c9e625ad6304e4c3c +232b413b2b2d2c1ad7ba79756669d3e1e65b745878fffffff8d5e0ebf7f9 +d7e1ecf4deeedbe7ecede4e9faeaf3f4fbfef4e7f6f5fee8fcffffe2ecf7 +fff4fbf6f7fff2fafff2f5f9fbfff5fdf8f1fffdfbfffffeffff22212021 +22242424242320242c264ba7aab5a2afbdb7b7a39783868f858eafc7943f +1a2929292d232728282725242628292b2c2d2a28252428232825211e1a1f +616f646b6366907c76658dc086808a401c2b28222925212c26222c2d2e32 +271d222129242e272d2a29292a2b2926272b2e2c28332a343130312b302d +2b2b272e3a302f312e2f363b275656342e332d2d2c2e383a313b3340343c +3c393b3b3838353635313135363333393c36302e31353734373741473a3a +4a4145434038412c4144423b393f42423a40403c423c443b343f30394135 +c19b6764676d676465666767564f6ff0ef7cf3fff75aff6d555e42bffaee +8cb9e94c736f73767072746f748379757887a19f76fffefff1f5fbffe488 +ffffff7d715cc7fcfffb7cfff3ffff9f67888f7f827d7f7f858a88837d7b +8369c3e93d534258585766605c545d53515258585151524f556763625a4d +5558645451585e5559805b000562161f3d111810121a1c1e262b34442b38 +3d433d43444148474841232a2f313c3d454449555b4f4f5b565584652c59 +af720d0694f6f5eb7ca0d284473551e4f8ffdb5eea644d94bafdfdf7fbfa +f8fbfdfffffffffefffffffffffefefdf6f5f6f6f8f9f8f5f6f6f5fc4d9c +7368a1a6f9fffcfefefefffaf2fee9f8a0cff5471b557864403f35433c34 +34443f42413c1e1b231f1c251c2440483d3d3f3d3c39413e2b35292e3950 +3c2c1f1d2a18212e25140c151d151d4e9c0b1b110e0e2a1d19151b291713 +0e1114191e2225241617200b1b1c2d78759f262baf48111b81463ab20b28 +261d121a261c10161a06bc9e62645b5dbdc4c43a59456bfcf7fbe3b7bdc6 +d4dbc0cdd1d7c4d4c1cdd4d5cbd0e3d3dcdde7eae1d4e3e2eed8ebfcf5d3 +dee9f1e6ede8ecf5e6f0f3e7eaf1f3f9edf5f0ebfff7f5fffff9fcfa0f0e +0f1012141414151312141b14398e8486727e8a81816b614e545e5660839e +7527021214161c1217181917151416181b1b1d1d1b181514181418130d08 +0200292b1b2013133f29251540774546591b051d1a141b17131e18141e1f +2024190f14131d162219211c1d1b1e1d1d181b1d201e1a251c262322231d +221f1d1d19202c2321231d1e2528164545232025201f1d1d2729202a2431 +252d2d2a2c2c29292728272323272825262c2f2923212527262326263036 +2929393035323027311c3134322b292f32312a2f2f2b312b332a26322025 +2a179b6f342d343a38373d403b3a2a2448ccca57cddfcf30da432d361f9e +dbce6a97c322453d40423f4248403f4b403c3f51717351e4e2e8dbe1e8ec +cc70e8e8e05a4a37a8e0e6dd5fe8dde8e6783f5a574449494f4e4e504d47 +423e452c91c21f3d2f464744514b453d463b3a3d43433c3c3d3840504c4b +43363e414d3c393f473f466e4b00004f020b2e051410111d272d343c4a57 +343d3d3e323435333d40403b1c222a2c393b413e3e464739394747569c84 +4260a45d00009effefdc749acc82513c4ad4e1e8c54bdd593e84acf0f4f3 +fbfdfcfdfdfefcf9f9f7f7f7f7f9f9f9f9f7eeebe9e4e3e3e1dee4e7e5e9 +39885d548e93eaf4f5fafcfcfbf2e6f0dae78fbce03b2062877554503e44 +3024283b393b39351e202e2f313d333648483635373735343b3d32464648 +4661605e5651583f3c3e290e000710081143950618100c0e2d23272a3b50 +47474244474a4d4c4c483d414d343a2e316e628b1c26ae470e126f2e219a +001f251b0a101f17090e0e00b19252504545a8b4bb33503758e0d8dbc69d +a1a9b4b99eacb3b7a3b3a0acb2b3acb1c3b3bcbdc6c9c1b3c3c2cdb7cdde +d6b4c1ccd4c9d2cdd0d9ccd5dbd1d4dcdee4dae0dbd5e9e1dfeaece5e9e7 +2d2c2b2c2d30303131312b3a3f45b8cac6cbd6d1c7d3dfdbcabdafa9a4a2 +a3a9d1dca0512b2d3d363d34313638323135423a3d41323c3635473a4151 +5b5dd1d5c1d3ced0c6c9e2d2cadfffe6c8ab9456493c37343a3a3b363b37 +3a3d433f404047423e3e3f3f4144403b3a3e403d3e413e4246443e3b3d41 +473b463b3f3741444d4a44464a46464e4b4847484a48413c44454d544151 +54a565514d5545524f4b4a48444c444150474c464d534b4a504940475d47 +47474a4d4f504d4c585a5b5c5c675c5659585a555853574c4f554951555f +55615d4fdc843c37351f211d2129272c343a31bbb68ae965f437f4339fe5 +ddf2ece2599fc1293d312e2a32343a2d38413b3968eddddcfbe5fcfefbf8 +fef471cfebf4a8465e4c56c5bebd6473a29b71474c4c4746353f47484449 +3b3fac825558b0e749796a6f7079696661727a756d6d6e6e6d6c6b6a6a69 +6d677c62717777777673747a7499713b2e56262e6c413b4653574c392518 +0b2c1b363e43374249474448292424121b1a1f2d40515a5a5354656a6f5c +80286898542e18a2ffffffb5e5ffffdec2c2fffffffeee8bdcc9c7eddbff +fffdfffffffffef5fefdf9fffffffffffffffffffcfffceef4f9f2fbf5f7 +ffffe2f0fffafff5f8fcf8fbfcfbf9f7fafff9ff88ffff60b3f7ffffffe3 +c3af62464b47503a24190400000817272b311c041123282b344568160e06 +1c5080ffb4e9eeecf5dcc3a27b482c1979793e55ed1e44495b607ca0b2c1 +d3f1e5e6e7e7e9edf0f3f1f1ecf2efe8d5ac9ba6b4ad687dffff314b586b +2ce4434769442f2a3630352e30218bd84215283ce2dffe23676639ffefff +ffd7d7fff4e6daeae2d9dfe8f3e2ecf0efebefe5e3f9faffecf2e8f5ffed +f8f2ffe6fffffcfbfff5fcf9f5fdf2f2fdf8fffffbfffdfffff6fffefeff +fffc21201e1f1f1f1f1f1d1b1421252a9baeabb4bfbcb2becac4ae9f918b +88878b91b6c18437131527212a2221282a26252932292b2f1d2a272a3b2a +2c312e238b866c776a6a606685786e83aa8e7a6a63322e29212124272523 +2524242a2d2c2a2d342f2b2b2c2c2e312d28272b2d2a2b2f2c3236342e2b +2d31372b362b2f2731323a342e30343030393532313234322b262e2f373e +2b3b3f90503c3840303d3a3837353139312e3d3439333a4038373a362d34 +4a343434373a3c3d38394347464745504741444345424341453a3d43373e +3f4840493f36d7915e676d626f6d696c6c6d6d6954d4c592ed69fc45ff52 +c4ffe8f4eeea67b5e1547372737378787c6b6e76716b94ffeee4fbe5ffff +ffffffff82e3fbffbd5c746162cdc6c87382aaa88b676e7273796c716d68 +616b6667c7966662afdd345f4e545763535049595f5c5555565655545352 +5150544e6349586161615c57545a51785421194311144c1b111212151719 +212b2c4b2635373a3742413a373d1e1d22141d1919212f3b414448444548 +5d578831638c421b0691f6fae87899ba88473049d9f1f4fffb93cbb1bae6 +d7fefcf7f7fcfdfdfcf5fffffcfffdfdfdfffffdf6f1e8f6f9f3fefff1fa +f7fafffddeecfff8fff8fdfffefffffffffdf6fbf0f97cf5ed103c67795b +49373c5231334548523f33301e15213b58707676542e2c312a272c3e641d +21284a7584cc232825202a1f25282714120966652e47db061f1615070f1d +19141323100d0c0a0b0f171f232318191115190f1e4f8a933e54f5f00d26 +415711c218183c1e191820181d161a0970bd2a02192dd1cae205494d27fe +e9f7f7beb5d9d1c9c4d7c9bec4cddbcad4d8d7d3d6cccce2e3f0d9e2d7e4 +efdce9e3fcd7f0f9eeedfce7eeebe7f1e3e6f1edf6fdf0fcf5fbfef0fef8 +f8fefef60b0a0b0f12151715140e040d0c0d7b877c8089857b87938e7c6d +5f5958585b6187945c120000100e1b14141b1f1a191b2317171908141418 +2d1b191a0d005a4e2b2e1c180e15382c23365d44383438121b1a13121618 +17141715161b1f1d1c1e25201d1c1e1d20221f19191c1f1b1d211e232725 +1f1c1e22281c271c201822242b262022262222282724232426241d182021 +29301d2d2e7f3f2b272f1f2c29272826222a221f2e252a242b3129282c27 +1c233923232326292b2c2728323635363540363033323431302d3126292f +232d323a2d312517b1652c333c2f3d3a3b403f42423f2aac9e6bc844d721 +e4299bdbc0cdc9c5438fb827413c3a3b42454c3a3d423d365fdcc1bbd5c1 +dde3e5e5eae160bed7e096354d3a3ca8a1a04a59817d5e383c3f3e41333c +3c39333931329463302e83b917483941414c3b3831434a463d3b3e3e3d3c +3b3a3b3a3e384f35444a494945413f453d654210063200033d0e03070e17 +21262f393d5d38433f3d2f363631313b22242d212c29272d353d3c393634 +3a3f53518a366a9042150089f2f3d5638bb5884e3d4ecad8deeae17cc4af +b4decef8f9f7fafffffffdf3fbf9f3f8f7f7f7f6f6f5efeae1ece8dde6ea +dde8eaeff4f1d2e0f4ecf6eff6fbfafefffefaf1ebefdfe766dfdf094071 +856c5d47404a22223942514338382b283a587893a0a075463732251c2136 +632332436e928dd74c5f5b5359473e3527090300585a213acf0017121309 +152b2e323a534644423f3e4042484a4a414640403a242648727a3250f1ed +0d202f3e00a9070e391b0e0c150e130c0f0067b21e000618bdb7d6004949 +19e6c7d6dea89cbaab9f9fb6aaa0a6afb9a8b2b6b5b1b7adadc3c4d1bbc1 +b9c6d1beccc6dfbad3dcd1d0e1ccd4d1cdd7ccced9d7e0e7dce7e0e6e9da +e6e0e0e6e6de2b2c2f3236363534343040373f8bc4c6c0c5c8beb3c4d9d8 +e1dbcdbba89fa1aaa2c5dcdea44d3238303b3f3631393b37383e42423645 +41412f3a4647639cdfcfc9d8d4d2cac9d6cbd1e2ffccafa7814648444345 +474744424345494b4743464b464341403e3d3d4045494b4843403f3f3e3d +3d42474a4a4843393c4f4545424f494e504f4c4a49474e4e4e4e4d4c4c4c +5b504e52565a5582514c4c5347524f4d4a4c484f4e4b56514a5050464452 +574b4f44504853545458535652505454515558464c634c5360485958554d +5257515651554854595dde783e31302a1b1d22262b302e4321c29b93da6a +fe40ec48586a5afacadbafb5ad304539443c3f422d433c2f4e32a3d4dec8 +d89e544a4a503d5a42445d3831514367e14e51645c936d6683788e939db0 +adbfc2defae7e5defcf5f7fffff25966747368736d706d6f76736d6d6e6e +6c6a6a6a686e6979766e6e766f74767576796d90b1ffffee2142623b3e44 +4e4f4637231910211f26333e3b2d37433c2d180b0900000009222f33383e +405557484e424267df972d1a9cffffffbde2ffffeab9b9fff1e4fff2ebf5 +fffffffaf4fffffafffffbf9fffffcfffefffffffffffffffffffffcf0fe +e9f4fef6faf9f9fcfffffafff8fcfbfcf8fdf8fffbf8fffcfff093fffd64 +d9fefffffdd8bf877f4d1d003e2c06000009273325160a161e1717222720 +394eeb386e313d66e4ffb7e1ece9ebe2bcb0a048281e587bab165f2c4954 +576c90b6c5d4e0f7f4f4f0efeff0f2f4f4f5edf1f0f0e4bba09ab1a88d68 +ffff2b569bcb67c06333605b3d29332e312f33284fff3e212c36dcf0ff59 +1f2c1ed3f9f9ffd7d6ead3f4e8ffe4edeae9e4eaf4f8e4eff3f2ddfbdbfd +f4ece5d9f1d3ede6e3e1f6f6eef1fdd4fffbfffff7fffffefffff2f0dae6 +e2d8eee6e4ebf0ee1f202225252522201d1a261f2671a8aea9b0b5aba2b3 +c4c1c5bcaf9d8c858a9387a7c0c38833181f1b282d26232b2f2b282d302d +22333235262d30242f588d76717c736d65687a707686a376636955272f2e +2d2f31312e2c2d2f3335312d303533302e2d2b2a2a2d32363835302d2c2c +2c2d2d32373a3a3833292c3f3535323d36383a3936343331383838383736 +3636453a383c4044406d3c37373e323d3a383739353c3b38433e373d3d33 +313f44383c313d354041414540433f3d41413e40412f374e373e4b354746 +433c414640433a3e363e3b46dc8964666a6e6b6d67686c6f677346dbaa97 +d766fe46fa61788563f8cadfb9c7c855736f7f797b7c657467567858c0e7 +e1c3ce995654586046685b60764e46665577ed595c716ca57d789d98b0b5 +bfd6deebdff1fff2fdf6fff7f9ffffe5455059584f5b585b555659585355 +565654525252505650605d55555d595c5c5956594c7194faf9d406274217 +141211111116212d303e2e292d383c2e2d37332b1c171b150e1525383f3b +393e43513f2c3b3a4264cd7e100088fbf4e88190ac9e552646dac2cbfdf5 +fffffcf9fefaf3fffef6fdfdf6f4fefefbfffefffdfdfffffffbf5f1f8ec +edfff3fcfdf3fcfcf9f9fffff7fffbfffffffdfff6fffffefdf2f6e88bf9 +ba025e73846746355a536d533317584d3034394f7287867f737b78655452 +4b3b5166ff5897607493f2f029222a201b1f182e450f0e11466799054d16 +2722100c18251d1b1727231f151211141b222627181a16212b1c193d878e +5e3beaf9042f86ba4d9e3503303222171f181917180d34e7280e1925cddf +f93b000e08c4f3f5fcc0b3c3b0d5d2f5cbd2cfceccd2dce0ccd7dad9c6e4 +c3e8e1dbd4c8e0c2ded7d4d2e7e7e0e3efc6efebf6f4e8f7f3f2f9fbe7e5 +d2dedad0e8e0dee5eae8070a0f151b1d1c19150d1507084e818277797d71 +6a7b8f8f958d7d6b5a54585f52738e966112000908191f191620231d191d +1c180a1d1f25171d1b0808275132292f221b13192f272d3b562d2536300b +1b201f212323201e1f212527231f222724211f1e1c1b1b1e23272926211e +1d1d1e1e1e23282b2b29241a1d302626232f272a2c2b282625232a2a2a2a +29282828372c2a2e32362f5c2b26262d1f2a2725262a262d2c29342f282e +2e24223035272b202c242f3030342f322e2c30302d2f311f263d262d3a24 +33322f282d322c322c3020261f26b35c3132383b363a383a41443c491bb3 +8372b443dc22d73a515c38cfa4ba96a19f29423b4740474a36473a274827 +90b9b69baa73312f343c274734374e271f3d2d50c53132463f754e486d66 +7d828da3a7b6afc4d9c7cbc4d5c8c8d1d6c22a38464539433d403d404743 +3a3b3c3c3a383a3a383e3a4a49414147414245434144395d82e6e8c30016 +350b060910161b212c383d4e413a373a36262b37363027252f2d282f3d4d +4e463e3e3c483b28342f365bcd82150387f4ecd8697aa39c572c4dd6a8ac +e7e0e5eff6faf8f2eefbfdf7fffffaf8fffbf6f8f4f6f7f9f7f6f5f0ece7 +eddddaecdae4e9e2eff1eff0f6f6f0f8f4fafafdf9fef7fdf8f0f1e6e7d5 +74e4b100617a8c745a486255694f311d6560464c557199b3b1afacb3aa8c +73685942556aff65ab7a93aaf5f851585f544c47313a440400003a5c8b00 +3f091d1b0e0e2136373d43595c594d47444245494c4d4446464b4d322738 +6f735436e6f6052a73a0328525002c2e1709140d0f0d0f042bdd1b000a13 +b8cdea33021000add1d2e6ae9da686a9add4adb5b1b0aab0babeaab5bbba +a7c5a7cbc3bdb6aac2a4c1bab7b5cacac3c6d4abd6d2dcdad1e0dbdae3e5 +d1cfbdc9c5bbd0c6c4cbd0ce28292b2e3232302f333945386bc2cbc6ced0 +d0c5bdc0beaec3cfdbd9cab7a49aa1a59daad4e5a9462f383b3530313638 +3940423e383d2d2d39434a4b71bcc3bcd8dacfc6c4c4c9cdefc1c4cfba87 +5c434644454543403e3c37393c3e3d3b3e4241414345444243463d474a42 +3a3b3c3a423f3d3f4447444047423e4f40413b4140444a463d464f494a4d +4f4c464244474c4340465a4e454b474e4f51494d4c4d494e484a4e4b4d4c +5354504e4f4b444385614f444c49464b50545350514e4c50565f5763665e +575a57574b4a515355555e5d555d4f59ce6a3c2d252a1727323534373d37 +60f7e17dfffeefe7f7c533484b83dad44fcdb237333d333d354243475e67 +584f87d5e0efe29cafbeb6bfd4c6bb5b4fd5f9f3edeefafffdf8f1f2f0f4 +eae5e6d1c4bca8b5a4a6b4b087878fafa659daff4c6960696c7273747466 +6e6c6d6d6e6d6b69696a686e69807274727572787b7a7c7e7193abffffff +51646e3b41494f4e43301e130c152b1233242b353b3c291a00000008121a +2a2b120000011b112052f8703b8cab42258cffffffd1d1ffffe2bcc1ffff +fffffffeeef2fbfbfffffffefefffffafffffbfdfffffffffdfbf8f7f4f4 +f8fafcfdffe2faf9fdfaffedfffffdfffffefffffffffdfffffffffffffd +ffc4bdffbf79edfffff2e9b9c54d441f0c075d53272b271b130800050f08 +0a0e1325270d1f1026134f2384e4f6ffd7daeff0e9d9cab69f48331a377f +b73a3f475f81517599becde1e4f3fff8eff1f0f0f1f1f0f1ededecf2eec7 +a189b5abb68c9dff575d85554ab8c1385d6b4d2a342e2c31332e23ff9a35 +4e2cc1ffffb9494d84b0effeffecbcf6d1cdcce5d9e4dedfd7eef1f5fde1 +d8ffb1ffdef0ebe9eee9ffeafff8f3f5fffffff5fbe1f6ffd5feddf8dcc1 +fffff5fef0fffffffef5f0f4fafd1c1d1e2122211d1b1c232b2052aab2ae +b6babdb5adafa896a8b3bdbbaf9d8d838589818fb8cb902e192329241f21 +2628292e2f2b262a1d202b322f243a756d617e7f736765676d7395696e80 +785336282f313232302d2b292426292b2a282b2f2e2e3032312f30332a34 +372f27282927312e2c2e3336332f36312d3e2f302a302d2e343027303933 +34373936302c2e31362d2a304438303632393a3c34383738343933353936 +38373e3f3b393a362f2e704c3a2f373431363b3f3e3b3c39373b3f48404c +4f494245424539383f4143404446434c384bd5866b68636e6471706a696a +6a5d7cffe97ffff8ecebffdb51615280d6d150d2bd4c4e5e59635a656163 +7882776c9de0dee6d492acc2bdc9d7cdcf7463e5fffff7f6fefffffffeff +fffffffdffeddfdcd2ddbeb5b9b79d9d95aea858d2fc3853454e535a5e5f +5c4d5151535556555351515250565067595b595d5d60615e5c5e527790f2 +f9e937484e150f0e0e0f1014212c323a411c322028302a2b2223190c2859 +6c78857f5a3021282e182451f2693882911f0069f3f5e08786aa93463258 +dff8f8f9fdfffffffdf7fffffffefbfbfef6fdfdf6f8fefffeffffffffff +fefaf6f4f5f8ffe6fffdf9f5ffeefffff5fcfef8fffffffffafefcfcfbfe +fbf4fbb3aef67613757d865b3a278a4f67585051a39d7a8789847e7b7d83 +83797d81828d835f6a5b705b9461b9fffff155282e25161426343f0c160d +256ba5292d2f3a4c06121b2a212319212d231919181b20252829201c1928 +36281a2a878d885f85f130366e43309596082d4232171e18141918130bea +84223b1bb2faf69b292f6ea1e9f9f9d79cd1aeadb5d0c0c9c3c4bfd6d9dd +e5c9bff29af6c7dbd8d8ddd8f4d9efe7e4e6f0f7f2e6ecd1e8f6c7f0d1ec +d0b5fbf4edf6e8faf7fff8efeaeef4f706070b111517161414161a083384 +89828888857a727776667b848b877a6a5b515357516290a87112010e1512 +0f1116191c20201a12190d101e221a051141301b3230201513172027491f +253d3e24120d1d222323211e1c1a15171a1c1b191c201f1f212322202124 +1b25282018191a18211e1c1e2326231f26211d2e1f201a201e2026221922 +2b2526292b28221e2023281f1c22362a1f252128292b2125242523282224 +282527262d2e2a2829251e1d5f39271c24211e23282c2b28292624282f38 +303c3d362f322f312322292b2d2d37382d321928a9553532303b303e4140 +3f41413454e3c45adfd6cbc8e0b52b3a2957b1ae30b29b25233128322e3b +3b3d51574b3e6fb5b5bfb16e899f9ba7baaeaa4d3ec0e3dbd2d1d9dfdbd9 +d2d5d3d8d1cdd1bdb2ada0ab918a918d6c6c69827728abda1d3b323b3d42 +434444373f3c3c3d3e3d3b39393a383e3a51434543454244484647493e62 +7ddee8d7283a430c0e12161a1f222a333b434e26381f212a323b32322a1e +3c6e8692a099734736393c20254ce65929789025086fefefdd7e71999651 +3252d2e1d7d5e7ece8edf0eef4f4f6f6f6f8fdf5fdfdf3f4f8f4f3f6fafd +faf8f3eee9e6e5e5eccde6e4e0e1f1e0f3f3eaf1f3ecf4f5f6f8f3fafafa +f3f4efe5eca197e16d1177828a64493ea6687b6b676ec7c4a2b0b6b4b4b4 +b7bec0b5b6b8b7c0b48e927b8b71a470c7fffff8795a635a493f3f404002 +06001b6297191f2331460315263a3b454452645b4f4c4947484a4c4d4946 +4650583e282670737b5a81ee31315e2b177f8500293e2709130d0a0f0f0a +01e077132c099fe8e7932a2f618ac9d9e3c487b4888493b1a2aca5a69db4 +b7bbc3a7a0d37bd7a8bcbababfbad6bbd1c9c7c9d3dad5c9cfb7cedcadd6 +b7d2b89de5ded6dfd3e5e2eae0d7d2d6dcdf31302e2d30323333323f3a4f +b5c6c9c7ccc9cbd3d7cdb4999cafc8dce5e0c8b4aea5a8ada2a9cfea8d54 +292d41484443433e3d414946353e3e4446558ec7b9c6dbd5cec7c8c5c3d9 +d5c2c5c9885454454542413f3d3b3a3a413c393c4345423e37393e42413e +3f433d403f3b3a3f42433f4041403f3e3f404142423b3c404b41423e4648 +3e47534c484d514f48434345494d464b564646414a524f52504a4c514b52 +4a48504f4c4f54524d52594e444c5543424f5e5a52515456545254504f54 +4d535b636257594c555a494b5453595358534d5e475ec164312d2b291f1f +2e302c443c393b47642f4f4c305b27573b4f4e8aa8b647e49794f3e5f4f0 +f8ecf8fcf8f8f7f7e3efe9ecdeffd4c6abbbab8af86d51f7975da0a25c3e +639c55c5cf3b43393b3f4a45364e49f4edee74558ba3c9b2c9ff52797969 +7173726d7264716b6d6d6e6d6b696a6b6b696c77726f7a757a7f807e7e84 +7ca2a0f9ffff49656e43414c525144311a0e002668830018050023260500 +001a23210f04041019150f1659003664a136af7c4e1e8dffffffe1d4fffe +fbd7b4ffffecfffbf9fff9f1fffef4fffdfffffffdfffaffffffffe3c1ff +fdf9f8f5f1f1f3f7fafaff85e1ffffffffffffffffffffffffffffffffff +ffffffffffffffb1f3ff91ace9ffffe3dfb1963629221a131a150f110c07 +050100000000000000010a051b3c44262f8de0e2f0fff7bcdfeefcf3c4d2 +ad573f2c2a312f28354f418550819ec6d6ede9ecfff2eaecefeeece8e4e4 +e2dbd6dad9bd95779baeaf5728293d512f4e4c51df3049655b2d332f2a32 +313116b99a78988097ffffe8849987677bffffff9ab8b2d5e7e7e6e2dee4 +e5f0e6e5e1e3f8ffe3fce7fff1f8fafffff4f2ebfef5f4f9fbf0edefdfda +fcf4f2ffedf7fff0f5fcf1ece3f5eeeae8e9ecee2423212020201f1f1c28 +21379dafb0b0b5b4bac3c7bc9f828394acc1ccc7b09992898c908690b5d2 +763f15192f363232312d2b2e3633232c2b2a2427517c616a807a736c6d6a +6a7f7e6e78855029332b302f2e2c2a2827272e29262930322f2b24262b2f +2e2b2c302a2d2c28272c2f302e2f302f2e2d2e2f3031312a2b2f3a2e2c28 +303228313d3632373b39322d2d2f333730354030312c353d3a3d3b35373c +363d35333b3a373a3f3d383d44392f37402e2d3a49453d3c3f413f3d3f3b +3a3f363c444c4b404237404534394241473e3e393d4e3456d189686e6b6d +67615e5952665a524d53682c49432b5c31685565568ba5b143e39899fff4 +fffffffafffffffffffff2f6e4decef0cec6afbeaa8dff8161ff9e61a1a2 +593b65a15dd2df51635e61656e6d667a66fff1f387678c9ec8b1c1fd3e63 +5e4e585a5c57594b545052555655535152535351535e5956615d65676460 +5e645d8685e3f7f6324b501c0a0a0e1314151c2625528da30f2c1a11343b +24293a68838e8880808685796c638f215173a12faa6f300068f4f4e49276 +b4875b353ad5fdf7fffbf2fffffffffcf2fffbfffdfff8fef5fefdfdfdd9 +b7fcfffffffffbf7f5f6f7f5fa7fd9faf4fdfdfffdfdfcfcfcfdfdf9f9fa +fcfcfbf1f1f9fdfafb9adef43c4079958a5239367d607280807d7c797b83 +8480828383877b7a7f7f7c838477849d9e7673c4fffbf7f28619201f282c +204e49121e1c181f1d1722351b4e02181a29242a1c1a2f1f15181b1f2225 +25251e130913241b0d13688c7f2c0f14172a153a322eb5011a3c3f1a1d19 +121a161600a18462856f86fbfacc657a6f5875fff9f97a938eb5d0d2cdc7 +c3c9ccd8cecdc9cbdfeccce5d0efdee7e9eff7e3e1daefe6e5eaece1dee0 +d1cceee6e6fbe1edfbe5edf4e9e4dbefe8e4e2e3e6e81110101013161616 +111a0d1d7b868784898584888c8470585a697c8c9691806a62595d645e68 +92b05722000019201c2025231d1f2724151e1d190b06254521213129221b +1c191a31312534481f0014141d201f1d1b1918181f1a171a2123201c1517 +1c201f1c1d211b1e1d19181d20211e1f201f1e1d1e1f2021211a1b1f2a1f +1e1a22241a232f2824292d2b241f1f21252922273222201b242c292c2822 +2429252c24222a2926292e2c272c33281e242d1b1a2736322a292c2e2c2a +2c28272c262c343a392e30242d301f232c2b312b312a26341431a2552f36 +373a353134312b41342b272d430927220b3c0f46323f2d63829126c57979 +dbcddcd8e1d6e1e4dfe2e1dfc7cdbeb9accfaca48e9f8e70e45c3de07d40 +81803818407934a6b222312b2e323e3b324738dacccb5937627498819adb +234c4b3b4244443f4335423d3d3d3e3d3b393a3b3b393d4843404b454a4b +4c48494f497172cee5e4223c45150d141b2222242832315f9db21b331d16 +4450393f4f7f9caba7a2a4acab9d8e81a7315870951d975f2e006ff6f1de +8d6ea47f674437c6e6d7dfd9dfedece5f1efe3f1eef3f4f8f2faf1f8f8f6 +f4cfabf2fafffcf7f2ebe7e4e4e1e467c2e1dde8eaefeeefefefefeff1ec +ebeff2f3f4eaebf1f1ecec8ac9e2373e77938c59454ba48a95a2a6a7adab +acb5b8b7bcbfc1c3b1aeb6b7b6bfc3b3bbcac08d80c9fff8f0f8a4465455 +5b57395b4b0b0f0c0e150f0714281249001c253c3e4c474b64564b4a4b49 +48474646423a343a43321b11537373250a0f162506221918a5001438340c +120e08100d0d00977755765d74eaeac16378634155dfe3e665786a8fb0b3 +afaaa5abadb6acaba7a9c0cdadc6b1d0c0c9cbd1d9c5c3bcd2c9c8cdcfc4 +c1c3b6b2d4cccce1c9d4e5cfd6ddd4cfc6d9d0cccacbced0312f2f2e3031 +323234334183d6bdc5c6cac1c0cdd4c2a89a969a9fadc2d7e0dcc2b3b1af +a7a8aaa5e5d39a50272c3a3d333335313d3e364140474458a6c8c2cccdd1 +d7d5cfc3caeecdc4d6a1423c4c4044403f40434443424b464242474a4742 +40424648454040424c4440454c4e4e4e3c3e424446484c4e4a4f48464145 +51464d45525e5653554a46494c4b49494b4d5a6350534b465050494d4953 +57474c50474e4b465054515753594c3f464d4a4a554f474b4c4e53575755 +504f53514f55585b4c5b6d5f5660595f50545e5b5e555d564854447cbe53 +2f2d3029362a679940e1f8cfe256e782d5c75cff72ec384d47f3bdfd8ff9 +7ae3af95b15bafc4594f69a8270a5c4f4e447eac510ee8f5e94bfa6742ff +6b67f5b2bc49fcf6a2b5f3414e3f3c414d463a4e3eebdbff715bffd779ea +e1ff4c596e6f6c6f6c646f6c7b716e6d6d6c6c6c6c6c6d6c6e76716f7a71 +7a7c7c7a7a827ea5882111742e385446454e555347342011010256c24142 +111e49452c320f2013000001030100040b11371c493139c1c35c216cffff +ffe4caffffecd9b2fffff9f8fcfffffffffffffffffffefffffeffffffff +ffffffd572fffffffefcfaf7f7faffffff80ccccd0dfd8f6f2f1f4f1f5f7 +eefff7ebfcd5dde7e7c5ac95a989ffff74ccddffffe1c1b47932160e0511 +0214141108070f0d0000020d0c04040100081b41535ab8eee4f8f8ffffba +edf3fff3c6c6b26b3e322822241b3ab9618d648badd0e2f4efecfff7eaeb +ebe8e2dcd8d9dcd2cbcbc9b69879adaac75430caa13631817437fa3e4768 +623932322b312d2e1cbcd848595961ebdbdd49735d3cbce9ffffb6c1d1e0 +c9ede4dde8e4f2f6eee8fff8edddebe5e9f6eff3f3f3faf3f7f8fffefcf3 +fcfffbfffffbfffffffff8fffff0fffffffffffff7fbffffffff24221f1e +1e1f1e1e1e1c296cbea6aeafb7aeb0bec4b193827e818794acc0c5c1a597 +94928c90918ccdbb83390f1425282122231f292b232b26271b226278666c +717781807a6c719577769268171b322a2f2d2c2d3031302f38332f2f3437 +342f2d2f3335322d2d2f39312d32393b3b3b292b2f313335393b373c3533 +2e323e3338303d49413e40353134373634343638444d3a3d35303b3b3438 +343e4232373b3037342f393d3a403c4235282f3633333e39313536383d41 +413f3a393d3b393f3e4132425449404a43493a404a474a3f413c3846377a +d67e6c71706975628cb354f0ffd9e857e47ccabc56ff79fb4d6356fcc1fd +8bf374dfae96b35dafc1544a64a72f15645146366e9d4b0be9f6e34aff75 +4bff6a60eaa4b140f8f6a6bdff61888582858c857e8964ffe1ff8066facb +77e9d9fe384353545356564e56535e5653545453535353535554565e5957 +62596264615c5a625f8a6f0a005f171e381f0a0b0f141413192225358fff +8487596ea6a88f96748c836f777d807e7b7c7f82a37379443ababe51064d +f7f5e89e7baf925b3b25a9f2f5fffffffdf8fcfffafefefff7fffefafefa +fcfbf6fcf7c560fcfdfffefbf7f4f3f4faf8f567ada9adc3c7ebe3e0dedb +dfe4ddf1e7dbeac2c6cccaac9e88926cebdc105a7ca4824e2a4f7b767782 +808a74838a8b85838b8c85828a938d8484807d828a9f9a8ddafff7fff9ef +b729331f2a2a1f3f451d181f1610120a249b3954131e212a272d201a3224 +1a1b1d1e1e1f21222013040914120a0d7281972917b27e11156b5a17d312 +183f46231a1a1319151604a4c232464850d8c4c12a54462cb3e2f9f6979d +adbfb0d5cbc2cdc9d9ddd6d0eae0d4c4d4ced2e1dce0e0e0e9e2e6e7f0ed +ede4edf9ecf5f3f0fefaf8f6eefcf8e9fdfdfffbfafff1f6fbfcfcfd1311 +101114151513100a114d9a7c82838f847c83887b685e5a59575e738a9694 +7968686661646863a797611900000a13131819131e1d151d17120000313d +23201e212e2f291c1f452a2e5533000019151e1e1d1e2122212029242020 +252825201e202426231e1e202a221e232a2c2c2c181a1e202224282a262b +24221d212d22271f2c38302d2f242023262523232527363f2c2f27222a2a +2327232d2f1f24281e25221d272b282e2a3023161d2421212c241c202123 +282c2c2a25242826242a2d30212e40342b352e322328322f322a332d2129 +1553a44831383c374635638e31cfe1b6c635c15aaa9c36e358da2c3d2dd1 +9cdb6ed95ac28f748e388ba0362c46880a003b2a21134d7c2900c9d7c92e +e4542ce44c43ce87931fd5d28194d7304e49464a554e455335d5bbdd553b +d5a547b9b2dc1f2c40413d403e36403d4c433e3e3e3d3d3d3d3d3d3c3e46 +413f4a4148484642434d4b755b00004e09112d180c12191f23242b363d50 +adffa1a47285b8bba4ad90a9a89aa6b1b6b4afaeb0aabd84854832a8a83d +004bf6f3e5966c9f8c604a2ea0dddceae1e0edebe6eaeaefedece5eff0ee +f4f0f2f2edf3ecb852f3fdfffef9f2ebe7e4e8e6e153999599aeb3d7d0ce +d0cdd1d5cde1d7ccdcb4b8c1c4a59178825cd6cb0e5a759d84543161a2a5 +a1abaab9a8b8bcbcb5b6c1c3bcb3b0b6b5b1b5b5b2b3b7c5b8a2e6fff1fa +f1f0cc5065595f563b4e4b1b0d110c0604001690314d10232c3e424e4a49 +65594e4d4b46423f3d4041352b2e332a1a0d606b8b2212ae7c0b07564300 +c20712393b160e0e090f0b0c009ab52537383ec7b2b5254f381596c5e3e2 +83858d9e92b9ada5b0abbabeb4aec8beb5a5b4aeb3c2bec2c2c2cbc4c8c9 +d4d1d0c7d0dccfd8d8d4e4e0dedcd5e3dfcfe6e6eae5e4eadbe0e5e6e6e7 +2b2b2f31343534343b2f6eb8c4c5c6c2cbc5bfc1bca490929694908e98ae +c7d4eaded8c4aca3a3abb0cae4d79b5736352934453b42433e3e4443486a +babbbec9c7d5dbd5c4bfdbfdd5abca80374539413f3f40434645413d3a3e +3f3d3c3e424545464a4d4c49484a4037343e45423b3945423f42474a4946 +5156425f43434044443c45514d4948434f4d4b4847494d504d54474f4949 +4e494647455053404a434a4e524a4d54505553514b474b4d4c4f4d5b595d +524e4e4b56534e5158585961564f6e52c65a524c545850535d5b57505a66 +534c3e91bb48362c322a372891e652fb947efdd4ff68d2ab59f77becd2f0 +e0f092f56af974f593ffffa8c9fd44819f88fb3e747953b1beb9ff39f9ea +dc4efb734ffe93deffa8e195fae3a3b4e75236343634373c3b444cf0d5f4 +7e1ff4ff6a7de7ff53746c7c686e69666f717a6e716e6c6c6e706f6d6e77 +6f7f7077726c72777978787e78a18c2f27551e3367464b52555147382a1c +0c071507111f0f0d00000c37080007140b070100060c070015163e1a6fb5 +69185dffffffe1bfffffe9ccc49affaaa392a7e5a0aeb3afb6c6bcb3b5bb +a1a4dc6fd5af73664d9f36fffffffffffffdfaf8f3ffff8adc5032362a21 +284a847a869a9674718b7f638033536635528a99ffc18ce6fcffffe2abc1 +702c1f0f0a1616130f1716101011151d0a0f0707151511204a6e93dff1ef +fcf6feffffa5d9f1fffdd7a8b2833927224bff8e21c46daaad83bad6e6ee +eeebfffcf4f3efe6dcd3d2d4dad3d0cfcabca6848bbbab6b52ffff634235 +743fb5633b67674a31332e2f2d2e1382ff6640361ff2ffff4f224827fff4 +f3ffc899c6e7ddd4d9ddf1dde9f5f4efe2f1f6ffe6eafbfffff9ffe7fae5 +f4f2fbfbf6f8fefff8ffffffd0fff9f4fff4faf8fff6f7fafff9f1fbffff +fdfd1e1e1f212221201e241956a1acaeb0adb9b3afb2ac937d7b7f7d7979 +8397acb9cdc1bba79188889395b2cbbd813d1d1d162333292e2f2822231b +162d6f666068697b8682716a82a482608d51162b232f2c2c2d3033322e2a +272b2c2a292b2f323233373a393635372d24212b322f2826322f2c2f3437 +36333e432f4c30302d312f27303c3834332e3a3836333234383b373e3139 +333339343132303b3e2b352e33373b33363d393e3c3a3430343635383745 +43473c383835403d383b4242434b3c365539ad413c363e423a3d4747413a +3e4c43413192d373716d6e626f55abf459ff9a84ffd5ff64cea758fd89ff +ecfffaff9efc6af56eee8efffea4c5f73b769181fc467c7e4fa7b1afff3b +fdeed84eff825dff92d7fe9ad890f7e7abc3ff7e7d8a8b8685878b897cff +e4ff9330f2fe697cdff83f5e51614f55535056585d535655535355575654 +565f5767585f5a545a5d5e5a58605c86721a1442081c4c1f0f0e10131212 +19222b3c5a5c70867a83808692b884797d8c84827d7c82898277937c722b +67a3560341e9f1f29e6db6995a343e2ecf819b97aade858f9c9da3b3aba4 +a8b0959bd365cba365563c8c21fafcfdfcfbf7f6f6f7f0fafa69b1220916 +151216356a5f6c837f5f5c7465486112314822417078f6832072a6b37448 +236e756b797a78807770717a7a7270727c8a797d706a787975819fb4c2fd +fff5fff7faf6d628231c302f301f3e2f0d110e39f47d0aa4426f59122829 +252220192e292425211e1a1b202323170c0d13140f10458c7b4037f9f43e +261b592090390c3c4932191b16171516006afa502d230cdfedf831042e15 +feede8fca975a1c5c3bcbfc2d6c2d0dcdcd7cad9ddebcfd3e4efece6edd4 +e9d4e3e1eaeae7e9eff6e9f6f1ffc4fcede8f5eaf3f1fbeef1f4f9f3ecf6 +fdfbf8f80e0e12141616151012023c8186848180958d7b77715d555b605b +4d444a617f8ea3978f7b645959636886a2985e1c00030719291f23241b14 +100200003826181912233332211a3054361d572700120e1b1d1d1e212423 +1f1b181c1d1b1a1c20232324282b2a2726281e15121c23201917211e1b1e +232625222d321e3b1f1f1c201e161f2b2723221d292725222123272a2930 +232b2525282320211f2a2b18221b21252921242b272c2a28221e22242326 +22302e32272323202b2823262d2d2e362b224125992d271f272b2326302f +2a25303d2a230f6aa13d39353b33422a86d338e07860deb3df41ab8439db +68ddc9e4cdd678da4eda54d270dfdb7fa2d51c5a7664da2155562a838f8c +df16dccdbb32e6613ce676bbe37fb970d4c2849ad44b41494a46494c4e50 +4ae1bdd76804ccd73b4cb8d626473e4e393f3b3840424b40433f3d3d3f41 +403e3e473f4f4047423a3e4243404148477161070331000e41180e0f1318 +1c212c3a485e83859cb1a4a99fa2afd8a6a0abbebbbdbbb9bec3bba5ac8b +80336497450036e4eeef9862a28a5c40472ec06b86808bc27c8a8c8994a4 +998f959c858ac459bf9558472c7d10eefbfffef8f2eeeae5dde5e858a112 +000100000222594e5d716f4c496254374f03284014315f67e476207299a9 +7750257895949c9a9da8a29b98a19e97989ca5ab8d8e8687989b99a2bccd +d6fffff1f2e9eff5e5465456665d4c2f472f0404052fe56d009939695716 +353d404347465f5e58564f453d373a3d41383232322d221339786d3730f3 +f2381a0a440b7e2d06363f260d0f0c0d0b0c0060ed431e1400cedbea2900 +1f00e1d0d2e8955f86a9a8a2a4a5b9a5b1bdbab5a8b7beccafb3c5d0cfc8 +cfb6cbb6c5c3cececaccd2d9ccd9d6e3aae2d3cedcd1d9d7e4d7dbdee3dd +d6e0e7e5e2e2323335383b3b3c3c3e53aacbb9c8c7c2c1beb1a7a5999095 +949697959498a6b5bdd6eeddc4b29fa2b5d8e1cdd0d6a04e322534364443 +423f43517496c9c2c5d2cbddd5cac0c9eae7b2afbf5d354338413c3d3e3e +3d3b3835373d403c3b3f45483a3a3d42444445474c4b4d51524f4b484f4b +474647464441444e3d664947454c525253565657595a575756524e4d4f51 +46454b5058525549484d4c4e4f475e4c595b675e575e5959564b5263645c +5e65686d5a5a4b4d575b605f5c5f6461636d6d544a616558585458585856 +5f6158565062504b3f9fb85138303c36303298c415b8b3fbf779fe63e7b5 +45f5e4a03e3b3fe6eaf75afc6bf376febf9ab1ff7affffabf46c66733aff +fcc3d63ffbc3fc61f3614af5318effb0554deae87187b93c3e3d3c393536 +3a393f6baa69203280f68462eeff576e7275696f676f6f6f726c736e6a6c +7174726e6f7b73787677736e73787b7a797f78a0a2ffffff244e544b4b54 +56544b3d31240b0d241f020b03000000000700070f0501080f0d0b0c111a +20240c99b45d385bffffffe5c4ffffe9d3abff72ff351e201f9a5769a995 +62787d8380865d6ec6183c74486577da58fffffffffffffff8f4f3f9ff9e +ff92434e91fffb5daea790ab6da386998c658060ffff88536bb2ff95a8eb +fffff1ccbddea38082736a718c8d8c9291949fa19b9a9ea5a9a8a4a6bad5 +dbdff1edf8f8fff4dfffffc0e4feffebd5bbcb9d4635222bd3ff1f629a97 +a79bc6dcedebf2ebf5f8f8f9f7ede0d6d2d3d2d0d1cfc9c1ae8c6ac0cabd +2ff4ff4e4065c3759ed73e5a6a5e3235312d2e2f3026ff5a3d43249df8fe +962f2e2270f6effffea09581b9c7e1e1eddad9e7dfe2e7f0efd1dfced6e3 +e3e1f5e3fdecf6f3f4ffeaf9f7f0fafffdfafff5fef0f4fffffffcfff7ff +fffffaffffffffff2223232627282625283b93b5a3b3b3b0b1aea1989588 +7c807e81848380838e99a1bad3c2a998858999bec7b2b3b982331d132426 +322f28201b203950796a656f6c8280796e76919060698b391b30252e292a +2b2b2a282522242a2d29282c323527272a2f3131323439383a3e3f3c3835 +3a36323132312f2c2f392851343230373d3d3e41414244454242413d3938 +3a3c302f353a423c4034333837393a32493743424e453e4540403d32394a +4b43454c4f54414132343e42474643464b484a54543b31484c3f3f3b3f40 +403e474b403d35483e3d309ac9766a666d635d57a7c91bbebbffff84ff6b +efc053ffffc3676465ffffff65ff6bf275febf9ab1ff75fffea2f8767580 +3ffff8c1da4affcdff6aff7b64ff3a8dffa95653f6f886a6e3778991928d +85868e877892c58344548ffc8761e6f34358575a50565159565655515855 +5153585b595557635b605e5f5b56595f605c59615c878bedfbf30e363925 +1110131513121621233d6d7e708380807e89888c7c81877d788085837f7f +82868a75309b9e37082ef2f6f0a17ab097643c23b338cd0c040e13882e39 +8576425b626d6b744a5db60b2f64375262c33ff1fdfefdfcfafbfbfcfbf9 +f87fdf6420337cf4e544918a7390528a6d7e70465d3ceff66c395191f14b +387bc4a7562846989599b3b3abaebcbabbc1c0c2c9cac9cacfd6dad9d5d5 +e5fbfcfbfffcfffaffeed9eeee563429231d2c2e4f41141a0c19c3fb0540 +6e5b51262e29271b211a2125282928231e1e21251e140d0b0d100f0d1c8b +999512dbf62b2249a8597aaf0f2f4c44171a191516171a10f844272d0e88 +e1e47812140d64efe5fde27d715f9dafc7c6d2bfc0cec7cacfd8d7b9c8b7 +bfcececee2d0ead9e3e0e3f0d9e8e6dfe9f1efeff7eaf4e6eaf7fafef6fb +f1fdfffff5fefffdfafd1516171a1c1a1815132174907a8681828f8a6e5d +5a54576566645a514b4e60717992a8957a675253678b968589915c150a07 +171928241b0e02000f1c3a22181a12292d2a22283f40172b5c17041f161f +1a1b1c1c1b191613151b1e1a191d232618181b20222223252a292b2f302d +29262925212021201e1b1e28174023211f262a2a2b2e2e2f31322f2f2e2a +2625272b2221272c342e2f2322272628271f36242e2e3a312a312c2c291e +2536372f31383b402d2d1e202a2e33322f323734364040271d3236292925 +292828262f332827243726200f749c4235343e38322e86a9009c96e0dc5c +df44c8982fe3da9b3f3834d6dae345e551d657dc9b748bdf55e1e385d551 +4c5517dbd39bb522e3aae14be65841e61b6fe38c342fd0d15d7ab3414e53 +534f4a4b524d45639a56142264d05833bfd12a4144473a40394140404340 +47413d3f4447433f3f4b43484445413c3e4145424249477179daeae4012a +301c06050b10141925363f6198aca3b7b6b6afb7b6b9acb2bbb2b0bcc2c0 +bab8bab4a48640a7a1360428e7edec9e71a2865b432db12cb80000000074 +2c397964334b4f56565e394ba6001e5427414fb12be2f8fdfaf8f3f0eae7 +e4e1e46dd2550d1e67ded0307f78637d4176596b5b32492ce6ed602a407e +e2403779b49c5e334296a2adc2bfbdc1d3d1cfd3d0d1d9dcd9d8d4dadede +dcdfeefffffefff7f7edf0e0cdeaf46d63615c4d4b415a440d0f010db4ec +00366553502c3b3e423b484451585c5b564b403a3b3e3b3533312e2c2514 +12798b8b0ad4f125173b95446aa3072841370c0f0f0b0c0d0f05eb37191f +0077cfd36d0403004ad3cce6cd6959468797acabb5a2a1afa5a8adb6b597 +a897a0afafaec2b0ccbbc5c2c5d2bdcccac3cdd4d4d3dbced9cbcfdce0e4 +dee3d9e5eae9dfe8ece9e6e92f2d2c2d2e3235354182d1c5c7bfc7c7cbbf +a0888e959395918e8e8d8c8b95a1abb2c7d7eae0b3a3b7ccd9d0c2c6d7e0 +78372c344841444d5289c5c1ccd5cdc7d0e2d2cccee2f0bfafbc8e3c3e36 +3a33393a3b393636393d4746433e3f42423f3f3d3e414444444640494d48 +44474a49484d504f4a4a4f5449564d5f4e424c45414e504b4b4a4645474c +52524d494849584b594d5d525f564c555551535c836d57576a6357605c58 +615b5d594e50534c565b4c5d59606a6e5e5f5c5b584f4f5960695d62585f +626467646a646c74656a7571525b5ab2b5583d363f3e4287fcffa0f8ffb1 +cdf5edb5eee9643334383638306d8c7d22fa5bff79fcfd90b2ea3571fe9c +4a2f5f382d64d6683d497fb19640f25139f14f4958c4fdb4575f494c453b +4232323d3b363a3c474c2e30475e68dfb94ad8ff53647662686b62746e6d +7075756e6a6c7377746f717878677e6f7b74787c7e79787e79a28cffffff +3178645d485257564e4033261318211a0e0705110c0e0a01140e1c1e1a10 +0b0e1315181e3e0076c6ac363dfffffffec9fffff0cbadffff5df1812556 +d2fff54eaeee4eb49aa882a77279db48f1ff4e4077ac50f6ffffffffffff +fcf5eff2ffaea7991d3eceffff3fbfb98ea37da083b78e8fc071ffffb950 +69fdff7dc9ffffffffd7fffffffce9e4e6e9eef3f1f2efeff7f9f6f7fcf1 +f6f7f1f1fbfcfefef7fcf2fdf1fffaffffd6f4fff3f3dcc4b3ae663f3228 +8cf92360d5b6ff9ad3e9fcf2fcf1eff5f6fafdf8eaded5d5d8d7d8d7d2cd +c09e6ca5c9b9779aff7367736d7080d62b586d6a3235332c3030311cffce +324d3a6fffffe2514a4a56e4fffdff7a7b8eb7b2cdbfc4cacadccbdad5d2 +f7f2d1e1edeedde3efeaf1eae3e3d7ffd9ddd5ddfff0f1effff5fffffbff +fffde2ffecf3f2fceaf1f2eef0f91f1d1a191b1c1e1f296abaafb2aab3b5 +bbb190797d8380817f7c7e7f7a777d888f96abbccfc698889cb1beb2a3a7 +b7c462261b24362b292925528375787a6d656d847b7a7f9099696079611e +2b252821262728262323262a3433302b2c2f2f2c2c2a2b2e313131332d36 +3a353134373633383b3a35353a3f3441384a392d37302c393b3636353130 +32373d3d3834333442354337473c4a413740403c3e476e583e3e514a3e47 +433f4842444035373a333d42334440475155454643423f36364047504449 +3f46494b4f4c524c545c4d4f5a57404a45a5be726360646367a3ffffa0f9 +ffb7d5fff9c1fafa794c545e61665c95ad9631ff5fff7cffff97b9f03971 +f59754447a523f71e1734e5e96c7a751ff6c54ff584851bdffc067746470 +777a8c82828d86848e8a81774d4f71867eeabf49d0fb3f4e5b474f524c5e +5554535a5a5451535a5e5b565860604f6657635c5e61605b585f5d8975fc +fbfa1b6047370c0e151a1714161c233e606c6e6e6e7b7679716677707e80 +7c716b6b6a686769822c83ba8b090dd8f0f5b76fa7a172442ab3f13ecb5b +0740c1f5c31786cf2d957b89668c5962c636dffc3c2b619335e1fdfffdfd +fdfefdfdfcf7fd917b6f0029b9fbf024a2996e866285689b6f6f9c4ee1f7 +993050d8c428619be5b46731acf0f1fefffffffffffffffffffeffffffff +fff6fffffdfdfffffffffcfff4fceafcf0f3f17e4b2f1825313230492c1f +1a147ae6073ba97bb425372f2f1f2c201c2122272b2b27232325241c1410 +10161614136a98915b7ff0524655525361b0002c4d50171a1b14181a1b06 +f1b81c37235afaefc5312f354addfbeef259566b9b98b1a4a9afb1c3b3c2 +bdbadfdabacad6d7c8d0dcd7ded7d0d0c6f4c8ccc4ccf3e1e3e4fceafffc +f1f9f8f6dcffe6ededf7e5ecede9ebf412100e0e0d0e0e0a114e9888877b +81879a8e5f4045515f686b645a524845515f686f838fa0936351657a8980 +74798e9f4a140b152a1e1813062b4f37302b190c122c2b2e34444a1c1d42 +3a041c1b1c13181819171414171b2524211c1d20201d1d1b1c1f22222224 +1e272b262225282722272a292424292e23302739281c261f192628232322 +1e1d1f242a2a2521202134273529392e3930262f2f2b2b345b452a2a3d36 +2a332f2b342e302c2123261f292e1f302c333d4131322f2e2b22222c333c +2e332930333537343a343c44353a4946282e268293433232393a3e7de4e2 +7ed7e191aed8d199d2d050242b3536382963806f10e644e65ddddd6e90ca +144fd8792f1b4f251546b74924356ca0832fe84b33e7392a35a0de9a404b +39424443514545504d4a52504e4921233f5450bf8f1ba9d926374a363b3c +34463f3e434949433d3f464a4540424848374c3d494243444641414a4875 +63e8eceb0e543f2e0101090f1011182533557f91989b9eada6a79c909e95 +a3a5a39b959695929089953793c6940e0dd2e5eab36e9f97664030b7e62a +b4460035ade6c61c7cbb1c83677451774550b322cbe828164c7d20cef4f8 +f7f5f4f0ebe6e2e0ea8170630016a6e6db11928a5f76517255865a5a863b +d4ec8c213cc6b9215e96d5ab723da3e1ecfbfcfffffffffffffffcf7fcfd +fefdfbeff8fbf9f9fffffdfbf5f6e6ead8ebe6edf28e7667505551473e4f +281410096cd70032a073b22b45464d4050484953555a5a54493e3b3c3f3b +3837333530210d5a8a855078eb4b3d4a41414fa3002342430c0f110a0e0f +1000e4ab0f291549e8dbb5221c2032c3e2d7dd464357868199898c9292a4 +91a09b98bdb89aaab7b8a9b0bcb7c0b9b2b2a8d6acb0a8b0d7c4c8c8e0ce +e4e1d6dededcc4e7ced5d7e1cfd6d9d5d7e0322c2f2d2c3a443a71cbc2bc +c9becacac4a99a9c948d8c8e97918d908a958a989497a0b1c9dbe3e3c8cd +d8dccfbfbfc6ca3b3736313f45476abec7bddee4d1d4d4d1ced2cdd5bead +bbb455313a2e3c353d393434393d3d3c393c413438453d43393f413c3c3f +3c35363f3d3b4343424b4e4c4b4d4f4f4c4845454544474c4e4e4b62536c +635d50545a56496e59514c554f504f4d4d515558464f514e474b51565959 +63585c6d635f5755595951505a5f6562696659657166616e6b675b6d6658 +676567677267736e6b5b5c5b515f6e605e6056634ecbb4518464383a294c +5ba4824b8dbc4e684b4283833a7c5a4444403a287a6a26fb51ff596e734f +54383132c7943f56312c3245d386645c52454953f45336f765786fe5ff94 +6b6c9b78394f473f47475549433e492ba5af5e4d78b5e576aeff4a7a7178 +6972646e7169665a5c6e6e5e65696562636657635c768374807b7b7e7d7a +6b919decffff3d8163634951554c513f36341e3b71787679728e868a9097 +9b9ea1a1aa97b2a6bac4c5ee5934a9b3462dcffffffac0ffffecc9a6efff +ff5b9c73126ecfffff549dac6873a1736a9f5478b75fffff952592904be2 +fffff5ffffffffdbabe3ff9079a01e70ffffff4a95aaaba1b6a29ba9a596 +b197d5ffd1727df6cc8ecfffffd5eecde78c7dd9eceee3e9f5f1f2f0eff3 +f9faf8fcfffffffffffffffffdfefdf9f8f8fffffffeffd3cafafff2e4c5 +beb0805e2d3e2f364367d88ff09dd0edf6f8f7f8fbf1f3fefffcecdcd1d8 +dadad7d3d2cfc2a580aeb6a65e15262437293d4d33ee384769644b323132 +2d2e34147ea398ad7f94ffeebc84878d7967e5ffff928184a5a1aabce8db +ddf9e9ebf1e9d8ffc0eebaf2d6d4e1d5ebebf1d8def1e4dee2e2f0e3dbfc +ecf9ece4efecd5f5d1f4c7fbe1e2f4cbeae5e5ff201a1b1a16232e2259b4 +aca6b7acb9b9b49b898d837b797c868282847c8373817b7e8799aec1c8c9 +abb0bbbdaf9f9ea9b32a27251e28261f367e7c6a848572726f6f757e7b83 +685a71772c16291f2a212b272222272b2b2a272a2f2226332b31262c2e29 +292c2922232c2a2830302f38393736383a3a37333030302f32373939364d +3e574e483b3f45413459443c3740393a3937373b4043313a3c3932363c41 +40404a3f43544a463e3c4040383741464c49504d404c584d4855524e4254 +4d3f4e4c4e4e594e5b565343424137455446434a425033b4b05c9b805154 +4562609f794087b84e6d514a8b8e49917464696a66509b8437ff57ff6078 +7f5b63473d3ac89a557a5b565665eda18380796b6d6fff664eff68715fd7 +ff9c777eb097698b88848c8c988e8e847d50c0ca86738bbee875a6fe3664 +565d50594e585850493f415454444c504c494a4d3f4b445e6b5c66605d60 +5e5b4f7888dafbfb2566453a0e0e171420181a28235196a8a9aca1b7a9ac +b3bcc6cdd4d7e1cee7d5e2e4e0ff68399e991e08b7faf9ca6b96a5664230 +9bf0f14478500165c4f8cb1d7d98525a8150477e385d9e49edfb7f0f7978 +33cdf6ffeffefcfcffdfb8e8fd744e780660f7f6f32f788a8e849a87808d +86768d77bbf9ad4e64d07d3178cede5f432d8f6265d5fffffffffef5fbfd +fcfcfbfcfcfaf4f2f4f5f8fbfdfefbfefffffaf7f7f8faf0f88a282a2724 +352d3547433910281d232541ad569f2a322f2723272a281c1a252929231b +1b24231d11090a100f111a6a8580400009031407213216ca091b47482f18 +191a17181e00688d8095657df3d8a0656a776a5ddef8fa735d6086858ea1 +cdc0c4e0d1d3d9d1c0eea9d7a3dbc1bfccc0d6d6dec5cbded1cbd1d1dfd4 +cdf1e1eee1d9e5e2ceeecaedc1f5dbdcefc6e5e0e0fa1610100c0813190a +3d94877d897a858b92785b564d4d5864746f645e4f55495753565e6d7f8e +9190737883877c6e7181931010130f181205115042243631181713182535 +323a1f1434480e031f1820161d191414191d1d1c191c211418251d23171d +1f1a1a1d1a13141d1b192121202928262527292926221f1f1f1e21262828 +233a2b443b35282c322e21463129242d2b2c2b29292d2f3220292b281f23 +292e2c2c362b2f4036322a282c2c24232d3238353c392c38443934413e3a +2e40392b383638384338433e3b2b2b2a202e3b2f3035293216948a326f57 +2a2f1f3e40815a2065952a452b236466226a4d3b3e3c331c6e5d17ea3de8 +415559333a1e1515a8782e4c2b262836c07457524a3c4147ea482ee84b55 +46bce1775156876b3957504b53536257564e4c24959f54425e93b94781de +1d4d454c3c433640423a392e30434333383c3833343727332c4651424b45 +454849463a6475c6ecec195b3d3408060c070f070c1c1d4f9cb2bac1bbd3 +c5c5c7cccfd3d7d9e4d3edddecefebff6d3da6a4290fb3eeecbe6695a665 +3f2c99eae532623c0056aee9cf2270803b446c3c346b234a8a34d8e66a00 +63601bb8e8f3e3f1efeeedc89ed1ec6847700050e6e3e11e6a7d80768c76 +6d7871617762aaeaa14050bd762c6fc3d35d533983494bb8dfece6eaede4 +e6e3e0e1e3e4e5e5e3e4e7ebf0f8fdfffcfcfaf5ece5e4e6eee7f395515e +5c525644454e3e30081d0f141b38a44f9c2f414843434950534c4f5a5a54 +4538343d3f3d352f2f322c21185d7673350003000e00132106bc00103b3c +230b0d0e0c0d13005d807489586de0c38b5158625344c4dee6614d50726f +7686b0a3a5c1afb1b7af9ecc87b583bba2a0ada1b7b7c0a7adc0b3adb3b3 +c3b7b2d5c5d2c5bdcac7b4d4b0d3a9ddc3c4d9b0d1cccce62c3c2f364730 +3d41aacabbc2cbbfcac4b29f96999fa09d56446f938f8595948b9091949c +a8bbcddae4ddd6d3cfc9c7c5cd701b3f35363453a9c0bfcedfd6cdcfced2 +bdd8d7bcd7c5a67631384939423d3a3a3b3c3d3d3c3b3e3d403538433f47 +333a3d3b3b3e3d38373e3a363b3b39404846444547484847494a4a48494d +4f4f49534c574d53414f4b49466b5f4f444343454544444547484b514b49 +424e4f525f5a585152575456555a605e5d67675a58565469597067595a57 +57635c514b56545c53605a5e5b58515867665f6968506854625d4ed5ab57 +f66b73f5968ff8ffd2fffff3faf9f9cef9eb38f8df355e64423df07f35fa +57f26352504f2143535bf48b274c534c5767d085265850a97856f16645e5 +6965a7905c2138f8d5e665464a4043404c4544443c5bf4a16042b0d77ed6 +e7ff4972717372696e747267cfff83d2ff64caffa5c9d36ec2ffd35e6f79 +7e79797e7f7c70968b1d0f5d29475453414f5b50505b747462a7f5f2ecf2 +effbf7f8fafaf8f7f4f1edf0f2eff1feffdb3f8a864625b8f9fff2c4efff +f4cda6ffffffff91698626d0eafffd4a9a897081a986969e6e77a479dbff +a6456f6361adfff0d6f4fffdffe4cdf5ffac628c57a8c48fe44f80a0b6b6 +a97a82929f7497836262636f9ff897b6f8ffffded8baa9776eaef1f4edf1 +fffdf9f7f6fafefffdfffffffffffffffffffdfefefdfbfcfffffbfffff8 +bbf9efebe2c2b1bf9f7e2a33367b3954fbb6b4bed8f2f6f5f2f0f4f5f5fd +fffdf3dfd6d9d8d8d9d4d6d5c9af7693beb59521afa63445517323d8703b +6365523336322d2e2e196af06f6e6e5f92b8b7574c5d5682dcfdffc86072 +99929aa6d1cfd2e6edebfcf2deeaefe8f1ffebf5fffcfffffffaf9fcffff +fdfff2fae6eefae6f7f6effafde3f2fef1e8ffeffff6fffdf6ff1a2a1b20 +301a252993b4a5adb9afbab6a48f85878b8d8a4637638b86788681747979 +7d8490a1b4bfcac0b7b4afa9a5a6b55d0a2f221f14266e796e7483787070 +6b6f6182846b867963410d21382a2f292828292a2b2b2a292c2b2e232631 +2d3520272a28282b2a25242b27232828262d33312f303233333234353533 +34383a3a343e3742383e2c3a363431564a3a2f2e2d2f2f2e2e2f3233363c +36342d393a3d49413f38393e3b3d3c414745444e4e413f3d3b5040574e40 +413e3e4a4338323d3b433a474145434039404d4c454f4e364f3e4e452fb8 +9e59ff8084ffaea3fcffc5fef9eaf6f7fbd2fdf142fff5517e88685fff95 +42ff5bf66a5c5f6032556465f18c396b7a767882e79a417774cd9970ff73 +58f46959937f592944ffe7ff95828b8588858f8a8f896e7fffb88463bfdc +81d5dffa355c56585950585e594eb2ea68b8f34ab1fa8cb0ba55aae8bb46 +5761625d5b5f6060537d760b00470e2b332a091220171f32586460aeffff +fcfff6fff7f9fcfffffffffffffffffefbffffd230756926009ef5ffd284 +8999613e32b2f5f8f67b466619cbe2facc187d77606d8d63757d4f5b895e +c2e78d2f574b499bfeead5f1f3edf4dfd2f7fc8e3763419bb37dcd356382 +989a8d60677783557464504d3f4a83ca3c54b5ddc253362f605454a1f9ff +fcfafef8f9fafbfbf9f9f9f7f2f1f4f7f9fbfdfefefffffef9f6f7f7f2f3 +fab7212f1c20302427525e560c1b2465182dd38169503a3225202524211d +1a222a26251a1c23201b110a0c11101208498d91750592870f20335908b7 +440d3f4734171b1a17181a0554d8545354487da39b372d434577d5f1fba9 +3c4e7a767e8bb6b4b9cdd5d3e4dac6d2d8d1daead6e0eae7ececf3e7e6e9 +f5eeecf8e1ebd8e3efdbecebe3f0f3dcebf7e9e2fae9fef1fcf8f1fe1020 +101320050d0d738f7c80897c86877f6b57555962692d26537669555d574a +5053545860707e889188807e7c76757a8f3c0018110d000744432c28301e +1312101a14393e29443b2f1900133125281e1a1a1b1c1d1d1c1b1e1d2015 +18231f2711181b19191c1b16151c18141919171e22201e1f212222212324 +242223272929212b242f252b192723211e4337271c1d1f21212020212122 +252b25231a26272a342d2b24252a2729282d3331303a3a2d2b29273c2c43 +3a2c2d2a2a362f241e29252d24312b2f2b28212836352e38351f3b293529 +139a7b32dc5960e68a7edbe1a5dfd9c9d1d1d6add8cb1de1ce28555a352d +e16f24e842db4b393836082b3a40d26c13414b464b57bd6f164b469f6e49 +e3593ad54d3f7a6338041ee1bfd7654e534c4f4c595357533d53e18e5434 +94b352a7bada1c474547453c4146433aa2d957a7e2399de6789ca43f92d0 +a32e3f474a45434a4b4b41696300003903202a2408111a0c0e1c404b4b9c +f8fdfbfffefffffdfbf9f9f5f5f5f6fbfdf7f3fbfacd29706b2b08a1ecf1 +c57a859d694432aeedeeec6d325108b8cbeacf1b6f5f47557850646c3d46 +7449acd177173f332f83ecdac3dee3dde3cbbbe1ec83315d368ba169bd26 +55778d8e815156646e4060503c3a313a6eba3951a5cebf5843344f36337e +d2e1dddfe9e4e1dfdddcdcdfdee0e0e2e7eff5f9fefffffffdf6ece6e4e5 +e1e5f0bd45614f4d523b37585a4c020f16580f26cb796453494b42404649 +4c4e50585c524938343a3a39353032352f25093e7e8168008a82091a284a +00a83700333c290b100e0c0d0f0049ce4948473a6c8e85221b323161b9d7 +e6973040686066709b979aaeb3b1c2b8a4b0b6afbacab7c1cbc8cdcdd5c9 +c8cbd7d0cedac5cebdc7d3bfd0cfc9d5dac2d1ddd2cae2d1e8dbe8e4ddea +333735393d40398ad2c7bdc8c7c6cab99a9e9f9d9ea48843977a1f55a385 +919b949393939299abbfcddeede7d3c2c1c6c5b723353f42415bc7b3b5d3 +d8d0d5d1c5ced1d9bad2db9754453f44342e413c3c3d3d3b3a3a3c3f3938 +3f3d3d403c40383e413f3e403f3d3d413e3d41414146444341414346494b +44464744424345465b544c473e52455c5046465d5b4b4847444547484645 +44444b453f49494e4c505c52484d4e464b504e50524e4e595d545f5f585b +3c49505969614f44565e5c5a56625d6c6a716e697277776e6b7479746a61 +706c68eb9db4fa6e4eef20bfa4cacaf485eaff5bff98fff290fbf071edec +a8bfdc334df751ff635dfaf9ef4c464b9abe821b78764b837fffac2686f1 +965bfe5a5cf847ebeda3ff3153e9d7f2543e433a3a37413d3f444aabf46b +6535f4ff52a7dcff54617c6d72786864646ef96a4fa2c03bbbd255d4ffa9 +d67bfe5b6b7a7975757878756a919434114735324b5e424a575455617c69 +54a2f6fdfafffcf7f3eef2f5f7f7f6f5fdefeffefcfbff376d84412980ff +fce7b2ecfff4e1b7e3ffeaf7ff978bc3355d4e5868626c7360929384817b +7a8b8f5b393b4e4a53848e79fbd3d6f5fefeffffeefff8ef89ff1f3e3535 +574c72683235232f332b2e659a7633647155b8d08cccffffffe1bab89184 +6e8bfafefefdfffffefefdfffffffffff9f9fffffffcf6f2f4f8ffffffff +fefefeffffffa7eee9f0e0cfafae98a537319dfffa3ededfc7bdd8f3f8f5 +f2eef3fffeffffffffe6e0dfdadbdcd9d9d8ccb3957eaa92ff33ffff6640 +3b562aa6b53a57675a333a302d2c2c3632ff761e221b7ac1d4603532148a +f8f5fffb3f69888ca5a8c0ccd4dbeee5ede5f5ddfcdfe1f5f2f1fafffff3 +f2fff3e9f2eceaffebfff8fffff5fff7fffffefffffbfffafefffff4ffff +fffb1f231f2326271f71bab0a8b3b5b6baab8d8f8e8b898e75358c72194f +99787f867e7d7d7c7c8194a5b2c3cfc9b3a2a1a7ada110242d291f2a8767 +5e767a737a76636b7583678490541e1a202e231d2d282a2b2b2928282a2d +27262d2b2b2e2a2e252b2e2c2b2d2c2a2a2e2b2a2e2e2e3331302e2e3033 +3638313334312f303233463f3732293d30473b313148463633322e2f3132 +302f2f2f36302a343439373b453b3136372f343937393b373742463d4646 +3f42233037405048362b3d454341404c4756515855505a5f5d54515a5f5a +514b5c5446cc8fb4ff805fff3ad3aac5bde77ae1fd58ff98fff698ffff8a +ffffc2d5ed3d51f74fff6664ffffff5c564f86a87d258a8b57897cffad2c +90fda265ff626fff46ddd792ff3c62fae6ff847d8e8a8a878c88908d7ecf +ff808552ffff54a6d4ff404b6152595f524e4b55dc4f3489a722a2b93cbb +fa90bd62e54252625d59565959594d787d1f00301914293510111c1a1f32 +5a51469cf1f8f2fbeeeef7f9faf8f6f5f4f2fbefeffdf9f6fa2a5869200a +66fcffe282979f6742309df1f0fffc7a66a024554446453a4f5d52847c6a +66605f7074401e2236323d6f7969f6d6e0faf5edf2f0e9ffe2ca58da042e +24224032544a1419081819111349795a22524d2e959b2a6adce984402d4c +57624c73f6fffff7f9f3f4f8faf9f7f5f5f6f7f9fafdfefffffffffffffc +f7f4f6f8f6f7f9db162d20292b2d2241537912158af9d919b9b082553c35 +27202625202723283229301f2427221e160f0f1413141e2b7971e315f5f7 +3d171d3f13898a0c31473c171f18171818221cf95b02060167acb8401417 +037ff1eafcde1a44676d898da5b1bbc2d6cdd5cdddc5e5c8cadedbdae3f2 +eadeddf0ded4dfd9d7edd8f1e9fcf2e7f8ecf5f9f4fdf8f4fff2f6fefdee +fdfffdf5161812151411045296877d848383877a6366625d5c65541a7a65 +0d3f8058575b555654524d5162727d8e9b95806f6e78817a000a17150609 +592d172623161d190c1a283a2344561f00000e231c16241d1c1d1d1b1a1a +1c1f19181f1d1d201c20161c1f1d1c1e1d1b1b1f1c1b1f1f1f24201f1d1d +1f222527202223201e1f2122352e2621182c1f362a202037352522212021 +232422211e1e251f19232126242833291f24251d2227252729252530342b +32322b2e0f1c232c3c34221729312f2d2b37303f3b423f3a4247463d3a43 +48433d3443382baf6c8ee05a3be013ae88a59dc75ac0da35df74dcd173e1 +da60e0dd92a6c31a36df3aea4b43e2e1d8352f2c6d915f02646433655be1 +8b086bd77c43ea4a51e82ac3bf76de1439d0bfe15448534d4d4a534f5555 +4da3e1575624d5dc2578afdf28365041454b3b373741cc3e2175930e8ea5 +28a7e47aa74ccf2c3c4a4743414545443b646b0c00200d091f3113171e16 +132041352b82dbe5e5f1e5e5e9e8e5e3e1e0dfe1eee5e7f8f4f0f4214758 +170765f6f3cf76929f6f543e9be6e4f8f672548c12422b32433a4148386a +6a59554f4e5d612d090c1e1a25545e50e2c1c8e4e4dde4ded5ecd4c154d5 +001f1411322549400a0e000a0a00003466450e3e3f1f828d2967c7d7894f +354943463159d9e9edebf2eceaecebebebeaecedebeff4faffffffffffff +fdf6ede4e1e2e3e6ebdc355a4e524c4533474e6e090a7ceed211b0a87b56 +4a4e444047494b585b606556553e3d3f3c3c39353538322822236a5ed40a +ecef3b13153103777a00243a310b140c0c0d0d1711ef500000005697a22b +03060069d5cee4ce113b565871728a949ca3b4abb3abbba3c3a6a8bebcbb +c4d3cbbfbed1c1b7c1bbb9cfbad3ccdfd7ccddd0dbded9e2dfdae8dbdfe6 +e7d8e7eae7df392b3d38334367cfc8c2c7c5c4cdc2aa979b9ba8b09e543c +a18f3510598f7d8790939699959097a1aec0d4e3e5ddcfc1bcdc682b3a2e +4967b7b1bad0d2d7e3d3cbb8e2e2b3c6cd6341414a3d313f43313d3e3e3d +3c3b3c3d3b373c3e3b3b3c3f383b3d3b393737373a3b3c3d3f3e3e414041 +414143464a4c424647434040424345474c55505741435443444a4e40494c +4546484948454445785748454d3e49574f4e4655584c5555534f53554d4b +545d50464f515859686645676b49545c625a626062626c5b60595d5d5d65 +6d6765726e6f5d6048f2a0f6c9bd4af114b3feffc7f3ffcbeb5de6a8eee8 +d6acf278384048fcb1cd62ff58ff5762f3b3f45f84bbb9dfff49816252f1 +babdff40dadb4c5cfc5e5cf233ffff82ab3f58f2e3eb4a4a3c37393b3f3b +3a4046e0e5eb622261f86d7ae2ff5d6a7264616f6a6d6870ff795da4ed5f +dbd37a9fe44ba3c9d85869616d6d6f6f6d6d669099feffff31505e594c4f +5058616485796cadf0fbfbfffffbf0eef4f8fcfffffffff9fff0ffff7052 +9c4f3267ffffffb4e5fff6dea6fffff2e0e7d6a973d921453640475489d8 +710b162720244248704a75999b5d63ad8c68e8bdd2e1eafaffffdfe9eac7 +73ff2e3b57d7ffb6899e722f3f4a414540829d7699ffff61d9979bfdffff +e5d1a9c09e95a6adfffffffffffffffffffffffffffef6f6fcfefcf9f4f2 +f4f8fefffffefcfcffffffffa4deeef0ebd2aeaba8e34a2352ffff3384cb +d0f0cff3fef5f0eff0fffefffffeffe5dfd9dcdededad6d3c7b28d67af9f +d634d2ff852c939a8f76fe304d6964363a2d2c2d24321bffec1e384860da +e1c62b3a383bffe0ffff496a72809ca6a3c1d2d1d6d2f1e9e3def8f7e4ff +f6e1f6fffff9ebffeef4f4fbffffffffebfff5fff8f6fffff5fef7ffeffe +fffafffbffdbd3ff251727211a2b4eb7b1abb2b3b2bdb59c8b8d88929988 +422e9a8b320d51836e747d7d80847e797f8993a4b8c5c7bfafa3a0c4541a +28152432735f5e70727c8b7b6c58868c627c8b2d141f302b202e2f1e2b2c +2c2b2a292a2b29252a2c29292a2d25282a28262424242728292a2c2b2b2e +2d2e2e2e303337392f3334302d2d2f30303237403b422c2e3f2e2f35392b +34372f303233322f2f30634233303829344238372f3e41353e3e3c383c3e +36343d46362d36383f404f4d2c4e52303b4349444c4a4c4c534247404445 +434b534d4b575356494829d796fddbd662ff33ccffffc4f0ffcdef63ecae +f4f0e2beff985c605bffb7ce5eff53ff5767fdbfff6e93bfa3c6fd509374 +5cf2b3b4fb41e2e55666ff6c75ff3afafe79b65672fff8ff80918a8b8d8d +8d8b8e8e7fffffff864470fd7079daf549545749485654574f57ee5e428b +d446c2ba6186cb328ab0bf3f5048525150504e50497782e9fbed132e382c +15100a121c2a5b5b5ba1e4ecebf5eff2f4f7f7f7f7f5f4f3f6effce7fdf6 +63407f2f124bfaf9ec8c9a9f704d1fa7f6ffffffdb9854b60632282f2b32 +69bd61000b1c13132f3159315a7e82454d997861f5daf7fff4f3efedd7e1 +d5a544e7172b46c4fa9c6d80551424322a2e26677e5b88f9e035ae5b3da4 +f3ec4f2c377771758392fefffff7f7f0f5fafdfcf8f7f6f8fbfcfeffffff +fffffffffffdf8f7f7f8f9f7fbeb1b282b2d322a213e61b322053cfaf60e +63a3948e37352f2227261d2725273325321d232326231c1412141313100e +7c7eb514b7f7590074847a5bd3002547441a1f171619101e05ecd1001a2c +4dc8c5a60a1d2530ffd7fcf627455161808a88a6b9b8bebad9d1cbc6e1e0 +cdf0dfcadfe8eae4d6ead9dfe1e8eef1ecf0dcf5e7f6eae8f6f3e9f4edfc +e4f6f8f2fbf5ffd5cdfb1c0c1a110611309388818383808a816b5b605e69 +70611e1187802d08446b474953565759544d515964748893958d7c717098 +2f0010000a104423151c1b2131221a0b3b43203f57010006212118262410 +1d1e1e1d1c1b1c1d1b171c1e1b1b1c1f16191b191715151518191a1b1d1c +1c1f1c1d1d1d1f2226281e22231f1c1c1e1f1f21262f2a311b1d2e1d1e24 +281a23262122242524211e1f5231221f2516212f26251d2c2f232c2c2a26 +2a2c24222b34251922242b2c3b39183a3e1c272f352f373535353d2c312a +2e2d2c343c3634423e40302c0db972d4b3ae3ee60aa4e3dda1cddca8ca3d +c688cec9ba94e1692e2f2ddc91ae45ea3fea3d49da99dc476c9e8cb0df2e +6d4e39d29695db1fbdc03143e85255e81bdce1588e2a45dfcfde4e594e4d +4f4f535052544cd8d5d8561245d4414bb5d5313f463834423d403b43de4d +2f77c032aea64d72b51c749aa9293a323d3c3c3c3a3e376370d6eade0824 +2f291b1b1214171c45413f87ced9dbe6e2e1dddcdadbdadcdee0e8e5f5e2 +f6f05b346d1a0340f1efdf80949f775c30b3f2fafdffd79042a200210e1b +27315eaa4a00000a02031e21471d47696c2d357e5d45dbbed8e3dce0e0dc +c2ccc4993ee0091b34b3ea8f62764d0b19261c1e15546a4674e6d0289e50 +3b9edfdc5b3c36685a5c6f7febeff6f5f9f5f5f7f8f8f6f5f6f8f7f8fdff +fffffffffffffaf1ebe4e1dfe3e4e8e835515555544331435ba7180031ef +ef085a998c8d444e4b42474a48585c5e6552573a3b393d3e3e3836363027 +18086b6ba609acef58006f776948c300193b390e140a0b0e051300e2c600 +10213eb4ad8f000f161ce3b8e4e51e3d404c68726d8b9b999c98b7afa9a4 +bfbeabcebfabc0c9cbc5b7cbbcc2c3cad0d3ced2bfd8ccdbcfcddcd9cfd9 +d4e3cedfe1dbe6dfeabfb7e532333e393f47b5cbbac2cac2c8cdb29d9fa7 +a8a6956f8aafcca2604b62a2a4948a8a8e94989493969ca1abbed5e5e5dd +cfcd932d3e3c536dadc4c9cbd4dedeccc1cce3cdc1b1cf4e4f4039343c41 +383d3a3b3e41423f3a36423b3a3b3436424538393a3c3a39393b413d3f42 +3f3b3939393b3d3e3f414344464a4c49464648495756495354595d555244 +504e52424a4d4c4b4c4e4d4b4b4e5339464b745a58484a524c575a545c55 +514f5960585053595d545b545b4f534d54554832494d555d675d5c606954 +5d5d565959636c5b4c535054546438f592873b6a45e5604074692f524437 +3e393c2e33246a345a433d515ab1b8b469ff5eff2b5bf9e1f0436dfeff99 +9a234e343ef5e57a5c4ae9efc755f24e49e62643aba04e565c6dae773533 +3b3c3c42413f39403e4a492b27486ff79564e8ff435e676a6d5f665c6d56 +72575c56654369554951545a58564e625d676064696a696c6b997fffffff +4b9b51604c68676a695d7d7452a6f9fffffcf4f7fafefffffffffffdfbff +f9ffffa7288d724638faffffd7f7ffefe7ace9fff0d2c2d4e4c44dff2a39 +90ffff5d75dd9e172f2126285c497652d7ffff4f519a8b42d18b8994b7ed +f9fbf1fffaf66fbc43198affffc77f7e7e2548373e3c485fa1b69bffff73 +d798acffffffd3c5e5fffffcf2f1fff7fcfffffffefbfbfbfffffefefdfd +fbf9fbfcfffffffffbf7f6f5f6faf6fbfdffafd5e4dfeac3ada79be45e39 +4dcbff465cd7c3f8c8eefff5ebeeeaf4fffffffdffe5ddd2d5d6d7d0cbc8 +bcaa916bbd96c89a91f4897377485e5dff3f4468683f372c2c2e302f16e6 +ff4544542630293749434512eed0ffff895e696b608584adc2c3b0c1d7f5 +dcece8c6defbffdaeed9ecfef5f8f0f5f3eefaf7f6ebfffaffffe9ffffff +fefcfefffffcffffffffffd8d3fe1e202822262d9bb1a1abb5b0b6bda491 +9297928e7b5778a5c7a25f4a5d99968377777b81827e7c7d838690a2b9c9 +c7bfb1b37d1a2a212b37656e696874848a7767708977726c992331292723 +2c2f252a28292c2f302d2824302928292224303325262729272626282e2a +2c2f2c282626282a2c2d2e30323335393b38353537364140333d3e43473f +3c2e3a383c2c343736353638373536393e2431365f454333353d3742453f +47403c3a444b433b3e44463d443d44383c363d3e311b32363e465148474b +533e47473d40404a53423138343a40511fe294995c916aff875f80714067 +5b4e55505343483b8454806f6d796cb4b8af61fa57ff2e62ffedfc4f79ff +fb95aa3f735958ffec80665affffe471ff6973ff3f4faca86e818897d2a3 +7a83898a8c908c8d8f907d7a6d4f57778cff9b63e0f72f484c4f54465046 +543d553c413d4c2a503c30383b413f3d3549444e45474a4b4a4f4e7f68f7 +faf42b77262a06160b0b0f104851409bedfdf8f8f7fbf7f8f9f8f8f7f5f5 +f3f9f2fef99a17754a1e1ee5f9ea828ba47250249cf1ffffffffffd23ddc +00147af7f33f50bc870c322a2a27553c653dbdf8fa373b867745fdd1dadc +e4fff4f0efffefdf4b9b330d79ebf1ad6360610a2d1f28252e44859b86fa +f6439d545dcaeeac382a93e1e0e0d5defffffefaf9f7fbfffffffffdfcfc +fbfcfffffffffffefffffffffffefaf8f0f3f2f02e272a212c17203d52b2 +321737b4f32140b58f9d343435242426171c2b2c3728351e232123221c13 +0f11100f0f0c8a77a47a76d75b4558324b42e6101c4448211c16161a1e1b +00ceec272338131e0d1726263205e7c7f0f96637454b42696992a9aa98a9 +bfddc4d4d1afc7e4efc3d7c2d5e7dee1dbe0ded9e5e2e3dafeebf8f3d9f4 +f1f7f2f0f2fdf9f2fdfefef9fed0cbf613121a1010127a8c787f867e848a +735d5d66696858335282b19864505a8871574d4d5157595553545a5b6373 +8a99958b7d825600120c121535311f151e2c342419253d2e2f336b001717 +19191f23171c1a1b1e21221f1a16221b1a1b141622251617181a18171719 +1f1b1d201d191717181a1c1d1e20222325292b28252527273332252f3035 +39312e202c2a2e1e26292827282a292725282d1320254c323020242c2631 +342e362f2b29333a322a2d31342b322b32262a242b2c1f0920242c343c33 +32363e293230272a2a343d2c1c231f23253301c16d6f2f6441e15b355c4c +163c2f22292427181d0f57234f3a39443c8992914ae544e91343e1c9d82b +55e2df788617482e31e1ca5e4133d6dfb648e84a4de6182b8a813f4c5365 +a47243484d4c4d525151505346483f1f23415cd86d37bbd717333b3e4032 +392f4029452b2e2736143a261c24272d2b292135303a32353839383f3e6e +56e5e8e31e6b1d28102418130f0a383d2a89dff3f1efeeede4e0dfddddde +dfe2e6edeaf6f0910d6b40120fd4eadd7f8ba3766138a6f4fffbf8ffffc3 +26c6000462e0ed3d47ad75001f171915432c552cace4e41f236d5e28dcad +b1b6c5e8e0dcd8e8d9cd3b8a1c0065d8e1a05856590124131a151d317086 +73e8e637924b56c0dda2463888c9c7c8c5d0f3f2fbfeffffffffffffffff +fffffffffffffffffbf9f8f4f0ede7e3dfdfd8dcdeec444c51454e313041 +4ca7270d2cacef1b35a9849c404b5043434a404d61616754593b3a35393b +3b3330302a2119087962946d6bd15d4753273c31d50010383b1611090b0f +121000c4e41f1a2d050a000013182400caa6d6e8603035342a514e778b8b +76879bb9a0b0af8da5c2cfa3b7a2b6c8bfc2bcc1c1bcc8c5c5bce1cedbd6 +bfd9d7ddd8d6dae4e0d9e7e7e7e2e7b9b4df303d373e4389d0bcc3c5c5c4 +ccbea09a9e9ca9ac9c6fddcbb6bf67523d4c918d8e8c898b919595948e98 +a4a7aabad5ebecd8c5563a625d63a8cecdc7d7dbcec5c0e6d8bdbfc79339 +373b3b3840362f473d3b3938393a3a393b393b3f3534423b3634363c4040 +424649424449454242403d3e404243434241464a4c4a484849484249404f +4f4d55445549575151464a4f514f4f52514e5055535d77555a4160664f55 +514f4e4e514a4d4d5152515758504f575a5a505051575260686462545767 +5b584e6462636771797f776f746f635f68625c5e4de6854b3b2e26503633 +5041517b76505c517b8fc97a8a56a8593c3d6bf1ffca59ff4fff533dd9e9 +b71d2742f15e413c2d383b5f9b5765735c4b4d58ed444adb4e658abc6560 +504d5141424e42423c4140423b455a5a796c5a587db5a765bfff3a555f6d +5b686b53636b686ce9675568b36dbbb349bdbf496a67626d5d626869686b +67939dfdffff51905777518282807c73977469bbfffffffdf5eefeffffff +fffffefcf7ffffffe53f7d774529cdffffcafafff1d5b5e3ffd1978f8b84 +988e44b32343bcffff436cc7c7081d1725232d577884a5ffff5c4eaf505c +b467526394e4f2fffcfbfef09a87561fd4ffffc461966d252121281e243d +83b69cd8b184a49ad7ffffcfd2c2fffffffffffffdf4fcfffffffff9f7f8 +fcfefefffffffbfafafdfffffffffef9f5f5f6f8f1fbebffbec8d4d9dec4 +ac9478e198455044604f3db7a9d7d0e6fef6ebf2eff1fffffffeffe5d7cc +c7cac9c3bebbb1a593668fb4ad5f22223f5239377b39ed6a3d62694c342e +2b2e2e2c159bffa9686d65837e8c52605b26b5d6f9ffd25070626c837776 +84a8b6f8f6e5d3d6fcccd2b3ffd4f4fdfffbeddafcf2eedce6f4e8e9e0cd +f4feffffffe8edfff5eefff8f5fffffbf7fffff51c2720282970b6a3abaf +afb2bcb1948e928d93927f57cbc1b4c16a513844847f7d7976787b7f7d7c +747f888c8f9eb9d0cdbaae412446332b5b74686277807d766d8e7e677189 +661a242f2f2a2e251e362b292726272828272927292d2322302923212329 +2d2d2f33362f3136322f2f2d2c2d2f313232313035393b39373738372f33 +2a3939373f2e3f33413b3b3034393b39393c3b383b403e486240452c4b51 +3a403c3a39393c3538383c3d3c42433b3840434339393a403b49514d4b3d +40504643394f4c4d515b60665e565b5648444946484f3ade946c6b64577f +6558604d6695916b766890a1db8ca072ca846b6479f2ffc552ff4aff5746 +e4f7c5293349f0635a615b635b75a7617488796c7179ff5d74ff67718cc7 +878f7c75726b859c8e8e8a8f8a8d8f939586998c868095c1ad64b7ff263f +4452424f553d4a524b51ce4e3c4f9a54a29a30a4a630514e495442474849 +484e4a7883e3f7f82f682b3a001107060b185c515ab4f8fdf8fcfff8faf9 +faf9f9f8f7f6f3fffdfdd72d65591c03b7faf68280a06f573281f6ead8e9 +f0e5e9bf47950019a7f7f8244aa7b20330333a3231546c7390eefa43389b +3f67f6ccc3cadafff5f9fafaf4dc77644211c2eff9a843784f0806091209 +0a24679b85bd8a4e5b4f99e7ea653a3bd4fdeff0eefcfffefffefbf9feff +fffffffffffffdfefffffffffefdfefffffffffbf6f4ebf1dfeb4323201d +1f13202a2fab6a213a2d3d2c259b7a823f2f3327262c1c1c3030352d3523 +21201c1c170f0b0c0d0e0f025c95893d0a0511241a236a1fc23b133e472f +1918171a1c1a0083f188464f5272636c2f404519afcde8f9af294d424e67 +5c5b6b8f9de0decdbbbee5b5bb9cf3bddde6f4e4d6c3e7ddd9c7d1dfd5d6 +cfbee5eff1f5f4dadff6e9e2f7eeeaf6f4f3effbfaed111a12131252937b +7f807e80897d625a58566a715f35a39d9bb6735f3e396150514f4c50545a +59584f576061626f899b968885220d311d0a2d382012232d2b272144321e +2f503d001321231d20150e261d1b1918191a1a191b191b1f1514221b1412 +141a1e1e2024272022272320201e1c1d1f212222212025292b2927272827 +20251c2b2b2931203125332d2d22262b2d2b2b2e2d2a2a2f2d37512f3219 +383e292f2b2928282b2427272b2c2b31322a282e31312727282e29373f3b +392b2e3e332e243a37383c464a5048404540332f35302d2e1ab9693d3932 +2a53372c39273b68643e493c6577b1627242984f352f48c6dda538ea36eb +3e29c4d4a1050f27d24333362d36324f833e4d5f4d3f414ee13d4edb404b +679d55594741433b4f6050504c514f5251575f556a5d514c65937f3892df +0e2a33412e3b3e26363e3d40bb382639843e8e861c90921c3d3a35403134 +393a393e3a6772d2e6e8235e2237002319130f134e3d45a1eef6f2f7f7ed +eee8e8e7e5e5e5e6e7f4f4f4ce21594f1a00aae7e3747da16f5b4090fae7 +d0dfe2d4d6a92a7b00098cdef12240989f001c1d271f20435c637fdde62d +21822549d2a2959db5ece0e7e1ded9c463502900aadae89a386e45000000 +04000010528673ac7b4455498edadf654742c3dfd3d8ddedf1f3fdffffff +fffffffffffffffffffffefefcfaf8f6f3f1eee9e4e1dcd9d1d8c9e45743 +4340412d2d2c289f5d152f2539281b8f707f4c455045444f454c64646455 +583d37302f33312c2929251f1a004b8079310000132717185a0eb12b0732 +3b210e0b0c0f100e0079e9813d45446048531c3338088faccee8a9243a2b +364f41404d707ebebaa9979ac393997ad39dbdc6d5c5b7a4c8bebcaab4c2 +b7b8b3a1c8d2d7dbdac0c5dcd1cadfd5d4e0dedcd8e4e3d6363b34466aca +c2c6c9c6c4c8c3ac9d9ca4a3b2976761e2c5c6c8a45a4a3d507d8e8f8c87 +898f94919795969899a1b1c2dcebfe9c2a524c558fc5cec8d2d1c9ccd4c8 +c0d0bdb140372f3d3b3a48483f3d403f3c39383a3e41373b3e4337364435 +3631313a3f3f4045473b3c423d3d4342454343444545423f414445444444 +43424f4b48443e46565353454f48444141484a47484c4b47474c4c434840 +544f51445050524a474a45454f4c4d4d4d555b585559585e686958495856 +4d4f535b534c494a3e4a464d52555b666b6970746e696d706a6f70de7444 +2d392b37353ff53bf7e9ede7c5aafcffb9bdea8ff4947f75b5ffa2ff68f7 +5bf8304c3c0d164b637cfbb15853423f4586ef6d6c696c6c4c66fb515ff1 +69638576424438bee4cb4a3f444039423f46404c4debf6f7845eb6be90ad +c3ff4c66545e5e64576165676b56c53289abb86297d45d7b9d4e5d61665b +6163686a6b6c5e81a5572071494b41baa2c4c2ccc2d5fff1dcfaffffffff +fefcfdfffffffffffffcfffffeff448591593396ffffd2f0ffffeaa9c9ff +f0a764685167528835a54578fff5ff576d93f000000000000c4964859aa3 +ff6a615b61479169535d84dceafff7fffff8a0be7469bb9cca956797be30 +d8edfffffacea19e56644cb6b8b2f8ffffcacbeefffef8fefdfff8fafeff +fffffffaf5f5fefffffefffffffefefffffffffffffffffbf9f4f2f2e4ff +e3b9cddcdfd3a79285ffe92927387e4c34c4b2c4ede5f5f4e9f5f3f3f5f5 +f8f5f5dfcbc1c1c4c4bcb6b5ada3916e86c49fa115d1ff573b69b517c3a9 +3459675d32332d2d2f282d2affd5706a6b7c4c7c794a5c356ac4f8ffff64 +7467646f947c84a7afe5dfc6cfc5ded0dfc0ffd3d0ece1cdf1e0f2f2dceb +e8f7e2dffff7ece6e8dff4e7e3ebe5ecdaeaeedfdeeee6e4e6e820251d30 +50b1a8aab1b0aeb6b39e919199949b7c4a47d1bdc6cba75c4836466f7d7e +7b75757b7d7a7f7d7c7f818697a7bdcbe5851435211a4068676171787a80 +8474697c72751a232739332e37372e2c2e2d2a2726282c2f25292c312524 +3223231e1e272c2c2d323428292f2a2a302f333333343535322f31343534 +343433303c35322e2830403d3d2f39322e2b2b323431323635313237372e +332b3f3a3c2f3d3d3f37343732323c393a3a3a4248433e42414751524132 +413f36383c443c353438293531383c3f45505250575b554e4c51596566e3 +90746e7e69716b69ff46fff5f9f3cfb0feffb6bdec97ffaa9b8dbfffa3fd +64f55afc39594b1e265b7183fab46c766b665f96f36e727883876c7fff57 +78ff705e7872556455d5f3e27a809091899089908e917dffffff9a6fb4b6 +8facbbf538503943454b414b4c4e4e3baa1a71939f497ebb446283344347 +4c414548484a4b4f41668b3d055125211270282c23313b6ee0d3d5fdfff7 +f3fefffffcfbfbfcfdfdfcfcfffdf7f430697037137bfae9908f927f6337 +7ff6fce4d4f5e5f8d3e24a922559fee5f6345282e5041a160e181d505e78 +878ce7514b475056e1e0d9d7d6ffebf2ebf5fdda73915552a383af784777 +a014bdd5eaf6e0b585823b44207a6263cff2c2473d80f4f8e9e9e7f0fcff +fffffbf9fffffffffffffffffffffffffffefefffffefbf8f4eeeae8e8e8 +d5dd6d1a1f251d211d2a3ac8b7030f215c2b1ead88735f2f2d27262f201f +2b2d2d2b2e211a191c1d18100c0e11120b0853a57a7d00b4d2261c55a500 +9a7a0a35453d171d191b1d161712f7b44e4c576b315d552a462865bee8f9 +df3f5147465379616b8e96cdc7aeb7adc7b9c8a9eebcb9d5cab6dac9dddd +c7d6d3e2cdccf2e6dbd5d8cfe4d9d5ddd6e0cedee2d5d4e4dcdadcde1518 +0d1b37928582837f7d84826d615b5b59725e2c26a696aac2b67155302340 +5153504d50585d5a5d595757555966728698bd6600230e00152f22142228 +2d353d2c1c332f3f000b1a30282025231c1c201f1c19181a1e21171b1e23 +17162415140f0f181d1d1e2325191a201b1b212025242425262623202225 +2625252524222d2724201a22322f2f212b24201d1d242623242827232126 +261d221a2c27291c2c2e3028252823232d2a2b2b2b3339322e3231374142 +3122312f26282c342c23212416221c23272a303b3c3a41453f39393c3d42 +43ba6040364738413a3be11eddcfd3cdaa8cd9db9399c56ed77b6a5b8dd5 +7bdc49de45e51e3b2a0002374e62dc95474c3f3a3872d24e4e51595c3d57 +e53d58e64f3e584d283225a7cab84a48524f4a524e5552584bdcdcdb6c42 +8d8f638096d5203b283231372a34383a402a9502597b89336aa7304e7223 +32363b3037373b3b3c3f31557a2c00421715086d3541373f4167ceb9b9e2 +efededf8f8faf8f8f8f6f4f4f3f4f8f6efec255d612e1880f3da807f8776 +5f367ef4fcdfc6e2cddbb4bf29741044dfcbf1324770d100020000040b40 +4e68767ad33b342f3639beb6a7a8b0ebd9e2d5dbe3c25e7a39338b6d9c68 +3a6c9609b2c9dce5cfa1706d2a351372615ebde1c04f4981dfd8cccecfd9 +e5f0f6fafbfbfbf9f4f2f6f6f8f7f8f8f8f7f9f9f9f7f6f2eee7e2dbd5d0 +cfcfc0d47d3840443f3b2a2b34bdac00051b5a26139f7c6f6b4549464452 +4b4f5d5e5a514f3a2e282d31302a2728262116064290686f00aed52a194c +9500886a002739300c100e0f110a0c08efad45424c591641451f3b17459a +cee8db393e2e2e3b5e464d6f77aba38a9389a597a687ce9c99b5ab97bbaa +bebea8b7b6c5b0aed6cabfb9beb5cabebbc3bfc8b6c6cabcbbcbc3c1c3c5 +37403e4fb9c8c0c4c1c4c9cbb49ea39fa79ea7855891d3cac0c9cc6f5637 +42447f8d908a888e918d9a93929697969ca7b2bce0b6394c444a75bcd7cf +cac9ced6c3aec6caad6c473a383b3537393a433f3b434c4f4b4541404646 +403e30375043483f3d454a47474a4e3e3c3f3839403f4541403f42403e3a +4345464546474441454054483f454648574a55524d4d43464c494b4f4e48 +484c554744515146434d524d57514f53484e48454f5a534b50585a5a5f46 +594e574f595451656367564c4e5252495557675d514f505355575c666961 +5e654fd872372d2c2e2e314bf327dfd8c6a5fffedadff5d0d8baf6b5e2dd +8de1eaf458ff4ffe473a76ba705c5a53ab71263045413d70a89f3c60f9f5 +d267ff4f63f749a7f8b1b60a74f9aaf8664c43403944434a414c4bf1c0dd +7f5ac1ef6baae1ff3f56625a5e5e5a5c61625d74d052aea3b55bb1a25c85 +bb625d635c6a6163646a70725f7ba54c14403e375bb1c7dae2f3ccd4fffa +eef7fffffffffbf4fcfffffffffffdfbfcffff778fcb653352ffffd5d0ff +ffdba9d2fff4edc46c494448439115c851555f375a59638dd300998bacb6 +bd53677f4444495d6250b03e635f4a4d75e0f9ffffdeffb5a2eaa2385638 +4c596e909523fffff58e7b6b91ae576b85b5abd3ffffefcfacfffff0fdff +fff6fefafaf9fffffffbf4f5fdfffffdfefefffffffffefdfffffffffff9 +f4efe9e3e9ffffa9cdded8ddafa07de4ff32279ffffb21bebea7ffe2eff3 +e5ebe7e4f3f0f3f7f5e7d1cbc7c9c8c0bab8b4aba28652a9bcba2dfbff9e +2e5d6c507cf52e5466653236302e2e352e13e4e85b6c6455b1a277564348 +2294f2ffff886d6a5c5097707a9ba1bebeddd7fae7e9ffe3d4dcd2f5d7d6 +ffdbf9ffc0f0dfe8e8e2e4e5eadcd7e8d6f8fffff9fffff8f4fffffcffff +ffff1d262537a0b0a7acabaeb5b9a49097939c8e8d673a79c5c2bdcacf72 +58373e3b6d777d76747a7d79837c7a7e807e848d949ec49d23311b11235c +70676a727f88755e737c6b39282b31382d292828312c2a313a3d39332f2e +34342e2c1e253e31352c2a32373434373b2b292c25262d2c33312e2f3030 +2c2831343434343632302f2a3d32282f303241343f3c37372d3036333539 +3832333740322f3c3c312e383f3a443e3c40353b35323c4740383d454343 +482f4239423a443d3a4e4c503f35373d3b323f4151473b393a3d3f41464b +4540485747e199727475736a6572ff33eee4cca7fffad4d9efcddcc5ffcb +f8ef93e2ebf455ff4fff524784c8806c6659a46c344a65604e77a5983c66 +ffffe979ff5170ff489ce4a4c12087ffb2ff928b8d9189928a918c8d77ff +cbe49065bce66aadddff2b3c473f43433f434b4c4259b73a958a9c429889 +436ca1484349414f4646464c5355425e8a3300221a0d295d35272c43305e +ece3e7f7f8fdfbfdfcfbfffffdfcfefefefdfffffc6371a740133ef5f69f +779d91512d7af7fafffff6fafbfce8ff3bc0383b522839354980d20ccbc7 +dcd9cf5a6172322f34464b3a9a4db9e3ded5d1fff8f4fccdf19775ba7d1a +3e22323d51737909f5fadf77645176933e474f6e568af2f0763d2dc3f6f0 +f4f0f1e8fffffffafdfdfffefafbfffffffffffffffffffffefdfefbf6f1 +ece7e2dfddd9dfdda5192225192a1c2d28a8df12148bf6da09a69c628539 +2a262227181935393537362c1f1e1e201a120d10121214151383979b17e3 +ee7411495b3753c6022c424817201a1a1a211c00cccc394c514499845636 +2b381b8fe8f5f86648463d367d56628488a6a4c3bde2cfd2f8cfbdc5bbde +c0bffcc6e4f1abddccd5d4ced3d4d9cdc7d8c6eafafbedf6feede9fbf4f1 +fef7f9fd1017111f828e7f807c7d8387735f675f5c536a4d1e5596939ab8 +d48367392514475055514f575c58635a56585652565c5e6c9d7f0e1e0700 +00292e1e1d23323e2d192d3a310a09182731221c16141d1b1a232c2f2b25 +21202626201e10173023261d1b23282525282c1c1a1d16171e1d25222020 +22211e1a2324262426262420211c2f241a2122243326312e29291f222825 +272b2a2422262f211e2b2b1e1d272e29352d2d2f262a26212d3631272e34 +3331361d30283129332d2a3e3c403125252a29202a2c3c3226242326282a +2f36352f313a22b4643a3c3e3d373746df0bc7bea882ddd7b0b5cdaab79b +db9cc9bf67b8c3d036e435e8342963a75c484237884f11233c372a56867b +1a42e1dfbf53e83b54e62a80c98497005adf8be16154504f4a5450575155 +46dfa3bb643a96bf3e82b8e1132b362e302e2a2d36373148a1227f74862c +84752f5890373238303e35363b414345324c751f00170e01205d48444557 +3b5cd7c4cadbe5f1f6f8f6f4fffffffdfbfaf9f8fbfaf65c699b300840fa +f193678c83472b76ecf0ffffe6e0dcd5bede129c22242f0932353c6dbd00 +aeabc4c5bf4a51611e1c21343925833092b4aaa3aaf3e4e2e4b1d67d60a4 +6200240b212f43656b00e6ead1695440637e2a3743685381dcde7b4a34bc +ddced5d6d8cee8ebf2f2fafafaf5f0eff2f4f4f2f4f4f4f6f6f5f4f3f2ed +e8e1dbd3ccc6c3bec6d1af3242473b472e34259dcf030682f1d5009a905b +8e4c4645424b444865676160584937323335352d292a2a262217046e8489 +09d9ee760d404b2341b40020363a0c130f0f0f161000c2c1304143307f6a +452921280071cfe3ef5d3630281f663d4665698481a09abeadb0d6ac9da5 +9bbea1a0dda7c5d18cbfaeb7b9b3b7b8bdb0adbeaccfe0e1d5dee6d7d3e5 +dedbe8e1e3e73e424898cdc1c7c2c1c4c6b9a7a0a1a4a4a58e7ccbdfd5d1 +d8cfdaac4e303b36466b89959594918d8a94938f9697959b989baf592c41 +414e88add3d1c8bed3cbbfd1d6946c4247363a3f3d3b4549443c40434540 +3a4047323f3f3f493d4c483d3b404445464744403e3f4040434644404340 +3e3d424647443f4d494d47404e4f50505a5854565647495353574b434d45 +4e444c494b504348494548514045484a4d5157544c4f5656464f4f50554f +4d5950585c5955514f4b575c555256544f585d5d5762715d625c5e535c6a +535b565d675a56605ad6693b352a3132406df538929ffcffd9d8e7ccd0ea +7cc1a63b2b4191fffdd489ff6efc1d83ffe0f6345c8e82ffc4224f4a6aad +88ffff69ff969861f84f7efb68ffffb3fb4665d5dff45947464341444745 +444b49b8f1f6a01abdff5981d6ff486c5f655766585e665a4f6050494d5b +55546d675157486b537a4d684f765a65636363889df0ffff394f5da9d4f1 +ebe0d4d2fff2f1fafffffffffcf5ebf9fffffffffafaf6fcb954cc9b4c36 +f4ffe0d3fffff0bad2fffff0f8cd4b392526255717f5333f5377c1608a5d +5c0099803e06163876844686f5954c7ee3495a5a444966d7ffff9b62ff7d +61b3c534427dffffb694ab90ffd8232e444b8caa617e9dc4cbf3ffffcfc5 +e6fffff8f4fbfbfdfdfef6fbfce6fafcfefffffffffffdfdfeffffffffff +fffcf7f1ede9e6e5e4e4e3ecff8cd8deded6ceac96e3ff4c1774ffff4088 +d5abffcafff6fff7f2e7fffff1e3ece7d9d5d6d0d8d7cac7d1c4bb9d69c6 +c3c558b6ffc0237cceb359f43b416d643c2639372e363113d5ff222b2f38 +988b842931352c30c7f2ffab8e825f535c5a859896b1bbd1e7e0dbeee9d8 +dcffdcedffd3dff3ecfcf1fefef1fff5fdf5fcffedfff6fffffdfffff2fc +fffffef8fffffffb1f262c7db5aab2adafb3b5a99790939799946e58b0cc +cacbccc5d7ad573c4133304e6f7d7f817f7b78827f7b80807e8381839540 +1a2d211b354b686a6a677e786c828e57381e2e2630352f292f322a252a30 +322d272d341f2c2c2c362a39352a282d31323334312d2b2c2d2d3033312d +302f2b2c2f3534312c3a363a342d3b3a393940413a3f3f30323c3c40362e +38303b313936383d30353632353e2d3235373a3f4442393d4344333d3c3e +423d3a473a424744403f3d3944473f3b3f3a343c42423c4758444943483d +46563f4742444334394a4cde947a786f746c6687ff4dadb6fff9cfcee3cd +d7fb97e7d06347508efffdd481f76eff2488ffe4ff42648b6ef5c530655f +71aa7afdff64ff9ea26dff5c87fe64fbfca5ff5577e5e9ff8f8e908d8d8e +8c8c8f9079d9ffffbc31c4ff608adcfd334f42483a4a3742524838463730 +34423a39524c363c2d50385f304b30593e4a4846436982d8f2f21b27264d +35332925244fede3e3eef9fafafdfffffcfffbeefdfffbffffffaa35a06e +281febf8a97c9f7e5d3676e6ffffffffd9fbf4f1e1e04bf31c244669a43c +684a6511ddca7427223567703474e4843667c752b0e0e2dcccffffef844e +f1683c889c142e6df4f1a07f957bf9c20c162c347394515b536c83baf2be +432f7ae2eef8eff1edf1fbfffeffffe8fcfcfcfcfdfefefefefefeffffff +fffefcf7efe7e1dddbdad9dee4d7cc162d1b2122251d2da0f5400c64f8f6 +1f6abe7ba837402643372b29ba7c4a34372f211c1d171f1e11101c171e1b +108da1b048a3f6a40a65b89630c40a12494a2613211c15222306c5f70009 +1a288473690c151e1f2bc6f0fb9063573e39464470837f979eb4cac3c3d7 +d5c5c8f7c7d8efbecae0d9ebdeedede0f2e4eee6edf8defee8f3f8f3f4ff +eaf4fafbf6f0f7fffaf30d1114609381857e7d7f8176665f64635b605748 +93a194919aa1c6af684c3d2218304e5958595955545e5c56595754554f55 +702202150800131e302720182e2c2640532110001817272c261d21201913 +1c21231e181e25101d1d1d271b2a261b191e22232425221e1c1d1e1e2124 +221e211f1c1c202525221d292729251c2c29292931312b2f2f20222c2c30 +251d271f2c222a27292e21262723262f1e212626292b332e282932302229 +2b2a31292933252d322f2b2b29253336312d312d2930312f29344430332d +31262f3e262e2930372b2b3327ad5c4142393e3a4164e122828cdcd5abaa +bda5aed16ab69e2f16256ddfd9ae5cd248dd036ae8c9e11f3f6a55dda60d +3e384f8b5fe3e346e3797d49e8426ce34be2e48adc2e4fbec4e15b545350 +4f515352545745aad9db8c039adc345fb6de1e3f32382835242c3a322635 +231a202e27263f3923291a3d254c1e391b47333f3734345565bee5ed111f +1f5251574c423b55d8c4c8d6e7f1f7fbfffdf4fbfbf0fbfbf6f9f8f8a332 +9d681a11e2f2a2728d6d553277e2f1f3ffffcbe0cac2b1b21bcc0a111c44 +9e3e5e395000b8a55a16142654581c5cd2742857b23583aba8a6a4ede8d6 +642dd34d297788001556e4e3936e7e60e1ab000a20265f7d37454a6877a7 +dbb04c3b7ad3d3d6d1d6d3d9e4edeff8fbe5fbfcfdfbfaf9f9f9f8f6f6f5 +f4f3f0ece9e1d8cec7c3bfbcbbbec4c2c9265147494744313297dd260057 +efef1860ae6fa9475f4a675c5655e6a8765f6055433c3c363e3d312f3b33 +31230a7c88953194eca0055daa841ab000083d3b190517150e171600b6e9 +000007116b5b540007100e17b1dbeb7f53462f28312d55665f767c92a8a1 +a1b5b4a4a7d6a8b9d09fadc2bbcdc0d1d1c4d8c8d1c7ced9c1e3cdd9e0da +dee8d3dfe5e6e1dbe2eae5de4b4677c6bfc3c5c1bdccc2aea3a0a7aca2a2 +667be9cdc3e0dadcd7d0713c343a4a53648395948f8e928a8c9194989690 +969e5c2b334040478799d3d7c1bccdc6cdcbb25c50503c3737393e354744 +463c43463d473f4a3d41434341463b48453a34393a423d413d3f41444545 +4545433f3c40454a4e4f484149463d424a4c4a40504a4c4f525b57464e53 +4d5447444c493e434c5048463d435347434f464e51535246465053514f4a +5358554f4e4d4d5366686158575e594e5556555256545559535e66596565 +62595e5850574b6e67676563694f67cd5f32342d303147f0eaa190dbbf6c +c7c3859bb0602d392a4c6b5f4d4670208ffb76fe2b97fff9e92290fdc2d7 +ff2f4d4f70ffe2c7e536d8f7f77af43985ff2cffffbe644f5bdff7d94939 +464241434645434a4d99be9d35455af39262dafe3d6e5f5d5fbfc55786ce +57bc8ea4a9aeb55491b69c8767a15fd351d1b2b3565d656c61707fffffff +5f8443c7d8e9e6e9decbfff3f3fffffffffffbf4f4f8fffffffffefcf7f5 +4ca8c0751fdbffd5beffffecb6c6fffffcebf8d956321508205d0ef1572d +68faffb39961722e811000022557688450d9ffc3258eb84f5863424c62d2 +f2a07c85f7897388bc2623c9ffff7da1a0ffd6745a503f4e87bec459acda +dfffffddd5cbfffffff5f2f4fffdf6fffefbf9f7fefffffffffffefefdfd +fdfefffffdfbf5f1ebe6e5e4e4e5ecece4f5ffa7d3f7e9e7d3c099aeff74 +1685f9ff4e6cccbcffb9e0fff0e5e4d2d5dfdff3ede6e1e5e4e5e4e7d3d6 +ddd9c1a3858fbea89ca1e5b5577f4d6860fe6b4667664b283a3537242e15 +85ff803750337f898231453530107eedffd37b67513a3f4f7e7671ad9bab +bcd7d2dee1eaeeffe9ecfffff5eef4f4f7ebf1fafaf3fff3f4fcf2fdfeff +f8fffcfffffffafffdfdfffffbfe2b2859aca7aeb0afadbcb29e938f969c +938d4357cfbcb8d7cacdd0d27d4c4139343346697f817d7f837b7a7e8182 +807b81873f101d281e1234366b71666774707a81732727322626292b2d21 +302a2b222e332a342c372a2e30302e33283532272126272f2a2e2a2c2e31 +32323232302c292d32373b3c352e3431282d35373529363032353841402f +373c363d322f37342b30393d35332a304034303c333b3e404034343e413f +3d384146433d3c3b3b3e50524d44454c483d42433f3c3c3a393d38434b3e +4a4c494048423a43375a534e4340483659d68c727470756b6cffffc2bafc +ca68bdba83a0b8724c6356728267463c702186f274ff319afff9f43098fd +b4cbff3d626177ffdbc0e43ae2ffff86ff4e8fff2ffffabf726578fafff8 +888792908f919090959586c3dbba5d6a6dfe9d6de2fd274e424042a0a238 +74be40a2758b90959a39769b816c4c8642b634b592943b454a50405064f5 +f4f9425c096633251f272642e3e8e3edf8fcfbfefffffffffaf8fcfbffff +fdf53b89974a00bffaaf7097855f335ddff7fffbffffedfff1e0e8ef46ef +401059ecf191754c7f5ccc5e2d232d4d536e3cc9f9b311749952a5e2dbdf +cbfff1856471ea78546196060fbafcf7698e8cfac15e4338263670aab334 +557ba0d9ea7f433baaeaedf0eeeff4eeeefffffffffdfffefcfdfeffffff +fefdfdfefefefaf9f1ebe4dfdcdbdbdadfe1e3e5ef39252d2a311f212161 +f56d0e78def6294bb996c73225352a231f1730423a463829212120222125 +11141b1d171219459690838acf9e3e64364d3acf3514434c35151f181c0d +220c78fb5e1639236d756916251b200a81f0feba4d372f232a3a6a615a92 +7e8d9ebab8c7ced7daf5d4d7f7ece2dbe3e3e6dae1eaeae4f4e4e5ede4ef +f2fceefdf4f7fafdf3fff5f5f9f9f3f616103d8b8183817d79887e6b6261 +6a6b5a5e2f47ae8e809c96a2b3c7895c4735261c2a46585755585c545456 +57595750565e1f0005100300120d36311d17242336443e00071a181c2022 +2316221b1a111d241b251d281b1f21211f2419262318121718201b1f1b1d +1f2223232323211d1a1e23282c2d261f2320171c24262419272123262932 +301f272c262d211e26231c212a2e26241b213125212d242c2f2f2c20202a +2d2b29242d322f2928272729393b352c2f3634293132312e2f2d2e312730 +382b3738332a312b232b1f413b3a393a3f2232a15336403b3c384aeadd93 +8acfa24399935a7791482033233f54402a214e005dc94bda0d7be8dfd40d +71d999b1e41a3b3b55e3bea3c519bfdeda62e82f74e814e5dda04e3e4ccf +e1cc514b545251535555575a4f91ad8a293740d37243bbde123f322e308c +8e235ca72e9161777c81872663886e59397330a422a07b80303b393b313b +46d8e9f43c54056d534d4649424cd0c8c9d7e7f0f7fbfffefbf9fafafbf8 +fafaf3eb3384914300b1eda66c927a552b5ae0f6f4eefaffdae0c3adb9c0 +15c930002ec5ea9269396b40a53614122241405621b0e6a40667873577ab +a2a9a2e7d368404cca5e4050830000a5edeb5e7d73dba446332c1f2a5e91 +951a4e758ec3d8774d44a4d6d2d2d1d2ddd9dbeff4f8fdfbfffffffffdfb +faf9f8f5f5f2f1ece7e2d8d1c8c2bfbcbcbcbfc1c4cce8464a5d5659443d +2b5bdb500068d5ef2342aa89c54042594e484a425b6d6573635348474444 +434733373e3e312119387d746d78c296395b283823bb290b373d28071812 +1505140067ec5207270c575d5303160e11006edbe9a63d29231519255144 +3b745e6b7c9897a5adb6b9d4b5b8d8cdc4bdc5c5cabec7d0d0c7d7c5c6ce +c7d4d8e2d5e4dde0e4e7e0ece2e2e6e6e0e34955b7ccc2bec9c4c3cbb0a5 +a8a4a7a4a6754a81d9cad3dddcd9d8dab0483d3a474a4b5a778d9591968b +929a928f918c877b292b474846577d7cbec6b9cdd4c1b3c4964a4c583f42 +40414c40564f544c4f3c73b15a3f2d3d3a3d3c3d3745443a48463f443c3f +3f48404446464444423f4a4b4c4c4d4c4a444a4a4f4e535b5a5b605a595a +5c635f52554f43555055524b585c55625a564a4447424659514e48494c49 +505859585853575859544f5458535e5b54505259585356565b5a58595e5e +675e6557778e7c6b73576a5b846e71615d49518bd9ca6638363126343524 +1f292b382b709a99846f5aa256d2575b80b2beffff9bb9f87efa6787f5ff +d83746f3e37545423c4b3cb0cd6d3f62b6b99a75f04474e1296bc9864d62 +5d546a504a453f3c393b3e3d3b4247433d2b2a5c70b99a61cdff3f6b5860 +5ca9c25b5aac2f8fc574906bc44e97b885c0c0a561b53c90d87464596465 +6c7e90ffffff817f5ab4dfe8e4edebd3fff3f5fefffffffffcf8fbfbfefe +fffff9fcff727ca3572484fff3cafffff6cdaafffffffefbf2c542111410 +1d5920956e19e1deffaf6563c099170b22141e6681c177c4ffea1db07f43 +46754a4b729787887f65eb865f81822e29fcffff84899ea3766f6d473e39 +7fd28569f3dae0ffffcfcdd0fffffff9f5f5f8fffcfffffcf7f9feffffff +fffdfbfbfffffffffffefcf9eeeae6e3e6e9ebeeeff5f5feffcacdf5e7d7 +ddbba7b5ff872e714c544d4bd4fbffd8ebfff6f6eef4dcf0f8fffffbf9e7 +eaefecebe2dde8e6d6c0998abea5a4241d35354130a825cba33755665d2f +3733393b2e240b997662615968887f443f413b193ef7ffff8f805e403847 +76656bbda0a9a9d1c8c9ced8cbe0d6d0bdd8d0e6d7eafff3f8fffff7f6f7 +f3fff9f6fefeecfdf5f5f8fbf0f7fefffff3e9f02b379ab2aba9b4b2b3bc +a0959893969396602d62c2b8c6d1ceccd4ddba57483a332d3143617a827f +84797f87807c7e7973620908221f14182a1f5d6661777a6e65815c1a273c +2c3132333b2d40353a323a29609e472c1a2a272a292a2432312735332c31 +292c2c352d31333331312f2c373839393a39352f35353a393e4643444640 +3f404249483b3e382c3e3b403d364347404d4541352f322d31443c393334 +37343b434443433e4243443f3a3f433e4845403c40474641444446453e3f +42444d484f41617866555a3e51456e585847422e3979cdd3917576747077 +634c4a595f6342789b9786715caa66e9716e85acb2f9ff9bb0ef7fff6d8c +f3ffe64750fbed835b5e58664ebedc7f5a81d5d4af87ff5c84f03c81dda0 +74928f828b7a909794929294929397988c7867555f8e90cca366d3ff294b +3b45418da23f489c1874ac5b7752a9337c9d6aa5a58a44981f74b8554941 +49494b5e75edfaf5645720533a241d2a3049e8e8e5eef7fbfcfeffffffff +fff9fafbfafdfb5f6b91400760efb77ca68a614351eef3f9f9ffffffe2e4 +f1e8e5e8538f5000cfd0f891414eccc45e565633245c6ca962b2fcd80996 +604287e4d4d1d3ca836d6753e07844605f1015ebf9f56c72868b5e57532c +231e65ba6b399479a3f0c4573d54e1eeebe9f0f0e3e8ebfefffdf9fbfefd +fcfefffffffffffffffffefcf7f5e8e5dfdddde0e2e3dee4e7e2ec551725 +221d291b295ddf78215f3133282ac1d5ae5433302e2e232f2740436c4432 +2c1b1e2623241b15202423251c308a817b00011a13201a9205a16f05314c +47191c161e24201b008356404a47587666291f272b1341f9fee864523e28 +2332625053a4838a88b3abb1bac4b7ccc1bba8c3bdd3c6d9f3e2e9f1f1e8 +e7e8e4f1ebe8f2f2e2f2ededf1f4e9f0f5f9f8eae0e7131d7c8f827c8580 +7f856c6267656a6565350f469988929d9fa2b1c8b95e4e3a2a1b16213a50 +5a595e51555c52515451504300000f09000008002829192a2c22254a2e00 +0a271d27292a311f32262921291a518f381d0b1b181b1a1b152322182624 +1d221a1d1d261e2224242222201d28292a2a2b2a241e242429282d353132 +37313031333a382b2e281c2e2a2f2c2532362f3c3430241e211c20332b28 +2223241f262e2f2e2e292d2e2f2a252a2e29312e28242a31302b30303534 +2f3036353c333a2c4c635140462a3d305941443637252d63a59e593a423f +35413e271c252e35184f73705e49378541bf44415d8a98dede7589c655d6 +496cdae8c5222bd4ca5f34352f3d289ab5572f55a9a98661e63c67d11c5d +b87947625c515c4854575351505254545659534437232959619f783eade3 +143c2b322e788d29308506639847633e9620698a5792927732860d5fa141 +3e3738343c4957d0eff05e4f1c5a5a4c444c4d56d5c8cbd5e4edf3fafdfd +fbfafaf6fafbf4f7f6596185320050e2af7aa78c634149e7f6fbf3f8fafa +c8c1c5b9b7bc286d4500a7a9f191353bb6a8362f3f231a505991479aeaca +00894e265db1a09eaaa96650432dc05d314f4b0000d7ebea62626e6f423f +44211c1354a250228e7290dab9564656d3d5d2cfd3d3ced7dbeff4f5f4fa +fffffffffdfaf9f7f6f4f4f1ede7e1dccec7c2bdbebfc1c3c0c6cccde665 +3f564f464e353459c95b0e51282c2221b2c8ac614f545355505c546e7098 +705c5540414845453c3944464037222874676900001311190c7b008b6200 +253d3a0c1510171c130a007549343a3341605216101a1c032ce3e7d25142 +331c121f4a353785636b67918b8f99a396aba29c89a49fb5a8bbd7c6ccd4 +d7cbcac9c7d4d0cdd8d8c9dcd8d8dee1d6dde4e8e7d9cfd64f8cd6b9c5c4 +c1c9cabda0a4a7a3ada5897fb8d3d8d8ded6e2d8d7d9d36f4839444c4741 +4e6c879496919499948d8c8e7f392a49515755707c85b7c1c6e2dab7afc7 +7d5850433e35333a403a4741423f403e4a59374a2e3f3e444542434d4c44 +524a494b4d45474c464a4d4c4b4c4d4d4f4f4e4d4f5459594e5363574e54 +535f515455524e4f4e4c4d53576956585860525644585657534b55514e56 +4644485a404e57514c56584b504c535550555a535654555a5855585f5555 +60635b5d645e5f555c556464606468686e5c63616364586ce4ffffb75b33 +2e33232535424328383c4ef5d4cddcfffaeb71fb3e9ddae6efd1574abdee +a8f5483a91803b462a6dbb5d5c3e48473f8dd069634657454f8aee3669f6 +5c6996716e5d4b6f53603d453f3a38393d3c3a403f92c5cc795f6fb7d171 +96ff3f6269655597ae5262d76172c3427ea8985799c27b9d8a8591ba747b +ca516861716967639c631a8269314acad4efeee4e2d4ffeef6fcffffffff +fbfbfcfcfef9fffffbffb953c084294cffffe0fffff0c2affffffffffffe +efba371210191c593e697a42ffd3ffaf5474590c0b201a1529537b9f7785 +b2c44b826b544c8d596645387f878c5ec7c55e68a2537fbb73bd5a8eafa0 +6b885c4a423c87a172a8ffeaffffe7d1b7d8fffffffef7f6f6fff9fffdff +fefefdfefffffffcfbfcfffffffcf9f6f1ede6e4e3e4e8eceff2fbf3f9ff +ffefcceee6d0e1ada1abffd8222c3c875b50fffcbdc5fdfae9e3e2eee4e4 +ffffffeff3dddfe6e4dee6d6e6dfbeb99391d2fafe2eabea634e56e7409f +fd3e4e615b32353e362e313322f7aa444c3b55fed3742b33322601c9efff +9c7c4f362c2b4c4c609d97a39ebdc1c4cfc1d4cde7f2eff9f9ffdff6f7ea +ede6feede8fff8fff1fff7f1e8e7edeee0e8ebdad6dcdfd7d5e0316fbc9f +aeafafb8bbae909496929c9276699ebac2c3ccc8d3cfd3dcdc7a533a3535 +312d3a597380827e8287827b797a6a20091f201e1527282d5c676f8c8367 +688a492d2e2a2b2425292e27312a2b282a2b374624371b2c2b31322f303a +39313f3736383a32343933373a3938393a3a3c3c3b3a3c414444393e4e42 +393f3c48373a3b3834353735363c40524143434b3d412f4341423e36403c +3941312f33452b39423c374143363b373e403b40453e403e41464643464d +43434b4c414348444a4347404f4e4a4e4f4f55434948484a455cd4fdfac1 +86706c766e6c6c757d63716a67ffdbd2e1fff7eb77ff4ea9d8dee3c7574a +b4e5a9fc503f908349583677c76f775d6762549de080806a7864669cff49 +76ff6d7daa8b988d7d9b74888197959393949392969680c4ebf2a98b88c3 +d67198ff26424e4c3c7c8f3650c74757a929658f7d3c7ea760826f6a749d +575fac324d49564d4643814b066d4c091069312826202748ece3e7ecf5f9 +fbfdfffffefdfff8fbfcfafe9b30aa741d38f5d287a59c6c3941eaf7f8f4 +faffffffdce8eff5e3e76e5e581cf3c5f993325f62334d664b302c476687 +6271a1b2376b4e4f7ce6d1de9d677b6c764ebebc484b83376ba95da43d72 +9385506e422f27216d854d6ba985c0e06f422e71f3ecebe6f0f0e4eee7fc +fbfffffffdfcfdfffffffffffffdfcf9f7f1ede9e1dfdddedfe3e6e7ece2 +e8e1e57f181e231833112250e2c30f161e643834f1dc76525a3f352e2838 +3a3c58904f36362227302e2a32222f2e1c2b1c3aa2d8cf028dcf3b2840d5 +2479cc0c2845431a1a211b17212712e18a22352844ecbc590e19201f03cb +e7f4714e2f20161637384b847a847d9fa4aab8adc0b9d2dddae4e6f1cee5 +e6d9ded7eeded9f0e9f6e3f3ebe5dddce5e6d9e1e4d3cfd5d6d0ccd91551 +9b7a84827d8484775c61686470684e42799193949e9ba8a6adbdcb76593f +3027190c15314e5d5d565457524d51594f0a000f0f0b0007040027282841 +3620305d210b15161d1a1c1f2219231a1b181c1c283715280c1d1c222320 +212b2a22302827292b23252a24282b2a292a2b2b2d2d2c2b2d323333282d +3d31282e2a36282b2c2925262725262c30423032323a2c301e3230312d25 +2f2b2830201e223216242d27222c2e212622292b262b30292927292e302d +30372f2f383a32323a33352d322b3a3935393b3b412f3834373b374fc5e6 +d18c4e3539413334444c4a2b3e3b3dd9b2a9b8ddd6c955e32781b2bac9ac +35248dbe7fd22b1f746626321052a1494e333d392d78b956543c4b383c76 +e02958e54b5a85646a5d4a6a4556465754515051545355574891bcc3775a +5e9bae4b73e312333d3828677a2038b036469815517b6a296b944d6f5c57 +628b454a941d423f4538372e632f006844010c7050514d444655dac3cad3 +dfe9f1f5f9fbf9f8fbf4fafaf5f6992c9f640720e4c581a6a3774144e3f1 +fbfaf8f8f5efbcc2c3c9babf48424f11cea0f192264c4d1627413521233b +536f47598fa42c5d3c3256b8a1b075475e4f512a9d9f33396e215395529d +35667d6a355733241e165c6d3356a07dacce6e48356cdfced5ced4d6d0de +d9edeff8fbfdfdfdfefdfbfaf8f6f2eeebe6e2dbd4cec3bfbdbebec2c5c7 +cdc6cecede8b3d4f4f3e54292d4bcba80009165e3229e1cd70576d5a524d +4d5e5f607db47356563f414947434d3d4d4a333920318bbdbf0083c83b25 +32bf0c64be031d37370e111b140f141703d37d16251730d6aa48000c120f +00b5d0de5e3e24150805221f2e665c655e7d8489988c9f98b3bebbc5c8d3 +b0c7cabdc1bad4c1bcd1ccd9c8d8d1cdc7c6d0d1c6ced1c0bdc3c5bebbc7 +77c9cdc1bbd2bacdc2aea0a59ea4b49e6ba6d8cadbede0e1e4e6d0e3d5b2 +59404242424341456387959b96929b96909770172c4452656b7a799dbbc5 +c6cbc1adb89e4f4a433d3d323a44414640463d423b3c3934496845434147 +49444848463f403847485b4748424346484646494c4d47494947484a4c4b +46454f45454f474b474d4f4d4b4b494c44424752464842444f594d594f4b +5152484f5562554b44505056574f4e595745534a4f544e4f5451595c5c5b +5a5a5857525460625a5b5e555959595e644f585f6f5c535d63645e6dc0ff +fffbffa459433e2e2a2d22382d3a463a42b8ecddd3ffffbf61f633b4d9cd +a0ffffaac8d0b2e92945333b303f63a5f352434b56737d98b64b4985c1c7 +8c8efb358cff5a8ea78a352360e9dfb35443464140424445434c45edcbdd +9158b7e6a2c7d4ff4c6c6154575b496153525464626f5a6469696966766c +7173754e576156655a6b6866757cab820f135f2d56d2d3f7fde9dfcffffa +f5fafdfffffffbfafcfbfffffff7ffe462c6b9541befffcafffffcd0a3ff +fff9fffefaf9f5c635110c121f5c3d997c618043645d628e812c1d1d1b1f +1e2e79836d5d5261545265905d9d7d430e45967f7e62aacc557dff33573f +486343ab88c481866746454782ac8abae7f2ffffe8e3a9e0fff4fffff6f2 +fcfeeffefefbf8f9fcfefffffefcfafdfffffffcf7f3ede9e9e9e9ecf1f4 +f4f4f8f1f1feffffb7e9e4d3cfb8b085ecee1e3bd7fff540d3ffd1b8babd +c5b9bcffffd7cbe6d8dfd7c8c0cab9c5c2bcbfb4bf927e82e4ffff42ecff +de406e866672ff3a45686642313a383e2d3211c3ff25294935cddf992e3d +2c3d0c9ee5ffaa774b3637303e4c697d9aaeb9c9d9d4ebd8ffe0f4e4fcdc +fef3fffff4f4fffffff6f0fcf9f8e9fff4fcfffffffff9fffff6ffffffff +fdfe5aacb3a8a4bda8bcb39f90958c91a18b528ec3b6c7d7cacfd6decee5 +dab96242373132322f314f707e8582818a857e835b000a18161d1b25264a +667172746d627a6c222527262b2129332f332d30272c2829262136553230 +2e3436313535332c2d2534354834352f303335333336393a343636343335 +373631303a302e3830342d333533313132352d2b303b31332d2f38423642 +38343a3b31383e4b3e342d393a4041393843412f3d34393e38393e3b4346 +4746454546453d3f4a4c4042443f4749474c523a434a5842394247494156 +b4fffcf4ffb1847e7a7175786175727b7a5f57c3f4e4daffffba62ff43c5 +e0cb96f6ffa8bec6b3f0314c334040516fabf05352606f8a899eb74c5194 +d1d99b9aff3e8bff598da28b453c7dfff1d08f8f989695949290939377ff +dbebaa6ab6dd9ac1cffe314c463e42452d4743423a474756414b4e4e4e4b +5b51565858313a4538493f534d4a51598e6a000042051f71303035232241 +f0ede6eaf3f8f9fafefffffbfdfdfef6ffd13999993f11dedf7c9da15f3e +42d4f7f1fdfffaffffffd9edeef0e9ec6c8a5536693450444077844a595d +46371f20626955473f4f413b4a867be0e0ac5b7195686852a4c54364ef19 +412a2d46228967a4636a4b2b2a2d6789566f808bccb451432d91f8e9eee6 +eceef1f3e8fcfffffffffffffffffffffffffffdfaf7f3ede8e4e3e3e3e6 +e8ebebebf2e8e3e3e9a40f2427232c263328bed6041fb2f5d228c8fca063 +3d2c392f2fa17e4f4057464c45383441323e3a33332d46282343c7ece118 +d4f7b41758744c4edd081d484a27141d1d251b2200ace905123624bcca7f +11231a340b9ddbfb804c2d1f211d2c3a54657f8f98aabcbad3c1f4c9e0d0 +e7c7ebe0f0eee3e3f1eef9e7e1ede9e8dbf1e8f0f7f4fefaf2f8ffefffff +fffdf6f93a8a8e80788e76887c685c625e667763346c948192a6a1a9b1b7 +a5bebaa9674e3b291b140b0c2e505c5e504d565758684a00000b0b0e0406 +00182d312c2d241f4947030b12161f171f2923251e22191e191a17122746 +23211f2527222626241d1e162526392526202124262424272a2b25272725 +22242625201f291f1c261e221c222422202020231b191e291e201a1c2630 +2430262228291f262c392c221b27252b2c24232e2c1a281f242923242926 +2e3132313030302f282a35372f2e332a31302f343c252e35463128313938 +3346a4efeadad77b4c44473c3a3f36493b414a34309bcbbbb1dfe19c43dd +1c9bb7a57bdbe1829aa28bc70c2b17221c2b4987cf312b374560637a952a +2c6daab17476e61f6fe53d71856c201451d9c7a2554f5855545456555659 +46e3b6c7824497be769dafe41e3d35292d2e17302a2b293736422d373b3b +3b38483e4345461f28301e3334473c354345704e00003a001a784f595c47 +424fdecdc9d0dae5ebf0f3f9fdf9fdfbfbf1f6cb37948c2a00c2cd6f94a3 +705149d3f4effffff8f5f5f1b6c1c6c7c3c84a73502f4913474034656f30 +353a3229171550523b2f2e41332b356b59b7b48137507749432e82a92d50 +da022a1724401b7f548d4b553d20212054733e5c7782bba8584f2f84ddc9 +d8d0d1d3dbdfd6edf3f6f7f9fbfbfbfaf8f6f5f2edeae6e1dad3cbc6c3c1 +c1c4c7cacacad2c9c8cedeab304f4f4747393b23a7bc0014acefcc1cb6e8 +915e4339463e40b49465556b595c52423d493945443d403b4f2c2032a9cd +cf0cc8f0b5154a5e3338cf00133b3f1c0c15161e0f13009edc00042712a8 +b97003160c250088c2e36a3b2317140e182239496170798b9c99b19fd4a9 +bfafc8a8cbc0d2d0c7c7d5d2dccac4d0cfcec1d7d0d8e1dee9e7e0e6eddd +edededeae4e6a9cbc1c7bfcbc7c9b3a1a3a5a4af9f7538a8d2cbdddadae6 +e5e5d8dbdcd781533a3c40433f3f4b5c7e99a199999896973e202b355362 +747780adbcc3b9b0b6bf9e5e383a3843394034423943343c2f3a4c394440 +413f3c44383c403d453e3b3a3e36413e504247414041413e3e4143434646 +433d3c3f43464e4f524b4e56524e585a55555b5a52536a6065605b5b5550 +54565557554c4e4c5352464b4a4f4d595955585b56565a5a595656555153 +5858555c55484d5d5a4751565f5e5a5a5a524d55515968565f555d60735c +4e5fb8fffffbfffff4a9563d323326283f2b2e29375658c9aef0f7c4d5fb +e3f8b23a4847c0fffaabddd3bcd9287cd06c4469627b8c982b537b6e5593 +c1ee7a8ffcc8a996f843adff44ffe3efff4579f5ece0474d45403f424645 +444c59e2ac87785cffffbfa7d7ff52625e60545b6158595c74ceb0b7bfaa +b3b0acb4acaeb7c69e508163616c5a6266666e6688d7e6fc58333fc6dce8 +e8dfe1c7ffeff7f8f9fdfffffafafafffeffffffff7594b15f2fa4ffc8ff +ffffd8b6fffffdfcf6fef8f4fbd23511080a1a4f44a9a2315866a89c77bf +d93f2124281725437f8d614db6e2555ead9949b245162b4c968e8c6e91f2 +30bfff482d5e9affd9a780cb82877e44483c72998cccefffffeadfd1acdd +fff8fffffaf3f8f3f0fcfef5fafafefffffffcfaf7f7fffefcf8f5f0edea +ebecedf0f4f4f3f0ecfdf7fcffff9cdcd2c5c3a1a38fcfff7a2796ffff50 +7bffdacbd3e9c1edc6b8bec8c0c2cadacee0cadbb5dabdc9bbb1b6b0b2a6 +dff7ff849dfff62980a0aa5ce8543d666f522f33362336332169ff45322d +248ca25d2c363137205bd2ffc06e503334333543666e96a6c5cfd8c3ddd9 +d8daebf4ead6eae4f3e4f1f2fafff1f9f6eef8f2faf3f3fff7fffff4ffff +fffff8f4faffffff8db1a8b0aab7b6b8a4919395929c8c5e1c8fc3bdc9c4 +c0cfd8e0d7dcddda8a5733313435302c364465818d88898a86872a070d0a +13131c1c2c5c6c72645b667b6935141b1e30272f2330263021291e293926 +312d2e2c293125292d2a322b28272b232e2b3d2f342e2d2e2e2b2b2e3030 +3333302a272a2e31393a3d36373f3b373e403b3b41403b3c53494e494646 +403b3d403e413e3637363c3c2f3533393643433f4245404044444340403f +3b3d42423f464033384845323c4149484141413c3b453f4756444a404849 +594234459cf7fdfcfffff3b88178707671737e68756d6b7b6ed9bdffffd0 +d6fceaffcd575f52bbf8f7a8d3c9bce03083d171547e707f839235689687 +6497bce87793ffd7b8a4ff4aa9fb3afed3e5ff538efffbfb829c97969494 +9190929187fdb78e8867fffdb09dcefb3541444b4247473e494c58b1959e +a6919895919991939cab81336447435040474b4a4a436bc0d2e83b0b0867 +39241f192236e1e2e6e8eff5f6f8fcfffffff5fdfffff55a6980310a8cee +8ba6956d3932cef7f8fff6fefefcffffd3e8eeefebe5759a790641579784 +55a4d7575760522b253568734937a3cf3f47928b58e0977173759779785e +8beb20a9f92e17477ff6b6825dab646b64292d20566f4a758798bd73372d +3fa0f7f2f4ebeeedf2eeedfdfffbfffffffffffffefcfbfafaf8f4f2eeeb +e6e3e5e6e7eaebebeaeae9f8ece6e2b903221c172513242e9ff65d056ff4 +f63873feba9178815d8e685a5e655b5b6272687d6b7e5b7f626b5c536267 +727cd0ede36087facd00668e9039b8241344513612161b0a22210e52f725 +1a1b147b8d43101b1f2b1d59c8fa9743321c2020243152567b89a3aeb9a6 +c3c1c1c3d7e0d5c1d7d1e0d1e0e1e9f5e2eae7dfe8e2ece5e7faecf8f7ec +fbf8f8fef3eff5fbfafc688c80867b8582846d5d60646471623c04708c7e +94959badb5b8abb0b3bf89633b2f241a0f0c1b2a475b5b52555d65701f02 +05030a06080000252d302118213e411700070f221d2519241821121a0e19 +2a17221e1f1d1a22161a1e1b231c19181c141f1c2e20251f1e1f1f1c1c1f +21212424211b16191d2028292c25252d29252d2f2a2a302f292a41373c37 +33332d282b2b2c2c2c2125212a271d202124242e2e2a2d302b2b2f2f2e2b +2b2a26282d2d2a312b1e2333301d272c34332d2b2d25232c272f402e352d +35394a33273890e8eaeaede6c781493e3d41363a533c3d323b5047b294d5 +deaab6ddc9e4a42931289dddd685b0a596b70b61b25130574c5c6472103f +6b5d3d749cc85670e1b09180e12b8ee221e6bacae32f65e1d2ce485b5755 +53545655565858d4956d6447e6e3917aafe1233233382c2f302732354aa1 +848a927d85827e867e8089986f215232293a333c3a353a2f4ba1c7e13301 +036d584c493d4345d2c2caced6e0e6ebeef4f9fff6fbfaf6ed5363792400 +72d579998d6e4d47d2f5f5fffefffaf1f8f8b0bec7c8c4c0578777002238 +8d804993c23d353e3c1f1d2a565a2f1f92c132377d7039bc6f484e55785a +533a69cf0994e417023776f3b2794a944c56551e2214415934627a8eb16d +44383c8ed9d2dcd4d4d3dcdadaedf3edf6f6fafaf8f7f3efede9e7e2dfda +d4cecac6c5c4c7cacccccbcac8d8d0cfd2b91f4942383c232d2888db4d00 +6aefef2c60e8a583737e5b8c685b626a5f5e637366786577537a5d695a53 +60616666afcace5079efcb00597a7923aa180738462b0a0e140317150044 +ec1a0e0d04697c340410131d0a42afe2813228161512121b3a3c5e6b878f +9a86a29fa1a3b6bfb6a2b7b1c2b3c4c5cdd9c5cdcac2cec8d2cbcfe2d6e4 +e4d9e9e6e6ece0dce2e8e7e9bdb9c1c2ccbfcbbca99ba5a6b0ac8574a3c4 +cacbd7e7eee5e7e1e0d1e5d8b6743e413d39404747415977999c91978b64 +142327324b5b738196b3c4c2bbc8baac7045423e353d2d3b343f3b403336 +303b324a432d454134373b3c403f4c3e3d43454441403f43454846474745 +4648474444464845474f5a615d68675e56545853585b535057554e534e56 +7156463c474f49434f4a5951524e585f565a5b5f53575653595d55525a63 +5a69695e5e64635e5759534b52605d4f555d5e595a5b5a56576169606154 +5a5d5557567ea9fffffffffff3ffeb9d5d2e3e342d2d373c2f3b36283c90 +a4805f49545f715e4f3c455053674927e7b3d7c92b9ff5fdb65289d68ff5 +cf3e776094e7a7ffff7af9456393f358a8f75fffffc5f4596ef2ef64573a +3d39393c3f41404949ebf5ed7538dfffaa90ddff5761546460535b574e61 +90cd88a8b998a6c68da9b8b7b1d7754d6a60735b7a6c685d70768fffffff +a3654de5f4f2efeef8d3fffaf7f7f7fcfffffcfdfcfffcfeffffaa64d49d +4c6bffd9ebfffcc9b6fffffff8effffffbf2f8da4b2601040d455c82cd1f +51d1ffff629e752d1e272d2129315b9956abffff5a35b59c556f261e3447 +87a3965f7ffd5064d1692151ffffff898ac393828669524173679ccbebff +ffefdcd7a7bbfffffffffff8f9f3f4ecfcffffebfffffffffefcfafaf9f8 +f8f4f5f1f1eff2f2f2f3f4f3f1eef4cbc7faf0ff9dd1cbd9f7bdab9b91fd +6827afffff5457ffedc181c1bee0bec3adc0a4a69bb0a8b2aeba9bc0a5ae +ab9beda76aa9d9d3c4b79acbeb598f616869d1a63c536d563639383f2f2d +3627ff52304d3e3d5737323447301b2ccdfff563543a3533373e626e8596 +becdd3c9dce4edf6e4fcdcece4ecfdf3faf6e6f8e9ffefeff3faffeff5ff +f8fffef3fff9fcfffffdfffffdfca4a2aaacb8abbaab998b93949b976f5d +87abc0c2c6cfd1cddededdcfe1d8bb7b3c3b3631323631283f5f848b848a +7d54010e0f0c0e0b1622436575726374707043252524212b1c2a242d282d +2225202b2137301a322e212428292d2c392b2a3032312e2d2c3032353334 +34323335343131333330323a454c485350473f3d413c3e4139363d3b373c +373f5a3f3127323a332a3631403839353f463d4142463a3e3d3a40443c39 +414a41505045454b4a4541433d353c4a47393f47484344454140434f544b +4c3f45484041406893f5fafafcfff5ffecb08d6e7c77787671756e7a6a51 +5babc1a07e64646d877e7a6e746d525b4624dca9d7cf33a6f9ffc86797dc +89f2e05b9d84abf2a4ffff80ff5a7cacff66abf35af9febbfa6985ffff88 +9d9198959395939394947ffffffc8f4bdffa9b7fd2fa38403a4f4e3f413f +3e5174ad6d8fa07f8bab728e9d9c96bc58304d44584160514d3e4b5170e8 +f9f6863d1686532e26263640e8ebe6e7edf5f6f6fbfffbfefbfdfff99646 +b06f0e29e89c99ab7d4338adeefbfffbfcfcfffcfeffdcf4ecf3e8e49479 +a50039c3fcfa407e6a3d4d5e53362923447f3c93ecfa441e9c8b558c686e +77738a93824d76f3404eb54d0b3cedf5dc6266a377676c4e362453344965 +84abac5a30404f8ef7f8f3edf3eef1ecefe9faffffebfefefdfcfafaf8f7 +f2f0edecebeae7e6e9e9e9eaebeae8e7f1c8bceadecf1522172a572a2333 +5ddf480588e5f53c4cf8d99d487f83a88f9379876a6c6076707d7e8b6e93 +747a7665bd7d4591d5d1af9c84b0c230714a4d46a376122f4d38191c1d26 +19171e0de634183b2e2d4420161933221627c1efcd3836232121262c4d58 +6a789cabb4acc2ccd6dfcde5c8d8cfd7eae0e9e5d5e7d8f5e0e0e3eafae1 +e9f4edf5f6ebfbf2f5fffefafcfefaf97c787e7d86788675655761646e6c +463b718d857f92a3afabb7b5b29fb1b4b583473f2c1c181c1c14263d5557 +50606244000b0b090b0204020f25302b2336333e220e131516211420171f +191e1215111c1128210b231f1215191a1e1d2a1c1b2123221f1e1d212326 +24252523242625222224221f2129343b37423e352d2b2f2a2d3028252c2a +252a252d482d1e141f271e14221b2c22251f2b30292b2e30262a29262c30 +28252d362d3c3c31313736312c2e2820273530222830312c2d2d2b292b37 +3f36392c32372f33325a86e8edebebefe0e4c078533249423d3e484a3941 +3a25318093715239404c63554c393d3d33412703bc86b3a90e84d8e2a240 +73b869cfb62d6c547fca83dfdd5ce1315284e3438cd63ddee4a0d8445be1 +d9585f4d55545355555556594de3e4db6a2bc5e27c61b4e126312b3c3827 +2a27273a669e5c7b8c6b78985f7b8a8983a9461e3b2f3d2a53463a2a3b3e +51caeef07e33118c7256504b5850dacecacdd2dbe2e5e9f1f7fff9f8f8ef +8d3ca462031bd5898b9f744246bdf2f8fdf9fffffbf1f4fcbfcec4cac0be +7768a5001fa6eff3346f58232b3e3e271f183266237bd9ec370e8671396d +444754506b725f2955d82939a037002be5f3d95b568e5f525d432b163e1f +375675a0a75e3e474577d9d9d9d5dcd5dcd9dcd8ebf2f4e1f5f5f4f1eeeb +e9e6dfdbd9d5d2ceccc9cccacccdcecdcbcad0a7a0d1c8c729433a496f3a +2d3047c5390083e0ee303ae1c187376f73997f856c7c5f6052685f6b6a77 +5980656c6859b16f3275b0ab948976a7c02e67383832946a0623422e1114 +161f0e0c1200db290e2f1f1d35120b0e28150311a9d5b4252c1d18151618 +38404f5c808f958c9faab6bfadc5a7b7b0b8ccc2cbc7b9cbbcd9c3c3c9d0 +e0c7d1dcd7e1e3d8e9e0e3edeee9ebede9e8bdc0c2c4c9c5b9afa49daba7 +ab967cb1dfcedbd2d5f0e4e6ebead7daddded59b5640323a44434248424b +78918e9d76151011192d3a5d708e9eacc4bcbce1a35a443f3a3a3e3b3639 +353d3e3c3833323f453b404539384d48413e403d4b3736403846414f3d4b +4248414344444647443f434951504d4d4e4e4153505150515f5757605d59 +5b595a69645d755d686362536960775e6555595f5f6a5d554f544f59665f +5c5b5b61605657757865656b6154595353595953535956605b53595b595b +6352564d5e60595f555aa9f4fffffffffcfefbfeee994e3f3530322c384e +5b34a5c6753247b836c97f41a4bf34404841ddde9637ffafd9bf16a9ffdc +403fd0fcd1bb82516b475cf8ffa7877ef4ebb88df242a4ff14c3f4af4b5e +64b28350473f3e3c3b3f4444434a4d5972663f596edfd987c3ff48666555 +5753645c56464bcb8ab1bf98bfb6a6afbc93d7995d6364635b6861676c65 +6e6c90ffffffc2634ebcdfebf5ece8bcfff9faf6f7fdfffffffffffafffd +ffd944c9c34c50ffefe9ffefd5aaf1fffffff7f5fffcfaf8fcdf4f190800 +05445159ae2765fdffff5ebbb07c21282b38273d729299b4ffff7d5ba459 +5f652330303e949c90846fff4f7c94501b68ffffff6b89b5898f826a5a4f +6ed7d2e7fefff5e8d0be9891fffff6f6fffbfcfbffedffffe777ffffffff +ffffffffffffffffffffffffffffffffffffffffff5b58ece8ffa5c8cdd7 +cebabaa190ff8c7590666a4f61ffdcc16797adbba68c809590b6747f8b84 +84867d908c819a7fa1a463658190949e3228354c4f32a54e8ac22e4a7c62 +3a31362b373d371bd37033393631342c3e342e362d32bbc6ff654037332f +3a3951627384a8bcc4d3dadde5e4edf2f0e9e5f3ecf8effff0faf3fceaff +eafffff3f9fafff8fffff9f2fffcf9f5f8f8f7fda6a9acb0b5b4a89e948d +999596806699c3b7d2cac3d7c6cee2e7d4d6d5d9d9a0583f2f3439322c2e +2732637f80906a070100070e021015304c5d756a679060251f2423262c2a +2828232c2b292723242f33282d3226253a352e2b2d2a3824232d25332e3c +2a382f352e3031313334312c30363c3b383839392c3e393a393a48403d46 +433f413f43524d465e46534e4d3e50475e454c3c40464651443c363b3640 +4d4643424248473d3e5c5f4c4c52483b433d3d43433d3d43404a453d4345 +41434d3c4037494b444c424997e2fcfaf7f9fbfffdfff1ae818175757c71 +6a7c8f69d3ed914b64d553e28a4ab3d95b6f755fddd29334f4a4d9c51eb1 +ffe35254deffd2c39c75956d77ffffab8f8effffd5a9ff53aeff17c4f0b2 +5c7a85d39e7a8f98979594959696999a87838c7e617778dbca74b5fc2945 +4b434541494346342eab6f98a67fa49b8b94a178bc7e40464747404e474c +5146494771edf8f9a53d176040282d242427d9e8e6e6ebf3f6f6fafefff6 +fffefecf31ac991202af9d91ab7a5a3997ecf6fffffffcf2fdffffffd9e2 +f4f4e8ea91568c004ff2f9fa3a9a9f844d5b4e4d29315d787f9cf6f56744 +8b4555755b78726c9e8f7c7061f73d6374310553f0efe84665976f776b50 +3c2b489d727792a75a3e2c3c506df3f6eaeaf5ecedeef3e1fdfdda6dfcfd +fdfdfdfdfdfcfefdfafafafcfafbfefefcfcfbfbf9f9f95248dcdedb281f +1822241b282f51e06d556b41473350f6c8a53e6a84998e7664746b914f5b +6864686c65766d60755a7d8549547988838518070c232d158a2f5f940424 +57411d161d121f251c00b5541d272621211522191826262cadaee73c2423 +1f1d28283f4c5766899aa5b4bdc3cdcdd6dbdcd5d0ded9e5def1dfe9e2eb +dbf0daf0f2e5edeef9edfcf7f2ebfbf7f3f2f5f5f4fa7c7d7d7e82807268 +605a69676b573f77ab97978b93afa2aab9bca9a7a4b1cba364472a262720 +1f211414384f536d54000000050c010a020e14182a2126582c000513151b +22221f1e171c1a181714172225191e2317162b261f1c1e1b2915141e1624 +1f2d1b2920261f2122222425221d21272b2a272728281b2d27282728362e +2c35322e302e31403b344c34403b3a293c31482f36262a30303b2e262025 +202a39322f2e2e3433292a484b38383e34272e28282e2e28262c29332e26 +2b2d292b36272b223638333b333989d4ededeaebe9ede8e4c4754644413f +413a44555e33a5c1692338a727ba682b92b22e3b3e2dbbb87415d686b59f +008ce1c12c2dbae1b09c6f45633c4adfe1886a67e1dba980e32f8ce400a5 +d39338515aa6714850565755545658585a5d5455675a3c535dc0ad5698e4 +17363c2f312b342d2f1e209c5e84926b918878818e65a96b2e3435322537 +3a413e31393452cfebf39d3210655e50544b483acecccbccd1dae0e2e6ef +faf5fbf6f3c3239e8b0600a68f83a3735235a0f6fbfdfbf8fff3f4f5f8ff +c0c0cecbbdc476458a0037d6ecf12e8b8d6c2c3c3a3e1e23485f6484e4e7 +5a34752c3a5838534e487c6d594d44dd274f5f1c0042e7ece53e557f565f +5b43311d33876269859f5e49373e4153d5d8d0d0ded7dadde3d3eff1d163 +f2f3f3f3f1eeedebece9e7e4e4e3e0e0e4e3e2e1e3e2e1dedc332ec3c5ce +383c39413e2f352f3fc75b4a633b412840e1b08d28536e80765e4f61597e +3c45524d50534d5f594f654a6f7332365564676f09000a212407771b4f87 +00194e38150d160b151b1100aa49121d19121207170e0d1714169394cd28 +191c18111a1629343f4c6d7e86959ba0abadb6bbbbb4b1bfbbc7c0d3c3cd +c6cfbed3c0d6d8cbd5d6e3d9e9e4e0d9e9e4e3e1e4e4e3e9bbc3c5c1c2c2 +b49fa2aea7aca87144c2cfd1d9d2e2e8f3e3f2ebe2dbdde1d9d27e4e2d36 +44413e49454a445d8d90380f10161b1d374f699aa4b2b8b6c3d3544b4648 +38343d35333d4642413d38333338413c3e394437393b47343f49423d3a3e +3e3f3b414c43373c3d3d4d4b4249484144434244474848464c66685d5c56 +4f5359484a4e49596455554d58524c5753444a595e67626863685a645a69 +6260696a6f695a5a5a5e4c59585e5d44505c6554505c4e5a556a5a5b5465 +5a5752545f5e5e5a5b636052505bbdfbfffffffffafffdfdfeffdb9a5034 +31352b353cb2cc4cd4deef385ff95bff9a5dffff55b2aa76f4ffff67ffa8 +f0b11e9efa3c485264ca80444652304835989c475364656f5a99ea3f96ea +59677edc6a63494d4d5b484148424a444c4543495365644d4f596cc099ff +baff52615b565b555b5c505380b1899fa4979dababa1c7abab416a666560 +666762685d67708193a54796b32f46dcd9eff4eff6d6fffffff4f8f9faff +fffffffffcffff5197cb77519af2eaffffe1baefffffffffffc4fffffcfc +fbd85e220a0003386558aa32c2ffffff54b18f8a1d2e2f332c2a988f8890 +acfe7864804a725c27292e3e87a4a29c62ff646c826f5fa2a9879f788da5 +a77e8f745c5667eee0f7fffffbdfc196627cfcfff8f3fffffffcffffffff +eb7fff9a92989a8777b4eeeccec39b817e7482764b2b42463f337b556fe3 +edffb6bed8ded9d8c0a385ecd0223a547f6868ffad946fe0d0bca89798a5 +a3c39b9fa0b0a3a9adb8bdcad0a8aaa69d8d9e9a7dbf3089f8795449d47b +78e93045755d3e383b36373c3d25ab932d35262b3130393529372930a4a6 +ff7b2f363433374053627b8a94bba7d1e6dddec8efe2f7f9f3f6ffe3f4ff +f7ebfffbeffffdf9f8fffff6fffffdfffffff6fffff8fdfefefda6aeb0ad +aeb1a38f909c9297915a2caab4bbd0cccfced5cceae9ddd2d1d8dbd78351 +2d313a302a312b32304c7f822c0203091005070c1440526367636f87191e +253122222c26252c342f2c2a2723252a2f292b263124262834212c362f2a +272b2b2c282e393024292a2a3a382f36352e2f2e2d2f3233312f354f5146 +453f363a3f2e30342f3f4d3e3e36413b37423e2f3140454e494f4a4f414b +41504947505156504141414533403f45442b37434c3b3a4638443c514142 +3b4c44413c3e4945433f4149493d3a48adeefcf7faf6f2fffafafbffe1b2 +867a767a727464d1f070f4f8ff446bff67ff904efbff64c5ba7feefaff63 +f49df0b726a6fc42586772d5925e6a7a586c4eadae5c6e85899379b4ff54 +a4f86a7b92f691937b7b71878e9398909892969095978d90826b787f7fc3 +8bf3acfc323f4144494340433e4163916e868b7e82909086ac9090264d49 +48444b4d484d42484b5c748c317f96090f803c2f2d27323fe0edebe4ecef +ebfdf9fdf9fffdfff8418fb53d00398b85a77c59499af0f4ecfcffc8fbfb +faffffffe8e9f6efece9b05f8f10aefaf6fa308b788e446152482f218677 +6e7692e7604d67346265596d7270959c8e8451f44e505e4c4990916a7c56 +6e898f6878583a2c37aa797f917e492d322f295de4f6f1ecf4eeebe2efea +f8f7d066ef8680868a7767a4dedfbeb68c756f68736a3c1f33392f22673d +55cfe6f140171c1a1e271f2237bfb30b19325c4648f1907449b7a79a9083 +7c847e9e747a7b8d828a8e9999a2a47c7e7e7c6f807f68a70a5ed0512d27 +ba6051bd041d4f3c211d221d1f2122098f781623181e201a1e1a13252028 +968ef15513222021272f414c616c759986b2c9c3c6b1d8cbe0e2dee1f0d0 +e1f6e6daf5eae0f6ede9eaf2fceaf4f9f5fffaf9effbfff5fafbfbfa797f +817b7b7d6f5b5e6a636a6731068897969792a5abafa2bbb9b3a9a1afc5d1 +895a2d2b312823271c180b215a651c0000030c030704001b161818173153 +000012231718241f1c2226201b191714181d211a1c172215171925121d27 +201b181c1c1d191f2a21151a1b1b2b292027261f1e1d1c1e21221f1d233d +3f34332d22262e1d1f231e2e3b2c2c242f29242f2b1a1d2a2f3833393439 +2b352b3a33313a3b403a2b2b2b2f1d2a292f2e15212d36252531232f283d +2b2c25362d2a2426312f302e3038392c2c399edeefe9ebeae5f1e9e9e8e6 +b3784a3c4044383f41afc440cbd1db2045df43e37537e1e23d988b54cedf +e446d881ce93007fd71e33404fb36a313a48263c2484863343585d674f8b +db2d81d546566fcf65634a4a415450535b565c565b55575b5a625c45505a +63a86ed58fe423333230352d2b2d282b55825d72776a6f7d7d73997d7d13 +3b37362f30363b422f333b49556e24798e0008835756544e5652d5d4d2ca +d2d4d4e8e2eaf1faf5f6ec32789e2f0032847b9e7c594193f1f9effaf4b9 +f1f2edf2f8ffd1cad0c6bdbd924d880796e2e9f1247e687725423e392412 +705d535f81d9543d511c494836484d4b72786b6235dc393b4836327c8766 +784d5a717550664a2e1e23956a71857b553b36281541c8d9d5d0dddbdcd5 +e4dfedeec75fe77d767a7d685895cfceaea3795f5a525e54270920261f0e +4e233eb6cae14c333f3e3d4131272aaaa1001029563d3de37e5f34a19181 +786a67736e8c6368697a6f767c878b969b737572695764624b8f0058ce4f +261da94b40b00013463319141b1615181700836d0e190b0e100c130f0817 +0f137c74d640081b1915181d2d354a52597d6793a7a0a48fb8abc0c2bfc2 +d0b0c3d8cabed9cec3d9d3cfd0d8e4d2dee5e2ece8e7dde8efe4e9eaeae9 +b7bdc6c9c6bba99ca699afa6896d88cbd6d8d4d5d9eaf3ece8e4e4e1dedd +d9d8b16d3d363b3f444241413b48574a11091414181e334c719f98b8c0bf +c3e1794746423849423c3f3c444243423d3b3c433d424441433a393e473a +45493f3b3a403f494944464241494c444b453d4548474a49494848494b4c +4c455a5e413e4e45524b555c504d4f4a4a4e544d594a506356575d64535b +5d58615b57635f6053565a515a5e5b6f6d626651716a6f68556a696f6268 +667165676b536d77675373546e6664574970c8fffbfffff4fffffbffffff +ffffd6944a3337332f3f42c8ce73f0e2e29f9efc4df29192ffff97caf5b1 +ffff9e2fff9ef8aa46ad7746535448a5bd654d78684868cdd5606b5e6c6a +45b1f524a6f9635c8e974e4e47bad8b843543f4843494a4c443d5096eea5 +6a449aedbeffbfff465f5b6350595f5b5a7199b29c9f9c979793949da385 +7550626b5b676863636465646c71a39d1d22662b47bbd1fff0f4f2c4fff4 +f4fff2ff9bcafffffffffeff8696e0914b96d2ffffffffcbcdffffffffff +ff3e93fffffdf9d36d140806082a7028924a7279788e55819489202b2b35 +2d227b6b7b726d5f5b56609c686b372c2a3988aaaba585ff7c71aee21a6f +3d57855c8e9ab0907c6c677169a7d8fffff4e2ecb4819065d1fffff4fdff +ffffffffffffdb73ff3b23302922321f161e17251e1f24262f303c6f6a2e +494cbd686ce1c9ffe4bdd7e3ded9c2ab8cdcfa242ce1ffff4ff3c0a0a176 +687457515f6b5f70555e5555584d40423f404d413e3b3f3e8db8a5c255c3 +fff23581747742ec513e5e6e532e3c383941332665bf14374d3931293a2f +49392f40918ae78d303432313640556885948ed8b5d3d8cfc7f0d2d8c8d0 +ffdecacbcaefe6f5f1e7d5f4f2fff4ffe5d4e9d1e7d4d4cdfcf8fef7f8ff +faffa2a8b2b7b5aa998c94879a91725670b1bcc2cacbc5d0d7d6dee1ddd5 +cfd1d8dcb7723e353131312b2a2b2838493e0700070a0d0b0a10234c4769 +6f6d739a441f292a2437312e312b322f2e2d2a292e352b2f312e3027262b +342732362c28272d2c363631332f2e36393138322a323534353434333334 +3435352e43472a27352c38313b423633383333373d3644353b4e3d3e444b +3a42443f48423e4a46473a3d41384145425654494d385851564f3c515359 +4c524d584c4e523a5761513d5d3e534b483d325ab5fceefdf8eefcfff9fc +fbfafbffdcad847b7d78747965e0e78efffbeea6a6ff53f18582fcffa1da +ffb4f6fe9a2bfa92f7b04eb3794a636653b0cf806e9c89657adce575867f +908b5ec6ff36b1ff7472a4b3797f78e5f5dc82a08d969397959a988b8cc4 +ffc3946caef1b5f5b4f0293d414e3e444440485f7c928186837e7c787982 +886a5a35454e3e4b4d4949494a45474d8484070b4a051261394d2c2c2c2c +d9e0e0eee6f78bb8f6fefdfdf7f77989d46e002f6790a1846a3c6fe9f3f9 +f8faf6368cfcfffffefffbe0f0fbf5e1c43a802c606a6a782f597a88485e +514c331c6c5663585345403f4787546e636e70719ca4948b70ec635285be +045e253a643b72829d7c664f3f3d2c5668808a5e29403c336047b9fbfcef +eeeff0efe9f0eaf7bd57f8230b1a130a1a09040e07150e0f14171f212b5f +591c3736a24a4dcdc4e8761f201f1f2520293aaddf1110c0f5dd28cd9f81 +81523f503f3b3e4435442930292b2e25181a13111a0e0b0f1a1a639390ad +2b93f5cf095b5a5e1fc22514384c361625211e24160a4aa700253f2d2116 +1f14312523358172c367141d1e1f242f43526b796fb694b4bbb5afd9bbc1 +b1b9fcc9b7b8b7dcd5e4e0d6c6e5e2f9e6f4d9c8dec6dfcccdc6f5f3f8f4 +f5fcf7ff737980858176655862576d66492d4c8e99999598a2afb0a7abae +b3afa4a9bacdb7784033302e2d231c1408172c2800000001070506050c22 +061c1e23386c2206171e192d2925282124201d1c1b1b21281d20221f2118 +171c251823271d19181e1d27272224201f272a2229231b23262524232322 +22232223231c31351815211827202a312522262121252b24312228392728 +2e35242c2e29322c2834303124272b222b2f2c403e333722423b4039263b +3e44373d394436383c24404a3a254627423a3a2e224ca6ecdeede9deeef1 +eaedebeae8e5ae73473c47423b4644c0bf61e4d4ca8481df31d26d6be3e4 +7cadd389d7e37d0ee078d88c278d54253c40338ea7533f6c5a3752b5be4c +5b546460369fe3108fe4504c808d4e5049b7c9ac4962535c585b5a5e5a4f +5895e49d6c4792d696d696d71931323b2a2f2f2b324b6e8570726f6a6965 +666f75574722333c2c3632303c3e37303737656600053f000a6352735253 +5041d0c7c8d6ccdd74a2e0ecf4f6edea6976ba58002a61899a82704067de +f2fbfbf6e62179e9f1f2f7fbe1bdc9cfc1b1a32476214a535d6d264f6b73 +263d3c3c270c553b47414238352f316c3b53424a4b4a7780726a53d44d3e +71a6004a1b345f325d687f61513f332f19435a75835f374c3b264a2d9fe1 +e0d2d7dadfe1dbe3deecb34ced17000d06000e0000000005000004040f0e +1b4f490e29288d3238b4a7d57f383f43414235312f99cc0004b7efd721c2 +8e6d6a3a2b3a27242d3527371c231c1f22190c100a0b160a070608044b78 +71921f8fefcb0652494a0cb218082d422e0c1d19151c0e003f9b001b341f +12071409271a13216a58a95209171513161d2f3b545e539a759599928db7 +9ba19199ddaa979899beb9c8c4baa9c8c8dfccdac1b0c8b0cab9bbb4e3e0 +e8e3e4ebe6eebbbbc1c7beaba2a4abadb59670cde1d3dadad3dbd6ecf1f1 +dde0e5e6e0dadaddd5995736373f424045403e43321f081a18171521324f +82a3bfafb5b2b7a997453e3f3d36363e3c3f41403e3a332f31363e4c4c4b +44413c413f3c48453a3a3b41464b443c424847454c434a48434542444b4a +484747494c4e5a4a4d5a59514f4c484853606366748576625157494a565d +5e54595f48545a4f5a58605f6176646561616e5f52535c656f5f72595863 +5766676764686f716d71625a68666f60716268514172d2fffffffffffdf9 +fffdf8feffffffffd08c45302b39312d4bf4d157d9e098cfebc2b2fbe8e6 +bca8b3407f85ddd81f31ff97f99d62e5a18e5f594d96934243697a4b6eb7 +ac8f6063f6ec68b4de45befd46aae5963f0e5dd5f2f262403e423a3e4142 +45414564ee936561f7ff8fb7c1ff4f6766525c5b5e5f544a4c4d4e4c4a4f +524d52635d5a5c6861695f72695f6362736c726e8ecba1aa6a2b3fb9cff5 +f0eae8c8fffffdf7f5ff69c5cfc0bcc7ae8967d2d4796de2ffffffece1c4 +938579746a5687547efff1fbffdd611a0b0516276b48f31e4e4e526b4da1 +6b5933332e3628196e6ab54f6fcc8e566ad96e7c3f2c262c79a5b3a88dfc +a57ea4f7153366edffba9d89a49c9182767ca1ccecfffff6e6bd748caf6b +bcfff9fffff7d0e0e3f8ecffc167f15645497b793f503f413d4545453f43 +414140c0ff2f3b72985d6fdbcdffffa9e0eeede1cab18bbdff3d28bfffff +50a7f3c3d8273140313d344b414a4c59585154555057544f54515b4b4954 +858dcbd99693ffff33a3aac076d08f3169724f3239392f3b3f3f1f633438 +553d3324363732353139a896aca834313133364053678da794e9c1c1d6ce +c6f1ddc9d3f2e5ffebfdfff4fffefffbf0f4f8f6f6fef4effef1fffcfaf5 +fff6f8f8f5fdf3fea9a9afb5ac9b9294999ba08159b4c7b9c3c8c7cec2d3 +d8ddd2d9dcdad1ced6e0dda25b363133302d322e2c332513000f0b0a080d +0c183b5571616665706c682121252723252d2b2e2f2d2925201d21262c39 +3938312e292e2c2935322727282e333831292f3534323930373530322f31 +363533323032353743333643403836332f2f3a474a4d5e6f604c3b413435 +4148453b40462f3b4136413f4746485d4b4c48485546393a434c56465940 +3f4a3e4d51514b4f5456525649414f4d594a5c4c4c352558bcf7f8f2fdff +f7f7fefefbfffdfbfaffd8a8817a747f76676dffe772fdffadddfad1c0ff +ebe9c6bdd3639c95d9ce1e30fe8bf8a168eaa1906e69569b994d5883915d +76b8ab906771fffd76bfec51c3ff4db3e9a1572c7ceeffff9286929c9496 +9798a0938492ffaf8b85ffff89aebafe34474c3d4745424442382f2d3333 +313637323748423f414d444c42564f474c4b584d4d486db08b934e050a60 +3a3d2e23212ec6eee7e5e9fa54b0bdb1b0b9977662cbb43a066c94b1915a +413d4d5f52535540683a79fff6fffffff8ededf1ffdfc560e7043c3f4255 +27794f585c6b5851341a6459a03754b2743c52c1587c686e716993a39d89 +73e48c5f7bd200234ed0f09c82749388785e453c546c76926a5336261a55 +824ba7f8eff6f6ebcbe0deedddf3aa50da3f2e315f5b1e32292f2b333333 +2d322f302daefb1b275b7c3f53cacce6ae1a37393839353c3e90ef2a0ea1 +f2f32781d3a8c00b081715200d1b0f1513201f1a1d201e221d151817251f +242e5565bcca6e66f6f606788eaa55a963054150341c2522141d2123074d +1d26473126121e1b171f242c987e888416181d21242f4153758c75caa2a2 +b9b4aed9c6b2bcdbd1edd6e8f0e1f6ebf5eae1e5e9e7e8f0e8e3f4e6fbf4 +f3eefff1f3f5f2faf0fb79797d837a685f61696b7356308ca494999a97a2 +a1b4afab9ca5b3b4aaa8b1c5d2a15c3835352e26241a141c120500090201 +000201041b252f161b1f38404a0b0f1619151b232124211e1814110f1419 +1e2a2a29221f1a1f1d1a26231818191f2429221a202625232a2128262123 +2022252422211e202325312124312c24221f1b1b26333639495a4b37262c +1f202c332f252a3019252b202b2931303247353632323f3023242d364030 +432a293428373c3c373b41433f43352d3b39443347373e27194baee9eae3 +efefe9e8efeeeaefedebe7e3a96d433b3d493d344ceac045d1d786b9d3aa +9ce3cecca496a42d6664b6b30014e673da8042c27b6b4744377d75252d56 +673551968c70454ee3d9539dc82da3e12e94ce83350653c6dadc5e4a565e +565958595d534d63e489645feae6698d9de6233a3d2a34302d2f2c242120 +221f1d22241f24352f2c2e3a323a3041342d3e3d45383d334e937e8d4300 +0262505f534a4846c0d7d2cfd1e23f9ba79ea4b08f684caf9d2901688da8 +8f5d4b414152575a543554215ce8e2f1faffd9c4c5c3c8aba148d700262a +334a1e6f41433a48424026084b3d831d43a5672b3aa74062484a4a406c7d +786a58cc764a65b8000c42caeb916d59756d624e3730445c6a8a6958412b +0f406b328cddd4dbdcd3b5c8c8d9cae29a40cc312025545115281e231f27 +27251f2221201fa0ed101c4d67273db0aed1b22e545857524842367ddb19 +0197eaed2178c495a8000005000e0011060d0c191815181a171e1a141816 +231612193f4b9bad6260eff1037280954298560037462b111c1a0d151918 +0042151c3c23160412100e14141981646e6e0b111415161d2d3b5d7159ad +838397918cb7a4909cbbb0ccb7c9d2c3d8cdd7ccc2c6cccacdd5cec9dbd0 +e6dfe0dbecdde0e2dfe7dde8bebec1c2b3a29fa7a3ad9f7962d3c8d8d8d9 +dbe3dfecefeedddfe5e9e5dddbded8c582433937313c3d3b3a391f120b18 +1519182b3e68a4adbab3bcb6a4b6758e4f3a3f3630353642403e3d3c3b3e +4043414e494a42483e40373d49433c4040444b49423e454a4842473f4648 +47453e423e40444a545c6366645f535d7569565d6e5f515c736f574c4d5d +395d546d4e4f535b68786b6d605158575858505b545d575b5f6388715768 +73666164655b5e65665f615f6a5d5b5e5e656b6a61686042437fdeffffff +fffffcfbfffffbf5f9ffffffffffce8742312f2e2e3b41a8733941324333 +3c336a798152523d3e474e393e8a4f47ff90ff8a14b9fffdab60688fb6da +3d708b4ecec3adffda35fec054bee76ac6fbabffffdbfc7688f9c37c5461 +4c4047424d424c546466f4d86865f9ffd6faefff57585a645f575960625e +636759605f5c616361626863687078767159685e5e61706d6f6a96fbffff +e44254c0f5ebf6f5f2cafffffff3ffff60e9b0213d3c4d6acbd07e60c8ff +fffff1ddc1b95fb6c6436359bb4f6ffffbe8fee45e252209083d7e1ade24 +3269f0ff7fce68572b2b2d35251d7287bb52feffeb3191d477803b282822 +6598abaf8cf7b47a91ea2c2da9ffffc89d82b18992877a79bde0fffff7df +e5c06192b36aa1fffef7f7ffe0e6eefcffffc97de63c1849a18a58444140 +3d3f423f383d3b493ed7ff7e1f877e4074e2def3ffafc7cfcabca7947699 +ff551590ffff675affd6db1b494e4a404a615d595e60605c57625e57595c +5e5b564c487b7d4eeae7e2a1d3ff62869176609fe22e5b71612e2f383539 +3c3e3535301d382e2f2f40442e3e38189daa81a34033343738404e638f84 +accabad5d2ecd0e6c7e3eaeceffbe7fffaf3ecf5f5f2fbeffdeefcfdfafb +f7fffaf6fffffefdfdfefdfffafeacacafb0a3928f97919b8a6249b9acbf +c3c7cad1cad5dadcd0d3d8dbd7d0d3dbe0cf8844342c232e2d2c2b2c1208 +020e0808040e143160646f66737266824c6b301e25201e2525322d2b2727 +282b2e312e3b36372f352b2d242a3630292d2d3138362f2b3237352f342c +333534322b2f292b2f353d454c4f4d483c465c503d44554638435a564136 +374723473f58393a3d424f5f525447383f3e3f3f37423b443e42464a6f58 +3e4f5a4d484b4c42454c504948464f424043434c52514a534b2d2c67c6fa +faf8fcf4f3f5fdfffcf8fcfffefbfbffd6a37e7b7877787766c38f5a6856 +583f483f7a898a60685e6974744d3b814e45f584fe8e18bbfffdb76e6f8f +b1da4985a25ed4bea2fed334ffca5dc9f776c9faabfeffd9ff8599ffc788 +7ba097949b939b909e9e9b8cffec847fffffd1f7eeff3d38404d483e3a44 +4d4c45473e474643464846474d484d555b59543d4e46474a554d484475e0 +faf9c81e1f676336362e2b30bdf3f0def6f44ad09a0c29262f53c7bf3f02 +5793bdb160422e472c9c9f1b453d973266ffffeef6fff0f0f4e2e7f2da37 +d60d2058def958a84e5957645b5637226c7aa83ae3f4cf1779bc5f7c6068 +7463849a958e71df9e606cc7171b91edf6aa846fa176765d3c2b60728780 +503545441e6d8a478bfdf2ebe7f5e3eceef6f3fcb466cf25012f85693623 +2a2e2b2d302d262b28362bc1f268086f63265cd2dddae631322f2a292931 +336ef4430075f8f24035eec4cb001b1a1e1413241c1316161614111e1c17 +171819191c1b1e504924dddcc179b6ee3559755f417ab602334f461a1d24 +1a1a1e211f21190b2c25231f28281326280b8c925f7f22181e24272f3c4f +77698eab9bb8b5d2b8ceb0ccd3d5dbe7d2efe7e0d9e2e4e1ece0eedfeeef +efefedf8f2eefcfff7f6f8fbfafdf7fb7c7c7f7e725f5e66616d5f382194 +879794979fababb3afaa9ba1aeb6b4adacbac9c486483b3422231d17181c +0900000500000000001339312e222f35355b30551b09141210181b251f1d +1916191c20231f2c272820261c1e151b27211a1e1e222927201c23282620 +251d242625231c20181a1e242b333a3d3b362a34483c29304132242f4642 +2c2122320e322a432425262c39493c3e312229282929212c252e282c3034 +5942283944373235362c2f363b3434323c2f2d3030383e3d383e381a1e5b +baedece9efe6e4e5eef1ece7ebf1edebe8e3a768403c41403d4344a2662b +3b2a3119221955646b3f4231343b391a1864322cdf6ee26d0094dbd78f4a +507393b6215a7837b0a086e2b716e4a83ea7d252aade8fe5e8c0ea6677e4 +a6624c695f5960585f545e61645de3c75e5ce3e5b1d4cfe62c2b313d362a +262f3a383a3a2d33322f333533343a353a4249474227332c373c4238372f +54c2edf1bd10176978575b555248b7dedbc9dfdd35bc85001e1b2543aaa3 +2e00518cb3aa634a34461b8da423432f7d1245e6efe0f3ffcbc1cdb7b0bb +b31bc1000c44d0ed519f3f4334414143270e525a8a20d2e8c30661a24763 +41454d395b73706d54c5864752ab000585e5ee9f6e518058604d311f5165 +7e7d573e4d420d53743173e2d8d1cedac8d2d6dedde6a154bd1500227960 +2d1c222421232421181d1a281db4e75d00634e0d44b8bfc4e63f4849443c +35342a5ee02f006aefed3b2ddfb0b2000c0d11090c1f181117171715131f +1d1718191c1b1b16103d340bbbbeb071aee93254674d2d68a90029453d0f +131b13151619121611011e1413101c1d0a1c1b00787a4669170f1316171d +26375f4e748e7e9893af96ac8eaab3b5bac6b3d0c9c2bbc4c6c3cdc1cfc2 +d1d4d3d5d4dfdbd9e6ece4e3e5e8e7eae4e8b6bdc3beb0a29d9fa5b0864e +6bc8d5d9d8d5e3e5e9e5eeece6e1e2e6e7e0ddd7d7dab76d3525292d303a +362d10110f0a141e273b588fc3b8b3b9afaa6594d5e3745f36593f363f41 +413d3a3a3e40413f40473d40404b403f39414b44444a454649484c4d4843 +464a4b43434143433e48535151525454514d4a49494b4d484548384a4d4a +4e4a4550594e4f8151776e50525849474b55515c665d4e6056484b586f6e +6965866c4d584a50504e4b515454645d615f6d5b5d5f61695c595a47508e +eefffffffffdf6fffffefefffbfafefbfdfdffffcd8642333c27253b3240 +323f494e7cd7eaa0c7f1f24ec37a40435948ffd3fc50ff70ff8f23bff8b5 +7469d0faafffdf679336d8ffc8fff755f3f45cc2d356c9fd8effffce8565 +90fff6e05b49544b534c4f4e414a5567e57a5445d9b684a0c3fe4e536d5c +5d615e5555656b625a63625d6569625a6163695a5a608884736c636b6a6e +6b6e8ff4fffffe4a6e96eed9daeef3b8ffedc6d5f6ee68f9ed194e5872a7 +db8a65cdfcfffff4e0d6b3886dffff674a63865d6bf8f6afffe979263229 +27416c14be4111b0ffff91a2605124232d3927195a73dc83ccfffb2e9897 +6a773b2628285f95a4ae8ae7cd7284bb3318d5f3ffc46a8ec98eacad889f +d8f4ffffffd7ffc8389b816b93fffffdf7fff8e7dbf4ffffc38397384530 +636d6c4435373b4046414546453e3a75ff5d446e605352a2c894db769693 +8b7d6b666081ffa161a4819a7259fff9ec32404a565456656365706a6c6a +6c6a655e636561605d5f5382833fc6bde63233324254296c676eff394866 +6e372e343a413e314543372f39282c689cb43e4048307ccd7d8b57373437 +38414f6581909ebeb8cde5e5e6dde4d6e7ffe4fef2f8f3faf0fcfeeafcf7 +f9fff8ffeff7f5ffffedfff8fffffbfdfefefffaa5acb2ae9f928c8e939e +713752aeb9c2c7c5d0d1d5d3dddbd6d1d1d8dad6d1d2dfe7be6e321e2024 +252f2a2005060600050a07112352807067716e703669b1c0503f1a402924 +2f312e2a2424282d2e2c2d342a2d2d382d2c262e3831313732333635393a +353033373830302e30302b353e3c3a3b3d3d3a3633323032342f2c2f1f31 +343135312f3a4338396b3c62593b3c423331353f3b465047384a40323542 +5958534f70563742343a3a38353b3e3e4b44484652404044464e423f4332 +3b7bdcfafcf2f5f1ecfafbf8fbfdf9fbfffcfcfcfeffd59f7c7d85727380 +646a606e756f8adbeba4cefdfb5ddfa06f737d5cffccfb4efd63fe9227c1 +f4b37c73d3f6a4feeb7eaf4fe2ffb8f9e74ef3fd69d6ec6cd3fd8cf9fdc1 +836996fff5ea82828c838d8585847c7f7779e97e5f4ecea781a4c9fa3736 +514243463d3640504d423f4a49444a4e473f46484e3f3d436b6859544c54 +4f4e44456ed9f9f3e22639405f261c2a2c1ec1d3afc0e7dd4edcd2002c38 +5692cc5d004b8da8cc773f39403a44f2f54323406e4a5af0ffb7fdfffcdc +ececf6eec733b82b009dfbea6a7d4a5953615f5f3e255968cb6bb1f7dd13 +7e7d50715d63766d829a8e8d6fcfbc5d639a1e04bbd5f6a7527bb9798979 +3e416674846a502d7a6c087d5d4b7ff6f7efe7f4f4e5d3e5f0faa8687e22 +2e1949514e272126292e342f32332f28245df9452c574a3f4194c379900b +190e08070f1f2c5cf68a4a8c6d81513bf9eee017050312100a150e0c130b +0d0d12151412171915181c251d4d4a13b7b4cb12181516290d554b4bd60d +1d4456251d221f221d143231231d2d1f23588498212836206ab55b67371b +1d2225303d51697580a19bb0c8cbcec5ccbed0e8cde7dde3e0e7dde9ebd9 +ede8eaf0ebf7e4ecebfbffe5faf2fbfff6f8f9f9fbf5777e847d71615e60 +6570460d2a8994989392a8b0b2adb2ada5a0a5b1b8b3a9aabacdb6723d26 +1b150f191a17010200000003000003264c362d36363e0a4691a43626042c +1b162224201c16161a1e201e1e251b1e1e291e1d171f2922222823242726 +2a2b262124282921211f21211c262d2b28292b2b282421201c1e201b181b +0b1d201d211d1a252e232456274d4426252b1c1a1e28242f39302133291b +1e2b42413c38593f202b1d2323211e242727352e32303f2d2e31353d312e +331f2a6aceedefe5e8e3e0eeeeeaeceeeaebefeceaeaeae5a6653f3e4e3a +37493e44313a444466b8c981acd9dc3cb77139374027ddafdf35ea50e373 +029ace8c5550b8db88dec5548627bfe49fe1d034d7de4bb3c545b1e173e4 +eaae6e507ae6d7c7534f5d545b5251504447454fc65d3d2fb890607fa7df +2528453332332a222d3d42352e363530373b342c33353b2c2b3159523e3a +3c463a3933314dbbedebd7183141714440505336bec29dadd2c93dccc100 +222d487daf460049829abf7347423d2e30e3f6471e2d4a223cd9ecaaf8fa +d2a9c5c2beb69e14a016008cecdf63753c412f3c44482a0f3d48ad519ee9 +d2026764395942424e415872696c52b5a040447b0100aecbed993a5d985a +736b35395c6b7f6d5a367b610063473666dbddd5cddadbccbccedbe49555 +6a0d1c093c46441f181e1f2428232425211a1751ed39224933242579a664 +8d1329211a13121b214ce3783c80627a4c33e9daca040001110f0a161110 +1b1315151b1c1a161b1b191b2024133d37009695b8050f0f132301433638 +c802143a4c191318181d160c24251a131f0e1248788d191e2a10569d4251 +2a0f0f11141c2739515a66837d90a6a8aca3aa9cb0c8adc7bec4c0c7bfcb +cdbbccc7c9d1cbdac8d0d0e2e5cee2dce5ece3e5e6e6e8e2babfbcb0a4a0 +a0a0ad8d72bdd8d9dcd7dad5e9e9ebdee9e9eee6dfe1e4e3e0d5d7d5daa6 +492b342829392e220a13170e19293c4e6ba3c3adb0b19a654851a6b870b0 +3f4643423f3d53504b48494a473f3f41393b424a45453e464b43464a4143 +473f444c474243434948494547463e4643454b52585b5a575961564d5655 +4f58555a514b585f5c606c5b5e665f6a686d617366666e6e5c6862685361 +6164675a524f56453f485357485c7655486e5d5f5c595f607064676b774f +554364aafffffffbfffffcfffffcfffffffffdfffffaf9fafeffcc844338 +382d2224353c4038413ac7f0d1fafc7cf962f1936ab9899eff5f5064ff66 +ff8454f5d7e48e41c0ffed95496b6221ddfddcedaf36c5b554ccd752c0f9 +4cbfd47b96b18fbdc5b89ca1babcbdcacee5d8e0eeebf8f2f4effffffefc +f5ff5f5056585c5f625f5c6369685a5959606b696568605d606a67635e49 +726d656f68706d74a8c889cbea214dc7fde0f1f8f9cfffe5e9f8ffd665a5 +8721347a91c3be6abbf8ffffffd1d0c3976b84ffff8e53827a9365fffeea +fff09255452c1c42801b765a21ffffffa77e606e2e252d3b2f254e62bc7f +adffea5294686b794d28262e5b96a3a78bc7ee677caa555ae3a9bb90798f +ac95b3af7bc3ebfffff4facdb3c89c614e7d9afcfffffffffdfdebffffff +b690c97f3150373b464d484949514f404f415a66644c34475668508279a1 +bb6eb471827c786b5953505fffc8163335543365ffffff8d6d8471818486 +8594a5a4a7a395787074766f666e6a6960707f4b99dbff5b45b798504bb9 +b93bff4c4b50474c27383b4042402c3a302f332d253e58663a3e404659e7 +7984713c3233374756707091a7cbb0d2dbefe3f8e3d9f8ececfdfff0faf3 +f3edfff3fffdfffcfefffcfffbfffffffafffffffffff9fffef5a9aeab9f +938f8f8f9b7b5ba6bebfc0c0cdc8d3d0d7cfdcdad9d1cdd2dad9d1cddfe1 +e0a7452630232433261700070f040a0d10162c607d66656b613825308494 +498b202a2c2f2d2b413d35323334312c2c2e26282f3732322b3338303337 +2e30342c3139342f30303635363234332b332e30343b41444340424a3d34 +3d3c363f3c4138323f46464a564548504a5553584b5d5050585846524c52 +3d4b4b4e51443c39402f29323d413246603f325847494340464755494a4e +5c343b2c4d95ecfaf8f1f7faf4fefff6fcfbfdfdfafdfef8fcfdffffd29c +7b8081787474747781777761d7f4cef7ff82ff70ffb792dfa1a8fc584f62 +f959ff8556f6d2e09448c0ffe29053807d36e2f6cad99f2fc5bb5fdded67 +c7f947b7c46b91b391bdbbb9bbcbdadaddebeffffffffffcfefaffffffff +ffffffff4a333a3e42423e3e454e4b483f404047504e4a4d4542454f4a46 +412f58584e584d50464b87ad71b4ce001b71703133343235bbcbd2e3f7c4 +4a8567000c5478a9911e3e719cb191473538403762f9ed6c2e6469844dfc +fff2f7fffdefe5dbdde7d73a71440afbebf9805c4f7b626764674b35515c +ab6792eecc357a4e4f6e6b657475829d8d8470b2df58628d4044c7889a73 +617a997c8d742656677c794f412746877a492e5e84ecf4f3f6ede0d9c4e1 +d7e28665a460183b21252e363638373f3d2e3c2e44504d35192c3b4e3a6e +648da949690e140c0a0c131e243bebae002025401447edf1eb6117180515 +1918121e2b272a2a200a0710151009131216102335137ecced3f2a986f29 +30a49e1bde20202e2f3c1926202121231a2a1c1d27261d31404a1d232c34 +47ce56605120181e2537445c58778cad93b8c1d5cbe0cbc1e1d5d5e6ebdb +e7e0e0daf7e2f5eef0edf1f3f1f4f1f5fefcf4fafff9fbfbf4fcf9f07b80 +7d71656161616d4d317d999a9b969693aeb1b2a4b0afaea49fa7b7b6aa9f +aebbd4ab532d270f0719191300070400070a0300012b41282e38340f000d +61722a6e04141a201f1f332f27242526241e1d1f1719202823231c242921 +24281f21251d222a252021212726272325241c241d1f22292f32312e3038 +29202928222b282d241e2b3231354130333b35403e433446393941412f3b +353b263434373a2d25222918121b262a1b2f49281b4130322d2a30314236 +383c4b232c1c3d84ddeaeae5ebede7f1f1e8eeedefeeebeeefe9e9eaebe6 +a4623e414a403639494b4b3e4334b0d1abd4df60df4de3875da46774d73b +334be846e86631ceaaba6e26a6e8c6702e57540fc2dab2c18815ab9f41bb +c740a8dd31a2b45b7d9d79a3a29a919db3b4b6c0c4dad3d7dbd0d8d5e3de +e6e2e0dfdce637252e2f31302e2d333b403b2e2c2c333d3b373a322f323c +38342f183d3d3e4a38393537668f65acc3001272814e575a594db9bac2d2 +e5b039765800024764927c0e3a6e8fa289473d3d362249e6eb6b254c3e59 +31eaf3e7f0f6cfbbc1b4a6adad1a542c00eaddec79533f613c41474e351b +343a8d4d7fe0c1256335395851444c49567468645395c0373f6b212db97f +9165495b785e78661f5162777b564f314175612f19496cd2dad9dcd6cec9 +b5d2c9d47855924c042a1318242e2c2e2d3331202e1f36423f270e213041 +23534972913766131f18151211161b2dd99d001218370f3fdfe1da561a25 +142423231f2c3a393c3b3017151a1e16111c1e1e111b280060add7312193 +6b2425938906d0151724252f0e1c191c1a1b0c1b111117140a20343f171c +212633b8404a4212090b11202c43405c71917597a0b2a9bea99fc1b5b5c6 +ccbcc7c0c2bcd9c4d4cdcfccd1d3d3d8d6dae4e2dce2eae3e7e8e1e9e6dd +c2bdb0a19a9da2a59f777edcc8d3dfdcdddaebf1e9dde1e4f0ebe3dedfe5 +e7dcd2cfe0ce844a3830282f1713070c13111c2c4d617eabb4a2bebf545c +3b4aa5d758bf812b4044393a3e414242444748444141403d433f41474147 +493f42443a41463a3b424347483e434a4e484b4b40474e53585b5a585756 +616758526262575e4a525656554e484d45396258535c6570596357565659 +4f57565e525050645e4e5e575b58536b68585b557275676b4d636563625f +665e5c5f5b4173b7fffffffffcfffff7fbfaf7fdfafffffffffffffffaf7 +fcfdc880453b3527262630262a2c3636d79f96fcf657ff58e7877df9d8d3 +ff56a257ff6cef8f75c2dfb6615b5bbcb39fb2a2a499b2dacdd7d2ece5e7 +e3fdc0559efcfefcfffffbf6f4eefbf6e8e0ebede3e3d6a3a39e99957d68 +61575c6f7265acf9555e64566a5e5a5e59576576635e5e676b5f5a646363 +67675c60646b625c5d636567686d93ca1d11921c41afdccbe8eff1eafdff +dfd8eac66f91616c5d9dffaf73a1e5ffffffdfcdc1a67c7379b2f3665874 +61ba4ed7e5a0dec987140000004c5d21ac655fbe70d7716d6c6c281f2939 +343357718b6f6d5866826b729881542e272d4f9aa5ab95b2f55b80f27264 +746d79477184a4a9b5928ee7fefffff6dcc78f6b5844708683fcfff0ffff +ffffffffffffbbaeffff163e3039344152504858594b6f56506d7959938a +4d4b52ba9979c945736c7b7979675650483beefe2b31bfffd960ffffffe6 +bafff6fffcf5effaf8f5f8f0cf9b857f7876747f7f7979726e557fdcff7c +81ffff5c4d699d3af6783a4e2f471a3e443c374330473a2d242734385362 +543c2c2c29df8480854133363f525c746d9499cfb8c5e2f3edebd2f1e5c9 +ffe1e7e4daead1e8fbfdf3edf9e9fde7f6ebf7f5ecf3ebffffffffffefff +fafbb1ac9f90898c91948c6467c5aeb7c1c5d0cdd1d6d6d0d5d6d8d2cfd0 +d7dad5cfd7dbe7cf8247362e272b110900020b07090a151a325d6958757e +2237233283b02d975e0d272f27282c2e2c2b2d30302e2e2e2d2a302c2e34 +2e34362c2f31272e3327282f3034352b30373b3538382d34393c41444341 +403f484e3f3949493e4531393d3d3c3532372f234c423e47505b434d4140 +4043394140483c3a3a4e4838484145423d555242453f5c5f5155374d4c4a +49464b413f423e2559a0f6faf8f6f6fffdf5f9f8f4faf4f9fefffdf9f9fc +ffffffffce9878817b747f7e7c727e7e7d6af2aa98f9f558ff5ff79e95ff +d8c8ff4fa155fa5fe99077c3d7b1656159b6ae9fbcb0b2a0aecebdc8caea +e7ebe5ffca5c9df8fcf7fdfffdfbf8eae9eaf6f4f2f0eaf1e8c0cfcfc1b7 +9a8e9a918a8f8775bafc4341483a4f3f363d424249594845454e50443f49 +48484c4c3f4347514847464c4a47414470ad050076000f5b521f2c2d2d50 +b7f5c5c2d9b3526f40483579f785192e7094978f4a384144414e5a93d24b +476752a734c1de9fd5dcd68a856b97e7ae3ca74d46a75bbd4c4f5f7c6066 +646954475e6d7c5a523b4865515679747069757476a28f887a9feb516cda +5b4c574b5727576f908e88502f6d6d715c4b262c373d3d2f546a68e8ffe7 +efd9b4b9afb8a1a96665cbec002b202d2835443f3748473a5c4139565f3f +776e312f389f7955a20c1d07131418151c241b13cfe5161fb3fbba3df8f7 +dc9a396151646461555c5552555137090000000000060100000006034dbc +f96063f6e83b3756841acc4c0f2c19370c2c291b16261e3a261b18202c2b +3d463721181a16c6645d6424181f2a404a60577a7eb19dabc8dbd5d3bad9 +ceb2e8cad2cfc7d7bed5e8ece3dfeadaf0daebe0eeebe5ece5fafefffafd +e8fff3f4858073645d60656861393e9c89929d9b9b99b0b8aca3abafb2a9 +9da1b2baafa29dabd5d18f4e2a1508100508000100000b0b0800001d2517 +4254011a010e5e890a744000131e191c1e201e1d1f2224211f1f1e1b211d +1f251f25271d2022181f241819202125261c21282c2629291e25282a2f32 +312f2e2d343a2b2535352a311d25292928211d221a0e372d29323b462e38 +2c2b2b2e242c2b33272525393323312a2e2b263e3b2b2e2845483a3e2036 +36343330382f2f3230174c92e8eceae7e8f3f0e8ecebe5ebe6ebf0f1ede9 +e9ebebebebe4a05e3d43453c3f414d41423e4339c78273d6d638e43ed272 +65d6a69bdd32853ee94ed171529bb08b403f409e907d998c8e7e91b4a6b1 +b3d1cfd2cde6a83a81dde5e1eaede8e4dfd1d3d0d2cfd3d3cbcdc2929c98 +8c856c5f675f5c665e4e96df2f333c2c3e2d262c302f3d4b3731313a3d31 +2c36353539392d31353a2d2c363e35303030508f00006b00065b62394d52 +536ab7e6b8b4c9a24463313a2969e16f1029678a8b874c3c403b2f343e7e +cd443347277d1db4d89accc6a758644960ae851b893332974ab044454e61 +393e464f3d2c3f4a5d3f3f2d3d553a3e656157494e4a4a796a685c7fc82d +47b63c3449424d183e506f707344296a6a70625435342b2522143e5453d0 +e3cad6c9b1bdb4bca3a7635ebfdc001a101d1a2939352d3b392a4d302946 +50306b6225212184623f91011e0d1c1c2119181b1509bdd10511a5f1b739 +efecd39c4d8173857d776d75706f726d5020120e0a090a1719110e040300 +36a3e4525bf1e5342a456e05be4106220e2a012222160f1e102a1b0f080d +191a303b311a0d0c05b04d475314070d172a32473f5f63957f8aa7b9b3b1 +98b7ac90c8aab3b0a7b7a0b7cacec2bcc9b9d0bacdc2d1d0cbd2cde2e6ea +e7ead5ece0e1bfb6aaa39f9ea0a182357dcad9dfdadfdddee9f9e6e0d9de +eeede5dedee5ece5cfdddfdebf642735382d090e0d0b0d141927536c8cb2 +afa4c2dc6140463e4ccc5781d54b463a413b3f444744414141404041473d +402f3743454c4c4040403844434248463f49534c464d4c3f444b47544b53 +58564e48484a534156634a4f60505751505556515159587c9a644c534e81 +5256565a4f544f4c5f4d4f5a575f58715d635e5b5e69606b615a5159565c +595d63645f5b5f5d5a5e89d9fffffffffbfff9f6fcfdfcfffffdfffffcfe +fffffffffcf8f9f8c179443f34252b252c2c2b2d342dd2f4fffefbf0fae6 +f5f1635e9551ffe5f84fff6cfef5f7fffffffcfafbf7f7e3dcdaced9f7e0 +bee0dec8cdd1d3dcd7d0dce6dfe3ede6eef9f4fffffffefcfffffffce146 +58484c3a43443f425b537757b2fd4f5b585f575b5f5e595b605f5e61656a +6a5f59615f606e62686a665e635e64667065686593db5b6d5d234579e9eb +d1e8d8bcd9ffe1d3e3e871a9ac9086ffdf6c90f0ffffffe7dbbebe938681 +805f565d706c448c5189714d638b40130400004d552ce4522f5e4a40537b +6d572b27333c2a24405daf943d857c5559a0c8834d312d2b45a2afac8daf +ff6663f67b224d71f6ff899f93b6c787b8f2fffffde7c9e9fffa3f56aca0 +6adafffaffd7adc7cab9b9c29e9ca880183a48a161354b412e3f3b2c5d3b +3b547463ffff3c4454988e73ff4a77817778755e5358563ac0ff3626c1ff +ff3e98ffffffbcfafef7e9e8eaf5e8effdfcf0c9c5c1bcc3bdb9c4c2c6bd +a8aab2bdadb880ffff764d7c857495aa235f423f1f32373c3c33312f363b +302441477175732c3b3526f0c17e9148373f48595d71ae8fa4b5bbc2b7d2 +fefcd7ddd9cfedd9ded5d0d0d9dbebdeecefdfdcd8d4e3dddfe9edcae7cd +dbebe4eccdffe5f5aea599908c8b8d8e6d2066b3c0c6c0c8cfd0d1e1d5d3 +cdd0d8d6d3d0d4dbdad7cee1e2e0c0682a36362802090703030300001520 +395e625d80a4382232292ba12953ac292c242e282b30312e2b2e302f2d2e +342a2d1c242d2f35352a2d2f2834302f35332c364039333a392c3138343f +363c413f373131333a283d4a313647373e38363c3d383b434266844e373e +396c3c404044393e3936493739444149425b474d45454553475548443843 +3d4640444a4b4642444240446fc2faf9eff5ebfbf6f7fafbfafefffafffc +f6f8fdfaf8ffffffffffcd9476807972817d7c7f85868268effefffbfcf4 +fdedffff796e9448fcdaf249ff67fffffffff9fffefffffffff5f2f3e2e4 +f5d5afd3d9cad0d4d1dbd9d0d7e1dce0e7e3f1fdf7fff4fbfffffdf8ffff +f2678a8386747a838d93a28c9f72c4ff3a3b3b433d403f3e424443424348 +4c514f443e46444553474d4f49434b464d4b5345434174c043564201192f +71593647303498e8d1c9dcdb56878b6f67f8bb2f2373b4a6815941366054 +595e61403845616135783673694d64a07e6f717474dba84bd9321447382b +355f6267626e7371513c495aa07f246a623c4184a774676a786f6bad9c8d +749ffc5e50df61062d51d8f8687f78928f37486a7270503c276beede273b +897d4bc4f8f3f3a13e3a37262c402d41655200253b995a2c3d301a2b291c +4d2a263a5a49f4f81b24397c6b4ad8091c1b1114160e192b2612a3f81a0f +b3fcf3197deeeeca2844413d3f444046343946473d1a1b1d1d28221b1d1c +25281f3a668a8c9d5eecf55837696c557080003d2a2d0e201c1f1f181f1f +22272319363c615f520b232211d7a35b6e271a2533474b5d967586989ea8 +9fbae6e4bfc6c2b8d6c5c9c0bdbdc6c8d8cddde0d0cdcac6d5d2d4dfe3c3 +e1c7d5e5dfe7c8fbe0f082796d656160626342003d8a989e9b9e9ea1afbf +a9a6a5abb3ada3a1b0b8b4aa96afc5d3c26b23261f140006090100000300 +060007201e1d4e7f1c0a170c0c7f052f8c0d130f1f1a202524211d1f1e1d +1c1d25191e0b151f2127271c1e1f1824212026241d27312a242b2a1d2229 +252e232a2f2d251f1f21261429361d2233232a2425282924262e2d516f39 +22292457272b2b2f242924213422242f2c322d4430362f2e2f3c313e322d +222c272f2a2e3435322e31312f3560b4eceae1e6dcede7e7edecedeff0eb +f1eee8eaedeae8efefeceae29f5d3b46433a4441494b47444632c3d9deda +dcd3decce0db4a3d641ddabed831ea51e6dcd6dcd2dad7dbe3e2e2cfcccc +bdc4dcbf9cc2c6b5bdc3c2c9c3b8c3cec9cfd9d4e0ece4ede6ebe9e8ebe5 +eae3ce3c55494c3a434a51586a596d459ee1272e2d352e2f302f30343534 +3234383d3c312b33313240343a3c372e2f2c3f404130312b55a337503700 +0e2c7a6644574748a0e9d4cad6d24b7b7c5e53e3a51d1c6fa7997a58493a +58454648452b2e3b4c430e552168664b5e8f594652523fa37e2bbd1d0339 +241a2b54504c3b46515336222a3b81640e595128296c945f4c4951464285 +7b6e557ed83a2fbf46002046ceea55685b787e2c466a72725644326edfc6 +0f26756936acdbd6db95474b4a383c4a31405c4300122886481d32261120 +1d0d3d1815294b3ae5ec121724645536c90321261c1e1c0f1525220a93e4 +0c01a6efef1372e2e6cf426a69625a5c5d675b6272726541403f3d47413e +4844463c29385977798c55e6ef502a5856405e7200331e2104161519190f +1312191c1307222851524b04191400c38b455b180a14203133447c5a6a7a +7e877d98c4c29da4a096b6a4aaa19d9da8aabaafbec1b1aeada9b8b6b8c4 +caa9c9afbdcfcbd3b4e7ccdcbdabaaaaa5aeae98698babdad0dcdbdbe1e2 +e7ebeae3dbd6e1ebe8dcd9e3e9e6dfcfe8dbd2a24e312e190c0a090d1516 +2337526990ad9c98bfa41b403f414c9ab456d0873a4b4441494340403d36 +353c3c3c4b4e4f514e5b565356494748383f454342544f4b434c494f4d51 +53625a615c584f4d524e484a4b5065625169775558544f5c575261596463 +51675d4948575765535c645e6c635e5f6c62616b62656466626b55565e5b +58635b6367575c635f625347485998ecfffffffefcfcfdfcfdfdfefeffff +fffffffffffffffffffffef8fbf3b56a4c423c332d2c2f2e3034303753a3 +984a768f6f6272663a5d573babb66b7bfd546b776b6e519cb54920343634 +313039b8f9ffc8fffffffdfefcfffffffffffffffffffffffbf7fff3ffff +f4fffff9c14b56484542444441434953605eabff5c5e68575954575e625f +5f605e66655e5f6060626063696863656964616563656e6e748785e2ffff +f524626ffed5ffffada2d6ffc9c6d0dd71f9ff57d6ffb66dcfffffffe6e6 +d0a29e716f8c5f7ccf6965566dcd607e38221d1007142501005c5908e48d +274f76d3b3627a6a40262c372b1d355f9b61a8ffff5450cbc368551f3030 +43889c9f999fff5f71e1b92744f3ffff9fa788b0aea3ebfffffffcd3b4dc +ffff4158c2ae6ecfffffffffceeceeeae1d9acadb3af1f2164b5824b6045 +2b332f21252c30667d50f0ff832a66885b79ff59747a7b7e796c5e5a544b +9dff5a208dffff5464ffffffbbf6f0edeae1f1fffbfffdfffff5eaf3ede1 +e7eff2f4ece1ccbe9ca3aac98be7ff83659b829eb4ff22392a3737203030 +303e3639503d292d442c77abcf51313b21b0fa6e8e5e353b515b746f8894 +bcd3bdd5c8dcece7e1fce4e4e2fcf8fcf7f7f6fff3fef6fffffffffff9ff +fbfafff8ffffffe5f3f6effbe0f4aa98979590999781527494c3bbc7c5c8 +d2d3d5d9dbd6cdc8d2d9d9cfcdd7dbd9d2c4e4dddeaf5731240e05070a09 +03000108151e3d584d53877800272825286d8124a4631d332f2b332c292c +2d2b2f352b27383d3e4039443a36382f343b3136342e2d3f3a362e37343a +383c3e4d454c47433a383d393335353a4f4c3b53613f413d3845403b4a42 +4d4c3b5147333241404e3c454e48564d484953494853494c4b4d47523a3d +43423d4a404a4c3e414a46493c30314485dbfaf8f6f5f5f6f7f9fafafbfb +fcfcfdfdfcfcfcfcfbfbfcfdfffcffffcc8c7d7d7c79777a7b7b80827a70 +6ca7934579997a728b835b7d6f43a0a25971fd62879882794990b65b4b69 +6865656061d3fffdbbfcfcfffffffcfffffcfcfefffffafdfefffbf4feec +fffbe1f7fbffdf7c9996979796999a99999a9b88c0fd433d483b44414247 +48433f40434d4c4546474749474a504f4a4c4e4b494d47474e4d53686cca +f6f7dd08423daf79bcd042439ae9c9d5e0e160dcf23ec6f4791769a6e495 +4c45473e695043613c60b54e493c5cbc476a372c2d2f3d5e7b6974d7b131 +ce5d05396cc99d4a6a726f696e735a3b425b8b4c94fbfa433ab1a0586e55 +77716993918b868fff515dc89d0824d7fbf973776181643e666b795a472d +3d92f0fd25308e7d4cbcfafaf0ca493e3531353d28467488000855a9733b +50330f171c151e231b4c6339ddf45d074f744155e1181e18101414121720 +242586f932007cfbf02b53f7f2c92e473c3c45404a5a4b4d4449432e232e +2a1e24241f242a2b1d2a325f85ae65bcf5624a81678294e000170c1c2009 +191919271f223826161c382575a0aa2514250c9ade4e6537111e3a465f59 +6e779bb29fb8b0c5d5d0cae5cdd0cee8e3e9e4e4e5f1e2ede6fceff4f3f1 +e9f5edeef8f0fdfffce0f1f3ecf8ddf17f6d6c6a656e6d57284a6a99909c +9c9ea7aaafb3b2aca6a1abb1aea5a7b1b4afa697b7b8c8a85c39250a0000 +05060300000202001122141c5851001116171c5a6200814100191a1d2824 +21211d151519171427292c2c28342c282d22262b1f25241d1c2e29251d26 +2329272b2d3c343b342e252328241e2020253a37263e4c2a2f2b28332e29 +38303b3a263c321e1d2c2e3c2a333933413831323d33323b33363539343e +2729302e2a362b3437282c3432352a1e1f3374cbeae9e6e4e5e6e7e8e9e9 +eceaedebececededededededeeeef1edece1a0594545484544464a474546 +3f3b428675275a77584e63572c4c3f1a828a4156e13f5e69544e22688a2b +1331373637363cb4ebeeb2f4f4fafafdfafbfaf5f6f8f8f8f6f8f9faf3ed +f8e6f7f2dbedededbd4f635a57565658585a5c60635697de2f2e3b2d3330 +313739353231303938313233333533363c3b36383b352f353c3f3f3c4454 +4daeebf3d3003532a86ca4b73849b3ffeff4efe458cee028acd966085d99 +d48a5454513e5b3d3651264aa8433d2b40a0335f332d2d2a2d45604441a1 +8713b94f002c53b08f3e5a5a4b404a513a1f2640713179e0e029229a8d41 +50314f494471716a656ddf3444b2870015cbeded6a6d506f5736676d7c5c +4c2f3987deea1926816c339edadedcc55a5954504f52354a6b7700003e93 +5e2b43290b1315090e120a3d5229cee85a013d5b283fd214272720221a12 +131c242276e828006cedea2543e4e3c641645956565266807a847e857f69 +5c6662565e6362625e533a3a3252729b5ab5ed594172526a7fcd000b0213 +18011313131f171c3420080a220b5c8ca2220c180085c6355328030e2833 +4a4153597c917d968ea3b3aea8c3adafadc7c4c9c6c6c7d3c4d1cce1d5da +d9d7cfdbd3d4dfd9e7eae6ccdce0d9e5cadea2aca8a4a3a79f7298d1cad4 +ccdae0dde4e1dfe1e4e5e0dadce5e8e1dadde5ece6e2d9e5dcc5783c090b +1315070919202c405b647e97979cb09f553c423a4b3bb38985ce37362b42 +3e3f3e3a3c3f43484b4751515150484f5a5a5d4e4a4a3c433f4d474b4356 +52524c48573a503d49463c3f40464f5050564e4c52554e4b4a4647494b4f +49485458605148545b5b5a6d56605c58545b616f646967605b58574f5a57 +4f5d545b5e56546156525b5a5f5b59514c76cffffffffffffdfbf9f9fafb +fefffffffffffffffffffffffffffffffffbfcf1ae664d443e3631313232 +3436463a94f1f7d2ca62d7d5f4e94d4d5980ffffff78fb4c4550535e40a2 +b9493b4b4d3747493aa9f4ece3fff5d8f0f6ebf1f2cbf4f8c5efffc8ffff +caffffaffbffcffff3f498484d403e3b3b3e3f4144495858a9ff5d5c6354 +5852535b615e5f605a605f5c5f6161655e6066655f626662626361636c66 +656d7adfffffff3073548b78b2ce809158482d1c246358c2d388ffd38ab9 +feffffe1e5d19b4c3a2e578559ffffc9334a709d61711a1c2215132d2917 +005c6a14ad952250fcffff5d7c5a46252b342c1f306297adb2ffff5e5dd0 +79817e33282a42899c9f8f85ff786a9997293af9ffff929b97a08ec3fdff +fffae4c4b2d0fffb7365c8736ac6fff2ffffb2eefae9dad8b5a9a5d11d45 +50787c654d4e462b21282f2a415d788dc1ff9c697e57818fdb7c687b7a7e +796d61594f4562ff9667aa92cc635beaffffc2f4f4f7e4dee9f4f3fcfbff +fff6f1f5f2eff4faf8f2ecf9f2c9a3c890c46b473f4a534546854ff53b31 +3b3e452633342e3934365a61373f542eb0faffbb3d5b48aeffa495a32b4b +566671848fc4ace2e8d1f6ffd7e8e9f0e7f7efedffebeddfeefdebfefaff +f9f3fffbececfffffdf8f2f8fffffffdfafff7ff8f99938f8c9086597fba +b3bfb9c7cfccd5d2d0d2d6d7d2ccced7dad3ced1d9ded4d1cfe4e7d3813f +01000e1307010500030e1c1d2c454b5a7d793723281c260f805459aa1d23 +19312a2827262a333c3e39303c3f3f3e3338403e4137373a30372e383236 +2e413d3d373342253b283431272a2b313a3b3b4138363c3f3835342f3032 +343832313d41493a323e454544573f4945413e454b594e534e4743403f36 +3f3c34423940433b39483b39404144423f3a3561baf6fcfaf7f7f6f6f6f8 +f9fafbfafafafbfbfbfbfcfcfcfcfcfcfdfcfdfcffffcb8d7e7d7f7c797b +7c7c7d808b6ea6eeebc8cb6ce2e5ffff73737a92fff9fd71ff6b7a8b8683 +50aac96a7996947e908d73d3ffefdaf4edd7f2f8ebefeec7f0f4c1ebfdc4 +fffec9ffffaefafec0fcf5ffc2869c9a9f9f9f9f9e9d9d9ba08bbefc4238 +42384542424545413f403f4746434648484c45474d4c46494d494a4a4345 +4a47455263caf9f5f8165730573f81993a502b3a46484d7b53acbc6ff3a9 +3d5ca5dec76147392e071a19335e39ebf8ae112a5c8d475f1c2c3938466d +737366d1cd4a9863003af2fffa45695e72666d725d423d5e87979ff7f64e +47b5566f93656c6b6798958f7c75ff68537c76081de2edf7656669663750 +6c73604f312a54a1fdf4583a8f3e48b6fcebfcc92535322323362c426bb0 +002a406a6c533d3a270c0e1e2c232b435e78b0f476436745696fad3f181f +13141412131a1d1f4bf7673b9781a13b50e4fad1425251544841464a4244 +3c3f3c251c1c171212160d0f18312f2126756aab411a1a2935272c6a30d4 +170d19202a0f1f211a221b1d42481f2a4529b3f4f5901a403399fb846c77 +052b3c515c6e74a58bc1c7b5dee8c0d1d2d9d3e3dbd9f1d8daccddecdaef +eaf0e9e3efebdcdcf8f4f1f0eaf2fbfffefcf9fff4fe646e686462665d30 +569089948e9ca3a1acaba9abafb0aba5a7b0b3aca6a9b1b7aca69eb6c9c6 +884e0c0408070000070301050a000616192850541b0d19121e0263323686 +0003011f1f22211d1c1d2023231e292b2b2a202631303329282a20271e27 +21251d302c2c262231142a1723201415161c2526262c2321272a23201f1d +20222428201f2b2f37281d2930302f422d37332f29303644373c38312b28 +27202c29212f262d3028263426232b2b2f2e2e28234ea9e5ece9e7e6e4e3 +e5e6e7e8eaeaeaeaebebebebededededededeef0f2eeece09d5847464948 +494a49474545523d80cfd1adac4ac0c1e3dc44444b6ae0dfe455e4414653 +4e4f217b983338535846595a46afedded1eeead3f1f7edf2edc6eff1bee8 +fac1fbfac5fbfdacf8fbbdf4e8f19e57635c5c59595a5a5a5d5d615393dc +2d28332a36323237373330312c33322f3234343831333938323539333034 +393d3e35383d44adf1f1f1094b224a2b596f204e4a6b7c776987509faa59 +da912d4d93ccba60554834020b08274f24d6e8a3081d44743653192c3f3a +3f5d584c329ca12a8558002dd7e4ec395a474f3e474d3d242345707f81d9 +d93430a24359744043434579786e5b53df4e416c63000dd2dfeb60605c58 +2d4b6f7765553528488feae44f33862e2d95dccfeac636545646414d3c46 +609d00152750553f3031240a08141d111d344d67a0e97540572d4f589d3a +212e2422180f0f151e1e3de65f3288719a333ecee8ca4f69666755526371 +76807f8481695e605b585c635c575562573a2e6f5795351412222d1c154f +1bc107000f162107181a131c16183e4313192e0c96dceb8a14352284e16d +5a6a001c2d3e475657866a9ea490bcc69eafb0b7b2c2bab8d1b8bcaebfce +bcd2d1d9d0cad6d2c3c3dedad9d9d5dce7ecebe8e5ede1eba59697999fab +853a81d6cbd4dce1dfd7e9e5dddadfe6e5dfd9dfe7e8ded8e0efeaeacce0 +e2dfb36210020c160e111c20364960616d808c8f7c5a4d56454d50505ed8 +80b873324e3c444a494140434642483f45464a493d3d414549424347444c +575a4e5645514a534c54615661535a5a5e626161615b575b4b4d494e574a +4253524e4b48525c585b5f53605f6964545f4e535f574d5d4e644e5a5157 +59576359595e5b645a595b55696a5d5b67645a4655a1e5fffffffffafffe +fdfcfbfbfcfcfefffffffffffffffffffffffffffffffffffeefab634c43 +3b34312f302e3034304df6c1f0ffffcdfcf5a8f1a0c1ba80dcf98076f23d +362e34484c4b58523d3d353c3d474d3d6ef2fdffffd6feffffffffceffff +d3ffffd9fdfde5feffc6f9ffdcfef5ba5351463f3a393837393e41465755 +a8ff625c61585b5353595e5c5c5f5b5c5b5c61605f655e5e62625d606562 +656462666f68605f7bc4e1ffff1e6460587dffffabb76a583f251c3a484e +78ffff9aa1dafffffce2d29a66353434506d51fcffce3d3d7b8c6d8c272d +260b06231916003f5e12c0901898ffffff576e6144212a3132272c688dc1 +addfff9a60c5488884362b323f849e9e8f80ff886b84853471ffa2fa6b7f +afa393e4fffff9efd0cdda79609f6b6f7a506dadfff2ffffabe2ece6d5c5 +a9a180983852433f48514a3b40252b2b272a422ea0977a666b78735a8552 +b8983ea2767a786f625a52494dffda223828484e4af6ffffd3c7eee6f2f1 +f2effffffffffff5fdfbfcffffffffffefe2e1c8b5d9a7db852898925048 +95d846ec6c3b5851532d383b3135343251414743483047809a48495e584f +a28898de454d5b53758996a9cbe0dfe1e0eee7eae4e8f1f4f1f8fffff4ef +f9e9fdfffcfef9f9fefff8fffffdfcfffcfffbfbfffbfafffbfa92838284 +88946c216abfb4bfc9cecec6dad6cecbd1d8d7d1cbd1d9dad2ccd4e2d9dc +c3dce5e6b9671001080d010007000a12211b213545524b342e3c2a2e2c25 +2ba5579a5f25473436383228252c2f2d31282b2f34342b2d32363a313030 +2a3240453941303c353e373f4c414c3e4545494d4c4c4c46424634363237 +40332b3c3d3936333d4743464a3e4b4a544f3f4a373c48403646354b3541 +383e403e4a403e43424b4140423c505444454e4e41303e8cd0effbfaefed +f4f5f6f7f8fafbfbfbfafafafbfbfcfcfcfcfcfcfcfdfdfcfdfcffffc78c +7f7e7f7d7b7b7d7b7b7b6f78ffb7def9ffcdfffcb6ffbde0d595e7fe807d +ff6d7f878f9a897c878a858e8891949992718cfcfcffffd6fffffefffecb +fcffd0ffffd9fdfde5feffc6faffd9ffffdc87969b9f9fa09f9c9c9fa19f +a18bbfff4a39403b45424243423f3f42404342434847464c454549494447 +4c494d4b44484d49404464afcaf4f30448403259dfe7788a56697b73656b +4f3f68ede04c4b89cbdc74464127200a161a365237e3f1b61d1d677c537a +293d3a2d3763657563bfce54b9660080f3f4f83b58656d5f6c6e63483662 +7bab99cefc8846a8247394646c736895978b7b70ff7750605e115bf487dc +49577e5f326a7d734b402a44874e519853494a234f9efeebfad324312f2b +2d302b434c791c393333394038242106141d1f1e2c148682695048525944 +6d348f6400521a1a1a17171b1b2031efab00251621293df0eeda643a6258 +5e5652454b4d45453b29281e14160e15192519161e1e2d7e81c55d007775 +2f2779bd27cb48173630361521271a1e1b1b3c2a2927392a45787e23233d +423d8c696eb21f2d413c5f717b8aaabfbec5c6d6d0d3cdd1dde0dde4f4ef +e1dce8d8ecf1ecf0e9e9eefde8f1f1f1f0fff4fcf6f6fff8f8fbf6f56758 +57595e6a430040958a949ea3a29bb1afa7a4aab1b0aaa4aab2b3aaa4acb8 +aeaf98b6c8d4b56b1806070800000601090b1001000b192523101225171c +1c12108637783e052b1f292e2c211a1e1d181f161a1d1f1f15161d21251f +1f201d25303428301f2b242d262e3b303b2d3434363a393939332f332224 +20252e21192a2c2825222a343033372b36353f3a2a35252a362e24342137 +212d22282a28342a2b302e372d2c2e283c3f30303a392d1b2c79bddbeae8 +dfdce4e4e4e4e7e8e9e9eaeaeaeaebebedededededededeef0f0f1edeadb +975446444646484a494342413a4bdf9cc8e3e6b1e0db92df91b4a86cc5e0 +645ce43d47474c584e44504d4349444d5059594168e1e8eff3caf8fafafa +f9c4f5f8c9f6f6cff3f3dbf4f8bef2f8d0f4f4c16167625f5b5b5a58595c +615f625191de3226312d3732323534312f322d2f2e2f3433323831313535 +3033383333353a404137332f4592c2f0ec003c352f4dbec15d856f95afa3 +857c553a59dbd5403e76b1c974514e2e1e010b0d294120cde0aa12104f63 +426e263d412f3353494d2d849e309f560074dadbec304a4e4d3a484c452d +1e4c679480b4e4723598145e7740444b46757a6b5a4edf5d3f524d0046e3 +7cd2404d70522b657d7854472a3e773b3e8849403e10337ddccfe6cd334d +4f4a464337443f6507231c1b222c2c1c1e030e14120e1e0575715945444f +4a2f531c7d59005d27251b1312161e1e25dfa30016081a202cdadacf6b4a +6f646c686e6c7e8988897d6868615d625e66666b554948393b7b6eae5100 +6e6d2a1e64a212b838092c272e0b191e1216141537241f1924102c63731d +2036342974545ea5121e322a4a595e6b899c9ba0a5b4aeb1abafbcbfbcc3 +d4cfc3becabaced4d2d6d0d0d4e3ced7d7d7d8e8dfe6e2e2ede5e3e7e2e1 +aaa1b2a6a191625fa0d6cad4dcdedde4ebeae4dbdae2e6e4dadae2eae4d9 +dce9edebd9d6e1e0e19d3c0b01181f212427424e5f606d75786f50685792 +6f2b3c4b426da795ab2a41463c444a4b4d535756484040444948413f4b52 +5453595e61645c5f5667545e5561555d504e46464952474a474749454348 +4f59534f5a5b5861645b5448596756574e4c594e564f515d555558575262 +4b5650554f5357586059585c595e5b5b635e5b5c5444394d8bc5ffffffff +fffefffffffefefffefefdfefffffffffffffefeffffffffffffffffffff +ffeaa4604a4137302e2e2f302f314d35f968ebfdecffe3c8a4f58db9b8cb +e58e7e80f0303d2e1e35353b413f423238353238514e91f5f7ffffc3eeec +f9fffed1fdffdbfff4deffffdcfafec3fffcf8ede4584d43493b3a393633 +32373c465553a6ff675d615d5a55555c5f5c5c5e605e5a5d625e5c635f5e +61625e61656365626368716f686483bd1117711f34683f25545c93bc624f +2010232e4e6affffbcc1dcfffff8eadcb0603c2f3b384e6765b4ffb96181 +729e7ba325201e19172e231800455219569256afc7fbf15980654c242f32 +372d2d758f8e654d6772625f717e763236383578a0a19681fc96758df544 +5c574f494171b3b2c4f4fffffde2c7d4fa52344345533f646e9efefefcff +b6e0e6dcc1a5959399dbc1394c4c4d4f8f5e5c2f2b1e192e36399a9b417c +774a5a4edcbc7efd367f6f72746f655d56512ce3f0292fafffd95dffffff +e174938794969c9dd0edf5f4f6ecfffafafffefff1fffbe7e2d0b5abffff +b560ffff735b8caf46c3ad3459715c32343e35373934437763393426369a +b4bd334e3a30ffcd9fff774e6054807c94bec6cfdbdcf1efdddfe6f2fff2 +e5ece3f8f4f6f9effffafffffdffe8ffeefffffffdfdf6fffffffffbfffe +fff2978e9d918a7a494889bfb5bfc9cbccd3dcdbd5ccccd4d8d6ccccd4dc +d8cdd0dcdfded0cddadee3a44612000907040b051113201e283138382241 +3574510d1a23103b7e78981f3a403034333030353a3a3129262a30322f2f +3f46484244444147424a41523f49404c40483b393131343d323532323430 +2e3338423c384344414a4f463f334452414239374439413a3c483e3e4140 +3b4b323d373c363a3e3f47403d43404542424a4845473f2f243876b0eefc +fcf8f2eff2fef6f7f9fafbfbfcfbfbfbfbfbfafafbfbfcfcfcfdfdfdfdfc +fcfdfffac28980817e7d7c7e7e7d7d7a8d63ff62dbede6ffe6cfb0ffacda +d5e6fea2898eff618c91899c8b878787948d96969495a18db6fffbffffc5 +f0eef4fefbcefafed8fff4deffffdcfafec3ffffffffff878c91a29ea0a2 +9f9a999ca1a2a189beff4f3a404045424245433f3f43454541444945434a +4645484945484c4a4d49454a4f4e48496ca800005805184a2102272a5f95 +5a6c6c6c7564585cfae0645e8ac7dc94533e370b0d1725243b524c9bf3a1 +4164608c6191252e3238486c6d7769c9cb675b733a94b3e5d1386964715d +6b69644b356d7a754f39525d483f4d69805a74796390998c826eef855565 +ca2147452f27254d796259727f6048333362b32c253a2f33153e558ff8f7 +ede1383a3530281e233f6bbfa5203c4041407d473b0d120c0b1e1f1f8386 +306656243c35c2a15bd100381e1b1c1c1c1c1e230ac2c401199df3b84dff +fae987002214181411021e2b27232a20301f13190d150e2724181f212244 +ebf78d35f7ef5036709427a38910355140171e271e20201d30604119231f +3092a1a00b27231dfbb178d7532e443d6764799fa5aebabfd7d7c6c8cfdb +f3ded1d8d0e5e1e3e8def4e9f0fbedf7d8fddefcf2f4f1f3eefffffffcf6 +fcf9f8ed6c6372666050201e5f958a949ea0a0a8b3b4aea5a5adb1afa5a5 +adb5b0a5a8b2b2b1a9acbec9d59c4818040c050007030d0d1106070c1211 +00221a5c390000090022625878001d2820272b29282b2c2c1f1715191c1d +19182930322e31333237333930412e382f3b2f372a282020232c1f221f1f +211d1b2026302a2631322f383e352e22313f2e2f26242f242c2527332c2c +2f2e29391e29232820242829312a2a2f2c312e2e363330322a1a0f23619b +dae8e8e4e0dce1ece5e5e6e7eaeaeaeaebebebebeaeaececedededeeeeee +f0f0f1ede8d59051444442454849474543425935e648c4d6cce6c9ae8ce3 +80ada7bbd77f696de632535043574a49494852474c494b4e62568be8e2ed +efb7e3e3eef8f4c5f1f5cff4ead2f6f4d2f0f4b9f6f6f6efed65615f685d +5e5d5a5554585f61604d8edd35262f303433333735312f3232312d303531 +2f36323134353134383433333b42433d39344c8b000051000c422300120f +498e6f949d9b9a7c625befd662597cb1c5855a4c400e070d1a192d413685 +e2953656487450852331393b445d524d308d983f3d5f2f899bcec62f5b4f +523a49494731205a676138213d4a3b323d5465384d513f6e7c6d614dcf6b +4659ba0e3231241d193f6d5753707f66513a2f57a119122b24280729376e +d6dad6d74452514a3c2c2b3d5caa900a2528292b6f3f360b0d02000f1110 +7175205b51213121a98645c4004027231b181618212300b3bb000c8feaaf +3eece6dc89092819202026244e676865695d6c5f59645c63566a604c4940 +3447d9df812eefe84e305b79128e79022946350e131f161819152958380c +0f05187d93980922150ce69c69c9451f362b534c5c80848b979db6b5a4a6 +adb9d2bdb0b7b0c5c3c5cac0d6cdd6e1d4debee3c4e2d8dad9dad7eaecec +e9e3e8e5e5d999a7a09b9b7785e6cfd6d8dad7e0dfe9e2e9eae1d8dbe3e8 +dfd8dbe8eae1dbddf1e8e7dbdde3eecf6e23041b2e2d2d394a5560637267 +64575b7c4f21e2d161485b7fcc7fd26b3e3f464547484642454a4e484343 +44444542444a45454a4b4b4a3f514c4c3d514a453f4642434b4049474444 +41444d51545c5f5f5c514b555950595754434a53454d5258554e584e5f63 +6065535759605d5c5f585a54555c555752544e525f5e5a4957434c7dc0f6 +fffffffffefffffffefffffffffffefefefefffffffffefefefeffffffff +ffffffffffffffe59e59463e33312e2d30333332373ff1dbfffbc2daece1 +f4ee453a3d76e4e4b78feb3e4a34322a2f404035363a39303b353b445e50 +a7f1ffdcffffffffffc9ffffcbffffcefffadcffffc1fef8eee26f4b4a4f +343c393a3936323237435353a2ff685c5d5d5a57595f625d5c5e62605c5e +625d5a61625f626461626664646063666b6c6c6987bf241e592630613f30 +8aadb5a7653d2819244344e7ffbd83f2ffffffddcec8723a322d221c426e +76555a576f7d7171428e272723170e24180a003f5b1e71d61c5e416c5063 +866f57313938392e2b749096415a74735553d5867a2a292c337ea0aa9e78 +e0b6787dff1f392d60ce9e73a0bce9fbfff7f9d5b0a2b82f91fc8935528b +6e99fcfffbffc5dfdeba9383837e88958f20305aaa5e423d5f312d2c2025 +4634a3a595ffff5c4a6cadb672ff4560656a6d6b625855543be5ff3c29bf +ffff4ca9fffffc545b6050545f6bb3e5f5f0efe8fff7f2fff3fbfff9fafd +f3d8c4a4defff941ffffa24e9e976d73c92a5466653a313c3a3c3f35228f +c438383a32f0f9ff74483016ffff9bff9e45566e747b93e7b3bae2b7c4ce +c0d4d4bed6dee3dde2e5ffe9e5ffeae4e3e9e3efceefd3f3e5e5ebdedae2 +fbfffffffffffff884928b8684606ecfb8c1c3c5c4cfced8d3dadbd2cacd +d5dad1cacddaded5cfd1e5dddccdcdd8edd88132030a0c060e1713152125 +352c2e262d542b00c3b243262d4fa260bb5a303337322f2d292629303935 +2e2e2f2f3030323833303432302f283c3737283c35302a312d2e362b3432 +2f2f2c2f383c3f474848453a343e423944423f2e353e30383d4340394339 +4a4e494b393d3f464342463f413b3c433c3e393b353c4847433442313a6b +afe5fcfcf8f3eff2f7f4f3f9f7f8fafbfbfbfbfbfbfbfbfbfbfbfbfbfcfc +fdfdfdfdfdfcfcfefff5bc86818381828182838483808179ffdffdf7c6e5 +f7f1ffff6f6867a0ffffc89eff648d89958f8b96948b979fa198a59b948b +8c6ab1f4ffdefffffefdfec6ffffc8ffffcefffadcffffc1ffffffffa188 +94a4929f9fa1a09d99999d9fa089bdff50393c4043424448464141434745 +414347423f464744474946474b494c4745484a4b4c4d6eaa0d06400c1443 +1c0034516d7c5a596f6c676c4ad1e9761989bfcc9755384016000c1a1e18 +31575d3f474151605f60287a263236343c6161655fc1d77480c004432850 +2b3e6c6a74606c6960463068797b2b455f5c3933b4727e49636f67999993 +8765d6a5534fe400271c3eaa844e5a5b72716f4a3f2c344b7d0c7eef7319 +316d598cf4faede952463c1e0a0e20355e7a7005204e9e5231253e0e1013 +0c122c1a8c9284f7f339294f939c56f214241c19191a19171a2213bff317 +13abf8f23a9dfdf0b7000a130300000011241f151f1d3223151f1a242821 +202a2e242432b3f8d51bf9f87e267f7c4e50a4043044471e19242224241e +117b9d12232f27e5edfa4b1c1403fbf276df7a253a54596175c89299c19a +aab6a9bdbda7c2cacfc9cfd2ecd6d4fbd9d3d3d9d3dfbedfc3e3d7d9dfd4 +d2dcf5fcfef9fffafff25967605b5a3644a58e96989a99a3a2adaab3b4ab +a3a6aeb3aaa3a6b3b6ada7a7b5b0bcb3b3bcd1c37d370b120d01090e0e0c +120e180c0c06133b1300a7931f03163b8a449c3c131924242524211b1e23 +28241b1b1c1c1d1c1c221d1b1f1e1d1c162b2626172b241f19201c1d251a +23211e1e1b1e272b2e363838352a242e322933312e1d222b1d252a302b24 +2e243539373a282c2e353231322b2d27282f282a25272127363531212f1d +26579bd1e8e8e5e0dcdfe6e2e1e6e6e6e7e8eaeaeaeaebebebebecececec +ededeeeef0f0f0f0efece5ce8a4b41424347494b4b4a48464c49e8c4e5de +abc5d7cde2e33f373570e1dfa87fdf3b5a4e554d4c59564c545954495a51 +52515e4796dff1d0f4f5f8f7f8bff8f8c1f6f8c4f8f0d4f8f8b9f7f5f4ed +7e5f636d565e5d5c5b5854545b5c5c4b8adb34252b303331333838333032 +34322e30342f2c33343134363334383432313b403b3a3d384f8d05023900 +083b230533465e756b7e9d9e918a58d4e3721b86acb58b55414a19000914 +130c27494928363446524746176f24363d3a3a52463c2783a1475fa90038 +123b22365f5656404d4b452e1c58696816304e4e2e28a35a652a3d464176 +7c746744b3894342d5001108329e733c4e546e6f72504c332c3a6b006ddf +660d20553a69d0dad3db595a53331a17232f4e655e000936863c211b390a +0c0c03041f0b7a8174ecee35203f7c813edf0f26231f191613131c230bb4 +ec0e06a0efe92e8deae1b200070d000007053a595d5559556b5e5865616a +6b625d615b473c3aa3e2c712eff380246b61393c9400243a3d130d1a181a +1b1607729609121913d3ddef491b0900eae166d06c182c43464a59a97176 +a0788994879b9b85a1a9aea8afb2ceb8b6ddbbb7b9c0b9c5a4c5a9c9bdbf +c7bbbbc4dfe6ebe6ece7eadc9ca7a0b1854f8cc8c8c5deddd8ebe3ddd8e1 +e8e4dbd8e0e9e5dcd9e2eae8dfd8eae4e8e8daede4e3af55120d27313442 +505e656777585452547baf4dabdfef793055694fc5794047514c4c4f4e4b +535e57564d4e504e514f4d544a4b5051534f50544f4c444b494a42503e53 +4e4e4a4958554d4a4f4f4f5560535552454b54484d4947434c544f515659 +474a554b554e4f6352595d50625a5e52595258655b6261645d57615d635b +8ab0edfffffffdf4fafdfffffffffffdfffffffffdfdfdfdffffffffffff +ffffffffffffffffffffffffffe09554433b2e2c2a2a2d31333237327ba2 +b26a5a595d687147485947517f6d429bf53445413e2b3f2c293d2c312a30 +2d2b4548595db4fefacff3f6ffffffbcffffd6ffffdcfff7e6ffffc3fcf8 +e48845485040413e3a35373b3c393b47585aa7ff695c5b5d5b585c63645f +5c5f5f605e5d615e5c61635f6165616164636762656666686b6790bbf7ff +e5225c7b676d97b3b4a7706654403b3483ffff7dcffffffce6e2c6bd3e30 +382e1d1c44758357958d636569c65ea2331a1811103a3122002f6909b3ec +21377faade739e915737424944302b61a38b66ffffd84e7fe7788a473a39 +2d589ea5a086d2d56b79ff4e294ceaffffa2a9d0f8fffff2e2c6b69fcf73 +e5fff63356aa7f86fdfff7ffebc3b89e837c7a75759876172296de815756 +683228363032422b7cb484ffff5f3c71885468ff594f67696c6a60545153 +3ea6ff561c89ffff6b68ffffff3e4f4a4d505969a9e4f9f5f2edfcf6f4fd +f8fdfbf2ffffffeace96bbfbff7cc0ffbb469a99c777e7344f686e473437 +3c3e3f37266cf9462e312bc6ffffcf32412bb5ff9beddb3f5d7172979bc7 +c6d8f8e1c8f2d8f8ffebfafffff4eef4ffefdfffece4f2e6f1f4f6f7f0fc +f7ecf7f8faeaf6fbf8ede5d7e7df87928b9c6e3875b3b3b0c9cac7dad2cc +c9d2d9d5cdcad2dbd7cecbd4dedcd3cce0d9dad8c5dadeeac56912000005 +121a141a262d44292728295289298ac1d45906263e2ba65e292f36313033 +33333b4844453a3b3b393e3d3c4238363a363734393f3a372f3634352d3b +293e39393534434038353a3a3a40493c3e3b2e343d313834322e373f3a3c +41443235403640393849383f43364840453940393f4c4249484e47414a48 +4e49789fdcf9fcfdf1e8eff2f5f8fcfefbf6f8f8fafafafafafafafafafa +fcfcfcfcfdfdfdfdfdfdfefdfafffff0b58481838082828182848482846d +96abb26a63666b7887667489767ba2874fa8ff5883929c8e9a847e958c96 +919a9992a191897bc2fffed2f4f5fcf7feb9ffffd3fdffdbfff6e5fffec2 +fdffffbc7f8c9d959b9d9996969c9d9a9ca2a391bfff51393a3e41414549 +4843424544454342464341464844464a464649484f49474845474b4b77a3 +dff8ca063f542f18192e4b615877897f62447deec42868bbeda95c473f53 +00041a20201f335d6d418277454857b5448e3223292c3c72717465a6de5c +c2da0b1f668eb84e8086695a696d62422a51896e4deff5c1305fc8648860 +727c657a9b908c76cac44447f229173ccdf7ea71505d74755d41312d5461 +a052cef8e0193b926c79f3f6e9ed8136231009132232507f5700108ad275 +463e470c06171517261165a173fbf73e1b546e3c4ef22c14201a18191713 +1621117ef1350473f5f65558fffcdb00141417140f001428221721222f22 +152027302b1e283e422d251a87e5e55ca9f2941e7b7da854c00d29444e2b +191f242624211858d01b14201ebefffba6022315a4f87ac8b71f4054557b +7ca6a5b7dac4aedac1e1ecd4e6f2f3e0dbe1f1dccef5dbd3e2d6e1e4e6e7 +e0ece9deebeef2e2f0f5f0e5dacfdcd75c676071440e4b8888859e9f9bae +a6a1a0abb2aea6a3abb4b0a7a4adb6b4aba2afacbdbfa8babacbb86a1e07 +0502080e0a0f1517270b0a0f164076116b9da93300162b138a410a152120 +242828272f3a3533292a2a282d29282e222125212221272e29261e252324 +1c2a182d28282423322f27242929292f392c2e2b1e242d212723211d242c +27292e311d202b212b242638272e3225372f31252c252b382e353439322c +38353b35648bc8e4e7e7dbd2dbdee1e4eaebe8e3e6e6e7e7e9e9e9e9eaea +eaeaededededeeeeeeeef0f0f1f1f0ede7c9834840414045484a4b4c4947 +4e3f738e985046484a54613c4355424b7a64318ae832525a604e5d484358 +4d52484f4e4b605a5f59a9f1f0c7ecf0fbf6fab4fafacef8fad6faf1e0fa +f9bdf7f6ec96565d695a5e5d575152575857595f5e508bdb3523272c3031 +353a3a3531343132302f33302e33353133373333363335333d4036343c36 +5887d5f4c300314f3c2b2431455f6895b3ab8d658bf1c22569b5da995c4f +465700031a1f17142b51582a736a3a383f9b33832e2831353b67574c2e6c +a930a1c200135079af4675744f3c4c51482c18427a5c39dae4b32654b64c +71434d533e557c716b54a6a8353ce4160025bde8d8624858707664493b30 +474c8c3fbeead30a26784c56d0d6ccdd854636201418212a3e6945000072 +ba5f3632400904120c0c1a02539063edf1391446572033dd261626201816 +110f18220b74e82c0068eaec4a4bedecd2000c080d0c100f34585d545857 +675c56636971695b6476735542257ad0d651a1ee971e69659340af001c38 +43200e13181c1b160d4dca14050e0babeff1a4021b0894e76bb8ab123244 +436560878494b8a28db89fbfcab2c5d1d2bfbbc1d3beb0d7bdb7c8bdc7ca +cccdc6d2cfc4d3d5dbcbdadfddd2c8bac8c2a7a49e8f5b61b0ccd3cfdedd +dae7e9e1d8dbe2e6e0dadce4e7e2dcdde5ede8dddce1ebf0e4e9dce2dd9a +420e1c363f465864656a84544c535c50a87375bce96f3b75b02bbeb0335f +575350463c3534393e423a3f3f3c42383841373a41414b48504142494f46 +4e5a7f845462474e4a524f4f4a4748444248524a4e504a50574d4c433e4a +54595d555e57444750595d66425b585b63485d4f62595452565a5656464a +3d325685d4fffffffffff5fffefcfffffffaf7fdffffffffffffffffffff +fffffefefffffffffffffffffffffffffffffddb8d4f3f382a282624282e +31303351bc5bd1b0f8f67f8ee84055493f83f6f263baf239403b2b333047 +49384234393935353d496152b7fcfcd1feffffffffccfffffffffeffffff +cdffffb4ffefad4d4f58424d4c58594740474a4648545d63abff695d5d5f +5c5a5e63635e5c605e65635f61605f63645f6266636263616762676a686b +6d648eccffffff2b718eb5a0d5f1d5bc8658531d1561ffffa3b5f9fffff0 +e7c3b9822e322c1e192045836cb2ffff464d5cb562a236091f1e061a2b21 +00347d2e56e61429d1ffffa5b38b714f4b534f45517ba1af6de9ffff2388 +d36d7c452934375c9ca2a091bfee6685f24b3151deffffa0ccf1ffffffee +ceb79ca1ffbcb7ffff3d51977979effff3fff6959596877d737272888f36 +1f6f9f9364636e4d4043312e39436dc49dffff9a4a8771aba2d358586e6f +706f645451555272ff8150a9b0cf6c5bfeffff654b45484c536496dafbff +f2edf5f8fbfffcf9fdfbf5f0f7e2d49fb5ffff75545f645d5a2a8133bc58 +386c725639363f3f403c2e28fb68476238a0fffded5b5b475fffc5c4ff66 +6d758bacbcc4cbf7efe0dff3e8eeefe3e6f0fdffe6f2f2f9eef1fff7fff1 +faf7ffedf4f5fff8f5fefff7f7f9fffff4e1eced928f897a464c9bb7bebc +cbcac9d6d8d0c9ccd3d7d2ccced6d9d4cecfd9e1dcd1d4d8dcdccbd5d5e8 +f0ad4500000a1515161f2836582f282e35267e4a529ece53154a85019487 +0a352d2d2c292524272c2d2f24292c29312b2d362b2a2b262a29362b2c33 +39303844696e3e4c3138343c39393431322e2c323b333739333940363730 +2b3742474b434c4532353e474b512b413e41492e43354b423d3b3f433f3f +2f35281d4173c3f5fcf7fef4eaf5f6f4fdfaf7f3f0f6fbfbfafafafaf9fa +fafafafafbfbfcfcfcfcfdfdfdfdfdfefefdfbffffedb28382857f82817e +7f83827f7c89d45fcdacfcff8698f8597b7369a4fff663c0ff6284908891 +85969385958e989c9b97948e8f6fc4ffffd3fefefbfbfcc7f9fdfbfcfafd +fefcccfffeb3fffbd6868d9b8b9b9eaaab9991999f9b9ea7a495c3ff543d +3d404140444848444549454a4844464544484944474b484748464f49494c +474a4d4875b4f7f8f80f545b591e3245384856566c37134feaf2525cb1e9 +bf7947294f3b000e15131b1f336b569efcf728304aa4498e32122d362f4d +61635497df7260d20013bdfaf680957a755f626a614d4865849052d3fbf0 +076ab85976585d7775859d8f8d83b9df3c51c3261b41ccf1f3585c69746d +493a2d3a5577db9d9bf6eb263b83696be1f2e4ee94150c13181f22334e6d +6e15095f938451494b26181d0e0d1b2758b18ceced7b2969589388b3291c +2319171916101723224af66535909cb84f43f9fef0361f19130f0f070725 +28242321221a10172328302b2019241d251a75f5f85b3d433d353b0e6110 +9531104650381d1c252424242014d23b254b2899ffefc52d352c4ffca8a0 +f1444d556c8c9ca2aad6d1c3c5dad1d7d8ccd2dce9ebd3dfdfe6dde0f0e6 +fbe1eae7f5dce5e6feeae9f4f7eff1f1fdf8e7d6dfe267645e4f1b21708c +9391a09f9daaaca5a0a5acb0aba5a7afb2ada7a8b1b9b4a7a5adbfc3adb0 +abc2dca94e0d00090904060f131e3d14101b261a70363678a12b003a7200 +7b6b001c171a1c1b1514161b1d20161b1d1a21181922151316131717271d +1e252b222a365b60303e232a262e2b2b262324201e242d25292b252b3228 +261f1a262e33372f38311c1f2831353c19302d30381d322439302b292d31 +2d2d1d22150a2e5fafe0e7e1e8ded6e1e1dfeae7e4e0dde3e9e8e7e7e7e7 +e9eaeaeaeaeaececededededeeeef0f0f0f1f1f1f0efe8c77e453f413e45 +48484a4c4846475cb244b493e1e26776d4314c413777e3db49a4e63a5359 +4f554c5f5e4d5d51585b5a5a5d5f6b53b2f6facefefffffffdc4f9fdfafb +fbfefffdcafdfcb1fbefb4595e68545f606a69574f575c5a5d6360568fd8 +3524282e302f333737333337313735313332313536313438353435313533 +3f4438373e335698edf4f1034657683643514151626b8b5c3869f0ef4f56 +a5dbb4754f334f3900121b17181a2f614186ece91d20328a35832f173840 +31444a3f2261ae493eba0006a5e4ed7a8b6a5e44464e49363757747e3fbe +eae2005fa3405e3c394e4c5d7d716c6095c22c44b3130428b6dce34c5869 +747255453336415ec58b8de8dd1624684848bed1c5db95221c211f201f2a +3e5a5d0400487b6f403c4521161a0804101945a07cdee676245e42776d9c +211c2a221b18120d16221e42ed5a2c8993b04939e6ece42c140c0b0a0e11 +234e5b5a57545957555e67696b655a52574a462b6ce3e84e354042352900 +4c008422043b442d110f181919181309cc361b3d1887efe4c32d322342ec +9890e53840465a7783868bb5afa1a4bbafb5b6aab1bbc8cab3bfc1c8bfc2 +d2cae1c7d0cdd9c0c8c9e3cfcfdbe0d8dbdce9e4d4c2cccc9ba79e729ad6 +c6cbd1d5d9e4e8e1eae9dfdadee7e6dddadee8e8e1dae0edeee4d5e3f7f0 +f1dde2e5dfd0842e1f39494f5c665f6a905a475055453c40645a9c4c448a +ff4796d5775b505759514843413c40463d464a45483a414c404044414f4f +4e484d434e48514d464c4145503c4b454a505151514b49514950514b4c54 +5247484644524b44544d4d4b4e55535d4a5b515f5f57684c605065624f53 +544e554a4681c5effffffffffff1fefffbfffbfdfdf8fefffffbfdffffff +fffffffffffffffffefefffffffffffffffffffffffffffffbd7894b3f35 +2b292726282f32313e3af4dcffc689f9c59af550afbfb941f9c246bce334 +4c3333343c3b3d4540433f3d374042497896b9f1fcc5f6f8f3fefed4fef6 +fcf5f4f5f1f8fffafffeffbe595e635b615a5c778f6d56585b5354615f65 +acff695e5e5f5d5a5e62615d5c61616b6a62626362646660636865636361 +625c646b6c70706274e0ffffff2e6782ffcfefeff6d49d6a2e1b4fe4fff0 +a6f1ffffe9d6c8ca9a77202b2a25251c3785729effff5c3c6f955ec67422 +1e1a0a28302b19397b4648b83241ffffffc0829ba976565455628fbebadf +7fe1ffff4a9d945a8066322d2b5099a69c7fa1ff687aba631999ffffffb1 +e1fffffff3e0c2ab9e8bb88f68aeb66878625985d3fdfcffd07994937977 +706b57a2ac31605544444c5f6e533f463c3a383b53b7af7f7775778a6063 +56b2985373727372655551574865ffc030453e33414cffffffb52e4b5255 +556481c8f1fef9f6f9fffffffff4f5fff8f5ffecd7adbeffff7d244a6e49 +4663f96198922d6270603d353f3f4142303277445659416dffffef66a089 +789cf298ff935f859594afc1cffcf3e6d3e0e6e7ecebeaf6ffffffe9f9ff +fff6f5f2fff6f5fcffecfcfff9f9f8fff9fffcfef9fffff8f7f68692895d +85c1b1b8bec2c6d3d7d0d9d8d0cbcfd8d8cfccd0dadad3ccd4e1e2d8ccda +e7dbd9cadae7ecdc872404131b181a22263d6d3c2b30301d11163f3c8433 +2163f21b64a241251c272e2e2d31323033362a30322d322834413533322a +32323732372d38323b3730362b2f3a26352f343a3b3b3b35333b32393a34 +353d3b303333313f3932423b3b393c43414b38463a45453d4e3246394e4b +383c3d373e35316fb0ddfcfcfcf3f8e6f3f8f3f9f5f8f6f3f7fffbf6f8fa +fbfbfafbfafbfcfdf9f9fbfbfcfcfdfdfdfdfdfdfefefefdfaffffebaf81 +81848183827f7f82837e846effe1fdc58dffcaa1ff67d0e7e15effbe44c5 +fd63928b908f8f85838b8d9290928f978e88a1aec4f4ffc7f8f6e9f3f6cf +f9f1f7f1f0f1edf4fef9fefdffcb81949c97a09ca0b9cfae97999d999ca6 +9d93c0fe523e3e40424043474643474c48504f47474847494b45484d4a48 +48464a44484d4b4f50465bc8f7eef7104745993139333d435955301d3dc4 +f1b357a5e2ed76472f45494600141d202418236c5d8cfcf93e1f5e8445b2 +70292a3231555a5a5881c375449e1c2ef4fcf39f61819c745c5d5a607ea3 +9bc064cbfbf82e817b49787464706e7e9e978c729df941498b3d0189f2e9 +ed4e5f6d71553932384b6c709c7048909c5164514672c0eae9eb76011417 +101b1f2c3285870d4743343337434c2a12181013161f3ea59c695c58586e +474b3d8f661120141216140f1725173df0a8132a2a1c202df9f9f691081f +1916160d001f26282b281f211a1b2b282a32241e301e21226feef6680c2b +47212947d93c7168063c4e40211b2525252a201e50172d3b3467fef6cc3a +776a678fd879ed733d6474748d9faeded5c9b8c7ced0d5d4d6e2eff1eed6 +e6edf2e5e4e1fee6e5ecf2dbedf6e9ebecf9eff7f6f6eefdfaebebea5b67 +5e325a96868d93979ba7aba4adada7a4a8b1b1a8a5a9b3b3aca5acb9bab0 +a1b1c6bcb7a2acbfd2d08c2f0d120c03040b0b205122162127150806251a +580b0b52df024985250904111b1b1a1d1d1a20261b222621251a242f2120 +1e1820222724291f2a242d2922281d212c182721262c2d2d2d27252d242b +2c26272f2d222222202e251e2e272725262d2b3522312834342c3d213527 +3c39262a2b252c221e5b9dc9e8e8e7dde2d0dde3dee3dfe2e3dfe4ebe7e2 +e5e7e8e8e7e8eaebecede9e9ececededeeeeeeeef0f0f1f1f1f2f0f3e9c6 +7c454142424649494a4c4b485040e8c3e4a972e1ac80dd3da1b3ad30dfa5 +2ba8da376051575457504f555759565755605d5d8196b4ebfbc4f7f9f1f9 +f4cbf6eef4f0eff0eef3fdf5fbf9fbba5c626961675f637b926e57595f5a +5c655a538dd53225292c2f2f323635323439343d3c34343534363832353a +37353531302c3d453c3c41303cacedebef053a40a9484f444f5466644536 +53d3f3ae5098d1dd734b34484541001a2627291722654a74eceb330f446a +31a76d2f363e3650463a2d539b5127870e20dbe4e9985872895b4242434b +6e9289ac4fb4e8e72375652f615a414743577e786a4f78dc303b7b28006f +d8d2df485f70775c463c383f5555865e3b858f3f4c3526519fc9c9d5750b +2122151c1c2322737700332d1d1f243543260f180d0c0c112b918d5c5352 +5563312f1f795d132a221b19130d16241335e59c0d2323161b28eae8ea85 +0014121111131240535b5c5959605f616b65626a5e57674f47376bdee357 +02294c221931c429605a002f4233150e18181a1e1313491227312457edea +c83975655d7fc767e0663155635f74838fbcb3a79aa8acaeb3b2b5c1ced0 +ceb6c8cfd4c7c6c3e1cccbd2d6bfd0d9cfd0d2ded6e0e0e1daeae7d8d5d4 +a2a88447b2c3c1d3d7d7dee7e6dde0e8e0dcdae0e6e5dfd8e4ebe8dddae5 +eceae3cff1f0f7e8d6e8e4f1c1731a3941606266685c6245524450434341 +654a44495764b93e81f5cecfc5704f4c554d4e443e34474b5450584c4c49 +4340434a4b484e464f494b50444647453e40504d45484852473d484d5161 +5150595a4f4f57545950514e5557565f5c4964515452615a525655545352 +4f4b645b4e3d34519de2fffffffffffffdfbfdfcfcfcfdfcfdfbfefcfefc +fdfdfdfefffffffffffffffffdfefefefffffefefefefefffffffdffffff +fcc3834646373129242b2c2b3536383469f3ff6332e3a596f043c0c1bd7f +fbf655c3d4354338333a3e4147484b4a4a534d4d525eedf5fefffdfefefd +fffffffffffffffffffffffffffdfffffb8c6f5f6d686a61787c886d5f65 +66606165676fb4ff69555d60615e63686767645e68605e5d69665871675a +5c605f636a64666367626e69675d8dba203fa81e4070d5e3e1f0ffee8137 +2c3391ffff9ec9fffffde2cdc0aa8c58212b2123221e3783819dffff7c58 +6c7c976a2f202519092c564b78a9d79c5f914b79f6ebff9b7fa9adb55e59 +585562c7b4a07470708a867864758b702d3134429ba4a18788ff6782f8ab +787f909bafcaffffffffe6d5a08783848e787c415c616560a38cc1ffffe7 +a876968a80757b705588d2665a5f59515e746864474a3d41374242d4bf58 +8362505764c89b99c45a7d817e796d594f575840ffee254273f1b75affff +ffd9334e545f535f8abdeaeffaf4f7fffffff1f0f2fffafbfff3e5b5a3ff +ffd03dffff824284bd707c8c335172683b3b404140403c22b6b44152412d +fff6ff745c5b3bd4ffa1ffee637f9688abceced7e3eee3d5d4fff0f4d3ee +d0eaf9fef7f8f0f9f4f1ffebfff4fffbe8fffffff5eafbf1f6fffef2fff9 +fcf58b916d309cadaec0c4c6cdd6d5ced1d9d1cdcbd1d8d7d1cad6dddacf +ced9e0dedac3dfdce3d9cde5e5f4c3700b1b10241f253333442f3b292f1e +1a19402b2c323841931250c096978c3a1f22312e3430362d3733332b332b +34373734363b383338303933353a2e30312f282a3a372f32323c31273237 +3b4b3a3942433838403d443b3c394042414a47344f3c3f3d4c453c3d3f3e +3d3c38344d4639281f3c88d0fbfaf7f4f2f1f0f0f2f4f4f5f6f7f8f9f9f9 +f9f9fafafafbfafaf9fafafbfbfbfafbfbfbfcfcfcfcfcfcfcfdfdfdfdfd +fcffffd9a97c888385817b827e79827f7c687ffaff663beeac9dfc58e0e7 +e59ffffb5ed4f7698c8d8e95928e8d8f9490889191918f8effffffffffff +fffcfbfbfefef8fdfefefefafefdfcfafcfff9958f8b9c979b93a8a9b496 +8891939294999997c2ff52353f444845484b4a4c4f494f4543424e4b3d56 +4c3f414544484f494e4b4b444d48474174a205238b00202d4e352a356254 +2d111c2e87f7df538fdbf3ad5532465252350d2423271f13256c6c8bfafa +5e3b5b6b7c5429273131305572659acfffb34b6e3469ecdffa7d5d8792a3 +545352494ba891805a5a5e786c5e5066847d5a727772a599937d86fc4252 +c98560708172554c6c6b5c46303a354663737359581f3f474f4c8e75aaf1 +ecbd55091c121717272d2b67ab3f3d4a473f4959463b15170a1412262dc2 +a9406b47343c4eb07e70890b1d161011141218262718f6db08255fda9137 +f0fcecb90819151b160f12212a202c2117161417242e273329262d1d2c23 +40e8f6c121eef05e25699e4d5562092a4e471e1f242522262a0f9388112d +332affe8f74f30382ac8f986eece415b72658bafafbac6d4c8bcbcebd9dd +bfdabcd6e6ebe4e5dfe8e3e0f7dcf7e3fdead7f9f9f1e9e0f1eaf0f8f3e6 +f3edf0e962684407738484969a9ba2abaaa3a6aea8a6a4aab1b0aaa3afb6 +b3a8a6b1b8b6b39dbbb7beb0a2bcc5e1c277121b010a040714152817291e +2818140d2d0f0810232e7c0030a075766f20080c1b191d18211a28272c25 +2d242a2b2724252827222a222b25272c202223211a1c2c292124242e2319 +24292d3d2c2b34352a2a322f332a2b282d2f2e3734213a272a2837302729 +2a29282726223b3326150c2975bce7e6e3e0dedcdddcdedfdfe2e3e3e4e4 +e6e6e6e6e7e7e7e8e7e7e9eaeaebebebebecececededefefefefeff0f0f0 +f1f1f6f3edb5784248424745464f4d474e4a49385bd9e6471ccc8b7bd62d +b1b4b170e4dd3fb2cf3957525358575657575d5a555e5e606368edeff3f4 +f7fafbfafefaf6f4f0f5f6f8f8f4faf7f6f1f3f4ed806656666063586e6e +795c4e565a57595b5a5991d8321c272f3431373b38393a343b32302f3b38 +2a43392c2e3231353c343233403a3e35382b55860020830013275c4c3e4a +7e6e3d1e273586f3dd4e83cadfa25b3a4348472f0f2c2f32281725645973 +eaec532b414f6949292f3f3d3551634a79aae096325a2659d1c5ed75547b +7f8b3b3b3c3339967e6b434248645f4f37496a61394a4c4a8379705960dc +2f44b9704653645c4d4d707265543d402d344a595e474c13313638317156 +8ad2cca7510f271c1c1827271d569c302d37332b36483c351416090f0918 +1aae9b34614031333994605a81102b281d18161015222210eacd021f58d4 +9033e6efdeac00131018110e1e39514e5c5453585a595f635e6b62606953 +553a43dde0ac16ecf55e17548a3a4654001b40381011181917191c018d85 +0f272619efdbef492f3420bae873e0c1374f645272929098a4b1aa9d9ac9 +b7bb9eb99bb5c6cbc6c7c1cac5c2dabfdbc7e1cebbdcdcd6cfc5d8d0d8e1 +ddd0ddd7dad39f804a48abcdcfd0dbdbe1e7e4dedee5e4dfdbdee4e8e2db +dee7ebe4dde0e8ede6dfe3f5efeedae0f4e9ec9e5429545760615a79b16b +45514b5353636956373a6157902593cca3c1d3f6d48b5d6056634e4b574e +54545849544b474c4b423d434d4b4d474649494e434e4448454d4a5a444e +4b454847485148474f524a4b514f46494946534e47605c5064585e606253 +4d53595b5e5d554a323c61a2e9fffffffffffffffffffefdfcfbfcfbfcfd +fbfbfbfcfcfcfcfdfdfdfffffffffffffffffdfefefefffffeffffffffff +fffffefefffffbc47e4b4c3f3038322e30374031384cebe6ffcdebf7bbf5 +f99640494680e9b347c8d3434b5147495157605454596c62656d5d6af0f9 +f8fffffff5fffffcfffffffdf9fbecede4d4e0c7d0cb8b686a62585d5b6c +7f82928687908e898c8f99a9c8fc6f5f5861635f626462636460686b665e +666960645d60626f636761635e6068636d67686085c22b1954383669d3e8 +e0d4dab7744d4256fdffbaddf8ffffc2d6c5b28182b4111b1821251e2c73 +8b6c6c6778947f70686f461e181c0e221b2287a0252a6af6426665666f74 +8eaf9a9468695964819f989773635469736c8cb07f65332e2b45949f9e8c +82ff6b86f2c319475065bfecfffffff4d9c79b8776898f8a36afdf51496f +df83acffcda5b9798b898a75888e5f8cbb95223c5b65474c69783d4d5041 +475039e3baa5ffff524b4ca69785d364858a8881755f50535d43f8ff3c2f +d2ffff6dd8fffffc455f545c55607faee2efeaf1fffffffbe5d6f2fff5f9 +fff6e6bd95fffff42efeffcd20857a836898454d6b693f393f413d3e4f21 +8fff5e432f1ff7ffffb92f342a9fffbfffff768890a19addcad7cfe1c6dd +d2e1bfe1f2c8c8e3f2efe5ded2e0e0e8ddd2ecd5e4f4f7daeef6fbf1fcf4 +f7fbfff9ffffffff8869333195b7bcbfcacad0d6d5cfcfd6d5d0cccfd6da +d4cdd0d9ddd6d1d4dce1dcd2d1e2e0e2d1d8ece3ed9f4f14251b21262c56 +9759323b2e322c3d4537202547386e00679a6f8b9dc1a1592d32283d393c +4134332f33263530333c3e3734383a353731303333382d382e322f373444 +2e38352f3231323b3130383b33343a38313434313e39324b473b4f43494b +4d3d373d434548473f351d274c90d7fcfcf0f2f3f2f1f1f3f3f5f4f5f5f6 +f7f8f9f9f8f9f9f9f9fafafafafaf9fafafafbfbfafbfbfbfcfcfcfdfdfd +fdfdfdfdfefefeffffd9a47e8a857e87827c7a7f8474797efff0ffd7fbff +c9ffffad62716ea2ffc358def471879895999a9ca19393929689959f8b8f +fffff7fcfffff7fffef3f9fffef8f2f5e6eaded1dac4cbc9896f81837980 +7e8f9d9dab9d9ea9a9a7adb5c1c8d0f3563f39464a46474745484e4b4f50 +4b434b4e454942454754484c464846484c454c4649446dab100036181424 +4b382a1c27221719294bf3f8708fccf4c75a473a5a48589b0b24282f2515 +1c5f765a5b545a776e5f4d59402524333346302e91ad352c4acd2856605f +5d596c89757552594a52667e7577594f42575c5578a1756f5c6a69759f99 +91837efa4b58c39a0032352c4f5b7362413532454c5a607b766b1089be34 +3059c76a91f4b27b6c1417141d122e443168916e05254650313349500711 +140b1f3322cea38ef9e7362f368c7858900d1a140f11161316222c1de2f1 +1d10bbf8ef45c1f3f1dc121e0d1516120d192a241c1b1d1b151c261f2933 +2624251b292321cffae80ed6f2ab046a5b5f416e1b264548221d23251f24 +3d0e71ee2c1a211ceefbf898020b1793fba8e3f154646c7e7abeadbdb5c7 +abc4bacaa8cadeb4b4cfdfdcd2cbc1cfcfd7cec3dbc4d3e3e6c9dfe8ede5 +f2edeff3f4edfafafbf75f400a086c8e92949f9fa5abaaa4a4abaea9a5a8 +afb3ada6a9b2b6afa9acb4bbb9afa9b7b5b8a8b1c8cbe5a1531315010206 +0b367c412330282d27343522010630235300447548657ba28640171b1128 +242933272a292d223029282f2e2523262b2729232225252a1f2a20242129 +2636202a27212423242d23222a2d25262c2a202323202b261f3834283a2e +3436382822282e3033322a220a14397cc3e8e8dcdededddcdcdddfe0dfdf +e2e2e3e4e4e4e5e6e6e6e6e7e7e7e7e7e9eaeaeaebebebecececededeff0 +f0f0f0f0f0f0f2f4f9f6efb875454b46404e4d4a494f513f434ddccde3b4 +d6e3a5dbdf7f303c3970d89f34b8c94253605b5e6263695c5c5d665a656e +5d66e4e7e2ebf0f3eaf5f6eae7ecebe5e0e5d8dbd0c0cab1b8b47450554e +444846576768746768727471767c858fa1cc382624313632363533353936 +3b3d3830383b32362f323441353933332a30403b3d33372e4b8c07002e0b +081d554d413847402c252d47e7ea6d8bbfe4bd574d3d4c354a960d2d353c +2f1a1c5663444b464f6754433a4e402d32413b44211676911b1635b91946 +43434f50637e63603d42353e536b616040342a414c435f845c543c44424d +7d776e5c58da3648b18400151a194b5e786c4f443c473f4548616259037c +af221a41ab4c74d694636618201d231530412458835f0013333d1c1f3c48 +05131609172510bb9380ede0352b21715b4188152c2a201d1a13141e2714 +d5e3180bb5f3ef45b9e6e3d10e1c0b110f0e152d4c514d515a5d595b5a4f +5d6a5e5e6453533d2ac8e3d003d4f5aa0057494f32600d173839140f1719 +14172f0069ec2d18160ddfeceb9100091085ea96d5e34a585e6b61a18d9a +92a68da598a886a8bd9393aebfbcb4ada3b1b1b9b1a6bfa8b7c7caadc2cb +d2cbd9d3d8dcded7e4e4e5e1a06397c8cdc6d0d3e0dddfe3e3dedcdee6e3 +dedce1e8e7e0d9e1ebede3dce2eee9eaddeeecefe7dcefeefbdb8e434a55 +65665a3f423240413e4e4b5b55533c475d4ebc487eb26d607aa3d8da9989 +74586c584a3d423f444c4e4b4a4f483b3238414944423e3c464a55675453 +404b4050464949494a4b494655535757515153504e58504a554e446a6657 +58524e5252536d5a545748364a71b2e0fffffffafffffcfbfbfcfeffffff +fdfcfcfcfdfbfcfcfcfcfcfcfcfdfdfdfffffffffffffffffefefefffefe +fffffffffffffefefefefdfdf8bf774e4f453d3c384145444b494b41ac60 +9687ae8266998b795e6453504d5f49e3ce415e464a46443c4d4449575567 +595b635181a5a19991988f8b8f7a7b7e81717b817886907e8d8f839eb2a2 +b2aea8a8a2bab6bcc1c3cbcec3bbc0c3c4d9edff695e606b5f5d64656260 +615f6468605d5e5f5f5760685d6c5f6a5c655d616c676e676a6581b99ccf +b6265266d7e6e6d5b59866483db5ffe1bdedffffe6d7c2a5768e6c701113 +0a121d213b8c78675a7071787298927234222a1a062e003a97bb0f4e67fe +3c355167875283969c9697907f97a9809ebf5089e6ff7c53adce80733534 +3039889c9a947cff7d85c5f42f3487fff3fefffffbefc1916349326598af +92ffffaa41b9e775aadfaeabcc7f898c907b8d946478dc6d171fb9c69653 +75a75151584a3e352ecce3a2ffff544078807d86d7648c92908a7c66514f +4f3cd4ff60228cffff8c7cfff6ff4a6569655d61729edcf4fbfefffef5ff +fffaf4fff1f8fffae5c6afeafffd4ec0fff42e96ada57f834c3b646f4b3a +3c41393c372e60ff892a3b20afffffff5339305affccceff9f8a91b1b9bf +d0f7f1f5f9f1f9eeeffcffedf2ffdcdee6e5dae6dfede7d6e3e9ede8fefc +ecf0f8f9fffcfdfffffffffef9ff874a80b1b7b0bdc2cfced0d4d4cfcdcf +d7d4cfcdd3dad9d2cbd3dddfd7d0d6e2deddccdee1e8decfdfe0f8de8e35 +231f2e3431202c21302f25312a393536263144349e275b8b43354d73a5a1 +5b452b15372e26202b282c2f2b252731342f313531332e2c282630343f51 +3e3d2a352a3a31343434353634313e3c40403a3a3c39374139333e372d53 +4f40423c383c3c3d57443e433422365fa0cef9fdf1eaf0f6edefeff0f1f4 +f5f7f5f5f5f7f8f8f9f9f9f9f9f9f9fafafafafafafafafafafafbfbfbfc +fcfcfdfdfdfdfefefefefefefcfeffd4987b85837f817c83847f83828874 +c76fa298c99d7daca193838d7c78717e62fae55c82727d7d7b718075787c +697771777f678ca59c949098928b8a72757a7b6c747c73828b7a888c7e9b +afa7bec0babcb6ccc4c8c9c9d1d6ccc9d0d7dfedeef85040445249474948 +43454b49494b43404142423a434b404f424d3f4a454950494d464b4969a0 +81b3980630255b4433231a19080b23abf8c07ca9f0e26c494a49406c4c5d +14272a2e271f2d7a6352475a535b5e84775c2e2936312b52093e91b50e41 +3ecf20254c637a3c616e72707c7b6e858e5f7ba13878d6fb653d99bf7679 +566668639698908877fb5f5c98cc111557b5715f68553535322e292a2055 +82906df4ee8b269fcd5a8fc2918188231a141c0d28433051b2450008a2af +803a557c170f130e131517b5c988f9f2372461665b56910718140f111714 +141c1e16befb3f0070f5f4665ff5e4ec0813191a1912030d292b2b242218 +1333544d2c3222231c1a24262c92eeef2a95f5d8147c9084575922143e4e +2b1d20251d21241b48f55700281aa3fcfcf8260d194cf8bab7f57d666b8e +99a2b6dfd9ddded8e1d7d8e5f3d9def7c9cbd3d2c9d5cedcd6c5d2d8dcd7 +edebdde2eaeefaf5f6fafef7f6f3eef85f2257888e879397a4a3a5a9a9a4 +a2a4b0ada8a6acb3b2aba4acb6b8afa8aebcbebaa0adb3bcb7acbdc3e9d7 +8e32140710131103140d20231e2d253028240f192e1d82063562190b264f +868646321a04291e16101b1a222727222329291f1f222125201e1a182226 +3143302f1c271c2c20232323242523202e2c30302a2a2c29273129232c25 +1b413d2e2d2723272728402d272b1c0a1e498ab8e3e6dad3d9dfd8d9d9da +dee0e1e2e2e2e2e3e5e5e6e6e6e6e6e6e6e7e7e7eaeaeaeaeaeaeaeaecec +ecedefeff0f0f0f0f1f1f2f2f2f4f7f6eeb36b444944424a4953554f524f +4f3c9a467a6e9e70517f73634f554443415438d0bb31523f45444239483d +414838463f464e3964837e77747e7773745b5557594c575e56656e5d6b6d +5e788c7f908e8887819891969899a3a79d989fa4aabac4d532262e3c3432 +3636313034323639312e2f30302831392e3d303b2d352931443f3c333933 +478278af9000241f635951473c37221a229fe8b178a6e7de7755493c2651 +3d571930353a31242c70503d384d484b456964512e31463f34500027799d +002e2abd12152f466a315864625d69665a717b4c67891c5cbde455287ea2 +5d5f3943433d73756c6251d9474a83b3000041a971646e5e464336281b15 +083e6d7e5de4de771188b43f72a473697f24211e27162e422542a6390000 +909d6b2648751613180e0c0805a3ba7bedeb39214f4b3f3f890f2d2c2520 +1d161118190db1ed3a006cf1f36559ead6e109171814100d091e49575d5e +6359536d82785d68585d5c5651423a8ed6d41c8ff4d4076b80754b4d1405 +313f1e0f14191216150d3ef15a00210c93ececec210a113fe5a6a7ea735a +5e7b808495bbb7bbc0b9bfb5b6c3d2b8bdd6a9abb5b4abb7b0bebaa9b4ba +beb9cfcdc0c5cfd2dfd9dce0e8e1e0ddd8e2765ecdb6bed6d7e3e2dedbde +e2e0dbd7e5e6e2dcdde5e9e6dbdce6f0eadddde8ebeae5ddebedf5e6e0f2 +f2f3bf7d43575d62574d5e42353c434b473f403f404951455b3982dde9a6 +705879abd8c5a6926563584c4a403b4550575a544d48413c46524c504c44 +4f4b495746453f4c3e434d4746494d54544b48484b4e4e50514f46545758 +5a5644565d524d5d5b584f596e5e4c4e72b0effffffffffdf9fcfff8fdfc +fcfdfefdfdfefdfdfcfdfbfcfcfcfdfdfdfdfdfdfdfdffffffffffffffff +fefefefffefffffffffffffffffffffffefdf6bc785a5a514f4a41494a3e +434a3d4e455b5456424f40604f4d53585f56605f56dccf61786b6b7a856f +7e818fa2a59b8f9ba19ca2a2a4a6b4b5b4b0b0c3c3aac7bbd1d3d6ded1e4 +d5dfe4dde5e6f5ebf8f0e9efdfedf3fafffff6f6fdfef9f0feff645c6453 +5a5c686a6560605e6c695f6a675e6862676a5963626a5c6361646d676d67 +6a677dc5ffffff497064d2cac7b98f81696561ffffaadaffffe4e0cc998a +65708b710f0f0a101b1b2a7c7c60ecff6e7b63bb756e4118211d08231933 +86d009436fff781169deffc06ab0e564363039302d27b4b36ba9ffff864b +db9b6279222e3f397e9b99977eff997bb4cf2a3cc0f0e7fffffff4dc9b61 +483b306779f5c8f6ffe44bc5e498aba99dafd47d8c908f898d875479eec5 +252b74b4ca636ca05b585c593c4c4777eba3ffff913f817ca7a6e5778c96 +968e816d574f5d4484ff8e3aa6dfff7483fcfaffa46d756f6a7485abe8fe +f4f9fffff7fffffff6ffeff8fdfbe5cea6cfffffc17c736948584a6e6d61 +5d475e75583a3842383c413e17ffbf394c4d79ffffffab585428fff5c4ff +de83a0bcbdcdd9edfceaeffbf0f8f5eeddf0e8fdfbf9fff8ecfffeffefff +fff1f6f6f9fffff4f1fafffffbffdfd9d5d6d2eb5d45b49fa8c3c6d4d3cf +cccfd3d1ccc8d6d7d3cdcfd7dbd8cdced8e2ded1d1dce0ddd7cfe3e6ebd8 +cce1ecf4c074252c2f3634324931252c2f322a2324252934382b401c62bc +c7844b2e48729478503c111b202634312e333334312f30363a37343c363a +362e39353341302f2936282d38323134383f3f363131343737393a382f3d +4041433f2d3f463b374745423943584a383a5e9eddfcf5fcfaeeeaf0f0ec +f1f1f1f2f3f5f5f6f6f6f7f8f8f9f9f9fafafafafafafafafafafaf9f9f9 +f9f9fbfbfbfcfcfdfdfdfefefefefffffffffdfeffcd937f86838581777d +7b6c6f766e7756645d665c6b53715f616e7680747d7969eddc6e89818798 +a38c9695a0aaa39795a7afa5a09a979cb0b5b4b0aababba6c0b6c9cdd0da +cbe0cfdbe1dae2e5f8f1fff8f1f7e2eef0f5fdfcf4f7fffffff9f6fa493e +493d45474d4d46444745514c424d4a414b454a4d3c46454d3f48494c5149 +4c474b4863acf8f1f7294c2863381e13020e102948f8e37aa1eeef8f4b34 +385244586f5f162a3436291a216c674bd9f2505e4fa75a583b1f2d342e47 +2a357cc4023244dc5b0062d9fdaa498abb3f1b1e2a1f130b95975698f8f4 +6f31c388567b3c556c5d89978c8971fd7d588ba5020a748758745d4e3535 +29191d221e5563d8a7d3f5c32ca9c87c908e808798291f1615111e2d1b52 +c4a10b165d9eb64d4f751f1111170d2c2d60ce86f4f8742167628878a11b +17141011161413182a1c6efb6b1489c3e75164e4eaf653050c0b0d100916 +3539231f241e1635574b282e1e22181b1f25186bf7fd9a515452323e2d4d +453733203854381e1c261c212b2b03f0910c35416cf5fdf77e2b3918fbe6 +aef6bc5f7a979db0c1d7e4d2d6e2d9e1ded7c9dcd4e9e8e6ece5dbeeedfd +def3f2e0e5e5e8f1f2e5e3effaf5f4f8d4cecacbc7e3351d8c767f999ba9 +a8a4a1a4a8a6a19dafb0aca6a8b0b4b1a6a7b1bbb6a9a9b6c0bbaa9eb4ba +c7b5a9c3d6e4b86d1a1b15191817341f161f262b24181816171f24142300 +3b919a57210828577d643f2d060f11131f1c1d252b2e2d29282a2a24262e +282c28202b27253322211b281a1f27212023272e2e252121242727292a28 +1f2d3031312d1b2d34292232302d242e413120224686c5e4dfe5e3d7d3d8 +d9d4dbdbdbdcdfe0e0e1e3e3e3e4e5e6e6e6e7e7e7e7e7e7e7e7eaeaeae9 +e9e9e9e9ecececedeff0f0f0f1f1f1f1f3f3f3f5f8f6ecad664949464b4a +454c4c3d3e41363f293932392d3b264432303b4049404d4c3cc1b1435c50 +54646f5662606c79736865757c76777374788b91908e8a999479968ea4a9 +acb5a9bbabb5b8afb7b7c9c1cfc7c0c8b5c2c5cbd5d4cbcdd7dadaccd1da +2e26342630323a3b322f312f3e3a303b382f3933383b2a34333b2d332d34 +453f3b323933428eededef1c3e20694b3d37252b263341e9d56e9aeaed96 +5f432f39233c615d1c354041321f1c5f5436cae5454c348c474d3b273d44 +39471a1d63ac002031ca4d0046bced9f4281ad2d0a0a170b0200807f3b7c +dfde5f20a96a3c6321364b39677469644edc6542758d000066815a7a6357 +443f280d0d0e083f4ec696c0e2b01894b2647571626e8d272521221d272f +1243b89300034b899e363f6c1f171819071f1c4ec078e8f1762158476960 +98202a2e282320181215261461ed651185bfe54f5fdadded590e100b080e +112955665a5c6764586f84765965555e595950462869dde18b4a514c252f +1f3e392b27112b452b10101a11161d1d00ec940f2f355ce2eae87826320b +e8d1a0eab2536d8584929fb2c2b0b7c3b7bfbcb5a8bbb3c8c8c6cec7bdd0 +cfdfc2d7d4c2c7c7cad3d5c8c8d3dfdadadebeb8b4b5b1cc6339c2cec6d9 +d9d7e6ded7d8e1e4ded5e0e5e6dfdbe0e7eae3dcdfeceee4dddfeae9f0d9 +e1edf6f6e5e4faecefb36651865b4b52543c34393f45443e3f4345484f5e +50388bb3d0e9e098605299dbddb4bdaf7a4f414237333f494f4e4c4a443c +444c444b4a41473f434b423b464d47454c4b4c4d4d525551535452525453 +504f5253585c52635a5a4c6b655d535d4d43415b9eedfffff8f4faf8f8f7 +fafdfefbfefdfdfdfdfcfcfcfefefdfefefeffffffffffffffffffffffff +fffffffffffffefefefefefffffffffffefffffffffffffffbbc8e7a7770 +6a766d65686b74766d7789919b8b8f808991ac93a5778e918b919392888f +8c9795a7bdacb2bcccdeb7bfc3c3c3d0def4edddf9e4ddf8ebe7f9e2ffff +f7fffcf2fff3f7fffffffffffaf1ebefdfd4d0d5dee2e5dfd6d8dbd6cad5 +f9ff71566564585b686d66626260636359615d56635d626661646b675d60 +626166616b676b647bcfffffff50757cfab99ba298926553b6ffced1ffff +ffd6dbb8a6f99c5b6f7d1914090c1a1c277c8170ffffd03b3e96757c6312 +1d2c161b2626415f174f679b75179cfafffe48a2b33a302b2e33354897b9 +9dc0f1ffa849ed6257913b373b3a739795967fffb76aa89f4b53d8e9ffff +fff3e3bd75423e3d314887d4b2abffd35dc5706fb997a4add27884958f96 +908c6465a294164d60545e577a8f6364656543434079ffaf98c085859858 +7858b77a8796979084735e55545272ffed5d7346485048fbffffda81c0bd +b4b9bdcce8eff7f7fffffafdfff0fdfff2f9fafae6d7bda3ffffb42b253a +344c3bea9d4e4a4555725f3d3340393f3a3112f5ff6d776167ffffff9f8f +826cabefbfffff8eb7c8d3e3d4ebecfcf5fee3fad9f0dfebf8f8ebf4ffff +f2f9ebf1f1eff4fafffce8fffef8f4f7f7f9f3f0fffffffff7ff4720a9b7 +b0c6c8c8d7d1cacbd2d5cfc6d1d6d7d0cdd2d9dcd5ced1dee2d8d1d3e0df +e3cfd9e4ece7d2d3efe6ecab533663372c373f2b24292d322e27282c2f33 +3642321a6b93b0c9c075381f5b938c574d4429182639363132312d272729 +29262e362e35342b31292d352c253037312f37363738383d403c3c3d3b3b +3d3c393838393e423849404032514c443a44342d2d4a8ddcfdfae8e4eaea +eaebeef3f2f1f3f5f5f5f5f6f5f5f7f7f8f9f8f8f9f9fafafafafafafaf9 +faf9f9f9fafafaf9fbfbfcfcfcfdfdfdfefefeffffffffffffffffc7a195 +9694909d928a898890938a8a8888968e9c909094aa94ad8397998e929494 +8b95949f9babbba4a4a7afc19baab8c1c2cdd5e5dbcef0e1daf4e1dbf0db +fdfdeef7f4edffeeeffbfffffcfdf7eeeaeee0d2cdd0d4d5d8d5ced2d9d8 +cfd3eaf053374c4f47494f4e4543484647463c4440394640454944474e4a +40454a494a434a474a4561b6f3f7f23051439a3a05080e2215219ff88d8a +daf1a7593d2f62dc8546536919293938261a20706f5af2f9b01c2a825a66 +5f1929433c423d2f3b581947457155018cecfbe6277d8f1a1a1e25282231 +7c9f89b0dffb8c2cd14a478f4a5459537a9285826cf09d4c897512056f69 +705e5042393223131a21173271bb968ce3b33ca654559f7e89899e2d1b18 +0c131629273d7c74013b4b3e4a415f672519151e1221255fec8f7da76562 +7e405e3179241616110f141412151d2758f1c835542a2c3429e3f7e57d01 +322b282d2928332b281f26220e182a1d20281d23191e1c232637f3f28b00 +0a2820351fca7726201d2f51422117261e24241e00dcea43584a5afcf2f7 +776464589ee3acf8f36a91a3b3c8bdd7d5e5dce5cce3c2d9cbd7e4e4d8e1 +eeede1e8dae0e0dee3e9f1ecd8f3efe9e6ecedefece9fffefefdefff2000 +818e879c9d9daca59e9fa7aaa49baaafb0a9a6abb2b5aea7aab7bab0a9ad +bdbbb79eabb9c8c6b1b5d3cedba04c2b4f1f17242e1b171c212421191a1e +2122222c1600456a87a0974f1502427b7746423a18030b1c1a1a21252420 +1f201e1921292128271e241c20281f18232a242126232425252a2d292a2b +29292b2a2726292a2f3327382f2f2140383026302016142e73c2e3e0ceca +d1d0d0d1d4d8dad8dddededee0e0e2e2e4e4e5e6e8e8e9e9eaeaeaeaeaea +eae9eae9e9e9e7e7e7e9ececefefeff0f0f0f1f1f2f3f3f3f3f5faf6eca7 +735e5a5655665f575a585d5d52535a5d6c616e61646981687e53686a636a +6c6c6069656e6b798b75777a8597737f8b9192a0aabeb5a7c9b8b1cebdb5 +c5add2d1c5d0cfc7ddc8c8d1d2d1cdcdcac3bec2b4a9a4a8b0b2b5b1aaae +b3b1a6acc9d53b22363a33353b3c322e312f32342a322e27342e33373235 +3c382e302e313e39393239304098e8f3ea23433a9e4b222a2f3a222291ea +8986d0e8ad6954394fba6329476a253a4743321f1a625b45e4eda50a0f67 +475b5e21395347412b14213e03302c5b480073d2eddc2074830b0c0d1416 +131f67887097c9e8801cb92e2e7833383d335972635f4bd182326d5c0000 +69687264574a423518030c13061d5ca58177ce9e29923e3c84606b6f902a +22261c23232e22316f650027382931294c5d261e1e220d15144edf8272a0 +6a666f243b146c27282f2a23201a1413181e4be5c2335126283024d9e9dc +8710403631363740565960606d6b56596250565e575f5b5c4e483935dbd4 +7900031e152713bd6c1a1411224234130b191319160f00d7eb45554249e8 +dbe36d5d5c4d8bcd9debe85e84919aaa9bb4b3c3bdc6aac1a0b7aab6c3c3 +b8c1d0cfc3cabcc2c2c0c5cbd0cbb7d2d0cac9d0d2d4d2cfe8e7e7e6dae9 +8ca7cfcacce3e0e1e6e1dad7dfe5e3dbdce2e6e4dddce3eaeae0dde5edeb +e2dbe6eeefe6d9eef0fef6dbf8f5fdda98556842535433445b4139403841 +394a45494b4f7339a0c38a83e6ffd17972c9efffccc3a08761493e4c4743 +49565b54505052514a4d4f4d4e4950554c3f4847474b475157534c4a4d51 +55575350534f494b5952565c465c58535d6b5f65514463a6f3fffffff2fa +fffffffdfdfefcf9fbfffbfcfcfdfdfdfdfcfffffefeffffffffffffffff +fffffffffffffffffffffffffefffefefffffffffffffeffffffffffffff +fdbaaea29b9589948a848379808d83818f968f9f8c9798acbcb6a8b9bdd9 +d5d4c8c1d0dec4d6fdfdfffffff8ccb2e4fffffafcf6ebfaffdaf2e2cdf8 +f7e3d8d2e2e7b2cbc4b8bdbab7aeb7a6a9a8aba9a1a99d96a494afafafa8 +9d9b968d9f8c7c8d605b5a5c5a5b64676162656563726d625f656b635e61 +6461635d6066635f635f6d6b6e6579d492a4ff483f5b94738ea4927e6883 +efcec6f9ffffd8c7b575b5dec15f797d23150c0a19232e8b9577ffffcc3c +5a9099726e172827142b2707212a202154898531ffffffec39b0e143192f +2b2b28388b947e947bdf9c5185495989494639436892919281e6cd586bb1 +78b3f2fffffff3ddca9556363738384f9cc15c6e687791715e7fa1b596aa +bf8c7c9a9394919c645798ec514f6a6a59636f7471665f564a3e404addb6 +6e8d6f536965c28e98b57d9198918779675c665c4afffe2a41528c755dff +ffffffd6e7eadee0ebf4fffffffffffff4f7fffcfffff8f9fbf7eadfc69a +e0f6eb28acff753858e1b5675742496866442e403c3f3c3d2a7bff716c6c +4496d5c18660715393ffd0f7ffa5c0cfd8babaeaf5f2f3eef8e3faffd9e9 +ffe3f1f9f1eee6f6f9f9fdeff9fce9fffeffe2f7fffdf1fefdf3f6f6ffff +fcff708bb6b3b6d2cfd2d9d4cdcad0d6d4cccdd3d7d5cfced5dcdcd2cfd7 +e1dfd6cfdce4e6decee2e4f1e7cce9e7f3d3934a5025373a1d304931272f +2730263732332e2f51167ca06861c6e4af503f8dacae635848402f27283a +352c2d3539322f343a3b3437393738333a3f362932313135323c423e3735 +383c3e403c393c3832343f383c422c423e394351464c382b4a90dff9fdf0 +e2eaf4f3f3f1f1f4f2eff1f8f3f4f4f5f7f7f6f5f8f8f9f9f9f9f9f9fafa +fafaf9f9f9f9f9f9f9f9fafafaf9fbfcfcfcfdfdfdfefefefeffffffffff +fdffffc1bab3b1ada2ada19a978b919e92888485849e96a39ba9b5afa7bb +bcd5c7c6c1c0d1e0c0cbebe2e9e0d5c79881b9e3f2edf3edd9e6fdc6e4da +c8f0e9d5ccc9d9dea9c1b9afb4b2afa6b0a2a2a1a4a199a499929e8ca2a0 +a09b9292918a9b82676f403c444a4b4a4b484042494b4755504542484e46 +414447444640434b4b4747414c4b4d475fbb7687f2261b27420706151015 +2257d0a781aff0d360392d0d85caa94458642127322f25212a7f8061faf9 +ac1d457d7e5c6a20353e3a534418242d2d253c656515f2f6f8d11b8fc32b +0d2929281c25747e6c8469c87e2f652e478351584d536d8c7e7a66cdb340 +54872c4a72776a6340303a2a1c151517183486ab4654495770524467899e +7b889149141c0a0b0e33252f77d140405555484f544c31170c0b171c252f +bb9454724a2f4d4dac6d606512151410131412162b2d2cf8d70120367961 +40f6fcdfa3444442373b44464b463929251e0a0e1d1c1c211e2220201922 +2928aad7c00194fb63223cc18f3f2c1a2347492814262127252a1867f14a +444d3790c7a860384e3b88ffbfddef8198aabaa1a6d6e1dedcd5e1cce3f4 +c5d5facfdee6dedbd5e5e8e8ecdee8ebd9f2eef6d3e8f3f2e5f4f6eceeee +f8fcf6ff49648e8a8da7a4a7ada8a19ea5aba9a3a6acb0aea8a7aeb5b5ab +a8b0b9b7aea9b8c0bdb0a1b8becfc8adcacadac18d464415292d12253d22 +191f151e152824251c1a38005a7a423ba0be8c30227191965046342a160e +1024211e212c302926292e2e272a2c2a2b262d32291c2524242721292f2b +242225292c2e2a272a26202230292d331b312d283240323824173679c6dd +e1d3c8d0dad8d9d7d7d9d7d4d8dedcdddddee1e1e3e2e5e5e6e6e9e9e9e9 +eaeaeaeae9e9e9e9e9e9e9e9e7e7e7e9ecedefeff0f0f0f1f1f1f2f3f3f3 +f3f5f6f3ea9f8c7c736f68746d6966595b675b525659577064736e7e8b85 +7b8c8ea8a09f9794a5b1919dbdb7bfb8ac9f705996c0cbc3cac4b3c1d8a1 +bfb3a0c9c6b0a49eb0b5829d998e938e8b7f867576757a7a727c736c7a68 +8281817b74737167765f4a572b282f34363637342d2d313432433e333036 +3c342f323532342e31362f2f3b373b363c2f3e9d6b83eb1a0d1c44141e31 +2823224cbe987cace6cc69493b0e6ea587294f682f3b453f3126216f6d4c +ededa10b2a5f6b516929465047523000050e110a204d5809dbdeecca1386 +b81f00191a170c166269566d55b874234e112f6b3c4034364f6c5d5848af +9824356e1e4471796c6646363a240e040b0e0b2171942e3d34425d3e2d4f +6f7f5d6d81431b2a1c1d1e3a202368c02c2b42402e364142311d16101310 +141eaf88476b52333f31874c5166222d2c24201a1516272521ecd2001b32 +72583aecead4ae595751484b56617076746c6f675150585253595a5e625c +504a3c2790b8ad008af1571531b68635230e16383b1a0719161b171b0c60 +f24d45482678ad925330483174e8afd0e4758c98a08385b3bebbbdb6c1aa +c1d2a4b4d9aebec6c0bdb7c7cacacec0cacdb8d1cdd5b4c9d6d4cbd9dcd2 +d7d7e1e4e0eac3bcc3d9d8dce5dce3e4e0d8d9e0e4e2dbdde4e9e3dde0e7 +ede7e1e0e8f0eae0ddeeebf0e2e6f0f9fbe9e1fffbf2be79634c43474d49 +373b47423a3a333d3f434a5b87608fc5d57858a7ffffaeb0d4e9ffecc4bc +a38f6b565c483e454b494c504e474846484c4849464c4242464b47514a55 +545053504c525057565760605d645d647081666753594c6a5769b4fdffff +fffaf8fbfdf9f8fafcf7f8fcfefaf9fafbfafcfdfefefefeffffffffffff +fffffffffffffffffffffefefefefffffffffffefefffffffffffefefefe +feffffffffffffb8cec5bbb3acb7b9c8cebec7e4bfc9ddd4e0cac0e9cfca +dec0dde8e1d0b0dfc8b5adb0b6c3c9c9d2dae7fffffffcebfbfff2ecd89c +8268818d7f85837c7875788061625d5a584c463c542c3d625b437d303644 +503c25272b2a211d1e1a0f182e5668615c545757606361636766596e715e +5d656062635f5b615c63666863616764726e6f658ee74c1523452e737d63 +8d9a907c78afff9fc4ffffd9eac1b273a1bcb399858823151c1d201e1c6d +738371ab7b8d774787597d101d180a2143473a5b9b9d6aa07f577d636975 +6e84925711140f2b36305c7f9d54595e536d47856d804d5a5a65648f9193 +83bcd8516fff7cddffffffeff1d4c27e5254616b4e508ab54d568b8b554e +96c0939442597db078999a9392a06964aeff6831415c46446b9998586771 +4e334a3fd8c2b0fff76d6554a6a96eb06f8c99948e81706557553bfeff51 +29e8ffff59edfffaedb8f1ffedeaf5f7fcfffbfcfffdf5f7fcfbfffffff8 +fcf5f0e7ce9cbfffff22c1ffe52f80868a694f3f41606d4f2d3f3d3c3440 +3450ff9e26441649ddd78f292d3a3df4e9e5ffd7bcbbd0d0d2e8ffdad4f9 +f2c2fbf6bacee9b1daf1e8f3f2fdfee7ffdfceeed4ced3f3e0f4ffffeefc +fffffff5fdf9f9f9a7a0a9c1c2cad3cdd6d7d3cbccd3d5d3ccced5dad5cf +d2d9dfd9d3d2dce4ded4d4e6e3e9d7d9e2ecf2ded1efe8e7c47d54332a2e +3432232938362e2e242c2c2c2a365e346096a8503689ebe88d8cacb7cfa3 +75664a391e162c2729343a363236363132303236323330362c2c3035313b +35403f3b3e3b373d3a4140414a4a474d434854654b4c383e314f3c4e99e2 +f9f5f1ebe9eceeebeaeceeecedf3f4f3f2f3f3f4f6f7f8f8f7f7f9f9f9f9 +f9f9f8f8f9f9f9f9f8f8f8f8f8f8f8f8fafafafafcfcfcfdfdfdfefefefe +fefefefffffffbfdffb9d4cec7c1bac4c3d2d6c5ceedcad1d3c6d8cccefa +d5c9dabcdceae0c99ed0c4b9b4b0a8a4988a8c91a6ebe6d4cdc1deeee3dd +c183675171807578706969686b7353544e4e4c403a31492433584e36752b +32404a331a191d1c1616191506071236454246434b4647443e40494a3d51 +54414048434546423e443f46494d4b494b46514e4e4774ce300002230a43 +39081317181e4086d86e96efe56657365a407fa28e6f5c6d22242d2f2e24 +155d5d6a5990596e62346c4379192a2f304d69624a6bb6b05d825f375e47 +4d5850697c490f18162f3023496d8b4243433047216659754e62636e6484 +7a74619dbe3e60ed1a566c776d4f392b4d352c3a3e46293174a33c416f6b +342f7baa7f7f293b5771131b0d040932283e91f15c252f47353352715607 +0f24190f2d24b49e94f7cd44483f928f3f6b0d16171315161417182419e0 +f32506cffdf440d7ffdc83204e554139423f3c3b2b25252118191f1c1a1c +211e26211b222c297feae800abf8d31c6568654327171b3f503313242224 +1d2d233df77c001f0b45cdbf6e05081e32eed9cef7b39496b2b7bed6fec6 +bde2dbabe4dfa6bad59dc7ded5e0e1ecedd6f6cebdddc1bbc3e3d1e5f2f6 +e2f2faf8f9eff7f3f2f4827b849b9ba2aba4acada9a1a2a9acaaa5a7aeb3 +aea8abb2b8b2acabb4bcb6acadbfbcbfaaadbbcad5c2afccc8d1c07e4f2c +25292f2a1a1b252016160f1a1d1e1b244a1b4478892d1367c9c66a688892 +a880574f382c140c201818242a2725292a2425232529252623291f1f2328 +242d222b2a2629262228252c2b2c3535323b343a46573a3b272d203e293b +86cfe6dfd5cccacdd1cecdcfd3d0d1d6d9d7d6d9dcdcdedfe2e2e4e4e7e7 +e9e9e9e9ebebe9e9e9e9e8e8e8e8e8e8e8e8e7e7e7eaedefeff0f0f0f1f1 +f2f2f2f2f2f3f3f3f2f1e797a49589837d8c8f9ea39198b49098a297a99a +99c6a59bad8faebbb29d76a79787817e797870676a7080c3baacafa8c0cd +c2bca2654a32505e52565049484549533639373634262013290010342b13 +50050d1d2a14000002010000000000000021312e312f353233302b2c3134 +283f422f2e36313334302c322d3437382f313f3c40393d2f53b025000017 +0037360d2227221c2f70c45d87e4e1695f3d562f63817159567230394747 +39240b4d48564d854f5c471659387a223b413d4c503f264795903d68502a +4a324252485e713e0209062022133859772e35382a3e0c4a415f3c4d4e53 +48665a554581a3203fd3115a727a6d514130462619293840201f5f8b2226 +5756211b669264600a1f446a192920181b3b243181de460f1b3219173c65 +570e1b2a15031d13a89288f1d74c3a226d6c2b661a2c2f27241e1917131d +0fd5ef2202c8f1e839ccedd18f375f62514b585b656f696b6f695b565552 +52545e5b665c534d412666cbd3009eebc70e5a5d5c381d0d0e3042250619 +19180f1e1936f67d0019002ab3a75d0000131ed6c9c0eca788849a999db2 +daa39ec2bb89c2bd8599b47ca7beb7c2c3cecfb8d8b09fbfa19ba2c2b2c6 +d5d8c8d7e0dee1d7e1dddfe0b2c0decddddee2dee0e5e5d8d3dae4e6dbda +e2ebe9dfdee4ecede6dee4f1f0e6d6eae9f1f4daf7eff9fcd3fafff2dba8 +613c3b4546514e4c493c443442394d4d4657b4ab76a8eeca5b588ecff8d0 +bdd4e1ffffffd2cdbb9d85715848474c4e4a4d47514c4e554a4f4b503e50 +525f4e56525346455c5e55554f57545157535058555e5d674e483d617bca +f4fffffbf3fff9fbfcfaf9fcfcf9fcfdfffefafafcfefcfbfcfefefefefd +fffffffffffffffffffffffffffefefdfefdfefefffffffefefcfcfdfdfd +fefefefefeffffffffffffffffbae4daccc5b6d0cfc9c4b1b1bdb1c09f91 +998c8a81787782857c836b7280837371747e7fa5acd1e5ceb4fef4d3cadb +f9fffffffffff4c75718273b464f503e4753673229293b3e4955ea8e23cd +c882ff333a4c463f2c2f332c1e191c20202449626154624f53535e616060 +62605b6973646767596c655d556e68796a6062626966716a6a607acf764d +643f3b63775e878885777fc0daceffffffdbb8bb8f7b7f6d6b867d812e1b +1c1d1f2220739972737576818868d36c860c251d091e63677ee8bbb156b8 +ce255e617c82599b77871d22272b2c355481b13176cebd5d5ac36e854d39 +2e24668c9395829dde5884ffc5f2fffff7eddcc9d394747c7f83606589b7 +84deffff7154cfd57fc95c4430c476969e95969a6f4e7dd7511926b4c969 +54899a546a5e52474631cdc9a4ffff47456e8c9678d066899b9a9287786b +5d6a34dbff3f3398ffff8f81fff1ffbee3fffffdfffffafefbfffdf6f2f6 +fbfbfffefff9fef4f3edc7b29ed4de4394ffff418aa97c78414d44617557 +303e3a3740324617fff861383f2cccf0fa713c3e2efbffcfffeac9d7dee5 +daecf6f1e8eeede3ddf9fff8ffecebfff0fbfaffffddfeffd6effafffcff +f7f2f2fee7ebf3fefeeffcf9fffb98a7c6b5c7cbd0cfd1d8d6cbc6cdd5d7 +cccbd3dcdbd1d0d6dedfd8d0d8e5e4dacde1e1e9e8cde9e5f2f3c3e6f1e6 +e1b1592d272d2b363435372d382833283a3327328b7e4776bf9f373771b5 +deb6a1b7c2e6e6ba7163533f3937322d323a393337313934363d3439383d +2b3a3b45323c3d413433474c40403a423f3c413d373d383f3d4a312d2248 +62b1defafbe5ddeee9edeeeceef1f1eef1f3f5f4f3f3f5f7f6f7f7f9f9f9 +f9f8fafafafaf9fafafaf8f7f7f7f6f7f7f6f7f7f8f8f9f9fafbfcfcfcfd +fdfdfefefefefefefdfefdfefdffffb7e5ded4cdbdd7d2cbc3b0aebcb5c2 +9384928d938d7a737a7b767f696d7071676565634f63556f827166bec3a9 +9eb5dfeff2effaebdaaf460a1c2d333a3d2d3643572218182a2f3a4adf81 +16c0bb75f92a34463f331c1a1e1a0f0e141612102d4342374b3e44424544 +3f414645404e584a4d4d3f524b423a534b5c4d444a4a4d48524b49415fb5 +5a30461f1a373a0c19131b224b929d95dce9984b2c4b5a626752465d5767 +2e2627292f2c1c6382595c5b56617052b859811332362e4784818cf4d0be +4b9ead033f4463683c80617d24333e3e302e436c9f2063b69e3831a05a7a +46362d24628179735e7bc03d69f058637560584d33397d64545f585a3a46 +73a670c9faf95033b6c16ab14329108b121713060d2a292461c3400a15a2 +b85539625a05140f161c2614aca989f5f21f25567a8052940a151a171818 +141619350cb9ef1a0e7bfcfd766bfdd7be3540554c4750453a3a2e2e281d +181b1d1b1b19211a27201c241e304da1b1207df6f42b708d60581922193b +583d1423221f2a1f3404f8da37132f24b8d5db4d16201ff0fcb9f5caa7b6 +c0cac3d8e2ddd3d9d6ccc6e2ebe4f1d8d8f2dde8e9eff0ccedf2c5dee7f3 +ecf0e8e3e4f0dce1e9f7f8e9f6f3fbf6737fa08fa0a3a8a6a8aeada19ca3 +acaea3a2acb5b4aaa9afb7b8b1a9b0bdbcb2a6babcc4c0a3c4c2d5d6a1c3 +ceccd7ae572a2629242d2725231622121e162924152077672d5ba17f1514 +4f92b9917a8d94bac4a060564a372c291f181d2424212a262f2a2a31272c +292e1c2c2d38262f2a2b1e1d32362b2b252d2a272c28232a262d2e381f1a +0f344e9dc9e5e6d0c8d6cfd0d1cfd2d5d5d2d5d8dad9d7d7dbdddedee1e3 +e3e3e5e4e7e7e7e7e9eaeaeae8e6e8e8e7e7e7e6e7e7e8e8e9e9eaecf0f0 +f0f1f1f1f2f2f4f4f4f2f4f2f4f3f3efe896b9ab9b9487a3a39c9582818c +8391695a6661665f524d5557525a42474e4d3f3b3a382740375265524298 +988185a2c8d5d7d5dfd2c1952a000010151d1f0f1a293e0b0406181a232e +c161009d9852d7091226221905050906000000000000182f3025392a2f2e +31322c2d30302d3d47393c3c2e413a312740394a3b2f30323f3d4037362c +419a4e2a3c120b2c350e221c1d1b35788a82c4d798542f474c4c4d352c49 +4e68383a43433c2e135470454c4e4952583aa34a7d19434a3e496f5e68d0 +b1a22d859e002a325c673677567114202a2a211e33598b0c54aa99301f8a +42663425190c47635e584460a6224cd853677c665c4f38386c4d3f4f5356 +2f345c8c55aee0e33d20a2a94f95240c00841c2a261a213627164cab2c00 +018a9e3a2453580a1d15151519069d9a78eafa271a3a545b3b8c15283029 +231f1c19162f02afe7140875f1f16f60eacac5475369615e6b65636c6f79 +786e645f58515454615d6a5d555035323a869a0d6fe8e61d6381544b0f19 +10304a30091818131d112a00f6da380d1f0da0c0c93f0d150cdaecabeabf +9ba5a8ada3b5bfbcb4bab6aaa4c0cac3d0b7b8d2bfcacbd1d2aecfd4a7c0 +c7d2cbcfc9c4c7d3c0c6cedde0d3e0dde7e2bbbbdadad9efe6e2dcdfe5e1 +dbd8dde5e3dedde4eceae1d9e6eaf1dddbefeef0e1dcf5edffe4e9ffeeff +f4d7fafde9d5a14e384655554d534e4e4a463f3d434b4e487fd6a56ebde3 +cd545e7ba0e5dac9c3dae2fffffff5cea19782574e533c4b4b4856555b5e +535f585a5d5a556668705f606454594b4f4d4f535459666c6b706b6b6866 +739cd6fffffffdf8f6f4f6f8f8f6f9f9fafafbfbfcfbfbfcfcfdfdfdfcfa +fbfbfcfcfcfcfcfcfdfefefefefffffffffffffffffffffffffffdfdffff +fbf4f6fafefdfdfffffffdfffefaffffffffffc9c3b2ac9396877c7b7971 +6b675d675c5b53594741394e56454b3b373e384a4d51496095d9ede5ced7 +f6e5b6a3dbfffffffff9eef7fafffbb3694548707e61618df7ee92315556 +81528ff653c2b159ff2547474e423e413b32241f22272e1d3f605e5e5b56 +585960565f5c5b5b625a4e3f332b2b2f6665656559626371656767646467 +69656bb5ffffff4e6d588b6876807d7695c5d5f1fffee8cff9ed466d5f52 +55758a9d3a1127211220126593676eda9052556ed7677113211815142c0f +51cf4c20579cf52040a9ffff9bac79940b1c1d222d2b5374b42fedffff2b +66a45e97685d4917668c8f90856cb66687ffd9f2ffffffe0bcbcbc787d92 +8583615584b7c9c5ffffa440c4c77cc9646e2ecd7a969395919a785680f1 +6b1628a0b8c14d98b5616c6062434f3599ca7affff7d366a898470bb688b +979f9186836c615e55a2ff9228bdffff9556ffffffc9e3fbf0ebf7f1e9f9 +f5fffffff9f6f0fdfdfdfffffbfdfff2ddbfaaaaad60867885425c614b74 +575d485168643539323a3c39491cedff571b47305d737863403a31a9ffdc +ffffafd6d3d8d6effdf9edffe6fff5fafefdf8f9eafbf9dcfdf7fae7fbe5 +ffeafdfffffbeffcfffff5e5fbfffcfdfffafff6a5a6c4c4c6dcd5d1cbd0 +d4d2ccc9ced6d6d1d0d7dfddd4ccdadee5d1cfe3e2e4d4cfebe3f2d7dcf6 +e5f9e7c8ebf2e3d3a14c2d3237342a32333739352e2a2d302f275cb07d45 +92baa7303c5a82c9bdb3bbd1c5d3d3ac8c603738341922342739352f3a3a +3e433b4c474b4c473b46424e48505444473b3d3d3f434247525350514645 +43435480bce9f4f1edeae8e8eaeceeeff0f0f0f0f1f1f2f4f4f5f5f6f5f7 +f7f8f9f9fafafafafafafbfcfbfbfbfaf6f6f5f5f5f6f6f6f7fbfcf9f7f7 +fafdfcf9f9fdfffefefffffffafff9f6fefbfdfef9c4c0b4b1989b8c7e78 +746a615d545e51504a52433d324246333a30353c29342d25090f2d616b63 +546ea3a78a82bce7fcfcfcf1dee2e4f1eca75d37345863464977e3d97d1c +4044714482e841b3a44ffa183e404431211c1914110f12151d0a28464444 +443f4343463b444341414b43392c20181a1e53504e4b3e454452494c4a47 +484b4a49519bebf8f53150304e1811162128578a8db0f7bc522f94b22256 +4a3c3a5a708c381b3937282d11597d4e55c173353a55c1576b172e313834 +3c154ec943124180d1002899fcf97e8b5884193e4a4a3e2a405ba220e2fc +f80d3c7f4f8f584c3c0f5f7e736d614892394aaf6c6c71574b39355b8a5a +57685a5b403a70a3adabfcfc831fadb260a94954159c191a100e0c272a22 +5ed84e001792a4a931717c1b1b0f1b0b26187fb160f9f460164c75705286 +0e16121818171b131923247cf9780197f9f77839f2ede464413e39384039 +3342373b312b1a130d191917191d1f282b2924273f6683446a5c6a27414c +3f61312b11204a4c191d1c2625223204d4f738002f194153563f1a1a1c98 +f1cafbf497bcb4b8b7d2e3e2d8efd2efdee3eae9e3e4d5e6e6c9eae4e7d4 +ead4f4d9ecf4eeece0eef2fbeadaf0f8f4f6fff3f9ef7c7b9b9b9cb2aaa6 +a0a5a9a7a3a0a5adaca5a6adb5b3aaa2b2b6bfaba9bdbcbeb1acc8c0cfb4 +b9d3c4d9c5a7cad4cbc49f4f2b2b2c23171f222729251e19181b1b144699 +6327729a830c19375ea49b8e94a8a3b3ba97794f27261e0207180a212a2b +363336382f3d35383a362c39374236393b2b2f222524262a2a2f3a3d3b3d +3330302f3f6aa5d1dcd9d4d0ceced0d2d3d2d3d3d5d5d6d6d7dadadbdbdc +dedfe1e1e4e4e5e5e5e5e5e5e6e7e8e8e8e7e5e4e5e5e5e5e7e7e8ebefec +e9e9ecf2f4f2f2f6f9f8f6f8f8f8f3f6f3edf8f1efece2a79f8d886f7264 +5957544d4642374135342d362620162a2f1f281c2025141d140a00001449 +534b3c518382635fa7d8eceae6dac7cdcdd9d58f431c193c482b2f5fcbc4 +6a092d2e572760c31b8c812cdb0021242b1d13130f0a030003070d001837 +3333322d2e2e352a312f30303933281b0f07080c423f3c3a2b33303e3437 +3835333636343884daece72342264919192024244a787e9cd8a65b3b8ca2 +12463727254561843b274f4e36330c4d6f3a3fab63272941a9405d163e47 +4e3f31002ba932052a6ac3000e82f8fc80864f7402232d2f2b182f478a09 +ceecef05306f3a7a483c290045645d574b307a2237a1656b755f5640314b +6f3e445a5151312557889592e0e3720e9b9d4a922c3900952a34201d2136 +2a1442ba400003788b911b60731b2116210c200a6e9b47e8f7650b34524d +3a7e172823261f1d22191a1f1d71ec6b0094f3f07435e5e1df6a585e5756 +5f5b5972778a8f8f7765525658586265676a6657433335516b2e5c505916 +3039295026240c1b3f400e120f1b1d1c2c00d0f33500230b35464a330f0d +0984e1bcf1eb8bab9f9f98b2c2c2bbd1b1cfbec3c9c8c4c5b6c7c6a9ccc6 +c9b6ccb6d6bbced6d0cdc3d1d5deccbed4dddde3ece0e6dcc2c0dcdad9ea +e4e4dddee3e8e0d7d9e3e4e0dcdfe6e9e4ddddebeee5dee1ecefeddaedef +f1ffd2f0faf2fcecdef7f9e6c99339474d67605c584c47494a474a504547 +49b6d06f7aaee6d24d5e7c9bc4d2c4c7d9e4fbff94c6ffefa5a78fb9655a +51585d615e5c5f5f56564e4749676058534e504d5d595b595c615f5c5d54 +4d4f6990c6f3fffffffaf9f7f4f3f3f4f5f6f6f6f7f8f8f9f9fafbfbfbfc +fdfdfefdfafafbfafcfbfdfcfdfcfefdfdfcfcfdfffffffffffffffffffb +fbfffffffefefafcfef7f6fffffcf8ffffffffffffffe18f451f3f3c3b2c +322d2b31373c3d3d353935424547332f3d3a42474c4949474f605771c9ed +ddd4c3def0f3cc8387d7ffffffffedd2e8fbfffffffffffbb96376605351 +a5d2ff3049537152899377cfad5eff2848494e434743413d2a23436d6a36 +3e5d5e55565b635b615a5d5c63634a3c302f31322e2c88322d6762555565 +64656463666a68648ea1ffffff6d914eb54985827486dbc3e0ffffcfddbe +ffff212144decc5a8064391d170e1e2111767965f6ffee363c88b06a861b +27211424361b5efd7d2c6e85c92237fffaffd69282a727221d24292e5677 +d77fb6ffff1e6f7c378a4a49602f5d92918e8f87cd6bb5e2e1fffcf9efd8 +c6a4a083769092815f5484b2d1b6eeffc564db708fce644b1ca67a8a959c +9599815b7cb16c2b3c6489ba68819e595b6c5559483f84c892c0ff66778a +548a82bc8285939f96837c6e67645177ff9b43a17471606cfffffff1caff +f8f1f5f8f3f7fff8f7fffffff7fffafefffcf2f6f6eae0c3b2d3ce69383d +45434e32749f46724c586a6143373435343c3b2195ffc582746c56465d7e +7d78636afff0f6ffc1bcd2e0e4f5f7f4e6f0ede9ebf0f7f3faf2fdf1f0f0 +ebf2fffffcf6f4fafbdef4f1eae3dfdfe1dcf6fffcfafff9fffcafadc9c7 +c6d7d3d3cccdd2d7d1c8cad4d7d3cfd2d9dcd7d0d1dfe2d9d2d5e0e2e0cd +e0e2e7f8c8e6f0e8f1e1d3eceee0cb94323530443c393932313637323136 +29282a96ad4a5387beac293c5b7da7bec1c7cbc7cac4436ca7914f5b4f83 +39342b333b414141484a4141372d2d473e3838383a3749454745484d4946 +423a3130466ea6d5ecefebe9e9e9e9e8e9ebebeceff1f0f1f1f2f2f3f4f4 +f3f4f5f5f6f7f8f9f9f9fafafbfbfbfbfcfcfbfbfaf8f7f6f6f6f6f7f7f8 +faf4f3fbfefaf8fcfbfffffaf7fffffcf5fdfffefdfdfdf7d17e36133837 +36292f2824272b2d2c2c262d2936393c2b27302a2f313431332b282b141e +64785a4b3b608298875264bffbfcfcfde0c5dbeefdf9fafdfce9a74e5b42 +37378cbcf41e374161437b8468c2a354f9173d3f422e2116151a13123159 +56232847473e3c414a42474046454c4c35291f1e2122211f78211a504738 +3646474848474a4e4c487386eff7f8517528780024212641927997e4ed76 +4328b8e7060a2ecbb7456e5638272c283532136e664cdef3d31a206e9b5a +7f1d33373441411a58f26f195466a3001ffdf0f5b66c609a3e4f59594231 +435cc36fabfefb034958247d373651245583766e6c63a332627b707f5b48 +37395a627e6b5164685b4039709db39adefaa643c65b6eaa4631087a1b0f +171911262c215996480a2b5675a2495b6a180c1908181b1f6eb279a7ec50 +566a3d76688c2b100f191b1213111b271c4ff9851c795859414df7eae6a1 +2a3d3c39393c3b4047372934291d111915191916141f241e1e1e3884a44f +181d262735206c93223d0f214c4b251b2123202522087cf1aa67574e3626 +3b5a57574a58fce2e8f4afa7b6c0c3d4dadbd3ddd8d2d4d9e3dfe5dde8dc +ddddd8dff6f4ebe5e3e9eacde5e2dcd5d1d1d6d1ebfcf4f3fdf2faf58482 +9e9c9cada8a8a1a2a7aca89fa1ababa7a3a6afb2ada6a9b7bcb3acafbabf +beabbec0c4d5a5c3cdc5d1c1b3cccec8c6962c2b2030262527232328281f +1b1f1414157d912d34669b880519385b879d9ea3a8a5aaa626518e773641 +3469201f1e2b3136333036372c2c251c1f3c342d27232520312d2f2d3035 +322f2d231c1b30558dbbd3d5d0cdcfcecdccceced0d1d3d4d4d5d7d8d8d9 +dadadcdddededfdfe3e4e4e4e5e5e6e6e6e6e7e7e6e6e5e4e4e4e4e4e5e6 +e8e8eae4e6edf2eeecf0f5fbfaf3f1faf8f4eef6f6f6f6f6f6edc26c2300 +1e1a180a0e0a070c131618180f151120232818141f1a21242825261f191b +040e526648382549677b683244a3eaededeccfb4c8dbe8e4e3e6e3d18f33 +40281f2076a7e10a21294724585d3f987f31db0021262c1d181112140b08 +274e4b151a39372e2b30362e362f34333c3c24180f0e1112100e6811093e +3426223235363332353937335e71dee6ea43691d75002d28263a896c86cd +d4664b31abd1000020baa4305a4b3631413f473a10635838c6dbc20c145d +80406d18414f4d4f3b0536d462124352960005e8effcbb6b56872230373b +2c1c3247ab5695ecf100404a136a26253e0e3e6c6159564b8d1e5472687b +6152433e504c624f3e575c4e2e2457829b82c4e19434b3465b942c160071 +2f2b252726372f1339783c01173c5c8a34485d140f21101c1614599a5b93 +ed534d531b55518233201d2420161a191f261645e877157754553f4aeedd +daa0425f5f5b5a5f616e86888d9c8c765959565c64615f63614f402e3573 +8c380b121412210a557d16370e1e423e1b101317171f1d0375eaa35e4f44 +2b1b2f4c4a463644ecd5dfeba396a1a7a4b3babcb5bfb9b2b4b9c2bec6be +c9bdbdbdbac1d8d6cdc7c5cbccafc6c3bfb8b4b4b8b3cddfdde0eadfe7e2 +cdcadfddd8e2dfe6dfdbe0eae5d9d6dee5e3dedce0e8e9e4d6e9e9f0e5d7 +ebf1f2ead5fbf1fcf1dafef2f6fcd8eaf9eac6bd7b544f515042424c5d66 +563e3b494f454180d9b05664a9fdff7e4674a0dadcd9ccd3d3f3b9faffff +f8bfa896878c7772635f524c615857585d64585540465155575a64574e4c +504e4543597da6c8f0f3f5f6f4f2f4f3f1f2f4f6f8f9fbf9f9f7f8f9f9fa +fafafbfcfbfcfcfdfdfdfdfbfdfcfffdfffefffdfffdfefbfcfbfefeffff +fffefefefffffffffefbfefffffbfbfffffffffeffffffffffe8974d3a3d +4a4555444647474a4a4a4d50514f43504a404252483d453d475850546064 +779ec6e6ffd8cbe6faefc18075bcfffffffdfdc3aee9fffffffffdf4e7f3 +fed19d6e364156abac2f3629385d9a6453c7a664ff284949524446443f39 +211a40706c353a595b575c6462555e5c595964583d31282b31342f2b2a2e +283559806f6367656364686a655e83bff1ffff884cd1895d6f657c88b0d8 +fdfffabfbcadd3ae1c2380e2b5638c6934231a131e1405677270d3ffff45 +39a58074a22323200e1d43191679440e5a9fbc6771ffffffb97c7e9e3928 +2d3a2d324968cb76bbf2ff495662399a5f3239164d928e898580cb7addf4 +fefdfffdcfdba49ea4a67c8c93857a607c9dca656583ab7a775a89c98d79 +188d908a9692878c7e5a75b9aa466c564e545f7da3626b5e5e53485153a9 +87524057647562997295a280969c998a81725f695867ffcb2d4f42645742 +ffffddffb2f2ecf2f1f6f6f3fffdfbfffbfffbf6fffbf9faf6f7f6ebddd6 +ab99856d2e65a9524930b0d263825a50655d51363c39433e3c4459ffef9c +8a8a937688b786968c2bfffee7ffe1bfdce5e2e3dbe4dfe3ece3f8fde7f0 +f6e9fcf3e1d6effcfdf8f9fdebfef1cee2dbdbf3f4fffadbfbfff9f5fff9 +ffffbab7cccac7d1ced5cecaced8d6cac7cfd8d6d1cfd3dbdbd6cadddde4 +d9cbdee4e8e0cbf1e7f2e7d0f4e8ecf2cddfeee3c6bc7244383530232532 +48514129253134292562b78d324082d9f05c255583c1cbccbec4c0da9ad3 +e0d2b977573e2b36333c353c3535493e373335403a3d2f322d2b3136453a +3330312e2220365a86aadbe0e4e5e5e5e7e8e6e7e9ebedeeedeeeff0f1f2 +f2f3f3f3f3f4f5f6f6f7f7f7f8f9f8fafafbfbfcfafbfafbf9f9f7f6f7f7 +f8f8f8f9f8f8fffdfbfcfaf7fafffffbf8fcfffffcfafefafafcfbde8d3f +262734324232343536363636373a3b3b36463b3033473f34372d35423028 +2116173050687e534a6e92987e4d50a0effdfcf6e8a891cff9ffffffedde +cddbecc18c591a223a959d242c1d2748865247c09e5af7173e3f432d1e14 +13140a092f5e582224434440424a493c444242424d41271e171a2124221e +1a1d151e406350444a4847484c4e494268a4d6f1f86c30ab4e0f0e0a3d4c +577ebbec95483b3f9188000c6bcd9f4e7a5b332d2f2d38250960605abdf5 +f42b1d8b6b649b252f362e3a54211a7c4b0c477e923d53f3faf690506098 +565b6a714937384db262aae1ea2c3845197e4c2734144581786d655b9d39 +7b7f8571544725514e6c828c5d696f645b456888ac4955718c59624568a6 +6f6002613514180f0619281e509c862559473c3e435872211c0b1112182f +3a916c372c4146564e8658654d1013161e1716131029233ff3b50627264b +3825f2fabbb319312a2f292e2f2f433d3233242115101d1611141820211c +192d2d43565111458a36301ea6c342521d194747331829272f27242c41f9 +d4826e6d7356679662757316f3f0d9fcd1aac0c5c1c2becbccd0d7cce1e6 +d3dce1d4e7deccc1dce9eae5e6eadaede0bdd3cccce4e6f1efd0f0faf1ed +f7f1f8f98f8ca19f9ca6a3aaa39fa6b0ada19ea6acaaa5a3a9b1b4afa2b5 +b7beb3a5bbc1c5bda8cec4cfc4add1c5c9cfadbfcec9bab7693526201b0e +132137402e140e191f140f4a9c71121e61b7ce39043663a2adaa9b9d96b1 +6ea8b7ac985e4230202920241d2017162d252221293430332729211f2426 +33281e1b1c190e0c22447192bec2c6c7c6c5c7c8c8c9cbcdd1d0d2d2d4d6 +d7d8d8d9d9d9dcdddddededfdfdfe4e4e4e5e6e6e7e7e6e6e6e6e5e4e3e2 +e4e4e6e6e6e6e8e8f1efeff0eeebeff4f6f1eff3f6f6f1eff4f0eff1f1d4 +83341b1a2723311e1e1d1c1d1d1d1f22232016231e161c332e252a202734 +211b180c0b23445a6f423556777c61303588d8eae9e4d79781bee8edecea +d4c6b6c3d6a8703c020d2580880e13030d2b652c1d947937d90022262e1d +1610100e020025524d141635343031393528333130303d31190f070a1215 +120e0a0d040c2c513c30383632333739342d538fc5e0ea5e24a04a0f150f +34415175a5d689443f3e857500005aba8a39664e31374444492f08565245 +a5dde31e127c504a89203d4d45484e0a005d3900366d862f3bdefaff964f +5582383a4952322126389c4a96d1e3242d350c703d152000306d61574c41 +852570787d705d542e513f55677148565f5349304f6d94313b597a4a4f30 +559053420058442c261d1a282b13337e7a1c483024262d45641b1f131916 +142526794f242d443c412d65415b541e2121231c1e1b15291d35e3a70025 +22473621e7ecafb12b4e4c514d52565f7f8a909882765d505e5b5b5f6366 +61503d402e36423c033a78211a068dac33481a143c39280d1a19241f1a22 +37edc975625f6447568552625d01e3e3cef1c299abaca2a19eacaeb2b8ac +c1c6b2bbc2b5c8bfada2bcc9ccc7c8ccbccfc29fb4adafc7c9d4d1b2d2dd +dad8e2dce3e4d3d1dfdfdadbd9e5e2dddee5e6e0d9d8e3e6e5dedee6eced +d8e1e7f4eddee8f2edfed5edffebffe2e6fdedfaebd8e9eff0d29c413246 +494a413f424c4b423c3e42454a459ade8d475679e4ff8f4d6c94d4f1e5e2 +d4d0dde4ddf0fffffffad6c6a68f827f6c60634f5857595951553f3e515a +5c5c5846434f496c97c1e2f1f6f9f4f0f1f1f2f2f5f7f6f7fbfcfefefefc +faf8f9fafafbfbfbfcfcfcfcfdfefefefdfefefefffffffffffefefefdfc +fbfbfdfcfcfcfdfdfdfdf9fefffcfdfffffff4fffffffefffffffffff79e +3f1d274b4550564753504f454b5154504c4f4f4d424b4c4a474341484846 +434b42628cb2f6fefbdcdefdfffdba876fa9fbfffcffecc380a1f3ffffff +faf5d2dafffffffffffff75454422b54313d252d565140cb9969ff264b4b +55473b444134252939453d2b465b55575b565e536060595b633e37343334 +312e2c2e412c303f3a57656a646464666969635e7ad14a18554a1e558753 +6b8f7795d1fbffffdae1b2abbb6c37457fd3d280806a35161a1d1c141351 +7e8295f3b87e73786d7aa4291f22201349092841121d5a95cd5091daade2 +797c6e723529263120284c6f9c504b315564516564a472282a1a3c848e95 +8a81e2c9fff2fef7fae3b5a5789b9aa47175726b614b6999ee51507f6e64 +508d9da79f573a8993879492919592696a9eff6a4c4b545b5b7bae705968 +6d4a455242afa186ffa8516957b0a589af7c9b9397958d756c5b7439fff7 +3838c7ffff54fcffd1ffb5e8e3f8f0edefecfae4e8fffffffffffff9fcff +fffafdfff8d6b6a27b682594ffd61e648e8363838542605f5b363d3b3731 +393723ffffae927f908d93ae7594a956eeffddffe3b2d0d7dbe4dadfd2c8 +deced4eec3dcd2dcbbccdcc8f4f1f9fffcf8f3f1ecffffffffffffffffff +fffffff9fffaf5f3c0beccccc9cac8d4d1ccccd3d7d1cac9d6d9d8d1d1d9 +dedfccd5dbe8e1d2dbe5e3f4cbe3f5e1fcd8dcf3e3f0e0cddee8ebcf9334 +1f31302f26262c36362e2828292a2f297abc6a243356c1f4702e4f76b9d8 +d1d3c8c5d2d6c8d1d8ccbda7786a5b4f464b3c3338232b2c2f353541322d +2f3035373425222c2446719bbecfd6dfe3e5e6e6e7e9eaecebecedeeefef +edecf0f1f2f3f3f4f4f4f4f4f6f6f7f8f8f8f8f9f9f9fafafbfbfaf9f9f9 +f8f7f6f6f8f9f9f9fafafafaf6fbfcf8f9fffffff0fffffdf6fbfefbfdfc +eb92310f193b323a3f303c39382f353d403c3b3e3f3e333c3c3a36322b2d +2a241e1c0310263970706d535980a59d6d4c4389e2f8ecf7e3b86b87d9f5 +fdfef4eac0c4f0fafbfaf8f8df3b3e301c492a33151c434234c49461f415 +3d3f442d1013140f0e1828352b1830453e40413c453a464642444c292121 +2223211e1f21311b1d28203c484b4747484a4d4d47425fb62f00392e022f +4c07123e3d577399e7c058594a5e8342172b68bebc6a6b5c342030393526 +194a6c6b7fdd9e64575e576a9d2a29373f3567233e5d3a3a557aa72973c1 +98c74f5357745661676c40303d548137341a34463a4b3c7f61262f1f3779 +7e7b6653ac7e916e745e4a3724383371788a5b5f534a42305583cf353f6d +4f4439777e84813e255f3d16170f102039294280f049393c4247435b7e31 +0d162008142d2797866bf994354d429d8a5a5d101b0f1a201f141b193d11 +f7e01110aaf8e537e6f9afd0212c1e2f2926272b48332c4135281b202216 +161f2121272e2f28304546470876e3ba085282734354480840483b16272a +241b21200cfaea947664736e728e54758e41ddfccff8d39db6b9bac3bdc7 +bfb5cab7bdd7afc8bdc7a6b7c7b3e1dee6ece9e5e2e0dbf2f8fcf2faf7f9 +faf8f5faf7f1f9f2edeb9593a1a19e9f9da9a6a1a4abaea8a1a0aaadaca5 +a7afb7b8a4adb5c2bbacb8c2c0d1a8c0d2bed9b5b9d0c0cdc0adbecbd8c0 +82230e1e1c1a131217212116101115171a1361a14c041336a1d35111315a +9cbab0ac9e98a4a799a5b3aea5956c5b3e2c22261812180814191f272936 +29232322262724120f1811335e86a8b6bfc4c5c5c6c6c7c8cacccdced0d1 +d2d2d1d2d5d7d8d9d9dadadadddddededfe0e0e2e4e5e5e5e6e6e7e7e6e5 +e5e5e4e3e2e2e4e6e6e6e7e7e9e9e7ecf0ecedf3f4f4e4f3f3f1ebf0f1ee +f1f0dd8424020c2e242d31222c29261a2025282321242521141f22232222 +1e2220180e0c00021a2e65646143486c8c84512e2670cce6dde9d2a65a76 +c8e2eaebded4aaaddae4e6e1dedcc725291a073310180000221b0a986e3d +d6002227301e0a0f1109060e1e281f0a22372e30302b3126353530323c18 +13121213120f0f11220b0e180f293637353533353838322d4aa11e002b20 +00264807163d31486b90d5af585d47567634081c58aba753564f322a4551 +493219405e5967c58f574c4f3f508b25354c54415f0a1a371f2441699a18 +59ad95cc514f475c373e454c281b2a416c21220c2f3e2c3a327651111908 +236365624c3b9469866971615543293323595f7143483f39301d3d6bba1d +25553d352762696e65200a53482a251d22303d1f2864e44028252a2e2b46 +702a0f1c260c1024147f6958f8962a38257d7550631d281a22282a1d211a +3807e8d20a0ea6f4e333dbeba3cb2f453c4f48474c577c77819d907b6361 +655b5f6c6e6867655941373e3634006bd1a5003a6a5c344a4504333a300b +191a160e151200ecdd856853615a5f794161792ccbedc2ebc38a9f9f9ba2 +9da59f95a9979db78ea79ea88798a894c1bec8cecbc7c4c2bdd4d9ddd5dd +dadcdcdad7dee1dce4ddd8d6d4d4dbdddcd8d6e1e3e1dbdbe2e7e0d4dce5 +e9e3dee2eaf0e3dae6eff1ece3edf2f5f1cdfbfdebfed3eff5f4f9d8d9f3 +eae1bf88425244494f4c464547473f342b483f395eb0d492374d539fcbad +728293c3e4dbe8e2e2e1e8f2e7f8e7fde1e6cfa2969fa8ad9577755e5761 +5a544b5b554d3f3c45608ab6e3e7e5e5eaecf0f7f4f5f8f9f8f5f7f8fbfb +fcfdfffffffdfcfcfcfdfbfcfcfcfcfcfdfdfdfdfefeffffffffffffffff +fefefdfdfdfdfdfdfcfbfbfcfcfdfdfdfdfbfafcfffffaf5fffffeffffff +ffff82513528385554554b464d5865534c4e4a4e4e47413e3c3f42504639 +404953544c555a85bcedf1f4e6c9deffffe7a97c71a5f1ffffffedaa6c68 +c4fffdfffffedfa5c4fffffffffff7e8efb27f96642e313a3d8e774029ee +9371ff274c4d55463e484535292a241b1a1d4960585c5e54605b64635d64 +6a3030313436312e2e33343036352e5b706b5e6064686a68656477da6634 +29562d478a5f607c889adcffffdcd9cf7e77c7b5839b755d7272725f4a1d +1b171c1e1b437c88685463798051987a852a1f263d16340005000c676a6a +f31f7a6f40514d967f5c3b331f201724336096602640633d3b5798b4853a +45293a7b8c999996f0f7f7fffff1e9bdedffb9ae99a56a6f6a5644446593 +f351a2ffdc4f51e3a49aa19c9eb79a808f8e8c81925e51aade7617328983 +4366857a5b686457484d4eb2aba5ffff514c508caa7db375989394958c79 +6d656339e3ff4238c0ffff7589ffd7ffbfedf2fff1e7e9e5fffff5efedfb +fcf7fefdfffffaf6ffffffd0b6a57b642991b8ff49699467596eb4345869 +633831363740433420c5ff6d494246a2e3da97403b438bffdaffffd4e4e0 +dfeeeceedfd5ffdecdf3e6fbe8fff4e5fffefdedf4f8faf5fbeddefff0f5 +e0d2dec9c0eec6dbd9d7e7eeeaf2c1c1cacccbc7c5d0d1cfccccd3d8d1c5 +cfd8dcd6d1d5dce2d7cedae3e4dfd6e0e8ebe7c3f1f3e1f4c9e5ebeaefce +cfeae1dab7803745333739332d2d31332b1f1632261f4292b570152c327d +ac8e54636fa0c5c1d2cfd1d0d5ddcbd8c1d0b0b0945f4b4c515845313d34 +394b4541344440372620263d6590bdc1c1c3ccd3d8e2e3e8ebecebeaeaeb +eeeeedecececebecf0f2f1f2f3f4f4f4f6f6f7f7f8f8f9f9f8f8f8f9f9f9 +f9f9f7f7f6f6f6f6f6f8f9fafafbfbfcfbfbfbf9f8fafefef8f1fef8f2f9 +fdfbf6f67241251828454444383438435040393d3b4346413d3e3f392b35 +392d2d2b241b0d0f09244768605d4a3355a0aa8e5e3d3c77cbf3f4fbe19a +4f4bb5fdfcfff9e6c38ab1f0f6f9f7e8dfd4e1a8758a531c1f2c34886f37 +1adf8b69f2133c3e43290e15150e111a160b080a334a4145443a47424a49 +464d531b1a1e2224211e2026241f231e1440534e4143484c4e4c49485cbf +4b190d3a11214d181938465280a9c26642432e469b8f63805e47595c5d51 +492731323731233f6c7354404c616537826a7c292738593c6424373a61ae +815fd800625d2f3c27746e65606c625d3b3026457a4109203d1c28406c89 +753d543b427b827f6958aea27d7361433d2881e48083748d636850352429 +4f7dd4358efcbf303bcd867a8483868d4914120b0b0d361a278aba550221 +79712d47573f0f171512152731988d8af5f036313c789151640d1c0f161d +1c151b21290ec7f91b10a1f7f15973f0b6d52f332b3a332d2c33a6814f3d +302c160a1c1d24251d1c28344b1b283e3d3d0b759bf1335784553c447900 +374f41181c25242a2c1d09aef4542e272a86c4bc7821202d78f9cdf9f5bf +cac2bdcfcfd6cbc2edc7b6dccfe4d4f4dfd0ede9e8d8e1e5e7e2e8dacdf0 +e1e6d1c3d0bbb2e0bbd0cfccdce3dfe797979fa1a09c9aa5a9a7a3a3aaaf +a89ca5aeb2aca7abb5bbb1a8b4bdc1bcb3bdc5c8c4a0ced0bed1a6c2c8c7 +ccabacc9c4c0a06b25342123241d1715191b130a011d10082a789954000d +13618f7238475584a6a0ada7a6a5aab2a3b29daf928e6a34242a333b2a17 +241b1f33303026362d20100b1229527ba8acabaab2b5bcc5c5c8cbcccbca +cacbcececececececed0d6d9dbdcdcdddddddedee1e1e2e2e3e3e5e6e6e7 +e7e7e7e7e5e5e4e4e4e4e4e5e6e8e8e9e9eaececeeecebedf2f2ece5f1ea +e4ebedebe6e66332160918353434272027323f2f282b282d2f292222201f +1d2a291d1f211e140403001336574d4c3d25438990703f1e1d5db4dfe5ef +d58d3f39a2eae8eae2cead75a0e0e6e7e1cfc7bbc78f5c74410809121564 +4a0e00b66645d40022272f1b0a121309070d0b000000253c31353329332e +3938343b430a0c10141614111316150f140e032d413c2f31333739373433 +47aa3a08002c05184a16152f3843759fb6624b4c27389084546f4c324345 +48444731484d4c3f25365f603b273c555c286a506b24324c6e455806110d +388c654bc5004645283b246a5a483f493f3c211a1332652d00153a15192e +638266283d212a6367665241968d726f654c492e7ed76f706175464b3922 +15183a66bf1f76e4ad1e26b66e6166646a7d4f2320191d1a39110f71ae4c +000d6259153248370f1d1b17121e1f817377f4f12d20235d7b466716271c +2127281f21222505b9ec140e9ef4ef5568e2a7cf394848574d454a55cdb8 +9991847c5e4e5e636e716a666c6e793a363f322e006989dc1c3f6b3d2a36 +73002840350b0b13151c1e0d009ce3401b121570afa4630c0b1867e9bde9 +e5acb3a6a1b0adb4aaa1cca796bcafc4b3d3c0b1cecac9b9c1c5c9c4cabc +afd2c2c7b4a6b39e95c39db4b6b6c6cdc9d1d4d7d7dadfd9d6dce2e4ddd7 +deeae6d8d7e0e8e7e0dee5edefdde5e8f1f5e3e6ffe6fddee1fff0fdeed8 +f7ecf8f1d5dee9f5dfbb613b484e4d5659514b473d34313c3b454462b3e0 +c04c39436d9b9e879ca7c7d7d6e5ece6e8dadbd3e6e6e8dfe1d5e7e5dad9 +cfd2b28762564845363c4c6992c4dee9e3e9d8dddfe4edf2f3f6f3f5f8f6 +f5f5f6f7faf9f9fbfbfdfffffdfdfdfefcfdfdfdfdfdfdfdfefeffffffff +fffffffffffffcfcfcfdfdfefffefbf9f9fafbfbfcfefffefefffff8feff +fffffffff9b25c224a48595f57504e536252536d837158514a4b463f3831 +2c2c30312b293f4546436db1e2f1eee3d8e4dceae4cc896f7fb1ffffffff +db95686accffffffffe7bd7e77cdfffffffff0e0d8f7ffffffffbe8e814a +4473ec951de78d7bff274c4d5746474a4436241b1a1f281a3f5f5e5e5f5b +605c5e5d5b646b2e31303034353330302c38393b415655686465686a6964 +60607cc9c9e2fc4a48537e64628392c4eeffffdde0b35671ceff4b726b65 +6f70857e452021101e190e46928e4795776c6b68d97d6f301e1a360d2a37 +3a1823775a41ff2a29489cf365cf995a362c2124191c3757917756f4ff70 +336a907a7c38484a3b6d808da8b8eae8fff7ffffc5c3ffffffaba7bc7076 +7b5a3f32499bff99cbffff547fefa59ebc9aa6b2a27b9398998d8a74699e +f1431f38e3bb898a996a635e625e4e564191bc73ffff684379906986b675 +909a978f888265636340c2ff7026abffffb03afadfffbbe4fdfceae2e6db +ffffe4dee5fbfffffcfcfff6f2fcfeefedcdc7a57b7341567f715c619f54 +6361bf364a6f6b462e34323c33402f39ff5e1d252b72cbd1a319344149ff +f5f7ffd6ebe0d1dee1e4dce3f1ede9eaf6fffdfff0ebe7f1eafff0fef4f8 +fafff2fdfffff5fffffff1fffefefff7fffff9fdc1c4c6c9cec8c5cbd0d2 +cec8cfdbd7c9cad3dbdad3d1d7dfe3d1d9dce4e8d6d9f8dcf3d4d7fbe6f3 +e4ceede2eee7cbd1dce8d6b55c353f413a403f3733312b221f27252c2a46 +95c1a12d17244d7b80677884a6b8bccfd8d4d6cbc9c2d3d0d1c2b99fa495 +7f7a6f7864472f2d2321121e38587da9bec5bdc3b4bbc1cbd8dfe0e5e4e8 +eaebeaeaebecefeeeeeeedeef0f1f1f3f2f3f4f5f5f5f7f7f7f8f9f9fafa +f9f9f9f8f8f8f8f8f5f5f5f6f6f7f8f9fafafafbfcfcfdfcfffcfcfffbf4 +fafffaf7fcfce8a24b113937484e463f3d425242435d726048413d3f3f3a +332f2b271d1918121e190c001a506f70604e4354536d766e3e33518adef3 +f8eec17f5554adebfcfffcdfab6458b2fcfcfcfbd5c4bfe5fefffff9ad79 +6c3a3b6de78c0bd58572f1133c3d42261614120f0c0b0c0f160729494747 +454147434443444d54191e1d1e22252322221c2626262a3c3a4b47484c4e +4d48444461aeaec7e02e2c2d43232843446e95b58b4a44341751acf52b57 +514f56586f6e412a372e3a2f1843827933816054504ec36d672d252b5136 +688185749de28543f212183c90e047b28d655b656764402b2c3e725636d2 +f34d2055655470416067547a7b6d656598857c55504c2a4bd8eed77d82a6 +6f75663b22163282f97db7fcf53766d68980a1818e8c581519151a192a2b +3a7bcd230827d3ab75706f31190d1317162b20759c56f9f64d29657c505c +6f1116181815141a0e1b2914a5ef4b008ceff69424e0bbc43431352f2e2a +25267e6e402e2b301e1c191f1f18152023181d102f343244213c6255464f +8f4044378b01264f492619231f271c291822f745020a0f56afb584001828 +34fae8eaf7c4d3c2b2bfc4ccc8cfdad6d2d3dfe9e9f4dbd6d2dcd5edddeb +e1e5e7efe1ecf1f8e6f3fbf9e3fcf3f3f3edf7ffeef3979a9b9ea39d9aa0 +a8aaa59fa6b2aea0a0a9b1b0a9a7b0b8bdabb3b6c1c5b3b6d5b9d0b1b4d8 +c3d0c1abcabfcbc4a8afb9c6b99d49253030292b281e1b1a150e0b141016 +132e7ba5851100083462664e5e6887999baab3aeaea2a197a9a7a8968870 +7a70605e56604d2c1411090900061d3a608ea5ada6ac9ca2a7adb9bfc0c7 +c5c8cdcbcccacdccd1ced0ced0cfd3d4d7dadcdddddedededfdfe1e2e3e3 +e4e6e7e7e7e6e6e6e6e6e3e3e3e4e4e5e6e6e8e8e8e9eaeaededf3efeff3 +f0e9eff3ece8ededd8923b012927383e342d2b2e39292a465e4e38322d2f +2d271f1a16141719120c151001000a3f5d5b4c382b3a40595f521f112f69 +c0d7e3dbb27147469bd6e8eae6c8934d439de8ececeac2aea9cde6e5e8e3 +9b6659211c49c16300ad6051d50023262f191212110a0200010208001b3b +37373430332f3332323b4408100f1014181615150d1817151a2b27393536 +373938332f2f4c999db6d22020243f1f1d37385f85a78950513b0e42a2eb +1e46403a40405a6140344e48503d1a3c75681b6952484741ab5354282f3d +623c59605a416ab4672ddc00002284da3da475473a4243422514182a5e43 +27c8f1470f425e4b622c4649365c5e545253827071535858324ccde0c96e +708f50564b261208206ce4679fe4e32552c0716483627279572024232b26 +2e242665bf180015bc925d595f281813191d15240f5f8344f6f7461a4d63 +3c4e6d19212423202125161c250b97e3430089ecf49019d3adbc3a44514e +47424247a49f877f7e8169645e646863626a67544f36443a2c3a162f5040 +2f3776283229800018403d1908110e160c190610e33100000040999d6f00 +031421e8d7d9e4aebba695a0a2a8a5aebab6b2b3bfc9c8d3bcb7b3bdb6ce +bdcbc3c7c9d1c3ced2d9c9d6dedcc6dfd5d7dbd4e1e6d8dad7dbd4d7e1dd +d8d9dde1e0dbdde5e7e1d8dce4e9e5dfe1e9f1e7e3e6f0f7eee6f7f3f3fc +dfecfff0ffe0e5e6f3fde4d1ebede5cd9648403a4c47403f484e49423a2d +3939343758a8ffff543b433d72a69191a4d1cbdaf4e1e3e4e3dfd7d5d9d8 +e0d7dae6f9fbe0c5b7d4cf9f80a8c6d6e4e4dbdfdce2dadee4e9eaeef7f8 +f6f8fdfaf5f2f1f3f6f7f5f3f3f4f5f7f8fbfbfdfefefdfefefefdfefdfe +fefdfdfdfffffffefdfdfcfcfcfcfbfbfcfdfefdfbf9fafafdfefefff6fb +ffffffffffffffffb654273c5655534c464c4b4a4e473e42454d52493934 +32302f3131302e29202039413c3982e2ffffd9cbecffffe9bb956b618cdb +fffffff3c88a5b74c7fffffffff5c588647ef6ffffffffcea7b3ffffffff +ffffa4517e82858d87f66ce68682ff294f515b494545423a29253750512e +405d5a5555545d595659595a64303833313435333130372b3a3d2a58736a +6b68686b6a635d5b71a8f7ffff9b71607c455e89a3f5fcfffceecb89447b +afff20463587974c966f4c101b111d1b114b78817dffff4a366dd678833f +1f171f041c1e1c0800585925d35a0e9dffffc7888b5b311821281510285b +95cc70f9ff9b1e7e6b59903e2b342f587e95c5e8f9f3f7ffffe49cd5ffff +ff83a3b674797d5f3f354e9dfabacfffff8a7ff68395ae9199acc5779294 +8f838f704993df44282682a8c6c8ff885b706e5948563c7ade7fffff8054 +8c8c8693b67b8a9b969287836c68585b73ffad3fa0b4c56a4cf9f7c5d5dd +fcf3f3eff0e5e2e0e2fafef0e9fffff8f7f7faffffeef8e4d2b884634647 +4343493e2748b738b34f3d686e4f33373a3b34453914ffcd627d9085c7c8 +c16b83745fe8ffeeffe3e3e8e5f3f6f2e5f0d2f0fae7e4e9faf4dcfaecea +e2ffe7ffffffeff5e5e1f5fff0edf2fefafffff1fff4fbfff8ffc6cac3c6 +d0ccc6c7ced2d1ccced6d8d2cbcfd6dbd7d1d3dbe5dbd6d9e3eae1d9ece8 +e8f1d4e1fae6fad6dbdce6f0d7c3d9dedac795493c323b31262530383731 +291c27241e1f3e8cecee341d251f5488737489b8b4c6e1d1d5d6d5d2cac6 +cbc7cbbfb9bbbfb2865f4863613f306791aec6cabdbdb5b9b3bbc7d0d7df +e8e9e5e7eeeceae9eaedf1f4f2f3f2f4f4f7f7f8f4f2f3f3f5f6f6f6f7f8 +f8f9f9fbfbfbfbfafaf9f8f8f7f7f7f7f6f6f7f8f9fafafafbfbfbfcfcfd +f2f7fcfcfbfdfefcfceea543142b43424039333938373b372f35373f433a +29241f1d1c1c1c1816171c1619100700489dce91513d64848d886e56302c +5fb7edf9f9e0b4744155a7e9fcfaf7d7a56a4d6de9f9fdf8e7b18b9cf1fd +fdf0fbf395426f72767d77e75dd87e77ef143d3f4427120d0f1111152942 +3f1b2a47433e3b3a44403c3f42434d1b25211f222523212025192728133e +584f4e4b4c4f4e47413f568ddcf4f87f553b470a2a4a428da5ae5d423e25 +146494f803291a6e7d34805f4818332f39301c4a6a6c69f4fa321b53c067 +783a2324362d6375777b84e19633c7470496fefcad6e7f64545064653d22 +224579ab4fd7f4780767493d894a495d597377676c7a907e63533f321e82 +ecf6d4537fa16f746a4522193484dea0b9f2f46f66de6878947982868218 +1a11110f2a211870bb240e13739ab6afd952141f1d110e29185bbe62edf9 +673d77776d6c731f161b16151119131e1d2c51f7881a7e97a95136dfd381 +59323421322e1e1835392c3c3e22041b1f1b191b1d241f1223212f3a2e2c +243028272e281734960e852113434d341e2424251d2e1f00f9b24762756a +acaea54f665948d7f8e1fad1cbcdc6d4d9d8cfdcbbd9e3d0cdd2e3ddc8e6 +d7d5cdf5d2eef8efdce2d4d0e4eee1dee4f0ecf1fee6f6e8effbecf59b9f +989ba5a19e9fa5a9a8a3a5adb1aba1a5afb4b0aaaeb6bfb5b3b6c1c8bfb7 +ccc8c8d1b4c1d7c3d7b3b8b9c4ceb5a0b1b7baaf833b30252b1c0f0c1823 +231f1708130f07072774d4d41b030d073c7057566b9994a5c0adb0b1aea8 +9e9b9e999c8f8e919a926c493553502917496f8aa2a5999a969b949da9b1 +b6bec7c8c7c9d1cfcecacdcdd3d3d3d1d3d2d5d5d8d9dadcdddde0e1e1e1 +e1e2e4e5e5e6e6e6e8e7e7e6e5e5e4e4e4e4e3e3e4e5e6e7e8e8ebebeced +edeee6ebf0f0f1f3f4f2edde9533051b32312f28222827262a2012131a24 +2c271a1718171617171412131b171e1301003080b2773b274c676e675037 +120d4097cedadcc2995c2a4092d4e8e3ddbd8c523b5bd8e3e4e0d09f7d8c +dde6e6dbe8e0822d5a59595c55c034b15a57d4002529321b0f0c0e0d0708 +1c35310d1c39332e2a29302c2b2e30313d0a1713111418161413170b1817 +032d473e3c39373a39322c2a4178cbe3ea71493241041d3b398292a06250 +47270a5689ed0019095a661c6b5047234b4b514120455f5b51dcec281446 +a84d66342c34443153534b4448ab741aad290079eff1a05d6747342d4144 +220a0c3064983ecbef7200553f3179342d3b35505a505e6d7d6c59544a3e +1f7adbe5ca49718c52544c2c120b236ec989a2dbe15c50c64d5a73576371 +7a1c241f1f1a2e1c075cad1901045e809d99c848122524150d230a47a750 +e8f8602f6462595d6d221f2823231f25191f192245ec80147c93a54a2bd2 +c5785b4251444f4b4141606f779294755666676162656a6e66525b4d4a48 +2f251a2015121911001c8300761405333e230d1316170d1e0e00e69f324d +60559797903a544636c5e5cee5bbb3b2aab5b7b5aab999b7c1aeadb2c3bd +a7c5b8b6aed6b3cfdad1bec4b6b2c6d0c4c1c7d3cfd4e1cadcced7e1d4db +dadfd3d4e2e0dbd9dbdfe2e0dee0e5e9dcdae0eaeae1e0e7edf1e1e7f1f5 +fcebd5fff0f2f7d8eff7f4f9d4e8ededf5e3d7e7f2eaa86b2e4e47515b5e +544742463940333139393c3a7ddfec71374c434b7f91a5b2ccd3cfdddcdb +d6d7d2d0d2cac5d8d2dbf1ffffffcfb7b5d9f5fffafce0e2d6d7d4e4e9f5 +f2f5f3f3f7f4f5f9f7f5f3f6f9f9f7f4f1f2f3f4f5f6f6f7fcfefefffdfe +fefffefefdfefdfdfefefffffffefdfcfbfbfdfcfcfcfcfdfefcfbfbfcfd +fefffffffcffffffffffe6ad4f3931404d49494f464c45453f3b493d3f3d +3434312d2831322c2c3438373631241f2b4bb4ffffffbebad7e8e7c29d69 +515ebcfcffffffc99268517ed6fffffffbe4b37d6889d4fffffff5c38a76 +bfffffffffffd1d4f6e9ffffecab91914be88183ff295255614e46484438 +2729415c5734435b595a5e5c5f5a576060555f3534333435332f31343639 +373540676964686363696c6963606ec1ffffffa95c59c838788cbcfffff9 +f2e3be5a3e69a3ff252357d5ef69817695161a14131d15328a6c7bffff85 +427c9f68a15127261d0d16221100005c5251f7510dcaf0ffec6873715122 +2826141b2e539fca89d5ffa92c83464e8f44372e2c558ea9d9f7fcfffffa +e5cf89dcebeef77ca7ad8e998a765c4756a6e6bf7a78b38285a55b88bd97 +98a3d2618f9d92858a826083dd9a337352534a4a7e73586a656049525458 +9e6d686c52656849727dab80859290978d7e7a5e695a3cffc03356363a3b +3cffffb7ffe3fcf4fffdf9f2ffffffefedfffffbfff9fffffffafffffff3 +cec39060453b4258503f4485fa67aa6f39616a503535433a39353c278f5e +657c7281f2d3d168737d7382d0dafff4d3e6e3e9e9e8e2f6e7f0ecf8e0e0 +fafffff2f0fdf2ffded8ede0dfe5e0dbd6d3d5b4fff6f4fff0fcfff4f8ff +faffc9cec2c3d1cfc9c7ccd0d3d1cfd1d6dacfcdd2dcdcd3d2d9e1e5d4da +e4e8efdecaffe5e7eccde5edeaefcadee0e0e8d3c2d4e5e6a96d2e47393c +42443b3131362931221f2423232061c3cd52182d242f657a909fbcc4c2d0 +d2cecac9c3bfc1b9b8cbc0c2cecec8ab6647406992b0afbdacb6acb0aec2 +ccdcdce3e5e6eaeae8ebe7e7e8ebf0f2f2f0f0f1f2f5f6f7f7f6f4f3f3f4 +f5f6f6f7f8f8f8f9fbfbfcfcfbfbfaf9f8f7f6f6f8f7f7f7f7f8f9f9fafa +fafbfbfcfcfcf6fffef7fdfddca03f281e2f3a38363e333b32342c2a362c +302e262625201a201f17141818130f13160d02106ebedac2514359707e69 +52312a449fe1f6f7efba845d436dbfedf5f7ead4985b4369befdf8fee1a9 +6b57a5fbfafeeff3bcc1e7ddf5fdd7947a7d3cdc7778ed1340434a2c1310 +110f0f19334e45212d454243444246413d46493e482021212223211f1f22 +2426212029504f494b46474d504d474453a6f6f9f28d40379c0440425191 +ab834232430c1a568cee08063cbcd54f68648f1e3233313422337c5767fb +f56d27618654944a273031355a7b72768bf19963ec3a00c1e3fbd24f6576 +6e5365613f312c4183a968b3f58810692c3b8a525c6061737f6a6a727c7a +644630362ba9d0d7cc4d85947e8b7a61412a3b8bcba564629a696c8d406d +a37d7f7f97091a1a1511212d2b5eb978175d43473c345b3f121a13130b21 +2e377e5151593b4f553459586c2a16160d1614121d0f2c2a16f69b0e3517 +212426e7df779442372850492d285b85602d2c40210e201b28352a1c2333 +262b233a2f212124273d34263673d73d8548093349361e202d24221e220d +74434a615766d7bab84d54605970c4cffee4bdcac4cacccecce2d0d9d5e1 +c9c9e3eeeededbe8ddf3c9c3dacdccd2cfcac5c2c6a5fde8e6f3e2eefbe8 +ecfbeefb9ea39798a6a4a19fa3a7aaa8a6a8afb3a5a3abb5b5acadb4bbbf +b1b7c2c6cdbcaadfc5c7ccadc2cac7cca7bbbebec6af97aac3cd9962243d +2c2b2c2d251c2126191e100b0f0c0d094babb83d03180f174a5a717f9ba3 +a0adaeaba4a29a94968e8ea1989aa8acac9351332c5375908894848f8487 +879ca4b4b7bfc0c3c8c7c8cecdcccccfd3d5d5d3d2d3d4d6d7d8d8dadddd +dde0e0e1e1e2e2e2e4e5e6e6e7e7e8e8e7e6e5e4e3e3e5e4e4e4e4e5e6e6 +e8e8ebececedeeeeeaf3f3ecf4f4d39730180f1f2c28272e242b23241d1a +2718130f090c0f0f0d1619141217191512131309000c62aabfa332254057 +614b331009237fc3d9dbd49d673f264fa0d1d9dbd0bb7d402952a9e8e4e8 +c992564396eae5e6dbe0abb0d4c7dee4bc755a5a15b65458d200282d3820 +0f0f100b050c264137131f3732333331322d2c35372c380f131314151512 +13161618130f193e3e38393432383b38322f3e91e5e8e47f342d93003335 +49869a794f4448080e4884e500002ba8be3852568f294a4f4b46282e7146 +4fe6e7632056703b81422f3c3c374b5d47404db9774bd01b00a4d3efc33b +4b584f334443241a172b6e9657a7ef8102581d2c77393b3a374d6258616b +6f70604737392398bdc7c5477980656e5946301c2a76b68e4d4b86555675 +254f825c60678907232a231a262a1d4ba96c0b4f2e2f221d4834101d1919 +0c1c2124673c4b5535444621454863291d211d28251f251227200bea9208 +30141c1c1bdad16d9551554b6b64505086bdad84859777606a64727f7767 +6a76625a454e361c151414281f101c5bc42d733700263a250e0f1f16140e +13006330374e4453c4a6a43a4250485caeb9e6cba5b2a8adacaba7bdaeb7 +b3bfa9a9c3cecdbdbcc9bed4aaa4bcafaeb4b1aca7a4a988e0cbc9d6c5d1 +e1ced2e1d4e1dadaddd2dedfe3d9d3dde4e1dcdde1e4e6d6dfe3ebefdde1 +eeeefad7eefff2fce1f0fdedfedce3f4ecfaedd7e0edeff6dcd7f2e3d7a8 +40373b4f4c6b633d483b42403c363132353b345398bd7e4a3c3f506b90ac +bfcfd7d7d7d7d5d5d5d7d9d6cdcfd6dfe5edf8fffffdf9bea1b8c2e6fdef +f0ece5eaf3edeff7faf9f8f4eff4fcfdf9f6f9fdfcf7f8faf9f6f8fdfefc +fdfefefefffffefffdfefffffffffefdf8fefefafbfffdf4fff8f7fdfff9 +fafffffefffffeffffffffffffea9b4622284341403f4140403e39383938 +3735343333342e2a262826252c2c2a303a39322c3a58cdfffffbb0add5da +cc9d69444d82cdfffff9c8985e4c5a9be8fffffff6cc9d665780cfffffff +ffc1855e85e9ffffffffcaa4bfffffffffe1ad7b8a8077dd8b86ff2a5051 +5951454d453825235254513c3c58585f5b5e5e5a5d615c5b5d5b2e323739 +39383a3a37362e4158626f6668636c6464726a5965d59a6adc9815419132 +80ade9fffff3eee0874d386ac9c3332356d5ff8a806983140d171a18172c +838f98ffff885f8a88a3754f262c271111291903005c5a46eb5648fadaff +e36281675431312e1a261d6082a073569a795f4e375da94e352629579bce +fcffffffffe6d1a39595917477949b90a3978b74604041aea9937c69766e +765f928abeab9da5c5658d9387848a875e77e3ee60615c595371978b7469 +6e625845565ba0834a6759655c68bdb1949c76948e958f7e7b5d656043ff +ff29416ddba23bffffaaffc2f9e5ffffe0e4fbfffff1e6f6fffff9f9fff7 +fbf5fffff8e9d1ccad684d3263e8f33b2e6fbb7d9ad63a556e552d3b3c3b +353942248fe5777a7e6dffffffb869536087ffdfffffd5d9e4e6c8e2f4eb +efdaedebffe7f8d4ebe1f3e7e1c9c1f2eaf1f4fdfff1fdfafcfdfdfff5fd +fbfeffffffffffffc9c9ccc1cccdd4cac4ced5d2cecfd3d6d8c8d1d5dde1 +cfd3e1e1edcae1f3e5efd6e7f4e4f5d3d9eae2f0e0cad3e0e2e7c7c4e5dd +d8ab41322e3c32504a26352932312b241f1d1f2219397ca1622e20253b5b +819fb6c9d3d3d1cdc7c1bdbbb9b8b9bfc3c8cbcfd2d3dbbeaf6a4251537d +a9acbac4cbdae7e3e2e8e8e6e9eaebeeecebe9e6ebf1f2edf1f3f2eff0f5 +f6f4f5f6f6f6f7f7f7f8f6f7fafbfcfbfbfaf5fbfbf7f8fdfaf1fcf5f4fa +fcf6f7fcfaf8f9f8f6fafdf8fafdfcdd8d38141a33312e2f2f302e2e2728 +2728252522221e1f1c19161a1a181d191214171106000c2b9febe2912f26 +5b727d603a1f2f6abcf8fde5b4864e3e4e92ddfdfdf9dcae7c483d6bbffb +fcfae9a5684069cffbfcf9f6b88da8f0fcfaf5cf9561716965cf7e79fa12 +3e3f4431141814110d1345443f2926424148414445414347454446461b1f +2426252626262423182c414b564b4b46504848564e3d4aba7f4fc07c0023 +6f02364f7d9a98653f3f23161e5ab2a616063bbcea7067577d1c25363831 +262c757a84faf96f436f6f8f6646253335304d7773797ded9f53d73430e6 +c3f8c2436b63685a6865453e1f4f678154397c5b3f332452a75e615d5e70 +797b7d6a75614b333b345c797a5d556d796f837c7d6746232492907b6350 +60585b457871a4918483921619100d101b2c2450becd424a4d4d475d7659 +2e19191318132e3a8067325245514953a48e5c4f0f1c0b1214101a0b242e +1be9e6061e4ec28e25f6e16ba32a3e29979334355f906c36292b1f14151b +261d211820201d1d1b363f1e251b49cdd420205d96547bb3041f4d3e1624 +26251d21280a73ca5c5f6453f9f9f79e47324675f4d5fef3bfbfc6c7abc8 +dcd5d7c2d5d3eed0e1bdd4cadfd3ccb4acddd5dce1eaf0deece9edeeeef5 +e7efedf0f5f7f5f5faf89e9ea196a4a5aba19ba5aeaba7a8acafb1a1aaae +b8bcaaaebebecba8bfd1c3cdb6c6d3c3d4b2b6c7bfcdbea8b0bdbfc09a99 +c3c5caa23b2c252e213d3614271b221e19100b080a0c0422678c4d190b0e +203a627f95a7b0aeada9a29c97949394989ea2a8aaadaeb1b79b8c482232 +355d84828c9398a6b5b2b6bfc4c5c8c7c8ced2d3d0cdd1d7d9d4d7d9d8d5 +d9dedfdde0e1e1e3e4e4e4e5e3e4e7e8e9e8e8e7e2e8e8e4e5eae7dee9e2 +e1e7e9e3e4e9eaeaecebe9edf1eceef1f3d4842f0b0f262220202321201f +1919191917161412090a0807060d0e0f16130e1115110500001888d3ca7b +1c1243555e411c0417529ed9dfca9b6e35243475bfdbdbd4b78a5d2c2656 +a8e2e0dccf8f58355dbee4e2e2e1a47b98dfe8e6deb77d46534741aa5c59 +df00262931240f14100a01043535311b183431383033312d323633323635 +0d1116181a1a1b1b16150a1b3139423839343b333341392835a56e3eb26e +001863002d4771908d634e4f250f114daa9e08002aa8d35951497d273d53 +54452d2a6a696ce5ed683f645976533d2a3d3e32415f4f4941b6803fbe18 +14ceb5edb33154484c3a49482a26093b546d422b72513222134092433d33 +3248606d7769705f4d363a2b4963684f4c666d606e615a473515147d7a63 +4d3a4b43462e5d52837065687f0f22201a19222b183facbe373c38352d45 +634e2c1c2019180c22276952284d3e483b42907b4f4713261b24261d230f +20250fdddd001a4bbd8518e8d262a4375d4aaba54e5484c0b58d83857a69 +646670696f6569665d5244514a1d190938bac20d06458342669f00153e2c +0616191a13151b0065b94b4e5342eae9e78f3b233561debce6daa7a6acab +8ba5b6aeb3a0b3b1ccaec19db4aabeb2ad958dbeb8bfc3ccd2c0cecbd0d1 +d1d8cad2d0d3dbdddbdbe0ded9dddbd7d7e0dfded7dae0e5e0dadde5e6e5 +d5e1eae6ebdef2e8f8eadafff7f5f1d4f6fcf1ffd7e6f6eff0e7d9e5f4ed +ecd3e0e6dcbf7a3f3c363e354c48343f3e3f413e39353638393d355b8582 +564b43547193b7d2dcdad9d8d6d4d6d6d9d9d8dae2e6e8e9eaeeedeeffff +ffffe8cdc4c1dbeffffffffffefffbf2f2f3f2f7f4f9fefffffef9f8fafe +fffffffffffffdfcfdfdfefefefefffffefcfcfdfefdfffdfcfffaf3fbff +faf9f9fbfdfefeffffffffffffffffffc67a2c172b3e44433d3838343633 +33312f2f2e2e2c2b2a292a2328292a1f2329222d29353525447efaffffd1 +8a90bed7b4895b314099e3fbedb17d644b5b99dafffffff2c99c6e4f6ba9 +eeffffffd9a97d5d78dffffffff5ba737ad2ffffffffff8c5383d5ffffef +a388ff4743535c4e43415247251b362a291d466e51525a555a575a5d5a5d +605c62422b2d343232373435415d65575a6367626462755f6e6772aa851b +22423135ff738fcffeffffe7e2b15d352659a9bb4c7f6c788173be65600e +1716161b1a287578695c6d6f875e5b737c782e4a391b16351e0c0058663b +ff45576b555f4a66898e7e36343434191e4e6c634c3d44343f3c6772976b +373e365cbfe7fffffffceecaffa3244d4784c784b692c2ac917d6643379b +b1995195ff81426cb9a7d0ba949dc2758f988a8392994f7ca3f6732f336f +54357d987f5a6d645c485558ab9690ffa7375c5c90c883b2708795988586 +7e666a6340e3ff3a2dccffff5595ffb2f8d4e0ffc7cecaddd5d2ede7f5ff +fcfffffffffffffffffffff5ded4b97a653369caff8c4473936d77c03b5c +746734342e374037352f6cff68243014c8ffffc7284a3556fffde0ffc9d1 +d9d5b2c2bec3bcf8d3d3e2aee1cfebc9f2d9f1e4e0edf3f9f7fff6f0f2fc +f3fff8fff6f5ffeefffed7c6e3e4c8cccac6c5ced0cfc8cbd1d6d2cccfd7 +d8d7c7d3dcd8ddd0e5dbebddcdf4eaebe8cbedf3e8fccddcece5e3daccd8 +e7ded7c0d3e0dac17a3a2f24271b3231212d2d2f302d2723212220221a40 +686539302b406084aac7d3d2cfcbc6c2bebcbbbcc1c7cdd1d4d5d6d8d6ce +e3dbd4c6876a687094b5dde5efe9e9efe9e2e5ebeef1e6e8ecf0f1efedec +eef2f5f6f5f4f3f2f5f6f5f6f6f7f7f7fbfaf9f7f7f8f9fafffaf9fcf7f0 +f8fff7f6f6f8fafbfbfafbf6fafdfdfdfcf7b8691b061a2d31322d2a2826 +262523211e1f1d1d1b1a1919160f16191c11151b10170e150f001444afde +df862f23415e503d2c142c89d2e9d99e6a533b4b8bccf8f9f7e3b98a5a35 +4887d6f3fefdc692623e5bc3f9fafbdfa86268bdf6f6f6faeb733b6bbcf8 +f9dc9479fb2f31434931160e22200d0b261a170a30583a3b403b413e4043 +434649454c2f181a201e1e241e1f2b484e41414a4a4548465943524b578f +6a0006261519ee42325e909a74483d291210134b929e2e62515f6557a353 +5a162d353434282a6763554755546a42405e6b6c2a4d44384b7e78807ee5 +af4cfc203d55393f26456e828b5765665f32214253442f2129191f1f546a +957a64725d5d857f7c755e4c3524925a023f366ea962906a998c83735026 +177f9883367aeb6b2750a190b8a0797e962d1d15100e1d3710527ed55315 +226548235e683c0a181318112b358b7a76f99323484677a5536c10121415 +0b161811262e14bdec1707aaf9f23d79f67891462d4e38442630332e3c2b +37361b1c1f222b262d272b2a272420333f263a1a52b0f16f36616e475fa1 +012053501a1d1820271f1a1550ed4c081600b1fafaad06261a41fdf3d4fe +b5b7bbb595a8a6ada4e0bbbbcb97cab8d4b2dec5dccfcbd8dee4e4efe3dd +e1ebe4f4e9f0e8e7f3e0f3f2cbbad7d89da19f9b9da6a7a69fa2aaafaba5 +a8b0b1b0a0acb7b3b8abc2b8c9bbabd2c8c8c7aaccd2c7dbaab9c9c2c1b8 +a9b5c4b7ac95b1c6cbb672342618170a2121131f1d1f1e1b130f0e0d0c0d +072b5653271b132544678aa7b2aeaca8a29e9a97979aa2a9b0b2b3b2b1b1 +ada5b9b3b0a4674a43456887acb5bfbabec5c3bec2c7cbd1cbced4d7d8d8 +d5d4d8dcdfe0e2e1e0dfe0e0e2e3e3e4e4e4e8e7e6e4e4e5e6e7ede7e6e9 +e4dde5ede4e3e3e5e7e8e8eaebeaeef1f1f1f1ecad5f110012232a28201d +1b19191816141412131311100f0c0b040a0c11060a10060c030a06000a38 +9cc7c367140c2f4b38230e001170bed5be804c37213271b2dededac49766 +35122a6cbedae6e2a87347294bb5e9e8e3c7924e54aae5e6e4e8d65d2351 +9ed8d9bb755ce3171b2c3823100a1e190100170b0900224a2a2b2f2a2d2a +2f32313439353e210a0c1513131611111d373c2c2d3638333331442e3d36 +427a59000018090bdd342d5a838f704d4b350f07053e8a962352404b4f41 +8e455a214552504831275c503d32494d66372b4357602b544a36416a5551 +44b09139e105243e2d341834596a713a484b441c0c2c3f301f131e0e120f +43557e5d3b44313b717679745e4e3a24884700252461a159875e87736050 +3b18086a826b2165d656123a8570967f5b617d2127271b16253807426bc2 +46080e4c2e0b4a5a360b1f1a190c1f22746569f18c1c3d3863913f60111b +26271a242316232609b2e21104a8f3e8316be76d92544b6e4c543e4e5861 +848091927975716f77747b737771695d4e544e262a04409fe25d1c495b34 +478c0018443e0b0f0d1820150f0844df3e000700a3ededa0001a092ee6da +bae49da0a39c7785808680be9999a975aa98b492bda4bdb0acb9c1c7c6d1 +c5bfc3cdc7d7ccd3cbcad6c3d9d8b1a0bdbed6dfd8dbcfdcdce2dcd6dae6 +e5dad9e4e8ebd8dbe3e8f2e4e2f9ecfae0e4fff4fee8dafaf1ffe7ddf0eb +f5f3dedcebeef5decedfe6e0b9622b2e3b3d343f3f2f363b40413f393736 +383d2e384c5b4e4e484f5f7ba2c7dadddcdad5d2cfcbcbcdd4dde4eaebed +f0f1f0e9ececfbfff6f3ffffd3d3c9fbfffffffffff8fafcf9f8fcfaf9fa +fbfafcfffffffffffffffffffefcfdfdfefdfefefbfdfffffffffffff7ff +fffaffffffecf9fdfefcfeffffffffffffffdc9a572831373f443c303139 +322f2e2b2b292827282827262525252523282f21262229232a372e2a3c93 +fffffff69f9dad9e906c5d3b5599c9d0a579584a6095d8fffffff9cf9a6e +4c4575bbfffffff1c197705f78dbfffffff2c5836197ebffffffffeb8c6c +bfffffffeaa4749cf7cd5259483444553c2c2c1c2b1e1d27445656625c57 +59585a5b5960635c66534443413c3f4849526467635e5b625f59715d636d +576764aaa555614a393d8c4ba2f3f7fffcead6a0775b3365bdff70ab7e7f +67778a5b5b162018121414267f827872757c8667a6af7768294c3f581835 +1c0f004f722fd86d226e7ac9b969c4818c284632301b1d506aa5257dffb4 +314f8992966b333d4e85e5f7fcfffff7e2a8ffd0233d91ffffd5d5b2e394 +aa8c694c4696aaad69ffffff3b79d699bbc095a2c2938fa2928a948e706e +aeed821941dfbf5362a0985f6e665d475250b2a987ffff4e4e84828d9bbb +698d95988f8c806f666645aeff541f79ffffac67f2c1dbc8f1e3cfd9ecf9 +f7ffeaf0fffbfffffffefdfbfffffffffffdedd3c09da14f3f7bff9a35b6 +966f5bef58525d693d3140333838333539ffb72931256effffff30433733 +fcf2ebffdacacfd9daf5d9d8d6d4dfd5cfffe4f5fbd8f7e1fffafff5fff6 +f2f4faf8eff1f7ebebffffeaf0f1ffffffffffffc4cdc9ccc0cdcdd3cdc7 +ccd8d7cccbd6daddcacdd5dae4d6d5ecdfedd3d7f8e9f5e2d1f1e8f6dcd2 +e6e1e8e6d0cedddee2cdc1d8e1dcb55b211d28271d28291c252a2f302c27 +221f2124141f314033332c33435f86adc0c6c7c7c5c4c3c2c2c1c1c6cdd3 +d7dadee1e2dadad9e2e9d5c3bbac79756aa2badfddeaf0f0f5f6f1edeeeb +e9ecedeef0f4f0f0eff0eeeef1f7f6f7f6f8f7f8f9f9f4f6f9fcfefefdfd +f1fafaf4fbfffce6f3f7f8f6f8fdfefbfcf9fcf6cc8a471821252d322a1e +1d272423201f1d1d1a191a1a191817171716181d24161914170d101a0b01 +0e61d0dfc97d272e4d4e503931173a81b3b684532c213e7cc5f6fef4e7b9 +8054343065a8f3f8fad8a87c544462c7f6f9f3daa6634680dafbfdfcf2cb +6b50a9f6f7fbcf8a6188dfb5424a371a1c260f07160c1b0c0a142e403f4b +423d403f404142494c45503d2e2d2b262932313b4d5049454249423c5541 +47513b4b498f8a3a452e1d217113306e8783563e463945452355a5f4528f +64654b5b6f48531e3635302d2228716c625c5a6169498a97635a214b4471 +4c7e778378d8c34cc74a0a595eab9949a56f904071625837224551860863 +fa9e112f728692795a6359638c7a6e6b5142351ad5a40f3384fbf8b0a683 +bd799a7d502f267a91974de5fbec1e5dbe84a2a67a839d51201f1a151b27 +2d438acd610030d3b5434672550f17141710282f938d6befef39376c696d +717e0e1b141315191816222f1586f5310056f7fb944ad18b8246422e3741 +37353643262a402f26221d1d24242e2c2c29242c2728383f70352561e97d +23a2734a45d0191339522319291c1f1f181a1df89b0d170d58f7f0ea0b1d +1a1eede8e1fec6b1b0b9bbd8c0c1bebcc7bdb7f5cddee4c1e0caeae3f5e0 +f3e1dddfe7e5dee0e6dadcf0f0dbe2e3f4fbfaf9fdf99ca5a0a397a4a4aa +a6a0a5b1b0a5a4afb5b8a5a8b0b5c1b3b3cabdcbb3b7d8c9d6c2b2d2c7d5 +bcb2c3bec5c3adabbabab8a29ebcced0aa5117131a190d181b0d13181d1e +1b130f0d0f10030b202f2220171e2d496e92a5a7a8a6a19f9d99999ba0a6 +adb3b6b9babdbdb3b2afb9c1ac9b918354534a849bbcb9c4c9c9cfd2cdcd +d1cecfd1d2d4d6dcdbdbdddedfdfe3e7e3e3e3e4e5e5e6e6e2e4e9eceeee +edede1eaeae4ebefecd6e3e7e8e6e8edeeebeeecefe9bf7d3a0b14192126 +2012141b1917151312110f0e110f100f0e0e0e0f141b201011090b000008 +0000004ab8c9b46a161b3735351c16001f679b9f71401305225ea7d9e3da +cfa2693d1a13448ad9dfdcb98a613e314dafdcdcd8c29454356ec6e6e8e8 +e1bc5a3b91dadcdeb46f436dc79d2b33250b14200a0009000c0000062032 +2f3b312c2c2b2f3030373c35422f201f1e191c25252d3f4038312e33302a +402c323c2636347a7929372011135e06306f7b795a4a503d3e3816489be9 +4781555436455a3951294e534c412b2564574a454f5a653f747d4b4d1f50 +476d406a56563ea2a336ab2e004652a08c3a9159792656483e200c313d72 +0054ec910422607077582e3431477e746c6a53473916c189001a71edefa8 +a079aa5e785c3c2117657b7f38d0e6d70c48a46583855c6680412931241d +242a273374b852001cbb9a2a30634f101f1a190b1c1c7e775de5e9343160 +5554586b0b2326262426231c1f280b7ceb2b0054f1f1883cc07f7e526151 +5058565b637f72819c8e847c736d72717b77777268665a4c4c405f1e1452 +da6b0b8a5f372dbb100c2b40140d21161a180f0f11ec8f010a014bece5e0 +03140c0bd6cdc6e4ae9b9ba29fb898989a9aa59b95d3abbcc4a1c0aacac3 +d4c1d6c4c0c2c9c7c0c2cabebfd3d3bec5c6dae1e0dfe3dfd3dcdbdcd2d7 +dae3e0d7d7e2e7dfdbdee8e5e9d8dcf2eef0d5fbf2f6f9d5f8fdf9ffd7e3 +fce7f8e8dcecf4f3eed9d8f3f1f1cfd2e8f1db9b606f23293d3d38423637 +3b3e3f3c3a37333a3d3d2e3a414449515d7290b1c8d0d1d0cfcfcdcac9cd +d1d8dcdee3e9eff3f2f5efe5dcdce6f6ffffd3d2ccffd6bbffffffffffff +fffffffffdfbfdfffcf9fffffffffffdfffffefefefeffffffffffffffff +fffffffdfffffffffffdffffffffffffffffffffc6823b1d202f37343633 +333537342d262c2a29282828282728272625272728251d25292128313935 +3d3f59bdffffffce97bab1a88965532d3c6a90866646446cb5f8ffffffe1 +a67d5446467cceffffffedc391665169b0f8ffffffd4a1685998e9ffffff +f2bd9a8fa3ffffffffd4945b74b3ffffffffec5b26424a34352b2a2f242c +44505d635661585b5d59545c61595b656d67605e626661616f6360696267 +666060595455686e79b4ffffff9f6e4e6668d6fffff7f5d8a06155411550 +a5ff5b47626a6c5397786614161315191e3c778051baeb6a574698bf7665 +3251291c22281709004a792be2bb115fffffff4fa5656d1f2f2b2b27164d +908f3ac9ffff1b56887c9a9044527dc5f7fcf9f2efe1c0bbffcf1626cbff +ffdec395d797968e6b574173a2edb0e0ffff5c9cda82afdd949eb69f7e99 +8f888a8a6e5fa3cb3d1936b7eec05ca5c75a70685b48514aaaab75ffff64 +31818e5c94be728b9197978c81715e675385ff7a279ce3ff813be5b3c0cd +d2ecd8e4eefbfef8feffe6f3fcf5f3f0ecebf4f5f9f8edebe3cfc3aacb84 +4e61405855573f7d36ff745366754d362c2e373d323128ffec2c4d624bff +ffff8858845dafffdcfff5d4e8e5e5f4e3e7e5ccededd1ffedf6f9f7f5f0 +f7e5fce3ffeffff0ffebf7fffff5fff0f0f6e0dbf0dccfcbcbd5c1cacccd +c3c8cbd4d1c8c9d4d9d1cdd0dad7dbcacee4e0e2c8eee5e9ecc8ebf2f0ff +cedaf3deedddd2e2e7e6e0cbcae5e2e2c2c7e0e9d291546113162826212d +2326282b2c2925221c232323131f262729303c517093aab5babcbfc1c4c5 +c5c5c1c4c9ced3dbe2e9eaefe9e1d8d9e4e5d3c88077689a7261c2cdd7e5 +f0ede4e6f0f0edeceef1f1eefbf6f4f3f2f0f2f7f7f9f9f9fafafafaf8f9 +fafcfbfaf8f6f9fafcfcf8f6fbfffafcfefdfcfbfaf8b870290b0e1d2522 +24211f21232019141e1e1d1c1c1c1b1a1a19181716161718151c1e121115 +150a0d081c7fcbebdd7d2e453d413b2f351e2e5a7c6e4c2b254788cbf7f2 +f5cc956c3e2d2b60b4e6f4f9d7ab7649324b94dff8f8f1c48e503d7bcff2 +fcf8e1a87f7284f4fbf6fbbf7a415f9ef4fafdf8df48011721131f1b181c +11192e3a464c3c473f42433f3d454a42444f565149474a4f474a55494750 +494c4943443d38394c525e99e4f7f883523142265a828570442c24153737 +073c8af83f2d485051377c655e1b2c3133322c3c676a3ba4d04d38287ca5 +6054274d2b335676788171cdd255d99c004ef6f0f832864f6d3355575343 +1e4577701daffbed00346d6c95985b5f6381826e685642382c4bd3b1061c +c0f2f6b99265b77f837b503720548cd791c4fbf13f7dc56d96c3777f9564 +101517130d1d29317fab1c0023abe4b04077840a1916150e27298b8f58f8 +f94f1969753e6f881d1e10121d1a1716182e215af6590076cff7691ec482 +715829363b48353535313c45242a27160d0d11171d1c1c1c141718192f42 +97693447233d3c3c205e20de35123e5b331e1519202417160cebd012324c +37f8fbf763316748a1ffd2fbe3bbc9c5c6d7cad0cdb4d5d5b9f7d6dfe2e0 +ded9e0cee8cfeadaf4dbecd8e6f1f5e4fde1e1e7d2cde4d0c3bfbfc999a2 +a3a49a9fa2abaaa1a2adb2aaa6a9b5b2b6a5a9bfbdbfa6ccc3c7cca8cbd2 +d1e0afbbd2bdcdbdafbfc4c3bda8a7c0b9b99fa9c9d6c385485606081714 +0f1a1214171a1b18120f0a111212020e15171a212b3e5b798e979a999b9c +9d9f9f9e9da1a8acb1b8c0c6c6cbc5bbb2b0bbbaaaa05e584e835b49aab1 +b9c6d2cec8c8d1cfcccdcfd4d5d2e3dedee0dfdfe1e5e4e5e5e5e7e7e7e7 +e6e7eaecebeae8e6e9eaecece8e6ebefeaeceeedecebeae9ab641d000211 +19161815141618150e08131211101010121111100f0e0f0f1012131d1c0d +0b0a070000000766b1d0c36218332e3027171901134164563310092c6bac +d8d3d7af79522617164b9dcfdce1bf91592b152f7ecbe3e0d4a37036286b +bedfe8e3cd956e6272e2e4dde2a461284483dde2e6e0cc3700101b0a120c +0a0e030b202c363c2b362b2e322e2b333a32344148433b393e413a3a4638 +333a333737312f282324373d4984d3e6ea754623321a5c847a6a4e3a2c15 +2d2b00317fec33203b3f3c2167565c25444d4d46353a5a55238dc547351e +668a4844234e2a2b495e55533799b23dba7d003cebe5ec227238551a3e40 +3b2c0730635c0da0ecdf00285c5578732f34426c796c6557463b2c40bc95 +0003aee3ebb18b59a263625b3b280f4074bf7dafe6dc2d69aa5077a25962 +74521b2a211b1522242267920d001295cb972a677e0b1f1c170a1b167679 +46ecf34c155f5f225270162422252a24211d16271851ec500075c8ed5d10 +b3736c60485c56605459636a83957d86836f655f61646a6a696458544d41 +4543824e233a152c28270c4908cb2e0c324c26120f141a1d0e0b00dfc405 +273f2cecf1f05d2a593587e4b7e1cda7b5aeaab7a2a7a992b3b397d5b4bd +c2c0beb9c0aec7aecdbdd7becebac8d3d9c8e0c4c4cab5b0cab6a9a5a5af +d0d4dedadbd3dadfe1dbd8dce4e6e0d9e3e6f1dedbecebf4e6defff2fcf1 +d9fdf6f7f6d4f4f5f2f7dce6eaf2f7e2d6e5ecf4e4d5dbececce9de7e570 +263134463d39393a3e41413f343b35393a3f363c3b45566e8aa8bdc6c6c7 +c9c9cbd0d5d9dadbdad9d9dce1e5e8f7fcfffdefeae7fcfffdd7d1cab399 +bebec7e1fffffffffffffffffffffffff5f3f3f7faf9f8f7fbfcfcfdfdfd +fffffffffffeffffffffffffffffffffffffffffffebac63301d2c2d3942 +39303237373937312c2c2e2f2826262628282a2b28282726272728251f22 +2c3f39383f597db9e0ffffe1ae9ca38f76634f40464f5e695c3c4c86c3ff +fff9c786673d436693cefeffffeab58a5b5062a3e8ffffffe0ab8a5e5eaf +f3ffffffedcd9271a1fffffffff9c1685fb7ffffffffecf1f9ff8f293025 +1b324363692f445c58595959555a5f5951575d57575c5e595b5f605c6154 +626667655b696077c6a6a1b89e6d64a9ffffffc97e69737dd8ffffeeefd7 +925a5b471e589dff72232099f670876c8a291d14171a1421768c85ffffb5 +3a5aad93868d2a5654382b14130900487323c3881e6fffffff6f9271c71b +272b271b174da4a38cbdffff28699a588ab2497cbdf3ffffffe5c7d7c1a7 +e6ab291af7ffffc99f76c49c979270603e6d9fcebbbdfff286a0b7469bc6 +939ba8ab74938d87959e7b4db1b9624a5d6e74826fa4b05a736c5a485049 +90a37db5bb5d64805e636fbe867795988d8a80745a655c64ffb440634239 +4c3ac9e0badad9e0c8ffffe9f1f8f2fffff5fffffffffbfdfcfffffffff4 +f1e6ce9ec7a8432c563f494f4aeb4dbf903e62684f2f404c34303a40236e +9c6597806fc5c9da738c7e8579b5f7f9ffcbe6d9dee5e9e6dee1e4f3e7ca +ebdfe7f6fefbffeffbfcfff3ffeffde9f2f6e4bed9dce6dfd2e7e6efe8ec +ffffc1c5cfcbccc4cbd0d3cdcaced6d8d2cbd5d8e3d0cddedde6d9d1f5e5 +efe4cbf2edf1f0ceebece7eccfd9dde5e9d4c8d7e0e8d8c8cddeddc191db +d760131c1c2d28262425292c2c2a1f261e2220251c211b23354f6e8ea6b2 +b4b5b7b9bbc0c6cbcccfd2d4d5d8dde0e2f0f5fdf8eceadddee5cda1917e +58314c4750729ab6d0f0ebf7f9f0eef5faf8f0f0f2f7fdfdfcfbfaf9f9fa +fafafafafefcf9f7f5f8fbfdfcf7f5f7f9f7f6f7f6fcfadd9e55220f1a1a +262f261d20252527251f1a1a1c1f1c1d1c1c1c1c1c1d1717161514141516 +18191b220e00000721587bc2d17e4e41554b3930262131404f59441e2f70 +b8f7f3d8a563441b254c7ebaeaf5edc98e653b324487cef2faf6cd967042 +4397defbfef8d8b477588cf4fcfbf1dda6524ea7ecfaf6f2ddeaf1f66f03 +0b070820304d561c2e4641423f3f3c41453f3a4046404045444241454642 +453a474b4c4a404e435aaa8a859c8251498eebf0f3ad62453d2a5c7b7e58 +3f3629234f480c3d83f357080982db566c59823033323230212166736df1 +f8981b3a8f786e7a1b4e534e666d808472c7d75ec3700f62f3f7f855735b +c52a48554f3921458b826ba0fafa08457d4481ae46647a8974666d4b2949 +555ab68d1309ecfaf3a3704cac8c837b55411b4e89b99c9efae06981a132 +82ab757e8e7708121712162d341f8d9a3e2a4a626a7255796d081a17120e +262874875e98a2454a654348518c360d141313181517142c2738f793173d +2e29341aa8b1746d362e2ba2683234414958563330231a1b20292828282c +2e202027322d8d8b28123f25282e31d7349a5502364835192c371d171f25 +0752804b7d6a5bb3b8c34d635e6e6bacf0edf4b5c9babec8d0cdc6c9ccdb +cfb2d3c7d0dfe7e4efd8e4e5eddef7daead6dfe3d3adcacdd7d0c3d9dae5 +dee2f9f8989ca6a2a39ba2a7aca6a3a7afb1aba4b0b3beabaabbbac3b7af +d5c5cfc4aed4ced1d0aecacbc7ccadb7bac2c4afa3b2b8c0b2a6b0c4c8b0 +81cdca510207041715151314181b1b190e150c100f140b101017263d5873 +868f90919395999fa5a8a7a7abaeafb3bac0c2d3d8ddd8cbc8b9b8bfa97f +75664524423f4a698ea6bcd6ccd4d5cecdd4dad7d2d1d4dbe2e4e3e4e5e6 +e6e7e7e7eaeaeeece9e7e9eceff1eeeae8eaeceae9eae9efedd091481502 +0c0c1821180f1217171917110c0c0e100e0e1010101011120f0f0e0d0e0e +0f111214141a05000000124769aebd69382c3f34241b140d1e2b3a422c04 +114b8bc9cab582432600093163a1d1ddd8b67d5222162c6fb5d7dcd8af7b +592c2e7fc3dfe4e1c3a0644479e0e6e6dec8913a348dd1e0e0dac6d0dce3 +640003000012213f480e203831322e2e282d342e282e3630303535323236 +3933372b363839352b393148957570876d3c3479dadfe59f563931225c7b +79574a452e20433a023274e44c000072c63f574a803a4b4e4d452a1f575d +53d9ec90162f775b5469164c4e42525159553b92b540a14e0052e6eeec46 +5f44ae13333f37210930776f5c92ecec00376b2c62891d3e607b6f666c4b +2a474b4a9f730000d8e9e79a663c926b625c402f0839719e878ae4cc596f +8917648d59606b611528231a1f333010737e2e1d394c51593e68670a201c +150a1a155e714a8a9d43495c2e2a2d712b11262620221f1f12231f2fec8a +153a251c280d97a16c72535246b9804e5a6f829da78a897c737172767475 +7476725d5752482f776d17053116171b1bbf1e884d002b3b280e25321710 +161a0044723c705d50a7aebb4a5f535c518fd4d3dea0b7a5a5a8a8a5a0a5 +aab9ad90b1a5aebdc7c4cfb8c4c5d0c1dabdccb8c1c5b791adb0bab3a6bc +c0cac3c7deddd2d0dcd9e1d4dadae0e0dbd7dee9e6dadceeeaebe1d9edf0 +fadaf0fef3ffe2e6ffefffe1dbf7f1f4efdbe0f1f2efe5cfe7e5f5e7cede +f1e6aaa9e2e8932d44343f3b3837393d4042423b3d4534393c3b3c3b4256 +789ebbcccecdcbc8c8cdd5d8dedfe0e0dfdedee0e4e5e4edf8fdfffff8fa +f9f8ffffffffffebc5b2aaa3a8b8e1fafffffffffffffffffff9f7f9f9f6 +f9fbfbfcfdfdffffffffffffffffffffffffffffffffddac6c3f150e1f2e +363a453f42453c33302d3034363029252626262525242525272a28292829 +282828292c323538456dabe0f5f6cac7c8a8998d6b544a3f45595c635538 +569cd8eac294623e395b95ceffffffefc08a5d444c62b3ecfffffadead71 +53557cd5fffffff1c69a788cb5fefffffffed9a4648fffffffffe1e2d9ea +efffffffffaa300e4b66642e4753555d5c5a575b615e565a5e5b685f5b60 +636060625f5e6563605f5d646055a0704db16b6b72b9ffffffd31b666ea4 +f9ffffe6e2cb6c434632154786d753153ac9eb9da579781a15111c2f271d +727ab8ffffc74069a980a8ab113731232b0c150b00436c156a661ed9ffff +ff479377ca1b34262a191a4291916f7499c056615e56a4de83b2e8faffff +f9d7b1ffc889c7ae5585c879b78290a0d099a99f8c86587b9d8479758b6a +8979538498c8959ea4ba7b97928b89a86f539dc3c05b745b646572a1b464 +6e6f5c4c4e4974a28f5451595c7457b29aa3907399938d8980785d615a4b +ffed33484565623ffff0b0e8daf7e3cdeedde3cbfffffff1f1fdfbfcf2f6 +f0f1f4fceff4ffecd7b4d8d4434bc4f4525878ef908ff342546868392143 +3a3533304050c193a1a876b4ffffd183886d60c2f4e7ffccd8ccdfe5eee2 +e8ddcfffd7cbe1d0e2dcefd1e6d1cee1ccc8ced6ebfdf9f2fefffefbfeff +fff6fffffffffcf8c3c1cdcad2c5cbcbd2d2cdc9d0dbd8cccee0dcddd3cb +dfe2edcde3f1e6f4d4dbf8e9f9dbd2eee6e9e2ced3e4e4e1d7c3dedce9d8 +bccbe0d69d9dd9dd82192c1a2926232224282b2d2d26262e1a1f22211e1d +253b5e86a7b8bcbbb7b4b3b8c0c7d0d6dbdcdbdad9d9dadbd8e1edf4fcfa +e8e6e2dde7e0cdb9a17a4e3b3c3d4d689ebfdceaedeff1f0f8f8f8f8fafe +fffcfbfafaf9fafaf9faf9fafbfcfafaf9f9fafbf7f5fbf6cb9a5a2d0300 +0d1c2428322c2f3229211e1b1e242420191516191a1c1c1b191919191716 +15151413131518180f020015456f7d7d55586349424537302e2630464950 +44233c7eb9d2b58c532a1f3c74ace0f5f0daac754124273e94cef2f1e2ca +9c61403d60b9ecf5fae2bc8e63739ae8fcf4f6ecc0894b7bf5fdfaf4c2c9 +cde4eaf8f4efdf8e1d00354f4e1b313d3e4642403e4247443f4347444e45 +41464946444643434a484545434a4438845431954f4f579ee5e4f8b7003c +28437f8872413839131a443801296dbd380024b2d2838a666e1e292f3746 +341e6061a0f6f2a91f4989638e94002c2e376667858773b7d4566b4d0dc7 +e2f7f72b7461c52a54505237233a766c4a5282a8343d3f409ad063758375 +705b593e23917f5ba18e396bb5669d626c7db88695887267355b89705956 +79596c5a3d707fad76818e8a0f151c16063325237aa49b3b5f4f58555876 +711315181411222858886f34384142593d987e78440a180e131712191628 +251fe5cf072033574a1fe5c572813a42402d42272718a985563523211012 +17221c1d1c241a1f2a29333d9ab32330b1da283168e37464ba0925434d25 +0d2f231d18162435a5798a9263a4fcf9ab5a685652b9edddfcb5bbadbfc6 +d2c9d0c5b7e8bfb3c9b8cbc5d8bacfbab7cab7b3b9c1d8eae6dfedf1efec +eff0fae8f8fefdf7f2ee9a98a4a1a99ca2a2ababa6a2a9b4b1a5a9bbb7b8 +b0a8bcbfcbabc3d1c6d4b7bdd9c9d9bbb1cdc6c9c0acb0c1bfbcb29db7b5 +c1b198aac4bd8a8dc8cb6e0010001415121113171a1c1c15141c090e1112 +14131728476a869396959291949ba3a9adafb5b7b8b7b9bcbfc0bec7d1d7 +dfd9c7c5c2bfc9c6b7a9987246332f2e3a5183a1bfcbced0d2d1d8dbdbda +dde0e3e2e5e6e6e6e7e7e9eae9eaebeceeeeedededefebe9efeabf8e4e21 +00000110181c241e21241b13100d101516110a0607090c0d0d0c0d0d0e0f +0f0f0e0e0d0e0e0e0d0b0400000937616d6c43454f352e2f211816101b35 +383f320e25649cae8b5e2a05001d5590c3d8d4bd915a2b0f142878b2dadb +caaf7e4020214aa4d7dddcc3a1764e5f87d3e8dfdfd6ac763763dbe3e2db +adb3b5cad4e4e7e5d6830f002741410d232f2e36312f2a2e36332d313734 +3d3432373a37363835323735302e2c332f266f3f1c803a3a4289d4d3eaa9 +0030203d7c87724743441514372a001e59ac2d0017a2be6c75576d29414b +52583c19524b86dee6a11a3e704573820028272b50485d553e86b138492e +00bbdaefef1f604aaf133f3a3a1f0e25635a3a46749c2a2f2d2877ab3d56 +716c6e5c5b40218a6e438a77245aa45790555e6a9e6674695b5321446e55 +444263455c482655618f5a6367731c2d281c0e3924175e87892e4e39403c +41656912191e170d171542715a25313f415026775758370e2a21201f1d1f +121f1d14dac5041e294a3e12d4b4658456655d4558404840d8c09f897879 +6c6b696f6969676d5d5f64554c3f81941425a3cb1c224fc95f54b1021d3a +421a06281b130d091624976a7a845597f1f1aa565d44389cd1c4e8a3ab99 +a8a9ada1aaa195c69d91a796a9a3b89aaf9a97aa9a969ca4baccc8c1d1d5 +d2cfd2d3ddcddee3e2dcd7d3d6d1d3dadfdad8d8dfe3e0d7d9e4e7e2dce9 +e9f2e7d7eaf4f7f3dcfbf5f6fddbf6fef1f2dcdff2edf9e2dee6ecf5edd2 +d9def2f3dbd8eaead489bfd4e0962a3e3b3d3f3d37363a3e453637423140 +473b413b37415a83b0cdd4d4d3d1cdcfd2d4dadee5e9eaecedeee9e8eced +f3fafefffffffffff0f6f2ffffffffffffe6bfb2b1b6b8c5d7f2ffffffff +fffffffffff9fcfbfbfdfefeffffffffffffffffffffd5af7e5737201c25 +36383e42403d40473e3a38342e323d40382f2a26282b2d2c242427262524 +27292a2b2c2d2d2c2c323c3f5471d6ffffebcdc0bcbe986e614d44435560 +655d453c4460969e7d6352405e93d9fff9ebc49a7248325085bff2ffffe7 +bca77136538bbef9ffffffd39e7c748dccffffffffffdc946d93e3ffffff +ffbc8dd1f3fbffffffffffffe05e554a341847545b5b59665f5d60625d5d +5d595c5a5d62615b5c616670695f5c62675d645e67b99b87566b5ea6a624 +2d771b637ccffbfffdf3dca65d2f1f1921558eb05b2f659ed18c99818119 +191a172722137578839fd6737d614b879b99174d351f2313160e043e720d +859855687366944d60757029222036282b3c6da159604e686c736ca6a0cb +b1e6fcfffff6e2d1bfffd4779dff36785e6d72558ec8ddb19eaa91926573 +bfdaaa596b8d5e4e6ac286d7969c9abc7b948e89949f85559db5ff4c4248 +533f51b9ce896472644f494b5fb0ac71ef6b5b5764bfc788a375978d9486 +817a5f5f5e45e2ff3632a3ffff57cff296c4d3f3efe1e3e9f7cff2dce9e2 +f7f9fffff5faf1f5f4fef8ffffe6cdafbac8564fdeffcb2e888f7c60ff48 +4264653331373336362e3e3affa41c373185ffffff513e3e3ef3fde6ffed +e1d2d3cccbd4dee3c6ffbfcbd7c3d3d2d6cfded9ebf1e0f8fcfcf1f9fffd +fbfbedfffff6fffdfff1f7fff7ffc7c2c4cbd0cbc9c9d1d5d2c9cbd6d9d4 +cedbdbe4d9c9dbe5eae6cfeee7e8efd0edf7ebecd3d6e7e2ecd5d1d9dee7 +dfc6d4d9e6e2c6c2d6d9c581b8ccd182122322262826222125293021222d +1a29302429232027426998b5bcbcbdbab8babec3cbd1d7dbdcdcddded9d8 +dbdcdfe5e9effdfffaffe0e3d9dfe8e2d9d3c59f755c4643495b789dc8e7 +e7f3f9f5f4f8faf7fbfdfcfcfdfdfcfcfcfdfdfdfdfdfcfac1996841210a +060f2022282c2a272a312b2726221c202c3028221a191b1e20211b1b1b1a +1716171918171816161515110d0008186b96956348434f6450383a2f2a2d +3f4a4f472c232b477d845e432c204b86caeee4d4ab7f552b17356ca8dffc +f6cba08d571e3b76a9e4f3fbf5be8667647fbef7fdfbfbf5c7825b83d4fe +f9f3ed9e6eb8e7f7fffff4f7e2f8cd4b3e301e05313e44443f4c46444648 +4646464242404247453f3f4449534c4241484d4348414b9d7f6b3a4f438b +8b09115b0033225f8878544237241310231f0a35759a43174f87b8717e6e +771d2d35323e2f1463606b87ba555c3f2968808005402e305a6883826ca1 +d64e82763b4b4b3a6b283f5f6b38424a60483431507a2f3a324c464d5092 +93af72867a66674c393844c6aa5f7fe612543c505d4479b0ba928e9b7973 +4053abc68a3a5b7c412f54ae6cbc7681878e0f0f18120e2839257a96e32b +2d3c472f378e8e390b1b19141d2a44968c52d653413c4aa7ae605a0e1808 +1a14131918242716c2ed0a0a91fbf937aec95e6530353c2e292730175b4d +442c2d1f141517261e211e282232331e253378a53534ceef99007e8a592f +e413113c4a1f1d231d1e1c14231ff88a05241f75fcf7f3251c2430eaf6dc +fbd6c4b3b3adafbbc6cbaeeda7b3bfabbcbbbfb8c7c2d4dacbe3e7e7dee6 +eceaeaeadcf3f1e7f5effae7edf5edf79e999ba2a7a2a2a2aaaeaba2a4af +b4afa9b6b8c1b6a6bac4c8c4afcecacbd2b2d0dacbccb4b7c7c2cab3aeb6 +b9c2baa0aeb1bcb79b99b3bbae6ca6b9ba6700050c141816111014181f10 +111c08171e141f1912162a4e769196969898999da5a9acb1babec1c2c4c5 +c0bfc1c2c4c8ccd3e1e6dde4c6c5bbc3cbc5bdb5a78358433231384b6689 +b2d0cedadfdad9dde0dee6e8eaeaebebebeceff0f1f1f1f1f0efb68e5d36 +1600000415171d211f1c1f261d1918140e121c2018110a080a0d0f0f0a0a +0b0a0a090a0c0e0e0f0e0e0f0f08000000065b878653372f3a4c371c1d13 +13162a353a32180f1731676d492e17092d64a9cec5b48c61370d00174e89 +bfdfdbb388743e04215b8cc7d5ddd8a16a4c4b65a4dde6e5e5e0b46e476c +bde6e1dad58659a2cfdceaeae6ecd8edbe3c30231100233034342e3b3230 +353734343632312f31363731313639433a302c31362c332f36886a56253a +2e767a00034d0029215e8375594c452e140b151102285f83370d4277a45c +695f762845524d50370f55484f6fae4d5735104b656c003a242045495a53 +3b73b430615a2c45493969202c4855212d3448301f1d3e69212d26413d42 +3b77708a536e6d60654d3e3a3db7914367d2024630424c306498a4766c7a +615f2d3c90ab75264468311d3d93519f5d635f761e2a2418172e39195e77 +d11c1c262f16207d85380f211d1012192f7f7740cf5140333385853d4b11 +291b251c1e20141c200cb7e3070887eeed2a9db74f634b5b5c4b4041513d +868289797f75706f6a736b6d687068726e4c3e355e87262bbfe19200636d +4621d90b0a343f14141a12120f05120ce77900131168efeef324131516cd +dac3e7c6b6a19c908a93a0a78ac985919d899a999f98a7a2b4baaec6caca +c0c8cecccecec0d7d4cad8d4e0ced4dcd4ded9d2cbdcdbe0d6d8dee4e3da +d7dfe7eae1daf0f1e9e2e3feebffe6e2fbf1ffe9d5fef3fbf8d7e5f3f4f5 +e1d9edf4eae5cee8e7f0f3d9d9eae8c585bad9af5833384049463c34373d +354d3d363c4032413a3d3e3f4d6c9cc0c6cdd5dadad8d7d8d9dde2e6ebee +f3f7fcf3f3e9e8f0f3f9f4ebf5fdfffffff4eaecebf2ffffffffffffdbca +c0b2adafcbe7ffffffffffffffffffffffffffffffe8bf8e613e271c2233 +41454b504c4142403e3c41474642413a37373a3f3b2f302d2c2b28252425 +2524272626282a2d2e3235363938394265a5f9efffdbe5cad2c0a07d5c4b +443f5759564d413f4953666f63413f5f9fe2fdf4c3996c482e426da9edff +fff8c5856259445c94d0ffffffecc082626485ccffffffffffe2b18a7cb0 +f0ffffffffe09673d1fffffffdfee9def6ffffffffffa6232f576060615e +645c5c615f5b59525b60615a5b61605a666357646b62655c655f518aac55 +636c6ad1cd231a51346490ebfffff7f6c47d4d30241c2150a0c26171705c +5859ac6e8f18181e11171f1f68977a6b7386909060af7fb23f3f251d191c +1a1207357e0d99e819423d76b4547a90f02a1e2d20282d3d64c97a5b7bab +76687fcea6ffe5f5fffffff1d3cbc9f4ee678eff3e405585ffff99e7e4b1 +bdb4998269658cbfac7ff4ffac4b8bce93daa2a69cbd7c9495918f947771 +7ec4ff5b1b46afb83cb9fcc15c756c55474e56bfc9bbffe83045798aa487 +c262908d8f8585785f60684ac7ff652373ffffb85ac0979ed3f6e8f3fff3 +efcdf2fffff1fffffffffefffefffffffffdfceedeb2b6ef9632b8fffc2e +9bb47f60fd4c44655c442b303934363b3320ffce483e3054ffffff853041 +3c7cffdefff9d5dbf1f5deede2e2e3e1ecfbd8dcf6fff0fff9ebffede4ff +fff9f4eefff3f9fbf8faecf7f0e9f5fdfffffffacac3bccdccd1c7c9d0d6 +d5ccc9d1d9dcd3cee2e4dbd5d4f1def2d9d5ede3f1deccf5eaf2edccdae6 +e7e8d4ccdfe6dcd9c6e0dadfdec4c6dadabb7db2ca9b40191f29322f251f +22282038281f2527182a22252728325283a8aeb5bfc3c5c5c6c7caced2d6 +dadde1e5ece3e2d8d4dbdbe8f0edf5f9f9fefceee1e2dbdae7ede5d9c193 +6d605c57586284a6c7dae7f4f5f3f8f9fafaf9fafafaecd5ac7a4d2a1308 +0a18262d3338342b2a2a262529302e2b2a232124272e2b1f23201f1e1b18 +1719191a1b1a181818191616151413100e0a144593818b5e644d5d574a39 +2d2c3333484844382b262e384b564d2b243e73bbe7e6b58a5c351729508a +d0eff1e5b7764d412c447ab6eaf5f6d7ad71515170b6ebfdfef3f8d39f75 +679de1fefbfcf2ce7d58b6fafafffbf7d7c6dbeafbfcf9f5900d19414a47 +47444a42424745443f384147463f4046453f49483a4950484b424a44356e +903a4a514eb2ae030034172e2c6f806d413d2a0e141d2b2614388bad495a +5d4942419057841b2d3c30312c1e5b81625059696f6e429161982e372534 +54717e7b6994e25298c40021184f88285677e836405b4c48322e47a6593e +618d473960b585d68b7c7267534434476cbcd95c74f6191a3168faf78ad1 +c08fada68163464577aa8c60e2fc8f2c75ba7abf848b8a9316131b150b1c +253856a2e83c0637a3a82290be73031c1d14162a3ba7aa9efad3172a5e71 +8c638104160a120f151713212f1aa6ef3c005df3f89839996345373a2932 +432e2915529463353c37201f1f2e272c29322c262225322f6ac16e14a6f6 +cc0291ad5a31d21e0f363e30171a211d1c211805f2b532291d43f8fbf25d +0e252a70ffd4f6e4b8baced3c2d4c8c8c9c7d2e1bec4defad9fce2d4f5d6 +cfebf2e4e1dbede0e8eae7e9dde8e1dbe7f1f5f5f4eea19a93a4a3a8a0a2 +a9afaea5a2aab4b7aea8bfc1b8b3b3cfbed2b9b5d0c6d4c0add6cbd3cfac +bac4c5c5b1a9bac1b7b3a1b9b0b3b1999eb8bda2689db38224000917201d +130c0f150d25150d1313071a161919161d3965868a919aa1a6a7acadadb1 +b8bcc0c3c9cdd3c9c8beb9c0c1ced7d5dde0dfe1dfcec0beb7b6c4cdc6bf +ae825e504c44444e7090b3c3d0dcdfdde1e5e6e6e8e9e9e9dec79e6f4221 +0a00000d1b21272c281e1e1c1a171d22221d1c151315181e1b0f120f0e0d +0a0706090b0e0f0e0b0b0c0e0a0b0a0a08060500012d7c6a774a51394942 +3322131017193134302516101923364036140f2b66aacfc9986b3b15000a +306bb0d1d1c49455302710285f9bd2dedcbc8f533333559ed2e4e4dbe0be +8b62568ccee8e5e4dbb66743a3e8e4eae6e5c9bad0dceae8e7e07b00042c +3533363339313338363430293033332c2f35342e393528343b31342b3531 +20597b25363c39a09c00002407242a6f7f704d4b36171b1f241b0c2e789a +3f524f382b297b49822440544542351c4b694a3b4c616662287549872735 +232c425458503a6ac03379aa001a0f4889274661d320284133301c1b3593 +482e5482412f4b9764b7716b6863554838435da5ba3c5be2090d255aeae4 +75baaa748b83674e302c5a8d774ccee87f1a5e9f5ca26a6e667b2129281f +1625272f3d86d52a00228b8f0b7cb36f072220120f1c268f958cefce1321 +495266416f02231c201b211e131a261097e2360052e5ed8d2a8a55414d5b +4a515d494a3b7ec8a8828e8c7b79727d7479737c72695e534c3453a7620c +98e8c20076904721c211093034250c0f150f0d120700dfa11d160c33e8ed +f05b05171456e4bbe1d1a8a9b8b79daca5a5a6a4b1c09da2bcd8b9dcc2b4 +d5b6b0ced5c7c3bdcfc2cccecbcdc0cbc4c0cdd9dddddcd6dbd9d7d8dbde +dcd7d5e8e3e1dad7e7e3ead4e3f8eaefd0f4fbedffd9eeffeeffe3ddf9f0 +feedd5f1f1f6efdfdfeef4eee0d2e2f2f0dfcedde7dfad98c180914d3535 +496f733b3735353a3c40423e3a3e403c4045485f89abbfc2c7ccd6dde1e0 +e1dedcdbdee4eaeef6f7f9fbfcf6eee5e6e7ecf2f9fdfffffffffffcf7f3 +f1f6fffffffffae8cdb7c1d3dfebf8f1f5fffffffec19b78534a3b323d3b +525c5c56565b544f4a48483c3a45424d5244433d3e3a3e3c484c36322c29 +2527292c2b292928282d292732323a3f3e3b4f509fcdfffff2c7a7b1baa4 +85725c4c47505c64574a40414d5a5e5c533c3e6aa7d3cda7785a2f345996 +cbf9fff0c592674441568cbff2ffffffd9a478585882c8fcfffffffbdeba +8d7aa4dfffffffffffdd9e7898e8ffffffffedbfcef0fffffffffaffffee +4f526a5f5b5e56625a575b5d625b58685b5f57695d68625d6864636c6864 +6b6165675a57696368aae4ddee7f496bc2fffffff8e9ae6b47251c1f162e +b8ff9e5b755a5a5bbc7f802f1a0e1b1b1c17618c7952646c5d708cfa88be +2630210d00181d1c0c247d1566ff283961ffffb8acb78b2a29212b253636 +65d06ca8ffffbc4db9e6abe7eefffffffacfc9d8b0c8ff6483ff74385dff +ffffccf3ffdda6bca7846c5c91b9f69df9ffff46c6d57bd09e9997b99186 +95969290906a61b8f2361759cfe35e94e6db5777666b4c5045b2c68effff +57319b90607ee25d8b95908c7e776568784b8cff842264ffffbc49ab9aa6 +dedbe8edf7ecdfd2fffffff6f8f8fefffef9f5edffeff7f2f8e8ddb7a6f0 +b24c848095498f706a53e4bd3d5c7150322f36363941311db1d4301e4220 +f2ffff9b245b4a57ffe5f6ffcecfeaf7d7f5e0e9e6ebeff5f8e9ebeae8ee +e4faebfcf0dffffcfdefffebf7fbfefcf7feffffffeff6fbedecc9c7c5c6 +cccfcdc8c5d8d5d3ccc9d9d5decbd6eedde4c3e9f0e2f6cee3f9e3fad8d2 +eee5f1e0c8e2e2e8e1d1cfdee4ded0c2d3e0dfd0c1d1ddd4a28cb06d7a33 +1c1c30595d2522202025262729231f232521252a2d447193aaaeb3b9c3cc +d0d1d3d0cecdd0d6dce0ebeceef0eee8e0d9dfe3e6ecf2f6f9fbfbf9f5ee +e6dfdbd8e3e3dfd2c0aa896f738188929b9196b5dce3c4875e3d1a150a07 +15152d373935394039353331332a25332d383b2e2c23211a212231392523 +1f1c1a1a1c1d1b191c1a1a1e18151a1616130a020d085272a18f79543b4d +60543e382c232635454f45382b2c384448463d262a5691bbb18d63471c1f +4481b4e2e7d7ac79502f2c437cafdff4faecbb865c3e406eb7eefbfdfce7 +ccaa7c6993cdfafbf7faf7cb896386d6fbfcfbf7e5b5c1e2f7fdfdf6ebf3 +f6d43739504742473f4b423c414346413f5042463e50444f47444d4b4a54 +504c554846483f42574e4985bdb8cd6026305b7a6a563433210f2122262b +1c2ba7ef824468504c469d616c2e323440382514587c5f364a523d5174e2 +69a31c3433363d7077786d8bea626ce9001751fcf28984987a2d4d565d47 +35214ab7609dfcf3831395bd63877a7b685c41244a7f7aabf4596bf35117 +41f1fafcb6d8e2bf92aa8e664c3e789fd781dff9e329aebd62b5807e8793 +350c1513121c31203094cf1a0249c1d2446eae95011c0f1f1124289cad78 +fbf03e157e74495da90b1c150c0d0e1613233d1b67f5630248f8f39b2883 +6651542a2321322d271f5b8c6c2b2c241c17191616132b171b151c1c2e2e +49af80266a6671287b5b462dc89a04224c381a181f1c1f27170398bb1a08 +2d0be0fbf97e033b2f45ffe0eff5b2acc4d4bbdcc3cac9ced2d8dbcfd1d2 +d0d6cde3d4e5dbcaeae7e8daefd8e6eaedebe8eff2f1f5dfe6ebdfdea3a1 +9fa0a5a8a6a1a1b4b0aea7a4b4b0b8a4b3cabbc4a3c9d2c4d8b0c5dbc3da +b8b2cec5d1bea6c1c1c5beacabbac0baac9eacb8b4a597a9b9b486749e5e +6c2408081c4448100d0b0b101113150e0c10120e14191a2f59798b8d9298 +a3aeb4b4b6b3b1b0b3b9bfc3cdd0d2d4d4cec6c1c5caced2d8dcdfe1dfde +d9d3ccc6c3bec6c6c3b7a89172595d6c75808a8184a2c6cfb0734c2b0905 +0000090a2531352e2b2f2824211f2016121d1a2329191a12110d13132128 +13100c090607090a0b0c16171719110b100a0a0600000000425f88735e39 +2135483b2822160f1322333c31241819232f312f260f113d79a39b764829 +0000256294c2c8b88d5b31100d235b8ebfd5ded1a36e462728559dd3e0e3 +e3cfb4936a5983bfedece8eae5b7744e70c2eaecedebdaabb8d7e8eae6db +ced3d2af151a352f2c352f3d363134363a3229382c302a3c303b34303a35 +343c38343e3434362c2d43393775aea6ba4b12205279786a48422a1c3a37 +28271826a0ea7f3e58372f2b89566d363e415048361b49634e283d45303d +5ac855981d3d413c335754514260c34050d4000d37e6f38f7884681a3338 +402c200e35a14887ece97c087d9f4a6f636b605c472a4471608bd23951de +3e0633e3ebeda8c7cda36f86704c33225a84c26cceead31796a143976463 +667e381b24232127351d1f7cbb050032a6b629579f8d022115210d191887 +9763ebe3370a6e5e2a3e9500222421201e1f151e350d55e452003aebe892 +1f7b594c61444142504c49468bc8b67d8179726b6c67665f7962655b5c4f +4d363a9b751d5d57631762402e16b086001e462e0e0a110d1018060084a7 +05001800caeaef78002e1c2de4c3d5de9d98adb696b4a1aba9aeb2b8bbae +b0b0aeb4abc1b2c5bcabcbc8cbbdd1bac8ccd1cfcbd2d5d7dcc6cdd2c5c4 +dbdddad5d7e0e0d9d8dde6e4dddbdfeaeae5daeff5f1e5d5fbf5f9f3ddf4 +f2eff7e0e3f9f4fce8daebf5f5e8dfe3ecf1e9d9dde6ebe5cfcce4eecf92 +9b5f7d44393f343b7d8e4a2e35383c434a423b3d463c3b4650658cabc4c7 +c9cbced8e1e4e8e5e4e3e2e1e0dfe5ebf4fdfffffffdede9e6e4e7eef6fb +f6fafffffffffffff1f3f1f0fcfffffffff7d6d5eeefdfdac9cddbe3f7ec +b7a17767675f5f5b585f595c565a564943383e42404649403a353d3f4642 +43402e2d30302f30313230303433343635383f3f434e6ea2edfffffdd3d6 +e4e8ceaf885c4f4948515e6256483c45546061584b413f5b7d887a654b34 +4669aef0fbfbca8b6f473f597dbaf7fffff4d3a87450546b9eddffffffff +e3ac998d8cabe2ffffffffffffd79876a0e5fffffffff8b6a9dffbffffff +fff4fef7dedaf35a5d62665562665b5b626166676954696c5e6d6d5f6269 +655e6569666e6e6c6b735a665b7262a2ffffffb9757bd1fffffff6e0a15f +2e222819193e9affce203339a06b64748a27190a0e122224546c73d1ffc1 +455287b474ab2f1f191700132220111c751440d73a2cb1ffffd68ec29a2f +261b2c2c374171d9c29aeafff058d3d3d0efffedffead9d4d1caa2b9ff67 +8ae86a2241ffffff86bce5d69fb5a68c705a83a9dcaee1fffe62d7c086c9 +a6949dbea58ba29c908c9c7a6cbdd22e3441acf7cf78e0e5506e775c544e +4d9ec39efdff6554957c987cd867888ea4928478625f6e556aff9a357d61 +656d4d909894bdcaf4ffe6e7e0c8d7edeceffffffcfefefffffafcf6f1ff +ffeddcc9b0dec4624b4a494647419c678ddf465c675c36303b3b3b403428 +a7ffaea5c27ccfffffff94a69995f0fcebffd9e0dbd5e1e0dbf2d8e8eee1 +e4edffe8f9ebd4ffebfffffff9fffbfffffaf8fffcf5fbf0edf1ffe9e6e3 +e8f1c9cbc8c3c8d1d1cac8cdd8d6cfcdd1dededcd0e5eae6dacaf0eaeee8 +d2e9e7e4ead3d6ece5edd9cbdde7e7dacfd3dce1d7c5cbd4dcd8c3c3d8e1 +c1828a4c692e1f2419226478341a2122232a2f271f21271d1e29354b7395 +b0b4b6b8bec8d0d5dadad9d8d7d6d5d4dce2ebf4f9f9f5f2e6e2dfdde0e7 +eef3eef2f8fcfdfcfaf9eaeae4dddee5e4ddc8ac867f928f7c7e7c869197 +aba06f5e392f332f302b2a312d322f35322a261d242b292f3229231b201f +29282c2d1d1d20201f1f1e1c1a18181717181310130b080b224f90a2b58e +5b5d758377644b2a27292e3844483c2e25303f4b4c43372d2b4769746651 +37202e5197d9e4e4b3745830284266a3dff6f6e1c0935c383a5184c5f9f6 +f6fdd59e85797799cffafcf9fcfcefc685638ed3f6fdf2f3eaaa9cd2eefd +fbfaf4e7f0e5c5bdd74042484d3e4b4e434348454a4c513c515445545446 +49504c454c514e5658534a5241544a5d417befe8f2964a3865755c48302e +1e0f15273228274288f7b209283295584353742634353a332e244e5d59b3 +f6a72633739f538e292b32453a6877787487ea684db80f0aabfff2a966a1 +852e464d62533c325bc5b893dbf8bc1a9a8d6974845b5e402c3f749283a9 +fb5a72ca49032cfcf2fb6ea1c6bb8ba18d71523f688ec092c4f5e347bda6 +6db08879899a51171d14111934293397af121e2f9ce3b756ada300141e0c +131e3088ad89eefa4d38755f805da61b1e101c0e14170c15322441f17b19 +6044454c2c6b6c4b442b363d2833361d1d271c1c362c1c1914171c1b231d +121f271e2a3844908b3a2b2f2e2b2d257a4878c30d21403f1b1921212126 +1a0e8df5988fac67baf4fbeb73847c7fe6f8e5febebdb3b0c5c6bdd1b9c9 +cfc2c7d0e5cee1d3bde8d4f0f2eae4f0e6ebf4e7e7f1ebe4ece1dee2f4d9 +d6d3d8e3a3a5a29da1aaaaa3a4a9b3b1aaa8acb8b8b5acc1cac6bcacd2cc +d0cab4cbc7c4cab3b6ccc4ccb8aabac4c2b5abafb8bdb3a2a5acb3ac9998 +b2bea469783e60230e0f040c4e611d02090b0d141a120a0c12080c17243a +5f7d959496979da7b4b8bdbcbbbab7b6b5b4bdc3ced7e0e0dfdcccc8c5c3 +c6cdd7dcd7dbe1e5e8e7e5e2cdc9c4bfc2cacac4b0956f687d796767626a +787f9388564420181d1b201d1d24202420252218160c1319171f2219130c +12121b191e1e0d0d10100f0f0f0e0d0e141311100a0808000000123d7e8f +a27a404057655b472f0f0e12172433372d1f131d2c38372e1f15132f505b +4b361c05123578bac5c59354381009234784c3d9d6c0a074401c21386dad +e2dedee4bb846d616285bee8ece9edede1b676527abfe2eae1e3dd9e93c9 +e5efeae4d9c7cdbf9c93b01d242f372c3d4237373b393e3b3922393c2f3e +4032353c362f3639363e413d373f2d3e364a306ce0d6dd82392858747063 +473e261c35453b25274188f6b1031616753a304a762c3d3e4744442e4046 +4aa8ea9a141e588442882b37485433535852485bc04431a6090089e1f3b0 +5c8e741c2e304236251b44ac9d79c8eaaf0d86745662734e594132416579 +6487d83a58b236001bece5ed6290b29e687c6e5436224b73aa7db4e7d234 +a68b4e916c5e6e844f20302822263b2628849900071782c89b3b9a970016 +240f111420739674dbea432d684d66418f0d201c342624200f122a162fdc +670450363a4327635f42493d505a445053414e64676d8c83726c696b6d6b +726c626b6d564e49418380301e1e1d18160d612c5bab041d3937100b1414 +14170b007ce3837a9752a5e0ede16a786c6acbdbcbe6a9a79a93a0a19bb2 +9aaab0a3a7b0c4adbfb19bc6b2ced3cbc5d1c9ced6c9c9d3cfc8cfc4c1c5 +dbc0bdbabfc9d9e0dbd2d4e0e4dedcd4e5e6e2dfd9eee6ecdfe8f7f0f6da +e2ffebffe5d9ffebf7ecdef2effaf5dae3eef7f2e3dae3f2f3e3dcdce9f2 +ddc9d4f0e3c17d454b46464e2e3b375a82663b3734373d3e4b605a483d42 +495e8ebcc9cdd0cecdd3dce0e6e7eaecece9e5e2e0e1e4e9f0faffffffff +faf0e9e5e4e3f0f3f8fcfefffffffdfffffffffcf7effdfffffffffae0db +e5ecfdf0eef1f0fffffdeccda3866a6769685f5f54444b53494f574d3f3c +3d4a4042483e34322f392a2d313433353b424146484443587381a8ffffff +ffccb4c6e1c6b49567504d49525e665d4e43444860615d4e3e3a44516a63 +5f59453f70b5e0efd1a774492f4570aee9fffffbca9c695b495186cefcff +fffbebc18e6f7492c5eaffffffffffffe8b88a89baf8fffffffffcc58fb7 +ffffffffffffe7fbef927b79d49e6d656e6c6f70686f776f6f6f766b826a +6a6d7175737a767476757a7b7384767a5363377388a1f9ffc9295c72e9ff +fffdeed0985d381f1c211d2f66e8c8122876f6ba5a86932d1a140e101e19 +566570bfffff54379f957ac4322a15080014281f150e6d1a4edd4541ffff +ffc14288973f2d262a2a27235f9cc5a2deffdf72eaf2fcfff5fff4d9c4db +d3b69da8ff6892d460347ffda9ff7ec9dbd7aba9aa9b7a6486b0bf716c87 +966f85737fd1c3959eb5b081a49d8a8c9f735ed1e17e587e6f797695d4e2 +53776e5b5d563c9fdb8c6c66656f93628755d28286919692807b6d5d635a +4bffb6214d4a443636b59f9cb3cddbe9dfd1c8daf5fffffffffcfaffffff +fff8ebfffffffaf5dbc4adebff6d307dd45b4f44edbe6eff465161623a2f +393b393a323036857c887e5c6e9a8c7c565d707137a5e8fffddbe8cef0e2 +f6d7d7dbe8deefecf6ebf4d1ebe0cecfc6d8c9d1bbbdc1ccccdcd7daf7e3 +ebf3f2effffdffffc7ceccc3c5d1d5cfccc4d7d8d4d1cbe2d9e2d5deece5 +ebcfd7f5e0f8dacef4e0eadfd1e5e0ebe7ccd5e0e9e4d3cad4e3e1d1caca +dae5d0bdc6e2d4b16c3339302c3313221e446c5025211b1e22232f443e2c +20252e4475a6b5babdbbbdc3cbd1d8dcdfe1e1dedad7d7d8dbe0e6f0f8fe +fffcf3e9e2dedcdbe8ebf0f4f6f7f8fafbfefef8f1ebdfd4dce0dad9ddca +b0a7abaebdafa8acacd6d1c6b7997154352f27231f231b0f1c28222c3830 +23202331272a322a22201f2918191b191617181a100e0d05000c202848a2 +bca8a3543b56837569532e1f262a37465049352a292f494c48392925303d +564f4b45312b5ca1c8d7b98f5d32182e5997d2edf4e3b2824e40303a71bd +edf8fbeddbaf795a5e7db3d9fafcf9f8f6efd3a67778aae8fcf6fdfcedb5 +7faaf2f2fcfdfdf0d3e8db7c5f5bb681524b5552585951585d5556565c51 +68505053565a585f5b595c5b60615968535a384f255d687dd8f7aa042624 +7471523f32281b0f2124262d272d53cbab001b6ce9a73b68802d36403c35 +301d535656a1f9ec34188c8059a729342b3340657d797a7ee8745bbe1e21 +fff9eb981c69843c434e5d5740295184ab8ccff7bf3991807c7f65684a34 +387399978595ff5b7ab63f1568ec99ef66aebcbc949591825f4b6d96a556 +516d7c566d5b68b8a57a8a9161121f140d19361d25abbe5f3f695d655e73 +a5a40523170c1e271c89c0735b554a5171436d36a0361c130e0e0d171412 +242922f39705302d2618179783674f4130312d2824323e46312e32231718 +191b20180f25291c1820212a3593cc451062ba403225cda359f910183b46 +1f17212321221a191f6e6573694759877866383d535c2da1e2fee4bbc2ab +d3c8d9b8b8bccbc1d2cfdcd1dcb9d4c9b7b8b1c3b4bca6a8aeb9bbcbc6c9 +e8d4dce4e2e1f5eff9f3a1a8a59c9eaaaea8a8a0b2b3afaca6bcb6beb1ba +ccc5cdb1b9d7c2dabaaed4c0cabfb1c5bfcac4a9b2bdc4bfafa6adbcbdad +a4a2b1b9a693a1bfb7985a252f251b20000e0a2f573b0e0a05080d0e1a2f +28160e131d33618f9a9a9d9a9ca2afb4bbbec1c3c1bebab7b8b9bec3cdd7 +e2e8e6e2d9cfc8c4c5c4d1d4d9dde1e2e3e4e4e5e3ded7d1c3b7bdc0bab8 +bba68a8085899789848585ada99d8f724e331516191c161b120714211d26 +332c201d222d2020271f1614121c0c0e10100e0f1212020000000000121a +3a93ac9792432a4069574a331001090e1c2e39312116161b373935261410 +18253e37322c16104186acbb9d733e13000e3977b3ced8c796673123121b +549fd0dde1d3c297644549689fc5e6e8e3e3e1dac09266669ad8ece3eae7 +daa5709ae5e5edeae6d6b8c8b8573835946135323f41484941484c444240 +45384f37393c4145434a46444544494840503f4523370f48596fc9e69800 +1a1a6a7064584335211c3e422f2d282e4fc7a7000851c989275e8235414d +4c484829443f4796eddf25046e65489f2a3e40433c525e534e50bc4e3fac +1714dfd9eb9e115573292e343e38220d366c9475b8e0a826837571745a63 +4b38376881786374dd3b609e2c0358dc8ce15a9da89f72707264412c4f7b +8c41405c6b42553f4899895f6f7b5d1932281d263d1c1a98a84a2b54454a +425a939901231d0f191d0d74ab5f494541476731541a89291e1f26261e21 +180f1d1b10df8300201f1b0e128d6e574d4c4349433f3d536c81787c867a +70747274776e66797f6e646050463e8fc1390151a92f2010b6883ee30411 +323b160b151715160e0b11605562583646766d5b2e3043471284c8e6cea6 +ab8fb1a3b799999daba1b2afbbb0ba97b2a7959692a4959d898b909b9dad +a8abcbb7bfc7c9c7dbd5dfd9d7deded7d4dae1e4e1d6dde3e6e3dce5f3ea +e7e3eef4f6f2d3f2f5f7fbd9edfaf1f8e9daf4f2f5eddee3eef5ebdddfeb +f4eee1d6e4f6edd8c5dce9f4a46a4747599071322943475f47423d39373a +59817160514a424b7ebbcbd1d7d9d7d9dbdbdbdce2e8eceff0f0edeae6e2 +e1e5ecf3f4f8fefffffffaf7e5e4e4e4e8eff7fcf8fbfcfcfffffffffeff +f5eef3f4f1f8faf7ffeeddd2bdd7eefffffffffffffff6d7b0a18f746e6d +68534f44465651535d53514c433f3a37484c4d494442474f5b667f9bbfe4 +f2f2eed1b3c5f7e9e0d28f715d4d454f554c59544a4043505e66574b4144 +505a5b575a4d3c4b7fa3a6a17d532f395292cff8fff1bf8a6647435d89c5 +fdffffffd7a77f605d7cb7eefffffffffffff0d1ad9599b4e8ffffffffff +e2b78caff9ffffffffede6cfd6df9e778c8d8cd66b797d74797a71767f7a +78757f757a75857977867f7b80897e7d89797f7e9abb5d664e5a85a9da8d +b33963b6fcfffef2e4ba8f5e2c2a191e123d8f9e7324198de7f282858438 +02100c131b0f428472c2ffdf6866857a9fdb4a152818010f25181c0b7437 +29bf614fdd61cd89577e9f50252a242b33297892af66607e8bafd6f9f6ff +ffe3d1c8b8d7c4a39a92ff6978dea75ea2826e6e69939ed09fa0a296765e +8adcff6b64855c736767c0c8d2959facb874a09b8c779d8f57a9e4ff556a +60665b6ed9ff5f5e6a6e4a4f3e79c6a5559e5a748c77cc85b59874969795 +817d755f5e6044f2f82e335bc4c832eeb8a6a1ccd4eeffc7cfcdcceaeef4 +f7fff8edeffdffffecf2fcfffff6d3caa9cdff9239cfffee2c759da54dff +4e40605b402d333937342f333b23202c1b291f17161e283e362128efdcfd +ffbfe1e1d0e1e1d9edeadedeeeffe2c3dad3c3edd0d5d8e2e1e9f8fff3fb +fefff8f5ffe9f6f5f5f5fff0fef5c5cccfc8c5cbd2d5d1c6cfd5d8d5ced9 +e6e0ddd9e3e9ebe7c8e7eaecf0cee2efe4ebdccde5e3e7dfd0d5e0e7dbcd +d0dce2dccfc4d2e7dec9b5ccdae4935a37343f735617102a3149312c2420 +1c1f3d655544342d263064a5b6bec4c6c7c9cacccdd1d7dde1e4e5e5e4e1 +ddd9d7dbe1e8edf1f7fbfbf8f2efdddcdcdce0e7eff6f8fbfcfafafdfefb +f0f1e6e0e5e6e3e5dad0d8bda8988299b0c9dce3dae2c7b6a0815c52432c +2a2d2c1a180f13231f212e2726211b17120f1c1d1b140a07070b0d10273f +5c7d87837d6043568a7f76764f42312623313d384842382e2d38454d4136 +2c2f3b454743463928376b8f928d653b17213b7bb8e1ebdaa8734e2f2b43 +6eaae2f5f8efc79973544f6ca5d9f1fbfcfdfcf3debf9d8588a3d7fdfbf3 +fafdd3a87da0eafdf8fcfcdbd0babfc6865a6b6c6bb74d5d625b5f635a60 +6661605d655b605b6b5f5c6b6460656f64636f5e6460789b43523a446589 +bf72930d1f577b694735321f1812153126291a39787d54090a83dade6568 +743b203b3b3c30163e7558a4f9c8484772657ebd401c3d3f3d597a77817c +f69838a03c32d558b466315d8a4b364d525a5538717a91484864636d6770 +6268613f32425fa1a791867fff5a5ebe843f8b715e5c4e767fb5888c897d +5d4571c3e6514b6b425a4f4fa9b1b77a8a886f0b1b10120732351d83c1f6 +3a534b524350ace218101a240f211f60aa8a428b3d536a56b266834c0c1a +11110e171a111d2c19cfd911163ea6aa14d29d77464b333e6d212d261625 +1c1c23281609091b4a40191d222221251b2c2b6fd76b18b2f9d40c54818d +37eb1a093a3d25141a201e1c171d230d0a1905160c05040a0c211b0c1eeb +d6f1eea0bfbfb6c7c4bacecbc1c1d1e3c8a9c2bbacd6b9bec1cdccd4e3ec +e0e8edeee7e4fadae7e6e7e9fae4f2e99fa6a8a19ea4abaeada2aab0b3b0 +a9b3c3bcb9b6c3c9cdc9aac9ccced0aec2cfc4cbbcadc4c2c4bcadb2bbc2 +b7a9a9b5beb8a99eaabcb5a091aabbcb7f4a2a263061430400161c341a15 +0e0a070a28503f2f221d181f538e9b9ea4a5a6a8aeafb0b3b9bfc1c4c5c5 +c5c2c0bcbec2cbd2d3d7dde1e1dedbd8c6c5c5c5cbd2dae0e0e3e2e1e0e1 +e1dfd3d2c5bdc0c1bcbdb1a7ae958070587087a0b3bab5bea69a8f745145 +36201f242413130b10222020281e1d18110d08051315140e060305020000 +0f28476a75726b4e2f4275695e5d342414090715211d2e2a201616202f37 +2c23191c26302f2b2e210f1e50747772491f00051c5c98c1cbba89543213 +0f28538dc5d9dbd3ad7e593a35538fc4dce6e6e6e6ddc8a9866e748fc5ea +e8e0e7eac0956a8dd7eae5eae8c3b89da0a762384a4b4c9a33474d474e51 +484b504b48454c424742544847564f4b50584d4a564349465f842a39222f +567aae6184001c557568594b40271c1e324d2f2b1d3872744f000068bac3 +536075442b4b4d524b26325e4999edba393354486bb53f26504e3b485b4f +554ec86f1b8e3424b139b06a264a79382335353a341954607930304b4a57 +5c6a5e65604036415189876d635edd3b45a7712d7b614f4e43686b9a6667 +6a5f3e2653a5cd3a375a3146373389919a5f6f7269102c2521133a351270 +abe129413639293699d6120e1b2309140d4a9577317d354a6045994a6c3f +0d2529281f221f11171f09bbc50006309ba00cc788654150425280354444 +3f5b5d6570796c60616f9f936a6f76726e664d4d396fcd5c07a2e9c50043 +6c751fd60d022f331c0d131917120d121902000b00080000000001130a00 +03cebcd9d88ba6a393a4a49bafaca1a1b1c3a788a0998ab4979ca2aeadb5 +c6cfc2cacfd0c9c6ddbdcac9cccfe0cad8cfd2d6dddfd9d3dae6e3dfd4dd +e7e6e5d7fcf3e6e2e6f6f6f3ead6ffeefbf5cef6f5f7efd4eaf2f2f5e3dd +e2f0f3e7dedfeaf0e7d6d8eaf3ead2ceece9d6945f33435daea94c243d31 +3e3f41413a32405d69635c574b43679fc6ced6dde0e4e3e2dcdadbdee2e6 +eaedf2f6fbfbf6ede6e1e9edf4fafdfdfcfafffff9f0e9e4e3e3e2eaf3fa +fefffffffffffffffffdf3edf0e7f8faffffd8cac1c0b8c1dcffffffffff +ffffffffffffe9cbbca5999f92898c796c71757c837c8384858794abc9df +e4ebfffef6f3e0d2d4c5d2e6d69a765e453e4249505959513e40444d5b5f +56493d45525f655e4f423e5668768273523e38619dd8e9e9bd8e65443e57 +7cb6efffffefcba17357617ba9ddfffffffffffbdccdb39d95a5ccefffff +ffffffffdba09bbef6ffffffffffe2c7deb4766c6a7c828574cb667c7b80 +858b7c79808487827e8787918d96917e8a87858888888a868c9286946868 +658491a8d01abe4060c0fffffbe8d9a387602e27171e173aafa77569617a +6071607489660012081319133b8296635e736c7146684ab5422517171014 +28171d016a3e2af6403d742a3c3b488b8955312f1f1e211b6e9bd44659af +cac2eeffffffffedb6a189b1b19fa189ff9786cfdc1d4c4859be81a293ff +b6b5a9987e5566b9ff4d70dcc63c41a0ecb4c68fa2afc977a19f977e9787 +56ade9ff3f4241976135caff6b61614a4b3d4171dcbbcfffbe358b67d19d +99e46f8ca2958e7f735e60634ca5ff3b2079ffff527cb4a3a4becfe4ffcf +d1cccdf9fff8eef6f6e9f0f3ffffe3ebf2ecf5f8d8d2b7d5ffbe47a7ffff +367f988d55de8a385b5f492d2c34332f2a2f322c332f292f293b3a353735 +35215bfff0ffffc9c5e3afc8b0f5d3e6e2d9d2ecdefaeae3f2d6f0f2e4f7 +fffef5fee8fffff1f4f6fee9fff9fbf6fff2ffffc3c7ced0cac4cad6d5d1 +c6cfd9d8d7caefe9dcd8dbebebe8dfcbf7e3f0eac3ebe8eae2c7dbe3e4e7 +d5cfd4e2e4d8cfd0dae0d5c4c6d7e0d7c0bbdbd9c78754232940938e330b +241828292828211925424f48413c2f284d89b1b9c3cad0d4d4d3cecfd0d3 +d7dbdfe2e9edf2f2ece3dbd6e2e6edf3f6f6f4f2fdf9f1e8e1dcdbdddee6 +eff6fafdfdfcfffffffffffff6edede1eae3e4d8a58f8076676a7ca69e95 +a2a4a9c0c1adabad8d6e5f45393f30292e1d12171d242b24272624252d42 +5e7074788a887e7b6960676177958f5b3e3026282c353e494b453232343b +474a403328303d4a50493b2e2a4254626e5f3e2a204985c0d2d2a6774e2d +2740649ed7ecf4dab68c5e424b6795c9f9f7f5fcfae9c7b69e8c869ac3e8 +fffffefdf8f1c78e8aafe7fdf8fdfdf4ceb2c599594e49595f6251a9465e +5f656c7266636b6f726a646c6b75717a75626e6b696c6c6c6e6b6d736476 +5054516b748bbb059e0b0b4d755b3f2d32141417172e252c1c349785544f +506f525d455c7b6a1c3c353c311c37737c45465b4c5533532797372a2a39 +42567d788275f2a539d71e21671f241d22686f4e43534d4b3c286b8cbc27 +2f767f62787c6a5a453b345272b1a9918d75fd886cafb900323547ac6685 +74f99fa1907f653c4fa2f13557c3b0262b8bd89dab74888986141a121e10 +28291a84c6f522262a814b19a4df2c1c1a0914112256bd9ebafaa1146946 +b77e679a08121e141915140c1d2d2180f71c035cf5f7355e936b423b2e37 +74282e221533312118201e10192153402026261d243227393775d9982287 +fafa115b7e783fbf590433412e14131b1c18131b1b181f1d151d172b2921 +1f1b1e0f51fae9f4f5ada5c495ae93d6b4c7c5bcb5cfc4e0d2cbdabed8db +cde0f3e9e0e9d5f2f0dee3e5edd8f3ebf0edf9e9fffa9ca0a7a9a39da6b2 +b0aca1aab6b5b4a7ccc5b9b5bbcbcdcac1add9c5d0caa3cbc8cac0a5bac2 +c1c4b2acafbdbdb1a8a9b6bcaf9e9eafb8af9c9abdbfb07442131a30827d +1f001004131412120b03102d38332e2b21173c72969aa3a9afb3b7b6b1b1 +b2b5b7bbbfc2caced5d5d3cac5c0c8ccd3d9dcdcdddbe6e2dad1ccc7c6c5 +c3c9d2d9dde0e3e1e8e8e8e5e7e5dbd1ccbdc7c1c3b8867162594c4f6491 +8b8086848ca4a5939297785c4d352931251d2412070c11181f181c1c1b1c +263c58655e5d706e6663534850475c776f381b0e0a10141c2630312b1a18 +1b232e2f281b131d28353b342316122a3b495546230f062f69a4b3b38657 +2e0d08214882bdd0d7bd99714327334e7db1e3e1e1e8e5d3aa9783726f86 +b2d8efefede9e3d8ae76769cd4eae4e6e4dab395a77b392c28394146358e +2d464950565c4f4b5054554e4951535d5b64604d59565356565456505157 +495c363b3957647baa0091031052745e50423c1a1922344a2e2f22368d79 +4b423c53354232527b73274a48524d2b2b5c6f3b3c4f3d401536148d3530 +394543485e4f5646c27a1cc514134501201d15545e3b2d39302c1d0a4c6d +a00b17626c526c756a6053473445538b856e6a54dd6b5398a6002126399e +5b7760df7f7e7161461d2f83d71d43af9b0f136eb77d8e596f747e172b25 +2d1b312a1072b0e11418186a330191d0231718050d040e41a98ca9ed990d +5f359e62508d091d352a2b211a0e1721116ee60a004ee9ec2d53805c3f41 +3d4a863a433d3b646b645e68695e666a9c88666d6f65686d55574676cd85 +1278ecec084f6d6328ab4b002736270f0e1616100b12130f16130a110b1e +1f18150e0c0036ddcfdcde978ea8748d73b795a8a59c95afa3bfb0a9b89c +b6b9aec1d4cac1cab7d4d2c0c5c7cfbad6ced4d0dccce3ddd2d2dbe4ded3 +d6e3e4e7d4dbe6e9edd6e2fceceae1e9fdf3fbdce3f9f2fae2ddf2f0f7f0 +d4e8eff6eee1dce7f3eee1d8e3f1ede0d6dceff3e6cfd8e3e1b5805f2c39 +438baf573a3a35353941443831374f4f4d504f49669cbfc6ced6dce4e8e8 +eae7e3e0dededfe1e4ecf9fffffffcf7e5e3e1e2e7f0fafff9fdffffffff +fffeefe9e3dcdde5eff6f2f9fffff9f9fbfef9fcfffcffffffffffffffff +e5d5ccd6c5c6c8dae0e1f4fffbf7fff3e3ebf6f7eaecf6ffefe3ede9ecf2 +fafdfaf6f1efece6f6f0f1fffffffad39a6c55403c475557615e4c383642 +4a565f5b4e4644445e5f5b5043404851605e61604b395990afcbb8956b4b +384e70a6def2efe1ba8a5851587bb5eafffffffffff0caa68d92acc8e8fc +fffffffffff6eeddad90b0e5ffffffffffffd5a99aa57b62727877757982 +7ccd7d6e72817c887f7e85898a8084a4918e715d599d8d91897f9291859a +95918c9d928b8f8f8db0ea2795375dfcfffffde5d39584653f1d181f1f25 +91e2ff6a7f6b65729685827b0d1d0f1617153d7e8e686b61878367d88ba8 +5d13131e17172a181d005b3a25ff3c322b66fedf6ee186522f282e312f27 +638fe661cdfddff8fffffffcf0c7ad7a548ba8a8ab8bff9e7593f425397d +ffffffd8a5daaab6b096825c67a7ff80e5ffff6e58d5d08cbc939fa8c977 +9ba58f7a9a9f5d7dd4ff4b2061f4ff6bb7ff875d5e836350617dd6d6acff +ff465e909f73a4ff6f8b8a948c7e75655f5f5c6dff6b2a41ffffe93ea099 +b2a6babfd0c4c5c6cdeaf2eeecedebe6e2cbd4d5f3ffffe6e7eccdb9a1c3 +e2c855bfb0f53a7bc47d66a0d337496954322b31322e293036322e2b3a36 +2b352b273e2a3e2d8dffe6e3ffe4d8eaf1ede2e1f9d5edfbceefd5dbdcf7 +d8e6edf2e7eae7f2e5ffefffffeefaf9f3ebfef6fceef2e1f0f7c3c3ccd5 +cfc4c6d3d6d9c6cdd8dbdfc9d8f2e2e0d6def2e8f0d1d8eee7efd7d2e5e3 +eae3c5d9e1e8e0d3ced9e4dfd2c9d3e1dbcec3c6d9ddd0bbc8d4d5aa7852 +151c2870953e21211f1f20282b1f161c35343235332e4c83aab1bbc3ccd5 +d9dadfdcd8d5d3d3d4d6dbe3f0fafcf8f1ecdedcdadbe0e9f2f8f1f5f9fc +fcfaf7f6e7e3dbd6d7dfeaf1edf7fffffdfcfffffffffff1ebf0e9e3dad7 +d1b78f796a756c707281868495a2968f938571777f80777b879282788280 +81878d8e89837e7c7d7887817f939eb29f8458362a202434454a52513f2c +2a363b474f493d323030494a463b2e2b343d4c4a4d4c3725457c9ab3a07d +54342137598fc7dbd7c9a275474247679dd2f2faf9f5f4debb9a858698b3 +d4ecf8fefffffff1e6d2a181a0d5f2f6fdfdfbf2c496858c614551555351 +525d57a95b4e5465627069687074756b6a8a757455433d8271766d657677 +6a7f76726c827d7779767096d915740000766c503c2a3610161b2824282e +261f7ac1f7506f5d56617c6d747e264136392b1d396f724c554b6a6753c3 +68884f16253c3f517a77806de7a534f61c171b59eac34abe6b4a3e4a5756 +422c5e80cd388ba6787f79695a44352d59606aacac999474fa8f5b73cf04 +1f6af5efebbb84bc939f977d69434e90f768ccfaf25840c0b975a3788484 +8f1d1616190c263a1e54b1e42b0447defc5397e65121214831294563b7b9 +95f4e3253c70875574e70b160b15161214101a262e48f14c0d24f4f6cc22 +846a5f342f293e373c383142413a3a3b3a383828373c5c87694241504141 +3d76afa4309f9adf1354ae6e507fa3062249391912181b1a151c231f1b1a +28251a241a152813291d83fedfd7facabaccd6d3c5c2dab6d0deb1d2bbc1 +c4dfc0ced5dad0d3d2ddd0f7dceef6dbe9e8e2daefe8f1e5e9d8e7ee9c9c +a5aea89da2afb1b4a1a8b5b8bca6b4cebfbdb6bed4cad2b3bad0c7cfb7b2 +c5c3c8c1a4b8bec5bdb0a9b4bdb8aba2afbdb5a89b9fb2b6ab98a7b7bb94 +633f050c175f842a0d0d0a0a0a12150901071e1f1f24251d3b6d8f929ba2 +abb6bcbdc1bebab7b3b3b4b6bcc4d3dde3dfdbd6c4c2c0c1c6cfdbe1dade +e2e5e7e5e2e1d0cbc4bebfc9d4dbd9e2ebebe6e7eaede9e9eaddd6dbd4cf +c5c4bea4806a5d644e4d4f5f646375827a74796a5960696c6469747e6e64 +6e6b6d73797b77716c67615769636476849884663814070000132c373f3e +2c16142026303631231715173437312619161c25343234331e0c2a617f99 +846135150117396fa8bcbbad885a2b252b4c83b8dbe3e4dfdfc8a6847070 +7f96bbd3e1eaecededded3be8b6a87bee2e5eceae4d9a878666d40233035 +313135423c8f42373c4f4b5851505557584e4f715d5b3f2c286d5c61574e +5e5e4f645a565367625e62625e85c501650000816e544f3d3f1319284440 +353330236caeea43584339476b6373832d4d474d442a2d5866414a3e5c52 +38a6557d4c1b314741455d4f543fb67917e511060039e3c23caa5a37272f +3937260e4061ae1c759569747167615046374f47438187787454db72425c +bc000e5be7e4e0ad73a4747f795f4a242f71dc4eb6e6de4128a39955845b +696e831d272a2717313e15429bd0200038c9e43b82d547191c4226182f4c +a3a785e7db1e32616f3b5ed80b1f1e2a261f1b13151d1f36e03a0016e9eb +c4166f58573436344840464849656b696c6f6e6b6957646889b599746f77 +5b4d3d6c9c8e1e908cd20e4da0593b6c9500133c32150e1415130e151c18 +14121e1b101a120b1d05160668e1c5bfe2b3a2b0b8b2a5a3bb97b0be91b2 +9aa0a2bd9eacb3b8b1b4b3beb1d8bed0d8bdcbcac4bcd2cbd5c8ccbbcad1 +d4d3d8e1e1dad6dae4e6dfdde2ebede5d2eefcf1e6def7fcf5f5d0f4f2ee +ffdae3eff7ffdbd9e9f0f3e8dee0ebf0e9dfdce9ebeee2d6e7f1eadbc7e7 +e5ddafa85b3b313b677951353d3b3b46524c3f3b3f44414244486eabc3cb +d2d6d7dce2e3ececebeae8e5e3e2dde0e5edf6fffffffffdf3eae5e3e5e6 +f1f5fafefffffffffffffffffbf1e8e2e8e6edf4fafffffdffffffffffff +fffffffffdfdfffff7f4f4ede0eaf7f0dfc8c5c3c9cfd1deeedecac5c2c5 +b5bfedfefffffdf9fbfffffffff6fffff8dea385634a5665637e86686455 +45424a50565f6057483c414e5d65594b3c3e4e5d615f5e4c3f48668a958a +7e4d303e4b86c1dee4d6a573553e486fb0e1ffffffffffe2b495827f99c1 +e4fffffffffffffffae8bcaca0b0dbfdfffffffffff4d3a088b0e4a66368 +74717e71688272af6d6f7c7b6d7873788080827e82ca902e295448a98078 +928e8f9585929594877d8d888394949ffaffeb4aaeffffffffe2d28c8466 +3225261318398ae9ff1c6248604d637d6a58071717211e193d8c9362ddba +3e5655cd598a4b1c17170b0e1d121c03634c24e977282dddffff55e0947c +3636373b382b6f9bf691ebd9f7ffffffffe9aeb784553b78a2aeb192ffc2 +96a6e0382796ffffffbebbc4b5a3b8a280536898f5c9c9ffffb159e9da7e +b89e9aa2c27993a589849796657febd11c2557d9ffb3a5dde8eecefff2d6 +b9dbbdf1b4ffff7352baab8399ff70907f9084817a705c5c6158ffaf1659 +c5e47a339d96af94a2ae9a9d9c9597a6bdc9d1bfc1ccccd5bdb3a49fa69e +b0a9a3b09994b6db7e583a447b7851386452eb423f5f5b382e31312f2c32 +2d252d30272a34393337242d3919daf9f4e6fff7dcd6f1e3e1dbe5e1dfb8 +eae6fbfce5e7f9d7f0edf1fbf7ffdff4f7faffeefffcf7fcfdfff2efffff +fcfec5c4c9d2d1cac8ccd6d8d1cfd5dee0d8c8e4f2e7dbd3ecf1eaeac5e9 +e7e3f7d0d6e2eaf2cccadbe2e5dad0d2dce1dad0cedbdcdaccbecfd9d2c4 +b4d8dad6a99d461f15204d5f371b2422222d39332622242926272a2e5492 +aeb6bfc3c7cdd3d5e1e1e0dfdddad8d7d4d7dce4ecf5f9fcfcf6ece3dedc +dddee9edf2f6f8f8f7f6fdfcf9f6eee5dcd6dddbe2ecf2f8f9f6fbfefcfb +f7f4f9f2fae9e6e3eae2d2cbc4baaab1baaf987b726a686b66707b6d5d59 +595e525e8fa4b2aca5a1a3a9b1b7c1aebbb9ad955e4428172d434c6f7d5e +53422f2c343b414a4b42342a303e4e554736272939484d4b4a382b345276 +817669381b293671acc9cfc1905e4029335ba2d6fdfcfaf8e3c3977a686d +8cb9dffff6fafbfcfdfaead8ac9e91a5d3f6fefbfdfdfee7c490779dd08e +464a524a574a3f5b4d8c4b505e5f53605d626c6c6e6a6ab276160e3b2d90 +655f7876757d6b7879786d677d786d7b7786eefbc603366d614638293b10 +151a1b2f3825243875cbf802513a503b49655b561932353b2b1d377d7746 +c7a4203b41b8366a3e1d252f283b696e7871edb72ec5570d19ccf0f434bd +7971425058543e256184d3558c637472685b4a391d5a6e6f6ca3a89d9677 +efb37c86bb170d83f3faf3a19aa69c8c9f8765384d7fdaafaef8f9983fd1 +c1659d837f7e91280e1613161f2d2254c7b2000840c4f09f8bbdbcbe99db +c8b59fc3a1d69ff7f755319d95696cd2111e06150e11151712203131f490 +003ca9c85f1d91817c4844473943453d373e4e5a645456666b7c6b645850 +5044555358756d7394b85737272e524f3f2b4f31bd11153e3e1f15181a1b +181f1c141c22161c262b2226101a280ad0f2eadafce1c2bbd8c8c4bec8c4 +c29bd0cce1e2cbcde1bfd8d5dae4e0eccadfe2e5eedbeeebe6ebecf3e4e4 +f8f7f1f39e9da2abada6a3a7b1b3aeacb2bbbdb5a4c0cfc4bbb3ced3cccc +a7cbc7c3d4adb4c0c8d0aba9b8bfc0b5abadb5bab3a9a9b6b5b5a598a9b3 +aea294b9beba8f873511070f3c4e260a100e0e19231d100c0f1413161b1d +437c93979fa2a6aeb6bac3c3c2c1bdbab8b7b5b8bfc7d3dce3e6e2dcd2c9 +c4c2c6c7d2d6dbdfe3e3e2e5f3f3f0ede5d9cec6cbc9ced5dbdedfe3f2fa +faf8f3eff3eaeddbd6d2d8d1c2b9ad9f8e949e937a5d544c484b464f5c4d +3e3c3b3f323d6b7f8c867f7b7d838b929a8895968d743f260a000f272d50 +5e434133211e262a3037382d1c121624313b2f211214243335333220121b +395d685d4e1d000c17528daab0a2713f230c184085bae3e3e2e1ceaf8567 +575979a4cbece5e8e9e6e6e1d0be93847a91c0e6f0edf1efecd4ad76597c +ad6a24262f29382b213e30702f3444473a48454a5351534f509a5f000025 +187a5049615e5c63505d6160544f635f56676572d6e4b600407a684d4b3b +42121b27374a462f323d64b3ea003d203623385956571d393f483c262966 +6b3bbc991528269d225f3821303b2e344d474f44bc8b13b54c0000aee9f0 +25a9665d2a353b37240b4665b3397a576a6a676158462455564a3f78867f +7859d196636fa8040074e5efe893898e7e6c816a471a2f61bf9699e3e682 +28b5a3467f66646882251f2a21212b321a43b19e000032b1da8674a8afb2 +91d2baa288ab8cc38eeaee4d288d7d4e55c40f2617291e1d1d1b0f182522 +e37e002e9ebd560f7766693b3c42323a3c3939475e6b7968667374826d67 +5c55594e5e565263525278a246281923504b311a3c20ae03052f361a1013 +14141118140c14190e131d221b1e050b1400b5d6d1c2e6caaba0baaaa49e +a8a4a27bafabc0c1aaacbf9db6b3bbc5c1cdabc0c3c6d0bdd0cdc8cdced4 +c7c6dad9d3d5d7d5d6dde2e1d9d3e4e1ebe1e0edecf6e4d9ffeef1e2e3fe +f0fcebdbf3f1f9eedaf2eaf1fdd8e5e4f3ede2dce4f0f1e9d5e0e5f5ebd5 +e1ecf5eccbc9e2e7bb9063984d223b443649373a3c45504c413c3c4b4b43 +3e3f6aadd0dae0ded8d6d9dbdee3eaf0f3f2efece7e3dfe0e6eef5f8fafc +fffffcf6f0ebe2e2e3e4e8eff7fdfdfcfffffffffffffffbf4ede2e2e9eb +eff8f5fffffffffffffffffefffffffffffffbf7f9fcffffffffffffffff +fffffffffefffffffffffffff9f5eee7ded4b7948d766a7882a0bed5d7bd +9676544e44504f505f69605344464a56615e4d3a3b485863655c50484750 +656e6560574539638ab6c9c0907355353463a7e8fffffff3ceab8a7a8396 +bddbfffffffffffffffcedd4b9a5a3a8d6f7ffffffffffffffd5a493c5f2 +d8bef7b98474747677797c7286b1796f5f6d818072757f808e99d59c4919 +467459dc7b5da6b6909f98849b7f9587727d85888a9affffee68d3fffffb +f9d9cb847f61352419140f3472b9ff1a2330c5bb5a878b5417192331281c +32778a6fffff705376a44699600c1d1118191e1116035f4f38b96f1991fd +ffff69d2bfb338463e46462868aaffb5ccf8ffffffffedc5bf8c4938366d +93a9b59bf2dd84b6ca4b16a6ffffff7199b4a2b2aab79f6c85a0d6f6bbab +ffad6ce27583aca29ca9c9838da194838fa47975eebd4c616683aeaab741 +7992544d4039393639396fd6da7e8784438164ef877a8f878d85746e5b62 +5945eeb33b574744473198a8bf9c78838178647289868279887c8c9a889e +717f786c8065716e717f6f6ea6da83382f50353e2b63b445ed54455a5e3b +3130302f2d352f272a372c352f302f2031342732fff0eaf0f6ffcae6cee5 +e5ccddf5d7dac7f7f4e6f8fcffeaf0f2f5f9f7fff3edffe9f8f0fff8f6fe +eafbfeeef7f9eef7c8c6c7ced2d1cbc5d6d3ddd3d3e0dfe9dacffce4e6d7 +d8f3e5f1e0d0e8e7efe4cde5dde4eec9d7d6e5dfd4ced5e1e2dbc7d2d6e1 +d5bdc7d2dbd6b8bad7e0b7894e7e3308212a1c2f1d21232c373328232330 +302824255094bbc5cdcec9c9cbcdd3d8dfe5e8e7e4e1dedad6d7dce4eaed +f3f5f8f8f5efe8e3dadadbdce0e7eff5f3f4f5fafdfdfbfbf9eee7e0d5d3 +dadfe5efebf8f9f5fbf9fefdfffcfffffefaeaece0d8d4d3d6ccc8c8c4c6 +b8bbd1c2c5b3aabbbbbfd0c4c3c0bcb8b4ada49e8a6a634c3f4d5a7999b3 +bca58568483f2f363536434d4538292d344250503f2c2933434e50473c34 +333c515a514c4331244e75a1b4ab7b5e40201f4e92d3f9fcfde3bd977462 +687ba4c5f0fcfdfffefffbf3e1c7aa96949ac6e8fbfbfefffcfef8cb9b88 +b9e4c9aee3a16853504f4e50534b628d564d404f66685c616b6e7c87c186 +3303305e43c6654790a07a8a836f826680776671706e6f84fef7c51b5165 +573b34243c0c10131e2e2c2b243d639ff8021221b5a94070784d1d293540 +2c1a2b676e52f8fa5438658f2379510c2a252a3c64676c68e4b641944f00 +78e8faf84cb3a6a73a534e53441a4c7ed75e586f70725648392e5c636171 +759d9d9a967ce1ce6a96a52a0093f8faf3537895889b8f9981516885b8da +9f8fea9250c85a6891877e879e380d121b1315373246ca9e2e464e709e9a +a326586b2a231c1d23211f1e5cc3c261696a316c3bb12c0d1a0e14120c13 +1023271bca931e3a2b282c1e919d9b67353b3f3d303d4f4a4138483c495a +506f4b5d55465234403f4c6560618eb85c171c3909141b5a9f24bf231a34 +40221819191b1b2421191c2a1e2721221e0f21241b26fce6e0e1e4f2b2cc +b5cac8afc0d8babdaddddaccdee2ecd2d8dadee2e0eeded8f6d4e5ddefe7 +e5edd9ecefe0e9ebe0e9a19fa0a7aeada6a0b1aebab0b0bdbcc6b6abd9c1 +c6b7bad5c7d3c2b0c8c4ccc1abc3bbc2cda8b4b3c0baafa9aebabbb4a2ad +afbcae97a2adb8b19799b9c39a6f3b6f240012190b1e0c0d0f18211d120d +0d1b1f1715143f7ea0a8adadaaa9b0b2b5bac1c7c8c7c4c1bfbbb9bac3cb +d4d7d9dbdededbd5d1ccc3c3c4c5cbd2dae2e7e9ebf0f3f1edede9ded6cf +c2c0c7d1e3f2ecfaf9f4faf5f6f2f3edefefeeeadcdbcfc4c1bfbfb4adac +a6a69797aea0a39088969698a89997948f8b867f767261443d261c2b3758 +7c97a18b6b4e302a1e292829353f342718191d2a36352411111e2e393b32 +241c1b24384138332a1809335884978c5c3f2101002f75b6dee1e3c9a37e +5c4a536690b0dde8eaeaebedece4d1b6977f7d80add1e5e7edefeef2edbf +8a74a1c9a88abe7b43302e303032332a426d383124354b4e44495356666f +a96f1c0019492eb150307988626f68546c526b604e595d5d5c6fe6dfb315 +5b7560464635420e162138493d3935445086ea00000a9c912f6271471b29 +3945371b1950624af0ef49274b740f6c4c0e333034384a42453eb58b2682 +440059c9f1f43c9e9291223934392b003465be4a4965686f5b5045355751 +3f464a737b7b795fc3b1517f92170082eaefe84867806d7c747f65334a67 +9ec2897ad87d3aad3d4a7369626e8b321a262a1f223d2c36b48a243d425f +87818b11475c1e170c080b06080b4bb5b85b5f5b195125a229132a1f251f +15180d1c1c0dba84102c1f1d230f757f8555252c2f2b1b2b43403d36483a +414e415b34443f334326312d324235356c9f4b080e310a150e498e15b215 +0a27361b11111112111a160e1321151e181917071414050ce1cbc7caceda +9ab197aca88fa0b89a9d8cbcb9abbdc1cab0b6b8bec3c1cfbfb9d7b5c7bf +d1c9c7cfbbcdd2c3cccec3ccddddcfe2dde3e1d2e2dfeee9d7e9f9e7f5ce +f3fdecede0ecfff0fcdcd5f8f2f2e5e0e6f5f8eaddd9eef2eadcdae7f0ee +ded6dff4f4dfd8e1f4eae7c6d8ead2ad4d72a26e3538333b403f3d424945 +3a373f423e47423c52a1c8dfe1e4eae3e1dfd7d9dcdfe4e9eff2f6f4f0ea +e5e3e3e4eceff5fbfffffffffffcf5eee7e4e2e1e6e8eef4f9ffffffffff +fffffffffef8e5dddadce6f0f7f8fffffffffffffffffffffffffffffffd +f8f7f3eeece8e5e6f1f1eae2d9cdc3bab5b6b1aaa49ea1aab5c3d9eeffff +fff6d9a976594c45474e63616669604f4a4e54636b5d4336404f5b646457 +49464c526267695a413b547496a1937b5644373e81bff3fff4d8ac8a716f +6d9dcfeafffffffffffffde3c9bca1a2a7b8d7f2ffffffffffffffffe1bc +9cb5d0e4ffffe0b5fdcd96787e777c7c797578ae6f3f45313f50294b6d73 +4b587f541733645757ad8a6f50362b2b47253131272f1f293429361a63ff +d550bcfffffafaddd37c95683521171200216390972f1663dfd9528a8683 +816d727e6e7c8d89a391ffff9b2d89726c8b62111c1217241f0c19054764 +3e7e7b16bfffebff4b9f92928177717e7b579db5bcc9f4fffffffbecbdb1 +d377432d2c669faaaca3d8f08897a25d679b92839e5f99b5a6b5aed1d3ca +d0ac5aa35c60617675595c99baa5a0aeb7aa8b9f918b949c7b56cadebd65 +776c65779c48394e5c716174614c736d674e6268716f5acb69f0e1748689 +8e867e6c5c636246bdd633313c658216e498c0d6b6827e8c787083869299 +77b9b7a6b8d181c2b6d6b997a088afaab4b2b7d1b4378dffcc493774b13e +d4673f5b604f312d352a2b332b2d2e2c2e302f2e302a312c2842fdeff2f6 +e6ffd4d5e8faf5f0eef9d9e5dfd4eef4eedbece4c1dde6ddffdfe1dae3ec +fed3ded9e4feebfff0e8e2fff1f9cdcdbfd2cfd5d3c4d4d1e1dccadcecda +ebc4e8f2e1e2d5e1f6e5f1d1caeee8e8d8d3d9e8eadccfcbe0e4dccecbd8 +e1e0d0c8d0e2dec7bec7dad2d3b6cee4cda63b5b8b571e211c2426252429 +332f24212929242d28223888b2caced4dbd6d3d4ccced1d4d9dee4e7edeb +e7e1dbd9d8d9e5e8eef4f8fafaf9f9f4ede6dfdcdadbe5e9edf2f7fafdfd +fcfbfafbfaf5efebded8d1d1d9e3eaedfbfbfcfdfdfdfdfcfdfcfcfcf8f3 +ece8dfdbd5cfcbc5c1bdbeb9b4afa8a098949196938c888285919fb1c7dc +f0faf1e1c2915c3e2f25252e4646494c412e292f3547524731283241494f +50433532383e4e5355462d274060818c7e66412f22296caadeeadfc39775 +57545487bbd9f9fbfdfdfefceed3b9ab8e8f96abcbebfbfffffffffcfcf3 +d0ad92adc9dcfffcd3a7ebb77c5a5b505353534f558a4d1e261424381336 +5b623a476f4407235446469c795f40261b1b37151e201724182123121b01 +55f6a8003662503f3e324a0521151d2c2d2e21375e7b80190654cfc73970 +70757d6e747f687182798774f9f88013795e4b6b53112923213e5d5c655f +c2c342595b00a5f3d4f731878082726c6b7a75436d68524d707a6e58443d +2845a27a73747198ae9c897ec4e06e777d3c4e888070834178968e9d90b1 +b4acb18f3a853d41425a563d3e7c9d88818c93670f101917172d2d22a6c2 +a14c615b596b8c341e2e3a5042594d385b54563c4b4d56584ab745b7890b +1613151015100e222e1c97b5131420496700d6879da77d47495d4f4a5d5d +676f4f8d7f6f8aae67aa9eb9956e77639092a3a19fb18f167af7a01f266d +9e1da6330f31403419171f181b251d212222222423201f1c23211e38f3e4 +e4e6d6f9bebdcedfd8d3d1dcbcc8c5bad4dad4c1d2caa7c5cfc6e8c8cac3 +ced7ebc0cbc6d3eddafbdfd7d1efe0e8a9a99baeaab0ae9fb1aebeb9a7b9 +c9b7c8a1c8d2c3c4b7c3d8c7d1b1aacbc5c4b6b1b7c6c7b9aca8bbbfb5a7 +a4b1b8b9aba3a9bcb7a199a2b5aeb094abc2ad89274d7d470e110c121514 +10151c180d0a1213131c191127729aadaeb3bcb6b8b8aeb0b3b6b9bec4c7 +cecccac4c2c0c2c3cbced4dadee0e3e2e2ddd6cfcac7c5c3c9cad1d9dee4 +e9ebedeff1f2f2eeeae5d8d2cccdd3dde4e7f1f1f0f1f0f1f1f3f8fafaf6 +f1e9ded7cbc5bbb2aca59f9da19e9a928a8178706d706d66615b5d697a8d +a3b8cfd9d0c2a37545291d1619213635373a2f1d181d23323c30190e1827 +333a382b1d1a2026363b3d2e150f2747667163492412030a4d8bc1cdc4a8 +7c5a403f3e70a2bfdfe0e3e5e8e7dbc3aa9b7d7e849abbdbeff2f3f1efea +ebe0bc9a86a2b9c9e6e0b182c59257363b3337352f282f662a000700091e +002147502a35582d000c3d3232886548290d02011d000d100712050e1102 +0a003bde95003d6e5c4a4f4251092a253748444337424b60720e0041b8b1 +2561636a72666f7a686b6e627b6cf3ef77046045385e4c11312d2b3d4639 +413994992747500084d5ccf3206f686b5d5653615b2a5958454364706758 +49442c42915d4d4845728d7f6d63a9c655606a293a777262783669827481 +769898909471216d282d30454125245e7f6a65737d5e1a22252225342914 +90ad9645564b4351731c0b1f2e413044341d433e442e43464d4a319c2da6 +85102423261e1c130c1c230e8aa60606143d5c00bc6b87936c3537493933 +484b576143806e5a709046887c9b7d586149716c77767d987d076cf0a120 +1c5d8f0e9926012335290d0a140c0e1810131616161817171813160f051d +d8c8cacdbde1a6a3b3c1b8b3b1bc9ca8a499b3b9b3a0b1a986a3afa6c8a8 +aba4afb8cba0ada8b5cfbcddc1b9b3d1c2cadfd7dad3dddfe8dbdeeee5f3 +dde3eceeeeefd4fffef3efd7f5fff3f2dde3f8efeee7e5eef5f0e3dbe7ef +f0e6dddee8f0eddbd5e6f6efdfd5edf9e2d1c8e3e4d992363587a3373636 +3c3c3e49555141383c3e3b42423e437bb9d3d9dde6e4e6e9e5e3e0dddbde +e2e6edf0f4f6f4f2efeee2e3e7ebf0f5f9fbfefffffffffefbf7ebe3dbd7 +d8e0eaf1f8f9fefffffffffffffffffffff4e8ded3d5dce6f0f9ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffeccfa97a533e39496e8d96928a655d4f4446545f636b5846434c58 +5e61524c42404b5b64655c5045485a6a6e6a5f5338395184add0c9ac8364 +525379ade9ffffffffffffeed6c0a38d8a9ec1defffffffffffffffffcf6 +e1bfa8aabdcdfffffff2ffffebc4ffd19f84857a816d6e877091c6ffffd7 +d9ffcb162728262e263f667f655d5854625c343e3d30b147323a4034363d +2c46384f2c7b6c59d2ffffeed3bfd87980693322120c032275b55c282367 +d7b78476434543384130374b4c3c6c88abe8605855445e7576071b1d191f +1e121a0532533fa889556766588e5a87b4e8a198d6e6a891a9a9e5ffffff +fff2e2afe4aee1693b2c2d5ea1b1b4a4d3ff7092ff5e49585577806ba7b1 +bab5acd8dca5c5deb6df315f84615c67a0e2afa2a3a8a9a77fa098968ca4 +8a5ed8f9ff2d4b465c285b9ba09381a4a4ae7e9192876fbaff845c595cdf +a3b8c46a87978d8982715d61614b86f8602488ffff95a7bba4ffed96625a +7a77a0bac7b28ed6fabfca7fbdc4cfebeafde2bbb1b5e1d8d5e5ff4b86ff +ff5f436f7148a26b404b6453332b332b2d322c2d2e2d2d2f312f34332d2c +1d77fff4ecf0e9ffeacbdaecf3e9e5f1d1e1d5deebdbffc1f9f1e7d4dbc7 +dbfbe0fff7e4fff5ffedf7ebe0f5fff0e8efeeedcfc7cac3cfd1dacdd0e0 +d8e6d0d6dfe1e4e5c9f5f3e8e4cceaf8e8e7d3d9eee5e1dad8e1e7e2d5cd +d9e1e2d8cecfd9e1dfcdc6d4e0d7c5bbd3e1cec1bbdbded381231f718d22 +1f1f222225303f3b2b222628212828242962a1bec6ced7d7dbdedad8d5d2 +d0d3d7dbe4e7ebedeae8e4e3dbdce0e4e9eef1f3f6f7f9faf9f6f3f1e7e2 +dad6d7dee8eff3f3f6fafdfdfcfbfffffffff7ecdfd7cfd3dae2e9f1f4f8 +f9fafefefefefcfafefffefefefefdfaf6f1edecedf0f3f5fbfcfafdfdfd +f9fafcfdf3ddc29e6d462f28355670756c694a44372a2a3540444f3d2d2d +3a484f5140372e2c37475051483c313446565a56493e23243c6f98bbb497 +6e4f3d3e6495cdf0f9f3f3fdffe5cfb999817a8dafcbf2f5f7f9fcffffff +faf3dbb69b99abbcfcfefaeafffddeb6f2bb85666255594648644d70a4e4 +fababef4b5041416161e1933597258504b47555028323124a53b252c342b +30361c301d361a633f0a51735b3f282357040a121c302a2f344979a54914 +1357c6a56b5d2c32362f3723263b3d2a506b94d4484146323f586909282b +213455595d55a1a9428569384a4d40764071a2d7867cbcce906b64425e7b +806a5d4a3f21796ccb7e757b7a97b2a39281c2f95672df3d30454465654d +8795a29d8eb5bc86a6bf96bf104065423d4882c492858689896907131b20 +0e323926b4deeb143736501c4d898978648789956a7d7a715eaaf56b4143 +4dce81806f031922131017120d202d1f5ed440076af7f57e97aa85efc067 +37345a59829ba69371b3ca8da262a6b2b8d0c8d9bf9b969ecec4bcc7dc2b +70f8f13732665e2872320c1f423719141d191d2520242524232525232325 +24261670f7e6dce0d9fdd6b6bfced6ccc8d4b4c4bbc4d1c1fba7dfd7cdba +c2b0c4e4c9f5e2cffde2f8dae6dacfe4f0ddd5dcdbdaaba3a69faaacb5a8 +adbdb5c3adb3bcbec1c2a9d5d5cac6aeccdac8c7b0b6cac1bfb8b6bfc4bf +b2aab4bcbbb1a7a8b0b8baa89faeb9b1a096aebba99d98b7bab36d141163 +7f110f0f1111111c2824140b0f1310171915184c89a1a8adb8b7bfc2bcba +b7b4b0b3b7bbc5c8ced0d1cfcecdc1c2c6cacfd4dadcdfe0e2e3e4e1ded9 +cac3bcbabbc5d1dae0e3e9eff4f4f6f4f3f3f3f3ece1d6cdc4c7ced6dfe6 +ebeff7fafbfaf8f6f3edefece9e4e2e1e0dfe1dedad8d7dadcdde0e1dfe1 +e1e1dbdcdedfd5bea27e4b24100a1a3e5e645f5a372e1f1314202b2f3928 +1716222f383a2a2216141f2f38393024191c2e3e413d312308091f52799c +957851322223497db8dbe4dcdae3e3c8b39d806b6a7da1bde3e5e7e9edf1 +f3f2ede4cba5888595a8edf3ead7e6e1bc93ce96624442383f27233a2347 +7ebed89aa1da9e0005080911061d465f453d3a34423a121a190a8b231521 +281c20240d220c2202492a00557d664c38305c0a1623364b444b52586a8c +3b090447b28f57491a2125202b1a1e2e281444638ecd3e332f1a2b4a6108 +30362c3540393c32778227725c262a2e3672315a8abd7166a5b678565539 +5a7778615b4a401f715cb45f4d4e4e6e92867765a6de3d5bcb2a1c343457 +5a4278808883769fa36a8aa37da8002c5330293368a87265686d705c1124 +292c1c3a36199ecbe20d2c263a0433737767567978815164625a4c9bed66 +3a3536b2686f6c072632221f1f160c1a221252c633005febea6e809070da +ad55241f43416a86937f5fa0b6768842848e96b2afc3a982797ca69f9daf +c91e65f1f43728574f196627001236290c060f0b0e151215161517191917 +1b1c15100053dbcbc2c7c0e4bd9ba4b2b8aca8b494a49aa3b0a0da86beb6 +ac99a390a4c4aad6c3b0ddc2dabcc8bcb1c6d2bfb7bebdbcdbd8e0d1d8e1 +ece2dbe0efe8f3dde7f8eaf3dde2fff0ffe3e1f8f0f9e8d4f5eff4ede5e4 +edf4ede1dde7f1f0e3d9e0efefe5dadceaf3e9d8dbf8ebe4cbd1e6ecc16c +2e3943343b33383738465856453a3439373c40444974b1ced4d5dddee5ea +efeeebe6e1dedddde0e5ecf3f8fbfdfefbf4e9e1dfe3ebf0f5f7fbffffff +fffffffffffffbf0e6dedddee2e8f0f7fcfefafcfefffffffffffefef7f0 +e7ded8d7e3e3e4e9f1fcfffffffffffffffffdffffffffffffffffffffff +fffffeedd9d4b7997b6b5a5474a0b7d5debd99806546403d424d5f6a6256 +46444a5d69614d3e484d56626a65513e3c54696c655c5249445e708b9da2 +7955454963a1e7fffffffff9e9cfac8d7a758da3c9eeffffffffffffffff +fce8c9afbcb3b5d2f7fffffefffffff2ffffe9befce5a57e857169706069 +68b6cbffffa1cdffff143b2e2e24322822312c2f2b2f322f413535247993 +20332d3133283f384c3e2c747358b9e8e6d9ba90e4929572311a100b022d +97cde66083756f5469b859766086998d8a67586d93ce4645484b3e30375c +821a0f101b1519191b0d1c4448ffb41f4a5f90c958bbf0ce8c95b3ffda81 +a4e0fffffffff5d3b6a6ff9bcc8237292a4ea3b6b79fadff868afa871c55 +5fc5ffc2d1d7bca2a6c8c3e0cdbdb0f24ffffff7596cd7f09a98a5a3a6b8 +7fa79d9990a49568bff6ff203383e9c35dc697808982818b8a8d898986e6 +fff82a477398a3d38972978f898884735d5e5e506ce681185cf5ffe8338d +a3ffd0e6ad6cadc2cb9491a094b58a98888195faffeafffffffff3ffffff +ffffeb8088ffff7938826a53484445526658372a302c2f322f2f302e2f31 +313132372c2d18befff1f2efe5fffbc6daf2f5f3faffdbddc6d4d5bed8e7 +ecd8dfe0fff2f1eee6fff9f5dedef8eefff4e7f2f0e9faf9fff4cdcad2c3 +cad3ded4ced3e2dbe6d0daebdfe8d2d7f8e5f4d8d6ede5eedecaebe5e7e0 +d8d7dfe6dfd3cfd9e3e2d4cad1e0e1d7cbcad7ddd1c0c3e2d8d5bdc4dce3 +b25c1c283021261e2120223042402f2420242025262a2e5b99b9c1c6ced1 +dae1e4e3e0dbd6d3d2d2d7dce3eaeef1f2f3f4ede2dad8dce3e8edeff3f7 +f9faf9f8fefefefbf4ebe1dcdbdce0e6eef5fafefefffffffefdffffffff +fdf4e9ded4ced6d7d8dde5f0f8fefbfcfcfefffffffdfcfafafafafaf9f8 +f6f3ebe6e2d0bcb39070574d40416493adcbd1ae866b4d303132343e4b55 +4d3e2e2c3447544f3b2c3339424e56513d2a2840555851483e352e485b76 +888d644030344e8cd2f7fbf9f6e0d0b9987c6b678297bde2f8fdfbf8fbfd +fdfcf3ddbda3ada4a9c6ecfefdf5fefefae7fbfadcaeeacf8d61644e444c +3d484795aaf2ef84b2f8f601281c1d16261d172620231f232624362a2a19 +6e88162923292d2232253223185a4910475d50432a0a70211d191e2b2b36 +4668a4c2d64e73655e42539f405d4b7487787352485875b0313231353221 +1a40751c1c2123294c5856527c8e4bec9704304678b03ea2dcb96c6d85e2 +a33e4666726a73624b373d50e17dbc8c6f7a8391b0a599849efb6c6ad768 +06444fb3f8a4b1baa48a87a8a3c0af9f92d430eff5da3d50bbd27d7b8888 +8b800d1e1d1c10303d2a9addf9091f72dab44db480646c65667274777173 +75d6f8df0f316487809b340a291a0f1016130d1b272144c25f003ed9f1d1 +237d8af1afc38d4d91a6af78728175905664626580e7ebcbdbe3e4e3d8e8 +e7f2f6f9ca6070e6e7512676593314050a22423d1d131b1b1f2523262727 +262827252129232913b7f2e0e1ded5f7eab1bfd4d8d9e0f1c1c3acbabba4 +becdd2bec5c6ead9dad7cfece4e0c9c9e5dbeee1d6e1ddd4e5e4efdfa8a5 +ad9ea5aebbb1abb0bfb8c4aeb8c9bfc8b2b7dac7d6bab8cfc5cebba7c7c1 +c5beb5b4bcc3baaeaab4bcbbaba1a8b7bcb2a4a4afb6ab9a9dbbb0ae98a1 +b8c29d4d0e182112150d0f0e0d1b2d2b180d080f0e15191b1d47819ca3a5 +afb1bec4c6c5c2bdb6b3b2b2b8bdc6cdd5d8dcdddad3c8c0bec2ccd1d6d8 +dce0e4e5e4e3ededede9e2d7cec7c6c7c9cfd7dee3e6e7eaebedeceef2f3 +f4f4efe6ded2c9c5cdcbccd1d7e2eaedeaeae8e9e8e8e7e8edefefefeded +edece8e6dcd8d4c2aea47f5c41332521427089a7af8f6850351814141721 +303a322414141d303f3927161e212a363e39251210283d403930261c1630 +405b6b7045211115316fb7dce3e1e0ccbaa27f624e4a667da5cce7ecebec +f2f5f4efe2cba78b968d91b0d8ecede6efefe9d3e2debc8cc6aa693f432e +272a151b1a6a81cbcb6495dee1001a12150d160b051410130f1316122416 +160358740a1f191e1f1222162312004133014662594e34137327292b3447 +4958697a9aacc74264554c2e3e892a47365e736765412f436aa82c2c2928 +1c0a08346f1b242b2e2a393b3833576b30d889000f276eac318ec39e5354 +6ecd8f2e3e63726a6e5f4e38343fcb65a5734a4f536592897d6681e05353 +c35400323fa5ef9aa4a88c7072938ca7938378bc1cdde6c8283aa3b65d5b +6a6b7071152e2c2a1f393c1f87c9ef011462c59d369e6e565e57555e5d5f +595c63c7f2da08234d6d6a8a3111362a1e1c1f170c1520173ab6530033cd +e5c10c6474dc9caf78387b9099635e6d617e49564f4d63c9d1b6cbd3d5d1 +c3d0ccd7dbe3b95366dfe9511c66492409000218342c0e030a0b0f141315 +181717191b19191e1210009ad5c4c5c4bcded096a4b8bab8bfd0a0a28b99 +9a839dacb19da4a5cbbabab7afccc5c1aaaac5bbcec1b8c3bdb5c6c5d0c0 +d3e3dee0d4e5ece5e0d2f5e4f8e8e1f5f1e4f9d0eefef5f5deddf8f0f2dc +e3e9f1f0e8dee3f1f3ebdadee9f2ebdcdde8ebede3d6ddeff3e7d0e1f3f0 +e1c4dbe9e49b4e383f543e453a37333b4a4a403b333a3a3c39415285c3de +dfd7d8d5dadde3e7edf1f1eeeae8e0e0e1e3e7eef6fbfafefffffdf3e7e0 +e0e0e0e3eaf3fcfffffffffffffffffffffbf2eae4e0dfdde3e8f2fbffff +fffff9f9f8fbfffffffffffff4e8dfd9d4d0d0d0d1d3d6d6d5d6dbdbd7d2 +cac2b9b5b1afa39a96908f99b9cee6fbfffffff6c99b6a4b3a323c4c5f5c +5d5b4e3d3e49565e65604d404658666c6b59433e4d5f6e6b604e44475157 +7e7c6c5d3f3d5c92ccedfff3dbba99846f73829bbce2ffffffffffffffff +f1e2cab8a39eafcee8f6fffffffffffffffffffffffffffff2c9ffe6aa7b +7eabb7bdc5c7efdbd9ecffcfffffff1d313034372c282a36292a2b323639 +3a48584747c14749593c565f4a63656b62875f5f97d7d8ae9c7fef7f8975 +441e1c1100319dbdff666562616653a26f7879a189a2897a6c60515c334e +2c34303b6b539306171b1d131c1a1c180b3558ffc91b43d5ffffb3a98ac9 +9d9d9cb287b4f9ffffffffe0d8af98a7ed97736133242946a5b7b4a0a6ff +8499f9c82a2bf2fffff2cdb396939aa8dfcea8a185bc69f0ffff8f67d5f2 +919caba7aac677959e919e9a92718ac7fb141999ddf376d38f9d87897db0 +ae97927e5eabffff41409a877bca818577868c898474615d5e5563635324 +49edfff030787cad5a92ede1a0b5d0b6c6ceceeba82f343f4c829fb3f2d4 +cfe3e5f0d6eaedffbd87b884cb8553724c434e626044615e43302f2d3233 +30303030323434343338302f29f2f7ecf1f1eaffffbcbdc3cc8881d6c8db +e5eef6dfdcefffe5f5d1dcdcf0d8e6e7f4f8f1f7e6f1f4ffeff9f2f3fffa +fbeac5d5d0d2c6d7ded7d3c5e8d7ebdbd4e8e6d9eec5e3f3eaead3d2ede5 +e8d2d9dfe4e3dbd1d5e3e5ddccd0dbe4dccdced9dddfd4c7cbdcddd1bace +e1ded2b6cddcd98f412b2f432b3025201c2534342a251f2523251f27366a +abc9ccc8cbcad1d4d8dce2e6e6e3dfddd7d7d8dadde4ebf0f3f7fbfcf6ec +dfd8d8d8d8dbe2ebf4f8f3f3f5f8fbfefffffef9f0e8e2dedddde5eaf1f8 +fdfffffffbfcfefefffffefdfbf4e9ddd4cdc8c7c7c9cbd0d5d7d8d7d8d5 +cfc8c0b6aba59d998b807a7471778ea1bdd9f0fcf7e8bd9261412d232b3d +56565752402e2d38424a514c382b3446515857452f2a394b5a574c3a3033 +3d43686657482a28477db7d8eadec6a583705d616e87a6cdeffcfdfaf9fe +fefbebdfc7b59f98a6c3dce8fcfefefefefbf8f6fefdfdf5fefee3b9f1d0 +905e5d889399a4a8d0bbb9cff8b5f3f7fb0a1f1f252a201f212d1f202128 +2d303140503f3fb93d3f4c2f4e583e514b4f4c6c3921386561372e158612 +111c32363a45557db6b6f754535150543d89575e5f8970896f645a4c343e +1e3b1522252f5038880a252d27274b554e535f765cf1af022dbeeef7978e +74af786b5b653152837c797561413e2d4278d8906d716f7a8589b0a69d8d +9bff6c7bd9a9141ae5fbf6d6b098807d7e89c0b08d8669a04cd3f9e9744c +bbd7727e908e90910d0e190e1e26362e65b1e3000586cbe161bd73806769 +6093937c78654b99f0f7242889735790291c07100f0f1514101a2525383d +2f0229cff7d61e6665943f75d0c48398b197a5adadc473000e24386e8492 +ceafaec7cbd6bbcfd5e8a0699d65a35f3f653b23151e210d3b4128161a1c +222824272929292a2a272228292b25ece8d9dedddaf1faa79fa4af6e67bc +aec1cbd4dcc5c2d5e5cbdbb7c3c3d9c1cfd0dfe3dce2d3dee1f2dee6dfde +f0e5e6d5a0b0abada1b2bbb4b0a2c5b4c9b9b2c6c6b9cea5c5d5ccccb5b4 +cdc5c5afb5bbc2c1b8aeb2c0c0b8a7abb4bdb3a4a5b0b8baada0a3b4b6aa +93a6b9b6ab8fa8bac37f311b20331c1f140e0a101f1f130e071011151218 +285793acaea7abacb4b7babec4c8c6c3bfbdb8b8bbbdc4cbd5dad9dde1e2 +dcd2c8c1c1c1c1c4cdd6dfe6e3e6e8eaebededece9e2d9cfc9c5c4c3cfd4 +dde7eef3f4f4f0f1f4f5f7f8f8f4ede2d7cbc2bdb8b6b8b9bbbfc3c5c5c7 +c9c7c4bcb4a89e98928c7f736e68666b7e8ea9c0d4dcd3c1976b3a1d0a02 +0d1e37363733230f0f1a272f3834231620303c403f2d17122133423f3422 +181b252b504e3c2d0d0b285e98b9cdc1ab8a6b574549566e8eb2d4e1e3e0 +e2e8eae8dbd0beae948a95adc2cddfe1e3e4e6e5e4e4ececeadfe4e1c497 +ceab6d3c3c6873777b7ca49290a7d392d5dde60013151e221410121e1314 +151c1e21202d3d2a2aa631354326414830433e41375724123265653d3117 +8a181d2e48505e6d7c95b0a4ea484541404028733f4748715a755e4f4234 +263619370f1611193f2d840b2e393328393933373e5641da9e00089ee4f4 +8c7b5c945d5045532249817b7b755f3e402b335eb97355564b4d545d908a +7d6c7de35263c4950008d4ececcba28568656975ab98726b518a3ac1e8d8 +6137a4bc535c72707581111d2a1e2d313725529cd9000077b7cb4ca86572 +5a5c52838067614f3a8bebf31e1c755a4182272315201f1c1e180f141e1b +2f3223001ec4ecc70a5053802c63beb271869f83929a9ab56d0001112056 +7183c2a6a5bcbec7a8babdd3905e9460a35e345529140e1b1c082e311705 +090a1216141619191a1e1e1e1a1b161208ccc9bbc0c2c0d6dd8c8588914d +469b8da0aab3bba4a1b4c4aaba96a4a4b9a1afb0c0c4bdc3b3bec1d2c0c6 +bfbfd1c6c7b6cde4dbe7d7ddefe8e7e2e0f8e7f6e0e0f4eef5ecdbffebec +ebddf4f1f5f0d5deebf2efe1dde8f1f1e3dcdeecf1e6dcdcecf1e7d6d7ec +f4ecd9d1ebefedd3d3e6e7cb6d1c354b543d3e3a34353d3c37393c3c3d3f +35374574c7e7ece4e3dcdbd7d7dce3e9eef1f4f6edebe8e4e1e2e5e7f5f5 +f6f8fbfefffffffdf4ebe5e1e0e2f2f7fdfffffffffeffffffffffffffff +f5eee4dedee4eaeffffffefefffffffffffffffffffffffffffcf7f0eae2 +dbd4cdc9c9cbd2d9e0e3e3e9f0f9fffffffffffffffde0b7855c4733365c +7f888d986351424040445162635346485159606555463c45596969645046 +414d5f6a6c6c4f504b6181a8b3bb9d835f4e57729ec6e0ffffffffffffff +ffe5c4ada8afb5bae0f1fffffffffffffffffffffffffce8f0d4b79a9585 +765e5f66555b96eadcd9c8beb0a6d3a8719ae3f0ff1e252f2521272c1629 +371d2f996e667a7c6b9181ffe286a090726b6a8b8b9a753ca2496d97a283 +7e6bc17d8e7626100d0b0d3b98d8ff693035749150a8736b6ca27f668471 +66585d66cfff591c2242674b7d14140e1b141f18181d062e52c9c6113bff +ffffce9eb5a0e296959cccf1fffffcf8e6c6ffec6ad7d380624a2e212d49 +a6b6aea493ffa884ce852023cffffffa81a37b82927976c8767163bea1c9 +ffffb37bf7ad5b819fa6aed38f9d9f969e8f9478809f7025418ae3ffc1f1 +a5c47e3b4e3f7883bba18eb2ffff8776a0895c66697c8094918b83766660 +5e5a7d56666d8489597c616d5f6970736257685b5c525d48496d4d473c56 +453a39373432161a18131f171b1b252023322336303430385756504b5964 +5039302f363630313232343636363e383a2a51fff0eef4f4ecf2ffcab8b4 +ffffbfc1e6fbe2e8d2c8e3caedecf4e0fff6ffffe8fcfff3f5f9d9e9e3fb +e3e3f2f4fdfbf5f1bfd6cdd9c9cfe2dbdad5d3ebdae9d6d6e9e3eae1d0fe +e0e1e0d2e9e6ebe6cbd4dee5e2d4cfdae3e3d5ced0dee2d7cdcddce1d8c7 +c8dae2dac8c0dadddbc1c1d7dfc46410283b432a29251d1e272621232727 +26281b1d2959afd2d9d5d6d1d2ceccd1d8dee3e6e9ebe4e2dfdbd7d8dadc +eeeeeff1f4f7fafcfaf5ece3ddd9d8d7e1e5ecf3f6f7f6f6fffffffcfaf7 +f7f7ede4d7d0cfd7dfe5fafbf9f9f7f8f9fbfafcfffffffffffdf5f2ede8 +e1dbd4d2d2d3d1d3d6dbe0e1dde1e5edf6f9fafcf6f8f3e2c9a3734d3925 +2a5071797e8a5a4a3b3735364353524235343c444b504032283145555550 +3c322d394b5658583b3c374d6e95a0a88a704c3b435e8ab5d4f7fef9f6f7 +f9eee5cfb2a1a2adb8bbdae8fafffffffffffffef9f3f5f6e7d5dfc2a589 +8474634a484e383d75c8b8b5a8a09288b58c5580cad8f60c131e16141a1f +091c2a10228c61596e705f8575f8d67a8e7f6662617b707e5b21831b2646 +513335206915181d192b2e45749ab7d5fa561d22617e3b945b515288644d +6d5c55424048bafa440b1a374d33731925222c2c4e4e46524c665bb8b100 +2cfef5f7ad7e9982b95d4536556f8570685e46309a9431b5c47f6d6f7b7d +8383afa8a09a8dfa9368ae690b14c2f7f9de6388656e79605db05e594ba6 +8bb2faf79c65e1933c63868f96a2281a160f1e1b312f5a89580c2973c9ef +a4d283a059162c1e59649c86799ff7e3685a8b7033280e0e0c1a13111416 +141a24295230414b6269395e4553454e555645374737362d362122411714 +173c30231c120d0d00010100030002020904051100131823211b1a0c0a0f +2e44331d191c262a24282a2a2a2c2c292b28332950ffe1d9dcdfdde4feb5 +9a92e2fba5a7cce1c8ceb8aec9b0d0cfd7c6e6ddebf7d1e5eadce0e4c6d6 +d0e8d0d0dfe1eae8e2de9ab1a8b4a6acbfb8b7b2b1c9b8c7b3b3c9c3cac1 +b2e0c2c3c2b4c9c6c8c2a7b0bbc2bfb1acb7bebeaea7a9b7b9aea4a4b8bd +b1a09fb2bab29d95afb5b3999bb6c8b45500182b331918120b0c12110a0c +121214180e0e1b4697b5bbb4b6b3b5b1aeb3bac0c3c6c9cbc5c3c2bebebf +c4c6d4d4d5d7dadde3e5e3ded5ccc8c4c3c3cdcfd8dee3e4e2e3ecededec +eaeaeaeae0d8cec7c8d1dbe3f8f8f6f6f5f7f9f6ece9ecededefefeee9e6 +e3ddd8d1cac5bebababbbfc3c8cac7cacfd5dfe2e3e4e0e1dbc7a9804d24 +1200022a4e585f6d3d2e1e1a1919263636261b1c272f383b2b1a10192d3d +3d38241a1521333e404022231c32507780886a502e1d2843719bbadde4df +dedee1d3ccb79c8b8c98a5a9cad9eaedeceae8e6e3e1dad3d6d6c8b7c5aa +8d6f68564329262a161952a39491827a6c628f65305fabbcdf0005140f0c +111600132107198358506262517565e8c86e84755853526c65724c10710c +204350322f1b681c262f2b465773a1b8b9c6ed480e13526d287c433a3971 +4f395b493b2b3240b5f63f0107233e29711c2d2d362e3c342c3830493c9e +9e0005dceaf4a46f83669b402e274d6d8572685e462f968a1d9aa7614f4e +4f4e545a908b7d766dde785099540000b1e8efd358774e56654c4798443f +318e76a0eae58a50ca7a1f4167707a912b2828202d26342947744e051d63 +b8dc92c07794500d200f475087716891f3df634f785a1f1b0d171929211c +1d1a1618202249253841585e2e533742363d4446372a3829291d27121336 +15130e2d1d110e09060700000000000000000000000c000f0c130e0b150d +0c0e2535250f0b0d171a16191d1d1e222220241b200d31ddc0bac0c4c0c7 +e19a8077c4da8486abc0a7ad978da88fb0afb7a5c7beccd8b1c5cabcc1c5 +a6b6b0c8b0b0bfc0c9c7c1bdd0d9e1e2e1d3f0f0e8eed2f5eceef4d9e7ff +ebfbe1e5fef1eceddcf4f0fadddce6f0f4eae0e0e9f0eee1dbe3efede0d5 +e2eff1e2d7dce9f1e6d4dcf0edeaccd5e5e9b551273234463b3e3a393b37 +33373e393a433c3935519fcde2e6ece9e9e1e2e0dddbdce1e8edf2f4f6f6 +f3eee9e6dbe0e8f0f6f9f9f9fcfefffffffffcfcede8e2dddfe5edf3f5f9 +fffffffffffffffffffffffff8eedcdbdce1e6eef6f6fffbfafcfdffffff +fffffffffffffffffffefffefefffffffffffffffff7e1d6bf9d7a66534a +6790b6c6ceb99672543f3f3c3d485d69625442434a59666352404a566467 +5c4d4443495466706652494b4d718184756d503f4d70aae8ffffffffffff +eed8d2bba2a3bacce5f9fffffffffffffffffdfafcfdfbfcf4e7e4e1d3bd +9979665759565f59604d46637479716d7c768173ffc3718ac7f0ff1d272b +1f2115192227141d1d0f0f11101f17190b2c191b2624212a362b3248366d +ff6a424e414a433b6980976c2c240f0413274fc3ff581a45cafaaa9c6e86 +73c26d79746a64626358e6ff830f1c46424c34170613150f1f171c26143f +3f639d345affeeffbe68b79e9d9490e1fffffffff5ebdca9ffff51caa04e +5c42271f2d479bb2aaab99ffb65cab6c414dffe3ffec9db485a1863f5da9 +a1b992b4a7ab6e9f9a729e90528faaaca9c2938aa0a8918a9d7aa692556b +937b5d6c6b546c8c3f3e51568063984e5c463e694b5c5353636a7387997e +918b8175695d5b5e864a55413b4d3a39413d534da0c55640444946404d49 +474e4d403931575d4856454b473f3a3942404a5843484245443637353840 +5e6654584d655b3e32323937323435363738363545393d2283fbeff3f6f4 +ebe4ffebd0ccdae2c6e2ddd1d6e0dee3d9e8e0e5dceaedeae5fbd4eff5fd +fcf8f8f2f8fffffdfffbf8fff7f9c2cbd3d4d3c5e3e3dbe1c5e8dfe1eacf +dcf5e0f0d6daf3e6e1e2d1eae6f0d3d2d9e3e7ddd2d2dbe2e0d3cdd5e0de +d1c6d2dfe2d3c8cddae2d7c3cbdfdad4b6c5dfe6af4a1b25243528292322 +25211d212924232c221f193687b8cfd7dfe0e0dad7d5d2d0d1d6dde2e9eb +edede9e4dedbd4d9e1e9eff2f1f1f4f6f9fafaf7f4f1e1dcd6d2d4dde6ec +eef2f8fbfcfcfcfcf8f9fbfbfaf3eae4d4d6d7d9dce0e4e9fdfefbfbfaf9 +f8f6f9f9f9fcfdfdfdfffffffffffffffcfbfffffcfdfdecd3c8ae896653 +3f36517aa0b2baa6836145312f2d2e394d5952453332394854513d2b3642 +50534839302f3540525c523e3537395d6d70625a3d2c3a5d97d5f9f9f2f9 +f7f9e0c7bda38889a2b8d5edfdfffffffbfefffdf8f8fbfcf8f7ecdad2ce +bba582645142444148424833284352564b4a5e596456e8a75772aedbf60b +161d1114080c131a05100e0200040213090d001f0c0b100e111e2d1d1a2c +1a52f94a11190e1d1d0b1f20231523433143879376c1f8450432b7e7988a +586e59a754626159534c433ad3fb7000153e2b352c1f1729292b4e4c4853 +506f4a5a8c2451ffdbef9b44987c6c4f306c78727b725a514425e5d531b9 +924d747983837f7ca9ac9d9e93ffa2408c502f41f6d6f5d1819a708f712a +48958da57ea095995b8c87608c7b337193989293330a151d1318362c807d +3a4e775e3d4b472e4464161529305c3f752f422e1f47283e393736281315 +2000131112151417212d5a222f1c162b18171d19312d80a5341b1e211e18 +231f1b1d120912133d41242b182225232320242030412c2c212221151b20 +29231d15091a21433b221b1f292b262a2d2e2d2e2c283329382383f7dfdc +dddfdcd9fad6b1aabdc8acc8c3b7bcc6c4c9bfcec3c8bfd0d2d1cce2bdd8 +dee6e7e3e5dfe5ecefeaefebe8f0e7e99da6aeafb0a2c0c0b8bea3c6bdbf +c7acbcd5c0d0b8bcd5c8c3c4b1c7c3ccafaeb6c0c4baafafb6bdb9aca6ae +b7b5a89daebbbbac9fa4b1b9ac98a0b4b2ad8fa3c9d59f3a0b1514251718 +1110100c060a140f131c15100b236f9bb1b6bfc1c3bdbbb7b4b2b1b6bdc2 +caccd0d0d0cbc8c5babfc7cfd5d8dadadddfe2e3e5e2dfdbcbc4c0bcc0c8 +d3d9dce0e8eef2f3f3f3eeeff3f4f5f0e9e2d2d3d4d6dadde2e3f1ebe9e9 +e9ebebeaededeef0f1f1f1efece8e8e7e6e3e1dee4e3e1e1e1ceb6ab926e +4b351e132c557b8d97856343281618181722343f382816161f2e3c3b2816 +1e2a383b302118171d283a443a261d1f20445255443c1d0c1a3d79b7dede +d9dfdddfc5ada2876d6e889dbcd5e7ecedede9edeceae2dfdfded9d7c8b7 +aea695816347342525222820240e041d2c3024243a374234c38234508fbe +de000610060b00040e14000a0900000000070000000f0000030102101e10 +10210f47ec3d0a130a1710001c243026345f5e76bab77db5e8340023a8d6 +8474415642924052524739353632cff86c00032b1d2d2a222136342c3c32 +2f3c37552a3d780b28dacdec953883604c30185b72717d755e534321dcc4 +189d77315452524f4f52868c7a7b73e38728773a172be4c6eac675895b79 +5e17337d748a65887f854a7b764c7660164f717773813417283021223a28 +6d6831486c502e3a37213a5c100f21254e2f621b33221c4626362a22231c +141f2f10211c1b1917151d26511826130d210e0d110d2522759a2a121517 +140c17110e16140c0b082e3318241520231f1d191c15212f1e211a1e1d0e +0f0f14131b1b0e1b18372e140d111a1d181e202324252320291a220461d2 +bdbcbfc2bfbbddb9958e9fa78ba7a2969ba5a3a89eada3a89fafb4b2adc3 +9db8bec6c8c4c5bfc5cccfcacdc9c6cec5c7dad0edebe7dae1f6eceaddde +f6e6f7eadcf6f4f1f1d0faffebf2d8e5ecf5ece4e0e6eef0e8e0e2eaf1e9 +dfdee8efe9dcdae8f3efdcd2def1ecdfd6e9eff4d8c6d9e5d78822372e44 +373b3b3b3d383438373539413f4238427bb3d3dbe2e5ebe9eeebe6e1dddc +dee1e7ecf3f8faf9f7f6f0ede7e4e3e6eaedf3f7fdfffffffffffffffffb +f4ebe1dbd7dde5eef5fbfffffffffffffffffffefffefbf6f0eceae6d7d2 +d2d6dfe7f0f6fbfafcfdfffefffffffffffffffcf5f0d2c6b0a19a8b7f79 +7f8fa9c9effffffdd6ad7e5d473a4156606d72655349444254656e5e473e +48536b5f5147434a5a6a6a605247444e617178675558494d77bbdfe8e4d6 +cbbba6997c7c6c55a2f6e7f0f7fffffffffffffffffffffffffffffaf4f2 +eadbccb7977e776a6d696b676d63625f99e2ddb3fadaf3e5f7ffffbf6c5e +ade8ff391d1f1a1f1f1b161a151e1f1d1d182b182a3f2a6b7a3c32452c25 +2f3d3c3b4147b3323d3e3b352d3f647f947e2c1e0b020e2e2e994d451851 +c0e0e87c7c6aaf59424c3c5860688675ffff93404c3a2d38331e170a0f0a +1d1b252620523b676a8bb7e292e9b3a7c1906c94daeef3fffffcf9d9c7da +f6bf72745b6f493b1e1e2c4089b0adb27affa971ac55625069465764705b +63634b5363b76d544646313a423c4643374f5499a5ababc3b18ba4ad908b +a279bd863446454a4d554f56505c50495255ac659b48585e495765575360 +6b6f7e8c959c928d8376695a5b65824b4d484b4443504d6a77675b463f49 +575b4e514f4a4b534a574852644f55505945493e3a453a4a425448383d36 +3b443e4142435365585245645d3f32363d3736383a3a3a393734433b3f22 +b5f1f1f1eff1f1ebfffccac8d8cdcdd6dbe8e7e3e1ebdcdff4fdffdee5ef +eef8e6e1e4f9fde3f7d0dacfede8d1cac7d5d6e4ccc2dfddd9ccd4e9dfdd +d0d1ecdcede0d1ebe9e6e6c5eff5e0e7cddbe2ebe3dbd3d9e1e3dad2d4dc +e3dbd1d0d9e0dacdc8d6e4e0cec4d1e4dfd0c5d6d9ddbfb3d3e3d482192b +1e332426242427221e222220222a25281c27639ec0ccd5dce2e2e3e0dbd6 +d2d1d3d6dee3eaeff0efecebe9e6e0dddcdfe2e5ebeff5fafdfdfbfaffff +fffdf6ede3ddd6dae0e5e9edf2f6fefffffffefefdfefffffef8f0e8e2e0 +d5d4d2d4d9dfe6eaeeededeef0f2f3f1f5f3f3f1ede8e1dcbeb29c8e877a +6c6a7688a0bbdcf3eedeb78e60412d242f41444f554939302e2e40545d4d +362e3641574b3d332f364656564c3e33303a4c5d64534144363a64a8ccd5 +d1c3b7a792856666584191e5d8e3ecf7fffefaf8fafbfffefdfefffffdf4 +ece9deccbba484685f50534f524e5349454179c0ba8ed5b7d6cadcecfaa5 +524694d3f3270c120d13100c040b030f0d0e0b091a0a1931195b69271629 +19182631241e242e9f1e2021242525252724242a28422f458ba458963d30 +013cadcdd76b6a5696402b392e4b4e526657ecfb8032463317242e282925 +272a4c4d4f50567e4a645e7fb2dd80cd9083a26b2f3f6c6f6f7d67554e38 +406fb09a6b754b69647c898e7e75a2b19a9b71fe95558e3b50445e394149 +54414e533a4253a75d453838222b322d37342b3e357b91989694560f151e +1219392a9771192824282930252a242d201c252a843e76273c4327303d34 +363f3a291a16161b1213141614142034562327232622212a1c374a3e341f +161e2a2e2326272221220c19192e432b261e2414221d1d271525263d311d +1a111826212a36280f100b1118423d211a232d2b2a2e31312f2e2a25312b +3a23b6ede1dad6d9e2e0f6e7aba5bbb3b3bcc1cecdc9c7d1bfc2d7e0e9c4 +cad6d5dfcfcacde2e8cee4bdc7bcdad8c3bcb9c7c8d6a79dbcbab6a9b1c6 +bcbaaeafc9b9cabdb1cbcbc8c8a7d1d7c2c9adb8bfc7bcb4b0b6bec0b5ad +afb7bcb4aaa9b0b7b1a4a4b2bdb9a79da7bab3a59aacb0b49792bdd4c372 +081b0e2313151212120d070b0d0b121a18190e144b81a2abb5bdc5c5c7c2 +bdb8b2b1b3b6bfc4cdd2d7d6d6d5cfccc6c3c2c5cbced4d8dee3e8e8e6e4 +ececece8e1d8cec8c2c7cdd6dbe0e5e8f0f1f3f4f4f5f4f6f8f8f3ede4dc +d7d4c9c7c6c7cdd2dadcdedcdadbdbdcdbdadedddddbd8d0c9c3a5978170 +695c4e4b596b839ebed4d0c19a724629160d192e3844473b281c1715273a +43331c151e293f32251b171e2e3e3e34261b182237454b3a2629181c468a +aeb7b3a59c8c796c4f4f3f2875c7b9c1ccd9e4e5e5e5e8e9efeeeae8e6e3 +dad0c5c0b4a3907a5a413d2f322e332f3228231d539a9264a98fb6adbece +d9822f2475b4d80f0001000709070208010c0b0b0904130111260f4c5714 +081b0a0817231a181e27961318191c1812142229303a375c5f7cc1cc648f +2e1d002b9ebec557543e802c1b2b233b363a594fe8f87c2936210a1d2b2a +333031293a34373a3f652945486588b572ca8c778d4e1022555e63796b5d +573e3c65a4874e55324f435253564e4b7b8f797b52e17a3d7624382e4c29 +363e4830393c262e3c8e43281d1e0d18221a241f132416596e777782551a +293220233e26845c0e201b1c1b20171f1b271c171f21782f64142e382531 +3d2e282c2b1f1c22272d211e1d1a17121c2d4d191e1a1d18172117334438 +2d18101825291c1d1d16151b0f1c1322341d1c1520101d16151d0d1c182d +2312140b121c131820170e171315123832160e15201f1e2428282928241e +271c240494c8bfbab8bdc5c2d7ca8f899d92929ba0adaca8a6b09fa2b7c0 +c9a3acb7b6c0afaaadc2c9afc49da79cbab7a09996a4a5b3e4cff6fee6ea +cef8f6e8e9d6ebf5dbfedde2f9eff7efd1fcf4f1edd2eeeaf2ebdadbe5f1 +efe2dfe6eeede4dbe2eff1e8d9dae4f0eadcdae5f1e8d4d3eff1f4cecfdb +e2ca5e1e3e31343736383c3a393b3234393b37443f4679b3d1d2d2d4dde1 +e9edf3f3f0ebe6e3dbdee2e7ecf2f7fbfafbfcfaf5ede5e0dfe1e3e8eef5 +fafbfefbfcfbfcfdfffffffef8eee6e1e3e1e0e5f1f8fafdfffffcfefefe +fffffffffffffdf8f1e8ded8d5d2cfccc9c7c5c7c5c3bdb9b8b7b5b4bfc8 +d1dcecf8fffffffffff5e0bd8b624a434358788984796f61524f4f536170 +6155413c4e646a5f524847586b6e61534b50555e6c7369594c53526a869e +8b79675e452c25231f1f322f341b90ffe2e8f1f8ffffffffffffffffffff +fbf6f3efe0d7c7ae947c706c6b68726c69666b5c5fd1d1cfffb6f2dcfcff +ffffffffffae74d1ff7215232419212121271b22201c192b15223a472f28 +6c7b36565f556b3a383d3a1c26392c2d322d30316c7f99763a160d050342 +2e642fa69f8c9f797e84726b581c1d2221354b3d463817474341422b2c4d +28121115140b1d1d26191c52425e414f71525e786a7b757497cef5ffffff +f0e5d7c4a7897159474953724a3024292f3a7fb4b0b598e0d092ba525054 +6765635e61775e63655d6cb1815365585149676e613f454a67a79ea3adc3 +c180a5a4a194a77fb9774d535a4f5b606062635f5257585fa56d6a6a5757 +6b715d625c5c77728788919b96958c8377686d7d9d62514c5345504f5560 +7a5b53494e5252695b5a535a5c59615d59648a645c625e644d564c4c4b40 +463a3c3b484d3f3d44323d556b6a614b44655c3e363d413a3b3e3e3e3f3f +37323d3e462fe2f7f5ecf4efeee7fcffd6e0dcc6dccfd2e6dddcd2d4fedc +def0f6e5e8dadcf5cacad2d3eed6ffeefbe8fdeefefcfffff9ebd2bfe6ee +d8dcc1ebe9dedccce1ebd1f4d2d7eee4ece4c6f1e9e6e2c8e4e0e8e1cdce +d8e4e1d4d1d8e0dfd6cdd3e0e2d9cacad5e1dcceced9e4d9c5c2dcdbddba +c4d5ddc85816301f1e222123272420251d2224241d2a242b609ebec3c4cb +d6dadee2e5e8e5e0dbd8d2d5d9dee2e8edf1f3f4f5f3eee6ddd8d7d9dbe0 +e6edf2f6fdfefdfefffffffffffdf2e7ddd8d7d9dce6eff6f8fbffffffff +fffffffffffefffffdf5ede2d6cfc9c7c2c0bebdbbb8b0aca7a39f9e9c9c +a7b0b9c7d7e3eefdfffff8e6cda36d432821233c5d736f62513f322f3238 +485a4d41302b3d54584d3e343344575a4d3f373c414a585e54443a414058 +758d7a68564d341b13110d0a1c191e077ffcd7e2ecf5fdfefdfffdfbfbff +fffbf6f0e9e3d3c8b69d81695a54514b554f4f4c514245b4b4b1ee96d2bf +e4eafbf8f9fcf4965ab8fa5d0313180d100f0f1509100e0a071904112936 +1e165b661a3948445e2d22242108192f1f20272932203024271f353a3952 +88bd5c6523948e7b8f6c6e73615842060b14182b3a24281d05393638402a +2043281d252d2b294c4f52454d7e5b69404b6f4e53644c564b3b41647c82 +7b6b4b403e40423f41444d54496e69738b9683759eba9d9c8cd6c07ca23a +3c445855524b4c624951544e60a57645554840395b665a393d3a48888c95 +9b966908161018163425895a2a2b31242f343232312a1b20232d79413c3e +31324247353d3a323c242314101615181818140f1d37633126262d1f2823 +1e2540241d161d21213629281e232118141017294f28161b162013251f21 +1c13201a1e1a1d201618221628312415150a133f3c2119232e2a2d323634 +312e29242d313f2adaebe7d9dcd9e0dcebf3b8c0bfa9bfb2b5ccc3c2b8ba +e1bfc1d3d9c8cdc1c3dcb1b3bbbcd7c2f4dae6d4e8dbf0eef6f9ebddae9b +c4ccb5b99ec8c6babaa9bec8aed1b2b7d0c6cec6a8d3cbc6c2a5c1bcc4bd +aaabb5c1bcafacb3bbb8afa6acb7bbb2a3a6aebab5a7a4afb8ae9a97b2b2 +b495a8bdc7b34809251310110c0e120f0c10080e1314101b13184a83a0a4 +a7acb9bdc0c4c8cac5c0bbbab3b6bcc1c7cfd4d8d9dadbd9d4ccc6c1c0c2 +c4c9d1d8dde2e9e9ebe9eaebefefefebe2d7cec9cbccd0d8e3eaeceff5f6 +f4f4f4f3f1f1eeeff6f8f3ece2d6c9c0b9b5afaaa8a4a2a19b9a928e8b88 +86848f969facbac6d2dfe1e3dac9af8851270d080c26485e5a5046352522 +2225324334281611233a4035261c1b2c3f4235261f24293240493f2f242b +28405b73604e3c331a01000000000702070063dfb7c0ccd4dee3e6eaece9 +e7e8e6ded6ccc5bba99d8b72594135302e29332d2e2b30212492928dc86f +ab9dcad5e4e0dadad2743999db4200030a01090b0b11070e0c080315000a +212e140a4b550c2b38344d1d171d1c0111261718211d1a0c2f2b312f495a +6888c0e6695f13807e6b805b5e614f473400010b111f26101d160136302f +3118143a261f2c3731273a363b2e38653d4b2b324929415942463320284e +697673684f46413e38323533313430554948565f524975967c7e72bda764 +8a22242d4545423c3b4f343b4039488b5a2a3c312e294b53472326212c69 +6870777f65122a2628223b247b4a24292d1d242725282a26181d1d246c34 +2d31282c404833352e2434222b21222927262320191320375f2a1f1d2416 +1e1a171f3c211b13191d1d322221161c1b161a1618254920141917211221 +1a1a160d170f1311171b100f18081725221815060c342d110b14201b2026 +2b2a282620191e1e250ab6c5c2b8c2c1c5becdd7a0a7a1899f9295aba2a1 +9799c19fa1b3b9a8afa2a4bd92939b9cb7a1d5b9c7b3c9bacdcbd3d6c8ba +ebe5dbfff1ece5d0fff7e0dfcdfee9eef1d6f5f7f2fae1e4f9f0f3e3e2f0 +ebf3e6dcdae5f1eee2dae6f1efdfd9e4eeeee4d7daecf2e4d7d6f1eaecca +daf0efe2c6d9ebe0952f314647372c343041383a3b37363537393c3e76c9 +dde3dfd9cfd2dde3ebf0f3f4f1f1eeeae3dedbe0e8eef4f6f8fafcfeffff +f9f4ece5e0dfe1e3edf0f6fbfefffffffffffffffffffffbf5eee3dad7da +e1e7f2f5f9ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffff3d2b2846b51446276a3b9c9bc9b775b4e4b49 +495564695c494647566a664d454b505b6c65554d4750616b775854445758 +6a6f69553e2f251e26262a3035393f4549414d4575ffe6e4f1f5fcfcfbfd +fffffffffffcf5f1e4d5c8b08b71686a6a687269666e6b60595ba6f1bebd +ebe4feffffffffffffffffff8e81ec943925251a2524212020201d1c1f21 +2628282827271d1d212d262b2d312a322b314b3c312c37352b3e6a899c7d +3d160702082f40542f2d30201916181d201d212015132b30302e1f202820 +201a1a1b1c3d261518191e1e1a1a212b112f3b49313537416c4a50a782a5 +e0fffefffff9eed8a18f7d73765b4f4b48793f302d2928337eb8b3b88fed +d186a65356577c7461656d60736c72647f99745b68625949545f413d404f +798d91a6aabbda7fa3b0aea8bc97a16a5a575b5e635f5a66666b5c626272 +8d7878696d6a5a69625767718674758898989b8e9a8f8992969699665a4b +4f505158575b6963666f5a5d5e6c67707269707674767c727882807b7971 +706459544b4f554c43454c52504c4840535b6760b06c4e566844325bb14d +4f544d4e507897555c6b6665fff7fff1ece9ebe9a9ffe2d4dcd1d7ffdcec +e4ecddd7e7f5ecefece2f0d6fefee6eeeefaf3eddeebfefdfbfdfae8f2ff +f4f6d3cec7f7e1ded9c7f6efd6d5c3f4dce1e3c8e7e9e5edd4d7ece3e6d6 +d5e3dee6d9cfcdd8e3e0d4ccd8e3e1d1c9d5dedfd5c9ccdee5d7cac9e2db +ddbbc9dfdecfafc6e2de962c263331201a231f2c1c1e2625211e1d1f2123 +5db3c9d3d1d0c9ccd2d5dce2e5e6e6e6e5e1dad5d4d9e1e7edeff1f3f5f7 +fafcf3eee6dfdad9dbdde7eaeef5f9fcfdfdfdfffffffffffcf7f1eadfd6 +d3d6dde3f0f3f7fdfffffefdfffffffffffffffdfefefefdfefeffffffff +fffffefefcfbfafcfcf8fbfbecd9bd9d6f563a2b495d899fb1a787634a3a +3530303c4e53463532334256523c31373c45564f3f37333c4d5765464232 +4545595e58442d1e140d1515191f24282e343a313d3363f8daddf0f9ffff +faf7f9fefcfffff4ebe5d5c3b49a75594f51504d554b4a51514640448fdc +abaad8d3edf8fcfdfbf8fff8fdf17060cb771f12180d1411100f0f0f0e0d +10121517151514140f0c0b160c14161c14201d2744392e25292825282727 +2321303b405e94ad755e2c25291a16100b0c0e0a0e0e090b26271c16060b +19171c1a2024244733252c2b2932444e525c455f6165433d363c68444081 +3b44667d8079624c4a4b3d4d4e525d5158594b8261687c82827ba1bea6a4 +80e1c67a9841403e6662555b61505e55615878936a4c514841374e60443f +3c3f586a819d9b948a0e19140c0d362e603a282223262e2d2a362f2e181c +21385e493d2c333427393d333c3c3f20171c1910150a1a0f06121d2c4426 +2b2527241f22221f22181c2b1e26253026292415141513151d13141d1611 +1110161311130e151d1b161617181b1c231e2c291e12692d1b2c49280935 +96383a434646365c854652625852f0ddf8e8d9d8e1de92fac8b9bdb0b9e2 +becfc7cfc0bacad8cfd2cfc5d6bce4e4ccd6d6e2dbd6c7d4e7e6e4e9e8d8 +e2efe4e6b1aca4d3bdb9b3a0d2cab3b2a0d1bcc1c6abcaccc5cdb4b7ccc3 +c6b4b3c1bcc3b6acaab5c0bdb1a7b3bebcaca5aebab8aea2a5b7bbada09f +b9b2b2909eb4b3a4859ec1c58825222f260e020905170e101311100e0e10 +1012499cb0b9b4b1a9acb4b8bfc5c8c9c8cac8c4bdb8b7bdc5cbd1d3d5d7 +d9dbe0e2dbd6cec7c4c3c5c7d1d2d9dfe3e8eaececf1f3f3f4f4f3eee8e1 +d6cdcacdd2d8e4e6eaeef1f1eeeef6f8f8f6f6f4f3f2f2f0f0edeeeeefed +eceaeaeae8e8e7e4e4e4e4e0e3e3d3c0a07e50371b0d2b3f6e84978c6e4a +3022201c1c28373c2e1c191a293d3922181f242e3f38271f1a21343e4d2e +2c1e3134494e48341d0e04000505090f14181e24251a261d4bdfc0c1d1d8 +e0e0dedfe3e5dcdfdbcfc7bfae9b8f755037303335303327252f30252125 +70bf8d8cbab7d1dfecf1f1e8e3d5dccf4e3da859100b10050d0b09080808 +0706090b0d0f0e0e0d0d06020008000204090614141e3c30251f29200b11 +2e362a2e4e656d8fc5d37d551d12190a070000000203080a09092320110a +00061412130e1213153c2c242d2f2d3036383c462e47484c2d261a1f4d2a +276a253157707473655249422d373a435647433f306540414f524f4b7798 +84896dd1b2627e2929284f4a3b4049394b434d405e794f353f3b352b3e4e +2f29232847545d7270737f14292a231f41325c362b2826252824202c282b +171a1b2d4e39372b3234263534273338452d252c2a242d1f291c14212e3a +4b26251c1f1b161814141c151d2c1d211e2820232215191c1e20251b1e25 +221d1c191f1914110b131c17100e111417181b1525221808571b0a1c3412 +0022832529333333294e712f37453b32cbb8d2c7c8c8c8c072dfb7a6a18f +97c09cada5ada09aaab8afb2afa5b59bc3c3abb4b4c0b9b4a7b2c7c4c4c6 +c4b4becbc0c2d0fcdef0ffe5e2dbf2f8eaeadddaffecfdf4dbfff2f4fdd6 +f0fcf2efe4dceef0eee2dae0ecefe7dfe1eaefeae0dde7f2e9ddd9e6f0ea +ddd4e2f3e7dccfe5ebecdfc9e5e4b5712e3e544735342a32343f39383b3b +3d3a38365eb4e2e9edf1e6dbdddddddce0e8eff5f6f7f7f4ece5dfdcdce2 +ebf3f8fafafafdfffffffffbf2ece4e4e2e0e3e8eff4f4f8fafcffffffff +fffffffffffef7f3e8e2dbd7dae1e9eef1f1f3f7fbffffffffffffffffff +fffffffffffffffffffdf0e7d9c8b195827c707e8eb6dcf4fbe3d3a77658 +42373e4e5669766b5343454c5d676552444a575f6d5a4f47505f61665a51 +4c4e62665e4b3b342b2833404139403e3f424545454640664f4f56ffdaff +fffdfafcfffffffffffff6e9ddd0beab7e756e7073706c6a68676b685754 +7badd9ffeef1fffffffffffdfffffdddf5ffcf6fbf8515291c2f26242220 +1f1b19181b1d202121212120222d2b2d42736a444241373c4d3731383b3e +3848667c998e3a12000013463c632b3a2f302d242d2628321916181a1e33 +251e1d2628202429231b174022192227261a181b16180c2e324724372e69 +7d6c7185a7ecfcfefffaede2c0a5856b556c665a4b405d783b2f342f3238 +73aeafb2bcfcff9f8b546b626f7d62566c76747974978b808a6473695760 +524b505550746f8c8883a3bdd974aac0dae6f0b7b45b5f606c6866685c67 +6661595e58504a61606f696f77675564687f9c6178777c9f939eafc8efd7 +d1ce79636753554e5e5c65656e5f5c555060565a5d665b6b8c7e84919d95 +8c9ca4b29b8c827b7870666d6c645e5b58504a474345595e55aaf6a34866 +93c1b58ed36f625859496caeae76647963a8dc77d6dfe9fefee659ddfade +bdb6aaa4c1f3dde3ebdbd4dee0ebe1defbf1f4e3e0f4ffe4e1eef8f0f8f4 +edfffffff1eefbffb5e2c5dcf9d7d6d2e8f0e2e2d3d0f4dfefe6cdf3e5e7 +f0c9e3efe5e2d7cfe1e3e1d5cdd3dee1d9d1d3dce1dcd0cdd7e2dbcfcbd8 +e3ddd0c7d3e4d8cdc0d6dcdac3b1d9e3b871242c3d3223241a1d18232426 +262623201d1c449eced9dfe8e0d5cfcececed2dae4eaedeeeeebe5ded8d5 +d5dbe4ecf1f3f3f3f7fafefffcf5ece6dcd9d7d8dbe1e8edeef2f6f8fdff +fffffbfdfefefdf7f0ece2dcd5d1d4dbe3e8ededeff3f7fcfefefbfdffff +fffefbfbfcfcfcfbfcf9f4f1e1d7c9b69d816c645763759dc3dbe4ccbe92 +624431262d3d425562573f2f31384953513e3036434b574439313a4b4d52 +463d3a3c50544b3a2b241b1823303129302e2f3235353536335a3e3d41fc +ccfdfffffffffffffdfcf4f3e8dccebea893665b54555855504f4d4c504f +3e3c6699c7f2e2e6fef9fdfffdf8fefff9d7e6fcb04d9d6600140d221513 +110f0e0d0a0a0c0f0f100e0e0c0f17241d1b2b574d272628222a42302d31 +282d3332251a1c2a22313856a4c8766f262d282d2d222315131a00010c11 +192c140b0a1519151d2725211f4c2f27313635344a59505043605e6a4046 +31647960534b457073717e66443d36435356455f5653585368895d5f727a +888095b5a6a2acf0ff9980445248576c5951656a5d605e86817980555c4f +3f4e4d4e55594b634f6b757591988f02110d1b30573e5f1b22252e28292d +253026190709080b152d26302c333b322737333e4c091a110920090a1229 +50434d5e1e1b2f24261c1f19251e1d060200000a0000000000000b00000b +120600050d1b0600000003040010191716171413181e222229210c5eb367 +153d79a68861b5574946533e4f8d98685e73548fb859c9dadbedf6d840bf +e3c79d938983a3d5c0c6cebeb7c1c3cec4c1e1d7dac9c6dae7ccc9d6e0d8 +e0dcd6ebecfadfdce9f097c1a6b9d5b2b0abc4cbbebeb0add4bfd2c9b0d6 +c5c7d0a9c3cfc3c0b5adbfc1beb2aab0bbbeb6aeaeb7bcb7aca9b3beb4a8 +a4b1b9b3a69daabbada295abb1ac9381b1c5a769222a35210b0a00080a17 +1312151514110c0b3389b6bfc4c9beb3b2b1b1b1b5bdc8ced0d1d1cec8c1 +bcb9b9bfc8d0d5d7d9d9dfe2e6e8e6dfd6d0c5c3c1c3c6ced6dddee4eaed +f1f6f6f6f3f5f6f6f3ede6e2d6d0c9c5c8cfd7dce2e2e4e8ebf0f2f2edef +efefefeeebe8e9e8e8e8e6e4dedbcac0b09e8569544a3945567ea5bdc5ad +a1754729150a11212a3d4a3f2616181f303a3825171d2a32422f221a2332 +34372b2422263c403a2a1c170e0b1623241c232122252828282720442a27 +2ce4b2e1e4e0dee0e3e3e2ded1cbc1b2a596816d403833373b3a3834302e +323020204b80afd9cad0eae5eaeff5f4fdf6e0b5c7dd912a7849000f081c +0e0b0a07070403010506080808070708111b140f1d493d191b211d263c28 +24292a26151a2b292236445f6383d3ec816d222720242115170b0e1a0406 +101416260d04040e140f131b171312402827343b3a333e44383526454352 +292f1c4e60463b373866696877644b4334363a392e4e49433e3348673a39 +494f5752709489899de2ed836a2b3c313f523c3349524b4c476c665d673e +4a4233403a393f423551405a57526b7d860c2f3547597551661c27293128 +26271e29241a0b0e0906071f1b2b2b323a2a1724253a5517281c102b232a +31476c5b626e271f2e1e1e1318111b181c0c0c090713050301070005210f +17242f2216242c3a2419151216130d1b231f1916110e11181b1c251e034e +984b00295e8b734c9d3f35323d283d7a804b3e5335709633a6bccee3e1bd +21a5d5b98473686281b39ea4ae9e97a1a3aea4a1c0b6b9a8a5b9c5aaa7b4 +beb6bebab4c8c9d6bbb8c5cc96faedddfff9e6e6d8f7f8e7f2d7edfdeefd +e5e3ffedfde6dff1f1f5e7d8e9edf3e9dedbe4edede7dfe1ecf4eadadff2 +efe5dbdeeaf0e5d7d3f0e9ead1d2e8f4f0c6d1e4d8ac3929434435393331 +333a36363a3b3e3b38363e8ad8e1e1e5e9ece9e8e4dddadbdfe2e8eef6fb +f9f5f0edede9e2dddde3ecf3f7f8fafdfffffffffffffffaf3ede7e4dee2 +e5e9eff7fbfcfffffffffffffffffffffffffef6ebe5dbd9d7d5d4d4d3d2 +d8dadee1e2e1e0ded9d8d4cdc1b0a2969690929baabfd8f0fffffffff0c0 +96703c383b4e66797d7a615546404a5c6a6f5a4e43475967655c4b464f59 +686e5e53565b5d5e4f4338372f3539393d454b4c4b48474c525456575153 +5f634efff0fffffdfcfffffffffffef3e1d2c2a7846b72696b73726a6568 +5b5e64759ed2f8fffffffffffffffffffffffbffffaa95f1d56989971629 +21222523201d1b1a1816191a1d1d1d1c1e1b1c23242c3e67644a5459534f +5b3b33383e3b2d3b668a9e8c4520000a1378506b2f4a342d2e29282d333a +2b2e2b141022221c1f1d19292b2324272d5d26191e1e1e0d19231c221621 +336c2c423a5c8b7072add7fffffff9eee2d6a178605a516c80635a545474 +463c3b232f3b67a5cbecffffffa08f7d817681736674797a6a74717c9487 +927a9b7b72706a68616a626c6b718b90a0a4ca90d3f5fff3f0d6e27c6366 +746c6d716a75796867716c594382cc6b65696f5876ffbb898a7b6d7caeff +bcc6f2ffffe7f1ff965f606a5394f3697b746b576266778497a3959fa69c +b6c2c8ced0d8daf8f9ffecdcd4d2d6c7b5bbae867471644e444e374b405d +59ddbf894beff8e2e08e806e5c5761538f9d67635d5c66c4d272a6fcfeff +ffee52edffeeddffe1bcc4c1d0c9e7d1dae3fff5ebf1d7e4ebf8f1d6ece4 +dee4dde6e5f9f2e6eff5e5fbfdf278dfd4c6f7e9d8dcceedf0dfe7cce2f2 +e0efd7d5f4e0f0d9d2e4e4e8dacbdce0e6dcd1ced6dfdfd9d1d3dee6daca +cfe2e1d7cdd0dde3d8cac4e1dadbc2c3d9e1d5aec5dfd7aa321c31312327 +211c19202124252624211e1c2474c4d1d3dce3e3dedad6d2cfd0d4d7dfe5 +edf2f2eee9e6e6e2dbd6d6dce5ecf1f2f4f7fbfffffffffffbf5eee8e1de +d7dbdde1e7eff3f4fffffffffefdfcfcfefefefdf7efe4dcd2d0cbc9c9c9 +c8c7cdcfd2d5d6d5d4d2c9c8c4bdb2a3938a8784868f9fb4cde1f2f4f5f5 +d9a97f592723273a55686c694d41322c3648565b463a2f33455351483631 +3a45545a4a42454a4b4c3e3227261f2529292d353b3c3b38373c42444647 +45474f513af3e2fbfdfefffffdf9f4f2eaddcbbcab8e6b4f564f51595951 +4b50454a50638cc1e9f9f9f5fbfdfefffbfffefefaffffa68be1bb4c6b79 +0011101313120e0e0c0b09090a0b0b0c0a09090c18201b1f2a4c4122272c +282b3d242126292b2d2e312f212220373c7da9fc8b751e2f24272a26231f +16190a101204091f1b1315100a181912161a265a281e26303c3d5d6e6263 +53575c8d4656485e7b4a2e4a59758c7f5c4a44515052595d4a5d6b59666b +668967676e62787b85adc4dff8feff9b876e6b5c69625c70736f5558515e +7f77846c8b69616162645c6356595154717686797f181c1d2422434d782d +262f382d2d3129312d11070f0f0700499c3d3130331a38cb773d341e0a18 +4ec129162851725081c445141b2a1a58aa1822170f0000000000010b000b +1000080c0d110f13102c2c362116121820180c212f17050d1413243b252e +0f1e0f947e521dcbe0cab864645846475b48727d5258585756acb35899f6 +f2f4fcde39d1f9d3bfe2c09ba5a2b3accab4bdc6e9d8ced4bdcad3e0d9be +d4ccc6ccc6cfcee2dbd2dbe3d3e9ebe05cc1b6a6d6c7b5b8aac9ccbbc7ac +c2d2c3d2bab8d4c0d0b9b2c4c2c6b8a9babec3b9aeabb3bcbcb6acaeb9c1 +b6a6abbebab0a6a9b3b9aea09bb8afb09798aeb6a6809dbfc39d2a142722 +0f110b0708110e10141515120f0b135facb7b8bdc1c2c0bdb9b4b1b2b8bb +c2c8d0d5d5d1cdcacac6bfbabac0cbd2d9dadcdfe5e9eaeaecede8e2dbd5 +d1cec7cbd0d4dae2e6e7f1f1f1f1f2f1f0f0f4f4f6f5efe7dcd3c3bfbbb9 +b7b7b6b5b9bbbcbfc0bfbebcb9b8b4ad9f907e74706c6c758398b1c4d3d5 +d6d6ba8a603a0a060c1f394c504d35291a141d2f3d422d21161a2c3a382f +211c252d3c4131282b3033362a1e151610161a1a1e262c2d2c29282d3335 +37372f2f383b22d9c7dededcdddedcd9d6d1c5b4a293826643282f2a2e38 +3a3330362d32384d76add4e6e8e5ecedf1f1eff6fbfffffbec8b72c7a02e +475d000d090c0f0b0a070704040105040705060306070f17121621433d22 +2a312f2f3b1e171c261e0b0e2d382730416168aadbff9d7f30402f2b271f +1f1f1a20151c18050316110a0c0803100f080b111c552724313c463f5259 +484531353c702b3d2f496c3d25455c758475554845544c47474a38484e35 +3e3f3e623c3c43374d566996b1cee8efed87725753434f4641555b594042 +3842625d6a5274534d4c4b4b4650464a4042606575708433546878738277 +8e33232830242428232e311a151e190b003e86262325290b21b1602f3526 +0f1840bd4647648c9f6f8fca4c1b202b134ea31528221e0c16151c1e2731 +242d3526393f4247484b4a67656f584b4647504335454a2a1617150d172d +19260b190683623406b5c4ae9f4e4c40313043326068373a3a3a3c909435 +79dce6ebebc51bb9edc8a5c19f7a8683938caa949da6cbbab0b69ca9b1be +b79cb2aaa4aaa4adacc0b9afb8bfafc5c7bc58c6ffeae7ffede4d8e3ffed +eef3cefde8eafed4f8feecf8ddddf2f1edeadce6f0eee6dddde6eeefe4df +e6f3f1e1dfe9efece1d9e1eeece1d1dfeeede1c6ddf1eed8bdd6e7c46c28 +2e392f383e3b393331313334373b3d3e344b99bdd9e4e9e8eef1f4f4eee6 +ded9d8dce1e7ecf3f9fdf6f8f9f7f1eae4e1dde0e7edf2f5f6f6fafeffff +fffffffffffef9f1e9e3dedadfe5eef7feffffffffffffffffffffffffff +ffffffffffffeeeceae6e3e0dededbdadadee7f0fcffffffffffffffffff +f5d4a57a524554618da5b6ac8e705746444c5762686454454651646d634f +45475d66726450484c5d62574e453c343e4d4446474b50524b414e4c4c4f +54575c615e62636947fff8ffeef9fffffffff4e9dcd2bda1836d6b73796d +625d5e698092b2dcfffffffffffffffffffffefffdfffffef9f6ffb17fd1 +f6b9aca41e282a1e2221201f20201f1e2121232223252626262325363441 +48525361605663453c352c3736395f879a8a5506000c182f396f2c413631 +2b321b1c2124221b1b222a110e07192016272b2c282c2e561d161c171301 +141c080d25473a8837424664876fa2edffffedeef0dab8835b5148575f73 +c2875d655677324f9449202b7be6fffffcffffa8948286bce5898a718565 +20ceb5426686938390777e877c8392865e6b386e707373a4ffedddfffff3 +efe6bf636a70727c837d8286827a828a767998fcf3727d80877eb7fdada6 +74739385c3d5e0d8f2fce5dddfd5a36b7a6778bfbe9d758683767d95c5e9 +e1ffecdbebe4f6fbfffffffff0fff3fbfffaf7f9fff7ecf3ffbf9c9e8d67 +55656458539981f47882f5fedee1e4b761406324325276745b3a2c5157eb +ab57f8ffffffffcb48ffffe9bfdcccced3c3e3d5cce0edcfdee4e3ece7f9 +e9f0e7dbebe8c9f0dbf9dbd3d8fbd7ffeccfcdd33aa8e5d3d2fcded7cbd9 +f6e5e3e8c3f2dadcf0c6ebf1dfebd0d0e5e4e0ddcfd9e3e1d9d0cfd8e0e1 +d6d1d8e5e1d1cfd9e1ded3cbd4e1dfd4c2d0dfded2b7ceded8c3b0cde3c2 +661e20271c232926221e1f1f1e1f202123241d3684adcbd9e0dfe3e6e9e9 +e3dbd3d0cfd3d8dee5ecf2f6eff1f2f0eae3dddad7dae1e7eceff0f0f3f7 +fdfffffffdfafaf8f1ebe3ddd8d4d8dfe8f1f8fcfcfcfefefdfefefefeff +fefefcfafaf9f7f6e3e1dedad7d4d2d2cbcacacfd8e4edf3f9fefaf4f8ff +fff4e0bb8c613b2e3d4a7890a2987d5f46353038434e54504031323d5059 +4f3b313348515d4f3c363a4c50453c352b232d3c3436373b40423b313e3c +3c3f44474c514f53535733f4e9fbe8f6fffffdf5e5d6c4b9a48867514f57 +5f554a4649566c80a1ccf2f9f7fdfdfcfef8fefbfbfffafffffff9f7ffb3 +7ac5e2a19289020f160b0d0c0b0a0b0b0c0b0c0c0b0a09090a0c12111422 +1b2222241e27282137201e1d182b352a282b1d1f2c225597bfbf81821d28 +282c28321b1307030301020e210e0a0310160816191a181e234e1b161f26 +3338667e7176889c7ab75a5a5a66693040717e786464594f5149546d717c +6e6faf7a6d806a8b4b6fba7c626698eefefaf0fefaa58b7672a5d07a836c +805a0eb496234e76877b856d6f776c7382764d5c2f6a6f726e8eed7f2118 +181638555110242f282c2f27282618050209000a3baeb4312c27322f6fb8 +655414041910647365361b1921437e8e5415221431796939000909000000 +182f1d3e2e2231262a2729302a260c1808101613141a25211831632b030e +170a15342c1802402eab3d51cbdecbccc092462b4f152c485b55482f2b4d +48d59040eafffdfafcb62ee5f0cea1bbabadb4a4c6b8afc3d0b2c1c7c6d1 +cddfd1d8cfc3d3d0b1d8c4e2c4bcc1e7c3f4dabdbbc1208ecab4b3dcbdb4 +a8b5d3c1c3c8a3d2bdbfd3a9cbd1bfcbb0b0c3c2bebbadb7c0beb6adacb5 +bdbeb1acb3c0bdadabb5bab7aca4aab7b5aa99a7b4b3a78ca3b3a99686ac +c8ad5812151b0d121613100b0b0b0d0e101214150b236f94b0bbc1bec5c8 +cbcbc5bdb7b3b2b6bbc1c8cfd6dad3d5d6d4cec7c3c0bfc2c9cfd6d9dada +e0e4eaecededebeaeaeae4dfd7d1ccc8ced3dce5ecf0f2f0f4f4f3f4f4f4 +f4f3efedeceae8e7e5e4cfcdc8c4c1bebcbcbbbababcc5ced8dce2e4e0da +dde3e3d7c19c6d421c0f1e2b5b73877d61432a1b17202b363b3727181924 +37403622181b333c483a241e2232382d261e170f1b2c2426282b31322c21 +2f2c2d2f35373d413a3c3a3f1ad8cadbc6d3dbddd9d2c4b5a0917c60402a +28303a3128262a3851688fbce2e9eaeff1eff3eef3f2f2f8f3fafffffff9 +f39d64afc985716e000b0f040a09080708080807090909080808090b110f +0d1b161d212726333329381a1411111d170d2130252f4a477bc0ece49791 +323d3732232a19160a0a120e080f1c050100070d000e0f0e0b151d4c2022 +3039403b5a67504e5c7255953c403f515f2b3d71847b5e5a5248483e4a5f +616a5954874d3e554566234691533c4886e3f4efe0edea967a605986b35d +69566c46009b7a06325c6f646f54585e535c7269465726616a6e6a90faa4 +6b78847d8b8e6e182229252b2f2a31342e202328151d45aca31f2b2b3528 +599b4c461814281652667a68686a5f69878c5a22321e2d6f623b152b2e21 +253557705f7c6a5c6e646f71747a75725764535b5f59595b655f55668a4b +22292712152f2b190844289a1f31b3c7adada6782b103700142f46402a11 +0f3431bd7320cdeaf4f4eda113cee6c3879a8a8c9585a6988fa3b092a3a9 +a8b3acbeafb6ada1b1ae8fb6a2c0a29a9fc4a0d0b699979d3b6febffdcf9 +fce2ebd6f1ffe5f4dfdef9e7f6f3d7fff4eff0e2ebebf2f6dfdbe6efefe4 +dbe0ebf3ede3e0e9f2eee4dee9eee9dbd9e5efedd9cfe8eeeccfcfe4eae9 +bebee2d9ab4c2a323232383a3a333332333234373c3e4052a9cecfc3cbd3 +dce2ebf1f4f4f2f0e6e2dfdcdbdfe5e9f9fafbfbfafbfdfffaf2e6dddade +e6ecf9fbfcfffffffffffffffffffffdfafbf9f3e6dbd6d7dde1e8ebf2fa +fffffffffffffffffffffefdffffffffffffffffffffffffffffffffffff +fff4ddc39f805b5d697ca3d5eae6c09c745d4c40404b6569655749474f57 +6c675745424e5d63644f454658655b54443b4a50614d50504f5a61574842 +4b56595b5d5d575355597263764c2ac7fbf8edfdfff8e5ddd6d0ba987365 +64645f5b556d8eadcbe6fbfffffffffffffdfcfffffffffffffffdfef8f6 +fcfafcfef9fffffff99f1d33282d292a2927292a2a292c2d2e2f30313439 +3939333532464e545b60625e744f4841362d2a387095917c5760491b1419 +32532847272a19261f188045061d2020151c973e091c1c201e29232a2c47 +2d2424171600000a0e0d1f3910473d42456b6699e2fdffffffe2cd926c29 +172d21193b90e3aa605a626632c4d07456a1ebfbffe7abfff5cba08ea4f0 +d78f9a978d3e57ffddcef0edffffe9b68c98a0a5948a97ca0000000d4ab5 +ffffd1faffffe9e3bfdf7991767f8e8fa7939da2bfede5dee3e6ad94a9a7 +8c61cf96afffaa9db3d9eaabfff7d1ffedd8cfb39f7c906c6cd4c6b5b1be +c8e4fdfffffffffcfffffffcfff6fefffffffffffffffffffffcfcfbf9ff +ffefdee6dcbca7adb1b7a1aed8ff62ddfbeddee6f7a979ccddd9cfbc8a7b +ddfff8f1faff8671ffffffffffaf57ffffe0dbd1d6dae3ebd1dedce1dbd5 +d5eed6e8d2e4e8ffefe9ecffb6d3d7f8ffebccfff0e9fffff2f61c50cff2 +c4e6ebd3decce6f8dcebd6d3ebd9e8e5cafbe7e2e3d5dedee5e9d2ced9e2 +e2d7cdd2dde5dfd5d2dbe2ded4cedbe0dbcdccd8e0decac0d9dfddc0bed3 +d7d6afb2d9d4a94720241e1a21252823211f1e1d1d202224293d94bec1b8 +c2cad3d9e2e8ebebe9e7dddbd8d5d4d8dee2f2f3f4f4f3f4f6f8f4ece0d7 +d4d8e0e4ededeef0f5fafffffffffffffffefcfcf3ebded3ced0d6dae2e5 +ecf4fcfffffdfffefffffffefaf9fffffffffefefcfdfffffffffffdf9f8 +f4f7f2dec7ab8766424452658cbed5d1ab876049382c2f3a515551433533 +3b43585343312e3a494f523d333446554b44342b3a3f503e40403e495046 +37313a45484a4c4c4642444a6355663b17b4ebeae4f8fff0dccfc6bca07c +57494a4a47433e597e9ebddbeff8fdf9fbfefef6f7fefcfffefefffffcfe +fafafffefffff8fffdf3e28400160b100a080707090a0a090a0b0a080708 +0a0a0606050d0d212524222323213c2020272c29241d2a301315378eccd0 +d6be917b293b252c1727261a72320013100e07128c340012121816232028 +29462c23241d27204e8bafbecbd07f946e60576534446f74727f7c555246 +6c606f937e646ca4d89f727574723fd5ea9c93dbfffff4d69ffbf1c99883 +93ddc78194948a3545f3c8bbe2e5faffe8b180838385757082c4041a2747 +78c8f8bc261d23252c4e5c92283711121814250b0701134242485e714622 +0d060900875a6de13811103e7955d68a0b1f233d767248121b001682653d +1c1920333d3b23211c1a282d2e24311a1e231e2517271314161617111415 +13296134141e2619192720240e2b72b82fb6d9d3cfd6d9875fb8cbcdc9b2 +705fcaf9f8efebfb715ef5fef8fcfa953ffbf9c5bdb2b7bbc4ccb2bfbfc4 +beb8b8d1bbcdb8ccd0e9d7d1d5f89fbcc0e1f5d7b8f0dcd5f5fddee2073b +b7d9aac8cdb2bca9c6d8bbcab7b5cebccbc8aadbc7c2c3b5bcbcc3c7b0ac +b6bfbfb4aaafbac2bab0adb6bebab0aab4b9b4a6a2aeb7b5a197aeb4b295 +93a7acab868cb8b79234141915101314120c0d0e0d0c0d101315172a7fa5 +a69aa3abb4bac3c9cccccccac0bebbb8b7bbc2c6d6d7d8d8d7d8dcdedcd4 +c8bfbec2cacdd3d2d4d9dfe6ecedf1f3f6f8faf8f7f7f3e9dcd0cbcaced0 +d6d7dee4e9ecececf3f5f3f3f3f2eeedf1f1f1f1ededeceaedeceaeae9e6 +e3e0dddfdac6af936d4b242533466d9fb8b48e6a452e1d111520383c382a +1c1a222a403b2b19162231373c291d1e303e342b1d14232b3e2b30302e37 +4034271f2a3338383c3a363034374c3b4c1f0094c9c7bdd0d8c9b5aaa299 +7d5732242727231f1c385d7fa0bfd5e2f1f0f2f4f6eef1f8f6faf9fafbfd +fafcf9fdfffff6efe6ece6d8c2690012050a080908080a0b0b0a0b0c0c0b +0b0c0e100f0f080d071b2124282a2b263d1a161a231e0e0a283821284ca6 +e8effadea5872e3f28290a191f15692e051e130e0710862b0009080d0915 +111c224434333c353926446f8588939b547050443d4f2b3f686e707e794e +4a365243597e694d4f7fab714a545e5c23b3c57772c3fffff4cf8fe8e5bd +8d7179bca6647e8379242fd8a99bc8d0e7efd69d6a6e717870718bd01227 +2c4978ceffe375869796888e789a2f411f253030473337374d77716d7981 +492a34322b0a794257dc4f383b5d7548dcb1607f6d697a6c512836121577 +5e4644535e778a8f7c7a746e7a7c7f7786717679757b6b7c67696866655c +5e5d5b689461444c4c38333f3d41283b70a81095bebab0b5bd6c449db3b3 +af995947aadadedad8e65440dbecf0f8ef8425e3efbca593989ca5ad95a2 +a1a6a09a9ab39eaf97aaaec7b5afb3d67d9a9ebfd2b495cdb9b2d2dabbbf +372ea5fff7dbfff7eae9d6fbfde4ffd4eafde7fae0e6fff1f6f0dae3f0f0 +f2dddfeaf1ebe1dfe7eff3eae1e1eef5ebdce1eceee2d8dde9f1e4d0d9ed +e9e4c8d6ebead4b0cbe5cd782b2438343535333136363837373637363549 +9ad9edeeeadbd5d5d7d9dfe7f1f7f5f4f1ede7e2dfded7dfe9f3f9fbfcfc +fafefffffff8efe9e6e5e4e4e6ebeef1f8f7f9fefefefefffeffffffffff +fbf6ebe3d9d1d0d3d9dbe0e1e5ecf2f6f9faf4f6f9fcfefdfefdf3f3f4f0 +e6d9cdc4ab9d8e84848ea5b8eff6fffff2cd96725a47394258696f715851 +4a4a555f605c5047465465695e514b4e5e5d585347475f525c5159415159 +695e53535a5e5953545b64665e555357554e5d59ecfffffdfef6e9e3dbc5 +9a765a595b657690b4cef0fefffffffffffffffdfffffffffffff7fffcfc +fffcfefdfefefaf9f5fefafffffffbae2a33342f34353232323332323436 +3839393b3f4448463b3a3549555b737076788c513f38292b3e527a94a2b9 +549136000b17135d1a9f361e3d23084bffa6000e0d140e78ff880e10161d +171316232123280a1316042b3e220700142a4d1d2e47675d80d6f1ffffff +f5a3b9a95b50505a4412157aa2713a2c3b140fad9ec6cbd9edfcffd28aff +ffc5534da7e98767aab6b6b4c799c0fffffffdf8fcffe3ec965052454db9 +293d42559ceaf3ffcef2f3f6f4f7bde6c4b7aefdffc2c0cdd4e7fffff2dd +fadbc9d7e8f4f2b9ffa9afb2e4ffd6d8dfa9ffffccfdf5e5efcac5e8f0fc +ebddd9eae3e1e2dfe8f3f5fff9e3f0e1e7e9f2ecfbf2e8f1f7fff4edfbf8 +fef8f2f2eeedece5ecefece3dad7e9dad1aafcffa2fef0e2d8dbf5a8d7ff +ffffffff9e8ffffffcfffffda1bfffffffffffba86fffff7b9d9ccd2e2e5 +bed3ddcae9d3dfd8d9e3e7c0afd1d9dcc9e9f3cbedc2dbf6eef1bcc3cec1 +b8dc180f89ecdfc6f9e6dbdcc9f0f4dbf8cbdfefd9ecd3d9f4e4e9e3cdd6 +e3e3e5d0d2dde4ded3d1d9e1e5dcd3d3dee5dbccd3dee0d4cbd0dae2d5c1 +cadedad5b7c5dcdbc3a1bfddcc78251a231b1a1e232325232322201f1d1c +1e3285c7dde0dfd2ccccced0d6dee8eeeeedeae6e0dbd8d7d0d8e2ecf2f4 +f5f5f4f8fcfdfaf2e9e1dad9d8d8dbe0e5eaf2f3f7fbfefdfffff9fcfdfd +fefbf4efe5ddd3cbcacdd4d8dcdee3eaf0f4f5f6f1f3f6f9fbfaf8f8f1f1 +efeae0d1c3b89b8b7a6e6c768b9ed6ddf4f3dbb6815d4532252e44555e60 +443d3636414b4c483c33324051554a3f393d4c4d484337374f424b404a32 +4149584d4242494d4842434a53554d444246473e4c48d9fdf8eef1eae0d7 +ceb387604341434e5f7ba1bee1f0faf9fafffffffef9fbfffffdfdfff6ff +fbfdfffdfdfefffffdfdfbfffbfaf7fce290080d0f080a08080808090808 +07080706060607080100000200141a19261f263050221f2626282b222324 +245838c9ccc0d5c4819620963b2a40291756ff9e0118080a036efc800607 +0f19141319282a2d32161f25125398b1cadceeeee38a70697444386f7b81 +8772693a8dc2bee1f4ffda8f6fb1b3816e6c714031c6b3e3f9fffffffbc3 +82fffec24c4397d9795ea5b4b3acb788b3f8fffffefdffffdcdd7f383e3b +53d5628898a4d3ffefd531231f2637533e744a331f656b1e171e1c284057 +3c3a6a574c462a305040b26a614a5965374c7b6aebe71a2032509e86565b +4e64777a726b38262a1e110b001712091c0d0d0a130b180d030a0e200a03 +0f0b110b04040008171007070f13171621171f1792bd75e0d5cdcdcedc8b +bff7fbfcfffe8675fafffefffce892b0f6fdfcfdf29d6eeffadf9dbaadb3 +c3c69fb4c0adccb6c2bbbec8cea897b9c1c4b2d2dcb4d6abc7e2dadda8af +baada4c8060074d7c7abdec8bcbaa9d0d3bad9acc1d2bccfb3b9d4c4c9c3 +abb4c1c1c3aeafbac1bbb0aeb6bec0b7aeaebac1b7a8acb7b9ada1a6b1b9 +ac989fb3afaa8c9ab1b0987897b9ad6017112017110e0c0911121211100f +0e0d0e2070afc4c5c1b3adadafb1b7bfcbd1d1d0cdc9c3bebcbbb4bcc6d0 +d6d8dbdbdce0e4e5e4dcd3cac2c1c0c0c7ccd4dae4e7ebf2f6f8f9faf6f9 +fafaf8f5ece5d9cfc5bbbabdc1c7d1d5d7dee4e8e9eae2e4e7eaeae9e8e5 +dcdcd9d4c8baaaa082736156545e7283b8bed5d4bc97644028150a13293a +44462b241d1d2832332f241b1a28393d322725293636312c2020382b372c +371f31394639302e3739362e313641413b3030322d24302ab9dcd4c7c7c0 +b5ada48b5f3b211f212e3f5c819dc2d3dedde0e8eaedf2f0f2f6f8f6f8fa +f1faf6f8fbf8f9f9fbfffffeedefe9e7e1e3c376000a07030b0b0c0a0c0b +0c0a0c0b0d0b0d0c10120f0d0403000e161a2c262f34501a10181f23241e +2b323a6c47d8e4ddf9e698a11e913e2a371d1450ed9107220e0b076df375 +000005100b091021252e3b2435381f538c959ea7babebe6b55505a2e2c66 +6d737d6d683680ada1c2dbe7bd6f4c8a86544a52633119a892c4dff6ffff +ffbe6fecf5bd46377db7564192a8aa9fa06c93dbecf3f6f6f8f3caca6f2e +3d4361eb80a5a7abd8fffefe828b9094959a69956f5b4d96a15a58636675 +8c9d77678b6f5e656a788b63b059575383a06f717b5be4ff7087807a9d7b +677e7d8a80746b766c6d726d6c6e667c7060706164637069746a60666979 +6158635d615952504c4d51464041444443424f43412a92ab54bcb8b0adac +bd6da3dce0e1e6e46e5ad9e0e6efedd57591ddedf6f8e88d54d7efd3859b +8e94a4a78297a28fae98a49da1aaaf8675979fa290b0ba92b489a4bfb7ba +858c978a81a5332157c0ffe7ffffe7f0d7e0ffe9faecd4fbefeafad6f2fd +f1f4dfdee5ebf7e8dfe4ecefece5e4e7f1f0e8e1e8f1efe4dce6edeae0da +e0eaebdcd1e2e8efd5c8dee6e6c0b6d7d6a1441b36383936292d33343636 +373534332d4184d5e8eaf2ede4dfdad6d4d7dce0eaeef3f6f6f3f2f1e8e4 +dfdbdce3ecf3f4f6fafefffffffffffffdf7f1e9e4e1e1e1e5ecf3f5f8fb +fffffffffffffffffffffffffffff7f2e8e4dfd9d3cdc7c3c8c8c8c6c3be +b9b7b9b4aeaaabafb4b7d1d9e8fbffffffffffe2c59a654337485e788c87 +7666594e434c575d5e584d444454696d563f41525b5b62554b4f57686557 +5958604d49454e4d4e53585b5d5e4c535e636059585b605e578afffff2ff +ffedbf946f575e6e92a8cdeffffffffffffffffffdfcfbf8fffffff9fdff +fffefffffffffffdfffffcfff4fffffffaffffffb3c83533473c403e3c3c +3b3b3b3a3e3e40424344454a514e4a544c5c6e818c8d8e7e894730222c2d +41589acfe4ff44224006052364241c70312717210c28967e0000001a0958 +9e6d13150f161d1617170900230005215395852d060312183800001a456c +cbf1f2f2fff4d0b1a05c292612142a364c9e61470600131c5aa66fe4f1f2 +fbf9ffbe78ffffeaaeb8eabd7ceefff8ffffff83bafffffff7f8f5effcff +fbfef2d770393b3f3aa4eafaffffbeeeece7f4fff1fffafff8fffffdfff7 +f7f3f8f2d9d1fcd7d7ecf6e5dedeffded4cdeecbcaffc9bdffffb7edf8ea +fef2ceeaf5dff5f6d1c8e8f0f8c2d7effafbe5eeffd0d1e4edf1f4f5faf5 +eef5f4fdfff2f9fefbfffef9f3f8fcf8f2f3f2ede6e5c6a7fff8b9d8def2 +f1f0db8ee3daf5fef0ecb5bee8dcfff7ffe08ed9e9e6ffffffac8da9c4ff +b4ebc4dff8f5ecdad4dbffd0bdb8e7e7f3f8fce6dad8c7bbc0beffe5d0ea +fff5fff5fbfff4f115043aa3eacfeaf7d6e1cad5fce0f4e3c9ede1dcedc9 +e5f0e4e7d2d1d8deeadbd2d7dfe2ded7d6d9e3e2dad3d8e1dfd4ced8dfdc +d1cbd1dbdccdc0d1d7dec4b9d0d9d3ada5cfd4a24312221e1d1f1d232423 +2323211f1d1c162a6fc3d8dce4e2dbd9d4d0ced1d5d9e3e7ecefefece8e7 +e1ddd8d4d5dce5eceef0f4f8fcfefffffffffbf5eee6dedbd9dadce3e7e9 +ecf2fcfcfdfefffffffffdfefefefef8efebdedbd6d0cac4bfbbbdbdbdbb +b8b3aeabaaa59f9b9ca0a5a8c3c9d8ebf7fafbfdf2cbae83502e22334a64 +78736252453a323b464c4d473b323242575b442d2f404a4c51463c404859 +56484a49513e39363d3d3d43474b4c4e3b434d534f49474b504f4679fbfb +e0f7ffdfb1865e44485b8299bee0f6fefffef9fffffffffffefbfffffff7 +fbfffffcfffffdfffefdfffffcfff5fffffff8fffdef99a60a0316090c0a +07080809060607070707060506070b07050e050d131a1a1a26294d272826 +2e22170f2f5369a62556d6cbc4c9dd681e613b3a242f243b947d0c140f1f +0a589c6a10110a121b181d231d0f4517304669bbd9b9d4f3fff4ef6a3f44 +433c6c818d889478698ff4fbeafdf4f5feefd6ff9e8a7980978faedd88f2 +fffffef6fcba71fbfce8a8afdbae6fe7fdf7fef7fc73b3fffffffafffffc +fffff8fffffeae8fa9ac92dffffefadf272f3230394431443d422d32352b +2f272723292f29387b5d52503a202b4fab906640412959c5949efeee1825 +4a64b1a03928180f5c80694c353052180f0e010b1b3e69270c0e0e0d0e10 +15100a11101a230e12161015120f0f14120d0d12110e0716171db8be92be +c9e3e8e8c775cbc6eaf7ebe19da5d8d3fff6f9cd80ced9d9fffeeb8d7595 +aefa99cea7c2d9d6cdbbb5bcf9b2a29dccccdae0e5cfc3c1b0a4a9a7fcd1 +bcd6f1e1f6dee4f6ddda0a002a91d5b7cfd9b8c2aab5dbbfd4c4abd0c4bf +cda9c5d0c4c7b0afb6bcc8b9afb4bcbfbbb4b3b6bebdb5aeb4bdbbb0a7b1 +b8b5a8a2a8b2b3a495a6acb3998ea9afa98277a1ae83310b231f19110308 +0f13141413110f0c06185aabbfc1c7c4bcb9b4b0aeb1b8bcc6cacfd2d2cf +cdccc5c1bcb8b9c0cbd2d6d8dce0e6e8eaeceff0ece6dfd7d0cdcccacdd4 +d9dbdee1ececedeef1f1f3f3f3f4f6f6f8f2ece3d2cac5bfb9b3aca8a9a9 +a9a7a29d989597928c88878b8e91a9b0bed1dadddedfd3ac8f64310f0516 +2f495d5849392c2118212c32332d231a1a2a3f432c15172836373d31272b +3344413337363e2b29232926292c33343837272c393c3b32333436322a5b +dad7b8ccd3b2845932191f33607a9fc3d9e3e3e3dfe8eaeceaeaebeaf3f4 +f3ebeff4f4f0f4f4f1f5f5f3f6f4f0f6f0faefe9e3ece6d4788b01011106 +0e0e0d0c0d0c0c0a0d0c0e0d0e0d0f10150f080e0109121e242731304c1c +131529282320436b88c13464efeeeeeffa75195c47492a3228377d680d1e +14220e568f570106040f1c171d231c10471f394c66b0c99fb0cce1d8d957 +2b302a25586b716e85706a8de4e5d9eddcd7d6c6b4dc745f5867898096c0 +6bdbfafffffdfbaf5ee8f7e9a8a6c48d4dcbf1f2fbeee85999ecf4fdffff +fff5f4f1e9f5ffffbba6ced3aaedffffffff748f958d92987e918f97868d +948c91898983837d676497746d7f87787c85ba8e716083728fe18e89ebfd +6a889287a994565d5d49717e60566c79945f656e676e6f87ac6c5c646b6c +6e6d726b6368656c755d60625b5f5c544c4f4f48464a49443d44362cb1a8 +719baac4c7c4a656afabcedbcec58387b6b2ece4eabc63aec0c8f6f8e27b +597aa0ec7eae87a2bcb9b09e989fdd968580afaebbbec3ada19f8e828785 +d9ae99b3cebed4bcc2d4bbb82f362a6ef3ffdcfffbdaf5daeafce4fadede +f9f1f6f5daf7f3f3f9e2ddeeebf0e1e0e6f0f4ece4e1ecf2f0e5e3ebf0ef +dbe1ebf0e7dad9e1efe5d2cfebebe9c0c5e5ebdcacc5ddc0752132353a39 +282f2d2f303135363939382b49b2dae4eeeef0efefece5ddd6d2d7dce4eb +f1f5fafcf8f9f8f4ede4ddd9dcdfe5ecf3f8fbfcfcfdfefffffffffffffc +f6f1ebe3dfdedcdee4ecf3faffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffff2dfbd9f735a565b74a0 +b6c6b38e66514a46474c5b6365574644505d666251414a6165575d60675a +4b48485353505259564f4b4e544d484a4f53535255585c5e5b5656585662 +5273ffffe7e4cb885a6fa2caeffffffffffffffffffffffffffefdfcfeff +fefdfffffffefdfffff4fdfffdfdfff8f7fff7ffeffafffaffa96ed9394e +464d47444341414241424446484a4a4b4c4e4e5253616b8c9fa8a0a99f70 +754a3f272535484e96ebffff82223e0a0a0c5b4a314500000035002d7a5a +05152b1c0c4374580715110f140a130a0709722c242fa4d2aa491c00000d +2b37799236c0f1eff9ffe5ada2b4480a09030108061b43862a8a58404654 +828c7afffbfbffffffb885ffffffffffffa4a9ffffffffffff7cd2fffff9 +fef9edf5f9fafff8e0d58c372e42c0ddeaffffffdefff3f4ffffffffffff +fffffffffffffffffffbf2e8ffe2f9f3e2f6e7f0ffe9ffe2d7f1ffffcebf +feffd7ddd9edffe8f4f7fff4ffefe7b0ebffffece9fafffff0e3ffffffd7 +d3f1f9f8faf2f1f4f1f6fffff3f4edf5faf5f3eff0f6f5ede7e1dcd2adc2 +fbc9a186abf8ebe7d1afbb5ed6feffddaac59a61f9ffffcaa7f78290ffff +ff99b5a382ffb8d3c7cec7ced6bfc8a4d2dfbbbdbdc9dce9fddeded9f5f1 +f3f4eaf9ffe9dddde7f1e3f7f9f211180c51d8eac4f0e8c9e6cddff3def1 +d3d0ebe3e9e8cdeae6e6ecd5d0e1dee3d4d3d9e3e6ded6d3dee4e2d7d3db +e0dfcdd3dde2d8cbcad2e0d6c1bedadad8b1b9d7d8c69ab9dcc1741a1e1b +1e231e281e1e1d1e1f2022222114349dc8d4dee0e7e9e9e6dfd7cfcbd0d5 +dde4eaeef0f2f1f2f1ede6ddd6d2d6d9dfe6edf2f5f7fafbfcfeffffffff +fbf4ede8dfd7d3d5d5d8dee6edf4f9fbfdfcfbfbfdfefdfcfdfdfbfafbfd +fdfdfdfcfbfbfaf9faf9f6f6f8fcfcfcfcfaf8fdfcf2e7d4b29260433f44 +5f8ba1b19f7a523d363233384a52544635333e4b54503f2f384f53474e51 +584b3c3939444441434a47403b3f433d383a3f43434245484c4e4b464648 +46514163feeed6d3b976485d8db5d8f8fcfffffffcfcfefffffefeffffff +fffffdfafdfffffbfafdfff1fafff8fafaf5f5fef3fdeef9fff0f59150b1 +091609100b090809090a090709090a09070506070707050d0b1d1c160310 +14012c253a322c2c1f0b3b85b1e86c53d2cbc4b7eaa74a4e2815266d3454 +8060273f462b15456f50001111131d182725282f9b595458bcf8f7d1f1f7 +f9fbfddddfbd247d887c98ae775483ebf2f2fcfcfefffcf6eaff7ee8edf0 +f0e8eece92fffffdfcf6ffb980fffffefdfefe979efefffffefefa6cccfe +fdf7fefffaffffffffffffffe4a1a2adfffffafff9eb4b43404047322e27 +28272b282927222f3129353644518c6e7f622c34305bb19a9860426fe5e7 +ada7faed4a2c417bbc9a5e2c151864798b464a74bd472a24211d3043cacd +7f3117231f191e16171b1a1f5c2a1a1910161915120e11181a120a090d1a +1a54b19b83709bebe5e1c198a34acdf9fdd295ae8a58fbfffcb89cee7281 +fffaea789e9371fb9eb6aab1a8afb7a0a985b4c1a0a2a2aec3d1e6c7c7c2 +dedadcddd6e5edd5c9c9d0dacce0e2db090e0143c5d5acd5caabc7adbfd2 +bed2b5b3cec6c9c8adcac6c6cab3aebfbcc1b1b0b6c0c3bbb3b0b9bfbdb2 +afb7bcbba6acb6bbafa2a1a9b7ad9693afafad8891b0ad976887b09f6012 +201e1b16050c0b0e0e0f1112141411042188b0bac4c3c8c9c9c6bfb7b2ae +b3b8c0c7cdd1d5d7d5d6d5d1cac1bcb8bec1c7ced7dcdfe3ebeeedeff0f1 +f1f1eee7ded9d1c9c5c6c5c8ced6dfe6edeff3f2f3f3f7f8f7f3edeae8e7 +e8e7e7e5e6e5e4e1e0dfe0e0e2e5e7e8e8e6e5e1dfe2e1d5c9b694724024 +2025406c8494845f37221d191a1f30383a2c1b1926333c38271720373b30 +373c43362724242f2f2c3037342d2b2c2f262123282c2c2b2e313537342f +2f2f2c352342dac8aba78b481a2f6088aed0d9dfe1e0dfdfe1e4e7e7e9ea +eaecf0efebe7eaedede8e7eaeddee7ede5e7e7e2deebe7eed2dae6d7db75 +2e970015060f0d0d0c0c0c0d0c0b0d0e0f0f0e0d0e0f0b0b050d0d242a2b +202f3114331f272125312f1d4c9accff7861f0f6f3e3ffb8464b40363c7e +42536646294d4d301a425c3b00080f1624212e2c2d329d5c5854aee3e5bb +d3dbe6ecf0cfd1ac0e636b5f7895684e80e6e5e4f8f8ece8d5ced0e75ac3 +d0dbe3dad7b37aeff7fcfffbfaa96aedfbfffff8e8777ee4f6fffff8e753 +b6eff9fcfffffffffaf2f4fbfffff0b7c7d1fffff9fdfeff92a19b9ba18f +918e919197989c9a95a09f929486837ca681968b798d8395bf96a07c7caf +fff69e8bddf18f867e94a98677645e567c797e4876b3f989787a7e767b81 +ffffb87363767672766d6b6c686ca4705f5d53575b544e484a515248403c +3b3e2d57a4815f4b7acbc3bd9f78872fb0dce0b67a8f6837e3ededa47ecd +586ef4f3df657e725fea83968a918b929a838c6898a583858590a4afc4a5 +a5a0bcb8babbb3c2cab2a6a6aeb8aabec0b9302c3026acfffbe3ffe0eee8 +d6fff1ecf4e1eaf6eaf6e6e7f7f4f1ece4e1e9f5f1e5dee5f1f2e9e1e5f2 +f6eae1e5eceee9d7e3ebece3cfdbeee6e8cad7e9e7dbb0dbece2c79cdacb +9948393c403032293635333335353533373d347db6ccdedbe3ecedf2f1f2 +f1ebdcdbd8d8dbe3ecf3f4f7fbfffffefcfaefeae4dedddfe4e8f2f5fbff +fffffffffffffffffffffefcfffaf0e7e0dbd6d3dde1e8f0f7fbfdffffff +fffffffffffffffffffffffffffffffffffffffffcf1decbac8b7269707f +90bae5f4eacb997057413c4b58626d755c4f42455563645e4a494b4c655a +524c565a59465f4e564a6449504d59534d59545958555361575f58634f58 +4f62596864635d61ffd8b4956f7d9ecef0e5f9fff3fafcf5f7fffef4f8f9 +f5f1f4f9f7f0fbf7f9f8f5f5f7f2f8f3f5f8f8f5f9f6f5eff4ecf4e8edf1 +fb8489e24b4c5c534e4649404941474544484a4a4b4e4e4e5556626f7fa4 +cbd9eeffffe7e7774934242f4034a1ffffff7218350300152c400139543a +3662465d76822c0e00000c498b630e261204081e2a1e16292a164ba8e2e8 +d159140100051230844865e8e5fffffea49fae4e1e0606000705031c3b77 +198f4f46384e8e7c8afffdffffffffb9a3fffffffeffff8ab7fff5fdfcff +ff7ad9fffffefff6fbf9fffefefce8dbb0396fbedce3f1f3f8ffe7fdf8fc +fffffffffafffefffffffdfffff2f5f1efecffdcffffd7e5eaf8ffd4ffc8 +d7ffffffc0b984ffefbfc9ffd4b8c3eae6dceeb4b5dea8d7dfd6d4d6e5e3 +edcdb4ffffffdab2dae5e4e3e2e1dad4d2efd8dcdae5dae6ede6d9d7dada +d3cec4a6f0ffbfaecc6da1ffffdcbbaeff52e9ffffd08cebcc52ffffffb9 +96ffc584ffffe49ed4b889ffe7f9beb7b8afc7bfd9b5c2feecf3dcd2dbf8 +e5ede7f7d5d5e1f8ebf0e7eff3edf9e8f0fee6fa130f130a91ece1cbf7cd +ded9cbf9ebe3e9d3dce8dde9d9daeae7e4dfd7d4dce8e4d8d1d8e3e4dbd3 +d7e4e8dcd1d5dcdedac8d4dcddd4c0ccdcd4d7b9c6d8d6cca7cfd7ccb28f +d8cd98412623261d28222724212122221f1d22281f68a4bbcdcbd8e3e4e9 +e8e9e8e2d5d4d1d1d4dce5ecedf0f4f8f9f7f5f3e9e4ded8d7d9dee0e6e9 +eff6fcfdfcfcfdfffffffffffffbfaf2e8dfd9d4cfccd7dbe2eaf2f6f8f8 +f8f7f9fafbfcfbfbfdfefdfcfafafbfbfcf8f7f8faf5eae1cebb9e7d645c +65727da5d0dfd5b6865d432d2837444e59614b3e31344351524c3837393a +5348403c474e4d3a503f473b553a413e4a443e4a444948454351474f4853 +3f483f52495853524c51f3c6a3835a6888b8dacfe4efeaf5f8f1f3fbfbf1 +f4f5f3eff2f7f5eef7f3f4f3f0f0f0ebf1eceef1eeeeefefefe9ece5eee0 +e2e2e66a65b5120a150d0e0a0d040d060c09080a0908060707060b070a07 +020f1c17203e5154803b32352e312d1379f1eaf46f4dc7c3bccfdac74778 +c8c6bfe1b3a78d8c4f371a1317487848001f17152643564e4556523969c1 +f8ffffdaeafffffbf5e8f46e41947d8ea49d4579f7ebf3f9fcf7fdfdffff +e9f66fece3f5e1e0f8ba99fffdfdfbfcffbba1fffffef9fdf67faefff4fd +fafdf568ccfdfbf3faf3fffefffbfaffffffff91bafcfffffffffeef553b +37393944272621261f1b1f1c1d2b2319222a3d518b6ebca52a223969b390 +c77d8de4f3f3928e6de870254ac7a37d4b4523246553719130413b271b11 +130f1f1f3ae0e0c6621418151516181a1612102e1517141f111a1a17171b +20211a202c2992d7918fb65d92ffffd6ad9afa3de0ffffc277d6bc4afffd +f8a78dfeb675fffdc77bbdaa7af6cfdfa49d9b92a8a0ba96a5e1d1d8c3b9 +c2e0cdd5cfdfbebecae1d4d9d3dbdfd9e2d0d8e6cee20f090b0080d9cab1 +daafbdb8abd8cbc4cbb6bfcbbdc9b9bacac7c2bdb5b2bac6c1b5aeb5c0c1 +b8b0b2bfc3b7adb1b8bab3a1adb5b4ab97a3b4acac8e9badaba380a7aa9b +7d5aa8a883372827250f0f06141413131414120f11170c538ca1b3b1bac4 +c5cac9cacbc5b8b7b4b4b7bfc9d0d1d4d8dcdddbdbd9d1ccc6c0c1c3c8cb +d0d1d9e0e8ebebecf1f4f6f6fafafaf7f7f0e6dcd3cec7c2cbcdd2dadfe3 +e5e5e4e4e3e4e5e6e6e4e6e4e3e2e1e0e1e2e8e5e4e5e6dfd4c8b5a18360 +473c45525d86b1c0b899683f28120f1e2b3540483124171a2b393a34201f +23243d322a25303637243b2a342842272e2b37312b352d302f2c2a382e36 +2f3a262f2639303f39362e2fcc9e77552d395989aba0b7c4c3cfd3ccd0db +dcd2d7dadad6dbe0e0d7dcd6d7d6d3d3d4cfd5d0d2d5d3d2d4d2cdc9d5cb +cabbc2c3c7494198090b130d0f0c0f060f080e0b0a0d0d0c0b0d0d090a03 +090e122c454c5e7d89819b432a27232c311a79f4fbff765becf4f3ffffdb +457deff9e9ffc8a871735549281a1b43673300171a1d3153635a4d5b543b +6bbbe3f2ffc6d2ecf4f6ecdce85f317c5a6c8b8d4176ece0f1fdfffdf8eb +e1e5e0ed56cfcde6dad6e4a184edf3fafffbf3a68aeffdfffffbe46391ea +effffdfae552b9f1fafbfffffffffaf2f1fbffffffa5d9fffffdf2eaf2ff +949494999cab94938a8f8c8a9190909c9182817b7b7da67bc0b869707f95 +b47db97aa4fffff37b6c4de4a76d77d0835f556f5d56754c5e89496e7062 +5e585e5b675a61fbf8e38f4f5f636361615f58514c674d4d4952454f4f4b +494b4f4d4445453792c97970913973dfdfb28a79df22c3e0e4a75cb79826 +e8e8e6916cda9960f3f3b9659b8765e2b3be837c7b728b839d7987c3b3ba +a59aa3beabb3adbd9c9ca8bfb2b7b0b8bcb6c0aeb6c4acc028272d305dcf +ffe6f3ffe9ecdddfffe9fdebe4f2eff1fcd5f0f3f7f4eae2e5ecf4efe7e5 +eef6f3e9e2e8eff0e8e2e7f0eae4d5e6efe3e0d0def0e4d7c9e1e7e1c6b3 +ede0d9a6b0daba6e24332f36312d3636353435353534353c337bc9e0dddd +cfd6e1e0e9eaf9fcfbf6efe6dedad9d9e1e5ebf1f5f8f9f9fefffffffff9 +f0ecebe5dedbdee7eff4f8f8f8f9fafffffffffffffffffffffff7f0e4d8 +d0cccbcdd4d6d9dde0e4e8e9e2e4e6e7e7e4e0dfd7ccbcb0a89f948c8e9a +abc2e2ffffffffefc79b6f4d3d3b4f657c7f766c573a454e5961625a4e44 +5a616261574d474b635d5d5b6a54585344555e4e4e4f594f5b5956646567 +5e6b5a6b6c63556877806c6a6e5ff0b2778096a4bbd5c8f2e9dee8e8edef +ebe5eaf3efeaf1f7efeff6f5eaeaedf1f3eff2f9edf8f9f1eff4f4edf2f3 +f3f2eeeff0f2ffa996e45f585c57504d534b514849444c4e4d4a4d515659 +5c5f697081abdef9fffffde6cb5b44373e314129b9fffffb794d2d021100 +0723074b3c141e0a192e7f84040d0a15124d88791315131000000713210e +2197f2f0f8e8cf712e0f0710154c6829c7ebedffffbba5d4663520281f21 +1b10251b576a57c0866f8196bb94b5fffffffcffffabe3fafefffaffffac +d0f2fffefdffff9cb6fffffffbfffbfcfffffffff6e7c183e0edeeeff5f8 +f9ffe7cdcedfe8fbdbdcd8e0e2e2e8e8e5ece8e1dddaf9fdecb5cbc3e9dc +d2f9ffc387d6fffffff7b1c85cffffc3eeffb6ffb2c7c6c9d895a9dfa0cb +d7f9fff4f2fcf0f4c5bdfeffffffecfbfdfbf7f3eee9e9e5d0d6dad3d4e9 +dbcbbebdadb1b8a27e73babf988cd06477806c9c75a6ff5b80538c8873be +a556546ba35661ec6274685b7480ce6d358cc8f8d0f8cce6efcbffe9dae2 +e7f6e4fbe9f4e8f2efecf7e4e0d8cff3e9eee8edf9e9e9ffdceb0e0b1214 +41b4edccdbf7d6dcd0d4ffe0f2ddd6e4e2e4efc8e3e6eae7ddd5d8dfe7e2 +dad8e0e8e5dbd4dae1e2d8d2d7e0dbd5c6d7e0d4d1c1ccded3c6b8d0d6d2 +baa5d8c9c495aad8b868141d172225232725232222221f1e1f271e66b4ce +c9cdc1cdd6d7dee1f0f3f2efe8dfd7d3d2d2dadee4eaeef1f2f2f8fafeff +fbf3eae4dfd9d2cfd3dce6edf2f4f5f6f9fffffffbfafcfdfdfefefef1ea +ded2cbc7c6c6cbced1d5d8dcddded7d9dbdddbd8d4d0c8bbab9f988f847a +7d899ab1d1eefbfaf5dab2865a382a283b51686b62584326343d48505048 +3c32484f504f453b353b5451514f5b45494435464f3f3f404a404b494654 +55574e5b4a5b5c534558676e58565d4fe1a3666e808ea3bdb2ddd4d0dfe3 +e8ece6e1e4ede9e4eaeee5e3eaece4e4e7ebebe7eaf1e3eeefe7e2e7e7e3 +e9eae8e5e2e2e1e0ef8b70b623120e0908080e090f0607020a0906020206 +090a0d07040000041a20252f38435812222d3d2f361baffdfbf57c82bbc0 +d6bac2b95594c1b4bd9b8f79938a213224261948725d000e1b231a213642 +4d3440affffdffffffe1f5fff4f6f1fbc83a8d8682a59d505ed9e0f4eefd +eff2f0e8ffe1edd498fffbf8ffffffbab8fbfffff4fdffa9dff7fffef8fa +fda2c9edfffffdfdfb8aa7f7fafaf5fdfffffffffdfefffff9bbffffffff +ffffffeb671e1c282b3a181b1c231d191f20232d292421295a73785b896f +5b373a7fb48e59adf5f6f6dc869e46e7b44987d593dd65583e4675507bae +54645a6e77675f63506a6c8ae9f7e3a1605e63636364615e5f5e474d4f47 +485a473f3f432e30382d232f899b7972bc546a7768966891f24379508278 +5ea9954c5066924557e45366604f555eb85f2b80b5e0b8deafc9d0ace7ca +bbc5ccdbcbe2d1dcd0dad7d4dfcdc9c1b8dcd2dad4d6e1d1d1e8c4d30d08 +0b0935a3d8b3bfd8b6bbb0b4dec1d4c0b9c7c2c4cfa8c3c6c8c5bbb3b6bd +c4bfb7b5bdc5c2b8afb5bcbdb4aeb3bcb4ae9fb0b7aba898a4b6a89b8da5 +aba9947eab978d5f78b19f5c141f15170f0a141515141414121111160b53 +9fb6b1b3a4aeb8b8c0c2d3d6d5d2cbc2bab6b6b6bec2c8ced2d5d8d8e0e2 +e6e7e5ddd4cfc9c3bcb9c1cad5dde6e9eceff4fbfbfdfbfbfafbfaf8f6f4 +e5dccec2b8b4b2b3babbbec2c5c7c9c8c1c3c5c4c3c0bcb9b3a7978b8178 +6b62636f7e95b3d0dddcd5bb93673d1b0c0a20364f52493f2a0d1a232e36 +3830241a30373a392f251f243d393b394630363122333c2c2c2d372b3430 +2d3b3c3e35423142433a2c3f4e563f3b3f2dba783a40515f758f83b0a9a3 +b4b9bec3c0bcc0cbc9c4cdd1cac9d0cfc2c0c3c7c7c3c6cdc0cbccc4c0c5 +c5bfc0c3cac5b8b6babcca65499519120e090b0b110b110809040c0c0a06 +070b0f0d0803080a10325a6f7e868782812521212b223218a3f4ffff8190 +e1f4ffeeebd1559beef0f4c7a97c7870274535301f425b4500081e312d37 +4a545a3d43b1fff4efebf7d3e2efeef3e7eebc30827462858c485cd5d1e5 +eefffbf9ecdbecd2eed484e9e9eefefcf5a5a3e8f3f6f1f6ef92c6e4faff +fdf7ea87add9fafffffaeb7492e7f5fefffffffff8f3f3f8ffffffccffff +fff4eceaf1f29869708287977474717775757d80838c887e756f90958b5d +7b6f836f6b98a86e3897f4fdf8d166741dd7d97aa2d26bb35f6b62657841 +639d587978959f928c91808e808fe6f8f3bf8f93979693908b85817e656b +6c626376675c5a5c494c513f282678815c5199324a5845724672d7295c31 +675e438a712935507e2b33bd324c53434345933a106895be96bd8fa9b38f +caad9ea7aebdadc3afbaaeb8b5b2bdaba79f96bab0b7b1b4bfafafc6a2b1 +23242930227cf8f8dbf3e8eae8d7f2fff1feecdef5eff9ede3ebf5f8f2ea +e7e9f0f5efe2e5f3f7efe3dfe7f4f0e0deebefebd4dbeaecebd0cff0e6e1 +c7cee5e8d7aad4e6e4c090d7ca9c39352b2f2f2d33343636353537383037 +3376d2f5e6f2eadeded2e0dfe7e2edf1f5f8f7f3eeebdcdbdadce1e8eff4 +f7f8f9fcfffffffffffffcf8f2e9e1dbdadcdfe1e8eff4f3ffffffffffff +fffffffffffffffffffff3f1ebe4dcd5d1cdd0cecac7c4c2c2c1ccd0d7de +e7f1fefffffffffffff9d7b68865453d4a62819b908470544046565c5c63 +655949444f5d5c58515f575f5652504949565b555d5a565850525742493a +465557655a52566b646a78736e69685a73766542dcbf808594aec5ced8e3 +d5ece9eaecebefeeefecedfff4e8fefff2f8f9fff7eefbfffaf3fefdfaff +fffffffffef8fff5efeffef7fcba8bd86f6061645d5b5d57595256554f5a +6263605d5d5c6369738095bde7f9fffffff9ce59534343474732b9f8fffa +75644418040e08365f965c2d23150739e1d1110f1b19135cffea4b150e11 +05120e000447bef5effcfff8e68b361c2334316f3f64ffeffffffcabd6cb +6c575066737e5a5d5764828ea0b6bfbabedaf8bec1d3f9f8ffffffc0a0eb +fef9ffffffc89adcf9fefbfcffd8a4f5fffdf7f7f6f6fdfffffffffff3ef +fffffafbf7f6ffffffd0d1dce6ffdddfdbe6e7e5eaebe9eae3d8d0d4dbd8 +e7ab9d85b6d5c0d6a1b478b8fff0e2ca7ed75d97d57fb4c6a0ff7bb2ffc9 +89607f9e757c79c5eb697279826b664f3c689c8c646e6c655d56524e5152 +4d4f55494a423f42303d486c786f6fb93bab8488c564c2e23e992ae1f378 +e7898d7151f59199ae66994a82ff50ccff80748dce696a78cbb9b5e0cadc +bbd4f3eff0e3e3ead7eef1d9e3eedfffedd6eed4eceef7e2f0f4f1ecf4ed +e8eb0b0c10150661dcdcc1dad3d7d9cae8f5e3f0ded0e8e2ece0d6dee8eb +e5dddadce3e8e2d5d7e5e9e1d5d1d9e6e0d0cedbe0dcc5ccdbddd9bebdde +d5d0b6bdd2d6c99cbfd0cdac84cfc4952c23181d20212324242423232425 +1a221e61bde1d0e1dbd3d0c7d2d4dcd9e4e8eef1f0ece7e4d5d4d3d5dae1 +e8edf1f2f3f6f9fcfefffffdfaf6eee5dbd5d2d4d5d7dce3e8e9f9fbfcfd +fcfcfcfbfefdfcfbfbfdfefeefede7e1d9d2cbc7cac9c5c2bfbdbbbac6ca +d0d7dde5f0f6fbfbfbfaf4deb99b7352322a374f6d877c705c402c324248 +4b52544837323d4b4a463f4d454d4442413d3d4a4c464e4b474941434631 +38293443455348404459525866615c5756485f625432ceb06f737e96aab6 +c1cec4dddcdfe1e3e4e5e3e0dff3e4d8ebecdee5edf7efe6f2f9f0e9f1f0 +edf4fef7f1fcf5eff4e5e1dfebe1e39d66aa331811120c0a0e080a060a09 +030b13120e0b08060805040000102325323d495f5e0f2c2d2d323426b8fb +fef87694cdd4ccd3bfbe92bfbda9a1855b66e3ca242c30251253f1dd4312 +131d192b29191e5dd0fff8ffffffffe5deebebf3e8f87550ab7a92a96831 +abefdff2e7f5f1fff0f9eae2dfc8b5caf4f9f0f9ffbbb2c9fffffff7fab5 +99e9fff9fffdffbe93dafafffbf5f0c696ebfffbfcfffffffefff4f3fcff +fff9fdfafdfffcf9fff7b0514c4f4f674d53525a5752575c5f645d514955 +697a9d7378525a67547d6e9761a1f1d1c5b166c85d88962a678c8af8638a +c78c5b3e688956564995bd3c44454738433d366288652a2c2c2924212120 +25262224281c1d171d271c24223b454254a82a976769ad51b4d938911dcc +d35ee08581603ce2818ca75b873674ff42c1f672576ebb5d6573bba39dc6 +adbf9cb5d2d0d1c6c9d0bed5d7bfc9d4c5eed5bed6bcd4d7e0cbd9ddd9d2 +dad3ced10b0a0b0c0050c7c4a6bcb4b6b8a8c5d5c6d3c1b3c8c2ccc0b6be +c6c9c3bbb8bac0c5bfb2b4c2c6beb0acb4c1bcacaab7b9b59ea5b2b4b196 +95b6aaa58b92a8aea475929e977754a8aa85262112110b0b131516161515 +16170c110b4ea8c9b9c7beb5b3a9b5b6c0bcc7cbd1d4d3cfcbc8b9b8b7b9 +bec5ced3d9dadbdee3e6e8ebf0f0ede9e2d9cdc7c5c7c9cbd0d7dcddeced +eeeff0f0f0f1f4f3f4f3f3f5f8f6e4e1dbd2cac3bdb7bab6b2afaca9a8a7 +b0b2b6bdc4cdd6dde2e3e1e1d9c39d7e5432140c1931526c615543271319 +2a3031383a2e1f1a2533343029373139302b2a23253237313b3834362e30 +321d24151e2b2d3b30282c413a404e49443f3e3046473610a98743454f68 +7d8a97a399b2afb1b3b5b7babbbabad0c2b6cacbbdc4c7d0c8bfcbd2ccc5 +cecdcad1dbd4ced7cac6d3c3b4aec0b8bb733a88281912141210130d0f0a +0e0d0710181814110f0905050d192c5077899da5a7a88e282f20181d261a +a4eafdfd78a0efffffffebd893c5eae9deb5776bcbb0283e4131174ad6bd +2e09192d324946312f68d4fff3f8f1f4ffdccdd9e1ebd6e66849a9717e94 +5e2ca4e3d0e4e0f3f0fbe4ebe0dfe7cca2afe4f1f1fbfaaa9bb0ebf1f4ec +e89f7fd4f7f7fdf7eca579c5f2fdf9efe0ae7bd0edeff6fbf9f5eeede4e7 +f8fffffffff5f2f3e8e6eff4cd848b9494a780807e8788868d949a9f9a8c +81828a8a9e665d3f67806b83516b357fe6cfbf9d3a9129699f416d7e5bc6 +4782cd914c23496c444d4595bf3f47494d373d2f26548166363a3a352d27 +252224231c1e22161710141e131f213e443c418c0c76474a8b3197ba166d +00adba45c368674621c25f6a8b45711b4fd81fa5e7654552933547569a7e +79a38b9d7d96b3b1b2a6a8af9fb6b69ea8b3a4ccb39cb49ab2b5bea9b7bb +b7b1b9b2adb021272726273ab5fff1ddfbeff4e6d3fcf1fdfbdaeaf2eeff +e4e8eef4f6f2ebe7e8f2f3e6e1eaf2f3ece0e0f0f3e4dbdff1e8e6d2dbf4 +e8dccedeece5d7bdd7e7d7cda9e4e0d997b0d1bc6a31332a322e2e303434 +3435383b3f41344c9eededf0f0f0f5ebe4dedddfe2e6edf2f5f6f6f6fffc +f4ebe3dedbd9dce1e9f2f9fdfffefffdfcfcfffffffffffffffbf2ede5df +d4d6dadfe4ebf4fafdfffffffffffffdffffffffffffffffffffffffffff +fffffcfffffffffffffff9e2c3a5887166615f79a3c7d3be94725947424f +5e686b665c504749535c60604f4f545c4a4c4f4f5b594e5146535b51664d +48637c6b7275808673797a7d746b7073746b604c57705c787253cdc08a85 +9eb3c1cfeff0e7f0f1f2f9fffff5f4fcf7f3f7faf6f0f3f4dde4dcd4dad2 +cbd4cbdbc7a9b6c5b094adbbb09cfff8f2fffdc77dd677545a605f5e5f5b +5b595b5d5a5f625c56565e6670727a8cadd2ebf2fafff2debf4756454a51 +4425b0f7fdff4d532b0300061a62aab24b1a0000003eedbe1b0e13183270 +e5ca34151b19060c130b82ecf8fbfcfff4f7f0c0837a807c95852cb2e1ee +ffffdcd6ffc4b1a8a8b8ccbab3b5bfc0ddcbaca1edeef8ffffc491b8f9f0 +f9ffffcf8ac4fefef9ffffcd71b4f7ecf7ffdbc470b8f4e6ead9d3d6d4d2 +ceccd7d4bfc4bab5abb0a99995949b87969da8b8928280878b8585888682 +8ec2b9b5cafc858d82d7ffffffff65af62d2ffffff9868c06cf6f2c2c890 +7cff5cc3feffc34a958a73493e4e312a493d525d4755474c459655585249 +423e3b383b39333731333d302d2722261999dabe84947fd335a2a06263ff +778753ffc776afb17f555ee5876bda75823ce5ff5eddbd714a6cd76f5c55 +acd4d4c9c5e3a9ddd5d9e3eadbded6d0efd9ffdddff0fff3f2e0f1cce6da +ded1dad5c1a7a6c00b120f0d0c1e99e6d6c2e4dbe4d7c6efe4efedccdde5 +e1f8d7dbe1e7e9e5dedadbe5e6d9d3dce4e5ded2d2e2e3d4cbcfe2d9d7c3 +cce5d6cabcccdbd4c6acc4d5c8be97cecbc586a4c8b46024251a211d1e20 +222222232528292b1f3788d7d7dcdfe1e6dcd5d0cfd4d7dde4ebeeefefef +faf5ede4dcd7d4d2d6dbe3ecf3f7f9f9fffdfcfcfefffffffdfcf7efe6df +d7d3cdd0d4d9dee5eef3f6f9fdfefefdf9f6fbfdfefffffffffffffefcfc +fdfffffff6f8fefffffdf8f4e5cdab8b6e5648464a6690b4c0ab805e4533 +2e3b4a5457524b3f3638414a4e4e3d3d424a383a3d3e4d4d424537444c42 +573e39546b5a61656e746167686b62595e6162594e3a455e46646145bfb3 +7c73879ba6b6d9ddd8e3e4e5ecf5f2e8e6eee7e3e4e6dfd9dbe0d0dcd4cc +d2cac1cac1d1ba9ca9b8a187a5b3a28cf2e6ddebe6aa5baa3d100e100d0c +0c0a0a080c0e0b10110b0304080d0e08040715272d282f3c454d55002c29 +2c352d19b4ffffff4e7facb3b8c0bdd3d0c78e754f3b1554e3b22926231c +285fdac42f152022151d271d94fbfffffffff8fffffbfbfffffaffd72e75 +756ea9864766fbf3fffffffffffeffffffffffdba59cfffffffffbaf7bac +fffffafefdc183bffffff9ffffc66ab2f9eff8ffcab467b5f8f0fdf0eaec +e2dbcec7d4d4c4c5b3aeaeb8afa4a4926e434f505260403639423f39393f +413e4573656381c05b7375c2f1eceace479e5acafbf8f3825dbf76f4cd8c +92666bff5cbdeaf8aa378d8469423e563f395545515c495e54584d994d4b +48413c3c3c3d43413b3f393b423a3d3b3a391d95d2b98b9c7fca1d85874f +55ff6e7c46f2a457a8ad714149d2775cce666c24d3f251d2b05f2f51c466 +5d549fc0beb1abc68bbeb4b8c4cdbec4beb8d5bfedc3c5d6e7dbdac8d9b4 +cec3c7b9c0bba78d8ca60e110d06011084cebba4c4bac2b6a4cdc4d2d0af +bdc5c1d8b7bbbfc5c7c3bcb8b8c2c3b6b0b9c1c2b9adadbdbfb0a7abbbb2 +b09ca3bcaea294a4b0a99b819aada197699d9690587caba1561c1c0d0f0b +0e1114141415171a1c1d0e2473c2c0c3c5c4c9bfb8b3b4b8bbc0c7ced1d2 +d3d3ded9d1c8c0bbbab8bec3cbd4dde1e3e6f2f1f0f0f2f3f3f3f2f0ebe1 +d8d2cac5bdc0c4cbd0d9e2e9ecf1f5f8f8f7f3eef0eeeff0f1efefedeceb +e9e8e9ececeadee1e4e6e6e3dedaccb29170533b2c292b467296a28d6543 +2a181522313b3f3a31251c1e2932363627272c342426292a3333282d202f +392f442b263f57464d4e565c494f50534a4146494a4136222d462e494322 +9a894f455b6f7b8db0b5b1b9b8b8c0c9c8bebfc9c3bfc3c3bdb7b9bdadb7 +afa7ada59ea79eae987a879680657e8e856bc6b6b2c0ba7e2d85310f1013 +13121410110e1213111518110b0a11130f0c1426486d878e9ba5a1988517 +301d141d1d099dedf9fd4982c2d8e2e9e0e5c5c0aba481632851c8982932 +30272955bca2190b24312c374033a2fffffdf8f6e9f6fff7f1feffeffbc1 +2372756da07a405beadffaffffffffeffdffffffffdb927feefafdfaee9c +6492eae6e8ede8a767a9f1f5eff3eaac509bebe4f0f3b89a4694ddd8e9de +d6d7c9c0b4b1c3c8bebfa19b9da9a194918575586f7475794c3a3d474945 +4650565562907f798cbf4d5a52a3ecefedc323702ba5e8f0e86b2f8641ce +c48c884e3dd038a5dfed941969624e28263f282441303d4731433a403888 +42423e36302d2c292e2a242721232b21232222250f89c5a56c7759a30065 +682f38e34f5c26d58e428c9057282eb2553bb44f550aadc92eb6a0531c34 +9c3d3d367c9b998d88a4699f9599a5ad9ea39c96b49ecca2a4b5c6b9b8a6 +b792aca1a5979f9a866c6b8521282226362366dcfcebeee8f3eae2dffff0 +fdf7dbedf2f4f6f0ebeef5f7efe6e4eef5f2e9e5ebf5f4e6dee5f0ede0d6 +e8ebf0d7d4eae7ead9cbe4ece5c1c1dedde5a0c2e2dfb78ad3ce8e2d2e31 +38362e2f313232333537383841476ab7d7edececf6fbf6f9e8e9d9d8d8da +dee8f2faf2f6fcfffffef9f6ece5dcd5d4dae2e8eef3faffffffffffffff +fffffffffffffffffbeee0d5d0cecccfd4dbe3ebf2f7fcfefeffffffffff +fffffffffffffefbfffbe8d7cab8a08e79797c8297b7d5e8fff1c9996f52 +44405061767d73685a48504f535d63625e5b524c5756524a50495a5d525c +5166736d70646d656d6b6b71667268686269696e82754f4a595449636b5c +604798b6879490b3cb9651897f638ea391738ec2ad68acceaa83b5ddb988 +c9e1c7a0c3f4d99de3f5e3cee6fff3dafffffffefff1f9f8fec771e4864a +5e605f64656663615c5b5a5a595960646364647a92afd3e9ece4f4f6eed7 +d34a5549483f4921c2f9fafe7654523c332149687c903214090a255cb689 +3b543b576e83b6af3f2b151330503d86eef5f5fbf7fef5f1f7f0d2cee4e9 +e78d67deeeffffc7b5c5dfc5ada2989aa99b97917e7daac47c46b7ca837c +b2b78163a2fbf7ffe3ad7866beffe7a57ea67e5de084b0ffbba15e7a7155 +343d36494341494e5760574c46504a4a483a2f355661595268736f675958 +5d5956595955adffffffffff88935f506846c1c84fbb61fcc430ff946aae +457b96e1fc65b6ea8cfffcf6a934a1c7b33d251b2767c537381d1e2b2730 +273d323534303133312e2724274c372c2628282f242917674700155f7dde +43ba577b51fea8646fffa8997df5852fc8ff68539ce75549ffff5c5c5d58 +4c80b362554a80f7c3d3c9f5d6eceeead5e7dde5eee5def6e4ecd7cce3d7 +dffaf0d0cae1c7cacbceebd4e9cb0c140d0f1b074abedeced5d1e1dad4d2 +f6e2efe9cee0e5e7e9e3dee1e8eae2d9d7e1e8e5dbd7dde7e6d8d0d7e0dd +d0c6d9dce1c8c2d8d5d8c7b9d3dbd2aeaecbcad28dadccc9a278c4c28726 +242325201c1f21222021232525252c3254a1bed7d8dbe5eae5eadadececf +cfd1d7e1edf5ebeff5f9faf7f2efe6dfd6cfced4dce2e7eaf1f9fefffcfa +fefefefffffffefafefdf4e7d9cec9c7c5c9ced5dde5ecf0f1f2f2f3f3f3 +f2f2f2f5f8faf9f3eeebf6e6d3c5b8a68e7d6868687186a7c5d8f4e0b888 +5c3f302c3c4d62695f5446343f3e424c51504c49403a45443f373d384c4f +444e4257625c5f535c545b59595f546056565057575c70633d3847423751 +55484f388baa7883799aaf7c3b7972568094836581b5a05b9fc19b72a2ca +a477bedac099bcedd296d9ebd9c4dcf6e9d3fcfffef0fee0e6e5e9b155c1 +550f1a1512151519161613131112101115191811030c18293b4337293b48 +535772062b2b2e273618c7ffffff7a7ec5dcdec1cbbe9ba15f4c3c31395f +ab824b6948555667a6a83a2b1b204266539dfffffefff7ffffffffffffff +ffffff942c78739fa5413b77d5e7e3e2d7d0ccbcc2bfa895a5b26a43cce5 +8f7eaaa96f57a8fff0fcd7a47162c0ffe9a4769f775be489b1faab925a82 +816f57665f726b676f727b82756b646b605e625c5f5d6565615c70766864 +646b6a636065645ba8f8efedf5f1778f67565b32b1b93fad5effce32f683 +67b24d7b84c1d746a7e386fae2d68a1f9bc4a536343a5090e24b462b3344 +444d3f4f3b3938373a3c3d3c3633395e493e36342a302b311d6b4a041f67 +7ed734a3406641f29d5660fb827973f17519b2fd58438bd23c2ff8f25252 +49403368a15a5a4f76e4adbbafd9b8cbcdc9b7cac0cbd6cdc4d9c7cfbab2 +c9bdc5e0d6b8b2c9afb2b1b1ceb7ccae11150c09100035a4c2b0b6afbdb8 +b1b0d6c5d2ccaec0c5c7c9c3bcbfc6c8c0b7b4bec5c2b8b4bac4c1b3abb2 +bcb9aca2b2b5baa19ab0adb09f91a8b0a88484a1a2aa627e9b987550a5aa +7516181617120e1014151415171717161b1f3f8ca8bfbfbfc9cec9cdbfc2 +b2b2b2b4bac4d0d8cfd3d9dddedbd8d5cec7beb7b8bec6ccd4d9e0e7eeef +efeef3f4f4f6f6f6f5f4f8f7eee1d3c6c1bdbbbdc2c7cfd7dededfdcdcdd +dddbdbdbdbdbdedfded9d4d2e0d1beafa08e76634e4c4d536886a4b7d6c2 +9a6a3e21151123344950473c2e1c25242832393834312a2431302e262c24 +323429342b404e484d414840474343473c483e3e383f3f44584b25202f2a +1f393e2f331768824d574f71885716554f335b6d5e425f93803b7fa17e54 +82aa8559a0bda37ca0d1b67ac0d2c0abc3ddd0b9dfe3ead6d7b4bcbbbe82 +2599460b1919181b1e1f1e1b1a17181617151c1e1f190c192f4a6c838680 +98a19f949b1b2d20170f2507b3f3f2f46972c8eaf2d7dbbd7b7f5c5b4f40 +384e8b65406a4e5a545b8c8b261f19264c735ea5fffff9f9edf4f4f7ffff +fffffffffb82247675a3aa402e61bacccbc8b8aeac9da4a392859fa85222 +abc67768938f573f8eebdde9bf875445a8edd48f5f835b42cd739fe69475 +355b5c4c374641524942484c5761594c404a4b52574c4543525756516161 +4c43444b4c48474f534da2f4edebecdf5b6c40344b27a4a41e8635ddb624 +e96f3e801e576eb2c4297eb764e2d3c7750277a18a1c171a3072c6322d11 +1424252f253728282725272727251f1c21442f241c1c151e1b22115d3900 +004056ad0d81204927d8813941de6d6458d65e029adf362271bd2616d6cd +2f373e361f4c7b333a3152bc86958ab494aaaca895a89ea8b2aba3b9a7af +9a91a89ca4bfb59690a78d909091ae97ac8e21231e312b2b388bf3eedce0 +ece9efe4f1f8f5ffeae1edecfcf4ececf4faf7f0e5e8f0f6f0e4e5f0f4ec +e0dde9f2ead9dbf0ebe4d8d3eaede4c9d1ece5d5b6cce8e0c1a0e2d9d390 +afd1a84f2336363d373636363635353631393c2d48aee0e5eae2efedf0f9 +f2fcfcf7f0e7ded9d6d6edeff2f5f7f9fafbfcfffffffff5ebe4e2e0dbd8 +dce2eaeff8f9f7f7f9fffffffffffffffffffffffffaf1e6dbd3cdcbcbcc +cccccbcacbcbc8c7c6c2beb8b3b1a4a3a4a8b1bdc9cef0ffffffffffe8cb +836649414c5e7a919181725f48404a545b5c5e5d554f5560685b63677b77 +7869878479877b7a7d806260715f646a676b6a574b57646f5d64445b514f +5c5e546a6344634b7dd48486a2b3d78490fff1c9fffffffeffffffffffff +fffffffffffffffffffffffffffffffffdfffffffffffffffffff3fffbf0 +f5c868f497415d5c57564f524d504c4d514f525f6e7162536083a7cbeeff +fffff8f1ebdede4e473d433d452069d0daf95655653d3268526787782b34 +305b316cb79e262d1a524f86b0961d1710161e1301000000061d22231212 +202616265a50645fb8e9f6ffffd3a58e543f2c2b455d595b4be5f3fcffce +6e76b5f1fbfffff49f7bc6fab2b4d8b67e6cfede7fffecb27275ffcddcff +ab9271775c3a313b3e3a38393a39364651443a44372a251e233127372c2f +4c403a352e2c31302c2f322e2eb3dfbfc7e95e8060f4fbf3ff9b688a68fb +fcffff54a5967dc798d2b237cb926329286350478b8c76101b26113d3507 +141121212b3b2d1f24282c303538332d302e20361d272a343434362c1693 +dc799ea4d5b762ec7193185a9739acff8f520a4b5130bdd675cbeba82f49 +ffa161e0ff5b20b6ae5e545a77c3b1d3b8b8c0c2ddebd7dde1d6d9e0f2e8 +dfddf7cddbd0bfdcd2c4c4d1b9bdd1d4ead9f0ed0e100a1a1010196dd4cf +c2c8d8d7dfd5e4eae7fbddd4e0dfefe7dfdfe7edeae3d8dbe3e9e2d6d7e2 +e6ded2cfd9e2dac9cce1dcd5c6c1d8dbd2b7c0dbd2c2a3b9d2caae8ecdc3 +ba789cc3a44d1c281e2524262626242323241e2626183198c7cdd4cedad9 +dce8e2eeeeece7ded7d2d1d1e6e8ebeef0f2f3f4f6f9fdfdf9efe5dedad5 +d0cfd3dbe2e7f2f2f3f3f6fdfffefafcfdfdfefefefef8f4ebe0d5cdc8c4 +c0c0c0c0bfbebcbdbab9b8b4aea8a3a0908e8f939da9b5bddceef9f8f7f0 +d8bb72553830394b667d7d6d5e4b342c36404a4b4d4c433d434e56495155 +6864655879766b796d6b6c6f514f604f5258555958453945525d4b523249 +3f3d4a4c42564d30523e73cb77758b9abb6c7cf9e7c0fbfcf8f2f7fefffb +fffffffefefefefafbfffefafffffdfffffff6fafffffafffffefafde4f0 +e9dee4b654d86e0f211c19181215121814161a181b28373a2a1617314f6a +818b87857c7d86899d1c2525312c33166fdbe1fc546db5adafdba2969983 +4252496a3266ac9a333c234d376ba2921b1917223027170f1612182e2f36 +32323132293252435c3b576e80b575504f6960695b5c73877b7965fafffa +fbb55e77cbfffffffdea9070cafea7a4cdad7869ffe382ffe5ab6b74ffd4 +dfff9b847386755d59676765656871726e7a7e6f676e594b4c4d5e6a5665 +60668575635e65676a676366665b4cc0d8aeb3d856826ffff6e7ff955f84 +6afffffffa439f9781c78fc19820bd8a60221247302f878c66052a453865 +531f282435384254453636373b3f4447453f42403349303a3d42312e3837 +24a0e37b999ccdae56da5879064b89299dfa662f00473f17a7c362b8d58f +142df98957d6f93e06a19c565d636db19bbb9e9ca2a1bccab9c0c4bcc1c8 +d5cbc2c0dab0c1b6a5c2b8aaaab9a1a3b4b7cdbcd3d01212091407000553 +b8b0a1a6b5b3bdb4c4cdcadebdb4c0bfcfc7bdbdc5cbc8c1b5b8c0c6bfb3 +b4bfc1b9adaab5beb6a5a5bab5ae9e99b0b3aa8f95b0a898798faba18360 +9e9491527ca88b380a1b141b1617191918171718101718071f83b1b5bcb3 +bfbec1ccc8d3d3d0cac1bab5b4b4cacccfd2d4d6d9dadee1e5e5e3d9cfc8 +c5c3bebec2cbd5dce6e8eaeaeff6f8faf7f9fafaf8f8f6f4eee8ddd2c5bd +b5b1acaaaaaaa7a6a5a3a09f9d99948e898678797a7e85919ca3c1d2dbda +d6cfb79a54371a121b2d4b62645445321c141e28303133322b252b364033 +3d41575354445e59505e5354585b3f3b4c383c403d41402d212d3a45333a +1a31272532342a3e3617361c4fa24d4a6272964859d6c49fdee1ded8dee8 +e8e4eae8e8e8e6e4e4e1e5eaeae6ecedeaedefefe6eaefefedefeeeceeed +c5c9c3b6b88621b05c08201d1c1d171a161b17191d1b1e2b3a3d2d1b203d +5f7e9eaeb1b4aeaeb0aab12523191d18270c63cbcfe73b57acaeb5e0a186 +71592e4a4665224c8e7d223520492b588877060b1020302815090e060a1e +1e221b1d272e2730503b47254e697cb57f56404c3c43393c4f61565342d9 +e2e1e6a14558a7e6e6e6e0d17b5cb3e7938db18e5848e1c365e4c98e4e56 +e6b5c2e481674e5f4d353444474744444947414c53443c4840383a39424a +36413a3f5c4b39343b3b3f3d393e403a32acc69c9bba2f5a48dfe2d7ed7d +406045e0eff3ed317d6f5ca572a77d0098653f0500321b1362684c000d26 +1b4a39050d08191b26372b1c1e2024282d302d272a2a1d331a24272b201e +2a27158fd1657c78a6852eb6395e00346f0f80e0541c002c29018fa54198 +be7b0115da6534bbee38008478313e444989749579777e7e9ba9979ea299 +9da4b5aba2a0ba90a09584a1978989977f829497ad9cb3b02020202f2235 +314ad0f5ece7ebe9eaeed9faf1fbffe6e2f3f2f3f1eff1f7fafaebe5e7f1 +f3e9e4e7eff0e8dde1edede3d6e5e5ecdfcde0eaebd3c4dbe4e3c2b7e0dc +d7a4bfd9deb483c7b77e262f343f3a37373637373736402f354a3f4b8ce7 +e2dcffe9ede0e5f4f2f4f7f8f4eeeae7e5e2e0dfe3ebf3f8fafbfcfeffff +fffffefefefbf4e9ded6d8dadbdce1e9eff1fcfdffffffffffffffffffff +fffffffffffffffffcf8f4f2f5f3f1eff0f4f9fcffffffffffffffffffff +e8c8a5825e455b6887aabaaa8c745e42394e626967625c4d474f5b5c5754 +565d62616159585e484d4755554f50555a4f514d5854544f5e535b584f54 +3e5767666256605d584f686b745458c58e919aacc991e0fffdffffffffff +fffffffffafef9fafffcf7fffffffffffffefdfffefffffafafffff8fefa +ffff9bd3fff6f8da66f39628403f353128302c332c2a221e1b1c2227251d +2d3a3c3a444d545d605a6169752b3d3a303b362921dffcff7996f30b0fd0 +25aa94a34b140dba496d9fa710111b452d6fa0890c10151e281b21182736 +323134333f3a39333a4d6b2a6287e7f0ffffcead8b72422b352c3c4e4b33 +246db4c8b2ba54516beb906cc2fca85b7bfafffffaab625d779e083389a3 +694e4781a8e0a08f6e58371f3a374d3f41493f4147566c612d1f141f2f3d +4a3f443f3b374d41393a3e3a41453e40423f99f7c4ffcdf0728f6aa7cfff +bb81817b81bec4c79f2dda845d5278624f289682637b607349489fca724c +361c240f0b17302b292f26231112181a1f20232424201c2922261a27261f +2d2125321414b5ab9fe1eb8351ff7b5d44486d26b0ff92554c604327fab7 +5e35d4902b7aff864543d15327b28d65454e72b2e4deb4a1c29ccac8d8c3 +d2c2bfbfc5bac3c2bdc8c4e1f3e9e5e7fffffbddf4ffe5e9c1e910100c1b +0a1a122aaed6cfcdd5d7dae0ccece3edf3d9d5e6e5e6e4e2e4eaededded8 +dae4e5dbd6d9e1e2dacfd1ddddd3c7d6d6ddcdbbced8d9c1b1c8d1d0afa1 +c9c5c493aac2c1986cbab3812423192226272726272725242d1c1f332532 +71cfcac7e8d4d9cfd5e6e4e9eeefede9e5e2dedbd9d8dce4ecf1f4f5f6f8 +f9fafaf9f8f8f8f5eee3d8d0d0d2d2d3d8e0e6e8f5f6f8fbfdfdfcfafefe +fffffffffbf9fffffdf9f5f1edebeeede9e7e8ecf1f4fbfffefefaf8fcfd +f7ead0ae8c67432c48577699a99978604a2e253a4e55534e4b3d373f4b4c +4744464d51505048474d3a3f394747403f44483d3f3b4642403b4c414946 +3d422c45555450444e4b463b525563474ebc80828494af79cbfdf4f8fffb +f8fbfbfbfffffcfffbfcfffdf8fffffefefffffbfafffbfffff7f7fdfdf7 +fffdfefd8fc6f4e8edce59de76000f0d0d0f09110f1710110b0704050b10 +0c05142122212c363d484d485158641a2c2c2631271f27ebfffc6486ff33 +43fd34aa91a3531f18be436398a514171f421f619f8d11141b283328332f +435859595f606c655c52565f691f53587974b5b74b3c617d6f6e7e737585 +8b6f5186b4c0aeb9535982ff9768bcf49f5583fffef7eb9e595b7ca50d35 +839d634e4d89acdc9181736c52415d5a695b5e6f7079808a978853473d4b +5c6b78707c7a7773887d73747671777b76787a71bcffbefcb4d864886aa3 +b8e695647b8187bdb1aa8416c67759516f5138138b82697f555d2d339bca +643d33232f1d19263f372e2e23241a212c3133343536332f2b3831352835 +372a2e223249312bb99b7cbcce7045fe59392e385d16a1ee6930425a2e0c +e2a44b22b9730e5be56c3c3cb834109e7a5d4f596aa1cec79b85a47ba9a7 +baa7b6a8a7a7a89ba4a3a0aba7c4d6ccc8cde9e8e1c3d7e3c8cca4cc1311 +0b140009001192b7afaab0b1b6bdaccfc6d0d3b9b5c6c5c6c2c0c2c8cbcb +bbb5b7c1c2b8b3b6bcbdb5aaadb9b9afa0afafb6a593a6b0b199879ea7a6 +8578a09c99657d9699734c9a96660f15121c1b1a1a191a1a19181f0d1123 +141e5cb7b2acceb9beb3bbcbc9cdd1d2d0cbc8c5c2bfbdbcc0c8d2d7dcdd +dee0e3e4e4e6e8eaeae7e0d5ccc4c5c7c9cacfd7dddfebeceef1f3f3f2f0 +f4f4f3f3f3f3efebefefebe7e3dfdad8dbd7d4d2d1d5dadde2e6e4e4e0df +e2e3dccfb4936e4a260e2a39587b8b7b5d4531150c21363d3b3631231d25 +32332e2b2f363d3c3e3635391f221e2c2d292b3034292b25302a28223429 +312e252a142d3d3c382c36332e233d3e49272b9559595d6e8c57acded5dc +ececebeff0f0f3f4f1f3eeeef1ede6f1f3f1f2f4f4f2f1f6f4f8f8f0f2f8 +f8f2faf6fdf677a4d3c3c09e25b361000b0c0b0d060e0b130c0c05010000 +050a07031724211a20262b353c3a444e5a1022211a28241e23e1efe1456d +f62b41f6219072873e0f08ad2b487e8e050b11310544837400030f1f2b1e +251d2d3f3e3e44434d47464047515a09323a6868a4aa5140515d443b5049 +5568694b2a5f909c8b9b3f4465e1784da4e18e456ee8e8dfce7e3835547c +0010617d432c276287b9726453492f1e3d3c52454a565254575c695b2c24 +1b2a3f515e53574e44405c575a5c5b5257595353554e9eeda8e496b4375c +4688a8da8a525b5b65a1a3a27904ab573c35503319006b60475e39451516 +75a44a2a20111e0c08132a211a1a1214090c13151a1b1d1e1e1a16251e22 +172425191c1020351d19a88b68a2ae481dda3d211721440084d4571e2942 +1900ca862b02a4610046c94b1b22b12f00835939343b4576a59e735e8058 +8684968291838383887c8584808b87a4b6aca8acc8c7c0a2b7c3a8ac84ac +212223252a33363175f6e8dfe1e4f6e9e7e3f1eafffbe5e9eaf4f9f3edec +f2f6f3e7e3ecf5f1e7e2ecf4f0e0dbe5ecead8d2eaeee3d7cfe8eddcc3c4 +e6e5d7a6cae5d0bb8edfdace78c1b293362e393733303031343535343647 +3f3f4446322e271d6580dfecefe0eaedf0f2f4f8fbfdf7f4f0ebe6e2dfdd +e4e7ebf2f8fefffffffffffffffffffffffffdf3ece4ded9d3d1d2d7dee7 +eaebf4f6f9fdfffffffffffffffffffffffffffffffffffffffffffbf6f6 +f2e0c2aa957767707f90bae3ebe6cc976b554940556a7d786c6e77706463 +686862585a626b6e6063605e4b4e495a535055524f4c6160524c57515b48 +5c5b7167647b5f725445605b5d506a64647a576568bd988e99b4bad8ffff +fffffffffffffffffdfefdf8fcfefcfffffefffffeffffffffffffffffff +fffffffffdfff3c55595e3faf2e45ee690182f331f24273c3a3a251b1d27 +2c2416101519111e1e233640404340414f565035442d2b343a3323dfcf36 +52a2ff20039185a39d9c401a17780d53b09c13181f4b6990978407162826 +2a281f1f111322262b3438261a19293e774e528deefdffe8d3a170412c26 +1c25202b2b3029e0969affaa626d55fbb2bfffc14e6152e5e3ffdcb37b5b +9cd86bb083966a5a85e7bea78b93664c1b36433b33292b3d2a323e373820 +130b1c372f31402d271f3d343c38271e23202b342d2b2c2a46f8a487a0d9 +799087ff6d6d8142857c93ff549b672e8981808b6a984f2ec58865466ea2 +3c49b1eb5536312a1b1f235188412824251822172124272624272a2c2d29 +22262a272e3037362d1f232effa07ceeb13aa2ff7c695d789338ecc18453 +4352406fff903780ff4d2e8ae07f33eab32f27be7258435278b1aed4cde1 +ffc8ffc1e1afcad8e7cedde5f7f7f4f3edd7dbe0e6fce1e8faebdddcfffa +ffe813131112161c191255d4c9c2cbd2e7dbdad5e3dcf5eed8dcdce7ece6 +e0e2e8ece6dad6dfe7e3d9d4dee6e2d2cbd5dcdbc9c3d8dcd1c5bdd6dbcb +b0b1d3d2c490b0cdbfaa77c7bdb25eaead923120221e2120202124252322 +2334292a2d2f18150e044c6ac9d8ddcedadde2e7ebeff2f4f0ede9e4dfdb +d8d6dee1e5ecf2f8fcfefffffefefffffffffefdf7ece3ddd8d3cccdced3 +dae0e3e4edeff2f4f8fbfcfffcfcfdfffefffefefefdfdfcfdfefffffdf5 +efece6d2b29981624d5561729bc8d6d5b9865842352c41566964585c635e +5455585a524a4a525b5d4f524f4d3a3f3b4c45424743403b504f423c4741 +49364a495f5552694d6042334e494b3e584f4e6443565bb18a7f869ea2c2 +fbf0f3faf9f3f5fbfdfafafcfef9fdfffbfffffbfff8f8fdfdfbfaf8fdf7 +f7fdfdfdfdfafafcecbb4988d5ece7d852d575000a120813182d2d2f1c14 +1620251d0f090c121020293249595b63676b74715c363c23272f2e2b25e7 +d22f3784fc1e0a95758e949a3e1919770347ac9b111620495e879a8a0c1d +303134332c322b3449535d65614a413c4954793e304d878add80533f636b +6b736f725f6a787a60fc948effae617062ffb1b5fcb6435a54e4d4f8c8a4 +70559ad96cae7d8d635586e9bea17c856959304f5c53493e466058657265 +5d433c384e6b605f6c5e63637e757b78685e635b60666061645c67ff9a6f +81bd688881f9524856227f8094f936764b18716d75835f873a1bbc856a49 +67912436abe74929282418212a5a9146211717102928383b3b3836393c3e +3e3a30343835403f3f3f403b4347ff8d53c08c2090ec574347677f24dba9 +5a2e374a2a54f47c236aef321370c16428df981210ad5f4d47566e9f9bbc +b3c5f8a7e6a3c393aebecdb4c0c7d8d8d7d6d0babec3c9dfc7cee0d1c3c2 +ece0ebce12100d0b0b0e07003cb9aca2a6aabeb6b8b8c6bfd5ceb8bcbfc7 +ccc4bebfc5c9c3b7b3bcc4c0b6b1b9c1bdada7b1b8b4a29ab2b4a99d95ae +b3a08687a9a89a678ba7947e4b9b958b3b8d8d761d131c19151313141718 +171615261b191d1d070100003653b2c0c5b6c1c4c8cbced2d5d7d4d1cdc8 +c3bfbcbcc4c7cbd2dae0e4e8eff0efeff0f3f3f3f2f1ebe2dad3ccc7c2c2 +c3c8cfd6d9dae3e5e8ebeff0f3f3eeecedeceeececebebeaeae7e8e9eae8 +e5dbd5d3ccb8987d6645323845567fabb9b79b683a241a11283d504c4044 +4b463b3b3f403930333b44493b3e3d3b282a20312a282d2c2b273c3b2b25 +3028311e3231473d3a5135482a1b36313326403a394d2a37398b63565c77 +7c9dd8ced1dee6e6e7ecf0ecebedeee9edede9ebede8ede6e8eff1eff0ee +f4eeeef4f6f6f6f2f1f3e6af3166b2c5b9a820aa6000020d020c11282729 +150c0c161b130500030c0c1b1b1d2b323034383d4b5044242f191e292e29 +22dcbd131a6aec1202875c71778129050462002d93860209103440667b70 +000b212329251b1e12192c364047432e2624323d632414327478cb73523c +50473e3f3b46404f565538d36e68da8b4c5d48ea959ce3a031483fcfbfdf +ad85503374b144885b6e463764c4987d5d684c3b11313f3b342d354a3c46 +4c3e321914112845404353413d32483f4e55524d493f44494141413948ec +815564983c5a5fdf3f38460d5f5d74e02b6d3d0357525f6c43691d009d66 +4a2a4a770a1887c43118171409131a477c300f070a0319151e2122202023 +26282b271f232724302c2a2a2c252e32ef7c41a96f006cc93d2e3253670b +c1914a1e2133153fdc610852dc1f0057a4460ccb910c00913e2d2e3d4b77 +73968ea0d484c57f9f6e8999aa919ea5b9b9b7b6b09a9ea3a9bfa6adbfb0 +a29fcbbdcaab1e1f202021252b3035b1fff1d9e5e4eeefe8e6f0fafaf1eb +e8f1f7f5efeaeef2f5f0e6e4edf3ecdedef3eee9dbd5e9e9e5d1daefece6 +cbdae6e6d7b1d9e1e1c6a4ded9d097c6d9d0ad81cda96c26322d37383633 +3133383d3b38393d3d383a403c413a282d568fb4e4ecf0ebe9eef7fbfcf9 +fffff7fdedf7ede6dddadce1e5e6ecf2f9fdfffffffffffffffffffdffff +fffffcf3e8ded8d5c9c8c7c8cdd4dbe0e4e6e8ebefefeeecedededece4d9 +cdc5b4ac9f91888a929abad9f9ffffffefc68c6a45313f6789928b706053 +64554c525040504c4e4c486b4c5a50465355453e554d50615b505049554a +4c514e485056583c555d4e64715179676471695d6162716a5f7558b09e90 +a6a4bba5f2d0f5e6f4ffffcedcdaf9b5ced4c6b2c3b6d8a1a7bda6aaaaaf +ab95a4b8beafddc1b3b596ac8b76677e84effaeb61e396142720261a241f +1617121711143b5e43160f1d1a1e1a223a4a493e393f3d45592a32373329 +34301cbfffff7b7c6b0d0863bb9ea7924c1c126d6a8aa885331b1d42168c +aa8e3134232527241c12122f243a34241c120c1f324b727a558ed0f8ffd2 +c19a643b2c2d2c31202f262a2cd5e565b6b081946aff824671c0586671ff +39497dcb6f6ca9ff557b689a625fc7b9446064876b5445322a2010232c37 +342c202d2a2923222c4c3229342b252b392f302a2a171f3125373b2c2b2f +35f4b789eedb82775a563db6c0457f794a2e59d96a3b7b79441f95cc4033 +be8e3633d59a2d42acc22f3421524d242a3333213029406790281e232329 +1d272322221c2229241d1f25232827283713d16d70b77156a6ae744c4d62 +7155ffa0994047382e89f5772e4c91136bc98e85205d301b88a5735c3f44 +52d9ecf5bab9b9ccdac7d1d8d7d7d8e9d4e0dcd8dff4f4eddeedf0cfe7e0 +c8e4dbcfd5fce9ef1011131313131314148ee4d2c1d4dae6e2d9d7e1ebeb +e2dcdae3eceae5e2e6eaebe3d9d7e1e7ded0d0e5e0dbcdc7dadad3c0c7de +dbd5bac9d5d5c49ec4ccccaf8cc8c7bd7aa9c1b88d64be9f5d16241f2728 +26231f21262b2926262a2722242a252a2311163f7a9fcfd7dbd9d8dde6ec +f1f0f9faf0f6e8f2e8e1d9d6d8dde1e2e7edf3f7fcfffffffffffffffdfd +fffffdfdf9f0e5dad1cec0bfbfbec3cad1d7dbdbdde0e4e4e2e0e1e1e1de +d6cbbfb6a7a19282797a8389a7c5e2f1fbf8d4ad7757301e2a53757e795e +4e4152453a42413441403f40395c3d4b41374446362f464144554f44443a +463b3d423f394147482c454d3e54614169575461594d51505b51496148a0 +8f819591a690ddbbdfd0ddf8eabbcccbeaa8c1c7b9a5b6a9c99195ab969b +9c9f9b8390a2a697c7ab9fa3849c7b67597175e1eadb50d18201130d150d +19160e120f1711143b5c41120816111e2b3a536362606c7a76716d2d282a +2c252d2918bcfff96b6c5f04015aac8fa6934717116b5e80a8872d13193d +0a81a99131393137332e241e2545375357462d21283f5362745f153c8299 +d2443e49676f6d7475786275777765f8eb5baaa373885ffe733662b14956 +65f027356aba5f5e9eff4c725d8e5653bdaf3952537864524737342f263f +4e5f61594950454852596382645b6962636f7d737168665769795e686859 +5e5c52fda266c9be767451482ca0a830726e3f1f44c2582b6a6a330e85bb +2f24b0842f2cc98a1b319eb9272d1a4d4d283339361d21183768a4423636 +32362a36393b3b34353a3533383d32363a415026d66258984f378990502c +38505b3df88a741e362b186fe16314317c015ab97a700d4b17037392604d +323945c9d8dd9d9b98abbbaab4bbbab9bacbb6c2bebac2d7d7d0c1d0d6b5 +cdc6aecac3b7bde4d1d707080a0a08070708057bcbb59da9a9b8bfbab8c2 +cecec5bfbfc6cecac2bec1c5c7c0b6b4bbc1b9ababc0bbb6a6a0b3b3ab95 +9fb3b0aa8f9eaaa9997399a1a18668a39f93527f938c66429d844a091b16 +1a1917141113181d1b18181b1914161c151a1301062f698ebcc4c6c1bec1 +c8cfd5d3dcddd3d9cad5cbc4bcb9bbc0c4c7d3dae3e7ebf1f1f3f3f4f4f6 +f6f5f8f8f4f4f0e7dccfc7c4b7b6b4b4b9bec7c8cac7c9cad0cecccacbc9 +c9c4bcb1a59f948d7f6d6260666b87a4c2d2dcd9b68f5a3913000f385c65 +6146362b3c2e242b2a1c2a282828244728382e243133231a2f292c3d372e +2e253126282d2a222a3031152e36253b4828503e3b4842363a3a463b3146 +277c665669667b65b290b6a9bdd9cb9babaac9869fa597839487a86f7187 +757e8186846d788a8e7daf94878b6c82614836474ab2b9aa24ab6a000a06 +0d0513110b0f0a0f07082f4f3507000e0a1418223645423b434e4d4e541a +1c21221c251f0cabebdf51534900004b997887733104005646658c6f1f08 +0d2a00658a7419252029292519101230233e3f2e1a0e112738485c4a0930 +6e87c94036384a4843484a503e514e4b3acec5378480566e49e85e1d4592 +2c3c4fdd131d4c9c454482e12d5341743e3da4941d35355b4a392f201c18 +0f283645443c2b302626282f3c6047404d423a404a4246434c3c46533e4a +4b3c3d3b34e28d52af9e4c4b322e12888e135250230831b042114c4d1f00 +6ea1150795691512b3730317819c121a0739350f181d1b040e0826568b29 +1e201d2218232425251e2127221e23271b1f242b3a10c04c407c33186b74 +3817233c4425e0756b1526180156c84b07266b003e985955003f12005e74 +40301f2525a5b3b97b79778a9c889299989798a9949e9c98a0b5b5ae9fae +b594aca58da99f9199beadb11f20212023252c332a51defdf2d9e5e2eeed +e9e7effafaf4e9ebeff6f3eae9ecf2f5ece3e6f1f1e6e1e5eeebded6dceb +ede3d3e4eedcd7c5e2e2dec8bee1ded4a1b5e5cdb690d0d1c771b3c17b28 +2e28333533302f2f3336383535383733343a3f46463f38332a223b66a1d2 +edf6f3ecf2f2f2f9f8fffafdfdfdfcfaf5eee7e3dddfe1dfe0e2e6e6eff5 +fcfefefdfbf9fffffffffffffffffffffffffaf1e6e0dbd8d3cfcbc9c8c7 +c1c1c3c5c9cccfcfd9dceaf8fffffffffffff6caa0826245506793b3b9a5 +805b60636b636b706e705850473f4751555e5959545a645546504d555941 +674c57536a4c4550525d66805e6357705e5d805c55525d534a4f4c525b61 +6d7a5ba79d9798a9c2b5d4957c53513c61494a5b76696777949a938e7583 +786483a4a6ac8d8971745f5b4550468a687f787a747974cfffee65d68c0d +24211a15211f1a190e0e190b0f18191c1e181b1e1e28383c3f40382c2e45 +532a2f33342f252e37da9a4d5575585021664e5ba5965f321b70576d8e87 +4f3727635d8da1a0534b221f2a2220222c2b41251f0a21262c30343f594c +469ae0ffffdda3a657333a302b28373c2c2c1e93e577c3c9997a506768a7 +97c5337b435e538c70cd7d76384d51846591558b15466b666096647f452c +242638533e2b1b1c263b4a4132222635293838283f43322d252f29282529 +3f3c2e4a362c30f98fc4af7988725f3b6dd7936192825e558aa72d289782 +932fb35d0f51bfa8372e7911178cbcb62230404e1c22597b90c3e39a374d +2e2b412c222e3130282324303733373e3a362e37334b49252e5c47666382 +cb867d4757734c84ffa96d29443673ccaaa030263720d7c59290133b3b45 +fc8b72828da286d5c3ecbcc1d2ebd5cac9c4e7d0eadbdef4e5e7dfeee4f6 +e3dbeee7d8eaf4d2cecfd5ebd7e711121516161718180a2dbbded8c8dbda +e2dedad8e0ebeae4dbdde4ebe9e2e1e4e8e8dfd6dae5e3d8d3d7e0ddd0c8 +cddcdad0c0d1ddcbc6b4d1d1cbb5a9ccc7bd8aa1d3b79971bab9a753a0b1 +6818241e252523201d1d21242623232624202127292e2e27201b120a244f +8abcd7e1ded9e4e7e9f0effbf3f6f6f6f7f5f0e9e2ded7dadadadadfe3e4 +edf5fcfefefefcfafffffffffffdfcfafdfefdfaf0e5dad4d0cdc8c4c0be +bcbbb5b5b5b7bbbebfc0cacfdbe9f4fafdfefaf9e2b3896b4b2e3b537e9f +a4916c474e5159515b605d6149443b333b4549524a4a454b554637413e49 +4d355b404b475e40394446515a714d5247604e4d704c45424d433a3f3b40 +464b596648978e888798b0a3bf7f653b382249323448635856668389827c +626d614f7092969c78725859423e2b372d735168666b656a66bfeddc52c3 +7c001717100b181715150d0f1a0f111a191a1a141422364956595c687571 +717b6d3229292d2b1e2830d392454a6b4c4412563e50a69a592b186b4b63 +8e89452a1f5c4e7f9c9d4f4d35363a2c282d3d3c4c3238232f374a545758 +5d30004199ba86432b66676d7d736964707a736f51b3eb6db3b586673c52 +539384b220682f493e785dba6b64283d43765782467c06375b564f875473 +3d2a28324c6f604f3f3e44535e5b615a5a665a686a607c857671666d6267 +7171766a59786c5e53ff7da1895c8070542d5fc9845281714c4378971d1a +8a737e1a9e4b0041af9a281f6a02077cada81a2938481b255e808cb9d187 +2f55464c5b40303c3f424041424d4e4a4e585b54404646635f37365a3c53 +4a67b06b612f4663366cfc944c0b342a5db4998e150b2716cdb983800027 +2732ea7b62717c9177c5afd49fa2b1ccb6adafaac9b2c7babdd6c7c9c2d1 +c7d9c6bed4cdbed0dab8b6b9bfd5c1d10405090a0d0e110f001fa7c2b59c +aaa9bcbdb9b9c1ced0cac0c0c6cbc6bebcbfc4c5bcb3b4bfbeb3aeb2bbb8 +a9a1a6b3b2a696a7b2a09b89a5a5a08a7ea19d94687ead8e7145898b7e2f +7f97570b1b15181614110f0f131618151518161213191c22221b140f0600 +163f78a7bfc6c1bbc9cbccd3d2ded6d9d9d9d9d7d2cbc4c1c1c6c8c7cace +d4d5e0e9f0f4f6f6f4f2f8f6f8f6f6f2f1f0f4f3f3eee4d9cec6beb9b2ae +aaa8a6a59d9d9b9da1a4a6a9b5bcc6d2dbe0dfddd9d8bf91674b2b0f1e38 +63848978532f3639433b4449494c342e251d252f333c373732384233242e +2933371f452a3531482a232e303b445c393e3049353457332c29342a2328 +272c3136414b2873655d5b6a82739050390f100023090b1e392c2b3b585e +57543a443522466c747b5b533a3b221c0a180f54314642443c3f378ebdae +28a263000e0e06021114121409091201040c0d0e110b0a131e2e3a3d3e46 +4c454857521d1b1f2522141a20c07d2e3452362e00462f3a847741180557 +334872713921144c39647c7e363821242f231d1f2b293c20230e1e253238 +393a421b003987aa82411b4b4244524a44404f554944268ac5498f906549 +243f407b6691004a17362b603f9c534e1124285b3d6b31690022443c3168 +3b5d2613111a3356473525252a3b453e372d34463d4e4d3d535745423c48 +42484a49564d3d5b4a3b33ea678d723e5949381344ac65316355342b6280 +04006a566b0989330027957f110a55000062908d0516233000063e606f9e +bd761c3e2c2f40271925282a262526313430343d3e38282f304b481f1e41 +20352c4993504917324c1e52e4814303251445987d780c041700aa936266 +00202024d25a4155687d58a38cb27f8392ad978d8c87a790a7999ab2a3a5 +a0afa5b7a49cb3ac9dafb995929298ae9aaa2524252524272e3239349cf9 +f9e2e4dbedf4f0e4e6f7fffcece7eaf3f7ede6e6edf7f3e4e0ecf3efe6d9 +eaeee7dbd0e8eee7d6d2e9e4e6c4d2dfe7d9aecbe4dab892d7d3d087b8d6 +d08d7abf9f3d262a3132302f2f30323339363537363334383b37353b4548 +433d393125233c73b2dceaf1eaf3eef6f9fafffffffffffffffffffffef4 +ece5e1ddcdd2d8dbe1ebefebf5f5f8fbffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff9e5d8b68964606a7da3cb +f2d9bd946b4f48473f49514845584d3c42514d4d5250544f51554e4b5351 +4f597a646258824d5968605f60625b776f6f5f6d636e575a645d5465595f +625959476b646c6b56b1a49598aab4b3cec4c4b8a7bafce3cedbe4f1e5ed +e8fff6eff2ffedf2e3f7f6feffecfde44d56615736e0bdb1a1a9bcbd9ebb +f5ec74d292111f1920191c1615191111101115181b231e0d141d1a1e2f3c +413c3a382e354a2c2731292541302f38323c626b4343453b4e50b39e4b48 +3345477ea48e4651455d7b9ab38d4c4b1c2621313d43342e251905241c32 +313b344c636464cfe2ffe5d19f985833286394424548403c44c2e45aafab +7699bc29778697e447bf9538634e53d059ad84486535638745c142564d38 +7d9d68b55010141d2c2e1d1c2240335589424a3239352d4034312c322126 +29332d363d3440453c2c1f24177a6e687f717f807c323f727f5a98876d1c +39311975b6a0af4a382932bad7d82c273b2865acc3aa406936617242ff40 +ebd53eff7e24245d81604e494d4a525345585c545a594d49361d3a483025 +53724b5682eaea956928526fbdd2ac9446263f34e0cf849f173b2f68fa91 +6e9a14472cbdeb809a7c4367604db2d2ccd3cac4e3bcd6d3e4e3cdfee8d5 +e4e8e2dfefe6e8e4e5f5e9e6ebdbe4e4e2ecd9e9141618181a1a1b1b1d14 +79d9dfcfd7d0dfe6e2d5d7e8f1edded9dce8ede5dedee3eae6d7d4e0e5e1 +d8cbdce0d8ccc1d9dbd4c3bfd8d3d5b3c1ced4c699b6cdc4a47ec1bcb86c +9dbbb57363ab8e301c202322201f1d1e2021272423252320212525211f25 +2f322d27231c100e285f9ec8d9e1dce5e0e8ebecf5f8fbfbfbfbfefffbfb +f6ede5e0dbd7c7ced4d9dfe8ecebf2f3f5f9fcfffffffcfbf9fbfdfefefe +fffffffffdfdfffffffffcfbfcfefefefdfafdfdfdead4c8a376504c5668 +8eb6dec8a983573d36352d37413834473c2d334541414341454042463f3c +42403e4a6b555349733e4a59515051534c6860604e5c535e474a544d4455 +494f5249483659525a5a45a195868a9ca3a2bcb2b1a591a4e9d0bcccd5e2 +d8e0d9f1e7e0e0eddae1d4e9e9f1f3d9e8cd353e4a4321cda99d8f9aafb0 +90aae3d961bf8001120e17121511111510121113171a1d231e0f182c3c47 +566164697b81756f6b39282b221e3828252f2731565f3434342a3d45b3a0 +44402e3e3873a38e3d433b546c8aa887454a2e3f333f495047402c20163d +3f5d5f6a5d6b71501e7795c757443f70737069a1c76d6c716f6c68d6e44d +9f996688aa17657486d437ae8326513c42bf479b74385727557836b23347 +3d296c8c57a649101d2b40463534355345649859705d615c54675f60636d +6065686f6671817573726d64616549956a526158777c71222f636e498473 +590a27210965a7919a35241821abc8c81c172b18539bb29b345e29566c41 +ff41e6c929ef762c3c7e9c78615c60626d726477776f75787168482c4d5e +48396078484d75dbdd8a5e1e4863acbf9e842a0b342dcfbc779101252261 +f289648f04361aacdd738d6f375b533fa0bbafb4a9a5c49fbcb9c6c5aadd +c7b7c6cac5c2d2c9cbc7cbdbcfccd1c1cccccad4c1d10a0b0f0f11111413 +120566c0bea5aaa2b8c3bfb4b8c9d4d0c1bcbfc8cac1b9b9bfc7c3b4aeba +c0bcb3a6b5b9b1a59ab0b3aa9995ada8aa8895a2a99b6e8ba39b7f599a92 +8c3f6e8e8a4e43907a201216161311100f10121319161517151213171713 +12182225201a150b0000104685afbfc8c2cbc6ced1d2dbdee1e1e0e0e3e6 +e6e8e3dad3cdcbc9b9c2c8cdd3dfe3e1e9e7ecedf1f4f4f3f0edecebedef +efededececece9e9e9eaeae9e5e4e5e7e8e8e7e3e4e4e3cdb6a782552f2b +35496f99c3ae90693e251e1f17212a21203328181e2f2b2b2e2c302b2d31 +2a272e2c2a3556403e345e2935443c3b3c3e37534b4b3a483c472e313b34 +2b3c30363b323422453c4240277f6e5d5d6d75748e84867a6a7dc1a894a3 +acb7aeb6b0c8beb9bac5afb5abc4c7d1d5b9c9ad131c2a2202ad887a6b73 +8584637cb5ae399f68000a080e080d0d0e140c0c09060a0c101714040a19 +21293742464853564b4950251a1f1a162f1d191e151b40491f1f22182d2f +917b2a2d1b2b215785742e382f43557088672b35182a23303b3f332a1c0e +03272742424a3b495037126d83b7553d294d4a463f7aa64f4f534d4642b1 +c02a7b73446a9203515c68b215906b123d2424a12f855d1f3c0c3b61219d +1e30240c4e6e3d8f2f000211272c1d1c1f3d2f4f813d49323e3d394c413e +3b3f31363d4945515a4d52534d413b3d24744f3a4739505655091546502b +69584100130a004b8a7485220c00058eabae030014013b81947e1e4a1640 +5223e421c9af16de631522617d58433e42424c504255564e54564d482e15 +37473020465c292c53babd6a42032f4990a1816b1e002213b39c5777001a +0f45ce624173002c109cc2516a4d1d41331c7c998f958a86a57f9996a4a3 +8abca493a2a6a3a0b0a7a9a5aabaaeabb09ea8a6a4ae9bab292a29272527 +292f313242b2f7ede0e0e8f5f8ece7f1fbfdf2ebe8eff6f2ebe5e8f2f5ea +e1e4eef3ecdae1edefe1d2dfebe4e6cad8f1e8d8c0d8eadabda9e3dad393 +aedfcfb192d8c5bc5aaaae4c2a3132323131333435353936353635333437 +403a36383937373b3a3b3b38332e2b295e86a6d9e3e5edf0e7edf6fdffff +fffffffffffffffffffffffffdf3eae3dbd8d1d1d3d8dee3e7e8eef1f8fb +fcfaf7f3f6f8fbfdfdfdfffffefffffffffcf8f4f3e2cdbca992827b8ba7 +c9e7ffffeece9772544a4c525b5b57565a5b51675a4a54585755554f5159 +475763696f685f606859565d635e6555544b405b484a4b5e425a5461535d +58656b5f6258616752615c55525246cab29b97aab6b7c4c8c7c0dbffffe3 +eaf2f0ebf0e4fffffff4f4ebf2eef9fffffff0f7fafe567b7b82cffffdfe +faeff6f9eaeef7f387c38e0f1d18191916111318171814151c201a141518 +191c14131f272c2f2326323851292b293b3829313e1e342f817f6b5d2626 +3b61d8834b6321243786a498705c2d443e9bb5af5d6b1826283534220700 +0529474939253a352e49824d9ef7e8ffe1c29b7d3d393840523753363443 +4470a82f7fb86c89d34653537dd13db3c02537375fb879b4842b423576a0 +70b65e1e3e4b7e855fd4980a2133371dafdc1aee5c52f976382e1616253d +4b38393036353f333a38303d3a373e3858323b75815b5eb8b177b8234f6c +87bca6a9b418533b85cba0ac9f35628ea1bea3c85628365bff9bb5d2363c +644c2b60ffc6c3fe98e8ad392b1c262129252e2c33272129272c372e2a42 +a2a46e23873a2680584fd2ffe56df2262e55ffbd5bb8a2343589ffb853ff +7b333bd8fe7177ff40297affc97bd0ec98b9b2acccd8c3d2becdd5dbdad1 +c8ccafc4b6a5a6d3b6cfd7e1dfece2f0f1e1d3f1dfcfcadccecb18191b1a +1b1a1a1b16152394dcd7cfd1dae7eaded8e2eceee4dedbe2e9e8e1dbdbe5 +e8ddd5d8e0e5deccd3dfe0d2c3cdd8d1d3b7c7e0d7c7afc7d7c7a894ccc4 +bf7f97c8ba9b73b9aea642959f401e252422212121222323272423242220 +21242a24202223212125242526231e1a17154a7294c7d1d3dbded7dde6ed +f2f6f8fafdfefefaf9fcfefefffef7ede4ddd7d4cdcdcfd4dadfe1e2e8eb +f1f4f5f3eeecf1f3f6f7f7f7fafcf8f9fafbf9f5eeeae5d2bdad9a83716b +7894b6d4ebf2d9ba8562423a3a42494b4546494a40564939454c4b494640 +424a3848545a5e574e4f574a474e544f5646453c314c393b3c4f31494451 +434d48555b4f5248515741504d46434237bca28c889ca5a6b6bab9b1c9f6 +edd4dbe5e3dfe4dbf8feffe8e6dde3dfebfaffffe3e8eaec3f676772bffe +eaebeae1eaeddde0e6e073b07c00100d1215120c0f14131714171e221e18 +181c1f2d38404b53586367717b7473382c22322f20273415292475735c4e +15152a55d58341581a1c2576a197634b21392e8aa6a25169273e3d464231 +1a07082a5061645b6d64586990385592839848374e6960787b7e8662775d +62716684a82271a85c78c13441416cc12da2ae1325254ea767a2721b3327 +689261a74f0f2e3c6d7249c28e0a2c43492fbbe51ef16059ff89534e3130 +3f596e61696874747c7072716e776760696b96706d90804744a1a971aa13 +3f5c76ab92959f033e2973bb919b891f4c7a8ead92b94618264bf88aa4c1 +262b533d215bffc5bcef81d5a43e433d443d433f4a4a534a444c4a4f5a53 +5062b2b07d35994930845749c7fbda62e81c2245fca64aa48216267dfaa4 +43fc61182acdf16468fd2d1664fbb86bc0dc89a9a59ebac1a6b39dacb6be +bdb4aaae8ea3988788b599b2bac4c2cfc8d6d7c7b9d7c7b7b2c4b6b30e0f +1211121213120b07117cbeb2a4a6b3c2c5bbb7c3cdcfc7bebbc2c7c5bdb7 +b8c2c5baafb2bbc0b9a7acb8b9ab9ca5b0a7a98d9cb5ac9c839bac9c7d69 +a29b9a5a6e9e8d6c458d827d207a8a301219171312121314151519161516 +141213161c161315161414181717151009020000325a7eafbbbbc5c6c0c4 +cfd4dbdce1e3eaecece8e8ebedefeff1e9dfd8d1ccc9c2c1c3c8ced3d5d4 +dadbe1e2e5e1ddd9dbdde0e1e1e1e2e4e0e1e0e1dfdbd5d1cbb9a3907d64 +534a587496b4ced4bc9f6d4b2c23242b3334312f35362c42352530363533 +312b2d3523333f454a433a3b433532393f3a413130271c372426273a1d35 +2d3a2a342f3c4236392f3a402d3c382f2c2818997e635d6f7978898d8c86 +a1d0c5abb2bbb9b5bcb2d0d6dac2c1b6b8b4c4d4dddfc3c7c8c81d444650 +9eddc9cac6bcc2c3b1b3bab64e9266000807080909060c1110120c0a1014 +100a0d0e111a1c212a32373f3e46504e58231e182b2a191d280417105f5d +473903031a3db25f284407070d5c827b53411527176e8582375210282a34 +311e040000183b49483b4c4234446c1b468a778f4a343444364b4f556244 +5b3e3e4c415f84004c843a5aa9202d294e9f0b849600110d30894f8c5a01 +160a4d784a923a00151f4f5431aa73000e262f17a5d20de04f47ef6d3027 +10132440503f413b434550474f50475148424b4a7149486f642e2982844d +900026425a8f777c8a002b155da27481740a355f708f769c2c000f32de6e +86a30f173f26063de3a6a0d86fc4932a2b2022171e1a24242c221c242227 +322a273d989a681f833217693929a7dbba44cd030a2bdf872c8c750b1365 +dd8322e2540d16b1cf4147e31c0857ea9c499cba6c8f837b969f86947e8d +979e9b92888c6d8274636491779098a2a0ada7b5b6a698b6a3918c9e908d +272726242222262a35332e64f2fcefecdfebf8f8f0ebf0f9f6f4ede8eff8 +f5eae4e8f0f2e9dfe4f0efe4d7e6f0e6ddd0e4efefd4c8e6e2e5c2c3e0dc +d8a2c1dfd6af91d7cac682bac3c2768da453333635343232343535343734 +32323332323433343a413f37353a3a38393c3f3e39362f2c1a2f3e65a9db +f5f5f4f4f4f6f7f6f3fbfffffffffffffffffffffffffffffffffdf5eee7 +e0dbd7d2cbc5c5cad2d8d8d9d9d8d5d2d2d3cfcecdc8c1b8b0aaaba4a3af +c3d9f0ffffffffe4c2a27d57483c404a4d4d5355504953605159555d6054 +554a4f574952574e4f5d5d4f546a525a514f35435a624d65506151616b59 +466f51726b65726f4d6a6b7d7d61605a4a58595a38d9b4a59faab4acbcc5 +cecdecffd6d5e8e1e8ecebf8feffffafdafcf9ebf0fafdffcf9effefa693 +68acfdffe0effef1eceaedf1f4f79fba9516221d0e1b1a16191918171912 +11171a15151e1c171219201b23363323394453183a342839303337213913 +87b5558a32353c55e0c14567212f2c77d0b5487b243c39bce4d0337f2721 +271d1e100ccdfffbfff4df2433314162ea6badf7fffdf3bd7d774c3a3927 +3b472e34392d4f58b7436cc1819fd33863697ce875a5d416714b6ba8678d +93115c647eacb29a6c366c5b88c5a9c9c00b342d313aa2ff71ffeec6fe94 +6da45f63b2eff153523e4b4a42394c45383b4d67653f2b6c3887a25189da +8a60ff455060beec7c89e1276a60e5cb84d0c84a3990fd9b8ce46f3f68ca +ffa3a9fa95488aa39238939337384f36212c2a182c24292a3d495c585555 +4d525a515981f8c2efe4fbba3484737cfff9a1b3ff3c1fc1ffcd52f8ee4d +52ffffa14cff983a7cfff86685ff3943eeffb345d1ff4344363476c4c4fc +e3c7d6c4cadfeadbbcddb1c9e1eefac8b1c5cbc8dadfcee2dee9e4d4d7f6 +f8ef14161717171819191f191148d7e4d9d9d0ddeaeae2dce1eae9e7ded9 +e0ebe8ddd7dce4e6dbd1d6e2e1d6c8d7e1d7cebed1d9dcc1b7d5d1d4b1b2 +cdc9c38daac9c39c75beb8b16199aeb15c73954b27282524222222232322 +25222020201f1f212021272e2c242127272526292c2c272119160319274f +92c5e0e0dfdfdfe1e2e4e2ebf5fcfdfdfdfbfbf8fbfefefefcfefefff7ef +e8e1d9d4d0cbc4bebec3cbd0ced0d0cdcac7c7c8c4c3bfbab4aba19b9c93 +929eb2c8dff0f8fdf7d3ae916945372d2f3b3c3e42463f38424f4048444c +5145463b40483841463d3e4c4c3e4259424a413f25334a523d5540514151 +5b49355e41625b55625f3d5a5b6d6d514f4b3e4e4d4c29cba4938e99a69e +afb8c3c2dff4c8c9dcd8dfe5e3f0f5f8ffa5cdf0ece0e7f2f7ffc694f2e1 +9484589ff0f6d2e1f2e8e3e1e2e4e3e58ba6830613120817161114141314 +1914131b211b1d24202433464f4d57707a70807c712132251b2e25262a15 +2c0678a6447920232946dcbd375816241866cbb13869162f25a7d1c02479 +35383a2f2d1f1ed9fff6ffffff52605a657cf24c51778464452d3b72757c +816e797f646e7a6a7f74bd3b5eaf718ec12550576bd86594c2035e395a97 +537b81014d556e9ca28a5b265b4a75b08fb1b50a3d3c4044a1fb65fde7c5 +ffa17eb86e71c0ffff757f7386887f76847d726f72858362549555949639 +6bc3825af8333e4faad86673cb12554ed3b973bfb231207bea8b7bd35e2d +56b8f19096e77f32748f842f908e2d283821153142394b444b4c616d807c +797b767c847b83a0ffc7f3ebffbf367f696cfbe1899df52709a5efa934d9 +c32536faf07f2eea72135ff3de4d6af01923ccec9528b4e9282c272764ad +a7ddc2a6b7a7adc2ccbd9bbc93abc3d0ddab94a8aeabc0c5b4c8c4cfccbc +bfdee0d70d0e100f110f1111140c0132bcc2b4b1a7b6c3c5bfbbc0c9c9c5 +bdb8bfc9c6bab4b6bec0b6acb1bdbaafa1b0bab0a796a9b0b2978caaa6a9 +8586a29e986280a09b744e958a82346e81863b587e38191b161513131415 +15141714121212111113111219201e161619191617181b18130c04010004 +153a80b0cdcbcccacccccfd0d0dbe5ececececebebeaecefefefedf1f1f1 +e9e1dad1c9c4c0b9b2abacb0b8b9b3b3b3b1aca9a9aaa6a5a29d948b827c +7f77768094aac1d2dadfd9b79577502d231a1d282a2b30312d24303b2c34 +30383c3031262b33242d32292a38382a2e452b332a280e1c333b263e293a +2a3a4432214a2a4b423c484523404254563a3b36283535310aa8806b636d +7971838c9695b5caa1a1b4afb6bbbcc9ced1dc81aacac2b3becdd3dea571 +cfbc705d347cced4afbcccc1bab6b5b8b8bd688b6f000c0c000b0d0b1111 +100d0f07050a110d1016121218272d2a334a50445657570e271e152a1f1e +21071c00639130650c0f182fb9981d450410004aab94285d091c0d8ab09f +075f1b1e2419180804c1ede3edeceb3541383f55cb2f467484674f2d234c +494e5342505a4048503e554c99173b8b4f70ab143f414db64376ac004d23 +3c793b656900303854838b73470f412c5591769999001e1d232b8deb57ef +d7b3ef875e954f57a7e7ed5456455659534c5f584c495369674434753778 +7e2153a45d38e11f263591bf4e5cb600443abda159a59d1d0a60cc6a5db7 +44153ea0d87276c9671b5d766912717012112610051d2a1c291f26273b47 +5a5653544e545c535b7eedb3e2dbf0ab21695052e0c77186e012008fd68f +1ac5ba1d28e4d46312d5690c4fdbc32f4dda0c18c2dd7b0a94c90d100604 +408b87bea38798878ba0aa9b7a9b6f879facbb8972868c899fa493a7a3ae +a8989bbabcb32021201e1d1f2226282a302892f2f7e9dde0eefaf6eaeaf3 +f6f9f3e5e8f6f9efe6e2e9f3efdfdde8eeebd5dde9e7e6ced4f2e5e3c8cd +e1e9d5b4cbdfe3bb9adad5ca8dafd7c29e87c7bd9c5ea6732e3c34343231 +3130313137353231333334343934323435333437413831333a4042454043 +41524534272732426087aecfe6f1f2f1eeeae9eef4f6ffffffffffffffff +fffffffffffffffffffffffffff8efeaefeeeae7e5e5e6e8edececeff7fd +fffffffffffffffffffcd8b48e71523023262729363c33323f4d493a4456 +5148414e4a4a5742465a4b53545157625f5251575c5e4d586f5e4a4b5254 +4c7a735d55494d5b51625e63636466656c59586459615a6a66612edeafa8 +9da4bdb6c5c9cdcad5d5dce4e1e1e7eee6e9ffffff9965e1eaf5eeffffff +d43ac0ffa79e7f9dfffff8eeebf0f5eeeaebf9fdaa9f840d1b1b28352719 +18141716131716171f1d17151e201714202928272a413739611a37403f31 +3d353b2d361ffffc5357344e366afff24459175f3f9effff4c7d10715389 +f2e04f9027281c302d184ed3546d5e7aef5b3c24244aaf42a2ffffffffbb +7574473b30423f3f30382f53496aa65a95ca759cd54776688e91539ed638 +7c68ac6574b2b4416d76aab5a48a6e4c6884bfabaaa4e219353e3f2e2acc +6fabafa78f221d9ffef3fcfca43a493c425038424c4b3c479aedf2ed71f1 +b76dbb59f1dfa580d12c4783f4b76fa3d91f3fb3fca85ea89e3b52feff77 +59c8413a63ffec4155ffa56df2fda73dbaffbdd4f0d0ae45485352485050 +46323436333c3b36342b2b3eea9a34b2fba22b5f7d53ffb437c7b4292ec7 +f7c446ff7e292affb8845cf0524048d8a254a29f572d86c89767e0ffacaf +d1bec4c7c6d8adaaddbdf8acead5dfe4d0dccde9e3e2cff3e3c9e4ece0f5 +f3f9e3dbd9e6edee0d101114141617191614160d76d7dcd1cbd3e0ece8dc +dce4e9ece4d6d9e7eae1d8d6dde7e1d1cfdae0ddc6cedad8d7bcc1dcd2d0 +b7bcd0d8c4a3b8cccea683c5c2b47194c5ad7d66b5ac8244986b232f2424 +22211f1e1f1f2523201f2020212126211f21222020232e251e20272d2f30 +292927382b1a0d0d182b497097b8cfdadfdedbd7d8dde3e5f2f0f3f9fbf9 +fafdfdfefefefefefefdfbfefffef9f0e7e2e5e5e1dedadadbdde2e1e1e4 +e9f0f4f7fcfbfcfdfdf8f1ebc7a37d61401f1115171c292f26222f3d392b +33454037303d3b3b4833374b3a42434046514e413f454c4e3d485f4e3a3b +42443c6a634d45393c4a41524e53535456555c494854485250605a531fce +9d958a93aca8b8bec5c2cac9d0dbd8d8dfe6e1e4fffcff915bd8deede5ff +fdffce32b7f999907394ffffece2e2e9eee7e2e0eaeb968b72000c112233 +2315130f0f111018191e28282220222b333d4d585a5d6b84756b791d292b +302630282e212912f7ed4246223c235affec34480a50298afffa3b6a0062 +3d72dfcd3c86303a2b3e39245cdc4d62597fff7d5e474763b41b37757e68 +552a3d7c7680798a7d77646f6e8e7886ac5187ba658bc03461567b81408d +c12567569952609ea0305c6599a592785c3a5471ac948c88d2143a474530 +22bc5c97a1a0902728aafff9ffffb455726f7d8f777f86857679bdffffff +8bffc56da93dd3c79b7ac2193571e0a3598dc208299eea964c94882239e8 +fc6448b72f2851edd82d40f68d53d8e59632b3ffb1c4d6baa24a5e74736b +757a705c595b58666766645b5761fea63db9ffa72d5d7341fa9518a8970e +13abd3a028e853010de796623ed12a1728bd86398480350b64a77748c1ed +8e98c3b1b2b0a9b98c89be9edb8fccb7bec3b2beafcbc6c5b2d6c6accad2 +c6dbd9dfcbc3c1ced5d607090a0b0d0f11110c0707005ebabeada5a9b9c5 +c3b9b9c3c7cac3b5b8c6c9beb5b0b7c1bcacaab5b9b69fa7b3b1b09497b3 +a8a68c91a5ad98778da1a37b599a988b4969957e503b878161297e54111f +15151312111011111715121112121313171211131412151820171011181e +1e1f191818271c0900000919395e87a6bfcad0cfccc8c8cdd3d5e2e0e3e8 +eae8e9edefefefedefededeaeaebece9e6dbd2cbcac8c4c1bebcbfbfc6c3 +c3c6ccd0d7d8dedddedfdfdcd5cfab8963482a0b0003070c191f16121f2d +291821332e231c292626331e2236262e2f2c323d3a2d2b2f353726314837 +23242b2d25534c362e2228362a3b353a393a3c3b4330313d343d37474036 +00ac776d6067807b8c9197949d9fa6b0afafb8bfb9bcdcd7dc6c37b1b4bf +bcdad9ddaa0d90d172694b6ddcdcc6bab9bfc4bbb4b3bfc375705e000508 +1624180c0f0b0c0b070a080c17171210131a1a1f2c363739435b4e48610c +20262b222a2025131901e4d82e320e281243dcc81b34003b116fe1dd2b5c +004f2553beac1e6b15201427230c42c13a50456bf16443261f398c002d77 +8576652f26534a514b5c5450404843624e5e88306498436dab2350405d5f +206fac1456407b344886881640497f8c7c6248243b538c757270b8001a28 +29180fad4e8c94907e110a8ae8dfe9ed99344a444f604a555e5f4e549fec +efea70edab559328bbab785aad081f59c88b4278b0001b8dd680347c730e +23d0e1462c9b17123bd5bf1223d9753cc1cd7a1496e397adc5ac92364759 +544a53564c383739364243403e353340e5902aa9f09318465a29e3800496 +87000095bb8610d54a0000d27d4622bc221119a86e1e6c6c29015896602b +a2cd7279a08e8e8e899a6d6a9f7fb96daa959da28e9a8ba7a4a390b4a48a +a9b1a5bab8bea79f9daab1b21f1f1f1d1d1d21241e2b302542c0ffffe8e0 +e4f2f7efeaedf1f8f5e9e6eff4f1ece4e5f0f0e5dee1edecdfd8dee8e7dc +cbdfdfe8d5c3d7e7e2c2b5d9e0d49ebad9d0ab87d0c4c374aebfa74b8e93 +3739323232302f3032353835323133353635393736393c3d3b3937323035 +3a3c3d3f46423c3f3d4b48515447352726354b596e819ebbd4e5eceee7ee +eeeaebf2f6f5fafdffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffff6e4cdad926d55331b1b272f2d3728242c353d +3d363d34414c584e454f4e555a4848565c6c5a59585250595f5c536f654a +5251647357565d645e5f554e644d625b577265737772626668676c5a605e +5b5932e3b3b1adacbcb8bbc5c7ccd8cedcd5dceeede2e7f3fef8ff8b4991 +f3f4f7faf2ed9e3757b0b9a36a90ffffefebe3eceae5eaf7f7f8ac8d8d31 +60744951331916131a1a141d18121a1c161a2a2e261f252b343a30483166 +8025343b3435313639443422e4fe3850313f3852ffc3778332814884ffd3 +576d2a84469fffff6e832438201520101beefffffffff82e14593356bb5e +97ffffffffa86d634b3c343d60d5eba838c1725aac8db8cfa1955f1f4989 +9e8875af57214a7b92927c7d3239439bab698b5238407998b3acacbcff60 +96ffee4b7effd0bb9e8dc4466efed2a1bcdaef5145453f45393c373e3c29 +b9f05cbdf5f9c944d368ffd94b5876313787ffac1f8052321da5f2870f6c +362a19c8f7542f36281615ecb53869ffdc2ed7f7ea3050b94f453b6d6035 +2a232e26272e211e2e412432373431312f2b2e433c31273c1f508f728360 +57be834563b88b635a9e8143929f6c6496a35854b79f7c3287675a5bea80 +6060ff578e509e8c43a3a6dee28fbfc6abc4afbccce4f4d4d0dcdee0e9e4 +ded3dae0e9dcd3e9faf8eee4e5e50c0d10121416181a1019190b26a2e6e6 +d4d1d7e4e9e1dee0e3eae7dbd6dfe4e3ded6d7e2e2d7d0d3deddd0c9cfd9 +d8cab8c9ccd5c2b0c6d6cfafa0c4c9bd85a3c3ba926fbbaea4559cae8f34 +80892a2c222222201d1e20232623201f20222322282624272a2b29272520 +1e23282a2b2c2c262023212f2c35382d1b0d0c1b3142576b89a6bfd0d9db +d4dbddd9dae1e5e4eaedf1f5f7f9fcfdfdfdfdfdfdfefefffffefcfdfdff +fffffefdfbfafcfefffff2f2ede2d3bc9b805d44220b0a171d1d2b1c1820 +292f2f293027313c483f343e3f464b3937454b5b494846403e474d4a415d +5338403f526145444b524c4d433c543d524b476255636762525658575c4b +5655504c22d19d9b9897aaa7aebabfc4cdc3d1cdd3e7e6dbe2eef6f0fa82 +4088e8eceef5ede9992f4ea5ac965e87fff9e8e4dfe8e6e1e2ece8e6987a +7b21526a434e2c120e0b1013101b1b1a23272427313b40414a5259625d77 +5e8891232123222722272b362412d3ed263e1f2d2342fabb65712370306f +fbcc445a1a753188f8f5597527422519241624f2fefdfdfffa392b785670 +bd3125736062451d3f7583867e8094feffc960e7906aab84aec291814809 +32748975609b400b33667d7d66671c232e879757763d232b63839e938c9e +fc5593ffed4571efb8a58c81c14874ffd4a1badefc6a6b787c877d7d757a +795ddeff6ecdffffcd3cb949eec1404f651e2475ee9709693b1b078fdf74 +00571f1002b2e3401e24160403daa02455fcc212bbddd62249b243352157 +543a4045504d525b4e4b56694c5d686764645d5655665847384b2d588f68 +6d44369d632950a67149448860257f8f544b838f3a36a08d6a2072524344 +d3694a4bf8447b419482338f8cbfc16ea0a78ea7929eabc3d6b6b2bec1c3 +ccc7c1b6c0c6cfc2b9cfe0ded4cacbcb08090b0c0f0e1111070d0b00118a +cdc8afa8adbdc2bcb8bdc0c7c4b8b5bec3c0bbb1b2bdbdb2a9acb7b6a9a2 +a8b2afa28ea0a2ab98869baba48475999f935c799a9169438c7d76296e83 +6d156570171b131313110f1012151815121112141514181616191c1d1d1b +191412151a1c1d1e1f181415152120272c1e0e00000c2434495d7895aebf +c8cac3cacdc7c8cfd3d2dadee2e5e8e9ebeaeceae9e7e9e8e8eae9eae8e9 +eaeaeceaebe7e5e4e6e6eae6d8d7d2c7b7a283684630100000080f101f10 +0c141b2222192016212c382c222c2a313624233137473534302a28313734 +2b453b2028273a492d2c333a34352b243d263b342e493b494d48393d4140 +45343b38322c00ad76726d6a7c79818c9196a096a49fa8bbbcb1bac6cfc9 +d35b195fbbbec5cdc7c373082578806a345edad2bcb8b2bbb9b4b4bfbdbe +755c65114760353f220a0b080e0b050e0a0510161316212727262b333840 +3c553f6d7e161a1f20241d2022291502c1db122a0b191029d6974d5d105c +1852dcb0334c0b601668d4d13a5a0a270e020d0009d7eaeaeaedec281158 +2c4395141b796d745a24284d54534d546edcedaa3dc26c468c638ba07066 +360024616e5543802e00255362624f50050b136c7e3f612a10164c687f75 +7384e13974e4d12d5ee0ac988073b0335ae8bc89a5c7e24c464f50594e52 +4c545037bded54b3ebedb627a835d9a72232530f1361d98200572d0d0082 +d06300420f01009bca25040c020000c68b0b3ae1a900a3c4bb052c95291e +10494426292a3732363e312e3b4e31414a484545403838483f3025361640 +754d562f258e581d3f905a302c73571d70783a2d6577302e907752085d3f +3336c357322ed9235b20705e0f6c6ba0a24f81886c85707c8aa2b2928e9a +9fa1aaa59f949fa5aea198aebdbbb1a7a8a8222221211e1e202222222530 +3356e9fcf8e6e1eaf5f5eeeaecf4f6eee6e7eef3f1e7e3eaefeae1dcece9 +ebd8d6e8e5ebd2cbe7e6dec5c4e2e0dca6cad9d9bd93d3c9d27aaec9ce85 +85bba7635590542d2f3132313133383c34332f2e30333433353637353537 +38383d3835363634373c3b444d463e4f434642494f4e484241423a352c25 +293849537791a5aabbd2ddd4d7dce1e6e8e9ebedf0f2f4f7f9faf8f7faf8 +f9fbfcfcfaf5fdfbfefbf9f0e9e5d6cbae8c715c3e22211a1c272a242429 +272226292a2d35352f394e464f4243525154515b5e504f53564c53616360 +626467564f615d555752584562615a5d5a797a5f5f584a535e586a545965 +625e5e616a626e6e4be6b2b4aaaabbc2becdc8d0ccdee3d8e8e2e6ededf2 +fee7f2a3766883f5f0faffe5a54b615fa79d768effffe8f2ebefeaebebf0 +f3fabb8c861731384954331a1b191c19181a1820312c1d1c2825344e4736 +60a9af5e44b984103f3e3b363d3366284d42ffff503b29465c5bfcff5647 +372e5d8bfff437404c5066a3f6f634956356bde5aa337dff36453b43643d +5041495ec16e7de2f7eab77f4152462e3e3baeed98ede6ebb14bbb83929d +89263e3d45aec2ba7b273a2f3fa8ac8472383d305aabad7a61254d2e68bb +b0868590ed6157d1f1742effa6555478724e53e5e3dde5d0fbb13a403523 +3a2e2d3b353731a57d3564ac6250bb63b77a764c6055314aad604d5b6f43 +3d546e54413d465850584638323035776c4e3d3950545e479dffff303fdc +a1d7ffc8bf5340272d2a252e2534333131302f2a282f3734353d3e3a2b3d +364889a46d7e6d68436e25ac9b846f4c405d1383655b793c4d343271765d +75406b1b547b536b8c6c9affd5d6a8c9bde2ffd0ece0e6d1d0d1cec9eee0 +d2e0dae0d5d6d1e4e6dbe1cccfd3d4dce1e2eae90f101214151719191814 +12191637c6dee1d7d2dde7e7e2dedee6e8e0d6d7dee3e3d9d5dce1dcd3ce +dddadcc9c7d9d6d9bfb5d4d3cbb2b3d1cdc991b5c2c2a47cbeb4bb6298b1 +b26a70a8904e468448201f2122211f21262a22211d1c1d20212024252523 +232526262b26232424222528232a332c2435292c282f35342e282728231e +150e1221323e607c9097a6c0c8c2c4c9ced3d5d6dadcdfe1e5e8eaebecec +eff0f1f3f4f4efedf2f3f3f3eee8ded9c4b79a785f4a2c11100a0c161913 +131a1a181c1f1d212727212c3e363f3232414245424c4d3f3e42453b414f +514e505255443d4f4b4345404633504f484b48676a4f4f483a434e485a44 +4955524e4e535f57616039d29b9d9393a6b1b1c2c0c8c1d4d9d0e0dbdde6 +e6ebf5dee6976a5c78eae7f3ffe0a04456549a906b85f9ffe1eee9ece7e8 +e4e5e6eba7797406212c424e2b1112101312141b1d293d3b2e2d3738506f +68557ac2c97b62d3911131292c282e24581a3d32faf43d2917344a4bf4ff +4432281d4373feed242d3c41518fe6e61f865f59bbe0a53181ff2a34303c +5c3e6765747fc847134d4d3b120b216c817b8a7ddcffafffffffc656b87a +8992781027262d97aca5661123182791966f591f2418449599664c103618 +4fa3996d6572d5504ccaea6a21fc9343446c6b4d58ebe3dbe0cfffc86274 +74687f736e79736f5dc6964c7bbe6a4eaa4a9c6266404f421e37984b3846 +572d27405b412f2a2f4039433126201f24665b3b2a273e3e442b81f7eb25 +38d797c7fab2b35657495355515c55625f5c5d5e615f5d646765686c6356 +43504a5892a05b614c44225618a18973603d28460a7d554a6e30361d2265 +695066305b0b436c445d7e618ffecdcc9ab5a3c3f0afcbc1c9b4b3b4b0a8 +d0c2b4c2bdc3b8b9b4c7ccc1c7b2b5b9bac2c7c8d0cf0b0c0d0e10111112 +0f09040b0623b2c4bfaea9b3c0c0bcb8bbc3c5bdb5b6bdc1c0b4b0b7bcb7 +aca7b6b3b5a2a0b2adb1958caaa9a18888a6a29e668a98987b5293898f36 +6981833d457e6e2f296a320d0f1213121113181c14130f0e0f1213121415 +171515171a1a1f1a17181816191d171d261f17281c1f1b222827211b1a1b +151005000211222d506b7f8693acb5aeb3babfc4c6c5c8cacdcfd0d3d5d6 +d6d6dbdbdedee1dfddd8e0dedfdedad3cac3ac9e815f473418000000000c +0f0b0b13120f131514151c1a141c2f262f22222f2f302d37392b2a2e3127 +2b393b383a3c3d2c2537332b2d282e1b38373033304f5338382f212a342e +402a303c3b3737394339413d15ad7273676779838494929993a3a8a1b2af +b2bcbcc1ceb5be6f42324bbcbcc9d7b8781a29266d633e5acfd6b3bfb9bf +babbb6b8bac284595c001420323e20080d0b0e0a090b091429261b1a2222 +37524b365da5ae5f48ba7f0328242925291d4f0f3023eae22c1503203632 +d0dd2c1f15092c57dfd1131f2c2c366ec2c20069443ea6cc8f1866e81422 +1e2a51304d4147509c28064f584c220e0a455147594fb7ed93e6e2e5a536 +995b68725a001718218794884b00130a1b817e54450b0e002c7d804e3900 +240339897a4f4c58bb3430aed0510eea8435375e5b3941d1cbc6ccbaecab +404e493b534746524a483aa779305fa452379636874a4c263f340f268538 +25354b221c354d321b1921342b301c0e0a0b12564b2c191126262d136bdd +d2091bba7eb0eaa4a3433d2e3a3a38403b4646414442464141464d47474a +443d2d3a313d7585454f3d38194a078d7159492a1e3e00673b2c52182e15 +124f563d53204b0033592d4361416fdaa8a8759282a4d190aca2a7929192 +8e87ac9e909e9ba1969792a5aba0a6919498979fa4a5adac1f2222211d1d +1f232223252930239bfcf9f1e6e6f1f6f2efe7ebf4f7eee3e8f2f3f0dee2 +edeeebd3d7f0e6e5d4dae8e9e4c1d7e8e5dbaadbdfe1bfa4e0d4d28cbfc5 +d2a27bc9c5a768b797753e7b642c29352f2e3634353a36332d2c31373632 +37353a343a353b3a3f3a343134383d40423e454d3d473e3d403d40423f42 +47464b494a50524f4c4a3d39372f3042565a74848dafbeb6c5d1c6cacdd1 +d2d1ceccd9d8cfd8d2d6d5dbd8cbcabcaaa69f8268533a2e2a2826272725 +2320202021212323262627292e3032333b424344443f3f4b545149464b51 +5255455b3b4e4f4f4e4f425f5351716d695a5870607553715f52676e7666 +6368855f907d77707089889485947eebafb9b5aab7c5bccfc9d2d8dddcdd +e4e6eaeef0f7fdf1f6b5697f7ca9ecf8ffefca44686397af7589fcffefe5 +eef0ecedecf0f3f5c685951d2216102616191b19181d1b18282a3d2c1c2f +38383d62794fe1f9f9f791ee8f132c3a392f3e3064124d4485ab293b2e30 +608aaba21b31382c97b2a5961232234483b68d8f388e7853d7edfb4a57ff +a89fa9e3ff7a544246419d6257c1c5b78f67526342363c3e69ed7d54d4ea +9740c485778889445c38547fa3a79b4f743f5e80a7927561783e5b8abe8f +8a847360709a9880a0b3cd3c24f3ffbb109dd5fbfeffffd74da2b4b5bcb9 +f8d131413835392f433b3d3a3d334242222c303474a25251414347816560 +4e4937363d6d48605e4835343a84314e4e36342a3388263e494c6d63665e +1f5c65443fffae92ffbba84c32352f2937252b2e2d342a34372b3b35293c +3f2e35332735312d986e51485551493c154039353e373b300c583f2d3930 +381e314021282f27330a5159513f2f1b9c82b98867ffbfcecabdbdc1cebb +cdd0c2cfc5d5d8dde0f5e6cddcbce0e5ebe4cddcd2d2dcd2e6f60d101314 +1214181c19161513140377dce0dfd4d7e3e8e4e1dbdfe6e9ded3d5e2e5e2 +d0d4dfe0dcc4c8e1d7d6c2c8d6d7d1abc1d2d2c897c8ccceaa8fc9bdb973 +a8b0bd8b60aeaf904f9f85652d6b582019251f1e2422232824211b1a1e24 +231f25232822282329282d28221f22262b2c2c262d35252f26252825282a +272a2f2e312f3036383532332322201a192d40435d6a7395a79faebab1b5 +bbbfc0bfbdbac3c0b7c0bac1bdc6c0b6b2a79291876c543f281c18151415 +1514121111111213181a1b1c1d1f212424252d353334342f303c45423a37 +3a404144344a2b3e3d3d3c3d304d413f5f5b5748465e4e63415f4d40555c +64555257744e7f6c655e5e797a8575826ad598a19d94a2b3aec3bec7ccd1 +d0d3d9dedfe5e7eef1e5e9a85a706e9ce1efffe8c33b5d5789a36a80f5f8 +ebe1eceeebeae5e8e6e6b272840d120a041d0c0f10100f16191b30364c3f +3247565b62879a6af4ffffffa3ffa11c2a302c212f2156043d34759c182a +1d1f4f7ca297091c281b7d9a9c8f011f13356ea38183257d6e4dcaddee42 +55ff9990a1dcf87e75758071ae4c0a524736181844868184888097ff9166 +efffac4bc07c727f782e45203c688d9285395d274669917c5b465f254574 +aa7a756f5c4957827e668597b32610e3f8b10895cdf2f7f9fdd455acb7b4 +bab8ffea5a777b7c807384797e7771616b6b4b514f47769a403c2c31356f +534f3b3624232759344c4a362423236d1b3b3b25231a2378152c373b5c51 +50460648553d3bffa783faa69d4f495857566553595c5b625865695e6d68 +5b6f75605a503d484841a571422f35312c2a0e3d2e2b382e281f08573524 +332a290f28391a21261e2a01455149392917997fb5805bf9a7afa99c9ca2 +b19eb0b3a4b1a7b7babfc3d8c9b0bf9fc6cbd1cab3c2b8b8c2b8ccdc090c +0e0e0e0f1014100d0806060067c5c1b9aeb0bcc1bdbab5b9c1c4bcb1b5c0 +c2bdabafb8b9b59da1baaead9aa0aeafa78298a9a89e6d9ea1a37f649f93 +904a7e83905f33818064267961441151400a0916100f1614151a16130d0c +1016151117151a141a151b1a211c1613181c21211f1a212919231a191c19 +1c1e1b1e2322242223292926232312100e07071a2b314d5b6486978f9ea8 +9ea2a7abacaba9a4aba69fa6a2a6a5aba89b988c78766d543c2712060404 +06090b0c0b0c0e0e0f101413151314151818191820252425251f1d29322f +2724282e2d3020361427272724251835292747433f302e46364b2947372a +3d444c3b383d5a3465524d4648605d64535e45ac6e75716573837f939099 +9a9f9ea2abb0b2babcc3c9bbbf7e2f45416fb4c4d7be99102f275a733d55 +cbccbbb1bcbebdbdb7bababd8d5168000200000e02060c0b0a0c0c0a1b1e +35291d313c3d43667b4bd8ecebeb8be98b091d27261e2a1a4d0030256589 +06180b0d3b628177000b180766807d730011032053825b5d07635535b9cd +db2b3ce8847d8ecceb6d564c4e3d8127004b483a1c132a5e5250575272ec +764cd0e48b2ba35f52605c173714325a76776d224f1b3c5b7a644a354b0f +2e5d9265625e4c37436a634b6a7f9c0e00cae0980080bae1e7e9f1c33e94 +a29fa5a3eacd3a535252564a5c52544e4b3d494929302f2b5e832c27171d +2965453f2a2513141c502b433f2814131b65102c2a13130a146b0b20292b +4a3b392e002f3c211ee48d6cea958b3a2d3a3c3949363d3f3f453c474c3f +50493e4e513b3b3426322e2589542b1b2826241e002a1812221d21180043 +1c071914220817260811170f1b00353e36230f007a5c905b35d585908a7d +7d838f7c8e91828f8393969ba1b6a78e9d7da5aab0a992a195959f95a9b9 +24232424222021242423272f33384ec3ffedf4e3e4f3faf1e6e8eff4f1e7 +e6e9eef1e4e2e4e7efe3d8ddeee4e1d1ddebe1dec4dfe1dec1b9e0dbd6aa +bfd8cfb382d4c3c077acbac064829d6c506976422b36302c333332333331 +372c342e34302f2f3631373034323130303235383b3c36303c3e373f3c3d +413b3e4144484740514b48494b4b4d504e4f4f4b464949433f3f322d2b27 +313c393c454d5458595b586167706f6f655e51494d4c4244422d3e332e31 +34312d2a22211e1d1d1d1e1d1d1e202123252a2c32303438393e44424a47 +44454c5559574e52514963607a827b7767958078757c7178607273727290 +7c949180717867705c6a718460636a6a395e5a745ff9a3b7aab3b9bdc2ce +d1d5dde1e1e2e8eaebf1f0f4fcf7f9c977909b97dffef5edda586c6e8ba7 +8176dffff2e8ebe7ece2edece6f7d473b34b564951454c211c280f1f191e +30282e29324c484859514258d5e230a9f5f27a103c2d3f32393477134453 +24361b46293c6e97958d304d2a44719f9b6e416d21557ba0949d98a04144 +6ecbf86f148597b595b2c17841433a4ddda98ca1ca848277a7664338382c +384c48491e2c2b4aab6d4c677975b4778162a29976758c799d58856f5993 +b1ae9e5ea2805d71926695847b859573a54725eaff8629f5e472f8da7b73 +38aeb8c4dbe2fb8a403640322e344d4f383936423930392d3f5e5c56464f +483c3e4b242d494b3c2f39582d2c3e3f3e2c3339122e49394b3b40301b3b +57504c4136313e88b6922b8adff4f9ffffad2e313333303436392a2f3937 +28473c354641326a6348568075348a624541443d2e280370373737303e17 +264c3b4528252a1a4e5b3d4331321b18823c50533626d0c3a6b362ebe5c4 +dcd9ccc5e0bac8c9c4c7bfc0d2d7c0c8c9d2acd8c3cad8d2e7d4ddd3d4f7 +cbd8121415151415181b1b19191d191b2aa0eed9e0d1d5e5ece3dadce1e6 +e1d7d3d9dee3d6d4d6d9e0d4c9cedfd5cfbfcbd8cbc8aec9cecbaea6cdc8 +c195a8c1b69a6abdb1ab5a8fa8ad48688d5f3f586a371b26201c21212021 +211f251a211b211d1d1d241f251e22201f1e1e202326292a221d262b2129 +26272b25262b2c302f2837312e2f31313336343538342f32322923231611 +0f0d17221f252e383f4344453e454b5453554b44372f3332282a28142821 +1b1e211f1b17100f0f0d0d0d0e0f12131516181b1d1f2422262a292e3432 +3a3834363c4648463d41403852506870696555836e66636a5f664e606160 +607e6a827f6e6067565f4b5960734e515858284e48604ce48ca0949da4ab +b1c0c4c8cfd4d3d6dbdfe0e6e4e8efe8eab8667f8a89d2f2ece6d14c5f62 +7d99746ad6ffeee4e9e4ebdfe6e3d9e8c060a23b473c44394014111f0b1d +1b263e3a45414c6a6d71827b6a7beef23ab5ffff911f3e2734252c276905 +364514260b371a2d5d888c841e3a1a33588a9269315b144967908c95858c +35395db8e76412838aa88eacbb846a7e7a82f49f5a587a343947a5888286 +86716a716263414f465bab68496069609e606a4c8d85626076628642705a +427c9a998949906e4a5e7c517e6e636d7d5b8c3111dafd8027f7e674f7d4 +717044bdc0c6d9e1ffa3676c82797576898c797a70766b5f685964796654 +393c33262c3a141d383a2b1d25451a192c2f2e1c2024001c392c3d2d3423 +0c2d49423c3225212c79af912e8ddbe8e7eefab1455461625d6263685c63 +6d6b5a796b677a756696805a628c874799663b2a28211a1c016f302f352a +2c08264f353e26221d0d4858373d282a13117b35494d3424d1c3a4ae59db +cda5bbb6aba6c29dabaca6a9a1a2b4b9a3abacb58fbba9b0beb8cdbac3b9 +baddb1be0e0f101011111114120f0e110c0d1c8dd0b4bdabaebec5bcb4b6 +bcc1bfb5b3b7babeb1afafb2b9ada2a7b6aca797a3b0a29f85a0a4a1847c +a29d966a7e978d713e91837e2e637a822143693d213e50210b17110d1313 +12131311170c130d130f0f0f16111710141211121214191c1f1e170f191d +141c191a1e181a1e2024231c2a24212222222427252426221d2020181515 +0803010006110e131c252c303130272d353c3d3e342d20181c1b11131100 +130d0a0d131311100c0b0c0d0e0e0f0f100f0f10121215161b171b1d1c1f +27232a2524232c3336342b2d2c243e39525a534d3d6b564e4b52474e3648 +49484866546c6756464d3c45313f4659363942400a2c243b24b96274656e +757d8393979b9ea0a2a6aeb1b3b9babec5bdbf8c3a515c5ca6c8c3bca822 +32324e6a4840afd8bfb4b9b7bdb2bab8afbf9b3f8422322b3329340b0b18 +02110d1125202b2733504e4f6057475ad0d7219dedef770a301b2e1f261f +60002b3805160024071a4b716b650a2b0b21426f754c214d04334e6f6570 +67731f254da9d54e006a77977c9cad704852464ec67b41496f2b323b8c65 +53525442444f4546202e253b8f4b2a434f4b9158623f786c4a4b695a7e35 +5b45326c888474347c5a394f6e406c574b536543761a00c3e56810dfd05f +e5c465612ea6a9b0c4ccec86484a5c514d5063634f504850463b4436435a +4d3d262b20182232070e282a1b0f1c3e131222221f0f191f00102a1c3020 +281a05243e352d1f110a166295751170c0d2d3dde59a28343d3e3c3e4244 +393d494537544942564f3f7262424c766d2b7c4b22181c161110005d1d1a +201a28051a3e1f240d0f1707384529311f1f06016b23393d1f0bb2a17e88 +32b7ab869c988c87a07b898a84877d7e909581898a936d99888f9d97ac99 +a09697ba8e9b20202020201f1e1e2020282d2d3e1d6ae8f9fbece5f1f8f2 +e8e5e8eff2ece5dfebf2e9e0dee4f0eddaceecebe9d1cde6e5ebc1cbdfe4 +d5a6ccdee0bb99d5d5cd7bbbc2c78f86b0bc7d65a1765d4d6c462a322e27 +2c2f2b2a302a3222352f3f3b31303732373034323637383839393b3c3630 +3e393a3e4142464146474748463e454444474846444442424646454a4b44 +3d495047494e48494c4c4b46403a34303e3e3c3034393d39413b42494244 +453a413b35312f29231f1e1e1c1c1b1b1a1a1a1b1d1e1f2023252c282b2e +2e353d3d39383a4450554e414b624f485a4d4656545450675a4d3b475d6e +5c5f6b5e6183636a5450657a62687e535f6a71677d8e868479716ffa92b9 +bdacb7c9c5c3d6d7d4dadde0e8ebedf4f0f8fff7f1d77d8e9fb2d5fffff0 +e34d677b92a9847f9efff2f0f4e8f7e1eef6fdfad873971d14231b232916 +1c131f141b1926212f3845504f563f4a574c518345465576411b2f373639 +33257b2b321a212483c3786f76619492a0a37672677b918d9a7c82716e68 +8680a4ad3f0abeffff4639ffdae6ffe4ce6c44493e51b9563d4f313f4e38 +14484236254b494e53513a32484dbc846770749096605480a7a38994b22c +4e828074718d7e15968b75787e847c0e6b98957a857b732312405e9722d9 +f9f4f6fffff139b0f9f7ffffe666283f412a353833353533352c231c1513 +3c2d52523829362a2c2915224434302d3e3e22273d3039322b27192d3c43 +3e382a1c1e374a4250483a2f318a53553fb8e2748375aaf868564b4b4a4b +524a49463b3b4e453d523f4c4cf0f0fffffffb3d7b5f384050383b152b56 +313d3a34241760543f39302d2712603f3c3940361f227b2f4b4745581d84 +b8fe9ea4bfb3c7e7b5cdd5b9cec0c0c4d4c6ced0cfe4cdcec5dbd0d3ebcb +c1cfb0b8b5fadfdb111111111112131517181c1d17220049cde1e4d8d3e1 +eae4dcd9dae1e2dcd2cfdbe4dbd2cfd5e1decbbfdad9d7bfbbd3cfd4abb5 +ccd1c293b9cbcba682bebcb463a4b0b26f699fab6148936c4a395e3c1a22 +1e171a1d19181e182010221c2c281f1e2520251e2321252526262727292a +241e2b27272b2e2f332e3034313230282e2d2d30312f2d2d2b2b2f2f2e33 +342a212c332b2d322c2f3232312f29231d192727251b1e2327232b252c33 +2f3132272e28221f1d16100d0c0c0c0c0b0b0b0c0c0d0f11121316181f1b +1d2020272f2f2c2b2d3743483e323c5340394b3e354642423e55483b2935 +4b5c4a4d594c4f715158423e546951576d424e595f556b7c7371655d5ce7 +7da4a89aa5b8b4b4c7c8c6cccfd2dadee0e7e3ebf2e8e0c56b7c8da1c8f8 +fbe7d7415a6d819a767394f9ebecf1e5f4dee6eaefebc460860d05160e16 +1d0c130f1f1b272b3d3c4c596773747e6b7a8c817fab636174975e2f302f +2c2f291b6e1f260e131776b66b6266558d898f916862516a8c898d6c7969 +5e59807a939b3400aefcfd403dffd3dafce3d18076887c81ce53282f1320 +2f2516637f84749486807f7f71667268c784666b687f844d416e96937983 +a0193b706f635e7a6b04857c66686e746c005a8883687369611102345a9a +2be6fffef9fffdee48c4fffcffffee7d4d72816e77746a6c76766f605145 +3a3456415a512d1823171b1a07143424201d2b2d11182f222b241c180a1f +303a34302113132c4038443c32292986535b4ac1e56e7264a2fc807c7c7f +75747b787d7e75717d736881778175fffaffffffff4b8a65302e39252f11 +2c542a35372e1207605638312e2a1904593a3430352b1519722843414255 +1c83b8fa9594a796a6c494aeb79cb1a3a2a6b6a8b0b2b2c7b0b1a8beb6b9 +d1b1a7b598a09de2c7c30c0c0c0c0c0c0d0e0e0d10100a160038b2bfc4b5 +afbdc3bdb4b1b5bcbeb8b1adb7bdb4aba8aebab7a296b2b1af9793aba6ab +828ca2a798698ea0a07b5894938b37788285463f737f3a266e492c1e4323 +0a130f080c0f0b0a100a1202140e1e1a1312171217101311151718181b1b +1f1e18101d19191d2021252023262425231b201f1f2223211f1d1b1b1f1f +1e23241b131e251d1f241e202323221f19130d091717170a101519151d17 +1e25202224191f191411130f0a090c0c0d0d0e0e0e0c0b0a0c0b0c0d1010 +17121415151a24221c1a1d2633372e1f29402d243629212f2c2c283f3225 +131f354634374336395b3b422a263a4f353b5126343f473d556455504238 +34bc52777b6c778a88899c9d979ba0a3adb2b6bdb9c1c7bdb4973d4e5f75 +9cced2beaf172e40556f4f4d71d4bfbdc4bacbb5bfc2c8c49f3f68000003 +000611020c06150b1313211d2e3c4c55535b475262575886414254784216 +20242326201165131a00060766a55a51563f706c7d835b533c506f6e7d5f +6a54453a5c56778320009eecec2a24eac0caecd1c067515b4b51a5300b16 +000c1d140044535244665d5b5c5b4a3f4e47a9684a4e4e6b78463a62827a +626f941234645b4f4f6c5c00736753585f655d0048716b505d534b00001e +417f10caece6e6eff1df33abede5eaead6612e515e49514e43454c4b473a +2d231b153926433c1b081409131300072515111024260a1126171e191713 +0316242b2825180a0d26372c362c1f13126d393f2ca4ca565e508be36055 +4f4f4a48514a4f4d454051453d5348534deae1edefefed316d49191a2b17 +23051e451822242010075848251a191b18014927292931250b0a63183835 +3342006492d46e70857687a6758f957a8f81808492848c8e90a58e8f869c +9598b0908694767e7bc0a5a11d1c1d1d201f1d1b1d212722272d332e9cfb +f6f4eae9e9f6efe6e3e8f0f0e8dde9efebe1dde3ebeae0d1d8efe7ddc8d9 +eddfd6bad6e5dabaaadcd7d192badecbaf82c9b7b66ca0aa865a828b644a +5e5735393b31323835353d34362b3d3941384140443e433e44423e3e3c3a +38383b3e3e3a473c424145453d3d43433b3a403f3a3b3f4143413e3c4645 +464541464a46484d5546444b3f44464549484847464548474b424942453e +4941484e4a454640443d352f2b2926261e1e1d1d1d1c1b1b1b1c1c1c1b1b +1c1d2321272b2b2f34323a3c3e40454a4c4c4c6164537857575e56667458 +615c565a5255625b5e5e4765646c7a6f7b6d60628a6d88626e566d5d616a +6e5a63ff87b1b0a9b3bcbbd3d8d4e3e9e9eaeeedecf2f8f3f8fef6e77d83 +a2b3e4ffffebf96a7c7888aa7ba272ffffedf3e9f0eeebecf0eff5865e68 +5d5562444c231a15162225222f314552564a4fa0604b3a453d3e4d463d46 +43132a3d3e3e3c3d651c282e434b696741415d6a6c6a7d813d606e915c62 +6b90255d8d67708b75ba280d51b59a2a33f9d5d8fedfe48945494047f760 +1630252c193828594a33402f3c4340272b293727a2672d54434a4c141b56 +321c3c28360b1e402525231e2814272d3024261a2d183e33364f3e2a4435 +2b40709153a1efe6f7f0f3fa595b9abbf1fefef5503f2c3732353b3c2b32 +2372c4b8bccff84d483d222c372d2621161e2c1b243021211821322c3126 +2517252b3735362d281e224c423e483631222a3342654293fce3f5eff2ff +59444a365454533652304593bde1433c2836251a60906e2b4f2345373d98 +aa3c2e02445b3a2c292a271069392c482927192655292837362e1f365735 +29342aba90fb7fdeffcbabe6bdde9fc4b1bdcfb9baa5d4c8d8c1add9d6d3 +e1deb2d3c7ffd8ffeeffcdc2f4d8100f0e0e0e10101014181d141315150e +7ee0ddddd6d7d9e8e3dad5dae0e0d5cddae1ddd3ced4dcdbd1c2c6ddd5cb +b6c6d7c8c0a4c3d2c7a797c9c2bc7ba3c5b2946ab7a2964f8f996a40747e +5136504b25292b21202623232b2224192a262e252f2e322c312d33312d2d +2a282626292c2c28352a302f32322a2a303028272a292425282b2c2a2725 +2f2e2f2e2a2f332f2e31392a2a31252a2c2e2f3131302f2e3130332c332c +2f28332d323a3633322e312b231d181614140c0b0d0d0d0c0d0d0d0e0e0e +0e0e0f101614191d1d2126242c2f3033383d3f3c3c5255446948484d4554 +62464f4a4448404350494c4c3553525a685d6a5c4f51795c77515c445b4b +4c555a4851f378a3a29ba5adacc4c9c5d5dbdbdbdfe0dee4eae5e9efe5d5 +6b718fa2d6fff7e1f05e6e69799b6d9569fffae6eee5ece8e1dfe0dde173 +4d5a51485237401b18171e313b3f51566d7b827372c48a7e77877c75776c +656b64272831343632355b121e243a425d5b3536526267636d7031545c81 +58625f821d56815c6c8565a921084aae972f41ffd2d1fbe0e9a077887970 +ff5f0f29242a14352b7084818f7879756c535f5d6044af6a30523b3f3f07 +0e492711311d290011331a1a15101c091f25271b1d10230f32282a43331f +392d2640769e66b5fff4ffefebf86c75a8c1effdffff716e65746b69676a +68735ba0e9d5d3e1ff564b3c191e251b19160c14200f1622121209142522 +271c1a0c1a23312f3229241a1b453b38403033252e384c7355a3ffe1e9e0 +ecff716b7f6b7b757760886d81cce9ff6968616c4e326489622659365a46 +3d909d332f094c62392b2c2b1e086f412e482d2a141e542b2634312a1b33 +543327342cbd94ff81dcffbb94c99cbb7ea393a0b29c9c87b6aabaa390bc +b9b6c4c198b9adf1befbd6f5b5aadcc00a0909090a0b0a0a0b0f13090809 +0b0066c3bfbdb5b3b5c1bbb2b0b5bcbcb4a9b3bab6aca7adb5b4a8999eb5 +ada38e9eae9f977b99a89d7d6c9e979151799c89693e89756d27636e451d +515c331b3531151a1c12121815151d14160b1c1820172322261e231d2321 +1d1d1c1a1a1a1f201e1a271c222124241c1c22221a191d1c16171a1d1e1c +1917211e21201c2125211f232b1c1b22161b1d1e2221232021202322271e +261f221b2822272f2b272722231d1713111010120c0d0e0e0e0d0d0d0c0b +0b0b0808090a0e0c101414161b191f1f2323282d2f2c2c3f423156333339 +313e4c3039342e322a2d3a3336361f3d3c445045504233355d405d37442c +45332f3639242bcb4d76756e7882839ba29ca8acaeb0b6b6b7bdc3bec0c4 +b9a73d436477afd8d3bdc938474050744a754ce1d3bcc6bfc7c4bebcbeb9 +c053313f3935422732100c0c0f1e242130344b596153519e64534b574f4b +51474249450e19252a2b282a4f0612182b334f4b2524404d4a475e662546 +48683d4851771043693e49654c950e00389c841827ecbfc1ecd0d584515b +4c46e341000d0811002218565b515f4a5050493039373e25934f1539242d +3600084015001b0b20000b2a080608030c000c12160a0e0417002214142b +1f0b251810285c824899e7dbeadddee9565a8ea7d6e1eaea544e44524843 +43453f49347cc8b7b9c9ef41382a0a11191111100208120109170b0d040e +1d181b12160814182521261d1911153d312c33201e10172133593986eac8 +d3cbd2e64d3f4b354c46492e54344b95b8d63a352c3a24104b7652134018 +3927237b8c241f003d502516171b1905653218301619101b4015192b2b21 +0f2243241b2a1faa79df5ab5d99772a97d9d5f84717e907a7a659286967f +6e9a9794a29f77988cd09ddab4d39388ba9e1e1e2124262726222229291e +2b27452b5ac9f9f4eae1dff4f4ebe1e1eaefebe3e0e8eee7dfdfe2e7e9de +cbe4e8e4d4c9e3e0e5bdbfded9d5a2c3d7dcb194d3cdc873afbec9737ca9 +82605a8b6c50536436343b323039373b36373a3c42423d35323238333832 +3634363737353435383b3b394337413f3e3d3d3b3f403d4046453d3a3b37 +3a3c3f413e424a4b4341423e443f443b3f48435246454544444342434442 +4f535d4c49454b44474d4b43433f353332302e2b27231d1d1e1e1e1e1e1d +1d1e1e1e1c1c1c1d201f232725272a272b32393a3a3e454a4554464c4946 +40494a606d4758635a5a59505f6355685563576180726968736d6e7b697d +756f80516a726a7a58ff69aabbabaebfc3dccbe1d9dfe2e4e9eaebf2eafb +fdf7ebf5886579a8f2ffffe6e08b8f8a95911c2408ccffe9fafbedffffff +ffffe74c29701b3847272915180d10171c2637373d3d474162eb714c3f3f +46393946393b496a65464e47403e3017455d827f745a1c267d5e5e60635a +13276063625e5854151c766e6e6b614d111318498c852dc1fefffafffea3 +383f525cfd781c322a2237261c8250293b36476368707886bf33bb493540 +47443d18265838413a452b182f443f3537341a154f2b3c303738251a3a41 +4440433f3b2020232e2a40aaf4a3899bbcffcce7cd8f4e394e57353a3830 +2a4b34322f252a48bef69860af4b4f371e241926201a1323292725242719 +13252b29262a250e0f2d272e382f290924432b2e313b25292c42524a4b29 +c3fcffc0af804e3937333a68c1652d3c26547898754535528fc53d9d8951 +2e2d31213a92802c1a1e27230d1f1d1e1f2831051a17181f2a2b2f2a1b1e +141b25341a1f0e1e427f62f8f6fffd9437c5abc4c2c8c3bdc7b8c7c1bec8 +cbcfe7daa6dca7d4d8f8bda6a9d2d3d3d9cdd5c914141213131415151820 +21121a132a0e3aa9dedbd6cfcfe6e8dfd5d5dce1dbd3d1d9dfd8d0d0d3d8 +d7ccb9d2d6d2c2b6cdc9cfa7a9c8c6c28daec0c5987bb7b1b05b98a7ad57 +69966a484a7c5b3f455626242b221e2725292425282a2f2f2a221e1e2420 +251f23212324242221222427292731252e2c2b2a2725292a272a302f2727 +25242426292b282c34352d2b2c282d282d2428312c3b2f2f2d2e2e2d2c2c +2925323842312e2a2f2a2b33312c29292223221f1d1a15110d0d0e0e0e0e +0e0d0e0f0f0f0d0d0d0e1110161a181a1d1b1f262d2e2e32393d3847393f +3c39333a394f5c3647524949483f4e5244574453454f6e605857625c5d6a +586c635d6e3f545d576a4af660a1b2a2a5b3b7cebbd1cad2d4d6dbdedee5 +ddefefe8dae476526799e4f7ffddd881827c87820e1800c5ffdff1f5e6ff +f7fbf5fdd23818620f2d3a1b22131c1a23333e4f65676f717b6f84ff977d +81888e78697063636c7e5f3844413838280f3d557a786b51131d74585a5c +574d0b1d4f5762604e4a11196e6569645140101b20529b9c4ad9fffff6ff +ffb76678827bff7216302e2a3c291d958a7687797684808899a9dc47c34b +3a44473f36111f51333c35402411283d3a30312e17124e2a3d3138392318 +373f3f3b3e3c3d282e3647455bc3ffb1909cb6ffe4ffdd964a344e625061 +676158705254635d596bd5ff9b5fac484c34161a0c1915110a1b1f1d1917 +1a0e081c22201e221e070b29252c393029092443292c2f3e313839516662 +6542d2fff8b6aa8764606e6a5b82db8a647c658b9eb4906b6e8ec0e74a9f +8755454f55414b9882312b353f361b2d2f2d252f461d2a262b3131333c39 +282a1e263140262d1b2c509175fffdfdf58420a88aa19fa7a59faa9ba9a3 +a0aaadb1cabd89bf8ab7bedea38c8fb8bbbbc1b5bdb10b0b0b0c0d0e0e0d +0f171606100821002590c3bdb5ababc1c0b7adadb7bcb7afaab2b8b1a9a9 +acb1afa491aaaeaa9a8ea4a0a67e809f9c986283969b6f528f89842f6e7d +85303f6e4626285b3d232a3c16151c131019171b16171a1c21211c141313 +191217101410121315131314191c1b192317201e1d1c1a181c1d1a1d2322 +1a19181617191c1e1b1e2728201e1f1b1f1a1f161a231e2d21212120211f +1f1e1813222531201d19211b1d24221c1a1b141415151513110f0d0d0e0e +0e0e0e0d0b0c0c0c080808090a090e110f11140f131821202022292d2836 +282c29262025253b4822333e3535342b3a3e3043303c2f3756483e3d4640 +414e3e524b4556273c42394927d0377887777c8b91ab9aafa3a8adafb6b8 +bbc2bac9c8bfaeb648273f72c1d4dfbcb45e5f596461000000abdfbcd0d5 +c9e3dbded7dfb51d00480019290b12060e09101c232d403f494b574b61e4 +705051535c493f483d404c634f2d38332b2a1b0230486d685c42040c6342 +3f41494400113d3f48484240050657484b483a2d00060b3d84802cbff1f3 +ebf4ee9b414f5a59e95c001b171328160d7f6248594e5265666e7c89be2c +ab35232b2f2c2c09194720261f2d1a092233271c232208013c162b212a2b +170b262a29252b2b2811141a29263ca6ed9a7e8caaf1cae6c0772d163244 +31424741344e2e2f3d38374dbbec884d9b393d25090e0311110c01101311 +0d0e140a04171b1711171801021d181d29221d001c391d1f202b1d23253c +4d484824b5e5e19d8d663d3137312c53ae572d402c526d846338375891c2 +2e89723e282c2f1a2b7e6c1d18212920021315181b2737070f090f1b2928 +221a161c13181b280e160a1d3f7955e1d4d6ce6000886b838188837d8879 +87817c86898da89b679d68959dbd826b6e9799999f939b8f2022262a2c2c +2b2a272d271f2f2f293e3a71f0f8f8eae2e3f2eee5dfe3ebeeebd6ddeeed +e2dad9e7ede5d1d0e7e2e4c4ceede3d1adc9daddb8a1d9dad285b1d5c5a1 +75c5c596569a85684c7674524c6034252d2826312e352c3232332f333335 +32343d3b41383a363435373736353333323337303a3e3737463f3f414345 +463f3c3e3f3d3d3f4040353943453d3c404044414445453e353f40404041 +4244464951494c54584a4b4f514c4b4e4e4744413b39342e29251e181d1d +1d1d1e1e1e1e1b1d201e1e1e1e1f221e1f201d2024211f262e313334322e +4a425940624263555b6a6664697e626867635a69576c7c798a6f707e6f7e +776b7f78647f6a6d6f6085766d765ff6657bc8a2bed8bed8e2dddfe6e9eb +f1f1f7fcf7ffffffefe49892edffffffffe9fb9687897b702d261f79eeff +f0e5f8c32c2c566012202c5c7e6f70553c111e103430343d43404239464c +33c95d3c4e322f323d41517d3e825e4d505250401420544f456555441414 +73465b5b5a3f17177c605b485940172b6f59626d6d4b201c1d11634948ea +c796ac9fd9f53c414649f46d142a2a2c1d2814433c422c3350c6f1f1e4e7 +ee4073444b4a4e513114284f484341483d033d47243d29331c0c396e3933 +353d150c463a3638453f2b1915132d4a4b3bd8f4fef3ecbe3367a6f1ffff +b9a7612c35254da370392529322c1505122420252a251f211e2217191c23 +171b1a1715161e231b1d1b29172a1c181d1b1c1a172f2a161c172225393a +373d524c2f44f0967aca94a15046556376888f6c49404841829570604a55 +648d5e9cac5933312d1f526a545823233c43775c164b4b423b6673617e61 +253f57834bb7b696214399dee1f4f2c7602973d2a26c3ed5cccaacaab792 +d9cda0af948ab8be98bddae7c4ddd0ffdcc3c2c5cfd7e2ecf3fd17181717 +171718191d241f15211d1122194ed2dde1d7d2d5e6e2d9d3d5dddedbc7ce +dfded3cbcad8dbd3bfbed5d0d2b1b8d6cdbb97b3c7caa38cc2c3b96c95b9 +ad895cacae7f3e847154396565433e5225151d18141f1c231a2020211c20 +20221e2029282e2527232122242423221f1f1f21251d272b24243029292b +2b2f2e29292b2c2a2a2c2d2d1f232d2f27262a2a312e3132322b222c2d2d +2d2e2f313333362c2f373b2f2e3436322f3434302a2b2929241d18140c06 +0e0e0e0e0f0f0f0f0c0e0e0f0f0f0f10130f121310131714121a22252728 +26223d354c33553556484a595553586d515756524958465b6b69785d5e6c +5e6d665a6e67536e585b5d4c6f625c6754ee6077c59fb9d0b3cbd3ced1da +dcdee4e7eaf1eaf5f9ffe0d38781ddfffff5ffe2f58d7c7b6d62211e1872 +e2fce4dbedb8201c444c000c1a4d7164634d36142925515761717c7b7f76 +82805cec836b8c766f67615f73a161995d44494c4a3a0e1a4e493f5f4e3e +0d0e6c415b59503510116c555d4c5337152a69525b635e43282e332d8570 +73ffd294a59bdaff68787668f7660e272d3026311b5b788f78747ee7ffff +ffffff547b4753525254331529514b47454b3f043e4927402b351e103d75 +403c3b431b124a3f3a3b46433830333856726e58ecfffff1e8c24d86b7f7 +fff8b4ac744b5c4d6fbd804f4f585949270d11211d232b27201d15171012 +151c1113120e0a0d141b1416152513271a191e1e1f1e1b322d191e1a252e +4c534e56706d5263ff9f76c391a9676e8e9a939aa18980848978a2aa8280 +83949cb66fa0ab614e57574465735860363c555b8a6f2d5f564e54828874 +9678314a68975ac5c4a42f53a9f0f2ffffde783e7bd09a5c27b8aba78989 +9674bcb08291766c9aa07ba0bdcaa7c0b6f7c2a9a8abb7bfcad4dbe50e0f +101112121212141b140b161307160638bac2c2b6aeb0bebab1abb0b8bab7 +a0a7b8b7aca4a3b1b3ab9796ada8aa898fada4926e8a9da0786198999043 +6d91815d33838556185f4e3319474826233812060e0906110e150c121213 +0e12121415171e1a2016161210111515151414141113170f191d1616231c +1c1e1f22221c1b1d1e1c1c1e1f1f121622241c1b1f1f231f2223231c131d +1f1f1f2021232525251a1d25291c1e232521212525201b1d1b1a1713100d +08040b0b0b0b0c0a0a0a090b0c0c0a0a0a0b0c080a0b070a0e0b090e1619 +1b1a18122d253c22442243353645413f44593d43423e3544324757526245 +465444534a3e524b395440434534584a424a34ca3a519c7693ac93abb6af +aeb4b9bbc2c4cad1cad3d6d8b7a75b56b9dcdfd5e3c5d56e5e5e50480b0b +0860c8e1cac2d7a20a052c33000002365e52523a260318123b3c424b534f +554c5c5a34c45a3f5b433d393b3b507d407d4b35393e3c2c000c403b3151 +3e2e00005c2d4140442c06055c3f4535472e091851363f4a4b3013181c14 +6a5155f1c1889f92c8ec44505049e25400161c1f13200b4352614a4a5ac8 +efefe8ecef3964323c3a3b41280d234638302e383400383e142d1d281000 +2c632e2b2d370f043b2b232636322416171734504e3ad3eaf1e2dcb13064 +95d5e1d7968c562c3d2b4e9a5c2b2b363a2d0f0000100e141d1912120c11 +0a0c0d1205060705060812180e0c09190a200e0b0e0d0e0d0d27220e1009 +1219383e3a4058523444e8845ba772843d3c57636570775b49494f41737f +58514c5d6b8c4f8796492d302f1b4558414b22273f416e51104648424169 +6954765e253c487443b6b59316368cd6e0f6f4c4541552a9733805988c89 +6b6a75529a8e606f5248767c597e9ba8859e95d6a188878a959da8b2b9c3 +1f22282b2d2c2d2b292325232a30193b3238a6f0fff4e8d9e9eceae0dee4 +ecedddd6e5ebe8ded3dfe8e6dec9d9e2e6d0c4e2e0dfbcb1d3dad19dbcd6 +d7a591cac5c569a5b7a753767e615162735a536742242a292b362f363734 +332b302e312d33333b383e373b383b3b3b3b3a383632343733323b483b3e +3e3e4346433e3e373b40454442423f3b464345433a3a404242433d42463e +41474644403d3b3a3a3a4444485450463b394c48454246433e3b3c362e26 +242624201d1d1e1e1e1f20211c1e2120201f2020211d1c1d191b1d1b2a28 +231f22272d2d3139403e4a3a443f444e42514b5d48564b514f4e464e6261 +604e58756c6a5a5b57587c5e4f555d576b6879535bde6625413647494c86 +e8e2f7f9f6efece5e5e9e0c5c7fffff2e3fffffffffffef8f0663e58504b +2f22253e4c484a410e0c1628667b2f29335e32342a267205243735433d3c +32364534393d454a42423b3488f2fef4f9f16c5f51515050655821114a54 +4c4c595819207d45556253561438735358536d400537725b58716f40301d +062a374625b0f5f0ffffffd4364d4e49a0742529352e27292c403f28303f +523d50681d15592b704c48465a3c30003c3e4e3c254128023d2f1c221f17 +1808303224211f2412154a3e31323032212636453e345259f7d6c3fc6b23 +3630432673a8b8e5f249333977baa83838202b2c2c34231d1c24221b150f +181823171e1510141e16181922080a0c04040d11182116212f3118201d52 +746e776627213d2f3c274527d8f9fff09de2d26e3e2856a4a469343c3441 +6f788f7eb7a71f275e99b459303b3487cf4a70f9cd2f4ef5e3f5c37fdb38 +49edf3eeede94f4ea3e586e06eeb7539e9a85e629bf78d3965fed7903ea6 +b9a6b6cdca90abb8a7dcffc2d3ffe9d8e3f6d3dde3e5e8eef8dcd6cec6d9 +c3d0191a1a18151415181c1b1d1b1e1f0520111586d2eae0d8cbdde3e1d7 +d2d8dedfcec7d6dcd9cfc4d0d6d4ccb7c7d0d5bdaecbcac9a69bc0c7bc88 +a5bfbe8c75aeadad4d8ca494375c6e513a4d644f455733141a1919241d24 +252221191d1b1e1a1c1c252228212623262626262422201f2124201c2532 +252826262b2e2826231f282e333230302d29322f312f26262c2e30332d32 +342c2f3534322e2b292828282d2d313d3930242336352f2e32312a292c29 +2018161715110e0e0c0d0d0e0f100a0c0e0e0e0d0e0e120e0f100c0e1311 +201e1915181e2121252d34333f2f3732333d31403a4c37453a403e3d353d +51514e3a4461585646474344684a3b4149435453694754db662743384744 +437bd8d2eaefebe4e1dcdae0d5babaf5f1e3d5fffbfdf6fff8f2ea5f344c +4440261a1e383f393d360200091754661914214f25291f1e710c35535c74 +757a757b8a797c7b7a796d6d6c65affffff7ffff8e7c5d534f4d62551e0e +475149495355131d77425762494b1034664b5c58693c05386d544e655f3b +3f3b2a576a7e5eddfff0fbfbffe46487856ea96e1d212b2a2b363d627b74 +7d868a6c79945049864c7f54505064453803434657462f4a30094437252b +272223153d3f312f2b301e21554a3b3b373d384a677d76687976ffdec4fa +672a514e532a6b9bafe5ff6150568fc8ac3f55444c4842432f292933332c +2012140f1e121a110c0e170f0f111a03050800020d131a251b2937381f26 +235878727c7443425d505f4f6e4cf1ffffeb9ceae996785c70afaf836a81 +777789869a98ede75952719db25d485d58a3da4868f3d13c60fff0ffd38d +df3e5cfffffcfef95755aef390e976f47d44f4b5696ea7ff9e486cfccf82 +2789988393aca9728e9b8abff4a4b5edccbbc6d9b6c0c9cbced4dec2beb7 +afc2acb90d0f1111111011121310121012150015000171baccbfb4a6b5ba +b8aeaab0b9baa7a0afb5b2a89ba7aeaca48f9fa8aa9385a2a1a07d72969d +915d7b9595634d86818125637a6a12394a2f1b304731283e20050b0a0b16 +0f161714130b0f0d100c14141a151b13151213131515161413111316120f +1825181b1a1a1f221d1a18131a2025242424211d272428261d1d23252224 +1e23261e21272826221f1d1c1c1a1f1d232f2b2216152927242327251f1d +1d19130d0d100e0c090908060607070906080a0a0a090a0a0d0907080406 +0a0716140f090c0f1313171d24212d1d261f1f291d2c26382331262c2a29 +21293d3a38222c493f3d2b2c28294f312329312b4240522d37ba42021c11 +2324265fbfb9cacccbc4c3bfbec3b79a98d0cabaa8d6d8dddae3ded8d043 +19322c2c150d142c2c222a2400000005405104000d3c14170d0b5f00223d +41545051494c5d4c53524e4b40403d3683e4e6dae8e96d5d453e3b3c5144 +0d0038423a3a4546050c672f3f4a3f450729563645425d310028573a354f +4f282a23103a4b5b3dc0f4e6f8f4efc73f5e5e4f96601216211e1c252b49 +5546515c654a59732f25652f683f3b384c322d003c3b442e173725013d2c +1216181413032b2d1f1e1d24121345362326272d2430475851445a5aefc9 +b4ed5c18322a2e0547788ec3df4131376fa7891d3628312f2b2e1b151720 +211a10070b0a1a0c110600020d050a0e18000000000003080c1407142226 +0f18154a6961665d2d2f483b4734502dd3eae6ce7dc5bd64452c498d8d5c +394b424662637871bcb3272551829b442838327dba2f55e3c22a4aedd4e4 +b674d13249eae3d9dedf4a458ccf78d869e36526d69b596099ef7a1f43d5 +a85d05697965758d88506c79689dd08091c9aa99a4b7949ea8aaadb3bda1 +9c958da08a971f23292b2a282929291b262921272b282f2c47d5fcf3ecdf +dee9eee5dde1e9eeedd3d8e5eee6cfd3e0e8e5d0c5e6dedfc8c4e6e1d9a2 +cbdbdcb092d9cccf83aec4c08b78ac9d655e87655d5e686350634c222527 +2d382d322d2634355752513c3835383238353e3f37323230333637383a3f +36363d504045334054574b4247474244433e3b3e3f3f403d40423e3f4644 +36413a44483c3f3a403f3c3a3a3b3d3e3e4647544d4b3e3842423b394143 +3d3a37332d28282926201e1e1f1e1e1e21221e1f20201e1b1d1b1d1a1c1d +191a1a1615191c1c1d20232220312d303d35353a424e4848434c53644b54 +735559544c5a5752574c5f6466656f4d4b5668576b576e4d5d5d50ab4d33 +becfb9ac9c0c08171e221c15110c0b111425193a7ef0fffffff8fff6ffdd +322d4b524a52331a1c58615d59613a21311b1d8d191c2c4c25315079dc38 +463e4c4a3f3b2f3a50352f36373b895644403f9bd7b9679e3e403d494b4a +52270f1a5b504f403e340b1a59514d484734002858364c493f2801335a4a +5155473a2322383f35482c8bf2feff9d594d3c3e39587925233928353821 +0c503c31312d333d2c3b302b3437484c203058253231453614392d3c2e3b +4e353340483a3d3946363752443e46493f3f333835343941272a2c2b413d +f5bbb7fff5cf6c3d3f3becb9801e223933209a9a953c2a3324282a12141a +15141e11313a3440300e233159533e0769162463ae949ad76f2a18da41d7 +d1f1a5165af8ccb9c6f7c3623932374433322630a0ed8b61623a314da7b6 +915c47537b4c7086626256302a347bc8bc336d5c2f73cf3fa7fbff481cc3 +9e009bfaf948240e3d9df7902e3c39ecf0ffeefd6b348efbfafcfafbaa6c +c9e7eaa225a3e7b2f5e7c6d2acdbd19dc2acabc3bdbdbcc7d9d5b2d0c8d2 +d5d7dadfcedacbdb181b1c1a151314161c111e2117191912130d26b5deda +dad3d5e2e5d9cfd3dbe0ddc4c9d6dfd7c0c4ced6d3beb3d5cdccb2aed0cb +c38cb5c5c5997bc0b3b66795ada86f5f998a4b4477564546595541533d12 +15171b261b201b152324443f3e29221f221c221f282a221f1c1d20232425 +272c2020273a2a2f1b283c3f302a2c2f2f32312c292c2d2d2c292c2e2a2b +2f3024312a34362a2d282e2d2a2828292b2c2830313e373828252f2e2727 +2f312b2a27261f1a1a1b17110f0f0e0d0d1010110c0d0e0e0c0c0b0c0e0b +0f100c0d0f0c0b0f121213161616142521243128282d333f3939343d4455 +3c45624648453b49453d42374b5052515b3937425443574259384d5247a7 +513ac7d6baa89806000c1419150e090403090c1b0e2f73e3fff6f6eef4ea +fdd52a223e453f492b13134e5552525b371e2b130874040c1d4018244171 +e14a63616d74767c7781957a787b756cad756d6b64afd2ad6ab36a6e5758 +545259301c2764545343413817266156555049370c335635565546301242 +5e484b4e424344516e7b738665b6fffffb995c61707f737f85221f321e2c +382c22777a7a7c74717560716e696a60605b2c3c6634403f534423493d4b +3c495c4343505b4d504c59494a63554f54564b483b403c4153685962665f +6a5bffc4bafff3d683574f41e7b0761b2b494733a59e903f435540403d23 +252b282731203a3c30392c0c1f2d56503801620f1d5faa9097d66d2d20e4 +46dbd6f6aa1d67ffd3beceffd88263636371625b433f9fea91717c616981 +bdbe97717993bb7d848b67788a6e645d8cc9b532817a4f8bd63b98eeff50 +2ad1a708a6fffa4b311e46a7ff9a303f44f8f6ffeffe6f3d99ffffffffff +b878d1e8dd8e0c8bcd95d2c3a2b18fc1b37fa48e8da5a0a09faabcb898b6 +aeb8bbbdc2c8b6c3b4c40e101312100e0f10130713160b0e0f07050013a0 +c4bcb6abacb6bcb1a8acb6bbb99da2afb8b0979ba6aeab968baaa2a28985 +a7a29a638c9c9b6f51978a8d3f6c817c47366f6228235535292a3c382439 +2a03060a0f1a0f120d0513143530301b1714170f14111a19110e0e0e1115 +1617191e13131a2d1d220f1c3033251e21232124231e1b1e2121211e2123 +1f20272516221b25281c1f1a201f1e1a1c1b1f1e1a2224312a2a1b172123 +1c1b23251f1d1816120d1112100a080807060607080908090a0a08070707 +0906090806050903020609090a0c0d0a081713142118181c202c2626212a +314229325031363029352f282d223338393842201e2a3c2b3f2d46253636 +28843019a8b59b8b7f00000000000000000000000002001153c0dad2d7d3 +dcd4e9c017102b342d3a1e090c454540404b260d1b00005e0000062a0713 +2c5aca3047434e504e514955694e4b4e463d7f4941403b8ab4934f94464a +3a413f3d471d081353454432302703124c403d393b2c002347213e3f3621 +002d4731353b2f2e29314e594e61429af2f6f590494549544b6071131328 +15232c1c0d5a534d514a4a4e3c4d47424640464416264f1f313246330c2f +23342b3c4d322936473a3d3845353651433f4545373324292a2f3a4b363d +403b4a3fefafa9f3e6c466342a1bc1895300102e2b13837b7020263c292a +2910121814131d0d292e242f2100142147412a00580715569f8488c45e1a +0bcc2fc4c0e0960b55f1c1aab7edc56d4b464854423b242081cb6d4a4f32 +3a5397997348485f89505f6b47525a3d343168a998145e542867b51e81db +ed3b11b78a0088eaea3a1d042785e481222e22d4dcefdfec561e7becf1f4 +f1ed9550a8c0ba6d0069ac73b2a1808e6d9e915d806a69817e7e7d889a96 +75938d959a9ca0a694a192a21e1c1d202528282620222325262425292a2d +3364fffaf4eadce0e7eaeae0dfede9e9c9e6e9e1dec9d9eae6dac6d5dce5 +d4b1d6ddd4c1a3d2d9d78db3d5c1a585bebdb25693a36b557172634d666d +505f57202b272c3336343836383f413e36313a2b393b302f42343d383533 +32353e48394f614e4241353a3e3e403f3d393e433d424b483c393e3e3e40 +41404245443f413d3e3f3f4346414d4245584741424c4f59584f4d4a433d +484c4b4d454f4a423e36302d2b2823221d1d1d1d1d1d1f1f1e1d1d1c1c1b +1c1b1c1b1b1b1c1c1b1a1a1a1a1a1d1e1f20242d322e2a2f312e2f2e3135 +3635373b37363e3d4b564e464c4f5253545457595c4f6f5c6056565e5f62 +675d78a6421b45a952352d271e3b585649503e1e2754575c4849340c6a8f +90aa9a826012203b44404a4536211e59555c505e32070f16a4ff7f1e58f6 +ffffc7a9563a45529357453b2e3d3c3d2e2f2d54ca973e35342d6ec6783f +2b28351e1f291b2405284b2b30342f2218323d241e362b1c2a4148313627 +2b32224137302e2f373246373735374a3ddec767d4df797b273b3a518e31 +25282730342b1f4834372c383f2931332c304b334545636a6a6c46434889 +ae8f26677437527e154631323736322f25213f825d2b7ff6fffffcee603a +3e2955372c2862a0928c8c8c672a3d32f9c26d3d34373429f9916d25241a +24231917180e141a212a5f324235861b284b6604607cd221261960b5ccd0 +082214e7beffc6d5df2645e9ced2d1fcf33735262f443d3c5a6ee1f98773 +4344535392ada5725a7bc99487a274432e2b303292c0a0495d4638318333 +416adf7a325efb250385f8802fbbb71132b6f1571be9590f16c6ce1e228e +b1f2f8d79ea37fcbe3843279c1a8abcdc1c2b0b3a0bfb8c9cecfcce3d0c1 +d5e2c5e8caccdbe3e0ead8ced5db13121011161919171315191b19171718 +1a17133fdfdbe0ded8dcdbdbd6cccfdfd9d9b9d6dad2cfbac7d8d5c9b5c4 +cbd4c19ec3cabeab8cbbc0be759bbda98d6da7a69b41809054415e624e38 +535a3d4e48131d161a2122202523262d302d2520271523251d1c2f212a27 +222120232c3626394b382c2b1f2428282a292623272d2a2f383529262b2b +282a2b2a2c2f2c292e2a2b2c2c30332e3a2f3245342e2f36384241383634 +2c273236353a323c372f2e26201d1a1714130e0e0e0e0e1010100f0e0e0d +0d0d0d0d0e0d0d0e0e0f0d0c0f0f0f0f0f111213151f24201c1f21202221 +242829282a2e2a292e303b493e37393c3f40424245474a3d5d4a4e44444c +4d50574e689c472752b252312f2a213a534f444d3b1b244e4f533f412c06 +648e90a88d6f4e020f2a302d3c3b2f180f484c59576a3e151e1a8cf46f14 +52edf7f6b3a06a60757ba167737a7281787b7a7b6c7fd7a260656c546ebb +7f5e6e71623c3b42344431546b424345403a3f595a3b314c423956695e3e +453a41524f694a38313749557c7a807c78826affd970d8e6859864837376 +9830282c272c2e2c32717583757d7d636b6d6a6d83626a5f75797b7d5956 +5c9dc2a33a7b884b6491285e4f5455524c473b3451916b3583f6fffdfffb +735561538163534b7cb29e918f91733a4e3efcbf693c3d444232f98c6729 +42403d342422251d212624295a2d4033851a254964025b77cb1c21145bb0 +c7cc022225f8befbc2d3de2b59fdd3d1d6fff4496d6a67756f6a7e82e0f9 +9990606b8a83a4b0a78085b1ffbb939f74535c6560549ebd91426e655447 +8f35345ddf813d68ff290688f88235c4bd1535b8ee5b2bfa5d0b0ec0d129 +319bb6f5f7d9a7af8bcbcc621766b59989a1959c969b7f9a97abb0b1b0c7 +b4a5b9c6abceb0b2c1c9c6d2beb6bdc30d09080a0f1212100b0d0f11100e +0e0e0d09062fccbfbdb6abadb1b2b1a7abbab5b595b2b3aba8939fb0aa9e +8a989fa9977699a0958263929795496f917d61417b7a7116566832203d41 +311b353c1f343503100c10171915161212191e1b1510190816170e0d2012 +1b17141312172028182b3d2a1e1d11161a1a1c1b1815191f1b2029261a17 +1d1d1b1d1e1d1f22201c1f1b1c1d1d21241f2b202436261f21282a34332a +28261e192429282c242e29211f171310120f0d0c090909090908090b0a0b +0b0a0a0a0a0a0b0a0a080b090a090b0d0d0b0c0b0c0b0e161b1511121413 +121114181918191d19181e1d2b362e24282b2e2f2e2e2f3132254532362c +2c34373a3e2f447829113e9d38161a170e263f3c313a2a0a154042442e2e +17004a72748f7a604000052029263331250f08403d4847562600070372d8 +550032d0e1e29a8147394b4f7d40454b495c56564b4a3d51a9773b3f3f28 +489b603e42444322242c1e2c1639542e30322d24223c3e211b372e233b4f +492c30242c3a324e34231e22333758515350505d49e4c35fcad6717a3b55 +4a54801e171d1b21221e1c514b554851543a434541445c3e4b445d62686a +45404382a6871f606f324a75083c33393b39332f241e3b7c541d6cdee6e4 +e7df5736402f5e40342d619a887d7c7d5b1d2c18d196441e2a322913d366 +470e262728221412140a0f1211154719291c710612344f004763b8080d00 +479ab1b3000603d6a2e1a9bcc9143ee2bdbdc2ede2314a4344554c45585d +c1d77164343f60597a83764d507dce8f6f7e522c2d35382f76946818423b +2c216910123dbd601f4de50e006de06a1ba9a1001aa0db440eda420000a8 +b40b1481a2e2e3c1888b63a5ad4700458d70637c70777177607d76878c8d +8ba28f8094a186a98d8d9ea6a5b09d949ba1201e1c1d2124262621212426 +2421212321313140a8fef6f0d3d8e4efefe2dbe4ebe3d9d2e5e4e7d2cddc +e5ded5bed6dfdac1b5e3dac7a3b8dad1bb8ad3d4bb6ca7beb47170987552 +586a64495f6e575e5b202421292e2f2d3131323838342e2e2b402b3c4336 +35392e2e31353533343934424b3a343b353b393b3d403e3c3e4149454643 +3a3a43443b393b3f4240414444423e3d3e404246484b4a4a3f5050464f55 +5150514c474a45494d594d4d443f3d3732302d28211f1c1c1c1c1b1c1c1d +1a1a1919191a1a1b1a19191a1b1b1a1916161617191a1b1c1e262a262528 +2a262e2c2e3233323438353b4743434c4a4e44494f54575a5e6169607458 +63656b74876d676f8a9e37151902162723203032282a253d2f182e3e394f +393c3f1f3f2b10491d1a22282a2a2b331726101b1f1c322e302c2b364547 +a1b89846c7ff8ae1ff8f54473651ae5c4442343334463a2d2e64b0974648 +2f3383b88238261f3c453f415240393251626a3d547738396366698b794e +30328f498bb298583253bdcad8cfcf622634383c373a40b6f0ebf4e8f4e7 +3f1c486760362a2a2b35382b1c4a2e2c3131312f292729392b3d3cedf2ec +f2efde3363f2e0f5e9baf50962f315ed1c2321345df4ebf5f7eb9e2ea1fa +49677ffea6373e306f4b2a292a26141e2e2c33492533ffdf9b2838252c39 +fea17032271c211a151c181314192412516f5e6e68162f19b3777e8ec73c +3345b597c5e2b94f1f69f1f4f4ffce3a06a6fcfff5fef54d3d31333b4648 +614dffcd9f6686934d3fa9ad9a848d82224ab0a48f894f2d3356c1c1a1ce +d04744557f50988ce6de2167ea8d9bb0fe9f2396ea98bcd7ff7222b9ebec +f6e8e5612ebcf9fef4edbb646ca686a83e60abb9c5dbc9ccc0c2b7b5d0b0 +b6cac7deb3bfb5d4c6d0d4d6c3c6d4d4cfc9c7ca13110f10141719191414 +1719171414161721131a81dcdfe4cfd4d9dddbcecbd6dbd3c9c2d6d5d8c3 +bbcad4cdc4adc5cec9afa2d0c4b18a9fbeb5a06fbbbca35490a79f5b5d84 +633f455751364a59424a4c141613161b1b191b1c202627231e1d182a1526 +302322261c1c1f2325232427212c35241e251f252325272a2826282b3632 +333027272d2e252325292b292a2d2e2c2827282a2c3032353434293a3a30 +383b3a393a3530332e32374337372e2c2b2722201c1712100d0d0d0d0e0f +0f100c0c0b0b0b0c0c0d0c0b0b0c0d0d0c0b0b0a0a0c0b0c0d0f0f171b18 +14171918202022262726282c282e3a36363f3d3e33363c4144474b4f574e +624651535962755d596078923d242b0f16252829393a2b2b294436213442 +3b50373d422447351a4d150a121a1d1d18200a1f1019120e292c3b3f4455 +6a5f94a4954ccdff84d2ef897078727fb6616b7d78766f83867a6c88b298 +667e73678ab0895b6f6c69635b5d6e636e6772797d4e6593676b847e7fa2 +95766767ab5a9ac5b4806986d6d5dfdced9169818c8e7e746dd9fffffffb +ffff8268818b683531332f3330293076737b7a76726e68666a78657165ff +fffbfffff04776fff3fffcccff1c73ff25ff39423e4c71fffdfffff9ab37 +a4f944627fffb34a574f9270514c483e262a33313d563641ffdc95274333 +3a40fb9865323f3932251b20201e2021230d4b695a6d68162d17b1757c8a +c3382f44b196c1deb250357ff1edeef9c93f1fbdfffbf6fde95573786464 +6f6d7f5dfdc7b1829faf7a65b4a99389a9aa4763b0978590705b5b71c9ba +8cc0dd615a668b528c80e4e42a72f0919bb0fea2279cee9cbcd5ff7636ce +efe6eae1ea6e3eccfffff3f0c1727eac6e862653acb5a8af9ba6a8ac948d +af9298acabc297a399b8acb6babca9acbabab5afafb20d0b07080c0f1111 +0c0c0e100e0b0b0d0b14080d70c3bfbca2a5acb5b6a9a7b1b7afa59eafae +b19c93a2a9a2988199a29e8778a69b886277968d75448f907728647b7432 +355f3f1e253733182d3c2531370409080f14120e0d0b0c1013110e0d091c +0718211414180e0e131718161719131e2716101711171517191c1a181a1d +2723242118181f201715171b1d1b1c1f201e1a191a1c1e22242726261b2c +2c222a2e2c2b2c272225202429352929201d1d181513140f0b0908080a0a +0809090a090908080809090a090808090a0a0908090a0a0a0a090a090a10 +140f0c0d0f0d1512141819181a1c181e2a25252e2c2e23272d3233363a3b +43384c30393b414a5f463f41506a21111d00000c14182625181918322610 +26342e42282b2f0e2f1c00340200050f1415141c0415040c09031a1d2b2b +26334b3f7281742aa7e16cbbd267484b3f4e8d383c4d5155516157463d5c +836c415a4436608b6a3a423e4a4b4547584b524b5d656a3b527a47486766 +6a8e7f5c4849954887b19d654967c0c4cfcad37140535b5d524c4cbbf1ea +f3e5f1ed5739566750211f222126251a1753474c4d4a48433d3b3f4d3d4b +43edefe4f0edda2c5ae8d5eae0b2ec0053e201dd1a23223258efe5efefe0 +911c89dd274563e6952a372f724f322e2c240e141d1b253c161dd9b1710b +3222211ed26f471a272320150f12110d0c0c0f00354f3d514e001600985c +6371aa1f1428967aa6c395300f59d5d3d6e1b32801a1eaebe4ebd93e4f50 +44464f4b5b39dda789597789533e897a5f5376781c3c8e776267432d384e +a08c5f91af343442632a665abec00b54d6768196e4870c80d381a4beea5d +1aafd4ccd0c5cc5021b1eaebded5a54f5888546d0a318288808a77818287 +78738e6e7488869d727e74938791959784899999948e8d901f1e1c1c1e21 +242623232427262424261f2b2e2a49cffbf4e4dfe1e8ede2d8deeae5e5c9 +d6e7ece0cdcde3e7ddbcc7dfd9d6afc5e0d3bd94dad0d18aaed5c39282b7 +b2884f84785c49686f4f586e5f5a61231e1e282c2b2a2d2f333735312f32 +34393b2a31382f3c35333234353536383d464636363e393d3536393e3e3b +3a3a4439373936383f413d393b43453f434c4a4a413d403d404f4e494147 +414f4e4a524f4b4e5047434a404249594a433a3a383330302e271f1c1b1b +1b1b1a1a1b1b18181818191a1a1b1a1919191a1b1918171717171a1b1b1c +191e201e1f22231e2827292c2d2c2e313139453f3b41424b4a4e52545453 +5556545764485556535962565b6b6f6f271c19322295a71a32262c242a1e +315332463e373b394f4543534c4d5928170d0d2009192d2f10181f7386a9 +a8924a393b387ea35437bdecfdffff7abf43374698824638333837392b25 +266d907e3a3b1c297a8d7c3d3230a2eef6fbf89d423fecfbf1b68ff63251 +f2f8f4f1ecb73a6cf189fae1f2c52b7be8c8cbcaeda63a392c3e2d404137 +413d373c3258252e4361493a2a2c2d30382f174137232c2c2d2c242c2620 +303239e3edf8f9efea334af78519aff8f0164afbbfeea6b64e3423325a25 +001e413463f9e7f6fff87c2e42384b5026292529393d3c3333372651ffdd +901b1d312827fa92692e2825291a1e2d22201a252d12a27ed68ebdb65049 +ff9ef297dbb5357effa9fe83ffa032c1e6c0ffa5ff883f72f2fefff4cd6d +4787d1c6c7ccf46bffcdcdf9f3fbda61f49ba292bdf7af95c1afe895a8a6 +315fb4a3c07d67464a916c58a97ec38c8d21c2eeffdc89656326e8fbff84 +544e1c46fbfff1486d61299db73ffff5e227a3f48690315c8ebbb3cbc6c3 +b8b9c4b5c7b8c6cfc0cfa1d5c5bfcfddd6d9d3d9c8bec8c9d6e712110f0f +111417191616171a19171719151a130a25afe2e2d8d6d4d9dbd0c9cedad5 +d5b9c7d8dacebbbbd2d6ccabb4ccc8c59cb2cbbea47bbeb4b66f96bdab7a +6ba29c723c70664936555c3c4359484652171010151917161a1c21252420 +1f20212325141e251c2923212022232326262a303020202823271f202328 +28252424312624262325292b2723252d2e282c3534342b272a272a393833 +2b312b3938343b38343739302c332a2c3343342d2427262320201d16100d +0c0c0c0c0d0d0e0e0a0a0a0a0b0c0c0d0c0b0b0b0c0d0b0a0c0c0c0c0c0d +0d0f0a0f11100e1112101a1b1d2021202225232c38322e34353b383c4143 +43424445434654384546434952464f5e6066302e2e412595af263e323a33 +3d34496b4a5c514a4d4b665e5e6c605a5823160e0f1e000f29311b23206d +7da3aea56d6775668aa56953d8fffffffe77db777a7ca58a6a7277807779 +756b5b8a8f7f5a7364638789835b716ec0fbffffffae6461fffff7ba96ff +5476fffffffeffd46899ff92ffecffe75ca8fbcccfd7ffd57d8882947c87 +7e6b6e66606050846c7c7e8551392f35313132302e6f80767975716f676f +69616a6461fffffffffbf64157ff9226bcfffd2355ffc9f9b3c3583c283a +622f0c2b4e3f6afde7f3fbf7803955516a734b4c43434d4c483d41453558 +ffd183172a463c36f9895c23292c2d1c202f2627232e3518a57dd188bdb9 +5049ff9ef295d9b3337effa9fc82ffa34ad9eabaffa0ff8b5686f3f6ffee +b96a6ebaefd9d9dcfe6afcbcd3fffdfff272ef8a8d86c4ffbf9ab096d18b +b4c04c72b998a96c6e58589c775a9d70bd8d962ecaf4ffde8b69692feeff +ff865254335effffec4476723eb1c347fffbed38bdff787a235997bc9ca5 +9e9fa2a2a090a69aa8b1a3b284b8a8a2b5c3bcbfb9bfaba1aeafbccd0c0b +0707090c0f110e0e0e11100e0e100b1008001598c4beaeabaab0b5aaa2aa +b6b1b195a0b1b2a69393a7aba07f89a19d9a7288a0937b52968c8b446a91 +7f4e41777349144b422816353e1e263c292b3d0703050e120e0b0c0b0d11 +120e0f12121517060f160e1b15131416171719181c222212121a15191112 +151a1a1716162217151714161b1d1915171f201a1e2726261d191c191c2b +2a251d231d2b2a262d2a26292b221e251c1e2535261f161818141313150e +09060707090907070808070707070809090a09080808090a08070a0a0a0a +0b0a0a0905080a0706090a050f0f111415121417161c28221e24252c2a2e +3133333032312f323d212e2f2a303b2f353e373d13181d2e0a799812281c +231c271d335534473d3637334c413f4e444044100400011100061e240b12 +125f6e95a2924c404f41627d422badd8e7e8e154b34945487a613a42505b +555444372d5e6153354c34305b6362394645a6e7f0f3f09b4c49ecf4e9ab +86f03957efefeeedecbe4b7cf081f1dbefcc3c89e5bbc0c5f1b554595163 +4d5b55454d4642443663404c526139251b2222232620144b55484d4a4844 +3c443d36413e3ee1e5edf1e7e0283de9760aa2ebe30737e4a6d795a93f24 +12234b16000f301f49dcc5d4dedb651b37334b532c2e272834353025282b +1636d7a961001833200fcd5e3c0d171c1e0e1321171710191e008a61b46e +a39e362fe684d87cc09a1a64e88fe366e58426b5cfa2ea8cec763a6de1e9 +f1e0ae59519bd7c5c1c2e34ee3a2b1e3dbe6d250c95f5e5698de9b7a9478 +b1678c992d52916b7d404430357a4f32774d9b6d7912b2daeac673504f14 +d4e7ea6e3b3a163ee7e3cf2757521f95ab2fecdfcf1696df5d6208366c90 +73807a7b7d8086768778868f81906296868092a0999c969c8b818d8e9bac +20201f1e1e2022251d1c1e2021202022271d2c3a2c7bebf6f3e5dbe0ece7 +dad7e1ede7d6c8e2e4e8dac7d9e8d9d2b7d5dcd8c5a0e1d8d694bbd6c6b5 +7dc9c0c36e9dad8e496b706e47647457576e6459652a1b1f262a292c2e2f +323534323134381dc87b273b2b383e38333234353536394342393a3d3735 +3d3c3d4143403c3b40383b444545484743414448474448524d514641463f +40554e433944404542484c4a46474a423d424142455042403a39332f2d2d +2b251e1c1b1b1b1a191a1a1b1a1a19191a1a1b1b1b1a1a1b1c1c1b191818 +18181b1c1c1d1a1c1d1b1e21201b20212224242527292d2c3330333b383b +373b3f4345484d50535e67525f59515a646364676a6c3218202b3ffbf22f +257acfd3d5e18c4b1ae2f1ef9372ea313ee4f2f7f3ffaa2941f772fcf5fc +b73488fdfcefdcf5ad252b3d6d816b3d3d576b6aa1866e373139d4b95c3e +35332d2d2a32308ba9893e312b328c9b7d443438f7fde3edfffc3d50ef7d +6ff9faf82f3b6aa8e5ffb53e4156f8eafbd5f8af307af5faf4fbf0a72a2f +2925273b372f474043454c41283836626033282e2e2836391f4931252423 +31262b2b2631303625ba71857748f73c5bd1445b2f0ea11b53540351111d +802a2da457638a953a511555b3eef5c54e3346432b3c202928242d2d3338 +38422a53ff95cb6f2f231a4aff8ebf9d2d282b253a482a1e1e717f6ffcd2 +faedeff65a58f5fbffeaffec6199f5faf8d5eba0347bfefff7cecc594272 +f6bcfdffff7c347fe3fbd1c2eeafff94ba7c4fb3fc8ec885cec374cfcd87 +888ffca9a9d15e848c85ea928b6e4a99477bed6f3c72911eefbea6e83b6f +3c45f89bc8d3816c2a5bf9baf9bdad6427aff3a4db96f76423877b673c7c +7bacb7d0d9c8c6c0bdacc1c1ced1c5dacfd7dfc4caddc7cfd5ddccd3f2d3 +c2ce1313121111131518100f1113141313151a0f161e0c5cd0dfe1d8ced3 +ddd8cbc8d2ddd7c6b9d3d2d6c8b5c8d7c8c1a4c2cbc7b28dccc1bd7b9fba +ab9a65b1a8ac5788977835575d5b3451614442594d45561f0e1115171518 +1b1c1f23232121222507b265142818252c26212022232524262d2c232427 +211f2726272b2d2a26252d252831323232312d2b2e32302d313b373b302b +30292a3f382d232e2a2f2c3235332f30332b262b2b2c2f3a2c2a2426211f +1d1d1a140f0d0c0c0c0b0c0d0d0e0c0c0b0b0c0c0d0d0d0c0c0d0e0e0d0b +0d0d0d0d0d0e0f100b0d0e0c0d100f0d1315161818191b1d1f1e2523252e +2a2e27292e3234373c3f424d56424f49414a53545a5c5d673d2e373d44fe +fc3b3188dee5e8f9a56736fbffffa98aff5060fffffff8ffb3354efe70f5 +f5ffc64695fff5e7deffd2596b7482908a686d8184759b878c6c7775e6c1 +7c72787e73716f705da2a68a606b75719e9c845d686afffee4eeffff5669 +fa7f70fafdff505e7eb1e7ffbd546878ffebfcd9ffcb5da3fffbf5ffffd4 +6a7c7f7d7d8a7e70837a7c787875768874886a322d35322a333c38777978 +726e786a6f706b726a684ad3808d7e4ffc4161d74a613312a51f56570452 +111b7c26289f5565909e435b1c59b5ebeebe4c395357455d434c49414541 +454848503757ff83bb683c3b335cff86af8e2a2c34314755362b2c81927f +ffd3f0e3eefa5d5bf8feffedfff0649df8fefbd8e9a44c94fffdf2c9c65c +5684f7b4f9f7fb7956aaf4ffd4c4eea8f97eb9814eb3ff93ba6eb3b06fd1 +ce807070df96a9dd6d8f8c78d17c8c784d9c4d7be05f31719b2cf9c6abee +4075454fffa4ced783754374ffbff9c0bb7940c8ffb2e8a3ff7c46a17a5b +38828ab3a8b2b5a7afa99b869fa3b0b3a8bdb2bac2a7b0c3adb5bbc3afb6 +d5b9a8b40d0d0a09090b0d100807080a0b0a0a0c110409100047b5bfbbae +a4a9b6b1a4a1abb9b3a292acaaaea08d9dac9c957997a09c8862a1979452 +7792806f39857c802d5d6e5110343c3a14314326253c2e2a410d00060d10 +0e0d0d0d0e0f111112141600a45705190a171e18151416171816181f1e15 +161913111918191d1f1c18171e161922232324231f1d2024221f232d292d +221d221b1c312a1f15201c211e2427252122251d181d1d1e212c1e1c1617 +13101010120c080607070908060707080909080809090a0a0a09090a0b0b +0a0809090b090a0b090a06080705060808040a090a0c0c0d0f0f14111813 +181e1d1e181b1e2224272c2d3039422b38322a333f3f413c333d1f172327 +26dfe325196fc7cdd2e18f501fe5f3ef9270e7313fe3ecebe2efa0213cee +64ebe9f3b33081f0e5dad3f4b132464d5765613d3d5364577b6566404341 +bc984d424f574f4a403f3278795e3b43443c6e74633d4144efeed4def3f3 +4053ea7162eaecef333e639cd9f4ae3f4d5ff3ddeec8f1b23e85eeebe7f3 +f3b54550504b4c5b52465d545957574f465545614f1d1923231c24291b53 +514c48434e4146443e47414228b363756c3de82a47bd30471c008e063b38 +00320002630d12893e4d747f2439003690cad2a4331f393b283e252e2c25 +2b282b2e2e361934da5d9a4e28251332d6588e77171b231d354122171567 +7662e6b4d5c8d2df4240dde3e8d2e7d54982dde3e0bdd0892c74ece8dfb6 +b6493d6ee7a9edecf16a3d8ee2f0c3afd68ee3669a613299ea7597458885 +47acae635453bf7585b95071664ea85364532e7d2755bd3d11538012e1ae +94d4295b2a34e789b4be6b5a2556eaa1dda19a5820aaeb98ce85e7581e7c +5e411b606189818e93848d89826f83818e91869b9098a0858da08a9298a0 +8f96b5988793232324242322232425232225252525272d242f42353ea9f9 +f5e8d8daebeee2d6d4e9e6e5cfd3deeae0cdc6dbdfdcbeb8dfd1d2a5cbd8 +d1bb89cbc8c67daec6bf7f6fa59150546d734a556c5c586e695d67331a1e +2225252a2a28292c2f2f2e30232b4b2d3c30423e383634353737332e3443 +444143423f3b484544484a484545403c434c4b484946424648444243474b +464c443f453e3c4d40433b3c39423e403f44434246443f404548474c4148 +433a34302c2b27221c1c1c1c1b1b1a1a1a1b1b1b1a1a19191a1a1b1a1a1b +1c1c1b1a1918181819191a1a1c1d1d1c1e201f1c1c1d1e1e1e2022232723 +27262c36323335383b3e42474e53454b4c3f4b474b604b626f6058592e22 +212a38aa9d3033f0fbd1d5f9ef283cf57789f3d9f41d3883d3f3fcb22942 +76f8c4ffb7f3c7318df4bbc0cde7af2f44388e975a3f434440409c945b3d +24329fa95a423d2b232e32302d96ba9632232c29789699354a2995fefff3 +fda12d2de5edd7e1fbdd374abde9f7f7ff9b3e61f0fdfffffc97206bfbf6 +ffffec9b3f3f3d2f282e3338422c37374746302d334b60402a3138343726 +0c4a2b282321342837242830264635e6bbddf676fc3928ee609f852c8e07 +3a8c4e835c6cc63b689c8756675d3dcf76ebfff5e0f29d3b614f3326282f +30252d382e29353d2a87fd9292751d321e5af9989b9d311f191922221626 +24665858bcf0ddce23775067d7e1d89d1684515afccfd7bc454e4672fcc6 +eeb05c5b52a2ff91edd7ffe45171dae5e5e1e4c8ff7bffe987f5f0a88f7e +f1f2f7ffc9ae56bcffd7c4fab5bf5088d580c4feadbc2c8ec9c8ffff552f +b1f9f9fcf9ed4437c4efe7f1f4b92627dbcec8eddf8d402383a7a4a9842d +1c21776a356161b0b2bcc2a9c0c7c4c3bab3b8c1b4b0dcb6a9b6949d939f +919c9590ac969bae1616171716151617181615181818181a20161d2c1b22 +8bdbddd4c9cedfe1d0c4c5dad7d6bdc1ccd8cfbcb5caccc9aba5cec0bf92 +b6c1b9a371b3b0ae6596aea868598f7b3c405a6037425747415752495828 +0d10111412181817181b1e1e1e1e1018381a291d2f2b262422232525211c +212d2e2b2d2c2925322f2e3234322f2f2d293039383533302c30322e2b2c +303430362e292f2826372a2d2526232c282a272c2b2a2e2c27282f323136 +2b322d2722201c1b16110d0d0d0d0c0c0d0d0d0e0d0d0c0c0b0b0c0c0d0c +0c0d0e0e0d0c0b0b0a0b0c0c0d0d0d0e0e0d0f11100d0f10111111131517 +191519181e28242525282b2e32373e44363c3d303c383c513c5568574c56 +3b3a3a4142b0aa3e42fdffd9defffe3a4eff8696ffebff34539ce5ffffba +385589ffc5ffb5fad949a1ffbcbccef4d05f80679ea37a728687705ea09a +79726e72b6b4746d7c766e75716450a5b3985560786a909da34a744e98f7 +fff6feaa4749f2f1dbe8fff15e73d6f5f4f1ffa65a7bf4f7ffffffae478e +fff3fffffdbf77868f877e82808489737e7a7d83828072716a3e2d353a36 +352e25786f766e697b6c7b696d715f7457fbc4dff777fb3828ee5e9d8027 +87013487497c5260ba2c59907d50666143d57aebfff1d4e6973b6b624c45 +495253464a524740474b3387ed7a7b6b2b4c3c70fd90899239363a3e4945 +33403d7f7672cbf1cdbe227e576ee0eae1a61f8f5a64ffd9e0c147565d8b +ffc5ebad595f64b3ff8ae6d0faeb7899e7e3dfdcdfc1f06affec83eff0a4 +8168dadfedffc2a03fa2ebc5c0feb7bf4a79b968bcfda6b72e8ebcb8fbff +5f41bffffffffff75144d2fcf1fafac64144ebd9cff7f3a75f429dbeb7bc +994947458068396c76bda9a4a48ba9b0a19f989499a29793bf998c997a83 +7985778278718d797e9110100f0f0e0d0e0f100e0c0f0f0f0f11170b111e +0c0d73bfbbafa0a4b5b7a89c9eb3b0af979ba4b0a4918a9fa19e807aa294 +94678b958d77458784823768807c3e306854171d393f172238282238332e +41160005090c0b0e0c0706090e0e0f100109290b1b0f211d181614151919 +150e131f201d1f1e1b1724212024262421211e1a212a292625221e222420 +1d1e22262228201b211a18291c1f1718151e1a1c1b201f1e22201b1c2225 +24291e25201914110f0e0e09060608080909070707080a0a090908080909 +0a09090a0b0b0a090805070506060707080909080a0a0b0607070808080a +0c0b100a0e0b131b191816191c1f23272e3123292a1b2723273c29424e38 +242d1d222527208e8e2425e3ecc4c9efe92438f17182edd3ed18347ecbe7 +efa5233f75f3b7f3a8e8c32f88ebacb0c6e3b1395c43777b534751524a3c +7d7653483b408a8a4740514d474b4436267c85692d3747345e71812b4e2c +83e7efe3ee972e30e0e0cad6f1d83f51b9dde5e5f3954362e3e9f1f1f194 +2870efe4f3f3eaa3545c61574d5152565d475451595a514c434a4f291a24 +2c2826190754484e47415343523d4046344d34daa7c7e567e92310d44586 +6c1374001c6a2b5f3748a21542786436484021b155c5ddcebad081235246 +2f262c3435292c352a242d311665c9545b5014331842cb616576211c1f1f +2c2717232061544faad2b4a5045f384fc1cbc48902713f49eabec5aa313e +406dedb1da9c4a4e4ea0f380dcc6edd95d7ed6d6d1c9c9a7d850e4cd68d7 +d8875e3faeb5c9dfa5831f7fc8a19bdd9fa32650914298de8a9a09689997 +dee64627a8edebeceade372ab8e2d6dfe0aa2225ceb9b0d5d0843d2280a1 +9b9c78231c1f634f1e4a4d928280826989918b877c757a8377739f796c79 +59625864566158526e595e7124242526262524232e2a292a2b2a2a2b2934 +2c2e322f54d9fdf5dfd2dbe8e8e1d0d9e6e6e1c6dae5e0dabecde9d6d7a7 +cbd8d6c2a4dac8d486aadac0a678c1b9a051919459486e6a595067625a6a +685c683b1a1c1e2322252b29292d303130313c283338333335363e3d3a38 +3b3f3f3d414e4a484946474343403f42454444453e3c40423e3d3f3a3b41 +423c393c40413a403d3a403d393f3f40394340403b473e46464345433f40 +4247474b424b443739342f2b26201b1b1d1c1c1b1a1a1b1b1b1a1a191818 +18181a1a1a1a1b1b1a191919191919191a1a1d1d1d1d1e1e1e1d1c1e1e1d +1d1f212122212826282e2d333a3c403f43454d505354544f58555f6e524e +4e456c8042282d2e31a7b141265fafb4c1eda92928a070528df4d0283934 +4184cfea9b342591c1def2fb6e2d4bf5f8fffffb863a3446a5ae793f483c +3244a5af61463f2671cd7c4a3f2f262a333e40abc7b33934312776c29a3d +4a4ff3eca9b4c5f95257f8c6b4acdfe93150f2baafb1e2fb345ef8ccbbab +eef4343edcffffefe78b3b36383d3e2a302e3337363942412929495e7951 +40313130352e3dbb51151f312b302d272f233a3432bafffff8b6d41645ff +b76b28272c1780ff8258546954459ed2cf5a56c18eb66af68b65f4d6df1b +42322c262720252b302f1a4c2b266c97e2c1dead3030285f9ed5a7af3a28 +29435038221d282f535bcfefaaffd0cd5c5ef1e1def7f4e55858e4f1f2f7 +f4df6054f0f4eaf9ebe7474ce7eff9f2f0bd337df1bccbb1f6ffd1adfac6 +91d2ffed4689ffe1b9c4ffd32be8ffb7bac9ffbe3bb6d489edffed8e1fb1 +a2634c8d37332f1c330f3347282d223c1e0e351c26305e280b61463f3531 +28292e2b384730207970304b48a290aac5b7b6afb8c7b7bea2a0b98badac +f7fff2fff1f9f9ffefedfffaedd41717181919181716211d1c1d1e1d1d1e +1b261e1e1f1533b6deddd0c6d2ddd7cebecad7d7cfb4c8d3cfc9adbcd6c3 +c494bac7c3ad8dc3b0bc6e92c2a88e60a9a28b3b7b7e45345b57463d524d +4353514959300d0e0d120f121917181c1f20202129152025202022232c2b +2826292d2d2b2b3834323330312d2d2a292c2f2e2e2f2b292d2f2b2a2924 +252b2c262225292a242a27242a272329292a232d2a2a2531262e2e2b2d2b +27282c3131352c352e2427241f1b150f0c0c0e0d0d0c0d0d0e0e0d0c0c0b +0a0a0a0a0c0c0c0c0d0d0c0b0c0c0c0c0c0c0d0d0e0e0e0e0f0f0f0e0f11 +11101012141414131a181a201f252c2f303233383d434347444249495061 +42434640658153454b473dafc051376ab1b3c4f2b23534ac795b99ffe03c +50484d8cd2f2ad4c3ba0bfd6ecfe804563fffcffffffa366656dacb29472 +92896f69afb77d798b6a8ad58d6b787673716a6459b3c1b5596c796691cb +a5506e6df5e3a8b5c4fe696fffc9b7b1e8fd5978ffc2a7a7dcff4c74f9c2 +b1a8f3ff5961e5fbfdebf2a76a76838f927e7f7b808485848084807d8884 +824c3f323231343656e48d586071686e6b687060715e4dc9fffdf5b0ce11 +3fffaf631d1c1f0a74fe774d485b46358ec2c35151c190b668f2865ce8cb +d91d4c4545454a454a50515037653d337294cea7c5a23c484475a3cd95a6 +494752727f64473f4751797ee8faa3f9d5db6a6cfff0edfffff86b6bf7ff +fffffff68377fffff7fff8fa676cfcfcfffaf9d362aafeb6bfa6f0ffc19f +f9c78ac7ffe63878ecd0abb6fec417d2fca8b2c4fbb733a7b86fe0f9df82 +1fb195523c8743473e2a3f193c53363d324c2c1b3f2c4552763919725e5f +5a564b48494552655a44837236595db18b96a89a9f9695a3959f83819c6e +908fdaefd8edd7dfdffad0ceecdbceb71111101111100f0e191513141514 +1415121d130f100420a0c2bba99ca7b0aca496a3b0b0a98ea0aba49e8291 +ab9899698e9b9882619784904266967c60327b766012545922113a36261d +332e2434322b421c0003050b080b0d09080a0f1011121b06111612121415 +1e1d1a181d21211d1d2a26242522231f1f1c1b1e212020211c1a1e201c1b +1b16171d1e1814171b1c161c19161c19151b1b1c151f1c1c17231a22221f +211f1b1c1f2424281f2821161915120e0d07050509080a09070708080a09 +090807070707090909090a0a09080606060606060707090909090a0a0a09 +0909090708090b0b0b0a110d1115161a1f1f212224282e323334342f3633 +3d4e32312f223b573329332a19889f34174c9ca1b1de9f212096664683e9 +c621332c3577bfdd9734268db2c9deeb682b49efebf3f8f68543474e8a8d +71495d5346478c9257505a3960ac63404d4c4947403b328a918432454931 +5e9e83324a4bdfd294a3b2ea4f57eeb8a69dd3e23755ecab9a9dd0f0345d +e9b6a597dfef3a43d0edf3e0e1904a515861614d504d5256585959594d49 +595d67382b202221221f38c26b353e4e46494640463647362aa8e5e4e4a2 +be0029e8984c0b0a0e005ee45b312e412c1c75a9a934339f6b9242cd603b +ceb5c305332928262c262b313231194823195673a982a686262e1e466d9c +6f872c28324e5d41261e272e5256c1d886dcb5b8494bdfcfcee8e5da4d4d +dbe8e9edeada6357edece3f1e6e64f54e9ebf4ebe6bc428deca8b194d8e6 +a784daa870b1e8ca154dc1a58899e3a500abd5818ea6e39d0f80914cc0dc +c568008b7234226f2b2e27132901273b1d2217311200241126315619004e +3a3a38342b292a222f3f321e685a1a383688657386787f787f8b79806462 +7c4e706fbacfb7ccb6bebedab1afcdbcaf97201f1e202324232224201e20 +222222242334241f2b2e3187ecf8ecd0cddceaebd6cde4e6e7d0cfdce3df +c9c4dbdadfbbadd8dbd19dc1d0d1b088c9c1c1689abdac5c6e87674d6164 +675169695b6a6b5a6943191c212b27242c2c303335343639383d3e4b403b +3d47413f3935383f44443e483f3e413c3f3a3a38383b3d3c3c3d3f3d3e3b +393f433b393b3c3c3b3a3d41383c3d3c4145403943403846463f374b4144 +4445453e3b433e4142493b40393538332f2c26201c1d1d1c1c1b1a1a1a1a +1b1a1a1919191a1a1b1b1a1b1c1c1b1a1c1c1c1b1b1c1c1d1d1d1d1d1d1c +1d1e1d20201d1d202222222027242327252c2124292c31353b3f3639393c +40404240413f43326c8c44302f2d2e9ed55135c5f5f5fff88a374fe3fbfb +f2f66c356af5fefdfff85d3d53f9ffffffef564742c2eafff5d7484f4750 +bca5674c56373f449dba463d303a5adbb65b3b2b2828415c46a9c8b74b3a +2e277ac592463b33efffeef7ffff4452e8fffffff9f83545e6fffffdfddc +3741fffbffeed79a3156f6e8f1fffec03d4d422d34363c362e3329323c38 +2f303c596c3d3a333c403e261f989c19597235712d282131423e3daff59e +c70a070740fea5795d1f340e73b8673e802f403b999bdbfffffb987e6bff +eaa6d9b4fb4c352d2f2f2620232c2c2d3ff098afffcc9effca9838362e85 +99ff88c61036443716092627213f2c4573aab6b3b3c94b455084887d9d8c +613854676a60714a2e2223394d404e383433222932333443242df4fbffff +f6ff7268fabeb9eeffe64994dca8f8e5ffac37bfdaaebb7fc19035daf17f +80877b712ba78e634d92393a3d364d304d3b263030503b2a43221a335746 +3e7e4e473642372f334a484e3c477c6029594d9a9d9a93947b6d9b9a9aaa +978ddad3d0e6aeacb1cbb8bec1ecc8c3d7ddf4db13121113161716151713 +11131515151714261a161b170d61c8dadac7c6d4d9d8c4bed2d4d5bebdca +d2ceb6b1c8c7cca89bc6c6bc86aab8b99870b1a9a95084a6964658715339 +4e51523c54544451524559360c0e101a16131b1c1f2223222629252a2b38 +2d282a342e2c2723262d3232283229282b26292424222225272626272c2a +2b28262c2d25232526262423262a222627262b2f2a232d2a223030292135 +292c2c2d2d26252d282b2c33282d262226231f1c150f0d0e0e0d0d0c0d0d +0d0d0d0c0c0b0b0b0c0c0d0d0c0d0e0e0d0d0f0f0f0e0e0f0f100e0e0e0e +0e0d0e0f1013131010131515131118161419161e13181b2023292d33292e +2c313335353533363d2f678f5a51514a3fabe66546d0f4f2fffb924058ed +fffffeff7c4983fffffafffb6a5366fffdfcfbec625b59d4eeffeed75f72 +6b68b79f77769c847b69a9c25e6b797e75e1be726b6e706b6b7656aec2b9 +676c6d6095d19e595d51f4fdecf4ffff5461e9fffefffcff5464f4fffef3 +f7e45159fff4ffede0b35a7bffe5e4f8ffd664838376818389837b80787f +808186837a7d7236332d393e3d2b33b9c94b8aa363a260605968726455ba +f498c003000038f3996d4d0f240062a857307628362f8d8fd0f6fff8957a +63ffdb99d2b0fb5243444c524b474c55515260ffa4b3ffc78cf5b38d404a +449799fa79c01f5369613f314849456859729ac9c7c1c4dd615b689ea298 +b8a97e55718487819979685f5768796c7b6b7273595a5d5a576c6060fff8 +f6f7efff675ffabdaddff3db3d87cd99e8d6f09b25aecba0b174b2812bcb +d7656f79666128a886543d8c454d4c43593c5949384444644e3a52353b58 +746054966c6b606e6057556a636c626585602d645fa69888797763547976 +788b786ebdb6b3c9918f97b19ea4a7cfa9a2b6bed5bc0d0c090b0e0f0e0d +0f0b080a0c0c0c0e0d1d0e070c07004eb0beb69e9aa6aeae9c97aaacad96 +95a2a7a38c879d9ca17d6d98998f5a7e8c8d6c44857d7b22557a6d1f334c +30162d31331d3535253333284223000108130f0b110f0f121514191a171c +1d2a1f1a1c26201e1915181f24241a241b1a1d181b161614141719181819 +1d1b1c19171d1f17151718181615181c141819181d211c151f1c1422221b +13271d202021211a18201b1e1f261a1f18141814120f0d07060709080a09 +070707070a090908080809090a0a090a0b0b0a07070707060607090a0909 +0b0b0b0a0b0c0a0d0d080a0b0d0d0c0a110d0d100f15080a0e12161b2023 +191c1c1f22212423262527103d643634362b1580c24222b0dfdfede67d2b +43d5efede6eb622d65edeeebf1ea563c50f1f0efeedb4c403dbcddf3e6cb +4352514e997f5a526a505548859d3c464b4f4cbb95484143484245513286 +92884146402d62a37a39382fdde9d7e1edeb3a4ad7efedefe9ed3544daec +efe7e9cf363fefe4efdbcb96385aead4dbeff3c147615b4b53555b554d52 +49515754534f4b575823211d2a2f2b15179aac2e6d8647843f3b32404a3d +3198d67eae00000023dd83573d0014004e913e155b0e1d177375b4d9e3d7 +72573fdcba79b697e338292830342c282c35303141ed8c9ce6a766cc916f +29311e6763c5509e0034483d1d0e2726214030476ea0a39ea0b83d374479 +7f75978a5f3653666962775540363346584b5c4a4d4e393c413f394c3a3f +f0e7e6e4d5e34940d89e93c8dbbf175da270c7b9d67d0083a0798e589d6a +08a4b444535f51480580623526762f37372f4526453220292948321f3519 +1c37553d307248453c4b403534454046393f68461244397e726456554135 +605e5c6c594f9d9693a9716f76907d8386af8a83979fb69d1b1816181d20 +21201f1c1b1e22242628262a1f292b283d3abee5f1dccfd9e7e9dfcadde8 +e1e2c1d4e8d8d5bebde7d3d8a0c2d8d5bb94d9cdd078a1c8c08d72aba379 +4f7376584c67644c666c5b6c6f5c6a46191d2736312a292b31343231343b +39344133353b3a2b2c2f2f2e3033322f333e33383e3b3f373c3b3c3f3e3c +3b3c363637353743483c3e3a3c42433e40493e40434347504d3d3a493d38 +39443a3a3d3b3c43443a3c4d3f3d3e4737363437322f2d2b27221e1f1d1c +1b1b19191a1a1b1b1b1b1b1c1c1d1d1c1c1d1e1e1d1b1c1c1c1b1c1c1c1d +1d1d1d1d1c1b1c1f1e21201d1c202221241c1f1d20241d1f1f2224252322 +2324292d2a2e2f393a2b3536381e72a654382f333cb0d153207bb5d8e8ff +be4a3290b4c2def4ae453381bfcae4fe963f2693b7c9c5ff934258f5e9fe +ffff8d485454a6b1674e4e3c453d86a4804f2d31539aa1513b2c2e343e41 +3d98c5ab5f39343672a67b544829ccfbf3e3394c4645f5f3ebea304a3d4c +eff5ede54540394dfadde0e5504b346af5aacce7c9f23a433c3734463136 +34302c312f362d2e3d646143463f40353c342993e351ced666e95a2e3636 +2a3f4e77b2646ca1e54737ff9e6859a6e644809a734c6582b3608d897d24 +0d75a786a5a9929d8e6d44272a2d2c1c242c242a353320e8f5ff92a085f4 +88752d35389985ff8bb733737e6a5a67681b233d455e3a130e0f394a414a +321c230f7e5b4d372a22193a485641271719372f32342e1f313031425164 +3043f48fdacc65ff886bf9e2ff9a63ac39acaf81ff68818948d4b69cc529 +665634f7d7c09d8c944f3ebf987a486f293225252329422d282418211b1e +5721301a2c334d67423a372c3c2f414239435f4c8d77365d497dc4a699e8 +f8efffb9ccd2edb2afc9b5abbbc2c2c0e1e9bbdce3e2decfddc10e0b090b +10131413120f0e111517191b151d19231f151b1398c5ded0c8d1d6d6cdbb +cbd6cfd0afc2d7c7c2abaad4c0c58eb0c3c0a47dc1b5b86089b0a8775c94 +8d63395d624439544f375155425356475a3a0c0f16252019181a1f22201f +242927212e2022282718191c1d1c1e21201c1d281d222825292126252629 +2826252623232422243032262824262c2c272932282a2d2d313a37272433 +2722232e24242523242b2c2226372927283124232125201f1d1b16110f10 +0e0d0c0c0c0c0d0d0d0d0d0d0d0e0e0f0f0e0e0f10100f0e0f0f0f0e0f0f +0f100e0e0e0e0d0c0c10101413100f131514150d100e11150e1012161819 +171617181d211e22232d2e1f292c331d6fad6e5d56554fc0e6693589b5d3 +e7ffc3523c9abecceaffbe594c93bec2dcffa3553c9fb0b9b7fb9d566fff +eefafdffa46a76689fa870708c7e775c90aa8f7472706c9ca15d6165716e +5d50479dc2af7861676488b287676a4bdcfff7e2344e5655f6ede8eb3358 +5c69f9f4e6df464e576affdcdfea606a6396ffadc6e3d0ff5e767a7b7d92 +7d83817d7b7e7a83837e7886653b3a363832393838aaff71ebf383ff8159 +6364525f5f7cad5a659ade3f2ffc92594895d5336f8a63405f80ad5a8682 +761f0a75a7839fa085948e765137414c4f45505851565e5b45fffaff919c +76e1746a304346a282ff80b5428c998573808034415f6b8763382e2b5566 +5f6a55404735a3837560534b42667a90846c5a57716970787c707e776f78 +839b737bff8dc9ba5aff7b61f3d9f684519d2b9fa072fc526b7436c5a98e +b518544627e9bfa78c7c7b3d3bc1926c3968354534322f354f3c3b3b2f3a +32326a3853414e5268856462655b6b5d6964575f7b608d7132605585bf94 +7fccded5e597adb3ce9392ac988e9ea5a8a6c7cfa1bfc4c1bdaebea20805 +0103080b0c0b0a0705080c0e10120e140d1511070f0485acbdaa9ca3aaab +a594a3aea7a8879aac9c98817fa9959a60829693785195898c345d847a48 +2d68643e14383f2319343018323624343728412400020e1e191210101114 +1211171d19132012141a190a0b0e0f0e1013120e0f1a0f141a171b131817 +181b1a18171814141513152124181a16181e1e191b241a1c1f1f232c2919 +16251914152016161917181f2016192a1c1a1b24161513171210100e0e09 +080909080909060607070a0a0a0a0a0b0b0c0c0b0b0c0d0d0c0807060706 +0707090a09090b0b0a090c0d0d0e0d0a090d0d0c0e0609070c0e0909090a +0c0b0908090a0f111012131d1e0f1d2020004681493c37322293bf430e66 +9dc0d3edad3b2482a6b3d2e8a33d2e79acb5cfef8f3e2589a0acaaeb853b +53eddaeef6f388495d4f8289554f5d50543d6d867053464344777b373a3c +48483b2f25758f7d513e3e35578463474526bfe9e0cd20393c3be4ddd7d9 +1e3f3c4adedfd6cf34373b4eedc8cdd4464b3f73ed98bad7c0f342555352 +52644f55534f4c504f57524b4c614c282a272b2128211b8de85cd5dd6df2 +663b423f2d3a3d5c8f41538acc2a1ae67c463885c5235d734a2645679540 +6c665a01005385627d7f65757259351c252d31252f3730353c3924e5e4ec +75794db7514c1b2a23754bc9538f216e7a66556260141d3a425d390d0703 +2f4039432d1a21108160533e312b2245556859402f304b43494f5245544f +4a545e734854ed78b7a43ede5b3ed1badd6d39800675774bdf3a5357109a +7d6794003e2f05c49d887265672518996e4f24561f2f1f1e1b213b272521 +151d16164c1b33222d30455f3f3d4037493946413339533d71571943315e +996e5aa7bbb4c97b9094af74728c786e7e858785a6ae809fa5a29e8f9f83 +1b21201a1b21221c262424262a2b27232a29211e212a373e62ddeedfd7c8 +e0eedfe1c3e1e5dcd6bdd7e6dbcfaed2dcdbbda3d7d7cc9cacd6c9aa77bd +c1ae5b99a3774e57766247676d57636a61676e62615e141b1a221b221f20 +25272a2c2f2f2a2f32313236383734363734323538393b3a3b3d3b393a3c +3d4042403c3a3b3e393d3e3b3a3c3f3c3a3c3d40433d3d4537403a45464c +3c3938434c3e3f3e443e3e404345423f454d493d41443a3a3a2937302e2f +2b221d1f1e1e1d1c1a1919181b1b1b1c1c1d1d1d1f1d1b1b1c1e1d1c1d1e +1f1d1a191b1d1b1b1b1b1b1c1e1e1f1d1c1c1c1c1b191c1b1b1c1e1f1f1e +1d1e1f2021201f1f222325282b2e30312c2b311e8baa4531313334978a51 +3ce7fdf39d3844495df9e3f68c303b3e72f2dfff7d3534446af7ceff8d32 +3b3f90f254dfc5fea63b436ab0da947062425dd3df91e1d03d349fffffe5 +e6d23727b8f6cb9ec7d751369fd27fa1b4ee4f3de8e4d5faf0f45941f5fa +f0fcfbed494bf4fdfffef8e94638f5f9fcf0f1e7334bdcf8f5fbf5bf4041 +3a363b333931303a332f362b2732426a7c5549403042352d3580f7dff7fb +caed722e3124311052535952122a222450ff9b51152a21236b856c251523 +20457e82702f402e1f65d67d36231e232636353c312d272b2b2c2e351cb4 +e27a40c18fff7bfac494afaf6eff899e42a8f8fbffeff14d31413fb26a3c +231f4f68405a3742302c6c57543c323b35465f6760342e435d4f594b4540 +434d4b584e6f5848e9ffffcca0ff6e7ddcb9ba7852693ff3e9dd96748348 +59eee9cb81775d423de1efb36b75673341e39f5a5049201e1c161a35532c +22140d0f124f7b2a30292432845b413b3a313733323c4544435980705369 +5055c5999f9caaadacbfc4a3adb2b2baceb8bdc4bdaeb6ddd4d6dec9c9db +cbcb0e14130d0e14150f191717191d1e1a16191c1d1b191a19183bbad9d1 +cebdcfdbcdcfb1cfd4cbc3aac4d3c8bc9bbfc7c6ab91c2c2b58594beb192 +5fa5aa9744848d603a43624e325258424c53484e534b5152070d0c130c13 +111215171a1c1d1d181d201f20242524212324211f222526252425272523 +2426272a2c2a26242528262a2b28272929262426272a2c26262e212a242f +30362623222d362829282e2826282d2f2c292f3733272e31272727172520 +1e1f1a110e100f0f0e0d0d0c0c0b0d0d0d0e0e0f0f0f110f0d0d0e100f0f +0e10110f0b0a0c0e0e0e0d0d0d0e101011100f0f0f0f0e0c0d0c0c0d0f10 +100f10111214151413131617191c1f2224251f212e1d8cb3635a5d594ba9 +a16a51f5fdf09c3b4c5367ffedff963d4b538affe0fa7636465c82ffcbfc +84314958aaff59d9beffc3656a82b1d79a89917279e1e393e7ea776db3fd +fbe7ffff6f56cbfcd1a3c5db6253c3f38ca8c0ff7466fffce5fff4fc7055 +fdfcf5ffffff6c6dffffffffffff6f60fffffffeffff6c82f9fffcffffdd +6b777a7d8680867e7d87817c857d7d807b8a804a3930263b322f3e8dffe7 +fdffd5fc884a52475028605450460b241d1e48fa8f44051a11135c765d1b +13251e437c8070324535266bda7c31262f3c43555a655e5c595d5a5b5a5e +44cde06d3cbe86f76befc398b3ae67ff85a353bcfffffff1f556405254ca +855c4745738c6683616f605e9e8b8870666e687a919b9a736f8195899792 +9493969a8c9288ae9d81fdfff0b28dfc5b6bc9a29c5836512be1d6c67a55 +642d43dbd8b7695f473030d3d89c5b644d1f3de5995145462c3029222540 +603d382c27292b68934553504955a87f676568636b655e60605a535f7460 +44645457bd87837e8e8f8b9ea5848e93959db19ba0a7a3949cc3bab9bfa8 +a8baaaaa080e0b05060c0d07110f0e101415110d1113110c0c0d0f0d2ca6 +bcaea590a3b0a5a789a7a9a099809aa99e9271959c9b7d63959589596892 +856633797e6b1859663e1720412d133339232d34292f352c373c0000030c +070c0807080a0d0f13110a0f121112161716131516131114171817161719 +17151618191c1e1c1816171a171b1c19181a1b181618191c1e181820131c +162122281815141f281a1b1a201a1a1c20221f1c222a261a202319191909 +17111112120907090a0a0b0a070606050a0a0a0b0b0c0c0c0e0c0a0a0b0d +0c09070708060403070908080a0a0c0d0f0d0e0a09090909080608070708 +0c0b0d0a07080908090807070a090d0e1114161917171d0162863d383c34 +1d7977432ad2e5dd8826353a4eead4e57d212e346ae7ceed66242e4268ed +b8ec731d303b8deb43cbb4f3a4414f6891b6806b674a60c8c06ecbcd5144 +8edad7c2dbd84832afe0af7a92a93e349fc85e7c9ce24b3ee5dcc8e9dbe4 +5339e6e7dfedede64b4ce5eaecedece54d3eede9ede4ecec435adaeceaf1 +f1c34d5555535b545a524f59514e584f4c4e506567382a231a2b21192373 +efd8eff4c4e97331352730063f35332c00140a0833e47931000b02034961 +4602000f072c6567561527140549b95d13070f1c243539433d3a363a3839 +373c22b0cb5a219b5bcb47d1ae81928231cc567b31a0ecebead9dc3b2132 +33a86235211c4d663f5b394838387865644c424d47566c74714844586e61 +6e666765686e646a5f817058e1eadb9b6fda3a47a8838443203708b9aea4 +62404f121cb0ad924d47321810b0b87d42503c071abd75343135181a150e +142f4e2a23140c0c0e4a7326353128348259423f433e47403a3c3d342e3d +5a472d473130965f5c58676b6a7f86656f74757d917b808782737ba29999 +a089899b8b8b1f22221f1f2323202626272a2d2f2d2b2b2b2420232c373c +2a7cf4e3e8cddadee8dbd0cfe6e2e0c8c4dfd8d6bbbedcd5cea2b7d7cab3 +95cccebc7699beb87364987c555270664c626b58646c64686f646b711a1c +1b1d171a1c1d2023252629292a2f3131313436343436363435393d3d3d3b +3b3c3d3d4045413c3d41413b3b403a3d3d39373a3f40453b383e43423f3c +3b423939343d3c453c43483839383f3b36383c3f3d3a3d424b4041423638 +3d3238312f2f2a221c1e1c1c1c1c1b1a1a1a1a1a1a1b1b1b1b1c1a191718 +191a19181b1d1f1e1c1b1c1e1b1a1a1a1a1b1c1d1d1c1b1b1d1d1c1b1c1c +1b1c1e1f1e1e1f1f1f1f1f2020211f202123252728292727271595a7422f +414b479c715556f8a3e3fbc7905b70f9bcf4f9e3a44e73f4e4fffff18147 +79ece0fdfef7943769eee7fdfcf58e3a75f0de94ecf6b152d2fbbb88a3f7 +8031d9feffd08be67341d9f8d8bac6e46438e7dfa782ace9672e75adaab0 +a79e4d386ca48c9995992c2a5fa8af797a5d2d325ea77d585b3936375e61 +783f3440393d392d33292b30311e273525242f2a366a4a6340433a323b4b +5dbcdbfffff9f6db26191d281e0b554e6b722a33291c47ff814922342f2c +62886b2b2b3029256c7e762a2c2d3365f280423c3e3d373b32352a262e2b +2b3d33332bddff3f66ffadff86fffdf4eec485f3ad7b2c5eac8fff40272d +3244597d381b1510243f505835392d3b443b402e27322f4043423d303236 +3e392b3037271c24382f31282b23618cab8cc8ff699bec915293a24d59c2 +a09e5196a45561f5b47e458f991d4fe3ea8431bb7e324dad83254c2d2c17 +1323143c611f15141b21265c5f35282927326c463638373327372f305161 +76a38a788be36858b0b0aeb2b5b1aeafcbb6a9bdbdc8c1c0a4bdb4afbbcf +c0b9caf0d7e3ced9121515121216161319191a1d2022201e1d1e201e1d1e +1c1a0459dcd3dcc0c7cbd5c9bebdd5d1cdb5b1ccc5c3a8abc7c0bc90a2c2 +b39c7db4b6a45e81a7a15e4e8265413e5c52374d56434d554b4f554d5c65 +0d0e0d0e080b0d0f0f1315161717181d1f1f1f2223212123232122262a2a +2725252627272a2f2b26272b2b25252a272a2a262427292a2f2522282c2b +2825252c23231e27262f262d3222232229251e2026292724272c352a2e2f +23252a2026211f1f19110d0f0d0d0d0d0e0d0d0d0c0c0c0d0d0d0d0e0c0b +090a0b0c0b0b0c0f11100d0c0d0f0e0d0c0c0c0d0e0f0f0f0e0e10100f0e +0d0d0c0d0f100f0f121212121214131512141417181b1b1c1a1d241596b4 +625b707461b08a6e6cffa7e2fecc9a687dffc9fffff2b7638cffecfffffa +99669affe8ffffffad5a8cfff5ffffffb66a9cffe696f0ffd578e5ffbd86 +a1ffaf60e7f8f5ca99ff9c64e3f8dcbcc6e66f4afff0ae87b6fc8b5b9fd3 +c5c5b6ae6a557cae9aabacb85a5474b5bd8b918064647bba90717e697976 +847a905b566b6f7b7d78827b7e8383707987787a87786f894e582e312e2a +354a5fbed5fafdf1f0dc2d283340351b5e4d62662530261741ff763e1527 +221f577d61252a3128246e827c353b3e4779ff8f4d4d606763696469605e +64615f6f615f54f6f72c5fffa9f77af7f8f2e7bb78e8ab834477b68eff35 +212d364d628a4b393b3d4e6c7e88676d657581777e6c65706d7c7a79766d +75797b776e7c897f787a7f6e736e755e7c8c9772b3fc5787d57630708433 +45b08c873577883b4de4a36a2d76840d42d5d36c22ac671e49ae7d1b452b +35251f2c1b456c2e2b2c353e407678524d52505c946f5e6266675d6b5d54 +6b717a9a745f75d56356a79f929295918d8eac978a9ea0aba4a387a09a95 +a1b5a69cabcfb6c2adb80c0f0d0a0a0e0e0b111111141719171514151411 +111313110046c2b2b4949ca0aba19695aaa6a38b87a29b997e819c958e62 +7595877051888a7832557b7533255d431e1d3b31182e37242e362c30342d +3f4d0001040703060606050608090d0d0c0f111111141513131515131418 +1c1c1917171819191c211d18191d1d17171c181b1b1715181b1c2117141a +1e1d1a17171e151510191821181f241415141b171214191c1a171a1f281d +202115171c12181212121109060808080a0a080707070909090a0a0a0a0b +0908060708090805050608070605080a080709090b0c0d0c0c0908080a0a +09080808090a0c0d0c0a0a09090909080a0909080b0b0f0f121314141500 +6e863b374e4c327f604745e48ecee9b5814e63eaade5ead599446cecd7ef +eee57f477be8d1eaebe9903a6ceddcecf3f191427fedc171d5ebaf53cfec +986088ed8f3cc6d6d4a676e37a46cadebb9492b54f30dfcc845e94dc6532 +79aea4a699914b366296819190993530559ba37175603d3e5c9e74535d43 +4d495f5c76423b4d4d56564f554d5055554049574c4d5548446735462225 +221d253547a8c7eff3e6e4ce1d151c2618003f2f454e121f13032be8602a +0517120f4569480d161f1410586962171c1c2456e16e2d2b3d413f443f43 +3c39403d3b4c3d3c32d8e41b45df7cc852d9e4ddca9244b27b5a22599d79 +ec210b151d30456e2d1716162845576041463e4d58515747404b48585351 +4d43494d524e434e594d45495343453c44325b707f5794d83162b358175a +6c18228867671f63732028b8784513606f0022b2b4500b97550626865b00 +321c200e091909345b1b16161c2225595a332e3430386f47393e42413945 +3930484d597b5c495eba43307e746a6b6f6b6a6d8d786b7f808b84836780 +79748094857c8cb097a38e991f2020202121202024252628292928282627 +24242a353d433d50bceae1e0d1d8ebdddbc5d9e8e4d4b8ccdfddc7b1cbd8 +d8b995cfc8d090adccc49774afba8e4d837f604e666a535d6b5c646e6668 +7166697d1a191a1918191c1c1e2024252728282c2f2f2f30313037373634 +373c3f3e45413e3b3836383c443a38404037343b383b3b3835363b3d443c +4349423e413e323d3d403d3e373a3c41473d444752503f40424443424448 +443f46493e3e423a38322f2e29211b1c1b1b1b1c1b1b1c1c1a1a1a1b1b1b +1b1b1a1a191a1b1b1a191a1c1f1f1d1c1d1e1a1a1a191a1a1a1b1b1b1a1b +1d1e1d1d1d1c1c1d1e1e1e1d1d1d1b1b1b1c1e1f1d1d1e1e1f2020202122 +1c09a7a93f2d3245429f735e48aeccc3c7bf914f54a6aaaaabad7c374688 +83898b904f2c3f6d746d74793c34305c8781756e545756cdb28095c67c35 +8df8a296abfe5f34acffc8945df63d38bae6af9bbfcc4b328eebea8b97aa +30393c484153473f42322b35454b3b3a172a3094bd543a35364365cb9d56 +4945313c54756e43403b382c2f2c2932251b2d303622272d252b3e4c4f5a +442f3540422843ffffc97e9944250724221d100c2e2b70542a2722142eff +824e2e3027204b8762273321211370796c2934312c3eaa5a3d412f2e292e +293433362f363038344436bef08e88f0adffe69357234a708affe2723c51 +da677483d19d183073642c0d101727305f4621201b33322e311f1a282b3d +3d40342e2a303748473838393734554759474f564fac98c0bcb778c3a7b4 +76dec77688d0824379feb14a87e49d3b3fbd711972cbda4874b05415789f +741e62221b2020231e2228332e282c2d315f363426292838583f36393036 +2533313772e3a9b8964c79ff975894b9a3bcbab1b7b5a2b2c1a9beadbcc5 +b2c6b4b5bcbcb2c3cbe1c1ced1c712131313141413131718191b1c1c1b1b +181b1e20242829261d30a1d5cfcebec5d8cccab4c6d5d1c1a5b9cccab19b +b5c3c3a480bab1b97794b3ab805d98a378376c684c3951553e4856474d55 +4b4e544d5a710d0b0d0c0a0c0f0f101213141416161a1d1d1d1e1f1e2424 +232124292c2b2f2b2825222022262e24222a2a211e252528282522232527 +2e262d332b272a271c27272a27282124262b31272e313c3a292a2c2e2d2c +2e32302b32352a2a2e2826221f1e18100c0d0c0c0c0d0e0e0f0f0c0c0c0d +0d0d0d0d0c0c0b0c0d0d0c0c0b0e10100e0d0e0f0d0d0c0b0c0c0c0d0d0e +0d0e10110f0f0e0d0d0e0f0f0e0e10100e0e0e0f11121010111112131313 +1418190ca9b6625b646f5eb58c775ebfd6cbd1cca16267b7bbb9babe914f +61a1979899a472566b958d808b9668666288a99e93958c8f7be4bc8498d0 +9a559fffa492a4ff8359b3ffb88760ff574fbde1ae9cbfce503a96f2eb8c +9cbb52666c7867735f5a6757444c5f6c6068546353add8735d6577828de9 +bb78767e7b8281999c7778797c777d82808b817786888e7a7e867d78776e +5752341d28383c2641fcfcb56785321701262e2c1e19322a664927282112 +29fb7c4622241e1744825e25321f1f147381793c4d515064d07e61696267 +6168657271746b6f686e667364d7e37781f0aaffdd884f1b3c6078f2df7e +5e74ea696c78ca9b1a3477693a2838475760917a595a597676727865606e +71817e7e7171777d7f90938a90979c95a38ca1949f9a75b78dabaca96ab5 +939d5bc3af6379c2743365e89b3779d9912d2eab610b65bbc03068a53f01 +709b69145f2520282528222931404140464a4e7951514a52546482695e63 +5e685d6a5f5b87eda2a47a2d5df28c5088a8879c988f97978493a28aa190 +9fa895a99a9ba2a298a6acc0a0adb2a80c0d0b0b0c0c0b0b0f1010121313 +12120d0f1014181f221e12218cb8aba6939aaea19f899caba7977b8fa2a0 +88728c989677538d878f4e6b8a8256336e794f104a482b1a3236212b3728 +2e372d2d342e3d5700000406070609070707090a0d0c0a0e11110f101110 +16161513151a1d1c211d1a17141214182016141c1c131017161919161314 +171920181f251d191c190e19191c191a1316181d231920232e2c1c1f2123 +222123272520272a1f1f231c18131211100805060707090a080809090909 +090a0a0a0a0a090908090a0a0906040509090706090a0707090809090b0a +0a0807080a0b0c0c0b0a0a0b0c0c0e0b0a08060606060909080709080a0a +0b0b0e0f0a00818a3a3641472e846250379bbbb4b8b2864449979b9a9b9e +722f40837c818289523247726f646e7745413f65887f79765f625cc7975f +7bb5743087e87d6c8aed673894e1966541e93a35aacb90748d9d32237ed3 +c3647c9b2d3d4450404e3f3945352730424d3f442a3a328fb9533c3f4c57 +6ac799554f534a50587578535352554e5355535d524656565c4a535a4d4a +4e4d3f3f27131f2b2c112ae9edaa5f7c280c00181a150500170e4b331618 +0f0013e5663312160f08326e450e20121004606a5f1e2d2c2a3da9583b44 +393e3a403f4b4c4f474c434a414f3fb9d26565cc7dd3b4683c08213c48be +b2563b54d0535966b784021b5e5220091521313a6c543232324d4d4b5040 +3b494c5c56554846494f516264595d62645f735d6f606a694e95718c8a82 +438e707d40a89343529b4f124dd3841952ac670814954a00459aa5185291 +2c004c7549004e140c110f141119202f2e2a2d2e325c32332e3433415e43 +3b3f3a4538433b3766cb8589641848d96e2c607d5f73726a71736274836b +81707f887589797a818177868da1818e93892928292b2c29292a282a2c2d +2c2c2e2f312f2a2627292d2e383359d8ebefd1ccdfe7decdc4e1dfdec1b6 +e1deccb7afd9d6ce9ca4d0d2ad87c3bdbf6890b29257687b6c4f5d6b5a58 +6d64656d6666736a678419161b181c1c1d1d1f2024262829282b2f303031 +31313736333134393a383d3d3e40403f41443c37373c3c3635393a3b3c3c +3b3a3c3b3f3a4951433e4440464944464c4f474449484b3f433f44404d4b +484646484d51413d40403837383134302d2c27211b1b1b1b1b1c1b1b1c1c +1c1c1c1c1b1b1b1b1c1c1d1d1e1d1c1b1a1c1e1f1e1c1c1c1b1b1a1a1a1a +1a1a1b1b1b1c1c1d1d1d1e1d1d1d1e1e1e1d1c1c1b1b1b1b1c1d1d1d1d1d +1e1e1e1e1d1f1504c3aa3f2b374734927b62485a35373a424b50544c5147 +475c584949463f503e39403f313f44433f3a2e3e3056625a4e8badaf96f8 +ed86ffee8d538afbf97cffff723c8dffd8c2fffc222e84fcffa4c4d03121 +e7ffc297adcd4f56475364613c402a452a4152471a0a06103a82c1583544 +2d2868af996545403b395a6a554741342b322c2d1e2521221d1d1f20261c +292f3a55525d41424b483c343fff9e7132463a7a483027150d131f337b3e +221d1b1a27fe944f28211c15327e5225260d1611737d602a37312c42644f +3e2f31302a2e2a37373c38424540373f48bae88191bbc9ce7e332d88b9a2 +aeb48434240d3701d0a786ff4310455e653e43625145694d363c3e4d3a37 +3a2b283539433d4f4440434f433f4237363d322a3d3d273325324fca97a2 +844073be999c359aa24c93c0a55049869e38a9cfae2f2f702c22e2dcca24 +2b4024458a9c7d2b7036270c1508285349382f222527385b302f20212137 +473c3a363136312b33384cffe486b45d88eefe8a4db19cb4afb0b394a5b3 +a4b3c0d8c7c8c3b5bda5a3d2bcb4b4b7b4a1d0ab1c1b1c1e1f1c1c1d1b1d +1f201f1f21232323222020201e1a1d173cbcd2d9bcb9ced6cdbcb1cecccb +aea3cecbb6a199c3c1b9878fb9bb946eaaa4a851799b7c415164573a4856 +4543584d4c544c4c565156780c090e0b0e0e0f1010121315151616191d1e +1e1f1f1f2423201e212627252727282a2a292b2e2621212626201f232728 +2929282726252924333b2c272d2930332e303639312e333235292d292e2a +373532303032373b2d292c2c2423241f24201d1c16100c0c0c0c0c0d0e0e +0f0f0e0e0e0e0d0d0d0d0e0e0f0f100f0e0e0b0d0f100f0d0d0d0e0e0c0c +0c0c0c0c0e0e0e0f0f100f0f0f0e0e0e0f0f0e0e0f0f0e0e0e0e0f101010 +1010111111110f161106c5ba645a6b7451a8947b5e6e494e515d6970726a +6c61617676686b69606d57566a7168716c66676a687c6c8d928980c4ede7 +b3fff588fff2a16d9efffb77f8fd8c5990f7c8b3ffff2e3a82f5faa2c4d2 +3122e6fdbe93add7687c7781887c4f554c6741556f6a433e494f62a1e480 +637e797098d3bd8d757f89838a97928c887f7a8583867b8581827a797b7c +8379827e777a5f5833344342393138f98b5a172b1f663a2a2a1c161b212f +713621201c1925f98d482119140f2f7d5427280f18157a8b74455b5e5c77 +998471666e716d716e7b7b7e78807f786e7378d7db6787b9c7c87226227c +a99099a4803f412b4503c79c7fff47184f6e7e61759a85779c856f7a8094 +828285777481838b8190808392a18a868e868a979788857c6c7f75787ce0 +929377376cb589892287923e87b498433a778f2aa0c8a52523642014d3c9 +ae0b2038113180926e1f6e3a2a10170a29564d4340373e4354784a4e4248 +4c65736962605d6867625f5a5dffd96e953c6cd8f08244a283948c8c9376 +87948594a3bbaaaba698a38b89b8a29795969380b18c1615141617141415 +1315161716161817161515121617171314092aa4b3b2918ea2aba29187a4 +a2a18479a4a18d78709a968c5a628f916b45817b7e285072531a2f44381b +29372826392e2e352b2b36323a5e000006050b0b0c0a09090b0b0e0f0c0d +111210111111161512101217181619191a1c1c1b1d201813131818121115 +18191a1a191818171b16252d1e191f1b22252022282b23202524271b1f1b +201c2c2a272525272c30221e2121191819131511100f0e0805050707090a +080809090b0b0b0b0a0a0a0a0b0b0c0c0d0c0b0804060809080608080808 +09090909090908080809090a0c0c0c0b0b0b0c0c0e0b0907060606060708 +080808080909090b0c0f05009e8d3b36474d21776a54384b2d32343e474b +4e46493e3e5354464848414f3a37464b404b49454444405346666a5f5b9b +bbb895e9ce61e4d77c4885ead34fe1ea733d73d9a692e3e5182673e2dd7b +92a31710d2e4996e91bc48554f5a625931362b46253a514a21181e243f81 +c35d3e554a4070af99684d505550606e68605c544d5956584c5551524b48 +4a4b564c54514e58454528293834281e25e57c4c0c22165d311e190a0104 +091658210f0f0a0510e37a36110c07011e693c111a020a04687259263737 +344d6f5a483c4446424645525458535b5953474d52b8c8566c9397984a06 +106c906c6a735317220f2e00b68a6cea300036546143527561547b624c55 +5a6c5c5b5e504d5a5e655a685a5a65715e5a605659635f53574f3d4e4246 +53bc7472540e428c6568046971195f8c75232362780d799c7a01094e0800 +b4ab96000c2500195d6e4f075f2b1500010017453e332e24282a3b5c2d2f +272d2e414f423f3c3c45433b3c373de4bd56802957c1d35e1d795a6d6668 +6d5265756675839b8a8b8678826a6897817776777461926d272626292927 +262821242728282a2d302c2b29222120202129242e90f3e9dfcbcee8e3d9 +c1ccdbe3d3b2c8dbd9c8a3c1d8cfc07dc9c9c483a4bec38069a38b5e5370 +7356566961566f69646c696a7c776c8d20191b171817191a1c1d21232628 +292c3034353435363433313035393a3837393e42423e3d3e33393d3d3d3f +4142413f3d3f424445444638404b46474a41484c4b4c56554d484541413a +424048464746433f3e4143464c443d3934343431302e2b2925201b1b1c1c +1c1c1b1b1a1a1c1c1b1b1b1b1b1b1a1b1c1d1c1c1b1b1b1f20201d1b1a1a +1b1c1c1b191919191c1c1c1c1c1c1c1c1e1d1d1d1e1f1e1d1e1f1f20201f +1e1e1d1d1d1e1e1f1f1f1d201506dca9402a2f503a8377535c4c4e463e46 +4539465553524f534c3c475149515a61524a3e41433a2f39412b224f675b +6669634874add0aabba457663e36be82948638612b83ffd65240323d3217 +9493eebc1f2a4c698be3dd622165634b66de1b9497e2f1252f26030f1a16 +4d9095483835363f509a844e3d4435336b8d5e3c302d3733252322221f25 +193c3219192e1a2a314c5150273c38383d6954cf1e202077a1a94d281e18 +0e0e2e5270371c14191446ff722b211b1e1e307646251713191366855d2a +2c2e2d535a593e303a3a3537303733363e42483946422944759e967de7bf +b03037a19583dbbbad321f105364ec491c91111d473731292c1a2c212d2c +1f29272318171a171c2523232e514b3725343e4e49483a34374a49465043 +40434c728d5a8054c0b19f62325fa270c7a0a153334f6528a2a3901e2752 +4d94a29caf21373b2d3198906735452c0d2791a24d3451311c131a1e2e3d +281812161b3034323632353131313e411f8dffa79e4fcdc5e1d143a6a5ca +c3b0b7b4c0c0abc9b6d8cad0d4edd6fec2adffeceaffe1f9f1cf1a19191c +1c1a191b14171a1b1b1d20241f1f1d1a18191714170c1170d4cfc9b8bdd7 +d0c6aeb9c8d0c09fb2c5c3b28dabc3baa966b0b0ab6a8ba5ac68538d7548 +3c595e4141544c4157524b534f4d5e5e5b7f130c0e0a0d0c0b0d0d0f1012 +1315181c1e222322232421201e1d1f2324222123282c2c2827281d232727 +27292b2c2e2c2a2c2f312f2e30222a352f30332a32363536403f37322f2b +2b242c2a323031302d29282b2f32383029252222221f201e1b19140f0c0c +0d0d0d0d0e0e0d0d0e0e0d0d0d0d0d0d0c0d0e0f0e0e0d0d0c0d0e0e0e0c +0b0b0e0f0f0e0e0e0e0e0f0f0f0f0f0f0f0f0f0e0e0e0f100e0e11121213 +1312111110101011111212120f171108e1b9665c657e579b926d70647172 +6a76786c7684807d787e766b778177797c858081797c766d68788874648c +a299a9aea87c83acd1a7af9e617a5245c17b827d4a752b78fcc9473a313e +2e108a8eeebe1d24456182ddd9663080886f79e71b96a5f2f92d4143263e +585372afbf786f77898d87c4ad7b728685809fbda38b7f7f8a897e7f8284 +818779998e767a8f777c727865531f3234363e664cc20d0e095d86933c1e +1c1c15133050682f1a161a1344ff6d261b151a1c31794b2d201e2620759c +7a4f5a63669097987b6f7d817c7e777e7a7a82848675807a5d666d898d79 +dfb4a1212b988773c6a9a1322b1d545ee03d17941d31645e6262705c6252 +60635b696b6b626368656a736f6d728f837370817e8c8c8d7e808d998074 +8a888c887c8d8e51784fbdae955729599a69be97974a2b475f239d9f8818 +214b468991848f062f361c1d8880522446330f258c9d4a3253382a28333a +4c5b4536343d465f625e5e5a5e606765675f2a89fe918132b2b0d6cb3b98 +8eaa9f8c9697a2a28dab99bbadb3b7d0bce4a893eecfcbe6c2dad2b01413 +1114141211130c0f1112121417180f0f0f0d0f0f0e0c0d00015bb8aca08d +91aba59b838e9da59675899c9a896482988f7f3c88888342637d83422c66 +4e231c3a412424372f243b332d342e2d3c3f3f6500000604090808070606 +080a0d0e0e0f12161716151613120f0e1115161413151a1e1e1a191a0f15 +1919191b1d1e1f1d1b1d2022212022141c272122251c2428272832312924 +211d1d161e1c24222625221e1d2024272d251e1a16161613110f0e0c0c07 +050508080a0a080807070b0b0a0a0a0a0a0a090a0b0c0b0b0a0a07090a0a +09070606080909080808080809070707090909090c0b0b0b0c0d0e0b0b0c +0c0d0d0c0b0b0a0a0a0b0b0c0c0c0e120500b98c3f374157276b69484d42 +504f46504f414c5855524e534e414f5952565b6159574d504d443f4d5c49 +3e6374687d7f724b6690a97e95843e55372696516a6c345c0f5ad9a72b22 +1f3022006f68bc8f0416334a61bbc04f135f664b59ca037e8bd7e2182927 +081a2f2a518f9b504549555b5d9c85524656504a7193745b4f4f5c5a5050 +54555256496a5f474d624a4e48554a40122829292e5339af000000507d88 +32120f0b03001b3b531c0b080a002fec5a130d090e0d1f6434160f0e140c +60805c2d33393b646d6d5144525552544d5452535b5e5f4f585336455874 +7054b1867a041b876d51997979101309444ed22d047f0516463f423f4b38 +42344143394646453d3d413e434c49484d6a604f47575965636155525c6a +594f615b5d5b566a6f305427948572370c39753f936e732b143247037572 +610009382c6d75687a001a220a05675e37103823000c7689392345281915 +1d21323f271a1b22283d3e3a3b373e3e433f453d0c6ee47a6f209f9bbaa9 +167165847b68737580806b8977998b9195ae99c18570cbadacc7a3bbb391 +1c1c1b1b1b1c1d1d1e1f201f1e1f212421242522202323253c33304bc4ef +eed7c6d9e7dcd0bdd7e1ddc1a9cee6d3b2a0d6d1cb969cd4bcaa75bdb5aa +54868d6d4e617260546666576d6c636d6f6f87866b85221b181716171819 +1a1c2022262727292e3334323234333535363b3f403f41424547443c3735 +3943474240434543413c393c4044494b4a40434743454f504a56615f675e +5a5763564d3f413a3e3d3e4244423f3e3d3c413f3d3e3f3e37322e2d2b28 +24211c1b1d1d1d1c1a1a1a191a1a1a1a1a1a1a1a1a1c1d1d1c1b1b1c1f20 +20201d1c1b1a1c1c1c1d1b1a1a1a1c1d1d1d1b1b1b1c1e1d1d1d1f1f1f1e +1d1e1f20201e1d1c1b1c1c1d1e1e1f1f1f211708efa3442b234b4075744c +5b4d3846403b474c4a4347504b51574b4138453e465b5259403b313b362c +2720324662736d5061839c8db4e5b23d516b2e4f83f5b21b26532ba7d1c7 +2b303051445353b3dfa518413a8683b8af042052432b29b7b5ff5684dd06 +2841282b2d343a818c523f2d2e38428068405840223162774e2e372b3c2a +2c2e24221e2c3b979d3e1b12182b2d4cbb57413e25332f462057199975f0 +f2a026201b1014162c5c6423160d190b77ff411622151827437235130a11 +1a28657a4e3231312a43635132372e312f352e3532333335392b32384365 +7873736bffbab6573d5a6a6ac6b0c54f0f2c0d1758a4ffff4b403d2f2821 +2719221d18271e26231a211810101c2425242b506863483e475c444b4a4c +433e464331373b3a35789f899c72cbc6a43f556c9baab97da4333d434535 +ab99c325294e64c7a88fb51f31396b43a193994035500f9bd791f52b2725 +1a18181515141809152026322c2a38373830293137483136a7776359a876 +57533281a9c4c29b92a1aaa79e9f9ccdd7c0baebd2eafcccb6d9d3c0c0c6 +a3c40f0f0e0e0e0f1010111213121112141814171716171c20212f1f1026 +a0d0d6c4b5c8d4c9bdaac4cecaae93b8d0bd9c8ac1bcb47f83bba3915ca4 +9d923e707757374a5d4b3f51514255554a545252696c5a77150e0b090b0c +0a0c0b0d0f11131416191c21222020222022222325292a292b2c2f312e26 +211f232d312c2a2d2f2d2e2926292d313335342a2d312c2e383934404b49 +514844414d4037292b242827282c2e2c292829282d2b292a2d2c25201e1d +1b1813100d0c0e0e0e0d0d0d0d0c0c0c0c0c0c0c0c0c0c0e0f0f0e0d0d0e +0d0e0e0e0e0d0c0b0f0f0f10100f0f0f0f1010100e0e0e0f0f0e0e0e1010 +0f0f0f1112131311100f0e0f0f10111112111116130af4b46a5f597b5d8d +8e666e676078747280857f77787e787e847a716b776c6c81808e7e796a76 +7773766d74839db1b59aa8b3a586b5e2a22d4e723b5a86ee9e0e3261299c +c7bd1d212449404d47a9dda713392e797ab2a70224615e4432b3a8ff5a8c +dc09375e4d5d707563a4ba897a72858b7daf926f8d82757e96a896818a7d +8e7d838781827e8c98f3f69b80787881717ed5603f382535324514480f8d +64dbda8a14141712181a2d595d1c140f1a0a74ff3c101c111628467a3f21 +1d2832427f99735f666c6985a4927178737a787e777e797a77777a696f72 +7c8b76616a63fba9a2433153605cb19bb5440c2a070f4e9bffff5757625e +5f5e6856544e4a5e596666626b645e606a7273707596a3a3988f8b9a848d +8890958773665d6b797461909e7b8f68c6be9734506793a1aa6e9425323b +3d2ea18db61a21475cbc9473900029345c2f8c7c7d2b36560d95cf89ee25 +2529272b313133323527354351615a565d5c5f5d5d635f61372f98654c3f +91644d4e2e7893a39b7471848c8980817fb0baa39dceb8d0e2b29cbfb6a1 +a1a784a50909060606070808090a0a0908090b0c04060a0a0e1217182614 +031488b1b099899ca99e927f99a3a0846a8fa794736196918a555b937b69 +347c776c17495032172b402e2234342539362c353232474b3c5d02000306 +090a0706060607090d0d0c0c10151614121412141314171b1c1b1d1e2123 +20181311151f231e1c1f211f1f1a171a1e222527261c1f231e202a2b2632 +3d3b433a36333f32291b1d161a191d2123211e1d1e1d22201e1f21201914 +0f0e0e0b0b08060509090b0a070707060909090909090909090b0c0c0b0a +0a0b090a0a0a090807060909090a0a09090907080808080808090c0b0b0b +0d0d0f0c0c0b0c0d0d0b0a090809090a0b0b0c0e10140800cc8743393553 +2f5d67434e443d524d485358514949504d535b5049425145475c59644f4a +3f4a4c4749414e5a6d7e83676e81886a8bb788162f51213a59c285001e4a +107ea399000c163e343d2f85ac78002c20665b9292000d443f24179a95ea +4375ca0020422e3a454b4183935f4e4350574f856a4561523d48687b644d +564c5e4f56595454505e6bc4c86e54494a544859ba4d322c192721330435 +007550cace7f0a080b0409091b464a0a07010a0061ec29001005091a3565 +270a09141c29647a51383c403c577967464d474d4d534c53515250515242 +464a53665d4b4d3ecf7d7d2821434739846e9128001d0002428cefed3f3d +433e3f3d463539312f3f3b44453d463e3739434b4c4a5072838171666675 +5f676367675c52483c47524c3e7082606f44a099771633496e767f47730a +1e2826117d6593000e3545a0795b7d00162049176d5c65182848007bb874 +dc15161a16181b1a1918190b1d2b353f36323b3b403c39403d411b15814f +3a308150342e09516e807a5350626a675e5f5d8e98817bac95adbf8f799c +9682828865861f22201c1d21232026252523232325262a2e2f271f1c1b1d +272e2e3f78e2ecdcccc8dfdfdac1c5d8dfd2aeb8ddd5c69bbdd3c4c27ec8 +bbc470a1aeb8635f877855526b6854646b586b6e636e73708b8b69792520 +171c171b181a1b1c2022252725262a2f312e2e30323639393d4041404242 +4549484645473f434543403f3e3d3a38393b3b3a3f44454547453f3d4855 +464a4f46514d54575548443e474146453f464a47403e3e3d3337383b3d38 +302d2f2e2c2824211c1a1d1d1c1c1b1a1a1a191919191a1a1a1a1c1d1e1d +1c1b1d1e212020201e1e1d1d1b1b1c1d1b1b1b1b1c1d1e1d1b1a1b1c1e1d +1d1d1f20201f1d1d1d1d1c1c1b1b1c1c1c1d1e1f1f1f211f1808f699452f +354a3f6576624f554e4440444841404f535c5754554e4023152a374f5263 +404d3a34292e2e2e395c8972467badafa087968f724532276ca5a2cda316 +2029378adcc2462f3a2c3e2d5bb4be82652d4a67a8bab224624a1f251496 +a8a0002f88003d5e452f2a35326c764a333c302c5e90739fc32c36369eaa +4d333b2e3833352931251e2c22588c151d3c5412293c62282c3325271e35 +3124142146fd93695313170a18272a5763231514201c7fc1341d1d14172e +4c61250d0b141c345f5a393a3839383f69593d3834373538313632333c2e +293c3533345682527160fff7d56936516f8af4f9cc88181738b5fffdff8e +16192c2c2b292f280c0a09181e23211f3023161d272b2f2d1f181e21211d +252522292d2d161197c4bd4f46b927629e7daac2d89cd4783a3dacc6d2ab +ff5c2746e5bbbf92ff5a4270b2b7a7aaff433050ffec9d93ff30133c408f +46126d2923201618101211171a23262f31312f2c3d3b3c382a2a39473c31 +505c4b54654c2431346c9b6e85958a849cbfbec5a1dcebefbccbc3b6a0b3 +c3c0c9ccc0b0cec51215130f10141613191818161616181a1f211f191518 +1c1f201c0c154fbfd4c9b9b5ccccc7aeb2c5cabd98a2c7bfb085a7bdadab +65afa1aa568796a04d497364403d56533f4f564353574a5556536d71586b +18130a0e0c100d0d0c0d0f11121414161a1f1f1c1c1e1f232626272a2b2a +2c2c2f3332302f31292d2f2d2a292827272526282827292e2f2f312f2826 +313e303439303b373e413f322e28312b302f293034312c2a2a291f232427 +2b261e1b1f1e1c1813100d0b0e0e0d0d0e0d0d0d0b0b0b0b0c0c0c0c0e0f +100f0e0d0f100f0e0e0e0f0f0e0e0e0e0f10101010100f1011100e0d0e0f +0f0e0e0e101110100e0e0e0e0d0d0c0c0d0d0d0e0f1010101114140afcac +6e636b7a5c7c8e7a626d716e6c7278716d7a7a8177747572664d45585b71 +7c93798873716c7a7d7b7993b7a486c1f3dfa7809c92612c211c67a4a4c9 +8f0627353381d8bd371d261f3a2a4ba5bc8360233c5a9fb1a7195a4a2d34 +168e9993043789045481726b7780669aa9837184898199bf9ecef86c8780 +cfd99181897a8480837c887d79877bafdf6e84a6b769727283372e31292e +25362517101d3fee82574309130c1c2b2d565e1d1616211b7cbe2e171910 +1530506931212b3a435b8683676d6f74777ea6947672777e7c7f787d797a +80726c7d7671718086446856fde0bb542d4e6980e1e2b574080a30affff6 +f98819284a54595759503838394d566264667a6f636a74787b7d756d686e +807c726d6c7171756c5ec4e0d76b6de0446f926490aac58bbe642f339cb0 +b68de0401134d4aaa878fa422f60aaac928adf22274df0d68476e3161342 +3b853a0561222022212b292e2f35374146525c605e58625e61615b595e5f +3f2a46503a41543f1e30346787505e6e69677ea1a0a785c0cfd3a0afa99c +8699a9a6acafa393b1a80c0f0b07080c0e0b11100f0d0d0d0f0e0d10120e +0c0f14141612020739a1ae9f8e8aa1a19c83879a9f926f799e96875c7e94 +84823d877c853162727c28244e41212039362434392637382c3636334b50 +3a510503020b0a0e09070706080a0e0e0a090d1213100e1011151717191c +1d1c1e1e2125242221231b1f211f1c1b1a191816171919181b2021212321 +1a18233022262b222d2930333124201a231d22211e252926211f1f1e1418 +191c1f1a120f100f0f0b0b08060409090a0a080707070808080809090909 +0b0c0d0c0b0a0c0d0b0a0a0a0a0a09090808090a0a0a0a0a070809080605 +08090c0b0b0b0d0e100d0b090909080807070a0a0a0b0c0d0d0d11120900 +d67f463d47522e4e6a58424b504a484b4e47424d4e56504d504c41271d31 +374c54694c5a4845404c5051566c8971548db7ab88647065451605005188 +759a7600151f1a62b2971a091d172f1b34848c574a172f47809293074732 +131700778680002077003a6351454b55407580564252514a6b9573a2ca3a +4f4ba2ad5e4d574b565459505d534e5b4f84b5425778893c474e68222025 +1b1e13241504000025d97249360007000d1a1c444b0d0809130969ab1e07 +0d0509233f5419081321283e676142444546484f7a684d494c5252555055 +5152594b43554c48475a6b2a4b32d3b698391c3d4f5db6b8955c000125a1 +f1e6ea78061330393d3d4138211e21313b434544574b3f46505457584e46 +454a56524e48474b4c4d3f34a5c7be5250c328557c4e778ea76da64c1918 +7a898f6bc42b0326c2908855dc2a215393907773cf13163addbf6658cd05 +0734256a24005112111411181417151b1b272f3a403e3a34413e42413b37 +3d3f24102d3a2832442c06121241642e3f514a475c7d7c83609baaae7b8a +8477617484838c8f837391882125231c1c2426221f1f1f2124282c2e262a +2d251d1c1c20223039423ba6ebe6d6bed2e4d8cfb0cfdbd6c9a4cad5ceab +9dc9c5c7899bd0be977daba680437670604b666d56636e596a706370736e +8889717930281c211b1f18181a1b1c20232428282c31332f2e312d323636 +353637363c3a39393735363a3835373d3f3c3a3c34383e413b333439403e +3a3c3f3c3c42474b5352655e5a5151474848524948443e4548423a3a3b3c +4b4a403734313237302e2e2725201c191c1c1c1c1b1b1a1a19191a1a1b1b +1c1c1b1c1c1b1a1a1c1e1f2120201f2020201a1b1c1d1d1b1d1d1b1d1e1e +1c1b1d1e1d1c1c1d1f2020201f1e1c1b1b1b1c1d1c1c1d1d1e1e1f1e1e1c +1a0bf8924732374549728a84405247485347404d51515653545e55412d0c +1b2d42604b57476a2f33222722293ba0b5694aa2b65c9691b59e85593c55 +83d98d9b8a603834293de3da7942413e29295ab8b881931d404384d0b759 +be7a1d3139891bcd485ffe2c5b5b4638311a37638c5230342e2958a75d5c +6b3434309d764732333e32393032292d25242162c419237da68a2943590a +2e2a262a232b431c1d7639adc30f131c112116213141411f161b1d295151 +280f0f182435403c181e1a2c2925444133373933343048605c4133353235 +2f36353a2e726f50275e5942b157746dffecd19536536bdeedd4cde91429 +181c858a9a97380a15293e25100c05000d18292818162019182b36302d26 +181728231d1526242627282d2b2cd8d2c7f0a3ee3653c17af2f3ff70fa7b +307effdd9e7eff6b3588fff4916fff542685fecf6e64e1321e83ffa46675 +ff67141a6776aac5d34b1c1511180d1c232d162f31302c28312f3b312f2f +32316366354e432f3e512f2324333a4eb0b2f4f1bfb9cfbfc0bebeacafb3 +c3c0b3c3c2bbbde2c6aec7b1bfb11418160f0f17191512121214171b1f22 +1a1e1d1713151c201b1f1b1c1182ced0c0abbfd1c6bd9ebcc8c3b38eb4bf +b99687b3aeb07082b7a47d63938e692f625c4b365158414e594452594a56 +56516a6f606b211b0d130d140d0d0d0c0d0e101117181c21211d1c1f1a1f +23232223242326242323211f2024221f21272926242621252b2e28201e23 +2a2824262926252c31353d3c4f48443c3c3233333d34332e282f322c2727 +282938372d23201f1e2520201d1914110d0a0d0d0d0d0d0d0c0c0b0b0c0c +0d0d0e0e0d0e0e0e0c0d0f11100f0e0e101111110d0e0f10101010100e0e +0f0f0d0e0e0f0e0d0d0e10111111100f0d0c0c0c0d0e0d0d0e0e0f0f1010 +13111207fda57064666b5b7d98924d63626a776d69767776766f6e786f5d +4d324b5d6b89788a7fa56a756e7d797a7bd2db9282e0f2869b8ab89c7441 +274172cd8a97795137372336e1d66b322f3025234aa8b17e8b11303479c7 +ab4cb1742034347d0abe4361ff3a7882726e78616e92c38d6f7c827997dc +9091a678827ad5ab8f807f8a7b827d837b847d7c7ab5ff6586e7ffdb7079 +7a19302b2a312a2e3a1119732fa1b60205120d221a252f3e3b1c141b1e27 +50502610101c2a404f502f3c475f5c5978756a7076727672879d967e787e +7b7e767d797b6caca584598d8864b44e6b60ecd3b77f294c64d1d7bbb2cf +011b0e19868b93903716335064482d2c2f303f4d61655b5d6a656579837e +7b78706f78757c747870727370757c74fff0daffbfff4d5bb461d6d5e354 +db601f6ef6c3805de74c1b72fbde7651e13a1073f4c45946bc13117bfc8b +4b57f64d0e185f679bb8c7451d1e22302b3e454f395154585957605d6459 +585c635e867a3949412a3243211a23373f4ea298d1cca09cb1a1a2a0a190 +9297a6a499a9a89fa0c5a991aa94a2940e100e07070f110d0a09090b0e12 +16160a0e100c0a0d12161115110f016ab0ab998094a6988f70919d988a65 +8b968e6b5e8a8587485a8f7f583e6f6a470c3f3b2c19343b26333c27363a +2b35362f464c42500e0b06100c1209090705060a0c0b0d0b0f1415111011 +0c111514131415141816151513111216141113191b18161812161d1f1a11 +10151c1a16181b18171e23272f2e413a362b2b2122222c2322201a22251f +19191a1b2a291f18151313191313130e0c0a0605080a0a0a0a0a09090808 +09090a0a0b0b0a0b0b080907090b0b0b0a0a0b0c0c0c0708090a0a0a0a0a +080708080606090a0b0a0a090d0e0e0e0b0a0807070708090a0a0b0b0c0c +0d0d110d0500d578463e4446335375712f4341495348414e4e4b4d474953 +4a37280b233543614f5f52773e47404c4c4f58afb26655afbc567b6d8d73 +58290c2960b35d685d3e25240b19bbb04e1b21271c153186855576052321 +5da893399e5e0b1f1e6700ab2f4ced235c63514a4e37476e995f424a4e44 +6ab0656578474e47a87f5d4e4e5b4d555158535a53524e8be33e5ab9d6b2 +48555f04221d1b211a1d2b000054168ba300000601140b16222f2b0d080f +10183e3e1700020e1c303a37132028403b35524f42454a4548445a736d55 +4c5350534c5350534586815e3469644197314c3dc5ab9667183a4ab1b093 +94b80012020a76798380250019354b3019171716243144463a3b473f4152 +5f5754524847534f524a524a4c4c4a4d514ce7d6c4eda6f13344a14dc1bd +cb3cc74d0b55d7a05e3ece380c64e8c75b35c7230265dba83e2eaa010068 +e875303be23c000b4a5086a7b7350d0d0f1a13252a341b363c3e3c353c39 +4237383b433d665e20332a162236160b0f1c1f2a7f77b3af817c8f7d807c +7f6b7072847f7684857a7ea389718a748274181a19181c2220181c172020 +1d252528242626231e1d212726263435395bd6ebdfcabce1d9dabbbacfde +c7a5b2d1d5cc93b6c9ccad78d0b8ba6790a08157527065535e6b5e63715e +6972667282778d89737928231a1f1d1e14161718171a1f2323262a2e3130 +2f2d353033342c2f373432383935343736313230333a3a363b443f3e3a35 +34383b3c394045443e3c4247534e5365545957534f545d554b5f4f4a4b46 +5440413d3839413a3346443135383029251f1c1918171b1c1c1b1a191919 +1818191a1a1a19191b1b1b1b1b1a1a1a1a1d201f1d1c1e2018191a1c1d1d +1e1e1e1e1e1f201f21201c1f2223212020211c1d1e1e1d1d1e1f1b1d1d1d +1d1e1f1e1c1f271bff96483646673c68d0f53a150f574a52525247565d4d +44453d37342f363b49534f503a4b3928247d852e3eb0d06d61a1c579866a +b5c19c8733795271a2b29d39391b3e68fcff5757392d406558dfd0789a0f +585ea8ffff3dee5b1f3629dbf2fffffff51259754e41261f28536e463935 +332d3b5d4e3d2d2d3a2f43463f313337403b2b2f2e252c25174de02c1e3a +872131474b2c3d4f3d3d332c411b20c7cac1c923211c1e211f22261d181d +171e26241a110f0f0d171e1d17192225292b31343330313138362c32333b +4d3a2f2e2f32353737386ae4edf097c0f729ae5da5d1fffcd0731e4fbad9 +e8f0f1e31d252e2716080160ec15231225170515181e252725221e161320 +192a3b3216221d222d2a2828242b2724322c2c2ab2df266defeb5c3ea08c +e5d5a048a13e1a45ffce78628c330f3ee4bb8257a2301535cda7766b873a +2845d0827998f0951e3d9916221b53730a121c202427231f1f2224282c2e +2f2c2b292d272b2f403d2f33403535333724332e34358fa0adb2b09eb5bf +c9a3a09e9aadafacb4bdc9b5a4bdc4c6c6a89fbb0e100f0e1218160e120d +1616131b1b1e1819191614151b1f1a141c171737b5ccc7b4a9cfc9caaba9 +becdb48f9cbabeb57c9fb0b3915cb49c9e4d78886a423d5d503e4956494e +594650594c586659706f606b19160b110f10090b0c0b0a0b101415181c20 +20201d1b211d21221a1d25221f2526222124231e1f1d2027272328312c2b +262220252829262d32312b292c313d383d4f3e43423e3a3f4840364a3a35 +3934422e2e2a25262b241d302e1e1f261f1c16120d0c0b090d0e0e0d0c0b +0b0b0a0a0b0c0c0c0c0c0e0e0e0e0e0d0d0d0b0e11100e0d0f11090a0b0d +0e100f0f0c0c0c0d0e100f110d101314141313140f101111101011120e10 +1010101112131717160dffa971656878395bc5ee391b1e6c636d70726774 +79675d5e5651505465707c88898b748674707ee4ed8a7edef5928fd1f095 +8c61a8b2887321673b5f9bae922d3112335ef7ff53503124375c4bd2c46b +8b00474d9afff832e45419301ccbe2f8fbfeff2f809e6f6355535581a583 +78797b7780a192827576887b888e8c83828588847a82837b8782749bff62 +7b9dcf5d6f7a65353e4d3e3f3a303d1219bcb8b0c11c1813161d21231e13 +1219151f26251b1313181a28353939404b5763696f72717172747b7b7177 +788092817a7b7c7d7e7c767198ffffffabd2ff33aa549bc3fbe5b75b0c3d +a8c4cfd3d0c80e1e27262216035dee2344394633213744505a5e60625f5c +5b6c67788b8367736f7279767879707773717a737068e6ff4084ffff704b +9e7dcfb67d237e1f012ff8b55f4a771f002ccfa56a3f8c1e0426c1996555 +6f211633ba695f7ed57f0d308906120f4c7413253a444f54504c4c4f5559 +5d5f5e5b5a5b615b5f5c6154383848392e262a1b373a433f8b9093949381 +979eaa8583818093959297a0ac97859ea7a9a98b829e05060504080e0c04 +08010a0a070f0f120c10100d0a0a0f140e08120d0b29a6b7a58b7ea19899 +7a7b92a28c68739092895276888b69348c75792854664a23203f311f2c39 +2c313d2a323b2b354133484a40500606040e0e0f0507060504060d0f0c0d +11151613110f160f13140c0f17141117181413161510110f121919151a23 +1e1d1b1415171a1b181f24231d1b1e23302b30423035312b272c352d2337 +272225202e1a1d1916171d160f232110121a15130f0a060605060a0d0d0d +0c0b0b0b09090a0b09090606080808060805050504070a090706080a0203 +04060708080a080808090a0b0b0c080b0e0d0e0d0d0e090a0b0b0a0a0b0c +080a0a0a0a0b0c0d110c0400d97c453b4758183ba5d11d00014d434c4e4d +424e534236372f2a27293b46515c595b445848404badba5b5bc1d6716aa9 +c56c6a4286916d5a09512b47718172151e012145d7df30331c15304d2ba8 +9e4b780037397fdfd816cb410d2209b4cbe4eaece911617e5448332f345d +7d574d4a4d46537263534748584c5b605e5353555a574d565a545e564771 +ef404f71aa3b4a594a202e3e2e312a21320300a0a29cac09070409111315 +1309060d08111a170d050407091621221e2129323d424849484748484f4e +444a4b5466554f4f505251504b4873e9ecec90baef1a8d3378a0d8c59943 +002992a9b0b1afab000e17120a00004ad90a271a2b1a0a1e29333c3f4040 +3d3836454050645a3e4a474b5350515049504c4752494741c2e7256aeee8 +55318768baa26a116b0d0018de97412e5c060016ba8e522775060011a77e +4b3d570b001da5534867c06a001f790003003c62000f20283135312d2d30 +373b3d3f3c3938383d373b3b443a23243328241e24122824241c686e7072 +715f757d8b63635f5f70746f777e8c75667f878b8b6d64801e2122222325 +2523201a22211f252526262724221f1d1f2328333230384089e7e1d5bfc5 +dfd6d0abbfd8d5bc9bccd0d0a78ad1c9b98298c4bb80709d7d614b656b53 +5a6d63606e646b6f667b8d778b8b757c2b291d221e1e1516171617181d21 +1f21262a2e2f30302e2f333632323433373c3e3b3b3e3e39363636353638 +3a3a353738363738383634373b3c3a3b3e4248444356585f565459625f5e +5c545157554c5c544d3838494a3842384c3c382c2925201d1c1b1b1b1b1b +1c1c1b1b1b1b19191a1b1c1b1b1b1a1a1a1a1a1a1a1a1a1c1e1e1d1c1d1f +1d1d1e1f20201f1f222323222221211f1e2021201f1f202120201f202021 +2121231d1a1b1a16181b1d293c34ff8c443e43614e89984e1c262c72504d +4f5655534335343f524f463d4d4b4947474e46472c373c546b24359abd67 +55aab974a552dcffa36e4f8d6250affda24829856b54c1ea773b4a416a64 +47fff570ae2f7c5b83fffe25dc3b293a33ffffffb17662113f4d2618060d +234d4338393c3d373238352d30312e2b3834322c2e39323e2c2b3a31392f +224ee125182ed83b2d4f832645463c453b3238211da37233373045192125 +211d211b14162123201a110d11151d22272521242a2e2b2e3233302e2b2b +2d3232322f32392f2e2d2e303336393c82e97e7aeef9ee3da581e4bc967e +69342341ffd58f5ce5ff2c3046859ecfcdd0f30f0f0b1d2f21342f26262a +271b171a261c26453925141721202a282729252824302d30503c2b5b3946 +23442a308383a9888780996c4165af89686893726285848e697995765b7e +7d8b5e5f88a0839e5f8d43817b654620cb7b8970638b0b312e2a28221e1e +24292d2d2c292a2b2e2e273028332d33393f32342d413f3a282f3a2882b6 +b0b994949a5a7898678992919891b2b39dd7f4b6b8ac9393809e14171818 +191b1b1916101817151b1b1c191a1a18151315171a211c181a1f64c6c6bf +a9b3cdc6c09db1c7c2a984b5b8b89073b8b09d667ca89f665886664c3752 +563e45584e4b564d52564c5f6f5a6e72626c1c190f1310100a0b0c0b0a0b +0f131215181c1d1e1e1e1a1b21242020242324292b28282b2b2623232322 +2325272721232422232425232124282927282b2f322e2d40424a413f444d +4a49473f3c42433a4a423b26253635232c223626221a1b1813100f0e0d0d +0d0d0e0e0d0d0c0d0b0b0c0d0e0d0e0e0d0d0d0d0d0d0d0d0b0d0f0f0e0d +0e100e0e0f101111101010101010100f0f100f1112131212131413131213 +1314141416100d0e0d090b121a212721ff9f6f6d616a4071833f1526317f +60616871736e5d4f4c596c6b65627b808080858c7f7f657f9dc1d78172c2 +db8378cdd788a647c9f3925e417e4d3ea6f6983a18745b48b8e473374335 +5b563affe7609b1c694972fef11ad2331f3028f7fef5976770326b764034 +2f3f527f7d77787d807c7a8181797d7e7b788583837f80867a867e818f87 +948c839cff52738fff6c69809b2e444039433f36341912935d21312e3e10 +1923251f181110162327262019181f2834404b4e5058626b6e7377787573 +727274797979787b827a7b7b7d7d7f7e7873afff998efdfffa42a27bdaaf +856b54200e2cebbf7741c7f320293f84aedfcfcef51d32343b4c425b625f +5f66645d5b606e677293877362656f6c757372747073717d767791765f89 +5e67446547448d839d736a617c532c539971545783645275727952648367 +4f72717f5051788e6e894a782e6c6953350fbb6e7b676090194951565755 +5151555c63635f5a595d62645f685c5f4e4945483d3b26363133303e4d33 +7fa8989d78787c3959794a6c78777e7795967eb8d397998f767663810a0d +0e0e0f11110f0a040c0b090f0f101112110f0b09090b0d15110e10165cb7 +a99880859d938f6e849c9a815b8b8c8c664a9088753e54817a413666472f +1c34391f283b312e3a2e34372b3a4b32464a4252070a060e0d0f06070605 +04050e1009090d11131412120f10131612121514161b1d1a1a1d1d181515 +151415171919161819171819171513161a1b191a1c202723203334392e2c +2f383534322a292f2d24342c2712142524121e142919150e12100d0a0908 +0a0a0c0c0e0e0d0d0f0d0a0a0b0a0b0a0808070705050505040404060808 +07060709070708090a0a090b0c0c0c0c0c0b0b090a0a0b0b0a0a0b0c0d0d +0c0d0d0e0e0e100a07060701050911141203d87241433f4d25556622000e +1a6545454a50514b3a2a283245423b3754565655565d52523a51688aa354 +51a8c36a5aacb3638629abd6764427673c267dca751f06644b329bc24e14 +2925544917d4c4468a0d583358dfcf00b720162614dde6e1885457134a56 +271b0f1c305a554c4d52544f4c53524a4f504d4a5754585152584c585054 +66606b605672ea314864f44e4760811932302a343028290c007a480d1b19 +2c010c1616120f08050a151818120a080e15202831302e343b4243474b4c +49474646484d4d4d4b4e554f5151504f51504b4988e97a72e6efe62b8359 +b78d674d39070017d6a75b23a5d40a172d7094c4b9b9df0312121f30273e +433e3e444239363b48404b6b5f4b383d47464e4c4b4d474a47534b4d674e +39653f4a274628287269875e584f6a3f193d82593b3d694a395c5c644051 +6f52395c596536375f76597435631957553f2100ab5e6e584f7c022f3335 +37343030353b41413e3a373a3e403a43383e333231352c2b1e322e2d2129 +31115e85747853535a1a3a5a2a4c57565d5675765f99b4787c7158584563 +212327292624262a2c252c2b292e2c2c3333302e2b2928292c36343a3a3b +4bc4e1e4cdb6d2d7d9bca7cfd5d09fa0d8cac27fb2c8c5ab6fb4b7975486 +7f674a567256556e6b606c6b6c6f6b829878898d767c2c2b20231d1c1516 +161516171b1e1b1c2022272a2d2e2f35363637353337383c3e3c3c3e3c38 +3537332e3037362f303335353536353238393a3b3d414446454a4954585d +5e6b63654d5e77706a5c6e5e584a5358554f44445e3e403635352e29241f +1c1b1a1919191a1a1a1b1b1b19191a1b1c1c1c1c1b1b1b1b1b1c1c1c1c1c +1d1e1e1e1e1e2021212121201f1e2323242424222120222121201f1e1f21 +20201f1f202121201f1919212422252c272d3c41fc873f3c4a573f8ed86b +5a3e4870312b3132372a2f313d465f504a4641494b474c515a49486e4b27 +153242bcefb874afde8e7571c2ffb56632a1694296f9cf6d3c9f522ec2ff +af704937366360ffff81733a6e7684ffff4dc6563f3e1c381198745b5412 +161f0e151022355463513531322f32393b293443312d30352e2c2a362b41 +2d2a2f2d3b221237e43f2c20d8262e3a7739525656493332341e29ff3934 +3108ad2a2423150d1419191e1d1a15110e131d232e2f2e2b2a2d30313031 +3433302d2b2b2c2b2d2d3a4130292f2e2e2f3133373a3793a62d50ac9b36 +886eac9e7c6372501f44ba8e867ee4fb644e36733f6d5c2d2d2222243234 +3b2e2e2f2d231d1d1b150f2f4741150f1924211a2729222725232b26272f +464b2b4d40383c1f38395b98627e47514e4e4940826158464749445e869e +67583561404a7573514b445f2a5074656f937471331bfb0c9d6e0cfe5834 +3e352a201c1f282d2a2b2c292b2d2c262830202e303c353f31394c303922 +302e374280aad7b69194c6bfb1e8dfafeeffd6cedeffafcac9aaddd0ede4 +ffe917191d1f1c1a1c20221b22211f24222226262624211f1e1d1e262024 +1e1d2aa4c6ceb7a3c0c7c9ab96bec2bd8889c0b2ab6899afa98f53989d7d +3c6f685236435d4140595348555453544e667a5b6c74636c1d1b12140f0e +0a0b0b0a090a0d100e0f121416191b1c1b2124242523232725292b29292b +29252224201b1d24231c1c1f21212122221f252627282a2e31332f34333e +424849564e503849625b5547594a43353e43403a31314b2b2d232223201c +17120f0e0d0c0b0b0c0c0c0d0d0d0b0b0c0d0e0f0f0f0e0e0e0e0e0f0f0f +0d0d0e0f0f0f0f0f111212121211100f1112131313131212131414131214 +15171313121213141413120c0c14171518222324262efd9d6d6c6964357a +c75d543c4a753b3b454b51474a4c5b64817570716f787d7e868b8e7b7caf +a48d7c8a7addffca8cc8f3997263affaa65d2b9a5e368aeec15c278a3f1e +b4ffa7673d27235152fff3705e24596170f7fe3eb84932361a370d8d5d4c +5e2f3d482c3743607392a190747275747a82877581907e7a7d847f7f7d85 +73897f808483937f7388ff6c877fff57676b8b3c4d4f4f4334332d1421fa +24232c07a7222025201511151c262c2c2824232a364050565b5c60676e72 +74787b7a7774727275747676838a7b747a7b7b7c7e7f7c796ec3d05271cd +bc4d8b68a3936d5262401038ae7f766bd0e857452d7049775a262c304751 +5958635f676f6d656163635d5a7a928d615b646f6d6672716a6f706e7873 +70768788627f6f676b4e645e76a9687a3c45464a493c714a4335383c354d +738b52432251333f6d6b464037521b4164555f8669662b13f20394670bff +664b5c5c57514d50575e60615f5a5a5e605c6068545a51534147383b4323 +2e1e363b45497a97ba957376a59e92c9c292d4f9bcb4c1f090aba88bbeb3 +d0c7efcc0e1014161311121618111817151a16161e1e1d1b171512111119 +151913132195a9a98e789296987d6a939a955f5f9486813f718781672c71 +78581a4f49351b254022213a372c363535362e415633444c4352080c090f +0c0d0607050403040c0d060607090c0f0f101016161617151418171b1d1b +1b1d1b171416120d0f16150e11141616161714111718191a1b1f22242429 +263134373643393b23344d46423444322e20292e2d2720203c1c1e141315 +15130f0a0706070608080b0b0b0c0d0c0a08090a0b090909080808080607 +07070808090a0a0a0a0a0c0d0d0d0d0c0b0a0d0b0c0c0c0c0b090c0b0b0a +090a0b0d0b0d0c0c0b0c0c0b0a04040b0f0c101818150f0ed56f3f424746 +1a5fab423c27356123212a2e34282b2b39405c4c47464a5458565d626755 +5687765d4d625dc8eeb472aad277534691dc89400f804a1c62c19e421479 +2e0797dd834623171c432fd6d2564d16484c57d9dd1f9e38292b031b0077 +4d3946111e28121c223b4c697865494749474c5458465362504c4f555451 +4f56455b51535b5c6b53465def4b5c55f439464b72273a3d3f3524252308 +0ce411111900991714181008080c1117191614101016212a373b3e3c3c41 +45484b4e51504d4a48484a494b4b585f504951514f4e50504d4c449bac30 +54b0a1316c48847550384929002298685c4dafca44361e5d315f45131817 +28303c3c4841464c4a413c3e3d3733536b663a343d48463f4b4b42474745 +4c47454c5d5f3b5a4d45492a403c55894c61262f2f3131235d3830212329 +223b627a41321341222d5856322c243f082e54454f7557541800e1008557 +00ef4f31403d38312d30373e3e3f3e3a3a3e3c383b43303934392b32262d +3a1d281528272b285a7698724d52847f73aaa272b3d89b93a1d0718c896c +a195b2a9cfac232225292823242a29212927252a27252624211e1e1d1c1a +26242f372c3b366dd6ead4bcbaded1d3a3afd9d2bf84c9cdc7a881c0c4c9 +7887b1a35761826b554e735e546c6e616d6f6c7471829c7a8a8c757a2b2c +21221a19151515141515181a1d1c1e1f23262a2c343b363136333039383a +3a38383835313637343031373631343636353537383637373737393d4144 +4247515a55545b645b6a626e6970665356636c64626358484f514b3d3438 +2c22231f1c1a1a1b1c1c1b1a191a1a1b1b1a1a1b1b1c1d1d1d1d1c1c1c1d +1d1d1d1d1e1e1e1f2021201f1f2020201f1e1d1c1e1f2222232323222323 +2322202020212020211f1e1e1f21201e20242727282833333c4ff6823d3a +3f5f4349a0484b50695e1f242c26262d383f4f4d684d46454c4c483d4049 +76728d5139242b3454edf2f4f7c3f893ac59d2ffb43e33455c55a9f9a64a +31474f51d2ffb73040314f8786ffff333c303a8292e6b944c0583a38268a +7fdbf4e3b8000f181e302b3130393c676a5b403533333a2b2e3b2f342b33 +32322a303c472d2d282f452d1b2fe2421f2ad13f3f6c84284546544f3e2e +43453c996d472d2c681f201a0f0f1a1914131211141921292f3234312d29 +292c2d2a2f313332302e2d2c2d2a2d2a3d452b292d2d2c2d2e3034374948 +3045320f293989a158586364c6815b736f58505d9a64712d24660094ae5b +622c3a37282f362e222a2b1e16181c1936513b1a0f1f1a1e261e31322429 +2b262d222b2b272c3a403f292a3336394a876968504342461e2976525753 +44431b2f5f4c43503e4713386d3e454836310f4b642832232332270be289 +a8ffbaf39e313b352a221e2228282e2f312f33363229232f32261f263b50 +2e183e1a282b8d6f754158a1a2c8b3c2afadb6b4aa909f8d80a6a78c9ba5 +a787ada6ac93c0b019181b1f1e191a201f171f1d1b201d1b191714141413 +12101a161d2314201850bbd2bca6a5ccbfc2909cc6bca86db1b5b09168a7 +a8ad5c6b97893f4a6d56413b5e493f57564a5656515a54667e5d6d73626a +1c1c13130c0b0a0a0a0908070a0c100f10111215181a2027241f24212029 +252727252525221e2324211d1e24231e202222212123252324242424262a +2e312c313b44403f464f46554d59545b513e414f574f4d4e43333c3e382a +21271b1215120f0d0d0e0f0f0e0c0b0c0c0d0d0c0c0e0d0f101010100f0f +0f10101010100f0f0f101112111010111111100f0e0d0f10111314141515 +16161615161616171313141211111214131113181b1b1c1e2b27263ff899 +6c6d616e3d39923e454d665c222d3e3d404c57617173907a75757b7e7c75 +7a83aaa4be8f8e878e8a8afffffdffd6ff9aa54abdfca4342d4154499ae8 +9235182d383bc1fea9212f1e397173f1ef22271b236c7cd1a633b0482d30 +288f7fd5e1d6c2153844455d697879807fa8ab9e857d7c7c86777b887c81 +788284857d7f848f7f837d859d8a7c80ff717789ff70789b962a3e3a4846 +3b2b3b3b358e5c372a2d641b2022201f201f20282e32343b434c555a6162 +6363676d727176787a797775747576737673868e76747878797a7d7e7d7c +867f62735e3b565a8f9c514e5555b774506b675046528b56662418600599 +a7535f3a5f69575e6c6a647071665e636765819c86655a67626671697978 +6b707371786d7472686972746e565960625e679a7268493c3d45232b693f +454338370f224f3a313e2e390a2f64353c3f2a25033f581c291c1d2f2408 +df86a5ffbbf8ac45595a55514f535759646564606265645f5b6766523d3a +44553116360d1e27947b7f444d8a84a693a18e8c97958d738573668c8a6f +7c8686688e898f76a393100f121615101116150d151311161111110f0c0b +0a0906040c09111808150e40a0b0967d789c8f9465729e957f4385898668 +407f8085354472661d2a4e39261d412a20383a2b3737333932415835434b +4250070c0a0e090a060604030204090908060506080b0c0e151c16111613 +111a17191917171714101516130f10161510151717161618171516161616 +171b1f221f242e362f2e333c314038443f463e292c37423a383930202b2d +271b12170b030a0906040506070908090809090a0c0909080a090a0a0a0a +0909090a0808080a0a0a0a0b0c0d0c0b0b0c0c0c0b0a090808090a0c0d0d +0c0c0d0d0d0c0c0c0a0d0b0d0e0c09090a0c0b080a0c0f0f10121e170e1e +d06b3e444051231f77232f3a574f111a2823252d3840504e6b534b4d575b +5850545d86819e6a6459626570f6ede8efbae879882da2e18a1913283f2f +73bd711a041c2624a3dd8600150d2e6352c8ce08140a135764b488179938 +2423107165bdd0c5aa001823283e44504e56547d8072584f4e4e57484d5a +4e534a5356574f5056615156545e755e4f55ee4f4f5fef5257797e152c2a +38372a1c302f227a4c27191d5810141510121615141517171c222a343c3f +4442413d404346454c4e504f4d4b4a4a4b484b485b634b494f4d4d4c4e4e +4f4d5a553c4f3b1a373b737f35333b3ea2613e5852392d366e3b54150a50 +008395404c214046373e4c48404b4c40383c403e5a755f3e33413d404a42 +535343484b484d4249483e404b4e4c37373f3f3c487c5750362929300c15 +5931373428270012402c2330212c002053242b2e1a15002f4a0e1a0c0d1e +1300cc7394eea9e4952c3d3b37312f333739424343404245413b36424231 +21212f411e072b04151c846566272f6a62836d7e6d6d78766d536452456b +6a4f5d676749716b715683732420212628242326221c2424212622212926 +23222225242525222b302b34332da8e4d6c6b1d5d2d4bc92d8d0d0a492d4 +c2c97ca0c1bc9964a2a56b4d77725f4e6d6759696e647270697f7b7c9a7c +8d8975792a2d2322191715151413121216171e1d1e1f23272c2e31393330 +34322e3738383837373835323b3a39383837373835373837383b3c3b3a3b +3b3c3d41474c4d455969645e5e4f5a585a684d767473796d5f656b6c635b +5158424647444e40332f2a252321201f201e1d1c1d1d1c1b1d1d1d1e1e1f +1f1f1d1d1d1d1e1e1e1e1e1d1e1f20201f1f1c1d1d1e1e1d1c1b1b1c1f1f +21212121201e1f20201f1e1d1f2224221e1d2125222829282f3a3e393e47 +5772f1763a3e436b60528e5058704b2b11191f17143543424642654f423c +37363736352f5555df4122222c3c58ebb960ebf8f998877dcc726132232e +71b7abd4803b496a5c7d9f9b761d482063a7989178213d36518e937ba876 +a7612e3b1cf852060b17dd15282830392e2e262b36303062684221342c38 +33312d3b313534342c2e5d4f2b302d2a34272131e2452430741c4d746a37 +5e6161433a395a4c240a1d1826281d2a261602051517171b171920293237 +3835312e2927282c2c282d2e2f2f2e2c2b2b292b33292c2f212d2d2b2b2a +2b2d30363b4a4e41343d343d76b2a4634849515b41318851546a687d7421 +1b6d7affffffff662d2d2c242826261c1a1c150d1c354c3610131b211e32 +25203535212023202122212c453d233946283637782b59a16044574f3939 +15306f3d343a3b340a45753e463f392c0a69613d49413a2813642d2c2027 +1f2d371a324e31707fb0b81d38342d27252a2c2a312e2b292d32322f3320 +2424274ffafcff91ff2fbbc1f2ddf4ce4dc5d180a6a1b19c9cb09fb5a78f +99a9afa3d5aca1a7ccd0c7b1cac51915161b1d1a191c18121a1a171c1817 +1c191615181b1c1b1b161b1e181e18118cc9bcae9ac0bdc2a77cc2bab98d +7bbda9b06387a8a37f4a888b5336625d4b3b58524252574d59554e625e60 +7c5f707062691b1d15130b090a0a0908070708091110101112161a1c1d25 +211e22201e27252525242425221f28272625252424252123242325282928 +272828292a2e3439372f43534f49493a4543455338615f5e6357494f5556 +4e463f46313536353f3025211c1715131210110f0e0d0e0e0d0c0e0e0e0f +0f1010100e0e0e0e0f0f0f0f11101112131312120f10101111100f0e0e0f +11121414141414141516161514131215171511101418151c1d1c232e322d +353a3f62f6926b73687e5e488448536a41220f1d2c2d2d5665676f6e9483 +7b746d6c7074756f8e8bff7e77848e9290ffc465f7ffff9b7b69b25a5026 +1c2664a795bd651f2d4d3f6385845f083006478d847f68102b213a787b63 +90629551223520fe54010010eb36555b6372767c77787b7171a5ad8a6a7d +78847f7d79877d8286877f7da6987d867f7f8c848484ff777c8cb34f86a1 +793456545136313251451f030d0a242a1b2a2c241d2027272e3c42484f5a +636a6b6b6a6a696a6f757574767778787775747472767e74777a6c787676 +78797a7b7c7b7a838273636c63607fac9c583b3c444f3a2b834c4e625c72 +6b1912677dfffafcff7254636360696e7169676a635b6a8398805a5b6367 +61756d687b7965676a696c6d6a73887b5d6869445455954267a65b37453d +2c30122a622f2730332e043d68313a332f24046357303c34301e095a2423 +19231d2d391e3753367584b9c63455595856565b5d5d67645e5a5c616465 +6b5656504663ffffff8cfe25b3bff9e6f9cd3dacb05c8481907b7d918298 +8d757f8f9286b68d8088adb3aa94ada8130f1015171110130f0911110d12 +0e0d14110d0c0e110f0f0f0a0e120a110d0374ab9988709390947c539b93 +90634f9180883b5f807b5a25656831164340301d3b332333382e3b373042 +3c3b56374648414f060d0c0e0808060603020303070609070708080c1012 +121a131014120f1817171716161714111a1918171716161716181918171a +1b1a191a191a1b1f252a2a2236453e383627302e303e234c4c494e403238 +3e3f39312b321d2324222c201816110c0c0a09090a0a090809090a070907 +090808090b0b090909090a0a0a0a0b0a0b0c0d0d0c0c090a0a0b0b0a0908 +060608090b0b0b0b0808090a0a0908090a0f0f0d09080b0f0c10110e1520 +241f26292741cd623e494762452d6931405c3819030f1a18173b4a484f4b +705c524d4b4a4d4f504a6b69f35d505b656f77f8b351e1ecea7e61509b42 +360c020f518e70944707183b2d4c6a653f0018003c7e6359470017102a63 +634774477f41162707e23c000000d219363a424f4e524c4c4f464679805c +3c4f4955504e4a584e545859514e786a4f59575864585658ef5454639430 +6580622143434126202242350c000000151c0f2020170c111b1a1e272426 +2f3a434b4c4b49464441454848464b4c4d4d4c4a4949474b53494c4f414d +4b4b4c4a4b4b4d4e4f5a5c4e3f48414064928542282b333f2a1b7038384b +445c5a0c03576aede9ecef5c3741433e47484a3f3d403931425b725b3536 +3e434052474256543e3f403e41423d475d5234444b2b3a3979264e8f4726 +372f1c1f011c59261e26282200325f282e27231700554d27332b26140050 +1b1a0f1811212c0f233d226170a4af1a393a3a36363b3d3c45423d3a3c41 +41414632332f2748eceaec79ef19a8b0e7d1e2b1238e913a5f5b6f5c5e72 +62786c545e6e7266976e61698e938a728b86211c1b1f23231f1d1e1a2524 +21252223221f1b1b1d202223232b2727372c322b61cbe7d7bbb3d8d3cba4 +acd3ccc17dbdcdc59b79c5b1b55f829b74525b725f4c656e5b676f667470 +6c8a867a997d9088787b2c3026251a19151413131313161619191a1c2226 +2b2d2d333536383633363534333437393837383637383633323431353838 +3a3c3b383f404243464b52585d55666d6962696171616e886a7b5b55647e +8385737176786e786a5f6140604c423e37312d29272525221f1e1e1e1d1b +1c1c1c1b1c1c1c1d1d1d1d1d1c1c1c1c1c1c1d1e1e1e1e1e1d1d1e1f1f1e +1e1d1e1e1e1e1f1f1f1f1b1b1c1e1f1e1c1a1e2124221f1f2429242e302d +384f5852535e698cf07436363d516e7a5a395e2f301a221c13100c333834 +3833483b36354d38292828284658d8372e331c4648acc54d4ba396957399 +d4be91743841595daac5b39e40387e70a7bfb8a66d5c757283a6afd18c5b +9e6d90b6c7cab37d2e360ac076c5fffdf438362f34322e302d382f3a2d30 +405a3c372d373138332c2f322e2f2f2d6b512a2d2a2525211926df571e1d +6c2a3772b88919253b3f4c655124171a2d281d23291a170900071f282d34 +2625293034342e2a292928282a2e2e2c2e2e2e2d2c2b292927292c262628 +252d292a2929292a2f343f3f30132d203233669a5b435754454f15235c48 +573b36373821260737baedfeff8326273823261922181010151f3347361a +1f3c23223d5c353446412f2d2e2d25262b271e2d2d9ce6f1f0eeeb745a80 +4e544f50352919564f38393b361b01664b3d4e37231e0a6c35413b34321c +107f1e1e1c22191a182c0c2a28240f6deb3f38362f29272c302f29262a31 +342f2c2d292e231c214af50c2a23ffe687e3f43d5aff3e9cbeb6abada3b4 +989eb3a89faeacaaaba696abb2bbb6bba9a5aaad16111014181815131410 +1b1a171b181913100e0e13161a1b1921191725191c1445adcabda29cc1be +b58e96bdb5aa66a6b4ac8260ac989b4568835d3b465d4b3950594450584d +59564f6d6a5e7c60736f656c1c2018160c0b0a090808080808080c0c0c0e +1115191b191f23242624232622212021242625242523242523201f211d21 +2424272928252c2d2f3033383f45473f5057544d544c5c4c597355664640 +4b656d6f5d5b61635c6759505231513f343029231f1b19171714110f0f0f +0e0c0d0e0d0c0d0d0d0e0e0e0e0e0d0d0d0d0f0f10111111111110101112 +1211111011111111121212121111121415141210111417151212171d1822 +24212c444d47464d517ef7916a6d6468727454345829230f1e2020262855 +5f6065657f7574738975696c70708691ff78869882a084d2db5c62baa9a0 +6e89bea8816830394c4d96af9c862a22685a92aaa59359475f5d7096a0c1 +7b4a8c57789eafb4a370253009c374c0fafcff5f6c6d74797c837e85747d +707588a3858079837d847f787b7f8082827fb49a7c837c7a7b7e7c7cff8d +767cad61739fc68411182a2f405c4a1f1617211c1e27291d2220212d3c45 +50605e61656c72726e6a6b6d6f71767a7c7a777777767574727272747771 +7173707874757878787778777c766241594c5e547098563c4e483b470f20 +594552342e2f351f24083abbe1f1f98f4d5f786b726a7369616166708498 +846669846a68809f7b7a8a85737172746e71746e616e67ceffffffffff88 +668347463d3f292117544b34353b361d036649394a33211f0c6e313a342d +2e180e7f1e201f2a2125243a1e3c36321b7bfd57565b5a58585f63625f5c +5b60615e5e615f645545405eff0e251bfedf84e4fc455eff2e829c94898d +8293797f968b859492908e89778c919c999e8c888d90100b0a0e12120c0a +0b0712110d110e0f0c090505090c0d0e0d150c0a170b0f042f91aa987a70 +95918c656f948c7e3a7a8b845a388470762045613d1b2940301b313a2531 +392e3b352f4b453754384947444f05100d0f090a06050202040407050403 +0305090b0f110e1415161816141714131213161817161715161715121113 +12161919191b1a171e1f2021242930363a324249433a41394737445e4051 +332b374f565846444c4e4853453b3f1e3e2e27231e1614100e0e0e0b0808 +0808070506050605060608090909090908080a0a09090a0b0b0b0b0b0a0a +0b0c0c0b0b0a09080808090909090505060809080606090c0f0d0a090e11 +0c1416111c323b35363b375bcb613c45454c595c3c1e481d1b0915120f11 +113a423f4442584d4b4c655346474a4a6370f0565e6e5a7c6abdc645489d +8b82516fa690685019243b36758a7d6c130d5343778d85754034524c5072 +81a8673878426084959c8c5d162000a85dace7e8ef404a484f5152575359 +485144485a7557524a544e5550494c515254544f866c4e56545354524e4f +ef6b4e548d42517ead7000071a1f304b380c0204130e0e181d1214100d18 +2a333c453b3b41484d4d4b4745464546484c4c4a4c4c4c4b4a4947474749 +4c464648454d494a494949494a4b524e3d1d36293d355581422a3f3a2f3a +011148323e211b1c2410150027a9d1e1e979303c55454c41483e36363b45 +5b6f5d40445f48465f7e575565604c4a494a4346474236443ea9eaf1f1ef +e96f506e353931351d140a47422b2c2f2c10005a3d2e3e27141100602630 +2a23230d02751415141d1417182906221f1b0564e53d3a3c3c38383e4241 +3d3a3b40423e3b3d3b4032232143e7001108edcd73d2e72e47e815678071 +646761745a60766b6473716f6e69586d727d797e6a666b6e1c1b1a1b1e21 +1e19171522211c1f1d1f22212021212425261d2720202f252c343b8ee7e0 +cca7c6d7d0c58dc0ccc39d92cebeb874a9b6b6755d8674604a68644c5f70 +5b67736573737093917e9c7c918b7b7b2d3228261c1b1615141414151515 +16171a1c2124282a2e2f35393636373633302e313537383834373736383b +38323c3e3d3b3a3b3a383c3a3a3d43494e51555a5e565f545d6d726e6b6e +65686c7f6c80706a647d8476585c58556c5a6e5537343231323335352f2b +272627272523201f1e1e1d1e1e1e1f1f1e1e1d1c1c1c1a1c1e1e1d1c1d1f +1f1f202020201f1e1d1d1c1c1c1d1f201e1d1d1f20211f1e22222324262a +2d30323939363e4c504a606a6e94e26f393b39704a34534b44452e1e2418 +0c0c0f2d37343631312a2a2b3126212828292c44d4142b1a1c2046a6cc45 +3a6e57876b57a7618f966035676d7c959482897755748978809c81437165 +82967ea1a530786e7675848e7681393226e68bc5d6b46f15342b2f282b2b +2633403e353b5a7838262d2b2735322e48282f2b2f2d52432a2a2c30323a +221ed255151767333242c2ff9874707c6f973e1c1f166b7b450a251c0411 +1c2a4044392f2c2a2b2e2f2d28222224292a2b2e2e2c302f2c2b2a292827 +2926202628292e282828292928292f34354aa7aba9abee8855a3522c3745 +3f41212c5954535555302b201735b4eefffff66c302f1f2d2322171b130e +234043341d0f182b131b292d2626322d262623272e151e302b351e488dca +55319d46466f3c314546331f0062302d2e1f1c0d1481211e24301b0e0d5c +0e261c241e0b105f071f13101b1a252343e2eef1f2e8f24d383832282329 +2d2c2a29344444352c2e2c271e2e200ffb7bffbccdbcfffcd89a34fe6085 +c08fb4b79fa6c99bb0cdb392ab92b2a3b4bfbeb4afcab0d9b4d211100f10 +1316130e0c0a18171215131514131314171a1d1e151d171421151a1e1f70 +cac3b08eaec0b9ae75a9b5ac867bb5a59f5b909d9e5d456e5d4935535139 +4a5b44505a4c5956527573607f5f7472676c1d221a170e0d0b0a0909090a +0a0a090a0b0e101316181a1b232724242726201d1b1e2224252521242423 +2528251f292b2a28272827252927272a30363b3e3f4448404a3f48585d59 +56595053576a536757514e677062464c48465d4e62482a27242424252727 +211d191819191715121110100f100f0f10100f0f0e0d0d0d0d0f1111100f +101212121313131312111313121212131516141313151617151415151617 +191e2124262e2e2b3341453e51585686ee8f6e72628852345148403e2313 +221e1a242f516061656569676b6e756d6c767b7a7484ff5a87848a8189d6 +f46c669a7fa276569b5585905c2f5c61718b8b78816f4d6a806f77937a3b +6a5d748770959a23695c605f6e7a6779342f1fde83bed1bc8c4476777d79 +7e7e737c85837a82a1c18172797773817b7791747e7e827f9b8f7c7d7c82 +87978577ff8d7078ae6e7271d0ff90675f6b64903c1e24186474460e2722 +152e485a686c67666d6f6f7276746f6a6a6f7475787b7c7a797877767574 +737274716d7375767b7575777878777574726c78cfcecacaffa162a8542a +313e383a1d2a57514d4e4c2a2f29203ebceffdfdf0785768657d78796d6e +6661769396856d5d65775d6270736c6c766f6868676e77606a7970785b7c +b4ea7753be635d7d3f2f3f403423056e3835362b281b208d2c262a38261b +1c691429222a26161c6d173128283335414064ffffffffffff67595f5f59 +595f6362605f657371645d61625d50573f23ff7affb1c5b7ffffe2a439fc +5470a57194977e87aa7c93b096758e75958695a09f9592ad93bc97b50d0c +0b0c0d100d0806040f0e090c0a0c0b0a0a0b0d1010110811080614080e10 +0a56aca18b65829490854f808c805a4f8c7c773368757839234c3d291836 +331b2b3c24303b2d383430514f3a57354a4a444f06120f100b0a07060303 +0506080603020405080b0c0e0f10151916161716120f0d10141617171316 +1615171a17111b1d1c1a191a19171a18181b21272c2f31363a32392c3543 +484441443d4044553f51413b3750584a3035312f48384c351a1717141718 +1a1c16120e0f10100e0c090607070607080809090a0a09080a0a07090b0b +0a090a0c0c0c0d0d0d0d0c0b0a0a0909090a0b0c0a09090b0c0d090a0d0d +0e0e10121516161c1c171f2d2f283e423a61c05e404a426e3a1c3a353434 +1d0d1610090e17354240433f423e41454e45434c51514e61f0365e565d58 +6abcd94d45765a7f5638813b6c7643194a4b51686c5d6a58365163505876 +602658485766537b84105648494756615064211e0cc970abbea770245250 +55505454495159574e56759453434a4844524d4963465150544f6d604e51 +555c606b5749e56a474f8c4e4f4fb7ec7d544d59527d27080d0252643600 +1914031a2f4050544d46454346494c4a47424246494a4a4d4c4a4e4d4c4b +4a49484749464147494a4f4947484949484748494554adaeababed844891 +3f1b25342e30121d48403d3e3d1c1e160d2ba7ddefefe0623a4540564f4e +40403a354a676c5c463641533a40505148474f4942423e444c353c4c444d +315697d25c38a34743662c203134261400602d2a2b1d1c0c127f1c171c29 +15090957061e161e19080e600a2319182324322c49e2edefefe5ef4c3c40 +4039373d41403c3b455352443d403e392b352007ec65ea9db0a1ebe9c98b +22e53c55874f6d705d688b5d739076556e55756676818076708b719a7593 +1d1f1f1c1f23211a1c1b2927202322252829292a2a2b2b2c2b292d2b282c +31323f51ced8d6bca5d6d9c69c9bd3c7bd79b6c6c58d76b7aa914774766b +4c5e72515d6f5a697664727574979683a17b908d7b7c2c332a271d1c1716 +1515161617161b1c1e2024262829302c32342d30363235312e3033363737 +3940403c434e4a3b514f49413d3e3f3f413c3a3d454c4d4c4a584f476a58 +4d60516357557a6e6d655f67545d5b636254495e625e5555554c4c494440 +3e3d3c3c3b383433343433312828262525252526222221201f1e1e1d1a1d +20201d1c1e212020212121201e1e1d1c1b1c1d2022242523212224262625 +2a28272b32383a3a3c41464b535958535e717696d16343543f4e60584c4e +4c4c3b21161516182b3e463a333433332f2528262829222a294fd7232d21 +1b2b2e775d3b3871375b7857a068636e3b0c6e877a7d62698098586e776e +6b666b04536474856f6e5b103a859b8389708932233434fffffffff2ee40 +332728212d332c3c313235333e5723382a34312c315b8829332b2f2a2e35 +2b2730291d2f1a1dd15b10145c263443899a52667d7668e7590b0c95b470 +b485b5b0293b3b353b40362928282b2d302e2a2420262c2e2e2e2d2c2f2e +2b2b2b2b2b2a2628262e231c2c2428292a2a29282e343568e7eaedc1e3c0 +41852c2d30252c2b093c5d4081644238210e0e585e367d93c49e38372924 +18171c1a16203d4c36141b1c151d1e221c2323242a272b2e2b313a2c221e +2a25332c250f1f211c283b451c26322c1a14274a1b1f21172014053e1725 +1a2520202a2d2728252b262734221b221a1f1c3425382221272e3b221b33 +38383329242629272c27313e3d2d282e2826161a3210cc752cf3c79aaafe +c5f341ffaa5dc3a78b9ea8aca6ae9ca9b09ca3a4b8adc0b38ebe90a8acaf +a2a1121414111418160f11101f1d1619181b1b1b1c1d2021232423212422 +1c1e231f2431b0bbbaa08cbdc0af8484bcb0a6639dadac745d9f92792f5d +5f5437495f3e485b43525d4a555956797866845e7374676b1c221a18100e +0c0b0a0a0b0b0c0b0e0f0f11131515171c1820221b1e2622221e1b1d2023 +2424262d2d29303b37283e3c362e2a2b2c2c2e29272a32393a3934423932 +5543384b3c4e424065595850464e3b47454f4e42394e535249494a413f3c +373331302f2f2d2a2625262625231a1a18171717171713131211100f0f0e +0d101313100f11141313141414131111131211121316181a1b1917181a1c +1c1b1d1b1a1f262c2e2e31363b40484f4e474c5d5f8add85778b66686a5c +4e4f4845321a182029344e677269656b6c706d686f71777c79807491ff69 +888b898c74ac8b6a6ca5657d875a995e5c683505617a70765d657e97566a +73696560670252626b7a6868560a3279896f75607e3026362dfdfbf8fffe +ff7177787f7a8484778378797c7c87a36f8476807d787aa4d175807d827c +7a817d7a7e796f8a8079ff976c76a767787799984c5b6e6760e55e15199d +af6bb78cb9b93f5f706e6e736f696f7174787b7975716d73797b7a7a7978 +78777676767676757173737b7069797175787979767473716994ffffffdb +fcd755973a3636282e2d0d4060437f6039363026266b6c39768ac1aa5c70 +73797372726c6773909f89676d6e656d6b6e676d6b6a6e696b706d788377 +6e6a71687264543a4c5049515c5f2e32393527274063303438303b2f1e57 +2e3b2d3b363a44463a39373e3b3e4f3f3b434046466051644f4d4c51593f +39545d64645f5c5f615f625b606d6a5a57615e5c48434f23d47524e9c099 +adffcffd49ffa44fae8f6e818a8d878f7f8c937f86879b90a1946f9f738b +8f9285840e10100d0e1210090b0a16140d100f1212121314161716171614 +15130e111610131c969d9579639498865e5b92847a347484844c35796e55 +0d3b3f351a2c4120293a23323e2933343253523e5a34494b444d03100d11 +0a0b0807040407070a070807080a0c0d0e0d110d12140d10161214100d0f +12151616181f1f1b222d291a302e28201c1d1e1e1f1a181b232a2b2a2634 +2b214230233627392d2b5246453b323825302e37362a22373c3a3333342b +2e2c272321201f1f201d19181b191a160f0f0d0c0c0e0e100c0c0b0c0b0a +0a0907080d0b0a070b0c0d0b0e0c0e0b0b090a0908090a0d0e10110f0d0e +1012100f141211131a1e201e1f22272a3236352f38454062ad524963494f +5245383d3d3d2b100b0f151b30474f453f434346443d45464a4e4c534b6d +f2445d5b5a61528e6e4a487f405a683d7f4542501f0051675559404c6782 +3f51584c4b464e00404d4e5c4c4e40001d6373575d47681911211aeceae7 +efe8f151524f544e595b4e5b4e4d504f5a75405547514e494c76a347544f +544c4b524f4e5754495f514ae773434d864553537f8336475b544dd04700 +00859b58a47aa8a82a45524e4f544e444544494d504e4c4743494d4f4c4c +4b4a4d4c4b4b4b4b4b4a4648474f443d4d4547494a4a484647484371eaea +eabedfbb397d23252a1d232200314f327054302a1d100e555526667bb094 +404d4e504846453e3c4764735f3d45464048474a464a46454743464a474e +584c403c453d473d341e2d302a333f44181e292416142d502125281d281c +0b421a26192621212b302727272b2a2c3c2b262e2b3130493a4b302a2d33 +3d231d373e43443d393c3e3c3e37404d4b3b37403a3823213007bc5d0dd0 +a67d92eab4e431ec8c348f6b4659686e68705f6c735f66677b7082755080 +51696d7063621d1d1f1f1d1a1a1d1a1f22212023232226282b2c2a292727 +231f21292b29282f2f3583e3cfdc97b7d5cfc488c0cebf9990c0c0b5639b +a68d5d4a727252567160596f6264797071847e8ca1849b7f928f79822138 +2f2a27201a1a1813100f121516191e22272a2e3034383b3d3b3a3a3b4244 +4444464a4b493c3b38363637393a3838393a3c3c3b3a383a2e4d4341534f +525a7c6958555f627271694f6466627a64654c66665a5e694c565d695158 +474d5a494848474b48484a4e48334040373c3131352c322e302a24282a25 +2b291d2628242224231e1e23221e2621221e272423232323252727262826 +292a2a2c2e292e3e40393c3a4e465c5a42535c556173766f639ad06a2850 +465257474047535e4e102d413a45454449403e4332393742353531322b2e +3254db212e2c202830693533246a6e658f3d60686b632d20456c6368565d +181d2a705d67766931153f606165635b2e191e727778776e52361e3416aa +737674668c71532229202c292f38322e3a3a373933303527353c31373b23 +31272b2c2e312d31332b21281918852c0f0c522a2856d6ef5f746c7c77a1 +3e0b0a60b1213be2f7eb3c4e39304235252c27382f262b2b202222292c2d +312f2d32322e29292b2b29272b28282b2a27262827282828292a30353b32 +2d463e1c2a423653181a151f20170d33361a4e3f3b3d1d1926aff2dcded7 +d6b43a2e241c131d211625494d2a19211917171d22191623252a2b292a2b +2a24282321222423262c2a231f211d242d3326312c2f33366c401f292524 +2829443c1d261d2825234434261b281d22234f311c221a1e2e2e212b2928 +2c2e333736343536262125252c2a2c2c2d36293430252922192b2c285ffe +ffff77db36b6acf3f9ee7841b1a4a5a89fa9a696b588aea6afadbbbed3e4 +eafff7e9e6f2e8d212121414120f0f120f14181716191918191c1f20201f +1f1f1b17191f221d1c1f131665c5b2c07b9bb9b6ab6fa7b6a88377a7a79c +4b838e7646365d5d3d415c4b445b4b4d615654665e6c81647b5f75766571 +11271f1b1a120f0f0f0a0504070a090c0f1316191b1e2024292b29282a2b +2f313131333738362928252323242627252526272929282725271b3a302e +403c3d45675443404a4d5e5d543a4f514d654b4c3650504649573c464e5d +454e3d424d3c3b3b3a3e3b3b3d413b263233292f2323271e2420221c161a +1c161c1a0e171b171517161111161511191415111a1716161616181a1a19 +1b191c1d1d1f211d2030322b2e2d41394f4e36475049556561594c91de8c +59846a6a634c454a515a4a11345052666d707770717869727181787e7e86 +83847b94ff63858f8a88749c605e539998839a3b54575c582213335a545d +4e56151a256b555c6b5e280f3c5d5b60625e321b1c6c6b696863503b2c40 +119d666a716fa2999070817d857c7a7f7977838683857f7d81737e85797f +836c7c767e7e7a7d7f827f7871807f75c36c6e71a472738ee8ee5d6f6171 +70a34c1f1d6db11f3feafcf7567775727e71687370817b7276786d6f6f76 +77787a7674797b7774747676747276737578777473757475777776767573 +726055695d394761597839362c3130281b4243265541384339404dd0ffe5 +dbd0d5c25c67707470787464739a9e7d6b766e6c6c72746b68706f706f6b +6a6d6c6b716e6e6d6b68676a665f5c5e595d5e5c474d44474f589468424a +484a50546c6341483e4a474a6b5b4639483f45497a5d4d544f5566695c66 +615f5b5a5a5c5b5b61685c595e61656362605c6354615f585f564854493b +68fefeff72da39bfb6fffff87e40a8958c8c828c897996698f87908e9c9f +b6c7cdeadacdc9d5cbb50e0e10100c09090c090e0f0e0d10100f10101314 +141312120e0a0c13130f0e1005044da990995373928e83477e8a7c544e7e +7f74255d6a5426153e3e20243f2e253a2b2b3f33324238455a3b5236494d +425300151214140f0b0b08030100050603060a0c0f11141415191b1d1b1a +1a1b2123232325292a281b1a171515161819171718191b1b191816180c2b +1f1d2f2b2c345643302d353846453f253c3e3a5037361f39392e3441252f +37452d35242c3c2b2a2a292d2a2a2d312b1625231c1f16161a1117151713 +0d11130f15130710130e0d0e0e08090d0d08110b0d08120f0e0e0e0e1012 +121112101314141618111525271e211d30263c38202f382f3b4b4c412c66 +ab592c5e50544d362f3745513f03243b38474a4c5048484e3f4748564c51 +50555355506ff13d5a60595a4f7d4240317574617c223e4347441003254c +3f473943020712584248594c17002d4a41434643190505565552514d3924 +1328008d565c605c8d7e6f495751595253574f4c56585557514f52445057 +494f533e5149504e4b4e515759544c5650469c474447804d4c69ced94659 +4d5d5d8d32030051990a28d3e8e33d59514c584b3f4943534d444b4c4345 +454c4c4d4f4a484d504c49494b4b49474b48494c4b484749464748484848 +494a4b3c33493e1b294238571e201c2323180a2f2f1245342f37232530b5 +efd0cac0c3ab41444a4a444c483a4b717553434d4543454b4e45424c4a4b +4a4747474643464342423f3c3d43423d3a3c353a3e3e2c342e3139407c50 +2c35323136385148272d232f2c2b4c3c2e2131262d305f4230373338494b +3e463c3839393b3d3c3c40453a363b3d42403e3c3c4436423f373d322432 +2a1d4de4e4e455bc1ca09be6ede06422876e6364606c6959774a7068716f +7d8096a7adcab8a8a7b3a99321212223211f20231d2223201f20201e2122 +242625231e1b242021272925242c3a294bb3dcd5ba9fced5ca99a4cac3b8 +77a7c6bb78639b8e5e49646d56526f6358706766777277938492a187a183 +9691828c3b3f3e342b281c1c191511101215171a1e2125272b2c32323234 +3535312f333536363637363338383635353637383c3c3c3b3b3b3c3d423d +3e493f45565c5545585f5f5c5c61804e536463545d63616b5b70626a644e +4e5e443b445e4b5b554e5c5c595b4c48444a52474e443f4c3f3f42383e39 +3c383a36352c2b2b2327222a2e2c2a2c2a262d2628212829302825292c2e +302f302e2a243a2e44354236373a40455042514c605b52676f7b64757467 +5dc0cc5930394a594042511d391e3e194b65584c4b4d49524c4a45494742 +44454140393f4163d53c403339354ed7d9e8e6e3ea40774969775b682f12 +505356526f6225143b5059746a4e301b356062745363390b3d726b636f6a +483f2a282ecdaeb2b0b9f5acd34235262e2f2c312e28343732302f392b2b +353c3a323336342b2a282e2e24252b2a2c2310146b200c165c231f5ff3ca +637d687d7251551b1332d8fff8f0feb1413934393934322e2d2433212c30 +3f242135372a2e3d3b2c302d29292b2c2a282c2a292b2a2726282b2d2b2b +292a2e3231403c352f2e382e30352b1e232a2d27244b2e353e24423a392e +316ff0abb3afaabc66452918231317344b4b321a151820121a1d111e2812 +23292b2a2a2c2b272624222325272a2b2a21181a1324323b4c49656a5e43 +3f32738152135a473854868b8da990364d57bb3cdadeb62b4726300f2527 +2633283d2e2a292c3233312c373b2e2725202222292b2c312b2f302f2c2b +1f1b2e334a18172a214549462a271b27273d8da6a38d9a71797590937298 +82a5a7b4b6b0aa99a1ada8a897ae16161718161415181217191615161614 +1516181a1b1916131c18191f201c1b1c200c2f95bfb99e83b2b9b1808bb2 +aca25e8eada2604d84774a354f58413d5a4e435c504e5d56597364728167 +816379786c792a2e2e261c1a1111100c0605070a090d0f12141618191e1e +20222323211f20222323232423202525232222232425292929282828292a +2f2a2b362c3243494030434a4a47474c6c3a3e4f4e3f484e4b55455a4e56 +523c3e4e352f3854415048414f4f4c4e3f3b373d453a4137323f3232352b +302b2e2a2c28271e1d1d1519141e22201e201e1a211a1c151c1d241c181c +1f21222222211c162c2036273428292d303840354240514f435b61705665 +5e4f46b7da795f676a6c4c4a5922371b3e2057797771757c79837f7d7a80 +807d8388898e8d8e859dff768d8f9b8e8ffffdffffffff5980455a664e60 +280942434645665c2213384a50685c402715335f6072576c43154172655b +67654d4d433f31c6a2a9aabcffc5ff858d8589847a7c797380837e7c7c86 +77777e85827a787e7f787c7a7a7a73767574797a7671ae626b7db2716d99 +ffcc657d627770596c382e45dcfffdf8ffbd5e6675807a757a77766d7c6d +797d8d726e82827375817e71777674747677757377757678777473737476 +7878767675756b776b615857615c64695a49494b4a42406546494b2c4848 +5f61649cffb9b2acabca877b75707e6b68809999836d676d776970736774 +7d646f71716e6c6e6f6e6e6f6f6e6e6e6d6c6a615a5c5560686870677e83 +7c65675a919d70337c695975a3a5a5c3ad556e78d95af8ffda5272536142 +5b5e5f6c64796a67616061605d5969716763615c5e5b5f5d5b5e565c5f60 +5f5f4e434c46531810201c444d4b33342a39394a919e8e717d545c587174 +53796386889599938d7c84918b8b7a9112121314100e0f120c11100d0c0d +0d0a090a0c0e0f0d09060f0b0c12110d0c0f13001a7b9f94775b8b928958 +628680733565857a3a2862552914303924203d2f243b2e2c3a31354d3d49 +583e583a4d4f4759101a211d17170d0d09050201050806070a0d0d0f1112 +151312141515110f121415151516151217171514141516171b1b1b1a1a1a +1a1b201b1c271b2132382f1f3237373232375422293a3b2c353b363e2e43 +363e3c2627371e17203b283a35303e3e3b3d2e2a262c34293126222f2222 +251b231e211f211d1c1314140c100b1216141214120e150e100910111810 +0f13161819191918130b21152b1c291d1c1d212830242f2a3c372c414754 +3b4b4735248ca747334352583633420e2b12320e4360584f4f524f565452 +4e565551565c5b5e5c5f5c77e550615e685e67e4e1efefeced3b652c4754 +3b4d160035363735554c1101293a415a4f331807264d49593c512a002a5a +4f46524f363326231cb4949a9cabefafe76263595d5a525350485255504e +4e5848485057524a4950544c4e4a4b4b464b505155504742853c41528b4a +4573ecb64f654c615b414f190d25c3eae6e0eda742454d54504a4c49483f +4f3f4d516348445859484b5855454d4b49494b4c4a484c4a4a4c4b484748 +47494a4a4848494a4350473e36353f373d423a2e3438382f294c2c30391d +3e3b4640437defa2a09b99b36c594e4653413f5971715a433f444d3f494c +404d563c494b4c49484a4a464644434343424244453e36382f3c4649544d +686d644d4d407986581b614e3c58878a8ba68f364f59bf40dee4be355436 +43233b3e3e4b4257443e3c3c3f3f3c38464d443f3d383a383b3a3b3f383d +3f403e3b2c202a263600000500252c2b161a13211f2c6e7763495b343c38 +5255345a4467697679736d5c626c6969586f1818181b1b1b1d21181b1c1b +1b1d1e1e2323242625231d182624252a2c29292f362b2d6fd2cacaa2abd9 +c5bd83b8c5c98786bcb89b4f8687674d5368604e6c6858706e6774747ca2 +87959e87a48397937a8a44373f3022221c1c1a171311111417191c1e2122 +24262d2b2a2f3538343036393b3b3a3b383537373737373738383a3b3b3a +3a3c404341384a48454b504f63585c635f635e615f615d5d664d57715566 +4671564a765c627b6a5e68805f57695b685d555d5157545b634a4d4a4b4e +4a45413a4946453e37323a38353935343536353435373430373437303730 +2f263434343435333635444641494349434444525e595a536f7a625a705a +676d637f807f5bcdc75e372b556d5f444145696a7469844b405a42494946 +41546144464e4c504a48414a4d6dde49483b49404bcfe4e68dd6d6566f52 +665c65632214426d557550612b0d365662627772380f286a406261663200 +20779c5f606c3d211f3553fefffffff2ffb4ed2a3526252c29303e3b3f3a +34322e353433364b5635244031303331302a39672a2e301a10195c1e1a00 +3e2e1d19c086505b43482a1e462819c3f46ac683d4f74c4c382b3936282e +442d3a32321f2e262925273135323134302d2c2c2f302f2e2a29292a2a28 +272a2e302f2c29272a2e2e36302b252529222f3f2d1f38322d39374f8a34 +2e52c3942a3e372971629abfd4f6732d231d2015314546311f2126211d19 +191d1b181a1e1c2226262727282525252423272b2b28211d131d31575745 +eef2f5f0f5a94862fce6f9cbacd45951f8fffefffb8c718bf37af26cf1c3 +42301a2d292a343834413028262b3335322c242d27282b2a353a2e2d2e2f +39322f2d272529272e3f9d88728e888c90744a4c4832353c5eb9ced9c0b0 +b5a2dcd0c2b990989eb596a4ae8ab3b8b9b6aabb0d0d0d10101013170e11 +1211111314141717181a1b19130e1c1a1b20221f1f211e0f1253b7b0ae86 +8fbda9a16aa0adb16b6aa39f83396f73523840554b395753435c574f5a58 +5e8265747d6685647a7a647733262f2213151111110e0a080709090b0d0f +101111131917181d24272420232628282728252224242424242425252728 +282727292d302e25373532383d3c4e43474e4a4e494d4b4d48485138425c +3f50305c4135644a526b5b525c74534b5a4c594e464e4248454c543b3d3b +3b3e3a35312a3936352e27222a2824282426272827262729262229262922 +292221182626262624252527343631393339333434424d4a49445e6b524c +604c575f546e6a6747c6d57c60536e7c684c494a6768787593636284717a +7d7a728895797b868489898d8d92879cff788b8da18f83f7ffffb0f9f56d +744d5b5160652517416749694a5f2e1037545c586b66300d2a6e42646973 +420b2a7c9a5a5b6e493a425665fffefdfdecfcbaff618785828480838c88 +8c87817f7b82807f80959e7a68857a7b8280797688b572747c6f7379a062 +795f96806e55d48a545f41462c2c67513dddfd6ccb8bd9ff697b7b777e7b +747a8c75837e7f6c7c77777272797c767477777574747778777675747475 +75737273737578787674757772796e6863636a6573816956685f57615e74 +ac534665d1ab587a755f8f719cbcd5ff8f5e6e74776a7f91947f6f737876 +74707175737071736a6c6e6c6a6b6c6b6d70716e6f726f695d594f596a8d +846afffffffdffbf6478ffe5fcd0b1dc5e54f7fefbfffa8e7593ff89ff80 +ffdb5f4e3b4f4d515d615d706a666263676964605a67636467666e72645f +5d5c645d5c5e5a57564f4c52a6896b8583898d754e595c4e56596ebabdbd +a6969885bdb1a1986f777f9679879470999e9c998d9e0707070a0a0a0a0e +0508090807090a0a0b0b0c0e0f0d0702100e0f14161313141403013d998d +875f6896827a4174818343427b775d144d52331922372e1c3a34243b352d +3733385b3f4b543b59384e513f57191222190e0f0b0b0a07050305070608 +080a090a0a0c100c0a0f1417141015181a1a191a17141616161616161717 +191a1a19181a1e211f16262421272c2b3d32343b37393435333533333e25 +2f492a3b1b472c204e343b54443a445c3b354739463b333b2f3532394128 +2d282b2e2a25211a2a2726211a151d1b1a1e1a191a1b1a191a1c19151c19 +1c151c15140b1b1b1b1b1a1a1b1a2729242c262c262524323b37372f4a54 +3b3247313d423754524b2298a24a36315869533531365b5c69617e49415e +474d4f4a455a674d4f59575e5c5e5e645f78e554605d6f605cd5e5e992db +d6505d37493f4c5010042f573d5d3c501d0029454e4c5f5a23001c5d2d4e +51592800126585464758311d22374deff0f0f2e0f1acf6445f59565a5557 +625c605b53514d5451504f646e4b39584f5055514b475b8b4d5258464549 +773b4f356e58452fb9733d482c311713482f19bae254b473c2eb4b575048 +514c43495e4756505340524c4f484951544d4b4e4f4d4c4c4f504f4e4c4b +4b4c4c4a494847484b4a48464a4c4950453f3a3a3f39425343364e484147 +41538b342e52c49b3c56503b735a87a9c3ec763e47494d41586b6d58484b +504d4a46474b4946474a4347494847464746474747454748464139372d37 +476b634bedeceee9f1aa4d63f1d3e9bc9bc5483fe3eae8ece5785e7be772 +ec67eec14334203431343f433f50443d3c3e4345413c36413f4043424b4f +403c3b3b463f3f403934352c2a32876a4f6863686c55333f4335393a4992 +9295837578659e928279505860775967734f767b7a776b7c1b1a1b1e2021 +242823242525252729292728292a2724211f2424272c2f2f31383a424045 +b5dacdc68bc6cace938fc7c1b173a3afab67637f73584a656c4f686e596d +7267767a7ea986959e86a58296997d984a36423229271b1b1a1714121213 +17181b1d1f2023242b2a2a2f3639363334383b3b3b3d3d3b363738383837 +363535383b3c3c3f454a4740504f56575a47504e51625d5f51505d5f5a57 +5b576b5e69616b78644f5a5e56544c3d2e555a4f573e493f3c4e526c504e +56425253575567645e535f5755535049534e414548494d403c484d443e41 +423d3f3c443a424b414041464b4c4b4a4b4b5b5768585953635e60606860 +67686368666c66875d6d716f41c1ca643083f5fbf5a7fb36d5d9fef4f5b8 +494b553c45474d758a4d46504f524b48434d4f6fe8404c4443484078474a +415f3e554b3d444c4246170b38505339273e200c4a3b3f563b3e221c4535 +393f3348343b35435d40443d28374e544deeababb3b4f183ee253f292426 +2a274245433635392e2b2e2e2d425f5547553931302f313466c2222c2311 +152664300b144f271624e9834c50616d5f46453f446efb94763fc5ec374a +3e28393d303f3b35222431281e2b2f2b2827282f342e2f2d2c2c2d2e2e2d +282626272827282a2b2f312d2726272a2f241f26241818212f341f35242d +46343d4fdcedcbf2f2a736332c39e3f7ffffffd04f372819284a5d472c1c +1e23211d171f1d1b1e1d253c41474b4c4b4a4b4a424544404249453e2a3f +39292c4b472fd8f9f2f1fbda642dfa7a37a8fffb65322e6dbff4e2656e35 +e9fffffcfcb54822789a94b5a66f26382d24252a2f312f2a3b3e322b2820 +2527342c2d324c3b2f282d2d231f3754807d9acfecf2cd927a7848372e2b +42a998abe8de97a0a993a4b3a8b4bdc8b3b397b49791afb9b39d100f1013 +15171a1e191a1b1b1b1d1f1f1b1c1d1e1d1a17151a1a1d222525272a262a +262a9cc0b3aa6faaaeb27777afa996578a9893514f6b5e433752573a5359 +45595a4d5a5c5e8863727b65866379806785392530241a1a1010110e0b09 +0809090a0c0e0d0f10111716181d2528262321252828282a2a2823242525 +2524232222252829292c3237342d3d3c434447343b393c4d484a3d3c494b +454246425649544c56634f3d484c46443d2e22494e43482f3a302d3f435d +413f47334344484657544e434f4745434039433e3135383940332f3b4037 +31343530322f372d353e313031363a3b3a393a3a484455454640524d4f50 +585057585358565c57784e5c5b5a2fbad88055a4fffffaacff3bd3d7ffff +ffd26c758570797b7ea9be827b857f85868a8b90869bff698990979677a0 +6a6c6d8c66745e4548504c562b1f475954372b492f1e59464357393f2625 +54443e423f57484f454d5e3f43453a567a806afdaca5adaae27cff538d88 +8183857e9392908382867b787a7a778aa49a8b98807c7f7e7a7db3ff656f +6a637886ab746777a77a6760fd855155606c62586e716e8cff987b44c8f8 +547983767e827c8d847d6b707e7a6f7e807c767270767672767574747576 +767570717172737273736e72767674737477786d666d6d64666d7576596b +5559705c6575ffffe5ffffbf67716f71ffffffffffd96764706e7a9aab95 +796c6e7576726e76747275747c9191939594919091928d91908d8d918c80 +667b7565647f7050ecfffaf6ffe7773bf97332a6fffa632d2765b4e9da5f +6933e8ffffffffbf56318aaca8ccbd863c596465616467676562757a6e67 +61585b5d685e5a5e75665c595e5f51445265877c93c6e3e9c48c7980605b +5b545cb0878fcec47a838a74839287939ea996967d9a7d77929c96800a09 +0a0d0f0e111510111212111315150f101112110e0b090e0e111619191b1f +1d1e17157e9d8e834883878b4f4b837b6b2f626f6f2c2e4a3f2419343a1d +363a2438382a3536375f3b48513a5a374d5742651f11221b13140a0a0a07 +06040707080707090908090a0e0b0c0f1518161313171a1a1a1c1c1a1516 +17171716151414171a1b1a1d2328251e2c2b323336232a26293833352524 +3133302d332f43364137434e3c2732362f2d26170a31362d351c271d1a2c +304a2e2c34203031353347443e333f3735333129332e2226292a2f221e2a +2f262023241f211e261c242d212022262a2b2a292a2837334434352f4039 +3b394139403f3a3e3c423a5b3140433d098ca54f2c85f3f3e695ec25c6cb +f3ecf1b54b4f5b42494b4f7990564f59555a5a5c5d645f78eb4760626566 +4f7e4c514c6b4455422d3139343c12063046462a1c381c08463534492c31 +17143f2f2a2f29402d342b354c2d31302237575d4ee69c97a1a0db72ef39 +665c555759516866645754584d4a4b4b465a756b5c6c5651524f4c4f87e5 +424e483b4a56814b3e4b7f503e3ae4703a3e4b584d404e4e4a6aea81642d +b3e03655574651534b5b564f3e42524c445257534e49484e50494e4d4c4c +4d4e4e4d484848494a494a4843464a494645484b4d423c414035363c4146 +3149384058414350daeac8f3f5af494c464ce5ecececefc44f454a445273 +846e5545494d4d49444c4a484b4a52686c6f726f6d6c6d6c666a69636469 +645a44595341415b5033d3efe5e2efd36124e5601e91ece54e191452a2d7 +c549531ed3ededebeda73f1a72948fb2a36c253c3d3b3b3e4243413d4f54 +4a433e35393b443b393d57483f3b3e3c2d223143665e77a9c4c8a36c5d68 +48413e3235875c67aba35a636b55647368747f8a76765c795a54707a745e +232120232525282b2e2c2a2a2827262625282b28262325292425292d2e2f +3238353f372771ceccc19a9dd7c6bf74bac1c18384aca1774a6f78634a60 +745363715c6973677b847ea78795a488a68495a577994229332728201919 +181715141313181a1c1e212225272b2c2c2e2f2f2e2d2e32353435373a3a +363738393837353336393d3e3e3f4347494c4c50565267505657556b6a6e +728566655e6771555c62565a5252664c62504b4a575a4d5e5b4c6c4e544f +4646455f4741514a63545255515a5b515c52556160585f5340444f584541 +46515144404549424a556148424c534d4a4f534e46415854595064596165 +58535f5f5e566f8d59727f68685e666f748067c6ba6424cdbd3597a1faab +d2cbff1da7ee354e4a4c495847445541525252534c4b454d5074e63c544a +394c52724e46497b4a4f4627242d25303b4d443a3036373e353d433f3347 +424a65754f52535a646c56a489708066606f7e645e534db6f2fffcffffa3 +f93b362128262d232e2f2f2a2f322f3e2d3531293e5f634f313035393924 +1f4a283c23181616592b170b352b211cf7ccfef5fffffe72424a4678efff +fed180fb66433a373b4131232d504c322a2e2d2f1215273028212d352e2d +2c2b2b2b2b292a2a2a292929272a2b2e302d292628292924211e1f1f1b20 +343e2a3333353d3f5449b6eef1f5f1ea31484030559db2d7e3f5ac372f2b +3262462e1f1f201a1a221f1b211a193c533c2425292a2a2828292124241f +2227231a13201c1c40513e2687e6e8e4fed8402da7fef2e9f9e05635d3ee +ecfafce55433dbffc8d3e7ec7e46fce0c0b6bdff7a463128292a2a292625 +282e25282c2a30332e282d324b3b312c293528284d5e7f89d6fdffffffae +94643d2e1f1d39a397a68b8e8b9da29987a3a09fb6ceacac9fbda294a0ad +ac99191716191b1b1e21242220201e1d1c1c1b1e211e1a17191d18191d21 +2425282c2228201159b6b2a87e81b9aaa3599fa6a6676b958961365c6550 +374d5f3e4e5c48555b4d5f665c84647382678765788c6186311821191913 +0e0e0f0e0c0b09090a0c0d0f0f11121417181a1c1e1e1e1d1b1f22212224 +2727232425262524222023262a2b2b2c30343639393d433f543d41424056 +555a5e71525149525c40474d41483f40533b513f3a39484b3e4f4c3d5d3f +4540373736503832423b54454346424b4c424d4346525049504431354049 +36323742423531363a333b465239333d423d393f413c342f4642453c5045 +4d5146414d4d4c445d7c48616e57574d555e5f6b58c2c87f43e7c8379aa6 +ffb3d0c7ff26b9ff58787a807f8e7b78887687878286878d8e9288a0ff63 +9196909b8ba182808cbf88866f463d47465766786b5b4649505e5c64675d +4b5a535d7d9374705c5c707e6dbb9b7c836762789689908570ccf9fff8fd +f596ff6583828783887a7f7e7e797e817e8b79817b7183a3a59375798286 +826d6c95697d69687776a06f6f6a8b7e6f56ffcbfffdffffff8870827497 +fcffffd683ff80717f8580867d717699977f7b848286696a7981746c747c +757473727272727172727271717172716c70737475737576716d6a67686b +6a6a7072575c57575d5d7369d5fffffffdff5e8281666fa7b1d5e2fdc060 +767e80b096807174746f70787672766f6c8fa48c74757474716f6f716b70 +706b6d6f695e53605c5c7c876a479bf2ede7ffe14e3baffffbf3ffed603e +d9f2eefcffea5c37d3f3bdcbe0e77b45fee2c3b9c0ff7d5860656362605f +5e5d646a6161645d6164605a5a5e74665e5d5a67564e686f8688cff2fffe +fc9d8a67565958535daf85896e746e80837a66827f7e97af8f8f85a3887a +86938f7c100e0d10121215171a181616141310100f1215120e0b0d110c0d +111518191c201b2012003d948d80575a93837b2e74797b3f436c653c153b +4532192f42212f3d2734392a3a40365c3a46553a59374c633c661704130e +120d080808070706080709090a0a0b0a0b0d0e0d0e0e0e0e0e0d0d111413 +14161919151617181716141214171b1c1c1d21252528282c322e432c2e2f +2d41404246593a39343d492d363c30342e2c42273d2b26253336293a3728 +4a2c322d2424233d251f2f28413230332f38392f3a30333f40363d311e22 +2d36231f242f2f221e23272028333f2620282e2625282b261e19302a2d24 +382d353930293535342c45622e45523b3b313942444c2f92934c1acab729 +858feb9cc1bbf415a3ec385250524e5d4d4a5d4a5d5d585b5b5f6066637f +eb4468685d6b627d5e5a63965f5f4d27202a2938485a4e4031363a463f45 +4b433546414967795554494e5c6853a18366725754677e6a6b6052b5e9f3 +edf4f190f64d5f575b575c4d5451514c51544f5d4a524a41547475644c4e +5658543f406c475d47414a467646474064544730efb7ede6edefef71535f +5077e2ededc070ef654d535553574c3f486c6c535057585b3f4151584d43 +4c544d4c4b4a4a4a4a494a4a4a49494949474142474847474b4c49423f3a +3b3c3a373c42303c3d3f45415142ace4ebf1f1f0415c5942528f9dc0cee6 +a7404e525889715a4d4d504849514c484c4542657b654f5253514f4d4d4c +4649494446494439303d37375863492880dad7d2edcc372297eae0d8ead1 +4523bfd9d8e6e9d34420c0e2abb8ced46831e9cdb0a6adef6a403c3c3d3d +3c3b39383e443d3e413c41443d35393d564a413f3a443229454d6569b2d4 +dfdddc817152403e383137875d614c534e60645b4763605f78906f6f6482 +675965726f5c2522202222212123282524252523222224292c292422272d +292b2d2f2e2d30353c40393c43a7e1c9c08cbec8c68c91c5bea7699d9a7d +4d56716a5058745a5d716266756983937ea48b93aa87a7898eaf809f5a2e +392e33271a1a18171514131315171a1b1f21252726292c2c2b2b2c2e3033 +3533333538393a3b3c3d3c3b3937383a3b3b3a393b3c505d5c6660597564 +6d6b576076826f53596d696c7f544a6c725b6844564b4254514e4c505a5b +4b51513c414d4b464a5b48586748655c59565859545069615b5f50525e55 +454449545461655a4e4e555a554b506074564348685d575d676f72748787 +7476777e7d8d8c8689738596a097a3ba979d8f9b9998918885deb66621e1 +aeeff9abe7f6fac1fb17b5f13552485338514a414b4b53484d4b45463e40 +466fe23d4d3f343a4181463b3983333d38869c9aaa85483f5dc2e3a7469c +884463c4d0c2e4d6875150e578f3f0f5ac88a7f6f9fffff5de6c5f5047bc +faf7ffffffbdf440241d2c20292a2724262c322b335d3c383b332f3d4434 +3535322a343528302e452e271607482b1d1b3a321e29f8d8e0a29cb6fcad +383e488af85e8ae8fafb844d3a3a3d362f47272c3e1e1d3b82996d2e1122 +2c292b3031312f2e2d2c2c2b2f302e2b2a2a28292d31302e2c2a2b2b2723 +272121262029533fb7e9f4f5f0d7825bd7cc4360aff73d253c30abfaffff +f8f7de302d3e57481e1a1b1f1d1a232f251b1d283b4d411f1f1c1f212121 +20201f22211f2223211a22251b1035263054e2e38ab6e5fa9f4ecfe288a8 +c4f09469d5ee82a8b3fc8c42ecfbc6e4eaffad2fd9f6e0ded8ff74463028 +292927272727242a23292f2b2e30302f31323a2f2d302d201d4771568f95 +d4ffffffffb39c753b231d1c27799e91a8aecdb1baae9b99a5b893a4b9b2 +a0afb0b6b0ada5a51b181618181717191e1b1a1b1b1918181a1f221f1816 +1b211d1f2123222326282b2c26272e90c9b0a470a0aaaa7176aaa38c5086 +826939435e573d455f45485c4e525d4f67735d81666e8865866a71946a8c +491e2820241a0f0f0f0e0c0b090907090b0c0d0f121412151a1a1a1a1c1e +1d202220202225262728292a2928262425272828272628293d4a49534d46 +62515856424b626e5b3f455954576a3f35575f485531453a3143403d3d41 +4b4c3c42422d323e3c373b4c39495839564d4a47494a45415a524c504143 +4f4636353a454552564b3f3f464b463c415165473438574c464c565b5e60 +73725f61626965787875756271858c868fa9838c7b8a85847c7576dac37e +3bf5b2edf8aff1fef8bdfb1dc2ff567c78876d867f7680828a7f8282848e +8d8b84a1ff698e918e9182b9847f86d07c7b67abb9b7cdae736a84e3fabc +64c0b1708ae7ead8f7eca17279ff81f5fbffc4a0b9fffdfffffff7959586 +6ed2fff8fffbf9b0ff6a76808b7b827f7873787e817a82ac8884837b7381 +8676787c7d777d7e73786e8471777767916f74768f836a61ffd5e5aa9db7 +ffc56a7a7aadff618eebfbff9e7a7e86827b789373788b707392ddf4c889 +69777d77777b787876757473737277787673727273706e70737675757373 +6b676a64646b68697f5ed1ffffffffe79670ecdd5069b2ff645b7862c2ff +fffcf5faed55718fa39472707175757279857c70707989998d6d6f6e6c6c +6b68676a6b6e6f6d6d6e676066675f52735d5c73f5eb8cb5e7ffa758d9ed +95b7d4ffa376def486acb8ff9646e1ebb9d9deffa62ad6f3dddbd5ff6e52 +5c62615f5d5d5f6160665f61625a5b5d5f5e5e5e625a5a5e5e524b6d8c67 +9492cbfef0f6f2998a7454535e5c518a8c6f8b94b0949b8f7a7884977485 +9c958695969c96938888120f0d0f0f0e0d0f14111011110f0c0c0e131613 +0c0a0f151113151716171a1f24251812116ea3887d497a8482464b7d7861 +285d5e46182340391f274228293d2d2f3b2a424c34573a425b38593c4569 +456b2d0718151d14090908070706080806060809090b0c0d090a0e0c0a0a +0c0e0f12141212141718191a1b1c1b1a1816161819191817191a2c393842 +3c35514045432d364a5643272d413f42572c24464e37442033281d2f2c29 +282c3637272d2f1a1f2b2924283926364526433a37343637322e473f393d +2e2e3a2f211e252e303b41342a28313431252c3a50301f213d302c303a40 +434558554244454c495b5f5b5c48586b736c748d6870606e6a6961554daa +8e4c14d9a1dee496d6e6e9b1ef0fb0f137584e593f58514a545862575858 +57605e605d7eec4866615b5e57925d565aa44f52438a9b99af8e554c67c8 +e6a94ca4914d6bc9d1c3e3d7885557e970e8ebf3ac86a1eeeef4f4f0e177 +716251bbf1eaf4f1f5aaf15250545f5056554d464a50544d537d5955534b +445256484f5252494f5048504c6550504a3766464a4d665a433eefc2cf93 +8ba7f1af4d58578fef4e7ddaebf185595558564e4a64454a5f424665b1c8 +9d5e3f4e544f505250504e4d4c4b4b4a4f504e4b4a4a4a46434347484a4a +4b4b44404139393e38374e32aee4f0f3eacd7349c5b93454a7f64737523d +a6e9ebe8e2e5d6364a647c6e4e4b4c504f4c525e52474650617266454a4a +4a4b4a464547474848454647423b4143382c4c363953d9d376a0d1e88f3f +becf7798b7e3865ac3da6f95a1ec7d2fcfdba8c7ceed9417c3e0cccac4ef +5e3c393a3c3b39393a3b3a403b3e413a3c3c3d3a3d3d473e3d413e2f2748 +69437473aee1d2d7d58074603f3940392b606449697390747c705b596578 +55667c756574757b7572686827242325272625262725252a2c2b292a262b +2d2b2724282c2d30322f2d2d2f31303234382a63c8cccda194c8bbb67eac +b9bd6d7698845d48616a584f72625c7568677a6d8c9f81a69390b085a791 +88b37e8f792a3d2c2e221e1c191715141312131518191d1f232623272a2c +2d2e30332e333534333436363a3c3d3e3f3e3d3c3a3939393a3b3d3f4e51 +505b4f505c534c5e574c535e869f6f4d5f645958624f4e52545854404f4f +5347495261615862594e4752524c5656485e67436d656162666255506d61 +4e4c58616d665e58525d626d6b5a51596161857d76788e81808f978f898a +8a888688989ba79bbb9fa2a28997a47e797c6d5364837d797a6a736a8e70 +60e2c1612bef8a77f4e3cbb0ffc6ff28c0e4334c464d3a3732393c404248 +443d373b302b3262db31372b2420216c31492d6637499ef1edf1e5f29648 +a1f9c5fcd8e5cf3671e9f4fcf8f5966392ef99ffa1edee6cacf8d5b7b5dd +ef4e56593ed8f2a0fefcffa9f1452b282d22262d2d2b2c2e332c3056372d +353d3830353a3433352f34392c272d33272919104a40140f363b1841f7c5 +fcece2f0f6b328403f37e7a46bd4f9fc5a443f36362d3c85553235303427 +454d0e1223241b242f2a3335353331302e2e3032302d2b2c2c2b2f302f2f +2e2d2c2c2d242e302f2d273fe1b0ffdf9889acf8f7a2eed1beb7bdff814c +2b3ac6f296ad99e3f858524c4425221d1b1716181e222121274051381b1c +241c1d212523232420202120211e1d1a1a1f2221693b314f98fceafff6ff +9a3e8afad7fcc1fcc15290ffb9ddcdd1a94795f783d96dcabd4274fffcff +fffa8146332a2b2b2c2b2c2d212823292f2d3a40353232363233302d282a +31444b3d7c949ceaffffffa49f723e2a1f1c2354b18d7a8084a59ea0a8b5 +a69e8b9ea29f916e7e91a5959d7f1d1a191b1d1c1b1c1d1b1b2022211f20 +1d2224221b181c201f222423212123241f1f2226154cb0b3b18576aa9f9b +63919ea2545f807049355059453c5d4d455e54536253707f60836e6b8e63 +86726b98687c681a2c1e1f151311100e0c0b09080507090a0b0d10130f13 +181a1c1d20231b2022212021232327292a2b2c2b2a292726262627282a2c +3b3e3d483c3d4940374942373f4a728b5b394a4f44434d3a3b414347432f +3e3e42363841505047514a3e3742433d4747394f58345e56525357534641 +5e523f3d49525e584f4a434f525d5b4a41495151756d66687e71707f867c +76777774727484849084a4888a8b74838f6a6468583f4f6f686565565e55 +795d53dece7541ff8b71f1e5d4b9ffc0ff2bcbf7517474806f6f6a707379 +7c82817e808d89817a9eff67828488816dad728d76af7a81c3fffcfff7ff +ae5eb3ffc9ffe7fcec558bfdfffffbf9a275adff9dffa9feff84bfffd9b9 +b7e8ff77909162ebf6a0fffcf5a2ff77838f8a79767b7e7c7e80857e7fa5 +83797d857c74777c777a807b7c81756e6a7068777a709384666588896374 +ffbffff1e0f1fdca5f80725bf6a86dd6f7ff727183817a7285d1a17f8783 +8b82a4ae6f71807f727780767b7979777574757577797774737474727272 +72747574706c695d646463615e6af6b6ffde9583a9f6f8a6f2d5beb2b4ff +9f7b6268d6f18fa594e5ff7b959b8f7178797773707276787673758c9c80 +626774706c6e6f6d6d6e6c6e6f6e6b6863605e636663a5725a6ca6ffe8fd +f1ff9c428dfddbffcaffc7568fffb4d8cad0ab4990f07ed66accbe4577ff +fffffffb82545c615f5f606164675d645c5f605a616964615f625a5e5d5b +595c5f6a664e819193dbfcf3de82866d575c666253669d695c6667887f81 +8794857d6c7f8582775464778a7a806213100f1113121112110f0f141615 +13140e1315130f0c1014141719171515171b18181412002c8a8b8a5e5084 +7770386473772c365c4d2815323b271e4030263f3330402e4b583759423f +613659443f6d435b4c031c13180f0d0b0907070608070406060707090a0c +06080c0c0c0d10130d12141312131515191b1c1d1e1d1c1b181717171819 +1b1d2a2d2c372b2c382f24362d2227325a734321353a31303c292c313337 +311d2c2c3024262f3e3e333d372e2732302a3434263c45214b433d3e4440 +332e493d2a28343b473e38302c353b4444312a303a385e544f4f67585965 +685b56565653515363626e628266686b5768744f494d3d2434544d4a4a3b +433a5c3c27ae99441be47b63decdb99eefb4f620bbe335524d5543423d46 +4950545a5753525d5954527aec455954544c3f834a644b84515ca4efe5e8 +dfef96479df1bbf3d2e2ce356ee2ecf1eae88c5b8cea8ff89aebee6ca9f1 +cbaeacd8f2596a6c46d7e894f6f2f29cf55e5b625e4f4f53535150525750 +5076544a4d554b43474e4e50554d4e534a46495148504d40685b3e3e6061 +3c53ebafecddd1e1edb6405e513fe1975fc8eaf35c525c56514658a37351 +59555e56788142455454484d574f535252504e4d4d4d4f514f4c4b4c4c48 +464446474b4a4947453a403e3d3a343fcb90e6c9847598e1d981cdb2a49f +abf685573b44bcdc7c9280cfed5b6c6e664b5354524e4a4c4e514d4b4d65 +73583a404f4e4c4c4e4c4c4b4847484746433f3c393e3f3d7f4b384d8ce7 +d1e7dbe9842972e2c0e6afeaad3d7aeca1c5b7bc96347dde6bc357b7ac32 +64efecefefe9723d3a3a3b3b3c3d3f41373e393d403b4449423d3e413f42 +403e39393b45432a617276bedfd6c269725a4243483e2b3e78453a454768 +60626875665e4d606562563343566c5c6244201e1e23262626262926262a +2c292626272a2c2b282626282b2e2f2d29292b2c2b262f232e3e9ed1c6bb +85b7c7c59184b0bc87528f82634e596c5e4b706b5d786f6c7f7392a785ab +9d92b786ad9b8ab8888ca1344c383227211f1b181715141315181a1c1d22 +2628282a2b2d2d2d2e3031373c3c3b3c3d3d3637393b3c3c3c3c3c3b3a3c +41464b4e725d52554c5e5b5a5d4a4a6e7f4e5674855b675b494b5e655a65 +5d5a455d6b4e593b4c56494b534e50524754585665545c51565286574259 +465356546b5e59675f676c676d7375887677787c83857f776a767a717864 +5e6b5a63768a91887e7b8b8c7e798177717e755e615b6969656a6b827381 +88938f8b90b580cbaa5c30bcfbfaffbfce28ffc2fff5f7983a363c534639 +3a4b4445373c4239353c30252a5dcc1f3025171e2665392b25712f3a7cf6 +f1eeeef1773ba6fa6880d7f7ad4a4f91a3d5ffaf5b706ff5f8fffbf0b755 +78f8fcfefff9e93d655a5df5d090f693ffc9f5493228252e2c2b28302c21 +2c3026303338342d333d4447422f2f353a392c2c4830242318163834250f +39491c55f4b9e9fee5ffff7c363e4b74f299bffcb7fb7a423b3633382c30 +3231262725233b6f22151a241c232e2d2e34393c3d3d3a342e2d2a27282c +2f2e2f2f2d2d2f2f2b2b2e2e3b3532373246ff8ec1fff9fffffffeaab9ff +dbfffffb6229463668f2fbf3eddec470573322221917181919181a1c1d21 +3f4f341e2931251c1d222929252525232526241e191b202d290d5e3c4671 +80fa37e0e09eee298afe2cf548a3ff518dfe4cffb0b2ff6793fe6eff9ed0 +fa573db1e2f9e4c2684a3d302c292b2e2d2e2b3026262a2c4150352e2d3d +3c4c443328314353454345818d8f8d968b939956353220193247bc957a7f +90808287a49f8886a9b4b7c2c0c3ddb4c2aeed9b161414191c1c1c1c1f1c +1c20221f1c1c1d2122211c1a1a1c1d20211f1d1d1f1f1e181f121c2985b7 +aa9f689aacaa766997a36d3a796e4e3b46594b365b544661575465577487 +6488786d95648b7a699b6f758c203b28241a1614120f0c0a09080a0a0c0d +0e1013151416191b1b1b1e1e1e24292928292a2a23242628292929292928 +27292e33383b5f4a3f433a4c4948483535596b3a42607149554937394b52 +49544c49344c5a3d482a3b45383a423d41433845494754454b4045417546 +3249354245435a4d48564f575c575d6365786667686c73756f675a666a61 +68544e5a475063777c746a67747567626a6059675f484d4755565257566d +5e6c737e7a7678a071c9b8764ed5fffdffc8dd35ffc0fffcffb25d626e8a +7e7172827d82787f85818190887d779fff5d7d7e797c75ac807370b96f6b +9afff5f1f5fd8448adfc6680e0ffc46263a0aad6ffad5f7e86fffaffffff +cf6d8bfffffeffffff649c8e7effd896ff9bffccff75848b82867c797982 +7e737e82757f81847e757983888b8573787e7f7e7370856d656f736f837b +73618795648bffbeeeffdfffff916b7b7e98ffa0c3feb7ff936f7d817a7f +787d81837c7e817e98cc7f727981777a837e797773716d6d6e7172757673 +757778757472727273716b6766616a6360656269ff86b7f4edfdf9f6f5a1 +b0ffd0fdfbf9754d786585fffffbf5ecdd9c9e8670737173747574737273 +72728d9c7c656d7977716a6c6f6f6f71737171716c64616164716b4e9b70 +709093ff37dbda99ec298dff2cf548a2ff558ffd47ffabaffe6997ff72ff +a2d5ff5f45b9eaffe9c76b59666662616364636261665e5e5e5b6a78635c +56646070685a515b6c765f5450868c887e81717d8d594e605d575f59ac74 +5c6273636568857e6765889398a5a3a6c097a591d07e0c0a0a0f12121212 +131010141613101011121615100e0e101215161411111316150f1202060e +669483773e70817f4b3e6e7b4814544b2f1b283b2d193e35274135324232 +4e603b5e4e4168375e4d3c7147536d07291b1b12100e0b08060605060809 +090a090c0d0f0d0d0d0d0d0d0f1010161b1b1a1b1c1c1516181a1b1b1b1b +1b19181a1f24292a4e392e2f263835343520204453222a4859313f332325 +3a4137423a37203846293416273124262e292c2e253034324030372c312d +61321b32212e332f463934423840433e444a4c5f4d4e4f535a5c564e414d +51484f3b3540292f43565d53494654534540483e37484731342e3a383437 +3950414f565f5b595e834898834628b8f1ececabbc17edb1f3ecf1993f3f +48605144455852584e545953525f564d4d79e238514e46484680564b4791 +4a4b80eee4dee3e970349bee5a74cff1aa484a8998c8f3a04e676aefeff8 +f4eeb75575f3f4f6f8f6ec47756863f3c988f18ef6c1f85c5e5f565c5551 +4e5450435052464f51534d43474f555a5a4a4b5153524949644c43494741 +58514b395f6e3c69efaadaeed1f1f37e4d5a5f7cf190b5f1abf37d505756 +50534a4f52534d5152526ca053464d554c505a554e4c4a4745454748494d +4f4c4b4e4d49474645464a4b46434340483f3b3e3a3fdc619ce2dff1e9e2 +d88291e4bceff4ed6131554367e8ece3ddd2c0797458464a4b4e4f4e4b4a +484848496372543b44514f4a48494d4d4c4b4c4a4a4a463f3b3c3d4a4526 +72494c7075e81fc5c483d51170e412db308dec3e79e833ec989cea5480eb +5bec8bbfe9482da1d3ead5b35a444842403e40403f3e3d4239393a394a56 +3e37344746564e3b2f35444e3a3230686e6b61665865774639463e323831 +88513a4253434549665f4846697479858386a0778571b25e212122221f1e +2024262321222525211d1f1e1d1e1f21272d252928272b2a26272c2d2326 +313a57d2c4c89f8fc3c0ac639eb494506b7f6c564869674e74706076756a +827b8dad909d9e8bb68ba4c07cb09f88bd5a3333282d231b171a1d191513 +1014181c1f20252729292c2e303232312f3437363537393a36393b393738 +39393b3c4c3f4b504e555c4f4f755f63635d695e5355625e6c5c675d6050 +50546357455950705945573a4b475648485d524e59604754584d5a4c604b +60666e596b534f5d7258695e725359857d6d6878786f6f6e6566615f716e +7071957d837672777d6d84818669686b7b6671755c6e6d7f706d6567775b +5d758067796d6b814f66716870ecab4e39226b7d413e5e4c6140747c4c3a +3534343c5b5e5f67583a343736352e30392f2364cb182e261d1f2668222b +28672d4778fcf9e7edf76f4b9af9fdfbf9ef7b466ef5fbfdf6ffaa5667e7 +fffffbf5ad4f55ebfefffff5c14e626554e6eef4e251f18dfb5e3c302d23 +2829292b2b2d2e2d2f302f323636353f443c2f3b352f3630262d2b2f2524 +1c1e383822212f511618556ceff3cfebffa73340435beddffcdb69f8893e +433533282f30312a2c262c2e31a0352321181f21242928314857594e5735 +372a1f2221222e2a292e2a31322c38414d333f302c37264fff8ff5fb5aff +d6ffffb0e9ff79ffbfffe739413022241e252a2a4f532822151a1c13241c +121e1c1d2641442e242325271a23212f28262f291f222b1e281e20172923 +25105e3430715ff3dbfdfaebff4c57fbf9fffffaff4250fbfdfffff8ff66 +59dcf5fbf3fbfe5e40e6f6d1fefde0463b312f2325302f37382e34252626 +323f34443b2c4c474042325f8e4a4148424260778b86837a4237372b292a +313395adae8690ff9f7171cbc27d688b8dabbe9dc6b3e7e8e9d417171818 +1514161a1c1917181b1b17131212101112141a20181c1b1a1e1d191d2425 +19181e243eb8aaad8575a9a5934a869c7c39546a5741335452365b57475c +584c645d6d8b6d7a7b6891667f9b578e7f6aa3431f221a2018120e0f100a +060405090d0e101114161616181a1e20201f1c2124232224262723262725 +23242526292a392c383d3b42493d3a604a4e4e4953483d3f4e4a5a4a554d +4f3f3f435448354940604935472a3b374638384d423e49503744483d493c +4f3a4f555d485a413d4b6046574c604147736b5b5666665d5d5d5455504e +605d5f60846c7265616669586e6c7054535666515c604759566a59575357 +684e51676e536556546d3b4f554c5ce9c274694f8993555478626b488191 +6a62646c6e769293949f967e7d83807f787e877d6facff5d7a756f6e72b4 +707c7bb36d7590fff5e4eefe7c5aa7fffffeffff946285fffffff6ffb264 +7efaffffffffc5696bf7fffefffbd46f90926ef7fffff564ffa0ff757d88 +8c8480807f7f7f81807f7e7f7d7f838080888b8274827d747973696f6b71 +696c6a7085846f6e7a9c5e568288fcf1c1ddffb860777482ffeeffdd6dff +a76d84818177818283808883898784f185787c747e7c797a7774726d6055 +6c5c7678767a76747a7472756f7572697178806471625e6a5b73fd7fe7f2 +54ffd3faf49ed4fb67fcb5ffef526d695e5e4d4e4d4f7f92777c7175746b +7c746b7574737a93937b716e6e7470766971666677767071726169616960 +6d66664e98685c957affe5fff8e4ff4a62fff9fefff3ff4c5cfffffffff6 +ff6e68ebfffff9ffff6449efffdaffffe254666c6f6365696062615a6b5f +635f6069616e604a655e56594c7cab675a5d55526f828a8285845651534c +505251438b958f6571e2825454aca15a44676a8aa07fa895c9cacab60d0d +0e0e0b0a0c10120f0d0e11110d0909060708090b11170f13121115141011 +17180f0f17172a9d8580544278766a2260785a17344b38241637351a3d39 +293b3628403747654550513e653a536f2b615644802407100d17120d0909 +0a0300000105090b0b0c0d0f0f0f0f11141414130e131615141618191518 +1c1a18191a181b1c2a1d292e2a313829274b353939313c31262836324232 +3f363b2b2b2f3f331e322949321e301324202f2121362b2730361e2a2e23 +2f223520353b432e402927354c3041364a2b315d55454050504545433a3b +3634464345466a52584b474c503d56515839383949343f432a3c374f4949 +3f3e492b2b404a3042343248162f40373bbc8c413f2e717c3930513e5231 +6570483f4045464d68676872674f4f544f4e474c554b407ee3304b453e3e +43864653518c4a587af1e9d5e0ec684593f1f4f3f6f17f4c71f4f6f5ecf6 +a5536ae7f8f6f3f1ab4e56e9fafbfaf1c152696b53e4edf3e151f48df663 +5d6062595855504e4e4f504e4e4f4b4b4f4b4851534c45564f484e4a4049 +484d444440425756454451733631636fe8e2b6d2f3a543575667f0dbf3cf +5ef18d4b5c5351475051535159545a595ac85e4f534b545352514741423f +362b41304b4e4c504c464b434449434c4d47505861444e3d38412f47d45b +cde148f3c0e2da86c1ed5df3acf4e23f52483a38292c2c2d596748494049 +4c45544a3f4844424963644d43434348434a434b41414f4c454448384138 +3c33443d3e257041387159e8caeae3d1ec3340e3dde6ece1ef3444eceae7 +ece1ec564bcce6eadfe7ea482ad0e2bfedeed4434b4c4c40424640444139 +443739363b4338463f30504a3f3c27507d39323c393750626e696d6b3b36 +3a31312f2a1c6873704652c26234348d803a24474a697e5d8673a7a8ab94 +1d1d1c1c1d1e1f1f23222224272826242b262325282a2b2d222625262b2c +2a2c2628252a32333e98cbc4ba80a8bcc17581a893664f786b6147646e51 +6f736179786f8f898bb08b9da391bd8895c57fa3c476af961734302f281f +19191b1a1b1a121316191a1a1e1f24252727272a30342f31323133363634 +3033343232373d403c3a47404f52525b66505a5d54635f65676661655c59 +61655a5a5e5d4f5356516150473f4473705a5e51676b66686375725f5960 +62616b5a816a85857f7c8684998b8380846e727171757a644474656c6968 +64686b6a786e5c7e66585e5e6b546a5d7170756f61679a6a6a77868d7b7a +69646669805c516e7d84a884677266868f6f67eea846302c373a55485071 +55525351473a32292c2639414959523a302e3335313237352c61a31f2d26 +2b2c205d1d2712652f3966c8fffff9fb68425ec2fffff8f5815471c8fbfd +ffffac465ee5fcfef5eebc4670f3fdf8fcfbc8506a5e5b4b7c7475446158 +f3664c39271e25292c2c2c2c2d2f323639353533303135333c3c32303a30 +273230261e272926384c1b202b4c1c202a3ff0fefafaffbc3d424d2bbff8 +f6e9fff28d40453e3b2c2f2e37272b342c22269c35282c21231e21282f59 +dbcfdef4f7572f2c1e191e273029302b2a32282b2e2c3f303f352a322b62 +f574cefff7f34ff7f3b2a8fffffe6ee6c44432342621253d415f493b231e +131d1c27151c231c16274043372a2b2d29292a252d2a383a241f24202e31 +24201c32262528364e3350592a7077a5b08bff633c4365c4597cff5c4932 +2d589375ff86563335624679f38b63fad387ecb8ff813c2e1f2428281e2b +341b221b2328212827263a41404b3c3b57525645554742333d384b5e4639 +3a413c444649514c94c4d9bc5febffb7b9c3b7fce8c8eeb0ebd8d8c5d5d4 +dcbb13131212131415151918181a1d1e1c1a1e1916181b1d1e2015191819 +1e1f1d2220221c1d201e277eb1a9a1678ea1a85d69917c4f3a63564c324f +56385458465c5a4f6f69698e687a806e98636e9e597ea256917c02242325 +1d16100e0e0b0a0b070a0b0c0b0b0d0e1112131315181e221c1e1f1e2023 +23211d20201e1e23292d2a29342d3c3f3f49543e4548404f4b5151504b4f +48454f534a4a4f4e40444a425140372f3463604a4e41575b56585365624f +495051505a49705971716b68727085766e6b6f595d5c5c60654f2f5f5058 +575753575a59675d4b6d55474d4d5a4354475b5a5f594b51855555627178 +6664524e545b755248626d71936c4f5d5371705050ebc3776e645951695d +6b885e58646d6b6a6c6a6f69767a8192917f7e7d81837f80858379aef06c +7a7378796dac727e69b671677ecffcfffcff7a5671cfffffffff966b86d9 +ffffffffb45777fafefeffffd66086fffff7fbfed96f948b7a659d979367 +8c7aff7c88908a8485827f7e7b7b7a7c7f8285817f7d787a7b79807f7371 +786e63706e66606b706f8499696e78996767666cffffeeeeffce6875784d +d7fffaeaffffaa6c7f83877c7f7e86798490887872e77f788782857f7b7d +7f95f8d5d1e7fd746879767473767a717a74717668686963756673695f68 +6188f868c7feffff5dfff2ada0feffff7af5d663677a76726d7b77958582 +7477707a727c6a71766e68778e8f817273726e7077706b626b7064666d67 +6c6b5c5a5d75635f606d8061787b458584aaaf86fc614b5468bd4d72ff65 +573f33588f71ff8c6546446c4b7df58f68ffd98defb9ff895959525a5e57 +454c523e4e4d5556464a4d4b57584f554546636168586757514350474d60 +504b565f545b61646b5c91b4bc9b40cce79d9ca496d9c4a4cb8fcdbab7a4 +b4b3bb9a09090808090a0b0b0f0e0e101314121015100d0f121415170c10 +0f1015161416101213171e1919678e7c6b2f5b727f39476f5c2f1b44392f +15323a1a373a283c362949434368405256446c3743732c51752d6b5b000d +131b17110b0a0804030401050706060606070a0b0c0a0b0e14160e101110 +121515130f12151313181e1f1c19251e2d2e2e35402a3033283733393938 +3438302d373b33333a392b2f342d3a271e161b4a473135283e423f413c4c +48352f363736402f563f5858524f59576d6159565a444847474b503a1a4a +3b403f3d393d403f4d4331533b2d333340293d304443484233396a3a3a47 +565d494c42404041552e213c4b517650333e33565e3c30be8c3f3f3f3e37 +46343e5e3f3c404545424442463e4a4d546562504e4d51534f5055534b80 +c23e4c454c4d417f48533e8d4d4a68bdedf1ebf1643d5bbbf4f4f1f48357 +73c7f4f2f4f4a54562e7f3f4efe9bb4571f2f9f3f7f5c6506c605a4a8079 +77496e5fec6566655b545754514e4c4c4c4e535456524e4c464547455153 +48464f473f4b49413a444644566b3f444e6f3e3f424df0f1e2e2f1b84a54 +5a32c1f1ebdaf1e98e49575656494c4b574b5661594b4bc05a515e575c56 +55534c61c8a9a7bdd1483f4f4e4b4949493f4946454d4346494455444f42 +33372f55c940abe9efec43e2d4908deef2f366e2c8534d584f4945545371 +5f584949434e4b5541474a4037445c5e5042454542444b45463d4a4c3f3c +423d45453734334a3a3739465a3c535824666a939b73eb4c2a324daa3f66 +f1503d23173c7456e870462625513466dd744ae2bd73daa9f37c433d3138 +3c37282f36202b282f3124272422383c383d261e332a2e20373034283026 +354a38333d453c41424146376e939e7c21adc77c7c8577b9a484ab6eab98 +968393929a791c1c1b191c22221d1e1f21232425252528201c1f25262422 +242826272c2d2c2e2324272b302f2a59cabec19689aec19a668c97784062 +6c6c4a5f7556697865797c739b9a87b4869bb78db69c92cb9297d59097ce +3f313c302e27201d1c1a1717151618181a1b1f2125272928262930363232 +3131343837343a3e3f3b383b40443d3b4946544f4a4e665470595b6d555d +6d6259625b6663765352535e4a565f674f527373667b66636a56656d635a +566d805c727574706f57755065565d645f564f665f5f5450505a59585647 +53744f7163655b6c626c69625b6c5b6b64635c6b635c625e698075817c64 +70677c7d7b7d877162656a5c88686450677875816d7a7f6e6dff9e392438 +4265738586978c7f5e4246372f2d3a342f363944443936302c2d2e2c2c30 +2b564f16241f26281e671e2a1764333096f4dafafbea70446af2cefffff4 +7b5857f9bde9fff4a15564f4b2f3f9f0b34b5bf5fcf0fff0e4376d5d5f67 +584f695c5559eb60413122233131393d3b373432343739383b40403b383b +3b3d3b3a373049754639313130282c4a1a21284e16212261e5a2dffdb880 +3b455659f7c399ffc9a568444f39353e4637283529272f3126993824251a +1a171e262e75f1e8fffff06e142e2f272b31332b32282f351f2d2f2e382c +3032303e3970ef95bd6d7c5d33818d9a685658500f3d332a25281a242e2e +5055332f202b201326231f2b202b404d4f42302c35373538302a3a45373f +39393431303722253a27372c2e262e363960303e596c8075ff92323e8da7 +9ca4f7a8647bd3dae5d8ffa03066d7e1f2e8ffa357aafbfbfcffffd39a8e +7f87808f9ea098a4acb8b5b7cdcfcdc2dacccfe1dde6dceaeae8f5eefff7 +fafefdf8fdf4f2f4f4edeeebe6ebebd8a4e791ada3a2a2a0959884ab9c99 +a590abbfbca4afa21212110f12181813141517191a1b1b1b1b130f121819 +1715171b191a1f201f241d1e1e1e1e1a123eb0a6a77d7296a8824e758061 +2b4d5757354a5e3d4e5d485c5e537b7a65926378926891776ba46c72b36f +7ab42a1f2f26241e17120e0b08080a0b0b0b0b0c0e101214171614171e24 +1f1f1e1e21252421272b2c2825282d312b2a3633413c373c54425b444759 +4149574c454e465151644241444f3b4750583f426363566b56535a46555d +534a465d704c626564605f47633e53444b524d443d544d4d423e3e484746 +443541623d5f51544a5b515b58514a5b4a5a53524b5a4d464c48536a5f6b +664e5b5267686667715c50575f537d5a543b50605d695762625055fbc071 +676f5969758b96a78c7e6c5e6e6b6f75878176797883867e7f7d7f838482 +818580aba46b79747b7d73bc758370b77a66b4ffddfbfff9885e84ffcdf9 +fffe896a67ffc2ebfff6ab657dffb6f5ffffcd6873fffff1fff6f7589a91 +8e968c849a91908cff8689908b8f968b8885837f7a787a7b7d7c7d82827e +7b7c787a75736f687fad7e726d6f736c73956f787da0666d6698ffb5e4ff +c49a6a797b73ffc896fdc6aa7c67817679848e7f6d7c777a827f6ee18276 +817f8481807e7aaaffedf6f9f78a4b747c777778776e7870747a6371706e +75686a6c6975719cff9fc7809a855dabaab38275817f417063616b79727c +7e76909273756b7d7467787370796c7485918f806b666f6f6d716c636b70 +5e68676f6c6963664f526b596455574e5359587b454e63718272fc944452 +91a4939cf4aa6a80d4d7e0d2ff9f3973e1e6f5e9ffa256a9fafaf9fffecc +999692a09ba8b2b2afbcc9d2cbc9d9dde7deefdad4e1dbe5ddeceeeefbf2 +fffbfffff8f1fcf9fffffffffffffefcf1cf8bc5728e8685838174755f86 +797886738da19e86918408080705080e0e090a0b0d0f10111111120a0609 +0f100e0c0e121011161716180d0e15181c1506298f7a74473e667f5e2c55 +60410c2e3a3a182d3f1f313f2a3a382c54533f6c3b50683e654b40793f45 +864452910d091e1a1b17120e0b06030304050505060507090b0d0d0c0a0b +12181111101013171613191d1e1a171a1f231d1a2722302b2628402c462f +2f41293140352d36313c3b4e2e2d2f3a26323d4328294a4a3f543f3c432f +3e463c332f465733494c4b47462e4b263b2c333a352c273e37372c282832 +31302e1f2b4c2747393a304137413e373041304039383140362f35313b52 +47534e3640374c4d4b4f5c49383c41325f3f3d2a4254515f4c56523831cc +843431453c4e505f6578685f493849454a4d5d554a4d4b56585152515356 +5755575b56817a41504b52544a934a55428b52449aebcae9efe26e4169ea +bbe9ede670504dedabd5ece0924a5fefa7e8f3ebb24c5bf4f8ebfaece339 +7161626a5e566d636261e761595852555e585b5d5d59555356565857595c +5c5552524e4e4c4a48415b885b4f47484a43476a454e54783f464178ed9f +d0edae7f48555c58f1b487edb59461465b4a4a525c4f41544d4e585748bb +5d4e5853565357544b7ce1c4cdd0cd61234f5852514e483b4640474e3c4c +4e4c5342413c363c345fc96ba2607e63357d7e895f55615d1c4f4d4c4f58 +4c5457516e7151534a595243524c474f3e4656605d4f3b363f4040484640 +4d52434a4a4d4946424630334b364333352c3138365a26314a5a6d5fe97f +2a3980958a91e5954e60b4b6c0b2e3811c57c8d0e2d7ef8e4194e5e6e8f3 +f6c2877e76827c8b979a95a2adb7b4b3c5c6c4b8ceb9b4bbabac99a3a2a6 +bfc0dddae2e5e2dee8e5ebf0eee7e9e4dcd8cfae6da95571686766625557 +42695b5967536b7f7c646f622023221f2229292520222424222122222721 +1e22282826242b2e2b292d2c2b2d27242826292f2b39a4c8bbbf789fb2b1 +6368947c4f466b71525b795c647e6a7883769ea884b68795c286aab789c5 +b681c1c377bf9f2a2f332c2926221f1b16141415181a1e22282b2a2d3030 +2e2e30323132313133373734383d403d3837393a3e3f464359626c71595c +745c5d6e4a4e745e585e62695c70595862715f59585a5b67626d5d5b6054 +63545a59565a585f69434d424742534b5b5272514f4f584f48695c575f6c +5a474753534e7960445b6265527254695a645d5f5666637d7c7c6a726e62 +6b756f697566695966616570755f8d6a627b8053827d7872597d726b7d6e +66fea04822256899a2a69f9f9f9f7d4c46342b2824222e34333b3b383a31 +2a252b2b2627244b291a23211e1e1a62241f18594237a7eb8efac3f49f46 +b4f57fffb1fcd151a2f47cfebde9eb3e6fee8febb4d3e95088edebecdfc6 +f1455a5e556656515f574265e8613e342224302f343c403f3e3e3d3d393d +3e3e3e3b373a44403b3f4034374e3132362c30323252171e194b1a2f2248 +e2e8f4eef1c1444e3d50e5fbfffffff7bd70564d5045453d3c47312a2d38 +2d8959322113181e282f3a82c9bdb3c4c9b80229322e3335393c3c36383c +242e2d3a473c3238343e3a68db828e403b335495d1975b4e3030443a3336 +2a30232745564338383525241d1f281b34373045534e454c545e62584d45 +404d3f4f415253434c54492d51565f605955617a7b84a1a67fb0f9fefff8 +ffd7aed2f8f7fefffffcf2effffffffffffffffffff9fafff3fffffefefb +f9e8e7f6ffffeee4e8dbdbd5bbb6b4acb1b3aa93978f9675cce1f8ffffff +fdfbffe2bc61434aa5e3ff923f8d171c171a19112489886f767d9a908b92 +8e928099aab5c2b8cfc2b8bbccbc16191815181f1f1b16181a1a18171818 +1a1411151b1b19171e211e1c201f1e23211e1f19171a13208bafa0a56187 +99994c517d653a31565c3d44604349644d5a63567e88629564729d618592 +629e905b9ca25aa58818202722201d19140d0807090a0b0d0f13171a171b +1e1e1c1c1e201e1f1e1e20242421252a2d2a252426272d2e333046505a5f +474a5f48495a363a5e4843494d544a5e48475362504a494b4b57525d4d4b +504453444a49464a484f58323c313631423a4940603f3d3d463d36574a45 +4d5a48353541413c674e324950544161435849534c4e4555526c6b6b565c +584c555f59535f505444514c505a5f4b7c5c57727444716a625940665e55 +62534efcc485685b738e929ba6a69397896a706c72797a7a80827b7f7f7b +7f7c7d7d82837c7f7aa37f727979747670b8797570ac896ec8fd96ffd1ff +b965d1ff7effb3ffdf61b2ff82ffbfeff8538aff98f2c3ebff6ea2fff7f4 +e5d1ff688a968b9e908d9993829fff8b868e85878d837d81848380807f7f +7b7f7e7e7e7c78787e79727674686b82676a70687175779d6e766e9d6a7b +6a85fffffffeffe37682666df7fffffbfffbcc8b7f7d857f7f787a897c77 +7b8371cd9f807c767f8589847dafdfc3aec0d4d431667571737174757570 +7276616b6774807466686369638af0939d555e6188c5f7b87d78666c8174 +686c69736a6f8792796b69675b5e595e6758706f647582796f737984877f +746e67715f6b5a6b71656f7a6f5073788180766f7b93949db6b98fbdffff +fff7ffdcc1eafffefcfbfff8efedfffffcfdf4fcfffffff7f5fff0ffffff +fffffff0ebf5fafdefebf1e6e3e3d2cecabbb7b5ad9eb0adab83d1dff2ff +fffffcfaffe0b85d444aa0dcff91439828323137372b388f7550575e7d73 +6c706c6f5d768996a59bb1a49a9dae9e0c0f0e0b0e1515110c0e10100e0d +0e0e110b080c1212100e1518151317161517110e16131515070a6c867172 +2f5971752a315d451b12393f202542242b432d383d2f57613c6c3c4a7337 +59663773632e6f75328069000d1918191814100a050103040505080c1012 +10111412101012141011101012161613171c1f1c171618191d1c221f353c +464931344a3031421e2247312e34383f344834333e4d3b353636343e3b46 +3634392d3c2d33322f333138441e281d221d2e26352c4c2b292932292041 +342f3744321f1f2b2b2651381c31383a2747293e2f3932342b3b38525151 +3e4541353d47413b4738392936313542483362413b555a2d5f5b5752395e +55484d3628cb86422c2a51706e6e7072697265464c454a4e4d4a50524b50 +504f5351535358595557537b584a54534f504b914f46407e5f47abe37fe9 +b8ec9c45b3ed6aed9decc54697e568e9a7d5dc3267e885e2aed1e85289ed +ebe9dbc3f14760655a6d5e5a6760506fe76354584c4e585150555b5a5a5a +5959575959595954504f554e4a4e4e42475e45474a42494c4b72444e4777 +43554463f1ecefe4ecc2505c444fddedede8ece4af6a5753594f4f4a5163 +534d535c4ca87b59534a5258605b5486b89d889aacac0d445450514b4848 +4a474a4e38423f4b554536362c31294eb55d76343e3d5a95c88b58544246 +574c4c544c54484a6370594c4c4c41453f4148364c4a3d4d564c41464d55 +5b524744485747544455594c576156385b6069685a525e76767f979b72a1 +eaecede3edc8abd2f3eeedebeadbccc4d6d4cecfcad5e1e6e8e0e2efdfeb +ecebeaebeadbdce3e5e3d0ccd2c8cbcab6b4b3a8a9a8a28d938b8a5fa8ae +b4b6b1afa2a7b8a58938242e8ac9ed7f3487151b16191506136d55333a41 +5f554f5450513f586a77857b8f82787b8c7c2227282424292b2a24262827 +2422222328252528292827272a2d2a292e2e2d2f2c282b25263036376cc8 +c1c38688aaab77527d7a663d61715e557562608170738a7d98b183b3928d +c18ea1c97ea9d67fa5e0908ed562253a2a2b2926221e1b191414181b2127 +2e322e2e3031323231313033343332353738363c3f3e3c3e4143414a4f48 +57585a525469655b556951525b4c5658665d5265594d5b635c4c504e486b +5860555662405752544c454a48454f4a54525e485550535a584f536a6949 +5e706453554e5e6e5b58615359515857635f586e586664774b6876986b49 +72645f6b6352615f76667d7171727369708a747d7b555c5e72786665828a +695a657b787b79ff8d35223e7eacbcd4e7e8e4989459372c272c1c2b1d2a +2e383c393c322e262b2e27221d492f1e1c231f23225e26262b5f333eaaf5 +fbfc7af2913384e9fffb5cf9b24a61eef6f96af8bd445be9f7f97fd6c34e +60c0f4f7eff4b04958425d4d5e564c5b545edd64424031313b403b414442 +4242413f3c4744393d4344463f3b393c413c3739383b3d31303031541d30 +2b592236312724404835395441475143637670716e8285666a675a4c5455 +45302934292b2e7c4e28231e212022213bcd954458a88b7c2538302a302b +2e373838343d37332a3b303f4955514a43598be38250574c4e898b807979 +535974727a737b899ba7babda9b1aaabccc1bfd5cbced8daf7eef7e9f6f9 +f8efe9eff2eff8f7f3f5fbf3fbf9f7e7f1e8eef2eff8f6fafbebf7f5f2ea +e2dad1cabbdac3c8cda7909e9da9fffffffffef7feffffd9d4655ba7d3e8 +cc62b88f29211d3b66874c7f744a5a382a2c250e2b153437323f3631354b +eaf7fffcfceff1f9fefbfff3776eeae5ffc876e25733324531292e798889 +8d958298a19b8987b58b9da293b9aba3a8aaa6ad181d1e1a1a1f21201a1c +1e1d1a1818191b18181b1c1b1a1a1d201d1c2121202526222318171d201e +53b1a9ab6e709393603b686551284c5c473e5c49456753556a5b77906292 +6f6a9c697ca45883b05980be7072bd4e152d2021201d1713100e090a0b0e +13191d201c1c1e1f2020211f1d2021201f22242523292c2b292b2e303039 +3d36454648404257514741553d3e4637414351484053483c4a524d3d413f +375b474f4445512f4641433b34393734403b45434f3946414249473e4259 +58384d605443453e4e5e4b48514349414847514e475d475553663a576587 +5a3861534b574f3e4d4b6252695d5d5e5f555c765e696a475154666a5653 +6d755446536a636461ffb576686e7e8f9ab9e2e3ce89a07c656974847a89 +777e7c80807b7d797f7d80857c79729f84747179737976b074757dac7672 +cbffffff8affae52a1fdfff960ffc46178ffffff77ffd1627fffffff92f3 +e47181d9fffffbffce738d7c9282958d81928e92ff8c808d838083858186 +8886848483817e8983787c8384847a74707375706b6d6e73796f737578a1 +728678a36a7e77695c6d6950567a717e8571868f7d777288937c868a7f71 +79827f747482757370b98e6e73747c7b776971f0a64a55a999974e6a655c +5e5a5e635c5a56625f5c526357626870655a506293ea875a6f6d72a9a190 +899175809c95999098a6b8c6d9dbc4c8bebdded4d6eee4e8efeefffcfff1 +fcfffffaf8fffffffffffefffffbfffffff9fffffffffffffffffff7ffff +fff7ece4d9cfbedcc4d1e7c8aab2a7acfff9fafffaf4f9faffc8c1504896 +c4ddc764c3a0423d3d5e8a9d416c704c5b3b2e3b44314426373a3f575a56 +5360f6fbfff8f9edf2fafffafff17871ece7ffc97df17053596e59515892 +7d6b6f7763797f79676593697e85769f8e868b8d89900e13141010151716 +10121413100e0e0f120f0f12131211111417141318181719161218101217 +130a35887b7b3e446a6f3e1b4946340b2f3f281f3e2a2746333144354e67 +39694740723f50782b56832c5390474b9b33001c1418191815110e0a0301 +03050a10151612121413141212110f12131211141617151b1e1d1b1d2021 +1e2529223132342a2c3f392f293c242631222e303e352c3f362a38403a2a +2e2c2344333b30313d1b322d2f27202523202d2832303c26332e3037352c +3047462639493d2c2e27374734313a2c322a312e39342d432d3b394c203d +4b6d401e4739333f36253432493950444243443a415b4650502c35394c50 +3f3d58603f2e3b5046423bd27632293a5a71758caaab9f607a543e3f4854 +4857434a484e4f4d524f5653575b534f4b785d4d4a524f54528a4a464d7e +4b4bacececec6fea8f3082e1efea4ff1ac475ce6ebec5decb5405be8eff1 +7cd7c55366c3f6f6edf4b24f614c66566b635768656be16a576155535b59 +4d50555354545351505954494d5152534c49484b4f4a47494a4e53484849 +4c754961568045595245394c4a31375549545e4c6571635d576c72586060 +54464e57574d4b584e4d4c976c4a4e4d535250444fcf8428348775742e4d +49414138363f42423d413a30202e1e2a2f393229223362be674155504c80 +7a6c6e775a637a747a747a8899a4b7b9a3aba3a5c8c0c2d9cecfd5d3eadb +deccd6d7d7cfcdd4d8dbedf1eef0f4ecf4f4f6e9f6eef4f6f2f6eeeeeddf +eae8e3dbd1c9c1b8a9c7b2bcccab8d968c8dddcdc6c6baafb5b9c5929931 +2a7cadc9b14ca57e1b1514366479234c4d273b1c131e25132e142c313547 +40373139c6c0bda198888c9cafb9cac85854d4d1edb76dde5a3b3c4e362c +306b5d4f535b475d645d4b49774d6167587e6c64696b676e212324232020 +232624262727252323242626272725212124242928292f3130332f2c3029 +2a303c374f9cc7b5b06d96a18a565d776f4c506f67526e6b5d7e76709589 +8eb785aaa688bf9d90d89e8bd8b987ccd67bb9bf4b2e37353128221f1e1d +1c1b1d20262c3132302f2e3033363636373b3d3b3a3d4143434544414249 +5054516067677671746a728f7b8176857d7b96837d73826c606a59444c4e +514756575168615a4650646f67676b655248494a585a554c55455659466a +5a65436b6860484e575a76605c4f51535e5a527456466559655f63626e75 +8d605c756348696564686b5b655e7f6c5d646b6663666f7384627c717773 +5a807474936a6d67827d84756bfc923e283fa1afbedaefffff9498613737 +2a23112422292b3337363e3a342e2e302a241d5132222027212629672723 +1e68364a5d81998d686e3c483a618fda91584b4d565f7e68685f44575560 +587279775a584e49b5ba5c494d4c535355605b595a54664be77542403f44 +484b4b4d4b484950524f485d5b505458504c4949453c37383c3c362f2e2c +291f2b52101d2661342c35333e3733464549494a4b4b5246886762746773 +7f747078714d54555050585454958c63594b4b546c776dd6cca498e0eed0 +9ea0969fb1b1afb0b2b4b2c5d5d1dbe1edf1eef0f5fafffffcfffffff8ee +e6f2f8f6f4f0f0ebe8edeff7fcf6fcfcf5e8e6ece5eafae2ddcdbdbeb1bc +c7c0fffefffffffffffff5dcb965645bbcd7dc6840450e230f22301b2125 +192b222ca03b251b0d202e61542d1a1d29224376fcf7fffffff3f0f5ffe7 +bc8e4ff4fff2f58595c3b46538526aa8d5a19385764a474e3886def3eb4b +412e373f455ab8a7e1fbfff6f8fafaf8f6ffe044bfe8cbb33e49343c2a1e +252e225f9d777d6c84748d949c9689a7858f9a86a8bbb4a18ba617191a19 +1616191c1a1c1d1d1b19191a19191a1a18141417171c1b1c222423292926 +281c1b1d26203784ae9d98547f89733f48625a373b5a503b555243645952 +73686d96648983659a786bb37865b29363aab55e9faa3a1f292b271f1714 +131212111013181b1f201e1d1c1e2124262624282a28272a2e303032312e +2f363d41404f5555645f6258607d676d62716967816e685e6d574e584833 +3b3d4238474840575049353f535e56565a5441373839484a453c45354649 +35594954325a574f373e474a66504c3f41434e4a426446365348544e5251 +5d647c4f4b645237585450545747514a6b58495057524f525b5f6f4e6b63 +6b694e7264637f575a57726d716155f9b87a6a6a998c94b8e0f7f381a88a +6b787b7f718680817b7d7c797f7e817f7f817b756ea283737178717679b3 +706a6ab1777e7f95a69a7c895b6a597899df9a6862666f77917979725e75 +7a806a8190947d7d7167cccd6f616e788b8c858e898786829577ff97757c +7c7f7d7f83878580818587847d918f82868a827e7877716860616568625e +6062615c689356606196675f6d6b706355615e676f777b79765f956d6779 +7181948d89938a6b7d88898c948b81c0b791918c8e95a7a996f3dbab9be7 +ffeec3c8bcc2d3d6d7d5cecbcadeefecf6fafffffbf7f8f8fffbf7ffffff +fffffffffffffffffffffffffffffffbfffffffdfcfff4f7ffeeece0d5d6 +c5cbd0c4fff8f8fffffffffffbe1bb676b64c4dde2704c5a2b44303f442c +2e33273b323fb5503a302134407366453d4651445c83fbf0f9fffdf2edee +f5d3a5773ce4f4ebf48aa2d6ce855d7893c2cd8f8e837043465957abf7ff +ee525c58676d6c76cab1e3fbfff4f8fbfbf8f4ffdd43c3edcdb645585464 +574b515a5481985e624e65556b727a74678868727f6b8b9e97846e890d0f +100f0c0c0f1210121313110f0f10101011110f0b0b0e0e131213191b1a1d +19161d1416161b0e1b60856f6c2b5665511f29433d1a1e3d311c36332241 +372e4d3f446d3b5e593b704e3f874b388566337c8a367c8b200a1c211e1a +1512110e0907070a0f1115161411101213161717161a1c1a191c20222224 +232021282f322e3b414150494c4248654f554958504f6c5b554b5a443a44 +3621292b2f2534352c433c35212b3f4a424246402d232425383a352c3525 +363925493944224a473d232730334f3935282a2c37332b4d2f1d3b2e3a34 +3837434a6235314a381d3e3a383c3e2e3831523f30373c37343740445433 +5148514e34584b49643939334e49503e2ecc7d3a2d35746c6e8aa7bdc456 +8162444e505043554c4e484c4d4d555557545456504a45795a4a484f4a4f +528c453e3c844d575e798c8060683b47375b81cb854e4648515773595952 +3b4f515b506a76785d5c534db8ba5c4b51545e5f5d696463635e7356ed7c +565a5a5f5f5b5454534f505759564f615f5155594f4d4e504d443e3f4547 +413c3d3e3a333f6b313d437848404a484d4034423e45484e5352523f7751 +49594f5d6d65616862455b676668726b64a49c75746c6d75898c78d5be8c +7cc6dfcca4aea5acbab7b2b3b7b7b4c1cac1c3c3c9c9c3c1c3c7d3cfcfde +e9f1f4efe1eae8e9edeff6f4eeece5e6e4dbe0e3e0d6d5dbd3dbebd6d7ca +bdbcaaaeb3a3dfd4d3d8d8d7d3d7cdb9a5595b53b5cfd4633e4919311d2d +381c1c1c0e21172396311b11051826594e2b1d242e1f3458cbb9bbb8aea0 +9ca0ac967b571ecbded8e07388b6a95c324f699ba96b685d4e262a3b378c +e1f0e54a4d444f514d4e987498a3a88f949eadb8c1d6be27aad6b8a53545 +3d4a3a2c2e362e5c78404532493950575f584b6b4a54614d6b7c75624c67 +2b2725282622232726272828272524242a2a2a2b28252528272b2b2b3131 +30322f2c312c2f2c38354660beb4c17b719690664a686f5e466a6e546c76 +5e7a7d72a09a88bd8aa0bc87b2ba81c6d087bbea8d9ce5a891ca95393d3d +362c23201e1d24222324272c2e2d2e2f3133333537383b3d3e3d3e424545 +41403c393c434a4d535249444c414f535063575d545859575e5a4b52635a +5964584e5a666054514a55514e575355516355585c5c4f4952564f47534d +494a473e525f4e5a476b56524f5c62525b5463566b5f484d42685a546660 +6b5c667270626953675c5e6e69657b70887c706b6b5b7b747c717972785e +6e595b7e6e626c5b62587f727e6a6b75818482ff903a2e448fa7eef6e3e5 +c08e98542a29213068963330262b2f2e3839333730292929235a36323228 +29272469272c266437444d6366888654544c4f3b77c891505e5953586b87 +76596a6959666c73647e47515148bab16a484e484435494c4d5265493d54 +c7744a4244494444494c4c4e55626866768b8b7f807769635851555f6b73 +6e5f706e6f7d827f97ae9c95a9e3e3c9bcb7a9c2cfdcd4d4d5d8d5dfeef0 +f8f8fef6f6f6f9f8eae8f1f4f8f6f2eaf1f4f7fcfce7f1edebe8f0e6eeee +f1fbfbf4ece8e8e7e1e8ede3d7c8d2c9c1bdbdc0f9f1f8ffffffffffffc8 +f4ffbc6ec1d6e7778566703c4439382f4053454d5b5b6ca056242c29162e +232a27273c4e4f96f7fffffffffcf8fffde0ff7a4678f1dcf47d88cb2522 +303135362b2d31303340883e252d38362f525c3c2830353c4dbfeaacecfa +fcf0f6fffeffdaff7ca4ffe0e22986f5f1f7317fb5f0cc857c8098e9ffde +4eb2ecf0f620483026263351e7def1f4f8fafefbfffff9ffe26b9bfafff0 +34394029252f2c251f3db482837c8a9377827b957f777e999c8d86865b8c +9c971e1a181b1915161a191a1b1b1a1817171d1d1d1e1b18181b1a1e1e1e +242423282826291f201b24202e49a69daa64597e794f35535a493155573d +535b415d5f547f77659a677d99658d955ca1aa6195c46778c38875b38229 +2d2f2c21181514141a181718191b1c1b1c1d1f2123252728282a2b2a2b2f +32322e2d29262930373a424237323a2f3d413e514349404445434945363d +50474651473d49554f43423b44403d464244405244474b4b3e3841453f3a +46403c3d372e424f3e4a365a4541404d53434c4554475c50393e33594b44 +544f5a4b55615f515842564b4d5d5854675c74685c5757476760685d655e +644a59464a706258604d52476c606d5c5d6871716fffad6a63658786c6d1 +ced1a07bb186666f738bc7f59087787878757c7d7a7f787171716aa17d79 +796f706e6bad686d6aa87578727c789aa0767971725686d3a06476736c6f +8099876c818579837f837b9b6a767466d2c780606f7279686e6d6e708367 +5e72df906d6d6f7165646a6e6e6d7480838190a3a195958c7b786d696973 +7f87827687888c9ea5a7bfd7c3b8c1f5f2dbd6d6cbdfe4ebdee1e6edf3fd +fffbfbf7faf3f7fcfffffffdfffffffffffffffffffffff4ffffffffffff +fffffffffffffffffffffcfffffffaecf3e6dcd6d3d2fffcfefffffffffd +f5bbe1fcb26bc6e0f489997c8554605b63585f654c4d59607fc07c4e514c +36504b585e5f6c776dabfffffffbf8f1f0fcf7deff83588efff4ff94a5f3 +5a5f6c69625e525459595d6cb66c555d686661848e6e5a646a6d73d5efa6 +e3f3fbf3f9fff1f6d1fc7aa3ffe3ea3191ffffff4191c9fbc477787c89d8 +f4e169d3fffdf92e736c64606174ffedf8f7fbfafffefffffafcd45f9bfe +fff1384a6155515a504a4c5fb16a69616a71535e59736059607e81726c6c +4172827d15110f12100c0d1110111212110f0e0e14141415120f0f121115 +15151b1b1a1c18161c161913190f16298074803b335a593016343d2c1438 +381e343d213b3d2e564d3b703d536f38616930757d3468973848965f4e91 +64101d22221b1413130f110c0b0c0e11120f10111313141618191a1c1d1c +1d2124241f1e1a171a2128292e2b211c2419272926392a30272b2c2b3634 +252c3f363540352b37433d312f28322e2b3430322e40303337372a242d31 +2f29352f2b2c271e323f2e3a264a352f2b363c2c352e3d30453922271c42 +342b3c3540313b4745373e283c3133433e3a4e435b4f433e3e2e4e474f44 +4a43492f3c282e55483f483338294b3a422f303c4d504ed87d362f366365 +a2a5999c71518a61424a4d629fcb635a4a4c4d4d55564e514a4343433e75 +514d4d43444241844045417f4e52515f5e808355584f513567b37f41524c +4445576f5d3f5354475561695f7d4a55564cbab26b48524e4f3f4d4e4f54 +674b4358c97955525459504c4b4b4b4b525e62606d817d6f6e6553514c49 +4d57646c695c6d6d708185859cb5a49aa9dddbc1b9b7aac0c5cec3c5c6cc +cfd9e1ddded9ddd4d7d8dfe1d6d2dde1edeff1eaf1f1eff3f3e2f4f4f4f1 +f4eaf3eee6eae8e5e5e7eff1e9ecefe4d9c8d4c8bdb6afacdfd1d0d0d1ca +cac2b987c0e8a664bfd5e27180677647544b4836363b23273237518f491c +2522112d29343738464f4782d6d8d5d0cbc3c1ccc7b5e8704277f3def380 +8fd93e40504e4d4637353737394891472f3742403c5f6b4b353d404044a4 +b96a9ea5a89aa2b5a3b8a6de618ff3d8df2483efe8ed2777aedda0525257 +6abcdac64ab4ebecee215f534d474553d4b6b5aaa4a0aaadbfcdced9ba47 +83e7ede129384c3a363e342b2b3c924e4e4651583b443e58443d44616454 +4b491e4f5f5a3b312d33332c2b2f2b2b2b2a292725242625252726252527 +2f33313033302d2d2e2c2e28302734333843b5bcb0a756848e7149567066 +466673586d7f5f768378a7a686c18e98ca899ade819be4969ce1c781c1f0 +9996dc7933373731282524212422222326272826272d3437343130313233 +3232373c3d3b373635353a42464746484b59644a51576d6f6b65615f696b +556e64746b59556446444c6052524a47414e465154564e465759544d484f +5a53603f52483d5b554b554f6055525b4b545b6065636962634b54455087 +5d4c704e656e6b6b6792755a6a6e6a767b685b576c4a6a6359808593836d +9197915c7f9189a7999c8593a8989ea1aeaaa6b597a0a1a597fd91493e3d +79a5a2c5c5a29aa66b363642302a708f3e382e363a34363539463a2a2f36 +32693a3c392c484b3c7e514f48705e515e58678a8058675b6e7596d69684 +7787a59bbfc3b7c1b7bbacaab8bec7bdacb6b6c7f5e8bec7bcc4c1c2c9d9 +d6d5e2e4ece1f2e5eaebecedecf1f2f2f3f0f4f7f8f3f2fefef8fffffbff +fbf8f9f9f5f5fbf9f4f7f2f2ece6edece9f6fefdfff9ebeadae2e0e0dde8 +ddd5c9c7bfc2ccbbfdfffffff9fafafbf3ddea82a3bd9bacd2998453493f +37353d3215467c3a104c6b3e1c242a302d292a1e181422293567f1f8fdff +fff5fdf9ffcaf3e5849bfaf3fb9a85659c6d7c3b444762a7898e948a779a +81346a96b3d63d3a313f625560cbccd5fffffffffefffff2fdfc5c5debd8 +ed543c51121c16251e222b202f2f2e3151272c152220233620231b241f2e +4287f6e8fffffbf6fcf8fffff5f66979f6eaf848a5fcd0fe477a83b3d696 +7d88756e5ba42883efcaea2a2f2126282315f2f6f9fefffffefffffefaff +ff8f88b84574323d23241d20302f23309a7d957d7881958e96af92979c90 +98b2c1e7ade9ecbd2e242026261f1e221e1e1e1d1c1a18171918181a1918 +181a22262423262320232725241e21162220222b9ea4988f3e6e775a3441 +5b5131515c3f5265425a65588683639e6b75a86775b95c76be7076bba15d +9fcf7c7cc565212729241d1a19181a18161515161614151b222524212021 +20201f1f24292a2824232222272f33343538394752383f455b5d57514d4b +555740594f5f5846425135333b4f41413b38303d354043453d354648433c +373e49445132453b304e463c46405146414a3a434c5156545a53543c4536 +41784e3d6140535d5a5a56816449595d59656a574a465836564f456c717f +6f597d837d486b7e7494888e79889c898e8d9b9894a38892919688faa76c +6353738c81a5af8c79958060667a706eb8d783796b71736b6d6969756959 +5e656097686a675a76796aaa7d7c7ba68f7a7b6a759894728579888ca5e3 +a5978c9db9adcdcfc3cdc6ccc2bcc5cad9d4c9d3d0dffff7cddbd6e7ebec +e6f2ede9f4f8fff8fffffffffffffffffffffffffffffffffdfffffcffff +fbfffffffffffffffffffffffffffffffffffffffffdfffdfafff8fdf5f0 +e7f2eae8e7e5d7d1d3bcfcffffffffffffffffe4e880aac9a7b3d397865c +5f5d59575a50396a99572f70976d4b4f4c4d4b4c564e47414c4d517effff +ffffffeef4f0ffc0e4d984a0fffaffa79b7eb2808f53676c7cb387848786 +86b7ab6295bfdbff6a7074849f8887e6dcdbfff9f9f7f6ffffeffdff6e75 +fff2ff7060825366626b59575e54636665688a6166525f5d61745e615760 +5d6971a7ffe7fafffefbfff9fdfdf4fc6f83fff6ff54adffd4ff4c7f88b3 +c988777f5d54459e3da0ffd3ea3861646864553cfffffffefffffefefffd +f8fff5848ec55181435a535c5451575654539b6c7d62585f716a7490747c +81757d97a7cd93cfd2a3251b171d1d1615191515151413110f0e100f0f11 +100f0f11191d1b1a1d1a1717171518141a0e16110d117e8072691849573b +15223e3414343d203444203541325d593974414b7b3a498d304a9143498c +722d71a45457a54a0b171c1b17161713100c0a0a0b0c0a08090f14171512 +111212121111161b1c1a1514131318202423212123313c22272d43453e38 +34323c3f2d483e4e473531402321293d2f2f28251e2b232e31332b233234 +2f28232a352f3e1f32281d3b3329332d3e332f382831373a3f3d433c3d25 +2e1f2a6137264a263b4340403c674a2f3f433f4b503d302c3f1d3d362c53 +58665640646a622d506055746c746172867475727b746e7b5f6b6f776bdb +81443a2d536d5e7e805d4e6a573840534b4992af574e3f4548434542414b +3f2f343b3970414340334f5245875c5d5a846f5c5f525e817b57695d6b6f +88c586776b799487a9a99ba59ba09394a7b2bfb8abb5b5c5efe0b6c2b9c7 +c7c8c7d4d0cddadde9def1e6eef3f2f2eef3efefeee9ecedece4dfe6e3db +e1dcd5e1e6e9ecece9e9efefebefedefe9e5edeae2e9eae5eae4dde2d6dc +d6d3ccd7cecac3c1b5b0b49ddde0e1e1d9dddedfd7c3d37198b593a1c58a +784b4a45413e44381f4e7d390d4c73492b333437312e3228252028292b54 +d5d1cecdceb7bbb5c28dc5c97899faf2f4938469a67a8946514b558b6161 +64605b8779316895b6dc494c4957735d5bbbafadd2cbcbc6c5d1d1c4e1ed +565bead9ed59466531433e493d3b3d303d3f3e4061383d283533384b373a +333c343d4376ccaebbb7afa9b1adb8c2c8da536bf0e8f848a0f3c3ed3668 +7199a965535e433d2e861e82e9c2de2746454d4b3a1de4d9cac0b9bdb8be +c9cfd2e1db6e74ab396d3044393f35343c3934327c4e61473f4659525974 +585f6458607986aa70acaf8035333234333132362a302d352d342b292e29 +2d2d262d352f2b2d303333343638332f2c282b3035393e2d6fcda9a2735f +7e755643646b4e5977625b796c728885a2b283b3a28dc7af89d6b08ed3d1 +83b6eeaa8cd3e180a3df5b26342f321c26242b261a2328262c1c26262b30 +2e28272e3032353634313337393536363d4c4a4a57475f6556565c6a5c50 +6451696461615e54534f53535668493656675e6f4c465466614a5366634e +50645f4f4f58585c5d5b4f59524c4b53795a4c4a4e47764e497163484e55 +7263854133365f6a75536b7258556361655b56666258647c759271768470 +8d957d8f92867e7873737e8476646f5e655779a692b4e9ceb6c3c6b1c3d1 +c8efbfb1e5b6c5d2d8d9cfe7edd9bbb9c0c7b9d6e5e3d4e9e0dadddbe3e3 +e6ffeff7fffbfcfffbfffafcfffdfdfffcf7f2e4f0f4f7fffffffef5f4f8 +fbf8fcf7f9f9f1f9f0fefffffffffffdfafffffff3eee6e4e5d9f3fee2e2 +d3dbd4cbcfcbd3cec7daadbeb7b2ceb99c9b8ea694968f8a9d9ef8fbf7ff +fffff9fffdd8e0484d59c5b4882e4e393a3036322765284842797a79a0d9 +543434333a393a58333a35454875fbf9fefff5fff5ffffebfa879ad4f0f2 +edeeaa3837282f292c3234343a2b322732203138403e3c3a4023241d2a35 +4582b4b4f6fcfaf9f5f4ffcefbf485b3ece2f99574adf5eeff4496aff4c8 +75938f80caf1af32b4e7ebe92d474f6b404765e0d3e2fdfcfefffffef9fb +fafe7042e1f4ef710f28191d1e221b1f1f2f272c2e2d392b1e28242a2529 +1e2421171b23274deefffefffffbfefefcfce9faa679f872b0b12cf6eafe +96a1a8fff5c6978d81abbfed825af5ffff58342327192d2fa3f6b49f7e6a +7b7865a28a8757443c64302f2a2114101115212721259199805f91a09f93 +7f737b826e477a776a888d939bb0292726282725262a1e24212921281f1d +221d21211a2129231f21242727282a2e2c28221e1d1f232629175ab6938c +5d496760412e4f5639446049415f4f54676581905e8e7d68a28a64b18b69 +adab5d90c88467b1c26489c84716242125111b191e1a0c1518161a0a1414 +191e1e181a1e1e1f2223211e2024262223232a39373746374d5344444a58 +4a3e503d55504d4c4c41403c40404355362345564d5e3b35435550394255 +523d3f534e3e3f48484d4e4f434d46403c446a4b3d3b3d36653d3a625439 +3f46635476322427505b6645596147445250544a45555147536b64815d62 +705c7981697b7e726a645f5f6a7162525e50584c6c967f9fd3b8a0afb49f +b4c3bdedc8c0f4c0c4c7c7c5b8cfd1c7c1cbd3ded2f1fffcebfff4eef3f1 +fbf5edfff1f9fffdfefffdfffcfefffffffffffffffdfffffefffeffffff +fffffffffffffffffefff9fffffffffffffdfafffffffbfaf4f3f3e5fbff +e7eae1efeee6e7dfe4ded5e8bcd2d2d0ecd7b7b4a6bdacaea59eafaeffff +fefffffff6fff9d9eb575b67d3c2943c5d4b51485351488441574678797e +b4f97a5c58525352537a636f626a6286fffffffff7fff5fffee7f88aa6e6 +ffffffffc45f6d6a7774727676727465706a7e6d797a77717274856e6f66 +6b6d73a7cdc4fffffcfaf8f9ffd4fefe9ed0ffeeffa18cc6fff4fd43a5c2 +ffc46377736cc9ffcd58d7ffffff53758baa79768afae3eafffafafeffff +fffef5f97850f3ffff89305659676a68565655655d636564706457615c64 +5f635a60605861655f76fffffcfffffffffff6f5e8ffae84ff82bfbf36fc +edff97a5acfbe1ae877d6288a0de9171fffffd615f6064515b52b6ffb49a +766073705e9c8380514854865558575a5b5d585553585a51988b6c45717e +7b6f5d536069552c5f5c5070757b81961d1b1a1c1b191a1e1218151d151c +1311161115150e151d171315181b1b1c1e221c1816121417191816003d96 +6e6536244843241132391c27412a203c2d30443e56633262513c765e3784 +5e3c807e306199553a84963c66a92c0014141c0b1713150c00080b090e00 +06060b100f090a0f101114151310111517131414192826263220373d2c2c +3240322638253d38353738302f2b2f2f3244251233443b4c292333453e27 +3043402b2b3f3a2a2831313639392d37302a272f5536282629225129234b +3d22282f4c3d5f1b0d1039444f2b41472d2a38363a302b3b372d39514a67 +42475541606850626559514b464651533f2e4036453a5c87708cbea18997 +9e8797a8a7d8b3a9dda7a8a9a9a496abac9f939ba6b2aac8d7d2bdd0c3bd +c2c2cbcbceead9e1eae5e8ece7ece6e8ece9eaeff1f3f3e7f3f3eef3eff1 +f1ededf1f1edf3f0f4f3ecf1e4ededebeae9e7e3e0e8e7ece4e2dddcdccf +e6edd1d3c8d4d1c5c3bac0bab4c79bafafacc8b5969486a092968e859594 +ebe8dfe2dfddcdd6ccb1c93a414dbaa97e254835372e373229621a302559 +5a5e91d253373432353536593b4539413d62e3dbdfdfd2dcd1dbddcae377 +90ceedefe9ebab424b44514b4d51524d4e3d473f504151545750504e5843 +4e48494645739385bfbfbdbebfc3d3a8dfe689bef2e0ee8b72b0faf0fd3e +90a6e1a94b625d53abdea731b6ecf1f23c59657f4e4a5ecdb6bbd0cacacd +cdccccd1d8e56137d9efe97115393642444438373341393c3e3d483b2e38 +353c393d343c413a3f41384ed8d9cbcbcac7cbcac6c7bcd68762ea68a8a8 +1ee2d2e077848bddc6946d634e758ec97454e9efef4e413e45343e3498dd +8e70472f424234786664372d3465343a3a3a39393633363a392e776e512c +58656357443a434b370f423e2f4c51575e733b39393b3a393a3e3c373035 +282d2b2e221f282d27292e2a2b292828282b3032282b2b2528303532322f +4ab2afa87759667463445e6e51587a675f7f7070948098c183adbc89b6c7 +80b4dd8c9fefb887d7ef96a1e5d68eb1d46222352f2e2f24242923252420 +282221252a2e2f2e2e333233363837353639343c3f4e4f56514e4a405957 +5f5f686c675f6254624f635b604e506b67534c57696c52675e3e3f563949 +4f4a4b4e535857575d5c484d605954475562525868595d5a4c6853607e69 +5f6072514b4f51675a596a886465805e657c828b7a96829ca38f837c877a +7c998c829e77705c6780747582806c887954776977605f7693631d2b2e22 +172a2d1b3a13220f011c0e3a30292a493c3d4f4a3e3d46554d646c667e8b +80929397989eacc9e4b5c9b9bfc6d5dac1bdc9c7ccd1dbd7bac3b5a9c2b5 +c3bdb1aeadb7bcc2b4e0ceb19dceffffffffffffffffffffddb4e0e7eff8 +f874d5d3766b6a655e5d5f575e555f64705548544d7c9762534644595760 +67a0f0fdfffffcf3ffffffc3a0004c8ff4fbee0e3857707057393b657bd5 +808b75837788502b69bbb9e2464f483c5c5a61ddbfd8fdfffff9fffefff2 +fffe6790efddf29c8632332b251e26312936305c38331d282e254a43382e +2327172a282f477acbd9effffaf7fff8f7e4e3f79171d5f8f3e65798f5ec +ff3f9d98e1f59c8b9f8e7fa7c356bff1ccf2294b5930334936d3f7fefcff +fffcfff8fff7ffff745cdcafaf8d182b26200d19252127342e2d24192421 +272c282c28231b1e11231f262a2aa2dac9975d53573f83c0a89c51408631 +415f41d6e7f89f326b79e3b820212f52daed6c2bc882c1642423222d2b3e +282d3d5c77885a7993803b749353222a211a261d0e0b101621261d1e6493 +738474759a919491887cc5bad7cedacdbcb6baab2f2d2d2f2e2d2e32302b +24291c211f2216131c211b1d221e1f1d1c1c1c1f24291f24221b1b222420 +1f1a349d98926143515f4e2f49593c41614f45625252745e759f5e889764 +91a25b8fb86779c99261b1c9707cc4b67097bd4e102621222217181d1517 +141016100f13181e1f1e2123202023252422232621292c3b3c433e3c3a30 +47454d4d565a554d4e404e3b4f464e3b3d5854403944565941564d2d2e45 +28383e393a3d424746464c4c383d5049453b4956464c594b4e4c3d5a4350 +6e59505163423c4042584b4a5b795556714e536b717a6985718b927e726b +76696b88786e8a635c48536c60616e6c5874654163576652526a86530a15 +15090014180929071b0d011d103d342c263d2b283a3b3f444c5950646b63 +7b877e93959c9f9fa4b9d4a5b9a9afb6c5cab1adb9b6bbc3cccebccbbdad +beabb6b3adb0b1b9babeb2e0ceb19dccfffef9f9fbf2fbfafaf3d2afdfe9 +f4fdfb75d2d1716a6c6d6a6b7067685a6469756362726792ab76665b566b +666e74aaf6fffffff7ecfefff3bfa709599bfefff717446682846f53587e +8ada7c826c8287a474518bd8d3fa60727a738a807ff3cfe2fffffff9fffb +ffedffff73a2fff4ffb4a75f71767874797f767e77a3818273808070887d +7471707a6b7b706c769ce2e7f5fff9f8ffffffedeaffb495edfff8f070b5 +ffeff635a7a6e3ea826a7b7375abd66fd8ffe2ff41719575707d60f0ffff +fffefffbfffcfffafeff7869ecc1c3a53b5c666b5961625a606e68675c51 +5d585e636064605b535a506566696356bae4cb98635b604683c0afa76154 +9f4b597653e3eefda538727ad3a618191d3bc9eb854ddf8ec47250605e63 +59603b363e576e7e52718a7a346e8f593d524e4e5f5f5c5d5a575657544a +6f8d646c5651746d72736d63ac9fb9b1c0b5a49ea0912321212322212226 +241f181d101513160a0710150f111612131110101013181a1012130f1219 +1a1410071c80786d3a1e324231122c3c1f22422d24402e2c4e384b72325c +6b3865762e628b3a4c9c6534829a414f978d4a749d33001314161a0f0c0f +080a07030a0401050a0f100f11141212151716141417121a1d2a2b322d28 +2319312f35353e423d353628362337313a2a2c47432f283345482f443b1b +1c3318282c27282b303332323835212639322e21313c2e32423137322640 +2c375742393a4c2b25292b41343344623e3f5a353b5157604f6b57717864 +58515c4f516e5d536f48432f3a53474855533f5b4c23403348383f5a7644 +00000000000005000f0009000015032c1d110b23110d1d1a171b26383148 +4d445a62576b6d74767f8faac596aa9aa2a9b8bda4a0acacb1bac5c5b1bc +ae9fb3a2aea9a1a2a2abadb3a6d6c4a591bff1f1ebecede2ece9e9e1be99 +cad4e0e9e863bfbc5d55575654514e42463a444955403d4c426e8853463c +3c534f555a8fdae1e3dad1c2d0d3c39286003f83e6efe20430516c6b5538 +3c5e63b259614d63637e4e2c6abab6e045545449635959cdaabddedddbd7 +dfdae3d0eced5d8aecdaef9a8c3e4c4b4c454d554c564d79545344505245 +63574e46424e475a4b43486aaaacb9c5c0bfd1ccd0c2c8ea967bd7f1e1d5 +5299f6e8f22b8c85cbd6715b6b605c90b851bbf1cdf4315a7148444f32c4 +dcdad2d0d2cbd2cad3cfe1ea614fd2a7aa8b1d3c4142323b40393d484241 +352a3430363b393d3b362e3833494848423398c1a46e352c351d619c867d +3a317f2e3f5c39c7cfdd8316505bbc9001020929b7d4672cc376af592d37 +383f353f1d171f374d5b2e4d695a1854763f1e302d2a3e3b35373737383a +34274d6d47523c395d55595950458e829d939f91807a7d6e3a3939393734 +3335342d2e352626272726252f37322c2c2b26282a2d2e2e2c2720292c26 +2933352d2f363285bba4845f4e6b734b54705c53776e6180766fa58a93c3 +8da5cb8da5d8a27fe2bd83cde49b9de8e089acebc98cc1e06426343a281e +232e2825262226252126292a2a2a2b2c3131323536343436323d37484848 +52525d5a6b5b6a5b554b656b5f6c5e495e4e5d614d6365473c7356675562 +4a3b564b514e495056544c4e535a4d566d6a634f51564d4c595754645462 +5776576378736562737c837879755f58716c6d677f5552657c7466665663 +495153636d6b655b70506c6b6b677170666e646c6c805f65566872676a74 +9062464c495d593f3927242d2d342d292731232b324c383c54372e1c1619 +111f2624102122350c04051e0a192f0d141511110a151017241c1312352d +10115e12241b242829352a2b2d3d42534d6553486a6d8b907f8b8da19796 +8d81968cbbabb68c88b58caac8b7bdd4bfc5dae5e4d1d9c9cbd5c9e1f7e9 +e7edf3ecdedfc3ebf0fefffffffeffffffe5eac1dbebfffeff8fb2e8fcf9 +ae6492d8ffd895b094bef7f0cb65b1f8f9f94e6a57585c5c57ade5ecf7fe +fdf5fffbfef7f9ff7b5ad0f5eeb678392b3029292a25281f284742292226 +252e4d383235271717252b3b3f75fffffffffffffffffffffffb9050bcdb +9cc44765ebe8ff59aeb3fff5ae888899cfd1f68689fcf3fa6e5d3f222936 +4596e9e9caa29e92828ad9e1bd947771976131312228171b1a1616201c22 +232523202526262728272c232329261e241e1722243e67696f5a89915d23 +3e632a2f2f29293628b571212540a0a89f460a1120173b665114775e4d2a +281e1f3d2d2eec3c34c1fbf4a6fff1ffc2e3ffff382c38362b101d1b1a1c +252926285bbd897e796d96958c7e7a649997b0ada7aaafa4b1a82e2d2d2d +2b282729282122291a1a1b1b1a19232b2620201f1a1c1e212222201e1722 +231c1c25241b1b231d71a6906e4939565e363f5b453c5e564764584f8369 +719e6880a66880b37d5abd985ea8bf7577c2ba6487caa970a7c94f14232a +1a1015201a17161214130f14191a1a1c1d1c1f1d1f22232121231f2a2435 +353640404d4a59495849433953594a57493449394b4e3a50523429604455 +435038294439403d383f45433b3d424a3d465d5a533f43483f3e4b494656 +44524766475368635552636c736869654f48615c5d576f4540546b635555 +4552384042525c5a544a5f3f5b5a5a56605f555d535b5b6f4d5443586358 +5d678152323831454127221213212731241e1d2e2b3737492b2c48323325 +1a1a0e171c1906171a320d070c22061228060d0e0a0a030e09101d140b04 +2018070e60121b0e151e25372e2d293534433d554135535370705e67687a +70757b798f86b8a9b3867fad81a2c1b1bbd7c7cedae0dcc9d1c9e0efd8ea +fff2f4fafcf2e2e2c3eaebf8f5fdfff0fff1f8d8ebc6e0f0ffffff90b4ec +ffffbb73a4e5ffcb80987fb0f8fbde7ac4ffffff5d80757b7b756abcf1f4 +fbfffff9fffffffaf2ff7e64defff8c48c5a5d6d6c6e6d686c6369888570 +6f736e71836a666f6c63626c676b6189fffffff5fdfdfbfbffffffffab6d +cfe4a0ce6387fff4ff5bc0c5ffe89768677cbfcbfb9193fff8fd72768176 +757879bdfff8d1a0998b7b82d4ddb9967f7faa784b524e5e5b66675e585e +5c626163605a5f5f5d5e5f5e62595960615d655e4e4e3f4d6e6d75609098 +612c4d7b47515755535c48ce85313550b2b69e4516212a214b85854ea783 +68495c5b5d755c53ff4a39c1faf0a2ffeeffbfdefcff48495d635e4c605e +57515051514b69ba7e6b5b49706f6a605f4b7e7c918e8d90958a978e2221 +21211f1c1b1d1c15161d0e0e0f0f0e0d171f1a1414130e1012151616140f +08101410131c1c1110140858876d49241a3b431b223e261d3f34263f3228 +5d4044713b53793b5386502d906b317b92484a938b375a9d804882a93200 +111b0f0508130d0a0905080703080c0d0d0f100f1312111415131214101b +132424222c2c3633433342332d233d433542341f3424373d293f4123184f +30412f3c241530252e2b262d333127292e33262f46413a26292d2523312e +2c3b2b382e4c2e394f4a3e3b4c555c51524e38314a454640582c283a5149 +3b3b2b381e26283842403a3043233f3e3e3a46453b433941415535382236 +46414a566e3b17170d211d0503000007192a25221c25161f21361b1c321c +1f140c1209151a15000d0d2100000014000a2000050604040008030a1711 +08011f1502055508140810151a2a20201e2a27342e46332643445f614f57 +58695f6267647c76a99aa4766e9a6f8fafa1acc4afb1c2cac7b4bcb1bfcc +b9cde3d5d8dee1d8c9c7a7cccdd6d2d5d5c3cfbfc5abccb0cadceff0f182 +a6ddf3f1a75c8cc9e1a8617c6495d9dbbe5ba8edeff14869595b5b554a9b +cdcfd8dfded8e3dfe4dddfed694cc5eae0ab733b3a444342443f433a4160 +5c46414541465f4540474035394441453e66e3dddcd1d6d3d0ccd4d4dae3 +884eb3c77fa93a62e8e0ef43989be6d58559566aa8b1dd7378ede4ec6460 +5b4546484990d6cda7776f61515bacba9e7e67658e5b2e332b3a323b3d36 +3239373d3a3c37323636353638373e353740413e453c2e2d202e4c4a4f3c +6f7948112e5b29363d3c3d4531b86c171b369a9d8a300006110830655e25 +81614929352f2c442e28e0291ba5ded585e4cfe3a0c1e5e82d2b3e423f2a +3d3b36333537352b46975e4d413159584f44422d615f75716c6d7267746b +30323434322e2c2b2c2931372b2e342f3533393f392d2a2d282a2d303232 +2d2723292c292b302f2a31393656bd9c8f6b4758775a496c6a4f6d786378 +826dabaa8abfa68bcaac8bccd680b7e99a93e8d998a9f6e487baeccc83b9 +e57e2b362b2d272e28252e2d2723292f312e2b2f2f2d31302f3234333335 +2b3b42556049564949515750625852555261557e60636b61625a58644e54 +517b545a6d64546b6c4f535d5b5b5455545f556b4e3d54525b5b66525266 +5b6768705e6e76837a666f61646d72675442544b4849503c4e6e596b636a +626473748c898b7f68987a6e5b5f6b6269735a696a686d765b6f7e756893 +7d7d6e788970693c2c6ab9fbffffffaa4e1f27362430261e2118315a3a28 +3428291d1f2726292a262f25223b2a2d272a3237282c2425292120262327 +312e282a382924263b17232c22211921151c1e2e40241d302e2d35395b5b +476359543734341f161c211120294c52221c300c03061102090914150f18 +0c040e1113291613241d27251b2a182b3745494e635365544e575c696a6a +8f847d797289795c819bd4a5a7b0bbc9c3adbb7db8c3d5e6bbd0d0b9b8ad +a9b9fffbfdfffffffffffaffffffc7ace7fefffabfb7b9c6a79c9f9c8d8b +8694868177727b7d7784896e72615d5c5854507afffff8d9e4ddd3e1fdf8 +d3b76a57988e54625f53f7cbff5c6d61dee39b164024bfc8bca552fbd5f4 +87322b28314d562b3757709b9a838a867b468098793f414638316dc08d20 +0f27251c262b302a282727282b2e31242c222828232f281972c21e35edfe +ffaffaf0f880aaf5482f3a30397c5034737342502628533b35272c322b27 +20241650b252262933323212f27e226bff7059bf9d57ffe78bff674c3530 +252f1e1e1f1f2426262d3c93848ba99996a194879797909098a897a8b5a9 +acab242628282622201f201d252b1f22282329272d332d211e211c1e2124 +2626211b1a2223201f2321191f252141a888795532436245345753385460 +465c624d8a87659a8166a58766a7b15b92c4756ec3b46f80d0be6195cbad +669fcd6917251b1d19201a171e1d1511171d211e1d21211d1f1c1c1f2120 +202218282f424e3744373941453e50464043404f40694b4e564c4f474551 +3b413e6942485b5242595a3d424c4a4a4344434f455b3e2d44424b4b5844 +44584d595a624e5e66736a565f51545d62574432443b3839402c3e5e495b +5159515362637b787a6e5787695d4a4e5a515862495859575c654a5e6d64 +56826a6c5e697c645b2d1a55a2e2fcf4f0933c14213119231a192a253a5c +311e2e292e2320251e1d1c19221b1a38292e292c313424292021251d1c22 +1f232d2a2422261a212c4723293024272634282d293541231a2b27252a2c +4f4c3651433b1c1f2c1d151d2313212a494d1d172d0901081a0a08000605 +00111e1b1613122b1e1d29222b291e2a1728323f44475a4b5a5157656875 +7371968b84827d98886f94a9d59a969ca9bfc6b7cb8dc4ccdcefcae3e6d0 +ccbdb6c2fffffcfffffffffffdfffeffc9b1effffffcc4c7d8eed5cac9c8 +bfbfb4c0b3b0aea9afa99aa3ab96a498959084756483fff9e4c4cfc8c3d4 +f5f5d1bd7b68a19154697169ffd3ff5b786dddd88a01270eafbfb8a652fb +d0ed803e616f7284834b4c61729790767d796d3d7e9c814b4f5a525496f2 +c75e4d635d525e6366605a595756595a5d50584f535756655e4fa1e93b48 +f8ffffb2fef6ff8ab6ff625166606bac7b58949163724a48624a534c4f57 +545b636c5787de7e5d646d676037ff8f2b71ff725bc2a058ffe685ff7163 +565954625553504d4c4e51504d977e7a8e75707b72697c7e757276867a8e +9b8f9291181a1c1c1a1614131411191f13161c171d1b2127211512151012 +15181a1a150d0b101411131a1811151a102c8d6754301528472a173a3419 +353e24373c26615d396d5439785a397a842e6597484196874354a38f3268 +9e813e7aab4c00110b0e0c130d0a111009050b1114111014141013110e11 +1312111309171e313a233023222a2f283a302a2d2a392b54363941393e36 +34402a302d552e34473e2e434629303a383831302f382e4427142b293232 +3d29293d323e3f4734444c59503c45383d464b402d1b2d24212229152747 +3242393f37394849615e60543d6d4f4330343e353c462d3c3f3d424b3044 +534a3e684c4e4554694e410c00266eacc9c3c26a1800132d1f2c1c131911 +294e2814201b271f222a29292922291c1833252926292d2f21241d1e221a +191f1e222c29232024151a2039151d2219191521151a19232f0e07171410 +16193937223d2e27070a1506000b15051318363907011a00000007000000 +000000000400000000150604120b1210030e0009121b1e1d2f1d2c26384c +525f605f867b74716c8575597e8fb67c7a8391a6ab9cb072acb7cadcb7cf +cfb6b1a29aa5e4dedde3e0e3e1e6e2e6ebecb49ad8ecede6aeacb9cbb1a5 +a5a49a99909f928c8782898579838a747f71706c63564868e8e2cca9b2a9 +a2b1ceccab995948827230404943edbeec3d4d3fbfc27600130096a29b87 +36e1bcdb70283d45475a5822253c4d726d545d59502067856a33363f3534 +76cfa137263d3a303b40423c3534313134363a2d372e353735433c2d81ca +1d2ad8e3e393e3dce9729eed49394d485292603e7975485730304d33392d +31363435383e2d5fba5a35363a332f0be46d0e57ea5a43a78338e0c86dea +594739393443363533313233353029725c5c735d5964574d5f6058565b6a +5a6b786c6f6e2c3034363533312f39383c352f37433f38363639352b282f +31302b282a3032302e2c2b2c2c29292c3032353aa4a4906f51456e6c4562 +79516382646c8c71a1ca7db7ca77b6d987a5f6b083dcdb8eabedda8cbef6 +e389bcf2de88b4f1913635272d2a2b2b30302823242a2c2a292d2d2a3331 +303234353639454649445f486c605d675554504b465c5552556853605f5a +485e5a4e6077415e574b52444d4f3544424a454e4b555869545f67656961 +746b675e5e745d755e5a6266676272575e555f5577717c887462817f8f64 +7b705c6f5d6d5c78666a5c4f6f614d81686b6d7c6c7562605d78786d6d75 +68756c5c685c64676a777355492962fbffd4e5f5ffffd954202523332128 +2219465c32251e1f17141b2429272a2a2c1f2429232526223c352f27241f +281d282724202124262d212118100f040000090300000000000009000109 +0e100a010b07141d3d1f261f24231826181e23212622302335211b1b180d +232f282d3a2d2a1f22282c2a271e0f1a17091b0e20110e10091316070e11 +0300000004000000000000000000000000040501030d0000000003050000 +00000000000408130c251d2e2c3235413a42403432373d313e3d424b4759 +4c5260634e667887828d9c9c80bfd1c8c2b9c8a487a3aba4bbb3d3d7e3d4 +c1a2afc2dae8d0d3d1dcfbfff8f4f3e7ffe2e7f5ecffffffc2d0dd9eb4ea +efe6aae4b3ebc4b0a69797a6acf29c8bddffffffffffffeffffff4b06b67 +5f67728b623c4735304c3e4350413d433e423d484f3e453f433b353a2d25 +6ee82820cbd67938ff47c6cfafff76483b3171a7a6245ead6d24331f2543 +2c1b172f3e1a0d150f7487511e352e272320b9ba1c40f9ce928de82effc5 +c1ce96333431221e292b2d29251f1d23357385797d929b92848c968c899c +99adaaa6a3a498981e222628272523212b2a2e27212935312c2a2a2d291f +1c2325241f1c1e24262425232223201c1b1b1d2022258e8f7a593c305957 +304d623a4a6a47506c5180a85891a45190b3617fd08a5eb7b66986c8b062 +95cdba6398d0bd6b98d87c2223161d1c1b1b2020161112181b191b1f211c +211d1d1f21222326323336324d365a4e4d5743423e39344a434040533e4b +4a45354d493d4f662f4c453940323b3d23323139343d3a444759444f5755 +5951645b574e4e644d654e4a5054555060454c434d43655f6a7662506f6d +7d52695e4a5d4b5c4b6755594b3e5e503c70575a5c6b5b64514f4c67675c +5c6457645a4a564a5355596866493c1a51e7f0bccadaf2fcc74719201a29 +1b2526204a5d2d2220221c151a21211c1e2022192028222424203b342e26 +231e271c2726221e1f22242c222c2f32372f251d2f2e252b282e24203424 +282d30312b222c28333c57383d3337362c3a2e34363336303d30412d2829 +2a1d26281a1b22233b37262224272c2a1c2926182a1d2f201c2019232516 +1f27220e1512200b130a0a10191b0e12190d090e09030717090b110a1514 +07080e100f0d071212170c1f13201c2224322b37382f343d413136323a49 +4f685c626a70637b86918a97acaf90c9d3c8c4c1d8bca3bec0b3c3b3ccc9 +d2c0ad8e9ab0c9ddccd6d4dffafff4f0f2e6f8d6d7e3dcfcf7ffbcc9d393 +a9dfe9e1a9e3afe3b8aebdb8b4bdbbf89c86d2f5fdfdf8fdfee7fefff5b1 +6e70718193af86606957516d606571625a60585b566168575d595b585b62 +534a91ff4335d8db7834ff4bd0d8adff805f5d5ca2dbd8548cdda15c7157 +476459514d657656515e56b5bf8552695f554a40d2cb294affd69a93ec31 +ffc5c1d1a04551564d4b515355565352504f4e7e826a626e736a626e7b73 +6e7d768b8d8c86877b7b13171b1d1c1a1816201f231c161e2a26201e1e21 +1d1310171918131012181a16161211141413121416161412767055341f15 +3e3c1530431b2b48252b462a577b2b62752261843250a15b318a893c599b +8638699f8c3468a2904173b95f090d040e0f0e0e13130c07080e110f1014 +151115120f11131414172122251e3922463a36402d2c2a2520362f2c2d40 +2b383732243b35293b521b3831232a1c25250d1c1d27222b263033422d36 +3e3c40374a413e35354b344c3531383c3d38482d342b372d4f4954604c3a +5957673c534834453342314d3b3f3124443622563d4042513f483533304b +4d42424a3d4a42323e32393d4555532f1a001ba8aa728397b2c39725071c +1f311b1e17103c55291b15171817202a2e2a2c292a1b1f24202225213930 +2c22211c251a2524231f202325281a1c1d1a1d140c031612070b080d0702 +18060d11151610050f0b141d3a1b211719181121191f221d1c1621142919 +171c1c101d221717201a29211714171818140814130515081a0903060006 +060000030200000009000000000003030000000000000000000000000000 +00000000000000000000000000050006030b101d182323191e232a19231e +2732374b41454f54445c6c79737f929375aebbb0aca9bea28dabad9eac9b +b2afb8a79476859cb5c7afb7b9c4dee3d1cdd3cae8cac8cdb8d7dce8a4af +b8778bc1c9c18ac594cca299a39b96a09edc8069b6dae3e4e1e6e8d2eaee +e39f5b5b596678936a444e3c3652454a54453c423b3e39444b3a433e433c +363d2e2871e82416babb5917e630b5bd96ea6845423e82b7b32e65b57a35 +4a322c493c2f2b41533028312c8b985f2c4232271e17aba90b2fe9be8279 +d114e2a9a9bc882b35372f2c36383a3936312f2c27565f4b45545a514752 +5d5450605a6f6d69646559593235373533322f2d3236382e322f33313737 +333436313038373735303136383538302d2e2e282a302e302e3675b59370 +61405e774c567e595e876b66948390d29193dd998ce2b680d4e790a0eecd +8bb6f0db89c2f1d99db1f2ed99a0e0b33b3a34262f312b2b282724262726 +24262524312f2e3032353a3f4b506159765e7664566756655c5d59715e4f +6857595a52474e4e5b4e4c724f476a5b5c5c5b4c515b675c4a5e61685d6a +5250544e645965785c726969698d6b6f676e5c5d6d615c637371736b675a +64616b735875566a606668666f6b535f55626d6b6c6f605a5c525b838a72 +76656d5e676e6570757388747b776669845c325effeab4b0bee5f8ffffce +30212d1726191f3161511f2d211a25212422261f2528291a1d1f2f3b3224 +2c232c221e4829241b1c26262427232425180021655b61634a4f534e4b49 +4d4b4a413c50593d414341463c2d3a2b392c25472e1f3524172e37182b1f +2933291d201a136722283d19161d272625261f161215101c160e4e52574e +4a4c433d3c453c3d3f33423c32483a3b4e463b41362e45434544432e4736 +3e262e3c3a2c242a20381e32232d3c4c41424b3b413a3636443659443f46 +3c4e5747252729363328111826201b0d1b12010205060803010000000000 +0000000101030b04080a0e0300001409060d000a080a0c031a1c20173118 +1213272b24152919362d383e4455513a4158548d779e939c8294998b7cba +97568f99687b82ac71798f9d937482928d839595aac9c0c4c9d5d6c2baaa +9f95aa9d9caf99f2a88cc3fdffdcf8d3bffe97ffcc8c82606e7f655fb0af +8e71697e777073817a776d6d725865677b5b74775f647074b3f9a586fcce +858fffc4ffadfff3cd4a554c50423c39312a211d202b2660a9738679917f +718bb2968591988ba1a4a4a8939a242729272524211f24282a2024212523 +2b2b27282a25242c2b2b2924252a2c292f272425221b1b211d1d1a2361a0 +7d5a4c2b496237416642456d4f4874626db06b6db77366bc905aaec16b7b +c9a86691c9b15f99c9b1778dd0cc7c86c79e272824181f211b1b16151214 +1615161819161f1b1b1d1f22272c383d4f47644c6452465744534a4b475f +4c3d534244453d353b3d4a3d3b613d3558494a4a493a3f49564b394d5057 +4d5a4240443e544955684c625959597d5b5f555c4a4b5b4f4a51615f6159 +5548524f5961466344584e5456555e5a424e44515c5a5b5e4f494b414a72 +796165545c4d565d545f6361766269675559774e2450f3d69d95a2c8daed +ffc1251a2815271b202f5e4e1e2e27222721221d1f182026291b1e202e38 +2d1f2820291f1b4525201718222220231f252d2b1f4f9c949899818b9595 +928d89878a81798c92757a7c7d847a6b76656f5e53745a4a604f3f575f3e +4f414a53493e453b256d1f1f2b15323d302422272b28262b26342f276a6e +746e6c706764636e6b6c6c5e6d64586e60637671676f675c6c63615d5f4e +6e6166484754534a4c523d51364a373d4652413e45333b333435463c6653 +4c4f3a4851472e3639453931242b2f221a0f201a0a08030206070e0f0808 +0a070e06060504030b0203040802060b16080a160a11080808011817130a +2b1a171d30302512261a3d363e4242575f4d53665c8f759a8c957a8c9286 +79bb9e5f919a6a8495c58f97a8b3a48695a8a399a9a9bcd9ced2d7e3e4d2 +c9bcb1a9c3b7b4c3adffbf9ed0fffcd1f2d3c9ff8cf4ce9a9c8597ab8d85 +d4d5b89f9dad97909bafaba698989f89989aaa84989880838b89c2ffab8b +ffd18891ffbfffa8fff6cf5267666e60544f4d4e5255595b456fab666d55 +69574f6d977d68727568838a878b767d191c1e1c1a191614191d1f151916 +1a181f1f1b1c1e1918201f1f1d18191e201b201613141612141a16160f12 +488158352f102e471c244a22264a2a224d3943833e3e8844378d612b7f92 +3e4e9c7b3965a089356d9880465ba09f5461a8810e14150b12140e0e0c0b +080a0c0b0b0d0d0b13100d0f1114181d272c3b335038503e2f402e3d3637 +334b3829402f31322a212a2b3629274d291f423334343122273142392739 +3c43364329272b243a2f3b4e33494240426444463f4434334537343b4b49 +4b433f323c39434b304d2e42383c3e3b444028342a3742404144352f3127 +2e565d45493842333c433a454b495e4a5150434964340121b99151485984 +9cb4cc9711122c1a2210122055491c291d17221f25232720272b29161818 +29332a1c251b241a1640221d14151f1f1f201e1f201706327c7378776167 +6f6d6a646563655c576871525759595f5344503f4b392c4d372c45342439 +3d19291e2b3b342d332a1963181a270a1b251d151115130e0d14111e1912 +54585e5753564b47444e494a4d4051493f55494b5c564c52493f514b4a47 +483653454b2f313e3d323137273c20321c222b3627232b1c25201f202e22 +4a36303423323b2f13171c261d14040b140c050009020000000000000000 +000000000000000000000000000000000000010000000000000000000901 +0000130500021312060007001c1722272b4148373b4d44775c81727b6377 +7f7266a98c4e838c5c7381af777d929c917081918c829090a2bfb5b9beca +cbb8b2a49b90a39494a894f1a584b6e7e4bbdabbb0ec7ae2b98383667587 +685eaeb0947b798d7f7880928b867a7a806977798a667c7b61636a68a3e6 +9174eabe757ceba9e892ece1ba3b4f4b54463e3a3632323236351b468646 +4f3b503e3451795e4a55594a61676569545b383937312e2e2f2e282d3231 +41302b32393d37353c3b373c353b3c383739373235312c2a292b2f333134 +313943ae9f77694a4f785b4d7b655a80746697a084bfbc7bc6d180bbe198 +90f0d78ab3f1c690c8f6cca1c9f6e5a2a4f5e4a791cbcc5c46252e332a2c +2b292f2d2c2e2c2927292d2d2c2e31363f47464b5546514e5e5953645764 +61605c6153526b5b6470655e75776864747e727c6c67737567627f6d7578 +6b77696c5f6c5b7b8e6b7f66597f7665705f425c574649635d6973644c5b +576549667c60795d72766e6a66587a765d59786e6761606374616c716f60 +66765e707779967575527c726c6f686c6c7261726864925221d2ff9d8c90 +85718ac2ffff691b241c22222a406356201d1922161d28252c201e19171b +2225242c1e23262325272157292a29222a25242c2b2e261426682f0b0001 +07030a0000000d18080d14112112101c031f0c1c1d2b2e23282725314636 +34343a384d563a483d444c4208460e2a3e1c2e5f63850725596765051769 +4c7924000000060309140d0404050a1200130d1408000a090203040f0009 +09011a031d012e1d20071a161306251a211a172d35393a36483c41424243 +465555403c3c4c4d50524746484a403c47514d5e5666645b50788b725f47 +3e3a4628303326252b1f2e242e2f29355b3b2a24342c262110222524181a +1310272727201f120c1b12280f24221c1222111b00060a000600090d1805 +0001000c0000000000000500000000000000000008001d000000000e0003 +00000103000000000005000600060000001017151f0c011215110f0d0e00 +03031c0d0f242428212722231f1d252740393339352d2a3250535d545177 +678a81947496ab7fa4bcb78585b6a2889d999b8a7e6e55412d20191c3033 +9a689ba5a9c174666f634b536b6b54647e8d8a942a2b2923202021201a1f +242333221d242d312b29302f2b30292f302c2b2d2b262c2823211f1e2024 +1f211d262f9b8b6354353a634638634e41665848777f619d9655a0ab5a95 +bb726acab3668ecca16ba1cfa2789fcebd7d80d3c58b77b4b74a36171d22 +181a19171d1b1b1d1e1b1a1b1b19191b1e232c34333843343f3c4c474253 +45524f4e4a4f403f56464f5b504b63665753636d606a5a55616355506e5b +64675a66585c4f5c4b6b7e5b6f574a6f66555f4f304a4534375148545e4f +374642503451674b64485d615955514365624b48675d56504f5263505b60 +5e4f55654d5f6668856464416b615a5d565a5a604f625754854312c1f085 +7171655068a6efff5d1524222c262434564c1e22232a181b25222b212020 +22262e2d2729161a1f1c1e201a502223221b231e1d25242b2a2344936544 +31373f3f4d43463a49554b5257525f51515f4b68586866737368706f6c78 +8c7c78767b778b91747f737c8b7d336221333f285c917c92123675857f1d +3084699a4618271e37353e4b443d3c3d40452f413b40342d383a33353947 +3a433f354e3b593e654b46293e434b3f55464f4844595d5d5a5162575e61 +65645f6d75625e575f5c6167676c7173605f747c6d7669797d796e94a388 +7762615f684a52574d4d5347564c525147517357514642383e443c4a3d37 +323c3e393d32302c362f2a3524351c343b39303c242e182728141d0d171a +220f090d0c19060b0b13060a100c0d15120d090a050516072f0e1107101c +070f060d0f130f0d080e0811040a0412060c040e0903110609160b041018 +23151f1b2c1511232329252d2b303133383644372f3a403c3b3f5455655f +587a64857a8b6d8ea17296aaa3757eb1967f9ea2a8937c6c5e595a58534e +51449f5e828381995147544a2e344648364761706d771f201e1815151615 +0f1419182817121921251f1d24231f241d2324201f211f181d1712101315 +191f1b1b1417177b663e371a1f482b1b472e22433322505637706926717c +2b668c433b9b8336619f743f78a6784c6f9b8a494ca3996354949a32270c +13180e100f0d13111113151211100f0e0b0d10151d2522272f202b283631 +2e3f313e3b3a363b2f2e45353e4a3f3a4f52433f4f594a54443d494b3d38 +5443505346524445384532526441553a2d554f3e4b381c34311e233b353f +4b3a24312d3b1f3c52364f33484c44403c2e504a332e4d433c3635384936 +414644353b4b31414a4c69484825514742453e424248374b4544742c0096 +bb472e302a1b3b77bad04309222223171426504b1f1e1a1d0b0f1e1d271c +1b1814161a18161a0b111512141610461a1b1a131b16171d1e221b0e2a75 +43210e131c1924191c0e232c20252c27362626331d3a293938454639403f +425068585350504a5c654e5f59636c5d184b0d202d10376b5c7600144f5f +5c0010654b7d2b000c011a18202c251c191a2026122521271b131e1d1618 +1b2a212b281e37223d1f482f2d102424281e3b2d332b23363a39352e3f36 +3f4245453f4b503d39343f3d4146424349493937495148564d5d5f574a6e +7f64554140404d31393d3232382c3b3138382f3a5d40362d332a28261827 +2324272e2a1b19121f202419121c0a1b02191e1b14210e18010c0e000100 +000007000000000500000001000000000000000000000000050019000000 +000300000000000000000000000000000006000000000000040000050000 +0208100006011100000f111b171f1a1c1b1c2221352a232c2f29292e4648 +585148695171677a5d8197698b9e98666c9e88708c8d94806d5d4b413b33 +2d282618773b64686880352a362b1017292a14253f4e4b55393936302f35 +3b3c3736363c584240573b423b363e3d34353539362e2a2f32302c2d2924 +222b2f30323639332195ac7f6b5647766749746e58787b6c9ab881add68a +9de79c90ddd485b6f2c691befabe90c4fbd497b8fff8ac9df2f2b77d9fcc +5b2529322b322e252723242a2c27272d2d2d2e2f3339464f4d5b685d565c +5956676f5c585d5e635a4c5a5350466a5a615d4835596d5d64595c5f6353 +5951575a4551414c4d664f434a5873414f5a535452465a48504c495a4c65 +5c59695854725d6555526454605266646f518369706a767b6d866f6d6553 +6368706b6171646a626159686e556b626a537e8d5a7b756d7a777875a260 +1dd8f98b9b6680768476d2ff75242a23221d21596f4f1820261723252619 +23191c1b221e1d3f5e7a5757515156494f4642414c4047403c413a3a373e +7a5e22071860624a4e4b614c544f5340583b423f397e33381e1d1d131d15 +0e0e1220141017151314072a091a0000074c571b1c162d0c4a6419de2546 +7517cb17386609b41b1105145635231e222024252c233229302e3337352f +2b2f2f282a2328422c2f262a2a2d353d42332a2e293b312c2f2c22393c33 +3837242e22252f333530342f3e344136251a272e22241d234120351d3212 +333c22303f1e2b1c210d050d06000405000903040b031606070d18231b14 +1a1313162b1f001328272e28221f1d1d262b322c24241c242b7425203a25 +3034332d373244312e484f70422c2d323633283c2e2f332b393b46313921 +38353642406e35342c372d29273c322e3b3c3a30232a322f3f40303e2e2a +2c332b241f04070d131e1f23231a211721203300010e1c14211e391f1214 +071507080e0d0e10140a0c130a0b140f12150e0d0e19100c100d160e0e1b +282a23212e269d6f6dffb89bfddbb8f8fff1b6caecd3e4fafde02b2b2822 +21272d2e2928282e4a3432492d342d28302f2627272b28201c2124222021 +1d18181f2221232527200d80986b5641326152345c573d5b5d4c79955f88 +b06477c1766ab7ae5f90cca26b98d498699dd1ab6e90ddd2887bd1d59b63 +86b74a1819221b211d14161213191b19191c1b1b1b1d2028333e3a4a564c +444b4745555d4a464b4c51483947403d3357474e4c3825495c4d52474a4d +5141473f454a3440303b3c563e333a4863313f4a4344413549373e3a3748 +3a534a4754463f60485340404f424b4051525a3f6e575b5864695b745d5b +534151565e5a50605359515248595d445a5159426c7b4869635c69656766 +93500cc5e2717d465f556259bef2681d2b292c20194b604416262f1e2323 +2419241e23232d2722425a734b4845464b3d423935343f333a332f362f32 +33428b78452d3d8588757d7c927b7f7a87768c6c717071bc77826c6d6d61 +69616161646f61595e58565241623e4c25263e7f7b352d2130176f8b2ee8 +30538a2edd274a7b22ce3930283c7f63525054525354594f5b5257555a5e +5d58565a5c59625d5e7862676163605b5c61696160665c6c625f615e5267 +665c605f4e5c515151535b595a535c4e5c564e47565d4b4f51576a42533c +56385c6547536346574a48342d3a342f363a313e3534372b3d2e3839303a +3c4150473735514e374a4d40413d42424341424349444548434848914947 +5e474e515047504b5c4b48616b8d654d46474b4f4b6459554f4047495947 +4f374e4c4a5654824748434e45434154413a4242443d373e423a3f3c2e42 +3f3b30353635341b1a1a181b13151209120e23293f0b0a1116060e10321f +1414000a0307090606070800020900000300000204040008010006020602 +0c26465759555741a86956e99376dbbc9bdaf0d294a9cdb6c7dde0c32020 +1d17161c22231e1d1d233f29273e2229221d25241b1c1c201d1511161917 +12110f0a0c131a1a1c1d1b110063774a37241546371740381f393925506b +325b83374a92493b887f30619d723e6ba76b3e74a77f405faca1584da6ab +7440679c36080a150e17130a0e0a0b1113100e120f0d0d0f1218242e2938 +4238303733314149363237383d3428362f2c2246363d38210e3248363c31 +34353b2b31292d33202c1c27283f2a1c23314a182530292b2d2135232a26 +2334263f363341322c4c353d2b2a3a2c362a3c3c4529594146404c51435c +45433b29393e46403646393f35352c3c43283e353f28546330514b424f4d +53538039009db038410b2a283d3189be480b252523150c405b4217242a16 +171618111e171b161c120b273f5933332f3035272f2622212c2029221c22 +1b1b1a2769531d04145c5f4a514d654d544d56445b3d4341428b464f383a +3a2f38302b2d3342372e322c231f0e3112260303165657120d011300435e +05c308285f02b300225400a9150e07195d3f302d312f2f30382e3b343a38 +3f41423a383c3d3b4744465e484a4343403e3f454a3d3c413d4e443e3e39 +2c403e343b3a2a372d2d2e2e3431332d382b3931261c2c3123242127401d +311a3213343b1e2b3d2133262917121d18151b1e14221a1a1c1122131b1e +202a27242c231d23423c1e2b2b222e2e2d2c2a2729292f2a2a2c282e327b +2f2c422c3233322a332e42322f4b54774f3831343839334a3e3c392d3638 +46323a203732313d3b692f2f29342b2a283c2a2632363b332c32352c3331 +21332c282228282523070606040a050a0a020f0715162b00000008000707 +2815090c0008000203000000000000000000000000000000000000000000 +000000162e3a372f2b16804737ce785bbf9f7dbed4b5788aae94a5bbbea1 +353432302e2d2d2e332c333953374756313d433e3a3a3731433c383a3c39 +3736383632272a332f36393b33303b60c18b726446607243637b60707b85 +80d78b99e3b68bcbe285a6ebb986c0f7cb97caf8caa4bbfbe59ba4f1fed1 +9dc8ffcb839cca8d381c2c2f2a2229252426282e312e2c2c2b253131443f +4e575a6458495b464e6c75656d5c615d7361695762755a525e4d4d5a6766 +5a585c5b564e575a515a4546584a4e53555c5e594646545e615c4951505f +554d545c61745a587f7055576a63575765587e576164735c575c62575859 +5b6862695d64656363656b7f6b7368786f7f9c6578786f6c5e6658886b58 +7b68787fcd4626f5fb7282ab9186807fb0ff7b2a2c33231e295a66441c26 +1624241f24221d1a172326271e578190776e6a69726870736a6987767a6c +74726f716d6662575b556356594b50434653574a454a464e4641333c1f2e +1110111a1f210f312d31252e7a4145564b6c603b38362c34696269705a4f +6e783f80415c7b50ef35396f6381361d325942333734403b3d3d4046443e +3b3d5b2d393a3b24301d1b1b2c18210e1810211711181c180f0c14170e10 +07121117192126301d1d161621181e333829252d272e382f303a32272526 +2a44493737345147273948383a384a3730322f2e37423325232c30443033 +28273630462937561f4e246247302b33994f303631472431353b32241e18 +1f2f1917140f250e231b0e1e1c13110a132b420d10191a12010f060e130a +170e0f11230738270d0f00291e0112120d14221424201e041a1a06130b15 +191021130f170a1e182132150c0917191b1b1a181a1d341c504609233041 +15201e1f1a1a1716181e24182422241c1b2421222f291f2623272c44628e +6b4627191b2019392516181c709d5684956e86a78d7f928da27f918d969e +949a28272523201f1f20251e232943273746212d332e2a2a2721322b2729 +2b282625272624191e27232a2d2d231f264aa9735d50314b5d2e4b644553 +5d655db26573bc9166a6bd6080c593609ad1a26ea1cfa17b95d5c07682cf +ddb07da8eaad6584b97e2c0f1f211c141a141315171c1f1c1a1c1a152022 +33303d484955473a4a353c5760505b4a4f4b62505846516449414e3d3d4a +57564a484c4b453d464940493437493b3f44464d4f4a3737454f524d3840 +3f4e443c434b506349476c5f42465752454653476c474f54614c454c5045 +4647495650574b5253515153596d5a62586a5f718c5568685f5c4e564777 +5a476b57666dbb310edbdc53628c736966689cef6d202632231d24515d3d +1b281a28251f252421201c2624221449717e635b585860555c5f5352705f +665861615e635e5a5b535a5762585b4e564a4e5a5d52565f575c53524f63 +556e5b5e5f67696b5c7e75756366ac6d6b776683724b4541353a6a5f6469 +51486d7a3b773854774dee363a7268883e283e6852454c4a56515655585c +5a53505270424e4f503948363d3e4d3a43313b3343362f333a383130373a +31352b36353b3b4348523f413a383f363d5257474048424c5751525c5149 +4e5151696e5b5d5a776d4d5d6e5e62606e5b545956545f6a5b4d4b525768 +5457515058526a50637f437046886f574c50b36c4e575268434e52585045 +3e383c4f3d403b364933484031413e37352e374f6631323b3e3a2e3d343b +3b2e372c2d31432758482e30204b3f233434313846364138361d35392735 +2d36382f4135363e2c3e383e4e2c1f171d1b19171311151f4130645a1b31 +3945162120211b191211131b2014201e201817201a1b2620141b191b1d31 +446b4929150d121c205156525149849a4165764f698a6b5d706d87647470 +7981777d1f1e1c1a151414151a13161c361a2a39142026211d1d1a142821 +1d1f211e1c1b1d19190e121b171e2120130d11328f573e2f122e40112f45 +2733393e3386364491653a799133539866336ba2744073a1754f68a8944a +55a2b2875481c28741629d6716000f14110b130d0c0d0f12130e0c0c0a05 +100f211d2b3537423527382128424b3b45343b374e3c46343f52372d3724 +2431403f33313534312932352c35222436282c2f33383a352222303a3d38 +262e2d3c322a31393e5137355b4d3134463e31323f335630393d49332d33 +382d2e3133403a41373e3d3b3b3b415540483e4f4556733b4e4e4542343c +2d5d402b4a394e57a71c00b6ae1d29533f3d413f67bb46071a2d21191e4a +563719271d291d151f1f201e181f180f002c505a3e33302d382d373c3130 +4e3d41333936323633302f262c2834292c1f26171d272d1f2027232b2525 +1f34233a262a2b33383a284a434432357b3a3842314f421c1916080e4034 +3a3f281e3f4b0e4c0d264a20c20a0e473f5e1500163f2b1d25232f2a2f31 +343836322f3151212f30311a28161c1e2e1922101a1220140d1218130e0c +1619101307121115161e232d1c1d16151d141b3035251f27212a352c2f37 +2f2424242540453536335046263747393d3d52413a3e3b3b455041333139 +3c4e3a3d33323d394e33425f27572e6f553c2f349850323a35492430343c +362a2620263823221e192d1429211323231b19121b354c171922241f1120 +171e20141f1415192b0f402d1315053024081919151e2c1b251e1e072227 +16241c25261d2c1d1b231427212838180c060f0e0d0c0b090f142f174b41 +031a24340813131615150f0e0f14170b1513150d0c171215211b1015100d +08131e43240900000d191841392e28205f79224857304b6c504457546c47 +54505961575d292d302f2d29292a30393d334e444634373c3e3a373b3e3e +43413d3a3c3e3a3232363931343830363c3935312e3fb8a072674653795a +5f7d5c608b7e85c7ba83bae4989ce5c185bcf6b68cccf2c39accfad59dad +f6f7b89af2fbd7a0b8f7eea9a1cdb65a161126231c2c2718222d2a232326 +292c3b3e525159685857565767725b6a535344605b485956615b535d5768 +6a5261566075595f575e604c4e4e4f5b58464f4e5b5959645b52403d4d6a +655652465f635968586d77765a74566c5c55676077794d6c735f595d6a6b +6c635b6a555a5a5a4b5154646266625a6e8067697073696658676f56656b +7f7f647a7484916d6d778a3c40d8ff6582b2889c7d58c9ff56303d281d32 +49716e371f1c18201d1d231e1d222025204f5d4b676466626b5b6b685f6c +706a6f64686570756b6a6f6b6d68706f73636766706c67696e6b596d6764 +6b6452592548463f352f2e402f29322642348e425459516b635962677471 +735d5a5c655c59614c5f5152674aa65f605a55634a5844574e464b4e4d51 +55504e50514f4f50644a5453555162554d4e584c534a524e59514d515450 +4c4d5553484e4f5c58575848445b534f4d5a4a454a55584f4a4d514f4e45 +4d5b52453f3b3544443537373e3028392d2639272e24232622202221332e +1f2520241e1d18161a15240c14291b2d231f280915132822062114151d20 +1d1d17161f22180f1c14140b0b11161d1f14495842271620271a1d141124 +1514201112283e2d1c154c26192e1c102637261919251827332e381c2529 +1e3025221b201b13252a241c2b190d00113d2c1d231e1b1a1d1f1c152f1f +4a4f083e1865430d20161f14221b1e22251d1d1b1d161e131c221a28301c +27285f6a798184a86a231b151e501e17122261b17785827189788c898575 +6e917f7c9ea997971c2023221f1b1b1c222b2d233e343624252a2c282529 +2c2c312f2b282a2c282020242823262c272d302d252019299f885e53323e +6445476441436a5c60a1915a93bf7377c09c5f96d09063a3c99a71a3d1af +7788d3d6977ad2deb78398d7ce8f8ec0a84e09061a170e1d16070f1b1611 +1316191c2b2e42424a5949484748586149553e3e324e49364845504a444e +48595a4251465065484e464d4f3b3d3d3e4a4937403f4c4a4a554c43312e +3e5b564741354e524857475c66654963455b4b44564f66683c5b634f494d +5a5b5c534b5a43484848393f4252505450485c6f56586063595648575f45 +545a6e6e53696073815d5c65782728bee74563946c846542b5ff48243523 +172e446c6a341c1c19211e1e25222328222418424b364f4d4e4c56465451 +4653544e5349504d5a5f57565b5658535e5d61515756605c595b605f5268 +5d565c5b536844767c7a70696375676166546955a856605f50655b4c5459 +6360624c494b544b474f3a4d3f4055399752534f4c5c435341544c444c4f +4f535a55535556545354684e58575955665b575a64585f565e5a655d595d +605c58596361565c5d6a666566565269615d5b685a555a65685f5a5d615f +5e555d6b625655544e5d5d4e505056484051453e513f473d3c3f3b393b3a +4c47383e393d3736333438303f272f4434463a363f202927403a1e392c2d +353835342e2d36392e273933332a2a30353c3e3368776146353d41343a33 +32473a3c473635495c4a362f6943364b392d4455443737433948544c5237 +3f453e524848424a453d4f554f47534131192a533a2827201918191b1817 +3e365e61184e246f4a1122161c0f1d1317191c16161719121a0f181b131f +27131b194e5053565884510e09081a604952525679b0626865576e5d6a63 +6155547a645f818c7a7a13171a19141010111720201631272917191e201c +191d20202725211e20221e16161a1e181b20181e221d150e0614896e3d30 +111f47282b46232347363674632c6893474b94703269a36335759b6c4375 +a3804a5ca9ab6e51abb6905b71b0a76a6da08d3400000c0b05160f000811 +0d0506070a0d1b1e322f374636333233434d334029291c38352234313e38 +313b354443293a2f394e343a32393d292b2b2c3836242d2c393737423930 +1e1b2b4843342f233c403645354a5453375133493932443b525428474c38 +32364142433a32412b323232232b2e3e3c3e3a3044553c3e4649403c2e3d +45293a3e5252374d45555f3b404f64120e9dbe142d5e3a563f1b83cc210a +281f172d4166612b171c1e25181620212328211f0d3133172b23221d2717 +28251d2a2d262b1e241f292d2221292729242e2d312126252f2b282a2f2d +1c312c293132293d18474b4a403937493a3236253a267825302f20352c1f +252a3532341e1b1d261d19210c1f1112270d6c262722213019291629231b +2427272b322d2b2d2e2c2e2f432933323632433732343e32393038343f37 +33373a3632333f3d32383946424142322e453d39374436313641443b3639 +3d3b3a3139473e322e2c26353627292932241c2d231c2f1d291f1e211d1b +1d1c2e291a201b1f19181210160f1e060e2314261d1922030d0b20180017 +0a0b1316151712111c1f170f1d14140b0b11161d1f1449584227161f2417 +1c141327191a2817172c402e1b144d271a2f1d112839281b1b271c2b3730 +3518242c263a34332f362f25373a332938261701143e291819130d0c1012 +0f0a271a434700340c573800150c150b1a111112130c0c0c0e070f040f13 +0d1a220c0f06322d2c2c336033000002175635322d2f5791434845345040 +514c4b3e395b463f616c5c5c2c313737353335383341493f4b3c40334443 +403d3c3d41443538363238413d3230353b35383a3138342e343b302a99a8 +786f5448756c5273705885a07cafdf8d91edc681bdf5aa8ed0e8ae97d5ff +c89cc8f2ebaca9f0ffc79ee0fff5b6c4eeebb4bacdcd893019262619242f +28262b241d1e232939384b4d3d54444e5e634b563f434c5d4d525c544841 +394b454c4a5b5f505b454e69525140414c44595b50466d68684f4f525a5d +5554636955584e5f61558b5c5c5f5e574b576180525a5a51515d507c6661 +717967516a7864626d6f686e6c6b616361635d54595e7873607785798183 +697f6e656470826d6d9288747c737f7ba444488bffbb7c7e828d6187ffbe +2e3164352b1958785e1d231f241e23262c22202724234cf0e1576b6b6a65 +685c6365736d66696563666a6c756a685f62675f62636969616563686159 +5c5d64695d627d686082330c07172758644e415d554d5a78a84d50566781 +777269605f6961626560755f545b6256675e5c585866755c685a595b5d57 +5a58595b53595f5955575a5b5a5959565955535a6360575a5c595b5d6060 +615e5d605f5b5b5f56636666595f66728466596b655b57615b595a5d5e5c +59585b5d5e514f5a59575c59545c5c555a5c615a57625453665254515456 +5556544a5e64535c534c535050555559645e5e6d60655b555e6d544c5b71 +5266584e564d605c53443e474c4439413d49323e3f3a383b3523454a3939 +3f3935372b332237292e2c2a2c4148414f304f352f523596615c3e261d23 +2e111815231309100e12110b070e0a05030d001e2f231a123b2716181715 +191f1d161a2c300f0737315b5316151e0d211a262321262b201f1e181d24 +21171d393e2a245c8dc1b7756786bb9b361c102d2b23131b36a07676766c +7e7c807b748083878ca09b92af9f1f242a2a2725272a2533392f3b2c3023 +3433302d2b2c30332427252127302c211e232a272a2e272f2822242a1e14 +8090635b403460573b5a553b647e5789b6646bc7a05b97cf8468aac28871 +afdca276a2cdc68a88d0e1aa80c4fad998a6d0d1a2adc0c27d240c191a0d +1621171518110c10151b29283b3d2e45353f4f543d462d313a4b3b404b43 +37302a3c353c3a4c4e3f4a343d5841402f303b33484a3f355c57573e3e41 +494c4443525844473d4e50447a4b4b4e4d463a46506f414949403f4b3e6a +544f5f67553f586653515c5e575c5a594f514f514b42474d67624f667468 +7072586e5d52505d6f5a5a7f73616a606e6991323272fc9f606267754971 +fbad1f265b30251553745a1b2020252024272e26262d262344e3d0435352 +514e52484d4f5b554c4f4c4a4d52565f54524a4d524a4d4e57574f535257 +50484b4c4f51404059474978351b1d31416e755f55716559627aa4454244 +51685b5549444a585051524d624c41484d4152494743414f5e4652474649 +4e484c4a4d4f464d56514d4f52535150504d504c4a515a544b4c4e4b4d4f +525253504f52514d4d5146535656494f56627456495b554b47534e4f5053 +54524f4e5153544745504f4f56555058585155575c55525d4f4e614f5857 +5a5c5b5c5a50646a596259525956585d5d5f6a646473666b5f5962715850 +6177576c5e545c5365615849424b504a424a46523b47484341443e2c4e53 +4242453f3e4238423348393e3b37364a4e475839583e385b3e9f6b664830 +272d381e252433251d26252b2c28242e2a26242e183b473a291e40281312 +0d0b0f15131022393a191040355d52130f1604160f191513181f1415140e +131a170a102b2f1a14476f9d904d4463997917070d3e51594f4d4ea16359 +595263615e575060697071837e759282161b21211c1a1c1f1a282c222e1f +231627262320212226291a1d1d191f2824191419201c1f221b201a121418 +0a006c7844381f1341381c3c371941582d5c88363e9a732e6aa2573b7d95 +5b4482af754975a09a5d5da7ba825a9dd4b27280aaac7c8a9ea2630c0009 +0c010d180f0e120a04070a101c1b2c2d1b322028383d232d171b2637272c +372f251e1729252c2a393a2b362029442f2e1d1e2b23383a2f234a43432a +2a2d3538302f3e443033293a3c306637373a393226323c5b2d35352c2b37 +2a543e3949513d27404e393742443d444241373b393b352a2f334d46334a +584c56563c524134353f513c3c615641463f5253801e1a54d4702e303849 +234cd0820010522c25124f6b4e0f191b271f1e212925262b231b37d0b622 +2d2a28242b2326283731272a24212426273023211d20251d202129292125 +2429221a1d1e2021161a352627551000000a1a48533d324c41353b537e1e +1b1c2840332d221c1f2c242527223721161d2216271e1c181826351d2b1f +1e2127212725272923272b231f2124252625252225212128312c23252724 +26282b2b2c29282b2a26262a222f3232252b323e503225373127232e2b2b +2c2f302e2b2a2d2f3023212c2b2a32322d35352e35373c35343f31304330 +333134363536342a3e44333c332c333031363639443e3e4d42473c363f4e +352d3f55374a3c323a3145413a2b27303730252d29351e2a2b262427210f +31362525292321241a2313281c211e1b1b2f342d3d1e3d231d402384504b +2d150c121d020705180b040f111619140e16120b0711001f2d2012082c16 +04040100030907000b1f210000251c453e00010b001009130c080d130809 +0802070e0d010722280d00284b797133284574540000043642412d272c81 +4339392f454445413a494e5153635e55746437393b3b3b3d414539424840 +4234403f3f3c3b3c3b3a3a3d3b3b3734383e3b334242433e40433d43443a +3e4a443672ae8272654765734e6683597acc8f85dccf85adf1b48cceeeb3 +89d5fcb394c8fcdd9db4faffb1acedffd9c6d4fdffdad0e8e4cfc0cddbc3 +771512282013242b1f1b27292d323e38494c47594e585d6747544f56446c +4b5d4c4d4b554a634d4b516452574d474f5a5b4a59565f4b52525c645665 +725e5c5d5e535c464e59505f50625d4e66825a4b4c64675f5d52725e6458 +696e795d65675e63644c60564c546c615c646364605d5a524f3f575f695c +5c757c7276717676708a748c9d9c878092a38a949b84ae26222ef1ffdcc2 +b9b9d2ffff4c402245442a326d8b5e1b2621281f202329211c201f245cff +d65266646b5e6362536b71555c5d656a676c636c6567675f61646a645b5b +6262565f636264646c6c74849c76657a4014171004365a5837a467383d92 +965a6c606a6a56656568565f565f615f725e5a63635c606556625d58675e +635a67566155585a565657545c5b5c5f61605d5a57615d5c545b55565a5c +595c595e5d5d5d5a5d5d5e5a5c5f5a5c5b5b5a5f5e5d6d615b5f5d5f5c57 +5958595c5c5a5959575c64585258585c595a5d5c5c585e5d60625557645d +615d5e565858595a5b525258575d5a515856535a535a5d5e575b5e675364 +5e8a5c544b55515559675c67545862605864777b63806a8d736d82608396 +7e5b5a698d5c635d5b76737b74a37fa2a47d4b5a5c4b5c3f4a4a4d713d34 +3769c2f6f4837365736d7e577067511d272226382c292d3d300517424d39 +3a6a4b56594e4342433e3f342f1847352b301b1a24262c2f1f24291c1926 +1721262326201c1a1a1917194385c7fffffff4749fe564341713311a1f20 +2994877b856b8890818c7e7e7b60869fa59e97882a2c2e2e2d2f33372b34 +38303224302f2f2c2b2c2a29292c2a2a2623272d2a223030322d32373139 +382c2e3931215b986d5e5133505e374d663b58a9685cb1a55c87cb8e66a8 +c88d63afd68e6ea3d7b87b92d9df918fd1e9c0adbae4e7c1b4cfd2c1b2c0 +ceb86b09071c1205131a0d09181a1e242d27393c374a3f494f5939443f44 +325a394c3b3c3a463b543d3b415441463c363e494a3948454e3a41414b53 +4554614d4b4c4d424b353d483f4e3f514c3d5571493a3b53564e4c41614d +5347575c674b53554c51523a4e443b435b504b5352534f4c48413d2e464e +584b4b646b5f625e61635b755f778887706c7b8f76818a749d15101adafd +c4aaa1a2bcfbf03c31163c3f262f69875b1923222a2121222a2320252022 +53fdc33b4c4b52464e4f3e545a3c44434b514e534c554e50524a4b4f544f +45484f4f434e5051514f514d4e596f4b425f310e17110533514f309f5e2d +2e827f4250424a48324241483f4e454c4e4c5f4b474e4e474b50414b413a +4940473e4d3c473d40433f3f403e4747484b4d4c4845424c48473f46403f +42443e443e46424542424245434241443e403f3f3e43424151453f434143 +403b424142454543424240454d413b4141464246464845444748494d3d42 +4c48494a504e4c504d524f4a46504b554e494c4d4a514a5151554b52525b +4758527e504a434c484d515f545f4c5059574f5b6e725d7a64876d677c5a +7d90785554638753585252706e7874a37ea1a1784451514053384143446a +342d3064bbf1ed7e6c627470835d78715d2a3633384b3e3d3f504315254c +523b38633f49493c313031333d3732184734272a131219191c1f0e121609 +06140511141314100a08080503042e699de9f6f3d85574b73a1915275247 +554e419576606b516f7561695a5e61496b8288817a6b212325252224282c +20292b2325172322221f1e1f201f1f2220201e1b1f25221a26262823272b +252d2a1f1f29200e49814e3b3012313f182e461933833f3084752e5a9e61 +397b9b603682a9614176ab8c4e65aeb46867a9c2988595bcc2998da7aa9a +8d9dae9a5100000c07000c1309051313171b251d2c2d27352a32353e1e2a +28301e4625382728283328412d2b314431362c262e393a2938353e2a3131 +3b4331404d393738392e372129342b3a2b3d3829415d3526273f423a382d +4d393f33434651353d3f36393a22362c2129413631373839353230272514 +2c323c2d2d464d41474044453e5642586968514b5c6e51606e5d8b030000 +b8d4967a737897d8cd1b1a06353c232a607c4c0a1a1c271e1c1d25201f21 +1a1642e6a519272329202f311f353a1d22202629262a222b2226271f2224 +2b241c1d2524192226252724242127364e2b244110000000001234321381 +410f0d605d1e2b1e24230e1c1d2115221921232134201c23231c20251621 +1a14231a2219281724191e211d1d20191a1516191b1a1916131d19181219 +131316181318131a1719171617191816161916181717161b1a19291d171b +191b18131918191c1c1a1919171c24181218181f20252627252328292a2e +2125302b2d29292022222324251c1c222127241b22221f282128292c2329 +2c3521322c582a261f2b27292d3a303b282c3836303c51553d5a44674d47 +5c3a5d705835344367343a3433504e5752815f82825a27343524361b2426 +274d171013469ed3d0604f43555165416059471623202235262225342700 +0b333b2523502f393a2e23222321261c17002d180c12000007090f120408 +080000060002060406010000000000000f4273c5dddfc33949861000081e +4733352a217658424a30505848534447462a4d6268615c4d363433333638 +39393d423d2f343a44333f3d3f424544464a5a534b48464340404843413d +43473e43524640403e3d47ac936e6b4d587b5c5b7c696ec2cb73b0f8a983 +d3f1a792d8efae97cff1c690c3fce7b7b6f1ffdac7dffffde0dcf4f5e4e0 +d6d5ccc6cadcdebd55201225251e201d20242a2f3a36494c4e5f666b4e58 +51614166775957424b40494e36514b4f473f4950474b52555a4c4542544e +4d45484f6151463e484655594f4549434a6c554d4a4b6e695c5664564759 +60526c494d53584977646965786c707879557c706e756a7776746e68797d +8176978b828a948c90a0989098938c8892aa919f9ca3ac9b899ba0b0b42b +2b2435daffffffffffdd5c3927323b24282678935d1f1e1b22251e1d2524 +222427376cfab857677db0534329312b7bf06967696c646e676c6667625d +6366605c669170675d5e6566696167666d66736f756e564e4a3f5c6e6974 +4b463c5438467265605f7779616c615d5f5f5c5d595f645b5c5f5a60525e +585d6c576262575b655d5a5c57605a5a6e5f5a5e626464625f5d5e665e65 +606559605f605a635b625b5c605e5f6063616160605d5c595d5e5c565558 +5d59585e61575e5a5c62625b595d5d5a5e595c635e5d6165695f5c5c5b57 +62615b616b5f5d61695c5a5c59555654524e5a57585651565a5f565b565c +51505155504c4e55545052525d504b5647665d4f4d50494a504e485a445a +4e456542374d4e514e4e6e47535b50564c584e6455656d6a4a4c49435481 +4a444c4d4541512c284e906772628b6b8369747c7f3017201b180e1a1000 +3f3425466fb7b3d8e0eff3e6d9d7dad8f9d2d2cbe8ffe0fae6ffeeffe6fe +eef2fff5e5ebdff2fffff3f1f4e6e4f8b128668db6c9fbffffffa0d3ab3d +1c1d35192f352b6c96708281738090937a7869605d7477919da529272626 +282a2b2b2f342d1f242a3423312f31343736383c4c453d3a3734312f3631 +312d353b32374438302e2b2730967e5b5739416443425f4b4c9fa44a85ce +805aadcb816cb3ca8972aacfa16ea0dbc89899d4e8c1b0c7f1e5c8c4dcdd +cac9c3c6bdb8becfd3b24b150619170f110e11161c222b283b3f3e50555b +3e4942513155664846333c31393e26443e423a2f373e35394043483a3330 +423c3b33363e5041362e383645493f3539333a5c453d3a3b5e594c465446 +374950425c393d4346356350555164585c646541685c5a61596665635d57 +686c7065867a717a847c7d8b837b817e75717b937a88838c938473878fa0 +a71e1e1524c7f7effcfbeac848291a28341f242374905a1e1c1c24271d1c +25262426273461eaa5404d61943b2f171c1766d9504f4f524a554e534e4f +4a464b4f48454e7b5a51474b4f53534b504b4c404846514f3f3e3d354d5e +525c3631273d1f2c5547423e5759414c40414a4c4948444a4f4647484349 +3b4741444e374242373b443f3c3e39433d3d51433d42464848464341424a +424944493d4442453d483e473e4143434245464644454a48474448494741 +4043484443494c42464143494942404444414540434a4544474b4c453f42 +3e3d45473e474e45404750464246413f3e3e3a3842414040393e41463d44 +3d453839383e3935363d3c3a3e404b3e394435544b3d3b3e37383d3b3446 +30463a31512e23393a3d3a3a5a333c44394239483e5646555d573535322c +3d6c332f35382e2c3c19133b7b545d5280627c64707a7e321a231e1d1220 +1404443928456bb0a7c8cedadccfc2c0c3c6edcbcbc1def4d4ecd6f7dcf4 +d1e9d8dbf4dbcbd4c8dde8eddcdcddcfcdde970d4e6b8092d1f5f9ee6d97 +751b1d3254405d5e406f875968675a657073575a4f4742575a748088201e +1d1d1d1f202024292012171d2716262426292c2b2f33433c3431302d2a27 +2c2524202a2f262b392b23201d192281613a3618214424233f272677791e +589e522c7e9c543f869d5d467ea2754176b09c6c6facc09987a1cbbfa49e +b8b7a5a0999b949198acb3963201000d0e0a0e0b0e13191c241f2e2f2e3b +4142242c25371a4354363420291e292e16332d31291f2930272b32353a2c +2522342e2d25282e3c2a1f17211f2e32281e221c23452e2623244742352f +3d2f2032392b4522262c301d4b383d394c40444b4c284f4341483d484947 +413b4e5056496a5c5359635b5d6c665c625f56515c735a68646a74624e64 +7389960e0d0008a6d0c4d3d4c8a92d120a1e2e1c211c6981490c10141f24 +1918232321211d254dd0851e283a6d19170307004bba312d2a2d252d262b +2829241d2526221c28523328202128292c22241e231b262631301f1d1b12 +2c3d334019140a1e000b35251e1b31331b261d1a1f211e1d191f241b1c1e +191f111d171b28111c1c1115211b1a1c17211d1d311e1112161818161311 +131b131a151a0e151618111b121a1214171616181a1918181b191815191a +181211141915141a1d131a181a202019171b1b181c171a211c1c22282a22 +1d1f1c1a25261e262e242024271716171510120f0e09161214110d12181d +141a141b10101015100c101716151b1c2718131c0f2e2517151813141c1a +13250f251910300d0218191c191939121c24192118261c3325343c371616 +130d1e4d141016190f0d1d00001b5c343e3160435f475561691c050e0907 +00060000261b0b2950968fb1bac7cabdb0aeb1b2d5b1b1a6c3dabad2bde0 +c6e0bed8cacbe5cabac2b6cad8dccccbcdbfbdcf8800283e526bb9e5e8d3 +3e6146000d29452b403c2150683947463b48575c4142342924373a546068 +31302f3134332e2b3f3c383633323e37333331303033383c413b37393836 +363a423c3b3d4547393b3d3c3e3432392f92ab786d57517a6a52728f609c +eaab83cce3aa8dd5eab096d1edb18dd0fdd7a7c2fffed3c6f7fff3e4eeff +ffeee2edf3e8e6e5dbd0c1c1d9e1e8ad4e111421242e2f3943454f4d5f5e +4e59697553585e5a47635c5d6d6d5b4b374d46513e3d4447443d48434854 +484b584542424555595e5c5b59575b4c504836465b515253474d5e4c5773 +586d4c5662624f6b59655b5a7a6a72939a728b7c898d9681a48473797077 +747a7f768b8a816c837e738286779294737b7590a3968d83649896798398 +9694726e9e0f272f3c17397da099733c51423d2e382b345589874d1b2425 +20202221282927272d4064ffce556f7bbf493e383c3f25ffee3f6f6c626d +6a625d5b5b585f5f535364a5765960595b585c5659535d61636669585b60 +61576863585d697f6b676a5c5b5e5b5a696855605a5e53515e5d56625856 +5b575a5e56565e565b5c60605b62505757635a635d5e76635b5e625e5f5e +625f5f5e586060615c645a5a5660595d5558595756585b5c595553575f57 +5650565758565d57544f56545b585a605d55535758555954555c5a605b5c +5f565c69625a665b6c79665d635e695f5f645f59595a5f5360565b5d565e +54575359545e58585d5a5551594a5a52494e50514c494f61614f474c4e4d +4f51504b4f4b4d4d594b4a4c4e4a4f51424c48544a4d454f4645463c3b46 +44474b4f3946474b4151494938534d3f3b3a44363527313025313a1f1a26 +2c353f4e493f5b5d4d38461f1d23191f211e1e2223211c1d212016271416 +2a1e24232a23583f4a37292c2731373739384149515e512a6ab9bcb2a3ff +ffffe9c2cf3e160f5036394e4158b3727398828c828a8080a1afcdf5eff7 +f8f3242322242625201d312e282623222e272525232222252a2e332d292b +2927272c302a2b2d37392d2f2f2e2d221e23177b976559433a635138546e +3d77c38258a2ba8167afc48b71acc88f6bafdcb686a2e2e2baade0f5ddd0 +daebeedaced9ddd2d3d4cac1b4b5cdd7dda343060613151f212b3638403f +51513e4a586543484f4a36524b4e5e5e4c3c273d39443130373a322b3631 +36423639463330313344484d4b4b49474b3c403826364b414243373d4e3c +4763485d3c4652523f5b49554b4a66565e7f865e77687579826d90705f65 +5f6663696e657a79705b726d627276677f7f5c645e798c7f766c4b7f7d61 +6a807e80615f92061e263009296b8c855f293f3231243126315285844a19 +22262222211d272928282b3b58f8ba3d535fa3302926292d11fcd7275552 +485350484543434047473b3b4c8d60434a4345424640473e45444142473b +434e5147544b3b3e4e64504c4d3f3e423f3e4d4f3b4842483d3e4948414d +4341444043473f3f473d3d3e42423d44323939453c453e3f59473e424342 +404243434041394341443d473f423e4841453d40413f3e404344413e4146 +4e46453f454647454c46433e454246414349463e3c40413e423d3e454349 +4142453c424f48404c41525f4c4349444c424247423c3c3d423643393e40 +39413437333b36403a3a3f3c39353d2e3d3831383a3b3633394b4b393136 +3837393b38333733353541333234363237392a322b3730332d3930313228 +242e2a2d2e321f2c2d3127372f2f203b352723222c1f2217202117252f17 +141f252f394843395658462f380f090d00040603030708080a0d11100516 +0302160a0e0d110a3f262f1b0e110e181d1d1f1e272f3643340e50947f74 +7af6fdf3b380941a172569566173555ba85d5a7d6971646c60628796b2d8 +d2dadbd61b1a191b1b1a151226231b191615211a1a1a1817171a21252a24 +202222202023261e1e202c2e21232423231613160b697c4438221a433217 +324b174d98562b728c533880975e447f9c623e84b18d5d79b8ba9185b7cf +b6abb5c6cbb5a9b4b8aba9a99f968a8da7b4bf882d00000a101c1e283032 +393644412e37444e292e32302240393b4b4b3929172d2833201f262a261f +2a252a362a2b382522212534383b37343230342529210f1f342a2b2c2026 +3725304c3146252f3b3b2844323e34314e3e46676e465f505c6069547757 +464c4348454b52495e5d543f564f445155455f603d453f5a6d5f564c2c60 +5e3f4b5e5a5d454a82000f151a00084767623e0b2922251b2b222c497973 +390a161e1f1f1f1a252723201f2840dc99192e387c1116181a1900dfb805 +322d232e2b23211f1d1a212115152667391c231c1e1b1f17190f191c1c1e +2419212a2d2331291b1f3147332e2d1d1c1d1a19262716221c2114131e1d +162218161a16191d15151d1417181c1c171e0e1517231a231f2039221413 +15131213151414150d171518111b1416121c151911141513121417181512 +131820181711171819171e18151017141b181a201d15131718151914151c +1a201c1d20171d2a231b271c2f3a2920261f2418181d18121213180c190f +14160f170d100d15101a14141b18141018091b150d1313140d0a10222210 +080d11101216140f130f11111d0f0e10120e1315060f09150d1009140b0c +0f05020c090c1014000b0c1006160e0e0019130501000a0001000204000b +1902000c121923322b1f393a29121e000000000000000000000000000000 +000000000000000000002b121c06000000040c0c0e0d161e253224002b68 +524b5ee0e8d4854e6a000719563f4654393e8a3e3b5f4b564c54494a6e78 +94b8b2babbb632323436383836343d36374137324348383b39312d323739 +3337393b3c3f4345454042444a4a3b3d393c4c3f3f3b3a69b58a72624d6c +6f5769a27f86c4e59791dfdb959ae3eaa7a4daf4c1a4d2fedeccd1f6fff0 +deeafeffeee4f3fff0e3eaf3dfd8d5e2d9bbbed0e7e9e5b355161930303e +4a464a45534b4b48424c41465544484146374c344b4a4949404241464948 +504b50484a554e5050555a5c4c615a574e585851544e605b47474b496352 +566d78737e757f86806b757d7ba06e776c6872737f70829189757e6f7f82 +7e6d646264656273826f7b6f745e676f6d766e777e7c636d6a616565737a +71757a74777e757e6757b81730353a37353f494e3f4c5e474b3f32234c48 +95785123372b1e18252125201f22232d57ffc45b805f7f5240412e351fef +ff4569676365593e49525045434a4f4e334f743449404a454b4969534347 +4443444d4a3f403b3d3d5044405238433d4e485048494a4b414741485252 +555346555053534d56535452514d50594d494f5649504a504c4f4c4d584e +5253524d4f52555253525156535353555252515754545053505050505253 +504d534d4f49575454495048504d504953514d4f50504d4b4a4a4a49514c +474a4c58525156556b8473605c54666d59575c545655595b56555754564f +564f575257585858575a535654555a53485755544f4a525149504f49534c +484b4e54564d46484946514b4f4d4c4b53466c75414b474a4e4b49534c48 +4644474949424a4848454c5c47454b434150494a454b454845454649434e +4f49312019171d2f48423c42d4948e274741414245423f3f40413e3a3b39 +2f3e3b25404843363c463831442a3f3939383b373530313d32252f302d3a +31a5afb179eff1ffffbba84118034a3b1d2e3e43ad7662707f8583b5bf89 +9598937f8e9a8f9c252527292a2a28262f282731272233382a2d2b231f24 +292b25292a2c2d303437332e32343c3c2d2f2b2e3b2d2b272454a1775e4e +3655573d4b825c619dbc6c66b7b36f74bec58282b7d3a084b2e1c1b0b8df +f0dacbd6ecf8ded4e0edded1d6dfccc7c4d3ccb0b2c7dddedca94a0a0b22 +23343d393e39453e3b39333d313645343931362a3f273e3d3c3c33353439 +3c3b3e393e3638433c3f3f44494b3b5049463c46463f423c4e4935353937 +5140445b68636e656f76705b656d6b905e675c585e5f6b5c6e7d75616a5b +6b6e6a59504e53545162715e6a5e634d565e5c665e676b694e58554c5050 +5e655a5e635d60655d67564baf112c31332f2930393b2c3b4d3941362d20 +494692754e21342c2019211d2421202220264bf1ad41644163392d301c22 +0bdaf72f51504a4b3f242f38362c2a3136351c385d1d3229332e34365d49 +35342d2a2c373830322d2b27372a283b212d2738323a3536383c323a3339 +3f3c3e3c2f3e393c3a343d3a3b39383639423632383f3239323834373435 +40363b3c3936363b3c3b3a3b383f393b393d3f403f4542423e413e3e3e3e +40413e3b443e403a4845453a4139413e413a44423d3f40403d3b3a3a3a39 +413c373a3c49404045445a73624f4b43545c47454a413e3b3f413c3b3d3a +3c353c353d383d3e3b3a383d36393a3b3f382f3e3c3b38333e3d353d3c36 +403935383b41433a333533303b35393736353d30565f2b3531343633333d +383634323537352e3331302d34442f2d342c2a3932332e34313431312f35 +2e3b3e3921110a0a10223b363036c9898018362d29282b26232325272321 +25251b2a27112c332e21242e20192c12251f1e1d221e1f1a1b27190c1415 +1220187f72724ed7e6fdce796f1c191561553f4f5148a4664b57646a6799 +a06d7b7e7865748074811c1c1e201f1f1d1b241d1a241a15262b1f222018 +161b20221c20232526292d2e272025273131242622253323221c19438657 +3d2d1433351a275c363772903f3986824045919856558da8755b89b99988 +8fb6c7b3a3b1c8d4bab0bfc9baadb3baa49c99a8a083889eb9bebf903600 +00191b2b3430322b382e2b261e261a1d2c1d262126192e162d2c2b2b2224 +24292c2b322d322a2a352e2f2f3439392b3e3732263030292c2638331f1f +23213b2a2e454f4a554c565d57424c545277454e433f4646524355645c48 +5142525551403735373835465744504449313a403e453d464d4b313b382f +33313f463b3f443d414639453a35a005202521180f11181b0c213b2c372d +2719403a83643d142b261f1b201c221c1a18111331d08b1c3d1b3e1b1e26 +0e1100bfd70a2b2722261a010e15110402090e0d000f340009000a050b0c +2d1808090402061012090b0603000f050619000802110b110b0c10130910 +0c101513151306151013120c15121311100d0f180d090f1609100c120e11 +10111c101212100c0d11141212121016141514171718171d1a1a16191616 +1616181916131b1517111f1c1c111810181518111b1b191b1c1c19171616 +16151d181316182218151a192f48372420182c311f1d221918161a1c1716 +1815171017101813181b1918191d1619191a211a101f1d1c19131b181015 +120c150e0a0d10161910090d0e0b161014121110180b313a06100c0f100d +0c1613100e0c0f11120b110f0e0b12220d0b120a081710110c120e110e0e +0d140f1d221f0a000000000f28201a1ead6b63001c12111114100e0d1010 +0e0b0e0d02110e00111813060a16080114000e0809080c080a0506120500 +01020009005a46472bb5c8dca85652090b0747382432352a85452b38474f +4f838b5562635a44535f5663333537383a3d41453637323334495746383f +403733393e3d3640433c393c3c37433e3e3e413e31364b4555414235453f +ab9476684a5f746b5993c48193e7d785a4dbe08da2e9edbaade7ffd1c5e0 +fffddcdbf1fffae8edf8fffbeceffaf4e5e0eaeed3c8d8e3d6bcb7cde2ed +e7b966222c3e4a41413a43364e52454d4c4556445952514f4b4956445f53 +4a4345484f585863504f4f4e5f5154554d56507d6d586a5e57657365767a +606a685c816a6e7874745e747755695d63534c535453615c62686e635c66 +a36f6e6e686c656b61755b5f606e75586863585e5c57596a5a6e637d7664 +8b6b6e897b828d6c797d76797b877d7896062a25363c3c818e918a7e7368 +484328606d3a674f5025391d1c242a292b23222b26275ffdba60796a5f37 +2d3632688da7bd4b666c71684f284762656869635f695b83c45f6e5f6c5f +5f5e676954555b645a625b635c525d52696c545a535c4e58534a4b4e454d +494b444a434b4d5547514e4d504e504c4c553e4c43464045443f47444441 +4644484b46474443403e4146443f3d404849434344403e3b3b3e3d39393c +3e40414040403e3e3d414d41443a45444b434a4149444b3d3f4647403f45 +4742443c3f4043463f41433f4548657f6141474c4a434b4e44484c52564f +484c4f48494c4b4c534250484d4b4d4f49494f5155474b49464444474b42 +484341444c41464a443d46454448424d424a4a3e494945485582695a444c +474245474342493f454746394941444940424342444241414b3e463c403d +4141423f4f483b39482e352f29305d5d4c3d574c5f564d3f3d3d3f3b393b +3c3b3c3b333a3c3434443330363a3a30363a3d3e38393c303b353a3a3c32 +353c393536352d56c8a26ff1ffffffc47a331410232d2f1a2f217f817d68 +73727b5a68726a7182788d878d8626282a2b2c2f33372829222324394736 +2a313229252b302f2832342d2a2d2d29312c2e2e333023283d3744303021 +2f299781615433475a4f3b71a15c6cbeae5c7bb5ba697dc7cb998cc7e3b4 +a8c4e9e4c6c8def3e8d8ddeafaeddedfeae4d5ced6dac1b6c9d6cbb1aec4 +dae4ddae591720353e35352e36293e43363e3b344535494244423e3c4937 +52463d36383b424846513e3d3e3d4e4043443c453f6c5d48584c45536153 +64684e58564a6f585c6664644e646745594d53433c434443514a4e545a4f +48528f5b5a5a545851574d614a4e4f5d63465651464d4b464859495d5269 +625077575a75686d78576468616263706c6c8f042a25323634758082796e +665c403c255d6b38644c4c21361d1d2526252a22232b231f51eaa2465b4c +431d1a2520577994a6354f55584f350e2d484c4f504a4650446cad485748 +554848495b5f4642454e444c49544d434a3d50533c423d4638424037383d +363e3c3e363b3035363e303a373637353733333c253530352f34332e3431 +312e33313235303130302c2b2d32302b292c34352f2f302c2c2b2b2e2d29 +292c2e30313030302e2c2b2f392f302831323731362f3532372a2f373831 +30363833352d3031343730333430363956705232383d3b343c3f3536383b +3f3831353831323534353c2b3931343032363032383a3d32363431313034 +383236342f353b32353b332e34363236303b3038382c3737333643705748 +323a3530333833323b3137393629362e31352c2e2f2e312f2e2e382b332c +302d312e2b2838332728361c241e181f4c4c3b2d493e5045392a25252521 +1f21242324251d26282020301f1c2226241b212528292021241a25202525 +271d1e26201c1d1c15338e6745dafcece78c4613142133424b3641277a74 +684f58565f404c585057675e726c726b1d1f21222124282c1d1e1516172c +3a291f26271e1c2227261f292d2623262620251e212128251a1f342e3c28 +2618241b7e6142331125372a154b79324192822e4d848b3950999e6e619e +ba8c809dc2bc9fa0b6cdc2b4bbc7d7cabbbdc8c0b1aab1b5998e9eaa9e84 +839db6c5c298460510262e25251e25182e30232b27203122393233312d2b +382641352c25282b32393843302f2e2d3e2e31322a312b58463142362f3d +4b3d4e5238424034594246504b4b354b4e2c40343a2a232a2b2a3832353b +41362f39764241413b3f383e3448303435434b2e3e392e33312a2c3b2b3f +364e47355c3c3f5a4a505b3a474b4443414e50567f00201b26261f5d6565 +5d55555035321c545f2b553d4016311b21292724281e1d1f120a36ca7e21 +35261e020b1b12456176840e262b2f2710000a25242627211d271a42831e +2d1e2b1e1e1e2b2e19171c251d25212922182012272a161e181f1119160d +0e120d1512140f12080c0d1507110e0d0f0d0f0b0b14000c050904090803 +0a0709060b090b0e0b0a0b080703080d0b06060711120c0c0f090807070a +090505080a0c0d0c0c0c0a08070b180b0f04100e160d150b140e16090e16 +17100f151712140c0f1013160f100d050d0e2d4529070f12120913160c10 +171b1f1811151811121514151c0b1911151215181213191b211519171413 +1516170e120d090c10070a1008030c0d0a100c170c14140813130f121f4c +33240e160f0a0d110f0e160c12141407150d10140b0d0e0d100e0d0d170a +120a0e0b0f0d0b0819160c0e1e06100a060d383827162e2133291e0f0b0b +0e0a080a0c0b0c0d060e100708170603090d0c00060a0d0e08090c030e0b +101014080c110c0809060015693f1db1d9cbc97338080a0f1823321d270b +5c5449313d3e49293641373c493d544e544d353333373e403a313431403e +483d5a413a3b38373c3d3c3f3b3a393a3a3a38364152403e3536343d3d35 +372f353b4e3283a8856d5c4a6d7f5181cbbf78abf8cc7fadefe0a1b3f3fd +c8d1eafcf0d9e2fefff1e7effefef5ebf6fffef0ecf3efe1dce9e8d3bec1 +d5e7d1c6c1cfe7f2e4ce80533e4157504e4c49484e64635c4a474f4c4f45 +484e6c53514c4c5567565d5c53645d50634b696b5a6b6b73715960795e76 +755f657877715a4e5c63654c51586b4a4a7684666065596b67805f65937d +8e5f66636b73725b5960575e6b605c685e736d5e67695e58747370515d64 +64765f70745e8e7883806179878e958d9976777883649d14322a312b457c +a3a08f847d6e5a3e6fa44c253d4b511423211929222728231f29302859ff +8d587f705e351e1728779b9e715c6b73716c6188566c736c756e697e778c +7c6b967c8a85866f68a870726a706a6f6e98886a6e73777b6b6f706d696b +6a666b6a69687d685d64626a67616568696a636c6c625f676b615c5c5c5b +58585d605d5d5c5b5c5c5c5d535763575f57594d5251515254534f4e4d4f +4f4f4f5050504e4e4e4e4e4e4e4e4b4c4e4c4c4b4d4c504a474546444444 +443f40413f42464342423e3a3e4441383e3f403d3a3738393e3d3c3c3b3c +3c3d403c393838383939363b40403c38383b3b3e383f4237383a39373534 +353536373b3837373b3c3c3838393b38393a3c3b3d3b393737383a3b3736 +3c30434744403d3f423f3a3b3c353a3a39383b3c3c3b3b373c3f43343d3b +453f3b3c3c38383e4242383b47323e3b3d333b383a38403537393c3d372f +5d2932393934363d3930343e32333037313c362e373031402c3935353636 +353433312d2e3d382f3334312b3ea3b5cafffffffc8e402e18082d1c141b +2311598e5b75876c7568726c6e5e666a787c918a2826262a30322c232623 +302e382d4a312c2d2a292e2f2e312d2c2b2c2b2b29282f41302e2425262f +2c24261e23293a1f6f95705945325363335fa89a5384d1a65989cabe7f92 +d2deabb5cee3d7c1cae8f0dfd5dfeef0e7dee9f3f1e2dee5e1d1c9d5d6c1 +afb4cadcc9bdb8c6dde7d9c4764c33364c45413f3c3b3e54534c3a373f3f +42383b415f46443f3f485a494d4c42534c3f523a585a495b5b6361495069 +4c64634d5366655f483c4a51533a3f465938386472544e534759556e4d53 +816b7a4b524f575f5e47454c434a574c48544d615b4c55574c4662615e3f +4b5353654d5e634d7d67726f5065737a817985615e6172599714332d3127 +3d73989481787165543a6da54a2339474a0f1f20192a202327221e272a20 +4bfd753f6152421c0b071767878b5b47545c5954486f3c525c555e575166 +5f7464537e64726d6e58539359594e544e5655817153575b5a5e4f535451 +5052514f545353526752474c4a53504a4e5150514a535349464e4f4a4b4e +4e4d49494c4f4c4c4b4a4949494a414853484f47493d4241414244433f3b +39383838383939393737373737373737323333333132323335312c2c2b2b +292b2f2a2b2c2a2d312e2d2d2925292f2c232a2c2c2a262424262a2a2829 +272828292d2b282727272828252a2f2f2b2727282629232c2f2425292826 +2425262728282c2927292b2e2d2a292b2c2a292c2c2d2e2e2c2a2a2b2d2e +2a292f23363a3733303235322d31322b30302e2d2e2f2f2c2c282d303425 +302e38322e2f2f2d2d2f2f2d232833212c2b2c222a2729272d24292b2c2c +261b49151e2525202229271e222c20211e251f2a241c272021301c292424 +2424232322221e1f2c271d21221f1922727fa3f7fafad9641a1618133c2c +2c33321a58854b5e6d505b50585254434d515f6378711f1d1d2125272118 +1b1823212b203d2421221f1e23242528242322232424221f213121211a1b +1d26241c1e16191f3110567551382310303e0d3980702759a6792a599d90 +5265a7b2818da6bbaf9ba4c1cbb9afbbcacdc4bcc7d1cfbfbbc2bcada8b4 +b29b86889dae9b928f9fbac9bda95d321d20362f2e2c29282e44443d2b28 +302f32282a304e35332e2e3749383d3c32433a2d402644463544444c4830 +3750364e4d373d504f493226343b3d2429304120204c5a3c363b2f413d56 +353b6953613239363e46452e2c332a313e332f3b334943343f4136304c4b +48273339394b35464933634d5855364c585f665e6a443f41564387082b26 +291c3062847c67606156462e60973d142d3b40091e25212f2322251e191b +1a0930dd51173b2c1d00000005506c6a341c28302d281f47172d3229322b +253a3348382752384641422c26662f30262c272e2d5747272b2d2e34282e +2f2a282a29252a292a29402b2226242a272125282829222b2b211e262821 +1f2121201e1e21242121201f1f1f21221b212f212b232519201d1f202221 +1e1a18181818181919191717171717171717131416141413151418120f0d +0e0c0c0d100d0e0f0d10141110100c080c120f0407040702010000000502 +0301020303060f0f0c0b0b0b0c0c090e13130f0b0b0a090a060e1106070b +0c0a0808090a0d0b0d0a0606090906030204050305070a0a0d0c0a080809 +0b0c08070d01141815110d0f13100b0e0f080d0d0e0d0e0f0f0d0d090e11 +1506100e18120e0f0f0d0d100f0e040a18071414180e181517151c100f10 +12120c023000060d0d080a110f060c160a09080d07120c040e060716020f +0a0a0c0c0d0f0e0d0b0a1a13090b0c09030a545d7accd3d9c55817140e02 +1f0f141d1b003a662a3f52384438413b3b282f3241455a53343535373f44 +3d3233333637373f4736363436333a383c3b343436383937332f43463933 +383840403d30374042343d2c4bad977f664c57857e62a2e6a978b7f0c69f +b7f1eac2ccf0ffe8dfeefdf9f1edfbfffbedecf8ffffefeffafff9e4e3f3 +e4dcdbe2dcccc3c5e9e0d1c5c6d4e5f0e9d5a053393f4f463c3d3e474b5f +56434c584a434e4040414546413d4a4655584d51685a52574c4d4b514f51 +545055635b5a5b58585c647876716b6a78706b718a706791876c6a846776 +7471677473505c5b6a6a6f796959617c61686561636364585e6074636476 +64645b657285706b61706a7086807a796396766a6c649779926b6a869301 +30292b2637699db1ab9fa88c598d953a282a3d534b1f22231e1f26272a26 +22282e2b6eff8d7191757a9c50341d4051676067696a66686a8d676f716c +746f6d767381816e8d7880818477769c6d7573776d73717f72727f767178 +6d70706c6a6d6e6d686a69637366656e66696661636362656b7170676467 +69615f5e5f5f5f6165676261626062626261615d5d665a53526058575555 +555555565c5d5e5e5f5f60605b5b5f60615e5d5c5c5d5e5d5b5a5b5d5b5a +5b5e5f5a56535b55575756575b56746f665a595a59515756555554545352 +535251505050504f4e4c4b4a484848484a4b4d4b484646474d564d474747 +4d484b494543403f3e3d394246423f413e383d3e3d3a3a3b3b3837373939 +393735343439362e3636363132353533303131313131302e2f2f2e2e3039 +372246342c3233302e302e2c2e3433433b3533323431302e2c2c31302e2a +332b2c2c333a756231333029282f32312c3134313632313134282b343321 +3b2734353636322f2a272a252c472b23302e2b193a578ed1cdba7b24301f +13190d151f1111202c95616771827657757d7375725f71849b822728282a +31362f2425252627272f3726282628252c2a2e2d2626282a2a2824213335 +2923282732322c1f262f30222919379a826a4d343a695e4281c3865692cb +a47d96d0c9a3add3e4cfc6d6e5e3dbd9e9f0ebdfdeebf4f3e2e2edf7ebd6 +d5e3d1c7c8cfcdbfb8bae1d8c9bcbdcbdbe6e0cc974a3035433a30302e37 +3b4f46333f4b3d3641333334383934303d3645493c40574a41473c3d3b41 +3f414440455349484946464a5266645f5958665e595f785e557f755a5872 +5564625f5562613e484756565b6555454d684d54514d4f4f52464c4e6251 +52645252495360735e5951605a6076706a69518464595b5386657b54597b +8d01332b2c23306194a9a0949f85568b963b2628394f441a1d221e1f2426 +2925212528205ef2755875595e843e250d2f3e534a5253544e5052744e56 +5a565e59555e5b696956756068696c5f5b7f505553574f5554635757645b +555b4f52524e4e5152514f514d47574a47524d524f4a4c4c494c5258574e +4b4e4d4a4c4d4e4e4e5052544f4e4c4d4c4c4c4e4f4e4e574b4443514948 +454545454544454544464547464841434548474643424243444341404143 +4140414445403c3b423e3e403d40423f5b584d434043403a40403e3f3d3e +3c3c3d3c3b3a3a3a3a3b3b3b3a3937373737393a3c3a373535363a433a34 +34373d383a3936343332302f283135312f312e282d2e2d2a2a2b2a29282a +2b2c2b2a2727262c28212829282425282826252626262626252321212020 +202a271336251e24252220222321232622302824222224221f1d1b1b201f +1b19251d1e1c232a655221232019181f24231d2224222623202225191c28 +25162d192627282726221f1c1f1a1f3a1c14211f1f04112967b5bdaa6408 +160f10201a233024202a2f90524f57665e3f5d6557595846586b82691e1f +1f21262b24191a1a191a1a222a191d1b1d1a211f25241d1d1f2123211d18 +24251a141b1d292924171e252618200a1f7c654b2e121842371958995c29 +689f764f69a39c7781a9bca79eb0bfbeb6b4c3c9c7babbc8d2d1c0c0cbd5 +c8b3b0c1b1aaa8aea6958b8cb2a99b9194a4b7c3bfad782d131a2b221a1d +1e282e4239262f3b2d26302222232728231f2c2635362a2c43332d302526 +242826282a262b393332333030343c504e4943425048434960463d675d42 +405a3d4c4a473d4a49262f2e3d3d424c3c2c344f343b383436373a303638 +4e3d3e503e3e353d4a5b46413a4943475f575150396c4c3f41396c4a5c35 +3f657d002c26271e285685968c808e75477c862b171b2e463e1721282827 +252427211c1c180c44d251304e323762261000131e30212524252022264b +262d2e272f2a27302d3b3b2847323a3b3e313055282e2c30292f2c3b2c2a +372c262f292c2c2827292a29262826203225252d25292621232321242a30 +2f2623262621212122222325282a25242323232323242725272e241d1c2a +22212121212121202321232224232524201f24242622222121222322201f +2022201f2023241f1b19231e1f201e20231f3c382e232123211a1e1b1c1a +1b191a1718171615151515181d1f1e1d1b1b1b1b1d1e201e1b1919181a22 +1a1314161c171c181715131213120c1519130e0f0c040b0c0b08090a0c0a +090a0e0c0e0a0a07090c0b010b090b040508080607060808080807050604 +0503060d0d001c0803070a0505050703070904120a0808080b0b0b090709 +0e0d0a050b02030209104b38080a070000060a09060b0d0b0f0c0c0b1002 +050e0b0012000b0c0e10100f0b080d060c2707000a080900000f46909b90 +5604170f091000091d110b11127233333e4e4627454d41413d283a4d644b +3530323a403d373634373036314b3e3a373138353a373d383b3a393a3a39 +37344641413f4b434a3938393f40414454433484b1827c524975a57b75cb +f3a790d4f8ccb6d8fcefdbe0f9fbf4eaeffcfef3e7f4fffff3eaf3fefff5 +eef3fcfbefe4efe1d1d1dbe0d5c6bdcfe0e2dacfc9c5ebe9f1e2bb744f44 +443a455b464249545f4c496b634d53675358575e746f644e6a555d584c7b +6a676f6b6c635b5e5e5e5f5355514f595f695a4c4d595968634b4b5f5560 +49575c6762677e72604d4c6d605e6968716160765474536c6b6c6d61655f +7c747f6550456d675760637884855d64617675726f73635e60675f608477 +7b987197b71426292e2423395f7f847c68705e5c531d29283246372a2321 +201c29282b2b26272b2b60ffa1596463606e5d50415456625d656a6e6d6b +647364656a686c6c6c686a6f705e7166676b6d6c6f7b666f72716c716c6a +63717c6f6c6f7273716d6d7073756d737167726c717a6e6e6b6a6b67656b +6e706f6b686766646664626262636464656567656767686660726366506d +63616463615f5e5e61635b5c5e5d605f62605c5b5f5e615e5f5c5a5a5c5a +575557595c5856575857575b5c585a5a58595b565a59554f51575b585957 +5556595a58565a5a59585757575756565755535253545655545251515254 +57625d5755575b50535251514f4f4e4d515958505058574d51514e4c4d4f +4e494b4a4a4b4a4846454c59494a474447434548423f44403d4642424241 +3f3e3e3f43acb034414033373e3d3c3d3c3b3c3f3b3e333e36342e373436 +323139373131322a322e2c1f3427262b30312d292726392e32232a243531 +2432311a505e7232313233332e28221e2418306d92322c392a2c26221916 +1c180e1f1c12101028221a1723160f8478637270877d77797d6f6c647477 +8c8e2823252d322f292826292026213b2e2a29232a272c292f2a2d2c2b2c +2c2b29263631312f3b33392827282e2f303442301f709c6d633a2c59855b +55aad2866fb3d9ad97bbdfd4bfc7e0e3ded6dbe8eae1d7e6f3f2e4dde6f3 +f7eae1e6eeede1d4dcccbebecbd2c9bbb5c7d8dacfc4bdbce2e0e7d8b069 +4438382e384e38343b46523f3c5e564043574449484f655e533d5a454d48 +3c6b5a575f5b5c534b4e4e4e4f4345413f494f594a3c3d494958533b394d +434e37454a5550556c604e3b3a5b4c4a55545d4d4c6240603f585758594d +534d6a626c523d325a55454e516672734d55526766636064534e50574f50 +74666683618cb115272b2f231e3258777d75616a5d5d54202a262e3e2f24 +1e20231f29272a2c2524252050fc893f484744564c413044444f484e5256 +55534c5b4d4e54525656565254595846594e4f5355514f5a444f52514c54 +4f4d465661545154565755515154575a5258544a524c4f59555954535450 +4e54555756524f4e4d4b4d4d4b4b4b4c4b4b4c4c4b4c4b4b4c4d495d4e51 +3b584e4c4f4e4b4948484b4d424342444446464740424345454543434447 +4947444244464945434445444445444040423e41413e40413b37373f4140 +42403e3f4243413f434342414040404042434442403f40414342413f3e3e +3f40434f49444143473e41403f3f3f3f3e3d3c44433b3b4342393c3c3937 +383a39353739393a393735343b483839363336323639333034312d363232 +32312f2e2e2e2f989e232f2f21262c2c2c2d2c2b2c2f2a2d222e2626202b +2527232228262021241f26201e112619181d2122211d1b1a2d2223171b18 +262517262510445466262526292926201a161b1028658727202f221d0900 +00000c0d01120e070d14312f2624302316816a4e56546e6761616153524a +5a5d72741f1a1c2427241e1d1b1e1319142e211d1c161d1a1f1c241f2221 +20212322201b272122202e262f1e1d1e2425262736210a57815044180a32 +5e322c81a95b4688ad7f6b8fb3a9979fb8bdb7b1b6c5c7bdb3c1d0cfc3bb +c6d3d7cabfc4cbcabcb2beaf9e9da7ab9f8e8698a9aca2979391b9b9c3b5 +904b281e2018273e2b273039422e2b4d452f33473136353c524c412b432e +362f2552413e4641423931343434382c2e2a283238423325263232413c24 +21352b361f2d323d383d54483623224333313c3b44343349284827403f40 +41353d39564e5b412c21494131383b4e5a5b36403d50514c494d3c37393e +36375b4c49664876a1071f262a1f1a2c4e6a6b63515a4b4b440f1c1a253b +2d2624262a2427232627201b190e37df671a211f1c322e24122320271d22 +242625251e2f212225212525252123282816291e1f23252426311e282b2a +252c27251c29342522252e302e29292c2f2f272d2c222c262c362d2e2a29 +2a26242a2c2e2d2926252422242321212122222223232323232324241f30 +2324102d2321242322201f1f22241a1a1b1b1d1d1f1e19191c1c1e1c1c1b +1b1d1f1d1a181a1c1f1b191a1b1a1a1c1e1a1b1c191b1c181b1b16111219 +1c1a201e1e1d2221211d2121201f1e1e1e1e212223211f1e1f202221201e +1d1d1e1f1e27241c1c1e22181d1a1b1b1b1b1c1c2129281e1e2423181d1d +1a181b1d1e1a1c1d1f1e1f1b1b18212c1e1d1c171c16191c16131a14131c +1818181716141514177f86091715090c14121313131113150e1106140c0b +06110e100c0d14120c0a0a030c0604000c0000030a0b09050302170c0e01 +0602130f04100f002c394c0c0b0c10100f0b07030a001550711108160b08 +000000000000000c0d030406201d18131c0900624d333e3e58504a494b3b +392f3f425759392e32414233313d39383539364d38403f3b3d423c40403b +46433f3d3d3f41423b3941494b42442e3f47463d394352444549b19d8c72 +5470adb997acf3e5b8c1edfcead1e0fdfceddff2fef7eceef8fef9ece8f7 +fffbece6f5ffffefedf8f6e8e4ebe5d0c4cddae1cec9c6cfdee6dfd4cbda +e4daf0f5d08f4c454c584d5f6353545a555a445e6c6b5f65584e4d4f616a +62584d564c6454484e4a5c58494d4e4c5f4b4f4c50615a504f5a4950626c +534f4656516253575e7169586053666c625f56596252777a72545f685162 +63606a6f5f58654c536668635b5d6d707161817965606b786f62767c7c74 +788192857b9080886898a70d262829251f1d243036351e233b19162b2a32 +2c2e312e271c1e2128252b312b26282b5dff996273736a695c5d5c69646b +646861676b6a62636966656464686b616664675b6667636561666462666a +6967646b6569666a656268646767666362646769616b6c63666768696564 +626467616069686768696865646567646261646463606363646464656564 +607e6d665c8d7a5e65656462606063665c5d5d5d5e5f5f5f5e5d5b5a5a5c +5e5f5b5b5d5b575557595d5955545455585e5a57595b58595a55565a5c5c +5d5f605d5754535456565554545353525151515152545752524f55565652 +52505454575756595b67665e5a4d51515254555656555a564f4d59635f51 +514f4e4d5154534f55524f4a4a4b4e4f4f5e46504a474e484a4f46444d47 +435347454446484746464744694a3f3e474b484543444442403d3d412a3c +3f373d3a3d36403a3e39443d3b39463d40373c3539343132302d3137312b +39383830362b3829311ffcffad5e313133312f2a26222d2f404b732b2a2b +2829181c241a11060a0d091516101c15271b1918266b7f6e7570826a6f5d +6363533838546c882c2125343425232f2b2a2529263d2830312d2f342e32 +322d3835312f2f3133342b2931393b32331d2e36352d2933403330359b85 +73583754909c778fd6c89ba4d2e1ceb5c7e4e3d5c7dceae5dadce5eeebde +dae9f4eee1dbeaf6f3e2dfeae8d8d1d8d2c0b6bfced5c6c1bec4d3dbd4c9 +bfd1dbd1e6ebc5844039404d40535747474d484d37515c5c5056493d3c3e +505952483d463c5444383e3a4c48393d3e3c4f3b3f3c40514a403f4a3940 +525c433f34443f5041454c5f57464e41545a504d42454e3e63665e404b54 +3d4e4f4c565a4d46533a41545551484b5b5e5f4f6f6755515a695e53666c +6c6466718075697f6b74588da20b282929241b181f2c32321b203c1c182d +2a2f27262828221b222529262c322a23211f4cf98048575a51534a4d4a57 +51554d51494f53524a4b52504f4e4e52554b504e4f434e4f4b4d494b4742 +494d4d4b484f494d4b4f4d4a524e4e4e4d4a494b4f51495350464847474b +4e4f4b4d504a49524f4e4f504f4c4b4c4b48454547484744464647474748 +48494866554e447562464d4d4c4a48484b4e444545454647474746454342 +4244464846494b49454345474b47434242434649454042444142433e3f43 +45454648494740403f4042424140403f3f3e3d3d3d3d3e40413e3c3b3f42 +403e3c3c3e40414140434551504844373b3b3c3e41424241423e3535404c +463a38383535373c3937403e3a363537393b3a4a313c35333934363b3230 +39332f3f3331303234333232312e53342928313732312f30302e2c2c2c32 +1a2c2f292f2f2f28322a2e27322d2d2b382f322b2e292d2825262423252b +251f2a2c2923271e2b1c2513f0faa1522527292a27221e1b242738436821 +2021221e0201090405000606000c121227212f2326262f6c715959546956 +5b474744391e1e3a526e23181c2b291a1824201f181c19301b2324202227 +212525222d2a262424282a291c19222a2e252913242c2b201c2434231d1d +83695537152d68724e65aca0737aa7b6a68d9ebbbbafa1b7c5c1b6b8c4cc +c8b9b7c6d2ccc1bbcad6d1c0bcc7c3b6b1b8b29e919aa6ab98939097a5ad +a69b95a6b2aac2c8a56626212a392f434737363c373c26404c493d43362b +2a2c3e453b2f242d233b2b1f2521332f2024252338242825293a33292833 +22293b452c281e2c2738292d34473f2e36293c423835292c35254a4d4527 +333c253637343e4537303f262d40443d373747484937574f3e3a46524a3c +4f55554b5058685c5165505b3f778f001d2327221a15192126230c112c0b +0a1f1e262324292a262025262420272d261c171138de61253031282a262b +2631292c23251b1f25241c1d2621201d1f21261a211d2113201f1d1d1b1e +1d19212525232027212520221d1a201d25262421202223251d27281e2221 +24252424212326201f28262526272623222323201d1d1f201f1c1e1e1f1f +1f20201e1a362720164734181f1f201e1c1c1f22181719171a191b191a17 +171416161a1c191b1d1b171517191d1915141415181c1a16181a17181914 +15191b1b1c1e1f1e1e1f1e1f2121201d1d1c1c1b1a1a1a18191b1c191716 +1a1d1b191717191b1c1c171a1c28271f1d10141415171c1d1d1e26241a19 +222d271a191917191c22201d25231f1b1a1c1e201f2f16211a181e191b20 +17151e1814241a1817191b1a191919163b1c1110191e1a18161717151312 +10150012150e1413150e181117111c1412101d151811140f130e0b0e0c0a +0d130d0713161410140b18090f00d8e287380b0c0e10100d0b091314252e +520807080a0a00000000000000000007090719132416140d124d563e433e +533e4330312f2005051f3953373539403c31323d3a333937383b2d3a373b +3544364237383737363535383d40393e4150454548403c403f4840363b3b +412d7eba958f5f75bdcbcac4d0ecf3d7ddeffdf7e7e4f2fdf6e6e8f9fef2 +eef7fffef5ebeffcfcf5e9f4fefdf4ecedf2e7dfdcddd5c8c5cce3e0d7cb +c7d0e2efe6d3cdd2e9edf2f1e5b27f624b5a583e49553f4a434338655350 +414a53504c48424b545a5c574e5d4a43565e5153585260434f565b645655 +5f514e5a4a58584d5e635d65685d606a5b58696c6c636d605b545e6c6656 +56566a6b766a675859626e63676d626a5f686d6374797e6885747e747e8d +7b758989656f71796a729579516f64607d18301b1e222729241b18191f1b +1f28212a272a2e29442b271e1d1e23222b322c24272a75ff7e5f6e616160 +656460645e65666d6b68646769656d6264656166696668646761666d6868 +63686b5e67635f6264605e6566635a5e675f626362615e5d5e5f5a63615d +5d625f5d5f5e5c5f625d5c65626060646461606362606161686968666060 +6161626262625b60575e5f7265595f6161605e5e5f5f5c5a5a5a59595959 +5a59575656585a5d5b5e5f5e5a595a5c59585a5d5c595757575355575456 +57524c5054555452504e5253545352515253525251515150504f53535451 +5050575b5552525357575755545456636664614d52515152525251504c4e +5a6c786f5a4655545352575a5a565f5a56505151575856624b5756535b53 +545a53535e5a586957524f545958555369565247607c5d495e5854545757 +524c517257505b58765654425d51514968594b4a5143494b453e4c454449 +4b444344453f41493f464e504837342d44b67741343334343432312e3e3f +5c6e3931322e232b261716120a120e060d19060b26201122192217518767 +725d79628296bb9e99d4f6eaa5ac2a282c332e23242f2c252927282b1d2a +272b2534263227282727262525272c30292e31403333362e2a2e2f383026 +2b2a2c1766a27c754259a1afada8b4d0dabec4d6e6e0d0cedce9e2d4d6e9 +eee2dee9f2f0e7dde2eff1eadce7f1f0e6dedde2d7cfcccdc7bab9c0d7d4 +cbbebac3d5e2dac7c1c6dde0e8e6dca9755b405250363c452f3a34342754 +423f3038413e3a36323b444a4c473e4d3a33464e414348424f323e454a53 +45444e403d493947473d4c514b53564b4e584946575a5a515b4e4a434d5b +5444444458596458554647505c51555b50584d565b5162676c5774636c64 +6c7d69657777535e5d68566181653d5d55557816301a1d1e2325201a1819 +1c181f2a232c272728203b25231e222326232c342d23201d64fa65455548 +494b52524d4e484e4f5553504c4f534f574c4f504c515451534f504b4f57 +50504b505347524e4c4f4f4b49504f4d464a564d4d4c4d4c4c4b4c4d484e +4c46464946444849474a4d4847504b49494d4d4a494a45434144484c4b49 +434344444545454540463c4344574a3e4446464543434447474848484747 +4747484745444446484845464746424142444140424544413f4145424446 +434546413b3f434443413f3d40404140403f404140403f3f3f3e3e3d3d3d +3c3b383a3f453d3c3a3d3f413f3e3d3d3f4c4f4d4a363b3a393a3a3a3938 +33353f535e57402e3b3b38393c403f3c47453e3b393c3f433e4d33423e3e +433e3f453e3e49454354423d3a3f4443403e513e3a2f4864453446433f3f +42423d38406146414c49674845334e40403554453a3b4233393d35303e37 +363b3d3835363731313a2e373d413928251e35a769332628282828272626 +333451632d2526221b221403040406110b00000c000c302c162826322254 +7c525641635070809f7f7fbcded28d94211f232a23181924211a1c1a1b1e +101d181c16251723181b1a1a1918181d22231a1e223127272a221e222229 +21161c1a19024e885e542032798785808ca9b2969cadbdb7a7a7b5c4bdb0 +b2c7ccc0bdc6cfcdc4bac0cdd1cabcc7cfcec3bbb9beb3aba8a9a2959398 +afaca1948e97a8b5b09d99a0b7bdc5c6bd8c5a412a3b39212b351f2a2121 +1542302b1c242d2a26201b242d3335302736231c2f372a2c312b3b1e2a31 +363f31303a2c293525333326363b353d4035384233304144443b45363029 +33413c2c2c2c42434e423f30313a46393f453a423940473b4c4f543d5a49 +544b5664534c5f5f3b44454e3d47684c24453e3f640724151b1f24261d15 +100f130f131d16211f2228213e27221c1c1c1d1b262f281f1a1454e24722 +2d1f1d1e282a23251f242529272220212420281d20211f2227222620241c +232824221f24271b2521212424201e25231e1418221b222322211e1d1e1f +1a211f1a1c201e1c1e1e1c1f221d1c25211f1f2323201f211d1b1a1c2124 +23211b1b1c1c1b1b1b1b11150d1415281b0f151719181616171918161816 +171517151815151214141819161819181413141613121417161311121714 +1618151718130d111516151311121c1f201f1c1b1c1d1c1a191919181815 +161616141213191e17151416191a1915141315222624210d121113141414 +1314141621343d351f0c1a1c1a1b1f2524212b28221e1d1f232622301725 +22212721222821212c28263727221f2429282523372420152e4a2b192c28 +24242727221d24452a242f2c4a2b28163124261c3b2c1e1e25191f221b15 +231c1b21231e1b1c1d1718231a222b2e261510091e904f190b0c0e101213 +141321223f4f170d0e0a081106000003050d02000006000625200f1c1418 +04356037402b4c3a5869896a68a4c6b8757a2e383b312c303330332d3b36 +3a33363c354037443e46363c30363c3e3d3d414535414151403e3d3e404d +4a4f46444645443c4ea0b7a17c77b8c6d8dfd5e0f6eaeddde8fcfaeeeeed +fff1eaeef7fbf7f3ecfafffff4f0f6fefdf0eaf3fcf7eee7efded0d2dcdf +d3c8c2d4e6e5d7cdcacce2e6edddd1c6d9ebeeedefe09458362c455d585a +4e563d4b525c555c5450576453475745514d3d616055535e57555f4f5b51 +635a58645458565e55575c574e5e515d534e5c5b5b55604d4d6c6b535e50 +8f875d675a8475586a688165706e6a627874687d6f747186756770817b6d +71656966647f657373675a75746869786a5f7c61727d881432272420222a +29211c1f1e29232820343123292e5021212521192120292f292327286fff +7a5865677168666465676668696b6c6d6868686165646466616662706764 +65636266646261666b5c5e5a5862665d615f5e6666636761686769696762 +606261645f605f686764636664636662606662605f6162605f6061605f60 +646564615f5e605f5f5f5f5e65606066666262675d5f60605f5e5e5d5a58 +5857575656565455575858565556585a5a59585757585957575857555759 +534e50514f51534e4d4f5151525253534d4f524f4d4b4d4e515152515250 +5151535353505152585b55535455575554505356525053656c4f52514f4f +5151504d564c47494b4a4f574c4c4b494b4e4d494e4b4b47484649484d52 +444a4f4a504b4c4f4b494f4c4a545249474c4f4d49475b464850485b4d47 +4f4b48484b4d4942456754494e3f655157446356544b6e5d4d535f5a6167 +5d4e5f5f6672756c5d556870798c7e7e7577a68474614743302f33333334 +343534353d3657754333262e302d250c0c0f000408150d1216080a441c15 +23271d37975db9676f575c6f9b6a7f5e48717387212b2e241e222522251f +2b262a23262c253027342e36262c20262c2e2d2d3035253131412e2c2b2c +2e3b3a3f363436342f2635889c875f5b9caabcc6bcc9ded4d7c7d2e9e4da +dadbede1dadee7ebe8e4deecf6f1e7e3ebf3f0e3dde6eee9ded8e0cfc1c5 +ced1c7bbb5c8d8d7cabebbbdd5dae1d1c5bacfe1e5e4e9da8d533125384d +484a3f472c3a414b434a423e455243374735413d2c504f44424d46444e3e +4a40524947534347454d44464b463d4d3f4b413c4a4949434e3b3b5a5941 +4c3e7d764c564872634658566f535e5c58506663576b5d625f7463555e70 +6a5c60545855506e515f5f5346615f535463554b684f637283113027201c +1d2527211f221d2824292337301f2325471b1d26271f25232c3129221f1e +5dfb603e4c4f5b53515250524f51505253544f50514b4f4f52544c514d5b +524f4e4c4b4f4b4a484e54474c494a54554a4c4a474f504f554f51505254 +52504f5150524d4e4a53504d4e514f4e514d4b514b49484a4b4948474543 +42444749484543454446474747464a45454b4b47474c4244454544434345 +4546464545444444424345464644434141424241403f3f40413f3f403f3d +3f42403d3f403e40423d3c3e4040414142423b3d3e3d3939393c3d3f3e3f +3e3e3e3e3d3d3b3a393c40453d3d3c3f3f3f3c3a3d403c3a3d4f56393a39 +3737373736353e342f313332373f34343331323534323737343331323234 +363e2d3638363937383c37353b3836403b3432373a383432442f31393144 +3632383633333638342f325340383d2e5441473450433f3656483a404b49 +50564c3f4f4f5662655c4d45575f687a6c6c63649372624f35311e1e2424 +232425262728302948663323161f24211500020d0208050d00000c081650 +1f1630362a3c8e499d4c5a454a597f4b654630595b6f1822251b13171a17 +1a141e191d16191f162118251f27171d13191f2120202628162122322220 +1f20222d2b2f262426221e111f6e7f663d347582949d94a0b8adb0a0abc1 +bfb5b5b7c9bdb8bcc5c9c7c3bbc9d3cec5c1cbd3d0c3bbc4cbc6bab1b5a4 +989ba7aca19892a2b3b0a0939092abb2b9a99f94abbec4c3c9ba7035140b +253d383a2c341a282d372f362e2a2f3c2c20301e2a26183c3b30303b3432 +3c2c362c3e35333f2f3331393032373229392b352b263433332d38252544 +432b3628655c323c305a4b2e4240593d4846443a4e493d53454a475c4b3d +4656504044383e3b38543846463a2d46443839483a3050394c5c6f00231f +1d1d2129281f181b18231c211a2e2b1c25284a1b1a1e1b111718252c2720 +1c1551e6451d24232c2424242325252727292a2b2624251c202224262124 +222e272224202123221e1f22281a1e1b1d27291f211f1b23211d231d2727 +28292522212322241f201f2827232326242326222026211f1e20211f1e1e +1d1b1a1c1f21201d1b1c1c1d1b1b1b1a1d16161e1e1a1a1f15171a1a1918 +181918161615151414141213151616141312151616151413131415131314 +131113161511131412141611101214141515161715191d19161516161819 +1917191616161616151313151a1e17161618191816131617151316283112 +16151313141415111a100b0b0d0c11191010110f13161613171614121111 +1213161d0d1518151916171b16141a17151f1c1513181b1915132510121a +12251713191714141719150f1438251c211036202613302322193a2b1c22 +302d343a322235353c484b42342b3d454e6256584f53825e4e391f190604 +0707090b0e1114171f1635511c0a000a161506000010090b000200000d06 +0a42160e1f1f0e1c712e8737452f324269364e2e18414357373c3a313136 +3833363943414143554b4b5753505e55494f434c54554f4c4f544b56545b +564a494b4e63544a3e4a4b4854534865b9b7a9949fcbdfe8e8dde3eef7ed +e5e5f3fffce6e9f8fbeee8f1faf9f7edeffffffff0eafbfcf8f0eef2f3eb +dfe7e3d1c9d2dfe2d3c9c5cee3f0e6d4c9cfe2e8f4e9d9c5d6dfe3f2f5f4 +c088503b394e495450695759454f565f5b5553404a485b60566156584751 +4f516854505669524f5e484b56515e605a545a576164586e776862756c76 +656b6f74796473714e635f6b5f5f6e696d535a687a79677a67726a676b72 +886a6a6865606b7569707587728284717d6995a29aaf91969d998875901c +262f2c231d1d1e1b191d1b191d181e2f2d34233141212024231c2323292a +2322292a7cff8064686361676561616265656a6d5e666566656463766669 +62655a78626262656563666064655f5e5f655a5e6361626460696c656665 +65676667645f5e6063625d635c6563615e615f5c605f5c5f6161605f5f61 +605e605e5c5b5c5b58565c5a5d5b5b5a59595a5f5f5c57595a5b5d5c5c5d +5d5e5d5c5f5f5e5e5e5e5e5e5b5d5f605f5d5b595c5b5a5b5b5c5b59605c +595757585e655a555657545658545b595755545252525656575656545555 +53525454555454535250514f51515454535053515350504d4e514d47465d +6a4e4f4e4d4d50515250494b4f52504b48494f504f4c4c4e4e4c4b4b4d4c +4d4b4a48484948444c464849464949454342414049434448494240433c4a +3d39454336484142413f3f42413e3c443c3f3d2e3b443937403b3c394343 +3e3937383435372e342f2e3032322f2d2e302d2e2b2a3243282b28323237 +43363534343433343435555d4932343536322825211108060002080d2615 +0d0410db9e2d1a193935b4bbd99e775a685f66716e69606565752a2f2d24 +23282a25282b33313133453b3946423f4d44373d313a42433d3a3d423b46 +4249443837393c51443a2e3b3e393f3c2f4d9e9c8c7883afc6d1d1c7cdda +e3d9d1d3dff0ead6d9e8ebdfd9e2ebeae7dde1f3fdf2e3ddeeefe9e1dee2 +e1dcd1dbd7c4bcc6d2d5c6bcb6c0d3ded4c5bac1d4dae8ddcfbbced7ddee +f1f2bd83442c2a3f38433f584547333d414a4643422f39374a4f45504547 +36403e40564341475a43404f393c47424f514b454b464f4f435962534d60 +576150565a5f645261613e534f5b4f4f5e595c4249576969566956615956 +5a617759595754505b65555c5f735d6d6f5c68547d8a8297798189897c6d +8a19242c271d181b1e1d1f221b181e1a20312c301d28381c1d262a242727 +2c2c2320211f6af9684c4f4b4b53514d4b4c4d4c4e51424a4c4d4e4d4e61 +53564f5247654c4d4c504e4c4f494b4c48494d544c4d504c4b48434c514d +504d4847494b4c48494b4e4d484e454e4a4a494f4d4a4b4a474a4c4c4948 +484a49474947454645464341474848494948474745484845404243444645 +444545464545484847474747474744464849484644424443424343444341 +4844413f3f40464d443f40413e40423e4543413f3e3c3c3c3e3e3d3e3c3c +3b3d393a3a3d3b3d3b3b3c3c3b3b3b3d3e403d3c3d3d3d3c3a393c3f3a34 +3249553a3837363637383839363a3e413f3a37383e3f3d3a3a3c3b3a3939 +393a393936363437343238343437373a373331302f2e3531323637323033 +28362925312f22362d302f2d2d302f2b272f272c2a1b283126242c272522 +2a2a272422231f22231b201e1a1c1e1e1b191b1d191a15141c2c1114111c +191e2a202221202021222324444c36202021222019161105070e090b0400 +0d0002051eea9f2d2528483caaa7bd83624a584b4a525350474c4c5c2126 +241b181d1f1a1d2026242426382e2b36322f3d34292f232c3435312e3136 +2c37343b382c2b2d2e43352a1e282b262e2a1b35837e6a515c879da7a8a0 +a8b5beb4acadbcccc6b4b7c6cabeb8c1cac9c5bbbed0dbd0c3bdcccdc8c0 +bcbebdb3a2a9a79892a0afb3a49a959dafb8ae9e939cafb5c2b7ab97aab3 +b9c9cccc9a632e19172c26312b4431331d272c35312d2e1b2523363b333e +333526302e3048332e3447302d3c2629342f3c3e383238323b3c30464f40 +3a4d444e3d43474c513c4948253a364238384742482e354357523c4d3a47 +3f3c40475d3d3d39362f3a443a414758425254414d37616e667b5d667172 +645674061523241f1c1e201c1b1e191619151b2c2a311f2b3b191618180f +1819232723211f1960e64e2a271f1c211f1b1c1d2123272a1b2324252421 +2134282b25271d3a232223252522261f23231c1c1f261f21252121201922 +241d1f1f20212123201c1a1c1f1e191f192221201e211f1c1e1d1a1d1f1f +1d1c1c1e1d1b1f1d1b1b1b1b18161a1a1b1b1b1a19191a1e1e1c17191a1b +1d1c1e1f1f201f1c1f1f1e1e1e1e1e1e1b1d1f201f1d1b191e1d1c1d1d1e +1d1b221e1b19191a20271f1a1b1c191b1d19201e1c1a191717171a1a1c1a +191818171414151416141315171716161618191b1817181818171516181b +19131128361919181717191a1d190e0e1215130c0b0c1314151214181a16 +13131414141311100f110f0c130e0f110e110f0b0b0a0908100b0e12130e +0c0f051306020e0c00120a0c0b09090c0b0a08120a0e0c00081005030b06 +05020b0b08050506020408000502000103030200000000010000071a0002 +000705081408040305070b0e1112323a250c0808090c1211010002111110 +000009000a070dd5972515112b1d8f8ea86e4d333f33343d3e3a31363646 +50443e4448434348434d4f4f47546b54515c5e4a6a50484d434b514d433d +424846463d36453743473d463840393e414f444b43377bc1b8bab7c9d3e4 +f0eeece1ebfbf7e9e8eff8ffefebf2fcf5e7e9f7fffff7f1f4fdfef8ecf4 +fbf7f1eeedede5e1dfddd4c7c6cae2e0d9d0ced8e4ebe6d9d1ccdde5efea +ddd7cfd9deeef3f9f1d1854a3f493d5e4b5541434555524b5f5745524e4b +5f4c536852544f4f725d5850635f65624355605f605258505555506f616c +6566595e5964515d635e5566788c776375635e5962747a71554761705a73 +606c715a676d896988839e83817b6f7e95918a8ba48f9890929c806f677e +785d6e8a841a372324262623201c181920251d1b2b24312c2a332c2b261f +2023262627241f202a2e78ff875c5f6f6164646164676b6464656b6b6062 +686b576a6b6f696a588461615a62645f665b605d5b6b737f625359605f6b +6662625e626165636466635f6063636260695c635d5d5a615f595e605d5d +60605e5c5e61625d5c5c595a5a5a595858585959585756565b5b565e595d +55555c5958595b5c5c5a5a5a5b5a5c5b5c5c5c5c5b5a5a59595859565455 +57585754545456595957595d5d5757575355585454535355575756565755 +555458575856565758595a59595752515152535352505151525252525250 +4d4a4d514c55614d50504e4d4e4f504f4f4e4b47494e4d484a4c4c4a484a +4b4a484849494848474645444e434c45474d45484b4846494a444543474c +4944434c45484a4043404e42414547423f40434343413f3f3d4a37403949 +3c4042453543403937443c38433d3c3c3b3a3b3b3b393d3c3d323d384c65 +384138364139363d3a393837353434343c472a3e2b32342b322a1a120700 +00000d1114190b09001a331624242b2564815a5766716f7269656e6b6d66 +726a433731373a35353a353f3e3f36445a443f4a4c38583e363b31393f3b +312b303836362d26332731372b362830292e344033362c1e61a69b9c99ad +bacddadbdacfd9e9e5d7d5dce5f1dcdbe3ede8dadceaf4f0e9e3e7f0f1eb +dfe7ece9e1deddded7d5d3d0c7bbb8bdd3d1cbc0bec6d2dcd6c9c3bed1d9 +e2e0d3cfc7d4d9eaeef3e6c2763b303a2e4f3a4430323343403a4e463441 +3d3a4e3b425740423d3d604c473f524e545132444f4e4f41473f44433e5a +4c575054444c47523f4b514c4354667a655163514c475062686043365060 +49624f5b6049565c785877728e73716b5a687f7c75768c77807b7a846857 +4f66624b5f7f7d1433201f202221201e1e1d21251d1b2c233028242d2626 +231f24272a292c291f1e222166f76f4446584c50504d5052544d4a4b4e4e +454750554457575b5556446e4b4b444c4c47504548454555606e5344474d +47524a4646464b484745464a4a48494e4e4d4b54474c4646454e4c46494b +48484b4b4947474c4b484747464747474645454546464746454345454048 +43473f3f4443404143444442424341434244424242424140403f3f404140 +3e3f4142413e3e3e404343414347453f3f3f3b3d403c3c3b3b3d3f3f3e3c +3d3b383a3b3d3c3a3a3b3c3d3e3d3d3d3a3b3b3c3d3d3c3a3b3b3c3c3c3c +3c3c39383b3f38414d393c393736373837383c3d3a36383d3c37393b3b38 +36383938363636373636353433323c313a33333b36393c39343738323131 +353a3732333a3134362e2f2e3a302d3335302d2e31312e2c2a2a2835242d +253525292b2d1c2a2924222f27252e2a29292726262726252829281d2722 +364f1f2b1f1d29211c2525242423232222222a351529171e231a211b0d09 +08060b0809030005010a0c2934172f33392e5e71413e505f5d5e4e4a5352 +544d59513a2e282e2f2a2a2f2a3434322c375037313c3e2a4a30282d252b +332f251f242b29272019271a252a1f271921191e212d23251a0848897b78 +738592a4b3b3b4a9b5c5c1b3b4bbc4d0bbb9c2ccc6b8bac7d1cec6c0c5ce +d1cbbdc5cbc6bfbab9b5a8a3a3a49d95959ab2b0a89e9aa2acb5b2a59e99 +abb3bfbcafaaa2aeb3c4c8cfcaab5f241923173826301c1e1f2f2c263a32 +202f2b283c2b324732342f2f523c352b3e3a403d1e303b3a3b2d332b302f +2a4739443d403138333c2b353b362d3e50624d394b3936313a4c544c2f22 +3c492d44313d442d3a405c3c59546d52504a3f5067615a5b725d665e5e68 +4c3b334a4a3348696a0428191c202322201d1c1c23251d19271f2e29262f +28231c1313161c2025251f1f201b5ae455221e2c1d1e1d1a1e2328242528 +2e3027292e301c2f323630311f4926261f2728232b20241f1c2c36432a1b +1f25212a231e1e1a1f1f21212023221e1f23232220291c231d1d1a23211b +1e201d1d20201e1c1d21211d1c1c1c1c1d1c1c1a1a1a1b1b1b1a19181c1c +19211c201818201e1c1d1f20201c1c1a1c1a1d1b1d1d1d1d1c1b1b1a1a1a +1d1b191a1c1d1c1919171b1c1e1a1e201f19191915171c16181717191b1b +1a191a161615191817151516151617161618161616171818171516161717 +171717171614171b17202c181b1917171819191814110e0a0a0f100b0e10 +10100e121312100e0e0f0e0e0f0c0d0c160b140d0e150d1013100e11120c +0c0b0f14130c0f140e0f13080c08170a0a0d110a09080d0d0f0f0d0d0916 +030c041205070b0b000b0a0505120a07110c0b0b0c0b0b0c0b0a0b0b0b02 +0f0a1f380b1609071109050b0a09090a0b0c0e0e16210214000509061a14 +00000208110b00000006090c00142c111f1e1f1144582b28394745463935 +3e3c3e37433b3d3a38393d3e3b3737363e414c343444434e494347433b3d +354047453a4640464341373643413e42433a3d3e383e443d48494a4e5084 +c9c5ccd2dadfe8edf2f4e6effcfdf1e6effffffbefedf6f9eddff2fbfff8 +f1f4fefffaf1f2fcfaebe6edeae0d2cedae4d9c3cbd5e5ebddcac9d5e6e9 +e9ded0ced9e5eeeee9e0d8d6e1e7eefcffedc38d5631513341453946493d +504a3f3b424d52514349394b564e5f5f4e6467505b5d686f6d5a5b5e545b +665d503f564a57696051575f47576b5d5c5d53626b707669626a737f6a79 +8e97a57a8b8aa4827a7287867c787d7c7d6c58745b788e8ca1848388877b +716d665c967581806e9b921d321d27242439251f1d1b1b20301e27413332 +30372323221f2b22262623202325292a6bff685f68606463626a615f6359 +6b605758515c5e565a514e5a63607cad6056546c52455e51564d55627269 +5852505955524e5d5359594f59565c5550575d5f62555b5c585a5558505e +595859585c5a5854605b5464565c525a55565c5a59555a58565859595b5e +58585858575656575b54535b545d545b5b53525354575b585c5753655754 +5a5a595752545f615b5a545a575154595859575653555a58535555595b4c +67524f5453515355544e515757524f56525851575655514e525958525454 +5e56505448544f4f54524e56594d4f4f50504d4c4e51534a4f504f514d4c +4e4e4f4f4d4a4b4f4e4749484d493f47444a5a4d4a444e45444e4a454d4d +47474b473a517e744e464a4746474843444547474845414142433f414244 +3d3a433e3e4442413e403c3f3c3d3f3f3e3a3c3938383a3d3b343a403738 +3c3a37373a3e32383c3a3737383437332f303335322f3132312f2e2e2c2a +2c35260a030a09020e090d100d05041d261524241f25428a65676d777d63 +616270517f7984812f2c2a2b2f302d29292830333e262636323e39333733 +2b2d2430363429352f353233292832332d34322c2f302a30362f3a393939 +3666aaa4aab2bec7d2dbe2e6d6dfe9eadcd1daeaf1e8dfe0ecf1e8d7e5ed +f0e9e2e5eff7ebe2e3eeecddd8dedbd1c3bfcbd6c9b5bbc5d5dbcebbbac6 +d6dbdbd0c2c0cbd9e2e2ddd4cccdd5dde4f2f6e2b8824b25452734382c39 +3c30433b302b323d424131372638433b4c4d394e513a4547525957444548 +3e4550493b2d443845594e41474f38495d4f504d3e49525760534d555e6a +5567798593687c7b95736b6378776d696e6d6e5d4963455f75738b6e6d72 +71675b595248826068695a8c88162d1923212035241f1e1f1c22301d243c +2e2d2a331f1f1e1b2822272827242323211d59f24e4551494f4f4e56504d +524654473b3b34414540464039454c496594473d3b533b2e493c4138414e +60574844404945423b493f45473b453f453e3c43494b4e41474844433e42 +3d4b46454645494745414d483e5140493f4742434644433f444240424343 +4548404040403f3e3e3f413c39413a433a41443e3b3e3d42444145403c4e +403d4343413f3a3c474943423c433f3a3c4240423f3e3b3d42403a3d3c40 +42334e39363b3a3a393e3a37383e3d38353c383e353b3c3d39363a41403a +3a3a443c363a2e3d38393e3c3840433739393a3a3736383b3d34393a393b +373638383939373435393833333439352d353238463936303731303c3833 +393933333433263d6a60372f33302f33312f2d31303334312d2d2e2f2a2e +2f312a27302b29302d2d2929252a292a2b2b2a2928282727292c2723262f +242729272323262a1d2427252222201f211f1d202527231f1f201f1d1e1f +201f21291d04000b0b02090004090c0a0e282b1b2f312d2f45835551555e +674d4d4e573967616c692623212226272420201f2728351b1d2b28312c26 +2a261e201a232c2a1f2b252b28261e1d28282329281f22231d2329222f2c +29261f4c8d85878c99a1abb5bec1b4bdc8c9bdb2bbcbd2c8bdbdc8ccc2b2 +c2cacfc8c3c6d0d8ccc3c2cbc9b8b3b7b2a69a96a4afa59097a1b1b7a794 +939fb2b6b6ab9d9ba6b3bcbcb7aea6a6afb9c1cfd6c29a662f0b2d112127 +1b292c2030281d1b222d323223291729342a3b3924373a232e303b42402d +2e31272e3931281930242f42382a3036212f4335363429353e434b3e3840 +49554051646f7d505d5a74524c4459584e4a4f4e4f3e2a452d495f5d7456 +555a594e433e372d6743494a41797c0e2916201c1d32201d20201e213019 +1f382b2a2c3420201d18211a2225262325241e154bdd3322271d201d1b21 +1c1b241c32292529222e2f282b221c262d2a4676291f1d351c0f2a1d2219 +202b3c3326211e2723201a261c202116221d231c191e2426291c22231f21 +1c1d15211c1b1c1b1f1d1b17231e1527171f151d1a191f1b1c161b191719 +1a1a1c1f1a1a1a1a191818191c16141c151e151c1b13121314171b181c17 +132517141a1a1b19141621231d1c161a191116191a1913120f1116141111 +1317190a25100d1312111415150e1016181310171319101617171310141b +1a1415151f17111509140f10151311191c101212131512111316160d1213 +1214100f11111212100d0e14130e0e0f1410090f0e142316130d150e0d18 +140f161610101210031a493d170d130e0f10110c0d0e1010130e0c0a0d0e +0b0e0f110a07100b0a0f0e0c0a09060b0b0c10100f0d0d0c0b0b0d100c07 +0b1306090b0908080b0f02090c0a070706040a0705070b0d0c08090a0905 +070808090f190c0000060a00030000030804031a2411211f14142a693c39 +3d485036353641214f49545134323133353533313530303e433a3136313b +3b393e3a302e3c3f4243373c32393c423f3d3c3636453c383b3a34383c36 +4e3c3d4141548cc7cee5eceedfe9ebf5fce5e4fcffefe6effbfffff1e8ef +f7f9eeebf4fffff2eef7fffff6e6ecfbf4dde3ece5ccbfcadde7d5cfcbd2 +e3ebe0cec7d4e4eeede4dbd5d3dfedf3ede5dfdddee0e7f2ffffecd59557 +4c574b3f3b484852575459635f5271625f6e6f6160666b80766a7567555d +756a6f62787d886f7b717966837068796a79607f70605c775d6e75777e7c +787f7e76795f5a716359585b5e6376717f6862646461666562738188756a +7b65836272718091805f7784726d5f8b74192932222530231f2527222719 +22282934362c371b331c2c2423202726232124262b2d74ff6f5e6361645f +625963606e5c4f2c242e212a262436243537363730422f333856373f2e30 +2d3b2e2e36302d2e282a3141322c2f343437313b363a454537363839453e +373f3f3e3c463f3e403c41423c3b3c3b4656383f43413c393e3e3c424447 +49474747433d43454644424246494d424851444c544644534c434b47414f +57574548485957454d504f525a5a54534d504d4a4f504c4d55504e4f4f4f +51534c4b4f4d524a4b4b50504d494d5556514c4f51504e53535552535351 +5051504d4a534d4d505c644b52524e4d4f4948534f4e4f504e4a494a474b +4a4447474c474d4645454a4848454a4e45454946454643474d4445444b4e +4d4e48414244474b475247404c4a45504542424443414043434342414143 +4342453c3c3c3d44423940393c493a4e35463b3b3d3c3c3a3b3a3c3a3b3b +3b3737383836363435353535373b3f3b36353533393430312b2629333031 +312f2e2b29282a2c23140f0a08090b11130300080c1d171a1c281f20267f +546d7c83816b7b766676605b6c66262423252727252327222230352c2328 +202a2a282d291f1d2b2e3132262b21282e34312f2e2828372e2a2d2c262a +2e2842302d2e28386ca5abc4ced4c9d7dde7eed5d4ecf1dcd1dae6f3f3e3 +dbe7f2f1e1dde5f4f2e3dfe8f4f4e7d8deede6cfd4ddd6bdb0bbced8c6c0 +bcc3d4dcd1bfb9c6d6e0dfd6cdc7c5d1dfe5dfd7d1d1d2d7dde8f6f6e3cc +8b4c414c3f33323c3b45484449534f425f504c5b5c4e4e54556a5d545c51 +3c475c54564c5f676f59665f6754716058695a6b52716255516947535a5e +656362696860654b465d5248474c4f546762705953545451565552626b72 +5c54654f6d4e5e5d6c806f4e66715a554b7b6a11252e1e222d201e252823 +2b1d2227242d2f273319311a2a201d1c272827252425232063fb56444c4a +4f4b4c455150604d3c180a14091413152c1b2929282920321f2328462731 +2226232f2020282523241e202a3a29232429292c2630282c373729282a2b +362f2830302f2d37302f312d32332d2c2d2c3747293034322d2a2e2e2c32 +343736343434302a303233312f2f3134382d333c2d353d2f30413a313935 +2f3d4343313434454331383b3a3d45453f3e383c39363b3c38393f3a3839 +39393b3d363538363b3334373c3c39353941423d35383a39373c3a3c3b3c +3c3a393a3936323b353538444c333c3c38373933323d383a3b3c3a363536 +333733303033353336322e3133343131363a31333633353633373a31302f +36393a3b352e2f313236323d322b37352e39302d2d2f2e2c2b2e2e2e2d2c +2c2e2e2d322b2b2b2c3331282d262936273b22322a2b2c2c2b2a2a2a2b2a +2a2b2a2726282727252524242424262a2b272221211f241f1f221f1a1d25 +201f1f1f1f2121201f241c100c0a0708080e1003010b13241d2227332b2a +2a7b4659626766556964505e4843544e1d1b1a1c1e1e1c1a1e1919272c23 +1a1f1620201e231f1513212427281c21171e23292624231d1d2c231f2221 +1b1f231d36241e1d142253898da3acb1a4b1b8c2cbb3b3cbd1bcb2bbc7d3 +d1c0b8c2cacabebac4d3d3c4c0c9d5d5c6b5bbc8c1aaadb6af968994a7b1 +9f99959cadb5aa9894a1b1bbbab1a8a2a0acbac0bab2acabacb0b9c4d3d6 +c4af72362d3a2f23232c2a3235343943403351423d4c4b3d3a403e52473c +4639262f463c4034494f5942514b53405b494152415138574739354e3040 +474a514d4d5251494d332e44382e2b2d32374a45533c363a3a373c3b3848 +545b483d4e3856364644536655344c533833326b610e242d1b1d26191923 +2a252c1c20231e272923321a341d2b1f1d19252728262623201753e43821 +221e20191a121f1f33261c0000070007020011000f0f0e0f0719060a0f2d +0e17080b081505050d09080903050e1e0c06060b090c08120b0f1a1a0c0b +0d0e19120b1313120e160f0e100c11120c0b0c0b1626080f13110c090d0d +0b11131616141414100a101213110f0f1215190e141d0e161e0f0f1d160d +15110b192222101313242210191c1b1e2626201f191b18151a1b17161a13 +111214141618111016141911121419191612161e1f1a15181a19171c1b1d +1b1a1a18171817141019131316222a1117151312140e0d18161718191713 +14151216130f10101510160f0c0e11110f0e13170e0f1512131411151a11 +1110171a1a1b150e0f111317131e130c18160f1a110e0e100f0d0c0f0f0f +0e0d0d0f0f0e140d0d0d0e15130a0f080b18091d04171011121211101010 +11101011100d0c0e0b0a0908080808080a0e100c070606060f0c0b0b0700 +030b0707070608080a09090f0c04030202030107070000020b1c13171722 +151111602c404b51513e534c3946302b3c36313234353637373738333042 +3e483f3e4648413a3b3a3638423f40443b3d323b3d3c393b3e38363f3e3e +43423a38382f3238433e494d507fc6d4ddfffdfff0e9f5fbf3e7f2ffffe7 +ecf2fcfffbf0f0f9fff4e9edfcfffcf1f0fcfff7e9e5eaf0eadedfebe3ca +c4d1e2e0d8cccad6e5eee2d8d0d2dee9edece0d8d3dbebf3f0e7e8e3dddb +e1ecf0eeffedd6aa6a3e374955585752555e64625e5060686161636f7786 +6f768b89728b7d6e697283676379686b6d4d6f5e656a7b836c5b6255605b +53606261636563676d5d6e5b5f785d55575d5f6067686e737a70656a6960 +656d6e967e747d788b7d6d6b6f7a746662786b837f9360242121211d261f +2221161e201621332725393130245f29152842262624212023252b3072ff +705f636769626468685c643f191f1d1617222118150a110a122e1b08160f +0a131e4c1919180c1b1b201c181b1a210d1f1729161c171c271d071d1618 +1f24181b2923181c1f241c241e21231b1e211e231b1a2c3818241f1b221e +25281c25181e1f1d2632332b212325242222262a212a221e25253226202e +2b23292b27292d30212a2b2d2825282e3033373229282c2d2a2b312f2b2e +2f292f332c2d35353430353d313438363330313743463d31393935363f48 +4438383b3f413f3b3b3e49363b453c3340483f46403f463c384c3b3b3f44 +454341424053463e4340484446414042464444433e4b4244463d3f393d40 +383c43433b4144404143403f434345524d3d3c4142434442424343414143 +3d3b3b3e40413e3c3c405144363c383b45323d273f2c432b39393a393938 +3a3a3b3939373b3b39323935333337383633373a3b37333131302d32312b +2d34342f2f2f3131302d2b282c2c1b0c111a1409100f140e06020b272537 +212d1f21197f7566657d7954605e777070635d6723242627282929292a25 +2234303a3130353730292a292527312e2f332a2c212a2d2c292b2e28262f +2e2e33322a282821262a332b3332325fa4b5c0e6e6f4ded9e7ede5d9e2f5 +edd4d9dfecf3ede2e3ecf4e6dadeedf4ede2e1edf3e9dbd7dce2dbcfd0dc +d4bbb5c2d3d1c9bdbbc7d6dfd4cac2c4d0dbdfded2cac5cddde5e2dbdcda +d4d1d7e1e5e3ffe3cc9f5f332b3e484c4b45485154524e404f575050525d +6272596275755c77675a535e6d534d645356583b5d4c535869735c4b5247 +524b3d47494b4d4f4d5157475a474b644944454b4d4e55565c61685e5358 +574e535b5a8268606964776c5c5a5e6963575367576e6f86571f2020201c +231c21221820241b22332321352c2f245f2915273e222626252423242323 +61fb57454c50544c4c505349522f090e0b0609191c181b11150d15311d0a +18110c1621511e2120111a181f1b191c1b221022192b151b171c261c041a +13151c211316241e13171a1f171f191c1e16191c191e16152733131f1814 +1b171d20141d101617151b27282016181a191717191d141d151115152217 +13221e161c1e1a1c1d20111a1b1d1714181e2023272219181c1d1a1b211f +1b1f201a20241c1d25252420252d212428262424252b34372e222a2a2425 +2e373328282b2f312f2b2b2e372429332a212e362d352e2d342a263a292b +2f34353330323044352f3231373535322f33353533322d3a33353730312b +2f322a2e33332a3034303133302f333334413c2c2b303132333131323230 +30322c2a2a2d2f302d2b2c304134262c282b33202b152d1a3119292a2a2a +29292a2b2b2a29282b2c29232926232427282623272a2925211f1f1e1a21 +221f232a28211f1f1f212121202021211409111b150a110f110c06030e2d +283b28362927197965504b615e3b4b4a6158584b454f18191b1c1d1e1e1e +1f1a1729252f26252b2d261f201f1b1d2724252920221720201f1c1e211b +1922212126251d1b1b14181d241a1e1d1a468998a0c5c4d1bab5c4cac2b6 +c0d3cdb4b9bfcad1cabfc0c9d1c3b9bdced5cec3c2ced2c6b8b2b7bdb4a8 +a9b5ad948e9bacaaa29694a0afb8afa59d9fabb6bab9ada5a0a8b8c0bdb5 +b6b3adadb4c1c7c7e4cab3894b211b2c35363532353e44423f313f473e3e +40494d5a444a605d475f52423e46583b384f3e41432547363b40515a4231 +382c373126313334363736393f2f412c30492e282d3337383f40464b524a +3f44433a3f4742695147504b5e52423e424d473a3649364f56764e1c1e1e +1c171c151c1d171f23171c2b1a182c262b24612b15253d1f242526252522 +201a51e439222324251d1c20241e2c0d000000000008060000000000001c +0800030000010c3b080a090006050d09070a0b12000f0416000600041108 +00070002090e0003110b0004070c030b05080a020508050a0201131f000b +050108040a0d010a000304020915160e040608070505080c030c04000505 +1204000c0b03090b07090d10010a0b0d0704090f111418130a080c0d0a0b +110f0b0c0d070d110c0d15151410161e121519160f0c0d131d20170b1515 +10111a231f111114181a18141417210e131d140b181e151b16151c120e22 +1314181d1e1c1c1b1627191216121b1619131114171615140f1c14161810 +140e12150d11191910161a161719161519191a2722121116171819171718 +1816161812101013151613111317281b0d130f121b081300150219011213 +131312121314141312111415120c120f0c0d10110f0c1013130f0b090908 +090f0f090a110e07060607080a090a090b0d020007130f04090708000000 +07231d2d1823110d005f4c38344b492536324a4040332d373033373a3b3c +3d3f3633363e344045424d4b433a36363a40484949493e443c43423e3e45 +4945434841474d4b433d383240545039424938417ab3d5e9eafffff6e9f5 +fffaece9f8fff2e7e9fdfffff2eef4fdfcefeaf3fffffbeff0fcfaeae5ed +e2dfd7d3dce5ddccc4d0e3eadbc9cad8e2e7e8dfd4d2dce7efece6ded8da +e3eaecefefe7dfdfe6ebeff5fafbfceab9914e44434d535157656060685b +444d6467525b525d685d444c4f3a5785535c5d45514b4f44525568515446 +4f5e866267616b695f626473809066737f85776b6f6c74687f7b828c5f6e +787c7d847863706f6167727d6486785c786b656e7e8282828c79618e6a28 +242a2a291e23232117211f1f2b2f2627312d2f1b2b271d1d2f1c231f1d21 +222229316fff6c63676a69656b60748c522b262523141603041111341a11 +193534264b472b1e0d141a0c1827171216121012121c1e121549090f0a06 +1704155729151e0b1a090b0a060f28460308060d10040507090f0d08070e +02130908150a0f1a08110f100f0f141a19120f101111111111141610191e +1724542e1e0f161a172831131c21111b1b15131f161c1e20241e15141211 +0e111513141e110d1c2314121811110f1417151214131b11162931251b1a +14160c1b1b241a111b1b2024221c1d2310191f22281b231e1320221f2326 +252624212124231f1e201f3722222a1e25222023282c2a2624262830312f +2e28282f2a3428302d2a2238362a2d342f2d302c2a30332e2f3732253130 +2f2f2f2f2f30343335393b3835312b3858452d322b372f4fdb41362f4237 +33343333323335373032302e32383630312e2d2e323332302f3133312f2e +2e2d2e322e27272d2b222d2e3134332f2a2a2c271d1a160d0a1419131717 +0f01052537472b2e1e1e13617c6260666e6d73615c51505d57542225292c +2d2e2f3128252830263237343c3a32292525292f373838382d332b33322e +2e353935333831373d3b332d2822324740262d301d255c95bad0d1f4f0e4 +dbe8f2eddfdbe9fae2d7d9edf7ede2dee6efede0dbe4f1f6ece0e1eeecdc +d7dfd3d0c8c4cdd6cebdb5c1d4dbccbabbc9d4d9dad1c6c4ced9e1ded8d0 +caccd5dee0e6e6ded5d5dbe0e6ecf0f1f2dfae864238374147444a555050 +584b333e53564049404b564b323a3d284573414a4b333c363a2f4043563f +42343d4d755256505553494c4e5d6a7b515e6b7264585c5860566a696d79 +4a5b6369677162505a5a4d535e695072674b675a545d6f73737379685585 +6324232a29291b212322182324242c2f22232d2a2e1b2d281d1d2e1b2321 +2122222122245efb53495053544f50455d763f1c1718190e15080f21264b +30272f4b4a3a5f5b3f34232c3226323f261f23201e22222c2e222559181e +19152411226436222b1524131514101931500b110e16180d0d1011181511 +0f170a1b110d1a0f141f0b1412131212171d1a131011121212121213150f +181d1623512b1b0c131712252c0d161b0b15140e0b170e16181a1e180f0e +0c0b080b0f0d0e180b07161d0e0c110b0a080d100e0b0d0d150e13262c20 +16150e100514141d130a1414191d1b15141a071016191c12171207131512 +161918191815151817131214142d181820141b1816191e22201c1a1c1c25 +262625212128232d21262320162c2a20232a252326201e242722232b2616 +22212020202020212524262a2c2926251f2c4c3921261f2b2040cc322720 +3128262726262526282a23252321252b2923242120212526252320222422 +201f1f1d1e22211c1f2621161f1e1f2223201f1f201c161718100f1a1c15 +17150c01062637482e3323200f576c4c464a53545e4c433938453f3c171a +1e21222324261d1a1d251b272c293230281f1b1b1f252d2e2e2e23292126 +252121282c28262b242a302e26201b15253730151a1c080f447b9db1b2d2 +cdc0b8c5cfcabcb8c8d9c1b6b7cbd6ccc0bcc3ccccbfbcc5d2d7cdc1c0cb +c9b7b2baaca9a19da6afa7968e9aadb4a59394a2afb4b5aca19fa9b4bcb9 +b3aba5a7b0b8babfbfb7b1b2bbc2c9cfd5d8d9c99a702c201f2b31313945 +4141483b232b41442c332c3542351e242912315d2d34371d2721251a2a2d +3e272a1c25335b383c363e3c3235364552603643505446383e3d48425755 +5c68394a5258596254414c47353a455037574d2f4b3e383f52545654584a +3d745b212128242112151b1c1320201d2425171822212a192c2a1d1b2c17 +211e2224241f1c1b4ee43526272927202318334f1e0002080d0003000000 +001f0a030b2726173c381c1000080e010d1d09030906040708121307083c +00000000080006481a060f00090000000000163700000001030000000003 +00000002000600000600000b000100000000040a08010000000000000001 +0300060b0411401a0800000400121900060b00050400000a01080a0c100a +0100000000000100000a00000a1102000700000003060601050105000013 +190d030200000004040d03000202070b09030309000005080c0107020002 +0501060908090805070a0905040400140000070002000000050707010101 +02090a090805050c0711050d0a07001412070a110c0a0d08060c0f0a0b13 +0e000b0a09090909090a0e0d0f1315120f0d091636230b1009150b2bb71d +120b1d1313141313121315171012100e12181610110e0d0e121312100d0f +110f0d0c0c0d0e121008080c08000505070a0c0909090a0804080d070810 +130a0b090300001e2b381d1d0c08003c52342f343e3e49372d21202d2724 +2d3135373737393b3a363f3a393b453b383b3e3c36363c424b5353473743 +3c3f3a3e474a4440464f41484a46433f3c3a34433c3b4449565d436fa6d1 +eafdfffffdece9f9fdf0edf8fefdf2e9f2ffffffedeff8fff9edeef7fffc +f2eff5f8eee2e3e7dfcdc7d2e0e5d9cbc9d8e5e2d9d4cdd5e0e9eae4dad3 +dee5eef0ebe3dcd9e4e5e9ecedeae2dadde2e5f1fdfcfefff6ca936a4830 +2f3b404e5156494a6a5f59515450565e6f6e655b57776567514d60525062 +63616b675f7068615e66665b726a616a5f605e686c695c7980717e717863 +6a64697f5c767473625c58596b60667571656977697290756b6f7561786e +63766884581e2d1a173332262d2427171a182219232c21372820151c3422 +1920201d1f242421273176ff6565666663686a6e686b4311241b18130918 +55838da69594928382778b8ea47f838791737e738c7d7a7a81847c7f7d64 +698e5d617067715b5f92645e7260554b565a5046444d4b4e484d5045484a +3f3d46462f353b423633382024382d34242020272a231e1a212020222423 +1f1c1d2c1c0f170d21102211151815272e0f0a1c1014171a0f070b0e0d10 +17160e0d11100c0a0c0b112019152227150e11080a0c0e041b0a07060a04 +070f0e04060f07180e290f100a1519151517140e0d110d1b06011b081617 +130a11150e151b0c140f0e111312161d0d1e0b18230f12110f11171f211c +1613120e150e0e10112a041611160d11214d28150f120f1014110e101514 +0e1219161717161414151515141314161514161a1410271c172417181415 +7b22152a1c221919181716171a1c1c1f1e1b1c2224211b1c1e1f1e1e1f20 +1f2023242422212128242327272528312a2c3034342f2b2c213522051f4b +3600171c1d0f080a0b1917211c20202521408e5a5d62665d53534a648268 +665f1f23272929292b2d2c28312c2b2d372d282b2e2c26262c323b434337 +27332c2f282c3538322e343d2f363834312d2a2a24332b2a31343f442855 +8cb7d1e4f1f9efe0ddedf0e3e0eaf0ede2d6ddeff3eadde1e9f0eadedfe8 +f6ede3e1e7eae0d4d4d8d0beb8c3d1d6cabcbac9d6d3cac5bfc7d2dbdcd6 +ccc5d0d7e0e2ddd5cecdd8dce0e3e3e0d8cfd4d9dce8f4f3f4fdecc08960 +3d25242e33414449393d5a504a40433f454d5e5d544a46665456403c4e40 +3e50514f56524a5c544d4a5452475e564d564b4c4a54585649666b5d695c +624e544f526a45615d5e4b474144544b52616054586658617f645c606652 +695f54685d7d541d2e1b173330242b24281a1f1e241a20261d3527211720 +36221921221f20252420202465fa4c4b4d4f4e514f514c522e0016131617 +172d71a4b4cfbfbcbaabaa9eb2b5cba7abb1bba0ab9daf9e9b9da4a79ea1 +a0878cb17e8292888f797db0827c907c716772766c625f6964686067685f +606457575e60474f535a4b484d35394d40473733333a3d362f2b32313133 +3534302b2c3b2b1e261c2e1d2d1a1e211b3034151022161a1b1e130c1013 +12151c1b131216161110111116251e1a262b1912150c0e1012081f0e0b0d +110b0e16150b0a130b1c122d11120c171c18181a17110e120e1c07021909 +141510070d120a111708100b0a0d0f0e121a081906131e0a0d0c0a0c121a +1c17110e0c0a110a0a0e0f2802140f11080c1a4823100a0d0a0b0f0a0709 +0e0d070b120e0f0f0e0c0c0d0d0d0c0b0c0e0d0c0e120b0920150e1b0e0f +0b0c6f16091e101610100f0e0d0e11131316151213191b18141515161515 +161713141718181615151a181a20222122271e1c1e2224201f20152a1b04 +235340081f1f1f0d05070816131e1b2020211a357d4243464b443c3e3149 +674d4b4412161a1c1c1c1e201f1b241f1e202a201b1e211f19191f252e36 +362a1a261f221c1e272a2420262f21282a26231f1c1b15231b1a20232d30 +133e739cb3c5cfd6cabab7c7cdc0bdc7cdcbc0b5bed0d4cbbbbec8cfcbbf +c0c9d7cec2bec4c5bbafadb1a997919caaafa39593a2afaca39e9aa2adb6 +b7b1a7a0abb2bbbdb8b0a9a7b2b5b9bcbfbdb5afb3babfcbd7d6d9e2d1a5 +6e47270f101b223034392a2c4a3d372c312b33394c494236345242422e28 +3a2c2a3c3b39413d35443c35323c3a2f463e343d32332f393d382b464c3c +4a3f4b393f3a4057334e4b4b3b36313344383a4644383c483c4361463d3f +47314a3e334b476d4b1829160f2723151f1a22131814190c11181129221c +161f3520171c1f1c2227241e1a1b55e32e28252521252429273313000908 +0a08000e49757d93807d7b6c6b5f73768c686c717b5f6a5e756764656e71 +6b6e6a5154794549564f5945497c4e485c493e343f43392f2c393d453e44 +463c3e4135343c3d252c31382a272c14182c20271713131a1d160f0b1211 +11131514100c0d1c0c00070010000f000104001318000008000002050000 +0000000005040000000000000000000e0a06151a08010600000103001100 +00000000000403000004000d031e040500090b07070906000002000c0000 +0a0005060100010300050b00040000020403070b000500000a0000000000 +000408010000000000000000001100000000000007340f00000000000000 +00000000000000000000000000000000000000000000000000000e03000a +000000005f06000e000600000000000000020205040102080a0704050607 +060607080506090a0a0807070d08090d0c080a0e0605060a0d0907080014 +080015463500141412010000030d070b070806060019632a2c3036302a29 +1b345238362f313437383736353639343e394744473839383d3e36374349 +424f504232403a3b383a41423c3e43403e44403b3e40424742473b434744 +5043362d4a87c4dff1fafffff4e6f4fffde0effefff7ebf1fffffff6ecf0 +fdfff5e8edfdfff8edecedececdfdee7dec9c7d7ebe4d6caccd9e5eae0d5 +ccd1e1edece6e0d9d5deedf5f1e8dfdadadfe9f0f1efeae8dde0e3dfebf7 +f6fdfffff4d4ad907a6a4a4c443e615f574d615953556650705456656b57 +5a665d6c63696e6e62795d5e6a787364626966656982787d74787873797f +72656b757d817b87828073757d766f7166586c876f6d77656a5e92896b67 +7379887a93746b7b7cb2721a2b2e25324124301c302325222b2128251d51 +3321311c24252c29221e222a2a22273279ff5f636365656f71656f5c3517 +6530130e08599d9390888b95988394938d8697978683a287758b8c808182 +817f7a84847d847a817c9587838877877d838478827f837a778487868284 +77767872777a7d737c886f767b7476797b6a6f80797c766c687074727379 +6e6e6e6f706e69666260656b615f745d626b645a60625b5b626657594f50 +59685655504f55544e4d4a4a443f4040455139353b3d322e312d34373627 +47312b2e1d282c251e1f24231a2a1c3c211b1723221e1b1b1d1b19190e07 +350f141414633916192516161e11130f0f1415151c270f160c1c25141214 +110c0d17201f150d1212150f0f100e1b1b1e15120b070a20150904070b0e +0d080c080a0a06050d110f0f0f0a0b0b0e0b150f0f0d0e0c161e190c130f +1421171419060816120b253913131211101113150b0e0e0b090a0c0d0a0d +12100c090b0e0d0c0e10100e0d0d0d121517212e2f262a2a2d34332f2d2f +302f231308000005100d0e08090b112529292a2224252e2d834c5564605f +a3ffa680d7b173752326292a292827282b26302b3936392a29282d2e2627 +3339323f403222302a2b26282f302a2c312e2c322e292c2e303631372a32 +36313a2d1f17316daac6d6e3fcf8e6dae7fbf0d3e2f0f3e4d6dae8f3f4e8 +dde1eef1e6d9deeef4eadfdedfdeddd0cfd8cfbab8c8dcd5c7bbbdcad6db +d2c7bec3d3dfded8d2cbc7d0dfe7e3dad3d1d1d6dfe6e7e5e2e0d4d7dad6 +e2eeedf4fcf9eac9a2856f5f3d40373254524a40544c4648594363474958 +5e4a4d574c5b52585d5d50674b4c58635e4f4d5754555770666c63646460 +666c5d505660686b65716c6a5d5f6760595b504256715b596654594d8178 +5a56636a786b83655e7074ac701a2a2e23303c1f2d192d2327242c1e221f +174d3322331e26272c2a2420242b2a21202568f846494a4e4e5854485241 +1f05582c161b2179c5c3c4bdbec8c9b4c5c4bcb5c8c8b7b6d5bcaac0bbad +b0b1b3b1abb5b6afb6acb0abc3b5b0b5a4b4aab0aea2aca9ada4a0adb0ae +a9aa9d9c9e989da0a399a2ae959ca199989b9d8c91a29b9e968c88909492 +93998b8b8b8c8d8b86827e7c81877d7b8e777881766d72746d6d74786769 +5f606978666762616766605f5c5c5651525257624a454b4d423e413d4447 +463757413b3e2f3a3e373031333229392b4b2e282430302c292929272525 +1a133e181d1d1d6b3d1a1d291a1a2215171313181919202b12190f1f2817 +1517140f101a232218101414171313141220202318150e090c22160c070a +0c100e0a0d0a0b0c05040c0e0c0c0907050808080f0c090a0809101b1609 +100c0e1b110e1300000f0a041d320d0d0c0b0a0b0d0f0508080503040607 +070a0c0a060305080504060808060505030b0e121f2c2a1e1e1b1d22231f +1e2021231c140e0909111b1310060507091e2221241c1e1e231d6f343b48 +45468cf08d65bc96585a16191c1d1c1b1a1b1e19231e2c292c1d1c1b2021 +191a262c2532332515231d1c181a21221c1e23201e24201b1e2022262127 +1a2226222c1f0f021b548fa8b8c1d8d3c1b4c4d8cdb0bfcdd1c3b7bbc9d4 +d2c5bcc0cfd2c7babfcfd3c7bcb9bab9b6a9a8b1a89391a1b5aea09496a3 +afb4ada2999eaebab9b3ada6a2abbac2beb5adaaaaafbbc2c3c2bebcb3b6 +b9b5c3cfced7dfded1b38e715d4d2d3027224341392d4339353548305234 +38454d373c443a49404649493c533738424e493a38413e3e3f584e524949 +4942484c3e3137414d534d5955534648504944463b2d415a423e4a383b2f +635a3c384249574a62443e545d9c641225261721290c1c0a24191c171e0f +120f0941291c301d25242a25211d232d2a1f1a1c58e128262224222c2a20 +30240a004f230b0904549389827573797a6576756e6779796867866c5a72 +73686a6b6e6c6973716a6f6568637a6d6b726171676d6c606a676b625e6b +6e7072776a696b656a6d70666f7b62696e6666696b5a5f70696c655b575f +636162685b5b5b5c5d5b56524e4c51574d4b5f484a534c40484a43434c4e +404238394251413f3c39413e3a373636302b2c2c313e2a282e3025232622 +292c2b1c3d2721241522261f18191c1b142416361a14121c191512121311 +0f0f04002903080808562c090c1809091104080404090a0a111a0004000a +13020002000000050e0d030000000100000000090a0d03000000000d0400 +00000000000000000000000000000000000000000000000000000000000a +05000100000b030005000000000010220000000000000000000000000000 +000000000000000000000000000000000000000000000a1514070604040a +0c0807090a0d0902000000050d07030000000616120e0e0404020703561c +243232327adb7950a78143453436393b3a3938383436373843433f3b453c +3d3d343742463c474c463b4941434b494b4a49535342454b47434a4d4c51 +4f54443a44504f484c524d5570addef5fbffffffefeaf6ffebeefafffded +eef9ffffffefebf8fffbeeeef3f9f8efe9e9e4e3dbd2d8e3decfc4d9ebe8 +dacfcdcde2e7e8dfd2d0dce9ebe9e4dbd6dbe9f6f0ece7e1dadbe1e7edfa +f3efeae8eee3e8f0f8fcfffffffffff2ded8c7a294876f6362584b4f5645 +315157486e63575b54656859626d60726768705b636b79716b695f695a71 +7070756e7d7e818b8483756b545f62666859886b627d9c907273858a7e6b +97858f846e7f9391a6a397746a705b7d4831311f2a192b1f282f25231f1f +2525262124473a211b1e211c221e232026313026273276ff6065636a666d +6a83805b3b0e2d1216144b95977a83919094897d8c918d828d84868b928b +8589847f86867d777c91818388727c788c77767e706c74786e6e73768075 +717c776c787d706d6f6e7272726a68776b6f6d66636a6b6c73747071776d +65646363676d6465666562605f616571676a70675c6b687a74686c645d6a +646978977f605d6b6d6d666264625f615f625c575a5c5b5e595553545353 +55565855544c5b4f4d4d46565d545054534b494e41544f4447424a4a4948 +4b4e4d4b4246a45637482d6062433f48403e433c434040423c33353e3635 +353a3b353334322d2c313738363530412d2c30292f1e211b1f25312f2a23 +181c1b1c24251f1c1c1a191a1d1b1918191a1913131516131a1311121310 +141a171014150f0f1111150d1f090e1813140f0f0f0e0d0d0e0f11111213 +110c0b0d0c0f12100d0a0b0e0d09090b0c0b0c0f0d0f0e090c1d303a2829 +2c33332e2d312e2a1e130e0a0e1b0900020a0d0a102f6e7174717d86999f +a18261565a5060625a655a64876b26282b2d2c2b2a2a2628292a3535312d +352c2d2d242732362c373c362b393133393638373640402f32383430373a +39403e43342a343e3d36393c363c5692c0dae4f4fbf1e1ddeaf7e1e1ecf4 +ead8d6e4eff8f1e0dce9f0ecdfdfe4ebeae1dbdbd5d4ccc3c9d4cfc0b5ca +dcd9cbc0bebed4d9dad1c4c2cedbdddbd6cdc8cddbe8e4e0dbd5d1d2d8dd +e3f0ebe7e2e0e6dbe2eaf2f5fbfffef7f7ead2cfbb99887b6358564d3f44 +4a3a25464b3d62584b5047585849525d4f6156575f485058665e5a5a4e58 +4a61605e645d696b6e78717060563f4a4d51534473564d68877b5d5e7176 +6a5784727c715b6c8080939384645b655378442e2f1d2714231722281f1f +1d1d221e1e191b4138211c1e211c211e2522283330221e2565fa474b4a53 +4f564f6663402400220f1e276abfc9b1c0ccc5c5baaebbc0bcb1bcb5b7be +c5c0babebab4bebeb6b0b5cababcc0aab2aec0ababb3a39fa7aba1a1a6a9 +b2a7a3aea99eaaafa29fa1a0a4a4a49c9aa99da19f95909495969d9e9a9b +a0968e8d8c8c90968b8c8d8c8987868589958b8e948b7f8e889890848880 +7986808591b0987976878889817e7f7e7a7d7a7d77727577767975716f70 +6f6e707173706f67766a6868627279706a6e6d656368596c675c5f5a5f60 +5f5e5f62615f565ab56748593e7171524e574f4d524b504d4d4f4940424b +4342424747413f403e39383d434442413a4935363a353b2a2d27282e3a37 +322c212524252b2d26242322202221201d1d1c1d1a16141817161b161215 +1413151d1a13151610101212160e1d070c1611120d0d0d0c0b0b0c0d0f0f +10110f0a090b0d1013110b08090c0b0705070807080b070c0b080e1f2e34 +1e1a1c21211e1d211e1e181515151c291506040809030625626568657178 +898b8968453a3f3546493f4a3f496c50191b1e201f1e1d1d191b1c1d2828 +2420261d1e1e151823271d282d271c2a22242b2729282731312023292521 +282b2a302e31241a2532312a2b2e24263d77a4bcc4d3dacfbebac4d0bdbe +c9d2cab9bac5cdd5d0bfbdcad1cdc0c0c3c8c7bcb6b6aeada59ca2ada899 +8ea3b5b2a4999797afb4b5ac9f9da9b6b8b6b1a8a3a8b6c3bebab5afaaab +b1b9bfccc7c3bebcc2b7c0cad2d8dfe6e7e2e4d7c2beab88786b5346463b +2f323a2815343b2b52463b3e36474839424d3f5146474d373f47554d4645 +3a44334a49464a414e4d505a53504137202b303436275639324d6c604243 +565b4f3c66545e533d4e6262737264433c493c653825231016000c000c15 +11131010130c0b060a332c19171c1f1a1f1c221f27323021191c55e32928 +2229232a223c412512001c08111148918e6d737c77766b5f6d726e636e66 +686f76706a706f6c75756f6970857375776167637561636d5e5a62665c5c +61646d625e696459656a5d5a5c5b5f5f5f575564585c5a514d5253545b5c +58595e544c4b4a4a4e544a4b4c4b4846454549554b4e544b3f4e495a5547 +4d453e4b464a58775f403d4d514f4a44484443434346403b3e403f444441 +3f403f4143444643423a4b3f3d3f3a4c534a454948404045374a453a3f38 +3e3c3b3a3c3f3e3c3337934526371c4f52332f38302e352e343131332f26 +28312928282d2f292728262120252b2c2a2922311e1e221d231217111319 +25221d170e1011101918140f110d0e0d100c0c090b0a0a03040507030b03 +02020400050c090207060200040208001000000704030000000000000000 +000001020000000000020503000000000000000000000000000000000009 +171c0503050b0905060a0506020005070f1c070000000000041c524f504b +575d6f706f4f2f242c2235352c352a34573b303235383a3a3938424d4445 +3e413b494940454b4443464143484f524b53494c4f555c554c575d4f4e58 +56555e5c555758626350524f41595b524d67525c85cfe5ecfffffff1edf5 +fff4e8f1fffff9ebeef6fffff9f0f2f9fdf5eeeef2f2ede7e9eae1d0cad5 +dfe2deccc7d9ebe9dbd1cdd5e0e6e6e0d9d4dee7efefe8dfdad9e8ebeff2 +ede7e3e1dbe9ebf3f1f0faece6e3e4e9ecf0f9ffffffffffffffffffffff +f5f2e1dac2b29f8d7f777166594c604257515356545f5f63606852655f68 +5c64616a5b776f606570766c646f7a7268687d7c76818a909da9a480808b +8692838890848f9b7b79756d675a6872637d6e74668537312731272e6080 +81af4d272b2a2e48667b84770d6f322c382c1b28242128343327263177ff +6a6c666e615f6175665f321d1c1c150b7492758d88878a948f918b859592 +948989818f857e7c7f72787b7a777a8d7f7577806a8098847a707b7e776f +6d72706c7775737b79776a746c6b6f6f716c7372656e6c6c66686b6b6269 +6e64666d66696a696765615c64686a66605e626765635c646260536a6365 +6b6a615d60606a645f6e5a525a5e5a5b5a5559575a5e5255524d5657534c +5d59525155524e51534b4a4d454749474646474444464848444c47474d3a +4e44414647434245443f4c365548433e4e444b433d3d4246443d3d3e454c +473e404a474449413a3d3b3b3d3f403e3a3a4550516b383842435e393935 +423e42383c34343c352c31332f33323a3b363636363a3435322d2c2e2f2d +3732323737302a2a28262b352f262b2a2a28272f302a232b292a2a292827 +28292522242928211d1e181b1d1c1a19191b1d1816181a1b1e252211111b +0e0c52aa26262b32332e2d312c2d2315120a000003080e09080e0f205660 +5e5d635d657060725c636e596e5860696d6d6e6d2224272a2c2c2b2a343f +363730332d3b3930353b3433363133383f423b43393c3c42494239444a3c +3b4543424b49424447515340423f30484a403750374067b1cad3e8f8f2e3 +e0ecfceadbe3f1f3e6d8dee8f1f2eae1e3eaeee6dfe0e4e4dfd9dadbd2c1 +bbc6d0d3cfbdb8cadcdaccc2bfc7d2d8d8d2cbc6d0d9e1e1dad1cccbdcdf +e3e6e4dedad8d2e0e3ebe9e8f2e4e0dddee3e5e9f1fcfcfefefcfdfefafe +fefdecebd8d3b9ab96867670685f504357394b45474a4651515550584053 +4d584c57545d4c68604f5560645b535e665e55556969626e757d88968f6d +6b78717f6f747c707b87676561595347555f506c5f695e7e342d242b2124 +547575a445202524253d596e796e076c312d372b1a2724232a3631231d23 +64fb51524d554a49495a49451b0b111c202399bea9c7c6c2bec4bec1b9b3 +c3c0c2b7b8b1c1b8b2b2b7aeb4b8b7b4b7cabcb2b3bca3bad0bcb3a9b2b5 +aea6a4a9a7a3aba9a7afadaca0aaa2a1a5a5a7a2a9a89ba4a2a29c9c9e9b +92999e94969d9497989795938f8a8f9395918b898c918f8d868e8a887b92 +88888e8d848083838a847f8e7a72787e7a7e7a78797a7a817278716f7579 +726e7e7c757478757174756d6c6f67696b69686a686565676969636b6666 +6c596d615e63625e5d605f5a65506e625c58675b625a5353585c5a535153 +59605b52545e5a575c544d504e4e505253514d4d58635f7946485253704b +4b47514e50464a42434b423a3e413c413f484742424242463b3d39353336 +36353e3a393f3e3831312f2d2f39332a2f2e2e2c2932322d252e2c2d2d2c +2b2a2b2c2825272c2b2420211c1f21201c1c1b1e1f1b17191b1c1f23200f +121e111051a81e1a1b20211c1d211c211d1719170c060f10100704050413 +47524e4d524c515b48584248533e543f454e5252535215171a1d1f1f1e1d +2732292a2326202e2a21262c25242722242930332c342a2d2d333a332a35 +3b2d2c3634333c3a3335353f43313532263e4034293e22284d95adb5c9d7 +d1c0bdc5d8c6b8c0d0d2c8b8bdc5d0d1cbc2c4cbcfc7bebdc1bfbab4b3b4 +ab9a949fa9aca89691a3b5b3a59b9aa2adb3b3ada6a1abb4bcbcb5aca7a6 +b6b9bdc0bdb7b3b1abb9bcc4c4c1cdbfbcbbbec3c8cddae7e9ebedebeced +e9ededebdbd9c7c1a8998574655e574d3f32482a3d37393c394444484149 +32453f493d46434c39554d3b3e474c4139444d4335344848414e565d6976 +704f4e5a5461545b6357606c4c4a463e38293741324e424d476c2521151b +0b0b3a595b8e32101716142b465b675d00632c2835291825222029353222 +181a55e4332f252c201a192d272c0b010b1410097089677b7370737a7677 +716a7b777a6e7067786d686770686e72726f7485776c6d745c7087736e65 +6f726b63616664606967656d6b68555e565559595b565d5c4f5856565051 +5351484f544a4c534b4e4f4e4c4a4641474b4d494341444947453e464341 +344b43444a49403c414149433e4d39313a3f3b3e3b383a3a3b4133383532 +393c363247443f3e423f3b3e423a393c34363837363a393636383c3a373f +3a3a422d4335323537313233342d3b234435322b3d3138302c2c3135332c +2c2c343b362d313b3a393e362f3232323436373531313c47455f2d2d3839 +5631312d3a34392f332b2e342e232a2a282a2b31332c2e2c2e3029282720 +212124202c25272a2c231f1f1d1b20282419201d1f1b1b21241c171d1b1a +1c191a171a19171216191a110f100b0e120f0e0b0d0d110a09090d0c1116 +1302020b00003c8f0702040a0904060a0309070209060000010303000000 +020b34383533383236402e3f2b33402b432b30393d3d3e3d3e383c444340 +3f3d46444b5d4744444c4d434045443f424c585a555d6543434751575352 +4446444945404143454c50494b48414c474a42434042445e5f524d69bde1 +f5f5fffffeeaeef7fff5ebf8ffffebe7f0fffff5eff4f4fefdeee9f2f3ea +e0dde2e8dfcdc9d2dfe2dccfcfdde7e7e5dacfd1dee9ebe8d2d3d7e2eef2 +ede6e0dddde4eff5f1ede4e3e2e3e8eef4f8f5f4f1eeeceae8e8f1f3f6f9 +fcfefffffffffffffffffffffffffffffffffefbebdfcfc2b5a48f7f6664 +686a67605a5a4c686a61587170698b8178777e8485827881827576808984 +7f766677798a7871728c8175727a6e717b76657079878f605c7a758c5c2c +372d33a67ee9f0fab1573c2d5f7bd3ffffeb1a492c2e9013282422231e26 +242b2d367dff7a69626a636c6d785e5c351a1e1d11369d87888b88878d8e +8f91918e8d8e8a8c8b89868680787e7f7f7a79797874707677737476987e +757675777f7d74716d696e736e75766c726e6c68656c726e6a716f646269 +675e666b676c6b6569676869686663616161666b6c6d6d66636b6565636e +5f5b57646668655e595a5d606c5d5d5a5b635e575a5958585d575559564f +52555656554b5053554b5852534d4b414a4a4449494644484a474748453e +48494344403a454b45444647474643404444493d414b40453e41433e3b3b +3c3a3b3d4144413a383a373b383c3c383b3638373738383534354a494137 +3230302d2f32353738353331302e2f32312d2d302c2d2f2f2f2f31333035 +35302e30312e2f2e2d2c2a2a2d312d3133322d2a2a2c2e2d2b2b2e2f2b25 +292a2e32322d292828272728272524242120222427252526232324252628 +2a2b2a261c22241c27c8d81c24332c31352d322c22160a04070d090a1614 +100e0c182a2c2e3532424b5b4e605467615d54765f555e5c6e55302a2e36 +3532312f38363d4f3936363e3d333035342f323c484a454d553333373e44 +403f31333136322d2e3032393d363a37313c393c34352f30314945362e4b +9dc3dadce9f7f0dde4edf6ebdeebf8f0dcd9e1f2f4e6e0e5e5efeee0dbe4 +e5dcd1ced3d9d0bebac3d0d3cdc0c0ced8d8d7ccc1c3d0dbdddac4c5c9d4 +e0e4dfd8d4d1d1d8e3e9e8e4dbdad9dadfe5ecf0efeeebe8e5e3e2e2eaec +eff2f5f7f8f9fcfcfdfdfefefffffbfcfdfdfcf9f7f5e5d9c9bcad9c8777 +5c5a5b5d5a534d4e405c5e554a6463597b7267666d73737067716f65636f +76736c6553666579645d5e786d615e665a5d65604f5a63727a4c4b6c6a84 +5526302529986fdae1eca54a3021526cc2f4f5de1142292d8c0f24202323 +2028222724286af95f4c48514c56586246421e06131d1e4fc3b4bcc4c4c1 +bfbcbdbfbdbab9bab6b8b9b7b6b7b2acb6bab9b6b5b7b5b1acb2b1aeacae +cfb5adaeabadb5b3aaa7a39fa1a6a1a8a9a0a7a3a19d9aa1a7a39fa6a499 +979e9c92989a969b9a94989695969593908e8e8e91969798968f8c948e8e +8a9586827e8b8d8c89827d7e81848e7f7f7c7d857d797c7d7a7c7f7b767c +777273787779766e75787a707d77787270666f6f696e6e6b696f6f6c6c6d +6a636a6b6566625c676b656564656564615e606065595d675c615a5f605b +5858585656595c5f5b545153505451555551534e504f4f50504d4c4d5d5c +554c4647474446494c4e4c49454344424346433f3f423e3f3e3f3e3f4043 +3c41413c3a3c3d3a3b3a39383636393d363a3c3b36333335353532333537 +322d3132363a3a353130302f2f302f2d2c2c2928292c2b2a292b27282728 +292b2d2e2b27202a2c242bc8d21215231a1f231b201e1a151111151b1512 +18110905010b1b1c1d211d2d33433446394e4844395b443a4341533a231d +2129282524222b2930422c2929312e2421262520232d393b363e46242428 +2f35313022242227231e1f21232a2e272825212d2c312b2c272623383421 +193386a9bfbecad6cdbac0c9d2c7bcc9d8cfbbb6c0d1d5c7c1c6c6d0cdbd +b8bfc0b7aaa7acb2a997939ca9aca69999a7b1b1b2a79c9eabb6b8b59fa0 +a4afbbbfbab3aeababb2bdc3c1bdb2b1b0b1b8bcc5c9cbcac9c8c8c7cacc +d7d9dde0e3e5e6e7ececededeeeeefefebecededece9e7e5d7cbbbaea291 +7c6c52505254514a4442345050473d5453496b5f5552595f5f584b504f44 +435158554e47354a4a5d494446605549464e41444d4837424b575f312f51 +547145182012107b50bbc4d28f3922134159aee0e0cd023822298b0e231f +1e211f2723261f1f5be3442c23282227233120270e000d130a2f94797473 +6e6d7a7c7f7f807b7c7b79797b777876736c777a7c78777879757074746e +6d6d8e7470716f7179776e6b6763666b666d6e62635b595552595f5b575e +5c514f56544a51545055544e52505051504e4b4949494c515253524b4850 +4a4a4752433f3b484c4c49423f404346514243404149423d40403e3f433e +3d423e383c4040413f363f42463c4943443e3d333c3c363b3b3833383936 +3637362d37383233302935393330323133302f2a2f2d34262c342b30292d +302b2828282629292f322e272729292d2a2e2e2a2f2a2c2b2b2c2e2b2a2b +3f3e392d2a2a2a27292c3031312e2b292b272a2b2b252728262527252725 +292926292b242424272225222320201e232721252926231e20202320201e +232220181c1b2123251e1c191b181a191a161717141317171a1618171614 +161518181c1d1d190f15170c14aeba00000c02070d05080405010100080e +07050d080300000306020306021219291d2f2438343026482f252e2c3e25 +433f454b474241403b3d3f45374243404a41393b4347423a41443f434e36 +3a3d41443e41393f3d423f434a484042494a47473d403a443e3f3a48474b +424842484f88c1dff2fffffff8e6eefffde7e8fbfffeece2f5fffff1f1f3 +f6f7f2ebe8e9e6dfd8d8e2e8ddced0d7e2e6d9cbcddae3e7e6dcd1d0dbe7 +f2ebdfd6d5ddeaf4eceae6e2e1e5ebf1f3f1eeeae8e7e6e6f0f3f7fbfdfd +faf9eeeff0f1f2f2f1f1f2f3f4f6f9fbfcfdfdfefffffffffffffffeffff +fffffffffffffef6e9d9cdc9abaca2a08f8a7e7e8e867f7e848684807b86 +89807c7f7c7473776a77758c7f797274637c79755c6f8073749181606b69 +6284689258323029339c52a29aa2e06d2345bf97c5724d5a272a19348822 +2b2227241f24262a2c338cff6360656a61617795705739171e1a14359b88 +8c928e8d8b8a8a8d8d8b8a8b8784807d82858178797a7a78787978757478 +797a7a7d9e8c71716d6e767874757971726f706f746e706d6e6b696d716b +6e6e6c67686a69656669656b6a6469676969686663615f60616364676a63 +5d60656560675c5c575e5c6266656260605e5f565b59585f5d5c5a5e5f5e +5d565359545356564f4e514d4d4747575b514e5f5f4d4945454944434748 +48464645433f434540423e384347414143454543413d3f41433f42443e42 +3b3d3e3c3c3f3f3e3a3a3b3d3d39383a3439363a39353935393635373735 +34353536342e2e30322f2d2f313234333232312f2f302e2c2d302c2c2c2c +2c2c2e302f3333302d2d2c2b2d2c2c2d2d2c2a292e2e2d2c2b292a2b292a +29282c2c2c282a2b2e31302b2726292a2928282828282321222425222324 +252423222422242524251d23252d1f67b4222c3432322d2b302d251a1008 +0a0e0e16241d0f07091b3830313b495455585a70595c6160655f65555f58 +565c3531373d393433322d2f3137293435323a31292b3337322a31342f33 +3e262a2d2f312b2e262c2a2f2c3037352d2f363736362d302c3631312937 +35352b2d25292e68a3c3d8eaf1f3ebdce4fbf5dfdff1f6f0ddd3e6fefae2 +e2e4e7e9e4dddadbd7d0c9c9d3d9cebfc1c8d3d7cabcbecbd5d9d8cec3c2 +cdd9e4ddd1c8c7cfdce6e0dedad6d5d9e2e8eae8e5e1dfdedfdeebedf1f5 +f6f6f4f3e8e8e9eaebebeaeaecedeef0f3f5f6f7f7f8fafcfdfcfcfcfcfc +fbfefffffefefefdf5ede0d0c4c0a2a29896827e7272827a727174767471 +6b7679706c6f6c6463675a67647b6e686062516a67634a5d6b5e5f7c6c4c +565552765c874f29271e258d3f8f8791d05e1335ae84b05d3b4b1b221431 +841e251e262521242426232579f848434b514a4c63845a3f1f03111a224f +c1b6c0c9c6c4bebcbcbdbdbbbabbb7b4b0afb4b9b5afb1b5b6b4b4b7b6b3 +b0b4b4b2b2b4d5c3a7a7a3a4acaeaaabaca5a5a3a3a3a6a2a3a2a1a09ca2 +a4a0a1a39f9c9b9f9c98949793999892979596969593908e8c8a8b8d8c8f +928b85888d8c878e83837e8583898c8b8886838282797e7c79807e7f7d81 +82818079767c7776797871707372746e6e7e8177748585736f6b6b6f6a69 +6e6f6f6d6d6c6864686a6567635d65696262646666645f5b5d5f615d6062 +5a605b5f5e5c5c5f5f5b5757585a585453554f5451555450545054515051 +514f4e4f4d4e4c48484a4b4a46484a4b4b4a494948464647454041444040 +403f3f3f41433f41413e3b3b3a393b3a3a3b3b3a38373c3c3b3a37373637 +35363534353835323435383b3a35313033343332323232322d2b2c2e2f2c +2b2c2d2c2b2a292a292a2728242c2f37256ab31b202422201b191e1f1d19 +1413161a181c261a0800000e29211d26313a3b3e4058404348474a444a3a +443d3b4128242a302c2726252022242a1c2728252b221a1c2428231b2225 +20242f171b1e21221c1f171d1b201d2128261e20272826241d211f2b2828 +212d29281b1c13151b538babbdcbd1d0c8b8c0d6d1bbbeced4cdbcb2c7df +dbc3c3c5c6c6c1b8b5b6b0a9a2a2acb2a7989aa1acb0a39597a4b0b4b3a9 +9e9da8b4bfb8aca3a2aab7c1bab8b4b0afb3bbc1c1bfbcb8b6b5b5b7c5c9 +cfd3d9dadadbd2d5d7d8d9d9d8d8dcdddee0e3e5e6e7e7e8eaecedececeb +f0efeff2f4f4f4f4f4f3ece4d7c7bbb799988e8c79726666746c62616566 +645e545d60575356554d4c50435050675a544c4e3d56534f364756494a67 +5734413d385c4675401a16080a6e1f6f6977b94b06289e739b4827380d17 +0e2c811d251b22201e2425251e1c6ae22d232629201d2e4e31231000090e +0b2a8e7675766f71797d7d7f7f7d7c7d797672707579756e707576747678 +777472747471717192806969676670706e6d71676a6568656b64615e5e5c +595e615c5e5f5c58585b59555356525857515654555554524f4d4b4a4b4d +4d50534c46494e4d484f44443f46444a4f4e4b494945483f444242474745 +45474a4948413e46414043453e3d403e3f3939494e44415252403e3a3a3e +3936373636343635322e323431332f2932362d2d2f31312f2b27292b2d29 +2c2e272c292c2c2a2b2e2e2b2727282a2b2726282429262a292529252b28 +272a2a28272a2b2c2a2525272b2926282a2b2e2d2c2c2b29292a28242528 +2424242323232527242727242121201f2120202121201e1e23232421211e +201f1f1e1f1c2020201a1c1c2022221c19171b1b1b191a191a1a15131416 +17141415161514131313131616171217171e0b4f9701080d090805030605 +080505050a0e0d101b11020000061404020b1721222529402a2d34333731 +35252f28262c342f32352e2a2e302d2c282b27353631333839363c46463f +4345403c45393f3e4b4b464f4e5a595d464e58584d4d545554584e4d4653 +504d4648484f4245464a523d72c2d7e5fdfcfffae8ebfcfff4ecf3fefff6 +ebecf9fffff5eef2f4efebebebeadfcecbd6dfe0d5d2cfd5e2eae3d6d5db +e3eaeae4dad3dde4edefeae1dad6eaeef1efe9e4e1e1e6e9edf1f2f1eeeb +e3e4e7ecf2f9fffffffffffffffdfbfaf5f3f2f2f1f0f0f0f3f4f5f6f7f8 +f8f8fbf9fbf9f8f8fbfdfffffffffffffffffffffefffffdf5fbe7ded2c3 +b4a5968c687378726c6a63585f6b64686279736f657668817f9173758078 +676f7a888f6b7e956cbe754a372cb9ff41a3c38fa61c18b7f9a2ff8f203d +2b2525284e232c222023231f211e263496ff515f6b686560636565642b17 +4e29122f94858d928e8f888585878785858683807d7a7c7e7c79787a7b7a +7a7a78767576777b7b7e9c9575777371757572747871746d7a6e74767270 +75747171736c6f6966676a696969676b666c6c666a686b6a696867656361 +6664616369665f5e686963655f625e60555d656766625e5958545e5b555a +5b5e575c5c59544e4f59555254534d4e52514d4f454f484c495a5b4c4541 +46463f484a4846474643424140454144433c44443f3f414142403e3c3d41 +3d40433d3e413b3a3b3a3c3f3f3f3936363839393839343a373a39343a37 +3935333435343335313232303031312e2e2e2d2d2f3031322d2c2c2d2d2d +2f332e2e2d2e2d2d3033302f30312f2b2a2b2d2c2b2c2e2e2b272e2b2827 +29292a29292a29272728292729292b2e2c27232226282723232728262321 +2223232122232625242222202121242b282818282132761220262e322c33 +2d2b241b0f0807080811201a0c07091a6c535c6e4b6a6b6a52626c575c62 +5a625b516267796b26212427201c20221f1e1a1d19272823232829262c36 +362f3335302c35292f2e3939343d3c48474b343c46463b3b424443473e3d +3845423f3537363c2c2e2c2f321c53a3bbcbe6e9f9ecdee3f3f9eee4e6f0 +f3e7dcddeaf4f2e6dfe4e6e1dddddcdbd0bfbcc7d0d1c6c3c0c6d3dbd4c7 +c7cdd5dcdcd6ccc5cfd6dfe1dcd3ccc8dde1e4e2dcd7d5d5dde0e4e8e9e8 +e5e3dedee1e6ebf2f9fcfefefcfbf9f6f4f3f0f0efefeeedededf0f1f2f3 +f4f5f5f5f9f9f9f7f6f6f7f9fefdfffffefefefefefcf5fdfaf3ebf1ddd4 +c5b7a8998a805a656a645e5c554a515d565a546b65615564566f6d7f6164 +6d65545c67757c5a6e865fb26c412c20a9fb2e90b07e950b06a3e38bef79 +0b2c1e1b1e234a1f271e1f24231f1f1a1d2683f936424f4f4e4b5456524d +11034127204abbb4c0c6c2c5c1bfbfbfbfbdbdbebbbab7b6b8bcbab7b4b6 +b7b6b6b8b6b4b1b2b1b5b3b4d2cbaaaca8a6aaaaa7a9aba5a7a1ada2a6a9 +a3a3a6a7a2a4a49fa09c979a9b9c9a9a959792989892969495949392918f +8d8b8e8c87898f8c85848e8d8789838682847b838b8d8c88847f7b77817e +787d7e817a82817e7973747e7a7779787273777673756b756e726f808172 +6b676c6c656e706f6d6e6c696766656a6568645d65656060616162605e5c +5d615a5d605a5b5e5c5e5c5b5d60605e5855535556565456515754575651 +57545652505051504f504b4c4c4a4a4d4c4c4949484848494a4b46454546 +4645474b4646454342424546403f40413f3b3a3b3d3c3b3c3e3e3b373e3b +38373739383737383735333635343636383b3934302f3335343030343533 +302e2f30302e2c2d302f2e2c2a2a29292930303225352b38760c16181e22 +1c231b1c1c18110e0f100e1420150400000f60444859314e4f503a4c5641 +46493f453e34454a5c4e1914171a130f131512110d100c1a1b16161b1c19 +1f2929222628231f281c221f2b2b262f2e3a393d262e38382d2d34343337 +2f2e2b3837342b2d2a2e1f201d1e230b3f8ea3b0c7c9d7c9bbbfd2d7ccc0 +c4cdd2c6bdbecbd5d3c7bec1c3bcb8b8b5b4a99895a0a9aa9f9c999facb4 +ada0a2a8b0b7b7b1a7a0aab1babcb7aea7a3babec1bfb9b4afafb6b9bdc1 +c2c1bebcb8babfc4ced6dfe5e8e8e9e8e6e3e1e0dddddcdcdbdadadaddde +dfe0e1e2e2e4ecededebeaeaeef0f5f4f6f6f6f6f6f6f6f3ecf4f1eae2e7 +d3cabcab9c8d7e744d585d5753514a3f46524b4f4b625c56485648615f71 +53545e56454d58646d48576f4ca25d321a0a8fda0d6f926481000098d67b +da6200180e0f161f471c241b1b1f211d2019181d74e31b222a27241c1b1f +282e020038180621847073746d71747575767674747572706d6c6e716f6c +6a6c6d6c6e6f6d6b696867696868867f6264625e64626161665d6259685a +6164626165656162635d5f5a56585a5a5959555853595953575556555453 +52504e4c504e4a4c524f484751504a4c464945473e465052514d4b44433f +49464245484944494b48433d3e4a464345453f404443404238423b3f3c4d +50413a363b3b343b3d3a38393936343332373538352e3636313132323331 +2f2d2e322c2f322c2d302d2e2d2c2e3133322c2927292a2a2b2a23272427 +282329262a2624272827262724272725252729282626252528292a2b2625 +25262625272b262625242323262823222324221e1d1e201f1e1f21211e1a +23201e1c1e1e1f1d1e1e1e1b1b1c1d1a1c1a1e1f1f18161319191a141618 +1b1916141516161413141716151312111111151c1b1a0b19101c5a000000 +070b050c0305090704020405040b180f010000094a272d3e183639392234 +3f2a2f332c332c2233384a3c413734342f30383c3c322e373a3b3b3e424a +493e373838344647463b43404640494840453e40383835373e4342454640 +424440443f45424242393b493b3d424a47423c5795c3dff5fbffffececf7 +f8f7f6f1f7fffdebe9f5fffef7f0eff1efeadfe4e7e1d6ced0d6e6e7ddcc +cad9e5e7e3dcd6dbe5ebe9e4d2d6dde6edeeeae5dddfe4ebf1f2efebe0e2 +e6ebeff3f5f6f5f0ece9e8eaeceff5f6f9fdfffffffffffffffffefdfdfc +f9f9f8f7f7f6f6f6f3f2f6f6f6f8fdfff8f8f8f9fbfafbfbfefefdffffff +fffffffffffffffffffffffffffbf0e8e0d6c3c7b8ad97998c8780867a7f +60575d88656f7a867e7582807f8161bc4f263e4c56c482d9f9e2492e28ff +ff97ff9928392b2d311d212526242628262128252c3a8dff4d646a626c67 +61636269421b4e390f2a91858b8d8d9088828282838080817b7f83807c77 +76777a7c7c7a7a7876747573747a78788e8f797d7c7a7c77737575727971 +86707479757377777270716b6f6966666a6a6a696c6d696e6f686c696867 +68676a6768666c696260686763636567655f5e646460575c60605f5e5c59 +5c59635e5658575b535856514f4d515c574f4d505155554e50544d514b4a +434b4846474547413a4d4c46444746424245404643474640454342403f3e +3d3e3f4042493d40443d423b3d3b3a3738393a3c3b373637393b3b38353b +383b39343a393a35323334343333373736343232302f2f2d2d2c2d2e2e2e +2b2b2c2d2c2c2e302f2f2e2c2d2d30332e2c2e33322d2c2f2d2c2a28282a +2b2a28262726272727262a2c2b26232324242928292b2a25222225282620 +2026282523212123232121232424232323232323272a272c181d293a7623 +26282b2f2d322d2d261a0b05020204040f0e0b0d0911557e6078715e6a6b +5d5864866861958b39a6793b50623329262621222a2e2e2420292c2d2d30 +323a392e272828243637362b3330363037362e332c2e262623252c313033 +342e303430342f37323232292937272a2c322b251f3c79a9c5dee6fcf4df +e3f1f2efe9e3e8f4eedcdae6f1efe8e2e1e3e1dcd0d5d8d2c7bfc1c7d7d8 +cebdbbcad6d8d5cec8cdd7dddbd6c4c8cfd8dfe0dcd7d0d2d7dee4e5e2df +d6d9dce2e5eaebecedeae6e3e1e3e5e8eff0f2f6f9fbfcfefffefefdfbfa +faf9f6f6f5f4f4f3f3f3f1f3f4f4f4f6fbfef6f6f6f7f7f6f7f7f7f7f6fa +fdfefdfefefefdfdfdfbf9f6fcfcfcf0e5ddd5cbb8bcada28c8e817c7379 +6d73534b4f7a576169786d657170707455b2451c324046b36fc6e5d0381c +16faed80f78313281e252d1a1e242220252926212621232c7afa32474e49 +535255565154280441381e47b8b4bec1bec3c2c0c0c0c0bdbdbeb8bdc1c0 +bcbab9bab9b9b9b8b7b6b4b2b1b0aeb4b1aec3c5afb3b2b0b2ada7a9a9a6 +ada5b8a2a6aba6a6a8aaa3a3a29ea09c97999b9d9b9a9a9b959c9b969895 +9493929394939290949188888e8f89898b8d8985828888867d8286868584 +827f7f7c8681797b7a7e797e7c77747276817c747275767a7a73777b7478 +72716a726e6c6d6b6d676073726c6a6d6c686669646a676b676166646361 +5e5d5c5d5e5f6168595d605a5e5a5e5f5e5b595a5b5b5a56525355575554 +525955585651575657524f4f50504f4f5151504e4e4e4e4d4d4b48474748 +4848454546474646464847474644424245463f3d3f44433e3d403e3d3b39 +393b3c3b3b393736373737363a3c3934313132323635363837322f2f3235 +332d2d333532302e2e30302e2e302e2e2d2d2d2d2d2d2c323139272c3643 +791f1f1c1c1f1d221b1d1b140b06050505040a06030300084a6f4c605742 +4e514544507252487a6e1c895c1e3345261c191914151d212117131c1f20 +2023252d2c211a1b1b17292a291e262329232b2820251e20181815171e23 +2225262022252125202a2525251c1d2b1c1c1f261f1711296490aabfc7da +d3bdc2cfd0cbc7c0c7d3cfbdbbc7d2d0c7bfbebebcb7a9aeb1aba0989aa0 +b0b1a79694a3afb1b0a9a3a8b2b8b6b19fa3aab3babbb7b2adafb4bbc1c2 +bfb9b2b2b8bbc1c3c7c8c9c6c4c1c4c6cbced7dadfe3e6e8e9eaebebebea +e8e7e7e6e3e3e2e1e1e0e0e2e2e5e7e7e7e9eff2eaeaeaebeeedeeeeefef +eef2f6f6f4f4f4f4f4f4f4f2f0edf6f6f6eae1d9d1c7b4b8a99e8a8c7f78 +6b7064674a3f466f4c545f6b635867615d6145a63b10222a2c954fa6cab8 +260e0cf1e070e36c00140e18241319201f1d2023241f27201e236be41727 +29212b231b1f263719003826001b7f6e716f6d7475737373737070716b70 +74726e6b6a6b6a6b6c6b6a6b696767636267646075776368676567625d5f +5f5c635b6f595d64646467686261615c5f5a56575a5b5a595a5b565c5c56 +5956555453545554535156534b4a51514c4c4e504c48454b4b4940454949 +4a49474445424e49414342464045433e3e3c404b48403e41434747404246 +3f433d3c353d3b393a383a342d40413b393c3b37383b363c393d3c343b37 +3834343132313433373c3031372e352e3331322d2e2f3031302c2a2a2d2f +2e2b242725282621292829262326272726262a2a29272828282727252524 +24252525222223242323242625252422212124261f1d1f24231e1d201e1d +1b19191b1c1b1f1d1c1b1c1c1c1b1f211f1a171718181a191a1c1b161313 +161917111117191614121214141212141313121212121214161b191f0a0d +18245c0403020508060b0506090400000000000004030002010134523146 +3e2a383a2d2b385a3b32675c0a774a0c21333f322d2f2e31373939333338 +403b393a403c3a3c4042444642434a3d43484d44494944493c382e2f3937 +3c40404442393d3c394540413f47484745483a474a47373c3d3b4974afd8 +eefbffffffece7f8fff9f0f4fffffaeaedf8fffaf1ece9e7e9dfd8dce4e3 +d8ced2d8e3e9ddcccddae3e5e4dcd5d7e3eff2e8dcd6d9e3ecf2efe9e2e0 +e3eaf0f3f6f2eae5e4e6eaecf8fafdfefefaf4f1eeefeff0f1f1f1f0f6f5 +f7f9fcfffffffffffffffffffffffffffffffcfaf8f7f6f7f7f7f8fafcfc +fefffffbfefffff8fdfeffffffffffffffffffffffffffffffffffffffff +fffffffff6f3ebcfb7aeac8a768385726c706d5e5bbc4e38604e243b7af7 +ffd7193b29bace82bc49353d2b29241e253b222725271d1d2a2d2c3784ff +4b6667616c65675d5f6337113c210f2c95878a8b8b9287828182817e7d7e +7a7a7c7b797473737a7a7a79797674747a7776807a758086787b7a797b78 +767a79777e73856d7076757174736d696b676f6f6c67696d6d676d6e6a6d +6f666b67656567676867666565676361676561605d616259595d61605a5c +5c5a5a5c5d5c5d575f5c56595757535856525454545a534d4d515153524b +524851616a4d434d4b4b4d4a4c443b4b4b46434647444448404646494741 +45414141403f3f3f3f40444f4243484242363d3e3d3a3735383e3e3c3b3b +3c3d3c38363b37393733393739353233343333343634313130313335312f +2d2c2e2e2e2d2d2f302f2c2b2b2b2e2d2c2b2b2b2d2f2e2b2c32322d2b2e +2c2f2f29252527282526272725242424292b292420212224272526282824 +2323282a272120252725211f1f2123212224202023232324242424261e2e +2d242837852e272f2a2c2f2c3030291a0d0805040a070c090b0f06083b4c +5f4044405665665d526d7c8094ffaf73ffb2a36e31241f212023292b2b25 +252a322d2b2c2f2b292b2f3133353132392c32373c34393934392c281e1f +29272c30303432292d2c293530312d35363535382a363935232627243059 +95bed5e4eef6f4e2def0f4ebe1e5f1f6ebdbdee9f0ece3dedbd9dad0c9cd +d5d4c9bfc3c9d4dacebdbecbd5d7d6cec7c9d5e1e4dacec8cbd5dee4e1da +d3d1d6dde3e6e9e5e0dbdadce0e2f0f2f4f5f5f1edeae6e7e9eaebebebeb +f1f3f5f7fafdfffffffffffefdfdfefdfffffffcf9f7f4f3f2f3f5f5f6f8 +fafafafdfef7f7fbfaf4f9fafcfefffffffefbfefefcfdfefdfdfdfdfbfd +f9fbf9fdfdf9efece4c8aea5a3816b7a7a686163615251b3452f5643152b +69e6f9c80c2d16a6b86ca533232e2323221f263c212626281d1d29282129 +71fa30494a4853505a524c4b1b002f22204cc1bac0c0bec6c3c2c1c2bfbc +bbbcb8babcbdbbb8b7b7bab8b7b8b6b5b3b3b7b4b2b9b2adb5bbadb3b2b1 +b3b0abafaeacb3a8b8a0a3a9a8a6a7a8a09e9e9ca2a49f9c9ca2a09a9fa0 +999f9e989a9694949496959693928f918c8b908f8a89868a898280848887 +8185858383858685847e86837d807e7e7a7f7d797a7a7a80797373777678 +7770796f788891746a7472727471736b6272716c696c6b68686c646a676a +67626562616260605f605f61636e6162676161555d5f5d5b5654575a5a58 +55555657545251575254524e545254504d4d4e4d4d4e4f4d4b4b4c4d4f51 +4d4b4948484846454547484744434040434241403e3e40423f3c3d43433e +3c3f3d40403a3636383938393a3a38373737393b39343031323234323335 +353130303537342e2d323432302e2e30302e2f312d2d2d2d2d2e2e2e292e +283b3c3336418a2d20231b1d201c1e1f1c13090504030602040103060001 +333e4e2a2a243a4a5049405b686779e69256e99586512619141615181e20 +201a1a1f2722202125211f212527292b27282f22282d32272c2c272c1f1b +11121c1a1f232327251c201d1a2621221f272827282b1d2c2f2b18191a14 +1c447ca3b7c5cfd5d2bfbdccd2c8c0c4d2d7ccbcbfcacfc9c0b9b6b4b3a9 +a2a6aeada2989ca2adb3a79697a4b0b2b1a9a2a4b0bcbfb5a9a3a6b0b9bf +beb9b2b0b4bbc1c3c7c2bdb7b7b8bdbfccced3d4d8d4d3d0cfd0d3d4d5d5 +d5d5dddee0e2e5e8eaebecebeae9e8e8e9eaeff1f0edeae8e8e7e6e7e8e8 +eaeceeeeeff2f3ecedf0f2ebf0f1f3f5f6f6f6f8f7fbfbf9fafbfdfdfdfd +fbfdfbfdfbfdfaf3e9e4dec0a99e9c786571745f5b5a534447aa3e264a31 +00114dcae0b300220f9fad5e931e0d191013161720361d2220221b1b2725 +1d2062e4152928202b23231c24310f002610001d84757472717b79787778 +767372736f707273716d6c6c706f7171706f6d6d726e6c7269646d73676c +6b6a6c69656968666d62735b5e64636062625b5859565d5e5a56575c5b55 +5a5b555a5a535652505051525252504f4d4f4a494e4d4847444848403f43 +47464043434141434443453f47443e413f3f3b403e3a3d3d3f45403a3a3e +4042413a40363f4f583b313b3b3b3d3a3c342b3d403d3a3d3d3a3c40383e +3c3f3e373c3738373735363536363a4438383e37382b343434302d2b2e32 +3230302e3132302b26272527252129272927242627262627282624242425 +292b27252322252524232325262522211f1f2221201f1e1e20221f1c1d23 +231e1c1f1d20201a161618191c1d1e1e1c1b1b1b1e201e19151617181a18 +191b1b1716161b1d1a1413181a1813111113141213151111121212131313 +12160f1f1d12151f6a0f040904060b05080b0b0300000000030001000107 +02001c213412130e253539312843505164d18044d783743f3d3230363737 +3834343c3e3744454239433c393c383236414142504143494c423f42414a +41413c423e3f444139393c363a3533423d3c3d4b46433d45393e3e413b4f +413f523e4992d1e3f6fffffffaeff0fdfff7f0f6fdfff7f0f0f6f8f1ebeb +eeebe0d3d3dee2ddcfccd0dfeae7dcd4d2d8e1e7e7e2dbd7e7ebedebe5de +dbdaeef0f0ece5e1e1e3f0f1f0f1f0edeae8e4e8eff6fdfffffffffffffe +faf6f3f1f1eff0f0f1f1f2f2f7f7f7f8f9fbfcfdfdfdfdffffffffffffff +fffffdfdfcfafbf9fdfafef8fcfbfdfdfdfbfafafbfcfffffffdfefcfefb +fffbfbfffffffffff7fffff5fafffffffffffffffff7e2cfbe9c90be3b3b +663a382e242e38382f2b2e25332e512d3225272d1c1f213f2626192d2525 +2223234091ff486669696a616d59686a31295a310d2f9a8789898b908783 +8484837f7e7e81797375797a77757c7a7978787777797c7b78807b78767e +7a7b7570737170757370766f77696f74766f73706a666a686d6f6f66686a +6b656b6b656a6b64666162646665636160625c63646569665d5a5b5d6057 +595961605b5d5e5d5e60605e5a525959585e5a59545858565a5753515052 +5a594f4b4f4e4f485054634e4b4d544b49464d4f464a4a46444547464648 +404745474541443f3f4144454442403f414c494a4d46403a3e3d3c3c3836 +3b3f3d40413f3e3d3b393d3e393a3b363c38393535353532343636333130 +302e30332f2d2c2d3031302e2a2d2f2e2d2e302f2d2d2d2c2c2c2e2f302e +2d2f2f2c29282e3538322b29282626282a2a282625252527272322232526 +26252527272524262827242221222324211f1f2123222325202123232322 +2222242b252a3129252e79291828282d322c2e3028190e0b0b0a0a0a110b +090b050959909f90aeb8565a594f49623d7494479b629ba379622f242228 +29292a26262e30293637342b322b282b2721253030313f3032383b312f32 +313a31312c322e2f343129292c282c2723322c2b2c3a35322d352b313134 +2e41312e3b252d74b3c8ddecf9f8ede5e1eff2e8e1e7eef0e8e1e1e8eae3 +dddddfdcd1c4c4cfd3cec0bdc1d0dbd8cdc5c4cad3d9d9d4cdc9d9dddfdd +d7d0cdccdfe1e1ddd8d4d4d6e3e4e6e7e6e3e0dedce0e6edf4f8fbfcfcfb +faf8f4f0edebecedeeeeefeff0f0f5f5f5f6f7f9fafbf8f8f8fbfeffffff +fffffffdfbfbfaf8f7f5f9f6faf4f8f8fafafafbfafafbfcfefefcfcfafb +fafafefaf7fffefdfdfff6fffff4f9fefefefffefefbfaf2ddc8b49287b7 +33345d312b20141e292b221e1d121f183c1b2219202c1e22244428281a2e +25251e1e18327bfa2d494c4f514c604e545215124c322150c8bfc1c1bfc5 +c3c2c1c1c0bcbababeb6b0b4bbbcbbb7bbb9b8b9b9b8b8babab8b5bbb4b1 +adb5b1b4aea9aaa8a7acaaa7ada4ab9ea3a9aba7a8a89f9e9fa0a2a7a49e +9da2a09a9e9e989d9e97999494969897959392918990919296938a878587 +8a8183838a898486878687898987817980807f8581807b807f7e807f7979 +7679808074727475766f777b8a7572747b72706d74766d71706c6a6b6b6a +6a6c646b6668666265606062656665636160626b68696c655f595f5e5d5b +5755575b595a5b58575654525659525554515553524f4d4f4d4c4c4e4e4c +4a4a4a4a4c4f4b4948494a4b48464245474645464544424242413f3f4142 +413f3e40403d3a393f4649433c3a3936393b3d3d3b393838353737333233 +353633323234343231333534312f2e2f3031302e2e30302f30322d2e2d2d +2d2c2c2c2a342f39423a35397e2a131e1c1e231d1e1f1b0f070606050202 +07010005000453858f7a949c3a3f433d3952295b792b7e457e865c452419 +171d1e1e1f1b1b23251e2b2c292028211e211d171b2626273526282e3127 +2225242d24241f25212227241c1c1f1b1f1a16231c1b1c2825221e282028 +282b2536241e2b11175c99abbfcdd8d7cdc2c0ccd1c7c2c8cfd1c9c2c0c5 +c7beb8b8b8b5aa9d9da8aca799969aa9b4b1a69e9fa5aeb4b4afa8a4b4b8 +bab8b2aba8a7bec0c0bcb6b2b2b4c1c2c3c4c3c0bdbbb8bcc5ced7dbe1e2 +e5e4e4e2ded8d5d3d6d8d9d9dadadbdbe0e0e0e1e2e4e5e6e5e5e5e8ebed +efeeefeff1eeececebebebe9eeebefe9edeff1f1f1f1f2f2f3f4fafaf9f8 +f7f7f9f8fdf8f6fdfffefefdf2fbfbf0f5fbfbfbfafafaf7f6eed9c2aa88 +80b1302e542218060005141b1916160b140a29050b030d1a11171d3d2323 +142823231d1b14296de412292a2a291f29182f38090a432000218a787876 +777f7d7b7b7b7a76747478706a6d7374726f757372757574767679757277 +6f6c69716d6f6a646764646867636a60695a616565606261595759595c60 +5e57575b5a54595953585952544f4f515352504e4d4d464d4e4f53504744 +4345483f414148474244454445474745423a4141404642413c41403f4341 +3e3d3d4047473e3b3e3e3d363e42513c393b443b39363d3f363c3f3d3b3c +3d3c3c3e383f3b3d3b373a3535373a3b3a38363537413e3f423b352f3433 +32312d2b2e3231333431302f2d2a2c2e282a2c282d2a2b28292a2b292a2c +2a2523232322262925232223272826242023252423242423212121201f1f +2122211f1e20201d1a191f2629231c1a19191d1f21211f1d1c1c1a1c1c18 +17181a1b1918181a1a1817191b1a17151415161713111113141314161112 +1212121111111019141a201811175e0b000304070e08070b0a0300020302 +00000500010704003d6775627d86252a2c252039114564166c336c744a33 +372e303634302e2a283031263b3e3c333330333836323c4b3d3b4f3f3c41 +433a46443e453b3d3c4545474a453b3b41413d3d3d4843464651504b4149 +44413943353b3a3a43463f3e80afddeaf0fffffff5f5f8faf7f3f5fcfff7 +edeff5f7f3efe0ecf1e8dad5d7d9e7e6dbcccbdae7eaddd6d2d8e4eae5dd +d2d9e2e9ebe9e8e7d7dfe9f0f1eeeae7e2e7eef4f6f6f4f2efedebeaecf0 +f4f7f9fbfcfffffffffffffffffefbf9f7f6f3f3f4f5f6f6f7f7fdfdfcfd +fefffefdfafdfffcfefffffffffffffffffcfffffcfcfbf9f9f9f9f9f7f7 +f9fcfffefffffffffffefffcfcfbfef7f9fcfcf8f7fafdfefffffffffbff +ffffffff49293f2a553a3633212f282d30303d3933262d292332222a132b +25221d3f37392426244ea0ff44656a6c66655d666254382e383b0c2f9984 +878a8a8a8784878989858282877f7b7b7d7d7c7c7c7775777675777a7777 +757d787c747a7b7b736d6f6d6a6e6b6a716f6c697171756f72726b676c6c +6a6a6b686664646366666167696365605f626665615e5e5f5c6566666c6a +615d605d60585f5a605e5c5e5e5d5d5f5e5b5c525857575d595754595854 +5855504e50545d5b4e494e4f4c5250474c4d4b484f44454247524e494949 +46444446464443494343413f433d3f414343414040413f41474a49403c4c +423d3a3d3e3c3c3d3c4245423c3c3d3d46443d3e413c423b39373a393833 +36393b363433322f2f3232302d2e313233322e31312f2f3337372e303131 +323233343232312f2e2f2c292e3639342f2f2e292b2a2929292826252426 +262424262827282626272726262829232124232021262321212323222325 +2424252525242323292c302826282a2c7d4320272d2b282b2b2e291a0e0c +0c0a0909110a080c05092a806152294443474464554b54554e7b63455054 +465b292022282622201c1a2223182d302e25221f222725212b3a2c2a3e2e +2b303229383630372d2f2e3737393c372d2d33332f2f2d383233333f3d3a +313b3737303c2e34302d302c231e5e90bfcfd9f0fbf3e6e7e9ebe8e4e6ed +f3e8dee1e7e9e5e1d1dde2d9cbc6c8cad8d7ccbdbccbd8dbcfc8c4cad6dc +d7cfc4cbd4dbdddbdad9c8d0dae1e4e1dddad5dae1e7ebebe9e7e4e2e2e1 +e3e7eaedf1f3f6f9fcfdfefffdfdfbf9f6f4f2f1eeeeeff0f1f1f2f2f7f7 +f6f7f7f8f7f8f5f8faf9fbfffffffffcfffdfffafffffcfcfbfbfafafafa +f8f8f9fdfffffffffffffefffffdfbfcfffbfdfffffaf9fcfffeffffffff +fbfefefefefe45253b22492e2a2715251f24231f2b2621161e2121332632 +1a322c2720403739202119408afa29484d524d5050594b3a1c172a3c2053 +cbc0c3c6c1c1c0bfc0c2c0bcb9b9beb8b4b6babab9bbbdbab8bab9b8b9bd +b8b8b3bab5b7adb5b6b6aea8a7a6a2a7a3a3a9a6a3a0a8a8aca8a9aba2a0 +a3a5a1a3a2a19d9d9b9a9d9d969c9e989a9594979998949191928d939494 +9a988f8b8d8a8d858c878d8b8688888787898885847a807f7f85817f7c83 +807d807e7777777d848374717477747a786f74757370776c6d6a6f7a7671 +6f6f6c6a6a6c6c6a676d67676563676163656767656464656362686b6a61 +5d6d625d5a5a5b595758575b5e59535354545c5d5357575558534e4f4f51 +4c4a4a4e504e4c4d4c49494c4c4a4748494a48474346464444484a4a4143 +4444424243444141403e3d3e3b383d4548433e3e3d393e3c3b3b3b3a3837 +34363634343638373432323333323234352f2d302f2c2d3332302e30302f +30322e2e2f2f2f2e2d2d2f353b3737393a3a84441b1d211f1c1c1b1d190e +0504040100000500000603062577513e0e28282e2f52453b403f325c4628 +3337293e2017191f1d19171311191a0f2427251c1815181d1b1721302220 +34242126281f2d2b252c2224232c2c2e312c22222828242420292222222b +2c28222e2e2e2934262a241d211b0e074574a3b2bad0ddd2c5c4c8cac9c5 +c7ced4c9bdbec4c4c0bcaab6bbb2a49fa1a3b1b0a59695a4b1b4aaa39fa5 +b1b7b2aa9fa6afb6b8b6b5b4a7afb9c0c2bfbdbab5bac1c7cbcbc9c7c4c2 +c3c2c6cad1d4dadcdee1e4e5e6e7e7e7e5e3e0dedcdbd8d8d9dadbdbdcdc +e1e1e0e1e4e5e4e4e2e5e7e6eaeeefeef1edf3f0f3edf2f4f0f0f1f0f2f2 +f2f2f0f0f1f5f7f7f8f8fafaf9f9faf7f6f7fdfafcfffff9f8fbfcfcfdfd +fdfdf9fbf8f8fafb44223217391814110519181f1d1821180d00070a0c21 +1825122a2420193a35371f1e15377ce40e282b2d25231b2529231111212a +00238e7a7b807e7e7c7b7c7e7d7976767b74707275757475797573777675 +797a787672777273697172726c6466626163625f6863625d676569636566 +5e5b5f605d5e5e5c59585756595952585a54565150535655514e4e4f4b52 +535359574e4a4c494c444b464c4a4648484747494946463c424143494543 +3e44444144423e3d40454f4e413d41433f45433a40413f3c43383b383d48 +443f3c3c3b39393b3b39373d393937353933353739393736363735353b3e +3d343040332e2b2c2d2b2a2b2c31342f29292a2a35352d30312e342f2d2d +3031302d2e2f2f2a28282724242729272425272827262427272525292c2c +23252626252526272424232120211e1b20282b262121201c222221212120 +1e1d1a1c1c1a1a1c1e1d1c1a1a1b1b1a1a1c1d1715181714151915131214 +14131416131314141413121215181d161515161763250002090706070409 +0a020001020200000500000806010f5a38260013151a1a3c2c2228281d48 +34162125172c3a323437322d2c2a322d2b29443f4143473b34383d3d3b3b +3c39514340474a444540363d383d434e494444413d424846363e404b4448 +464a41544536323d30293333343c47474349445492d6ecedfcfffffbf0f2 +fefffaf0f0fffff5ebf0f3eff4e4dfe9ece0d7d7d7d9e3e9e1d1d0d9e7e8 +e5dad0d2e2f2ece2d8d8e1eaeff0ebe3dadbe4eef3f3f1ece6e2e2e8f1f7 +fcfbfaf8f5f3f0edefeff2f5f7f8faf9fdfeffffffffffffffffffffffff +fefdf9f9f9f8f8f8fafbfafdfdfbf9fcfcf9fcfbfff5fffefffaffffffff +fffefdfdfffffefffffdfdfffbfefffbfdfefffbfafbfafcf4fcfcfcf9fe +fefcfdfefafffffffdff4d2e3437264778d86d592725322f42579a756e18 +2c251e4b261b1f232c442933232e1d3fa5ff406162655f6c675a62622d21 +27300f339a84868e8c898583878a8b8783837e8286867f76787e78727072 +716e707471726f7b7c85777e7778727073716c6c6b6e797a6a6b716b706c +70726b686c6d6b686a6f6b62626864645e67696466615c616766625f6063 +62656260686a6460655d5f58635c615d5f5f5d5a595a595662585c59565a +5653585d5952535451534d4d54544d4c4e4c4e534f5d554f434d49454e48 +424d4d46474a474342474642464b4543413f443e4443413e3c3e45494539 +444642383b62463d393c3f3d3a373942453e37393d4048453d3d413c4139 +39383d3b3933373b373433363532313337332f2e303132313a3b37302e31 +33342d2e3031313033333133332e3032322b282c2d28292e312c2f2a2625 +28292724262827252628282629272727282527282c2323282922242b2624 +23242422232525252627282727272a1e2c29232b2f297854241f2c292230 +2d312c1d110e0c09120e10090b0f040379a7e8a9bfe5b3ac4c5255585965 +6d4454707b565f5c2c252629241f1e1c241f1d1b36313032362b24282d2d +2b2b2c29413330373a343530262d282f3340393636332f343a382830323b +3337333730433528263327202c2d2a2f3630282a243472b8d1d4e4f9faee +e3e5eff3ebe1e1f2f6e6dde2e5e1e4d4cfd9dcd0c7c8c8cad4dbd2c3c1cb +d9dad7ccc2c4d4e4ded4cacad3dce1e2ddd5cbccd7e1e6e6e4dfd9d5d7dd +e6ecf1f2f1efeceae6e6e7e9eceff1f4f4f5f8f9fafbfcfefefffefefefd +fcfaf9f8f3f3f3f2f1f1f3f6f5f8f8f6f6f9f9f6f9f8fdf3fefcfffbffff +fffffffffefefffffffffffffefffcfffffcfefffffcfefffefff8ffffff +fbfffffefffffcfffffcf9fe47292d301b3b69c961512321251d2f458967 +6210262621512c22242529402b37252d16328ff825474a4f485757494c48 +160f1d332054ccc1c8cec5c0bdbebfc2c2bebcbcb7bbbfbeb7b1b3bbbeb9 +b5b5b3b0b3b7b7b8b2b8b3bcb0b9b2b3afadafada7a9a8a9b1b2a5a8a9a4 +a9a5a9aba4a1a4a5a3a0a3a6a299999f9b9b959b9d999a9690959a999491 +9296959893929a9c9591938b8d8691888d8a898987848383827f89808481 +7d817d7b8085817a7c7d7c7e78787c7d74727472747a77857d776b75716b +746e6974746e6f726f6b6a6d6c686a6f6967656368626a6965626062666a +665a646662595b82665d56595c5a5653545c5f58515054575e5e53565755 +57514e5052534e4b4b504d4a4b4f4f4c4b4d514d4948484947464f504c45 +4346484740414344444343434143423e3f42413b373c3c38383e403c423c +38373a3b39363638373536383836373533353433333638312f3635303039 +33313031312f30322f2f30313232313233273738373f3e3482571f15221d +16211d201c100604020006020400020b0200729ed895a6ca989337404346 +444f52273955603b4441231c1d201b1615131b1614122d2828282c1e171b +20201e1e1f1c3426232a2d27282319201b2226332c29292622272d2b1d25 +252c232522261e31251b1a291e1722211e1f261e15150d1b599cb4b6c8db +d9cbc1c3d0d4ccc2c2d3d5c5babfc2bec0b0abb5b8aca3a1a1a3adb4ab9c +9aa4b4b5b2a79d9fafbfb9afa5a5aeb7bcbdbab2aaabb5bfc4c4c4bdb9b5 +b7bdc6ccd1d1d2d0cfcdcbccd0d1d4d7d9dbdcdce2e3e4e5e6e8e8e9e8e8 +e8e7e6e4e3e2dddddddcdedee0e2e2e5e5e3e5e8e8e5eae9eee4f1eff3ed +f4f4f6f6f6f7f6f6f6f6f5f6f6f4f6f8f4f7faf6f8f9faf7fdfefffff9ff +fffffafffffdfefffbfdfbf9f6fb49262320072352b24b3e17161c111e2f +6f4c4a0016181647221a1e20243d2836242b102981e3082424261f2c261b +272f0603132000278f7b7e84817f7c7c7e81817b787772777b7d766f7178 +787372727370707471706b726f796c7570716a6869676364656770716365 +686064606466605d6364625f5f635e55555b585852595b5558524e535857 +555253545355514d5557534f534b4d4651494e494a4a4845444746435044 +48454448443f4449453e42434649434247453f3f43414145425048423741 +3f3a453f3a45453c3b3d3b37363a39373a3f393735333832393835323032 +373b372b3537332a2c53352c26292c2a2623272f322b2424282d37372d2f +312e332d2d2e33332f2b2f31292627282a2524262c282425262726252e2f +2d24242529292223252626252626242625212225241e1a1f1f1b1b21231f +26221e1d20211f1c1c1e1d1b1c1e1e1c1e1c1b1c1c1a1b1d2018171d1d17 +182019151415151314161414151617141614160a1717141a1d1260380200 +0905000c060c0d070002030008040400030c05005f81bf7d90b5857f222a +2d302f3a3f1526424d28312e312d2b27272a2f30343531323b3e3d403933 +4943493f393e39454d4841404549383c3d403d3d483f383e533f4257474e +393b434a473f424d444844404140444e474947534f554b4a55494771b4df +effbfffffff8eefafff9f8f6f6f9faf6efeaf2ede7e3e3e5e7e8d5d1d0d8 +e5e7e0d4ccd7e5ebe6dcd3cfdee4e8e5dfdce0e6f2f3efe6dfdee1e3edf2 +f4f3ede8e7e9ebeef6fcfffffffffaf7f2eeececf2f6f3f5f7f7f6f6f8fa +fbfcfdfefffffffffffffffffffffffefefefdfbfaf8f7f7fdfbfbfbfbfb +fbfafdfcfdfbfbfbfbfbfdfdfefefffffffffffffffffffffffffffefefe +fefefefefffffffffffffffef8f9ffff33363b333abaa5ffa5c147252f3f +7384dabafe3c2d292028222a422830453a32311e1d3ec3ff3a5f5d606678 +696366612c171f2a0943977e797f858581858783877f867c7d7f87938a79 +7d776d686e777874716f6c687e72848b766f8070766c75766f69696e7a74 +67676b73716e6b6d70706b666b6668716f6764696e696565686967646066 +67615e6162615c5d566064646e625c5b5a5c5e6163635d5a5c625d54545b +5d5a595a585454575854595f5e544b4b4e4f525454534b46454c504f4f4e +4d4c4c444c463f4f503e494b433e423f3d464a44404142413f3f4243453f +3c434a4641515463414564563e3f3e3b3e403e393e414542393a3e3b3e43 +36353e393b3e3e3c3b3837363838343433333435343332312f3032333332 +2f33322c2c302f2d2f2f2d2c2e30312d30303230323032302b2b2d2a2a28 +2b2b28282929292a2d2f2721252a2a292620282625242626272625242524 +24222222272827262524232325262624242626242624292c25242a276246 +192a2b2a2830322f2c1e0e0c100e0e080f0e0c0e08054a6c785b63664a5a +554d5a516059526456616e7a606225231f1b1b1e2122232420212a2d2b2e +27213731372d272c27333b362f2e3337262a2b2e2b2d362f262e432f3247 +37412b2d363d372f323d3438373333343842393b37433e4236343c2f2b53 +96bfcfe0f4f8faeee1edf6eae7e5e5e8ebe7e0dbe2ddd7d3d3d5d9dac7c3 +c2ccd7dbd3c8c0cbd9dfdad0c7c3d2d8dcd9d3d0d4dae4e5e2d9d2d1d4d6 +e0e5eae9e3dedddee2e8eff5f9fafafbf4f3eeeae7eaedf1eef0f2f2f1f1 +f3f5f6f7f8f9fbfcfdfefffefdfdfcfbfbfbfbfbfaf8f7f5f4f4f7f8f8f8 +f8f8f7f8f9fafbfbfbfbfbfbfdfdfefeffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffefdfffd292b322c2fab90f897bb4a27 +242b5a6ec8adf43323221d29232b411f20393e3e3b241e36acf9224c4e53 +5362544c4e4a1c0f1c2d155dc7bcc2c6beb9bcc1c1bdc3bcc5bebdbec2cb +c2b1b5b5b9b6b4b8b9b2aeb1b6b6c8b1afb4adaab8a8b5acafb0adababac +b3ada9aaa6aca9a6a3a5a7a7a19ca19c9fa6a49c999ea29d99989b9c9896 +919798918e91929191928a9394949d918d8c8b8a8a8b8b8c8784868c8980 +808786838283807c7a7d7e7a7d86867d77797c7b7b7c7a766f6a6a717778 +787a79747268706a6476776875776d686c67636c6e686465666563636869 +6a645e656a665e6e71805e6581765e5f5e5b5b5d5b565b5c605d54545855 +575e4f505754545957565452505050514d4d4c4c4d4e4d4c4b4a48484a4b +4b4a474b4a4444484742444442414345444043434343434343433c3e3e3d +3b3b3c3e3b3c3d3d3c3d40423a34353a3a39363038353334343635363334 +333432323030343231302f2e2e2e3031312f2f31312f312f343b3d3c3732 +704d121e21201920201e1c11040307030100030403080400425e68494f50 +34443e36433a4942384a3d48556147491917130f0f121617191a16172023 +212419132923291f191e19252d2821202529181c1d201d1e2820181f3420 +233828311e20262d281f222d2428272326262a342c2e28332c31231f2618 +13397ca6b6c5d3d4d7cbbfcbd5c9c9c7c7cacac6c1bcc1bcb5b1b1b3b6b5 +a29e9ba4b0b3a99e98a3b1b7b2a89f9baab0b4b1aba8acb4bfc0bfb6afae +b1b3bec2c7c6c0bbbabec1c8d2d8dcdddededad8d5d1d1d3d7dbd8dadcdc +dbdbdfe1e2e3e4e5e7e8e9ebeceeededecebebeaececebe9e8e6e5e5e9e7 +e7e7e9e9ebebededefefeff1f1f1f5f5f6f6f7f8fafafafafbfbfbfbfbfd +fdfdfffdfffdfffdfdfdfdfdfdfdfdfffefcfafa2a2923120f8a75db7497 +2d0f10133c49a28ad9221a1c16211b253f20213b3d3c3c22182b9ce10024 +232729392922282a02000d1c00368d73717677777c83868285797e747377 +808c857476726f6b6e7679716b69676273606870696879676e6063646463 +64696f6962636468605d5a5e6366635e635e5e625e545156605d57565857 +56514f555753525558534d4a40484a4a554b4b4b4a4c4b4c4c4a4744474d +4c43454c4e49484944403f42433d3f474a4544484b463f3e3f403f3c373b +3e3e3c3d3e3f3f3a443e3847483640423b363a35323d403a363738373533 +373637312c33393530404352303653472f302f2c2d2f2d282d2f33302727 +2b282d3527272f2b2c30302f2d2b29292c2a262625242626252424232124 +262729282527282022242521232321202224242023232323232323231c1e +1e1d1b1b1c201f202121202124261e181a1f1f1e1b161e1e1a1a1b1c1b1b +19191a1a191819171a1716151413101012131311111113111311161c1b18 +19124f2e0006080702090c0c0f0802040c0908000505040a05002f444f31 +37391f2f2c2431283730273929323f4b3133303234343636363434404544 +44404149403645414b453f423c42464340444c5151534c49474e5a515559 +6254565e494646424246474545484546403c3f41434a454139413b403f47 +505256464687d3e6e6feffffffefe8fffff9f4f3f6f7f7f5e6eef3f0e6df +dfe4e8e3dad5d4d9dfe4ded5cfd7e6eeeae2d6dbe3e9ebe7e0dcd8e4f0f3 +efe9e4e1eae9e8edf2f5f4f2e9e7e7e8ecf3fbfffffffffffffef9f6f4f4 +f5f5f4f4f4f5f6f7f8f9fafcfcfdf9fafbfcfeffffffffffffffffffffff +fffffffffffffffffefefdfdfefefefefcfcfdfdfefeffffffffffffffff +fffffffffffffffffffffffffffffffffffef9f6ffff373b3b316ec478ff +8aed8130314ab4c7fb5d542f302e283529253a29243d28261a1b1b53aaff +4460585a5d68645e5d592a29271c1648977f7d888b858086847f7a707c85 +837a747a817b847b6d69727b7d7977777a6d767182807a76847270677979 +706c716e676763646e676e6c6c6e71706c676864656c6963636a6c6a6664 +63636261636568615e5c60605e5f5b63615e665b5f5c5c5f616464645c5f +615f5b5959595c5c5c5d5b56575957565b5f5b524c4c4c4e515558575350 +4a4b4d4b4a4c4b4a51474e4a464c47404344413e44424048494543454745 +4342413f403e465d747b687f5d636c6351493c3d3c37393d4142494a4e4c +4544443f4443353b4339363a393938383939383836343333343433313332 +3030323231302f32322d2d31312d3031312f2f302e2a2a2b2b2c2d2e2f30 +2d2b2928292929282627272626282b2e2c24272a28282926262525252626 +25232424242424232223242625252423222225262624242626242624292a +21202826594a1c2a2a2f3135302f2a1f0e0b0f0c15100f100d0a0b0a2847 +5754505c675d6d6b604e556b5e5660595962846d26282a2a2a2a2826232f +3433322e2f372e2534303a342e312b3135322f333b403e403936363d4940 +44485244464e3936393535393a38383b3839332f3234363d353129312b31 +2e353b3c3d2a2767b0c8d3f1fbf8f5e2dbf2f2ece5e4e7e8e6e4d5dee3e0 +d6cfd1d6dad5cec9c8cdd3d8d2c9c3cbdae2ded6cacfd7dddfdbd4d0cad6 +e4e7e2dcd7d4dddcdee3e8ebeae8e0e1e0e1e5ecf6fcfdfffffffffcf7f4 +efeff0f0efefeff0f1f2f3f4f5f7f7f8f6f7f8f9fbfcfdfefbfcfcfcfcfd +fdfefbfbfdfdfdfdfcfcfafafbfbfcfcfbfbfcfcfdfdfdfdfefefefefefe +fefefefefffffffffffffffffffffffffffffffffffffffd282c30265fb0 +5df074df802e2236a2b8f0544821252627362a24362016332a3228261a45 +8ff52749454947504d4544451f2525201e5ec4bdc8d1c3b8b9c2c0bbb6af +bfc8c6bab1b4bbb5bfbdb9b5b3b7b9b5b2b6c7bfc1afa9a7b2b4bcaab2aa +b2b2aeaeb2aa9e9fa6aaaba0a6a4a4a6a8a8a29f9e9a9ca09e97979e9f9c +999794959493929696918b8c8d9093958e938f8c948a8e8d8c8d8d8c8b8b +85898b898785848485858586827e7d7f7a797e83827b787a7b7b7b7c7c7a +74716c70747476787773776b6f6e6a74726c6f736d6a6e6a666e6d696769 +6b69676667656563687f9498839a787e89806e665c5d5c57565a5e5f6667 +6b69605f5f5a5f5e50565e54515554545353545453534f4d4c4c4d4d4c4a +4c4b49494a4a4948474a4a4545494945454646444445433f3d3e3e3f4041 +4243403e3c3b3c3c3c3b3a3b3b3a393b3e413f37373a3838393635343535 +36363533343434343433313131302f2f2e2d2d2d3031312f2f31312f312f +343b3b3a352f6853151b202522251f1e1c12040204010602000200000401 +1b3947443e485147535146343e54473f4a43434c6e571a1c1e1e1e1e1d1b +19252a292824252b201524202a241e211b2125221f232b302f312a27262d +393034384234363e2926292525292a28282b2829231f2224262d26221a21 +1b1e1c212627271412509ab0b5cfdbd6d3c0b9d0d2ccc6c5c8c9c8c6b7bd +c2bfb5adaeb3b5b0a6a1a0a5a9aeaaa19ba3b2bab6aea2a7afb5b7b3aca8 +a5b1bec1bfb9b4b1bab9babfc5c8c7c5c1c1c3c4c8cfd9dfe2e5e8e8eae5 +e0ddd9d9dadad9d9dbdcdddedfe0e1e3e4e5e5e8e9eaecedeeefeff0f0f0 +f0f1f1efedebececeeeef0f0eeeeefeff0f0f2f2f4f4f5f5f8f8f9f9fafa +fafafcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfffffcf8f72b291e0a +3e8f42d64fba61150b1d7e8dc22b2e1421242330241f3723163229302822 +153c7edc05201a1d202a241d1c20000a1611093a8b74757f7c767582827d +7669727977706e77807a7f766e6a6f777b777270796b6e62666871737d69 +685b656563666e6a5d5e5f62665b5d595b5f65676460625c5b5e584f4d56 +5d5d575552504f4e4e545653505254544d4a434744414b444a4c4e4f504e +4c4a43494c4a4a4a4c4c4d4d4d4c49424244423f3e434341454947443c3b +3e4247463a3a3b3837393c3b443d44423c423d373a3d38373c38353f3f3b +39393d39393634323230364d6368566d4b515b5240382d2e2d28282c3031 +38393d3b3332322d3433252b3329262a2b2b2a2a2b2b2a2a282624242525 +222024232222262627262326262121252521242525232324221e1d1e1e1f +20212223201e1c1b1c1c1c1b1e1f1f1e1d1f2225231b1c1f1d1d1e1b1e1d +1b1b1c1c1a1819191a1a1a191a181715141413120f0f121313110f11110f +1311161b1817171247340004070c0b0e0b0c0f0902030805090200000000 +0000081f2e2b26303c32424035232e44372d352c2c3557402f2e2d2d2f30 +32333a3e3c3b424549524b40494a544f47454648484648505a605d605b5b +5a5e6557605c4f464d534e4c40454c504d453a323e4243464d4b4444514b +42453f4448525852545a4f476da5d4ebfafdfffff7e8e9f5fffcf3edf4fc +f9f0e8e9edeee7dfdde5eae3d7d1d7e0e8e4ddd5d2d7e2ebefe2d4d3dee9 +edece7dfd8dceaf6f5eee9e5e1e3e9f0f4f6fbfaf7f4f0eeecececeff4f8 +fafdfffffffffffffffffefdfafaf9f9f8f7f7f7f7f7f7f7f8f8f8f8f9fa +fbfcfdfefffffffffffffffffffffffffffffffffffffeffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffef9f9ffff393e +3b30e5d659f49dffbb232a84a4c2b71b24332c25222f251b2b251b2b2920 +1d1f254ba4ff526b686b6566656163621f21262717449378738790928788 +7e868882868d87817f7c81727c787371797f7e7a7b7873696f7b8a7a7570 +7f726e677d7b6f6d6b706e7368646f646c6b6c6d6e6a6964676363686663 +656c6c6c696562606162626263615d595d61656564696260665e5e5d5c5f +616362605b65665d5b61615a5a5c60605d58585a575a5f605c5856545051 +52535554524f4c4d4b4849494a4953494e4e4f4d44464043424247434248 +4442424547454241423f3f3d3f4d5b5b6b78413246453e4c3b3e3d393639 +42463f3f42434044474249423742493c383a373737393b3b383637353434 +3433323134333232323231302e31302d2d31312e2d31322f2d2c2a272829 +292a2b2c2d2e2f2a2626292b29272726262525272a2c2c25272825262a2a +252526272827252324242424242323242222232323222020232424222224 +242224242a291f2029275d5e262b232828282f2d2a1f0f0b0d0c0e191215 +1513190d245f595a635b66585359565e55615c6256666566576925242323 +23242425292d2b2a30333740392e3738423d353334363634363e484e4c4f +4a4a494d5446504c3f363d433e3c33373e423f372c24303435383f3d3636 +433d343731373842473f3f41342a4e86b8d1e2eaf6faeee2e5eff8f2e4dd +e1e9e9e2dadbdfe0d9d1cfd7ded7cbc5cbd4dcd8d1c9c6cbd6dfe3d6c8c7 +d2dde1e0d9d1ccd0dde9e8e1dcd8d7d9dfe6eaecf2f1f0ede9e7e7e7e6e9 +f0f4f8fbfefffffffffefcfbf9f8f5f5f4f4f3f2f2f2f4f4f4f4f5f5f5f5 +f6f7f8f9fafbfbfcfdfefefefefefdfdfefefefefefefefefeffffffffff +fffffefefefefefefefefffffffffffffffffffffffffffffffffffffefa +292c2e20d2bb34cd7bf4aa131372a2c8b916121f202328392a1c2b25202e +28222e29132d87f82f474549474a4c4a4a4e141d24291f5abeb5bccec4c0 +bbc0bac1c4bec3cbc4bfbdb9beb0bab7b6b2b1b5b8b3b2b5bbb5bab9b2a5 +b4b4bbadb0aab5b1abaca7a8a0a7a9a7ac9da5a4a5a6a7a5a19f9f9b9b9f +9d989aa1a0a09d9995939495939594948d8b8d9398989698908b918b8c8b +8c8d8d8b8987838f9087848a8a838285878784807e807c80838483807f7f +7b7a7b7a797773727073737375767671796d6f7274756f736d706d6d6f6b +686e6866666a6b6a666668676562616f7b7b88955e4f63625b695b5e5d59 +56595f635c5c5f605b5f625d645d525d645753555252525456565351504e +4d4d4d4c4b4a4d4c4b4b4a4a494846494845454949464246474442413f3c +3b3c3c3d3e3f4041423d39393c3e3c3a3b3a3a39383a3d3f3f3837383536 +3a3a343436373837353334343434343332322f2f3030302f2d2d3031312f +2f3132302f2e353a393a36306c671f1c191e19181f1e1e15060102000006 +0002020209001550494a51464f413c423f473e4a454b40504f5041531918 +17171718191a1f23212026292d342b20292a342f27252628282628303a40 +3c3f3a3a393d4436403c2f262d332e2c232a3135322a1f172327282b3230 +29293630272a24272932352e2c2d21183a71a0b6c8ccd7dacdc0c0cbd4cf +c3bcc1c9c8bfb7b8bcbdb6acaab2b6afa39da3acb4b0a9a19ea3aeb7bbae +a09faab5b9b8b4aca6aabac6c5beb9b5b3b5bcc3c7c9d3d2d3d0cccacaca +cccfd7dbe1e4e7e9eaeae9e8e6e5e5e4e1e1e0e0dfdedfdfe3e3e3e3e4e4 +e6e6e7e8e9eaebecefedeeedefefefeff1f1f1f1f2f2f2f2f5f5f6f7f7f7 +fafafafafafafafafcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfffb +f5f32a2c1e07b4a022bc62db9804055c7c9a8a0000182024243124172d25 +1927241f26210f2575df0f231f232325242122290002151b0a36866f6b80 +82807175747d7e76737874747a7d837177706f6e72797e7c7b7c7c74777a +7d6f7b777d69665d6a666366676b6569656067585e5d60626363605d605a +5a5c5a54545d5e5e5b5753505152515353524f4e515455534f5048444c48 +4b4b4e4f504d4a48444f51484850524b4d4d504e4b444347464745444242 +4749454039373b3f484842403e3b3a3b3b3c463d42424140373a36393738 +3b37353d383636373b3736333533322f2f3d4c4c5a67302135342f3d2c2f +2e2a272a31352e2e31322e32353039322732392c282a2929292b2d2d2a28 +292726262524232225242424262627262225242121252724212526232120 +201d1b1c1c1d1e1f2021221d19191c1e1c1a1f1e1e1d1c1e2123231c1c1d +1a1b1f1f1d1d1c1d1e1d1a1819191a1a1a191b191513141414130f0f1213 +13111113110f1113171a161718134d4a05050005020108090e0b00000000 +0000000000000000003932333b313d2f2a302d352c3833392b3b3a3b2c3e +36343233343436383a3b36353f454a51614f433e454a4e5451514f4c4b4e +55595354525956535850444a3f46504c4e494a51544d43404244383f4246 +4b463d3c3d3c3937363a383640443c3d473c374c74c4e9ecfffaf0ffefed +eef3fcfef8eef6f4f1eeebeaeceee4dedadfe7e7dbcfd4e1edeaddd3d2d7 +e1e9efe9ddd6dbe3eff0ebe2dbdde6edf2f4f3eee6e2e2e5f0f4f9fdfefb +f8f6f4f3f0edebedf1f5f7f6f7fafffffffffffffffffffffffffdfdfcfb +faf9f8f8f7f8f8f8f8f9f9f9fdfdfdfdfefefefeffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +fbfaffff393f3d32ddfd83ffffc527301ae5dbfff657412928221c231e15 +24252712120c000212449bff3c5c6567656464626b7b2b25314a114daa90 +7e8c8d94918a79818685878a7e81847f8675807e77777b7e7a7675747567 +6f73827973757673706a7f777171646e7a766a686e6b6b6b6a6966666566 +69646366686565696b6d6a6764636465625f6164645e5f646363676a6561 +66635b5b595d5f605f5c5b64645a585f5e56565a5f605c5756585d605f5c +59585651525251504f4e4f4e4e4f4e4b4948494b4a474c4a514f44494646 +454746424347434141444543414042404442404346403a4541453f393c34 +3d40413f3b3a3e403e3a39393b444c49433f3741463d3d3c3a3837383a3a +3734373635343535333234333333323231302e302f2d2d2f2f2d2c30312e +2b2b2b292d2d2c2c2b2b2b2a2c282525292b2a28262727272828292a2823 +282924232727272626272827262423232324242323232223242524232221 +23242422222424222122292820232e2d5163242d26282a2c2d2a2a21120d +101024869d7d6468642a2165575361545d565d5a57635b5a5962544e4866 +4b612c2a28292828282a292a25242d33383f4f3d312c33383c423f3f3d3a +393c4347414341484542473f343a2f36403c3e393c43463f353234362a31 +34383d382f2e2f302d2b2a2e2c2a33342b2a32251d2f53a1cad4ebece7fc +ebe9e8ebefeee5dbe8e6e3e0dddcdee0d6d0ced3dbdbcfc3c8d5e1ded1c7 +c6cbd5dde3ddd1cacfd7e1e2dfd6ced0d9e0e5e7e9e4dcd8d8dbe7ebf2f6 +f7f4f3f1eeedece9e9ebeff3f2f1f2f5fafdfefdfffffffefefdfdfdfafa +f9f8f7f6f5f5f4f5f5f5f5f6f5f6fafafafafbfbfafafefefefefefefefe +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffa292d2f23c7e15bedf4a4111d06d6d8ffed462b161f22222e +281e282b35242928231d103489ee1f3c414544484d4b5467201f2f4c1962 +d5cbc5cebabdc0c0b3bec2bebdbfb4bac2c1cbbac2beb6b2b1b4b4b1aeb0 +bcb1b5aeaaa4b5bdb4b0b4adb4aaa8a99ba1a4a5a6a9aaa7a8a8a7a4a19f +9e9da09b9a9ea09d9da1a2a19e9b98979899969394989792929796969999 +908b90908989898b8b8a8583838e8e838188877f7e828687837e7e7e8285 +8583807f7c7878787877757372737377797876757473706b6d6f76787077 +7171706f6e6a696d686666696a68666668686a686265666057625e625c56 +59515d60615f5b5a5b5d5b575656565f67645e5a525c6158585755535253 +5555524f504f4e4d4e4e4c4b4d4c4c4c4a4a494846484745454747454145 +46434040403e40403f3f3e3e3e3d3f3b38383c3e3d3b3a3b3b3b3b3b3c3d +3b36383934333737363536373837363433333334343332332f3031323130 +2f2e3031312f2f31322f2b2c34393a3d3b36606c1d1e1c1e1b1c1e1e1f17 +09020300106e83624a4e4c14115646434f42463f4643404c4443424b3e38 +3250354b201e1c1d1c1c1d1f1f201b1a23292e35432f231e252a2e343131 +2f2c2b2e3539333331383532372f242a1f26302c2e2a2f36393228252729 +1d24272b302b22212424211f1e201e1a23251b1b21150e1f408db5bad0cf +c6dac6c4c4c7cdccc4bac5c3c0bdbab9b9bbb1aba6abb3b3a79ba0adb9b6 +a99f9ea3adb5bbb5a9a2a7afbcbdb9b0abadb6bdc2c4c5c0b9b5b5b8c8cc +d5d9dad7d6d4d4d3d3d0d2d4d8dcdcdbdcdfe4e7eae9ebebebeaeae9eaea +e9e9e8e7e6e5e6e6e5e6e6e6e6e7e9e7ebe9ebebececeeeef1f1f2f2f2f2 +f5f5f7f7f8f8fafafafafbfbfbfbfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd +fdfdfdfdfdf9f4f12a2d220cafcb4fe4e393061600c3b7d8c6281d102024 +20282019292928141919110c032571cf00161d20212324222b420007203e +04419f8779868183787269787c777171687381838c777a74707073767977 +777a82767976766f787b736b69606c6564686169726f6865646163656462 +5f5b5a5a5d58575d5f5c5c605f5f5c595655565754515256555050555453 +54554b494e4f494b4b4d4e4b4844444e4f47474e4f47494d4f504a454245 +4f5148423d3e41413f3d3734383d484a474544413d3c3c3e3d3b3e3c423e +3339393b3a3a3a36363a3533333637343333353437353033373129343034 +2e282d252e3132302c2b2d2f2d29282829323a37332f2731362d2d2c2c2a +292a2c2c2926292827262626242325242525262627262224232121232523 +202425221f1f211f20201f1f1e1e1e1d1f1b18181c1e1d1d1e1f1f1f1f1f +20211f1a1d1e19181c1c1f1e1c1d1e1d1b191818191a1a191b1915141516 +15141110121313111113111110111619171a1d19414f0307030504050708 +0d0b000000000762724d33353200003f322c3b2e342d34312e3a32313039 +29231d3b203634363d42413a34322f3c4645433e404a4141424d4e463c36 +494b4c48423e4043453f3b453f37444937433942453b423f343c413c3534 +373a3a3c38333432313633383a343a413b2a3a39403d3a4f5744485993cd +e1f2fff7fff7edeaf5fefef6f0f2f3f3f0edeae9eee7dfdcdee1e3e3dbd7 +d5dce5e9e5ded0d9e4ecede7ded8d7e5f1f3eee6e1dde6eef5f8f5f0eeef +e6e9ecf0f3f8fcfffffffffffef9f4f2f2f1f0f1f4f5f4f3f9fafbfdfeff +fffffdfdfefffffffffffffffffffffefefefcfcfcfdfdfefefefdfdfdfd +fefefefefdfdfdfdfdfdfefeffffffffffffffffffffffffffffffffffff +fffffffffffffefeffff373b3f362c667cfff9902952293577edff49333e +2826201f1d171e20170014383647385db0ff39595a5156585b52566b261c +192a0949a5897b908c9f958a7c7b7b83999b8e8d7c737f767d797a7a7d7d +75717372736f7d7a8b836f727073716d7c777b7878787d6e6a726c706765 +656563656a6c6d66626567655f5f6867656465656564656063676b646262 +5e5c6366615f62635d5a595c5f61605c5d5d5c585557585654595d5c5956 +55565d5c59565557544e56555552515052544c4e514e4846474b44484c46 +4c5046474b49494a4543464948454546464444454943444242464b475042 +4141353b4c3f404040403d3b3a3b443e3b39373f4440393d383b3a3a413b +3a39373738383736373635353636363530313131313030303031302e2e2f +2f2e2c2f322f2d2f31322f2e2d2c2b2a2929292827262728272725262728 +2929272625232b2f29262725282625242526262522232323232322222223 +2425252423222324242222242422202228271f25302e476720322c272b31 +2c282a24150f1213294c4f606a5e5b432b4c564e474e61565b6c6f4e4954 +5d595254504c5e512a2c3035342d2624212e3534302b2d383131323d3e36 +2c26393b3c38322e3033332d29332d25343927332932382e3532262e332e +2726292c2c2e2a2526242328272e302a303731202e2d322d283b432a2734 +72b1c8def2ecf7efe5e2e8f0eee8e4e6e7e7e4e1dedde2dbd1ced0d3d5d5 +cfcbc9d0d9ddd9d2c4cdd8e0e1dbd2ccc9d7e5e7e1d9d4d0d9e1ebeeebe6 +e4e5dde0e3e7ecf1f7fbfdfefffef9f4f2f0edecebeceff0efeef4f5f6f8 +f9fbfcfdfafafbfcfefffffffcfcfcfcfcfbfbfbf9f9f9fafafbfafafbfb +fbfbfbfbfbfbfdfdfdfdfcfcfdfdffffffffffffffffffffffffffffffff +fffffffffffffffffffdfffa272b332b1a4d57f4d573144420295ecbde23 +1d35242520252e2b282925235e8f80846578b7ff314d4b3e4042453c3f57 +1b16172c0e5ccdc1bccab2c0bfbeb7b9b8bac7c5bbbfbcbbcac2c2b9b7b5 +b4b6b7b4b1b3b9b5bdadaea9afbaafb2b7afb1a8adaba7a2a095a1b0a8ad +acaba7a39e9c9d9e9f98979ea3a3a1a0a09e9c9b9c9c9c9b9c97979e9f9b +9797928e94948b898c8f8b8a898a8b8b8684878988848183817f7d828685 +827f7e7d8382817d7c7b756f747679797777777873787d7d777372736869 +6e6b71797273747171706b696d706f6c6a6b6b69696c6f6b6a6863676b67 +6d5f5e5e545a6b5e5f5f5f5f5c5a595a615b5856545c615d545853565555 +5c565554525252525150504f4e4e4f4f4f4e494a4a4a494848484a4b4a48 +46474746444747444244464744434241403f3e3e3e3d3c3b3c3d3c3c393a +3b3c3c3c3a3938363b3f3936373537353534353636353233333333333132 +2f3031323231302f3031312f2f31312f2a2c3237393f3d3756701823221d +1c211e1c1f1b0d05040112312f3e473c3b26173d453d343c4a3f44555837 +323d48443b3d3935473a2022272c2b241d1b18252d2c2924262e24242530 +31291f192c2e2f2b25212324251f1b251f17252a18241a23281e25221921 +26211a191c1f1f211d181917161b1b242620262b2514221f25201c30381d +18225f9cb2c5d5ccd3cbc0bdc5cbcac3bec0c1c1bebbb8b7bab3aaa7a9ac +aeaea7a3a1a8b1b5b1aa9ca5b0b8b9b3aaa4a4b2bfc1beb6b1adb6bec7ca +c8c3c1c2bec1c4c8cfd4dadee3e4e7e5e3dedbd9d7d6d5d6d9dadbdae0e1 +e2e4e5e7e9eae7e7e8e9ebecefefebebebebedecececeaeaeaebebeceeee +efefefeff2f2f2f2f5f5f5f5f7f7f8f8fbfbfbfbfdfdfdfdfdfdfdfdfdfd +fdfdfdfdfdfdfdfdfdfdfdf8f3f2282b251502394eedc7650f41171b48b2 +c70e1030252a202124222724160939655d63465996df0a232014191b1c13 +16320000081e003c9980788d83917f767376757786837a807f7c877a726b +71717171706f70737a778174766c656e686b6e656b666e7073747668686f +62676b6c67625a5858575853535a63646360615d5b5a5b5b5b5a5b56555b +5d575353524f53544c4a4d504d4c4b4c4e4c4946484a4b4746484947454a +4e4d48454446524f453c393b3c383e3d3b383c424c5247484a47403c3c3f +383a3c373b3d33343c3d3d3d3836383b3a373637373335373c3737353438 +3c383f313030282e3f3233333333302e2d2e352f2c2a28303531292d282b +2a2a332d2c2b29292b2b2a29292827272727272621222323252426262526 +25232425252422252623232527282524232221201f1f1f1e1d1c1d1e1d1d +1d1e1f2020201e1d1c1a20241e1b1c1a201e1b1a1b1c1b1a171819191919 +1a18151617181615141314151311111313110f11171a161c1f1a3753010e +0904050a04040b0c02000000041e182227191506002833292328382d3243 +4625202b332f292b272335283230343836302d2e2e373d3e413f3e444340 +333c393a3d3f3a3d4345423d3d403c3839453e344047414a3c3c3a333d3d +3a3f474c4a433831313533313434343a3033362d39403d2935313b464741 +4040493e3f67a9d8eef7fffffffbefeef4fbfbf4eff0f5f6efe7e7ecf0ea +dfdadde3e9e2d9d4d6dde5eaecded0d2e0ecefece2ddd8deecf6f2e9e5e4 +e2e7eff7fcfef8f7f5f2eeedeef0eff3f8fdfffffffffffffffffdfbf8f6 +f5f5f5f5f6f6f6f6f7f7f8fafbfdfefeffffffffffffffffffffffffffff +fffffffffffffffffffffefefefefefefefeffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff34393e3931353848332f2c2a291c +3d5f9a452a362527201c211a13140b1b561e1c2833469bef3053524c6260 +645e595d251e1e2b1553a08383977c8e9988867e80879c7d8c988379756e +6e7379797b79727175766b797f7f988771737071706c787b8475808d8c78 +7774666d6563626264686d727068646669655f5e63646364666465646864 +64686966605c645d666762626366605d5b5b60626360605c5b5b5958585a +57585b5858565555555554575a5d606061605f5a54515253494b4d4d4844 +454a4c4d534e4c524a474b484b4b44434a4c4a474646454344454a434341 +3e4246424c49453b423d3d3c413f3d3d3c3a3c3e403c3c3b393c3d373b40 +3d3b363a443b373737373737383936363535363736352e2f3131302e2e2e +333231303030302f2d2f302d2d3134342d2d2d2c2c2c2b2b2c2b2a2a2928 +2725242526272928252327262f342e2a2927272523222324252523232424 +2323222222222324242322222324242222242422222327241e25302b416e +1c312a22262d2c272a25181013142567817a736a67531e41564a4a4c484d +4d5f704c565c504f444e544a51552826272b29231f2020292c2d2e2c2b31 +3230232c292a2d2f2a2d3335322d2d302a2627332c223037313a2c2c2d26 +30302c31393e3c352a23232725232626262c24292c232f3835212b272f3a +39332f2c2d1e1f4a8ebfd6e2ecf6f9eee3e2ebf2f2ebe3e4e9eae3dbdbe0 +e2dcd1cccfd5ddd6cdc8cad1d9dee0d2c4c6d4e0e3e0d4cfccd2dfe9e5dc +d8d7d8dde5edf2f4efeeece9e7e6e9ebe9edf4f9fbfcfefffffffdfaf8f6 +f3f1f0f0f0f0f1f1f1f1f4f4f5f7f8fafbfbfdfdfefefffffffffcfcfcfd +fefefefefdfdfdfdfcfcfdfdfefefefefdfdfdfdfefefefefefefefeffff +fffffffffffffffffffffffffffffffdfdfa262b363327231c2716191f25 +2c1922366d1f162d21251e212e2a1f252851ad7e6d6c6d6ca5ea284a463d +4c484e4b434917181b2d1a66c8bbbfcc9aa8bfbbc3c0c0bec29dadc4c2c3 +c5bcb5b3b7b7b8b8babbb8b9b0b8b5a6afa1a5b5afb3b8afaca9b4a1a7af +a797a8afa1acacaca7a39f9fa0a09e99989ea6a8a4a19e9c9b9c9e9f9d9c +a09c9c9fa09d98939b9196948e8e8c92908d8b8c8e8e8d8a8c8a89898684 +8385808384838182817e7d7b7d7f817f7c7a787c80807b79777973777c7c +77707072706e7470717b7773726c6f716a697073716e6b6b6a68696c706b +6967626366626966625b615c5c5b605e5c5c5b595b5d5d59595856595a54 +565b585651555f5652525252515152534f4f4e4e4f504f4e47484a4a4846 +46464d4c4b4a484848474547454242464949424242414141404041403f3f +3e3d3c3a38393a3b3c3b38363a393f443e3a393736343332333435353333 +3434333331322e2f303131302f2f3031312f2f31312f2c2d3134383f3d34 +507714222018171d1e1b1f1c0e0605020b4b5d564d4442320a3245393739 +3336364859353f453b3a2d373d333a3e1e1c1e22201a1617172024252725 +242a2823161f1c1d20221d202628252020231c1819251e142128222b1d1d +1d1620201f242c312f281d16161a18161919191f181f2219252d2a161f1b +232e2e2825211f0f10387ba9bec7ced5d6cbbdbac2c9cbc4bdbec3c4bdb5 +b3b8bbb5aaa5a8aeb5aea5a0a2a9b1b6b8aa9c9eacb8bbb8afaaa6acbcc6 +c2b9b5b4b4b9c2cacfd1d0cfcdcacac9cccecfd3dbe0e5e6e7e8eae9e7e4 +e2e0dfdddcdcdcdcdddddedee1e1e2e4e5e7eaeaececededf0f0f1f1eded +edeeefeff2f2f1f1f1f1f3f3f4f4f6f6f6f6f8f8f8f8fafafafafcfcfcfc +fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfbf7f3f1262a291d0e0d111e080b +1721230a0f22580c0b28222a1f1d25201b1d122d80504447474783ca0323 +1e14272225211a2400000c1f0646947c819676859082878283848f6e7e93 +89847e706565747673716e707176717f81778371676e696c6f686a6b7a6e +7b8a887579755d656667645f5d5c5e5f5d57565d6365615e5c5b5a5b5f5f +5e5d615b5b5c5c59514f5a535a5953535055524f4d4b4e4f4e4b4d4a4b4b +4b494b4d484b4c4b474746464b4841404042494b4a4b474542444c504546 +4846413b3b404241453e3b3f36343d3c3f4039363d3e3c39373736323537 +3d373634323437333b38342c3530302f343230302f2d2f31312d2d2c2a2d +2e282b302d2b262a362d292929292a2a2b2c28282727272827261f202323 +2422242428272625262626252325242123272a2a23232322222221212221 +20201f1e1d1b1c1d1e1f201f1c1a1e1d2429231f1e1c1f1d1918191a1a1a +18181a1a19191a181615161715141313141513111113131111121617151c +1f17315a000d0700000604030b0b0200000000354336281d180f001f3327 +26282224243647232d3326251b252b21282c3e3631302f2d313830302e31 +3c403e403f413444403e3d3a38393d4344424142373b3f48433e4542464e +49484b453d3546413e3f3c3634352c33363a42423e3f3f3b3d35413f4036 +3a473d37443d323a3d414c4a4970b5e2f1fbfffffdf9eee5f4fafbf5ece9 +f1f9f0e8e5ebf4f1e1d0d9e4eeebdfd5d4d8ebf0efe5d7d3dde9f4f2e8db +d5dcebf6f5efe6e2e4e8ecedf4f7fafbf9f7f6f5eeefeeeeeff2f6f9f8f9 +fcfefffffffffffffffffefdfdfcf8f8f8f8f7f7f6f6fafbfbfcfdfdfefe +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff31353c37392c3332 +3c23263122272e1d312f424527261c1e302512191b4c8e0d00000024beff +5164575b735453585a56281c274809529d8283833e418c7784787e7d8439 +5b7f787c6f6f717e707173706a6b737775835653755b697c706a6a69747c +7f54517c6a6b7b6a6564666362626465696b6b686464666362625f616363 +625f5f5f6264636261605e5b6c5c656565676367625d58585b5f61605d59 +5959595b5c5e5958575354565552525253595a5b62696162615a534c4e4f +4b4748484845474a574d57564e4f4a4949464d4e45454b4b464443444340 +4142423d414545494b47444a483a493b36403e3e41413e3b3d423e3d4243 +41444640413f3d403a3b453c35373a393736363835343434343433322f31 +3232302e2e2e323130302f2f30302e2e2d2b2e31312f2d2d2d2d2e2e2e2e +2d2b2b2d2f2f2b27272625252727262429262d312c2a2a28262524242525 +252425252525252423222424242423232323232424222224242224232623 +1f28322c3672182b28272e312d292925181111141b49605a5f615c551d51 +615b6a5e4c5e614b504a626348746c47445e544d312924232220232a2222 +1d202b2f2d2f2e3023332f2d2c2927282c3233313032272b2f38332e3532 +39413c3b3e383028383330312e2826271e25282c34343031332f31293535 +362c303d332d3730242c2b2e35302c5192bfd1ddeaeef1f2ebe2edf1f2ec +e3e0e5ede4dcd7dde6e3d3c2cdd8e2dfd3c9c8ccdfe4e3d9cbc7d1dde6e4 +dccfc8cfdee9e8e2dcd8dadee2e3ebeef1f2f2f0efeee8e9eaeaebeef1f4 +f3f4f7f9fbfdfffffdfdfcfbf9f8f8f7f6f6f6f6f4f4f3f3f7f8f8f9fafa +fbfbfcfcfdfdfdfefffffefefdfefffffffffffffffffffffefefefefefe +fefefefefffffffffffffffffffffffffffffffffefdfcf8232b39373825 +221f2c1b27393232260e221f2f331b2121232b221b385895cc4526151a32 +b7f9374b404252333b4544421a1424491165c5b8bdb25554b0abc6bec1b5 +a55173a4b4c7c1c1b6bdb4b6b8b9bbbcbbb9b4bb7f6b79628aacacadb3ae +aaa9ab7b73967d84a7a3a0a4abaaa6a4a09f9e9d9d9b9b9fa3a5a7a59c9c +9e9e9c9b99999c9f9e9b9a999693a494999792948f9592908b8b8e908f8e +8e8c8a8a8989898b858583808083827f7a7a7f838079777a70767e7f7c77 +75767776777977716f70786c7677737878756d666e72696971716c6a696a +696766686865676b696a6b67646a6759685c57615f5f60605d5a5c615d5c +5f605e61635d5c5a585b5556605750525453515050524f4e4e4e4f4f4e4d +4a4c4c4c4a4848484c4b4a4a494948484646454343464644424242424343 +4343424040424444403c3b3a39393a3a39373c393d413c3a3a3835343434 +35353534353535353534323230313131303030303031312f2f31312f2e2d +303338413f35457b101c1d1c1f211d1b1e1c0e040302012d3c36393a3534 +0941514a574b37494a3439334d4e335f55302d473d3628201b1a19171a21 +1919151823272527242619292523221f1d1e222829272625181c2029241f +262329312c2b2e2820182b262324211b191a11181b1f272723242723251d +29292c22263329232e271b211d1f25211c3f7fabb8c1cacdcbc8c0b5c3c8 +c9c3bab7bdc5beb6b2b8c1beae9da7b2bcb9ada3a2a6b9bebdb3a5a1abb7 +c1bfb6a9a5acbbc6c5bfb8b4b7bbbfc0cccfd2d3d5d3d3d2cecfd1d1d2d5 +dbdedddee1e3e5e7ebece9e9e8e7e5e4e5e4e1e1e1e1e1e1e0e0e4e5e7e8 +e9e9eaeaededeeeef1f2f2f2f2f2f4f5f5f5f5f5f8f8f8f8fafaf9f9fafa +fafafcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfbf7f3f023292a1f +1a0b12101504172c25210f000306212f1d251d1d271d1629366aa7220300 +00189de11e2d20233312151b1d1f0000153b0045917c83843b4096879688 +8b8686395b838186756f6676777d77726e6f72797d8c5d5168506d827068 +6e6d6e72764e507b6a6e8470605a5b5a5b5d606266686863615f5e5b5758 +575a5e5e5f5d5c5c5f5f5c5755544f4c63555b5c595b5457544e49494c4f +51504d4a49494b4b4e504a4a4845454847464646424343434e585153504b +4441464946424342413c3d414d434c4a40403a3a3d3d43463b3b403e3937 +3637363233353531363a393b3c38353b3b2d3c2f2a3432323434312e3035 +3130333432353731312f2d302c2d372e27292d2c2a29292b2a2927272626 +252421232525252525252726272726262626242425232427272523232323 +24242424232121232525211d1f1e1d1d1e1e1d1b201d2226211f1f1d1e1d +1a1a1b1b1a191a1a1b1b1b1a1b1818171717161616161415151313151513 +1312151618212118265e00070706080a04010a0b02000000001722161413 +0c110031413a483a26383822272138391e4a43201d372d263c353234332f +32382c353b3d3f3c3b3f4446364944423e39433e3d3f403b3736373c3a39 +373d483e524f42383f43393036373d413a2f313a3637343740423e3e483e +3f3a43373a393b343e4337323c3f3b413b424c415187cbe3f9fffefaf4f1 +eef1f4f7f8f4f1ecf5f1ede8e6e8edf1dcd8d8e0eaece4dbd2dae6eeeee6 +dcd5e1eaf1f1ede8e3e0e3ecf3f7f3edebebe9ecf1f5f8fcfffffffffcf8 +f4f1f0f0f0f2f5f5f4f5f7f9fdfefefffffffffffffffffffffffefef9f9 +f9fafafafafafbfcfcfdfefefefefefefefefcfcfdfdfffffffffefefefe +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3034 +3a3430313f7f543518292e1e3d3a9266353826241d2434221028594b2400 +00251c7eb0ff435452718e565a5f696d451e2046165fa08089904e5c6256 +7a6f7a80933f446b5f6f66736f7a6d6d6d6964656d726f812d2e50244b60 +6e626369757b722f16471c376c626b5b676664646361605e6160605f5f60 +6367595e625f5a5656585b61625b595c5e5d67545b5d5e625d6060595352 +565b5e5d5354535253595c5b595854505153534e535254544c454d5a5356 +56524d4a4d504f47434648494a4b594753584b48464849464e5147444a47 +4342444544414141473f3f403f4248484b43473d4a423c393c40484a443c +3c41403e42413e424642403836403c3a433a35393d3c3833333436353333 +333331303335373633302f302f2e2d2e2e2d2f303131302e3133302c2f2f +2f2f2f2f2f2f2c29282d3436312a2b292524262828272a24282a26262928 +272627282828262427272726262524232626252524242425232424222224 +242223222423222d37304488242c25272d292f2b2a27170f10131e506859 +616d5d501f3e4c4c43363b3c47373d302a3b57e1fffdf0b3a05d2f282527 +2622242a1e272a2c2e2b2a2e3335253833312d28322d2c2e2f2a2625272c +2a29272d382e4542352b32362c2328292f332c21232c2829262932343030 +3a30312c352b2e2d2e2831392d282f3332352b2c30202c60a5bfdbe9eef1 +f1eee7e8ebeeefebe5e0e9e5dfdad8dadfe3d0ccccd4dee0d8cfc6cedae2 +e2dad0c9d3dce5e5e0dbd6d3d6dfe9ede9e3e1e1e0e3e8ecf1f5f9fcfaf9 +f8f4f0edebebebedf0f0eff0f2f4f8f9f9fafcfdfdfefefefefefcfcfbfb +f6f6f6f7f7f7f7f7f8f9f9fafafafcfcfcfcfbfbfcfcfdfdfffffffffdfd +fdfdfffffffffffffffffffffffffffffffffffffffffffffffffefcfcf5 +222a3837312d336e49301d34392237348f61282b2126272c342a2f5d9f92 +5c1c295b3a88a5e928383a576c34444c535935131a471e75cbb6bfba5c69 +868cc1bcc0b7b252578a98b7b7c2aeb6b0b3b5b5b7b8b7b5aeb6503e4a1f +5d87a7a7aeafaaa79c54335c294b9497a599a7a6a4a3a19e9b999c9b9c9b +9c9ca0a494999d9b96929294979d9d9692939594a28f93908d918a90928d +88878a8d8e8d87888784858989888685817d7e83837e7e7d828073625d63 +5b6571777877787b7b7672757773706e77626e776f70737369646c716767 +6e6d69686a6b6a6765676d676566636669686b63665e6b635d5a5d616769 +635b5b605f5d5f5e5b5f635f5b53515b57555e5550545756524d4d4e504f +4d4d4d4e4c4b4e5051504d4a494a49484748484747484949484646484541 +4444444444444444413e3d42494b463f3f3d3938393b3b3a3d37383a3636 +39383635373838383634373737363635333234333232313131323031312f +2f31312f2d2c2e333b46443953911c1d1a1c1e191d1b1d1b0d0202010735 +48363d4a3a320a2e3c3c3023252730202619152642ccf7e6d99c8946261f +1c1e1d191b21151e222426232226292b1b2e2927231e2823222425201c1b +1a1d1b1a181e291f3532251b22261c131b1c22261f14161f1b1c191c2527 +23232d23261f2a1f2221251c282f231e262723251c1e22111c4f90a7bfc9 +cac8c6c3bdbfc2c5c6c2bdb8c3bfbab5b3b5babeaaa6a6aeb8bab2a9a0a8 +b4bcbcb4aaa3aeb7bfbfbdb8b3b0b3bcc5c9c6c0bebebfc4c9cdd4d8dde0 +e0dfdfdbd7d4d5d5d5d7dadad9dadee0e4e5e5e6e8e9eaebe9e9e9e9e9e9 +e8e8e3e3e5e6e6e6e6e6e9eaeaebeeeeefeff0f0f2f2f2f2f3f3f7f7f7f7 +f8f8f8f8fbfbfbfbfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdf9 +f4ed2228291c12101d5a2d12062329111d146c4318231e231f212a1d1f43 +7a6a390005391e7091d71322203c53181d222c361b000c370751967c8b94 +4d627c7495868a8da04c537a6d776a7167787b7d766d67666a70778c3834 +4e265f7574666d7174746c2b174b22427a6d6a505958585c606263636663 +605b5752535750595d5b58545658595f5d544e505150604f5655565a5154 +534b4443484e525147464745464b4e4d4b4a464243474944494744413a34 +40504c50504b4340434646403c3f41414144513f4b4e433c3a3d4040484a +403d423e3837393a393635363a33343533363a393c343a313e36302d3034 +3b3d372f2f34333133322f333733302826302e2c352c272b302f2b262627 +2b2a26262625232225272a2b2a2726272623242525242526272728262729 +26222525252525252525221f1e232a2c272023211d1c1d1f1f1e211b1d1f +1b1b1e1e1f1e1d1e1e1e1b191c1c1d1c1c1b1c1b1b191818171717181415 +151313151513121113161b26261c347405080406070205020a0b01000000 +00222f1a1b241410001f2c2c21141716200e140700112db9e7d6c98c7936 +2e403847423d3d3c3937323c453e4048383b3c4248423c3e52453f38413b +3b35393f463e2c45474248433d3c3e3e3b38454242423b323239403f3f3f +3d39373842412d3e4951463d5042383a3f3d383535373d3e3f5544404e94 +d7e8effefafaf3f7f5f4f6f2f1f6f1f1f3f2ebe3e3e8f3eaddd5d8e2e9ea +e3dbd5dbe8f0efeae1dedde4eff4f1ece1e2e3e7ecf1f6f8f6f2eceaebf0 +f3f7f9fcfffffffffffffdfcf9f7f6f6f7f7f6f7f8f9fafbfcfdfafafbfc +fdfefffffffffffffffffffffffffefefefdfdfdfefefcfdfdfdfdfdffff +fffffffffffffffffffffffefefeffffffffffffffffffffffffffffffff +ffffffff273f3f3b2c5e9ef0bad288272b36859bba68522b151d1d1b1100 +1259370000003648528d114118272335ff585458726140202e350f589d89 +89934f60675d7f736e7b9d54526e5f756b797b7a73746d766b656e777080 +6d795f4b525767655b627a867555434b2b4c58526a646d6e6961615b555b +58755f5c5a64716c59615e575d5b5558596366595f625e5f575b59525e5f +4e6260585750575852564f4a4e535453535a514b584f4c494e5054545257 +4e192535213d474d48424b4e4d4946464d4a4659550918534443484c4613 +134443414447474340434644413f40424244494645493e3d3c3b3b39393a +43414862533f31403c3f403d3d3e41423b433a354241383d3c39393b3a37 +363938363332313131314863342f3c2a332e353330303233302c34302e2f +302e2c2c302d2b2c30312e2b2f29272c363831292b2a2a2b2c2b28262928 +2827272829292b29292b2925262a28282827252425252625272929262425 +2525242424242324212524252720212d34791c2725282c2c302d2b271d0f +0d1318406d65556564512438513b434c575f5b8c988fb462413f32304543 +3b5320322a39342f2f2e2b29242e342d2f37272a2b3137312b2d41342e27 +302a2a24292f362e1e3739343a35313032322f2c393636362f26262d3433 +3333312d2b2a32311d2e3941362f42342a2e33312c2b3234342e28382019 +286eb5cddbf0f1f2eaebe9e8eae6e3e8e3e3e5e4ddd5d5dae7ded1c9ccd6 +ddded7cfc9cfdce4e3ded3d0d1d8e2e7e4dfd4d5d9dde2e7eceeebe7e3e1 +e2e7ecf0f4f7f9fcfffffefdf8f7f4f2f1f1f2f2f1f2f3f4f5f6f7f8f8f8 +f9fafafbfcfcfefefefefefefefefdfdfcfcfcfbfbfbfcfcfcfdfdfdfdfd +fffffffffefefefefefefefefefdfdfdffffffffffffffffffffffffffff +fffffffef8f318353c3b2c588cdcaac889261d24758ead625434232d292c +2f2f5fa96e1a2f45989f85a5193c0d181321fa3e40475c4d30152836186e +c8bcbdb8586a8b98cbc3b8b4bb63608893b9b7c1b2b0b2b9b1bebab5b7bb +b0b5908756405d789baaa5a7b0b4a0795c5b325b7c85a39fa1a2a09c9f9e +9aa29fbaa0999298a29e919d9a959b999295959fa0949798929694999488 +8f907d94928c8e878b8a8288858184878685838a817b887f7c7b7f7f7f7f +82877434303722466071767276797a767373787169776e223171666a7476 +632b2d616263676a6c68676a6c6a6565666a686a6d6a666a5f5e5d5c5c5d +5d5e646269837460505f5b5e5f5c5a5b5e5f565e55505d5c535856535355 +5451505352504d4c4b4b4c4c627d4e4956444c484f4d4a4a4c4d49454c48 +4647484643434542404145464340443e3c414b4d463e3f3e3e3f3e3d3a38 +3b3a3837373839393a38393b3935363a3838383735343434343335373734 +323333333232333332312b2f2e3540392e36438214181a1d1d1a1c1b1c1a +100400020429524737464538122b412b3039414a447581789f4d2c2a1d1b +302e263e172921302b26262522201b252c25272f1d2021272d272123372a +241d2620201a1c222921112a2c272d2823222424211e2b2828282118181f +26252525231f1d1d2522101f2c34292237271f222725201f2323251f1a2a +120a15599cb0bacbcacbc3c5c3c2c4c0bec3bebec0bfb8b0b0b5c1b8aba3 +a6b0b7b8b1a9a3a9b6bebdb8aeababb2bfc4c1bcb1b2b5b9bfc4c9cbcbc7 +c4c2c3c8cfd3d7dadfe2e6e6e5e4e2e1dedcdbdbdededddedfe0e1e2e4e5 +e3e3e4e5e7e8e9e9ebebededededededeeeeededefeeefeff0f0f2f3f3f3 +f5f5f7f7f7f7f9f9f9f9fafafafafcfbfbfbfdfdfdfdfdfdfdfdfdfdfdfd +fdfdfdfdfdfbefed1b342b210a3874c388a46a1112185c6c8a403c231622 +1d1a17103b844f000a1b6772648b022800050009e3231b1c352c16011826 +004892838c97536c89849a847987af6a6b856d7c6d77797f83837475675e +657073897a886b607b7f746b6a707e8572534651385e6e646c5d61605f5a +5e5b59605d795e565158615f525f5c565c5a565959616354585a52555156 +544e58594659534a4a43494d484d474046494948474e47414e4542404748 +4947444b4111223626434b4d45383e41413f3c3c43423f535005144f413d +414844111243403e3f40403c383b3d3b3736353837393d3a393d3231302f +2f2f313237353c56473324332f3233302e2f32332d352c2734332a2f2f2c +2c2e2d2a292c2d2b2825242423233b56292433212c252c2a2727292a2925 +2c282627282626262623212226272421251f1d222c2e271f232323242423 +201e21201e1d1d1e1f1f23211f211f1b1b1f1d1d1e1d1b1a1d1d1b1a1c1e +1e1b18191919181816161515121613182019121b26670003040708040403 +090a07000000001b3f2f1b27261a001b321c222a333934656f668c3a1917 +0c0a1f1d152d3d3a2b373939302e2d363d474b3e3637333b41464a484b55 +453b39333c373c3a4032333c3649484c47454343444647473d3a3a3b3732 +353d302e2d2f30302e2d3a3f37363b363d3e4a413b3c3f3b3a3a323a423d +3a45424438406a9ed7f1f2fafdfcf4f0f7fbf7f5f8f1eceff3f1edebdcea +f4edddd5d8def1efe9ddd4d6e3efeceae5e1e0e4ebf1f1efeae8e8eaecee +f7f8f8f8f6f1eae6f0f0f2f4f6f9fcfefffffffffffffffffcfcfbfaf9f9 +f8f7f8f9fafbfcfdfdfefefefefefefefefefffffffffffffffffffffeff +fffffffffffffffffffffffffffffffffffffefeffffffffffffffffffff +fffffffffffff7ffffff2c4a401a6ee08affa9c5c7432d5ea2bdf6244637 +201a1201002c4f1c00000035410000690e1a0c131231ff5f566056444923 +162b0a5f9f878d93484b6d6264646d7e833b3560718d786b74887f7a707f +6b6d7e706a7c7f845c2e4c676b6d666c7b867777815d254c645f69666f67 +6e70616164555f5e5968686964685c615e5a5f5f5c605e6463605d676460 +5a4f56575a5a5566685c5351555d5d4c5955495250555c5656554c465056 +49544d4e484c513942362a41474b47434f554b484a484646484c4e202140 +3b4644434e271c343249524746434243454342413e414041464241453b3c +3c3b3b3b3c3c353e3f3f393a36343c3d3b393b3e3f3e3d433c373d3c3537 +3e3a383b3c3a38383938363533333434374c2c2b362c332f312f2d2f3030 +2e2d322e2c2d2e2d2c2d312e2b2b2d2e2d2c292c2f2e2c2a2b2d2b2a2a2a +2c2b2927262628282728292a272627282724252928272625252525252524 +25272624222323222122232322212828241b272428292e793d2527292a30 +302f2c271d0f0b100f2f48504c4f574b1c42afff97a6b9a18056935c3945 +516860685b4e4e582f2c1d292b2b22201f282f393a2d2526222a30353937 +3a44342a28222b262b293022232c283b3a3e39373737383a3b3b312e2e2f +2b262931242221232424221f2a2d252429242b2e3a312b2e312f2e302f37 +3b31272e262417204a80bddadfeaefeee6e2e9ede9e7eae3dee1e5e3dfdd +d0dee8e1d1c9ccd2e5e3ddd1c8cad7e3dedcd9d5d3d7dee4e4e2e0dedee0 +e2e4ecedefefede8e3dfebebeceef2f5f8fafffefdfcfcfdfefff7f7f6f5 +f4f4f3f2f6f7f8f9f9fafafbfbfbfbfbfbfbfbfbfffffefefefefefefefe +fefffffffffffffffffffefefefefffffffefefefdfdffffffffffffffff +fffffffffffffffff7fffdf41d3c391465cf70eb8fb2bc340f3c8eafe61a +46402e2c2723327ba66a30244295a3431e871d1e090a021fed4e464e402d +3818102e1578cabdc1b54d52919db1b6b6b79e4940749ec9bdaca4b5b5b4 +aabcb1b5c2b3adb7ab99582759879faeafb2b3b5a59d9a6c2b588791a2a0 +a298a1a89d9fa598a09f95a29e9a9399939f9c989d9d9a9d9a9e9d97929a +93939890928e8c8a85979a908a88898e8c7b8c8b7c858185898383827975 +7f86798378797a7e78534b3428485e6f77757b7e767375736c6a66656533 +375a5a6c6f69683c344e4f6874696b68696a6a686566656966676a666266 +5c5d5d5f5f616161595f60605a5b55535b5c5a58585b5c5b585e57525857 +505258545255565452525352504f4d4d4f4f5166464550464c484b494749 +4a4a47464a4644454645434446434040424342413e414443413f40413f3e +3e3e3e3d3b39383838383738393a36353738373435393837363535353434 +333233353432303131302f303232313032322e2b403d35323d8235161c1e +1b1e1c1b1b1910040002001b313732353d360b359ffc8593a38b693f7c45 +24303c534b53463939432623142022221917161f263032251d1c1820262b +2f2d303a2a201e18211c211f2315161f1b2e2d312c2a29292a2c2d2d2320 +20211d181b2316141315161614121b1f17161b161f212d241e2124212224 +20282b2319201815040b3368a2bbbfc8cccbc3bfc6cac6c2c5beb9bcc0be +bab8aab8c2bbaba3a6acbfbdb7aba2a4b1bdb9b7b3afb0b4bbc1c1bfbcba +bbbdbfc1cccdd0d0cec9c6c2ceced2d4d9dcdfe1e9e8e7e6e6e7eaebe3e3 +e2e1e0e0e0dfe1e2e3e4e6e7e7e8e8e8eaeaeaeaeaeaf0f0efeff1f1f2f2 +f2f2f4f5f5f5f7f7f7f7f7f7f9f9f9f9fbfbfbfafcfcfbfbfdfdfdfdfdfd +fdfdfdfdfdfdfdfdfdfdf7fbf6ee203c290046b159d16c8a9c1d0532758c +c2002c2b1f1e140a0b4e7b4313071b677217006d080d0000000bd7322226 +1b0d1e04001b00509483919a505c9187796c6f849556547b81937a6c7a94 +918b788068636f6466818a9269487c947b74777e82877676856737648176 +6f636960686b5f5e63555e5d556562625c6159605d595e5e5b615e63625d +5a625d58554c54555758515f5d5047474b5658475451434c494b524c4c4b +423f4952454d42413b434936463f36505453473a40423e3d3f3e3b3e4247 +4b1d203f3a4542404f291e3533485144423d3d3d3f3c3b3a363735363a36 +35392f303031313235352b3233332d2e29272f302e2c2c2f302f2f352e29 +2f2e2729312d2b2e2f2d2b2b2e2d2b2a262626262a3f21202d232c282826 +2426272727262a2624252625262727242121232423221f22252422202125 +242323232423211f1e1e1e1e1d1e1f201f1e1d1e1d1a1a1e1d1c1c1b1b1b +1d1d1a191a1c1b19161717161516151514131919130e201d191720671e01 +060806080403090c08000000001023231b1a221b002590ed7785957d592f +6c33111d29403a42352828323134353835413533363b3932302e323c2b33 +3534332f333f3c373b363c353a39393846554a4a3d40383838352f2c2c2d +33323436332f3138363433363a3c3a373b3d3b34443d4b4a3e404a515045 +3a373c44453c3c37403b4243422c61a7e0f2f6fafbf9f8f3f1f8f7f6f6f6 +f3f0eeefeee9e4e5ebece2d6d6dee9eeece4ddd9e9edefede7e2e1e1f2f2 +f1f1f0ede9e7e9ecf0f6fafffffff9f8f5f4f2f1f0f0f7f7f8f9fbfcfeff +fffffffffffffffffdfcfcfbfaf9f8f8fbfbfbfbfbfbfbfbfdfdfdfdfdfd +fdfdfdfdfdfdfdfefefefffffffffffffffffefefefeffffffffffffffff +fffffffffffffffffffffffefbfdffef2f483d57ffc687bd85aab43550eb +afdcff393430310d0200224a2700070044440000008c391e14171235c840 +5a635f4c493d332c0d6892788a975c5f6c70717e77809586495d67808779 +83977e91768178748277726a788d7e3e51586364636b7c88769089692f3f +4f5d635f5f6d68686b676d6c7f6f6c74676b615f5c615e585c5c5b615a58 +5b6b5f6f6b585850574d515f60575551545a53595d4f4f53475755595f4f +52554e525258464f5357504e555a66432d4043474844505449494f4e4c52 +59555129213e42453b464e281d3838474c4342404041403e3f4140424141 +45413d413b3b3d3e3e3d3d3d3a434233363f43383c3b3836383b3c3c393b +3b393a3b39383e3936393b3b383637383836343435372f392d2c33323430 +2f2b2c2f312e2e31302d2b2c2d2c2d2e2f2d2a2828292a2b252b2e2b2422 +272d2a2928282929282726272b2a28272829252525272625252827252324 +2526252426242425252322242523222325252423181c25222921282d2374 +5b2026282631312f2d291c0f0a0e0b1b152228253f4a1b2a1542363b3345 +4a42484f4543623c48564849454b2326272a27332725282d2b242220242e +1d252726252125312e292d282e272c2b2b2a38473c3c31342c2c2c292522 +22232726282a2723252c2a28272a2e302e292b2c2821312a38382c303a44 +43382e2b323c3b332f2a302a2d2d27104287c0d4e1eaebe9e8e3e1e8e7e6 +e6e6e5e2e0e1e2ddd8d9dfe0d6cacad2dde2e0d8d1cddbdfe3e1dad5d4d4 +e5e5e7e7e6e3dfdddee1e5ebf1f6fafcf2f1efeeecebececf2f2f3f4f6f7 +f9fafdfdfefefffffffffaf9f9f8f7f6f5f5f8f8f8f8f8f8f8f8fbfbfbfb +fbfbfbfbfdfdfdfdfdfefefefffffffffefefefefdfdfdfdfefefefeffff +fffffffffffffffffffffffffffffffffae41f352f47f0a85c8f5a889b1b +25c59ed3fb2624242a18263e7ea663203c399f9d381c1ba64822100b0024 +c03a4e514935373230311b85c2afbeb95c618eabb9c9bcb6b194546f8db3 +c0afabbca7bb9dababadbcb6bab0b1b28945667e97a5acb3b6bca8b9a57a +354b718e9d9c9aa8a19f9e989c9bac9e9ba59ca19a98979e9c999d9d9c9f +9692909d8f9d948896939384838e8e858483868c828486797f8577858183 +8676797c787c7d86747a7b82828180776f412a465c6f7977797c70717574 +6d707268623732535f68666c65382f4d52646b656666666865636466676a +6767696561655f5f6162626262625e646354576064595b5a5755575a5b58 +54565654555653525853505355555250515252504e4e4f51495347464d4c +4d494a46474a4a47474a49464344444344454644413f3f4041423c424542 +3b393e443e3d3c3c3b3b3a3938393b3a3837383934343537363535383735 +3334353634333432323333313032333130313333323122262f32423a3536 +327d53111b1d171f1b191a19110500030008010d120f29360c1d05322428 +1d2f342c323a302e4f29334133343036181b1c1f1c281c1a1d2220191715 +192312181a1918141824211c201b211a1f1e201f2d3c313125282020201d +191616171b1a1c1e1b1719201e1c1b1e2224221c1c1c1912221b2a2a1e21 +2b343328201d262f2f241f1920181a1812002d70a9bac4c9cac8c7c2c0c6 +c5c4c2c2c0bdbbbcbcb7b2b3b9bab0a4a4acb7bcbab2aba7b6babdbbb7b2 +b1b1c2c2c3c3c3c0bcbabec1c5cbd2d7dddfd6d5d5d4d4d3d3d3dcdcddde +e0e1e5e6e9e9eaeaebebecede7e6e6e5e4e3e4e4e7e7e7e7e9e9e9e9eeee +eeeeeeeeefeff3f3f3f3f5f6f6f6f7f7f7f7f9f9f9f9f9f9f9f9fcfcfcfc +fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfffcf4e022372230d58e49783863 +7c041eba82acd4050d14200a0c164b733f03201874711400008d35130400 +0012a91a282924161f1e1f1b0059887590a1646e8d8f79776c7ca3a16a7b +78888b7e90ab97a782857369706568677a91814f777f716d7781868b758f +8e74455b72786d6064726c68666165647567656e666d65635d625d595b5b +5a60585758685f6f6856554e574d52605f544d4849514c565c514f524554 +505157474a4d484e4f58464c494c4546525b6e4f3f5456554c3e3d40393d +4243424a54525028224043473b47512b1f3a39484b42403d3d3c3c383b3b +383836363b3733373131333436363636323938292c35392e31302d2b2d30 +312f2b2d2d2b2c2d2c2b312c292c30302d2b2c2d2d2b2727282a222c2221 +2a292d29272324272a27272a292623242726272829272422222324251f25 +28251e1c2127232221212121201f1e1f21201e1d1e1f1d1d1b1d1c1b1a1d +1c1a191a1b1c1d1c1d1b191a1a1817191a18161719191817090d1617221a +191b15623e00050702090402090c0b030001000100000000111e000d0023 +161a0f21261e24291f1d3e18223022231f253c4247382d4437323a43483f +3d3e3a404436262d464e42363b383f3c4136363338404948393f3436373a +3d403e3e3e3f3d3e4144413c3b3e38393a3c3e3f3c39474c46434e484f4b +47454443413b3a3d3c3e383541353f2e382843515f4979bee3eefdfffff9 +f3f7f2f6f9f9f3efeeeff3eee7e3e5ebeceadcd8d7dee9eeeae4dcdde1e8 +eff1eeeae0e3e7edf3f7f9faefeeecebecf1f5fafdfefffffffefaf8f5f5 +f5f5f5f5f5f5f7f8f9fbfdfefffffffffffffffffffffefefefefefefefe +fcfcfcfcfdfdfdfdfcfcfdfdfdfdfdfdfffffffffffffffffafbfcfdfeff +fffffffffffffffffffffffffffffffffffef9f2fff0505d3c8cffe47fff +ffa0562e80ffd4d2e615373c2b1003344c0d00001c60330000155f874f63 +131b2673ff535856624f2d2b331f0669907a8d8d4f536972767f80869871 +5c6678847a454564326a40597c81808070636c7f6a304e5f6765636b7f91 +72907b6c444b4e64686a6471636365616e66766262756465635b5c605d5a +5a59585c5d5f66774e5e6b6150535b545a5a5f65585c655e525b58675e58 +5a56575861655c535f605a5b55514d534a47455468492b3d41484b464e52 +4f56515257535354572520454b4b404b4d261b3d4045443f414040403e3c +3e434042404144403d41404041403f3c3a393d3c41383f3a403c3b3c3a37 +37393b3b38383b3b383b3e3a3b3836373838363534363836333235383532 +34302f34322f302d2d32322e2e34302e2e2f2f2d2d2e2d2d2c2a28282a2c +2b2a282727282a2c2a29272627272625272a2d2d2a272727272727282827 +27282623212225272623292625262523242625242324262726252e272228 +242228351c6d611e2627252e302e2c271c100b0d0e1612171a1526412325 +3f444c3e4a4049544b434a4a454840474e5f41462e34392a1f3629242c35 +3a312f302c323628181f384034282d2a312e332828252a323b3a2b31282a +2b2e3134343434353132353835302f322c2d2e303233302b373a34323c35 +3c3835333436342f2e312e302c2c382e38262d1931374025529bc9d9e8f1 +f1e6e0e7e2e6e9e9e5e1e0e1e7e2dbd7d9dfe0ded0cccbd2dde2ded8cecf +d5dce2e4e1ddd3d6dde3e9edeff0e4e3e1e0e3e8eef3f6f7f9fafaf8f6f4 +f0f0f0f0f0f0f0f0f2f3f4f6f8f9fbfbfffffffffefefdfdfbfbfbfbfbfb +fbfbfafafafafbfbfbfbfcfcfdfdfdfdfdfdfffffffffefefefef9fafbfc +fdfefffffffffffffffffffffffffffffffffffffff8ffe53d492a77f9c0 +50f0f47a3b145bf6c1c6d7021e2925253c87ad631c2353a68545234184a1 +58610a0e1866fa4a4c474a381b2030241689c2b4c1ad4d5085a1b1bcb9b2 +b07d637696aca8716683528859739eaaafb9b9b0b1b1803c678699a4acb3 +bdcaa9be9c804a567095a2aaa6b39e9790858b81907f849e969ea39d9c9d +9d9b9b9a999a989698a578848e8b8c9496888984888e828690887b817b89 +8682847f7d7d84857c76818480837d77717b7d7d7373734728455c737f79 +7775737a7271726c666263302d57656d697062332b525862636365666667 +63616368676a666768646165646465666463615e615d6259605b615d5a5b +595656585a5a5353565653565854555250515252504f4e5052504d4c4f52 +4f4c4e4a494e4b484b48484d4b47474d4947464746444445444443413f3f +414342413f3e3e3f41433e3d3b3a39393837393c3d3d3a37373736363738 +383737383633313235373532373433343331323433323132343534333831 +2c383d3b353e2b76590f1b1c161c1a1a191911060101000500020500112d +14182f343a2c372a333e352d343532352b32394a2c3123292e1f142b1e19 +212a2f2624252125291b0b122b33271b201d2421261b1b181f27302f2026 +1c1e1f222528282828292526292c29242326202122242627241e282c2622 +2e272e2a27252526241f1e232325201d291c261319061d262e154388b2be +cdd6d6c8c2c6c1c4c7c5c0bcbbbcc1bcb5b1b3b9bab8aaa6a5acb7bcb8b2 +a9aaafb6bfc1bebab0b3b9bfc6cacccdc4c3c1c0c4c9d1d6dadbdfe0e2e0 +dddbdadadadadadadcdcdedfe0e2e4e5e8e8ededececebebececeaeaeaea +ececececededededeeeeefeff2f2f3f3f5f5f5f5f7f7f7f7f9f9f9f9f5f6 +f7f8fbfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfff4f6df414b2064 +e1a83eddd5561d0052eaa39eb000081b191219597832000836845d1d0020 +6588475501050b55e12b26202819030c1d0d0058857793985a63898d7b76 +727fa38b7d868c91834e557d51885566838078746a606e806b3a6e81736d +77818a956f8d7f775a6a7282726d68766866655f6c6273605f7465696760 +6062605b59565559585c6376505f6e6350525c575f5e606452545b564f5c +5d6e635a5c5756545c5e554e5c605b605a524547424144546f543d525758 +51413d3d434c47484f4e5053592823474c4c414e512a20414246443f3f3d +3d3b3a383a3d383835363a36333736363737383634323532372e35303632 +30312f2c2c2e30302a2a2d2d2a2d312d2e2b292a2d2d2b2a292b2d2b2625 +282b28252925262b2b282825252a2b27272d292726272927272827272624 +2222242625242221212224262322201f1f1f1e1d1f222323201d1d1d1f1f +1d1e1e1d1c1d1b1817181b1d1e1b201d1a1b1a18191b1a1917181a1b1a19 +1f18131d1d1b19230e5b44000506010603020a0e0b040001000000000000 +0014010820252c1e281c2530271f262423241a2128391b203e3943443e4e +382d313a453e40423232333d403a3734384338343a39413a3c383b3c3b3c +3943323032353a41454542404142434443414245404549474543413d2a40 +3e443c3a3b3e4b47423f3f3d3d3e46464147564b513f43435e5a6e55463b +74b6e6eaf2fffff9fbf7f1f2f6f8f5f0ebf1f3ede6e3e5e7f0eae0d8d5dc +e8f1ede6dedce1e9eff2edebe7e6e8ecf1f5fafbfaf8f2eeebeae7ebf0f6 +fbfffffffffffffffffefdfcf8f8f7f7f7f6f6f6f8f9fafbfdffffffffff +fffffffffffffffffffffffffffffffffffffefeffffffffffffffffffff +fcfdfdfefffffffffffffffffffffffffffffffffffffffef9fbffd9374a +3149e8a290fff69343221e6dbbffff284b300e00384c190000195a430d00 +00473757594f0f0a0d7fb5355b52554a302b2d250566907e8e884d5d6476 +928b9b9aa8494b638588803c1f2d0f411c436d83847869666a7e64304a61 +6e6f686175846478765b324f535d59635c62707230173d1e44293069685e +5f585b5b5d5e5b595a595d656e70242a556059575b6363282a615b68673e +2e422e50383563545f4e38446258563a49414a5459594d5149526c5b2d3c +3b464a475054575e4442544c4f615c2a26423f514c4356362032374a4a41 +44444544403e41463c3e3d3d413d3c4042424242403c38363c3a413d4235 +3b3d383c3e3a36373a3c3e3d3f3d383a3c3837393a383635363732343634 +32313336372e352f2b322f2d302d2e302f2b2d312e2d2e30302d2b2c2c2e +2e2d2a292a2b2d2a2726272a2b2b2c2a28272727252425272b2c2a282727 +282929282828272526232122252726242a27262626242427222222232324 +24241e222343455137221e655a2129282a2d2f2b2a261c100a0c0b152c26 +252625451c1b40404d574d4b4f44635445513446504d545c4246302b3536 +30402a1f232c3730323424242530332d2a272b362b272d2c342d2f2a2d2e +2f302d372624282b30373b3b3836353637383735363934393d3b39373531 +1c302e342c28292c39353231313131323535333b4f454e3c3e3b4e445235 +2217579dced2daeef1e6e8e4e1e2e8eae7e2dfe4e6e0d9d6d8dae3ddd3cb +c8cfdbe4dfd8d2d0d4dce2e5e0dedddcdee2e7ebeff0efede9e5e2e1e0e4 +eaf0f5f9fafafefdfcfbfaf9f8f7f3f3f2f2f2f1f1f1f5f6f7f8fafcfdfd +fefefefefefefdfdfefefefffffffffffffffffffffffffffffffffffefe +fefefbfcfcfdfeffffffffffffffffffffffffffffffffffffffffffffce +24341d32cc7f65f4d17934160e5aa1f5f71830201c328fad62262852927a +4017529d6f74574000000c7aa11d49433d321e202a2e1788c4bac3a74b54 +7396b9b4c0b7b852526f9aa6a15f3d4a2b5a2b50809ca8abb1b8b7b87e3f +61849eacb1abb6c1a1ae9a713a5c769094a6a5aaaea3542e4b274a34458b +979aa6a09d9a9d9f9c9b9998989b9e9b494b7285929591928c4d4b827d8b +8a604d5e466b585785757c68505c7a706e54655e6772777e80897976785c +2d455b737f797774757c5f5b6b5d5b6b6230315259737567684130444d64 +6965696b6c6b6765666b63666363676360646666676765635f5d605b625e +63565c5e575b5d595556595b59585a585254565251535452504f50514d4f +52504e4d4f52534a514b464d4a484b48494b4a46464a4746474947444243 +434545444140414244413e3d3e414242403e3c3b3939373637393b3c3a38 +373737383938383837353633313235373533383534343432323530303031 +31323232282c2d535e6a442b2d6e52121e1d1b1b1b19191a130802020004 +19100d0f0c300b0e30303c463a38392e4d3e323e21333b383f472d31231e +282923331d12161f2a23252717171820231d1a171b261b171d1c241d1f1d +22232324212b1a181c1f242b2f2f2c2a292a2b2c2b292a2d282d312f2d2b +29250f2321251f1c1d202d292524242323242b2b262d3f353d292b283e36 +462816094587b6bac2d3d6c8c8c3bfc0c3c5c0bdb9c1c3bdb6b3b5b7c0ba +b0a8a5acb8c1bab3acaab1b9bfc2bdbbb9b8bbbfc4c8cfd0cfcdcac6c5c4 +c4c8d0d6dbdfe2e2e8e7e6e5e4e3e4e3dfdfdedededddedee4e5e6e7e9eb +eeeeefefefefefeff1f1f1f1f1f2f3f3f4f4f5f5f5f5f7f7f8f8f7f7f7f7 +f9f9f9f9f7f8f8f9fcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfa +f4c828371422b76b55e3b4581700004986d0d0001b110b17647a35000432 +755d2100216c48584a39000000648901251c1b16080c17130055847a9595 +596f86959e889498b5616e879f9c8e4b3148376e406186968e8072707385 +6538677e76737c767e855e727464476f7a7d6461565e6f743a244e305638 +3c72695c5a545f61605f5854535258616c7028305c665b565d686a2e2e63 +5863603b2e48385c413c6a58604d36426056563b4e4851585552474c4550 +6c60394c5056534442434f5a403e514a4f635e2c294540524b4358392534 +38494941403f403e3b393b3f343434343834323638383b3b393632303430 +3733382b31332d31332f2b2c2f31302f312f2b2d2f2b2a2c2f2d2b2a2b2c +2a2c2c2a2625272a2b222b25232c29272825282a2925262a2726292b2a27 +252626282827242324252724212021242525252321201f1f1d1c1d1f2122 +201e1d1d20211f1e1e1e1c1a1b1817181b1d1e1c211e1d1d1d1b191c1717 +1718171818180f131438404c281010533d000a0906050301090e0c050000 +00000a0000000013000020202c362b292c214031242f13242a252c341a1e +3f2d2f3e32393d4b4a46493c414c41484c4c444044443e3b3b3539384544 +4d4f42424147413c272f383a3e4143423d3939383736373a4044353d413c +38373633354a434d434640403e3e404548433b373a3c3c3f42393b36272e +3e30404347481c3672c1f4f6f4fffffff9f4f2f4f6f6f2efecedf1f1e7dd +e1e7ebeae4dedbdceceeeeeae4e0e0e1f4f4f1efedeae7e6eef2f8fbfcfd +fffff0f0efeff0f1f2f3f7f8f9fafcfffffffffffffffffffffff6f6f7f7 +f8f8f8f9fdfdfdfdfdfdfdfdfefefefffffffdfdfefefefffefefefeffff +fffffffffffffffffffffffffffefffffffffffffffffffffffffffffffe +f8fcfcdc2a456f5428464bad6a87211c1c123b8976101d12064a37020600 +0948500d002d47360061512e15110b9ba1475c575f583d4c491e075e8e7c +878856734d567e70826a9f5b52797e5b7b917c5c495c495f4161897c6a68 +64858658595c6f74715d697164717e6d39555664626264726c79522f421f +3a262b4c556d6d5958555a5d58575a595b5e656a221e4a4a6259525b6a1f +154c4f6c6f3f1c280e2e0e175d58745f1b1d585f4f12281123525959474f +474c5e50303a353e4443515c524e1f1223203656652926433a4646425e39 +20323945444245444544413d40443d3e3d3e423f3e43404040403e3c3738 +3c41443c3c3a3e3c363c403c3635393c3e403d3a3b3d3e3d373b3d3a3635 +37393334363533323435342e32302d3231322c2c2c2c2c2b2c2c2b2b2d2f +2e2b2a2c2b2d2e2e2b2a2a2b2a2b2c292423272b2d2c2a292a2927252223 +272829292828272828272727252225232223252625242927252625232325 +222426252323242621271e2728504b3420595c2327252b282d2927261d11 +0a0b1238879ca3a991a048235754464a48465c52434e4e4f54464346463a +4147311f2130242b2f3d3c383b2e333e333b3f3f37333737312e2e282c2b +383740423434353b35301b232e3034373938332f2d2c2b2a2b2e34382931 +35302c2b2a27283e373f35352f2f2c2e32393c3a322b292b2e3339323530 +2125301e2a28292a001955a6d9dedcecebece9e4e4e6e8e8e5e2dfe0e4e4 +dad0d4dadeddd7d1cecfdee0e2ded7d3d3d4e7e7e7e5e3e0dddce3e7edf0 +f3f4f6f8e9e9e9e9eaebecedf2f3f4f5f7fafbfcfdfdfdfcfcfbfbfbf3f3 +f4f4f5f5f5f6fafafafafafaf9f9fcfcfcfdfdfdfdfdfefefeffffffffff +fffffffffefefefefffffffffffefefdffffffffffffffffffffffffffff +fffffffff8cf152f5b3e122b2b90577e26292c1c3b877e1b2424318d9059 +44354d8e8d443670a8951980522106070a978b2e4a45463e284146271c83 +c5b8bca9526551648f83947aa86157828d6f94ac977b6b7858674c74a7aa +b3bab5c1a0636a799cafbaa8adb2a7aca886436279979ea3a6b1a3a57344 +4f2742323f6b7fa2aa9898949a9e9999999693919390433b626a96948687 +8e3c316569878a59333c1e402532787089712c2e66705f243c27386a737c +79877a736d553146576d797575776b663527342c3c5a662d2c5152687066 +70442d444f5f63666a6b6c6b686465696466636468656267646465656563 +615f6062655d5d5b5f5d555b5f5b5554585b595b58555557585751555754 +504f51534e4f52514f4e5051504a4e4b484d4c4d47474747474645454444 +4648454241434244454542414142414243403b3a3e4241403e3d3c3b3937 +343537383939383836373837373735323533323335363433373533343331 +313330323433313132342b3128374169583d2f6254141c1a1c181b191a1a +140a030205267182888f75883816474435393533463c2d383b3c41332e31 +31252c3224121423171e22302f2b2e212631262b2f2f27232727211e1e18 +1c1b282730322729292f29240f172224282b2d2c272321201f1e1f22282c +1d252924201f1e1b1f322b342a2b25252221272b2e2b231d1f2121252a22 +2520111623121f1f1f1f00074391c4c6c4d1ceccc7c2bfc1c1c1c2bfbcbd +c1c1b7adb1b7bbbab4aeabacb9bbbcb8b4b0b0b1c4c4c3c1c0bdbab9c3c7 +cdd0d4d5d9dbcdcdcfcfd0d1d4d5dcdddedfe1e4e7e8e9e9e9e8e8e7e8e8 +e2e2e3e3e4e4e6e7ebebebebebebededefefeff0f1f1f1f1f4f4f4f5f7f7 +f7f7f7f7f7f7f9f9f9f9fbfbfbfbfdfcfcfbfdfdfdfdfdfdfdfdfdfdfdfd +fdfdfdfdf8f8ecc71a32543000181e7e395d080f1201175e4f00050a166c +642c1d10286a6e251647725d006142180000007e7310261f2723132d330c +004d81788e966389767f967d8670b177759fa07691a38e756d836b7c5e7b +9d8d7e7a738e875f74777575837070705a687a734d737d846b5f5c6b6c81 +62455f3c5942405b5b6c65525c5b5e5e555152505258646b28295553655a +566372261b4f4e686b3e21331e401b23676078611c1e57605216301b2f5a +5854444a3f44564e3344464d4d44454e4d4e201424223859682e28443845 +4240603c23343a4243403f3e3f3c3b37393d353434353936343936363939 +3836333234373a32323034322b3135312b2a2e3130322f2c2e3031302a2e +322f2b2a2c2e2b2c2c2b2726282928222828272c2b2c2624262626252525 +2424282a282524262527282825242425242526231e1d2125262523222221 +1f1d1a1b1d1e1f1f1e1e1f201e1d1d1d1a171a1818191b1c1d1c201e1c1d +1c1a181a17191b1a1717181a12180f1c234b3c2212473f01080607010300 +070c0b04000000185c696a6a4e662105373425292624392f202b2d2e3325 +1d1e1e12191f3e48607d5f494443423b43393f4a3d484548423e42454343 +3d3a3f3d45434e5243463e362b2e273b2b2e3235363737373b3b3937373a +3d3e383e3e39373b3c3a3f493d3a3735322d3a37363637393938413e3d3b +32322d36403531314d57463a473c293372bbe6f3f4fdfffcf2eff2f6f0f3 +f3f0ededeff0e4e2e2e5e9e8e3ded5dee8f0f1ede8e4e2e6ebf1f5f6f5f4 +ebecedeeeef2f9fffffffffefaf8f6f5efefeff0f3f6f8fafbfbfcfeffff +fffffffffffffffffffefcfcfcfcfcfcfcfcfdfdfdfdfafafafafdfdfdfd +fcfdfdfdfffffffffffffffffffffffffffffefeffffffffffffffffffff +fffffffffffefcffffe43033553e313230310e0d003e3039484252272d32 +3e4b0200001459270000175a1c00005c4c6311130ba3ff4a545662592f42 +4a2903599a838688485b413744314f26633c3f776b233c818b7a7376797c +26447f796a6662768751607276787b6674707577726f3146435c635d6e70 +253f7b6e674c5953582c287677645c52575c55535959625e66703e32574a +5e59545b723c37515a5f5f694c493a49393a4a437383393848535e383c22 +2a42496051544c5561523039333c4143566156563930281d37445b2d2843 +3f413b485c36203941474042434140403f3b3c3f3f413f40444140453e3f +3e3e3c3b3738383e3b38333b3936363c413e3a393a3a3b4038343e403e43 +383c3d3936373837343435343434333332333132312f31312b2e2d292b30 +302b2b2a2b2c2b2a2d302c2c2c2b2a2a2b2c272a2d2a2523262a2a2a2929 +2b2a2826262426272a2b2926252727252628262125242424242525252826 +25262522222423272a282322252925292e221c2b3724224b762323202a26 +2c2825241c0f0a0b0e1f4f544e564e573f0f474e5b4b503f545755495150 +434556668e7c8d912e38506d523c3736352e362c323d303b383b35313538 +3636302d323038364145373a322a1f221b2f2124282b2c2d2d2d2f2f2d2b +2b2e31322c32322d2b2f302d353f332d2a27241f2929282a2d3131303530 +312f2626212a342723233c4635262b1c091655a0cededfeaf2ece4e1e6ea +e3e6e6e3e0e0e2e3d7d5d5d8dcdbd6d1c7d0dce4e4e0dbd7d5d9e1e7ebec +ebeae0e1e2e3e5e9f0f6fffdfaf7f4f2f0efeaeaeaebeef1f3f5f6f6f7f9 +fafcfdfefffffffefdfcfcfbf8f8f8f8f8f8f8f8fbfbfbfbfafafafafdfd +fdfdfdfefefefffffffffefefefefffffffffefefdfdffffffffffffffff +fffffffffffffffffffffed61c1f4431242520291321236d68727e758662 +75818b923f373e5ca977361f6db47335177e5b660d0c0099f53d4644493f +1a374732187fd3c1bba9434a373241304c27633d437d742f4d97a79da0a1 +938c33569aa5b2bab2b19c5465839eb2c2b1bbb4bab59e8d3e566992a299 +9c964a629d8d85697671754c4a999b8f9591979d97959995998f91935b4a +6a668d90838292544d666d72727c5b5442534b4f5d54808e43424f5c6743 +48303a555e7f838e8380755b3649596e797477796c6b4b4033263b435a2e +2d515864656d6d402c4a57625f6768686a6a66626265666865666a676469 +626363636362615f5d625c59545c5a57575d605d59585959565b524e585a +585d52565753505152514f4f515050504f4f4e4f4c4d4c4a4c4c46494844 +464b4944444344454443444743434342414142433e4144413c3a3d413e3e +3d3d3d3c3a38383636373a3b393634363735363836313534343434353434 +363433343330303231353836313033372f3338323544442c31546e141815 +1b151c1a1a1b150b0303000d373730372d3b2f043a3f4a3a3d2c3e413f33 +3d3c2f3241517967787c1f29415e422c2726251e261c222d202b282a2420 +242725251f1c211f27253035292e261e13160f2315181c1f202121212323 +211f1f222526202626211f2324242c362a24211e1b16211e1f1e21242423 +272323211818151e281c1818323c2b1b1f0d0004438bb6c3c2cad0cabfbc +bec2c0c3c3c0bdbdbfc0b4b2b2b5b9b8b3aea2abb6bec1bdb8b4b2b6bdc3 +c8c9c8c7c0c1c2c3c6cad3d9e3e1e0dddad8d8d7d4d4d4d5d8dbdfe1e2e2 +e3e5e6e8eaebeff0f0efeeededecececececececececeeeeeeeeeeeeeeee +f3f3f5f5f5f6f6f6f7f7f7f7f9f9f9f9fbfbfbfbfcfcfbfbfdfdfdfdfdfd +fdfdfdfdfdfdfdfdfdfbfaf4f1cd1e213c21111211160000034d45494a3a +4828435467721e1519348250150040813e02005d44550100007ed51a211e +2a260523341500468e7e8d96577774727052673c7d5b68a1934757959b87 +8386888c3b58918a807e75818b597b8b79778876796b6768697344656a7b +6d5b6b6f294a8f88876d7c73713f32797562625a5b5d504d4f4d56576372 +453d6857615959637d4640575a5c5c6954564d5d4b4a574e79883b3a4857 +643f46303a4f4d5f5051424a52482c3c404b4c454c57575c3f352b213c48 +5f3029423b3c33425b37203840433d3e3c393a3837333336373936373b38 +363b36373737363533323136312e29312f2c2c3236332f2e2f2f2d322b27 +313331362b2f322e2b2c2d2c2c2c2b2a2a2a27272829292a2b292d2b2528 +2723252a2924262526272625272a2626262524242526212427241f1d2024 +232322222322201e1e1c1c1d20211f1c1d1f1d1b1c1e1b161a191a1a1a1b +1d1d1f1d1c1d1c19191b181c1f1d18171a1e161a1f1717262a1414395901 +040108010300060c0b02000000001d170a0b00131500272c3a2a2e1d3134 +342832312424303e66546569343f42503736413341373e343b484153544e +3f3941443b343839413c3e353b3e2f3e3931364b3e3f36393a37312e2f32 +3a3c3c3a3734302d3033312c2e3639352e3e4033352f454c383c41444442 +3e3a493d38372d382d3e30363c393232334b4f48423f2b2464bee3eef9fe +fffef7f1f4f5f4f0edeef0f0f6eee4dfe3e7edefe9e2dadce6eef0efedeb +e6e5e8edf4f8f6f7f6f2edebedf0eff2f8fefffffffffffffdf9f6f4f4f4 +f4f4f6f7f9fafbfcfafafbfdfeffffffffffffffffffffffffffffffffff +fffffffffffffefffffffffffffffffffffffcfcfcfdfefeffffffffffff +fffffffffffffffffffffffff8ffffc43847333e403031723f4f67533941 +4736452a3b4e3f0000001a5c1f0000274d1900002b8a463a0d1e18aaff41 +505c51513c344d900e5fa484879b5b6b44616a435f3967394f787a515a74 +798f8b9298963b475e536c686d77954a5666736e7365776672697d6b204a +52626b6a7a7b232e5b526c6e6b6476250d68646c66565a5e54535b59605f +676735245656655d636967222d4b622c1363675e5f5b524d251c51823d34 +342555696156491f184c4d4d44555e502e3c3c474d4b5964223a4c5d4533 +40293d3a353d424f40465341292e3955514444424241403c3c3d40423f3f +43403e433f3f3d3d3c3938373f3e38413b40383a3a3f4242403f3e3c3f45 +38313d3e383f383a3a3736393835343433333433323131382f3232292b2a +2d31302b2e37362d2c2a2a2b2a2b30362d2c2a28282a2b2d272728292c2a +2b2b262627282a2927252d2929292b2b282424262625272a282325252525 +24242526292626272623222320262a27211e22282a192920281f342a2646 +922224202b28292523241e130d0e10214c646364625a3b22404d4e4d5f5e +38363e2c36423e362943acacb0b8242f324029283325332930262d3c3345 +4741322c34372e272b2c342f31282e3123322d252a3f32332c2f302d2724 +25282e30302e2b28242124272520222a2d2b243436262822363e2a2e3437 +3a3836323d312c2b1f2a1f2d1f252e2b2526273b382b2624100b4ba6cdd9 +e4ebecece7e1e6e9e8e4e1e2e4e4e9e1d7d2d5dadfe1dbd4ced0d9e1e3e2 +e0dedcdbdee3eaedebecebe7e4e2e4e7e8ebf1f7fbfdfefefffcf8f4f1ef +efefefeff1f2f4f5f6f6f7f7f8fafbfcfdfefdfdfdfdfdfdfdfeffffffff +fffffffffffffffffffffffffffffffffefefefefbfbfbfcfdfdfefeffff +fffffffffffffffffffffffffffff9fffdb5253729363826256d4769928a +768087727d678ea68b322c255ca86f3c1f75aa76302463b460471017099c +fc3c444a3a392a274a992385dbc1b8b8565c43666f48643e6c3e537c7e56 +62828ba8adb2a9a1485a7d85b3b7b3aca74b58759ba8bab1c0acb7a5a787 +2e5a7493a7a4a3983a437472969f9a8f953c207c7d919c959a9f95959b96 +9790928a5039686d8d8b8b897f363d5a713c25777b71726e696231265b8a +3e3539316479726a5c35306d7c827780765e3a4e5f747f7a7d7f34495d6e +543f482c3d3939495a726c6d664c3640516f706769696a6b686462636566 +6363676462676363626261605f5e636259625c61595b5b5e615e5c5b5a58 +5a60524b57585259525454515053524f4f4f4f4f504f4e4d4d544a4d4d44 +4645484c4b4649524f46454343444344474d4443413f3f4142443e3e3f40 +40413f3f3a3a3b3c3c3b39373f3b39393b3b383433353635373a38333535 +35353434343537343435343130312e3438352f2c30363726332e41384234 +334f8e1717131c191d1b1b1b160a0201000c324642423e3a26112f3c3d3b +4d49221e2614202c2921142e97979ba3172225331c1b2618261c2319202e +26383731221c24271e171b1c241f21181e21152621191e33262720232421 +1d181b1c222424221f1c1815181b1914161e21211b2b2d1d20192f352125 +2b2e2e2c29252f231e1d121d1423151b23201c1a1b2e2a1d18130000358e +b5bcc5cacbc8c3bdc1c3c2bebbbcbebec6beb4afb2b7bcbeb8afa8aab6be +c0bfbdbbb8b7bbc0c7cdcbcccdc9c5c3c7cacccfd7dde1e3e6e6e9e6e2de +dbd9dbdbdbdbdddee0e2e3e6e6e8e9ebecedeeeff1f1f1f1f1f1f1f1f3f3 +f4f4f4f4f3f3f5f5f7f7f7f8f8f8f7f7f7f7f9f9f9f9f7f7f7f8fbfbfcfc +fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfbf1f4f3ae27381f23210d0f50203c +67604c514b323e2b58766715100736814817004e7b410000369045330005 +0081db141c241a1d1416377e004c977e8ba66a877c9e97657851825b78a2 +a374778d8fa2959ba1a35060776c87807d8297506d7c766d7e737b63665b +756e3167757e7469777a2a3c716d8a8c867e8d361a70676f6b5c5d5d514d +51505458656a3d326a656a5d6871712d3a576a32196b726b706c615b2d25 +5c8d433a3c3161766c6156292052504a3c4a52472c404955594e515c2442 +55664d3b4a3347413a3f404a373e53442c3039524e3f3d3a383934302f32 +393a37373b383439373736363533323137362e3731362e30303437353332 +312f31372b2430312b322b2d2f2c2b2e2d2a2c2c29292a292827272e272a +2c232524272b2a2528312f262725252625262a3027262422222425272121 +2223242423231f1f202122211f1d25211f1f21211e1a1c1e1c1b1d201d18 +1a1a1b1b1a1a1d1e201d1d1e1d1a191a151b1f1c1613171d1d0c1a14231a +281b17347501040009060502060a0b0100000000172217120c110b001b28 +2927393814121a08121e1810031b84848890393c363844413230352b3e32 +3a3e414142454341444b4941473f3e4e3d403d3e373b4130343139324a3e +3533302b2d363f36342d2e343033302f2f31302f2f323739373c4434423b +373f373d3e3a423839383535383d3f3f2c38464a3d393b3a4e58474b543b +2a2364b1e9fff9fffdfff7f3f0eef1f4f2ececeff3f2eae0e1e7eceeeee7 +dad7e1eeedeeeeebeaeaedeff2f3f7fafbfaf6f4f2f1efeff0f2f4f6fdfe +fffffffffffffffffcfbf9f8f6f6f5f6f7f8fafcfdfdfafafafbfcfdfdfe +fffefeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffeffffffffffffffffffffc82444355c545c85eb +a8c58e000e0b117183280000080600345828000019552100002754572443 +0d15159bee485a705d4b3e3a35a6216c91849093435f746772706874782c +4f6e6f4e4d4344644f7f5c6f51415f626b637d7d7d7b676d70676a717771 +6872867643525565666070824b535d4d6a5b656182534656596864575e61 +55565c53625a616838324d5369706971753831585b402747415863575970 +3d32465d4138271f263f5c5950201e3742584a545a42122a586d674d5662 +21233b464c4840162e2b303d48533c454f2b103044424f47463e4147443f +4041494745444445434342423e39393c3c383f3e3d3d3f3e3d3c3b41463d +485142453b3d453d3a403b3c3a3536363539393135333334323032373232 +33323131313231302f2f2f2f2e2e2d2f2f2d2e3132302c372c282e2a2b2d +352d28282b292b2c2a26262729292724252526292b2a2724282a29262526 +26242928272727272625232223272723222524222123232223251f222828 +23232827343f78142131232b26242227281a10111124506a65686f61422f +4446669e7f84c2939fac7277896c7374534534512b2e282a36332523281e +31252d34343434353331363d3b3339313242313431322b2f352427242c25 +3d312826231e2029352c2a23242a262926252527262525282a2c2a2e3626 +342d2931292f322e362c2d2c29292c3133311e2a383c2f2b2d2d3c453135 +3e26130d4b99cfe6e0e6e2ede8e7e4e2e5e8e4dedee1e5e4dad2d1d9dee1 +e1dad0cdd7e4e3e4e4e1dddde0e4e7eaeef1f2f1efedebeae8e8e8eaeef0 +f7f8fafcfefefefdfbfbf9f8f6f5f3f3f2f3f4f5f7f9fafaf8f8f8f9fafb +fbfcfefefefffffffffffffffffffffffffffefefefefefefefefefefefe +fefefefefffffffffffefefefdfefffffffffffdfefdfcbd1a3d3358494a +6cd49ecdaa232b282e8a943c1c202e2e1e6c996c1e406dab6d2830719991 +4b56110e068be33f4d614d3a2e2d2eaa368fc4b8b9a83c5a90929c988d91 +8d3b5872724f4d4244624d7c546b5757899db1a8b4a5908672849da3aeb9 +bfb7a5a4a6884c607290a09da3a5565564659f9fa8989a5a486078969f98 +a0a498999e929a8d8c8b53475c658793878a86473c62674e3b6262809084 +828e473651633a31313745617e7c734540596a8374797557263f728e8e76 +8086312f4f6168645523312a2f455d776d73673b24465d5e6e696b65696f +6b66676567656362646567676666625d5d60605c626160605f5e5c5b5a5d +6057626b5b5e54565e56545a5758565150504d5151494f4e4e4f4d4b4d52 +4d4d4e4d4c4c4c4d4b4a49494949484846484846474a4b49444f4440433f +40424a423d3d3e3e3e413e3d3a3b3d3d3b383939393c3e3d3a37383a3936 +353636343736353535353433313031353531303332302f31313031332f31 +32363c3d38343e487f13121e121b1e1e1a1c1a0b0000000c364c4342453a +22132b30528a6b6ea8778390595f74575d5d3c2e1d3a22251f212d2a1c1a +1f15281c242a2b2b2928262429302e262c242434232623241f2329181e1b +231c34281f1d1b15182029201e17181e1a1d1a19191b1a19191c21232123 +2d1b2b221e261e2426222a2021201d1d20252524111d2b2f241e201d2e36 +2327301501003781b6cbc2c7c4cbc1bdbab8bdc0bdb7b9bcc0bfb8afafb6 +bbbebeb7aca9b3c0bfc0c1bebdbdc0c6c9cbd1d4d5d4d3d1d1d0ceced1d3 +d6d8e1e2e4e6e8e8eae9e8e8e6e5e3e4e2e2e1e2e3e4e6e8e9e9e9e9e9ea +ebececeff2f2f4f5f5f5f5f5f7f7f7f7f7f8f8f8f9f9f9f9f9f9f9f9fafa +fafafafafafafdfdfdfdfdfcfcfcfbfcfdfdfdfdfdfaf6f4f6b91837243f +292644a86b946f00000000515e0b000015160149714500204b8646000140 +6a692e4200000071c3182338291c171c1c910d59817a8f994e7aa6998e7d +6e7b8e4e7998936d69626a87638d6c866f6587898d7b8a827d82787e7467 +737a7d715f677f78536b707c7061687b50627467816e736e8d6054626671 +695860615352574c59545f6b424263656f736d777c44426c73573c594d5e +655960763e35556f4c433a373d50665e532428414858464e56441d3a697d +714c4e5a242b445259565029403c3d474c53354257381b3948454e444036 +373b3631323541413f3c3d3c3b3b3838342f313434303837363636353332 +313539303b4434372c2e372f2d332f302e292b2b292d2d252c2b2b2c2a28 +2a2f2a2a2b2a2929292a282726262626252526282826272a2b29242f2420 +242021232b231e1e201f202222201e1f21211f1c1d1d1d2022211e1b1e20 +1f1c1b1c1c1a1e1d1c1c1c1c1b1a1a191a1e1e1a191c1b19181a1a191a1a +1214191c1f201e1a232b6000000d000b0b0803080d04000000001d261611 +13110d051718396f5257996b77824547573a484d2c1e0d2a363833333e3b +302f232f32332c2c31373c3e3f414345413b3e342e382b2e2a2735393e32 +3734362c322b282d2d2a2f39343237302d302f37322f2f3132302f2f3630 +2a303b363933423d3b36383c3835363234454542404937363d3f4342433c +4143404f564a473d282157b1ddf2fffffff6f4f9f9f2f0f6eceaecf0f2ec +e6e3e3e6edf3efe7dedae1e8f1f6f8f3efeae8e9eceff4f8fafcfdfdfdfb +f8f5f0eef2f4f5f7f9fafbfbfffffffffffffffffefefdfcfbfaf9f9f9f9 +f9fafbfbfcfcfbfbfbfbfcfcfcfcfdfefefefefefeffffffffffffffffff +fffffffffffffffffefefefefefefefefffffffffffffffffeffffc42146 +434795e890c28ccfe61f2248a8bfb5323a3500043160260000265c050000 +375c064a29710f1f169fd2286a675d4542402f230075927a90944a5a5867 +7e7e7f87833946736c3e51394738284b294529275752627a739163195068 +7266666e6f69697a835f244a616b64616b7c252d6b615d504a63853b2e5c +5e5f5e56606357565a52555c696f362f575e5e234d6c79452d4f623e2246 +465959464e6a40304a534437453b353b4e4d533b43413b5359545959293c +736964635158302d3a40545442263a2a2f444a4e35404a3d2c2d2f3c4a42 +48404246433e40414a484543423f3e3c4042403d3d3f403d3e3e3f3f3f3d +3c3b3d4049414147444e4542463d393c393c4135343838393c3837343435 +34323437303132312f2e2f2f302f2f2e2e2e2e2e2d2f2e2c2b2d2d2c2a30 +28292c282d2e39322e2d2d2b29292a262627292927242727272626262728 +282a29272627272528272627272827262725252726211f20232121222322 +24251f20262825252422203f8a27282d242d252222262a1e1213111f435c +5c626c6351163e483783a85f756465496ab4f0ce86b48462434b27292424 +2f2c2322162225262222272a2e2d2e303537332d3026222c1f221e1b292d +32262a27291f251e1b20201d222c2a282d262326252d2825252728262525 +28221c222d282b25342f2d282a2e2a272a2628393936343d29282f313534 +362f31332e3d4337322611083d97c2d7e4e9f0e9e7ecebe4e2e8dedcdee2 +e4ded8d5d6d9e0e6e5ddd4d0d7dee7ecebe6e1dfdfe0e3e6ebeff3f5f6f6 +f6f4f0edeae8eceef0f2f4f5f6f6fcfdfdfefefffffffbfbfaf9f8f7f6f6 +f7f7f7f8f9f9fafafbfbfbfbfcfcfcfcfdfefefefefefefffefefefefefe +fefefffffffffffffffffdfdfdfdfdfdfdfdfefefffffffffffef5fcfaba +193f3b3c82ce71a678c8eb292549a7bdae2e4448112c6aa26a1c3770ad57 +2a3485a84b8252871318078ec31a59584f38333326251098c3acb5a6465c +84a6bcb9b4b4a34d5179703f5034402f22441f4233438992a6b9a1b47a2c +6387a5a6acb6bab0a6a9a1712f587e979fa2a3a3302c6e799a9f9ba3a140 +2d6580939997a1a69a999b90908f94925144666d763c647e885135566a4b +36636c888e7d7f8b4830555a372d53595e6777777e666a6560797e777672 +3e4f8781828a7e7e3c324b5b7677613d452e2f495c6d646b675344464b5b +6c676d676a6e696466656866636362626262666664616163605d61616262 +5f5d5b5a595c635a5a605a645b5b5f57535855585d514e5250515250514f +4f504f4d4f524b4c4d4c4a494a4a4a494948484848484648474544464645 +42484041413d42434e474140403e3c3e3e3d3a3b3d3d3b383b3b3a393939 +3a3b383a393736373735363534353536353435333335342f2d2e312f2f30 +313032352f3130363d3f362f2a48952a191811201e1d1a1b1a0b00000008 +2d423c3d423b2d002432237294495b48482c4f9cdcbb709d6d4b2c342022 +1d1d28251b1a0e1a1d1e19191e21232324262a2c2822251b16201316120f +1d21261a211e20161c15131818151a23201c211a171a19211c19191b1c1a +19191d171117221d201a2924221d1f231f1c1e1a1c2d2d2a262f1c1b2224 +2827261f2224202f342821160000267ea7bac8cacabfbdc2c4bdbbc1b7b5 +b9bdc1bbb5b2b4b6bdc3c1b9b0acb3bac4c9cbc6c4c1c2c3c6c9ced2d7d9 +dcdcdcdad9d6d2d0d6d8dadcdedfe2e2e9eaeaebedeeefefeaeae9e8e7e6 +e5e5e8e8e8e9eaeaebedeff1f1f1f2f2f2f2f5f6f6f6f6f6f6f7f9f9f9f9 +f9f9f9f9fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfdfdfdfdfdfbeef6 +f6b816392e2664a945764591b100001f798d8208212a0011497e4500134d +8c33010755771e5b347002060074a2002e2d28161c22150f0062826f8c96 +5573879593837c8b96586f9d8d5b6f5c7664486542614c4e807a818e7a94 +6826677f7a696e76756a61727f6335617a806f6262742c3c8179705d4f67 +8b443d6e706d61555f635754574d50566772403f6d726826527281514066 +7f5c3d5e535e5643526e3b305b6a51455e57504e574f503b4b4b3e52534f +585d354d8574685e454f3235434a5d5f51354b3a3b4d4e4d303d51473431 +323c493e4138383a3631333742423f3c3938363337383635353737343737 +38383634323131343c333339343e343338302c302d303529292d2c2d2e2c +2e2c2c2d2c2a2c2f28292a29272627272726262525252525262827252426 +262522282021221e23242f28232222201e1f22201e1f21211f1c1f1f1e1d +1d1d1e1f1e201f1d1c1d1d1b1d1c1b1c1c1d1c1b1e1c1c1e1d1816171a18 +18191a191b1b1211171c23241c150f29750b0405020f0b0903050b040002 +0000161f131018181d00131a085479324a3a3a1c3a82bb9b5b8d5f3d1e26 +3b3c36363d3b3534344a34392c26292e353533383a393636433b33383239 +37322b2d30282e2e2f262c2a2d32312c2f37342c2e2d31362d2d2f2d2d32 +353534343b322f353a443c3d463c443c404c3f41383837463b35292f3737 +433e473d4340493f5d8075767d5f6e3c1f2457a9e8e8fefefffdfaf7f1ed +f8f1ebecefeee8e6e0dddee5ebeff0f2e2e3e4e7ecf3f9fcf4f3f1f0eff0 +eff0f8fafdfffffffffffafaf8f7f5f4f3f2f9f9f8f9fafcfcfdffffffff +fffffffffdfdfefefffffffffdfdfdfdfdfefefefdfefefefefefeffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffeb92c4e3460d7b17bc1b3eacd35339dd3e3ff2e2fc72b2b55100000 +254a1800001e4d1d00532e46040820a0d84b50584842443f492b0080937c +8c9462655f6b76727e8b8944567b7c5369576a62565c4c5d40465a50736f +76906c364a5e6465656462646a6d816b2f4a595d5a5e6581403f5a4d5a55 +4c57793a3154495a5e5a63655a5c605b606062662b295a57571f2b4a7434 +315162351b494852555b506839295554452d45494a47544d56514f524c51 +5f5550462228524f54534656272f45414847454c4b2b2b4a4e4d3e444848 +473932424743473e4043403c3e3e4140404041403f3e3a3c3d3c3f403f3b +3b3d3f3e3d3a3a3a3d3d4a443838414e4942443d3939373d4b39353a3935 +37373632313233323133303131302e2d2e2e3231302f2f2f2f302b2d2c29 +292a2b292e2e2d36322a2f2c312c292a2b2a29292a282727292927242729 +2a2825242729282929272728282628272626272827262423242626242324 +222020222323242625222628272727252c3875141e2c282524242427291f +1311111b3d595f626760552c303d3d344a49434b3f4e4449313427393a40 +43432a2b28282f2d2726263c272c1f191c212724252a2c2b2828352d272c +262d2b262123261e2424251c222023282722252d2a222423272c23232523 +23282b2b2a2a2d2421272c362e2f382e362e323e31332c2c2b3a2f291d23 +29293530392f3633392f4d7064636a4a5926090b3d8fcccfe7eaebe9e8e5 +e1ddeae3dde0e3e2dfddd3d0d1d9e2e6e7e9d8d9dadde1e8eef1ebeae8e7 +e6e7e8e9f1f3f6f9fafbfbfbf4f4f3f2f0efeeedf4f4f5f6f7f9f9faffff +fffffefefefefbfbfcfcfdfefefefdfdfdfdfdfefefefdfefefefefefeff +fefefefefefefefefefefefefefefefefefefefefffffffffefeffffffff +fffefffffbb4223e1b42b48d5da89dd7b9212087bbccfc2835e05a6ca160 +1a2f82a35b214689a562137b4f5d0700118cc3373d493a353532402d12a2 +c6b0b3ab626c8baab4aeb5baab5c668686596d5a6b66656e5b6d57698e8e +b2a9a3b3875068869daab0b1b3b1aca3a58643627c8f9da3a1ac544a6c71 +9fa9a19ea14e3c666f8d9998a1a69b9a9e9898938d89463c67646b333d59 +803e38596a412e626979838b7d863f295e5a3b25536873737d78817c7878 +737783766b5c34376364717972772c2c50586b70696b5e3731515c656169 +6765665855676e6a6e686a6d676365636665656667676665616261605f60 +5d5b5e6062615d5a59595959645e51515764625b5d585355535c6a585156 +534f4f4f504d4c4d4e4d4c4e4b4c4c4b494849494c4b4a494949494a4446 +4542424344424646454e4a42474446413e3f403f3e3e3e3c3b3b3d3d3b38 +3a3c3d3b38373a3c38393937373838363635343435363534323132343432 +3132302e2e3031313236353330353f41393236418017121a17181c1c1a1b +190c000000092c484845464039161d2c2f263a372c3123322d3520231222 +22282b2b22231f1f26241e1d1d331e23161013181c1a1a1f21201d1d2a22 +1b201a211f1a15171a121a1a1b1218161a1f1e191c23201618171b201717 +1917171c1f1f1e1e2219161c212b23242d232b232733262820201f2e231d +0f151c1c28232c222623291f3d6054545939461100002676b4b1c7c7c8c6 +c4c1bdb9c5beb8babdbcb8b6b0adaeb3bbbfc0c2b4b5b7bac1c8d0d3cccb +cbcac9cacccdd5d7dcdfe3e4e3e3dededddcdad9dad9e1e1e2e3e6e8e8e9 +eeeeeeeeededefefececededeeeff1f1f1f3f3f3f3f4f4f4f5f6f6f6f6f6 +f6f7f9f9f9f9f9f9f9f9fafafafafafafafafcfcfcfcfdfdfdfdfcfcfdfd +fdfdfdfbf6f6f6b1213e1738a173398074ad9400005e97aada040fb83044 +7b3d000a53753a00175372330059324300000073a412131e13131e212f17 +006f847287976e7f8c998b7a7e909d667fa49f71867b9b958282707d5f65 +786985797a95784f7385746b6f6b676364678175446675746762637f4950 +7063695e505a7f454268606c6359626459575b55595b5f6833386d6a6227 +31527e4042667d51355f585a555b566c352b676a533c5c6363585b4d534e +505147485349484528305b55534a354828374a444a48454c4b2d2d4a4d4b +393e474746362d3c413b3f383a3d3a3639383a3939373838373632333534 +36373732343638373431303031313d372a2a313e3a33352f2c2d2b33412f +2b302e2a2b2b2d2a292a2b2a292b28292928262526262928272626262627 +24262522222324222626252e2a22272427221f2021201f1f22201f1f2121 +1f1c1e20211f1c1b1e201e1f1f1d1d1e1e1c1d1c1b1b1c1d1c1b1b1a1b1d +1d1b1a1b191717191a1a1b1c1813171b25261f181b226000000607070907 +01030905010402051a2c262327292d0b0e18150b21211c2417261b1d0207 +0014161c1f1f35363334373632313f4b302b2c2b29313835303333313338 +2d2b2526272e2e2a2c2e2f292c3136333133383b372f2f3530292d2e363b +312e2e2e303435343438444042423845364147454c494a4f434239444046 +3d4a403c3f42524956414540514a525e5c5a5e58684f403227124ea5dbee +fefdf9f8fcfcf6f4f1edeae8e8e9efece5e1dee1eaf2f6f1e9e5e5e9edf1 +f7f7f7f6f5f3eeedecedeff2f6fafdfffffffffffffffffff8f8f6f6f5f5 +f5f5f7f7f8f9fafcfcfdfeffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffefefefefefefefeffffffffffffffffffff +ffffffffffffffffffad244f44ffff6fc2ffe4ef44333fd5b5bcb20f24b5 +54581a0000354700000038430000428b431b072434d6b83b5d66494f325c +7c1c0e75938a847c443c676a78797a7f7a333767722b377582847e757b79 +6976636569747389602c4e596e6a6464616471737465253f515c62656d78 +3a3d5c5b6b5b5e5d7439325d4e67605e65645d5e646460636a75362a5750 +746259526e40414a5d422a4142605f5552734537504c493a344452505c4f +4e535658594c54576255283a465158454f573a3044414a4d4c4f552f2948 +4a504d4d4a4047424148424b423c3f423f3d3e3c3c3a3b3d3f403e3d3839 +3a3b3d3d3d3c3a3b3c3b39383a3d403c494a3a354148453c3f3b3838343f +493b37393938393434302f313331302f31323232302f30303131302f2e2e +2f30292a2a28292b2c2b332f3442392d3029292727282929272729282727 +2928272525282b2c2a272524262828262628282729282626272726252222 +2325252525262321202222222325282426272426292b26377e26242b2b24 +262625282a201310080b223b403d413d3d23233c3e343e46435050454c3c +44604c474743474e2425252629282423313d231e1f1e1c232a2422252523 +252a1f1d191a1b22221e2224251f22272c2927292e312d25252b261f2324 +2c3127242424262a2b2a2a2c383234342a37283339373e3b3c4135342d38 +343a313e34303134443b48333833423b434e4b494d45553a2b1d1100368d +c1d5e5e6e2e3e9ece8e6e5e4e1e0e0e1e6e0d9d5d5d8e1e9ece7dfdbdade +e2e6eeeeeeedeceae7e6e5e6e8ebeef2f7f9fffffefcfcfbfbfbf3f3f3f3 +f2f2f2f2f4f4f5f6f7f9f9fafcfdfdfdfefeffffffffffffffffffffffff +fffffffffffffefefefefefefefefdfdfdfdfdfdfdfdfeffffffffffffff +fefeffffffffffffffffffa91a3922e3f349a4f8d0d8261423b8919a9d02 +20c48296601a468da55321379aab4e2374ad5a25021724c29f234a553b42 +234f731e2097c6beaf98494895a9b9b8b3afa0504e798138427f8a929993 +94938aa09ca4a9ae9fab7841687ca4abaaafafaeb0a6977f3856748ca2aa +aaa75550707da5a2a699994f4576799d999aa1a2999aa19f96949498513d +655e847368617a4a4a52664e3b575e80827a79904c375a543f354563797b +867a7c7f807f817379767a673545536373697b773b294a576a74726f693c +31505663686d6d646c6867706d766c66696c66636462636566686a6b6967 +60605f5e5d5d5b5a5a5e5f5e5958595c5c586364534e57615e575a575454 +535e685a53555352514e4f4b4a4c4e4c4b4a4c4d4d4d4b4a4b4b4b4b4a49 +4848494a42434341424445444b474c5a514548413e3c3c3d3e3e3c3c3d3c +3b3b3d3c3b39383b3e3f3d3a383736383836363838373736343435353433 +3030313333333334312f2e303030313338332e343c403b38304089291819 +1a17191b1919190d000000001830322c28262a12153133282f352d39352a +372a3450362f2f2b2f361c1d1c1d201f1b1a28341a151615131a1f1a171a +1a181a1f14120d0e0f16161216181913181d221f1d1f2528241c1c211c13 +171820251b1818181a1e1f1e1e202c2729291f2c1d282e2c333031362a29 +212c282e253226222427372e3b2628222f28303e3b393b34442718080000 +1e73a6b7c7c7c3c4c9cac5c1bfbdbab9b9babfbab3afaeb1bac2c8c3bcb8 +babec4c8cfcfd1d0cfcdcbcac9caced1d7dbdfe1eae9e8e6e6e5e7e7e0e0 +e0e0e1e1e1e1e3e3e4e5e6e8eaebedeeeeeeefeff2f2f5f5f5f5f6f6f6f6 +f7f7f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fcfdfdfdfdfd +fdfdfcfcfdfdfdfdfdfbf6f5faa61b3c23e1e83688d9afb90e00008e717e +7e000099546d3e002667732400156b761a004e8c3e0d00040da78000202a +14200c3e62080064847e81814f5693968f837e859154609194485498b1b5 +ac9b9b94818a736f6d736e8a6a44798282736c6a6361696d76723e5e6e74 +6e6b6e7b464e6f6c75605d5d77424373687b665c6363595a5e5d5a5d6677 +3e376861836d635c7a4c515d755a4355526962585a7a4439636157494c5d +675f624d4d4e52524f3e464a584f2b3f4c5354393c483d39484245474346 +4d282445484d494843384039363e38413a34393e3a3a3d39343031333536 +34352e3133343636353431343534302f303334303c3d2c27313a362e312e +2c2c2a353f312d2f2e2d2d292c2827292b292827292a2a2a282728282828 +27262525262722232321222425242b272c3a312528211f1d1d1e1f1f1d1d +21201f1f21201f1d1c1f2223211e1c1b1c1e1e1c1c1e1e1d1e1d1b1b1c1c +1b1a19191a1c1c1c1c1d1a18171919191a1a1b14161a2225211e1521690a +02050a06060501020906020702000c1c18121418230b0a1f1d1018211f2b +2a1f26161b372823231f232a3535383b3b3b39353335332335393745433e +3b3a363132382b2d2c282a2c2c2b2a30312e2a3035382d31383c37313238 +232835332f31303836383b3b3835363a32303637303e30392a35363c3d3b +433e373e3838394d4d484f4b544e66514b41485c4e46605442623c3f423d +4a36231a4295def6f9fffff5eff1f4f2efeae7e5eceff1f1ece5dfdfeaed +f2f6f4f0e8e3e8ebeff3f8fbfbfcfbf9f7f4f2f0efeff4f5f5f8fbfeffff +fffffffffffefefefbfbfbfaf9f9f9f8fafbfbfbfcfcfcfcfdfdfdfefefe +fefefffffffffffffffffffffffffffffffffffffffffffffffffdfdfefe +fefffffffffffffffffffffffeffffad234c40ffff85d5ffff4a28348eff +eeffbd32422c120001003441000000404d00002c48514121322132c1aa63 +c0a94d412d234028056e968f978f4d615c65828478858a384e6774484e6c +7b928f9686838b8c7b7e687b799673385b638a72656e6c68787e927a2b47 +5e6b716561661c205d66707273767a2a16504b5a5f6165645e5c5f5f575c +67702f21535e580e37585e41284d5b3520475a7567626070363143504031 +3e455149564c4c525f4b56555654625a214a53545c525d53382841494649 +504a593a2d414250544c4d3d423f40413a4d3e3b40444140413d3c3b3b3c +3d3b39363c3d3d3d3e3d3f403c3b3d3b38383d41423c4651484046464139 +3e3b3936343e38343433373f403635323134353331303132333231313132 +2d2e2e2c2b2a2c2d292b2b29292b2c2a2f2b2e3b32272d272b2b2a292a29 +26242827272828282726252527292a28232025272725252728262a282726 +2626242325262624242322212422212222212124222126292624272c2437 +803726292a26272928282a20120d0d03040c0e0c14171c07285a33384347 +425355434641414540473948473e2424272a2a2a282425272515272b2937 +35302d2c2823262c1f21201c202222212026272420262b2e23272e322d27 +282e161c29272325242c2a2c2f2f2c292a2e26242a2b2432242d1e292a30 +312f37322b322c2c2d41413c413d464058433e343c503f37514532512b2c +2f2a382411042676c2dadfe9ece2dfe3e7e8e7e5e2e0e3e3e5e5e0d9d6d6 +e1e3e8ecebe7dfdadfe2e6eaeff2f4f5f4f2f0edebe9e9e9eeeff0f3f6f9 +fbfdfcfcfcfcfcfbfbfbf8f8f8f7f6f6f6f5f8f9f9f9fafafafafdfdfdfe +fefefefefffffffffffffffffefefefefefefefefefefefefefefefefcfc +fdfdfdfefefefffffffffffffffffeffffac17351be7e15db9fbf538111c +77f6cceda81f2b2426202432899d44283b8c933e37848d7b46141f0c1eac +924baa973f342118392a1790c9c6c5b059728da4c3c3b3b8b55c6c818d5f +627f8ca6aab3a1a2b2bdb7c0abb5a2b2813f6173b1aaa1b0afa7afa8ae8a +37577792a6a29e9b3d356d7a91989a99903c2b707c93989b9fa098979a9a +8d8d91944b37636d661c45666c4d335868422f59718d8280828b40354e58 +3c2f52667774807a7a818b75817d787076692a505c61747386743c244a5c +646d7165694330474c616e6e72656a6a6b6c677a6a676a6e686665636668 +68696a686662666462605e5d5d5e5c5f5e5c59595c605e58616c61595f5f +5a5459575555535d57535352535b5a50504d4c4f504e4c4b4c4d4e4d4c4c +4c4d48494947464547484446464444464745484447544b40453f43434241 +3f3e3b393c3b3b3c3c3c3b3a38383a3c3d3b363335373735353738363836 +353434343231333434323231302f32302f30302f2f3232302e363d3c3939 +2e408b3c1a171916181a1818190f02000300010907030308110021542c30 +38382f3b3d2b333035362d31233231281a1a1d2020201e1a1a1c1a0a1c20 +1e2c2a2522211d181a201315141014161615141a1b18161c2124191d2529 +241e1f240d101d1b171918201e202323201d1e221a181e1f18261821121d +1e2425232b261f2620202135332e343039334b362e23263a2a243e322241 +1b1d2019241000001161acc4c6cfcfc4bec0c4c4c0bdbab8bcbbbdbdb8b1 +adadbabfc5c9cac6c0bbc0c3c7cbd2d5d8d9d8d6d6d3d1cfd1d1d8d9dadd +e0e3e7e9e9e9e9e9ebeaeaeae7e7e7e6e7e7e7e6e9eaeaeaededededf3f3 +f3f4f4f4f4f4f7f7f7f7f7f8f8f8f9f9f9f9f9f9f9f9fafafafafafafafa +fafafbfbfbfcfcfcfdfdfdfdfdfdfdfbf4f6faaa1b3b22e8dc51a3e3db22 +01044ec9a9d189000b0001000e1c6876190015666e1305515e572f030e00 +058f7027836f181207042714005d878594935779878f998e7d8da15a768e +94656b8ea6bfb1af9a92959079785c6b688a724779829c7d6d7268606c76 +978945677b807a69656d282e6c71746f6d6f792e24656770655e62625b57 +585851566370352b6270691d46666c4d355c704a3459697f6f6869783838 +54654d3d535b62565a4b494d58434b4846475a56255059575a484c473f33 +49494241443c4c2e253d414f554b463338353536304335343a403c3d3f3a +3431313233312f2d343536363738393a333333312e2e3236352f38433931 +3737322b302e2c2b2a342e2a2a292d35352b2d2a292c2d2b2928292a2b2a +2929292a25262624232224252325252323252624282427342b20251f2323 +2221201f1c1a201f1f2020201f1e1c1c1e20211f1a171b1d1d1b1b1d1e1c +1f1d1c1b1b1b19181c1d1d1b1b1a19181b191819191818191511161c2322 +1f1f13216b1c0403090605050000070503070b000000000000050f001946 +1a1b2425202f331f25201f231f261827261d37353b403f40403a2e30422e +3a393848484848433a312e312a2e302c342f31332b3537392e312f333539 +3e403c383b4043444c4742423f453b3c4041403e41474f4b494b4e574b47 +4c574a494036433d4c453e3a3e42474945464b455747464a3d4454595b53 +474f4d3c484e49484a342923418dd4f3f7fafcf8f4efeff0ebe9e7e7e7ed +f1f1edebdfe3e8eef2f4f6f6efefeeeff0f3f3f5fdfefffffffefbfbf3f3 +f2f2f2f2f2f2fcfcfbfcfefffffffffffffffffffffffefefefefefefefe +fdfdfdfdfefefefefdfefefefefefeffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffab12a4c3069a34aa2e6 +8b312f2f33acbbc7922b5d151200175e450000054f5700002e5904409887 +304d43ad604655594d3e32378067007b997e8e7e2b4f5c677d76748b8826 +505a778d8521385b4b714b617e6d776e7a7c57656e5d633e6d746f6f6b74 +7c5a6a7e47473d5778636772575753496e747b687a66474c416160666867 +635d59595c575e653b36484b703034475a44284b573726414963606c5d62 +39393f563d2a4542524d5551505558485659585d5b4e21354f4f5e5a4d56 +24233e4a4a4b615f58483343424d4f4846464846464239403f3e42474444 +46403e3d3d3e3f3f3d3c3f3f3f3f3d3d3f413f3d3e3c3b3c40433c3b3e4d +4f4749443f3a3f3c3738343b32343633363f40333432323434322f2f3031 +3231303030312e3031302d2c2d2f2d2e2d2b2a2b2b292d2a272d29242d2c +282a2b292a2b2a2727272828282827272624222325262421242626252527 +27252928272626252423232525232325252325222122212020221e202b31 +2d2626292833754021282826282b2a292920110b0c0501030506090e0b05 +2d734e48343643474356464a3d4446334342494226242a2f2e2f2f292022 +34202c2b2a3a3a3a3a352c2322251e2224202a252729212b2d2f24272529 +2b2f3436322e31363638403b363633392f3034353432353b433f3d3f424b +3f3b404b3e3d342a37314039322e32363b3d37383d374939393d3138454a +4c44373f3d2c383e39383a210e042270b9dae1e6ebe9e7e5e7e8e6e1dedb +dbe1e5e5e4e2d6dadee4e9ebedede6e6e5e6e7eaeceef6f7f8f8f8f7f5f5 +ededededededededf7f7f8f9fbfcfdfdfffffffffefefdfdfcfcfcfcfcfc +fcfcfdfdfdfdfefefefefdfefefefefefefffefefefefefefefeffffffff +fffffffffefefefefefefefefffffefefefffffffffff9ad1f3711427c26 +85d2812c2c2e2fa4aebb8d285b1d3023439995471f459ba53c2886b1496a +9a741631299449303f453f31262c796b0fa0cdb7c1a33c658ea9beb7b1c3 +b950747c97aca43f547564896480a7a1b4b1bcb57f7e775b5d428ba1a4a8 +a7adac7f808b4f525177a69ca3ac7f7363557b848c7988786173779d999e +a2a19d97949492888a8b594e5d5d7f3f435a6d573b5e6a4a39555e787687 +7e7f44424e633c2d5e67787682817f84877782817c786e5a273a575b767a +78792e274a5f6466796f614934454e62706d6f707270726e666d6b686c6e +69696865686a6a6b6c6c696769666464605d5d5f5f615f5d5c5d5f625857 +59686860625d5a565b585657535a51535552525b5a4d4f4d4d4f4f4d4a4a +4b4c4d4c4b4b4b4c494b4c4b4847484a484948464546464446434046423d +4544404243413f403f3c3b3b3c3c3c3c3b3b393735363839373434363635 +353737353736353434333231313333313133333133302f302f2e2e302e2f +333e443e3836323e804515161716171a1817180f03000703020303000002 +02012a714b432c2930312b40333a3037331d2d2c332c1c1a20252425251f +1517291521201f2f2f2f2f2a21181619121618141e191b1d151f21231a1d +1b1f21252b2d2925282c2d2c342f2a2a272d232428292826292f37333133 +363f332f343f3231281e2b25342d2622262a2d2f2a2b302a3c2c292c1b20 +30353931272f2e1d292f29282a100000105ea4c4c9cbcdc8c5c1c2c1beba +b5b3b3b9bdbdbbb9afb3bac1c8cacecec7c7c6c7cacdd0d2dadbdedededd +ddddd7d7d7d7d7d7d9d9e4e4e5e6eaebececefefeeeeefefeeeeedededed +efefefeff3f3f3f3f4f4f4f4f5f6f6f6f6f6f6f7f9f9f9f9f9f9f9f9fbfb +fbfbfbfbfbfbfcfcfcfcfcfcfcfcfdfdfcfcfcfdfdfbf6f6f4ac233c1643 +751873ba6816191202738291630034000a01287d72200020757e1800547e +1a448263051c1076270b18201a0f0c186754006c8b7389813263828d9381 +78949c44747e94a69f4160846b8b60718973786a74714d617470835f8382 +787167697256739366685a6c82696d7c6465625574777a677b6c54615d77 +64616564605a5454545059643f40565d844446586953355a68483753596f +6a78696d3c41536b4a365a565f54574f4b4e53434d4d4e555850273e5a57 +6055434f2d3248504945595450412f404451554b4340423e3d392f363636 +3a3f3e40433a36333334353534323737383938383b3b3635343231323538 +2f2e303f40383a35312d322f2c2d2a31282a2c292c3535282c2a2a2c2c2a +272728292a29282828292628292825242527272827252425252326232026 +221d2524202223212021201d1f1f202020201f1f1d1b191a1c1d1b181a1c +1c1b1b1d1d1b1e1d1c1b1b1a19181a1c1c1a1a1c1c1a1c19181918171717 +11101b242a241e1c171e60250002070607080000060503060d0600000000 +0006030023653c30191821242135252b1f262512222128213732373e3b3f +4139343b413b3837393e454a4a4237302e2e343334324238393f363f3f43 +373a33363f40413f3a373a3f423b3b37393c35353d3b3c3f424446495853 +4943463f3c2e30353535363b474b3d383b2b322c3836323e413e453a3d52 +5a4662654542423637384950373b4b4e404630163487d1f0f6f7f6f2eff1 +f0eef6f0e9e5e4e6ecf2f4f1eae5e3e8eef5f9f8f5f3f0eeebebeceef1f5 +fafefffffffffffffdfaf8f6f6f6f5f5f6f7f7f7f9fafafbfcfdfdfeffff +fffffffffffffffffffffffffffffdfefefefefefeffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffff7ffff9e2947 +4a3e31485d42432809221d051c56610d15000000444b000000523e000045 +48010058f7ce5c5f616d545e61584b393c264f5502749188918242485a72 +807980806c1a345a758b821e2c281136234468667b75708d2f27372d5419 +426573706b7d7c3e134733371532716a675d68763c204730492041796a50 +426062666563615d5a5d615b687569673e19537b5e143a62675854685930 +14404038314b605e4c523e363d39555658534f4e4f51504d545b4e583838 +3f4862534859403a27304e50615a4d483647464845414344373c4a453e3a +4342454644464a4541404042424242433e3d3e3f3e3c3c3f40403f3e3f3f +3f40373e3944494043413c3a40373438353838383a383336382f31313335 +332f2e2e323232312f2e2e2e2e313333302e2e2f2d2e2d2a292a2a282b30 +282829252b2c24272927282a2b2926272828282828292525252628282726 +252727252527272528272626262625242022232223272827242221222120 +2123212029302d2624271c337e5e2627242c282b2a29291e0f0903030306 +0b0d0b0b04011d6e647a763b4546503e493e473f4a347735434d2520252c +2b2f3129242b332d2a292b30393e3e362b2422222a292a28382e2f352c35 +35392d30292c35363735302d3035352d2d292b2e27272f2d2e313436383b +4c473d373a333022242929292a2f3b3f312c2f1f26202c2a24303330372c +30454e3a565938353529292a3b42292d3d3c26281300196dbbdae2e6e6e4 +e2e4e7e5eae4ddd9d8dae0e6e8e5e0dbdadfe8eff0efeceae7e5e4e4e5e7 +eaeef3f7fafcfffefdfbf8f5f3f1f1f1f2f2f3f4f4f4f6f7f7f8f9fafafb +fffffffffffffffffffffffffffffffffdfefefefefefefffefefefefefe +fefefffffffffffffffffffffffffffffffffffffefefefffffff4fefb95 +1e3b3a2a172b42313f372b483d233a737b304c373f49a4a73a1949a2812c +31a6a04a1c76ffc7413b3c4b424f4d443d2c301e48591399c5c4c7ad5b66 +90b5c3babdbaa04a5e829eb2a944504627483a619097b7b4adc155403f2b +4a175b8fa2a4a2b0a85f28533a40284f999da3999798502a4a324b274d8e +8b7e7b9d9da09f9d9d999698978e979e8c8458326890742d547c83757084 +734a2b575552526a716d606445415b617e808a85807f8183807878786064 +3f3c45567a74717f584e3e4865626c5b47403048556571716d6c61677570 +68646d6a6b6a65676965656667696c6c6c6a65646364615c5c5f6061605f +5e5e5e5f535a545f645b5c5a57565c5653575457575759575255544b4d4d +4f514f4b4a4a4e4e4e4d4b4a4a4a494c4e4e4b49494a4849484544454543 +44494141423e44453c3f413f404243413a3b3c3c3c3c3b3c383838393838 +3736353737353537373536353434343433322e3031303135363532302f30 +2f2e2f31312f313d443e3634263e89631a15131c161a1817181004000001 +04060806000000001c6e62746e2e32303828352c372f371e611f2d371914 +19201e22241c171e26201d1c1e232d32322a1f1816161e1d1e1c2c222329 +2029292d23261f222b2c2e2c2724272b2c22221e20231c1c24222326292b +2d30403b312b2e272416181d1d1d1e232f33252023131a141e1c17232623 +2a1f203436203e43252224191c1d2e351c20302e191d0500085ca6c3c7c8 +c5c1bfc1c0bec2bcb5b1aeb0b8bec2bfbcb8b9bec8cfd1d0cdcbcac8c7c7 +c9cbd0d4d9dde0e4e9e8e7e5e2dfdfdddededfdfe2e3e3e3e5e6e8e9eaeb +ebecf0f0f2f2f2f2f2f3f5f5f5f5f5f5f6f6f5f6f6f6f6f6f6f7f9f9f9f9 +f9f9f9f9fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafafbfbfaedf8 +f896223d3a230a192d1722180a210b0000333e001504131b74781600237d +5e0603736e1c0054e4ad2c25222f1c26281f180a160938420065837e8d82 +485a7992908082877c3250778c9f97374c4e3c604a6787819389819b3e3c +54538648627b8074687577402363575d374b7f726d6573874f345941572d +4d857a645a73656364625f5b5658595563746e704b2c69937227496f7463 +6175663f234f4e473f58676a5f684b434f495e5a595049484e52504b525c +5262474851576d59475a4b4c363b5554645d514d3c4d4e4f4e494747393c +484238323b383a3c383c403c3937383a3c3c3a3b36373839393537383736 +3534343434352a312b363b3234322e2d332c292d2a2d2e2e302e292c2c23 +2727292b29252424282828272524242426292b2b28262627272827242324 +242224292121221e24251c1f211f202223211e1f202020201f201c1c1c1d +1d1d1c1b1b1d1d1b1b1d1d1b1d1c1b1b1b1b1a1915171817181c1d1c1917 +161716151617141019232a241c1a0b1e69430401030c080a020106050203 +04020000000003050000176455645b1d23222c1b2a20282029115412202a +433a3f4543494d453e473a4a444b544e454b4a3f343234343b34312d3f31 +2f34343934392e342e31393836322d2b2f342e2d3430303738403f393436 +3a3b393933393531382e3e3439343b302e3730373f47512e32293527343e +3a3e484440524d596c69634f313a3e493d3d3b4335394d4346482a123879 +cee3f8fdf6f2f1f0ebf0f5f1e5dde2eaf0f3f6f3eeeae7e8eceff4f9fcfd +faf9f6f4f1efeff2f5f8f9fafcfffffffffffffffdfbf9f8f7f6f8f8f9f9 +f9fafafafdfdfdfdfdfdfdfdfefefeffffffffffffffffffffffffffffff +fffffffffffffefefefefefefefefffffffffefefefeffffffffffffffff +ffffff853548483f45343c1f2d0b3b83595858566353336c624035000019 +473a0000434301000873f5cb7b726d5b5750565459482a30402c497f848b +7e867d6d4c727d7983797e715962647881605a4c4947484556666c736f7c +61454a493f393c5262757272774d3f43254e2b2151536c6568794e293b25 +341a2953566d685661635d575b5c5d63645d6564646f370c30496c0b1744 +52565b655d441a22131f091b50595b5a34113732585650494844474f4d57 +55300633202c13224945574f545b230f281a2e36373c2d4346423c3d4634 +0f1f3e4044424844464443464b494845444241403e3c3d3d3f423f3b3a3c +3f3f3f3f403e3c3a38463b3f43393e3f37383b32303836383b36393b3533 +37353233363835302f31343534322f2d2d2d2a2d31302d2b2b2c2a2c2b29 +292b2b2a28342b292d282727292c2c292829292726272828282729292227 +2c2d2e2b2928262828262627272526252425262727262426262222252523 +2320202121202124261e212725212023302d5c4a1b2e2627282c2a27271e +0f08060a0503090c0d0d0e0b126461466b714a443641474336433e40b093 +a36131282d3333393d352e372c3c363d4640393f3e3328262828312a2723 +3527252a2a2f2a2f242a24272f2e2c282321252a211f262222292a32312b +26282c2d2b2b272d29252c2232282d282f24222b242b333b4522261d291b +26302c303a363345414d605d5642242d323d31312f37292837282b2e1300 +2163bacfe5eae6e2e1e2dde4e9e5d9d1d4dee4e7e9e9e6e1e1e2e3e6ebf0 +f3f4f3f2efedeae8e8ebeff2f3f4f7fafcfdfefefcfbfaf8f6f5f4f3f5f5 +f6f6f6f7f7f7fbfbfbfbfbfbfbfbfefefeffffffffffffffffffffffffff +fefefefefefefefefdfdfdfdfdfdfdfdfefefefefdfdfdfdfffffefefeff +fffffefdfc7b2b403f33321c220e2e246ebb817a7d7b827b72b8ab939c61 +2059948c3b37a0a353183892ffc65b45413a4947423e493e2028392e5aa1 +b8c7b6b69e9083b5c1bbc4b4b6a58a9393a7b08e87766a65696d849ca8af +a9b28d66605746465b7f96adaca9a9745c57356046447d88a7a09da66f40 +4b303f2b427582a1a1919c9d97939798999f9c9398928c93582b4d688b2d +3a6a797d82897f64363c2c3b2c3c686e767343255d5f828485807b777c83 +7e847d501c4129341d3163678179777a422b3f2932332d2f25475b666f72 +725b374766696a696d6967655f626563636362626463636162626467645e +5d5f5f6060605f5d5b595462565a5e54575a53545a514f5755575a55585a +545253514e4f5254514c4b4d5051504e4b49494945484c4b484646474547 +464444464645414d444246414040414444414041413f3a3b3c3c3c3b3c3c +353a3f403e3b393836383836363737353433323334353534323434303033 +3331312e2e2f2f2e2f32352d29343c3932303a38674f0f1c1517161a1916 +181004000006050103010000060812645f436264372e1f29312f26312b2a +9a7d8d4b251c2127262c3028212a1f2f293039332d3332271c1a1c1c251e +1b17291b191e1e231e231a201a1d2524231f1a181c2018141b17171e1f27 +26201b1d212220201b211d192016261c211c2318161f181f272f39161a11 +1b0d19231f232d292334293348474331141d242f2525232b1d1e2c1d2021 +05000f4ea1b4c7cac5c0bfbdb8bcc1bdb1a7adb6bec1c6c5c2c0c1c2c4c7 +ccd1d6d7d6d5d3d1d0ceced1d5d8dddee1e4e6e7eaeae9e8e7e5e5e4e3e2 +e4e4e7e7e7e8e8e8ececeeeeeeeeeeeff4f4f4f5f5f5f5f5f7f7f7f7f7f8 +f8f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fafafafaf9f9f9f9fbfbfafa +fafbfbfaf8f7fa7a2c3e3827210407000c00438a4d3e38353f3d3b878067 +672b003470681710717325001270e3a94430281b221c1d19251b05132919 +386f7681778481786389887d847a89816d7673859072726c7170706c7784 +86898190765f6b727068606b727c726f785757624c764f3e645e6f687189 +66465b4653353f65677d786162605c57595a595f5d5760636777431c4863 +831f26515e60636d674f2831262f18275a656f6f401c48405e565147423f +48524f595a38104132412734584f5d55616a321d35263b4445493a50524c +44444f3c1524413f413d413d3c3a373a403e403f3e3b3c3938353636393c +39343535363535353533312f2b392d31352b2f312a2b3027252d2b2d312c +2f312b292b2928292c2e2b2625272a2b2a28252323232225292825232324 +2426252323252524212d242226212020212424212021211f1e1f2020201f +2020191e232423201e1d1c1e1e1c1c1d1d1b1b1a191a1b1c1c1b191b1b17 +171a1a181815151616151618180e111a221f18161f18472f000805080a0c +050205030000020500000000000104030a58523251532820111d24241923 +1c1c8c6f7f3d3b3c46464a4e43403f2e4855403b43443c43332928282b25 +322d282727272a2d362d2f2e2e2f2c353032302d3034312a30333b342f34 +3843303a344b3a35433c3530352e3d3b3f38323f3b403d3e3a494348434a +41313838584d40454834395f6c5d606a7a5b4030313f4f453531313c4145 +42434d47301f2275ceeaf2fbf6f0e7e9e9f3f2e2e4efe9e9edf2f5f4f0f0 +eaeaebedf0f3f4f6fefefdfcfaf7f3f2f3f4f5f8fbfdfefffefffeffffff +fffefffffffffffffefefcfcfcfdfdfdfdfdfbfbfbfbfcfcfcfcfcfdfdfe +fefefefdffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffdffff852f35443b364a999580786423272c2b626f3b161d +28140000005336000c603f0000064c67e8be537069565255575f57383230 +3d27177d837d8f808d897a77777b7f77767f6f757d8488847a7061737562 +5c6a746e786f706d61636b6a5850646b676b6d70755f54554e494c536f6c +6868675e50444142404350616762615e5e5f63635d5776695e606768594a +3b3d544e3b333c5e5c585f4f3e33262c2729363e5f5e4e2c282f56585250 +414e47494c4f4c3c2b2720291e2b293a464f4d49381f141a24272a2a2738 +38403438443b150a2e444247434d4950464a49494a454f4a434642423c3c +3d3e3d3b39383b3f41403e3a3837403d3d3e3e3e4043403c3c3c3934363a +3534333636343435352e2d3334303036333637332f2e2d2d2d31322f2d2f +2e2c2c2a2827282929292c2c2b2b2b2a292828292a29292828292b292928 +2827272624242b33342e282526262727272726262c292524252626252524 +2424252524242223252524232323242326231d20272d2b396d7021272e1f +28292928261f12070a0506110b12180f0d061660745b64645145483a514b +445f4d3e576340722b2c36363a3e333031203a47322d35363036261c1e1e +211b2823201f1f1f22252e2527262627242d282a2724272b282023252d26 +21262a35222c263d2c27352e29242922312f332c26332f3431322e3d373c +373e35252c2c4a3f32373a262c526051545e6f5034242533453b2b272730 +2f312e3037311b0a0c5fb8d5dae4dfdcd7dbdbe5e4d4d5e1dbdde0e8edec +eaeae1e1e2e4e7eaedeff7f7f6f5f3f0edecedeef0f3f6f8f9faf9fafbfc +fcfcfcfbfefefefdfcfcfafafafafafbfbfbfbfbfbfbfbfbfcfcfcfcfcfd +fdfefefefefdfefefefefefefefefefefefefefefefefefefefefefefefe +fffffffffffffffff8fefc7b252d3b2f24338186839299553a33366e7748 +2f3f4f453d2956af7d2a5fb6903d21428694f9b3293c403c494e4347472e +28283629269db6b9cab6b3b3b3b8b9bcbdb5b1b7a6aab2babeb9aea698ab +ae9e99a8b0abb3aaaaa4979499988d8ba3b0aeb0aca7a1867778797a858e +a6a4a1a19e907e6f6d70737a89999d989b9a9a9da0a19b93b3a495929692 +827262667d7a68626c918d878b786154444c4d4f565d817e664955618186 +8c8c77847e8282807860473c2f362d3f4861747e77705c402e2d2c282424 +2643536a6d716d5f392f536a6669636d646b5e625d5d5c5863615c616062 +5f61626362605e5d5f60605f5d5957565c59585959595b5e5d5b5b5b5853 +52565150525555535354514a494f504c4c524f52534f4b4a4949484c4d4a +484a494747454342434444444545444444434140404142413e3d3d3e3f3d +3c3b3b3a3a3937373b43443e383536363737373736363a37333233343433 +31303030313130302e2f3131302f2f3133302b2d3438393a354478751616 +1e1217181919161107000100000a000000000200125c71555d5940303123 +3a35304c3829424e2b5d1e1f29292d31262324132d3a25202829242d1d13 +141417111e1915141414171a21181a191b1c19221d1f1e1b1e221f161a1a +221b161b1f2a17211b32211c2a231d181d16252327201a27232825262231 +2b302b3229191e1e3d32252a2d191c4148373c485b3e241619273b31211d +1d24252623222a230a000047a0babec5c0bbb5b6b6bebdadaebab6b7bdc4 +c9c8c8c8c0c0c3c5c8cbd0d2dbdbdad9d9d6d3d2d7d8dadde0e2e5e6e6e7 +e8e9ebebebeaefefefeeededeeeeedededeeeeeeefeff1f1f1f1f2f2f2f2 +f4f5f5f6f6f6f6f5f9f9f9f9f9f9f9f9fafafafafafafafafafafafafafa +fafafbfbfbfbfbfbfbfaf2f8fa7a242a321f0c145f5f586365200c000030 +3c13051c3025140022805b0835896515001c5d6dd797132624191e221e25 +250b0d132614056e7471867c8c8f86827b787a7479867c8084898d8d8884 +7b8e8e7a6f777c727972787a777e8c8d7d6f78776c6f758090837b7c7267 +64606c676c7681847e75706d625b606a6c64605a5c5e64625a5370645b5d +6a6e645a50566b61493e4466605d67584943383d3636414d716f5835363b +565552503d4a474d505354443837323e323e39464d545351402b212b373c +3e3e38474246383c4b451d10324542443e4841483e42414246424a453f42 +3c3b353636373634323133353635332f2d2c33302f3030303235312f2f2f +2e29292d2827292c2c2a2a2b2b2423292a26262c292c2d29252423232529 +2a272527262426242221222323232525242424232120202122211f1e1e1f +2321201f1f1e1e1d1b1b202829231d1a1b1b1c1c1c1c1b1b201d1918191a +1a1919181818191918181617191918171717161214141a1e1f201a245855 +00020e020d0e09060604030002000000000000000000075062454b472e1f +21132c28253e2718313d1a4c3f3e433f4046403e333a4b35353437313340 +34292a3033282a2724252525272a3e34332e2f333036303638353536322c +43342d2f404c3e343a4237443d3a4b46373b3530362d3f38383b3a3a3833 +2f33342f2a37383238303a3b373e4b423d4f644e59586738363c4541433f +41453b393f47494e5f625b5f45201f66cdf9f0f9f2f1e9e8ebeae7e5ebe7 +e3e1e5eef3f4faf8f4f1eff0eff0eef1f6fbfffffffffefdfbf9f7f4f2f1 +f8f9f9fafcfdfefefefffffffffffffffffffffffffffffffdfdfefefefe +fefefdfdfefefefefefeffffffffffffffffffffffffffffffffffffffff +fffffffffefefefefefefefefff7ff862a3047355dbbd79aa2b44c0e5053 +809f8d4e2a140009000d481700024826000000524657f1c54465625e4e50 +59575542322032340f848d838e8a9088827e7e80827d7a8283807c797979 +7a786e77776b6a767c757b77757168676c6d645d696c666b6a6e6f676971 +6d6662626a6b6864615d5955595855535960656566625f5e605e5b566761 +5b5b5f5f5c58544f56574e4949565f575c5553554c51504b4c45575b605a +373250514a4f46524a4d4f50535048493a443c453d42484d3c4b4e443a3b +3a3b48423b3f3e433e42474d3b2a343c3e494b4c343a443e48374945483e +39444542403e3e3d3c3a37373d3f40403f3d3a393f3d3d3e3e3d3e3f453f +3d3c3834363a38373737373434353531303436333133333332303133312e +2c30312f2e2f2e2c2c2b2b2b2b2b2a292d2c2b2b2b2a2928262728282929 +292a2c2a2827262728292b27282a2a26242427272728272727262b292726 +262727272724222326272421212324242322222222212626242b363d3b38 +566e13202a27252828282520150a0d0c112d242225241d0c145368586e73 +5f7cec8a97bc82a1733950643a3e2f2e332f30363030252c3d2727262925 +2633271c2026291e201d1c1d1d1d1f22362c2b26272b282e282e2f2c2c2d +292236261f21323e30262c3429362f2c3d3a2b2f29242a21332c2c2f2e2e +2c27232728231e2b2c262c242c2d29303d34304258424d4c5c2d2a303935 +3935373b312d3139393e4d4f484a2f0a064cb3ddd5dfdfe3dbd8dbd8d5d5 +dbd9d5d4dbe6edeef1efebe8e6e7e8e9e7eaeff4f8fafafaf8f7f6f4f2ef +edecf3f4f6f7f9fafbfbfbfcfcfdfdfefdfdfefefefefefffffffdfdfefe +fefefefefdfdfefefefefefefefefefefefefefefefefefefefefefeffff +fffffffffffffdfdfdfdfdfdfdfdfff2fc7e2025392245a1bf8ba1c6712c +5348789c8b543b30143d2e5baa79294d9e7d38223c8e7a7bf6b11f393f48 +4547423e4538281a2c361ea4bebfccc2bcb6bbbfbdbfc1bab6bdbcb9b6b3 +b3b3b3b2acbabcb0aeb6b8b0b8b6b8b6aeacafaea49eb0b7b2b4b0aca698 +98a2a29fa1a0a0a2a4a5a39f979296969797989b9a98a09e9b9c9d9f9994 +a49e969291908a858581898b8581818f988e8e847f7d72777977736b7f81 +827f6a677c7d848b7c8581878685847a6c665159535f5f6b777f6a747669 +5a534d464e4846535f6e74776f705c4d565e606868674d51574f59455550 +544d4b5b5e5d6061626362625f5d61605f5f5e5c59585b5958595958595b +625e5c5b575352565453535656535354514d4c50524f4d4f4f4f4e4c4d4f +4d4a474b4c4a494a4947474646464646454446454444444341403e3f4040 +3e3e3e3f403e3b3a393a3b3c3e3a383a3a36343437373738373737363937 +35343435353533302e2f3233302d2d2f30302f2e2e2f312e2b303b43484a +45436473080f1a1a171718191812070003030821120907070b030a4b6252 +676a4f69d77380a56c8b5e243b4f25292221262223292323181f301a1a19 +1c191d2a1e13161c1f141613111212121417291f1e191c201d231d232623 +232420182d1b14162733251b21291e2b2421322e1f231d181e1527202023 +2222201b171b1c17121f201a1e161f201c2330272031422a3536481b1c22 +2d292f2b2d312721262e2c313f4039371a0000359ac5bac4bfc0b8b4b7b4 +b1b1b7b4b2b1b8c2cbccd0ceccc9c7c8cbcccbced3d8dee0e0e0e2e1e0de +dcd9d9d8e0e1e3e4e8e9eaeaecededeeeeeff1f1f1f1f1f1f1f2f3f3f3f3 +f4f4f4f4f4f4f5f5f6f6f6f6f6f6f9f9f9f9f9f9f9f9fafafafafafafafa +fbfbfbfbfbfbfbfbf9f9f9f9f9f9f9f8f8ecf97c1f212e112b8099607394 +3e00261b47675a24110a001909317948022671501000176a5457d696051e +1f211a1e201f23150d021c2100757d7583838b88847f77787a7578838582 +7c7878797e7f798485777179786e7370757570737a8381767874686b727b +8682868f867c766d6461666d757b8080847d73686361625f635e5d5d615f +5851615b56585e63656468646a675d52505a61575d585c625d605b565852 +6768696041394b48494d404a474d4f515756525447544b5247494b4e3c4a +514843464b4c5a544a4a44433a3f4a523f2d353b3d4649483037413c4734 +4942463a3541403a3937363433302d2e3335353534322f2e32302f30302f +30323632302f2d29292d2b2a2b2d2d2a2a2b2b27262a2c29272929292826 +272927242428292726272624262525252525242326252424242321201e1f +20201f1f1f2024221f1e1d1e1f20221e1d1f1f1b19191c1c1c1d1c1c1c1b +1f1d1b1a1a1b1b1b1b1816171a1b18151517181817161615141014172129 +2e302a23435300000a0a0e0f0906070504000200000b000000000000003e +544457593f58c46170975f7e4d11283c1216302e312b2b33323735494f25 +38353232292826363a261d1d24232325252425282e282a2629322e2f2d33 +36333132312e31353f3833353339313a302f332a363126352f35372a4239 +453e3c3e3a39373439302e3a3834372a36413e39444a4b545b605f45483f +45403f3f46434651545c4a504a464f4d4f654f55532b2067c0f5f6eee8ed +ede0d3d6fbfcf7eee9ebeae8f0f2f5f8fafaf6f6f4f3f2f1f3f6f8faffff +fffffffffffffaf9f7f7f7f7f7f7fafafbfbfcfdfefeffffffffffffffff +fffffffffffffffffdfefeffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffbff7a31424452c2cbebde +839b3e254eb8e2df81383aa6190007432c000055360000025a42065dffc9 +36595a5a4d625d5b5337251f271d058c978c8d93948a85817d7f84828188 +8584827f7c7b7b7c797c7974767e7e797477726d6c6c6c72726a706d686a +696e6c696c6f6c6c6d6e6b6f6c66605d61655f5f5f5f62626a6e68615d5d +606261605e61605c57555a5b5a59555b5e5a5a56574f5252575c575a4e52 +59575f5758564e455c564a5353514b4e4a44494f4f52465350564b474749 +484e4e4d4f524b404e4a4b4a4d474544414c4f433c3c424a4e451d172517 +30192422241a213d454445423e3d3d3c39373f3f3d3e3f3e3e3c3f3d3d3e +3e3b3b3c413c393838363a3e3a37363733313132333130323434302d3431 +2e2d3135332e2d3032312f302f2e2d2d2d2e2f2e2c2a2e2d2c2c2b2a2a29 +282828292b2c2c2b2c2a27252526292a2c2926272828282a262627272726 +26252828272625252728292522232728241f21232323222121211d1c201f +1b212b3241374a871b2a272a232526262522170c090c2e7ea3a392819055 +1a2d424973825a5c28393a2b33383848453b40492220231d1d252429273d +43192c2926261c1e1c2c301c15151c1b1b1d1d1c1f222620221e212a2627 +252b2d2a282928242429332c2729272d252e2423271e2a251a2b252b2d20 +382f3b343234302f2d2a2d24222e2c282b1e2833302b363c3e474f545338 +3b32373233333a373a45485041473e3a423d3e523a3f3a100448a1d9e2dd +d7dadaccbfc2e7eae9e1dfe3e4e2e7e9eceff1f1efefedecebeaeceff2f4 +fbfbfbfcfcfbfbfbf5f4f4f4f4f4f4f4f7f7f8f8f8f9fafafdfdfdfdfefe +fefefffffffffffffffffdfefefffffffffffefefefefefefefefefefefe +fefefefefffffffffffffffffffffffffffffffffffbff76272f272e9eaa +d2cd7c9a3f2343a7d0d684495cdd6645679f7e2a45b18830284da67f2461 +f0af234a47473b4e4242432d1e19211f12a9c5c6caccc3b9bdbebbbdc2be +bcc3c0bfbdbab7b6b6b6b4b8bab7b9bcb9b2afb6b8b7b8b6b2b5b3abb5b5 +b1b3afaea6a1a4a7a6a8acaba2a4a7a7a2a1a4a8a2a2a3a4a09d9ea2a09d +999b9ea09f9e9d9e9d978e8a8b8e91928e969a969792938a8987888a8285 +7a8087858c838080877c8481828f86838186827c7e7f797767716e777172 +777a7074757475776d6069656768706f726f676f6f665c5c62686b5f3329 +35243d242a272b262f4f5c5d636362636362615d605e5c5d5e5d5b595c5a +5a5b595656595e5b58575553555955535253525050514f4d4c4e50504c49 +504d4a494d514f4a474a4c4b494a49484646464748474543464544444342 +3f3e3d3d3d3e3e3f3f3e3f3d3a3838393c3d3c3936373838383a36363737 +37363635363635343333353635312e2f3334302b2d2f2f2f2e2d2d2e2c29 +252932393d3f4b42588e10191a1e16171919181409000002216e8b856d5d +76440d243a436d7b4e4c152423141b22233633292e3717151812121a191e +1c31370d201d1a1a1314122226120a0a111010121211131619131511161f +1b1c1a2024211f201f1a1b1d27201b1d1b21192218171b121e190e1f191f +21142c232f2826282423211e21181622201c1d101b26231e292f2e36393e +3d252a212a2527272e2b2e393c423238302c322d2e41272a260000338cc3 +c7bfb9babaab9e9fc4c6c6bebbbec0bec6c8cbced2d2d2d2d0cfcfced0d3 +d8dae5e5e5e6e6e5e7e7e2e1e1e1e3e3e3e3e8e8e9e9ecedeeeef0f0f0f0 +f2f2f2f2f5f5f5f5f5f5f6f6f5f6f6f7f7f7f7f7f9f9f9f9f9f9f9f9fafa +fafafafafafafbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfaf8f3fa73252b1f20 +8689aaa14e6c1700167ba8ad591c2aa6301239765802147e5a0600267f5d +0848d89402231f1f13292423210a0201110a007b857a7d878c837c787272 +777678817e7d797673747679747878747679776e6b6f6f6c6d6b69727d73 +72695f62677174747778737275706160636362666f756f6d68655f5b6064 +615d5b5c5f615e5b57595a5755565e636767636867605e56534a4f515b65 +6467565962616b605d5854454f4945514b484345433f464f51554c595458 +4c4443423c4346484e5552495854514c483d37373847483c35353d464d44 +1e192a1b361e262023181e39403d3d383432322f2d2a3332303132312f2d +302e2e2f2e2b2b2d322f2c2b29272c302c2a292a29272728292726282a2a +26232a272423272b29242427292826272625262626272827252326252424 +2322201f1e1e1e1f2021212023211e1c1c1d2021211e1b1c1d1d1d1f1b1b +1c1c1c1b1b1a1c1c1b1a19191b1c1d1916171b1c18131517171716151514 +0f0b0e10181f23253022376d0005090e0d0e09080809060000000e546f6b +5a4d653200152d375f6b3e3c041113060f1412221f1518212c2c312a2930 +2e32303b3a23312c252e2b272843482c2026262525262626262923252d2a +2d352f2c2a2b2a26272b2d2d242b352e282a25282f3c3a333d2e332e2e38 +3334322b352f473c3239282f2b283b38424b42404641435351423f46505b +796e545f53574a5a5949423b424b45423745484e54453e544e5e61534324 +2355ace4fff9eff3d7b7e1e9f3f9f7f1ede9e7eaeff4f8fbfafbfdfbf8f5 +f3f2f1f1f3f5f6f9fcfefffffffffffffefefffffcfcfdfdfdfdfdfdfdfd +fdfefefefefefefefefefefffffffefeffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffff8ffff663648 +3fcbff8d9fbdafa6483598fec5c5730000865f1c4c1a0012433100000d5f +3a000675ffd03945535d4d515a5b5739272c2d2303909a928a94928b8b87 +8181868583887f81888786818283807f7a7a7c7d8081797d766f7573757b +7770726e6a6d6b717471716c666a73756e71726d6665696e615f61666664 +69726a6660606265686a626668645d575a5d525c565c5c57615954555a5a +5a59575a5c5a56575f5b5959494a65594351564854574e43464f50514c54 +53574f46454755554d494c514a4245454e4951474a473e424a4b45484b46 +504e332725192b212c25251d20353d3f4743413f403f3d3c3e3c3a3b3e40 +403d403e3e3f3f3b3a393a3836353636383a3b3837363530303234333130 +3235312c34322e2c2f33312d2e303231302f2e2e2e2d2d2d2e2d2c2a2e2c +2b2b2a2b29282a2928292c2d2c2b292827252526282a2727282a2b2a2a29 +262626262625242425262625232325282826242527262320222324232120 +2021242326231c1d2327312a39971c2c2123242626262522180d100a0d3c +4b494a4c4a361a2e373a6f8e42557349484a55394a433647433f1e1e231c +1b222026242f2e1725201924211d1e393e22181e1e1d1d1e1e1e20231b1d +2522252d27242223211d1e2224251a1f29221c1e191c23302e2731222722 +242e292a28212b253d32282f1e25211e2f2c363f36343a35354543343138 +434e6c614752464a3c4c4b3d342f343f37362e3c3f4247352d4139474738 +2607043996d0f4e4dadcc0a0cad5e3ebeae7e5e3dee1e6ebeff2f3f4f6f4 +f1eeecebebebedeff1f4f7f9fbfcfffefdfcfbfbfcfcf9f9fafaf9f9f9f9 +fbfbfbfcfcfcfcfcfefefefefefffffffefefffffffffffffefefefefefe +fefefefefefefefefefefefefefefefefefefffffffffffffffff8ffff65 +2a331ca1ea6885aaa096331e82e7adb5730e1abbaf79a9711e5e9988352b +58a97d25146af6b62b3c464c37373d42472f202627220da9c6cac7cec4bd +c3c1bbbbc0bfbcc1b8bdc2c3c0bdbbbab1b0b3b7bbbab7b5b0babab7beba +b3b7b3aeb4b1b0b2adafb0aca9a59fa5afafa5a8aba9a4a3a6ab9e9c9ea3 +a29da0a9a29e9b9a9ea1a5a79fa3a59f958e8f938d99929899949d958f8e +91908c8885888a8987888f8a848783808b7f798c8573848b857a7c827f7c +7279767c797377747a777471787d786d6e6b736e776e716e63646b6c6669 +6b646d6849393526372b322c2f292e48545966646264656564615f5b595a +5d5f5d5a5d5b5b5c5a565556595755545353535556535252514f4f51504f +4d4c4e514d48504e4a484b4f4d49484a4c4b4a4948484746464647464543 +4644434342403e3d3f3e3d3c3f403f3e3c3b3a3838393b3d3737383a3b3a +3a39363636363635343433343433313133363432303133322f2c2e2f302f +2d2c2c2e33302b2d333535353b38479e111b14171718191918140a010500 +0029332b22262b2009222f366d8a3c4c633833333d2335302335312d1313 +18111017151a1823220b19140d181713142f34180d131312121313131417 +0e1018151a221c191718181415191b1a10131d1610120d101724221b2516 +1b1618221d1e1c151f1931261c231219151223202a332a282c2728383627 +242b333d594e343f353a2f3f4031292127312a261d2b2e3237251b302635 +3625140000247eb5d9c7bdbda180aab2c1c8c7c3c1bfbdc0c5cad0d3d6d7 +d9d7d5d2d0cfd1d1d5d9dbdee1e3e7e8ecebeae9eaeaebebeaeaebebeded +ededeeeeeeeff0f0f0f0f4f4f4f4f4f5f5f5f6f6f7f8f8f8f7f7f9f9f9f9 +f9f9f9f9fafafafafafafafafafafafafafafafafbfbfbfbfbfbfbfaf0fa +fb612a301895d74b60807972140059bd8b944f00008374447d4e00386855 +070331845a070056e09b06111a2110141f24250c04101710007f877f7982 +857e7c756f6f7675757a7175787976757676706f6f72757574736d75716b +6f6a666d736d6a615a5f636c726c68605a617172626464615b5a60665957 +585d5c585d66615d5b5d60616262595d5f5b58555b5f55605c6260596155 +4d4a5054575a5e615c5b5a5b655e5756494452443b4c4e3b464942393e49 +4b4e49504e51493c3c3944443f3d434a494044444a42483938352f323c3d +373c423e4e4d342b2b1f352a2e24241b1d3237363d39333132322f2e302f +2d2e3133312e312f2f302f2b2a2a2d2b292827272a2c2d2a292929262628 +2a292726282b27222a282422252927232527292827262525272626262726 +25232624232322211f1e201f1e1e21222120201f1e1c1c1d1f211c1c1d1f +201f1f1e1b1b1b1b1b1a1919191a1a191717191c1c1a18191b1a17141617 +18171514141416121414191b1b1b2017267d000703070e0f090808090701 +0300000b1109090f160b0012242b617f2e3b532622253116241f12211d19 +2b2d35302d2f28282b28282b23291f291e251e222a292a252a2725262726 +27292629322c2b3029272e2b2624272b2c2a332f312e353d30272b36372e +3a2f36383e36372f303c35393c3a30452c40373a47434b4a403f42433d4a +4f494240454e56462d463d412e3f3f3438353d423e3d3840424b5148485d +5e565b534e5b4c2d19438fd1faffedeff2edecf3f6f2f0f3f6f3efedecef +f0f3f3f6fcfffffffefcf9f9f8f7f6f5f3f3fcfcfafbfdffffffffffffff +fffffffffffffffffffffffffdfdfdfefefefefefeffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffefefefefefefefe +fffff85c2d4139ffff84f8ffff873d26c3e3aceece1a1a303b3023000061 +3e00000f5f3000121191ffee8160515560645c595d47261d1e2807919b96 +8a8d8d8e95938a8789878184838486838180858e908d85858280868d7e83 +7a71797c7e837e7879747276707678787b766d6f7672696c757779787a7c +7a73727671666469716c67666564656967676564626364655b665f605a55 +605a5a5b5c5f5e5b5c5d66605452595d5e62506382715567725c55595249 +4d53535257585356554a4d4b555e5e564c48484746454a424a4753534b42 +474c494d4e434950524e41423a3f483b3d383035373c4542414142434140 +403d3c3e41434442413f3f403f3b393a3c3b3b39393838373e3b39393836 +343639383431333635313233322f2f31323131323333312f2f2f2f2d2c2b +2c2c2c2b302f2e2d2d2d2c2a2f2d2b2d2e2f2e2d2728292928282b2c282a +2b2b2a282523272828272726262525262725232325272526272726242323 +242425242221222224262a2a2523282a2e2c2f9814292426262828272522 +180d0d0f143e50504c4b544d2c2b272b658b4b2e603d3b3f513e373f3a30 +3c351e20282320221b1e211e1e21191f151f141b14182221221d221f1f20 +212021231e212a242328211f26231d1b1e222322292527242b33261d212c +2d2430252c2e342c2d2526322b2f3230263b22362d303b373f3e34333637 +2f3c413b3432384149391d362d311e2f2f2628282d352e302d35373e4439 +374c4b41443934403113032d79b9e2e7d4d6d9d6d9e3e9e8e8ebedeae6e4 +e3e6eaedeceff5f9fbfaf9f6f3f3f3f2f1f0eeeef7f7f7f8fafcfefffefe +fdfefefefefefdfdfefefefefefefdfdfdfefefefefefeffffffffffffff +fefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfd +fdfdfefff958232c17f4f05edbf7fb6f1e06a5c58ad4c51b21476c6d5c1d +4aad7b2a1d57a96f22251489f7db6b4a40444a4a3e404d3f2118172710a8 +c5ccc7cac2c1c9c8c0bdbebcb9bcbbbebebdb9babdc0b3aeb3b9bab8b8bd +b0b9b6b2b6b3adb0b1afb3afafb3acafafb0b2aca2a5aaa8a4a8aaaba9a8 +a9aba8a1a1a5a49d9da5a8a39d9c9d9ca0a4a3a3a19d9b999a9c96a39b9a +948c96908e908f92908a8a8b928f86878b8c8a928896a190859b9a817e87 +837c818785818280797c7e767b77787e837f79787a797672756a706c7676 +70686c716e727264676b6b6453524a4c564c4e4b474e525a646362636465 +6362605c5b5d6062615f5e5c5c5d5c5856575b5a58565453515057565455 +545253555554504d4f52514d4e4f4e4b4b4d4e4d4b4a4b4b494747474745 +4443444444434544434242403f3d42403e3d3e3f3e3d3a3b3c3c3b3b3b3c +383a3b3b3836333137383837373636353334353331313335323334343331 +3030313132312f2e2f2f31312e32393b3a38383a3d9f0c1a171a18181818 +18140a010105082e383225233231171e2028668c4b2a573029293928212c +271d292215171f1a17191214171414170f150b150a110a0e171617121714 +13141514151711141d17181d16141b18141215191a171f191b181f271a11 +1520211824192022282021191a261f2326241a2f162a21242f2b33322827 +2829222f342e2725283138280d261e22112222191b181e241e1f1b23252d +3326253a3a303428232f2002001662a1c8ccb6b7bab6b8c1c6c4c3c7ccc9 +c5c3c4c7cacdcfd2d9dddfdedcdcdbdddddcdbdadadae4e4e4e5e9ebedee +efeff1f2f2f2f2f2f0f0f2f2f2f2f2f2f3f3f3f4f4f4f4f4f6f7f7f8f8f8 +f8f7f9f9f9f9f9f9f9f9fafafafafafafafaf9f9f9f9f9f9f9f9f8f8f8f8 +f8f8f8f8f7faf455222b15ece047bdd8de570c0083a16eb9a600001b3d43 +3c0229875200002f84500a120376ddbb46211519232922222b1b04020715 +007e8680777a7c7c7e7a747276747071707173716e70747b797775797977 +7981737d7670716f696d6f6b675f5f65646b6b656158505a6a6c60626463 +5f5c5b5d5d585b616159565f65625f5e5e5d5e605b5b5958575b60625460 +5b5d59525a524c4c4c5055545b5c5f5951515858555847546555475d654d +4447423a41494a4a4d4c4649463b3d3a424c4d453e3a3b3c3c393f353d38 +40403a2f363b383e4237414a4e4f43474043493c3c352d3031343a363331 +3232303031302f313436353332303031302c2a2b2f2e2c2a292827262f2d +2b2c2b29292c2f2e2a27292c2b2728292825252728272828292927252525 +2725242324242423262524232322211f24222020212221201e1f20201f1f +20211d1f20201e1c19171c1d1d1c1c1b1b1a191a1b191717191b18191a1a +1917161617171817151415151513171a2021201e1d191c7e0005060a0d0b +0805080b09030100000d140e06091719040e16216086411e48201b1c2d1b +141d180e1a112729333030332a2a312d2d3823362a282a2b20262d2a2c2b +2b2724282c2c2a292d2b2f29282d282a35312f2f31322f2b2d2d312c303a +322d3b38332c2f2d36403a313f3d42574249444b465f4d5e53595e534d44 +44463e3f36353941423f414640403d3c41403c3d353b4a48413c3a434e49 +494d4e4a4f5d56544b4a61625365663d2b3e89d6effffff3e4e1e7eceff2 +f6f6f6f6f5f4f0eff0f0f2f4f7fbfdfffffffffffffefcfbf5f5f4f5f6f8 +f9fafcfcfdfefffffffffffffffffffffffffefefefefffffffffeffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff5b2c4c2cbbff8cffffa53d4235ffffcdffd42b230a +000000204d27000020552f001b1c2c89ffc1564e5e5859515e5d5c40222a +201d0f909b958f888c8e8f908b888b89868888878883807d8287948f8582 +7f7c868f83857a7273797e807d7a7b7276766d71757578736a6c7270696a +72777e7d7a787b757577766c64676e6c6a6b6865666b6d665e5b5e626664 +65676261615f615d645f54595d5b5d59555e58595859575d567189765863 +71605457524e5153504f55514e51584f5554555a5a544d4c4e4f47484d47 +4a4a4e4e4e464c4d484a4f484748504f4453434c4a3f46463f3c3a414041 +424243424444424140424445464441404041403c3b3c3a3b3d3c3e40413e +3d3b3a3a393636363a37343232333435303435333133363934333333312f +30322f2d2b2a2b2c2c2c31302f2f302f2e2c312f2f2e2e2e2e2e282b2d2d +2b2a2d2e2a2c2c2928292a292a2a2a2a2929282727282827262626272426 +29282523232425252524232223242022292925242b2b2e312d9a1f292727 +272827272621160c09080a2e52615c555a50201b1f2452685536675d414e +464f49454a4a9a801a1c2623232620202723232e192c22202021161c2522 +2423231f1e222626242325232721202520222d2926262829262323232722 +26302823312e292225232c3630273533384d383f3a413c554354494f5247 +4138383a323328272b333431343933332d2c31302c2d252b3a38302d2934 +413c3a3e3f393e4c434136354a4b3c4e4f2712236fbad4e6eadcd0d1d9df +e5eaeeedededecebeae9e9e9ebedf0f4f8f9fdfdfcfbfaf9f7f6f0f0f1f2 +f3f5f6f7f9f9f9fafbfbfcfcfdfdfefefefefefefefefefefffffffffeff +fffffffffffffefefefefefefefefefefefefefefefeffffffffffffffff +fefefefefefefefefefafe55223c139ddf67edee8c262a1bf7f9b0fac92b +291f1e32205d9b732931639d701e301e267efeb13e35484541373f434c38 +1d25191a14a5c3c9cac6c2c2c2c3bebabdbdbabebec0bebcb6b5b8b9b7b2 +b5b9b8b3b4bbafb5b4aeafb0aaaab0b2b3acb0b2a8acaeaeb0aca2a2a6a6 +a6a8a7a9a9a9a6a4a7a09fa3a4a1a2a5a59f9c9d9c999da2a59e96939599 +9a9ba1a49b989490938d928d83878b888985808b8b8f8989838b8da0a38e +8493937e767e7e7b83858281827c77787f78817d7a7f817d797a7c7d7374 +7670716f7373736d72746e71746d68676c685b6a565f605760605a5a5862 +616264646362626162605f61636463615e5d5d5e5d595859595a5a59595b +5a5756545355545252555653504e4e4f50514c50514f4d4f52534c4b4b4b +4947484a4745434243444444464544444342413f44423f3e3e3e3e3e3b3e +40403e3d3d3e3a3c3c39363738373a3a3a3a393938373536363534343435 +313336353230303132323231302f30312d2d2d31393c3b39383f3ba1171a +1a1a1718181816120a010000001f3c45383137310a0b1825576e5a386354 +313a303935313636876d11131d1a1a1d16161d1919240f22171516170c12 +1a171918181412161a1a181718161a14151a1517221e1d1d1f201d181917 +1b161a241c1725221d161917202a241b29272c412c332e35304937483d43 +463b352c2c2e24251b1a1e262724242922221d1d22211f20181c2b28201a +17212e29272b2c272c3a323025243c3b2e3e3d12000e58a2b9c9cdbcafaf +b6bcc1c5cacccccccdcccac9cccccfd1d4d8dbdfe5e7e6e5e4e3e3e2dddd +dedfe2e4e5e6eaeaedeeefeff0f0f0f0f2f2f2f2f2f2f4f4f4f4f5f5f5f5 +f6f7f7f8f8f8f8f7f9f9f9f9f9f9f9f9fafafafafafafafafafafafafafa +fafaf9f9f9f9f9f9f9f9f8f6fd55233c0f95d155d8d87818200eddda92db +a9090500000b003e744c020a3a774e0621131a6ce4901a0d1f1d1d162328 +2b14000f0909007c857e7873777873747373767570727071726f6b6a6d72 +7d7a7776736f747c7279776e6f6f6b6b6e6b685f646a666a675f554e4954 +686c615f6364625e57555a585d64645d575a615d5d605e595c5e5e554d4a +51565c5a5757565759585851524c3f464b4d545048505053514f484b495c +66524557604c434743404648474649443f41463e4643464b4a433c3a3c3c +34373c383c3c403f3d34393b35383e39393d46483f50404b493f45433936 +32373433323231303031333433353738373532313132312d2c2d2d2e2e2d +2e30302d2e2c2b2c2b29292b2e2d2a2828292a2b262a2b2927292c2e2a29 +292927252628272523222324242427262525252423212624222121212121 +1f222424222122231f21211e1c1d1e1d1f1f1f1f1e1e1d1c1b1c1c1b1a1a +1a1b17191c1b181616171818181716151615110f16192022211f1d1e1a80 +000509090a090505070b0a0500000000151e1611191500001020536a532d +5745242f252e2a262b2b795f2f2e332f313834352d282a30243227252d23 +192b311c18202a26272f3738332e3d333331343730323533333435343231 +423c3a333c4a403751423a3c36393a413b3c4447445241452e322f34312e +242835312c273a4130363a32343d3f41484f53474a545a44475a433b424b +5a615b5a514e5a66615a58545553625f4f484b5b68514f4035416ab8edfb +fffef4ede7e1eaedf3f9fcfbf8f6f7f5f1eeedf0f3f5f7f8f9fcfeffffff +fffffffffefefdfdfafafafbfbfcfcfdfdfdfefefefefefefefeffffffff +fffffefeffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff53324e28322a48a9a64c3d2812ffff +7d8a69360400000f1a562500001c5c25000c10233291ffa73d56625a565d +595a543429513f2710909d8f91898e8a898e8d8b8f8c8a8c87888b898782 +807f877f78777779858e8f8b82797278807a7576756b7071666b77727371 +6a6a72746b6a6f7375746d6965656b70716d686c6c6d6d706c68686e6d67 +605e60626360675f6160636764646f6c5e61635b605a5f675c5a545e5e63 +667a887c65636d665e5e5a5759545051504c4d4f594d595755504b4a4d52 +5353484e4e504a4c484645454b4c47464d4e4c484742434d4a4c4d444c4a +44433d3d3e43454646444546424141424342403f413f3f40403d3c3e3c3d +3d3b3f4346433d3939393835343537343334322f31362f34363432343638 +353433343432353931302f2f2f2f2f2e302f2f2f302f302f3231302e2e2e +2f2f2a2c2e2d2c2b2d2f292c2c28292c2f2f2b2b2b2a2a2928272a292727 +272726262428292a29272626262727262525262826282c2b26252d2e2628 +24942b232120262727252621160d061112364c52525951572b180c0b3751 +251725526738403b3a5487675f6f25242925272e2a2b241f21271b291e1c +251b1123291410182420212931322d28352b2b292c2f282a2d2b2a2b2c2b +2929383230293240362d473830322c2f303731323a3d3a48373b2428252a +27241a1e2925201b2e35242a2c24262f31333b4243373a444a3435483129 +303a47504949403d4955504947434442514e3d3739485137342519224c9d +d2e2eeece4e1ded7e2e4eaf0f3f2f2f0f0eeeae7e6e9eeeff1f2f4f7f9fb +fcfcfcfcfcfcfbfbfafaf7f6f6f7f7f8f8f9fbfbfcfcfcfcfcfcfefeffff +fffffffffefefffffffffffffefefefefefefefefefefefefefefefeffff +fffffffffffffffffffffffffffffcf9fb4829451f25142b8584312e2510 +fcf36d81664124242d566dac742b2c64aa6b24291a1e257ffb92273f493e +3c423940442c244c382415a2c3c3ccc4c4bdbabfbdbabebebcc0bcbebfbf +bbb8b4b3bab6b8bab8b2b0b3b4b5b9b7b5b9b8b1b0b3b2aaaeb2a5abb6b3 +b4b3a9a7abafa9aaa6a5a6a7a5a39e9c9c9fa3a4a8aa9f9b9b9e9c989aa1 +a29d969495979595a098979393948c8d9794878b8d878c8687938e8e848c +88909aa59c908d8f8b7d797d7e7f858581827d7775768074807f7d7b7672 +767979766b71737570746f6e6d6d72756e6f7576736d6962606863666c66 +6e6c6766616162656766636161625f606061605f5d5c5e5c5c5d5d5a595b +595a5856585c5d5a535252545351505153504f504e4b4d524b5052504e50 +52524d49484949474a4e4645444444444443434242424342403f4241403e +3d3d3e3f3d3f41403c3b3d3f393c3c38373a3d3d3b3b3b3a3a3938373837 +3535353534343132333433313030303131302f2f3032333330333a3d3d3c +3036329b231414131516161616120a02000a0a283a3b31362d351208070d +3f5b2e1c254c5b272c27264073534b5b1c1b201c1e2521221b16181e1220 +15131a1006181e09050d1814151d2526211c281e1e1c21241d1f22202122 +2322201e2e26241d26342a213b2c24262023242b25262e312e3c2b2f181c +191e1b180e121d19140f2229161c1f17192224262b3234282b373d27293c +231b222a363c35352c2935413c3535313432413e2f272b3941262312040d +3280b5c3cec8c0bbb7b3bec3c9cfd4d3d2d0d3d1cdcacacdd1d5d9dcdee1 +e3e5e8e8e9e9e9e9eaeae9e9e8eaeaebebececedefeff0f0f0f0f0f0f4f4 +f5f5f5f5f5f5f6f6f7f7f8f7f7f7f9f9f9f9f9f9f9f9fafafafafafafafa +fafafafafafafafafafafafafafafafafaf7fd4c2c461a1c071d77782827 +2004e8d7495a3d170000072e3f7d4500043c80460a1711181c71e3730216 +211919242025230807362813007a867878707672697073747a7975756e70 +7473716d696b77736e6d6863686e71757674707577706e6e6c636b726c6e +70615651505a74796660656665645c575759646968635c5d5a5b5d60605a +5b5e5a524b494f53565151474c50595d57555b5545494d4a514b4b544f4e +464e494d525e5d554f54594f4e514e4d504e494a464140414b3f4b4b4946 +413d3e40403e333b3f423f42403c39383b3d3535393a3a373631323d3b3f +4a434b473f3c35333233353533313132313434353433313032303031312e +2d2f2d2e2d2b2e3233302c2a2a2b2a2827282b2827282623252a23282a28 +26282a2d2b2827282826292d272625252525252425242424252423222524 +23212020212221232524212022241e21211d1d2023232020201f1f1e1d1c +1e1d1b1b1b1b1a1a17191a1b1a18171717181817161617171715191b2123 +23221515117a0c00030205040203070b0e0a0204000b14120e160d190000 +010c415c2b151b404f1d231e1d376a4a425239323026262e2b2d2a222326 +2b2a2028312d20262d2524252b282b3742433c354334323236352726302f +2f2f2f30333736383a2c293331313d2926372d312627333a33372f3f4650 +393839304237393c383f423f5659414b3d3b434943414b534a554d4d4752 +4d515a5053515359586064575c5d51515a554f5a533b3d4b44444c434c44 +464424244089d4f5fafcfcf6f1edeceaedf2f9fcfafdfffffffcf7f3f2f3 +f5f6f9fafbfbfffffffffffffffffffffffffffffffffefcfcfcfcfcfdfd +fdfdfdfdfdfdfdfefefdfffffffffffffffffffffffffffffffffffefffe +fefeffffffffffffffffffffffffffffffffffffff4030363b303d343526 +1f353538638d4f445a76423332543b1f0000136327000c25211d329dffb0 +465a5a645a535c564e3525432e230b8b9d8992898f838f959491918c898b +8989898887868686827a7576797d858c86807d766d737a707476746a6f73 +676c6f6c72756e6b6d6d6c6c6d7173726f6d65686e71706c696b71717275 +70666569696969696b696764675d656163685e66656c646963585f5f5e69 +5c5c5b655b595e676f70665e615e5957535355504b50565456565c4b5654 +4a4e5354504f50524d514a4c434f4a4d45474b4b49474a4e414548434b42 +4d42413c4543424a443e40464b4a484646483e3e3f3e3d3a3837403e3e3f +3f3d3d3f43433e38393c3e3a3e3d3b3c3a37353538333639372f31383234 +363333323333353332343433373d313131323332302e2d2d2c2d2e2e2f2d +3031302e2d2c2f312c2b2c2c29292c2f282c2d2a282828262b2a2b2a2928 +27272a29272728282624272727292a2a2725262626252525272824232624 +2223292c2c2920913724282c252626252522170f0f0d073459645c5f4f58 +30201203141539550d717b494738403c373228492f28261c1c2421232119 +1a1d2221171f2925181e251d1c1d252225313c3d362f3b2c2a2a2e2d1f1e +2827262626272a2f2c2e30221f292727331f1c2d23271c1d2931292e2535 +3c462f2e2f26382d2f322c3336334a4d353f2f2d353b35333e463d473f3f +39443d414a4041404248474f5346494c3e4049443e49432b2d3b3432362c +352a2d290a0a2671bfe0e7ecede7e4e2dfdfe2e7eef3f1f4f8faf9f5f0ed +ecedeff2f3f4f5f4f8f9fcfdfdfdfdfcfffffffffefdfdfdfcfcfcfcfcfc +fdfdfdfffffffffffffffefefffffffffffffefefefefefefefefefefeff +fefffffffefefefefefefefefefefefefefefefefbf7f9352a32382a2e1e +190d13374847577a46435c886e6e739d9177263364b16f1e272f231a248a +f4982c3e3a46423c413d3e2a1e3c282214a2c5bdccc4c6b8c0c6c4c0c0be +bbbebebebdbcbbbababcbbb8b8bbbab6b3b4aeadb4b5b0b6b9adb1b5b3a9 +b0b3a9aeb1afb4b8b0a9a8a8abaaa6a5a7a9ababa2a3a4a4a3a3a7a8a49f +a0a39e96969c9c9d9d9e9e9e9a999d9299929091858d8b938d928d828b88 +86938d8f899185838d9085858c857d787678777b817f7c7f837f7e7d8170 +7b7a757a7e7c777473736e736c71697674776d6f737472707276696b6b66 +6c606b6265616a6867706a6265686b6a656262645b5e5f5e5a5755545d5b +5b5c5c5a5a5c605e5953525655515554545555525051534f5055514b4b54 +4c50504f4d4e4d4d4d48474949484c52464646474847454340403f404141 +3f3e4042403f3c3b3e403c3e3f3c39393c3f383c3d3936373634393a3938 +373635353836343435353331313131333434312f3030302f2f2f30322e2d +2a2c3237393939362e982f151b1c1415151615140b0406050028484d3f3d +2d38160e0d041c234c661772773c34232c29231e1435261f1d13131b181a +1810111419180e161e1a0d131a1211121916192530312a232e1f1d1d2322 +14131d1c1d1d1d1e212420222416131d1b1b27131021171b10111d221d1f +1929303a2322231a2c21232620272a273e4127312220282e28262e362d3a +32322c3730343d3133303236353d4134383a2d2e37342e39341c1e2c2524 +281c2519191400000d57a2c1c7cbccc6c4c2bfbfc2c7ced2d2d5d9dddcd9 +d4d3d4d5d7d9dddedfe1e5e7e9eaedededecf1f1f0f0f1f0f0f0f0f0f0f0 +f0f0f1f1f3f4f4f4f4f4f4f5f6f6f7f7f7f7f7f7f9f9f9f9f9f9f9f9f9f9 +f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fbfafe3b2e31311c +1b090300002234303f5a1d132b563d404972604500043989490016261e13 +197be2800b1914221e1a231f1d0a0429181000788772787075686f757a78 +7a7772737070727171706f71746f6b6a6865686d6868706f696f73686e6f +6d636e766c706a5f5a5b5960707065616265676665625c616a6c68625c5b +5f5e60656058555957555356595a585551444f5055594e5450544b504d43 +4e4c48544c4d49524541474c474a4f4c4a49484b47494c4944484c474948 +4d3d48474045494742403d3e3940393e38474447393a3e3c3a36363a2d30 +312e372c393139363f3c3b41393232363a39353232342d2f302f2c292926 +312f2f30302e2e3034312e2628292b272b2a2c2b2c2727282a27292d2a23 +242c25282927262626262927262828272b31252527262926262222202120 +2321221e2322231f1f1c21231f20231f1e1c21221d1f221c1c1a1c1a1f1f +1f1e1d1c1b1b1e1c1a1a1b1b19171818181a1b1b18141715171414141517 +13121114181c1f1f1d180d791802080c02030103060b0b08090200102a2d +2121111f050409061f244a600e6a6e342e1e25221c150b2c342f27262a28 +2529262b2f2d29282a2d22232322201f20222627292a2b2d2f313329313b +342e2c26262c35342f3336302d28282b343f3c2b2c282a2f302b2a2e313b +4343414242414851463b3a424a40403e434c4e494648384355524f514c4e +3f464b475c50453b5040425f485a334544473d4a454544453f3e39434b4c +4d444247556047485d3d3e21274f9fe6f7fefffcfdf1fdeff1f5f3f9f1ff +fcfffffffffffffffbf5f6fbfefffffcfbfefffffffefefffffffffffdfd +fdfefefefefdfdfdfdfdfcfcfcfcfcfbfcfcfcfcfcfdffffffffffffffff +fefefefdfefdfdfdfffffffffffffffffffffffffefefeffffffff47253b +4728312e5c6d5468503f4e5b6d4751725446696d20000035521c000a2b2f +181b3396ffa545615562515052584f392426274a107ea396838991888f93 +938e8b8a8d8e8c8886898a8886867e837b757f838080847c76767a7b7977 +79797774706e6e706f6f71716b66676c736e696d77746c6b6b68686c6e6c +68686f6d726d6c6e66676c6a6661666868625e6667646568686160636769 +65616062606c65585d635d5a5f5e6366635e616054515358554d4b4f5059 +545159585154545153524e4c4c504b4f48454a4846524b4a494a4845474b +4a4866444c4a4b49454044474545433d434544413f44494b454143464642 +4041424546423f3f40403f3c3b3d3c37393e3d3b3c3e3d39383a3c363537 +3833353937363735343334353633302f30313535332d2e312f30322e2e30 +3233333130302e2f313131302f2e302b292f312e29272c2b2b2d2e2e2d2b +2e2c2c2c2c2b2a282929292a2a292b2e2a2a2a29272628282b2927262729 +2c2a2d282525282d2d28282c2177491e193026242525272c210c07071129 +55584f4b414e2a1f120b112565965448874e3a4a434c3e3c46512a251d1c +201e1b1f1c2125231f1e20231a1b1b1a1817181a1e1f212223252729291f +27312a24221c1c222b2a25292c26231e1e212a353221221e202526212024 +252f3737353636353c453a2f2e363e343331363f423d3a3c2a3547444143 +3e40333a3f3b5044392f443436533c4e273834372c3a343534352f2e2933 +3b3c3d343236444f36374b2b290c113986cddee8edeceae1ede0e2e8e6ee +e6f7f3f9f9faf8f9fbfbf3edeef3f3f5f4f1eff2f5f7ffffffffffffffff +fffffffffffffffffffffffffffffffffdfefefefefefefdfefefdfefefe +fffffffffffffffffffffefdfdfdfdfdfefefefefefefffffffdfafafa3d +1c333f202422546d6385795b4548674c59878281a5aa5e2b2c8ca8622422 +2b291d1e2884fa89213a31463f423f423a28171f2652219bcdcabcc3cabf +c4c7c6c1bebfc1c3c0bcbabdbebcbabab3bbb5afb9bbb4b4b8b1afb3b9ba +b6b4b7b7b5b2adababadacadafafa9a2a2a7afaaa2a5afaca5a5a4a19fa0 +a2a1a0a0a29ea3a09fa1999ba19f9b989a9f9c96909595929194918a8a8d +9193918d8c8e89989386898c85828984828586847f817b7a7e83817a787c +7b827d7a807f787b7c7c7b7b7773737772766f6b72706e7a737170716f6c +6d71706e89676f6b6c6b6664686b6969685f656564615f61666865616063 +635f5d5e5f62615d5a5a5b5b5a5655575651535857555558565351555551 +4e52514e4e545050504f4d4d4d4e4e4b484748494b4b4943434742444542 +41444547444241413f404040403f3e3d413c393e403d38363b3a3a3a3b3b +3a383b3b393939383735363333343433353834343433313031313432302f +3032323336312b2b323a3a3535392c7d44130a1f15151616171e17030000 +081b423e322c26340f0b0a0b153384b76b548d492632303b2c28303b201b +13121614111512171b19151416190f10100f0d0c0d0f13141617181a1c1e +1f151d27201a1812121821201b1f221c171212151e292615161214191a15 +1418171f2927272828272e372e23222a32282a282d3636312e301f2a3a37 +34363133252e332f44382d23382628452e40192825271c2a24252426201f +1a242c2d2e252326343d242537171600002472b9cad1cfcbcac0ccbfc1c6 +c6cec6d8d6dcdedededfe1e1dcd6d7dedfe3e2dfdfe2e5e6edededeef0f0 +f1f1f1f1f2f3f5f5f5f5f7f7f7f7f6f6f6f6f5f5f3f3f3f3f3f3f7f7f7f7 +f7f7f7f7f7f7f7f7f7f7f7f7f9fafafafafaf9f9f9f9f9f9f9f9f9faffff +ff452131340b040025392c4d412a1e2037141e4c4447727e3502005f7b3d +0a14292919131470ef7d091b0f21191b171d1b0e040d143b006b8e806b6f +796c727577747171767575716f72747270706b726b636d706a6a706b686d +7273706e6e6e6c6967656668666262625e5c606567605b5e68655e5b5d5c +5c5e605d59575f5c615e5d5f57595d5b5754585c5c544b5154525457554e +4b4e5153524e4d4f4d5b55484c5047444a47474a4c49494a4442464b463f +3f4343484542494a4346474646433f3c3e423d413a383e3e3c463e3a393a +3835343837355131393637383734383b3939352d333433302e3136383430 +3033332f2f2e313434302d2d2e2e2d2728282922262b2a282b2b2c26272a +2d2826292925262b29292928262626272a27242324252727251f22232221 +251f212125242420211f1f1e211f211e1f1e211c1c1f231e1b171e1b1d1c +1f1d1e1c1f1e1d1d1d1c1b191a18181919181a1d19191918161516141915 +1512131516161b16111119202019191d0e612e00000d0502030307110e00 +00000010332d201a13230404070b18347fb06550894527302a33221d2530 +2d2b26272d2d2c3231303032353837342e2e2d2b2a2a2b2c343434353637 +383734333d41363134322a292b2d313a3c3134333535343d45433f383436 +383a424c404040414548433c3c45424246494a3d3a393c424039373a3f3f +4643454a403b3636393343393636403339412c2d253c4248414742404343 +49453f444246524d4d4f40484e494c5d4e52503e253163a7dfefffffffff +fff5f8f8eefdf5f5f9fffffbf9fffffffffff7fbfefffffffff9f8f7f8f9 +fafbfcfafbfbfcfcfdfdfefdfcfcfcfdfdfdfefefefdfefefefefeffffff +fffffffffffffffefefefefefefefffffffffffffffffffffffffefefeff +ffffff402c4730363e5fb0c2caaa48133b416c7f66260c001b3b0000274b +28000e24243014023f8dffa548678354514f5d83703728262759257e979f +9989888f9593908c8d8f8f8c8c8a8887878785828183807a7d7e7d7e7c75 +737577767473797a7b797674737473737677726c6b6e74726d6f77736d6e +6d696667696a6c6f6b6a716d696b676b6d6b656264686662626668696865 +646661626567656261615f69665a5d615b57615e5e61615f5e5d56525458 +56505057515756535251505254535556544e4c4c4f514c474c4846504b49 +494a4946484b4a4b6245464645474846494a454445414244434041414543 +48454447484544433f42423f3e3f403f413f3f3f3d3b3c403e3c3b3d3c38 +3638393434383835363b3132333434343638333230303132343437313031 +2e2e2f2a2e2f3131323131312f303131302e2c2b2f2b2c2f312e2a292e2d +2d2d2d2d2c2b2b2a2a2a2d2d2c2b2f2f31302c282a2e2929292826252728 +292929292a2828272d2a27262a2f2f2a2330347b5a27262226252727262c +240f0b0b0c0b1e171f2a2f47332510071b3f6e8b88367563394344453e50 +4b5323211c1d23232228272626282b2e2d2a26262523222223242c2c2c2d +2e2f302f2a2933372c272a28201f2123273032272a292b2b2a333b39352e +2a2c2e30384334343435393c3730303936363a3d3e312d2c2f35342d2b2e +31313835373c322d2a2c2f29392f2c2c36292f3722231b30343831373230 +333339352f343236423d4042333b413c3c4d3d3f3b270b15468cc7daf4ef +efeef4e5e9ebe1efeaeaedf6faf4f2fafffffef7eff3f6f7f6f6f3f2f5f6 +f7f8f9f9fafbfcfcfcfcfdfffeffffffffffffffffffffffffffffffffff +fffefefefefffffffffffffffffffffffefdfdfdfdfdfefefefefefeffff +fffefcfaf537233c23262f51aac4d9c56d2b2e2b6682693630165174272b +779e6c202526192c291e4888f8881f3e613d43464c705b25181d28633b9e +c1d1cec0bfc4c9c6c3bfc0c2c2bfbfbdbbbab9b9b7b6b5b8b5b2b5b6b5b8 +b5b1afb3b5b6b2b1b5b6b5b3afadacadacacafb0aba5a4a7acaaa5a7aca8 +a2a3a29e9b9c9c9d9fa29c9ba29e9c9e9a9ea09e9996989c9a9493949697 +969392948f90939593908f8f8d9994888b8d87838a878689898584858280 +8084827c7c807a807f7a797877797b7c7c7f7b7773747679736f72706c77 +72706e6f6e6b6d706d6e8568696966696a686b6c67666561626463605e61 +626366636265656260605b5e5d5a595a5a595b5959595755565a58565557 +56525051524d4d51514e4f544a4b4c4d4d4d4f514b4a4848494a4a4a4d47 +46474242433e4243454543424242404140403f3d3b3a403c3b3e403d3938 +3d3c3a3a3a3a3938383737373737363539393a393531333733333332302f +303132323232312f2f2d36332d2c33393937323d3e7f581f151116151818 +191f1807020201000a00020d1831181009071f4e92b6a64c84652b2e3334 +2c3d353d191712131919181e1d1c1c1e212423201b1b1a18171718192121 +212223242524201f292d221d201e161517191d26281d1e1d1f1f1e272f2d +29221e2022242c3426242425292c2922222b2a2a2e3132252423262c2821 +1f2226262b282a2f25201e20231d2d2320202a1d232b16170f2227292228 +232124242a2620252327332e3032222a302b2c3d2d302a1700073879adbd +d7d0d0cdd4c4c8c9c1d2ceced3dbded8d8e0e6e6e7e0dadee3e4e5e5e3e0 +e2e4e5e6e7eaebedeeeef0f0f3f4f4f4f6f6f6f7f7f7f8f8f7f7f5f5f5f5 +f5f5f7f7f7f7f7f7f7f7f7f7f5f5f5f5f5f7f9fafafafafaf9f9f9f9f9f9 +f9f9f9fafefffd3c2436130c0820708396822a0002023449300000001f49 +03095074450215211d2d2008296bee820b203e141c1b21483c0d080e164a +156c8188806f6c7277777470717375727472706f70706e6c6d706d696c6d +6c6e6e69676a6c6c69686b6c6b696866656665676a6b6660606263615c5e +64605a5b5c58555657585c5f5a59605c5a5c585c5e5c5754585c5a555254 +5657565352544f50535553504f4f4f5b564a4d504a464e4b4a4d4d4a4949 +45424347453f4146404645414241404244444547443f3e3f41443e3a3f3c +39423d3938393835373a37384f32333331363836393a353434303133322f +2e30323234313033353230302b2e302d2c2d2d2c2c2a2a2a2826272b2b29 +282a292523272a2525292926272c232425262626282a2726242425262626 +292322231f1f201b1f202222212020201e1f1f1f1e1c1a19201c1c1f211e +1a191e1d1c1c1c1c1b1a1c1b1b1b1c1c1b1a1e1e1f1e1a16181c18181817 +1514131415151515121010111b181312181e1e1b15212366410a03000605 +0505080f0c00000000000100000008230f0b030522518eafa44a81642b2d +2c2a202f283032312c292b27252a2e2c2a2b2d2d2b292f2e2c2b2b2b2b2a +2d2d2e3031312f2d35323438393d3d33333133363a424339383437383332 +37393533353839383c433840474947433e3a37362b2f373d443d38383a3c +37302f3336353b393f4a45433a3b3c383e34363e42344249524548483c40 +425063615b465449464b454b5c5251494e635c58454843483e53584a2b21 +264692cbe5f2fffffdfffefffefbfbfaf5fafefbf8f9fafdffffffffffff +fffefffffffffffffffffffffffffffefffffcfbfbfcfcfdfefdfffeffff +fffffffefffeffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffefefbffff38304c324fc39fae9dffd24b3a458d86d2746e9e45 +06150a38521600242d1c331500165c6dffb644638f454f4f496f63312b24 +1b2f1488969194938e8f96948f8f949998938e908d888689898385818382 +7c7b80817a7676777773737278797b7a787675757575777a797673727677 +757579736e71726e6e6d6c6b6e726d6c726d686a686f706d666365676663 +65626469676161676060616262615e5c555e5d54565b56525d5a5b5d5d5b +59595a5657595754555b53565a574e4e5454545254565752514f51524f4c +4f4a4a50504e4f4e4b48494b494c5a494248454949484b4a434348474445 +444344444440454241444746444240414241424444404042403d3a3b3b3b +3e3b3a3b3c3a383737343437383434383435353432323334313131313233 +3230363132322e2f312c2d2e30302f2f30312d2d2e2e2e2e2d2c2d2c2d2f +2f2c2c2c2f2d2c2c2c2b2b2a292828292a2b2b2a292a2c2b2622252b2829 +2928282728292a2a2a282827292b2b292624272b2d292a29285a4e152c25 +252327262526200d0d0f0f0c1c12161b2634201d18141e38677780652e81 +423834403f432c452827221f211d1b20242220212323211f272624232323 +232225252628292927252b282a2e2f3333292927292c3038392f2e2a2d2e +29282d2f2b292b2e2f2e323a2c343b3d3b37322e2b2a1f232b3138312b2b +2d2f2b24232728272d2b313c37352e2f302c32282a323628363d46393c3c +2e30324053514b364439363b353b4c4241393e534c4835383235293c3e30 +0f060e2e7ab3cdddf5f4eaf1edf7eeebedeeeef4f8f7f4f5f8fbffffffff +fffffffbfaf8f8f8f9f8f8f7f8f9f9f9f9f9f9faf9fbfbfcfcfdfefeffff +fffffffffffffffffffffffffffffffefefefdfdfdfdfefefefefefefefe +fefefefefefefffffbffff3327402037a7839588f4d152392f757ecf6c6c +af65334d477b9c53152c28122a2422598981fd992042793843433a5d501f +1b1a1a3929a6bdbfc5c4bfbec5c0bbbbc2c7c6c1bcbebcb7b5b8b8b5bbb9 +bbbcb6b5babdb6b4b4b7b7b5b3b2b1b2b3b2afadacacaaa9abaeadaaa7a6 +a9aaa8a8aba5a0a3a39f9c9b9a999ca09a999f9a9698969d9e9b97949698 +97949895979c9a94949a939394959594918f899591888a8d88848d8a898b +8b87858586828082807d7e827a7d817d747479797979797d7c7976767679 +747374716f75757371706d6a6b6d696c7a696268636969686b6a63636564 +616261606061605d615e5d6063625e5e5a5b5c5b5c5e5b5a5a5c5a575455 +55555855535455535150504d4d50514d4d514d4e4e4d4b4b4c4d49494949 +4a4b4a484c4748484445474240414343424243443e3e3f3f3f3f3e3d3d3c +3d3f3f3c3b3b3e3c3b3b3b3a3837363535363738383733343635302c2f35 +3233333231303132333333312e2d2f3134322f2d303537363936325e4c0d +1b1416161716151813040406040008000000101f08091316234a8fa5a27f +448b3c2a252f2d30162e1e1d1815171311161a181617191917151c1b1918 +181818171a1a1b1d1e1e1c1a211e20242529291f1f1d1f22262e2f25221e +21221d1c21231f1d1f222322262b1e242b2d2b2724201d1c13171f252c25 +222224261f18171b1d1c201e242f2a2822232420261c1e262a1c2a313a2d +302e2121233144423c27352a272c262c3d33322a2e433c3825282226182c +2f21010000146097b1bed8d6ccd3d1dad4d1d3d4d4dadedcd9dadfe2eaea +eceaeaebebe8eaececececededeeefeff1f1f3f3f3f4f2f3f3f4f4f5f6f6 +f7f7f7f7f7f7f7f7fafafafafafafafaf7f7f7f7f7f7f7f7f9f9f9f9f9f9 +f9f9f9f9f9f9f9f9f9f9f3f8fa2d20340c1b80545f51bc991e0b0a51509c +3b397b330826255a7934001d22102b1d0c365e5cf1930a21520c1b190f37 +32090c0e082002747e7676736e6e77757070777c7d787476746f6f72726e +706e72726c6b70736c696b6d6d6b69686a6b6c6b6b6968686667696c6b68 +67646465636366605b5e615d5b5a59585c5f59565c575557555c5d5a5653 +555756535653555a585252585151525353524f4d495451484a4e49454f4c +4b4d4d4a48484945444644414449414448443b3b4343434243464642403f +4244403e403c3b41413f3e3d3a37383a373a48373036313738373a393232 +3534313231303031302d312e2d3033322f2e2d2e2f2e2f312f2d2b2d2b28 +272828282b28292a2b292726282525282925252926272726242425262525 +252526272624282324242021231e20212323222223241e1e1f1f1f1f1e1d +201f2022221f1e1e211f1e1e1e1d1c1b1a19191a1b1c1c1b18191b1a1511 +141a191a181716151617181816141211131519171412151a1c1a1c1a1745 +3500090203030706060b0a000001000000000000000c00000d13264c8ea2 +a17e418a3c291e25212209202b2d2a292b2a2a302c2f31302a25272b2f2f +2e2f2f2e2b29272b3132312e2c2b312f2c2b3038362a2c2f353733353832 +3b2d292e2d2b2b2a2f303335312b292b262e3636312e2f3137342f3d4641 +3e353a3a3b3b383332353338433d3d474b524344494b473a3a434a454f49 +4735505a535c605452485a5955505659413c4a3d3d32444d38534d423c58 +474e4e5755524d34282c3d619ccaf1fffffffffffffffef9f4f1f5faf9f5 +f3f1f1f0f4fbfefffffffffffffffffffffffffffffffffffdfefefefffe +fffdfffefefefefefefefefdfefeffffffffffffffffffffffffffffffff +fffffffffffffffffffffefefffdfe3936433484eba2ff95c8895d2980b3 +78ff714782c025093e460e0017272d241e00022b4d77ffbf3c5968484e4f +57524c312221241b059ea88e8f9e9c9996949191939897948d919088878b +8e87867d83887f7c82837d7a7b7b7a757475747676767575757573727276 +79797674777a78777a756f7076757776716c6c6e716d716a6669666c6e6c +67666768666367636364656061625f5d5d5c60605e594e55565054595853 +5c59595858575555595857575654565a57555c594d50595654504e505354 +54564e4e4e50514e4e525251504f4d4c4e50484b504c4450474e48444748 +45464a484546464546484642423f3e414546434040414143454745404044 +433c393b3a373d3a383a3d3e3c3a3a373739383433343737373533323233 +3232313132323130333032312d30322d2e2f2f2f2f3032332e2e2e2e2e2d +2c2b2b2c2e2f2e2c2d2e2e2c2b2a2b2a2b2a292827282a2b2b2a28292b2c +2a282b30292a2a2a2a292a2c2b2b2925252830362b2a2825272a2a292720 +2660641329272624282622211c0d09070a163f42392c303b2c1e170e1c3c +6c6b757f3e6f70423e4142413d482123201f2120202622252726201b1d21 +27272627272623211f23292a2926242327252221262e2c2022252b2d292b +2e2831231f24232121202526292b27211f211a222a2a252223252b282331 +3a3532292d2d2e2e2c272629252a352f2f393d4437383d3f3b2e2e373e39 +433d3b29444c434c504442384a4945404649312c3a2d2d22343d28433d32 +2b473439373d3b38341b1014254987b5dceef1f5f1f3f7f3f2f2edebeff6 +f7f3f3f3f3f4f9fffffffffdfdfdfdfcfcfcfcfcfcfcfbfbfbfaf8f9f9f9 +fafbfcfdfdfefefefefefefefffffffffefefefefefefefefdfdfdfdfefe +fefefefefefefefefefefefefffffffffe352e331e66c77bf773ab744e1b +6ba06cf65e3a89db53457b8548251f1e221f291d5c8e9097ffa61e3c593c +404048433b211218232417baccb8bbcac7c4c2c0bdbdc1c6c5c2bbc0bfb7 +b6bdbdb9bcb5bbc0b7b6bcbdb7b6b7b9b8b5b2b3b0afafafaeacacaca7a6 +a6aaadadaaa8aaadabaaaca7a0a1a7a6a5a49f9a9a9c9e9a9e979598949a +9c9a9897989997949a97969898949496929190909394918d858d8e888b90 +8f8a908d8b8a88878583858180807f7d7d817e7c827f73767e7b79757375 +7879797b7373737576737377747372716f6e6e70686b706c626e656c6564 +676862636765626362616264625e5e5b5a5d5f605d5a5a5b5b5a5c5e5c57 +5a5e5d5653555451575451535657555353505052514d4c4d5050504e4c4b +4b4c4a4a49494a4a4948494648474346484341424242424345463f3f3f3f +3f3e3d3c3b3c3e3f3e3c3c3d3d3b3a393a39383736353435373838373233 +35363432353a33343434333233353434322e2b2e363c3433312e30343738 +362f3066620b1a161717181612130f02000000082c281a101b27150c1313 +244f969c9c9f5b82743a3333302e2731171916151716161c181b1d1c1611 +13171c1c1b1c1c1b181614181e1f1e1b19181d1b18171c242216181b2123 +1f21241e2517131817151514191a1d1f1b1513150c121a1a151215171d1a +17252e29261d24242525201b1a1d1a1f2822222c30372b2c31332f22222b +322d37312f1d383f343d413533293b3a3631373a221d2b1e1e13242d1833 +2d221b372328272e2c27200500000b2f6c9ac1d3d6dcd8dadfdadad8d3d1 +d5dbdedadbdbdddde2e9ededeff1f1f1f3f2f3f3f3f3f5f4f5f5f5f4f2f3 +f3f3f4f4f5f5f6f6f6f6f6f6f6f6f9f9f9f9f9f9f9f9f7f7f7f7f7f7f7f7 +f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f7f3f1f22a2324094aa552ca457f49 +27004c7f44c9340e5dae2c215c6a2f1012171c19210a395f5b6ef19f061a +301219191f1c1d0a0309110900878c706e7b787575757272767b7c797378 +776f70767772716a72776e6c72736d6c6f706f6b696a68686a6a69686868 +656464686d6d6a666768666567625e5f656464635f5a5a5b5b575b545154 +53595b595655575756535855545656525254504f4e4e51524f4b444c4d47 +4a4f4e49504d4c4b4a4947454845444443414448454349463a3d4845433f +3d3f424343453f3f3f41423f3f4341403f3e3c3b3c3e36393e3a303c333a +3533363732333735323332313234322e2e2b2a2d30312e2b2d2e2e2e3032 +302b2d2f2e27262827242a2727292c2d2b292b28282a2925242529292927 +252424252626252526262524252224231f22241f21222222222325261f1f +1f1f1f1e1d1c1e1f2122211f1f20201e1d1c1d1c1c1b1a1918191b1c1c1b +17181a1b19171a1f1a1b19191817181a191915110f121a20191816131519 +1b1b1912154c4b0007040404080603080700000000001e170500000f0500 +0a0f265395999b9e598075382d28242019232c2f2c282b2b2b2f2c2e3132 +2e2a2c32292b2d302f2c2824262e3636302a292a2b36362a24272a2b2b2b +30312e3236323f2e292f3133383c45403a342e2a2c2f413a3433373b3d3d +433e38454c423c333c3b3a3a38363536494d55484045464d3f40464c4339 +39404e392c303d3b4237434c514747415b634952666b4b41534c3b455754 +485b4d484357474d5361635b5e6b64616657382f3c5d8dc2e6f4ffffffff +fffffffff9f3fbfbf9f6f4f5f1f1fafdfeffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffefefefefefefefefefffffffffffefef7fe40363e46ffcf4a9961 +ff92256affff72a0381e2cc33a4a3b08000e23292512000f280f4885fbab +3a51494e51535a5b58401e1c291e0ea6a5979694919e999896918b8b8a88 +878c8b8484898b86837b81888381837e7e7d7f7e7c76767573706f6e6e71 +73736e6c6c6d727573707477747277746d6c777575736e69696b746d6b65 +666b676a6968676869686563686764606365645e5f5e5d5b5f61605a5458 +5a57575d615b5e5c5a58585755545959585959575758585357564e535c57 +54504d4f515152534c4a4e514f4e50514a4d4e4e4f5156574d4e494e4753 +4a4d4743454848494a4547474645474a4a4744434344494a484541424242 +4445423d4044443e3b3e3e3b3c3a38383b3d3c3939383838373534343233 +3433333334363533302f30313030313034312c2f312c2e2f2f2e2e2f3234 +31312f2d2d2b2928282b2d2d2d2c2d2e2a292929292a2a292a2827272829 +2a2a2a2625262928292b292a2b2b2a292a2c29292a27262931372c2b2a27 +272b2c2b24242866761626262825292723221e11130c102864797d755f4e +2c15242627356b77726c75537f52413c403e483c2225221e212121252224 +272824202228212325282724201c1e262e2e28222122212c2c201a1d2021 +2121262724282c2835241f2527292e323b36302a24202225352e28272b2f +313137322c39403630272f2e2d2d2c2a292a3b3f473a3237383f3132383e +352b2b32402b1e222f2d3429333c413737314b533942565b3b31433c2933 +4643384b3d38324634383e4a4c4144524b484d3e2017244777acd0def0f4 +fbfdfdfdfbf9f3eff9fbfbfaf9faf9f4f7f7f8f9fbfcfdfeffffffffffff +fffffdfdfdfdfdfdfdfefcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefe +fefefefefefffffffffffffffffffefefefefefffffcff3c2e2e2cf8a81d +6d36d8700956fff9658e1b0c39e8778d7337212424252725225ea28993aa +fc97223b3a3f3d3f4b4d49311115282720c1c8bfbfbdb8c7c5c6c6c1bebe +bdbbbbc0bfbab9c1c0bbb7adb3bcb7b5b7b3b3b2b4b6b4afaeb1b0afaead +adaeb0b0a9a7a4a5a9acaaa7abaeaba9aca9a2a1aba9a8a6a19c9c9ea69f +9f999a9f9a9d9c9b9c9d9e9d9a989b9a95939498959190918e8e9094918d +8b8f918e8e94958f908e8c8a8887858283818081817f7d7e7e797d7c7479 +7f7a7a76737576767778716f7376747375766c6d6e6e6f7174756b6c676c +636f666b64606265646566616363605f616464615e5d5d5e60615f5c5859 +5957595a57545a5e5e585558575455535151545655525453535352504f4f +4d4e4e4d4d4d4e504f4d4a494849484849484a4742454742434444434344 +4547444442403e3c3a393b3e40403d3c3d3e3a3938383839393838363535 +36373737373332333332333533343333323132343232302d2c2f373d3535 +33303135393a3333326c740e17151918191713141106080103174e605f5a +4b3b1605222d314a97a99b9297708d54382e2e2b3225181b18141717171b +181a1d1e1a16181e16181a1d1c191511131b23231d171617172222161013 +161717171c1d1a1e221e291813191b1d22262f2a241e1814161927201a19 +1d2123232b26202d342a241b26252424201e1d1e30343a2d252a2b322425 +2b31281e1e25331e11152220271c242c312727213b432932464b2b21332c +1b253633283b2d28223623272d3a3c32333e3734372808000c2f5f95b9c7 +dbdfe4e6e6e5e2dfdbd6e2e3e3e1e2e3e1dfe6e9eaebeff0f1f2f4f4f6f6 +f6f6f6f6f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f8f8f8f8f8f8f8f8f9f9 +f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f5f1e8ef30211f1be1 +8b004a13b754003de1d7426800000ebc4e6a5a2310181c1c1a120b3e7350 +5a7eec8e08161116181a22282c1a0105160c008e8876716e6978787b7a75 +717172707176756f717878736d646a726f6d6f6b6b6a6c6d6d6867696a68 +676667696b6b65636364686b6964676a676568655e5d696766645f5a5a5b +6158575152575558575656575a575654585753505255534e4e4e4c4b4e51 +4f4b4a4e504d4d53554f514f4d4b4a4947444443424345434243433e4443 +3b404742413d3a3c404041423b393f42403f4142393b3c3c3d3f4243393a +353a323e3539343032353435363133333130323535322f2e2e2f34353330 +2c2d2f2e30312e282d31312b282b2d2a2b2927272c2e2d2a29282a2a2927 +262624252726262627292a28252424252424252426231e21231e22232322 +22232527242422201e1c1a191d202222201f20211d1c1b1b1b1c1c1b1e1c +1b1b1c1d1d1d1d1918191a191a1c1a1b1b1b1a191a1c1717161312151d23 +1a1a1815161a1d1d161617525d00040306050908060b0b040600000d404a +453c2a1d00001626334f98a89d93986e8e533123221d24152d2f29222424 +22252e28262a2c28262622262c2e2d292522242b302e262021242d37342a +292d2e32372d2b30363f423c36353e453f3a4045464139332f2f31323d3b +3a3b3a373536473f343c3f3839353d3d3d3b383535363936372d2c333031 +3b383841373a3d42403a3d423d3e3e3e48444047514b4d434547515c514f +5b515f4f57514447515049494a555c5c605c575d4a5574735d6a5e463438 +454d7fa6d6e9fffffffffffffffffffcfafbfcfefdfdfdfcfcfbfbfaf8f8 +f8f9f9fafbfdfffffffffffffffffffffffffffffffffffffffffffffffe +fffffefefefefefefefefefefefefefefefefffffffffffff7feff34323b +27e9ba5eec9d7e2c2c7afff97fe0713e123900130f251a102d1907000c2a +1a155c88ff944558545253544667583c1d1f1f1a12a297969a968c989797 +96928c8a88858787868183868580837d7f848684817c7e7b7c7d7c777776 +736f6c6b6d727476706f6d6b6f72706c7073706e73726b6a75716d6c6a69 +6c70756c6b6669706c6d6a67686a6a6564636b6b6861656a6a626463625e +6165655f5f5f615e5a60645e5e605e5b5b5b5b58595a5a5b5c5a59575552 +51504f54575254515153534f4d4d4e4a4e524d4b4e4c4b4e4e4c4b4d5050 +504e464d484e484a49444649484a4943454646454649494744464645464a +4846434444434344423e3b3e3f3d3d3e3f3f3d3c3a37383a383538383838 +3838383833343433313132333533312f313131312f30353431363b362f2f +2f2e2e2e30322d2d2d2c2e2d2d2d282b2d2b2c2c2d2d2a292828292a2a2a +2b29272728282929312b26252725242428292a292827282926282b2b2a29 +2b2a2828262424272928272d1e4b700d242624212526232521170f0d0c0f +31394042484c4121221f263e6472666c6b5f775c33373f393f3e23251f18 +1a1a181b241e1c20221e1c1c1a1e242625211d1a1c2328261e18191c232d +2a201f2324282d2321262c3538322c2b343b3530363b3c372f2925252728 +312f2e2f2e2b292a3b332830332c2d293030302e2c29292a2b28291f1e25 +22232d2a2a33292c2f34322c2f342f30303138343037413b3d333537414c +413f4b404c3c4440333741403838394249474b454046333e5a5a4451452d +1b1f2c34668dc0d3ebf8f7f3f8fefefffefaf8fafefdfafafaf9f9f9f9f8 +f9f9fafbfdfefffffefcfcfdfcfcfcfcfdfefefffffffffffdfdfdfdfdfd +fdfdfefefffffffffffffffffffffffffffffffffefefefefefffbffff30 +282a0dca9437c3765a0b0f63fcee6fc9522a1857314836412b172c1f232f +5c959f8c9da1ff8634443e3a393c3459492d10181e2322bdbabcc0bdb3c1 +c3c6c7c3bfbdbbb9bbbdbcb9bbc0bfb8b7b1b3b8bab9b6b1b3b3b4b5b4b0 +b0b2b3b1aeadafb1b3b3adaaa6a4a6a9a7a3a7aba8a6a8a7a09faaa6a29f +9d9c9fa3a9a09f9a9da4a0a29e9c9d9f9f9d99989999958f929897909191 +8f8c8e93928d929193908c92948e8e8e8c89898987848382828384827f7d +7b787776757a7d787a77777978747272736f7377727073716d6e6e6c6b6d +6e6e6e6c646b646a6468666163666466655f6162605f606363615e60605f +60615f5d5a5b5b58585957555558595757585858565553505153514e5353 +5353535353534e4f4e4d4b4b4c4d4f4d4b494949494947484b4a474c514c +44444443434343454040403f3f3e3e3e3b3e403e3c3c3d3d3a3937373839 +393939373535363636363e383332312f2e2e32333231302f30312f313131 +302f313331322f2d2e343637373c2b517007151717141516131412090302 +00001c21232532382b102026305390a5919393818c652e2a2f262927191b +150e10100e111a141216181412120f13191b1a16120f11181d1b130d0e11 +1923201615191a1e2319171c222b2e28201f282f29242a2f302b231d1919 +1b1c23212021201d1b1c2f271c242720211d27272725201d1d1e201d1c12 +11181516201d1d261c1f2227251f22272223232128242027312b2d232527 +313c312f3b303e2e3530232731302828273138363a353036232c4946303b +2f170509161e5279abbed6e3e1dce3e8e9eae8e3e3e5e8e8e9e9e9e8eaea +eae9ebebedeeeff0f1f4f5f7f7f7f6f6f6f6f7f7f7f7f7f7f7f7f8f8f8f8 +f8f8f8f8f9f9f9f9f9f9f9f9f9f7f9f9f9f9f9f9f9f9f9f9f9f9f9f7ecf1 +f3251f2000b87d1aa75942000153e5d04ea9330900310e2c243523102713 +0c0f37696a546779f17b18211914181a0e342c1600080a0600887873736e +62727478787472706e6e7071706e7074756d6d67696e72716e696b6a6b6c +6d69696a69676665676a6d6d68666260636664606364615f62615c5b6662 +5e5c5b595d6061585752555c585a56565759595653525858544e5157564f +50504e4b4d52514c505254514d53565050504e4b4b4b4a47444444454846 +4442403d3e3d3c41443f413e3e40423e3c3c3d393f433e3c3f3d3a3c3c3a +393b3c3c3c3a323933393336363133363436352f31323130313434322f31 +3130333533312e2f312f2f302e2b282b2c2a2a2b2e2e2c2b2926292b2926 +28282a2a2a2a2a2a25262726242425262a28262425252525232427262328 +2d2823232322222223252020201f1f1e1e1e1d2022201f1f20201d1c1a1a +1b1c1c1c1f1d1b1b1c1c1c1c241e191818161515191a1a19181718191416 +1717161517181617141213181a1a1a1f0f375800020404010507060c0f09 +030000000b0905030d171300131f325891a6979893828f64282122181b17 +1f221c192026282a312a282b2b262324272c3133302c2b2b2c2d2c282423 +272a30322925313633343329272d333a3b342c3444483a31343833323232 +3434312d373e46473e33303435373642443a3831393f423e3734373b3a35 +342e34434242453d374037474c4c634b4a40444e48474a4a434f4d4c5660 +665f585d5d5c5f52554457666e5b65575249635f594d595b5a5953738679 +62756f676b706f535b6236415c8bb6d4e9f8ffffffffffffffffffffffff +fffefcfbf7f7f7f8f7f8f9fafffffffffffffffefffefefdfdfdfdfdfdfd +fdfdfdfdfdfdfefefffffffffffefefdfdfdfdfdfdfdfdfdfefeffffffff +fffffb1d3830412b5550c45c7139352eb1bf7fe15436331947461a1d201e +2020001921101928499fff904658655857534f684b3a142325210ca59794 +9aa39a9b98959495989a93888f8a87878a87827c82837e7b81827c787a78 +78797a77777873716f6f717476777373716f737675706c73726d706f6c6d +746f6b6b6c6d7174746c6c67686f6b6e6e6a6869686363656b6c6b68696b +6f6e6b6b69626468696367616260595f67606062615e5f62635f5b5b5b5b +5c5b59565355514e5355535354535354524f4d4f4f494e5149484c4a4d50 +4e49474849484d4c454b4747474b4c45474847494c484144474645464644 +4145464442444341424444444243434239393b3d3d3b3d3f3d3e3d39383a +39363838383737393a3a3737363431302f3033323131333333322c2f3331 +31383d382f2f2f2e2d2c2c2d29292a2a2b2d2e2e282b2c29292b2d2b2c2a +282828292a2a2a2826262627282739332e2c2b2a2b2f292a2a2927262728 +292a2c2c2b2927242624232122252826252d234d95142423251f21222224 +1f15080b12193b434a4c40423a1a2a2c262a6a66706c676679645539303b +293f1518120f161c1e2027201e21211c191a1f24292b2824232324252420 +1c1b1f2226281f1b272c292a291f1d232930312a222a3a3e30272a2e2928 +28282a2a27232b323a3b32272428292b2a36382e2c252c3235312b282b2f +2c27262026353434352d273027373c3c533b3a30343e38373a3a333f3d3c +4650564f484d4d4c4f41423144555d4a55474239544e483a464644433d5d +6f624b5f59515257563a414719223f6e9bbbd2e3eef5fafbf9f8f9faffff +fffefdfbfbfaf8f8fafbfbfcfdfcfbfafafafafbfbfbfdfefefefefefefe +fefefefefefefefefffffefefefefeffffffffffffffffffffffffffffff +fefefffff8152d1e2a113834a8425c28271a919c65ca3c222d1d59582422 +1f1d20372c7b9a919886689cfe863b44443436393d583c2b071c242a1ec0 +babdc3cdc4c5c3c1c0c1c7c9c4bbc2bfbcbdc0c0bab6bcbdb8b8bebfb8b6 +b8b6b6b7b8b7b7b8b3b1afafb1b2b3b3acaca8a6a8aba8a3a1a8a7a2a4a3 +9fa0a7a29e9d9d9fa2a6a69e9e999aa19da2a09e9c9d9c98979795949290 +909396969293908a8b90908b918d8e8c858b918a8a8a8986878a89878383 +83838483817e7b7d79767b7d7b7b7b7a7a7b7976747676707578706f736f +6f72706b696a69686d6c656b6565656969656768646669655e6162616061 +615f5d6162605d5e5d5b5c5e5d5b595a5a59535355575654565856575652 +5153524f53535352525455555252514f4b4a494a4d4c4b4b4c4c4c4b4548 +4c4a474e534e44444443424141423c3c3d3d3e4041413b3e3f3c3c3e3d3b +3c3a383838393838383634343435363546403b3938373839333232312f2e +2f302e2f3232312f2d2d2f2e2c2a2c323535353c3053950e151419141415 +11130f0700000308262b2d30282b220928332e3f93979b95908e9574542f +222913280b0e08050c1214161d16141717120f1014191e201d191818191a +1915111014171c1e15111d221f201f1513191f262720161e2e32241b1e22 +1d1c1c1c1e1e1b171d242c2d261b181c1d1f1e2a2c22201923292c281f1c +1f23211c191319282727261e182118282d2d442c2b21252f29282a2a232f +2d2c3640463f383d3d3c3f31342335454d3a45373229413c362935353736 +2f4f5f50394a443c3e434226303607102d5c88a7c0d0dbe1e8e8e6e5e6e8 +ecededebeceae9e8e8e8e9eaeaebeeeef2f2f2f2f2f2f2f2f4f4f6f6f6f6 +f6f6f6f6f6f6f8f8f8f8f9f9f9f9f9f9f9f9f7f5f7f7f7f7f7f7f7f7f7f7 +f7f7f9f9f8f8f3122b1c2404261c902947181c0f82884aaa1a010d024148 +1c1e1b181823064a655b63543e7df17a1f212312171817361f14000c100d +00897871747b727373727172797b756e75716e7174736f6a70716c6b7172 +6e6b6d6b6b6c6d6b6d6e6965656567696d6b676764626467655e59605f5a +5c5b5a5b625d59585b5a60615d555550515854585756545554504f525555 +5351515457575354514b4c51514c524e4f4d464c524b4b4c4b48494c4c49 +45454545464543403f413d3a3f413f3f42414142403d3b3d3f393e413938 +3c393c3f3d38363737363b3a3339333333373936383936383b3730333534 +333434322d3132303031302e2f3133312f30302f2626282a2c2a2c2e2c2d +2e2a292b2a272828282727292c2c29292826242322232625242425252524 +1e21252321282d2a23252524232222231e1e1f1f202223231f2223202022 +2220211f1d1d1d1e1e1e1e1c1a1a1a1b1c1b2c26211f1e1d1e201b1b1b1a +1716171817181818171513121413110f11161918181f14397d0002010300 +0305070c0f070000000013110d0b020908001b2c3144979ba29b948e9874 +4f26171d051826271e19202626272625292b2720232b22282d2d2926282b +2f2b252223272d312d322b262b2b2a322c2a303532302e292b2d33302422 +2b3130303033393c3a363b343031302c2a2a2c2e2b3235323938323c443f +3431373f3f3b3a323543464a4e443b423b51544f4e425c4c50545158665e +4e60584f4646484f4d4d47434f53495643447c5c576162557964605a6658 +545653625d615c655b5f6058605d707063574e4e4a4652636f8db7dcf5ff +fffffffffffffffffffffffffffffffffffffefefefffefffefefbfbfafa +f8f8f8f8fafafafbfbfbfdfefefffffffffffffffefdfdfdfdfdfdfdfdfd +fefefffffffffffffe1b402fff782f414c362b45363c3f324a73433a333b +6a432a252831052e042e11252d073babff93384d615f5955535851601920 +2415069d9095969b969da49d979ba5a89b8b9b948e91918d857f82867e76 +7d7e78797a7676777a787879737271727678797a747677767b7e7d776d77 +78727170707477737173787878797670726b696d696e746e6b6a67646367 +6a68696c69666d776c6e6a6363676863686163615a626a635e60615f6166 +66625d5b5a595a5b5956565c56515857535756545352505053584f484d51 +49494e49464c4c48484b4c4c4a4a474b47414a4f49474949454851514045 +4948474644424147484441414241404243403e3f42403e3b3c403f3b3b40 +3d403f3b3a3c3d3c3b3a3836363739383536363534333435303031333636 +34322f30332d282d2f292e2f2f2e2c2a2a2a2e2d2c2b29282827292b2b28 +282b2d2a2f2d2a29292a2a2a28272525262727272c29262524252a322b2b +2b2a282728282d2c2b2a2a2a292929262423262b2b292a242452b7172429 +2b24242424241f14100a0b184452504a5453461a262c272d65766a686564 +5e6a4a4a94f3a5801c1d140f161c1c1d1c1b1f211d1619211a202525211e +202327231d1a1b1f25292328211c212120282220262b2826241f21232926 +1a182127262626292f32302c2f28242524201e1e20221f2629262d2c252f +373228252b33312d2c242735383c3e342b322b41443f3e324c3c40444148 +564e3e50483f3636383f3d3d37333f42364030316b4b475152456a554f49 +53454244404f4a4e4750464a4a424a47595544362f2f2b29354854729dc2 +deeef6f8f9fafafcfdfffffffffffffffefefdfdfafafafbfcfdfefefdfd +fdfdfefefefefffffffffffffffffffefefefefefefeffffffffffffffff +fffffffffffffefefefef811311ded62182d3b28203e302b1b0c3063332c +28356843251d23371a6468ae98a6984a3f93fb8b2d393a34383d3f484050 +0c17231e19bab5bfc1c6c1c7cbc4bec2ced3c6b7cac3bfc2c4c0bab5bcc3 +bbb3babcb6b7b8b6b4b7b8b8b8b9b1afadaeb0b2b1afa8aaa9a8aaadaaa4 +9ca7a8a29f9e9ea2a5a19ea0a3a3a3a4a19b9d969498979ca29c98979693 +9294938f9093908d949e9395918a8a8e8f8a8e898b89828a908984868583 +858a8a88838382818283817e7e847e79807f7b7f7d7b7a7977777a7f766f +7478707075706b6e6e6a6a6d6e6c6a6a676b6761686f6967696965686e6e +5d62666562615f5d5d6364605c5c5d5b5a5c5c59575859595855565a5854 +545956595854535556555455535151525453505151504e4d4e4f4a4a4b4d +4f4f4d4b48494c463e43453f43444443413f3f3f41403f3e3c3b3b3a3c3e +3e3b3b3e3d3a3f3d3a39393a38383635333334353535393633323132373c +33333332302f30303231313030302f2f32302d2c2f35383839332e58b50f +151a1f19171713130f0601000007323a362e3a3b2c0823312f3e8ca3908e +908d807e4c4187e2926b12130a050c12121312111517130c0f170f151a1a +161315181c18120f10141a1e191e17121717161e18161c211e1c1a151517 +1d1a0e0c151b1a1a1a1d23262420231a1617181412121416131a1d1a2120 +1c262e291c191f2726221f171a282b2f2f251c231c3235302f233d2d3135 +3239463e2e40382f2626282f2d2d27232f32283321225b3b374142355742 +3d374236343832413b3d343d3135352d3532474432251d1d191725374361 +8eb3cedee6e7e6e7e7e8ebecececedededecebebeceeeeefeff0f0f1f2f2 +f2f2f2f2f4f2f4f2f7f5f7f7f7f7f9f7f9f9f9f9f9f9f9f7f5f5f5f5f7f7 +f7f7f7f7f7f7f7f7f9f9f9fbf812341de8570615210e0c2c24210d001541 +0f090a1d5939211b202d094434715d6e6a211e7bef7e11161b14191b1a24 +243900060e000080707371746f757a756f737f8377687a75707377736c69 +6f766e666d6f6b6c6d6a696b6d6c6e6d6662636466686867606262616467 +655f545d5e585756565a5d59595b5e5e5e5d5a53564f4d514f545a545352 +504d4c4f51505154514e555f5456524b4b4f504b514b4d4b444c534c4749 +4846484d4d4b46454443444543404248423d44433f43444241403e3e4146 +3f383d4139393e39373b3b37373a3b3a38383539352f363d38383a3a3639 +40402f343837353432302d3334302f2f302e2d2f322f2d2e2f2f2b28292d +2e2a2a2f2c2f302c2b2d2e2d2a2a282626272b2a27282827272627282323 +2426282826242122251f181d1f1b2225252422202020232221201e1d1d1c +2022221f1f22221f24221f1e1e1f1e1e1c1b19191a1b1b1b1f1c19181718 +1d231c1c1c1b181718181b1a17161616151517151211141a1c1b1c16133e +9e00020709030607090c0f06060000001e20150915191300142a314591a9 +99979691827f493a7fd8845a26292824262f3230272b282b332d252b292d +2c2829303535362d242222252c342f31302b292e34382c323837302b2e33 +2c3b493630362a2f303335332c2a37462c403c3834353c2d2e32313f383b +38414f473a443f464147514a3b3c3e4151564e4749514e4445504541495c +5448525440463c5551556455524f53534b4a50534e56535052524e505755 +495f554c546050524756576062626164686f736558596a65717e818a7f60 +6a5b463733515d7fa5c3cef3fbfdfffffffffffffffffffffffffefcfffd +f7fef7f9fbf6f8f9f1f4f3f6f3f8f2faf8fefbfefffffffffffffffffefd +fcfdfdfefdfdfefefffffffffffff11e4129d73f3027332627a78d415936 +1f71401e31566e341f261d12001d1509101f0d005fbdff823e5469645952 +535355631f211b1c0ea296929c9a9298a4a19d98a2a89a949a91909a8c86 +9088867f88837a7b7d867d7f857983797d7d737b7b797b7a7e8680837a7b +838d9389797e837776817e787f827b7b8079887676797771737a786f6e6c +75766a6a706d6a6966686b67697476706a66656566675f63675b645e6364 +62606264646262615b54555c58555b5c58535752515553595a4c4c514e51 +534c5744524a4e494649494b4d4e4e4c4a4b4c4a484848484a4b4a464446 +4543454940444742424e534a48404c473f423c41404c3e443b3d3d423941 +403c3e3e3e4243413f3e3d3d3b38313c3737393437363433333639393531 +373136362b303a32322f2f33322e2e312e34342d282c3131302f2f282e32 +292d2a322f282d2f29232b2a242a2b2b2d2c2c2a2727292a2a2929282727 +2725272a322b27292a292a2b2b2b2927292c2b27222b22222528352e2434 +2541d1291a27232425212325201911080a183750534a51594d1a181c2930 +65726a636a635d5f5a3c1f1d2c341c1f1e1a1c2528261d211e2129231b21 +2125242021282d2d2e251c1a1a1d242c252726211f242a2e22282e2d2621 +242922313f2c262c202526292b2922202d3c2034302c2829302122262533 +2c2f2c35423a2d37333a353b433c2d2e303343483e3739413e3435403531 +394c4438424430362c4541455445423f43433b3a40423b40403d41413e40 +4a483a50463d434f40423746464f51514f52535a5e5043424f4a5663666d +62434d3e291a163440628aa8b3d9e1e6edf4f3f7fcf2fcf8fcfefffffffe +fffffbfffdfffffefffffdfffffffffffdfffefffcfefcfbfcfcfcfbffff +fffffffffffffffffffffffffefefefbe7123115c22c1e19282023a58c38 +3c18126d3e1c2c506b301821232d2a7e9899928b59124996fa78303c4039 +3f3e3f4141510f15192621bfbbbdc9c7bfc2c7c0bcb7c3cbbcb9c1b7b9c3 +b6b0bcb7bab5bebbb2b3b5beb5b9bdb3bbb3b7b7a9afafadaeadaeb4abae +a4a5abb5b8aea1a6ab9f9ea9a49ea4a7a0a0a49dac9a9b9e9c96989f9d94 +96949d9e9292989493928f919490929d9f99938f8e8e8f90868a8e828b85 +8a8b8987868888868688827c7d84807d8384827d817c7a7e7c828375757a +777a7c75806d7b7377726f706e70727373716f6d6e6c6a6a6a6a6a6d6c68 +666867656569606467625f6b7067655d69645c5f595d5b67595f5658575c +53585753555555595a585655535351514a555050524d504f4d4c4c4f5252 +4e4a504a4f4f444950484845454948444245434949423d4144444342423b +3f433a3e3d45423b3d3f39333b3a33393a3a3c3b3a383535373837363635 +3434312f31343a332f3132312f3031312f2d2d302f2d2b34282b2e32423d +33432f47cf210b16171918141214100b0200000a263a3a30373e31081521 +2d3f869b8c88928c8077603916101a2112151410121b1e1c131714171f19 +1117161a1915161d2222231a110f0f1219211b1d1c17151a2024181e2423 +1c171a1f182735221c22161b1c1f211f18162330142824201c1d2415161a +1927202320293931242e272e292f383120212326363b2f282a322f252631 +26222a3d3529333520261c3531354435322f33332b2a30322d33312e3131 +2e303937273d332a313f31352837363d3d3d3b3e40474b3d32303c374350 +535b52333d2e190a062430527795a2c8d0d4dbe1e0e3e8dee8e4eaecf1f3 +f2f0f3f1ecf3eff1f4eff5f4eff0f2f3f2f6eff5f4f6f4f6f6f5f6f7f7f5 +f6f4f3f2f4f5f5f6f7f7f7f7f7f7f7f9f9f8e8163416bd1e08000800088e +7a272a00004715000c365a25121d191a084b5654565a35003185f36e151a +22191e1b1a1d263b000502040085766e78746e7077726e69747b6f6b726a +6b756a646f696f69737067686a736a6d746972696d6d5e6465626362646b +63665c5d646e7268585d625655605b555e615a5a5e576654555856505259 +574e504e57584c4c525151504d4f524e505b5d57514d4c4c4d4e474b4f43 +4c464b4c4a48484a4a484849433d3e45413e4546433e423d3e4240464739 +393e3b3e423b463341393f3a37393a3c3e3f3f3d3b3a3b3937373737383a +3a363436353334382f3336312f3b4037352d39342c2f292d2e3a2c32292b +2a2f262c2b2729292b2f302e2c2b2c2c2a29202b26262823262525242427 +2a2a2622292328281d222a22221f1f23221e1d22222828211c2024242322 +221b1f231a1e1f27241d20221c161e1d161c1d1d1f1e201e1b1b1d1e1d1c +1c1b1a1a1816181b221b17191a191819171715131417161310190e101317 +26201626142db80c000401030704080d100b0700000114221b0d14201900 +061a2e448ba196919a92867b60340f070e1224262320232b2e2c24252225 +2f2c242822232322262c303134302d2c2a28292d303333312f3133333434 +363a3b393330283239323336333a312f31373a383636294b4e403a45503d +443e3c3d3b413e44515147483c41424c4e4332333635414644464d545550 +4e4f4e51525957525246474d49615a565c5b5145404243454642464f504f +4e4d4b4c4c605b534b5d6c5a4d4e4a52505d6d6d5f686563686155555b51 +5b645f616e7359666866616445453f44393c38495a6489a6cbddedf9ffff +fffffffffffffffffffffffffffffefffcfaf7f9f9fefdfdfffefffffefd +fffffefdfffffffefdfcfdfdfefeffffffffffffff0b3d3a352a3d53583d +2b255353583642a373302648642d2b2a21020e2a0b172302000c5ac3ff8a +3c53625a50494d58594f1c24251b0cab9c8c8f8d939c9c9fa099a1a59a9b +97989298968e93958f8187847f807d7e8584847b867f7f7d7d807c798285 +807e8884837c8891928b8485877b79817c7a7d857778897f8282777c7b75 +75797972716f76756d6b726d656565696b65626a6c6c6a67656463636565 +6461665f5f655d5c5d5d5b595b5f58645d505d6053595853565050545054 +574e4d4d494f55504e48504b444c46484b4c4d4e4e4d4d4e4948494a4a4a +4c4c4a4745484b4c4b4a4241444341464c4b473a43423d3e3c443d493f47 +43413c3c4046454043414042433f3d3a3b3c3e3e313a36383a3435323735 +33343636343133302f32353331363231323332302f30292c28303431352e +2b2e332c3031292d282c2a272e302c29282f2f2d28292b2928262526282b +2c2b292625272b2b2c2e2825252a2c2826252a2b2b2a2c2e2c28262e2929 +2929342d292a1e41c94025212022231f212420190d0908142e4652525155 +4a1e1a1c222a6d6f6560686868675f4f3b3943451a1c1916192124221a1b +181b25221a1e1a1b1b1a1e2428292c282524222021252629292725272929 +2a2a2c30312f29261e282f28292c29302725272d302e2c2c1d3f42342e39 +4431383230312f35323844443a3b30353640403524252827333834363d44 +45403e3f3e41424947424236373d39514a464c4b41353032333536313339 +3d3c3d3d3b3c3f534c443c4e5b4a40413d45434e5e5e4e575451564f4243 +463f464f4a4b54593e4b4d49444425262025181d192d3d486e8bb2c4d4e0 +eeeff7fdfdf7fbfefefefffffffbfbfffcfffffffefffffffffffffefdfd +faf9fcfffcfdfffffffffffffffffffffffffefefdfdf60029251e152c44 +4e3525204b47401e339b6e281b3e5d262023242564a298a08e5029183b99 +f67c2a3b3b363c3b3b44443b0b1721221fc7c0b5bab8bec5bdbcbdb8c0c6 +bdbebcbdb9bfbfb7bec1bfb5b9b8b3b4b1b2b9b8b8afbab3b4b3b0b3afac +b2b5aeaab2aeaba4aeb7b8b1aaabada19fa7a2a0a1a99b9cada3a3a69ba0 +9f99999e9d9796949b9d929397949092929698928f97999997949291908d +8d8d8c898e87878d85848484828082867f8b84778487797f807b7e78787c +787c7f76757571777c77756f77726b736d6f70717273737272716b6b6b6d +6c6d6c6e6c69676a6d6e6b6a626164635e6369686458605f5a5b58605964 +5a625d5c5656575d5a5758585559585652515052535548534f51534d4e4b +504e4c4d4f4f4d4a4c49484b4e49474c48474849484443443d413d454946 +48413e41463f41423a3e383f3d3a3e403c39383f3e3c37383a3836343334 +363939383633323435353638302d2d3234302b2b303131303032302c2c37 +2f2f2f323e3a36372745c4351410141716121013110b010000071e343d3b +383b2f0b171f26358a9483818e918a80694f3830323310120f0c0f171a18 +10110e111b1810140f10100f13191d1e211d1a191715161a1c1f1f1d1b1d +1f1f2020222627251f1c141e251e1f221f261d1b1d232624222211333628 +222d38252c2624252329262c3b3b313224292a34352a17181b1a262b2527 +2e3536312f302f32333a38333327282d29413a363c3b3125202223252621 +252c2e2d2d2d2b2c2e423931293b493a30312d34323b49493a43403d423b +312f3329313a353643482d3a3c39343516140c11050907182b335b769eae +c0ccd9dce7efeee8eceff1f1f1f1f3efeff3eff3f1f1eef0f1f4f2f2f3f4 +f4f4f1f0f6f6f0f1f3f4f6f6f5f4f7f7f7f7f7f7f7f7f7faf5002b221604 +12232a100303343128021276460300254d1c1c1d190d3765535c5a290f04 +2789f07312191c141914131f272300060800008d7a676a666e766e6c6d68 +70756d6e6e6f6a7071696f74736a706e696a67686f6e7067726b6c686568 +64616669635f6864625b656e6f665f606256545c575559615354655b5c5e +555a595353585751514f56574d4d52514b4f4f53554f4c54565654514f4e +4d4b4e4e4d4a4f48484e4645454543414347404c453845483c42423d403a +3c403c40433a3939353b433e3c363e39343c36383a3b3e3d3f3c3e3b3835 +383739373a3b393735383b3c3a39313033322e3339383426302f2a2b2830 +29372d35302f29292b312f2b2d2c2c2f2f2c2927292b2c2b1e2925272923 +24212826242527272522252221242723212622212223221f1e1f1a201c24 +282528211e21261f21221a1e1b211f1c21231f1c1b22211f1a1b1d1b1c1a +191a1c1f1f1e1c19181a1c1c1d1f1815151a1c1814111617171617191713 +121c15151517231e1a1b0c2cae21020000030502060c0e0b030000000f1e +201c1a201a00081625398e9a8d8a979793856b4d332928252a292623272e +2f2b32302b2d35332d2d221f1e22272a2c2e2a2a2b2c292525272f31312e +2d2e2e2d323940403b34302f343b3a3f423e42473d3733373d3d39362f3f +43433f3f464142373d333c464244383c3737323d434b4d4945555a4f4e4b +44484a474544423f4b4d43454b453e324147495b55504e5f4e413d41454b +4d494a525a5c5d5e605e504f4e48464d5c4a4f4c52565257685955635a51 +5a5a525452515a5e5a5b697a56615a53667c727a706a6d6c6672624d4e29 +182623242f40606c839eb9d6ecf4fffffffffffffffffffffffffffffffb +fffbfdfefcfaf8fcfffffffffdfcfbfcfdfdfefeffffffffffffe4333a3e +492a93a9b899844157573c69adef86683e447732302b2e072e1a0b1f0608 +121353b9ff9b445a5c544c484e575e532f1e1c1e0db1a496a3a2a8a39b9f +a39a9b9d949a989e90919489898f8f808686888d87838081827c85818588 +7f817c787f84817f7d83937379828279827e8079787f7b7e7b7f7a797878 +7a7c7f84837a7575746e6e6c7273717177726465686c6f665f636c6d6860 +5c6166696967606767615b655c5d5d5d59585c636a5e5a5e61605e62625c +5c58595c56595855565350555c594a50545546595356504f4d4c4c4c4c4c +4b4c4c4c4c4c4d4b4c4a494a4f5250494844494d4744484a4c3f44474444 +4349404940494a44403d3f45474246413c3a4641413e4140434239433b3a +3b3637343c3a37363839393833342c303d342a3833363735323333303839 +2e312f283332323030282e342f332f322f2e33312c2e2c2d302c2b282a2b +322f2c2b2b2b2b292f2b28292c2c2a2a2b292c2e2f2b2523272a2c2b2c2d +2b27262f2c2a28262d282c26253b91332328212324232426231c0d0a080c +1a2c363c41433e22232730376a6c65605a5b625e615c4a3b3b42201f1c19 +1d242521282621232b2923231a17161a1f22242622222324211d1d1f2527 +272423242423282f3636312a26252a3130353834383d332d292d33332f2c +2232363632323934362b3127303a36382b2f2a2a2631373f3f3b37474c41 +403d363a3c39373634313d3f35373d3730253137394b45403e4f3e312d31 +353b3d37373f47494c4e505143423f39373e4b3b4241474b474a5c4d4654 +4b4049494145464a50544e4c596a444f453d4d63595f544e4e504a584733 +330f000e0a0b16253c465d7893b0c7cfe1e7f3f1eff4f1f8f7f7f8fafdfd +fbf7fefbfffffffffffffffefdfdfdfefffffffffffffffffefefeffda24 +25252f127c96a588712d3f3f245192d2674b222f6b281d1927258c9b8e8c +482b27143d9af6882b3f3f3c403f3d41473d1d0f16221dc9c3bbc8c7cdc8 +bec2c6c0c0c2bbc1c1c7bbbcc0b5b5bebfb3b6b9babfb9b5b2b3b4aeb7b3 +b7bcb3b7b1adb4b9b4b2aeb4c2a2a5aeaea5aeaaaca5a4aba7aaa5a9a4a3 +a2a2a3a6a9aeada49fa09e9999979da19c9fa29f93979a9ea19891959e9f +9a928e93989896918a91918b858f868787878382868b8e817e8285848286 +8680827e7f827c7f7e7b7c79767b827f70767a7b6c7f797c7372706f6f6f +6f6d6c6d6d6d6d6d6b6c6c6a696a6f726e676662676b63606466685b6063 +60605d635a635a63615e5754555b5a5859574e4f5856535353555557505a +5251524d4e4b53514d4c4e4f4f4e494a424653483e4c474a4b4946444444 +4c4d4245433c4443434141393d433e444043403f42403b3d3b3c3d393835 +37383f3c39383838353339353233353533333432323435312b292d30302f +30312f2b2c3530302e2f373539332e3f8c281215141817131215140e0100 +00010c1b2426282a2410212d3241868e807b7f82847970614a362e321615 +120f131a1b171e1c1719211f19190f0c0b0f1417191b1717181916121214 +1b1d1d1a191a1a191e252c2c27201c1b2027262b2e2a2e3329231f232929 +252219292d2d2929302b2a1f251b242e2a2c222621211a252b3334302a3a +3f343330292d2f2c2a2927243032282a302a231522282a3c36312f402f22 +1e22262c2e292931383a3c3e404032312c26242b3928312f353935374637 +2f3d362c35352f303030373b363542532e393028394f454c3f38393a3541 +321c1e00000000000012303d546f8aa7bfc7dbe1edeaeaefecf1eeecedee +f1f0efebf1eff2f4f4f3f3f4f4f2f1f0f1f1f1f2f5f5f7f7f7f7f7f5f2f3 +d11d201e20005a6c7a5c490c25270a3575b4482d0a1a5b1e19171f0d5a5a +4c53241316042688f28215211d161a16121a282509000001008f7f6e7a79 +807a6e70746d70726a7072786c6d7166667073686c6e7176706c696a6b65 +706c70726869635f666b65635f657454586161565f5b5d56555c585b595d +58575656575c6166655c575856515250565955575d5a4d5053575a514a4e +5758534b474c515455514a51514b454f464747474342464c4e4140444746 +44484842454142453f42413e3f3c3b404744353b4142334640433b3a3a37 +3937393637363836383637373a3837383d403c3534303539322f33353728 +2f322f2f2d332a342b34332f2926272d2d2a2c2924242e2b29282b2c2d2e +262e282728232421292726252728282723241c202d231927222526242120 +201f292a1f2220192221211f1f171c221d222023201f23211c1e1c1d1f1b +1a17191a23201d1c1c1c1a181e1a17181a1a18181917181a1b17110f1314 +151415161410121b171614141c191d1713267614000401040604060d0f0d +03010000010b0e0e1216150214232f428790878487898d82756448302525 +2f2e2b292d32302a2c2b292a2e2d2b2b2b2423282c2b2a2c3031322f2b29 +2b2e3b3a3633343739382c363f3d352f2f30323f373c3c3137363433312f +2e2d2e302c28283338343231352c3c2e3d45403e4949423e404a4b48413c +38474b4145474142413c3a404b534c493a414a3c373b3d44454b484a445c +423f434744454b4c424549494648464256393e4953495652594f57575655 +654a5862564b57564f56535e5f5b5f66676956635e5f798575736c6b8272 +5b6d7c879490867b5f6c6c62483532382e252c343d4e7697bae1fbffffff +fffffffffffffffffbf8f9f7f3f2fdfffffffffffffefdfdfefeffffffff +ffffe42141444056b07abea69f6d553d6ba590ff3c4f5e39623231251900 +240e141400202e1752b9ffa1435b544d46464c54585f543b241e1ab5ab99 +a3a2ada690949a94999b98a299979094938f96968b8085868589827e7d84 +8682848188948184827d7a777d8b8699b7807a84847a7d777a78787b787e +80807b7f7b74768b8689867d7977746f6b6b6d6d6e6f706f66686a6c6f66 +606260676a63606163616a685d6764655a62605f6061605e61666e6f5b64 +685a63645f585a57595b57565854595b5c5759585153595950585a585e5b +5753514f5151525353535557585852514e4c4f514d464b484e524d494947 +4d46494b4c4d4b46474d44484a454547444b4c4a4c483f3d444444454644 +423f4b4e423b3b363b3a3b38383739393b393737323339332e3632383c37 +34363634312e323132322e2c37322e29333c333535343131342f2b303325 +29292f2829303835302e2c2d2a28312e2c2d2d2c2b2d312e2e2d2d2c2c2b +282a2c2b2c2d2c29282c2a2827282a282b26313857221f2e222427242527 +241e0b0a09090b1115181d1d1e131926303c6b757a725d5662605d5e4e37 +2f362524211f2328262022211f2024232121231c1b202423222428292a27 +2321232631302c292a2d2f2e222c35332b25252628352d3232272d2c2a29 +2725242324261f1b1b262b27252429203022313934323c3c3531343e3f3c +332e2a393d3337393334332e2c323d453e3b2c333c2e292d2d34353b383a +344c322f333734353b3c3032363836383935492c2f3a443a45414c424a4a +4949593b4953473c46453e474b585955585c5d5d47544e4d6470605e5655 +695c455766717e7a7067495656472309060c0200010915264e6f91bad2e4 +f1f2f6f5f8f9fcfdfffffefffffffffdfbfafcfdffffffffffffffffffff +fefefeffda102a29253c9863a78e834e311a538d72ed192b3b1e562c231a +151888918c6d1728311342a2f28926403e3e3f3f3d3e414a3f2a1a1e23c6 +c1b3bdbcc7c0b0b7bdb9bbc0bdc9bfc0b9bdbdb9c0c2b9b0b5b6b4b8b1ad +acb3b5b1b3b0b7c3b4b8b5b0adaaadbbb4c8e5aca6b0b0a6a9a3a6a4a4a7 +a4aaaaaaa5a9a59e9eb5b0b3b0a7a3a29f9a9696989b9c9d9d9c9397979b +9c958d918d9697928d90908e9390858f8c8d828a888788898886898d8e8d +7982867881837d777976787d76787776787d7b7878797074777a6e797879 +7f7c787472706f6f70717171727475756e6f6c6a6b6d69626764686d6764 +6362686164666465635e5f655a5e605b5b5d575e5f5d5f5b524f56565657 +5856545160655752504d5051504f4d4d4e4f504f4b4d46474d47424a464c +4d48454747454242464546463f3d48433f3a424b424444454242433e3a3f +423436363c35363d45423d3b393734323b383636363534363a3734333332 +32312e30302f3031302d2c302e2c2b2e33323530373a51150c1b15191714 +131615100000010000030505070708051b2e35478593928b7e7b847c7069 +533626291b1a1715191e1c16181715161a19171718111015191817191d1e +1f1c1816181b2726221f2023252418222b29211b1b1c1e2b2328281d2322 +201f1d1b1a191a1c1612121d221e1c1b1d142416252d282633332c282832 +333028231d2c30262a2c262726211f253038312e1f262f211c202025262c +292b253d2320242825262c2d2224272826282824381b1c273127332f392f +373736334324323c322732312c32343e3f3b3e434445303d37374f5b4b49 +3f3d53442e3f4f596762584e313e3e3213000001000000000d1e46678bb3 +ccdde8e8eceaecebefeff1f0ededf1f2efeceeeff0f1f3f4f4f4f5f5f7f7 +f7f7f7f5efefce06221e122174397b625c2f19043b7356d10011250b4820 +20160c00524f4e3d001b28072b90ef871422191515151215212f2a160100 +008f806c74737e7764676d696e726f7a72726d71716d747570666b6c6c70 +6965646b6d696d6a717b696d6a65625d616f697a9a5f5b6363575c545957 +575a575d5e605b5f5b54556b686b685f5b5a57524f4f5153545558574e51 +5255574f484b4850524c484a4b49515146504d4e434b4948494a49474a4e +4f4f3d464a3c4547413b3e3b3d413b3c3c3a3d41423f3f40373b41433842 +42424845413d3b3939393a3b3b3b3c3e3f3f3b3b3a363a3a382f3631383a +3731332f352e31333235332e2f352b2f322d2d2f2a313230322e25252c2c +2c2d2e2e2c2935392e282723272727252626272829282627212228221d25 +2127292421232321201f232223231d1b26211d18212a212325252222241f +1b20231518181e17181f2926211f1d1c1917201d1b1b1b1a191b1f1c1a19 +19181815121415141516151213171513121418171a151d223b02000a0207 +0704050c0e0d0000000000000000000000000e232f438293969285838e87 +776f56321f202a2928292e312e292d2f3232313336372f28262b2e2b292b +3334342f2a282a2c2e2e2c2a2b2f31302f303133373a37312b3c322f2c26 +302d2b2f3433302e2d2c2d31333037433e33363443353e3f3c3941413e36 +383b3b363c3e3f4b4738393a383738373334425340453c4246373640414a +4745444e45534d4e5759514c50514a46494a494e4e4651424a464d485049 +685b625e595b736165665a565d5650575d5f5850555b59576062595a7173 +6d6d6e5b6e6a5f63605b5e605f5f53728078867c899e92786a6456433721 +141f2e396084b4dcf5fffffffffffffaf7fbf8fcfffffffffffffaf8fdfd +fefefffffffffcffee0d463f1bbb969ce3c2ffa85eb1ffb7bdda37418a4c +452d1e1e120b241a240e14281d2151bcff9f486154514c4d49534a58626a +442616aabab0aea6b5b3aca8a9a0a4a4a0a9a89a9ca39394a492827e8a8b +888d8c8e8a8c8888888686908b8b8b8c85767a8e8f97b0807c8082808781 +858382817c81888476767d767a857d7e7b78797a78727575737072716e6e +7375727174706d6f6c70716865676e7071776b706d74696b6d6a696b6c6a +68686cb07a6b876e6c6c665f615d5f615c5b625b626e73645c5d675e6562 +6357605a64625e59545355564f515150555c60605a5956515051504e4d4c +50504e52544d4b4c4b4a4a5052464d524b4b4e464d50474d4a4648464344 +4544444444423e3b5051453d3f3a3f3d3a383a393b3839363a373d3a3036 +3d38353a3c3735393a373e303a2f36473331343538343a3c303030312e2f +332f2d33332e3d2f322d2d31312f2c2d2e31302f2c2d2f333231353a2f2e +2c2a2b2e30312e2f2e2c2b2d2e2d2c2b2b28292d2c2b2a243039422f2529 +24232521232521190a080607090b0b0c100d0d080c1e293566748079625a +6868555c5a4a403e201f1e1f2427241f2325282827292c2d27201e232623 +21232b2c2c27222022242424222021252726252627292d302d2721322825 +221c262321252a2926242322202426232a3631262a2837293233302d3434 +31292c2f2f2a2e30313d392a2b2c2c2b2c2b27283647343930363a2b2a32 +313a3735343e35433d3e4749413c40413834383a393e413944353b373c37 +3d38574c534f4a4c645155564a464c453d48525851494b514f4d54564a4b +61635d5d5f4f5f5c5055514d4e504f514362706670637085795f514b3c29 +1d070008141b385989b6d3e5f2fbf5fefffdfefffffffffdfdfefffefcfa +fffffffffffffefffdffe7003024009f7e84caa6ea82338af9a3acca2429 +6a313d3125281e368b98945b27211a1d45abf5872b43404443443b403643 +4e58362017b1c6bcbbb1bebfc3c4c5bec0c2bec9c7b9bbc4b4b5c5b7adae +babbb8bdbbbdb8bab6b6b6b4b3bdb6b4b4b5aea0a4b8b7bfd8a6a1a6a8a6 +ada7aba9a8a7a2a7aca89a9aa19a9ba9a1a29f9c9c9f9d979a9a98979998 +9595989a9596979590948f95948d888c919391958b908d94898b8d8a898b +8c8a888686c892839f8684857e787a76787d75777b777b8a8c8075798079 +7e7d7c7278757f7d79746f6e6e6f686a6a696c73777872716e6966686665 +63636464626668615f605f5e5e6464585f645d5d5e565d61585e5b575957 +54555655555555534f4d62665752514f51524c4d4c4e4d4d4b4b4c4c4f4c +42484f4a474c4c4745494a494f414b404758434144454844484a3e403f40 +3d3e413d3b41413c483a3d38383c3c3a3738393a39383536383938373b40 +35343230313436383334333130323332302d2d2a2b313234342d34393a20 +1014141815111215130e000000010100000000000000122a304081939591 +837f8a846b6d634b3934161514151a1d1a15191b1e1e1d1f22231c151318 +1b1816182021211c171517191a1a1816171b1d1c1b1c1d1f2326231d1728 +1e1b18121c19171b201f1c1a1918181c1e1b212d281d1e1c2b1d26272221 +2b2b28202023231e232524302c1d1e1f201f201f1b1c2a3b282d242a2e1f +1e25242d2a282731283630313a3c342f33342a26282a292e302833242824 +2a252c2645373e3833354d383c3d332f38312c333c3e372f323836343c3e +33344a4c464648354842393b3a33373736372a49574e594d5a6f654b3d37 +2b180e00000007102e5080abc9dae6ede8eeefeaecf1f1f1f1f1f1f1f3f1 +efedf5f5f5f5f7f7f7f3ebedd700251900875c5ea27fcb6b237be48a8ea9 +040d552030231d1f101a54585a2f141b15122f99f48519271b1a1a190e16 +132636421c00007d887a766d7d7d7b7a7b74767876808173757d6f708071 +656470716e73737570726e6e6e6c6e786f6e6e6f68585c707076915d5b5d +5f5b645c62605f5e595e646254545b5456635b5c5956585a585255555554 +565552525557535355524e514d52524a46494f5152574c514e554a4c4e4b +4a4c4d4b4948498c5647634a4a4b443e403c3f433c3d423d425053463c3f +49424746453b44404846423d3837373831333332363d41443e3d3c353534 +3531322f33313133372e2c2d2c2b2b3334282f342d2d312930342b312e2a +2c2a27292a29292929292523383b2d272926292924242425272625242625 +29261c22292421262722202425232b1d271c23341f1d2021242025271b1c +1e1f1c1d201c1a20201b281a1d18181c1e1c191a1b1d1c1b18191b1d1c1b +1f241918161415181a191516151312141514151515121318181919121b21 +250d00030406050102080a08000000010000000000000000061e283a788d +96958887948f7675684d332b252424272b2e2d2b292b312e26272c2b2926 +25272a2a292a25292c2a29292a2931343636363736333538373333373835 +2f3c352c2b2f3a3f363533333639383434353b36353b383a393c3f3a3a36 +3b3a3c40453c39333a3b3d49525e58443e383133393c342c323e30434341 +3d37383336433e42424e4a49403d43494745464248414447444b4e454e50 +594b4c4e5055494a555649455b57635b575c635f5a5e6c66666761595b62 +5a5b5a6375717771595265656264737e806d6d8383817c7998897c77777d +878a82798075615d534b2e32252726486784c4defcfffffffdfbffffffff +fffffffffdfdfefefffffffffcffdd21484049ff9d4f3278bc695fddffae +484e2d34413d382d141f1e1c2917250a0e2a1c1e5babff934b6257565154 +4a4f445354604a422e8da29fa29fa7a5afa6a39b9d9c959cb6a3a8b29ba0 +b3999e9ba69d8e8c8a8b9b958992999c92959693929da1938e99a3919986 +8e8a8d96938e949192938e929184918a80aedc8c8b898785888b88827c7e +7b7a807d7c7f7e7f79767a7a797d77797b787574777c747a73717377716e +726d6c6e706c676467a57f7d8c6b716a6c666863646660625f5d616d7465 +5a5d61595f5f6553615a6061615d59585c60585a5854565d60605f5b5754 +53525457515052504e565c574e504c4e4e555e514d52505056484f534d4f +473f3f42474e4a47434140414141454b403f423e3f3d3d3e3f403f3c3937 +3838403b2d39473c3a3a3936373a3c3b3b303d31323e3138333639303032 +2c343335322f312f2d312c3c5936302f302c2f2d2b2c313333322b2d3232 +2e2c31382f3131302e2e2c2a2e2f2e2a282b2d2d2d292b27272d292c2f2a +2d32302f2628252426222325211a0f080405090b0d0d100c0b08051b2630 +6b757772665f67655558565148401b1a1a1d212423211f2127241c1d2221 +211e1d1f222221221d21242221212221272a2c2c2c2d2c292b2e2d29292d +2e2b25322b22212530352c2b29292c2f2e2a27282e29282e2b2d2d30332e +2e2a2f2e2f33382f2d272e2f2f3b44504a36302a25272d30282026322437 +3735312b2c2728332e32323e3a39302d333937353632362f3437343b4138 +41434a3c3b3d3d423738434437334945514b454c514d474b5b575758524a +4c534b4c4b54666267624d475a5a5658676f715d5d7373716a67887a6d67 +666d767870676e634f4b41340d0b000305284b6daecdeffdfefcf7f4fdfc +faf8fafdfffffffffffffffffefefdfed51031252df9853b1b5f9d4334b4 +f298373f1e2024273637212c2a4790959555202218174e9af97b2e443f44 +43473c3e323e404c3935278ba3a0a29ba1a3b5b2afa7a9a8a1a8c1aeb6c0 +a9aec1abb7b8c3baaba9a4a5b5afa3acb3b6acadaea8a7b3b7a9a4afb9a7 +ad9ca29fa2aba8a4a9a7a7a7a2a6a398a39c92c0ee9e9d9e9a9a9c9f9c98 +909491909695929594958f8c90908f938d8f918e8b8a8d90888e8785878c +85838682808384817c7879b78e8f9e7d827d7f797b76777b757774727482 +877a6d72736d71737767736e77787874706f70746c6e6c68686f7272736f +6b6865646669636262605e666c675e605c5e5e656b5e5a5f5d5d62545a60 +5d6058505053585f5b58545251525252565d52515450514f4f505152514e +4b494a4a524d3f4b594e4a4a4946474a4c4b4b414e42434f414843464940 +3e403a424144413e3f3d3b3f3a4a64413b3a3b373a3836373a3c3c3b3436 +38383432373e35373736343433313334332f2d303232302b2d29292f2d32 +38333130251e0f131518161212151310060300010303020204000005112b +303d87938d87858489836f6c6355443911101013171a191715171d1a1213 +1817161312141717161712161917161617161d2022222223221f2124231f +1f2324211b282118171b262b22211f1f222524201f2026211f2522242124 +2722221e2120262a2f26211b2223243037433d29231d191b21241c141a26 +182b2b29251f201b1b26212525312d2c2320262c2a28292528212427242b +302730323729292b2c3123222d2c1f1b312d39322f353d39363a47404041 +3b33353c3435343d4f4b504b37314444404251585c46465c5c5a544f6e5d +504d4c535c605851584f3b372d2200000000001b3d5fa0bddfededeae7e4 +f1f1eeeceef0f3f4f5f5f5f5f7f7f7f5edecc8082b1c21e6691a00418836 +2eaee2811b2000051219292c18221e2b5b565b2c101f150f3b88f87b1e28 +1b1c1c1d0f120c1f27341f1500586a64645e676877726f676968636a8572 +79836e73866d7675807768666364746e626b72756d6f726d6c75796b666f +79676e5c635e616a6763686666686367655965605684b2605f5d5a595d60 +5d5851545352585754575657514e525251554f5153504d4c4f534d534c4a +4c514a484b4745484946413d3f7d555564434b454741433e40433d3f3c3a +3d4a5042363a3f383d3e433241394142423e3a393b3f37393733343b3e3e +403c3835333234373130312f2d353b362d2f2b2d2d343d302c312f2f3426 +2f3430332b2323262b322f2c2826252628282c3328272c2829272728292a +2b28252324242c27192533282525242122252726271d2a1e1f2b1d241f22 +251c1b1d171f2023201d1e1c1a1e192944211b1a1b171c1a18191d1f1f1e +17191c1c18161b22191b1b1a18181412151615110f121214151315111117 +14181d181819110c00020608060202060807010001020301000004000000 +071e25337b898a8a888a928e7c776b5841312a272526282a2c2e33323734 +292a2e2826272726272a2c2b262a2d2d2f3233302d323432302f2d2c333b +3c332b2d32343132332c2e34364236322b272a2f302c312830312f2f2b3a +3b4337413b35403e47464b3f3b2d33363b413d3d39333a39363a41423f3c +3f43364245443d3a3e34323a303e3b41473f423d41484a4e5251534c5251 +4143483d363b3d3a48595466545c6472655d6466675b5f666d72726a7472 +7e83766e71747c767068675f7061615b5b5d706e746a677a816b646a6f5f +786b5950585e64677067736f65727e7f6b7163694b4a2f2c1c202f4e76a5 +dafdfffffffffffffffcfdfdfefefffffffffffcdc1444583dd55d72312f +2b1b7175ff844f443f3f2a201b28252520002e0f1b0200242b1766a1ff79 +455952554f504f484b514c44475240514b4047505558545053535b5f5a64 +5b5157635960725e575a6968646c6f716d685d6b7276696a686461697472 +6a6b7c6d6b6c736f71777d7a807c7e8481848274939082b3ff908b888885 +85868480868b88888f8d8d918787817f84868588757d8d9997887c788180 +7e7b827a79787e797a7a7d7976747073768d7c64796f7671746e6e726e73 +646a6969706b666a6062646a68606d675b5f63615e5c61666163625c5a5f +605d615752545450515756555c5e575458595253525f5f5a625a50525252 +5b4b52535557514747494f594b484543444647473f463d3e4340413e3e40 +4242413f3d3c373a3d3a363c4241413b3637393a3c3c3f35303839312f30 +3734332f393f3735363c3830323331332e3757333330313234312f2f3132 +3332313131302d2a2c3131353734312f2b262e302f2b292a2c2b2c2b332c +2828222a27312b281e21222d252426222426241c120a03040606080a0704 +04030016222872807c736d6466665b504a49463c201d1b1c1e2022242928 +2d2a1f20241e1e1f1f1e1f2224231e222525272a2b2823282a2826252322 +293132292123282a27282922242a2c382c28211d20252622241b23242222 +1e2d2f372b352f2934323a393e322f21272a2d332f2f2b252c2b2a303738 +353235392c383b3a3330342824291f2d2a30362e312c3037393d4141433c +424134363b30292e2e2b37463f513f48505e5149505253494a54585d5d53 +5a57636a5d555b5e66615e56554f5e51504a4a4c5d5b615552636a544d53 +5549645a483f444d50535c535f5a505d696a595f4e543530151000000f2c +5180b3dcf3f7fcfdfefffffefffffffffffffefefffad3052f3e24bf4a62 +221e15004e51f667332a2a2b15132134272418189291925915272a0e5187 +f6642a3b3439393f413c393e362e3342324741353b3f4042424043434b4f +4a544a404652484f61504b4f5e5d59616264605b505e65695c5e605e5b63 +6e6c6465766764666c686a7076757977777d7a7d786d898678a9f7868181 +7e7e7e7f7d7b7f858282898a878e878a84828789888b7880909c9a8b7f7b +8485838087817e7f83807f8182807d7d797e7f98876f847c837e817d7d81 +7d82727876777d7973786c707078746e79756c7276746f6d72777274706a +686d6e6b6f656062625e5f656261686a636064655e5f5c6969646b63595b +5a5a6353595c6267615757595f695b5855535355565850574e4f5451514e +4e505252514f4d4c474a4d4a464c52514f49444547484a4c4f4540484941 +3d3e4542413d474d4343444a463e3d3e3c3e3942623e3c393a3b3d3a3838 +3a3b3a3938383837322f3136383c3e3b3836322d333534302e2f31302f2b +332c282a263030372d2613100b1815181613131616120b05010201000001 +000000030a2b30388e9e91888c898886786758514537161311121416181a +1f1e232015161a14131414131417191813171a1a1c1f201d191e201e1c1b +19181f27281f17191e201d1e1f181a20222e221e1713161b1c181c131b1c +1a1a1524232b1f29231d26243130352923151b1e222822221e181f1e1e24 +2b2c2926292d202c2f2e2724281c191f152320262c242722262d2f333734 +342d323123252a1f181d1b1825352e3e2a303845383037393a31353e454a +4c434946505649414649514c48403f38463a3e38383a4c4a504241515842 +3b414434493c2a232931353a433b47453b4854554347393f201f04020000 +04224877acd3e8edf1f1f3f3f2f0f3f3f5f5f7f7f7f5f4edcc022e3d1fb2 +394b0b0a08005455ed551d110f120203132a242015026053582e00202607 +407af763191f12141214120c131e1e171a210b160c0001070b10100d1010 +181c19231c1218241c23352117192827232b2d2f2c271c2a3135282c312e +2b333e3a3233443330323832343a403e434041494649453956554778c655 +4c4b4948484947444b514e4e5555535951534d4b50525154414959656354 +48444f4f4d4a514b48494d4a494b4c4a4746424648604f374c444d484b46 +464a464b3d43414248443e433a3d3e45423b4742383b3f3d39373c413c3e +3b35333839363c322d2f2f2b2c32302f3638312e32332c2d2a3737323c34 +2a2c2b2b34242d2f34383228282a323c2e2b2826282a2b2c262d24252a27 +2a2727292b2b2c2a28272225282521272d2c2b252021232426272a201b23 +241c191a211e1d1923291f202329251d1d1e1c1e1922421e1d1a1b1c1e1b +19191b1c1b1a1919191814111318191d1f1c1917130e131514100e0f1112 +14131b1410120d16151d150f000000070608060001060908050202050504 +020403020001001c232b7f928c898f8f9191887561544331312c27232424 +282b27242c2b24272d242a2e2d29292e302e2f302d29292c2c293235362f +2c2b2c2d2f302c282b33332e362e353336362a3a2d31322e2927241f3333 +3a313a504a4844503a50453a4540483e423d453b4142454b44403d3c423d +4a4e4a403c40423f433c3b443d373e3740402d40353241374a46494c494e +5a5f595765675a5c685f5b645249628670756a6c667e7c7a7a7d7a6f7379 +798586726c6e79786b747e747274786e635a6b4f54615c53615b6c63626f +74617176756066615c6673685a605c596d6d5f68706b807b62776c8e8692 +85664c484131292c38548ac1e9fefffffffffffffffffffffffede133b56 +3223344a4e293c28e4802c666a5357473d361c23232531004c0d1b020f16 +23235ba7ff734c5c595c5455514b53475150584a554d5250595b55565654 +58595f6059615d5a575a56545c51524f57535157534e51514d5755554a51 +4f4f49464d53504c48514f504b4a4a45504e504848504e4f534f494a532d +613b4e5051504f4f51514c544d494f4c484f4b4d49484e504e4f504c4f56 +544b4b52554f514e5847484d4f4e505153525455504b585c4e4a54565551 +56525258575d4d5a54484d54565b4c5b555d4c4f57504b5159585250555c +4f53544f5055565265564f5658514f55595a6870635251555351546d6b59 +5c5757555453605059574e55544d4b4a4d544a49494a4c4e4e4d484d4342 +474649473e404244444444443d443e3c46423d484b413a3c3f3f4044af7a +2f34403140363c3437435e654733343e3b33353a3b3a3a2943303c333340 +3531302f3234333237353535353335372e33363534353431353839363333 +333233333f362e2c242f1a2d272925252128212122202226241d0e080406 +05040407060607070020282c68817d736c605f656250464d4d3e27241d1b +1a1c1e231d1c22231a1f231a2024231f1f24262425262321212424212a2d +2c27222122232526221e212929242c242b292c2c2030232728241f1d1a15 +26262d242d433d3b38442e44392e39343c313530392f3536373d36322f2e +342f3e423e343034363337302f38312b322b32301c2f242130263936393c +393e484f494755574a4f58524b54433851735d605558526a66666469665b +5e646470715b51515c5d5059655b595e63595148593d424e49404c46574e +4b585d4a575c5b4a55504b556257494c4845595949525a59726f54675a7a +707768452820160500061d4278b1ddf4fcfdfefefefefdfcfcfcfff5d303 +28442113273f421b2912c9610b45493641342b2c242d221b230fae92955d +321b1f164690f95e333f383b3c42433d41343c3b4335433c423f45453b3b +3b393d3e44453c45403e3a3e38383e3435333a373238343132342e3a3636 +2a343a3c3630383c3935313a3839363538333b393b33333b37383c383233 +3c164824373a3b3a3a3a3c3c373f3b373d3a363e3f433f3e444644454642 +454c4a4141484d474946524142474948484b4b4c4e514e4b565c4e4a5456 +57535854565c5b614f5c564a4f56585d4e5d575f4e51595351595f5f5857 +5b63555a575353595955685952595b5452585b5c6972645452575654556f +6c5a5d58585653525f4f5758545c5b545251545b51505051535555545055 +4b4a4f4e514f46484a4c4c4c4c4c454c45444d4a4450514740424545464a +b682363b4738463c423a3d49646b4d393a4340383a3f3e3f3d2e46333f36 +3643383633343537363537353535353334372e3336353435343134373835 +323232312f2e3a312827222f1a2d252318140c151114120f0f1514100503 +020403000001000102070b2e333a7f9991878a8381857f6758584f3d1e19 +1310101114181311181810141910161a1915151a1c1a1b1c191616191916 +1f22221c181718191b1c1814171f1f1a221a211f22221626191d1e1a1513 +100b1e1e251c253b34322c3822382d222b2830282c272d23292a2c322925 +2221272232363226222628252922212a231d241d272312251a17261c2f29 +2c2f2c2f3a403a3745473a3e48413b4430263f624c4d40403a524f4e4d51 +4e43494f515d604940414a4a3d46514745494e443b3041272e3d382f3b35 +463b3b464d38484b4c353b342f39463b2d332f2c4141323b454358553a4e +42625b6456361a140d00000012366ca4d1e8efeff0f2f2f2f3f3f3f3f3ec +cf032a421a06162d32102515d267043638242c231d2219251e1a20007b51 +5a311c141c103582f85b1f211718181a16101b13212028161d10110b1213 +0a0c0e0e1213191a121d181612161211180c09040e08060a08050608020e +0a0a010a0f120c070d120f0b070e0e0d09080a050e0c0e06060e0d0e120e +080912001f000b0b0c0b0b0b0d0d0a120d090f0c08100f120e0d13151314 +1511141b191010171c161a15221112171918191b1c1c1e211d19252a1c18 +222426222723242a292f1e2b27192025292e1f2e28301f222a2421262f2c +28242b302527282124272a26392a232a2c2523292c2d3d43382526282925 +2940402e312c2c2a272633232e2e2830312828272a31272626272a2c2c2b +272c242128272a281f212527272727272027231f2b25222b2f231e1e2321 +2426945d14192516241a20181b2742492b17182320181a1f212120102916 +221919241b161616181a19181b1919191917181b12171a19181918151819 +1c17161416151618241b12110b1702150e0d050200060204020000050707 +0000030706030205040506050321252b6d8b88858a858a908d75625c4e39 +2724222024252622262a2b2b25222b222932342e2f2f3034332f3034332d +292c3b362f2726262829242525252b312f272b2d3237393a39393532393a +31343a34403b383d413a3a473b3b3f41313342374236393538403941413e +473c3f36363f3a3841423d3b3f4f5662504c4c475458434c594e3842544c +575b585d6a676369715b6865595f5c5b5959668379805f6a6b665a73625f +596d675f646f7166656c5b6166625f674b617e677588778570595e6d6366 +576e656265536c7072655f526064696a666162686b76696f805c646b6579 +616f6a72769b7c69688d7c80777a6a452e202423527dc4e7ffffffffffff +ffffc51436383b2e30322f393f32ffff324d3c383f3b382321162b203100 +43061d053620221c5db3ff884b734d60554e514e574c50524c5456505254 +5455595a5a575c555c545a56565d58575a535450564f5a555a5250525954 +555759575756524b4e575d5855555e5a555b535c4d515657565656555555 +56575358534e51535553515050505152545150574651514c4c4954484b48 +48494b4847494b4d51556650434a4f48454c4a4a4c4b4c4948464b494a48 +48494a4a484a4644494a484b47484746444242434342403e4042413e403f +41414140403f3e404244444341404742434543464a474240404242413f3f +3f404040404042444642404242403e3e383c3c3c3d3a3a433d3c3f3c373b +403d42423e3c3e42403b3a3a3938373737373a3937383939373438373636 +373633303a7a33363233432f383431323a403e393b37343636363a3e3634 +393d3a3332363c35313034363430383c3f3f3d3b3f425032405c534c4c3d +4d6b5969414f4f5a789e5584735f9783573a242329252326262726242728 +241f100a0404050606070707100306262c3f6e6f85846b745c4d5f5e5751 +51391e1d19191b1e1d1b1d2323251d1c231a1d262620212122262723242a +2b252326353027211e1e20211c1d1d1d2329251d23252a2f313231312d2a +3132292c322c36312e333730303d2f2f33352527362b34282b272a322b33 +3330392e312829312c2a3335302e32424955433f3f3a474b353f4b402a34 +443c4549474c59565158604a575448504b4c48485572686f4e5759544861 +4d4d445b554d4f5a5c515057444b504d4b53374d6a53617463715c454c5b +5154455c535053415a6060554e414f53585a565152575a65575d6b474f56 +5367505e565e62876753507561655c60552f180a0e103c67aed1f6f8f7f9 +f8fbfbf8b6092c3135292a2a232a2c1df8f210291c212f2d2618241d2a1c +290ca78b955b531d160d4ea4f67133562c423e3e3f3c4338393b353d3f3a +3c413f40444545424740473f43403f474141433d3d393d36413c4139373b +403d3c40403e3d40413c3d44463f3937403d39423c493c40403f3e3e3f3e +3e3e3f403c413c373a3c3e3d3b3a3a3a3b3c3e3b3a41303b3b3939384337 +3a3737383a3736383a3c4044553f32393e37343b3939393a39383634393a +3839393a3b3b393b37353a3b393c38393837353333343534323032343330 +323333343333323230333437363633323934353735383c39343232343433 +313133343434343436383a363436363432322e3232323330303933323532 +2d313633383834323438363130302e2d2c2c2c2c31302e2f30302e2b2f2e +2d2d2e2d2a2731712a2d292a3a262f2b282931373530322e2b2d2d2d2e34 +2a2a2d312e27262d35302a2b2d2f2d292e32353533313336442634504740 +4031415f4d5d3543434e698f467562508874482e18171a16141615151211 +1112100e050200020302020101010a0007282e43797d959a86947d6e7b76 +69605b3f1713100f12141411141918191210180f111a1b151616171b1b17 +181e1e18151829241c151313151611121212181e1b1316181d2224252626 +221f26271e2127212c2724292d26263323232729191b2a1f291d201c1f27 +1e2626232c21241b1924211f2625201d212f3642322e2f2a373b282f3e33 +1d27372f393b373c47423b444e384542363d393936364360565d3c464540 +344d3a3931473f373c47493e3d4432363b38333b1f35523b495c4b58432d +36473d4031483f3a3f2b46494c3e3a2d3b3f44433d38393d404b3f455632 +3c413b4f36443d45476c4c3b385d4c50494f44210a0000012e59a0c4e8ea +e9ebeaededebb1072a292515121517252e22fdf3071d0f13222422141d15 +25131e007149582c3f1816083b91f36b1b34091e1c1a191620171a1c161d +1d131316121115181a171c151c141917161e18181a141410150d19131910 +0f1218141417181618171611121a1d1712111a151219121e101517191818 +1615151516171318130e11131514121111111213151211180712120f0f0d +180c0f0c0c0d0f0c0b0d0f1115192a13070d130c09100e0e0f0f0f0d0e0c +111110101011121210120e0c111210130f10110e0e0a0c0d0e0d0b090b0d +0c090b090c0a0c090b0809090d0d0f0c0c0b120d0e100e1115120d0b0d0d +0f0c0c0a0d0c0e0c0e0e101214100e10100e0c0c0a0e0f0e100d0d16100f +120f0a0e13101514110e1115130e0d0d0e0d0c0c0c0c100f0f0e110f0f0a +100d0e0c0f0c0b0612500b0e0a0b1b07100c0b0c141a1811110d0a0e0e10 +141912111519140d0c1019120e0e1113110d13171a1a1816191e2c101e3a +312a2a1b2b4737451f2b2d38547a31604e3b735f33180201050100060b0b +070304050506000000030403010101010a00011d2134686c888e81938277 +878273655c3f20232423222123241f2423241f212f2c2e36362f2f31353c +423e3e3f3b332f31312d2826282c303121262a2b2b2e32333535393f413f +3d3e3835393b363a3e3630312f333c3c3634453b31433b4a4b3a433f423c +43493e4340394a403a3a3e364a4a48494c4e53555f5555514b51544e4647 +4e4939384343565c5d5c5c5c667756445d64504646575b585a515f6c6b61 +58605e5754555457575f676d6c73777d7f6e71746b716784b0867d8b8792 +755a4c5e6662647066545c5d71585d55496d6760626d6f696e7a79669769 +86656f65646a66736170777176676c77766e7072717b80837264514a322f +3a5f98d2eeffffffb119312c432a1f2a30464519e8ff3f4e79362d223427 +1b1e1a291c00380e140d2c21292678bcff9358845e5b4f534e514a4d5344 +574c50525354545655535553585258505350535852514f4c504c52596855 +5454545155505151545051504b525a585452585d61595a5654524f555354 +5455555556565851554f57595753515151515150504f53504f574b55534f +54484f4a55545252504e4e4f4f4e4f525d4f4950534d4c52545351505051 +535451515050505051514f54504b4d4e4d4e4f50504f4e4d4d4e5052524f +4d4e4d4b484949494948484748494a4c4c4b4a494e4a4c4e4c4f534f4a49 +48494948464341424343424242434a464344454342434143434b544f433f +403d40423e3d3d3741413f3d3e41403c3c3c3b3a3a393937383838383939 +383735353536383938372f28343636392d3537373534363837343e3a3635 +3331313433323538352f2f33332e2b2b2d2d2d2927292d2d2b2a2b2d2f20 +2a3428272f272530232d222628261828172e221e25212d2f36372c1d212e +242525252627241e120b0506050406060a101d0a0c262f447e7b6e797268 +6a595056544d5442191c1d1c1b1a1c1d181d1d1e191b29242228251e1e20 +242b34303235332b292b2b27222022262829191e2223232628292d2d3137 +39373536302d31332e32362e2627252932322c2a392f25372f3e3f2e3531 +342e353b3035322b3c322c2c3129393938393c3e4446504646423b41443e +393a413c2b2a3333444a4c4b4a4a546545334c533f3535464a4749404e5b +5a50474f4b4441424144454d5258575e62686d5c5f62595f55729c726977 +737e6146384c5450525e56444c4d62494e463a615851535e605a5e6a6956 +855774535a505056525f4d5c666065565b66655d60625c66696c584a362f +15121f447db8d4eef8fba20e2c29442a1d2323363508d5f9212e61262519 +22191c231b291d10a4958c60451919146daff97a406a3d3d3c443b3c3538 +3c2d3e33373a3d3e414344424240453f453d403d40453f3e3c393d393c43 +523f3e3e3e3e3f3d3b3d3e3c3b3c3c4548453c393a3d40393c3a3c3f3d43 +3d3c3c3d3d3d3e3e40393e384042403c3b3b3b3b3b3a3a393d3a3941353f +3d393e3239343f3e3c3c3a3838393938393c4739333a3d37363c3c3b3938 +38393b3c3939383838383939373c38333536353637383837363535363a3c +3c3937383735323333333332323132333436363534333834363836393d39 +3332313232312f2f2f3031313030303138343132333130302e303038413c +302c2d2a2d2f2b2a2a242e2e2c2a2b2e2d29292928272726262727272727 +2828272624242425272827261e17232525281c2426262423252726232e2a +262422201f2221202326231d1e2325231f1f21211f1b181b1d1d1b1a1b1d +1d0e182216151d15131e111b10141614061602190d09100c181d25281d11 +15211312110f1011100d0501000203030202050b180507222d4583847d8e +898589776b6e685e5f4c11141312111012130e1311120d0f1d19161d1b14 +14161a2129252629261e1b1d1f1b1614161a1d1e0e131718181b1e1f2020 +242a2c2a2a2b2522262823272b231c1d1b1f282822202d23192b23323322 +2a2629232a302328251e2f251f1f21192f2f2b2a2c2e31313b31332f2b31 +352f292a312c1e1d2626383c3c3936343c4d31213a412d2323343835372e +3c49483e353d3a333031303331393f45444b4f555746494c41473d5a845a +515f5a65482d20363e3a3c483f2d35364b32372f2349453e404949434551 +4f3c6d3f5e3d473b383e39463241484247383f4a4b43474b4953575a4739 +251e05020e336ca7c3dce5ed9b0c2820321204101a36380ed7f617215519 +1a122219171c131d0d006a524e3232161c12599cf47526471a1b1b231b1d +16191d0e1f14181818171719181618181d171d151815181d171614111511 +171e2d1a191719161a151618191716171319201b161116171d1318131615 +151b18181819171718181a13150f1719171314141414141313121613121a +0e181612170b120d18171515131111121211121520100a11140e0f151615 +13121213171815151414141415151318140f111211121314141312111112 +15171714121312100d0e0e0e0e0d0d0c0d0e0f1111100f0e130f11131114 +181411100f10100f0d0c0b0c0d0d0c0c0c0d14100d0e0f0d0c0f0e101018 +211c100c0d0a0d0f0b0a0a040d0d0b090a0d0c0809090807070606060909 +09090a0a090806060607090a090800000507090c00080a0a0a090b0d0c07 +0d0905060606070a0b0a0d100b0504090a07050507070501010106060403 +04060900040e02010901000a000700000200000200060000000005091113 +08000010090b080403040705000000010401010002081501031920356f71 +6a7f81818b7f76787165634d20262c29211c1f242126252823253331363b +363135383b424341414039302c2e2d292525292d2f2f2a2b2e313232353a +373130322d211c1d26232628292e2f28252f2e2c363d39313a3d364b343e +42414b4c4840484a3e424537504e44454d404c514e5f66616a6760506558 +3d43423e443f3f3f3830323a433a393d4043423d504658554f584d465a4d +545e6f575e5d505e654d5b51544d585f5d665d6a666b6b5860676067677c +7b68656c666b636390826f6e605f585e5878544c7c645a795f59585f6364 +6a72705d8a7a7678736b6085756472777176696b6c6a6c6a6e7672837e8c +7c8e81828a866c533b4439405aaa830e372831282f49423f340fa0ff1940 +ed7e44361e32271d171d1e003504221a1c242a1b7eb8ff92436955554c4b +544e544a4b4e4c5150585754575a56545453575357515350515450524f51 +5d594f5462505050514c54505050514e4e4e4c585c5550545d6065636f56 +5b545752555556565657575758505a4b565a57535454565656555453514e +4d554f55524f534b53494e4a4b4f52505052514e4d4e4e4c4d50504d4f52 +52514f4f4f505354525150504f4f5050515a564d4d4f4d4d4f4f4f4e4d4d +4e504b4f4f4c4847474749494a4a49494848484849494948484745414345 +434547434645454546464543444546464544444446434142424141434843 +3939424240424a4142484745433f3b3c3c3b3a3b3b383a3a393838373737 +3636373737363737373737363535353640313c362f2c4c2b323637343131 +31313533323231303032302e3032302b2c302e2b2d2d2d2c2a282b2b2c2c +2c2c2b2b2e2d302c242a302b2f2a2828342a312829252c2d2b2d252a2e27 +2429302e261f212424232527241f130b06060504060705040e040b272d36 +8e907c7372666b5e58615d505548191f25221a15181d1a1f1f221d1f2d29 +2a2d282324272a31353335363128262827231f1f23272727222326292828 +2b302d272628231712131c191c1e1f24251e1b2524222c332d252e312a3f +283234333d3e3a323a3c303437294240363740333b403e4f56515b585141 +56492d33322e363333332a22242c332a282c2f33322d3f3547443e473c35 +493c434d5e464d4c3f4d523a483e413a464d48514855515659464e554e55 +53686754515852574d4f7c6e5b5a4e4d464c4868443c6c564c6a4e48474e +535458615f4c796962645e564c7161505e636065585a5b595b595e665d6e +6876637566676f6b5138222b202a45977403322532272d443831250090f5 +062fe47b44310e2426221c23291ba78f9a6d371f1b0973abf876284e3638 +3c3d433a40363639353a3941403e43474341403f433f433d3f3c3d403c3e +3b3d49453b404e3c3c3c3d3a403e3c3e3d3c3a3c3a464a42383a40424747 +523c434145403f3e404040414141423a44354044413d3e3e4040403f3e3d +3b38373f393f3c393d353d33383435393c3a3a3c3b3837383b393a3d3d3a +393c3c3b3939393a3b3c3b3a3939383839393a433f363638363637373837 +3636373934383b383433333335353636353534343434353535343433312d +2f312f31332f323131313232312f313233333231313133302e2f2f2e2e30 +353026262f2f2d2f372e2f353432302c2b2c2c2b2a2b2b282a2a28272726 +26262527282828272828282828272626262731222d27201d3c1b22262724 +212121212624232322202022201e2022201b1c20201f1e1e1e1d1b191c1c +1d1d1d1d1c1c1d1c1f1b13191f1a1e1917172319201717131a1b191b1318 +1b14131a212119121313120f0f11100e0603010203030202010009000623 +293491988884867d857a73797163635311171b18100b0e13101513161113 +211e1e221d181a1d20272a28292a241b181a1b171313171b1c1c17181b1e +1e1e2126211b1a1c170b0809120f1214151a1b14111b1a18202721192225 +1c311a24272632332f272f3123272a1c3533292a30233136314046414845 +3e2e43361d23231f292525251f17191f261b181a1b1c19162b2335322c35 +2a23372a313b4c343b3a2d3b4129372d30293239353e35423e434330383f +363d3b504f3c3940393e35366456434236352e342f4f2b23533c32533c36 +353a3c3d404745325f4f4a4c494134594837434842473a3c3f3d413f454d +485953614f6153545c583e250e170c1530886d012e1e221216312f302803 +90ee001dd36c382b0e24241c151718006c4b5d41261c2009619af6731330 +17181b202921271b1b1c161a191f1e191e1f1b191b1a1e1a1e181a17181b +171916182420181d2b1919171a141d18191818161516141e241a14151e1e +252230171f191f1a1a1c1b1b1b1c1c1c1b131d0e191d1a1619191b1b1b1a +19181613121a141a17141810180e130f1014171515171613121113111215 +151212151716141414151718191817171616171718211d14141614141515 +161514141517121618151110101012121313121211111111121212111110 +0e0a0c0e0c0e100c111010101111100e1011121211101010120f0d0e0e0d +0d0f151006060f0f0d0f170e0f151412100c090a0b0a090a0a0709090a09 +09080808090a0b0b0b0a0b0b0b0b0b0a0909090a1405100a03002201080c +0d0a08080807070504060506070b0907090b070202060605070707060402 +07050808080807070b0a0d0901070d080c07050511070e05030006070507 +00040a0301070e0e06020a0b080402040706000000010401010000000600 +021a1d257e8374727b77847e7e857c6966552b303531261f2229282c2c32 +2e2a2f28252825263032302f353434342d2622252d2926272b2d2d2b3229 +262b31302e2f3c3431343026232828292c2e303435312b363630353c3f40 +3e3b34453d40413b4a49403f4c4d49555044585751474b4c52544859543c +4a4c3d3b504c3a40454448474443423d3f4a4243525a5558605f584f564d +556d5b444a574d4a46465653555b65596a545558605b536b646e646e5a59 +5e5d626d686f706c68696e726d6e706e638d797a5b645c656672645c7e79 +505a5c575d6c74705e625682626a6663686a6760728287655c716161535e +53656c6e62756776778a727f7e867e907f895365761e332730122a342221 +2b2432a2144e995c291e2e241914231415002e09170203262e1886cfff99 +3f545055503e4838595748464a534b525150535350534f4e4f4e4f4d4e4d +4c4e4d504d515f5b5547524e57514d4e4e4d4c4c4d4c4b4a4b4d4d4d4f56 +585657647354585d5a4951535252525151515152544e4d4c4f4f4f505151 +5150504f514f4f5351525252554e5449565a5750514f4f51514f4f4f4b4e +504f4e4e4d4d4d4e505151504e4d5150504f4f4e4e4e515c594e4d4f4e4d +4c4c4c4c4b4b4c4e4b4c4d4b494a4b4b4748484848474746484747464646 +464648444647444546414142424244464542444545444343444642404042 +424040413b4245464743444d513f393d3d3c3c393a3c3d3d3c3b3b3a3c3b +3b3a393939393537393937363739393a3937353436382f3d3034333b8a53 +3035383633323334303031333434343532303032302d2e31302f31302f2e +2d2d2f2e2d2d2e2e2d2b2d302d282d312e292d262d2833222a283030292a +3025332d2d2a2622232526242023242325262520120b0606050607070703 +07040d272b29869ba47472726562595c564b524824292e2a1f181b222125 +262c28242920191a17181f211f2127282a2a251e1c1f2723202125272523 +2a211e2327262425322a272a261c191e1e1f2224262a2b27212c2c262b32 +3334322f28393134332d3c3b32313e3f3b4742364a4943393e3f41433849 +442c3a3d2e2c413c2a3035373c3b3837342f313c323340494447504f473e +453c445c4a3339463c3935354542444a5246574142454e493e564f594f59 +48474c4b505b545b5c5854555a5e57585c5a4f79656849524a555662544c +6e693f494b474d5c635f4d5145714e56514e5456534c5e6e76544b605050 +424d43555b5a4e5f515e5d705865646e667a69733f5268132e2431142931 +19161f182798084798602f1e2018191b2d2026249e908d551e22210879bf +f77b2439313a4132372747423431353c343b3a393f3f3c3f3b3a3b3a3b39 +3a39383a393c393d4b4742373f3b443e3a3c3c3b3a3a3b3a393837393937 +393e3e3c3d4a593c414646353d3c3c3c3c3b3b3b3b3c3e3837363939393a +3b3b3b3a3a393b39393d3b3c3c3c3f383e334044413a3b39393b3b39393b +373b3d3c3b3b3a3737383a3b3b3a38363a393938383737373a4542373638 +373635353535343435373438393735363737333434343433333234333332 +32323232343032333031322d2d2e2e2e3032312f31323231303031332f2d +2d2f2f2d2d2e282f32333430313a3e2c262a2a2929292a2c2d2d2c2b2b2a +2c2a2a292828282826282a2a2827282a2a2b2a2826252729202e2125242c +7a432025282623222324212122232424242522202022201d1e2321232221 +201f1e1e201f1e1e1f1f1d1c1c1f1c171c201d181c151c17221119171f1e +17181e13211b1a191715161a1b1813151311121313120703010203020102 +030001000823272888a0ad818083787771746a5e60531c212420150e1118 +171b1a201c181d150d0f0c0d151715161c1c1e1e18110e111b171415191b +1a181f1613181d1c1a1b261e1b1e1a100f141415181a1c20211d1722221a +1f26272826211a2b232626203130272633342e3a35293d3c362c2e2f3739 +2b3c351c2a2a1b192e2c1a2026272e2d2a29292426312524323932333938 +332c332a324a382127342a272323333032384135463031343a352b433c46 +3c463231363538433c4344403c3d41453f40444237614d50313a323c3d49 +3b3355522b3537303643494533372b57363e3c393c3e3a33435358362d42 +343428332a3c4141354739464659414e4d564e62515b27415f0f2b1f2300 +152012142118238e0034844f21161f18171424121301644e532b0f212808 +69b0f87b111c141d24182313332d1b16181d141b18171c1c191c18171a17 +1a16191617171819181a2a2621151f1a231d191818171616151413121214 +1412141a1d191c27381a1f2423121a1a17171716161616151711100f1212 +141516161615151416141418161717171a13190e1b1f1c15161414161614 +141612131514131312121213151616151314181717161615151518232015 +1416151413131313121213151215161412131414101111111110100f1110 +100f0f0f0f0f110d0f100d0e0f0a0c0d0d0d0f11100e101111100f0f1012 +0e0c0c0e0e0c0c0d080f12131410111a1e0c060a0a090908090b0c0c0b0a +0a090b0c0c0b0a0a0a0a090b0d0d0b0a0b0d0d0e0d0b09080a0c03110408 +070f6029060b0e0c0a090a0b040405090a0b0d0e0b09090b070404090a0b +0b0a090a09090b0a0b0b0c0c0d090a0d0a050a0e0b060a030a0510000705 +0b0a03040a000d07090704040508090a0a0c090504050909010000010401 +010002000100041a1b16738a986f737b767a7b807364635526272a28221d +21282c2c2b33312c2d2223282b3544443a352f3031302a2422232f2c2b2c +3032312f362d2a2e32312f3038302c2d2a25262c2e343635363736363637 +34353d3e3f463d4047494d424e4a4941363c443d3d49525a604b4c403b44 +4a4f3e494a435958565c515356504f454045423a3b40474e555157544848 +4e4a4f485756585f54575f6a59504a51676655575a5c615757625d5c5467 +5a60545d555a544c616358606a726d666e706f6b787c646d5a7465666457 +6a5554674f685763665b5862676165735a74715e6059656b7b7c87879177 +738c7a75666d5d6f76768294907d7981889799987a7d779576abae1b303a +55272529272d2f5332f8114c3d30251c29151a111a181728381422000728 +271476c5ff964f5c56493f2c232238548c42524d4f52545756504c4f4b4b +494a494c4c4e4b504c4e4b4b544f51454e4a534e4a4b4b4b4a4a4d4e4d4d +504a494e545453534a55625255605a4e5050504f4f4f4e4e4d5449554e4a +50504e4e4d4c4c4d4e4e4f4f504f514c4e544b5b6d5147464b4b4e4c4b4c +4c4c4d4f4d4e4e4b4c4f4d494d4e5051504f4c4b4c4c4c4c4b4a4a4a4a54 +5249494a49494a4a4a4948484a4b4b494746474a4b484444444444444343 +464645444444444447434547444647424243424142454542413f3e3c3c3d +40433f3f414444413f3f43443e36363d4f665e4b40423f3c3d3c3a3a3b3c +3b39393a3a3a3938373737373638393936353537333436353435383b3834 +38382f344d462f323432323332313132323231302f2d302f2f2f2f2e2f31 +2f2f2e2c2b2a2c2e2b29272729292725282a26262d2c27292d282e2c2e26 +272b252b2427311c2e211f282c28232325251e2022212224241f120c0606 +0706070805050e0704151f1d5e8aa47675786c685d574f4748341f202321 +1b161a212525252d2b26271a191c1d2736362c2721242726221c1c1d2926 +2526282a29272e252024282725262e262223201b1c22242a2c2b2c2d2c2c +2c2d2a2c3132333a31343b3d4035413c3b33282e362f2f3b444c523d3e32 +2e37393e2d393a334948464c414346403f37343b38302f343b4247444744 +39393f3b3e374645474e43464e59483f39405655444647494e44444f4b4a +3f52454b3f484348423a4d4f444c565e5952585a595562664e5946605152 +5045584342553d56455154494650534d515f46605d4a4a43515767687373 +8066627b6964555c4d5f656571807b686169707f8183656862816299a010 +2b3655282325202325492bf00947423c3022210d1f1d28292a5a9c8e9351 +23271c0668b3f1783442382f2f20161227437a2e3d38383b3d403f39373a +363734363438373a363c373a36373f3c41363d3a433e3a3b3b3b3a3a3b3c +3b39393332373d3d3a3b313d493b3e49433a3c3c3c3b3b3b3a3a39403541 +3a363c3c3a3a393838393a3a3b3b3c3b3d383a403747593d333237373a38 +37383838393b393c3c393a3d3b35393a3c3d3c3b38373838383837363636 +36403e353536353536363635343436373736343334373835313131313131 +30303333323131313131343032343133342f2f302f2e2f32322f2e2f2e2c +2c2d30332f2f313434312f2f32332d25252c3e554d3a2f312e2b2c2b292b +2c2d2c2a2a2b2b2b2a29282828282628292926252527232426252425282b +2a262a2a21263f382124262423242323232424242321201e212020202120 +212320201f1d1c1b1d1f1e1c1a1a1c1c1a18191b17171e1d181a1e191f1d +1f17181c161b1316200b1d100e171c1b1617191c14161613121413120904 +01020302010301040a0300101b1a5d8ca97e7d827778716f635956401718 +1917110c10171b1b19211f1a1b0f0d10121c2b2b211c16181b1a150f0e0f +1d1a191a1d1f1e1c231a161a1e1d1b1c221a1617140f1016181e201f2021 +202020211e1d2324252c23242b2d3025312f30281d232b24222e373f4530 +31251e272f34232c2d243a38363c31343731322a282f2c2423282f363a34 +383426242a262c253433353c31343c47362d272e4443323436383d33333e +37362c3f32382c352d322c2435372c343e46413a4042413d4b4f37412e48 +393a382d402b2a3d253e2f3b3e3330383a3436442d474431332c393f4e4f +5858644a465f4d483b42344549495565604d474f566567684a4d47664985 +950c28334b1814191a22244721e300332c2820181e0a19131b1716376651 +5b28142522065ba5f57a23271e16160a060517316415201918191d201f1a +181b1716151515171819171b18191716201c20151f19221d191919191616 +15161514171110151b1b1b19121b2a1b1e2923191919191818181715141b +101c151117171717161515161717181819181a15171d1424361a100f1414 +171514151515161614161613141715121617191a19181516171717171615 +1515151f1d14141514141515151413131516161513121316171410101010 +10100f0f1212111010101010130f11131012130e0f100f0e0f12120f0e0e +0d0b0b0c0f120e0e101313100e0e14150f07070e20372f1c1113100d0e0d +0b0c0d0e0d0b0b0c0c0e0d0c0b0b0b0b0c0e0f0f0c0b0b0d090a0c0b0a0b +0e110f0b0f0f060b251e070a0c0a0c0d0c090809090a090a09090c0b0909 +07060709090b0a0807080a0c0b0909090b0b0a07060804040b0a05070b06 +0c0a0c040509010400020c000b0000070c0b0607090d0a0c0a0603050909 +020100010401010000020900000a0f09497693696e79717878796a5d5740 +2c2a2c2f2f2d31372d2a262f302e332c242a303f4e4d403b37393938332e +2b2a3533323131302f2d2d2d2f302f2e31363e3933302d2b2d313841403c +3d3a363939312c36443f383c3d4b5a4b4c385052584d455050464a4b4561 +60373f42393c49524341474d4f383a4b3d434d464d483339392d2c394342 +3d36383e48504c40444c615b5962595e5b4f4f4d5c4d5753515855554d5b +5e616f7b77725b5e55565b5b595d71635c666b7571686f6c75706d696760 +64686e6c61607b69535e4f5c5d60666a6b6d777f7d8d877f8f917b837587 +8a8593818388707f7d757d78768375788b89938185807889867b78968e8d +709d8d1329558e09241f2026316f1edd0b39371d2220172f1f0e1f112333 +3d141b000c2623217bc3ff7b4357563e2b1d19202027ff93365c58575c59 +4942403c41423e423e4442453c463e3e4340403f3d414f3d3e3f403e4142 +4443444646444945474c4a434146433f48484a4a474d48484849494a4a4a +4548424a4c4c4e494b4a4949494a4b4c484849474e45474d4f687e5d4843 +4b514c4947474745464849494745484c4b464d4c4b4a4949494a47474747 +47464645464c4b4748474649494949484747494a47464341424544404444 +4545444443434443434342434343413d404341444743444644404144433d +403f3e3d3d3f42443e3f424544413f3f373b3c3d403d3c424b3e3a3d3a39 +39363a39393b3b3a393a3a39393837373737373838383635353534353535 +343435352e2c33362e33293b323332303031302d313232302f2f2e2b2f2f +2f2f2e2f2f2f2e2e2c2a292a2c2d2d2b29292a2b2a282d2e2e2f2f2a2d39 +2b2426272a2e25282b262f282f2729292c251e20282922181c1e1f1f1f20 +201e130b0606060607080502080504121c1135758679766c72676761594e +46252523252828262a30262320292a282d241a1e2431403f322d2b2d2f2e +2b2625242f2d2c2b29282725252525262524272c342f2926232123272e37 +363233302c2f2f28232d38332c30313f4e3f3f2b43454a3f374242383c3d +3753522931342c2f38413230373d3f282a3b2d333d363d3a272f2f23202d +37362f28282e38413d31333b504a4851484d4a3e3e3c4b3c464240474242 +3a484b4e5d69625d464940414949474b5d4f485257615d5459565f5a5753 +514a50545a584d4c67573f4c3b4a4b4e5458595b636b6979736b7b7d656d +617376717f6d72775f6e6c646c67667364677a78806c6d68607471666383 +7b7a5d8b7f0823548e0b251d1b212c6a1cdc0b3d412b2f2818322c203022 +36609b86864a28261a156eb0ef5b283f3a261c120b121017f28223484140 +4542322a2b272c2d292d292f2d30273129292e2b2b2a2c323e2c2d2f302e +3132323132343430312d2f34332c2d322f2b343133333036343434353536 +363631342e3638383a353736353535363738343435333a3133393b546a49 +342f373d383533333331323637373533363a393439383736353535363333 +333333323231323837333433323535353534333335373433302e2f32312d +3131323231313030313030302f3030302e2a2d302e3134303133312d2e31 +302d302f2e2d2d2f32342e2f323534312f2f262a2b2c2f2c2b313a2d292c +292828272b2a2a2c2c2b2a2b2b2a2a292828282827282828262525252425 +252524242527201e252820251b2d242524222122211e2324242120201f1c +202020201f2121201f1f1d1b1a1b1d1e201e1c1c1d1e1d1b1d1f1f20201b +1e2a1c1517181b1f16191c171e171e1618181b1511141c20181014161513 +121312110a0602020202010301000401000d180e3274857b797077707975 +6b5d522f1d1b1b1e1e1c20261c19141d1e1c21190e121826353427221f21 +23221e1917162321201f1e1d1c1a1a1a1b1c1b1a1d2228231d1a1715171b +222b2a26272420232319141e2a251e20212f3e2f2f1b33353d342c37372d +2f302a46451c24271c1f2e3728262a3030191b2c1e242e27302d1b232317 +14212b2a221b191e282e2a1c21293e38363f363b382c2c2a392a34302e35 +313129373a3d49554f4a33362d2e333331354537303a3f49453c413e4742 +403c3a33383c424035344f3f2734233235383e4041434a524e5e5a526264 +4e56495b5d586652565b43525048524d4d5948495c5a624f514c44575449 +46655d5c3f737204235286001711171e29640fc8002429141d1b10292214 +2010203f674b502219241f155ea2f45e1725220e050000090307db680527 +1f1e2322130e100c0d0e0a0e0a100e1108120a0a0f0c0c0b0e13200e0f0e +0f0c0f0e0e0d0c0e0e0b0f0b0d12130c0c110e0a13111414111613111112 +121313130c0f091113131510141312121213141511111210170e10161831 +4726110c141a15121010100e0f1213110f0d101415101615141312121415 +12121212121111101117161213121114141414131212141613120f0d0e11 +100c1010111110100f0f100f0f0f0e0f0f0f0d090c0f0d10130f1113110d +0e11100c0f0e0d0c0c0e11130d0e111413100e0e080c0d0e110e0d131c0f +0b0e0b0a0a080c0b0b0d0d0c0b0c0e0d0d0c0b0b0b0b0d0e0e0e0c0b0b0b +0a0b0b0b0a0a0b0c05030a0d050a01130a0b0a080a0b0a07090a0a0a0909 +0a070b0b090908070709080a080607080a0b0f0d0b0b0d0e0d0a0d0c0c0d +0d080b1709020405080c030607000a030a0206060b0601060e110c03090b +09050203070803020001030101000201030000070d001f5f70666862706d +7d7c6f60522e201d1e22221e20252e2b28302e2d383734373b464f4a4141 +393b3a393634302d3232312f2b28282824282b29292c2f312e2f2e2b2d33 +37382c35322e322f282b3430323c443c353b4e4f493b49444c3f3e383745 +4448584d425255363e4644434146474b575e5643424b4e4a3e383d3d3838 +3a3330404d43384247484a4a494949556353586a5b55595b573d485c5b48 +52585d5a4b60675c5e696a64595e5e5d6259686e6d5f686384766a6d7d72 +73617668706e7964707991ad8d90a69d827d968f88847d767a826f777a6e +6f936a8b8c6a6a7a797e8969777b7b7f8b86859285838b7d87787a6d6a8d +9a817b9595907097691a2a23492022252c22266234f60b3e191c2b13100b +060a300f1700331a2e0a102c201b6fadff6f3f4f54412d2123262f11ffdf +2762525158482d3543363e413c433c423d3f36453836453f383a3a3f4e3c +3b3c3f3e3a3c3c3a3b3d3c3b3f40413f3a3534373b3747383e363b3d3b3a +3a3b3b3c3c3c383753323c3e3b383c3b3b3c3c3c3d3d3e3c3e3d4d413e42 +3d383f354348433843414041403e3d3e403e3c3b3d3f3f3c4140403f3f3f +3f3f3d3e3e3f3e3e3d3d3f413f4044403e433f3f3f3e3e3f41444040403f +3f3f3e3a3d3d3e3e3d3d3c3c3a3a3b3b3b3b3b3b3f3a3c3e3d4044403c3e +3d38393e3d393b3b3c3b3b3b3c3d39393b3c3b38373a423f36333635353c +3c393b3d3a3c3e3b39343335373635363736363534343434333333333333 +32313534323231302e2c2e3b2b2e2c2c2e2b2e302f2b2a2b2b292a2c2d2b +2b2e2d2a2a2b2b2a2b2c2b2c2d2d2b2a2a2a2b2b27262525242525242423 +24252222272d2a232922272e27272b222e242627252e2b2925221e1a1b1c +191c1f1d1e1f1f1b140b0604060607080c030507091a261222718a826c68 +6f6360605d524b2f1916171b1b17191e2724222a2827322f2a2d313a433e +35352d2f302f2e2c2a272a2a2927232020201a1e211f1f22252724252421 +23292d2e222b282428251f222b2726303830292f42443c2e3c373f32302a +2937363a4a3f34444728303837363338393d49504835343d403c302a2f31 +2e30322b263641372c363a3b3d3d3a3a3844524247594a44484a462c374b +4a3741474a47384d54494c57554f4449494850475359594b544f70625457 +675c5d4b60525a58634e5a637b97777c90896c69827b74706962666e5b63 +6458597d547578565666656a7858666a6a6e7974758276747c6c73646558 +5578856d6781817f5d865c0f242248222222281e226237fb184d282a341e +1d1d2325411e29268b8792552b2d1a106297f54d24373a2b1e1616192101 +f8ce14503e3d4231161d2b1e272a252c252b26281f2e211f2e282125272e +3b2928292c2b272a2826272929252526272723212124282434242a1f2426 +2727272828292a2a262541202a2c29262a28282929292a2a2b292b2a3a2e +2b2f2a252c2230353025302e2d2e2d2b2a2c2e2e2c2b2d2f2f2c2e2d2d2c +2c2c2c2c2a2b2b2c2b2b2a2a2c2e2c2d312d2b302c2c2c2b2b2c2e312d30 +302f2f2f2e2a2d2d2e2e2d2d2c2c2a2a2b2b2b2b2b2b2f2a2c2e2d303430 +2b2d2c27282d2c282a2c2d2c2c2c2d2e2a2a2c2d2c29282b333027242726 +262d2d2a2c2e2b2d2f2c2a26252729282728292828272626262625252525 +25252423272624242322201e202f1f222020221f2224231f1e1f1f1d1e20 +211f1f22211e1e1f1f1e1f201f1d1e1d1c1b1b1b1c1c1a191818191a1a19 +1716171815151a201d161c151a211a1a1f161f151718151e1b1917161210 +111415181714111211110b060203020201030801010304151f0c1d6c857d +69656d656c726b5c5134110e0d11110d0f141d1a161e1c1b26241e21252e +3732292921232423211f1c191f1f1e1c181515151014171515181b1d1a1b +1a17171d2122161f1c181c1910131c1818202820191f32322b1d2b262e22 +231f1e2c2b2f3d3227373a1b232b2726282d2e323c433b282730332f231d +2223222527201c2c352b1e282a2a2c2a272726324030354738323638341a +253938252f353936273c43383843423c313636353a313e4441333c37584a +3d404f444533483a42404b36424b637f5f63787054506a635c5750494d55 +40484c4041653c5d603e3e4d4c515c3c4a4e5054615c5c6859575f505849 +4a3d3a5d6a524c6666613d6c4c09242043171819251b1f5826e4002e0b11 +210d0c0d11122f0b1103584d5c2c1a281c0e5189f84e131d211309040d11 +1600e1b2002c19181d0f00011104080a050c050b0608000e01000e080106 +09101b0908090c0a06060501020401000405060501000003070313030900 +0406060606070708060602011d000608030006070708080809090a080a09 +190d0a0e09040b010f140f040f0d0c0d0c0a09080a0a0807090b0d0a0d0c +0c0b0b0b0c0c0a0b0b0c0b0b0a0a0c0e0c0d110d0b100c0c0c0b0b0c0e11 +0d0f0f0e0e0e0d090c0c0d0d0c0c0b0b09090a0a0a0a0a0a0e090b0d0c0f +130f0d0f0e090a0f0e0a0c0d0e0d0d0d0e0f0b0b0d0e0d0a090c16130a07 +0a090910100d0f110e10120f0d09080a0c0b0a0b0e0d0d0c0b0b0b0b0a0a +0a0a0a0a09080c0b09090807050306150508060608050a0c0b0706070705 +06080909090c0b0808090906070807060706070606060909070607070708 +0807060506070404090f0c050b040910090709000a000405050e0c0a0a0a +060407090a0c0a0501020607040200010301010009020202010f15000956 +6f67565661606c746c5b4d2e29252628241c1a1e2c2c2c322d2935363034 +343538312c313131323131312d29242627262423252833343231373e3d36 +343836302f353632323a36343d3c34352f373f423f3739474a54473b3e45 +4d474a454247404d644d4c424a40444346484c3e404749443d4650425651 +4049473f3d353a3b3848534447473c3c4e575452524e564f515448546b68 +5e5e4e67535c5656676758616a585d54555b646466687d6c7d735a5b7b65 +78717680836978767b80898c8d898c90858e877e737c6e727b7971686973 +7c7f85797b6c677c668e6f74788589878e8f868473867b7c6c7b756b6c68 +77747873766762637174707d799b73211b252e23231824231e280bcb5c6a +2b1b121c050e0104000206003c282e03002e271975b3ff71504f4a3e2c1f +2224462da4d1444c52545b43284564555459555e555a52535466524d6056 +4a505047524c524c4c504d4e4f4a4b4d4c4a4d4f4c464448443e3d48663f +4e45544444434342424241414342813640403b403a3b3d3e3e3e3d3c3c38 +3a3b53453e3d3f39433b3f393a3f3a3a3b3d3d3a38393636363534343333 +3436393b3b3a37353536373738373736383633383d37343b343434343436 +393b2a3035353333312f3233333333323231323333343434343437313233 +303235323134343033393a362e30323331302f2e33323232302e2f332e31 +313133313139323134312b2d312d332d2a2e31302f303231302f2f2f2e2f +2d2b2b2c2e2e2d2b2b2a2a2b2d2d2b292a2b25292c2b2c28282b2b272526 +2828282a2a27262928252526262627282725262525262726252325242423 +2222232427222224262b2a222622311e2426262824282b302d26292a2221 +2426201916181b1d201e1e1e1f1c140b0604060609080302090804091b0d +1972a98a617468666268624e452e221e1f211d1513172525262c27232f30 +282a2a2b2c25202525272829292927231c1e1f1e1c1b1d20292a28272d34 +332c2a2e2c26252b2c2828302c2a33322b2c262e3336332b2d3b3f493a2e +3138403a3c373439323f563f3e343c323635393b3e3032393b362f384234 +4843323b3933332d32332e3e47383b3b2f2f414a4543413d453e40433743 +5a574d4d3d56424b45455454454e57454b4240464f4f51536b5a685e4647 +6751645d606a6d536260656a73767773767a6f7871685d66585c67655d54 +555f686b71656556516650785b60647175737d7e75736275696a5c6b655c +5c596660625e60524e4f5d605f6c668a661615232d24231820221d2a10d4 +69804f47404b36433e41373335328c828847182f2310689ef54f373a3228 +1d141517382094c2313a3f41452d112d4c3d3d423e473e433b3c3d4f3b36 +493f33393b323e383e38383c393a3936373938343335322e3036342e2d38 +542d3a313c2d3030302f2f2f2f2f31306f242e2e292e27282a2b2b2b2a29 +2925272840322b2a2c2630282c26272c2727282a2a272526262626252424 +232321232628282724222223242425242423252320252a24212821212121 +212326281a2025252323211f222323232322222122232324242424242721 +2223202225222023231f222829251f2123242221201f24232323211f2024 +1f2222222422222a232225221c1e221e251f1c2023222122242322212121 +20211f1d1d1e20201f1d1d1c1c1d1f1f1d1b1e1f191d201f201c1c1f1f1b +191a1c1c1c1e1e1b1a1d1c19191a1a1a1b1c1b1917161617181716141817 +1716171718191a151517191e1d15191524111719191b181c1c211e17191a +1213181a160f0e12171b1a17121213120b06020302020003000005040004 +1407126ca382596b606368726b5346301a161517130b090d1b1b1a201b17 +23241b1e1e1f20191419191b1c1c1c1c191511131413111012151f201e1d +232a29222024221c191f201c1c24201e27261c1d171f2326231b1d2b2d37 +291d20272f2a2f2c292e2734493231272f252928292b3325272e2e29222b +35273b36252e2c252922272824323b2a2d2d1f1f303932302f2b332c2e31 +253148453b3b2b44303933334343343d4634372e2d333c3c3e4055445349 +2e2f4f394c454953553b4a484d525b5e5f5b5e6257605950454e40444e4c +443b3c464f52564a4d3e394e386043484c595c5a61625957485b51524352 +4b3f423c4c454a434837353444454550466e56101524281c19101d1e191f +00b94b5c29231c2b18251d2017131109594c541e05292209558df64e231d +161006020c0e2b0d7ba3101417191e08001132211e201e251e211b1a1d2d +1b14291d13191c131d171d171719161714111214130f1214110c0d12100a +0b143009170e1a0b0f0f0f0e0e0e0b0b0d0c4b000a0a03080607090a0a0a +0908080406071f110a090b050f070b05060b060607090906040502020201 +0000010100020507070604020203040405040403050300050a0401080101 +010101030608000004040202000001020202020101000102020303030303 +060001020001040102050501040a0b070002040503020100050404040200 +0105020505050705050d0605080500010501080200030605040509080706 +060605060402020305050402020101020404020004050003060506020407 +070301020404060808050407060303040404030403010000010203020100 +050404030303040709040406080d0c0408041300060808080204070c0b04 +090a03060c0e0c0503060c0e0c0702020708040200010301010000010605 +00000c0000568d6d465c555a6471684d3e252e2b2723232425272c302c24 +28333125292725272e31302a2a2b2e30333332312c2c28282e2d2c31313e +3633433b2d363b423a2c2d32302d2b2f2c362f363034353b425142454750 +4d5740463c3f4b534d4041494a50524a36414a4843414141494b57485541 +4542463e4f53483d51433f3c333b3b374136453f41483c45434c4c464e4d +544f5955644f5d73616153595e616773736f746e636e685d606a6e5d7869 +79635f71866f7689877e7b8a7b7d82897f7a757771896a8578786a6e7677 +7d73746b676b65626b616e63676e5f7f7f6f706c7266655f6d625a65667f +575b6b6f7c746d74716a78777a907c7b757372ab6917291b1c2a18232627 +272805a65b6c7d1a131624241a251c1a1d42205266000d22220985afff61 +4a544b3e2e1c263ba66e8f603453524c534e7b5c6059647661655b5e6d63 +7081776b605e6c66585f5a565f5f595d60565f585f5b585a615b575e564e +5b4b4f507e4a555868814e4f515051535352535454525050535551535352 +5252504c56565553504e4e4e4b4f4d4b4f504f524e4d4b4c5054524e4a45 +4a4b4a48454b49464b51534d484845474644454847443f40404040414345 +494242453f4f92de423a383e423f3e40423a3a3d3b3c3d3a393838373738 +393a39383739393737383534323232343637343a302e3131353135302f32 +322e2f332e2f2f2f2f2f2f2f2c2e2d29282b2e2d2c2c2c2b2b2a2a292d2d +2d2c2c2b2b2a2f28283227281f3029282d28242c172e23242b281d212922 +2134292523202923231f21231e1e23241f26211c211e1a1f1d1d1a1b2121 +1f24221d231e1e28151e1c1c1d1e1e1e1d1d212127201f1b1a281b262a2b +4e262228252221211b1310100c0e20441323211c1a10060105080a060603 +0505040b1110113db0806a7e7d80584b5c3733352724201c1c1d1e202529 +261e222d2b1f211f1d1f2427231d202124282b2d2c2b2424202026252227 +27342c29362e202931383022232826232226232d262d272b292f36453639 +3a43404a33392f323c433f32333b3c42443c28333c3a353334343b3d493a +47333734383041453b30443735332a33312d352a3933343b2f38333c3b35 +3d3c433e4844533e4c62505042484d505460605c615b515c53484b555948 +6354644e4b5d705960737168657463656c7369645f615b73546f62625458 +6061675e5f565155514e574d5a4f535a4b6b6b5a5c585e52544e5c514954 +546d474b5d616c645b635d566261667c6a6a6362629c5c0c23191b2b1823 +2526262a0dac5a82c5838b90908c899c9c988a9b5f8dae3c222221027a9a +f53f3441362a200f1a2f99627f5222423f393d38644548424d604a4f4448 +564d596b60554948554f4148433f484842474a4047414844414347403e47 +423c4b3d41426f384144506b3a3c3e3d3e404140414242403e3e41433e40 +403f3f3f3d39434342403d3b3b3b383c3a383c3d3c3f3b3a38393d413f3b +3a373c3d3a38353b3936383e403a353535373634353837342f3030303031 +3335362f2f322c3c82ce322a282e33302f31322a2a2d2b2c2d2a29282827 +2728292a29282729292726272423212121232526252b211f222226222621 +2023231f20241f202020202020201d1f1e1a191c1f1e1e1e1e1d1d1c1c1b +1f1f1f1e1e1d1d1c211a1a24191a11221b1a1f1a161e092017181f1c1115 +1d1615281d1917141d171713151712121718131a151015120e130e0e0b0f +1515131816111712131d0a130f0f10111111101014141a13120e0d1b0f1a +1e1f3f17121818141515110b07090a0c1a3d07171514130b020001040101 +0200010100070c0a0a36a8755f726f77594e5d372f321f1c161212131416 +1b1f1a1216211f13161412141a1d1a1416171a1d2021201f191915151b1a +181d1d2a221f2d251720272e2618171c1a171317141e171e181c191f2635 +262929322f3922281e212933322728303137372f1b262f2d282624243032 +3e2f3c282c292b2334382b2034292b2a21282721291c2b23242b1e27232c +29232b2a312c3632412c3a503e3e30363b3e434f4f4b504a3d4840353842 +46354e3f4f3933455942495c5a514d5c4b4d545b514c4749435b3c574a4a +3c4048494f43443b393d38353e3441363a41325253454440453938324035 +2f3a3c5530324346534a4349453d4b494e6352504b46417f4c06231a1723 +0e1b2122221f00903e5e93484d535c5b56645f595065305f7e130f1a1c00 +6485f33d1d21170f06000c23894c652f0017140e141142252c232d3b282a +2223342837463e302723332d1f26211d26262022251b251f26221f212622 +1f271f1827161c1b48121c1f2c46171b1d1c1d1f1d1c1d1e1e1c1a1a1b1d +1d1f1f1e1e1e1c182222211f1c1a1a1a171b19171b1c1b1e1a1917181c20 +1e1a16121718181613191714181e201a151514161513141716130e0f0f0f +0f101214160f0f120c1c61ad1109070d120f0e101109090c0a0b0c090807 +0706060708090807060808060809060503030507090a080e040205050905 +090403060602030702030303030303030002010000000201010101000000 +010004040403040303020600000900000007000004000003000500000502 +000003000010050100000500010000010000010200040000000000000000 +000000000000000001000007000000000000000000000101070000000008 +000408092c040208080709090700000000000c2d000709090b0700000203 +02000100020200040600002393614d64646e5147552d23231f1f21222323 +21202c2c2c2d2d2b2622282c2f2c29262a2b32312f2d2b2a29283e3b322f +312d2a2d252f2b2c393832393a3f3b363736353836393844404541454743 +404c454d4b4b44413a3d3a4947494d4544484847433c444d524b413c3d3e +34374337463943443e3548524d464c4a2f353840362b3a3b333145404b4d +4b3b5e5562625c696f82615e5e53716b5e695e5a545959586260666f7b71 +69766f7068786a57646e5d655d67616373667a74757b71686272675e656b +6f6563646b776d72727e7c52626361687273746a5b6467646b745b696f68 +6d6b625a576a566e7d7d8d86727071707d67826979796e696abb78132022 +1f182f22171a1e210f994c5e591a0e020d200e270b00132c124d85100d25 +2616a2d1ff67454c474236201a3d8c86914e4b484a4c56587b5f5f5b5f5d +536160625e5e656d6768635f6c6c5e625d5c605b5964655c645c60575252 +51605f5b555851534e54774d4e51729e5153555657585855545555555455 +575955565653535453515152525150505153515253515154555150504f4f +515554504f4b4f5153514b4c4a484b4e4f4d4a4950504e4b4b4e4d4a4b4c +4c4c4b4c4e504d4f54534b4f729c63574c48454243474b474645454c4f47 +47474646464647474442424343414143424343424242444550413c46413d +453b413f3f424341403f3e3e3e3e3f3f3f3e3f42413c3a3c3d3b3b3a3a3a +393939383636363535343434353634343041363532312f2f3857362c3232 +36363132343134393130302a2d32332d2e312d2c2d2a292926252b2c2828 +2c2b2a2a2927232022331f242d2422232225292a2927262624282e2a262f +26242e201e52b0c3232a27252321180f0b0b050320572f1e141c170f0702 +0506090808040506050b110d122a89746270666039322a51695718181a1b +1c1c1a19252526272725201c202427241f1c1d1e28272725252423223633 +2a27292520231b2521222c2b252c3035312c2d2c2b2e2d302f3b373c383c +3b37344039413e3e37342d302d3c38393f37363a3a39352e363f443d332e +303126293529382b353630273a4540393f3e252c2f382c212e2f27253833 +3e403b2b4d4451514b585e71504d4d42605a4d584d49414646454f4d545d +665c54615a5b53635542505a474f47514b4d5d50625c5f655b524c5c5148 +4f55594f4d4e5561585d5d69663c4e4f4d545e5f60564750524f57604755 +5e575c5a51494558465e6f6f7d76605e5d5c67516e5567675c585aac6b08 +1a201e192f2216191f24179f4b74a9919387808c81a2968a8e894776be42 +1c22261298bff5462f3c342f26140d317f78823e39373739404265484844 +48473d4b4a4c48484f5751524d495656464843444843414c4d444b454940 +3b3b38474847424841453f45683b3b3e5c883d4042434445464342434343 +42434547424343404041403e3e3f3f3e3d3d3e403e3f403e3e41423e3d3d +3c3c3e42413d3f3d414343413b3c3a38383b3c3a373640403e3b3b3e3d3a +3b3c3c3c3b3c3e403a3c4140383c628c53473c38363334383b373635353c +3f3737373636363637373432323333313032313232313131333441322d37 +322e362c32303033343231302f2f2f2f3030302f3033322d2b2d2e2c2c2c +2c2c2b2b2b2a28282827272626262728262622332827242321212a49281e +24262a2a25262825282d2524241e2126272122252120211e1d1d1a191f1f +1b1b201f1e1e1d1b171416271318231a181716181c1d1c1a1919171b211d +1922191722141246a1b4131a1a1717150e07030403011a5023120814100a +0301010200000200010201070c090c238169556055533230264b624e1010 +10111212100f1b1b1a1b1b19141015191c19151214151e1d1c1a19181716 +2b281f1c1e1a1619111b171823221c23262b272221201f221e21202c282d +292d2b27243029312d2d26231c1f1c2b2529322c2b2f2f2e282129323730 +26212021191e2a1e2d202a2b231a2d3530292f301b23262d2015201f1715 +28232d2f2b1b3b323f3f39464c5f3e3b3b304e483b463b37303535343e3c +40495349414e47483e4e402d38423038303a343645384a44474d433a3444 +3930373d413735363d493d42424e4e243536343b4546473d2e373d3a3f48 +2e3c423b403e372f2d402f475555645d48464544503a563d4f4f443e398f +5b021a211a11251a12151a1902852f507451514647584a6955474f521b4e +931d09191e067da7f03f171a13110c0000216c5e631c110c0c0e171b4026 +292526221826252723232a322c2d2824313122252020241f1d282b222c25 +29201b1c1a29292621241d1e181e3f13131435611a1f21222324221f1e1f +1f1f1e1f1f212122221f1f201f1d1d1e1e1d1c1c1d1f1d1e1f1d1d20211d +1c1c1b1b1d21201c1b181c1e211f191a1816181b1c1a17161f1f1d1a1a1d +1c191a1b1b1b1a1b1d1f1a1c2120181c416b32261b17151213171a161514 +141b1e161616151515151616131111121210121413141413151517182415 +101a1511190f15131316171514131212121213131312131615100e10110f +0f0f0f0f0e0e100f0d0d0d0c0d0c0c0c0c0d0b0b07180d0c090806060f2e +0d030a0c10100b0c0e0b10150d0c0c06090e110b0c0d0b080b0807070403 +090c08080a07080607030000000f00000a0100010005090a090706060408 +0e0a060f06040c0000308ea1030a0a0a0b090400000000000c4013020009 +0806000002010100020002030004080000116e5745534b4a28241a3d523d +20222426262524232420242c2b222026272b2d2b2725292d292a2b2d2d2e +2c2e38332a292f2e2b2e31313233373a3b3d49484341413b3a443e47556c +695d49434042444840484a4a46373e3f46655c574645414245413b3c4b4d +4c474341403f3c44544b533d3b373f3d494842473a3d3938383f3d3a494b +5f4a5a5d5f4b494e6a4c4d534f5f41474c515c4e61655d525657535c6162 +6b6a6b606258527465735466675d5d6560706773607768726765716e696f +646d707078656b5b74807c7977828a9fad716b5d6b70605e605e696e6a7b +6f6d73897b757c74645669735d6c7d6f7d7d6f768690886b866e846a697c +69b770131f1e1d1a45342620201c0c4e7c642d101b1d141a23281b171b35 +416054131c312403aeb8ff50424a486f5f3a2b34525b572b52484a4e4c4d +5e4c4e52785c4c53545b4f5b53504d58585159615d5d5a5a5b5455647065 +6c62665c57597e7157556161534e59535c55645e57584f53555657585754 +545555545354565756575552525454534d4e505050515354514f52504c53 +564951525251515454514d4b4a4c4f4e4b484e4e4d4c4c4f4e4c56565351 +515353514b4c4c4b4b4b4d4e464d524e47454c544c4745474745474b4b4b +4b46454f5146464646464645454448464647474545474042454543414142 +4a4242463f4e5a3b42434446494a46413f3f404040414141434545423f40 +403e3e3e3e3e3e3d3d3d3d3d3d3c3c3c3b3b3b3b38353a4f443a383b3b40 +3a5e48413434333538342e2f3b3d3b3232353036362e2e3232333533312f +3336353331282d292e2e2a31362c35242d3b2225372b302c28282a2a2623 +3a241e2c212d2730262a2964d2be3324282625241d19191b2427333c1f1d +2125150e09040505090909060606050a0f0c0d1e6e7e625c4c41290d122c +6e53191b1d1f1f1e1d1c1d191e26251c1a20212527251f1d1f231f202325 +27282828302b222125242124272725262a2d2e303c3b3634352f2e38323b +49605d513d373436383c333b3d3d392a313236554c473837333437332d2e +3d3f3e39353333322f36463d452f2d29312f3c3b353a2d312f2e2e35312e +3d3f523d4a4d4f3b393e593b3c423e4e30363b404b3d50544c4145464049 +4e4f5857594e4d433d5f505e3f515248474f4a5a515d4a61505a4f4d5b5a +555b50595a5a624f55455b676361626d768b995d5749575c4e4c4e4c585d +55665b595f756a646b63534557614d5c6d5f6d6d5d62707a7255725a7056 +576b5aa9640a191d1c1b4531221f211f1458857e6a5f6d6a585c69757270 +737d6d848238252d2401a7a7f0322e3c365c4e2a1f28434d481b40353539 +363748353a3e6246363d3e4539453d3a3742423b434943413e40413a3d4c +594e544d51474244695c42424e51433e47414a42514b44453d4143444546 +454242434342414244454243413e3e40403f393a3c3c3c3d3f403d3b3e3c +383f42353d3e3e3d3d40403e3d3b3a3c3f3e3b383b3b3a39393c3b394343 +403e3e40403e3839393838383a3b333a3f3b343239413c3735373735373b +3b3b3b36353f4136363636363635353438363637373535372f3134343230 +3031393131352e3d492a31323335383935302e2e2f2f2f30303032343431 +2e2f2f2f2f2f2f2f2f2e2e2e2d2d2d2c2c2c2b2b2b2b28252a3f342a282b +2b302a4e3833262625272a2620212d2f2d2423262127271f1f2423252624 +222024272623211b201e23231f262b212918212f16192b1c211d19191b1b +17142b150f1d121e18211a1e1a55c3af231418191918130f111520252d35 +1311151b0c090503010100010400020201060b0706166572544b39301f05 +0b2363461113131515141312130f121a19100e1415191b19141215191516 +181a1b1c1c1c252017161b1a171a1d1d1c1d2124252733322d2b2923222c +242d39504d412d272628282c232b2d2d2819202126453c382b2c28292c28 +20213032312c282623221f2939303822221e24222c2b25291c212525242b +25222f2f422c3a3d3f2b292e47292a302c3c1e24292e392b3e423a2f3334 +2f383d3e4746453a3a302a4c3d4b2a3c3d33303833433a46334a38423735 +44423d43384143434b383e2e45514d4947525b7080443f313f4436343634 +3e4340514341465c504a5149392b3f49364554465454454a59635b3e5a42 +583e3f513b8e5403191b17133b281f1b1c14003f685b3e2f3d3e3136444b +4540414f49605d1714241c008a8de8281317123c341309122c322700180b +0a0e0d102313191d3d1f0f16171e121e1613101b1b141c231e1c191b1e17 +1b2a392f3830362c27294e3f25242e2f211a211b221a27201a1b171d1f20 +2122211e1c1d1d1c1b1c1e1f2122201d1d1f1f1e18191b1b1b1c1e1f1c1a +1d1b171e21141c1d1d1c1c1f1f1d191716181b1a19161a1a1918181b1b19 +22221f1d1d1f1f1d171818171717191a12191e1a131118201a1513151513 +15191a1a1a15141e20151515151515141413171515161614141611131616 +141212131b131317101f2b0c131415171a1b171210101111111212121416 +1613101111101212121212111111131313121212111111110e0b10251a10 +0e11111610341e180b0b0a0c0f0b06071315130a0c0f0a101008080a0c0b +0f0d0b090f12131311080d080f0d0b10150b11000917000011050c080404 +06060200160000080009030c04080742b09c130409090b0a070304091518 +1f2503010911050502010200010001000303020508010009566447413228 +1500001251352727262626282b2e2926292f2c242834362f29292e2f2e2c +2b2f3338393937393e3a33364245444841373839383e433d474339353736 +38414441444f4e474144353e474943494d4b52434743455f61524e524c4a +4f4b47504b443d3f4649443d3a3f45393e33393e3d3d44445169423a403c +3a3a3c444d493a4a57513b4d4e545942434f4f59535f465a5e5c4e5b4f46 +555a565b5b525352615d5a5b557660646f5d5b5a63716c616c657e60727b +6f64686e6b7a736a62656365726064717a7a7a8d9c89846b5e6c61645c5d +636a76777a989a747877776f878c856b7b7060736c5d778d898787868c88 +7b858a707b8d7bbd6915211e1c1e2423221b19190f0e180c000000040106 +020000000000181c0118191a2d01d5c2ff3d465047806749513e4b4b4b46 +524e5153494c50484a51695b4d5453574b49534c4a53554e4f5556545352 +514d50584331342d352d2c3031353638412e6c41464d4a4d534f4c4a4b4e +4f4e4f50504e5251504f4e4d4d4e4e50504e4d4f504f4d4e4e4e4d4d4f50 +534e55534c565b494d50514f4d4f504f514e48494a494e4d4c4f4e4a4a4e +4f4b4e4e4e4f5051504f4d4e4e4d4b4c4d4f4a4c4c49474847454646494b +4945444647494d4a4546463e474748484746454445434344444242444044 +4748454241414447454648576047454746464a4e49404141414142424343 +4243454443434342403f3f40404040403b3b3b3a3a3a3a3a3b3536353a44 +3c3a3939425437443c4d47464045514d454b475359403f51484648414042 +404349495162797047313942312a33353143524834344a506e986a996355 +4a4f606d6f6a94715f6c54615a63796a47395a29322a2728272524242a2f +3447492b1b262a1915110d07060508090805060504090d08051554826b5f +482e83875065625220201f1f1f212427221f2329261e222e302923232627 +242221252b303333333336322b2e383b3a3e372d2b2c2b3136303a362c28 +2b2a2c3538353843423b353829323b3d363c403e45363a36354f51424044 +3e3c413d39423d362f31383b37302d32372b30252b302f2f3737445c352e +333230303038413e2d3d47412b3d3e444831323e3e48424e35494d4b3d4a +3e3544494348483f403f4f4b454640614b4f5a4846454d5b564b564f684a +5a63574e545a57665f564c4f4d4f5c4a4b5861646478887570574a574c52 +4a4b51586465658386606463665e767b745a695e50635c4d677c75737170 +76726571765c677c6caf5d0c1c1a1c1e22201f17181c161822231e1a1e26 +2126252120221f283635223019132c02d0b2f7213544376d533741303b3c +3b343e3b3b3d33363a31363d5345373e3d4135333d36343d3f38393d3a38 +3738373537412b1c2019201b1a1e1f232427301d592d3239363a403c3937 +393c3d3c3d3e3e3c403f3e3d3c3b3b3c3a3c3c3a393b3c3b393a3a3a3939 +3b3c3f3a413f38424735393c3d3b393b3c3b3f3e38393a393e3d393c3b37 +373b3c383b3b3b3c3d3e3d3c3a3b3b3a38393a3c37393936343534323636 +393b3935343637393d3a3536362e37373838373635343533333434323234 +2f333637343130303336343537464f3634363535393d382f303030303131 +323231323433323232312f303031313131312b2b2b2a2a2a2a2a2b252625 +2a342c2a2929324427342c3d39383237433f373d39454b32304239373933 +323432353b3b42536a61372129322522272a2638473d28283e44628a5c8a +54463b40515e605b8562505d45524b546a5e382a4b1a221a17181919181b +2027304341220e191c0f0c0c0906020100010300000100050905010f4c78 +5d4e351d757b445852431818151515171a1d1815171d1a121622241d1717 +1b1c1a18171b2025272727272b2720232e3130342d23222322282d27312d +231f1f1e20292a272833322b25281b242b2d262c302e35252925253f4133 +3339333136322c35302922242b2e27201d222a1e2318202522222727334b +241e2a292624242a312c1c2a37311b2d2e34361f202c2c36303c23373b39 +2b382c2332373237372e2f2e3b3732332d4e383c4533313036443f343f38 +5133424b3f363c423f4e473e35383638453335424b4c4c5d6d5a573f3242 +373c343339404c4d506e6e484c4a4c445c615a405146394c43334e625d5a +5a585f5a4e585e434f624d954f071919141416171a141413040009060000 +010b090e0d07050400051a1803160d0d2700b398ef16171c134d3a1f2816 +211f1a10191312140c0f150f151a2e1e1217181a100c180f0f161a111417 +13111215141318220f0107010b05060a070b0c0d1400390c111611121611 +0e0d13181918191a1a161a19181716151516171b1b19181a1b1a18191919 +18181a1b1e19201e17212614181b1c1a181a1b181b1a141516151c1b181b +1a16161a1c171a1a1a1b1c1d1c1b191a1a191718191b1618181513141311 +141417191713121416181c191415150d1616171716151413141212131311 +111311151819161312121518161719283118161817171b1f1a1112121212 +13131414131416151414141313131314141414141111111010101010110b +0c0b101a12100f0f182a0d1a12231e1d171c28241d231f2b3118192b2220 +22191819181b21212b3c554e27111922150f1718142633291212282c4a70 +42733d31262b3c494b46704d3b48303d363f554825173807120a08090c0b +0a0c141a2437341300091105050806040300000000000002010608000003 +416c544631166a6b344742302e2e2d2c2d31373c35373937312d31374033 +28282e2e2b27323334322e2b282a34322b2d363835373c2e2e33323c4238 +3e3d342f384042444137312f32333e4a434147484d5353474a494a4a444f +624f43494441433c363e47413d3f4546413c40454941453e42483a323645 +5d6f413e313b433a343f443e4f60787d5f5a505959545d73795e59475e7b +62575b5b4c61505c5a606661666d5b6c6568576b65645967656757655d73 +6d627f557675796b68775c5c6871675f7077778376788587777a6c687182 +71796867717277807c7c6f63756c6d8997656a726d5a746a63747562717f +7c7f8790a1a782828384837985c866121f241e141e2328201c232a131216 +2218171814131320150a0c0411161216282d170ac56ff55b504339534d55 +50454a40495243494d514a54534e4e4f4d5e4a4d4b5b675a565253535454 +4f4f5455554f4d504f48291517131c171619171d24121b17d89437504e4c +444750544b4c4b49494c4d4c4e4e4c4c4b4b4a4a494d4f4e4e4f4f4e4f50 +504f4e4d4e4f504b52524b555b4b4c4f514e4c4c4e4c494b474c49424b4c +484c4e49494c4b4748484a4d4f4e4b494d4e4d4c4b4b4c4e4e4b494b4c4c +4c4d504f4e4c4946474a4b4b555a50464544484849494847464546444446 +4543434545484b4c4a474544434136434d3e3d4a454644414549463e4343 +43434343444542434545444242413d3d3d3d3d3e3e3e3939393939393939 +39393f36353937383a323a543b382e3c48443837403a323735444d343242 +3a393e3a3d3d353236373a333c46423f3a2e2e262d2b2434443938302d36 +28893a6b594939353c43423d57534d4c345245354d3c3933262e292a2828 +252120232a2e333939292522221c1713100c080509090904060503060905 +0306275e5c5d451f50436036373c27272625262a30352e3033312b272b31 +3c2f24242828231f2a2b2c2a282524242c2821232c2e2b2d2f212126252f +352b313027222c343638352b25232728333e3735393a3f45453a3d3c3a3a +343f523f353b3633352e283039332f313738342f353a3d353932363c2e26 +2a3952643633252e362e263237314051676c4e493f4848434c62684d4836 +4d6a51464a4a3b503f4b474d534e535a495a50534256504f44524f51414f +475d574c663c5e5d615554654a4a565f534b5c63616d60626f7161665854 +5f705f6756555f6267706c6a5a4e60585975865459615b48625853646553 +606e686b717b89926c6d6d706f6876bc5c0b1a201e151c1f231c1b242e1b +162235291b1817191d2a211c29201c1d24232122160cc161d83e423a2b40 +373f3f36392d363e2f32373b343e3f3a3a3b3646323533434f423e3a3b3b +3c3c37373839393533373733150306020c07050b0a1015030903c27c1f39 +373631343f4237383735353839383a3b3939383837363236383737383837 +383939383736373839343b3b343e443435383a3735353738373c353a3730 +393a363a3a35353837333536383b3d3c39373b3c3b3a39393a3c3a373537 +38383a3b3e3d3c3a3734373a383842473d33323135353636353433323331 +3133323030323235383937343231302e23303a2b2a373233312e3236332b +30303030303031322f303232312f2f312c2c2c2c2c2d2d2d282828282828 +28282a2a3027262a28292b232b452c291f2d39352928312b222725343d24 +22322a292e2a2d2e252226272a232b35312d281e221e23211a2b382d2b23 +1e2719792a5b493929252c33322d47433d3c244235263e2d2a24151d1819 +18181815141a21272d332f1d1815140f0e0e0c0804010001010000010004 +0704020320554f4e330d42365329272c1f1f1c1b1c20262b242627251f1b +1f25302318181c1c18141f20211f1c191818211e1719222421232618181d +1c262c2228271e1920282a2c271d15131516212e29272c2d3238382a2d2c +2b2b2530433028302b282a231b232c2622242a2b241f23282d252b24282e +20181a294050222119262d221922261e2d3c555a3c372d3636313a50563b +36243b583f343838293e2d39363c423d424935463d402f433d3c2f3d3a3c +2a383046403550264645493d3c4d32323e473b33444b4a56494b5859494b +3f3b4758495342414b4b5057535245394b40415d6c3a3f4743304c423c4b +4b3646524f505960717754525555564c59a45005171d14070d131f19171c +1f06050e1f160d0e0e0f141f150c130a0c0d0e111b201200a647d0362513 +08201f2825191d0f161d0c1012160f191c17191a14221011111f2d1e1c16 +19171a1815131312141212181b180000000000000000000002000000aa60 +03191511090a141a12151210101314131513111110100f11101416151516 +1615161717161514151617121919121c2212131618151313151513150f14 +130c15161216171214171612141214171918151317181716151516181714 +1214151516171a19181613101316171721261c1211101414151514131211 +12101012110f10121215181919161413121005121c0d0c19141513101418 +150d10101010101011120f101212110f0f100e0e0e0e0e0f11110c0c0c0c +0c0c0e0e0d0d130a090d0b0c0e060e280f0c02101c180c0b140e080d0b1a +230a09191110151013110b080c0d110c1723211f1a11161119150e1c281d +1a120b12046213443222120e151c1b16302c26250d2b1e11291a1711030b +080908080805040912172127230f08050906070a09070500010000000002 +020708020000184c4949330937264318171c2e2f2e2d2b2b2d302a31332e +2a2a2b29302a2626272425282e2d2b262121222734332d2e35332d2f352a +2c3030373c343a3e39373f4543423d3d4442443e43464a464b4545444b45 +3d474a4b464157474448494948403a3c3f414446444243473b444a48473a +302e3f333a49504a41643b3e4338394f55515d4a6f8c895c556a5f503f4e +615166536d6c5d5262545a5e505f5d61645551545f6a5c5f54606462575e +59754d736069717f7273876e78686974565b666e72737b695d88837a7b77 +7080648077757e8c73666c6a6a716c6a65707778637a7e6d70736f6c908a +7d7d797d9398908a8994a0969180898c8a8c77b14d1124221c1b201c1f20 +18131c12171f111124282118161c1e19121525201c423728240d38112252 +603c5553524a525f4e414c4e515a515149504e4c4f4d617b5e5751688579 +4e4f554f5056504f5556564f4b514f42220f150f160e0e15190d181b2514 +edb93b4f505052544b3e4a4c4b494a4c4e4d4b4a4a4a4c4c4c4b474c504f +4d4d4d4c4d4d4e4d4c4c4e4f4b484d4e4a4f564f494c4d4b494a4b494247 +4756513f4747494c4e4c4b4a49474a484a4e4e4b48464848484746464749 +4745474c4c46434541444748484847484847535c51444549434343434342 +4241454343454543424444454748474543414750414653413d5143413e3c +3e41403c41403f3e3e3f4040403f40413f3b3a3c39393939393939393a3a +3a3a3a3a3a3a38434d36333a3c373834323a32343337453f353337373538 +343a3d3432332f3733353e41373132312f2b2d2d22191818161318160f15 +1c1317144439122b29262725232225282c2e2124292c20382e2529252723 +1f371d232726241f1f24282a2f28251e1f1f21221813100b070607090906 +0605030608030401092a2a3329141d2f303d21352728272624242629232a +2d28242425232c262222211e1d202625231e1b1b1e212c2923242b292325 +281d1f23232a2f272d312c2a33393736313138363933383a3e3a3d373736 +3d37303a3a3b36314737363a3b3b3a322c2e313336383634363a30393e3c +3b2e242233272e3e453f36592f31372c2b4248444e3b5e7b784b44594e3f +2e3d504055425c5b4c415143494d3f4e4a4e51423e414d58474a3f4b4f4d +4249435f375d4a535b69595a6f56605255624449545c5e5f675547726d64 +65615c6c506c65636c7a61555b5959615c5a535b62634f666d5c5f625d5a +7e786d6d6a6e82877d77747f887e7c6b7477777b68a5430a1f1f1c191d19 +1a1b141420191b25191216181c19181c1a1b2223251d22452919220f3405 +07375534474039313d4c3b2e37393a433a3a32393a383b394a62453e384f +6c6035363c36373d37373b3c3c373239392d100005010903030a11040c0e +1400d79f213537393e41392c3638373536383a3938373737393939383135 +39383636363536363736353537383431363733383f383235363432333435 +303835443f2d3535373a3a38373635333636383c3c393634363636353434 +353733313338383231332f32353636363738353440493e31323630303030 +302f2f2e3230303232302f31313234353432302e343d2e33402e2a3e302e +2b292b2e2d292e2d2c2b2b2c2d2d2d2c2d2e2c2827292828282828282828 +292929292929292927343e27242b2d282925232b23252428363026242828 +2528242a2d2422231f2723262f32282222211f1b1c1c110706070c0a0f0d +050b0f070907342a011a18161715131215181c1e1114191c10281e141816 +18140e260c121616141213191f21272019100f0f13150f0e0b0703020101 +0100010100040803030004231f2519020f22233011251f201d1c1a1a1c1f +1920211c18181917201a1616151212151b1a18130f0f1215211f191a211f +191b1f14161a1a21261e24282321272d2b2a232328262721262a302c302a +2a29302a202a2b2c272238282b2f30302f271f212426292b2927262a1e27 +2e2c2d20161425171e2c3129204523282b1e1e31373139264a6766393247 +3c2d1c2b3e2e43304a493a2f3f31373b2d3c393d40312d30394434372c38 +3c3a2d342e4a2046333c44524344573e483a3d4a2c313c4446474f3d305b +564d4e4a435137534d4d58664d414745454a45413d464d4e374e53424548 +4542686256544d4f64695f5957626c625f4e575a595f4b8d37041c1a100a +0c0a1418110e12090d170c0a15181914151a171617161d16163a291c2304 +1b00002e370f2422231b222e1d101a1a1b241a1a121919171a182a43261f +19304d4116171d17181e181516171915131d211800000000010000040400 +00000400c288081a1917191911041115121011131514100f0f0f11111110 +0c131716141414131414151413131516120f141511161d16101314121011 +12120a110f1e1b0911111316171516151410131214181815121012121211 +10101113100e1015150f0d0f0b0e11121212131414131f281d1011150f0f +0f0f0f0e0e0d110f0f11110f0f111112141516141210161f101522100c20 +12100d0b0d100f0b0e0d0c0b0b0c0d0d0d0c0d0e0c0807090a0a0a0a0a0a +0c0c0d0d0d0d0d0d0f0d0b17210a070e100b0c08060e0608070b19130907 +0b0b0b0e0a10130a090a060d090912150b0508070602080a010000000303 +080600010600000024170006040000000000000105070000020500110700 +06030501001400020606040103070e121c150d030000080c080a08060401 +01000000000202090a030000001d1d241a020412131f0215242524211d1b +1c1e23262622212223211f1d22272822242a2a2c2d2c2a2c2f352e302f32 +383530323433373935373b39353736373a38363a40434a3f403b45464644 +4e453f344145474a4f4442363c374744484a454242403f40444848464a4f +43464340413f3c40413a445054485e864c414540465b606260586d6c6c59 +5452585b585e55495a5a6554575d5a4d5e4a4152535d6a5d545557535b67 +6b6c6365686f7a84536b6a6e6c84746d98657e6863645d76685e665e6b5e +6b867b6e7378917f536e6c6066695b5454605e575649667b676b80876f7d +73828581867771747d888e7e757173847f738c90978595a476a74014271d +1b231e1f2128231e1d1e0e581f18251d130c140a17180014281e16302f28 +1e114220198b99314b52584b404e46434c43474b534e474644414c4a4559 +4f4c424b50474849534c4b514b4f4d4a4e4a42464a411e0d140d110b1524 +26181e232518a8a838454d4548474749444749494b4e4e4c494848494c4c +4c4b494d4f4c49494a49494a4a494848494a4d4c4d504f4e535846494947 +47484945474c49615e444b4b4d4c4d4d4d4948484947474a4b4846474949 +49484748494b48484b4d4a46444444474a4a4946423f4341474c45404344 +434343424243434341403f41413f3f4046454445464644413a4a40393f3e +40424541404142414142444341404040414143414142403c3c3f3f3f3f3f +3e3e3e3d3b3b3b3c3c3c3c3a373e4a3435393c373639342e383b43423331 +32353a4650503c3e3534352f31352e2f383e37333331332c242629211816 +0b0c101211111315171764f60f353923292a2c2c2b292725372c2c2f2b2d +262d232f2b252c222e2a24252522242928251b1e23241e231f1415100c07 +0505060909060606040709030203060d090e0e102427362c2f3a1d1e1d1a +161415171c1f201c1b1c1d1b1b1b1e23221c1c222224252424262b2f2626 +25282e2b262827262a2c282a2e2c282a292a2e2c2a2e34373e3335303a3a +3836403731263337373a3f3432262c2739363a3c373434323132363a3a38 +3d42383b383535333034352e3845493d537b3e333732384e50534f475c5b +5a47413f474a474d443849495443464c493c4d393041404a574a41424541 +465256574e505259646e3d555458536b5b54804d665251544d66564c544c +5649567165585d627d6b425d5a4e55584a4343514f484739546652566c73 +5e6c6271736f746561646c787b6b605c5c6d685c757982708091689c360c +221a19221b191a231f1d1f24165f2619161117182314181a0f212719152d +1c171c14401400728e293c3e3d302839312e342b2d3139342f2e2f2c3935 +2e4036332932372e2f303a3332383236353236332d3238300e0107020702 +0c1f1f12141513028e8d1c29322c3133353730333535383b3b3936353536 +39393938333739363333343333343433323233343736373a39383d423033 +333131323331353a374f4c32373739383939363231343533333637343233 +35353534333435373232353736323030303338383734302d302e3439322d +30313030302f2f3030302f2e2c2e2e2c2c2d333231323333312e27372d26 +2c2b2d2f322e2d2e2f2e2e2f31302e2d2d2d2e2e302e2e2f2d29292c2c2c +2c2c2b2b2b2a2828272828282829262d392324282b262528231d272a3231 +2220212429353f3f2b2d2423241e20241d1e272d26222220211a1213160e +04050204080a08080808090954e40022261117181a1a19171513251a1a1d +191b141c121e1a141b111b1913161615191e201c131617160e1311070c0b +070301010001010001020005080402020208000000001619281f212d1516 +13100c0a0b0d121514100f10110f0f0e12171610111717191a19181a1f23 +1b1c1b1e24211c1e1e1d21231f2125231f21202122201c2026292e23231e +282a2b2b352c2419262a2a2d302523171d182e2b2f312c2927252425292d +2d2b2d322627262325232226251e283335273d67332a2c252b3d40403b33 +48474633302e3538353b322637374231343a372a3b271e2f2f3946393031 +312d333f43443b3d3d444f59263e3d413d55453e68354e3a393d364f4036 +3e364134415c5043484b64502843423841463831313c3a3130223e513d41 +545b445248575b575e4f4a4b4e575b4b413d3d4e493d565a635161734d86 +2c091f150c100a0b14201c1814160b571f141915181620131a19081a2516 +1028221f1f0d2900006b72041b23281b0e1c1411181114181e191312100d +19160f2218150b14191011121c15141a1417110e14131017221e00000000 +06030f1c17060a0a07007f7a0711170e0f0e0f110b0e1010101313110e0d +0b0c0f0f0f100e1214110e0e0f0e0e0f0f0e0d0d0e0f121112151413181d +0b0e0e0c0c0d0e0c0f141129260c12121615161614100f11120e0e11120f +0d0e1010100f0e0f10120d0d1012110d0b0b0b0e1212110e0a090f0d1318 +110c0f100f0f0f0e0e0f0f0f0b0a0b0d0d0b0b0c131211121313110e0717 +0d060c0b0d0f120e0d0e0f0e0e0f11100e0d0d0d0e0e100e0e0f0d09090c +0c0c0c0c0d0d0d0c0a0a0c0d0d0d0d0d0a0f1b05060a0d08070a0500090c +1413040203060d1923230f110a090a04060a0100090f0804060609020002 +070000000002060703010200000047d60011150001020404030100000f04 +040703050008000e0a040b010a0701030302070a0d0b080b0b0900040600 +050704020200000000000003030a0d0600000004000203010d0c1b0f141d +262727252324282d35302a25232324252221252e312a272824282c2d2a28 +26292c3031363c3934362f363e3f3a383d423737373c3e363949353d4637 +3a384748483f4b474c3e47444c4553434d4b48515d5353534a4a514e4b43 +40454c4d4b4b484b484949473f40473e414c645b60593d3a4f5049494651 +514e5765595f59656a68666d5d5e53505e6959655c555357515b4f54655c +555855465e65686967877883816985847c85799b736a767771726f625667 +5468846469597776797a786d79616371736d6670625e4e67685c6f5d636e +6f667f6b687a6f726a6c75757575697e867a7f8277817a8386989272826b +8fcd5b151d1e1d18212724231f221515179b311a201e180d091418141321 +1b26201b293120118c2c1b5482152c3a3135392d342f3536313930303537 +372f3b343e3e3b3c373f383a35323f3a393c30393a34393b34384342180b +12090c0c203c373d372e3e4e553d3f3d443a433d3439393f44464a4c4b48 +4948474748474543474a4a454141424344444442403f3f403f3f3f41423e +414e414343414143434242423b58553841424a474748453d3d4245414042 +454445484344434241424446414343403e42444344433f3c3c4043444340 +413e3a3c433e3d3b3c393b3a3d3e3f3d3d3f3e3a3a3c3d3a37383b3c3a37 +42403a3f3b333e3c3c36363b3b38383c3d3c3b393838393a3b39393b3a37 +383b39373838373736363836373737373736362d392f3730323738373638 +58514d41343133302a35403a424b363135353c3135303435312e302d2f2e +29282a1b0f0f0d0d0e1319191c27251b56ff282b2a54312d2b31393a342b +2b292c242b302a2b2a26262c24222f27252728252729231c18151c271b1d +1c17120c0704030406060905070704080b05030103080e0e0a1228482c32 +34381f20201e1c1d21262e29241f1d1d1e1f1e1d212a2b241f201c202425 +242222232226272c322f2a2c222a32332e2c31362b2b2b30322a2d3d2931 +3a2b2f2d3c3b3b313b393c3137343c3543333d3b38414f4545453c3c4340 +3d3532373e3f3e3e3b403d3d3d3b33343b333641584f544d302c41423939 +3742403d4654474d47535856545b4b4c403e4b574652494240443e483c42 +504740434031494f51535071626d6b536f6e666f60825a515d5f585c5d52 +46574256724f5444626164656359654d515f615b555f514d3f58594d604d +515c5a546a5956695d60585a63636565586e73676c6d626d656f6f847e5e +6e587fc152111d1f1e171b1f1919171f171b1ea2361a16151e1c19201916 +1e2c1a211c1618221e1289240842780f21281b1f281e231d23211c241b1b +2022251e2a232a2a2b2c23291f2423222d2620231e2929242a2d24283232 +0e02090002031a373033291d2c383b2022212c252e2a252a282c31333537 +36333433333435373533343737322e2e2f303131312f2d2c2c2d2c2c2c2e +2f2b2e3b2e30302e2e30302f2f2f284545282e2f37343435322d2c32302d +2c2f313031342f30302f2e2f30322a2c2c29292d2f2e2f2e2c29292d3031 +302d2e2b272b302d2a2a2928282a2a2b2c2a2a2c2b29292b2c2926272a2b +29262e2c262b27222a2b2825252a2a27272b2c2b2a28272728292a28282a +2926272a25262424232322222425252525252526251e2820261f21262726 +252747403c302320221f19242f29313a241f23232a1f24202325201e1e1d +1d1d1617170900000308090b1010121a170b44fb161a1743201c1a202829 +211a18181b131a1f191a1a16161c14121d16151718181b1e1a130e0b0e19 +0b0f0e0d09070300000000000100010302070a0603000003060200041b3c +2026262b171816141213171c241f1813111112131211151e1f1814151115 +191a18161617181c1d2228252020191e26272220252a1f1f1f24261c1f2f +1b232a1b1d1b2a2b2b242e2c2d2128252d2633232d2b2832423a3a3a3131 +38333228252a31322e2d2a2c2b2d2f2d25262b21222d42373c3720213435 +2a29242f2c2932403339333f4442404737382f2a3a43354138312f332d37 +2b2e3f342f302d1e363a3f3e3e5c4d58563e58574f584a6c443b47474245 +453b2f402c405c3a3f2f4d4c4f504e414c3439474b47414d3f3b2c454438 +49363b46453e55413e4f454840424d4d4e4b3a4d53474c4e434c464e5063 +5d3d4d3865ab4306151710050b121317151a0c0f169b301817181c17161c +1b151826181e19131e271f0c761101385f000310060a0e0109050b0c0711 +06060b0d0d041009111111120b11090c0b08150e0a0d060f0b030b100b11 +20230200040001041c3428291e13202b2e10100c140a110c06090a0c1313 +1618171415141213141513111419191410101112131313110f0e0e0f0c0c +0c0e0f0b0e1b0e10100e0e10100f0f0f082524070e0f19161615140c0e11 +110c0b0e100f10130e0f0f0e0d0e0f110b0d0d0a0a0e100f100f0c09090d +1011100d0e0d090d120f0c0c0b0a0a090a0b0c0a0c0e0d0b0b0d0e0b0a09 +0e0d0d0a13110b100c060f0f0d09090e0e0b0b0f0e0d0c0a090b0c0d0e0c +0c100f0c0d100a0a09090a0a09090b0b0d0d0d0d0d0c0b010c030a03050a +0b0a090b2b24201409060805000a150f17200c070b0b12070a06090b0604 +06040709050709000000010506080b0909110c0038ed080a08330e08080c +1615100607040901080d07080b07070d05030f06060709070b0c09020200 +010c00040504040402010001020000000104050c0f080300000004040004 +122e1218191b282324262020282c1f292b231e2225212e282322272c2e2d +29322e272d343029233438363e45403a40414f44393f393a4b4b5a62544b +50514f524948575952586c4c4b62604a4e6255644b55685a534144443840 +3f353f3e393f3c4c4f444b464c464343423e393c4a40434d595d56484c47 +4d585b6c606a706c736e67786b8385787c7671716e7f695b69525c53575b +51535e565e7679807f858781807b778a7d7d6f71626e766a5772775f4f68 +616c6b6a737a5e65717a725f6c5c626a6e6a7b8b848d7b716e6a695e625e +5457565457526272635d706a616d6a6d727f75876089847368827db19cb0 +87997a94999c82d03f0f1b22101923272a29241f1716161a13121e1c1518 +11131515171c21201a2125201f1d57301833470f221e241f1b1d21201f21 +21201e201f1e22272723281f1d20222930271f1b1a1f2b2e251c231a1d21 +2229322d0b0d040b170d183655373c443a5b8b2d3534352c2d2f26262a30 +33353b413e38393835322f2e2e2e2e2e2d2d2e2f2f2f302f2d2d2f30302f +2e2b2a2e31312e2d34303136393736383d463e3335343136332e2c383326 +2b2c373a37333334383b36353a3438323b3c3d413638343c333436383939 +3b3c3a363735363636353634353334333534363635333234333032353533 +32333432323334323830362e353334322f2c2e30302d2e2f313232312f2e +2e2d2d2d2d2e2f302e2e3133322f2c2a2b34302a302c2934312f2f30302d +2d2f32332f32454b3d2f2b2c323a39323034384142363035352e2e2d2d2b +2b2929272925282b281b15100d07223c352f393b3a5a377c4b1d254f3f29 +2425364330262525262525232221212222201f2023262122232322201e1d +1f21201d1c1a17100d0704050403050a0503030506070706010404050a0a +090c252c2e332e2e211c1d1f191921251620221a15191c1a27211c1b2025 +2726222b2720262d292319282c2a3239342e323341362b312b2c3d3d4c54 +463e434442453c3b4a4c454b5c3d3a534f3b3d5144533a44574942313636 +2a32312731302b312e3e41363e393f39363536312f333e3537414b4f4638 +3d373d484a5b4f595f5b615c556659716f6266605b5b596a5446543d473e +42463c3e49414760626a696f716867625e716464565849555d513e595e46 +364f4856595a61684a515d645c4958484e585c586979727b695f5d59584d +514d4346474546415061514d605a515d5a5d626f65774f787362576f6a9e +899d7286678186896ec13911222b171b1d1b1917191a1a1c191d16131b1b +181d181816161c21221f1920201b1e1d552a102940091a13171413171918 +161515141113121214191916181722251b191a161c1d1713151b201e231a +20231b1c211f040a000208000f2d4927252d29486f10181a241d181c1b1e +1a1f2022262a271e2221201f20212323211e1d1d1e1f1f1f201f1d1d1f20 +201f1f1c1b1f22221f1e252122272a282727282f292024232025221d1d29 +271f2522232123211f202225202128222620252322261d1f1e261e1f2123 +24242526242123242524242524242323222323242525211f202221202225 +25232325242222232220261e241d222221211e1b1e20201d1e1f21222422 +201f1f1e1c1c1c1d1e1f1b1d1e201f1c191718231f1b211f1c2722201f21 +201d1d1f22231f2233392b1d1a1b212928211f23273030241e23231c1d1e +1c1c1a1a18171715161a160a020306041f382f252d2e2d4a266a390d133f +2f19141526331e1613151617171716151314141211121518131415171514 +11111114120f0f100c060501000000000005010201030607060500020001 +050200031b23252a2223171213150f0f171b0d1719110c1013101d171211 +161b1d1c18211d161c231f170f1c201e262d2820272634291e241e1f3030 +3f47392e333432352c2b3a3c353a4c2a28403d282b3f3241283245373021 +292b1f27281e28252226233334292e282e2826282a2825242e2121293135 +2d212a272d3838493b454b474b463f50435b5a4d514b464646554131412a +342b2f33292b362c354b5055545a5c52534c4a5d505042443541493d2a45 +4a322239343f414149503239454d453240303640444053635c65554b4945 +44393d392f323230322d3c4d3d3649413a4643464b584c5d335a55443951 +4c7e6b7d55664761666b55aa2300101a070d0f0f111315140f1010160f0d +1616111611111110151a1c1a141b1c171913461a051d2d00030004000001 +060505070908080a0906090c0c0608040b0e09090d0609070403080d0d08 +0900050b080c17160001000005000a243b17171f1737610008091008070b +07090a0d1111151a170f12110f0e0d0e0f0f100e0d0d0e0f0f0f100f0d0d +0f10100f0c07060a0d0d0a09100c0d1215131213171f180f100f0c110e09 +081211050d090b0b0b0907080b0e0909100a0e080e0d0f13090b0911090a +0c0e0f0f10110f0c0a0a0b0c0c0c0e0d0d0c0a0a0b0a0b0b0907080a0907 +090c0c0a0c0b0d090b0c0c0a100810091110100f0a070709090605060809 +0a0b090a0a0b0a0c0c0d0e0f0a0b0d0f0e0b080607110d080e0c09140b09 +080a090606080b0c080b1d23150706070d15140d0b0f131c1c100a0f0f08 +090908070807080709080a100c0200000000162d23191d1e1c3a165c2b00 +0732220a0706192412070706090a0a090809080b0b0908090c0d0a090c0b +0c080805040405020607060403010104030406090200020608090b0a0203 +0000020000001114141912113127283033332d24272623202024282b2a28 +26272b3033343d423e383f42382f3b433c3339444645634d453e40433b45 +4c454a4c403f4b524643474d51524d4549414e6868564b4950584d4f5e58 +484142474548423a3d3d3e3e3e48473f485147534d494a4c4d4b4a49475b +625d675c615f726c706759546568776b635d4a476c636d6d6c736967625c +6e5d7071736d877579828b8d858d747163657575665c645c616d68746b66 +6f6c77846f6a6165695f6772696a706b6f77776e6a707d7778836e775c5c +5557605c575a5c59595c5d585a66656a746662655f5b56677476798d6e77 +736f5879766b6f6a6877797a57cb3d211e14232d3b3730321f29262e1a1d +18151c1a151a15161616191d1f1e1c1c1d1e1e183e23152c2e2417352b2c +2d27241c15111216140f0f151611111618190f0c151619191a14171e2623 +1b1a1d1a1b1c1c24291f070b040a161623354542454639b7bc202a231f1c +25291b1410151716181a191619171512100d0e0e141617191b1d1c1b1b1b +1b1d1f201f1e211e1e2123222121252224282a2826273039302627221e22 +21242326211d211a24242021232527252a24261f241f292b2b2b242a232a +25272224262527282725242424232120202021232628282826252a292727 +242322212724212123222326242427242421252422232322232524212425 +26262625252329282625252525262524222124292e312e122235211d2719 +232424232323242422282520262a28262926292f302b282b2930332c282c +2d29201f1f1e1e1e1d1d1f1d1e221f150e0c0b0318302f2b3230365e4a27 +1920221a1e1b231e1b1f1c221c1b1c1b19191817191b1b1a19191b1c1919 +1a1a1a191716191a1a171516130e0404080b09040303010102010304080a +020505050a07070c202b3e444d4e2a2021292c2c261d1e1d1a17171b1f22 +23211f2024292c2d363b3731383b3127313730272d383a39553f38313336 +2e383f383d3f33323e4539363a40444540383a303d5757453a383f473c3e +4d4737313439373a342c2f2f3030303a39313b443743403b3d3f43413f3e +3b4f544d554c5250615b5f56484354576559514b3832564a5454535a5351 +4c465847595a5e58705e636c75776c745b584a4c5a5a4b434b4348544f5b +524d56535e6b5651484f574f556055565a555961635a565e6b6766715c65 +4a4a44464f4b46494b484a4d4c4749555459645652554f4b46576466687c +5d66625e476862575b575564666743bb3520211824262c23181c10222631 +1b1e19161d1b161b161717171a1e201f1d1d1c1e1e183c211129281f102e +242728241e160f0b0b0d0b06060c0b06070c0e161a19130c060b1c1d1918 +15141b21221f242318171710020b01010404182d39322f3129aaa90a1713 +1816191f1712080809080707050205040404030505050a090a0c0e100f0e +0e0e0e101213121115121215171615151916181c1e1c1a191c221c141714 +10141316161a18181e1514131316181818161b171b171c141a1a18181218 +131a181a151719181718171515151514141313131416191b1b1c1a191918 +1717171617161c1919191817181b141417141714171614151716171a1916 +17191919191a18171b1a1817141414151414121112171c1f1e0212271514 +1e101718181717171717151b1813161a18161c1a1b22231e1b1e1c23231c +181c1d19131313121212111112101115120801010600162c27222623264e +3817080f110b100e16100d110b140b0d0e0e0f0f0e0d0f0e0e0d0c0c0e0f +0c0c0d0d0d0c0a090b0c0c0a0b0d0b060000040704000000000100010104 +080a00030101050200051824373c42432016171f22221c131514110e0e12 +1619191715161a1f22232c312d272e31271c252b241b212c2c2b48322821 +23261e282f282d2f23222e3529262a3034353028271e2b45453328262d35 +2a2c3b352521272e2c2f2b2326262727252f2c242b332733303034373935 +2d2823353a343d353f3d4f494b42342f40434f433b35221d3f343e3e3f46 +3e3c3731433247484b455e4c4e5760625860474434364545362d372f3440 +3b473e39423f4a57423d343a3f363d483d3e433e424a4b423e46534e525d +4851363630323b373235373435383833354140454d3f3b3e38342f404b4d +4e62434a48422b4c473c40393746484928a21e0c10071213150a00050012 +1a281316110e15130e130e0f0f0f1216181717171716160e3014051a180c +001b111315110e0803000306060101070500000304070907060200020e0c +0b0c0e0d0f110e090f110c0f130b00030000000012222922212019979a00 +080306060d130b0500000000000000000000000000000000010102040608 +0706060606080a0b0a0809040407090807070b080a0e100e0c0c131a130a +0a0703070609060a07050b020401000204050503080407020700070a0a0a +040a040b080a050709080809080500000001010203030405080808060403 +07080707060505040a070606060506090404070407040a09070809060708 +070404030606060807070e0d0d0c0c0c0c0b0a070504060b10131100051a +07050f010708080707070707050b0803070b09070c0a0e12130e0b0e0c13 +140d090d0e0a03030302040405050907090d0a00000000000a201a131612 +163e2a0a00070a0407050d070408030b0304050506060504060608050604 +080706040705070404010000010102060804000005080803020200000101 +04060a0c03040000020000000b1225293031261e212e36372f2229282a2b +2720202526282a2b2c2d3033293533292a364654474e4841474d4b484c4b +4e50564e3d46403d42463f3e454a4b3f454c464b4e404945484c4c4f4f48 +494f53515d6150544f4e54504f524c4c3d3e4d534c403b46424b3f475047 +454445575364645b726761576144514a5755555c6b5854505c5966697e76 +5e60686977747d6b7b7e7a696a6067685c4c4a5e525f575d635d625d5b5c +79887b7c6b7684716f7e69656a5f5d5e696a6c787c68637b706d6f738178 +727b63735b6a62695c61545e64595c5a64645a5b636d756a5d656b6d6973 +907f786d74a56a647775666f7698745e8d867bb64c2023222e70aed1d6ae +5e261438181b17151815121515181817171a1c1b1f1b1922211b251f1b58 +4124272d515a5c5246392b1d181a1b1614171812101110150c070f0f1019 +140c0e1419140d1014141311131a1e130c0f0a0c131c272a2c2e34372a9f +86111f191914161a11110d0e0c0d0a09090d0e0c0c0c0a08080907090b0e +1011100e0e0e10131414131113111214151415171413141819161415171c +191414131215141f1f1c171d221016120e13191b17111a1215141a0f1519 +181315201115131311141411101013141d1d1b1a1918181917181a1c1d1d +1d1d1c1e1c19191c1913191614151616191c1619181b1618161714181b1b +1b1b19161d1e1d1c1b1819161f1e1c1a1a1919191f19161213182025651b +2a5c3d1213141316171414181916141c191110111318140e0c10120f0e0f +0b0e100d0d0e0f0e0f0d0e0e0f0f0f0f120f1013110a060608030c242a2c +312d414d361c291a130f111015121012101513121210100f0f0f11121211 +100f0f100f0f0f0f0f0f0f111112110e0f100f0c0d080404050b0b080605 +080506040609060805050906080e303836374a551f171a272d2e2619201f +21221e17171c1e2022232425282b212d2b21222e3e4c3d423c353b413f3c +3e3d414349413039322f34383130373c3d31373e383d40333935383c3c3f +3f38393f43414d5140444142484442453f3f3031414740342f3b353e3239 +433a3b3a3c4c4758554c625652475235423b4644444b5a47433f4a445053 +6860484a5253625f685666696554554b5253453533473c493e444a444944 +42466372656655606e5b5968534f54494b4c5556566266524d655a595b61 +6f6660695161495851584b50434d554a4d4b5353494a525c655a4d555b5d +5963806f665b629458536664525b6284604a79756aa84013151419578eb1 +b7934c1b1137191c18161916131616191918181b1d1c201c1a23211b2520 +19563e2122284c55574d3f3123150f0f100b090c0b05030607110f0a0c06 +010c110d0b0d0b090d12111216120a0a0a03070e0705040a1c2324262a2e +2298800b1c171b181a2019170d0a08060300000203030303030303020000 +00030506050303030508090908060907080a0b0a0b0d0a090a0e0f0c0a08 +080d0a070a090508071111100d151c0d131111161c1e18121d151a191f14 +16181510121e121616161417171411111111181614131110101111121416 +17181818121414111316130d16131112131316190f1210130e100d0e0d12 +151515151310141211100f0e0d0c12110f0d0b0a0a0a120f0905060b1217 +570e1d52350a0b0d0c0e0f0c0c10110e0a120f070607090f0d08050a0c09 +06070306080503040506090a0a0a0b0b0b0b0e0b0b0e0c0501010500071d +2122251f313d250b180b040006050a050305010804050405050606060607 +070605040405040404040404040404050403040607040803000000060603 +02040404020204070204010104010107282f2d2c3f48150d101d24251d10 +17161819150e0e1313151718191a1d201622201617233341313630292f35 +312e31303133393120292522272b24232a2f30242a312b3033232a25282c +2c2f2f28292f33313d41303534363c38393c36362728353b32261f29242d +222e3a32312e2b3831403e354b423f373f222f283432303746332f2b362f +393c514933353d3e4d4a55435356524142383f403323213527342a303630 +35302e314e5d5051404b594644533e3a3f3433343d3e3f4b4f3b364e4341 +4349574e4c553d4d35443d44373c2f39403538363f3f35363e484e43363e +4446424c67564e434a7a40394c4a39424969452f5e594c8d300b120b0639 +657e805c1e0002321316121013100d1010131312121517161b16141b1911 +19120c472d0e0f143841443a2f24180a08090c0705080500000000080400 +030000060a0504070805050708060b0a050a0b04040a0200010616191919 +1e1f158872000d080d090c120c0b03010000000000000000000000000000 +000000000000000000000002030302000000000001000103000000040502 +000001060300000000000008060401080e0002000003090b06000a020605 +0b0004060601030f02060505030606030101020005040203040305060506 +0808070505050608070405080500070402030404070a0002030603050405 +0306090707070300050203020102010009080705060505030a0500000002 +090e4e0514482a000003060b0c09090d0e0b08100d050405070a03000000 +000000000000000000000000000000000000000005020508060000000000 +01151818191224301b031106010000000400000000020000010101010101 +020103000100000000000000000000000000000000040402050000000003 +0300000003020303050803050000010000001b1e1c1a2d35312f353b3c3e +403c363d4341372f3036373c414241404346514d3f3940433a343a3f3e3d +4446403c45544f404648424944464e55534f4e4f4c43464a4648493f4548 +4a453f43443b424a4c494d4a42424c41413436413330342f3b393e4c4e5e +505e4e545d504f4b40565d5e5759675a5a57624c5c5a68615f5b5a596162 +6b5a6c626d6d595b60515c585a4c5a5c5a4c434956626e746e675b615262 +68607069686767645158637c8878666c63677d7466676c6e636b6b656873 +6a697e8081776f746979707e767a7b81737b74676e56606a5d575d616a6d +5f6c707473657b666365617f5e5f5c5c64786680636d6d663edb4c182834 +acf8f9f0e6f9f9922d14171715141413111215181a18161718181d1a1721 +202319211a8f331f2724302c352d292a261c161511120f0c161e17080d0d +0704090a0f110f0807090e0d08070d0b07070b101511090704090d0f1610 +0d0b0a0d16221002130d0f080408060c100b080a0c08090f0c0c0e0e0e0e +0d0d0c0c0e0e100f0e0c0e0e0f0f100e0e0c0d0c0e0f100e1113110f1010 +100e0e0d0a0d0e0d0e0e0e0e0d171918151c2311110b0a0e1416110b1007 +0e111b0c0a0c0f0912220d0b09060e11110c08080b0d1a1b191716161717 +1713141115161b1e101514101418180d0f0c0e0f12121619121613180f12 +0b0d0f12171414100f0f1b1a171412100f0e0f100f0f0f0f111016130f0d +0c0c0f101a08092127150a0c080c0c070a0e100b0c100d0a10100d0b0903 +030506040305050505060504060605040505060607070706060807030103 +08040818212528247c822c170f0e1815140c0a0a10130d0a0c0c0c0a0a0a +0a0a0a0b0b0c0b0a09090b0b0a0a0a0b0c0e0d0d0c0a0a0a0a0a07080704 +070907060806070809080808060705060906091442373d3a36452a282e34 +333537332d343a382e26272d2f34393a39383b3e49453731383b322a2e33 +3231383a343037464233393b353c36384047454140413e35383c383a3b31 +35383a352f33342b323a3c393d3a3234403535282934262327222f2d3240 +42534351414850434541374e5252484a564b4a47533d4d4b57504e4a4948 +50515948574c575743454a3c47434537454745372e34414d595d5750444b +3c494f4757535251514e3b424d66726250564d51675f5255585a4d55554f +525d54536a6c6f655d6257675e6c65696a70626a65585f474f594c464c50 +5a5d4f5c606463556b5651534f6d4c4d4a4a4f64526c4f59595530cf3b05 +11188ad3d1c8c3dce5842310171816151514121316191b19171819191e1b +18221f231921188d301c24212b272e2621221e130b0a0607040109110a00 +040504010100010607030001040504040806080601000000050703040000 +0d090402070b0f1e12081b15151012181316110b07090905060a07070606 +0505040302020304050503020304040505040303020303060505060a0606 +0507050503040104050607070505020c0c0b0b131a0d131211171d1f1a14 +1910171c24151313130b14261311110e161919140e0e0f0f1b1917151313 +1414141311111317191c0c11110d1118150d0f0e0e111214161910140f16 +0b0f080a0c12141411100f0d15120e0b0907060506050404040403050d0c +0804030304050f00001820110607040b0a06060d0c07080c09060a0c0707 +060300020301000200000001000000020506070708080808080707090804 +010204000010181a1b166e731d0800000a090a0400000508020001010000 +000202020002010301010000010200010002020302010000000202020203 +0200000200000101020303040404020301020401020b392c322d2936201e +242a2a2c2e2a242b312f251d1e2424292e2f2e2d30333e3a2c262d302720 +222726252c2e26222a393223292b252c292b333a3834333431282b2f2b2d +2e24282b2d282226271e252d2f2c302d25273429291c202b1d1a1e192321 +243232413240313a473a3b3526393c3a313542383a37402a3a38453e3c36 +35343c3d4534423540402e303527322e3224323432241b212e3a464b453e +323627353b33433e3d3c3c39262d38515d4d3b41383c524a3a3d4042363e +3e383b463d3c5254574d494e43534a585155565c4e5650434a323b453832 +383c43463845494d4c3e523d3b3d3957363534323a4c3a533740413b13b7 +31010b0a6ea99e8d819aa8550a040f12100f0f0e0c0d1013151311121313 +1916131c1a1b0f150c80210b130e18141c161415130a050402030000030b +040000020000000000040400000003020100050303020203070604050000 +0000080100000000051305000c060903050b090d0b030204040001060404 +040406060504000001020303010001020203030201000000000000000003 +0000000000000000000000000000000000060403020a1102050201060c0e +09030800060b130402030500071805030200070a0a05000001020d0c0b09 +0a0a0d0d0d0b0a0707090c0f03080a040a0e0e03070306060a090e0f0407 +040a02060103050a0b0a0804030009070502000000000000000002020203 +0804000000000000090000111808000101090b04070b0d06090b0a050c0b +090601000000000000000000000000000000000000000000000002010204 +030000000300000d1314130d656c180500000a0908010000030600000000 +000000000000000000000000000000000000000000010001000000000000 +0000000000000000000000000303050503020000000000022a1a201a1621 +2d2b2d2c272a2f2e252928211f272e30292f353737373a3d393731333f41 +38333637312f363a3a3d4152493f4743332b3f404040403e3f443d454548 +4f483a37393f4643383637323f4e4449483e484142393d3134413a3c3c3c +49454c56443d3d4e4239393439343f455b554c525051474c4c494e514e42 +53544f59515054596251596558565c4d625e5c59615c5d54565a54515b68 +65556b6b5c6b65536769616b57615b5a65626c675a656d6376826e68657d +6f6c697b7e72766e8a837979635f606163625b57575c5d6e6a77916e5563 +5b5b615a5d65626d6161684c5b5a6d7974695c6f5d5b656e7d7f747eba5d +7cfc512b2eb1ffa5747d80bcfcffaa2a1a1515151415151314181a171516 +1615141713171623131e1a8549272d20282f3e37333532261a121412121e +323b2c1512090d100a0d100a0d100e0b0a0b0c0a0d0803070e0c0e110601 +020d110b0d07111505031a06000805000400000000060a0605080805050a +080b0c0d0f100f0f100d0c0b0c0b0b090c0a0b090a090a090c0a0d0f100e +11131513120f0e0e100f0d0b0d0d0b0b0b08090d0d110f11190c08060608 +0b0b08030500060c150504050b060c1c070605040a0d0d08050507080d0c +0a09090a0b0c0d0b0a080a0c1114040909070b1110060705080a0c0a0c0e +0b0f0c11080b0306080b0e0a0907070712120f0d0d0b0b0b0809090a0a0b +0c0b07060609090807070b140705160e0301020808020308090305070404 +0d0b070306050708060405070b08080a0906070903030303030303030302 +0203030101030a05080e121311101a3a0a0f0a140e070a0b0a0909070b0b +0b09090606070708040708090a0908070a0a0909090a0b0c0d0c0b090805 +050504070d0907070e150d0a0707080a0d0d0506050609060c1b45b6668e +c77b242224231e2126251c201f18161e25271f252b2d2d2d30332f2d2729 +35372e292a2b25232a2e2e3133443b313935251d31323232323031362f37 +373a413a2c292b3138352a2829243140363b3a303a33363033272a373032 +32323f3b434d3b353243362d2c2a2f2b363d504a40454041373f3f3c3e41 +3e3344453e48403f43474d3c44504341473b504c4a474f4a4b424347413e +48535040565647544e3c51534b56424c4645504d57524550584e616d5a54 +51695956506265596058766f6565514d4e4f52514a46464b4e5f5b68825f +44524a4a50494d55525d5151583c4b4a5c6863584a5d4b49535c686b5f6a +a54b70ef3e131291ed7c4a535b9ee4f09b20181616161516161415191b18 +161717161619151a172414201a8547252b1f252c382f2b2d291d0f070907 +071327301f07070001040001040000020201010603010402030705000002 +0406030a030004000107010010000414150c0a080f150d0d090301040704 +040602020100000000000405020302030101020201010001000102020307 +0606070b0b0b0807040606070907090c0a08060301050408060810070909 +07090c0e0b090b02090f160807080b030c1c080708070d10100b06060809 +0d0c090808090a0b0c0c0909090d1013030808060a120f070707080c0c0c +0c0f0b0f0910040a0205070c0d0b080808070f0d0a080503030300000000 +000102020305050505040202030c0200110a000003090803020908020406 +0303090a0302050505070403030607040406050201050406060605050505 +050404050503020306000006080806020c2c000300080100010604030000 +010100000000000101020000000102010000020201010102030402010000 +00000000000206020000070c0300000000050709010201020401051239a9 +597fb66b1b191b1a15181d1c1317160f0d151c1e15191f21212124272321 +1b1d292b221d1e1f19171e22222526372e242c2818102425252525232429 +222a2a2d342d1f1c20262d2a1f1d1e1926352b302f252f282a21271b202d +26282828332f343e2a222031261f2320251c25283a342a323031272e2e2b +2e312e2031322c362e2d313338272f3b2e2c32253c3836333b36372e3236 +302d37423f2d434334423c2a3c3e36412d3731303b38423d303b43394c58 +423c3951423f3a4c4f4349415e574d4d3d393a3b3e3d36323237394a4653 +6d4a303e36363c35363e3b463a3a4125323348544f44364737333f465353 +4a5290355ade3709006bbc481a232662a6b672050c1111111011110f1014 +16131112121113141013111c0c1510793a161c0d141b28221e2220140901 +0503030f232c190405000104000104000002040002030402070605090a04 +03090502000502000000020700000e000008080000000308040605000001 +030002050405070707070806060301010101000001000000000000000100 +0205050406090a0907050304050506040608050302000002000301030b01 +0100000104050200010000060e0000000300041400000000040707020000 +000105040403040508090a07050404070b0e00040602080d0d0205020607 +0a070a0a0307040b01060001030709050300000008070604020001010000 +0001010203030001010202010000010a00000e0700000004060000040600 +020201000806020003030605050104040803050506010104000000000000 +02020201030404020405070100040606020009290003000c080002030403 +010002020403030202030302000000000000000000000000000001020607 +060502010000000000000000000000000000000207080001000000000009 +2996466aa2542c2727292a2f30282a29221f2937362b2e31343535353637 +333b3c38332e3340393934333838383e44493b393c353a42474b4640403d +3d433d4844434e46363a3a393c3930323d433b48393f3b3041352d34413e +3c41444d47423f39455652496347394041373134493c5858525347575055 +424943504d4a4a52525f57575268675d5e675a5467696b6a6468685b584f +50524a4b4f546261646461685845565d5368495756536a665e6c6a626c68 +6f7364676573737a73757869766d776c5f696e63685e66615b566664656a +5e6d83634b55515a655a53516a706268746067766d6f7a625c7671676a68 +636cb0d57b696ac9401264ff9c677c88738b99ffff572014141512151711 +131718171616151311171212101e14191a42673b32132537373431313331 +2923190a0d2b3f351d0d0a04090d0a0c0b04060a0b070200010501000000 +0c0a080c00000009110b0b090b1003040605000000000000000000010504 +03040301010205080b0d101214120c070805080709060706080507050909 +0a080c0e120f11101312120c0c0b0e0c0903060b080708040506040b0806 +0d060302050606050301050104050d030406090608100404060702050505 +030507080302010102020404020203040505060600030301030707000403 +040707030103030607080505030403040603030405040706050406060707 +070707080807070604020203030406060c04030b0f04010d010404010103 +040102070502050103060102050502010305050404050604050603020202 +02010101020202020201010307060606090806060e08070a0e08060d0107 +040504030707060606050503050504040506080707050706060506060809 +0d0c0b09070404050d09060e1c2c363c281f1309070a1012060605060805 +0e203b6a67738f7c231e1e202126271f21201916202e2d2324272a2b2b2b +2c2d2931322e292429362d2d28272c2c2c32363b2d2b2e272c34393d3832 +322f2f352f3a36354038282c2c2b2e2b22242f352d3a2b312d223329232b +373432373a433d3835303c4d4941583c2e34372d272b40344d4d45463747 +4348353c33403d3a3b43414e46464157554849524542555759585256564a +473e3d3f37383c414d4c4f4f4c53412e40483e533442413e55514957554d +57535a5e5053515f5d645a5c5f50605761584b555c51564c55504a455553 +565b4f5e74543a444049544943415a605258645057665c5e69514a645f55 +58564e579bc066575ebc2e0047ea79445664516f81f4f7461a1515161316 +1812141819181717161413191414111f151a1a42673930112335312e2b2a +2a28201a10010422362c1204020000050104050000020606030102040000 +0206070100030308030807000401000100030000080c09080a0a0e0f070b +060302050503030405030200000000000101000000010000000000000000 +0003010203080909080a0a0c0906030505060803060b0908070304020106 +03000501020302010102020206000100080003050400000b000103060104 +040200020405020301010102020400020203040405050003030103070500 +040304070705030302050307010402030204050302050605060504030202 +030301010102020101020404040303030202060000070b00000c02050502 +000403000106040101000005000003030000000000000000000000010304 +040404030303040403030302020202020000010000000400000105020007 +000602030000010100000000000100000000000202030101010200010002 +020304020102010000000802000613202b311b1106000002080c00020102 +030007172e5b56637d6a1a151517181d1e161817100d17252418181b1e1f +1f1f20211d2526221d181d2a21211c1b20202026292e201e211a1f272c30 +2b2525222228222d2928332b1b1f23222522191b262c2431222824192a1d +171c2b28282d3039332c29212d3c382e44281c262b211b1c2f1f39373235 +28383337242b23302d2a28302f3c34342f434133343d302c3f4145443e42 +4236332a2c2e26272b303c3b3c3c39402f1c2b33293e1f2d2c29403c3442 +4038423e4549383b3947464d4446493a49404a40333d483d4238413c3631 +413f41463a495f3f26302c3540352c2a43493b414d393e4f484c573f3650 +4b414442394286ab514148a9220025b93f0c2f422b3f45b7c8280e101011 +0e11130d0f1314131212110f10160f0f0c190f1212385b2c230416282522 +1f20211f19130b00001d31270e0000000103020205000000030200000002 +000202060b06020602030004050000000006000100000000000001000000 +000300000000000000030507070909090909050100000001010000000000 +00000103020204080a09090a0b0c0a060405060606010409040303000000 +000200000200000000000000000000000000040000000000000700000001 +000000000000000000000000000003040102000102020101000303010307 +060004030407070402010000000300020001000203010000010002010201 +0101020203030304040303030401010101010101060000060a00000a0000 +000000000000000100000000000100030606030202040403030404030305 +010001010100020203030505050406070603000000000000020000040a06 +040b00040304010003030404040404040404000000000200010001000000 +00000203090a090905000000040000000410191f0b0400000000060c0001 +00000000010e1e46424c67542924252a2f37372d34312d2f373c34283335 +3537393b3b3a3232323b443d312e3337383b3e3732373542434b49404949 +434b4740413d3a41474846464946414038383e413d3f4749535448443b34 +3b323a44494d463d42453d3d3a4247413a2e78474b5b5c564346544d5d5a +51534b514f5848594f555452615f5f677f7b54547565535b5f60685c565c +545a5d59594b4d4c475c6d6a64506055525451545a554f675c6e68596065 +6d7881666873766568686b606f69685e6b6b6d7565665d64695c60585e61 +59585c5d5f5f5e62635a6b746f747c78716479756c72706c6b7473776555 +8679646c685d6d65bd72655259c83523bdf468777e73637b64a6ffb32816 +14151114160d121516151617151111141214101516161b214a695d6a5d62 +545650443d3a36312c1819333e2b160d0a0d0000000000090f0000060900 +0000010a00000207040300020000060908080f0e04161010001509000000 +000200000007060100000000000003080a1012110c070707090808060606 +0908080608090806090d12100f0e0e10110c0a0a0b080600030a07070a04 +0403010603010a0405070a0d0d0c07050a060d090e070a0b090f0b0f070a +080c06080807080a0b090604040407050706030204050504040303030303 +030305030504040605020102040408040804070704040502050505030201 +010102030304070707070606060305020000010102030407090301080b01 +0303030204020404040908050503040b0506070605050706060606060807 +090604040404040405050505050505050502010302010505030406010e01 +010203000302000105020903030404030301020103020403060505020503 +04020503050607070809070304070a060b253d433c3a3b3426160c0a0f13 +0808060708040e23343d3d3741451f1a1b20252d2d232a2723252f342c20 +2929292b2d2f2f2e2626262f38312522272b2c2f322b262b2734353d3b32 +3b3b353d3932332f2c33393a38383b3833322b2b313430323a3c46473b37 +2e272e26303b3f433c33383b333330393e3831266d3c404f504a373a4842 +504e44463e44424b3b4c42484442514f4f576f6b4343635341494d4e564b +454b43494c48483c3c3b364b5c59513d4d423f413c3f45403a554a5c5647 +4e535b666f54566164535454554a56504f455252545f4f504950574b4f47 +4d5048474d4e50504f53544b5a635e636b67615469655c62605c5b646266 +54447568525a564b5b53a95e51414ebd240ea7dd5261665c4d644f90fa9b +201614151114160d121516151617151113191416121819191c224c695d6a +5d6052524c4036332f2a2511112b36230e0a0d140a0407050310190c0813 +19100b0c0d151007090903050813060201000303000203160f120a2d2615 +0f111d21110b070a0c090406090b06040100000000000103010303040202 +0002030402020205020203090c0c090a080c0b08040605040601030a0707 +0a0606050308040006000403020101020201060103000200050600010004 +000200040000000000000101020303030304030500010001010000000202 +020202020102040303050402010200000200020003030002010101040402 +020303030201010202020202010101010706040201010001000305000006 +090002030202010201010106050200000008010203020000010000000000 +000100000000000000000000000000000000000000010100040402030200 +0a0000020100050601030500040000000001010000000101000202040101 +010200010102010202000104020000020200021b31362f2b2a2316080000 +070e0303010203000719242c2b252c31151011161b232319201d191b2429 +21151d1b1b1d1f212120181818212a2317141b1f2023261f1a1f1c292a32 +2e252e2e28302c2526221f262c2d2b2b2e2b26252222282b272931333d3e +322e251e251a242c333730272e312727242a2f27201359282e41443e2b2c +382e3d3831352e34323b2b3c32383432413f3f475f5b312f4f3d2b333738 +423731372f35383436292c2b263b4c49402c3c312e30292c322d253f3446 +4031383d4550593e404b4e3d3c3c3e33403a392f3c3c3e48383931384337 +3b33393c343338393b3b3a3e3f36464f4a4f57534a3d524e454b4945424d +4e52403061543c444035453d914639272e9f12007ea9162f4c4a36421a57 +d07f151412130f12140b101314131415130f101511110d111210141a415f +535e5154464741372e2b29241f0b0e2833200b05060c0200000000081002 +00090e050001030d0600020400000009000000000000030601140b0d001d +140200010b0f040000000200000000030103020404050506050201020303 +020100010303020102040403050a0e0d0b0b0a0d0d090607070504000108 +050508030100000300000300000000010101000003000200020002030000 +000200000001000000000000000000000000020202030000000000000000 +000000000000000002010103020000000000020004010404010302000000 +000000000202020202030606060605050502060503010101010201040600 +00070a000000000000000000000000000000000300030403040405040404 +040404050704010001010101040404040404060606050202000000000000 +000009000204060204050002050108020203050606050502020001000302 +020002000100020002030607080a060000000000000f23261e181a130900 +0000040b000000000000010f1418170f17192c292e2d2e353831342f2c2e +2e2c2d302f2e2e343d4445453f3b35373c3834393b3e4043443c39415758 +453d3e4b5a494b524a414343455147414c544b4a483946434443424a5353 +473f413a373f4040353a364549404743393a34474c424a4a443d645a4c61 +534553616352464f51405057475448464a4b525b664c605944595b676368 +645b5c4f58615253555a5b494851494d51525d54535863544452646c706f +5c66645b58687461796e6a6e6e5f785b6a69875d6f8372806f8e70817c75 +756c6a67626b5a5d5b656768746a566265706962616465577b6a65675667 +6a6c6559626d8053676e62675d7d6d54796357ff4c17e3c072816f797773 +8086ffc1321c19181417180d12131415171815100f0e0e15110d17141b18 +0f192621362c2f3738291f2022202216131e22180e0929340f000300001c +2701000b2113000018230f0000050200091908000b1313130b0807112a1e +00394a17000125371800010c0e030000010600000001060c11100b080b0a +0c09080407070c09090506040703070b120f0e0b0d10140f0e0c0d081106 +0b110b090a020000000000010b010101070c0f0c050102030d090d040302 +040f0c0f080b030105060705050707030202030303030302060503010101 +05040300010403020407040202030301030504040a010801070404030301 +040402000200000102010201020203030403020100000000020204050406 +0303080401030401020304010204010303030a0704070704030303050503 +040706040406050404030404050506050505060405040503000301000303 +00000000000500000b000001000002000601010102030201000005030101 +0303020102020202020202020101050908040609060714252821222d3534 +2e20100a0f160909070807040e242f443e52574e1f1f2123242b2e272a25 +2224262425262322222831383939332f292b302c282d2f32343738302d35 +494a372f303d4c3b3d443c333535374339333e463d3c3a2d3a373737353e +46473a33342e2a3333342c312c3b3f363d392f302b3e433942423932594e +405547394856574639424332434a3a473b393a3b424b563c504933484955 +515652494b3e4750414244494c3a3740383c40414a41404550412f3d4f57 +5e5d4a5452494656624f675c585c5c4d644754536e44566a596756785a6b +6863635b5956515a494c4c565859655b4753545f5851505355476b5a5557 +46575a5c5549515d7043555c50554b6b594065524efe3b03d0ac62715e68 +65626c6ff1a5291c19181417180d121314151718151011131017130f1917 +1c19101a2621362c2f3735261c1d1f1d1f13101b1f150b0c394c2c111e15 +0f354722132b3e33221e313c2c110d130e0b21341d080a0e131206040918 +3630135c703d1b244d5d3a19141d211812141c210f0c0906050302040507 +07090808040303060808050402030302030a0e0e0a0a090f100e0a0b0907 +11070a100a0a0c070509070b07060e060806030407070604040408000300 +050500080408030800010406040202040200030304040404040305040200 +000002030403030504010306030101040404050803010600040003030203 +020103050101070606060403020100000101020302030203020202020203 +000200000402000203020104030201030002000206040003030300000001 +010000010000000000000000000000010001000100000000000000050301 +050501020105010a04020f02020702040400060000000001010000000301 +0000010100000000000000000000000000040400000400000a181a11121c +23211b0e0200060e040402030200071a1f322c3d4138161518191a21241d +201b181a1b191a1a1714141a232a2b2b25211b1d221e1a1f2326282b2c24 +21293e3f2c2423303f2e30372f2628282a362c263139302f2d1f2e2b2e2b +2c323d3b31272b2221272a281d22202f332a332f23241c2f32282f2d251e +473e324739293642413026313625333a2a372b292a2b323b462c40392134 +353f3b403c33372a333c2d2e303539272730282c303139302f343f301c2a +3c444847343e3c3330404c395146424646374c2f3d3c582e405443514061 +4354504d4f4745423d463538374143445046323e404b443d3c3f3e305443 +3e402f4041433e323d46592c3f443a3d335341274d3627da2700a6772640 +4a5e57463a39cb8d201a17161215160b101112131516130e0e0f0d140e0a +1410161108121e172e22252d2c1d13141816180c0b161a1006052c3c1a00 +0d050022320d00142a1c0b051c2716000004000011230e00050a0b0d0303 +04112c2200445724030c33442203000a0d05000109100202010203060706 +05030605070403000202070404000101020004080f0c0b080a0d110c0b09 +0a050f02080c080507010000000100000700000000010503010000000500 +020000000002010200010000000000000000000000000000000000000100 +000000000000000000000000000100000000000000010000030003000201 +030100000100000003020402030202010101040405050402010101010202 +030401030000050300000000000000000000000000000300000000010000 +000202000103020000020300000000000102020203020403030303020002 +000000000000000000060300100200030000010006000002030406050402 +0602000002020100010101010101010102020408050100010000010f0d02 +020a0f100c000000010b01010000000000100f1e16282a212e2a2a2e302d +2a2a30302d2b2d333637343936373840433345403b38383a3a3a3c3c404c +3a35333c3e3c3838382f2e3841473f423a2f3d4033454440334443434637 +3233415e4344432f2d3635353b3b413d3d49444535423534353a41484f54 +5349554b5a54423f516c6d574e48454f603e47544f525058486058595e53 +53645f62655f69754855626559544b544d484b5c6274735d5c5e625b655d +637d5f677a5b6c6e5b575c63686d6778656b64747a7067788f7073787375 +70687c78736b6d665c64655b5650616a6e7767635c6454675f5e58706f55 +7e6368634e5a6b65616a6b676d62505a5d8b9761607a646559a1151ecfc7 +5d8f777373736771ff9e2d1d1c1e1a181815161a1817191712120f111212 +100f101114191a16131414121614171715191b16171614141515150e044a +2d1821000009521f170e11531c09212c5e2d15150a0300640c0216223222 +0d060d388c38050639301a00003041130d0033340502002337000408040f +110c0d0b18151312100f100e1214140e0c0d0b11120f131314161a191917 +16131211171b1a2622110c08051a040a1802530d05050f2a023d15000a00 +1f07440b0309141a0d3e071307090a0d38000a021008073b0014021a050d +29021c0316061a250008001f070b1a000606160022070105090f051b0d08 +04050504200106020008021000010b000900020405050504050503020302 +0306090a0d0f0a060e070308020300000005020004060300070000030500 +0200070003070000050305020007010607020603070c0e03030409030304 +000000020e01000000010000020600000606000001000008030302020102 +01010300000202000105050303040302060d13120d05020407070c072233 +110d1911252b324e1b14091e090b0c0906081626385479787e6d201d1c21 +23201d1d2626232123292e2d282b28292a32352537322d2a2a2c2c2c3030 +34402e292730302e2a2a2a21202a353b33362e2331342739383427383737 +3a2e282a3755393b3926232d2b2c3132383434403a3b2b382b2a2c31383f +474c483e4a3f4c46343244605e483f38374153313a473f42404838504748 +4d4242534d50534d5864374451544a453c453e393a4b5163624c4b4d4f48 +524a516b4d5568495a5c49454a51565b556653595262655b5263795a5a5f +5a5c5a5266635e595b554b53544a4741525b5f685b57505543564e4d475f +5f456e5358533e4a5b55515a5b575d52404a4b7a86504f6953565097040a +bcb34d7e66626162535aee82231c1b1d1917171415191716181611121113 +141412111213161c1b171415151317151818161a1c17181717171818171a +21776451521e22328a5d50423e825a454d548a593832221d21862813191f +332717121b4dac5e30356a66543028627340341e5b5d32312151621d211f +1419140d0e0c171612130f100f0f1115130f0b0e0a12111012141317191a +181815141110161815211e100f0f112a161f28105f1d1d1d1c3209472716 +200c290d4915171e2022154913211517181b4408160e1a131243041c0a22 +0d152f0822091c0c1d2b0815052a0f1120030c0c1c042a120c100f120820 +0f0d060a0a0b25080b0a06100c1b030811020b0102040505050607090707 +050403050506070904020a03000604090403010b0601080a040108010005 +080605020a02060a0201060406030106000503010202030b0a0200020501 +000402030609180b0705050d06060d130407111005050804010803030202 +010202020300000202000105050303040302060d13120c04010303020400 +1726030007000f151d3b0b0700160406070400010f1c2842646368571714 +13181a1714141c1c1917191f23211c1e1b1c1d2528182a25201d1d1f1f1f +24242834221d1b2425231f1f1f16151f272d252820152326192b2a26192a +29292c1f1c1b2b462d2c2d17171e1f1d2523292525312e2f1f2c1f1e1d22 +272e3437342a382f3f392722314a49332c282a3443212a37303330382840 +37383d32303f393a3d37445023303d40373229322b262a3b4153523c393b +3e3741393d57394152334446332f343b40453f503d433c4c50463d4e6445 +464b4648453d514e49434741373f4036322c3d464a5345413a402f423a39 +334b482e573c413c2733423c3841443e4439273033606c36354d39372973 +0000927e1250525853462124c86a1a1a191b171515121317151416140f10 +0e1011110f0c0d0e111515110e0d0f0b0f0d10100e12140f121110101111 +12100b5a44303403081467382d1e1f60351f2931663518140804086e1203 +10182d200e080e3e974514154a422e0b043f501f1500393d111101344706 +0d0f07100d07080613100e0d0b0a0b090d0f0f090709060d0f0b100f1112 +17151613130f0f0c1213121d1b0b0807071d0a101b0353100d0d1227013c +1b0613002003420a0b0f14150a3b071208080b0c38000a000f050436000f +00130006230016001000121f0004001a02031400000010001d0200020309 +01190a07010406041f0004000005041300010d0008000002050505050608 +060302010103040507090401090200070307050102090700090906000a00 +02020100000001000003000001000100000200010200010002090b000003 +06020002000000010f02000000030000070c000109080000010000060103 +0202030404040502020404020307070505060504080d11100a0200010000 +0100111e0000000000000a2c000000130103040100000710182e4f4e5140 +322e2c2f32302f3029292c2e2d2d2e33373535302d363a363d383332363c +41433b393b47393a3e4843413c4049463d3c393d38403f373f3d3b454241 +343c3b3e3a34393743553d3c4a4141443b36404c67535b58393b3c353839 +3a3c41494f524c3b486d784f3c3f687a685b5852404959414b524c505258 +5d515a5c575f5f5b54524f4f57654b5769695a56505f61634a5a5f69634e +51585c5764575f6652567b56616566686b635663656d5e676773736e585f +665d6067747374686d666a695b645c585b5f5f4e5354566865685c58616a +5f59586e76636e6b7a765f626f6d687a7672746a5b4d7dd3cb82737b706c +64912b1ea1fd948d7b76778070c4ff512315151815141411191d1a161715 +1011151211121413110e0c1a252219141618141214151213170f17151415 +1514150f0013441755480000004a08722b063e2c5229196b2e6a6b190067 +1718161f16130f110b00447c25490f12351d43002637255a003a31173000 +6747313b0b000d1c1522151d12131413151416191a161415141814111617 +151716161618191917151a1e221a260e1510051c3a074a0b6b1f0d2d003e +115c201c201844116f1b2f0c1539116a0c2f121d2a056e0725002b170b6f +1241314c2a067a052e2236180f6b0a280e23092b59071c0825072929234e +0539012a3d1721041e0337181119211d004a23180d060709090807070809 +060505070c0e0e0d0d0c232b160a03110a0b000a190500110e0001060007 +0b1b0405160600120a00180c0a1a02160e110e080e13100d0f0e0e13130f +0f12130f0e0f0e110c06151001000200070000140d00090f120007030600 +0404040304040404050303060605070a070505070705080c0a0b09040407 +090806255d210f170f161c1a3a892f101016140b090c0d0b1526444c776d +637224201e21242322231c1f2224232326292b2727221f282c282f2a2524 +282e33352f2d2f3b2d2e323c35332e323b382f2e2d312c34332b33312f39 +363528302f32312b302e3a4c34334138383b322d37435e4a524f2f31322b +2e2f31333840474a41303d626b422f32596b594c4942303c4c343e453c40 +42484d41494b464e4e4a42403d3d46543a4658584b474150525439494e58 +523d4047494451444d54404469444f53545659514451535b4c5555615e59 +434a5047474e5b5d5e53585155574a534b474a4e503f44454759595c504c +50594e48475d66535e5b6a664f525f5d586a6662645a4b3d6cc2ba71626a +5f5d5a861a098be67e77635f61695aadf5391a14141714131310181c1915 +16140f1015141314161513100e1c26231a1517191715171815191a151a1a +191a1a1b1a1c194484598b741929368f49aa5938817085584ea058908d3c +2290372d1c1f171a1f261c136cab547b434c765b77305d6b53862a6c654e +67259a74585b221019241823161e131415141615171a1b17151615191512 +17181618171717191a1a181617191a131f0b181b1533522263207c363355 +1a502373403f4338561f7d30502f2e4e267f23482b39462187203e17422c +1e822554445e3c188c143d3145271c7c204024361b3a6816291734193b3c +366113460d3849252d112b1344281f2a2f2b06572f22140d0a0b0a080707 +0a0b0a0a0a0c0e0e0d0c09081d251004000d060b0419251407201a0b0d12 +061315260e102213061f1706231815240c20161b150f1315120f11101015 +1511111415111014181d1812211e0f06120e170b0d241d0e161b1e080f0a +0b010504040304040605050303060605070a070505070705080c0b0c0a05 +03060504001c521200040000060224761f03050f0c06040706040e1c343a +62584d5c1b1715181b1a191a1315181a19191b1f1f1a1a15121b1f1b221d +18171b2126282321232f212226302a282327302d242321231e26251d2523 +212b28271a222124221a211d2b3b25223227292a231c28344f3b43402325 +261f22232224272f34372d1c2b505b321f21445442353632212c3c242e35 +2d3132383d31393b363e3c382e2a272732402632444438342e3d3f412939 +3e48422d2e353833403339402c30532e393d3e40433b2e3b3d45363f3f4b +49442e353b32333a4748493e433c4041363f3733363a3b2a2f3032444346 +3a363c453a3433494f3c4744534f383b46443f514d494a40312352a89e55 +464e433e3768080064b24445494f4a472877cd1f111212151211110e161a +171314120d0e1311101113120e0b0917201d140f1113100e100f0c0f110b +131312131313141201245f33695300080f631f83351256415a2a2072306b +6a1b02721f1a1017111212150c00518b32561d244c32510b36442e620546 +3e27400179553d430e000b170f1b10160d0c0f0c100d1112150f0f100f14 +100d1213111312121214151513101213170d19040f0d0821420f500d6c24 +1c3d074013612b292d2346106e1f3b191b3b136c0f331623300b720b2902 +2e190b6e1140304826027600281c32140a690b280d200525530115021f03 +2526204d023500293d18230721083a1b121a201c004d25190c0503060506 +0505070a090606080b0c0b0a08071d251004000c05090114230f051b1807 +0b0e050f14220d0a1602000e0600150a071901150b100d070c100d0a0c0b +0b10120c0e0f120c0d0e0f130e081711020005010c00021913030c0f1200 +040204000002020304040507070505080807090c0907070909070a0c0607 +05000002020100174e0d0000000000000f65120000090a03010300000410 +24264f433845443d3733312e2c2b373a3b3a34303339463d463c353e3e46 +423f3b3b3d424749484341493b3b3c444450544f4b433d3e3a3e3c42413c +424243464242383a383d343d5246484940483f3e3d3d3a333b4e5c44483a +2a34413b3c414443464d504f4c594c4c49525f4d63686565565349474440 +54575254555158455757596c6d6b736a606464686064676a626259605855 +4b54545e61585f6864626b5b645b5355745b646563646559717472716661 +5e62616a5964677373757b727367655d6a6c67665e63625c5f5a5f5d5c6e +6c6f6055646261625f5c6f71666d7a7d736f6e67636b656b74757b706fa4 +84748f8478748d9e20275bffea9b8881839ba4ffe3262015161916161612 +181d1a141413101213100e12181b17121114151312131414161214141213 +150e161515141412141000006e003c8a00030050004e83004a00536a0053 +0053a50600580a00121f1f1e07091a0000663f34810044004479003d004b +5f004c00662311480490390c0f072039152316181a191917171a1d1c1a1a +1a1b1511171a1818161414171b1c1a181918261f43171911111f2a002036 +2902191b001c2b2b00112e0031534800281b0031203a02141a0044223a00 +49200731294000350015532f5b09491f2d58396b0b5222365e3833245108 +23283a1b025e0f2d283a14112e04221a3f152238173c2f470c2d1f051411 +0f0c090a0d0e0a070b0e1314131112111b26111306180806060028000610 +1c000017130000130f01081f090512150004060011000100020a05070301 +050402050205070806050505000a040512180e10000c15010a0602140005 +0c12000608090606060606070808070606090a0a0c0e0a0706080a090909 +0507070607090b091616963a1911171114173dac561e14261808040a1219 +314d3b418186739b332c262523201e1e2a2d31302a26292f3a313a302932 +323a36332f2f31363b3d3c37353d2f2f3038364246413d352f302e323036 +35303636373a36362c2e2c312b35493e3f41374036363435312b3245533b +3f31202a373132373b3a3d444847414e3f3f39424f3e5358555545443937 +34304447414344404734444446595a5861584e5252564f5356595151484f +49463a43434d50474c55525059494f463e405f464f504e4f50445c5f5d5c +514c494d4f584752525e5d5f655c5d52504b585a56554d52534d504b504e +506260635449535150514e4b5f61565d6a6d635f5e57555d575d64656c61 +609573637e73676583910e103eebc778625d617e8bf6cc151a1415181515 +1511171c191313120f1114110f13191c1813121516141314151518171919 +171a1a151b1c1c1b1b1c1a1d1724a61f68a814221f8d227aa21e8122849a +2d8b137cc92c21862e171a202226191c28121892665caa1c7e2470a1266d +2573892a7c2c9855407428ae511d1e12263c1826191b1d1c1c1a1a1d201f +1d1d1d1e18141a1d1b1b1917171a1e1f1d1916141d163a131b1c23384a12 +3d4f3e1e474c113842481c3f5a174a665d1853481e4d3c5822363c226644 +5c116940254f475e11531932704c78236339477251882c7543577c554d3e +69223d455739207c29453f532b2a451c3a3558313b54305442551a39290d +1714100d0a0b0f100f0c0d10141512100e0d16210d0f0214070b17184012 +1e2b3415172f2911102925181f37211d2a2d0f1b1b1526111314141c1214 +100e12110f120f121415131212120c181215222a2022101e27131c181425 +0d13181e090e0e0c0707070606070808070606090a0a0c0e0a0706080a09 +090906080807060808060e0d8b2b08000300000027974611091f10030005 +0b1228432b2f6f715d852b241e1c1a17151521242726201c1f252e252e24 +1d26262e2a272323252a2f31302b29312323242c2d393d38342c26252226 +242a29242a2a2b2e2a2a202220231a22382b2e2e262d2523232220182134 +422a3022141e2b25262b2c2b2c3335342d3a2e2e2a333f2b3c3f3c3c3131 +2a28252034373133343035223333354849474d443a3e3e423b3f44473f3f +363d36332831313b3e353b443e3c45353c33292b4a313a3b393a3b2f474a +48473c3734383942313c3d49484a5047483d3b3542444241393e3e383b36 +3b393a4c4a4d3e333f3d3c3d3a37484a3f4653564c48453e3a423c424a4b +4f4443785747605549486a7e02001cbc8d423d3d3c5252bda2000e101114 +1111110d1318150f0f0e0b0d0f0c0a0e1417130e0d10110f0e0f10101311 +13121012130d141414131414161301058100478c00030063005682005900 +576a005a0052a307006212010d181b1b090917000071473a880055004c7e +0047004e6303540672301c530c943b0a0b021a310f1b10101411130f1112 +171414141617110d1316141412101013171816130f0b180f330a100c1323 +350027392b082b2f00222e3202233f0035534a02382b053625400a1d2309 +4d2b430051280d352d4400370016522e5a06481e2e59396c0f57263a6039 +32234f0722293b1d0460102f2b3e1917350c2a22451b263d1a3e2f460b2b +1e020e0d0a0805060a0d0b080a0b0f100e0c0b0a131e0a0c001103050d09 +3303111c27070a211d03041c19080b210b0714170007080415000303060e +080a06040807050806080b0b0a080908020b0508151c1212000e19030c08 +041500040a10000304050102020404050608070606090a0a0c0e0a070608 +0a09090700020201010303010b0887260100000000001286390803190e00 +0001050a1f371b1b5b5c4870433f3c3d3d3f3f3f383b372f2b2f36393629 +3c362f352b3836393b3a3736383b39363743393b3a3e434742404a4d4034 +3e4342403a373f45474a48443e414141463d433b5559493d423f373b433c +3a49584f4a3a4d48434a39404443454b4b4649554d52414e59564c507372 +504c5c4c485267605d5e635960656658615f616e77706771685f67645e5d +5354515f62695b544a505c5b5b5e5a5e60636e7071776c6a6e715e72848f +7a706f7579716e706c71676b6e7975718672706766626d686f69626a685c +6063545559665a5b534b575c6460635c6a5f827c6f6b68646e77605d6b80 +83776f6a677057687d62658175cd212e28baffe7a6888dbef9eb432c1911 +12151313130e151c191212121114120f0e12171915111a15100f13171817 +161317161316170f19171512110f131212003f326a42091b00373a613f00 +5735612d004b2c584a164c3d52171016151414161b0f00599e317d00582d +3d72005e1b4d6600500067411058007c2a111b0e2235131a191c17191916 +14171a1b1917181b15111619191c1b171415181a181618131c275523140e +0e113c190a000e001e1a220b0e0002211b0002071a081629000000061726 +22000001000420180005000000211a0000020600261f000a000f02301900 +1308101f45120200050000310d0301010018240003070e062c4600091d26 +1d38300a190e100e0b0c0d0e0b0a0d0f11100f0e10140f1008160e120508 +14002505000f1b1800210f1700111b1d00171a1b050f050a000300080001 +010000000000030300010000000000010000020507110913161a051e0011 +0a250e08170a14100c1116000808080707080909080707080a0a0a0b0b08 +0606080907060808090809090b0a06148547100e171a15204b9d5721111d +0b0e1008061a5c9e6b4e4f46365e322e2b2c2f3131312b2e2d2521252c2f +2a1d302a23291f2c2a2d2f2e2b2a2c2f2d2a2b372d2f2e32353934323c3f +3226323736342e2b33393b3e3c38323535353d353b334d5141353a372f33 +3b3432414f464131433e39402f373b3a3c43433e3e4a4042313d48453a40 +6262403b4b3c384257504c4d52484f5453454e4c4e5b655e555f564d5653 +4d4c4243404e535a4a43393f4b4a484c484c4e51595b5c625755595c495d +6f7a655b5a60645c595b5a5f555959645f5b705d5b5554505b585e585159 +594d515445464d5a4e4f473f464b534f524b5a4f726c5f5b58545e67524f +5d7273675f5b576146576c51547169c00e160c99e9bd7b5d679fe0d73321 +151011141212120d141b18111111101313100f13181a16121b1611101418 +19181818191b181b1c161e1e1c191819191c1f18685d8651122a1d635f7b +4d107c628a56187b567c6c3b7a6b762f1818181c2224231c137abb4b9a1e +84595c8f21833d6c882375258f6633791c923c1e24152538161d1c1f1a1c +1c19171a1d1e1c1a1b1e1814191c1c1f1e1a17181b1d1b17180f131c4b1c +1619232d5e3b281921194f4d442424172a4f49251a182d2443571a1b1824 +3847440f1c231b2641390e2618211d463d0e1d25271e473d192818302959 +402136292e3e6231201c26231c542b211d1f1635411720272b264c671a25 +33372c453b101c11110f0c0d0f10100f0f1112110e0d0f100b0c04150d11 +060f2b2045251a2f3835193e2c34192e373a10333637212b1e26131c1821 +1419181411120e0e151511130d1012111213120f0f1314211925282f1a33 +12241b361f19281b211d17191c030909090807080809080707080a0a0a0b +0b0806060809070609090a0908080807000b7a3800000304000835884714 +061506090b03001354925b3b3c3421492a262324262828282225231b171b +22251e11241e171d13201e2123221f1e2023211e1f2b212322262c302b29 +3336291d262b2a28221f272d2f32302c262929272c2228203a3e2e222724 +1c2028211f2e3e35322237322d3423282c292b30302b2a362f32222d3631 +2226484829273b2c283247403c3d42363d4242343d3b3d4a514a414b4239 +423f3b3a30312e3c40473831272d3938373834383a3d4648474d42404447 +34485a655046454b4f47444644493f43444f4a465b48463f3e3a45414a44 +3d4544383c3f303137443839312932373f3b3e3743385b554844413d454e +383443575a4d453e3d442c3b5035385751af070c0076ba8b4e323669a7a4 +110b0a0c0d100e0e0e091017140d0d0d0c0f0e0b0a0e1315110d16110c0b +0f131413151416151214150e17161411111115140e004a3f6d3c00130040 +3e5e33005a3b622c00512e56491955475a19090d0f111313140a005f9f30 +7c0061363d7100621c4a670253036d45155c037b260a13051a2d0d121314 +1111130e0e0f141313111417110d12151518171310111416141110060c16 +421209091017462310030d02312e2b0e0f000f322c0a0405190d263a0002 +000a1d2c29000108000b261e000b000501271f00000408002821000e0013 +0a372100180a121f46120400090300360f070607001f2d030c10150e344c +000c1e2419342b0411080b0907080a0d0c0b0c0c0d0c0a090b0d08090111 +090d010719092e0e0318221f0328161e03182124001a1f200a1408100009 +050e040908040506020209090507010406050607060405060a140c171a1e +0922021109240d071609100c090c12000303040305060607080707080a0a +0a0b0b080606080907040403050404030302000674310000000000001e77 +3a0b001203060700000949864c2a2b200e343c3b3a3c4043413f393f3b32 +33434a47392a3f3e3b40323c2e353937302d31363e3b3b463b3e3c3e3e51 +5649403f434a3f3d3d39373a3b3e3a424438373c3f38404753495450504f +4c473e434b41394146464f4e6047343f44474644464d4f4c3f3f4f615859 +464d4e638b756450615a58616856585b6c6657665b51544258575e5b5967 +5c5167625f5c5358556369746d615659686d686b686d616e697563665b6b +6779576a676c5d6165676f767a776e605d5766707d7e7e6f736c6960655a +5e67615c5b5f655b5557626e5e65655f5d6d705e69757c56525d6272715d +66786f5f686862615a6379706e6c6c6d789276b72325211e91fcfdfff3ff +bc3f33191710121413161711131d1c13121211131413131313120f0c0e14 +1a1a1511131815121515131719111d1916120f0f1316190f0e152104221f +180a24380d1d091c230700041a20063a610084410717091c160a0c241e00 +594a1a0c1e32340e13253c6020002b6670070d405741140c111d1a1c100c +1b1c10141816141416181613161c19131415171c1f191311141615131519 +131a381e12120337183976000a0a261c20510b10232b2f5804161c341639 +4b070f00392d4641000b0028254242000303300f3f2a00000c4c12453007 +070334224a120000092b3233050204051e1f3a0c00213817590002000226 +23234200100a3336412c002b1212100d0b0a09090b0c0d0c0b0a0b0e1a10 +0c0f0b09090c3d1115630911036c102e006b2222113633330e343f001c13 +071f831a0d0c080610110c0d14140f100b0c0b0b0e110f0b0f0a131d0a22 +2e1d24303d2027376f11181850051c0943180a0b0a0908080a0808080706 +070807050b090705050606050908080809080a0b15084b91251110111816 +5f79331d1b0d0e0a090b131b202331464f5a43412a29292b2f3233312d33 +2f262939403d2c1d32312e33252f21282c2a2320242a322f2f3a2f323032 +3043483b3130343c3331312d2b2e2f322e36382c2b30332c343b473d4844 +4443403b32373f352d353a3a4342543b2833383b3a383a42444132323f51 +4746333b3a5277645340504947505745454859534454463c3f2d43424946 +44524a3f55504c494045445258635b4f4447565b565953584c5954604e51 +4555516341545156474b4f51596064625c504d47545e6869695a5e5a5750 +554a4d58524d4c50564c494b5662525959534c5c5f4d58646c46424d5262 +614d56686151595a53534a5369605e5c5b5c678369ab12120a026fd6d4e3 +cfe8a7302712140f111312151610121c1b1211111012131212121211100d +0f151b1b151113181514151715191c16201e1b171415171b181520272904 +1b1d251d313f0b1e17333a211d29383a20588a10a6580f190c1f1c100d27 +290d6455271b3448451d26384b6f2f0c3e79831a1e4f624a180e111d1b1f +130f1e1f13171b191717191b1916191e1b151617191e211b151316181716 +16160c112f1a141d18543a5b920a192051493962182343535778131f2747 +3a60651a25135145605b0b2514423d5a5a0c23255231604b111a2a6a3061 +4c232021584b7137121b25484c502120252840405729193d5133750c1e1c +1e444141601b261c42434c32022c11110f0e0d0c0d0e0d0e0f0e0b0a0b0d +19100c0f0d0b0e18552f3381272f20892d4b16883c3f2b534c4c274d5813 +332c1e369a3121221c1a21221d1e252520211d1e1d1d2023211b1c17202d +1a34402f36424e3135467c2026295d122711491b0b0a0908070706060707 +0605060706040a0806040405050409080808080706080d00418314000000 +0000496623101205090604060c12161721353e47302f201f1f2125282826 +2127231a1d2d343123142928252a1c26181f23211a171b1e2621232e2326 +2426273a3f322a292d33272525211f222326222a2c201f24271e242b372d +38343433302b22272f251d252a2a3534462d1c272a2d2c282a30322d1f1f +2f413737222521365c4839273c373740453334374842334033292c1a302f +3633313f362b413c3b382f3432404651473b303342474245404337443f4b +393c30403c4e2c3f3c4132363a3c444b4f4d463936303e48535454454944 +41393e3339433d38373b41373335404c3c43433d38484b394450552f2b36 +3b4b4a363d4f473742403c3931395046454241424d664991080c040054af +a6ad91ac7209170c0f0a0c0e0d10110b0d17160d0c0c0b0d0e0d0d0d0e0d +0b080a101616130f1116151113121014150f191715111011161713091017 +1c00111013091d2d000e00192006020a1c1f053c6a008d44020e03161206 +051c1900534413061f33320a12243458180028636d040b3c513909000511 +13160c0617160c0e1410100e1212120f12191610111214191c16100e1113 +120f0e0d040a2811070d053e22437c00060b352c234f060f2b383c60000e +163320454c040e00392d4742000c0029254242000b0c3916452e00000e4e +1448330c0a093c2b541800000c2c333408040a0a25233b0d00243b1c5f00 +0806082c292746000f062d313b2400240c0c0b090a0b0c0a0a0b0c0b0908 +090b170e0a0d0a080a0e3f1317650b13046d112f006c2123103736361238 +43001f190c268a211515100e171813141b1b16171112111114171510120d +17220f28342126323c1f24336a0d15174c0119043f120505050405050707 +0505040304050402080604020203030207060606060303030a00387a0a00 +00000000345516070d020603000004090c0b12252e361f1b3c3c3b3b3c3d +38333237352f33404138382d3a3d3c40373a3e42423d3533393f4d494449 +3b3e3d3f3c3f383139403f3c41393939424b403a434f544445494e444346 +474554554e4543424348483c394249415a635643414c4b453d3b3f464a4c +3d464f434e67544f61848c7286685c654f575c4f5c5a6e67635f5f666157 +8665706c6c71695f767164635e645a5b565c565150505b625f68535a5167 +658262634f60587d6d816c61647e8271697e8378876d6b5a605e68686363 +6e67655b5e565f635c5c5b595d585e595f6a5a6363575960615b585a6961 +6d6959625f4d5d6e555f6c67676b615b6f56696566796c6d6c8365202424 +2b245d796d392b191d1215111315141a1d17152122181413111110111312 +111010110f111415120f12171715161614181b161d1b19151210151a3309 +180d0a1c1821100f1616585d14150d16040017050014580e6e3d1120111c +1b1925131f130c0c1020180b130021412f2c38120c161910170a250e1922 +171b19121515252214191919171516181612171e1d16141213191e191210 +121415140d251a17191c1511043c1d0ab10210003a0c0c92090e38150a9c +0d150b4512249201101a590f3c9401000a500b3a7900000d3d0a50600008 +156400566807051a50005a5d0609284c0565390100234a0084231d2a3400 +821f0004002f270080050e10551e217c1112141413100b090a09080b0c0d +0d0b0a071513160b06060d053c1811691217036b183109772e170f345134 +152465000e0b04002c1f180b08131415111116150f0f0f0d0d111515110c +09030f120b2f3a12131e45082204621206104d0c150045330c0b0a090a0a +09090a08060607080603090b0c07040304050605050709080a0c090c0b60 +652f13161b2f6c51261c1713090c0c090f1d2b333b49384a59512a2a2a2a +2b2c2a25262b29232936372e2b202d302f332a2d3135353028262c32413d +383d2f3231332e312a232a31302e342d2d2d363f342e37434838393d4238 +373a3b39484942393736373c3c302d363d354e574a3735403f39312f343b +3f4130393f323b543f3a4d71795f72574a543e464b3e49475b54514d4a51 +4c4271505b57575c574d645f51504b51494a454b443f3e3e49504d563e45 +3c52506d4d4e394a4267576b564b4e686c5b53686d63755d5b4a4e4c5353 +4e515c57554b4e4650544d4d4c4a4e49524d535e4e57574b484f504a4749 +59515d5949524f3d4d5e46505d58585c514b5f46595554675a5c5d755a13 +1716160a3d594d1d170d18101410121413191c1614202117131210100f10 +1211100f111210121516120f12171513141513191c171e1e1b171415171a +2f081d1409170d1a111218145159161b1320161529160e2b7a348e521720 +121f1d1b271620140d0f13261e131e0c2d4b3733401a142121181f102810 +191f13181a1517182725161c1b1c1918181b181419201f181614151b201b +141214161717102717101218171c19593f2aca13180c6234229d101b5439 +2eb516170f543246a8101f2c6a224faa14151d631e4d8a130a2a59266c7c +0c222f7c0e6c7d1c1731700d7a7b1f213e5f187b4f19123f66109a3a3040 +47099734131b14473f10981d2524642b2c8313131313120f0b0b0b0d0c0d +0e0f0f0d0a09171518100a0c1311523029812a2f1a822f48208e422e2347 +6446273677101e1b140b3c2f251a152021221e1e23221c1c1c1a1a1e2222 +1e19140e1a1f183f4a22232f53152d0f6b1d14215a191d0848360b0a0908 +060605050607050506070502080a0b060302030406050507070706080203 +0152551e00010317563e160f0e0e05080704061521272d392639463e2020 +202021221f1a1a1f1d171d2a2b2222172427262a2124282c2c271f1d2329 +352f2c31232625272528211a232a29252b2121212a3328222b373c2c2d31 +362c292a2d293a3934292926292c2e201f262d2540493c292934312b211f +22292b2d1d262f222c432c2534535b41573d34402c36392c38364a433d39 +373e392f5e3d484444494339504b403f3a4037383339302b2a2a353c3942 +2930273d3b58383924352d5242564136395357463e53584e5f4644333836 +3e3e393b46403e34372f3b3f3838373539343c373d4838414135343b3c36 +3335423a4642323b382634452f3b484343453a34482f423c3e4f42423c58 +480a110d0500172a1a0000001211100b0d0f0e1417110f1b1c120e0d0b0b +0a0b0d0c0c0b0c0d0b0d1011100d1015161415130f141611181716121111 +161a2e04170c05130b1409070d08474e090d09170a051b060017611b7741 +0b160a181816220f1a0c0504081a1206100021402823310b051112091204 +1d050f160a11140e1211221e1115161514111314130f141b1a13110f1016 +1b160f0d0f111210071c0e080a0f0c0c06432713b501090047190d8c0009 +3d1f149f050900411a2d93000c16570c3b930000094d0a37770000164310 +55650009166400576a09071d59006263090b294b04663a0300284f008320 +1a293300842100070031270080030b0b4f171b73080b0e0f0e0d0b0a0d0c +0b0a0d0c0e0a0a061612170c090811073d160f6710150068152e06742914 +0a31513617266902110e090032251e130e191a1915151a19131313101114 +191814100c0614160f343f17161f44041c00580c030f490810003f2f0606 +050605070606050503030405030006080904010001020607070708050505 +00000045460e00000000412d0906090a02050300000a1519202a1829372d +37393b3d4146433f413f3b3b3c3d39333431383d3b3b38333d3c39363434 +37393938383f343a3a3e2e383b393f474f5842393b38404b3e38353f493c +3f3c433d3343423f393a3c42413d444d473e4148514a5559474041534e41 +383b414344464b544f45595d5c6a74857d81927b585d4c5258556d5e6c62 +665b60605d557d5a605a5a5558515d57625d53584f51515c5b575a565d61 +565e5959585d5f7f58557174606f666f6a615c7571675871726a6a5c655e +5a6164645b6366575d595b5669625a646356595c665f646c586160516866 +6471635b6c7d5e5f5569726b7975687e6760676a796e786d877c6f705a62 +676bab7007121e1d221f2b201c23151818171716161c1f1917272a201b19 +151511121312111113151a1411131516191e1c18181715181c1817181917 +151316172b1c111216171c16111e1e1d212e1f10191a1d060a1c0b081d2a +1c0a161a191410081e150e1c0a2119180f18110a2f68100e161018141912 +13191a4124100f1c1918172a2a211b1f181a1a1717181714171e1d181714 +12151b181513131415131228201d191d170d001739282804160c11493237 +170611322b370517192639293a0f050f27463541050600312d3b35000a05 +38413e4711070c714951400a100c59304d270006104225552f0b061a4723 +5b222921522e63270a110027522470000d004448365b0e0b171511100f0f +100f0c0b0a0b0c0c0b06060b13150507060009181812001c171704161833 +1c071f261800261c20000e090a0c4106030e0e000a0b08070c0904040705 +0911130d070609020803081618000c19040d0e0f140b18050c0c080b1910 +0b0b0c0b0c0b0b0a0a0b0b0a0d100f0a08111611090506060403060b0b08 +090b1215111349556d473a575b2e201408200e0604081a272e303e474342 +504a2527292b3035353133312f2f32332f292a272e3331312e2933322f2c +2a2a2d2f2d2c2c33282e2e32202a2c2a3038404a352d2f2c343f322c2933 +3d3033303731273736332d2e3036353138413b32353c443d474b39323345 +40332b2e343637393b443e34464845545f70686e7f6a464b393f45425849 +574d51464b4b473f67444b454540433c48424f4a40453c3e3e4949454844 +484c4149444442474969423f585b47564d565148435c584e3f585954594d +564f49505252495154464c4a4c475a534b5554474a4d5a5358604c555445 +57555360524a5c6d4e4f4559625b6965596f5851585b685d675c766c5e60 +4850535ba46f0a161f16130a11090b1a141a1714141313191c161424271d +181612121011121110101214191310121516191d1814141311171b171619 +1a18151516192c20151617171a15111f1f1e222f22111013210f0e211215 +3a4b371c191a1a17140e291e0d1b0c261e1a0e1a1e193a6e15141b151d1b +1e17181e1d42250f0e1d1a1a192c2c231d211a1c1c19191a191619201f1a +191614171d1a171515161718192e211a12181818133259453d1019193871 +45401b112d544d4f0c151a31594b4d1c121e35574654161907423e4c430e +1a1748514f581f151a7e555c4a1417186e4762390e121b4a2d5d3a17142b +5834662e322c5b396e32151e0b345f317d0b1f1053553f62100b1411100e +0f101113100f0e0f10100c0a0a11191e0e12100a1524241e062822220f21 +233e2412272e1f032d232706130e0f11450a04120f010e110e0d120f0a0a +0d0c0f1819140e0d0f0b110e1323250919250f1515161814251618181013 +1c130a0a08070605050606070706090c0b06040d120d0501020503020409 +090605070b0c07063a445b332441461d120a011b0a020003111f2424303a +33323f391b1d1f21262b2a26282623232627231d201e252a282825202a29 +262321212425211e20271c22222617212523293139412c21232028332620 +1d27312427242b251b292a252120242829232c332f24292e342d3a3e2c25 +283a33261b1e232524262b342e243737333d4451494e614e2e37282e3431 +4536443a3e333636322a522f3832322d302937313e392f342b2d2f383531 +322e33372c342f2f2b3032522b284447334239423d342f48443a2b44453f +4538413a353c3e3e353d403238353732453e36403f323538443d424a363f +3e2f43413f4c3e36455637382e424b44504e445c453e4546544953486255 +4a4932383a418a5a00050f040000000003151217120d0d0c0c12150f0d1d +2016110f0b0b0b0c0d0c0b0b0d0f150f0c0e1314171b191515120e131612 +11131513131216182e21161519171b130f1a1a181c291b0c151b240e0d1d +0b0b2838260e10121210130c25190b17072018150a151512346a0e0a140e +161317101117163c1f0a091715151627291e1a1c1717191416151613161d +1c17161311141a17141212131412112419130c12100a021f44312c020e08 +1d56312f0c00163b343900080c204132390a010b244434400405002f2c39 +32000d0b3b443f480e04096d474e3f090f0c5f35512900040d3d20502c09 +051b4822551a211b4a285e22050d00224d1d690007003e412e5205030f0e +0e0f11121514110e0f0e110f0e090b0f191b0d0e0f0409161610001a1414 +0113153017041a211700251b20000d080b0d4409061311020d0d0a090e0b +060609050b11150d07060b060e080d1a1c000f1901060506070314060a0a +0508150c06080708080909070504040306090803010a0f0a020000030808 +090e0e090404050300002730451b0c2a310b05010017070000000a141816 +232a24222f2931333231343634303f353138372f2b2e2a2f333a36313126 +2e2d2c30363a393836383a413335333335342d2d373a37353c373c302e36 +2f33343a4740443b44444649383737403f3f42363b453f393c3b3d4c4449 +5355415b61534e575d595353526c604f60516a838374739d8b7f5a47504e +4d49604a554a4e5057455045574e59545b536261655d545455615752494e +564e5353606758585b54594e5a7d5c5a5d6b6d726a5c625e65695b65596b +63655e5b64615166646871705f47555959535d635c5c5e5f62585857646e +5661675d61675c65637473645b6761696259695d5c794d5a685773645b63 +6f5c5f6d6370686681c0473427393c3e433c2c4924312e2b292624292c25 +16282d25201e1a191e1a1714100f0e0e050c1518130c111a1b1715131016 +1a160f131819171515161214100e1a0c0d1e1f150c1017130e15191c091c +12061a0901000914211a101410130413171e181414101d170d10402c1212 +181b1c1e0b1d1a1a1430201e1b13121a0e352216181a15191c1817181814 +151b1a17191713131a191817161515122a2518201f1917120a000a100312 +1514020831070d0c090f0d021e1510110c100f1215060715131006030d08 +1f130a06080906272b1108090e1842381c0d140b1e312f0d0715181f3321 +0f070a021a29240c0c0d173b48020d0c070a2828370c0f050c43551e0913 +13100d0f14181916130e08070a0d0d0b0c0c1027090900090b0c080e070c +0b130b040e0d0a080f060811080d0710060704061a301402090e080a0a09 +0f0c0709090a121c1b110a0c06010606100000020300090d090d05060801 +030800090f070a0a0a0b0b0b0c0c0b0d0d0d1217151006141d170c070707 +0505090e0e0906080e0c0d0c0a1e334b46442a170b111e32110806111d22 +2831394159525f6020222120232826223127252c2d252124202529302c27 +271c242322262c302f2e2c2e3037292b2727282720202a2d28282f2b3024 +222a2327282e3b34382f38383a3f2c2d2b363333362a2f39332d302f3140 +383d4749334f5345404a504c4646455f503f4d3e556e6d5f608a776e4836 +3f3d3c384d3742373b3d44333b304239443f4641504f524a4143424e443f +363b433c41414e554346463f443a466948464755575c54464c484f53454f +43554d504d4c5552405552565f5e4e36464a4a444e544d4d4f5053494c4b +58624a555a5152564b54526363544b5751595249594c4d693d4a59486253 +4a525e4b4e5c515e57587cc34d3e2c3a3532322b1f4224332c2826232025 +2821122429211c1a16151b1a1714100f0e0e050c1518130e111a18141210 +0d1317130f13181917151417181a16131f11122020160f131d1914140e11 +071c11051b1113161c21231a121715190f1d161b1b1919131a16181d4731 +17171b201f230e201d1d1731211f1c14131c103724181a1c171b1d1a181a +1916161d1c191b1915151c1b1a1918171717312b191d1a16181a18112125 +111a151c1d283f0d10141b2825132112101923291d1a1f1113211f1e1211 +19142b1f16121213103133191011161e483e1f1016102a3e3b170e1b1b22 +3424120c110924312a100f101a3e4b0513120d102e2e3d141c13194e5d21 +0a14120f0d0f14191a1a17120c0b0e11110f1012162d12120a12100e0a10 +090e0d150c050f0e0b0910070811080d071006070204182e1200070e080c +0a0b0f0e090b0b0c141e1d130c0e0a070c0c1907050b0c0a10120c100709 +120d0d10050e11080a08080606060707070909090e13110c021019130803 +03050404070c0c070404090505030213273c35331a090108172d0c03010a +141a1f252c3449424e4f16181716191d1b17261c19202119151a161b2027 +231e1e131b1a191d232726242022242b1d1f1b1b1f1e18182225211f261f +2418161e171b1c222f282c232c2c2e3320211f2a27272a1e232d27212421 +23322a2f393b28434638333a403c3535354f41303f2f44595544426c5c54 +32222b2b2a263c2631262a2c331f281d2f26312c332d3c3b41393031313d +3530272c32282d2b3a3f2e30312a2f222e51302e324042473f3137333a3e +303a2e40383b3937403d2c413e424b4a3a223135352f393f38383a3b3e34 +3635424c343f473b3d4237403e4f4c3d34403a423b3242383a592d3a4635 +504138404a373a483d483d3d5ea43125182825242823193a1a261d171714 +14191d1607191e16110f0a0a12100d0a060302020000090c0701050e110f +0b09060a0e0a050910110f0d0f121418120f1b0d0c1b1b10080c130f0a0f +12170a1c0f01150603040910160e050c0f15071512161412120c15111014 +402b11101419181c07191616102b1b19160e0e170b321f13151712161815 +131514111118171416141010171615141312121129211116140f100f0900 +0f14020d0b0f0a13300105070b1515031609060c11160e0d14030713130f +06020d061f110a06090b0728280e05040b143e341809110a2034310e0611 +12192c1b090509011b261e0204050f3342000906010422202f050b02083e +5016020e0e0d0d11161d1e1b18110b0a0d1212101112162d1111090f0c09 +050b0409081007000a0906040b02060f060b0710060703071b3117050c10 +0a0b08080d0b060a0a0b131d1c12090d0b070c0c160402060702090b0307 +00000701020500070c030809090a0a0a0b0b060808080d12100b010f1812 +0702020609090c110f0a0501050000000000112721210a00000111290900 +00020b0d10151c243a333e3f30282d31383c34353d373a44453c373a3132 +3834303c3e2d2b363336333c322a2c292b3337343336332f2d343d423f37 +314140373a3d414c40404a3d444b38454a513d434a55545a444a49414048 +4a464c4c444b4d3f3e3d3c3d4044494c4b47443f453e474a565145485374 +614d4156524f5b7957564b46484a5146534e4a5358625052574b5e785e52 +485e5a6369555553445475756a665d685e5b57545c525761656a5c5d5d66 +6d557b575c69655a5f564d566f7a6c5a6c65635b685f626561655254535a +5e655f505f64577672626a5e565e5a535e5257565f575e60695f6a705462 +62687164637464685b6a5b666b624f91a385838c9cb6a4a89eb29b87a38e +977b7e828a848d94827f7e826d68684f5c6252586a746f828282747c7166 +5e54473e5a512d473d41383135312c312e282224271e161a1912131b180e +0d181a1f161416191f161a0e1731291114161b191615181a1a1a1612141d +282d292017240a151e371a151d1d12292d181c120f1016160f0f14141112 +1c2322201e151a19121117110d17161d1d191311180e1f211013130f1b16 +11110f190d151313150c0d11171312140a130f10161b1a0a0d0d10100d10 +120c0e0f11100e0b0a0a130c0b0d060c16010911171012151017130e0d0a +0a16190d110e0b0b0b0d0c0b0d0a0a0d0b0709100a100d0e0b070f0e0d14 +130d0d0d0f12170d0b13160e0a0d0d0d0b0b0b0b0b0b120904200a110c06 +060f0a0c0e0a0e0e0c0a080c0b0a090a0807080a0c0d0b09080b0e0e0c0c +0e100e130c0a100b0f0e0412191107070a0d000307050305080904070c12 +0e080507050806060a0a0a0d0808080808080707090907040309131b060c +0f0d080808090a0103080603060707040f080707040b070b0b0c110c1d3b +140e0e181f23293149463b4d5246221a1f232a2f2728302a2d37382f2a2d +24262b27232f31201e292629262f25202421232b2f2c292c2925232a3338 +322d2737362d30333742363640333a412e3b4049333b404d4a503a404038 +373f413d43423a4143353233303134383d403f3b3a353932373a45403336 +41624f3c304743404c6a48463b36383a4136433e3a42454f3d41463a4d67 +4d42374d4851564244423343646458554b564c4945424a40424c50554748 +485158406642475450484e453c455e695b495b54524a574e515452564345 +444b5158524352574c6b67555b4f474f4b444f43484750484f515a505a60 +445252586255526353574a594a566059498ea084828997b09da197af9a87 +9f889174787c857f878e7c7a777b6763654e5b6151576a746f8282837580 +726a615649405c532f493c40373034302b3235312b2d30271f2120191a22 +2117161c181d1715171a201922171f362a1215191e1b1a19191b1d1d1814 +151e2c312b2219270b181f3a1b161f1f14292d181c141112181811111515 +12131c2422211e161a1b141319130e18171e201c16141b1120211010100f +1b1714171721131814161f1712131715181d13170f0f161d211412121515 +121517131316161513100f0f181110120b111b070e141a13151813191814 +120f0f191c1014110e0d101210100f0d0c0f0d090b120c120f100d091113 +141a191312121114190f0c1417120e11120f0d0d0d0d0d0d140d08240e15 +1007060d080a0c080c0c0a08070b0a0908090807080a0c0d0b09080a0d0d +0b0b0d100e130a0a0e0b0f0e0412191107070b0e01060a0806080b0d080b +10130f090609070a08060a0a0a0d08080807070706070707050201071119 +040a0d0b060606070a0103080603060606030c0505050007030707080c07 +15330d070710171c22293c362b3d42361911161a21261e1f2721242e2f26 +21241b1a221e1a26281715201e211e271d171916182024211f221f1b1920 +292e29231d2d2c2326292d382c2c362930372431363e293034403e442e34 +31292830322e34362e35372926272425282a2f32312d2e2b2d262a2b352e +1f202b4c39281c322e2b375735362c272b2d3427342f2a32343e2c2f3428 +3d573d32273d3a4348333230212f52504441374238332f2c342a2f393d42 +3435353e452d532f34413d343c332a334c57493747403e36433a3d403d41 +2e302f363e453f303f443857554246383038342d3a2e33323b333a3c453d +4a50344242484f42405141453847383f443a296d7f65636a799080847a90 +7b657c6671585e66716c777e6c676568514f523c494f3d42525c55666664 +555f5049463e332a473e1a342a2e251e221e192225201a1c1f160e111007 +08100e04030b0b100907070a10060d020a22180003060d0d0b0a0b0b0c0c +0a0607101d221d150e1e030f1731130e1414091f230e120906070d0d0606 +0d0d0a0b141c1a19160e101009080e0806100f1617130f0d140a18190809 +0907130f0b0d0c16090f0c0d160f0c101514161a12160f0d14181a0c0c0c +110f0e0f130c0f0f120f0f0a0b09120a090b040a1400070d130c0e110c14 +14120e0b091215090d0a07080c0e0f0c0a06070a0804080f090f0c0b0804 +0c0d0d16150f0e0e0e13180e0e1619130f120e0c0a0a0a0c0c0c130c0925 +1118130908100b0d0f0b0d0d0b0905090807060708090a0c0e0f0d0b0a0f +12121010121210130b0a0f0b0f1006141b1309090f12060b0f0d0b0d1010 +0b0e1317110b0808040705040a0a0a0d080a0a0c0c0c0b090a0806030208 +121a050b0e0c070707080a00010606030404020005000000000000000000 +06011230070000050a0a0f162b261b2d32262a242e3434302d3a3733363f +3f37333729323f3d3238413d3a49362c2f35272b29292d3234302f31312f +30374146433e393a3438444136363e3d473e42483d516563423c393e393a +3a3d3b35343737332b31313d433a3836302b292b333c414237404f443f3a +47454a504a584b56525d66615f6b484b4a524b4b5246514c474f3f545851 +544f48534d5253604a4a5751515a5e68756a5a62626757525d6d77675b5b +5a655b5a5966665b766a5f675d63846a5d606877735c6d6964616966686e +68766e7366626776656271595b515b58505e645b4c5c62535d565b5f6058 +5b5c63605d69655e5e656f89606b656369545f66566a786e817b666f6893 +87727277795868566d49504766616259665e62607c58657c7f8fa8baaac5 +e0e2ecf1f6ecdcca9e958a9962877c7d7a7f8a888c98a3a7b0bbc1b8b0b4 +979898979699a0a6a6977c717a7d7f6d7c75747a74646c6e73726d696e75 +7268686a675c5254626e64615f516e605a554d4e404f5449554f433f4143 +42474e4d4341424340403f393a494c3c2d2524261e2328291d181722181d +202921151e29151111181215181a141414150e0a0e17070e0f120f0a181d +130e08070c0f101113120f0c0a0a0d0f0e0c0d110a1221131407141c0b0e +1c0f08100d0c14140d0d040b12120e0a0a0b090b0c0b0a0c0c0b0c110d10 +0d080e0b0f0f10100d0b0a090b0f12100d0d0f100e0e0d0c0c0c0d0e0e08 +101601050b0d090c0a0c0b070f0c0d0f11080c0d0f070a0a0a0908070707 +090a0a080505070a0b160b0a07060605050a0c090a0c09030b0806090e0d +06000b080606090b0c0c070708090706040208080909070605050b0b0907 +0606070807080b050604060505040a0b0707070108060c09060703040a0e +0004050e0a1511151b1f2023272c3c44414044541d1721272723202d2a26 +2932322a262a1d263331252b34302d3c291f22281a212123272c2c282729 +2927282f373c39342f302a2e3a372c2c34333d34383e33475d5b3a343136 +31323033322c2b2e2e2a2329293539302e2c26211d1f273035362d384538 +312d3735393f39473a45414e5755535f3b3e3d443d3d4438433e3a3f2e41 +4740434038433d4243503838443e40494d5764594951515646414d5d6757 +4949485349484754544964584d554b5173594c4f5766624b5c5853505855 +575d59675f6457535a695855644c5046504d414f554c3d4d53444e474c50 +51494c4d54514d5a554f4f565e784f5a54525845545d4d616f667b75606a +638e826d6f72714f604d66424a405f5a5b535e575b5a775562797d8da6b9 +a9c4e0e2ecf1f7eee0cda1988c9861867b7a777c87868795a2a8b1bcc2b9 +b1b598999998979aa1a8a8997b73797f7e6f7b77737c73666b6d72716c68 +6d7471676768655a5052606f656460526f615b564e4d3f4e534854504442 +424443484f4e443f40413e3e3d37394a4d3d2e2625291f262b2c1f1a1924 +191b1e2722161f2a1612131a14171a1c161614170e0b0d18060f0e130f0c +181f15100a090e1112131514110e0c0c0f11100e0f130c1423151609161e +0d101e1109110e0d16160f0f060d14140f0b0b0c0a0c0d0c0b0d0d0c0d12 +0e110e090f0e12121313100e0d0c0e1215131010121310100f0e0e0d0e0f +0f09111702060c0e0a0d090d0a080e0d0c1011090c0e0f080b0b0b0a0908 +08080a0b0b090606080b0a160b0a07060706060b0d0a0b0d0b050d0a080b +100f08020d0a08080b0d0e0c060607080605040208080909090807050a0a +08060505060706070a040503050406050b0c0707070108070d0a07090506 +0b1101030209020e080c1317191c20242f3431303444140e181e1e1a1724 +211d202929211d21111a27251c222b27243321171a20121816171b20211d +1c1e1e1c1d242d322f2a25262024302d22222a29332a2e34293d52502f29 +242924252427231d1c1f1f1b161c1c282d2422201a1511131b24292a232d +3b2c241d2825272b273328312f39403d3d492a2d2d373232392b36312a2f +1c30352e312d28332d3234412a2a362f2e373b455247353d3d42322d3646 +50403535343f35343340403550443941373d61473a3d4554503948443f3c +4441434944524a4f423e4756454251393e343e392c383e3526363e2f3932 +373b3e36393a413e3d47453c3c414c643b46403e442e383c2e404e425751 +3c443d665a43464a4a283c2c4928342d4d48483d473d3f4063424f666876 +8d9d8ba5bebec6cbcfc7bfb0847d74834c7267676469747173828e969faa +b0a79fa38687878685888f939384675e656a6a5a67625f675f5157595e5d +5a565b625f555559564b4143515f555350425f514b463c3b2d3c4136423e +322f303231363f3e343031322f2f2e2827383b2b1c1415180f151a1b110c +0b160b0e111a1408111c0804050c06090c0e09090a0c060509130209090b +05010c120803000001040506080704010000020403000205000616070900 +091000021104010b08050b09020100000709070305060204050403070706 +070c080906010705090b0c0c09070605070b0e0c09090b0a050304030305 +060707010b11000107090508050806030907070a09010406050005060605 +040303030506060401010306050e03020000010001060805060808020a07 +07080f0c07000c0707050a0a0d0a02020304040302000606090908070605 +080806040303040504050802030103000100060705050500060207020000 +000003080000000500080103080a090a0d0f1e242120243427323c2f2d3a +373338343539362e2b2f34353a393231312b3a4c332731362837272b3134 +353333342f2d2c2e35393a39473e3844544f423f443f48444543333f3f41 +2f353a3d37303e3b37353433312f3d434147473e3d35564b403c41474a49 +414751454848524e5256545e4f53566780735a5949524d52454954484c46 +475253575f545e634a4e4f504f5c5159615b5255605d5e54455b5e5d5b66 +665d646a62645f635a5d55555c55566b646d596161525c6359636c5b5c5d +56595b5c565b515b52594e454048483751564e46645065535863535e535c +5a56555d5957565c555969616261595645616a65646765615a5b4f586a5a +6a586f695f897e5b757c705c63525c1f1c120b07142540455353531a0d15 +0c060c18431d395f7d464a626e72081a0608112018130f151a1315243034 +3132373c495b525a5a504c555d5b6f6b5f5b5e60675e606863646a6d797c +7f8b8d827d8385807a7e83848489939c90849788af919fa1a0a3969ea2a1 +b0afa59c9fa3a6adb2afbdb6b4b2aeaeada7bbb3b9c5c0b4afafa397929a +9597829ca497a0b1b7b0afc2a69a9b9994898a888b8b83897f868a976e72 +7a847f70808d726c5f606d6c686f7b7c7d7b76716d6b595c6066616b7e78 +6b6c61645c4f544c5451413a454b52635657555047424042333f3f34353f +3d302b32323b404148463d3338403a3838323c4a4c3c2f2f302c35353430 +2d2a2b2c2c2a423a2f3334352d292729201c261c1d232b17242830202f31 +2e271f1a1a1c18191a19161516170e211820151c1b1f1919141013171610 +18110f151a17120f101415110e0f0e0b0e0b0e110c0f150f0e0c0a08080a +0b0d0e0d0b0b0b0b09070501060108050f0a0103060101070e0a04040509 +050a110303100516182c1308111c252422262d354c4e636c6a6c1d283225 +23302d292e2a2b2f2c2421252a2b302f282727213042291d272c1e2d1f25 +2b2e2d2b2b2c272524262b2f302f3d342e3a4a4538353a353e3a3b392935 +3739272d32352f2834312e2c2b2a2826343a383e3e3531294a3f34303339 +3c3d373d45393b38413d4044424c3d41445771644b4a39423d4235394438 +3c36374242454d434d523b3f3f403e4b3e464e483f434e4b4c4233494c4b +4954544b525850524d51484b43434a434459525b474f50414b5248525b4a +4b4c45484a4b454a424c434a3f36333b3b2a4449433b594556444954444f +444d4b47464e4a48474d464a5a5253524a4734515a55545755514c4d444d +5f4f5f4e6761578176536d7465515a485417150b04000d1f383e4c4c4c14 +070f060007133e19355b7942475e6c71071905050e1c140d090f140d0d1a +22221f20252a37494048483e3a434b4d696a5c5a5b5f645d5d676063676c +76797c888a7f7a80827d777a7f8080858f9990879788af919fa1a0a2959d +a1a0afaea59f9fa3a6adb2afbdb5b3b1adadaba6bab4bac6c0b4afb2a39a +959d989a859fa497a0b1b7b0b2c5a99d9e9c988d8e8d8e8f848c7f898a9a +6e757a87807381917670636471706c737f80817f7a75716f5c5f6369646e +817b6e6f64675f52574f5653433c474e5566595a58524944424435414136 +37413f322d34343d42434a483f373c443e3c3c36404e5040333334303738 +36322f2c2d2e2e2c443c3135363835322f3328262e26252d33212d323929 +33333029211c1c1e1a1b1c1b181718190d20171f171e1d211b1b1713161a +19131b1412181d1a1512131718141112110e0f090e110c0f150f0e0c0b09 +090b0c0e0e0d0b0b0b0b09070501060108050f0a0002050000060d090303 +0409050a11050512051615270c0006121b1a191d252a3f3e525b595b131e +281b1926231f24202125221a171b202126251e1d1d1726381f131d221423 +14191f22222020211c1a191b21252625332a2430403b2e2b302b3430312f +1f2b2c2e1c222528221b28251f1d1c1b1917252b292f2f26231b3c312622 +262c2f312b31392b2b28312b2c2e2e36292b30405a4d363529322e33282c +372b2f2728323031392f3b40282c2f302e3b303840392e2f3a37382e1f35 +3635333e3e353c423c3e393d34372f2f362f30453e47333b3e2f39403640 +493837383134363731362f3930372c2320282a19333831294731412d323d +2d382f38363231393735343a3335473d403d3530203a433e3d403c383130 +282f412f3f2b433d335c512c484f45333d2d3d0203000000000921243032 +3c0800010000000028001c405c252841535c000500000010080100030800 +000e171815161b202d3f363e3e34303941425b584b484a4d534b4c554f51 +565a65686b777b706b71736e686e73747479838a786c7d6e957783858486 +798183829190898283878a919693a19997959191928a9c959ba7a4989395 +877d7a827d7f6a848a7d86979d9697aa8e8283817d72736f6f6e656d636c +707f545a606a6154616e534b3e3f4c4b474e5a5b5c5a55504c4c3d42484c +4951665e5352494a44353c34403d2d242f333a493e3f3d3a312e2d2e1f2b +2b20212c2a1d181f1f272c2d3430271e232b2523231d273537271a1a1b17 +1f1d1e1a1716171818162e261c202123201d181b110e170e0d141b081217 +1e0e1c1e1b140c0707090506070603020304000b020a0108080c06060400 +03070600080000030a05020000020500000000000100020502050b050402 +030101030406040100000000000000000000000003000000000000020905 +00000001000007000007000e0e2106000009110e0a0c12182e2e424b4749 +2c373c2b2d40392a3937373835302f32343031363937332e283729272c34 +2a332e303233343332314a46403b3c3f4244332e2b2f3535343737313636 +3f4436352d353441494a453a463e3a3b3d3a393a393c3a41454b51474d44 +3d3f454848474744453d47404140515b6858524d667883765652535d4f4f +494e5d4e4a444c5c645c5d5d6462546063574c575a6c6c63665964626c73 +67807e6c66798170625d4e62625e5b6d64536b655068676b585a5858656a +5f5d5e554a4f4a585d655a5c606b5f61554f47474c4b3c59434d5e696f53 +566465875c4c4b5d636e696f5f585b5e69636f6a65567f70745e676f625f +585f627683757e6c7b65637d7d68898d6f82796045170f081411204e647b +7264501b0b110d0a0b120808170721191e07111b06141b0d06060b070709 +0c0708111014131115141b28121a1c13101417101d292b2314040a061924 +190e11090a0808141b110a0a0f0f160e090b171f2321110c15112210171d +181e181c1f202b272721252a2c2f322a433d3d3e3c3b3a31464c524d5d79 +744c51474657657e6d96966e646c7d816f768c7d817c7964615b7170657e +80968f95959598abada0a2a59f9e9397a7a095a0aeb0b2b2ada7a29f9397 +999d9a9faeaaafc0abafb6acb3aba58997a8979fb2a2d1c8bebcbdbbb3ab +95898ea3aca6a9b7babab1b1ada5a49cad958f918890a5aa919fa3989298 +9b989293938f8a87898a958b9e90899586818e86878b7e7b85787e85917d +90929e908d908f867b7474788084898d8c898785888f747762676c807e7f +7a6f696c747a7371747977747c8877868c8176767c7f776a6c695d636d66 +5e5a565253575d6165646364676b6f72655c615468637069716e6d605756 +5e595a5754565155674e50574a50464b2a161b2128282a2f3d4b5f48585e +5657222d322123362f202f2d2d2e2b2625282a26272c2f2d29241e2d1f1d +222a202b262a2c2d2c2b2a29423e38333235383a292421252b2b2a2d2d27 +2c2c353a2c2b252d2c3941423d323c34313234313031303331383c3f453b +41383131373a3a393b383730372f302e3f4953463d3b546673674743444d +3f3f393e4d3e3a343c4b514a4b4b5351455153473b464759595053475250 +5a61556e6c5a54676f5e504b3c50504c495b524159533e56555946484747 +54594e4c4d44393e39474c54494b515c505246403a3a3f3e2f4c3842535e +6044475556784d3d3c4e545f5a6050494c4f5a54605b56486f60644e575f +524f474e526673666f5d6e585670705b7c8064766e553c0e07000c0a1947 +5c746b5c461202080401030a010110001a1217000b15000e150600000200 +000001000004000100000001061500070700000102001525251f0e000402 +1320130a0b050402020e130b010306080d0700040e181a1b0f0c130f200e +131c141a14181b1c2523262123292a2e2e293f39393a3837342d424b4e4c +5978734b4f474457637e6d96966e646c7d8172798f80847f7d68655e7270 +657d7f958e94949497aaaca0a2a59f9e9397a7a095a0aeb0b2b2ada7a29f +9296989c999eada9aebfaaaeb5abb2aaa38795a6969eb1a1d0c7bdbbbbb9 +b1a993878ca1aaa4a7b5b8b8afafaba3a29cad968f928891a5ab91a0a399 +92999b989293928f8887878a938b9c9087958481928c8d9184818b7e848c +97849799a595909391897d77767b82878b908e8c8988888f7477626a6f82 +80817c736d70787e7775787d7b78808c7b8a90857a7a808176686a6a5e64 +6e675f5b575455595f6366656465686c7073665d62556964716a716e6a5f +54555a58575751564e55654e50574a4e4244210c11171c1f1e2635404f38 +474d454618232817192c251625232324211c1b1e201c1d2225231f1a1423 +1513182016201b1e202121201f1e37332d28282b2e301f1a171b21212023 +231d22222b3022211a22212e343530253028222325222122212422292d31 +372d332a23242a2d2d2c2d2a2a20271d1e1a29313e2e28233e505c50322e +313d30302c31402f2b252d3b40363737413f323e43372b36384b4b414233 +3e3c464d415a56443e5159483a35283c3c3835473e2d453f2a4241453234 +353542473c3a3b32252a2533384035373e493d3f332d27272e2d1e3b2630 +414a4b2d303e3f61382827393f4a474d3d36373a453f4b443f2e56474b34 +3d4538352d34394c5949523e4e38364e4e395a60485e58412b0000000000 +0734455a4f453c0b00010000000000000000080004000007000209000000 +0000000000000000000000000000010f00010200000000000a1919130200 +000007140700000000000002080000000000040000000710130f00000000 +070000000000000000000b080a050a0d1112150d261e201f1f1e1c14272d +33303e5c572f362d2b3d4a64537c7c544a526367575e74656964624d4a41 +524e435e607770767876798b8d7e80837d7a7173857c737c8c8c908e8b83 +807d74787a7e7b808f8b90a18c90978d948e8a707c8d7a829383b2a9a19f +a2a09a927a6e7388938d909ea1a19898928a8982917773736c72898c7581 +877a767a7f7c767776736f6d6e707a7183766e7b6b67797273756a657162 +686d7b65787a86777578796e655c5e606a6c73757671716d6e755a5d484f +546a6869645a565761655c5a5d62605d6571606f756a5f5f656964595b5a +4e566059514d4947484c525556535453585a6061564b52435952615c6766 +635a4f505753524f4a4c45495942444b3e42393c1a03080d10101015222e +3f28373d3334332a2f30302e272e2728292b2c2d2f323436393c3b363438 +373a3a4036403d38413d3a3a3b3a3632413e3934323234353536362e292e +3639312d2e2a2f3a38322f32313438374038433a36393d3d404545423e43 +44484f424843424a4f4f4d4d4d4d55565f4f525f6b7784546e7ea391696b +595456584e55524e584946434b524b55535d5b50565b6a63595852605f5e +6f5d65616a756775606e76675c5f62614e60605b556861526465555a5d5c +6162726f62606e6b5c59585b515b5f685a59526c6762514e4b4c4b435997 +41495745876161675f82667268756f7270796d6c6d625f7481636e6e616a +6e706f59767b6f878b917d818d849776858e876c757e557670513111110e +0a1126516479684b35140b0c0c0f0c0d0b09120b11080f110c070d071009 +0c140b0c0f0f1010120d06080c0b0f0606040604070508070706060b0a0c +0c09110d070d07070e07080a0e0a090b100e0b070f0d0c0a0a0909080c0b +0c0a0c080707070c0c0c0c0c110b0604070a07080a060b070a0e0c0d0c07 +070b11060721220607080804060f042737130503111b0908090106060a01 +0103070a061e1e2c160f0d0d0b181f18150c0a0e080c190f061011100e0c +0b0e1215121511130f0d140d080d0a150c142d0d081a1017352307191510 +101a2626190b1127240b0c24230914150f1417161b171e13222f241e231e +2125282a2e3436352a2c302d2d2b31322c252c2b2c52474f302b2f382f2f +3a2c32313d2f423d483e383c3f3c3531333731353b3f3f3e3b393b494359 +41301e2832322f251c1e283136373d423e3b46562e3c423c3c4b606c6352 +4a3d231c1d111d19151314171b1d2022232325293136463c3f2f4039443c +35313534291f1d1b211f1b211e283f2b29262323222424222927292f363c +4a5851444c4644532920252626241d241d1e1f21222325282a2c2f32312c +2a2e2d3030362c3633303937343433322e2a3936312c28282a2b2b2c2c24 +1f242c2f2723242025302e28272a292c302f362e39302d30343434393936 +3237383b42353b36353a3f3f3d3d404045454e3d404b57636e40586a8f7f +595b494345473d44403c463734323a413840414b4a3f454a595248473f4d +49485a48504c556052604b596253484b4e4f3c4f4f4a4457504153544449 +4c4b5051615e514f5d5a4b48474a404a4e574948435d5853413e3e3f3e36 +4c8a353d4b3a785252585073576359666063616a5e5d5e53506572556060 +515b5f61604a676a5b73767d6b707c738665767f785d666e466963452707 +080502091f4a5c715e432a08000000040102000007010700050803000400 +0700020a0000030301040402000305060801000000000000010200000004 +010503020806000600000500000105010002050500000404010100000000 +050705030501000100040404040407030000000400020100020001060304 +020000050900001b1c0000040100000b0023351103010f1907060a020707 +0b0202010405011818261009070705121913100603070105120800090a09 +070504070b0e0c100c0e0a080f0803080510070f280802140a11301e0214 +100b0b15202013050b211e05061e1d030e0f090e111015121911202d221c +211c1f2326282c32343327292a2a28282c2f27222728274f424a29242831 +282833252b2a36283b364139353b3e3b3430323630343a3e3e3d3a383846 +4058402f1d27313330261d1f293238393f44403d4858303e443e3e4d626e +624f473c221a1b0f1b1a161415181c1e1f21222224283035453b3e2e3f38 +433a332e3131241c18181c1c161e1a263b292724211f1b1b1a151c1b1b23 +28303e4d41333b3533421f161b1c1c1a131a1314151718191b1e21232629 +282320242326242a202a27232e2b28282827231f2e2b26211e1e20212122 +221a151a22251d191a161b26241e1c1f1e2123222a222d241e212525262b +29262227282b32252b26252b30302e2e302f35333c292a333f4a57274151 +77674244322f33352d34322e382926222a31272d2d37362b333847403635 +2e3e3b3a49353d39404b3d4b36444a3b30333639283d3d3832453e2f4142 +32373a393e3f4f4c3f3d4b48393633362c363a433534304a4540312e2d2e +2d253c7a252d3b28633b3b41395c424e44514b4e4e574b4a493c394e5b3b +4645373e4244432b484e435b6165535662596c4959625b3e475431585337 +1b00000000000f38475a4530240800000002000000000100000000000000 +000002000109010005030404040000000000020000000000000000000000 +000000000000010000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +0000000000000000000f1000000000000000001828040000020c00000000 +00000000000000000008081802000000000209000000000000000c000001 +040101000000050400000000000000000000000000001500000400011d0b +0000000000021010030000110e00000e0d00000000000100050005000b16 +0d050c050a0c1111171b1f1e14181a191515191c140f1415143c2f371914 +181f181623131917241528232e2622272c27221c20221e20282a2c292824 +25332d442c1b09151f211e140d0d19202323292e2a2732421a282e282837 +4c59503e362a100b0c000c0a0606070a0e100d0d100e12141e2133272c1a +2d24312b2725282a1e151411161510150f192f1c1a1714131112110c130f +10151b202e3b31212923213032313b38302c2b3935363636393e3f3e3739 +353539332d2f3530343b2934392f342b282d32302c2b393a3a3a39373636 +313334302c353c3634363c393233332c3838393839374841413b383c3f41 +474c454348565659625649464a4e4f4c4c50524b484a5f585d6d6a65765d +8f8d946b56554a494f4e495255464c444a4d504d4b584c545a5b614e5d5e +5c5953605a5e786b6a5f5e66606766696d6365716d6765645b5c51545053 +625c534a5558655e646858566c67586069675a585a5e56554f6560625a5b +544e504a49643b3c4757dc8b6b6e6b78576175705f5f636058656264586c +6f596f706b61768287726e6b777b768164636b6c615a786e6a696e75515c +6441330a120c0915364965676249180b0c0a0b130f0d1013130e0b0b0c0c +08100c120d08100c0d0f15110b0f0f070c0a0603080706090c0504070a07 +070b090c070a0c090c070c10090e100a0d0e0f08080e110d0a0c080c1114 +120f0d0b07060d060e0b1109080b0b09090909070d0a0d0c080a100f0e0a +0c0e0c0e110d160a0b120d07070d0d12100d061006160603050304080406 +0801040608060c0b0b0e0711090e0707090e080b0d0b0e07090d090b110b +071109090909090b0e100c0f080c0d090c070c130d0d090f1b0714070710 +0b0a0c070707070d12130e090b07070a0c0a0b110d0e07090b080d090d06 +090c06060a0c08060606080806060607080807080b0d060a060606130610 +090a0b140f0f160c0e0a0e0a130a0f0b0403070703030304040405050506 +0606040b041a1005030f0807040101020405010105080a05080b0c0b0801 +030107080d070b0c05060b04060707050704050403030706040306080f09 +0d030c060e090504090f0c05090a090507070711241c1a13181b1919262b +312d2d333c444c514a4d5b6467612827312e2622212f2b2c2c2c2f343534 +2c2e2a2b2f2923252b262a311f2a2f272c2522272a282423313232322f2d +2c2c27292a26222b322c2a2c322f2829292230303130312f3e3737312f33 +36383b4039373c4a494c55493c393a3e3f3c3c40423a37384d4349575450 +60477977805744453a393e3d384144353a33393c3f3a36433a42484a503d +4c4d4b48404d44496356554a49514b525154594f515d595553534a4b4043 +3f42514b42394447544d535747455b56474f58564947494d454440565153 +4a4b4741433d3c572f303b4ccd7c5c5f5c69485266615050545149565355 +495d604b61625b52677378635f5a63655f6b4f4f56584d46665d59585d65 +424f563326000703000c2e415c5f573d0d00000000070301040707020000 +010100060106010004000103060200000000080b05040708050a0b060308 +090806080102000002000200020600040600030404000003060200010001 +050906030101000004000401070000010100000000000502050400000605 +04000204000305020c00010803000003050a08050008000e010000000105 +01030501030607060b080405000800050000000500020402050000020000 +0600000600000000000003060206000304000300030a0404000612000b00 +00070201030000000004090a050002000001030102080405000002000400 +04000306000004060200000002020000000001010001040600030000000d +000700000007020209000100010006000201000004040000000101010202 +02030303000700160c02000c0504010101020405020203090806060c0a0c +060201020506090407090104070204050505050403020102040501020307 +0c080a0209050b060100020b0501020602010003010d1e1917101515110f +1a1f231f1f252f373f443a3c4a5356501e1d27241c18172521222222252a +2b2b2628242226201a1b211c1e25131e231a2119161b1f1d191826272727 +252322221d1f201c18212822202228251e1f1f18252526252422322b2b25 +202427292d3229272c3a393c45392c292b2f302d2d3032282524392e313f +3c35482f615f673e2c2e23222a2b283134252c23292c2f292330262e3436 +3e2b3a3b39362f3c363850434237343c363d3c3f41373945413f3f413839 +2e312d303f3930273235423b414535334944353d44423533353931302d43 +3e403a3b3630322c2c471f202b3ab86545484552333d514c3b3b413e3643 +3e3e32464931474741354a5459443e3e4b504d563a374140352e4e433f3e +434c2f3f4b2a1e000100000323344b4c432d090102000109050104070702 +00000000000400060100080405070d070305050005050100030201040700 +000205020203000000000000000000040002040001020200000004000000 +000005070603010000000500030006000000000000000000030003020000 +050303000102000105000a00000601000002030806030006000c00000000 +000000000000000002000601000000010000000000000000000000000008 +04060c06020c040404040406090700000000000000000003000000000b00 +060000020000000000000000040500000000000000000001000000000000 +000000000000000000000000000000000000000000000000000000000000 +000100000000000000000300000000000000000000000000000000000000 +0000000000000000000d0300000300000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000001120a08000405 +04030e13181414181f272f332a2a3841443e2d3944362e36373b3333302d +3035332e2a2e2a2b373a3435353533392d3638373b32333f453f3c403738 +393a3b3a39383430353a393f443e393236413c3638323532373537303e31 +484648494b4d505258555b6454474d424b4d545a59565c655c574b456160 +606977677a7f9d7d70575a534d4f5552535b5c505c5558595e595e5f5b5a +616b655154565756596b5f6467666661626e7472666a7e7c716b6775685e +545d5659596576635f55575c5f505e666363696058606669665e64646769 +6a6d5e696b6a5c565943444d3f4552645f5b6d5d4c605d626c6f6e72816f +5c5c515e5556555e686165547d7162635c796855566c635a61625d6a745f +59616664625d65422e0d0f0b0d162b33473b3324100b100c0b100b0c100b +090a1113110b0e071810071a08100a080c0e0a0e130b040607050b080706 +0d06060507030508080e0d1210090d0a0a0b070b0a0a120d0b0d11110e0b +0e13150f0807070b0e0f0f0b12070d080e06110d0f0e0d0e0b0d0b080a0b +06080c0b0c090c0c080a0e0d0a100c070a0f0c070b0806080a0d0606080d +11110c040807090807080306080508090607060d1115090e090a07060c0b +0a0c0c0c0c0c0d0f0d10131513100c0b0b0f080c100d100f070f07070e0c +080e10080d110b090b080f0e0b080808080a11100f0e0c09080a0c0e080b +0b080c0707090d0e0b0807070a08070a0d0d0c0b0a0a090807070808060e +0b0e060e060a0a0b060909060a060b070806090606060808080806050505 +0907050404050606060a06100f0404050404040306060403040405050705 +0403040304060a0a09060406070908050604040405050604040404060b09 +0905060406040604060408070c060807070609070b080d0607090f172721 +25322b3132313b3f3d39414d504956625f605f4b232f3a2c242c2d312929 +2623262b29241f231f202c302a2b2b2b292f242d2f30332c2d393d373438 +2f30313231302f2e2c282d3231373c36312a2e39342e302a2d2a2f2d2d26 +34273e3c3c3d3f4144464b484e5744373d323b3d434948454b544b453933 +4c4a4a515f4f626788685b4348413b3d43404048493d494245464b46494a +46484f5954404345444344564a4f5251514c4d595f5d52566a685d575363 +564d434c4548485465524e44464b4e3f4d555252584f474f5558554d5353 +56585b5d4e595b5a4f494c36374033394659504c5e4e3d514e535d605f63 +72604d4d424f4647464f5a5355456e6253544d68533e41574e454c4d4855 +624d474f5454524d573421020400040d20293d3127170500050100050002 +060100000608060104000e06000f00030000000100010600000503040707 +030509050204030201040006050a080105020203000302020a0501030707 +040104090b05000000010405060209000400050007030504030401030200 +010200000303020002020000040300060200000502000200000001040000 +0008090c070003020405030500030402000100000005090d010601020000 +040100000000000001030104070907040000000400010502050400040000 +030100030300000400000000030200000000000004030201000000000002 +000000000000000003040100000000000000030302000101000000000000 +000502050006000101020000000001000200000000000000020202020000 +000003010000000000000001000706000000000000000102000000000001 +020100000000000205060401000000020100000000000002010100000002 +040502010000000000000000010006000001000000000201040000030711 +221c202b222526232b2f2d293140433c46514c4d4d39192530221a222327 +1f1f1c191c211f1b191d191a2627212221211d23151e20202620212d322c +292d2425262727262524211d2227262c312b261f232e2923251f221f2422 +211a281b32302e2f313336383b373d4634272d222b2d333938353b443931 +251d373332374533484d6d4d402a302b25272f2c2f37382c3a3134353a35 +363733343b45402c2f3133323345393e3f3c3c3738444a483a3e5250453f +3b4d423b313a3336364253403c3234393c2d3b434040463d353d41444139 +3f3f4244484d3e494b4a3e383c262730232936473b354737263a393e484b +4a4e5f4d3a3a2f3a3132313840383b28514534352e4c3e2c30443b303938 +33404c352f373c3d423e4c2b1900000000081a203325190e030409050409 +0403070202030a0c0a0203000d070013000a0402080806080d0400010200 +060302010801010002000001000403080600030000010001000008030001 +0605030003080a0400000002050609050c01070006000804060302030002 +030002030000040103000301000005020005010000040100030000000205 +000000040708040000000100000000000100000000000002070b00040000 +0000010000000000000001030104070907040001060c05090d0a0d0c040c +04040b09050b0a02070b0503030007060502020202040b0a090806010202 +060602050502060200000405020000000100000104040304060605040303 +020200060506000400020203000103000400030000000100000004040404 +0201010105030100000102020004000a0900000100000200050303000000 +000000000000000000000203010000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000 +00010f090d19131718161e22201c2230332b363f3b3c39252c29302f2e30 +2d353635322f343a37302a3b3c343432333e333c3435333730383c343845 +473a363d3e3c38363637393a383038403a39403f5a382834342c312f3630 +34333a384b3d4d4f5352525354534f4d565e4837413d51545c5e554c4e58 +3b515c5a7273767a8680857d7763676b67676c6b645966795b576c60534d +55575859716e625e525854595b524f5f56626972777c8086857170768478 +73796f6e6c685c605b63606460535f5e52595e5c655f60676a6b6b6a6c73 +78686a5e62627773616c6459525b474d3d37435155956e585e595a696968 +5058554c666157505b554e5355695f5f6c6a747767616d7379717c74706a +7b6e73746c71716062665d5c5f4116150b0e0c110f252d290d080c080f0c +0b0c090d110a0e090f060b0d100c0b0c0a09160713090c110a0a100e0b0f +0c090b0a0a0e0a0c0d0d0c0c0d0e0e0c07090c060e0a0b0a0b0b07091406 +0b0d0b080b100e080b0e10110f0d0d0c0b070b0e090c0d0c0b070a0c0d0d +080a0c080d100c0c0c07090a10110c0c100e080d0c0e120b07110d09090f +0d060e0e0c0a070a10081107070c0c0f040d0b060b0d0d0b0d0b09060b0c +080d0d070c0b090a0e0e0c0f10090d0d0d0d0c0b0c0c0f13090a0c07090b +15070c1308090d0d0a110f0d0e0b0b140c0b0b0c0d0e0d0c08090c0d0b0b +0c0c090d0a0e0e0a0e09080c0a070b0c0908070a0c090708090809080707 +080a0a0a0a0d060609060a08090b060409040a070706070608090a070705 +04040506060606060607070706050810060606060a040606070706030609 +070a0c0606060a090a080c0a0a05090e090c0a070a0806090d0a0b090c0d +10121212131517171716141b1e1d1818181915171c1c1a1f1f151c1f2f2f +37454961585043524252473f48524d3f455c5d4f5d836f524a42221f2625 +2426232b2c2b28252a302d261f3031292927293429322a2b2a2e2731362e +323f3f322e353634302e2c2d2f3030283038323138375230202c2c242927 +2e282c2b302e41334345474646474847424049513827312d41444b4d443b +3d47283f4a455c5d5e626e686d65624e525755555a59524753664844594d +403a424443445c5c504c41474348483f3a4a414d545d62676b71705c5c62 +70645f655b5c5b574b4f4a524f534f424e4d41484d4b544e4f56595a5a59 +5b626757594d51516863515c5449454e3a40302a3745498a5f494f4a4b5a +5a594149463d575248414c463f44465a50515c5a646758525e62645c6761 +5b58695c61625a615f5052554e4c5133090800030207041a221e00000200 +05030103000407010300040000040604010400000b000800010600000503 +020603000201010501030404030304050506000303000504020402050003 +0b0003030100010604000104060705030303020102050003040302000002 +030300010302040703030300000006070202060400030204080100080400 +00060400050504020002080309020007070b000906010504040204020000 +020300040400030300000303010405000202020201000102040800000100 +00000a000108000002020004020001000007000000000001000000000000 +000000000001000201000100000100000001000000000100000000000000 +000000010101010400000000020000050000000001010000000000030101 +010000000000000000000001010100000007000000000100000001010000 +000301040300000001030102030401000006010500000000000105050304 +04080b0d0b0b0c0e1010100f0d141716111111120d0f14141217170d1317 +27272f3e425a51493c4a37473a3238423d2f354c503f4c725c3f38301815 +1c1b1a1c192122211e1b2026231d192c2b232321202b1f281e1f1b1f1621 +282226333427232a2b29252322232526251d252d27262d2c472515212119 +1e1c231d2120242235273739393838393a37322f38402817211d31343b3d +342b2d35172b343045454648524c51494733373e3f3f44433e3342553733 +483c2f293133323149483c382d332f34372e2939303a41484d52565c5b47 +444a584c474d43464745393d38403d413d303c3b2f363b39423c3d444748 +4847474e534345393d3d5553414c4439343d2a30201a273539784a323833 +344345442c343128443f352e39332c313345393743404a4d3b354148514b +5650484455484d4e464a49393b413b3c442800000000000502161c180000 +010006040204000508020703080004070501000201000f000e04070c0505 +090703070401030202060204050504040506060600030400060403040305 +00030c000101000000050300000307060604040405050708030607060500 +0103040400020604070a0604040001010706030107030002030509020009 +050103090700080602000000060007000004040800060300050505030503 +01000504000505000401000001010002030000000000000000010a100607 +090406081204091005060a0a060b09070805050e06050506070807060203 +060705030404010502060804080403050300040502010003050200010203 +050405030406060404050000010000000105000001000201010001000203 +040303010000010202020202020303030201020a02000200060004020503 +040004050104040000000203020204040200010400000000000000000301 +01010205080a050306060a080a07070c110e0b090b0802020707070c0c02 +0a0c1c1a222e32483e36293725352a2229333022263d40303c604b2e241c +2b2f2f29272a2d2e3c36302e3133322f3940342c35362f3338403d373b3f +3f3f373d3c3738383d473a3a3a2f2f39393a37383738404641362f2e292d +2d3b2e3631433244424f454a4e52494d4c5c56525260504d57626f68826d +5f655a62625f607e6c707882817d7a95968d7c7d6f857a6c646d656b6578 +6c6e826a6878646f706c77736c655a65656e5c52556559647c735e6e7262 +6b615e505e5a6271646b7061707771635363675d535053565757625a554f +4e46595b54536358575c68516264666056565754564545464951535b4d4f +5b59607570735b5e545a665f5e626c52545f686d476064666776766f6653 +656b656c5b5a5a585d684b645f646b6c59677a4725180b0d0d0d0f0f110a +17080c0a090c10040c0a090c0b040e08080b080d080e09100c0c080e080e +0c0f060d0e0c160a100d13100d110a1310130a0e0f0b06080a07060e0c03 +0b0c040f080d0a0e0b0c090a11060c0f09100b0c061109060b09060b060a +0a080a1506190d08090d041207050c0906100f0d080c0b0b0c0a090a0b0c +09070c040e0a050f04060a0c0e0c13060b0e0d0e06160609080f09050906 +1104070c060611040b0c0b060b0f070b0d0f08140e0d0e090b0d0a0f0c10 +070c0b070c0b0c0c090d0e0c09080e070c0f07070f090f070c0a09071209 +0c0d070f07090b0a09111307090d070e08080f08080f0b0d080d0a070c0d +0a090d080909081114081112161a0d0911080612140b1f100f1b1419140d +1a1226231f2e2a2113202020161b172318242517241e21252d222e23282c +1a1a1d28242e25312b272c2c332e3535344843344339403d3833262c252c +362b2a35393539352c34473e333e2a393423352a2b34342b2f272f3a3739 +3c373b415f463f392f34312e404e414c434b424b41443b3a33433e4f7c9d +8581232727211f222526342e2826292b2a2630372b232c2d262a3038352f +34383838313736313030353f32323227252f2f302f302f30383e392e2726 +21252533262e2739283a38453b4042463d4140504a464550403d47525f58 +715c4e544951514e4d6c575b626c6965627d7e7566675b71685a525b5359 +53665a5c6f575565515c5b57646059544954545d4b414252444f675e4959 +5d4d564c493b4a464e5d50595f52616862544454584e444144474848534b +46403f374a4c45445449484d59425355575146464a47493838393d454750 +3e404c4a516661644c4f454b57504f535c42444f585e385153565766665f +56435358525b484949474c573a554e555c5d4a586d3a190b010202020404 +030009000405010708000405010702000502000601090109010803030005 +00050306000302000800020005020003000502050002070701040503010a +07000608000b030802070305010209000407010803040008030205030005 +00040400010d001105000309000c01000604010807050004030304020102 +0304010004000804000900000002030209000106030600110004000a0300 +03000b00010600000b0005060500010500010305000a0403040001030005 +020800040300040304040105060401010500030600000600060003010000 +0900030400060000020100080a0000040004000007000007030500050200 +0405020105010102010a0d010a0b0f1407030b02000b0b04160906140b12 +0b06110b1d1c1827231a0c1919190f14101c111d1e101b15181c2419251c +2125131316241d271e2a222023252a272c2e2b413a2d3a3037342d2a1b23 +1c232c24202d2f2d312d232b3e352a3521302b1a2c21222b2b23251e2631 +2d2f322d3137553c3530262b29263843363f333b313a2f322b2a23332d3e +6b8c7470181c1c1614171a1b29231d1b1e201f1d2932241c25261d21252d +282224282628232b2a2525252a342727271c1b252526242524252d332e23 +1c1b161a1a281b231d2f1e302c392f34363a2f3332423c363540302d3742 +4f48614c3e443941413c3c5842464b54514b4863645b4e4f425852463e47 +3f453f5246485e464454424b4a46534f48423742424b392f3141313c544b +3646483841373426322e364538434b3f4e554f413141453b312e31343535 +4038332d2c243739302f3f343338442d4042443e36363936382728292d35 +373e292935333a4f4c4f373a3036443d3c404c32343f484b253c3f3f404d +4d463c2a3f474149373737353a4326403a40474835435c2a0b0200000000 +020202000800010100030500020200040300060200030000000300060404 +020802080407000402000800020005020003000502050002050400010200 +000704000305000800050001000000000600010400050102000905030705 +020500040400020b000f03000308000c0100060100060502000101000200 +000001020000020008040009000000000100070000030103000d00000007 +050105020d00030804020d00070807000004000002040009030203000002 +000300050001000001000101000203010000000000010000010001000000 +000004000000000000000000000003000000000200000400000400020002 +00000102000002000000000205000201050800000000000102000d00000a +040804000a011614101f1b1204111111070c081409151608140e13151f12 +20141b1d0d0b101b171f16221b181c1d231f2526243933253329302d2925 +171e171e2a1e1e2a2d2a2e2a1c22372c232c1a27241125181b222418190f +172221232621272b49302921171a1611232f222c232b212a21241c1b1624 +1d2c597a625e272b2c2723252a2c2f2d2a292a2a2a293128272d2f2f2f2d +3c3c38383d3b373a3635303037352c2a352d282f3432343633363a3b3834 +343636332d30303b2f3934464440433b424a4c4a4343434c4c4e5962575d +6d798b8dc990646a68695d575e6d65778b9588866e72767b896e6167544c +4d59535347545b616d55525d4849473e494c5158596656655b5c5b60585a +665d645e55666b5957575e5f626664634b5460595050515871614e464b53 +56535b544f4f574d56516b5151505354635c66686b727b7a68594f515853 +525a5e69677f735e5055625578676b697165575f6557565f6456576a6266 +696c6b6471706b5e656061655e5a555b596c58565e5a5e717d67361f0d19 +0b0b08101113160d0a0f090705040b05100c04080b070b04120f0e070a08 +050c070c050a070b040c0b0c130d11110f0a170a0e160a0e1708040c0a03 +030c0c09060a0b03050b030706110706130a060f090f0c0808090a100a08 +0809050509070a04060b10060d0a0d09030509080908070506060d0d0d09 +07080a0a090a0b0d0c0b060709090a08080e0a090c100d0c0b0f0e07130b +0d080f0d1505060a0e1014070e100a0f101608130b1607150f0811081117 +131617111012110915130f1b1d15180e17150f251223131f221d0f130c11 +261d162f141e23321a261c24373b2b323f292c2523222224242728382821 +242b2c31414b47422e3c382c3e2d2a412e586472605850594d4c4a3a4758 +56535246333d3e3942434759695b414c3a444f474647424b4b434f3f423c +3737475a413d3132394037333b3a343b3d3738315c472f394a514f3b554a +4d3747323a33372b41492a2d483e2d335a3d1d1230273437403238383f47 +46505b54494d4a3739405c4d4239282b2e27414e3e434131303f3f40454f +4f58523f3c4846591f23241f1b1d22242725222122222220281f1e242626 +26243434303036343033302f2a2a2f2d24222d2520272a282a2c2b2e3233 +302c2c2e2e2b2528283327312a3c3a3639313840403e3737374040414c52 +474d5d697b7db87f535957584c464b5b5062757f706e565a5e65735a4d55 +423a3a4741413542494f5a423f4a3536312b363b4047485545544a4b484d +434551484f49405156444242494b4e5250513a45514a4141424962523f37 +3c4447444c454040483e47425c4242414445544d57595c636b6a5b4c4244 +4b46464e525e5870644f4146534669585c5a625648505547464f5446485b +5155585c5a5461605a4d544f50564f4b464c4a60494a524e4f62715a2a13 +030e0000000403050802030b0503010006000b070003060206000e0b0a03 +060300070207000502060004000005000303010009000008000009000009 +0700000909060307080002080002000a00000c0300080208050101020208 +050404050000040205000003080005020805000104030403020000000606 +060200010303020203050406010204040503000300000105020100060500 +0a02040107080d000005060b0c02060b020a080e000a020d000c06000800 +080e0a0d0e080a0c0b030f0d0915170f1208110f091f0b1c0c181b16070b +04091f160f280d171b2a131f151d3034242b3822251e1b1a1c1e1e212232 +221b1e25262b3b45413c283632263827253c29535f6d5b534b5245413e2f +3b4c4a47463a2731322d363a405462563a47333f48423f423b46443c4837 +3a342f2f3f5239372b2c333a312d33322c33352f3029543f273142494731 +4b40402d3d28302a2d22384021243f35252b5235150a281f2c2f382a3030 +37403d47524b3f43402d2f36524339301f22261f3643313632221f2e2d2e +353f3f48412e2b37354814181914101217191c1a1716171717172118171d +1f1d1d1b292923232624202322231e1e24221917221a151c201e20222023 +27282521212323201a1d1d281c262032302c2d252c343432292929323231 +3c42373d4d596b6da86f434947483c363a473d4d606858563e42464d5b42 +353d2e2629332d2d212e353b49312e392627231a25292e35364333423839 +373c30323e353c362d3c412f2d2d3433363a383b28323e372e2e2f364f3f +2c242931343139322d2d352b342f472d2d2c2f303f38444649505b5a4a3b +31333b36363e424c43594d382a2f3e31544347454f43353d453837404436 +35483f414445463d4a49463b423d3e433c383339354a34343c38384b5b47 +1a0500080000000403050800000200000000000005010000020002000300 +000000000003000400010002000100000400020200000800000700000800 +000402000004040100020300000300000002000004000002000200000000 +000502030302000001000200000005000200050200000100000000000000 +000000000000000000000002010200000101020000000000000100000001 +00000500000004040a0000000305090003070006050b0003000600050000 +010001070306070000000000010000070901040003010011000c00080b06 +000000000f06001800070e1d030f030a1d2111182610150e0e0d10121215 +1626160f12191a1f2f3935301a2824182817122916404c59473d373f322f +2e1d2b3c3a37362a1921241d2829304152432a34232c382f2f2f2b33342c +382a2d27222232452c271d1c252a231f26251f262822231c47321a24353c +3a2541363723331f272124192f371a1d382c1a1e452808001b121f222b1d +23232a302c36433c33373421232a46372a210e11130a222f1e231f0f0f1e +1f2026303239311c1925233625292a262223272a2e2d2b29292a2d2f3624 +2b393433373134302c323a3631373a3b353032302e3231302530332b3637 +312b2d35393532342e2d2f3637392a323043413a3a313a424a46443e413f +4343464638383f3c41433f41434b41494b4d4645455566664f535450555c +815b6057514a4f575250454e585e5c47465148464b454d52595b565b5360 +555b57596361574463534978848148545355514b4d433a4a4e483f3f4846 +5252504f52544d43655e534d574e5b5f645a5c575c6875686c6758576a72 +6966546166595a6363716d7f656c654d6551725d7465635d515b64665955 +5a4a614f5c5e645f655a72795f5c826d645e5b695a4f5e7267686b5c616a +747862371d1112140f130d150b0f08100c0f0d0f1511050d101b110b120b +1011160d1e110d0f0e130a0d090d060b0907050e0b1414120a10160f0c0b +1211131414171e150a060a13090c1419082224141012171c191a10171411 +191e170f1216171e1913251c2026251a0e19161c1a27291e252a1c181f23 +2029282a242c2627282a2a261f19223123232b222b2834362421283e352d +2a3226281f2325423d353838353b3523363f48374f483f40445341593447 +494b4c3b41473832362e323441314b483c4a303a5b444a474b7066483f6f +524b4b48404c566651647a6e7589595e4b4b616a6a647966634f5a625141 +404453584a42555a534a5057544f434c45516b654d5247585a6357617076 +79877c6b71736a8f7a806754384a4f3d3f3a40352f5337495d454940444b +4b4d47384446383a38504e433d363a3d433c37494e44373e442b46474439 +393f3b404b41434b4534423243312c30363d392b4f474a683e3c4b51555e +54495a5051545c61685e463b3f43383745423636262f2e26323e5f9cb06d +69746f5956534d4349403d40424f1d21221e1a1b1f222625232121222526 +2d1b22302b2a2e292c28242a322e292f34352f2a2a28262a29281d282921 +2c2d2923252d312d2a2c2625272e2f31222a2639373030272e363e3a3832 +3533353639392b2b2f2c31332f31323a30383a3c353432435151393d3e3a +3f486d494e4640393e46413f343d474d4b363540373538323a41484b464b +4350464c4648504e443150413766726f364241433f393b332b3d413b3232 +3b394545434245474036564f443e483f4c50554b4d484d5966595d584948 +5b635c594754594c4f5858665e70565d563e5642634e6556544e424c5456 +49454a3a513f4b4d534e54496168504d735e55524f5d4e4352675b5d6050 +535c666c572b14070809040800070001020d090c0a0c110d01090c170d07 +0e070d0e130a1a0d090b0b10070a060b04090604020b0811110f070d130c +09080f0e0f1010131a110602060f05081015041e1e0c080a0f141112080f +0c0910150e080d111219120c1e15191f1c1105100d151522251a1e231511 +181d182120221c241e1f2022221d16121b2a1c1c241b2421272916141b31 +28201d281c1e15191b38363032332f372f1f303b4232494338393d4c3a52 +2d40424445343a40312b2f272d2f3c2c464337452b35563f4542466b6042 +39694c4545423a4650604b5e74686f83535845465c65655f74605d49545c +4c3c3b3f4e53453d50554e454b524f4a3d463f4b655f474c4152545d515c +6a6f6a756a595f61587d686e544225383c2c3434382f274d2f43553f413a +3c4543453f303c3e30323048463d363033373c352f41463c2f363c233e3f +3c3131373338403636403a29372a382924282d343022473f426036344349 +4d564c415248494c51565c523a2f33372c2b39362a2a1a23231b2531508d +9f5c58635e4846433d3339302d30323f121617130f1014171b1a18161617 +1a1d26141b272221251e211d171d25211c222829231e1f1d1b1f1e1d121d +1f1722231e181a2226221f211b1a1c232426171f1c2f2d26241b222a322e +2a242725282629281a1a1f1c21231f21222a20282a2c2522212f3e3c2426 +27232830553338322e272e342f2d2029333939242530272529232b31383b +363b3340333934363f3d33203f2d23525e5b222c2b2d2923251c182c302a +21212a283434323134362f25433c312b352c393d40363833384451444843 +3433485049463441483b3d46465249593f463f27412d4e395041413b2f39 +444639353a2a412f3b3b413a42354d543b385e49403c3947382d3c514547 +4a3839414c54431b0500000300060006000000000000000005010000010c +02000300000002000e010000020700010000000000000002000808060004 +0a0300000605040505080f06000000040000050a00131200000002070607 +00040100070c0500070b0c130c04160d111715080007040d0f1c1c11161b +0d070e110d16151511191314151717140d08112012121c131c191f200d0b +12281f17141e12140b0f112c241c1c1d191e19061a222c1c332d25262b3a +28401b2e30323322282e1f191d1417192616302d212f151f40292f2c3055 +48282151362f2f2c24303a4a33465a50596d3b402b293f47474157464531 +3e463829282c3b40322a3d423b32383f3c36273029354d472f34293a3c43 +373f5055535f56434b4d4469545a432e14242b18201c231712351a2b4027 +2c22272d2e302c1d292b1d1f1d353327231a202129221c2e33291c232910 +2b2c291e1e2420252e22232c26172517261611151c231f11342a2d4b211f +2e343841372c3d3334373f444c422c21272b201f2d2a1c1c0a1311091420 +3d7a8d4a46514e3837342e2429201d20222f27282928272626262c292523 +252a2f3333282c332d292b282b2b292d34312e322b2f2b2729292b333242 +33312c283e37302b2c353d3d39373030363b3f3e323942533f4940463c42 +45464b3e433c40383e454449555758594250504a3b484b4a4d4a55585c5d +4c5b4f59564a69546f5f5950504f4b4b4852565b55494b4f4f5049464c51 +56565151525a4c5654546c6465517268596455574d535653524f4a3e4a4c +475553424743475258534d4e4f4e4c5559585d4b53595e646a5f575d6254 +535d5858696d6974535c584a5156505f5b6955635f446d6e4f50786c6560 +616360645b605f556c575a585d5769586968615b73686464626a705f6b76 +7879726a6d7c8f8078383e2520232725272e2132252c2a36323132323945 +453f3942404b44503f3b49393c2d242a242522241c1f26221c38292f3035 +2e434c373930394346352d34483f38372d3327422d2d2d69683533423a37 +3f4d363e363d3b463c3f303c45524d405b4e404e4a554d4d614a78684f4b +596b515c5144483e6358615f564f494e5a6465624e676152564a50534f54 +54505b67666576796f7a65746772906b62565050554e4f616c576a70737a +7eba7b7b7477485b76614a443f3d4e5a5d565c4d625859524a567a5a5046 +5862836855695e523d534865545964466a7768836b827365565d5b5f7158 +4545575c583b43455d4b454345514e403f484c4e4a434b66516768584240 +69774f46685a5b524851454d50496d574949363c4947494a49453b573647 +513c524c564f3b3b4d433e433336313b403a433632324644423741554736 +3e3b4d4d54413e402f41484f3b48433140473d3937374548424c4d565346 +565c5338474d413e4b3a3b31363335352d28313e3b33333a333829332e30 +42453f447979495055464f4f52473e48504a484d1f2021201f1e1e1e2421 +1d1b1d22272b2a1f232a24202320232321252c29262a252925212121232b +2a3a2b29221e342d2823242d3535312f28282e3337362a313849353f363c +3036393a3f323730322a3138373c4547484932403f392a373a393c394245 +494837463944413857435e4e483f3f3e3a3a3741454a44383a3e3e3f3634 +3a4146464141424a3c474343595152405f57465343463b424443403f382d +3b3f3a4846353a363a454b46404142413d464a494e3c444a4f555b50484e +5345444e49495a5e5c67464f4b3d464b45544c5a465450355e5f4041695d +5651525451554c5150465d4849474c4658475857524c64595558565e6453 +5f6b6d6e675e5f6e81716c2d321c16191d1b1a2112251e2725312d2c2c2c +333f3f39333c3a453f4b3a364336362a202820231f221a1d24201a36272d +2e332c414a35372e3741432f272e42393231272d213c272727635f2d2a3a +312e36442d352d34323d323829363f4c463954473947424d454559437162 +4a4652644a554a3e40365b5059574e474146525c5d5a47605a4b4f43494a +424544414b5a5658696c626f58695a6788645b4f49494e47485a65506369 +6b7276b273736c6f40536e59423c37354654575056475c52534c44507454 +4a40525c7c614e62574a354b405d4c525d3f6370617c647b6c5f50575559 +6b513e3e505452353d3f57453f3d3f4b483a39424648423c445f4a606151 +3b396270483f61504c423641333d3e395b463738242b37383e42413d334f +2e3f49344a444e4733334238333b2b2e293338323b302c2c403e3a2f394d +3f2e363345454c39363827363c432f3c3727353c322e2c2f3d403a44464f +4c3f4f554c3140463a37443334292b282929211c25322f27272e272c1d27 +2225353830356868383f44353f3f42372e38403a383d1415161514131313 +1916121012171c2021161a211b171815181814181f1c191d191d19151616 +18201f2f201e18142a231d1819222a2a26241d1d23282c2b1f262e3f2b35 +2a30242a2d2e31242922251d2127262b3537383922302f291a272a292c29 +333438352431242f2e24432f4c3c382f2f2e2a28252d313632262a2e2e2f +28262c3137363131323a2c3431314840412e4e45353f2f32272e302c2a28 +2219282e29373524292529343a352f3031302a3337363b2931373a40463b +33393e302f393434454b4954333c382c3439334037432f3d391e494a2b2c +5448433e3f413e42393e3d334a3537353a34463546453d374f4440424048 +4e3d4955575851464453675a5619220d0a0f1412141b0d1d0e13121e1a19 +1c1c232f312b252e2c352b3526233325281b141b141610130b0e17130d29 +1a2021261f343d282a212a3234211920342b2423191f132e191919534e1a +1927201d25331e241e25232e262819262f3c3427423527352f3a32324631 +615237334052374237282b214439424039322c313d474a47344d47383d31 +37393132342e3b4746455859515b47554953714a41332d2d322a2c3e4934 +494f545b5f9b5c5c5558293c57422b25201e2f3c3f363e2d44383b322c36 +5c3a32263a42604532483d331e34294635384323475447624a5f4f3f3035 +33374b342224363d3c1f2729412f292729353224232c30322b222a453046 +4737211f48562c234535352b202a1d2628224732232410172323282b2a26 +1c381728321d332d37301c1e30262128181b1620231d261a16162a28251a +26382c19231e3230392423231422242b17241f0e1f261c181618262b252d +2c353225353b3217262c201d2a191a1217161919130e1926231b1b22191e +0d17121324271d225656262d3425303033281e28302a282d2a28282b2d2b +26232c272223292f3232343b362e2f2a252b2b33322d2e2d2a2b2c2d2b30 +3c3b312d354434332f293b302b323939383939373e3d413c42423e474654 +3e4b464c3d3e3c414637403f42343f494b464c544f4c594e3d4345515461 +4d4e5d5353564e5751625749514b65565b52554e4e4f4f5855575554544e +494f4c4b494a4c4b515549504a5a5f55655654505d60645c4c55564e5a54 +5d67555057534c60604b4e4e4d575d58504f5152585e646568586469685f +5b5c524c4e5449595a585c534b57555a585155524b5f5d6a6561695f7362 +636883897c636561656366715a525d68636262596e5d6864646f75745d63 +778a7b7a7a75786b5d69686a61547563795059535d5566655a636773696d +636a675f586461556478505c6f86555c6262765b3f474548484b42434e54 +60917461504d4b4e6c685a56645153555a5a787c7a6d5a56596f55537bb9 +775d566a725e60886369586a58676179475a6b77745f796c7e75799fb770 +b070ab957a8978765c895966a47ab26c7d687574747c848986826c7f8a69 +675f6073898faa9b9e8688958d899d85747a83716c56705954555c5c5c66 +6a6552625f6363815a60548673575b59425983765a516f5e5653615b7a5f +57404d57686e9276655b62586a8364595c526b66574f656e54544758595d +51716b83886237494639574b515358534b4f5b5a4f4a59645d525e4a7099 +85888a6883564c5c43485d4a466c473e4a5859487343393c433e443c3f5d +5d563d3e334c6445462f3636314245503f4b3934392b3f4156514e4a5a57 +634947616359574653576a574c4e4f7a5a6f63608b616c78634e5c593e38 +3d43373d492e3d57565435383c3f3a2b3d3130332e2a35433f32463b3645 +42432f312f454b444e4d6153524c50494e44443d3b414840454b22202023 +25231e1b241f1a1b21272a2a2c332e2627221d23232b2a25262522232627 +252a343329252d3c2c2b251f3126232c33333233333138373b363c3c383f +3c4a34413a40313230353a2b32313426323c3e393f47423f493e2d333541 +44513d3e4b4142433b443c504438403b55464b42453e3e40404946484645 +443e393f3a39373a3c3e44483c433d4d4f45544543404c50534d3b46453f +49454c5844414a463f53533e4141404a504b43424445494f55565949555a +59504c4d433d3f453a4a4b494d443f4b494e4c444a4740544e5b56525a50 +64535459747a6d545652565457624b434e59525151485d4c5753535f6564 +4d54687b6c6b6b696c5f515d5a5a534569586e45504a51495a594c575f6d +63675d646058515d5a4e5d71495569804f565b5d6f5539443f4542483f40 +474d598a6d5a494644476561534f5d4a4a4d525270747265524e51674d4b +73b16b514a5e6652547c565d4b5d4b5a546e3d5365716e597063756c7096 +ac65a567a28f748372705381515e9c72a862745f68676a727a7f7c786477 +81605e5657687c809b8c8f797988807c907b677076665f49634c47484f50 +4f595d5845555256587750564a7c694d514f384f796c504664564e4b5953 +72574f38454f60668a6e5b51584d5f78594e5147605b4c455b6449493c4e +50544868627a7f592d3e3b2e4c4046484d484044504f443f4e595247523e +648d797c7e5c774a3f4f363b503f3e663f38425251416b3c30353a373b33 +3651514a3132274058393a232a2a25363744333f2d282d1f33384d484541 +514e573e3b56574e4b3b474c5e4c4043436f4e6155527d55606c5742504f +342d32382d333f24334d4c4a2b2e3235302133262528231f293733263a2f +2a393637232523393e373f3e5042413b413a3e3437302e343b33383e1715 +15181a18131019140f10161c1f1f2128231b1c17121818201f1a1b1a1718 +1a1b191e29281e1a223121201b15271c18202727262727252c2b2f2a3030 +2c3432402a372e34252624292c1d25242719222c2e292f37322f3a2f1e24 +263235422e2f3d3332322a332b3c3326302b45373c33362e2e2d2d363335 +3332342f2a302e2d2b2b2f2e34382c322c3c3f35443533303c40433a2933 +332c37303843302c37352e42422d30302f393f3a32313334363c42434636 +4247443b37382e282a3023333432362f29353338363136332c4039443f3b +43394f3e3f445f655a41433f413f424d362e39443e3d3d344b3a45413f48 +4e4d363d51645554545156493b454041392e53445a333f39433b4c4b3f47 +4c574d51474e4d453e4a473b4b5f37425368394048495d4529332f343237 +2c2d353b47785b4837343235534f413d4b38393a3f3f5d615f523f3b3e54 +3a38609e55393446503c3e664347384a38474358223645514e395144544b +4f758c458546836f5463504e325d2d3a774d843e4d384544474f575c5955 +4053603f3d3536485c5f7c6b70575a66605a7058474d564a4c39533b3635 +3c3a3c464a4534444245425e373d3163503438361f36605337304e3f3934 +443c5d403a2130384b4f755742383f374964453a3d334c45362c424b3333 +263533352949435b623c1428251a382c323439342c303c3b302b3a453e33 +3c284e776366684661342c3c23283d2b29502a222d3c3e2e58291f232925 +2a222541413a2122173048292a131a1a15262a382733211c1f1125293c37 +3430403d472c2b44473c3b29373a4e3a3031335b36473b38633b48543f2a +38361b171c22141a260b1a3433311215191c17081a101114110d1929271a +2e231e2d2829151715292e262c2b3c2e2d272e272e2427201e242b23282e +2b28282c2f2d2826292623272d312f2c2f3e35292e2b252f2a35352d2c2e +2d2d2a2c2a2a302f2a2b35332733372c3029262d3132373c382e343a443a +3f3c35362b3a35333d3638393839382f3942443a444c4e4147555151494a +3d3e3d46454f484951495054514952574f54544b534b45434f494c49474a +5750514c4e4f4752505451534e4b5353535756616c5d63596067554d5a5a +565e5d4d5b56606d56595e5c5658544b4e504f505457595855526a5b5451 +534d605d635c52585a605a5867695f56544b454f5c646d69635b5971585a +625b675e68606f615c72684f53605f676b645670717a6b736c5c6a616e71 +7f77637375817e7071756669766656656375615552566650827275728981 +78705f74625c516763514d58555362754b5d678053625e6479554b58575e +5e665d5f69645b7c5a525c635c4f4e5063809d9e5d606e6f857c81817963 +6361676492a3626e74808d9fa892827c6885818c767f6075878a90758279 +624f687471506e4f44595d715e69628564829e7081657e86848b908d8276 +6e6c6b6d8167685e67878b778c747d58576569596e7465706c696b8b595c +5e529968788b7e4f7580746980666d7f50717e5f4c70636f896a57635d59 +4c57635e836245425b715b4580815a669a81575b574a41594b484d565167 +53484c555e68658b78848789697160636b766b67517068725a696c646571 +8599a375736f7c5d65607a755563504e485c4d5d4f4832405f484f343731 +4044483d3a4c43454b4d4654584c4e42433c303d38554b58493e513c3438 +404042444d4b595c534c4b56502947394442484e455d674e3d4339344231 +4e3a414243463c453c3054683f47343d322730312d28392e2e342f292d32 +3335473b333c3f4038373d3a415c6c4b4556594c4d4f493c39383c3c4a44 +4a4b232020242725201e211e1b1f2529272427362d2126231d27222d2d25 +2426252524262424282722232d2b1f2b2d2226211e272b2c313632282e34 +3e3439362f3021302b29312a2c2d2c2d2c232b34362c373f41343a484444 +393a2d2e2d36353f383940373e433e363f463e44443d453d35333f393c39 +383b4841423c3e3f37423e444143403d4546464a49545c4d52485057453d +4a4a474f4e3e4c47515e474a514f494b473e41434243474a4c4b48455b4c +4542443e514e544d43494b514b49585a5047453c39435058615d58504e66 +494b534c584f595160524d635940445150595d564862636b5b625b4b5950 +5d606f67516363716e616166565a675a475653655246464a5b457a6a6a67 +7e766c6454695751465c5846424d4a48576a40525d76485a565c714e4451 +5057576158585e574e6f4d454f564f424143567390915154626379707575 +6d5757555b588697545e64707d8f9882726c5875717c6671556a7c7f856a +756c55425b6762415f42374e5267545f55785776926473577078747b827f +7468605e5e60745a5b515a787b677c646d4947565a4a5f6756635f5b5a7a +484b4d418858687b6d3e646f635871575e7041626f503d6154607a5b4857 +514d404b5752775639364f654f3974754b588b72484c483b324a3c393e47 +435844393d47505a587e6b77797b5b6251545c675c58426159634b5a5d55 +5662768a9365635f6b4c544f696444523f3d374d455748422b395841482d +302a393d4136314037393f413a484c404236373024312a473e4c3c324530 +282c3737393b44424e514841404b451e3c2e39373d433a50583f2e342a25 +3624412d3435383b313a3125495d343c2932271c2526221d2e232329241e +212627293b2f273033342c2b312e334f5c3c3445483b3e40392c2c2b2f2f +3d373d3e181515191c1a1513161310141a1e1c191c2b22161b18121c1722 +221a191b1a1a181a18181d1c17182220142023181c16131b1f20252a261c +222832282d2a23241726211f251e202120211e151e27291f272f31242a38 +34342a2b1e1f1e2726302b2c362b3033302730362e35353038302826322a +2c292528352e2f2c2f3028333237343633303836363a38434c3d42384047 +352d3a3a343c3b2b39343c493237403e383a362d3032313236393b3a3734 +4839322f312b3e3b3f382e34363c3634414339302e25232d3a424b47443c +3a5032343c354138443c4b3d384e462d313c393f433c2e484954444e4737 +453e4b4c58503b4c4d5a574a4a4f3f435244323f3c4e3b31303445316555 +56516860564e3e53413b304642302e37363443562c3e445d324341475e3c +323f3e45454d44454a443b5c3a323c433c2f2e3043607d7e3b3e4c4d635a +5f5f5741413f4542707f3a444a5663757f6959533f5c5a654f57374a5c5f +654a554a3320394541203e20152e3244313c335534506c3e4e3049515057 +5d5a51453d3b3b3d5138392f38575a465b434c28263539293e4535413d3e +466a38393b2d74415164592c525f53485c4047592a4b5839264a3d496344 +313f3b372a35413c61402320394f39235e5d343e745b333735281f372924 +293029412f24262d353d385e4b575c60414b3c3f475047412d4a444c3643 +483e414b61737c4e4c485738403b555232402d2b273a3241352c1826452e +361b1e18292b31242230292931312c383e303426292016231f3e35403326 +39221c1e28262a2a35313c3f362f2e39330c2a1c27252b31283d432a191f +151020112e1a212224271d261d1135492028151e130811120e091a0f0f15 +120c11161b1d2f231b2425261e1d2320263f4c29223134272b2d291c1c1b +1f1f2d272d2e2b29292d2e2d2d302c282525282b2c2b2a2b28272928282b +2f35343134343438373c38302d2d3440342e2c33353030322d2929334044 +382b293544333a372f282e3d37343c363a3f4239323a414a4644494a4a3c +3e4842494b4c36313c4f45413a3b3f4150535c4d564e535e5f535252494a +595055514f4f50474c3f485644493b45444a4b474e4a58585a59695c6067 +535b55515a5f595260575e606161565b655c564d4b4f4c4f574e484c5256 +5d6366555a605c5463525e64595b5e6d5e525656585c5e5a545562666f65 +59575968666a7567655379906a5e566a64676889858b805f5a6f675f6376 +6a5a6362696a726768696b6e665d67654a616d6b63686a705e666569624d +504849555d58594f536250574f645d516c644d5d576468806069606c6159 +61414d58585e5f6861655d6668866a646d5f5d61565f7276636079625e56 +6856697c756b5b5d65596160697f89918babc889877b70849595796c5865 +746d816965625b6067664a71666d56686059546b7a7a698d81707a949191 +86847e7469666b71705b6b6e76586b897e5d68586b57556563544e6c7594 +6865665f826a7dcca2a4a9a9925563635e566e747970745735556d846e80 +a0846253717b6767726c7b6f554e54676355655d6572676a6f6751516468 +5060616b7265827a7e7578829ebf9e89809288775d6f86908e8471847f86 +836b4f4d62706c677476746670565f7e686e524e6152454c665e55494e49 +4950664e575f57413a52433f404267674a4950534b46403c38473a453a39 +35314d453f4642403c43464f5d5e595c574b49414e50656151493f484c3b +4c7f4d675f393c42412f3c3e283e392c482e2a394f39443437313834332f +2b32353636303a543c332c2a312f383a3036424b505347475b4e4c55453d +3b3d3d35463e4146232121252625252824201d1d202324232223201f2120 +2023272d2b282b2b2b2f3136322a25252c382c26242b2b26262a2523232d +3a3e3225232f3e2d3431292224332d2a302a2e33362d242c333c38363d3e +3e30323c353c3e3f29242c3f35312c2d313040434a3b443e435051474646 +3b3c4b4348444242433a3f323b49363b2a34333c3d39423e4c4c4d4c5c4f +5057434b45414a4f494250474f515252474c584f49403e423f424a413b3f +4549505657464b514d4554434f554a4c4f5e4f4347484a4e4f4b4849565a +63594e4c4e5d575b665856446a815b4f475b5558597a777d72514c615951 +53665a4a5351585960555457575c544d555538515d5c5358595f4f57595d +574349413f4c544f4e444553414840554e425d553e4e48555971545d5460 +554e56364250505657615a5a4e54567458525b4d4b4f444d606451506954 +50485a485b6e675d4d4f574b5350586e78807a9ab778766a5f738484685a +4754635c70585451494e5554385f515b44574f48435b6a6a577c705f6983 +7d7d72706a605552575d5e49595c64465977694853435645405351423c5c +63845855544b6e566ab98f9196967f424f4f4a425c646960644725455d74 +5e7090745243616d5959645e6d61474046595547574f5563575a5f574040 +53584050515b6355726a6e66697390b1907b718379674d5f76817e756175 +6f77735c3f3e52615c56606260525c424a6953593d394c3d303a5752483d +413c3c4359414a524a342d45373434375b5c3e3e44483f3b34312c3b2c37 +2c2b27234139333a3635333b3d4752524d504b3f3d3542445955453d333c +3c293c6f3d574f292c3233212e301a302b1e3a201c2b412b362629232a26 +252120272a2b2a242e483027201e25232c2e242a343e404438384a3d3d46 +38302e3031293a3233381816161a1b1a1a1d191512121518191815161312 +161515181c22221f22222226252a261e1a1a212d211b1920211c1c1f1a17 +17212e3226191723322128251d161a292320241e22272a21171f262f2b29 +2d2e2e20222c252c2e2f19141d3026242122282633343e2d362f3443443b +3a3a302f3e3337332f2f30272e212b39292e202a2931322c34303c3c3d3c +4c3f4047343c36323a3f393240373c3e3f3f3439473e382f2d312e313930 +2a2e34383f454433383e3a3241303a4035373a493a2e302e303438343031 +3e424d433836384740444f413f2d556c463a3246424546655c6055343146 +3e373a4f43333c3d44454a3d3c3f3f443c343d3c223a46453c41454b3a42 +4347412a2f25242f35302e262b3c2a31293e372b483e29393340445a3c43 +3c483f3a4424303d3d43444e4746393e405e423c453735392e374a4e3b39 +503a362e402e41544d4333353d3139363c505a625c7c9b5c5a4e43576a6a +4e4233404f485c44403d35383f3e22493c4530433b342f4453513f625645 +4f676262595751473d3a3f45463141464e30436154333e2e412f2b3d3b2c +26454d6d413e3c32553b4c996f71767661243436312a444b50474b2e0c2c +445b4557775b392a48533f3f4a4453472d262c3f3b2d3d343b463d414840 +2c2c3f4129373841463b595154494a526d8e6d5850645c4d34465c646458 +4758555a593f25213844423c474a483a442a35543e462a26392a1f26443c +35272e292930483039413a231d34272224254b4a2e2c34362f29241f1c2b +212c211e1c163329252a262322282c343c3a35383327251d2a2c413d2d25 +1b262c1b2d602e48401c1f25261421230d2520132f15112036202b1b1e18 +1f1b1a140e1318191a14223c241b141219171e20181c272e303125253629 +2a33271f1e20231b2c24262b2b2b2c2d2c2c323b413c37313134393e4938 +3d4945454a463f3d393b3f3a383f35352f2d3334343933393f322b333a42 +39363b45494037343740482e353c3e3a49563c433b42363c5040354b5054 +484a464248444a514c584647404e545045534f4c4948524a5d4f4f455251 +51474a4c4f4c58484d4b4e4f525163535f71493e4b51474a4a4854504a4c +56506458566760535956545b59525153545e5a4d51566a504c49535c5054 +515056606057575f5648565e55526e61625f57676c726b7769666e75716d +6d6b716b6a574c54585a626a695e72656e4c545d65634f6049686a656258 +61535f74536b5e555f625b52745761515e6a6363666547665a5c676b6968 +6b6e6f5a5d58656b697c675f6764646456756e7267677c654779665f6f6b +544b646c655e67564d59575b5b655f61626c697861687b635a4f546c6675 +7368675b5a4c655b605954766b907c6e5c7b748c83917c6386866f6a6c64 +756a665e5c636e618270646569844e6c71737b694b60706756477d99578a +9a67726f756e7070727575716860815e627f8852677c6e5f6f656759516c +667e7135436e6b7469537e6262c36f91967c99d1566166728c7d7f536061 +4b504d6f686f745f61656b7c5f4f62686e845b6a685d5d6461645d6b5163 +4d5f7c6f745b6b6c969a7b837484918073627f84897565677a7e6f755f5e +7d747958514e675b4e4f59585152607e6c6a5e6c5e6f676f7e5870465a4c +514d71534345414b4e535a5b5156444f4743553c54554665516358594b43 +3d485047453f42394439384b474539393648404c484b535350464a455359 +595c4d3a353736392f3b353e3a323e2b27392a22283933373a443b2e3f3e +46343c3125352f403f3940423a383231322b3025312f3a364b554450484b +4e45424e393a3739382a424751562323242524242a3339342d29272c3136 +413035413d3d423e3735303236312f362f2f29272b2c2c312b31372a2129 +3038312e333d413a312e313a42282f3436323f4c32392f362a304434273d +42463a3c39363c383e453f4b393a3341444035433f3e3b3a423a4b3d3f35 +4544443b3c3e413f4b3b403e41424544564652643c303d43393c3c3a4743 +3d3f4640544945564f444847434c48434244454f4b3e42475b433f3c464f +434744404650504a4a524939474f46435f5253534b5b5d635c685a5a5f66 +625e5e5f655f5e4c41494b4e535b5a4f63565f404551565440513a595c57 +544a53455164435b4e454f524a4262454f3f4c585353565537564a4d575b +58575c5f634e514e5b6260735e565c59565547665f6357586c553769564f +5f5c463d565d59525a49404e4a50505a5455525a57664f566951483d425a +54636156574d4c3e574d524944665b806c5e4c6a6079707e6b5275755e59 +5b536459554d4b525d506f5d5152566f39575c5e6454384d5d5443346b87 +457885555d5a60595b5b5d60605c534b6e4b4f6c753d5267594a5c525446 +3e59536b5e22305d5a63573f6a4f4fb05d7d826885bd414c515e786b6d41 +50513b3f3b5d565d624d51555a6b4e3f525a5e744b5a584d4d5453544e5a +40523b4d6a5d624b595a8486676f60707d6f62516f7479655456696d5d63 +4e4d6c636847403d564c3f404a4942414c6a58564a584a5a525867415b31 +453a403c60423236323c3f444a4b4146343f3a384a2f4748395844564b4c +3e38323d433a3832352c372d2c3f3b3a2e312e3d34403c3f4747443a3e39 +474d4d50412d2526282b212d27302c24301d192b1c141a2b24292b362d20 +313038272f2418292335342e34362e2c2625261f241925232e2a3d483440 +393c3d34333f2c2d2a2c2b1d353a41461818191a19191f282e29231e1d21 +262b36232a36323237332c2a27292d28262d23231d1b2021212620262c1f +171f262e24212632362e2522252e361c23292b273540262d23281c223626 +1a3035392d2f29262c282e352f3b292a2330353026343233302f352b3d2f +30263534342d2f31342f3b2a2f2b2e2f3231453541542c2330362c2f2f2d +37332d2e3630443633443d313834313936302f31323c382b2f3448302c2b +353e323633303640403939413826343c33304c3f3e3d3545484e47534342 +484f4b4949494f4948362d3538383e4445384e414a2a303b413f2d3e2744 +423a392f382a374b2a44372e383b362b4c2f392936423c3c3f3e203f3336 +40444445494a4d383935404543543f353c3b3c3e304f484c4041553e2052 +3f3848452c233c46413c47382f3c393e3e46403f3b423f4e373e51393025 +2a423c4b493e3e3231243d3338302b4d426652443250455b52604d345759 +423d41374a3d393337424d40604e4243455e28464b4d5243293e4e453223 +5773316472414a474d464646484b4d49423a5d3a3e5b642c415648394d43 +45372f4a425a4d111f4b4a4f3f244f312f8f395a5f45629c222d34436053 +55293738222523453e454a35383c405134253940455a31403e33333a383a +313e2638233554474c3443426c6d4c544758645344334e535844363a4d53 +454b343150474c2b24213c2f22232d2c25253452403e324032453f46552f +481e32242c284c2e1e211f292c313a3b3136242f2926381c343526453143 +38392b26202b332a2822251c271d1c2f2b281c1e1b291c2624272f2f2c22 +26212f353538291a181c1d2016221c25211b27141022130b11221d20242d +241728272f1e261b0f1d1323221c242620201a191a13180d1915221c3038 +243026292920202c191c191b1a0c252932362b282c292f38363733323434 +3a3c3f403337352d2f26312c2f2f2e2c2b2b2c2d292f2b2b2a2931303937 +333836363e37454c3f3b4538453e3a3e3f3b3a3f4447514e403c45433c43 +4f4d443e495154595150545857514b494a4e535752554650534e4e41464d +564a4e49575c595b626d605c605c5e646369615b6264635c4d4a51534a48 +4b4d5755604f5357565b65766c6464616a6e6d7a7973706c696f70696966 +5d5c62625c5c525664625e5d575c564c5452595765677c615d666d68606b +6668645e5d5e544457564e53505b5858615f615f63667259565264685d58 +5e6e725c5c616a5f76938d807a737276727780515e4e5e74646365615f5e +586b6d70686c6d706f6358585c5766656f685f5a4e525359546369674b64 +53515a67615e677566606a908a5d5466636571516b5c6475726862666e64 +8a586463626e5a5c89535268646f775c644e66728c805d5f6d59685e896f +665d4a51506369787e755f716450576f7356698868727d797e7a51595c75 +6d64656f676d737573665e62626a6866687979556b706373816b62684e5c +5f63615c5d556e8b7f4e57556c7361595b5b6775767a8280899e876e8183 +8b917d5c6a7d8b8c585a7466665f6667777b765f5b60616972656b5e6874 +5b60667c7f7c6e697a7268464d63788c9c6f697876818e79905d6767686a +758163675f5f5d6a674e464a5255564f6468665a5a5d5f5b59656b645c48 +4f5a5f5557504c495458554f4c59454e4844483d4a3d454a4e4f62756b63 +6869696c50413a405b6260645d4b453c3c4d59554d526577616765655849 +48464133323a384b4338362d3838363c3f4541403d393432323438363a32 +39373f3c3f3d39312a27282b2e3d50573b3c3629312e2924242829272a35 +363d433f434343443d4a3f404341504f4c4c50572522262327302c2d2928 +272a2d323536292d2b23251c272225252422212122242329252522212928 +312f2b302c2c342d394036313b303d363236373332353a3b454234303937 +333a43413731394144494143474b4a44403e3d4143484144353f433e3e31 +363d463a3f3a484d4a4e535e514d514d4f55545a524c5355544c3d3d4446 +3d3b3b3d47454f3e4246444950625a545251585e5b6a68625f5b585e5f58 +5857514f5757514f4245514f4d4e4a4f493f4442484654587056525b6059 +4f5a5a5d584f4c4d45374a4b4348454e4848504e52505659654e4947575b +504b516166504d525a4f66817b6e6a636367636871424f3f4f6555545652 +504f495f5f61575b5e616054494c504b5a59635c534e4246474d48575a5b +3c5544424b58524f596a5b545e847b4e4559545864455c4d546562585256 +5e547a485453525e4a4e7d49465c58636b4d553f56627b6f4c4e5945574d +7a60584f3e4544575b6a706750625541465e6245597656606b6769653f48 +4c655d54555f575d616461534b505058565458696a465c61526270595056 +3c4a4e53544f50465d7b6d3c47465f66524a4b4b566466676f6d768b745b +6d6f777c6b4c5c6f7d7d47496055544f57596366624f4c54525b62565a4f +58664f54586c6e6a5954686057373d53647684575062606d7a657f4c5656 +5658616d4e524d4d4b58573e363a41464740565a584c484b4f4b4a565c53 +493239444c4448423b3845494643404d3a433b373b303d30383d41405366 +5a5257585a5d41342d334c5351554e3e382e2e3f4b4941465a6c52585656 +4c3d3d3b3628272f2d40362b2a232c2c2a3033393534312d272525272b2a +2d262c2b312e33312d27201d21242231444b2f302d2027241f1a1a1e1f1d +212c2a313632343434352e3b333437353f3f3b3c3f4719161a171c252223 +1f1e1e2024282b2c1f2322191b121b1619191a181818191b171d19191716 +1e1d2624202522222a212b3227252f23322b272b2c2825292e2f39342622 +2b272229333127212a32373c3233363a39332e2c2c3033353132252f342f +2f22262d362a2c27353a373b40493c383c383a403f453d374042413c2d2c +33332c2a2b2d37353f2c2e322e333b4a423b3c3a42474553544e4b47444a +4b4444423b3c43433f3e323542403b3b373e382e3432363440435a403c45 +4d463d484447423a383b322437372f34333d38383e3a3f3b4346523a3633 +44483d383e4e5038383b43384f6b6558534c4c504c515a2d3a2a3a504241 +413d3b3a3247454a4349494c4b3d32343831403f49443b362c303137303f +4343253e2d2b36433d383f4e3f3a466e663b32464145512f47383d4e4b41 +3b3f473d63313d3c3b473334632e2c44404b53363e283f4961553234412c +3d315d433d35262d2e3f414f534a394d402c324a4e314260404a55515450 +2b34354e463d3e4840464d504d423a3c3a403e3c41525531474c3e4e5c45 +3a4028363c43433e3f334964552630314c533f3534323a4645474e4c556b +543d52545f675333415462602d2f473b3c36403f484b4936353c3b414839 +3e323e4b353a3d525452443f544c4320263a4c5e6c3f3a4b4954614c6532 +3c3c3e404955393d3535334040271f232d2f30293c403e3234373834333f +453f38242b363b30312827263034312d2a37242f2a262b202d20272a2e2b +3e51463e434445482c211a20373c3c423b2d282121323e39313648583d41 +4141362727252214151d1b2e251b1c1720201c22252b272825211e1c1d1e +221e241a231f26232725211b141111141221343b1f201e111b18130e1014 +1511121b1a2125212121212219261d1e211f2b2827252b3024212825282e +282822212124282b2c2d2c2f302d34303d392e2e2d2c2b2b2d2d2e332f31 +33343d3a3b3a363a3938403942493e3c463d49413b3d3c3837393d3d4344 +3c3c494a444c4a4c48464f535151484b4b4b4b4b4744474c50545052454e +5752554b5765756c5b57666b65666771696467615e5f585b544c52545657 +515561625a595b5d67666d606a7172737782726f727075776f756f666059 +555a5c565c5a545055524e504d4f5b57555552565148535359566162715a +565d625c56645e605d58595950405a584e53525b59595e5f646060626f5b +534d5c615953525d5f575e5e655b6a78695d5a575c6768706f505e4e525f +5e63635e5c5a536766696569696d6e645d61605b67666f675d584f535359 +53626665677b66616a74686064756b665f7473585d6d646a7b5d735f5c69 +665f5a5c615879587373686e5e66784e536b686d7058645f746884937769 +796b767a8f82757164645b6868757e7a7b776865696e73696076646d7476 +766f595d5d736b62636c67696a6e716861645f6b6b676474775862635360 +7364626c5f66615a554f544e637e856d776269636160635b678287838c85 +86967e616a676f7e7b657a858c846a6e827468616267747c7b6864665f63 +807277676f79656b636d6766626067524f43565d57638063575f59636b5d +7d4b494a4d536474585d5b5d5b6a69524c515857524b5d5e5d57585b5d57 +566067625c4c514e575a6357554d5154524f49534c5a574d4e475a4f4c52 +574e5864595250545a655351525d5e6563655e4f483f3d40403b37393e43 +485050554e474d504e4040453f4f463c3d353e3c35363437333436332f2e +3134312f352d3431393634342f2b25242529282f343d3642392c322f2a25 +2629292738413e41474652585d63585b52606a666d6c6866696e201d221f +20261e1e151414171b1e2223222526232a26332f2424232221212324262d +292b2b2c353233322e322f2e362f343c32303c334139333534302d2f3131 +353630303d3e3c443f413b393f433f3f383b3e3e3e3e3c393a3f41453f41 +323d4642453b4856665d4c48575c565758625b5659534f50494c453d4345 +4748414854574d4c4c4e58575a4e585f5e5f616e5e5e615f63655d635f56 +4f4844494b454c4b45454a4a43433d3e454442464349453c434346435053 +654f4e55554d45535355504946483f334d4d464b454e47484d4e55515355 +6450484251564c464550524a4f4f544a5866574b4a474d585c6463445141 +455251565651504e475b5a5d54585a5e5f554e52514c5b5a635b504b4448 +484e47565a595b6f57525b655951596a605b536864494e5e555b6c4e624e +4d5a57504b4d52496a496464595f4f5a6e4749615d62644c555064587282 +66586457646a807469655959505d5c6a736f6f6b59565a5f63595066525b +6264625d474d4d635b52535c5759595d605750534d5a5b5755656b4c5657 +44516354505a4d56524f49474942546e745d67565c585453544c57737672 +797273836b4e5956596969576c7a7e76595d6e63565356595f646758555a +5357706366585f6e5961555f55544d4b55413e34474d434a66493c46434d +57496b3937383b414f5f4348494b495858413b404948463f51525148474a +4c4b4a565b534b393b3b444b574b463c424546433e4844524c42423b4c42 +3f45483f485447403e424a5544424551505754564f3f3b312f32322d2b2d +3336393f4146413a42454638343933433930332d34322c2d2b2e2a2b2a27 +222124272725292128252b28282826221e1d20221f2328312a3630232825 +201b1c1f211f2f3832353a3943494e54494c46545e575d5a5654575c1411 +1613151b14140c0b0b0e12151819191c1d1a201c27231818191818181a1b +1b211d1f20212a272827232725242c23272c24223027362e282a29252123 +2525282920202d2e29312d2f2b2930343333292c2d2d2d2d2a27292e2e32 +2d2f212b3632352b3543534a373342473f40414b413c3f39383934373028 +30323435313541413a39393b4544493a444946474955454447454b4d454b +483f3b34303537313534302f363531322d2e373531333036352c33333532 +3c3e4f39373e423a33413f413d3635362f223c3b3338343d39383d3c423e +4042503c342e3d423933323d3f373c3c40364452433733303641444c4d2e +3e2e323f4045433e3a382f43404540464549483e373b3a3543424d453d38 +303432382f3e42414357403b4650463c3d4c443f3b504f343b4b42485739 +4e3a3643403934363b3253324d4d42483842532b3048474c4e36403b4d3f +5a684c3e4f3f4c5063574f4d43453c47444e55515553423f43484c42374d +3a434a4c4a453136344a42393a433e4045494e4540413540413d3e4e5536 +40412f3c4c3d3842373f3f3b3934372c3d555a43503e4944434041353e56 +5a54595253634d303d3c4254513d515e61593d4155493e393e3f444a4e3f +40443b3d56464839455241463b443d3c3836412d2a1f30362b344f322730 +2c363f3153212122252b3a4a2e3333353342442d292e36353029393a3931 +35383835323d45403b2b2e2c35363d31312a2d30302d28322d3b3a30322b +3f322e32332a313d312a282c333e2f2d323b363c3d3f3c2f2b2424272520 +1b1d2123262b2c312e272e313325242923332920272028261d1e1c1f1b1c +1e1b19181c1e1d191d151c191e1b1a1a17130e0d0d100e1318211a262114 +1c19140f1215161220272225292830363b413437303e464044423e3c3f44 +currentdict /inputf undef +currentdict /picstr undef +currentdict /rpicstr undef +currentdict /gpicstr undef +currentdict /bpicstr undef +grestore +showpage +%%Trailer + +%%EndDocument + @endspecial 1359 4050 a(Figure)27 b(9:)37 b(Wiring)27 +b(of)g(the)h(STK500)515 4396 y(The)h(LCD)g(con)n(troller)e(is)h(used)h +(in)g(4-bit)g(mo)r(de,)g(including)g(p)r(olling)g(the)g("busy")f +(\035ag)g(so)515 4495 y(the)h(R/)p Fh(\030)p Fq(W)f(line)h(from)f(the)h +(LCD)f(con)n(troller)f(needs)h(to)h(b)r(e)g(connected.)39 +b(Note)29 b(that)g(the)515 4595 y(LCD)36 b(con)n(troller)e(has)i(y)n +(et)g(another)f(supply)h(pin)g(that)g(is)g(used)g(to)g(adjust)h(the)f +(LCD's)515 4695 y(con)n(trast)22 b(\(V5\).)35 b(T)n(ypically)-7 +b(,)24 b(that)f(pin)h(connects)e(to)h(a)g(p)r(oten)n(tiometer)g(b)r(et) +n(w)n(een)g(V)-7 b(cc)23 b(and)515 4794 y(GND.)32 b(Often,)h(it)f(migh) +n(t)f(w)n(ork)f(to)h(just)h(connect)f(that)h(pin)f(to)h(GND,)g(while)g +(lea)n(ving)e(it)515 4894 y(unconnected)d(usually)g(yields)h(an)f +(unreadable)f(displa)n(y)-7 b(.)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 340 356 +TeXDict begin 340 355 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(340)p 515 236 +2865 4 v 515 523 a Fq(P)n(ort)33 b(A)h(has)f(b)r(een)h(c)n(hosen)e(as)h +(7)g(pins)h(on)f(a)g(single)g(p)r(ort)h(are)e(needed)i(to)f(connect)h +(the)515 623 y(LCD,)f(y)n(et)f(all)g(other)g(p)r(orts)g(are)g(already)f +(partially)g(in)i(use:)46 b(p)r(ort)33 b(B)f(has)g(the)h(pins)g(for)515 +722 y(in-system)26 b(programming)f(\(ISP\),)k(p)r(ort)e(C)g(has)f(the)i +(p)r(orts)e(for)h(JT)-7 b(A)n(G)27 b(\(can)g(b)r(e)h(used)f(for)515 +822 y(debugging\),)g(and)g(p)r(ort)g(D)h(is)g(used)f(for)g(the)h(UAR)-7 +b(T)29 b(connection.)515 1084 y Fs(22.38.2)93 b(F)-8 +b(unctional)32 b(o)m(v)m(erview)515 1284 y Fq(The)27 +b(pro)5 b(ject)27 b(consists)g(of)g(the)h(follo)n(wing)f(\034les:)639 +1509 y Fk(\210)41 b Fm(stdiodemo.c)23 b Fq(This)28 b(is)f(the)h(main)g +(example)f(\034le.)639 1673 y Fk(\210)41 b Fm(defines.h)24 +b Fq(Con)n(tains)j(some)g(global)f(de\034nes,)i(lik)n(e)f(the)h(LCD)g +(wiring)639 1837 y Fk(\210)41 b Fm(hd44780.c)24 b Fq(Implemen)n(tation) +k(of)f(an)g(HD44780)f(LCD)i(displa)n(y)f(driv)n(er)639 +2000 y Fk(\210)41 b Fm(hd44780.h)24 b Fq(In)n(terface)j(declarations)f +(for)h(the)h(HD44780)e(driv)n(er)639 2164 y Fk(\210)41 +b Fm(lcd.c)22 b Fq(Implemen)n(tation)h(of)h(LCD)g(c)n(haracter)d(IO)i +(on)h(top)f(of)h(the)g(HD44780)d(driv)n(er)639 2328 y +Fk(\210)41 b Fm(lcd.h)26 b Fq(In)n(terface)h(declarations)e(for)i(the)h +(LCD)g(driv)n(er)639 2492 y Fk(\210)41 b Fm(uart.c)25 +b Fq(Implemen)n(tation)j(of)f(a)h(c)n(haracter)d(IO)i(driv)n(er)f(for)h +(the)h(in)n(ternal)f(UAR)-7 b(T)639 2656 y Fk(\210)41 +b Fm(uart.h)25 b Fq(In)n(terface)i(declarations)f(for)h(the)h(UAR)-7 +b(T)28 b(driv)n(er)515 2918 y Fs(22.38.3)93 b(A)32 b(co)s(de)f(w)m +(alkthrough)515 3118 y(22.38.3.1)92 b(stdio)s(demo.c)81 +b Fq(As)31 b(usual,)h(include)g(\034les)f(go)g(\034rst.)48 +b(While)32 b(con)n(v)n(en)n(tion-)515 3218 y(ally)-7 +b(,)20 b(system)f(header)f(\034les)h(\(those)g(in)g(angular)e(brac)n(k) +n(ets)h Fo(<)g Fq(...)34 b Fo(>)p Fq(\))19 b(go)f(b)r(efore)h +(application-)515 3318 y(sp)r(eci\034c)25 b(header)g(\034les)g(\(in)h +(double)f(quotes\),)h Fm(defines.h)21 b Fq(comes)k(as)g(the)g(\034rst)g +(header)g(\034le)515 3417 y(here.)45 b(The)31 b(main)g(reason)e(is)h +(that)h(this)g(\034le)g(de\034nes)g(the)g(v)-5 b(alue)30 +b(of)h Fm(F_CPU)e Fq(whic)n(h)h(needs)515 3517 y(to)d(b)r(e)h(kno)n(wn) +f(b)r(efore)g(including)h Fo(<)p Fm(utils/delay.h)p Fo(>)p +Fq(.)515 3664 y(The)35 b(function)g Fm(ioinit\(\))d Fq(summarizes)i +(all)h(hardw)n(are)e(initialization)h(tasks.)59 b(As)35 +b(this)515 3763 y(function)19 b(is)f(declared)g(to)g(b)r(e)h(mo)r +(dule-in)n(ternal)e(only)i(\()p Fm(static)p Fq(\),)f(the)h(compiler)f +(will)g(notice)515 3863 y(its)34 b(simplicit)n(y)-7 b(,)35 +b(and)f(with)g(a)f(reasonable)f(optimization)h(lev)n(el)h(in)g +(e\033ect,)i(it)e(will)g(inline)515 3963 y(that)i(function.)64 +b(That)37 b(needs)f(to)g(b)r(e)h(k)n(ept)g(in)f(mind)h(when)g +(debugging,)h(b)r(ecause)e(the)515 4062 y(inlining)h(migh)n(t)g(cause)f +(the)h(debugger)f(to)g("jump)i(around)e(wildly")g(at)h(a)f(\034rst)h +(glance)515 4162 y(when)27 b(single-stepping.)515 4309 +y(The)e(de\034nitions)g(of)f Fm(uart_str)e Fq(and)j Fm(lcd_str)d +Fq(set)j(up)g(t)n(w)n(o)f(stdio)g(streams.)35 b(The)25 +b(initial-)515 4408 y(ization)36 b(is)g(done)g(using)g(the)h +Fm(FDEV_SETUP_STREA)o(M\(\))g(\()p Fq(p.)14 b Fm(174\))35 +b Fq(initializer)h(template)515 4508 y(macro,)27 b(so)g(a)h(static)f +(ob)5 b(ject)28 b(can)g(b)r(e)g(constructed)g(that)g(can)f(b)r(e)i +(used)f(for)f(IO)h(purp)r(oses.)515 4608 y(This)33 b(initializer)h +(macro)e(tak)n(es)g(three)i(argumen)n(ts,)g(t)n(w)n(o)f(function)h +(macros)e(to)h(connect)515 4707 y(the)h(corresp)r(onding)f(output)h +(and)g(input)h(functions,)h(resp)r(ectiv)n(ely)-7 b(,)36 +b(the)e(third)h(one)e(de-)515 4807 y(scrib)r(es)24 b(the)h(in)n(ten)n +(t)h(of)f(the)g(stream)f(\(read,)h(write,)g(or)g(b)r(oth\).)36 +b(Those)25 b(functions)g(that)g(are)515 4907 y(not)k(required)e(b)n(y)i +(the)g(sp)r(eci\034ed)g(in)n(ten)n(t)g(\(lik)n(e)g(the)g(input)h +(function)f(for)f Fm(lcd_str)e Fq(whic)n(h)515 5006 y(is)h(sp)r +(eci\034ed)h(to)f(only)h(p)r(erform)f(output)h(op)r(erations\))e(can)h +(b)r(e)h(giv)n(en)f(as)g Fm(NULL)p Fq(.)p 515 5179 V +515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 341 357 +TeXDict begin 341 356 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(341)p 515 236 +2865 4 v 515 523 a Fq(The)34 b(stream)f Fm(uart_str)e +Fq(corresp)r(onds)h(to)i(input)h(and)f(output)h(op)r(erations)e(p)r +(erformed)515 623 y(o)n(v)n(er)20 b(the)j(RS-232)e(connection)h(to)h(a) +f(terminal)g(\(e.g.)35 b(from/to)21 b(a)h(PC)h(running)f(a)g(terminal) +515 722 y(program\),)d(while)f(the)i Fm(lcd_str)15 b +Fq(stream)j(pro)n(vides)g(a)g(metho)r(d)h(to)g(displa)n(y)f(c)n +(haracter)f(data)515 822 y(on)27 b(the)h(LCD)g(text)g(displa)n(y)-7 +b(.)515 969 y(The)57 b(function)g Fm(delay_1s\(\))c Fq(susp)r(ends)k +(program)e(execution)i(for)f(appro)n(ximately)515 1068 +y(one)48 b(second.)100 b(This)49 b(is)g(done)g(using)f(the)i +Fm(_delay_ms\(\))38 b(\()p Fq(p.)15 b Fm(295\))47 b Fq(function)i(from) +515 1168 y Fo(<)p Fm(util/delay.h)38 b(\()p Fq(p.)14 +b Fm(361\))p Fo(>)32 b Fq(whic)n(h)j(in)f(turn)h(needs)f(the)h +Fm(F_CPU)d Fq(macro)i(in)g(order)f(to)515 1268 y(adjust)f(the)h(cycle)f +(coun)n(ts.)51 b(As)32 b(the)h Fm(_delay_ms\(\))39 b(\()p +Fq(p.)14 b Fm(295\))31 b Fq(function)i(has)e(a)h(limited)515 +1367 y(range)24 b(of)i(allo)n(w)n(able)e(argumen)n(t)h(v)-5 +b(alues)26 b(\(dep)r(ending)g(on)g Fm(F_CPU)p Fq(\),)e(a)i(v)-5 +b(alue)26 b(of)g(10)f(ms)h(has)515 1467 y(b)r(een)32 +b(c)n(hosen)e(as)h(the)h(base)f(dela)n(y)f(whic)n(h)h(w)n(ould)g(b)r(e) +h(safe)f(for)g(CPU)i(frequencies)d(of)i(up)515 1567 y(to)26 +b(ab)r(out)g(26)g(MHz.)37 b(This)26 b(function)h(is)g(then)g(called)f +(100)f(times)h(to)h(accomo)r(date)e(for)h(the)515 1666 +y(actual)h(one-second)f(dela)n(y)-7 b(.)515 1813 y(In)26 +b(a)g(practical)f(application,)h(long)f(dela)n(ys)g(lik)n(e)h(this)g +(one)g(w)n(ere)f(b)r(etter)i(b)r(e)f(handled)h(b)n(y)e(a)515 +1913 y(hardw)n(are)i(timer,)j(so)f(the)g(main)h(CPU)g(w)n(ould)f(b)r(e) +h(free)f(for)g(other)g(tasks)f(while)i(w)n(aiting,)515 +2012 y(or)c(could)i(b)r(e)g(put)g(on)f(sleep.)515 2159 +y(A)n(t)e(the)g(b)r(eginning)f(of)h Fm(main\(\))p Fq(,)e(after)h +(initializing)g(the)h(p)r(eripheral)f(devices,)h(the)g(default)515 +2259 y(stdio)f(streams)e Fm(stdin)p Fq(,)h Fm(stdout)p +Fq(,)f(and)i Fm(stderr)e Fq(are)h(set)h(up)g(b)n(y)g(using)f(the)i +(existing)e(static)515 2358 y Fm(FILE)f Fq(stream)h(ob)5 +b(jects.)35 b(While)25 b(this)f(is)g(not)f(mandatory)-7 +b(,)24 b(the)g(a)n(v)-5 b(ailabilit)n(y)23 b(of)g Fm(stdin)f +Fq(and)515 2458 y Fm(stdout)k Fq(allo)n(ws)i(to)h(use)g(the)g +(shorthand)f(functions)h(\(e.g.)41 b Fm(printf\(\))g(\()p +Fq(p.)14 b Fm(180\))27 b Fq(instead)515 2558 y(of)45 +b Fm(fprintf\(\))39 b(\()p Fq(p.)15 b Fm(178\))p Fq(\),)40 +b(and)e Fm(stderr)e Fq(can)i(mnemonically)g(b)r(e)h(referred)f(to)g +(when)515 2657 y(sending)27 b(out)g(diagnostic)g(messages.)515 +2804 y(Just)g(for)g(demonstration)g(purp)r(oses,)g Fm(stdin)e +Fq(and)j Fm(stdout)d Fq(are)i(connected)g(to)h(a)f(stream)515 +2904 y(that)f(will)f(p)r(erform)g(UAR)-7 b(T)27 b(IO,)e(while)g +Fm(stderr)e Fq(is)j(arranged)d(to)j(output)g(its)f(data)g(to)h(the)515 +3003 y(LCD)i(text)g(displa)n(y)-7 b(.)515 3150 y(Finally)g(,)35 +b(a)e(main)g(lo)r(op)g(follo)n(ws)g(that)h(accepts)e(simple)i +("commands")e(en)n(tered)h(via)g(the)515 3250 y(RS-232)24 +b(connection,)h(and)g(p)r(erforms)g(a)g(few)g(simple)h(actions)e(based) +h(on)g(the)h(commands.)515 3397 y(First,)d(a)e(prompt)h(is)g(sen)n(t)f +(out)h(using)h Fm(printf_P\(\))39 b(\()p Fq(p.)14 b Fm(180\))21 +b Fq(\(whic)n(h)h(tak)n(es)e(a)i Fs(program)515 3496 +y(space)31 b(string)d Fq(\(p.)14 b(260\)\).)36 b(The)28 +b(string)e(is)h(read)f(in)n(to)h(an)g(in)n(ternal)f(bu\033er)i(as)e +(one)h(line)g(of)515 3596 y(input,)k(using)f Fm(fgets\(\))41 +b(\()p Fq(p.)14 b Fm(178\))p Fq(.)41 b(While)30 b(it)g(w)n(ould)f(b)r +(e)h(also)f(p)r(ossible)g(to)g(use)h Fm(gets\(\))515 +3696 y(\()p Fq(p.)14 b Fm(179\))29 b Fq(\(whic)n(h)i(implicitly)h +(reads)e(from)g Fm(stdin)p Fq(\),)g Fm(gets\(\))41 b(\()p +Fq(p.)14 b Fm(179\))30 b Fq(has)g(no)g(con)n(trol)515 +3795 y(that)j(the)g(user's)f(input)h(do)r(es)f(not)h(o)n(v)n(er\035o)n +(w)d(the)j(input)h(bu\033er)f(pro)n(vided)e(so)h(it)h(should)515 +3895 y(nev)n(er)26 b(b)r(e)i(used)g(at)f(all.)515 4042 +y(If)42 b Fm(fgets\(\))e(\()p Fq(p.)15 b Fm(178\))33 +b Fq(fails)i(to)g(read)f(an)n(ything,)j(the)e(main)g(lo)r(op)g(is)g +(left.)60 b(Of)35 b(course,)515 4141 y(normally)e(the)i(main)f(lo)r(op) +h(of)f(a)g(micro)r(con)n(troller)e(application)i(is)g(supp)r(osed)h(to) +f(nev)n(er)515 4241 y(\034nish,)25 b(but)g(again,)f(for)g +(demonstrational)f(purp)r(oses,)h(this)h(explains)f(the)h(error)d +(handling)515 4341 y(of)g(stdio.)34 b Fm(fgets\(\))41 +b(\()p Fq(p.)14 b Fm(178\))20 b Fq(will)i(return)g(NULL)g(in)g(case)f +(of)h(an)f(input)i(error)d(or)h(end-of-)515 4440 y(\034le)k(condition)g +(on)g(input.)37 b(Both)26 b(these)f(conditions)g(are)f(in)i(the)g +(domain)e(of)i(the)g(function)515 4540 y(that)35 b(is)h(used)f(to)h +(establish)f(the)h(stream,)g Fm(uart_putchar\(\))30 b +Fq(in)36 b(this)f(case.)60 b(In)36 b(short,)515 4640 +y(this)31 b(function)h(returns)f(EOF)g(in)h(case)e(of)h(a)g(serial)f +(line)i("break")d(condition)i(\(extended)515 4739 y(start)g +(condition\))g(has)g(b)r(een)h(recognized)e(on)h(the)h(serial)e(line.) +49 b(Common)30 b(PC)i(terminal)515 4839 y(programs)c(allo)n(w)i(to)h +(assert)f(this)h(condition)g(as)g(some)f(kind)h(of)g(out-of-band)f +(signalling)515 4938 y(on)d(an)g(RS-232)f(connection.)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 342 358 +TeXDict begin 342 357 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(342)p 515 236 +2865 4 v 515 523 a Fq(When)22 b(lea)n(ving)d(the)j(main)f(lo)r(op,)h(a) +f(go)r(o)r(db)n(y)n(e)f(message)g(is)h(sen)n(t)g(to)g(standard)f(error) +g(output)515 623 y(\(i.e.)46 b(to)30 b(the)h(LCD\),)g(follo)n(w)n(ed)f +(b)n(y)g(three)g(dots)h(in)f(one-second)f(spacing,)i(follo)n(w)n(ed)e +(b)n(y)h(a)515 722 y(sequence)f(that)i(will)g(clear)e(the)i(LCD.)f +(Finally)-7 b(,)31 b Fm(main\(\))d Fq(will)j(b)r(e)g(terminated,)g(and) +f(the)515 822 y(library)25 b(will)i(add)f(an)h(in\034nite)g(lo)r(op,)g +(so)f(only)g(a)g(CPU)h(reset)g(will)f(b)r(e)h(able)g(to)f(restart)g +(the)515 922 y(application.)515 1068 y(There)i(are)f(three)i +("commands")e(recognized,)g(eac)n(h)h(determined)h(b)n(y)f(the)h +(\034rst)f(letter)h(of)515 1168 y(the)f(line)f(en)n(tered)h(\(con)n(v)n +(erted)e(to)h(lo)n(w)n(er)f(case\):)639 1376 y Fk(\210)41 +b Fq(The)28 b('q')f(\(quit\))i(command)e(has)g(the)h(same)f(e\033ect)h +(of)g(lea)n(ving)e(the)i(main)f(lo)r(op.)639 1534 y Fk(\210)41 +b Fq(The)34 b('l')f(\(LCD\))h(command)f(tak)n(es)f(its)i(second)e +(argumen)n(t,)i(and)f(sends)g(it)h(to)f(the)722 1634 +y(LCD.)639 1791 y Fk(\210)41 b Fq(The)31 b('u')g(\(UAR)-7 +b(T\))32 b(command)e(tak)n(es)f(its)i(second)f(argumen)n(t,)g(and)h +(sends)f(it)h(bac)n(k)722 1891 y(to)d(the)g(UAR)-7 b(T)28 +b(connection.)515 2099 y(Command)h(recognition)f(is)h(done)g(using)h +Fm(sscanf\(\))40 b(\()p Fq(p.)14 b Fm(181\))28 b Fq(where)h(the)h +(\034rst)f(format)515 2199 y(in)e(the)g(format)f(string)h(just)g(skips) +g(o)n(v)n(er)e(the)i(command)f(itself)i(\(as)e(the)i(assignmen)n(t)d +(sup-)515 2298 y(pression)h(mo)r(di\034er)h Fh(\003)h +Fq(is)f(giv)n(en\).)515 2558 y Fs(22.38.3.2)92 b(de\034nes.h)82 +b Fq(This)27 b(\034le)h(just)g(con)n(tains)f(a)g(few)h(p)r(eripheral)f +(de\034nitions.)515 2705 y(The)k Fm(F_CPU)e Fq(macro)h(de\034nes)h(the) +g(CPU)h(clo)r(c)n(k)f(frequency)-7 b(,)31 b(to)g(b)r(e)h(used)f(in)g +(dela)n(y)g(lo)r(ops,)515 2804 y(as)c(w)n(ell)g(as)g(in)h(the)g(UAR)-7 +b(T)28 b(baud)f(rate)g(calculation.)515 2951 y(The)i(macro)e +Fm(UART_BAUD)e Fq(de\034nes)k(the)g(RS-232)e(baud)i(rate.)40 +b(Dep)r(ending)29 b(on)g(the)g(actual)515 3051 y(CPU)f(frequency)-7 +b(,)27 b(only)g(a)h(limited)g(range)e(of)i(baud)f(rates)g(can)g(b)r(e)h +(supp)r(orted.)515 3198 y(The)33 b(remaining)f(macros)f(customize)h +(the)i(IO)e(p)r(ort)h(and)f(pins)h(used)g(for)g(the)g(HD44780)515 +3297 y(LCD)28 b(driv)n(er.)515 3557 y Fs(22.38.3.3)92 +b(hd44780.h)81 b Fq(This)20 b(\034le)h(describ)r(es)e(the)i(public)g +(in)n(terface)e(of)h(the)h(lo)n(w-lev)n(el)515 3656 y(LCD)g(driv)n(er)f +(that)h(in)n(terfaces)f(to)h(the)g(HD44780)e(LCD)i(con)n(troller.)33 +b(Public)22 b(functions)f(are)515 3756 y(a)n(v)-5 b(ailable)26 +b(to)i(initialize)g(the)g(con)n(troller)e(in)n(to)i(4-bit)f(mo)r(de,)h +(to)g(w)n(ait)g(for)f(the)h(con)n(troller's)515 3855 +y(busy)f(bit)h(to)g(b)r(e)g(clear,)e(and)i(to)f(read)g(or)f(write)i +(one)f(b)n(yte)g(from)h(or)e(to)i(the)g(con)n(troller.)515 +4002 y(As)35 b(there)f(are)g(t)n(w)n(o)g(di\033eren)n(t)h(forms)f(of)h +(con)n(troller)e(IO,)h(one)h(to)f(send)h(a)g(command)f(or)515 +4102 y(receiv)n(e)29 b(the)h(con)n(troller)f(status)h(\(RS)h(signal)e +(clear\),)h(and)g(one)g(to)g(send)g(or)g(receiv)n(e)f(data)515 +4202 y(to/from)h(the)i(con)n(troller's)e(SRAM)i(\(RS)g(asserted\),)g +(macros)e(are)g(pro)n(vided)h(that)h(build)515 4301 y(on)27 +b(the)h(men)n(tioned)f(function)i(primitiv)n(es.)515 +4448 y(Finally)-7 b(,)31 b(macros)e(are)g(pro)n(vided)g(for)h(all)g +(the)h(con)n(troller)d(commands)i(to)g(allo)n(w)f(them)i(to)515 +4548 y(b)r(e)c(used)f(sym)n(b)r(olically)-7 b(.)35 b(The)27 +b(HD44780)e(datasheet)g(explains)h(these)h(basic)e(functions)i(of)515 +4647 y(the)h(con)n(troller)d(in)j(more)f(detail.)515 +4907 y Fs(22.38.3.4)92 b(hd44780.c)82 b Fq(This)26 b(is)f(the)i +(implemen)n(tation)e(of)h(the)h(lo)n(w-lev)n(el)d(HD44780)515 +5006 y(LCD)k(con)n(troller)d(driv)n(er.)p 515 5179 V +515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 343 359 +TeXDict begin 343 358 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(343)p 515 236 +2865 4 v 515 523 a Fq(On)28 b(top,)h(a)f(few)h(prepro)r(cessor)d +(glueing)h(tric)n(ks)h(are)f(used)i(to)f(establish)g(sym)n(b)r(olic)g +(access)515 623 y(to)40 b(the)h(hardw)n(are)e(p)r(ort)h(pins)h(the)g +(LCD)g(con)n(troller)e(is)h(attac)n(hed)g(to,)k(based)c(on)h(the)515 +722 y(application's)26 b(de\034nitions)i(made)f(in)h +Fs(de\034nes.h)f Fq(\(p.)14 b(342\).)515 869 y(The)38 +b Fm(hd44780_pulse_e\()o(\))32 b Fq(function)39 b(asserts)e(a)h(short)g +(pulse)g(to)g(the)h(con)n(troller's)e(E)515 969 y(\(enable\))26 +b(pin.)36 b(Since)26 b(reading)e(bac)n(k)h(the)h(data)f(asserted)f(b)n +(y)i(the)g(LCD)g(con)n(troller)d(needs)515 1068 y(to)36 +b(b)r(e)h(p)r(erformed)f(while)g(E)h(is)f(activ)n(e,)i(this)f(function) +g(reads)e(and)h(returns)g(the)g(input)515 1168 y(data)28 +b(if)g(the)h(parameter)e Fm(readback)e Fq(is)j(true.)39 +b(When)29 b(called)f(with)h(a)f(compile-time)g(con-)515 +1268 y(stan)n(t)d(parameter)e(that)j(is)f(false,)h(the)f(compiler)g +(will)g(completely)g(eliminate)h(the)f(un)n(used)515 +1367 y(readbac)n(k)g(op)r(eration,)i(as)g(w)n(ell)g(as)g(the)h(return)f +(v)-5 b(alue)27 b(as)g(part)g(of)h(its)g(optimizations.)515 +1514 y(As)45 b(the)g(con)n(troller)d(is)j(used)g(in)f(4-bit)h(in)n +(terface)f(mo)r(de,)49 b(all)44 b(b)n(yte)h(IO)f(to/from)g(the)515 +1614 y(con)n(troller)35 b(needs)i(to)g(b)r(e)g(handled)g(as)f(t)n(w)n +(o)h(nibble)g(IOs.)64 b(The)38 b(functions)f Fm(hd44780_-)515 +1713 y(outnibble\(\))19 b Fq(and)k Fm(hd44780_innibbl)o(e\(\))17 +b Fq(implemen)n(t)24 b(this.)35 b(They)24 b(do)f(not)g(b)r(elong)g(to) +515 1813 y(the)28 b(public)g(in)n(terface,)f(so)g(they)g(are)g +(declared)f(static.)515 1960 y(Building)j(up)r(on)g(these,)g(the)h +(public)f(functions)g Fm(hd44780_outbyte\()o(\))23 b +Fq(and)29 b Fm(hd44780_-)515 2060 y(inbyte\(\))24 b Fq(transfer)j(one)g +(b)n(yte)g(to/from)g(the)h(con)n(troller.)515 2206 y(The)f(function)h +Fm(hd44780_wait_re)o(ady)o(\(\))21 b Fq(w)n(aits)26 b(for)h(the)h(con)n +(troller)d(to)i(b)r(ecome)g(ready)-7 b(,)515 2306 y(b)n(y)32 +b(con)n(tin)n(uously)g(p)r(olling)g(the)h(con)n(troller's)e(status)i +(\(whic)n(h)g(is)f(read)g(b)n(y)h(p)r(erforming)e(a)515 +2406 y(b)n(yte)c(read)g(with)h(the)g(RS)h(signal)d(cleard\),)h(and)h +(examining)f(the)h(BUSY)g(\035ag)f(within)i(the)515 2505 +y(status)h(b)n(yte.)45 b(This)30 b(function)h(needs)g(to)f(b)r(e)h +(called)f(b)r(efore)g(p)r(erforming)f(an)n(y)h(con)n(troller)515 +2605 y(IO.)515 2752 y(Finally)-7 b(,)31 b Fm(hd44780_init\(\))24 +b Fq(initializes)30 b(the)g(LCD)h(con)n(troller)d(in)n(to)i(4-bit)g(mo) +r(de,)h(based)515 2851 y(on)i(the)g(initialization)g(sequence)g +(mandated)g(b)n(y)g(the)h(datasheet.)53 b(As)33 b(the)h(BUSY)g(\035ag) +515 2951 y(cannot)c(b)r(e)i(examined)f(y)n(et)g(at)g(this)h(p)r(oin)n +(t,)g(this)g(is)f(the)g(only)g(part)g(of)g(this)h(co)r(de)f(where)515 +3051 y(timed)26 b(dela)n(ys)f(are)g(used.)36 b(While)27 +b(the)f(con)n(troller)e(can)i(p)r(erform)f(a)h(p)r(o)n(w)n(er-on)e +(reset)h(when)515 3150 y(certain)34 b(constrain)n(ts)f(on)h(the)h(p)r +(o)n(w)n(er)e(supply)h(rise)g(time)h(are)f(met,)i(alw)n(a)n(ys)d +(calling)h(the)515 3250 y(soft)n(w)n(are)17 b(initialization)i(routine) +f(at)h(startup)g(ensures)f(the)i(con)n(troller)d(will)i(b)r(e)h(in)f(a) +g(kno)n(wn)515 3350 y(state.)49 b(This)32 b(function)h(also)e(puts)h +(the)g(in)n(terface)f(in)n(to)h(4-bit)g(mo)r(de)g(\(whic)n(h)g(w)n +(ould)f(not)515 3449 y(b)r(e)d(done)f(automatically)f(after)i(a)f(p)r +(o)n(w)n(er-on)e(reset\).)515 3706 y Fs(22.38.3.5)92 +b(lcd.h)83 b Fq(This)36 b(function)h(declares)d(the)j(public)g(in)n +(terface)e(of)i(the)f(higher-)515 3806 y(lev)n(el)27 +b(\(c)n(haracter)f(IO\))h(LCD)h(driv)n(er.)515 4062 y +Fs(22.38.3.6)92 b(lcd.c)83 b Fq(The)33 b(implemen)n(tation)g(of)g(the)g +(higher-lev)n(el)e(LCD)j(driv)n(er.)51 b(This)515 4162 +y(driv)n(er)20 b(builds)h(on)g(top)g(of)g(the)h(HD44780)d(lo)n(w-lev)n +(el)h(LCD)i(con)n(troller)d(driv)n(er,)i(and)g(o\033ers)f(a)515 +4262 y(c)n(haracter)d(IO)i(in)n(terface)f(suitable)h(for)g(direct)g +(use)g(b)n(y)g(the)g(standard)f(IO)h(facilities.)34 b(Where)515 +4361 y(the)26 b(lo)n(w-lev)n(el)f(HD44780)f(driv)n(er)h(deals)h(with)g +(setting)g(up)h(con)n(troller)d(SRAM)j(addresses,)515 +4461 y(writing)35 b(data)g(to)h(the)g(con)n(troller's)e(SRAM,)j(and)e +(con)n(trolling)f(displa)n(y)h(functions)h(lik)n(e)515 +4560 y(clearing)30 b(the)h(displa)n(y)-7 b(,)32 b(or)e(mo)n(ving)g(the) +i(cursor,)e(this)i(high-lev)n(el)e(driv)n(er)g(allo)n(ws)f(to)j(just) +515 4660 y(write)26 b(a)g(c)n(haracter)f(to)h(the)h(LCD,)g(in)g(the)g +(assumption)f(this)h(will)g(someho)n(w)e(sho)n(w)g(up)i(on)515 +4760 y(the)h(displa)n(y)-7 b(.)515 4907 y(Con)n(trol)33 +b(c)n(haracters)f(can)i(b)r(e)h(handled)g(at)f(this)h(lev)n(el,)h(and)e +(used)h(to)f(p)r(erform)g(sp)r(eci\034c)515 5006 y(actions)24 +b(on)h(the)h(LCD.)g(Curren)n(tly)-7 b(,)25 b(there)g(is)h(only)f(one)g +(con)n(trol)f(c)n(haracter)f(that)j(is)f(b)r(eing)p 515 +5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 344 360 +TeXDict begin 344 359 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(344)p 515 236 +2865 4 v 515 523 a Fq(dealt)21 b(with:)34 b(a)21 b(newline)h(c)n +(haracter)d(\()p Fh(n)p Fm(n)p Fq(\))i(is)g(tak)n(en)g(as)g(an)g +(indication)g(to)g(clear)f(the)i(displa)n(y)515 623 y(and)k(set)h(the)g +(cursor)e(in)n(to)h(its)h(initial)g(p)r(osition)g(up)r(on)g(reception)f +(of)g(the)h(next)g(c)n(haracter,)515 722 y(so)21 b(a)h("new)g(line")f +(of)i(text)f(can)g(b)r(e)g(displa)n(y)n(ed.)34 b(Therefore,)22 +b(a)g(receiv)n(ed)f(newline)h(c)n(haracter)515 822 y(is)h(remem)n(b)r +(ered)f(un)n(til)i(more)f(c)n(haracters)e(ha)n(v)n(e)h(b)r(een)h(sen)n +(t)h(b)n(y)f(the)g(application,)h(and)f(will)515 922 +y(only)34 b(then)i(cause)e(the)h(displa)n(y)g(to)g(b)r(e)g(cleared)f(b) +r(efore)h(con)n(tin)n(uing.)58 b(This)35 b(pro)n(vides)e(a)515 +1021 y(con)n(v)n(enien)n(t)22 b(abstraction)g(where)g(full)i(lines)g +(of)f(text)g(can)g(b)r(e)h(sen)n(t)f(to)g(the)h(driv)n(er,)f(and)g +(will)515 1121 y(remain)k(visible)g(at)g(the)h(LCD)g(un)n(til)g(the)g +(next)g(line)g(is)f(to)h(b)r(e)g(displa)n(y)n(ed.)515 +1268 y(F)-7 b(urther)33 b(con)n(trol)f(c)n(haracters)g(could)h(b)r(e)h +(implemen)n(ted,)i(e.)55 b(g.)f(using)33 b(a)h(set)f(of)h(escap)r(e)515 +1367 y(sequences.)54 b(That)34 b(w)n(a)n(y)-7 b(,)34 +b(it)g(w)n(ould)g(b)r(e)g(p)r(ossible)f(to)h(implemen)n(t)g +(self-scrolling)e(displa)n(y)515 1467 y(lines)27 b(etc.)515 +1614 y(The)j(public)h(function)f Fm(lcd_init\(\))d Fq(\034rst)i(calls)h +(the)h(initialization)f(en)n(try)f(p)r(oin)n(t)i(of)f(the)515 +1713 y(lo)n(w)n(er-lev)n(el)i(HD44780)h(driv)n(er,)j(and)e(then)i(sets) +e(up)h(the)h(LCD)f(in)g(a)f(w)n(a)n(y)g(w)n(e'd)h(lik)n(e)f(to)515 +1813 y(\(displa)n(y)e(cleared,)i(non-blinking)f(cursor)e(enabled,)k +(SRAM)f(addresses)d(are)i(increasing)515 1913 y(so)27 +b(c)n(haracters)e(will)j(b)r(e)g(written)f(left)i(to)e(righ)n(t\).)515 +2060 y(The)i(public)h(function)h Fm(lcd_putchar\(\))24 +b Fq(tak)n(es)k(argumen)n(ts)h(that)g(mak)n(e)g(it)h(suitable)g(for)515 +2159 y(b)r(eing)24 b(passed)g(as)g(a)g Fm(put\(\))e Fq(function)j(p)r +(oin)n(ter)f(to)g(the)h(stdio)f(stream)g(initialization)g(func-)515 +2259 y(tions)d(and)f(macros)g(\()p Fm(fdevopen\(\))39 +b(\()p Fq(p.)15 b Fm(177\))p Fq(,)20 b Fm(FDEV_SETUP_STREAM)o(\(\))37 +b(\()p Fq(p.)14 b Fm(174\))20 b Fq(etc.\).)515 2358 y(Th)n(us,)26 +b(it)h(tak)n(es)e(t)n(w)n(o)h(argumen)n(ts,)f(the)i(c)n(haracter)d(to)j +(displa)n(y)e(itself,)j(and)e(a)g(reference)f(to)515 +2458 y(the)j(underlying)f(stream)f(ob)5 b(ject,)28 b(and)f(it)h(is)g +(exp)r(ected)f(to)h(return)f(0)g(up)r(on)h(success.)515 +2605 y(This)38 b(function)h(remem)n(b)r(ers)f(the)h(last)f(unpro)r +(cessed)g(newline)g(c)n(haracter)f(seen)h(in)h(the)515 +2705 y(function-lo)r(cal)27 b(static)g(v)-5 b(ariable)27 +b Fm(nl_seen)p Fq(.)34 b(If)28 b(a)f(newline)h(c)n(haracter)d(is)j +(encoun)n(tered,)f(it)515 2804 y(will)k(simply)f(set)h(this)g(v)-5 +b(ariable)30 b(to)h(a)f(true)h(v)-5 b(alue,)31 b(and)g(return)f(to)g +(the)i(caller.)45 b(As)31 b(so)r(on)515 2904 y(as)24 +b(the)h(\034rst)g(non-newline)g(c)n(haracter)d(is)j(to)g(b)r(e)h +(displa)n(y)n(ed)d(with)j Fm(nl_seen)c Fq(still)j(true,)h(the)515 +3003 y(LCD)i(con)n(troller)e(is)h(told)h(to)f(clear)g(the)h(displa)n(y) +-7 b(,)27 b(put)i(the)f(cursor)e(home,)h(and)h(restart)e(at)515 +3103 y(SRAM)i(address)e(0.)37 b(All)28 b(other)f(c)n(haracters)e(are)h +(sen)n(t)i(to)f(the)h(displa)n(y)-7 b(.)515 3250 y(The)30 +b(single)g(static)h(function-in)n(ternal)f(v)-5 b(ariable)29 +b Fm(nl_seen)f Fq(w)n(orks)h(for)h(this)g(purp)r(ose.)46 +b(If)515 3350 y(m)n(ultiple)26 b(LCDs)f(should)h(b)r(e)g(con)n(trolled) +e(using)h(the)h(same)f(set)h(of)f(driv)n(er)g(functions,)h(that)515 +3449 y(w)n(ould)e(not)i(w)n(ork)d(an)n(ymore,)i(as)f(a)h(w)n(a)n(y)f +(is)h(needed)g(to)g(distinguish)h(b)r(et)n(w)n(een)f(the)g(v)-5 +b(arious)515 3549 y(displa)n(ys.)68 b(This)38 b(is)g(where)g(the)h +(second)f(parameter)e(can)i(b)r(e)h(used,)i(the)e(reference)e(to)515 +3648 y(the)d(stream)e(itself:)49 b(instead)34 b(of)f(k)n(eeping)g(the)h +(state)f(inside)h(a)f(priv)-5 b(ate)33 b(v)-5 b(ariable)32 +b(of)i(the)515 3748 y(function,)f(it)f(can)f(b)r(e)h(k)n(ept)f(inside)h +(a)f(priv)-5 b(ate)31 b(ob)5 b(ject)31 b(that)h(is)g(attac)n(hed)f(to)g +(the)h(stream)515 3848 y(itself.)58 b(A)34 b(reference)g(to)g(that)h +(priv)-5 b(ate)34 b(ob)5 b(ject)34 b(can)g(b)r(e)h(attac)n(hed)f(to)g +(the)h(stream)e(\(e.g.)515 3947 y(inside)g(the)g(function)h +Fm(lcd_init\(\))29 b Fq(that)34 b(then)f(also)f(needs)h(to)g(b)r(e)h +(passed)e(a)h(reference)515 4047 y(to)f(the)g(stream\))f(using)i +Fm(fdev_set_udata\(\))k(\()p Fq(p.)14 b Fm(174\))p Fq(,)32 +b(and)f(can)h(b)r(e)g(accessed)f(inside)515 4147 y Fm(lcd_putchar\(\)) +22 b Fq(using)28 b Fs(fdev_get_udata\(\))i Fq(\(p.)14 +b(174\).)515 4410 y Fs(22.38.3.7)92 b(uart.h)83 b Fq(Public)35 +b(in)n(terface)d(de\034nition)i(for)f(the)g(RS-232)f(UAR)-7 +b(T)34 b(driv)n(er,)515 4509 y(m)n(uc)n(h)29 b(lik)n(e)f(in)h +Fs(lcd.h)g Fq(\(p.)14 b(343\))28 b(except)h(there)g(is)g(no)n(w)f(also) +g(a)h(c)n(haracter)e(input)j(function)515 4609 y(a)n(v)-5 +b(ailable.)515 4756 y(As)36 b(the)g(RS-232)f(input)h(is)g +(line-bu\033ered)g(in)g(this)h(example,)g(the)g(macro)d +Fm(RX_BUFSIZE)515 4855 y Fq(determines)27 b(the)h(size)f(of)h(that)g +(bu\033er.)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 345 361 +TeXDict begin 345 360 bop 515 203 a Fs(22.38)94 b(Using)31 +b(the)g(standard)i(IO)f(facilities)1091 b(345)p 515 236 +2865 4 v 515 523 a(22.38.3.8)92 b(uart.c)84 b Fq(This)25 +b(implemen)n(ts)g(an)g(stdio-compatible)f(RS-232)g(driv)n(er)f(using) +515 623 y(an)g(A)-9 b(VR's)23 b(standard)f(UAR)-7 b(T)24 +b(\(or)f(USAR)-7 b(T)24 b(in)f(async)n(hronous)e(op)r(eration)h(mo)r +(de\).)35 b(Both,)515 722 y(c)n(haracter)25 b(output)j(as)f(w)n(ell)g +(as)g(c)n(haracter)f(input)i(op)r(erations)e(are)h(implemen)n(ted.)37 +b(Char-)515 822 y(acter)31 b(output)i(tak)n(es)f(care)f(of)i(con)n(v)n +(erting)d(the)j(in)n(ternal)f(newline)g Fh(n)p Fm(n)g +Fq(in)n(to)g(its)h(external)515 922 y(represen)n(tation)25 +b(carriage)g(return/line)i(feed)h(\()p Fh(n)p Fm(r)p +Fh(n)p Fm(n)p Fq(\).)515 1068 y(Character)j(input)j(is)f(organized)e +(as)h(a)h(line-bu\033ered)g(op)r(eration)f(that)h(allo)n(ws)f(to)h +(mini-)515 1168 y(mally)h(edit)h(the)f(curren)n(t)g(line)h(un)n(til)f +(it)h(is)g("sen)n(t")e(to)h(the)h(application)f(when)g(either)g(a)515 +1268 y(carriage)19 b(return)h(\()p Fh(n)p Fm(r)p Fq(\))h(or)g(newline)g +(\()p Fh(n)p Fm(n)p Fq(\))g(c)n(haracter)f(is)h(receiv)n(ed)f(from)h +(the)h(terminal.)34 b(The)515 1367 y(line)28 b(editing)f(functions)h +(implemen)n(ted)g(are:)639 1597 y Fk(\210)41 b Fh(n)p +Fm(b)27 b Fq(\(bac)n(k)g(space\))g(or)g Fh(n)p Fm(177)f +Fq(\(delete\))i(deletes)g(the)f(previous)g(c)n(haracter)639 +1763 y Fk(\210)722 1733 y Fa(^)771 1763 y Fq(u)h(\(con)n(trol-U,)e +(ASCI)r(I)j(NAK\))f(deletes)f(the)h(en)n(tire)f(input)i(bu\033er)639 +1929 y Fk(\210)722 1899 y Fa(^)771 1929 y Fq(w)k(\(con)n(trol-W,)e +(ASCI)r(I)j(ETB\))f(deletes)g(the)g(previous)e(input)j(w)n(ord,)e +(delimited)722 2029 y(b)n(y)c(white)g(space)639 2195 +y Fk(\210)722 2165 y Fa(^)771 2195 y Fq(r)f(\(con)n(trol-R,)g(ASCI)r(I) +h(DC2\))g(sends)f(a)g Fh(n)p Fm(r)p Fq(,)g(then)h(reprin)n(ts)f(the)h +(bu\033er)f(\(refresh\))639 2361 y Fk(\210)41 b Fh(n)p +Fm(t)27 b Fq(\(tabulator\))g(will)h(b)r(e)g(replaced)f(b)n(y)g(a)g +(single)g(space)515 2591 y(The)33 b(function)g Fm(uart_init\(\))28 +b Fq(tak)n(es)k(care)f(of)i(all)f(hardw)n(are)f(initialization)h(that)h +(is)g(re-)515 2691 y(quired)38 b(to)g(put)i(the)f(UAR)-7 +b(T)39 b(in)n(to)f(a)g(mo)r(de)h(with)g(8)f(data)h(bits,)i(no)e(parit)n +(y)-7 b(,)40 b(one)e(stop)515 2790 y(bit)e(\(commonly)g(referred)f(to)h +(as)g(8N1\))g(at)g(the)g(baud)g(rate)g(con\034gured)f(in)h +Fs(de\034nes.h)515 2890 y Fq(\(p.)14 b(342\).)59 b(A)n(t)36 +b(lo)n(w)e(CPU)j(clo)r(c)n(k)d(frequencies,)j(the)f Fm(U2X)e +Fq(bit)i(in)f(the)h(UAR)-7 b(T)36 b(is)g(set,)h(re-)515 +2989 y(ducing)27 b(the)h(o)n(v)n(ersampling)d(from)i(16x)g(to)g(8x,)g +(whic)n(h)h(allo)n(ws)e(for)h(a)g(9600)f(Bd)h(rate)g(to)h(b)r(e)515 +3089 y(ac)n(hiev)n(ed)e(with)i(tolerable)f(error)e(using)i(the)h +(default)g(1)f(MHz)h(R)n(C)g(oscillator.)515 3236 y(The)34 +b(public)i(function)f Fm(uart_putchar\(\))29 b Fq(again)k(has)h +(suitable)h(argumen)n(ts)e(for)h(direct)515 3336 y(use)39 +b(b)n(y)g(the)h(stdio)f(stream)g(in)n(terface.)72 b(It)39 +b(p)r(erforms)g(the)h Fh(n)p Fm(n)e Fq(in)n(to)i Fh(n)p +Fm(r)p Fh(n)p Fm(n)d Fq(translation)515 3435 y(b)n(y)27 +b(recursiv)n(ely)e(calling)i(itself)h(when)f(it)h(sees)f(a)g +Fh(n)p Fm(n)f Fq(c)n(haracter.)35 b(Just)27 b(for)g(demonstration)515 +3535 y(purp)r(oses,)21 b(the)g Fh(n)p Fm(a)f Fq(\(audible)g(b)r(ell,)j +(ASCI)r(I)e(BEL\))g(c)n(haracter)e(is)h(implemen)n(ted)h(b)n(y)f +(sending)515 3634 y(a)27 b(string)g(to)g Fm(stderr)p +Fq(,)e(so)i(it)h(will)g(b)r(e)g(displa)n(y)n(ed)e(on)i(the)g(LCD.)515 +3781 y(The)33 b(public)g(function)g Fm(uart_getchar\(\))27 +b Fq(implemen)n(ts)33 b(the)g(line)g(editor.)52 b(If)34 +b(there)e(are)515 3881 y(c)n(haracters)24 b(a)n(v)-5 +b(ailable)26 b(in)h(the)g(line)g(bu\033er)g(\(v)-5 b(ariable)26 +b Fm(rxp)g Fq(is)h(not)g Fm(NULL)p Fq(\),)e(the)j(next)f(c)n(har-)515 +3981 y(acter)f(will)i(b)r(e)g(returned)f(from)h(the)f(bu\033er)h +(without)g(an)n(y)f(UAR)-7 b(T)28 b(in)n(teraction.)515 +4127 y(If)h(there)g(are)f(no)g(c)n(haracters)f(inside)i(the)g(line)g +(bu\033er,)h(the)f(input)h(lo)r(op)e(will)h(b)r(e)h(en)n(tered.)515 +4227 y(Characters)16 b(will)j(b)r(e)g(read)e(from)h(the)h(UAR)-7 +b(T,)19 b(and)g(pro)r(cessed)e(accordingly)-7 b(.)32 +b(If)19 b(the)f(UAR)-7 b(T)515 4327 y(signalled)27 b(a)i(framing)e +(error)g(\()p Fm(FE)h Fq(bit)h(set\),)g(t)n(ypically)f(caused)g(b)n(y)g +(the)h(terminal)f(sending)515 4426 y(a)38 b Fl(line)j(br)l(e)l(ak)48 +b Fq(condition)39 b(\(start)f(condition)h(held)g(m)n(uc)n(h)f(longer)g +(than)h(one)f(c)n(haracter)515 4526 y(p)r(erio)r(d\),)h(the)e(function) +g(will)f(return)g(an)h(end-of-\034le)e(condition)i(using)f +Fm(_FDEV_EOF)p Fq(.)d(If)515 4626 y(there)f(w)n(as)g(a)h(data)f(o)n(v)n +(errun)f(condition)i(on)f(input)i(\()p Fm(DOR)e Fq(bit)h(set\),)i(an)d +(error)f(condition)515 4725 y(will)d(b)r(e)f(returned)h(as)e +Fm(_FDEV_ERR)p Fq(.)515 4872 y(Line)32 b(editing)h(c)n(haracters)c(are) +j(handled)g(inside)g(the)h(lo)r(op,)g(p)r(oten)n(tially)f(mo)r(difying) +h(the)515 4972 y(bu\033er)c(status.)42 b(If)29 b(c)n(haracters)e(are)i +(attempted)g(to)h(b)r(e)f(en)n(tered)g(b)r(ey)n(ond)g(the)h(size)e(of)i +(the)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 346 362 +TeXDict begin 346 361 bop 515 203 a Fs(22.39)94 b(Example)31 +b(using)g(the)g(t)m(w)m(o-wire)h(in)m(terface)g(\(TWI\))543 +b(346)p 515 236 2865 4 v 515 523 a Fq(line)25 b(bu\033er,)g(their)g +(reception)f(is)h(refused,)g(and)g(a)f Fh(n)p Fm(a)g +Fq(c)n(haracter)f(is)i(sen)n(t)f(to)h(the)g(terminal.)515 +623 y(If)32 b(a)g Fh(n)p Fm(r)f Fq(or)g Fh(n)p Fm(n)g +Fq(c)n(haracter)e(is)j(seen,)h(the)f(v)-5 b(ariable)31 +b Fm(rxp)g Fq(\(receiv)n(e)g(p)r(oin)n(ter\))g(is)h(set)g(to)g(the)515 +722 y(b)r(eginning)25 b(of)g(the)h(bu\033er,)g(the)f(lo)r(op)g(is)g +(left,)i(and)e(the)g(\034rst)g(c)n(haracter)f(of)h(the)g(bu\033er)h +(will)515 822 y(b)r(e)k(returned)f(to)g(the)h(application.)42 +b(\(If)31 b(no)e(other)g(c)n(haracters)e(ha)n(v)n(e)h(b)r(een)i(en)n +(tered,)g(this)515 922 y(will)d(just)h(b)r(e)f(the)h(newline)f(c)n +(haracter,)e(and)i(the)g(bu\033er)g(is)g(mark)n(ed)f(as)g(b)r(eing)i +(exhausted)515 1021 y(immediately)f(again.\))515 1284 +y Fs(22.38.4)93 b(The)32 b(source)g(co)s(de)515 1485 +y Fq(The)27 b(source)g(co)r(de)g(is)g(installed)h(under)515 +1632 y Fm($prefix/share/d)o(oc/)o(av)o(r-)o(lib)o(c/)o(ex)o(amp)o(le)o +(s/)o(std)o(io)o(dem)o(o/)o Fq(,)515 1778 y(where)f Fm($prefix)f +Fq(is)i(a)f(con\034guration)g(option.)38 b(F)-7 b(or)28 +b(Unix)g(systems,)g(it)g(is)g(usually)g(set)g(to)515 +1878 y(either)f Fm(/usr)f Fq(or)h Fm(/usr/local)p Fq(.)515 +2158 y Fn(22.39)112 b(Example)38 b(using)h(the)e(t)m(w)m(o-wire)g(in)m +(terface)h(\(TWI\))515 2358 y Fq(Some)23 b(new)n(er)f(devices)h(of)g +(the)g(A)-7 b(Tmega)23 b(series)f(con)n(tain)g(builtin)i(supp)r(ort)f +(for)g(in)n(terfacing)515 2458 y(the)28 b(micro)r(con)n(troller)e(to)i +(a)f(t)n(w)n(o-wire)g(bus,)h(called)g(TWI.)g(This)g(is)g(essen)n +(tially)f(the)i(same)515 2557 y(called)h(I2C)g(b)n(y)h(Philips,)h(but)g +(that)f(term)f(is)h(a)n(v)n(oided)e(in)i(A)n(tmel's)g(do)r(cumen)n +(tation)g(due)515 2657 y(to)c(paten)n(ting)g(issues.)515 +2804 y(F)-7 b(or)27 b(the)h(original)e(Philips)i(do)r(cumen)n(tation,)f +(see)515 2951 y Fm(http://www.semi)o(con)o(du)o(ct)o(ors)o(.p)o(hi)o +(lip)o(s.)o(co)o(m/b)o(us)o(es/)o(i2)o(c/)o(ind)o(ex)o(.h)o(tml)515 +3214 y Fs(22.39.1)93 b(In)m(tro)s(duction)32 b(in)m(to)f(TWI)515 +3414 y Fq(The)25 b(t)n(w)n(o-wire)e(in)n(terface)h(consists)g(of)h(t)n +(w)n(o)g(signal)f(lines)h(named)f Fl(SD)n(A)g Fq(\(serial)h(data\))f +(and)515 3514 y Fl(SCL)31 b Fq(\(serial)g(clo)r(c)n(k\))f(\(plus)i(a)f +(ground)f(line,)i(of)f(course\).)47 b(All)32 b(devices)f(participating) +f(in)515 3613 y(the)h(bus)g(are)e(connected)i(together,)f(using)h(op)r +(en-drain)e(driv)n(er)h(circuitry)-7 b(,)31 b(so)f(the)h(wires)515 +3713 y(m)n(ust)k(b)r(e)g(terminated)g(using)g(appropriate)e(pullup)i +(resistors.)57 b(The)35 b(pullups)h(m)n(ust)f(b)r(e)515 +3813 y(small)d(enough)h(to)g(rec)n(harge)d(the)k(line)f(capacit)n(y)f +(in)h(short)f(enough)h(time)g(compared)f(to)515 3912 +y(the)27 b(desired)f(maximal)h(clo)r(c)n(k)f(frequency)-7 +b(,)26 b(y)n(et)h(large)e(enough)i(so)f(all)g(driv)n(ers)g(will)h(not)g +(b)r(e)515 4012 y(o)n(v)n(erloaded.)33 b(There)23 b(are)g(form)n(ulas)g +(in)h(the)h(datasheet)e(that)h(help)h(selecting)e(the)i(pullups.)515 +4159 y(Devices)20 b(can)g(either)h(act)f(as)g(a)g(master)g(to)h(the)g +(bus)g(\(i.)35 b(e.,)22 b(they)e(initiate)h(a)g(transfer\),)g(or)f(as) +515 4258 y(a)26 b(sla)n(v)n(e)f(\(they)i(only)f(act)g(when)h(b)r(eing)g +(called)f(b)n(y)g(a)g(master\).)36 b(The)27 b(bus)f(is)h(m)n +(ulti-master)515 4358 y(capable,)20 b(and)g(a)f(particular)g(device)g +(implemen)n(tation)h(can)f(act)h(as)f(either)h(master)f(or)g(sla)n(v)n +(e)515 4458 y(at)28 b(di\033eren)n(t)g(times.)38 b(Devices)28 +b(are)f(addressed)g(using)h(a)g(7-bit)f(address)g(\(co)r(ordinated)g(b) +n(y)515 4557 y(Philips\))e(transfered)e(as)h(the)h(\034rst)f(b)n(yte)g +(after)g(the)h(so-called)e(start)g(condition.)36 b(The)24 +b(LSB)515 4657 y(of)32 b(that)g(b)n(yte)g(is)g(R/)p Fh(\030)p +Fq(W,)f(i.)51 b(e.)f(it)32 b(determines)g(whether)g(the)g(request)f(to) +h(the)h(sla)n(v)n(e)d(is)515 4757 y(to)g(read)g(or)g(write)g(data)g +(during)g(the)h(next)g(cycles.)45 b(\(There)30 b(is)h(also)e(an)i +(option)f(to)g(ha)n(v)n(e)515 4856 y(devices)d(using)g(10-bit)g +(addresses)f(but)i(that)g(is)f(not)h(co)n(v)n(ered)d(b)n(y)j(this)f +(example.\))p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 347 363 +TeXDict begin 347 362 bop 515 203 a Fs(22.39)94 b(Example)31 +b(using)g(the)g(t)m(w)m(o-wire)h(in)m(terface)g(\(TWI\))543 +b(347)p 515 236 2865 4 v 515 523 a(22.39.2)93 b(The)32 +b(TWI)g(example)f(pro)5 b(ject)515 724 y Fq(The)30 b(A)-7 +b(Tmega)30 b(TWI)h(hardw)n(are)e(supp)r(orts)h(b)r(oth,)h(master)f(and) +g(sla)n(v)n(e)g(op)r(eration.)44 b(This)515 823 y(example)39 +b(will)h(only)f(demonstrate)g(ho)n(w)g(to)g(use)h(an)f(A)-9 +b(VR)41 b(micro)r(con)n(troller)c(as)i(TWI)515 923 y(master.)c(The)25 +b(implemen)n(tation)g(is)g(k)n(ept)f(simple)h(in)g(order)f(to)h(concen) +n(trate)e(on)i(the)g(steps)515 1022 y(that)35 b(are)f(required)f(to)i +(talk)g(to)f(a)h(TWI)g(sla)n(v)n(e,)g(so)f(all)h(pro)r(cessing)e(is)i +(done)f(in)h(p)r(olled-)515 1122 y(mo)r(de,)d(w)n(aiting)e(for)h(the)g +(TWI)g(in)n(terface)g(to)g(indicate)g(that)g(the)g(next)g(pro)r +(cessing)f(step)515 1222 y(is)e(due)h(\(b)n(y)f(setting)h(the)g(TWINT)g +(in)n(terrupt)f(bit\).)41 b(If)29 b(it)g(is)f(desired)g(to)g(ha)n(v)n +(e)g(the)h(en)n(tire)515 1321 y(TWI)i(comm)n(unication)g(happ)r(en)g +(in)g("bac)n(kground",)e(all)i(this)h(can)f(b)r(e)g(implemen)n(ted)h +(in)515 1421 y(an)21 b(in)n(terrupt-con)n(trolled)e(w)n(a)n(y)-7 +b(,)22 b(where)f(only)g(the)g(start)g(condition)g(needs)h(to)f(b)r(e)h +(triggered)515 1521 y(from)27 b(outside)g(the)h(in)n(terrupt)f +(routine.)515 1667 y(There)34 b(is)g(a)g(v)-5 b(ariet)n(y)34 +b(of)h(sla)n(v)n(e)e(devices)h(a)n(v)-5 b(ailable)33 +b(that)i(can)f(b)r(e)h(connected)f(to)h(a)f(TWI)515 1767 +y(bus.)i(F)-7 b(or)27 b(the)g(purp)r(ose)f(of)h(this)h(example,)e(an)h +(EEPR)n(OM)h(device)e(out)h(of)g(the)h(industry-)515 +1867 y(standard)k Fs(24C)p Fc(xx)42 b Fq(series)32 b(has)h(b)r(een)g(c) +n(hosen)f(\(where)h Fl(xx)42 b Fq(can)33 b(b)r(e)g(one)g(of)g +Fs(01)p Fq(,)h Fs(02)p Fq(,)g Fs(04)p Fq(,)515 1966 y +Fs(08)p Fq(,)i(or)f Fs(16)p Fq(\))g(whic)n(h)g(are)f(a)n(v)-5 +b(ailable)34 b(from)h(v)-5 b(arious)34 b(v)n(endors.)58 +b(The)35 b(c)n(hoice)g(w)n(as)f(almost)515 2066 y(arbitrary)-7 +b(,)24 b(mainly)h(triggered)f(b)n(y)h(the)h(fact)g(that)g(an)f(EEPR)n +(OM)h(device)g(is)f(b)r(eing)h(talk)n(ed)515 2166 y(to)i(in)g(b)r(oth)h +(directions,)e(reading)g(and)h(writing)g(the)g(sla)n(v)n(e)f(device,)h +(so)g(the)g(example)g(will)515 2265 y(demonstrate)e(the)i(details)g(of) +f(b)r(oth.)515 2412 y(Usually)-7 b(,)24 b(there)g(is)g(probably)e(not)i +(m)n(uc)n(h)g(need)g(to)g(add)f(more)g(EEPR)n(OM)i(to)f(an)g(A)-7 +b(Tmega)515 2512 y(system)31 b(that)g(w)n(a)n(y:)42 b(the)32 +b(smallest)e(p)r(ossible)h(A)-9 b(VR)32 b(device)e(that)i(o\033ers)e +(hardw)n(are)f(TWI)515 2611 y(supp)r(ort)36 b(is)h(the)g(A)-7 +b(Tmega8)35 b(whic)n(h)i(comes)f(with)h(512)e(b)n(ytes)h(of)h(EEPR)n +(OM,)h(whic)n(h)e(is)515 2711 y(equiv)-5 b(alen)n(t)33 +b(to)g(an)g(24C04)e(device.)53 b(The)34 b(A)-7 b(Tmega128)31 +b(already)g(comes)i(with)h(t)n(wice)f(as)515 2811 y(m)n(uc)n(h)39 +b(EEPR)n(OM)i(as)e(the)i(24C16)d(w)n(ould)h(o\033er.)73 +b(One)40 b(exception)f(migh)n(t)h(b)r(e)g(to)g(use)515 +2910 y(an)d(externally)f(connected)h(EEPR)n(OM)h(device)f(that)h(is)f +(remo)n(v)-5 b(able;)41 b(e.)66 b(g.)f(SDRAM)515 3010 +y(PC)34 b(memory)f(comes)h(with)g(an)g(in)n(tegrated)f(TWI)h(EEPR)n(OM) +h(that)f(carries)e(the)j(RAM)515 3109 y(con\034guration)26 +b(information.)515 3372 y Fs(22.39.3)93 b(The)32 b(Source)g(Co)s(de)515 +3573 y Fq(The)27 b(source)g(co)r(de)g(is)g(installed)h(under)515 +3720 y Fm($prefix/share/d)o(oc/)o(av)o(r-)o(lib)o(c/)o(ex)o(amp)o(le)o +(s/)o(twi)o(te)o(st/)o(tw)o(it)o(est)o(.c)o Fq(,)515 +3867 y(where)f Fm($prefix)f Fq(is)i(a)f(con\034guration)g(option.)38 +b(F)-7 b(or)28 b(Unix)g(systems,)g(it)g(is)g(usually)g(set)g(to)515 +3966 y(either)f Fm(/usr)f Fq(or)h Fm(/usr/local)p Fq(.)506 +4174 y Fs(Note)32 b([)o(1])515 4574 y Fq(The)k(header)g(\034le)g +Fo(<)p Fm(util/twi.h)j(\()p Fq(p.)14 b Fm(391\))p Fo(>)35 +b Fq(con)n(tains)g(some)h(macro)f(de\034nitions)i(for)515 +4674 y(sym)n(b)r(olic)d(constan)n(ts)f(used)h(in)h(the)f(TWI)h(status)f +(register.)56 b(These)34 b(de\034nitions)g(matc)n(h)515 +4773 y(the)22 b(names)g(used)g(in)g(the)h(A)n(tmel)g(datasheet)e +(except)h(that)h(all)e(names)h(ha)n(v)n(e)f(b)r(een)i(pre\034xed)515 +4873 y(with)28 b Fm(TW_)p Fq(.)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 348 364 +TeXDict begin 348 363 bop 515 203 a Fs(22.39)94 b(Example)31 +b(using)g(the)g(t)m(w)m(o-wire)h(in)m(terface)g(\(TWI\))543 +b(348)p 515 236 2865 4 v 506 502 a(Note)32 b([)o(2])515 +902 y Fq(The)k(clo)r(c)n(k)g(is)g(used)g(in)g(timer)h(calculations)e +(done)h(b)n(y)g(the)g(compiler,)i(for)e(the)g(UAR)-7 +b(T)515 1002 y(baud)27 b(rate)g(and)g(the)h(TWI)g(clo)r(c)n(k)f(rate.) +506 1203 y Fs(Note)32 b([)o(3])515 1603 y Fq(The)k(address)e(assigned)h +(for)g(the)i(24Cxx)d(EEPR)n(OM)j(consists)e(of)h(1010)e(in)j(the)f(upp) +r(er)515 1703 y(four)23 b(bits.)35 b(The)24 b(follo)n(wing)e(three)h +(bits)h(are)e(normally)g(a)n(v)-5 b(ailable)23 b(as)f(sla)n(v)n(e)g +(sub-addresses,)515 1802 y(allo)n(wing)d(to)i(op)r(erate)f(more)f(than) +i(one)g(device)f(of)h(the)g(same)f(t)n(yp)r(e)h(on)g(a)f(single)g(bus,) +j(where)515 1902 y(the)i(actual)f(subaddress)f(used)i(for)f(eac)n(h)g +(device)h(is)f(con\034gured)g(b)n(y)g(hardw)n(are)f(strapping.)515 +2001 y(Ho)n(w)n(ev)n(er,)30 b(since)h(the)g(next)h(data)e(pac)n(k)n(et) +h(follo)n(wing)f(the)h(device)g(selection)g(only)g(allo)n(ws)515 +2101 y(for)23 b(8)g(bits)i(that)f(are)e(used)i(as)f(an)h(EEPR)n(OM)h +(address,)e(devices)g(that)h(require)f(more)g(than)515 +2201 y(8)k(address)g(bits)h(\(24C04)e(and)h(ab)r(o)n(v)n(e\))g("steal") +f(subaddress)h(bits)h(and)g(use)f(them)h(for)g(the)515 +2300 y(EEPR)n(OM)k(cell)f(address)f(bits)h(9)g(to)g(11)f(as)g +(required.)46 b(This)31 b(example)g(simply)g(assumes)515 +2400 y(all)e(subaddress)g(bits)h(are)g(0)f(for)h(the)g(smaller)f +(devices,)h(so)g(the)g(E0,)h(E1,)g(and)e(E2)i(inputs)515 +2500 y(of)c(the)h(24Cxx)e(m)n(ust)i(b)r(e)g(grounded.)506 +2716 y Fs(Note)k([)o(4])515 3117 y Fq(F)-7 b(or)28 b(slo)n(w)f(clo)r(c) +n(ks,)h(enable)g(the)h(2)f(x)h(U[S]AR)-7 b(T)29 b(clo)r(c)n(k)f(m)n +(ultiplier,)h(to)f(impro)n(v)n(e)f(the)i(baud)515 3216 +y(rate)24 b(error.)34 b(This)26 b(will)f(allo)n(w)f(a)h(9600)e(Bd)j +(comm)n(unication)e(using)h(the)h(standard)e(1)h(MHz)515 +3316 y(calibrated)h(R)n(C)i(oscillator.)35 b(See)27 b(also)g(the)h +(Baud)f(rate)g(tables)g(in)h(the)g(datasheets.)506 3517 +y Fs(Note)k([)o(5])515 3917 y Fq(The)18 b(datasheet)g(explains)g(wh)n +(y)g(a)g(minim)n(um)h(TWBR)g(v)-5 b(alue)18 b(of)h(10)e(should)i(b)r(e) +g(main)n(tained)515 4016 y(when)37 b(running)h(in)g(master)e(mo)r(de.) +67 b(Th)n(us,)40 b(for)d(system)g(clo)r(c)n(ks)g(b)r(elo)n(w)g(3.6)g +(MHz,)j(w)n(e)515 4116 y(cannot)24 b(run)h(the)h(bus)f(at)g(the)g(in)n +(ten)n(ted)h(clo)r(c)n(k)e(rate)g(of)h(100)f(kHz)h(but)h(ha)n(v)n(e)e +(to)h(slo)n(w)f(do)n(wn)515 4216 y(accordingly)-7 b(.)506 +4433 y Fs(Note)32 b([)o(6])515 4833 y Fq(This)e(function)g(is)g(used)f +(b)n(y)h(the)g(standard)f(output)h(facilities)g(that)g(are)f(utilized)i +(in)f(this)515 4932 y(example)d(for)g(debugging)f(and)i(demonstration)e +(purp)r(oses.)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 349 365 +TeXDict begin 349 364 bop 515 203 a Fs(22.39)94 b(Example)31 +b(using)g(the)g(t)m(w)m(o-wire)h(in)m(terface)g(\(TWI\))543 +b(349)p 515 236 2865 4 v 506 502 a(Note)32 b([)o(7])515 +902 y Fq(In)22 b(order)f(to)i(shorten)e(the)i(data)f(to)h(b)r(e)f(sen)n +(t)h(o)n(v)n(er)d(the)j(TWI)g(bus,)g(the)g(24Cxx)e(EEPR)n(OMs)515 +1002 y(supp)r(ort)29 b(m)n(ultiple)h(data)f(b)n(ytes)g(transfered)f +(within)i(a)f(single)g(request,)g(main)n(taining)f(an)515 +1102 y(in)n(ternal)34 b(address)g(coun)n(ter)h(that)g(is)g(up)r(dated)h +(after)f(eac)n(h)f(data)h(b)n(yte)g(transfered)g(suc-)515 +1201 y(cessfully)-7 b(.)36 b(When)27 b(reading)e(data,)h(one)g(request) +g(can)g(read)f(the)i(en)n(tire)f(device)g(memory)g(if)515 +1301 y(desired)k(\(the)i(coun)n(ter)e(w)n(ould)g(wrap)g(around)g(and)g +(start)h(bac)n(k)f(from)g(0)h(when)g(reac)n(hing)515 +1400 y(the)d(end)f(of)h(the)g(device\).)506 1622 y Fs(Note)k([)o(8])515 +2022 y Fq(When)e(reading)e(the)i(EEPR)n(OM,)g(a)f(\034rst)g(device)g +(selection)g(m)n(ust)h(b)r(e)f(made)g(with)h(write)515 +2122 y(in)n(ten)n(t)c(\(R/)p Fh(\030)p Fq(W)f(bit)h(set)g(to)f(0)g +(indicating)h(a)f(write)g(op)r(eration\))g(in)h(order)e(to)h(transfer)g +(the)515 2221 y(EEPR)n(OM)20 b(address)e(to)h(start)g(reading)f(from.) +34 b(This)19 b(is)g(called)g Fl(master)j(tr)l(ansmitter)f(mo)l(de)6 +b Fq(.)515 2321 y(Eac)n(h)26 b(completion)g(of)h(a)f(particular)f(step) +h(in)h(TWI)g(comm)n(unication)e(is)i(indicated)f(b)n(y)g(an)515 +2421 y(asserted)i(TWINT)j(bit)f(in)g(TW)n(CR.)g(\(An)h(in)n(terrupt)e +(w)n(ould)h(b)r(e)g(generated)f(if)h(allo)n(w)n(ed.\))515 +2520 y(After)c(p)r(erforming)f(an)n(y)g(actions)h(that)g(are)f(needed)h +(for)f(the)i(next)f(comm)n(unication)f(step,)515 2620 +y(the)33 b(in)n(terrupt)g(condition)h(m)n(ust)f(b)r(e)h(man)n(ually)e +(cleared)g(b)n(y)i Fl(setting)40 b Fq(the)34 b(TWINT)f(bit.)515 +2720 y(Unlik)n(e)i(with)h(man)n(y)f(other)f(in)n(terrupt)h(sources,)h +(this)g(w)n(ould)f(ev)n(en)g(b)r(e)h(required)e(when)515 +2819 y(using)26 b(a)h(true)f(in)n(terrupt)h(routine,)g(since)f(as)g(so) +r(on)g(as)h(TWINT)g(is)g(re-asserted,)e(the)i(next)515 +2919 y(bus)g(transaction)g(will)g(start.)506 3120 y Fs(Note)32 +b([)o(9])515 3520 y Fq(Since)j(the)h(TWI)g(bus)f(is)h(m)n(ulti-master)e +(capable,)j(there)e(is)g(p)r(oten)n(tial)g(for)g(a)g(bus)h(con-)515 +3619 y(ten)n(tion)k(when)g(one)g(master)g(starts)f(to)h(access)f(the)i +(bus.)75 b(Normally)-7 b(,)43 b(the)d(TWI)h(bus)515 3719 +y(in)n(terface)31 b(unit)i(will)g(detect)g(this)f(situation,)i(and)e +(will)h(not)f(initiate)h(a)f(start)f(condition)515 3819 +y(while)j(the)g(bus)f(is)h(busy)-7 b(.)55 b(Ho)n(w)n(ev)n(er,)33 +b(in)h(case)f(t)n(w)n(o)g(masters)g(w)n(ere)f(starting)h(at)h(exactly) +515 3918 y(the)i(same)e(time,)k(the)e(w)n(a)n(y)e(bus)i(arbitration)e +(w)n(orks,)h(there)g(is)h(alw)n(a)n(ys)d(a)i(c)n(hance)g(that)515 +4018 y(one)j(master)g(could)g(lose)g(arbitration)f(of)i(the)g(bus)g +(during)f(an)n(y)g(transmit)g(op)r(eration.)515 4117 +y(A)32 b(master)g(that)h(has)e(lost)h(arbitration)f(is)i(required)e(b)n +(y)h(the)h(proto)r(col)e(to)h(immediately)515 4217 y(cease)e(talking)h +(on)g(the)g(bus;)j(in)d(particular)f(it)i(m)n(ust)f(not)g(initiate)h(a) +f(stop)g(condition)g(in)515 4317 y(order)24 b(to)h(not)h(corrupt)e(the) +i(ongoing)e(transfer)g(from)i(the)f(activ)n(e)g(master.)36 +b(In)25 b(this)h(exam-)515 4416 y(ple,)32 b(up)r(on)f(detecting)g(a)f +(lost)h(arbitration)e(condition,)j(the)f(en)n(tire)g(transfer)f(is)h +(going)e(to)515 4516 y(b)r(e)j(restarted.)47 b(This)32 +b(will)f(cause)g(a)g(new)h(start)f(condition)g(to)g(b)r(e)h(initiated,) +h(whic)n(h)f(will)515 4616 y(normally)26 b(b)r(e)i(dela)n(y)n(ed)f(un)n +(til)g(the)h(curren)n(tly)f(activ)n(e)g(master)f(has)i(released)e(the)i +(bus.)506 4833 y Fs(Note)k([)o(10])p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 350 366 +TeXDict begin 350 365 bop 515 203 a Fs(22.39)94 b(Example)31 +b(using)g(the)g(t)m(w)m(o-wire)h(in)m(terface)g(\(TWI\))543 +b(350)p 515 236 2865 4 v 515 523 a Fq(Next,)26 b(the)h(device)e(sla)n +(v)n(e)g(is)h(going)e(to)i(b)r(e)g(reselected)f(\(using)h(a)g +(so-called)e(rep)r(eated)i(start)515 623 y(condition)31 +b(whic)n(h)g(is)g(mean)n(t)f(to)h(guaran)n(tee)f(that)h(the)h(bus)f +(arbitration)e(will)j(remain)e(at)515 722 y(the)38 b(curren)n(t)f +(master\))g(using)g(the)h(same)g(sla)n(v)n(e)e(address)g(\(SLA\),)j +(but)f(this)g(time)h(with)515 822 y(read)33 b(in)n(ten)n(t)h(\(R/)p +Fh(\030)p Fq(W)f(bit)i(set)e(to)h(1\))g(in)g(order)e(to)i(request)f +(the)h(device)g(sla)n(v)n(e)e(to)i(start)515 922 y(transfering)26 +b(data)h(from)g(the)h(sla)n(v)n(e)e(to)i(the)g(master)e(in)i(the)g +(next)g(pac)n(k)n(et.)506 1134 y Fs(Note)k([)o(11])515 +1529 y Fq(If)f(the)h(EEPR)n(OM)h(device)e(is)g(still)g(busy)h(writing)e +(one)h(or)g(more)f(cells)h(after)g(a)g(previous)515 1629 +y(write)h(request,)h(it)f(will)h(simply)f(lea)n(v)n(e)f(its)h(bus)h(in) +n(terface)e(driv)n(ers)g(at)h(high)g(imp)r(edance,)515 +1728 y(and)26 b(do)r(es)g(not)g(resp)r(ond)g(to)g(a)g(selection)g(in)g +(an)n(y)g(w)n(a)n(y)f(at)h(all.)36 b(The)26 b(master)g(selecting)g(the) +515 1828 y(device)f(will)h(see)f(the)h(high)g(lev)n(el)f(at)g(SD)n(A)h +(after)g(transfering)e(the)i(SLA+R/W)f(pac)n(k)n(et)g(as)515 +1928 y(a)g(NA)n(CK)g(to)g(its)g(selection)g(request.)35 +b(Th)n(us,)26 b(the)g(select)f(pro)r(cess)f(is)h(simply)g(started)g(o)n +(v)n(er)515 2027 y(\(e\033ectiv)n(ely)30 b(causing)g(a)g +Fl(r)l(ep)l(e)l(ate)l(d)i(start)g(c)l(ondition)6 b Fq(\),)33 +b(un)n(til)e(the)f(device)h(will)f(ev)n(en)n(tually)515 +2127 y(resp)r(ond.)66 b(This)38 b(p)r(olling)f(pro)r(cedure)f(is)i +(recommended)f(in)h(the)g(24Cxx)e(datasheet)h(in)515 +2226 y(order)26 b(to)h(minimize)h(the)g(busy)f(w)n(ait)h(time)g(when)f +(writing.)37 b(Note)27 b(that)h(in)g(case)e(a)h(device)515 +2326 y(is)j(brok)n(en)e(and)i(nev)n(er)f(resp)r(onds)h(to)f(a)h +(selection)g(\(e.)44 b(g.)g(since)30 b(it)g(is)g(no)g(longer)f(presen)n +(t)515 2426 y(at)f(all\),)g(this)h(will)f(cause)g(an)g(in\034nite)h(lo) +r(op.)38 b(Th)n(us)28 b(the)g(maximal)g(n)n(um)n(b)r(er)g(of)g +(iterations)515 2525 y(made)k(un)n(til)i(the)f(device)g(is)f(declared)g +(to)h(b)r(e)g(not)g(resp)r(onding)f(at)h(all,)h(and)f(an)f(error)f(is) +515 2625 y(returned,)c(will)h(b)r(e)g(limited)g(to)f(MAX_ITER.)506 +2840 y Fs(Note)32 b([)o(12])515 3236 y Fq(This)23 b(is)g(called)g +Fl(master)j(r)l(e)l(c)l(eiver)g(mo)l(de)6 b Fq(:)36 b(the)23 +b(bus)h(master)e(still)i(supplies)f(the)h(SCL)f(clo)r(c)n(k,)515 +3335 y(but)g(the)f(device)h(sla)n(v)n(e)d(driv)n(es)i(the)h(SD)n(A)f +(line)h(with)g(the)g(appropriate)d(data.)35 b(After)23 +b(8)f(data)515 3435 y(bits,)i(the)f(master)e(resp)r(onds)h(with)h(an)g +(A)n(CK)f(bit)h(\(SD)n(A)g(driv)n(en)f(lo)n(w\))g(in)h(order)e(to)i +(request)515 3534 y(another)f(data)h(transfer)f(from)h(the)h(sla)n(v)n +(e,)f(or)f(it)i(can)f(lea)n(v)n(e)f(the)i(SD)n(A)g(line)f(high)h(\(NA)n +(CK\),)515 3634 y(indicating)33 b(to)g(the)h(sla)n(v)n(e)d(that)j(it)g +(is)f(going)f(to)h(stop)g(the)h(transfer)e(no)n(w.)54 +b(Assertion)32 b(of)515 3734 y(A)n(CK)26 b(is)g(handled)g(b)n(y)g +(setting)h(the)g(TWEA)g(bit)g(in)g(TW)n(CR)f(when)h(starting)e(the)i +(curren)n(t)515 3833 y(transfer.)506 4029 y Fs(Note)32 +b([)o(13])515 4425 y Fq(The)20 b(con)n(trol)f(w)n(ord)g(sen)n(t)h(out)g +(in)h(order)e(to)h(initiate)g(the)h(transfer)e(of)h(the)h(next)f(data)g +(pac)n(k)n(et)515 4524 y(is)g(initially)g(set)h(up)f(to)g(assert)f(the) +i(TWEA)g(bit.)35 b(During)20 b(the)h(last)f(lo)r(op)g(iteration,)h +(TWEA)515 4624 y(is)27 b(de-asserted)f(so)g(the)i(clien)n(t)f(will)h +(get)f(informed)g(that)g(no)g(further)g(transfer)f(is)i(desired.)506 +4836 y Fs(Note)k([)o(14])p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 351 367 +TeXDict begin 351 366 bop 515 203 a Fs(23)31 b(Data)i(Structure)g(Do)s +(cumen)m(tation)1288 b(351)p 515 236 2865 4 v 515 523 +a Fq(Except)37 b(in)h(the)f(case)f(of)h(lost)g(arbitration,)h(all)e +(bus)h(transactions)f(m)n(ust)h(prop)r(erly)f(b)r(e)515 +623 y(terminated)27 b(b)n(y)g(the)h(master)f(initiating)h(a)f(stop)g +(condition.)506 823 y Fs(Note)32 b([)o(15])515 1206 y +Fq(W)-7 b(riting)34 b(to)g(the)h(EEPR)n(OM)g(device)f(is)g(simpler)f +(than)i(reading,)f(since)g(only)g(a)g(master)515 1306 +y(transmitter)18 b(mo)r(de)g(transfer)g(is)g(needed.)34 +b(Note)19 b(that)f(the)h(\034rst)f(pac)n(k)n(et)g(after)g(the)h(SLA+W) +515 1405 y(selection)f(is)h(alw)n(a)n(ys)e(considered)h(to)h(b)r(e)h +(the)f(EEPR)n(OM)h(address)e(for)g(the)i(next)f(op)r(eration.)515 +1505 y(\(This)30 b(pac)n(k)n(et)g(is)g(exactly)f(the)i(same)f(as)g(the) +g(one)g(ab)r(o)n(v)n(e)f(sen)n(t)h(b)r(efore)g(starting)g(to)g(read)515 +1605 y(the)g(device.\))45 b(In)30 b(case)f(a)h(master)f(transmitter)h +(mo)r(de)g(transfer)f(is)h(going)f(to)h(send)g(more)515 +1704 y(than)21 b(one)g(data)f(pac)n(k)n(et,)i(all)f(follo)n(wing)f(pac) +n(k)n(ets)g(will)h(b)r(e)h(considered)e(data)g(b)n(ytes)h(to)g(write) +515 1804 y(at)j(the)g(indicated)h(address.)34 b(The)24 +b(in)n(ternal)g(address)f(p)r(oin)n(ter)h(will)g(b)r(e)h(incremen)n +(ted)e(after)515 1904 y(eac)n(h)j(write)i(op)r(eration.)506 +2104 y Fs(Note)k([)o(16])515 2487 y Fq(24Cxx)23 b(devices)g(can)h(b)r +(ecome)g(write-protected)f(b)n(y)h(strapping)f(their)h +Fh(\030)p Fq(W)n(C)g(pin)g(to)g(logic)515 2587 y(high.)57 +b(\(Lea)n(ving)33 b(it)i(unconnected)f(is)h(explicitly)f(allo)n(w)n +(ed,)h(and)f(constitutes)g(logic)g(lo)n(w)515 2686 y(lev)n(el,)f(i.)53 +b(e.)g(no)32 b(write)h(protection.\))52 b(In)33 b(case)f(of)h(a)f +(write)h(protected)f(device,)i(all)f(data)515 2786 y(transfer)22 +b(attempts)i(will)g(b)r(e)g(NA)n(CKed)f(b)n(y)h(the)g(device.)35 +b(Note)23 b(that)h(some)f(devices)g(migh)n(t)515 2885 +y(not)k(implemen)n(t)h(this.)515 3204 y Fr(23)131 b(Data)43 +b(Structure)i(Do)t(cumen)l(tation)515 3450 y Fn(23.1)112 +b(div_t)38 b(Struct)e(Reference)515 3651 y Fs(23.1.1)93 +b(Detailed)31 b(Description)515 3851 y Fq(Result)d(t)n(yp)r(e)f(for)g +(function)h Fs(div\(\))g Fq(\(p.)14 b(192\).)515 4111 +y Fs(Data)33 b(Fields)639 4294 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(quot)639 4399 y Fk(\210)41 b Fq(in)n(t)28 b Fs(rem)515 +4659 y(23.1.2)93 b(Field)31 b(Do)s(cumen)m(tation)515 +4859 y(23.1.2.1)92 b(in)m(t)32 b(div_t::quot)515 5006 +y Fq(The)27 b(Quotien)n(t.)p 515 5179 V 515 5255 a Fp(Generated)e(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 352 368 +TeXDict begin 352 367 bop 515 203 a Fs(23.2)94 b(ldiv_t)31 +b(Struct)i(Reference)1452 b(352)p 515 236 2865 4 v 515 +523 a(23.1.2.2)92 b(in)m(t)32 b(div_t::rem)515 670 y +Fq(The)27 b(Remainder.)515 817 y(The)g(do)r(cumen)n(tation)h(for)f +(this)g(struct)h(w)n(as)e(generated)h(from)g(the)h(follo)n(wing)e +(\034le:)639 1030 y Fk(\210)41 b Fs(stdlib.h)515 1310 +y Fn(23.2)112 b(ldiv_t)38 b(Struct)e(Reference)515 1510 +y Fs(23.2.1)93 b(Detailed)31 b(Description)515 1711 y +Fq(Result)d(t)n(yp)r(e)f(for)g(function)h Fs(ldiv\(\))g +Fq(\(p.)14 b(194\).)515 1974 y Fs(Data)33 b(Fields)639 +2160 y Fk(\210)41 b Fq(long)27 b Fs(quot)639 2268 y Fk(\210)41 +b Fq(long)27 b Fs(rem)515 2531 y(23.2.2)93 b(Field)31 +b(Do)s(cumen)m(tation)515 2732 y(23.2.2.1)92 b(long)31 +b(ldiv_t::quot)515 2878 y Fq(The)c(Quotien)n(t.)515 3141 +y Fs(23.2.2.2)92 b(long)31 b(ldiv_t::rem)515 3288 y Fq(The)c +(Remainder.)515 3435 y(The)g(do)r(cumen)n(tation)h(for)f(this)g(struct) +h(w)n(as)e(generated)h(from)g(the)h(follo)n(wing)e(\034le:)639 +3648 y Fk(\210)41 b Fs(stdlib.h)515 3970 y Fr(24)131 +b(File)42 b(Do)t(cumen)l(tation)515 4216 y Fn(24.1)112 +b(assert.h)38 b(File)g(Reference)515 4416 y Fs(24.1.1)93 +b(Detailed)31 b(Description)515 4617 y(De\034nes)639 +4803 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(assert)p Fq(\(expression\))p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 353 369 +TeXDict begin 353 368 bop 515 203 a Fs(24.2)94 b(atoi.S)31 +b(File)g(Reference)1587 b(353)p 515 236 2865 4 v 515 +523 a Fn(24.2)112 b(atoi.S)38 b(File)g(Reference)515 +724 y Fs(24.2.1)93 b(Detailed)31 b(Description)515 941 +y Fn(24.3)112 b(atol.S)38 b(File)g(Reference)515 1141 +y Fs(24.3.1)93 b(Detailed)31 b(Description)515 1358 y +Fn(24.4)112 b(atomic.h)38 b(File)g(Reference)515 1559 +y Fs(24.4.1)93 b(Detailed)31 b(Description)515 1759 y(De\034nes)639 +1946 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(_UTIL_A)-8 b(TOMIC_H_)30 +b Fq(1)639 2053 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(A)-8 +b(TOMIC_BLOCK)p Fq(\(t)n(yp)r(e\))639 2161 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(NONA)-8 b(TOMIC_BLOCK)p Fq(\(t)n(yp)r(e\))639 +2269 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(A)-8 b(TOMIC_RESTOREST)g(A)g +(TE)639 2377 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(A)-8 +b(TOMIC_F)m(OR)m(CEON)639 2485 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(NONA)-8 b(TOMIC_RESTOREST)g(A)g(TE)639 2593 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(NONA)-8 b(TOMIC_F)m(OR)m(CEOFF)515 +2873 y Fn(24.5)112 b(b)s(o)s(ot.h)38 b(File)g(Reference)515 +3073 y Fs(24.5.1)93 b(Detailed)31 b(Description)515 3274 +y(De\034nes)639 3460 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(_A)-11 b(VR_BOOT_H_)29 b Fq(1)639 3568 y Fk(\210)41 +b Fq(#de\034ne)97 b Fs(BOOTLO)m(ADER_SECTION)f Fq(__attribute__)e +(\(\(section)722 3668 y(\(".b)r(o)r(otloader"\)\)\))639 +3776 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__COMMON_ASB)f +Fq(R)-9 b(WWSB)639 3884 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__COMMON_ASRE)e Fq(R)-9 b(WWSRE)639 3991 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(BLB12)g Fq(5)639 4099 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(BLB11)g Fq(4)639 4207 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(BLB02)g Fq(3)639 4315 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(BLB01)g Fq(2)639 4423 y Fk(\210)41 +b Fq(#de\034ne)136 b Fs(b)s(o)s(ot_spm_in)m(terrupt_enable)p +Fq(\(\))f(\(__SPM_REG)g Fh(j)p Fq(=)722 4523 y(\()p Fs(uin)m(t8_t)p +Fq(\)_BV\(SPMIE\)\))639 4631 y Fk(\210)41 b Fq(#de\034ne)115 +b Fs(b)s(o)s(ot_spm_in)m(terrupt_disable)p Fq(\(\))f(\(__SPM_REG)h(&=) +722 4730 y(\()p Fs(uin)m(t8_t)p Fq(\))p Fh(\030)p Fq(_BV\(SPMIE\)\))639 +4838 y Fk(\210)41 b Fq(#de\034ne)d Fs(b)s(o)s(ot_is_spm_in)m(terrupt)p +Fq(\(\))e(\(__SPM_REG)h(&)g(\()p Fs(uin)m(t8_t)p Fq(\)_-)722 +4938 y(BV\(SPMIE\)\))p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 354 370 +TeXDict begin 354 369 bop 515 203 a Fs(24.5)94 b(b)s(o)s(ot.h)30 +b(File)h(Reference)1554 b(354)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(#de\034ne)46 b Fs(b)s(o)s(ot_rww_busy)p +Fq(\(\))g(\(__SPM_REG)g(&)g(\()p Fs(uin)m(t8_t)p Fq(\)_BV\(__-)722 +623 y(COMMON_ASB\)\))639 729 y Fk(\210)41 b Fq(#de\034ne)48 +b Fs(b)s(o)s(ot_spm_busy)p Fq(\(\))f(\(__SPM_REG)h(&)f(\()p +Fs(uin)m(t8_t)p Fq(\)_BV\(__-)722 828 y(SPM_ENABLE\)\))639 +934 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_spm_busy_w)m(ait)p +Fq(\(\))g(do{}while\(b)r(o)r(ot_spm_busy\(\)\))639 1040 +y Fk(\210)41 b Fq(#de\034ne)25 b Fs(__BOOT_P)-8 b(A)m(GE_ERASE)24 +b Fq(\(_BV\(__SPM_ENABLE\))h Fh(j)f Fq(_-)722 1139 y(BV\(PGERS\)\))639 +1245 y Fk(\210)41 b Fq(#de\034ne)21 b Fs(__BOOT_P)-8 +b(A)m(GE_WRITE)22 b Fq(\(_BV\(__SPM_ENABLE\))f Fh(j)g +Fq(_-)722 1345 y(BV\(PGWR)-7 b(T\)\))639 1451 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__BOOT_P)-8 b(A)m(GE_FILL)30 b +Fq(_BV\(__SPM_ENABLE\))639 1557 y Fk(\210)41 b Fq(#de\034ne)f +Fs(__BOOT_R)-11 b(WW_ENABLE)39 b Fq(\(_BV\(__SPM_ENABLE\))i +Fh(j)722 1656 y Fq(_BV\(__COMMON_ASRE\)\))639 1762 y +Fk(\210)g Fq(#de\034ne)23 b Fs(__BOOT_LOCK_BITS_SET)h +Fq(\(_BV\(__SPM_ENABLE\))722 1862 y Fh(j)k Fq(_BV\(BLBSET\)\))639 +1968 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__b)s(o)s +(ot_page_\034ll_normal)p Fq(\(address,)d(data\))639 2073 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__b)s(o)s(ot_page_\034ll_alternate) +p Fq(\(address,)e(data\))639 2179 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__b)s(o)s(ot_page_\034ll_extended)p Fq(\(address,)e(data\))639 +2285 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__b)s(o)s +(ot_page_erase_normal)p Fq(\(address\))639 2391 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__b)s(o)s(ot_page_erase_alternate)p +Fq(\(address\))639 2497 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__b)s(o)s(ot_page_erase_extended)p Fq(\(address\))639 +2603 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__b)s(o)s +(ot_page_write_normal)p Fq(\(address\))639 2709 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__b)s(o)s(ot_page_write_alternate)p +Fq(\(address\))639 2814 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__b)s(o)s(ot_page_write_extended)p Fq(\(address\))639 +2920 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__b)s(o)s(ot_rww_enable)p +Fq(\(\))639 3026 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__b)s(o)s +(ot_rww_enable_alternate)p Fq(\(\))639 3132 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__b)s(o)s(ot_lo)s(c)m(k_bits_set)p +Fq(\(lo)r(c)n(k_bits\))639 3238 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__b)s(o)s(ot_lo)s(c)m(k_bits_set_alternate)p Fq(\(lo)r(c)n +(k_bits\))639 3344 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(GET_LO)m +(W_FUSE_BITS)i Fq(\(0x0000\))639 3450 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(GET_LOCK_BITS)h Fq(\(0x0001\))639 +3555 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(GET_EXTENDED_FUSE_BITS)h +Fq(\(0x0002\))639 3661 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(GET_HIGH_FUSE_BITS)h Fq(\(0x0003\))639 3767 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_lo)s(c)m(k_fuse_bits_get)p +Fq(\(address\))639 3873 y Fk(\210)41 b Fq(#de\034ne)32 +b Fs(__BOOT_SIGR)m(O)m(W_READ)g Fq(\(_BV\(__SPM_ENABLE\))g +Fh(j)722 3973 y Fq(_BV\(SIGRD\)\))639 4078 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_signature_b)m(yte_get)p +Fq(\(addr\))639 4184 y Fk(\210)41 b Fq(#de\034ne)140 +b Fs(b)s(o)s(ot_page_\034ll)p Fq(\(address,)165 b(data\))139 +b(__b)r(o)r(ot_page_\034ll_-)722 4284 y(normal\(address,)26 +b(data\))639 4390 y Fk(\210)41 b Fq(#de\034ne)220 b Fs(b)s(o)s +(ot_page_erase)p Fq(\(address\))d(__b)r(o)r(ot_page_erase_-)722 +4489 y(normal\(address\))639 4595 y Fk(\210)41 b Fq(#de\034ne)215 +b Fs(b)s(o)s(ot_page_write)p Fq(\(address\))e(__b)r(o)r +(ot_page_write_-)722 4695 y(normal\(address\))639 4801 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_rww_enable)p +Fq(\(\))g(__b)r(o)r(ot_rww_enable\(\))639 4907 y Fk(\210)41 +b Fq(#de\034ne)159 b Fs(b)s(o)s(ot_lo)s(c)m(k_bits_set)p +Fq(\(lo)r(c)n(k_bits\))e(__b)r(o)r(ot_lo)r(c)n(k_bits_-)722 +5006 y(set\(lo)r(c)n(k_bits\))p 515 5179 V 515 5255 a +Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 355 371 +TeXDict begin 355 370 bop 515 203 a Fs(24.5)94 b(b)s(o)s(ot.h)30 +b(File)h(Reference)1554 b(355)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_page_\034ll_safe)p +Fq(\(address,)d(data\))639 628 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(b)s(o)s(ot_page_erase_safe)p Fq(\(address\))639 +732 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_page_write_safe)p +Fq(\(address\))639 837 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(b)s(o)s(ot_rww_enable_safe)p Fq(\(\))639 942 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(b)s(o)s(ot_lo)s(c)m(k_bits_set_safe)p +Fq(\(lo)r(c)n(k_bits\))515 1202 y Fs(24.5.2)93 b(De\034ne)32 +b(Do)s(cumen)m(tation)515 1403 y(24.5.2.1)92 b(#de\034ne)31 +b(__b)s(o)s(ot_lo)s(c)m(k_bits_set\(lo)s(c)m(k_bits\))515 +1550 y(V)-8 b(alue:)515 1743 y Fj(\(__extension__\({)1521 +b(\\)656 1821 y(uint8_t)37 b(value)g(=)e(\(uint8_t\)\(~\(lock_bits\)\)) +q(;)535 b(\\)656 1900 y(__asm__)37 b(__volatile__)1238 +b(\\)656 1979 y(\()1905 b(\\)797 2058 y("ldi)36 b(r30,)h(1\\n\\t")1236 +b(\\)797 2137 y("ldi)36 b(r31,)h(0\\n\\t")1236 b(\\)797 +2216 y("mov)36 b(r0,)g(\0452\\n\\t")1237 b(\\)797 2295 +y("sts)36 b(\0450,)g(\0451\\n\\t")1237 b(\\)797 2374 +y("spm\\n\\t")1484 b(\\)797 2452 y(:)1764 b(\\)797 2531 +y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)641 +b(\\)867 2610 y("r")37 b(\(\(uint8_t\)__BOOT_LOCK_BITS)q(_SE)q(T\),)465 +b(\\)867 2689 y("r")37 b(\(value\))1342 b(\\)797 2768 +y(:)35 b("r0",)i("r30",)g("r31")1095 b(\\)656 2847 y(\);)1870 +b(\\)515 2926 y(}\)\))515 3253 y Fs(24.5.2.2)92 b(#de\034ne)31 +b(__b)s(o)s(ot_lo)s(c)m(k_bits_set_alternate\(lo)s(c)m(k_bits\))515 +3400 y(V)-8 b(alue:)515 3593 y Fj(\(__extension__\({)1521 +b(\\)656 3672 y(uint8_t)37 b(value)g(=)e(\(uint8_t\)\(~\(lock_bits\)\)) +q(;)535 b(\\)656 3751 y(__asm__)37 b(__volatile__)1238 +b(\\)656 3830 y(\()1905 b(\\)797 3908 y("ldi)36 b(r30,)h(1\\n\\t")1236 +b(\\)797 3987 y("ldi)36 b(r31,)h(0\\n\\t")1236 b(\\)797 +4066 y("mov)36 b(r0,)g(\0452\\n\\t")1237 b(\\)797 4145 +y("sts)36 b(\0450,)g(\0451\\n\\t")1237 b(\\)797 4224 +y("spm\\n\\t")1484 b(\\)797 4303 y(".word)37 b(0xffff\\n\\t")1167 +b(\\)797 4382 y("nop\\n\\t")1484 b(\\)797 4460 y(:)1764 +b(\\)797 4539 y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)641 +b(\\)867 4618 y("r")37 b(\(\(uint8_t\)__BOOT_LOCK_BITS)q(_SE)q(T\),)465 +b(\\)867 4697 y("r")37 b(\(value\))1342 b(\\)797 4776 +y(:)35 b("r0",)i("r30",)g("r31")1095 b(\\)656 4855 y(\);)1870 +b(\\)515 4934 y(}\)\))p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 356 372 +TeXDict begin 356 371 bop 515 203 a Fs(24.5)94 b(b)s(o)s(ot.h)30 +b(File)h(Reference)1554 b(356)p 515 236 2865 4 v 515 +523 a(24.5.2.3)92 b(#de\034ne)31 b(__b)s(o)s +(ot_page_erase_alternate\(address\))515 670 y(V)-8 b(alue:)515 +847 y Fj(\(__extension__\({)1168 b(\\)656 926 y(__asm__)37 +b(__volatile__)885 b(\\)656 1005 y(\()1552 b(\\)797 1083 +y("sts)36 b(\0450,)g(\0451\\n\\t")884 b(\\)797 1162 y("spm\\n\\t")1131 +b(\\)797 1241 y(".word)37 b(0xffff\\n\\t")814 b(\\)797 +1320 y("nop\\n\\t")1131 b(\\)797 1399 y(:)1411 b(\\)797 +1478 y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 +b(\\)867 1557 y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_ERAS)q(E\),)218 +b(\\)867 1635 y("z")37 b(\(\(uint16_t\)address\))569 +b(\\)656 1714 y(\);)1517 b(\\)515 1793 y(}\)\))515 2101 +y Fs(24.5.2.4)92 b(#de\034ne)31 b(__b)s(o)s +(ot_page_erase_extended\(address\))515 2248 y(V)-8 b(alue:)515 +2425 y Fj(\(__extension__\({)1168 b(\\)656 2504 y(__asm__)37 +b(__volatile__)885 b(\\)656 2583 y(\()1552 b(\\)797 2662 +y("movw)37 b(r30,)f(\045A3\\n\\t")778 b(\\)797 2741 y("sts)72 +b(\0451,)36 b(\045C3\\n\\t")813 b(\\)797 2819 y("sts)36 +b(\0450,)g(\0452\\n\\t")884 b(\\)797 2898 y("spm\\n\\t")1131 +b(\\)797 2977 y(:)1411 b(\\)797 3056 y(:)35 b("i")i +(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 b(\\)867 3135 +y("i")37 b(\(_SFR_MEM_ADDR\(RAMPZ\)\),)429 b(\\)867 3214 +y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_ERAS)q(E\),)218 b(\\)867 +3293 y("r")37 b(\(\(uint32_t\)address\))569 b(\\)797 +3372 y(:)35 b("r30",)i("r31")954 b(\\)656 3450 y(\);)1517 +b(\\)515 3529 y(}\)\))515 3838 y Fs(24.5.2.5)92 b(#de\034ne)31 +b(__b)s(o)s(ot_page_erase_normal\(address\))515 3984 +y(V)-8 b(alue:)515 4161 y Fj(\(__extension__\({)1168 +b(\\)656 4240 y(__asm__)37 b(__volatile__)885 b(\\)656 +4319 y(\()1552 b(\\)797 4398 y("sts)36 b(\0450,)g(\0451\\n\\t")884 +b(\\)797 4477 y("spm\\n\\t")1131 b(\\)797 4556 y(:)1411 +b(\\)797 4634 y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 +b(\\)867 4713 y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_ERAS)q(E\),)218 +b(\\)867 4792 y("z")37 b(\(\(uint16_t\)address\))569 +b(\\)656 4871 y(\);)1517 b(\\)515 4950 y(}\)\))p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 357 373 +TeXDict begin 357 372 bop 515 203 a Fs(24.5)94 b(b)s(o)s(ot.h)30 +b(File)h(Reference)1554 b(357)p 515 236 2865 4 v 515 +523 a(24.5.2.6)92 b(#de\034ne)31 b(__b)s(o)s +(ot_page_\034ll_alternate\(address,)63 b(data\))515 670 +y(V)-8 b(alue:)515 872 y Fj(\(__extension__\({)1168 b(\\)656 +951 y(__asm__)37 b(__volatile__)885 b(\\)656 1030 y(\()1552 +b(\\)797 1109 y("movw)72 b(r0,)36 b(\0453\\n\\t")813 +b(\\)797 1188 y("sts)36 b(\0450,)g(\0451\\n\\t")884 b(\\)797 +1266 y("spm\\n\\t")1131 b(\\)797 1345 y(".word)37 b(0xffff\\n\\t")814 +b(\\)797 1424 y("nop\\n\\t")1131 b(\\)797 1503 y("clr)72 +b(r1\\n\\t")989 b(\\)797 1582 y(:)1411 b(\\)797 1661 +y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 +b(\\)867 1740 y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_FILL)q(\),)253 +b(\\)867 1819 y("z")37 b(\(\(uint16_t\)address\),)534 +b(\\)867 1897 y("r")37 b(\(\(uint16_t\)data\))674 b(\\)797 +1976 y(:)35 b("r0")1236 b(\\)656 2055 y(\);)1517 b(\\)515 +2134 y(}\)\))515 2472 y Fs(24.5.2.7)92 b(#de\034ne)31 +b(__b)s(o)s(ot_page_\034ll_extended\(address,)62 b(data\))515 +2619 y(V)-8 b(alue:)515 2821 y Fj(\(__extension__\({)1168 +b(\\)656 2900 y(__asm__)37 b(__volatile__)885 b(\\)656 +2979 y(\()1552 b(\\)797 3057 y("movw)72 b(r0,)36 b(\0454\\n\\t")813 +b(\\)797 3136 y("movw)37 b(r30,)f(\045A3\\n\\t")778 b(\\)797 +3215 y("sts)36 b(\0451,)g(\045C3\\n\\t")849 b(\\)797 +3294 y("sts)36 b(\0450,)g(\0452\\n\\t")884 b(\\)797 3373 +y("spm\\n\\t")1131 b(\\)797 3452 y("clr)72 b(r1\\n\\t")989 +b(\\)797 3531 y(:)1411 b(\\)797 3610 y(:)35 b("i")i +(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 b(\\)867 3688 +y("i")37 b(\(_SFR_MEM_ADDR\(RAMPZ\)\),)429 b(\\)867 3767 +y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_FILL)q(\),)253 b(\\)867 +3846 y("r")37 b(\(\(uint32_t\)address\),)534 b(\\)867 +3925 y("r")37 b(\(\(uint16_t\)data\))674 b(\\)797 4004 +y(:)35 b("r0",)i("r30",)g("r31")742 b(\\)656 4083 y(\);)1517 +b(\\)515 4162 y(}\)\))515 4499 y Fs(24.5.2.8)92 b(#de\034ne)31 +b(__b)s(o)s(ot_page_\034ll_normal\(address,)62 b(data\))515 +4646 y(V)-8 b(alue:)515 4848 y Fj(\(__extension__\({)1168 +b(\\)656 4927 y(__asm__)37 b(__volatile__)885 b(\\)656 +5006 y(\()1552 b(\\)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 358 374 +TeXDict begin 358 373 bop 515 203 a Fs(24.5)94 b(b)s(o)s(ot.h)30 +b(File)h(Reference)1554 b(358)p 515 236 2865 4 v 797 +523 a Fj("movw)72 b(r0,)36 b(\0453\\n\\t")813 b(\\)797 +602 y("sts)36 b(\0450,)g(\0451\\n\\t")884 b(\\)797 681 +y("spm\\n\\t")1131 b(\\)797 760 y("clr)72 b(r1\\n\\t")989 +b(\\)797 839 y(:)1411 b(\\)797 917 y(:)35 b("i")i +(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 b(\\)867 996 +y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_FILL)q(\),)253 b(\\)867 +1075 y("z")37 b(\(\(uint16_t\)address\),)534 b(\\)867 +1154 y("r")37 b(\(\(uint16_t\)data\))674 b(\\)797 1233 +y(:)35 b("r0")1236 b(\\)656 1312 y(\);)1517 b(\\)515 +1391 y(}\)\))515 1737 y Fs(24.5.2.9)92 b(#de\034ne)31 +b(__b)s(o)s(ot_page_write_alternate\(address\))515 1884 +y(V)-8 b(alue:)515 2093 y Fj(\(__extension__\({)1168 +b(\\)656 2172 y(__asm__)37 b(__volatile__)885 b(\\)656 +2250 y(\()1552 b(\\)797 2329 y("sts)36 b(\0450,)g(\0451\\n\\t")884 +b(\\)797 2408 y("spm\\n\\t")1131 b(\\)797 2487 y(".word)37 +b(0xffff\\n\\t")814 b(\\)797 2566 y("nop\\n\\t")1131 +b(\\)797 2645 y(:)1411 b(\\)797 2724 y(:)35 b("i")i +(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 b(\\)867 2802 +y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_WRIT)q(E\),)218 b(\\)867 +2881 y("z")37 b(\(\(uint16_t\)address\))569 b(\\)656 +2960 y(\);)1517 b(\\)515 3039 y(}\)\))515 3385 y Fs(24.5.2.10)92 +b(#de\034ne)31 b(__b)s(o)s(ot_page_write_extended\(address\))515 +3532 y(V)-8 b(alue:)515 3741 y Fj(\(__extension__\({)1168 +b(\\)656 3820 y(__asm__)37 b(__volatile__)885 b(\\)656 +3899 y(\()1552 b(\\)797 3978 y("movw)37 b(r30,)f(\045A3\\n\\t")778 +b(\\)797 4057 y("sts)36 b(\0451,)g(\045C3\\n\\t")849 +b(\\)797 4136 y("sts)36 b(\0450,)g(\0452\\n\\t")884 b(\\)797 +4214 y("spm\\n\\t")1131 b(\\)797 4293 y(:)1411 b(\\)797 +4372 y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 +b(\\)867 4451 y("i")37 b(\(_SFR_MEM_ADDR\(RAMPZ\)\),)429 +b(\\)867 4530 y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_WRIT)q(E\),)218 +b(\\)867 4609 y("r")37 b(\(\(uint32_t\)address\))569 +b(\\)797 4688 y(:)35 b("r30",)i("r31")954 b(\\)656 4766 +y(\);)1517 b(\\)515 4845 y(}\)\))p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 359 375 +TeXDict begin 359 374 bop 515 203 a Fs(24.5)94 b(b)s(o)s(ot.h)30 +b(File)h(Reference)1554 b(359)p 515 236 2865 4 v 515 +523 a(24.5.2.11)92 b(#de\034ne)31 b(__b)s(o)s +(ot_page_write_normal\(address\))515 670 y(V)-8 b(alue:)515 +879 y Fj(\(__extension__\({)1168 b(\\)656 958 y(__asm__)37 +b(__volatile__)885 b(\\)656 1037 y(\()1552 b(\\)797 1116 +y("sts)36 b(\0450,)g(\0451\\n\\t")884 b(\\)797 1195 y("spm\\n\\t")1131 +b(\\)797 1273 y(:)1411 b(\\)797 1352 y(:)35 b("i")i +(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 b(\\)867 1431 +y("r")37 b(\(\(uint8_t\)__BOOT_PAGE_WRIT)q(E\),)218 b(\\)867 +1510 y("z")37 b(\(\(uint16_t\)address\))569 b(\\)656 +1589 y(\);)1517 b(\\)515 1668 y(}\)\))515 2014 y Fs(24.5.2.12)92 +b(#de\034ne)31 b(__b)s(o)s(ot_rww_enable\(\))515 2161 +y(V)-8 b(alue:)515 2370 y Fj(\(__extension__\({)1168 +b(\\)656 2449 y(__asm__)37 b(__volatile__)885 b(\\)656 +2528 y(\()1552 b(\\)797 2606 y("sts)36 b(\0450,)g(\0451\\n\\t")884 +b(\\)797 2685 y("spm\\n\\t")1131 b(\\)797 2764 y(:)1411 +b(\\)797 2843 y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 +b(\\)867 2922 y("r")37 b(\(\(uint8_t\)__BOOT_RWW_ENABL)q(E\))253 +b(\\)656 3001 y(\);)1517 b(\\)515 3080 y(}\)\))515 3426 +y Fs(24.5.2.13)92 b(#de\034ne)31 b(__b)s(o)s +(ot_rww_enable_alternate\(\))515 3573 y(V)-8 b(alue:)515 +3782 y Fj(\(__extension__\({)1168 b(\\)656 3861 y(__asm__)37 +b(__volatile__)885 b(\\)656 3939 y(\()1552 b(\\)797 4018 +y("sts)36 b(\0450,)g(\0451\\n\\t")884 b(\\)797 4097 y("spm\\n\\t")1131 +b(\\)797 4176 y(".word)37 b(0xffff\\n\\t")814 b(\\)797 +4255 y("nop\\n\\t")1131 b(\\)797 4334 y(:)1411 b(\\)797 +4413 y(:)35 b("i")i(\(_SFR_MEM_ADDR\(__SPM_REG\)\))q(,)288 +b(\\)867 4492 y("r")37 b(\(\(uint8_t\)__BOOT_RWW_ENABL)q(E\))253 +b(\\)656 4570 y(\);)1517 b(\\)515 4649 y(}\)\))p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 360 376 +TeXDict begin 360 375 bop 515 203 a Fs(24.6)94 b(crc16.h)32 +b(File)f(Reference)1525 b(360)p 515 236 2865 4 v 515 +523 a Fn(24.6)112 b(crc16.h)37 b(File)h(Reference)515 +724 y Fs(24.6.1)93 b(Detailed)31 b(Description)515 924 +y(F)-8 b(unctions)639 1110 y Fk(\210)41 b Fq(static)61 +b(__inline__)f Fs(uin)m(t16_t)h(_crc16_up)s(date)h Fq(\()p +Fs(uin)m(t16_t)g Fq(__crc,)722 1210 y Fs(uin)m(t8_t)28 +b Fq(__data\))639 1318 y Fk(\210)41 b Fq(static)27 b(__inline__)f +Fs(uin)m(t16_t)h(_crc_xmo)s(dem_up)s(date)h Fq(\()p Fs(uin)m(t16_t)g +Fq(_-)722 1418 y(_crc,)f Fs(uin)m(t8_t)h Fq(__data\))639 +1526 y Fk(\210)41 b Fq(static)28 b(__inline__)f Fs(uin)m(t16_t)h +(_crc_ccitt_up)s(date)j Fq(\()p Fs(uin)m(t16_t)e Fq(__crc,)722 +1625 y Fs(uin)m(t8_t)f Fq(__data\))639 1733 y Fk(\210)41 +b Fq(static)23 b(__inline__)f Fs(uin)m(t8_t)h(_crc_ibutton_up)s(date)h +Fq(\()p Fs(uin)m(t8_t)g Fq(__crc,)722 1833 y Fs(uin)m(t8_t)k +Fq(__data\))515 2112 y Fn(24.7)112 b(ct)m(yp)s(e.h)38 +b(File)g(Reference)515 2313 y Fs(24.7.1)93 b(Detailed)31 +b(Description)515 2513 y(De\034nes)639 2700 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__CTYPE_H_)h Fq(1)515 2963 y Fs(F)-8 +b(unctions)633 3149 y(Character)33 b(classi\034cation)f(routines)633 +3282 y Fl(These)i(functions)f(p)l(erform)h(char)l(acter)h(classi\034c)l +(ation.)50 b(They)34 b(r)l(eturn)e(true)g(or)i(false)633 +3382 y(status)d(dep)l(ending)j(whether)g(the)f(char)l(acter)h(p)l(asse) +l(d)f(to)g(the)f(function)h(fal)t(ls)h(into)f(the)633 +3481 y(function)-8 b('s)31 b(classi\034c)l(ation)h(\(i.e.)43 +b Fc(isdigit\(\))31 b Fl(\()13 b Fq(p.)h Fl(133\))32 +b(r)l(eturns)e(true)g(if)i(its)f(ar)l(gument)633 3581 +y(is)h(any)h(value)g('0')g(though)g('9',)i(inclusive\).)46 +b(If)33 b(the)f(input)g(is)h(not)f(an)g(unsigne)l(d)g(char)633 +3681 y(value,)f(al)t(l)f(of)h(this)f(function)g(r)l(eturn)e(false.)732 +3847 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isaln)m(um)f Fq(\(in)n(t)h(__c\)) +732 3938 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isalpha)g Fq(\(in)n(t)g +(__c\))732 4029 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isascii)f +Fq(\(in)n(t)h(__c\))732 4121 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(isblank)f Fq(\(in)n(t)i(__c\))732 4212 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(iscn)m(trl)g Fq(\(in)n(t)g(__c\))732 +4303 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isdigit)e Fq(\(in)n(t)i(__c\))732 +4395 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isgraph)g Fq(\(in)n(t)g(__c\))732 +4486 y Fk(\210)41 b Fq(in)n(t)28 b Fs(islo)m(w)m(er)f +Fq(\(in)n(t)h(__c\))732 4577 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(isprin)m(t)f Fq(\(in)n(t)i(__c\))732 4668 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(ispunct)g Fq(\(in)n(t)g(__c\))732 +4760 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isspace)f Fq(\(in)n(t)h(__c\))732 +4851 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isupp)s(er)f Fq(\(in)n(t)h(__c\)) +732 4942 y Fk(\210)41 b Fq(in)n(t)28 b Fs(isxdigit)e +Fq(\(in)n(t)j(__c\))p 515 5179 V 515 5255 a Fp(Generated)c(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 361 377 +TeXDict begin 361 376 bop 515 203 a Fs(24.8)94 b(dela)m(y)-8 +b(.h)32 b(File)e(Reference)1536 b(361)p 515 236 2865 +4 v 633 523 a(Character)33 b(con)m(v)m(ertion)g(routines)633 +649 y Fl(This)56 b(r)l(e)l(alization)g(p)l(ermits)f(al)t(l)h(p)l +(ossible)h(values)e(of)h(inte)l(ger)f(ar)l(gument.)113 +b(The)633 749 y Fc(to)-5 b(ascii\(\))32 b Fl(\()13 b +Fq(p.)i Fl(134\))33 b(function)g(cle)l(ars)f(al)t(l)i(highest)f(bits.) +46 b(The)33 b Fc(tolower\(\))f Fl(\()13 b Fq(p.)i Fl(134\))633 +848 y(and)25 b Fc(toupp)-5 b(er\(\))25 b Fl(\()13 b Fq(p.)i +Fl(134\))26 b(functions)f(r)l(eturn)f(an)h(input)g(ar)l(gument)f(as)h +(is,)i(if)f(it)f(is)g(not)633 948 y(an)30 b(unsigne)l(d)f(char)i +(value.)732 1100 y Fk(\210)41 b Fq(in)n(t)28 b Fs(toascii)f +Fq(\(in)n(t)h(__c\))732 1184 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(tolo)m(w)m(er)g Fq(\(in)n(t)g(__c\))732 1268 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(toupp)s(er)g Fq(\(in)n(t)g(__c\))515 +1542 y Fn(24.8)112 b(dela)m(y)-9 b(.h)38 b(File)h(Reference)515 +1743 y Fs(24.8.1)93 b(Detailed)31 b(Description)515 1943 +y(De\034nes)639 2123 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(_UTIL_DELA)-8 b(Y_H_)31 b Fq(1)639 2223 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(F_CPU)h Fq(1000000UL)515 2480 +y Fs(F)-8 b(unctions)639 2660 y Fk(\210)41 b Fq(v)n(oid)27 +b Fs(_dela)m(y_us)h Fq(\(double)g(__us\))639 2761 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(_dela)m(y_ms)h Fq(\(double)g(__ms\))515 +3034 y Fn(24.9)112 b(dela)m(y_basic.h)40 b(File)e(Reference)515 +3235 y Fs(24.9.1)93 b(Detailed)31 b(Description)515 3435 +y(De\034nes)639 3615 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(_UTIL_DELA)-8 b(Y_BASIC_H_)31 b Fq(1)515 3872 y Fs(F)-8 +b(unctions)639 4051 y Fk(\210)41 b Fq(v)n(oid)27 b Fs(_dela)m(y_lo)s +(op_1)g Fq(\()p Fs(uin)m(t8_t)h Fq(__coun)n(t\))639 4152 +y Fk(\210)41 b Fq(v)n(oid)27 b Fs(_dela)m(y_lo)s(op_2)g +Fq(\()p Fs(uin)m(t16_t)h Fq(__coun)n(t\))515 4426 y Fn(24.10)112 +b(errno.h)38 b(File)g(Reference)515 4626 y Fs(24.10.1)93 +b(Detailed)31 b(Description)515 4827 y(De\034nes)639 +5006 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ERRNO_H_)f +Fq(1)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 362 378 +TeXDict begin 362 377 bop 515 203 a Fs(24.11)94 b(fdev)m(op)s(en.c)31 +b(File)g(Reference)1334 b(362)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(EDOM)f Fq(33)639 +631 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(ERANGE)f Fq(34)515 +894 y Fs(V)-8 b(ariables)639 1080 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(errno)515 1360 y Fn(24.11)112 b(fdev)m(op)s(en.c)39 +b(File)f(Reference)515 1561 y Fs(24.11.1)93 b(Detailed)31 +b(Description)515 1761 y(F)-8 b(unctions)639 1947 y Fk(\210)41 +b Fq(FILE)28 b Fh(\003)g Fs(fdev)m(op)s(en)f Fq(\(in)n(t\()p +Fh(\003)p Fq(put\)\(c)n(har,)h(FILE)g Fh(\003)p Fq(\),)g(in)n(t\()p +Fh(\003)p Fq(get\)\(FILE)g Fh(\003)p Fq(\)\))515 2227 +y Fn(24.12)112 b(\033s.S)38 b(File)g(Reference)515 2428 +y Fs(24.12.1)93 b(Detailed)31 b(Description)515 2645 +y Fn(24.13)112 b(\033sl.S)38 b(File)h(Reference)515 2845 +y Fs(24.13.1)93 b(Detailed)31 b(Description)515 3062 +y Fn(24.14)112 b(\033sll.S)39 b(File)f(Reference)515 +3263 y Fs(24.14.1)93 b(Detailed)31 b(Description)515 +3480 y Fn(24.15)112 b(fuse.h)39 b(File)f(Reference)515 +3680 y Fs(24.15.1)93 b(Detailed)31 b(Description)515 +3881 y(De\034nes)639 4067 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_A)-11 b(VR_FUSE_H_)29 b Fq(1)639 4175 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(FUSEMEM)f Fq(__attribute__\(\(section)f +(\(".fuse"\)\)\))639 4283 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(FUSES)g Fq(__fuse_t)f(__fuse)g(FUSEMEM)515 4563 +y Fn(24.16)112 b(in)m(terrupt.h)37 b(File)h(Reference)515 +4763 y Fs(24.16.1)93 b(Detailed)31 b(Description)515 +4964 y Fq(@{)p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 363 379 +TeXDict begin 363 378 bop 515 203 a Fs(24.17)94 b(in)m(tt)m(yp)s(es.h) +31 b(File)g(Reference)1361 b(363)p 515 236 2865 4 v 515 +523 a(De\034nes)633 709 y(Global)31 b(manipulation)g(of)g(the)h(in)m +(terrupt)g(\035ag)633 841 y Fl(The)43 b(glob)l(al)g(interrupt)e(\035ag) +h(is)g(maintaine)l(d)h(in)e(the)h(I)g(bit)g(of)g(the)g(status)f(r)l(e)l +(gister)633 941 y(\(SREG\).)732 1106 y Fk(\210)g Fq(#de\034ne)28 +b Fs(sei)p Fq(\(\))732 1197 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(cli)p Fq(\(\))633 1425 y Fs(Macros)k(for)g(writing)f(in)m(terrupt) +h(handler)g(functions)732 1606 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR)p Fq(\(v)n(ector,)f(attributes\))732 1697 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(SIGNAL)p Fq(\(v)n(ector\))732 +1788 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(EMPTY_INTERR)m(UPT)p +Fq(\(v)n(ector\))732 1879 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_ALIAS)p Fq(\(v)n(ector,)g(target_v)n(ector\))732 +1970 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(reti)p Fq(\(\))732 +2061 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(BADISR_v)m(ect)633 +2289 y(ISR)j(attributes)732 2470 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_BLOCK)732 2561 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_NOBLOCK)732 2652 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_NAKED)732 2743 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(ISR_ALIASOF)p Fq(\(target_v)n(ector\))515 3022 y +Fn(24.17)112 b(in)m(tt)m(yp)s(es.h)38 b(File)g(Reference)515 +3223 y Fs(24.17.1)93 b(Detailed)31 b(Description)515 +3423 y(De\034nes)633 3609 y(macros)h(for)g(prin)m(tf)g(and)g(scanf)h +(format)f(sp)s(eci\034ers)633 3741 y Fl(F)-6 b(or)24 +b(C++,)h(these)f(ar)l(e)h(only)f(include)l(d)h(if)g(__STDC_LIMIT_MA)n +(CR)n(OS)d(is)j(de\034ne)l(d)633 3841 y(b)l(efor)l(e)30 +b(including)h Fo(<)p Fc(inttyp)-5 b(es.h)29 b Fl(\()13 +b Fq(p.)h Fl(363\))p Fo(>)p Fl(.)732 4006 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRId8)g Fq("d")732 4097 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIdLEAST8)h Fq("d")732 4188 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIdF)-11 b(AST8)29 +b Fq("d")732 4279 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIi8)f +Fq("i")732 4370 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiLEAST8)g +Fq("i")732 4461 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiF)-11 +b(AST8)28 b Fq("i")732 4552 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRId16)g Fq("d")732 4643 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIdLEAST16)g Fq("d")732 4734 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIdF)-11 b(AST16)29 b Fq("d")732 4824 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIi16)f Fq("i")732 4915 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIiLEAST16)g Fq("i")732 5006 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiF)-11 b(AST16)28 +b Fq("i")p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 364 380 +TeXDict begin 364 379 bop 515 203 a Fs(24.17)94 b(in)m(tt)m(yp)s(es.h) +31 b(File)g(Reference)1361 b(364)p 515 236 2865 4 v 732 +523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRId32)g Fq("ld")732 +614 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIdLEAST32)g +Fq("ld")732 706 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIdF)-11 +b(AST32)29 b Fq("ld")732 797 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIi32)f Fq("li")732 888 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIiLEAST32)g Fq("li")732 980 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIiF)-11 b(AST32)28 b Fq("li")732 1071 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIdPTR)g Fq(PRId16)732 1162 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIiPTR)g Fq(PRIi16)732 +1254 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIo8)g Fq("o")732 +1345 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoLEAST8)g +Fq("o")732 1436 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoF)-11 +b(AST8)29 b Fq("o")732 1528 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIu8)g Fq("u")732 1619 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIuLEAST8)h Fq("u")732 1710 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIuF)-11 b(AST8)29 b Fq("u")732 1802 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIx8)g Fq("x")732 1893 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIxLEAST8)h Fq("x")732 1984 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxF)-11 b(AST8)29 +b Fq("x")732 2076 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIX8)g +Fq("X")732 2167 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXLEAST8)h +Fq("X")732 2258 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXF)-11 +b(AST8)29 b Fq("X")732 2350 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIo16)f Fq("o")732 2441 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIoLEAST16)g Fq("o")732 2532 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIoF)-11 b(AST16)28 b Fq("o")732 2623 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIu16)g Fq("u")732 2715 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIuLEAST16)g Fq("u")732 2806 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuF)-11 b(AST16)29 +b Fq("u")732 2897 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIx16)g +Fq("x")732 2989 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxLEAST16)h +Fq("x")732 3080 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxF)-11 +b(AST16)29 b Fq("x")732 3171 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIX16)g Fq("X")732 3263 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIXLEAST16)g Fq("X")732 3354 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIXF)-11 b(AST16)29 b Fq("X")732 3445 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIo32)f Fq("lo")732 3537 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIoLEAST32)g Fq("lo")732 3628 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoF)-11 b(AST32)28 +b Fq("lo")732 3719 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIu32)g +Fq("lu")732 3811 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuLEAST32)g +Fq("lu")732 3902 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuF)-11 +b(AST32)29 b Fq("lu")732 3993 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIx32)g Fq("lx")732 4085 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIxLEAST32)h Fq("lx")732 4176 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PRIxF)-11 b(AST32)29 b Fq("lx")732 4267 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIX32)g Fq("lX")732 4359 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PRIXLEAST32)g Fq("lX")732 4450 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXF)-11 b(AST32)29 +b Fq("lX")732 4541 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIoPTR)g +Fq(PRIo16)732 4633 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIuPTR)g +Fq(PRIu16)732 4724 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIxPTR)h +Fq(PRIx16)732 4815 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PRIXPTR)h +Fq(PRIX16)732 4907 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNd16)f +Fq("d")732 4998 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNdLEAST16)g +Fq("d")p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 365 381 +TeXDict begin 365 380 bop 515 203 a Fs(24.17)94 b(in)m(tt)m(yp)s(es.h) +31 b(File)g(Reference)1361 b(365)p 515 236 2865 4 v 732 +523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNdF)-11 b(AST16)28 +b Fq("d")732 614 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNi16)f +Fq("i")732 706 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNiLEAST16)f +Fq("i")732 797 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNiF)-11 +b(AST16)28 b Fq("i")732 888 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNd32)f Fq("ld")732 980 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNdLEAST32)g Fq("ld")732 1071 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNdF)-11 b(AST32)28 b Fq("ld")732 1162 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNi32)f Fq("li")732 1254 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNiLEAST32)f Fq("li")732 1345 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNiF)-11 b(AST32)28 +b Fq("li")732 1436 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNdPTR)g +Fq(SCNd16)732 1528 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNiPTR)g +Fq(SCNi16)732 1619 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNo16)f +Fq("o")732 1710 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoLEAST16)g +Fq("o")732 1802 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoF)-11 +b(AST16)28 b Fq("o")732 1893 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNu16)f Fq("u")732 1984 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuLEAST16)g Fq("u")732 2076 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuF)-11 b(AST16)28 b Fq("u")732 2167 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNx16)g Fq("x")732 2258 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNxLEAST16)g Fq("x")732 2350 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNxF)-11 b(AST16)29 +b Fq("x")732 2441 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNo32)f +Fq("lo")732 2532 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoLEAST32)g +Fq("lo")732 2623 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoF)-11 +b(AST32)28 b Fq("lo")732 2715 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNu32)f Fq("lu")732 2806 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuLEAST32)g Fq("lu")732 2897 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SCNuF)-11 b(AST32)28 b Fq("lu")732 2989 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNx32)g Fq("lx")732 3080 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SCNxLEAST32)g Fq("lx")732 3171 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNxF)-11 b(AST32)29 +b Fq("lx")732 3263 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNoPTR)g +Fq(SCNo16)732 3354 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNuPTR)g +Fq(SCNu16)732 3445 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SCNxPTR)g +Fq(SCNx16)515 3708 y Fs(T)m(yp)s(edefs)633 3895 y(F)-8 +b(ar)32 b(p)s(oin)m(ters)f(for)h(memory)g(access)g Fo(>)p +Fs(64K)732 4078 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b +Fs(in)m(t32_t)e(in)m(t_farptr_t)732 4169 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b Fs(uin)m(t32_t)e(uin)m(t_farptr_t)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 366 382 +TeXDict begin 366 381 bop 515 203 a Fs(24.18)94 b(io.h)30 +b(File)h(Reference)1623 b(366)p 515 236 2865 4 v 515 +523 a Fn(24.18)112 b(io.h)38 b(File)g(Reference)515 724 +y Fs(24.18.1)93 b(Detailed)31 b(Description)515 941 y +Fn(24.19)112 b(lo)s(c)m(k.h)38 b(File)g(Reference)515 +1141 y Fs(24.19.1)93 b(Detailed)31 b(Description)515 +1342 y(De\034nes)639 1528 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_A)-11 b(VR_LOCK_H_)29 b Fq(1)639 1636 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(LOCKMEM)f Fq(__attribute__\(\(section)f(\(".lo)r +(c)n(k"\)\)\))639 1744 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(LOCKBITS)g Fq(unsigned)g(c)n(har)e(__lo)r(c)n(k)g(LOCKMEM)639 +1852 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(LOCKBITS_DEF)-11 +b(A)m(UL)j(T)31 b Fq(\(0xFF\))515 2131 y Fn(24.20)112 +b(math.h)38 b(File)h(Reference)515 2332 y Fs(24.20.1)93 +b(Detailed)31 b(Description)515 2532 y(De\034nes)639 +2719 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(M_PI)g Fq(3.1415926535897)o +(93)o(23)o(84)o(62)o(64)o(3)639 2827 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(M_SQR)-8 b(T2)27 b Fq(1.4142135623730)o(95)o(04)o(88)o(01)o(68)o +(87)639 2935 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(NAN)f +Fq(__builtin_nan\(""\))639 3043 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INFINITY)h Fq(__builtin_inf\(\))515 3306 y Fs(F)-8 +b(unctions)639 3492 y Fk(\210)41 b Fq(double)28 b Fs(cos)f +Fq(\(double)h(__x\))639 3600 y Fk(\210)41 b Fq(double)28 +b Fs(fabs)g Fq(\(double)f(__x\))639 3708 y Fk(\210)41 +b Fq(double)28 b Fs(fmo)s(d)f Fq(\(double)g(__x,)g(double)g(__y\))639 +3816 y Fk(\210)41 b Fq(double)28 b Fs(mo)s(df)f Fq(\(double)g(__x,)g +(double)g Fh(\003)p Fq(__iptr\))639 3924 y Fk(\210)41 +b Fq(double)28 b Fs(sin)f Fq(\(double)g(__x\))639 4032 +y Fk(\210)41 b Fq(double)28 b Fs(sqrt)g Fq(\(double)g(__x\))639 +4140 y Fk(\210)41 b Fq(double)28 b Fs(tan)g Fq(\(double)g(__x\))639 +4248 y Fk(\210)41 b Fq(double)28 b Fs(\035o)s(or)f Fq(\(double)h(__x\)) +639 4355 y Fk(\210)41 b Fq(double)28 b Fs(ceil)f Fq(\(double)g(__x\)) +639 4463 y Fk(\210)41 b Fq(double)28 b Fs(frexp)g Fq(\(double)g(__x,)e +(in)n(t)i Fh(\003)p Fq(__p)r(exp\))639 4571 y Fk(\210)41 +b Fq(double)28 b Fs(ldexp)f Fq(\(double)h(__x,)e(in)n(t)i(__exp\))639 +4679 y Fk(\210)41 b Fq(double)28 b Fs(exp)g Fq(\(double)f(__x\))639 +4787 y Fk(\210)41 b Fq(double)28 b Fs(cosh)f Fq(\(double)h(__x\))639 +4895 y Fk(\210)41 b Fq(double)28 b Fs(sinh)f Fq(\(double)g(__x\))639 +5003 y Fk(\210)41 b Fq(double)28 b Fs(tanh)g Fq(\(double)g(__x\))p +515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 367 383 +TeXDict begin 367 382 bop 515 203 a Fs(24.20)94 b(math.h)31 +b(File)g(Reference)1481 b(367)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(double)28 b Fs(acos)g Fq(\(double)f(__x\))639 +631 y Fk(\210)41 b Fq(double)28 b Fs(asin)f Fq(\(double)h(__x\))639 +739 y Fk(\210)41 b Fq(double)28 b Fs(atan)g Fq(\(double)g(__x\))639 +847 y Fk(\210)41 b Fq(double)28 b Fs(atan2)g Fq(\(double)g(__y)-7 +b(,)27 b(double)g(__x\))639 955 y Fk(\210)41 b Fq(double)28 +b Fs(log)e Fq(\(double)i(__x\))639 1063 y Fk(\210)41 +b Fq(double)28 b Fs(log10)e Fq(\(double)i(__x\))639 1171 +y Fk(\210)41 b Fq(double)28 b Fs(p)s(o)m(w)f Fq(\(double)h(__x,)e +(double)i(__y\))639 1279 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(isnan)f Fq(\(double)h(__x\))639 1386 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(isinf)f Fq(\(double)g(__x\))639 1494 +y Fk(\210)41 b Fq(double)28 b Fs(square)g Fq(\(double)g(__x\))639 +1602 y Fk(\210)41 b Fq(static)28 b(double)f Fs(cop)m(ysign)h +Fq(\(double)f(__x,)g(double)g(__y\))639 1710 y Fk(\210)41 +b Fq(double)28 b Fs(fdim)f Fq(\(double)g(__x,)g(double)g(__y\))639 +1818 y Fk(\210)41 b Fq(double)28 b Fs(fma)g Fq(\(double)f(__x,)g +(double)g(__y)-7 b(,)27 b(double)h(__z\))639 1926 y Fk(\210)41 +b Fq(double)28 b Fs(fmax)g Fq(\(double)g(__x,)e(double)i(__y\))639 +2034 y Fk(\210)41 b Fq(double)28 b Fs(fmin)f Fq(\(double)g(__x,)g +(double)g(__y\))639 2142 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sign)m(bit)f Fq(\(double)g(__x\))639 2250 y Fk(\210)41 +b Fq(double)28 b Fs(trunc)g Fq(\(double)g(__x\))639 2358 +y Fk(\210)41 b Fq(static)28 b(in)n(t)g Fs(is\034nite)e +Fq(\(double)i(__x\))639 2466 y Fk(\210)41 b Fq(double)28 +b Fs(h)m(yp)s(ot)g Fq(\(double)f(__x,)g(double)h(__y\))639 +2574 y Fk(\210)41 b Fq(double)28 b Fs(round)g Fq(\(double)f(__x\))639 +2682 y Fk(\210)41 b Fq(long)27 b Fs(lround)g Fq(\(double)h(__x\))639 +2790 y Fk(\210)41 b Fq(long)27 b Fs(lrin)m(t)h Fq(\(double)f(__x\))p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 368 384 +TeXDict begin 368 383 bop 515 203 a Fs(24.21)94 b(memccp)m(y)-8 +b(.S)31 b(File)g(Reference)1317 b(368)p 515 236 2865 +4 v 515 523 a Fn(24.21)112 b(memccp)m(y)-9 b(.S)38 b(File)g(Reference) +515 724 y Fs(24.21.1)93 b(Detailed)31 b(Description)515 +941 y Fn(24.22)112 b(memc)m(hr.S)38 b(File)g(Reference)515 +1141 y Fs(24.22.1)93 b(Detailed)31 b(Description)515 +1358 y Fn(24.23)112 b(memc)m(hr_P)-9 b(.S)38 b(File)g(Reference)515 +1559 y Fs(24.23.1)93 b(Detailed)31 b(Description)515 +1776 y Fn(24.24)112 b(memcmp.S)39 b(File)f(Reference)515 +1976 y Fs(24.24.1)93 b(Detailed)31 b(Description)515 +2193 y Fn(24.25)112 b(memcmp_P)-9 b(.S)38 b(File)h(Reference)515 +2394 y Fs(24.25.1)93 b(Detailed)31 b(Description)515 +2611 y Fn(24.26)112 b(memcp)m(y)-9 b(.S)38 b(File)h(Reference)515 +2811 y Fs(24.26.1)93 b(Detailed)31 b(Description)515 +3028 y Fn(24.27)112 b(memcp)m(y_P)-9 b(.S)38 b(File)g(Reference)515 +3229 y Fs(24.27.1)93 b(Detailed)31 b(Description)515 +3446 y Fn(24.28)112 b(memmem.S)40 b(File)e(Reference)515 +3646 y Fs(24.28.1)93 b(Detailed)31 b(Description)515 +3863 y Fn(24.29)112 b(memmo)m(v)m(e.S)39 b(File)f(Reference)515 +4064 y Fs(24.29.1)93 b(Detailed)31 b(Description)515 +4281 y Fn(24.30)112 b(memrc)m(hr.S)38 b(File)g(Reference)515 +4482 y Fs(24.30.1)93 b(Detailed)31 b(Description)515 +4699 y Fn(24.31)112 b(memrc)m(hr_P)-9 b(.S)37 b(File)i(Reference)515 +4899 y Fs(24.31.1)93 b(Detailed)31 b(Description)515 +5116 y Fn(24.32)112 b(memset.S)39 b(File)f(Reference)515 +5317 y Fs(24.32.1)93 b(Detailed)31 b(Description)515 +5534 y Fn(24.33)112 b(parit)m(y)-9 b(.h)38 b(File)g(Reference)515 +5734 y Fs(24.33.1)93 b(Detailed)31 b(Description)515 +5935 y(De\034nes)639 6113 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(parit)m(y_ev)m(en_bit)p Fq(\(v)-5 b(al\))p 515 5179 +V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 369 385 +TeXDict begin 369 384 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(369)p 515 236 2865 4 v 515 +523 a Fn(24.34)112 b(pgmspace.h)39 b(File)f(Reference)515 +724 y Fs(24.34.1)93 b(Detailed)31 b(Description)515 924 +y(De\034nes)639 1110 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__PGMSP)-8 b(A)m(CE_H_)29 b Fq(1)639 1218 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__need_size_t)639 1326 y Fk(\210)41 +b Fq(#de\034ne)205 b Fs(__A)-8 b(TTR_PR)m(OGMEM__)204 +b Fq(__attribute__\(\(__-)722 1426 y(progmem__\)\))639 +1534 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__A)-8 b(TTR_PURE__)30 +b Fq(__attribute__\(\(__pure__\)\))639 1642 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(PR)m(OGMEM)f Fq(__A)-7 b(TTR_PR)n(OGMEM__)639 +1750 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PSTR)p Fq(\(s\))g(\(\(const)g +(PR)n(OGMEM)h(c)n(har)d Fh(\003)p Fq(\)\(s\)\))639 1858 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__LPM_classic__)p +Fq(\(addr\))639 1966 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__LPM_enhanced__)p Fq(\(addr\))639 2073 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__LPM_w)m(ord_classic__)p Fq(\(addr\))639 +2181 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__LPM_w)m(ord_enhanced__)p +Fq(\(addr\))639 2289 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__LPM_dw)m(ord_classic__)p Fq(\(addr\))639 2397 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(__LPM_dw)m(ord_enhanced__)p +Fq(\(addr\))639 2505 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__LPM_\035oat_classic__)p Fq(\(addr\))639 2613 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__LPM_\035oat_enhanced__)p Fq(\(addr\))639 +2721 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__LPM)p Fq(\(addr\))g +(__LPM_classic__\(addr\))639 2829 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__LPM_w)m(ord)p Fq(\(addr\))h(__LPM_w)n(ord_classic__\(addr\))639 +2937 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__LPM_dw)m(ord)p +Fq(\(addr\))h(__LPM_dw)n(ord_classic__\(addr\))639 3045 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__LPM_\035oat)p Fq(\(addr\))h +(__LPM_\035oat_classic__\(addr\))639 3153 y Fk(\210)41 +b Fq(#de\034ne)49 b Fs(pgm_read_b)m(yte_near)p Fq(\(address_short\))e +(__LPM\(\()p Fs(uin)m(t16_-)722 3252 y(t)p Fq(\)\(address_short\)\))639 +3360 y Fk(\210)41 b Fq(#de\034ne)207 b Fs(pgm_read_w)m(ord_near)p +Fq(\(address_short\))e(__LPM_-)722 3460 y(w)n(ord\(\()p +Fs(uin)m(t16_t)p Fq(\)\(address_short\)\))639 3568 y +Fk(\210)41 b Fq(#de\034ne)180 b Fs(pgm_read_dw)m(ord_near)p +Fq(\(address_short\))f(__LPM_-)722 3668 y(dw)n(ord\(\()p +Fs(uin)m(t16_t)p Fq(\)\(address_short\)\))639 3775 y +Fk(\210)41 b Fq(#de\034ne)218 b Fs(pgm_read_\035oat_near)p +Fq(\(address_short\))e(__LPM_-)722 3875 y(\035oat\(\()p +Fs(uin)m(t16_t)p Fq(\)\(address_short\)\))639 3983 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ELPM_classic__)p +Fq(\(addr\))639 4091 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__ELPM_enhanced__)p Fq(\(addr\))639 4199 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__ELPM_w)m(ord_classic__)p Fq(\(addr\))639 +4307 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ELPM_w)m(ord_enhanced__)p +Fq(\(addr\))639 4415 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__ELPM_dw)m(ord_classic__)p Fq(\(addr\))639 4523 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ELPM_dw)m(ord_enhanced__)p +Fq(\(addr\))639 4631 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__ELPM_\035oat_classic__)p Fq(\(addr\))639 4738 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ELPM_\035oat_enhanced__)p +Fq(\(addr\))639 4846 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(__ELPM)p Fq(\(addr\))g(__ELPM_classic__\(addr\))639 +4954 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ELPM_w)m(ord)p +Fq(\(addr\))h(__ELPM_w)n(ord_classic__\(addr\))p 515 +5179 V 515 5255 a Fp(Generated)c(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g +(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 370 386 +TeXDict begin 370 385 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(370)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ELPM_dw)m(ord)p +Fq(\(addr\))h(__ELPM_dw)n(ord_classic__\(addr\))639 631 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__ELPM_\035oat)p +Fq(\(addr\))h(__ELPM_\035oat_classic__\(addr\))639 739 +y Fk(\210)41 b Fq(#de\034ne)71 b Fs(pgm_read_b)m(yte_far)p +Fq(\(address_long\))f(__ELPM\(\()p Fs(uin)m(t32_-)722 +839 y(t)p Fq(\)\(address_long\)\))639 946 y Fk(\210)41 +b Fq(#de\034ne)229 b Fs(pgm_read_w)m(ord_far)p Fq(\(address_long\))f +(__ELPM_-)722 1046 y(w)n(ord\(\()p Fs(uin)m(t32_t)p Fq +(\)\(address_long\)\))639 1154 y Fk(\210)41 b Fq(#de\034ne)202 +b Fs(pgm_read_dw)m(ord_far)p Fq(\(address_long\))g(__ELPM_-)722 +1254 y(dw)n(ord\(\()p Fs(uin)m(t32_t)p Fq(\)\(address_long\)\))639 +1362 y Fk(\210)41 b Fq(#de\034ne)240 b Fs(pgm_read_\035oat_far)p +Fq(\(address_long\))f(__ELPM_-)722 1461 y(\035oat\(\()p +Fs(uin)m(t32_t)p Fq(\)\(address_long\)\))639 1569 y Fk(\210)41 +b Fq(#de\034ne)204 b Fs(pgm_read_b)m(yte)p Fq(\(address_short\))f +(pgm_read_b)n(yte_-)722 1669 y(near\(address_short\))639 +1777 y Fk(\210)41 b Fq(#de\034ne)182 b Fs(pgm_read_w)m(ord)p +Fq(\(address_short\))d(pgm_read_w)n(ord_-)722 1876 y +(near\(address_short\))639 1984 y Fk(\210)41 b Fq(#de\034ne)132 +b Fs(pgm_read_dw)m(ord)p Fq(\(address_short\))e(pgm_read_dw)n(ord_-)722 +2084 y(near\(address_short\))639 2192 y Fk(\210)41 b +Fq(#de\034ne)201 b Fs(pgm_read_\035oat)p Fq(\(address_short\))d +(pgm_read_\035oat_-)722 2291 y(near\(address_short\))639 +2399 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PGM_P)g Fq(const)f +Fs(prog_c)m(har)j Fh(\003)639 2507 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PGM_V)m(OID_P)h Fq(const)e Fs(prog_v)m(oid)h Fh(\003)515 +2770 y Fs(T)m(yp)s(edefs)639 2957 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b(v)n(oid)f(PR)n(OGMEM)i Fs(prog_v)m(oid)639 3065 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b(c)n(har)f(PR)n(OGMEM)h Fs(prog_c)m(har)639 +3173 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b(unsigned)g(c)n(har)e(PR)n +(OGMEM)i Fs(prog_uc)m(har)639 3281 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t8_t)g Fq(PR)n(OGMEM)g Fs(prog_in)m(t8_t)639 +3388 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t8_t)g +Fq(PR)n(OGMEM)g Fs(prog_uin)m(t8_t)639 3496 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(in)m(t16_t)g Fq(PR)n(OGMEM)g +Fs(prog_in)m(t16_t)639 3604 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(uin)m(t16_t)g Fq(PR)n(OGMEM)g Fs(prog_uin)m(t16_t)639 +3712 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(in)m(t32_t)g +Fq(PR)n(OGMEM)g Fs(prog_in)m(t32_t)639 3820 y Fk(\210)41 +b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t32_t)g Fq(PR)n(OGMEM)g +Fs(prog_uin)m(t32_t)639 3928 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b Fs(in)m(t64_t)g Fq(PR)n(OGMEM)g Fs(prog_in)m(t64_t)639 +4036 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 b Fs(uin)m(t64_t)g +Fq(PR)n(OGMEM)g Fs(prog_uin)m(t64_t)515 4299 y(F)-8 b(unctions)639 +4485 y Fk(\210)41 b Fq(PGM_V)n(OID_P)32 b Fs(memc)m(hr_P)h +Fq(\(PGM_V)n(OID_P)-7 b(,)33 b(in)n(t)f(__v)-5 b(al,)32 +b(size_t)f(__-)722 4585 y(len\))639 4693 y Fk(\210)41 +b Fq(in)n(t)d Fs(memcmp_P)g Fq(\(const)f(v)n(oid)g Fh(\003)p +Fq(,)j(PGM_V)n(OID_P)-7 b(,)39 b(size_t\))e(__A)-7 b(TTR_-)722 +4793 y(PURE__)639 4901 y Fk(\210)41 b Fq(v)n(oid)27 b +Fh(\003)g Fs(memcp)m(y_P)h Fq(\(v)n(oid)g Fh(\003)p Fq(,)f(PGM_V)n +(OID_P)-7 b(,)28 b(size_t\))p 515 5179 V 515 5255 a Fp(Generated)d(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 371 387 +TeXDict begin 371 386 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(371)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(v)n(oid)28 b Fh(\003)h Fs(memmem_P)e +Fq(\(const)i(v)n(oid)f Fh(\003)p Fq(,)h(size_t,)g(PGM_V)n(OID_P)-7 +b(,)29 b(size_t\))g(_-)722 623 y(_A)-7 b(TTR_PURE__)639 +730 y Fk(\210)41 b Fq(PGM_V)n(OID_P)26 b Fs(memrc)m(hr_P)g +Fq(\(PGM_V)n(OID_P)-7 b(,)27 b(in)n(t)e(__v)-5 b(al,)25 +b(size_t)g(__-)722 830 y(len\))639 937 y Fk(\210)41 b +Fq(c)n(har)27 b Fh(\003)g Fs(strcat_P)i Fq(\(c)n(har)e +Fh(\003)p Fq(,)g(PGM_P\))639 1044 y Fk(\210)41 b Fq(PGM_P)29 +b Fs(strc)m(hr_P)g Fq(\(PGM_P)-7 b(,)29 b(in)n(t)f(__v)-5 +b(al\))639 1151 y Fk(\210)41 b Fq(PGM_P)29 b Fs(strc)m(hrn)m(ul_P)g +Fq(\(PGM_P)-7 b(,)29 b(in)n(t)f(__v)-5 b(al\))639 1259 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(strcmp_P)g Fq(\(const)g(c)n(har)e +Fh(\003)p Fq(,)h(PGM_P\))i(__A)-7 b(TTR_PURE__)639 1366 +y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strcp)m(y_P)i +Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P\))639 1473 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(strcasecmp_P)h Fq(\(const)e(c)n(har)f +Fh(\003)p Fq(,)i(PGM_P\))g(__A)-7 b(TTR_PURE__)639 1580 +y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strcasestr_P)h +Fq(\(const)g(c)n(har)e Fh(\003)p Fq(,)h(PGM_P\))i(__A)-7 +b(TTR_PURE__)639 1688 y Fk(\210)41 b Fq(size_t)35 b Fs(strcspn_P)h +Fq(\(const)f(c)n(har)f Fh(\003)p Fq(__s,)i(PGM_P)g(__reject\))e(__A)-7 +b(TTR_-)722 1787 y(PURE__)639 1895 y Fk(\210)41 b Fq(size_t)27 +b Fs(strlcat_P)i Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P)-7 +b(,)29 b(size_t\))639 2002 y Fk(\210)41 b Fq(size_t)27 +b Fs(strlcp)m(y_P)i Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P)-7 +b(,)29 b(size_t\))639 2109 y Fk(\210)41 b Fq(size_t)27 +b Fs(strlen_P)h Fq(\(PGM_P\))639 2216 y Fk(\210)41 b +Fq(size_t)27 b Fs(strnlen_P)h Fq(\(PGM_P)-7 b(,)29 b(size_t\))639 +2324 y Fk(\210)41 b Fq(in)n(t)28 b Fs(strncmp_P)g Fq(\(const)g(c)n(har) +e Fh(\003)p Fq(,)h(PGM_P)-7 b(,)29 b(size_t\))e(__A)-7 +b(TTR_PURE__)639 2431 y Fk(\210)41 b Fq(in)n(t)58 b Fs(strncasecmp_P)h +Fq(\(const)f(c)n(har)f Fh(\003)p Fq(,)65 b(PGM_P)-7 b(,)59 +b(size_t\))e(__A)-7 b(TTR_-)722 2531 y(PURE__)639 2638 +y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strncat_P)i +Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P)-7 b(,)28 b(size_t\))639 +2745 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strncp)m(y_P)i +Fq(\(c)n(har)e Fh(\003)p Fq(,)g(PGM_P)-7 b(,)29 b(size_t\))639 +2852 y Fk(\210)41 b Fq(c)n(har)29 b Fh(\003)g Fs(strpbrk_P)j +Fq(\(const)d(c)n(har)g Fh(\003)p Fq(__s,)g(PGM_P)h(__accept\))f(__A)-7 +b(TTR_-)722 2952 y(PURE__)639 3059 y Fk(\210)41 b Fq(PGM_P)29 +b Fs(strrc)m(hr_P)g Fq(\(PGM_P)-7 b(,)29 b(in)n(t)f(__v)-5 +b(al\))639 3167 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g +Fs(strsep_P)h Fq(\(c)n(har)e Fh(\003\003)p Fq(__sp,)g(PGM_P)i +(__delim\))639 3274 y Fk(\210)41 b Fq(size_t)c Fs(strspn_P)g +Fq(\(const)g(c)n(har)f Fh(\003)p Fq(__s,)i(PGM_P)f(__accept\))f(__A)-7 +b(TTR_-)722 3373 y(PURE__)639 3481 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strstr_P)h Fq(\(const)g(c)n(har)e Fh(\003)p +Fq(,)h(PGM_P\))i(__A)-7 b(TTR_PURE__)515 3743 y Fs(24.34.2)93 +b(De\034ne)31 b(Do)s(cumen)m(tation)515 3944 y(24.34.2.1)92 +b(#de\034ne)31 b(__ELPM_classic__\(addr\))515 4091 y(V)-8 +b(alue:)515 4296 y Fj(\(__extension__\({)710 b(\\)656 +4375 y(uint32_t)37 b(__addr32)h(=)d(\(uint32_t\)\(addr\);)40 +b(\\)656 4454 y(uint8_t)d(__result;)532 b(\\)656 4533 +y(__asm__)884 b(\\)656 4612 y(\()1094 b(\\)797 4691 y("out)36 +b(\0452,)g(\045C1")h("\\n\\t")284 b(\\)797 4770 y("mov)36 +b(r31,)h(\045B1")f("\\n\\t")249 b(\\)797 4848 y("mov)36 +b(r30,)h(\045A1")f("\\n\\t")249 b(\\)797 4927 y("elpm")37 +b("\\n\\t")531 b(\\)797 5006 y("mov)36 b(\0450,)g(r0")h("\\n\\t")319 +b(\\)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 372 388 +TeXDict begin 372 387 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(372)p 515 236 2865 4 v 797 +523 a Fj(:)35 b("=r")i(\(__result\))391 b(\\)797 602 +y(:)35 b("r")i(\(__addr32\),)391 b(\\)867 681 y("I")37 +b(\(_SFR_IO_ADDR\(RAMPZ\)\))k(\\)797 760 y(:)35 b("r0",)i("r30",)g +("r31")284 b(\\)656 839 y(\);)1059 b(\\)656 917 y(__result;)814 +b(\\)515 996 y(}\)\))515 1342 y Fs(24.34.2.2)92 b(#de\034ne)31 +b(__ELPM_dw)m(ord_enhanced__\(addr\))515 1489 y(V)-8 +b(alue:)515 1698 y Fj(\(__extension__\({)921 b(\\)656 +1777 y(uint32_t)37 b(__addr32)h(=)d(\(uint32_t\)\(addr\);)40 +b(\\)656 1856 y(uint32_t)d(__result;)708 b(\\)656 1935 +y(__asm__)1095 b(\\)656 2014 y(\()1305 b(\\)797 2093 +y("out)36 b(\0452,)g(\045C1")107 b("\\n\\t")425 b(\\)797 +2172 y("movw)37 b(r30,)f(\0451")71 b("\\n\\t")425 b(\\)797 +2250 y("elpm)37 b(\045A0,)f(Z+")71 b("\\n\\t")425 b(\\)797 +2329 y("elpm)37 b(\045B0,)f(Z+")71 b("\\n\\t")425 b(\\)797 +2408 y("elpm)37 b(\045C0,)f(Z+")71 b("\\n\\t")425 b(\\)797 +2487 y("elpm)37 b(\045D0,)f(Z")106 b("\\n\\t")425 b(\\)797 +2566 y(:)35 b("=r")i(\(__result\))602 b(\\)797 2645 y(:)35 +b("r")i(\(__addr32\),)602 b(\\)867 2724 y("I")37 b +(\(_SFR_IO_ADDR\(RAMPZ\)\))252 b(\\)797 2802 y(:)35 b("r30",)i("r31") +707 b(\\)656 2881 y(\);)1270 b(\\)656 2960 y(__result;)1025 +b(\\)515 3039 y(}\)\))515 3385 y Fs(24.34.2.3)92 b(#de\034ne)31 +b(__ELPM_enhanced__\(addr\))515 3532 y(V)-8 b(alue:)515 +3741 y Fj(\(__extension__\({)710 b(\\)656 3820 y(uint32_t)37 +b(__addr32)h(=)d(\(uint32_t\)\(addr\);)40 b(\\)656 3899 +y(uint8_t)d(__result;)532 b(\\)656 3978 y(__asm__)884 +b(\\)656 4057 y(\()1094 b(\\)797 4136 y("out)36 b(\0452,)g(\045C1")h +("\\n\\t")284 b(\\)797 4214 y("movw)37 b(r30,)f(\0451")g("\\n\\t")249 +b(\\)797 4293 y("elpm)37 b(\0450,)f(Z+")g("\\n\\t")284 +b(\\)797 4372 y(:)35 b("=r")i(\(__result\))391 b(\\)797 +4451 y(:)35 b("r")i(\(__addr32\),)391 b(\\)867 4530 y("I")37 +b(\(_SFR_IO_ADDR\(RAMPZ\)\))k(\\)797 4609 y(:)35 b("r30",)i("r31")496 +b(\\)656 4688 y(\);)1059 b(\\)656 4766 y(__result;)814 +b(\\)515 4845 y(}\)\))p 515 5179 V 515 5255 a Fp(Generated)25 +b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r +(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 373 389 +TeXDict begin 373 388 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(373)p 515 236 2865 4 v 515 +523 a(24.34.2.4)92 b(#de\034ne)31 b(__ELPM_\035oat_enhanced__\(addr\)) +515 670 y(V)-8 b(alue:)515 846 y Fj(\(__extension__\({)921 +b(\\)656 925 y(uint32_t)37 b(__addr32)h(=)d(\(uint32_t\)\(addr\);)40 +b(\\)656 1004 y(float)c(__result;)814 b(\\)656 1083 y(__asm__)1095 +b(\\)656 1161 y(\()1305 b(\\)797 1240 y("out)36 b(\0452,)g(\045C1")107 +b("\\n\\t")425 b(\\)797 1319 y("movw)37 b(r30,)f(\0451")71 +b("\\n\\t")425 b(\\)797 1398 y("elpm)37 b(\045A0,)f(Z+")71 +b("\\n\\t")425 b(\\)797 1477 y("elpm)37 b(\045B0,)f(Z+")71 +b("\\n\\t")425 b(\\)797 1556 y("elpm)37 b(\045C0,)f(Z+")71 +b("\\n\\t")425 b(\\)797 1635 y("elpm)37 b(\045D0,)f(Z")106 +b("\\n\\t")425 b(\\)797 1714 y(:)35 b("=r")i(\(__result\))602 +b(\\)797 1792 y(:)35 b("r")i(\(__addr32\),)602 b(\\)867 +1871 y("I")37 b(\(_SFR_IO_ADDR\(RAMPZ\)\))252 b(\\)797 +1950 y(:)35 b("r30",)i("r31")707 b(\\)656 2029 y(\);)1270 +b(\\)656 2108 y(__result;)1025 b(\\)515 2187 y(}\)\))515 +2494 y Fs(24.34.2.5)92 b(#de\034ne)31 b(__ELPM_w)m +(ord_classic__\(addr\))515 2641 y(V)-8 b(alue:)515 2817 +y Fj(\(__extension__\({)851 b(\\)656 2896 y(uint32_t)37 +b(__addr32)h(=)d(\(uint32_t\)\(addr\);)40 b(\\)656 2975 +y(uint16_t)d(__result;)638 b(\\)656 3054 y(__asm__)1025 +b(\\)656 3132 y(\()1235 b(\\)797 3211 y("out)36 b(\0452,)g(\045C1")107 +b("\\n\\t")355 b(\\)797 3290 y("mov)36 b(r31,)h(\045B1")71 +b("\\n\\t")355 b(\\)797 3369 y("mov)36 b(r30,)h(\045A1")71 +b("\\n\\t")355 b(\\)797 3448 y("elpm")f("\\n\\t")h(\\)797 +3527 y("mov)36 b(\045A0,)h(r0")106 b("\\n\\t")355 b(\\)797 +3606 y("in)36 b(r0,)g(\0452")177 b("\\n\\t")355 b(\\)797 +3685 y("adiw)37 b(r30,)f(1")106 b("\\n\\t")355 b(\\)797 +3763 y("adc)36 b(r0,)g(__zero_reg__")j("\\n\\t")108 b(\\)797 +3842 y("out)36 b(\0452,)g(r0")142 b("\\n\\t")355 b(\\)797 +3921 y("elpm")f("\\n\\t")h(\\)797 4000 y("mov)36 b(\045B0,)h(r0")106 +b("\\n\\t")355 b(\\)797 4079 y(:)35 b("=r")i(\(__result\))532 +b(\\)797 4158 y(:)35 b("r")i(\(__addr32\),)532 b(\\)867 +4237 y("I")37 b(\(_SFR_IO_ADDR\(RAMPZ\)\))182 b(\\)797 +4315 y(:)35 b("r0",)i("r30",)g("r31")425 b(\\)656 4394 +y(\);)1200 b(\\)656 4473 y(__result;)955 b(\\)515 4552 +y(}\)\))515 4859 y Fs(24.34.2.6)92 b(#de\034ne)31 b(__ELPM_w)m +(ord_enhanced__\(addr\))515 5006 y(V)-8 b(alue:)p 515 +5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 374 390 +TeXDict begin 374 389 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(374)p 515 236 2865 4 v 515 +523 a Fj(\(__extension__\({)851 b(\\)656 602 y(uint32_t)37 +b(__addr32)h(=)d(\(uint32_t\)\(addr\);)40 b(\\)656 681 +y(uint16_t)d(__result;)638 b(\\)656 760 y(__asm__)1025 +b(\\)656 839 y(\()1235 b(\\)797 917 y("out)36 b(\0452,)g(\045C1")107 +b("\\n\\t")355 b(\\)797 996 y("movw)37 b(r30,)f(\0451")71 +b("\\n\\t")355 b(\\)797 1075 y("elpm)37 b(\045A0,)f(Z+")71 +b("\\n\\t")355 b(\\)797 1154 y("elpm)37 b(\045B0,)f(Z")106 +b("\\n\\t")355 b(\\)797 1233 y(:)35 b("=r")i(\(__result\))532 +b(\\)797 1312 y(:)35 b("r")i(\(__addr32\),)532 b(\\)867 +1391 y("I")37 b(\(_SFR_IO_ADDR\(RAMPZ\)\))182 b(\\)797 +1469 y(:)35 b("r30",)i("r31")637 b(\\)656 1548 y(\);)1200 +b(\\)656 1627 y(__result;)955 b(\\)515 1706 y(}\)\))515 +2052 y Fs(24.34.2.7)92 b(#de\034ne)31 b(__LPM_classic__\(addr\))515 +2199 y(V)-8 b(alue:)515 2408 y Fj(\(__extension__\({)569 +b(\\)656 2487 y(uint16_t)37 b(__addr16)h(=)d(\(uint16_t\)\(addr\);)40 +b(\\)656 2566 y(uint8_t)d(__result;)391 b(\\)656 2645 +y(__asm__)743 b(\\)656 2724 y(\()953 b(\\)797 2802 y("lpm")37 +b("\\n\\t")425 b(\\)797 2881 y("mov)36 b(\0450,)g(r0")h("\\n\\t")178 +b(\\)797 2960 y(:)35 b("=r")i(\(__result\))250 b(\\)797 +3039 y(:)35 b("z")i(\(__addr16\))285 b(\\)797 3118 y(:)35 +b("r0")637 b(\\)656 3197 y(\);)918 b(\\)656 3276 y(__result;)673 +b(\\)515 3355 y(}\)\))515 3701 y Fs(24.34.2.8)92 b(#de\034ne)31 +b(__LPM_dw)m(ord_classic__\(addr\))515 3848 y(V)-8 b(alue:)515 +4057 y Fj(\(__extension__\({)992 b(\\)656 4136 y(uint16_t)37 +b(__addr16)h(=)d(\(uint16_t\)\(addr\);)111 b(\\)656 4214 +y(uint32_t)37 b(__result;)779 b(\\)656 4293 y(__asm__)1166 +b(\\)656 4372 y(\()1376 b(\\)797 4451 y("lpm")389 b("\\n\\t")496 +b(\\)797 4530 y("mov)36 b(\045A0,)h(r0")106 b("\\n\\t")496 +b(\\)797 4609 y("adiw)37 b(r30,)f(1")106 b("\\n\\t")496 +b(\\)797 4688 y("lpm")389 b("\\n\\t")496 b(\\)797 4766 +y("mov)36 b(\045B0,)h(r0")106 b("\\n\\t")496 b(\\)797 +4845 y("adiw)37 b(r30,)f(1")106 b("\\n\\t")496 b(\\)797 +4924 y("lpm")389 b("\\n\\t")496 b(\\)797 5003 y("mov)36 +b(\045C0,)h(r0")106 b("\\n\\t")496 b(\\)p 515 5179 V +515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06) +e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p +eop end +%%Page: 375 391 +TeXDict begin 375 390 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(375)p 515 236 2865 4 v 797 +523 a Fj("adiw)37 b(r30,)f(1")106 b("\\n\\t")496 b(\\)797 +602 y("lpm")389 b("\\n\\t")496 b(\\)797 681 y("mov)36 +b(\045D0,)h(r0")106 b("\\n\\t")496 b(\\)797 760 y(:)35 +b("=r")i(\(__result\),)h("=z")f(\(__addr16\))73 b(\\)797 +839 y(:)35 b("1")i(\(__addr16\))708 b(\\)797 917 y(:)35 +b("r0")1060 b(\\)656 996 y(\);)1341 b(\\)656 1075 y(__result;)1096 +b(\\)515 1154 y(}\)\))515 1500 y Fs(24.34.2.9)92 b(#de\034ne)31 +b(__LPM_dw)m(ord_enhanced__\(addr\))515 1647 y(V)-8 b(alue:)515 +1856 y Fj(\(__extension__\({)992 b(\\)656 1935 y(uint16_t)37 +b(__addr16)h(=)d(\(uint16_t\)\(addr\);)111 b(\\)656 2014 +y(uint32_t)37 b(__result;)779 b(\\)656 2093 y(__asm__)1166 +b(\\)656 2172 y(\()1376 b(\\)797 2250 y("lpm)36 b(\045A0,)h(Z+")106 +b("\\n\\t")496 b(\\)797 2329 y("lpm)36 b(\045B0,)h(Z+")106 +b("\\n\\t")496 b(\\)797 2408 y("lpm)36 b(\045C0,)h(Z+")106 +b("\\n\\t")496 b(\\)797 2487 y("lpm)36 b(\045D0,)h(Z")141 +b("\\n\\t")496 b(\\)797 2566 y(:)35 b("=r")i(\(__result\),)h("=z")f +(\(__addr16\))73 b(\\)797 2645 y(:)35 b("1")i(\(__addr16\))708 +b(\\)656 2724 y(\);)1341 b(\\)656 2802 y(__result;)1096 +b(\\)515 2881 y(}\)\))515 3227 y Fs(24.34.2.10)92 b(#de\034ne)31 +b(__LPM_enhanced__\(addr\))515 3374 y(V)-8 b(alue:)515 +3583 y Fj(\(__extension__\({)569 b(\\)656 3662 y(uint16_t)37 +b(__addr16)h(=)d(\(uint16_t\)\(addr\);)40 b(\\)656 3741 +y(uint8_t)d(__result;)391 b(\\)656 3820 y(__asm__)743 +b(\\)656 3899 y(\()953 b(\\)797 3978 y("lpm)36 b(\0450,)g(Z")g +("\\n\\t")214 b(\\)797 4057 y(:)35 b("=r")i(\(__result\))250 +b(\\)797 4136 y(:)35 b("z")i(\(__addr16\))285 b(\\)656 +4214 y(\);)918 b(\\)656 4293 y(__result;)673 b(\\)515 +4372 y(}\)\))515 4718 y Fs(24.34.2.11)92 b(#de\034ne)31 +b(__LPM_\035oat_classic__\(addr\))515 4865 y(V)-8 b(alue:)p +515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 376 392 +TeXDict begin 376 391 bop 515 203 a Fs(24.34)94 b(pgmspace.h)31 +b(File)f(Reference)1294 b(376)p 515 236 2865 4 v 515 +523 a Fj(\(__extension__\({)992 b(\\)656 602 y(uint16_t)37 +b(__addr16)h(=)d(\(uint16_t\)\(addr\);)111 b(\\)656 681 +y(float)36 b(__result;)885 b(\\)656 760 y(__asm__)1166 +b(\\)656 839 y(\()1376 b(\\)797 917 y("lpm")389 b("\\n\\t")496 +b(\\)797 996 y("mov)36 b(\045A0,)h(r0")106 b("\\n\\t")496 +b(\\)797 1075 y("adiw)37 b(r30,)f(1")106 b("\\n\\t")496 +b(\\)797 1154 y("lpm")389 b("\\n\\t")496 b(\\)797 1233 +y("mov)36 b(\045B0,)h(r0")106 b("\\n\\t")496 b(\\)797 +1312 y("adiw)37 b(r30,)f(1")106 b("\\n\\t")496 b(\\)797 +1391 y("lpm")389 b("\\n\\t")496 b(\\)797 1469 y("mov)36 +b(\045C0,)h(r0")106 b("\\n\\t")496 b(\\)797 1548 y("adiw)37 +b(r30,)f(1")106 b("\\n\\t")496 b(\\)797 1627 y("lpm")389 +b("\\n\\t")496 b(\\)797 1706 y("mov)36 b(\045D0,)h(r0")106 +b("\\n\\t")496 b(\\)797 1785 y(:)35 b("=r")i(\(__result\),)h("=z")f +(\(__addr16\))73 b(\\)797 1864 y(:)35 b("1")i(\(__addr16\))708 +b(\\)797 1943 y(:)35 b("r0")1060 b(\\)656 2022 y(\);)1341 +b(\\)656 2100 y(__result;)1096 b(\\)515 2179 y(}\)\))515 +2525 y Fs(24.34.2.12)92 b(#de\034ne)31 b +(__LPM_\035oat_enhanced__\(addr\))515 2672 y(V)-8 b(alue:)515 +2881 y Fj(\(__extension__\({)992 b(\\)656 2960 y(uint16_t)37 +b(__addr16)h(=)d(\(uint16_t\)\(addr\);)111 b(\\)656 3039 +y(float)36 b(__result;)885 b(\\)656 3118 y(__asm__)1166 +b(\\)656 3197 y(\()1376 b(\\)797 3276 y("lpm)36 b(\045A0,)h(Z+")106 +b("\\n\\t")496 b(\\)797 3355 y("lpm)36 b(\045B0,)h(Z+")106 +b("\\n\\t")496 b(\\)797 3433 y("lpm)36 b(\045C0,)h(Z+")106 +b("\\n\\t")496 b(\\)797 3512 y("lpm)36 b(\045D0,)h(Z")141 +b("\\n\\t")496 b(\\)797 3591 y(:)35 b("=r")i(\(__result\),)h("=z")f +(\(__addr16\))73 b(\\)797 3670 y(:)35 b("1")i(\(__addr16\))708 +b(\\)656 3749 y(\);)1341 b(\\)656 3828 y(__result;)1096 +b(\\)515 3907 y(}\)\))515 4253 y Fs(24.34.2.13)92 b(#de\034ne)31 +b(__LPM_w)m(ord_classic__\(addr\))515 4400 y(V)-8 b(alue:)515 +4609 y Fj(\(__extension__\({)992 b(\\)656 4688 y(uint16_t)37 +b(__addr16)h(=)d(\(uint16_t\)\(addr\);)111 b(\\)656 4766 +y(uint16_t)37 b(__result;)779 b(\\)656 4845 y(__asm__)1166 +b(\\)656 4924 y(\()1376 b(\\)797 5003 y("lpm")389 b("\\n\\t")496 +b(\\)p 515 5179 V 515 5255 a Fp(Generated)25 b(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 377 393 +TeXDict begin 377 392 bop 515 203 a Fs(24.35)94 b(p)s(o)m(w)m(er.h)31 +b(File)g(Reference)1447 b(377)p 515 236 2865 4 v 797 +523 a Fj("mov)36 b(\045A0,)h(r0")106 b("\\n\\t")496 b(\\)797 +602 y("adiw)37 b(r30,)f(1")106 b("\\n\\t")496 b(\\)797 +681 y("lpm")389 b("\\n\\t")496 b(\\)797 760 y("mov)36 +b(\045B0,)h(r0")106 b("\\n\\t")496 b(\\)797 839 y(:)35 +b("=r")i(\(__result\),)h("=z")f(\(__addr16\))73 b(\\)797 +917 y(:)35 b("1")i(\(__addr16\))708 b(\\)797 996 y(:)35 +b("r0")1060 b(\\)656 1075 y(\);)1341 b(\\)656 1154 y(__result;)1096 +b(\\)515 1233 y(}\)\))515 1563 y Fs(24.34.2.14)92 b(#de\034ne)31 +b(__LPM_w)m(ord_enhanced__\(addr\))515 1710 y(V)-8 b(alue:)515 +1906 y Fj(\(__extension__\({)992 b(\\)656 1985 y(uint16_t)37 +b(__addr16)h(=)d(\(uint16_t\)\(addr\);)111 b(\\)656 2064 +y(uint16_t)37 b(__result;)779 b(\\)656 2143 y(__asm__)1166 +b(\\)656 2222 y(\()1376 b(\\)797 2301 y("lpm)36 b(\045A0,)h(Z+")106 +b("\\n\\t")496 b(\\)797 2380 y("lpm)36 b(\045B0,)h(Z")141 +b("\\n\\t")496 b(\\)797 2458 y(:)35 b("=r")i(\(__result\),)h("=z")f +(\(__addr16\))73 b(\\)797 2537 y(:)35 b("1")i(\(__addr16\))708 +b(\\)656 2616 y(\);)1341 b(\\)656 2695 y(__result;)1096 +b(\\)515 2774 y(}\)\))515 3051 y Fn(24.35)112 b(p)s(o)m(w)m(er.h)38 +b(File)g(Reference)515 3252 y Fs(24.35.1)93 b(Detailed)31 +b(Description)515 3452 y(De\034nes)639 3636 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(_A)-11 b(VR_PO)m(WER_H_)28 b Fq(1)639 +3741 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(clo)s(c)m(k_prescale_set)p +Fq(\(x\))639 3847 y Fk(\210)41 b Fq(#de\034ne)57 b Fs(clo)s(c)m +(k_prescale_get)p Fq(\(\))h(\(clo)r(c)n(k_div_t\)\(CLKPR)e(&)g(\()p +Fs(uin)m(t8_-)722 3946 y(t)p Fq(\)\(\(1)p Fo(<<)p Fq(CLKPS0\))p +Fh(j)p Fq(\(1)p Fo(<<)p Fq(CLKPS1\))p Fh(j)p Fq(\(1)p +Fo(<<)p Fq(CLKPS2\))p Fh(j)p Fq(\(1)p Fo(<<)p Fq(CLKPS3\)\)\))515 +4207 y Fs(En)m(umerations)639 4391 y Fk(\210)41 b Fq(en)n(um)28 +b Fs(clo)s(c)m(k_div_t)h Fq({)722 4521 y Fs(clo)s(c)m(k_div_1)39 +b Fq(=)e(0,)j Fs(clo)s(c)m(k_div_2)e Fq(=)f(1,)j Fs(clo)s(c)m(k_div_4)e +Fq(=)g(2,)h Fs(clo)s(c)m(k_-)722 4621 y(div_8)28 b Fq(=)f(3,)722 +4751 y Fs(clo)s(c)m(k_div_16)c Fq(=)f(4,)h Fs(clo)s(c)m(k_div_32)f +Fq(=)g(5,)h Fs(clo)s(c)m(k_div_64)g Fq(=)f(6,)g Fs(clo)s(c)m(k_-)722 +4850 y(div_128)27 b Fq(=)h(7,)722 4981 y Fs(clo)s(c)m(k_div_256)g +Fq(=)f(8)g(})p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 378 394 +TeXDict begin 378 393 bop 515 203 a Fs(24.36)94 b(setbaud.h)31 +b(File)g(Reference)1373 b(378)p 515 236 2865 4 v 515 +523 a(24.35.2)93 b(De\034ne)31 b(Do)s(cumen)m(tation)515 +724 y(24.35.2.1)92 b(#de\034ne)31 b(clo)s(c)m(k_prescale_set\(x\))515 +870 y(V)-8 b(alue:)515 1080 y Fj({)35 b(\\)797 1158 y(uint8_t)i(tmp)f +(=)g(_BV\(CLKPCE\);)i(\\)797 1237 y(__asm__)f(__volatile__)i(\()c(\\) +1079 1316 y("in)h(__tmp_reg__,__SREG__")41 b("\\n\\t")c(\\)1079 +1395 y("cli")g("\\n\\t")g(\\)1079 1474 y("sts)g(\0451,)f(\0450")g +("\\n\\t")h(\\)1079 1553 y("sts)g(\0451,)f(\0452")g("\\n\\t")h(\\)1079 +1632 y("out)g(__SREG__,)g(__tmp_reg__")i(\\)1079 1710 +y(:)d(/*)g(no)f(outputs)j(*/)d(\\)1079 1789 y(:)h("d")g(\(tmp\),)h(\\) +1150 1868 y("M")f(\(_SFR_MEM_ADDR\(CLKPR\)\),)41 b(\\)1150 +1947 y("d")36 b(\(x\))g(\\)1079 2026 y(:)g("r0"\);)h(\\)515 +2105 y(})515 2384 y Fn(24.36)112 b(setbaud.h)39 b(File)f(Reference)515 +2585 y Fs(24.36.1)93 b(Detailed)31 b(Description)515 +2785 y(De\034nes)639 2972 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(BA)m(UD_TOL)i Fq(2)639 3080 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UBRR_V)-11 b(ALUE)639 3188 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UBRRL_V)-11 b(ALUE)639 3296 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UBRRH_V)-11 b(ALUE)639 3404 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(USE_2X)g Fq(0)515 3683 y Fn(24.37)112 b(setjmp.h)39 +b(File)f(Reference)515 3884 y Fs(24.37.1)93 b(Detailed)31 +b(Description)515 4084 y(De\034nes)639 4271 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(__SETJMP_H_)h Fq(1)639 4379 y +Fk(\210)41 b Fq(#de\034ne)184 b Fs(__A)-8 b(TTR_NORETURN__)183 +b Fq(__attribute__\(\(__-)722 4478 y(noreturn__\)\))515 +4741 y Fs(F)-8 b(unctions)639 4928 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(setjmp)f Fq(\(jmp_buf)i(__jmpb\))p 515 5179 V 515 +5255 a Fp(Generated)c(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 379 395 +TeXDict begin 379 394 bop 515 203 a Fs(24.38)94 b(sleep.h)30 +b(File)g(Reference)1493 b(379)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(v)n(oid)105 b Fs(long)s(jmp)e Fq(\(jmp_buf)k +(__jmpb,)124 b(in)n(t)106 b(__ret\))e(__A)-7 b(TTR_-)722 +623 y(NORETURN__)515 902 y Fn(24.38)112 b(sleep.h)39 +b(File)f(Reference)515 1103 y Fs(24.38.1)93 b(Detailed)31 +b(Description)515 1303 y(De\034nes)639 1490 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(_A)-11 b(VR_SLEEP_H_)29 b Fq(1)639 +1598 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(_SLEEP_CONTR)m(OL_REG)g +Fq(MCUCR)639 1706 y Fk(\210)41 b Fq(#de\034ne)28 b Fs +(_SLEEP_ENABLE_MASK)g Fq(_BV\(SE\))515 1969 y Fs(F)-8 +b(unctions)639 2155 y Fk(\210)41 b Fq(v)n(oid)27 b Fs(sleep_enable)f +Fq(\(v)n(oid\))639 2263 y Fk(\210)41 b Fq(v)n(oid)27 +b Fs(sleep_disable)f Fq(\(v)n(oid\))639 2371 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(sleep_cpu)g Fq(\(v)n(oid\))639 2479 +y Fk(\210)41 b Fq(v)n(oid)27 b Fs(sleep_mo)s(de)e Fq(\(v)n(oid\))515 +2758 y Fn(24.39)112 b(stdin)m(t.h)38 b(File)g(Reference)515 +2959 y Fs(24.39.1)93 b(Detailed)31 b(Description)515 +3159 y(De\034nes)639 3346 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__USING_MINT8)h Fq(0)639 3454 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__CONCA)-8 b(T)g(enate)p Fq(\(left,)29 b(righ)n(t\))e(left)i(##)f +(righ)n(t)639 3562 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(__CONCA)-8 +b(T)p Fq(\(left,)29 b(righ)n(t\))e(__CONCA)-7 b(T)g(enate\(left,)28 +b(righ)n(t\))633 3792 y Fs(Limits)i(of)i(sp)s(eci\034ed-width)e(in)m +(teger)i(t)m(yp)s(es)633 3924 y Fl(C++)38 b(implementations)i(should)f +(de\034ne)g(these)g(macr)l(os)g(only)g(when)g(__STDC_-)633 +4024 y(LIMIT_MA)n(CR)n(OS)29 b(is)h(de\034ne)l(d)g(b)l(efor)l(e)h +Fo(<)p Fc(stdint.h)e Fl(\()13 b Fq(p.)h Fl(379\))p Fo(>)31 +b Fl(is)f(include)l(d)732 4190 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT8_MAX)g Fq(0x7f)732 4281 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT8_MIN)g Fq(\(-INT8_MAX)f(-)h(1\))732 4373 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT8_MAX)h Fq(\(__CONCA)-7 b(T\(INT8_MAX,)27 +b(U\))h Fh(\003)f Fq(2U)h(+)f(1U\))732 4464 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(INT16_MAX)g Fq(0x7\033f)732 4555 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT16_MIN)g Fq(\(-INT16_MAX)f(-)g +(1\))732 4647 y Fk(\210)41 b Fq(#de\034ne)g Fs(UINT16_MAX)g +Fq(\(__CONCA)-7 b(T\(INT16_MAX,)40 b(U\))h Fh(\003)f +Fq(2U)g(+)815 4746 y(1U\))732 4838 y Fk(\210)h Fq(#de\034ne)28 +b Fs(INT32_MAX)g Fq(0x7\033\033\033fL)732 4929 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(INT32_MIN)g Fq(\(-INT32_MAX)f(-)g(1L\))p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 380 396 +TeXDict begin 380 395 bop 515 203 a Fs(24.39)94 b(stdin)m(t.h)31 +b(File)f(Reference)1456 b(380)p 515 236 2865 4 v 732 +523 a Fk(\210)41 b Fq(#de\034ne)33 b Fs(UINT32_MAX)f +Fq(\(__CONCA)-7 b(T\(INT32_MAX,)31 b(U\))h Fh(\003)g +Fq(2UL)f(+)815 623 y(1UL\))732 713 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT64_MAX)g Fq(0x7\033\033\033\033\033\033\033fLL)732 +804 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT64_MIN)g Fq(\(-INT64_MAX)f +(-)g(1LL\))732 895 y Fk(\210)41 b Fq(#de\034ne)24 b Fs(UINT64_MAX)g +Fq(\(__CONCA)-7 b(T\(INT64_MAX,)22 b(U\))i Fh(\003)f +Fq(2ULL)f(+)815 994 y(1ULL\))633 1221 y Fs(Limits)30 +b(of)i(minim)m(um-width)d(in)m(teger)j(t)m(yp)s(es)732 +1402 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST8_MAX)h +Fq(INT8_MAX)732 1492 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(INT_LEAST8_MIN)h Fq(INT8_MIN)732 1583 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST8_MAX)i Fq(UINT8_MAX)732 +1674 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST16_MAX)h +Fq(INT16_MAX)732 1764 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_LEAST16_MIN)h Fq(INT16_MIN)732 1855 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST16_MAX)h Fq(UINT16_MAX)732 +1946 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST32_MAX)h +Fq(INT32_MAX)732 2036 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_LEAST32_MIN)h Fq(INT32_MIN)732 2127 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST32_MAX)h Fq(UINT32_MAX)732 +2218 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_LEAST64_MAX)h +Fq(INT64_MAX)732 2308 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_LEAST64_MIN)h Fq(INT64_MIN)732 2399 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(UINT_LEAST64_MAX)h Fq(UINT64_MAX)633 +2625 y Fs(Limits)h(of)i(fastest)g(minim)m(um-width)d(in)m(teger)i(t)m +(yp)s(es)732 2806 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 +b(AST8_MAX)30 b Fq(INT8_MAX)732 2897 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST8_MIN)29 b Fq(INT8_MIN)732 2987 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT_F)-11 b(AST8_MAX)30 +b Fq(UINT8_MAX)732 3078 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST16_MAX)29 b Fq(INT16_MAX)732 3169 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 b(AST16_MIN)29 +b Fq(INT16_MIN)732 3259 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINT_F)-11 b(AST16_MAX)30 b Fq(UINT16_MAX)732 3350 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 b(AST32_MAX)29 +b Fq(INT32_MAX)732 3441 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST32_MIN)29 b Fq(INT32_MIN)732 3531 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT_F)-11 b(AST32_MAX)30 +b Fq(UINT32_MAX)732 3622 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT_F)-11 b(AST64_MAX)29 b Fq(INT64_MAX)732 3713 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT_F)-11 b(AST64_MIN)29 +b Fq(INT64_MIN)732 3803 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINT_F)-11 b(AST64_MAX)30 b Fq(UINT64_MAX)633 4030 +y Fs(Limits)g(of)i(in)m(teger)f(t)m(yp)s(es)h(capable)h(of)e(holding)g +(ob)5 b(ject)32 b(p)s(oin)m(ters)732 4211 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(INTPTR_MAX)h Fq(INT16_MAX)732 +4301 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTPTR_MIN)g +Fq(INT16_MIN)732 4392 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINTPTR_MAX)h Fq(UINT16_MAX)633 4619 y Fs(Limits)h(of)i +(greatest-width)f(in)m(teger)h(t)m(yp)s(es)732 4799 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTMAX_MAX)h Fq(INT64_MAX)732 +4890 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTMAX_MIN)g +Fq(INT64_MIN)732 4981 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(UINTMAX_MAX)h Fq(UINT64_MAX)p 515 5179 V 515 5255 +a Fp(Generated)c(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 381 397 +TeXDict begin 381 396 bop 515 203 a Fs(24.39)94 b(stdin)m(t.h)31 +b(File)f(Reference)1456 b(381)p 515 236 2865 4 v 633 +523 a(Limits)30 b(of)i(other)g(in)m(teger)f(t)m(yp)s(es)633 +656 y Fl(C++)38 b(implementations)i(should)f(de\034ne)g(these)g(macr)l +(os)g(only)g(when)g(__STDC_-)633 756 y(LIMIT_MA)n(CR)n(OS)29 +b(is)h(de\034ne)l(d)g(b)l(efor)l(e)h Fo(<)p Fc(stdint.h)e +Fl(\()13 b Fq(p.)h Fl(379\))p Fo(>)31 b Fl(is)f(include)l(d)732 +922 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(PTRDIFF_MAX)h +Fq(INT16_MAX)732 1013 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(PTRDIFF_MIN)h Fq(INT16_MIN)732 1104 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(SIG_A)-8 b(TOMIC_MAX)29 b Fq(INT8_MAX)732 +1196 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(SIG_A)-8 b(TOMIC_MIN)28 +b Fq(INT8_MIN)732 1287 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SIZE_MAX)h Fq(\(__CONCA)-7 b(T\(INT16_MAX,)26 b(U\)\))633 +1517 y Fs(Macros)32 b(for)g(in)m(teger)f(constan)m(ts)633 +1650 y Fl(C++)38 b(implementations)i(should)f(de\034ne)g(these)g(macr)l +(os)g(only)g(when)g(__STDC_-)633 1749 y(CONST)-6 b(ANT_MA)n(CR)n(OS)28 +b(is)i(de\034ne)l(d)g(b)l(efor)l(e)g Fo(<)p Fc(stdint.h)f +Fl(\()13 b Fq(p.)i Fl(379\))p Fo(>)30 b Fl(is)g(include)l(d.)633 +1882 y(These)24 b(de\034nitions)f(ar)l(e)g(valid)h(for)g(inte)l(ger)e +(c)l(onstants)g(without)h(su\036x)f(and)h(for)g(macr)l(os)633 +1982 y(de\034ne)l(d)30 b(as)g(inte)l(ger)g(c)l(onstant)e(without)i +(su\036x)732 2148 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT8_C)p +Fq(\(v)-5 b(alue\))29 b(\(\()p Fs(in)m(t8_t)p Fq(\))f(v)-5 +b(alue\))732 2239 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT8_C)p +Fq(\(v)-5 b(alue\))29 b(\(\()p Fs(uin)m(t8_t)p Fq(\))g(__CONCA)-7 +b(T\(v)i(alue,)27 b(U\)\))732 2330 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(INT16_C)p Fq(\(v)-5 b(alue\))28 b(v)-5 b(alue)732 +2422 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT16_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)27 b(U\))732 +2513 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT32_C)p Fq(\(v)-5 +b(alue\))28 b(__CONCA)-7 b(T\(v)i(alue,)27 b(L\))732 +2604 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT32_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)27 b(UL\))732 +2696 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INT64_C)p Fq(\(v)-5 +b(alue\))28 b(__CONCA)-7 b(T\(v)i(alue,)27 b(LL\))732 +2787 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINT64_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)27 b(ULL\))732 +2878 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(INTMAX_C)p Fq(\(v)-5 +b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)27 b(LL\))732 +2970 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(UINTMAX_C)p +Fq(\(v)-5 b(alue\))29 b(__CONCA)-7 b(T\(v)i(alue,)27 +b(ULL\))515 3233 y Fs(T)m(yp)s(edefs)633 3419 y(Exact-width)32 +b(in)m(teger)g(t)m(yp)s(es)633 3552 y Fl(Inte)l(ger)d(typ)l(es)h +(having)h(exactly)f(the)g(sp)l(e)l(ci\034e)l(d)g(width)732 +3718 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b(signed)e(c)n(har)f +Fs(in)m(t8_t)732 3809 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b(unsigned)e(c)n(har)f Fs(uin)m(t8_t)732 3901 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b(signed)e(in)n(t)g Fs(in)m(t16_t)732 +3992 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b(unsigned)e(in)n(t)h +Fs(uin)m(t16_t)732 4083 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b(signed)e(long)g(in)n(t)g Fs(in)m(t32_t)732 4175 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b(unsigned)e(long)g(in)n(t)h Fs(uin)m(t32_t)732 +4266 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b(signed)e(long)g(long)f(in)n +(t)i Fs(in)m(t64_t)732 4357 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b(unsigned)e(long)g(long)g(in)n(t)g Fs(uin)m(t64_t)633 +4587 y(In)m(teger)32 b(t)m(yp)s(es)g(capable)g(of)g(holding)e(ob)5 +b(ject)32 b(p)s(oin)m(ters)633 4720 y Fl(These)f(al)t(low)g(you)f(to)g +(de)l(clar)l(e)g(variables)i(of)f(the)f(same)g(size)g(as)g(a)g(p)l +(ointer.)732 4886 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(in)m(t16_t)e(in)m(tptr_t)732 4977 y Fk(\210)41 b +Fq(t)n(yp)r(edef)29 b Fs(uin)m(t16_t)e(uin)m(tptr_t)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 382 398 +TeXDict begin 382 397 bop 515 203 a Fs(24.40)94 b(stdio.h)30 +b(File)h(Reference)1495 b(382)p 515 236 2865 4 v 633 +523 a(Minim)m(um-width)29 b(in)m(teger)j(t)m(yp)s(es)633 +656 y Fl(Inte)l(ger)d(typ)l(es)h(having)h(at)f(le)l(ast)f(the)h(sp)l(e) +l(ci\034e)l(d)h(width)732 822 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(in)m(t8_t)e(in)m(t_least8_t)732 913 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b Fs(uin)m(t8_t)e(uin)m(t_least8_t)732 +1005 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b Fs(in)m(t16_t)e(in)m +(t_least16_t)732 1096 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(uin)m(t16_t)e(uin)m(t_least16_t)732 1187 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b Fs(in)m(t32_t)e(in)m(t_least32_t)732 +1279 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b Fs(uin)m(t32_t)e(uin)m +(t_least32_t)732 1370 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(in)m(t64_t)e(in)m(t_least64_t)732 1461 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b Fs(uin)m(t64_t)e(uin)m(t_least64_t)633 +1691 y(F)-8 b(astest)31 b(minim)m(um-width)f(in)m(teger)h(t)m(yp)s(es) +633 1824 y Fl(Inte)l(ger)e(typ)l(es)h(b)l(eing)g(usual)t(ly)g(fastest)g +(having)h(at)f(le)l(ast)f(the)h(sp)l(e)l(ci\034e)l(d)h(width)732 +1990 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b Fs(in)m(t8_t)e(in)m +(t_fast8_t)732 2081 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(uin)m(t8_t)e(uin)m(t_fast8_t)732 2173 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b Fs(in)m(t16_t)e(in)m(t_fast16_t)732 +2264 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b Fs(uin)m(t16_t)e(uin)m +(t_fast16_t)732 2355 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(in)m(t32_t)e(in)m(t_fast32_t)732 2447 y Fk(\210)41 +b Fq(t)n(yp)r(edef)29 b Fs(uin)m(t32_t)e(uin)m(t_fast32_t)732 +2538 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 b Fs(in)m(t64_t)e(in)m +(t_fast64_t)732 2629 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(uin)m(t64_t)e(uin)m(t_fast64_t)633 2859 y(Greatest-width)k(in)m +(teger)h(t)m(yp)s(es)633 2992 y Fl(T)-6 b(yp)l(es)28 +b(designating)g(inte)l(ger)f(data)h(c)l(ap)l(able)h(of)f(r)l(epr)l +(esenting)f(any)h(value)g(of)g(any)f(inte-)633 3092 y(ger)j(typ)l(e)g +(in)g(the)g(c)l(orr)l(esp)l(onding)g(signe)l(d)h(or)f(unsigne)l(d)f(c)l +(ate)l(gory)732 3258 y Fk(\210)41 b Fq(t)n(yp)r(edef)29 +b Fs(in)m(t64_t)e(in)m(tmax_t)732 3349 y Fk(\210)41 b +Fq(t)n(yp)r(edef)29 b Fs(uin)m(t64_t)e(uin)m(tmax_t)515 +3629 y Fn(24.40)112 b(stdio.h)38 b(File)g(Reference)515 +3829 y Fs(24.40.1)93 b(Detailed)31 b(Description)515 +4030 y(De\034nes)639 4216 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_STDIO_H_)h Fq(1)639 4324 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__need_NULL)639 4432 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__need_size_t)639 4540 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(FILE)g Fq(struct)g(__\034le)639 4648 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(stdin)f Fq(\(__iob[0]\))639 4756 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(stdout)g Fq(\(__iob[1]\))639 +4864 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(stderr)g Fq(\(__iob[2]\))639 +4971 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(EOF)f Fq(\(-1\))p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 383 399 +TeXDict begin 383 398 bop 515 203 a Fs(24.40)94 b(stdio.h)30 +b(File)h(Reference)1495 b(383)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(#de\034ne)g Fs(fdev_set_udata)p +Fq(\(stream,)j(u\))d(do)f({)g(\(stream\))g Fh(!)g Fq(udata)g(=)g(u;)46 +b(})722 623 y(while\(0\))639 729 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(fdev_get_udata)p Fq(\(stream\))h(\(\(stream\))f +Fh(!)f Fq(udata\))639 836 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(fdev_setup_stream)p Fq(\(stream,)f(put,)i(get,)e(rw\035ag\))639 +942 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(_FDEV_SETUP_READ)h +Fq(__SRD)639 1049 y Fk(\210)41 b Fq(#de\034ne)28 b Fs +(_FDEV_SETUP_WRITE)h Fq(__SWR)639 1156 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(_FDEV_SETUP_R)-11 b(W)29 b Fq(\(__SRD)p +Fh(j)p Fq(__SWR\))639 1262 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_FDEV_ERR)f Fq(\(-1\))639 1369 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_FDEV_EOF)g Fq(\(-2\))639 1475 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(FDEV_SETUP_STREAM)p Fq(\(put,)i(get,)d(rw\035ag\))639 +1582 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(fdev_close)p +Fq(\(\))639 1688 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(putc)p +Fq(\(__c,)g(__stream\))e(fputc\(__c,)i(__stream\))639 +1795 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(putc)m(har)p +Fq(\(__c\))h(fputc\(__c,)f(stdout\))639 1902 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(getc)p Fq(\(__stream\))f(fgetc\(__stream\))639 +2008 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(getc)m(har)p +Fq(\(\))i(fgetc\(stdin\))639 2115 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SEEK_SET)g Fq(0)639 2221 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SEEK_CUR)f Fq(1)639 2328 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(SEEK_END)f Fq(2)515 2590 y Fs(F)-8 b(unctions)639 +2775 y Fk(\210)41 b Fq(in)n(t)28 b Fs(fclose)f Fq(\(FILE)h +Fh(\003)p Fq(__stream\))639 2882 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(vfprin)m(tf)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)e(const)h(c)n +(har)f Fh(\003)p Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(__ap\))639 +2988 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vfprin)m(tf_P)h +Fq(\(FILE)g Fh(\003)p Fq(__stream,)c(const)i(c)n(har)g +Fh(\003)p Fq(__fm)n(t,)g(v)-5 b(a_list)27 b(__ap\))639 +3095 y Fk(\210)41 b Fq(in)n(t)28 b Fs(fputc)h Fq(\(in)n(t)f(__c,)e +(FILE)j Fh(\003)p Fq(__stream\))639 3201 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(prin)m(tf)g Fq(\(const)g(c)n(har)e +Fh(\003)p Fq(__fm)n(t,...\))639 3308 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(prin)m(tf_P)h Fq(\(const)e(c)n(har)g Fh(\003)p Fq(__fm)n(t,...\)) +639 3414 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vprin)m(tf)h +Fq(\(const)e(c)n(har)g Fh(\003)p Fq(__fm)n(t,)f(v)-5 +b(a_list)27 b(__ap\))639 3521 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sprin)m(tf)g Fq(\(c)n(har)f Fh(\003)p Fq(__s,)f(const)h(c)n(har)f +Fh(\003)p Fq(__fm)n(t,...\))639 3628 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sprin)m(tf_P)g Fq(\(c)n(har)f Fh(\003)p Fq(__s,)f(const)h(c)n(har) +g Fh(\003)p Fq(__fm)n(t,...\))639 3734 y Fk(\210)41 b +Fq(in)n(t)28 b Fs(snprin)m(tf)g Fq(\(c)n(har)f Fh(\003)p +Fq(__s,)f(size_t)h(__n,)g(const)g(c)n(har)f Fh(\003)p +Fq(__fm)n(t,...\))639 3841 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(snprin)m(tf_P)g Fq(\(c)n(har)f Fh(\003)p Fq(__s,)f(size_t)h(__n,)g +(const)g(c)n(har)g Fh(\003)p Fq(__fm)n(t,...\))639 3947 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(vsprin)m(tf)g Fq(\(c)n(har)f +Fh(\003)p Fq(__s,)f(const)h(c)n(har)g Fh(\003)p Fq(__fm)n(t,)f(v)-5 +b(a_list)28 b(ap\))639 4054 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(vsprin)m(tf_P)h Fq(\(c)n(har)d Fh(\003)p Fq(__s,)h(const)g(c)n +(har)f Fh(\003)p Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(ap\))639 +4161 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vsnprin)m(tf)g +Fq(\(c)n(har)f Fh(\003)p Fq(__s,)f(size_t)h(__n,)g(const)g(c)n(har)g +Fh(\003)p Fq(__fm)n(t,)g(v)-5 b(a_list)27 b(ap\))639 +4267 y Fk(\210)41 b Fq(in)n(t)32 b Fs(vsnprin)m(tf_P)g +Fq(\(c)n(har)e Fh(\003)p Fq(__s,)h(size_t)g(__n,)g(const)g(c)n(har)f +Fh(\003)p Fq(__fm)n(t,)i(v)-5 b(a_list)722 4367 y(ap\))639 +4473 y Fk(\210)41 b Fq(in)n(t)28 b Fs(fprin)m(tf)g Fq(\(FILE)h +Fh(\003)p Fq(__stream,)c(const)j(c)n(har)e Fh(\003)p +Fq(__fm)n(t,...\))639 4580 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(fprin)m(tf_P)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)e(const)h(c)n +(har)f Fh(\003)p Fq(__fm)n(t,...\))639 4686 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(fputs)g Fq(\(const)f(c)n(har)g Fh(\003)p +Fq(__str,)e(FILE)k Fh(\003)p Fq(__stream\))639 4793 y +Fk(\210)41 b Fq(in)n(t)28 b Fs(fputs_P)g Fq(\(const)g(c)n(har)e +Fh(\003)p Fq(__str,)g(FILE)i Fh(\003)p Fq(__stream\))639 +4900 y Fk(\210)41 b Fq(in)n(t)28 b Fs(puts)g Fq(\(const)f(c)n(har)f +Fh(\003)p Fq(__str\))639 5006 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(puts_P)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(__str\))p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 384 400 +TeXDict begin 384 399 bop 515 203 a Fs(24.41)94 b(stdlib.h)30 +b(File)g(Reference)1464 b(384)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(size_t)i Fs(fwrite)g Fq(\(const)g(v)n(oid)g +Fh(\003)p Fq(__ptr,)j(size_t)d(__size,)j(size_t)d(__nmem)n(b,)722 +623 y(FILE)28 b Fh(\003)p Fq(__stream\))639 731 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(fgetc)g Fq(\(FILE)g Fh(\003)p Fq(__stream\))639 +839 y Fk(\210)41 b Fq(in)n(t)28 b Fs(ungetc)g Fq(\(in)n(t)g(__c,)f +(FILE)h Fh(\003)p Fq(__stream\))639 946 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(fgets)g Fq(\(c)n(har)g +Fh(\003)p Fq(__str,)e(in)n(t)j(__size,)f(FILE)h Fh(\003)p +Fq(__stream\))639 1054 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(gets)g Fq(\(c)n(har)f Fh(\003)p Fq(__str\))639 +1162 y Fk(\210)41 b Fq(size_t)28 b Fs(fread)g Fq(\(v)n(oid)g +Fh(\003)p Fq(__ptr,)e(size_t)h(__size,)g(size_t)h(__nmem)n(b,)f(FILE)h +Fh(\003)p Fq(_-)722 1262 y(_stream\))639 1370 y Fk(\210)41 +b Fq(v)n(oid)27 b Fs(clearerr)i Fq(\(FILE)f Fh(\003)p +Fq(__stream\))639 1478 y Fk(\210)41 b Fq(in)n(t)28 b +Fs(feof)g Fq(\(FILE)g Fh(\003)p Fq(__stream\))639 1586 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(ferror)g Fq(\(FILE)h +Fh(\003)p Fq(__stream\))639 1694 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(vfscanf)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)e(const)h(c)n(har)f +Fh(\003)p Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(__ap\))639 +1802 y Fk(\210)41 b Fq(in)n(t)28 b Fs(vfscanf_P)h Fq(\(FILE)g +Fh(\003)p Fq(__stream,)c(const)j(c)n(har)e Fh(\003)p +Fq(__fm)n(t,)h(v)-5 b(a_list)27 b(__ap\))639 1910 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(fscanf)h Fq(\(FILE)f Fh(\003)p Fq(__stream,)d +(const)j(c)n(har)e Fh(\003)p Fq(__fm)n(t,...\))639 2017 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(fscanf_P)h Fq(\(FILE)g +Fh(\003)p Fq(__stream,)c(const)i(c)n(har)g Fh(\003)p +Fq(__fm)n(t,...\))639 2125 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(scanf)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(__fm)n(t,...\))639 +2233 y Fk(\210)41 b Fq(in)n(t)28 b Fs(scanf_P)h Fq(\(const)e(c)n(har)g +Fh(\003)p Fq(__fm)n(t,...\))639 2341 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(vscanf)h Fq(\(const)e(c)n(har)g Fh(\003)p Fq(__fm)n(t,)g(v)-5 +b(a_list)27 b(__ap\))639 2449 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(sscanf)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(__buf,)h(const)g(c)n +(har)f Fh(\003)p Fq(__fm)n(t,...\))639 2557 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(sscanf_P)h Fq(\(const)e(c)n(har)f +Fh(\003)p Fq(__buf,)h(const)h(c)n(har)e Fh(\003)p Fq(__fm)n(t,...\))639 +2665 y Fk(\210)41 b Fq(in)n(t)28 b Fs(\037ush)f Fq(\(FILE)h +Fh(\003)p Fq(stream\))515 2945 y Fn(24.41)112 b(stdlib.h)38 +b(File)g(Reference)515 3145 y Fs(24.41.1)93 b(Detailed)31 +b(Description)515 3346 y(Data)i(Structures)639 3532 y +Fk(\210)41 b Fq(struct)28 b Fs(div_t)639 3640 y Fk(\210)41 +b Fq(struct)28 b Fs(ldiv_t)515 3903 y(Non-standard)k(\(i.e.)41 +b(non-ISO)31 b(C\))h(functions.)639 4089 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(RANDOM_MAX)f Fq(0x7FFFFFFF)639 +4197 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(itoa)g +Fq(\(in)n(t)h(__v)-5 b(al,)27 b(c)n(har)f Fh(\003)p Fq(__s,)g(in)n(t)i +(__radix\))639 4305 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g +Fs(ltoa)g Fq(\(long)g(in)n(t)h(__v)-5 b(al,)27 b(c)n(har)f +Fh(\003)p Fq(__s,)g(in)n(t)i(__radix\))639 4413 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(utoa)h Fq(\(unsigned)f(in)n(t)h(__v)-5 +b(al,)27 b(c)n(har)f Fh(\003)p Fq(__s,)g(in)n(t)i(__radix\))639 +4521 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(ultoa)g +Fq(\(unsigned)h(long)f(in)n(t)h(__v)-5 b(al,)26 b(c)n(har)g +Fh(\003)p Fq(__s,)h(in)n(t)g(__radix\))639 4629 y Fk(\210)41 +b Fq(long)27 b Fs(random)h Fq(\(v)n(oid\))639 4737 y +Fk(\210)41 b Fq(v)n(oid)27 b Fs(srandom)g Fq(\(unsigned)h(long)f +(__seed\))639 4845 y Fk(\210)41 b Fq(long)27 b Fs(random_r)h +Fq(\(unsigned)g(long)f Fh(\003)p Fq(__ctx\))p 515 5179 +V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 385 401 +TeXDict begin 385 400 bop 515 203 a Fs(24.41)94 b(stdlib.h)30 +b(File)g(Reference)1464 b(385)p 515 236 2865 4 v 515 +523 a(Con)m(v)m(ersion)31 b(functions)h(for)g(double)f(argumen)m(ts.) +515 724 y Fq(Note)k(that)h(these)f(functions)h(are)e(not)h(lo)r(cated)g +(in)h(the)g(default)f(library)-7 b(,)37 b Fm(libc.a)p +Fq(,)d(but)515 823 y(in)29 b(the)h(mathematical)e(library)-7 +b(,)28 b Fm(libm.a)p Fq(.)39 b(So)29 b(when)h(linking)e(the)i +(application,)f(the)g Fm(-lm)515 923 y Fq(option)e(needs)g(to)h(b)r(e)g +(sp)r(eci\034ed.)639 1132 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(DTOSTR_AL)-11 b(W)g(A)j(YS_SIGN)30 b Fq(0x01)639 +1239 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(DTOSTR_PLUS_SIGN)i +Fq(0x02)639 1346 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(DTOSTR_UPPER)m +(CASE)h Fq(0x04)639 1453 y Fk(\210)41 b Fq(c)n(har)34 +b Fh(\003)h Fs(dtostre)g Fq(\(double)g(__v)-5 b(al,)36 +b(c)n(har)e Fh(\003)p Fq(__s,)i(unsigned)e(c)n(har)g(__prec,)i(un-)722 +1553 y(signed)27 b(c)n(har)g(__\035ags\))639 1660 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)h Fs(dtostrf)g Fq(\(double)g(__v)-5 +b(al,)27 b(signed)g(c)n(har)g(__width,)h(unsigned)f(c)n(har)g(__-)722 +1759 y(prec,)g(c)n(har)g Fh(\003)p Fq(__s\))515 2022 +y Fs(De\034nes)639 2207 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_STDLIB_H_)h Fq(1)639 2314 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__need_NULL)639 2421 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__need_size_t)639 2528 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__need_w)m(c)m(har_t)639 2635 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__ptr_t)h Fq(v)n(oid)e Fh(\003)639 2742 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(RAND_MAX)g Fq(0x7FFF)515 3004 +y Fs(T)m(yp)s(edefs)639 3190 y Fk(\210)41 b Fq(t)n(yp)r(edef)28 +b(in)n(t\()p Fh(\003)g Fs(__compar_fn_t)h Fq(\)\(const)f(v)n(oid)f +Fh(\003)p Fq(,)g(const)g(v)n(oid)g Fh(\003)p Fq(\))515 +3452 y Fs(F)-8 b(unctions)639 3637 y Fk(\210)41 b Fq(v)n(oid)27 +b Fs(ab)s(ort)h Fq(\(v)n(oid\))f(__A)-7 b(TTR_NORETURN__)639 +3744 y Fk(\210)41 b Fq(in)n(t)28 b Fs(abs)g Fq(\(in)n(t)g(__i\))639 +3851 y Fk(\210)41 b Fq(long)27 b Fs(labs)g Fq(\(long)h(__i\))639 +3958 y Fk(\210)41 b Fq(v)n(oid)d Fh(\003)g Fs(bsearc)m(h)i +Fq(\(const)e(v)n(oid)g Fh(\003)p Fq(__k)n(ey)-7 b(,)39 +b(const)f(v)n(oid)g Fh(\003)p Fq(__base,)h(size_t)f(__-)722 +4058 y(nmem)n(b,)28 b(size_t)f(__size,)g(in)n(t\()p Fh(\003)p +Fq(__compar\)\(const)e(v)n(oid)i Fh(\003)p Fq(,)g(const)g(v)n(oid)g +Fh(\003)p Fq(\)\))639 4165 y Fk(\210)41 b Fs(div_t)28 +b(div)g Fq(\(in)n(t)g(__n)n(um,)f(in)n(t)h(__denom\))e +(__asm__\("__divmo)r(dhi4"\))639 4272 y Fk(\210)41 b +Fs(ldiv_t)23 b(ldiv)e Fq(\(long)h(__n)n(um,)h(long)f(__denom\))f +(__asm__\("__divmo)r(dsi4"\))639 4379 y Fk(\210)41 b +Fq(v)n(oid)50 b Fs(qsort)h Fq(\(v)n(oid)g Fh(\003)p Fq(__base,)k +(size_t)50 b(__nmem)n(b,)56 b(size_t)50 b(__size,)56 +b Fs(__-)722 4479 y(compar_fn_t)29 b Fq(__compar\))639 +4586 y Fk(\210)41 b Fq(long)27 b Fs(strtol)g Fq(\(const)h(c)n(har)e +Fh(\003)p Fq(__nptr,)g(c)n(har)h Fh(\003\003)p Fq(__endptr,)f(in)n(t)h +(__base\))639 4693 y Fk(\210)41 b Fq(unsigned)32 b(long)g +Fs(strtoul)g Fq(\(const)g(c)n(har)f Fh(\003)p Fq(__nptr,)i(c)n(har)e +Fh(\003\003)p Fq(__endptr,)h(in)n(t)g(__-)722 4792 y(base\))639 +4899 y Fk(\210)41 b Fq(long)27 b Fs(atol)h Fq(\(const)f(c)n(har)f +Fh(\003)p Fq(__s\))h(__A)-7 b(TTR_PURE__)639 5006 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(atoi)g Fq(\(const)f(c)n(har)f Fh(\003)p +Fq(__s\))h(__A)-7 b(TTR_PURE__)p 515 5179 V 515 5255 +a Fp(Generated)25 b(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 386 402 +TeXDict begin 386 401 bop 515 203 a Fs(24.41)94 b(stdlib.h)30 +b(File)g(Reference)1464 b(386)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(v)n(oid)27 b Fs(exit)h Fq(\(in)n(t)g(__status\))e +(__A)-7 b(TTR_NORETURN__)639 631 y Fk(\210)41 b Fq(v)n(oid)27 +b Fh(\003)g Fs(mallo)s(c)g Fq(\(size_t)g(__size\))g(__A)-7 +b(TTR_MALLOC__)639 739 y Fk(\210)41 b Fq(v)n(oid)27 b +Fs(free)h Fq(\(v)n(oid)f Fh(\003)p Fq(__ptr\))639 847 +y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(callo)s(c)h +Fq(\(size_t)f(__nele,)g(size_t)g(__size\))f(__A)-7 b(TTR_MALLOC__)639 +955 y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(reallo)s(c)g +Fq(\(v)n(oid)g Fh(\003)p Fq(__ptr,)g(size_t)g(__size\))f(__A)-7 +b(TTR_MALLOC__)639 1063 y Fk(\210)41 b Fq(double)28 b +Fs(strto)s(d)f Fq(\(const)g(c)n(har)g Fh(\003)p Fq(__nptr,)f(c)n(har)h +Fh(\003\003)p Fq(__endptr\))639 1171 y Fk(\210)41 b Fq(double)28 +b Fs(atof)g Fq(\(const)f(c)n(har)g Fh(\003)p Fq(__nptr\))639 +1279 y Fk(\210)41 b Fq(in)n(t)28 b Fs(rand)h Fq(\(v)n(oid\))639 +1386 y Fk(\210)41 b Fq(v)n(oid)27 b Fs(srand)h Fq(\(unsigned)g(in)n(t)g +(__seed\))639 1494 y Fk(\210)41 b Fq(in)n(t)28 b Fs(rand_r)h +Fq(\(unsigned)f(long)f Fh(\003)p Fq(__ctx\))515 1757 +y Fs(V)-8 b(ariables)639 1944 y Fk(\210)41 b Fq(size_t)27 +b Fs(__mallo)s(c_margin)639 2052 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(__mallo)s(c_heap_start)639 2160 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(__mallo)s(c_heap_end)p +515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 387 403 +TeXDict begin 387 402 bop 515 203 a Fs(24.42)94 b(strcasecmp.S)31 +b(File)g(Reference)1238 b(387)p 515 236 2865 4 v 515 +523 a Fn(24.42)112 b(strcasecmp.S)38 b(File)g(Reference)515 +724 y Fs(24.42.1)93 b(Detailed)31 b(Description)515 941 +y Fn(24.43)112 b(strcasecmp_P)-9 b(.S)38 b(File)g(Reference)515 +1141 y Fs(24.43.1)93 b(Detailed)31 b(Description)515 +1358 y Fn(24.44)112 b(strcasestr.S)37 b(File)i(Reference)515 +1559 y Fs(24.44.1)93 b(Detailed)31 b(Description)515 +1776 y Fn(24.45)112 b(strcat.S)37 b(File)h(Reference)515 +1976 y Fs(24.45.1)93 b(Detailed)31 b(Description)515 +2193 y Fn(24.46)112 b(strcat_P)-9 b(.S)36 b(File)j(Reference)515 +2394 y Fs(24.46.1)93 b(Detailed)31 b(Description)515 +2611 y Fn(24.47)112 b(strc)m(hr.S)37 b(File)h(Reference)515 +2811 y Fs(24.47.1)93 b(Detailed)31 b(Description)515 +3028 y Fn(24.48)112 b(strc)m(hr_P)-9 b(.S)36 b(File)j(Reference)515 +3229 y Fs(24.48.1)93 b(Detailed)31 b(Description)515 +3446 y Fn(24.49)112 b(strc)m(hrn)m(ul.S)38 b(File)g(Reference)515 +3646 y Fs(24.49.1)93 b(Detailed)31 b(Description)515 +3863 y Fn(24.50)112 b(strc)m(hrn)m(ul_P)-9 b(.S)37 b(File)h(Reference) +515 4064 y Fs(24.50.1)93 b(Detailed)31 b(Description)515 +4281 y Fn(24.51)112 b(strcmp.S)38 b(File)g(Reference)515 +4482 y Fs(24.51.1)93 b(Detailed)31 b(Description)515 +4699 y Fn(24.52)112 b(strcmp_P)-9 b(.S)37 b(File)h(Reference)515 +4899 y Fs(24.52.1)93 b(Detailed)31 b(Description)515 +5116 y Fn(24.53)112 b(strcp)m(y)-9 b(.S)37 b(File)h(Reference)515 +5317 y Fs(24.53.1)93 b(Detailed)31 b(Description)515 +5534 y Fn(24.54)112 b(strcp)m(y_P)-9 b(.S)37 b(File)h(Reference)515 +5734 y Fs(24.54.1)93 b(Detailed)31 b(Description)515 +5951 y Fn(24.55)112 b(strcspn.S)38 b(File)g(Reference)515 +6152 y Fs(24.55.1)93 b(Detailed)31 b(Description)515 +6369 y Fn(24.56)112 b(strcspn_P)-9 b(.S)37 b(File)h(Reference)515 +6569 y Fs(24.56.1)93 b(Detailed)31 b(Description)515 +6786 y Fn(24.57)112 b(strdup.c)38 b(File)g(Reference)515 +6987 y Fs(24.57.1)93 b(Detailed)31 b(Description)515 +7187 y(F)-8 b(unctions)639 7365 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strdup)h Fq(\(const)f(c)n(har)g Fh(\003)p +Fq(s1\))p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 388 404 +TeXDict begin 388 403 bop 515 203 a Fs(24.58)94 b(string.h)30 +b(File)h(Reference)1456 b(388)p 515 236 2865 4 v 515 +523 a Fn(24.58)112 b(string.h)38 b(File)g(Reference)515 +724 y Fs(24.58.1)93 b(Detailed)31 b(Description)515 924 +y(De\034nes)639 1110 y Fk(\210)41 b Fq(#de\034ne)28 b +Fs(_STRING_H_)g Fq(1)639 1218 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__need_NULL)639 1326 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__need_size_t)639 1434 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(__A)-8 b(TTR_PURE__)30 b Fq(__attribute__\(\(__pure__\)\))639 +1542 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(_FFS)p Fq(\(x\))515 +1805 y Fs(F)-8 b(unctions)639 1992 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(\033s)f Fq(\(in)n(t)h(__v)-5 b(al\))639 2100 y Fk(\210)41 +b Fq(in)n(t)28 b Fs(\033sl)f Fq(\(long)g(__v)-5 b(al\))639 +2207 y Fk(\210)41 b Fq(in)n(t)28 b Fs(\033sll)e Fq(\(long)h(long)g(__v) +-5 b(al\))639 2315 y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g +Fs(memccp)m(y)h Fq(\(v)n(oid)g Fh(\003)p Fq(,)f(const)g(v)n(oid)g +Fh(\003)p Fq(,)g(in)n(t,)h(size_t\))639 2423 y Fk(\210)41 +b Fq(v)n(oid)27 b Fh(\003)g Fs(memc)m(hr)h Fq(\(const)f(v)n(oid)g +Fh(\003)p Fq(,)g(in)n(t,)h(size_t\))g(__A)-7 b(TTR_PURE__)639 +2531 y Fk(\210)41 b Fq(in)n(t)28 b Fs(memcmp)f Fq(\(const)g(v)n(oid)g +Fh(\003)p Fq(,)g(const)g(v)n(oid)g Fh(\003)p Fq(,)g(size_t\))h(__A)-7 +b(TTR_PURE__)639 2639 y Fk(\210)41 b Fq(v)n(oid)27 b +Fh(\003)g Fs(memcp)m(y)h Fq(\(v)n(oid)f Fh(\003)p Fq(,)g(const)h(v)n +(oid)e Fh(\003)p Fq(,)i(size_t\))639 2747 y Fk(\210)41 +b Fq(v)n(oid)22 b Fh(\003)f Fs(memmem)f Fq(\(const)i(v)n(oid)f +Fh(\003)p Fq(,)i(size_t,)g(const)e(v)n(oid)h Fh(\003)p +Fq(,)h(size_t\))e(__A)-7 b(TTR_-)722 2847 y(PURE__)639 +2955 y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(memmo)m(v)m(e)g +Fq(\(v)n(oid)g Fh(\003)p Fq(,)g(const)g(v)n(oid)g Fh(\003)p +Fq(,)h(size_t\))639 3063 y Fk(\210)41 b Fq(v)n(oid)27 +b Fh(\003)g Fs(memrc)m(hr)h Fq(\(const)g(v)n(oid)f Fh(\003)p +Fq(,)g(in)n(t,)h(size_t\))f(__A)-7 b(TTR_PURE__)639 3171 +y Fk(\210)41 b Fq(v)n(oid)27 b Fh(\003)g Fs(memset)f +Fq(\(v)n(oid)h Fh(\003)p Fq(,)h(in)n(t,)g(size_t\))639 +3278 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strcat)i +Fq(\(c)n(har)d Fh(\003)p Fq(,)h(const)h(c)n(har)e Fh(\003)p +Fq(\))639 3386 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g +Fs(strc)m(hr)i Fq(\(const)e(c)n(har)g Fh(\003)p Fq(,)g(in)n(t\))h(__A) +-7 b(TTR_PURE__)639 3494 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strc)m(hrn)m(ul)i Fq(\(const)e(c)n(har)f +Fh(\003)p Fq(,)i(in)n(t\))g(__A)-7 b(TTR_PURE__)639 3602 +y Fk(\210)41 b Fq(in)n(t)28 b Fs(strcmp)g Fq(\(const)f(c)n(har)g +Fh(\003)p Fq(,)g(const)g(c)n(har)f Fh(\003)p Fq(\))i(__A)-7 +b(TTR_PURE__)639 3710 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(strcp)m(y)i Fq(\(c)n(har)d Fh(\003)p Fq(,)i(const)f(c)n +(har)f Fh(\003)p Fq(\))639 3818 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(strcasecmp)g Fq(\(const)g(c)n(har)e Fh(\003)p Fq(,)h(const)g(c)n +(har)g Fh(\003)p Fq(\))g(__A)-7 b(TTR_PURE__)639 3926 +y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strcasestr)h +Fq(\(const)f(c)n(har)g Fh(\003)p Fq(,)g(const)g(c)n(har)g +Fh(\003)p Fq(\))g(__A)-7 b(TTR_PURE__)639 4034 y Fk(\210)41 +b Fq(size_t)f Fs(strcspn)g Fq(\(const)f(c)n(har)g Fh(\003)p +Fq(__s,)i(const)e(c)n(har)g Fh(\003)p Fq(__reject\))f(__A)-7 +b(TTR_-)722 4134 y(PURE__)639 4241 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strdup)h Fq(\(const)f(c)n(har)g Fh(\003)p +Fq(s1\))639 4349 y Fk(\210)41 b Fq(size_t)27 b Fs(strlcat)i +Fq(\(c)n(har)d Fh(\003)p Fq(,)h(const)h(c)n(har)e Fh(\003)p +Fq(,)h(size_t\))639 4457 y Fk(\210)41 b Fq(size_t)27 +b Fs(strlcp)m(y)i Fq(\(c)n(har)d Fh(\003)p Fq(,)i(const)f(c)n(har)f +Fh(\003)p Fq(,)h(size_t\))639 4565 y Fk(\210)41 b Fq(size_t)27 +b Fs(strlen)g Fq(\(const)h(c)n(har)e Fh(\003)p Fq(\))i(__A)-7 +b(TTR_PURE__)639 4673 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(strlwr)g Fq(\(c)n(har)g Fh(\003)p Fq(\))639 +4781 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strncat)i +Fq(\(c)n(har)d Fh(\003)p Fq(,)h(const)h(c)n(har)e Fh(\003)p +Fq(,)h(size_t\))639 4889 y Fk(\210)41 b Fq(in)n(t)28 +b Fs(strncmp)g Fq(\(const)f(c)n(har)g Fh(\003)p Fq(,)g(const)g(c)n(har) +g Fh(\003)p Fq(,)g(size_t\))g(__A)-7 b(TTR_PURE__)639 +4997 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strncp)m(y)i +Fq(\(c)n(har)d Fh(\003)p Fq(,)i(const)f(c)n(har)f Fh(\003)p +Fq(,)h(size_t\))p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 389 405 +TeXDict begin 389 404 bop 515 203 a Fs(24.58)94 b(string.h)30 +b(File)h(Reference)1456 b(389)p 515 236 2865 4 v 639 +523 a Fk(\210)41 b Fq(in)n(t)20 b Fs(strncasecmp)g Fq(\(const)f(c)n +(har)f Fh(\003)p Fq(,)j(const)e(c)n(har)f Fh(\003)p Fq(,)i(size_t\))f +(__A)-7 b(TTR_PURE_-)722 623 y(_)639 731 y Fk(\210)41 +b Fq(size_t)27 b Fs(strnlen)g Fq(\(const)h(c)n(har)e +Fh(\003)p Fq(,)i(size_t\))f(__A)-7 b(TTR_PURE__)639 839 +y Fk(\210)41 b Fq(c)n(har)34 b Fh(\003)g Fs(strpbrk)h +Fq(\(const)f(c)n(har)f Fh(\003)p Fq(__s,)i(const)f(c)n(har)f +Fh(\003)p Fq(__accept\))g(__A)-7 b(TTR_-)722 938 y(PURE__)639 +1046 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strrc)m(hr)i +Fq(\(const)e(c)n(har)g Fh(\003)p Fq(,)g(in)n(t\))h(__A)-7 +b(TTR_PURE__)639 1154 y Fk(\210)41 b Fq(c)n(har)27 b +Fh(\003)g Fs(strrev)h Fq(\(c)n(har)f Fh(\003)p Fq(\))639 +1262 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strsep)g +Fq(\(c)n(har)g Fh(\003\003)p Fq(,)f(const)i(c)n(har)e +Fh(\003)p Fq(\))639 1370 y Fk(\210)41 b Fq(size_t)g Fs(strspn)g +Fq(\(const)g(c)n(har)f Fh(\003)p Fq(__s,)k(const)c(c)n(har)h +Fh(\003)p Fq(__accept\))e(__A)-7 b(TTR_-)722 1469 y(PURE__)639 +1577 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strstr)h +Fq(\(const)f(c)n(har)g Fh(\003)p Fq(,)g(const)g(c)n(har)f +Fh(\003)p Fq(\))i(__A)-7 b(TTR_PURE__)639 1685 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(strtok)h Fq(\(c)n(har)e +Fh(\003)p Fq(,)i(const)f(c)n(har)f Fh(\003)p Fq(\))639 +1793 y Fk(\210)41 b Fq(c)n(har)27 b Fh(\003)g Fs(strtok_r)h +Fq(\(c)n(har)f Fh(\003)p Fq(,)g(const)g(c)n(har)g Fh(\003)p +Fq(,)g(c)n(har)f Fh(\003\003)p Fq(\))639 1901 y Fk(\210)41 +b Fq(c)n(har)27 b Fh(\003)g Fs(strupr)h Fq(\(c)n(har)f +Fh(\003)p Fq(\))p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 390 406 +TeXDict begin 390 405 bop 515 203 a Fs(24.59)94 b(strlcat.S)32 +b(File)e(Reference)1431 b(390)p 515 236 2865 4 v 515 +523 a Fn(24.59)112 b(strlcat.S)37 b(File)h(Reference)515 +724 y Fs(24.59.1)93 b(Detailed)31 b(Description)515 941 +y Fn(24.60)112 b(strlcat_P)-9 b(.S)37 b(File)h(Reference)515 +1141 y Fs(24.60.1)93 b(Detailed)31 b(Description)515 +1358 y Fn(24.61)112 b(strlcp)m(y)-9 b(.S)37 b(File)h(Reference)515 +1559 y Fs(24.61.1)93 b(Detailed)31 b(Description)515 +1776 y Fn(24.62)112 b(strlcp)m(y_P)-9 b(.S)37 b(File)h(Reference)515 +1976 y Fs(24.62.1)93 b(Detailed)31 b(Description)515 +2193 y Fn(24.63)112 b(strlen.S)38 b(File)g(Reference)515 +2394 y Fs(24.63.1)93 b(Detailed)31 b(Description)515 +2611 y Fn(24.64)112 b(strlen_P)-9 b(.S)37 b(File)h(Reference)515 +2811 y Fs(24.64.1)93 b(Detailed)31 b(Description)515 +3028 y Fn(24.65)112 b(strlwr.S)37 b(File)h(Reference)515 +3229 y Fs(24.65.1)93 b(Detailed)31 b(Description)515 +3446 y Fn(24.66)112 b(strncasecmp.S)39 b(File)f(Reference)515 +3646 y Fs(24.66.1)93 b(Detailed)31 b(Description)515 +3863 y Fn(24.67)112 b(strncasecmp_P)-9 b(.S)38 b(File)g(Reference)515 +4064 y Fs(24.67.1)93 b(Detailed)31 b(Description)515 +4281 y Fn(24.68)112 b(strncat.S)37 b(File)i(Reference)515 +4482 y Fs(24.68.1)93 b(Detailed)31 b(Description)515 +4699 y Fn(24.69)112 b(strncat_P)-9 b(.S)37 b(File)h(Reference)515 +4899 y Fs(24.69.1)93 b(Detailed)31 b(Description)515 +5116 y Fn(24.70)112 b(strncmp.S)38 b(File)g(Reference)515 +5317 y Fs(24.70.1)93 b(Detailed)31 b(Description)515 +5534 y Fn(24.71)112 b(strncmp_P)-9 b(.S)37 b(File)h(Reference)515 +5734 y Fs(24.71.1)93 b(Detailed)31 b(Description)515 +5951 y Fn(24.72)112 b(strncp)m(y)-9 b(.S)37 b(File)h(Reference)515 +6152 y Fs(24.72.1)93 b(Detailed)31 b(Description)515 +6369 y Fn(24.73)112 b(strncp)m(y_P)-9 b(.S)37 b(File)h(Reference)515 +6569 y Fs(24.73.1)93 b(Detailed)31 b(Description)515 +6786 y Fn(24.74)112 b(strnlen.S)38 b(File)g(Reference)515 +6987 y Fs(24.74.1)93 b(Detailed)31 b(Description)515 +7204 y Fn(24.75)112 b(strnlen_P)-9 b(.S)37 b(File)i(Reference)515 +7404 y Fs(24.75.1)93 b(Detailed)31 b(Description)515 +7621 y Fn(24.76)112 b(strpbrk.S)38 b(File)g(Reference)515 +7822 y Fs(24.76.1)93 b(Detailed)31 b(Description)515 +8039 y Fn(24.77)112 b(strpbrk_P)-9 b(.S)37 b(File)h(Reference)515 +8239 y Fs(24.77.1)93 b(Detailed)31 b(Description)515 +8457 y Fn(24.78)112 b(strrc)m(hr.S)37 b(File)h(Reference)515 +8657 y Fs(24.78.1)93 b(Detailed)31 b(Description)515 +8874 y Fn(24.79)112 b(strrc)m(hr_P)-9 b(.S)36 b(File)i(Reference)515 +9075 y Fs(24.79.1)93 b(Detailed)31 b(Description)515 +9292 y Fn(24.80)112 b(strrev.S)37 b(File)h(Reference)515 +9492 y Fs(24.80.1)93 b(Detailed)31 b(Description)515 +9709 y Fn(24.81)112 b(strsep.S)38 b(File)g(Reference)515 +9910 y Fs(24.81.1)93 b(Detailed)31 b(Description)515 +10127 y Fn(24.82)112 b(strsep_P)-9 b(.S)37 b(File)h(Reference)515 +10327 y Fs(24.82.1)93 b(Detailed)31 b(Description)515 +10544 y Fn(24.83)112 b(strspn.S)38 b(File)g(Reference)515 +10745 y Fs(24.83.1)93 b(Detailed)31 b(Description)515 +10962 y Fn(24.84)112 b(strspn_P)-9 b(.S)37 b(File)i(Reference)515 +11162 y Fs(24.84.1)93 b(Detailed)31 b(Description)515 +11379 y Fn(24.85)112 b(strstr.S)37 b(File)h(Reference)515 +11580 y Fs(24.85.1)93 b(Detailed)31 b(Description)515 +11797 y Fn(24.86)112 b(strstr_P)-9 b(.S)36 b(File)i(Reference)515 +11997 y Fs(24.86.1)93 b(Detailed)31 b(Description)515 +12215 y Fn(24.87)112 b(strtok.c)37 b(File)h(Reference)515 +12415 y Fs(24.87.1)93 b(Detailed)31 b(Description)515 +12616 y(F)-8 b(unctions)639 12794 y Fk(\210)41 b Fq(c)n(har)27 +b Fh(\003)g Fs(strtok)h Fq(\(c)n(har)e Fh(\003)p Fq(s,)h(const)h(c)n +(har)e Fh(\003)p Fq(delim\))p 515 5179 V 515 5255 a Fp(Generated)f(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 391 407 +TeXDict begin 391 406 bop 515 203 a Fs(24.88)94 b(strtok_r.S)32 +b(File)e(Reference)1335 b(391)p 515 236 2865 4 v 515 +523 a(V)-8 b(ariables)639 709 y Fk(\210)41 b Fq(static)28 +b(c)n(har)e Fh(\003)h Fs(p)515 988 y Fn(24.88)112 b(strtok_r.S)37 +b(File)h(Reference)515 1189 y Fs(24.88.1)93 b(Detailed)31 +b(Description)515 1406 y Fn(24.89)112 b(strupr.S)38 b(File)g(Reference) +515 1606 y Fs(24.89.1)93 b(Detailed)31 b(Description)515 +1823 y Fn(24.90)112 b(t)m(wi.h)37 b(File)h(Reference)515 +2024 y Fs(24.90.1)93 b(Detailed)31 b(Description)515 +2224 y(De\034nes)639 2410 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_UTIL_TWI_H_)i Fq(1)633 2637 y Fs(TWSR)h(v)-5 b(alues)633 +2769 y Fl(Mnemonics:)633 2902 y(TW_MT_xxx)28 b(-)i(master)g(tr)l +(ansmitter)633 3034 y(TW_MR_xxx)e(-)h(master)h(r)l(e)l(c)l(eiver)633 +3166 y(TW_ST_xxx)e(-)h(slave)i(tr)l(ansmitter)633 3298 +y(TW_SR_xxx)c(-)i(slave)i(r)l(e)l(c)l(eiver)732 3463 +y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST)-8 b(AR)g(T)29 +b Fq(0x08)732 3554 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_REP_ST)-8 +b(AR)g(T)29 b Fq(0x10)732 3645 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_MT_SLA_A)m(CK)i Fq(0x18)732 3736 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(TW_MT_SLA_NA)m(CK)i Fq(0x20)732 +3826 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MT_D)m(A)-8 +b(T)g(A_A)m(CK)31 b Fq(0x28)732 3917 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_MT_D)m(A)-8 b(T)g(A_NA)m(CK)30 b Fq(0x30)732 +4008 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MT_ARB_LOST)h +Fq(0x38)732 4099 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_ARB_LOST)g +Fq(0x38)732 4189 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_SLA_A)m(CK)h +Fq(0x40)732 4280 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_SLA_NA)m(CK) +h Fq(0x48)732 4371 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_MR_D)m(A)-8 +b(T)g(A_A)m(CK)30 b Fq(0x50)732 4462 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_MR_D)m(A)-8 b(T)g(A_NA)m(CK)29 b Fq(0x58)732 +4552 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST_SLA_A)m(CK)i +Fq(0xA8)732 4643 y Fk(\210)41 b Fq(#de\034ne)28 b Fs +(TW_ST_ARB_LOST_SLA_A)m(CK)j Fq(0xB0)732 4734 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(TW_ST_D)m(A)-8 b(T)g(A_A)m(CK)31 +b Fq(0xB8)732 4825 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST_D)m(A)-8 +b(T)g(A_NA)m(CK)31 b Fq(0xC0)732 4915 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(TW_ST_LAST_D)m(A)-8 b(T)g(A)32 b +Fq(0xC8)732 5006 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_SLA_A)m(CK)h +Fq(0x60)p 515 5179 V 515 5255 a Fp(Generated)c(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 392 408 +TeXDict begin 392 407 bop 515 203 a Fs(24.91)94 b(wdt.h)31 +b(File)g(Reference)1538 b(392)p 515 236 2865 4 v 732 +523 a Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_ARB_LOST_SLA_A)m(CK)i +Fq(0x68)732 614 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_GCALL_A)m(CK) +i Fq(0x70)732 706 y Fk(\210)41 b Fq(#de\034ne)28 b Fs +(TW_SR_ARB_LOST_GCALL_A)m(CK)i Fq(0x78)732 797 y Fk(\210)41 +b Fq(#de\034ne)28 b Fs(TW_SR_D)m(A)-8 b(T)g(A_A)m(CK)30 +b Fq(0x80)732 888 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_D)m(A)-8 +b(T)g(A_NA)m(CK)30 b Fq(0x88)732 980 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_SR_GCALL_D)m(A)-8 b(T)g(A_A)m(CK)31 b Fq(0x90)732 +1071 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_SR_GCALL_D)m(A)-8 +b(T)g(A_NA)m(CK)31 b Fq(0x98)732 1162 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(TW_SR_STOP)h Fq(0xA0)732 1254 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_NO_INF)m(O)g Fq(0xF8)732 +1345 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_BUS_ERR)m(OR)g +Fq(0x00)732 1436 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_ST)-8 +b(A)g(TUS_MASK)732 1528 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(TW_ST)-8 b(A)g(TUS)30 b Fq(\(TWSR)e(&)g(TW_ST)-7 +b(A)g(TUS_MASK\))633 1757 y Fs(R/)p Fh(\030)p Fs(W)30 +b(bit)i(in)f(SLA+R/W)h(address)f(\034eld.)732 1940 y +Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_READ)g Fq(1)732 +2031 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(TW_WRITE)g Fq(0)515 +2311 y Fn(24.91)112 b(wdt.h)38 b(File)g(Reference)515 +2512 y Fs(24.91.1)93 b(Detailed)31 b(Description)515 +2712 y(De\034nes)639 2898 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(wdt_reset)p Fq(\(\))g(__asm__)e(__v)n(olatile__)e(\("wdr"\))639 +3006 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(_WD_PS3_MASK)g +Fq(0x00)639 3114 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(_WD_CONTR)m +(OL_REG)g Fq(WDTCR)639 3222 y Fk(\210)41 b Fq(#de\034ne)28 +b Fs(_WD_CHANGE_BIT)g Fq(WDCE)639 3330 y Fk(\210)41 b +Fq(#de\034ne)28 b Fs(wdt_enable)p Fq(\(v)-5 b(alue\))639 +3438 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(wdt_disable)p +Fq(\(\))639 3546 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_15MS)f +Fq(0)639 3654 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_30MS)f +Fq(1)639 3762 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_60MS)f +Fq(2)639 3870 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_120MS)f +Fq(3)639 3978 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_250MS)f +Fq(4)639 4086 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_500MS)f +Fq(5)639 4194 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_1S)g +Fq(6)639 4302 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_2S)g +Fq(7)639 4409 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_4S)g +Fq(8)639 4517 y Fk(\210)41 b Fq(#de\034ne)28 b Fs(WDTO_8S)g +Fq(9)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 393 409 +TeXDict begin 393 408 bop 515 648 a Fr(Index)515 813 +y Fo(<)p Fq(allo)r(ca.h)p Fo(>)p Fq(:)99 b(Allo)r(cate)60 +b(space)f(in)h(the)847 912 y(stac)n(k,)26 b(129)515 1012 +y Fo(<)p Fq(assert.h)p Fo(>)p Fq(:)35 b(Diagnostics,)26 +b(130)515 1112 y Fo(<)p Fq(a)n(vr/b)r(o)r(ot.h)p Fo(>)p +Fq(:)94 b(Bo)r(otloader)56 b(Supp)r(ort)847 1211 y(Utilities,)28 +b(212)515 1311 y Fo(<)p Fq(a)n(vr/eeprom.h)p Fo(>)p Fq(:)136 +b(EEPR)n(OM)80 b(han-)847 1411 y(dling,)27 b(219)515 +1510 y Fo(<)p Fq(a)n(vr/fuse.h)p Fo(>)p Fq(:)34 b(F)-7 +b(use)28 b(Supp)r(ort,)g(222)515 1610 y Fo(<)p Fq(a)n(vr/in)n +(terrupt.h)p Fo(>)p Fq(:)34 b(In)n(terrupts,)26 b(225)515 +1709 y Fo(<)p Fq(a)n(vr/io.h)p Fo(>)p Fq(:)70 b(A)-9 +b(VR)46 b(device-sp)r(eci\034c)f(IO)847 1809 y(de\034nitions,)28 +b(254)515 1909 y Fo(<)p Fq(a)n(vr/lo)r(c)n(k.h)p Fo(>)p +Fq(:)33 b(Lo)r(c)n(kbit)27 b(Supp)r(ort,)h(255)515 2008 +y Fo(<)p Fq(a)n(vr/pgmspace.h)p Fo(>)p Fq(:)82 b(Program)51 +b(Space)847 2108 y(Utilities,)28 b(258)515 2208 y Fo(<)p +Fq(a)n(vr/p)r(o)n(w)n(er.h)p Fo(>)p Fq(:)128 b(P)n(o)n(w)n(er)73 +b(Reduction)847 2307 y(Managemen)n(t,)26 b(272)515 2407 +y Fo(<)p Fq(a)n(vr/sfr_defs.h)p Fo(>)p Fq(:)99 b(Sp)r(ecial)60 +b(function)847 2506 y(registers,)26 b(276)515 2606 y +Fo(<)p Fq(a)n(vr/sleep.h)p Fo(>)p Fq(:)91 b(P)n(o)n(w)n(er)55 +b(Managemen)n(t)847 2706 y(and)27 b(Sleep)h(Mo)r(des,)f(278)515 +2805 y Fo(<)p Fq(a)n(vr/v)n(ersion.h)p Fo(>)p Fq(:)142 +b(a)n(vr-lib)r(c)81 b(v)n(ersion)847 2905 y(macros,)26 +b(280)515 3005 y Fo(<)p Fq(a)n(vr/wdt.h)p Fo(>)p Fq(:)67 +b(W)-7 b(atc)n(hdog)42 b(timer)i(han-)847 3104 y(dling,)27 +b(281)515 3204 y Fo(<)p Fq(compat/deprecated.h)p Fo(>)p +Fq(:)56 b(Deprecated)847 3303 y(items,)28 b(302)515 3403 +y Fo(<)p Fq(compat/ina90.h)p Fo(>)p Fq(:)161 b(Compatibilit)n(y)847 +3503 y(with)28 b(IAR)g(EWB)g(3.x,)f(306)515 3602 y Fo(<)p +Fq(ct)n(yp)r(e.h)p Fo(>)p Fq(:)120 b(Character)68 b(Op)r(erations,)847 +3702 y(131)515 3802 y Fo(<)p Fq(errno.h)p Fo(>)p Fq(:)35 +b(System)27 b(Errors,)f(133)515 3901 y Fo(<)p Fq(in)n(tt)n(yp)r(es.h)p +Fo(>)p Fq(:)78 b(In)n(teger)48 b(T)n(yp)r(e)h(con)n(v)n(er-)847 +4001 y(sions,)27 b(134)515 4100 y Fo(<)p Fq(math.h)p +Fo(>)p Fq(:)36 b(Mathematics,)27 b(146)515 4200 y Fo(<)p +Fq(setjmp.h)p Fo(>)p Fq(:)37 b(Non-lo)r(cal)26 b(goto,)h(153)515 +4300 y Fo(<)p Fq(stdin)n(t.h)p Fo(>)p Fq(:)55 b(Standard)37 +b(In)n(teger)f(T)n(yp)r(es,)847 4399 y(155)515 4499 y +Fo(<)p Fq(stdio.h)p Fo(>)p Fq(:)g(Standard)27 b(IO)g(facilities,)g(167) +515 4599 y Fo(<)p Fq(stdlib.h)p Fo(>)p Fq(:)36 b(General)27 +b(utilities,)h(187)515 4698 y Fo(<)p Fq(string.h)p Fo(>)p +Fq(:)35 b(Strings,)27 b(199)515 4798 y Fo(<)p Fq(util/atomic.h)p +Fo(>)d Fq(A)n(tomically)h(and)g(Non-)847 4897 y(A)n(tomically)70 +b(Executed)i(Co)r(de)847 4997 y(Blo)r(c)n(ks,)26 b(285)1988 +813 y Fo(<)p Fq(util/crc16.h)p Fo(>)p Fq(:)59 b(CR)n(C)39 +b(Computations,)2320 912 y(289)1988 1012 y Fo(<)p Fq(util/dela)n(y)-7 +b(.h)p Fo(>)p Fq(:)119 b(Con)n(v)n(enience)68 b(func-)2320 +1112 y(tions)81 b(for)g(busy-w)n(ait)f(dela)n(y)2320 +1211 y(lo)r(ops,)27 b(292)1988 1311 y Fo(<)p Fq(util/dela)n(y_basic.h)p +Fo(>)p Fq(:)111 b(Basic)66 b(busy-)2320 1411 y(w)n(ait)28 +b(dela)n(y)e(lo)r(ops,)h(294)1988 1510 y Fo(<)p Fq(util/parit)n(y)-7 +b(.h)p Fo(>)p Fq(:)91 b(P)n(arit)n(y)55 b(bit)h(genera-)2320 +1610 y(tion,)28 b(295)1988 1709 y Fo(<)p Fq(util/setbaud.h)p +Fo(>)p Fq(:)54 b(Help)r(er)37 b(macros)e(for)2320 1809 +y(baud)28 b(rate)f(calculations,)f(296)1988 1909 y Fo(<)p +Fq(util/t)n(wi.h)p Fo(>)p Fq(:)69 b(TWI)44 b(bit)g(mask)f(de\034ni-) +2320 2008 y(tions,)28 b(298)1988 2108 y($P)-7 b(A)g(TH,)29 +b(88)1988 2208 y($PREFIX,)g(88)1988 2307 y(\025pre\034x,)e(88)1988 +2407 y(_BV)2154 2506 y(a)n(vr_sfr,)f(277)1988 2606 y(_EEGET)2154 +2706 y(a)n(vr_eeprom,)f(220)1988 2805 y(_EEPUT)2154 2905 +y(a)n(vr_eeprom,)g(220)1988 3005 y(_FDEV_EOF)2154 3104 +y(a)n(vr_stdio,)h(172)1988 3204 y(_FDEV_ERR)2154 3303 +y(a)n(vr_stdio,)g(172)1988 3403 y(_FDEV_SETUP_READ)2154 +3503 y(a)n(vr_stdio,)g(172)1988 3602 y(_FDEV_SETUP_R)-9 +b(W)2154 3702 y(a)n(vr_stdio,)26 b(172)1988 3802 y(_FDEV_SETUP_WRITE) +2154 3901 y(a)n(vr_stdio,)g(173)1988 4001 y(_FFS)2154 +4100 y(a)n(vr_string,)f(200)1988 4200 y(__A)-9 b(VR_LIBC_D)n(A)i(TE_) +2154 4300 y(a)n(vr_v)n(ersion,)25 b(280)1988 4399 y(__A)-9 +b(VR_LIBC_D)n(A)i(TE_STRING_-)2320 4499 y(_)2154 4599 +y(a)n(vr_v)n(ersion,)25 b(280)1988 4698 y(__A)-9 b(VR_LIBC_MAJOR__)2154 +4798 y(a)n(vr_v)n(ersion,)25 b(281)1988 4897 y(__A)-9 +b(VR_LIBC_MINOR__)2154 4997 y(a)n(vr_v)n(ersion,)25 b(281)p +eop end +%%Page: 394 410 +TeXDict begin 394 409 bop 515 203 a Fs(INDEX)2402 b(394)p +515 236 2865 4 v 515 523 a Fq(__A)-9 b(VR_LIBC_REVISION__)681 +623 y(a)n(vr_v)n(ersion,)24 b(281)515 722 y(__A)-9 b(VR_LIBC_VERSION_-) +847 822 y(STRING__)681 922 y(a)n(vr_v)n(ersion,)24 b(281)515 +1021 y(__A)-9 b(VR_LIBC_VERSION__)681 1121 y(a)n(vr_v)n(ersion,)24 +b(281)515 1220 y(__ELPM_classic__)681 1320 y(pgmspace.h,)j(369)515 +1420 y(__ELPM_dw)n(ord_enhanced__)681 1519 y(pgmspace.h,)g(370)515 +1619 y(__ELPM_enhanced__)681 1719 y(pgmspace.h,)g(370)515 +1818 y(__ELPM_\035oat_enhanced__)681 1918 y(pgmspace.h,)g(370)515 +2017 y(__ELPM_w)n(ord_classic__)681 2117 y(pgmspace.h,)g(371)515 +2217 y(__ELPM_w)n(ord_enhanced__)681 2316 y(pgmspace.h,)g(371)515 +2416 y(__LPM_classic__)681 2516 y(pgmspace.h,)g(372)515 +2615 y(__LPM_dw)n(ord_classic__)681 2715 y(pgmspace.h,)g(372)515 +2814 y(__LPM_dw)n(ord_enhanced__)681 2914 y(pgmspace.h,)g(373)515 +3014 y(__LPM_enhanced__)681 3113 y(pgmspace.h,)g(373)515 +3213 y(__LPM_\035oat_classic__)681 3313 y(pgmspace.h,)g(373)515 +3412 y(__LPM_\035oat_enhanced__)681 3512 y(pgmspace.h,)g(374)515 +3611 y(__LPM_w)n(ord_classic__)681 3711 y(pgmspace.h,)g(374)515 +3811 y(__LPM_w)n(ord_enhanced__)681 3910 y(pgmspace.h,)g(375)515 +4010 y(__b)r(o)r(ot_lo)r(c)n(k_bits_set)681 4110 y(b)r(o)r(ot.h,)h(353) +515 4209 y(__b)r(o)r(ot_lo)r(c)n(k_bits_set_alternate)681 +4309 y(b)r(o)r(ot.h,)g(353)515 4408 y(__b)r(o)r +(ot_page_erase_alternate)681 4508 y(b)r(o)r(ot.h,)g(353)515 +4608 y(__b)r(o)r(ot_page_erase_extended)681 4707 y(b)r(o)r(ot.h,)g(354) +515 4807 y(__b)r(o)r(ot_page_erase_normal)681 4907 y(b)r(o)r(ot.h,)g +(354)515 5006 y(__b)r(o)r(ot_page_\034ll_alternate)2154 +523 y(b)r(o)r(ot.h,)g(354)1988 623 y(__b)r(o)r(ot_page_\034ll_extended) +2154 722 y(b)r(o)r(ot.h,)g(355)1988 822 y(__b)r(o)r +(ot_page_\034ll_normal)2154 922 y(b)r(o)r(ot.h,)g(355)1988 +1021 y(__b)r(o)r(ot_page_write_alternate)2154 1121 y(b)r(o)r(ot.h,)g +(356)1988 1220 y(__b)r(o)r(ot_page_write_extended)2154 +1320 y(b)r(o)r(ot.h,)g(356)1988 1420 y(__b)r(o)r(ot_page_write_normal) +2154 1519 y(b)r(o)r(ot.h,)g(356)1988 1619 y(__b)r(o)r(ot_rww_enable) +2154 1719 y(b)r(o)r(ot.h,)g(357)1988 1818 y(__b)r(o)r +(ot_rww_enable_alternate)2154 1918 y(b)r(o)r(ot.h,)g(357)1988 +2017 y(__compar_fn_t)2154 2117 y(a)n(vr_stdlib,)f(189)1988 +2217 y(__mallo)r(c_heap_end)2154 2316 y(a)n(vr_stdlib,)g(198)1988 +2416 y(__mallo)r(c_heap_start)2154 2516 y(a)n(vr_stdlib,)g(198)1988 +2615 y(__mallo)r(c_margin)2154 2715 y(a)n(vr_stdlib,)g(198)1988 +2814 y(_crc16_up)r(date)2154 2914 y(util_crc,)g(290)1988 +3014 y(_crc_ccitt_up)r(date)2154 3113 y(util_crc,)g(290)1988 +3213 y(_crc_ibutton_up)r(date)2154 3313 y(util_crc,)g(291)1988 +3412 y(_crc_xmo)r(dem_up)r(date)2154 3512 y(util_crc,)g(292)1988 +3611 y(_dela)n(y_lo)r(op_1)2154 3711 y(util_dela)n(y_basic,)f(294)1988 +3811 y(_dela)n(y_lo)r(op_2)2154 3910 y(util_dela)n(y_basic,)g(294)1988 +4010 y(_dela)n(y_ms)2154 4110 y(util_dela)n(y,)h(293)1988 +4209 y(_dela)n(y_us)2154 4309 y(util_dela)n(y,)g(293)1988 +4491 y(A)h(more)f(sophisticated)g(pro)5 b(ject,)27 b(328)1988 +4591 y(A)h(simple)g(pro)5 b(ject,)27 b(311)1988 4691 +y(ab)r(ort)2154 4790 y(a)n(vr_stdlib,)g(190)1988 4890 +y(abs)2154 4990 y(a)n(vr_stdlib,)g(190)p 515 5179 V 515 +5255 a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 395 411 +TeXDict begin 395 410 bop 515 203 a Fs(INDEX)2402 b(395)p +515 236 2865 4 v 515 523 a Fq(acos)681 623 y(a)n(vr_math,)26 +b(148)515 722 y(A)n(dditional)81 b(notes)h(from)f Fo(<)p +Fq(a)n(vr/sfr_-)847 822 y(defs.h)p Fo(>)p Fq(,)27 b(274)515 +922 y(allo)r(ca)681 1021 y(allo)r(ca,)f(129)515 1121 +y(asin)681 1220 y(a)n(vr_math,)g(148)515 1320 y(assert)681 +1420 y(a)n(vr_assert,)e(130)515 1519 y(assert.h,)i(350)515 +1619 y(atan)681 1719 y(a)n(vr_math,)g(148)515 1818 y(atan2)681 +1918 y(a)n(vr_math,)g(148)515 2017 y(atof)681 2117 y(a)n(vr_stdlib,)g +(190)515 2217 y(atoi)681 2316 y(a)n(vr_stdlib,)g(190)515 +2416 y(atoi.S,)h(351)515 2516 y(atol)681 2615 y(a)n(vr_stdlib,)f(190) +515 2715 y(atol.S,)h(351)515 2814 y(atomic.h,)g(351)515 +2914 y(A)-7 b(TOMIC_BLOCK)681 3014 y(util_atomic,)27 +b(287)515 3113 y(A)-7 b(TOMIC_F)n(OR)n(CEON)681 3213 +y(util_atomic,)27 b(288)515 3313 y(A)-7 b(TOMIC_RESTOREST)g(A)g(TE)681 +3412 y(util_atomic,)27 b(288)515 3512 y(a)n(vr_assert)681 +3611 y(assert,)f(130)515 3711 y(a)n(vr_b)r(o)r(ot)681 +3811 y(b)r(o)r(ot_is_spm_in)n(terrupt,)g(214)681 3910 +y(b)r(o)r(ot_lo)r(c)n(k_bits_set,)g(214)681 4010 y(b)r(o)r(ot_lo)r(c)n +(k_bits_set_safe,)f(214)681 4110 y(b)r(o)r(ot_lo)r(c)n +(k_fuse_bits_get,)g(215)681 4209 y(b)r(o)r(ot_page_erase,)f(215)681 +4309 y(b)r(o)r(ot_page_erase_safe,)f(215)681 4408 y(b)r(o)r +(ot_page_\034ll,)j(216)681 4508 y(b)r(o)r(ot_page_\034ll_safe,)f(216) +681 4608 y(b)r(o)r(ot_page_write,)g(216)681 4707 y(b)r(o)r +(ot_page_write_safe,)f(216)681 4807 y(b)r(o)r(ot_rww_busy,)i(217)681 +4907 y(b)r(o)r(ot_rww_enable,)g(217)681 5006 y(b)r(o)r +(ot_rww_enable_safe,)f(217)2154 523 y(b)r(o)r(ot_signature_b)n +(yte_get,)g(217)2154 623 y(b)r(o)r(ot_spm_busy,)i(218)2154 +722 y(b)r(o)r(ot_spm_busy_w)n(ait,)f(218)2154 822 y(b)r(o)r(ot_spm_in)n +(terrupt_disable,)2320 922 y(218)2154 1021 y(b)r(o)r(ot_spm_in)n +(terrupt_enable,)2320 1121 y(218)2154 1220 y(BOOTLO)n(ADER_SECTION,)h +(218)2154 1320 y(GET_EXTENDED_FUSE_-)2320 1420 y(BITS,)h(218)2154 +1519 y(GET_HIGH_FUSE_BITS,)h(218)2154 1619 y(GET_LOCK_BITS,)e(219)2154 +1719 y(GET_LO)n(W_FUSE_BITS,)h(219)1988 1818 y(a)n(vr_eeprom)2154 +1918 y(_EEGET,)h(220)2154 2017 y(_EEPUT,)g(220)2154 2117 +y(EEMEM,)h(220)2154 2217 y(eeprom_busy_w)n(ait,)c(220)2154 +2316 y(eeprom_is_ready,)f(221)2154 2416 y(eeprom_read_blo)r(c)n(k,)g +(221)2154 2516 y(eeprom_read_b)n(yte,)g(221)2154 2615 +y(eeprom_read_dw)n(ord,)f(221)2154 2715 y(eeprom_read_w)n(ord,)g(221) +2154 2814 y(eeprom_write_blo)r(c)n(k,)h(221)2154 2914 +y(eeprom_write_b)n(yte,)h(221)2154 3014 y(eeprom_write_dw)n(ord,)f(222) +2154 3113 y(eeprom_write_w)n(ord,)g(222)1988 3213 y(a)n(vr_errno)2154 +3313 y(EDOM,)k(134)2154 3412 y(ERANGE,)h(134)1988 3512 +y(a)n(vr_in)n(terrupts)2154 3611 y(BADISR_v)n(ect,)e(250)2154 +3711 y(cli,)g(251)2154 3811 y(EMPTY_INTERR)n(UPT,)i(251)2154 +3910 y(ISR,)e(251)2154 4010 y(ISR_ALIAS,)g(251)2154 4110 +y(ISR_ALIASOF,)g(252)2154 4209 y(ISR_BLOCK,)f(252)2154 +4309 y(ISR_NAKED,)i(252)2154 4408 y(ISR_NOBLOCK,)d(253)2154 +4508 y(reti,)i(253)2154 4608 y(sei,)g(253)2154 4707 y(SIGNAL,)h(253) +1988 4807 y(a)n(vr_in)n(tt)n(yp)r(es)2154 4907 y(in)n(t_farptr_t,)e +(146)2154 5006 y(PRId16,)h(137)p 515 5179 V 515 5255 +a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 396 412 +TeXDict begin 396 411 bop 515 203 a Fs(INDEX)2402 b(396)p +515 236 2865 4 v 681 523 a Fq(PRId32,)27 b(137)681 623 +y(PRId8,)h(137)681 722 y(PRIdF)-9 b(AST16,)27 b(137)681 +822 y(PRIdF)-9 b(AST32,)27 b(137)681 922 y(PRIdF)-9 b(AST8,)28 +b(138)681 1021 y(PRIdLEAST16,)g(138)681 1121 y(PRIdLEAST32,)g(138)681 +1220 y(PRIdLEAST8,)g(138)681 1320 y(PRIdPTR,)h(138)681 +1420 y(PRIi16,)e(138)681 1519 y(PRIi32,)g(138)681 1619 +y(PRIi8,)h(138)681 1719 y(PRIiF)-9 b(AST16,)27 b(138)681 +1818 y(PRIiF)-9 b(AST32,)27 b(138)681 1918 y(PRIiF)-9 +b(AST8,)28 b(138)681 2017 y(PRIiLEAST16,)g(139)681 2117 +y(PRIiLEAST32,)g(139)681 2217 y(PRIiLEAST8,)g(139)681 +2316 y(PRIiPTR,)h(139)681 2416 y(PRIo16,)e(139)681 2516 +y(PRIo32,)g(139)681 2615 y(PRIo8,)g(139)681 2715 y(PRIoF)-9 +b(AST16,)27 b(139)681 2814 y(PRIoF)-9 b(AST32,)27 b(139)681 +2914 y(PRIoF)-9 b(AST8,)27 b(139)681 3014 y(PRIoLEAST16,)g(139)681 +3113 y(PRIoLEAST32,)g(140)681 3213 y(PRIoLEAST8,)h(140)681 +3313 y(PRIoPTR,)g(140)681 3412 y(PRIu16,)f(140)681 3512 +y(PRIu32,)g(140)681 3611 y(PRIu8,)h(140)681 3711 y(PRIuF)-9 +b(AST16,)27 b(140)681 3811 y(PRIuF)-9 b(AST32,)27 b(140)681 +3910 y(PRIuF)-9 b(AST8,)28 b(140)681 4010 y(PRIuLEAST16,)g(140)681 +4110 y(PRIuLEAST32,)g(140)681 4209 y(PRIuLEAST8,)g(141)681 +4309 y(PRIuPTR,)h(141)681 4408 y(PRIX16,)e(141)681 4508 +y(PRIx16,)g(141)681 4608 y(PRIX32,)g(141)681 4707 y(PRIx32,)g(141)681 +4807 y(PRIX8,)h(141)681 4907 y(PRIx8,)f(141)681 5006 +y(PRIXF)-9 b(AST16,)28 b(141)2154 523 y(PRIxF)-9 b(AST16,)28 +b(141)2154 623 y(PRIXF)-9 b(AST32,)28 b(141)2154 722 +y(PRIxF)-9 b(AST32,)28 b(142)2154 822 y(PRIXF)-9 b(AST8,)29 +b(142)2154 922 y(PRIxF)-9 b(AST8,)28 b(142)2154 1021 +y(PRIXLEAST16,)h(142)2154 1121 y(PRIxLEAST16,)f(142)2154 +1220 y(PRIXLEAST32,)h(142)2154 1320 y(PRIxLEAST32,)f(142)2154 +1420 y(PRIXLEAST8,)h(142)2154 1519 y(PRIxLEAST8,)g(142)2154 +1619 y(PRIXPTR,)g(142)2154 1719 y(PRIxPTR,)g(142)2154 +1818 y(SCNd16,)f(143)2154 1918 y(SCNd32,)g(143)2154 2017 +y(SCNdF)-9 b(AST16,)28 b(143)2154 2117 y(SCNdF)-9 b(AST32,)28 +b(143)2154 2217 y(SCNdLEAST16,)g(143)2154 2316 y(SCNdLEAST32,)g(143) +2154 2416 y(SCNdPTR,)h(143)2154 2516 y(SCNi16,)f(143)2154 +2615 y(SCNi32,)g(143)2154 2715 y(SCNiF)-9 b(AST16,)28 +b(143)2154 2814 y(SCNiF)-9 b(AST32,)28 b(143)2154 2914 +y(SCNiLEAST16,)g(144)2154 3014 y(SCNiLEAST32,)g(144)2154 +3113 y(SCNiPTR,)h(144)2154 3213 y(SCNo16,)e(144)2154 +3313 y(SCNo32,)g(144)2154 3412 y(SCNoF)-9 b(AST16,)27 +b(144)2154 3512 y(SCNoF)-9 b(AST32,)27 b(144)2154 3611 +y(SCNoLEAST16,)h(144)2154 3711 y(SCNoLEAST32,)g(144)2154 +3811 y(SCNoPTR,)g(144)2154 3910 y(SCNu16,)g(144)2154 +4010 y(SCNu32,)g(145)2154 4110 y(SCNuF)-9 b(AST16,)28 +b(145)2154 4209 y(SCNuF)-9 b(AST32,)28 b(145)2154 4309 +y(SCNuLEAST16,)g(145)2154 4408 y(SCNuLEAST32,)g(145)2154 +4508 y(SCNuPTR,)h(145)2154 4608 y(SCNx16,)e(145)2154 +4707 y(SCNx32,)g(145)2154 4807 y(SCNxF)-9 b(AST16,)28 +b(145)2154 4907 y(SCNxF)-9 b(AST32,)28 b(145)2154 5006 +y(SCNxLEAST16,)g(145)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 397 413 +TeXDict begin 397 412 bop 515 203 a Fs(INDEX)2402 b(397)p +515 236 2865 4 v 681 523 a Fq(SCNxLEAST32,)27 b(146)681 +623 y(SCNxPTR,)h(146)681 722 y(uin)n(t_farptr_t,)e(146)515 +822 y(a)n(vr_math)681 922 y(acos,)g(148)681 1021 y(asin,)h(148)681 +1121 y(atan,)g(148)681 1220 y(atan2,)f(148)681 1320 y(ceil,)h(148)681 +1420 y(cop)n(ysign,)f(148)681 1519 y(cos,)h(149)681 1619 +y(cosh,)g(149)681 1719 y(exp,)g(149)681 1818 y(fabs,)g(149)681 +1918 y(fdim,)h(149)681 2017 y(\035o)r(or,)e(149)681 2117 +y(fma,)i(149)681 2217 y(fmax,)f(149)681 2316 y(fmin,)h(149)681 +2416 y(fmo)r(d,)g(150)681 2516 y(frexp,)f(150)681 2615 +y(h)n(yp)r(ot,)g(150)681 2715 y(INFINITY,)h(147)681 2814 +y(is\034nite,)g(150)681 2914 y(isinf,)g(150)681 3014 +y(isnan,)f(150)681 3113 y(ldexp,)g(151)681 3213 y(log,)g(151)681 +3313 y(log10,)f(151)681 3412 y(lrin)n(t,)h(151)681 3512 +y(lround,)g(151)681 3611 y(M_PI,)h(147)681 3711 y(M_SQR)-7 +b(T2,)26 b(148)681 3811 y(mo)r(df,)i(151)681 3910 y(NAN,)g(148)681 +4010 y(p)r(o)n(w,)f(152)681 4110 y(round,)g(152)681 4209 +y(sign)n(bit,)g(152)681 4309 y(sin,)g(152)681 4408 y(sinh,)h(152)681 +4508 y(sqrt,)f(152)681 4608 y(square,)f(153)681 4707 +y(tan,)h(153)681 4807 y(tanh,)h(153)681 4907 y(trunc,)f(153)515 +5006 y(a)n(vr_pgmspace)2154 523 y(memc)n(hr_P,)h(265)2154 +623 y(memcmp_P,)h(265)2154 722 y(memcp)n(y_P,)f(265)2154 +822 y(memmem_P,)h(265)2154 922 y(memrc)n(hr_P,)e(265)2154 +1021 y(PGM_P,)i(260)2154 1121 y(pgm_read_b)n(yte,)d(260)2154 +1220 y(pgm_read_b)n(yte_far,)f(261)2154 1320 y(pgm_read_b)n(yte_near,)f +(261)2154 1420 y(pgm_read_dw)n(ord,)h(261)2154 1519 y(pgm_read_dw)n +(ord_far,)f(261)2154 1619 y(pgm_read_dw)n(ord_near,)f(261)2154 +1719 y(pgm_read_\035oat,)i(262)2154 1818 y(pgm_read_\035oat_far,)f(262) +2154 1918 y(pgm_read_\035oat_near,)g(262)2154 2017 y(pgm_read_w)n(ord,) +h(262)2154 2117 y(pgm_read_w)n(ord_far,)f(262)2154 2217 +y(pgm_read_w)n(ord_near,)f(263)2154 2316 y(PGM_V)n(OID_P,)28 +b(263)2154 2416 y(prog_c)n(har,)d(263)2154 2516 y(prog_in)n(t16_t,)g +(263)2154 2615 y(prog_in)n(t32_t,)g(263)2154 2715 y(prog_in)n(t64_t,)g +(263)2154 2814 y(prog_in)n(t8_t,)h(264)2154 2914 y(prog_uc)n(har,)f +(264)2154 3014 y(prog_uin)n(t16_t,)g(264)2154 3113 y(prog_uin)n(t32_t,) +g(264)2154 3213 y(prog_uin)n(t64_t,)g(264)2154 3313 y(prog_uin)n(t8_t,) +h(264)2154 3412 y(prog_v)n(oid,)f(264)2154 3512 y(PR)n(OGMEM,)k(263) +2154 3611 y(PSTR,)g(263)2154 3711 y(strcasecmp_P,)e(266)2154 +3811 y(strcasestr_P,)f(266)2154 3910 y(strcat_P,)h(266)2154 +4010 y(strc)n(hr_P,)g(266)2154 4110 y(strc)n(hrn)n(ul_P,)g(267)2154 +4209 y(strcmp_P,)h(267)2154 4309 y(strcp)n(y_P,)f(267)2154 +4408 y(strcspn_P,)h(268)2154 4508 y(strlcat_P,)f(268)2154 +4608 y(strlcp)n(y_P,)g(268)2154 4707 y(strlen_P,)h(268)2154 +4807 y(strncasecmp_P,)f(269)2154 4907 y(strncat_P,)g(269)2154 +5006 y(strncmp_P,)h(269)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 398 414 +TeXDict begin 398 413 bop 515 203 a Fs(INDEX)2402 b(398)p +515 236 2865 4 v 681 523 a Fq(strncp)n(y_P,)27 b(270)681 +623 y(strnlen_P,)g(270)681 722 y(strpbrk_P,)g(270)681 +822 y(strrc)n(hr_P,)f(271)681 922 y(strsep_P,)h(271)681 +1021 y(strspn_P,)g(271)681 1121 y(strstr_P,)g(271)515 +1220 y(a)n(vr_sfr)681 1320 y(_BV,)g(277)681 1420 y(bit_is_clear,)f(277) +681 1519 y(bit_is_set,)h(277)681 1619 y(lo)r(op_un)n(til_bit_is_clear,) +e(278)681 1719 y(lo)r(op_un)n(til_bit_is_set,)h(278)515 +1818 y(a)n(vr_sleep)681 1918 y(sleep_cpu,)h(279)681 2017 +y(sleep_disable,)f(279)681 2117 y(sleep_enable,)g(279)515 +2217 y(a)n(vr_stdin)n(t)681 2316 y(INT16_C,)g(159)681 +2416 y(INT16_MAX,)h(159)681 2516 y(INT16_MIN,)g(159)681 +2615 y(in)n(t16_t,)f(164)681 2715 y(INT32_C,)g(159)681 +2814 y(INT32_MAX,)h(159)681 2914 y(INT32_MIN,)g(159)681 +3014 y(in)n(t32_t,)f(164)681 3113 y(INT64_C,)g(159)681 +3213 y(INT64_MAX,)h(160)681 3313 y(INT64_MIN,)g(160)681 +3412 y(in)n(t64_t,)f(164)681 3512 y(INT8_C,)h(160)681 +3611 y(INT8_MAX,)g(160)681 3711 y(INT8_MIN,)g(160)681 +3811 y(in)n(t8_t,)g(165)681 3910 y(INT_F)-9 b(AST16_MAX,)27 +b(160)681 4010 y(INT_F)-9 b(AST16_MIN,)26 b(160)681 4110 +y(in)n(t_fast16_t,)g(165)681 4209 y(INT_F)-9 b(AST32_MAX,)27 +b(160)681 4309 y(INT_F)-9 b(AST32_MIN,)26 b(160)681 4408 +y(in)n(t_fast32_t,)g(165)681 4508 y(INT_F)-9 b(AST64_MAX,)27 +b(160)681 4608 y(INT_F)-9 b(AST64_MIN,)26 b(160)681 4707 +y(in)n(t_fast64_t,)g(165)681 4807 y(INT_F)-9 b(AST8_MAX,)27 +b(161)681 4907 y(INT_F)-9 b(AST8_MIN,)27 b(161)681 5006 +y(in)n(t_fast8_t,)f(165)2154 523 y(INT_LEAST16_MAX,)i(161)2154 +623 y(INT_LEAST16_MIN,)f(161)2154 722 y(in)n(t_least16_t,)f(165)2154 +822 y(INT_LEAST32_MAX,)i(161)2154 922 y(INT_LEAST32_MIN,)f(161)2154 +1021 y(in)n(t_least32_t,)f(165)2154 1121 y(INT_LEAST64_MAX,)i(161)2154 +1220 y(INT_LEAST64_MIN,)f(161)2154 1320 y(in)n(t_least64_t,)f(165)2154 +1420 y(INT_LEAST8_MAX,)i(161)2154 1519 y(INT_LEAST8_MIN,)g(161)2154 +1619 y(in)n(t_least8_t,)f(165)2154 1719 y(INTMAX_C,)h(161)2154 +1818 y(INTMAX_MAX,)h(162)2154 1918 y(INTMAX_MIN,)g(162)2154 +2017 y(in)n(tmax_t,)f(166)2154 2117 y(INTPTR_MAX,)h(162)2154 +2217 y(INTPTR_MIN,)g(162)2154 2316 y(in)n(tptr_t,)f(166)2154 +2416 y(PTRDIFF_MAX,)i(162)2154 2516 y(PTRDIFF_MIN,)f(162)2154 +2615 y(SIG_A)-7 b(TOMIC_MAX,)28 b(162)2154 2715 y(SIG_A)-7 +b(TOMIC_MIN,)28 b(162)2154 2814 y(SIZE_MAX,)h(162)2154 +2914 y(UINT16_C,)e(162)2154 3014 y(UINT16_MAX,)h(162)2154 +3113 y(uin)n(t16_t,)f(166)2154 3213 y(UINT32_C,)g(163)2154 +3313 y(UINT32_MAX,)h(163)2154 3412 y(uin)n(t32_t,)f(166)2154 +3512 y(UINT64_C,)g(163)2154 3611 y(UINT64_MAX,)h(163)2154 +3711 y(uin)n(t64_t,)f(166)2154 3811 y(UINT8_C,)h(163)2154 +3910 y(UINT8_MAX,)g(163)2154 4010 y(uin)n(t8_t,)g(166)2154 +4110 y(UINT_F)-9 b(AST16_MAX,)28 b(163)2154 4209 y(uin)n(t_fast16_t,)f +(166)2154 4309 y(UINT_F)-9 b(AST32_MAX,)28 b(163)2154 +4408 y(uin)n(t_fast32_t,)f(166)2154 4508 y(UINT_F)-9 +b(AST64_MAX,)28 b(163)2154 4608 y(uin)n(t_fast64_t,)f(166)2154 +4707 y(UINT_F)-9 b(AST8_MAX,)28 b(163)2154 4807 y(uin)n(t_fast8_t,)f +(166)2154 4907 y(UINT_LEAST16_MAX,)h(164)2154 5006 y(uin)n +(t_least16_t,)e(167)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 399 415 +TeXDict begin 399 414 bop 515 203 a Fs(INDEX)2402 b(399)p +515 236 2865 4 v 681 523 a Fq(UINT_LEAST32_MAX,)27 b(164)681 +623 y(uin)n(t_least32_t,)f(167)681 722 y(UINT_LEAST64_MAX,)h(164)681 +822 y(uin)n(t_least64_t,)f(167)681 922 y(UINT_LEAST8_MAX,)i(164)681 +1021 y(uin)n(t_least8_t,)e(167)681 1121 y(UINTMAX_C,)i(164)681 +1220 y(UINTMAX_MAX,)h(164)681 1320 y(uin)n(tmax_t,)e(167)681 +1420 y(UINTPTR_MAX,)i(164)681 1519 y(uin)n(tptr_t,)e(167)515 +1619 y(a)n(vr_stdio)681 1719 y(_FDEV_EOF,)h(172)681 1818 +y(_FDEV_ERR,)h(172)681 1918 y(_FDEV_SETUP_READ,)h(172)681 +2017 y(_FDEV_SETUP_R)-9 b(W,)29 b(172)681 2117 y(_FDEV_SETUP_WRITE,)h +(173)681 2217 y(clearerr,)25 b(175)681 2316 y(EOF,)j(173)681 +2416 y(fclose,)f(175)681 2516 y(fdev_close,)f(173)681 +2615 y(fdev_get_udata,)g(173)681 2715 y(fdev_set_udata,)g(173)681 +2814 y(FDEV_SETUP_STREAM,)k(173)681 2914 y(fdev_setup_stream,)c(173)681 +3014 y(fdev)n(op)r(en,)h(175)681 3113 y(feof,)h(176)681 +3213 y(ferror,)e(176)681 3313 y(\037ush,)i(176)681 3412 +y(fgetc,)f(177)681 3512 y(fgets,)g(177)681 3611 y(FILE,)h(174)681 +3711 y(fprin)n(tf,)g(177)681 3811 y(fprin)n(tf_P,)g(177)681 +3910 y(fputc,)g(177)681 4010 y(fputs,)g(177)681 4110 +y(fputs_P,)g(177)681 4209 y(fread,)f(178)681 4309 y(fscanf,)g(178)681 +4408 y(fscanf_P,)h(178)681 4508 y(fwrite,)g(178)681 4608 +y(getc,)f(174)681 4707 y(getc)n(har,)f(174)681 4807 y(gets,)h(178)681 +4907 y(prin)n(tf,)h(178)681 5006 y(prin)n(tf_P,)g(178)2154 +523 y(putc,)h(174)2154 623 y(putc)n(har,)e(174)2154 722 +y(puts,)h(179)2154 822 y(puts_P,)g(179)2154 922 y(scanf,)g(179)2154 +1021 y(scanf_P,)g(179)2154 1121 y(snprin)n(tf,)g(179)2154 +1220 y(snprin)n(tf_P,)g(179)2154 1320 y(sprin)n(tf,)g(179)2154 +1420 y(sprin)n(tf_P,)g(179)2154 1519 y(sscanf,)f(180)2154 +1619 y(sscanf_P,)h(180)2154 1719 y(stderr,)f(174)2154 +1818 y(stdin,)h(175)2154 1918 y(stdout,)g(175)2154 2017 +y(ungetc,)g(180)2154 2117 y(vfprin)n(tf,)g(180)2154 2217 +y(vfprin)n(tf_P,)g(183)2154 2316 y(vfscanf,)g(183)2154 +2416 y(vfscanf_P,)g(186)2154 2516 y(vprin)n(tf,)g(186)2154 +2615 y(vscanf,)g(186)2154 2715 y(vsnprin)n(tf,)g(186)2154 +2814 y(vsnprin)n(tf_P,)g(187)2154 2914 y(vsprin)n(tf,)g(187)2154 +3014 y(vsprin)n(tf_P,)g(187)1988 3113 y(a)n(vr_stdlib)2154 +3213 y(__compar_fn_t,)e(189)2154 3313 y(__mallo)r(c_heap_end,)g(198) +2154 3412 y(__mallo)r(c_heap_start,)f(198)2154 3512 y(__mallo)r +(c_margin,)g(198)2154 3611 y(ab)r(ort,)i(190)2154 3711 +y(abs,)g(190)2154 3811 y(atof,)h(190)2154 3910 y(atoi,)f(190)2154 +4010 y(atol,)g(190)2154 4110 y(bsearc)n(h,)g(191)2154 +4209 y(callo)r(c,)g(191)2154 4309 y(div,)h(191)2154 4408 +y(DTOSTR_AL)-9 b(W)g(A)i(YS_SIGN,)28 b(189)2154 4508 +y(DTOSTR_PLUS_SIGN,)h(189)2154 4608 y(DTOSTR_UPPER)n(CASE,)h(189)2154 +4707 y(dtostre,)d(191)2154 4807 y(dtostrf,)h(192)2154 +4907 y(exit,)g(192)2154 5006 y(free,)g(192)p 515 5179 +V 515 5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 400 416 +TeXDict begin 400 415 bop 515 203 a Fs(INDEX)2402 b(400)p +515 236 2865 4 v 681 523 a Fq(itoa,)27 b(192)681 623 +y(labs,)g(193)681 722 y(ldiv,)h(193)681 822 y(ltoa,)f(193)681 +922 y(mallo)r(c,)g(194)681 1021 y(qsort,)f(194)681 1121 +y(rand,)h(194)681 1220 y(RAND_MAX,)i(189)681 1320 y(rand_r,)d(195)681 +1420 y(random,)g(195)681 1519 y(RANDOM_MAX,)i(189)681 +1619 y(random_r,)d(195)681 1719 y(reallo)r(c,)h(195)681 +1818 y(srand,)g(195)681 1918 y(srandom,)g(195)681 2017 +y(strto)r(d,)h(196)681 2117 y(strtol,)g(196)681 2217 +y(strtoul,)g(197)681 2316 y(ultoa,)g(197)681 2416 y(utoa,)g(198)515 +2516 y(a)n(vr_string)681 2615 y(_FFS,)h(200)681 2715 +y(\033s,)g(201)681 2814 y(\033sl,)g(201)681 2914 y(\033sll,)g(201)681 +3014 y(memccp)n(y,)f(201)681 3113 y(memc)n(hr,)g(201)681 +3213 y(memcmp,)h(202)681 3313 y(memcp)n(y,)f(202)681 +3412 y(memmem,)h(202)681 3512 y(memmo)n(v)n(e,)e(203)681 +3611 y(memrc)n(hr,)g(203)681 3711 y(memset,)i(203)681 +3811 y(strcasecmp,)e(203)681 3910 y(strcasestr,)g(204)681 +4010 y(strcat,)h(204)681 4110 y(strc)n(hr,)f(204)681 +4209 y(strc)n(hrn)n(ul,)g(204)681 4309 y(strcmp,)h(205)681 +4408 y(strcp)n(y,)g(205)681 4508 y(strcspn,)g(205)681 +4608 y(strdup,)g(206)681 4707 y(strlcat,)g(206)681 4807 +y(strlcp)n(y,)g(206)681 4907 y(strlen,)g(207)681 5006 +y(strlwr,)g(207)2154 523 y(strncasecmp,)g(207)2154 623 +y(strncat,)g(208)2154 722 y(strncmp,)h(208)2154 822 y(strncp)n(y,)f +(208)2154 922 y(strnlen,)h(208)2154 1021 y(strpbrk,)f(209)2154 +1121 y(strrc)n(hr,)f(209)2154 1220 y(strrev,)h(209)2154 +1320 y(strsep,)g(210)2154 1420 y(strspn,)h(210)2154 1519 +y(strstr,)f(210)2154 1619 y(strtok,)g(210)2154 1719 y(strtok_r,)f(211) +2154 1818 y(strupr,)h(211)1988 1918 y(a)n(vr_v)n(ersion)2154 +2017 y(__A)-9 b(VR_LIBC_D)n(A)i(TE_,)27 b(280)2154 2117 +y(__A)-9 b(VR_LIBC_D)n(A)i(TE_-)2320 2217 y(STRING__,)28 +b(280)2154 2316 y(__A)-9 b(VR_LIBC_MAJOR__,)2320 2416 +y(281)2154 2516 y(__A)g(VR_LIBC_MINOR__,)2320 2615 y(281)2154 +2715 y(__A)g(VR_LIBC_REVISION__,)2320 2814 y(281)2154 +2914 y(__A)g(VR_LIBC_VERSION_-)2320 3014 y(STRING__,)28 +b(281)2154 3113 y(__A)-9 b(VR_LIBC_VERSION__,)2320 3213 +y(281)1988 3313 y(a)n(vr_w)n(atc)n(hdog)2154 3412 y(wdt_disable,)28 +b(283)2154 3512 y(wdt_enable,)g(283)2154 3611 y(wdt_reset,)f(283)2154 +3711 y(WDTO_120MS,)g(284)2154 3811 y(WDTO_15MS,)g(284)2154 +3910 y(WDTO_1S,)h(284)2154 4010 y(WDTO_250MS,)f(284)2154 +4110 y(WDTO_2S,)h(284)2154 4209 y(WDTO_30MS,)f(284)2154 +4309 y(WDTO_4S,)h(284)2154 4408 y(WDTO_500MS,)f(285)2154 +4508 y(WDTO_60MS,)g(285)2154 4608 y(WDTO_8S,)h(285)1988 +4707 y(a)n(vrdude,)f(usage,)f(115)1988 4807 y(a)n(vrprog,)f(usage,)i +(115)1988 4990 y(BADISR_v)n(ect)p 515 5179 V 515 5255 +a Fp(Generated)e(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 401 417 +TeXDict begin 401 416 bop 515 203 a Fs(INDEX)2402 b(401)p +515 236 2865 4 v 681 523 a Fq(a)n(vr_in)n(terrupts,)25 +b(250)515 623 y(BA)n(UD_TOL)681 722 y(util_setbaud,)i(297)515 +822 y(bit_is_clear)681 922 y(a)n(vr_sfr,)e(277)515 1021 +y(bit_is_set)681 1121 y(a)n(vr_sfr,)g(277)515 1220 y(b)r(o)r(ot.h,)j +(351)681 1320 y(__b)r(o)r(ot_lo)r(c)n(k_bits_set,)d(353)681 +1420 y(__b)r(o)r(ot_lo)r(c)n(k_bits_set_-)847 1519 y(alternate,)i(353) +681 1619 y(__b)r(o)r(ot_page_erase_alternate,)847 1719 +y(353)681 1818 y(__b)r(o)r(ot_page_erase_extended,)847 +1918 y(354)681 2017 y(__b)r(o)r(ot_page_erase_normal,)847 +2117 y(354)681 2217 y(__b)r(o)r(ot_page_\034ll_alternate,)847 +2316 y(354)681 2416 y(__b)r(o)r(ot_page_\034ll_extended,)847 +2516 y(355)681 2615 y(__b)r(o)r(ot_page_\034ll_normal,)c(355)681 +2715 y(__b)r(o)r(ot_page_write_alternate,)847 2814 y(356)681 +2914 y(__b)r(o)r(ot_page_write_extended,)847 3014 y(356)681 +3113 y(__b)r(o)r(ot_page_write_normal,)847 3213 y(356)681 +3313 y(__b)r(o)r(ot_rww_enable,)i(357)681 3412 y(__b)r(o)r +(ot_rww_enable_alternate,)847 3512 y(357)515 3611 y(b)r(o)r +(ot_is_spm_in)n(terrupt)681 3711 y(a)n(vr_b)r(o)r(ot,)h(214)515 +3811 y(b)r(o)r(ot_lo)r(c)n(k_bits_set)681 3910 y(a)n(vr_b)r(o)r(ot,)g +(214)515 4010 y(b)r(o)r(ot_lo)r(c)n(k_bits_set_safe)681 +4110 y(a)n(vr_b)r(o)r(ot,)g(214)515 4209 y(b)r(o)r(ot_lo)r(c)n +(k_fuse_bits_get)681 4309 y(a)n(vr_b)r(o)r(ot,)g(215)515 +4408 y(b)r(o)r(ot_page_erase)681 4508 y(a)n(vr_b)r(o)r(ot,)g(215)515 +4608 y(b)r(o)r(ot_page_erase_safe)681 4707 y(a)n(vr_b)r(o)r(ot,)g(215) +515 4807 y(b)r(o)r(ot_page_\034ll)681 4907 y(a)n(vr_b)r(o)r(ot,)g(216) +515 5006 y(b)r(o)r(ot_page_\034ll_safe)2154 523 y(a)n(vr_b)r(o)r(ot,)g +(216)1988 623 y(b)r(o)r(ot_page_write)2154 722 y(a)n(vr_b)r(o)r(ot,)g +(216)1988 822 y(b)r(o)r(ot_page_write_safe)2154 922 y(a)n(vr_b)r(o)r +(ot,)g(216)1988 1021 y(b)r(o)r(ot_rww_busy)2154 1121 +y(a)n(vr_b)r(o)r(ot,)g(217)1988 1220 y(b)r(o)r(ot_rww_enable)2154 +1320 y(a)n(vr_b)r(o)r(ot,)g(217)1988 1420 y(b)r(o)r(ot_rww_enable_safe) +2154 1519 y(a)n(vr_b)r(o)r(ot,)g(217)1988 1619 y(b)r(o)r +(ot_signature_b)n(yte_get)2154 1719 y(a)n(vr_b)r(o)r(ot,)g(217)1988 +1818 y(b)r(o)r(ot_spm_busy)2154 1918 y(a)n(vr_b)r(o)r(ot,)g(218)1988 +2017 y(b)r(o)r(ot_spm_busy_w)n(ait)2154 2117 y(a)n(vr_b)r(o)r(ot,)g +(218)1988 2217 y(b)r(o)r(ot_spm_in)n(terrupt_disable)2154 +2316 y(a)n(vr_b)r(o)r(ot,)g(218)1988 2416 y(b)r(o)r(ot_spm_in)n +(terrupt_enable)2154 2516 y(a)n(vr_b)r(o)r(ot,)g(218)1988 +2615 y(BOOTLO)n(ADER_SECTION)2154 2715 y(a)n(vr_b)r(o)r(ot,)g(218)1988 +2814 y(bsearc)n(h)2154 2914 y(a)n(vr_stdlib,)h(191)1988 +3097 y(callo)r(c)2154 3196 y(a)n(vr_stdlib,)g(191)1988 +3296 y(cbi)2154 3396 y(deprecated_items,)g(304)1988 3495 +y(ceil)2154 3595 y(a)n(vr_math,)f(148)1988 3694 y(clearerr)2154 +3794 y(a)n(vr_stdio,)g(175)1988 3894 y(cli)2154 3993 +y(a)n(vr_in)n(terrupts,)g(251)1988 4093 y(clo)r(c)n(k_prescale_set)2154 +4193 y(p)r(o)n(w)n(er.h,)h(376)1988 4292 y(Com)n(bining)63 +b(C)g(and)g(assem)n(bly)e(source)2320 4392 y(\034les,)28 +b(307)1988 4491 y(cop)n(ysign)2154 4591 y(a)n(vr_math,)e(148)1988 +4691 y(cos)2154 4790 y(a)n(vr_math,)g(149)1988 4890 y(cosh)2154 +4990 y(a)n(vr_math,)g(149)p 515 5179 V 515 5255 a Fp(Generated)f(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 402 418 +TeXDict begin 402 417 bop 515 203 a Fs(INDEX)2402 b(402)p +515 236 2865 4 v 515 523 a Fq(crc16.h,)26 b(358)515 623 +y(ct)n(yp)r(e)681 722 y(isaln)n(um,)h(132)681 822 y(isalpha,)g(132)681 +922 y(isascii,)g(132)681 1021 y(isblank,)g(132)681 1121 +y(iscn)n(trl,)g(132)681 1220 y(isdigit,)g(132)681 1320 +y(isgraph,)f(132)681 1420 y(islo)n(w)n(er,)g(132)681 +1519 y(isprin)n(t,)h(132)681 1619 y(ispunct,)h(132)681 +1719 y(isspace,)e(132)681 1818 y(isupp)r(er,)h(133)681 +1918 y(isxdigit,)g(133)681 2017 y(toascii,)g(133)681 +2117 y(tolo)n(w)n(er,)f(133)681 2217 y(toupp)r(er,)h(133)515 +2316 y(ct)n(yp)r(e.h,)h(358)515 2499 y(dela)n(y)-7 b(.h,)27 +b(359)515 2599 y(dela)n(y_basic.h,)f(359)515 2698 y(Demo)h(pro)5 +b(jects,)27 b(306)515 2798 y(deprecated_items)681 2897 +y(cbi,)h(304)681 2997 y(enable_external_in)n(t,)d(304)681 +3097 y(in)n(b,)i(304)681 3196 y(inp,)h(304)681 3296 y(INTERR)n(UPT,)h +(304)681 3396 y(outb,)f(305)681 3495 y(outp,)g(305)681 +3595 y(sbi,)f(305)681 3694 y(timer_enable_in)n(t,)f(305)515 +3794 y(disassem)n(bling,)g(316)515 3894 y(div)681 3993 +y(a)n(vr_stdlib,)g(191)515 4093 y(div_t,)h(349)681 4193 +y(quot,)g(349)681 4292 y(rem,)g(349)515 4392 y(DTOSTR_AL)-9 +b(W)g(A)i(YS_SIGN)681 4491 y(a)n(vr_stdlib,)26 b(189)515 +4591 y(DTOSTR_PLUS_SIGN)681 4691 y(a)n(vr_stdlib,)g(189)515 +4790 y(DTOSTR_UPPER)n(CASE)681 4890 y(a)n(vr_stdlib,)g(189)515 +4990 y(dtostre)2154 523 y(a)n(vr_stdlib,)h(191)1988 623 +y(dtostrf)2154 722 y(a)n(vr_stdlib,)g(192)1988 905 y(EDOM)2154 +1005 y(a)n(vr_errno,)e(134)1988 1104 y(EEMEM)2154 1204 +y(a)n(vr_eeprom,)g(220)1988 1303 y(eeprom_busy_w)n(ait)2154 +1403 y(a)n(vr_eeprom,)g(220)1988 1503 y(eeprom_is_ready)2154 +1602 y(a)n(vr_eeprom,)g(221)1988 1702 y(eeprom_read_blo)r(c)n(k)2154 +1802 y(a)n(vr_eeprom,)g(221)1988 1901 y(eeprom_read_b)n(yte)2154 +2001 y(a)n(vr_eeprom,)g(221)1988 2100 y(eeprom_read_dw)n(ord)2154 +2200 y(a)n(vr_eeprom,)g(221)1988 2300 y(eeprom_read_w)n(ord)2154 +2399 y(a)n(vr_eeprom,)g(221)1988 2499 y(eeprom_write_blo)r(c)n(k)2154 +2599 y(a)n(vr_eeprom,)g(221)1988 2698 y(eeprom_write_b)n(yte)2154 +2798 y(a)n(vr_eeprom,)g(221)1988 2897 y(eeprom_write_dw)n(ord)2154 +2997 y(a)n(vr_eeprom,)g(222)1988 3097 y(eeprom_write_w)n(ord)2154 +3196 y(a)n(vr_eeprom,)g(222)1988 3296 y(EMPTY_INTERR)n(UPT)2154 +3396 y(a)n(vr_in)n(terrupts,)h(251)1988 3495 y(enable_external_in)n(t) +2154 3595 y(deprecated_items,)h(304)1988 3694 y(EOF)2154 +3794 y(a)n(vr_stdio,)f(173)1988 3894 y(ERANGE)2154 3993 +y(a)n(vr_errno,)f(134)1988 4093 y(errno.h,)i(359)1988 +4193 y(Example)38 b(using)f(the)h(t)n(w)n(o-wire)e(in)n(terface)2320 +4292 y(\(TWI\),)29 b(344)1988 4392 y(exit)2154 4491 y(a)n(vr_stdlib,)e +(192)1988 4591 y(exp)2154 4691 y(a)n(vr_math,)f(149)1988 +4873 y(fabs)2154 4973 y(a)n(vr_math,)g(149)p 515 5179 +V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e +(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop +end +%%Page: 403 419 +TeXDict begin 403 418 bop 515 203 a Fs(INDEX)2402 b(403)p +515 236 2865 4 v 515 523 a Fq(F)-9 b(A)n(Q,)27 b(59)515 +623 y(fclose)681 722 y(a)n(vr_stdio,)e(175)515 822 y(fdev_close)681 +922 y(a)n(vr_stdio,)g(173)515 1021 y(fdev_get_udata)681 +1121 y(a)n(vr_stdio,)g(173)515 1220 y(fdev_set_udata)681 +1320 y(a)n(vr_stdio,)g(173)515 1420 y(FDEV_SETUP_STREAM)681 +1519 y(a)n(vr_stdio,)g(173)515 1619 y(fdev_setup_stream)681 +1719 y(a)n(vr_stdio,)g(173)515 1818 y(fdev)n(op)r(en)681 +1918 y(a)n(vr_stdio,)g(175)515 2017 y(fdev)n(op)r(en.c,)i(360)515 +2117 y(fdim)681 2217 y(a)n(vr_math,)f(149)515 2316 y(feof)681 +2416 y(a)n(vr_stdio,)f(176)515 2516 y(ferror)681 2615 +y(a)n(vr_stdio,)g(176)515 2715 y(\037ush)681 2814 y(a)n(vr_stdio,)g +(176)515 2914 y(\033s)681 3014 y(a)n(vr_string,)g(201)515 +3113 y(\033s.S,)j(360)515 3213 y(\033sl)681 3313 y(a)n(vr_string,)d +(201)515 3412 y(\033sl.S,)j(360)515 3512 y(\033sll)681 +3611 y(a)n(vr_string,)d(201)515 3711 y(\033sll.S,)j(360)515 +3811 y(fgetc)681 3910 y(a)n(vr_stdio,)d(177)515 4010 +y(fgets)681 4110 y(a)n(vr_stdio,)g(177)515 4209 y(FILE)681 +4309 y(a)n(vr_stdio,)g(174)515 4408 y(\035o)r(or)681 +4508 y(a)n(vr_math,)h(149)515 4608 y(fma)681 4707 y(a)n(vr_math,)g(149) +515 4807 y(fmax)681 4907 y(a)n(vr_math,)g(149)515 5006 +y(fmin)2154 523 y(a)n(vr_math,)g(149)1988 623 y(fmo)r(d)2154 +722 y(a)n(vr_math,)g(150)1988 822 y(fprin)n(tf)2154 922 +y(a)n(vr_stdio,)g(177)1988 1021 y(fprin)n(tf_P)2154 1121 +y(a)n(vr_stdio,)g(177)1988 1220 y(fputc)2154 1320 y(a)n(vr_stdio,)g +(177)1988 1420 y(fputs)2154 1519 y(a)n(vr_stdio,)g(177)1988 +1619 y(fputs_P)2154 1719 y(a)n(vr_stdio,)g(177)1988 1818 +y(fread)2154 1918 y(a)n(vr_stdio,)g(178)1988 2017 y(free)2154 +2117 y(a)n(vr_stdlib,)h(192)1988 2217 y(frexp)2154 2316 +y(a)n(vr_math,)f(150)1988 2416 y(fscanf)2154 2516 y(a)n(vr_stdio,)g +(178)1988 2615 y(fscanf_P)2154 2715 y(a)n(vr_stdio,)g(178)1988 +2814 y(fuse.h,)i(360)1988 2914 y(fwrite)2154 3014 y(a)n(vr_stdio,)e +(178)1988 3196 y(GET_EXTENDED_FUSE_BITS)2154 3296 y(a)n(vr_b)r(o)r(ot,) +g(218)1988 3396 y(GET_HIGH_FUSE_BITS)2154 3495 y(a)n(vr_b)r(o)r(ot,)g +(218)1988 3595 y(GET_LOCK_BITS)2154 3694 y(a)n(vr_b)r(o)r(ot,)g(219) +1988 3794 y(GET_LO)n(W_FUSE_BITS)2154 3894 y(a)n(vr_b)r(o)r(ot,)g(219) +1988 3993 y(getc)2154 4093 y(a)n(vr_stdio,)g(174)1988 +4193 y(getc)n(har)2154 4292 y(a)n(vr_stdio,)g(174)1988 +4392 y(gets)2154 4491 y(a)n(vr_stdio,)g(178)1988 4674 +y(h)n(yp)r(ot)2154 4774 y(a)n(vr_math,)g(150)1988 4956 +y(in)n(b)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 404 420 +TeXDict begin 404 419 bop 515 203 a Fs(INDEX)2402 b(404)p +515 236 2865 4 v 681 523 a Fq(deprecated_items,)26 b(304)515 +623 y(INFINITY)681 722 y(a)n(vr_math,)g(147)515 822 y(inp)681 +922 y(deprecated_items,)g(304)515 1021 y(installation,)h(88)515 +1121 y(installation,)g(a)n(v)-5 b(arice,)26 b(94)515 +1220 y(installation,)h(a)n(vr-lib)r(c,)f(92)515 1320 +y(installation,)h(a)n(vrdude,)f(92)515 1420 y(installation,)h(a)n +(vrprog,)e(92)515 1519 y(installation,)i(bin)n(utils,)h(90)515 +1619 y(installation,)f(gcc,)g(91)515 1719 y(Installation,)g(gdb,)g(93) +515 1818 y(installation,)g(sim)n(ula)n(vr,)f(93)515 1918 +y(INT16_C)681 2017 y(a)n(vr_stdin)n(t,)g(159)515 2117 +y(INT16_MAX)681 2217 y(a)n(vr_stdin)n(t,)g(159)515 2316 +y(INT16_MIN)681 2416 y(a)n(vr_stdin)n(t,)g(159)515 2516 +y(in)n(t16_t)681 2615 y(a)n(vr_stdin)n(t,)g(164)515 2715 +y(INT32_C)681 2814 y(a)n(vr_stdin)n(t,)g(159)515 2914 +y(INT32_MAX)681 3014 y(a)n(vr_stdin)n(t,)g(159)515 3113 +y(INT32_MIN)681 3213 y(a)n(vr_stdin)n(t,)g(159)515 3313 +y(in)n(t32_t)681 3412 y(a)n(vr_stdin)n(t,)g(164)515 3512 +y(INT64_C)681 3611 y(a)n(vr_stdin)n(t,)g(159)515 3711 +y(INT64_MAX)681 3811 y(a)n(vr_stdin)n(t,)g(160)515 3910 +y(INT64_MIN)681 4010 y(a)n(vr_stdin)n(t,)g(160)515 4110 +y(in)n(t64_t)681 4209 y(a)n(vr_stdin)n(t,)g(164)515 4309 +y(INT8_C)681 4408 y(a)n(vr_stdin)n(t,)g(160)515 4508 +y(INT8_MAX)681 4608 y(a)n(vr_stdin)n(t,)g(160)515 4707 +y(INT8_MIN)681 4807 y(a)n(vr_stdin)n(t,)g(160)515 4907 +y(in)n(t8_t)681 5006 y(a)n(vr_stdin)n(t,)g(165)1988 523 +y(in)n(t_farptr_t)2154 623 y(a)n(vr_in)n(tt)n(yp)r(es,)g(146)1988 +722 y(INT_F)-9 b(AST16_MAX)2154 822 y(a)n(vr_stdin)n(t,)26 +b(160)1988 922 y(INT_F)-9 b(AST16_MIN)2154 1021 y(a)n(vr_stdin)n(t,)26 +b(160)1988 1121 y(in)n(t_fast16_t)2154 1220 y(a)n(vr_stdin)n(t,)g(165) +1988 1320 y(INT_F)-9 b(AST32_MAX)2154 1420 y(a)n(vr_stdin)n(t,)26 +b(160)1988 1519 y(INT_F)-9 b(AST32_MIN)2154 1619 y(a)n(vr_stdin)n(t,)26 +b(160)1988 1719 y(in)n(t_fast32_t)2154 1818 y(a)n(vr_stdin)n(t,)g(165) +1988 1918 y(INT_F)-9 b(AST64_MAX)2154 2017 y(a)n(vr_stdin)n(t,)26 +b(160)1988 2117 y(INT_F)-9 b(AST64_MIN)2154 2217 y(a)n(vr_stdin)n(t,)26 +b(160)1988 2316 y(in)n(t_fast64_t)2154 2416 y(a)n(vr_stdin)n(t,)g(165) +1988 2516 y(INT_F)-9 b(AST8_MAX)2154 2615 y(a)n(vr_stdin)n(t,)26 +b(161)1988 2715 y(INT_F)-9 b(AST8_MIN)2154 2814 y(a)n(vr_stdin)n(t,)26 +b(161)1988 2914 y(in)n(t_fast8_t)2154 3014 y(a)n(vr_stdin)n(t,)g(165) +1988 3113 y(INT_LEAST16_MAX)2154 3213 y(a)n(vr_stdin)n(t,)g(161)1988 +3313 y(INT_LEAST16_MIN)2154 3412 y(a)n(vr_stdin)n(t,)g(161)1988 +3512 y(in)n(t_least16_t)2154 3611 y(a)n(vr_stdin)n(t,)g(165)1988 +3711 y(INT_LEAST32_MAX)2154 3811 y(a)n(vr_stdin)n(t,)g(161)1988 +3910 y(INT_LEAST32_MIN)2154 4010 y(a)n(vr_stdin)n(t,)g(161)1988 +4110 y(in)n(t_least32_t)2154 4209 y(a)n(vr_stdin)n(t,)g(165)1988 +4309 y(INT_LEAST64_MAX)2154 4408 y(a)n(vr_stdin)n(t,)g(161)1988 +4508 y(INT_LEAST64_MIN)2154 4608 y(a)n(vr_stdin)n(t,)g(161)1988 +4707 y(in)n(t_least64_t)2154 4807 y(a)n(vr_stdin)n(t,)g(165)1988 +4907 y(INT_LEAST8_MAX)2154 5006 y(a)n(vr_stdin)n(t,)g(161)p +515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 405 421 +TeXDict begin 405 420 bop 515 203 a Fs(INDEX)2402 b(405)p +515 236 2865 4 v 515 523 a Fq(INT_LEAST8_MIN)681 623 +y(a)n(vr_stdin)n(t,)26 b(161)515 722 y(in)n(t_least8_t)681 +822 y(a)n(vr_stdin)n(t,)g(165)515 922 y(INTERR)n(UPT)681 +1021 y(deprecated_items,)g(304)515 1121 y(in)n(terrupt.h,)h(360)515 +1220 y(INTMAX_C)681 1320 y(a)n(vr_stdin)n(t,)f(161)515 +1420 y(INTMAX_MAX)681 1519 y(a)n(vr_stdin)n(t,)g(162)515 +1619 y(INTMAX_MIN)681 1719 y(a)n(vr_stdin)n(t,)g(162)515 +1818 y(in)n(tmax_t)681 1918 y(a)n(vr_stdin)n(t,)g(166)515 +2017 y(INTPTR_MAX)681 2117 y(a)n(vr_stdin)n(t,)g(162)515 +2217 y(INTPTR_MIN)681 2316 y(a)n(vr_stdin)n(t,)g(162)515 +2416 y(in)n(tptr_t)681 2516 y(a)n(vr_stdin)n(t,)g(166)515 +2615 y(in)n(tt)n(yp)r(es.h,)i(361)515 2715 y(io.h,)f(364)515 +2814 y(isaln)n(um)681 2914 y(ct)n(yp)r(e,)g(132)515 3014 +y(isalpha)681 3113 y(ct)n(yp)r(e,)g(132)515 3213 y(isascii)681 +3313 y(ct)n(yp)r(e,)g(132)515 3412 y(isblank)681 3512 +y(ct)n(yp)r(e,)g(132)515 3611 y(iscn)n(trl)681 3711 y(ct)n(yp)r(e,)g +(132)515 3811 y(isdigit)681 3910 y(ct)n(yp)r(e,)g(132)515 +4010 y(is\034nite)681 4110 y(a)n(vr_math,)f(150)515 4209 +y(isgraph)681 4309 y(ct)n(yp)r(e,)h(132)515 4408 y(isinf)681 +4508 y(a)n(vr_math,)f(150)515 4608 y(islo)n(w)n(er)681 +4707 y(ct)n(yp)r(e,)h(132)515 4807 y(isnan)681 4907 y(a)n(vr_math,)f +(150)515 5006 y(isprin)n(t)2154 523 y(ct)n(yp)r(e,)i(132)1988 +623 y(ispunct)2154 722 y(ct)n(yp)r(e,)g(132)1988 822 +y(ISR)2154 922 y(a)n(vr_in)n(terrupts,)e(251)1988 1021 +y(ISR_ALIAS)2154 1121 y(a)n(vr_in)n(terrupts,)g(251)1988 +1220 y(ISR_ALIASOF)2154 1320 y(a)n(vr_in)n(terrupts,)g(252)1988 +1420 y(ISR_BLOCK)2154 1519 y(a)n(vr_in)n(terrupts,)g(252)1988 +1619 y(ISR_NAKED)2154 1719 y(a)n(vr_in)n(terrupts,)g(252)1988 +1818 y(ISR_NOBLOCK)2154 1918 y(a)n(vr_in)n(terrupts,)g(253)1988 +2017 y(isspace)2154 2117 y(ct)n(yp)r(e,)i(132)1988 2217 +y(isupp)r(er)2154 2316 y(ct)n(yp)r(e,)g(133)1988 2416 +y(isxdigit)2154 2516 y(ct)n(yp)r(e,)g(133)1988 2615 y(itoa)2154 +2715 y(a)n(vr_stdlib,)f(192)1988 2897 y(labs)2154 2997 +y(a)n(vr_stdlib,)g(193)1988 3097 y(ldexp)2154 3196 y(a)n(vr_math,)f +(151)1988 3296 y(ldiv)2154 3396 y(a)n(vr_stdlib,)h(193)1988 +3495 y(ldiv_t,)h(350)2154 3595 y(quot,)g(350)2154 3694 +y(rem,)g(350)1988 3794 y(lo)r(c)n(k.h,)g(364)1988 3894 +y(log)2154 3993 y(a)n(vr_math,)e(151)1988 4093 y(log10)2154 +4193 y(a)n(vr_math,)g(151)1988 4292 y(long)r(jmp)2154 +4392 y(setjmp,)j(154)1988 4491 y(lo)r(op_un)n(til_bit_is_clear)2154 +4591 y(a)n(vr_sfr,)d(278)1988 4691 y(lo)r(op_un)n(til_bit_is_set)2154 +4790 y(a)n(vr_sfr,)g(278)1988 4890 y(lrin)n(t)2154 4990 +y(a)n(vr_math,)g(151)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 406 422 +TeXDict begin 406 421 bop 515 203 a Fs(INDEX)2402 b(406)p +515 236 2865 4 v 515 523 a Fq(lround)681 623 y(a)n(vr_math,)26 +b(151)515 722 y(ltoa)681 822 y(a)n(vr_stdlib,)g(193)515 +1005 y(M_PI)681 1104 y(a)n(vr_math,)g(147)515 1204 y(M_SQR)-7 +b(T2)681 1303 y(a)n(vr_math,)26 b(148)515 1403 y(mallo)r(c)681 +1503 y(a)n(vr_stdlib,)g(194)515 1602 y(math.h,)i(364)515 +1702 y(memccp)n(y)681 1802 y(a)n(vr_string,)d(201)515 +1901 y(memccp)n(y)-7 b(.S,)27 b(366)515 2001 y(memc)n(hr)681 +2100 y(a)n(vr_string,)e(201)515 2200 y(memc)n(hr.S,)i(366)515 +2300 y(memc)n(hr_P)681 2399 y(a)n(vr_pgmspace,)d(265)515 +2499 y(memc)n(hr_P)-7 b(.S,)27 b(366)515 2599 y(memcmp)681 +2698 y(a)n(vr_string,)e(202)515 2798 y(memcmp.S,)j(366)515 +2897 y(memcmp_P)681 2997 y(a)n(vr_pgmspace,)c(265)515 +3097 y(memcmp_P)-7 b(.S,)28 b(366)515 3196 y(memcp)n(y)681 +3296 y(a)n(vr_string,)d(202)515 3396 y(memcp)n(y)-7 b(.S,)27 +b(366)515 3495 y(memcp)n(y_P)681 3595 y(a)n(vr_pgmspace,)d(265)515 +3694 y(memcp)n(y_P)-7 b(.S,)27 b(366)515 3794 y(memmem)681 +3894 y(a)n(vr_string,)e(202)515 3993 y(memmem.S,)j(366)515 +4093 y(memmem_P)681 4193 y(a)n(vr_pgmspace,)c(265)515 +4292 y(memmo)n(v)n(e)681 4392 y(a)n(vr_string,)h(203)515 +4491 y(memmo)n(v)n(e.S,)i(366)515 4591 y(memrc)n(hr)681 +4691 y(a)n(vr_string,)e(203)515 4790 y(memrc)n(hr.S,)i(366)515 +4890 y(memrc)n(hr_P)681 4990 y(a)n(vr_pgmspace,)d(265)1988 +523 y(memrc)n(hr_P)-7 b(.S,)27 b(366)1988 623 y(memset)2154 +722 y(a)n(vr_string,)e(203)1988 822 y(memset.S,)j(366)1988 +922 y(mo)r(df)2154 1021 y(a)n(vr_math,)e(151)1988 1204 +y(NAN)2154 1303 y(a)n(vr_math,)g(148)1988 1403 y(NONA)-7 +b(TOMIC_BLOCK)2154 1503 y(util_atomic,)28 b(288)1988 +1602 y(NONA)-7 b(TOMIC_F)n(OR)n(CEOFF)2154 1702 y(util_atomic,)28 +b(288)1988 1802 y(NONA)-7 b(TOMIC_RESTOREST)g(A)g(TE)2154 +1901 y(util_atomic,)28 b(289)1988 2084 y(outb)2154 2183 +y(deprecated_items,)f(305)1988 2283 y(outp)2154 2383 +y(deprecated_items,)g(305)1988 2565 y(parit)n(y)-7 b(.h,)27 +b(366)1988 2665 y(parit)n(y_ev)n(en_bit)2154 2765 y(util_parit)n(y,)g +(295)1988 2864 y(PGM_P)2154 2964 y(a)n(vr_pgmspace,)e(260)1988 +3064 y(pgm_read_b)n(yte)2154 3163 y(a)n(vr_pgmspace,)g(260)1988 +3263 y(pgm_read_b)n(yte_far)2154 3362 y(a)n(vr_pgmspace,)g(261)1988 +3462 y(pgm_read_b)n(yte_near)2154 3562 y(a)n(vr_pgmspace,)g(261)1988 +3661 y(pgm_read_dw)n(ord)2154 3761 y(a)n(vr_pgmspace,)g(261)1988 +3861 y(pgm_read_dw)n(ord_far)2154 3960 y(a)n(vr_pgmspace,)g(261)1988 +4060 y(pgm_read_dw)n(ord_near)2154 4159 y(a)n(vr_pgmspace,)g(261)1988 +4259 y(pgm_read_\035oat)2154 4359 y(a)n(vr_pgmspace,)g(262)1988 +4458 y(pgm_read_\035oat_far)2154 4558 y(a)n(vr_pgmspace,)g(262)1988 +4658 y(pgm_read_\035oat_near)2154 4757 y(a)n(vr_pgmspace,)g(262)1988 +4857 y(pgm_read_w)n(ord)2154 4956 y(a)n(vr_pgmspace,)g(262)p +515 5179 V 515 5255 a Fp(Generated)g(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Page: 407 423 +TeXDict begin 407 422 bop 515 203 a Fs(INDEX)2402 b(407)p +515 236 2865 4 v 515 523 a Fq(pgm_read_w)n(ord_far)681 +623 y(a)n(vr_pgmspace,)24 b(262)515 722 y(pgm_read_w)n(ord_near)681 +822 y(a)n(vr_pgmspace,)g(263)515 922 y(PGM_V)n(OID_P)681 +1021 y(a)n(vr_pgmspace,)g(263)515 1121 y(pgmspace.h,)j(367)681 +1220 y(__ELPM_classic__,)e(369)681 1320 y(__ELPM_dw)n(ord_enhanced__,) +847 1420 y(370)681 1519 y(__ELPM_enhanced__,)h(370)681 +1619 y(__ELPM_\035oat_enhanced__,)847 1719 y(370)681 +1818 y(__ELPM_w)n(ord_classic__,)d(371)681 1918 y(__ELPM_w)n +(ord_enhanced__,)847 2017 y(371)681 2117 y(__LPM_classic__,)i(372)681 +2217 y(__LPM_dw)n(ord_classic__,)e(372)681 2316 y(__LPM_dw)n +(ord_enhanced__,)847 2416 y(373)681 2516 y(__LPM_enhanced__,)i(373)681 +2615 y(__LPM_\035oat_classic__,)f(373)681 2715 y +(__LPM_\035oat_enhanced__,)847 2814 y(374)681 2914 y(__LPM_w)n +(ord_classic__,)f(374)681 3014 y(__LPM_w)n(ord_enhanced__,)847 +3113 y(375)515 3213 y(p)r(o)n(w)681 3313 y(a)n(vr_math,)j(152)515 +3412 y(p)r(o)n(w)n(er.h,)g(375)681 3512 y(clo)r(c)n(k_prescale_set,)e +(376)515 3611 y(PRId16)681 3711 y(a)n(vr_in)n(tt)n(yp)r(es,)i(137)515 +3811 y(PRId32)681 3910 y(a)n(vr_in)n(tt)n(yp)r(es,)g(137)515 +4010 y(PRId8)681 4110 y(a)n(vr_in)n(tt)n(yp)r(es,)g(137)515 +4209 y(PRIdF)-9 b(AST16)681 4309 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(137)515 4408 y(PRIdF)-9 b(AST32)681 4508 y(a)n(vr_in)n(tt)n(yp)r(es,) +26 b(137)515 4608 y(PRIdF)-9 b(AST8)681 4707 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(138)515 4807 y(PRIdLEAST16)681 4907 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(138)515 5006 y(PRIdLEAST32)2154 523 y(a)n(vr_in)n(tt)n(yp)r(es,) +g(138)1988 623 y(PRIdLEAST8)2154 722 y(a)n(vr_in)n(tt)n(yp)r(es,)g(138) +1988 822 y(PRIdPTR)2154 922 y(a)n(vr_in)n(tt)n(yp)r(es,)g(138)1988 +1021 y(PRIi16)2154 1121 y(a)n(vr_in)n(tt)n(yp)r(es,)g(138)1988 +1220 y(PRIi32)2154 1320 y(a)n(vr_in)n(tt)n(yp)r(es,)g(138)1988 +1420 y(PRIi8)2154 1519 y(a)n(vr_in)n(tt)n(yp)r(es,)g(138)1988 +1619 y(PRIiF)-9 b(AST16)2154 1719 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(138)1988 1818 y(PRIiF)-9 b(AST32)2154 1918 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(138)1988 2017 y(PRIiF)-9 b(AST8)2154 2117 y(a)n(vr_in)n(tt)n +(yp)r(es,)26 b(138)1988 2217 y(PRIiLEAST16)2154 2316 +y(a)n(vr_in)n(tt)n(yp)r(es,)g(139)1988 2416 y(PRIiLEAST32)2154 +2516 y(a)n(vr_in)n(tt)n(yp)r(es,)g(139)1988 2615 y(PRIiLEAST8)2154 +2715 y(a)n(vr_in)n(tt)n(yp)r(es,)g(139)1988 2814 y(PRIiPTR)2154 +2914 y(a)n(vr_in)n(tt)n(yp)r(es,)g(139)1988 3014 y(prin)n(tf)2154 +3113 y(a)n(vr_stdio,)g(178)1988 3213 y(prin)n(tf_P)2154 +3313 y(a)n(vr_stdio,)g(178)1988 3412 y(PRIo16)2154 3512 +y(a)n(vr_in)n(tt)n(yp)r(es,)g(139)1988 3611 y(PRIo32)2154 +3711 y(a)n(vr_in)n(tt)n(yp)r(es,)g(139)1988 3811 y(PRIo8)2154 +3910 y(a)n(vr_in)n(tt)n(yp)r(es,)g(139)1988 4010 y(PRIoF)-9 +b(AST16)2154 4110 y(a)n(vr_in)n(tt)n(yp)r(es,)26 b(139)1988 +4209 y(PRIoF)-9 b(AST32)2154 4309 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(139)1988 4408 y(PRIoF)-9 b(AST8)2154 4508 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(139)1988 4608 y(PRIoLEAST16)2154 4707 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(139)1988 4807 y(PRIoLEAST32)2154 4907 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(140)1988 5006 y(PRIoLEAST8)p 515 5179 V 515 5255 +a Fp(Generated)f(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g +(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 408 424 +TeXDict begin 408 423 bop 515 203 a Fs(INDEX)2402 b(408)p +515 236 2865 4 v 681 523 a Fq(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(140)515 623 y(PRIoPTR)681 722 y(a)n(vr_in)n(tt)n(yp)r(es,)g(140)515 +822 y(PRIu16)681 922 y(a)n(vr_in)n(tt)n(yp)r(es,)g(140)515 +1021 y(PRIu32)681 1121 y(a)n(vr_in)n(tt)n(yp)r(es,)g(140)515 +1220 y(PRIu8)681 1320 y(a)n(vr_in)n(tt)n(yp)r(es,)g(140)515 +1420 y(PRIuF)-9 b(AST16)681 1519 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(140)515 1619 y(PRIuF)-9 b(AST32)681 1719 y(a)n(vr_in)n(tt)n(yp)r(es,) +26 b(140)515 1818 y(PRIuF)-9 b(AST8)681 1918 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(140)515 2017 y(PRIuLEAST16)681 2117 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(140)515 2217 y(PRIuLEAST32)681 2316 y(a)n(vr_in)n(tt)n(yp)r(es,) +g(140)515 2416 y(PRIuLEAST8)681 2516 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141) +515 2615 y(PRIuPTR)681 2715 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141)515 +2814 y(PRIX16)681 2914 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141)515 +3014 y(PRIx16)681 3113 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141)515 +3213 y(PRIX32)681 3313 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141)515 +3412 y(PRIx32)681 3512 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141)515 +3611 y(PRIX8)681 3711 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141)515 +3811 y(PRIx8)681 3910 y(a)n(vr_in)n(tt)n(yp)r(es,)g(141)515 +4010 y(PRIXF)-9 b(AST16)681 4110 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(141)515 4209 y(PRIxF)-9 b(AST16)681 4309 y(a)n(vr_in)n(tt)n(yp)r(es,) +26 b(141)515 4408 y(PRIXF)-9 b(AST32)681 4508 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(141)515 4608 y(PRIxF)-9 b(AST32)681 4707 y(a)n(vr_in)n(tt)n +(yp)r(es,)26 b(142)515 4807 y(PRIXF)-9 b(AST8)681 4907 +y(a)n(vr_in)n(tt)n(yp)r(es,)26 b(142)515 5006 y(PRIxF)-9 +b(AST8)2154 523 y(a)n(vr_in)n(tt)n(yp)r(es,)26 b(142)1988 +623 y(PRIXLEAST16)2154 722 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +822 y(PRIxLEAST16)2154 922 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +1021 y(PRIXLEAST32)2154 1121 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +1220 y(PRIxLEAST32)2154 1320 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +1420 y(PRIXLEAST8)2154 1519 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +1619 y(PRIxLEAST8)2154 1719 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +1818 y(PRIXPTR)2154 1918 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +2017 y(PRIxPTR)2154 2117 y(a)n(vr_in)n(tt)n(yp)r(es,)g(142)1988 +2217 y(prog_c)n(har)2154 2316 y(a)n(vr_pgmspace,)f(263)1988 +2416 y(prog_in)n(t16_t)2154 2516 y(a)n(vr_pgmspace,)g(263)1988 +2615 y(prog_in)n(t32_t)2154 2715 y(a)n(vr_pgmspace,)g(263)1988 +2814 y(prog_in)n(t64_t)2154 2914 y(a)n(vr_pgmspace,)g(263)1988 +3014 y(prog_in)n(t8_t)2154 3113 y(a)n(vr_pgmspace,)g(264)1988 +3213 y(prog_uc)n(har)2154 3313 y(a)n(vr_pgmspace,)g(264)1988 +3412 y(prog_uin)n(t16_t)2154 3512 y(a)n(vr_pgmspace,)g(264)1988 +3611 y(prog_uin)n(t32_t)2154 3711 y(a)n(vr_pgmspace,)g(264)1988 +3811 y(prog_uin)n(t64_t)2154 3910 y(a)n(vr_pgmspace,)g(264)1988 +4010 y(prog_uin)n(t8_t)2154 4110 y(a)n(vr_pgmspace,)g(264)1988 +4209 y(prog_v)n(oid)2154 4309 y(a)n(vr_pgmspace,)g(264)1988 +4408 y(PR)n(OGMEM)2154 4508 y(a)n(vr_pgmspace,)g(263)1988 +4608 y(PSTR)2154 4707 y(a)n(vr_pgmspace,)g(263)1988 4807 +y(PTRDIFF_MAX)2154 4907 y(a)n(vr_stdin)n(t,)h(162)1988 +5006 y(PTRDIFF_MIN)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 409 425 +TeXDict begin 409 424 bop 515 203 a Fs(INDEX)2402 b(409)p +515 236 2865 4 v 681 523 a Fq(a)n(vr_stdin)n(t,)26 b(162)515 +623 y(putc)681 722 y(a)n(vr_stdio,)f(174)515 822 y(putc)n(har)681 +922 y(a)n(vr_stdio,)g(174)515 1021 y(puts)681 1121 y(a)n(vr_stdio,)g +(179)515 1220 y(puts_P)681 1320 y(a)n(vr_stdio,)g(179)515 +1503 y(qsort)681 1602 y(a)n(vr_stdlib,)h(194)515 1702 +y(quot)681 1802 y(div_t,)h(349)681 1901 y(ldiv_t,)g(350)515 +2084 y(rand)681 2183 y(a)n(vr_stdlib,)f(194)515 2283 +y(RAND_MAX)681 2383 y(a)n(vr_stdlib,)g(189)515 2482 y(rand_r)681 +2582 y(a)n(vr_stdlib,)g(195)515 2682 y(random)681 2781 +y(a)n(vr_stdlib,)g(195)515 2881 y(RANDOM_MAX)681 2980 +y(a)n(vr_stdlib,)g(189)515 3080 y(random_r)681 3180 y(a)n(vr_stdlib,)g +(195)515 3279 y(reallo)r(c)681 3379 y(a)n(vr_stdlib,)g(195)515 +3479 y(rem)681 3578 y(div_t,)h(349)681 3678 y(ldiv_t,)g(350)515 +3778 y(reti)681 3877 y(a)n(vr_in)n(terrupts,)e(253)515 +3977 y(round)681 4076 y(a)n(vr_math,)h(152)515 4259 y(sbi)681 +4359 y(deprecated_items,)g(305)515 4458 y(scanf)681 4558 +y(a)n(vr_stdio,)f(179)515 4658 y(scanf_P)681 4757 y(a)n(vr_stdio,)g +(179)515 4857 y(SCNd16)681 4956 y(a)n(vr_in)n(tt)n(yp)r(es,)h(143)1988 +523 y(SCNd32)2154 623 y(a)n(vr_in)n(tt)n(yp)r(es,)g(143)1988 +722 y(SCNdF)-9 b(AST16)2154 822 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(143)1988 922 y(SCNdF)-9 b(AST32)2154 1021 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(143)1988 1121 y(SCNdLEAST16)2154 1220 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(143)1988 1320 y(SCNdLEAST32)2154 1420 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(143)1988 1519 y(SCNdPTR)2154 1619 y(a)n(vr_in)n(tt)n(yp)r(es,)g +(143)1988 1719 y(SCNi16)2154 1818 y(a)n(vr_in)n(tt)n(yp)r(es,)g(143) +1988 1918 y(SCNi32)2154 2017 y(a)n(vr_in)n(tt)n(yp)r(es,)g(143)1988 +2117 y(SCNiF)-9 b(AST16)2154 2217 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(143)1988 2316 y(SCNiF)-9 b(AST32)2154 2416 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(143)1988 2516 y(SCNiLEAST16)2154 2615 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(144)1988 2715 y(SCNiLEAST32)2154 2814 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(144)1988 2914 y(SCNiPTR)2154 3014 y(a)n(vr_in)n(tt)n(yp)r(es,)g +(144)1988 3113 y(SCNo16)2154 3213 y(a)n(vr_in)n(tt)n(yp)r(es,)g(144) +1988 3313 y(SCNo32)2154 3412 y(a)n(vr_in)n(tt)n(yp)r(es,)g(144)1988 +3512 y(SCNoF)-9 b(AST16)2154 3611 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(144)1988 3711 y(SCNoF)-9 b(AST32)2154 3811 y(a)n(vr_in)n(tt)n(yp)r +(es,)26 b(144)1988 3910 y(SCNoLEAST16)2154 4010 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(144)1988 4110 y(SCNoLEAST32)2154 4209 y(a)n(vr_in)n(tt)n(yp)r +(es,)g(144)1988 4309 y(SCNoPTR)2154 4408 y(a)n(vr_in)n(tt)n(yp)r(es,)g +(144)1988 4508 y(SCNu16)2154 4608 y(a)n(vr_in)n(tt)n(yp)r(es,)g(144) +1988 4707 y(SCNu32)2154 4807 y(a)n(vr_in)n(tt)n(yp)r(es,)g(145)1988 +4907 y(SCNuF)-9 b(AST16)2154 5006 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(145)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 410 426 +TeXDict begin 410 425 bop 515 203 a Fs(INDEX)2402 b(410)p +515 236 2865 4 v 515 523 a Fq(SCNuF)-9 b(AST32)681 623 +y(a)n(vr_in)n(tt)n(yp)r(es,)26 b(145)515 722 y(SCNuLEAST16)681 +822 y(a)n(vr_in)n(tt)n(yp)r(es,)g(145)515 922 y(SCNuLEAST32)681 +1021 y(a)n(vr_in)n(tt)n(yp)r(es,)g(145)515 1121 y(SCNuPTR)681 +1220 y(a)n(vr_in)n(tt)n(yp)r(es,)g(145)515 1320 y(SCNx16)681 +1420 y(a)n(vr_in)n(tt)n(yp)r(es,)g(145)515 1519 y(SCNx32)681 +1619 y(a)n(vr_in)n(tt)n(yp)r(es,)g(145)515 1719 y(SCNxF)-9 +b(AST16)681 1818 y(a)n(vr_in)n(tt)n(yp)r(es,)26 b(145)515 +1918 y(SCNxF)-9 b(AST32)681 2017 y(a)n(vr_in)n(tt)n(yp)r(es,)26 +b(145)515 2117 y(SCNxLEAST16)681 2217 y(a)n(vr_in)n(tt)n(yp)r(es,)g +(145)515 2316 y(SCNxLEAST32)681 2416 y(a)n(vr_in)n(tt)n(yp)r(es,)g(146) +515 2516 y(SCNxPTR)681 2615 y(a)n(vr_in)n(tt)n(yp)r(es,)g(146)515 +2715 y(sei)681 2814 y(a)n(vr_in)n(terrupts,)f(253)515 +2914 y(setbaud.h,)i(376)515 3014 y(setjmp)681 3113 y(long)r(jmp,)h(154) +681 3213 y(setjmp,)g(155)515 3313 y(setjmp.h,)g(376)515 +3412 y(SIG_A)-7 b(TOMIC_MAX)681 3512 y(a)n(vr_stdin)n(t,)26 +b(162)515 3611 y(SIG_A)-7 b(TOMIC_MIN)681 3711 y(a)n(vr_stdin)n(t,)26 +b(162)515 3811 y(SIGNAL)681 3910 y(a)n(vr_in)n(terrupts,)f(253)515 +4010 y(sign)n(bit)681 4110 y(a)n(vr_math,)h(152)515 4209 +y(sin)681 4309 y(a)n(vr_math,)g(152)515 4408 y(sinh)681 +4508 y(a)n(vr_math,)g(152)515 4608 y(SIZE_MAX)681 4707 +y(a)n(vr_stdin)n(t,)g(162)515 4807 y(sleep.h,)h(377)515 +4907 y(sleep_cpu)681 5006 y(a)n(vr_sleep,)e(279)1988 +523 y(sleep_disable)2154 623 y(a)n(vr_sleep,)h(279)1988 +722 y(sleep_enable)2154 822 y(a)n(vr_sleep,)g(279)1988 +922 y(snprin)n(tf)2154 1021 y(a)n(vr_stdio,)g(179)1988 +1121 y(snprin)n(tf_P)2154 1220 y(a)n(vr_stdio,)g(179)1988 +1320 y(sprin)n(tf)2154 1420 y(a)n(vr_stdio,)g(179)1988 +1519 y(sprin)n(tf_P)2154 1619 y(a)n(vr_stdio,)g(179)1988 +1719 y(sqrt)2154 1818 y(a)n(vr_math,)g(152)1988 1918 +y(square)2154 2017 y(a)n(vr_math,)g(153)1988 2117 y(srand)2154 +2217 y(a)n(vr_stdlib,)h(195)1988 2316 y(srandom)2154 +2416 y(a)n(vr_stdlib,)g(195)1988 2516 y(sscanf)2154 2615 +y(a)n(vr_stdio,)f(180)1988 2715 y(sscanf_P)2154 2814 +y(a)n(vr_stdio,)g(180)1988 2914 y(stderr)2154 3014 y(a)n(vr_stdio,)g +(174)1988 3113 y(stdin)2154 3213 y(a)n(vr_stdio,)g(175)1988 +3313 y(stdin)n(t.h,)j(377)1988 3412 y(stdio.h,)f(380)1988 +3512 y(stdlib.h,)h(382)1988 3611 y(stdout)2154 3711 y(a)n(vr_stdio,)d +(175)1988 3811 y(strcasecmp)2154 3910 y(a)n(vr_string,)f(203)1988 +4010 y(strcasecmp.S,)i(385)1988 4110 y(strcasecmp_P)2154 +4209 y(a)n(vr_pgmspace,)e(266)1988 4309 y(strcasecmp_P)-7 +b(.S,)27 b(385)1988 4408 y(strcasestr)2154 4508 y(a)n(vr_string,)e(204) +1988 4608 y(strcasestr.S,)h(385)1988 4707 y(strcasestr_P)2154 +4807 y(a)n(vr_pgmspace,)f(266)1988 4907 y(strcat)2154 +5006 y(a)n(vr_string,)g(204)p 515 5179 V 515 5255 a Fp(Generated)g(on)g +(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g +(b)n(y)g(Do)n(xygen)p eop end +%%Page: 411 427 +TeXDict begin 411 426 bop 515 203 a Fs(INDEX)2402 b(411)p +515 236 2865 4 v 515 523 a Fq(strcat.S,)27 b(385)515 +623 y(strcat_P)681 722 y(a)n(vr_pgmspace,)d(266)515 822 +y(strcat_P)-7 b(.S,)27 b(385)515 922 y(strc)n(hr)681 +1021 y(a)n(vr_string,)e(204)515 1121 y(strc)n(hr.S,)h(385)515 +1220 y(strc)n(hr_P)681 1320 y(a)n(vr_pgmspace,)e(266)515 +1420 y(strc)n(hr_P)-7 b(.S,)26 b(385)515 1519 y(strc)n(hrn)n(ul)681 +1619 y(a)n(vr_string,)f(204)515 1719 y(strc)n(hrn)n(ul.S,)h(385)515 +1818 y(strc)n(hrn)n(ul_P)681 1918 y(a)n(vr_pgmspace,)e(267)515 +2017 y(strc)n(hrn)n(ul_P)-7 b(.S,)26 b(385)515 2117 y(strcmp)681 +2217 y(a)n(vr_string,)f(205)515 2316 y(strcmp.S,)i(385)515 +2416 y(strcmp_P)681 2516 y(a)n(vr_pgmspace,)d(267)515 +2615 y(strcmp_P)-7 b(.S,)27 b(385)515 2715 y(strcp)n(y)681 +2814 y(a)n(vr_string,)e(205)515 2914 y(strcp)n(y)-7 b(.S,)27 +b(385)515 3014 y(strcp)n(y_P)681 3113 y(a)n(vr_pgmspace,)d(267)515 +3213 y(strcp)n(y_P)-7 b(.S,)27 b(385)515 3313 y(strcspn)681 +3412 y(a)n(vr_string,)e(205)515 3512 y(strcspn.S,)i(385)515 +3611 y(strcspn_P)681 3711 y(a)n(vr_pgmspace,)d(268)515 +3811 y(strcspn_P)-7 b(.S,)27 b(385)515 3910 y(strdup)681 +4010 y(a)n(vr_string,)e(206)515 4110 y(strdup.c,)i(385)515 +4209 y(string.h,)g(386)515 4309 y(strlcat)681 4408 y(a)n(vr_string,)e +(206)515 4508 y(strlcat.S,)i(388)515 4608 y(strlcat_P)681 +4707 y(a)n(vr_pgmspace,)d(268)515 4807 y(strlcat_P)-7 +b(.S,)27 b(388)515 4907 y(strlcp)n(y)681 5006 y(a)n(vr_string,)e(206) +1988 523 y(strlcp)n(y)-7 b(.S,)27 b(388)1988 623 y(strlcp)n(y_P)2154 +722 y(a)n(vr_pgmspace,)e(268)1988 822 y(strlcp)n(y_P)-7 +b(.S,)27 b(388)1988 922 y(strlen)2154 1021 y(a)n(vr_string,)e(207)1988 +1121 y(strlen.S,)j(388)1988 1220 y(strlen_P)2154 1320 +y(a)n(vr_pgmspace,)d(268)1988 1420 y(strlen_P)-7 b(.S,)28 +b(388)1988 1519 y(strlwr)2154 1619 y(a)n(vr_string,)d(207)1988 +1719 y(strlwr.S,)i(388)1988 1818 y(strncasecmp)2154 1918 +y(a)n(vr_string,)e(207)1988 2017 y(strncasecmp.S,)i(388)1988 +2117 y(strncasecmp_P)2154 2217 y(a)n(vr_pgmspace,)e(269)1988 +2316 y(strncasecmp_P)-7 b(.S,)27 b(388)1988 2416 y(strncat)2154 +2516 y(a)n(vr_string,)e(208)1988 2615 y(strncat.S,)j(388)1988 +2715 y(strncat_P)2154 2814 y(a)n(vr_pgmspace,)d(269)1988 +2914 y(strncat_P)-7 b(.S,)28 b(388)1988 3014 y(strncmp)2154 +3113 y(a)n(vr_string,)d(208)1988 3213 y(strncmp.S,)j(388)1988 +3313 y(strncmp_P)2154 3412 y(a)n(vr_pgmspace,)d(269)1988 +3512 y(strncmp_P)-7 b(.S,)28 b(388)1988 3611 y(strncp)n(y)2154 +3711 y(a)n(vr_string,)d(208)1988 3811 y(strncp)n(y)-7 +b(.S,)27 b(388)1988 3910 y(strncp)n(y_P)2154 4010 y(a)n(vr_pgmspace,)e +(270)1988 4110 y(strncp)n(y_P)-7 b(.S,)28 b(388)1988 +4209 y(strnlen)2154 4309 y(a)n(vr_string,)d(208)1988 +4408 y(strnlen.S,)j(388)1988 4508 y(strnlen_P)2154 4608 +y(a)n(vr_pgmspace,)d(270)1988 4707 y(strnlen_P)-7 b(.S,)28 +b(388)1988 4807 y(strpbrk)2154 4907 y(a)n(vr_string,)d(209)1988 +5006 y(strpbrk.S,)i(388)p 515 5179 V 515 5255 a Fp(Generated)e(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 412 428 +TeXDict begin 412 427 bop 515 203 a Fs(INDEX)2402 b(412)p +515 236 2865 4 v 515 523 a Fq(strpbrk_P)681 623 y(a)n(vr_pgmspace,)24 +b(270)515 722 y(strpbrk_P)-7 b(.S,)27 b(388)515 822 y(strrc)n(hr)681 +922 y(a)n(vr_string,)e(209)515 1021 y(strrc)n(hr.S,)h(388)515 +1121 y(strrc)n(hr_P)681 1220 y(a)n(vr_pgmspace,)e(271)515 +1320 y(strrc)n(hr_P)-7 b(.S,)26 b(388)515 1420 y(strrev)681 +1519 y(a)n(vr_string,)f(209)515 1619 y(strrev.S,)h(388)515 +1719 y(strsep)681 1818 y(a)n(vr_string,)f(210)515 1918 +y(strsep.S,)i(388)515 2017 y(strsep_P)681 2117 y(a)n(vr_pgmspace,)d +(271)515 2217 y(strsep_P)-7 b(.S,)27 b(388)515 2316 y(strspn)681 +2416 y(a)n(vr_string,)e(210)515 2516 y(strspn.S,)i(388)515 +2615 y(strspn_P)681 2715 y(a)n(vr_pgmspace,)d(271)515 +2814 y(strspn_P)-7 b(.S,)27 b(388)515 2914 y(strstr)681 +3014 y(a)n(vr_string,)e(210)515 3113 y(strstr.S,)i(388)515 +3213 y(strstr_P)681 3313 y(a)n(vr_pgmspace,)d(271)515 +3412 y(strstr_P)-7 b(.S,)27 b(388)515 3512 y(strto)r(d)681 +3611 y(a)n(vr_stdlib,)f(196)515 3711 y(strtok)681 3811 +y(a)n(vr_string,)f(210)515 3910 y(strtok.c,)i(388)515 +4010 y(strtok_r)681 4110 y(a)n(vr_string,)e(211)515 4209 +y(strtok_r.S,)h(389)515 4309 y(strtol)681 4408 y(a)n(vr_stdlib,)g(196) +515 4508 y(strtoul)681 4608 y(a)n(vr_stdlib,)g(197)515 +4707 y(strupr)681 4807 y(a)n(vr_string,)f(211)515 4907 +y(strupr.S,)i(389)515 5006 y(supp)r(orted)g(devices,)g(2)1988 +523 y(tan)2154 623 y(a)n(vr_math,)f(153)1988 722 y(tanh)2154 +822 y(a)n(vr_math,)g(153)1988 922 y(timer_enable_in)n(t)2154 +1021 y(deprecated_items,)h(305)1988 1121 y(toascii)2154 +1220 y(ct)n(yp)r(e,)h(133)1988 1320 y(tolo)n(w)n(er)2154 +1420 y(ct)n(yp)r(e,)g(133)1988 1519 y(to)r(ols,)f(optional,)g(89)1988 +1619 y(to)r(ols,)g(required,)g(89)1988 1719 y(toupp)r(er)2154 +1818 y(ct)n(yp)r(e,)h(133)1988 1918 y(trunc)2154 2017 +y(a)n(vr_math,)e(153)1988 2117 y(TW_BUS_ERR)n(OR)2154 +2217 y(util_t)n(wi,)i(299)1988 2316 y(TW_MR_ARB_LOST)2154 +2416 y(util_t)n(wi,)g(299)1988 2516 y(TW_MR_D)n(A)-7 +b(T)g(A_A)n(CK)2154 2615 y(util_t)n(wi,)28 b(299)1988 +2715 y(TW_MR_D)n(A)-7 b(T)g(A_NA)n(CK)2154 2814 y(util_t)n(wi,)28 +b(299)1988 2914 y(TW_MR_SLA_A)n(CK)2154 3014 y(util_t)n(wi,)g(299)1988 +3113 y(TW_MR_SLA_NA)n(CK)2154 3213 y(util_t)n(wi,)g(299)1988 +3313 y(TW_MT_ARB_LOST)2154 3412 y(util_t)n(wi,)g(300)1988 +3512 y(TW_MT_D)n(A)-7 b(T)g(A_A)n(CK)2154 3611 y(util_t)n(wi,)28 +b(300)1988 3711 y(TW_MT_D)n(A)-7 b(T)g(A_NA)n(CK)2154 +3811 y(util_t)n(wi,)28 b(300)1988 3910 y(TW_MT_SLA_A)n(CK)2154 +4010 y(util_t)n(wi,)g(300)1988 4110 y(TW_MT_SLA_NA)n(CK)2154 +4209 y(util_t)n(wi,)g(300)1988 4309 y(TW_NO_INF)n(O)2154 +4408 y(util_t)n(wi,)g(300)1988 4508 y(TW_READ)2154 4608 +y(util_t)n(wi,)g(300)1988 4707 y(TW_REP_ST)-7 b(AR)g(T)2154 +4807 y(util_t)n(wi,)28 b(300)1988 4907 y(TW_SR_ARB_LOST_GCALL_-)2320 +5006 y(A)n(CK)p 515 5179 V 515 5255 a Fp(Generated)d(on)g(W)-6 +b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g +(Do)n(xygen)p eop end +%%Page: 413 429 +TeXDict begin 413 428 bop 515 203 a Fs(INDEX)2402 b(413)p +515 236 2865 4 v 681 523 a Fq(util_t)n(wi,)28 b(300)515 +623 y(TW_SR_ARB_LOST_SLA_A)n(CK)681 722 y(util_t)n(wi,)g(300)515 +822 y(TW_SR_D)n(A)-7 b(T)g(A_A)n(CK)681 922 y(util_t)n(wi,)28 +b(300)515 1021 y(TW_SR_D)n(A)-7 b(T)g(A_NA)n(CK)681 1121 +y(util_t)n(wi,)28 b(301)515 1220 y(TW_SR_GCALL_A)n(CK)681 +1320 y(util_t)n(wi,)g(301)515 1420 y(TW_SR_GCALL_D)n(A)-7 +b(T)g(A_A)n(CK)681 1519 y(util_t)n(wi,)28 b(301)515 1619 +y(TW_SR_GCALL_D)n(A)-7 b(T)g(A_NA)n(CK)681 1719 y(util_t)n(wi,)28 +b(301)515 1818 y(TW_SR_SLA_A)n(CK)681 1918 y(util_t)n(wi,)g(301)515 +2017 y(TW_SR_STOP)681 2117 y(util_t)n(wi,)g(301)515 2217 +y(TW_ST_ARB_LOST_SLA_A)n(CK)681 2316 y(util_t)n(wi,)g(301)515 +2416 y(TW_ST_D)n(A)-7 b(T)g(A_A)n(CK)681 2516 y(util_t)n(wi,)28 +b(301)515 2615 y(TW_ST_D)n(A)-7 b(T)g(A_NA)n(CK)681 2715 +y(util_t)n(wi,)28 b(301)515 2814 y(TW_ST_LAST_D)n(A)-7 +b(T)g(A)681 2914 y(util_t)n(wi,)28 b(301)515 3014 y(TW_ST_SLA_A)n(CK) +681 3113 y(util_t)n(wi,)g(301)515 3213 y(TW_ST)-7 b(AR)g(T)681 +3313 y(util_t)n(wi,)28 b(302)515 3412 y(TW_ST)-7 b(A)g(TUS)681 +3512 y(util_t)n(wi,)28 b(302)515 3611 y(TW_ST)-7 b(A)g(TUS_MASK)681 +3711 y(util_t)n(wi,)28 b(302)515 3811 y(TW_WRITE)681 +3910 y(util_t)n(wi,)g(302)515 4010 y(t)n(wi.h,)g(389)515 +4193 y(UBRR_V)-9 b(ALUE)681 4292 y(util_setbaud,)27 b(297)515 +4392 y(UBRRH_V)-9 b(ALUE)681 4491 y(util_setbaud,)27 +b(297)515 4591 y(UBRRL_V)-9 b(ALUE)681 4691 y(util_setbaud,)27 +b(297)515 4790 y(UINT16_C)681 4890 y(a)n(vr_stdin)n(t,)f(162)515 +4990 y(UINT16_MAX)2154 523 y(a)n(vr_stdin)n(t,)g(162)1988 +623 y(uin)n(t16_t)2154 722 y(a)n(vr_stdin)n(t,)g(166)1988 +822 y(UINT32_C)2154 922 y(a)n(vr_stdin)n(t,)g(163)1988 +1021 y(UINT32_MAX)2154 1121 y(a)n(vr_stdin)n(t,)g(163)1988 +1220 y(uin)n(t32_t)2154 1320 y(a)n(vr_stdin)n(t,)g(166)1988 +1420 y(UINT64_C)2154 1519 y(a)n(vr_stdin)n(t,)g(163)1988 +1619 y(UINT64_MAX)2154 1719 y(a)n(vr_stdin)n(t,)g(163)1988 +1818 y(uin)n(t64_t)2154 1918 y(a)n(vr_stdin)n(t,)g(166)1988 +2017 y(UINT8_C)2154 2117 y(a)n(vr_stdin)n(t,)g(163)1988 +2217 y(UINT8_MAX)2154 2316 y(a)n(vr_stdin)n(t,)g(163)1988 +2416 y(uin)n(t8_t)2154 2516 y(a)n(vr_stdin)n(t,)g(166)1988 +2615 y(uin)n(t_farptr_t)2154 2715 y(a)n(vr_in)n(tt)n(yp)r(es,)g(146) +1988 2814 y(UINT_F)-9 b(AST16_MAX)2154 2914 y(a)n(vr_stdin)n(t,)26 +b(163)1988 3014 y(uin)n(t_fast16_t)2154 3113 y(a)n(vr_stdin)n(t,)g(166) +1988 3213 y(UINT_F)-9 b(AST32_MAX)2154 3313 y(a)n(vr_stdin)n(t,)26 +b(163)1988 3412 y(uin)n(t_fast32_t)2154 3512 y(a)n(vr_stdin)n(t,)g(166) +1988 3611 y(UINT_F)-9 b(AST64_MAX)2154 3711 y(a)n(vr_stdin)n(t,)26 +b(163)1988 3811 y(uin)n(t_fast64_t)2154 3910 y(a)n(vr_stdin)n(t,)g(166) +1988 4010 y(UINT_F)-9 b(AST8_MAX)2154 4110 y(a)n(vr_stdin)n(t,)26 +b(163)1988 4209 y(uin)n(t_fast8_t)2154 4309 y(a)n(vr_stdin)n(t,)g(166) +1988 4408 y(UINT_LEAST16_MAX)2154 4508 y(a)n(vr_stdin)n(t,)g(164)1988 +4608 y(uin)n(t_least16_t)2154 4707 y(a)n(vr_stdin)n(t,)g(167)1988 +4807 y(UINT_LEAST32_MAX)2154 4907 y(a)n(vr_stdin)n(t,)g(164)1988 +5006 y(uin)n(t_least32_t)p 515 5179 V 515 5255 a Fp(Generated)f(on)g(W) +-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n +(y)g(Do)n(xygen)p eop end +%%Page: 414 430 +TeXDict begin 414 429 bop 515 203 a Fs(INDEX)2402 b(414)p +515 236 2865 4 v 681 523 a Fq(a)n(vr_stdin)n(t,)26 b(167)515 +623 y(UINT_LEAST64_MAX)681 722 y(a)n(vr_stdin)n(t,)g(164)515 +822 y(uin)n(t_least64_t)681 922 y(a)n(vr_stdin)n(t,)g(167)515 +1021 y(UINT_LEAST8_MAX)681 1121 y(a)n(vr_stdin)n(t,)g(164)515 +1220 y(uin)n(t_least8_t)681 1320 y(a)n(vr_stdin)n(t,)g(167)515 +1420 y(UINTMAX_C)681 1519 y(a)n(vr_stdin)n(t,)g(164)515 +1619 y(UINTMAX_MAX)681 1719 y(a)n(vr_stdin)n(t,)g(164)515 +1818 y(uin)n(tmax_t)681 1918 y(a)n(vr_stdin)n(t,)g(167)515 +2017 y(UINTPTR_MAX)681 2117 y(a)n(vr_stdin)n(t,)g(164)515 +2217 y(uin)n(tptr_t)681 2316 y(a)n(vr_stdin)n(t,)g(167)515 +2416 y(ultoa)681 2516 y(a)n(vr_stdlib,)g(197)515 2615 +y(ungetc)681 2715 y(a)n(vr_stdio,)f(180)515 2814 y(USE_2X)681 +2914 y(util_setbaud,)i(298)515 3014 y(Using)g(the)h(standard)f(IO)g +(facilities,)g(336)515 3113 y(util_atomic)681 3213 y(A)-7 +b(TOMIC_BLOCK,)26 b(287)681 3313 y(A)-7 b(TOMIC_F)n(OR)n(CEON,)26 +b(288)681 3412 y(A)-7 b(TOMIC_RESTOREST)g(A)g(TE,)847 +3512 y(288)681 3611 y(NONA)g(TOMIC_BLOCK,)26 b(288)681 +3711 y(NONA)-7 b(TOMIC_F)n(OR)n(CEOFF,)847 3811 y(288)681 +3910 y(NONA)g(TOMIC_-)847 4010 y(RESTOREST)g(A)g(TE,)29 +b(289)515 4110 y(util_crc)681 4209 y(_crc16_up)r(date,)c(290)681 +4309 y(_crc_ccitt_up)r(date,)h(290)681 4408 y(_crc_ibutton_up)r(date,)g +(291)681 4508 y(_crc_xmo)r(dem_up)r(date,)g(292)515 4608 +y(util_dela)n(y)681 4707 y(_dela)n(y_ms,)g(293)681 4807 +y(_dela)n(y_us,)g(293)515 4907 y(util_dela)n(y_basic)681 +5006 y(_dela)n(y_lo)r(op_1,)e(294)2154 523 y(_dela)n(y_lo)r(op_2,)h +(294)1988 623 y(util_parit)n(y)2154 722 y(parit)n(y_ev)n(en_bit,)h(295) +1988 822 y(util_setbaud)2154 922 y(BA)n(UD_TOL,)h(297)2154 +1021 y(UBRR_V)-9 b(ALUE,)29 b(297)2154 1121 y(UBRRH_V)-9 +b(ALUE,)29 b(297)2154 1220 y(UBRRL_V)-9 b(ALUE,)29 b(297)2154 +1320 y(USE_2X,)f(298)1988 1420 y(util_t)n(wi)2154 1519 +y(TW_BUS_ERR)n(OR,)g(299)2154 1619 y(TW_MR_ARB_LOST,)f(299)2154 +1719 y(TW_MR_D)n(A)-7 b(T)g(A_A)n(CK,)27 b(299)2154 1818 +y(TW_MR_D)n(A)-7 b(T)g(A_NA)n(CK,)28 b(299)2154 1918 +y(TW_MR_SLA_A)n(CK,)f(299)2154 2017 y(TW_MR_SLA_NA)n(CK,)g(299)2154 +2117 y(TW_MT_ARB_LOST,)g(300)2154 2217 y(TW_MT_D)n(A)-7 +b(T)g(A_A)n(CK,)27 b(300)2154 2316 y(TW_MT_D)n(A)-7 b(T)g(A_NA)n(CK,)28 +b(300)2154 2416 y(TW_MT_SLA_A)n(CK,)f(300)2154 2516 y(TW_MT_SLA_NA)n +(CK,)g(300)2154 2615 y(TW_NO_INF)n(O,)g(300)2154 2715 +y(TW_READ,)i(300)2154 2814 y(TW_REP_ST)-7 b(AR)g(T,)29 +b(300)2154 2914 y(TW_SR_ARB_LOST_-)2320 3014 y(GCALL_A)n(CK,)e(300)2154 +3113 y(TW_SR_ARB_LOST_SLA_-)2320 3213 y(A)n(CK,)h(300)2154 +3313 y(TW_SR_D)n(A)-7 b(T)g(A_A)n(CK,)27 b(300)2154 3412 +y(TW_SR_D)n(A)-7 b(T)g(A_NA)n(CK,)28 b(301)2154 3512 +y(TW_SR_GCALL_A)n(CK,)f(301)2154 3611 y(TW_SR_GCALL_D)n(A)-7 +b(T)g(A_-)2320 3711 y(A)n(CK,)28 b(301)2154 3811 y(TW_SR_GCALL_D)n(A)-7 +b(T)g(A_-)2320 3910 y(NA)n(CK,)28 b(301)2154 4010 y(TW_SR_SLA_A)n(CK,)f +(301)2154 4110 y(TW_SR_STOP,)h(301)2154 4209 y(TW_ST_ARB_LOST_SLA_-) +2320 4309 y(A)n(CK,)g(301)2154 4408 y(TW_ST_D)n(A)-7 +b(T)g(A_A)n(CK,)27 b(301)2154 4508 y(TW_ST_D)n(A)-7 b(T)g(A_NA)n(CK,)28 +b(301)2154 4608 y(TW_ST_LAST_D)n(A)-7 b(T)g(A,)28 b(301)2154 +4707 y(TW_ST_SLA_A)n(CK,)f(301)2154 4807 y(TW_ST)-7 b(AR)g(T,)28 +b(302)2154 4907 y(TW_ST)-7 b(A)g(TUS,)29 b(302)2154 5006 +y(TW_ST)-7 b(A)g(TUS_MASK,)28 b(302)p 515 5179 V 515 +5255 a Fp(Generated)d(on)g(W)-6 b(ed)25 b(No)n(v)g(5)g(21:03:06)e(2008) +g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n(xygen)p eop end +%%Page: 415 431 +TeXDict begin 415 430 bop 515 203 a Fs(INDEX)2402 b(415)p +515 236 2865 4 v 681 523 a Fq(TW_WRITE,)28 b(302)515 +623 y(utoa)681 722 y(a)n(vr_stdlib,)e(198)515 905 y(vfprin)n(tf)681 +1005 y(a)n(vr_stdio,)f(180)515 1104 y(vfprin)n(tf_P)681 +1204 y(a)n(vr_stdio,)g(183)515 1303 y(vfscanf)681 1403 +y(a)n(vr_stdio,)g(183)515 1503 y(vfscanf_P)681 1602 y(a)n(vr_stdio,)g +(186)515 1702 y(vprin)n(tf)681 1802 y(a)n(vr_stdio,)g(186)515 +1901 y(vscanf)681 2001 y(a)n(vr_stdio,)g(186)515 2100 +y(vsnprin)n(tf)681 2200 y(a)n(vr_stdio,)g(186)515 2300 +y(vsnprin)n(tf_P)681 2399 y(a)n(vr_stdio,)g(187)515 2499 +y(vsprin)n(tf)681 2599 y(a)n(vr_stdio,)g(187)515 2698 +y(vsprin)n(tf_P)681 2798 y(a)n(vr_stdio,)g(187)515 2980 +y(wdt.h,)j(390)515 3080 y(wdt_disable)681 3180 y(a)n(vr_w)n(atc)n +(hdog,)c(283)515 3279 y(wdt_enable)681 3379 y(a)n(vr_w)n(atc)n(hdog,)g +(283)515 3479 y(wdt_reset)681 3578 y(a)n(vr_w)n(atc)n(hdog,)g(283)515 +3678 y(WDTO_120MS)681 3778 y(a)n(vr_w)n(atc)n(hdog,)g(284)515 +3877 y(WDTO_15MS)681 3977 y(a)n(vr_w)n(atc)n(hdog,)g(284)515 +4076 y(WDTO_1S)681 4176 y(a)n(vr_w)n(atc)n(hdog,)g(284)515 +4276 y(WDTO_250MS)681 4375 y(a)n(vr_w)n(atc)n(hdog,)g(284)515 +4475 y(WDTO_2S)681 4575 y(a)n(vr_w)n(atc)n(hdog,)g(284)515 +4674 y(WDTO_30MS)681 4774 y(a)n(vr_w)n(atc)n(hdog,)g(284)515 +4873 y(WDTO_4S)681 4973 y(a)n(vr_w)n(atc)n(hdog,)g(284)1988 +523 y(WDTO_500MS)2154 623 y(a)n(vr_w)n(atc)n(hdog,)g(285)1988 +722 y(WDTO_60MS)2154 822 y(a)n(vr_w)n(atc)n(hdog,)g(285)1988 +922 y(WDTO_8S)2154 1021 y(a)n(vr_w)n(atc)n(hdog,)g(285)p +515 5179 V 515 5255 a Fp(Generated)h(on)g(W)-6 b(ed)25 +b(No)n(v)g(5)g(21:03:06)e(2008)g(for)i(a)n(vr-lib)r(c)g(b)n(y)g(Do)n +(xygen)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/FAQ.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/FAQ.html new file mode 100644 index 0000000..6988b09 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/FAQ.html @@ -0,0 +1,665 @@ + + + + + avr-libc: Frequently Asked Questions + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Frequently Asked Questions

+FAQ Index

+

+

    +
  1. My program doesn't recognize a variable updated within an interrupt routine
  2. I get "undefined reference to..." for functions like "sin()"
  3. How to permanently bind a variable to a register?
  4. How to modify MCUCR or WDTCR early?
  5. What is all this _BV() stuff about?
  6. Can I use C++ on the AVR?
  7. Shouldn't I initialize all my variables?
  8. Why do some 16-bit timer registers sometimes get trashed?
  9. How do I use a #define'd constant in an asm statement?
  10. Why does the PC randomly jump around when single-stepping through my program in avr-gdb?
  11. How do I trace an assembler file in avr-gdb?
  12. How do I pass an IO port as a parameter to a function?
  13. What registers are used by the C compiler?
  14. How do I put an array of strings completely in ROM?
  15. How to use external RAM?
  16. Which -O flag to use?
  17. How do I relocate code to a fixed address?
  18. My UART is generating nonsense! My ATmega128 keeps crashing! Port F is completely broken!
  19. Why do all my "foo...bar" strings eat up the SRAM?
  20. Why does the compiler compile an 8-bit operation that uses bitwise operators into a 16-bit operation in assembly?
  21. How to detect RAM memory and variable overlap problems?
  22. Is it really impossible to program the ATtinyXX in C?
  23. What is this "clock skew detected" messsage?
  24. Why are (many) interrupt flags cleared by writing a logical 1?
  25. Why have "programmed" fuses the bit value 0?
  26. Which AVR-specific assembler operators are available?
  27. Why are interrupts re-enabled in the middle of writing the stack pointer?
  28. Why are there five different linker scripts?
  29. How to add a raw binary image to linker output?
  30. How do I perform a software reset of the AVR?
  31. I am using floating point math. Why is the compiled code so big? Why does my code not work?
  32. What pitfalls exist when writing reentrant code?
+

+My program doesn't recognize a variable updated within an interrupt routine

+When using the optimizer, in a loop like the following one:

+

uint8_t flag;
+...
+ISR(SOME_vect) {
+  flag = 1;
+}
+...
+
+        while (flag == 0) {
+                ...
+        }
+

+the compiler will typically access flag only once, and optimize further accesses completely away, since its code path analysis shows that nothing inside the loop could change the value of flag anyway. To tell the compiler that this variable could be changed outside the scope of its code path analysis (e. g. from within an interrupt routine), the variable needs to be declared like:

+

volatile uint8_t flag;
+

+Back to FAQ Index.

+I get "undefined reference to..." for functions like "sin()"

+In order to access the mathematical functions that are declared in <math.h>, the linker needs to be told to also link the mathematical library, libm.a.

+Typically, system libraries like libm.a are given to the final C compiler command line that performs the linking step by adding a flag -lm at the end. (That is, the initial lib and the filename suffix from the library are written immediately after a -l flag. So for a libfoo.a library, -lfoo needs to be provided.) This will make the linker search the library in a path known to the system.

+An alternative would be to specify the full path to the libm.a file at the same place on the command line, i. e. after all the object files (*.o). However, since this requires knowledge of where the build system will exactly find those library files, this is deprecated for system libraries.

+Back to FAQ Index.

+How to permanently bind a variable to a register?

+This can be done with

+

register unsigned char counter asm("r3");
+

+Typically, it should be safe to use r2 through r7 that way.

+Registers r8 through r15 can be used for argument passing by the compiler in case many or long arguments are being passed to callees. If this is not the case throughout the entire application, these registers could be used for register variables as well.

+Extreme care should be taken that the entire application is compiled with a consistent set of register-allocated variables, including possibly used library functions.

+See C Names Used in Assembler Code for more details.

+Back to FAQ Index.

+How to modify MCUCR or WDTCR early?

+The method of early initialization (MCUCR, WDTCR or anything else) is different (and more flexible) in the current version. Basically, write a small assembler file which looks like this:

+

;; begin xram.S
+
+#include <avr/io.h>
+
+        .section .init1,"ax",@progbits
+
+        ldi r16,_BV(SRE) | _BV(SRW)
+        out _SFR_IO_ADDR(MCUCR),r16
+
+;; end xram.S
+

+Assemble it, link the resulting xram.o with other files in your program, and this piece of code will be inserted in initialization code, which is run right after reset. See the linker script for comments about the new .initN sections (which one to use, etc.).

+The advantage of this method is that you can insert any initialization code you want (just remember that this is very early startup -- no stack and no __zero_reg__ yet), and no program memory space is wasted if this feature is not used.

+There should be no need to modify linker scripts anymore, except for some very special cases. It is best to leave __stack at its default value (end of internal SRAM -- faster, and required on some devices like ATmega161 because of errata), and add -Wl,-Tdata,0x801100 to start the data section above the stack.

+For more information on using sections, see Memory Sections. There is also an example for Using Sections in C Code. Note that in C code, any such function would preferrably be placed into section .init3 as the code in .init2 ensures the internal register __zero_reg__ is already cleared.

+Back to FAQ Index.

+What is all this _BV() stuff about?

+When performing low-level output work, which is a very central point in microcontroller programming, it is quite common that a particular bit needs to be set or cleared in some IO register. While the device documentation provides mnemonic names for the various bits in the IO registers, and the AVR device-specific IO definitions reflect these names in definitions for numerical constants, a way is needed to convert a bit number (usually within a byte register) into a byte value that can be assigned directly to the register. However, sometimes the direct bit numbers are needed as well (e. g. in an SBI() instruction), so the definitions cannot usefully be made as byte values in the first place.

+So in order to access a particular bit number as a byte value, use the _BV() macro. Of course, the implementation of this macro is just the usual bit shift (which is done by the compiler anyway, thus doesn't impose any run-time penalty), so the following applies:

+

_BV(3) => 1 << 3 => 0x08
+

+However, using the macro often makes the program better readable.

+"BV" stands for "bit value", in case someone might ask you. :-)

+Example: clock timer 2 with full IO clock (CS2x = 0b001), toggle OC2 output on compare match (COM2x = 0b01), and clear timer on compare match (CTC2 = 1). Make OC2 (PD7) an output.

+

        TCCR2 = _BV(COM20)|_BV(CTC2)|_BV(CS20);
+        DDRD = _BV(PD7);
+

+Back to FAQ Index.

+Can I use C++ on the AVR?

+Basically yes, C++ is supported (assuming your compiler has been configured and compiled to support it, of course). Source files ending in .cc, .cpp or .C will automatically cause the compiler frontend to invoke the C++ compiler. Alternatively, the C++ compiler could be explicitly called by the name avr-c++.

+However, there's currently no support for libstdc++, the standard support library needed for a complete C++ implementation. This imposes a number of restrictions on the C++ programs that can be compiled. Among them are:

+

    +
  • Obviously, none of the C++ related standard functions, classes, and template classes are available.
+

+

    +
  • The operators new and delete are not implemented, attempting to use them will cause the linker to complain about undefined external references. (This could perhaps be fixed.)
+

+

    +
  • Some of the supplied include files are not C++ safe, i. e. they need to be wrapped into
     extern "C" { . . . } 
    +
    (This could certainly be fixed, too.)
+

+

    +
  • Exceptions are not supported. Since exceptions are enabled by default in the C++ frontend, they explicitly need to be turned off using -fno-exceptions in the compiler options. Failing this, the linker will complain about an undefined external reference to __gxx_personality_sj0.
+

+Constructors and destructors are supported though, including global ones.

+When programming C++ in space- and runtime-sensitive environments like microcontrollers, extra care should be taken to avoid unwanted side effects of the C++ calling conventions like implied copy constructors that could be called upon function invocation etc. These things could easily add up into a considerable amount of time and program memory wasted. Thus, casual inspection of the generated assembler code (using the -S compiler option) seems to be warranted.

+Back to FAQ Index.

+Shouldn't I initialize all my variables?

+Global and static variables are guaranteed to be initialized to 0 by the C standard. avr-gcc does this by placing the appropriate code into section .init4 (see The .initN Sections). With respect to the standard, this sentence is somewhat simplified (because the standard allows for machines where the actual bit pattern used differs from all bits being 0), but for the AVR target, in general, all integer-type variables are set to 0, all pointers to a NULL pointer, and all floating-point variables to 0.0.

+As long as these variables are not initialized (i. e. they don't have an equal sign and an initialization expression to the right within the definition of the variable), they go into the .bss section of the file. This section simply records the size of the variable, but otherwise doesn't consume space, neither within the object file nor within flash memory. (Of course, being a variable, it will consume space in the target's SRAM.)

+In contrast, global and static variables that have an initializer go into the .data section of the file. This will cause them to consume space in the object file (in order to record the initializing value), and in the flash ROM of the target device. The latter is needed since the flash ROM is the only way that the compiler can tell the target device the value this variable is going to be initialized to.

+Now if some programmer "wants to make doubly sure" their variables really get a 0 at program startup, and adds an initializer just containing 0 on the right-hand side, they waste space. While this waste of space applies to virtually any platform C is implemented on, it's usually not noticeable on larger machines like PCs, while the waste of flash ROM storage can be very painful on a small microcontroller like the AVR.

+So in general, variables should only be explicitly initialized if the initial value is non-zero.

+

Note:
Recent versions of GCC are now smart enough to detect this situation, and revert variables that are explicitly initialized to 0 to the .bss section. Still, other compilers might not do that optimization, and as the C standard guarantees the initialization, it is safe to rely on it.
+Back to FAQ Index.

+Why do some 16-bit timer registers sometimes get trashed?

+Some of the timer-related 16-bit IO registers use a temporary register (called TEMP in the Atmel datasheet) to guarantee an atomic access to the register despite the fact that two separate 8-bit IO transfers are required to actually move the data. Typically, this includes access to the current timer/counter value register (TCNTn), the input capture register (ICRn), and write access to the output compare registers (OCRnM). Refer to the actual datasheet for each device's set of registers that involves the TEMP register.

+When accessing one of the registers that use TEMP from the main application, and possibly any other one from within an interrupt routine, care must be taken that no access from within an interrupt context could clobber the TEMP register data of an in-progress transaction that has just started elsewhere.

+To protect interrupt routines against other interrupt routines, it's usually best to use the ISR() macro when declaring the interrupt function, and to ensure that interrupts are still disabled when accessing those 16-bit timer registers.

+Within the main program, access to those registers could be encapsulated in calls to the cli() and sei() macros. If the status of the global interrupt flag before accessing one of those registers is uncertain, something like the following example code can be used.

+

uint16_t
+read_timer1(void)
+{
+        uint8_t sreg;
+        uint16_t val;
+
+        sreg = SREG;
+        cli();
+        val = TCNT1;
+        SREG = sreg;
+
+        return val;
+}
+

+Back to FAQ Index.

+How do I use a #define'd constant in an asm statement?

+So you tried this:

+

asm volatile("sbi 0x18,0x07;");
+

+Which works. When you do the same thing but replace the address of the port by its macro name, like this:

+

asm volatile("sbi PORTB,0x07;");
+

+you get a compilation error: "Error: constant value required".

+PORTB is a precompiler definition included in the processor specific file included in avr/io.h. As you may know, the precompiler will not touch strings and PORTB, instead of 0x18, gets passed to the assembler. One way to avoid this problem is:

+

asm volatile("sbi %0, 0x07" : "I" (_SFR_IO_ADDR(PORTB)):);
+

+

Note:
For C programs, rather use the standard C bit operators instead, so the above would be expressed as PORTB |= (1 << 7). The optimizer will take care to transform this into a single SBI instruction, assuming the operands allow for this.
+Back to FAQ Index.

+Why does the PC randomly jump around when single-stepping through my program in avr-gdb?

+When compiling a program with both optimization (-O) and debug information (-g) which is fortunately possible in avr-gcc, the code watched in the debugger is optimized code. While it is not guaranteed, very often this code runs with the exact same optimizations as it would run without the -g switch.

+This can have unwanted side effects. Since the compiler is free to reorder code execution as long as the semantics do not change, code is often rearranged in order to make it possible to use a single branch instruction for conditional operations. Branch instructions can only cover a short range for the target PC (-63 through +64 words from the current PC). If a branch instruction cannot be used directly, the compiler needs to work around it by combining a skip instruction together with a relative jump (rjmp) instruction, which will need one additional word of ROM.

+Another side effect of optimzation is that variable usage is restricted to the area of code where it is actually used. So if a variable was placed in a register at the beginning of some function, this same register can be re-used later on if the compiler notices that the first variable is no longer used inside that function, even though the variable is still in lexical scope. When trying to examine the variable in avr-gdb, the displayed result will then look garbled.

+So in order to avoid these side effects, optimization can be turned off while debugging. However, some of these optimizations might also have the side effect of uncovering bugs that would otherwise not be obvious, so it must be noted that turning off optimization can easily change the bug pattern. In most cases, you are better off leaving optimizations enabled while debugging.

+Back to FAQ Index.

+How do I trace an assembler file in avr-gdb?

+When using the -g compiler option, avr-gcc only generates line number and other debug information for C (and C++) files that pass the compiler. Functions that don't have line number information will be completely skipped by a single step command in gdb. This includes functions linked from a standard library, but by default also functions defined in an assembler source file, since the -g compiler switch does not apply to the assembler.

+So in order to debug an assembler input file (possibly one that has to be passed through the C preprocessor), it's the assembler that needs to be told to include line-number information into the output file. (Other debug information like data types and variable allocation cannot be generated, since unlike a compiler, the assembler basically doesn't know about this.) This is done using the (GNU) assembler option --gstabs.

+Example:

+

+  $ avr-as -mmcu=atmega128 --gstabs -o foo.o foo.s
+

+When the assembler is not called directly but through the C compiler frontend (either implicitly by passing a source file ending in .S, or explicitly using -x assembler-with-cpp), the compiler frontend needs to be told to pass the --gstabs option down to the assembler. This is done using -Wa,--gstabs. Please take care to only pass this option when compiling an assembler input file. Otherwise, the assembler code that results from the C compilation stage will also get line number information, which confuses the debugger.

+

Note:
You can also use -Wa,-gstabs since the compiler will add the extra '-' for you.
+Example:

+

+  $ EXTRA_OPTS="-Wall -mmcu=atmega128 -x assembler-with-cpp"
+  $ avr-gcc -Wa,--gstabs ${EXTRA_OPTS} -c -o foo.o foo.S
+

+Also note that the debugger might get confused when entering a piece of code that has a non-local label before, since it then takes this label as the name of a new function that appears to have been entered. Thus, the best practice to avoid this confusion is to only use non-local labels when declaring a new function, and restrict anything else to local labels. Local labels consist just of a number only. References to these labels consist of the number, followed by the letter b for a backward reference, or f for a forward reference. These local labels may be re-used within the source file, references will pick the closest label with the same number and given direction.

+Example:

+

myfunc: push    r16
+        push    r17
+        push    r18
+        push    YL
+        push    YH
+        ...
+        eor     r16, r16        ; start loop
+        ldi     YL, lo8(sometable)
+        ldi     YH, hi8(sometable)
+        rjmp    2f              ; jump to loop test at end
+1:      ld      r17, Y+         ; loop continues here
+        ...
+        breq    1f              ; return from myfunc prematurely
+        ...
+        inc     r16
+2:      cmp     r16, r18
+        brlo    1b              ; jump back to top of loop
+
+1:      pop     YH
+        pop     YL
+        pop     r18
+        pop     r17
+        pop     r16
+        ret
+

+Back to FAQ Index.

+How do I pass an IO port as a parameter to a function?

+Consider this example code:

+

#include <inttypes.h>
+#include <avr/io.h>
+
+void
+set_bits_func_wrong (volatile uint8_t port, uint8_t mask)
+{
+    port |= mask;
+}
+
+void
+set_bits_func_correct (volatile uint8_t *port, uint8_t mask)
+{
+    *port |= mask;
+}
+
+#define set_bits_macro(port,mask) ((port) |= (mask))
+
+int main (void)
+{
+    set_bits_func_wrong (PORTB, 0xaa);
+    set_bits_func_correct (&PORTB, 0x55);
+    set_bits_macro (PORTB, 0xf0);
+
+    return (0);
+}
+

+The first function will generate object code which is not even close to what is intended. The major problem arises when the function is called. When the compiler sees this call, it will actually pass the value of the PORTB register (using an IN instruction), instead of passing the address of PORTB (e.g. memory mapped io addr of 0x38, io port 0x18 for the mega128). This is seen clearly when looking at the disassembly of the call:

+

+    set_bits_func_wrong (PORTB, 0xaa);
+ 10a:   6a ea           ldi     r22, 0xAA       ; 170
+ 10c:   88 b3           in      r24, 0x18       ; 24
+ 10e:   0e 94 65 00     call    0xca
+

+So, the function, once called, only sees the value of the port register and knows nothing about which port it came from. At this point, whatever object code is generated for the function by the compiler is irrelevant. The interested reader can examine the full disassembly to see that the function's body is completely fubar.

+The second function shows how to pass (by reference) the memory mapped address of the io port to the function so that you can read and write to it in the function. Here's the object code generated for the function call:

+

+    set_bits_func_correct (&PORTB, 0x55);
+ 112:   65 e5           ldi     r22, 0x55       ; 85
+ 114:   88 e3           ldi     r24, 0x38       ; 56
+ 116:   90 e0           ldi     r25, 0x00       ; 0
+ 118:   0e 94 7c 00     call    0xf8
+

+You can clearly see that 0x0038 is correctly passed for the address of the io port. Looking at the disassembled object code for the body of the function, we can see that the function is indeed performing the operation we intended:

+

+void
+set_bits_func_correct (volatile uint8_t *port, uint8_t mask)
+{
+  f8:   fc 01           movw    r30, r24
+    *port |= mask;
+  fa:   80 81           ld      r24, Z
+  fc:   86 2b           or      r24, r22
+  fe:   80 83           st      Z, r24
+}
+ 100:   08 95           ret
+

+Notice that we are accessing the io port via the LD and ST instructions.

+The port parameter must be volatile to avoid a compiler warning.

+

Note:
Because of the nature of the IN and OUT assembly instructions, they can not be used inside the function when passing the port in this way. Readers interested in the details should consult the Instruction Set data sheet.
+Finally we come to the macro version of the operation. In this contrived example, the macro is the most efficient method with respect to both execution speed and code size:

+

+    set_bits_macro (PORTB, 0xf0);
+ 11c:   88 b3           in      r24, 0x18       ; 24
+ 11e:   80 6f           ori     r24, 0xF0       ; 240
+ 120:   88 bb           out     0x18, r24       ; 24
+

+Of course, in a real application, you might be doing a lot more in your function which uses a passed by reference io port address and thus the use of a function over a macro could save you some code space, but still at a cost of execution speed.

+Care should be taken when such an indirect port access is going to one of the 16-bit IO registers where the order of write access is critical (like some timer registers). All versions of avr-gcc up to 3.3 will generate instructions that use the wrong access order in this situation (since with normal memory operands where the order doesn't matter, this sometimes yields shorter code).

+See http://mail.nongnu.org/archive/html/avr-libc-dev/2003-01/msg00044.html for a possible workaround.

+avr-gcc versions after 3.3 have been fixed in a way where this optimization will be disabled if the respective pointer variable is declared to be volatile, so the correct behaviour for 16-bit IO ports can be forced that way.

+Back to FAQ Index.

+What registers are used by the C compiler?

+
    +
  • Data types:
    + char is 8 bits, int is 16 bits, long is 32 bits, long long is 64 bits, float and double are 32 bits (this is the only supported floating point format), pointers are 16 bits (function pointers are word addresses, to allow addressing up to 128K program memory space). There is a -mint8 option (see Options for the C compiler avr-gcc) to make int 8 bits, but that is not supported by avr-libc and violates C standards (int must be at least 16 bits). It may be removed in a future release.
+

+

    +
  • Call-used registers (r18-r27, r30-r31):
    + May be allocated by gcc for local data. You may use them freely in assembler subroutines. Calling C subroutines can clobber any of them - the caller is responsible for saving and restoring.
+

+

    +
  • Call-saved registers (r2-r17, r28-r29):
    + May be allocated by gcc for local data. Calling C subroutines leaves them unchanged. Assembler subroutines are responsible for saving and restoring these registers, if changed. r29:r28 (Y pointer) is used as a frame pointer (points to local data on stack) if necessary. The requirement for the callee to save/preserve the contents of these registers even applies in situations where the compiler assigns them for argument passing.
+

+

    +
  • Fixed registers (r0, r1):
    + Never allocated by gcc for local data, but often used for fixed purposes:
+

+r0 - temporary register, can be clobbered by any C code (except interrupt handlers which save it), may be used to remember something for a while within one piece of assembler code

+r1 - assumed to be always zero in any C code, may be used to remember something for a while within one piece of assembler code, but must then be cleared after use (clr r1). This includes any use of the [f]mul[s[u]] instructions, which return their result in r1:r0. Interrupt handlers save and clear r1 on entry, and restore r1 on exit (in case it was non-zero).

+

    +
  • Function call conventions:
    + Arguments - allocated left to right, r25 to r8. All arguments are aligned to start in even-numbered registers (odd-sized arguments, including char, have one free register above them). This allows making better use of the movw instruction on the enhanced core.
+

+If too many, those that don't fit are passed on the stack.

+Return values: 8-bit in r24 (not r25!), 16-bit in r25:r24, up to 32 bits in r22-r25, up to 64 bits in r18-r25. 8-bit return values are zero/sign-extended to 16 bits by the called function (unsigned char is more efficient than signed char - just clr r25). Arguments to functions with variable argument lists (printf etc.) are all passed on stack, and char is extended to int.

Warning:
There was no such alignment before 2000-07-01, including the old patches for gcc-2.95.2. Check your old assembler subroutines, and adjust them accordingly.
+Back to FAQ Index.

+How do I put an array of strings completely in ROM?

+There are times when you may need an array of strings which will never be modified. In this case, you don't want to waste ram storing the constant strings. The most obvious (and incorrect) thing to do is this:

+

#include <avr/pgmspace.h>
+
+PGM_P array[2] PROGMEM = {
+    "Foo",
+    "Bar"
+};
+
+int main (void)
+{
+    char buf[32];
+    strcpy_P (buf, array[1]);
+    return 0;
+}
+

+The result is not what you want though. What you end up with is the array stored in ROM, while the individual strings end up in RAM (in the .data section).

+To work around this, you need to do something like this:

+

#include <avr/pgmspace.h>
+
+const char foo[] PROGMEM = "Foo";
+const char bar[] PROGMEM = "Bar";
+
+PGM_P array[2] PROGMEM = {
+    foo,
+    bar
+};
+
+int main (void)
+{
+    char buf[32];
+    PGM_P p;
+    int i;
+
+    memcpy_P(&p, &array[i], sizeof(PGM_P));
+    strcpy_P(buf, p);
+    return 0;
+}
+

+Looking at the disassembly of the resulting object file we see that array is in flash as such:

+

00000026 <array>:
+  26:   2e 00           .word   0x002e  ; ????
+  28:   2a 00           .word   0x002a  ; ????
+
+0000002a <bar>:
+  2a:   42 61 72 00                                         Bar.
+
+0000002e <foo>:
+  2e:   46 6f 6f 00                                         Foo.
+

+foo is at addr 0x002e.
+ bar is at addr 0x002a.
+ array is at addr 0x0026.
+

+Then in main we see this:

+

    memcpy_P(&p, &array[i], sizeof(PGM_P));
+  70:   66 0f           add     r22, r22
+  72:   77 1f           adc     r23, r23
+  74:   6a 5d           subi    r22, 0xDA       ; 218
+  76:   7f 4f           sbci    r23, 0xFF       ; 255
+  78:   42 e0           ldi     r20, 0x02       ; 2
+  7a:   50 e0           ldi     r21, 0x00       ; 0
+  7c:   ce 01           movw    r24, r28
+  7e:   81 96           adiw    r24, 0x21       ; 33
+  80:   08 d0           rcall   .+16            ; 0x92
+

+This code reads the pointer to the desired string from the ROM table array into a register pair.

+The value of i (in r22:r23) is doubled to accomodate for the word offset required to access array[], then the address of array (0x26) is added, by subtracting the negated address (0xffda). The address of variable p is computed by adding its offset within the stack frame (33) to the Y pointer register, and memcpy_P is called.

+

    strcpy_P(buf, p);
+  82:   69 a1           ldd     r22, Y+33       ; 0x21
+  84:   7a a1           ldd     r23, Y+34       ; 0x22
+  86:   ce 01           movw    r24, r28
+  88:   01 96           adiw    r24, 0x01       ; 1
+  8a:   0c d0           rcall   .+24            ; 0xa4
+

+This will finally copy the ROM string into the local buffer buf.

+Variable p (located at Y+33) is read, and passed together with the address of buf (Y+1) to strcpy_P. This will copy the string from ROM to buf.

+Note that when using a compile-time constant index, omitting the first step (reading the pointer from ROM via memcpy_P) usually remains unnoticed, since the compiler would then optimize the code for accessing array at compile-time.

+Back to FAQ Index.

+How to use external RAM?

+Well, there is no universal answer to this question; it depends on what the external RAM is going to be used for.

+Basically, the bit SRE (SRAM enable) in the MCUCR register needs to be set in order to enable the external memory interface. Depending on the device to be used, and the application details, further registers affecting the external memory operation like XMCRA and XMCRB, and/or further bits in MCUCR might be configured. Refer to the datasheet for details.

+If the external RAM is going to be used to store the variables from the C program (i. e., the .data and/or .bss segment) in that memory area, it is essential to set up the external memory interface early during the device initialization so the initialization of these variable will take place. Refer to How to modify MCUCR or WDTCR early? for a description how to do this using few lines of assembler code, or to the chapter about memory sections for an example written in C.

+The explanation of malloc() contains a discussion about the use of internal RAM vs. external RAM in particular with respect to the various possible locations of the heap (area reserved for malloc()). It also explains the linker command-line options that are required to move the memory regions away from their respective standard locations in internal RAM.

+Finally, if the application simply wants to use the additional RAM for private data storage kept outside the domain of the C compiler (e. g. through a char * variable initialized directly to a particular address), it would be sufficient to defer the initialization of the external RAM interface to the beginning of main(), so no tweaking of the .init3 section is necessary. The same applies if only the heap is going to be located there, since the application start-up code does not affect the heap.

+It is not recommended to locate the stack in external RAM. In general, accessing external RAM is slower than internal RAM, and errata of some AVR devices even prevent this configuration from working properly at all.

+Back to FAQ Index.

+Which -O flag to use?

+There's a common misconception that larger numbers behind the -O option might automatically cause "better" optimization. First, there's no universal definition for "better", with optimization often being a speed vs. code size tradeoff. See the detailed discussion for which option affects which part of the code generation.

+A test case was run on an ATmega128 to judge the effect of compiling the library itself using different optimization levels. The following table lists the results. The test case consisted of around 2 KB of strings to sort. Test #1 used qsort() using the standard library strcmp(), test #2 used a function that sorted the strings by their size (thus had two calls to strlen() per invocation).

+When comparing the resulting code size, it should be noted that a floating point version of fvprintf() was linked into the binary (in order to print out the time elapsed) which is entirely not affected by the different optimization levels, and added about 2.5 KB to the code.

+ + + + + + + + + + + +
Optimization flags Size of .text Time for test #1 Time for test #2
-O3 6898 903 µs 19.7 ms
-O2 6666 972 µs 20.1 ms
-Os 6618 955 µs 20.1 ms
-Os -mcall-prologues 6474 972 µs 20.1 ms
+

+(The difference between 955 µs and 972 µs was just a single timer-tick, so take this with a grain of salt.)

+So generally, it seems -Os -mcall-prologues is the most universal "best" optimization level. Only applications that need to get the last few percent of speed benefit from using -O3.

+Back to FAQ Index.

+How do I relocate code to a fixed address?

+First, the code should be put into a new named section. This is done with a section attribute:

+

__attribute__ ((section (".bootloader")))
+

+In this example, .bootloader is the name of the new section. This attribute needs to be placed after the prototype of any function to force the function into the new section.

+

void boot(void) __attribute__ ((section (".bootloader")));
+

+To relocate the section to a fixed address the linker flag --section-start is used. This option can be passed to the linker using the -Wl compiler option:

+

-Wl,--section-start=.bootloader=0x1E000
+

+The name after section-start is the name of the section to be relocated. The number after the section name is the beginning address of the named section.

+Back to FAQ Index.

+My UART is generating nonsense! My ATmega128 keeps crashing! Port F is completely broken!

+Well, certain odd problems arise out of the situation that the AVR devices as shipped by Atmel often come with a default fuse bit configuration that doesn't match the user's expectations. Here is a list of things to care for:

+

    +
  • All devices that have an internal RC oscillator ship with the fuse enabled that causes the device to run off this oscillator, instead of an external crystal. This often remains unnoticed until the first attempt is made to use something critical in timing, like UART communication.
  • The ATmega128 ships with the fuse enabled that turns this device into ATmega103 compatibility mode. This means that some ports are not fully usable, and in particular that the internal SRAM is located at lower addresses. Since by default, the stack is located at the top of internal SRAM, a program compiled for an ATmega128 running on such a device will immediately crash upon the first function call (or rather, upon the first function return).
  • Devices with a JTAG interface have the JTAGEN fuse programmed by default. This will make the respective port pins that are used for the JTAG interface unavailable for regular IO.
+

+Back to FAQ Index.

+Why do all my "foo...bar" strings eat up the SRAM?

+By default, all strings are handled as all other initialized variables: they occupy RAM (even though the compiler might warn you when it detects write attempts to these RAM locations), and occupy the same amount of flash ROM so they can be initialized to the actual string by startup code. The compiler can optimize multiple identical strings into a single one, but obviously only for one compilation unit (i. e., a single C source file).

+That way, any string literal will be a valid argument to any C function that expects a const char * argument.

+Of course, this is going to waste a lot of SRAM. In Program Space String Utilities, a method is described how such constant data can be moved out to flash ROM. However, a constant string located in flash ROM is no longer a valid argument to pass to a function that expects a const char *-type string, since the AVR processor needs the special instruction LPM to access these strings. Thus, separate functions are needed that take this into account. Many of the standard C library functions have equivalents available where one of the string arguments can be located in flash ROM. Private functions in the applications need to handle this, too. For example, the following can be used to implement simple debugging messages that will be sent through a UART:

+

#include <inttypes.h>
+#include <avr/io.h>
+#include <avr/pgmspace.h>
+
+int
+uart_putchar(char c)
+{
+  if (c == '\n')
+    uart_putchar('\r');
+  loop_until_bit_is_set(USR, UDRE);
+  UDR = c;
+  return 0; /* so it could be used for fdevopen(), too */
+}
+
+void
+debug_P(const char *addr)
+{
+  char c;
+
+  while ((c = pgm_read_byte(addr++)))
+    uart_putchar(c);
+}
+
+int
+main(void)
+{
+  ioinit(); /* initialize UART, ... */
+  debug_P(PSTR("foo was here\n"));
+  return 0;
+}
+

+

Note:
By convention, the suffix _P to the function name is used as an indication that this function is going to accept a "program-space string". Note also the use of the PSTR() macro.
+Back to FAQ Index.

+Why does the compiler compile an 8-bit operation that uses bitwise operators into a 16-bit operation in assembly?

+Bitwise operations in Standard C will automatically promote their operands to an int, which is (by default) 16 bits in avr-gcc.

+To work around this use typecasts on the operands, including literals, to declare that the values are to be 8 bit operands.

+This may be especially important when clearing a bit:

+

var &= ~mask;  /* wrong way! */
+

+The bitwise "not" operator (~) will also promote the value in mask to an int. To keep it an 8-bit value, typecast before the "not" operator:

+

var &= (unsigned char)~mask;
+

+Back to FAQ Index.

+How to detect RAM memory and variable overlap problems?

+You can simply run avr-nm on your output (ELF) file. Run it with the -n option, and it will sort the symbols numerically (by default, they are sorted alphabetically).

+Look for the symbol _end, that's the first address in RAM that is not allocated by a variable. (avr-gcc internally adds 0x800000 to all data/bss variable addresses, so please ignore this offset.) Then, the run-time initialization code initializes the stack pointer (by default) to point to the last avaialable address in (internal) SRAM. Thus, the region between _end and the end of SRAM is what is available for stack. (If your application uses malloc(), which e. g. also can happen inside printf(), the heap for dynamic memory is also located there. See Memory Areas and Using malloc().)

+The amount of stack required for your application cannot be determined that easily. For example, if you recursively call a function and forget to break that recursion, the amount of stack required is infinite. :-) You can look at the generated assembler code (avr-gcc ... -S), there's a comment in each generated assembler file that tells you the frame size for each generated function. That's the amount of stack required for this function, you have to add up that for all functions where you know that the calls could be nested.

+Back to FAQ Index.

+Is it really impossible to program the ATtinyXX in C?

+While some small AVRs are not directly supported by the C compiler since they do not have a RAM-based stack (and some do not even have RAM at all), it is possible anyway to use the general-purpose registers as a RAM replacement since they are mapped into the data memory region.

+Bruce D. Lightner wrote an excellent description of how to do this, and offers this together with a toolkit on his web page:

+http://lightner.net/avr/ATtinyAvrGcc.html

+Back to FAQ Index.

+What is this "clock skew detected" messsage?

+It's a known problem of the MS-DOS FAT file system. Since the FAT file system has only a granularity of 2 seconds for maintaining a file's timestamp, and it seems that some MS-DOS derivative (Win9x) perhaps rounds up the current time to the next second when calculating the timestamp of an updated file in case the current time cannot be represented in FAT's terms, this causes a situation where make sees a "file coming from the future".

+Since all make decisions are based on file timestamps, and their dependencies, make warns about this situation.

+Solution: don't use inferior file systems / operating systems. Neither Unix file systems nor HPFS (aka NTFS) do experience that problem.

+Workaround: after saving the file, wait a second before starting make. Or simply ignore the warning. If you are paranoid, execute a make clean all to make sure everything gets rebuilt.

+In networked environments where the files are accessed from a file server, this message can also happen if the file server's clock differs too much from the network client's clock. In this case, the solution is to use a proper time keeping protocol on both systems, like NTP. As a workaround, synchronize the client's clock frequently with the server's clock.

+Back to FAQ Index.

+Why are (many) interrupt flags cleared by writing a logical 1?

+Usually, each interrupt has its own interrupt flag bit in some control register, indicating the specified interrupt condition has been met by representing a logical 1 in the respective bit position. When working with interrupt handlers, this interrupt flag bit usually gets cleared automatically in the course of processing the interrupt, sometimes by just calling the handler at all, sometimes (e. g. for the U[S]ART) by reading a particular hardware register that will normally happen anyway when processing the interrupt.

+From the hardware's point of view, an interrupt is asserted as long as the respective bit is set, while global interrupts are enabled. Thus, it is essential to have the bit cleared before interrupts get re-enabled again (which usually happens when returning from an interrupt handler).

+Only few subsystems require an explicit action to clear the interrupt request when using interrupt handlers. (The notable exception is the TWI interface, where clearing the interrupt indicates to proceed with the TWI bus hardware handshake, so it's never done automatically.)

+However, if no normal interrupt handlers are to be used, or in order to make extra sure any pending interrupt gets cleared before re-activating global interrupts (e. g. an external edge-triggered one), it can be necessary to explicitly clear the respective hardware interrupt bit by software. This is usually done by writing a logical 1 into this bit position. This seems to be illogical at first, the bit position already carries a logical 1 when reading it, so why does writing a logical 1 to it clear the interrupt bit?

+The solution is simple: writing a logical 1 to it requires only a single OUT instruction, and it is clear that only this single interrupt request bit will be cleared. There is no need to perform a read-modify-write cycle (like, an SBI instruction), since all bits in these control registers are interrupt bits, and writing a logical 0 to the remaining bits (as it is done by the simple OUT instruction) will not alter them, so there is no risk of any race condition that might accidentally clear another interrupt request bit. So instead of writing

+

TIFR |= _BV(TOV0); /* wrong! */
+

+simply use

+

TIFR = _BV(TOV0);
+

+Back to FAQ Index.

+Why have "programmed" fuses the bit value 0?

+Basically, fuses are just a bit in a special EEPROM area. For technical reasons, erased E[E]PROM cells have all bits set to the value 1, so unprogrammed fuses also have a logical 1. Conversely, programmed fuse cells read out as bit value 0.

+Back to FAQ Index.

+Which AVR-specific assembler operators are available?

+See Pseudo-ops and operators.

+Back to FAQ Index.

+Why are interrupts re-enabled in the middle of writing the stack pointer?

+When setting up space for local variables on the stack, the compiler generates code like this:

+

/* prologue: frame size=20 */
+        push r28
+        push r29
+        in r28,__SP_L__
+        in r29,__SP_H__
+        sbiw r28,20
+        in __tmp_reg__,__SREG__
+        cli
+        out __SP_H__,r29
+        out __SREG__,__tmp_reg__
+        out __SP_L__,r28
+/* prologue end (size=10) */
+

+It reads the current stack pointer value, decrements it by the required amount of bytes, then disables interrupts, writes back the high part of the stack pointer, writes back the saved SREG (which will eventually re-enable interrupts if they have been enabled before), and finally writes the low part of the stack pointer.

+At the first glance, there's a race between restoring SREG, and writing SPL. However, after enabling interrupts (either explicitly by setting the I flag, or by restoring it as part of the entire SREG), the AVR hardware executes (at least) the next instruction still with interrupts disabled, so the write to SPL is guaranteed to be executed with interrupts disabled still. Thus, the emitted sequence ensures interrupts will be disabled only for the minimum time required to guarantee the integrity of this operation.

+Back to FAQ Index.

+Why are there five different linker scripts?

+From a comment in the source code:

+Which one of the five linker script files is actually used depends on command line options given to ld.

+A .x script file is the default script A .xr script is for linking without relocation (-r flag) A .xu script is like .xr but *do* create constructors (-Ur flag) A .xn script is for linking with -n flag (mix text and data on same page). A .xbn script is for linking with -N flag (mix text and data on same page).

+Back to FAQ Index.

+How to add a raw binary image to linker output?

+The GNU linker avr-ld cannot handle binary data directly. However, there's a companion tool called avr-objcopy. This is already known from the output side: it's used to extract the contents of the linked ELF file into an Intel Hex load file.

+avr-objcopy can create a relocatable object file from arbitrary binary input, like

+

avr-objcopy -I binary -O elf32-avr foo.bin foo.o
+

+This will create a file named foo.o, with the contents of foo.bin. The contents will default to section .data, and two symbols will be created named _binary_foo_bin_start and _binary_foo_bin_end. These symbols can be referred to inside a C source to access these data.

+If the goal is to have those data go to flash ROM (similar to having used the PROGMEM attribute in C source code), the sections have to be renamed while copying, and it's also useful to set the section flags:

+

avr-objcopy --rename-section .data=.progmem.data,contents,alloc,load,readonly,data -I binary -O elf32-avr foo.bin foo.o
+

+Note that all this could be conveniently wired into a Makefile, so whenever foo.bin changes, it will trigger the recreation of foo.o, and a subsequent relink of the final ELF file.

+Below are two Makefile fragments that provide rules to convert a .txt file to an object file, and to convert a .bin file to an object file:

+

$(OBJDIR)/%.o : %.txt
+        @echo Converting $<
+        @cp $(<) $(*).tmp
+        @echo -n 0 | tr 0 '\000' >> $(*).tmp
+        @$(OBJCOPY) -I binary -O elf32-avr \
+        --rename-section .data=.progmem.data,contents,alloc,load,readonly,data \
+        --redefine-sym _binary_$*_tmp_start=$* \
+        --redefine-sym _binary_$*_tmp_end=$*_end \
+        --redefine-sym _binary_$*_tmp_size=$*_size_sym \
+        $(*).tmp $(@)       
+        @echo "extern const char" $(*)"[] PROGMEM;" > $(*).h 
+        @echo "extern const char" $(*)_end"[] PROGMEM;" >> $(*).h 
+        @echo "extern const char" $(*)_size_sym"[];" >> $(*).h
+        @echo "#define $(*)_size ((int)$(*)_size_sym)" >> $(*).h
+        @rm $(*).tmp 
+
+$(OBJDIR)/%.o : %.bin
+        @echo Converting $<
+        @$(OBJCOPY) -I binary -O elf32-avr \
+        --rename-section .data=.progmem.data,contents,alloc,load,readonly,data \
+        --redefine-sym _binary_$*_bin_start=$* \
+        --redefine-sym _binary_$*_bin_end=$*_end \
+        --redefine-sym _binary_$*_bin_size=$*_size_sym \
+        $(<) $(@)       
+        @echo "extern const char" $(*)"[] PROGMEM;" > $(*).h 
+        @echo "extern const char" $(*)_end"[] PROGMEM;" >> $(*).h 
+        @echo "extern const char" $(*)_size_sym"[];" >> $(*).h
+        @echo "#define $(*)_size ((int)$(*)_size_sym)" >> $(*).h
+

+Back to FAQ Index.

+How do I perform a software reset of the AVR?

+The canonical way to perform a software reset of the AVR is to use the watchdog timer. Enable the watchdog timer to the shortest timeout setting, then go into an infinite, do-nothing loop. The watchdog will then reset the processor.

+The reason why this is preferrable over jumping to the reset vector, is that when the watchdog resets the AVR, the registers will be reset to their known, default settings. Whereas jumping to the reset vector will leave the registers in their previous state, which is generally not a good idea.

+CAUTION! Older AVRs will have the watchdog timer disabled on a reset. For these older AVRs, doing a soft reset by enabling the watchdog is easy, as the watchdog will then be disabled after the reset. On newer AVRs, once the watchdog is enabled, then it stays enabled, even after a reset! For these newer AVRs a function needs to be added to the .init3 section (i.e. during the startup code, before main()) to disable the watchdog early enough so it does not continually reset the AVR.

+Here is some example code that creates a macro that can be called to perform a soft reset:

+

#include <avr/wdt.h>
+
+...
+
+#define soft_reset()        \
+do                          \
+{                           \
+    wdt_enable(WDTO_15MS);  \
+    for(;;)                 \
+    {                       \
+    }                       \
+} while(0)
+

+For newer AVRs (such as the ATmega1281) also add this function to your code to then disable the watchdog after a reset (e.g., after a soft reset):

+

#include <avr/wdt.h>
+
+...
+
+// Function Pototype
+void wdt_init(void) __attribute__((naked)) __attribute__((section(".init3")));
+
+...
+
+// Function Implementation
+void wdt_init(void)
+{
+    MCUSR = 0;
+    wdt_disable();
+
+    return;
+}
+

+Back to FAQ Index.

+I am using floating point math. Why is the compiled code so big? Why does my code not work?

+You are not linking in the math library from AVR-LibC. GCC has a library that is used for floating point operations, but it is not optimized for the AVR, and so it generates big code, or it could be incorrect. This can happen even when you are not using any floating point math functions from the Standard C library, but you are just doing floating point math operations.

+When you link in the math library from AVR-LibC, those routines get replaced by hand-optimized AVR assembly and it produces much smaller code.

+See I get "undefined reference to..." for functions like "sin()" for more details on how to link in the math library.

+Back to FAQ Index.

+What pitfalls exist when writing reentrant code?

+Reentrant code means the ability for a piece of code to be called simultaneously from two or more threads. Attention to re-enterability is needed when using a multi-tasking operating system, or when using interrupts since an interrupt is really a temporary thread.

+The code generated natively by gcc is reentrant. But, only some of the libraries in avr-libc are explicitly reentrant, and some are known not to be reentrant. In general, any library call that reads and writes global variables (including I/O registers) is not reentrant. This is because more than one thread could read or write the same storage at the same time, unaware that other threads are doing the same, and create inconsistent and/or erroneous results.

+A library call that is known not to be reentrant will work if it is used only within one thread and no other thread makes use of a library call that shares common storage with it.

+Below is a table of library calls with known issues.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Library call Reentrant Issue Workaround/Alternative
rand(), random() Uses global variables to keep state information. Use special reentrant versions: rand_r(), random_r().
strtod(), strtol(), strtoul() Uses the global variable errno to return success/failure. Ignore errno, or protect calls with cli()/sei() or ATOMIC_BLOCK() if the application can tolerate it. Or use sccanf() or sccanf_P() if possible.
malloc(), realloc(), calloc(), free() Uses the stack pointer and global variables to allocate and free memory. Protect calls with cli()/sei() or ATOMIC_BLOCK() if the application can tolerate it. If using an OS, use the OS provided memory allocator since the OS is likely modifying the stack pointer anyway.
fdevopen(), fclose() Uses calloc() and free(). Protect calls with cli()/sei() or ATOMIC_BLOCK() if the application can tolerate it. Or use fdev_setup_stream() or FDEV_SETUP_STREAM().
+ Note: fclose() will only call free() if the stream has been opened with fdevopen().
eeprom_*(), boot_*() Accesses I/O registers. Protect calls with cli()/sei(), ATOMIC_BLOCK(), or use OS locking.
pgm_*_far() Accesses I/O register RAMPZ. Starting with GCC 4.3, RAMPZ is automatically saved for ISRs, so nothing further is needed if only using interrupts.
+Some OSes may automatically preserve RAMPZ during context switching. Check the OS documentation before assuming it does.
+Otherwise, protect calls with cli()/sei(), ATOMIC_BLOCK(), or use explicit OS locking.
printf(), printf_P(), vprintf(), vprintf_P(), puts(), puts_P() Alters flags and character count in global FILE stdout. Use only in one thread. Or if returned character count is unimportant, do not use the *_P versions.
+Note: Formatting to a string output, e.g. sprintf(), sprintf_P(), snprintf(), snprintf_P(), vsprintf(), vsprintf_P(), vsnprintf(), vsnprintf_P(), is thread safe. The formatted string could then be followed by an fwrite() which simply calls the lower layer to send the string.
fprintf(), fprintf_P(), vfprintf(), vfprintf_P(), fputs(), fputs_P() Alters flags and character count in the FILE argument. Problems can occur if a global FILE is used from multiple threads. Assign each thread its own FILE for output. Or if returned character count is unimportant, do not use the *_P versions.
assert() Contains an embedded fprintf(). See above for fprintf(). See above for fprintf().
clearerr() Alters flags in the FILE argument. Assign each thread its own FILE for output.

+

getchar(), gets() Alters flags, character count, and unget buffer in global FILE stdin. Use only in one thread. ***

+

fgetc(), ungetc(), fgets(), scanf(), scanf_P(), fscanf(), fscanf_P(), vscanf(), vfscanf(), vfscanf_P(), fread() Alters flags, character count, and unget buffer in the FILE argument. Assign each thread its own FILE for input. ***
+Note: Scanning from a string, e.g. sscanf() and sscanf_P(), are thread safe.
+

+*** It's not clear one would ever want to do character input simultaneously from more than one thread anyway, but these entries are included for completeness.

+An effort will be made to keep this table up to date if any new issues are discovered or introduced.

+Back to FAQ Index.

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/acks.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/acks.html new file mode 100644 index 0000000..b038ec0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/acks.html @@ -0,0 +1,68 @@ + + + + + avr-libc: Acknowledgments + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Acknowledgments

This document tries to tie together the labors of a large group of people. Without these individuals' efforts, we wouldn't have a terrific, free set of tools to develop AVR projects. We all owe thanks to:

+

    +
  • The GCC Team, which produced a very capable set of development tools for an amazing number of platforms and processors.
+

+

    +
  • Denis Chertykov [ denisc@overta.ru ] for making the AVR-specific changes to the GNU tools.
+

+

    +
  • Denis Chertykov and Marek Michalkiewicz [ marekm@linux.org.pl ] for developing the standard libraries and startup code for AVR-GCC.
+

+

    +
  • Uros Platise for developing the AVR programmer tool, uisp.
+

+

+

+

    +
  • Brian Dean [ bsd@bsdhome.com ] for developing avrdude (an alternative to uisp) and for contributing documentation which describes how to use it. Avrdude was previously called avrprog.
+

+

    +
  • Eric Weddington [ eweddington@cso.atmel.com ] for maintaining the WinAVR package and thus making the continued improvements to the open source AVR toolchain available to many users.
+

+

    +
  • Rich Neswold for writing the original avr-tools document (which he graciously allowed to be merged into this document) and his improvements to the demo project.
+

+

    +
  • Theodore A. Roth for having been a long-time maintainer of many of the tools (AVR-Libc, the AVR port of GDB, AVaRICE, uisp, avrdude).
+

+

    +
  • All the people who currently maintain the tools, and/or have submitted suggestions, patches and bug reports. (See the AUTHORS files of the various tools.)
+

+

    +
  • And lastly, all the users who use the software. If nobody used the software, we would probably not be very motivated to continue to develop it. Keep those bug reports coming. ;-)
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/annotated.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/annotated.html new file mode 100644 index 0000000..18ab3f2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/annotated.html @@ -0,0 +1,39 @@ + + + + + avr-libc: Data Structures + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Data Structures

Here are the data structures with brief descriptions: + + +
div_t
ldiv_t
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/assembler.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/assembler.html new file mode 100644 index 0000000..b440c72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/assembler.html @@ -0,0 +1,188 @@ + + + + + avr-libc: avr-libc and assembler programs + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

avr-libc and assembler programs

+Introduction

+There might be several reasons to write code for AVR microcontrollers using plain assembler source code. Among them are:

+

    +
  • Code for devices that do not have RAM and are thus not supported by the C compiler.
  • Code for very time-critical applications.
  • Special tweaks that cannot be done in C.
+

+Usually, all but the first could probably be done easily using the inline assembler facility of the compiler.

+Although avr-libc is primarily targeted to support programming AVR microcontrollers using the C (and C++) language, there's limited support for direct assembler usage as well. The benefits of it are:

+

    +
  • Use of the C preprocessor and thus the ability to use the same symbolic constants that are available to C programs, as well as a flexible macro concept that can use any valid C identifier as a macro (whereas the assembler's macro concept is basically targeted to use a macro in place of an assembler instruction).
  • Use of the runtime framework like automatically assigning interrupt vectors. For devices that have RAM, initializing the RAM variables can also be utilized.
+

+Invoking the compiler

+For the purpose described in this document, the assembler and linker are usually not invoked manually, but rather using the C compiler frontend (avr-gcc) that in turn will call the assembler and linker as required.

+This approach has the following advantages:

+

    +
  • There is basically only one program to be called directly, avr-gcc, regardless of the actual source language used.
  • The invokation of the C preprocessor will be automatic, and will include the appropriate options to locate required include files in the filesystem.
  • The invokation of the linker will be automatic, and will include the appropriate options to locate additional libraries as well as the application start-up code (crtXXX.o) and linker script.
+

+Note that the invokation of the C preprocessor will be automatic when the filename provided for the assembler file ends in .S (the capital letter "s"). This would even apply to operating systems that use case-insensitive filesystems since the actual decision is made based on the case of the filename suffix given on the command-line, not based on the actual filename from the file system.

+Alternatively, the language can explicitly be specified using the -x assembler-with-cpp option.

+Example program

+The following annotated example features a simple 100 kHz square wave generator using an AT90S1200 clocked with a 10.7 MHz crystal. Pin PD6 will be used for the square wave output.

+

#include <avr/io.h>             ; Note [1]
+
+work    =       16              ; Note [2]
+tmp     =       17
+
+inttmp  =       19
+
+intsav  =       0
+
+SQUARE  =       PD6             ; Note [3]
+
+                                ; Note [4]:
+tmconst= 10700000 / 200000      ; 100 kHz => 200000 edges/s
+fuzz=   8                       ; # clocks in ISR until TCNT0 is set
+
+        .section .text
+
+        .global main                            ; Note [5]
+main:
+        rcall   ioinit
+1:
+        rjmp    1b                              ; Note [6]
+
+        .global TIMER0_OVF_vect                 ; Note [7]
+TIMER0_OVF_vect:
+        ldi     inttmp, 256 - tmconst + fuzz
+        out     _SFR_IO_ADDR(TCNT0), inttmp     ; Note [8]
+
+        in      intsav, _SFR_IO_ADDR(SREG)      ; Note [9]
+
+        sbic    _SFR_IO_ADDR(PORTD), SQUARE
+        rjmp    1f
+        sbi     _SFR_IO_ADDR(PORTD), SQUARE
+        rjmp    2f
+1:      cbi     _SFR_IO_ADDR(PORTD), SQUARE
+2:
+
+        out     _SFR_IO_ADDR(SREG), intsav
+        reti
+
+ioinit:
+        sbi     _SFR_IO_ADDR(DDRD), SQUARE
+
+        ldi     work, _BV(TOIE0)
+        out     _SFR_IO_ADDR(TIMSK), work
+
+        ldi     work, _BV(CS00)         ; tmr0:  CK/1
+        out     _SFR_IO_ADDR(TCCR0), work
+
+        ldi     work, 256 - tmconst
+        out     _SFR_IO_ADDR(TCNT0), work
+
+        sei
+
+        ret
+
+        .global __vector_default                ; Note [10]
+__vector_default:
+        reti
+
+        .end
+

+

Note [1]
+As in C programs, this includes the central processor-specific file containing the IO port definitions for the device. Note that not all include files can be included into assembler sources.

+

Note [2]
+Assignment of registers to symbolic names used locally. Another option would be to use a C preprocessor macro instead:

+

 #define work 16 
+

+

Note [3]
+Our bit number for the square wave output. Note that the right-hand side consists of a CPP macro which will be substituted by its value (6 in this case) before actually being passed to the assembler.

+

Note [4]
+The assembler uses integer operations in the host-defined integer size (32 bits or longer) when evaluating expressions. This is in contrast to the C compiler that uses the C type int by default in order to calculate constant integer expressions.
+ In order to get a 100 kHz output, we need to toggle the PD6 line 200000 times per second. Since we use timer 0 without any prescaling options in order to get the desired frequency and accuracy, we already run into serious timing considerations: while accepting and processing the timer overflow interrupt, the timer already continues to count. When pre-loading the TCCNT0 register, we therefore have to account for the number of clock cycles required for interrupt acknowledge and for the instructions to reload TCCNT0 (4 clock cycles for interrupt acknowledge, 2 cycles for the jump from the interrupt vector, 2 cycles for the 2 instructions that reload TCCNT0). This is what the constant fuzz is for.

+

Note [5]
+External functions need to be declared to be .global. main is the application entry point that will be jumped to from the ininitalization routine in crts1200.o.

+

Note [6]
+The main loop is just a single jump back to itself. Square wave generation itself is completely handled by the timer 0 overflow interrupt service. A sleep instruction (using idle mode) could be used as well, but probably would not conserve much energy anyway since the interrupt service is executed quite frequently.

+

Note [7]
+Interrupt functions can get the usual names that are also available to C programs. The linker will then put them into the appropriate interrupt vector slots. Note that they must be declared .global in order to be acceptable for this purpose. This will only work if <avr/io.h> has been included. Note that the assembler or linker have no chance to check the correct spelling of an interrupt function, so it should be double-checked. (When analyzing the resulting object file using avr-objdump or avr-nm, a name like __vector_N should appear, with N being a small integer number.)

+

Note [8]
+As explained in the section about special function registers, the actual IO port address should be obtained using the macro _SFR_IO_ADDR. (The AT90S1200 does not have RAM thus the memory-mapped approach to access the IO registers is not available. It would be slower than using in / out instructions anyway.)
+ Since the operation to reload TCCNT0 is time-critical, it is even performed before saving SREG. Obviously, this requires that the instructions involved would not change any of the flag bits in SREG.

+

Note [9]
+Interrupt routines must not clobber the global CPU state. Thus, it is usually necessary to save at least the state of the flag bits in SREG. (Note that this serves as an example here only since actually, all the following instructions would not modify SREG either, but that's not commonly the case.)
+ Also, it must be made sure that registers used inside the interrupt routine do not conflict with those used outside. In the case of a RAM-less device like the AT90S1200, this can only be done by agreeing on a set of registers to be used exclusively inside the interrupt routine; there would not be any other chance to "save" a register anywhere.
+ If the interrupt routine is to be linked together with C modules, care must be taken to follow the register usage guidelines imposed by the C compiler. Also, any register modified inside the interrupt sevice needs to be saved, usually on the stack.

+

Note [10]
+As explained in Interrupts, a global "catch-all" interrupt handler that gets all unassigned interrupt vectors can be installed using the name __vector_default. This must be .global, and obviously, should end in a reti instruction. (By default, a jump to location 0 would be implied instead.)

+Pseudo-ops and operators

+The available pseudo-ops in the assembler are described in the GNU assembler (gas) manual. The manual can be found online as part of the current binutils release under http://sources.redhat.com/binutils/.

+As gas comes from a Unix origin, its pseudo-op and overall assembler syntax is slightly different than the one being used by other assemblers. Numeric constants follow the C notation (prefix 0x for hexadecimal constants), expressions use a C-like syntax.

+Some common pseudo-ops include:

+

    +
  • .byte allocates single byte constants
+

+

    +
  • .ascii allocates a non-terminated string of characters
+

+

    +
  • .asciz allocates a \0-terminated string of characters (C string)
+

+

    +
  • .data switches to the .data section (initialized RAM variables)
+

+

    +
  • .text switches to the .text section (code and ROM constants)
+

+

    +
  • .set declares a symbol as a constant expression (identical to .equ)
+

+

    +
  • .global (or .globl) declares a public symbol that is visible to the linker (e. g. function entry point, global variable)
+

+

    +
  • .extern declares a symbol to be externally defined; this is effectively a comment only, as gas treats all undefined symbols it encounters as globally undefined anyway
+

+Note that .org is available in gas as well, but is a fairly pointless pseudo-op in an assembler environment that uses relocatable object files, as it is the linker that determines the final position of some object in ROM or RAM.

+Along with the architecture-independent standard operators, there are some AVR-specific operators available which are unfortunately not yet described in the official documentation. The most notable operators are:

+

    +
  • lo8 Takes the least significant 8 bits of a 16-bit integer
+

+

    +
  • hi8 Takes the most significant 8 bits of a 16-bit integer
+

+

    +
  • pm Takes a program-memory (ROM) address, and converts it into a RAM address. This implies a division by 2 as the AVR handles ROM addresses as 16-bit words (e.g. in an IJMP or ICALL instruction), and can also handle relocatable symbols on the right-hand side.
+

+Example:

+	ldi	r24, lo8(pm(somefunc))
+	ldi	r25, hi8(pm(somefunc))
+	call	something
+

+This passes the address of function somefunc as the first parameter to function something.

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/assert_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/assert_8h.html new file mode 100644 index 0000000..4640752 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/assert_8h.html @@ -0,0 +1,44 @@ + + + + + avr-libc: assert.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

assert.h File Reference


Detailed Description

+ +

+ + + + + +

Defines

#define assert(expression)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atoi_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atoi_8S.html new file mode 100644 index 0000000..a4d03c2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atoi_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: atoi.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

atoi.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atol_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atol_8S.html new file mode 100644 index 0000000..c17ce52 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atol_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: atol.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

atol.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atomic_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atomic_8h.html new file mode 100644 index 0000000..4d6c064 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/atomic_8h.html @@ -0,0 +1,57 @@ + + + + + avr-libc: atomic.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

atomic.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + +

Defines

+#define _UTIL_ATOMIC_H_   1
#define ATOMIC_BLOCK(type)
#define NONATOMIC_BLOCK(type)
#define ATOMIC_RESTORESTATE
#define ATOMIC_FORCEON
#define NONATOMIC_RESTORESTATE
#define NONATOMIC_FORCEOFF
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/avrs.png b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/avrs.png new file mode 100644 index 0000000..2bdb857 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/avrs.png differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/benchmarks.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/benchmarks.html new file mode 100644 index 0000000..36f2078 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/benchmarks.html @@ -0,0 +1,303 @@ + + + + + avr-libc: Benchmarks + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Benchmarks

The results below can only give a rough estimate of the resources necessary for using certain library functions. There is a number of factors which can both increase or reduce the effort required:

+

    +
  • Expenses for preparation of operands and their stack are not considered.
  • +
+
    +
  • In the table, the size includes all additional functions (for example, function to multiply two integers) but they are only linked from the library.
  • +
+
    +
  • Expenses of time of performance of some functions essentially depend on parameters of a call, for example, qsort() is recursive, and sprintf() receives parameters in a stack.
  • +
+
    +
  • Different versions of the compiler can give a significant difference in code size and execution time. For example, the dtostre() function, compiled with avr-gcc 3.4.6, requires 930 bytes. After transition to avr-gcc 4.2.3, the size become 1088 bytes.
  • +
+

+A few of libc functions.

+Avr-gcc version is 4.2.3

+The size of function is given in view of all picked up functions. By default Avr-libc is compiled with -mcall-prologues option. In brackets the size without taking into account modules of a prologue and an epilogue is resulted. Both of the size can coincide, if function does not cause a prologue/epilogue.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function Units Avr2 Avr25 Avr4
atoi ("12345") Flash bytes
+Stack bytes
+MCU clocks
82 (82)
+2
+155
78 (78)
+
+
74 (74)
+2
+149
atol ("12345") Flash bytes
+Stack bytes
+MCU clocks
122 (122)
+2
+221
118 (118)
+
+
118 (118)
+2
+219
dtostre (1.2345, s, 6, 0) Flash bytes
+Stack bytes
+MCU clocks
1184 (1072)
+17
+1313
1088 (978)
+
+
1088 (978)
+17
+1152
dtostrf (1.2345, 15, 6, s) Flash bytes
+Stack bytes
+MCU clocks
1676 (1564)
+36
+1608
1548 (1438)
+
+
1548 (1438)
+36
+1443
itoa (12345, s, 10) Flash bytes
+Stack bytes
+MCU clocks
150 (150)
+4
+1172
134 (134)
+
+
134 (134)
+4
+1152
ltoa (12345L, s, 10) Flash bytes
+Stack bytes
+MCU clocks
220 (220)
+9
+3174
200 (200)
+
+
200 (200)
+9
+3136
malloc (1) Flash bytes
+Stack bytes
+MCU clocks
554 (554)
+4
+196
506 (506)
+
+
506 (506)
+4
+178
realloc ((void *)0, 1) Flash bytes
+Stack bytes
+MCU clocks
1152 (1040)
+20
+303
1042 (932)
+
+
1042 (932)
+20
+280
qsort (s, sizeof(s), 1, cmp) Flash bytes
+Stack bytes
+MCU clocks
1242 (1130)
+38
+20914
990 (880)
+
+
1008 (898)
+38
+16678
sprintf_min (s, "%d", 12345) Flash bytes
+Stack bytes
+MCU clocks
1216 (1104)
+59
+1846
1090 (980)
+
+
1086 (976)
+59
+1711
sprintf (s, "%d", 12345) Flash bytes
+Stack bytes
+MCU clocks
1674 (1562)
+58
+1610
1542 (1432)
+
+
1498 (1388)
+58
+1528
sprintf_flt (s, "%e", 1.2345) Flash bytes
+Stack bytes
+MCU clocks
3334 (3222)
+66
+2513
3084 (2974)
+
+
3040 (2930)
+66
+2297
sscanf_min ("12345", "%d", &i) Flash bytes
+Stack bytes
+MCU clocks
1540 (1428)
+55
+1339
1354 (1244)
+
+
1354 (1244)
+55
+1240
sscanf ("12345", "%d", &i) Flash bytes
+Stack bytes
+MCU clocks
1950 (1838)
+53
+1334
1704 (1594)
+
+
1704 (1594)
+53
+1235
sscanf ("point,color", "%[a-z]", s) Flash bytes
+Stack bytes
+MCU clocks
1950 (1838)
+87
+2878
1704 (1594)
+
+
1704 (1594)
+87
+2718
sscanf_flt ("1.2345", "%e", &x) Flash bytes
+Stack bytes
+MCU clocks
3298 (3186)
+63
+2187
2934 (2824)
+
+
2918 (2808)
+63
+1833
strtod ("1.2345", &p) Flash bytes
+Stack bytes
+MCU clocks
1570 (1458)
+22
+1237
1472 (1362)
+
+
1456 (1346)
+22
+971
strtol ("12345", &p, 0) Flash bytes
+Stack bytes
+MCU clocks
942 (830)
+29
+1074
874 (764)
+
+
808 (698)
+21
+722
+

+Math functions.

+The table contains the number of MCU clocks to calculate a function with a given argument(s). The main reason of a big difference between Avr2 and Avr4 is a hardware multiplication.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Function Avr2 Avr4
__addsf3 (1.234, 5.678) 113 108
__mulsf3 (1.234, 5.678) 375 138
__divsf3 (1.234, 5.678) 466 465
acos (0.54321) 4648 2689
asin (0.54321) 4754 2790
atan (0.54321) 4710 2271
atan2 (1.234, 5.678) 5270 2857
ceil (1.2345) 177 177
cos (1.2345) 3381 1665
cosh (1.2345) 4922 2979
exp (1.2345) 4708 2765
fdim (5.678, 1.234) 111 111
floor (1.2345) 180 180
fmax (1.234, 5.678) 39 37
fmin (1.234, 5.678) 35 35
fmod (5.678, 1.234) 132 132
frexp (1.2345, 0) 37 36
hypot (1.234, 5.678) 1556 1078
ldexp (1.2345, 6) 42 42
log (1.2345) 4142 2134
log10 (1.2345) 4498 2260
modf (1.2345, 0) 433 429
pow (1.234, 5.678) 9293 5047
round (1.2345) 150 150
sin (1.2345) 3347 1647
sinh (1.2345) 4946 3003
sqrt (1.2345) 709 704
tan (1.2345) 4375 2420
tanh (1.2345) 5126 3173
trunc (1.2345) 178 178
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/boot_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/boot_8h.html new file mode 100644 index 0000000..838faba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/boot_8h.html @@ -0,0 +1,607 @@ + + + + + avr-libc: boot.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

boot.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define _AVR_BOOT_H_   1
#define BOOTLOADER_SECTION   __attribute__ ((section (".bootloader")))
+#define __COMMON_ASB   RWWSB
+#define __COMMON_ASRE   RWWSRE
+#define BLB12   5
+#define BLB11   4
+#define BLB02   3
+#define BLB01   2
#define boot_spm_interrupt_enable()   (__SPM_REG |= (uint8_t)_BV(SPMIE))
#define boot_spm_interrupt_disable()   (__SPM_REG &= (uint8_t)~_BV(SPMIE))
#define boot_is_spm_interrupt()   (__SPM_REG & (uint8_t)_BV(SPMIE))
#define boot_rww_busy()   (__SPM_REG & (uint8_t)_BV(__COMMON_ASB))
#define boot_spm_busy()   (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE))
#define boot_spm_busy_wait()   do{}while(boot_spm_busy())
+#define __BOOT_PAGE_ERASE   (_BV(__SPM_ENABLE) | _BV(PGERS))
+#define __BOOT_PAGE_WRITE   (_BV(__SPM_ENABLE) | _BV(PGWRT))
+#define __BOOT_PAGE_FILL   _BV(__SPM_ENABLE)
+#define __BOOT_RWW_ENABLE   (_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE))
+#define __BOOT_LOCK_BITS_SET   (_BV(__SPM_ENABLE) | _BV(BLBSET))
#define __boot_page_fill_normal(address, data)
#define __boot_page_fill_alternate(address, data)
#define __boot_page_fill_extended(address, data)
#define __boot_page_erase_normal(address)
#define __boot_page_erase_alternate(address)
#define __boot_page_erase_extended(address)
#define __boot_page_write_normal(address)
#define __boot_page_write_alternate(address)
#define __boot_page_write_extended(address)
#define __boot_rww_enable()
#define __boot_rww_enable_alternate()
#define __boot_lock_bits_set(lock_bits)
#define __boot_lock_bits_set_alternate(lock_bits)
#define GET_LOW_FUSE_BITS   (0x0000)
#define GET_LOCK_BITS   (0x0001)
#define GET_EXTENDED_FUSE_BITS   (0x0002)
#define GET_HIGH_FUSE_BITS   (0x0003)
#define boot_lock_fuse_bits_get(address)
+#define __BOOT_SIGROW_READ   (_BV(__SPM_ENABLE) | _BV(SIGRD))
#define boot_signature_byte_get(addr)
#define boot_page_fill(address, data)   __boot_page_fill_normal(address, data)
#define boot_page_erase(address)   __boot_page_erase_normal(address)
#define boot_page_write(address)   __boot_page_write_normal(address)
#define boot_rww_enable()   __boot_rww_enable()
#define boot_lock_bits_set(lock_bits)   __boot_lock_bits_set(lock_bits)
#define boot_page_fill_safe(address, data)
#define boot_page_erase_safe(address)
#define boot_page_write_safe(address)
#define boot_rww_enable_safe()
#define boot_lock_bits_set_safe(lock_bits)
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define __boot_lock_bits_set (lock_bits   ) 
+
+
+ +

+Value:

(__extension__({                                           \
+    uint8_t value = (uint8_t)(~(lock_bits));               \
+    __asm__ __volatile__                                   \
+    (                                                      \
+        "ldi r30, 1\n\t"                                   \
+        "ldi r31, 0\n\t"                                   \
+        "mov r0, %2\n\t"                                   \
+        "sts %0, %1\n\t"                                   \
+        "spm\n\t"                                          \
+        :                                                  \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),                  \
+          "r" ((uint8_t)__BOOT_LOCK_BITS_SET),             \
+          "r" (value)                                      \
+        : "r0", "r30", "r31"                               \
+    );                                                     \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __boot_lock_bits_set_alternate (lock_bits   ) 
+
+
+ +

+Value:

(__extension__({                                           \
+    uint8_t value = (uint8_t)(~(lock_bits));               \
+    __asm__ __volatile__                                   \
+    (                                                      \
+        "ldi r30, 1\n\t"                                   \
+        "ldi r31, 0\n\t"                                   \
+        "mov r0, %2\n\t"                                   \
+        "sts %0, %1\n\t"                                   \
+        "spm\n\t"                                          \
+        ".word 0xffff\n\t"                                 \
+        "nop\n\t"                                          \
+        :                                                  \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),                  \
+          "r" ((uint8_t)__BOOT_LOCK_BITS_SET),             \
+          "r" (value)                                      \
+        : "r0", "r30", "r31"                               \
+    );                                                     \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __boot_page_erase_alternate (address   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        ".word 0xffff\n\t"                       \
+        "nop\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_PAGE_ERASE),      \
+          "z" ((uint16_t)address)                \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __boot_page_erase_extended (address   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "movw r30, %A3\n\t"                      \
+        "sts  %1, %C3\n\t"                       \
+        "sts %0, %2\n\t"                         \
+        "spm\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "i" (_SFR_MEM_ADDR(RAMPZ)),            \
+          "r" ((uint8_t)__BOOT_PAGE_ERASE),      \
+          "r" ((uint32_t)address)                \
+        : "r30", "r31"                           \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __boot_page_erase_normal (address   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_PAGE_ERASE),      \
+          "z" ((uint16_t)address)                \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + + + + +
#define __boot_page_fill_alternate (address,
data   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "movw  r0, %3\n\t"                       \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        ".word 0xffff\n\t"                       \
+        "nop\n\t"                                \
+        "clr  r1\n\t"                            \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_PAGE_FILL),       \
+          "z" ((uint16_t)address),               \
+          "r" ((uint16_t)data)                   \
+        : "r0"                                   \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + + + + +
#define __boot_page_fill_extended (address,
data   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "movw  r0, %4\n\t"                       \
+        "movw r30, %A3\n\t"                      \
+        "sts %1, %C3\n\t"                        \
+        "sts %0, %2\n\t"                         \
+        "spm\n\t"                                \
+        "clr  r1\n\t"                            \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "i" (_SFR_MEM_ADDR(RAMPZ)),            \
+          "r" ((uint8_t)__BOOT_PAGE_FILL),       \
+          "r" ((uint32_t)address),               \
+          "r" ((uint16_t)data)                   \
+        : "r0", "r30", "r31"                     \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + + + + +
#define __boot_page_fill_normal (address,
data   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "movw  r0, %3\n\t"                       \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        "clr  r1\n\t"                            \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_PAGE_FILL),       \
+          "z" ((uint16_t)address),               \
+          "r" ((uint16_t)data)                   \
+        : "r0"                                   \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __boot_page_write_alternate (address   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        ".word 0xffff\n\t"                       \
+        "nop\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_PAGE_WRITE),      \
+          "z" ((uint16_t)address)                \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __boot_page_write_extended (address   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "movw r30, %A3\n\t"                      \
+        "sts %1, %C3\n\t"                        \
+        "sts %0, %2\n\t"                         \
+        "spm\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "i" (_SFR_MEM_ADDR(RAMPZ)),            \
+          "r" ((uint8_t)__BOOT_PAGE_WRITE),      \
+          "r" ((uint32_t)address)                \
+        : "r30", "r31"                           \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __boot_page_write_normal (address   ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_PAGE_WRITE),      \
+          "z" ((uint16_t)address)                \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + +  + + + + +
#define __boot_rww_enable (  ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_RWW_ENABLE)       \
+    );                                           \
+}))
+
+
+

+ +

+
+ + + + +  + + + + +
#define __boot_rww_enable_alternate (  ) 
+
+
+ +

+Value:

(__extension__({                                 \
+    __asm__ __volatile__                         \
+    (                                            \
+        "sts %0, %1\n\t"                         \
+        "spm\n\t"                                \
+        ".word 0xffff\n\t"                       \
+        "nop\n\t"                                \
+        :                                        \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),        \
+          "r" ((uint8_t)__BOOT_RWW_ENABLE)       \
+    );                                           \
+}))
+
+
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/classes.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/classes.html new file mode 100644 index 0000000..1940610 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/classes.html @@ -0,0 +1,40 @@ + + + + + avr-libc: Alphabetical List + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Data Structure Index

D | L

+ +
  D  
+
div_t   
  L  
+
ldiv_t   

D | L

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/crc16_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/crc16_8h.html new file mode 100644 index 0000000..f891652 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/crc16_8h.html @@ -0,0 +1,50 @@ + + + + + avr-libc: crc16.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

crc16.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + +

Functions

static __inline__ uint16_t _crc16_update (uint16_t __crc, uint8_t __data)
static __inline__ uint16_t _crc_xmodem_update (uint16_t __crc, uint8_t __data)
static __inline__ uint16_t _crc_ccitt_update (uint16_t __crc, uint8_t __data)
static __inline__ uint8_t _crc_ibutton_update (uint8_t __crc, uint8_t __data)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ctype_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ctype_8h.html new file mode 100644 index 0000000..98c421b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ctype_8h.html @@ -0,0 +1,82 @@ + + + + + avr-libc: ctype.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

ctype.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define __CTYPE_H_   1

Functions

Character classification routines
These functions perform character classification. They return true or false status depending whether the character passed to the function falls into the function's classification (i.e. isdigit() returns true if its argument is any value '0' though '9', inclusive). If the input is not an unsigned char value, all of this function return false.

int isalnum (int __c)
int isalpha (int __c)
int isascii (int __c)
int isblank (int __c)
int iscntrl (int __c)
int isdigit (int __c)
int isgraph (int __c)
int islower (int __c)
int isprint (int __c)
int ispunct (int __c)
int isspace (int __c)
int isupper (int __c)
int isxdigit (int __c)
Character convertion routines
This realization permits all possible values of integer argument. The toascii() function clears all highest bits. The tolower() and toupper() functions return an input argument as is, if it is not an unsigned char value.

int toascii (int __c)
int tolower (int __c)
int toupper (int __c)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/delay_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/delay_8h.html new file mode 100644 index 0000000..f65e227 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/delay_8h.html @@ -0,0 +1,53 @@ + + + + + avr-libc: delay.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

delay.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + +

Defines

+#define _UTIL_DELAY_H_   1
+#define F_CPU   1000000UL

Functions

void _delay_us (double __us)
void _delay_ms (double __ms)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/delay__basic_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/delay__basic_8h.html new file mode 100644 index 0000000..dd17b02 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/delay__basic_8h.html @@ -0,0 +1,50 @@ + + + + + avr-libc: delay_basic.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

delay_basic.h File Reference


Detailed Description

+ +

+ + + + + + + + + + +

Defines

+#define _UTIL_DELAY_BASIC_H_   1

Functions

void _delay_loop_1 (uint8_t __count)
void _delay_loop_2 (uint16_t __count)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/demo.png b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/demo.png new file mode 100644 index 0000000..8793bb8 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/demo.png differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/deprecated.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/deprecated.html new file mode 100644 index 0000000..0a50d2c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/deprecated.html @@ -0,0 +1,99 @@ + + + + + avr-libc: Deprecated List + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Deprecated List

+
Global SIGNAL
+
Do not use SIGNAL() in new code. Use ISR() instead.
+
+

+

+
Global ISR_ALIAS
+
For new code, the use of ISR(..., ISR_ALIASOF(...)) is recommended.

+

+
+

+

+
Global timer_enable_int
+

+

+
+

+

+
Global enable_external_int
+

+

+
+

+

+
Global INTERRUPT
+

+

+
+

+

+
Global inp
+

+

+
+

+

+
Global outp
+

+

+
+

+

+
Global inb
+

+

+
+

+

+
Global outb
+

+

+
+

+

+
Global sbi
+

+

+
+

+

+
Global cbi
+

+

+
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/dox.css b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/dox.css new file mode 100644 index 0000000..71d27e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/dox.css @@ -0,0 +1,117 @@ +BODY { + background-color: #feffe2 +} +H1 { + text-align: center; +} +A.qindex {} +A.qindexRef {} +A.el { + text-decoration: none; + font-weight: bold +} +A.elRef { + font-weight: bold +} +A.code { + text-decoration: none; + font-weight: normal; + color: #4444ee +} +A.codeRef { + font-weight: normal; + color: #4444ee +} +A:hover { + text-decoration: none; + color: #600000; + background-color: #ffffff +} +DL.el { + margin-left: -1cm +} +DIV.fragment { + border-style: solid; + border-color: black; + border-width: thin; + color: #5000a0; + background-color: #fffff0; + padding-left: 5px; + margin-right: 5px; +} +DIV.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px +} +TD.memname { + color: #0050a0; + font-weight: bold; + white-space: nowrap; +} +TD.memitem { + color: #0050a0; + font-weight: bold; + white-space: nowrap; +} +.memproto { + border-style: solid; + border-color: black; + border-width: thin; + background-color: #fdfff8; + padding-left: 5px; + margin-right: 5px; + padding-top: 5px; + padding-bottom: 5px; + width: 50%; +} +TD.paramtype { + font-weight: bold; + color: #0050a0; + white-space: nowrap; +} +TD.paramname { + font-weight: bold; + color: #702020; + white-space: nowrap; +} +TD.mdRow { + background-color: #feffe2; + font-weight: bold; +} +TD.md { + background-color: #feffe2; + color: #0050a0; + font-weight: bold; +} +TD.mdname1 { + background-color: #feffe2; + font-weight: bold; color: #702020; +} +TD.mdname { + background-color: #feffe2; + font-weight: bold; + color: #702020; + width: 600px; +} +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold +} +DIV.groupText { + margin-left: 16px; + font-style: italic; + font-size: smaller +} + +FONT.keyword { color: #008000 } +FONT.keywordtype { color: #604020 } +FONT.keywordflow { color: #e08000 } +FONT.comment { color: #800000 } +FONT.preprocessor { color: #806020 } +FONT.stringliteral { color: #002080 } +FONT.charliteral { color: #008080 } diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/doxygen.png b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/doxygen.png new file mode 100644 index 0000000..26da421 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/doxygen.png differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/errno_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/errno_8h.html new file mode 100644 index 0000000..dbb2efc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/errno_8h.html @@ -0,0 +1,53 @@ + + + + + avr-libc: errno.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

errno.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + +

Defines

+#define __ERRNO_H_   1
#define EDOM   33
#define ERANGE   34

Variables

+int errno
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/fdevopen_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/fdevopen_8c.html new file mode 100644 index 0000000..e3c04ae --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/fdevopen_8c.html @@ -0,0 +1,44 @@ + + + + + avr-libc: fdevopen.c File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

fdevopen.c File Reference


Detailed Description

+ +

+ + + + + +

Functions

FILE * fdevopen (int(*put)(char, FILE *), int(*get)(FILE *))
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffs_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffs_8S.html new file mode 100644 index 0000000..1f066ff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffs_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: ffs.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

ffs.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffsl_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffsl_8S.html new file mode 100644 index 0000000..318954d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffsl_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: ffsl.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

ffsl.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffsll_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffsll_8S.html new file mode 100644 index 0000000..d0e1fee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/ffsll_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: ffsll.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

ffsll.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/files.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/files.html new file mode 100644 index 0000000..17e1d75 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/files.html @@ -0,0 +1,128 @@ + + + + + avr-libc: File Index + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + + +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/functions.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/functions.html new file mode 100644 index 0000000..5e649e0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/functions.html @@ -0,0 +1,51 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+ +
+
+Here is a list of all documented struct and union fields with links to the struct/union documentation for each field: +

+

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/functions_vars.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/functions_vars.html new file mode 100644 index 0000000..6b7f5cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/functions_vars.html @@ -0,0 +1,51 @@ + + + + + avr-libc: Data Fields - Variables + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+ +
+
+  +

+

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/fuse_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/fuse_8h.html new file mode 100644 index 0000000..c87b1d1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/fuse_8h.html @@ -0,0 +1,51 @@ + + + + + avr-libc: fuse.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

fuse.h File Reference


Detailed Description

+ +

+ + + + + + + + + +

Defines

+#define _AVR_FUSE_H_   1
+#define FUSEMEM   __attribute__((section (".fuse")))
+#define FUSES   __fuse_t __fuse FUSEMEM
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals.html new file mode 100644 index 0000000..e77b039 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals.html @@ -0,0 +1,109 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- _ -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x61.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x61.html new file mode 100644 index 0000000..94ef171 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x61.html @@ -0,0 +1,99 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- a -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x62.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x62.html new file mode 100644 index 0000000..62ee275 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x62.html @@ -0,0 +1,117 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- b -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x63.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x63.html new file mode 100644 index 0000000..0371a0f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x63.html @@ -0,0 +1,87 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- c -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x64.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x64.html new file mode 100644 index 0000000..0a1c5ee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x64.html @@ -0,0 +1,85 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- d -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x65.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x65.html new file mode 100644 index 0000000..a35883a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x65.html @@ -0,0 +1,85 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- e -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x66.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x66.html new file mode 100644 index 0000000..186049a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x66.html @@ -0,0 +1,141 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- f -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x67.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x67.html new file mode 100644 index 0000000..ed10f52 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x67.html @@ -0,0 +1,87 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- g -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x68.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x68.html new file mode 100644 index 0000000..b43c781 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x68.html @@ -0,0 +1,75 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- h -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x69.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x69.html new file mode 100644 index 0000000..5c44f98 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x69.html @@ -0,0 +1,217 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- i -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6c.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6c.html new file mode 100644 index 0000000..fc52aa8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6c.html @@ -0,0 +1,91 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- l -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6d.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6d.html new file mode 100644 index 0000000..712df1a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6d.html @@ -0,0 +1,107 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- m -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6e.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6e.html new file mode 100644 index 0000000..3771d79 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x6e.html @@ -0,0 +1,81 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- n -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x70.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x70.html new file mode 100644 index 0000000..bdeb157 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x70.html @@ -0,0 +1,267 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- p -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x71.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x71.html new file mode 100644 index 0000000..b236668 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x71.html @@ -0,0 +1,75 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- q -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x72.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x72.html new file mode 100644 index 0000000..4d5d048 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x72.html @@ -0,0 +1,91 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- r -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x73.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x73.html new file mode 100644 index 0000000..db12e43 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x73.html @@ -0,0 +1,301 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- s -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x74.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x74.html new file mode 100644 index 0000000..4f0e4a6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x74.html @@ -0,0 +1,149 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- t -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x75.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x75.html new file mode 100644 index 0000000..5458342 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x75.html @@ -0,0 +1,155 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- u -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x76.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x76.html new file mode 100644 index 0000000..6f11cce --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x76.html @@ -0,0 +1,93 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- v -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x77.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x77.html new file mode 100644 index 0000000..71dff00 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_0x77.html @@ -0,0 +1,99 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- w -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs.html new file mode 100644 index 0000000..2bc0d0f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs.html @@ -0,0 +1,81 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- _ -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x61.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x61.html new file mode 100644 index 0000000..0e07cef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x61.html @@ -0,0 +1,77 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- a -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x62.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x62.html new file mode 100644 index 0000000..b758496 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x62.html @@ -0,0 +1,111 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- b -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x63.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x63.html new file mode 100644 index 0000000..2a55002 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x63.html @@ -0,0 +1,71 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- c -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x64.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x64.html new file mode 100644 index 0000000..9927881 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x64.html @@ -0,0 +1,75 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- d -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x65.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x65.html new file mode 100644 index 0000000..23cc858 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x65.html @@ -0,0 +1,77 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- e -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x66.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x66.html new file mode 100644 index 0000000..872a53a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x66.html @@ -0,0 +1,81 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- f -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x67.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x67.html new file mode 100644 index 0000000..329b6fc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x67.html @@ -0,0 +1,81 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- g -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x69.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x69.html new file mode 100644 index 0000000..62f9303 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x69.html @@ -0,0 +1,149 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- i -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x6d.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x6d.html new file mode 100644 index 0000000..20a92bf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x6d.html @@ -0,0 +1,73 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- m -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x6e.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x6e.html new file mode 100644 index 0000000..f321588 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x6e.html @@ -0,0 +1,77 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- n -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x70.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x70.html new file mode 100644 index 0000000..466ad71 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x70.html @@ -0,0 +1,231 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- p -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x72.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x72.html new file mode 100644 index 0000000..4599123 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x72.html @@ -0,0 +1,75 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- r -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x73.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x73.html new file mode 100644 index 0000000..1d450a0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x73.html @@ -0,0 +1,155 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- s -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x74.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x74.html new file mode 100644 index 0000000..3e17744 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x74.html @@ -0,0 +1,133 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- t -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x75.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x75.html new file mode 100644 index 0000000..28a0307 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x75.html @@ -0,0 +1,115 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- u -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x77.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x77.html new file mode 100644 index 0000000..40215f4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_defs_0x77.html @@ -0,0 +1,95 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- w -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func.html new file mode 100644 index 0000000..daf6bd7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func.html @@ -0,0 +1,87 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- _ -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x61.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x61.html new file mode 100644 index 0000000..ec31673 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x61.html @@ -0,0 +1,89 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- a -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x62.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x62.html new file mode 100644 index 0000000..98af6c8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x62.html @@ -0,0 +1,73 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- b -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x63.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x63.html new file mode 100644 index 0000000..383f5b4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x63.html @@ -0,0 +1,83 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- c -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x64.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x64.html new file mode 100644 index 0000000..937b308 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x64.html @@ -0,0 +1,77 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- d -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x65.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x65.html new file mode 100644 index 0000000..e970974 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x65.html @@ -0,0 +1,75 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- e -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x66.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x66.html new file mode 100644 index 0000000..deb3e92 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x66.html @@ -0,0 +1,127 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- f -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x67.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x67.html new file mode 100644 index 0000000..b3cf2dc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x67.html @@ -0,0 +1,73 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- g -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x68.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x68.html new file mode 100644 index 0000000..2bbb410 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x68.html @@ -0,0 +1,73 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- h -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x69.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x69.html new file mode 100644 index 0000000..3ddf8a4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x69.html @@ -0,0 +1,105 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- i -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x6c.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x6c.html new file mode 100644 index 0000000..49fd454 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x6c.html @@ -0,0 +1,89 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- l -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x6d.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x6d.html new file mode 100644 index 0000000..0a9478a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x6d.html @@ -0,0 +1,101 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- m -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x70.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x70.html new file mode 100644 index 0000000..04201b0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x70.html @@ -0,0 +1,81 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- p -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x71.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x71.html new file mode 100644 index 0000000..a553226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x71.html @@ -0,0 +1,73 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- q -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x72.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x72.html new file mode 100644 index 0000000..5713279 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x72.html @@ -0,0 +1,83 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- r -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x73.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x73.html new file mode 100644 index 0000000..9b26da8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x73.html @@ -0,0 +1,213 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- s -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x74.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x74.html new file mode 100644 index 0000000..4d6706f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x74.html @@ -0,0 +1,83 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- t -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x75.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x75.html new file mode 100644 index 0000000..d290f73 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x75.html @@ -0,0 +1,77 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- u -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x76.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x76.html new file mode 100644 index 0000000..d6457f2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_func_0x76.html @@ -0,0 +1,91 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- v -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_type.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_type.html new file mode 100644 index 0000000..415f210 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_type.html @@ -0,0 +1,146 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+ +
+
+  +

+

- _ -

+

- i -

+

- p -

+

- u -

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_vars.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_vars.html new file mode 100644 index 0000000..8f91aba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/globals_vars.html @@ -0,0 +1,54 @@ + + + + + avr-libc: Data Fields + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + +
+  +

+

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__alloca.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__alloca.html new file mode 100644 index 0000000..e6f47d7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__alloca.html @@ -0,0 +1,70 @@ + + + + + avr-libc: <alloca.h>: Allocate space in the stack + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<alloca.h>: Allocate space in the stack


Detailed Description

+ +

+ + + + + +

Functions

void * alloca (size_t __size)
+


Function Documentation

+ +
+
+ + + + + + + + + +
void* alloca (size_t  __size  ) 
+
+
+ +

+Allocate __size bytes of space in the stack frame of the caller. +

+This temporary space is automatically freed when the function that called alloca() returns to its caller. Avr-libc defines the alloca() as a macro, which is translated into the inlined __builtin_alloca() function. The fact that the code is inlined, means that it is impossible to take the address of this function, or to change its behaviour by linking with a different library.

+

Returns:
alloca() returns a pointer to the beginning of the allocated space. If the allocation causes stack overflow, program behaviour is undefined.
+
Warning:
Avoid use alloca() inside the list of arguments of a function call.
+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__asmdemo.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__asmdemo.html new file mode 100644 index 0000000..78ab5c4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__asmdemo.html @@ -0,0 +1,81 @@ + + + + + avr-libc: Combining C and assembly source files + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Combining C and assembly source files
+ +[Demo projects] +

For time- or space-critical applications, it can often be desirable to combine C code (for easy maintenance) and assembly code (for maximal speed or minimal code size) together. This demo provides an example of how to do that.

+The objective of the demo is to decode radio-controlled model PWM signals, and control an output PWM based on the current input signal's value. The incoming PWM pulses follow a standard encoding scheme where a pulse width of 920 microseconds denotes one end of the scale (represented as 0 % pulse width on output), and 2120 microseconds mark the other end (100 % output PWM). Normally, multiple channels would be encoded that way in subsequent pulses, followed by a larger gap, so the entire frame will repeat each 14 through 20 ms, but this is ignored for the purpose of the demo, so only a single input PWM channel is assumed.

+The basic challenge is to use the cheapest controller available for the task, an ATtiny13 that has only a single timer channel. As this timer channel is required to run the outgoing PWM signal generation, the incoming PWM decoding had to be adjusted to the constraints set by the outgoing PWM.

+As PWM generation toggles the counting direction of timer 0 between up and down after each 256 timer cycles, the current time cannot be deduced by reading TCNT0 only, but the current counting direction of the timer needs to be considered as well. This requires servicing interrupts whenever the timer hits TOP (255) and BOTTOM (0) to learn about each change of the counting direction. For PWM generation, it is usually desired to run it at the highest possible speed so filtering the PWM frequency from the modulated output signal is made easy. Thus, the PWM timer runs at full CPU speed. This causes the overflow and compare match interrupts to be triggered each 256 CPU clocks, so they must run with the minimal number of processor cycles possible in order to not impose a too high CPU load by these interrupt service routines. This is the main reason to implement the entire interrupt handling in fine-tuned assembly code rather than in C.

+In order to verify parts of the algorithm, and the underlying hardware, the demo has been set up in a way so the pin-compatible but more expensive ATtiny45 (or its siblings ATtiny25 and ATtiny85) could be used as well. In that case, no separate assembly code is required, as two timer channels are avaible.

+Hardware setup

+The incoming PWM pulse train is fed into PB4. It will generate a pin change interrupt there on eache edge of the incoming signal.

+The outgoing PWM is generated through OC0B of timer channel 0 (PB1). For demonstration purposes, a LED should be connected to that pin (like, one of the LEDs of an STK500).

+The controllers run on their internal calibrated RC oscillators, 1.2 MHz on the ATtiny13, and 1.0 MHz on the ATtiny45.

+A code walkthrough

+

+asmdemo.c

+After the usual include files, two variables are defined. The first one, pwm_incoming is used to communicate the most recent pulse width detected by the incoming PWM decoder up to the main loop.

+The second variable actually only constitutes of a single bit, intbits.pwm_received. This bit will be set whenever the incoming PWM decoder has updated pwm_incoming.

+Both variables are marked volatile to ensure their readers will always pick up an updated value, as both variables will be set by interrupt service routines.

+The function ioinit() initializes the microcontroller peripheral devices. In particular, it starts timer 0 to generate the outgoing PWM signal on OC0B. Setting OCR0A to 255 (which is the TOP value of timer 0) is used to generate a timer 0 overflow A interrupt on the ATtiny13. This interrupt is used to inform the incoming PWM decoder that the counting direction of channel 0 is just changing from up to down. Likewise, an overflow interrupt will be generated whenever the countdown reached BOTTOM (value 0), where the counter will again alter its counting direction to upwards. This information is needed in order to know whether the current counter value of TCNT0 is to be evaluated from bottom or top.

+Further, ioinit() activates the pin-change interrupt PCINT0 on any edge of PB4. Finally, PB1 (OC0B) will be activated as an output pin, and global interrupts are being enabled.

+In the ATtiny45 setup, the C code contains an ISR for PCINT0. At each pin-change interrupt, it will first be analyzed whether the interrupt was caused by a rising or a falling edge. In case of the rising edge, timer 1 will be started with a prescaler of 16 after clearing the current timer value. Then, at the falling edge, the current timer value will be recorded (and timer 1 stopped), the pin-change interrupt will be suspended, and the upper layer will be notified that the incoming PWM measurement data is available.

+Function main() first initializes the hardware by calling ioinit(), and then waits until some incoming PWM value is available. If it is, the output PWM will be adjusted by computing the relative value of the incoming PWM. Finally, the pin-change interrupt is re-enabled, and the CPU is put to sleep.

+project.h

+In order for the interrupt service routines to be as fast as possible, some of the CPU registers are set aside completely for use by these routines, so the compiler would not use them for C code. This is arranged for in project.h.

+The file is divided into one section that will be used by the assembly source code, and another one to be used by C code. The assembly part is distinguished by the preprocessing macro __ASSEMBLER__ (which will be automatically set by the compiler front-end when preprocessing an assembly-language file), and it contains just macros that give symbolic names to a number of CPU registers. The preprocessor will then replace the symbolic names by their right-hand side definitions before calling the assembler.

+In C code, the compiler needs to see variable declarations for these objects. This is done by using declarations that bind a variable permanently to a CPU register (see How to permanently bind a variable to a register?). Even in case the C code never has a need to access these variables, declaring the register binding that way causes the compiler to not use these registers in C code at all.

+The flags variable needs to be in the range of r16 through r31 as it is the target of a load immediate (or SER) instruction that is not applicable to the entire register file.

+isrs.S

+This file is a preprocessed assembly source file. The C preprocessor will be run by the compiler front-end first, resolving all #include, #define etc. directives. The resulting program text will then be passed on to the assembler.

+As the C preprocessor strips all C-style comments, preprocessed assembly source files can have both, C-style (/* ... */, // ...) as well as assembly-style (; ...) comments.

+At the top, the IO register definition file avr/io.h and the project declaration file project.h are included. The remainder of the file is conditionally assembled only if the target MCU type is an ATtiny13, so it will be completely ignored for the ATtiny45 option.

+Next are the two interrupt service routines for timer 0 compare A match (timer 0 hits TOP, as OCR0A is set to 255) and timer 0 overflow (timer 0 hits BOTTOM). As discussed above, these are kept as short as possible. They only save SREG (as the flags will be modified by the INC instruction), increment the counter_hi variable which forms the high part of the current time counter (the low part is formed by querying TCNT0 directly), and clear or set the variable flags, respectively, in order to note the current counting direction. The RETI instruction terminates these interrupt service routines. Total cycle count is 8 CPU cycles, so together with the 4 CPU cycles needed for interrupt setup, and the 2 cycles for the RJMP from the interrupt vector to the handler, these routines will require 14 out of each 256 CPU cycles, or about 5 % of the overall CPU time.

+The pin-change interrupt PCINT0 will be handled in the final part of this file. The basic algorithm is to quickly evaluate the current system time by fetching the current timer value of TCNT0, and combining it with the overflow part in counter_hi. If the counter is currently counting down rather than up, the value fetched from TCNT0 must be negated. Finally, if this pin-change interrupt was triggered by a rising edge, the time computed will be recorded as the start time only. Then, at the falling edge, this start time will be subracted from the current time to compute the actual pulse width seen (left in pwm_incoming), and the upper layers are informed of the new value by setting bit 0 in the intbits flags. At the same time, this pin-change interrupt will be disabled so no new measurement can be performed until the upper layer had a chance to process the current value.

+The source code

+ + +

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__assert.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__assert.html new file mode 100644 index 0000000..66a5e19 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__assert.html @@ -0,0 +1,78 @@ + + + + + avr-libc: <assert.h>: Diagnostics + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<assert.h>: Diagnostics


Detailed Description

+
 #include <assert.h> 
+

+This header file defines a debugging aid.

+As there is no standard error output stream available for many applications using this library, the generation of a printable error message is not enabled by default. These messages will only be generated if the application defines the macro

+

 __ASSERT_USE_STDERR 
+

+before including the <assert.h> header file. By default, only abort() will be called to halt the application. +

+ + + + + +

Defines

#define assert(expression)
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define assert (expression   ) 
+
+
+ +

+

Parameters:
+ + +
expression Expression to test for.
+
+The assert() macro tests the given expression and if it is false, the calling process is terminated. A diagnostic message is written to stderr and the function abort() is called, effectively terminating the program.

+If expression is true, the assert() macro does nothing.

+The assert() macro may be removed at compile time by defining NDEBUG as a macro (e.g., by using the compiler option -DNDEBUG). +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__boot.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__boot.html new file mode 100644 index 0000000..f140f41 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__boot.html @@ -0,0 +1,656 @@ + + + + + avr-libc: <avr/boot.h>: Bootloader Support Utilities + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/boot.h>: Bootloader Support Utilities


Detailed Description

+
    #include <avr/io.h>
+    #include <avr/boot.h>
+

+The macros in this module provide a C language interface to the bootloader support functionality of certain AVR processors. These macros are designed to work with all sizes of flash memory.

+Global interrupts are not automatically disabled for these macros. It is left up to the programmer to do this. See the code example below. Also see the processor datasheet for caveats on having global interrupts enabled during writing of the Flash.

+

Note:
Not all AVR processors provide bootloader support. See your processor datasheet to see if it provides bootloader support.
+
Todo:
From email with Marek: On smaller devices (all except ATmega64/128), __SPM_REG is in the I/O space, accessible with the shorter "in" and "out" instructions - since the boot loader has a limited size, this could be an important optimization.
+
API Usage Example
The following code shows typical usage of the boot API.
+
    #include <inttypes.h>
+    #include <avr/interrupt.h>
+    #include <avr/pgmspace.h>
+    
+    void boot_program_page (uint32_t page, uint8_t *buf)
+    {
+        uint16_t i;
+        uint8_t sreg;
+
+        // Disable interrupts.
+
+        sreg = SREG;
+        cli();
+    
+        eeprom_busy_wait ();
+
+        boot_page_erase (page);
+        boot_spm_busy_wait ();      // Wait until the memory is erased.
+
+        for (i=0; i<SPM_PAGESIZE; i+=2)
+        {
+            // Set up little-endian word.
+
+            uint16_t w = *buf++;
+            w += (*buf++) << 8;
+        
+            boot_page_fill (page + i, w);
+        }
+
+        boot_page_write (page);     // Store buffer in flash page.
+        boot_spm_busy_wait();       // Wait until the memory is written.
+
+        // Reenable RWW-section again. We need this if we want to jump back
+        // to the application after bootloading.
+
+        boot_rww_enable ();
+
+        // Re-enable interrupts (if they were ever enabled).
+
+        SREG = sreg;
+    }
+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define BOOTLOADER_SECTION   __attribute__ ((section (".bootloader")))
#define boot_spm_interrupt_enable()   (__SPM_REG |= (uint8_t)_BV(SPMIE))
#define boot_spm_interrupt_disable()   (__SPM_REG &= (uint8_t)~_BV(SPMIE))
#define boot_is_spm_interrupt()   (__SPM_REG & (uint8_t)_BV(SPMIE))
#define boot_rww_busy()   (__SPM_REG & (uint8_t)_BV(__COMMON_ASB))
#define boot_spm_busy()   (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE))
#define boot_spm_busy_wait()   do{}while(boot_spm_busy())
#define GET_LOW_FUSE_BITS   (0x0000)
#define GET_LOCK_BITS   (0x0001)
#define GET_EXTENDED_FUSE_BITS   (0x0002)
#define GET_HIGH_FUSE_BITS   (0x0003)
#define boot_lock_fuse_bits_get(address)
#define boot_signature_byte_get(addr)
#define boot_page_fill(address, data)   __boot_page_fill_normal(address, data)
#define boot_page_erase(address)   __boot_page_erase_normal(address)
#define boot_page_write(address)   __boot_page_write_normal(address)
#define boot_rww_enable()   __boot_rww_enable()
#define boot_lock_bits_set(lock_bits)   __boot_lock_bits_set(lock_bits)
#define boot_page_fill_safe(address, data)
#define boot_page_erase_safe(address)
#define boot_page_write_safe(address)
#define boot_rww_enable_safe()
#define boot_lock_bits_set_safe(lock_bits)
+


Define Documentation

+ +
+
+ + + + +  + + + + +
#define boot_is_spm_interrupt (  )    (__SPM_REG & (uint8_t)_BV(SPMIE))
+
+
+ +

+Check if the SPM interrupt is enabled. +

+

+ +

+
+ + + + + + + + + +
#define boot_lock_bits_set (lock_bits   )    __boot_lock_bits_set(lock_bits)
+
+
+ +

+Set the bootloader lock bits.

+

Parameters:
+ + +
lock_bits A mask of which Boot Loader Lock Bits to set.
+
+
Note:
In this context, a 'set bit' will be written to a zero value. Note also that only BLBxx bits can be programmed by this command.
+For example, to disallow the SPM instruction from writing to the Boot Loader memory section of flash, you would use this macro as such:

+

    boot_lock_bits_set (_BV (BLB11));
+

+

Note:
Like any lock bits, the Boot Loader Lock Bits, once set, cannot be cleared again except by a chip erase which will in turn also erase the boot loader itself.
+ +
+

+ +

+
+ + + + + + + + + +
#define boot_lock_bits_set_safe (lock_bits   ) 
+
+
+ +

+Value:

do { \
+    boot_spm_busy_wait();                       \
+    eeprom_busy_wait();                         \
+    boot_lock_bits_set (lock_bits);             \
+} while (0)
+
Same as boot_lock_bits_set() except waits for eeprom and spm operations to complete before setting the lock bits. +
+

+ +

+
+ + + + + + + + + +
#define boot_lock_fuse_bits_get (address   ) 
+
+
+ +

+Value:

(__extension__({                                           \
+    uint8_t __result;                                      \
+    __asm__ __volatile__                                   \
+    (                                                      \
+        "ldi r30, %3\n\t"                                  \
+        "ldi r31, 0\n\t"                                   \
+        "sts %1, %2\n\t"                                   \
+        "lpm %0, Z\n\t"                                    \
+        : "=r" (__result)                                  \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),                  \
+          "r" ((uint8_t)__BOOT_LOCK_BITS_SET),             \
+          "M" (address)                                    \
+        : "r0", "r30", "r31"                               \
+    );                                                     \
+    __result;                                              \
+}))
+
Read the lock or fuse bits at address.

+Parameter address can be any of GET_LOW_FUSE_BITS, GET_LOCK_BITS, GET_EXTENDED_FUSE_BITS, or GET_HIGH_FUSE_BITS.

+

Note:
The lock and fuse bits returned are the physical values, i.e. a bit returned as 0 means the corresponding fuse or lock bit is programmed.
+ +
+

+ +

+
+ + + + + + + + + +
#define boot_page_erase (address   )    __boot_page_erase_normal(address)
+
+
+ +

+Erase the flash page that contains address.

+

Note:
address is a byte address in flash, not a word address.
+ +
+

+ +

+
+ + + + + + + + + +
#define boot_page_erase_safe (address   ) 
+
+
+ +

+Value:

do { \
+    boot_spm_busy_wait();                       \
+    eeprom_busy_wait();                         \
+    boot_page_erase (address);                  \
+} while (0)
+
Same as boot_page_erase() except it waits for eeprom and spm operations to complete before erasing the page. +
+

+ +

+
+ + + + + + + + + + + + +
#define boot_page_fill (address,
data   )    __boot_page_fill_normal(address, data)
+
+
+ +

+Fill the bootloader temporary page buffer for flash address with data word.

+

Note:
The address is a byte address. The data is a word. The AVR writes data to the buffer a word at a time, but addresses the buffer per byte! So, increment your address by 2 between calls, and send 2 data bytes in a word format! The LSB of the data is written to the lower address; the MSB of the data is written to the higher address.
+ +
+

+ +

+
+ + + + + + + + + + + + +
#define boot_page_fill_safe (address,
data   ) 
+
+
+ +

+Value:

do { \
+    boot_spm_busy_wait();                       \
+    eeprom_busy_wait();                         \
+    boot_page_fill(address, data);              \
+} while (0)
+
Same as boot_page_fill() except it waits for eeprom and spm operations to complete before filling the page. +
+

+ +

+
+ + + + + + + + + +
#define boot_page_write (address   )    __boot_page_write_normal(address)
+
+
+ +

+Write the bootloader temporary page buffer to flash page that contains address.

+

Note:
address is a byte address in flash, not a word address.
+ +
+

+ +

+
+ + + + + + + + + +
#define boot_page_write_safe (address   ) 
+
+
+ +

+Value:

do { \
+    boot_spm_busy_wait();                       \
+    eeprom_busy_wait();                         \
+    boot_page_write (address);                  \
+} while (0)
+
Same as boot_page_write() except it waits for eeprom and spm operations to complete before writing the page. +
+

+ +

+
+ + + + +  + + + + +
#define boot_rww_busy (  )    (__SPM_REG & (uint8_t)_BV(__COMMON_ASB))
+
+
+ +

+Check if the RWW section is busy. +

+

+ +

+
+ + + + +  + + + + +
#define boot_rww_enable (  )    __boot_rww_enable()
+
+
+ +

+Enable the Read-While-Write memory section. +

+

+ +

+
+ + + + +  + + + + +
#define boot_rww_enable_safe (  ) 
+
+
+ +

+Value:

do { \
+    boot_spm_busy_wait();                       \
+    eeprom_busy_wait();                         \
+    boot_rww_enable();                          \
+} while (0)
+
Same as boot_rww_enable() except waits for eeprom and spm operations to complete before enabling the RWW mameory. +
+

+ +

+
+ + + + + + + + + +
#define boot_signature_byte_get (addr   ) 
+
+
+ +

+Value:

(__extension__({                      \
+      uint16_t __addr16 = (uint16_t)(addr);     \
+      uint8_t __result;                         \
+      __asm__ __volatile__                      \
+      (                                         \
+        "sts %1, %2\n\t"                        \
+        "lpm %0, Z" "\n\t"                      \
+        : "=r" (__result)                       \
+        : "i" (_SFR_MEM_ADDR(__SPM_REG)),       \
+          "r" ((uint8_t) __BOOT_SIGROW_READ),   \
+          "z" (__addr16)                        \
+      );                                        \
+      __result;                                 \
+}))
+
Read the Signature Row byte at address. For some MCU types, this function can also retrieve the factory-stored oscillator calibration bytes.

+Parameter address can be 0-0x1f as documented by the datasheet.

Note:
The values are MCU type dependent.
+ +
+

+ +

+
+ + + + +  + + + + +
#define boot_spm_busy (  )    (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE))
+
+
+ +

+Check if the SPM instruction is busy. +

+

+ +

+
+ + + + +  + + + + +
#define boot_spm_busy_wait (  )    do{}while(boot_spm_busy())
+
+
+ +

+Wait while the SPM instruction is busy. +

+

+ +

+
+ + + + +  + + + + +
#define boot_spm_interrupt_disable (  )    (__SPM_REG &= (uint8_t)~_BV(SPMIE))
+
+
+ +

+Disable the SPM interrupt. +

+

+ +

+
+ + + + +  + + + + +
#define boot_spm_interrupt_enable (  )    (__SPM_REG |= (uint8_t)_BV(SPMIE))
+
+
+ +

+Enable the SPM interrupt. +

+

+ +

+
+ + + + +
#define BOOTLOADER_SECTION   __attribute__ ((section (".bootloader")))
+
+
+ +

+Used to declare a function or variable to be placed into a new section called .bootloader. This section and its contents can then be relocated to any address (such as the bootloader NRWW area) at link-time. +

+

+ +

+
+ + + + +
#define GET_EXTENDED_FUSE_BITS   (0x0002)
+
+
+ +

+address to read the extended fuse bits, using boot_lock_fuse_bits_get +

+

+ +

+
+ + + + +
#define GET_HIGH_FUSE_BITS   (0x0003)
+
+
+ +

+address to read the high fuse bits, using boot_lock_fuse_bits_get +

+

+ +

+
+ + + + +
#define GET_LOCK_BITS   (0x0001)
+
+
+ +

+address to read the lock bits, using boot_lock_fuse_bits_get +

+

+ +

+
+ + + + +
#define GET_LOW_FUSE_BITS   (0x0000)
+
+
+ +

+address to read the low fuse bits, using boot_lock_fuse_bits_get +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__eeprom.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__eeprom.html new file mode 100644 index 0000000..dfff33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__eeprom.html @@ -0,0 +1,403 @@ + + + + + avr-libc: <avr/eeprom.h>: EEPROM handling + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/eeprom.h>: EEPROM handling


Detailed Description

+
 #include <avr/eeprom.h> 
+

+This header file declares the interface to some simple library routines suitable for handling the data EEPROM contained in the AVR microcontrollers. The implementation uses a simple polled mode interface. Applications that require interrupt-controlled EEPROM access to ensure that no time will be wasted in spinloops will have to deploy their own implementation.

+

Note:
All of the read/write functions first make sure the EEPROM is ready to be accessed. Since this may cause long delays if a write operation is still pending, time-critical applications should first poll the EEPROM e. g. using eeprom_is_ready() before attempting any actual I/O. But this functions are not wait until SELFPRGEN in SPMCSR becomes zero. Do this manually, if your softwate contains the Flash burning.

+As these functions modify IO registers, they are known to be non-reentrant. If any of these functions are used from both, standard and interrupt context, the applications must ensure proper protection (e.g. by disabling interrupts before accessing them).

+All write functions force erase_and_write programming mode.

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

IAR C compatibility defines



#define _EEPUT(addr, val)   eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
#define _EEGET(var, addr)   (var) = eeprom_read_byte ((const uint8_t *)(addr))

Defines

#define EEMEM   __attribute__((section(".eeprom")))
#define eeprom_is_ready()
#define eeprom_busy_wait()   do {} while (!eeprom_is_ready())

Functions

static __ATTR_PURE__
+__inline__ uint8_t 
eeprom_read_byte (const uint8_t *__p)
static __ATTR_PURE__
+__inline__ uint16_t 
eeprom_read_word (const uint16_t *__p)
static __ATTR_PURE__
+__inline__ uint32_t 
eeprom_read_dword (const uint32_t *__p)
static __inline__ void eeprom_read_block (void *__dst, const void *__src, size_t __n)
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
static __inline__ void eeprom_write_word (uint16_t *__p, uint16_t __value)
static __inline__ void eeprom_write_dword (uint32_t *__p, uint32_t __value)
static __inline__ void eeprom_write_block (const void *__src, void *__dst, size_t __n)
+


Define Documentation

+ +
+
+ + + + + + + + + + + + +
#define _EEGET (var,
addr   )    (var) = eeprom_read_byte ((const uint8_t *)(addr))
+
+
+ +

+Read a byte from EEPROM. Compatibility define for IAR C. +

+

+ +

+
+ + + + + + + + + + + + +
#define _EEPUT (addr,
val   )    eeprom_write_byte ((uint8_t *)(addr), (uint8_t)(val))
+
+
+ +

+Write a byte to EEPROM. Compatibility define for IAR C. +

+

+ +

+
+ + + + +
#define EEMEM   __attribute__((section(".eeprom")))
+
+
+ +

+Attribute expression causing a variable to be allocated within the .eeprom section. +

+

+ +

+
+ + + + +  + + + + +
#define eeprom_busy_wait (  )    do {} while (!eeprom_is_ready())
+
+
+ +

+Loops until the eeprom is no longer busy.

Returns:
Nothing.
+ +
+

+ +

+
+ + + + +  + + + + +
#define eeprom_is_ready (  ) 
+
+
+ +

+

Returns:
1 if EEPROM is ready for a new read/write operation, 0 if not.
+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __inline__ void eeprom_read_block (void *  __dst,
const void *  __src,
size_t  __n 
) [static]
+
+
+ +

+Read a block of __n bytes from EEPROM address __src to SRAM __dst. +

+

+ +

+
+ + + + + + + + + +
static __ATTR_PURE__ __inline__ uint8_t eeprom_read_byte (const uint8_t __p  )  [static]
+
+
+ +

+Read one byte from EEPROM address __p. +

+

+ +

+
+ + + + + + + + + +
static __ATTR_PURE__ __inline__ uint32_t eeprom_read_dword (const uint32_t __p  )  [static]
+
+
+ +

+Read one 32-bit double word (little endian) from EEPROM address __p. +

+

+ +

+
+ + + + + + + + + +
static __ATTR_PURE__ __inline__ uint16_t eeprom_read_word (const uint16_t __p  )  [static]
+
+
+ +

+Read one 16-bit word (little endian) from EEPROM address __p. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
static __inline__ void eeprom_write_block (const void *  __src,
void *  __dst,
size_t  __n 
) [static]
+
+
+ +

+Write a block of __n bytes to EEPROM address __dst from __src.

Note:
The argument order is mismatch with common functions like strcpy().
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static __inline__ void eeprom_write_byte (uint8_t __p,
uint8_t  __value 
) [static]
+
+
+ +

+Write a byte __value to EEPROM address __p. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static __inline__ void eeprom_write_dword (uint32_t __p,
uint32_t  __value 
) [static]
+
+
+ +

+Write a 32-bit double word __value to EEPROM address __p. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static __inline__ void eeprom_write_word (uint16_t __p,
uint16_t  __value 
) [static]
+
+
+ +

+Write a word __value to EEPROM address __p. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__errno.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__errno.html new file mode 100644 index 0000000..ee4dcea --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__errno.html @@ -0,0 +1,81 @@ + + + + + avr-libc: <errno.h>: System Errors + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<errno.h>: System Errors


Detailed Description

+
 #include <errno.h>
+

+Some functions in the library set the global variable errno when an error occurs. The file, <errno.h>, provides symbolic names for various error codes.

+

Warning:
The errno global variable is not safe to use in a threaded or multi-task system. A race condition can occur if a task is interrupted between the call which sets error and when the task examines errno. If another task changes errno during this time, the result will be incorrect for the interrupted task.
+ +

+ + + + + + + +

Defines

#define EDOM   33
#define ERANGE   34
+


Define Documentation

+ +
+
+ + + + +
#define EDOM   33
+
+
+ +

+Domain error. +

+

+ +

+
+ + + + +
#define ERANGE   34
+
+
+ +

+Range error. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__fuse.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__fuse.html new file mode 100644 index 0000000..4cba113 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__fuse.html @@ -0,0 +1,113 @@ + + + + + avr-libc: <avr/fuse.h>: Fuse Support + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/fuse.h>: Fuse Support

Introduction
+The Fuse API allows a user to specify the fuse settings for the specific AVR device they are compiling for. These fuse settings will be placed in a special section in the ELF output file, after linking.

+Programming tools can take advantage of the fuse information embedded in the ELF file, by extracting this information and determining if the fuses need to be programmed before programming the Flash and EEPROM memories. This also allows a single ELF file to contain all the information needed to program an AVR.

+To use the Fuse API, include the <avr/io.h> header file, which in turn automatically includes the individual I/O header file and the <avr/fuse.h> file. These other two files provides everything necessary to set the AVR fuses.

+

Fuse API
+Each I/O header file must define the FUSE_MEMORY_SIZE macro which is defined to the number of fuse bytes that exist in the AVR device.

+A new type, __fuse_t, is defined as a structure. The number of fields in this structure are determined by the number of fuse bytes in the FUSE_MEMORY_SIZE macro.

+If FUSE_MEMORY_SIZE == 1, there is only a single field: byte, of type unsigned char.

+If FUSE_MEMORY_SIZE == 2, there are two fields: low, and high, of type unsigned char.

+If FUSE_MEMORY_SIZE == 3, there are three fields: low, high, and extended, of type unsigned char.

+If FUSE_MEMORY_SIZE > 3, there is a single field: byte, which is an array of unsigned char with the size of the array being FUSE_MEMORY_SIZE.

+A convenience macro, FUSEMEM, is defined as a GCC attribute for a custom-named section of ".fuse".

+A convenience macro, FUSES, is defined that declares a variable, __fuse, of type __fuse_t with the attribute defined by FUSEMEM. This variable allows the end user to easily set the fuse data.

+

Note:
If a device-specific I/O header file has previously defined FUSEMEM, then FUSEMEM is not redefined. If a device-specific I/O header file has previously defined FUSES, then FUSES is not redefined.
+Each AVR device I/O header file has a set of defined macros which specify the actual fuse bits available on that device. The AVR fuses have inverted values, logical 1 for an unprogrammed (disabled) bit and logical 0 for a programmed (enabled) bit. The defined macros for each individual fuse bit represent this in their definition by a bit-wise inversion of a mask. For example, the FUSE_EESAVE fuse in the ATmega128 is defined as:
    #define FUSE_EESAVE      ~_BV(3)
+
Note:
The _BV macro creates a bit mask from a bit number. It is then inverted to represent logical values for a fuse memory byte.
+To combine the fuse bits macros together to represent a whole fuse byte, use the bitwise AND operator, like so:
    (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN)
+

+Each device I/O header file also defines macros that provide default values for each fuse byte that is available. LFUSE_DEFAULT is defined for a Low Fuse byte. HFUSE_DEFAULT is defined for a High Fuse byte. EFUSE_DEFAULT is defined for an Extended Fuse byte.

+If FUSE_MEMORY_SIZE > 3, then the I/O header file defines macros that provide default values for each fuse byte like so: FUSE0_DEFAULT FUSE1_DEFAULT FUSE2_DEFAULT FUSE3_DEFAULT FUSE4_DEFAULT ....

+

API Usage Example
+Putting all of this together is easy. Using C99's designated initializers:

+

    #include <avr/io.h>
+
+    FUSES = 
+    {
+        .low = LFUSE_DEFAULT,
+        .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),
+        .extended = EFUSE_DEFAULT,
+    };
+
+    int main(void)
+    {
+        return 0;
+    }
+

+Or, using the variable directly instead of the FUSES macro,

+

    #include <avr/io.h>
+
+    __fuse_t __fuse __attribute__((section (".fuse"))) = 
+    {
+        .low = LFUSE_DEFAULT,
+        .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),
+        .extended = EFUSE_DEFAULT,
+    };
+
+    int main(void)
+    {
+        return 0;
+    }
+

+If you are compiling in C++, you cannot use the designated intializers so you must do:

+

    #include <avr/io.h>
+
+    FUSES = 
+    {
+        LFUSE_DEFAULT, // .low
+        (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), // .high
+        EFUSE_DEFAULT, // .extended
+    };
+
+    int main(void)
+    {
+        return 0;
+    }
+

+However there are a number of caveats that you need to be aware of to use this API properly.

+Be sure to include <avr/io.h> to get all of the definitions for the API. The FUSES macro defines a global variable to store the fuse data. This variable is assigned to its own linker section. Assign the desired fuse values immediately in the variable initialization.

+The .fuse section in the ELF file will get its values from the initial variable assignment ONLY. This means that you can NOT assign values to this variable in functions and the new values will not be put into the ELF .fuse section.

+The global variable is declared in the FUSES macro has two leading underscores, which means that it is reserved for the "implementation", meaning the library, so it will not conflict with a user-named variable.

+You must initialize ALL fields in the __fuse_t structure. This is because the fuse bits in all bytes default to a logical 1, meaning unprogrammed. Normal uninitialized data defaults to all locgial zeros. So it is vital that all fuse bytes are initialized, even with default data. If they are not, then the fuse bits may not programmed to the desired settings.

+Be sure to have the -mmcu=device flag in your compile command line and your linker command line to have the correct device selected and to have the correct I/O header file included when you include <avr/io.h>.

+You can print out the contents of the .fuse section in the ELF file by using this command line:

    avr-objdump -s -j .fuse <ELF file>
+
The section contents shows the address on the left, then the data going from lower address to a higher address, left to right. +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__interrupts.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__interrupts.html new file mode 100644 index 0000000..cc28cc8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__interrupts.html @@ -0,0 +1,667 @@ + + + + + avr-libc: <avr/interrupt.h>: Interrupts + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/interrupt.h>: Interrupts


Detailed Description

+
Note:
This discussion of interrupts was originally taken from Rich Neswold's document. See Acknowledgments.
+

Introduction to avr-libc's interrupt handling

+

+It's nearly impossible to find compilers that agree on how to handle interrupt code. Since the C language tries to stay away from machine dependent details, each compiler writer is forced to design their method of support.

+In the AVR-GCC environment, the vector table is predefined to point to interrupt routines with predetermined names. By using the appropriate name, your routine will be called when the corresponding interrupt occurs. The device library provides a set of default interrupt routines, which will get used if you don't define your own.

+Patching into the vector table is only one part of the problem. The compiler uses, by convention, a set of registers when it's normally executing compiler-generated code. It's important that these registers, as well as the status register, get saved and restored. The extra code needed to do this is enabled by tagging the interrupt function with __attribute__((signal)).

+These details seem to make interrupt routines a little messy, but all these details are handled by the Interrupt API. An interrupt routine is defined with ISR(). This macro register and mark the routine as an interrupt handler for the specified peripheral. The following is an example definition of a handler for the ADC interrupt.

+

#include <avr/interrupt.h>
+
+ISR(ADC_vect)
+{
+    // user code here
+}
+

+Refer to the chapter explaining assembler programming for an explanation about interrupt routines written solely in assembler language.

+

Catch-all interrupt vector

+

+If an unexpected interrupt occurs (interrupt is enabled and no handler is installed, which usually indicates a bug), then the default action is to reset the device by jumping to the reset vector. You can override this by supplying a function named BADISR_vect which should be defined with ISR() as such. (The name BADISR_vect is actually an alias for __vector_default. The latter must be used inside assembly code in case <avr/interrupt.h> is not included.)

+

#include <avr/interrupt.h>
+
+ISR(BADISR_vect)
+{
+    // user code here
+}
+

+

Nested interrupts

+

+The AVR hardware clears the global interrupt flag in SREG before entering an interrupt vector. Thus, normally interrupts will remain disabled inside the handler until the handler exits, where the RETI instruction (that is emitted by the compiler as part of the normal function epilogue for an interrupt handler) will eventually re-enable further interrupts. For that reason, interrupt handlers normally do not nest. For most interrupt handlers, this is the desired behaviour, for some it is even required in order to prevent infinitely recursive interrupts (like UART interrupts, or level-triggered external interrupts). In rare circumstances though it might be desired to re-enable the global interrupt flag as early as possible in the interrupt handler, in order to not defer any other interrupt more than absolutely needed. This could be done using an sei() instruction right at the beginning of the interrupt handler, but this still leaves few instructions inside the compiler-generated function prologue to run with global interrupts disabled. The compiler can be instructed to insert an SEI instruction right at the beginning of an interrupt handler by declaring the handler the following way:

+

ISR(XXX_vect, ISR_NOBLOCK)
+{
+  ...
+}
+

+where XXX_vect is the name of a valid interrupt vector for the MCU type in question, as explained below.

+

Two vectors sharing the same code

+

+In some circumstances, the actions to be taken upon two different interrupts might be completely identical so a single implementation for the ISR would suffice. For example, pin-change interrupts arriving from two different ports could logically signal an event that is independent from the actual port (and thus interrupt vector) where it happened. Sharing interrupt vector code can be accomplished using the ISR_ALIASOF() attribute to the ISR macro:

+

ISR(PCINT0_vect)
+{
+  ...
+  // Code to handle the event.
+}
+
+ISR(PCINT1_vect, ISR_ALIASOF(PCINT0_vect));
+

+

Note:
There is no body to the aliased ISR.
+Note that the ISR_ALIASOF() feature requires GCC 4.2 or above (or a patched version of GCC 4.1.x). See the documentation of the ISR_ALIAS() macro for an implementation which is less elegant but could be applied to all compiler versions.

+

Empty interrupt service routines

+

+In rare circumstances, in interrupt vector does not need any code to be implemented at all. The vector must be declared anyway, so when the interrupt triggers it won't execute the BADISR_vect code (which by default restarts the application).

+This could for example be the case for interrupts that are solely enabled for the purpose of getting the controller out of sleep_mode().

+A handler for such an interrupt vector can be declared using the EMPTY_INTERRUPT() macro:

+

EMPTY_INTERRUPT(ADC_vect);
+

+

Note:
There is no body to this macro.
+

Manually defined ISRs

+

+In some circumstances, the compiler-generated prologue and epilogue of the ISR might not be optimal for the job, and a manually defined ISR could be considered particularly to speedup the interrupt handling.

+One solution to this could be to implement the entire ISR as manual assembly code in a separate (assembly) file. See Combining C and assembly source files for an example of how to implement it that way.

+Another solution is to still implement the ISR in C language but take over the compiler's job of generating the prologue and epilogue. This can be done using the ISR_NAKED attribute to the ISR() macro. Note that the compiler does not generate anything as prologue or epilogue, so the final reti() must be provided by the actual implementation. SREG must be manually saved if the ISR code modifies it, and the compiler-implied assumption of __zero_reg__ always being 0 could be wrong (e. g. when interrupting right after of a MUL instruction).

+

ISR(TIMER1_OVF_vect, ISR_NAKED)
+{
+  PORTB |= _BV(0);  // results in SBI which does not affect SREG
+  reti();
+}
+

+

Choosing the vector: Interrupt vector names

+

+The interrupt is chosen by supplying one of the symbols in following table.

+There are currently two different styles present for naming the vectors. One form uses names starting with SIG_, followed by a relatively verbose but arbitrarily chosen name describing the interrupt vector. This has been the only available style in avr-libc up to version 1.2.x.

+Starting with avr-libc version 1.4.0, a second style of interrupt vector names has been added, where a short phrase for the vector description is followed by _vect. The short phrase matches the vector name as described in the datasheet of the respective device (and in Atmel's XML files), with spaces replaced by an underscore and other non-alphanumeric characters dropped. Using the suffix _vect is intented to improve portability to other C compilers available for the AVR that use a similar naming convention.

+The historical naming style might become deprecated in a future release, so it is not recommended for new projects.

+

Note:
The ISR() macro cannot really spell-check the argument passed to them. Thus, by misspelling one of the names below in a call to ISR(), a function will be created that, while possibly being usable as an interrupt function, is not actually wired into the interrupt vector table. The compiler will generate a warning if it detects a suspiciously looking name of a ISR() function (i.e. one that after macro replacement does not start with "__vector_").
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vector name Old vector name Description Applicable for device

+

ADC_vect SIG_ADC ADC Conversion Complete AT90S2333, AT90S4433, AT90S4434, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny13, ATtiny15, ATtiny26, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
ANALOG_COMP_0_vect SIG_COMPARATOR0 Analog Comparator 0 AT90PWM3, AT90PWM2, AT90PWM1
ANALOG_COMP_1_vect SIG_COMPARATOR1 Analog Comparator 1 AT90PWM3, AT90PWM2, AT90PWM1
ANALOG_COMP_2_vect SIG_COMPARATOR2 Analog Comparator 2 AT90PWM3, AT90PWM2, AT90PWM1
ANALOG_COMP_vect SIG_COMPARATOR Analog Comparator AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
ANA_COMP_vect SIG_COMPARATOR Analog Comparator AT90S1200, AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega16, ATmega161, ATmega162, ATmega163, ATmega32, ATmega323, ATmega8, ATmega8515, ATmega8535, ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny2313, ATtiny26, ATtiny28, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861
CANIT_vect SIG_CAN_INTERRUPT1 CAN Transfer Complete or Error AT90CAN128, AT90CAN32, AT90CAN64
EEPROM_READY_vect SIG_EEPROM_READY, SIG_EE_READY ATtiny2313
EE_RDY_vect SIG_EEPROM_READY EEPROM Ready AT90S2333, AT90S4433, AT90S4434, AT90S8535, ATmega16, ATmega161, ATmega162, ATmega163, ATmega32, ATmega323, ATmega8, ATmega8515, ATmega8535, ATtiny12, ATtiny13, ATtiny15, ATtiny26, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861
EE_READY_vect SIG_EEPROM_READY EEPROM Ready AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
EXT_INT0_vect SIG_INTERRUPT0 External Interrupt Request 0 ATtiny24, ATtiny44, ATtiny84
INT0_vect SIG_INTERRUPT0 External Interrupt 0 AT90S1200, AT90S2313, AT90S2323, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny26, ATtiny28, ATtiny43U, ATtiny48, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
INT1_vect SIG_INTERRUPT1 External Interrupt Request 1 AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega168P, ATmega32, ATmega323, ATmega328P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny28, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
INT2_vect SIG_INTERRUPT2 External Interrupt Request 2 AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega32, ATmega323, ATmega32HVB, ATmega406, ATmega64, ATmega8515, ATmega8535, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
INT3_vect SIG_INTERRUPT3 External Interrupt Request 3 AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega32HVB, ATmega406, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
INT4_vect SIG_INTERRUPT4 External Interrupt Request 4 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
INT5_vect SIG_INTERRUPT5 External Interrupt Request 5 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
INT6_vect SIG_INTERRUPT6 External Interrupt Request 6 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
INT7_vect SIG_INTERRUPT7 External Interrupt Request 7 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
IO_PINS_vect SIG_PIN, SIG_PIN_CHANGE External Interrupt Request 0 ATtiny11, ATtiny12, ATtiny15, ATtiny26
LCD_vect SIG_LCD LCD Start of Frame ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega3290P, ATmega649, ATmega6490
LOWLEVEL_IO_PINS_vect SIG_PIN Low-level Input on Port B ATtiny28
OVRIT_vect SIG_CAN_OVERFLOW1 CAN Timer Overrun AT90CAN128, AT90CAN32, AT90CAN64
PCINT0_vect SIG_PIN_CHANGE0 Pin Change Interrupt Request 0 ATmega162, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny13, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
PCINT1_vect SIG_PIN_CHANGE1 Pin Change Interrupt Request 1 ATmega162, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, AT90USB162, AT90USB82
PCINT2_vect SIG_PIN_CHANGE2 Pin Change Interrupt Request 2 ATmega3250, ATmega3250P, ATmega328P, ATmega3290, ATmega3290P, ATmega48P, ATmega6450, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny48
PCINT3_vect SIG_PIN_CHANGE3 Pin Change Interrupt Request 3 ATmega3250, ATmega3250P, ATmega3290, ATmega3290P, ATmega6450, ATmega6490, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny48
PCINT_vect SIG_PIN_CHANGE, SIG_PCINT ATtiny2313, ATtiny261, ATtiny461, ATtiny861
PSC0_CAPT_vect SIG_PSC0_CAPTURE PSC0 Capture Event AT90PWM3, AT90PWM2, AT90PWM1
PSC0_EC_vect SIG_PSC0_END_CYCLE PSC0 End Cycle AT90PWM3, AT90PWM2, AT90PWM1
PSC1_CAPT_vect SIG_PSC1_CAPTURE PSC1 Capture Event AT90PWM3, AT90PWM2, AT90PWM1
PSC1_EC_vect SIG_PSC1_END_CYCLE PSC1 End Cycle AT90PWM3, AT90PWM2, AT90PWM1
PSC2_CAPT_vect SIG_PSC2_CAPTURE PSC2 Capture Event AT90PWM3, AT90PWM2, AT90PWM1
PSC2_EC_vect SIG_PSC2_END_CYCLE PSC2 End Cycle AT90PWM3, AT90PWM2, AT90PWM1
SPI_STC_vect SIG_SPI Serial Transfer Complete AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny48, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
SPM_RDY_vect SIG_SPM_READY Store Program Memory Ready ATmega16, ATmega162, ATmega32, ATmega323, ATmega8, ATmega8515, ATmega8535
SPM_READY_vect SIG_SPM_READY Store Program Memory Read AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega406, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIM0_COMPA_vect SIG_OUTPUT_COMPARE0A Timer/Counter Compare Match A ATtiny13, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85
TIM0_COMPB_vect SIG_OUTPUT_COMPARE0B Timer/Counter Compare Match B ATtiny13, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85
TIM0_OVF_vect SIG_OVERFLOW0 Timer/Counter0 Overflow ATtiny13, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85
TIM1_CAPT_vect SIG_INPUT_CAPTURE1 Timer/Counter1 Capture Event ATtiny24, ATtiny44, ATtiny84
TIM1_COMPA_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match A ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85
TIM1_COMPB_vect SIG_OUTPUT_COMPARE1B Timer/Counter1 Compare Match B ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85
TIM1_OVF_vect SIG_OVERFLOW1 Timer/Counter1 Overflow ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85
TIMER0_CAPT_vect SIG_INPUT_CAPTURE0 ADC Conversion Complete ATtiny261, ATtiny461, ATtiny861
TIMER0_COMPA_vect SIG_OUTPUT_COMPARE0A TimerCounter0 Compare Match A ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER0_COMPB_vect SIG_OUTPUT_COMPARE0B, SIG_OUTPUT_COMPARE0_B Timer Counter 0 Compare Match B AT90PWM3, AT90PWM2, AT90PWM1, ATmega1284P, ATmega168P, ATmega328P, ATmega32HVB, ATmega48P, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER0_COMP_A_vect SIG_OUTPUT_COMPARE0A, SIG_OUTPUT_COMPARE0_A Timer/Counter0 Compare Match A AT90PWM3, AT90PWM2, AT90PWM1
TIMER0_COMP_vect SIG_OUTPUT_COMPARE0 Timer/Counter0 Compare Match AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega16, ATmega161, ATmega162, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8515, ATmega8535
TIMER0_OVF0_vect SIG_OVERFLOW0 Timer/Counter0 Overflow AT90S2313, AT90S2323, AT90S2343, ATtiny22, ATtiny26
TIMER0_OVF_vect SIG_OVERFLOW0 Timer/Counter0 Overflow AT90S1200, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny11, ATtiny12, ATtiny15, ATtiny2313, ATtiny28, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER1_CAPT1_vect SIG_INPUT_CAPTURE1 Timer/Counter1 Capture Event AT90S2313
TIMER1_CAPT_vect SIG_INPUT_CAPTURE1 Timer/Counter Capture Event AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny2313, ATtiny48, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER1_CMPA_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match 1A ATtiny26
TIMER1_CMPB_vect SIG_OUTPUT_COMPARE1B Timer/Counter1 Compare Match 1B ATtiny26
TIMER1_COMP1_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match AT90S2313
TIMER1_COMPA_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match A AT90S4414, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER1_COMPB_vect SIG_OUTPUT_COMPARE1B Timer/Counter1 Compare MatchB AT90S4414, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER1_COMPC_vect SIG_OUTPUT_COMPARE1C Timer/Counter1 Compare Match C AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER1_COMPD_vect SIG_OUTPUT_COMPARE0D Timer/Counter1 Compare Match D ATtiny261, ATtiny461, ATtiny861
TIMER1_COMP_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match AT90S2333, AT90S4433, ATtiny15
TIMER1_OVF1_vect SIG_OVERFLOW1 Timer/Counter1 Overflow AT90S2313, ATtiny26
TIMER1_OVF_vect SIG_OVERFLOW1 Timer/Counter1 Overflow AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny15, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER2_COMPA_vect SIG_OUTPUT_COMPARE2A Timer/Counter2 Compare Match A ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER2_COMPB_vect SIG_OUTPUT_COMPARE2B Timer/Counter2 Compare Match A ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER2_COMP_vect SIG_OUTPUT_COMPARE2 Timer/Counter2 Compare Match AT90S4434, AT90S8535, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8535
TIMER2_OVF_vect SIG_OVERFLOW2 Timer/Counter2 Overflow AT90S4434, AT90S8535, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER3_CAPT_vect SIG_INPUT_CAPTURE3 Timer/Counter3 Capture Event AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER3_COMPA_vect SIG_OUTPUT_COMPARE3A Timer/Counter3 Compare Match A AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER3_COMPB_vect SIG_OUTPUT_COMPARE3B Timer/Counter3 Compare Match B AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER3_COMPC_vect SIG_OUTPUT_COMPARE3C Timer/Counter3 Compare Match C AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER3_OVF_vect SIG_OVERFLOW3 Timer/Counter3 Overflow AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TIMER4_CAPT_vect SIG_INPUT_CAPTURE4 Timer/Counter4 Capture Event ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER4_COMPA_vect SIG_OUTPUT_COMPARE4A Timer/Counter4 Compare Match A ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER4_COMPB_vect SIG_OUTPUT_COMPARE4B Timer/Counter4 Compare Match B ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER4_COMPC_vect SIG_OUTPUT_COMPARE4C Timer/Counter4 Compare Match C ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER4_OVF_vect SIG_OVERFLOW4 Timer/Counter4 Overflow ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER5_CAPT_vect SIG_INPUT_CAPTURE5 Timer/Counter5 Capture Event ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER5_COMPA_vect SIG_OUTPUT_COMPARE5A Timer/Counter5 Compare Match A ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER5_COMPB_vect SIG_OUTPUT_COMPARE5B Timer/Counter5 Compare Match B ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER5_COMPC_vect SIG_OUTPUT_COMPARE5C Timer/Counter5 Compare Match C ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TIMER5_OVF_vect SIG_OVERFLOW5 Timer/Counter5 Overflow ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
TWI_vect SIG_2WIRE_SERIAL 2-wire Serial Interface AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega16, ATmega163, ATmega168P, ATmega32, ATmega323, ATmega328P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny48, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
TXDONE_vect SIG_TXDONE Transmission Done, Bit Timer Flag 2 Interrupt AT86RF401
TXEMPTY_vect SIG_TXBE Transmit Buffer Empty, Bit Itmer Flag 0 Interrupt AT86RF401
UART0_RX_vect SIG_UART0_RECV UART0, Rx Complete ATmega161
UART0_TX_vect SIG_UART0_TRANS UART0, Tx Complete ATmega161
UART0_UDRE_vect SIG_UART0_DATA UART0 Data Register Empty ATmega161
UART1_RX_vect SIG_UART1_RECV UART1, Rx Complete ATmega161
UART1_TX_vect SIG_UART1_TRANS UART1, Tx Complete ATmega161
UART1_UDRE_vect SIG_UART1_DATA UART1 Data Register Empty ATmega161
UART_RX_vect SIG_UART_RECV UART, Rx Complete AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega103, ATmega163, ATmega8515
UART_TX_vect SIG_UART_TRANS UART, Tx Complete AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega103, ATmega163, ATmega8515
UART_UDRE_vect SIG_UART_DATA UART Data Register Empty AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega103, ATmega163, ATmega8515
USART0_RXC_vect SIG_USART0_RECV USART0, Rx Complete ATmega162
USART0_RX_vect SIG_UART0_RECV USART0, Rx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega329, ATmega64, ATmega645, ATmega649, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644
USART0_TXC_vect SIG_USART0_TRANS USART0, Tx Complete ATmega162
USART0_TX_vect SIG_UART0_TRANS USART0, Tx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644
USART0_UDRE_vect SIG_UART0_DATA USART0 Data Register Empty AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega329, ATmega64, ATmega645, ATmega649, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644
USART1_RXC_vect SIG_USART1_RECV USART1, Rx Complete ATmega162
USART1_RX_vect SIG_UART1_RECV USART1, Rx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
USART1_TXC_vect SIG_USART1_TRANS USART1, Tx Complete ATmega162
USART1_TX_vect SIG_UART1_TRANS USART1, Tx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
USART1_UDRE_vect SIG_UART1_DATA USART1, Data Register Empty AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
USART2_RX_vect SIG_USART2_RECV USART2, Rx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
USART2_TX_vect SIG_USART2_TRANS USART2, Tx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
USART2_UDRE_vect SIG_USART2_DATA USART2 Data register Empty ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
USART3_RX_vect SIG_USART3_RECV USART3, Rx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
USART3_TX_vect SIG_USART3_TRANS USART3, Tx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
USART3_UDRE_vect SIG_USART3_DATA USART3 Data register Empty ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561
USART_RXC_vect SIG_USART_RECV, SIG_UART_RECV USART, Rx Complete ATmega16, ATmega32, ATmega323, ATmega8
USART_RX_vect SIG_USART_RECV, SIG_UART_RECV USART, Rx Complete AT90PWM3, AT90PWM2, AT90PWM1, ATmega168P, ATmega3250, ATmega3250P, ATmega328P, ATmega3290, ATmega3290P, ATmega48P, ATmega6450, ATmega6490, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATtiny2313
USART_TXC_vect SIG_USART_TRANS, SIG_UART_TRANS USART, Tx Complete ATmega16, ATmega32, ATmega323, ATmega8
USART_TX_vect SIG_USART_TRANS, SIG_UART_TRANS USART, Tx Complete AT90PWM3, AT90PWM2, AT90PWM1, ATmega168P, ATmega328P, ATmega48P, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATtiny2313
USART_UDRE_vect SIG_USART_DATA, SIG_UART_DATA USART Data Register Empty AT90PWM3, AT90PWM2, AT90PWM1, ATmega16, ATmega168P, ATmega32, ATmega323, ATmega3250, ATmega3250P, ATmega328P, ATmega3290, ATmega3290P, ATmega48P, ATmega6450, ATmega6490, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATtiny2313
USI_OVERFLOW_vect SIG_USI_OVERFLOW USI Overflow ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATtiny2313
USI_OVF_vect SIG_USI_OVERFLOW USI Overflow ATtiny26, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861
USI_START_vect SIG_USI_START USI Start Condition ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATtiny2313, ATtiny43U, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861
USI_STRT_vect SIG_USI_START USI Start ATtiny26
USI_STR_vect SIG_USI_START USI START ATtiny24, ATtiny44, ATtiny84
WATCHDOG_vect SIG_WATCHDOG_TIMEOUT Watchdog Time-out ATtiny24, ATtiny44, ATtiny84
WDT_OVERFLOW_vect SIG_WATCHDOG_TIMEOUT, SIG_WDT_OVERFLOW Watchdog Timer Overflow ATtiny2313
WDT_vect SIG_WDT, SIG_WATCHDOG_TIMEOUT Watchdog Timeout Interrupt AT90PWM3, AT90PWM2, AT90PWM1, ATmega1284P, ATmega168P, ATmega328P, ATmega32HVB, ATmega406, ATmega48P, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny13, ATtiny43U, ATtiny48, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646
+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Global manipulation of the interrupt flag

The global interrupt flag is maintained in the I bit of the status register (SREG).

#define sei()
#define cli()

Macros for writing interrupt handler functions



#define ISR(vector, attributes)
#define SIGNAL(vector)
#define EMPTY_INTERRUPT(vector)
#define ISR_ALIAS(vector, target_vector)
#define reti()
#define BADISR_vect

ISR attributes



#define ISR_BLOCK
#define ISR_NOBLOCK
#define ISR_NAKED
#define ISR_ALIASOF(target_vector)
+


Define Documentation

+ +
+
+ + + + +
#define BADISR_vect
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+This is a vector which is aliased to __vector_default, the vector executed when an ISR fires with no accompanying ISR handler. This may be used along with the ISR() macro to create a catch-all for undefined but used ISRs for debugging purposes. +

+

+ +

+
+ + + + +  + + + + +
#define cli (  ) 
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+Disables all interrupts by clearing the global interrupt mask. This function actually compiles into a single line of assembly, so there is no function call overhead. +

+

+ +

+
+ + + + + + + + + +
#define EMPTY_INTERRUPT (vector   ) 
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+Defines an empty interrupt handler function. This will not generate any prolog or epilog code and will only return from the ISR. Do not define a function body as this will define it for you. Example:

 EMPTY_INTERRUPT(ADC_vect);
+
+
+

+ +

+
+ + + + + + + + + + + + +
#define ISR (vector,
attributes   ) 
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+Introduces an interrupt handler function (interrupt service routine) that runs with global interrupts initially disabled by default with no attributes specified.

+The attributes are optional and alter the behaviour and resultant generated code of the interrupt routine. Multiple attributes may be used for a single function, with a space seperating each attribute.

+Valid attributes are ISR_BLOCK, ISR_NOBLOCK, ISR_NAKED and ISR_ALIASOF(vect).

+vector must be one of the interrupt vector names that are valid for the particular MCU type. +

+

+ +

+
+ + + + + + + + + + + + +
#define ISR_ALIAS (vector,
target_vector   ) 
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+Aliases a given vector to another one in the same manner as the ISR_ALIASOF attribute for the ISR() macro. Unlike the ISR_ALIASOF attribute macro however, this is compatible for all versions of GCC rather than just GCC version 4.2 onwards.

+

Note:
This macro creates a trampoline function for the aliased macro. This will result in a two cycle penalty for the aliased vector compared to the ISR the vector is aliased to, due to the JMP/RJMP opcode used.
+
Deprecated:
For new code, the use of ISR(..., ISR_ALIASOF(...)) is recommended.
+Example:
    ISR(INT0_vect)
+    {
+        PORTB = 42;
+    }
+
+    ISR_ALIAS(INT1_vect, INT0_vect);
+
+
+

+ +

+
+ + + + + + + + + +
#define ISR_ALIASOF (target_vector   ) 
+
+
+ +

+

 #include <avr/interrupt.h>
+

+The ISR is linked to another ISR, specified by the vect parameter. This is compatible with GCC 4.2 and greater only.

+Use this attribute in the attributes parameter of the ISR macro. +

+

+ +

+
+ + + + +
#define ISR_BLOCK
+
+
+ +

+

 # include <avr/interrupt.h> 
+

+Identical to an ISR with no attributes specified. Global interrupts are initially disabled by the AVR hardware when entering the ISR, without the compiler modifying this state.

+Use this attribute in the attributes parameter of the ISR macro. +

+

+ +

+
+ + + + +
#define ISR_NAKED
+
+
+ +

+

 # include <avr/interrupt.h> 
+

+ISR is created with no prologue or epilogue code. The user code is responsible for preservation of the machine state including the SREG register, as well as placing a reti() at the end of the interrupt routine.

+Use this attribute in the attributes parameter of the ISR macro. +

+

+ +

+
+ + + + +
#define ISR_NOBLOCK
+
+
+ +

+

 # include <avr/interrupt.h> 
+

+ISR runs with global interrupts initially enabled. The interrupt enable flag is activated by the compiler as early as possible within the ISR to ensure minimal processing delay for nested interrupts.

+This may be used to create nested ISRs, however care should be taken to avoid stack overflows, or to avoid infinitely entering the ISR for those cases where the AVR hardware does not clear the respective interrupt flag before entering the ISR.

+Use this attribute in the attributes parameter of the ISR macro. +

+

+ +

+
+ + + + +  + + + + +
#define reti (  ) 
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+Returns from an interrupt routine, enabling global interrupts. This should be the last command executed before leaving an ISR defined with the ISR_NAKED attribute.

+This macro actually compiles into a single line of assembly, so there is no function call overhead. +

+

+ +

+
+ + + + +  + + + + +
#define sei (  ) 
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+Enables interrupts by setting the global interrupt mask. This function actually compiles into a single line of assembly, so there is no function call overhead. +

+

+ +

+
+ + + + + + + + + +
#define SIGNAL (vector   ) 
+
+
+ +

+

 #include <avr/interrupt.h> 
+

+Introduces an interrupt handler function that runs with global interrupts initially disabled.

+This is the same as the ISR macro without optional attributes.

Deprecated:
Do not use SIGNAL() in new code. Use ISR() instead.
+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__inttypes.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__inttypes.html new file mode 100644 index 0000000..349693e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__inttypes.html @@ -0,0 +1,1709 @@ + + + + + avr-libc: <inttypes.h>: Integer Type conversions + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<inttypes.h>: Integer Type conversions


Detailed Description

+
 #include <inttypes.h> 
+

+This header file includes the exact-width integer definitions from <stdint.h>, and extends them with additional facilities provided by the implementation.

+Currently, the extensions include two additional integer types that could hold a "far" pointer (i.e. a code pointer that can address more than 64 KB), as well as standard names for all printf and scanf formatting options that are supported by the <stdio.h>: Standard IO facilities. As the library does not support the full range of conversion specifiers from ISO 9899:1999, only those conversions that are actually implemented will be listed here.

+The idea behind these conversion macros is that, for each of the types defined by <stdint.h>, a macro will be supplied that portably allows formatting an object of that type in printf() or scanf() operations. Example:

+

    #include <inttypes.h>
+
+    uint8_t smallval;
+    int32_t longval;
+    ...
+    printf("The hexadecimal value of smallval is %" PRIx8
+           ", the decimal value of longval is %" PRId32 ".\n",
+           smallval, longval);
+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Far pointers for memory access >64K



typedef int32_t int_farptr_t
typedef uint32_t uint_farptr_t

macros for printf and scanf format specifiers

For C++, these are only included if __STDC_LIMIT_MACROS is defined before including <inttypes.h>.

#define PRId8   "d"
#define PRIdLEAST8   "d"
#define PRIdFAST8   "d"
#define PRIi8   "i"
#define PRIiLEAST8   "i"
#define PRIiFAST8   "i"
#define PRId16   "d"
#define PRIdLEAST16   "d"
#define PRIdFAST16   "d"
#define PRIi16   "i"
#define PRIiLEAST16   "i"
#define PRIiFAST16   "i"
#define PRId32   "ld"
#define PRIdLEAST32   "ld"
#define PRIdFAST32   "ld"
#define PRIi32   "li"
#define PRIiLEAST32   "li"
#define PRIiFAST32   "li"
#define PRIdPTR   PRId16
#define PRIiPTR   PRIi16
#define PRIo8   "o"
#define PRIoLEAST8   "o"
#define PRIoFAST8   "o"
#define PRIu8   "u"
#define PRIuLEAST8   "u"
#define PRIuFAST8   "u"
#define PRIx8   "x"
#define PRIxLEAST8   "x"
#define PRIxFAST8   "x"
#define PRIX8   "X"
#define PRIXLEAST8   "X"
#define PRIXFAST8   "X"
#define PRIo16   "o"
#define PRIoLEAST16   "o"
#define PRIoFAST16   "o"
#define PRIu16   "u"
#define PRIuLEAST16   "u"
#define PRIuFAST16   "u"
#define PRIx16   "x"
#define PRIxLEAST16   "x"
#define PRIxFAST16   "x"
#define PRIX16   "X"
#define PRIXLEAST16   "X"
#define PRIXFAST16   "X"
#define PRIo32   "lo"
#define PRIoLEAST32   "lo"
#define PRIoFAST32   "lo"
#define PRIu32   "lu"
#define PRIuLEAST32   "lu"
#define PRIuFAST32   "lu"
#define PRIx32   "lx"
#define PRIxLEAST32   "lx"
#define PRIxFAST32   "lx"
#define PRIX32   "lX"
#define PRIXLEAST32   "lX"
#define PRIXFAST32   "lX"
#define PRIoPTR   PRIo16
#define PRIuPTR   PRIu16
#define PRIxPTR   PRIx16
#define PRIXPTR   PRIX16
#define SCNd16   "d"
#define SCNdLEAST16   "d"
#define SCNdFAST16   "d"
#define SCNi16   "i"
#define SCNiLEAST16   "i"
#define SCNiFAST16   "i"
#define SCNd32   "ld"
#define SCNdLEAST32   "ld"
#define SCNdFAST32   "ld"
#define SCNi32   "li"
#define SCNiLEAST32   "li"
#define SCNiFAST32   "li"
#define SCNdPTR   SCNd16
#define SCNiPTR   SCNi16
#define SCNo16   "o"
#define SCNoLEAST16   "o"
#define SCNoFAST16   "o"
#define SCNu16   "u"
#define SCNuLEAST16   "u"
#define SCNuFAST16   "u"
#define SCNx16   "x"
#define SCNxLEAST16   "x"
#define SCNxFAST16   "x"
#define SCNo32   "lo"
#define SCNoLEAST32   "lo"
#define SCNoFAST32   "lo"
#define SCNu32   "lu"
#define SCNuLEAST32   "lu"
#define SCNuFAST32   "lu"
#define SCNx32   "lx"
#define SCNxLEAST32   "lx"
#define SCNxFAST32   "lx"
#define SCNoPTR   SCNo16
#define SCNuPTR   SCNu16
#define SCNxPTR   SCNx16
+


Define Documentation

+ +
+
+ + + + +
#define PRId16   "d"
+
+
+ +

+decimal printf format for int16_t +

+

+ +

+
+ + + + +
#define PRId32   "ld"
+
+
+ +

+decimal printf format for int32_t +

+

+ +

+
+ + + + +
#define PRId8   "d"
+
+
+ +

+decimal printf format for int8_t +

+

+ +

+
+ + + + +
#define PRIdFAST16   "d"
+
+
+ +

+decimal printf format for int_fast16_t +

+

+ +

+
+ + + + +
#define PRIdFAST32   "ld"
+
+
+ +

+decimal printf format for int_fast32_t +

+

+ +

+
+ + + + +
#define PRIdFAST8   "d"
+
+
+ +

+decimal printf format for int_fast8_t +

+

+ +

+
+ + + + +
#define PRIdLEAST16   "d"
+
+
+ +

+decimal printf format for int_least16_t +

+

+ +

+
+ + + + +
#define PRIdLEAST32   "ld"
+
+
+ +

+decimal printf format for int_least32_t +

+

+ +

+
+ + + + +
#define PRIdLEAST8   "d"
+
+
+ +

+decimal printf format for int_least8_t +

+

+ +

+
+ + + + +
#define PRIdPTR   PRId16
+
+
+ +

+decimal printf format for intptr_t +

+

+ +

+
+ + + + +
#define PRIi16   "i"
+
+
+ +

+integer printf format for int16_t +

+

+ +

+
+ + + + +
#define PRIi32   "li"
+
+
+ +

+integer printf format for int32_t +

+

+ +

+
+ + + + +
#define PRIi8   "i"
+
+
+ +

+integer printf format for int8_t +

+

+ +

+
+ + + + +
#define PRIiFAST16   "i"
+
+
+ +

+integer printf format for int_fast16_t +

+

+ +

+
+ + + + +
#define PRIiFAST32   "li"
+
+
+ +

+integer printf format for int_fast32_t +

+

+ +

+
+ + + + +
#define PRIiFAST8   "i"
+
+
+ +

+integer printf format for int_fast8_t +

+

+ +

+
+ + + + +
#define PRIiLEAST16   "i"
+
+
+ +

+integer printf format for int_least16_t +

+

+ +

+
+ + + + +
#define PRIiLEAST32   "li"
+
+
+ +

+integer printf format for int_least32_t +

+

+ +

+
+ + + + +
#define PRIiLEAST8   "i"
+
+
+ +

+integer printf format for int_least8_t +

+

+ +

+
+ + + + +
#define PRIiPTR   PRIi16
+
+
+ +

+integer printf format for intptr_t +

+

+ +

+
+ + + + +
#define PRIo16   "o"
+
+
+ +

+octal printf format for uint16_t +

+

+ +

+
+ + + + +
#define PRIo32   "lo"
+
+
+ +

+octal printf format for uint32_t +

+

+ +

+
+ + + + +
#define PRIo8   "o"
+
+
+ +

+octal printf format for uint8_t +

+

+ +

+
+ + + + +
#define PRIoFAST16   "o"
+
+
+ +

+octal printf format for uint_fast16_t +

+

+ +

+
+ + + + +
#define PRIoFAST32   "lo"
+
+
+ +

+octal printf format for uint_fast32_t +

+

+ +

+
+ + + + +
#define PRIoFAST8   "o"
+
+
+ +

+octal printf format for uint_fast8_t +

+

+ +

+
+ + + + +
#define PRIoLEAST16   "o"
+
+
+ +

+octal printf format for uint_least16_t +

+

+ +

+
+ + + + +
#define PRIoLEAST32   "lo"
+
+
+ +

+octal printf format for uint_least32_t +

+

+ +

+
+ + + + +
#define PRIoLEAST8   "o"
+
+
+ +

+octal printf format for uint_least8_t +

+

+ +

+
+ + + + +
#define PRIoPTR   PRIo16
+
+
+ +

+octal printf format for uintptr_t +

+

+ +

+
+ + + + +
#define PRIu16   "u"
+
+
+ +

+decimal printf format for uint16_t +

+

+ +

+
+ + + + +
#define PRIu32   "lu"
+
+
+ +

+decimal printf format for uint32_t +

+

+ +

+
+ + + + +
#define PRIu8   "u"
+
+
+ +

+decimal printf format for uint8_t +

+

+ +

+
+ + + + +
#define PRIuFAST16   "u"
+
+
+ +

+decimal printf format for uint_fast16_t +

+

+ +

+
+ + + + +
#define PRIuFAST32   "lu"
+
+
+ +

+decimal printf format for uint_fast32_t +

+

+ +

+
+ + + + +
#define PRIuFAST8   "u"
+
+
+ +

+decimal printf format for uint_fast8_t +

+

+ +

+
+ + + + +
#define PRIuLEAST16   "u"
+
+
+ +

+decimal printf format for uint_least16_t +

+

+ +

+
+ + + + +
#define PRIuLEAST32   "lu"
+
+
+ +

+decimal printf format for uint_least32_t +

+

+ +

+
+ + + + +
#define PRIuLEAST8   "u"
+
+
+ +

+decimal printf format for uint_least8_t +

+

+ +

+
+ + + + +
#define PRIuPTR   PRIu16
+
+
+ +

+decimal printf format for uintptr_t +

+

+ +

+
+ + + + +
#define PRIX16   "X"
+
+
+ +

+uppercase hexadecimal printf format for uint16_t +

+

+ +

+
+ + + + +
#define PRIx16   "x"
+
+
+ +

+hexadecimal printf format for uint16_t +

+

+ +

+
+ + + + +
#define PRIX32   "lX"
+
+
+ +

+uppercase hexadecimal printf format for uint32_t +

+

+ +

+
+ + + + +
#define PRIx32   "lx"
+
+
+ +

+hexadecimal printf format for uint32_t +

+

+ +

+
+ + + + +
#define PRIX8   "X"
+
+
+ +

+uppercase hexadecimal printf format for uint8_t +

+

+ +

+
+ + + + +
#define PRIx8   "x"
+
+
+ +

+hexadecimal printf format for uint8_t +

+

+ +

+
+ + + + +
#define PRIXFAST16   "X"
+
+
+ +

+uppercase hexadecimal printf format for uint_fast16_t +

+

+ +

+
+ + + + +
#define PRIxFAST16   "x"
+
+
+ +

+hexadecimal printf format for uint_fast16_t +

+

+ +

+
+ + + + +
#define PRIXFAST32   "lX"
+
+
+ +

+uppercase hexadecimal printf format for uint_fast32_t +

+

+ +

+
+ + + + +
#define PRIxFAST32   "lx"
+
+
+ +

+hexadecimal printf format for uint_fast32_t +

+

+ +

+
+ + + + +
#define PRIXFAST8   "X"
+
+
+ +

+uppercase hexadecimal printf format for uint_fast8_t +

+

+ +

+
+ + + + +
#define PRIxFAST8   "x"
+
+
+ +

+hexadecimal printf format for uint_fast8_t +

+

+ +

+
+ + + + +
#define PRIXLEAST16   "X"
+
+
+ +

+uppercase hexadecimal printf format for uint_least16_t +

+

+ +

+
+ + + + +
#define PRIxLEAST16   "x"
+
+
+ +

+hexadecimal printf format for uint_least16_t +

+

+ +

+
+ + + + +
#define PRIXLEAST32   "lX"
+
+
+ +

+uppercase hexadecimal printf format for uint_least32_t +

+

+ +

+
+ + + + +
#define PRIxLEAST32   "lx"
+
+
+ +

+hexadecimal printf format for uint_least32_t +

+

+ +

+
+ + + + +
#define PRIXLEAST8   "X"
+
+
+ +

+uppercase hexadecimal printf format for uint_least8_t +

+

+ +

+
+ + + + +
#define PRIxLEAST8   "x"
+
+
+ +

+hexadecimal printf format for uint_least8_t +

+

+ +

+
+ + + + +
#define PRIXPTR   PRIX16
+
+
+ +

+uppercase hexadecimal printf format for uintptr_t +

+

+ +

+
+ + + + +
#define PRIxPTR   PRIx16
+
+
+ +

+hexadecimal printf format for uintptr_t +

+

+ +

+
+ + + + +
#define SCNd16   "d"
+
+
+ +

+decimal scanf format for int16_t +

+

+ +

+
+ + + + +
#define SCNd32   "ld"
+
+
+ +

+decimal scanf format for int32_t +

+

+ +

+
+ + + + +
#define SCNdFAST16   "d"
+
+
+ +

+decimal scanf format for int_fast16_t +

+

+ +

+
+ + + + +
#define SCNdFAST32   "ld"
+
+
+ +

+decimal scanf format for int_fast32_t +

+

+ +

+
+ + + + +
#define SCNdLEAST16   "d"
+
+
+ +

+decimal scanf format for int_least16_t +

+

+ +

+
+ + + + +
#define SCNdLEAST32   "ld"
+
+
+ +

+decimal scanf format for int_least32_t +

+

+ +

+
+ + + + +
#define SCNdPTR   SCNd16
+
+
+ +

+decimal scanf format for intptr_t +

+

+ +

+
+ + + + +
#define SCNi16   "i"
+
+
+ +

+generic-integer scanf format for int16_t +

+

+ +

+
+ + + + +
#define SCNi32   "li"
+
+
+ +

+generic-integer scanf format for int32_t +

+

+ +

+
+ + + + +
#define SCNiFAST16   "i"
+
+
+ +

+generic-integer scanf format for int_fast16_t +

+

+ +

+
+ + + + +
#define SCNiFAST32   "li"
+
+
+ +

+generic-integer scanf format for int_fast32_t +

+

+ +

+
+ + + + +
#define SCNiLEAST16   "i"
+
+
+ +

+generic-integer scanf format for int_least16_t +

+

+ +

+
+ + + + +
#define SCNiLEAST32   "li"
+
+
+ +

+generic-integer scanf format for int_least32_t +

+

+ +

+
+ + + + +
#define SCNiPTR   SCNi16
+
+
+ +

+generic-integer scanf format for intptr_t +

+

+ +

+
+ + + + +
#define SCNo16   "o"
+
+
+ +

+octal scanf format for uint16_t +

+

+ +

+
+ + + + +
#define SCNo32   "lo"
+
+
+ +

+octal scanf format for uint32_t +

+

+ +

+
+ + + + +
#define SCNoFAST16   "o"
+
+
+ +

+octal scanf format for uint_fast16_t +

+

+ +

+
+ + + + +
#define SCNoFAST32   "lo"
+
+
+ +

+octal scanf format for uint_fast32_t +

+

+ +

+
+ + + + +
#define SCNoLEAST16   "o"
+
+
+ +

+octal scanf format for uint_least16_t +

+

+ +

+
+ + + + +
#define SCNoLEAST32   "lo"
+
+
+ +

+octal scanf format for uint_least32_t +

+

+ +

+
+ + + + +
#define SCNoPTR   SCNo16
+
+
+ +

+octal scanf format for uintptr_t +

+

+ +

+
+ + + + +
#define SCNu16   "u"
+
+
+ +

+decimal scanf format for uint16_t +

+

+ +

+
+ + + + +
#define SCNu32   "lu"
+
+
+ +

+decimal scanf format for uint32_t +

+

+ +

+
+ + + + +
#define SCNuFAST16   "u"
+
+
+ +

+decimal scanf format for uint_fast16_t +

+

+ +

+
+ + + + +
#define SCNuFAST32   "lu"
+
+
+ +

+decimal scanf format for uint_fast32_t +

+

+ +

+
+ + + + +
#define SCNuLEAST16   "u"
+
+
+ +

+decimal scanf format for uint_least16_t +

+

+ +

+
+ + + + +
#define SCNuLEAST32   "lu"
+
+
+ +

+decimal scanf format for uint_least32_t +

+

+ +

+
+ + + + +
#define SCNuPTR   SCNu16
+
+
+ +

+decimal scanf format for uintptr_t +

+

+ +

+
+ + + + +
#define SCNx16   "x"
+
+
+ +

+hexadecimal scanf format for uint16_t +

+

+ +

+
+ + + + +
#define SCNx32   "lx"
+
+
+ +

+hexadecimal scanf format for uint32_t +

+

+ +

+
+ + + + +
#define SCNxFAST16   "x"
+
+
+ +

+hexadecimal scanf format for uint_fast16_t +

+

+ +

+
+ + + + +
#define SCNxFAST32   "lx"
+
+
+ +

+hexadecimal scanf format for uint_fast32_t +

+

+ +

+
+ + + + +
#define SCNxLEAST16   "x"
+
+
+ +

+hexadecimal scanf format for uint_least16_t +

+

+ +

+
+ + + + +
#define SCNxLEAST32   "lx"
+
+
+ +

+hexadecimal scanf format for uint_least32_t +

+

+ +

+
+ + + + +
#define SCNxPTR   SCNx16
+
+
+ +

+hexadecimal scanf format for uintptr_t +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef int32_t int_farptr_t
+
+
+ +

+signed integer type that can hold a pointer > 64 KB +

+

+ +

+
+ + + + +
typedef uint32_t uint_farptr_t
+
+
+ +

+unsigned integer type that can hold a pointer > 64 KB +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__io.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__io.html new file mode 100644 index 0000000..b61a1d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__io.html @@ -0,0 +1,63 @@ + + + + + avr-libc: <avr/io.h>: AVR device-specific IO definitions + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/io.h>: AVR device-specific IO definitions

 #include <avr/io.h> 
+

+This header file includes the apropriate IO definitions for the device that has been specified by the -mmcu= compiler command-line switch. This is done by diverting to the appropriate file <avr/ioXXXX.h> which should never be included directly. Some register names common to all AVR devices are defined directly within <avr/common.h>, which is included in <avr/io.h>, but most of the details come from the respective include file.

+Note that this file always includes the following files:

    #include <avr/sfr_defs.h>
+    #include <avr/portpins.h>
+    #include <avr/common.h>
+    #include <avr/version.h>
+
See <avr/sfr_defs.h>: Special function registers for more details about that header file.

+Included are definitions of the IO register set and their respective bit values as specified in the Atmel documentation. Note that inconsistencies in naming conventions, so even identical functions sometimes get different names on different devices.

+Also included are the specific names useable for interrupt function definitions as documented here.

+Finally, the following macros are defined:

+

    +
  • RAMEND
    + The last on-chip RAM address.
    +
  • XRAMEND
    + The last possible RAM location that is addressable. This is equal to RAMEND for devices that do not allow for external RAM. For devices that allow external RAM, this will larger than RAMEND.
    +
  • E2END
    + The last EEPROM address.
    +
  • FLASHEND
    + The last byte address in the Flash program space.
    +
  • SPM_PAGESIZE
    + For devices with bootloader support, the flash pagesize (in bytes) to be used for the SPM instruction.
  • E2PAGESIZE
    + The size of the EEPROM page.
+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__lock.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__lock.html new file mode 100644 index 0000000..3ebb2fc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__lock.html @@ -0,0 +1,91 @@ + + + + + avr-libc: <avr/lock.h>: Lockbit Support + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/lock.h>: Lockbit Support

Introduction
+The Lockbit API allows a user to specify the lockbit settings for the specific AVR device they are compiling for. These lockbit settings will be placed in a special section in the ELF output file, after linking.

+Programming tools can take advantage of the lockbit information embedded in the ELF file, by extracting this information and determining if the lockbits need to be programmed after programming the Flash and EEPROM memories. This also allows a single ELF file to contain all the information needed to program an AVR.

+To use the Lockbit API, include the <avr/io.h> header file, which in turn automatically includes the individual I/O header file and the <avr/lock.h> file. These other two files provides everything necessary to set the AVR lockbits.

+

Lockbit API
+Each I/O header file may define up to 3 macros that controls what kinds of lockbits are available to the user.

+If __LOCK_BITS_EXIST is defined, then two lock bits are available to the user and 3 mode settings are defined for these two bits.

+If __BOOT_LOCK_BITS_0_EXIST is defined, then the two BLB0 lock bits are available to the user and 4 mode settings are defined for these two bits.

+If __BOOT_LOCK_BITS_1_EXIST is defined, then the two BLB1 lock bits are available to the user and 4 mode settings are defined for these two bits.

+If __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST is defined then two lock bits are available to set the locking mode for the Application Table Section (which is used in the XMEGA family).

+If __BOOT_LOCK_APPLICATION_BITS_EXIST is defined then two lock bits are available to set the locking mode for the Application Section (which is used in the XMEGA family).

+If __BOOT_LOCK_BOOT_BITS_EXIST is defined then two lock bits are available to set the locking mode for the Boot Loader Section (which is used in the XMEGA family).

+The AVR lockbit modes have inverted values, logical 1 for an unprogrammed (disabled) bit and logical 0 for a programmed (enabled) bit. The defined macros for each individual lock bit represent this in their definition by a bit-wise inversion of a mask. For example, the LB_MODE_3 macro is defined as:

    #define LB_MODE_3  (0xFC)
+`   
+

+To combine the lockbit mode macros together to represent a whole byte, use the bitwise AND operator, like so:

    (LB_MODE_3 & BLB0_MODE_2)
+

+<avr/lock.h> also defines a macro that provides a default lockbit value: LOCKBITS_DEFAULT which is defined to be 0xFF.

+See the AVR device specific datasheet for more details about these lock bits and the available mode settings.

+A convenience macro, LOCKMEM, is defined as a GCC attribute for a custom-named section of ".lock".

+A convenience macro, LOCKBITS, is defined that declares a variable, __lock, of type unsigned char with the attribute defined by LOCKMEM. This variable allows the end user to easily set the lockbit data.

+

Note:
If a device-specific I/O header file has previously defined LOCKMEM, then LOCKMEM is not redefined. If a device-specific I/O header file has previously defined LOCKBITS, then LOCKBITS is not redefined. LOCKBITS is currently known to be defined in the I/O header files for the XMEGA devices.
+
API Usage Example
+Putting all of this together is easy:

+

    #include <avr/io.h>
+
+    LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4);
+
+    int main(void)
+    {
+        return 0;
+    }
+

+Or:

+

    #include <avr/io.h>
+
+    unsigned char __lock __attribute__((section (".lock"))) = 
+        (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4);
+
+    int main(void)
+    {
+        return 0;
+    }
+

+However there are a number of caveats that you need to be aware of to use this API properly.

+Be sure to include <avr/io.h> to get all of the definitions for the API. The LOCKBITS macro defines a global variable to store the lockbit data. This variable is assigned to its own linker section. Assign the desired lockbit values immediately in the variable initialization.

+The .lock section in the ELF file will get its values from the initial variable assignment ONLY. This means that you can NOT assign values to this variable in functions and the new values will not be put into the ELF .lock section.

+The global variable is declared in the LOCKBITS macro has two leading underscores, which means that it is reserved for the "implementation", meaning the library, so it will not conflict with a user-named variable.

+You must initialize the lockbit variable to some meaningful value, even if it is the default value. This is because the lockbits default to a logical 1, meaning unprogrammed. Normal uninitialized data defaults to all locgial zeros. So it is vital that all lockbits are initialized, even with default data. If they are not, then the lockbits may not programmed to the desired settings and can possibly put your device into an unrecoverable state.

+Be sure to have the -mmcu=device flag in your compile command line and your linker command line to have the correct device selected and to have the correct I/O header file included when you include <avr/io.h>.

+You can print out the contents of the .lock section in the ELF file by using this command line:

    avr-objdump -s -j .lock <ELF file>
+
+

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__math.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__math.html new file mode 100644 index 0000000..573340b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__math.html @@ -0,0 +1,1064 @@ + + + + + avr-libc: <math.h>: Mathematics + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<math.h>: Mathematics


Detailed Description

+
 #include <math.h> 
+

+This header file declares basic mathematics constants and functions.

+

Notes:
    +
  • In order to access the functions delcared herein, it is usually also required to additionally link against the library libm.a. See also the related FAQ entry.
  • Math functions do not raise exceptions and do not change the errno variable. Therefore the majority of them are declared with const attribute, for better optimization by GCC.
+
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define M_PI   3.141592653589793238462643
#define M_SQRT2   1.4142135623730950488016887
#define NAN   __builtin_nan("")
#define INFINITY   __builtin_inf()

Functions

double cos (double __x)
double fabs (double __x)
double fmod (double __x, double __y)
double modf (double __x, double *__iptr)
double sin (double __x)
double sqrt (double __x)
double tan (double __x)
double floor (double __x)
double ceil (double __x)
double frexp (double __x, int *__pexp)
double ldexp (double __x, int __exp)
double exp (double __x)
double cosh (double __x)
double sinh (double __x)
double tanh (double __x)
double acos (double __x)
double asin (double __x)
double atan (double __x)
double atan2 (double __y, double __x)
double log (double __x)
double log10 (double __x)
double pow (double __x, double __y)
int isnan (double __x)
int isinf (double __x)
double square (double __x)
static double copysign (double __x, double __y)
double fdim (double __x, double __y)
double fma (double __x, double __y, double __z)
double fmax (double __x, double __y)
double fmin (double __x, double __y)
int signbit (double __x)
double trunc (double __x)
static int isfinite (double __x)
double hypot (double __x, double __y)
double round (double __x)
long lround (double __x)
long lrint (double __x)
+


Define Documentation

+ +
+
+ + + + +
#define INFINITY   __builtin_inf()
+
+
+ +

+INFINITY constant. +

+

+ +

+
+ + + + +
#define M_PI   3.141592653589793238462643
+
+
+ +

+The constant pi. +

+

+ +

+
+ + + + +
#define M_SQRT2   1.4142135623730950488016887
+
+
+ +

+The square root of 2. +

+

+ +

+
+ + + + +
#define NAN   __builtin_nan("")
+
+
+ +

+NAN constant. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
double acos (double  __x  ) 
+
+
+ +

+The acos() function computes the principal value of the arc cosine of __x. The returned value is in the range [0, pi] radians. A domain error occurs for arguments not in the range [-1, +1]. +

+

+ +

+
+ + + + + + + + + +
double asin (double  __x  ) 
+
+
+ +

+The asin() function computes the principal value of the arc sine of __x. The returned value is in the range [-pi/2, pi/2] radians. A domain error occurs for arguments not in the range [-1, +1]. +

+

+ +

+
+ + + + + + + + + +
double atan (double  __x  ) 
+
+
+ +

+The atan() function computes the principal value of the arc tangent of __x. The returned value is in the range [-pi/2, pi/2] radians. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double atan2 (double  __y,
double  __x 
)
+
+
+ +

+The atan2() function computes the principal value of the arc tangent of __y / __x, using the signs of both arguments to determine the quadrant of the return value. The returned value is in the range [-pi, +pi] radians. +

+

+ +

+
+ + + + + + + + + +
double ceil (double  __x  ) 
+
+
+ +

+The ceil() function returns the smallest integral value greater than or equal to __x, expressed as a floating-point number. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static double copysign (double  __x,
double  __y 
) [static]
+
+
+ +

+The copysign() function returns __x but with the sign of __y. They work even if __x or __y are NaN or zero. +

+

+ +

+
+ + + + + + + + + +
double cos (double  __x  ) 
+
+
+ +

+The cos() function returns the cosine of __x, measured in radians. +

+

+ +

+
+ + + + + + + + + +
double cosh (double  __x  ) 
+
+
+ +

+The cosh() function returns the hyperbolic cosine of __x. +

+

+ +

+
+ + + + + + + + + +
double exp (double  __x  ) 
+
+
+ +

+The exp() function returns the exponential value of __x. +

+

+ +

+
+ + + + + + + + + +
double fabs (double  __x  ) 
+
+
+ +

+The fabs() function computes the absolute value of a floating-point number __x. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double fdim (double  __x,
double  __y 
)
+
+
+ +

+The fdim() function returns max(__x - __y, 0). If __x or __y or both are NaN, NaN is returned. +

+

+ +

+
+ + + + + + + + + +
double floor (double  __x  ) 
+
+
+ +

+The floor() function returns the largest integral value less than or equal to __x, expressed as a floating-point number. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
double fma (double  __x,
double  __y,
double  __z 
)
+
+
+ +

+The fma() function performs floating-point multiply-add. This is the operation (__x * __y) + __z, but the intermediate result is not rounded to the destination type. This can sometimes improve the precision of a calculation. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double fmax (double  __x,
double  __y 
)
+
+
+ +

+The fmax() function returns the greater of the two values __x and __y. If an argument is NaN, the other argument is returned. If both arguments are NaN, NaN is returned. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double fmin (double  __x,
double  __y 
)
+
+
+ +

+The fmin() function returns the lesser of the two values __x and __y. If an argument is NaN, the other argument is returned. If both arguments are NaN, NaN is returned. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double fmod (double  __x,
double  __y 
)
+
+
+ +

+The function fmod() returns the floating-point remainder of __x / __y. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double frexp (double  __x,
int *  __pexp 
)
+
+
+ +

+The frexp() function breaks a floating-point number into a normalized fraction and an integral power of 2. It stores the integer in the int object pointed to by __pexp.

+If __x is a normal float point number, the frexp() function returns the value v, such that v has a magnitude in the interval [1/2, 1) or zero, and __x equals v times 2 raised to the power __pexp. If __x is zero, both parts of the result are zero. If __x is not a finite number, the frexp() returns __x as is and stores 0 by __pexp.

+

Note:
This implementation permits a zero pointer as a directive to skip a storing the exponent.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double hypot (double  __x,
double  __y 
)
+
+
+ +

+The hypot() function returns sqrt(__x*__x + __y*__y). This is the length of the hypotenuse of a right triangle with sides of length __x and __y, or the distance of the point (__x, __y) from the origin. Using this function instead of the direct formula is wise, since the error is much smaller. No underflow with small __x and __y. No overflow if result is in range. +

+

+ +

+
+ + + + + + + + + +
static int isfinite (double  __x  )  [static]
+
+
+ +

+The isfinite() function returns a nonzero value if __x is finite: not plus or minus infinity, and not NaN. +

+

+ +

+
+ + + + + + + + + +
int isinf (double  __x  ) 
+
+
+ +

+The function isinf() returns 1 if the argument __x is positive infinity, -1 if __x is negative infinity, and 0 otherwise. +

+

+ +

+
+ + + + + + + + + +
int isnan (double  __x  ) 
+
+
+ +

+The function isnan() returns 1 if the argument __x represents a "not-a-number" (NaN) object, otherwise 0. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double ldexp (double  __x,
int  __exp 
)
+
+
+ +

+The ldexp() function multiplies a floating-point number by an integral power of 2.

+The ldexp() function returns the value of __x times 2 raised to the power __exp. +

+

+ +

+
+ + + + + + + + + +
double log (double  __x  ) 
+
+
+ +

+The log() function returns the natural logarithm of argument __x. +

+

+ +

+
+ + + + + + + + + +
double log10 (double  __x  ) 
+
+
+ +

+The log10() function returns the logarithm of argument __x to base 10. +

+

+ +

+
+ + + + + + + + + +
long lrint (double  __x  ) 
+
+
+ +

+The lrint() function rounds __x to the nearest integer, rounding the halfway cases to the even integer direction. (That is both 1.5 and 2.5 values are rounded to 2). This function is similar to rint() function, but it differs in type of return value and in that an overflow is possible.

+

Returns:
The rounded long integer value. If __x is not a finite number or an overflow was, this realization returns the LONG_MIN value (0x80000000).
+ +
+

+ +

+
+ + + + + + + + + +
long lround (double  __x  ) 
+
+
+ +

+The lround() function rounds __x to the nearest integer, but rounds halfway cases away from zero (instead of to the nearest even integer). This function is similar to round() function, but it differs in type of return value and in that an overflow is possible.

+

Returns:
The rounded long integer value. If __x is not a finite number or an overflow was, this realization returns the LONG_MIN value (0x80000000).
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double modf (double  __x,
double *  __iptr 
)
+
+
+ +

+The modf() function breaks the argument __x into integral and fractional parts, each of which has the same sign as the argument. It stores the integral part as a double in the object pointed to by __iptr.

+The modf() function returns the signed fractional part of __x.

+

Note:
This implementation skips writing by zero pointer.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double pow (double  __x,
double  __y 
)
+
+
+ +

+The function pow() returns the value of __x to the exponent __y. +

+

+ +

+
+ + + + + + + + + +
double round (double  __x  ) 
+
+
+ +

+The round() function rounds __x to the nearest integer, but rounds halfway cases away from zero (instead of to the nearest even integer). Overflow is impossible.

+

Returns:
The rounded value. If __x is an integral or infinite, __x itself is returned. If __x is NaN, then NaN is returned.
+ +
+

+ +

+
+ + + + + + + + + +
int signbit (double  __x  ) 
+
+
+ +

+The signbit() function returns a nonzero value if the value of __x has its sign bit set. This is not the same as `__x < 0.0', because IEEE 754 floating point allows zero to be signed. The comparison `-0.0 < 0.0' is false, but `signbit (-0.0)' will return a nonzero value.

+

Note:
This implementation returns 1 if sign bit is set.
+ +
+

+ +

+
+ + + + + + + + + +
double sin (double  __x  ) 
+
+
+ +

+The sin() function returns the sine of __x, measured in radians. +

+

+ +

+
+ + + + + + + + + +
double sinh (double  __x  ) 
+
+
+ +

+The sinh() function returns the hyperbolic sine of __x. +

+

+ +

+
+ + + + + + + + + +
double sqrt (double  __x  ) 
+
+
+ +

+The sqrt() function returns the non-negative square root of __x. +

+

+ +

+
+ + + + + + + + + +
double square (double  __x  ) 
+
+
+ +

+The function square() returns __x * __x.

+

Note:
This function does not belong to the C standard definition.
+ +
+

+ +

+
+ + + + + + + + + +
double tan (double  __x  ) 
+
+
+ +

+The tan() function returns the tangent of __x, measured in radians. +

+

+ +

+
+ + + + + + + + + +
double tanh (double  __x  ) 
+
+
+ +

+The tanh() function returns the hyperbolic tangent of __x. +

+

+ +

+
+ + + + + + + + + +
double trunc (double  __x  ) 
+
+
+ +

+The trunc() function rounds __x to the nearest integer not larger in absolute value. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__pgmspace.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__pgmspace.html new file mode 100644 index 0000000..8db8a22 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__pgmspace.html @@ -0,0 +1,1559 @@ + + + + + avr-libc: <avr/pgmspace.h>: Program Space Utilities + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/pgmspace.h>: Program Space Utilities


Detailed Description

+
    #include <avr/io.h>
+    #include <avr/pgmspace.h>
+

+The functions in this module provide interfaces for a program to access data stored in program space (flash memory) of the device. In order to use these functions, the target device must support either the LPM or ELPM instructions.

+

Note:
These functions are an attempt to provide some compatibility with header files that come with IAR C, to make porting applications between different compilers easier. This is not 100% compatibility though (GCC does not have full support for multiple address spaces yet).

+If you are working with strings which are completely based in ram, use the standard string functions described in <string.h>: Strings.

+If possible, put your constant tables in the lower 64 KB and use pgm_read_byte_near() or pgm_read_word_near() instead of pgm_read_byte_far() or pgm_read_word_far() since it is more efficient that way, and you can still use the upper 64K for executable code. All functions that are suffixed with a _P require their arguments to be in the lower 64 KB of the flash ROM, as they do not use ELPM instructions. This is normally not a big concern as the linker setup arranges any program space constants declared using the macros from this header file so they are placed right after the interrupt vectors, and in front of any executable code. However, it can become a problem if there are too many of these constants, or for bootloaders on devices with more than 64 KB of ROM. All these functions will not work in that situation.

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define PROGMEM   __ATTR_PROGMEM__
#define PSTR(s)   ((const PROGMEM char *)(s))
#define pgm_read_byte_near(address_short)   __LPM((uint16_t)(address_short))
#define pgm_read_word_near(address_short)   __LPM_word((uint16_t)(address_short))
#define pgm_read_dword_near(address_short)   __LPM_dword((uint16_t)(address_short))
#define pgm_read_float_near(address_short)   __LPM_float((uint16_t)(address_short))
#define pgm_read_byte_far(address_long)   __ELPM((uint32_t)(address_long))
#define pgm_read_word_far(address_long)   __ELPM_word((uint32_t)(address_long))
#define pgm_read_dword_far(address_long)   __ELPM_dword((uint32_t)(address_long))
#define pgm_read_float_far(address_long)   __ELPM_float((uint32_t)(address_long))
#define pgm_read_byte(address_short)   pgm_read_byte_near(address_short)
#define pgm_read_word(address_short)   pgm_read_word_near(address_short)
#define pgm_read_dword(address_short)   pgm_read_dword_near(address_short)
#define pgm_read_float(address_short)   pgm_read_float_near(address_short)
#define PGM_P   const prog_char *
#define PGM_VOID_P   const prog_void *

Typedefs

typedef void PROGMEM prog_void
typedef char PROGMEM prog_char
typedef unsigned char PROGMEM prog_uchar
typedef int8_t PROGMEM prog_int8_t
typedef uint8_t PROGMEM prog_uint8_t
typedef int16_t PROGMEM prog_int16_t
typedef uint16_t PROGMEM prog_uint16_t
typedef int32_t PROGMEM prog_int32_t
typedef uint32_t PROGMEM prog_uint32_t
typedef int64_t PROGMEM prog_int64_t
typedef uint64_t PROGMEM prog_uint64_t

Functions

PGM_VOID_P memchr_P (PGM_VOID_P, int __val, size_t __len)
int memcmp_P (const void *, PGM_VOID_P, size_t) __ATTR_PURE__
void * memcpy_P (void *, PGM_VOID_P, size_t)
PGM_VOID_P memrchr_P (PGM_VOID_P, int __val, size_t __len)
int strcasecmp_P (const char *, PGM_P) __ATTR_PURE__
char * strcat_P (char *, PGM_P)
PGM_P strchr_P (PGM_P, int __val)
PGM_P strchrnul_P (PGM_P, int __val)
int strcmp_P (const char *, PGM_P) __ATTR_PURE__
char * strcpy_P (char *, PGM_P)
size_t strcspn_P (const char *__s, PGM_P __reject) __ATTR_PURE__
size_t strlcat_P (char *, PGM_P, size_t)
size_t strlcpy_P (char *, PGM_P, size_t)
size_t strlen_P (PGM_P)
int strncasecmp_P (const char *, PGM_P, size_t) __ATTR_PURE__
char * strncat_P (char *, PGM_P, size_t)
int strncmp_P (const char *, PGM_P, size_t) __ATTR_PURE__
char * strncpy_P (char *, PGM_P, size_t)
size_t strnlen_P (PGM_P, size_t)
char * strpbrk_P (const char *__s, PGM_P __accept) __ATTR_PURE__
PGM_P strrchr_P (PGM_P, int __val)
char * strsep_P (char **__sp, PGM_P __delim)
size_t strspn_P (const char *__s, PGM_P __accept) __ATTR_PURE__
char * strstr_P (const char *, PGM_P) __ATTR_PURE__
void * memmem_P (const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__
char * strcasestr_P (const char *, PGM_P) __ATTR_PURE__
+


Define Documentation

+ +
+
+ + + + +
#define PGM_P   const prog_char *
+
+
+ +

+Used to declare a variable that is a pointer to a string in program space. +

+

+ +

+
+ + + + + + + + + +
#define pgm_read_byte (address_short   )    pgm_read_byte_near(address_short)
+
+
+ +

+Read a byte from the program space with a 16-bit (near) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_byte_far (address_long   )    __ELPM((uint32_t)(address_long))
+
+
+ +

+Read a byte from the program space with a 32-bit (far) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_byte_near (address_short   )    __LPM((uint16_t)(address_short))
+
+
+ +

+Read a byte from the program space with a 16-bit (near) address.

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_dword (address_short   )    pgm_read_dword_near(address_short)
+
+
+ +

+Read a double word from the program space with a 16-bit (near) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_dword_far (address_long   )    __ELPM_dword((uint32_t)(address_long))
+
+
+ +

+Read a double word from the program space with a 32-bit (far) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_dword_near (address_short   )    __LPM_dword((uint16_t)(address_short))
+
+
+ +

+Read a double word from the program space with a 16-bit (near) address.

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_float (address_short   )    pgm_read_float_near(address_short)
+
+
+ +

+Read a float from the program space with a 16-bit (near) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_float_far (address_long   )    __ELPM_float((uint32_t)(address_long))
+
+
+ +

+Read a float from the program space with a 32-bit (far) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_float_near (address_short   )    __LPM_float((uint16_t)(address_short))
+
+
+ +

+Read a float from the program space with a 16-bit (near) address.

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_word (address_short   )    pgm_read_word_near(address_short)
+
+
+ +

+Read a word from the program space with a 16-bit (near) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_word_far (address_long   )    __ELPM_word((uint32_t)(address_long))
+
+
+ +

+Read a word from the program space with a 32-bit (far) address.

+

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + + + + + + +
#define pgm_read_word_near (address_short   )    __LPM_word((uint16_t)(address_short))
+
+
+ +

+Read a word from the program space with a 16-bit (near) address.

Note:
The address is a byte address. The address is in the program space.
+ +
+

+ +

+
+ + + + +
#define PGM_VOID_P   const prog_void *
+
+
+ +

+Used to declare a generic pointer to an object in program space. +

+

+ +

+
+ + + + +
#define PROGMEM   __ATTR_PROGMEM__
+
+
+ +

+Attribute to use in order to declare an object being located in flash ROM. +

+

+ +

+
+ + + + + + + + + +
#define PSTR (  )    ((const PROGMEM char *)(s))
+
+
+ +

+Used to declare a static pointer to a string in program space. +

+

+


Typedef Documentation

+ +
+
+ + + + +
prog_char
+
+
+ +

+Type of a "char" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_int16_t
+
+
+ +

+Type of an "int16_t" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_int32_t
+
+
+ +

+Type of an "int32_t" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_int64_t
+
+
+ +

+Type of an "int64_t" object located in flash ROM.

+

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
prog_int8_t
+
+
+ +

+Type of an "int8_t" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_uchar
+
+
+ +

+Type of an "unsigned char" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_uint16_t
+
+
+ +

+Type of an "uint16_t" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_uint32_t
+
+
+ +

+Type of an "uint32_t" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_uint64_t
+
+
+ +

+Type of an "uint64_t" object located in flash ROM.

+

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
prog_uint8_t
+
+
+ +

+Type of an "uint8_t" object located in flash ROM. +

+

+ +

+
+ + + + +
prog_void
+
+
+ +

+Type of a "void" object located in flash ROM. Does not make much sense by itself, but can be used to declare a "void *" object in flash ROM. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PGM_VOID_P memchr_P (PGM_VOID_P  s,
int  val,
size_t  len 
)
+
+
+ +

+Scan flash memory for a character. +

+The memchr_P() function scans the first len bytes of the flash memory area pointed to by s for the character val. The first byte to match val (interpreted as an unsigned character) stops the operation.

+

Returns:
The memchr_P() function returns a pointer to the matching byte or NULL if the character does not occur in the given memory area.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int memcmp_P (const void *  s1,
PGM_VOID_P  s2,
size_t  len 
)
+
+
+ +

+Compare memory areas. +

+The memcmp_P() function compares the first len bytes of the memory areas s1 and flash s2. The comparision is performed using unsigned char operations.

+

Returns:
The memcmp_P() function returns an integer less than, equal to, or greater than zero if the first len bytes of s1 is found, respectively, to be less than, to match, or be greater than the first len bytes of s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void * memcpy_P (void *  dest,
PGM_VOID_P  src,
size_t  n 
)
+
+
+ +

+The memcpy_P() function is similar to memcpy(), except the src string resides in program space.

+

Returns:
The memcpy_P() function returns a pointer to dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void * memmem_P (const void *  s1,
size_t  len1,
PGM_VOID_P  s2,
size_t  len2 
)
+
+
+ +

+The memmem_P() function is similar to memmem() except that s2 is pointer to a string in program space. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PGM_VOID_P memrchr_P (PGM_VOID_P  src,
int  val,
size_t  len 
)
+
+
+ +

+The memrchr_P() function is like the memchr_P() function, except that it searches backwards from the end of the len bytes pointed to by src instead of forwards from the front. (Glibc, GNU extension.)

+

Returns:
The memrchr_P() function returns a pointer to the matching byte or NULL if the character does not occur in the given memory area.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int strcasecmp_P (const char *  s1,
PGM_P  s2 
)
+
+
+ +

+Compare two strings ignoring case. +

+The strcasecmp_P() function compares the two strings s1 and s2, ignoring the case of the characters.

+

Parameters:
+ + + +
s1 A pointer to a string in the devices SRAM.
s2 A pointer to a string in the devices Flash.
+
+
Returns:
The strcasecmp_P() function returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. A consequence of the ordering used by strcasecmp_P() is that if s1 is an initial substring of s2, then s1 is considered to be "less than" s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strcasestr_P (const char *  s1,
PGM_P  s2 
)
+
+
+ +

+This funtion is similar to strcasestr() except that s2 is pointer to a string in program space. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strcat_P (char *  dest,
PGM_P  src 
)
+
+
+ +

+The strcat_P() function is similar to strcat() except that the src string must be located in program space (flash).

+

Returns:
The strcat() function returns a pointer to the resulting string dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
PGM_P strchr_P (PGM_P  s,
int  val 
)
+
+
+ +

+Locate character in program space string. +

+The strchr_P() function locates the first occurrence of val (converted to a char) in the string pointed to by s in program space. The terminating null character is considered to be part of the string.

+The strchr_P() function is similar to strchr() except that s is pointer to a string in program space.

+

Returns:
The strchr_P() function returns a pointer to the matched character or NULL if the character is not found.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
PGM_P strchrnul_P (PGM_P  s,
int  c 
)
+
+
+ +

+The strchrnul_P() function is like strchr_P() except that if c is not found in s, then it returns a pointer to the null byte at the end of s, rather than NULL. (Glibc, GNU extension.)

+

Returns:
The strchrnul_P() function returns a pointer to the matched character, or a pointer to the null byte at the end of s (i.e., s+strlen(s)) if the character is not found.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int strcmp_P (const char *  s1,
PGM_P  s2 
)
+
+
+ +

+The strcmp_P() function is similar to strcmp() except that s2 is pointer to a string in program space.

+

Returns:
The strcmp_P() function returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. A consequence of the ordering used by strcmp_P() is that if s1 is an initial substring of s2, then s1 is considered to be "less than" s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strcpy_P (char *  dest,
PGM_P  src 
)
+
+
+ +

+The strcpy_P() function is similar to strcpy() except that src is a pointer to a string in program space.

+

Returns:
The strcpy_P() function returns a pointer to the destination string dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
size_t strcspn_P (const char *  s,
PGM_P  reject 
)
+
+
+ +

+The strcspn_P() function calculates the length of the initial segment of s which consists entirely of characters not in reject. This function is similar to strcspn() except that reject is a pointer to a string in program space.

+

Returns:
The strcspn_P() function returns the number of characters in the initial segment of s which are not in the string reject. The terminating zero is not considered as a part of string.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t strlcat_P (char *  dst,
PGM_P ,
size_t  siz 
)
+
+
+ +

+Concatenate two strings. +

+The strlcat_P() function is similar to strlcat(), except that the src string must be located in program space (flash).

+Appends src to string dst of size siz (unlike strncat(), siz is the full size of dst, not space left). At most siz-1 characters will be copied. Always NULL terminates (unless siz <= strlen(dst)).

+

Returns:
The strlcat_P() function returns strlen(src) + MIN(siz, strlen(initial dst)). If retval >= siz, truncation occurred.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t strlcpy_P (char *  dst,
PGM_P ,
size_t  siz 
)
+
+
+ +

+Copy a string from progmem to RAM. +

+Copy src to string dst of size siz. At most siz-1 characters will be copied. Always NULL terminates (unless siz == 0).

+

Returns:
The strlcpy_P() function returns strlen(src). If retval >= siz, truncation occurred.
+ +
+

+ +

+
+ + + + + + + + + +
size_t strlen_P (PGM_P  src  ) 
+
+
+ +

+The strlen_P() function is similar to strlen(), except that src is a pointer to a string in program space.

+

Returns:
The strlen() function returns the number of characters in src.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int strncasecmp_P (const char *  s1,
PGM_P  s2,
size_t  n 
)
+
+
+ +

+Compare two strings ignoring case. +

+The strncasecmp_P() function is similar to strcasecmp_P(), except it only compares the first n characters of s1.

+

Parameters:
+ + + + +
s1 A pointer to a string in the devices SRAM.
s2 A pointer to a string in the devices Flash.
n The maximum number of bytes to compare.
+
+
Returns:
The strncasecmp_P() function returns an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2. A consequence of the ordering used by strncasecmp_P() is that if s1 is an initial substring of s2, then s1 is considered to be "less than" s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char * strncat_P (char *  dest,
PGM_P  src,
size_t  len 
)
+
+
+ +

+Concatenate two strings. +

+The strncat_P() function is similar to strncat(), except that the src string must be located in program space (flash).

+

Returns:
The strncat_P() function returns a pointer to the resulting string dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int strncmp_P (const char *  s1,
PGM_P  s2,
size_t  n 
)
+
+
+ +

+The strncmp_P() function is similar to strcmp_P() except it only compares the first (at most) n characters of s1 and s2.

+

Returns:
The strncmp_P() function returns an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char * strncpy_P (char *  dest,
PGM_P  src,
size_t  n 
)
+
+
+ +

+The strncpy_P() function is similar to strcpy_P() except that not more than n bytes of src are copied. Thus, if there is no null byte among the first n bytes of src, the result will not be null-terminated.

+In the case where the length of src is less than that of n, the remainder of dest will be padded with nulls.

+

Returns:
The strncpy_P() function returns a pointer to the destination string dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
size_t strnlen_P (PGM_P  src,
size_t  len 
)
+
+
+ +

+Determine the length of a fixed-size string. +

+The strnlen_P() function is similar to strnlen(), except that src is a pointer to a string in program space.

+

Returns:
The strnlen_P function returns strlen_P(src), if that is less than len, or len if there is no '\0' character among the first len characters pointed to by src.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strpbrk_P (const char *  s,
PGM_P  accept 
)
+
+
+ +

+The strpbrk_P() function locates the first occurrence in the string s of any of the characters in the flash string accept. This function is similar to strpbrk() except that accept is a pointer to a string in program space.

+

Returns:
The strpbrk_P() function returns a pointer to the character in s that matches one of the characters in accept, or NULL if no such character is found. The terminating zero is not considered as a part of string: if one or both args are empty, the result will NULL.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
PGM_P strrchr_P (PGM_P  s,
int  val 
)
+
+
+ +

+Locate character in string. +

+The strrchr_P() function returns a pointer to the last occurrence of the character val in the flash string s.

+

Returns:
The strrchr_P() function returns a pointer to the matched character or NULL if the character is not found.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strsep_P (char **  sp,
PGM_P  delim 
)
+
+
+ +

+Parse a string into tokens. +

+The strsep_P() function locates, in the string referenced by *sp, the first occurrence of any character in the string delim (or the terminating '\0' character) and replaces it with a '\0'. The location of the next character after the delimiter character (or NULL, if the end of the string was reached) is stored in *sp. An ``empty'' field, i.e. one caused by two adjacent delimiter characters, can be detected by comparing the location referenced by the pointer returned in *sp to '\0'. This function is similar to strsep() except that delim is a pointer to a string in program space.

+

Returns:
The strsep_P() function returns a pointer to the original value of *sp. If *sp is initially NULL, strsep_P() returns NULL.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
size_t strspn_P (const char *  s,
PGM_P  accept 
)
+
+
+ +

+The strspn_P() function calculates the length of the initial segment of s which consists entirely of characters in accept. This function is similar to strspn() except that accept is a pointer to a string in program space.

+

Returns:
The strspn_P() function returns the number of characters in the initial segment of s which consist only of characters from accept. The terminating zero is not considered as a part of string.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strstr_P (const char *  s1,
PGM_P  s2 
)
+
+
+ +

+Locate a substring. +

+The strstr_P() function finds the first occurrence of the substring s2 in the string s1. The terminating '\0' characters are not compared. The strstr_P() function is similar to strstr() except that s2 is pointer to a string in program space.

+

Returns:
The strstr_P() function returns a pointer to the beginning of the substring, or NULL if the substring is not found. If s2 points to a string of zero length, the function returns s1.
+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__power.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__power.html new file mode 100644 index 0000000..eccff33 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__power.html @@ -0,0 +1,201 @@ + + + + + avr-libc: <avr/power.h>: Power Reduction Management + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/power.h>: Power Reduction Management

 #include <avr/power.h>
+

+Many AVRs contain a Power Reduction Register (PRR) or Registers (PRRx) that allow you to reduce power consumption by disabling or enabling various on-board peripherals as needed.

+There are many macros in this header file that provide an easy interface to enable or disable on-board peripherals to reduce power. See the table below.

+

Note:
Not all AVR devices have a Power Reduction Register (for example the ATmega128). On those devices without a Power Reduction Register, these macros are not available.

+Not all AVR devices contain the same peripherals (for example, the LCD interface), or they will be named differently (for example, USART and USART0). Please consult your device's datasheet, or the header file, to find out which macros are applicable to your device.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Power Macro Description Applicable for device

+

power_adc_enable() Enable the Analog to Digital Converter module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_adc_disable() Disable the Analog to Digital Converter module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_lcd_enable() Enable the LCD module. ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490

+

power_lcd_disable(). Disable the LCD module. ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490

+

power_psc0_enable() Enable the Power Stage Controller 0 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_psc0_disable() Disable the Power Stage Controller 0 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_psc1_enable() Enable the Power Stage Controller 1 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_psc1_disable() Disable the Power Stage Controller 1 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_psc2_enable() Enable the Power Stage Controller 2 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_psc2_disable() Disable the Power Stage Controller 2 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_spi_enable() Enable the Serial Peripheral Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168

+

power_spi_disable() Disable the Serial Peripheral Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168

+

power_timer0_enable() Enable the Timer 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM216, AT90PWM316, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_timer0_disable() Disable the Timer 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_timer1_enable() Enable the Timer 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_timer1_disable() Disable the Timer 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_timer2_enable() Enable the Timer 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168

+

power_timer2_disable() Disable the Timer 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168

+

power_timer3_enable() Enable the Timer 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287

+

power_timer3_disable() Disable the Timer 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287

+

power_timer4_enable() Enable the Timer 4 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_timer4_disable() Disable the Timer 4 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_timer5_enable() Enable the Timer 5 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_timer5_disable() Disable the Timer 5 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_twi_enable() Enable the Two Wire Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168

+

power_twi_disable() Disable the Two Wire Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168

+

power_usart_enable() Enable the USART module. AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_usart_disable() Disable the USART module. AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B

+

power_usart0_enable() Enable the USART 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168

+

power_usart0_disable() Disable the USART 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168

+

power_usart1_enable() Enable the USART 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P

+

power_usart1_disable() Disable the USART 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P

+

power_usart2_enable() Enable the USART 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_usart2_disable() Disable the USART 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_usart3_enable() Enable the USART 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_usart3_disable() Disable the USART 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561

+

power_usb_enable() Enable the USB module. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287

+

power_usb_disable() Disable the USB module. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287

+

power_usi_enable() Enable the Universal Serial Interface module. ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_usi_disable() Disable the Universal Serial Interface module. ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_vadc_enable() Enable the Voltage ADC module. ATmega406

+

power_vadc_disable() Disable the Voltage ADC module. ATmega406

+

power_all_enable() Enable all modules. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861

+

power_all_disable() Disable all modules. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861
+

+Some of the newer AVRs contain a System Clock Prescale Register (CLKPR) that allows you to decrease the system clock frequency and the power consumption when the need for processing power is low. Below are two macros and an enumerated type that can be used to interface to the Clock Prescale Register.

+

Note:
Not all AVR devices have a Clock Prescale Register. On those devices without a Clock Prescale Register, these macros are not available.
+
typedef enum
+{
+    clock_div_1 = 0,
+    clock_div_2 = 1,
+    clock_div_4 = 2,
+    clock_div_8 = 3,
+    clock_div_16 = 4,
+    clock_div_32 = 5,
+    clock_div_64 = 6,
+    clock_div_128 = 7,
+    clock_div_256 = 8
+} clock_div_t;
+
Clock prescaler setting enumerations.

+

 clock_prescale_set(x) 
+
Set the clock prescaler register select bits, selecting a system clock division setting. They type of x is clock_div_t.

+

 clock_prescale_get() 
+
Gets and returns the clock prescaler register setting. The return type is clock_div_t. +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sfr.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sfr.html new file mode 100644 index 0000000..d5aec7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sfr.html @@ -0,0 +1,195 @@ + + + + + avr-libc: <avr/sfr_defs.h>: Special function registers + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/sfr_defs.h>: Special function registers


Detailed Description

+When working with microcontrollers, many tasks usually consist of controlling internal peripherals, or external peripherals that are connected to the device. The entire IO address space is made available as memory-mapped IO, i.e. it can be accessed using all the MCU instructions that are applicable to normal data memory. For most AVR devices, the IO register space is mapped into the data memory address space with an offset of 0x20 since the bottom of this space is reserved for direct access to the MCU registers. (Actual SRAM is available only behind the IO register area, starting at some specific address depending on the device.)

+For example the user can access memory-mapped IO registers as if they were globally defined variables like this:

+

        PORTA = 0x33;
+    unsigned char foo = PINA;
+

+The compiler will choose the correct instruction sequence to generate based on the address of the register being accessed.

+The advantage of using the memory-mapped registers in C programs is that it makes the programs more portable to other C compilers for the AVR platform.

+Note that special care must be taken when accessing some of the 16-bit timer IO registers where access from both the main program and within an interrupt context can happen. See Why do some 16-bit timer registers sometimes get trashed?.

+

Porting programs that use the deprecated sbi/cbi macros
+Access to the AVR single bit set and clear instructions are provided via the standard C bit manipulation commands. The sbi and cbi macros are no longer directly supported. sbi (sfr,bit) can be replaced by sfr |= _BV(bit) .

+i.e.: sbi(PORTB, PB1); is now PORTB |= _BV(PB1);

+This actually is more flexible than having sbi directly, as the optimizer will use a hardware sbi if appropriate, or a read/or/write operation if not appropriate. You do not need to keep track of which registers sbi/cbi will operate on.

+Likewise, cbi (sfr,bit) is now sfr &= ~(_BV(bit)); +

+ + + + + + + + + + + + + + + + + + + +

Modules

 Additional notes from <avr/sfr_defs.h>

Bit manipulation



#define _BV(bit)   (1 << (bit))

IO register bit manipulation



#define bit_is_set(sfr, bit)   (_SFR_BYTE(sfr) & _BV(bit))
#define bit_is_clear(sfr, bit)   (!(_SFR_BYTE(sfr) & _BV(bit)))
#define loop_until_bit_is_set(sfr, bit)   do { } while (bit_is_clear(sfr, bit))
#define loop_until_bit_is_clear(sfr, bit)   do { } while (bit_is_set(sfr, bit))
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define _BV (bit   )    (1 << (bit))
+
+
+ +

+

 #include <avr/io.h>
+

+Converts a bit number into a byte value.

+

Note:
The bit shift is performed by the compiler which then inserts the result into the code. Thus, there is no run-time overhead when using _BV().
+ +
+

+ +

+
+ + + + + + + + + + + + +
#define bit_is_clear (sfr,
bit   )    (!(_SFR_BYTE(sfr) & _BV(bit)))
+
+
+ +

+

 #include <avr/io.h>
+

+Test whether bit bit in IO register sfr is clear. This will return non-zero if the bit is clear, and a 0 if the bit is set. +

+

+ +

+
+ + + + + + + + + + + + +
#define bit_is_set (sfr,
bit   )    (_SFR_BYTE(sfr) & _BV(bit))
+
+
+ +

+

 #include <avr/io.h>
+

+Test whether bit bit in IO register sfr is set. This will return a 0 if the bit is clear, and non-zero if the bit is set. +

+

+ +

+
+ + + + + + + + + + + + +
#define loop_until_bit_is_clear (sfr,
bit   )    do { } while (bit_is_set(sfr, bit))
+
+
+ +

+

 #include <avr/io.h>
+

+Wait until bit bit in IO register sfr is clear. +

+

+ +

+
+ + + + + + + + + + + + +
#define loop_until_bit_is_set (sfr,
bit   )    do { } while (bit_is_clear(sfr, bit))
+
+
+ +

+

 #include <avr/io.h>
+

+Wait until bit bit in IO register sfr is set. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sfr__notes.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sfr__notes.html new file mode 100644 index 0000000..441b630 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sfr__notes.html @@ -0,0 +1,71 @@ + + + + + avr-libc: Additional notes from <avr/sfr_defs.h> + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Additional notes from <avr/sfr_defs.h>
+ +[<avr/sfr_defs.h>: Special function registers] +

The <avr/sfr_defs.h> file is included by all of the <avr/ioXXXX.h> files, which use macros defined here to make the special function register definitions look like C variables or simple constants, depending on the _SFR_ASM_COMPAT define. Some examples from <avr/iocanxx.h> to show how to define such macros:

+

#define PORTA   _SFR_IO8(0x02)
+#define EEAR    _SFR_IO16(0x21)
+#define UDR0    _SFR_MEM8(0xC6)
+#define TCNT3   _SFR_MEM16(0x94)
+#define CANIDT  _SFR_MEM32(0xF0)
+

+If _SFR_ASM_COMPAT is not defined, C programs can use names like PORTA directly in C expressions (also on the left side of assignment operators) and GCC will do the right thing (use short I/O instructions if possible). The __SFR_OFFSET definition is not used in any way in this case.

+Define _SFR_ASM_COMPAT as 1 to make these names work as simple constants (addresses of the I/O registers). This is necessary when included in preprocessed assembler (*.S) source files, so it is done automatically if __ASSEMBLER__ is defined. By default, all addresses are defined as if they were memory addresses (used in lds/sts instructions). To use these addresses in in/out instructions, you must subtract 0x20 from them.

+For more backwards compatibility, insert the following at the start of your old assembler source file:

+

#define __SFR_OFFSET 0
+

+This automatically subtracts 0x20 from I/O space addresses, but it's a hack, so it is recommended to change your source: wrap such addresses in macros defined here, as shown below. After this is done, the __SFR_OFFSET definition is no longer necessary and can be removed.

+Real example - this code could be used in a boot loader that is portable between devices with SPMCR at different addresses.

+

+<avr/iom163.h>: #define SPMCR _SFR_IO8(0x37)
+<avr/iom128.h>: #define SPMCR _SFR_MEM8(0x68)
+

+

#if _SFR_IO_REG_P(SPMCR)
+        out     _SFR_IO_ADDR(SPMCR), r24
+#else
+        sts     _SFR_MEM_ADDR(SPMCR), r24
+#endif
+

+You can use the in/out/cbi/sbi/sbic/sbis instructions, without the _SFR_IO_REG_P test, if you know that the register is in the I/O space (as with SREG, for example). If it isn't, the assembler will complain (I/O address out of range 0...0x3f), so this should be fairly safe.

+If you do not define __SFR_OFFSET (so it will be 0x20 by default), all special register addresses are defined as memory addresses (so SREG is 0x5f), and (if code size and speed are not important, and you don't like the ugly #if above) you can always use lds/sts to access them. But, this will not work if __SFR_OFFSET != 0x20, so use a different macro (defined only if __SFR_OFFSET == 0x20) for safety:

+

        sts     _SFR_ADDR(SPMCR), r24
+

+In C programs, all 3 combinations of _SFR_ASM_COMPAT and __SFR_OFFSET are supported - the _SFR_ADDR(SPMCR) macro can be used to get the address of the SPMCR register (0x57 or 0x68 depending on device). +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sleep.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sleep.html new file mode 100644 index 0000000..d89ecff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__sleep.html @@ -0,0 +1,137 @@ + + + + + avr-libc: <avr/sleep.h>: Power Management and Sleep Modes + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/sleep.h>: Power Management and Sleep Modes


Detailed Description

+
 #include <avr/sleep.h>
+

+Use of the SLEEP instruction can allow an application to reduce its power comsumption considerably. AVR devices can be put into different sleep modes. Refer to the datasheet for the details relating to the device you are using.

+There are several macros provided in this header file to actually put the device into sleep mode. The simplest way is to optionally set the desired sleep mode using set_sleep_mode() (it usually defaults to idle mode where the CPU is put on sleep but all peripheral clocks are still running), and then call sleep_mode(). This macro automatically sets the sleep enable bit, goes to sleep, and clears the sleep enable bit.

+Example:

    #include <avr/sleep.h>
+
+    ...
+      set_sleep_mode(<mode>);
+      sleep_mode();
+

+Note that unless your purpose is to completely lock the CPU (until a hardware reset), interrupts need to be enabled before going to sleep.

+As the sleep_mode() macro might cause race conditions in some situations, the individual steps of manipulating the sleep enable (SE) bit, and actually issuing the SLEEP instruction, are provided in the macros sleep_enable(), sleep_disable(), and sleep_cpu(). This also allows for test-and-sleep scenarios that take care of not missing the interrupt that will awake the device from sleep.

+Example:

    #include <avr/interrupt.h>
+    #include <avr/sleep.h>
+
+    ...
+      set_sleep_mode(<mode>);
+      cli();
+      if (some_condition)
+      {
+        sleep_enable();
+        sei();
+        sleep_cpu();
+        sleep_disable();
+      }
+      sei();
+

+This sequence ensures an atomic test of some_condition with interrupts being disabled. If the condition is met, sleep mode will be prepared, and the SLEEP instruction will be scheduled immediately after an SEI instruction. As the intruction right after the SEI is guaranteed to be executed before an interrupt could trigger, it is sure the device will really be put to sleep. +

+ + + + + + + + + +

Functions

void sleep_enable (void)
void sleep_disable (void)
void sleep_cpu (void)
+


Function Documentation

+ +
+
+ + + + + + + + + +
void sleep_cpu (void   ) 
+
+
+ +

+Put the device into sleep mode. The SE bit must be set beforehand, and it is recommended to clear it afterwards. +

+

+ +

+
+ + + + + + + + + +
void sleep_disable (void   ) 
+
+
+ +

+Clear the SE (sleep enable) bit. +

+

+ +

+
+ + + + + + + + + +
void sleep_enable (void   ) 
+
+
+ +

+Put the device in sleep mode. How the device is brought out of sleep mode depends on the specific mode selected with the set_sleep_mode() function. See the data sheet for your device for more details.

+Set the SE (sleep enable) bit. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdint.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdint.html new file mode 100644 index 0000000..151d311 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdint.html @@ -0,0 +1,1572 @@ + + + + + avr-libc: <stdint.h>: Standard Integer Types + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<stdint.h>: Standard Integer Types


Detailed Description

+
 #include <stdint.h> 
+

+Use [u]intN_t if you need exactly N bits.

+Since these typedefs are mandated by the C99 standard, they are preferred over rolling your own typedefs. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Exact-width integer types

Integer types having exactly the specified width

typedef signed char int8_t
typedef unsigned char uint8_t
typedef signed int int16_t
typedef unsigned int uint16_t
typedef signed long int int32_t
typedef unsigned long int uint32_t
typedef signed long long int int64_t
typedef unsigned long long int uint64_t

Integer types capable of holding object pointers

These allow you to declare variables of the same size as a pointer.

typedef int16_t intptr_t
typedef uint16_t uintptr_t

Minimum-width integer types

Integer types having at least the specified width

typedef int8_t int_least8_t
typedef uint8_t uint_least8_t
typedef int16_t int_least16_t
typedef uint16_t uint_least16_t
typedef int32_t int_least32_t
typedef uint32_t uint_least32_t
typedef int64_t int_least64_t
typedef uint64_t uint_least64_t

Fastest minimum-width integer types

Integer types being usually fastest having at least the specified width

typedef int8_t int_fast8_t
typedef uint8_t uint_fast8_t
typedef int16_t int_fast16_t
typedef uint16_t uint_fast16_t
typedef int32_t int_fast32_t
typedef uint32_t uint_fast32_t
typedef int64_t int_fast64_t
typedef uint64_t uint_fast64_t

Greatest-width integer types

Types designating integer data capable of representing any value of any integer type in the corresponding signed or unsigned category

typedef int64_t intmax_t
typedef uint64_t uintmax_t

Limits of specified-width integer types

C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <stdint.h> is included

#define INT8_MAX   0x7f
#define INT8_MIN   (-INT8_MAX - 1)
#define UINT8_MAX   (__CONCAT(INT8_MAX, U) * 2U + 1U)
#define INT16_MAX   0x7fff
#define INT16_MIN   (-INT16_MAX - 1)
#define UINT16_MAX   (__CONCAT(INT16_MAX, U) * 2U + 1U)
#define INT32_MAX   0x7fffffffL
#define INT32_MIN   (-INT32_MAX - 1L)
#define UINT32_MAX   (__CONCAT(INT32_MAX, U) * 2UL + 1UL)
#define INT64_MAX   0x7fffffffffffffffLL
#define INT64_MIN   (-INT64_MAX - 1LL)
#define UINT64_MAX   (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL)

Limits of minimum-width integer types



#define INT_LEAST8_MAX   INT8_MAX
#define INT_LEAST8_MIN   INT8_MIN
#define UINT_LEAST8_MAX   UINT8_MAX
#define INT_LEAST16_MAX   INT16_MAX
#define INT_LEAST16_MIN   INT16_MIN
#define UINT_LEAST16_MAX   UINT16_MAX
#define INT_LEAST32_MAX   INT32_MAX
#define INT_LEAST32_MIN   INT32_MIN
#define UINT_LEAST32_MAX   UINT32_MAX
#define INT_LEAST64_MAX   INT64_MAX
#define INT_LEAST64_MIN   INT64_MIN
#define UINT_LEAST64_MAX   UINT64_MAX

Limits of fastest minimum-width integer types



#define INT_FAST8_MAX   INT8_MAX
#define INT_FAST8_MIN   INT8_MIN
#define UINT_FAST8_MAX   UINT8_MAX
#define INT_FAST16_MAX   INT16_MAX
#define INT_FAST16_MIN   INT16_MIN
#define UINT_FAST16_MAX   UINT16_MAX
#define INT_FAST32_MAX   INT32_MAX
#define INT_FAST32_MIN   INT32_MIN
#define UINT_FAST32_MAX   UINT32_MAX
#define INT_FAST64_MAX   INT64_MAX
#define INT_FAST64_MIN   INT64_MIN
#define UINT_FAST64_MAX   UINT64_MAX

Limits of integer types capable of holding object pointers



#define INTPTR_MAX   INT16_MAX
#define INTPTR_MIN   INT16_MIN
#define UINTPTR_MAX   UINT16_MAX

Limits of greatest-width integer types



#define INTMAX_MAX   INT64_MAX
#define INTMAX_MIN   INT64_MIN
#define UINTMAX_MAX   UINT64_MAX

Limits of other integer types

C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <stdint.h> is included

#define PTRDIFF_MAX   INT16_MAX
#define PTRDIFF_MIN   INT16_MIN
#define SIG_ATOMIC_MAX   INT8_MAX
#define SIG_ATOMIC_MIN   INT8_MIN
#define SIZE_MAX   (__CONCAT(INT16_MAX, U))

Macros for integer constants

C++ implementations should define these macros only when __STDC_CONSTANT_MACROS is defined before <stdint.h> is included.

+These definitions are valid for integer constants without suffix and for macros defined as integer constant without suffix

#define INT8_C(value)   ((int8_t) value)
#define UINT8_C(value)   ((uint8_t) __CONCAT(value, U))
#define INT16_C(value)   value
#define UINT16_C(value)   __CONCAT(value, U)
#define INT32_C(value)   __CONCAT(value, L)
#define UINT32_C(value)   __CONCAT(value, UL)
#define INT64_C(value)   __CONCAT(value, LL)
#define UINT64_C(value)   __CONCAT(value, ULL)
#define INTMAX_C(value)   __CONCAT(value, LL)
#define UINTMAX_C(value)   __CONCAT(value, ULL)
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define INT16_C (value   )    value
+
+
+ +

+define a constant of type int16_t +

+

+ +

+
+ + + + +
#define INT16_MAX   0x7fff
+
+
+ +

+largest positive value an int16_t can hold. +

+

+ +

+
+ + + + +
#define INT16_MIN   (-INT16_MAX - 1)
+
+
+ +

+smallest negative value an int16_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define INT32_C (value   )    __CONCAT(value, L)
+
+
+ +

+define a constant of type int32_t +

+

+ +

+
+ + + + +
#define INT32_MAX   0x7fffffffL
+
+
+ +

+largest positive value an int32_t can hold. +

+

+ +

+
+ + + + +
#define INT32_MIN   (-INT32_MAX - 1L)
+
+
+ +

+smallest negative value an int32_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define INT64_C (value   )    __CONCAT(value, LL)
+
+
+ +

+define a constant of type int64_t +

+

+ +

+
+ + + + +
#define INT64_MAX   0x7fffffffffffffffLL
+
+
+ +

+largest positive value an int64_t can hold. +

+

+ +

+
+ + + + +
#define INT64_MIN   (-INT64_MAX - 1LL)
+
+
+ +

+smallest negative value an int64_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define INT8_C (value   )    ((int8_t) value)
+
+
+ +

+define a constant of type int8_t +

+

+ +

+
+ + + + +
#define INT8_MAX   0x7f
+
+
+ +

+largest positive value an int8_t can hold. +

+

+ +

+
+ + + + +
#define INT8_MIN   (-INT8_MAX - 1)
+
+
+ +

+smallest negative value an int8_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST16_MAX   INT16_MAX
+
+
+ +

+largest positive value an int_fast16_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST16_MIN   INT16_MIN
+
+
+ +

+smallest negative value an int_fast16_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST32_MAX   INT32_MAX
+
+
+ +

+largest positive value an int_fast32_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST32_MIN   INT32_MIN
+
+
+ +

+smallest negative value an int_fast32_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST64_MAX   INT64_MAX
+
+
+ +

+largest positive value an int_fast64_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST64_MIN   INT64_MIN
+
+
+ +

+smallest negative value an int_fast64_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST8_MAX   INT8_MAX
+
+
+ +

+largest positive value an int_fast8_t can hold. +

+

+ +

+
+ + + + +
#define INT_FAST8_MIN   INT8_MIN
+
+
+ +

+smallest negative value an int_fast8_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST16_MAX   INT16_MAX
+
+
+ +

+largest positive value an int_least16_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST16_MIN   INT16_MIN
+
+
+ +

+smallest negative value an int_least16_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST32_MAX   INT32_MAX
+
+
+ +

+largest positive value an int_least32_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST32_MIN   INT32_MIN
+
+
+ +

+smallest negative value an int_least32_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST64_MAX   INT64_MAX
+
+
+ +

+largest positive value an int_least64_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST64_MIN   INT64_MIN
+
+
+ +

+smallest negative value an int_least64_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST8_MAX   INT8_MAX
+
+
+ +

+largest positive value an int_least8_t can hold. +

+

+ +

+
+ + + + +
#define INT_LEAST8_MIN   INT8_MIN
+
+
+ +

+smallest negative value an int_least8_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define INTMAX_C (value   )    __CONCAT(value, LL)
+
+
+ +

+define a constant of type intmax_t +

+

+ +

+
+ + + + +
#define INTMAX_MAX   INT64_MAX
+
+
+ +

+largest positive value an intmax_t can hold. +

+

+ +

+
+ + + + +
#define INTMAX_MIN   INT64_MIN
+
+
+ +

+smallest negative value an intmax_t can hold. +

+

+ +

+
+ + + + +
#define INTPTR_MAX   INT16_MAX
+
+
+ +

+largest positive value an intptr_t can hold. +

+

+ +

+
+ + + + +
#define INTPTR_MIN   INT16_MIN
+
+
+ +

+smallest negative value an intptr_t can hold. +

+

+ +

+
+ + + + +
#define PTRDIFF_MAX   INT16_MAX
+
+
+ +

+largest positive value a ptrdiff_t can hold. +

+

+ +

+
+ + + + +
#define PTRDIFF_MIN   INT16_MIN
+
+
+ +

+smallest negative value a ptrdiff_t can hold. +

+

+ +

+
+ + + + +
#define SIG_ATOMIC_MAX   INT8_MAX
+
+
+ +

+largest positive value a sig_atomic_t can hold. +

+

+ +

+
+ + + + +
#define SIG_ATOMIC_MIN   INT8_MIN
+
+
+ +

+smallest negative value a sig_atomic_t can hold. +

+

+ +

+
+ + + + +
#define SIZE_MAX   (__CONCAT(INT16_MAX, U))
+
+
+ +

+largest value a size_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define UINT16_C (value   )    __CONCAT(value, U)
+
+
+ +

+define a constant of type uint16_t +

+

+ +

+
+ + + + +
#define UINT16_MAX   (__CONCAT(INT16_MAX, U) * 2U + 1U)
+
+
+ +

+largest value an uint16_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define UINT32_C (value   )    __CONCAT(value, UL)
+
+
+ +

+define a constant of type uint32_t +

+

+ +

+
+ + + + +
#define UINT32_MAX   (__CONCAT(INT32_MAX, U) * 2UL + 1UL)
+
+
+ +

+largest value an uint32_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define UINT64_C (value   )    __CONCAT(value, ULL)
+
+
+ +

+define a constant of type uint64_t +

+

+ +

+
+ + + + +
#define UINT64_MAX   (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL)
+
+
+ +

+largest value an uint64_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define UINT8_C (value   )    ((uint8_t) __CONCAT(value, U))
+
+
+ +

+define a constant of type uint8_t +

+

+ +

+
+ + + + +
#define UINT8_MAX   (__CONCAT(INT8_MAX, U) * 2U + 1U)
+
+
+ +

+largest value an uint8_t can hold. +

+

+ +

+
+ + + + +
#define UINT_FAST16_MAX   UINT16_MAX
+
+
+ +

+largest value an uint_fast16_t can hold. +

+

+ +

+
+ + + + +
#define UINT_FAST32_MAX   UINT32_MAX
+
+
+ +

+largest value an uint_fast32_t can hold. +

+

+ +

+
+ + + + +
#define UINT_FAST64_MAX   UINT64_MAX
+
+
+ +

+largest value an uint_fast64_t can hold. +

+

+ +

+
+ + + + +
#define UINT_FAST8_MAX   UINT8_MAX
+
+
+ +

+largest value an uint_fast8_t can hold. +

+

+ +

+
+ + + + +
#define UINT_LEAST16_MAX   UINT16_MAX
+
+
+ +

+largest value an uint_least16_t can hold. +

+

+ +

+
+ + + + +
#define UINT_LEAST32_MAX   UINT32_MAX
+
+
+ +

+largest value an uint_least32_t can hold. +

+

+ +

+
+ + + + +
#define UINT_LEAST64_MAX   UINT64_MAX
+
+
+ +

+largest value an uint_least64_t can hold. +

+

+ +

+
+ + + + +
#define UINT_LEAST8_MAX   UINT8_MAX
+
+
+ +

+largest value an uint_least8_t can hold. +

+

+ +

+
+ + + + + + + + + +
#define UINTMAX_C (value   )    __CONCAT(value, ULL)
+
+
+ +

+define a constant of type uintmax_t +

+

+ +

+
+ + + + +
#define UINTMAX_MAX   UINT64_MAX
+
+
+ +

+largest value an uintmax_t can hold. +

+

+ +

+
+ + + + +
#define UINTPTR_MAX   UINT16_MAX
+
+
+ +

+largest value an uintptr_t can hold. +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef signed int int16_t
+
+
+ +

+16-bit signed type. +

+

+ +

+
+ + + + +
typedef signed long int int32_t
+
+
+ +

+32-bit signed type. +

+

+ +

+
+ + + + +
typedef signed long long int int64_t
+
+
+ +

+64-bit signed type.

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
typedef signed char int8_t
+
+
+ +

+8-bit signed type. +

+

+ +

+
+ + + + +
typedef int16_t int_fast16_t
+
+
+ +

+fastest signed int with at least 16 bits. +

+

+ +

+
+ + + + +
typedef int32_t int_fast32_t
+
+
+ +

+fastest signed int with at least 32 bits. +

+

+ +

+
+ + + + +
typedef int64_t int_fast64_t
+
+
+ +

+fastest signed int with at least 64 bits.

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
typedef int8_t int_fast8_t
+
+
+ +

+fastest signed int with at least 8 bits. +

+

+ +

+
+ + + + +
typedef int16_t int_least16_t
+
+
+ +

+signed int with at least 16 bits. +

+

+ +

+
+ + + + +
typedef int32_t int_least32_t
+
+
+ +

+signed int with at least 32 bits. +

+

+ +

+
+ + + + +
typedef int64_t int_least64_t
+
+
+ +

+signed int with at least 64 bits.

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
typedef int8_t int_least8_t
+
+
+ +

+signed int with at least 8 bits. +

+

+ +

+
+ + + + +
typedef int64_t intmax_t
+
+
+ +

+largest signed int available. +

+

+ +

+
+ + + + +
typedef int16_t intptr_t
+
+
+ +

+Signed pointer compatible type. +

+

+ +

+
+ + + + +
typedef unsigned int uint16_t
+
+
+ +

+16-bit unsigned type. +

+

+ +

+
+ + + + +
typedef unsigned long int uint32_t
+
+
+ +

+32-bit unsigned type. +

+

+ +

+
+ + + + +
typedef unsigned long long int uint64_t
+
+
+ +

+64-bit unsigned type.

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
typedef unsigned char uint8_t
+
+
+ +

+8-bit unsigned type. +

+

+ +

+
+ + + + +
typedef uint16_t uint_fast16_t
+
+
+ +

+fastest unsigned int with at least 16 bits. +

+

+ +

+
+ + + + +
typedef uint32_t uint_fast32_t
+
+
+ +

+fastest unsigned int with at least 32 bits. +

+

+ +

+
+ + + + +
typedef uint64_t uint_fast64_t
+
+
+ +

+fastest unsigned int with at least 64 bits.

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
typedef uint8_t uint_fast8_t
+
+
+ +

+fastest unsigned int with at least 8 bits. +

+

+ +

+
+ + + + +
typedef uint16_t uint_least16_t
+
+
+ +

+unsigned int with at least 16 bits. +

+

+ +

+
+ + + + +
typedef uint32_t uint_least32_t
+
+
+ +

+unsigned int with at least 32 bits. +

+

+ +

+
+ + + + +
typedef uint64_t uint_least64_t
+
+
+ +

+unsigned int with at least 64 bits.

Note:
This type is not available when the compiler option -mint8 is in effect.
+ +
+

+ +

+
+ + + + +
typedef uint8_t uint_least8_t
+
+
+ +

+unsigned int with at least 8 bits. +

+

+ +

+
+ + + + +
typedef uint64_t uintmax_t
+
+
+ +

+largest unsigned int available. +

+

+ +

+
+ + + + +
typedef uint16_t uintptr_t
+
+
+ +

+Unsigned pointer compatible type. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdio.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdio.html new file mode 100644 index 0000000..214be99 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdio.html @@ -0,0 +1,1955 @@ + + + + + avr-libc: <stdio.h>: Standard IO facilities + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<stdio.h>: Standard IO facilities


Detailed Description

+
 #include <stdio.h> 
+

+

Introduction to the Standard IO facilities

+

+This file declares the standard IO facilities that are implemented in avr-libc. Due to the nature of the underlying hardware, only a limited subset of standard IO is implemented. There is no actual file implementation available, so only device IO can be performed. Since there's no operating system, the application needs to provide enough details about their devices in order to make them usable by the standard IO facilities.

+Due to space constraints, some functionality has not been implemented at all (like some of the printf conversions that have been left out). Nevertheless, potential users of this implementation should be warned: the printf and scanf families of functions, although usually associated with presumably simple things like the famous "Hello, world!" program, are actually fairly complex which causes their inclusion to eat up a fair amount of code space. Also, they are not fast due to the nature of interpreting the format string at run-time. Whenever possible, resorting to the (sometimes non-standard) predetermined conversion facilities that are offered by avr-libc will usually cost much less in terms of speed and code size.

+

Tunable options for code size vs. feature set

+

+In order to allow programmers a code size vs. functionality tradeoff, the function vfprintf() which is the heart of the printf family can be selected in different flavours using linker options. See the documentation of vfprintf() for a detailed description. The same applies to vfscanf() and the scanf family of functions.

+

Outline of the chosen API

+

+The standard streams stdin, stdout, and stderr are provided, but contrary to the C standard, since avr-libc has no knowledge about applicable devices, these streams are not already pre-initialized at application startup. Also, since there is no notion of "file" whatsoever to avr-libc, there is no function fopen() that could be used to associate a stream to some device. (See note 1.) Instead, the function fdevopen() is provided to associate a stream to a device, where the device needs to provide a function to send a character, to receive a character, or both. There is no differentiation between "text" and "binary" streams inside avr-libc. Character \n is sent literally down to the device's put() function. If the device requires a carriage return (\r) character to be sent before the linefeed, its put() routine must implement this (see note 2).

+As an alternative method to fdevopen(), the macro fdev_setup_stream() might be used to setup a user-supplied FILE structure.

+It should be noted that the automatic conversion of a newline character into a carriage return - newline sequence breaks binary transfers. If binary transfers are desired, no automatic conversion should be performed, but instead any string that aims to issue a CR-LF sequence must use "\r\n" explicitly.

+For convenience, the first call to fdevopen() that opens a stream for reading will cause the resulting stream to be aliased to stdin. Likewise, the first call to fdevopen() that opens a stream for writing will cause the resulting stream to be aliased to both, stdout, and stderr. Thus, if the open was done with both, read and write intent, all three standard streams will be identical. Note that these aliases are indistinguishable from each other, thus calling fclose() on such a stream will also effectively close all of its aliases (note 3).

+It is possible to tie additional user data to a stream, using fdev_set_udata(). The backend put and get functions can then extract this user data using fdev_get_udata(), and act appropriately. For example, a single put function could be used to talk to two different UARTs that way, or the put and get functions could keep internal state between calls there.

+

Format strings in flash ROM

+

+All the printf and scanf family functions come in two flavours: the standard name, where the format string is expected to be in SRAM, as well as a version with the suffix "_P" where the format string is expected to reside in the flash ROM. The macro PSTR (explained in <avr/pgmspace.h>: Program Space Utilities) becomes very handy for declaring these format strings.

+

Running stdio without malloc()

+

+By default, fdevopen() requires malloc(). As this is often not desired in the limited environment of a microcontroller, an alternative option is provided to run completely without malloc().

+The macro fdev_setup_stream() is provided to prepare a user-supplied FILE buffer for operation with stdio.

+

Example

+

+

    #include <stdio.h>
+
+    static int uart_putchar(char c, FILE *stream);
+
+    static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,
+                                             _FDEV_SETUP_WRITE);
+
+    static int
+    uart_putchar(char c, FILE *stream)
+    {
+
+      if (c == '\n')
+        uart_putchar('\r', stream);
+      loop_until_bit_is_set(UCSRA, UDRE);
+      UDR = c;
+      return 0;
+    }
+
+    int
+    main(void)
+    {
+      init_uart();
+      stdout = &mystdout;
+      printf("Hello, world!\n");
+
+      return 0;
+    }
+

+This example uses the initializer form FDEV_SETUP_STREAM() rather than the function-like fdev_setup_stream(), so all data initialization happens during C start-up.

+If streams initialized that way are no longer needed, they can be destroyed by first calling the macro fdev_close(), and then destroying the object itself. No call to fclose() should be issued for these streams. While calling fclose() itself is harmless, it will cause an undefined reference to free() and thus cause the linker to link the malloc module into the application.

+

Notes

+

+

Note 1:
It might have been possible to implement a device abstraction that is compatible with fopen() but since this would have required to parse a string, and to take all the information needed either out of this string, or out of an additional table that would need to be provided by the application, this approach was not taken.
+
Note 2:
This basically follows the Unix approach: if a device such as a terminal needs special handling, it is in the domain of the terminal device driver to provide this functionality. Thus, a simple function suitable as put() for fdevopen() that talks to a UART interface might look like this:
+
    int
+    uart_putchar(char c, FILE *stream)
+    {
+
+      if (c == '\n')
+        uart_putchar('\r');
+      loop_until_bit_is_set(UCSRA, UDRE);
+      UDR = c;
+      return 0;
+    }
+

+

Note 3:
This implementation has been chosen because the cost of maintaining an alias is considerably smaller than the cost of maintaining full copies of each stream. Yet, providing an implementation that offers the complete set of standard streams was deemed to be useful. Not only that writing printf() instead of fprintf(mystream, ...) saves typing work, but since avr-gcc needs to resort to pass all arguments of variadic functions on the stack (as opposed to passing them in registers for functions that take a fixed number of parameters), the ability to pass one parameter less by implying stdin will also save some execution time.
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define FILE   struct __file
#define stdin   (__iob[0])
#define stdout   (__iob[1])
#define stderr   (__iob[2])
#define EOF   (-1)
#define fdev_set_udata(stream, u)   do { (stream)->udata = u; } while(0)
#define fdev_get_udata(stream)   ((stream)->udata)
#define fdev_setup_stream(stream, put, get, rwflag)
#define _FDEV_SETUP_READ   __SRD
#define _FDEV_SETUP_WRITE   __SWR
#define _FDEV_SETUP_RW   (__SRD|__SWR)
#define _FDEV_ERR   (-1)
#define _FDEV_EOF   (-2)
#define FDEV_SETUP_STREAM(put, get, rwflag)
#define fdev_close()
#define putc(__c, __stream)   fputc(__c, __stream)
#define putchar(__c)   fputc(__c, stdout)
#define getc(__stream)   fgetc(__stream)
#define getchar()   fgetc(stdin)

Functions

int fclose (FILE *__stream)
int vfprintf (FILE *__stream, const char *__fmt, va_list __ap)
int vfprintf_P (FILE *__stream, const char *__fmt, va_list __ap)
int fputc (int __c, FILE *__stream)
int printf (const char *__fmt,...)
int printf_P (const char *__fmt,...)
int vprintf (const char *__fmt, va_list __ap)
int sprintf (char *__s, const char *__fmt,...)
int sprintf_P (char *__s, const char *__fmt,...)
int snprintf (char *__s, size_t __n, const char *__fmt,...)
int snprintf_P (char *__s, size_t __n, const char *__fmt,...)
int vsprintf (char *__s, const char *__fmt, va_list ap)
int vsprintf_P (char *__s, const char *__fmt, va_list ap)
int vsnprintf (char *__s, size_t __n, const char *__fmt, va_list ap)
int vsnprintf_P (char *__s, size_t __n, const char *__fmt, va_list ap)
int fprintf (FILE *__stream, const char *__fmt,...)
int fprintf_P (FILE *__stream, const char *__fmt,...)
int fputs (const char *__str, FILE *__stream)
int fputs_P (const char *__str, FILE *__stream)
int puts (const char *__str)
int puts_P (const char *__str)
size_t fwrite (const void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)
int fgetc (FILE *__stream)
int ungetc (int __c, FILE *__stream)
char * fgets (char *__str, int __size, FILE *__stream)
char * gets (char *__str)
size_t fread (void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)
void clearerr (FILE *__stream)
int feof (FILE *__stream)
int ferror (FILE *__stream)
int vfscanf (FILE *__stream, const char *__fmt, va_list __ap)
int vfscanf_P (FILE *__stream, const char *__fmt, va_list __ap)
int fscanf (FILE *__stream, const char *__fmt,...)
int fscanf_P (FILE *__stream, const char *__fmt,...)
int scanf (const char *__fmt,...)
int scanf_P (const char *__fmt,...)
int vscanf (const char *__fmt, va_list __ap)
int sscanf (const char *__buf, const char *__fmt,...)
int sscanf_P (const char *__buf, const char *__fmt,...)
int fflush (FILE *stream)
FILE * fdevopen (int(*put)(char, FILE *), int(*get)(FILE *))
+


Define Documentation

+ +
+
+ + + + +
#define _FDEV_EOF   (-2)
+
+
+ +

+Return code for an end-of-file condition during device read.

+To be used in the get function of fdevopen(). +

+

+ +

+
+ + + + +
#define _FDEV_ERR   (-1)
+
+
+ +

+Return code for an error condition during device read.

+To be used in the get function of fdevopen(). +

+

+ +

+
+ + + + +
#define _FDEV_SETUP_READ   __SRD
+
+
+ +

+fdev_setup_stream() with read intent +

+

+ +

+
+ + + + +
#define _FDEV_SETUP_RW   (__SRD|__SWR)
+
+
+ +

+fdev_setup_stream() with read/write intent +

+

+ +

+
+ + + + +
#define _FDEV_SETUP_WRITE   __SWR
+
+
+ +

+fdev_setup_stream() with write intent +

+

+ +

+
+ + + + +
#define EOF   (-1)
+
+
+ +

+EOF declares the value that is returned by various standard IO functions in case of an error. Since the AVR platform (currently) doesn't contain an abstraction for actual files, its origin as "end of file" is somewhat meaningless here. +

+

+ +

+
+ + + + +  + + + + +
#define fdev_close (  ) 
+
+
+ +

+This macro frees up any library resources that might be associated with stream. It should be called if stream is no longer needed, right before the application is going to destroy the stream object itself.

+(Currently, this macro evaluates to nothing, but this might change in future versions of the library.) +

+

+ +

+
+ + + + + + + + + +
#define fdev_get_udata (stream   )    ((stream)->udata)
+
+
+ +

+This macro retrieves a pointer to user defined data from a FILE stream object. +

+

+ +

+
+ + + + + + + + + + + + +
#define fdev_set_udata (stream,
 )    do { (stream)->udata = u; } while(0)
+
+
+ +

+This macro inserts a pointer to user defined data into a FILE stream object.

+The user data can be useful for tracking state in the put and get functions supplied to the fdevopen() function. +

+

+ +

+
+ + + + + + + + + + + + + + + +
#define FDEV_SETUP_STREAM (put,
get,
rwflag   ) 
+
+
+ +

+Initializer for a user-supplied stdio stream. +

+This macro acts similar to fdev_setup_stream(), but it is to be used as the initializer of a variable of type FILE.

+The remaining arguments are to be used as explained in fdev_setup_stream(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
#define fdev_setup_stream (stream,
put,
get,
rwflag   ) 
+
+
+ +

+Setup a user-supplied buffer as an stdio stream. +

+This macro takes a user-supplied buffer stream, and sets it up as a stream that is valid for stdio operations, similar to one that has been obtained dynamically from fdevopen(). The buffer to setup must be of type FILE.

+The arguments put and get are identical to those that need to be passed to fdevopen().

+The rwflag argument can take one of the values _FDEV_SETUP_READ, _FDEV_SETUP_WRITE, or _FDEV_SETUP_RW, for read, write, or read/write intent, respectively.

+

Note:
No assignments to the standard streams will be performed by fdev_setup_stream(). If standard streams are to be used, these need to be assigned by the user. See also under Running stdio without malloc().
+ +
+

+ +

+
+ + + + +
#define FILE   struct __file
+
+
+ +

+FILE is the opaque structure that is passed around between the various standard IO functions. +

+

+ +

+
+ + + + + + + + + +
#define getc (__stream   )    fgetc(__stream)
+
+
+ +

+The macro getc used to be a "fast" macro implementation with a functionality identical to fgetc(). For space constraints, in avr-libc, it is just an alias for fgetc. +

+

+ +

+
+ + + + + + + + + +
#define getchar (void   )    fgetc(stdin)
+
+
+ +

+The macro getchar reads a character from stdin. Return values and error handling is identical to fgetc(). +

+

+ +

+
+ + + + + + + + + + + + +
#define putc (__c,
__stream   )    fputc(__c, __stream)
+
+
+ +

+The macro putc used to be a "fast" macro implementation with a functionality identical to fputc(). For space constraints, in avr-libc, it is just an alias for fputc. +

+

+ +

+
+ + + + + + + + + +
#define putchar (__c   )    fputc(__c, stdout)
+
+
+ +

+The macro putchar sends character c to stdout. +

+

+ +

+
+ + + + +
#define stderr   (__iob[2])
+
+
+ +

+Stream destined for error output. Unless specifically assigned, identical to stdout.

+If stderr should point to another stream, the result of another fdevopen() must be explicitly assigned to it without closing the previous stderr (since this would also close stdout). +

+

+ +

+
+ + + + +
#define stdin   (__iob[0])
+
+
+ +

+Stream that will be used as an input stream by the simplified functions that don't take a stream argument.

+The first stream opened with read intent using fdevopen() will be assigned to stdin. +

+

+ +

+
+ + + + +
#define stdout   (__iob[1])
+
+
+ +

+Stream that will be used as an output stream by the simplified functions that don't take a stream argument.

+The first stream opened with write intent using fdevopen() will be assigned to both, stdin, and stderr. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
void clearerr (FILE *  __stream  ) 
+
+
+ +

+Clear the error and end-of-file flags of stream. +

+

+ +

+
+ + + + + + + + + +
int fclose (FILE *  __stream  ) 
+
+
+ +

+This function closes stream, and disallows and further IO to and from it.

+When using fdevopen() to setup the stream, a call to fclose() is needed in order to free the internal resources allocated.

+If the stream has been set up using fdev_setup_stream() or FDEV_SETUP_STREAM(), use fdev_close() instead.

+It currently always returns 0 (for success). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
FILE* fdevopen (int(*)(char, FILE *)  put,
int(*)(FILE *)  get 
)
+
+
+ +

+This function is a replacement for fopen().

+It opens a stream for a device where the actual device implementation needs to be provided by the application. If successful, a pointer to the structure for the opened stream is returned. Reasons for a possible failure currently include that neither the put nor the get argument have been provided, thus attempting to open a stream with no IO intent at all, or that insufficient dynamic memory is available to establish a new stream.

+If the put function pointer is provided, the stream is opened with write intent. The function passed as put shall take two arguments, the first a character to write to the device, and the second a pointer to FILE, and shall return 0 if the output was successful, and a nonzero value if the character could not be sent to the device.

+If the get function pointer is provided, the stream is opened with read intent. The function passed as get shall take a pointer to FILE as its single argument, and return one character from the device, passed as an int type. If an error occurs when trying to read from the device, it shall return _FDEV_ERR. If an end-of-file condition was reached while reading from the device, _FDEV_EOF shall be returned.

+If both functions are provided, the stream is opened with read and write intent.

+The first stream opened with read intent is assigned to stdin, and the first one opened with write intent is assigned to both, stdout and stderr.

+fdevopen() uses calloc() (und thus malloc()) in order to allocate the storage for the new stream.

+

Note:
If the macro __STDIO_FDEVOPEN_COMPAT_12 is declared before including <stdio.h>, a function prototype for fdevopen() will be chosen that is backwards compatible with avr-libc version 1.2 and before. This is solely intented for providing a simple migration path without the need to immediately change all source code. Do not use for new code.
+ +
+

+ +

+
+ + + + + + + + + +
int feof (FILE *  __stream  ) 
+
+
+ +

+Test the end-of-file flag of stream. This flag can only be cleared by a call to clearerr(). +

+

+ +

+
+ + + + + + + + + +
int ferror (FILE *  __stream  ) 
+
+
+ +

+Test the error flag of stream. This flag can only be cleared by a call to clearerr(). +

+

+ +

+
+ + + + + + + + + +
int fflush (FILE *  stream  ) 
+
+
+ +

+Flush stream.

+This is a null operation provided for source-code compatibility only, as the standard IO implementation currently does not perform any buffering. +

+

+ +

+
+ + + + + + + + + +
int fgetc (FILE *  __stream  ) 
+
+
+ +

+The function fgetc reads a character from stream. It returns the character, or EOF in case end-of-file was encountered or an error occurred. The routines feof() or ferror() must be used to distinguish between both situations. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* fgets (char *  __str,
int  __size,
FILE *  __stream 
)
+
+
+ +

+Read at most size - 1 bytes from stream, until a newline character was encountered, and store the characters in the buffer pointed to by str. Unless an error was encountered while reading, the string will then be terminated with a NUL character.

+If an error was encountered, the function returns NULL and sets the error flag of stream, which can be tested using ferror(). Otherwise, a pointer to the string will be returned. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int fprintf (FILE *  __stream,
const char *  __fmt,
  ... 
)
+
+
+ +

+The function fprintf performs formatted output to stream. See vfprintf() for details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int fprintf_P (FILE *  __stream,
const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of fprintf() that uses a fmt string that resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int fputc (int  __c,
FILE *  __stream 
)
+
+
+ +

+The function fputc sends the character c (though given as type int) to stream. It returns the character, or EOF in case an error occurred. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int fputs (const char *  __str,
FILE *  __stream 
)
+
+
+ +

+Write the string pointed to by str to stream stream.

+Returns 0 on success and EOF on error. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int fputs_P (const char *  __str,
FILE *  __stream 
)
+
+
+ +

+Variant of fputs() where str resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t fread (void *  __ptr,
size_t  __size,
size_t  __nmemb,
FILE *  __stream 
)
+
+
+ +

+Read nmemb objects, size bytes each, from stream, to the buffer pointed to by ptr.

+Returns the number of objects successfully read, i. e. nmemb unless an input error occured or end-of-file was encountered. feof() and ferror() must be used to distinguish between these two conditions. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int fscanf (FILE *  __stream,
const char *  __fmt,
  ... 
)
+
+
+ +

+The function fscanf performs formatted input, reading the input data from stream.

+See vfscanf() for details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int fscanf_P (FILE *  __stream,
const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of fscanf() using a fmt string in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t fwrite (const void *  __ptr,
size_t  __size,
size_t  __nmemb,
FILE *  __stream 
)
+
+
+ +

+Write nmemb objects, size bytes each, to stream. The first byte of the first object is referenced by ptr.

+Returns the number of objects successfully written, i. e. nmemb unless an output error occured. +

+

+ +

+
+ + + + + + + + + +
char* gets (char *  __str  ) 
+
+
+ +

+Similar to fgets() except that it will operate on stream stdin, and the trailing newline (if any) will not be stored in the string. It is the caller's responsibility to provide enough storage to hold the characters read. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int printf (const char *  __fmt,
  ... 
)
+
+
+ +

+The function printf performs formatted output to stream stderr. See vfprintf() for details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int printf_P (const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of printf() that uses a fmt string that resides in program memory. +

+

+ +

+
+ + + + + + + + + +
int puts (const char *  __str  ) 
+
+
+ +

+Write the string pointed to by str, and a trailing newline character, to stdout. +

+

+ +

+
+ + + + + + + + + +
int puts_P (const char *  __str  ) 
+
+
+ +

+Variant of puts() where str resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int scanf (const char *  __fmt,
  ... 
)
+
+
+ +

+The function scanf performs formatted input from stream stdin.

+See vfscanf() for details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int scanf_P (const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of scanf() where fmt resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int snprintf (char *  __s,
size_t  __n,
const char *  __fmt,
  ... 
)
+
+
+ +

+Like sprintf(), but instead of assuming s to be of infinite size, no more than n characters (including the trailing NUL character) will be converted to s.

+Returns the number of characters that would have been written to s if there were enough space. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int snprintf_P (char *  __s,
size_t  __n,
const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of snprintf() that uses a fmt string that resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int sprintf (char *  __s,
const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of printf() that sends the formatted characters to string s. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int sprintf_P (char *  __s,
const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of sprintf() that uses a fmt string that resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int sscanf (const char *  __buf,
const char *  __fmt,
  ... 
)
+
+
+ +

+The function sscanf performs formatted input, reading the input data from the buffer pointed to by buf.

+See vfscanf() for details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int sscanf_P (const char *  __buf,
const char *  __fmt,
  ... 
)
+
+
+ +

+Variant of sscanf() using a fmt string in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int ungetc (int  __c,
FILE *  __stream 
)
+
+
+ +

+The ungetc() function pushes the character c (converted to an unsigned char) back onto the input stream pointed to by stream. The pushed-back character will be returned by a subsequent read on the stream.

+Currently, only a single character can be pushed back onto the stream.

+The ungetc() function returns the character pushed back after the conversion, or EOF if the operation fails. If the value of the argument c character equals EOF, the operation will fail and the stream will remain unchanged. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int vfprintf (FILE *  __stream,
const char *  __fmt,
va_list  __ap 
)
+
+
+ +

+vfprintf is the central facility of the printf family of functions. It outputs values to stream under control of a format string passed in fmt. The actual values to print are passed as a variable argument list ap.

+vfprintf returns the number of characters written to stream, or EOF in case of an error. Currently, this will only happen if stream has not been opened with write intent.

+The format string is composed of zero or more directives: ordinary characters (not %), which are copied unchanged to the output stream; and conversion specifications, each of which results in fetching zero or more subsequent arguments. Each conversion specification is introduced by the % character. The arguments must properly correspond (after type promotion) with the conversion specifier. After the %, the following appear in sequence:

+

    +
  • Zero or more of the following flags:
      +
    • +# The value should be converted to an "alternate form". For c, d, i, s, and u conversions, this option has no effect. For o conversions, the precision of the number is increased to force the first character of the output string to a zero (except if a zero value is printed with an explicit precision of zero). For x and X conversions, a non-zero result has the string `0x' (or `0X' for X conversions) prepended to it.
    • +
    • +0 (zero) Zero padding. For all conversions, the converted value is padded on the left with zeros rather than blanks. If a precision is given with a numeric conversion (d, i, o, u, i, x, and X), the 0 flag is ignored.
    • +
    • +- A negative field width flag; the converted value is to be left adjusted on the field boundary. The converted value is padded on the right with blanks, rather than on the left with blanks or zeros. A - overrides a 0 if both are given.
    • +
    • +' ' (space) A blank should be left before a positive number produced by a signed conversion (d, or i).
    • +
    • ++ A sign must always be placed before a number produced by a signed conversion. A + overrides a space if both are used.
    • +
    +
+

+

    +
  • An optional decimal digit string specifying a minimum field width. If the converted value has fewer characters than the field width, it will be padded with spaces on the left (or right, if the left-adjustment flag has been given) to fill out the field width.
  • An optional precision, in the form of a period . followed by an optional digit string. If the digit string is omitted, the precision is taken as zero. This gives the minimum number of digits to appear for d, i, o, u, x, and X conversions, or the maximum number of characters to be printed from a string for s conversions.
  • An optional l or h length modifier, that specifies that the argument for the d, i, o, u, x, or X conversion is a "long int" rather than int. The h is ignored, as "short int" is equivalent to int.
  • A character that specifies the type of conversion to be applied.
+

+The conversion specifiers and their meanings are:

+

    +
  • diouxX The int (or appropriate variant) argument is converted to signed decimal (d and i), unsigned octal (o), unsigned decimal (u), or unsigned hexadecimal (x and X) notation. The letters "abcdef" are used for x conversions; the letters "ABCDEF" are used for X conversions. The precision, if any, gives the minimum number of digits that must appear; if the converted value requires fewer digits, it is padded on the left with zeros.
  • p The void * argument is taken as an unsigned integer, and converted similarly as a %#x command would do.
  • c The int argument is converted to an "unsigned char", and the resulting character is written.
  • s The "char *" argument is expected to be a pointer to an array of character type (pointer to a string). Characters from the array are written up to (but not including) a terminating NUL character; if a precision is specified, no more than the number specified are written. If a precision is given, no null character need be present; if the precision is not specified, or is greater than the size of the array, the array must contain a terminating NUL character.
  • % A % is written. No argument is converted. The complete conversion specification is "%%".
  • eE The double argument is rounded and converted in the format "[-]d.ddde±dd" where there is one digit before the decimal-point character and the number of digits after it is equal to the precision; if the precision is missing, it is taken as 6; if the precision is zero, no decimal-point character appears. An E conversion uses the letter 'E' (rather than 'e') to introduce the exponent. The exponent always contains two digits; if the value is zero, the exponent is 00.
  • fF The double argument is rounded and converted to decimal notation in the format "[-]ddd.ddd", where the number of digits after the decimal-point character is equal to the precision specification. If the precision is missing, it is taken as 6; if the precision is explicitly zero, no decimal-point character appears. If a decimal point appears, at least one digit appears before it.
  • gG The double argument is converted in style f or e (or F or E for G conversions). The precision specifies the number of significant digits. If the precision is missing, 6 digits are given; if the precision is zero, it is treated as 1. Style e is used if the exponent from its conversion is less than -4 or greater than or equal to the precision. Trailing zeros are removed from the fractional part of the result; a decimal point appears only if it is followed by at least one digit.
  • S Similar to the s format, except the pointer is expected to point to a program-memory (ROM) string instead of a RAM string.
+

+In no case does a non-existent or small field width cause truncation of a numeric field; if the result of a conversion is wider than the field width, the field is expanded to contain the conversion result.

+Since the full implementation of all the mentioned features becomes fairly large, three different flavours of vfprintf() can be selected using linker options. The default vfprintf() implements all the mentioned functionality except floating point conversions. A minimized version of vfprintf() is available that only implements the very basic integer and string conversion facilities, but only the # additional option can be specified using conversion flags (these flags are parsed correctly from the format specification, but then simply ignored). This version can be requested using the following compiler options:

+

   -Wl,-u,vfprintf -lprintf_min
+

+If the full functionality including the floating point conversions is required, the following options should be used:

+

   -Wl,-u,vfprintf -lprintf_flt -lm
+

+

Limitations:
    +
  • The specified width and precision can be at most 255.
+
+
Notes:
    +
  • For floating-point conversions, if you link default or minimized version of vfprintf(), the symbol ? will be output and double argument will be skiped. So you output below will not be crashed. For default version the width field and the "pad to left" ( symbol minus ) option will work in this case.
  • The hh length modifier is ignored (char argument is promouted to int). More exactly, this realization does not check the number of h symbols.
  • But the ll length modifier will to abort the output, as this realization does not operate long long arguments.
  • The variable width or precision field (an asterisk * symbol) is not realized and will to abort the output.
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int vfprintf_P (FILE *  __stream,
const char *  __fmt,
va_list  __ap 
)
+
+
+ +

+Variant of vfprintf() that uses a fmt string that resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int vfscanf (FILE *  stream,
const char *  fmt,
va_list  ap 
)
+
+
+ +

+Formatted input. This function is the heart of the scanf family of functions.

+Characters are read from stream and processed in a way described by fmt. Conversion results will be assigned to the parameters passed via ap.

+The format string fmt is scanned for conversion specifications. Anything that doesn't comprise a conversion specification is taken as text that is matched literally against the input. White space in the format string will match any white space in the data (including none), all other characters match only itself. Processing is aborted as soon as the data and format string no longer match, or there is an error or end-of-file condition on stream.

+Most conversions skip leading white space before starting the actual conversion.

+Conversions are introduced with the character %. Possible options can follow the %:

+

    +
  • a * indicating that the conversion should be performed but the conversion result is to be discarded; no parameters will be processed from ap,
  • the character h indicating that the argument is a pointer to short int (rather than int),
  • the 2 characters hh indicating that the argument is a pointer to char (rather than int).
  • the character l indicating that the argument is a pointer to long int (rather than int, for integer type conversions), or a pointer to double (for floating point conversions),
+

+In addition, a maximal field width may be specified as a nonzero positive decimal integer, which will restrict the conversion to at most this many characters from the input stream. This field width is limited to at most 255 characters which is also the default value (except for the c conversion that defaults to 1).

+The following conversion flags are supported:

+

    +
  • % Matches a literal % character. This is not a conversion.
  • d Matches an optionally signed decimal integer; the next pointer must be a pointer to int.
  • i Matches an optionally signed integer; the next pointer must be a pointer to int. The integer is read in base 16 if it begins with 0x or 0X, in base 8 if it begins with 0, and in base 10 otherwise. Only characters that correspond to the base are used.
  • o Matches an octal integer; the next pointer must be a pointer to unsigned int.
  • u Matches an optionally signed decimal integer; the next pointer must be a pointer to unsigned int.
  • x Matches an optionally signed hexadecimal integer; the next pointer must be a pointer to unsigned int.
  • f Matches an optionally signed floating-point number; the next pointer must be a pointer to float.
  • e, g, F, E, G Equivalent to f.
  • s Matches a sequence of non-white-space characters; the next pointer must be a pointer to char, and the array must be large enough to accept all the sequence and the terminating NUL character. The input string stops at white space or at the maximum field width, whichever occurs first.
  • c Matches a sequence of width count characters (default 1); the next pointer must be a pointer to char, and there must be enough room for all the characters (no terminating NUL is added). The usual skip of leading white space is suppressed. To skip white space first, use an explicit space in the format.
  • [ Matches a nonempty sequence of characters from the specified set of accepted characters; the next pointer must be a pointer to char, and there must be enough room for all the characters in the string, plus a terminating NUL character. The usual skip of leading white space is suppressed. The string is to be made up of characters in (or not in) a particular set; the set is defined by the characters between the open bracket [ character and a close bracket ] character. The set excludes those characters if the first character after the open bracket is a circumflex ^. To include a close bracket in the set, make it the first character after the open bracket or the circumflex; any other position will end the set. The hyphen character - is also special; when placed between two other characters, it adds all intervening characters to the set. To include a hyphen, make it the last character before the final close bracket. For instance, [^]0-9-] means the set of everything except close bracket, zero through nine, and hyphen. The string ends with the appearance of a character not in the (or, with a circumflex, in) set or when the field width runs out. Note that usage of this conversion enlarges the stack expense.
  • p Matches a pointer value (as printed by p in printf()); the next pointer must be a pointer to void.
  • n Nothing is expected; instead, the number of characters consumed thus far from the input is stored through the next pointer, which must be a pointer to int. This is not a conversion, although it can be suppressed with the * flag.
+

+These functions return the number of input items assigned, which can be fewer than provided for, or even zero, in the event of a matching failure. Zero indicates that, while there was input available, no conversions were assigned; typically this is due to an invalid input character, such as an alphabetic character for a d conversion. The value EOF is returned if an input failure occurs before any conversion such as an end-of-file occurs. If an error or end-of-file occurs after conversion has begun, the number of conversions which were successfully completed is returned.

+By default, all the conversions described above are available except the floating-point conversions and the width is limited to 255 characters. The float-point conversion will be available in the extended version provided by the library libscanf_flt.a. Also in this case the width is not limited (exactly, it is limited to 65535 characters). To link a program against the extended version, use the following compiler flags in the link stage:

+

     -Wl,-u,vfscanf -lscanf_flt -lm
+

+A third version is available for environments that are tight on space. In addition to the restrictions of the standard one, this version implements no %[ specification. This version is provided in the library libscanf_min.a, and can be requested using the following options in the link stage:

+

     -Wl,-u,vfscanf -lscanf_min -lm
+
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int vfscanf_P (FILE *  __stream,
const char *  __fmt,
va_list  __ap 
)
+
+
+ +

+Variant of vfscanf() using a fmt string in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int vprintf (const char *  __fmt,
va_list  __ap 
)
+
+
+ +

+The function vprintf performs formatted output to stream stdout, taking a variable argument list as in vfprintf().

+See vfprintf() for details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int vscanf (const char *  __fmt,
va_list  __ap 
)
+
+
+ +

+The function vscanf performs formatted input from stream stdin, taking a variable argument list as in vfscanf().

+See vfscanf() for details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int vsnprintf (char *  __s,
size_t  __n,
const char *  __fmt,
va_list  ap 
)
+
+
+ +

+Like vsprintf(), but instead of assuming s to be of infinite size, no more than n characters (including the trailing NUL character) will be converted to s.

+Returns the number of characters that would have been written to s if there were enough space. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int vsnprintf_P (char *  __s,
size_t  __n,
const char *  __fmt,
va_list  ap 
)
+
+
+ +

+Variant of vsnprintf() that uses a fmt string that resides in program memory. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int vsprintf (char *  __s,
const char *  __fmt,
va_list  ap 
)
+
+
+ +

+Like sprintf() but takes a variable argument list for the arguments. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int vsprintf_P (char *  __s,
const char *  __fmt,
va_list  ap 
)
+
+
+ +

+Variant of vsprintf() that uses a fmt string that resides in program memory. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdlib.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdlib.html new file mode 100644 index 0000000..421538e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__stdlib.html @@ -0,0 +1,1172 @@ + + + + + avr-libc: <stdlib.h>: General utilities + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<stdlib.h>: General utilities


Detailed Description

+
 #include <stdlib.h> 
+

+This file declares some basic C macros and functions as defined by the ISO standard, plus some AVR-specific extensions. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  div_t
struct  ldiv_t

Non-standard (i.e. non-ISO C) functions.

char * ltoa (long int __val, char *__s, int __radix)
char * utoa (unsigned int __val, char *__s, int __radix)
char * ultoa (unsigned long int __val, char *__s, int __radix)
long random (void)
void srandom (unsigned long __seed)
long random_r (unsigned long *__ctx)
char * itoa (int __val, char *__s, int __radix)
#define RANDOM_MAX   0x7FFFFFFF

Conversion functions for double arguments.

Note that these functions are not located in the default library, libc.a, but in the mathematical library, libm.a. So when linking the application, the -lm option needs to be specified.

char * dtostre (double __val, char *__s, unsigned char __prec, unsigned char __flags)
char * dtostrf (double __val, signed char __width, unsigned char __prec, char *__s)
#define DTOSTR_ALWAYS_SIGN   0x01
#define DTOSTR_PLUS_SIGN   0x02
#define DTOSTR_UPPERCASE   0x04

Defines

#define RAND_MAX   0x7FFF

Typedefs

typedef int(* __compar_fn_t )(const void *, const void *)

Functions

void abort (void) __ATTR_NORETURN__
int abs (int __i)
long labs (long __i)
void * bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, int(*__compar)(const void *, const void *))
div_t div (int __num, int __denom) __asm__("__divmodhi4")
ldiv_t ldiv (long __num, long __denom) __asm__("__divmodsi4")
void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar)
long strtol (const char *__nptr, char **__endptr, int __base)
unsigned long strtoul (const char *__nptr, char **__endptr, int __base)
long atol (const char *__s) __ATTR_PURE__
int atoi (const char *__s) __ATTR_PURE__
void exit (int __status) __ATTR_NORETURN__
void * malloc (size_t __size) __ATTR_MALLOC__
void free (void *__ptr)
void * calloc (size_t __nele, size_t __size) __ATTR_MALLOC__
void * realloc (void *__ptr, size_t __size) __ATTR_MALLOC__
double strtod (const char *__nptr, char **__endptr)
double atof (const char *__nptr)
int rand (void)
void srand (unsigned int __seed)
int rand_r (unsigned long *__ctx)

Variables

size_t __malloc_margin
char * __malloc_heap_start
char * __malloc_heap_end
+


Define Documentation

+ +
+
+ + + + +
#define DTOSTR_ALWAYS_SIGN   0x01
+
+
+ +

+Bit value that can be passed in flags to dtostre(). +

+

+ +

+
+ + + + +
#define DTOSTR_PLUS_SIGN   0x02
+
+
+ +

+Bit value that can be passed in flags to dtostre(). +

+

+ +

+
+ + + + +
#define DTOSTR_UPPERCASE   0x04
+
+
+ +

+Bit value that can be passed in flags to dtostre(). +

+

+ +

+
+ + + + +
#define RAND_MAX   0x7FFF
+
+
+ +

+Highest number that can be generated by rand(). +

+

+ +

+
+ + + + +
#define RANDOM_MAX   0x7FFFFFFF
+
+
+ +

+Highest number that can be generated by random(). +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef int(* __compar_fn_t)(const void *, const void *)
+
+
+ +

+Comparision function type for qsort(), just for convenience. +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
void abort (void   ) 
+
+
+ +

+The abort() function causes abnormal program termination to occur. This realization disables interrupts and jumps to _exit() function with argument equal to 1. In the limited AVR environment, execution is effectively halted by entering an infinite loop. +

+

+ +

+
+ + + + + + + + + +
int abs (int  __i  ) 
+
+
+ +

+The abs() function computes the absolute value of the integer i.

Note:
The abs() and labs() functions are builtins of gcc.
+ +
+

+ +

+
+ + + + + + + + + +
double atof (const char *  nptr  ) 
+
+
+ +

+The atof() function converts the initial portion of the string pointed to by nptr to double representation.

+It is equivalent to calling

 strtod(nptr, (char **)0); 
+
+
+

+ +

+
+ + + + + + + + + +
int atoi (const char *  s  ) 
+
+
+ +

+Convert a string to an integer. +

+The atoi() function converts the initial portion of the string pointed to by s to integer representation. In contrast to

+

 (int)strtol(s, (char **)NULL, 10); 
+

+this function does not detect overflow (errno is not changed and the result value is not predictable), uses smaller memory (flash and stack) and works more quickly. +

+

+ +

+
+ + + + + + + + + +
long atol (const char *  s  ) 
+
+
+ +

+Convert a string to a long integer. +

+The atol() function converts the initial portion of the string pointed to by s to long integer representation. In contrast to

+

 strtol(s, (char **)NULL, 10); 
+

+this function does not detect overflow (errno is not changed and the result value is not predictable), uses smaller memory (flash and stack) and works more quickly. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void* bsearch (const void *  __key,
const void *  __base,
size_t  __nmemb,
size_t  __size,
int(*)(const void *, const void *)  __compar 
)
+
+
+ +

+The bsearch() function searches an array of nmemb objects, the initial member of which is pointed to by base, for a member that matches the object pointed to by key. The size of each member of the array is specified by size.

+The contents of the array should be in ascending sorted order according to the comparison function referenced by compar. The compar routine is expected to have two arguments which point to the key object and to an array member, in that order, and should return an integer less than, equal to, or greater than zero if the key object is found, respectively, to be less than, to match, or be greater than the array member.

+The bsearch() function returns a pointer to a matching member of the array, or a null pointer if no match is found. If two members compare as equal, which member is matched is unspecified. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void* calloc (size_t  __nele,
size_t  __size 
)
+
+
+ +

+Allocate nele elements of size each. Identical to calling malloc() using nele * size as argument, except the allocated memory will be cleared to zero. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
div_t div (int  __num,
int  __denom 
)
+
+
+ +

+The div() function computes the value num/denom and returns the quotient and remainder in a structure named div_t that contains two int members named quot and rem. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
char* dtostre (double  __val,
char *  __s,
unsigned char  __prec,
unsigned char  __flags 
)
+
+
+ +

+The dtostre() function converts the double value passed in val into an ASCII representation that will be stored under s. The caller is responsible for providing sufficient storage in s.

+Conversion is done in the format "[-]d.ddde±dd" where there is one digit before the decimal-point character and the number of digits after it is equal to the precision prec; if the precision is zero, no decimal-point character appears. If flags has the DTOSTRE_UPPERCASE bit set, the letter 'E' (rather than 'e' ) will be used to introduce the exponent. The exponent always contains two digits; if the value is zero, the exponent is "00".

+If flags has the DTOSTRE_ALWAYS_SIGN bit set, a space character will be placed into the leading position for positive numbers.

+If flags has the DTOSTRE_PLUS_SIGN bit set, a plus sign will be used instead of a space character in this case.

+The dtostre() function returns the pointer to the converted string s. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
char* dtostrf (double  __val,
signed char  __width,
unsigned char  __prec,
char *  __s 
)
+
+
+ +

+The dtostrf() function converts the double value passed in val into an ASCII representationthat will be stored under s. The caller is responsible for providing sufficient storage in s.

+Conversion is done in the format "[-]d.ddd". The minimum field width of the output string (including the '.' and the possible sign for negative values) is given in width, and prec determines the number of digits after the decimal sign. width is signed value, negative for left adjustment.

+The dtostrf() function returns the pointer to the converted string s. +

+

+ +

+
+ + + + + + + + + +
void exit (int  __status  ) 
+
+
+ +

+The exit() function terminates the application. Since there is no environment to return to, status is ignored, and code execution will eventually reach an infinite loop, thereby effectively halting all code processing. Before entering the infinite loop, interrupts are globally disabled.

+In a C++ context, global destructors will be called before halting execution. +

+

+ +

+
+ + + + + + + + + +
void free (void *  __ptr  ) 
+
+
+ +

+The free() function causes the allocated memory referenced by ptr to be made available for future allocations. If ptr is NULL, no action occurs. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* itoa (int  __val,
char *  __s,
int  __radix 
)
+
+
+ +

+Convert an integer to a string. +

+The function itoa() converts the integer value from val into an ASCII representation that will be stored under s. The caller is responsible for providing sufficient storage in s.

+

Note:
The minimal size of the buffer s depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size.
+
Warning:
If the buffer is too small, you risk a buffer overflow.
+Conversion is done using the radix as base, which may be a number between 2 (binary conversion) and up to 36. If radix is greater than 10, the next digit after '9' will be the letter 'a'.

+If radix is 10 and val is negative, a minus sign will be prepended.

+The itoa() function returns the pointer passed as s. +

+

+ +

+
+ + + + + + + + + +
long labs (long  __i  ) 
+
+
+ +

+The labs() function computes the absolute value of the long integer i.

Note:
The abs() and labs() functions are builtins of gcc.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ldiv_t ldiv (long  __num,
long  __denom 
)
+
+
+ +

+The ldiv() function computes the value num/denom and returns the quotient and remainder in a structure named ldiv_t that contains two long integer members named quot and rem. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* ltoa (long int  __val,
char *  __s,
int  __radix 
)
+
+
+ +

+Convert a long integer to a string. +

+The function ltoa() converts the long integer value from val into an ASCII representation that will be stored under s. The caller is responsible for providing sufficient storage in s.

+

Note:
The minimal size of the buffer s depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (long int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size.
+
Warning:
If the buffer is too small, you risk a buffer overflow.
+Conversion is done using the radix as base, which may be a number between 2 (binary conversion) and up to 36. If radix is greater than 10, the next digit after '9' will be the letter 'a'.

+If radix is 10 and val is negative, a minus sign will be prepended.

+The ltoa() function returns the pointer passed as s. +

+

+ +

+
+ + + + + + + + + +
void* malloc (size_t  __size  ) 
+
+
+ +

+The malloc() function allocates size bytes of memory. If malloc() fails, a NULL pointer is returned.

+Note that malloc() does not initialize the returned memory to zero bytes.

+See the chapter about malloc() usage for implementation details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void qsort (void *  __base,
size_t  __nmemb,
size_t  __size,
__compar_fn_t  __compar 
)
+
+
+ +

+The qsort() function is a modified partition-exchange sort, or quicksort.

+The qsort() function sorts an array of nmemb objects, the initial member of which is pointed to by base. The size of each object is specified by size. The contents of the array base are sorted in ascending order according to a comparison function pointed to by compar, which requires two arguments pointing to the objects being compared.

+The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second. +

+

+ +

+
+ + + + + + + + + +
int rand (void   ) 
+
+
+ +

+The rand() function computes a sequence of pseudo-random integers in the range of 0 to RAND_MAX (as defined by the header file <stdlib.h>).

+The srand() function sets its argument seed as the seed for a new sequence of pseudo-random numbers to be returned by rand(). These sequences are repeatable by calling srand() with the same seed value.

+If no seed value is provided, the functions are automatically seeded with a value of 1.

+In compliance with the C standard, these functions operate on int arguments. Since the underlying algorithm already uses 32-bit calculations, this causes a loss of precision. See random() for an alternate set of functions that retains full 32-bit precision. +

+

+ +

+
+ + + + + + + + + +
int rand_r (unsigned long *  __ctx  ) 
+
+
+ +

+Variant of rand() that stores the context in the user-supplied variable located at ctx instead of a static library variable so the function becomes re-entrant. +

+

+ +

+
+ + + + + + + + + +
long random (void   ) 
+
+
+ +

+The random() function computes a sequence of pseudo-random integers in the range of 0 to RANDOM_MAX (as defined by the header file <stdlib.h>).

+The srandom() function sets its argument seed as the seed for a new sequence of pseudo-random numbers to be returned by rand(). These sequences are repeatable by calling srandom() with the same seed value.

+If no seed value is provided, the functions are automatically seeded with a value of 1. +

+

+ +

+
+ + + + + + + + + +
long random_r (unsigned long *  __ctx  ) 
+
+
+ +

+Variant of random() that stores the context in the user-supplied variable located at ctx instead of a static library variable so the function becomes re-entrant. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void* realloc (void *  __ptr,
size_t  __size 
)
+
+
+ +

+The realloc() function tries to change the size of the region allocated at ptr to the new size value. It returns a pointer to the new region. The returned pointer might be the same as the old pointer, or a pointer to a completely different region.

+The contents of the returned region up to either the old or the new size value (whatever is less) will be identical to the contents of the old region, even in case a new region had to be allocated.

+It is acceptable to pass ptr as NULL, in which case realloc() will behave identical to malloc().

+If the new memory cannot be allocated, realloc() returns NULL, and the region at ptr will not be changed. +

+

+ +

+
+ + + + + + + + + +
void srand (unsigned int  __seed  ) 
+
+
+ +

+Pseudo-random number generator seeding; see rand(). +

+

+ +

+
+ + + + + + + + + +
void srandom (unsigned long  __seed  ) 
+
+
+ +

+Pseudo-random number generator seeding; see random(). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
double strtod (const char *  nptr,
char **  endptr 
)
+
+
+ +

+The strtod() function converts the initial portion of the string pointed to by nptr to double representation.

+The expected form of the string is an optional plus ( '+' ) or minus sign ( '-' ) followed by a sequence of digits optionally containing a decimal-point character, optionally followed by an exponent. An exponent consists of an 'E' or 'e', followed by an optional plus or minus sign, followed by a sequence of digits.

+Leading white-space characters in the string are skipped.

+The strtod() function returns the converted value, if any.

+If endptr is not NULL, a pointer to the character after the last character used in the conversion is stored in the location referenced by endptr.

+If no conversion is performed, zero is returned and the value of nptr is stored in the location referenced by endptr.

+If the correct value would cause overflow, plus or minus INFINITY is returned (according to the sign of the value), and ERANGE is stored in errno. If the correct value would cause underflow, zero is returned and ERANGE is stored in errno. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
long strtol (const char *  __nptr,
char **  __endptr,
int  __base 
)
+
+
+ +

+The strtol() function converts the string in nptr to a long value. The conversion is done according to the given base, which must be between 2 and 36 inclusive, or be the special value 0.

+The string may begin with an arbitrary amount of white space (as determined by isspace()) followed by a single optional '+' or '-' sign. If base is zero or 16, the string may then include a "0x" prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is '0', in which case it is taken as 8 (octal).

+The remainder of the string is converted to a long value in the obvious manner, stopping at the first character which is not a valid digit in the given base. (In bases above 10, the letter 'A' in either upper or lower case represents 10, 'B' represents 11, and so forth, with 'Z' representing 35.)

+If endptr is not NULL, strtol() stores the address of the first invalid character in *endptr. If there were no digits at all, however, strtol() stores the original value of nptr in endptr. (Thus, if *nptr is not '\0' but **endptr is '\0' on return, the entire string was valid.)

+The strtol() function returns the result of the conversion, unless the value would underflow or overflow. If no conversion could be performed, 0 is returned. If an overflow or underflow occurs, errno is set to ERANGE and the function return value is clamped to LONG_MIN or LONG_MAX, respectively. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
unsigned long strtoul (const char *  __nptr,
char **  __endptr,
int  __base 
)
+
+
+ +

+The strtoul() function converts the string in nptr to an unsigned long value. The conversion is done according to the given base, which must be between 2 and 36 inclusive, or be the special value 0.

+The string may begin with an arbitrary amount of white space (as determined by isspace()) followed by a single optional '+' or '-' sign. If base is zero or 16, the string may then include a "0x" prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is '0', in which case it is taken as 8 (octal).

+The remainder of the string is converted to an unsigned long value in the obvious manner, stopping at the first character which is not a valid digit in the given base. (In bases above 10, the letter 'A' in either upper or lower case represents 10, 'B' represents 11, and so forth, with 'Z' representing 35.)

+If endptr is not NULL, strtoul() stores the address of the first invalid character in *endptr. If there were no digits at all, however, strtoul() stores the original value of nptr in endptr. (Thus, if *nptr is not '\0' but **endptr is '\0' on return, the entire string was valid.)

+The strtoul() function return either the result of the conversion or, if there was a leading minus sign, the negation of the result of the conversion, unless the original (non-negated) value would overflow; in the latter case, strtoul() returns ULONG_MAX, and errno is set to ERANGE. If no conversion could be performed, 0 is returned. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* ultoa (unsigned long int  __val,
char *  __s,
int  __radix 
)
+
+
+ +

+Convert an unsigned long integer to a string. +

+The function ultoa() converts the unsigned long integer value from val into an ASCII representation that will be stored under s. The caller is responsible for providing sufficient storage in s.

+

Note:
The minimal size of the buffer s depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (unsigned long int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size.
+
Warning:
If the buffer is too small, you risk a buffer overflow.
+Conversion is done using the radix as base, which may be a number between 2 (binary conversion) and up to 36. If radix is greater than 10, the next digit after '9' will be the letter 'a'.

+The ultoa() function returns the pointer passed as s. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* utoa (unsigned int  __val,
char *  __s,
int  __radix 
)
+
+
+ +

+Convert an unsigned integer to a string. +

+The function utoa() converts the unsigned integer value from val into an ASCII representation that will be stored under s. The caller is responsible for providing sufficient storage in s.

+

Note:
The minimal size of the buffer s depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (unsigned int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size.
+
Warning:
If the buffer is too small, you risk a buffer overflow.
+Conversion is done using the radix as base, which may be a number between 2 (binary conversion) and up to 36. If radix is greater than 10, the next digit after '9' will be the letter 'a'.

+The utoa() function returns the pointer passed as s. +

+

+


Variable Documentation

+ +
+
+ + + + +
char* __malloc_heap_end
+
+
+ +

+malloc() tunable. +

+

+ +

+
+ + + + +
char* __malloc_heap_start
+
+
+ +

+malloc() tunable. +

+

+ +

+
+ + + + +
size_t __malloc_margin
+
+
+ +

+malloc() tunable. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__string.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__string.html new file mode 100644 index 0000000..0954bf9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__string.html @@ -0,0 +1,1425 @@ + + + + + avr-libc: <string.h>: Strings + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<string.h>: Strings


Detailed Description

+
 #include <string.h> 
+

+The string functions perform string operations on NULL terminated strings.

+

Note:
If the strings you are working on resident in program space (flash), you will need to use the string functions described in <avr/pgmspace.h>: Program Space Utilities.
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define _FFS(x)

Functions

int ffs (int __val)
int ffsl (long __val)
int ffsll (long long __val)
void * memccpy (void *, const void *, int, size_t)
void * memchr (const void *, int, size_t) __ATTR_PURE__
int memcmp (const void *, const void *, size_t) __ATTR_PURE__
void * memcpy (void *, const void *, size_t)
void * memmem (const void *, size_t, const void *, size_t) __ATTR_PURE__
void * memmove (void *, const void *, size_t)
void * memrchr (const void *, int, size_t) __ATTR_PURE__
void * memset (void *, int, size_t)
int strcasecmp (const char *, const char *) __ATTR_PURE__
char * strcasestr (const char *, const char *) __ATTR_PURE__
char * strcat (char *, const char *)
char * strchr (const char *, int) __ATTR_PURE__
char * strchrnul (const char *, int) __ATTR_PURE__
int strcmp (const char *, const char *) __ATTR_PURE__
char * strcpy (char *, const char *)
size_t strcspn (const char *__s, const char *__reject) __ATTR_PURE__
char * strdup (const char *s1)
size_t strlcat (char *, const char *, size_t)
size_t strlcpy (char *, const char *, size_t)
size_t strlen (const char *) __ATTR_PURE__
char * strlwr (char *)
int strncasecmp (const char *, const char *, size_t) __ATTR_PURE__
char * strncat (char *, const char *, size_t)
int strncmp (const char *, const char *, size_t) __ATTR_PURE__
char * strncpy (char *, const char *, size_t)
size_t strnlen (const char *, size_t) __ATTR_PURE__
char * strpbrk (const char *__s, const char *__accept) __ATTR_PURE__
char * strrchr (const char *, int) __ATTR_PURE__
char * strrev (char *)
char * strsep (char **, const char *)
size_t strspn (const char *__s, const char *__accept) __ATTR_PURE__
char * strstr (const char *, const char *) __ATTR_PURE__
char * strtok (char *, const char *)
char * strtok_r (char *, const char *, char **)
char * strupr (char *)
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define _FFS (  ) 
+
+
+ +

+This macro finds the first (least significant) bit set in the input value.

+This macro is very similar to the function ffs() except that it evaluates its argument at compile-time, so it should only be applied to compile-time constant expressions where it will reduce to a constant itself. Application of this macro to expressions that are not constant at compile-time is not recommended, and might result in a huge amount of code generated.

+

Returns:
The _FFS() macro returns the position of the first (least significant) bit set in the word val, or 0 if no bits are set. The least significant bit is position 1.
+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + +
int ffs (int  val  ) 
+
+
+ +

+This function finds the first (least significant) bit set in the input value. +

+

Returns:
The ffs() function returns the position of the first (least significant) bit set in the word val, or 0 if no bits are set. The least significant bit is position 1.
+
Note:
For expressions that are constant at compile time, consider using the _FFS macro instead.
+ +
+

+ +

+
+ + + + + + + + + +
int ffsl (long  __val  ) 
+
+
+ +

+Same as ffs(), for an argument of type long. +

+ +

+

+ +

+
+ + + + + + + + + +
int ffsll (long long  __val  ) 
+
+
+ +

+Same as ffs(), for an argument of type long long. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void * memccpy (void *  dest,
const void *  src,
int  val,
size_t  len 
)
+
+
+ +

+Copy memory area. +

+The memccpy() function copies no more than len bytes from memory area src to memory area dest, stopping when the character val is found.

+

Returns:
The memccpy() function returns a pointer to the next character in dest after val, or NULL if val was not found in the first len characters of src.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void * memchr (const void *  src,
int  val,
size_t  len 
)
+
+
+ +

+Scan memory for a character. +

+The memchr() function scans the first len bytes of the memory area pointed to by src for the character val. The first byte to match val (interpreted as an unsigned character) stops the operation.

+

Returns:
The memchr() function returns a pointer to the matching byte or NULL if the character does not occur in the given memory area.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int memcmp (const void *  s1,
const void *  s2,
size_t  len 
)
+
+
+ +

+Compare memory areas. +

+The memcmp() function compares the first len bytes of the memory areas s1 and s2. The comparision is performed using unsigned char operations.

+

Returns:
The memcmp() function returns an integer less than, equal to, or greater than zero if the first len bytes of s1 is found, respectively, to be less than, to match, or be greater than the first len bytes of s2.
+
Note:
Be sure to store the result in a 16 bit variable since you may get incorrect results if you use an unsigned char or char due to truncation.
+
Warning:
This function is not -mint8 compatible, although if you only care about testing for equality, this function should be safe to use.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void * memcpy (void *  dest,
const void *  src,
size_t  len 
)
+
+
+ +

+Copy a memory area. +

+The memcpy() function copies len bytes from memory area src to memory area dest. The memory areas may not overlap. Use memmove() if the memory areas do overlap.

+

Returns:
The memcpy() function returns a pointer to dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void * memmem (const void *  s1,
size_t  len1,
const void *  s2,
size_t  len2 
)
+
+
+ +

+The memmem() function finds the start of the first occurrence of the substring s2 of length len2 in the memory area s1 of length len1.

+

Returns:
The memmem() function returns a pointer to the beginning of the substring, or NULL if the substring is not found. If len2 is zero, the function returns s1.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void * memmove (void *  dest,
const void *  src,
size_t  len 
)
+
+
+ +

+Copy memory area. +

+The memmove() function copies len bytes from memory area src to memory area dest. The memory areas may overlap.

+

Returns:
The memmove() function returns a pointer to dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void * memrchr (const void *  src,
int  val,
size_t  len 
)
+
+
+ +

+The memrchr() function is like the memchr() function, except that it searches backwards from the end of the len bytes pointed to by src instead of forwards from the front. (Glibc, GNU extension.)

+

Returns:
The memrchr() function returns a pointer to the matching byte or NULL if the character does not occur in the given memory area.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void * memset (void *  dest,
int  val,
size_t  len 
)
+
+
+ +

+Fill memory with a constant byte. +

+The memset() function fills the first len bytes of the memory area pointed to by dest with the constant byte val.

+

Returns:
The memset() function returns a pointer to the memory area dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int strcasecmp (const char *  s1,
const char *  s2 
)
+
+
+ +

+Compare two strings ignoring case. +

+The strcasecmp() function compares the two strings s1 and s2, ignoring the case of the characters.

+

Returns:
The strcasecmp() function returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. A consequence of the ordering used by strcasecmp() is that if s1 is an initial substring of s2, then s1 is considered to be "less than" s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strcasestr (const char *  s1,
const char *  s2 
)
+
+
+ +

+The strcasestr() function finds the first occurrence of the substring s2 in the string s1. This is like strstr(), except that it ignores case of alphabetic symbols in searching for the substring. (Glibc, GNU extension.)

+

Returns:
The strcasestr() function returns a pointer to the beginning of the substring, or NULL if the substring is not found. If s2 points to a string of zero length, the function returns s1.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strcat (char *  dest,
const char *  src 
)
+
+
+ +

+Concatenate two strings. +

+The strcat() function appends the src string to the dest string overwriting the '\0' character at the end of dest, and then adds a terminating '\0' character. The strings may not overlap, and the dest string must have enough space for the result.

+

Returns:
The strcat() function returns a pointer to the resulting string dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strchr (const char *  src,
int  val 
)
+
+
+ +

+Locate character in string. +

+The strchr() function returns a pointer to the first occurrence of the character val in the string src.

+Here "character" means "byte" - these functions do not work with wide or multi-byte characters.

+

Returns:
The strchr() function returns a pointer to the matched character or NULL if the character is not found.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strchrnul (const char *  s,
int  c 
)
+
+
+ +

+The strchrnul() function is like strchr() except that if c is not found in s, then it returns a pointer to the null byte at the end of s, rather than NULL. (Glibc, GNU extension.)

+

Returns:
The strchrnul() function returns a pointer to the matched character, or a pointer to the null byte at the end of s (i.e., s+strlen(s)) if the character is not found.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int strcmp (const char *  s1,
const char *  s2 
)
+
+
+ +

+Compare two strings. +

+The strcmp() function compares the two strings s1 and s2.

+

Returns:
The strcmp() function returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. A consequence of the ordering used by strcmp() is that if s1 is an initial substring of s2, then s1 is considered to be "less than" s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strcpy (char *  dest,
const char *  src 
)
+
+
+ +

+Copy a string. +

+The strcpy() function copies the string pointed to by src (including the terminating '\0' character) to the array pointed to by dest. The strings may not overlap, and the destination string dest must be large enough to receive the copy.

+

Returns:
The strcpy() function returns a pointer to the destination string dest.
+
Note:
If the destination string of a strcpy() is not large enough (that is, if the programmer was stupid/lazy, and failed to check the size before copying) then anything might happen. Overflowing fixed length strings is a favourite cracker technique.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
size_t strcspn (const char *  s,
const char *  reject 
)
+
+
+ +

+The strcspn() function calculates the length of the initial segment of s which consists entirely of characters not in reject.

+

Returns:
The strcspn() function returns the number of characters in the initial segment of s which are not in the string reject. The terminating zero is not considered as a part of string.
+ +
+

+ +

+
+ + + + + + + + + +
char * strdup (const char *  s1  ) 
+
+
+ +

+Duplicate a string. +

+The strdup() function allocates memory and copies into it the string addressed by s1, including the terminating null character.

+

Warning:
The strdup() function calls malloc() to allocate the memory for the duplicated string! The user is responsible for freeing the memory by calling free().
+
Returns:
The strdup() function returns a pointer to the resulting string dest. If malloc() cannot allocate enough storage for the string, strdup() will return NULL.
+
Warning:
Be sure to check the return value of the strdup() function to make sure that the function has succeeded in allocating the memory!
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t strlcat (char *  dst,
const char *  src,
size_t  siz 
)
+
+
+ +

+Concatenate two strings. +

+Appends src to string dst of size siz (unlike strncat(), siz is the full size of dst, not space left). At most siz-1 characters will be copied. Always NULL terminates (unless siz <= strlen(dst)).

+

Returns:
The strlcat() function returns strlen(src) + MIN(siz, strlen(initial dst)). If retval >= siz, truncation occurred.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t strlcpy (char *  dst,
const char *  src,
size_t  siz 
)
+
+
+ +

+Copy a string. +

+Copy src to string dst of size siz. At most siz-1 characters will be copied. Always NULL terminates (unless siz == 0).

+

Returns:
The strlcpy() function returns strlen(src). If retval >= siz, truncation occurred.
+ +
+

+ +

+
+ + + + + + + + + +
size_t strlen (const char *  src  ) 
+
+
+ +

+Calculate the length of a string. +

+The strlen() function calculates the length of the string src, not including the terminating '\0' character.

+

Returns:
The strlen() function returns the number of characters in src.
+ +
+

+ +

+
+ + + + + + + + + +
char * strlwr (char *  s  ) 
+
+
+ +

+Convert a string to lower case. +

+The strlwr() function will convert a string to lower case. Only the upper case alphabetic characters [A .. Z] are converted. Non-alphabetic characters will not be changed.

+

Returns:
The strlwr() function returns a pointer to the converted string.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int strncasecmp (const char *  s1,
const char *  s2,
size_t  len 
)
+
+
+ +

+Compare two strings ignoring case. +

+The strncasecmp() function is similar to strcasecmp(), except it only compares the first len characters of s1.

+

Returns:
The strncasecmp() function returns an integer less than, equal to, or greater than zero if s1 (or the first len bytes thereof) is found, respectively, to be less than, to match, or be greater than s2. A consequence of the ordering used by strncasecmp() is that if s1 is an initial substring of s2, then s1 is considered to be "less than" s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char * strncat (char *  dest,
const char *  src,
size_t  len 
)
+
+
+ +

+Concatenate two strings. +

+The strncat() function is similar to strcat(), except that only the first n characters of src are appended to dest.

+

Returns:
The strncat() function returns a pointer to the resulting string dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int strncmp (const char *  s1,
const char *  s2,
size_t  len 
)
+
+
+ +

+Compare two strings. +

+The strncmp() function is similar to strcmp(), except it only compares the first (at most) n characters of s1 and s2.

+

Returns:
The strncmp() function returns an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char * strncpy (char *  dest,
const char *  src,
size_t  len 
)
+
+
+ +

+Copy a string. +

+The strncpy() function is similar to strcpy(), except that not more than n bytes of src are copied. Thus, if there is no null byte among the first n bytes of src, the result will not be null-terminated.

+In the case where the length of src is less than that of n, the remainder of dest will be padded with nulls.

+

Returns:
The strncpy() function returns a pointer to the destination string dest.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
size_t strnlen (const char *  src,
size_t  len 
)
+
+
+ +

+Determine the length of a fixed-size string. +

+The strnlen function returns the number of characters in the string pointed to by src, not including the terminating '\0' character, but at most len. In doing this, strnlen looks only at the first len characters at src and never beyond src+len.

+

Returns:
The strnlen function returns strlen(src), if that is less than len, or len if there is no '\0' character among the first len characters pointed to by src.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strpbrk (const char *  s,
const char *  accept 
)
+
+
+ +

+The strpbrk() function locates the first occurrence in the string s of any of the characters in the string accept.

+

Returns:
The strpbrk() function returns a pointer to the character in s that matches one of the characters in accept, or NULL if no such character is found. The terminating zero is not considered as a part of string: if one or both args are empty, the result will NULL.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strrchr (const char *  src,
int  val 
)
+
+
+ +

+Locate character in string. +

+The strrchr() function returns a pointer to the last occurrence of the character val in the string src.

+Here "character" means "byte" - these functions do not work with wide or multi-byte characters.

+

Returns:
The strrchr() function returns a pointer to the matched character or NULL if the character is not found.
+ +
+

+ +

+
+ + + + + + + + + +
char * strrev (char *  s  ) 
+
+
+ +

+Reverse a string. +

+The strrev() function reverses the order of the string.

+

Returns:
The strrev() function returns a pointer to the beginning of the reversed string.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strsep (char **  sp,
const char *  delim 
)
+
+
+ +

+Parse a string into tokens. +

+The strsep() function locates, in the string referenced by *sp, the first occurrence of any character in the string delim (or the terminating '\0' character) and replaces it with a '\0'. The location of the next character after the delimiter character (or NULL, if the end of the string was reached) is stored in *sp. An ``empty'' field, i.e. one caused by two adjacent delimiter characters, can be detected by comparing the location referenced by the pointer returned in *sp to '\0'.

+

Returns:
The strsep() function returns a pointer to the original value of *sp. If *sp is initially NULL, strsep() returns NULL.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
size_t strspn (const char *  s,
const char *  accept 
)
+
+
+ +

+The strspn() function calculates the length of the initial segment of s which consists entirely of characters in accept.

+

Returns:
The strspn() function returns the number of characters in the initial segment of s which consist only of characters from accept. The terminating zero is not considered as a part of string.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strstr (const char *  s1,
const char *  s2 
)
+
+
+ +

+Locate a substring. +

+The strstr() function finds the first occurrence of the substring s2 in the string s1. The terminating '\0' characters are not compared.

+

Returns:
The strstr() function returns a pointer to the beginning of the substring, or NULL if the substring is not found. If s2 points to a string of zero length, the function returns s1.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
char * strtok (char *  s,
const char *  delim 
)
+
+
+ +

+Parses the string s into tokens. +

+strtok parses the string s into tokens. The first call to strtok should have s as its first argument. Subsequent calls should have the first argument set to NULL. If a token ends with a delimiter, this delimiting character is overwritten with a '\0' and a pointer to the next character is saved for the next call to strtok. The delimiter string delim may be different for each call.

+

Returns:
The strtok() function returns a pointer to the next token or NULL when no more tokens are found.
+
Note:
strtok() is NOT reentrant. For a reentrant version of this function see strtok_r().
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char * strtok_r (char *  string,
const char *  delim,
char **  last 
)
+
+
+ +

+Parses string into tokens. +

+strtok_r parses string into tokens. The first call to strtok_r should have string as its first argument. Subsequent calls should have the first argument set to NULL. If a token ends with a delimiter, this delimiting character is overwritten with a '\0' and a pointer to the next character is saved for the next call to strtok_r. The delimiter string delim may be different for each call. last is a user allocated char* pointer. It must be the same while parsing the same string. strtok_r is a reentrant version of strtok().

+

Returns:
The strtok_r() function returns a pointer to the next token or NULL when no more tokens are found.
+ +
+

+ +

+
+ + + + + + + + + +
char * strupr (char *  s  ) 
+
+
+ +

+Convert a string to upper case. +

+The strupr() function will convert a string to upper case. Only the lower case alphabetic characters [a .. z] are converted. Non-alphabetic characters will not be changed.

+

Returns:
The strupr() function returns a pointer to the converted string. The pointer is the same as that passed in since the operation is perform in place.
+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__version.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__version.html new file mode 100644 index 0000000..bb59ec5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__version.html @@ -0,0 +1,167 @@ + + + + + avr-libc: <avr/version.h>: avr-libc version macros + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/version.h>: avr-libc version macros


Detailed Description

+
 #include <avr/version.h> 
+

+This header file defines macros that contain version numbers and strings describing the current version of avr-libc.

+The version number itself basically consists of three pieces that are separated by a dot: the major number, the minor number, and the revision number. For development versions (which use an odd minor number), the string representation additionally gets the date code (YYYYMMDD) appended.

+This file will also be included by <avr/io.h>. That way, portable tests can be implemented using <avr/io.h> that can be used in code that wants to remain backwards-compatible to library versions prior to the date when the library version API had been added, as referenced but undefined C preprocessor macros automatically evaluate to 0. +

+ + + + + + + + + + + + + + + + + +

Defines

#define __AVR_LIBC_VERSION_STRING__   "1.6.4"
#define __AVR_LIBC_VERSION__   10604UL
#define __AVR_LIBC_DATE_STRING__   "20081106"
#define __AVR_LIBC_DATE_   20081106UL
#define __AVR_LIBC_MAJOR__   1
#define __AVR_LIBC_MINOR__   6
#define __AVR_LIBC_REVISION__   4
+


Define Documentation

+ +
+
+ + + + +
#define __AVR_LIBC_DATE_   20081106UL
+
+
+ +

+Numerical representation of the release date. +

+

+ +

+
+ + + + +
#define __AVR_LIBC_DATE_STRING__   "20081106"
+
+
+ +

+String literal representation of the release date. +

+

+ +

+
+ + + + +
#define __AVR_LIBC_MAJOR__   1
+
+
+ +

+Library major version number. +

+

+ +

+
+ + + + +
#define __AVR_LIBC_MINOR__   6
+
+
+ +

+Library minor version number. +

+

+ +

+
+ + + + +
#define __AVR_LIBC_REVISION__   4
+
+
+ +

+Library revision number. +

+

+ +

+
+ + + + +
#define __AVR_LIBC_VERSION__   10604UL
+
+
+ +

+Numerical representation of the current library version.

+In the numerical representation, the major number is multiplied by 10000, the minor number by 100, and all three parts are then added. It is intented to provide a monotonically increasing numerical value that can easily be used in numerical checks. +

+

+ +

+
+ + + + +
#define __AVR_LIBC_VERSION_STRING__   "1.6.4"
+
+
+ +

+String literal representation of the current library version. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__watchdog.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__watchdog.html new file mode 100644 index 0000000..bdfd021 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__avr__watchdog.html @@ -0,0 +1,328 @@ + + + + + avr-libc: <avr/wdt.h>: Watchdog timer handling + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<avr/wdt.h>: Watchdog timer handling


Detailed Description

+
 #include <avr/wdt.h> 
+

+This header file declares the interface to some inline macros handling the watchdog timer present in many AVR devices. In order to prevent the watchdog timer configuration from being accidentally altered by a crashing application, a special timed sequence is required in order to change it. The macros within this header file handle the required sequence automatically before changing any value. Interrupts will be disabled during the manipulation.

+

Note:
Depending on the fuse configuration of the particular device, further restrictions might apply, in particular it might be disallowed to turn off the watchdog timer.
+Note that for newer devices (ATmega88 and newer, effectively any AVR that has the option to also generate interrupts), the watchdog timer remains active even after a system reset (except a power-on condition), using the fastest prescaler value (approximately 15 ms). It is therefore required to turn off the watchdog early during program startup, the datasheet recommends a sequence like the following:

+

    #include <stdint.h>
+    #include <avr/wdt.h>
+
+    uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
+
+    void get_mcusr(void) \
+      __attribute__((naked)) \
+      __attribute__((section(".init3")));
+    void get_mcusr(void)
+    {
+      mcusr_mirror = MCUSR;
+      MCUSR = 0;
+      wdt_disable();
+    }
+

+Saving the value of MCUSR in mcusr_mirror is only needed if the application later wants to examine the reset source, but in particular, clearing the watchdog reset flag before disabling the watchdog is required, according to the datasheet. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define wdt_reset()   __asm__ __volatile__ ("wdr")
#define wdt_enable(value)
#define wdt_disable()
#define WDTO_15MS   0
#define WDTO_30MS   1
#define WDTO_60MS   2
#define WDTO_120MS   3
#define WDTO_250MS   4
#define WDTO_500MS   5
#define WDTO_1S   6
#define WDTO_2S   7
#define WDTO_4S   8
#define WDTO_8S   9
+


Define Documentation

+ +
+
+ + + + +  + + + + +
#define wdt_disable (  ) 
+
+
+ +

+Value:

__asm__ __volatile__ (  \
+    "in __tmp_reg__, __SREG__" "\n\t" \
+     "cli" "\n\t" \
+    "out %0, %1" "\n\t" \
+    "out %0, __zero_reg__" "\n\t" \
+    "out __SREG__,__tmp_reg__" "\n\t" \
+    : /* no outputs */ \
+    : "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
+    "r" ((uint8_t)(_BV(_WD_CHANGE_BIT) | _BV(WDE))) \
+    : "r0" \
+)
+
Disable the watchdog timer, if possible. This attempts to turn off the Enable bit in the watchdog control register. See the datasheet for details. +
+

+ +

+
+ + + + + + + + + +
#define wdt_enable (value   ) 
+
+
+ +

+Value:

__asm__ __volatile__ (  \
+        "in __tmp_reg__,__SREG__" "\n\t"    \
+        "cli" "\n\t"    \
+        "wdr" "\n\t"    \
+        "out %0,%1" "\n\t"  \
+        "out __SREG__,__tmp_reg__" "\n\t"   \
+        "out %0,%2" \
+        : /* no outputs */  \
+        : "I" (_SFR_IO_ADDR(_WD_CONTROL_REG)), \
+        "r" (_BV(_WD_CHANGE_BIT) | _BV(WDE)),   \
+        "r" ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \
+            _BV(WDE) | (value & 0x07)) ) \
+        : "r0"  \
+    )
+
Enable the watchdog timer, configuring it for expiry after timeout (which is a combination of the WDP0 through WDP2 bits to write into the WDTCR register; For those devices that have a WDTCSR register, it uses the combination of the WDP0 through WDP3 bits).

+See also the symbolic constants WDTO_15MS et al. +

+

+ +

+
+ + + + +  + + + + +
#define wdt_reset (  )    __asm__ __volatile__ ("wdr")
+
+
+ +

+Reset the watchdog timer. When the watchdog timer is enabled, a call to this instruction is required before the timer expires, otherwise a watchdog-initiated device reset will occur. +

+

+ +

+
+ + + + +
#define WDTO_120MS   3
+
+
+ +

+See WDT0_15MS +

+

+ +

+
+ + + + +
#define WDTO_15MS   0
+
+
+ +

+Symbolic constants for the watchdog timeout. Since the watchdog timer is based on a free-running RC oscillator, the times are approximate only and apply to a supply voltage of 5 V. At lower supply voltages, the times will increase. For older devices, the times will be as large as three times when operating at Vcc = 3 V, while the newer devices (e. g. ATmega128, ATmega8) only experience a negligible change.

+Possible timeout values are: 15 ms, 30 ms, 60 ms, 120 ms, 250 ms, 500 ms, 1 s, 2 s. (Some devices also allow for 4 s and 8 s.) Symbolic constants are formed by the prefix WDTO_, followed by the time.

+Example that would select a watchdog timer expiry of approximately 500 ms:

+
+

+ +

+
+ + + + +
#define WDTO_1S   6
+
+
+ +

+See WDT0_15MS +

+

+ +

+
+ + + + +
#define WDTO_250MS   4
+
+
+ +

+See WDT0_15MS +

+

+ +

+
+ + + + +
#define WDTO_2S   7
+
+
+ +

+See WDT0_15MS +

+

+ +

+
+ + + + +
#define WDTO_30MS   1
+
+
+ +

+See WDT0_15MS +

+

+ +

+
+ + + + +
#define WDTO_4S   8
+
+
+ +

+See WDT0_15MS Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega48P, ATmega88P, ATmega168P, ATmega328P, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega8HVA, ATmega16HVA, ATmega32HVB, ATmega406, ATmega1284P, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316 AT90USB82, AT90USB162, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATtiny48, ATtiny88. +

+

+ +

+
+ + + + +
#define WDTO_500MS   5
+
+
+ +

+See WDT0_15MS +

+

+ +

+
+ + + + +
#define WDTO_60MS   2
+
+
+ +

+WDT0_15MS +

+

+ +

+
+ + + + +
#define WDTO_8S   9
+
+
+ +

+See WDT0_15MS Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega48P, ATmega88P, ATmega168P, ATmega328P, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega8HVA, ATmega16HVA, ATmega32HVB, ATmega406, ATmega1284P, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316 AT90USB82, AT90USB162, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATtiny48, ATtiny88. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__compat__ina90.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__compat__ina90.html new file mode 100644 index 0000000..d02836d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__compat__ina90.html @@ -0,0 +1,44 @@ + + + + + avr-libc: <compat/ina90.h>: Compatibility with IAR EWB 3.x + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<compat/ina90.h>: Compatibility with IAR EWB 3.x

 #include <compat/ina90.h> 
+

+This is an attempt to provide some compatibility with header files that come with IAR C, to make porting applications between different compilers easier. No 100% compatibility though.

+

Note:
For actual documentation, please see the IAR manual.
+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__ctype.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__ctype.html new file mode 100644 index 0000000..a425729 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__ctype.html @@ -0,0 +1,402 @@ + + + + + avr-libc: <ctype.h>: Character Operations + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<ctype.h>: Character Operations


Detailed Description

+These functions perform various operations on characters.

+

 #include <ctype.h>
+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Character classification routines

These functions perform character classification. They return true or false status depending whether the character passed to the function falls into the function's classification (i.e. isdigit() returns true if its argument is any value '0' though '9', inclusive). If the input is not an unsigned char value, all of this function return false.

int isalnum (int __c)
int isalpha (int __c)
int isascii (int __c)
int isblank (int __c)
int iscntrl (int __c)
int isdigit (int __c)
int isgraph (int __c)
int islower (int __c)
int isprint (int __c)
int ispunct (int __c)
int isspace (int __c)
int isupper (int __c)
int isxdigit (int __c)

Character convertion routines

This realization permits all possible values of integer argument. The toascii() function clears all highest bits. The tolower() and toupper() functions return an input argument as is, if it is not an unsigned char value.

int toascii (int __c)
int tolower (int __c)
int toupper (int __c)
+


Function Documentation

+ +
+
+ + + + + + + + + +
int isalnum (int  __c  ) 
+
+
+ +

+Checks for an alphanumeric character. It is equivalent to (isalpha(c) || isdigit(c)). +

+

+ +

+
+ + + + + + + + + +
int isalpha (int  __c  ) 
+
+
+ +

+Checks for an alphabetic character. It is equivalent to (isupper(c) || islower(c)). +

+

+ +

+
+ + + + + + + + + +
int isascii (int  __c  ) 
+
+
+ +

+Checks whether c is a 7-bit unsigned char value that fits into the ASCII character set. +

+

+ +

+
+ + + + + + + + + +
int isblank (int  __c  ) 
+
+
+ +

+Checks for a blank character, that is, a space or a tab. +

+

+ +

+
+ + + + + + + + + +
int iscntrl (int  __c  ) 
+
+
+ +

+Checks for a control character. +

+

+ +

+
+ + + + + + + + + +
int isdigit (int  __c  ) 
+
+
+ +

+Checks for a digit (0 through 9). +

+

+ +

+
+ + + + + + + + + +
int isgraph (int  __c  ) 
+
+
+ +

+Checks for any printable character except space. +

+

+ +

+
+ + + + + + + + + +
int islower (int  __c  ) 
+
+
+ +

+Checks for a lower-case character. +

+

+ +

+
+ + + + + + + + + +
int isprint (int  __c  ) 
+
+
+ +

+Checks for any printable character including space. +

+

+ +

+
+ + + + + + + + + +
int ispunct (int  __c  ) 
+
+
+ +

+Checks for any printable character which is not a space or an alphanumeric character. +

+

+ +

+
+ + + + + + + + + +
int isspace (int  __c  ) 
+
+
+ +

+Checks for white-space characters. For the avr-libc library, these are: space, form-feed ('\f'), newline ('\n'), carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +

+

+ +

+
+ + + + + + + + + +
int isupper (int  __c  ) 
+
+
+ +

+Checks for an uppercase letter. +

+

+ +

+
+ + + + + + + + + +
int isxdigit (int  __c  ) 
+
+
+ +

+Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F. +

+

+ +

+
+ + + + + + + + + +
int toascii (int  __c  ) 
+
+
+ +

+Converts c to a 7-bit unsigned char value that fits into the ASCII character set, by clearing the high-order bits.

+

Warning:
Many people will be unhappy if you use this function. This function will convert accented letters into random characters.
+ +
+

+ +

+
+ + + + + + + + + +
int tolower (int  __c  ) 
+
+
+ +

+Converts the letter c to lower case, if possible. +

+

+ +

+
+ + + + + + + + + +
int toupper (int  __c  ) 
+
+
+ +

+Converts the letter c to upper case, if possible. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__demo__project.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__demo__project.html new file mode 100644 index 0000000..f36e564 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__demo__project.html @@ -0,0 +1,741 @@ + + + + + avr-libc: A simple project + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

A simple project
+ +[Demo projects] +

At this point, you should have the GNU tools configured, built, and installed on your system. In this chapter, we present a simple example of using the GNU tools in an AVR project. After reading this chapter, you should have a better feel as to how the tools are used and how a Makefile can be configured.

+The Project

+This project will use the pulse-width modulator (PWM) to ramp an LED on and off every two seconds. An AT90S2313 processor will be used as the controller. The circuit for this demonstration is shown in the schematic diagram. If you have a development kit, you should be able to use it, rather than build the circuit, for this project.

+

Note:
Meanwhile, the AT90S2313 became obsolete. Either use its successor, the (pin-compatible) ATtiny2313 for the project, or perhaps the ATmega8 or one of its successors (ATmega48/88/168) which have become quite popular since the original demo project had been established. For all these more modern devices, it is no longer necessary to use an external crystal for clocking as they ship with the internal 1 MHz oscillator enabled, so C1, C2, and Q1 can be omitted. Normally, for this experiment, the external circuitry on /RESET (R1, C3) can be omitted as well, leaving only the AVR, the LED, the bypass capacitor C4, and perhaps R2. For the ATmega8/48/88/168, use PB1 (pin 15 at the DIP-28 package) to connect the LED to. Additionally, this demo has been ported to many different other AVRs. The location of the respective OC pin varies between different AVRs, and it is mandated by the AVR hardware.
+
+demo.png +

Schematic of circuit for demo project

+

+The source code is given in demo.c. For the sake of this example, create a file called demo.c containing this source code. Some of the more important parts of the code are:

+

Note [1]:
As the AVR microcontroller series has been developed during the past years, new features have been added over time. Even though the basic concepts of the timer/counter1 are still the same as they used to be back in early 2001 when this simple demo was written initially, the names of registers and bits have been changed slightly to reflect the new features. Also, the port and pin mapping of the output compare match 1A (or 1 for older devices) pin which is used to control the LED varies between different AVRs. The file iocompat.h tries to abstract between all this differences using some preprocessor #ifdef statements, so the actual program itself can operate on a common set of symbolic names. The macros defined by that file are:
+
    +
  • OCR the name of the OCR register used to control the PWM (usually either OCR1 or OCR1A)
  • DDROC the name of the DDR (data direction register) for the OC output
  • OC1 the pin number of the OC1[A] output within its port
  • TIMER1_TOP the TOP value of the timer used for the PWM (1023 for 10-bit PWMs, 255 for devices that can only handle an 8-bit PWM)
  • TIMER1_PWM_INIT the initialization bits to be set into control register 1A in order to setup 10-bit (or 8-bit) phase and frequency correct PWM mode
  • TIMER1_CLOCKSOURCE the clock bits to set in the respective control register to start the PWM timer; usually the timer runs at full CPU clock for 10-bit PWMs, while it runs on a prescaled clock for 8-bit PWMs
+

+

Note [2]:
ISR() is a macro that marks the function as an interrupt routine. In this case, the function will get called when timer 1 overflows. Setting up interrupts is explained in greater detail in <avr/interrupt.h>: Interrupts.
+
Note [3]:
The PWM is being used in 10-bit mode, so we need a 16-bit variable to remember the current value.
+
Note [4]:
This section determines the new value of the PWM.
+
Note [5]:
Here's where the newly computed value is loaded into the PWM register. Since we are in an interrupt routine, it is safe to use a 16-bit assignment to the register. Outside of an interrupt, the assignment should only be performed with interrupts disabled if there's a chance that an interrupt routine could also access this register (or another register that uses TEMP), see the appropriate FAQ entry.
+
Note [6]:
This routine gets called after a reset. It initializes the PWM and enables interrupts.
+
Note [7]:
The main loop of the program does nothing -- all the work is done by the interrupt routine! The sleep_mode() puts the processor on sleep until the next interrupt, to conserve power. Of course, that probably won't be noticable as we are still driving a LED, it is merely mentioned here to demonstrate the basic principle.
+
Note [8]:
Early AVR devices saturate their outputs at rather low currents when sourcing current, so the LED can be connected directly, the resulting current through the LED will be about 15 mA. For modern parts (at least for the ATmega 128), however Atmel has drastically increased the IO source capability, so when operating at 5 V Vcc, R2 is needed. Its value should be about 150 Ohms. When operating the circuit at 3 V, it can still be omitted though.
+

+The Source Code

+
/*
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * <joerg@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return.        Joerg Wunsch
+ * ----------------------------------------------------------------------------
+ *
+ * Simple AVR demonstration.  Controls a LED that can be directly
+ * connected from OC1/OC1A to GND.  The brightness of the LED is
+ * controlled with the PWM.  After each period of the PWM, the PWM
+ * value is either incremented or decremented, that's all.
+ *
+ * $Id: demo.c,v 1.9 2006/01/05 21:30:10 joerg_wunsch Exp $
+ */
+
+#include <inttypes.h>
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/sleep.h>
+
+#include "iocompat.h"           /* Note [1] */
+
+enum { UP, DOWN };
+
+ISR (TIMER1_OVF_vect)           /* Note [2] */
+{
+    static uint16_t pwm;        /* Note [3] */
+    static uint8_t direction;
+
+    switch (direction)          /* Note [4] */
+    {
+        case UP:
+            if (++pwm == TIMER1_TOP)
+                direction = DOWN;
+            break;
+
+        case DOWN:
+            if (--pwm == 0)
+                direction = UP;
+            break;
+    }
+
+    OCR = pwm;                  /* Note [5] */
+}
+
+void
+ioinit (void)                   /* Note [6] */
+{
+    /* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */
+    TCCR1A = TIMER1_PWM_INIT;
+    /*
+     * Start timer 1.
+     *
+     * NB: TCCR1A and TCCR1B could actually be the same register, so
+     * take care to not clobber it.
+     */
+    TCCR1B |= TIMER1_CLOCKSOURCE;
+    /*
+     * Run any device-dependent timer 1 setup hook if present.
+     */
+#if defined(TIMER1_SETUP_HOOK)
+    TIMER1_SETUP_HOOK();
+#endif
+
+    /* Set PWM value to 0. */
+    OCR = 0;
+
+    /* Enable OC1 as output. */
+    DDROC = _BV (OC1);
+
+    /* Enable timer 1 overflow interrupt. */
+    TIMSK = _BV (TOIE1);
+    sei ();
+}
+
+int
+main (void)
+{
+
+    ioinit ();
+
+    /* loop forever, the interrupts are doing the rest */
+
+    for (;;)                    /* Note [7] */
+        sleep_mode();
+
+    return (0);
+}
+

+Compiling and Linking

+This first thing that needs to be done is compile the source. When compiling, the compiler needs to know the processor type so the -mmcu option is specified. The -Os option will tell the compiler to optimize the code for efficient space usage (at the possible expense of code execution speed). The -g is used to embed debug info. The debug info is useful for disassemblies and doesn't end up in the .hex files, so I usually specify it. Finally, the -c tells the compiler to compile and stop -- don't link. This demo is small enough that we could compile and link in one step. However, real-world projects will have several modules and will typically need to break up the building of the project into several compiles and one link.

+

+    $ avr-gcc -g -Os -mmcu=atmega8 -c demo.c
+

+The compilation will create a demo.o file. Next we link it into a binary called demo.elf.

+

+    $ avr-gcc -g -mmcu=atmega8 -o demo.elf demo.o
+

+It is important to specify the MCU type when linking. The compiler uses the -mmcu option to choose start-up files and run-time libraries that get linked together. If this option isn't specified, the compiler defaults to the 8515 processor environment, which is most certainly what you didn't want.

+Examining the Object File

+

+Now we have a binary file. Can we do anything useful with it (besides put it into the processor?) The GNU Binutils suite is made up of many useful tools for manipulating object files that get generated. One tool is avr-objdump, which takes information from the object file and displays it in many useful ways. Typing the command by itself will cause it to list out its options.

+For instance, to get a feel of the application's size, the -h option can be used. The output of this option shows how much space is used in each of the sections (the .stab and .stabstr sections hold the debugging information and won't make it into the ROM file).

+An even more useful option is -S. This option disassembles the binary file and intersperses the source code in the output! This method is much better, in my opinion, than using the -S with the compiler because this listing includes routines from the libraries and the vector table contents. Also, all the "fix-ups" have been satisfied. In other words, the listing generated by this option reflects the actual code that the processor will run.

+

+    $ avr-objdump -h -S demo.elf > demo.lst
+

+Here's the output as saved in the demo.lst file:

+

+demo.elf:     file format elf32-avr
+
+Sections:
+Idx Name          Size      VMA       LMA       File off  Algn
+  0 .text         00000126  00000000  00000000  00000074  2**1
+                  CONTENTS, ALLOC, LOAD, READONLY, CODE
+  1 .bss          00000003  00800060  00800060  0000019a  2**0
+                  ALLOC
+  2 .debug_aranges 00000020  00000000  00000000  0000019a  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  3 .debug_pubnames 00000035  00000000  00000000  000001ba  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  4 .debug_info   00000105  00000000  00000000  000001ef  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  5 .debug_abbrev 000000cf  00000000  00000000  000002f4  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  6 .debug_line   0000014d  00000000  00000000  000003c3  2**0
+                  CONTENTS, READONLY, DEBUGGING
+  7 .debug_frame  00000040  00000000  00000000  00000510  2**2
+                  CONTENTS, READONLY, DEBUGGING
+  8 .debug_str    000000b1  00000000  00000000  00000550  2**0
+                  CONTENTS, READONLY, DEBUGGING
+
+Disassembly of section .text:
+
+00000000 <__vectors>:
+   0:	12 c0       	rjmp	.+36     	; 0x26 <__ctors_end>
+   2:	8c c0       	rjmp	.+280    	; 0x11c <__bad_interrupt>
+   4:	8b c0       	rjmp	.+278    	; 0x11c <__bad_interrupt>
+   6:	8a c0       	rjmp	.+276    	; 0x11c <__bad_interrupt>
+   8:	89 c0       	rjmp	.+274    	; 0x11c <__bad_interrupt>
+   a:	88 c0       	rjmp	.+272    	; 0x11c <__bad_interrupt>
+   c:	87 c0       	rjmp	.+270    	; 0x11c <__bad_interrupt>
+   e:	86 c0       	rjmp	.+268    	; 0x11c <__bad_interrupt>
+  10:	25 c0       	rjmp	.+74     	; 0x5c <__vector_8>
+  12:	84 c0       	rjmp	.+264    	; 0x11c <__bad_interrupt>
+  14:	83 c0       	rjmp	.+262    	; 0x11c <__bad_interrupt>
+  16:	82 c0       	rjmp	.+260    	; 0x11c <__bad_interrupt>
+  18:	81 c0       	rjmp	.+258    	; 0x11c <__bad_interrupt>
+  1a:	80 c0       	rjmp	.+256    	; 0x11c <__bad_interrupt>
+  1c:	7f c0       	rjmp	.+254    	; 0x11c <__bad_interrupt>
+  1e:	7e c0       	rjmp	.+252    	; 0x11c <__bad_interrupt>
+  20:	7d c0       	rjmp	.+250    	; 0x11c <__bad_interrupt>
+  22:	7c c0       	rjmp	.+248    	; 0x11c <__bad_interrupt>
+  24:	7b c0       	rjmp	.+246    	; 0x11c <__bad_interrupt>
+
+00000026 <__ctors_end>:
+  26:	11 24       	eor	r1, r1
+  28:	1f be       	out	0x3f, r1	; 63
+  2a:	cf e5       	ldi	r28, 0x5F	; 95
+  2c:	d4 e0       	ldi	r29, 0x04	; 4
+  2e:	de bf       	out	0x3e, r29	; 62
+  30:	cd bf       	out	0x3d, r28	; 61
+
+00000032 <__do_copy_data>:
+  32:	10 e0       	ldi	r17, 0x00	; 0
+  34:	a0 e6       	ldi	r26, 0x60	; 96
+  36:	b0 e0       	ldi	r27, 0x00	; 0
+  38:	e6 e2       	ldi	r30, 0x26	; 38
+  3a:	f1 e0       	ldi	r31, 0x01	; 1
+  3c:	02 c0       	rjmp	.+4      	; 0x42 <.do_copy_data_start>
+
+0000003e <.do_copy_data_loop>:
+  3e:	05 90       	lpm	r0, Z+
+  40:	0d 92       	st	X+, r0
+
+00000042 <.do_copy_data_start>:
+  42:	a0 36       	cpi	r26, 0x60	; 96
+  44:	b1 07       	cpc	r27, r17
+  46:	d9 f7       	brne	.-10     	; 0x3e <.do_copy_data_loop>
+
+00000048 <__do_clear_bss>:
+  48:	10 e0       	ldi	r17, 0x00	; 0
+  4a:	a0 e6       	ldi	r26, 0x60	; 96
+  4c:	b0 e0       	ldi	r27, 0x00	; 0
+  4e:	01 c0       	rjmp	.+2      	; 0x52 <.do_clear_bss_start>
+
+00000050 <.do_clear_bss_loop>:
+  50:	1d 92       	st	X+, r1
+
+00000052 <.do_clear_bss_start>:
+  52:	a3 36       	cpi	r26, 0x63	; 99
+  54:	b1 07       	cpc	r27, r17
+  56:	e1 f7       	brne	.-8      	; 0x50 <.do_clear_bss_loop>
+  58:	4d d0       	rcall	.+154    	; 0xf4 <main>
+  5a:	61 c0       	rjmp	.+194    	; 0x11e <exit>
+
+0000005c <__vector_8>:
+#include "iocompat.h"		/* Note [1] */
+
+enum { UP, DOWN };
+
+ISR (TIMER1_OVF_vect)		/* Note [2] */
+{
+  5c:	1f 92       	push	r1
+  5e:	0f 92       	push	r0
+  60:	0f b6       	in	r0, 0x3f	; 63
+  62:	0f 92       	push	r0
+  64:	11 24       	eor	r1, r1
+  66:	2f 93       	push	r18
+  68:	3f 93       	push	r19
+  6a:	8f 93       	push	r24
+    static uint16_t pwm;	/* Note [3] */
+    static uint8_t direction;
+
+    switch (direction)		/* Note [4] */
+  6c:	80 91 60 00 	lds	r24, 0x0060
+  70:	88 23       	and	r24, r24
+  72:	c1 f4       	brne	.+48     	; 0xa4 <__vector_8+0x48>
+    {
+        case UP:
+            if (++pwm == TIMER1_TOP)
+  74:	20 91 61 00 	lds	r18, 0x0061
+  78:	30 91 62 00 	lds	r19, 0x0062
+  7c:	2f 5f       	subi	r18, 0xFF	; 255
+  7e:	3f 4f       	sbci	r19, 0xFF	; 255
+  80:	30 93 62 00 	sts	0x0062, r19
+  84:	20 93 61 00 	sts	0x0061, r18
+  88:	83 e0       	ldi	r24, 0x03	; 3
+  8a:	2f 3f       	cpi	r18, 0xFF	; 255
+  8c:	38 07       	cpc	r19, r24
+  8e:	09 f1       	breq	.+66     	; 0xd2 <__vector_8+0x76>
+            if (--pwm == 0)
+                direction = UP;
+            break;
+    }
+
+    OCR = pwm;			/* Note [5] */
+  90:	3b bd       	out	0x2b, r19	; 43
+  92:	2a bd       	out	0x2a, r18	; 42
+}
+  94:	8f 91       	pop	r24
+  96:	3f 91       	pop	r19
+  98:	2f 91       	pop	r18
+  9a:	0f 90       	pop	r0
+  9c:	0f be       	out	0x3f, r0	; 63
+  9e:	0f 90       	pop	r0
+  a0:	1f 90       	pop	r1
+  a2:	18 95       	reti
+ISR (TIMER1_OVF_vect)		/* Note [2] */
+{
+    static uint16_t pwm;	/* Note [3] */
+    static uint8_t direction;
+
+    switch (direction)		/* Note [4] */
+  a4:	81 30       	cpi	r24, 0x01	; 1
+  a6:	29 f0       	breq	.+10     	; 0xb2 <__vector_8+0x56>
+  a8:	20 91 61 00 	lds	r18, 0x0061
+  ac:	30 91 62 00 	lds	r19, 0x0062
+  b0:	ef cf       	rjmp	.-34     	; 0x90 <__vector_8+0x34>
+            if (++pwm == TIMER1_TOP)
+                direction = DOWN;
+            break;
+
+        case DOWN:
+            if (--pwm == 0)
+  b2:	20 91 61 00 	lds	r18, 0x0061
+  b6:	30 91 62 00 	lds	r19, 0x0062
+  ba:	21 50       	subi	r18, 0x01	; 1
+  bc:	30 40       	sbci	r19, 0x00	; 0
+  be:	30 93 62 00 	sts	0x0062, r19
+  c2:	20 93 61 00 	sts	0x0061, r18
+  c6:	21 15       	cp	r18, r1
+  c8:	31 05       	cpc	r19, r1
+  ca:	11 f7       	brne	.-60     	; 0x90 <__vector_8+0x34>
+                direction = UP;
+  cc:	10 92 60 00 	sts	0x0060, r1
+  d0:	df cf       	rjmp	.-66     	; 0x90 <__vector_8+0x34>
+
+    switch (direction)		/* Note [4] */
+    {
+        case UP:
+            if (++pwm == TIMER1_TOP)
+                direction = DOWN;
+  d2:	81 e0       	ldi	r24, 0x01	; 1
+  d4:	80 93 60 00 	sts	0x0060, r24
+  d8:	db cf       	rjmp	.-74     	; 0x90 <__vector_8+0x34>
+
+000000da <ioinit>:
+
+void
+ioinit (void)			/* Note [6] */
+{
+    /* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */
+    TCCR1A = TIMER1_PWM_INIT;
+  da:	83 e8       	ldi	r24, 0x83	; 131
+  dc:	8f bd       	out	0x2f, r24	; 47
+     * Start timer 1.
+     *
+     * NB: TCCR1A and TCCR1B could actually be the same register, so
+     * take care to not clobber it.
+     */
+    TCCR1B |= TIMER1_CLOCKSOURCE;
+  de:	8e b5       	in	r24, 0x2e	; 46
+  e0:	81 60       	ori	r24, 0x01	; 1
+  e2:	8e bd       	out	0x2e, r24	; 46
+#if defined(TIMER1_SETUP_HOOK)
+    TIMER1_SETUP_HOOK();
+#endif
+
+    /* Set PWM value to 0. */
+    OCR = 0;
+  e4:	1b bc       	out	0x2b, r1	; 43
+  e6:	1a bc       	out	0x2a, r1	; 42
+
+    /* Enable OC1 as output. */
+    DDROC = _BV (OC1);
+  e8:	82 e0       	ldi	r24, 0x02	; 2
+  ea:	87 bb       	out	0x17, r24	; 23
+
+    /* Enable timer 1 overflow interrupt. */
+    TIMSK = _BV (TOIE1);
+  ec:	84 e0       	ldi	r24, 0x04	; 4
+  ee:	89 bf       	out	0x39, r24	; 57
+    sei ();
+  f0:	78 94       	sei
+}
+  f2:	08 95       	ret
+
+000000f4 <main>:
+
+void
+ioinit (void)			/* Note [6] */
+{
+    /* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */
+    TCCR1A = TIMER1_PWM_INIT;
+  f4:	83 e8       	ldi	r24, 0x83	; 131
+  f6:	8f bd       	out	0x2f, r24	; 47
+     * Start timer 1.
+     *
+     * NB: TCCR1A and TCCR1B could actually be the same register, so
+     * take care to not clobber it.
+     */
+    TCCR1B |= TIMER1_CLOCKSOURCE;
+  f8:	8e b5       	in	r24, 0x2e	; 46
+  fa:	81 60       	ori	r24, 0x01	; 1
+  fc:	8e bd       	out	0x2e, r24	; 46
+#if defined(TIMER1_SETUP_HOOK)
+    TIMER1_SETUP_HOOK();
+#endif
+
+    /* Set PWM value to 0. */
+    OCR = 0;
+  fe:	1b bc       	out	0x2b, r1	; 43
+ 100:	1a bc       	out	0x2a, r1	; 42
+
+    /* Enable OC1 as output. */
+    DDROC = _BV (OC1);
+ 102:	82 e0       	ldi	r24, 0x02	; 2
+ 104:	87 bb       	out	0x17, r24	; 23
+
+    /* Enable timer 1 overflow interrupt. */
+    TIMSK = _BV (TOIE1);
+ 106:	84 e0       	ldi	r24, 0x04	; 4
+ 108:	89 bf       	out	0x39, r24	; 57
+    sei ();
+ 10a:	78 94       	sei
+    ioinit ();
+
+    /* loop forever, the interrupts are doing the rest */
+
+    for (;;)			/* Note [7] */
+        sleep_mode();
+ 10c:	85 b7       	in	r24, 0x35	; 53
+ 10e:	80 68       	ori	r24, 0x80	; 128
+ 110:	85 bf       	out	0x35, r24	; 53
+ 112:	88 95       	sleep
+ 114:	85 b7       	in	r24, 0x35	; 53
+ 116:	8f 77       	andi	r24, 0x7F	; 127
+ 118:	85 bf       	out	0x35, r24	; 53
+ 11a:	f8 cf       	rjmp	.-16     	; 0x10c <main+0x18>
+
+0000011c <__bad_interrupt>:
+ 11c:	71 cf       	rjmp	.-286    	; 0x0 <__vectors>
+
+0000011e <exit>:
+ 11e:	f8 94       	cli
+ 120:	00 c0       	rjmp	.+0      	; 0x122 <_exit>
+
+00000122 <_exit>:
+ 122:	f8 94       	cli
+
+00000124 <__stop_program>:
+ 124:	ff cf       	rjmp	.-2      	; 0x124 <__stop_program>
+

+Linker Map Files

+avr-objdump is very useful, but sometimes it's necessary to see information about the link that can only be generated by the linker. A map file contains this information. A map file is useful for monitoring the sizes of your code and data. It also shows where modules are loaded and which modules were loaded from libraries. It is yet another view of your application. To get a map file, I usually add -Wl,-Map,demo.map to my link command. Relink the application using the following command to generate demo.map (a portion of which is shown below).

+

+    $ avr-gcc -g -mmcu=atmega8 -Wl,-Map,demo.map -o demo.elf demo.o
+

+

+Some points of interest in the demo.map file are:

+

.rela.plt
+ *(.rela.plt)
+
+.text           0x00000000      0x126
+ *(.vectors)
+ .vectors       0x00000000       0x26 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/atmega8/crtm8.o
+                0x00000000                __vectors
+                0x00000000                __vector_default
+ *(.vectors)
+ *(.progmem.gcc*)
+ *(.progmem*)
+                0x00000026                . = ALIGN (0x2)
+                0x00000026                __trampolines_start = .
+ *(.trampolines)
+ .trampolines   0x00000026        0x0 linker stubs
+ *(.trampolines*)
+                0x00000026                __trampolines_end = .
+ *(.jumptables)
+ *(.jumptables*)
+ *(.lowtext)
+ *(.lowtext*)
+                0x00000026                __ctors_start = .
+

+The .text segment (where program instructions are stored) starts at location 0x0.

+

 *(.fini2)
+ *(.fini2)
+ *(.fini1)
+ *(.fini1)
+ *(.fini0)
+ .fini0         0x00000122        0x4 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_exit.o)
+ *(.fini0)
+                0x00000126                _etext = .
+
+.data           0x00800060        0x0 load address 0x00000126
+                0x00800060                PROVIDE (__data_start, .)
+ *(.data)
+ .data          0x00800060        0x0 demo.o
+ .data          0x00800060        0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/atmega8/crtm8.o
+ .data          0x00800060        0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/exit.o
+ .data          0x00800060        0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_exit.o)
+ .data          0x00800060        0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_copy_data.o)
+ .data          0x00800060        0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_clear_bss.o)
+ *(.data*)
+ *(.rodata)
+ *(.rodata*)
+ *(.gnu.linkonce.d*)
+                0x00800060                . = ALIGN (0x2)
+                0x00800060                _edata = .
+                0x00800060                PROVIDE (__data_end, .)
+
+.bss            0x00800060        0x3
+                0x00800060                PROVIDE (__bss_start, .)
+ *(.bss)
+ .bss           0x00800060        0x3 demo.o
+ .bss           0x00800063        0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/atmega8/crtm8.o
+ .bss           0x00800063        0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/exit.o
+ .bss           0x00800063        0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_exit.o)
+ .bss           0x00800063        0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_copy_data.o)
+ .bss           0x00800063        0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_clear_bss.o)
+ *(.bss*)
+ *(COMMON)
+                0x00800063                PROVIDE (__bss_end, .)
+                0x00000126                __data_load_start = LOADADDR (.data)
+                0x00000126                __data_load_end = (__data_load_start + SIZEOF (.data))
+
+.noinit         0x00800063        0x0
+                0x00800063                PROVIDE (__noinit_start, .)
+ *(.noinit*)
+                0x00800063                PROVIDE (__noinit_end, .)
+                0x00800063                _end = .
+                0x00800063                PROVIDE (__heap_start, .)
+
+.eeprom         0x00810000        0x0
+ *(.eeprom*)
+                0x00810000                __eeprom_end = .
+

+The last address in the .text segment is location 0x114 ( denoted by _etext ), so the instructions use up 276 bytes of FLASH.

+The .data segment (where initialized static variables are stored) starts at location 0x60, which is the first address after the register bank on an ATmega8 processor.

+The next available address in the .data segment is also location 0x60, so the application has no initialized data.

+The .bss segment (where uninitialized data is stored) starts at location 0x60.

+The next available address in the .bss segment is location 0x63, so the application uses 3 bytes of uninitialized data.

+The .eeprom segment (where EEPROM variables are stored) starts at location 0x0.

+The next available address in the .eeprom segment is also location 0x0, so there aren't any EEPROM variables.

+Generating Intel Hex Files

+We have a binary of the application, but how do we get it into the processor? Most (if not all) programmers will not accept a GNU executable as an input file, so we need to do a little more processing. The next step is to extract portions of the binary and save the information into .hex files. The GNU utility that does this is called avr-objcopy.

+The ROM contents can be pulled from our project's binary and put into the file demo.hex using the following command:

+

+    $ avr-objcopy -j .text -j .data -O ihex demo.elf demo.hex
+

+The resulting demo.hex file contains:

+

:1000000012C08CC08BC08AC089C088C087C086C01F
+:1000100025C084C083C082C081C080C07FC07EC034
+:100020007DC07CC07BC011241FBECFE5D4E0DEBF05
+:10003000CDBF10E0A0E6B0E0E6E2F1E002C005903E
+:100040000D92A036B107D9F710E0A0E6B0E001C0EC
+:100050001D92A336B107E1F74DD061C01F920F92F8
+:100060000FB60F9211242F933F938F9380916000CE
+:100070008823C1F420916100309162002F5F3F4FCF
+:10008000309362002093610083E02F3F380709F12D
+:100090003BBD2ABD8F913F912F910F900FBE0F90C6
+:1000A0001F901895813029F02091610030916200F5
+:1000B000EFCF2091610030916200215030403093A9
+:1000C0006200209361002115310511F71092600044
+:1000D000DFCF81E080936000DBCF83E88FBD8EB5FA
+:1000E00081608EBD1BBC1ABC82E087BB84E089BFE7
+:1000F0007894089583E88FBD8EB581608EBD1BBC5A
+:100100001ABC82E087BB84E089BF789485B7806899
+:1001100085BF889585B78F7785BFF8CF71CFF89465
+:0601200000C0F894FFCFBF
+:00000001FF
+

+The -j option indicates that we want the information from the .text and .data segment extracted. If we specify the EEPROM segment, we can generate a .hex file that can be used to program the EEPROM:

+

+    $ avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex demo.elf demo_eeprom.hex
+

+There is no demo_eeprom.hex file written, as that file would be empty.

+Starting with version 2.17 of the GNU binutils, the avr-objcopy command that used to generate the empty EEPROM files now aborts because of the empty input section .eeprom, so these empty files are not generated. It also signals an error to the Makefile which will be caught there, and makes it print a message about the empty file not being generated.

+Letting Make Build the Project

+Rather than type these commands over and over, they can all be placed in a make file. To build the demo project using make, save the following in a file called Makefile.

+

Note:
This Makefile can only be used as input for the GNU version of make.
+
PRG            = demo
+OBJ            = demo.o
+#MCU_TARGET     = at90s2313
+#MCU_TARGET     = at90s2333
+#MCU_TARGET     = at90s4414
+#MCU_TARGET     = at90s4433
+#MCU_TARGET     = at90s4434
+#MCU_TARGET     = at90s8515
+#MCU_TARGET     = at90s8535
+#MCU_TARGET     = atmega128
+#MCU_TARGET     = atmega1280
+#MCU_TARGET     = atmega1281
+#MCU_TARGET     = atmega1284p
+#MCU_TARGET     = atmega16
+#MCU_TARGET     = atmega163
+#MCU_TARGET     = atmega164p
+#MCU_TARGET     = atmega165
+#MCU_TARGET     = atmega165p
+#MCU_TARGET     = atmega168
+#MCU_TARGET     = atmega169
+#MCU_TARGET     = atmega169p
+#MCU_TARGET     = atmega2560
+#MCU_TARGET     = atmega2561
+#MCU_TARGET     = atmega32
+#MCU_TARGET     = atmega324p
+#MCU_TARGET     = atmega325
+#MCU_TARGET     = atmega3250
+#MCU_TARGET     = atmega329
+#MCU_TARGET     = atmega3290
+#MCU_TARGET     = atmega48
+#MCU_TARGET     = atmega64
+#MCU_TARGET     = atmega640
+#MCU_TARGET     = atmega644
+#MCU_TARGET     = atmega644p
+#MCU_TARGET     = atmega645
+#MCU_TARGET     = atmega6450
+#MCU_TARGET     = atmega649
+#MCU_TARGET     = atmega6490
+MCU_TARGET     = atmega8
+#MCU_TARGET     = atmega8515
+#MCU_TARGET     = atmega8535
+#MCU_TARGET     = atmega88
+#MCU_TARGET     = attiny2313
+#MCU_TARGET     = attiny24
+#MCU_TARGET     = attiny25
+#MCU_TARGET     = attiny26
+#MCU_TARGET     = attiny261
+#MCU_TARGET     = attiny44
+#MCU_TARGET     = attiny45
+#MCU_TARGET     = attiny461
+#MCU_TARGET     = attiny84
+#MCU_TARGET     = attiny85
+#MCU_TARGET     = attiny861
+OPTIMIZE       = -O2
+
+DEFS           =
+LIBS           =
+
+# You should not have to change anything below here.
+
+CC             = avr-gcc
+
+# Override is only needed by avr-lib build system.
+
+override CFLAGS        = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS)
+override LDFLAGS       = -Wl,-Map,$(PRG).map
+
+OBJCOPY        = avr-objcopy
+OBJDUMP        = avr-objdump
+
+all: $(PRG).elf lst text eeprom
+
+$(PRG).elf: $(OBJ)
+        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+# dependency:
+demo.o: demo.c iocompat.h
+
+clean:
+        rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak 
+        rm -rf *.lst *.map $(EXTRA_CLEAN_FILES)
+
+lst:  $(PRG).lst
+
+%.lst: %.elf
+        $(OBJDUMP) -h -S $< > $@
+
+# Rules for building the .text rom images
+
+text: hex bin srec
+
+hex:  $(PRG).hex
+bin:  $(PRG).bin
+srec: $(PRG).srec
+
+%.hex: %.elf
+        $(OBJCOPY) -j .text -j .data -O ihex $< $@
+
+%.srec: %.elf
+        $(OBJCOPY) -j .text -j .data -O srec $< $@
+
+%.bin: %.elf
+        $(OBJCOPY) -j .text -j .data -O binary $< $@
+
+# Rules for building the .eeprom rom images
+
+eeprom: ehex ebin esrec
+
+ehex:  $(PRG)_eeprom.hex
+ebin:  $(PRG)_eeprom.bin
+esrec: $(PRG)_eeprom.srec
+
+%_eeprom.hex: %.elf
+        $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ \
+        || { echo empty $@ not generated; exit 0; }
+
+%_eeprom.srec: %.elf
+        $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ \
+        || { echo empty $@ not generated; exit 0; }
+
+%_eeprom.bin: %.elf
+        $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ \
+        || { echo empty $@ not generated; exit 0; }
+
+# Every thing below here is used by avr-libc's build system and can be ignored
+# by the casual user.
+
+FIG2DEV                 = fig2dev
+EXTRA_CLEAN_FILES       = *.hex *.bin *.srec
+
+dox: eps png pdf
+
+eps: $(PRG).eps
+png: $(PRG).png
+pdf: $(PRG).pdf
+
+%.eps: %.fig
+        $(FIG2DEV) -L eps $< $@
+
+%.pdf: %.fig
+        $(FIG2DEV) -L pdf $< $@
+
+%.png: %.fig
+        $(FIG2DEV) -L png $< $@
+
+

+Reference to the source code

+ + +

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__demos.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__demos.html new file mode 100644 index 0000000..b627300 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__demos.html @@ -0,0 +1,60 @@ + + + + + avr-libc: Demo projects + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Demo projects


Detailed Description

+Various small demo projects are provided to illustrate several aspects of using the opensource utilities for the AVR controller series. It should be kept in mind that these demos serve mainly educational purposes, and are normally not directly suitable for use in any production environment. Usually, they have been kept as simple as sufficient to demonstrate one particular feature.

+The simple project is somewhat like the "Hello world!" application for a microcontroller, about the most simple project that can be done. It is explained in good detail, to allow the reader to understand the basic concepts behind using the tools on an AVR microcontroller.

+The more sophisticated demo project builds on top of that simple project, and adds some controls to it. It touches a number of avr-libc's basic concepts on its way.

+A comprehensive example on using the standard IO facilities intends to explain that complex topic, using a practical microcontroller peripheral setup with one RS-232 connection, and an HD44780-compatible industry-standard LCD display.

+The Example using the two-wire interface (TWI) project explains the use of the two-wire hardware interface (also known as "I2C") that is present on many AVR controllers.

+Finally, the Combining C and assembly source files demo shows how C and assembly language source files can collaborate within one project. While the overall project is managed by a C program part for easy maintenance, time-critical parts are written directly in manually optimized assembly language for shortest execution times possible. Naturally, this kind of project is very closely tied to the hardware design, thus it is custom-tailored to a particular controller type and peripheral setup. As an alternative to the assembly-language solution, this project also offers a C-only implementation (deploying the exact same peripheral setup) based on a more sophisticated (and thus more expensive) but pin-compatible controller.

+While the simple demo is meant to run on about any AVR setup possible where a LED could be connected to the OCR1[A] output, the large and stdio demos are mainly targeted to the Atmel STK500 starter kit, and the TWI example requires a controller where some 24Cxx two-wire EEPPROM can be connected to. For the STK500 demos, the default CPU (either an AT90S8515 or an ATmega8515) should be removed from its socket, and the ATmega16 that ships with the kit should be inserted into socket SCKT3100A3. The ATmega16 offers an on-board ADC that is used in the large demo, and all AVRs with an ADC feature a different pinout than the industry-standard compatible devices.

+In order to fully utilize the large demo, a female 10-pin header with cable, connecting to a 10 kOhm potentiometer will be useful.

+For the stdio demo, an industry-standard HD44780-compatible LCD display of at least 16x1 characters will be needed. Among other things, the LCD4Linux project page describes many things around these displays, including common pinouts. +

+ + + + + + + + + + + + + +

Modules

 Combining C and assembly source files
 A simple project
 A more sophisticated project
 Using the standard IO facilities
 Example using the two-wire interface (TWI)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__deprecated__items.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__deprecated__items.html new file mode 100644 index 0000000..519012b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__deprecated__items.html @@ -0,0 +1,288 @@ + + + + + avr-libc: <compat/deprecated.h>: Deprecated items + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<compat/deprecated.h>: Deprecated items


Detailed Description

+This header file contains several items that used to be available in previous versions of this library, but have eventually been deprecated over time.

+

 #include <compat/deprecated.h> 
+

+These items are supplied within that header file for backward compatibility reasons only, so old source code that has been written for previous library versions could easily be maintained until its end-of-life. Use of any of these items in new code is strongly discouraged. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Allowing specific system-wide interrupts

In addition to globally enabling interrupts, each device's particular interrupt needs to be enabled separately if interrupts for this device are desired. While some devices maintain their interrupt enable bit inside the device's register set, external and timer interrupts have system-wide configuration registers.

+Example:

+

    // Enable timer 1 overflow interrupts.
+    timer_enable_int(_BV(TOIE1));
+
+    // Do some work...
+
+    // Disable all timer interrupts.
+    timer_enable_int(0);
+

+

Note:
Be careful when you use these functions. If you already have a different interrupt enabled, you could inadvertantly disable it by enabling another intterupt.
+

static __inline__ void timer_enable_int (unsigned char ints)
#define enable_external_int(mask)   (__EICR = mask)
#define INTERRUPT(signame)
+#define __INTR_ATTRS   used

Obsolete IO macros

Back in a time when AVR-GCC and avr-libc could not handle IO port access in the direct assignment form as they are handled now, all IO port access had to be done through specific macros that eventually resulted in inline assembly instructions performing the desired action.

+These macros became obsolete, as reading and writing IO ports can be done by simply using the IO port name in an expression, and all bit manipulation (including those on IO ports) can be done using generic C bit manipulation operators.

+The macros in this group simulate the historical behaviour. While they are supposed to be applied to IO ports, the emulation actually uses standard C methods, so they could be applied to arbitrary memory locations as well.

#define inp(port)   (port)
#define outp(val, port)   (port) = (val)
#define inb(port)   (port)
#define outb(port, val)   (port) = (val)
#define sbi(port, bit)   (port) |= (1 << (bit))
#define cbi(port, bit)   (port) &= ~(1 << (bit))
+


Define Documentation

+ +
+
+ + + + + + + + + + + + +
#define cbi (port,
bit   )    (port) &= ~(1 << (bit))
+
+
+ +

+

Deprecated:
+Clear bit in IO port port. +
+

+ +

+
+ + + + + + + + + +
#define enable_external_int (mask   )    (__EICR = mask)
+
+
+ +

+

Deprecated:
+This macro gives access to the GIMSK register (or EIMSK register if using an AVR Mega device or GICR register for others). Although this macro is essentially the same as assigning to the register, it does adapt slightly to the type of device being used. This macro is unavailable if none of the registers listed above are defined. +
+

+ +

+
+ + + + + + + + + +
#define inb (port   )    (port)
+
+
+ +

+

Deprecated:
+Read a value from an IO port port. +
+

+ +

+
+ + + + + + + + + +
#define inp (port   )    (port)
+
+
+ +

+

Deprecated:
+Read a value from an IO port port. +
+

+ +

+
+ + + + + + + + + +
#define INTERRUPT (signame   ) 
+
+
+ +

+Value:

void signame (void) __attribute__ ((interrupt,__INTR_ATTRS));   \
+void signame (void)
+
Deprecated:
+Introduces an interrupt handler function that runs with global interrupts initially enabled. This allows interrupt handlers to be interrupted.

+As this macro has been used by too many unsuspecting people in the past, it has been deprecated, and will be removed in a future version of the library. Users who want to legitimately re-enable interrupts in their interrupt handlers as quickly as possible are encouraged to explicitly declare their handlers as described above. +

+

+ +

+
+ + + + + + + + + + + + +
#define outb (port,
val   )    (port) = (val)
+
+
+ +

+

Deprecated:
+Write val to IO port port. +
+

+ +

+
+ + + + + + + + + + + + +
#define outp (val,
port   )    (port) = (val)
+
+
+ +

+

Deprecated:
+Write val to IO port port. +
+

+ +

+
+ + + + + + + + + + + + +
#define sbi (port,
bit   )    (port) |= (1 << (bit))
+
+
+ +

+

Deprecated:
+Set bit in IO port port. +
+

+


Function Documentation

+ +
+
+ + + + + + + + + +
static __inline__ void timer_enable_int (unsigned char  ints  )  [static]
+
+
+ +

+

Deprecated:
+This function modifies the timsk register. The value you pass via ints is device specific. +
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__largedemo.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__largedemo.html new file mode 100644 index 0000000..60808d0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__largedemo.html @@ -0,0 +1,137 @@ + + + + + avr-libc: A more sophisticated project + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

A more sophisticated project
+ +[Demo projects] +

This project extends the basic idea of the simple project to control a LED with a PWM output, but adds methods to adjust the LED brightness. It employs a lot of the basic concepts of avr-libc to achieve that goal.

+Understanding this project assumes the simple project has been understood in full, as well as being acquainted with the basic hardware concepts of an AVR microcontroller.

+Hardware setup

+The demo is set up in a way so it can be run on the ATmega16 that ships with the STK500 development kit. The only external part needed is a potentiometer attached to the ADC. It is connected to a 10-pin ribbon cable for port A, both ends of the potentiometer to pins 9 (GND) and 10 (VCC), and the wiper to pin 1 (port A0). A bypass capacitor from pin 1 to pin 9 (like 47 nF) is recommendable.

+

+largedemo-setup.jpg +

Setup of the STK500

+

+The coloured patch cables are used to provide various interconnections. As there are only four of them in the STK500, there are two options to connect them for this demo. The second option for the yellow-green cable is shown in parenthesis in the table. Alternatively, the "squid" cable from the JTAG ICE kit can be used if available.

+ + + + + + + + + + + + + + + + + + + + + + + +
PortHeaderColorFunctionConnect to
D0 1 brown RxD RXD of the RS-232 header
D1 2 grey TxD TXD of the RS-232 header
D2 3 black button "down" SW0 (pin 1 switches header)
D3 4 red button "up" SW1 (pin 2 switches header)
D4 5 green button "ADC" SW2 (pin 3 switches header)
D5 6 blue LED LED0 (pin 1 LEDs header)
D6 7 (green)clock out LED1 (pin 2 LEDs header)
D7 8 white 1-second flashLED2 (pin 3 LEDs header)
GND9 unused
VCC10unused
+

+

+largedemo-wiring.jpg +

Wiring of the STK500

+

+The following picture shows the alternate wiring where LED1 is connected but SW2 is not:

+

+largedemo-wiring2.jpg +

Wiring option #2 of the STK500

+

+As an alternative, this demo can also be run on the popular ATmega8 controller, or its successor ATmega88 as well as the ATmega48 and ATmega168 variants of the latter. These controllers do not have a port named "A", so their ADC inputs are located on port C instead, thus the potentiometer needs to be attached to port C. Likewise, the OC1A output is not on port D pin 5 but on port B pin 1 (PB1). Thus, the above cabling scheme needs to be changed so that PB1 connects to the LED0 pin. (PD6 remains unconnected.) When using the STK500, use one of the jumper cables for this connection. All other port D pins should be connected the same way as described for the ATmega16 above.

+When not using an STK500 starter kit, attach the LEDs through some resistor to Vcc (low-active LEDs), and attach pushbuttons from the respective input pins to GND. The internal pull-up resistors are enabled for the pushbutton pins, so no external resistors are needed.

+Finally, the demo has been ported to the ATtiny2313 as well. As this AVR does not offer an ADC, everything related to handling the ADC is disabled in the code for that MCU type. Also, port D of this controller type only features 6 pins, so the 1-second flash LED had to be moved from PD6 to PD4. (PD4 is used as the ADC control button on the other MCU types, but that is not needed here.) OC1A is located at PB3 on this device.

+The MCU_TARGET macro in the Makefile needs to be adjusted appropriately for the alternative controller types.

+The flash ROM and RAM consumption of this demo are way below the resources of even an ATmega48, and still well within the capabilities of an ATtiny2313. The major advantage of experimenting with the ATmega16 (in addition that it ships together with an STK500 anyway) is that it can be debugged online via JTAG. Likewise, the ATmega48/88/168 and ATtiny2313 devices can be debugged through debugWire, using the Atmel JTAG ICE mkII or the low-cost AVR Dragon.

+Note that in the explanation below, all port/pin names are applicable to the ATmega16 setup.

+Functional overview

+PD6 will be toggled with each internal clock tick (approx. 10 ms). PD7 will flash once per second.

+PD0 and PD1 are configured as UART IO, and can be used to connect the demo kit to a PC (9600 Bd, 8N1 frame format). The demo application talks to the serial port, and it can be controlled from the serial port.

+PD2 through PD4 are configured as inputs, and control the application unless control has been taken over by the serial port. Shorting PD2 to GND will decrease the current PWM value, shorting PD3 to GND will increase it.

+While PD4 is shorted to GND, one ADC conversion for channel 0 (ADC input is on PA0) will be triggered each internal clock tick, and the resulting value will be used as the PWM value. So the brightness of the LED follows the analog input value on PC0. VAREF on the STK500 should be set to the same value as VCC.

+When running in serial control mode, the function of the watchdog timer can be demonstrated by typing an `r'. This will make the demo application run in a tight loop without retriggering the watchdog so after some seconds, the watchdog will reset the MCU. This situation can be figured out on startup by reading the MCUCSR register.

+The current value of the PWM is backed up in an EEPROM cell after about 3 seconds of idle time after the last change. If that EEPROM cell contains a reasonable (i. e. non-erased) value at startup, it is taken as the initial value for the PWM. This virtually preserves the last value across power cycles. By not updating the EEPROM immmediately but only after a timeout, EEPROM wear is reduced considerably compared to immediately writing the value at each change.

+A code walkthrough

+This section explains the ideas behind individual parts of the code. The source code has been divided into numbered parts, and the following subsections explain each of these parts.

+Part 1: Macro definitions

+A number of preprocessor macros are defined to improve readability and/or portability of the application.

+The first macros describe the IO pins our LEDs and pushbuttons are connected to. This provides some kind of mini-HAL (hardware abstraction layer) so should some of the connections be changed, they don't need to be changed inside the code but only on top. Note that the location of the PWM output itself is mandated by the hardware, so it cannot be easily changed. As the ATmega48/88/168 controllers belong to a more recent generation of AVRs, a number of register and bit names have been changed there, so they are mapped back to their ATmega8/16 equivalents to keep the actual program code portable.

+The name F_CPU is the conventional name to describe the CPU clock frequency of the controller. This demo project just uses the internal calibrated 1 MHz RC oscillator that is enabled by default. Note that when using the <util/delay.h> functions, F_CPU needs to be defined before including that file.

+The remaining macros have their own comments in the source code. The macro TMR1_SCALE shows how to use the preprocessor and the compiler's constant expression computation to calculate the value of timer 1's post-scaler in a way so it only depends on F_CPU and the desired software clock frequency. While the formula looks a bit complicated, using a macro offers the advantage that the application will automatically scale to new target softclock or master CPU frequencies without having to manually re-calculate hardcoded constants.

+Part 2: Variable definitions

+The intflags structure demonstrates a way to allocate bit variables in memory. Each of the interrupt service routines just sets one bit within that structure, and the application's main loop then monitors the bits in order to act appropriately.

+Like all variables that are used to communicate values between an interrupt service routine and the main application, it is declared volatile.

+The variable ee_pwm is not a variable in the classical C sense that could be used as an lvalue or within an expression to obtain its value. Instead, the

+

 __attribute__((section(".eeprom"))) 
+

+marks it as belonging to the EEPROM section. This section is merely used as a placeholder so the compiler can arrange for each individual variable's location in EEPROM. The compiler will also keep track of initial values assigned, and usually the Makefile is arranged to extract these initial values into a separate load file (largedemo_eeprom.* in this case) that can be used to initialize the EEPROM.

+The actual EEPROM IO must be performed manually.

+Similarly, the variable mcucsr is kept in the .noinit section in order to prevent it from being cleared upon application startup.

+Part 3: Interrupt service routines

+The ISR to handle timer 1's overflow interrupt arranges for the software clock. While timer 1 runs the PWM, it calls its overflow handler rather frequently, so the TMR1_SCALE value is used as a postscaler to reduce the internal software clock frequency further. If the software clock triggers, it sets the tmr_int bitfield, and defers all further tasks to the main loop.

+The ADC ISR just fetches the value from the ADC conversion, disables the ADC interrupt again, and announces the presence of the new value in the adc_int bitfield. The interrupt is kept disabled while not needed, because the ADC will also be triggered by executing the SLEEP instruction in idle mode (which is the default sleep mode). Another option would be to turn off the ADC completely here, but that increases the ADC's startup time (not that it would matter much for this application).

+Part 4: Auxiliary functions

+The function handle_mcucsr() uses two __attribute__ declarators to achieve specific goals. First, it will instruct the compiler to place the generated code into the .init3 section of the output. Thus, it will become part of the application initialization sequence. This is done in order to fetch (and clear) the reason of the last hardware reset from MCUCSR as early as possible. There is a short period of time where the next reset could already trigger before the current reason has been evaluated. This also explains why the variable mcucsr that mirrors the register's value needs to be placed into the .noinit section, because otherwise the default initialization (which happens after .init3) would blank the value again.

+As the initialization code is not called using CALL/RET instructions but rather concatenated together, the compiler needs to be instructed to omit the entire function prologue and epilogue. This is performed by the naked attribute. So while syntactically, handle_mcucsr() is a function to the compiler, the compiler will just emit the instructions for it without setting up any stack frame, and not even a RET instruction at the end.

+Function ioinit() centralizes all hardware setup. The very last part of that function demonstrates the use of the EEPROM variable ee_pwm to obtain an EEPROM address that can in turn be applied as an argument to eeprom_read_word().

+The following functions handle UART character and string output. (UART input is handled by an ISR.) There are two string output functions, printstr() and printstr_p(). The latter function fetches the string from program memory. Both functions translate a newline character into a carriage return/newline sequence, so a simple \n can be used in the source code.

+The function set_pwm() propagates the new PWM value to the PWM, performing range checking. When the value has been changed, the new percentage will be announced on the serial link. The current value is mirrored in the variable pwm so others can use it in calculations. In order to allow for a simple calculation of a percentage value without requiring floating-point mathematics, the maximal value of the PWM is restricted to 1000 rather than 1023, so a simple division by 10 can be used. Due to the nature of the human eye, the difference in LED brightness between 1000 and 1023 is not noticable anyway.

+Part 5: main()

+At the start of main(), a variable mode is declared to keep the current mode of operation. An enumeration is used to improve the readability. By default, the compiler would allocate a variable of type int for an enumeration. The packed attribute declarator instructs the compiler to use the smallest possible integer type (which would be an 8-bit type here).

+After some initialization actions, the application's main loop follows. In an embedded application, this is normally an infinite loop as there is nothing an application could "exit" into anyway.

+At the beginning of the loop, the watchdog timer will be retriggered. If that timer is not triggered for about 2 seconds, it will issue a hardware reset. Care needs to be taken that no code path blocks longer than this, or it needs to frequently perform watchdog resets of its own. An example of such a code path would be the string IO functions: for an overly large string to print (about 2000 characters at 9600 Bd), they might block for too long.

+The loop itself then acts on the interrupt indication bitfields as appropriate, and will eventually put the CPU on sleep at its end to conserve power.

+The first interrupt bit that is handled is the (software) timer, at a frequency of approximately 100 Hz. The CLOCKOUT pin will be toggled here, so e. g. an oscilloscope can be used on that pin to measure the accuracy of our software clock. Then, the LED flasher for LED2 ("We are alive"-LED) is built. It will flash that LED for about 50 ms, and pause it for another 950 ms. Various actions depending on the operation mode follow. Finally, the 3-second backup timer is implemented that will write the PWM value back to EEPROM once it is not changing anymore.

+The ADC interrupt will just adjust the PWM value only.

+Finally, the UART Rx interrupt will dispatch on the last character received from the UART.

+All the string literals that are used as informational messages within main() are placed in program memory so no SRAM needs to be allocated for them. This is done by using the PSTR macro, and passing the string to printstr_p().

+The source code

+ +Source file: largedemo.c +

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__setjmp.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__setjmp.html new file mode 100644 index 0000000..feeb871 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__setjmp.html @@ -0,0 +1,153 @@ + + + + + avr-libc: <setjmp.h>: Non-local goto + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<setjmp.h>: Non-local goto


Detailed Description

+While the C language has the dreaded goto statement, it can only be used to jump to a label in the same (local) function. In order to jump directly to another (non-local) function, the C library provides the setjmp() and longjmp() functions. setjmp() and longjmp() are useful for dealing with errors and interrupts encountered in a low-level subroutine of a program.

+

Note:
setjmp() and longjmp() make programs hard to understand and maintain. If possible, an alternative should be used.

+longjmp() can destroy changes made to global register variables (see How to permanently bind a variable to a register?).

+For a very detailed discussion of setjmp()/longjmp(), see Chapter 7 of Advanced Programming in the UNIX Environment, by W. Richard Stevens.

+Example:

+

    #include <setjmp.h>
+
+    jmp_buf env;
+
+    int main (void)
+    {
+        if (setjmp (env))
+        {
+            ... handle error ...
+        }
+
+        while (1)
+        {
+           ... main processing loop which calls foo() some where ...
+        }
+    }
+
+    ...
+
+    void foo (void)
+    {
+        ... blah, blah, blah ...
+
+        if (err)
+        {
+            longjmp (env, 1);
+        }
+    }
+
+

+ + + + + + + +

Functions

int setjmp (jmp_buf __jmpb)
void longjmp (jmp_buf __jmpb, int __ret) __ATTR_NORETURN__
+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void longjmp (jmp_buf  __jmpb,
int  __ret 
)
+
+
+ +

+Non-local jump to a saved stack context. +

+

 #include <setjmp.h>
+

+longjmp() restores the environment saved by the last call of setjmp() with the corresponding __jmpb argument. After longjmp() is completed, program execution continues as if the corresponding call of setjmp() had just returned the value __ret.

+

Note:
longjmp() cannot cause 0 to be returned. If longjmp() is invoked with a second argument of 0, 1 will be returned instead.
+
Parameters:
+ + + +
__jmpb Information saved by a previous call to setjmp().
__ret Value to return to the caller of setjmp().
+
+
Returns:
This function never returns.
+ +
+

+ +

+
+ + + + + + + + + +
int setjmp (jmp_buf  __jmpb  ) 
+
+
+ +

+Save stack context for non-local goto. +

+

 #include <setjmp.h>
+

+setjmp() saves the stack context/environment in __jmpb for later use by longjmp(). The stack context will be invalidated if the function which called setjmp() returns.

+

Parameters:
+ + +
__jmpb Variable of type jmp_buf which holds the stack information such that the environment can be restored.
+
+
Returns:
setjmp() returns 0 if returning directly, and non-zero when returning from longjmp() using the saved context.
+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__stdiodemo.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__stdiodemo.html new file mode 100644 index 0000000..0389104 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__stdiodemo.html @@ -0,0 +1,158 @@ + + + + + avr-libc: Using the standard IO facilities + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Using the standard IO facilities
+ +[Demo projects] +

This project illustrates how to use the standard IO facilities (stdio) provided by this library. It assumes a basic knowledge of how the stdio subsystem is used in standard C applications, and concentrates on the differences in this library's implementation that mainly result from the differences of the microcontroller environment, compared to a hosted environment of a standard computer.

+This demo is meant to supplement the documentation, not to replace it.

+Hardware setup

+The demo is set up in a way so it can be run on the ATmega16 that ships with the STK500 development kit. The UART port needs to be connected to the RS-232 "spare" port by a jumper cable that connects PD0 to RxD and PD1 to TxD. The RS-232 channel is set up as standard input (stdin) and standard output (stdout), respectively.

+In order to have a different device available for a standard error channel (stderr), an industry-standard LCD display with an HD44780-compatible LCD controller has been chosen. This display needs to be connected to port A of the STK500 in the following way:

+ + + + + + + + + + + + + + + + + + + + + + + +
PortHeaderFunction
A0 1 LCD D4
A1 2 LCD D5
A2 3 LCD D6
A3 4 LCD D7
A4 5 LCD R/~W
A5 6 LCD E
A6 7 LCD RS
A7 8 unused
GND9 GND
VCC10Vcc
+

+

+stdiodemo-setup.jpg +

Wiring of the STK500

+

+The LCD controller is used in 4-bit mode, including polling the "busy" flag so the R/~W line from the LCD controller needs to be connected. Note that the LCD controller has yet another supply pin that is used to adjust the LCD's contrast (V5). Typically, that pin connects to a potentiometer between Vcc and GND. Often, it might work to just connect that pin to GND, while leaving it unconnected usually yields an unreadable display.

+Port A has been chosen as 7 pins on a single port are needed to connect the LCD, yet all other ports are already partially in use: port B has the pins for in-system programming (ISP), port C has the ports for JTAG (can be used for debugging), and port D is used for the UART connection.

+Functional overview

+The project consists of the following files:

+

    +
  • stdiodemo.c This is the main example file.
  • defines.h Contains some global defines, like the LCD wiring
  • hd44780.c Implementation of an HD44780 LCD display driver
  • hd44780.h Interface declarations for the HD44780 driver
  • lcd.c Implementation of LCD character IO on top of the HD44780 driver
  • lcd.h Interface declarations for the LCD driver
  • uart.c Implementation of a character IO driver for the internal UART
  • uart.h Interface declarations for the UART driver
+

+A code walkthrough

+

+stdiodemo.c

+As usual, include files go first. While conventionally, system header files (those in angular brackets < ... >) go before application-specific header files (in double quotes), defines.h comes as the first header file here. The main reason is that this file defines the value of F_CPU which needs to be known before including <utils/delay.h>.

+The function ioinit() summarizes all hardware initialization tasks. As this function is declared to be module-internal only (static), the compiler will notice its simplicity, and with a reasonable optimization level in effect, it will inline that function. That needs to be kept in mind when debugging, because the inlining might cause the debugger to "jump around wildly" at a first glance when single-stepping.

+The definitions of uart_str and lcd_str set up two stdio streams. The initialization is done using the FDEV_SETUP_STREAM() initializer template macro, so a static object can be constructed that can be used for IO purposes. This initializer macro takes three arguments, two function macros to connect the corresponding output and input functions, respectively, the third one describes the intent of the stream (read, write, or both). Those functions that are not required by the specified intent (like the input function for lcd_str which is specified to only perform output operations) can be given as NULL.

+The stream uart_str corresponds to input and output operations performed over the RS-232 connection to a terminal (e.g. from/to a PC running a terminal program), while the lcd_str stream provides a method to display character data on the LCD text display.

+The function delay_1s() suspends program execution for approximately one second. This is done using the _delay_ms() function from <util/delay.h> which in turn needs the F_CPU macro in order to adjust the cycle counts. As the _delay_ms() function has a limited range of allowable argument values (depending on F_CPU), a value of 10 ms has been chosen as the base delay which would be safe for CPU frequencies of up to about 26 MHz. This function is then called 100 times to accomodate for the actual one-second delay.

+In a practical application, long delays like this one were better be handled by a hardware timer, so the main CPU would be free for other tasks while waiting, or could be put on sleep.

+At the beginning of main(), after initializing the peripheral devices, the default stdio streams stdin, stdout, and stderr are set up by using the existing static FILE stream objects. While this is not mandatory, the availability of stdin and stdout allows to use the shorthand functions (e.g. printf() instead of fprintf()), and stderr can mnemonically be referred to when sending out diagnostic messages.

+Just for demonstration purposes, stdin and stdout are connected to a stream that will perform UART IO, while stderr is arranged to output its data to the LCD text display.

+Finally, a main loop follows that accepts simple "commands" entered via the RS-232 connection, and performs a few simple actions based on the commands.

+First, a prompt is sent out using printf_P() (which takes a program space string). The string is read into an internal buffer as one line of input, using fgets(). While it would be also possible to use gets() (which implicitly reads from stdin), gets() has no control that the user's input does not overflow the input buffer provided so it should never be used at all.

+If fgets() fails to read anything, the main loop is left. Of course, normally the main loop of a microcontroller application is supposed to never finish, but again, for demonstrational purposes, this explains the error handling of stdio. fgets() will return NULL in case of an input error or end-of-file condition on input. Both these conditions are in the domain of the function that is used to establish the stream, uart_putchar() in this case. In short, this function returns EOF in case of a serial line "break" condition (extended start condition) has been recognized on the serial line. Common PC terminal programs allow to assert this condition as some kind of out-of-band signalling on an RS-232 connection.

+When leaving the main loop, a goodbye message is sent to standard error output (i.e. to the LCD), followed by three dots in one-second spacing, followed by a sequence that will clear the LCD. Finally, main() will be terminated, and the library will add an infinite loop, so only a CPU reset will be able to restart the application.

+There are three "commands" recognized, each determined by the first letter of the line entered (converted to lower case):

+

    +
  • The 'q' (quit) command has the same effect of leaving the main loop.
  • The 'l' (LCD) command takes its second argument, and sends it to the LCD.
  • The 'u' (UART) command takes its second argument, and sends it back to the UART connection.
+

+Command recognition is done using sscanf() where the first format in the format string just skips over the command itself (as the assignment suppression modifier * is given).

+defines.h

+This file just contains a few peripheral definitions.

+The F_CPU macro defines the CPU clock frequency, to be used in delay loops, as well as in the UART baud rate calculation.

+The macro UART_BAUD defines the RS-232 baud rate. Depending on the actual CPU frequency, only a limited range of baud rates can be supported.

+The remaining macros customize the IO port and pins used for the HD44780 LCD driver.

+hd44780.h

+This file describes the public interface of the low-level LCD driver that interfaces to the HD44780 LCD controller. Public functions are available to initialize the controller into 4-bit mode, to wait for the controller's busy bit to be clear, and to read or write one byte from or to the controller.

+As there are two different forms of controller IO, one to send a command or receive the controller status (RS signal clear), and one to send or receive data to/from the controller's SRAM (RS asserted), macros are provided that build on the mentioned function primitives.

+Finally, macros are provided for all the controller commands to allow them to be used symbolically. The HD44780 datasheet explains these basic functions of the controller in more detail.

+hd44780.c

+This is the implementation of the low-level HD44780 LCD controller driver.

+On top, a few preprocessor glueing tricks are used to establish symbolic access to the hardware port pins the LCD controller is attached to, based on the application's definitions made in defines.h.

+The hd44780_pulse_e() function asserts a short pulse to the controller's E (enable) pin. Since reading back the data asserted by the LCD controller needs to be performed while E is active, this function reads and returns the input data if the parameter readback is true. When called with a compile-time constant parameter that is false, the compiler will completely eliminate the unused readback operation, as well as the return value as part of its optimizations.

+As the controller is used in 4-bit interface mode, all byte IO to/from the controller needs to be handled as two nibble IOs. The functions hd44780_outnibble() and hd44780_innibble() implement this. They do not belong to the public interface, so they are declared static.

+Building upon these, the public functions hd44780_outbyte() and hd44780_inbyte() transfer one byte to/from the controller.

+The function hd44780_wait_ready() waits for the controller to become ready, by continuously polling the controller's status (which is read by performing a byte read with the RS signal cleard), and examining the BUSY flag within the status byte. This function needs to be called before performing any controller IO.

+Finally, hd44780_init() initializes the LCD controller into 4-bit mode, based on the initialization sequence mandated by the datasheet. As the BUSY flag cannot be examined yet at this point, this is the only part of this code where timed delays are used. While the controller can perform a power-on reset when certain constraints on the power supply rise time are met, always calling the software initialization routine at startup ensures the controller will be in a known state. This function also puts the interface into 4-bit mode (which would not be done automatically after a power-on reset).

+lcd.h

+This function declares the public interface of the higher-level (character IO) LCD driver.

+lcd.c

+The implementation of the higher-level LCD driver. This driver builds on top of the HD44780 low-level LCD controller driver, and offers a character IO interface suitable for direct use by the standard IO facilities. Where the low-level HD44780 driver deals with setting up controller SRAM addresses, writing data to the controller's SRAM, and controlling display functions like clearing the display, or moving the cursor, this high-level driver allows to just write a character to the LCD, in the assumption this will somehow show up on the display.

+Control characters can be handled at this level, and used to perform specific actions on the LCD. Currently, there is only one control character that is being dealt with: a newline character (\n) is taken as an indication to clear the display and set the cursor into its initial position upon reception of the next character, so a "new line" of text can be displayed. Therefore, a received newline character is remembered until more characters have been sent by the application, and will only then cause the display to be cleared before continuing. This provides a convenient abstraction where full lines of text can be sent to the driver, and will remain visible at the LCD until the next line is to be displayed.

+Further control characters could be implemented, e. g. using a set of escape sequences. That way, it would be possible to implement self-scrolling display lines etc.

+The public function lcd_init() first calls the initialization entry point of the lower-level HD44780 driver, and then sets up the LCD in a way we'd like to (display cleared, non-blinking cursor enabled, SRAM addresses are increasing so characters will be written left to right).

+The public function lcd_putchar() takes arguments that make it suitable for being passed as a put() function pointer to the stdio stream initialization functions and macros (fdevopen(), FDEV_SETUP_STREAM() etc.). Thus, it takes two arguments, the character to display itself, and a reference to the underlying stream object, and it is expected to return 0 upon success.

+This function remembers the last unprocessed newline character seen in the function-local static variable nl_seen. If a newline character is encountered, it will simply set this variable to a true value, and return to the caller. As soon as the first non-newline character is to be displayed with nl_seen still true, the LCD controller is told to clear the display, put the cursor home, and restart at SRAM address 0. All other characters are sent to the display.

+The single static function-internal variable nl_seen works for this purpose. If multiple LCDs should be controlled using the same set of driver functions, that would not work anymore, as a way is needed to distinguish between the various displays. This is where the second parameter can be used, the reference to the stream itself: instead of keeping the state inside a private variable of the function, it can be kept inside a private object that is attached to the stream itself. A reference to that private object can be attached to the stream (e.g. inside the function lcd_init() that then also needs to be passed a reference to the stream) using fdev_set_udata(), and can be accessed inside lcd_putchar() using fdev_get_udata().

+uart.h

+Public interface definition for the RS-232 UART driver, much like in lcd.h except there is now also a character input function available.

+As the RS-232 input is line-buffered in this example, the macro RX_BUFSIZE determines the size of that buffer.

+uart.c

+This implements an stdio-compatible RS-232 driver using an AVR's standard UART (or USART in asynchronous operation mode). Both, character output as well as character input operations are implemented. Character output takes care of converting the internal newline \n into its external representation carriage return/line feed (\r\n).

+Character input is organized as a line-buffered operation that allows to minimally edit the current line until it is "sent" to the application when either a carriage return (\r) or newline (\n) character is received from the terminal. The line editing functions implemented are:

+

    +
  • \b (back space) or \177 (delete) deletes the previous character
  • ^u (control-U, ASCII NAK) deletes the entire input buffer
  • ^w (control-W, ASCII ETB) deletes the previous input word, delimited by white space
  • ^r (control-R, ASCII DC2) sends a \r, then reprints the buffer (refresh)
  • \t (tabulator) will be replaced by a single space
+

+The function uart_init() takes care of all hardware initialization that is required to put the UART into a mode with 8 data bits, no parity, one stop bit (commonly referred to as 8N1) at the baud rate configured in defines.h. At low CPU clock frequencies, the U2X bit in the UART is set, reducing the oversampling from 16x to 8x, which allows for a 9600 Bd rate to be achieved with tolerable error using the default 1 MHz RC oscillator.

+The public function uart_putchar() again has suitable arguments for direct use by the stdio stream interface. It performs the \n into \r\n translation by recursively calling itself when it sees a \n character. Just for demonstration purposes, the \a (audible bell, ASCII BEL) character is implemented by sending a string to stderr, so it will be displayed on the LCD.

+The public function uart_getchar() implements the line editor. If there are characters available in the line buffer (variable rxp is not NULL), the next character will be returned from the buffer without any UART interaction.

+If there are no characters inside the line buffer, the input loop will be entered. Characters will be read from the UART, and processed accordingly. If the UART signalled a framing error (FE bit set), typically caused by the terminal sending a line break condition (start condition held much longer than one character period), the function will return an end-of-file condition using _FDEV_EOF. If there was a data overrun condition on input (DOR bit set), an error condition will be returned as _FDEV_ERR.

+Line editing characters are handled inside the loop, potentially modifying the buffer status. If characters are attempted to be entered beyond the size of the line buffer, their reception is refused, and a \a character is sent to the terminal. If a \r or \n character is seen, the variable rxp (receive pointer) is set to the beginning of the buffer, the loop is left, and the first character of the buffer will be returned to the application. (If no other characters have been entered, this will just be the newline character, and the buffer is marked as being exhausted immediately again.)

+The source code

+ +
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__twi__demo.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__twi__demo.html new file mode 100644 index 0000000..73fe427 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__twi__demo.html @@ -0,0 +1,89 @@ + + + + + avr-libc: Example using the two-wire interface (TWI) + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Example using the two-wire interface (TWI)
+ +[Demo projects] +

Some newer devices of the ATmega series contain builtin support for interfacing the microcontroller to a two-wire bus, called TWI. This is essentially the same called I2C by Philips, but that term is avoided in Atmel's documentation due to patenting issues.

+For the original Philips documentation, see

+http://www.semiconductors.philips.com/buses/i2c/index.html

+Introduction into TWI

+The two-wire interface consists of two signal lines named SDA (serial data) and SCL (serial clock) (plus a ground line, of course). All devices participating in the bus are connected together, using open-drain driver circuitry, so the wires must be terminated using appropriate pullup resistors. The pullups must be small enough to recharge the line capacity in short enough time compared to the desired maximal clock frequency, yet large enough so all drivers will not be overloaded. There are formulas in the datasheet that help selecting the pullups.

+Devices can either act as a master to the bus (i. e., they initiate a transfer), or as a slave (they only act when being called by a master). The bus is multi-master capable, and a particular device implementation can act as either master or slave at different times. Devices are addressed using a 7-bit address (coordinated by Philips) transfered as the first byte after the so-called start condition. The LSB of that byte is R/~W, i. e. it determines whether the request to the slave is to read or write data during the next cycles. (There is also an option to have devices using 10-bit addresses but that is not covered by this example.)

+The TWI example project

+The ATmega TWI hardware supports both, master and slave operation. This example will only demonstrate how to use an AVR microcontroller as TWI master. The implementation is kept simple in order to concentrate on the steps that are required to talk to a TWI slave, so all processing is done in polled-mode, waiting for the TWI interface to indicate that the next processing step is due (by setting the TWINT interrupt bit). If it is desired to have the entire TWI communication happen in "background", all this can be implemented in an interrupt-controlled way, where only the start condition needs to be triggered from outside the interrupt routine.

+There is a variety of slave devices available that can be connected to a TWI bus. For the purpose of this example, an EEPROM device out of the industry-standard 24Cxx series has been chosen (where xx can be one of 01, 02, 04, 08, or 16) which are available from various vendors. The choice was almost arbitrary, mainly triggered by the fact that an EEPROM device is being talked to in both directions, reading and writing the slave device, so the example will demonstrate the details of both.

+Usually, there is probably not much need to add more EEPROM to an ATmega system that way: the smallest possible AVR device that offers hardware TWI support is the ATmega8 which comes with 512 bytes of EEPROM, which is equivalent to an 24C04 device. The ATmega128 already comes with twice as much EEPROM as the 24C16 would offer. One exception might be to use an externally connected EEPROM device that is removable; e. g. SDRAM PC memory comes with an integrated TWI EEPROM that carries the RAM configuration information.

+The Source Code

+ +Source file: twitest.c +

+

+

Note [1]
+The header file <util/twi.h> contains some macro definitions for symbolic constants used in the TWI status register. These definitions match the names used in the Atmel datasheet except that all names have been prefixed with TW_.

+

Note [2]
+The clock is used in timer calculations done by the compiler, for the UART baud rate and the TWI clock rate.

+

Note [3]
+The address assigned for the 24Cxx EEPROM consists of 1010 in the upper four bits. The following three bits are normally available as slave sub-addresses, allowing to operate more than one device of the same type on a single bus, where the actual subaddress used for each device is configured by hardware strapping. However, since the next data packet following the device selection only allows for 8 bits that are used as an EEPROM address, devices that require more than 8 address bits (24C04 and above) "steal" subaddress bits and use them for the EEPROM cell address bits 9 to 11 as required. This example simply assumes all subaddress bits are 0 for the smaller devices, so the E0, E1, and E2 inputs of the 24Cxx must be grounded.

+

Note [4]
+For slow clocks, enable the 2 x U[S]ART clock multiplier, to improve the baud rate error. This will allow a 9600 Bd communication using the standard 1 MHz calibrated RC oscillator. See also the Baud rate tables in the datasheets.

+

Note [5]
+The datasheet explains why a minimum TWBR value of 10 should be maintained when running in master mode. Thus, for system clocks below 3.6 MHz, we cannot run the bus at the intented clock rate of 100 kHz but have to slow down accordingly.

+

Note [6]
+This function is used by the standard output facilities that are utilized in this example for debugging and demonstration purposes.

+

Note [7]
+In order to shorten the data to be sent over the TWI bus, the 24Cxx EEPROMs support multiple data bytes transfered within a single request, maintaining an internal address counter that is updated after each data byte transfered successfully. When reading data, one request can read the entire device memory if desired (the counter would wrap around and start back from 0 when reaching the end of the device).

+

Note [8]
+When reading the EEPROM, a first device selection must be made with write intent (R/~W bit set to 0 indicating a write operation) in order to transfer the EEPROM address to start reading from. This is called master transmitter mode. Each completion of a particular step in TWI communication is indicated by an asserted TWINT bit in TWCR. (An interrupt would be generated if allowed.) After performing any actions that are needed for the next communication step, the interrupt condition must be manually cleared by setting the TWINT bit. Unlike with many other interrupt sources, this would even be required when using a true interrupt routine, since as soon as TWINT is re-asserted, the next bus transaction will start.

+

Note [9]
+Since the TWI bus is multi-master capable, there is potential for a bus contention when one master starts to access the bus. Normally, the TWI bus interface unit will detect this situation, and will not initiate a start condition while the bus is busy. However, in case two masters were starting at exactly the same time, the way bus arbitration works, there is always a chance that one master could lose arbitration of the bus during any transmit operation. A master that has lost arbitration is required by the protocol to immediately cease talking on the bus; in particular it must not initiate a stop condition in order to not corrupt the ongoing transfer from the active master. In this example, upon detecting a lost arbitration condition, the entire transfer is going to be restarted. This will cause a new start condition to be initiated, which will normally be delayed until the currently active master has released the bus.

+

Note [10]
+Next, the device slave is going to be reselected (using a so-called repeated start condition which is meant to guarantee that the bus arbitration will remain at the current master) using the same slave address (SLA), but this time with read intent (R/~W bit set to 1) in order to request the device slave to start transfering data from the slave to the master in the next packet.

+

Note [11]
+If the EEPROM device is still busy writing one or more cells after a previous write request, it will simply leave its bus interface drivers at high impedance, and does not respond to a selection in any way at all. The master selecting the device will see the high level at SDA after transfering the SLA+R/W packet as a NACK to its selection request. Thus, the select process is simply started over (effectively causing a repeated start condition), until the device will eventually respond. This polling procedure is recommended in the 24Cxx datasheet in order to minimize the busy wait time when writing. Note that in case a device is broken and never responds to a selection (e. g. since it is no longer present at all), this will cause an infinite loop. Thus the maximal number of iterations made until the device is declared to be not responding at all, and an error is returned, will be limited to MAX_ITER.

+

Note [12]
+This is called master receiver mode: the bus master still supplies the SCL clock, but the device slave drives the SDA line with the appropriate data. After 8 data bits, the master responds with an ACK bit (SDA driven low) in order to request another data transfer from the slave, or it can leave the SDA line high (NACK), indicating to the slave that it is going to stop the transfer now. Assertion of ACK is handled by setting the TWEA bit in TWCR when starting the current transfer.

+

Note [13]
+The control word sent out in order to initiate the transfer of the next data packet is initially set up to assert the TWEA bit. During the last loop iteration, TWEA is de-asserted so the client will get informed that no further transfer is desired.

+

Note [14]
+Except in the case of lost arbitration, all bus transactions must properly be terminated by the master initiating a stop condition.

+

Note [15]
+Writing to the EEPROM device is simpler than reading, since only a master transmitter mode transfer is needed. Note that the first packet after the SLA+W selection is always considered to be the EEPROM address for the next operation. (This packet is exactly the same as the one above sent before starting to read the device.) In case a master transmitter mode transfer is going to send more than one data packet, all following packets will be considered data bytes to write at the indicated address. The internal address pointer will be incremented after each write operation.

+

Note [16]
+24Cxx devices can become write-protected by strapping their ~WC pin to logic high. (Leaving it unconnected is explicitly allowed, and constitutes logic low level, i. e. no write protection.) In case of a write protected device, all data transfer attempts will be NACKed by the device. Note that some devices might not implement this. +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__atomic.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__atomic.html new file mode 100644 index 0000000..6bfdd36 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__atomic.html @@ -0,0 +1,223 @@ + + + + + avr-libc: <util/atomic.h> Atomically and Non-Atomically Executed Code Blocks + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<util/atomic.h> Atomically and Non-Atomically Executed Code Blocks


Detailed Description

+
    #include <util/atomic.h>
+

+

Note:
The macros in this header file require the ISO/IEC 9899:1999 ("ISO C99") feature of for loop variables that are declared inside the for loop itself. For that reason, this header file can only be used if the standard level of the compiler (option --std=) is set to either c99 or gnu99.
+The macros in this header file deal with code blocks that are guaranteed to be excuted Atomically or Non-Atmomically. The term "Atomic" in this context refers to the unability of the respective code to be interrupted.

+These macros operate via automatic manipulation of the Global Interrupt Status (I) bit of the SREG register. Exit paths from both block types are all managed automatically without the need for special considerations, i. e. the interrupt status will be restored to the same value it has been when entering the respective block.

+A typical example that requires atomic access is a 16 (or more) bit variable that is shared between the main execution path and an ISR. While declaring such a variable as volatile ensures that the compiler will not optimize accesses to it away, it does not guarantee atomic access to it. Assuming the following example:

+

#include <inttypes.h>
+#include <avr/interrupt.h>
+#include <avr/io.h>
+
+volatile uint16_t ctr;
+
+ISR(TIMER1_OVF_vect)
+{
+  ctr--;
+}
+
+...
+int
+main(void)
+{
+   ...
+   ctr = 0x200;
+   start_timer();
+   while (ctr != 0)
+     // wait
+       ;
+   ...
+}
+

+There is a chance where the main context will exit its wait loop when the variable ctr just reached the value 0xFF. This happens because the compiler cannot natively access a 16-bit variable atomically in an 8-bit CPU. So the variable is for example at 0x100, the compiler then tests the low byte for 0, which succeeds. It then proceeds to test the high byte, but that moment the ISR triggers, and the main context is interrupted. The ISR will decrement the variable from 0x100 to 0xFF, and the main context proceeds. It now tests the high byte of the variable which is (now) also 0, so it concludes the variable has reached 0, and terminates the loop.

+Using the macros from this header file, the above code can be rewritten like:

+

#include <inttypes.h>
+#include <avr/interrupt.h>
+#include <avr/io.h>
+#include <util/atomic.h>
+
+volatile uint16_t ctr;
+
+ISR(TIMER1_OVF_vect)
+{
+  ctr--;
+}
+
+...
+int
+main(void)
+{
+   ...
+   ctr = 0x200;
+   start_timer();
+   sei();
+   uint16_t ctr_copy;
+   do
+   {
+     ATOMIC_BLOCK(ATOMIC_FORCEON)
+     {
+       ctr_copy = ctr;
+     }
+   }
+   while (ctr_copy != 0);
+   ...
+}
+

+This will install the appropriate interrupt protection before accessing variable ctr, so it is guaranteed to be consistently tested. If the global interrupt state were uncertain before entering the ATOMIC_BLOCK, it should be executed with the parameter ATOMIC_RESTORESTATE rather than ATOMIC_FORCEON. +

+ + + + + + + + + + + + + + + +

Defines

#define ATOMIC_BLOCK(type)
#define NONATOMIC_BLOCK(type)
#define ATOMIC_RESTORESTATE
#define ATOMIC_FORCEON
#define NONATOMIC_RESTORESTATE
#define NONATOMIC_FORCEOFF
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define ATOMIC_BLOCK (type   ) 
+
+
+ +

+Creates a block of code that is guaranteed to be executed atomically. Upon entering the block the Global Interrupt Status flag in SREG is disabled, and re-enabled upon exiting the block from any exit path.

+Two possible macro parameters are permitted, ATOMIC_RESTORESTATE and ATOMIC_FORCEON. +

+

+ +

+
+ + + + +
#define ATOMIC_FORCEON
+
+
+ +

+This is a possible parameter for ATOMIC_BLOCK. When used, it will cause the ATOMIC_BLOCK to force the state of the SREG register on exit, enabling the Global Interrupt Status flag bit. This saves on flash space as the previous value of the SREG register does not need to be saved at the start of the block.

+Care should be taken that ATOMIC_FORCEON is only used when it is known that interrupts are enabled before the block's execution or when the side effects of enabling global interrupts at the block's completion are known and understood. +

+

+ +

+
+ + + + +
#define ATOMIC_RESTORESTATE
+
+
+ +

+This is a possible parameter for ATOMIC_BLOCK. When used, it will cause the ATOMIC_BLOCK to restore the previous state of the SREG register, saved before the Global Interrupt Status flag bit was disabled. The net effect of this is to make the ATOMIC_BLOCK's contents guaranteed atomic, without changing the state of the Global Interrupt Status flag when execution of the block completes. +

+

+ +

+
+ + + + + + + + + +
#define NONATOMIC_BLOCK (type   ) 
+
+
+ +

+Creates a block of code that is executed non-atomically. Upon entering the block the Global Interrupt Status flag in SREG is enabled, and disabled upon exiting the block from any exit path. This is useful when nested inside ATOMIC_BLOCK sections, allowing for non-atomic execution of small blocks of code while maintaining the atomic access of the other sections of the parent ATOMIC_BLOCK.

+Two possible macro parameters are permitted, NONATOMIC_RESTORESTATE and NONATOMIC_FORCEOFF. +

+

+ +

+
+ + + + +
#define NONATOMIC_FORCEOFF
+
+
+ +

+This is a possible parameter for NONATOMIC_BLOCK. When used, it will cause the NONATOMIC_BLOCK to force the state of the SREG register on exit, disabling the Global Interrupt Status flag bit. This saves on flash space as the previous value of the SREG register does not need to be saved at the start of the block.

+Care should be taken that NONATOMIC_FORCEOFF is only used when it is known that interrupts are disabled before the block's execution or when the side effects of disabling global interrupts at the block's completion are known and understood. +

+

+ +

+
+ + + + +
#define NONATOMIC_RESTORESTATE
+
+
+ +

+This is a possible parameter for NONATOMIC_BLOCK. When used, it will cause the NONATOMIC_BLOCK to restore the previous state of the SREG register, saved before the Global Interrupt Status flag bit was enabled. The net effect of this is to make the NONATOMIC_BLOCK's contents guaranteed non-atomic, without changing the state of the Global Interrupt Status flag when execution of the block completes. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__crc.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__crc.html new file mode 100644 index 0000000..37139c6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__crc.html @@ -0,0 +1,268 @@ + + + + + avr-libc: <util/crc16.h>: CRC Computations + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<util/crc16.h>: CRC Computations


Detailed Description

+
 #include <util/crc16.h>
+

+This header file provides a optimized inline functions for calculating cyclic redundancy checks (CRC) using common polynomials.

+

References:
+
+See the Dallas Semiconductor app note 27 for 8051 assembler example and general CRC optimization suggestions. The table on the last page of the app note is the key to understanding these implementations.

+

+Jack Crenshaw's "Implementing CRCs" article in the January 1992 isue of Embedded Systems Programming. This may be difficult to find, but it explains CRC's in very clear and concise terms. Well worth the effort to obtain a copy.

+A typical application would look like:

+

    // Dallas iButton test vector.
+    uint8_t serno[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0, 0xa2 };
+
+    int
+    checkcrc(void)
+    {
+        uint8_t crc = 0, i;
+
+        for (i = 0; i < sizeof serno / sizeof serno[0]; i++)
+            crc = _crc_ibutton_update(crc, serno[i]);
+
+        return crc; // must be 0
+    }
+
+

+ + + + + + + + + + + +

Functions

static __inline__ uint16_t _crc16_update (uint16_t __crc, uint8_t __data)
static __inline__ uint16_t _crc_xmodem_update (uint16_t __crc, uint8_t __data)
static __inline__ uint16_t _crc_ccitt_update (uint16_t __crc, uint8_t __data)
static __inline__ uint8_t _crc_ibutton_update (uint8_t __crc, uint8_t __data)
+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
static __inline__ uint16_t _crc16_update (uint16_t  __crc,
uint8_t  __data 
) [static]
+
+
+ +

+Optimized CRC-16 calculation.

+Polynomial: x^16 + x^15 + x^2 + 1 (0xa001)
+ Initial value: 0xffff

+This CRC is normally used in disk-drive controllers.

+The following is the equivalent functionality written in C.

+

    uint16_t
+    crc16_update(uint16_t crc, uint8_t a)
+    {
+        int i;
+
+        crc ^= a;
+        for (i = 0; i < 8; ++i)
+        {
+            if (crc & 1)
+                crc = (crc >> 1) ^ 0xA001;
+            else
+                crc = (crc >> 1);
+        }
+
+        return crc;
+    }
+
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static __inline__ uint16_t _crc_ccitt_update (uint16_t  __crc,
uint8_t  __data 
) [static]
+
+
+ +

+Optimized CRC-CCITT calculation.

+Polynomial: x^16 + x^12 + x^5 + 1 (0x8408)
+ Initial value: 0xffff

+This is the CRC used by PPP and IrDA.

+See RFC1171 (PPP protocol) and IrDA IrLAP 1.1

+

Note:
Although the CCITT polynomial is the same as that used by the Xmodem protocol, they are quite different. The difference is in how the bits are shifted through the alorgithm. Xmodem shifts the MSB of the CRC and the input first, while CCITT shifts the LSB of the CRC and the input first.
+The following is the equivalent functionality written in C.

+

    uint16_t
+    crc_ccitt_update (uint16_t crc, uint8_t data)
+    {
+        data ^= lo8 (crc);
+        data ^= data << 4;
+
+        return ((((uint16_t)data << 8) | hi8 (crc)) ^ (uint8_t)(data >> 4) 
+                ^ ((uint16_t)data << 3));
+    }
+
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static __inline__ uint8_t _crc_ibutton_update (uint8_t  __crc,
uint8_t  __data 
) [static]
+
+
+ +

+Optimized Dallas (now Maxim) iButton 8-bit CRC calculation.

+Polynomial: x^8 + x^5 + x^4 + 1 (0x8C)
+ Initial value: 0x0

+See http://www.maxim-ic.com/appnotes.cfm/appnote_number/27

+The following is the equivalent functionality written in C.

+

    uint8_t
+    _crc_ibutton_update(uint8_t crc, uint8_t data)
+    {
+        uint8_t i;
+
+        crc = crc ^ data;
+        for (i = 0; i < 8; i++)
+        {
+            if (crc & 0x01)
+                crc = (crc >> 1) ^ 0x8C;
+            else
+                crc >>= 1;
+        }
+
+        return crc;
+    }
+
+
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
static __inline__ uint16_t _crc_xmodem_update (uint16_t  __crc,
uint8_t  __data 
) [static]
+
+
+ +

+Optimized CRC-XMODEM calculation.

+Polynomial: x^16 + x^12 + x^5 + 1 (0x1021)
+ Initial value: 0x0

+This is the CRC used by the Xmodem-CRC protocol.

+The following is the equivalent functionality written in C.

+

    uint16_t
+    crc_xmodem_update (uint16_t crc, uint8_t data)
+    {
+        int i;
+
+        crc = crc ^ ((uint16_t)data << 8);
+        for (i=0; i<8; i++)
+        {
+            if (crc & 0x8000)
+                crc = (crc << 1) ^ 0x1021;
+            else
+                crc <<= 1;
+        }
+
+        return crc;
+    }
+
+
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__delay.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__delay.html new file mode 100644 index 0000000..eb77525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__delay.html @@ -0,0 +1,100 @@ + + + + + avr-libc: <util/delay.h>: Convenience functions for busy-wait delay loops + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<util/delay.h>: Convenience functions for busy-wait delay loops


Detailed Description

+
    #define F_CPU 1000000UL  // 1 MHz
+    //#define F_CPU 14.7456E6
+    #include <util/delay.h>
+

+

Note:
As an alternative method, it is possible to pass the F_CPU macro down to the compiler from the Makefile. Obviously, in that case, no #define statement should be used.
+The functions in this header file are wrappers around the basic busy-wait functions from <util/delay_basic.h>. They are meant as convenience functions where actual time values can be specified rather than a number of cycles to wait for. The idea behind is that compile-time constant expressions will be eliminated by compiler optimization so floating-point expressions can be used to calculate the number of delay cycles needed based on the CPU frequency passed by the macro F_CPU.

+

Note:
In order for these functions to work as intended, compiler optimizations must be enabled, and the delay time must be an expression that is a known constant at compile-time. If these requirements are not met, the resulting delay will be much longer (and basically unpredictable), and applications that otherwise do not use floating-point calculations will experience severe code bloat by the floating-point library routines linked into the application.
+The functions available allow the specification of microsecond, and millisecond delays directly, using the application-supplied macro F_CPU as the CPU clock frequency (in Hertz). +

+ + + + + + + +

Functions

void _delay_us (double __us)
void _delay_ms (double __ms)
+


Function Documentation

+ +
+
+ + + + + + + + + +
void _delay_ms (double  __ms  ) 
+
+
+ +

+Perform a delay of __ms milliseconds, using _delay_loop_2().

+The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz).

+The maximal possible delay is 262.14 ms / F_CPU in MHz.

+When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency). The user will not be informed about decreased resolution. +

+

+ +

+
+ + + + + + + + + +
void _delay_us (double  __us  ) 
+
+
+ +

+Perform a delay of __us microseconds, using _delay_loop_1().

+The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz).

+The maximal possible delay is 768 us / F_CPU in MHz.

+If the user requests a delay greater than the maximal possible one, _delay_us() will automatically call _delay_ms() instead. The user will not be informed about this case. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__delay__basic.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__delay__basic.html new file mode 100644 index 0000000..a8e8485 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__delay__basic.html @@ -0,0 +1,93 @@ + + + + + avr-libc: <util/delay_basic.h>: Basic busy-wait delay loops + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<util/delay_basic.h>: Basic busy-wait delay loops


Detailed Description

+
    #include <util/delay_basic.h>
+

+The functions in this header file implement simple delay loops that perform a busy-waiting. They are typically used to facilitate short delays in the program execution. They are implemented as count-down loops with a well-known CPU cycle count per loop iteration. As such, no other processing can occur simultaneously. It should be kept in mind that the functions described here do not disable interrupts.

+In general, for long delays, the use of hardware timers is much preferrable, as they free the CPU, and allow for concurrent processing of other events while the timer is running. However, in particular for very short delays, the overhead of setting up a hardware timer is too much compared to the overall delay time.

+Two inline functions are provided for the actual delay algorithms. +

+ + + + + + + +

Functions

void _delay_loop_1 (uint8_t __count)
void _delay_loop_2 (uint16_t __count)
+


Function Documentation

+ +
+
+ + + + + + + + + +
void _delay_loop_1 (uint8_t  __count  ) 
+
+
+ +

+Delay loop using an 8-bit counter __count, so up to 256 iterations are possible. (The value 256 would have to be passed as 0.) The loop executes three CPU cycles per iteration, not including the overhead the compiler needs to setup the counter register.

+Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds can be achieved. +

+

+ +

+
+ + + + + + + + + +
void _delay_loop_2 (uint16_t  __count  ) 
+
+
+ +

+Delay loop using a 16-bit counter __count, so up to 65536 iterations are possible. (The value 65536 would have to be passed as 0.) The loop executes four CPU cycles per iteration, not including the overhead the compiler requires to setup the counter register pair.

+Thus, at a CPU speed of 1 MHz, delays of up to about 262.1 milliseconds can be achieved. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__parity.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__parity.html new file mode 100644 index 0000000..2ab1573 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__parity.html @@ -0,0 +1,84 @@ + + + + + avr-libc: <util/parity.h>: Parity bit generation + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<util/parity.h>: Parity bit generation


Detailed Description

+
 #include <util/parity.h> 
+

+This header file contains optimized assembler code to calculate the parity bit for a byte. +

+ + + + + +

Defines

#define parity_even_bit(val)
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define parity_even_bit (val   ) 
+
+
+ +

+Value:

(__extension__({                                        \
+        unsigned char __t;                              \
+        __asm__ (                                       \
+                "mov __tmp_reg__,%0" "\n\t"             \
+                "swap %0" "\n\t"                        \
+                "eor %0,__tmp_reg__" "\n\t"             \
+                "mov __tmp_reg__,%0" "\n\t"             \
+                "lsr %0" "\n\t"                         \
+                "lsr %0" "\n\t"                         \
+                "eor %0,__tmp_reg__"                    \
+                : "=r" (__t)                            \
+                : "0" ((unsigned char)(val))            \
+                : "r0"                                  \
+        );                                              \
+        (((__t + 1) >> 1) & 1);                         \
+ }))
+
Returns:
1 if val has an odd number of bits set.
+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__setbaud.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__setbaud.html new file mode 100644 index 0000000..a244c72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__setbaud.html @@ -0,0 +1,174 @@ + + + + + avr-libc: <util/setbaud.h>: Helper macros for baud rate calculations + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<util/setbaud.h>: Helper macros for baud rate calculations


Detailed Description

+
   #define F_CPU 11059200
+   #define BAUD 38400
+   #include <util/setbaud.h>
+

+This header file requires that on entry values are already defined for F_CPU and BAUD. In addition, the macro BAUD_TOL will define the baud rate tolerance (in percent) that is acceptable during the calculations. The value of BAUD_TOL will default to 2 %.

+This header file defines macros suitable to setup the UART baud rate prescaler registers of an AVR. All calculations are done using the C preprocessor. Including this header file causes no other side effects so it is possible to include this file more than once (supposedly, with different values for the BAUD parameter), possibly even within the same function.

+Assuming that the requested BAUD is valid for the given F_CPU then the macro UBRR_VALUE is set to the required prescaler value. Two additional macros are provided for the low and high bytes of the prescaler, respectively: UBRRL_VALUE is set to the lower byte of the UBRR_VALUE and UBRRH_VALUE is set to the upper byte. An additional macro USE_2X will be defined. Its value is set to 1 if the desired BAUD rate within the given tolerance could only be achieved by setting the U2X bit in the UART configuration. It will be defined to 0 if U2X is not needed.

+Example usage:

+

   #include <avr/io.h>
+
+   #define F_CPU 4000000
+
+   static void
+   uart_9600(void)
+   {
+   #define BAUD 9600
+   #include <util/setbaud.h>
+   UBRRH = UBRRH_VALUE;
+   UBRRL = UBRRL_VALUE;
+   #if USE_2X
+   UCSRA |= (1 << U2X);
+   #else
+   UCSRA &= ~(1 << U2X);
+   #endif
+   }
+
+   static void
+   uart_38400(void)
+   {
+   #undef BAUD  // avoid compiler warning
+   #define BAUD 38400
+   #include <util/setbaud.h>
+   UBRRH = UBRRH_VALUE;
+   UBRRL = UBRRL_VALUE;
+   #if USE_2X
+   UCSRA |= (1 << U2X);
+   #else
+   UCSRA &= ~(1 << U2X);
+   #endif
+   }
+

+In this example, two functions are defined to setup the UART to run at 9600 Bd, and 38400 Bd, respectively. Using a CPU clock of 4 MHz, 9600 Bd can be achieved with an acceptable tolerance without setting U2X (prescaler 25), while 38400 Bd require U2X to be set (prescaler 12). +

+ + + + + + + + + + + + + +

Defines

#define BAUD_TOL   2
#define UBRR_VALUE
#define UBRRL_VALUE
#define UBRRH_VALUE
#define USE_2X   0
+


Define Documentation

+ +
+
+ + + + +
#define BAUD_TOL   2
+
+
+ +

+Input and output macro for <util/setbaud.h>

+Define the acceptable baud rate tolerance in percent. If not set on entry, it will be set to its default value of 2. +

+

+ +

+
+ + + + +
#define UBRR_VALUE
+
+
+ +

+Output macro from <util/setbaud.h>

+Contains the calculated baud rate prescaler value for the UBRR register. +

+

+ +

+
+ + + + +
#define UBRRH_VALUE
+
+
+ +

+Output macro from <util/setbaud.h>

+Contains the upper byte of the calculated prescaler value (UBRR_VALUE). +

+

+ +

+
+ + + + +
#define UBRRL_VALUE
+
+
+ +

+Output macro from <util/setbaud.h>

+Contains the lower byte of the calculated prescaler value (UBRR_VALUE). +

+

+ +

+
+ + + + +
#define USE_2X   0
+
+
+ +

+Output bacro from <util/setbaud.h>

+Contains the value 1 if the desired baud rate tolerance could only be achieved by setting the U2X bit in the UART configuration. Contains 0 otherwise. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__twi.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__twi.html new file mode 100644 index 0000000..027ed8c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/group__util__twi.html @@ -0,0 +1,597 @@ + + + + + avr-libc: <util/twi.h>: TWI bit mask definitions + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

<util/twi.h>: TWI bit mask definitions


Detailed Description

+
 #include <util/twi.h> 
+

+This header file contains bit mask definitions for use with the AVR TWI interface. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

TWSR values

Mnemonics:
+TW_MT_xxx - master transmitter
+TW_MR_xxx - master receiver
+TW_ST_xxx - slave transmitter
+TW_SR_xxx - slave receiver

#define TW_START   0x08
#define TW_REP_START   0x10
#define TW_MT_SLA_ACK   0x18
#define TW_MT_SLA_NACK   0x20
#define TW_MT_DATA_ACK   0x28
#define TW_MT_DATA_NACK   0x30
#define TW_MT_ARB_LOST   0x38
#define TW_MR_ARB_LOST   0x38
#define TW_MR_SLA_ACK   0x40
#define TW_MR_SLA_NACK   0x48
#define TW_MR_DATA_ACK   0x50
#define TW_MR_DATA_NACK   0x58
#define TW_ST_SLA_ACK   0xA8
#define TW_ST_ARB_LOST_SLA_ACK   0xB0
#define TW_ST_DATA_ACK   0xB8
#define TW_ST_DATA_NACK   0xC0
#define TW_ST_LAST_DATA   0xC8
#define TW_SR_SLA_ACK   0x60
#define TW_SR_ARB_LOST_SLA_ACK   0x68
#define TW_SR_GCALL_ACK   0x70
#define TW_SR_ARB_LOST_GCALL_ACK   0x78
#define TW_SR_DATA_ACK   0x80
#define TW_SR_DATA_NACK   0x88
#define TW_SR_GCALL_DATA_ACK   0x90
#define TW_SR_GCALL_DATA_NACK   0x98
#define TW_SR_STOP   0xA0
#define TW_NO_INFO   0xF8
#define TW_BUS_ERROR   0x00
#define TW_STATUS_MASK
#define TW_STATUS   (TWSR & TW_STATUS_MASK)

R/~W bit in SLA+R/W address field.

#define TW_READ   1
#define TW_WRITE   0
+


Define Documentation

+ +
+
+ + + + +
#define TW_BUS_ERROR   0x00
+
+
+ +

+illegal start or stop condition +

+

+ +

+
+ + + + +
#define TW_MR_ARB_LOST   0x38
+
+
+ +

+arbitration lost in SLA+R or NACK +

+

+ +

+
+ + + + +
#define TW_MR_DATA_ACK   0x50
+
+
+ +

+data received, ACK returned +

+

+ +

+
+ + + + +
#define TW_MR_DATA_NACK   0x58
+
+
+ +

+data received, NACK returned +

+

+ +

+
+ + + + +
#define TW_MR_SLA_ACK   0x40
+
+
+ +

+SLA+R transmitted, ACK received +

+

+ +

+
+ + + + +
#define TW_MR_SLA_NACK   0x48
+
+
+ +

+SLA+R transmitted, NACK received +

+

+ +

+
+ + + + +
#define TW_MT_ARB_LOST   0x38
+
+
+ +

+arbitration lost in SLA+W or data +

+

+ +

+
+ + + + +
#define TW_MT_DATA_ACK   0x28
+
+
+ +

+data transmitted, ACK received +

+

+ +

+
+ + + + +
#define TW_MT_DATA_NACK   0x30
+
+
+ +

+data transmitted, NACK received +

+

+ +

+
+ + + + +
#define TW_MT_SLA_ACK   0x18
+
+
+ +

+SLA+W transmitted, ACK received +

+

+ +

+
+ + + + +
#define TW_MT_SLA_NACK   0x20
+
+
+ +

+SLA+W transmitted, NACK received +

+

+ +

+
+ + + + +
#define TW_NO_INFO   0xF8
+
+
+ +

+no state information available +

+

+ +

+
+ + + + +
#define TW_READ   1
+
+
+ +

+SLA+R address +

+

+ +

+
+ + + + +
#define TW_REP_START   0x10
+
+
+ +

+repeated start condition transmitted +

+

+ +

+
+ + + + +
#define TW_SR_ARB_LOST_GCALL_ACK   0x78
+
+
+ +

+arbitration lost in SLA+RW, general call received, ACK returned +

+

+ +

+
+ + + + +
#define TW_SR_ARB_LOST_SLA_ACK   0x68
+
+
+ +

+arbitration lost in SLA+RW, SLA+W received, ACK returned +

+

+ +

+
+ + + + +
#define TW_SR_DATA_ACK   0x80
+
+
+ +

+data received, ACK returned +

+

+ +

+
+ + + + +
#define TW_SR_DATA_NACK   0x88
+
+
+ +

+data received, NACK returned +

+

+ +

+
+ + + + +
#define TW_SR_GCALL_ACK   0x70
+
+
+ +

+general call received, ACK returned +

+

+ +

+
+ + + + +
#define TW_SR_GCALL_DATA_ACK   0x90
+
+
+ +

+general call data received, ACK returned +

+

+ +

+
+ + + + +
#define TW_SR_GCALL_DATA_NACK   0x98
+
+
+ +

+general call data received, NACK returned +

+

+ +

+
+ + + + +
#define TW_SR_SLA_ACK   0x60
+
+
+ +

+SLA+W received, ACK returned +

+

+ +

+
+ + + + +
#define TW_SR_STOP   0xA0
+
+
+ +

+stop or repeated start condition received while selected +

+

+ +

+
+ + + + +
#define TW_ST_ARB_LOST_SLA_ACK   0xB0
+
+
+ +

+arbitration lost in SLA+RW, SLA+R received, ACK returned +

+

+ +

+
+ + + + +
#define TW_ST_DATA_ACK   0xB8
+
+
+ +

+data transmitted, ACK received +

+

+ +

+
+ + + + +
#define TW_ST_DATA_NACK   0xC0
+
+
+ +

+data transmitted, NACK received +

+

+ +

+
+ + + + +
#define TW_ST_LAST_DATA   0xC8
+
+
+ +

+last data byte transmitted, ACK received +

+

+ +

+
+ + + + +
#define TW_ST_SLA_ACK   0xA8
+
+
+ +

+SLA+R received, ACK returned +

+

+ +

+
+ + + + +
#define TW_START   0x08
+
+
+ +

+start condition transmitted +

+

+ +

+
+ + + + +
#define TW_STATUS   (TWSR & TW_STATUS_MASK)
+
+
+ +

+TWSR, masked by TW_STATUS_MASK +

+

+ +

+
+ + + + +
#define TW_STATUS_MASK
+
+
+ +

+Value:

(_BV(TWS7)|_BV(TWS6)|_BV(TWS5)|_BV(TWS4)|\
+                                _BV(TWS3))
+
The lower 3 bits of TWSR are reserved on the ATmega163. The 2 LSB carry the prescaler bits on the newer ATmegas. +
+

+ +

+
+ + + + +
#define TW_WRITE   0
+
+
+ +

+SLA+W address +

+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/index.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/index.html new file mode 100644 index 0000000..0cc2836 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/index.html @@ -0,0 +1,172 @@ + + + + + avr-libc: AVR Libc + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

AVR Libc

+

+

1.6.4

+Introduction

+The latest version of this document is always available from http://savannah.nongnu.org/projects/avr-libc/

+The AVR Libc package provides a subset of the standard C library for Atmel AVR 8-bit RISC microcontrollers. In addition, the library provides the basic startup code needed by most applications.

+There is a wealth of information in this document which goes beyond simply describing the interfaces and routines provided by the library. We hope that this document provides enough information to get a new AVR developer up to speed quickly using the freely available development tools: binutils, gcc avr-libc and many others.

+If you find yourself stuck on a problem which this document doesn't quite address, you may wish to post a message to the avr-gcc mailing list. Most of the developers of the AVR binutils and gcc ports in addition to the devleopers of avr-libc subscribe to the list, so you will usually be able to get your problem resolved. You can subscribe to the list at http://lists.nongnu.org/mailman/listinfo/avr-gcc-list . Before posting to the list, you might want to try reading the Frequently Asked Questions chapter of this document.

+

Note:
If you think you've found a bug, or have a suggestion for an improvement, either in this documentation or in the library itself, please use the bug tracker at https://savannah.nongnu.org/bugs/?group=avr-libc to ensure the issue won't be forgotten.
+

+General information about this library

+In general, it has been the goal to stick as best as possible to established standards while implementing this library. Commonly, this refers to the C library as described by the ANSI X3.159-1989 and ISO/IEC 9899:1990 ("ANSI-C") standard, as well as parts of their successor ISO/IEC 9899:1999 ("C99"). Some additions have been inspired by other standards like IEEE Std 1003.1-1988 ("POSIX.1"), while other extensions are purely AVR-specific (like the entire program-space string interface).

+Unless otherwise noted, functions of this library are not guaranteed to be reentrant. In particular, any functions that store local state are known to be non-reentrant, as well as functions that manipulate IO registers like the EEPROM access routines. If these functions are used within both standard and interrupt contexts undefined behaviour will result. See the FAQ for a more detailed discussion.

+Supported Devices

+

+The following is a list of AVR devices currently supported by the library. Note that actual support for some newer devices depends on the ability of the compiler/assembler to support these devices at library compile-time.

+

megaAVR Devices:
+
    +
  • atmega103
  • atmega128
  • atmega1280
  • atmega1281
  • atmega1284p
  • atmega16
  • atmega161
  • atmega162
  • atmega163
  • atmega164p
  • atmega165
  • atmega165p
  • atmega168
  • atmega168p
  • atmega2560
  • atmega2561
  • atmega32
  • atmega323
  • atmega324p
  • atmega325
  • atmega325p
  • atmega3250
  • atmega3250p
  • atmega328p
  • atmega48
  • atmega48p
  • atmega64
  • atmega640
  • atmega644
  • atmega644p
  • atmega645
  • atmega6450
  • atmega8
  • atmega88
  • atmega88p
  • atmega8515
  • atmega8535
+

+

tinyAVR Devices:
+
    +
  • attiny11 [1]
  • attiny12 [1]
  • attiny13
  • attiny13a
  • attiny15 [1]
  • attiny22
  • attiny24
  • attiny25
  • attiny26
  • attiny261
  • attiny28 [1]
  • attiny2313
  • attiny43u
  • attiny44
  • attiny45
  • attiny461
  • attiny48
  • attiny84
  • attiny85
  • attiny861
  • attiny88
+

+

Automotive AVR Devices:
    +
  • atmega32c1
  • atmega32m1
  • attiny167
+
+
CAN AVR Devices:
+
    +
  • at90can32
  • at90can64
  • at90can128
+

+

LCD AVR Devices:
+
    +
  • atmega169
  • atmega169p
  • atmega329
  • atmega329p
  • atmega3290
  • atmega3290p
  • atmega649
  • atmega6490
+

+

Lighting AVR Devices:
+
    +
  • at90pwm1
  • at90pwm2
  • at90pwm2b
  • at90pwm216
  • at90pwm3
  • at90pwm3b
  • at90pwm316
+

+

Smart Battery AVR Devices:
+
    +
  • atmega8hva
  • atmega16hva
  • atmega32hvb
  • atmega406
+

+

USB AVR Devices:
+
    +
  • at90usb82
  • at90usb162
  • at90usb646
  • at90usb647
  • at90usb1286
  • at90usb1287
  • atmega32u4
  • atmega32u6
+

+

XMEGA Devices:
+
    +
  • atxmega64a1
  • atxmega64a3
  • atxmega128a1
  • atxmega128a3
  • atxmega256a3
  • atxmega256a3b
+

+

Miscellaneous Devices:
+
    +
  • at94K [2]
  • at76c711 [3]
  • at43usb320
  • at43usb355
  • at86rf401
+

+

Classic AVR Devices:
+
    +
  • at90s1200 [1]
  • at90s2313
  • at90s2323
  • at90s2333
  • at90s2343
  • at90s4414
  • at90s4433
  • at90s4434
  • at90s8515
  • at90c8534
  • at90s8535
+

+

+

Note:
[1] Assembly only. There is no direct support for these devices to be programmed in C since they do not have a RAM based stack. Still, it could be possible to program them in C, see the FAQ for an option.
+

+

Note:
[2] The at94K devices are a combination of FPGA and AVR microcontroller. [TRoth-2002/11/12: Not sure of the level of support for these. More information would be welcomed.]
+

+

Note:
[3] The at76c711 is a USB to fast serial interface bridge chip using an AVR core.
+

+avr-libc License

+avr-libc can be freely used and redistributed, provided the following license conditions are met.

+

+Portions of avr-libc are Copyright (c) 1999-2008
+Werner Boellmann,
+Dean Camera,
+Pieter Conradie,
+Brian Dean,
+Keith Gudger,
+Wouter van Gulik,
+Bjoern Haase,
+Steinar Haugen,
+Peter Jansen,
+Reinhard Jessich,
+Magnus Johansson,
+Harald Kipp,
+Carlos Lamas,
+Cliff Lawson,
+Artur Lipowski,
+Marek Michalkiewicz,
+Todd C. Miller,
+Rich Neswold,
+Colin O'Flynn,
+Bob Paddock,
+Andrey Pashchenko,
+Reiner Patommel,
+Florin-Viorel Petrov,
+Alexander Popov,
+Michael Rickman,
+Theodore A. Roth,
+Juergen Schilling,
+Philip Soeberg,
+Anatoly Sokolov,
+Nils Kristian Strom,
+Michael Stumpf,
+Stefan Swanepoel,
+Helmut Wallner,
+Eric B. Weddington,
+Joerg Wunsch,
+Dmitry Xmelkov,
+Atmel Corporation,
+egnite Software GmbH,
+The Regents of the University of California. 
+All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+
+   * Neither the name of the copyright holders nor the names of
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/inline_asm.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/inline_asm.html new file mode 100644 index 0000000..5702359 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/inline_asm.html @@ -0,0 +1,446 @@ + + + + + avr-libc: Inline Assembler Cookbook + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Inline Assembler Cookbook

AVR-GCC
+ Inline Assembler Cookbook

+About this Document

+The GNU C compiler for Atmel AVR RISC processors offers, to embed assembly language code into C programs. This cool feature may be used for manually optimizing time critical parts of the software or to use specific processor instruction, which are not available in the C language.

+Because of a lack of documentation, especially for the AVR version of the compiler, it may take some time to figure out the implementation details by studying the compiler and assembler source code. There are also a few sample programs available in the net. Hopefully this document will help to increase their number.

+It's assumed, that you are familiar with writing AVR assembler programs, because this is not an AVR assembler programming tutorial. It's not a C language tutorial either.

+Note that this document does not cover file written completely in assembler language, refer to avr-libc and assembler programs for this.

+Copyright (C) 2001-2002 by egnite Software GmbH

+Permission is granted to copy and distribute verbatim copies of this manual provided that the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

+This document describes version 3.3 of the compiler. There may be some parts, which hadn't been completely understood by the author himself and not all samples had been tested so far. Because the author is German and not familiar with the English language, there are definitely some typos and syntax errors in the text. As a programmer the author knows, that a wrong documentation sometimes might be worse than none. Anyway, he decided to offer his little knowledge to the public, in the hope to get enough response to improve this document. Feel free to contact the author via e-mail. For the latest release check http://www.ethernut.de/.

+Herne, 17th of May 2002 Harald Kipp harald.kipp-at-egnite.de

+

Note:
As of 26th of July 2002, this document has been merged into the documentation for avr-libc. The latest version is now available at http://savannah.nongnu.org/projects/avr-libc/.
+

+GCC asm Statement

+Let's start with a simple example of reading a value from port D:

+

asm("in %0, %1" : "=r" (value) : "I" (_SFR_IO_ADDR(PORTD)) );
+

+Each asm statement is devided by colons into (up to) four parts:

+

    +
  1. The assembler instructions, defined as a single string constant:
     "in %0, %1" 
    +
  2. A list of output operands, separated by commas. Our example uses just one:
     "=r" (value) 
    +
  3. A comma separated list of input operands. Again our example uses one operand only:
     "I" (_SFR_IO_ADDR(PORTD)) 
    +
  4. Clobbered registers, left empty in our example.
+

+You can write assembler instructions in much the same way as you would write assembler programs. However, registers and constants are used in a different way if they refer to expressions of your C program. The connection between registers and C operands is specified in the second and third part of the asm instruction, the list of input and output operands, respectively. The general form is

+

asm(code : output operand list : input operand list [: clobber list]);
+

+In the code section, operands are referenced by a percent sign followed by a single digit. 0 refers to the first 1 to the second operand and so forth. From the above example:

+0 refers to "=r" (value) and
+ 1 refers to "I" (_SFR_IO_ADDR(PORTD)).

+This may still look a little odd now, but the syntax of an operand list will be explained soon. Let us first examine the part of a compiler listing which may have been generated from our example:

+

        lds r24,value
+/* #APP */
+        in r24, 12
+/* #NOAPP */
+        sts value,r24
+

+The comments have been added by the compiler to inform the assembler that the included code was not generated by the compilation of C statements, but by inline assembler statements. The compiler selected register r24 for storage of the value read from PORTD. The compiler could have selected any other register, though. It may not explicitely load or store the value and it may even decide not to include your assembler code at all. All these decisions are part of the compiler's optimization strategy. For example, if you never use the variable value in the remaining part of the C program, the compiler will most likely remove your code unless you switched off optimization. To avoid this, you can add the volatile attribute to the asm statement:

+

asm volatile("in %0, %1" : "=r" (value) : "I" (_SFR_IO_ADDR(PORTD)));
+

+Alternatively, operands can be given names. The name is prepended in brackets to the constraints in the operand list, and references to the named operand use the bracketed name instead of a number after the % sign. Thus, the above example could also be written as

+

asm("in %[retval], %[port]" :
+    [retval] "=r" (value) :
+    [port] "I" (_SFR_IO_ADDR(PORTD)) );
+

+The last part of the asm instruction, the clobber list, is mainly used to tell the compiler about modifications done by the assembler code. This part may be omitted, all other parts are required, but may be left empty. If your assembler routine won't use any input or output operand, two colons must still follow the assembler code string. A good example is a simple statement to disable interrupts:

+

asm volatile("cli"::);
+

+Assembler Code

+You can use the same assembler instruction mnemonics as you'd use with any other AVR assembler. And you can write as many assembler statements into one code string as you like and your flash memory is able to hold.

+

Note:
The available assembler directives vary from one assembler to another.
+To make it more readable, you should put each statement on a seperate line:

+

asm volatile("nop\n\t"
+             "nop\n\t"
+             "nop\n\t"
+             "nop\n\t"
+             ::);
+

+The linefeed and tab characters will make the assembler listing generated by the compiler more readable. It may look a bit odd for the first time, but that's the way the compiler creates it's own assembler code.

+You may also make use of some special registers.

+ + + + + + + + + + + + + +
Symbol Register
__SREG__ Status register at address 0x3F
__SP_H__ Stack pointer high byte at address 0x3E
__SP_L__ Stack pointer low byte at address 0x3D
__tmp_reg__ Register r0, used for temporary storage
__zero_reg__ Register r1, always zero
+

+Register r0 may be freely used by your assembler code and need not be restored at the end of your code. It's a good idea to use __tmp_reg__ and __zero_reg__ instead of r0 or r1, just in case a new compiler version changes the register usage definitions.

+Input and Output Operands

+Each input and output operand is described by a constraint string followed by a C expression in parantheses. AVR-GCC 3.3 knows the following constraint characters:

+

Note:
The most up-to-date and detailed information on contraints for the avr can be found in the gcc manual.

+The x register is r27:r26, the y register is r29:r28, and the z register is r31:r30

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstraintUsed forRange
aSimple upper registersr16 to r23
bBase pointer registers pairsy, z
dUpper registerr16 to r31
ePointer register pairsx, y, z
qStack pointer registerSPH:SPL
rAny registerr0 to r31
tTemporary registerr0
wSpecial upper register pairsr24, r26, r28, r30
xPointer register pair Xx (r27:r26)
yPointer register pair Yy (r29:r28)
zPointer register pair Zz (r31:r30)
GFloating point constant0.0
I6-bit positive integer constant0 to 63
J6-bit negative integer constant-63 to 0
KInteger constant2
LInteger constant0
lLower registersr0 to r15
M8-bit integer constant0 to 255
NInteger constant-1
OInteger constant8, 16, 24
PInteger constant1
Q(GCC >= 4.2.x) A memory address based on Y or Z pointer with displacement. 
R(GCC >= 4.3.x) Integer constant.-6 to 5
+

+The selection of the proper contraint depends on the range of the constants or registers, which must be acceptable to the AVR instruction they are used with. The C compiler doesn't check any line of your assembler code. But it is able to check the constraint against your C expression. However, if you specify the wrong constraints, then the compiler may silently pass wrong code to the assembler. And, of course, the assembler will fail with some cryptic output or internal errors. For example, if you specify the constraint "r" and you are using this register with an "ori" instruction in your assembler code, then the compiler may select any register. This will fail, if the compiler chooses r2 to r15. (It will never choose r0 or r1, because these are uses for special purposes.) That's why the correct constraint in that case is "d". On the other hand, if you use the constraint "M", the compiler will make sure that you don't pass anything else but an 8-bit value. Later on we will see how to pass multibyte expression results to the assembler code.

+The following table shows all AVR assembler mnemonics which require operands, and the related contraints. Because of the improper constraint definitions in version 3.3, they aren't strict enough. There is, for example, no constraint, which restricts integer constants to the range 0 to 7 for bit set and bit clear operations.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mnemonic Constraints Mnemonic Constraints
adc r,r add r,r
adiw w,I and r,r
andi d,M asr r
bclr I bld r,I
brbc I,label brbs I,label
bset I bst r,I
cbi I,I cbr d,I
com r cp r,r
cpc r,r cpi d,M
cpse r,r dec r
elpm t,z eor r,r
in r,I inc r
ld r,e ldd r,b
ldi d,M lds r,label
lpm t,z lsl r
lsr r mov r,r
movw r,r mul r,r
neg r or r,r
ori d,M out I,r
pop r push r
rol r ror r
sbc r,r sbci d,M
sbi I,I sbic I,I
sbiw w,I sbr d,M
sbrc r,I sbrs r,I
ser d st e,r
std b,r sts label,r
sub r,r subi d,M
swap r
+

+Constraint characters may be prepended by a single constraint modifier. Contraints without a modifier specify read-only operands. Modifiers are:

+ + + + + + + + + +
Modifier Specifies
= Write-only operand, usually used for all output operands.
+ Read-write operand
& Register should be used for output only
+

+Output operands must be write-only and the C expression result must be an lvalue, which means that the operands must be valid on the left side of assignments. Note, that the compiler will not check if the operands are of reasonable type for the kind of operation used in the assembler instructions.

+Input operands are, you guessed it, read-only. But what if you need the same operand for input and output? As stated above, read-write operands are not supported in inline assembler code. But there is another solution. For input operators it is possible to use a single digit in the constraint string. Using digit n tells the compiler to use the same register as for the n-th operand, starting with zero. Here is an example:

+

asm volatile("swap %0" : "=r" (value) : "0" (value));
+

+This statement will swap the nibbles of an 8-bit variable named value. Constraint "0" tells the compiler, to use the same input register as for the first operand. Note however, that this doesn't automatically imply the reverse case. The compiler may choose the same registers for input and output, even if not told to do so. This is not a problem in most cases, but may be fatal if the output operator is modified by the assembler code before the input operator is used. In the situation where your code depends on different registers used for input and output operands, you must add the & constraint modifier to your output operand. The following example demonstrates this problem:

+

asm volatile("in %0,%1"    "\n\t"
+             "out %1, %2"  "\n\t" 
+             : "=&r" (input) 
+             : "I" (_SFR_IO_ADDR(port)), "r" (output)
+            );
+

+In this example an input value is read from a port and then an output value is written to the same port. If the compiler would have choosen the same register for input and output, then the output value would have been destroyed on the first assembler instruction. Fortunately, this example uses the & constraint modifier to instruct the compiler not to select any register for the output value, which is used for any of the input operands. Back to swapping. Here is the code to swap high and low byte of a 16-bit value:

+

asm volatile("mov __tmp_reg__, %A0" "\n\t"
+             "mov %A0, %B0"         "\n\t"
+             "mov %B0, __tmp_reg__" "\n\t"
+             : "=r" (value)
+             : "0" (value)
+            );
+

+First you will notice the usage of register __tmp_reg__, which we listed among other special registers in the Assembler Code section. You can use this register without saving its contents. Completely new are those letters A and B in %A0 and %B0. In fact they refer to two different 8-bit registers, both containing a part of value.

+Another example to swap bytes of a 32-bit value:

+

asm volatile("mov __tmp_reg__, %A0" "\n\t"
+             "mov %A0, %D0"         "\n\t"
+             "mov %D0, __tmp_reg__" "\n\t"
+             "mov __tmp_reg__, %B0" "\n\t"
+             "mov %B0, %C0"         "\n\t"
+             "mov %C0, __tmp_reg__" "\n\t"
+             : "=r" (value)
+             : "0" (value)
+            );
+

+Instead of listing the same operand as both, input and output operand, it can also be declared as a read-write operand. This must be applied to an output operand, and the respective input operand list remains empty:

+

asm volatile("mov __tmp_reg__, %A0" "\n\t"
+             "mov %A0, %D0"         "\n\t"
+             "mov %D0, __tmp_reg__" "\n\t"
+             "mov __tmp_reg__, %B0" "\n\t"
+             "mov %B0, %C0"         "\n\t"
+             "mov %C0, __tmp_reg__" "\n\t"
+             : "+r" (value));
+

+If operands do not fit into a single register, the compiler will automatically assign enough registers to hold the entire operand. In the assembler code you use %A0 to refer to the lowest byte of the first operand, %A1 to the lowest byte of the second operand and so on. The next byte of the first operand will be %B0, the next byte %C0 and so on.

+This also implies, that it is often neccessary to cast the type of an input operand to the desired size.

+A final problem may arise while using pointer register pairs. If you define an input operand

+

"e" (ptr)
+

+and the compiler selects register Z (r30:r31), then

+%A0 refers to r30 and
+ %B0 refers to r31.

+But both versions will fail during the assembly stage of the compiler, if you explicitely need Z, like in

+

ld r24,Z
+

+If you write

+

ld r24, %a0
+

+with a lower case a following the percent sign, then the compiler will create the proper assembler line.

+Clobbers

+As stated previously, the last part of the asm statement, the list of clobbers, may be omitted, including the colon seperator. However, if you are using registers, which had not been passed as operands, you need to inform the compiler about this. The following example will do an atomic increment. It increments an 8-bit value pointed to by a pointer variable in one go, without being interrupted by an interrupt routine or another thread in a multithreaded environment. Note, that we must use a pointer, because the incremented value needs to be stored before interrupts are enabled.

+

asm volatile(
+    "cli"               "\n\t"
+    "ld r24, %a0"       "\n\t"
+    "inc r24"           "\n\t"
+    "st %a0, r24"       "\n\t"
+    "sei"               "\n\t"
+    :
+    : "e" (ptr)
+    : "r24"
+);
+

+The compiler might produce the following code:

+

    cli
+    ld r24, Z
+    inc r24
+    st Z, r24
+    sei
+

+One easy solution to avoid clobbering register r24 is, to make use of the special temporary register __tmp_reg__ defined by the compiler.

+

asm volatile(
+    "cli"                       "\n\t"
+    "ld __tmp_reg__, %a0"       "\n\t"
+    "inc __tmp_reg__"           "\n\t"
+    "st %a0, __tmp_reg__"       "\n\t"
+    "sei"                       "\n\t"
+    :
+    : "e" (ptr)
+);
+

+The compiler is prepared to reload this register next time it uses it. Another problem with the above code is, that it should not be called in code sections, where interrupts are disabled and should be kept disabled, because it will enable interrupts at the end. We may store the current status, but then we need another register. Again we can solve this without clobbering a fixed, but let the compiler select it. This could be done with the help of a local C variable.

+

{
+    uint8_t s;
+    asm volatile(
+        "in %0, __SREG__"           "\n\t"
+        "cli"                       "\n\t"
+        "ld __tmp_reg__, %a1"       "\n\t"
+        "inc __tmp_reg__"           "\n\t"
+        "st %a1, __tmp_reg__"       "\n\t"
+        "out __SREG__, %0"          "\n\t"
+        : "=&r" (s)
+        : "e" (ptr)
+    );
+}
+

+Now every thing seems correct, but it isn't really. The assembler code modifies the variable, that ptr points to. The compiler will not recognize this and may keep its value in any of the other registers. Not only does the compiler work with the wrong value, but the assembler code does too. The C program may have modified the value too, but the compiler didn't update the memory location for optimization reasons. The worst thing you can do in this case is:

+

{
+    uint8_t s;
+    asm volatile(
+        "in %0, __SREG__"           "\n\t"
+        "cli"                       "\n\t"
+        "ld __tmp_reg__, %a1"       "\n\t"
+        "inc __tmp_reg__"           "\n\t"
+        "st %a1, __tmp_reg__"       "\n\t"
+        "out __SREG__, %0"          "\n\t"
+        : "=&r" (s)
+        : "e" (ptr)
+        : "memory"
+    );
+}
+

+The special clobber "memory" informs the compiler that the assembler code may modify any memory location. It forces the compiler to update all variables for which the contents are currently held in a register before executing the assembler code. And of course, everything has to be reloaded again after this code.

+In most situations, a much better solution would be to declare the pointer destination itself volatile:

+

volatile uint8_t *ptr;
+

+This way, the compiler expects the value pointed to by ptr to be changed and will load it whenever used and store it whenever modified.

+Situations in which you need clobbers are very rare. In most cases there will be better ways. Clobbered registers will force the compiler to store their values before and reload them after your assembler code. Avoiding clobbers gives the compiler more freedom while optimizing your code.

+Assembler Macros

+In order to reuse your assembler language parts, it is useful to define them as macros and put them into include files. AVR Libc comes with a bunch of them, which could be found in the directory avr/include. Using such include files may produce compiler warnings, if they are used in modules, which are compiled in strict ANSI mode. To avoid that, you can write __asm__ instead of asm and __volatile__ instead of volatile. These are equivalent aliases.

+Another problem with reused macros arises if you are using labels. In such cases you may make use of the special pattern =, which is replaced by a unique number on each asm statement. The following code had been taken from avr/include/iomacros.h:

+

#define loop_until_bit_is_clear(port,bit)  \
+        __asm__ __volatile__ (             \
+        "L_%=: " "sbic %0, %1" "\n\t"      \
+                 "rjmp L_%="               \
+                 : /* no outputs */        
+                 : "I" (_SFR_IO_ADDR(port)),  
+                   "I" (bit)    
+        )
+

+When used for the first time, L_= may be translated to L_1404, the next usage might create L_1405 or whatever. In any case, the labels became unique too.

+Another option is to use Unix-assembler style numeric labels. They are explained in How do I trace an assembler file in avr-gdb?. The above example would then look like:

+

#define loop_until_bit_is_clear(port,bit)  
+        __asm__ __volatile__ (             
+        "1: " "sbic %0, %1" "\n\t"      
+                 "rjmp 1b"               
+                 : /* no outputs */        
+                 : "I" (_SFR_IO_ADDR(port)),  
+                   "I" (bit)    
+        )
+

+C Stub Functions

+Macro definitions will include the same assembler code whenever they are referenced. This may not be acceptable for larger routines. In this case you may define a C stub function, containing nothing other than your assembler code.

+

void delay(uint8_t ms)
+{
+    uint16_t cnt;
+    asm volatile (
+        "\n"
+        "L_dl1%=:" "\n\t"
+        "mov %A0, %A2" "\n\t"
+        "mov %B0, %B2" "\n"
+        "L_dl2%=:" "\n\t"
+        "sbiw %A0, 1" "\n\t"
+        "brne L_dl2%=" "\n\t"
+        "dec %1" "\n\t"
+        "brne L_dl1%=" "\n\t"
+        : "=&w" (cnt)
+        : "r" (ms), "r" (delay_count)
+        );
+}
+

+The purpose of this function is to delay the program execution by a specified number of milliseconds using a counting loop. The global 16 bit variable delay_count must contain the CPU clock frequency in Hertz divided by 4000 and must have been set before calling this routine for the first time. As described in the clobber section, the routine uses a local variable to hold a temporary value.

+Another use for a local variable is a return value. The following function returns a 16 bit value read from two successive port addresses.

+

uint16_t inw(uint8_t port)
+{
+    uint16_t result;
+    asm volatile (
+        "in %A0,%1" "\n\t"
+        "in %B0,(%1) + 1"
+        : "=r" (result)
+        : "I" (_SFR_IO_ADDR(port))
+        );
+    return result;
+}
+

+

Note:
inw() is supplied by avr-libc.
+

+C Names Used in Assembler Code

+By default AVR-GCC uses the same symbolic names of functions or variables in C and assembler code. You can specify a different name for the assembler code by using a special form of the asm statement:

+

unsigned long value asm("clock") = 3686400;
+

+This statement instructs the compiler to use the symbol name clock rather than value. This makes sense only for external or static variables, because local variables do not have symbolic names in the assembler code. However, local variables may be held in registers.

+With AVR-GCC you can specify the use of a specific register:

+

void Count(void)
+{
+    register unsigned char counter asm("r3");
+
+    ... some code...
+    asm volatile("clr r3");
+    ... more code...
+}
+

+The assembler instruction, "clr r3", will clear the variable counter. AVR-GCC will not completely reserve the specified register. If the optimizer recognizes that the variable will not be referenced any longer, the register may be re-used. But the compiler is not able to check wether this register usage conflicts with any predefined register. If you reserve too many registers in this way, the compiler may even run out of registers during code generation.

+In order to change the name of a function, you need a prototype declaration, because the compiler will not accept the asm keyword in the function definition:

+

extern long Calc(void) asm ("CALCULATE");
+

+Calling the function Calc() will create assembler instructions to call the function CALCULATE.

+Links

+For a more thorough discussion of inline assembly usage, see the gcc user manual. The latest version of the gcc manual is always available here: http://gcc.gnu.org/onlinedocs/
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/install_tools.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/install_tools.html new file mode 100644 index 0000000..b25b6a6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/install_tools.html @@ -0,0 +1,500 @@ + + + + + avr-libc: Building and Installing the GNU Tool Chain + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Building and Installing the GNU Tool Chain

+This chapter shows how to build and install, from source code, a complete development environment for the AVR processors using the GNU toolset. There are two main sections, one for Linux, FreeBSD, and other Unix-like operating systems, and another section for Windows.

+Building and Installing under Linux, FreeBSD, and Others

+The default behaviour for most of these tools is to install every thing under the /usr/local directory. In order to keep the AVR tools separate from the base system, it is usually better to install everything into /usr/local/avr. If the /usr/local/avr directory does not exist, you should create it before trying to install anything. You will need root access to install there. If you don't have root access to the system, you can alternatively install in your home directory, for example, in $HOME/local/avr. Where you install is a completely arbitrary decision, but should be consistent for all the tools.

+You specify the installation directory by using the --prefix=dir option with the configure script. It is important to install all the AVR tools in the same directory or some of the tools will not work correctly. To ensure consistency and simplify the discussion, we will use $PREFIX to refer to whatever directory you wish to install in. You can set this as an environment variable if you wish as such (using a Bourne-like shell):

+

+$ PREFIX=$HOME/local/avr
+$ export PREFIX
+

+

Note:
Be sure that you have your PATH environment variable set to search the directory you install everything in before you start installing anything. For example, if you use --prefix=$PREFIX, you must have $PREFIX/bin in your exported PATH. As such:
+
+$ PATH=$PATH:$PREFIX/bin
+$ export PATH
+

+

Warning:
If you have CC set to anything other than avr-gcc in your environment, this will cause the configure script to fail. It is best to not have CC set at all.
+
Note:
It is usually the best to use the latest released version of each of the tools.
+

+Required Tools

+

+

+

+

+

+

+

+Optional Tools

+

+You can develop programs for AVR devices without the following tools. They may or may not be of use for you.

+

+

+

+

+

+

+

+

+GNU Binutils for the AVR target

+

+The binutils package provides all the low-level utilities needed in building and manipulating object files. Once installed, your environment will have an AVR assembler (avr-as), linker (avr-ld), and librarian (avr-ar and avr-ranlib). In addition, you get tools which extract data from object files (avr-objcopy), dissassemble object file information (avr-objdump), and strip information from object files (avr-strip). Before we can build the C compiler, these tools need to be in place.

+Download and unpack the source files:

+

+$ bunzip2 -c binutils-<version>.tar.bz2 | tar xf -
+$ cd binutils-<version>
+

+

Note:
Replace <version> with the version of the package you downloaded.

+If you obtained a gzip compressed file (.gz), use gunzip instead of bunzip2.

+It is usually a good idea to configure and build binutils in a subdirectory so as not to pollute the source with the compiled files. This is recommended by the binutils developers.

+

+$ mkdir obj-avr
+$ cd obj-avr
+

+The next step is to configure and build the tools. This is done by supplying arguments to the configure script that enable the AVR-specific options.

+

+$ ../configure --prefix=$PREFIX --target=avr --disable-nls
+

+If you don't specify the --prefix option, the tools will get installed in the /usr/local hierarchy (i.e. the binaries will get installed in /usr/local/bin, the info pages get installed in /usr/local/info, etc.) Since these tools are changing frequently, It is preferrable to put them in a location that is easily removed.

+When configure is run, it generates a lot of messages while it determines what is available on your operating system. When it finishes, it will have created several Makefiles that are custom tailored to your platform. At this point, you can build the project.

+

+$ make
+

+

Note:
BSD users should note that the project's Makefile uses GNU make syntax. This means FreeBSD users may need to build the tools by using gmake.
+If the tools compiled cleanly, you're ready to install them. If you specified a destination that isn't owned by your account, you'll need root access to install them. To install:

+

+$ make install
+

+You should now have the programs from binutils installed into $PREFIX/bin. Don't forget to set your PATH environment variable before going to build avr-gcc.

+

Note:
The official version of binutils might lack support for recent AVR devices. A patch that adds more AVR types can be found at http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-binutils/files/patch-newdevices
+

+GCC for the AVR target

+

+

Warning:
You must install avr-binutils and make sure your path is set properly before installing avr-gcc.
+The steps to build avr-gcc are essentially same as for binutils:

+

+$ bunzip2 -c gcc-<version>.tar.bz2 | tar xf -
+$ cd gcc-<version>
+$ mkdir obj-avr
+$ cd obj-avr
+$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ \
+    --disable-nls --disable-libssp --with-dwarf2
+$ make
+$ make install
+

+To save your self some download time, you can alternatively download only the gcc-core-<version>.tar.bz2 and gcc-c++-<version>.tar.bz2 parts of the gcc. Also, if you don't need C++ support, you only need the core part and should only enable the C language support.

+

Note:
Early versions of these tools did not support C++.

+The stdc++ libs are not included with C++ for AVR due to the size limitations of the devices.

+The official version of GCC might lack support for recent AVR devices. A patch that adds more AVR types can be found at http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files/patch-newdevices

+

+AVR Libc

+

+

Warning:
You must install avr-binutils, avr-gcc and make sure your path is set properly before installing avr-libc.
+
Note:
If you have obtained the latest avr-libc from cvs, you will have to run the bootstrap script before using either of the build methods described below.
+To build and install avr-libc:

+

+$ gunzip -c avr-libc-<version>.tar.gz | tar xf -
+$ cd avr-libc-<version>
+$ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
+$ make
+$ make install
+

+AVRDUDE

+

+

Note:
It has been ported to windows (via MinGW or cygwin), Linux and Solaris. Other Unix systems should be trivial to port to.
+avrdude is part of the FreeBSD ports system. To install it, simply do the following:

+

+# cd /usr/ports/devel/avrdude
+# make install
+

+

Note:
Installation into the default location usually requires root permissions. However, running the program only requires access permissions to the appropriate ppi(4) device.
+Building and installing on other systems should use the configure system, as such:

+

+$ gunzip -c avrdude-<version>.tar.gz | tar xf -
+$ cd avrdude-<version>
+$ mkdir obj-avr
+$ cd obj-avr
+$ ../configure --prefix=$PREFIX
+$ make
+$ make install
+

+GDB for the AVR target

+

+GDB also uses the configure system, so to build and install:

+

+$ bunzip2 -c gdb-<version>.tar.bz2 | tar xf -
+$ cd gdb-<version>
+$ mkdir obj-avr
+$ cd obj-avr
+$ ../configure --prefix=$PREFIX --target=avr
+$ make
+$ make install
+

+

Note:
If you are planning on using avr-gdb, you will probably want to install either simulavr or avarice since avr-gdb needs one of these to run as a a remote target backend.
+

+SimulAVR

+

+SimulAVR also uses the configure system, so to build and install:

+

+$ gunzip -c simulavr-<version>.tar.gz | tar xf -
+$ cd simulavr-<version>
+$ mkdir obj-avr
+$ cd obj-avr
+$ ../configure --prefix=$PREFIX
+$ make
+$ make install
+

+

Note:
You might want to have already installed avr-binutils, avr-gcc and avr-libc if you want to have the test programs built in the simulavr source.
+

+AVaRICE

+

+

Note:
These install notes are not applicable to avarice-1.5 or older. You probably don't want to use anything that old anyways since there have been many improvements and bug fixes since the 1.5 release.
+AVaRICE also uses the configure system, so to build and install:

+

+$ gunzip -c avarice-<version>.tar.gz | tar xf -
+$ cd avarice-<version>
+$ mkdir obj-avr
+$ cd obj-avr
+$ ../configure --prefix=$PREFIX
+$ make
+$ make install
+

+

Note:
AVaRICE uses the BFD library for accessing various binary file formats. You may need to tell the configure script where to find the lib and headers for the link to work. This is usually done by invoking the configure script like this (Replace <hdr_path> with the path to the bfd.h file on your system. Replace <lib_path> with the path to libbfd.a on your system.):
+
+$ CPPFLAGS=-I<hdr_path> LDFLAGS=-L<lib_path> ../configure --prefix=$PREFIX
+

+Building and Installing under Windows

+Building and installing the toolchain under Windows requires more effort because all of the tools required for building, and the programs themselves, are mainly designed for running under a POSIX environment such as Unix and Linux. Windows does not natively provide such an environment.

+There are two projects available that provide such an environment, Cygwin and MinGW/MSYS. There are advantages and disadvantages to both. Cygwin provides a very complete POSIX environment that allows one to build many Linux based tools from source with very little or no source modifications. However, POSIX functionality is provided in the form of a DLL that is linked to the application. This DLL has to be redistributed with your application and there are issues if the Cygwin DLL already exists on the installation system and different versions of the DLL. On the other hand, MinGW/MSYS can compile code as native Win32 applications. However, this means that programs designed for Unix and Linux (i.e. that use POSIX functionality) will not compile as MinGW/MSYS does not provide that POSIX layer for you. Therefore most programs that compile on both types of host systems, usually must provide some sort of abstraction layer to allow an application to be built cross-platform.

+MinGW/MSYS does provide somewhat of a POSIX environment that allows you to build Unix and Linux applications as they woud normally do, with a configure step and a make step. Cygwin also provides such an environment. This means that building the AVR toolchain is very similar to how it is built in Linux, described above. The main differences are in what the PATH environment variable gets set to, pathname differences, and the tools that are required to build the projects under Windows. We'll take a look at the tools next.

+Tools Required for Building the Toolchain for Windows

+These are the tools that are currently used to build WinAVR 20070525 (or later). This list may change, either the version of the tools, or the tools themselves, as improvements are made.

+

+

+

    +
  • Install MSYS-1.0.10.exe package.
    + <http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download>
      +
    • Default selections
    • Batch file will ask:
        +
      • "Do you wish to continue with the post install?" Press "y" and press enter.
      • "Do you have MinGW installed?" Press "y" and press enter.
      • "Where is your MinGW installation?" Type in "c:/mingw" (without quotes) and press enter
      • "Do you wish for me to add mount bindings for c:/mingw to /mingw?" Press "y" and press enter.
      • It will display some messages on the screen, then it will display: "Press any key to continue . . .". Press any key.
      +
    +
+

+

    +
  • Edit c:\msys\1.0\msys.bat
    + Change line (should be line 41):
    +        if EXIST rxvt.exe goto startrxvt
    +    
    to:
    +        rem if EXIST rxvt.exe goto startrxvt
    +    
    to remark out this line. Doing this will cause MSYS to always use the bash shell and not the rxvt shell.
+

+

Note:
The order of the next three is important. Install MSYS Developer toolkit before the autotools.
+ +

+

+

+

+

+

    +
  • Install Cygwin
    +
      +
    • Install everything, all users, UNIX line endings. This will take a *long* time. A fat internet pipe is highly recommended. It is also recommended that you download all to a directory first, and then install from that directory to your machine.
    +
+

+

Note:
GMP is a prequisite for building MPFR. Build GMP first.
+
    +
  • Build GMP for MinGW
    +
      +
    • Version 4.2.3
    • <http://gmplib.org/>
    • Build script:
      +        ./configure  2>&1 | tee gmp-configure.log
      +        make         2>&1 | tee gmp-make.log
      +        make check   2>&1 | tee gmp-make-check.log
      +        make install 2>&1 | tee gmp-make-install.log
      +        
    • GMP headers will be installed under /usr/local/include and library installed under /usr/local/lib.
    +
+

+

    +
  • Build MPFR for MinGW
    +
      +
    • Version 2.3.2
    • <http://www.mpfr.org/>
    • Build script:
      +        ./configure --with-gmp=/usr/local 2>&1 | tee mpfr-configure.log
      +        make         2>&1 | tee mpfr-make.log
      +        make check   2>&1 | tee mpfr-make-check.log
      +        make install 2>&1 | tee mpfr-make-install.log
      +        
    • MPFR headers will be installed under /usr/local/include and library installed under /usr/local/lib.
    +
+

+

+

+

+

+

+

+

+

+

    +
  • Install Ghostscript
    + +
+

+

    +
  • Set the TEMP and TMP environment variables to c:\temp or to the short filename version. This helps to avoid NTVDM errors during building.
+

+Building the Toolchain for Windows

+All directories in the PATH enviornment variable should be specified using their short filename (8.3) version. This will also help to avoid NTVDM errors during building. These short filenames can be specific to each machine.

+Build the tools below in MSYS.

+

    +
  • Binutils
    +
      +
    • Open source code pacakge and patch as necessary.
    • Configure and build in a directory outside of the source code tree.
    • Set PATH, in order:
        +
      • <MikTex executables>
      • /usr/local/bin
      • /usr/bin
      • /bin
      • /mingw/bin
      • c:/cygwin/bin
      • <install directory>/bin
      +
    • Configure
      +        CFLAGS=-D__USE_MINGW_ACCESS  \
      +        ../$archivedir/configure \
      +            --prefix=$installdir \
      +            --target=avr \
      +            --disable-nls \
      +            --enable-doc \
      +            --datadir=$installdir/doc/binutils \
      +            --with-gmp=/usr/local \
      +            --with-mpfr=/usr/local \
      +            2>&1 | tee binutils-configure.log
      +        
    • Make
      +        make all html install install-html 2>&1 | tee binutils-make.log
      +        
    • Manually change documentation location.
    +
+

+

    +
  • GCC
    +
      +
    • Open source code pacakge and patch as necessary.
    • Configure and build in a directory outside of the source code tree.
    • Set PATH, in order:
        +
      • <MikTex executables>
      • /usr/local/bin
      • /usr/bin
      • /bin
      • /mingw/bin
      • c:/cygwin/bin
      • <install directory>/bin
      +
    • Configure
      +        CFLAGS=-D__USE_MINGW_ACCESS  \
      +        ../gcc-$version/configure \
      +            --prefix=$installdir \
      +            --target=$target \
      +            --enable-languages=c,c++ \
      +            --with-dwarf2 \
      +            --enable-win32-registry=WinAVR-$release \
      +            --disable-nls \
      +            --with-gmp=/usr/local \
      +            --with-mpfr=/usr/local \
      +            --enable-doc \
      +            --disable-libssp \
      +            2>&1 | tee $package-configure.log
      +        
    • Make
      +        make all html install 2>&1 | tee $package-make.log
      +        
    • Manually copy the HTML documentation from the source code tree to the installation tree.
    +
+

+

    +
  • avr-libc
    +
      +
    • Open source code package.
    • Configure and build at the top of the source code tree.
    • Set PATH, in order:
        +
      • /usr/local/bin
      • /mingw/bin
      • /bin
      • <MikTex executables>
      • <install directory>/bin
      • <Doxygen executables>
      • <NetPBM executables>
      • <fig2dev executable>
      • <Ghostscript executables>
      • c:/cygwin/bin
      +
    • Configure
      +        ./configure \
      +            --host=avr \
      +            --prefix=$installdir \
      +            --enable-doc \
      +            --disable-versioned-doc \
      +            --enable-html-doc \
      +            --enable-pdf-doc \
      +            --enable-man-doc \
      +            --mandir=$installdir/man \
      +            --datadir=$installdir \
      +            2>&1 | tee $package-configure.log 
      +        
    • Make
      +        make all install 2>&1 | tee $package-make.log
      +        
    • Manually change location of man page documentation.
    • Move the examples to the top level of the install tree.
    • Convert line endings in examples to Windows line endings.
    • Convert line endings in header files to Windows line endings.
    +
+

+

    +
  • AVRDUDE
    +
      +
    • Open source code package.
    • Configure and build at the top of the source code tree.
    • Set PATH, in order:
        +
      • <MikTex executables>
      • /usr/local/bin
      • /usr/bin
      • /bin
      • /mingw/bin
      • c:/cygwin/bin
      • <install directory>/bin
      +
    • Set location of LibUSB headers and libraries
      +        export CPPFLAGS="-I../../libusb-win32-device-bin-$libusb_version/include"
      +        export CFLAGS="-I../../libusb-win32-device-bin-$libusb_version/include"
      +        export LDFLAGS="-L../../libusb-win32-device-bin-$libusb_version/lib/gcc"
      +        
    • Configure
      +        ./configure \
      +            --prefix=$installdir \
      +            --datadir=$installdir \
      +            --sysconfdir=$installdir/bin \
      +            --enable-doc \
      +            --disable-versioned-doc \
      +            2>&1 | tee $package-configure.log 
      +        
    • Make
      +        make -k all install 2>&1 | tee $package-make.log
      +        
    • Convert line endings in avrdude config file to Windows line endings.
    • Delete backup copy of avrdude config file in install directory if exists.
    +
+

+

    +
  • Insight/GDB
    +
      +
    • Open source code pacakge and patch as necessary.
    • Configure and build in a directory outside of the source code tree.
    • Set PATH, in order:
        +
      • <MikTex executables>
      • /usr/local/bin
      • /usr/bin
      • /bin
      • /mingw/bin
      • c:/cygwin/bin
      • <install directory>/bin
      +
    • Configure
      +        CFLAGS=-D__USE_MINGW_ACCESS  \
      +        LDFLAGS='-static' \
      +        ../$archivedir/configure \
      +            --prefix=$installdir \
      +            --target=avr \
      +            --with-gmp=/usr/local \
      +            --with-mpfr=/usr/local \
      +            --enable-doc \
      +            2>&1 | tee insight-configure.log
      +        
    • Make
      +        make all install 2>&1 | tee $package-make.log
      +        
    +
+

+

    +
  • SRecord
    +
      +
    • Open source code package.
    • Configure and build at the top of the source code tree.
    • Set PATH, in order:
        +
      • <MikTex executables>
      • /usr/local/bin
      • /usr/bin
      • /bin
      • /mingw/bin
      • c:/cygwin/bin
      • <install directory>/bin
      +
    • Configure
      +        ./configure \
      +            --prefix=$installdir \
      +            --infodir=$installdir/info \
      +            --mandir=$installdir/man \
      +            2>&1 | tee $package-configure.log 
      +        
    • Make
      +        make all install 2>&1 | tee $package-make.log
      +        
    +
+

+Build the tools below in Cygwin.

+

    +
  • AVaRICE
    +
      +
    • Open source code package.
    • Configure and build in a directory outside of the source code tree.
    • Set PATH, in order:
        +
      • <MikTex executables>
      • /usr/local/bin
      • /usr/bin
      • /bin
      • <install directory>/bin
      +
    • Set location of LibUSB headers and libraries
      +        export CPPFLAGS=-I$startdir/libusb-win32-device-bin-$libusb_version/include
      +        export CFLAGS=-I$startdir/libusb-win32-device-bin-$libusb_version/include
      +        export LDFLAGS="-static -L$startdir/libusb-win32-device-bin-$libusb_version/lib/gcc "
      +        
    • Configure
      +        ../$archivedir/configure \
      +        --prefix=$installdir \
      +        --datadir=$installdir/doc \
      +        --mandir=$installdir/man \
      +        --infodir=$installdir/info \
      +        2>&1 | tee avarice-configure.log
      +        
    • Make
      +        make all install 2>&1 | tee avarice-make.log
      +        
    +
+

+

    +
  • SimulAVR
    +
      +
    • Open source code package.
    • Configure and build in a directory outside of the source code tree.
    • Set PATH, in order:
        +
      • <MikTex executables>
      • /usr/local/bin
      • /usr/bin
      • /bin
      • <install directory>/bin
      +
    • Configure
      +        export LDFLAGS="-static"
      +        ../$archivedir/configure \
      +            --prefix=$installdir \
      +            --datadir=$installdir \
      +            --disable-tests \
      +            --disable-versioned-doc \
      +            2>&1 | tee simulavr-configure.log
      +        
    • Make
      +        make -k all install 2>&1 | tee simulavr-make.log
      +        make pdf install-pdf 2>&1 | tee simulavr-pdf-make.log
      +        
    +
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/interrupt_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/interrupt_8h.html new file mode 100644 index 0000000..9d02c0d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/interrupt_8h.html @@ -0,0 +1,72 @@ + + + + + avr-libc: interrupt.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

interrupt.h File Reference


Detailed Description

+@{ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

Global manipulation of the interrupt flag
The global interrupt flag is maintained in the I bit of the status register (SREG).

#define sei()
#define cli()
Macros for writing interrupt handler functions


#define ISR(vector, attributes)
#define SIGNAL(vector)
#define EMPTY_INTERRUPT(vector)
#define ISR_ALIAS(vector, target_vector)
#define reti()
#define BADISR_vect
ISR attributes


#define ISR_BLOCK
#define ISR_NOBLOCK
#define ISR_NAKED
#define ISR_ALIASOF(target_vector)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/inttypes_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/inttypes_8h.html new file mode 100644 index 0000000..00c0f16 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/inttypes_8h.html @@ -0,0 +1,241 @@ + + + + + avr-libc: inttypes.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

inttypes.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

macros for printf and scanf format specifiers
For C++, these are only included if __STDC_LIMIT_MACROS is defined before including <inttypes.h>.

#define PRId8   "d"
#define PRIdLEAST8   "d"
#define PRIdFAST8   "d"
#define PRIi8   "i"
#define PRIiLEAST8   "i"
#define PRIiFAST8   "i"
#define PRId16   "d"
#define PRIdLEAST16   "d"
#define PRIdFAST16   "d"
#define PRIi16   "i"
#define PRIiLEAST16   "i"
#define PRIiFAST16   "i"
#define PRId32   "ld"
#define PRIdLEAST32   "ld"
#define PRIdFAST32   "ld"
#define PRIi32   "li"
#define PRIiLEAST32   "li"
#define PRIiFAST32   "li"
#define PRIdPTR   PRId16
#define PRIiPTR   PRIi16
#define PRIo8   "o"
#define PRIoLEAST8   "o"
#define PRIoFAST8   "o"
#define PRIu8   "u"
#define PRIuLEAST8   "u"
#define PRIuFAST8   "u"
#define PRIx8   "x"
#define PRIxLEAST8   "x"
#define PRIxFAST8   "x"
#define PRIX8   "X"
#define PRIXLEAST8   "X"
#define PRIXFAST8   "X"
#define PRIo16   "o"
#define PRIoLEAST16   "o"
#define PRIoFAST16   "o"
#define PRIu16   "u"
#define PRIuLEAST16   "u"
#define PRIuFAST16   "u"
#define PRIx16   "x"
#define PRIxLEAST16   "x"
#define PRIxFAST16   "x"
#define PRIX16   "X"
#define PRIXLEAST16   "X"
#define PRIXFAST16   "X"
#define PRIo32   "lo"
#define PRIoLEAST32   "lo"
#define PRIoFAST32   "lo"
#define PRIu32   "lu"
#define PRIuLEAST32   "lu"
#define PRIuFAST32   "lu"
#define PRIx32   "lx"
#define PRIxLEAST32   "lx"
#define PRIxFAST32   "lx"
#define PRIX32   "lX"
#define PRIXLEAST32   "lX"
#define PRIXFAST32   "lX"
#define PRIoPTR   PRIo16
#define PRIuPTR   PRIu16
#define PRIxPTR   PRIx16
#define PRIXPTR   PRIX16
#define SCNd16   "d"
#define SCNdLEAST16   "d"
#define SCNdFAST16   "d"
#define SCNi16   "i"
#define SCNiLEAST16   "i"
#define SCNiFAST16   "i"
#define SCNd32   "ld"
#define SCNdLEAST32   "ld"
#define SCNdFAST32   "ld"
#define SCNi32   "li"
#define SCNiLEAST32   "li"
#define SCNiFAST32   "li"
#define SCNdPTR   SCNd16
#define SCNiPTR   SCNi16
#define SCNo16   "o"
#define SCNoLEAST16   "o"
#define SCNoFAST16   "o"
#define SCNu16   "u"
#define SCNuLEAST16   "u"
#define SCNuFAST16   "u"
#define SCNx16   "x"
#define SCNxLEAST16   "x"
#define SCNxFAST16   "x"
#define SCNo32   "lo"
#define SCNoLEAST32   "lo"
#define SCNoFAST32   "lo"
#define SCNu32   "lu"
#define SCNuLEAST32   "lu"
#define SCNuFAST32   "lu"
#define SCNx32   "lx"
#define SCNxLEAST32   "lx"
#define SCNxFAST32   "lx"
#define SCNoPTR   SCNo16
#define SCNuPTR   SCNu16
#define SCNxPTR   SCNx16

Typedefs

Far pointers for memory access >64K


typedef int32_t int_farptr_t
typedef uint32_t uint_farptr_t
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/io_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/io_8h.html new file mode 100644 index 0000000..9770c24 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/io_8h.html @@ -0,0 +1,41 @@ + + + + + avr-libc: io.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

io.h File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-setup.jpg b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-setup.jpg new file mode 100644 index 0000000..d9cb619 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-setup.jpg differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-wiring.jpg b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-wiring.jpg new file mode 100644 index 0000000..fad1302 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-wiring.jpg differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-wiring2.jpg b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-wiring2.jpg new file mode 100644 index 0000000..10fbe3a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/largedemo-wiring2.jpg differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/library.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/library.html new file mode 100644 index 0000000..92b939e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/library.html @@ -0,0 +1,76 @@ + + + + + avr-libc: How to Build a Library + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

How to Build a Library

+Introduction

+So you keep reusing the same functions that you created over and over? Tired of cut and paste going from one project to the next? Would you like to reduce your maintenance overhead? Then you're ready to create your own library! Code reuse is a very laudable goal. With some upfront investment, you can save time and energy on future projects by having ready-to-go libraries. This chapter describes some background information, design considerations, and practical knowledge that you will need to create and use your own libraries.

+How the Linker Works

+The compiler compiles a single high-level language file (C language, for example) into a single object module file. The linker (ld) can only work with object modules to link them together. Object modules are the smallest unit that the linker works with.

+Typically, on the linker command line, you will specify a set of object modules (that has been previously compiled) and then a list of libraries, including the Standard C Library. The linker takes the set of object modules that you specify on the command line and links them together. Afterwards there will probably be a set of "undefined references". A reference is essentially a function call. An undefined reference is a function call, with no defined function to match the call.

+The linker will then go through the libraries, in order, to match the undefined references with function definitions that are found in the libraries. If it finds the function that matches the call, the linker will then link in the object module in which the function is located. This part is important: the linker links in THE ENTIRE OBJECT MODULE in which the function is located. Remember, the linker knows nothing about the functions internal to an object module, other than symbol names (such as function names). The smallest unit the linker works with is object modules.

+When there are no more undefined references, the linker has linked everything and is done and outputs the final application.

+How to Design a Library

+How the linker behaves is very important in designing a library. Ideally, you want to design a library where only the functions that are called are the only functions to be linked into the final application. This helps keep the code size to a minimum. In order to do this, with the way the linker works, is to only write one function per code module. This will compile to one function per object module. This is usually a very different way of doing things than writing an application!

+There are always exceptions to the rule. There are generally two cases where you would want to have more than one function per object module.

+The first is when you have very complementary functions that it doesn't make much sense to split them up. For example, malloc() and free(). If someone is going to use malloc(), they will very likely be using free() (or at least should be using free()). In this case, it makes more sense to aggregate those two functions in the same object module.

+The second case is when you want to have an Interrupt Service Routine (ISR) in your library that you want to link in. The problem in this case is that the linker looks for unresolved references and tries to resolve them with code in libraries. A reference is the same as a function call. But with ISRs, there is no function call to initiate the ISR. The ISR is placed in the Interrupt Vector Table (IVT), hence no call, no reference, and no linking in of the ISR. In order to do this, you have to trick the linker in a way. Aggregate the ISR, with another function in the same object module, but have the other function be something that is required for the user to call in order to use the ISR, like perhaps an initialization function for the subsystem, or perhaps a function that enables the ISR in the first place.

+Creating a Library

+The librarian program is called ar (for "archiver") and is found in the GNU Binutils project. This program will have been built for the AVR target and will therefore be named avr-ar.

+The job of the librarian program is simple: aggregate a list of object modules into a single library (archive) and create an index for the linker to use. The name that you create for the library filename must follow a specific pattern: libname.a. The name part is the unique part of the filename that you create. It makes it easier if the name part relates to what the library is about. This name part must be prefixed by "lib", and it must have a file extension of .a, for "archive". The reason for the special form of the filename is for how the library gets used by the toolchain, as we will see later on.

+

Note:
The filename is case-sensitive. Use a lowercase "lib" prefix, and a lowercase ".a" as the file extension.
+The command line is fairly simple:

+

avr-ar rcs <library name> <list of object modules>
+

+The r command switch tells the program to insert the object modules into the archive with replacement. The c command line switch tells the program to create the archive. And the s command line switch tells the program to write an object-file index into the archive, or update an existing one. This last switch is very important as it helps the linker to find what it needs to do its job.

+

Note:
The command line switches are case sensitive! There are uppercase switches that have completely different actions.

+MFile and the WinAVR distribution contain a Makefile Template that includes the necessary command lines to build a library. You will have to manually modify the template to switch it over to build a library instead of an application.

+See the GNU Binutils manual for more information on the ar program.

+Using a Library

+To use a library, use the -l switch on your linker command line. The string immediately following the -l is the unique part of the library filename that the linker will link in. For example, if you use:

+

-lm
+

+this will expand to the library filename:

+

libm.a
+

+which happens to be the math library included in avr-libc.

+If you use this on your linker command line:

+

-lprintf_flt
+

+then the linker will look for a library called:

+

libprintf_flt.a
+

+This is why naming your library is so important when you create it!

+The linker will search libraries in the order that they appear on the command line. Whichever function is found first that matches the undefined reference, it will be linked in.

+There are also command line switches that tell GCC which directory to look in (-L) for the libraries that are specified to be linke in with -l.

+See the GNU Binutils manual for more information on the GNU linker (ld) program.

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/lock_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/lock_8h.html new file mode 100644 index 0000000..f86e137 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/lock_8h.html @@ -0,0 +1,54 @@ + + + + + avr-libc: lock.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

lock.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + +

Defines

+#define _AVR_LOCK_H_   1
+#define LOCKMEM   __attribute__((section (".lock")))
+#define LOCKBITS   unsigned char __lock LOCKMEM
+#define LOCKBITS_DEFAULT   (0xFF)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-std.png b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-std.png new file mode 100644 index 0000000..3b889f4 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-std.png differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-x1.png b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-x1.png new file mode 100644 index 0000000..af33ff2 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-x1.png differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-x2.png b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-x2.png new file mode 100644 index 0000000..078eb11 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc-x2.png differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc.html new file mode 100644 index 0000000..e59f2aa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/malloc.html @@ -0,0 +1,83 @@ + + + + + avr-libc: Memory Areas and Using malloc() + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Memory Areas and Using malloc()

+Introduction

+Many of the devices that are possible targets of avr-libc have a minimal amount of RAM. The smallest parts supported by the C environment come with 128 bytes of RAM. This needs to be shared between initialized and uninitialized variables (sections .data and .bss), the dynamic memory allocator, and the stack that is used for calling subroutines and storing local (automatic) variables.

+Also, unlike larger architectures, there is no hardware-supported memory management which could help in separating the mentioned RAM regions from being overwritten by each other.

+The standard RAM layout is to place .data variables first, from the beginning of the internal RAM, followed by .bss. The stack is started from the top of internal RAM, growing downwards. The so-called "heap" available for the dynamic memory allocator will be placed beyond the end of .bss. Thus, there's no risk that dynamic memory will ever collide with the RAM variables (unless there were bugs in the implementation of the allocator). There is still a risk that the heap and stack could collide if there are large requirements for either dynamic memory or stack space. The former can even happen if the allocations aren't all that large but dynamic memory allocations get fragmented over time such that new requests don't quite fit into the "holes" of previously freed regions. Large stack space requirements can arise in a C function containing large and/or numerous local variables or when recursively calling function.

+

Note:
The pictures shown in this document represent typical situations where the RAM locations refer to an ATmega128. The memory addresses used are not displayed in a linear scale.
+
+malloc-std.png +

RAM map of a device with internal RAM

+

+On a simple device like a microcontroller it is a challenge to implement a dynamic memory allocator that is simple enough so the code size requirements will remain low, yet powerful enough to avoid unnecessary memory fragmentation and to get it all done with reasonably few CPU cycles. Microcontrollers are often low on space and also run at much lower speeds than the typical PC these days.

+The memory allocator implemented in avr-libc tries to cope with all of these constraints, and offers some tuning options that can be used if there are more resources available than in the default configuration.

+Internal vs. external RAM

+Obviously, the constraints are much harder to satisfy in the default configuration where only internal RAM is available. Extreme care must be taken to avoid a stack-heap collision, both by making sure functions aren't nesting too deeply, and don't require too much stack space for local variables, as well as by being cautious with allocating too much dynamic memory.

+If external RAM is available, it is strongly recommended to move the heap into the external RAM, regardless of whether or not the variables from the .data and .bss sections are also going to be located there. The stack should always be kept in internal RAM. Some devices even require this, and in general, internal RAM can be accessed faster since no extra wait states are required. When using dynamic memory allocation and stack and heap are separated in distinct memory areas, this is the safest way to avoid a stack-heap collision.

+Tunables for malloc()

+There are a number of variables that can be tuned to adapt the behavior of malloc() to the expected requirements and constraints of the application. Any changes to these tunables should be made before the very first call to malloc(). Note that some library functions might also use dynamic memory (notably those from the <stdio.h>: Standard IO facilities), so make sure the changes will be done early enough in the startup sequence.

+The variables __malloc_heap_start and __malloc_heap_end can be used to restrict the malloc() function to a certain memory region. These variables are statically initialized to point to __heap_start and __heap_end, respectively, where __heap_start is filled in by the linker to point just beyond .bss, and __heap_end is set to 0 which makes malloc() assume the heap is below the stack.

+If the heap is going to be moved to external RAM, __malloc_heap_end must be adjusted accordingly. This can either be done at run-time, by writing directly to this variable, or it can be done automatically at link-time, by adjusting the value of the symbol __heap_end.

+ The following example shows a linker command to relocate the entire .data and .bss segments, and the heap to location 0x1100 in external RAM. The heap will extend up to address 0xffff.

+

avr-gcc ... -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff ...
+

+

Note:
See explanation for offset 0x800000. See the chapter about using gcc for the -Wl options.

+The ld (linker) user manual states that using -Tdata=<x> is equivalent to using --section-start,.data=<x>. However, you have to use --section-start as above because the GCC frontend also sets the -Tdata option for all MCU types where the SRAM doesn't start at 0x800060. Thus, the linker is being faced with two -Tdata options. Sarting with binutils 2.16, the linker changed the preference, and picks the "wrong" option in this situation.

+
+malloc-x1.png +

Internal RAM: stack only, external RAM: variables and heap

+

+If dynamic memory should be placed in external RAM, while keeping the variables in internal RAM, something like the following could be used. Note that for demonstration purposes, the assignment of the various regions has not been made adjacent in this example, so there are "holes" below and above the heap in external RAM that remain completely unaccessible by regular variables or dynamic memory allocations (shown in light bisque color in the picture below).

+

avr-gcc ... -Wl,--defsym=__heap_start=0x802000,--defsym=__heap_end=0x803fff ...
+

+

+malloc-x2.png +

Internal RAM: variables and stack, external RAM: heap

+

+If __malloc_heap_end is 0, the allocator attempts to detect the bottom of stack in order to prevent a stack-heap collision when extending the actual size of the heap to gain more space for dynamic memory. It will not try to go beyond the current stack limit, decreased by __malloc_margin bytes. Thus, all possible stack frames of interrupt routines that could interrupt the current function, plus all further nested function calls must not require more stack space, or they will risk colliding with the data segment.

+The default value of __malloc_margin is set to 32.

+Implementation details

+Dynamic memory allocation requests will be returned with a two-byte header prepended that records the size of the allocation. This is later used by free(). The returned address points just beyond that header. Thus, if the application accidentally writes before the returned memory region, the internal consistency of the memory allocator is compromised.

+The implementation maintains a simple freelist that accounts for memory blocks that have been returned in previous calls to free(). Note that all of this memory is considered to be successfully added to the heap already, so no further checks against stack-heap collisions are done when recycling memory from the freelist.

+The freelist itself is not maintained as a separate data structure, but rather by modifying the contents of the freed memory to contain pointers chaining the pieces together. That way, no additional memory is reqired to maintain this list except for a variable that keeps track of the lowest memory segment available for reallocation. Since both, a chain pointer and the size of the chunk need to be recorded in each chunk, the minimum chunk size on the freelist is four bytes.

+When allocating memory, first the freelist is walked to see if it could satisfy the request. If there's a chunk available on the freelist that will fit the request exactly, it will be taken, disconnected from the freelist, and returned to the caller. If no exact match could be found, the closest match that would just satisfy the request will be used. The chunk will normally be split up into one to be returned to the caller, and another (smaller) one that will remain on the freelist. In case this chunk was only up to two bytes larger than the request, the request will simply be altered internally to also account for these additional bytes since no separate freelist entry could be split off in that case.

+If nothing could be found on the freelist, heap extension is attempted. This is where __malloc_margin will be considered if the heap is operating below the stack, or where __malloc_heap_end will be verified otherwise.

+If the remaining memory is insufficient to satisfy the request, NULL will eventually be returned to the caller.

+When calling free(), a new freelist entry will be prepared. An attempt is then made to aggregate the new entry with possible adjacent entries, yielding a single larger entry available for further allocations. That way, the potential for heap fragmentation is hopefully reduced.

+A call to realloc() first determines whether the operation is about to grow or shrink the current allocation. When shrinking, the case is easy: the existing chunk is split, and the tail of the region that is no longer to be used is passed to the standard free() function for insertion into the freelist. Checks are first made whether the tail chunk is large enough to hold a chunk of its own at all, otherwise realloc() will simply do nothing, and return the original region.

+When growing the region, it is first checked whether the existing allocation can be extended in-place. If so, this is done, and the original pointer is returned without copying any data contents. As a side-effect, this check will also record the size of the largest chunk on the freelist.

+If the region cannot be extended in-place, but the old chunk is at the top of heap, and the above freelist walk did not reveal a large enough chunk on the freelist to satisfy the new request, an attempt is made to quickly extend this topmost chunk (and thus the heap), so no need arises to copy over the existing data. If there's no more space available in the heap (same check is done as in malloc()), the entire request will fail.

+Otherwise, malloc() will be called with the new request size, the existing data will be copied over, and free() will be called on the old region.

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/math_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/math_8h.html new file mode 100644 index 0000000..cdea509 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/math_8h.html @@ -0,0 +1,125 @@ + + + + + avr-libc: math.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

math.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define M_PI   3.141592653589793238462643
#define M_SQRT2   1.4142135623730950488016887
#define NAN   __builtin_nan("")
#define INFINITY   __builtin_inf()

Functions

double cos (double __x)
double fabs (double __x)
double fmod (double __x, double __y)
double modf (double __x, double *__iptr)
double sin (double __x)
double sqrt (double __x)
double tan (double __x)
double floor (double __x)
double ceil (double __x)
double frexp (double __x, int *__pexp)
double ldexp (double __x, int __exp)
double exp (double __x)
double cosh (double __x)
double sinh (double __x)
double tanh (double __x)
double acos (double __x)
double asin (double __x)
double atan (double __x)
double atan2 (double __y, double __x)
double log (double __x)
double log10 (double __x)
double pow (double __x, double __y)
int isnan (double __x)
int isinf (double __x)
double square (double __x)
static double copysign (double __x, double __y)
double fdim (double __x, double __y)
double fma (double __x, double __y, double __z)
double fmax (double __x, double __y)
double fmin (double __x, double __y)
int signbit (double __x)
double trunc (double __x)
static int isfinite (double __x)
double hypot (double __x, double __y)
double round (double __x)
long lround (double __x)
long lrint (double __x)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/mem_sections.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/mem_sections.html new file mode 100644 index 0000000..aaaff0e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/mem_sections.html @@ -0,0 +1,126 @@ + + + + + avr-libc: Memory Sections + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Memory Sections

Remarks:
Need to list all the sections which are available to the avr.
+
Weak Bindings
FIXME: need to discuss the .weak directive.
+The following describes the various sections available.

+The .text Section

+The .text section contains the actual machine instructions which make up your program. This section is further subdivided by the .initN and .finiN sections dicussed below.

+

Note:
The avr-size program (part of binutils), coming from a Unix background, doesn't account for the .data initialization space added to the .text section, so in order to know how much flash the final program will consume, one needs to add the values for both, .text and .data (but not .bss), while the amount of pre-allocated SRAM is the sum of .data and .bss.
+

+The .data Section

+This section contains static data which was defined in your code. Things like the following would end up in .data:

+

char err_str[] = "Your program has died a horrible death!";
+
+struct point pt = { 1, 1 };
+

+It is possible to tell the linker the SRAM address of the beginning of the .data section. This is accomplished by adding -Wl,-Tdata,addr to the avr-gcc command used to the link your program. Not that addr must be offset by adding 0x800000 the to real SRAM address so that the linker knows that the address is in the SRAM memory space. Thus, if you want the .data section to start at 0x1100, pass 0x801100 at the address to the linker. [offset explained]

+

Note:
When using malloc() in the application (which could even happen inside library calls), additional adjustments are required.
+

+The .bss Section

+Uninitialized global or static variables end up in the .bss section.

+The .eeprom Section

+This is where eeprom variables are stored.

+The .noinit Section

+This sections is a part of the .bss section. What makes the .noinit section special is that variables which are defined as such:

+

int foo __attribute__ ((section (".noinit")));
+

+will not be initialized to zero during startup as would normal .bss data.

+Only uninitialized variables can be placed in the .noinit section. Thus, the following code will cause avr-gcc to issue an error:

+

int bar __attribute__ ((section (".noinit"))) = 0xaa;
+

+It is possible to tell the linker explicitly where to place the .noinit section by adding -Wl,--section-start=.noinit=0x802000 to the avr-gcc command line at the linking stage. For example, suppose you wish to place the .noinit section at SRAM address 0x2000:

+

+	$ avr-gcc ... -Wl,--section-start=.noinit=0x802000 ...
+

+

Note:
Because of the Harvard architecture of the AVR devices, you must manually add 0x800000 to the address you pass to the linker as the start of the section. Otherwise, the linker thinks you want to put the .noinit section into the .text section instead of .data/.bss and will complain.
+Alternatively, you can write your own linker script to automate this. [FIXME: need an example or ref to dox for writing linker scripts.]

+The .initN Sections

+These sections are used to define the startup code from reset up through the start of main(). These all are subparts of the .text section.

+The purpose of these sections is to allow for more specific placement of code within your program.

+

Note:
Sometimes, it is convenient to think of the .initN and .finiN sections as functions, but in reality they are just symbolic names which tell the linker where to stick a chunk of code which is not a function. Notice that the examples for asm and C can not be called as functions and should not be jumped into.
+The .initN sections are executed in order from 0 to 9.

+

.init0:
Weakly bound to __init(). If user defines __init(), it will be jumped into immediately after a reset.
+
.init1:
Unused. User definable.
+
.init2:
In C programs, weakly bound to initialize the stack, and to clear __zero_reg__ (r1).
+
.init3:
Unused. User definable.
+
.init4:
+For devices with > 64 KB of ROM, .init4 defines the code which takes care of copying the contents of .data from the flash to SRAM. For all other devices, this code as well as the code to zero out the .bss section is loaded from libgcc.a.

+

.init5:
Unused. User definable.
+
.init6:
Unused for C programs, but used for constructors in C++ programs.
+
.init7:
Unused. User definable.
+
.init8:
Unused. User definable.
+
.init9:
Jumps into main().
+

+The .finiN Sections

+These sections are used to define the exit code executed after return from main() or a call to exit(). These all are subparts of the .text section.

+The .finiN sections are executed in descending order from 9 to 0.

+

.finit9:
Unused. User definable. This is effectively where _exit() starts.
+
.fini8:
Unused. User definable.
+
.fini7:
Unused. User definable.
+
.fini6:
Unused for C programs, but used for destructors in C++ programs.
+
.fini5:
Unused. User definable.
+
.fini4:
Unused. User definable.
+
.fini3:
Unused. User definable.
+
.fini2:
Unused. User definable.
+
.fini1:
Unused. User definable.
+
.fini0:
Goes into an infinite loop after program termination and completion of any _exit() code (execution of code in the .fini9 -> .fini1 sections).
+

+Using Sections in Assembler Code

+Example:

+

#include <avr/io.h>
+
+        .section .init1,"ax",@progbits
+        ldi       r0, 0xff
+        out       _SFR_IO_ADDR(PORTB), r0
+        out       _SFR_IO_ADDR(DDRB), r0
+

+

Note:
The ,"ax",@progbits tells the assembler that the section is allocatable ("a"), executable ("x") and contains data ("@progbits"). For more detailed information on the .section directive, see the gas user manual.
+

+Using Sections in C Code

+Example:

+

#include <avr/io.h>
+
+void my_init_portb (void) __attribute__ ((naked)) \
+    __attribute__ ((section (".init3")));
+
+void
+my_init_portb (void)
+{
+        PORTB = 0xff;
+        DDRB = 0xff;
+}
+

+

Note:
Section .init3 is used in this example, as this ensures the inernal __zero_reg__ has already been set up. The code generated by the compiler might blindly rely on __zero_reg__ being really 0.
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memccpy_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memccpy_8S.html new file mode 100644 index 0000000..2b0049e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memccpy_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memccpy.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memccpy.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memchr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memchr_8S.html new file mode 100644 index 0000000..4e8d954 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memchr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memchr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memchr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memchr__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memchr__P_8S.html new file mode 100644 index 0000000..d884476 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memchr__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memchr_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memchr_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcmp_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcmp_8S.html new file mode 100644 index 0000000..c29836b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcmp_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memcmp.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memcmp.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcmp__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcmp__P_8S.html new file mode 100644 index 0000000..9ed8dc2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcmp__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memcmp_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memcmp_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcpy_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcpy_8S.html new file mode 100644 index 0000000..78d3b53 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcpy_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memcpy.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memcpy.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcpy__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcpy__P_8S.html new file mode 100644 index 0000000..36fd2fd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memcpy__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memcpy_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memcpy_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memmem_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memmem_8S.html new file mode 100644 index 0000000..36c47c0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memmem_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memmem.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memmem.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memmove_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memmove_8S.html new file mode 100644 index 0000000..d43c58d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memmove_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memmove.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memmove.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memrchr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memrchr_8S.html new file mode 100644 index 0000000..8a6e2b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memrchr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memrchr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memrchr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memrchr__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memrchr__P_8S.html new file mode 100644 index 0000000..ac51e25 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memrchr__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memrchr_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memrchr_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memset_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memset_8S.html new file mode 100644 index 0000000..53369c7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/memset_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: memset.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

memset.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/modules.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/modules.html new file mode 100644 index 0000000..6074205 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/modules.html @@ -0,0 +1,80 @@ + + + + + avr-libc: Module Index + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Modules

Here is a list of all modules: +
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/overview.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/overview.html new file mode 100644 index 0000000..bd644a8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/overview.html @@ -0,0 +1,100 @@ + + + + + avr-libc: Toolchain Overview + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Toolchain Overview

+Introduction

+Welcome to the open source software development toolset for the Atmel AVR!

+There is not a single tool that provides everything needed to develop software for the AVR. It takes many tools working together. Collectively, the group of tools are called a toolset, or commonly a toolchain, as the tools are chained together to produce the final executable application for the AVR microcontroller.

+The following sections provide an overview of all of these tools. You may be used to cross-compilers that provide everything with a GUI front-end, and not know what goes on "underneath the hood". You may be coming from a desktop or server computer background and not used to embedded systems. Or you may be just learning about the most common software development toolchain available on Unix and Linux systems. Hopefully the following overview will be helpful in putting everything in perspective.

+FSF and GNU

+According to its website, "the Free Software Foundation (FSF), established in 1985, is dedicated to promoting computer users' rights to use, study, copy, modify, and redistribute computer programs. The FSF promotes the development and use of free software, particularly the GNU operating system, used widely in its GNU/Linux variant." The FSF remains the primary sponsor of the GNU project.

+The GNU Project was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system. GNU is a recursive acronym for »GNU's Not Unix«; it is pronounced guh-noo, approximately like canoe.

+One of the main projects of the GNU system is the GNU Compiler Collection, or GCC, and its sister project, GNU Binutils. These two open source projects provide a foundation for a software development toolchain. Note that these projects were designed to originally run on Unix-like systems.

+GCC

+GCC stands for GNU Compiler Collection. GCC is highly flexible compiler system. It has different compiler front-ends for different languages. It has many back-ends that generate assembly code for many different processors and host operating systems. All share a common "middle-end", containing the generic parts of the compiler, including a lot of optimizations.

+In GCC, a host system is the system (processor/OS) that the compiler runs on. A target system is the system that the compiler compiles code for. And, a build system is the system that the compiler is built (from source code) on. If a compiler has the same system for host and for target, it is known as a native compiler. If a compiler has different systems for host and target, it is known as a cross-compiler. (And if all three, build, host, and target systems are different, it is known as a Canadian cross compiler, but we won't discuss that here.) When GCC is built to execute on a host system such as FreeBSD, Linux, or Windows, and it is built to generate code for the AVR microcontroller target, then it is a cross compiler, and this version of GCC is commonly known as "AVR GCC". In documentation, or discussion, AVR GCC is used when referring to GCC targeting specifically the AVR, or something that is AVR specific about GCC. The term "GCC" is usually used to refer to something generic about GCC, or about GCC as a whole.

+GCC is different from most other compilers. GCC focuses on translating a high-level language to the target assembly only. AVR GCC has three available compilers for the AVR: C language, C++, and Ada. The compiler itself does not assemble or link the final code.

+GCC is also known as a "driver" program, in that it knows about, and drives other programs seamlessly to create the final output. The assembler, and the linker are part of another open source project called GNU Binutils. GCC knows how to drive the GNU assembler (gas) to assemble the output of the compiler. GCC knows how to drive the GNU linker (ld) to link all of the object modules into a final executable.

+The two projects, GCC and Binutils, are very much interrelated and many of the same volunteers work on both open source projects.

+When GCC is built for the AVR target, the actual program names are prefixed with "avr-". So the actual executable name for AVR GCC is: avr-gcc. The name "avr-gcc" is used in documentation and discussion when referring to the program itself and not just the whole AVR GCC system.

+See the GCC Web Site and GCC User Manual for more information about GCC.

+GNU Binutils

+The name GNU Binutils stands for "Binary Utilities". It contains the GNU assembler (gas), and the GNU linker (ld), but also contains many other utilities that work with binary files that are created as part of the software development toolchain.

+Again, when these tools are built for the AVR target, the actual program names are prefixed with "avr-". For example, the assembler program name, for a native assembler is "as" (even though in documentation the GNU assembler is commonly referred to as "gas"). But when built for an AVR target, it becomes "avr-as". Below is a list of the programs that are included in Binutils:

+

avr-as
The Assembler.
+
avr-ld
The Linker.
+
avr-ar
Create, modify, and extract from libraries (archives).
+
avr-ranlib
Generate index to library (archive) contents.
+
avr-objcopy
Copy and translate object files to different formats.
+
avr-objdump
Display information from object files including disassembly.
+
avr-size
List section sizes and total size.
+
avr-nm
List symbols from object files.
+
avr-strings
List printable strings from files.
+
avr-strip
Discard symbols from files.
+
avr-readelf
Display the contents of ELF format files.
+
avr-addr2line
Convert addresses to file and line.
+
avr-c++filt
Filter to demangle encoded C++ symbols.
+

+avr-libc

+GCC and Binutils provides a lot of the tools to develop software, but there is one critical component that they do not provide: a Standard C Library.

+There are different open source projects that provide a Standard C Library depending upon your system time, whether for a native compiler (GNU Libc), for some other embedded system (newlib), or for some versions of Linux (uCLibc). The open source AVR toolchain has its own Standard C Library project: avr-libc.

+AVR-Libc provides many of the same functions found in a regular Standard C Library and many additional library functions that is specific to an AVR. Some of the Standard C Library functions that are commonly used on a PC environment have limitations or additional issues that a user needs to be aware of when used on an embedded system.

+AVR-Libc also contains the most documentation about the whole AVR toolchain.

+Building Software

+Even though GCC, Binutils, and avr-libc are the core projects that are used to build software for the AVR, there is another piece of software that ties it all together: Make. GNU Make is a program that makes things, and mainly software. Make interprets and executes a Makefile that is written for a project. A Makefile contains dependency rules, showing which output files are dependent upon which input files, and instructions on how to build output files from input files.

+Some distributions of the toolchains, and other AVR tools such as MFile, contain a Makefile template written for the AVR toolchain and AVR applications that you can copy and modify for your application.

+See the GNU Make User Manual for more information.

+AVRDUDE

+After creating your software, you'll want to program your device. You can do this by using the program AVRDUDE which can interface with various hardware devices to program your processor.

+AVRDUDE is a very flexible package. All the information about AVR processors and various hardware programmers is stored in a text database. This database can be modified by any user to add new hardware or to add an AVR processor if it is not already listed.

+GDB / Insight / DDD

+The GNU Debugger (GDB) is a command-line debugger that can be used with the rest of the AVR toolchain. Insight is GDB plus a GUI written in Tcl/Tk. Both GDB and Insight are configured for the AVR and the main executables are prefixed with the target name: avr-gdb, and avr-insight. There is also a "text mode" GUI for GDB: avr-gdbtui. DDD (Data Display Debugger) is another popular GUI front end to GDB, available on Unix and Linux systems.

+AVaRICE

+AVaRICE is a back-end program to AVR GDB and interfaces to the Atmel JTAG In-Circuit Emulator (ICE), to provide emulation capabilities.

+SimulAVR

+SimulAVR is an AVR simulator used as a back-end with AVR GDB. Unfortunately, this project is currently unmaintained and could use some help.

+Utilities

+There are also other optional utilities available that may be useful to add to your toolset.

+SRecord is a collection of powerful tools for manipulating EPROM load files. It reads and writes numerous EPROM file formats, and can perform many different manipulations.

+MFile is a simple Makefile generator is meant as an aid to quickly customize a Makefile to use for your AVR application.

+Toolchain Distributions (Distros)

+All of the various open source projects that comprise the entire toolchain are normally distributed as source code. It is left up to the user to build the tool application from its source code. This can be a very daunting task to any potential user of these tools.

+Luckily there are people who help out in this area. Volunteers take the time to build the application from source code on particular host platforms and sometimes packaging the tools for convenient installation by the end user. These packages contain the binary executables of the tools, pre-made and ready to use. These packages are known as "distributions" of the AVR toolchain, or by a more shortened name, "distros".

+AVR toolchain distros are available on FreeBSD, Windows, Mac OS X, and certain flavors of Linux.

+Open Source

+All of these tools, from the original source code in the multitude of projects, to the various distros, are put together by many, many volunteers. All of these projects could always use more help from other people who are willing to volunteer some of their time. There are many different ways to help, for people with varying skill levels, abilities, and available time.

+You can help to answer questions in mailing lists such as the avr-gcc-list, or on forums at the AVR Freaks website. This helps many people new to the open source AVR tools.

+If you think you found a bug in any of the tools, it is always a big help to submit a good bug report to the proper project. A good bug report always helps other volunteers to analyze the problem and to get it fixed for future versions of the software.

+You can also help to fix bugs in various software projects, or to add desirable new features.

+Volunteers are always welcome! :-)

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pages.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pages.html new file mode 100644 index 0000000..8e13f17 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pages.html @@ -0,0 +1,71 @@ + + + + + avr-libc: Page Index + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ + + +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/parity_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/parity_8h.html new file mode 100644 index 0000000..a039933 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/parity_8h.html @@ -0,0 +1,44 @@ + + + + + avr-libc: parity.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

parity.h File Reference


Detailed Description

+ +

+ + + + + +

Defines

#define parity_even_bit(val)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pgmspace.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pgmspace.html new file mode 100644 index 0000000..4e8b219 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pgmspace.html @@ -0,0 +1,160 @@ + + + + + avr-libc: Data in Program Space + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Data in Program Space

+Introduction

+So you have some constant data and you're running out of room to store it? Many AVRs have limited amount of RAM in which to store data, but may have more Flash space available. The AVR is a Harvard architecture processor, where Flash is used for the program, RAM is used for data, and they each have separate address spaces. It is a challenge to get constant data to be stored in the Program Space, and to retrieve that data to use it in the AVR application.

+The problem is exacerbated by the fact that the C Language was not designed for Harvard architectures, it was designed for Von Neumann architectures where code and data exist in the same address space. This means that any compiler for a Harvard architecture processor, like the AVR, has to use other means to operate with separate address spaces.

+Some compilers use non-standard C language keywords, or they extend the standard syntax in ways that are non-standard. The AVR toolset takes a different approach.

+GCC has a special keyword, __attribute__ that is used to attach different attributes to things such as function declarations, variables, and types. This keyword is followed by an attribute specification in double parentheses. In AVR GCC, there is a special attribute called progmem. This attribute is use on data declarations, and tells the compiler to place the data in the Program Memory (Flash).

+AVR-Libc provides a simple macro PROGMEM that is defined as the attribute syntax of GCC with the progmem attribute. This macro was created as a convenience to the end user, as we will see below. The PROGMEM macro is defined in the <avr/pgmspace.h> system header file.

+It is difficult to modify GCC to create new extensions to the C language syntax, so instead, avr-libc has created macros to retrieve the data from the Program Space. These macros are also found in the <avr/pgmspace.h> system header file.

+A Note On const

+Many users bring up the idea of using C's keyword const as a means of declaring data to be in Program Space. Doing this would be an abuse of the intended meaning of the const keyword.

+const is used to tell the compiler that the data is to be "read-only". It is used to help make it easier for the compiler to make certain transformations, or to help the compiler check for incorrect usage of those variables.

+For example, the const keyword is commonly used in many functions as a modifier on the parameter type. This tells the compiler that the function will only use the parameter as read-only and will not modify the contents of the parameter variable.

+const was intended for uses such as this, not as a means to identify where the data should be stored. If it were used as a means to define data storage, then it loses its correct meaning (changes its semantics) in other situations such as in the function parameter example.

+Storing and Retrieving Data in the Program Space

+Let's say you have some global data:

+

unsigned char mydata[11][10] =
+{
+        {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09},
+        {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13},
+        {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D},
+        {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27},
+        {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31},
+        {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B},
+        {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45},
+        {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F},
+        {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59},
+        {0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63},
+        {0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D}
+};
+

+and later in your code you access this data in a function and store a single byte into a variable like so:

+

byte = mydata[i][j];
+

+Now you want to store your data in Program Memory. Use the PROGMEM macro found in <avr/pgmspace.h> and put it after the declaration of the variable, but before the initializer, like so:

+

#include <avr/pgmspace.h>
+.
+.
+.
+unsigned char mydata[11][10] PROGMEM =
+{
+        {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09},
+        {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13},
+        {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D},
+        {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27},
+        {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31},
+        {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B},
+        {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45},
+        {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F},
+        {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59},
+        {0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63},
+        {0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D}
+};
+

+That's it! Now your data is in the Program Space. You can compile, link, and check the map file to verify that mydata is placed in the correct section.

+Now that your data resides in the Program Space, your code to access (read) the data will no longer work. The code that gets generated will retrieve the data that is located at the address of the mydata array, plus offsets indexed by the i and j variables. However, the final address that is calculated where to the retrieve the data points to the Data Space! Not the Program Space where the data is actually located. It is likely that you will be retrieving some garbage. The problem is that AVR GCC does not intrinsically know that the data resides in the Program Space.

+The solution is fairly simple. The "rule of thumb" for accessing data stored in the Program Space is to access the data as you normally would (as if the variable is stored in Data Space), like so:

+

byte = mydata[i][j];
+

+then take the address of the data:

+

byte = &(mydata[i][j]);
+

+then use the appropriate pgm_read_* macro, and the address of your data becomes the parameter to that macro:

+

byte = pgm_read_byte(&(mydata[i][j]));
+

+The pgm_read_* macros take an address that points to the Program Space, and retrieves the data that is stored at that address. This is why you take the address of the offset into the array. This address becomes the parameter to the macro so it can generate the correct code to retrieve the data from the Program Space. There are different pgm_read_* macros to read different sizes of data at the address given.

+Storing and Retrieving Strings in the Program Space

+Now that you can successfully store and retrieve simple data from Program Space you want to store and retrive strings from Program Space. And specifically you want to store and array of strings to Program Space. So you start off with your array, like so:

+

char *string_table[] = 
+{
+    "String 1",
+    "String 2",
+    "String 3",
+    "String 4",
+    "String 5"
+};
+

+and then you add your PROGMEM macro to the end of the declaration:

+

char *string_table[] PROGMEM = 
+{
+    "String 1",
+    "String 2",
+    "String 3",
+    "String 4",
+    "String 5"
+};
+

+Right? WRONG!

+Unfortunately, with GCC attributes, they affect only the declaration that they are attached to. So in this case, we successfully put the string_table variable, the array itself, in the Program Space. This DOES NOT put the actual strings themselves into Program Space. At this point, the strings are still in the Data Space, which is probably not what you want.

+In order to put the strings in Program Space, you have to have explicit declarations for each string, and put each string in Program Space:

+

char string_1[] PROGMEM = "String 1";
+char string_2[] PROGMEM = "String 2";
+char string_3[] PROGMEM = "String 3";
+char string_4[] PROGMEM = "String 4";
+char string_5[] PROGMEM = "String 5";
+

+Then use the new symbols in your table, like so:

+

PGM_P string_table[] PROGMEM = 
+{
+    string_1,
+    string_2,
+    string_3,
+    string_4,
+    string_5
+};
+

+Now this has the effect of putting string_table in Program Space, where string_table is an array of pointers to characters (strings), where each pointer is a pointer to the Program Space, where each string is also stored.

+The PGM_P type above is also a macro that defined as a pointer to a character in the Program Space.

+Retrieving the strings are a different matter. You probably don't want to pull the string out of Program Space, byte by byte, using the pgm_read_byte() macro. There are other functions declared in the <avr/pgmspace.h> header file that work with strings that are stored in the Program Space.

+For example if you want to copy the string from Program Space to a buffer in RAM (like an automatic variable inside a function, that is allocated on the stack), you can do this:

+

void foo(void)
+{
+    char buffer[10];
+    
+    for (unsigned char i = 0; i < 5; i++)
+    {
+        strcpy_P(buffer, (PGM_P)pgm_read_word(&(string_table[i])));
+        
+        // Display buffer on LCD.
+    }
+    return;
+}
+

+Here, the string_table array is stored in Program Space, so we access it normally, as if were stored in Data Space, then take the address of the location we want to access, and use the address as a parameter to pgm_read_word. We use the pgm_read_word macro to read the string pointer out of the string_table array. Remember that a pointer is 16-bits, or word size. The pgm_read_word macro will return a 16-bit unsigned integer. We then have to typecast it as a true pointer to program memory, PGM_P. This pointer is an address in Program Space pointing to the string that we want to copy. This pointer is then used as a parameter to the function strcpy_P. The function strcpy_P is just like the regular strcpy function, except that it copies a string from Program Space (the second parameter) to a buffer in the Data Space (the first parameter).

+There are many string functions available that work with strings located in Program Space. All of these special string functions have a suffix of _P in the function name, and are declared in the <avr/pgmspace.h> header file.

+Caveats

+The macros and functions used to retrieve data from the Program Space have to generate some extra code in order to actually load the data from the Program Space. This incurs some extra overhead in terms of code space (extra opcodes) and execution time. Usually, both the space and time overhead is minimal compared to the space savings of putting data in Program Space. But you should be aware of this so you can minimize the number of calls within a single function that gets the same piece of data from Program Space. It is always instructive to look at the resulting disassembly from the compiler.
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pgmspace_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pgmspace_8h.html new file mode 100644 index 0000000..34950cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/pgmspace_8h.html @@ -0,0 +1,732 @@ + + + + + avr-libc: pgmspace.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

pgmspace.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define __PGMSPACE_H_   1
+#define __need_size_t
+#define __ATTR_PROGMEM__   __attribute__((__progmem__))
+#define __ATTR_PURE__   __attribute__((__pure__))
#define PROGMEM   __ATTR_PROGMEM__
#define PSTR(s)   ((const PROGMEM char *)(s))
#define __LPM_classic__(addr)
#define __LPM_enhanced__(addr)
#define __LPM_word_classic__(addr)
#define __LPM_word_enhanced__(addr)
#define __LPM_dword_classic__(addr)
#define __LPM_dword_enhanced__(addr)
#define __LPM_float_classic__(addr)
#define __LPM_float_enhanced__(addr)
+#define __LPM(addr)   __LPM_classic__(addr)
+#define __LPM_word(addr)   __LPM_word_classic__(addr)
+#define __LPM_dword(addr)   __LPM_dword_classic__(addr)
+#define __LPM_float(addr)   __LPM_float_classic__(addr)
#define pgm_read_byte_near(address_short)   __LPM((uint16_t)(address_short))
#define pgm_read_word_near(address_short)   __LPM_word((uint16_t)(address_short))
#define pgm_read_dword_near(address_short)   __LPM_dword((uint16_t)(address_short))
#define pgm_read_float_near(address_short)   __LPM_float((uint16_t)(address_short))
#define __ELPM_classic__(addr)
#define __ELPM_enhanced__(addr)
#define __ELPM_word_classic__(addr)
#define __ELPM_word_enhanced__(addr)
+#define __ELPM_dword_classic__(addr)
#define __ELPM_dword_enhanced__(addr)
+#define __ELPM_float_classic__(addr)
#define __ELPM_float_enhanced__(addr)
+#define __ELPM(addr)   __ELPM_classic__(addr)
+#define __ELPM_word(addr)   __ELPM_word_classic__(addr)
+#define __ELPM_dword(addr)   __ELPM_dword_classic__(addr)
+#define __ELPM_float(addr)   __ELPM_float_classic__(addr)
#define pgm_read_byte_far(address_long)   __ELPM((uint32_t)(address_long))
#define pgm_read_word_far(address_long)   __ELPM_word((uint32_t)(address_long))
#define pgm_read_dword_far(address_long)   __ELPM_dword((uint32_t)(address_long))
#define pgm_read_float_far(address_long)   __ELPM_float((uint32_t)(address_long))
#define pgm_read_byte(address_short)   pgm_read_byte_near(address_short)
#define pgm_read_word(address_short)   pgm_read_word_near(address_short)
#define pgm_read_dword(address_short)   pgm_read_dword_near(address_short)
#define pgm_read_float(address_short)   pgm_read_float_near(address_short)
#define PGM_P   const prog_char *
#define PGM_VOID_P   const prog_void *

Typedefs

typedef void PROGMEM prog_void
typedef char PROGMEM prog_char
typedef unsigned char PROGMEM prog_uchar
typedef int8_t PROGMEM prog_int8_t
typedef uint8_t PROGMEM prog_uint8_t
typedef int16_t PROGMEM prog_int16_t
typedef uint16_t PROGMEM prog_uint16_t
typedef int32_t PROGMEM prog_int32_t
typedef uint32_t PROGMEM prog_uint32_t
typedef int64_t PROGMEM prog_int64_t
typedef uint64_t PROGMEM prog_uint64_t

Functions

PGM_VOID_P memchr_P (PGM_VOID_P, int __val, size_t __len)
int memcmp_P (const void *, PGM_VOID_P, size_t) __ATTR_PURE__
void * memcpy_P (void *, PGM_VOID_P, size_t)
void * memmem_P (const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__
PGM_VOID_P memrchr_P (PGM_VOID_P, int __val, size_t __len)
char * strcat_P (char *, PGM_P)
PGM_P strchr_P (PGM_P, int __val)
PGM_P strchrnul_P (PGM_P, int __val)
int strcmp_P (const char *, PGM_P) __ATTR_PURE__
char * strcpy_P (char *, PGM_P)
int strcasecmp_P (const char *, PGM_P) __ATTR_PURE__
char * strcasestr_P (const char *, PGM_P) __ATTR_PURE__
size_t strcspn_P (const char *__s, PGM_P __reject) __ATTR_PURE__
size_t strlcat_P (char *, PGM_P, size_t)
size_t strlcpy_P (char *, PGM_P, size_t)
size_t strlen_P (PGM_P)
size_t strnlen_P (PGM_P, size_t)
int strncmp_P (const char *, PGM_P, size_t) __ATTR_PURE__
int strncasecmp_P (const char *, PGM_P, size_t) __ATTR_PURE__
char * strncat_P (char *, PGM_P, size_t)
char * strncpy_P (char *, PGM_P, size_t)
char * strpbrk_P (const char *__s, PGM_P __accept) __ATTR_PURE__
PGM_P strrchr_P (PGM_P, int __val)
char * strsep_P (char **__sp, PGM_P __delim)
size_t strspn_P (const char *__s, PGM_P __accept) __ATTR_PURE__
char * strstr_P (const char *, PGM_P) __ATTR_PURE__
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define __ELPM_classic__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                    \
+    uint32_t __addr32 = (uint32_t)(addr); \
+    uint8_t __result;               \
+    __asm__                         \
+    (                               \
+        "out %2, %C1" "\n\t"        \
+        "mov r31, %B1" "\n\t"       \
+        "mov r30, %A1" "\n\t"       \
+        "elpm" "\n\t"               \
+        "mov %0, r0" "\n\t"         \
+        : "=r" (__result)           \
+        : "r" (__addr32),           \
+          "I" (_SFR_IO_ADDR(RAMPZ)) \
+        : "r0", "r30", "r31"        \
+    );                              \
+    __result;                       \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __ELPM_dword_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                          \
+    uint32_t __addr32 = (uint32_t)(addr); \
+    uint32_t __result;                    \
+    __asm__                               \
+    (                                     \
+        "out %2, %C1"   "\n\t"            \
+        "movw r30, %1"  "\n\t"            \
+        "elpm %A0, Z+"  "\n\t"            \
+        "elpm %B0, Z+"  "\n\t"            \
+        "elpm %C0, Z+"  "\n\t"            \
+        "elpm %D0, Z"   "\n\t"            \
+        : "=r" (__result)                 \
+        : "r" (__addr32),                 \
+          "I" (_SFR_IO_ADDR(RAMPZ))       \
+        : "r30", "r31"                    \
+    );                                    \
+    __result;                             \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __ELPM_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                    \
+    uint32_t __addr32 = (uint32_t)(addr); \
+    uint8_t __result;               \
+    __asm__                         \
+    (                               \
+        "out %2, %C1" "\n\t"        \
+        "movw r30, %1" "\n\t"       \
+        "elpm %0, Z+" "\n\t"        \
+        : "=r" (__result)           \
+        : "r" (__addr32),           \
+          "I" (_SFR_IO_ADDR(RAMPZ)) \
+        : "r30", "r31"              \
+    );                              \
+    __result;                       \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __ELPM_float_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                          \
+    uint32_t __addr32 = (uint32_t)(addr); \
+    float __result;                       \
+    __asm__                               \
+    (                                     \
+        "out %2, %C1"   "\n\t"            \
+        "movw r30, %1"  "\n\t"            \
+        "elpm %A0, Z+"  "\n\t"            \
+        "elpm %B0, Z+"  "\n\t"            \
+        "elpm %C0, Z+"  "\n\t"            \
+        "elpm %D0, Z"   "\n\t"            \
+        : "=r" (__result)                 \
+        : "r" (__addr32),                 \
+          "I" (_SFR_IO_ADDR(RAMPZ))       \
+        : "r30", "r31"                    \
+    );                                    \
+    __result;                             \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __ELPM_word_classic__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                        \
+    uint32_t __addr32 = (uint32_t)(addr); \
+    uint16_t __result;                  \
+    __asm__                             \
+    (                                   \
+        "out %2, %C1"   "\n\t"          \
+        "mov r31, %B1"  "\n\t"          \
+        "mov r30, %A1"  "\n\t"          \
+        "elpm"          "\n\t"          \
+        "mov %A0, r0"   "\n\t"          \
+        "in r0, %2"     "\n\t"          \
+        "adiw r30, 1"   "\n\t"          \
+        "adc r0, __zero_reg__" "\n\t"   \
+        "out %2, r0"    "\n\t"          \
+        "elpm"          "\n\t"          \
+        "mov %B0, r0"   "\n\t"          \
+        : "=r" (__result)               \
+        : "r" (__addr32),               \
+          "I" (_SFR_IO_ADDR(RAMPZ))     \
+        : "r0", "r30", "r31"            \
+    );                                  \
+    __result;                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __ELPM_word_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                        \
+    uint32_t __addr32 = (uint32_t)(addr); \
+    uint16_t __result;                  \
+    __asm__                             \
+    (                                   \
+        "out %2, %C1"   "\n\t"          \
+        "movw r30, %1"  "\n\t"          \
+        "elpm %A0, Z+"  "\n\t"          \
+        "elpm %B0, Z"   "\n\t"          \
+        : "=r" (__result)               \
+        : "r" (__addr32),               \
+          "I" (_SFR_IO_ADDR(RAMPZ))     \
+        : "r30", "r31"                  \
+    );                                  \
+    __result;                           \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_classic__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                \
+    uint16_t __addr16 = (uint16_t)(addr); \
+    uint8_t __result;           \
+    __asm__                     \
+    (                           \
+        "lpm" "\n\t"            \
+        "mov %0, r0" "\n\t"     \
+        : "=r" (__result)       \
+        : "z" (__addr16)        \
+        : "r0"                  \
+    );                          \
+    __result;                   \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_dword_classic__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                            \
+    uint16_t __addr16 = (uint16_t)(addr);   \
+    uint32_t __result;                      \
+    __asm__                                 \
+    (                                       \
+        "lpm"           "\n\t"              \
+        "mov %A0, r0"   "\n\t"              \
+        "adiw r30, 1"   "\n\t"              \
+        "lpm"           "\n\t"              \
+        "mov %B0, r0"   "\n\t"              \
+        "adiw r30, 1"   "\n\t"              \
+        "lpm"           "\n\t"              \
+        "mov %C0, r0"   "\n\t"              \
+        "adiw r30, 1"   "\n\t"              \
+        "lpm"           "\n\t"              \
+        "mov %D0, r0"   "\n\t"              \
+        : "=r" (__result), "=z" (__addr16)  \
+        : "1" (__addr16)                    \
+        : "r0"                              \
+    );                                      \
+    __result;                               \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_dword_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                            \
+    uint16_t __addr16 = (uint16_t)(addr);   \
+    uint32_t __result;                      \
+    __asm__                                 \
+    (                                       \
+        "lpm %A0, Z+"   "\n\t"              \
+        "lpm %B0, Z+"   "\n\t"              \
+        "lpm %C0, Z+"   "\n\t"              \
+        "lpm %D0, Z"    "\n\t"              \
+        : "=r" (__result), "=z" (__addr16)  \
+        : "1" (__addr16)                    \
+    );                                      \
+    __result;                               \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                \
+    uint16_t __addr16 = (uint16_t)(addr); \
+    uint8_t __result;           \
+    __asm__                     \
+    (                           \
+        "lpm %0, Z" "\n\t"      \
+        : "=r" (__result)       \
+        : "z" (__addr16)        \
+    );                          \
+    __result;                   \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_float_classic__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                            \
+    uint16_t __addr16 = (uint16_t)(addr);   \
+    float __result;                         \
+    __asm__                                 \
+    (                                       \
+        "lpm"           "\n\t"              \
+        "mov %A0, r0"   "\n\t"              \
+        "adiw r30, 1"   "\n\t"              \
+        "lpm"           "\n\t"              \
+        "mov %B0, r0"   "\n\t"              \
+        "adiw r30, 1"   "\n\t"              \
+        "lpm"           "\n\t"              \
+        "mov %C0, r0"   "\n\t"              \
+        "adiw r30, 1"   "\n\t"              \
+        "lpm"           "\n\t"              \
+        "mov %D0, r0"   "\n\t"              \
+        : "=r" (__result), "=z" (__addr16)  \
+        : "1" (__addr16)                    \
+        : "r0"                              \
+    );                                      \
+    __result;                               \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_float_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                            \
+    uint16_t __addr16 = (uint16_t)(addr);   \
+    float __result;                         \
+    __asm__                                 \
+    (                                       \
+        "lpm %A0, Z+"   "\n\t"              \
+        "lpm %B0, Z+"   "\n\t"              \
+        "lpm %C0, Z+"   "\n\t"              \
+        "lpm %D0, Z"    "\n\t"              \
+        : "=r" (__result), "=z" (__addr16)  \
+        : "1" (__addr16)                    \
+    );                                      \
+    __result;                               \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_word_classic__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                            \
+    uint16_t __addr16 = (uint16_t)(addr);   \
+    uint16_t __result;                      \
+    __asm__                                 \
+    (                                       \
+        "lpm"           "\n\t"              \
+        "mov %A0, r0"   "\n\t"              \
+        "adiw r30, 1"   "\n\t"              \
+        "lpm"           "\n\t"              \
+        "mov %B0, r0"   "\n\t"              \
+        : "=r" (__result), "=z" (__addr16)  \
+        : "1" (__addr16)                    \
+        : "r0"                              \
+    );                                      \
+    __result;                               \
+}))
+
+
+

+ +

+
+ + + + + + + + + +
#define __LPM_word_enhanced__ (addr   ) 
+
+
+ +

+Value:

(__extension__({                            \
+    uint16_t __addr16 = (uint16_t)(addr);   \
+    uint16_t __result;                      \
+    __asm__                                 \
+    (                                       \
+        "lpm %A0, Z+"   "\n\t"              \
+        "lpm %B0, Z"    "\n\t"              \
+        : "=r" (__result), "=z" (__addr16)  \
+        : "1" (__addr16)                    \
+    );                                      \
+    __result;                               \
+}))
+
+
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/porting.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/porting.html new file mode 100644 index 0000000..c6374c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/porting.html @@ -0,0 +1,133 @@ + + + + + avr-libc: Porting From IAR to AVR GCC + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Porting From IAR to AVR GCC

+Introduction

+C language was designed to be a portable language. There two main types of porting activities: porting an application to a different platform (OS and/or processor), and porting to a different compiler. Porting to a different compiler can be exacerbated when the application is an embedded system. For example, the C language Standard, strangely, does not specify a standard for declaring and defining Interrupt Service Routines (ISRs). Different compilers have different ways of defining registers, some of which use non-standard language constructs.

+This chapter describes some methods and pointers on porting an AVR application built with the IAR compiler to the GNU toolchain (AVR GCC). Note that this may not be an exhaustive list.

+Registers

+IO header files contain identifiers for all the register names and bit names for a particular processor. IAR has individual header files for each processor and they must be included when registers are being used in the code. For example:

+

 #include <iom169.h> 
+

+

Note:
IAR does not always use the same register names or bit names that are used in the AVR datasheet.
+AVR GCC also has individual IO header files for each processor. However, the actual processor type is specified as a command line flag to the compiler. (Using the -mmcu=processor flag.) This is usually done in the Makefile. This allows you to specify only a single header file for any processor type:

+

 #include <avr/io.h> 
+

+

Note:
The forward slash in the <avr/io.h> file name that is used to separate subdirectories can be used on Windows distributions of the toolchain and is the recommended method of including this file.
+The compiler knows the processor type and through the single header file above, it can pull in and include the correct individual IO header file. This has the advantage that you only have to specify one generic header file, and you can easily port your application to another processor type without having to change every file to include the new IO header file.

+The AVR toolchain tries to adhere to the exact names of the registers and names of the bits found in the AVR datasheet. There may be some descrepencies between the register names found in the IAR IO header files and the AVR GCC IO header files.

+Interrupt Service Routines (ISRs)

+As mentioned above, the C language Standard, strangely, does not specify a standard way of declaring and defining an ISR. Hence, every compiler seems to have their own special way of doing so.

+IAR declares an ISR like so:

+

#pragma vector=TIMER0_OVF_vect
+__interrupt void MotorPWMBottom()
+{
+    // code
+}
+

+In AVR GCC, you declare an ISR like so:

ISR(PCINT1_vect)
+{ 
+    //code
+}
+

+AVR GCC uses the ISR macro to define an ISR. This macro requries the header file:

+

#include <avr/interrupt.h>
+

+The names of the various interrupt vectors are found in the individual processor IO header files that you must include with <avr/io.h>.

+

Note:
The names of the interrupt vectors in AVR GCC has been changed to match the names of the vectors in IAR. This significantly helps in porting applications from IAR to AVR GCC.
+

+Intrinsic Routines

+IAR has a number of intrinsic routine such as

+__enable_interrupts() __disable_interrupts() __watchdog_reset()

+These intrinsic functions compile to specific AVR opcodes (SEI, CLI, WDR).

+There are equivalent macros that are used in AVR GCC, however they are not located in a single include file.

+AVR GCC has sei() for __enable_interrupts(), and cli() for __disable_interrupts(). Both of these macros are located in <avr/interrupts.h>.

+AVR GCC has the macro wdt_reset() in place of __watchdog_reset(). However, there is a whole Watchdog Timer API available in AVR GCC that can be found in <avr/wdt.h>.

+Flash Variables

+The C language was not designed for Harvard architecture processors with separate memory spaces. This means that there are various non-standard ways to define a variable whose data resides in the Program Memory (Flash).

+IAR uses a non-standard keyword to declare a variable in Program Memory:

+

 __flash int mydata[] = .... 
+

+AVR GCC uses Variable Attributes to achieve the same effect:

+

 int mydata[] __attribute__((progmem)) 
+

+

Note:
See the GCC User Manual for more information about Variable Attributes.
+avr-libc provides a convenience macro for the Variable Attribute:

+

#include <avr/pgmspace.h>
+.
+.
+.
+int mydata[] PROGMEM = ....
+

+

Note:
The PROGMEM macro expands to the Variable Attribute of progmem. This macro requires that you include <avr/pgmspace.h>. This is the canonical method for defining a variable in Program Space.
+To read back flash data, use the pgm_read_*() macros defined in <avr/pgmspace.h>. All Program Memory handling macros are defined there.

+There is also a way to create a method to define variables in Program Memory that is common between the two compilers (IAR and AVR GCC). Create a header file that has these definitions:

+

#if defined(__ICCAVR__) // IAR C Compiler
+#define FLASH_DECLARE(x) __flash x
+#endif
+#if defined(__GNUC__) // GNU Compiler
+#define FLASH_DECLARE(x) x __attribute__((__progmem__))
+#endif 
+

+This code snippet checks for the IAR compiler or for the GCC compiler and defines a macro FLASH_DECLARE(x) that will declare a variable in Program Memory using the appropriate method based on the compiler that is being used. Then you would used it like so:

+

 FLASH_DECLARE(int mydata[] = ...); 
+

+Non-Returning main()

+To declare main() to be a non-returning function in IAR, it is done like this:
__C_task void main(void)
+{
+    // code
+}
+

+To do the equivalent in AVR GCC, do this:

+

void main(void) __attribute__((noreturn));
+        
+void main(void)
+{
+    //...
+}
+

+

Note:
See the GCC User Manual for more information on Function Attributes.
+In AVR GCC, a prototype for main() is required so you can declare the function attribute to specify that the main() function is of type "noreturn". Then, define main() as normal. Note that the return type for main() is now void.

+Locking Registers

+The IAR compiler allows a user to lock general registers from r15 and down by using compiler options and this keyword syntax:

+

__regvar __no_init volatile unsigned int filteredTimeSinceCommutation @14;
+

+This line locks r14 for use only when explicitly referenced in your code thorugh the var name "filteredTimeSinceCommutation". This means that the compiler cannot dispose of it at its own will.

+To do this in AVR GCC, do this:

+

register unsigned char counter asm("r3");
+

+Typically, it should be possible to use r2 through r15 that way.

+

Note:
Do not reserve r0 or r1 as these are used internally by the compiler for a temporary register and for a zero value.

+Locking registers is not recommended in AVR GCC as it removes this register from the control of the compiler, which may make code generation worse. Use at your own risk.

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/power_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/power_8h.html new file mode 100644 index 0000000..e7853ef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/power_8h.html @@ -0,0 +1,101 @@ + + + + + avr-libc: power.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

power.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + +

Defines

+#define _AVR_POWER_H_   1
#define clock_prescale_set(x)
+#define clock_prescale_get()   (clock_div_t)(CLKPR & (uint8_t)((1<<CLKPS0)|(1<<CLKPS1)|(1<<CLKPS2)|(1<<CLKPS3)))

Enumerations

enum  clock_div_t {
+  clock_div_1 = 0, +clock_div_2 = 1, +clock_div_4 = 2, +clock_div_8 = 3, +
+  clock_div_16 = 4, +clock_div_32 = 5, +clock_div_64 = 6, +clock_div_128 = 7, +
+  clock_div_256 = 8 +
+ }
+


Define Documentation

+ +
+
+ + + + + + + + + +
#define clock_prescale_set (  ) 
+
+
+ +

+Value:

{ \
+        uint8_t tmp = _BV(CLKPCE); \
+        __asm__ __volatile__ ( \
+                "in __tmp_reg__,__SREG__" "\n\t" \
+                "cli" "\n\t" \
+                "sts %1, %0" "\n\t" \
+                "sts %1, %2" "\n\t" \
+                "out __SREG__, __tmp_reg__" \
+                : /* no outputs */ \
+                : "d" (tmp), \
+                  "M" (_SFR_MEM_ADDR(CLKPR)), \
+                  "d" (x) \
+                : "r0"); \
+}
+
+
+

+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/release_method.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/release_method.html new file mode 100644 index 0000000..3bfb985 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/release_method.html @@ -0,0 +1,87 @@ + + + + + avr-libc: Release Numbering and Methodology + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Release Numbering and Methodology

+Release Version Numbering Scheme

+

+Stable Versions

+A stable release will always have a minor number that is an even number. This implies that you should be able to upgrade to a new version of the library with the same major and minor numbers without fear that any of the APIs have changed. The only changes that should be made to a stable branch are bug fixes and under some circumstances, additional functionality (e.g. adding support for a new device).

+If major version number has changed, this implies that the required versions of gcc and binutils have changed. Consult the README file in the toplevel directory of the AVR Libc source for which versions are required.

+Development Versions

+The major version number of a development series is always the same as the last stable release.

+The minor version number of a development series is always an odd number and is 1 more than the last stable release.

+The patch version number of a development series is always 0 until a new branch is cut at which point the patch number is changed to 90 to denote the branch is approaching a release and the date appended to the version to denote that it is still in development.

+All versions in development in cvs will also always have the date appended as a fourth version number. The format of the date will be YYYYMMDD.

+So, the development version number will look like this:

+

+1.1.0.20030825
+

+While a pre-release version number on a branch (destined to become either 1.2 or 2.0) will look like this:

+

+1.1.90.20030828
+

+Releasing AVR Libc

+The information in this section is only relevant to AVR Libc developers and can be ignored by end users.

+

Note:
In what follows, I assume you know how to use cvs and how to checkout multiple source trees in a single directory without having them clobber each other. If you don't know how to do this, you probably shouldn't be making releases or cutting branches.
+

+Creating a cvs branch

+The following steps should be taken to cut a branch in cvs:

+

    +
  1. Check out a fresh source tree from cvs HEAD.
  2. Update the NEWS file with pending release number and commit to cvs HEAD:
    + Change "Changes since avr-libc-<last_release>:" to "Changes in avr-libc-<this_relelase>:".
  3. Set the branch-point tag (setting <major> and <minor> accordingly):
    + 'cvs tag avr-libc-<major>_<minor>-branchpoint'
  4. Create the branch:
    + 'cvs tag -b avr-libc-<major>_<minor>-branch'
  5. Update the package version in configure.ac and commit configure.ac to cvs HEAD:
    + Change minor number to next odd value.
  6. Update the NEWS file and commit to cvs HEAD:
    + Add "Changes since avr-libc-<this_release>:"
  7. Check out a new tree for the branch:
    + 'cvs co -r avr-libc-<major>_<minor>-branch'
  8. Update the package version in configure.ac and commit configure.ac to cvs branch:
    + Change the patch number to 90 to denote that this now a branch leading up to a release. Be sure to leave the <date> part of the version.
  9. Bring the build system up to date by running bootstrap and configure.
  10. Perform a 'make distcheck' and make sure it succeeds. This will create the snapshot source tarball. This should be considered the first release candidate.
  11. Upload the snapshot tarball to savannah.
  12. Announce the branch and the branch tag to the avr-libc-dev list so other developers can checkout the branch.
+

+

Note:
CVS tags do not allow the use of periods ('.').
+

+Making a release

+A stable release will only be done on a branch, not from the cvs HEAD.

+The following steps should be taken when making a release:

+

    +
  1. Make sure the source tree you are working from is on the correct branch:
    + 'cvs update -r avr-libc-<major>_<minor>-branch'
  2. Update the package version in configure.ac and commit it to cvs.
  3. Update the gnu tool chain version requirements in the README and commit to cvs.
  4. Update the ChangeLog file to note the release and commit to cvs on the branch:
    + Add "Released avr-libc-<this_release>."
  5. Update the NEWS file with pending release number and commit to cvs:
    + Change "Changes since avr-libc-<last_release>:" to "Changes in avr-libc-<this_relelase>:".
  6. Bring the build system up to date by running bootstrap and configure.
  7. Perform a 'make distcheck' and make sure it succeeds. This will create the source tarball.
  8. Tag the release:
    + 'cvs tag avr-libc-<major>_<minor>_<patch>-release'
  9. Upload the tarball to savannah.
  10. Update the NEWS file, and commit to cvs:
    + Add "Changes since avr-libc-<major>_<minor>_<patch>:"
  11. Generate the latest documentation and upload to savannah.
  12. Announce the release.
+

+The following hypothetical diagram should help clarify version and branch relationships.

+

+releases.png +

Release tree

+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/releases.png b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/releases.png new file mode 100644 index 0000000..b8c193e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/releases.png differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/setbaud_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/setbaud_8h.html new file mode 100644 index 0000000..5762784 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/setbaud_8h.html @@ -0,0 +1,52 @@ + + + + + avr-libc: setbaud.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

setbaud.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + +

Defines

#define BAUD_TOL   2
#define UBRR_VALUE
#define UBRRL_VALUE
#define UBRRH_VALUE
#define USE_2X   0
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/setjmp_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/setjmp_8h.html new file mode 100644 index 0000000..746b90f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/setjmp_8h.html @@ -0,0 +1,53 @@ + + + + + avr-libc: setjmp.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

setjmp.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + +

Defines

+#define __SETJMP_H_   1
+#define __ATTR_NORETURN__   __attribute__((__noreturn__))

Functions

int setjmp (jmp_buf __jmpb)
void longjmp (jmp_buf __jmpb, int __ret) __ATTR_NORETURN__
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/sleep_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/sleep_8h.html new file mode 100644 index 0000000..4bd75f0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/sleep_8h.html @@ -0,0 +1,61 @@ + + + + + avr-libc: sleep.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

sleep.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + +

Defines

+#define _AVR_SLEEP_H_   1
+#define _SLEEP_CONTROL_REG   MCUCR
+#define _SLEEP_ENABLE_MASK   _BV(SE)

Functions

void sleep_enable (void)
void sleep_disable (void)
void sleep_cpu (void)
+void sleep_mode (void)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdint_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdint_8h.html new file mode 100644 index 0000000..ca41ef2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdint_8h.html @@ -0,0 +1,247 @@ + + + + + avr-libc: stdint.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

stdint.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define __USING_MINT8   0
+#define __CONCATenate(left, right)   left ## right
+#define __CONCAT(left, right)   __CONCATenate(left, right)
Limits of specified-width integer types
C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <stdint.h> is included

#define INT8_MAX   0x7f
#define INT8_MIN   (-INT8_MAX - 1)
#define UINT8_MAX   (__CONCAT(INT8_MAX, U) * 2U + 1U)
#define INT16_MAX   0x7fff
#define INT16_MIN   (-INT16_MAX - 1)
#define UINT16_MAX   (__CONCAT(INT16_MAX, U) * 2U + 1U)
#define INT32_MAX   0x7fffffffL
#define INT32_MIN   (-INT32_MAX - 1L)
#define UINT32_MAX   (__CONCAT(INT32_MAX, U) * 2UL + 1UL)
#define INT64_MAX   0x7fffffffffffffffLL
#define INT64_MIN   (-INT64_MAX - 1LL)
#define UINT64_MAX   (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL)
Limits of minimum-width integer types


#define INT_LEAST8_MAX   INT8_MAX
#define INT_LEAST8_MIN   INT8_MIN
#define UINT_LEAST8_MAX   UINT8_MAX
#define INT_LEAST16_MAX   INT16_MAX
#define INT_LEAST16_MIN   INT16_MIN
#define UINT_LEAST16_MAX   UINT16_MAX
#define INT_LEAST32_MAX   INT32_MAX
#define INT_LEAST32_MIN   INT32_MIN
#define UINT_LEAST32_MAX   UINT32_MAX
#define INT_LEAST64_MAX   INT64_MAX
#define INT_LEAST64_MIN   INT64_MIN
#define UINT_LEAST64_MAX   UINT64_MAX
Limits of fastest minimum-width integer types


#define INT_FAST8_MAX   INT8_MAX
#define INT_FAST8_MIN   INT8_MIN
#define UINT_FAST8_MAX   UINT8_MAX
#define INT_FAST16_MAX   INT16_MAX
#define INT_FAST16_MIN   INT16_MIN
#define UINT_FAST16_MAX   UINT16_MAX
#define INT_FAST32_MAX   INT32_MAX
#define INT_FAST32_MIN   INT32_MIN
#define UINT_FAST32_MAX   UINT32_MAX
#define INT_FAST64_MAX   INT64_MAX
#define INT_FAST64_MIN   INT64_MIN
#define UINT_FAST64_MAX   UINT64_MAX
Limits of integer types capable of holding object pointers


#define INTPTR_MAX   INT16_MAX
#define INTPTR_MIN   INT16_MIN
#define UINTPTR_MAX   UINT16_MAX
Limits of greatest-width integer types


#define INTMAX_MAX   INT64_MAX
#define INTMAX_MIN   INT64_MIN
#define UINTMAX_MAX   UINT64_MAX
Limits of other integer types
C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <stdint.h> is included

#define PTRDIFF_MAX   INT16_MAX
#define PTRDIFF_MIN   INT16_MIN
#define SIG_ATOMIC_MAX   INT8_MAX
#define SIG_ATOMIC_MIN   INT8_MIN
#define SIZE_MAX   (__CONCAT(INT16_MAX, U))
Macros for integer constants
C++ implementations should define these macros only when __STDC_CONSTANT_MACROS is defined before <stdint.h> is included.

+These definitions are valid for integer constants without suffix and for macros defined as integer constant without suffix

#define INT8_C(value)   ((int8_t) value)
#define UINT8_C(value)   ((uint8_t) __CONCAT(value, U))
#define INT16_C(value)   value
#define UINT16_C(value)   __CONCAT(value, U)
#define INT32_C(value)   __CONCAT(value, L)
#define UINT32_C(value)   __CONCAT(value, UL)
#define INT64_C(value)   __CONCAT(value, LL)
#define UINT64_C(value)   __CONCAT(value, ULL)
#define INTMAX_C(value)   __CONCAT(value, LL)
#define UINTMAX_C(value)   __CONCAT(value, ULL)

Typedefs

Exact-width integer types
Integer types having exactly the specified width

typedef signed char int8_t
typedef unsigned char uint8_t
typedef signed int int16_t
typedef unsigned int uint16_t
typedef signed long int int32_t
typedef unsigned long int uint32_t
typedef signed long long int int64_t
typedef unsigned long long int uint64_t
Integer types capable of holding object pointers
These allow you to declare variables of the same size as a pointer.

typedef int16_t intptr_t
typedef uint16_t uintptr_t
Minimum-width integer types
Integer types having at least the specified width

typedef int8_t int_least8_t
typedef uint8_t uint_least8_t
typedef int16_t int_least16_t
typedef uint16_t uint_least16_t
typedef int32_t int_least32_t
typedef uint32_t uint_least32_t
typedef int64_t int_least64_t
typedef uint64_t uint_least64_t
Fastest minimum-width integer types
Integer types being usually fastest having at least the specified width

typedef int8_t int_fast8_t
typedef uint8_t uint_fast8_t
typedef int16_t int_fast16_t
typedef uint16_t uint_fast16_t
typedef int32_t int_fast32_t
typedef uint32_t uint_fast32_t
typedef int64_t int_fast64_t
typedef uint64_t uint_fast64_t
Greatest-width integer types
Types designating integer data capable of representing any value of any integer type in the corresponding signed or unsigned category

typedef int64_t intmax_t
typedef uint64_t uintmax_t
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdio_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdio_8h.html new file mode 100644 index 0000000..f2198eb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdio_8h.html @@ -0,0 +1,179 @@ + + + + + avr-libc: stdio.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

stdio.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define _STDIO_H_   1
+#define __need_NULL
+#define __need_size_t
#define FILE   struct __file
#define stdin   (__iob[0])
#define stdout   (__iob[1])
#define stderr   (__iob[2])
#define EOF   (-1)
#define fdev_set_udata(stream, u)   do { (stream)->udata = u; } while(0)
#define fdev_get_udata(stream)   ((stream)->udata)
#define fdev_setup_stream(stream, put, get, rwflag)
#define _FDEV_SETUP_READ   __SRD
#define _FDEV_SETUP_WRITE   __SWR
#define _FDEV_SETUP_RW   (__SRD|__SWR)
#define _FDEV_ERR   (-1)
#define _FDEV_EOF   (-2)
#define FDEV_SETUP_STREAM(put, get, rwflag)
#define fdev_close()
#define putc(__c, __stream)   fputc(__c, __stream)
#define putchar(__c)   fputc(__c, stdout)
#define getc(__stream)   fgetc(__stream)
#define getchar()   fgetc(stdin)
+#define SEEK_SET   0
+#define SEEK_CUR   1
+#define SEEK_END   2

Functions

int fclose (FILE *__stream)
int vfprintf (FILE *__stream, const char *__fmt, va_list __ap)
int vfprintf_P (FILE *__stream, const char *__fmt, va_list __ap)
int fputc (int __c, FILE *__stream)
int printf (const char *__fmt,...)
int printf_P (const char *__fmt,...)
int vprintf (const char *__fmt, va_list __ap)
int sprintf (char *__s, const char *__fmt,...)
int sprintf_P (char *__s, const char *__fmt,...)
int snprintf (char *__s, size_t __n, const char *__fmt,...)
int snprintf_P (char *__s, size_t __n, const char *__fmt,...)
int vsprintf (char *__s, const char *__fmt, va_list ap)
int vsprintf_P (char *__s, const char *__fmt, va_list ap)
int vsnprintf (char *__s, size_t __n, const char *__fmt, va_list ap)
int vsnprintf_P (char *__s, size_t __n, const char *__fmt, va_list ap)
int fprintf (FILE *__stream, const char *__fmt,...)
int fprintf_P (FILE *__stream, const char *__fmt,...)
int fputs (const char *__str, FILE *__stream)
int fputs_P (const char *__str, FILE *__stream)
int puts (const char *__str)
int puts_P (const char *__str)
size_t fwrite (const void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)
int fgetc (FILE *__stream)
int ungetc (int __c, FILE *__stream)
char * fgets (char *__str, int __size, FILE *__stream)
char * gets (char *__str)
size_t fread (void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)
void clearerr (FILE *__stream)
int feof (FILE *__stream)
int ferror (FILE *__stream)
int vfscanf (FILE *__stream, const char *__fmt, va_list __ap)
int vfscanf_P (FILE *__stream, const char *__fmt, va_list __ap)
int fscanf (FILE *__stream, const char *__fmt,...)
int fscanf_P (FILE *__stream, const char *__fmt,...)
int scanf (const char *__fmt,...)
int scanf_P (const char *__fmt,...)
int vscanf (const char *__fmt, va_list __ap)
int sscanf (const char *__buf, const char *__fmt,...)
int sscanf_P (const char *__buf, const char *__fmt,...)
int fflush (FILE *stream)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdiodemo-setup.jpg b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdiodemo-setup.jpg new file mode 100644 index 0000000..c457bfa Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdiodemo-setup.jpg differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdlib_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdlib_8h.html new file mode 100644 index 0000000..ef4d85f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/stdlib_8h.html @@ -0,0 +1,146 @@ + + + + + avr-libc: stdlib.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

stdlib.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  div_t
struct  ldiv_t

Non-standard (i.e. non-ISO C) functions.

#define RANDOM_MAX   0x7FFFFFFF
char * itoa (int __val, char *__s, int __radix)
char * ltoa (long int __val, char *__s, int __radix)
char * utoa (unsigned int __val, char *__s, int __radix)
char * ultoa (unsigned long int __val, char *__s, int __radix)
long random (void)
void srandom (unsigned long __seed)
long random_r (unsigned long *__ctx)

Conversion functions for double arguments.

Note that these functions are not located in the default library, libc.a, but in the mathematical library, libm.a. So when linking the application, the -lm option needs to be specified.

#define DTOSTR_ALWAYS_SIGN   0x01
#define DTOSTR_PLUS_SIGN   0x02
#define DTOSTR_UPPERCASE   0x04
char * dtostre (double __val, char *__s, unsigned char __prec, unsigned char __flags)
char * dtostrf (double __val, signed char __width, unsigned char __prec, char *__s)

Defines

+#define _STDLIB_H_   1
+#define __need_NULL
+#define __need_size_t
+#define __need_wchar_t
+#define __ptr_t   void *
#define RAND_MAX   0x7FFF

Typedefs

typedef int(* __compar_fn_t )(const void *, const void *)

Functions

void abort (void) __ATTR_NORETURN__
int abs (int __i)
long labs (long __i)
void * bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, int(*__compar)(const void *, const void *))
div_t div (int __num, int __denom) __asm__("__divmodhi4")
ldiv_t ldiv (long __num, long __denom) __asm__("__divmodsi4")
void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar)
long strtol (const char *__nptr, char **__endptr, int __base)
unsigned long strtoul (const char *__nptr, char **__endptr, int __base)
long atol (const char *__s) __ATTR_PURE__
int atoi (const char *__s) __ATTR_PURE__
void exit (int __status) __ATTR_NORETURN__
void * malloc (size_t __size) __ATTR_MALLOC__
void free (void *__ptr)
void * calloc (size_t __nele, size_t __size) __ATTR_MALLOC__
void * realloc (void *__ptr, size_t __size) __ATTR_MALLOC__
double strtod (const char *__nptr, char **__endptr)
double atof (const char *__nptr)
int rand (void)
void srand (unsigned int __seed)
int rand_r (unsigned long *__ctx)

Variables

size_t __malloc_margin
char * __malloc_heap_start
char * __malloc_heap_end
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasecmp_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasecmp_8S.html new file mode 100644 index 0000000..f799434 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasecmp_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcasecmp.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcasecmp.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasecmp__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasecmp__P_8S.html new file mode 100644 index 0000000..3ebfb3d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasecmp__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcasecmp_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcasecmp_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasestr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasestr_8S.html new file mode 100644 index 0000000..ccac260 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcasestr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcasestr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcasestr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcat_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcat_8S.html new file mode 100644 index 0000000..eae2b92 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcat_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcat.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcat.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcat__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcat__P_8S.html new file mode 100644 index 0000000..d088ba7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcat__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcat_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcat_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchr_8S.html new file mode 100644 index 0000000..277a6b1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strchr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strchr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchr__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchr__P_8S.html new file mode 100644 index 0000000..6c97c5e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchr__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strchr_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strchr_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchrnul_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchrnul_8S.html new file mode 100644 index 0000000..7bf2e1d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchrnul_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strchrnul.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strchrnul.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchrnul__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchrnul__P_8S.html new file mode 100644 index 0000000..41ab8f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strchrnul__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strchrnul_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strchrnul_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcmp_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcmp_8S.html new file mode 100644 index 0000000..e2a6351 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcmp_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcmp.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcmp.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcmp__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcmp__P_8S.html new file mode 100644 index 0000000..06b6c7a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcmp__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcmp_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcmp_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcpy_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcpy_8S.html new file mode 100644 index 0000000..56cff41 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcpy_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcpy.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcpy.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcpy__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcpy__P_8S.html new file mode 100644 index 0000000..4a241f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcpy__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcpy_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcpy_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcspn_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcspn_8S.html new file mode 100644 index 0000000..04c0135 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcspn_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcspn.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcspn.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcspn__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcspn__P_8S.html new file mode 100644 index 0000000..4956b95 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strcspn__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strcspn_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strcspn_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strdup_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strdup_8c.html new file mode 100644 index 0000000..acdb598 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strdup_8c.html @@ -0,0 +1,44 @@ + + + + + avr-libc: strdup.c File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strdup.c File Reference


Detailed Description

+ +

+ + + + + +

Functions

char * strdup (const char *s1)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/string_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/string_8h.html new file mode 100644 index 0000000..83ca819 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/string_8h.html @@ -0,0 +1,133 @@ + + + + + avr-libc: string.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

string.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define _STRING_H_   1
+#define __need_NULL
+#define __need_size_t
+#define __ATTR_PURE__   __attribute__((__pure__))
#define _FFS(x)

Functions

int ffs (int __val)
int ffsl (long __val)
int ffsll (long long __val)
void * memccpy (void *, const void *, int, size_t)
void * memchr (const void *, int, size_t) __ATTR_PURE__
int memcmp (const void *, const void *, size_t) __ATTR_PURE__
void * memcpy (void *, const void *, size_t)
void * memmem (const void *, size_t, const void *, size_t) __ATTR_PURE__
void * memmove (void *, const void *, size_t)
void * memrchr (const void *, int, size_t) __ATTR_PURE__
void * memset (void *, int, size_t)
char * strcat (char *, const char *)
char * strchr (const char *, int) __ATTR_PURE__
char * strchrnul (const char *, int) __ATTR_PURE__
int strcmp (const char *, const char *) __ATTR_PURE__
char * strcpy (char *, const char *)
int strcasecmp (const char *, const char *) __ATTR_PURE__
char * strcasestr (const char *, const char *) __ATTR_PURE__
size_t strcspn (const char *__s, const char *__reject) __ATTR_PURE__
char * strdup (const char *s1)
size_t strlcat (char *, const char *, size_t)
size_t strlcpy (char *, const char *, size_t)
size_t strlen (const char *) __ATTR_PURE__
char * strlwr (char *)
char * strncat (char *, const char *, size_t)
int strncmp (const char *, const char *, size_t) __ATTR_PURE__
char * strncpy (char *, const char *, size_t)
int strncasecmp (const char *, const char *, size_t) __ATTR_PURE__
size_t strnlen (const char *, size_t) __ATTR_PURE__
char * strpbrk (const char *__s, const char *__accept) __ATTR_PURE__
char * strrchr (const char *, int) __ATTR_PURE__
char * strrev (char *)
char * strsep (char **, const char *)
size_t strspn (const char *__s, const char *__accept) __ATTR_PURE__
char * strstr (const char *, const char *) __ATTR_PURE__
char * strtok (char *, const char *)
char * strtok_r (char *, const char *, char **)
char * strupr (char *)
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcat_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcat_8S.html new file mode 100644 index 0000000..07f5e1d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcat_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strlcat.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strlcat.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcat__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcat__P_8S.html new file mode 100644 index 0000000..3c15da8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcat__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strlcat_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strlcat_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcpy_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcpy_8S.html new file mode 100644 index 0000000..1b79e9d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcpy_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strlcpy.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strlcpy.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcpy__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcpy__P_8S.html new file mode 100644 index 0000000..d8b99f7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlcpy__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strlcpy_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strlcpy_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlen_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlen_8S.html new file mode 100644 index 0000000..21b029f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlen_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strlen.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strlen.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlen__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlen__P_8S.html new file mode 100644 index 0000000..2c40f2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlen__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strlen_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strlen_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlwr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlwr_8S.html new file mode 100644 index 0000000..45b3ea2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strlwr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strlwr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strlwr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncasecmp_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncasecmp_8S.html new file mode 100644 index 0000000..02648b2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncasecmp_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncasecmp.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncasecmp.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncasecmp__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncasecmp__P_8S.html new file mode 100644 index 0000000..c841a1c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncasecmp__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncasecmp_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncasecmp_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncat_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncat_8S.html new file mode 100644 index 0000000..7b755a7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncat_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncat.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncat.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncat__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncat__P_8S.html new file mode 100644 index 0000000..b71c62b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncat__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncat_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncat_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncmp_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncmp_8S.html new file mode 100644 index 0000000..7ad830b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncmp_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncmp.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncmp.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncmp__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncmp__P_8S.html new file mode 100644 index 0000000..2a5659c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncmp__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncmp_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncmp_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncpy_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncpy_8S.html new file mode 100644 index 0000000..730ea3c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncpy_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncpy.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncpy.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncpy__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncpy__P_8S.html new file mode 100644 index 0000000..7179113 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strncpy__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strncpy_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strncpy_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strnlen_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strnlen_8S.html new file mode 100644 index 0000000..f908075 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strnlen_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strnlen.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strnlen.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strnlen__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strnlen__P_8S.html new file mode 100644 index 0000000..c554a3c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strnlen__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strnlen_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strnlen_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strpbrk_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strpbrk_8S.html new file mode 100644 index 0000000..83284f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strpbrk_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strpbrk.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strpbrk.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strpbrk__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strpbrk__P_8S.html new file mode 100644 index 0000000..2f8e5c1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strpbrk__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strpbrk_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strpbrk_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrchr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrchr_8S.html new file mode 100644 index 0000000..34bef27 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrchr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strrchr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strrchr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrchr__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrchr__P_8S.html new file mode 100644 index 0000000..196ee18 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrchr__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strrchr_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strrchr_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrev_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrev_8S.html new file mode 100644 index 0000000..b750175 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strrev_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strrev.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strrev.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strsep_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strsep_8S.html new file mode 100644 index 0000000..ef804d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strsep_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strsep.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strsep.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strsep__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strsep__P_8S.html new file mode 100644 index 0000000..74922bb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strsep__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strsep_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strsep_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strspn_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strspn_8S.html new file mode 100644 index 0000000..7a9eebf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strspn_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strspn.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strspn.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strspn__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strspn__P_8S.html new file mode 100644 index 0000000..5cfc318 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strspn__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strspn_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strspn_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strstr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strstr_8S.html new file mode 100644 index 0000000..16b8918 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strstr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strstr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strstr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strstr__P_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strstr__P_8S.html new file mode 100644 index 0000000..a320706 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strstr__P_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strstr_P.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strstr_P.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strtok_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strtok_8c.html new file mode 100644 index 0000000..7633d72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strtok_8c.html @@ -0,0 +1,48 @@ + + + + + avr-libc: strtok.c File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strtok.c File Reference


Detailed Description

+ +

+ + + + + + + + +

Functions

char * strtok (char *s, const char *delim)

Variables

+static char * p
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strtok__r_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strtok__r_8S.html new file mode 100644 index 0000000..e7efb55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strtok__r_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strtok_r.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strtok_r.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/structdiv__t.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/structdiv__t.html new file mode 100644 index 0000000..25c5c69 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/structdiv__t.html @@ -0,0 +1,80 @@ + + + + + avr-libc: div_t Struct Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

div_t Struct Reference
+ +[<stdlib.h>: General utilities] +


Detailed Description

+Result type for function div(). + + + + + + +

Data Fields

int quot
int rem
+

Field Documentation

+ +
+
+ + + + +
int div_t::quot
+
+
+ +

+The Quotient. +

+

+ +

+
+ + + + +
int div_t::rem
+
+
+ +

+The Remainder. +

+

+


The documentation for this struct was generated from the following file: +
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/structldiv__t.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/structldiv__t.html new file mode 100644 index 0000000..0261dc7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/structldiv__t.html @@ -0,0 +1,80 @@ + + + + + avr-libc: ldiv_t Struct Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

ldiv_t Struct Reference
+ +[<stdlib.h>: General utilities] +


Detailed Description

+Result type for function ldiv(). + + + + + + +

Data Fields

long quot
long rem
+

Field Documentation

+ +
+
+ + + + +
long ldiv_t::quot
+
+
+ +

+The Quotient. +

+

+ +

+
+ + + + +
long ldiv_t::rem
+
+
+ +

+The Remainder. +

+

+


The documentation for this struct was generated from the following file: +
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strupr_8S.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strupr_8S.html new file mode 100644 index 0000000..d74d340 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/strupr_8S.html @@ -0,0 +1,41 @@ + + + + + avr-libc: strupr.S File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

strupr.S File Reference


Detailed Description

+ +

+ + +
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/tabs.css b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/tabs.css new file mode 100644 index 0000000..95f00a9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI.current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI.current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.navpath +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/todo.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/todo.html new file mode 100644 index 0000000..2ac6f0c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/todo.html @@ -0,0 +1,40 @@ + + + + + avr-libc: Todo List + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Todo List

+
Group avr_boot
+
From email with Marek: On smaller devices (all except ATmega64/128), __SPM_REG is in the I/O space, accessible with the shorter "in" and "out" instructions - since the boot loader has a limited size, this could be an important optimization.

+

+
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/using_avrprog.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/using_avrprog.html new file mode 100644 index 0000000..4d31ffb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/using_avrprog.html @@ -0,0 +1,99 @@ + + + + + avr-libc: Using the avrdude program + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Using the avrdude program

+

Note:
This section was contributed by Brian Dean [ bsd@bsdhome.com ].

+The avrdude program was previously called avrprog. The name was changed to avoid confusion with the avrprog program that Atmel ships with AvrStudio.

+avrdude is a program that is used to update or read the flash and EEPROM memories of Atmel AVR microcontrollers on FreeBSD Unix. It supports the Atmel serial programming protocol using the PC's parallel port and can upload either a raw binary file or an Intel Hex format file. It can also be used in an interactive mode to individually update EEPROM cells, fuse bits, and/or lock bits (if their access is supported by the Atmel serial programming protocol.) The main flash instruction memory of the AVR can also be programmed in interactive mode, however this is not very useful because one can only turn bits off. The only way to turn flash bits on is to erase the entire memory (using avrdude's -e option).

+avrdude is part of the FreeBSD ports system. To install it, simply do the following:

+

+# cd /usr/ports/devel/avrdude
+# make install
+

+Once installed, avrdude can program processors using the contents of the .hex file specified on the command line. In this example, the file main.hex is burned into the flash memory:

+

+# avrdude -p 2313 -e -m flash -i main.hex
+
+avrdude: AVR device initialized and ready to accept instructions
+
+avrdude: Device signature = 0x1e9101
+
+avrdude: erasing chip
+avrdude: done.
+avrdude: reading input file "main.hex"
+avrdude: input file main.hex auto detected as Intel Hex
+
+avrdude: writing flash:
+1749 0x00
+avrdude: 1750 bytes of flash written
+avrdude: verifying flash memory against main.hex:
+avrdude: reading on-chip flash data:
+1749  0x00
+avrdude: verifying ...
+avrdude: 1750 bytes of flash verified
+
+avrdude done.  Thank you.
+

+The -p 2313 option lets avrdude know that we are operating on an AT90S2313 chip. This option specifies the device id and is matched up with the device of the same id in avrdude's configuration file ( /usr/local/etc/avrdude.conf ). To list valid parts, specify the -v option. The -e option instructs avrdude to perform a chip-erase before programming; this is almost always necessary before programming the flash. The -m flash option indicates that we want to upload data into the flash memory, while -i main.hex specifies the name of the input file.

+The EEPROM is uploaded in the same way, the only difference is that you would use -m eeprom instead of -m flash.

+To use interactive mode, use the -t option:

+

+# avrdude -p 2313 -t
+avrdude: AVR device initialized and ready to accept instructions
+avrdude: Device signature = 0x1e9101
+avrdude>
+
+The '?' command displays a list of valid
+commands:
+
+avrdude> ?
+>>> ?
+Valid commands:
+
+  dump   : dump memory  : dump <memtype> <addr> <N-Bytes>
+  read   : alias for dump
+  write  : write memory : write <memtype> <addr> <b1> <b2> ... <bN>
+  erase  : perform a chip erase
+  sig    : display device signature bytes
+  part   : display the current part information
+  send   : send a raw command : send <b1> <b2> <b3> <b4>
+  help   : help
+  ?      : help
+  quit   : quit
+
+Use the 'part' command to display valid memory types for use with the
+'dump' and 'write' commands.
+
+avrdude>
+
+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/using_tools.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/using_tools.html new file mode 100644 index 0000000..56197de --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/using_tools.html @@ -0,0 +1,562 @@ + + + + + avr-libc: Using the GNU tools + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

Using the GNU tools

This is a short summary of the AVR-specific aspects of using the GNU tools. Normally, the generic documentation of these tools is fairly large and maintained in texinfo files. Command-line options are explained in detail in the manual page.

+Options for the C compiler avr-gcc

+

+Machine-specific options for the AVR

+The following machine-specific options are recognized by the C compiler frontend. In addition to the preprocessor macros indicated in the tables below, the preprocessor will define the macros __AVR and __AVR__ (to the value 1) when compiling for an AVR target. The macro AVR will be defined as well when using the standard levels gnu89 (default) and gnu99 but not with c89 and c99.

+

    +
  • -mmcu=architecture
+

+Compile code for architecture. Currently known architectures are

+ + + + + + + + + + + + + + + + + + + + + + + +
Architecture Macros Description
avr1 __AVR_ARCH__=1
+ __AVR_ASM_ONLY__
+ __AVR_2_BYTE_PC__ [2]
Simple CPU core, only assembler support
avr2 __AVR_ARCH__=2
+ __AVR_2_BYTE_PC__ [2]
"Classic" CPU core, up to 8 KB of ROM
avr25 [1] __AVR_ARCH__=25
+ __AVR_HAVE_MOVW__ [1]
+ __AVR_HAVE_LPMX__ [1]
+ __AVR_2_BYTE_PC__ [2]
"Classic" CPU core with 'MOVW' and 'LPM Rx, Z[+]' instruction, up to 8 KB of ROM
avr3 __AVR_ARCH__=3
+ __AVR_MEGA__ [5]
+ __AVR_HAVE_JMP_CALL__ [4]
+ __AVR_2_BYTE_PC__ [2]
"Classic" CPU core, 16 KB to 64 KB of ROM
avr31 __AVR_ARCH__=31
+ __AVR_MEGA__
+ __AVR_HAVE_RAMPZ__[4]
+ __AVR_HAVE_ELPM__[4]
+ __AVR_2_BYTE_PC__ [2]
"Classic" CPU core, 128 KB of ROM
avr35 [3] __AVR_ARCH__=35
+ __AVR_MEGA__ [5]
+ __AVR_HAVE_JMP_CALL__ [4]
+ __AVR_HAVE_MOVW__ [1]
+ __AVR_HAVE_LPMX__ [1]
+ __AVR_2_BYTE_PC__ [2]
"Classic" CPU core with 'MOVW' and 'LPM Rx, Z[+]' instruction, 16 KB to 64 KB of ROM
avr4 __AVR_ARCH__=4
+ __AVR_ENHANCED__ [5]
+ __AVR_HAVE_MOVW__ [1]
+ __AVR_HAVE_LPMX__ [1]
+ __AVR_HAVE_MUL__ [1]
+ __AVR_2_BYTE_PC__ [2]
"Enhanced" CPU core, up to 8 KB of ROM
avr5 __AVR_ARCH__=5
+ __AVR_MEGA__ [5]
+ __AVR_ENHANCED__ [5]
+ __AVR_HAVE_JMP_CALL__ [4]
+ __AVR_HAVE_MOVW__ [1]
+ __AVR_HAVE_LPMX__ [1]
+ __AVR_HAVE_MUL__ [1]
+ __AVR_2_BYTE_PC__ [2]
"Enhanced" CPU core, 16 KB to 64 KB of ROM
avr51 __AVR_ARCH__=51
+ __AVR_MEGA__
+ __AVR_ENHANCED__
+ __AVR_HAVE_MOVW__ [1]
+ __AVR_HAVE_LPMX__ [1]
+ __AVR_HAVE_MUL__ [1]
+ __AVR_HAVE_RAMPZ__[4]
+ __AVR_HAVE_ELPM__[4]
+ __AVR_HAVE_ELPMX__[4]
+ __AVR_2_BYTE_PC__ [2]
"Enhanced" CPU core, 128 KB of ROM
avr6 [2] __AVR_ARCH__=6
+ __AVR_MEGA__ [5]
+ __AVR_ENHANCED__ [5]
+ __AVR_HAVE_JMP_CALL__ [4]
+ __AVR_HAVE_MOVW__ [1]
+ __AVR_HAVE_LPMX__ [1]
+ __AVR_HAVE_MUL__ [1]
+ __AVR_HAVE_RAMPZ__[4]
+ __AVR_HAVE_ELPM__[4]
+ __AVR_HAVE_ELPMX__[4]
+ __AVR_3_BYTE_PC__ [2]
"Enhanced" CPU core, 256 KB of ROM
+

+[1] New in GCC 4.2
+ [2] Unofficial patch for GCC 4.1
+ [3] New in GCC 4.2.3
+ [4] New in GCC 4.3
+ [5] Obsolete.

+By default, code is generated for the avr2 architecture.

+Note that when only using -mmcu=architecture but no -mmcu=MCU type, including the file <avr/io.h> cannot work since it cannot decide which device's definitions to select.

+

    +
  • -mmcu=MCU type
+

+The following MCU types are currently understood by avr-gcc. The table matches them against the corresponding avr-gcc architecture name, and shows the preprocessor symbol declared by the -mmcu option.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArchitectureMCU nameMacro
avr1at90s1200__AVR_AT90S1200__
avr1attiny11__AVR_ATtiny11__
avr1attiny12__AVR_ATtiny12__
avr1attiny15__AVR_ATtiny15__
avr1attiny28__AVR_ATtiny28__
avr2at90s2313__AVR_AT90S2313__
avr2at90s2323__AVR_AT90S2323__
avr2at90s2333__AVR_AT90S2333__
avr2at90s2343__AVR_AT90S2343__
avr2attiny22__AVR_ATtiny22__
avr2attiny26__AVR_ATtiny26__
avr2at90s4414__AVR_AT90S4414__
avr2at90s4433__AVR_AT90S4433__
avr2at90s4434__AVR_AT90S4434__
avr2at90s8515__AVR_AT90S8515__
avr2at90c8534__AVR_AT90C8534__
avr2at90s8535__AVR_AT90S8535__
avr2/avr25 [1]at86rf401__AVR_AT86RF401__
avr2/avr25 [1]attiny13__AVR_ATtiny13__
avr2/avr25 [1]attiny13a__AVR_ATtiny13A__
avr2/avr25 [1]attiny2313__AVR_ATtiny2313__
avr2/avr25 [1]attiny24__AVR_ATtiny24__
avr2/avr25 [1]attiny25__AVR_ATtiny25__
avr2/avr25 [1]attiny261__AVR_ATtiny261__
avr2/avr25 [1]attiny43u__AVR_ATtiny43U__
avr2/avr25 [1]attiny44__AVR_ATtiny44__
avr2/avr25 [1]attiny45__AVR_ATtiny45__
avr2/avr25 [1]attiny461__AVR_ATtiny461__
avr2/avr25 [1]attiny48__AVR_ATtiny48__
avr2/avr25 [1]attiny84__AVR_ATtiny84__
avr2/avr25 [1]attiny85__AVR_ATtiny85__
avr2/avr25 [1]attiny861__AVR_ATtiny861__
avr2/avr25 [1]attiny88__AVR_ATtiny88__
avr3atmega603__AVR_ATmega603__
avr3at43usb355__AVR_AT43USB355__
avr3/avr31 [3]atmega103__AVR_ATmega103__
avr3/avr31 [3]at43usb320__AVR_AT43USB320__
avr3/avr35 [2]at90usb82__AVR_AT90USB82__
avr3/avr35 [2]at90usb162__AVR_AT90USB162__
avr3/avr35 [2]attiny167__AVR_ATtiny167__
avr3at76c711__AVR_AT76C711__
avr4atmega48__AVR_ATmega48__
avr4atmega48p__AVR_ATmega48P__
avr4atmega8__AVR_ATmega8__
avr4atmega8515__AVR_ATmega8515__
avr4atmega8535__AVR_ATmega8535__
avr4atmega88__AVR_ATmega88__
avr4atmega88p__AVR_ATmega88P__
avr4atmega8hva__AVR_ATmega8HVA__
avr4at90pwm1__AVR_AT90PWM1__
avr4at90pwm2__AVR_AT90PWM2__
avr4at90pwm2b__AVR_AT90PWM2B__
avr4at90pwm3__AVR_AT90PWM3__
avr4at90pwm3b__AVR_AT90PWM3B__
avr5at90pwm216__AVR_AT90PWM216__
avr5at90pwm316__AVR_AT90PWM316__
avr5at90can32__AVR_AT90CAN32__
avr5at90can64__AVR_AT90CAN64__
avr5at90usb646__AVR_AT90USB646__
avr5at90usb647__AVR_AT90USB647__
avr5atmega16__AVR_ATmega16__
avr5atmega161__AVR_ATmega161__
avr5atmega162__AVR_ATmega162__
avr5atmega163__AVR_ATmega163__
avr5atmega164p__AVR_ATmega164P__
avr5atmega165__AVR_ATmega165__
avr5atmega165p__AVR_ATmega165P__
avr5atmega168__AVR_ATmega168__
avr5atmega168p__AVR_ATmega168P__
avr5atmega169__AVR_ATmega169__
avr5atmega169p__AVR_ATmega169P__
avr5atmega16hva__AVR_ATmega16HVA__
avr5atmega32__AVR_ATmega32__
avr5atmega323__AVR_ATmega323__
avr5atmega324p__AVR_ATmega324P__
avr5atmega325__AVR_ATmega325__
avr5atmega325p__AVR_ATmega325P__
avr5atmega3250__AVR_ATmega3250__
avr5atmega3250p__AVR_ATmega3250P__
avr5atmega328p__AVR_ATmega328P__
avr5atmega329__AVR_ATmega329__
avr5atmega329p__AVR_ATmega329P__
avr5atmega3290__AVR_ATmega3290__
avr5atmega3290p__AVR_ATmega3290P__
avr5atmega32c1__AVR_ATMEGA32C1__
avr5atmega32hvb__AVR_ATmega32HVB__
avr5atmega32m1__AVR_ATMEGA32M1__
avr5atmega32u4__AVR_ATMEGA32U4__
avr5atmega32u6__AVR_ATMEGA32U6__
avr5atmega406__AVR_ATmega406__
avr5atmega64__AVR_ATmega64__
avr5atmega640__AVR_ATmega640__
avr5atmega644__AVR_ATmega644__
avr5atmega644p__AVR_ATmega644P__
avr5atmega645__AVR_ATmega645__
avr5atmega6450__AVR_ATmega6450__
avr5atmega649__AVR_ATmega649__
avr5atmega6490__AVR_ATmega6490__
avr5at94k__AVR_AT94K__
avr5/avr51 [3]atmega128__AVR_ATmega128__
avr5/avr51 [3]atmega1280__AVR_ATmega1280__
avr5/avr51 [3]atmega1281__AVR_ATmega1281__
avr5/avr51 [3]atmega1284p__AVR_ATmega1284P__
avr5/avr51 [3]at90can128__AVR_AT90CAN128__
avr5/avr51 [3]at90usb1286__AVR_AT90USB1286__
avr5/avr51 [3]at90usb1287__AVR_AT90USB1287__
avr6atmega2560__AVR_ATmega2560__
avr6atmega2561__AVR_ATmega2561__
avrxmega4atxmega64a3__AVR_ATxmega64A3__
avrxmega5atxmega64a1__AVR_ATxmega64A1__
avrxmega6atxmega128a3__AVR_ATxmega128A3__
avrxmega6atxmega256a3__AVR_ATxmega256A3__
avrxmega6atxmega256a3b__AVR_ATxmega256A3B__
avrxmega7atxmega128a1__AVR_ATxmega128A1__

+

+

+[1] 'avr25' architecture is new in GCC 4.2
+ [2] 'avr35' architecture is new in GCC 4.2.3

+

    +
  • -morder1
  • -morder2
+

+Change the order of register assignment. The default is

+r24, r25, r18, r19, r20, r21, r22, r23, r30, r31, r26, r27, r28, r29, r17, r16, r15, r14, r13, r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r0, r1

+Order 1 uses

+r18, r19, r20, r21, r22, r23, r24, r25, r30, r31, r26, r27, r28, r29, r17, r16, r15, r14, r13, r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r0, r1

+Order 2 uses

+r25, r24, r23, r22, r21, r20, r19, r18, r30, r31, r26, r27, r28, r29, r17, r16, r15, r14, r13, r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0

+

    +
  • -mint8
+

+Assume int to be an 8-bit integer. Note that this is not really supported by avr-libc, so it should normally not be used. The default is to use 16-bit integers.

+

    +
  • -mno-interrupts
+

+Generates code that changes the stack pointer without disabling interrupts. Normally, the state of the status register SREG is saved in a temporary register, interrupts are disabled while changing the stack pointer, and SREG is restored.

+Specifying this option will define the preprocessor macro __NO_INTERRUPTS__ to the value 1.

+

    +
  • -mcall-prologues
+

+Use subroutines for function prologue/epilogue. For complex functions that use many registers (that needs to be saved/restored on function entry/exit), this saves some space at the cost of a slightly increased execution time.

+

    +
  • -mtiny-stack
+

+Change only the low 8 bits of the stack pointer.

+

    +
  • -mno-tablejump
+

+Do not generate tablejump instructions. By default, jump tables can be used to optimize switch statements. When turned off, sequences of compare statements are used instead. Jump tables are usually faster to execute on average, but in particular for switch statements where most of the jumps would go to the default label, they might waste a bit of flash memory.

+

    +
  • -mshort-calls
+

+Use rjmp/rcall (limited range) on >8K devices. On avr2 and avr4 architectures (less than 8 KB or flash memory), this is always the case. On avr3 and avr5 architectures, calls and jumps to targets outside the current function will by default use jmp/call instructions that can cover the entire address range, but that require more flash ROM and execution time.

+

    +
  • -mrtl
+

+Dump the internal compilation result called "RTL" into comments in the generated assembler code. Used for debugging avr-gcc.

+

    +
  • -msize
+

+Dump the address, size, and relative cost of each statement into comments in the generated assembler code. Used for debugging avr-gcc.

+

    +
  • -mdeb
+

+Generate lots of debugging information to stderr.

+Selected general compiler options

+The following general gcc options might be of some interest to AVR users.

+

    +
  • -On
+

+ Optimization level n. Increasing n is meant to optimize more, an optimization level of 0 means no optimization at all, which is the default if no -O option is present. The special option -Os is meant to turn on all -O2 optimizations that are not expected to increase code size.

+Note that at -O3, gcc attempts to inline all "simple" functions. For the AVR target, this will normally constitute a large pessimization due to the code increasement. The only other optimization turned on with -O3 is -frename-registers, which could rather be enabled manually instead.

+A simple -O option is equivalent to -O1.

+Note also that turning off all optimizations will prevent some warnings from being issued since the generation of those warnings depends on code analysis steps that are only performed when optimizing (unreachable code, unused variables).

+See also the appropriate FAQ entry for issues regarding debugging optimized code.

+

    +
  • -Wa,assembler-options
  • -Wl,linker-options
+

+ Pass the listed options to the assembler, or linker, respectively.

+

    +
  • -g
+

+Generate debugging information that can be used by avr-gdb.

+

    +
  • -ffreestanding
+

+Assume a "freestanding" environment as per the C standard. This turns off automatic builtin functions (though they can still be reached by prepending __builtin_ to the actual function name). It also makes the compiler not complain when main() is declared with a void return type which makes some sense in a microcontroller environment where the application cannot meaningfully provide a return value to its environment (in most cases, main() won't even return anyway). However, this also turns off all optimizations normally done by the compiler which assume that functions known by a certain name behave as described by the standard. E. g., applying the function strlen() to a literal string will normally cause the compiler to immediately replace that call by the actual length of the string, while with -ffreestanding, it will always call strlen() at run-time.

+

    +
  • -funsigned-char
+

+Make any unqualfied char type an unsigned char. Without this option, they default to a signed char.

+

    +
  • -funsigned-bitfields
+

+Make any unqualified bitfield type unsigned. By default, they are signed.

+

    +
  • -fshort-enums
+

+Allocate to an enum type only as many bytes as it needs for the declared range of possible values. Specifically, the enum type will be equivalent to the smallest integer type which has enough room.

+

    +
  • -fpack-struct
+

+Pack all structure members together without holes.

+Options for the assembler avr-as

+

+Machine-specific assembler options

+
    +
  • -mmcu=architecture
  • -mmcu=MCU name
+

+avr-as understands the same -mmcu= options as avr-gcc. By default, avr2 is assumed, but this can be altered by using the appropriate .arch pseudo-instruction inside the assembler source file.

+

    +
  • -mall-opcodes
+

+Turns off opcode checking for the actual MCU type, and allows any possible AVR opcode to be assembled.

+

    +
  • -mno-skip-bug
+

+Don't emit a warning when trying to skip a 2-word instruction with a CPSE/SBIC/SBIS/SBRC/SBRS instruction. Early AVR devices suffered from a hardware bug where these instructions could not be properly skipped.

+

    +
  • -mno-wrap
+

+For RJMP/RCALL instructions, don't allow the target address to wrap around for devices that have more than 8 KB of memory.

+

    +
  • --gstabs
+

+Generate .stabs debugging symbols for assembler source lines. This enables avr-gdb to trace through assembler source files. This option must not be used when assembling sources that have been generated by the C compiler; these files already contain the appropriate line number information from the C source files.

+

    +
  • -a[cdhlmns=file]
+

+Turn on the assembler listing. The sub-options are:

+

    +
  • +c omit false conditionals
  • +
  • +d omit debugging directives
  • +
  • +h include high-level source
  • +
  • +l include assembly
  • +
  • +m include macro expansions
  • +
  • +n omit forms processing
  • +
  • +s include symbols
  • +
  • +=file set the name of the listing file
  • +
+

+The various sub-options can be combined into a single -a option list; =file must be the last one in that case.

+Examples for assembler options passed through the C compiler

+Remember that assembler options can be passed from the C compiler frontend using -Wa (see above), so in order to include the C source code into the assembler listing in file foo.lst, when compiling foo.c, the following compiler command-line can be used:

+

+	$ avr-gcc -c -O foo.c -o foo.o -Wa,-ahls=foo.lst
+

+In order to pass an assembler file through the C preprocessor first, and have the assembler generate line number debugging information for it, the following command can be used:

+

+	$ avr-gcc -c -x assembler-with-cpp -o foo.o foo.S -Wa,--gstabs
+

+Note that on Unix systems that have case-distinguishing file systems, specifying a file name with the suffix .S (upper-case letter S) will make the compiler automatically assume -x assembler-with-cpp, while using .s would pass the file directly to the assembler (no preprocessing done).

+Controlling the linker avr-ld

+

+Selected linker options

+While there are no machine-specific options for avr-ld, a number of the standard options might be of interest to AVR users.

+

    +
  • -lname
+

+Locate the archive library named libname.a, and use it to resolve currently unresolved symbols from it. The library is searched along a path that consists of builtin pathname entries that have been specified at compile time (e. g. /usr/local/avr/lib on Unix systems), possibly extended by pathname entries as specified by -L options (that must precede the -l options on the command-line).

+

    +
  • -Lpath
+

+Additional location to look for archive libraries requested by -l options.

+

    +
  • --defsym symbol=expr
+

+Define a global symbol symbol using expr as the value.

+

    +
  • -M
+

+Print a linker map to stdout.

+

    +
  • -Map mapfile
+

+Print a linker map to mapfile.

+

    +
  • --cref
+

+Output a cross reference table to the map file (in case -Map is also present), or to stdout.

+

    +
  • --section-start sectionname=org
+

+Start section sectionname at absolute address org.

+

    +
  • -Tbss org
  • -Tdata org
  • -Ttext org
+

+Start the bss, data, or text section at org, respectively.

+

    +
  • -T scriptfile
+

+Use scriptfile as the linker script, replacing the default linker script. Default linker scripts are stored in a system-specific location (e. g. under /usr/local/avr/lib/ldscripts on Unix systems), and consist of the AVR architecture name (avr2 through avr5) with the suffix .x appended. They describe how the various memory sections will be linked together.

+Passing linker options from the C compiler

+By default, all unknown non-option arguments on the avr-gcc command-line (i. e., all filename arguments that don't have a suffix that is handled by avr-gcc) are passed straight to the linker. Thus, all files ending in .o (object files) and .a (object libraries) are provided to the linker.

+System libraries are usually not passed by their explicit filename but rather using the -l option which uses an abbreviated form of the archive filename (see above). avr-libc ships two system libraries, libc.a, and libm.a. While the standard library libc.a will always be searched for unresolved references when the linker is started using the C compiler frontend (i. e., there's always at least one implied -lc option), the mathematics library libm.a needs to be explicitly requested using -lm. See also the entry in the FAQ explaining this.

+Conventionally, Makefiles use the make macro LDLIBS to keep track of -l (and possibly -L) options that should only be appended to the C compiler command-line when linking the final binary. In contrast, the macro LDFLAGS is used to store other command-line options to the C compiler that should be passed as options during the linking stage. The difference is that options are placed early on the command-line, while libraries are put at the end since they are to be used to resolve global symbols that are still unresolved at this point.

+Specific linker flags can be passed from the C compiler command-line using the -Wl compiler option, see above. This option requires that there be no spaces in the appended linker option, while some of the linker options above (like -Map or --defsym) would require a space. In these situations, the space can be replaced by an equal sign as well. For example, the following command-line can be used to compile foo.c into an executable, and also produce a link map that contains a cross-reference list in the file foo.map:

+

+	$ avr-gcc -O -o foo.out -Wl,-Map=foo.map -Wl,--cref foo.c
+

+Alternatively, a comma as a placeholder will be replaced by a space before passing the option to the linker. So for a device with external SRAM, the following command-line would cause the linker to place the data segment at address 0x2000 in the SRAM:

+

+	$ avr-gcc -mmcu=atmega128 -o foo.out -Wl,-Tdata,0x802000
+

+See the explanation of the data section for why 0x800000 needs to be added to the actual value. Note that the stack will still remain in internal RAM, through the symbol __stack that is provided by the run-time startup code. This is probably a good idea anyway (since internal RAM access is faster), and even required for some early devices that had hardware bugs preventing them from using a stack in external RAM. Note also that the heap for malloc() will still be placed after all the variables in the data section, so in this situation, no stack/heap collision can occur.

+In order to relocate the stack from its default location at the top of interns RAM, the value of the symbol __stack can be changed on the linker command-line. As the linker is typically called from the compiler frontend, this can be achieved using a compiler option like

+

-Wl,--defsym=__stack=0x8003ff
+

+The above will make the code use stack space from RAM address 0x3ff downwards. The amount of stack space available then depends on the bottom address of internal RAM for a particular device. It is the responsibility of the application to ensure the stack does not grow out of bounds, as well as to arrange for the stack to not collide with variable allocations made by the compiler (sections .data and .bss).

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/util_2twi_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/util_2twi_8h.html new file mode 100644 index 0000000..ea6c29f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/util_2twi_8h.html @@ -0,0 +1,116 @@ + + + + + avr-libc: twi.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

twi.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define _UTIL_TWI_H_   1
TWSR values
Mnemonics:
+TW_MT_xxx - master transmitter
+TW_MR_xxx - master receiver
+TW_ST_xxx - slave transmitter
+TW_SR_xxx - slave receiver

#define TW_START   0x08
#define TW_REP_START   0x10
#define TW_MT_SLA_ACK   0x18
#define TW_MT_SLA_NACK   0x20
#define TW_MT_DATA_ACK   0x28
#define TW_MT_DATA_NACK   0x30
#define TW_MT_ARB_LOST   0x38
#define TW_MR_ARB_LOST   0x38
#define TW_MR_SLA_ACK   0x40
#define TW_MR_SLA_NACK   0x48
#define TW_MR_DATA_ACK   0x50
#define TW_MR_DATA_NACK   0x58
#define TW_ST_SLA_ACK   0xA8
#define TW_ST_ARB_LOST_SLA_ACK   0xB0
#define TW_ST_DATA_ACK   0xB8
#define TW_ST_DATA_NACK   0xC0
#define TW_ST_LAST_DATA   0xC8
#define TW_SR_SLA_ACK   0x60
#define TW_SR_ARB_LOST_SLA_ACK   0x68
#define TW_SR_GCALL_ACK   0x70
#define TW_SR_ARB_LOST_GCALL_ACK   0x78
#define TW_SR_DATA_ACK   0x80
#define TW_SR_DATA_NACK   0x88
#define TW_SR_GCALL_DATA_ACK   0x90
#define TW_SR_GCALL_DATA_NACK   0x98
#define TW_SR_STOP   0xA0
#define TW_NO_INFO   0xF8
#define TW_BUS_ERROR   0x00
#define TW_STATUS_MASK
#define TW_STATUS   (TWSR & TW_STATUS_MASK)
R/~W bit in SLA+R/W address field.
#define TW_READ   1
#define TW_WRITE   0
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/wdt_8h.html b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/wdt_8h.html new file mode 100644 index 0000000..55ebfa5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/avr-libc-user-manual/wdt_8h.html @@ -0,0 +1,77 @@ + + + + + avr-libc: wdt.h File Reference + + + +
+ + + + + + + + + + + + + + +
AVR Libc Home PageAVRsAVR Libc Development Pages
Main PageUser ManualLibrary ReferenceFAQAlphabetical IndexExample Projects
+
+
+ +
+

wdt.h File Reference


Detailed Description

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define wdt_reset()   __asm__ __volatile__ ("wdr")
+#define _WD_PS3_MASK   0x00
+#define _WD_CONTROL_REG   WDTCR
+#define _WD_CHANGE_BIT   WDCE
#define wdt_enable(value)
#define wdt_disable()
#define WDTO_15MS   0
#define WDTO_30MS   1
#define WDTO_60MS   2
#define WDTO_120MS   3
#define WDTO_250MS   4
#define WDTO_500MS   5
#define WDTO_1S   6
#define WDTO_2S   7
#define WDTO_4S   8
#define WDTO_8S   9
+

+ +
+

Automatically generated by Doxygen 1.5.6 on 4 Dec 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/Makefile b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/Makefile new file mode 100644 index 0000000..025a449 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/Makefile @@ -0,0 +1,221 @@ +# Hey Emacs, this is a -*- makefile -*- + +# AVR-GCC Makefile template, derived from the WinAVR template (which +# is public domain), believed to be neutral to any flavor of "make" +# (GNU make, BSD make, SysV make) + + +MCU = attiny13 +#MCU = attiny45 +FORMAT = ihex +TARGET = asmdemo +SRC = $(TARGET).c +ASRC = isrs.S +OPT = s + +# Name of this Makefile (used for "make depend"). +MAKEFILE = Makefile + +# Compiler flag to set the C Standard level. +# c89 - "ANSI" C +# gnu89 - c89 plus GCC extensions +# c99 - ISO C99 standard (not yet fully implemented) +# gnu99 - c99 plus GCC extensions +CSTANDARD = -std=gnu99 + +# Place -D or -U options here +CDEFS = + +# Place -I options here +CINCS = + + +CDEBUG = -g +CWARN = -Wall -Wstrict-prototypes +CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums +#CEXTRA = -Wa,-adhlns=$(<:.c=.lst) +CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA) + + +#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs + + +#Additional libraries. + +# Minimalistic printf version +PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min + +# Floating point printf version (requires MATH_LIB = -lm below) +PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt + +PRINTF_LIB = + +# Minimalistic scanf version +SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min + +# Floating point + %[ scanf version (requires MATH_LIB = -lm below) +SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt + +SCANF_LIB = + +MATH_LIB = -lm + +# External memory options + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# used for variables (.data/.bss) and heap (malloc()). +#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# only used for heap (malloc()). +#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff + +EXTMEMOPTS = + +#LDMAP = $(LDFLAGS) -Wl,-Map=$(TARGET).map,--cref +LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) + + +# Programming support using avrdude. Settings and variables. + +AVRDUDE_PROGRAMMER = stk500v2 +AVRDUDE_PORT = /dev/cuaa1 + +AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex +#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep + + +# Uncomment the following if you want avrdude's erase cycle counter. +# Note that this counter needs to be initialized first using -Yn, +# see avrdude manual. +#AVRDUDE_ERASE_COUNTER = -y + +# Uncomment the following if you do /not/ wish a verification to be +# performed after programming the device. +#AVRDUDE_NO_VERIFY = -V + +# Increase verbosity level. Please use this when submitting bug +# reports about avrdude. See +# to submit bug reports. +#AVRDUDE_VERBOSE = -v -v + +AVRDUDE_BASIC = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS = $(AVRDUDE_BASIC) $(AVRDUDE_NO_VERIFY) $(AVRDUDE_VERBOSE) $(AVRDUDE_ERASE_COUNTER) + + +CC = avr-gcc +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size +NM = avr-nm +AVRDUDE = avrdude +REMOVE = rm -f +MV = mv -f + +# Define all object files. +OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) + +# Define all listing files. +LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) + +# Combine all necessary flags and optional flags. +# Add target processor to flags. +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + +# Default target. +all: build + +build: elf hex eep + +elf: $(TARGET).elf +hex: $(TARGET).hex +eep: $(TARGET).eep +lss: $(TARGET).lss +sym: $(TARGET).sym + + +# Program the device. +program: $(TARGET).hex $(TARGET).eep + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) + + + + +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. +COFFCONVERT=$(OBJCOPY) --debugging \ +--change-section-address .data-0x800000 \ +--change-section-address .bss-0x800000 \ +--change-section-address .noinit-0x800000 \ +--change-section-address .eeprom-0x810000 + + +coff: $(TARGET).elf + $(COFFCONVERT) -O coff-avr $(TARGET).elf $(TARGET).cof + + +extcoff: $(TARGET).elf + $(COFFCONVERT) -O coff-ext-avr $(TARGET).elf $(TARGET).cof + + +.SUFFIXES: .elf .hex .eep .lss .sym + +.elf.hex: + $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ + +.elf.eep: + -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ + --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ + +# Create extended listing file from ELF output file. +.elf.lss: + $(OBJDUMP) -h -S $< > $@ + +# Create a symbol table from ELF output file. +.elf.sym: + $(NM) -n $< > $@ + + + +# Link: create ELF output file from object files. +$(TARGET).elf: $(OBJ) + $(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) + + +# Compile: create object files from C source files. +.c.o: + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +# Compile: create assembler files from C source files. +.c.s: + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +# Assemble: create object files from assembler source files. +.S.o: + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + + + +# Target: clean project. +clean: + $(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).cof $(TARGET).elf \ + $(TARGET).map $(TARGET).sym $(TARGET).lss \ + $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) + +depend: + if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \ + then \ + sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \ + $(MAKEFILE).$$$$ && \ + $(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \ + fi + echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \ + >> $(MAKEFILE); \ + $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE) + +.PHONY: all build elf hex eep lss sym program coff extcoff clean depend + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/asmdemo.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/asmdemo.c new file mode 100644 index 0000000..af0c7f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/asmdemo.c @@ -0,0 +1,146 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * Joerg Wunsch wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Demo combining C and assembly source files. + * + * This demo implements an RC model type PWM decoder. The incoming + * PWM signal consists of a pulse sequence with a pulse width of 920 + * microseconds up to 2120 microseconds (1520 microseconds being the + * neutral point). Depending on the value of the decoded incoming + * PWM, an outgoing PWM is controlled between 0 and 100 %. + * + * The project is intented to be run on an ATtiny13 that has only one + * timer channel (timer 0), so both the incoming signal discrimination + * as well as the outgoing PWM need to run on the same timer. + * + * For verification purposes, the same project can also be run on an + * ATtiny25/45/85, where timer 1 can be used to evaluate the incoming + * PWM signal, and timer 0 to generate the outgoing PWM. In that + * case, no additional assembly code is needed. + * + * $Id: asmdemo.c,v 1.1 2006/08/29 19:45:06 joerg_wunsch Exp $ + */ + +/* + * This is the main C source file for the demo. + */ +#include +#include +#include + +#include "project.h" + +volatile uint16_t pwm_incoming; +volatile struct +{ + uint8_t pwm_received: 1; +} +intbits; + +void +ioinit(void) +{ + counter_hi = 0; + flags = 0; + + /* + * Timer 0 runs as phase-correct PWM at full clock, OC0B connects to + * the PWM engine. + */ + TCCR0A = (1 << COM0B1) | (1 << WGM00); + TCCR0B = (1 << CS00); + OCR0A = 255; + +#if defined(__AVR_ATtiny13__) + TIMSK0 = (1 << TOIE0) | (1 << OCIE0A); + +# define F_CPU 1200000ul + /* Minimal PWM pulse width is 920 us. */ +# define MIN_PWM_VAL ((920ul * F_CPU) / 1000000ul) + /* Maximal PWM pulse width is 2120 us */ +# define MAX_PWM_VAL ((2120ul * F_CPU) / 1000000ul) + +#elif defined(__AVR_ATtiny25__) ||\ + defined(__AVR_ATtiny45__) ||\ + defined(__AVR_ATtiny85__) + +# define F_CPU 1000000ul + /* + * We use a prescaler of 16 here to avoid the 32-bit calculations + * below. + */ + /* Minimal PWM pulse width is 920 us. */ +# define MIN_PWM_VAL ((920ul * F_CPU) / 16 / 1000000ul) + /* Maximal PWM pulse width is 2120 us */ +# define MAX_PWM_VAL ((2120ul * F_CPU) / 16 / 1000000ul) + +#else +# error "Don't know how to run on your MCU_TYPE." +#endif + + PCMSK = (1 << 4); + GIFR = (1 << PCIF); + GIMSK = (1 << PCIE); + + DDRB = (1 << PB1); + PORTB = 0; + + sei(); +} + +#if defined(__AVR_ATtiny25__) ||\ + defined(__AVR_ATtiny45__) ||\ + defined(__AVR_ATtiny85__) +ISR(PCINT0_vect) +{ + uint8_t tcnt1; + + if (PINB & (1 << 4)) + { + /* Start timer 1 with a prescaler of 16. */ + TCNT1 = 0; + TCCR1 = (1 << CS12) | (1 << CS10); + return; + } + + /* Stop timer 1, current value is pulse width. */ + tcnt1 = TCNT1; + TCCR1 = 0; + GIMSK &= ~(1 << PCIE); + + pwm_incoming = tcnt1; + intbits.pwm_received = 1; +} +#endif /* ATtinyX5 */ + +int +main(void) +{ + + ioinit(); + + for (;;) + { + if (intbits.pwm_received) + { + intbits.pwm_received = 0; +#if defined(__AVR_ATtiny13__) + if (pwm_incoming < MIN_PWM_VAL) + pwm_incoming = MIN_PWM_VAL; + else if (pwm_incoming > MAX_PWM_VAL) + pwm_incoming = MAX_PWM_VAL; + OCR0B = (pwm_incoming - MIN_PWM_VAL) * 255ul / (MAX_PWM_VAL - MIN_PWM_VAL); +#else + OCR0B = (pwm_incoming - MIN_PWM_VAL) * 255u / (MAX_PWM_VAL - MIN_PWM_VAL); +#endif + GIFR = (1 << PCIF); + GIMSK |= (1 << PCIE); + } + sleep_mode(); + } +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/isrs.S b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/isrs.S new file mode 100644 index 0000000..84ad28c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/isrs.S @@ -0,0 +1,128 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * Joerg Wunsch wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Demo combining C and assembly source files. + * + * $Id: isrs.S,v 1.1 2006/08/29 19:45:06 joerg_wunsch Exp $ + */ +/* + * This file contains the interrupt service routine implementations + * when compiling the project for the ATtiny13 target. + */ + +#include + +#include "project.h" + +#if defined(__AVR_ATtiny13__) + +/* + * Timer 0 hit TOP (0xff), i.e. it turns from up-counting + * into down-counting direction. + */ +.global TIM0_COMPA_vect +TIM0_COMPA_vect: + in sreg_save, _SFR_IO_ADDR(SREG) + inc counter_hi + clr flags + out _SFR_IO_ADDR(SREG), sreg_save + reti + +/* + * Timer 0 hit BOTTOM (0x00), i.e. it turns from down-counting + * into up-counting direction. + */ +.global TIM0_OVF_vect +TIM0_OVF_vect: + in sreg_save, _SFR_IO_ADDR(SREG) + inc counter_hi + ser flags + out _SFR_IO_ADDR(SREG), sreg_save + reti + +;;; one 16-bit word to store our rising edge's timestamp +.lcomm starttime.0, 2 + +.extern pwm_incoming +.extern intbits + +.global PCINT0_vect +PCINT0_vect: + in sreg_save, _SFR_IO_ADDR(SREG) + + ;; save our working registers + push r18 + push r19 + push r20 + push r21 + + ;; Now that we are ready to fetch the current + ;; value of TCNT0, allow interrupts for a + ;; moment. As the effect of the SEI will be + ;; deferred by one instruction, any possible + ;; rollover of TCNT0 (hitting BOTTOM when + ;; counting down, or MAX when counting up) will + ;; allow the above ISRs to trigger right here, + ;; and update their status, so our combined + ;; 16-bit time from [counter_hi, TCNT0] will + ;; be correct. + sei + in r20, _SFR_IO_ADDR(TCNT0) + cli + ;; Now, make our working copy of the status, + ;; so we can re-enable interrupts again. + mov r21, counter_hi + mov r19, flags + sei + + ;; what direction were we counting? + sbrs r19, 0 + ;; we are down-counting, invert TCNT0 + com r20 + ;; at this point, r21:20 has our current + ;; 16-bit time + + ;; now, look which of the edges triggered + ;; our pin-change interrupt + sbis _SFR_IO_ADDR(PINB), 4 + rjmp 10f + ;; rising edge detected, just record starttime + sts (starttime.0) + 1, r21 + sts starttime.0, r20 + rjmp 99f ; we are done here + + ;; Falling edge: compute pulse width, store it + ;; into pwm_incoming, disable pin-change + ;; interrupt until the upper layers had a chance + ;; to fetch the result. + +10: in r18, _SFR_IO_ADDR(GIMSK) + andi r18, ~(1 << PCIE) + out _SFR_IO_ADDR(GIMSK), r18 + + ;; pwm_incoming = current_time - starttime + lds r19, (starttime.0) + 1 + lds r18, starttime.0 + sub r20, r18 + sbc r21, r19 + sts (pwm_incoming) + 1, r21 + sts pwm_incoming, r20 + + ;; signal upper layer + lds r18, intbits + ori r18, 1 + sts intbits, r18 +99: + pop r21 + pop r20 + pop r19 + pop r18 + + out _SFR_IO_ADDR(SREG), sreg_save + reti +#endif /* ATtiny13 */ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/project.h b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/project.h new file mode 100644 index 0000000..a65aa55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/asmdemo/project.h @@ -0,0 +1,31 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * Joerg Wunsch wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Demo combining C and assembly source files. + * + * $Id: project.h,v 1.1 2006/08/29 19:45:06 joerg_wunsch Exp $ + */ + +/* + * Global register variables. + */ +#ifdef __ASSEMBLER__ + +# define sreg_save r2 +# define flags r16 +# define counter_hi r4 + +#else /* !ASSEMBLER */ + +#include + +register uint8_t sreg_save asm("r2"); +register uint8_t flags asm("r16"); +register uint8_t counter_hi asm("r4"); + +#endif /* ASSEMBLER */ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/Makefile b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/Makefile new file mode 100644 index 0000000..95b2012 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/Makefile @@ -0,0 +1,145 @@ +PRG = demo +OBJ = demo.o +#MCU_TARGET = at90s2313 +#MCU_TARGET = at90s2333 +#MCU_TARGET = at90s4414 +#MCU_TARGET = at90s4433 +#MCU_TARGET = at90s4434 +#MCU_TARGET = at90s8515 +#MCU_TARGET = at90s8535 +#MCU_TARGET = atmega128 +#MCU_TARGET = atmega1280 +#MCU_TARGET = atmega1281 +#MCU_TARGET = atmega1284p +#MCU_TARGET = atmega16 +#MCU_TARGET = atmega163 +#MCU_TARGET = atmega164p +#MCU_TARGET = atmega165 +#MCU_TARGET = atmega165p +#MCU_TARGET = atmega168 +#MCU_TARGET = atmega169 +#MCU_TARGET = atmega169p +#MCU_TARGET = atmega2560 +#MCU_TARGET = atmega2561 +#MCU_TARGET = atmega32 +#MCU_TARGET = atmega324p +#MCU_TARGET = atmega325 +#MCU_TARGET = atmega3250 +#MCU_TARGET = atmega329 +#MCU_TARGET = atmega3290 +#MCU_TARGET = atmega48 +#MCU_TARGET = atmega64 +#MCU_TARGET = atmega640 +#MCU_TARGET = atmega644 +#MCU_TARGET = atmega644p +#MCU_TARGET = atmega645 +#MCU_TARGET = atmega6450 +#MCU_TARGET = atmega649 +#MCU_TARGET = atmega6490 +MCU_TARGET = atmega8 +#MCU_TARGET = atmega8515 +#MCU_TARGET = atmega8535 +#MCU_TARGET = atmega88 +#MCU_TARGET = attiny2313 +#MCU_TARGET = attiny24 +#MCU_TARGET = attiny25 +#MCU_TARGET = attiny26 +#MCU_TARGET = attiny261 +#MCU_TARGET = attiny44 +#MCU_TARGET = attiny45 +#MCU_TARGET = attiny461 +#MCU_TARGET = attiny84 +#MCU_TARGET = attiny85 +#MCU_TARGET = attiny861 +OPTIMIZE = -O2 + +DEFS = +LIBS = + +# You should not have to change anything below here. + +CC = avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) +override LDFLAGS = -Wl,-Map,$(PRG).map + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: $(PRG).elf lst text eeprom + +$(PRG).elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +# dependency: +demo.o: demo.c iocompat.h + +clean: + rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak + rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) + +lst: $(PRG).lst + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PRG).hex +bin: $(PRG).bin +srec: $(PRG).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +# Rules for building the .eeprom rom images + +eeprom: ehex ebin esrec + +ehex: $(PRG)_eeprom.hex +ebin: $(PRG)_eeprom.bin +esrec: $(PRG)_eeprom.srec + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ \ + || { echo empty $@ not generated; exit 0; } + +# Every thing below here is used by avr-libc's build system and can be ignored +# by the casual user. + +FIG2DEV = fig2dev +EXTRA_CLEAN_FILES = *.hex *.bin *.srec + +dox: eps png pdf + +eps: $(PRG).eps +png: $(PRG).png +pdf: $(PRG).pdf + +%.eps: %.fig + $(FIG2DEV) -L eps $< $@ + +%.pdf: %.fig + $(FIG2DEV) -L pdf $< $@ + +%.png: %.fig + $(FIG2DEV) -L png $< $@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/demo.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/demo.c new file mode 100644 index 0000000..5d29d3e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/demo.c @@ -0,0 +1,89 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Simple AVR demonstration. Controls a LED that can be directly + * connected from OC1/OC1A to GND. The brightness of the LED is + * controlled with the PWM. After each period of the PWM, the PWM + * value is either incremented or decremented, that's all. + * + * $Id: demo.c,v 1.9 2006/01/05 21:30:10 joerg_wunsch Exp $ + */ + +#include +#include +#include +#include + +#include "iocompat.h" /* Note [1] */ + +enum { UP, DOWN }; + +ISR (TIMER1_OVF_vect) /* Note [2] */ +{ + static uint16_t pwm; /* Note [3] */ + static uint8_t direction; + + switch (direction) /* Note [4] */ + { + case UP: + if (++pwm == TIMER1_TOP) + direction = DOWN; + break; + + case DOWN: + if (--pwm == 0) + direction = UP; + break; + } + + OCR = pwm; /* Note [5] */ +} + +void +ioinit (void) /* Note [6] */ +{ + /* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */ + TCCR1A = TIMER1_PWM_INIT; + /* + * Start timer 1. + * + * NB: TCCR1A and TCCR1B could actually be the same register, so + * take care to not clobber it. + */ + TCCR1B |= TIMER1_CLOCKSOURCE; + /* + * Run any device-dependent timer 1 setup hook if present. + */ +#if defined(TIMER1_SETUP_HOOK) + TIMER1_SETUP_HOOK(); +#endif + + /* Set PWM value to 0. */ + OCR = 0; + + /* Enable OC1 as output. */ + DDROC = _BV (OC1); + + /* Enable timer 1 overflow interrupt. */ + TIMSK = _BV (TOIE1); + sei (); +} + +int +main (void) +{ + + ioinit (); + + /* loop forever, the interrupts are doing the rest */ + + for (;;) /* Note [7] */ + sleep_mode(); + + return (0); +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/iocompat.h b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/iocompat.h new file mode 100644 index 0000000..c02203b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/demo/iocompat.h @@ -0,0 +1,166 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * IO feature compatibility definitions for various AVRs. + * + * $Id: iocompat.h,v 1.6.2.1 2008/03/17 22:08:46 joerg_wunsch Exp $ + */ + +#if !defined(IOCOMPAT_H) +#define IOCOMPAT_H 1 + +/* + * Device-specific adjustments: + * + * Supply definitions for the location of the OCR1[A] port/pin, the + * name of the OCR register controlling the PWM, and adjust interrupt + * vector names that differ from the one used in demo.c + * [TIMER1_OVF_vect]. + */ +#if defined(__AVR_AT90S2313__) +# define OC1 PB3 +# define OCR OCR1 +# define DDROC DDRB +# define TIMER1_OVF_vect TIMER1_OVF1_vect +#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__) +# define OC1 PB1 +# define DDROC DDRB +# define OCR OCR1 +#elif defined(__AVR_AT90S4414__) || defined(__AVR_AT90S8515__) || \ + defined(__AVR_AT90S4434__) || defined(__AVR_AT90S8535__) || \ + defined(__AVR_ATmega163__) || defined(__AVR_ATmega8515__) || \ + defined(__AVR_ATmega8535__) || \ + defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || \ + defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || \ + defined(__AVR_ATmega1284P__) +# define OC1 PD5 +# define DDROC DDRD +# define OCR OCR1A +# if !defined(TIMSK) /* new ATmegas */ +# define TIMSK TIMSK1 +# endif +#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega48__) || \ + defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) +# define OC1 PB1 +# define DDROC DDRB +# define OCR OCR1A +# if !defined(TIMSK) /* ATmega48/88/168 */ +# define TIMSK TIMSK1 +# endif /* !defined(TIMSK) */ +#elif defined(__AVR_ATtiny2313__) +# define OC1 PB3 +# define OCR OCR1A +# define DDROC DDRB +#elif defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || \ + defined(__AVR_ATtiny84__) +# define OC1 PA6 +# define DDROC DDRA +# if !defined(OCR1A) +# /* work around misspelled name in avr-libc 1.4.[0..1] */ +# define OCR OCRA1 +# else +# define OCR OCR1A +# endif +# define TIMSK TIMSK1 +# define TIMER1_OVF_vect TIM1_OVF_vect /* XML and datasheet mismatch */ +#elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || \ + defined(__AVR_ATtiny85__) +/* Timer 1 is only an 8-bit timer on these devices. */ +# define OC1 PB1 +# define DDROC DDRB +# define OCR OCR1A +# define TCCR1A TCCR1 +# define TCCR1B TCCR1 +# define TIMER1_OVF_vect TIM1_OVF_vect +# define TIMER1_TOP 255 /* only 8-bit PWM possible */ +# define TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1) +# define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */ +#elif defined(__AVR_ATtiny26__) +/* Rather close to ATtinyX5 but different enough for its own section. */ +# define OC1 PB1 +# define DDROC DDRB +# define OCR OCR1A +# define TIMER1_OVF_vect TIMER1_OVF1_vect +# define TIMER1_TOP 255 /* only 8-bit PWM possible */ +# define TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1) +# define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */ +/* + * Without setting OCR1C to TOP, the ATtiny26 does not trigger an + * overflow interrupt in PWM mode. + */ +# define TIMER1_SETUP_HOOK() OCR1C = 255 +#elif defined(__AVR_ATtiny261__) || defined(__AVR_ATtiny461__) || \ + defined(__AVR_ATtiny861__) +# define OC1 PB1 +# define DDROC DDRB +# define OCR OCR1A +# define TIMER1_PWM_INIT _BV(WGM10) | _BV(PWM1A) | _BV(COM1A1) +/* + * While timer 1 could be operated in 10-bit mode on these devices, + * the handling of the 10-bit IO registers is more complicated than + * that of the 16-bit registers of other AVR devices (no combined + * 16-bit IO operations possible), so we restrict this demo to 8-bit + * mode which is pretty standard. + */ +# define TIMER1_TOP 255 +# define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */ +#elif defined(__AVR_ATmega32__) || defined(__AVR_ATmega16__) +# define OC1 PD5 +# define DDROC DDRD +# define OCR OCR1A +#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) || \ + defined(__AVR_ATmega165__) || defined(__AVR_ATmega169__) || \ + defined(__AVR_ATmega325__) || defined(__AVR_ATmega3250__) || \ + defined(__AVR_ATmega645__) || defined(__AVR_ATmega6450__) || \ + defined(__AVR_ATmega329__) || defined(__AVR_ATmega3290__) || \ + defined(__AVR_ATmega649__) || defined(__AVR_ATmega6490__) || \ + defined(__AVR_ATmega640__) || \ + defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || \ + defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) +# define OC1 PB5 +# define DDROC DDRB +# define OCR OCR1A +# if !defined(PB5) /* work around missing bit definition */ +# define PB5 5 +# endif +# if !defined(TIMSK) /* new ATmegas */ +# define TIMSK TIMSK1 +# endif +#else +# error "Don't know what kind of MCU you are compiling for" +#endif + +/* + * Map register names for older AVRs here. + */ +#if !defined(COM1A1) +# define COM1A1 COM11 +#endif + +#if !defined(WGM10) +# define WGM10 PWM10 +# define WGM11 PWM11 +#endif + +/* + * Provide defaults for device-specific macros unless overridden + * above. + */ +#if !defined(TIMER1_TOP) +# define TIMER1_TOP 1023 /* 10-bit PWM */ +#endif + +#if !defined(TIMER1_PWM_INIT) +# define TIMER1_PWM_INIT _BV(WGM10) | _BV(WGM11) | _BV(COM1A1) +#endif + +#if !defined(TIMER1_CLOCKSOURCE) +# define TIMER1_CLOCKSOURCE _BV(CS10) /* full clock */ +#endif + +#endif /* !defined(IOCOMPAT_H) */ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/largedemo/Makefile b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/largedemo/Makefile new file mode 100644 index 0000000..565d9ef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/largedemo/Makefile @@ -0,0 +1,90 @@ +PRG = largedemo +OBJ = largedemo.o +MCU_TARGET = atmega16 +#MCU_TARGET = atmega8 +#MCU_TARGET = atmega48 +#MCU_TARGET = atmega88 +#MCU_TARGET = atmega168 +#MCU_TARGET = attiny2313 +OPTIMIZE = -Os + +DEFS = +LIBS = + +# You should not have to change anything below here. + +CC = avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) +override LDFLAGS = -Wl,-Map,$(PRG).map + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: $(PRG).elf lst text eeprom + +$(PRG).elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +clean: + rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak + rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) + +lst: $(PRG).lst + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PRG).hex +bin: $(PRG).bin +srec: $(PRG).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +# Rules for building the .eeprom rom images + +eeprom: ehex ebin esrec + +ehex: $(PRG)_eeprom.hex +ebin: $(PRG)_eeprom.bin +esrec: $(PRG)_eeprom.srec + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ + +# Every thing below here is used by avr-libc's build system and can be ignored +# by the casual user. + +JPEGFILES = largedemo-setup.jpg largedemo-wiring.jpg \ + largedemo-wiring2.jpg + +JPEG2PNM = jpegtopnm +PNM2EPS = pnmtops +JPEGRESOLUTION = 180 +EXTRA_CLEAN_FILES = *.hex *.bin *.srec *.eps + +dox: ${JPEGFILES:.jpg=.eps} + +%.eps: %.jpg + $(JPEG2PNM) $< |\ + $(PNM2EPS) -noturn -dpi $(JPEGRESOLUTION) -equalpixels \ + > $@ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/largedemo/largedemo.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/largedemo/largedemo.c new file mode 100644 index 0000000..5f0bd45 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/largedemo/largedemo.c @@ -0,0 +1,545 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * More advanced AVR demonstration. Controls a LED attached to OCR1A. + * The brightness of the LED is controlled with the PWM. A number of + * methods are implemented to control that PWM. + * + * $Id: largedemo.c,v 1.3 2007/01/19 22:17:10 joerg_wunsch Exp $ + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +/* Part 1: Macro definitions */ + +#define CONTROL_PORT PORTD +#define CONTROL_DDR DDRD + +#if defined(__AVR_ATtiny2313__) +/* no PD7 and no ADC available on ATtiny2313 */ +# define TRIGGER_DOWN PD2 +# define TRIGGER_UP PD3 +# define FLASH PD4 +# define CLOCKOUT PD6 +#else +# define TRIGGER_DOWN PD2 +# define TRIGGER_UP PD3 +# define TRIGGER_ADC PD4 +# define CLOCKOUT PD6 +# define FLASH PD7 +#endif + +#if defined(__AVR_ATmega16__) +# define PWMDDR DDRD +# define PWMOUT PD5 +#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega48__) ||\ + defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) +# define PWMDDR DDRB +# define PWMOUT PB1 +#elif defined(__AVR_ATtiny2313__) +# define PWMDDR DDRB +# define PWMOUT PB3 +# define HAVE_ADC 0 +# define USART_RXC_vect USART_RX_vect +# define MCUCSR MCUSR +#else +# error "Unsupported MCU type" +#endif + +#if defined(__AVR_ATmega48__) || defined(__AVR_ATmega88__) ||\ + defined(__AVR_ATmega168__) +/* map ATmega8/16 names to ATmegaX8 names */ +# define USART_RXC_vect USART_RX_vect +# define UDR UDR0 +# define UCSRA UCSR0A +# define UCSRB UCSR0B +# define FE FE0 +# define TXEN TXEN0 +# define RXEN RXEN0 +# define RXCIE RXCIE0 +# define UDRE UDRE0 +# define U2X U2X0 +# define UBRRL UBRR0L + +# define TIMSK TIMSK1 +# define MCUCSR MCUSR +#endif + +#if !defined(HAVE_ADC) +# define HAVE_ADC 1 +#endif + +#define F_CPU 1000000UL /* CPU clock in Hertz */ + +#define SOFTCLOCK_FREQ 100 /* internal software clock */ + +/* + * Timeout to wait after last PWM change till updating the EEPROM. + * Measured in internal clock ticks (approx. 100 Hz). + */ +#define EE_UPDATE_TIME (3 * SOFTCLOCK_FREQ) /* ca. 3 seconds */ + +/* + * Timer1 overflow interrupt will be called with F_CPU / 2048 + * frequency. This interrupt routine further divides that value, + * resulting in an internal update interval of approx. 10 ms. + * (The complicated looking scaling by 10 / addition of 9 is + * poor man's fixed-point rounding algorithm...) + */ +#define TMR1_SCALE ((F_CPU * 10) / (2048UL * SOFTCLOCK_FREQ) + 9) / 10 + +/* Part 2: Variable definitions */ + +/* + * Bits that are set inside interrupt routines, and watched outside in + * the program's main loop. + */ +volatile struct +{ + uint8_t tmr_int: 1; + uint8_t adc_int: 1; + uint8_t rx_int: 1; +} +intflags; + +/* + * Last character read from the UART. + */ +volatile char rxbuff; + +/* + * Last value read from ADC. + */ +volatile uint16_t adcval; + +/* + * Where to store the PWM value in EEPROM. This is used in order + * to remember the value across a RESET or power cycle. + */ +uint16_t ee_pwm __attribute__((section(".eeprom"))) = 42; + +/* + * Current value of the PWM. + */ +int16_t pwm; + +/* + * EEPROM backup timer. Bumped by the PWM update routine. If it + * expires, the current PWM value will be written to EEPROM. + */ +int16_t pwm_backup_tmr; + +/* + * Mirror of the MCUCSR register, taken early during startup. + */ +uint8_t mcucsr __attribute__((section(".noinit"))); + +/* Part 3: Interrupt service routines */ + +ISR(TIMER1_OVF_vect) +{ + static uint8_t scaler = TMR1_SCALE; + + if (--scaler == 0) + { + scaler = TMR1_SCALE; + intflags.tmr_int = 1; + } +} + +#if HAVE_ADC +/* + * ADC conversion complete. Fetch the 10-bit value, and feed the + * PWM with it. + */ +ISR(ADC_vect) +{ + adcval = ADCW; + ADCSRA &= ~_BV(ADIE); /* disable ADC interrupt */ + intflags.adc_int = 1; +} +#endif /* HAVE_ADC */ + +/* + * UART receive interrupt. Fetch the character received and buffer + * it, unless there was a framing error. Note that the main loop + * checks the received character only once per 10 ms. + */ +ISR(USART_RXC_vect) +{ + uint8_t c; + + c = UDR; + if (bit_is_clear(UCSRA, FE)) + { + rxbuff = c; + intflags.rx_int = 1; + } +} + +/* Part 4: Auxiliary functions */ + +/* + * Read out and reset MCUCSR early during startup. + */ +void handle_mcucsr(void) + __attribute__((section(".init3"))) + __attribute__((naked)); +void handle_mcucsr(void) +{ + mcucsr = MCUCSR; + MCUCSR = 0; +} + +/* + * Do all the startup-time peripheral initializations. + */ +static void +ioinit(void) +{ + uint16_t pwm_from_eeprom; + + /* + * Set up the 16-bit timer 1. + * + * Timer 1 will be set up as a 10-bit phase-correct PWM (WGM10 and + * WGM11 bits), with OC1A used as PWM output. OC1A will be set when + * up-counting, and cleared when down-counting (COM1A1|COM1A0), this + * matches the behaviour needed by the STK500's low-active LEDs. + * The timer will runn on full MCU clock (1 MHz, CS10 in TCCR1B). + */ + TCCR1A = _BV(WGM10) | _BV(WGM11) | _BV(COM1A1) | _BV(COM1A0); + TCCR1B = _BV(CS10); + + OCR1A = 0; /* set PWM value to 0 */ + + /* enable pull-ups for pushbuttons */ +#if HAVE_ADC + CONTROL_PORT = _BV(TRIGGER_DOWN) | _BV(TRIGGER_UP) | _BV(TRIGGER_ADC); +#else + CONTROL_PORT = _BV(TRIGGER_DOWN) | _BV(TRIGGER_UP); +#endif + + /* + * Enable Port D outputs: PD6 for the clock output, PD7 for the LED + * flasher. PD1 is UART TxD but not DDRD setting is provided for + * that, as enabling the UART transmitter will automatically turn + * this pin into an output. + */ + CONTROL_DDR = _BV(CLOCKOUT) | _BV(FLASH); + + /* + * As the location of OC1A differs between supported MCU types, we + * enable that output separately here. Note that the DDRx register + * *might* be the same as CONTROL_DDR above, so make sure to not + * clobber it. + */ + PWMDDR |= _BV(PWMOUT); + + UCSRA = _BV(U2X); /* improves baud rate error @ F_CPU = 1 MHz */ + UCSRB = _BV(TXEN)|_BV(RXEN)|_BV(RXCIE); /* tx/rx enable, rx complete intr */ + UBRRL = (F_CPU / (8 * 9600UL)) - 1; /* 9600 Bd */ + +#if HAVE_ADC + /* + * enable ADC, select ADC clock = F_CPU / 8 (i.e. 125 kHz) + */ + ADCSRA = _BV(ADEN) | _BV(ADPS1) | _BV(ADPS0); +#endif + + TIMSK = _BV(TOIE1); + sei(); /* enable interrupts */ + + /* + * Enable the watchdog with the largest prescaler. Will cause a + * watchdog reset after approximately 2 s @ Vcc = 5 V + */ + wdt_enable(WDTO_2S); + + /* + * Read the value from EEPROM. If it is not 0xffff (erased cells), + * use it as the starting value for the PWM. + */ + if ((pwm_from_eeprom = eeprom_read_word(&ee_pwm)) != 0xffff) + OCR1A = (pwm = pwm_from_eeprom); +} + +/* + * Some simple UART IO functions. + */ + +/* + * Send character c down the UART Tx, wait until tx holding register + * is empty. + */ +static void +putchr(char c) +{ + + loop_until_bit_is_set(UCSRA, UDRE); + UDR = c; +} + +/* + * Send a C (NUL-terminated) string down the UART Tx. + */ +static void +printstr(const char *s) +{ + + while (*s) + { + if (*s == '\n') + putchr('\r'); + putchr(*s++); + } +} + +/* + * Same as above, but the string is located in program memory, + * so "lpm" instructions are needed to fetch it. + */ +static void +printstr_p(const char *s) +{ + char c; + + for (c = pgm_read_byte(s); c; ++s, c = pgm_read_byte(s)) + { + if (c == '\n') + putchr('\r'); + putchr(c); + } +} + +/* + * Update the PWM value. If it has changed, send the new value down + * the serial line. + */ +static void +set_pwm(int16_t new) +{ + char s[8]; + + if (new < 0) + new = 0; + else if (new > 1000) + new = 1000; + + if (new != pwm) + { + OCR1A = (pwm = new); + + /* + * Calculate a "percentage". We just divide by 10, as we + * limited the max value of the PWM to 1000 above. + */ + new /= 10; + itoa(new, s, 10); + printstr(s); + putchr(' '); + + pwm_backup_tmr = EE_UPDATE_TIME; + } +} + +/* Part 5: main() */ + +int +main(void) +{ + /* + * Our modus of operation. MODE_UPDOWN means we watch out for + * either PD2 or PD3 being low, and increase or decrease the + * PWM value accordingly. This is the default. + * MODE_ADC means the PWM value follows the value of ADC0 (PA0). + * This is enabled by applying low level to PC1. + * MODE_SERIAL means we get commands via the UART. This is + * enabled by sending a valid V.24 character at 9600 Bd to the + * UART. + */ + enum + { + MODE_UPDOWN, + MODE_ADC, + MODE_SERIAL + } __attribute__((packed)) mode = MODE_UPDOWN; + uint8_t flash = 0; + + ioinit(); + + if ((mcucsr & _BV(WDRF)) == _BV(WDRF)) + printstr_p(PSTR("\nOoops, the watchdog bit me!")); + + printstr_p(PSTR("\nHello, this is the avr-gcc/libc " + "demo running on an " +#if defined(__AVR_ATmega16__) + "ATmega16" +#elif defined(__AVR_ATmega8__) + "ATmega8" +#elif defined(__AVR_ATmega48__) + "ATmega48" +#elif defined(__AVR_ATmega88__) + "ATmega88" +#elif defined(__AVR_ATmega168__) + "ATmega168" +#elif defined(__AVR_ATtiny2313__) + "ATtiny2313" +#else + "unknown AVR" +#endif + "\n")); + + for (;;) + { + wdt_reset(); + + if (intflags.tmr_int) + { + /* + * Our periodic 10 ms interrupt happened. See what we can + * do about it. + */ + intflags.tmr_int = 0; + /* + * toggle PD6, just to show the internal clock; should + * yield ~ 48 Hz on PD6 + */ + CONTROL_PORT ^= _BV(CLOCKOUT); + /* + * flash LED on PD7, approximately once per second + */ + flash++; + if (flash == 5) + CONTROL_PORT |= _BV(FLASH); + else if (flash == 100) + { + flash = 0; + CONTROL_PORT &= ~_BV(FLASH); + } + + switch (mode) + { + case MODE_SERIAL: + /* + * In serial mode, there's nothing to do anymore here. + */ + break; + + case MODE_UPDOWN: + /* + * Query the pushbuttons. + * + * NB: watch out to use PINx for reading, as opposed + * to using PORTx which would be the mirror of the + * _output_ latch register (resp. pullup configuration + * bit for input pins)! + */ + if (bit_is_clear(PIND, TRIGGER_DOWN)) + set_pwm(pwm - 10); + else if (bit_is_clear(PIND, TRIGGER_UP)) + set_pwm(pwm + 10); +#if HAVE_ADC + else if (bit_is_clear(PIND, TRIGGER_ADC)) + mode = MODE_ADC; +#endif + break; + + case MODE_ADC: +#if HAVE_ADC + if (bit_is_set(PIND, TRIGGER_ADC)) + mode = MODE_UPDOWN; + else + { + /* + * Start one conversion. + */ + ADCSRA |= _BV(ADIE); + ADCSRA |= _BV(ADSC); + } +#endif /* HAVE_ADC */ + break; + } + + if (pwm_backup_tmr && --pwm_backup_tmr == 0) + { + /* + * The EEPROM backup timer expired. Save the current + * PWM value in EEPROM. Note that this function might + * block for a few milliseconds (after writing the + * first byte). + */ + eeprom_write_word(&ee_pwm, pwm); + printstr_p(PSTR("[EEPROM updated] ")); + } + } + +#if HAVE_ADC + if (intflags.adc_int) + { + intflags.adc_int = 0; + set_pwm(adcval); + } +#endif /* HAVE_ADC */ + + if (intflags.rx_int) + { + intflags.rx_int = 0; + + if (rxbuff == 'q') + { + printstr_p(PSTR("\nThank you for using serial mode." + " Good-bye!\n")); + mode = MODE_UPDOWN; + } + else + { + if (mode != MODE_SERIAL) + { + printstr_p(PSTR("\nWelcome at serial control, " + "type +/- to adjust, or 0/1 to turn on/off\n" + "the LED, q to quit serial mode, " + "r to demonstrate a watchdog reset\n")); + mode = MODE_SERIAL; + } + switch (rxbuff) + { + case '+': + set_pwm(pwm + 10); + break; + + case '-': + set_pwm(pwm - 10); + break; + + case '0': + set_pwm(0); + break; + + case '1': + set_pwm(1000); + break; + + case 'r': + printstr_p(PSTR("\nzzzz... zzz...")); + for (;;) + ; + } + } + } + sleep_mode(); + } +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/Makefile b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/Makefile new file mode 100644 index 0000000..199653a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/Makefile @@ -0,0 +1,82 @@ +PRG = stdiodemo +OBJ = stdiodemo.o hd44780.o lcd.o uart.o +MCU_TARGET = atmega16 +OPTIMIZE = -Os + +DEFS = +LIBS = + +# You should not have to change anything below here. + +CC = avr-gcc + +CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) +LDFLAGS = -Wl,-Map,$(PRG).map + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: $(PRG).elf lst text eeprom + +$(PRG).elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +clean: + rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak + rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) + +lst: $(PRG).lst + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PRG).hex +bin: $(PRG).bin +srec: $(PRG).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +# Rules for building the .eeprom rom images + +eeprom: ehex ebin esrec + +ehex: $(PRG)_eeprom.hex +ebin: $(PRG)_eeprom.bin +esrec: $(PRG)_eeprom.srec + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ + +# Every thing below here is used by avr-libc's build system and can be ignored +# by the casual user. + +JPEGFILES = stdiodemo-setup.jpg + +JPEG2PNM = jpegtopnm +PNM2EPS = pnmtops +JPEGRESOLUTION = 180 +EXTRA_CLEAN_FILES = *.hex *.bin *.srec *.eps + +dox: ${JPEGFILES:.jpg=.eps} + +%.eps: %.jpg + $(JPEG2PNM) $< |\ + $(PNM2EPS) -noturn -dpi $(JPEGRESOLUTION) -equalpixels \ + > $@ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/defines.h b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/defines.h new file mode 100644 index 0000000..c48f54a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/defines.h @@ -0,0 +1,29 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * General stdiodemo defines + * + * $Id: defines.h,v 1.2 2006/10/08 21:47:36 joerg_wunsch Exp $ + */ + +/* CPU frequency */ +#define F_CPU 1000000UL + +/* UART baud rate */ +#define UART_BAUD 9600 + +/* HD44780 LCD port connections */ +#define HD44780_PORT A +#define HD44780_RS PORT6 +#define HD44780_RW PORT4 +#define HD44780_E PORT5 +/* The data bits have to be in ascending order. */ +#define HD44780_D4 PORT0 +#define HD44780_D5 PORT1 +#define HD44780_D6 PORT2 +#define HD44780_D7 PORT3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/hd44780.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/hd44780.c new file mode 100644 index 0000000..22a3e7d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/hd44780.c @@ -0,0 +1,191 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * HD44780 LCD display driver + * + * The LCD controller is used in 4-bit mode with a full bi-directional + * interface (i.e. R/~W is connected) so the busy flag can be read. + * + * $Id: hd44780.c,v 1.3 2006/10/08 21:47:36 joerg_wunsch Exp $ + */ + +#include "defines.h" + +#include +#include + +#include +#include + +#include "hd44780.h" + +#define GLUE(a, b) a##b +#define PORT(x) GLUE(PORT, x) +#define PIN(x) GLUE(PIN, x) +#define DDR(x) GLUE(DDR, x) + +#define HD44780_PORTOUT PORT(HD44780_PORT) +#define HD44780_PORTIN PIN(HD44780_PORT) +#define HD44780_DDR DDR(HD44780_PORT) + +#define HD44780_DATABITS \ +(_BV(HD44780_D4)|_BV(HD44780_D5)|_BV(HD44780_D6)|_BV(HD44780_D7)) + +#define HD44780_BUSYFLAG 0x80 + +/* + * Send one pulse to the E signal (enable). Mind the timing + * constraints. If readback is set to true, read the HD44780 data + * pins right before the falling edge of E, and return that value. + */ +static inline uint8_t +hd44780_pulse_e(bool readback) __attribute__((always_inline)); + +static inline uint8_t +hd44780_pulse_e(bool readback) +{ + uint8_t x; + + HD44780_PORTOUT |= _BV(HD44780_E); + /* + * Guarantee at least 500 ns of pulse width. For high CPU + * frequencies, a delay loop is used. For lower frequencies, NOPs + * are used, and at or below 1 MHz, the native pulse width will + * already be 1 us or more so no additional delays are needed. + */ +#if F_CPU > 4000000UL + _delay_us(0.5); +#else + /* + * When reading back, we need one additional NOP, as the value read + * back from the input pin is sampled close to the beginning of a + * CPU clock cycle, while the previous edge on the output pin is + * generated towards the end of a CPU clock cycle. + */ + if (readback) + __asm__ volatile("nop"); +# if F_CPU > 1000000UL + __asm__ volatile("nop"); +# if F_CPU > 2000000UL + __asm__ volatile("nop"); + __asm__ volatile("nop"); +# endif /* F_CPU > 2000000UL */ +# endif /* F_CPU > 1000000UL */ +#endif + if (readback) + x = HD44780_PORTIN & HD44780_DATABITS; + else + x = 0; + HD44780_PORTOUT &= ~_BV(HD44780_E); + + return x; +} + +/* + * Send one nibble out to the LCD controller. + */ +static void +hd44780_outnibble(uint8_t n, uint8_t rs) +{ + uint8_t x; + + HD44780_PORTOUT &= ~_BV(HD44780_RW); + if (rs) + HD44780_PORTOUT |= _BV(HD44780_RS); + else + HD44780_PORTOUT &= ~_BV(HD44780_RS); + x = (HD44780_PORTOUT & ~HD44780_DATABITS) | ((n << HD44780_D4) & HD44780_DATABITS); + HD44780_PORTOUT = x; + (void)hd44780_pulse_e(false); +} + +/* + * Send one byte to the LCD controller. As we are in 4-bit mode, we + * have to send two nibbles. + */ +void +hd44780_outbyte(uint8_t b, uint8_t rs) +{ + hd44780_outnibble(b >> 4, rs); + hd44780_outnibble(b & 0xf, rs); +} + +/* + * Read one nibble from the LCD controller. + */ +static uint8_t +hd44780_innibble(uint8_t rs) +{ + uint8_t x; + + HD44780_PORTOUT |= _BV(HD44780_RW); + HD44780_DDR &= ~HD44780_DATABITS; + if (rs) + HD44780_PORTOUT |= _BV(HD44780_RS); + else + HD44780_PORTOUT &= ~_BV(HD44780_RS); + x = hd44780_pulse_e(true); + HD44780_DDR |= HD44780_DATABITS; + HD44780_PORTOUT &= ~_BV(HD44780_RW); + + return (x & HD44780_DATABITS) >> HD44780_D4; +} + +/* + * Read one byte (i.e. two nibbles) from the LCD controller. + */ +uint8_t +hd44780_inbyte(uint8_t rs) +{ + uint8_t x; + + x = hd44780_innibble(rs) << 4; + x |= hd44780_innibble(rs); + + return x; +} + +/* + * Wait until the busy flag is cleared. + */ +void +hd44780_wait_ready(void) +{ + while (hd44780_incmd() & HD44780_BUSYFLAG) ; +} + +/* + * Initialize the LCD controller. + * + * The initialization sequence has a mandatory timing so the + * controller can safely recognize the type of interface desired. + * This is the only area where timed waits are really needed as + * the busy flag cannot be probed initially. + */ +void +hd44780_init(void) +{ + + HD44780_DDR = _BV(HD44780_RS) | _BV(HD44780_RW) | _BV(HD44780_E) + | HD44780_DATABITS; + + _delay_ms(15); /* 40 ms needed for Vcc = 2.7 V */ + hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0); + _delay_ms(4.1); + hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0); + _delay_ms(0.1); + hd44780_outnibble(HD44780_FNSET(1, 0, 0) >> 4, 0); + + hd44780_outnibble(HD44780_FNSET(0, 1, 0) >> 4, 0); + hd44780_wait_ready(); + hd44780_outcmd(HD44780_FNSET(0, 1, 0)); + hd44780_wait_ready(); + hd44780_outcmd(HD44780_DISPCTL(0, 0, 0)); + hd44780_wait_ready(); +} + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/hd44780.h b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/hd44780.h new file mode 100644 index 0000000..241c661 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/hd44780.h @@ -0,0 +1,100 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * HD44780 LCD display driver + * + * $Id: hd44780.h,v 1.1 2005/12/28 21:38:59 joerg_wunsch Exp $ + */ + +/* + * Send byte b to the LCD. rs is the RS signal (register select), 0 + * selects instruction register, 1 selects the data register. + */ +void hd44780_outbyte(uint8_t b, uint8_t rs); + +/* + * Read one byte from the LCD controller. rs is the RS signal, 0 + * selects busy flag (bit 7) and address counter, 1 selects the data + * register. + */ +uint8_t hd44780_inbyte(uint8_t rs); + +/* + * Wait for the busy flag to clear. + */ +void hd44780_wait_ready(void); + +/* + * Initialize the LCD controller hardware. + */ +void hd44780_init(void); + + +/* Send a command to the LCD controller. */ +#define hd44780_outcmd(n) hd44780_outbyte((n), 0) + +/* Send a data byte to the LCD controller. */ +#define hd44780_outdata(n) hd44780_outbyte((n), 1) + +/* Read the address counter and busy flag from the LCD. */ +#define hd44780_incmd() hd44780_inbyte(0) + +/* Read the current data byte from the LCD. */ +#define hd44780_indata() hd44780_inbyte(1) + + +/* Clear LCD display command. */ +#define HD44780_CLR \ + 0x01 + +/* Home cursor command. */ +#define HD44780_HOME \ + 0x02 + +/* + * Select the entry mode. inc determines whether the address counter + * auto-increments, shift selects an automatic display shift. + */ +#define HD44780_ENTMODE(inc, shift) \ + (0x04 | ((inc)? 0x02: 0) | ((shift)? 1: 0)) + +/* + * Selects disp[lay] on/off, cursor on/off, cursor blink[ing] + * on/off. + */ +#define HD44780_DISPCTL(disp, cursor, blink) \ + (0x08 | ((disp)? 0x04: 0) | ((cursor)? 0x02: 0) | ((blink)? 1: 0)) + +/* + * With shift = 1, shift display right or left. + * With shift = 0, move cursor right or left. + */ +#define HD44780_SHIFT(shift, right) \ + (0x10 | ((shift)? 0x08: 0) | ((right)? 0x04: 0)) + +/* + * Function set. if8bit selects an 8-bit data path, twoline arranges + * for a two-line display, font5x10 selects the 5x10 dot font (5x8 + * dots if clear). + */ +#define HD44780_FNSET(if8bit, twoline, font5x10) \ + (0x20 | ((if8bit)? 0x10: 0) | ((twoline)? 0x08: 0) | \ + ((font5x10)? 0x04: 0)) + +/* + * Set the next character generator address to addr. + */ +#define HD44780_CGADDR(addr) \ + (0x40 | ((addr) & 0x3f)) + +/* + * Set the next display address to addr. + */ +#define HD44780_DDADDR(addr) \ + (0x80 | ((addr) & 0x7f)) + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/lcd.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/lcd.c new file mode 100644 index 0000000..3f0db75 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/lcd.c @@ -0,0 +1,91 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Stdio demo, upper layer of LCD driver. + * + * $Id: lcd.c,v 1.1 2005/12/28 21:38:59 joerg_wunsch Exp $ + */ + +#include "defines.h" + +#include +#include +#include + +#include + +#include + +#include "hd44780.h" +#include "lcd.h" + +/* + * Setup the LCD controller. First, call the hardware initialization + * function, then adjust the display attributes we want. + */ +void +lcd_init(void) +{ + + hd44780_init(); + + /* + * Clear the display. + */ + hd44780_outcmd(HD44780_CLR); + hd44780_wait_ready(); + + /* + * Entry mode: auto-increment address counter, no display shift in + * effect. + */ + hd44780_outcmd(HD44780_ENTMODE(1, 0)); + hd44780_wait_ready(); + + /* + * Enable display, activate non-blinking cursor. + */ + hd44780_outcmd(HD44780_DISPCTL(1, 1, 0)); + hd44780_wait_ready(); +} + +/* + * Send character c to the LCD display. After a '\n' has been seen, + * the next character will first clear the display. + */ +int +lcd_putchar(char c, FILE *unused) +{ + static bool nl_seen; + + if (nl_seen && c != '\n') + { + /* + * First character after newline, clear display and home cursor. + */ + hd44780_wait_ready(); + hd44780_outcmd(HD44780_CLR); + hd44780_wait_ready(); + hd44780_outcmd(HD44780_HOME); + hd44780_wait_ready(); + hd44780_outcmd(HD44780_DDADDR(0)); + + nl_seen = false; + } + if (c == '\n') + { + nl_seen = true; + } + else + { + hd44780_wait_ready(); + hd44780_outdata(c); + } + + return 0; +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/lcd.h b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/lcd.h new file mode 100644 index 0000000..4f583d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/lcd.h @@ -0,0 +1,22 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Stdio demo, upper layer of LCD driver. + * + * $Id: lcd.h,v 1.1 2005/12/28 21:38:59 joerg_wunsch Exp $ + */ + +/* + * Initialize LCD controller. Performs a software reset. + */ +void lcd_init(void); + +/* + * Send one character to the LCD. + */ +int lcd_putchar(char c, FILE *stream); diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/stdiodemo.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/stdiodemo.c new file mode 100644 index 0000000..b76d9a4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/stdiodemo.c @@ -0,0 +1,112 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Stdio demo + * + * $Id: stdiodemo.c,v 1.1 2005/12/28 21:38:59 joerg_wunsch Exp $ + */ + +#include "defines.h" + +#include +#include +#include + +#include +#include + +#include + +#include "lcd.h" +#include "uart.h" + +/* + * Do all the startup-time peripheral initializations. + */ +static void +ioinit(void) +{ + uart_init(); + lcd_init(); +} + +FILE uart_str = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW); +FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE); + +static void +delay_1s(void) +{ + uint8_t i; + + for (i = 0; i < 100; i++) + _delay_ms(10); +} + +int +main(void) +{ + uint8_t i; + char buf[20], s[20]; + + ioinit(); + + stdout = stdin = &uart_str; + stderr = &lcd_str; + + fprintf(stderr, "Hello world!\n"); + + for (;;) + { + printf_P(PSTR("Enter command: ")); + if (fgets(buf, sizeof buf - 1, stdin) == NULL) + break; + if (tolower(buf[0]) == 'q') + break; + + switch (tolower(buf[0])) + { + default: + printf("Unknown command: %s\n", buf); + break; + + case 'l': + if (sscanf(buf, "%*s %s", s) > 0) + { + fprintf(&lcd_str, "Got %s\n", s); + printf("OK\n"); + } + else + { + printf("sscanf() failed\n"); + } + break; + + case 'u': + if (sscanf(buf, "%*s %s", s) > 0) + { + fprintf(&uart_str, "Got %s\n", s); + printf("OK\n"); + } + else + { + printf("sscanf() failed\n"); + } + break; + } + } + fprintf(stderr, "Bye-bye"); + delay_1s(); + for (i = 0; i < 3; i++) + { + putc('.', stderr); + delay_1s(); + } + fprintf(stderr, "\n "); + + return 0; +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/uart.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/uart.c new file mode 100644 index 0000000..31fe3f4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/uart.c @@ -0,0 +1,186 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Stdio demo, UART implementation + * + * $Id: uart.c,v 1.1 2005/12/28 21:38:59 joerg_wunsch Exp $ + */ + +#include "defines.h" + +#include +#include + +#include + +#include "uart.h" + +/* + * Initialize the UART to 9600 Bd, tx/rx, 8N1. + */ +void +uart_init(void) +{ +#if F_CPU < 2000000UL && defined(U2X) + UCSRA = _BV(U2X); /* improve baud rate error by using 2x clk */ + UBRRL = (F_CPU / (8UL * UART_BAUD)) - 1; +#else + UBRRL = (F_CPU / (16UL * UART_BAUD)) - 1; +#endif + UCSRB = _BV(TXEN) | _BV(RXEN); /* tx/rx enable */ +} + +/* + * Send character c down the UART Tx, wait until tx holding register + * is empty. + */ +int +uart_putchar(char c, FILE *stream) +{ + + if (c == '\a') + { + fputs("*ring*\n", stderr); + return 0; + } + + if (c == '\n') + uart_putchar('\r', stream); + loop_until_bit_is_set(UCSRA, UDRE); + UDR = c; + + return 0; +} + +/* + * Receive a character from the UART Rx. + * + * This features a simple line-editor that allows to delete and + * re-edit the characters entered, until either CR or NL is entered. + * Printable characters entered will be echoed using uart_putchar(). + * + * Editing characters: + * + * . \b (BS) or \177 (DEL) delete the previous character + * . ^u kills the entire input buffer + * . ^w deletes the previous word + * . ^r sends a CR, and then reprints the buffer + * . \t will be replaced by a single space + * + * All other control characters will be ignored. + * + * The internal line buffer is RX_BUFSIZE (80) characters long, which + * includes the terminating \n (but no terminating \0). If the buffer + * is full (i. e., at RX_BUFSIZE-1 characters in order to keep space for + * the trailing \n), any further input attempts will send a \a to + * uart_putchar() (BEL character), although line editing is still + * allowed. + * + * Input errors while talking to the UART will cause an immediate + * return of -1 (error indication). Notably, this will be caused by a + * framing error (e. g. serial line "break" condition), by an input + * overrun, and by a parity error (if parity was enabled and automatic + * parity recognition is supported by hardware). + * + * Successive calls to uart_getchar() will be satisfied from the + * internal buffer until that buffer is emptied again. + */ +int +uart_getchar(FILE *stream) +{ + uint8_t c; + char *cp, *cp2; + static char b[RX_BUFSIZE]; + static char *rxp; + + if (rxp == 0) + for (cp = b;;) + { + loop_until_bit_is_set(UCSRA, RXC); + if (UCSRA & _BV(FE)) + return _FDEV_EOF; + if (UCSRA & _BV(DOR)) + return _FDEV_ERR; + c = UDR; + /* behaviour similar to Unix stty ICRNL */ + if (c == '\r') + c = '\n'; + if (c == '\n') + { + *cp = c; + uart_putchar(c, stream); + rxp = b; + break; + } + else if (c == '\t') + c = ' '; + + if ((c >= (uint8_t)' ' && c <= (uint8_t)'\x7e') || + c >= (uint8_t)'\xa0') + { + if (cp == b + RX_BUFSIZE - 1) + uart_putchar('\a', stream); + else + { + *cp++ = c; + uart_putchar(c, stream); + } + continue; + } + + switch (c) + { + case 'c' & 0x1f: + return -1; + + case '\b': + case '\x7f': + if (cp > b) + { + uart_putchar('\b', stream); + uart_putchar(' ', stream); + uart_putchar('\b', stream); + cp--; + } + break; + + case 'r' & 0x1f: + uart_putchar('\r', stream); + for (cp2 = b; cp2 < cp; cp2++) + uart_putchar(*cp2, stream); + break; + + case 'u' & 0x1f: + while (cp > b) + { + uart_putchar('\b', stream); + uart_putchar(' ', stream); + uart_putchar('\b', stream); + cp--; + } + break; + + case 'w' & 0x1f: + while (cp > b && cp[-1] != ' ') + { + uart_putchar('\b', stream); + uart_putchar(' ', stream); + uart_putchar('\b', stream); + cp--; + } + break; + } + } + + c = *rxp++; + if (c == '\n') + rxp = 0; + + return c; +} + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/uart.h b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/uart.h new file mode 100644 index 0000000..9a4e551 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/stdiodemo/uart.h @@ -0,0 +1,34 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Stdio demo, UART declarations + * + * $Id: uart.h,v 1.1 2005/12/28 21:38:59 joerg_wunsch Exp $ + */ + +/* + * Perform UART startup initialization. + */ +void uart_init(void); + +/* + * Send one character to the UART. + */ +int uart_putchar(char c, FILE *stream); + +/* + * Size of internal line buffer used by uart_getchar(). + */ +#define RX_BUFSIZE 80 + +/* + * Receive one character from the UART. The actual reception is + * line-buffered, and one character is returned from the buffer at + * each invokation. + */ +int uart_getchar(FILE *stream); diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/twitest/Makefile b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/twitest/Makefile new file mode 100644 index 0000000..2d517a0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/twitest/Makefile @@ -0,0 +1,41 @@ +# +# $Id: Makefile,v 1.1 2002/12/18 22:35:38 joerg_wunsch Exp $ +# +CC= avr-gcc +#MCU=atmega8 +#MCU=atmega16 +#MCU=atmega32 +#MCU=atmega163 +#MCU=atmega323 +MCU=atmega128 + +CFLAGS= -O -g -Wall -ffreestanding -mmcu=$(MCU) + +.SUFFIXES: .s .bin .out .hex .srec + +.c.s: + $(CC) $(CFLAGS) -S $< + +.S.o: + $(CC) $(ASFLAGS) -c $< + +.o.out: + $(CC) $(CFLAGS) -o $@ $< + +.out.bin: + avr-objcopy -O binary $< $@ + +.out.hex: + avr-objcopy -O ihex $< $@ + +.out.srec: + avr-objcopy -O srec $< $@ + +all: twitest.bin + +OBJS=twitest.o +twitest.out: $(OBJS) + $(CC) -o twitest.out $(CFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS) + +clean: + rm -f *~ *.out *.bin *.hex *.srec *.s *.o *.pdf *core diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/twitest/twitest.c b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/twitest/twitest.c new file mode 100644 index 0000000..76822ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/examples/twitest/twitest.c @@ -0,0 +1,514 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + */ + +/* $Id: twitest.c,v 1.6 2005/11/05 22:32:46 joerg_wunsch Exp $ */ + +/* + * Simple demo program that talks to a 24Cxx I²C EEPROM using the + * builtin TWI interface of an ATmega device. + */ + +#include +#include +#include + +#include +#include /* Note [1] */ + +#define DEBUG 1 + +/* + * System clock in Hz. + */ +#define F_CPU 14745600UL /* Note [2] */ + +/* + * Compatibility defines. This should work on ATmega8, ATmega16, + * ATmega163, ATmega323 and ATmega128 (IOW: on all devices that + * provide a builtin TWI interface). + * + * On the 128, it defaults to USART 1. + */ +#ifndef UCSRB +# ifdef UCSR1A /* ATmega128 */ +# define UCSRA UCSR1A +# define UCSRB UCSR1B +# define UBRR UBRR1L +# define UDR UDR1 +# else /* ATmega8 */ +# define UCSRA USR +# define UCSRB UCR +# endif +#endif +#ifndef UBRR +# define UBRR UBRRL +#endif + +/* + * Note [3] + * TWI address for 24Cxx EEPROM: + * + * 1 0 1 0 E2 E1 E0 R/~W 24C01/24C02 + * 1 0 1 0 E2 E1 A8 R/~W 24C04 + * 1 0 1 0 E2 A9 A8 R/~W 24C08 + * 1 0 1 0 A10 A9 A8 R/~W 24C16 + */ +#define TWI_SLA_24CXX 0xa0 /* E2 E1 E0 = 0 0 0 */ + +/* + * Maximal number of iterations to wait for a device to respond for a + * selection. Should be large enough to allow for a pending write to + * complete, but low enough to properly abort an infinite loop in case + * a slave is broken or not present at all. With 100 kHz TWI clock, + * transfering the start condition and SLA+R/W packet takes about 10 + * µs. The longest write period is supposed to not exceed ~ 10 ms. + * Thus, normal operation should not require more than 100 iterations + * to get the device to respond to a selection. + */ +#define MAX_ITER 200 + +/* + * Number of bytes that can be written in a row, see comments for + * ee24xx_write_page() below. Some vendor's devices would accept 16, + * but 8 seems to be the lowest common denominator. + * + * Note that the page size must be a power of two, this simplifies the + * page boundary calculations below. + */ +#define PAGE_SIZE 8 + +/* + * Saved TWI status register, for error messages only. We need to + * save it in a variable, since the datasheet only guarantees the TWSR + * register to have valid contents while the TWINT bit in TWCR is set. + */ +uint8_t twst; + +/* + * Do all the startup-time peripheral initializations: UART (for our + * debug/test output), and TWI clock. + */ +void +ioinit(void) +{ + +#if F_CPU <= 1000000UL + /* + * Note [4] + * Slow system clock, double Baud rate to improve rate error. + */ + UCSRA = _BV(U2X); + UBRR = (F_CPU / (8 * 9600UL)) - 1; /* 9600 Bd */ +#else + UBRR = (F_CPU / (16 * 9600UL)) - 1; /* 9600 Bd */ +#endif + UCSRB = _BV(TXEN); /* tx enable */ + + /* initialize TWI clock: 100 kHz clock, TWPS = 0 => prescaler = 1 */ +#if defined(TWPS0) + /* has prescaler (mega128 & newer) */ + TWSR = 0; +#endif + +#if F_CPU < 3600000UL + TWBR = 10; /* smallest TWBR value, see note [5] */ +#else + TWBR = (F_CPU / 100000UL - 16) / 2; +#endif +} + +/* + * Note [6] + * Send character c down the UART Tx, wait until tx holding register + * is empty. + */ +int +uart_putchar(char c, FILE *unused) +{ + + if (c == '\n') + uart_putchar('\r', 0); + loop_until_bit_is_set(UCSRA, UDRE); + UDR = c; + return 0; +} + +/* + * Note [7] + * + * Read "len" bytes from EEPROM starting at "eeaddr" into "buf". + * + * This requires two bus cycles: during the first cycle, the device + * will be selected (master transmitter mode), and the address + * transfered. Address bits exceeding 256 are transfered in the + * E2/E1/E0 bits (subaddress bits) of the device selector. + * + * The second bus cycle will reselect the device (repeated start + * condition, going into master receiver mode), and transfer the data + * from the device to the TWI master. Multiple bytes can be + * transfered by ACKing the client's transfer. The last transfer will + * be NACKed, which the client will take as an indication to not + * initiate further transfers. + */ +int +ee24xx_read_bytes(uint16_t eeaddr, int len, uint8_t *buf) +{ + uint8_t sla, twcr, n = 0; + int rv = 0; + + /* patch high bits of EEPROM address into SLA */ + sla = TWI_SLA_24CXX | (((eeaddr >> 8) & 0x07) << 1); + + /* + * Note [8] + * First cycle: master transmitter mode + */ + restart: + if (n++ >= MAX_ITER) + return -1; + begin: + + TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); /* send start condition */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_REP_START: /* OK, but should not happen */ + case TW_START: + break; + + case TW_MT_ARB_LOST: /* Note [9] */ + goto begin; + + default: + return -1; /* error: not in start condition */ + /* NB: do /not/ send stop condition */ + } + + /* Note [10] */ + /* send SLA+W */ + TWDR = sla | TW_WRITE; + TWCR = _BV(TWINT) | _BV(TWEN); /* clear interrupt to start transmission */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_MT_SLA_ACK: + break; + + case TW_MT_SLA_NACK: /* nack during select: device busy writing */ + /* Note [11] */ + goto restart; + + case TW_MT_ARB_LOST: /* re-arbitrate */ + goto begin; + + default: + goto error; /* must send stop condition */ + } + + TWDR = eeaddr; /* low 8 bits of addr */ + TWCR = _BV(TWINT) | _BV(TWEN); /* clear interrupt to start transmission */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_MT_DATA_ACK: + break; + + case TW_MT_DATA_NACK: + goto quit; + + case TW_MT_ARB_LOST: + goto begin; + + default: + goto error; /* must send stop condition */ + } + + /* + * Note [12] + * Next cycle(s): master receiver mode + */ + TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); /* send (rep.) start condition */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_START: /* OK, but should not happen */ + case TW_REP_START: + break; + + case TW_MT_ARB_LOST: + goto begin; + + default: + goto error; + } + + /* send SLA+R */ + TWDR = sla | TW_READ; + TWCR = _BV(TWINT) | _BV(TWEN); /* clear interrupt to start transmission */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_MR_SLA_ACK: + break; + + case TW_MR_SLA_NACK: + goto quit; + + case TW_MR_ARB_LOST: + goto begin; + + default: + goto error; + } + + for (twcr = _BV(TWINT) | _BV(TWEN) | _BV(TWEA) /* Note [13] */; + len > 0; + len--) + { + if (len == 1) + twcr = _BV(TWINT) | _BV(TWEN); /* send NAK this time */ + TWCR = twcr; /* clear int to start transmission */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_MR_DATA_NACK: + len = 0; /* force end of loop */ + /* FALLTHROUGH */ + case TW_MR_DATA_ACK: + *buf++ = TWDR; + rv++; + break; + + default: + goto error; + } + } + quit: + /* Note [14] */ + TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN); /* send stop condition */ + + return rv; + + error: + rv = -1; + goto quit; +} + +/* + * Write "len" bytes into EEPROM starting at "eeaddr" from "buf". + * + * This is a bit simpler than the previous function since both, the + * address and the data bytes will be transfered in master transmitter + * mode, thus no reselection of the device is necessary. However, the + * EEPROMs are only capable of writing one "page" simultaneously, so + * care must be taken to not cross a page boundary within one write + * cycle. The amount of data one page consists of varies from + * manufacturer to manufacturer: some vendors only use 8-byte pages + * for the smaller devices, and 16-byte pages for the larger devices, + * while other vendors generally use 16-byte pages. We thus use the + * smallest common denominator of 8 bytes per page, declared by the + * macro PAGE_SIZE above. + * + * The function simply returns after writing one page, returning the + * actual number of data byte written. It is up to the caller to + * re-invoke it in order to write further data. + */ +int +ee24xx_write_page(uint16_t eeaddr, int len, uint8_t *buf) +{ + uint8_t sla, n = 0; + int rv = 0; + uint16_t endaddr; + + if (eeaddr + len < (eeaddr | (PAGE_SIZE - 1))) + endaddr = eeaddr + len; + else + endaddr = (eeaddr | (PAGE_SIZE - 1)) + 1; + len = endaddr - eeaddr; + + /* patch high bits of EEPROM address into SLA */ + sla = TWI_SLA_24CXX | (((eeaddr >> 8) & 0x07) << 1); + + restart: + if (n++ >= MAX_ITER) + return -1; + begin: + + /* Note [15] */ + TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); /* send start condition */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_REP_START: /* OK, but should not happen */ + case TW_START: + break; + + case TW_MT_ARB_LOST: + goto begin; + + default: + return -1; /* error: not in start condition */ + /* NB: do /not/ send stop condition */ + } + + /* send SLA+W */ + TWDR = sla | TW_WRITE; + TWCR = _BV(TWINT) | _BV(TWEN); /* clear interrupt to start transmission */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_MT_SLA_ACK: + break; + + case TW_MT_SLA_NACK: /* nack during select: device busy writing */ + goto restart; + + case TW_MT_ARB_LOST: /* re-arbitrate */ + goto begin; + + default: + goto error; /* must send stop condition */ + } + + TWDR = eeaddr; /* low 8 bits of addr */ + TWCR = _BV(TWINT) | _BV(TWEN); /* clear interrupt to start transmission */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_MT_DATA_ACK: + break; + + case TW_MT_DATA_NACK: + goto quit; + + case TW_MT_ARB_LOST: + goto begin; + + default: + goto error; /* must send stop condition */ + } + + for (; len > 0; len--) + { + TWDR = *buf++; + TWCR = _BV(TWINT) | _BV(TWEN); /* start transmission */ + while ((TWCR & _BV(TWINT)) == 0) ; /* wait for transmission */ + switch ((twst = TW_STATUS)) + { + case TW_MT_DATA_NACK: + goto error; /* device write protected -- Note [16] */ + + case TW_MT_DATA_ACK: + rv++; + break; + + default: + goto error; + } + } + quit: + TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN); /* send stop condition */ + + return rv; + + error: + rv = -1; + goto quit; +} + +/* + * Wrapper around ee24xx_write_page() that repeats calling this + * function until either an error has been returned, or all bytes + * have been written. + */ +int +ee24xx_write_bytes(uint16_t eeaddr, int len, uint8_t *buf) +{ + int rv, total; + + total = 0; + do + { +#if DEBUG + printf("Calling ee24xx_write_page(%d, %d, %p)", + eeaddr, len, buf); +#endif + rv = ee24xx_write_page(eeaddr, len, buf); +#if DEBUG + printf(" => %d\n", rv); +#endif + if (rv == -1) + return -1; + eeaddr += rv; + len -= rv; + buf += rv; + total += rv; + } + while (len > 0); + + return total; +} + +void +error(void) +{ + + printf("error: TWI status %#x\n", twst); + exit(0); +} + +FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); + +void +main(void) +{ + uint16_t a; + int rv; + uint8_t b[16]; + uint8_t x; + + ioinit(); + + stdout = &mystdout; + + for (a = 0; a < 256;) + { + printf("%#04x: ", a); + rv = ee24xx_read_bytes(a, 16, b); + if (rv <= 0) + error(); + if (rv < 16) + printf("warning: short read %d\n", rv); + a += rv; + for (x = 0; x < rv; x++) + printf("%02x ", b[x]); + putchar('\n'); + } +#define EE_WRITE(addr, str) ee24xx_write_bytes(addr, sizeof(str)-1, str) + rv = EE_WRITE(55, "The quick brown fox jumps over the lazy dog."); + if (rv < 0) + error(); + printf("Wrote %d bytes.\n", rv); + for (a = 0; a < 256;) + { + printf("%#04x: ", a); + rv = ee24xx_read_bytes(a, 16, b); + if (rv <= 0) + error(); + if (rv < 16) + printf("warning: short read %d\n", rv); + a += rv; + for (x = 0; x < rv; x++) + printf("%02x ", b[x]); + putchar('\n'); + } + + printf("done.\n"); + +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_BLOCK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_BLOCK.3 new file mode 100644 index 0000000..d450226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_BLOCK.3 @@ -0,0 +1 @@ +.so man3/util_atomic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_FORCEON.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_FORCEON.3 new file mode 100644 index 0000000..d450226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_FORCEON.3 @@ -0,0 +1 @@ +.so man3/util_atomic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_RESTORESTATE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_RESTORESTATE.3 new file mode 100644 index 0000000..d450226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ATOMIC_RESTORESTATE.3 @@ -0,0 +1 @@ +.so man3/util_atomic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BADISR_vect.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BADISR_vect.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BADISR_vect.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BAUD_TOL.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BAUD_TOL.3 new file mode 100644 index 0000000..b0ab20c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BAUD_TOL.3 @@ -0,0 +1 @@ +.so man3/util_setbaud.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB01.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB01.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB01.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB02.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB02.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB02.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB11.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB11.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB11.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB12.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB12.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BLB12.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BOOTLOADER_SECTION.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BOOTLOADER_SECTION.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/BOOTLOADER_SECTION.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_ALWAYS_SIGN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_ALWAYS_SIGN.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_ALWAYS_SIGN.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_PLUS_SIGN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_PLUS_SIGN.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_PLUS_SIGN.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_UPPERCASE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_UPPERCASE.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/DTOSTR_UPPERCASE.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EDOM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EDOM.3 new file mode 100644 index 0000000..9a3f088 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EDOM.3 @@ -0,0 +1 @@ +.so man3/avr_errno.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EEMEM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EEMEM.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EEMEM.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EMPTY_INTERRUPT.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EMPTY_INTERRUPT.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EMPTY_INTERRUPT.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EOF.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EOF.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/EOF.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ERANGE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ERANGE.3 new file mode 100644 index 0000000..9a3f088 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ERANGE.3 @@ -0,0 +1 @@ +.so man3/avr_errno.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FAQ.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FAQ.3 new file mode 100644 index 0000000..6da2be3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FAQ.3 @@ -0,0 +1,1042 @@ +.TH "FAQ" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +FAQ \- Frequently Asked Questions +.SH "FAQ Index" +.PP +.PP +.IP "1." 4 +\fBMy program doesn't recognize a variable updated within an interrupt routine\fP +.IP "2." 4 +\fBI get 'undefined reference to...' for functions like 'sin()'\fP +.IP "3." 4 +\fBHow to permanently bind a variable to a register?\fP +.IP "4." 4 +\fBHow to modify MCUCR or WDTCR early?\fP +.IP "5." 4 +\fBWhat is all this _BV() stuff about?\fP +.IP "6." 4 +\fBCan I use C++ on the AVR?\fP +.IP "7." 4 +\fBShouldn't I initialize all my variables?\fP +.IP "8." 4 +\fBWhy do some 16-bit timer registers sometimes get trashed?\fP +.IP "9." 4 +\fBHow do I use a #define'd constant in an asm statement?\fP +.IP "10." 4 +\fBWhy does the PC randomly jump around when single-stepping through my program in avr-gdb?\fP +.IP "11." 4 +\fBHow do I trace an assembler file in avr-gdb?\fP +.IP "12." 4 +\fBHow do I pass an IO port as a parameter to a function?\fP +.IP "13." 4 +\fBWhat registers are used by the C compiler?\fP +.IP "14." 4 +\fBHow do I put an array of strings completely in ROM?\fP +.IP "15." 4 +\fBHow to use external RAM?\fP +.IP "16." 4 +\fBWhich -O flag to use?\fP +.IP "17." 4 +\fBHow do I relocate code to a fixed address?\fP +.IP "18." 4 +\fBMy UART is generating nonsense! My ATmega128 keeps crashing! Port F is completely broken!\fP +.IP "19." 4 +\fBWhy do all my 'foo...bar' strings eat up the SRAM?\fP +.IP "20." 4 +\fBWhy does the compiler compile an 8-bit operation that uses bitwise operators into a 16-bit operation in assembly?\fP +.IP "21." 4 +\fBHow to detect RAM memory and variable overlap problems?\fP +.IP "22." 4 +\fBIs it really impossible to program the ATtinyXX in C?\fP +.IP "23." 4 +\fBWhat is this 'clock skew detected' messsage?\fP +.IP "24." 4 +\fBWhy are (many) interrupt flags cleared by writing a logical 1?\fP +.IP "25." 4 +\fBWhy have 'programmed' fuses the bit value 0?\fP +.IP "26." 4 +\fBWhich AVR-specific assembler operators are available?\fP +.IP "27." 4 +\fBWhy are interrupts re-enabled in the middle of writing the stack pointer?\fP +.IP "28." 4 +\fBWhy are there five different linker scripts?\fP +.IP "29." 4 +\fBHow to add a raw binary image to linker output?\fP +.IP "30." 4 +\fBHow do I perform a software reset of the AVR?\fP +.IP "31." 4 +\fBI am using floating point math. Why is the compiled code so big? Why does my code not work?\fP +.IP "32." 4 +\fBWhat pitfalls exist when writing reentrant code?\fP +.PP +.SH "My program doesn't recognize a variable updated within an interrupt routine" +.PP +When using the optimizer, in a loop like the following one: +.PP +.PP +.nf +uint8_t flag; +... +ISR(SOME_vect) { + flag = 1; +} +... + + while (flag == 0) { + ... + } +.fi +.PP +.PP +the compiler will typically access \fCflag\fP only once, and optimize further accesses completely away, since its code path analysis shows that nothing inside the loop could change the value of \fCflag\fP anyway. To tell the compiler that this variable could be changed outside the scope of its code path analysis (e. g. from within an interrupt routine), the variable needs to be declared like: +.PP +.PP +.nf +volatile uint8_t flag; +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "I get 'undefined reference to...' for functions like 'sin()'" +.PP +In order to access the mathematical functions that are declared in \fC<\fBmath.h\fP>\fP, the linker needs to be told to also link the mathematical library, \fClibm.a\fP. +.PP +Typically, system libraries like \fClibm.a\fP are given to the final C compiler command line that performs the linking step by adding a flag \fC-lm\fP at the end. (That is, the initial \fIlib\fP and the filename suffix from the library are written immediately after a \fI-l\fP flag. So for a \fClibfoo.a\fP library, \fC-lfoo\fP needs to be provided.) This will make the linker search the library in a path known to the system. +.PP +An alternative would be to specify the full path to the \fClibm.a\fP file at the same place on the command line, i. e. \fIafter\fP all the object files (\fC*.o\fP). However, since this requires knowledge of where the build system will exactly find those library files, this is deprecated for system libraries. +.PP +Back to \fBFAQ Index\fP. +.SH "How to permanently bind a variable to a register?" +.PP +This can be done with +.PP +.PP +.nf +register unsigned char counter asm('r3'); +.fi +.PP +.PP +Typically, it should be safe to use r2 through r7 that way. +.PP +Registers r8 through r15 can be used for argument passing by the compiler in case many or long arguments are being passed to callees. If this is not the case throughout the entire application, these registers could be used for register variables as well. +.PP +Extreme care should be taken that the entire application is compiled with a consistent set of register-allocated variables, including possibly used library functions. +.PP +See \fBC Names Used in Assembler Code\fP for more details. +.PP +Back to \fBFAQ Index\fP. +.SH "How to modify MCUCR or WDTCR early?" +.PP +The method of early initialization (\fCMCUCR\fP, \fCWDTCR\fP or anything else) is different (and more flexible) in the current version. Basically, write a small assembler file which looks like this: +.PP +.PP +.nf +;; begin xram.S + +#include + + .section .init1,'ax',@progbits + + ldi r16,_BV(SRE) | _BV(SRW) + out _SFR_IO_ADDR(MCUCR),r16 + +;; end xram.S +.fi +.PP +.PP +Assemble it, link the resulting \fCxram.o\fP with other files in your program, and this piece of code will be inserted in initialization code, which is run right after reset. See the linker script for comments about the new \fC.init\fP\fIN\fP sections (which one to use, etc.). +.PP +The advantage of this method is that you can insert any initialization code you want (just remember that this is very early startup -- no stack and no \fC__zero_reg__\fP yet), and no program memory space is wasted if this feature is not used. +.PP +There should be no need to modify linker scripts anymore, except for some very special cases. It is best to leave \fC__stack\fP at its default value (end of internal SRAM -- faster, and required on some devices like ATmega161 because of errata), and add \fC-Wl,-Tdata,0x801100\fP to start the data section above the stack. +.PP +For more information on using sections, see \fBMemory Sections\fP. There is also an example for \fBUsing Sections in C Code\fP. Note that in C code, any such function would preferrably be placed into section \fC\fP.init3 as the code in \fC\fP.init2 ensures the internal register \fC__zero_reg__\fP is already cleared. +.PP +Back to \fBFAQ Index\fP. +.SH "What is all this _BV() stuff about?" +.PP +When performing low-level output work, which is a very central point in microcontroller programming, it is quite common that a particular bit needs to be set or cleared in some IO register. While the device documentation provides mnemonic names for the various bits in the IO registers, and the \fBAVR device-specific IO definitions\fP reflect these names in definitions for numerical constants, a way is needed to convert a bit number (usually within a byte register) into a byte value that can be assigned directly to the register. However, sometimes the direct bit numbers are needed as well (e. g. in an \fCSBI()\fP instruction), so the definitions cannot usefully be made as byte values in the first place. +.PP +So in order to access a particular bit number as a byte value, use the \fC\fB_BV()\fP\fP macro. Of course, the implementation of this macro is just the usual bit shift (which is done by the compiler anyway, thus doesn't impose any run-time penalty), so the following applies: +.PP +.PP +.nf +_BV(3) => 1 << 3 => 0x08 +.fi +.PP +.PP +However, using the macro often makes the program better readable. +.PP +'BV' stands for 'bit value', in case someone might ask you. :-) +.PP +\fBExample:\fP clock timer 2 with full IO clock (\fCCS2\fP\fIx\fP = 0b001), toggle OC2 output on compare match (\fCCOM2\fP\fIx\fP = 0b01), and clear timer on compare match (\fCCTC2\fP = 1). Make OC2 (\fCPD7\fP) an output. +.PP +.PP +.nf + TCCR2 = _BV(COM20)|_BV(CTC2)|_BV(CS20); + DDRD = _BV(PD7); +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "Can I use C++ on the AVR?" +.PP +Basically yes, C++ is supported (assuming your compiler has been configured and compiled to support it, of course). Source files ending in \fC\fP.cc, \fC\fP.cpp or \fC\fP.C will automatically cause the compiler frontend to invoke the C++ compiler. Alternatively, the C++ compiler could be explicitly called by the name \fCavr-c++\fP. +.PP +However, there's currently no support for \fClibstdc++\fP, the standard support library needed for a complete C++ implementation. This imposes a number of restrictions on the C++ programs that can be compiled. Among them are: +.PP +.IP "\(bu" 2 +Obviously, none of the C++ related standard functions, classes, and template classes are available. +.PP +.PP +.IP "\(bu" 2 +The operators \fCnew\fP and \fCdelete\fP are not implemented, attempting to use them will cause the linker to complain about undefined external references. (This could perhaps be fixed.) +.PP +.PP +.IP "\(bu" 2 +Some of the supplied include files are not C++ safe, i. e. they need to be wrapped into +.PP +.nf + extern 'C' { . . . } + +.fi +.PP + (This could certainly be fixed, too.) +.PP +.PP +.IP "\(bu" 2 +Exceptions are not supported. Since exceptions are enabled by default in the C++ frontend, they explicitly need to be turned off using \fC-fno-exceptions\fP in the compiler options. Failing this, the linker will complain about an undefined external reference to \fC__gxx_personality_sj0\fP. +.PP +.PP +Constructors and destructors \fIare\fP supported though, including global ones. +.PP +When programming C++ in space- and runtime-sensitive environments like microcontrollers, extra care should be taken to avoid unwanted side effects of the C++ calling conventions like implied copy constructors that could be called upon function invocation etc. These things could easily add up into a considerable amount of time and program memory wasted. Thus, casual inspection of the generated assembler code (using the \fC-S\fP compiler option) seems to be warranted. +.PP +Back to \fBFAQ Index\fP. +.SH "Shouldn't I initialize all my variables?" +.PP +Global and static variables are guaranteed to be initialized to 0 by the C standard. \fCavr-gcc\fP does this by placing the appropriate code into section \fC\fP.init4 (see \fBThe .initN Sections\fP). With respect to the standard, this sentence is somewhat simplified (because the standard allows for machines where the actual bit pattern used differs from all bits being 0), but for the AVR target, in general, all integer-type variables are set to 0, all pointers to a NULL pointer, and all floating-point variables to 0.0. +.PP +As long as these variables are not initialized (i. e. they don't have an equal sign and an initialization expression to the right within the definition of the variable), they go into the \fB.bss\fP section of the file. This section simply records the size of the variable, but otherwise doesn't consume space, neither within the object file nor within flash memory. (Of course, being a variable, it will consume space in the target's SRAM.) +.PP +In contrast, global and static variables that have an initializer go into the \fB.data\fP section of the file. This will cause them to consume space in the object file (in order to record the initializing value), \fIand\fP in the flash ROM of the target device. The latter is needed since the flash ROM is the only way that the compiler can tell the target device the value this variable is going to be initialized to. +.PP +Now if some programmer 'wants to make doubly sure' their variables really get a 0 at program startup, and adds an initializer just containing 0 on the right-hand side, they waste space. While this waste of space applies to virtually any platform C is implemented on, it's usually not noticeable on larger machines like PCs, while the waste of flash ROM storage can be very painful on a small microcontroller like the AVR. +.PP +So in general, variables should only be explicitly initialized if the initial value is non-zero. +.PP +\fBNote:\fP +.RS 4 +Recent versions of GCC are now smart enough to detect this situation, and revert variables that are explicitly initialized to 0 to the .bss section. Still, other compilers might not do that optimization, and as the C standard guarantees the initialization, it is safe to rely on it. +.RE +.PP +Back to \fBFAQ Index\fP. +.SH "Why do some 16-bit timer registers sometimes get trashed?" +.PP +Some of the timer-related 16-bit IO registers use a temporary register (called TEMP in the Atmel datasheet) to guarantee an atomic access to the register despite the fact that two separate 8-bit IO transfers are required to actually move the data. Typically, this includes access to the current timer/counter value register (\fCTCNT\fP\fIn\fP), the input capture register (\fCICR\fP\fIn\fP), and write access to the output compare registers (\fCOCR\fP\fInM\fP). Refer to the actual datasheet for each device's set of registers that involves the TEMP register. +.PP +When accessing one of the registers that use TEMP from the main application, and possibly any other one from within an interrupt routine, care must be taken that no access from within an interrupt context could clobber the TEMP register data of an in-progress transaction that has just started elsewhere. +.PP +To protect interrupt routines against other interrupt routines, it's usually best to use the \fBISR()\fP macro when declaring the interrupt function, and to ensure that interrupts are still disabled when accessing those 16-bit timer registers. +.PP +Within the main program, access to those registers could be encapsulated in calls to the \fBcli()\fP and \fBsei()\fP macros. If the status of the global interrupt flag before accessing one of those registers is uncertain, something like the following example code can be used. +.PP +.PP +.nf +uint16_t +read_timer1(void) +{ + uint8_t sreg; + uint16_t val; + + sreg = SREG; + cli(); + val = TCNT1; + SREG = sreg; + + return val; +} +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "How do I use a #define'd constant in an asm statement?" +.PP +So you tried this: +.PP +.PP +.nf +asm volatile('sbi 0x18,0x07;'); +.fi +.PP +.PP +Which works. When you do the same thing but replace the address of the port by its macro name, like this: +.PP +.PP +.nf +asm volatile('sbi PORTB,0x07;'); +.fi +.PP +.PP +you get a compilation error: \fC'Error: constant value required'\fP. +.PP +\fCPORTB\fP is a precompiler definition included in the processor specific file included in \fC\fBavr/io.h\fP\fP. As you may know, the precompiler will not touch strings and \fCPORTB\fP, instead of \fC0x18\fP, gets passed to the assembler. One way to avoid this problem is: +.PP +.PP +.nf +asm volatile('sbi %0, 0x07' : 'I' (_SFR_IO_ADDR(PORTB)):); +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +For C programs, rather use the standard C bit operators instead, so the above would be expressed as \fCPORTB |= (1 << 7)\fP. The optimizer will take care to transform this into a single SBI instruction, assuming the operands allow for this. +.RE +.PP +Back to \fBFAQ Index\fP. +.SH "Why does the PC randomly jump around when single-stepping through my program in avr-gdb?" +.PP +When compiling a program with both optimization (\fC-O\fP) and debug information (\fC-g\fP) which is fortunately possible in \fCavr-gcc\fP, the code watched in the debugger is optimized code. While it is not guaranteed, very often this code runs with the exact same optimizations as it would run without the \fC-g\fP switch. +.PP +This can have unwanted side effects. Since the compiler is free to reorder code execution as long as the semantics do not change, code is often rearranged in order to make it possible to use a single branch instruction for conditional operations. Branch instructions can only cover a short range for the target PC (-63 through +64 words from the current PC). If a branch instruction cannot be used directly, the compiler needs to work around it by combining a skip instruction together with a relative jump (\fCrjmp\fP) instruction, which will need one additional word of ROM. +.PP +Another side effect of optimzation is that variable usage is restricted to the area of code where it is actually used. So if a variable was placed in a register at the beginning of some function, this same register can be re-used later on if the compiler notices that the first variable is no longer used inside that function, even though the variable is still in lexical scope. When trying to examine the variable in \fCavr-gdb\fP, the displayed result will then look garbled. +.PP +So in order to avoid these side effects, optimization can be turned off while debugging. However, some of these optimizations might also have the side effect of uncovering bugs that would otherwise not be obvious, so it must be noted that turning off optimization can easily change the bug pattern. In most cases, you are better off leaving optimizations enabled while debugging. +.PP +Back to \fBFAQ Index\fP. +.SH "How do I trace an assembler file in avr-gdb?" +.PP +When using the \fC-g\fP compiler option, \fCavr-gcc\fP only generates line number and other debug information for C (and C++) files that pass the compiler. Functions that don't have line number information will be completely skipped by a single \fCstep\fP command in \fCgdb\fP. This includes functions linked from a standard library, but by default also functions defined in an assembler source file, since the \fC-g\fP compiler switch does not apply to the assembler. +.PP +So in order to debug an assembler input file (possibly one that has to be passed through the C preprocessor), it's the assembler that needs to be told to include line-number information into the output file. (Other debug information like data types and variable allocation cannot be generated, since unlike a compiler, the assembler basically doesn't know about this.) This is done using the (GNU) assembler option \fC--gstabs\fP. +.PP +Example: +.PP +.PP +.nf + + $ avr-as -mmcu=atmega128 --gstabs -o foo.o foo.s +.fi +.PP +.PP +When the assembler is not called directly but through the C compiler frontend (either implicitly by passing a source file ending in \fC\fP.S, or explicitly using \fC-x assembler-with-cpp\fP), the compiler frontend needs to be told to pass the \fC--gstabs\fP option down to the assembler. This is done using \fC-Wa,--gstabs\fP. Please take care to \fIonly\fP pass this option when compiling an assembler input file. Otherwise, the assembler code that results from the C compilation stage will also get line number information, which confuses the debugger. +.PP +\fBNote:\fP +.RS 4 +You can also use \fC-Wa,-gstabs\fP since the compiler will add the extra \fC'-'\fP for you. +.RE +.PP +Example: +.PP +.PP +.nf + + $ EXTRA_OPTS="-Wall -mmcu=atmega128 -x assembler-with-cpp" + $ avr-gcc -Wa,--gstabs ${EXTRA_OPTS} -c -o foo.o foo.S +.fi +.PP +.PP +Also note that the debugger might get confused when entering a piece of code that has a non-local label before, since it then takes this label as the name of a new function that appears to have been entered. Thus, the best practice to avoid this confusion is to only use non-local labels when declaring a new function, and restrict anything else to local labels. Local labels consist just of a number only. References to these labels consist of the number, followed by the letter \fBb\fP for a backward reference, or \fBf\fP for a forward reference. These local labels may be re-used within the source file, references will pick the closest label with the same number and given direction. +.PP +Example: +.PP +.PP +.nf +myfunc: push r16 + push r17 + push r18 + push YL + push YH + ... + eor r16, r16 ; start loop + ldi YL, lo8(sometable) + ldi YH, hi8(sometable) + rjmp 2f ; jump to loop test at end +1: ld r17, Y+ ; loop continues here + ... + breq 1f ; return from myfunc prematurely + ... + inc r16 +2: cmp r16, r18 + brlo 1b ; jump back to top of loop + +1: pop YH + pop YL + pop r18 + pop r17 + pop r16 + ret +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "How do I pass an IO port as a parameter to a function?" +.PP +Consider this example code: +.PP +.PP +.nf +#include +#include + +void +set_bits_func_wrong (volatile uint8_t port, uint8_t mask) +{ + port |= mask; +} + +void +set_bits_func_correct (volatile uint8_t *port, uint8_t mask) +{ + *port |= mask; +} + +#define set_bits_macro(port,mask) ((port) |= (mask)) + +int main (void) +{ + set_bits_func_wrong (PORTB, 0xaa); + set_bits_func_correct (&PORTB, 0x55); + set_bits_macro (PORTB, 0xf0); + + return (0); +} +.fi +.PP +.PP +The first function will generate object code which is not even close to what is intended. The major problem arises when the function is called. When the compiler sees this call, it will actually pass the value of the \fCPORTB\fP register (using an \fCIN\fP instruction), instead of passing the address of \fCPORTB\fP (e.g. memory mapped io addr of \fC0x38\fP, io port \fC0x18\fP for the mega128). This is seen clearly when looking at the disassembly of the call: +.PP +.PP +.nf + + set_bits_func_wrong (PORTB, 0xaa); + 10a: 6a ea ldi r22, 0xAA ; 170 + 10c: 88 b3 in r24, 0x18 ; 24 + 10e: 0e 94 65 00 call 0xca +.fi +.PP +.PP +So, the function, once called, only sees the value of the port register and knows nothing about which port it came from. At this point, whatever object code is generated for the function by the compiler is irrelevant. The interested reader can examine the full disassembly to see that the function's body is completely fubar. +.PP +The second function shows how to pass (by reference) the memory mapped address of the io port to the function so that you can read and write to it in the function. Here's the object code generated for the function call: +.PP +.PP +.nf + + set_bits_func_correct (&PORTB, 0x55); + 112: 65 e5 ldi r22, 0x55 ; 85 + 114: 88 e3 ldi r24, 0x38 ; 56 + 116: 90 e0 ldi r25, 0x00 ; 0 + 118: 0e 94 7c 00 call 0xf8 +.fi +.PP +.PP +You can clearly see that \fC0x0038\fP is correctly passed for the address of the io port. Looking at the disassembled object code for the body of the function, we can see that the function is indeed performing the operation we intended: +.PP +.PP +.nf + +void +set_bits_func_correct (volatile uint8_t *port, uint8_t mask) +{ + f8: fc 01 movw r30, r24 + *port |= mask; + fa: 80 81 ld r24, Z + fc: 86 2b or r24, r22 + fe: 80 83 st Z, r24 +} + 100: 08 95 ret +.fi +.PP +.PP +Notice that we are accessing the io port via the \fCLD\fP and \fCST\fP instructions. +.PP +The \fCport\fP parameter must be volatile to avoid a compiler warning. +.PP +\fBNote:\fP +.RS 4 +Because of the nature of the \fCIN\fP and \fCOUT\fP assembly instructions, they can not be used inside the function when passing the port in this way. Readers interested in the details should consult the \fIInstruction Set\fP data sheet. +.RE +.PP +Finally we come to the macro version of the operation. In this contrived example, the macro is the most efficient method with respect to both execution speed and code size: +.PP +.PP +.nf + + set_bits_macro (PORTB, 0xf0); + 11c: 88 b3 in r24, 0x18 ; 24 + 11e: 80 6f ori r24, 0xF0 ; 240 + 120: 88 bb out 0x18, r24 ; 24 +.fi +.PP +.PP +Of course, in a real application, you might be doing a lot more in your function which uses a passed by reference io port address and thus the use of a function over a macro could save you some code space, but still at a cost of execution speed. +.PP +Care should be taken when such an indirect port access is going to one of the 16-bit IO registers where the order of write access is critical (like some timer registers). All versions of avr-gcc up to 3.3 will generate instructions that use the wrong access order in this situation (since with normal memory operands where the order doesn't matter, this sometimes yields shorter code). +.PP +See http://mail.nongnu.org/archive/html/avr-libc-dev/2003-01/msg00044.html for a possible workaround. +.PP +avr-gcc versions after 3.3 have been fixed in a way where this optimization will be disabled if the respective pointer variable is declared to be \fCvolatile\fP, so the correct behaviour for 16-bit IO ports can be forced that way. +.PP +Back to \fBFAQ Index\fP. +.SH "What registers are used by the C compiler?" +.PP +.IP "\(bu" 2 +\fBData types:\fP +.br + \fCchar\fP is 8 bits, \fCint\fP is 16 bits, \fClong\fP is 32 bits, \fClong\fP long is 64 bits, \fCfloat\fP and \fCdouble\fP are 32 bits (this is the only supported floating point format), pointers are 16 bits (function pointers are word addresses, to allow addressing up to 128K program memory space). There is a \fC-mint8\fP option (see \fBOptions for the C compiler avr-gcc\fP) to make \fCint\fP 8 bits, but that is not supported by avr-libc and violates C standards (\fCint\fP \fImust\fP be at least 16 bits). It may be removed in a future release. +.PP +.PP +.IP "\(bu" 2 +\fBCall-used registers (r18-r27, r30-r31):\fP +.br + May be allocated by gcc for local data. You \fImay\fP use them freely in assembler subroutines. Calling C subroutines can clobber any of them - the caller is responsible for saving and restoring. +.PP +.PP +.IP "\(bu" 2 +\fBCall-saved registers (r2-r17, r28-r29):\fP +.br + May be allocated by gcc for local data. Calling C subroutines leaves them unchanged. Assembler subroutines are responsible for saving and restoring these registers, if changed. r29:r28 (Y pointer) is used as a frame pointer (points to local data on stack) if necessary. The requirement for the callee to save/preserve the contents of these registers even applies in situations where the compiler assigns them for argument passing. +.PP +.PP +.IP "\(bu" 2 +\fBFixed registers (r0, r1):\fP +.br + Never allocated by gcc for local data, but often used for fixed purposes: +.PP +.PP +r0 - temporary register, can be clobbered by any C code (except interrupt handlers which save it), \fImay\fP be used to remember something for a while within one piece of assembler code +.PP +r1 - assumed to be always zero in any C code, \fImay\fP be used to remember something for a while within one piece of assembler code, but \fImust\fP then be cleared after use (\fCclr r1\fP). This includes any use of the \fC[f]mul[s[u]]\fP instructions, which return their result in r1:r0. Interrupt handlers save and clear r1 on entry, and restore r1 on exit (in case it was non-zero). +.PP +.IP "\(bu" 2 +\fBFunction call conventions:\fP +.br + Arguments - allocated left to right, r25 to r8. All arguments are aligned to start in even-numbered registers (odd-sized arguments, including \fCchar\fP, have one free register above them). This allows making better use of the \fCmovw\fP instruction on the enhanced core. +.PP +.PP +If too many, those that don't fit are passed on the stack. +.PP +Return values: 8-bit in r24 (not r25!), 16-bit in r25:r24, up to 32 bits in r22-r25, up to 64 bits in r18-r25. 8-bit return values are zero/sign-extended to 16 bits by the called function (\fCunsigned char\fP is more efficient than \fCsigned char\fP - just \fCclr r25\fP). Arguments to functions with variable argument lists (printf etc.) are all passed on stack, and \fCchar\fP is extended to \fCint\fP. +.PP +\fBWarning:\fP +.RS 4 +There was no such alignment before 2000-07-01, including the old patches for gcc-2.95.2. Check your old assembler subroutines, and adjust them accordingly. +.RE +.PP +Back to \fBFAQ Index\fP. +.SH "How do I put an array of strings completely in ROM?" +.PP +There are times when you may need an array of strings which will never be modified. In this case, you don't want to waste ram storing the constant strings. The most obvious (and incorrect) thing to do is this: +.PP +.PP +.nf +#include + +PGM_P array[2] PROGMEM = { + 'Foo', + 'Bar' +}; + +int main (void) +{ + char buf[32]; + strcpy_P (buf, array[1]); + return 0; +} +.fi +.PP +.PP +The result is not what you want though. What you end up with is the array stored in ROM, while the individual strings end up in RAM (in the \fC\fP.data section). +.PP +To work around this, you need to do something like this: +.PP +.PP +.nf +#include + +const char foo[] PROGMEM = 'Foo'; +const char bar[] PROGMEM = 'Bar'; + +PGM_P array[2] PROGMEM = { + foo, + bar +}; + +int main (void) +{ + char buf[32]; + PGM_P p; + int i; + + memcpy_P(&p, &array[i], sizeof(PGM_P)); + strcpy_P(buf, p); + return 0; +} +.fi +.PP +.PP +Looking at the disassembly of the resulting object file we see that array is in flash as such: +.PP +.PP +.nf +00000026 : + 26: 2e 00 .word 0x002e ; ???? + 28: 2a 00 .word 0x002a ; ???? + +0000002a : + 2a: 42 61 72 00 Bar. + +0000002e : + 2e: 46 6f 6f 00 Foo. +.fi +.PP +.PP +\fCfoo\fP is at addr 0x002e. +.br + \fCbar\fP is at addr 0x002a. +.br + \fCarray\fP is at addr 0x0026. +.br +.PP +Then in main we see this: +.PP +.PP +.nf + memcpy_P(&p, &array[i], sizeof(PGM_P)); + 70: 66 0f add r22, r22 + 72: 77 1f adc r23, r23 + 74: 6a 5d subi r22, 0xDA ; 218 + 76: 7f 4f sbci r23, 0xFF ; 255 + 78: 42 e0 ldi r20, 0x02 ; 2 + 7a: 50 e0 ldi r21, 0x00 ; 0 + 7c: ce 01 movw r24, r28 + 7e: 81 96 adiw r24, 0x21 ; 33 + 80: 08 d0 rcall .+16 ; 0x92 +.fi +.PP +.PP +This code reads the pointer to the desired string from the ROM table \fCarray\fP into a register pair. +.PP +The value of \fCi\fP (in r22:r23) is doubled to accomodate for the word offset required to access array[], then the address of array (0x26) is added, by subtracting the negated address (0xffda). The address of variable \fCp\fP is computed by adding its offset within the stack frame (33) to the Y pointer register, and \fC\fBmemcpy_P\fP\fP is called. +.PP +.PP +.nf + strcpy_P(buf, p); + 82: 69 a1 ldd r22, Y+33 ; 0x21 + 84: 7a a1 ldd r23, Y+34 ; 0x22 + 86: ce 01 movw r24, r28 + 88: 01 96 adiw r24, 0x01 ; 1 + 8a: 0c d0 rcall .+24 ; 0xa4 +.fi +.PP +.PP +This will finally copy the ROM string into the local buffer \fCbuf\fP. +.PP +Variable \fCp\fP (located at Y+33) is read, and passed together with the address of buf (Y+1) to \fC\fBstrcpy_P\fP\fP. This will copy the string from ROM to \fCbuf\fP. +.PP +Note that when using a compile-time constant index, omitting the first step (reading the pointer from ROM via \fC\fBmemcpy_P\fP\fP) usually remains unnoticed, since the compiler would then optimize the code for accessing \fCarray\fP at compile-time. +.PP +Back to \fBFAQ Index\fP. +.SH "How to use external RAM?" +.PP +Well, there is no universal answer to this question; it depends on what the external RAM is going to be used for. +.PP +Basically, the bit \fCSRE\fP (SRAM enable) in the \fCMCUCR\fP register needs to be set in order to enable the external memory interface. Depending on the device to be used, and the application details, further registers affecting the external memory operation like \fCXMCRA\fP and \fCXMCRB\fP, and/or further bits in \fCMCUCR\fP might be configured. Refer to the datasheet for details. +.PP +If the external RAM is going to be used to store the variables from the C program (i. e., the \fC\fP.data and/or \fC\fP.bss segment) in that memory area, it is essential to set up the external memory interface early during the \fBdevice initialization\fP so the initialization of these variable will take place. Refer to \fBHow to modify MCUCR or WDTCR early?\fP for a description how to do this using few lines of assembler code, or to the chapter about memory sections for an \fBexample written in C\fP. +.PP +The explanation of \fBmalloc()\fP contains a \fBdiscussion\fP about the use of internal RAM vs. external RAM in particular with respect to the various possible locations of the \fIheap\fP (area reserved for \fBmalloc()\fP). It also explains the linker command-line options that are required to move the memory regions away from their respective standard locations in internal RAM. +.PP +Finally, if the application simply wants to use the additional RAM for private data storage kept outside the domain of the C compiler (e. g. through a \fCchar *\fP variable initialized directly to a particular address), it would be sufficient to defer the initialization of the external RAM interface to the beginning of \fC\fBmain\fP\fB()\fP\fP, so no tweaking of the \fC\fP.init3 section is necessary. The same applies if only the heap is going to be located there, since the application start-up code does not affect the heap. +.PP +It is not recommended to locate the stack in external RAM. In general, accessing external RAM is slower than internal RAM, and errata of some AVR devices even prevent this configuration from working properly at all. +.PP +Back to \fBFAQ Index\fP. +.SH "Which -O flag to use?" +.PP +There's a common misconception that larger numbers behind the \fC-O\fP option might automatically cause 'better' optimization. First, there's no universal definition for 'better', with optimization often being a speed vs. code size tradeoff. See the \fBdetailed discussion\fP for which option affects which part of the code generation. +.PP +A test case was run on an ATmega128 to judge the effect of compiling the library itself using different optimization levels. The following table lists the results. The test case consisted of around 2 KB of strings to sort. Test #1 used \fBqsort()\fP using the standard library \fBstrcmp()\fP, test #2 used a function that sorted the strings by their size (thus had two calls to \fBstrlen()\fP per invocation). +.PP +When comparing the resulting code size, it should be noted that a floating point version of fvprintf() was linked into the binary (in order to print out the time elapsed) which is entirely not affected by the different optimization levels, and added about 2.5 KB to the code. +.PP +\fBOptimization flags\fP \fBSize of .text\fP \fBTime for test #1\fP \fBTime for test #2\fP -O3 6898 903 µs 19.7 ms -O2 6666 972 µs 20.1 ms -Os 6618 955 µs 20.1 ms -Os -mcall-prologues 6474 972 µs 20.1 ms +.PP +(The difference between 955 µs and 972 µs was just a single timer-tick, so take this with a grain of salt.) +.PP +So generally, it seems \fC-Os -mcall-prologues\fP is the most universal 'best' optimization level. Only applications that need to get the last few percent of speed benefit from using \fC-O3\fP. +.PP +Back to \fBFAQ Index\fP. +.SH "How do I relocate code to a fixed address?" +.PP +First, the code should be put into a new \fBnamed section\fP. This is done with a section attribute: +.PP +.PP +.nf +__attribute__ ((section ('.bootloader'))) +.fi +.PP +.PP +In this example, \fC\fP.bootloader is the name of the new section. This attribute needs to be placed after the prototype of any function to force the function into the new section. +.PP +.PP +.nf +void boot(void) __attribute__ ((section ('.bootloader'))); +.fi +.PP +.PP +To relocate the section to a fixed address the linker flag \fC--section-start\fP is used. This option can be passed to the linker using the \fB-Wl compiler option\fP: +.PP +.PP +.nf +-Wl,--section-start=.bootloader=0x1E000 +.fi +.PP +.PP +The name after section-start is the name of the section to be relocated. The number after the section name is the beginning address of the named section. +.PP +Back to \fBFAQ Index\fP. +.SH "My UART is generating nonsense! My ATmega128 keeps crashing! Port F is completely broken!" +.PP +Well, certain odd problems arise out of the situation that the AVR devices as shipped by Atmel often come with a default fuse bit configuration that doesn't match the user's expectations. Here is a list of things to care for: +.PP +.IP "\(bu" 2 +All devices that have an internal RC oscillator ship with the fuse enabled that causes the device to run off this oscillator, instead of an external crystal. This often remains unnoticed until the first attempt is made to use something critical in timing, like UART communication. +.IP "\(bu" 2 +The ATmega128 ships with the fuse enabled that turns this device into ATmega103 compatibility mode. This means that some ports are not fully usable, and in particular that the internal SRAM is located at lower addresses. Since by default, the stack is located at the top of internal SRAM, a program compiled for an ATmega128 running on such a device will immediately crash upon the first function call (or rather, upon the first function return). +.IP "\(bu" 2 +Devices with a JTAG interface have the \fCJTAGEN\fP fuse programmed by default. This will make the respective port pins that are used for the JTAG interface unavailable for regular IO. +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "Why do all my 'foo...bar' strings eat up the SRAM?" +.PP +By default, all strings are handled as all other initialized variables: they occupy RAM (even though the compiler might warn you when it detects write attempts to these RAM locations), and occupy the same amount of flash ROM so they can be initialized to the actual string by startup code. The compiler can optimize multiple identical strings into a single one, but obviously only for one compilation unit (i. e., a single C source file). +.PP +That way, any string literal will be a valid argument to any C function that expects a \fCconst char *\fP argument. +.PP +Of course, this is going to waste a lot of SRAM. In \fBProgram Space String Utilities\fP, a method is described how such constant data can be moved out to flash ROM. However, a constant string located in flash ROM is no longer a valid argument to pass to a function that expects a \fCconst char *\fP-type string, since the AVR processor needs the special instruction \fCLPM\fP to access these strings. Thus, separate functions are needed that take this into account. Many of the standard C library functions have equivalents available where one of the string arguments can be located in flash ROM. Private functions in the applications need to handle this, too. For example, the following can be used to implement simple debugging messages that will be sent through a UART: +.PP +.PP +.nf +#include +#include +#include + +int +uart_putchar(char c) +{ + if (c == '\n') + uart_putchar('\r'); + loop_until_bit_is_set(USR, UDRE); + UDR = c; + return 0; /* so it could be used for fdevopen(), too */ +} + +void +debug_P(const char *addr) +{ + char c; + + while ((c = pgm_read_byte(addr++))) + uart_putchar(c); +} + +int +main(void) +{ + ioinit(); /* initialize UART, ... */ + debug_P(PSTR('foo was here\n')); + return 0; +} +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +By convention, the suffix \fB_P\fP to the function name is used as an indication that this function is going to accept a 'program-space string'. Note also the use of the \fBPSTR()\fP macro. +.RE +.PP +Back to \fBFAQ Index\fP. +.SH "Why does the compiler compile an 8-bit operation that uses bitwise operators into a 16-bit operation in assembly?" +.PP +Bitwise operations in Standard C will automatically promote their operands to an int, which is (by default) 16 bits in avr-gcc. +.PP +To work around this use typecasts on the operands, including literals, to declare that the values are to be 8 bit operands. +.PP +This may be especially important when clearing a bit: +.PP +.PP +.nf +var &= ~mask; /* wrong way! */ +.fi +.PP +.PP +The bitwise 'not' operator (\fC~\fP) will also promote the value in \fCmask\fP to an int. To keep it an 8-bit value, typecast before the 'not' operator: +.PP +.PP +.nf +var &= (unsigned char)~mask; +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "How to detect RAM memory and variable overlap problems?" +.PP +You can simply run \fCavr-nm\fP on your output (ELF) file. Run it with the \fC-n\fP option, and it will sort the symbols numerically (by default, they are sorted alphabetically). +.PP +Look for the symbol \fC_end\fP, that's the first address in RAM that is not allocated by a variable. (avr-gcc internally adds 0x800000 to all data/bss variable addresses, so please ignore this offset.) Then, the run-time initialization code initializes the stack pointer (by default) to point to the last avaialable address in (internal) SRAM. Thus, the region between \fC_end\fP and the end of SRAM is what is available for stack. (If your application uses \fBmalloc()\fP, which e. g. also can happen inside \fBprintf()\fP, the heap for dynamic memory is also located there. See \fBMemory Areas and Using malloc()\fP.) +.PP +The amount of stack required for your application cannot be determined that easily. For example, if you recursively call a function and forget to break that recursion, the amount of stack required is infinite. :-) You can look at the generated assembler code (\fCavr-gcc ... -S\fP), there's a comment in each generated assembler file that tells you the frame size for each generated function. That's the amount of stack required for this function, you have to add up that for all functions where you know that the calls could be nested. +.PP +Back to \fBFAQ Index\fP. +.SH "Is it really impossible to program the ATtinyXX in C?" +.PP +While some small AVRs are not directly supported by the C compiler since they do not have a RAM-based stack (and some do not even have RAM at all), it is possible anyway to use the general-purpose registers as a RAM replacement since they are mapped into the data memory region. +.PP +Bruce D. Lightner wrote an excellent description of how to do this, and offers this together with a toolkit on his web page: +.PP +http://lightner.net/avr/ATtinyAvrGcc.html +.PP +Back to \fBFAQ Index\fP. +.SH "What is this 'clock skew detected' messsage?" +.PP +It's a known problem of the MS-DOS FAT file system. Since the FAT file system has only a granularity of 2 seconds for maintaining a file's timestamp, and it seems that some MS-DOS derivative (Win9x) perhaps rounds up the current time to the next second when calculating the timestamp of an updated file in case the current time cannot be represented in FAT's terms, this causes a situation where \fCmake\fP sees a 'file coming from the future'. +.PP +Since all make decisions are based on file timestamps, and their dependencies, make warns about this situation. +.PP +Solution: don't use inferior file systems / operating systems. Neither Unix file systems nor HPFS (aka NTFS) do experience that problem. +.PP +Workaround: after saving the file, wait a second before starting \fCmake\fP. Or simply ignore the warning. If you are paranoid, execute a \fCmake clean all\fP to make sure everything gets rebuilt. +.PP +In networked environments where the files are accessed from a file server, this message can also happen if the file server's clock differs too much from the network client's clock. In this case, the solution is to use a proper time keeping protocol on both systems, like NTP. As a workaround, synchronize the client's clock frequently with the server's clock. +.PP +Back to \fBFAQ Index\fP. +.SH "Why are (many) interrupt flags cleared by writing a logical 1?" +.PP +Usually, each interrupt has its own interrupt flag bit in some control register, indicating the specified interrupt condition has been met by representing a logical 1 in the respective bit position. When working with interrupt handlers, this interrupt flag bit usually gets cleared automatically in the course of processing the interrupt, sometimes by just calling the handler at all, sometimes (e. g. for the U[S]ART) by reading a particular hardware register that will normally happen anyway when processing the interrupt. +.PP +From the hardware's point of view, an interrupt is asserted as long as the respective bit is set, while global interrupts are enabled. Thus, it is essential to have the bit cleared before interrupts get re-enabled again (which usually happens when returning from an interrupt handler). +.PP +Only few subsystems require an explicit action to clear the interrupt request when using interrupt handlers. (The notable exception is the TWI interface, where clearing the interrupt indicates to proceed with the TWI bus hardware handshake, so it's never done automatically.) +.PP +However, if no normal interrupt handlers are to be used, or in order to make extra sure any pending interrupt gets cleared before re-activating global interrupts (e. g. an external edge-triggered one), it can be necessary to explicitly clear the respective hardware interrupt bit by software. This is usually done by writing a logical 1 into this bit position. This seems to be illogical at first, the bit position already carries a logical 1 when reading it, so why does writing a logical 1 to it \fIclear\fP the interrupt bit? +.PP +The solution is simple: writing a logical 1 to it requires only a single \fCOUT\fP instruction, and it is clear that only this single interrupt request bit will be cleared. There is no need to perform a read-modify-write cycle (like, an \fCSBI\fP instruction), since all bits in these control registers are interrupt bits, and writing a logical 0 to the remaining bits (as it is done by the simple \fCOUT\fP instruction) will not alter them, so there is no risk of any race condition that might accidentally clear another interrupt request bit. So instead of writing +.PP +.PP +.nf +TIFR |= _BV(TOV0); /* wrong! */ +.fi +.PP +.PP +simply use +.PP +.PP +.nf +TIFR = _BV(TOV0); +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "Why have 'programmed' fuses the bit value 0?" +.PP +Basically, fuses are just a bit in a special EEPROM area. For technical reasons, erased E[E]PROM cells have all bits set to the value 1, so unprogrammed fuses also have a logical 1. Conversely, programmed fuse cells read out as bit value 0. +.PP +Back to \fBFAQ Index\fP. +.SH "Which AVR-specific assembler operators are available?" +.PP +See \fBPseudo-ops and operators\fP. +.PP +Back to \fBFAQ Index\fP. +.SH "Why are interrupts re-enabled in the middle of writing the stack pointer?" +.PP +When setting up space for local variables on the stack, the compiler generates code like this: +.PP +.PP +.nf +/* prologue: frame size=20 */ + push r28 + push r29 + in r28,__SP_L__ + in r29,__SP_H__ + sbiw r28,20 + in __tmp_reg__,__SREG__ + cli + out __SP_H__,r29 + out __SREG__,__tmp_reg__ + out __SP_L__,r28 +/* prologue end (size=10) */ +.fi +.PP +.PP +It reads the current stack pointer value, decrements it by the required amount of bytes, then disables interrupts, writes back the high part of the stack pointer, writes back the saved \fCSREG\fP (which will eventually re-enable interrupts if they have been enabled before), and finally writes the low part of the stack pointer. +.PP +At the first glance, there's a race between restoring \fCSREG\fP, and writing \fCSPL\fP. However, after enabling interrupts (either explicitly by setting the \fCI\fP flag, or by restoring it as part of the entire \fCSREG\fP), the AVR hardware executes (at least) the next instruction still with interrupts disabled, so the write to \fCSPL\fP is guaranteed to be executed with interrupts disabled still. Thus, the emitted sequence ensures interrupts will be disabled only for the minimum time required to guarantee the integrity of this operation. +.PP +Back to \fBFAQ Index\fP. +.SH "Why are there five different linker scripts?" +.PP +From a comment in the source code: +.PP +Which one of the five linker script files is actually used depends on command line options given to ld. +.PP +A .x script file is the default script A .xr script is for linking without relocation (-r flag) A .xu script is like .xr but *do* create constructors (-Ur flag) A .xn script is for linking with -n flag (mix text and data on same page). A .xbn script is for linking with -N flag (mix text and data on same page). +.PP +Back to \fBFAQ Index\fP. +.SH "How to add a raw binary image to linker output?" +.PP +The GNU linker \fCavr-ld\fP cannot handle binary data directly. However, there's a companion tool called \fCavr-objcopy\fP. This is already known from the output side: it's used to extract the contents of the linked ELF file into an Intel Hex load file. +.PP +\fCavr-objcopy\fP can create a relocatable object file from arbitrary binary input, like +.PP +.PP +.nf +avr-objcopy -I binary -O elf32-avr foo.bin foo.o +.fi +.PP +.PP +This will create a file named \fCfoo.o\fP, with the contents of \fCfoo.bin\fP. The contents will default to section .data, and two symbols will be created named \fC_binary_foo_bin_start\fP and \fC_binary_foo_bin_end\fP. These symbols can be referred to inside a C source to access these data. +.PP +If the goal is to have those data go to flash ROM (similar to having used the PROGMEM attribute in C source code), the sections have to be renamed while copying, and it's also useful to set the section flags: +.PP +.PP +.nf +avr-objcopy --rename-section .data=.progmem.data,contents,alloc,load,readonly,data -I binary -O elf32-avr foo.bin foo.o +.fi +.PP +.PP +Note that all this could be conveniently wired into a Makefile, so whenever \fCfoo.bin\fP changes, it will trigger the recreation of \fCfoo.o\fP, and a subsequent relink of the final ELF file. +.PP +Below are two Makefile fragments that provide rules to convert a .txt file to an object file, and to convert a .bin file to an object file: +.PP +.PP +.nf +$(OBJDIR)/%.o : %.txt + @echo Converting $< + @cp $(<) $(*).tmp + @echo -n 0 | tr 0 '\000' >> $(*).tmp + @$(OBJCOPY) -I binary -O elf32-avr \ + --rename-section .data=.progmem.data,contents,alloc,load,readonly,data \ + --redefine-sym _binary_$*_tmp_start=$* \ + --redefine-sym _binary_$*_tmp_end=$*_end \ + --redefine-sym _binary_$*_tmp_size=$*_size_sym \ + $(*).tmp $(@) + @echo 'extern const char' $(*)'[] PROGMEM;' > $(*).h + @echo 'extern const char' $(*)_end'[] PROGMEM;' >> $(*).h + @echo 'extern const char' $(*)_size_sym'[];' >> $(*).h + @echo '#define $(*)_size ((int)$(*)_size_sym)' >> $(*).h + @rm $(*).tmp + +$(OBJDIR)/%.o : %.bin + @echo Converting $< + @$(OBJCOPY) -I binary -O elf32-avr \ + --rename-section .data=.progmem.data,contents,alloc,load,readonly,data \ + --redefine-sym _binary_$*_bin_start=$* \ + --redefine-sym _binary_$*_bin_end=$*_end \ + --redefine-sym _binary_$*_bin_size=$*_size_sym \ + $(<) $(@) + @echo 'extern const char' $(*)'[] PROGMEM;' > $(*).h + @echo 'extern const char' $(*)_end'[] PROGMEM;' >> $(*).h + @echo 'extern const char' $(*)_size_sym'[];' >> $(*).h + @echo '#define $(*)_size ((int)$(*)_size_sym)' >> $(*).h +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "How do I perform a software reset of the AVR?" +.PP +The canonical way to perform a software reset of the AVR is to use the watchdog timer. Enable the watchdog timer to the shortest timeout setting, then go into an infinite, do-nothing loop. The watchdog will then reset the processor. +.PP +The reason why this is preferrable over jumping to the reset vector, is that when the watchdog resets the AVR, the registers will be reset to their known, default settings. Whereas jumping to the reset vector will leave the registers in their previous state, which is generally not a good idea. +.PP +\fBCAUTION!\fP Older AVRs will have the watchdog timer disabled on a reset. For these older AVRs, doing a soft reset by enabling the watchdog is easy, as the watchdog will then be disabled after the reset. On newer AVRs, once the watchdog is enabled, then it \fBstays enabled, even after a reset\fP! For these newer AVRs a function needs to be added to the .init3 section (i.e. during the startup code, before main()) to disable the watchdog early enough so it does not continually reset the AVR. +.PP +Here is some example code that creates a macro that can be called to perform a soft reset: +.PP +.PP +.nf +#include + +... + +#define soft_reset() \ +do \ +{ \ + wdt_enable(WDTO_15MS); \ + for(;;) \ + { \ + } \ +} while(0) +.fi +.PP +.PP +For newer AVRs (such as the ATmega1281) also add this function to your code to then disable the watchdog after a reset (e.g., after a soft reset): +.PP +.PP +.nf +#include + +... + +// Function Pototype +void wdt_init(void) __attribute__((naked)) __attribute__((section('.init3'))); + +... + +// Function Implementation +void wdt_init(void) +{ + MCUSR = 0; + wdt_disable(); + + return; +} +.fi +.PP +.PP +Back to \fBFAQ Index\fP. +.SH "I am using floating point math. Why is the compiled code so big? Why does my code not work?" +.PP +You are not linking in the math library from AVR-LibC. GCC has a library that is used for floating point operations, but it is not optimized for the AVR, and so it generates big code, or it could be incorrect. This can happen even when you are not using any floating point math functions from the Standard C library, but you are just doing floating point math operations. +.PP +When you link in the math library from AVR-LibC, those routines get replaced by hand-optimized AVR assembly and it produces much smaller code. +.PP +See \fBI get 'undefined reference to...' for functions like 'sin()'\fP for more details on how to link in the math library. +.PP +Back to \fBFAQ Index\fP. +.SH "What pitfalls exist when writing reentrant code?" +.PP +Reentrant code means the ability for a piece of code to be called simultaneously from two or more threads. Attention to re-enterability is needed when using a multi-tasking operating system, or when using interrupts since an interrupt is really a temporary thread. +.PP +The code generated natively by gcc is reentrant. But, only some of the libraries in avr-libc are explicitly reentrant, and some are known not to be reentrant. In general, any library call that reads and writes global variables (including I/O registers) is not reentrant. This is because more than one thread could read or write the same storage at the same time, unaware that other threads are doing the same, and create inconsistent and/or erroneous results. +.PP +A library call that is known not to be reentrant will work if it is used only within one thread \fIand\fP no other thread makes use of a library call that shares common storage with it. +.PP +Below is a table of library calls with known issues. +.PP +\fBLibrary call\fP \fBReentrant Issue\fP \fBWorkaround/Alternative\fP \fBrand()\fP, \fBrandom()\fP Uses global variables to keep state information. Use special reentrant versions: \fBrand_r()\fP, \fBrandom_r()\fP. \fBstrtod()\fP, \fBstrtol()\fP, \fBstrtoul()\fP Uses the global variable \fCerrno\fP to return success/failure. Ignore \fCerrno\fP, or protect calls with \fBcli()\fP/sei() or \fBATOMIC_BLOCK()\fP if the application can tolerate it. Or use sccanf() or sccanf_P() if possible. \fBmalloc()\fP, \fBrealloc()\fP, \fBcalloc()\fP, \fBfree()\fP Uses the stack pointer and global variables to allocate and free memory. Protect calls with \fBcli()\fP/sei() or \fBATOMIC_BLOCK()\fP if the application can tolerate it. If using an OS, use the OS provided memory allocator since the OS is likely modifying the stack pointer anyway. \fBfdevopen()\fP, \fBfclose()\fP Uses \fBcalloc()\fP and \fBfree()\fP. Protect calls with \fBcli()\fP/sei() or \fBATOMIC_BLOCK()\fP if the application can tolerate it. Or use \fBfdev_setup_stream()\fP or \fBFDEV_SETUP_STREAM()\fP. +.br + Note: \fBfclose()\fP will only call \fBfree()\fP if the stream has been opened with \fBfdevopen()\fP. eeprom_*(), boot_*() Accesses I/O registers. Protect calls with \fBcli()\fP/sei(), \fBATOMIC_BLOCK()\fP, or use OS locking. pgm_*_far() Accesses I/O register RAMPZ. Starting with GCC 4.3, RAMPZ is automatically saved for ISRs, so nothing further is needed if only using interrupts. +.br +Some OSes may automatically preserve RAMPZ during context switching. Check the OS documentation before assuming it does. +.br +Otherwise, protect calls with \fBcli()\fP/sei(), \fBATOMIC_BLOCK()\fP, or use explicit OS locking. \fBprintf()\fP, \fBprintf_P()\fP, \fBvprintf()\fP, vprintf_P(), \fBputs()\fP, \fBputs_P()\fP Alters flags and character count in global FILE \fCstdout\fP. Use only in one thread. Or if returned character count is unimportant, do not use the *_P versions. +.br +Note: Formatting to a string output, e.g. \fBsprintf()\fP, \fBsprintf_P()\fP, \fBsnprintf()\fP, \fBsnprintf_P()\fP, \fBvsprintf()\fP, \fBvsprintf_P()\fP, \fBvsnprintf()\fP, \fBvsnprintf_P()\fP, is thread safe. The formatted string could then be followed by an \fBfwrite()\fP which simply calls the lower layer to send the string. \fBfprintf()\fP, \fBfprintf_P()\fP, \fBvfprintf()\fP, \fBvfprintf_P()\fP, \fBfputs()\fP, \fBfputs_P()\fP Alters flags and character count in the FILE argument. Problems can occur if a global FILE is used from multiple threads. Assign each thread its own FILE for output. Or if returned character count is unimportant, do not use the *_P versions. \fBassert()\fP Contains an embedded \fBfprintf()\fP. See above for \fBfprintf()\fP. See above for \fBfprintf()\fP. \fBclearerr()\fP Alters flags in the FILE argument. Assign each thread its own FILE for output. +.PP +\fBgetchar()\fP, \fBgets()\fP Alters flags, character count, and unget buffer in global FILE \fCstdin\fP. Use only in one thread. *** +.PP +\fBfgetc()\fP, \fBungetc()\fP, \fBfgets()\fP, \fBscanf()\fP, \fBscanf_P()\fP, \fBfscanf()\fP, \fBfscanf_P()\fP, \fBvscanf()\fP, \fBvfscanf()\fP, \fBvfscanf_P()\fP, \fBfread()\fP Alters flags, character count, and unget buffer in the FILE argument. Assign each thread its own FILE for input. *** +.br +Note: Scanning from a string, e.g. \fBsscanf()\fP and \fBsscanf_P()\fP, are thread safe. +.PP +*** It's not clear one would ever want to do character input simultaneously from more than one thread anyway, but these entries are included for completeness. +.PP +An effort will be made to keep this table up to date if any new issues are discovered or introduced. +.PP +Back to \fBFAQ Index\fP. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FDEV_SETUP_STREAM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FDEV_SETUP_STREAM.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FDEV_SETUP_STREAM.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FILE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FILE.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FILE.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FUSEMEM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FUSEMEM.3 new file mode 100644 index 0000000..d032acd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FUSEMEM.3 @@ -0,0 +1 @@ +.so man3/fuse.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FUSES.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FUSES.3 new file mode 100644 index 0000000..d032acd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/FUSES.3 @@ -0,0 +1 @@ +.so man3/fuse.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/F_CPU.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/F_CPU.3 new file mode 100644 index 0000000..d2049af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/F_CPU.3 @@ -0,0 +1 @@ +.so man3/delay.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_EXTENDED_FUSE_BITS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_EXTENDED_FUSE_BITS.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_EXTENDED_FUSE_BITS.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_HIGH_FUSE_BITS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_HIGH_FUSE_BITS.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_HIGH_FUSE_BITS.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_LOCK_BITS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_LOCK_BITS.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_LOCK_BITS.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_LOW_FUSE_BITS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_LOW_FUSE_BITS.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/GET_LOW_FUSE_BITS.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INFINITY.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INFINITY.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INFINITY.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT16_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT32_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT64_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT8_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTERRUPT.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTERRUPT.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTERRUPT.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTMAX_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTPTR_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTPTR_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTPTR_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTPTR_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTPTR_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INTPTR_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST16_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST16_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST16_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST16_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST16_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST16_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST32_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST32_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST32_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST32_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST32_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST32_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST64_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST64_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST64_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST64_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST64_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST64_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST8_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST8_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST8_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST8_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST8_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_FAST8_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST16_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST16_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST16_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST16_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST16_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST16_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST32_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST32_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST32_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST32_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST32_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST32_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST64_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST64_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST64_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST64_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST64_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST64_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST8_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST8_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST8_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST8_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST8_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/INT_LEAST8_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_ALIAS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_ALIAS.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_ALIAS.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_ALIASOF.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_ALIASOF.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_ALIASOF.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_BLOCK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_BLOCK.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_BLOCK.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_NAKED.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_NAKED.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_NAKED.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_NOBLOCK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_NOBLOCK.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ISR_NOBLOCK.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKBITS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKBITS.3 new file mode 100644 index 0000000..8477c7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKBITS.3 @@ -0,0 +1 @@ +.so man3/lock.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKBITS_DEFAULT.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKBITS_DEFAULT.3 new file mode 100644 index 0000000..8477c7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKBITS_DEFAULT.3 @@ -0,0 +1 @@ +.so man3/lock.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKMEM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKMEM.3 new file mode 100644 index 0000000..8477c7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/LOCKMEM.3 @@ -0,0 +1 @@ +.so man3/lock.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/M_PI.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/M_PI.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/M_PI.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/M_SQRT2.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/M_SQRT2.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/M_SQRT2.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NAN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NAN.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NAN.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_BLOCK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_BLOCK.3 new file mode 100644 index 0000000..d450226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_BLOCK.3 @@ -0,0 +1 @@ +.so man3/util_atomic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_FORCEOFF.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_FORCEOFF.3 new file mode 100644 index 0000000..d450226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_FORCEOFF.3 @@ -0,0 +1 @@ +.so man3/util_atomic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_RESTORESTATE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_RESTORESTATE.3 new file mode 100644 index 0000000..d450226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/NONATOMIC_RESTORESTATE.3 @@ -0,0 +1 @@ +.so man3/util_atomic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PGM_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PGM_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PGM_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PGM_VOID_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PGM_VOID_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PGM_VOID_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIX8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXFAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXLEAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIXPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRId8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdFAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdLEAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIdPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIi8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiFAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiLEAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIiPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIo8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoFAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoLEAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIoPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIu8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuFAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST8.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuLEAST8.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PRIuPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PROGMEM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PROGMEM.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PROGMEM.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PSTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PSTR.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PSTR.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PTRDIFF_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PTRDIFF_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PTRDIFF_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PTRDIFF_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PTRDIFF_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/PTRDIFF_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/RANDOM_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/RANDOM_MAX.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/RANDOM_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/RAND_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/RAND_MAX.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/RAND_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNd16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNd16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNd16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNd32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNd32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNd32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNdPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNi16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNi16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNi16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNi32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNi32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNi32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNiPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNo16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNo16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNo16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNo32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNo32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNo32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNoPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNu16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNu16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNu16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNu32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNu32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNu32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNuPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNx16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNx16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNx16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNx32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNx32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNx32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxFAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxFAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxFAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxFAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxFAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxFAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxLEAST16.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxLEAST16.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxLEAST16.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxLEAST32.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxLEAST32.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxLEAST32.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxPTR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxPTR.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SCNxPTR.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_CUR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_CUR.3 new file mode 100644 index 0000000..7a49ce3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_CUR.3 @@ -0,0 +1 @@ +.so man3/stdio.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_END.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_END.3 new file mode 100644 index 0000000..7a49ce3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_END.3 @@ -0,0 +1 @@ +.so man3/stdio.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_SET.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_SET.3 new file mode 100644 index 0000000..7a49ce3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SEEK_SET.3 @@ -0,0 +1 @@ +.so man3/stdio.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIGNAL.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIGNAL.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIGNAL.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIG_ATOMIC_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIG_ATOMIC_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIG_ATOMIC_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIG_ATOMIC_MIN.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIG_ATOMIC_MIN.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIG_ATOMIC_MIN.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIZE_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIZE_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/SIZE_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_BUS_ERROR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_BUS_ERROR.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_BUS_ERROR.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_ARB_LOST.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_ARB_LOST.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_ARB_LOST.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_DATA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_DATA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_DATA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_DATA_NACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_DATA_NACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_DATA_NACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_SLA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_SLA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_SLA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_SLA_NACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_SLA_NACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MR_SLA_NACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_ARB_LOST.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_ARB_LOST.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_ARB_LOST.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_DATA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_DATA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_DATA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_DATA_NACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_DATA_NACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_DATA_NACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_SLA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_SLA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_SLA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_SLA_NACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_SLA_NACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_MT_SLA_NACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_NO_INFO.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_NO_INFO.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_NO_INFO.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_READ.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_READ.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_READ.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_REP_START.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_REP_START.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_REP_START.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_ARB_LOST_GCALL_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_ARB_LOST_GCALL_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_ARB_LOST_GCALL_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_ARB_LOST_SLA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_ARB_LOST_SLA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_ARB_LOST_SLA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_DATA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_DATA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_DATA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_DATA_NACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_DATA_NACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_DATA_NACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_DATA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_DATA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_DATA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_DATA_NACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_DATA_NACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_GCALL_DATA_NACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_SLA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_SLA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_SLA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_STOP.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_STOP.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_SR_STOP.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_START.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_START.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_START.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_STATUS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_STATUS.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_STATUS.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_STATUS_MASK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_STATUS_MASK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_STATUS_MASK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_ARB_LOST_SLA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_ARB_LOST_SLA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_ARB_LOST_SLA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_DATA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_DATA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_DATA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_DATA_NACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_DATA_NACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_DATA_NACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_LAST_DATA.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_LAST_DATA.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_LAST_DATA.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_SLA_ACK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_SLA_ACK.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_ST_SLA_ACK.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_WRITE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_WRITE.3 new file mode 100644 index 0000000..8c91973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/TW_WRITE.3 @@ -0,0 +1 @@ +.so man3/util_twi.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRRH_VALUE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRRH_VALUE.3 new file mode 100644 index 0000000..b0ab20c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRRH_VALUE.3 @@ -0,0 +1 @@ +.so man3/util_setbaud.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRRL_VALUE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRRL_VALUE.3 new file mode 100644 index 0000000..b0ab20c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRRL_VALUE.3 @@ -0,0 +1 @@ +.so man3/util_setbaud.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRR_VALUE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRR_VALUE.3 new file mode 100644 index 0000000..b0ab20c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UBRR_VALUE.3 @@ -0,0 +1 @@ +.so man3/util_setbaud.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT16_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT16_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT16_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT16_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT16_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT16_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT32_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT32_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT32_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT32_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT32_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT32_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT64_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT64_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT64_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT64_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT64_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT64_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT8_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT8_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT8_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT8_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT8_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT8_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTMAX_C.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTMAX_C.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTMAX_C.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTMAX_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTMAX_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTMAX_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTPTR_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTPTR_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINTPTR_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST16_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST16_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST16_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST32_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST32_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST32_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST64_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST64_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST64_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST8_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST8_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_FAST8_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST16_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST16_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST16_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST32_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST32_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST32_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST64_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST64_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST64_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST8_MAX.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST8_MAX.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/UINT_LEAST8_MAX.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/USE_2X.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/USE_2X.3 new file mode 100644 index 0000000..b0ab20c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/USE_2X.3 @@ -0,0 +1 @@ +.so man3/util_setbaud.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_120MS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_120MS.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_120MS.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_15MS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_15MS.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_15MS.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_1S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_1S.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_1S.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_250MS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_250MS.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_250MS.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_2S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_2S.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_2S.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_30MS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_30MS.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_30MS.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_4S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_4S.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_4S.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_500MS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_500MS.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_500MS.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_60MS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_60MS.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_60MS.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_8S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_8S.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/WDTO_8S.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_BOOT_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_BOOT_H_.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_BOOT_H_.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_FUSE_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_FUSE_H_.3 new file mode 100644 index 0000000..d032acd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_FUSE_H_.3 @@ -0,0 +1 @@ +.so man3/fuse.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_LOCK_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_LOCK_H_.3 new file mode 100644 index 0000000..8477c7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_LOCK_H_.3 @@ -0,0 +1 @@ +.so man3/lock.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_POWER_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_POWER_H_.3 new file mode 100644 index 0000000..1a30839 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_POWER_H_.3 @@ -0,0 +1 @@ +.so man3/power.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_SLEEP_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_SLEEP_H_.3 new file mode 100644 index 0000000..482bcf7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_AVR_SLEEP_H_.3 @@ -0,0 +1 @@ +.so man3/sleep.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_BV.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_BV.3 new file mode 100644 index 0000000..c8b3036 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_BV.3 @@ -0,0 +1 @@ +.so man3/avr_sfr.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_EEGET.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_EEGET.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_EEGET.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_EEPUT.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_EEPUT.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_EEPUT.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_EOF.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_EOF.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_EOF.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_ERR.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_ERR.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_ERR.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_READ.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_READ.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_READ.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_RW.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_RW.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_RW.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_WRITE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_WRITE.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FDEV_SETUP_WRITE.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FFS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FFS.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_FFS.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_SLEEP_CONTROL_REG.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_SLEEP_CONTROL_REG.3 new file mode 100644 index 0000000..482bcf7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_SLEEP_CONTROL_REG.3 @@ -0,0 +1 @@ +.so man3/sleep.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_SLEEP_ENABLE_MASK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_SLEEP_ENABLE_MASK.3 new file mode 100644 index 0000000..482bcf7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_SLEEP_ENABLE_MASK.3 @@ -0,0 +1 @@ +.so man3/sleep.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STDIO_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STDIO_H_.3 new file mode 100644 index 0000000..7a49ce3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STDIO_H_.3 @@ -0,0 +1 @@ +.so man3/stdio.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STDLIB_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STDLIB_H_.3 new file mode 100644 index 0000000..e33202d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STDLIB_H_.3 @@ -0,0 +1 @@ +.so man3/stdlib.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STRING_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STRING_H_.3 new file mode 100644 index 0000000..3fbc9bd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_STRING_H_.3 @@ -0,0 +1 @@ +.so man3/string.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_ATOMIC_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_ATOMIC_H_.3 new file mode 100644 index 0000000..4d8e140 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_ATOMIC_H_.3 @@ -0,0 +1 @@ +.so man3/atomic.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_DELAY_BASIC_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_DELAY_BASIC_H_.3 new file mode 100644 index 0000000..8fe78bb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_DELAY_BASIC_H_.3 @@ -0,0 +1 @@ +.so man3/delay_basic.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_DELAY_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_DELAY_H_.3 new file mode 100644 index 0000000..d2049af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_DELAY_H_.3 @@ -0,0 +1 @@ +.so man3/delay.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_TWI_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_TWI_H_.3 new file mode 100644 index 0000000..56d5e4c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_UTIL_TWI_H_.3 @@ -0,0 +1 @@ +.so man3/util_twi.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_CHANGE_BIT.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_CHANGE_BIT.3 new file mode 100644 index 0000000..71fd0ca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_CHANGE_BIT.3 @@ -0,0 +1 @@ +.so man3/wdt.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_CONTROL_REG.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_CONTROL_REG.3 new file mode 100644 index 0000000..71fd0ca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_CONTROL_REG.3 @@ -0,0 +1 @@ +.so man3/wdt.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_PS3_MASK.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_PS3_MASK.3 new file mode 100644 index 0000000..71fd0ca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_WD_PS3_MASK.3 @@ -0,0 +1 @@ +.so man3/wdt.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_NORETURN__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_NORETURN__.3 new file mode 100644 index 0000000..01d933e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_NORETURN__.3 @@ -0,0 +1 @@ +.so man3/setjmp.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_PROGMEM__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_PROGMEM__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_PROGMEM__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_PURE__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_PURE__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ATTR_PURE__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_DATE_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_DATE_.3 new file mode 100644 index 0000000..3675111 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_DATE_.3 @@ -0,0 +1 @@ +.so man3/avr_version.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_DATE_STRING__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_DATE_STRING__.3 new file mode 100644 index 0000000..3675111 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_DATE_STRING__.3 @@ -0,0 +1 @@ +.so man3/avr_version.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_MAJOR__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_MAJOR__.3 new file mode 100644 index 0000000..3675111 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_MAJOR__.3 @@ -0,0 +1 @@ +.so man3/avr_version.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_MINOR__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_MINOR__.3 new file mode 100644 index 0000000..3675111 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_MINOR__.3 @@ -0,0 +1 @@ +.so man3/avr_version.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_REVISION__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_REVISION__.3 new file mode 100644 index 0000000..3675111 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_REVISION__.3 @@ -0,0 +1 @@ +.so man3/avr_version.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_VERSION_STRING__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_VERSION_STRING__.3 new file mode 100644 index 0000000..3675111 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_VERSION_STRING__.3 @@ -0,0 +1 @@ +.so man3/avr_version.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_VERSION__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_VERSION__.3 new file mode 100644 index 0000000..3675111 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__AVR_LIBC_VERSION__.3 @@ -0,0 +1 @@ +.so man3/avr_version.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_LOCK_BITS_SET.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_LOCK_BITS_SET.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_LOCK_BITS_SET.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_ERASE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_ERASE.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_ERASE.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_FILL.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_FILL.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_FILL.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_WRITE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_WRITE.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_PAGE_WRITE.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_RWW_ENABLE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_RWW_ENABLE.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_RWW_ENABLE.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_SIGROW_READ.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_SIGROW_READ.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__BOOT_SIGROW_READ.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__COMMON_ASB.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__COMMON_ASB.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__COMMON_ASB.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__COMMON_ASRE.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__COMMON_ASRE.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__COMMON_ASRE.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CONCAT.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CONCAT.3 new file mode 100644 index 0000000..7d1b384 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CONCAT.3 @@ -0,0 +1 @@ +.so man3/stdint.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CONCATenate.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CONCATenate.3 new file mode 100644 index 0000000..7d1b384 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CONCATenate.3 @@ -0,0 +1 @@ +.so man3/stdint.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CTYPE_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CTYPE_H_.3 new file mode 100644 index 0000000..c1043d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__CTYPE_H_.3 @@ -0,0 +1 @@ +.so man3/ctype.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_dword_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_float_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ELPM_word_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ERRNO_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ERRNO_H_.3 new file mode 100644 index 0000000..6fb871f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ERRNO_H_.3 @@ -0,0 +1 @@ +.so man3/errno.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__INTR_ATTRS.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__INTR_ATTRS.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__INTR_ATTRS.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_dword_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_float_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word_classic__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word_classic__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word_classic__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word_enhanced__.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word_enhanced__.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__LPM_word_enhanced__.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__PGMSPACE_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__PGMSPACE_H_.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__PGMSPACE_H_.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__SETJMP_H_.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__SETJMP_H_.3 new file mode 100644 index 0000000..01d933e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__SETJMP_H_.3 @@ -0,0 +1 @@ +.so man3/setjmp.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__USING_MINT8.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__USING_MINT8.3 new file mode 100644 index 0000000..7d1b384 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__USING_MINT8.3 @@ -0,0 +1 @@ +.so man3/stdint.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_lock_bits_set_alternate.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_lock_bits_set_alternate.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_lock_bits_set_alternate.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_alternate.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_alternate.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_alternate.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_extended.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_extended.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_extended.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_normal.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_normal.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_erase_normal.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_alternate.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_alternate.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_alternate.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_extended.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_extended.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_extended.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_normal.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_normal.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_fill_normal.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_alternate.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_alternate.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_alternate.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_extended.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_extended.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_extended.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_normal.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_normal.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_page_write_normal.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_rww_enable_alternate.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_rww_enable_alternate.3 new file mode 100644 index 0000000..f522054 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__boot_rww_enable_alternate.3 @@ -0,0 +1 @@ +.so man3/boot.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__compar_fn_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__compar_fn_t.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__compar_fn_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_heap_end.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_heap_end.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_heap_end.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_heap_start.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_heap_start.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_heap_start.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_margin.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_margin.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__malloc_margin.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_NULL.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_NULL.3 new file mode 100644 index 0000000..7a49ce3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_NULL.3 @@ -0,0 +1 @@ +.so man3/stdio.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_size_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_size_t.3 new file mode 100644 index 0000000..c503a63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_size_t.3 @@ -0,0 +1 @@ +.so man3/pgmspace.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_wchar_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_wchar_t.3 new file mode 100644 index 0000000..e33202d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__need_wchar_t.3 @@ -0,0 +1 @@ +.so man3/stdlib.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ptr_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ptr_t.3 new file mode 100644 index 0000000..e33202d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/__ptr_t.3 @@ -0,0 +1 @@ +.so man3/stdlib.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc16_update.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc16_update.3 new file mode 100644 index 0000000..2c51adc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc16_update.3 @@ -0,0 +1 @@ +.so man3/util_crc.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_ccitt_update.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_ccitt_update.3 new file mode 100644 index 0000000..2c51adc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_ccitt_update.3 @@ -0,0 +1 @@ +.so man3/util_crc.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_ibutton_update.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_ibutton_update.3 new file mode 100644 index 0000000..2c51adc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_ibutton_update.3 @@ -0,0 +1 @@ +.so man3/util_crc.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_xmodem_update.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_xmodem_update.3 new file mode 100644 index 0000000..2c51adc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_crc_xmodem_update.3 @@ -0,0 +1 @@ +.so man3/util_crc.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_loop_1.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_loop_1.3 new file mode 100644 index 0000000..4aba231 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_loop_1.3 @@ -0,0 +1 @@ +.so man3/util_delay_basic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_loop_2.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_loop_2.3 new file mode 100644 index 0000000..4aba231 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_loop_2.3 @@ -0,0 +1 @@ +.so man3/util_delay_basic.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_ms.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_ms.3 new file mode 100644 index 0000000..6e35e3b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_ms.3 @@ -0,0 +1 @@ +.so man3/util_delay.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_us.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_us.3 new file mode 100644 index 0000000..6e35e3b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/_delay_us.3 @@ -0,0 +1 @@ +.so man3/util_delay.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/abort.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/abort.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/abort.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/abs.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/abs.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/abs.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/acks.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/acks.3 new file mode 100644 index 0000000..d8bfbec --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/acks.3 @@ -0,0 +1,51 @@ +.TH "acks" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +acks \- Acknowledgments +This document tries to tie together the labors of a large group of people. Without these individuals' efforts, we wouldn't have a terrific, \fI\fBfree\fP\fP set of tools to develop AVR projects. We all owe thanks to: +.PP +.IP "\(bu" 2 +The GCC Team, which produced a very capable set of development tools for an amazing number of platforms and processors. +.PP +.PP +.IP "\(bu" 2 +Denis Chertykov [ denisc@overta.ru ] for making the AVR-specific changes to the GNU tools. +.PP +.PP +.IP "\(bu" 2 +Denis Chertykov and Marek Michalkiewicz [ marekm@linux.org.pl ] for developing the standard libraries and startup code for \fBAVR-GCC\fP. +.PP +.PP +.IP "\(bu" 2 +Uros Platise for developing the AVR programmer tool, \fBuisp\fP. +.PP +.PP +.IP "\(bu" 2 +Joerg Wunsch [ joerg@FreeBSD.ORG ] for adding all the AVR development tools to the FreeBSD [ http://www.freebsd.org ] ports tree and for providing the basics for the \fBdemo project\fP. +.PP +.PP +.IP "\(bu" 2 +Brian Dean [ bsd@bsdhome.com ] for developing \fBavrdude\fP (an alternative to \fBuisp\fP) and for contributing \fBdocumentation\fP which describes how to use it. \fBAvrdude\fP was previously called \fBavrprog\fP. +.PP +.PP +.IP "\(bu" 2 +Eric Weddington [ eweddington@cso.atmel.com ] for maintaining the \fBWinAVR\fP package and thus making the continued improvements to the open source AVR toolchain available to many users. +.PP +.PP +.IP "\(bu" 2 +Rich Neswold for writing the original avr-tools document (which he graciously allowed to be merged into this document) and his improvements to the \fBdemo project\fP. +.PP +.PP +.IP "\(bu" 2 +Theodore A. Roth for having been a long-time maintainer of many of the tools (\fBAVR-Libc\fP, the AVR port of \fBGDB\fP, \fBAVaRICE\fP, \fBuisp\fP, \fBavrdude\fP). +.PP +.PP +.IP "\(bu" 2 +All the people who currently maintain the tools, and/or have submitted suggestions, patches and bug reports. (See the AUTHORS files of the various tools.) +.PP +.PP +.IP "\(bu" 2 +And lastly, all the users who use the software. If nobody used the software, we would probably not be very motivated to continue to develop it. Keep those bug reports coming. ;-) +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/acos.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/acos.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/acos.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/alloca.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/alloca.3 new file mode 100644 index 0000000..29fda58 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/alloca.3 @@ -0,0 +1,35 @@ +.TH ": Allocate space in the stack" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Allocate space in the stack \- +.SH "Detailed Description" +.PP + +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "void * \fBalloca\fP (size_t __size)" +.br +.in -1c +.SH "Function Documentation" +.PP +.SS "void* alloca (size_t __size)" +.PP +Allocate \fI__size\fP bytes of space in the stack frame of the caller. +.PP +This temporary space is automatically freed when the function that called \fBalloca()\fP returns to its caller. Avr-libc defines the \fBalloca()\fP as a macro, which is translated into the inlined \fC__builtin_alloca()\fP function. The fact that the code is inlined, means that it is impossible to take the address of this function, or to change its behaviour by linking with a different library. +.PP +\fBReturns:\fP +.RS 4 +\fBalloca()\fP returns a pointer to the beginning of the allocated space. If the allocation causes stack overflow, program behaviour is undefined. +.RE +.PP +\fBWarning:\fP +.RS 4 +Avoid use \fBalloca()\fP inside the list of arguments of a function call. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/asin.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/asin.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/asin.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/asmdemo.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/asmdemo.3 new file mode 100644 index 0000000..45ad3f4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/asmdemo.3 @@ -0,0 +1,60 @@ +.TH "Combining C and assembly source files" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Combining C and assembly source files \- For time- or space-critical applications, it can often be desirable to combine C code (for easy maintenance) and assembly code (for maximal speed or minimal code size) together. This demo provides an example of how to do that. +.PP +The objective of the demo is to decode radio-controlled model PWM signals, and control an output PWM based on the current input signal's value. The incoming PWM pulses follow a standard encoding scheme where a pulse width of 920 microseconds denotes one end of the scale (represented as 0 % pulse width on output), and 2120 microseconds mark the other end (100 % output PWM). Normally, multiple channels would be encoded that way in subsequent pulses, followed by a larger gap, so the entire frame will repeat each 14 through 20 ms, but this is ignored for the purpose of the demo, so only a single input PWM channel is assumed. +.PP +The basic challenge is to use the cheapest controller available for the task, an ATtiny13 that has only a single timer channel. As this timer channel is required to run the outgoing PWM signal generation, the incoming PWM decoding had to be adjusted to the constraints set by the outgoing PWM. +.PP +As PWM generation toggles the counting direction of timer 0 between up and down after each 256 timer cycles, the current time cannot be deduced by reading TCNT0 only, but the current counting direction of the timer needs to be considered as well. This requires servicing interrupts whenever the timer hits \fITOP\fP (255) and \fIBOTTOM\fP (0) to learn about each change of the counting direction. For PWM generation, it is usually desired to run it at the highest possible speed so filtering the PWM frequency from the modulated output signal is made easy. Thus, the PWM timer runs at full CPU speed. This causes the overflow and compare match interrupts to be triggered each 256 CPU clocks, so they must run with the minimal number of processor cycles possible in order to not impose a too high CPU load by these interrupt service routines. This is the main reason to implement the entire interrupt handling in fine-tuned assembly code rather than in C. +.PP +In order to verify parts of the algorithm, and the underlying hardware, the demo has been set up in a way so the pin-compatible but more expensive ATtiny45 (or its siblings ATtiny25 and ATtiny85) could be used as well. In that case, no separate assembly code is required, as two timer channels are avaible. +.SH "Hardware setup" +.PP +The incoming PWM pulse train is fed into PB4. It will generate a pin change interrupt there on eache edge of the incoming signal. +.PP +The outgoing PWM is generated through OC0B of timer channel 0 (PB1). For demonstration purposes, a LED should be connected to that pin (like, one of the LEDs of an STK500). +.PP +The controllers run on their internal calibrated RC oscillators, 1.2 MHz on the ATtiny13, and 1.0 MHz on the ATtiny45. +.SH "A code walkthrough" +.PP +.SS "asmdemo.c" +After the usual include files, two variables are defined. The first one, \fCpwm_incoming\fP is used to communicate the most recent pulse width detected by the incoming PWM decoder up to the main loop. +.PP +The second variable actually only constitutes of a single bit, \fCintbits.pwm_received\fP. This bit will be set whenever the incoming PWM decoder has updated \fCpwm_incoming\fP. +.PP +Both variables are marked \fIvolatile\fP to ensure their readers will always pick up an updated value, as both variables will be set by interrupt service routines. +.PP +The function \fCioinit()\fP initializes the microcontroller peripheral devices. In particular, it starts timer 0 to generate the outgoing PWM signal on OC0B. Setting OCR0A to 255 (which is the \fITOP\fP value of timer 0) is used to generate a timer 0 overflow A interrupt on the ATtiny13. This interrupt is used to inform the incoming PWM decoder that the counting direction of channel 0 is just changing from up to down. Likewise, an overflow interrupt will be generated whenever the countdown reached \fIBOTTOM\fP (value 0), where the counter will again alter its counting direction to upwards. This information is needed in order to know whether the current counter value of \fCTCNT0\fP is to be evaluated from bottom or top. +.PP +Further, \fCioinit()\fP activates the pin-change interrupt \fCPCINT0\fP on any edge of PB4. Finally, PB1 (OC0B) will be activated as an output pin, and global interrupts are being enabled. +.PP +In the ATtiny45 setup, the C code contains an ISR for \fCPCINT0\fP. At each pin-change interrupt, it will first be analyzed whether the interrupt was caused by a rising or a falling edge. In case of the rising edge, timer 1 will be started with a prescaler of 16 after clearing the current timer value. Then, at the falling edge, the current timer value will be recorded (and timer 1 stopped), the pin-change interrupt will be suspended, and the upper layer will be notified that the incoming PWM measurement data is available. +.PP +Function \fCmain()\fP first initializes the hardware by calling \fCioinit()\fP, and then waits until some incoming PWM value is available. If it is, the output PWM will be adjusted by computing the relative value of the incoming PWM. Finally, the pin-change interrupt is re-enabled, and the CPU is put to sleep. +.SS "project.h" +In order for the interrupt service routines to be as fast as possible, some of the CPU registers are set aside completely for use by these routines, so the compiler would not use them for C code. This is arranged for in \fCproject.h\fP. +.PP +The file is divided into one section that will be used by the assembly source code, and another one to be used by C code. The assembly part is distinguished by the preprocessing macro \fC__ASSEMBLER__\fP (which will be automatically set by the compiler front-end when preprocessing an assembly-language file), and it contains just macros that give symbolic names to a number of CPU registers. The preprocessor will then replace the symbolic names by their right-hand side definitions before calling the assembler. +.PP +In C code, the compiler needs to see variable declarations for these objects. This is done by using declarations that bind a variable permanently to a CPU register (see \fBHow to permanently bind a variable to a register?\fP). Even in case the C code never has a need to access these variables, declaring the register binding that way causes the compiler to not use these registers in C code at all. +.PP +The \fCflags\fP variable needs to be in the range of r16 through r31 as it is the target of a \fIload immediate\fP (or \fCSER\fP) instruction that is not applicable to the entire register file. +.SS "isrs.S" +This file is a preprocessed assembly source file. The C preprocessor will be run by the compiler front-end first, resolving all \fC#include\fP, \fC#define\fP etc. directives. The resulting program text will then be passed on to the assembler. +.PP +As the C preprocessor strips all C-style comments, preprocessed assembly source files can have both, C-style (\fC/* ... *\fP\fC/\fP, \fC// ...\fP) as well as assembly-style (\fC; ...\fP) comments. +.PP +At the top, the IO register definition file \fC\fBavr/io.h\fP\fP and the project declaration file \fCproject.h\fP are included. The remainder of the file is conditionally assembled only if the target MCU type is an ATtiny13, so it will be completely ignored for the ATtiny45 option. +.PP +Next are the two interrupt service routines for timer 0 compare A match (timer 0 hits \fITOP\fP, as OCR0A is set to 255) and timer 0 overflow (timer 0 hits \fIBOTTOM\fP). As discussed above, these are kept as short as possible. They only save \fCSREG\fP (as the flags will be modified by the \fCINC\fP instruction), increment the \fCcounter_hi\fP variable which forms the high part of the current time counter (the low part is formed by querying \fCTCNT0\fP directly), and clear or set the variable \fCflags\fP, respectively, in order to note the current counting direction. The \fCRETI\fP instruction terminates these interrupt service routines. Total cycle count is 8 CPU cycles, so together with the 4 CPU cycles needed for interrupt setup, and the 2 cycles for the RJMP from the interrupt vector to the handler, these routines will require 14 out of each 256 CPU cycles, or about 5 % of the overall CPU time. +.PP +The pin-change interrupt \fCPCINT0\fP will be handled in the final part of this file. The basic algorithm is to quickly evaluate the current system time by fetching the current timer value of \fCTCNT0\fP, and combining it with the overflow part in \fCcounter_hi\fP. If the counter is currently counting down rather than up, the value fetched from \fCTCNT0\fP must be negated. Finally, if this pin-change interrupt was triggered by a rising edge, the time computed will be recorded as the start time only. Then, at the falling edge, this start time will be subracted from the current time to compute the actual pulse width seen (left in \fCpwm_incoming\fP), and the upper layers are informed of the new value by setting bit 0 in the \fCintbits\fP flags. At the same time, this pin-change interrupt will be disabled so no new measurement can be performed until the upper layer had a chance to process the current value. +.SH "The source code" +.PP +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assembler.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assembler.3 new file mode 100644 index 0000000..6ef6c27 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assembler.3 @@ -0,0 +1,256 @@ +.TH "assembler" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +assembler \- avr-libc and assembler programs +.SH "Introduction" +.PP +There might be several reasons to write code for AVR microcontrollers using plain assembler source code. Among them are: +.PP +.IP "\(bu" 2 +Code for devices that do not have RAM and are thus not supported by the C compiler. +.IP "\(bu" 2 +Code for very time-critical applications. +.IP "\(bu" 2 +Special tweaks that cannot be done in C. +.PP +.PP +Usually, all but the first could probably be done easily using the \fBinline assembler\fP facility of the compiler. +.PP +Although avr-libc is primarily targeted to support programming AVR microcontrollers using the C (and C++) language, there's limited support for direct assembler usage as well. The benefits of it are: +.PP +.IP "\(bu" 2 +Use of the C preprocessor and thus the ability to use the same symbolic constants that are available to C programs, as well as a flexible macro concept that can use any valid C identifier as a macro (whereas the assembler's macro concept is basically targeted to use a macro in place of an assembler instruction). +.IP "\(bu" 2 +Use of the runtime framework like automatically assigning interrupt vectors. For devices that have RAM, \fBinitializing the RAM variables\fP can also be utilized. +.PP +.SH "Invoking the compiler" +.PP +For the purpose described in this document, the assembler and linker are usually not invoked manually, but rather using the C compiler frontend (\fCavr-gcc\fP) that in turn will call the assembler and linker as required. +.PP +This approach has the following advantages: +.PP +.IP "\(bu" 2 +There is basically only one program to be called directly, \fCavr-gcc\fP, regardless of the actual source language used. +.IP "\(bu" 2 +The invokation of the C preprocessor will be automatic, and will include the appropriate options to locate required include files in the filesystem. +.IP "\(bu" 2 +The invokation of the linker will be automatic, and will include the appropriate options to locate additional libraries as well as the application start-up code (\fCcrt\fP\fIXXX\fP\fC.o\fP) and linker script. +.PP +.PP +Note that the invokation of the C preprocessor will be automatic when the filename provided for the assembler file ends in \fC\fP.S (the capital letter 's'). This would even apply to operating systems that use case-insensitive filesystems since the actual decision is made based on the case of the filename suffix given on the command-line, not based on the actual filename from the file system. +.PP +Alternatively, the language can explicitly be specified using the \fC-x assembler-with-cpp\fP option. +.SH "Example program" +.PP +The following annotated example features a simple 100 kHz square wave generator using an AT90S1200 clocked with a 10.7 MHz crystal. Pin PD6 will be used for the square wave output. +.PP +.PP +.nf +#include ; Note [1] + +work = 16 ; Note [2] +tmp = 17 + +inttmp = 19 + +intsav = 0 + +SQUARE = PD6 ; Note [3] + + ; Note [4]: +tmconst= 10700000 / 200000 ; 100 kHz => 200000 edges/s +fuzz= 8 ; # clocks in ISR until TCNT0 is set + + .section .text + + .global main ; Note [5] +main: + rcall ioinit +1: + rjmp 1b ; Note [6] + + .global TIMER0_OVF_vect ; Note [7] +TIMER0_OVF_vect: + ldi inttmp, 256 - tmconst + fuzz + out _SFR_IO_ADDR(TCNT0), inttmp ; Note [8] + + in intsav, _SFR_IO_ADDR(SREG) ; Note [9] + + sbic _SFR_IO_ADDR(PORTD), SQUARE + rjmp 1f + sbi _SFR_IO_ADDR(PORTD), SQUARE + rjmp 2f +1: cbi _SFR_IO_ADDR(PORTD), SQUARE +2: + + out _SFR_IO_ADDR(SREG), intsav + reti + +ioinit: + sbi _SFR_IO_ADDR(DDRD), SQUARE + + ldi work, _BV(TOIE0) + out _SFR_IO_ADDR(TIMSK), work + + ldi work, _BV(CS00) ; tmr0: CK/1 + out _SFR_IO_ADDR(TCCR0), work + + ldi work, 256 - tmconst + out _SFR_IO_ADDR(TCNT0), work + + sei + + ret + + .global __vector_default ; Note [10] +__vector_default: + reti + + .end +.fi +.PP +.PP +\fBNote [1]\fP.RS 4 + +.RE +.PP +As in C programs, this includes the central processor-specific file containing the IO port definitions for the device. Note that not all include files can be included into assembler sources. +.PP +\fBNote [2]\fP.RS 4 + +.RE +.PP +Assignment of registers to symbolic names used locally. Another option would be to use a C preprocessor macro instead: +.PP +.PP +.nf + #define work 16 +.fi +.PP +.PP +\fBNote [3]\fP.RS 4 + +.RE +.PP +Our bit number for the square wave output. Note that the right-hand side consists of a CPP macro which will be substituted by its value (6 in this case) before actually being passed to the assembler. +.PP +\fBNote [4]\fP.RS 4 + +.RE +.PP +The assembler uses integer operations in the host-defined integer size (32 bits or longer) when evaluating expressions. This is in contrast to the C compiler that uses the C type \fCint\fP by default in order to calculate constant integer expressions. +.br + In order to get a 100 kHz output, we need to toggle the PD6 line 200000 times per second. Since we use timer 0 without any prescaling options in order to get the desired frequency and accuracy, we already run into serious timing considerations: while accepting and processing the timer overflow interrupt, the timer already continues to count. When pre-loading the \fCTCCNT0\fP register, we therefore have to account for the number of clock cycles required for interrupt acknowledge and for the instructions to reload \fCTCCNT0\fP (4 clock cycles for interrupt acknowledge, 2 cycles for the jump from the interrupt vector, 2 cycles for the 2 instructions that reload \fCTCCNT0\fP). This is what the constant \fCfuzz\fP is for. +.PP +\fBNote [5]\fP.RS 4 + +.RE +.PP +External functions need to be declared to be \fC\fP.global. \fCmain\fP is the application entry point that will be jumped to from the ininitalization routine in \fCcrts1200.o\fP. +.PP +\fBNote [6]\fP.RS 4 + +.RE +.PP +The main loop is just a single jump back to itself. Square wave generation itself is completely handled by the timer 0 overflow interrupt service. A \fCsleep\fP instruction (using idle mode) could be used as well, but probably would not conserve much energy anyway since the interrupt service is executed quite frequently. +.PP +\fBNote [7]\fP.RS 4 + +.RE +.PP +Interrupt functions can get the \fBusual names\fP that are also available to C programs. The linker will then put them into the appropriate interrupt vector slots. Note that they must be declared \fC\fP.global in order to be acceptable for this purpose. This will only work if \fC<\fBavr/io.h\fP>\fP has been included. Note that the assembler or linker have no chance to check the correct spelling of an interrupt function, so it should be double-checked. (When analyzing the resulting object file using \fCavr-objdump\fP or \fCavr-nm\fP, a name like \fC__vector_\fIN\fP\fP should appear, with \fIN\fP being a small integer number.) +.PP +\fBNote [8]\fP.RS 4 + +.RE +.PP +As explained in the section about \fBspecial function registers\fP, the actual IO port address should be obtained using the macro \fC_SFR_IO_ADDR\fP. (The AT90S1200 does not have RAM thus the memory-mapped approach to access the IO registers is not available. It would be slower than using \fCin\fP / \fCout\fP instructions anyway.) +.br + Since the operation to reload \fCTCCNT0\fP is time-critical, it is even performed before saving \fCSREG\fP. Obviously, this requires that the instructions involved would not change any of the flag bits in \fCSREG\fP. +.PP + +.PP +\fBNote [9]\fP.RS 4 + +.RE +.PP +Interrupt routines must not clobber the global CPU state. Thus, it is usually necessary to save at least the state of the flag bits in \fCSREG\fP. (Note that this serves as an example here only since actually, all the following instructions would not modify \fCSREG\fP either, but that's not commonly the case.) +.br + Also, it must be made sure that registers used inside the interrupt routine do not conflict with those used outside. In the case of a RAM-less device like the AT90S1200, this can only be done by agreeing on a set of registers to be used exclusively inside the interrupt routine; there would not be any other chance to 'save' a register anywhere. +.br + If the interrupt routine is to be linked together with C modules, care must be taken to follow the \fBregister usage guidelines\fP imposed by the C compiler. Also, any register modified inside the interrupt sevice needs to be saved, usually on the stack. +.PP +\fBNote [10]\fP.RS 4 + +.RE +.PP +As explained in \fBInterrupts\fP, a global 'catch-all' interrupt handler that gets all unassigned interrupt vectors can be installed using the name \fC__vector_default\fP. This must be \fC\fP.global, and obviously, should end in a \fCreti\fP instruction. (By default, a jump to location 0 would be implied instead.) +.SH "Pseudo-ops and operators" +.PP +The available pseudo-ops in the assembler are described in the GNU assembler (gas) manual. The manual can be found online as part of the current binutils release under http://sources.redhat.com/binutils/. +.PP +As gas comes from a Unix origin, its pseudo-op and overall assembler syntax is slightly different than the one being used by other assemblers. Numeric constants follow the C notation (prefix \fC0x\fP for hexadecimal constants), expressions use a C-like syntax. +.PP +Some common pseudo-ops include: +.PP +.IP "\(bu" 2 +\fC\fP.byte allocates single byte constants +.PP +.PP +.IP "\(bu" 2 +\fC\fP.ascii allocates a non-terminated string of characters +.PP +.PP +.IP "\(bu" 2 +\fC\fP.asciz allocates a \\0-terminated string of characters (C string) +.PP +.PP +.IP "\(bu" 2 +\fC\fP.data switches to the .data section (initialized RAM variables) +.PP +.PP +.IP "\(bu" 2 +\fC\fP.text switches to the .text section (code and ROM constants) +.PP +.PP +.IP "\(bu" 2 +\fC\fP.set declares a symbol as a constant expression (identical to \fC\fP.equ) +.PP +.PP +.IP "\(bu" 2 +\fC\fP.global (or \fC\fP.globl) declares a public symbol that is visible to the linker (e. g. function entry point, global variable) +.PP +.PP +.IP "\(bu" 2 +\fC\fP.extern declares a symbol to be externally defined; this is effectively a comment only, as gas treats all undefined symbols it encounters as globally undefined anyway +.PP +.PP +Note that \fC\fP.org is available in gas as well, but is a fairly pointless pseudo-op in an assembler environment that uses relocatable object files, as it is the linker that determines the final position of some object in ROM or RAM. +.PP +Along with the architecture-independent standard operators, there are some AVR-specific operators available which are unfortunately not yet described in the official documentation. The most notable operators are: +.PP +.IP "\(bu" 2 +\fClo8\fP Takes the least significant 8 bits of a 16-bit integer +.PP +.PP +.IP "\(bu" 2 +\fChi8\fP Takes the most significant 8 bits of a 16-bit integer +.PP +.PP +.IP "\(bu" 2 +\fCpm\fP Takes a program-memory (ROM) address, and converts it into a RAM address. This implies a division by 2 as the AVR handles ROM addresses as 16-bit words (e.g. in an \fCIJMP\fP or \fCICALL\fP instruction), and can also handle relocatable symbols on the right-hand side. +.PP +.PP +Example: +.PP +.nf + + ldi r24, lo8(pm(somefunc)) + ldi r25, hi8(pm(somefunc)) + call something + +.fi +.PP +.PP +This passes the address of function \fCsomefunc\fP as the first parameter to function \fCsomething\fP. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assert.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assert.3 new file mode 100644 index 0000000..ce7f238 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assert.3 @@ -0,0 +1 @@ +.so man3/avr_assert.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assert.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assert.h.3 new file mode 100644 index 0000000..160a004 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/assert.h.3 @@ -0,0 +1,21 @@ +.TH "assert.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +assert.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBassert\fP(expression)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atan.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atan.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atan.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atan2.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atan2.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atan2.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atof.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atof.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atof.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atoi.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atoi.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atoi.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atoi.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atoi.S.3 new file mode 100644 index 0000000..4c949a3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atoi.S.3 @@ -0,0 +1,14 @@ +.TH "atoi.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +atoi.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atol.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atol.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atol.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atol.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atol.S.3 new file mode 100644 index 0000000..b418f09 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atol.S.3 @@ -0,0 +1,14 @@ +.TH "atol.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +atol.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atomic.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atomic.h.3 new file mode 100644 index 0000000..32575f8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/atomic.h.3 @@ -0,0 +1,39 @@ +.TH "atomic.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +atomic.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_UTIL_ATOMIC_H_\fP 1" +.br +.ti -1c +.RI "#define \fBATOMIC_BLOCK\fP(type)" +.br +.ti -1c +.RI "#define \fBNONATOMIC_BLOCK\fP(type)" +.br +.ti -1c +.RI "#define \fBATOMIC_RESTORESTATE\fP" +.br +.ti -1c +.RI "#define \fBATOMIC_FORCEON\fP" +.br +.ti -1c +.RI "#define \fBNONATOMIC_RESTORESTATE\fP" +.br +.ti -1c +.RI "#define \fBNONATOMIC_FORCEOFF\fP" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_assert.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_assert.3 new file mode 100644 index 0000000..f5bd560 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_assert.3 @@ -0,0 +1,46 @@ +.TH ": Diagnostics" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Diagnostics \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file defines a debugging aid. +.PP +As there is no standard error output stream available for many applications using this library, the generation of a printable error message is not enabled by default. These messages will only be generated if the application defines the macro +.PP +.PP +.nf + __ASSERT_USE_STDERR +.fi +.PP +.PP +before including the \fC<\fBassert.h\fP>\fP header file. By default, only \fBabort()\fP will be called to halt the application. +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBassert\fP(expression)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define assert(expression)" +.PP +\fBParameters:\fP +.RS 4 +\fIexpression\fP Expression to test for. +.RE +.PP +The \fBassert()\fP macro tests the given expression and if it is false, the calling process is terminated. A diagnostic message is written to stderr and the function \fBabort()\fP is called, effectively terminating the program. +.PP +If expression is true, the \fBassert()\fP macro does nothing. +.PP +The \fBassert()\fP macro may be removed at compile time by defining NDEBUG as a macro (e.g., by using the compiler option -DNDEBUG). diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_boot.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_boot.3 new file mode 100644 index 0000000..c1855ff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_boot.3 @@ -0,0 +1,370 @@ +.TH ": Bootloader Support Utilities" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Bootloader Support Utilities \- +.SH "Detailed Description" +.PP +.PP +.nf + #include + #include +.fi +.PP +.PP +The macros in this module provide a C language interface to the bootloader support functionality of certain AVR processors. These macros are designed to work with all sizes of flash memory. +.PP +Global interrupts are not automatically disabled for these macros. It is left up to the programmer to do this. See the code example below. Also see the processor datasheet for caveats on having global interrupts enabled during writing of the Flash. +.PP +\fBNote:\fP +.RS 4 +Not all AVR processors provide bootloader support. See your processor datasheet to see if it provides bootloader support. +.RE +.PP +\fBTodo\fP +.RS 4 +From email with Marek: On smaller devices (all except ATmega64/128), __SPM_REG is in the I/O space, accessible with the shorter 'in' and 'out' instructions - since the boot loader has a limited size, this could be an important optimization. +.RE +.PP +\fBAPI Usage Example\fP.RS 4 +The following code shows typical usage of the boot API. +.RE +.PP +.PP +.nf + #include + #include + #include + + void boot_program_page (uint32_t page, uint8_t *buf) + { + uint16_t i; + uint8_t sreg; + + // Disable interrupts. + + sreg = SREG; + cli(); + + eeprom_busy_wait (); + + boot_page_erase (page); + boot_spm_busy_wait (); // Wait until the memory is erased. + + for (i=0; i: EEPROM handling" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: EEPROM handling \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file declares the interface to some simple library routines suitable for handling the data EEPROM contained in the AVR microcontrollers. The implementation uses a simple polled mode interface. Applications that require interrupt-controlled EEPROM access to ensure that no time will be wasted in spinloops will have to deploy their own implementation. +.PP +\fBNote:\fP +.RS 4 +All of the read/write functions first make sure the EEPROM is ready to be accessed. Since this may cause long delays if a write operation is still pending, time-critical applications should first poll the EEPROM e. g. using \fBeeprom_is_ready()\fP before attempting any actual I/O. But this functions are not wait until SELFPRGEN in SPMCSR becomes zero. Do this manually, if your softwate contains the Flash burning. +.PP +As these functions modify IO registers, they are known to be non-reentrant. If any of these functions are used from both, standard and interrupt context, the applications must ensure proper protection (e.g. by disabling interrupts before accessing them). +.PP +All write functions force erase_and_write programming mode. +.RE +.PP + +.PP +.SS "IAR C compatibility defines" + +.in +1c +.ti -1c +.RI "#define \fB_EEPUT\fP(addr, val) eeprom_write_byte ((\fBuint8_t\fP *)(addr), (\fBuint8_t\fP)(val))" +.br +.ti -1c +.RI "#define \fB_EEGET\fP(var, addr) (var) = eeprom_read_byte ((const \fBuint8_t\fP *)(addr))" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBEEMEM\fP __attribute__((section('.eeprom')))" +.br +.ti -1c +.RI "#define \fBeeprom_is_ready\fP()" +.br +.ti -1c +.RI "#define \fBeeprom_busy_wait\fP() do {} while (!eeprom_is_ready())" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "static __ATTR_PURE__ __inline__ \fBuint8_t\fP \fBeeprom_read_byte\fP (const \fBuint8_t\fP *__p)" +.br +.ti -1c +.RI "static __ATTR_PURE__ __inline__ \fBuint16_t\fP \fBeeprom_read_word\fP (const \fBuint16_t\fP *__p)" +.br +.ti -1c +.RI "static __ATTR_PURE__ __inline__ \fBuint32_t\fP \fBeeprom_read_dword\fP (const \fBuint32_t\fP *__p)" +.br +.ti -1c +.RI "static __inline__ void \fBeeprom_read_block\fP (void *__dst, const void *__src, size_t __n)" +.br +.ti -1c +.RI "static __inline__ void \fBeeprom_write_byte\fP (\fBuint8_t\fP *__p, \fBuint8_t\fP __value)" +.br +.ti -1c +.RI "static __inline__ void \fBeeprom_write_word\fP (\fBuint16_t\fP *__p, \fBuint16_t\fP __value)" +.br +.ti -1c +.RI "static __inline__ void \fBeeprom_write_dword\fP (\fBuint32_t\fP *__p, \fBuint32_t\fP __value)" +.br +.ti -1c +.RI "static __inline__ void \fBeeprom_write_block\fP (const void *__src, void *__dst, size_t __n)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define _EEGET(var, addr) (var) = eeprom_read_byte ((const \fBuint8_t\fP *)(addr))" +.PP +Read a byte from EEPROM. Compatibility define for IAR C. +.SS "#define _EEPUT(addr, val) eeprom_write_byte ((\fBuint8_t\fP *)(addr), (\fBuint8_t\fP)(val))" +.PP +Write a byte to EEPROM. Compatibility define for IAR C. +.SS "#define EEMEM __attribute__((section('.eeprom')))" +.PP +Attribute expression causing a variable to be allocated within the .eeprom section. +.SS "#define eeprom_busy_wait() do {} while (!eeprom_is_ready())" +.PP +Loops until the eeprom is no longer busy. +.PP +\fBReturns:\fP +.RS 4 +Nothing. +.RE +.PP + +.SS "#define eeprom_is_ready()" +.PP +\fBReturns:\fP +.RS 4 +1 if EEPROM is ready for a new read/write operation, 0 if not. +.RE +.PP + +.SH "Function Documentation" +.PP +.SS "static __inline__ void eeprom_read_block (void * __dst, const void * __src, size_t __n)\fC [static]\fP" +.PP +Read a block of \fI__n\fP bytes from EEPROM address \fI__src\fP to SRAM \fI__dst\fP. +.SS "static __ATTR_PURE__ __inline__ \fBuint8_t\fP eeprom_read_byte (const \fBuint8_t\fP * __p)\fC [static]\fP" +.PP +Read one byte from EEPROM address \fI__p\fP. +.SS "static __ATTR_PURE__ __inline__ \fBuint32_t\fP eeprom_read_dword (const \fBuint32_t\fP * __p)\fC [static]\fP" +.PP +Read one 32-bit double word (little endian) from EEPROM address \fI__p\fP. +.SS "static __ATTR_PURE__ __inline__ \fBuint16_t\fP eeprom_read_word (const \fBuint16_t\fP * __p)\fC [static]\fP" +.PP +Read one 16-bit word (little endian) from EEPROM address \fI__p\fP. +.SS "static __inline__ void eeprom_write_block (const void * __src, void * __dst, size_t __n)\fC [static]\fP" +.PP +Write a block of \fI__n\fP bytes to EEPROM address \fI__dst\fP from \fI__src\fP. +.PP +\fBNote:\fP +.RS 4 +The argument order is mismatch with common functions like \fBstrcpy()\fP. +.RE +.PP + +.SS "static __inline__ void eeprom_write_byte (\fBuint8_t\fP * __p, \fBuint8_t\fP __value)\fC [static]\fP" +.PP +Write a byte \fI__value\fP to EEPROM address \fI__p\fP. +.SS "static __inline__ void eeprom_write_dword (\fBuint32_t\fP * __p, \fBuint32_t\fP __value)\fC [static]\fP" +.PP +Write a 32-bit double word \fI__value\fP to EEPROM address \fI__p\fP. +.SS "static __inline__ void eeprom_write_word (\fBuint16_t\fP * __p, \fBuint16_t\fP __value)\fC [static]\fP" +.PP +Write a word \fI__value\fP to EEPROM address \fI__p\fP. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_errno.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_errno.3 new file mode 100644 index 0000000..ee7cea3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_errno.3 @@ -0,0 +1,40 @@ +.TH ": System Errors" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: System Errors \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Some functions in the library set the global variable \fCerrno\fP when an error occurs. The file, \fC<\fBerrno.h\fP>\fP, provides symbolic names for various error codes. +.PP +\fBWarning:\fP +.RS 4 +The \fCerrno\fP global variable is not safe to use in a threaded or multi-task system. A race condition can occur if a task is interrupted between the call which sets \fCerror\fP and when the task examines \fCerrno\fP. If another task changes \fCerrno\fP during this time, the result will be incorrect for the interrupted task. +.RE +.PP + +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBEDOM\fP 33" +.br +.ti -1c +.RI "#define \fBERANGE\fP 34" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define EDOM 33" +.PP +Domain error. +.SS "#define ERANGE 34" +.PP +Range error. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_fuse.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_fuse.3 new file mode 100644 index 0000000..8e3e125 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_fuse.3 @@ -0,0 +1,151 @@ +.TH ": Fuse Support" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Fuse Support \- \fBIntroduction\fP.RS 4 + +.RE +.PP +The Fuse API allows a user to specify the fuse settings for the specific AVR device they are compiling for. These fuse settings will be placed in a special section in the ELF output file, after linking. +.PP +Programming tools can take advantage of the fuse information embedded in the ELF file, by extracting this information and determining if the fuses need to be programmed before programming the Flash and EEPROM memories. This also allows a single ELF file to contain all the information needed to program an AVR. +.PP +To use the Fuse API, include the <\fBavr/io.h\fP> header file, which in turn automatically includes the individual I/O header file and the <\fBavr/fuse.h\fP> file. These other two files provides everything necessary to set the AVR fuses. +.PP +\fBFuse API\fP.RS 4 + +.RE +.PP +Each I/O header file must define the FUSE_MEMORY_SIZE macro which is defined to the number of fuse bytes that exist in the AVR device. +.PP +A new type, __fuse_t, is defined as a structure. The number of fields in this structure are determined by the number of fuse bytes in the FUSE_MEMORY_SIZE macro. +.PP +If FUSE_MEMORY_SIZE == 1, there is only a single field: byte, of type unsigned char. +.PP +If FUSE_MEMORY_SIZE == 2, there are two fields: low, and high, of type unsigned char. +.PP +If FUSE_MEMORY_SIZE == 3, there are three fields: low, high, and extended, of type unsigned char. +.PP +If FUSE_MEMORY_SIZE > 3, there is a single field: byte, which is an array of unsigned char with the size of the array being FUSE_MEMORY_SIZE. +.PP +A convenience macro, FUSEMEM, is defined as a GCC attribute for a custom-named section of '.fuse'. +.PP +A convenience macro, FUSES, is defined that declares a variable, __fuse, of type __fuse_t with the attribute defined by FUSEMEM. This variable allows the end user to easily set the fuse data. +.PP +\fBNote:\fP +.RS 4 +If a device-specific I/O header file has previously defined FUSEMEM, then FUSEMEM is not redefined. If a device-specific I/O header file has previously defined FUSES, then FUSES is not redefined. +.RE +.PP +Each AVR device I/O header file has a set of defined macros which specify the actual fuse bits available on that device. The AVR fuses have inverted values, logical 1 for an unprogrammed (disabled) bit and logical 0 for a programmed (enabled) bit. The defined macros for each individual fuse bit represent this in their definition by a bit-wise inversion of a mask. For example, the FUSE_EESAVE fuse in the ATmega128 is defined as: +.PP +.nf + #define FUSE_EESAVE ~_BV(3) + +.fi +.PP + +.PP +\fBNote:\fP +.RS 4 +The _BV macro creates a bit mask from a bit number. It is then inverted to represent logical values for a fuse memory byte. +.RE +.PP +To combine the fuse bits macros together to represent a whole fuse byte, use the bitwise AND operator, like so: +.PP +.nf + (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN) + +.fi +.PP +.PP +Each device I/O header file also defines macros that provide default values for each fuse byte that is available. LFUSE_DEFAULT is defined for a Low Fuse byte. HFUSE_DEFAULT is defined for a High Fuse byte. EFUSE_DEFAULT is defined for an Extended Fuse byte. +.PP +If FUSE_MEMORY_SIZE > 3, then the I/O header file defines macros that provide default values for each fuse byte like so: FUSE0_DEFAULT FUSE1_DEFAULT FUSE2_DEFAULT FUSE3_DEFAULT FUSE4_DEFAULT .... +.PP +\fBAPI Usage Example\fP.RS 4 + +.RE +.PP +Putting all of this together is easy. Using C99's designated initializers: +.PP +.PP +.nf + #include + + FUSES = + { + .low = LFUSE_DEFAULT, + .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), + .extended = EFUSE_DEFAULT, + }; + + int main(void) + { + return 0; + } +.fi +.PP +.PP +Or, using the variable directly instead of the FUSES macro, +.PP +.PP +.nf + #include + + __fuse_t __fuse __attribute__((section ('.fuse'))) = + { + .low = LFUSE_DEFAULT, + .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), + .extended = EFUSE_DEFAULT, + }; + + int main(void) + { + return 0; + } +.fi +.PP +.PP +If you are compiling in C++, you cannot use the designated intializers so you must do: +.PP +.PP +.nf + #include + + FUSES = + { + LFUSE_DEFAULT, // .low + (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN), // .high + EFUSE_DEFAULT, // .extended + }; + + int main(void) + { + return 0; + } +.fi +.PP +.PP +However there are a number of caveats that you need to be aware of to use this API properly. +.PP +Be sure to include <\fBavr/io.h\fP> to get all of the definitions for the API. The FUSES macro defines a global variable to store the fuse data. This variable is assigned to its own linker section. Assign the desired fuse values immediately in the variable initialization. +.PP +The .fuse section in the ELF file will get its values from the initial variable assignment ONLY. This means that you can NOT assign values to this variable in functions and the new values will not be put into the ELF .fuse section. +.PP +The global variable is declared in the FUSES macro has two leading underscores, which means that it is reserved for the 'implementation', meaning the library, so it will not conflict with a user-named variable. +.PP +You must initialize ALL fields in the __fuse_t structure. This is because the fuse bits in all bytes default to a logical 1, meaning unprogrammed. Normal uninitialized data defaults to all locgial zeros. So it is vital that all fuse bytes are initialized, even with default data. If they are not, then the fuse bits may not programmed to the desired settings. +.PP +Be sure to have the -mmcu=\fIdevice\fP flag in your compile command line and your linker command line to have the correct device selected and to have the correct I/O header file included when you include <\fBavr/io.h\fP>. +.PP +You can print out the contents of the .fuse section in the ELF file by using this command line: +.PP +.nf + avr-objdump -s -j .fuse + +.fi +.PP + The section contents shows the address on the left, then the data going from lower address to a higher address, left to right. +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_interrupts.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_interrupts.3 new file mode 100644 index 0000000..7604411 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_interrupts.3 @@ -0,0 +1,362 @@ +.TH ": Interrupts" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Interrupts \- +.SH "Detailed Description" +.PP +\fBNote:\fP +.RS 4 +This discussion of interrupts was originally taken from Rich Neswold's document. See \fBAcknowledgments\fP. +.RE +.PP +.SS "Introduction to avr-libc's interrupt handling" +.PP +It's nearly impossible to find compilers that agree on how to handle interrupt code. Since the C language tries to stay away from machine dependent details, each compiler writer is forced to design their method of support. +.PP +In the AVR-GCC environment, the vector table is predefined to point to interrupt routines with predetermined names. By using the appropriate name, your routine will be called when the corresponding interrupt occurs. The device library provides a set of default interrupt routines, which will get used if you don't define your own. +.PP +Patching into the vector table is only one part of the problem. The compiler uses, by convention, a set of registers when it's normally executing compiler-generated code. It's important that these registers, as well as the status register, get saved and restored. The extra code needed to do this is enabled by tagging the interrupt function with \fC__attribute__((signal))\fP. +.PP +These details seem to make interrupt routines a little messy, but all these details are handled by the Interrupt API. An interrupt routine is defined with \fBISR()\fP. This macro register and mark the routine as an interrupt handler for the specified peripheral. The following is an example definition of a handler for the ADC interrupt. +.PP +.PP +.nf +#include + +ISR(ADC_vect) +{ + // user code here +} +.fi +.PP +.PP +Refer to the chapter explaining \fBassembler programming\fP for an explanation about interrupt routines written solely in assembler language. +.PP +.SS "Catch-all interrupt vector" +.PP +If an unexpected interrupt occurs (interrupt is enabled and no handler is installed, which usually indicates a bug), then the default action is to reset the device by jumping to the reset vector. You can override this by supplying a function named \fCBADISR_vect\fP which should be defined with \fBISR()\fP as such. (The name BADISR_vect is actually an alias for __vector_default. The latter must be used inside assembly code in case <\fBavr/interrupt.h\fP> is not included.) +.PP +.PP +.nf +#include + +ISR(BADISR_vect) +{ + // user code here +} +.fi +.PP +.PP +.SS "Nested interrupts" +.PP +The AVR hardware clears the global interrupt flag in SREG before entering an interrupt vector. Thus, normally interrupts will remain disabled inside the handler until the handler exits, where the RETI instruction (that is emitted by the compiler as part of the normal function epilogue for an interrupt handler) will eventually re-enable further interrupts. For that reason, interrupt handlers normally do not nest. For most interrupt handlers, this is the desired behaviour, for some it is even required in order to prevent infinitely recursive interrupts (like UART interrupts, or level-triggered external interrupts). In rare circumstances though it might be desired to re-enable the global interrupt flag as early as possible in the interrupt handler, in order to not defer any other interrupt more than absolutely needed. This could be done using an \fBsei()\fP instruction right at the beginning of the interrupt handler, but this still leaves few instructions inside the compiler-generated function prologue to run with global interrupts disabled. The compiler can be instructed to insert an SEI instruction right at the beginning of an interrupt handler by declaring the handler the following way: +.PP + +.PP +.nf +ISR(XXX_vect, ISR_NOBLOCK) +{ + ... +} + +.fi +.PP +.PP +where \fCXXX_vect\fP is the name of a valid interrupt vector for the MCU type in question, as explained below. +.PP +.SS "Two vectors sharing the same code" +.PP +In some circumstances, the actions to be taken upon two different interrupts might be completely identical so a single implementation for the ISR would suffice. For example, pin-change interrupts arriving from two different ports could logically signal an event that is independent from the actual port (and thus interrupt vector) where it happened. Sharing interrupt vector code can be accomplished using the \fBISR_ALIASOF()\fP attribute to the ISR macro: +.PP +.PP +.nf +ISR(PCINT0_vect) +{ + ... + // Code to handle the event. +} + +ISR(PCINT1_vect, ISR_ALIASOF(PCINT0_vect)); +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +There is no body to the aliased ISR. +.RE +.PP +Note that the \fBISR_ALIASOF()\fP feature requires GCC 4.2 or above (or a patched version of GCC 4.1.x). See the documentation of the \fBISR_ALIAS()\fP macro for an implementation which is less elegant but could be applied to all compiler versions. +.PP +.SS "Empty interrupt service routines" +.PP +In rare circumstances, in interrupt vector does not need any code to be implemented at all. The vector must be declared anyway, so when the interrupt triggers it won't execute the BADISR_vect code (which by default restarts the application). +.PP +This could for example be the case for interrupts that are solely enabled for the purpose of getting the controller out of sleep_mode(). +.PP +A handler for such an interrupt vector can be declared using the \fBEMPTY_INTERRUPT()\fP macro: +.PP +.PP +.nf +EMPTY_INTERRUPT(ADC_vect); +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +There is no body to this macro. +.RE +.PP +.SS "Manually defined ISRs" +.PP +In some circumstances, the compiler-generated prologue and epilogue of the ISR might not be optimal for the job, and a manually defined ISR could be considered particularly to speedup the interrupt handling. +.PP +One solution to this could be to implement the entire ISR as manual assembly code in a separate (assembly) file. See \fBCombining C and assembly source files\fP for an example of how to implement it that way. +.PP +Another solution is to still implement the ISR in C language but take over the compiler's job of generating the prologue and epilogue. This can be done using the ISR_NAKED attribute to the \fBISR()\fP macro. Note that the compiler does not generate \fIanything\fP as prologue or epilogue, so the final \fBreti()\fP must be provided by the actual implementation. SREG must be manually saved if the ISR code modifies it, and the compiler-implied assumption of \fC__zero_reg__\fP always being 0 could be wrong (e. g. when interrupting right after of a MUL instruction). +.PP +.PP +.nf +ISR(TIMER1_OVF_vect, ISR_NAKED) +{ + PORTB |= _BV(0); // results in SBI which does not affect SREG + reti(); +} +.fi +.PP +.PP +.SS "Choosing the vector: Interrupt vector names" +.PP +The interrupt is chosen by supplying one of the symbols in following table. +.PP +There are currently two different styles present for naming the vectors. One form uses names starting with \fCSIG_\fP, followed by a relatively verbose but arbitrarily chosen name describing the interrupt vector. This has been the only available style in avr-libc up to version 1.2.x. +.PP +Starting with avr-libc version 1.4.0, a second style of interrupt vector names has been added, where a short phrase for the vector description is followed by \fC_vect\fP. The short phrase matches the vector name as described in the datasheet of the respective device (and in Atmel's XML files), with spaces replaced by an underscore and other non-alphanumeric characters dropped. Using the suffix \fC_vect\fP is intented to improve portability to other C compilers available for the AVR that use a similar naming convention. +.PP +The historical naming style might become deprecated in a future release, so it is not recommended for new projects. +.PP +\fBNote:\fP +.RS 4 +The \fBISR()\fP macro cannot really spell-check the argument passed to them. Thus, by misspelling one of the names below in a call to \fBISR()\fP, a function will be created that, while possibly being usable as an interrupt function, is not actually wired into the interrupt vector table. The compiler will generate a warning if it detects a suspiciously looking name of a \fBISR()\fP function (i.e. one that after macro replacement does not start with '__vector_'). +.RE +.PP + \fBVector name\fP \fBOld vector name\fP \fBDescription\fP \fBApplicable for device\fP +.PP +ADC_vect SIG_ADC ADC Conversion Complete AT90S2333, AT90S4433, AT90S4434, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny13, ATtiny15, ATtiny26, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 ANALOG_COMP_0_vect SIG_COMPARATOR0 Analog Comparator 0 AT90PWM3, AT90PWM2, AT90PWM1 ANALOG_COMP_1_vect SIG_COMPARATOR1 Analog Comparator 1 AT90PWM3, AT90PWM2, AT90PWM1 ANALOG_COMP_2_vect SIG_COMPARATOR2 Analog Comparator 2 AT90PWM3, AT90PWM2, AT90PWM1 ANALOG_COMP_vect SIG_COMPARATOR Analog Comparator AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 ANA_COMP_vect SIG_COMPARATOR Analog Comparator AT90S1200, AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega16, ATmega161, ATmega162, ATmega163, ATmega32, ATmega323, ATmega8, ATmega8515, ATmega8535, ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny2313, ATtiny26, ATtiny28, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861 CANIT_vect SIG_CAN_INTERRUPT1 CAN Transfer Complete or Error AT90CAN128, AT90CAN32, AT90CAN64 EEPROM_READY_vect SIG_EEPROM_READY, SIG_EE_READY ATtiny2313 EE_RDY_vect SIG_EEPROM_READY EEPROM Ready AT90S2333, AT90S4433, AT90S4434, AT90S8535, ATmega16, ATmega161, ATmega162, ATmega163, ATmega32, ATmega323, ATmega8, ATmega8515, ATmega8535, ATtiny12, ATtiny13, ATtiny15, ATtiny26, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861 EE_READY_vect SIG_EEPROM_READY EEPROM Ready AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 EXT_INT0_vect SIG_INTERRUPT0 External Interrupt Request 0 ATtiny24, ATtiny44, ATtiny84 INT0_vect SIG_INTERRUPT0 External Interrupt 0 AT90S1200, AT90S2313, AT90S2323, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny2313, ATtiny26, ATtiny28, ATtiny43U, ATtiny48, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 INT1_vect SIG_INTERRUPT1 External Interrupt Request 1 AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega168P, ATmega32, ATmega323, ATmega328P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny28, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 INT2_vect SIG_INTERRUPT2 External Interrupt Request 2 AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega32, ATmega323, ATmega32HVB, ATmega406, ATmega64, ATmega8515, ATmega8535, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 INT3_vect SIG_INTERRUPT3 External Interrupt Request 3 AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega32HVB, ATmega406, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 INT4_vect SIG_INTERRUPT4 External Interrupt Request 4 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 INT5_vect SIG_INTERRUPT5 External Interrupt Request 5 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 INT6_vect SIG_INTERRUPT6 External Interrupt Request 6 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 INT7_vect SIG_INTERRUPT7 External Interrupt Request 7 AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 IO_PINS_vect SIG_PIN, SIG_PIN_CHANGE External Interrupt Request 0 ATtiny11, ATtiny12, ATtiny15, ATtiny26 LCD_vect SIG_LCD LCD Start of Frame ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega3290P, ATmega649, ATmega6490 LOWLEVEL_IO_PINS_vect SIG_PIN Low-level Input on Port B ATtiny28 OVRIT_vect SIG_CAN_OVERFLOW1 CAN Timer Overrun AT90CAN128, AT90CAN32, AT90CAN64 PCINT0_vect SIG_PIN_CHANGE0 Pin Change Interrupt Request 0 ATmega162, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny13, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 PCINT1_vect SIG_PIN_CHANGE1 Pin Change Interrupt Request 1 ATmega162, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega406, ATmega48P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny43U, ATtiny48, ATtiny24, ATtiny44, ATtiny84, AT90USB162, AT90USB82 PCINT2_vect SIG_PIN_CHANGE2 Pin Change Interrupt Request 2 ATmega3250, ATmega3250P, ATmega328P, ATmega3290, ATmega3290P, ATmega48P, ATmega6450, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny48 PCINT3_vect SIG_PIN_CHANGE3 Pin Change Interrupt Request 3 ATmega3250, ATmega3250P, ATmega3290, ATmega3290P, ATmega6450, ATmega6490, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny48 PCINT_vect SIG_PIN_CHANGE, SIG_PCINT ATtiny2313, ATtiny261, ATtiny461, ATtiny861 PSC0_CAPT_vect SIG_PSC0_CAPTURE PSC0 Capture Event AT90PWM3, AT90PWM2, AT90PWM1 PSC0_EC_vect SIG_PSC0_END_CYCLE PSC0 End Cycle AT90PWM3, AT90PWM2, AT90PWM1 PSC1_CAPT_vect SIG_PSC1_CAPTURE PSC1 Capture Event AT90PWM3, AT90PWM2, AT90PWM1 PSC1_EC_vect SIG_PSC1_END_CYCLE PSC1 End Cycle AT90PWM3, AT90PWM2, AT90PWM1 PSC2_CAPT_vect SIG_PSC2_CAPTURE PSC2 Capture Event AT90PWM3, AT90PWM2, AT90PWM1 PSC2_EC_vect SIG_PSC2_END_CYCLE PSC2 End Cycle AT90PWM3, AT90PWM2, AT90PWM1 SPI_STC_vect SIG_SPI Serial Transfer Complete AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny48, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 SPM_RDY_vect SIG_SPM_READY Store Program Memory Ready ATmega16, ATmega162, ATmega32, ATmega323, ATmega8, ATmega8515, ATmega8535 SPM_READY_vect SIG_SPM_READY Store Program Memory Read AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega406, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIM0_COMPA_vect SIG_OUTPUT_COMPARE0A Timer/Counter Compare Match A ATtiny13, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85 TIM0_COMPB_vect SIG_OUTPUT_COMPARE0B Timer/Counter Compare Match B ATtiny13, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85 TIM0_OVF_vect SIG_OVERFLOW0 Timer/Counter0 Overflow ATtiny13, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85 TIM1_CAPT_vect SIG_INPUT_CAPTURE1 Timer/Counter1 Capture Event ATtiny24, ATtiny44, ATtiny84 TIM1_COMPA_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match A ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85 TIM1_COMPB_vect SIG_OUTPUT_COMPARE1B Timer/Counter1 Compare Match B ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85 TIM1_OVF_vect SIG_OVERFLOW1 Timer/Counter1 Overflow ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85 TIMER0_CAPT_vect SIG_INPUT_CAPTURE0 ADC Conversion Complete ATtiny261, ATtiny461, ATtiny861 TIMER0_COMPA_vect SIG_OUTPUT_COMPARE0A TimerCounter0 Compare Match A ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER0_COMPB_vect SIG_OUTPUT_COMPARE0B, SIG_OUTPUT_COMPARE0_B Timer Counter 0 Compare Match B AT90PWM3, AT90PWM2, AT90PWM1, ATmega1284P, ATmega168P, ATmega328P, ATmega32HVB, ATmega48P, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER0_COMP_A_vect SIG_OUTPUT_COMPARE0A, SIG_OUTPUT_COMPARE0_A Timer/Counter0 Compare Match A AT90PWM3, AT90PWM2, AT90PWM1 TIMER0_COMP_vect SIG_OUTPUT_COMPARE0 Timer/Counter0 Compare Match AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega16, ATmega161, ATmega162, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8515, ATmega8535 TIMER0_OVF0_vect SIG_OVERFLOW0 Timer/Counter0 Overflow AT90S2313, AT90S2323, AT90S2343, ATtiny22, ATtiny26 TIMER0_OVF_vect SIG_OVERFLOW0 Timer/Counter0 Overflow AT90S1200, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny11, ATtiny12, ATtiny15, ATtiny2313, ATtiny28, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER1_CAPT1_vect SIG_INPUT_CAPTURE1 Timer/Counter1 Capture Event AT90S2313 TIMER1_CAPT_vect SIG_INPUT_CAPTURE1 Timer/Counter Capture Event AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny2313, ATtiny48, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER1_CMPA_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match 1A ATtiny26 TIMER1_CMPB_vect SIG_OUTPUT_COMPARE1B Timer/Counter1 Compare Match 1B ATtiny26 TIMER1_COMP1_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match AT90S2313 TIMER1_COMPA_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match A AT90S4414, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER1_COMPB_vect SIG_OUTPUT_COMPARE1B Timer/Counter1 Compare MatchB AT90S4414, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER1_COMPC_vect SIG_OUTPUT_COMPARE1C Timer/Counter1 Compare Match C AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER1_COMPD_vect SIG_OUTPUT_COMPARE0D Timer/Counter1 Compare Match D ATtiny261, ATtiny461, ATtiny861 TIMER1_COMP_vect SIG_OUTPUT_COMPARE1A Timer/Counter1 Compare Match AT90S2333, AT90S4433, ATtiny15 TIMER1_OVF1_vect SIG_OVERFLOW1 Timer/Counter1 Overflow AT90S2313, ATtiny26 TIMER1_OVF_vect SIG_OVERFLOW1 Timer/Counter1 Overflow AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90PWM216, AT90PWM2B, AT90PWM316, AT90PWM3B, AT90PWM3, AT90PWM2, AT90PWM1, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega32HVB, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8515, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny15, ATtiny2313, ATtiny48, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER2_COMPA_vect SIG_OUTPUT_COMPARE2A Timer/Counter2 Compare Match A ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER2_COMPB_vect SIG_OUTPUT_COMPARE2B Timer/Counter2 Compare Match A ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER2_COMP_vect SIG_OUTPUT_COMPARE2 Timer/Counter2 Compare Match AT90S4434, AT90S8535, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8535 TIMER2_OVF_vect SIG_OVERFLOW2 Timer/Counter2 Overflow AT90S4434, AT90S8535, AT90CAN128, AT90CAN32, AT90CAN64, ATmega103, ATmega128, ATmega1284P, ATmega16, ATmega161, ATmega162, ATmega163, ATmega165, ATmega165P, ATmega168P, ATmega169, ATmega169P, ATmega32, ATmega323, ATmega325, ATmega3250, ATmega3250P, ATmega328P, ATmega329, ATmega3290, ATmega3290P, ATmega48P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER3_CAPT_vect SIG_INPUT_CAPTURE3 Timer/Counter3 Capture Event AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER3_COMPA_vect SIG_OUTPUT_COMPARE3A Timer/Counter3 Compare Match A AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER3_COMPB_vect SIG_OUTPUT_COMPARE3B Timer/Counter3 Compare Match B AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER3_COMPC_vect SIG_OUTPUT_COMPARE3C Timer/Counter3 Compare Match C AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER3_OVF_vect SIG_OVERFLOW3 Timer/Counter3 Overflow AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TIMER4_CAPT_vect SIG_INPUT_CAPTURE4 Timer/Counter4 Capture Event ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER4_COMPA_vect SIG_OUTPUT_COMPARE4A Timer/Counter4 Compare Match A ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER4_COMPB_vect SIG_OUTPUT_COMPARE4B Timer/Counter4 Compare Match B ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER4_COMPC_vect SIG_OUTPUT_COMPARE4C Timer/Counter4 Compare Match C ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER4_OVF_vect SIG_OVERFLOW4 Timer/Counter4 Overflow ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER5_CAPT_vect SIG_INPUT_CAPTURE5 Timer/Counter5 Capture Event ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER5_COMPA_vect SIG_OUTPUT_COMPARE5A Timer/Counter5 Compare Match A ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER5_COMPB_vect SIG_OUTPUT_COMPARE5B Timer/Counter5 Compare Match B ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER5_COMPC_vect SIG_OUTPUT_COMPARE5C Timer/Counter5 Compare Match C ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TIMER5_OVF_vect SIG_OVERFLOW5 Timer/Counter5 Overflow ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 TWI_vect SIG_2WIRE_SERIAL 2-wire Serial Interface AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega16, ATmega163, ATmega168P, ATmega32, ATmega323, ATmega328P, ATmega32HVB, ATmega406, ATmega48P, ATmega64, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATtiny48, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 TXDONE_vect SIG_TXDONE Transmission Done, Bit Timer Flag 2 Interrupt AT86RF401 TXEMPTY_vect SIG_TXBE Transmit Buffer Empty, Bit Itmer Flag 0 Interrupt AT86RF401 UART0_RX_vect SIG_UART0_RECV UART0, Rx Complete ATmega161 UART0_TX_vect SIG_UART0_TRANS UART0, Tx Complete ATmega161 UART0_UDRE_vect SIG_UART0_DATA UART0 Data Register Empty ATmega161 UART1_RX_vect SIG_UART1_RECV UART1, Rx Complete ATmega161 UART1_TX_vect SIG_UART1_TRANS UART1, Tx Complete ATmega161 UART1_UDRE_vect SIG_UART1_DATA UART1 Data Register Empty ATmega161 UART_RX_vect SIG_UART_RECV UART, Rx Complete AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega103, ATmega163, ATmega8515 UART_TX_vect SIG_UART_TRANS UART, Tx Complete AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega103, ATmega163, ATmega8515 UART_UDRE_vect SIG_UART_DATA UART Data Register Empty AT90S2313, AT90S2333, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, ATmega103, ATmega163, ATmega8515 USART0_RXC_vect SIG_USART0_RECV USART0, Rx Complete ATmega162 USART0_RX_vect SIG_UART0_RECV USART0, Rx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega329, ATmega64, ATmega645, ATmega649, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644 USART0_TXC_vect SIG_USART0_TRANS USART0, Tx Complete ATmega162 USART0_TX_vect SIG_UART0_TRANS USART0, Tx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega64, ATmega645, ATmega6450, ATmega649, ATmega6490, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644 USART0_UDRE_vect SIG_UART0_DATA USART0 Data Register Empty AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega329, ATmega64, ATmega645, ATmega649, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644 USART1_RXC_vect SIG_USART1_RECV USART1, Rx Complete ATmega162 USART1_RX_vect SIG_UART1_RECV USART1, Rx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 USART1_TXC_vect SIG_USART1_TRANS USART1, Tx Complete ATmega162 USART1_TX_vect SIG_UART1_TRANS USART1, Tx Complete AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 USART1_UDRE_vect SIG_UART1_DATA USART1, Data Register Empty AT90CAN128, AT90CAN32, AT90CAN64, ATmega128, ATmega1284P, ATmega162, ATmega64, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 USART2_RX_vect SIG_USART2_RECV USART2, Rx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 USART2_TX_vect SIG_USART2_TRANS USART2, Tx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 USART2_UDRE_vect SIG_USART2_DATA USART2 Data register Empty ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 USART3_RX_vect SIG_USART3_RECV USART3, Rx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 USART3_TX_vect SIG_USART3_TRANS USART3, Tx Complete ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 USART3_UDRE_vect SIG_USART3_DATA USART3 Data register Empty ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 USART_RXC_vect SIG_USART_RECV, SIG_UART_RECV USART, Rx Complete ATmega16, ATmega32, ATmega323, ATmega8 USART_RX_vect SIG_USART_RECV, SIG_UART_RECV USART, Rx Complete AT90PWM3, AT90PWM2, AT90PWM1, ATmega168P, ATmega3250, ATmega3250P, ATmega328P, ATmega3290, ATmega3290P, ATmega48P, ATmega6450, ATmega6490, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATtiny2313 USART_TXC_vect SIG_USART_TRANS, SIG_UART_TRANS USART, Tx Complete ATmega16, ATmega32, ATmega323, ATmega8 USART_TX_vect SIG_USART_TRANS, SIG_UART_TRANS USART, Tx Complete AT90PWM3, AT90PWM2, AT90PWM1, ATmega168P, ATmega328P, ATmega48P, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATtiny2313 USART_UDRE_vect SIG_USART_DATA, SIG_UART_DATA USART Data Register Empty AT90PWM3, AT90PWM2, AT90PWM1, ATmega16, ATmega168P, ATmega32, ATmega323, ATmega3250, ATmega3250P, ATmega328P, ATmega3290, ATmega3290P, ATmega48P, ATmega6450, ATmega6490, ATmega8, ATmega8535, ATmega88P, ATmega168, ATmega48, ATmega88, ATtiny2313 USI_OVERFLOW_vect SIG_USI_OVERFLOW USI Overflow ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATtiny2313 USI_OVF_vect SIG_USI_OVERFLOW USI Overflow ATtiny26, ATtiny43U, ATtiny24, ATtiny44, ATtiny84, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861 USI_START_vect SIG_USI_START USI Start Condition ATmega165, ATmega165P, ATmega169, ATmega169P, ATmega325, ATmega3250, ATmega3250P, ATmega329, ATmega3290, ATmega3290P, ATmega645, ATmega6450, ATmega649, ATmega6490, ATtiny2313, ATtiny43U, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861 USI_STRT_vect SIG_USI_START USI Start ATtiny26 USI_STR_vect SIG_USI_START USI START ATtiny24, ATtiny44, ATtiny84 WATCHDOG_vect SIG_WATCHDOG_TIMEOUT Watchdog Time-out ATtiny24, ATtiny44, ATtiny84 WDT_OVERFLOW_vect SIG_WATCHDOG_TIMEOUT, SIG_WDT_OVERFLOW Watchdog Timer Overflow ATtiny2313 WDT_vect SIG_WDT, SIG_WATCHDOG_TIMEOUT Watchdog Timeout Interrupt AT90PWM3, AT90PWM2, AT90PWM1, ATmega1284P, ATmega168P, ATmega328P, ATmega32HVB, ATmega406, ATmega48P, ATmega88P, ATmega168, ATmega48, ATmega88, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega324P, ATmega164P, ATmega644P, ATmega644, ATmega16HVA, ATtiny13, ATtiny43U, ATtiny48, ATtiny45, ATtiny25, ATtiny85, ATtiny261, ATtiny461, ATtiny861, AT90USB162, AT90USB82, AT90USB1287, AT90USB1286, AT90USB647, AT90USB646 +.PP +.SS "Global manipulation of the interrupt flag" +The global interrupt flag is maintained in the I bit of the status register (SREG). +.in +1c +.ti -1c +.RI "#define \fBsei\fP()" +.br +.ti -1c +.RI "#define \fBcli\fP()" +.br +.in -1c +.SS "Macros for writing interrupt handler functions" + +.in +1c +.ti -1c +.RI "#define \fBISR\fP(vector, attributes)" +.br +.ti -1c +.RI "#define \fBSIGNAL\fP(vector)" +.br +.ti -1c +.RI "#define \fBEMPTY_INTERRUPT\fP(vector)" +.br +.ti -1c +.RI "#define \fBISR_ALIAS\fP(vector, target_vector)" +.br +.ti -1c +.RI "#define \fBreti\fP()" +.br +.ti -1c +.RI "#define \fBBADISR_vect\fP" +.br +.in -1c +.SS "ISR attributes" + +.in +1c +.ti -1c +.RI "#define \fBISR_BLOCK\fP" +.br +.ti -1c +.RI "#define \fBISR_NOBLOCK\fP" +.br +.ti -1c +.RI "#define \fBISR_NAKED\fP" +.br +.ti -1c +.RI "#define \fBISR_ALIASOF\fP(target_vector)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define BADISR_vect" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This is a vector which is aliased to __vector_default, the vector executed when an ISR fires with no accompanying ISR handler. This may be used along with the \fBISR()\fP macro to create a catch-all for undefined but used ISRs for debugging purposes. +.SS "#define cli()" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Disables all interrupts by clearing the global interrupt mask. This function actually compiles into a single line of assembly, so there is no function call overhead. +.SS "#define EMPTY_INTERRUPT(vector)" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Defines an empty interrupt handler function. This will not generate any prolog or epilog code and will only return from the ISR. Do not define a function body as this will define it for you. Example: +.PP +.nf + EMPTY_INTERRUPT(ADC_vect); + +.fi +.PP + +.SS "#define ISR(vector, attributes)" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Introduces an interrupt handler function (interrupt service routine) that runs with global interrupts initially disabled by default with no attributes specified. +.PP +The attributes are optional and alter the behaviour and resultant generated code of the interrupt routine. Multiple attributes may be used for a single function, with a space seperating each attribute. +.PP +Valid attributes are ISR_BLOCK, ISR_NOBLOCK, ISR_NAKED and \fBISR_ALIASOF(vect)\fP. +.PP +\fCvector\fP must be one of the interrupt vector names that are valid for the particular MCU type. +.SS "#define ISR_ALIAS(vector, target_vector)" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Aliases a given vector to another one in the same manner as the ISR_ALIASOF attribute for the \fBISR()\fP macro. Unlike the ISR_ALIASOF attribute macro however, this is compatible for all versions of GCC rather than just GCC version 4.2 onwards. +.PP +\fBNote:\fP +.RS 4 +This macro creates a trampoline function for the aliased macro. This will result in a two cycle penalty for the aliased vector compared to the ISR the vector is aliased to, due to the JMP/RJMP opcode used. +.RE +.PP +\fBDeprecated\fP +.RS 4 +For new code, the use of ISR(..., ISR_ALIASOF(...)) is recommended. +.RE +.PP +Example: +.PP +.nf + ISR(INT0_vect) + { + PORTB = 42; + } + + ISR_ALIAS(INT1_vect, INT0_vect); + +.fi +.PP + +.SS "#define ISR_ALIASOF(target_vector)" +.PP +.PP +.nf + #include +.fi +.PP +.PP +The ISR is linked to another ISR, specified by the vect parameter. This is compatible with GCC 4.2 and greater only. +.PP +Use this attribute in the attributes parameter of the ISR macro. +.SS "#define ISR_BLOCK" +.PP +.PP +.nf + # include +.fi +.PP +.PP +Identical to an ISR with no attributes specified. Global interrupts are initially disabled by the AVR hardware when entering the ISR, without the compiler modifying this state. +.PP +Use this attribute in the attributes parameter of the ISR macro. +.SS "#define ISR_NAKED" +.PP +.PP +.nf + # include +.fi +.PP +.PP +ISR is created with no prologue or epilogue code. The user code is responsible for preservation of the machine state including the SREG register, as well as placing a \fBreti()\fP at the end of the interrupt routine. +.PP +Use this attribute in the attributes parameter of the ISR macro. +.SS "#define ISR_NOBLOCK" +.PP +.PP +.nf + # include +.fi +.PP +.PP +ISR runs with global interrupts initially enabled. The interrupt enable flag is activated by the compiler as early as possible within the ISR to ensure minimal processing delay for nested interrupts. +.PP +This may be used to create nested ISRs, however care should be taken to avoid stack overflows, or to avoid infinitely entering the ISR for those cases where the AVR hardware does not clear the respective interrupt flag before entering the ISR. +.PP +Use this attribute in the attributes parameter of the ISR macro. +.SS "#define reti()" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Returns from an interrupt routine, enabling global interrupts. This should be the last command executed before leaving an ISR defined with the ISR_NAKED attribute. +.PP +This macro actually compiles into a single line of assembly, so there is no function call overhead. +.SS "#define sei()" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Enables interrupts by setting the global interrupt mask. This function actually compiles into a single line of assembly, so there is no function call overhead. +.SS "#define SIGNAL(vector)" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Introduces an interrupt handler function that runs with global interrupts initially disabled. +.PP +This is the same as the ISR macro without optional attributes. +.PP +\fBDeprecated\fP +.RS 4 +Do not use \fBSIGNAL()\fP in new code. Use \fBISR()\fP instead. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_inttypes.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_inttypes.3 new file mode 100644 index 0000000..977dc7f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_inttypes.3 @@ -0,0 +1,627 @@ +.TH ": Integer Type conversions" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Integer Type conversions \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file includes the exact-width integer definitions from \fC<\fBstdint.h\fP>\fP, and extends them with additional facilities provided by the implementation. +.PP +Currently, the extensions include two additional integer types that could hold a 'far' pointer (i.e. a code pointer that can address more than 64 KB), as well as standard names for all printf and scanf formatting options that are supported by the \fB: Standard IO facilities\fP. As the library does not support the full range of conversion specifiers from ISO 9899:1999, only those conversions that are actually implemented will be listed here. +.PP +The idea behind these conversion macros is that, for each of the types defined by <\fBstdint.h\fP>, a macro will be supplied that portably allows formatting an object of that type in \fBprintf()\fP or \fBscanf()\fP operations. Example: +.PP +.PP +.nf + #include + + uint8_t smallval; + int32_t longval; + ... + printf('The hexadecimal value of smallval is %' PRIx8 + ', the decimal value of longval is %' PRId32 '.\n', + smallval, longval); +.fi +.PP + +.PP +.SS "Far pointers for memory access >64K" + +.in +1c +.ti -1c +.RI "typedef \fBint32_t\fP \fBint_farptr_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP \fBuint_farptr_t\fP" +.br +.in -1c +.SS "macros for printf and scanf format specifiers" +For C++, these are only included if __STDC_LIMIT_MACROS is defined before including <\fBinttypes.h\fP>. +.in +1c +.ti -1c +.RI "#define \fBPRId8\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdLEAST8\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdFAST8\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIi8\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiLEAST8\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiFAST8\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRId16\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdLEAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdFAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIi16\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiLEAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiFAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRId32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBPRIdLEAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBPRIdFAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBPRIi32\fP 'li'" +.br +.ti -1c +.RI "#define \fBPRIiLEAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBPRIiFAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBPRIdPTR\fP PRId16" +.br +.ti -1c +.RI "#define \fBPRIiPTR\fP PRIi16" +.br +.ti -1c +.RI "#define \fBPRIo8\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoLEAST8\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoFAST8\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIu8\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuLEAST8\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuFAST8\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIx8\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxLEAST8\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxFAST8\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIX8\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXLEAST8\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXFAST8\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIo16\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoLEAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoFAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIu16\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuLEAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuFAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIx16\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxLEAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxFAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIX16\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXLEAST16\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXFAST16\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIo32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBPRIoLEAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBPRIoFAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBPRIu32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBPRIuLEAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBPRIuFAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBPRIx32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBPRIxLEAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBPRIxFAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBPRIX32\fP 'lX'" +.br +.ti -1c +.RI "#define \fBPRIXLEAST32\fP 'lX'" +.br +.ti -1c +.RI "#define \fBPRIXFAST32\fP 'lX'" +.br +.ti -1c +.RI "#define \fBPRIoPTR\fP PRIo16" +.br +.ti -1c +.RI "#define \fBPRIuPTR\fP PRIu16" +.br +.ti -1c +.RI "#define \fBPRIxPTR\fP PRIx16" +.br +.ti -1c +.RI "#define \fBPRIXPTR\fP PRIX16" +.br +.ti -1c +.RI "#define \fBSCNd16\fP 'd'" +.br +.ti -1c +.RI "#define \fBSCNdLEAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBSCNdFAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBSCNi16\fP 'i'" +.br +.ti -1c +.RI "#define \fBSCNiLEAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBSCNiFAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBSCNd32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBSCNdLEAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBSCNdFAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBSCNi32\fP 'li'" +.br +.ti -1c +.RI "#define \fBSCNiLEAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBSCNiFAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBSCNdPTR\fP SCNd16" +.br +.ti -1c +.RI "#define \fBSCNiPTR\fP SCNi16" +.br +.ti -1c +.RI "#define \fBSCNo16\fP 'o'" +.br +.ti -1c +.RI "#define \fBSCNoLEAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBSCNoFAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBSCNu16\fP 'u'" +.br +.ti -1c +.RI "#define \fBSCNuLEAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBSCNuFAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBSCNx16\fP 'x'" +.br +.ti -1c +.RI "#define \fBSCNxLEAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBSCNxFAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBSCNo32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBSCNoLEAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBSCNoFAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBSCNu32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBSCNuLEAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBSCNuFAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBSCNx32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBSCNxLEAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBSCNxFAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBSCNoPTR\fP SCNo16" +.br +.ti -1c +.RI "#define \fBSCNuPTR\fP SCNu16" +.br +.ti -1c +.RI "#define \fBSCNxPTR\fP SCNx16" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define PRId16 'd'" +.PP +decimal printf format for int16_t +.SS "#define PRId32 'ld'" +.PP +decimal printf format for int32_t +.SS "#define PRId8 'd'" +.PP +decimal printf format for int8_t +.SS "#define PRIdFAST16 'd'" +.PP +decimal printf format for int_fast16_t +.SS "#define PRIdFAST32 'ld'" +.PP +decimal printf format for int_fast32_t +.SS "#define PRIdFAST8 'd'" +.PP +decimal printf format for int_fast8_t +.SS "#define PRIdLEAST16 'd'" +.PP +decimal printf format for int_least16_t +.SS "#define PRIdLEAST32 'ld'" +.PP +decimal printf format for int_least32_t +.SS "#define PRIdLEAST8 'd'" +.PP +decimal printf format for int_least8_t +.SS "#define PRIdPTR PRId16" +.PP +decimal printf format for intptr_t +.SS "#define PRIi16 'i'" +.PP +integer printf format for int16_t +.SS "#define PRIi32 'li'" +.PP +integer printf format for int32_t +.SS "#define PRIi8 'i'" +.PP +integer printf format for int8_t +.SS "#define PRIiFAST16 'i'" +.PP +integer printf format for int_fast16_t +.SS "#define PRIiFAST32 'li'" +.PP +integer printf format for int_fast32_t +.SS "#define PRIiFAST8 'i'" +.PP +integer printf format for int_fast8_t +.SS "#define PRIiLEAST16 'i'" +.PP +integer printf format for int_least16_t +.SS "#define PRIiLEAST32 'li'" +.PP +integer printf format for int_least32_t +.SS "#define PRIiLEAST8 'i'" +.PP +integer printf format for int_least8_t +.SS "#define PRIiPTR PRIi16" +.PP +integer printf format for intptr_t +.SS "#define PRIo16 'o'" +.PP +octal printf format for uint16_t +.SS "#define PRIo32 'lo'" +.PP +octal printf format for uint32_t +.SS "#define PRIo8 'o'" +.PP +octal printf format for uint8_t +.SS "#define PRIoFAST16 'o'" +.PP +octal printf format for uint_fast16_t +.SS "#define PRIoFAST32 'lo'" +.PP +octal printf format for uint_fast32_t +.SS "#define PRIoFAST8 'o'" +.PP +octal printf format for uint_fast8_t +.SS "#define PRIoLEAST16 'o'" +.PP +octal printf format for uint_least16_t +.SS "#define PRIoLEAST32 'lo'" +.PP +octal printf format for uint_least32_t +.SS "#define PRIoLEAST8 'o'" +.PP +octal printf format for uint_least8_t +.SS "#define PRIoPTR PRIo16" +.PP +octal printf format for uintptr_t +.SS "#define PRIu16 'u'" +.PP +decimal printf format for uint16_t +.SS "#define PRIu32 'lu'" +.PP +decimal printf format for uint32_t +.SS "#define PRIu8 'u'" +.PP +decimal printf format for uint8_t +.SS "#define PRIuFAST16 'u'" +.PP +decimal printf format for uint_fast16_t +.SS "#define PRIuFAST32 'lu'" +.PP +decimal printf format for uint_fast32_t +.SS "#define PRIuFAST8 'u'" +.PP +decimal printf format for uint_fast8_t +.SS "#define PRIuLEAST16 'u'" +.PP +decimal printf format for uint_least16_t +.SS "#define PRIuLEAST32 'lu'" +.PP +decimal printf format for uint_least32_t +.SS "#define PRIuLEAST8 'u'" +.PP +decimal printf format for uint_least8_t +.SS "#define PRIuPTR PRIu16" +.PP +decimal printf format for uintptr_t +.SS "#define PRIX16 'X'" +.PP +uppercase hexadecimal printf format for uint16_t +.SS "#define PRIx16 'x'" +.PP +hexadecimal printf format for uint16_t +.SS "#define PRIX32 'lX'" +.PP +uppercase hexadecimal printf format for uint32_t +.SS "#define PRIx32 'lx'" +.PP +hexadecimal printf format for uint32_t +.SS "#define PRIX8 'X'" +.PP +uppercase hexadecimal printf format for uint8_t +.SS "#define PRIx8 'x'" +.PP +hexadecimal printf format for uint8_t +.SS "#define PRIXFAST16 'X'" +.PP +uppercase hexadecimal printf format for uint_fast16_t +.SS "#define PRIxFAST16 'x'" +.PP +hexadecimal printf format for uint_fast16_t +.SS "#define PRIXFAST32 'lX'" +.PP +uppercase hexadecimal printf format for uint_fast32_t +.SS "#define PRIxFAST32 'lx'" +.PP +hexadecimal printf format for uint_fast32_t +.SS "#define PRIXFAST8 'X'" +.PP +uppercase hexadecimal printf format for uint_fast8_t +.SS "#define PRIxFAST8 'x'" +.PP +hexadecimal printf format for uint_fast8_t +.SS "#define PRIXLEAST16 'X'" +.PP +uppercase hexadecimal printf format for uint_least16_t +.SS "#define PRIxLEAST16 'x'" +.PP +hexadecimal printf format for uint_least16_t +.SS "#define PRIXLEAST32 'lX'" +.PP +uppercase hexadecimal printf format for uint_least32_t +.SS "#define PRIxLEAST32 'lx'" +.PP +hexadecimal printf format for uint_least32_t +.SS "#define PRIXLEAST8 'X'" +.PP +uppercase hexadecimal printf format for uint_least8_t +.SS "#define PRIxLEAST8 'x'" +.PP +hexadecimal printf format for uint_least8_t +.SS "#define PRIXPTR PRIX16" +.PP +uppercase hexadecimal printf format for uintptr_t +.SS "#define PRIxPTR PRIx16" +.PP +hexadecimal printf format for uintptr_t +.SS "#define SCNd16 'd'" +.PP +decimal scanf format for int16_t +.SS "#define SCNd32 'ld'" +.PP +decimal scanf format for int32_t +.SS "#define SCNdFAST16 'd'" +.PP +decimal scanf format for int_fast16_t +.SS "#define SCNdFAST32 'ld'" +.PP +decimal scanf format for int_fast32_t +.SS "#define SCNdLEAST16 'd'" +.PP +decimal scanf format for int_least16_t +.SS "#define SCNdLEAST32 'ld'" +.PP +decimal scanf format for int_least32_t +.SS "#define SCNdPTR SCNd16" +.PP +decimal scanf format for intptr_t +.SS "#define SCNi16 'i'" +.PP +generic-integer scanf format for int16_t +.SS "#define SCNi32 'li'" +.PP +generic-integer scanf format for int32_t +.SS "#define SCNiFAST16 'i'" +.PP +generic-integer scanf format for int_fast16_t +.SS "#define SCNiFAST32 'li'" +.PP +generic-integer scanf format for int_fast32_t +.SS "#define SCNiLEAST16 'i'" +.PP +generic-integer scanf format for int_least16_t +.SS "#define SCNiLEAST32 'li'" +.PP +generic-integer scanf format for int_least32_t +.SS "#define SCNiPTR SCNi16" +.PP +generic-integer scanf format for intptr_t +.SS "#define SCNo16 'o'" +.PP +octal scanf format for uint16_t +.SS "#define SCNo32 'lo'" +.PP +octal scanf format for uint32_t +.SS "#define SCNoFAST16 'o'" +.PP +octal scanf format for uint_fast16_t +.SS "#define SCNoFAST32 'lo'" +.PP +octal scanf format for uint_fast32_t +.SS "#define SCNoLEAST16 'o'" +.PP +octal scanf format for uint_least16_t +.SS "#define SCNoLEAST32 'lo'" +.PP +octal scanf format for uint_least32_t +.SS "#define SCNoPTR SCNo16" +.PP +octal scanf format for uintptr_t +.SS "#define SCNu16 'u'" +.PP +decimal scanf format for uint16_t +.SS "#define SCNu32 'lu'" +.PP +decimal scanf format for uint32_t +.SS "#define SCNuFAST16 'u'" +.PP +decimal scanf format for uint_fast16_t +.SS "#define SCNuFAST32 'lu'" +.PP +decimal scanf format for uint_fast32_t +.SS "#define SCNuLEAST16 'u'" +.PP +decimal scanf format for uint_least16_t +.SS "#define SCNuLEAST32 'lu'" +.PP +decimal scanf format for uint_least32_t +.SS "#define SCNuPTR SCNu16" +.PP +decimal scanf format for uintptr_t +.SS "#define SCNx16 'x'" +.PP +hexadecimal scanf format for uint16_t +.SS "#define SCNx32 'lx'" +.PP +hexadecimal scanf format for uint32_t +.SS "#define SCNxFAST16 'x'" +.PP +hexadecimal scanf format for uint_fast16_t +.SS "#define SCNxFAST32 'lx'" +.PP +hexadecimal scanf format for uint_fast32_t +.SS "#define SCNxLEAST16 'x'" +.PP +hexadecimal scanf format for uint_least16_t +.SS "#define SCNxLEAST32 'lx'" +.PP +hexadecimal scanf format for uint_least32_t +.SS "#define SCNxPTR SCNx16" +.PP +hexadecimal scanf format for uintptr_t +.SH "Typedef Documentation" +.PP +.SS "typedef \fBint32_t\fP \fBint_farptr_t\fP" +.PP +signed integer type that can hold a pointer > 64 KB +.SS "typedef \fBuint32_t\fP \fBuint_farptr_t\fP" +.PP +unsigned integer type that can hold a pointer > 64 KB diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_io.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_io.3 new file mode 100644 index 0000000..f05d879 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_io.3 @@ -0,0 +1,66 @@ +.TH ": AVR device-specific IO definitions" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: AVR device-specific IO definitions \- .PP +.nf + #include +.fi +.PP +.PP +This header file includes the apropriate IO definitions for the device that has been specified by the \fC-mmcu=\fP compiler command-line switch. This is done by diverting to the appropriate file \fC\fP which should never be included directly. Some register names common to all AVR devices are defined directly within \fC\fP, which is included in \fC<\fBavr/io.h\fP>\fP, but most of the details come from the respective include file. +.PP +Note that this file always includes the following files: +.PP +.nf + #include + #include + #include + #include + +.fi +.PP + See \fB: Special function registers\fP for more details about that header file. +.PP +Included are definitions of the IO register set and their respective bit values as specified in the Atmel documentation. Note that inconsistencies in naming conventions, so even identical functions sometimes get different names on different devices. +.PP +Also included are the specific names useable for interrupt function definitions as documented \fBhere\fP. +.PP +Finally, the following macros are defined: +.PP +.IP "\(bu" 2 +\fBRAMEND\fP +.br + The last on-chip RAM address. +.br + +.IP "\(bu" 2 +\fBXRAMEND\fP +.br + The last possible RAM location that is addressable. This is equal to RAMEND for devices that do not allow for external RAM. For devices that allow external RAM, this will larger than RAMEND. +.br + +.IP "\(bu" 2 +\fBE2END\fP +.br + The last EEPROM address. +.br + +.IP "\(bu" 2 +\fBFLASHEND\fP +.br + The last byte address in the Flash program space. +.br + +.IP "\(bu" 2 +\fBSPM_PAGESIZE\fP +.br + For devices with bootloader support, the flash pagesize (in bytes) to be used for the \fCSPM\fP instruction. +.IP "\(bu" 2 +\fBE2PAGESIZE\fP +.br + The size of the EEPROM page. +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_lock.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_lock.3 new file mode 100644 index 0000000..d85f14b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_lock.3 @@ -0,0 +1,119 @@ +.TH ": Lockbit Support" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Lockbit Support \- \fBIntroduction\fP.RS 4 + +.RE +.PP +The Lockbit API allows a user to specify the lockbit settings for the specific AVR device they are compiling for. These lockbit settings will be placed in a special section in the ELF output file, after linking. +.PP +Programming tools can take advantage of the lockbit information embedded in the ELF file, by extracting this information and determining if the lockbits need to be programmed after programming the Flash and EEPROM memories. This also allows a single ELF file to contain all the information needed to program an AVR. +.PP +To use the Lockbit API, include the <\fBavr/io.h\fP> header file, which in turn automatically includes the individual I/O header file and the <\fBavr/lock.h\fP> file. These other two files provides everything necessary to set the AVR lockbits. +.PP +\fBLockbit API\fP.RS 4 + +.RE +.PP +Each I/O header file may define up to 3 macros that controls what kinds of lockbits are available to the user. +.PP +If __LOCK_BITS_EXIST is defined, then two lock bits are available to the user and 3 mode settings are defined for these two bits. +.PP +If __BOOT_LOCK_BITS_0_EXIST is defined, then the two BLB0 lock bits are available to the user and 4 mode settings are defined for these two bits. +.PP +If __BOOT_LOCK_BITS_1_EXIST is defined, then the two BLB1 lock bits are available to the user and 4 mode settings are defined for these two bits. +.PP +If __BOOT_LOCK_APPLICATION_TABLE_BITS_EXIST is defined then two lock bits are available to set the locking mode for the Application Table Section (which is used in the XMEGA family). +.PP +If __BOOT_LOCK_APPLICATION_BITS_EXIST is defined then two lock bits are available to set the locking mode for the Application Section (which is used in the XMEGA family). +.PP +If __BOOT_LOCK_BOOT_BITS_EXIST is defined then two lock bits are available to set the locking mode for the Boot Loader Section (which is used in the XMEGA family). +.PP +The AVR lockbit modes have inverted values, logical 1 for an unprogrammed (disabled) bit and logical 0 for a programmed (enabled) bit. The defined macros for each individual lock bit represent this in their definition by a bit-wise inversion of a mask. For example, the LB_MODE_3 macro is defined as: +.PP +.nf + #define LB_MODE_3 (0xFC) +` + +.fi +.PP +.PP +To combine the lockbit mode macros together to represent a whole byte, use the bitwise AND operator, like so: +.PP +.nf + (LB_MODE_3 & BLB0_MODE_2) + +.fi +.PP +.PP +<\fBavr/lock.h\fP> also defines a macro that provides a default lockbit value: LOCKBITS_DEFAULT which is defined to be 0xFF. +.PP +See the AVR device specific datasheet for more details about these lock bits and the available mode settings. +.PP +A convenience macro, LOCKMEM, is defined as a GCC attribute for a custom-named section of '.lock'. +.PP +A convenience macro, LOCKBITS, is defined that declares a variable, __lock, of type unsigned char with the attribute defined by LOCKMEM. This variable allows the end user to easily set the lockbit data. +.PP +\fBNote:\fP +.RS 4 +If a device-specific I/O header file has previously defined LOCKMEM, then LOCKMEM is not redefined. If a device-specific I/O header file has previously defined LOCKBITS, then LOCKBITS is not redefined. LOCKBITS is currently known to be defined in the I/O header files for the XMEGA devices. +.RE +.PP +\fBAPI Usage Example\fP.RS 4 + +.RE +.PP +Putting all of this together is easy: +.PP +.PP +.nf + #include + + LOCKBITS = (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); + + int main(void) + { + return 0; + } +.fi +.PP +.PP +Or: +.PP +.PP +.nf + #include + + unsigned char __lock __attribute__((section ('.lock'))) = + (LB_MODE_1 & BLB0_MODE_3 & BLB1_MODE_4); + + int main(void) + { + return 0; + } +.fi +.PP +.PP +However there are a number of caveats that you need to be aware of to use this API properly. +.PP +Be sure to include <\fBavr/io.h\fP> to get all of the definitions for the API. The LOCKBITS macro defines a global variable to store the lockbit data. This variable is assigned to its own linker section. Assign the desired lockbit values immediately in the variable initialization. +.PP +The .lock section in the ELF file will get its values from the initial variable assignment ONLY. This means that you can NOT assign values to this variable in functions and the new values will not be put into the ELF .lock section. +.PP +The global variable is declared in the LOCKBITS macro has two leading underscores, which means that it is reserved for the 'implementation', meaning the library, so it will not conflict with a user-named variable. +.PP +You must initialize the lockbit variable to some meaningful value, even if it is the default value. This is because the lockbits default to a logical 1, meaning unprogrammed. Normal uninitialized data defaults to all locgial zeros. So it is vital that all lockbits are initialized, even with default data. If they are not, then the lockbits may not programmed to the desired settings and can possibly put your device into an unrecoverable state. +.PP +Be sure to have the -mmcu=\fIdevice\fP flag in your compile command line and your linker command line to have the correct device selected and to have the correct I/O header file included when you include <\fBavr/io.h\fP>. +.PP +You can print out the contents of the .lock section in the ELF file by using this command line: +.PP +.nf + avr-objdump -s -j .lock + +.fi +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_math.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_math.3 new file mode 100644 index 0000000..58421af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_math.3 @@ -0,0 +1,339 @@ +.TH ": Mathematics" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Mathematics \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file declares basic mathematics constants and functions. +.PP +\fBNotes:\fP.RS 4 + +.IP "\(bu" 2 +In order to access the functions delcared herein, it is usually also required to additionally link against the library \fClibm.a\fP. See also the related \fBFAQ entry\fP. +.IP "\(bu" 2 +Math functions do not raise exceptions and do not change the \fCerrno\fP variable. Therefore the majority of them are declared with const attribute, for better optimization by GCC. +.PP +.RE +.PP + +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBM_PI\fP 3.141592653589793238462643" +.br +.ti -1c +.RI "#define \fBM_SQRT2\fP 1.4142135623730950488016887" +.br +.ti -1c +.RI "#define \fBNAN\fP __builtin_nan('')" +.br +.ti -1c +.RI "#define \fBINFINITY\fP __builtin_inf()" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "double \fBcos\fP (double __x)" +.br +.ti -1c +.RI "double \fBfabs\fP (double __x)" +.br +.ti -1c +.RI "double \fBfmod\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBmodf\fP (double __x, double *__iptr)" +.br +.ti -1c +.RI "double \fBsin\fP (double __x)" +.br +.ti -1c +.RI "double \fBsqrt\fP (double __x)" +.br +.ti -1c +.RI "double \fBtan\fP (double __x)" +.br +.ti -1c +.RI "double \fBfloor\fP (double __x)" +.br +.ti -1c +.RI "double \fBceil\fP (double __x)" +.br +.ti -1c +.RI "double \fBfrexp\fP (double __x, int *__pexp)" +.br +.ti -1c +.RI "double \fBldexp\fP (double __x, int __exp)" +.br +.ti -1c +.RI "double \fBexp\fP (double __x)" +.br +.ti -1c +.RI "double \fBcosh\fP (double __x)" +.br +.ti -1c +.RI "double \fBsinh\fP (double __x)" +.br +.ti -1c +.RI "double \fBtanh\fP (double __x)" +.br +.ti -1c +.RI "double \fBacos\fP (double __x)" +.br +.ti -1c +.RI "double \fBasin\fP (double __x)" +.br +.ti -1c +.RI "double \fBatan\fP (double __x)" +.br +.ti -1c +.RI "double \fBatan2\fP (double __y, double __x)" +.br +.ti -1c +.RI "double \fBlog\fP (double __x)" +.br +.ti -1c +.RI "double \fBlog10\fP (double __x)" +.br +.ti -1c +.RI "double \fBpow\fP (double __x, double __y)" +.br +.ti -1c +.RI "int \fBisnan\fP (double __x)" +.br +.ti -1c +.RI "int \fBisinf\fP (double __x)" +.br +.ti -1c +.RI "double \fBsquare\fP (double __x)" +.br +.ti -1c +.RI "static double \fBcopysign\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBfdim\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBfma\fP (double __x, double __y, double __z)" +.br +.ti -1c +.RI "double \fBfmax\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBfmin\fP (double __x, double __y)" +.br +.ti -1c +.RI "int \fBsignbit\fP (double __x)" +.br +.ti -1c +.RI "double \fBtrunc\fP (double __x)" +.br +.ti -1c +.RI "static int \fBisfinite\fP (double __x)" +.br +.ti -1c +.RI "double \fBhypot\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBround\fP (double __x)" +.br +.ti -1c +.RI "long \fBlround\fP (double __x)" +.br +.ti -1c +.RI "long \fBlrint\fP (double __x)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define INFINITY __builtin_inf()" +.PP +INFINITY constant. +.SS "#define M_PI 3.141592653589793238462643" +.PP +The constant \fCpi\fP. +.SS "#define M_SQRT2 1.4142135623730950488016887" +.PP +The square root of 2. +.SS "#define NAN __builtin_nan('')" +.PP +NAN constant. +.SH "Function Documentation" +.PP +.SS "double acos (double __x)" +.PP +The \fBacos()\fP function computes the principal value of the arc cosine of \fI__x\fP. The returned value is in the range [0, pi] radians. A domain error occurs for arguments not in the range [-1, +1]. +.SS "double asin (double __x)" +.PP +The \fBasin()\fP function computes the principal value of the arc sine of \fI__x\fP. The returned value is in the range [-pi/2, pi/2] radians. A domain error occurs for arguments not in the range [-1, +1]. +.SS "double atan (double __x)" +.PP +The \fBatan()\fP function computes the principal value of the arc tangent of \fI__x\fP. The returned value is in the range [-pi/2, pi/2] radians. +.SS "double atan2 (double __y, double __x)" +.PP +The \fBatan2()\fP function computes the principal value of the arc tangent of \fI__y / __x\fP, using the signs of both arguments to determine the quadrant of the return value. The returned value is in the range [-pi, +pi] radians. +.SS "double ceil (double __x)" +.PP +The \fBceil()\fP function returns the smallest integral value greater than or equal to \fI__x\fP, expressed as a floating-point number. +.SS "static double copysign (double __x, double __y)\fC [static]\fP" +.PP +The \fBcopysign()\fP function returns \fI__x\fP but with the sign of \fI__y\fP. They work even if \fI__x\fP or \fI__y\fP are NaN or zero. +.SS "double cos (double __x)" +.PP +The \fBcos()\fP function returns the cosine of \fI__x\fP, measured in radians. +.SS "double cosh (double __x)" +.PP +The \fBcosh()\fP function returns the hyperbolic cosine of \fI__x\fP. +.SS "double exp (double __x)" +.PP +The \fBexp()\fP function returns the exponential value of \fI__x\fP. +.SS "double fabs (double __x)" +.PP +The \fBfabs()\fP function computes the absolute value of a floating-point number \fI__x\fP. +.SS "double fdim (double __x, double __y)" +.PP +The \fBfdim()\fP function returns \fImax(__x - __y, 0)\fP. If \fI__x\fP or \fI__y\fP or both are NaN, NaN is returned. +.SS "double floor (double __x)" +.PP +The \fBfloor()\fP function returns the largest integral value less than or equal to \fI__x\fP, expressed as a floating-point number. +.SS "double fma (double __x, double __y, double __z)" +.PP +The \fBfma()\fP function performs floating-point multiply-add. This is the operation \fI(__x * __y) + __z\fP, but the intermediate result is not rounded to the destination type. This can sometimes improve the precision of a calculation. +.SS "double fmax (double __x, double __y)" +.PP +The \fBfmax()\fP function returns the greater of the two values \fI__x\fP and \fI__y\fP. If an argument is NaN, the other argument is returned. If both arguments are NaN, NaN is returned. +.SS "double fmin (double __x, double __y)" +.PP +The \fBfmin()\fP function returns the lesser of the two values \fI__x\fP and \fI__y\fP. If an argument is NaN, the other argument is returned. If both arguments are NaN, NaN is returned. +.SS "double fmod (double __x, double __y)" +.PP +The function \fBfmod()\fP returns the floating-point remainder of \fI__x / __y\fP. +.SS "double frexp (double __x, int * __pexp)" +.PP +The \fBfrexp()\fP function breaks a floating-point number into a normalized fraction and an integral power of 2. It stores the integer in the \fCint\fP object pointed to by \fI__pexp\fP. +.PP +If \fI__x\fP is a normal float point number, the \fBfrexp()\fP function returns the value \fCv\fP, such that \fCv\fP has a magnitude in the interval [1/2, 1) or zero, and \fI__x\fP equals \fCv\fP times 2 raised to the power \fI__pexp\fP. If \fI__x\fP is zero, both parts of the result are zero. If \fI__x\fP is not a finite number, the \fBfrexp()\fP returns \fI__x\fP as is and stores 0 by \fI__pexp\fP. +.PP +\fBNote:\fP +.RS 4 +This implementation permits a zero pointer as a directive to skip a storing the exponent. +.RE +.PP + +.SS "double hypot (double __x, double __y)" +.PP +The \fBhypot()\fP function returns \fIsqrt(__x*__x + __y*__y)\fP. This is the length of the hypotenuse of a right triangle with sides of length \fI__x\fP and \fI__y\fP, or the distance of the point (\fI__x\fP, \fI__y\fP) from the origin. Using this function instead of the direct formula is wise, since the error is much smaller. No underflow with small \fI__x\fP and \fI__y\fP. No overflow if result is in range. +.SS "static int isfinite (double __x)\fC [static]\fP" +.PP +The \fBisfinite()\fP function returns a nonzero value if \fI__x\fP is finite: not plus or minus infinity, and not NaN. +.SS "int isinf (double __x)" +.PP +The function \fBisinf()\fP returns 1 if the argument \fI__x\fP is positive infinity, -1 if \fI__x\fP is negative infinity, and 0 otherwise. +.SS "int isnan (double __x)" +.PP +The function \fBisnan()\fP returns 1 if the argument \fI__x\fP represents a 'not-a-number' (NaN) object, otherwise 0. +.SS "double ldexp (double __x, int __exp)" +.PP +The \fBldexp()\fP function multiplies a floating-point number by an integral power of 2. +.PP +The \fBldexp()\fP function returns the value of \fI__x\fP times 2 raised to the power \fI__exp\fP. +.SS "double log (double __x)" +.PP +The \fBlog()\fP function returns the natural logarithm of argument \fI__x\fP. +.SS "double log10 (double __x)" +.PP +The \fBlog10()\fP function returns the logarithm of argument \fI__x\fP to base 10. +.SS "long lrint (double __x)" +.PP +The \fBlrint()\fP function rounds \fI__x\fP to the nearest integer, rounding the halfway cases to the even integer direction. (That is both 1.5 and 2.5 values are rounded to 2). This function is similar to rint() function, but it differs in type of return value and in that an overflow is possible. +.PP +\fBReturns:\fP +.RS 4 +The rounded long integer value. If \fI__x\fP is not a finite number or an overflow was, this realization returns the \fCLONG_MIN\fP value (0x80000000). +.RE +.PP + +.SS "long lround (double __x)" +.PP +The \fBlround()\fP function rounds \fI__x\fP to the nearest integer, but rounds halfway cases away from zero (instead of to the nearest even integer). This function is similar to \fBround()\fP function, but it differs in type of return value and in that an overflow is possible. +.PP +\fBReturns:\fP +.RS 4 +The rounded long integer value. If \fI__x\fP is not a finite number or an overflow was, this realization returns the \fCLONG_MIN\fP value (0x80000000). +.RE +.PP + +.SS "double modf (double __x, double * __iptr)" +.PP +The \fBmodf()\fP function breaks the argument \fI__x\fP into integral and fractional parts, each of which has the same sign as the argument. It stores the integral part as a double in the object pointed to by \fI__iptr\fP. +.PP +The \fBmodf()\fP function returns the signed fractional part of \fI__x\fP. +.PP +\fBNote:\fP +.RS 4 +This implementation skips writing by zero pointer. +.RE +.PP + +.SS "double pow (double __x, double __y)" +.PP +The function \fBpow()\fP returns the value of \fI__x\fP to the exponent \fI__y\fP. +.SS "double round (double __x)" +.PP +The \fBround()\fP function rounds \fI__x\fP to the nearest integer, but rounds halfway cases away from zero (instead of to the nearest even integer). Overflow is impossible. +.PP +\fBReturns:\fP +.RS 4 +The rounded value. If \fI__x\fP is an integral or infinite, \fI__x\fP itself is returned. If \fI__x\fP is \fCNaN\fP, then \fCNaN\fP is returned. +.RE +.PP + +.SS "int signbit (double __x)" +.PP +The \fBsignbit()\fP function returns a nonzero value if the value of \fI__x\fP has its sign bit set. This is not the same as `\fI__x\fP < 0.0', because IEEE 754 floating point allows zero to be signed. The comparison `-0.0 < 0.0' is false, but `signbit (-0.0)' will return a nonzero value. +.PP +\fBNote:\fP +.RS 4 +This implementation returns 1 if sign bit is set. +.RE +.PP + +.SS "double sin (double __x)" +.PP +The \fBsin()\fP function returns the sine of \fI__x\fP, measured in radians. +.SS "double sinh (double __x)" +.PP +The \fBsinh()\fP function returns the hyperbolic sine of \fI__x\fP. +.SS "double sqrt (double __x)" +.PP +The \fBsqrt()\fP function returns the non-negative square root of \fI__x\fP. +.SS "double square (double __x)" +.PP +The function \fBsquare()\fP returns \fI__x * __x\fP. +.PP +\fBNote:\fP +.RS 4 +This function does not belong to the C standard definition. +.RE +.PP + +.SS "double tan (double __x)" +.PP +The \fBtan()\fP function returns the tangent of \fI__x\fP, measured in radians. +.SS "double tanh (double __x)" +.PP +The \fBtanh()\fP function returns the hyperbolic tangent of \fI__x\fP. +.SS "double trunc (double __x)" +.PP +The \fBtrunc()\fP function rounds \fI__x\fP to the nearest integer not larger in absolute value. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_pgmspace.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_pgmspace.3 new file mode 100644 index 0000000..e501be2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_pgmspace.3 @@ -0,0 +1,675 @@ +.TH ": Program Space Utilities" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Program Space Utilities \- +.SH "Detailed Description" +.PP +.PP +.nf + #include + #include +.fi +.PP +.PP +The functions in this module provide interfaces for a program to access data stored in program space (flash memory) of the device. In order to use these functions, the target device must support either the \fCLPM\fP or \fCELPM\fP instructions. +.PP +\fBNote:\fP +.RS 4 +These functions are an attempt to provide some compatibility with header files that come with IAR C, to make porting applications between different compilers easier. This is not 100% compatibility though (GCC does not have full support for multiple address spaces yet). +.PP +If you are working with strings which are completely based in ram, use the standard string functions described in \fB: Strings\fP. +.PP +If possible, put your constant tables in the lower 64 KB and use \fBpgm_read_byte_near()\fP or \fBpgm_read_word_near()\fP instead of \fBpgm_read_byte_far()\fP or \fBpgm_read_word_far()\fP since it is more efficient that way, and you can still use the upper 64K for executable code. All functions that are suffixed with a \fC_P\fP \fIrequire\fP their arguments to be in the lower 64 KB of the flash ROM, as they do not use ELPM instructions. This is normally not a big concern as the linker setup arranges any program space constants declared using the macros from this header file so they are placed right after the interrupt vectors, and in front of any executable code. However, it can become a problem if there are too many of these constants, or for bootloaders on devices with more than 64 KB of ROM. \fIAll these functions will not work in that situation.\fP +.RE +.PP + +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBPROGMEM\fP __ATTR_PROGMEM__" +.br +.ti -1c +.RI "#define \fBPSTR\fP(s) ((const PROGMEM char *)(s))" +.br +.ti -1c +.RI "#define \fBpgm_read_byte_near\fP(address_short) __LPM((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fBpgm_read_word_near\fP(address_short) __LPM_word((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fBpgm_read_dword_near\fP(address_short) __LPM_dword((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fBpgm_read_float_near\fP(address_short) __LPM_float((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fBpgm_read_byte_far\fP(address_long) __ELPM((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_word_far\fP(address_long) __ELPM_word((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_dword_far\fP(address_long) __ELPM_dword((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_float_far\fP(address_long) __ELPM_float((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_byte\fP(address_short) pgm_read_byte_near(address_short)" +.br +.ti -1c +.RI "#define \fBpgm_read_word\fP(address_short) pgm_read_word_near(address_short)" +.br +.ti -1c +.RI "#define \fBpgm_read_dword\fP(address_short) pgm_read_dword_near(address_short)" +.br +.ti -1c +.RI "#define \fBpgm_read_float\fP(address_short) pgm_read_float_near(address_short)" +.br +.ti -1c +.RI "#define \fBPGM_P\fP const \fBprog_char\fP *" +.br +.ti -1c +.RI "#define \fBPGM_VOID_P\fP const \fBprog_void\fP *" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef void PROGMEM \fBprog_void\fP" +.br +.ti -1c +.RI "typedef char PROGMEM \fBprog_char\fP" +.br +.ti -1c +.RI "typedef unsigned char PROGMEM \fBprog_uchar\fP" +.br +.ti -1c +.RI "typedef \fBint8_t\fP PROGMEM \fBprog_int8_t\fP" +.br +.ti -1c +.RI "typedef \fBuint8_t\fP PROGMEM \fBprog_uint8_t\fP" +.br +.ti -1c +.RI "typedef \fBint16_t\fP PROGMEM \fBprog_int16_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP PROGMEM \fBprog_uint16_t\fP" +.br +.ti -1c +.RI "typedef \fBint32_t\fP PROGMEM \fBprog_int32_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP PROGMEM \fBprog_uint32_t\fP" +.br +.ti -1c +.RI "typedef \fBint64_t\fP PROGMEM \fBprog_int64_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP PROGMEM \fBprog_uint64_t\fP" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PGM_VOID_P \fBmemchr_P\fP (PGM_VOID_P, int __val, size_t __len)" +.br +.ti -1c +.RI "int \fBmemcmp_P\fP (const void *, PGM_VOID_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemcpy_P\fP (void *, PGM_VOID_P, size_t)" +.br +.ti -1c +.RI "PGM_VOID_P \fBmemrchr_P\fP (PGM_VOID_P, int __val, size_t __len)" +.br +.ti -1c +.RI "int \fBstrcasecmp_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcat_P\fP (char *, PGM_P)" +.br +.ti -1c +.RI "PGM_P \fBstrchr_P\fP (PGM_P, int __val)" +.br +.ti -1c +.RI "PGM_P \fBstrchrnul_P\fP (PGM_P, int __val)" +.br +.ti -1c +.RI "int \fBstrcmp_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcpy_P\fP (char *, PGM_P)" +.br +.ti -1c +.RI "size_t \fBstrcspn_P\fP (const char *__s, PGM_P __reject) __ATTR_PURE__" +.br +.ti -1c +.RI "size_t \fBstrlcat_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlcpy_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlen_P\fP (PGM_P)" +.br +.ti -1c +.RI "int \fBstrncasecmp_P\fP (const char *, PGM_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrncat_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "int \fBstrncmp_P\fP (const char *, PGM_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrncpy_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "size_t \fBstrnlen_P\fP (PGM_P, size_t)" +.br +.ti -1c +.RI "char * \fBstrpbrk_P\fP (const char *__s, PGM_P __accept) __ATTR_PURE__" +.br +.ti -1c +.RI "PGM_P \fBstrrchr_P\fP (PGM_P, int __val)" +.br +.ti -1c +.RI "char * \fBstrsep_P\fP (char **__sp, PGM_P __delim)" +.br +.ti -1c +.RI "size_t \fBstrspn_P\fP (const char *__s, PGM_P __accept) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrstr_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemmem_P\fP (const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcasestr_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define PGM_P const \fBprog_char\fP *" +.PP +Used to declare a variable that is a pointer to a string in program space. +.SS "#define pgm_read_byte(address_short) pgm_read_byte_near(address_short)" +.PP +Read a byte from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_byte_far(address_long) __ELPM((\fBuint32_t\fP)(address_long))" +.PP +Read a byte from the program space with a 32-bit (far) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_byte_near(address_short) __LPM((\fBuint16_t\fP)(address_short))" +.PP +Read a byte from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_dword(address_short) pgm_read_dword_near(address_short)" +.PP +Read a double word from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_dword_far(address_long) __ELPM_dword((\fBuint32_t\fP)(address_long))" +.PP +Read a double word from the program space with a 32-bit (far) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_dword_near(address_short) __LPM_dword((\fBuint16_t\fP)(address_short))" +.PP +Read a double word from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_float(address_short) pgm_read_float_near(address_short)" +.PP +Read a float from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_float_far(address_long) __ELPM_float((\fBuint32_t\fP)(address_long))" +.PP +Read a float from the program space with a 32-bit (far) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_float_near(address_short) __LPM_float((\fBuint16_t\fP)(address_short))" +.PP +Read a float from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_word(address_short) pgm_read_word_near(address_short)" +.PP +Read a word from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_word_far(address_long) __ELPM_word((\fBuint32_t\fP)(address_long))" +.PP +Read a word from the program space with a 32-bit (far) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define pgm_read_word_near(address_short) __LPM_word((\fBuint16_t\fP)(address_short))" +.PP +Read a word from the program space with a 16-bit (near) address. +.PP +\fBNote:\fP +.RS 4 +The address is a byte address. The address is in the program space. +.RE +.PP + +.SS "#define PGM_VOID_P const \fBprog_void\fP *" +.PP +Used to declare a generic pointer to an object in program space. +.SS "#define PROGMEM __ATTR_PROGMEM__" +.PP +Attribute to use in order to declare an object being located in flash ROM. +.SS "#define PSTR(s) ((const PROGMEM char *)(s))" +.PP +Used to declare a static pointer to a string in program space. +.SH "Typedef Documentation" +.PP +.SS "\fBprog_char\fP" +.PP +Type of a 'char' object located in flash ROM. +.SS "\fBprog_int16_t\fP" +.PP +Type of an 'int16_t' object located in flash ROM. +.SS "\fBprog_int32_t\fP" +.PP +Type of an 'int32_t' object located in flash ROM. +.SS "\fBprog_int64_t\fP" +.PP +Type of an 'int64_t' object located in flash ROM. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "\fBprog_int8_t\fP" +.PP +Type of an 'int8_t' object located in flash ROM. +.SS "\fBprog_uchar\fP" +.PP +Type of an 'unsigned char' object located in flash ROM. +.SS "\fBprog_uint16_t\fP" +.PP +Type of an 'uint16_t' object located in flash ROM. +.SS "\fBprog_uint32_t\fP" +.PP +Type of an 'uint32_t' object located in flash ROM. +.SS "\fBprog_uint64_t\fP" +.PP +Type of an 'uint64_t' object located in flash ROM. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "\fBprog_uint8_t\fP" +.PP +Type of an 'uint8_t' object located in flash ROM. +.SS "\fBprog_void\fP" +.PP +Type of a 'void' object located in flash ROM. Does not make much sense by itself, but can be used to declare a 'void *' object in flash ROM. +.SH "Function Documentation" +.PP +.SS "PGM_VOID_P memchr_P (PGM_VOID_P s, int val, size_t len)" +.PP +Scan flash memory for a character. +.PP +The \fBmemchr_P()\fP function scans the first \fClen\fP bytes of the flash memory area pointed to by \fCs\fP for the character \fCval\fP. The first byte to match \fCval\fP (interpreted as an unsigned character) stops the operation. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemchr_P()\fP function returns a pointer to the matching byte or \fCNULL\fP if the character does not occur in the given memory area. +.RE +.PP + +.SS "int memcmp_P (const void * s1, PGM_VOID_P s2, size_t len)" +.PP +Compare memory areas. +.PP +The \fBmemcmp_P()\fP function compares the first \fClen\fP bytes of the memory areas \fCs1\fP and flash \fCs2\fP. The comparision is performed using unsigned char operations. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemcmp_P()\fP function returns an integer less than, equal to, or greater than zero if the first \fClen\fP bytes of \fCs1\fP is found, respectively, to be less than, to match, or be greater than the first \fClen\fP bytes of \fCs2\fP. +.RE +.PP + +.SS "void * memcpy_P (void * dest, PGM_VOID_P src, size_t n)" +.PP +The \fBmemcpy_P()\fP function is similar to \fBmemcpy()\fP, except the src string resides in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemcpy_P()\fP function returns a pointer to dest. +.RE +.PP + +.SS "void * memmem_P (const void * s1, size_t len1, PGM_VOID_P s2, size_t len2)" +.PP +The \fBmemmem_P()\fP function is similar to \fBmemmem()\fP except that \fCs2\fP is pointer to a string in program space. +.SS "PGM_VOID_P memrchr_P (PGM_VOID_P src, int val, size_t len)" +.PP +The \fBmemrchr_P()\fP function is like the \fBmemchr_P()\fP function, except that it searches backwards from the end of the \fClen\fP bytes pointed to by \fCsrc\fP instead of forwards from the front. (Glibc, GNU extension.) +.PP +\fBReturns:\fP +.RS 4 +The \fBmemrchr_P()\fP function returns a pointer to the matching byte or \fCNULL\fP if the character does not occur in the given memory area. +.RE +.PP + +.SS "int strcasecmp_P (const char * s1, PGM_P s2)" +.PP +Compare two strings ignoring case. +.PP +The \fBstrcasecmp_P()\fP function compares the two strings \fCs1\fP and \fCs2\fP, ignoring the case of the characters. +.PP +\fBParameters:\fP +.RS 4 +\fIs1\fP A pointer to a string in the devices SRAM. +.br +\fIs2\fP A pointer to a string in the devices Flash. +.RE +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcasecmp_P()\fP function returns an integer less than, equal to, or greater than zero if \fCs1\fP is found, respectively, to be less than, to match, or be greater than \fCs2\fP. A consequence of the ordering used by \fBstrcasecmp_P()\fP is that if \fCs1\fP is an initial substring of \fCs2\fP, then \fCs1\fP is considered to be 'less than' \fCs2\fP. +.RE +.PP + +.SS "char * strcasestr_P (const char * s1, PGM_P s2)" +.PP +This funtion is similar to \fBstrcasestr()\fP except that \fCs2\fP is pointer to a string in program space. +.SS "char * strcat_P (char * dest, PGM_P src)" +.PP +The \fBstrcat_P()\fP function is similar to \fBstrcat()\fP except that the \fIsrc\fP string must be located in program space (flash). +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcat()\fP function returns a pointer to the resulting string \fIdest\fP. +.RE +.PP + +.SS "PGM_P strchr_P (PGM_P s, int val)" +.PP +Locate character in program space string. +.PP +The \fBstrchr_P()\fP function locates the first occurrence of \fCval\fP (converted to a char) in the string pointed to by \fCs\fP in program space. The terminating null character is considered to be part of the string. +.PP +The \fBstrchr_P()\fP function is similar to \fBstrchr()\fP except that \fCs\fP is pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrchr_P()\fP function returns a pointer to the matched character or \fCNULL\fP if the character is not found. +.RE +.PP + +.SS "PGM_P strchrnul_P (PGM_P s, int c)" +.PP +The \fBstrchrnul_P()\fP function is like \fBstrchr_P()\fP except that if \fCc\fP is not found in \fCs\fP, then it returns a pointer to the null byte at the end of \fCs\fP, rather than \fCNULL\fP. (Glibc, GNU extension.) +.PP +\fBReturns:\fP +.RS 4 +The \fBstrchrnul_P()\fP function returns a pointer to the matched character, or a pointer to the null byte at the end of \fCs\fP (i.e., \fCs+strlen\fP(s)) if the character is not found. +.RE +.PP + +.SS "int strcmp_P (const char * s1, PGM_P s2)" +.PP +The \fBstrcmp_P()\fP function is similar to \fBstrcmp()\fP except that \fCs2\fP is pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcmp_P()\fP function returns an integer less than, equal to, or greater than zero if \fCs1\fP is found, respectively, to be less than, to match, or be greater than \fCs2\fP. A consequence of the ordering used by \fBstrcmp_P()\fP is that if \fCs1\fP is an initial substring of \fCs2\fP, then \fCs1\fP is considered to be 'less than' \fCs2\fP. +.RE +.PP + +.SS "char * strcpy_P (char * dest, PGM_P src)" +.PP +The \fBstrcpy_P()\fP function is similar to \fBstrcpy()\fP except that src is a pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcpy_P()\fP function returns a pointer to the destination string dest. +.RE +.PP + +.SS "size_t strcspn_P (const char * s, PGM_P reject)" +.PP +The \fBstrcspn_P()\fP function calculates the length of the initial segment of \fCs\fP which consists entirely of characters not in \fCreject\fP. This function is similar to \fBstrcspn()\fP except that \fCreject\fP is a pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcspn_P()\fP function returns the number of characters in the initial segment of \fCs\fP which are not in the string \fCreject\fP. The terminating zero is not considered as a part of string. +.RE +.PP + +.SS "size_t strlcat_P (char * dst, PGM_P, size_t siz)" +.PP +Concatenate two strings. +.PP +The \fBstrlcat_P()\fP function is similar to \fBstrlcat()\fP, except that the \fIsrc\fP string must be located in program space (flash). +.PP +Appends src to string dst of size siz (unlike \fBstrncat()\fP, siz is the full size of dst, not space left). At most siz-1 characters will be copied. Always NULL terminates (unless siz <= strlen(dst)). +.PP +\fBReturns:\fP +.RS 4 +The \fBstrlcat_P()\fP function returns strlen(src) + MIN(siz, strlen(initial dst)). If retval >= siz, truncation occurred. +.RE +.PP + +.SS "size_t strlcpy_P (char * dst, PGM_P, size_t siz)" +.PP +Copy a string from progmem to RAM. +.PP +Copy src to string dst of size siz. At most siz-1 characters will be copied. Always NULL terminates (unless siz == 0). +.PP +\fBReturns:\fP +.RS 4 +The \fBstrlcpy_P()\fP function returns strlen(src). If retval >= siz, truncation occurred. +.RE +.PP + +.SS "size_t strlen_P (PGM_P src)" +.PP +The \fBstrlen_P()\fP function is similar to \fBstrlen()\fP, except that src is a pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrlen()\fP function returns the number of characters in src. +.RE +.PP + +.SS "int strncasecmp_P (const char * s1, PGM_P s2, size_t n)" +.PP +Compare two strings ignoring case. +.PP +The \fBstrncasecmp_P()\fP function is similar to \fBstrcasecmp_P()\fP, except it only compares the first \fCn\fP characters of \fCs1\fP. +.PP +\fBParameters:\fP +.RS 4 +\fIs1\fP A pointer to a string in the devices SRAM. +.br +\fIs2\fP A pointer to a string in the devices Flash. +.br +\fIn\fP The maximum number of bytes to compare. +.RE +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncasecmp_P()\fP function returns an integer less than, equal to, or greater than zero if \fCs1\fP (or the first \fCn\fP bytes thereof) is found, respectively, to be less than, to match, or be greater than \fCs2\fP. A consequence of the ordering used by \fBstrncasecmp_P()\fP is that if \fCs1\fP is an initial substring of \fCs2\fP, then \fCs1\fP is considered to be 'less than' \fCs2\fP. +.RE +.PP + +.SS "char * strncat_P (char * dest, PGM_P src, size_t len)" +.PP +Concatenate two strings. +.PP +The \fBstrncat_P()\fP function is similar to \fBstrncat()\fP, except that the \fIsrc\fP string must be located in program space (flash). +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncat_P()\fP function returns a pointer to the resulting string dest. +.RE +.PP + +.SS "int strncmp_P (const char * s1, PGM_P s2, size_t n)" +.PP +The \fBstrncmp_P()\fP function is similar to \fBstrcmp_P()\fP except it only compares the first (at most) n characters of s1 and s2. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncmp_P()\fP function returns an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2. +.RE +.PP + +.SS "char * strncpy_P (char * dest, PGM_P src, size_t n)" +.PP +The \fBstrncpy_P()\fP function is similar to \fBstrcpy_P()\fP except that not more than n bytes of src are copied. Thus, if there is no null byte among the first n bytes of src, the result will not be null-terminated. +.PP +In the case where the length of src is less than that of n, the remainder of dest will be padded with nulls. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncpy_P()\fP function returns a pointer to the destination string dest. +.RE +.PP + +.SS "size_t strnlen_P (PGM_P src, size_t len)" +.PP +Determine the length of a fixed-size string. +.PP +The \fBstrnlen_P()\fP function is similar to \fBstrnlen()\fP, except that \fCsrc\fP is a pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The strnlen_P function returns strlen_P(src), if that is less than \fClen\fP, or \fClen\fP if there is no '\\0' character among the first \fClen\fP characters pointed to by \fCsrc\fP. +.RE +.PP + +.SS "char * strpbrk_P (const char * s, PGM_P accept)" +.PP +The \fBstrpbrk_P()\fP function locates the first occurrence in the string \fCs\fP of any of the characters in the flash string \fCaccept\fP. This function is similar to \fBstrpbrk()\fP except that \fCaccept\fP is a pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrpbrk_P()\fP function returns a pointer to the character in \fCs\fP that matches one of the characters in \fCaccept\fP, or \fCNULL\fP if no such character is found. The terminating zero is not considered as a part of string: if one or both args are empty, the result will \fCNULL\fP. +.RE +.PP + +.SS "PGM_P strrchr_P (PGM_P s, int val)" +.PP +Locate character in string. +.PP +The \fBstrrchr_P()\fP function returns a pointer to the last occurrence of the character \fCval\fP in the flash string \fCs\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrrchr_P()\fP function returns a pointer to the matched character or \fCNULL\fP if the character is not found. +.RE +.PP + +.SS "char * strsep_P (char ** sp, PGM_P delim)" +.PP +Parse a string into tokens. +.PP +The \fBstrsep_P()\fP function locates, in the string referenced by \fC*sp\fP, the first occurrence of any character in the string \fCdelim\fP (or the terminating '\\0' character) and replaces it with a '\\0'. The location of the next character after the delimiter character (or \fCNULL\fP, if the end of the string was reached) is stored in \fC*sp\fP. An ``empty'' field, i.e. one caused by two adjacent delimiter characters, can be detected by comparing the location referenced by the pointer returned in \fC*sp\fP to '\\0'. This function is similar to \fBstrsep()\fP except that \fCdelim\fP is a pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrsep_P()\fP function returns a pointer to the original value of \fC*sp\fP. If \fC*sp\fP is initially \fCNULL\fP, \fBstrsep_P()\fP returns \fCNULL\fP. +.RE +.PP + +.SS "size_t strspn_P (const char * s, PGM_P accept)" +.PP +The \fBstrspn_P()\fP function calculates the length of the initial segment of \fCs\fP which consists entirely of characters in \fCaccept\fP. This function is similar to \fBstrspn()\fP except that \fCaccept\fP is a pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrspn_P()\fP function returns the number of characters in the initial segment of \fCs\fP which consist only of characters from \fCaccept\fP. The terminating zero is not considered as a part of string. +.RE +.PP + +.SS "char * strstr_P (const char * s1, PGM_P s2)" +.PP +Locate a substring. +.PP +The \fBstrstr_P()\fP function finds the first occurrence of the substring \fCs2\fP in the string \fCs1\fP. The terminating '\\0' characters are not compared. The \fBstrstr_P()\fP function is similar to \fBstrstr()\fP except that \fCs2\fP is pointer to a string in program space. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrstr_P()\fP function returns a pointer to the beginning of the substring, or NULL if the substring is not found. If \fCs2\fP points to a string of zero length, the function returns \fCs1\fP. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_power.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_power.3 new file mode 100644 index 0000000..b45d9cf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_power.3 @@ -0,0 +1,151 @@ +.TH ": Power Reduction Management" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Power Reduction Management \- .PP +.nf + #include +.fi +.PP +.PP +Many AVRs contain a Power Reduction Register (PRR) or Registers (PRRx) that allow you to reduce power consumption by disabling or enabling various on-board peripherals as needed. +.PP +There are many macros in this header file that provide an easy interface to enable or disable on-board peripherals to reduce power. See the table below. +.PP +\fBNote:\fP +.RS 4 +Not all AVR devices have a Power Reduction Register (for example the ATmega128). On those devices without a Power Reduction Register, these macros are not available. +.PP +Not all AVR devices contain the same peripherals (for example, the LCD interface), or they will be named differently (for example, USART and USART0). Please consult your device's datasheet, or the header file, to find out which macros are applicable to your device. +.RE +.PP + \fBPower Macro\fP \fBDescription\fP \fBApplicable for device\fP +.PP +power_adc_enable() Enable the Analog to Digital Converter module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_adc_disable() Disable the Analog to Digital Converter module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_lcd_enable() Enable the LCD module. ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490 +.PP +power_lcd_disable(). Disable the LCD module. ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490 +.PP +power_psc0_enable() Enable the Power Stage Controller 0 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_psc0_disable() Disable the Power Stage Controller 0 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_psc1_enable() Enable the Power Stage Controller 1 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_psc1_disable() Disable the Power Stage Controller 1 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_psc2_enable() Enable the Power Stage Controller 2 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_psc2_disable() Disable the Power Stage Controller 2 module. AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_spi_enable() Enable the Serial Peripheral Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168 +.PP +power_spi_disable() Disable the Serial Peripheral Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168 +.PP +power_timer0_enable() Enable the Timer 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM216, AT90PWM316, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_timer0_disable() Disable the Timer 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_timer1_enable() Enable the Timer 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_timer1_disable() Disable the Timer 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_timer2_enable() Enable the Timer 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168 +.PP +power_timer2_disable() Disable the Timer 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168 +.PP +power_timer3_enable() Enable the Timer 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287 +.PP +power_timer3_disable() Disable the Timer 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287 +.PP +power_timer4_enable() Enable the Timer 4 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_timer4_disable() Disable the Timer 4 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_timer5_enable() Enable the Timer 5 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_timer5_disable() Disable the Timer 5 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_twi_enable() Enable the Two Wire Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168 +.PP +power_twi_disable() Disable the Two Wire Interface module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168 +.PP +power_usart_enable() Enable the USART module. AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_usart_disable() Disable the USART module. AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B +.PP +power_usart0_enable() Enable the USART 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168 +.PP +power_usart0_disable() Disable the USART 0 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega48, ATmega88, ATmega168 +.PP +power_usart1_enable() Enable the USART 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P +.PP +power_usart1_disable() Disable the USART 1 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATmega164P, ATmega324P +.PP +power_usart2_enable() Enable the USART 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_usart2_disable() Disable the USART 2 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_usart3_enable() Enable the USART 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_usart3_disable() Disable the USART 3 module. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561 +.PP +power_usb_enable() Enable the USB module. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287 +.PP +power_usb_disable() Disable the USB module. AT90USB646, AT90USB647, AT90USB1286, AT90USB1287 +.PP +power_usi_enable() Enable the Universal Serial Interface module. ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_usi_disable() Disable the Universal Serial Interface module. ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_vadc_enable() Enable the Voltage ADC module. ATmega406 +.PP +power_vadc_disable() Disable the Voltage ADC module. ATmega406 +.PP +power_all_enable() Enable all modules. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +power_all_disable() Disable all modules. ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316, ATmega165, ATmega165P, ATmega325, ATmega3250, ATmega645, ATmega6450, ATmega169, ATmega169P, ATmega329, ATmega3290, ATmega649, ATmega6490, ATmega164P, ATmega324P, ATmega644, ATmega406, ATmega48, ATmega88, ATmega168, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861 +.PP +Some of the newer AVRs contain a System Clock Prescale Register (CLKPR) that allows you to decrease the system clock frequency and the power consumption when the need for processing power is low. Below are two macros and an enumerated type that can be used to interface to the Clock Prescale Register. +.PP +\fBNote:\fP +.RS 4 +Not all AVR devices have a Clock Prescale Register. On those devices without a Clock Prescale Register, these macros are not available. +.RE +.PP +.PP +.nf +typedef enum +{ + clock_div_1 = 0, + clock_div_2 = 1, + clock_div_4 = 2, + clock_div_8 = 3, + clock_div_16 = 4, + clock_div_32 = 5, + clock_div_64 = 6, + clock_div_128 = 7, + clock_div_256 = 8 +} clock_div_t; +.fi +.PP + Clock prescaler setting enumerations. +.PP +.PP +.nf + clock_prescale_set(x) +.fi +.PP + Set the clock prescaler register select bits, selecting a system clock division setting. They type of x is clock_div_t. +.PP +.PP +.nf + clock_prescale_get() +.fi +.PP + Gets and returns the clock prescaler register setting. The return type is clock_div_t. +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sfr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sfr.3 new file mode 100644 index 0000000..7d4acf3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sfr.3 @@ -0,0 +1,120 @@ +.TH ": Special function registers" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Special function registers \- +.SH "Detailed Description" +.PP +When working with microcontrollers, many tasks usually consist of controlling internal peripherals, or external peripherals that are connected to the device. The entire IO address space is made available as \fImemory-mapped IO\fP, i.e. it can be accessed using all the MCU instructions that are applicable to normal data memory. For most AVR devices, the IO register space is mapped into the data memory address space with an offset of 0x20 since the bottom of this space is reserved for direct access to the MCU registers. (Actual SRAM is available only behind the IO register area, starting at some specific address depending on the device.) +.PP +For example the user can access memory-mapped IO registers as if they were globally defined variables like this: +.PP +.PP +.nf + PORTA = 0x33; + unsigned char foo = PINA; +.fi +.PP +.PP +The compiler will choose the correct instruction sequence to generate based on the address of the register being accessed. +.PP +The advantage of using the memory-mapped registers in C programs is that it makes the programs more portable to other C compilers for the AVR platform. +.PP +Note that special care must be taken when accessing some of the 16-bit timer IO registers where access from both the main program and within an interrupt context can happen. See \fBWhy do some 16-bit timer registers sometimes get trashed?\fP. +.PP +\fBPorting programs that use the deprecated sbi/cbi macros\fP.RS 4 + +.RE +.PP +Access to the AVR single bit set and clear instructions are provided via the standard C bit manipulation commands. The sbi and cbi macros are no longer directly supported. sbi (sfr,bit) can be replaced by sfr |= \fB_BV(bit)\fP . +.PP +i.e.: \fBsbi(PORTB, PB1)\fP; is now PORTB |= \fB_BV(PB1)\fP; +.PP +This actually is more flexible than having sbi directly, as the optimizer will use a hardware sbi if appropriate, or a read/or/write operation if not appropriate. You do not need to keep track of which registers sbi/cbi will operate on. +.PP +Likewise, cbi (sfr,bit) is now sfr &= ~(\fB_BV(bit)\fP); +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "\fBAdditional notes from \fP" +.br +.in -1c +.SS "Bit manipulation" + +.in +1c +.ti -1c +.RI "#define \fB_BV\fP(bit) (1 << (bit))" +.br +.in -1c +.SS "IO register bit manipulation" + +.in +1c +.ti -1c +.RI "#define \fBbit_is_set\fP(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit))" +.br +.ti -1c +.RI "#define \fBbit_is_clear\fP(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit)))" +.br +.ti -1c +.RI "#define \fBloop_until_bit_is_set\fP(sfr, bit) do { } while (bit_is_clear(sfr, bit))" +.br +.ti -1c +.RI "#define \fBloop_until_bit_is_clear\fP(sfr, bit) do { } while (bit_is_set(sfr, bit))" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define _BV(bit) (1 << (bit))" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Converts a bit number into a byte value. +.PP +\fBNote:\fP +.RS 4 +The bit shift is performed by the compiler which then inserts the result into the code. Thus, there is no run-time overhead when using \fB_BV()\fP. +.RE +.PP + +.SS "#define bit_is_clear(sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit)))" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Test whether bit \fCbit\fP in IO register \fCsfr\fP is clear. This will return non-zero if the bit is clear, and a 0 if the bit is set. +.SS "#define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit))" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Test whether bit \fCbit\fP in IO register \fCsfr\fP is set. This will return a 0 if the bit is clear, and non-zero if the bit is set. +.SS "#define loop_until_bit_is_clear(sfr, bit) do { } while (bit_is_set(sfr, bit))" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Wait until bit \fCbit\fP in IO register \fCsfr\fP is clear. +.SS "#define loop_until_bit_is_set(sfr, bit) do { } while (bit_is_clear(sfr, bit))" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Wait until bit \fCbit\fP in IO register \fCsfr\fP is set. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sfr_notes.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sfr_notes.3 new file mode 100644 index 0000000..2ce2fc9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sfr_notes.3 @@ -0,0 +1,63 @@ +.TH "Additional notes from " 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Additional notes from \- The \fC\fP file is included by all of the \fC\fP files, which use macros defined here to make the special function register definitions look like C variables or simple constants, depending on the \fC_SFR_ASM_COMPAT\fP define. Some examples from \fC\fP to show how to define such macros: +.PP +.PP +.nf +#define PORTA _SFR_IO8(0x02) +#define EEAR _SFR_IO16(0x21) +#define UDR0 _SFR_MEM8(0xC6) +#define TCNT3 _SFR_MEM16(0x94) +#define CANIDT _SFR_MEM32(0xF0) +.fi +.PP +.PP +If \fC_SFR_ASM_COMPAT\fP is not defined, C programs can use names like \fCPORTA\fP directly in C expressions (also on the left side of assignment operators) and GCC will do the right thing (use short I/O instructions if possible). The \fC__SFR_OFFSET\fP definition is not used in any way in this case. +.PP +Define \fC_SFR_ASM_COMPAT\fP as 1 to make these names work as simple constants (addresses of the I/O registers). This is necessary when included in preprocessed assembler (*.S) source files, so it is done automatically if \fC__ASSEMBLER__\fP is defined. By default, all addresses are defined as if they were memory addresses (used in \fClds/sts\fP instructions). To use these addresses in \fCin/out\fP instructions, you must subtract 0x20 from them. +.PP +For more backwards compatibility, insert the following at the start of your old assembler source file: +.PP +.PP +.nf +#define __SFR_OFFSET 0 +.fi +.PP +.PP +This automatically subtracts 0x20 from I/O space addresses, but it's a hack, so it is recommended to change your source: wrap such addresses in macros defined here, as shown below. After this is done, the \fC__SFR_OFFSET\fP definition is no longer necessary and can be removed. +.PP +Real example - this code could be used in a boot loader that is portable between devices with \fCSPMCR\fP at different addresses. +.PP +.PP +.nf + +: #define SPMCR _SFR_IO8(0x37) +: #define SPMCR _SFR_MEM8(0x68) +.fi +.PP +.PP +.PP +.nf +#if _SFR_IO_REG_P(SPMCR) + out _SFR_IO_ADDR(SPMCR), r24 +#else + sts _SFR_MEM_ADDR(SPMCR), r24 +#endif +.fi +.PP +.PP +You can use the \fCin/out/cbi/sbi/sbic/sbis\fP instructions, without the \fC_SFR_IO_REG_P\fP test, if you know that the register is in the I/O space (as with \fCSREG\fP, for example). If it isn't, the assembler will complain (I/O address out of range 0...0x3f), so this should be fairly safe. +.PP +If you do not define \fC__SFR_OFFSET\fP (so it will be 0x20 by default), all special register addresses are defined as memory addresses (so \fCSREG\fP is 0x5f), and (if code size and speed are not important, and you don't like the ugly #if above) you can always use lds/sts to access them. But, this will not work if \fC__SFR_OFFSET\fP != 0x20, so use a different macro (defined only if \fC__SFR_OFFSET\fP == 0x20) for safety: +.PP +.PP +.nf + sts _SFR_ADDR(SPMCR), r24 +.fi +.PP +.PP +In C programs, all 3 combinations of \fC_SFR_ASM_COMPAT\fP and \fC__SFR_OFFSET\fP are supported - the \fC_SFR_ADDR(SPMCR)\fP macro can be used to get the address of the \fCSPMCR\fP register (0x57 or 0x68 depending on device). +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sleep.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sleep.3 new file mode 100644 index 0000000..faaccf4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_sleep.3 @@ -0,0 +1,82 @@ +.TH ": Power Management and Sleep Modes" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Power Management and Sleep Modes \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Use of the \fCSLEEP\fP instruction can allow an application to reduce its power comsumption considerably. AVR devices can be put into different sleep modes. Refer to the datasheet for the details relating to the device you are using. +.PP +There are several macros provided in this header file to actually put the device into sleep mode. The simplest way is to optionally set the desired sleep mode using \fCset_sleep_mode()\fP (it usually defaults to idle mode where the CPU is put on sleep but all peripheral clocks are still running), and then call \fCsleep_mode()\fP. This macro automatically sets the sleep enable bit, goes to sleep, and clears the sleep enable bit. +.PP +Example: +.PP +.nf + #include + + ... + set_sleep_mode(); + sleep_mode(); + +.fi +.PP +.PP +Note that unless your purpose is to completely lock the CPU (until a hardware reset), interrupts need to be enabled before going to sleep. +.PP +As the \fCsleep_mode()\fP macro might cause race conditions in some situations, the individual steps of manipulating the sleep enable (SE) bit, and actually issuing the \fCSLEEP\fP instruction, are provided in the macros \fC\fBsleep_enable()\fP\fP, \fC\fBsleep_disable()\fP\fP, and \fC\fBsleep_cpu()\fP\fP. This also allows for test-and-sleep scenarios that take care of not missing the interrupt that will awake the device from sleep. +.PP +Example: +.PP +.nf + #include + #include + + ... + set_sleep_mode(); + cli(); + if (some_condition) + { + sleep_enable(); + sei(); + sleep_cpu(); + sleep_disable(); + } + sei(); + +.fi +.PP +.PP +This sequence ensures an atomic test of \fCsome_condition\fP with interrupts being disabled. If the condition is met, sleep mode will be prepared, and the \fCSLEEP\fP instruction will be scheduled immediately after an \fCSEI\fP instruction. As the intruction right after the \fCSEI\fP is guaranteed to be executed before an interrupt could trigger, it is sure the device will really be put to sleep. +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBsleep_enable\fP (void)" +.br +.ti -1c +.RI "void \fBsleep_disable\fP (void)" +.br +.ti -1c +.RI "void \fBsleep_cpu\fP (void)" +.br +.in -1c +.SH "Function Documentation" +.PP +.SS "void sleep_cpu (void)" +.PP +Put the device into sleep mode. The SE bit must be set beforehand, and it is recommended to clear it afterwards. +.SS "void sleep_disable (void)" +.PP +Clear the SE (sleep enable) bit. +.SS "void sleep_enable (void)" +.PP +Put the device in sleep mode. How the device is brought out of sleep mode depends on the specific mode selected with the set_sleep_mode() function. See the data sheet for your device for more details. +.PP +Set the SE (sleep enable) bit. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdint.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdint.3 new file mode 100644 index 0000000..c90925d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdint.3 @@ -0,0 +1,623 @@ +.TH ": Standard Integer Types" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Standard Integer Types \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +Use [u]intN_t if you need exactly N bits. +.PP +Since these typedefs are mandated by the C99 standard, they are preferred over rolling your own typedefs. +.PP +.SS "Exact-width integer types" +Integer types having exactly the specified width +.in +1c +.ti -1c +.RI "typedef signed char \fBint8_t\fP" +.br +.ti -1c +.RI "typedef unsigned char \fBuint8_t\fP" +.br +.ti -1c +.RI "typedef signed int \fBint16_t\fP" +.br +.ti -1c +.RI "typedef unsigned int \fBuint16_t\fP" +.br +.ti -1c +.RI "typedef signed long int \fBint32_t\fP" +.br +.ti -1c +.RI "typedef unsigned long int \fBuint32_t\fP" +.br +.ti -1c +.RI "typedef signed long long int \fBint64_t\fP" +.br +.ti -1c +.RI "typedef unsigned long long int \fBuint64_t\fP" +.br +.in -1c +.SS "Integer types capable of holding object pointers" +These allow you to declare variables of the same size as a pointer. +.in +1c +.ti -1c +.RI "typedef \fBint16_t\fP \fBintptr_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP \fBuintptr_t\fP" +.br +.in -1c +.SS "Minimum-width integer types" +Integer types having at least the specified width +.in +1c +.ti -1c +.RI "typedef \fBint8_t\fP \fBint_least8_t\fP" +.br +.ti -1c +.RI "typedef \fBuint8_t\fP \fBuint_least8_t\fP" +.br +.ti -1c +.RI "typedef \fBint16_t\fP \fBint_least16_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP \fBuint_least16_t\fP" +.br +.ti -1c +.RI "typedef \fBint32_t\fP \fBint_least32_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP \fBuint_least32_t\fP" +.br +.ti -1c +.RI "typedef \fBint64_t\fP \fBint_least64_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP \fBuint_least64_t\fP" +.br +.in -1c +.SS "Fastest minimum-width integer types" +Integer types being usually fastest having at least the specified width +.in +1c +.ti -1c +.RI "typedef \fBint8_t\fP \fBint_fast8_t\fP" +.br +.ti -1c +.RI "typedef \fBuint8_t\fP \fBuint_fast8_t\fP" +.br +.ti -1c +.RI "typedef \fBint16_t\fP \fBint_fast16_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP \fBuint_fast16_t\fP" +.br +.ti -1c +.RI "typedef \fBint32_t\fP \fBint_fast32_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP \fBuint_fast32_t\fP" +.br +.ti -1c +.RI "typedef \fBint64_t\fP \fBint_fast64_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP \fBuint_fast64_t\fP" +.br +.in -1c +.SS "Greatest-width integer types" +Types designating integer data capable of representing any value of any integer type in the corresponding signed or unsigned category +.in +1c +.ti -1c +.RI "typedef \fBint64_t\fP \fBintmax_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP \fBuintmax_t\fP" +.br +.in -1c +.SS "Limits of specified-width integer types" +C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <\fBstdint.h\fP> is included +.in +1c +.ti -1c +.RI "#define \fBINT8_MAX\fP 0x7f" +.br +.ti -1c +.RI "#define \fBINT8_MIN\fP (-INT8_MAX - 1)" +.br +.ti -1c +.RI "#define \fBUINT8_MAX\fP (__CONCAT(INT8_MAX, U) * 2U + 1U)" +.br +.ti -1c +.RI "#define \fBINT16_MAX\fP 0x7fff" +.br +.ti -1c +.RI "#define \fBINT16_MIN\fP (-INT16_MAX - 1)" +.br +.ti -1c +.RI "#define \fBUINT16_MAX\fP (__CONCAT(INT16_MAX, U) * 2U + 1U)" +.br +.ti -1c +.RI "#define \fBINT32_MAX\fP 0x7fffffffL" +.br +.ti -1c +.RI "#define \fBINT32_MIN\fP (-INT32_MAX - 1L)" +.br +.ti -1c +.RI "#define \fBUINT32_MAX\fP (__CONCAT(INT32_MAX, U) * 2UL + 1UL)" +.br +.ti -1c +.RI "#define \fBINT64_MAX\fP 0x7fffffffffffffffLL" +.br +.ti -1c +.RI "#define \fBINT64_MIN\fP (-INT64_MAX - 1LL)" +.br +.ti -1c +.RI "#define \fBUINT64_MAX\fP (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL)" +.br +.in -1c +.SS "Limits of minimum-width integer types" + +.in +1c +.ti -1c +.RI "#define \fBINT_LEAST8_MAX\fP INT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST8_MIN\fP INT8_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST8_MAX\fP UINT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST16_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST16_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST16_MAX\fP UINT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST32_MAX\fP INT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST32_MIN\fP INT32_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST32_MAX\fP UINT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST64_MAX\fP INT64_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST64_MIN\fP INT64_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST64_MAX\fP UINT64_MAX" +.br +.in -1c +.SS "Limits of fastest minimum-width integer types" + +.in +1c +.ti -1c +.RI "#define \fBINT_FAST8_MAX\fP INT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST8_MIN\fP INT8_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST8_MAX\fP UINT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST16_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST16_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST16_MAX\fP UINT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST32_MAX\fP INT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST32_MIN\fP INT32_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST32_MAX\fP UINT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST64_MAX\fP INT64_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST64_MIN\fP INT64_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST64_MAX\fP UINT64_MAX" +.br +.in -1c +.SS "Limits of integer types capable of holding object pointers" + +.in +1c +.ti -1c +.RI "#define \fBINTPTR_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBINTPTR_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBUINTPTR_MAX\fP UINT16_MAX" +.br +.in -1c +.SS "Limits of greatest-width integer types" + +.in +1c +.ti -1c +.RI "#define \fBINTMAX_MAX\fP INT64_MAX" +.br +.ti -1c +.RI "#define \fBINTMAX_MIN\fP INT64_MIN" +.br +.ti -1c +.RI "#define \fBUINTMAX_MAX\fP UINT64_MAX" +.br +.in -1c +.SS "Limits of other integer types" +C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <\fBstdint.h\fP> is included +.in +1c +.ti -1c +.RI "#define \fBPTRDIFF_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBPTRDIFF_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBSIG_ATOMIC_MAX\fP INT8_MAX" +.br +.ti -1c +.RI "#define \fBSIG_ATOMIC_MIN\fP INT8_MIN" +.br +.ti -1c +.RI "#define \fBSIZE_MAX\fP (__CONCAT(INT16_MAX, U))" +.br +.in -1c +.SS "Macros for integer constants" +C++ implementations should define these macros only when __STDC_CONSTANT_MACROS is defined before <\fBstdint.h\fP> is included. +.PP +These definitions are valid for integer constants without suffix and for macros defined as integer constant without suffix +.in +1c +.ti -1c +.RI "#define \fBINT8_C\fP(value) ((\fBint8_t\fP) value)" +.br +.ti -1c +.RI "#define \fBUINT8_C\fP(value) ((\fBuint8_t\fP) __CONCAT(value, U))" +.br +.ti -1c +.RI "#define \fBINT16_C\fP(value) value" +.br +.ti -1c +.RI "#define \fBUINT16_C\fP(value) __CONCAT(value, U)" +.br +.ti -1c +.RI "#define \fBINT32_C\fP(value) __CONCAT(value, L)" +.br +.ti -1c +.RI "#define \fBUINT32_C\fP(value) __CONCAT(value, UL)" +.br +.ti -1c +.RI "#define \fBINT64_C\fP(value) __CONCAT(value, LL)" +.br +.ti -1c +.RI "#define \fBUINT64_C\fP(value) __CONCAT(value, ULL)" +.br +.ti -1c +.RI "#define \fBINTMAX_C\fP(value) __CONCAT(value, LL)" +.br +.ti -1c +.RI "#define \fBUINTMAX_C\fP(value) __CONCAT(value, ULL)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define INT16_C(value) value" +.PP +define a constant of type int16_t +.SS "#define INT16_MAX 0x7fff" +.PP +largest positive value an int16_t can hold. +.SS "#define INT16_MIN (-INT16_MAX - 1)" +.PP +smallest negative value an int16_t can hold. +.SS "#define INT32_C(value) __CONCAT(value, L)" +.PP +define a constant of type int32_t +.SS "#define INT32_MAX 0x7fffffffL" +.PP +largest positive value an int32_t can hold. +.SS "#define INT32_MIN (-INT32_MAX - 1L)" +.PP +smallest negative value an int32_t can hold. +.SS "#define INT64_C(value) __CONCAT(value, LL)" +.PP +define a constant of type int64_t +.SS "#define INT64_MAX 0x7fffffffffffffffLL" +.PP +largest positive value an int64_t can hold. +.SS "#define INT64_MIN (-INT64_MAX - 1LL)" +.PP +smallest negative value an int64_t can hold. +.SS "#define INT8_C(value) ((\fBint8_t\fP) value)" +.PP +define a constant of type int8_t +.SS "#define INT8_MAX 0x7f" +.PP +largest positive value an int8_t can hold. +.SS "#define INT8_MIN (-INT8_MAX - 1)" +.PP +smallest negative value an int8_t can hold. +.SS "#define INT_FAST16_MAX INT16_MAX" +.PP +largest positive value an int_fast16_t can hold. +.SS "#define INT_FAST16_MIN INT16_MIN" +.PP +smallest negative value an int_fast16_t can hold. +.SS "#define INT_FAST32_MAX INT32_MAX" +.PP +largest positive value an int_fast32_t can hold. +.SS "#define INT_FAST32_MIN INT32_MIN" +.PP +smallest negative value an int_fast32_t can hold. +.SS "#define INT_FAST64_MAX INT64_MAX" +.PP +largest positive value an int_fast64_t can hold. +.SS "#define INT_FAST64_MIN INT64_MIN" +.PP +smallest negative value an int_fast64_t can hold. +.SS "#define INT_FAST8_MAX INT8_MAX" +.PP +largest positive value an int_fast8_t can hold. +.SS "#define INT_FAST8_MIN INT8_MIN" +.PP +smallest negative value an int_fast8_t can hold. +.SS "#define INT_LEAST16_MAX INT16_MAX" +.PP +largest positive value an int_least16_t can hold. +.SS "#define INT_LEAST16_MIN INT16_MIN" +.PP +smallest negative value an int_least16_t can hold. +.SS "#define INT_LEAST32_MAX INT32_MAX" +.PP +largest positive value an int_least32_t can hold. +.SS "#define INT_LEAST32_MIN INT32_MIN" +.PP +smallest negative value an int_least32_t can hold. +.SS "#define INT_LEAST64_MAX INT64_MAX" +.PP +largest positive value an int_least64_t can hold. +.SS "#define INT_LEAST64_MIN INT64_MIN" +.PP +smallest negative value an int_least64_t can hold. +.SS "#define INT_LEAST8_MAX INT8_MAX" +.PP +largest positive value an int_least8_t can hold. +.SS "#define INT_LEAST8_MIN INT8_MIN" +.PP +smallest negative value an int_least8_t can hold. +.SS "#define INTMAX_C(value) __CONCAT(value, LL)" +.PP +define a constant of type intmax_t +.SS "#define INTMAX_MAX INT64_MAX" +.PP +largest positive value an intmax_t can hold. +.SS "#define INTMAX_MIN INT64_MIN" +.PP +smallest negative value an intmax_t can hold. +.SS "#define INTPTR_MAX INT16_MAX" +.PP +largest positive value an intptr_t can hold. +.SS "#define INTPTR_MIN INT16_MIN" +.PP +smallest negative value an intptr_t can hold. +.SS "#define PTRDIFF_MAX INT16_MAX" +.PP +largest positive value a ptrdiff_t can hold. +.SS "#define PTRDIFF_MIN INT16_MIN" +.PP +smallest negative value a ptrdiff_t can hold. +.SS "#define SIG_ATOMIC_MAX INT8_MAX" +.PP +largest positive value a sig_atomic_t can hold. +.SS "#define SIG_ATOMIC_MIN INT8_MIN" +.PP +smallest negative value a sig_atomic_t can hold. +.SS "#define SIZE_MAX (__CONCAT(INT16_MAX, U))" +.PP +largest value a size_t can hold. +.SS "#define UINT16_C(value) __CONCAT(value, U)" +.PP +define a constant of type uint16_t +.SS "#define UINT16_MAX (__CONCAT(INT16_MAX, U) * 2U + 1U)" +.PP +largest value an uint16_t can hold. +.SS "#define UINT32_C(value) __CONCAT(value, UL)" +.PP +define a constant of type uint32_t +.SS "#define UINT32_MAX (__CONCAT(INT32_MAX, U) * 2UL + 1UL)" +.PP +largest value an uint32_t can hold. +.SS "#define UINT64_C(value) __CONCAT(value, ULL)" +.PP +define a constant of type uint64_t +.SS "#define UINT64_MAX (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL)" +.PP +largest value an uint64_t can hold. +.SS "#define UINT8_C(value) ((\fBuint8_t\fP) __CONCAT(value, U))" +.PP +define a constant of type uint8_t +.SS "#define UINT8_MAX (__CONCAT(INT8_MAX, U) * 2U + 1U)" +.PP +largest value an uint8_t can hold. +.SS "#define UINT_FAST16_MAX UINT16_MAX" +.PP +largest value an uint_fast16_t can hold. +.SS "#define UINT_FAST32_MAX UINT32_MAX" +.PP +largest value an uint_fast32_t can hold. +.SS "#define UINT_FAST64_MAX UINT64_MAX" +.PP +largest value an uint_fast64_t can hold. +.SS "#define UINT_FAST8_MAX UINT8_MAX" +.PP +largest value an uint_fast8_t can hold. +.SS "#define UINT_LEAST16_MAX UINT16_MAX" +.PP +largest value an uint_least16_t can hold. +.SS "#define UINT_LEAST32_MAX UINT32_MAX" +.PP +largest value an uint_least32_t can hold. +.SS "#define UINT_LEAST64_MAX UINT64_MAX" +.PP +largest value an uint_least64_t can hold. +.SS "#define UINT_LEAST8_MAX UINT8_MAX" +.PP +largest value an uint_least8_t can hold. +.SS "#define UINTMAX_C(value) __CONCAT(value, ULL)" +.PP +define a constant of type uintmax_t +.SS "#define UINTMAX_MAX UINT64_MAX" +.PP +largest value an uintmax_t can hold. +.SS "#define UINTPTR_MAX UINT16_MAX" +.PP +largest value an uintptr_t can hold. +.SH "Typedef Documentation" +.PP +.SS "typedef signed int \fBint16_t\fP" +.PP +16-bit signed type. +.SS "typedef signed long int \fBint32_t\fP" +.PP +32-bit signed type. +.SS "typedef signed long long int \fBint64_t\fP" +.PP +64-bit signed type. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "typedef signed char \fBint8_t\fP" +.PP +8-bit signed type. +.SS "typedef \fBint16_t\fP \fBint_fast16_t\fP" +.PP +fastest signed int with at least 16 bits. +.SS "typedef \fBint32_t\fP \fBint_fast32_t\fP" +.PP +fastest signed int with at least 32 bits. +.SS "typedef \fBint64_t\fP \fBint_fast64_t\fP" +.PP +fastest signed int with at least 64 bits. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "typedef \fBint8_t\fP \fBint_fast8_t\fP" +.PP +fastest signed int with at least 8 bits. +.SS "typedef \fBint16_t\fP \fBint_least16_t\fP" +.PP +signed int with at least 16 bits. +.SS "typedef \fBint32_t\fP \fBint_least32_t\fP" +.PP +signed int with at least 32 bits. +.SS "typedef \fBint64_t\fP \fBint_least64_t\fP" +.PP +signed int with at least 64 bits. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "typedef \fBint8_t\fP \fBint_least8_t\fP" +.PP +signed int with at least 8 bits. +.SS "typedef \fBint64_t\fP \fBintmax_t\fP" +.PP +largest signed int available. +.SS "typedef \fBint16_t\fP \fBintptr_t\fP" +.PP +Signed pointer compatible type. +.SS "typedef unsigned int \fBuint16_t\fP" +.PP +16-bit unsigned type. +.SS "typedef unsigned long int \fBuint32_t\fP" +.PP +32-bit unsigned type. +.SS "typedef unsigned long long int \fBuint64_t\fP" +.PP +64-bit unsigned type. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "typedef unsigned char \fBuint8_t\fP" +.PP +8-bit unsigned type. +.SS "typedef \fBuint16_t\fP \fBuint_fast16_t\fP" +.PP +fastest unsigned int with at least 16 bits. +.SS "typedef \fBuint32_t\fP \fBuint_fast32_t\fP" +.PP +fastest unsigned int with at least 32 bits. +.SS "typedef \fBuint64_t\fP \fBuint_fast64_t\fP" +.PP +fastest unsigned int with at least 64 bits. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "typedef \fBuint8_t\fP \fBuint_fast8_t\fP" +.PP +fastest unsigned int with at least 8 bits. +.SS "typedef \fBuint16_t\fP \fBuint_least16_t\fP" +.PP +unsigned int with at least 16 bits. +.SS "typedef \fBuint32_t\fP \fBuint_least32_t\fP" +.PP +unsigned int with at least 32 bits. +.SS "typedef \fBuint64_t\fP \fBuint_least64_t\fP" +.PP +unsigned int with at least 64 bits. +.PP +\fBNote:\fP +.RS 4 +This type is not available when the compiler option -mint8 is in effect. +.RE +.PP + +.SS "typedef \fBuint8_t\fP \fBuint_least8_t\fP" +.PP +unsigned int with at least 8 bits. +.SS "typedef \fBuint64_t\fP \fBuintmax_t\fP" +.PP +largest unsigned int available. +.SS "typedef \fBuint16_t\fP \fBuintptr_t\fP" +.PP +Unsigned pointer compatible type. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdio.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdio.3 new file mode 100644 index 0000000..3d08252 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdio.3 @@ -0,0 +1,740 @@ +.TH ": Standard IO facilities" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Standard IO facilities \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +.SS "Introduction to the Standard IO facilities" +.PP +This file declares the standard IO facilities that are implemented in \fCavr-libc\fP. Due to the nature of the underlying hardware, only a limited subset of standard IO is implemented. There is no actual file implementation available, so only device IO can be performed. Since there's no operating system, the application needs to provide enough details about their devices in order to make them usable by the standard IO facilities. +.PP +Due to space constraints, some functionality has not been implemented at all (like some of the \fCprintf\fP conversions that have been left out). Nevertheless, potential users of this implementation should be warned: the \fCprintf\fP and \fCscanf\fP families of functions, although usually associated with presumably simple things like the famous 'Hello, world!' program, are actually fairly complex which causes their inclusion to eat up a fair amount of code space. Also, they are not fast due to the nature of interpreting the format string at run-time. Whenever possible, resorting to the (sometimes non-standard) predetermined conversion facilities that are offered by avr-libc will usually cost much less in terms of speed and code size. +.PP +.SS "Tunable options for code size vs. feature set" +.PP +In order to allow programmers a code size vs. functionality tradeoff, the function \fBvfprintf()\fP which is the heart of the printf family can be selected in different flavours using linker options. See the documentation of \fBvfprintf()\fP for a detailed description. The same applies to \fBvfscanf()\fP and the \fCscanf\fP family of functions. +.PP +.SS "Outline of the chosen API" +.PP +The standard streams \fCstdin\fP, \fCstdout\fP, and \fCstderr\fP are provided, but contrary to the C standard, since avr-libc has no knowledge about applicable devices, these streams are not already pre-initialized at application startup. Also, since there is no notion of 'file' whatsoever to avr-libc, there is no function \fCfopen()\fP that could be used to associate a stream to some device. (See \fBnote 1\fP.) Instead, the function \fC\fBfdevopen()\fP\fP is provided to associate a stream to a device, where the device needs to provide a function to send a character, to receive a character, or both. There is no differentiation between 'text' and 'binary' streams inside avr-libc. Character \fC\\n\fP is sent literally down to the device's \fCput()\fP function. If the device requires a carriage return (\fC\\r\fP) character to be sent before the linefeed, its \fCput()\fP routine must implement this (see \fBnote 2\fP). +.PP +As an alternative method to \fBfdevopen()\fP, the macro \fBfdev_setup_stream()\fP might be used to setup a user-supplied FILE structure. +.PP +It should be noted that the automatic conversion of a newline character into a carriage return - newline sequence breaks binary transfers. If binary transfers are desired, no automatic conversion should be performed, but instead any string that aims to issue a CR-LF sequence must use \fC'\\r\\n'\fP explicitly. +.PP +For convenience, the first call to \fC\fBfdevopen()\fP\fP that opens a stream for reading will cause the resulting stream to be aliased to \fCstdin\fP. Likewise, the first call to \fC\fBfdevopen()\fP\fP that opens a stream for writing will cause the resulting stream to be aliased to both, \fCstdout\fP, and \fCstderr\fP. Thus, if the open was done with both, read and write intent, all three standard streams will be identical. Note that these aliases are indistinguishable from each other, thus calling \fC\fBfclose()\fP\fP on such a stream will also effectively close all of its aliases (\fBnote 3\fP). +.PP +It is possible to tie additional user data to a stream, using \fBfdev_set_udata()\fP. The backend put and get functions can then extract this user data using \fBfdev_get_udata()\fP, and act appropriately. For example, a single put function could be used to talk to two different UARTs that way, or the put and get functions could keep internal state between calls there. +.PP +.SS "Format strings in flash ROM" +.PP +All the \fCprintf\fP and \fCscanf\fP family functions come in two flavours: the standard name, where the format string is expected to be in SRAM, as well as a version with the suffix '_P' where the format string is expected to reside in the flash ROM. The macro \fCPSTR\fP (explained in \fB: Program Space Utilities\fP) becomes very handy for declaring these format strings. +.PP + +.SS "Running stdio without \fBmalloc()\fP" +.PP +By default, \fBfdevopen()\fP requires \fBmalloc()\fP. As this is often not desired in the limited environment of a microcontroller, an alternative option is provided to run completely without \fBmalloc()\fP. +.PP +The macro \fBfdev_setup_stream()\fP is provided to prepare a user-supplied FILE buffer for operation with stdio. +.PP +.SS "Example" +.PP +.PP +.nf + #include + + static int uart_putchar(char c, FILE *stream); + + static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, + _FDEV_SETUP_WRITE); + + static int + uart_putchar(char c, FILE *stream) + { + + if (c == '\n') + uart_putchar('\r', stream); + loop_until_bit_is_set(UCSRA, UDRE); + UDR = c; + return 0; + } + + int + main(void) + { + init_uart(); + stdout = &mystdout; + printf('Hello, world!\n'); + + return 0; + } +.fi +.PP +.PP +This example uses the initializer form \fBFDEV_SETUP_STREAM()\fP rather than the function-like \fBfdev_setup_stream()\fP, so all data initialization happens during C start-up. +.PP +If streams initialized that way are no longer needed, they can be destroyed by first calling the macro \fBfdev_close()\fP, and then destroying the object itself. No call to \fBfclose()\fP should be issued for these streams. While calling \fBfclose()\fP itself is harmless, it will cause an undefined reference to \fBfree()\fP and thus cause the linker to link the malloc module into the application. +.PP +.SS "Notes" +.PP + +.PP +\fBNote 1:\fP.RS 4 +It might have been possible to implement a device abstraction that is compatible with \fCfopen()\fP but since this would have required to parse a string, and to take all the information needed either out of this string, or out of an additional table that would need to be provided by the application, this approach was not taken. +.RE +.PP + +.PP +\fBNote 2:\fP.RS 4 +This basically follows the Unix approach: if a device such as a terminal needs special handling, it is in the domain of the terminal device driver to provide this functionality. Thus, a simple function suitable as \fCput()\fP for \fC\fBfdevopen()\fP\fP that talks to a UART interface might look like this: +.RE +.PP +.PP +.nf + int + uart_putchar(char c, FILE *stream) + { + + if (c == '\n') + uart_putchar('\r'); + loop_until_bit_is_set(UCSRA, UDRE); + UDR = c; + return 0; + } +.fi +.PP +.PP + +.PP +\fBNote 3:\fP.RS 4 +This implementation has been chosen because the cost of maintaining an alias is considerably smaller than the cost of maintaining full copies of each stream. Yet, providing an implementation that offers the complete set of standard streams was deemed to be useful. Not only that writing \fC\fBprintf()\fP\fP instead of \fCfprintf(mystream, ...)\fP saves typing work, but since avr-gcc needs to resort to pass all arguments of variadic functions on the stack (as opposed to passing them in registers for functions that take a fixed number of parameters), the ability to pass one parameter less by implying \fCstdin\fP will also save some execution time. +.RE +.PP + +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBFILE\fP struct __file" +.br +.ti -1c +.RI "#define \fBstdin\fP (__iob[0])" +.br +.ti -1c +.RI "#define \fBstdout\fP (__iob[1])" +.br +.ti -1c +.RI "#define \fBstderr\fP (__iob[2])" +.br +.ti -1c +.RI "#define \fBEOF\fP (-1)" +.br +.ti -1c +.RI "#define \fBfdev_set_udata\fP(stream, u) do { (stream)->udata = u; } while(0)" +.br +.ti -1c +.RI "#define \fBfdev_get_udata\fP(stream) ((stream)->udata)" +.br +.ti -1c +.RI "#define \fBfdev_setup_stream\fP(stream, put, get, rwflag)" +.br +.ti -1c +.RI "#define \fB_FDEV_SETUP_READ\fP __SRD" +.br +.ti -1c +.RI "#define \fB_FDEV_SETUP_WRITE\fP __SWR" +.br +.ti -1c +.RI "#define \fB_FDEV_SETUP_RW\fP (__SRD|__SWR)" +.br +.ti -1c +.RI "#define \fB_FDEV_ERR\fP (-1)" +.br +.ti -1c +.RI "#define \fB_FDEV_EOF\fP (-2)" +.br +.ti -1c +.RI "#define \fBFDEV_SETUP_STREAM\fP(put, get, rwflag)" +.br +.ti -1c +.RI "#define \fBfdev_close\fP()" +.br +.ti -1c +.RI "#define \fBputc\fP(__c, __stream) fputc(__c, __stream)" +.br +.ti -1c +.RI "#define \fBputchar\fP(__c) fputc(__c, stdout)" +.br +.ti -1c +.RI "#define \fBgetc\fP(__stream) fgetc(__stream)" +.br +.ti -1c +.RI "#define \fBgetchar\fP() fgetc(stdin)" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int \fBfclose\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBvfprintf\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBvfprintf_P\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBfputc\fP (int __c, FILE *__stream)" +.br +.ti -1c +.RI "int \fBprintf\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBprintf_P\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBvprintf\fP (const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBsprintf\fP (char *__s, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsprintf_P\fP (char *__s, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsnprintf\fP (char *__s, size_t __n, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsnprintf_P\fP (char *__s, size_t __n, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBvsprintf\fP (char *__s, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBvsprintf_P\fP (char *__s, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBvsnprintf\fP (char *__s, size_t __n, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBvsnprintf_P\fP (char *__s, size_t __n, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBfprintf\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfprintf_P\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfputs\fP (const char *__str, FILE *__stream)" +.br +.ti -1c +.RI "int \fBfputs_P\fP (const char *__str, FILE *__stream)" +.br +.ti -1c +.RI "int \fBputs\fP (const char *__str)" +.br +.ti -1c +.RI "int \fBputs_P\fP (const char *__str)" +.br +.ti -1c +.RI "size_t \fBfwrite\fP (const void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)" +.br +.ti -1c +.RI "int \fBfgetc\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBungetc\fP (int __c, FILE *__stream)" +.br +.ti -1c +.RI "char * \fBfgets\fP (char *__str, int __size, FILE *__stream)" +.br +.ti -1c +.RI "char * \fBgets\fP (char *__str)" +.br +.ti -1c +.RI "size_t \fBfread\fP (void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)" +.br +.ti -1c +.RI "void \fBclearerr\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBfeof\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBferror\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBvfscanf\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBvfscanf_P\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBfscanf\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfscanf_P\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBscanf\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBscanf_P\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBvscanf\fP (const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBsscanf\fP (const char *__buf, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsscanf_P\fP (const char *__buf, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfflush\fP (FILE *stream)" +.br +.ti -1c +.RI "FILE * \fBfdevopen\fP (int(*put)(char, FILE *), int(*get)(FILE *))" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define _FDEV_EOF (-2)" +.PP +Return code for an end-of-file condition during device read. +.PP +To be used in the get function of \fBfdevopen()\fP. +.SS "#define _FDEV_ERR (-1)" +.PP +Return code for an error condition during device read. +.PP +To be used in the get function of \fBfdevopen()\fP. +.SS "#define _FDEV_SETUP_READ __SRD" +.PP +\fBfdev_setup_stream()\fP with read intent +.SS "#define _FDEV_SETUP_RW (__SRD|__SWR)" +.PP +\fBfdev_setup_stream()\fP with read/write intent +.SS "#define _FDEV_SETUP_WRITE __SWR" +.PP +\fBfdev_setup_stream()\fP with write intent +.SS "#define EOF (-1)" +.PP +\fCEOF\fP declares the value that is returned by various standard IO functions in case of an error. Since the AVR platform (currently) doesn't contain an abstraction for actual files, its origin as 'end of file' is somewhat meaningless here. +.SS "#define fdev_close()" +.PP +This macro frees up any library resources that might be associated with \fCstream\fP. It should be called if \fCstream\fP is no longer needed, right before the application is going to destroy the \fCstream\fP object itself. +.PP +(Currently, this macro evaluates to nothing, but this might change in future versions of the library.) +.SS "#define fdev_get_udata(stream) ((stream)->udata)" +.PP +This macro retrieves a pointer to user defined data from a FILE stream object. +.SS "#define fdev_set_udata(stream, u) do { (stream)->udata = u; } while(0)" +.PP +This macro inserts a pointer to user defined data into a FILE stream object. +.PP +The user data can be useful for tracking state in the put and get functions supplied to the \fBfdevopen()\fP function. +.SS "#define FDEV_SETUP_STREAM(put, get, rwflag)" +.PP +Initializer for a user-supplied stdio stream. +.PP +This macro acts similar to \fBfdev_setup_stream()\fP, but it is to be used as the initializer of a variable of type FILE. +.PP +The remaining arguments are to be used as explained in \fBfdev_setup_stream()\fP. +.SS "#define fdev_setup_stream(stream, put, get, rwflag)" +.PP +Setup a user-supplied buffer as an stdio stream. +.PP +This macro takes a user-supplied buffer \fCstream\fP, and sets it up as a stream that is valid for stdio operations, similar to one that has been obtained dynamically from \fBfdevopen()\fP. The buffer to setup must be of type FILE. +.PP +The arguments \fCput\fP and \fCget\fP are identical to those that need to be passed to \fBfdevopen()\fP. +.PP +The \fCrwflag\fP argument can take one of the values _FDEV_SETUP_READ, _FDEV_SETUP_WRITE, or _FDEV_SETUP_RW, for read, write, or read/write intent, respectively. +.PP +\fBNote:\fP +.RS 4 +No assignments to the standard streams will be performed by \fBfdev_setup_stream()\fP. If standard streams are to be used, these need to be assigned by the user. See also under \fBRunning stdio without malloc()\fP. +.RE +.PP + +.SS "#define FILE struct __file" +.PP +\fCFILE\fP is the opaque structure that is passed around between the various standard IO functions. +.SS "#define getc(__stream) fgetc(__stream)" +.PP +The macro \fCgetc\fP used to be a 'fast' macro implementation with a functionality identical to \fBfgetc()\fP. For space constraints, in \fCavr-libc\fP, it is just an alias for \fCfgetc\fP. +.SS "#define getchar(void) fgetc(stdin)" +.PP +The macro \fCgetchar\fP reads a character from \fCstdin\fP. Return values and error handling is identical to \fBfgetc()\fP. +.SS "#define putc(__c, __stream) fputc(__c, __stream)" +.PP +The macro \fCputc\fP used to be a 'fast' macro implementation with a functionality identical to \fBfputc()\fP. For space constraints, in \fCavr-libc\fP, it is just an alias for \fCfputc\fP. +.SS "#define putchar(__c) fputc(__c, stdout)" +.PP +The macro \fCputchar\fP sends character \fCc\fP to \fCstdout\fP. +.SS "#define stderr (__iob[2])" +.PP +Stream destined for error output. Unless specifically assigned, identical to \fCstdout\fP. +.PP +If \fCstderr\fP should point to another stream, the result of another \fC\fBfdevopen()\fP\fP must be explicitly assigned to it without closing the previous \fCstderr\fP (since this would also close \fCstdout\fP). +.SS "#define stdin (__iob[0])" +.PP +Stream that will be used as an input stream by the simplified functions that don't take a \fCstream\fP argument. +.PP +The first stream opened with read intent using \fC\fBfdevopen()\fP\fP will be assigned to \fCstdin\fP. +.SS "#define stdout (__iob[1])" +.PP +Stream that will be used as an output stream by the simplified functions that don't take a \fCstream\fP argument. +.PP +The first stream opened with write intent using \fC\fBfdevopen()\fP\fP will be assigned to both, \fCstdin\fP, and \fCstderr\fP. +.SH "Function Documentation" +.PP +.SS "void clearerr (FILE * __stream)" +.PP +Clear the error and end-of-file flags of \fCstream\fP. +.SS "int fclose (FILE * __stream)" +.PP +This function closes \fCstream\fP, and disallows and further IO to and from it. +.PP +When using \fBfdevopen()\fP to setup the stream, a call to \fBfclose()\fP is needed in order to free the internal resources allocated. +.PP +If the stream has been set up using \fBfdev_setup_stream()\fP or \fBFDEV_SETUP_STREAM()\fP, use \fBfdev_close()\fP instead. +.PP +It currently always returns 0 (for success). +.SS "FILE* fdevopen (int(*)(char, FILE *) put, int(*)(FILE *) get)" +.PP +This function is a replacement for \fCfopen()\fP. +.PP +It opens a stream for a device where the actual device implementation needs to be provided by the application. If successful, a pointer to the structure for the opened stream is returned. Reasons for a possible failure currently include that neither the \fCput\fP nor the \fCget\fP argument have been provided, thus attempting to open a stream with no IO intent at all, or that insufficient dynamic memory is available to establish a new stream. +.PP +If the \fCput\fP function pointer is provided, the stream is opened with write intent. The function passed as \fCput\fP shall take two arguments, the first a character to write to the device, and the second a pointer to FILE, and shall return 0 if the output was successful, and a nonzero value if the character could not be sent to the device. +.PP +If the \fCget\fP function pointer is provided, the stream is opened with read intent. The function passed as \fCget\fP shall take a pointer to FILE as its single argument, and return one character from the device, passed as an \fCint\fP type. If an error occurs when trying to read from the device, it shall return \fC_FDEV_ERR\fP. If an end-of-file condition was reached while reading from the device, \fC_FDEV_EOF\fP shall be returned. +.PP +If both functions are provided, the stream is opened with read and write intent. +.PP +The first stream opened with read intent is assigned to \fCstdin\fP, and the first one opened with write intent is assigned to both, \fCstdout\fP and \fCstderr\fP. +.PP +\fBfdevopen()\fP uses \fBcalloc()\fP (und thus \fBmalloc()\fP) in order to allocate the storage for the new stream. +.PP +\fBNote:\fP +.RS 4 +If the macro __STDIO_FDEVOPEN_COMPAT_12 is declared before including <\fBstdio.h\fP>, a function prototype for \fBfdevopen()\fP will be chosen that is backwards compatible with avr-libc version 1.2 and before. This is solely intented for providing a simple migration path without the need to immediately change all source code. Do not use for new code. +.RE +.PP + +.SS "int feof (FILE * __stream)" +.PP +Test the end-of-file flag of \fCstream\fP. This flag can only be cleared by a call to \fBclearerr()\fP. +.SS "int ferror (FILE * __stream)" +.PP +Test the error flag of \fCstream\fP. This flag can only be cleared by a call to \fBclearerr()\fP. +.SS "int fflush (FILE * stream)" +.PP +Flush \fCstream\fP. +.PP +This is a null operation provided for source-code compatibility only, as the standard IO implementation currently does not perform any buffering. +.SS "int fgetc (FILE * __stream)" +.PP +The function \fCfgetc\fP reads a character from \fCstream\fP. It returns the character, or \fCEOF\fP in case end-of-file was encountered or an error occurred. The routines \fBfeof()\fP or \fBferror()\fP must be used to distinguish between both situations. +.SS "char* fgets (char * __str, int __size, FILE * __stream)" +.PP +Read at most \fCsize - 1\fP bytes from \fCstream\fP, until a newline character was encountered, and store the characters in the buffer pointed to by \fCstr\fP. Unless an error was encountered while reading, the string will then be terminated with a \fCNUL\fP character. +.PP +If an error was encountered, the function returns NULL and sets the error flag of \fCstream\fP, which can be tested using \fBferror()\fP. Otherwise, a pointer to the string will be returned. +.SS "int fprintf (FILE * __stream, const char * __fmt, ...)" +.PP +The function \fCfprintf\fP performs formatted output to \fCstream\fP. See \fC\fBvfprintf()\fP\fP for details. +.SS "int fprintf_P (FILE * __stream, const char * __fmt, ...)" +.PP +Variant of \fC\fBfprintf()\fP\fP that uses a \fCfmt\fP string that resides in program memory. +.SS "int fputc (int __c, FILE * __stream)" +.PP +The function \fCfputc\fP sends the character \fCc\fP (though given as type \fCint\fP) to \fCstream\fP. It returns the character, or \fCEOF\fP in case an error occurred. +.SS "int fputs (const char * __str, FILE * __stream)" +.PP +Write the string pointed to by \fCstr\fP to stream \fCstream\fP. +.PP +Returns 0 on success and EOF on error. +.SS "int fputs_P (const char * __str, FILE * __stream)" +.PP +Variant of \fBfputs()\fP where \fCstr\fP resides in program memory. +.SS "size_t fread (void * __ptr, size_t __size, size_t __nmemb, FILE * __stream)" +.PP +Read \fCnmemb\fP objects, \fCsize\fP bytes each, from \fCstream\fP, to the buffer pointed to by \fCptr\fP. +.PP +Returns the number of objects successfully read, i. e. \fCnmemb\fP unless an input error occured or end-of-file was encountered. \fBfeof()\fP and \fBferror()\fP must be used to distinguish between these two conditions. +.SS "int fscanf (FILE * __stream, const char * __fmt, ...)" +.PP +The function \fCfscanf\fP performs formatted input, reading the input data from \fCstream\fP. +.PP +See \fBvfscanf()\fP for details. +.SS "int fscanf_P (FILE * __stream, const char * __fmt, ...)" +.PP +Variant of \fBfscanf()\fP using a \fCfmt\fP string in program memory. +.SS "size_t fwrite (const void * __ptr, size_t __size, size_t __nmemb, FILE * __stream)" +.PP +Write \fCnmemb\fP objects, \fCsize\fP bytes each, to \fCstream\fP. The first byte of the first object is referenced by \fCptr\fP. +.PP +Returns the number of objects successfully written, i. e. \fCnmemb\fP unless an output error occured. +.SS "char* gets (char * __str)" +.PP +Similar to \fBfgets()\fP except that it will operate on stream \fCstdin\fP, and the trailing newline (if any) will not be stored in the string. It is the caller's responsibility to provide enough storage to hold the characters read. +.SS "int printf (const char * __fmt, ...)" +.PP +The function \fCprintf\fP performs formatted output to stream \fCstderr\fP. See \fC\fBvfprintf()\fP\fP for details. +.SS "int printf_P (const char * __fmt, ...)" +.PP +Variant of \fC\fBprintf()\fP\fP that uses a \fCfmt\fP string that resides in program memory. +.SS "int puts (const char * __str)" +.PP +Write the string pointed to by \fCstr\fP, and a trailing newline character, to \fCstdout\fP. +.SS "int puts_P (const char * __str)" +.PP +Variant of \fBputs()\fP where \fCstr\fP resides in program memory. +.SS "int scanf (const char * __fmt, ...)" +.PP +The function \fCscanf\fP performs formatted input from stream \fCstdin\fP. +.PP +See \fBvfscanf()\fP for details. +.SS "int scanf_P (const char * __fmt, ...)" +.PP +Variant of \fBscanf()\fP where \fCfmt\fP resides in program memory. +.SS "int snprintf (char * __s, size_t __n, const char * __fmt, ...)" +.PP +Like \fC\fBsprintf()\fP\fP, but instead of assuming \fCs\fP to be of infinite size, no more than \fCn\fP characters (including the trailing NUL character) will be converted to \fCs\fP. +.PP +Returns the number of characters that would have been written to \fCs\fP if there were enough space. +.SS "int snprintf_P (char * __s, size_t __n, const char * __fmt, ...)" +.PP +Variant of \fC\fBsnprintf()\fP\fP that uses a \fCfmt\fP string that resides in program memory. +.SS "int sprintf (char * __s, const char * __fmt, ...)" +.PP +Variant of \fC\fBprintf()\fP\fP that sends the formatted characters to string \fCs\fP. +.SS "int sprintf_P (char * __s, const char * __fmt, ...)" +.PP +Variant of \fC\fBsprintf()\fP\fP that uses a \fCfmt\fP string that resides in program memory. +.SS "int sscanf (const char * __buf, const char * __fmt, ...)" +.PP +The function \fCsscanf\fP performs formatted input, reading the input data from the buffer pointed to by \fCbuf\fP. +.PP +See \fBvfscanf()\fP for details. +.SS "int sscanf_P (const char * __buf, const char * __fmt, ...)" +.PP +Variant of \fBsscanf()\fP using a \fCfmt\fP string in program memory. +.SS "int ungetc (int __c, FILE * __stream)" +.PP +The \fBungetc()\fP function pushes the character \fCc\fP (converted to an unsigned char) back onto the input stream pointed to by \fCstream\fP. The pushed-back character will be returned by a subsequent read on the stream. +.PP +Currently, only a single character can be pushed back onto the stream. +.PP +The \fBungetc()\fP function returns the character pushed back after the conversion, or \fCEOF\fP if the operation fails. If the value of the argument \fCc\fP character equals \fCEOF\fP, the operation will fail and the stream will remain unchanged. +.SS "int vfprintf (FILE * __stream, const char * __fmt, va_list __ap)" +.PP +\fCvfprintf\fP is the central facility of the \fCprintf\fP family of functions. It outputs values to \fCstream\fP under control of a format string passed in \fCfmt\fP. The actual values to print are passed as a variable argument list \fCap\fP. +.PP +\fCvfprintf\fP returns the number of characters written to \fCstream\fP, or \fCEOF\fP in case of an error. Currently, this will only happen if \fCstream\fP has not been opened with write intent. +.PP +The format string is composed of zero or more directives: ordinary characters (not \fC%\fP), which are copied unchanged to the output stream; and conversion specifications, each of which results in fetching zero or more subsequent arguments. Each conversion specification is introduced by the \fC%\fP character. The arguments must properly correspond (after type promotion) with the conversion specifier. After the \fC%\fP, the following appear in sequence: +.PP +.IP "\(bu" 2 +Zero or more of the following flags: +.PD 0 + +.IP " \(bu" 4 +\fC#\fP The value should be converted to an 'alternate form'. For c, d, i, s, and u conversions, this option has no effect. For o conversions, the precision of the number is increased to force the first character of the output string to a zero (except if a zero value is printed with an explicit precision of zero). For x and X conversions, a non-zero result has the string `0x' (or `0X' for X conversions) prepended to it. +.IP " \(bu" 4 +\fC0\fP (zero) Zero padding. For all conversions, the converted value is padded on the left with zeros rather than blanks. If a precision is given with a numeric conversion (d, i, o, u, i, x, and X), the 0 flag is ignored. +.IP " \(bu" 4 +\fC-\fP A negative field width flag; the converted value is to be left adjusted on the field boundary. The converted value is padded on the right with blanks, rather than on the left with blanks or zeros. A - overrides a 0 if both are given. +.IP " \(bu" 4 +' ' (space) A blank should be left before a positive number produced by a signed conversion (d, or i). +.IP " \(bu" 4 +\fC+\fP A sign must always be placed before a number produced by a signed conversion. A + overrides a space if both are used. +.PP + +.PP +.PP +.IP "\(bu" 2 +An optional decimal digit string specifying a minimum field width. If the converted value has fewer characters than the field width, it will be padded with spaces on the left (or right, if the left-adjustment flag has been given) to fill out the field width. +.IP "\(bu" 2 +An optional precision, in the form of a period . followed by an optional digit string. If the digit string is omitted, the precision is taken as zero. This gives the minimum number of digits to appear for d, i, o, u, x, and X conversions, or the maximum number of characters to be printed from a string for \fCs\fP conversions. +.IP "\(bu" 2 +An optional \fCl\fP or \fCh\fP length modifier, that specifies that the argument for the d, i, o, u, x, or X conversion is a \fC'long int'\fP rather than \fCint\fP. The \fCh\fP is ignored, as \fC'short int'\fP is equivalent to \fCint\fP. +.IP "\(bu" 2 +A character that specifies the type of conversion to be applied. +.PP +.PP +The conversion specifiers and their meanings are: +.PP +.IP "\(bu" 2 +\fCdiouxX\fP The int (or appropriate variant) argument is converted to signed decimal (d and i), unsigned octal (o), unsigned decimal (u), or unsigned hexadecimal (x and X) notation. The letters 'abcdef' are used for x conversions; the letters 'ABCDEF' are used for X conversions. The precision, if any, gives the minimum number of digits that must appear; if the converted value requires fewer digits, it is padded on the left with zeros. +.IP "\(bu" 2 +\fCp\fP The \fCvoid *\fP argument is taken as an unsigned integer, and converted similarly as a \fC%#x\fP command would do. +.IP "\(bu" 2 +\fCc\fP The \fCint\fP argument is converted to an \fC'unsigned char'\fP, and the resulting character is written. +.IP "\(bu" 2 +\fCs\fP The \fC'char *'\fP argument is expected to be a pointer to an array of character type (pointer to a string). Characters from the array are written up to (but not including) a terminating NUL character; if a precision is specified, no more than the number specified are written. If a precision is given, no null character need be present; if the precision is not specified, or is greater than the size of the array, the array must contain a terminating NUL character. +.IP "\(bu" 2 +\fC%\fP A \fC%\fP is written. No argument is converted. The complete conversion specification is '%%'. +.IP "\(bu" 2 +\fCeE\fP The double argument is rounded and converted in the format \fC'[-]d.ddde±dd'\fP where there is one digit before the decimal-point character and the number of digits after it is equal to the precision; if the precision is missing, it is taken as 6; if the precision is zero, no decimal-point character appears. An \fIE\fP conversion uses the letter \fC'E'\fP (rather than \fC'e'\fP) to introduce the exponent. The exponent always contains two digits; if the value is zero, the exponent is 00. +.IP "\(bu" 2 +\fCfF\fP The double argument is rounded and converted to decimal notation in the format \fC'[-]ddd.ddd'\fP, where the number of digits after the decimal-point character is equal to the precision specification. If the precision is missing, it is taken as 6; if the precision is explicitly zero, no decimal-point character appears. If a decimal point appears, at least one digit appears before it. +.IP "\(bu" 2 +\fCgG\fP The double argument is converted in style \fCf\fP or \fCe\fP (or \fCF\fP or \fCE\fP for \fCG\fP conversions). The precision specifies the number of significant digits. If the precision is missing, 6 digits are given; if the precision is zero, it is treated as 1. Style \fCe\fP is used if the exponent from its conversion is less than -4 or greater than or equal to the precision. Trailing zeros are removed from the fractional part of the result; a decimal point appears only if it is followed by at least one digit. +.IP "\(bu" 2 +\fCS\fP Similar to the \fCs\fP format, except the pointer is expected to point to a program-memory (ROM) string instead of a RAM string. +.PP +.PP +In no case does a non-existent or small field width cause truncation of a numeric field; if the result of a conversion is wider than the field width, the field is expanded to contain the conversion result. +.PP +Since the full implementation of all the mentioned features becomes fairly large, three different flavours of \fBvfprintf()\fP can be selected using linker options. The default \fBvfprintf()\fP implements all the mentioned functionality except floating point conversions. A minimized version of \fBvfprintf()\fP is available that only implements the very basic integer and string conversion facilities, but only the \fC#\fP additional option can be specified using conversion flags (these flags are parsed correctly from the format specification, but then simply ignored). This version can be requested using the following \fBcompiler options\fP: +.PP +.PP +.nf + -Wl,-u,vfprintf -lprintf_min +.fi +.PP +.PP +If the full functionality including the floating point conversions is required, the following options should be used: +.PP +.PP +.nf + -Wl,-u,vfprintf -lprintf_flt -lm +.fi +.PP +.PP +\fBLimitations:\fP.RS 4 + +.IP "\(bu" 2 +The specified width and precision can be at most 255. +.PP +.RE +.PP +\fBNotes:\fP.RS 4 + +.IP "\(bu" 2 +For floating-point conversions, if you link default or minimized version of \fBvfprintf()\fP, the symbol \fC\fP? will be output and double argument will be skiped. So you output below will not be crashed. For default version the width field and the 'pad to left' ( symbol minus ) option will work in this case. +.IP "\(bu" 2 +The \fChh\fP length modifier is ignored (\fCchar\fP argument is promouted to \fCint\fP). More exactly, this realization does not check the number of \fCh\fP symbols. +.IP "\(bu" 2 +But the \fCll\fP length modifier will to abort the output, as this realization does not operate \fClong\fP \fClong\fP arguments. +.IP "\(bu" 2 +The variable width or precision field (an asterisk \fC*\fP symbol) is not realized and will to abort the output. +.PP +.RE +.PP + +.SS "int vfprintf_P (FILE * __stream, const char * __fmt, va_list __ap)" +.PP +Variant of \fC\fBvfprintf()\fP\fP that uses a \fCfmt\fP string that resides in program memory. +.SS "int vfscanf (FILE * stream, const char * fmt, va_list ap)" +.PP +Formatted input. This function is the heart of the \fBscanf\fP family of functions. +.PP +Characters are read from \fIstream\fP and processed in a way described by \fIfmt\fP. Conversion results will be assigned to the parameters passed via \fIap\fP. +.PP +The format string \fIfmt\fP is scanned for conversion specifications. Anything that doesn't comprise a conversion specification is taken as text that is matched literally against the input. White space in the format string will match any white space in the data (including none), all other characters match only itself. Processing is aborted as soon as the data and format string no longer match, or there is an error or end-of-file condition on \fIstream\fP. +.PP +Most conversions skip leading white space before starting the actual conversion. +.PP +Conversions are introduced with the character \fB%\fP. Possible options can follow the \fB%\fP: +.PP +.IP "\(bu" 2 +a \fC*\fP indicating that the conversion should be performed but the conversion result is to be discarded; no parameters will be processed from \fCap\fP, +.IP "\(bu" 2 +the character \fCh\fP indicating that the argument is a pointer to \fCshort int\fP (rather than \fCint\fP), +.IP "\(bu" 2 +the 2 characters \fChh\fP indicating that the argument is a pointer to \fCchar\fP (rather than \fCint\fP). +.IP "\(bu" 2 +the character \fCl\fP indicating that the argument is a pointer to \fClong int\fP (rather than \fCint\fP, for integer type conversions), or a pointer to \fCdouble\fP (for floating point conversions), +.PP +.PP +In addition, a maximal field width may be specified as a nonzero positive decimal integer, which will restrict the conversion to at most this many characters from the input stream. This field width is limited to at most 255 characters which is also the default value (except for the \fCc\fP conversion that defaults to 1). +.PP +The following conversion flags are supported: +.PP +.IP "\(bu" 2 +\fC%\fP Matches a literal \fC%\fP character. This is not a conversion. +.IP "\(bu" 2 +\fCd\fP Matches an optionally signed decimal integer; the next pointer must be a pointer to \fCint\fP. +.IP "\(bu" 2 +\fCi\fP Matches an optionally signed integer; the next pointer must be a pointer to \fCint\fP. The integer is read in base 16 if it begins with \fB0x\fP or \fB0X\fP, in base 8 if it begins with \fB0\fP, and in base 10 otherwise. Only characters that correspond to the base are used. +.IP "\(bu" 2 +\fCo\fP Matches an octal integer; the next pointer must be a pointer to \fCunsigned int\fP. +.IP "\(bu" 2 +\fCu\fP Matches an optionally signed decimal integer; the next pointer must be a pointer to \fCunsigned int\fP. +.IP "\(bu" 2 +\fCx\fP Matches an optionally signed hexadecimal integer; the next pointer must be a pointer to \fCunsigned int\fP. +.IP "\(bu" 2 +\fCf\fP Matches an optionally signed floating-point number; the next pointer must be a pointer to \fCfloat\fP. +.IP "\(bu" 2 +\fCe, g, F, E, G\fP Equivalent to \fCf\fP. +.IP "\(bu" 2 +\fCs\fP Matches a sequence of non-white-space characters; the next pointer must be a pointer to \fCchar\fP, and the array must be large enough to accept all the sequence and the terminating \fCNUL\fP character. The input string stops at white space or at the maximum field width, whichever occurs first. +.IP "\(bu" 2 +\fCc\fP Matches a sequence of width count characters (default 1); the next pointer must be a pointer to \fCchar\fP, and there must be enough room for all the characters (no terminating \fCNUL\fP is added). The usual skip of leading white space is suppressed. To skip white space first, use an explicit space in the format. +.IP "\(bu" 2 +\fC\fP[ Matches a nonempty sequence of characters from the specified set of accepted characters; the next pointer must be a pointer to \fCchar\fP, and there must be enough room for all the characters in the string, plus a terminating \fCNUL\fP character. The usual skip of leading white space is suppressed. The string is to be made up of characters in (or not in) a particular set; the set is defined by the characters between the open bracket \fC\fP[ character and a close bracket \fC\fP] character. The set excludes those characters if the first character after the open bracket is a circumflex \fC^\fP. To include a close bracket in the set, make it the first character after the open bracket or the circumflex; any other position will end the set. The hyphen character \fC-\fP is also special; when placed between two other characters, it adds all intervening characters to the set. To include a hyphen, make it the last character before the final close bracket. For instance, \fC[^]0-9-]\fP means the set of \fIeverything except close bracket, zero through nine, and hyphen\fP. The string ends with the appearance of a character not in the (or, with a circumflex, in) set or when the field width runs out. Note that usage of this conversion enlarges the stack expense. +.IP "\(bu" 2 +\fCp\fP Matches a pointer value (as printed by \fCp\fP in \fBprintf()\fP); the next pointer must be a pointer to \fCvoid\fP. +.IP "\(bu" 2 +\fCn\fP Nothing is expected; instead, the number of characters consumed thus far from the input is stored through the next pointer, which must be a pointer to \fCint\fP. This is not a conversion, although it can be suppressed with the \fC*\fP flag. +.PP +.PP +These functions return the number of input items assigned, which can be fewer than provided for, or even zero, in the event of a matching failure. Zero indicates that, while there was input available, no conversions were assigned; typically this is due to an invalid input character, such as an alphabetic character for a \fCd\fP conversion. The value \fCEOF\fP is returned if an input failure occurs before any conversion such as an end-of-file occurs. If an error or end-of-file occurs after conversion has begun, the number of conversions which were successfully completed is returned. +.PP +By default, all the conversions described above are available except the floating-point conversions and the width is limited to 255 characters. The float-point conversion will be available in the extended version provided by the library \fClibscanf_flt.a\fP. Also in this case the width is not limited (exactly, it is limited to 65535 characters). To link a program against the extended version, use the following compiler flags in the link stage: +.PP +.PP +.nf + -Wl,-u,vfscanf -lscanf_flt -lm +.fi +.PP +.PP +A third version is available for environments that are tight on space. In addition to the restrictions of the standard one, this version implements no \fC%[\fP specification. This version is provided in the library \fClibscanf_min.a\fP, and can be requested using the following options in the link stage: +.PP +.PP +.nf + -Wl,-u,vfscanf -lscanf_min -lm +.fi +.PP + +.SS "int vfscanf_P (FILE * __stream, const char * __fmt, va_list __ap)" +.PP +Variant of \fBvfscanf()\fP using a \fCfmt\fP string in program memory. +.SS "int vprintf (const char * __fmt, va_list __ap)" +.PP +The function \fCvprintf\fP performs formatted output to stream \fCstdout\fP, taking a variable argument list as in \fBvfprintf()\fP. +.PP +See \fBvfprintf()\fP for details. +.SS "int vscanf (const char * __fmt, va_list __ap)" +.PP +The function \fCvscanf\fP performs formatted input from stream \fCstdin\fP, taking a variable argument list as in \fBvfscanf()\fP. +.PP +See \fBvfscanf()\fP for details. +.SS "int vsnprintf (char * __s, size_t __n, const char * __fmt, va_list ap)" +.PP +Like \fC\fBvsprintf()\fP\fP, but instead of assuming \fCs\fP to be of infinite size, no more than \fCn\fP characters (including the trailing NUL character) will be converted to \fCs\fP. +.PP +Returns the number of characters that would have been written to \fCs\fP if there were enough space. +.SS "int vsnprintf_P (char * __s, size_t __n, const char * __fmt, va_list ap)" +.PP +Variant of \fC\fBvsnprintf()\fP\fP that uses a \fCfmt\fP string that resides in program memory. +.SS "int vsprintf (char * __s, const char * __fmt, va_list ap)" +.PP +Like \fC\fBsprintf()\fP\fP but takes a variable argument list for the arguments. +.SS "int vsprintf_P (char * __s, const char * __fmt, va_list ap)" +.PP +Variant of \fC\fBvsprintf()\fP\fP that uses a \fCfmt\fP string that resides in program memory. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdlib.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdlib.3 new file mode 100644 index 0000000..647ace6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_stdlib.3 @@ -0,0 +1,472 @@ +.TH ": General utilities" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: General utilities \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This file declares some basic C macros and functions as defined by the ISO standard, plus some AVR-specific extensions. +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBdiv_t\fP" +.br +.ti -1c +.RI "struct \fBldiv_t\fP" +.br +.in -1c +.SS "Non-standard (i.e. non-ISO C) functions." + +.in +1c +.ti -1c +.RI "char * \fBltoa\fP (long int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "char * \fButoa\fP (unsigned int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "char * \fBultoa\fP (unsigned long int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "long \fBrandom\fP (void)" +.br +.ti -1c +.RI "void \fBsrandom\fP (unsigned long __seed)" +.br +.ti -1c +.RI "long \fBrandom_r\fP (unsigned long *__ctx)" +.br +.ti -1c +.RI "char * \fBitoa\fP (int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "#define \fBRANDOM_MAX\fP 0x7FFFFFFF" +.br +.in -1c +.SS "Conversion functions for double arguments." +Note that these functions are not located in the default library, \fClibc.a\fP, but in the mathematical library, \fClibm.a\fP. So when linking the application, the \fC-lm\fP option needs to be specified. +.in +1c +.ti -1c +.RI "char * \fBdtostre\fP (double __val, char *__s, unsigned char __prec, unsigned char __flags)" +.br +.ti -1c +.RI "char * \fBdtostrf\fP (double __val, signed char __width, unsigned char __prec, char *__s)" +.br +.ti -1c +.RI "#define \fBDTOSTR_ALWAYS_SIGN\fP 0x01" +.br +.ti -1c +.RI "#define \fBDTOSTR_PLUS_SIGN\fP 0x02" +.br +.ti -1c +.RI "#define \fBDTOSTR_UPPERCASE\fP 0x04" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBRAND_MAX\fP 0x7FFF" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef int(* \fB__compar_fn_t\fP )(const void *, const void *)" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBabort\fP (void) __ATTR_NORETURN__" +.br +.ti -1c +.RI "int \fBabs\fP (int __i)" +.br +.ti -1c +.RI "long \fBlabs\fP (long __i)" +.br +.ti -1c +.RI "void * \fBbsearch\fP (const void *__key, const void *__base, size_t __nmemb, size_t __size, int(*__compar)(const void *, const void *))" +.br +.ti -1c +.RI "\fBdiv_t\fP \fBdiv\fP (int __num, int __denom) __asm__('__divmodhi4')" +.br +.ti -1c +.RI "\fBldiv_t\fP \fBldiv\fP (long __num, long __denom) __asm__('__divmodsi4')" +.br +.ti -1c +.RI "void \fBqsort\fP (void *__base, size_t __nmemb, size_t __size, \fB__compar_fn_t\fP __compar)" +.br +.ti -1c +.RI "long \fBstrtol\fP (const char *__nptr, char **__endptr, int __base)" +.br +.ti -1c +.RI "unsigned long \fBstrtoul\fP (const char *__nptr, char **__endptr, int __base)" +.br +.ti -1c +.RI "long \fBatol\fP (const char *__s) __ATTR_PURE__" +.br +.ti -1c +.RI "int \fBatoi\fP (const char *__s) __ATTR_PURE__" +.br +.ti -1c +.RI "void \fBexit\fP (int __status) __ATTR_NORETURN__" +.br +.ti -1c +.RI "void * \fBmalloc\fP (size_t __size) __ATTR_MALLOC__" +.br +.ti -1c +.RI "void \fBfree\fP (void *__ptr)" +.br +.ti -1c +.RI "void * \fBcalloc\fP (size_t __nele, size_t __size) __ATTR_MALLOC__" +.br +.ti -1c +.RI "void * \fBrealloc\fP (void *__ptr, size_t __size) __ATTR_MALLOC__" +.br +.ti -1c +.RI "double \fBstrtod\fP (const char *__nptr, char **__endptr)" +.br +.ti -1c +.RI "double \fBatof\fP (const char *__nptr)" +.br +.ti -1c +.RI "int \fBrand\fP (void)" +.br +.ti -1c +.RI "void \fBsrand\fP (unsigned int __seed)" +.br +.ti -1c +.RI "int \fBrand_r\fP (unsigned long *__ctx)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "size_t \fB__malloc_margin\fP" +.br +.ti -1c +.RI "char * \fB__malloc_heap_start\fP" +.br +.ti -1c +.RI "char * \fB__malloc_heap_end\fP" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define DTOSTR_ALWAYS_SIGN 0x01" +.PP +Bit value that can be passed in \fCflags\fP to \fBdtostre()\fP. +.SS "#define DTOSTR_PLUS_SIGN 0x02" +.PP +Bit value that can be passed in \fCflags\fP to \fBdtostre()\fP. +.SS "#define DTOSTR_UPPERCASE 0x04" +.PP +Bit value that can be passed in \fCflags\fP to \fBdtostre()\fP. +.SS "#define RAND_MAX 0x7FFF" +.PP +Highest number that can be generated by \fBrand()\fP. +.SS "#define RANDOM_MAX 0x7FFFFFFF" +.PP +Highest number that can be generated by \fBrandom()\fP. +.SH "Typedef Documentation" +.PP +.SS "typedef int(* \fB__compar_fn_t\fP)(const void *, const void *)" +.PP +Comparision function type for \fBqsort()\fP, just for convenience. +.SH "Function Documentation" +.PP +.SS "void abort (void)" +.PP +The \fBabort()\fP function causes abnormal program termination to occur. This realization disables interrupts and jumps to _exit() function with argument equal to 1. In the limited AVR environment, execution is effectively halted by entering an infinite loop. +.SS "int abs (int __i)" +.PP +The \fBabs()\fP function computes the absolute value of the integer \fCi\fP. +.PP +\fBNote:\fP +.RS 4 +The \fBabs()\fP and \fBlabs()\fP functions are builtins of gcc. +.RE +.PP + +.SS "double atof (const char * nptr)" +.PP +The \fBatof()\fP function converts the initial portion of the string pointed to by \fInptr\fP to double representation. +.PP +It is equivalent to calling +.PP +.nf + strtod(nptr, (char **)0); + +.fi +.PP + +.SS "int atoi (const char * s)" +.PP +Convert a string to an integer. +.PP +The \fBatoi()\fP function converts the initial portion of the string pointed to by \fCs\fP to integer representation. In contrast to +.PP +.PP +.nf + (int)strtol(s, (char **)NULL, 10); +.fi +.PP +.PP +this function does not detect overflow (\fCerrno\fP is not changed and the result value is not predictable), uses smaller memory (flash and stack) and works more quickly. +.SS "long atol (const char * s)" +.PP +Convert a string to a long integer. +.PP +The \fBatol()\fP function converts the initial portion of the string pointed to by \fCs\fP to long integer representation. In contrast to +.PP +.PP +.nf + strtol(s, (char **)NULL, 10); +.fi +.PP +.PP +this function does not detect overflow (\fCerrno\fP is not changed and the result value is not predictable), uses smaller memory (flash and stack) and works more quickly. +.SS "void* bsearch (const void * __key, const void * __base, size_t __nmemb, size_t __size, int(*)(const void *, const void *) __compar)" +.PP +The \fBbsearch()\fP function searches an array of \fCnmemb\fP objects, the initial member of which is pointed to by \fCbase\fP, for a member that matches the object pointed to by \fCkey\fP. The size of each member of the array is specified by \fCsize\fP. +.PP +The contents of the array should be in ascending sorted order according to the comparison function referenced by \fCcompar\fP. The \fCcompar\fP routine is expected to have two arguments which point to the key object and to an array member, in that order, and should return an integer less than, equal to, or greater than zero if the key object is found, respectively, to be less than, to match, or be greater than the array member. +.PP +The \fBbsearch()\fP function returns a pointer to a matching member of the array, or a null pointer if no match is found. If two members compare as equal, which member is matched is unspecified. +.SS "void* calloc (size_t __nele, size_t __size)" +.PP +Allocate \fCnele\fP elements of \fCsize\fP each. Identical to calling \fC\fBmalloc()\fP\fP using \fCnele * size\fP as argument, except the allocated memory will be cleared to zero. +.SS "\fBdiv_t\fP div (int __num, int __denom)" +.PP +The \fBdiv()\fP function computes the value \fCnum/denom\fP and returns the quotient and remainder in a structure named \fC\fBdiv_t\fP\fP that contains two int members named \fCquot\fP and \fCrem\fP. +.SS "char* dtostre (double __val, char * __s, unsigned char __prec, unsigned char __flags)" +.PP +The \fBdtostre()\fP function converts the double value passed in \fCval\fP into an ASCII representation that will be stored under \fCs\fP. The caller is responsible for providing sufficient storage in \fCs\fP. +.PP +Conversion is done in the format \fC'[-]d.ddde±dd'\fP where there is one digit before the decimal-point character and the number of digits after it is equal to the precision \fCprec\fP; if the precision is zero, no decimal-point character appears. If \fCflags\fP has the DTOSTRE_UPPERCASE bit set, the letter \fC'E'\fP (rather than \fC'e'\fP ) will be used to introduce the exponent. The exponent always contains two digits; if the value is zero, the exponent is \fC'00'\fP. +.PP +If \fCflags\fP has the DTOSTRE_ALWAYS_SIGN bit set, a space character will be placed into the leading position for positive numbers. +.PP +If \fCflags\fP has the DTOSTRE_PLUS_SIGN bit set, a plus sign will be used instead of a space character in this case. +.PP +The \fBdtostre()\fP function returns the pointer to the converted string \fCs\fP. +.SS "char* dtostrf (double __val, signed char __width, unsigned char __prec, char * __s)" +.PP +The \fBdtostrf()\fP function converts the double value passed in \fCval\fP into an ASCII representationthat will be stored under \fCs\fP. The caller is responsible for providing sufficient storage in \fCs\fP. +.PP +Conversion is done in the format \fC'[-]d.ddd'\fP. The minimum field width of the output string (including the \fC'\fP.' and the possible sign for negative values) is given in \fCwidth\fP, and \fCprec\fP determines the number of digits after the decimal sign. \fCwidth\fP is signed value, negative for left adjustment. +.PP +The \fBdtostrf()\fP function returns the pointer to the converted string \fCs\fP. +.SS "void exit (int __status)" +.PP +The \fBexit()\fP function terminates the application. Since there is no environment to return to, \fCstatus\fP is ignored, and code execution will eventually reach an infinite loop, thereby effectively halting all code processing. Before entering the infinite loop, interrupts are globally disabled. +.PP +In a C++ context, global destructors will be called before halting execution. +.SS "void free (void * __ptr)" +.PP +The \fBfree()\fP function causes the allocated memory referenced by \fCptr\fP to be made available for future allocations. If \fCptr\fP is NULL, no action occurs. +.SS "char* itoa (int __val, char * __s, int __radix)" +.PP +Convert an integer to a string. +.PP +The function \fBitoa()\fP converts the integer value from \fCval\fP into an ASCII representation that will be stored under \fCs\fP. The caller is responsible for providing sufficient storage in \fCs\fP. +.PP +\fBNote:\fP +.RS 4 +The minimal size of the buffer \fCs\fP depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size. +.RE +.PP +\fBWarning:\fP +.RS 4 +If the buffer is too small, you risk a buffer overflow. +.RE +.PP +Conversion is done using the \fCradix\fP as base, which may be a number between 2 (binary conversion) and up to 36. If \fCradix\fP is greater than 10, the next digit after \fC'9'\fP will be the letter \fC'a'\fP. +.PP +If radix is 10 and val is negative, a minus sign will be prepended. +.PP +The \fBitoa()\fP function returns the pointer passed as \fCs\fP. +.SS "long labs (long __i)" +.PP +The \fBlabs()\fP function computes the absolute value of the long integer \fCi\fP. +.PP +\fBNote:\fP +.RS 4 +The \fBabs()\fP and \fBlabs()\fP functions are builtins of gcc. +.RE +.PP + +.SS "\fBldiv_t\fP ldiv (long __num, long __denom)" +.PP +The \fBldiv()\fP function computes the value \fCnum/denom\fP and returns the quotient and remainder in a structure named \fC\fBldiv_t\fP\fP that contains two long integer members named \fCquot\fP and \fCrem\fP. +.SS "char* ltoa (long int __val, char * __s, int __radix)" +.PP +Convert a long integer to a string. +.PP +The function \fBltoa()\fP converts the long integer value from \fCval\fP into an ASCII representation that will be stored under \fCs\fP. The caller is responsible for providing sufficient storage in \fCs\fP. +.PP +\fBNote:\fP +.RS 4 +The minimal size of the buffer \fCs\fP depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (long int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size. +.RE +.PP +\fBWarning:\fP +.RS 4 +If the buffer is too small, you risk a buffer overflow. +.RE +.PP +Conversion is done using the \fCradix\fP as base, which may be a number between 2 (binary conversion) and up to 36. If \fCradix\fP is greater than 10, the next digit after \fC'9'\fP will be the letter \fC'a'\fP. +.PP +If radix is 10 and val is negative, a minus sign will be prepended. +.PP +The \fBltoa()\fP function returns the pointer passed as \fCs\fP. +.SS "void* malloc (size_t __size)" +.PP +The \fBmalloc()\fP function allocates \fCsize\fP bytes of memory. If \fBmalloc()\fP fails, a NULL pointer is returned. +.PP +Note that \fBmalloc()\fP does \fInot\fP initialize the returned memory to zero bytes. +.PP +See the chapter about \fBmalloc() usage\fP for implementation details. +.SS "void qsort (void * __base, size_t __nmemb, size_t __size, \fB__compar_fn_t\fP __compar)" +.PP +The \fBqsort()\fP function is a modified partition-exchange sort, or quicksort. +.PP +The \fBqsort()\fP function sorts an array of \fCnmemb\fP objects, the initial member of which is pointed to by \fCbase\fP. The size of each object is specified by \fCsize\fP. The contents of the array base are sorted in ascending order according to a comparison function pointed to by \fCcompar\fP, which requires two arguments pointing to the objects being compared. +.PP +The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second. +.SS "int rand (void)" +.PP +The \fBrand()\fP function computes a sequence of pseudo-random integers in the range of 0 to \fCRAND_MAX\fP (as defined by the header file <\fBstdlib.h\fP>). +.PP +The \fBsrand()\fP function sets its argument \fCseed\fP as the seed for a new sequence of pseudo-random numbers to be returned by \fBrand()\fP. These sequences are repeatable by calling \fBsrand()\fP with the same seed value. +.PP +If no seed value is provided, the functions are automatically seeded with a value of 1. +.PP +In compliance with the C standard, these functions operate on \fCint\fP arguments. Since the underlying algorithm already uses 32-bit calculations, this causes a loss of precision. See \fC\fBrandom()\fP\fP for an alternate set of functions that retains full 32-bit precision. +.SS "int rand_r (unsigned long * __ctx)" +.PP +Variant of \fBrand()\fP that stores the context in the user-supplied variable located at \fCctx\fP instead of a static library variable so the function becomes re-entrant. +.SS "long random (void)" +.PP +The \fBrandom()\fP function computes a sequence of pseudo-random integers in the range of 0 to \fCRANDOM_MAX\fP (as defined by the header file <\fBstdlib.h\fP>). +.PP +The \fBsrandom()\fP function sets its argument \fCseed\fP as the seed for a new sequence of pseudo-random numbers to be returned by \fBrand()\fP. These sequences are repeatable by calling \fBsrandom()\fP with the same seed value. +.PP +If no seed value is provided, the functions are automatically seeded with a value of 1. +.SS "long random_r (unsigned long * __ctx)" +.PP +Variant of \fBrandom()\fP that stores the context in the user-supplied variable located at \fCctx\fP instead of a static library variable so the function becomes re-entrant. +.SS "void* realloc (void * __ptr, size_t __size)" +.PP +The \fBrealloc()\fP function tries to change the size of the region allocated at \fCptr\fP to the new \fCsize\fP value. It returns a pointer to the new region. The returned pointer might be the same as the old pointer, or a pointer to a completely different region. +.PP +The contents of the returned region up to either the old or the new size value (whatever is less) will be identical to the contents of the old region, even in case a new region had to be allocated. +.PP +It is acceptable to pass \fCptr\fP as NULL, in which case \fBrealloc()\fP will behave identical to \fBmalloc()\fP. +.PP +If the new memory cannot be allocated, \fBrealloc()\fP returns NULL, and the region at \fCptr\fP will not be changed. +.SS "void srand (unsigned int __seed)" +.PP +Pseudo-random number generator seeding; see \fBrand()\fP. +.SS "void srandom (unsigned long __seed)" +.PP +Pseudo-random number generator seeding; see \fBrandom()\fP. +.SS "double strtod (const char * nptr, char ** endptr)" +.PP +The \fBstrtod()\fP function converts the initial portion of the string pointed to by \fInptr\fP to double representation. +.PP +The expected form of the string is an optional plus ( \fC'+'\fP ) or minus sign ( \fC'-'\fP ) followed by a sequence of digits optionally containing a decimal-point character, optionally followed by an exponent. An exponent consists of an \fC'E'\fP or \fC'e'\fP, followed by an optional plus or minus sign, followed by a sequence of digits. +.PP +Leading white-space characters in the string are skipped. +.PP +The \fBstrtod()\fP function returns the converted value, if any. +.PP +If \fIendptr\fP is not \fCNULL\fP, a pointer to the character after the last character used in the conversion is stored in the location referenced by \fIendptr\fP. +.PP +If no conversion is performed, zero is returned and the value of \fInptr\fP is stored in the location referenced by \fIendptr\fP. +.PP +If the correct value would cause overflow, plus or minus \fCINFINITY\fP is returned (according to the sign of the value), and \fCERANGE\fP is stored in \fCerrno\fP. If the correct value would cause underflow, zero is returned and \fCERANGE\fP is stored in \fCerrno\fP. +.SS "long strtol (const char * __nptr, char ** __endptr, int __base)" +.PP +The \fBstrtol()\fP function converts the string in \fCnptr\fP to a long value. The conversion is done according to the given base, which must be between 2 and 36 inclusive, or be the special value 0. +.PP +The string may begin with an arbitrary amount of white space (as determined by \fBisspace()\fP) followed by a single optional \fC'+'\fP or \fC'-'\fP sign. If \fCbase\fP is zero or 16, the string may then include a \fC'0x'\fP prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is \fC'0'\fP, in which case it is taken as 8 (octal). +.PP +The remainder of the string is converted to a long value in the obvious manner, stopping at the first character which is not a valid digit in the given base. (In bases above 10, the letter \fC'A'\fP in either upper or lower case represents 10, \fC'B'\fP represents 11, and so forth, with \fC'Z'\fP representing 35.) +.PP +If \fCendptr\fP is not NULL, \fBstrtol()\fP stores the address of the first invalid character in \fC*endptr\fP. If there were no digits at all, however, \fBstrtol()\fP stores the original value of \fCnptr\fP in \fCendptr\fP. (Thus, if \fC*nptr\fP is not \fC'\\0'\fP but \fC**endptr\fP is \fC'\\0'\fP on return, the entire string was valid.) +.PP +The \fBstrtol()\fP function returns the result of the conversion, unless the value would underflow or overflow. If no conversion could be performed, 0 is returned. If an overflow or underflow occurs, \fCerrno\fP is set to \fBERANGE\fP and the function return value is clamped to \fCLONG_MIN\fP or \fCLONG_MAX\fP, respectively. +.SS "unsigned long strtoul (const char * __nptr, char ** __endptr, int __base)" +.PP +The \fBstrtoul()\fP function converts the string in \fCnptr\fP to an unsigned long value. The conversion is done according to the given base, which must be between 2 and 36 inclusive, or be the special value 0. +.PP +The string may begin with an arbitrary amount of white space (as determined by \fBisspace()\fP) followed by a single optional \fC'+'\fP or \fC'-'\fP sign. If \fCbase\fP is zero or 16, the string may then include a \fC'0x'\fP prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is \fC'0'\fP, in which case it is taken as 8 (octal). +.PP +The remainder of the string is converted to an unsigned long value in the obvious manner, stopping at the first character which is not a valid digit in the given base. (In bases above 10, the letter \fC'A'\fP in either upper or lower case represents 10, \fC'B'\fP represents 11, and so forth, with \fC'Z'\fP representing 35.) +.PP +If \fCendptr\fP is not NULL, \fBstrtoul()\fP stores the address of the first invalid character in \fC*endptr\fP. If there were no digits at all, however, \fBstrtoul()\fP stores the original value of \fCnptr\fP in \fCendptr\fP. (Thus, if \fC*nptr\fP is not \fC'\\0'\fP but \fC**endptr\fP is \fC'\\0'\fP on return, the entire string was valid.) +.PP +The \fBstrtoul()\fP function return either the result of the conversion or, if there was a leading minus sign, the negation of the result of the conversion, unless the original (non-negated) value would overflow; in the latter case, \fBstrtoul()\fP returns ULONG_MAX, and \fCerrno\fP is set to \fBERANGE\fP. If no conversion could be performed, 0 is returned. +.SS "char* ultoa (unsigned long int __val, char * __s, int __radix)" +.PP +Convert an unsigned long integer to a string. +.PP +The function \fBultoa()\fP converts the unsigned long integer value from \fCval\fP into an ASCII representation that will be stored under \fCs\fP. The caller is responsible for providing sufficient storage in \fCs\fP. +.PP +\fBNote:\fP +.RS 4 +The minimal size of the buffer \fCs\fP depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (unsigned long int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size. +.RE +.PP +\fBWarning:\fP +.RS 4 +If the buffer is too small, you risk a buffer overflow. +.RE +.PP +Conversion is done using the \fCradix\fP as base, which may be a number between 2 (binary conversion) and up to 36. If \fCradix\fP is greater than 10, the next digit after \fC'9'\fP will be the letter \fC'a'\fP. +.PP +The \fBultoa()\fP function returns the pointer passed as \fCs\fP. +.SS "char* utoa (unsigned int __val, char * __s, int __radix)" +.PP +Convert an unsigned integer to a string. +.PP +The function \fButoa()\fP converts the unsigned integer value from \fCval\fP into an ASCII representation that will be stored under \fCs\fP. The caller is responsible for providing sufficient storage in \fCs\fP. +.PP +\fBNote:\fP +.RS 4 +The minimal size of the buffer \fCs\fP depends on the choice of radix. For example, if the radix is 2 (binary), you need to supply a buffer with a minimal length of 8 * sizeof (unsigned int) + 1 characters, i.e. one character for each bit plus one for the string terminator. Using a larger radix will require a smaller minimal buffer size. +.RE +.PP +\fBWarning:\fP +.RS 4 +If the buffer is too small, you risk a buffer overflow. +.RE +.PP +Conversion is done using the \fCradix\fP as base, which may be a number between 2 (binary conversion) and up to 36. If \fCradix\fP is greater than 10, the next digit after \fC'9'\fP will be the letter \fC'a'\fP. +.PP +The \fButoa()\fP function returns the pointer passed as \fCs\fP. +.SH "Variable Documentation" +.PP +.SS "char* \fB__malloc_heap_end\fP" +.PP +\fC\fBmalloc()\fP\fP \fBtunable\fP. +.SS "char* \fB__malloc_heap_start\fP" +.PP +\fC\fBmalloc()\fP\fP \fBtunable\fP. +.SS "size_t \fB__malloc_margin\fP" +.PP +\fC\fBmalloc()\fP\fP \fBtunable\fP. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_string.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_string.3 new file mode 100644 index 0000000..2342989 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_string.3 @@ -0,0 +1,628 @@ +.TH ": Strings" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Strings \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +The string functions perform string operations on NULL terminated strings. +.PP +\fBNote:\fP +.RS 4 +If the strings you are working on resident in program space (flash), you will need to use the string functions described in \fB: Program Space Utilities\fP. +.RE +.PP + +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_FFS\fP(x)" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int \fBffs\fP (int __val)" +.br +.ti -1c +.RI "int \fBffsl\fP (long __val)" +.br +.ti -1c +.RI "int \fBffsll\fP (long long __val)" +.br +.ti -1c +.RI "void * \fBmemccpy\fP (void *, const void *, int, size_t)" +.br +.ti -1c +.RI "void * \fBmemchr\fP (const void *, int, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "int \fBmemcmp\fP (const void *, const void *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemcpy\fP (void *, const void *, size_t)" +.br +.ti -1c +.RI "void * \fBmemmem\fP (const void *, size_t, const void *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemmove\fP (void *, const void *, size_t)" +.br +.ti -1c +.RI "void * \fBmemrchr\fP (const void *, int, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemset\fP (void *, int, size_t)" +.br +.ti -1c +.RI "int \fBstrcasecmp\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcasestr\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcat\fP (char *, const char *)" +.br +.ti -1c +.RI "char * \fBstrchr\fP (const char *, int) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrchrnul\fP (const char *, int) __ATTR_PURE__" +.br +.ti -1c +.RI "int \fBstrcmp\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcpy\fP (char *, const char *)" +.br +.ti -1c +.RI "size_t \fBstrcspn\fP (const char *__s, const char *__reject) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrdup\fP (const char *s1)" +.br +.ti -1c +.RI "size_t \fBstrlcat\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlcpy\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlen\fP (const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrlwr\fP (char *)" +.br +.ti -1c +.RI "int \fBstrncasecmp\fP (const char *, const char *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrncat\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "int \fBstrncmp\fP (const char *, const char *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrncpy\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "size_t \fBstrnlen\fP (const char *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrpbrk\fP (const char *__s, const char *__accept) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrrchr\fP (const char *, int) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrrev\fP (char *)" +.br +.ti -1c +.RI "char * \fBstrsep\fP (char **, const char *)" +.br +.ti -1c +.RI "size_t \fBstrspn\fP (const char *__s, const char *__accept) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrstr\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrtok\fP (char *, const char *)" +.br +.ti -1c +.RI "char * \fBstrtok_r\fP (char *, const char *, char **)" +.br +.ti -1c +.RI "char * \fBstrupr\fP (char *)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define _FFS(x)" +.PP +This macro finds the first (least significant) bit set in the input value. +.PP +This macro is very similar to the function \fBffs()\fP except that it evaluates its argument at compile-time, so it should only be applied to compile-time constant expressions where it will reduce to a constant itself. Application of this macro to expressions that are not constant at compile-time is not recommended, and might result in a huge amount of code generated. +.PP +\fBReturns:\fP +.RS 4 +The \fB_FFS()\fP macro returns the position of the first (least significant) bit set in the word val, or 0 if no bits are set. The least significant bit is position 1. +.RE +.PP + +.SH "Function Documentation" +.PP +.SS "int ffs (int val)" +.PP +This function finds the first (least significant) bit set in the input value. +.PP +\fBReturns:\fP +.RS 4 +The \fBffs()\fP function returns the position of the first (least significant) bit set in the word val, or 0 if no bits are set. The least significant bit is position 1. +.RE +.PP +\fBNote:\fP +.RS 4 +For expressions that are constant at compile time, consider using the \fB_FFS\fP macro instead. +.RE +.PP + +.SS "int ffsl (long __val)" +.PP +Same as \fBffs()\fP, for an argument of type long. +.PP +.SS "int ffsll (long long __val)" +.PP +Same as \fBffs()\fP, for an argument of type long long. +.PP +.SS "void * memccpy (void * dest, const void * src, int val, size_t len)" +.PP +Copy memory area. +.PP +The \fBmemccpy()\fP function copies no more than len bytes from memory area src to memory area dest, stopping when the character val is found. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemccpy()\fP function returns a pointer to the next character in dest after val, or NULL if val was not found in the first len characters of src. +.RE +.PP + +.SS "void * memchr (const void * src, int val, size_t len)" +.PP +Scan memory for a character. +.PP +The \fBmemchr()\fP function scans the first len bytes of the memory area pointed to by src for the character val. The first byte to match val (interpreted as an unsigned character) stops the operation. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemchr()\fP function returns a pointer to the matching byte or NULL if the character does not occur in the given memory area. +.RE +.PP + +.SS "int memcmp (const void * s1, const void * s2, size_t len)" +.PP +Compare memory areas. +.PP +The \fBmemcmp()\fP function compares the first len bytes of the memory areas s1 and s2. The comparision is performed using unsigned char operations. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemcmp()\fP function returns an integer less than, equal to, or greater than zero if the first len bytes of s1 is found, respectively, to be less than, to match, or be greater than the first len bytes of s2. +.RE +.PP +\fBNote:\fP +.RS 4 +Be sure to store the result in a 16 bit variable since you may get incorrect results if you use an unsigned char or char due to truncation. +.RE +.PP +\fBWarning:\fP +.RS 4 +This function is not -mint8 compatible, although if you only care about testing for equality, this function should be safe to use. +.RE +.PP + +.SS "void * memcpy (void * dest, const void * src, size_t len)" +.PP +Copy a memory area. +.PP +The \fBmemcpy()\fP function copies len bytes from memory area src to memory area dest. The memory areas may not overlap. Use \fBmemmove()\fP if the memory areas do overlap. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemcpy()\fP function returns a pointer to dest. +.RE +.PP + +.SS "void * memmem (const void * s1, size_t len1, const void * s2, size_t len2)" +.PP +The \fBmemmem()\fP function finds the start of the first occurrence of the substring \fCs2\fP of length \fClen2\fP in the memory area \fCs1\fP of length \fClen1\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemmem()\fP function returns a pointer to the beginning of the substring, or \fCNULL\fP if the substring is not found. If \fClen2\fP is zero, the function returns \fCs1\fP. +.RE +.PP + +.SS "void * memmove (void * dest, const void * src, size_t len)" +.PP +Copy memory area. +.PP +The \fBmemmove()\fP function copies len bytes from memory area src to memory area dest. The memory areas may overlap. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemmove()\fP function returns a pointer to dest. +.RE +.PP + +.SS "void * memrchr (const void * src, int val, size_t len)" +.PP +The \fBmemrchr()\fP function is like the \fBmemchr()\fP function, except that it searches backwards from the end of the \fClen\fP bytes pointed to by \fCsrc\fP instead of forwards from the front. (Glibc, GNU extension.) +.PP +\fBReturns:\fP +.RS 4 +The \fBmemrchr()\fP function returns a pointer to the matching byte or \fCNULL\fP if the character does not occur in the given memory area. +.RE +.PP + +.SS "void * memset (void * dest, int val, size_t len)" +.PP +Fill memory with a constant byte. +.PP +The \fBmemset()\fP function fills the first len bytes of the memory area pointed to by dest with the constant byte val. +.PP +\fBReturns:\fP +.RS 4 +The \fBmemset()\fP function returns a pointer to the memory area dest. +.RE +.PP + +.SS "int strcasecmp (const char * s1, const char * s2)" +.PP +Compare two strings ignoring case. +.PP +The \fBstrcasecmp()\fP function compares the two strings \fCs1\fP and \fCs2\fP, ignoring the case of the characters. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcasecmp()\fP function returns an integer less than, equal to, or greater than zero if \fCs1\fP is found, respectively, to be less than, to match, or be greater than \fCs2\fP. A consequence of the ordering used by \fBstrcasecmp()\fP is that if \fCs1\fP is an initial substring of \fCs2\fP, then \fCs1\fP is considered to be 'less than' \fCs2\fP. +.RE +.PP + +.SS "char * strcasestr (const char * s1, const char * s2)" +.PP +The \fBstrcasestr()\fP function finds the first occurrence of the substring \fCs2\fP in the string \fCs1\fP. This is like \fBstrstr()\fP, except that it ignores case of alphabetic symbols in searching for the substring. (Glibc, GNU extension.) +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcasestr()\fP function returns a pointer to the beginning of the substring, or \fCNULL\fP if the substring is not found. If \fCs2\fP points to a string of zero length, the function returns \fCs1\fP. +.RE +.PP + +.SS "char * strcat (char * dest, const char * src)" +.PP +Concatenate two strings. +.PP +The \fBstrcat()\fP function appends the src string to the dest string overwriting the '\\0' character at the end of dest, and then adds a terminating '\\0' character. The strings may not overlap, and the dest string must have enough space for the result. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcat()\fP function returns a pointer to the resulting string dest. +.RE +.PP + +.SS "char * strchr (const char * src, int val)" +.PP +Locate character in string. +.PP +The \fBstrchr()\fP function returns a pointer to the first occurrence of the character \fCval\fP in the string \fCsrc\fP. +.PP +Here 'character' means 'byte' - these functions do not work with wide or multi-byte characters. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrchr()\fP function returns a pointer to the matched character or \fCNULL\fP if the character is not found. +.RE +.PP + +.SS "char * strchrnul (const char * s, int c)" +.PP +The \fBstrchrnul()\fP function is like \fBstrchr()\fP except that if \fCc\fP is not found in \fCs\fP, then it returns a pointer to the null byte at the end of \fCs\fP, rather than \fCNULL\fP. (Glibc, GNU extension.) +.PP +\fBReturns:\fP +.RS 4 +The \fBstrchrnul()\fP function returns a pointer to the matched character, or a pointer to the null byte at the end of \fCs\fP (i.e., \fCs+strlen\fP(s)) if the character is not found. +.RE +.PP + +.SS "int strcmp (const char * s1, const char * s2)" +.PP +Compare two strings. +.PP +The \fBstrcmp()\fP function compares the two strings \fCs1\fP and \fCs2\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcmp()\fP function returns an integer less than, equal to, or greater than zero if \fCs1\fP is found, respectively, to be less than, to match, or be greater than \fCs2\fP. A consequence of the ordering used by \fBstrcmp()\fP is that if \fCs1\fP is an initial substring of \fCs2\fP, then \fCs1\fP is considered to be 'less than' \fCs2\fP. +.RE +.PP + +.SS "char * strcpy (char * dest, const char * src)" +.PP +Copy a string. +.PP +The \fBstrcpy()\fP function copies the string pointed to by src (including the terminating '\\0' character) to the array pointed to by dest. The strings may not overlap, and the destination string dest must be large enough to receive the copy. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcpy()\fP function returns a pointer to the destination string dest. +.RE +.PP +\fBNote:\fP +.RS 4 +If the destination string of a \fBstrcpy()\fP is not large enough (that is, if the programmer was stupid/lazy, and failed to check the size before copying) then anything might happen. Overflowing fixed length strings is a favourite cracker technique. +.RE +.PP + +.SS "size_t strcspn (const char * s, const char * reject)" +.PP +The \fBstrcspn()\fP function calculates the length of the initial segment of \fCs\fP which consists entirely of characters not in \fCreject\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrcspn()\fP function returns the number of characters in the initial segment of \fCs\fP which are not in the string \fCreject\fP. The terminating zero is not considered as a part of string. +.RE +.PP + +.SS "char * strdup (const char * s1)" +.PP +Duplicate a string. +.PP +The \fBstrdup()\fP function allocates memory and copies into it the string addressed by s1, including the terminating null character. +.PP +\fBWarning:\fP +.RS 4 +The \fBstrdup()\fP function calls \fBmalloc()\fP to allocate the memory for the duplicated string! The user is responsible for freeing the memory by calling \fBfree()\fP. +.RE +.PP +\fBReturns:\fP +.RS 4 +The \fBstrdup()\fP function returns a pointer to the resulting string dest. If \fBmalloc()\fP cannot allocate enough storage for the string, \fBstrdup()\fP will return NULL. +.RE +.PP +\fBWarning:\fP +.RS 4 +Be sure to check the return value of the \fBstrdup()\fP function to make sure that the function has succeeded in allocating the memory! +.RE +.PP + +.SS "size_t strlcat (char * dst, const char * src, size_t siz)" +.PP +Concatenate two strings. +.PP +Appends src to string dst of size siz (unlike \fBstrncat()\fP, siz is the full size of dst, not space left). At most siz-1 characters will be copied. Always NULL terminates (unless siz <= strlen(dst)). +.PP +\fBReturns:\fP +.RS 4 +The \fBstrlcat()\fP function returns strlen(src) + MIN(siz, strlen(initial dst)). If retval >= siz, truncation occurred. +.RE +.PP + +.SS "size_t strlcpy (char * dst, const char * src, size_t siz)" +.PP +Copy a string. +.PP +Copy src to string dst of size siz. At most siz-1 characters will be copied. Always NULL terminates (unless siz == 0). +.PP +\fBReturns:\fP +.RS 4 +The \fBstrlcpy()\fP function returns strlen(src). If retval >= siz, truncation occurred. +.RE +.PP + +.SS "size_t strlen (const char * src)" +.PP +Calculate the length of a string. +.PP +The \fBstrlen()\fP function calculates the length of the string src, not including the terminating '\\0' character. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrlen()\fP function returns the number of characters in src. +.RE +.PP + +.SS "char * strlwr (char * s)" +.PP +Convert a string to lower case. +.PP +The \fBstrlwr()\fP function will convert a string to lower case. Only the upper case alphabetic characters [A .. Z] are converted. Non-alphabetic characters will not be changed. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrlwr()\fP function returns a pointer to the converted string. +.RE +.PP + +.SS "int strncasecmp (const char * s1, const char * s2, size_t len)" +.PP +Compare two strings ignoring case. +.PP +The \fBstrncasecmp()\fP function is similar to \fBstrcasecmp()\fP, except it only compares the first \fClen\fP characters of \fCs1\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncasecmp()\fP function returns an integer less than, equal to, or greater than zero if \fCs1\fP (or the first \fClen\fP bytes thereof) is found, respectively, to be less than, to match, or be greater than \fCs2\fP. A consequence of the ordering used by \fBstrncasecmp()\fP is that if \fCs1\fP is an initial substring of \fCs2\fP, then \fCs1\fP is considered to be 'less than' \fCs2\fP. +.RE +.PP + +.SS "char * strncat (char * dest, const char * src, size_t len)" +.PP +Concatenate two strings. +.PP +The \fBstrncat()\fP function is similar to \fBstrcat()\fP, except that only the first n characters of src are appended to dest. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncat()\fP function returns a pointer to the resulting string dest. +.RE +.PP + +.SS "int strncmp (const char * s1, const char * s2, size_t len)" +.PP +Compare two strings. +.PP +The \fBstrncmp()\fP function is similar to \fBstrcmp()\fP, except it only compares the first (at most) n characters of s1 and s2. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncmp()\fP function returns an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2. +.RE +.PP + +.SS "char * strncpy (char * dest, const char * src, size_t len)" +.PP +Copy a string. +.PP +The \fBstrncpy()\fP function is similar to \fBstrcpy()\fP, except that not more than n bytes of src are copied. Thus, if there is no null byte among the first n bytes of src, the result will not be null-terminated. +.PP +In the case where the length of src is less than that of n, the remainder of dest will be padded with nulls. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrncpy()\fP function returns a pointer to the destination string dest. +.RE +.PP + +.SS "size_t strnlen (const char * src, size_t len)" +.PP +Determine the length of a fixed-size string. +.PP +The strnlen function returns the number of characters in the string pointed to by src, not including the terminating '\\0' character, but at most len. In doing this, strnlen looks only at the first len characters at src and never beyond src+len. +.PP +\fBReturns:\fP +.RS 4 +The strnlen function returns strlen(src), if that is less than len, or len if there is no '\\0' character among the first len characters pointed to by src. +.RE +.PP + +.SS "char * strpbrk (const char * s, const char * accept)" +.PP +The \fBstrpbrk()\fP function locates the first occurrence in the string \fCs\fP of any of the characters in the string \fCaccept\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrpbrk()\fP function returns a pointer to the character in \fCs\fP that matches one of the characters in \fCaccept\fP, or \fCNULL\fP if no such character is found. The terminating zero is not considered as a part of string: if one or both args are empty, the result will \fCNULL\fP. +.RE +.PP + +.SS "char * strrchr (const char * src, int val)" +.PP +Locate character in string. +.PP +The \fBstrrchr()\fP function returns a pointer to the last occurrence of the character val in the string src. +.PP +Here 'character' means 'byte' - these functions do not work with wide or multi-byte characters. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrrchr()\fP function returns a pointer to the matched character or NULL if the character is not found. +.RE +.PP + +.SS "char * strrev (char * s)" +.PP +Reverse a string. +.PP +The \fBstrrev()\fP function reverses the order of the string. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrrev()\fP function returns a pointer to the beginning of the reversed string. +.RE +.PP + +.SS "char * strsep (char ** sp, const char * delim)" +.PP +Parse a string into tokens. +.PP +The \fBstrsep()\fP function locates, in the string referenced by \fC*sp\fP, the first occurrence of any character in the string \fCdelim\fP (or the terminating '\\0' character) and replaces it with a '\\0'. The location of the next character after the delimiter character (or \fCNULL\fP, if the end of the string was reached) is stored in \fC*sp\fP. An ``empty'' field, i.e. one caused by two adjacent delimiter characters, can be detected by comparing the location referenced by the pointer returned in \fC*sp\fP to '\\0'. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrsep()\fP function returns a pointer to the original value of \fC*sp\fP. If \fC*sp\fP is initially \fCNULL\fP, \fBstrsep()\fP returns \fCNULL\fP. +.RE +.PP + +.SS "size_t strspn (const char * s, const char * accept)" +.PP +The \fBstrspn()\fP function calculates the length of the initial segment of \fCs\fP which consists entirely of characters in \fCaccept\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrspn()\fP function returns the number of characters in the initial segment of \fCs\fP which consist only of characters from \fCaccept\fP. The terminating zero is not considered as a part of string. +.RE +.PP + +.SS "char * strstr (const char * s1, const char * s2)" +.PP +Locate a substring. +.PP +The \fBstrstr()\fP function finds the first occurrence of the substring \fCs2\fP in the string \fCs1\fP. The terminating '\\0' characters are not compared. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrstr()\fP function returns a pointer to the beginning of the substring, or \fCNULL\fP if the substring is not found. If \fCs2\fP points to a string of zero length, the function returns \fCs1\fP. +.RE +.PP + +.SS "char * strtok (char * s, const char * delim)" +.PP +Parses the string s into tokens. +.PP +strtok parses the string s into tokens. The first call to strtok should have s as its first argument. Subsequent calls should have the first argument set to NULL. If a token ends with a delimiter, this delimiting character is overwritten with a '\\0' and a pointer to the next character is saved for the next call to strtok. The delimiter string delim may be different for each call. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrtok()\fP function returns a pointer to the next token or NULL when no more tokens are found. +.RE +.PP +\fBNote:\fP +.RS 4 +\fBstrtok()\fP is NOT reentrant. For a reentrant version of this function see \fC\fBstrtok_r()\fP\fP. +.RE +.PP + +.SS "char * strtok_r (char * string, const char * delim, char ** last)" +.PP +Parses string into tokens. +.PP +strtok_r parses string into tokens. The first call to strtok_r should have string as its first argument. Subsequent calls should have the first argument set to NULL. If a token ends with a delimiter, this delimiting character is overwritten with a '\\0' and a pointer to the next character is saved for the next call to strtok_r. The delimiter string delim may be different for each call. last is a user allocated char* pointer. It must be the same while parsing the same string. strtok_r is a reentrant version of \fBstrtok()\fP. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrtok_r()\fP function returns a pointer to the next token or NULL when no more tokens are found. +.RE +.PP + +.SS "char * strupr (char * s)" +.PP +Convert a string to upper case. +.PP +The \fBstrupr()\fP function will convert a string to upper case. Only the lower case alphabetic characters [a .. z] are converted. Non-alphabetic characters will not be changed. +.PP +\fBReturns:\fP +.RS 4 +The \fBstrupr()\fP function returns a pointer to the converted string. The pointer is the same as that passed in since the operation is perform in place. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_version.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_version.3 new file mode 100644 index 0000000..e0b6bb8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_version.3 @@ -0,0 +1,69 @@ +.TH ": avr-libc version macros" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: avr-libc version macros \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file defines macros that contain version numbers and strings describing the current version of avr-libc. +.PP +The version number itself basically consists of three pieces that are separated by a dot: the major number, the minor number, and the revision number. For development versions (which use an odd minor number), the string representation additionally gets the date code (YYYYMMDD) appended. +.PP +This file will also be included by \fC<\fBavr/io.h\fP>\fP. That way, portable tests can be implemented using \fC<\fBavr/io.h\fP>\fP that can be used in code that wants to remain backwards-compatible to library versions prior to the date when the library version API had been added, as referenced but undefined C preprocessor macros automatically evaluate to 0. +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB__AVR_LIBC_VERSION_STRING__\fP '1.6.4'" +.br +.ti -1c +.RI "#define \fB__AVR_LIBC_VERSION__\fP 10604UL" +.br +.ti -1c +.RI "#define \fB__AVR_LIBC_DATE_STRING__\fP '20081106'" +.br +.ti -1c +.RI "#define \fB__AVR_LIBC_DATE_\fP 20081106UL" +.br +.ti -1c +.RI "#define \fB__AVR_LIBC_MAJOR__\fP 1" +.br +.ti -1c +.RI "#define \fB__AVR_LIBC_MINOR__\fP 6" +.br +.ti -1c +.RI "#define \fB__AVR_LIBC_REVISION__\fP 4" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define __AVR_LIBC_DATE_ 20081106UL" +.PP +Numerical representation of the release date. +.SS "#define __AVR_LIBC_DATE_STRING__ '20081106'" +.PP +String literal representation of the release date. +.SS "#define __AVR_LIBC_MAJOR__ 1" +.PP +Library major version number. +.SS "#define __AVR_LIBC_MINOR__ 6" +.PP +Library minor version number. +.SS "#define __AVR_LIBC_REVISION__ 4" +.PP +Library revision number. +.SS "#define __AVR_LIBC_VERSION__ 10604UL" +.PP +Numerical representation of the current library version. +.PP +In the numerical representation, the major number is multiplied by 10000, the minor number by 100, and all three parts are then added. It is intented to provide a monotonically increasing numerical value that can easily be used in numerical checks. +.SS "#define __AVR_LIBC_VERSION_STRING__ '1.6.4'" +.PP +String literal representation of the current library version. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_watchdog.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_watchdog.3 new file mode 100644 index 0000000..d4f497a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/avr_watchdog.3 @@ -0,0 +1,173 @@ +.TH ": Watchdog timer handling" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Watchdog timer handling \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file declares the interface to some inline macros handling the watchdog timer present in many AVR devices. In order to prevent the watchdog timer configuration from being accidentally altered by a crashing application, a special timed sequence is required in order to change it. The macros within this header file handle the required sequence automatically before changing any value. Interrupts will be disabled during the manipulation. +.PP +\fBNote:\fP +.RS 4 +Depending on the fuse configuration of the particular device, further restrictions might apply, in particular it might be disallowed to turn off the watchdog timer. +.RE +.PP +Note that for newer devices (ATmega88 and newer, effectively any AVR that has the option to also generate interrupts), the watchdog timer remains active even after a system reset (except a power-on condition), using the fastest prescaler value (approximately 15 ms). It is therefore required to turn off the watchdog early during program startup, the datasheet recommends a sequence like the following: +.PP +.PP +.nf + #include + #include + + uint8_t mcusr_mirror __attribute__ ((section ('.noinit'))); + + void get_mcusr(void) \ + __attribute__((naked)) \ + __attribute__((section('.init3'))); + void get_mcusr(void) + { + mcusr_mirror = MCUSR; + MCUSR = 0; + wdt_disable(); + } +.fi +.PP +.PP +Saving the value of MCUSR in \fCmcusr_mirror\fP is only needed if the application later wants to examine the reset source, but in particular, clearing the watchdog reset flag before disabling the watchdog is required, according to the datasheet. +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBwdt_reset\fP() __asm__ __volatile__ ('wdr')" +.br +.ti -1c +.RI "#define \fBwdt_enable\fP(value)" +.br +.ti -1c +.RI "#define \fBwdt_disable\fP()" +.br +.ti -1c +.RI "#define \fBWDTO_15MS\fP 0" +.br +.ti -1c +.RI "#define \fBWDTO_30MS\fP 1" +.br +.ti -1c +.RI "#define \fBWDTO_60MS\fP 2" +.br +.ti -1c +.RI "#define \fBWDTO_120MS\fP 3" +.br +.ti -1c +.RI "#define \fBWDTO_250MS\fP 4" +.br +.ti -1c +.RI "#define \fBWDTO_500MS\fP 5" +.br +.ti -1c +.RI "#define \fBWDTO_1S\fP 6" +.br +.ti -1c +.RI "#define \fBWDTO_2S\fP 7" +.br +.ti -1c +.RI "#define \fBWDTO_4S\fP 8" +.br +.ti -1c +.RI "#define \fBWDTO_8S\fP 9" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define wdt_disable()" +.PP +\fBValue:\fP +.PP +.nf +__asm__ __volatile__ ( \ + 'in __tmp_reg__, __SREG__' '\n\t' \ + 'cli' '\n\t' \ + 'out %0, %1' '\n\t' \ + 'out %0, __zero_reg__' '\n\t' \ + 'out __SREG__,__tmp_reg__' '\n\t' \ + : /* no outputs */ \ + : 'I' (_SFR_IO_ADDR(_WD_CONTROL_REG)), \ + 'r' ((uint8_t)(_BV(_WD_CHANGE_BIT) | _BV(WDE))) \ + : 'r0' \ +) +.fi +Disable the watchdog timer, if possible. This attempts to turn off the Enable bit in the watchdog control register. See the datasheet for details. +.SS "#define wdt_enable(value)" +.PP +\fBValue:\fP +.PP +.nf +__asm__ __volatile__ ( \ + 'in __tmp_reg__,__SREG__' '\n\t' \ + 'cli' '\n\t' \ + 'wdr' '\n\t' \ + 'out %0,%1' '\n\t' \ + 'out __SREG__,__tmp_reg__' '\n\t' \ + 'out %0,%2' \ + : /* no outputs */ \ + : 'I' (_SFR_IO_ADDR(_WD_CONTROL_REG)), \ + 'r' (_BV(_WD_CHANGE_BIT) | _BV(WDE)), \ + 'r' ((uint8_t) ((value & 0x08 ? _WD_PS3_MASK : 0x00) | \ + _BV(WDE) | (value & 0x07)) ) \ + : 'r0' \ + ) +.fi +Enable the watchdog timer, configuring it for expiry after \fCtimeout\fP (which is a combination of the \fCWDP0\fP through \fCWDP2\fP bits to write into the \fCWDTCR\fP register; For those devices that have a \fCWDTCSR\fP register, it uses the combination of the \fCWDP0\fP through \fCWDP3\fP bits). +.PP +See also the symbolic constants \fCWDTO_15MS\fP et al. +.SS "#define wdt_reset() __asm__ __volatile__ ('wdr')" +.PP +Reset the watchdog timer. When the watchdog timer is enabled, a call to this instruction is required before the timer expires, otherwise a watchdog-initiated device reset will occur. +.SS "#define WDTO_120MS 3" +.PP +See \fCWDT0_15MS\fP +.SS "#define WDTO_15MS 0" +.PP +Symbolic constants for the watchdog timeout. Since the watchdog timer is based on a free-running RC oscillator, the times are approximate only and apply to a supply voltage of 5 V. At lower supply voltages, the times will increase. For older devices, the times will be as large as three times when operating at Vcc = 3 V, while the newer devices (e. g. ATmega128, ATmega8) only experience a negligible change. +.PP +Possible timeout values are: 15 ms, 30 ms, 60 ms, 120 ms, 250 ms, 500 ms, 1 s, 2 s. (Some devices also allow for 4 s and 8 s.) Symbolic constants are formed by the prefix \fCWDTO_\fP, followed by the time. +.PP +Example that would select a watchdog timer expiry of approximately 500 ms: +.PP +.nf + wdt_enable(WDTO_500MS); + +.fi +.PP + +.SS "#define WDTO_1S 6" +.PP +See \fCWDT0_15MS\fP +.SS "#define WDTO_250MS 4" +.PP +See \fCWDT0_15MS\fP +.SS "#define WDTO_2S 7" +.PP +See \fCWDT0_15MS\fP +.SS "#define WDTO_30MS 1" +.PP +See \fCWDT0_15MS\fP +.SS "#define WDTO_4S 8" +.PP +See \fCWDT0_15MS\fP Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega48P, ATmega88P, ATmega168P, ATmega328P, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega8HVA, ATmega16HVA, ATmega32HVB, ATmega406, ATmega1284P, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316 AT90USB82, AT90USB162, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATtiny48, ATtiny88. +.SS "#define WDTO_500MS 5" +.PP +See \fCWDT0_15MS\fP +.SS "#define WDTO_60MS 2" +.PP +\fCWDT0_15MS\fP +.SS "#define WDTO_8S 9" +.PP +See \fCWDT0_15MS\fP Note: This is only available on the ATtiny2313, ATtiny24, ATtiny44, ATtiny84, ATtiny25, ATtiny45, ATtiny85, ATtiny261, ATtiny461, ATtiny861, ATmega48, ATmega88, ATmega168, ATmega48P, ATmega88P, ATmega168P, ATmega328P, ATmega164P, ATmega324P, ATmega644P, ATmega644, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, ATmega8HVA, ATmega16HVA, ATmega32HVB, ATmega406, ATmega1284P, AT90PWM1, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM216, AT90PWM316 AT90USB82, AT90USB162, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287, ATtiny48, ATtiny88. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/benchmarks.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/benchmarks.3 new file mode 100644 index 0000000..5b461c7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/benchmarks.3 @@ -0,0 +1,323 @@ +.TH "benchmarks" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +benchmarks \- Benchmarks +The results below can only give a rough estimate of the resources necessary for using certain library functions. There is a number of factors which can both increase or reduce the effort required: +.PP +.PD 0 +.IP "\(bu" 2 +Expenses for preparation of operands and their stack are not considered. +.PP +.PD 0 +.IP "\(bu" 2 +In the table, the size includes all additional functions (for example, function to multiply two integers) but they are only linked from the library. +.PP +.PD 0 +.IP "\(bu" 2 +Expenses of time of performance of some functions essentially depend on parameters of a call, for example, \fBqsort()\fP is recursive, and \fBsprintf()\fP receives parameters in a stack. +.PP +.PD 0 +.IP "\(bu" 2 +Different versions of the compiler can give a significant difference in code size and execution time. For example, the \fBdtostre()\fP function, compiled with avr-gcc 3.4.6, requires 930 bytes. After transition to avr-gcc 4.2.3, the size become 1088 bytes. +.PP +.SH "A few of libc functions." +.PP +Avr-gcc version is 4.2.3 +.PP +The size of function is given in view of all picked up functions. By default Avr-libc is compiled with \fC-mcall-prologues\fP option. In brackets the size without taking into account modules of a prologue and an epilogue is resulted. Both of the size can coincide, if function does not cause a prologue/epilogue. +.PP + \fBFunction\fP \fBUnits\fP \fBAvr2\fP \fBAvr25\fP \fBAvr4\fP atoi ('12345') Flash bytes +.br +Stack bytes +.br +MCU clocks 82 (82) +.br +2 +.br +155 78 (78) +.br + +.br + 74 (74) +.br +2 +.br +149 atol ('12345') Flash bytes +.br +Stack bytes +.br +MCU clocks 122 (122) +.br +2 +.br +221 118 (118) +.br + +.br + 118 (118) +.br +2 +.br +219 dtostre (1.2345, s, 6, 0) Flash bytes +.br +Stack bytes +.br +MCU clocks 1184 (1072) +.br +17 +.br +1313 1088 (978) +.br + +.br + 1088 (978) +.br +17 +.br +1152 dtostrf (1.2345, 15, 6, s) Flash bytes +.br +Stack bytes +.br +MCU clocks 1676 (1564) +.br +36 +.br +1608 1548 (1438) +.br + +.br + 1548 (1438) +.br +36 +.br +1443 itoa (12345, s, 10) Flash bytes +.br +Stack bytes +.br +MCU clocks 150 (150) +.br +4 +.br +1172 134 (134) +.br + +.br + 134 (134) +.br +4 +.br +1152 ltoa (12345L, s, 10) Flash bytes +.br +Stack bytes +.br +MCU clocks 220 (220) +.br +9 +.br +3174 200 (200) +.br + +.br + 200 (200) +.br +9 +.br +3136 malloc (1) Flash bytes +.br +Stack bytes +.br +MCU clocks 554 (554) +.br +4 +.br +196 506 (506) +.br + +.br + 506 (506) +.br +4 +.br +178 realloc ((void *)0, 1) Flash bytes +.br +Stack bytes +.br +MCU clocks 1152 (1040) +.br +20 +.br +303 1042 (932) +.br + +.br + 1042 (932) +.br +20 +.br +280 qsort (s, sizeof(s), 1, cmp) Flash bytes +.br +Stack bytes +.br +MCU clocks 1242 (1130) +.br +38 +.br +20914 990 (880) +.br + +.br + 1008 (898) +.br +38 +.br +16678 sprintf_min (s, '%d', 12345) Flash bytes +.br +Stack bytes +.br +MCU clocks 1216 (1104) +.br +59 +.br +1846 1090 (980) +.br + +.br + 1086 (976) +.br +59 +.br +1711 sprintf (s, '%d', 12345) Flash bytes +.br +Stack bytes +.br +MCU clocks 1674 (1562) +.br +58 +.br +1610 1542 (1432) +.br + +.br + 1498 (1388) +.br +58 +.br +1528 sprintf_flt (s, '%e', 1.2345) Flash bytes +.br +Stack bytes +.br +MCU clocks 3334 (3222) +.br +66 +.br +2513 3084 (2974) +.br + +.br + 3040 (2930) +.br +66 +.br +2297 sscanf_min ('12345', '%d', &i) Flash bytes +.br +Stack bytes +.br +MCU clocks 1540 (1428) +.br +55 +.br +1339 1354 (1244) +.br + +.br + 1354 (1244) +.br +55 +.br +1240 sscanf ('12345', '%d', &i) Flash bytes +.br +Stack bytes +.br +MCU clocks 1950 (1838) +.br +53 +.br +1334 1704 (1594) +.br + +.br + 1704 (1594) +.br +53 +.br +1235 sscanf ('point,color', '%[a-z]', s) Flash bytes +.br +Stack bytes +.br +MCU clocks 1950 (1838) +.br +87 +.br +2878 1704 (1594) +.br + +.br + 1704 (1594) +.br +87 +.br +2718 sscanf_flt ('1.2345', '%e', &x) Flash bytes +.br +Stack bytes +.br +MCU clocks 3298 (3186) +.br +63 +.br +2187 2934 (2824) +.br + +.br + 2918 (2808) +.br +63 +.br +1833 strtod ('1.2345', &p) Flash bytes +.br +Stack bytes +.br +MCU clocks 1570 (1458) +.br +22 +.br +1237 1472 (1362) +.br + +.br + 1456 (1346) +.br +22 +.br +971 strtol ('12345', &p, 0) Flash bytes +.br +Stack bytes +.br +MCU clocks 942 (830) +.br +29 +.br +1074 874 (764) +.br + +.br + 808 (698) +.br +21 +.br +722 +.SH "Math functions." +.PP +The table contains the number of MCU clocks to calculate a function with a given argument(s). The main reason of a big difference between Avr2 and Avr4 is a hardware multiplication. +.PP +\fBFunction\fP \fBAvr2\fP \fBAvr4\fP __addsf3 (1.234, 5.678) 113 108 __mulsf3 (1.234, 5.678) 375 138 __divsf3 (1.234, 5.678) 466 465 acos (0.54321) 4648 2689 asin (0.54321) 4754 2790 atan (0.54321) 4710 2271 atan2 (1.234, 5.678) 5270 2857 ceil (1.2345) 177 177 cos (1.2345) 3381 1665 cosh (1.2345) 4922 2979 exp (1.2345) 4708 2765 fdim (5.678, 1.234) 111 111 floor (1.2345) 180 180 fmax (1.234, 5.678) 39 37 fmin (1.234, 5.678) 35 35 fmod (5.678, 1.234) 132 132 frexp (1.2345, 0) 37 36 hypot (1.234, 5.678) 1556 1078 ldexp (1.2345, 6) 42 42 log (1.2345) 4142 2134 log10 (1.2345) 4498 2260 modf (1.2345, 0) 433 429 pow (1.234, 5.678) 9293 5047 round (1.2345) 150 150 sin (1.2345) 3347 1647 sinh (1.2345) 4946 3003 sqrt (1.2345) 709 704 tan (1.2345) 4375 2420 tanh (1.2345) 5126 3173 trunc (1.2345) 178 178 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bit_is_clear.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bit_is_clear.3 new file mode 100644 index 0000000..c8b3036 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bit_is_clear.3 @@ -0,0 +1 @@ +.so man3/avr_sfr.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bit_is_set.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bit_is_set.3 new file mode 100644 index 0000000..c8b3036 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bit_is_set.3 @@ -0,0 +1 @@ +.so man3/avr_sfr.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot.h.3 new file mode 100644 index 0000000..c2ebaed --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot.h.3 @@ -0,0 +1,429 @@ +.TH "boot.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +boot.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_AVR_BOOT_H_\fP 1" +.br +.ti -1c +.RI "#define \fBBOOTLOADER_SECTION\fP __attribute__ ((section ('.bootloader')))" +.br +.ti -1c +.RI "#define \fB__COMMON_ASB\fP RWWSB" +.br +.ti -1c +.RI "#define \fB__COMMON_ASRE\fP RWWSRE" +.br +.ti -1c +.RI "#define \fBBLB12\fP 5" +.br +.ti -1c +.RI "#define \fBBLB11\fP 4" +.br +.ti -1c +.RI "#define \fBBLB02\fP 3" +.br +.ti -1c +.RI "#define \fBBLB01\fP 2" +.br +.ti -1c +.RI "#define \fBboot_spm_interrupt_enable\fP() (__SPM_REG |= (\fBuint8_t\fP)_BV(SPMIE))" +.br +.ti -1c +.RI "#define \fBboot_spm_interrupt_disable\fP() (__SPM_REG &= (\fBuint8_t\fP)~_BV(SPMIE))" +.br +.ti -1c +.RI "#define \fBboot_is_spm_interrupt\fP() (__SPM_REG & (\fBuint8_t\fP)_BV(SPMIE))" +.br +.ti -1c +.RI "#define \fBboot_rww_busy\fP() (__SPM_REG & (\fBuint8_t\fP)_BV(__COMMON_ASB))" +.br +.ti -1c +.RI "#define \fBboot_spm_busy\fP() (__SPM_REG & (\fBuint8_t\fP)_BV(__SPM_ENABLE))" +.br +.ti -1c +.RI "#define \fBboot_spm_busy_wait\fP() do{}while(boot_spm_busy())" +.br +.ti -1c +.RI "#define \fB__BOOT_PAGE_ERASE\fP (_BV(__SPM_ENABLE) | _BV(PGERS))" +.br +.ti -1c +.RI "#define \fB__BOOT_PAGE_WRITE\fP (_BV(__SPM_ENABLE) | _BV(PGWRT))" +.br +.ti -1c +.RI "#define \fB__BOOT_PAGE_FILL\fP _BV(__SPM_ENABLE)" +.br +.ti -1c +.RI "#define \fB__BOOT_RWW_ENABLE\fP (_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE))" +.br +.ti -1c +.RI "#define \fB__BOOT_LOCK_BITS_SET\fP (_BV(__SPM_ENABLE) | _BV(BLBSET))" +.br +.ti -1c +.RI "#define \fB__boot_page_fill_normal\fP(address, data)" +.br +.ti -1c +.RI "#define \fB__boot_page_fill_alternate\fP(address, data)" +.br +.ti -1c +.RI "#define \fB__boot_page_fill_extended\fP(address, data)" +.br +.ti -1c +.RI "#define \fB__boot_page_erase_normal\fP(address)" +.br +.ti -1c +.RI "#define \fB__boot_page_erase_alternate\fP(address)" +.br +.ti -1c +.RI "#define \fB__boot_page_erase_extended\fP(address)" +.br +.ti -1c +.RI "#define \fB__boot_page_write_normal\fP(address)" +.br +.ti -1c +.RI "#define \fB__boot_page_write_alternate\fP(address)" +.br +.ti -1c +.RI "#define \fB__boot_page_write_extended\fP(address)" +.br +.ti -1c +.RI "#define \fB__boot_rww_enable\fP()" +.br +.ti -1c +.RI "#define \fB__boot_rww_enable_alternate\fP()" +.br +.ti -1c +.RI "#define \fB__boot_lock_bits_set\fP(lock_bits)" +.br +.ti -1c +.RI "#define \fB__boot_lock_bits_set_alternate\fP(lock_bits)" +.br +.ti -1c +.RI "#define \fBGET_LOW_FUSE_BITS\fP (0x0000)" +.br +.ti -1c +.RI "#define \fBGET_LOCK_BITS\fP (0x0001)" +.br +.ti -1c +.RI "#define \fBGET_EXTENDED_FUSE_BITS\fP (0x0002)" +.br +.ti -1c +.RI "#define \fBGET_HIGH_FUSE_BITS\fP (0x0003)" +.br +.ti -1c +.RI "#define \fBboot_lock_fuse_bits_get\fP(address)" +.br +.ti -1c +.RI "#define \fB__BOOT_SIGROW_READ\fP (_BV(__SPM_ENABLE) | _BV(SIGRD))" +.br +.ti -1c +.RI "#define \fBboot_signature_byte_get\fP(addr)" +.br +.ti -1c +.RI "#define \fBboot_page_fill\fP(address, data) __boot_page_fill_normal(address, data)" +.br +.ti -1c +.RI "#define \fBboot_page_erase\fP(address) __boot_page_erase_normal(address)" +.br +.ti -1c +.RI "#define \fBboot_page_write\fP(address) __boot_page_write_normal(address)" +.br +.ti -1c +.RI "#define \fBboot_rww_enable\fP() __boot_rww_enable()" +.br +.ti -1c +.RI "#define \fBboot_lock_bits_set\fP(lock_bits) __boot_lock_bits_set(lock_bits)" +.br +.ti -1c +.RI "#define \fBboot_page_fill_safe\fP(address, data)" +.br +.ti -1c +.RI "#define \fBboot_page_erase_safe\fP(address)" +.br +.ti -1c +.RI "#define \fBboot_page_write_safe\fP(address)" +.br +.ti -1c +.RI "#define \fBboot_rww_enable_safe\fP()" +.br +.ti -1c +.RI "#define \fBboot_lock_bits_set_safe\fP(lock_bits)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define __boot_lock_bits_set(lock_bits)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint8_t value = (uint8_t)(~(lock_bits)); \ + __asm__ __volatile__ \ + ( \ + 'ldi r30, 1\n\t' \ + 'ldi r31, 0\n\t' \ + 'mov r0, %2\n\t' \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_LOCK_BITS_SET), \ + 'r' (value) \ + : 'r0', 'r30', 'r31' \ + ); \ +})) +.fi +.SS "#define __boot_lock_bits_set_alternate(lock_bits)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint8_t value = (uint8_t)(~(lock_bits)); \ + __asm__ __volatile__ \ + ( \ + 'ldi r30, 1\n\t' \ + 'ldi r31, 0\n\t' \ + 'mov r0, %2\n\t' \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + '.word 0xffff\n\t' \ + 'nop\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_LOCK_BITS_SET), \ + 'r' (value) \ + : 'r0', 'r30', 'r31' \ + ); \ +})) +.fi +.SS "#define __boot_page_erase_alternate(address)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + '.word 0xffff\n\t' \ + 'nop\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_PAGE_ERASE), \ + 'z' ((uint16_t)address) \ + ); \ +})) +.fi +.SS "#define __boot_page_erase_extended(address)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'movw r30, %A3\n\t' \ + 'sts %1, %C3\n\t' \ + 'sts %0, %2\n\t' \ + 'spm\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'i' (_SFR_MEM_ADDR(RAMPZ)), \ + 'r' ((uint8_t)__BOOT_PAGE_ERASE), \ + 'r' ((uint32_t)address) \ + : 'r30', 'r31' \ + ); \ +})) +.fi +.SS "#define __boot_page_erase_normal(address)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_PAGE_ERASE), \ + 'z' ((uint16_t)address) \ + ); \ +})) +.fi +.SS "#define __boot_page_fill_alternate(address, data)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'movw r0, %3\n\t' \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + '.word 0xffff\n\t' \ + 'nop\n\t' \ + 'clr r1\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_PAGE_FILL), \ + 'z' ((uint16_t)address), \ + 'r' ((uint16_t)data) \ + : 'r0' \ + ); \ +})) +.fi +.SS "#define __boot_page_fill_extended(address, data)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'movw r0, %4\n\t' \ + 'movw r30, %A3\n\t' \ + 'sts %1, %C3\n\t' \ + 'sts %0, %2\n\t' \ + 'spm\n\t' \ + 'clr r1\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'i' (_SFR_MEM_ADDR(RAMPZ)), \ + 'r' ((uint8_t)__BOOT_PAGE_FILL), \ + 'r' ((uint32_t)address), \ + 'r' ((uint16_t)data) \ + : 'r0', 'r30', 'r31' \ + ); \ +})) +.fi +.SS "#define __boot_page_fill_normal(address, data)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'movw r0, %3\n\t' \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + 'clr r1\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_PAGE_FILL), \ + 'z' ((uint16_t)address), \ + 'r' ((uint16_t)data) \ + : 'r0' \ + ); \ +})) +.fi +.SS "#define __boot_page_write_alternate(address)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + '.word 0xffff\n\t' \ + 'nop\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_PAGE_WRITE), \ + 'z' ((uint16_t)address) \ + ); \ +})) +.fi +.SS "#define __boot_page_write_extended(address)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'movw r30, %A3\n\t' \ + 'sts %1, %C3\n\t' \ + 'sts %0, %2\n\t' \ + 'spm\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'i' (_SFR_MEM_ADDR(RAMPZ)), \ + 'r' ((uint8_t)__BOOT_PAGE_WRITE), \ + 'r' ((uint32_t)address) \ + : 'r30', 'r31' \ + ); \ +})) +.fi +.SS "#define __boot_page_write_normal(address)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_PAGE_WRITE), \ + 'z' ((uint16_t)address) \ + ); \ +})) +.fi +.SS "#define __boot_rww_enable()" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_RWW_ENABLE) \ + ); \ +})) +.fi +.SS "#define __boot_rww_enable_alternate()" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + 'sts %0, %1\n\t' \ + 'spm\n\t' \ + '.word 0xffff\n\t' \ + 'nop\n\t' \ + : \ + : 'i' (_SFR_MEM_ADDR(__SPM_REG)), \ + 'r' ((uint8_t)__BOOT_RWW_ENABLE) \ + ); \ +})) +.fi +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_is_spm_interrupt.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_is_spm_interrupt.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_is_spm_interrupt.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_bits_set.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_bits_set.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_bits_set.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_bits_set_safe.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_bits_set_safe.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_bits_set_safe.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_fuse_bits_get.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_fuse_bits_get.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_lock_fuse_bits_get.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_erase.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_erase.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_erase.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_erase_safe.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_erase_safe.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_erase_safe.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_fill.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_fill.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_fill.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_fill_safe.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_fill_safe.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_fill_safe.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_write.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_write.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_write.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_write_safe.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_write_safe.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_page_write_safe.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_busy.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_busy.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_busy.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_enable.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_enable.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_enable.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_enable_safe.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_enable_safe.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_rww_enable_safe.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_signature_byte_get.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_signature_byte_get.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_signature_byte_get.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_busy.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_busy.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_busy.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_busy_wait.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_busy_wait.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_busy_wait.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_interrupt_disable.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_interrupt_disable.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_interrupt_disable.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_interrupt_enable.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_interrupt_enable.3 new file mode 100644 index 0000000..b979e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/boot_spm_interrupt_enable.3 @@ -0,0 +1 @@ +.so man3/avr_boot.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bsearch.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bsearch.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/bsearch.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/calloc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/calloc.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/calloc.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cbi.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cbi.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cbi.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ceil.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ceil.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ceil.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clearerr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clearerr.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clearerr.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cli.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cli.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cli.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clock_prescale_get.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clock_prescale_get.3 new file mode 100644 index 0000000..1a30839 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clock_prescale_get.3 @@ -0,0 +1 @@ +.so man3/power.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clock_prescale_set.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clock_prescale_set.3 new file mode 100644 index 0000000..1a30839 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/clock_prescale_set.3 @@ -0,0 +1 @@ +.so man3/power.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/compat_ina90.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/compat_ina90.3 new file mode 100644 index 0000000..ed4630b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/compat_ina90.3 @@ -0,0 +1,20 @@ +.TH ": Compatibility with IAR EWB 3.x" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Compatibility with IAR EWB 3.x \- .PP +.nf + #include +.fi +.PP +.PP +This is an attempt to provide some compatibility with header files that come with IAR C, to make porting applications between different compilers easier. No 100% compatibility though. +.PP +\fBNote:\fP +.RS 4 +For actual documentation, please see the IAR manual. +.RE +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/copysign.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/copysign.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/copysign.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cos.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cos.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cos.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cosh.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cosh.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/cosh.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/crc16.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/crc16.h.3 new file mode 100644 index 0000000..e253178 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/crc16.h.3 @@ -0,0 +1,30 @@ +.TH "crc16.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +crc16.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "static __inline__ \fBuint16_t\fP \fB_crc16_update\fP (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)" +.br +.ti -1c +.RI "static __inline__ \fBuint16_t\fP \fB_crc_xmodem_update\fP (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)" +.br +.ti -1c +.RI "static __inline__ \fBuint16_t\fP \fB_crc_ccitt_update\fP (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)" +.br +.ti -1c +.RI "static __inline__ \fBuint8_t\fP \fB_crc_ibutton_update\fP (\fBuint8_t\fP __crc, \fBuint8_t\fP __data)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ctype.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ctype.3 new file mode 100644 index 0000000..bdaed21 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ctype.3 @@ -0,0 +1,129 @@ +.TH ": Character Operations" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Character Operations \- +.SH "Detailed Description" +.PP +These functions perform various operations on characters. +.PP +.PP +.nf + #include +.fi +.PP + +.PP +.SS "Character classification routines" +These functions perform character classification. They return true or false status depending whether the character passed to the function falls into the function's classification (i.e. \fBisdigit()\fP returns true if its argument is any value '0' though '9', inclusive). If the input is not an unsigned char value, all of this function return false. +.in +1c +.ti -1c +.RI "int \fBisalnum\fP (int __c)" +.br +.ti -1c +.RI "int \fBisalpha\fP (int __c)" +.br +.ti -1c +.RI "int \fBisascii\fP (int __c)" +.br +.ti -1c +.RI "int \fBisblank\fP (int __c)" +.br +.ti -1c +.RI "int \fBiscntrl\fP (int __c)" +.br +.ti -1c +.RI "int \fBisdigit\fP (int __c)" +.br +.ti -1c +.RI "int \fBisgraph\fP (int __c)" +.br +.ti -1c +.RI "int \fBislower\fP (int __c)" +.br +.ti -1c +.RI "int \fBisprint\fP (int __c)" +.br +.ti -1c +.RI "int \fBispunct\fP (int __c)" +.br +.ti -1c +.RI "int \fBisspace\fP (int __c)" +.br +.ti -1c +.RI "int \fBisupper\fP (int __c)" +.br +.ti -1c +.RI "int \fBisxdigit\fP (int __c)" +.br +.in -1c +.SS "Character convertion routines" +This realization permits all possible values of integer argument. The \fBtoascii()\fP function clears all highest bits. The \fBtolower()\fP and \fBtoupper()\fP functions return an input argument as is, if it is not an unsigned char value. +.in +1c +.ti -1c +.RI "int \fBtoascii\fP (int __c)" +.br +.ti -1c +.RI "int \fBtolower\fP (int __c)" +.br +.ti -1c +.RI "int \fBtoupper\fP (int __c)" +.br +.in -1c +.SH "Function Documentation" +.PP +.SS "int isalnum (int __c)" +.PP +Checks for an alphanumeric character. It is equivalent to \fC(isalpha(c) || isdigit(c))\fP. +.SS "int isalpha (int __c)" +.PP +Checks for an alphabetic character. It is equivalent to \fC(isupper(c) || islower(c))\fP. +.SS "int isascii (int __c)" +.PP +Checks whether \fCc\fP is a 7-bit unsigned char value that fits into the ASCII character set. +.SS "int isblank (int __c)" +.PP +Checks for a blank character, that is, a space or a tab. +.SS "int iscntrl (int __c)" +.PP +Checks for a control character. +.SS "int isdigit (int __c)" +.PP +Checks for a digit (0 through 9). +.SS "int isgraph (int __c)" +.PP +Checks for any printable character except space. +.SS "int islower (int __c)" +.PP +Checks for a lower-case character. +.SS "int isprint (int __c)" +.PP +Checks for any printable character including space. +.SS "int ispunct (int __c)" +.PP +Checks for any printable character which is not a space or an alphanumeric character. +.SS "int isspace (int __c)" +.PP +Checks for white-space characters. For the avr-libc library, these are: space, form-feed ('\\f'), newline ('\\n'), carriage return ('\\r'), horizontal tab ('\\t'), and vertical tab ('\\v'). +.SS "int isupper (int __c)" +.PP +Checks for an uppercase letter. +.SS "int isxdigit (int __c)" +.PP +Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F. +.SS "int toascii (int __c)" +.PP +Converts \fCc\fP to a 7-bit unsigned char value that fits into the ASCII character set, by clearing the high-order bits. +.PP +\fBWarning:\fP +.RS 4 +Many people will be unhappy if you use this function. This function will convert accented letters into random characters. +.RE +.PP + +.SS "int tolower (int __c)" +.PP +Converts the letter \fCc\fP to lower case, if possible. +.SS "int toupper (int __c)" +.PP +Converts the letter \fCc\fP to upper case, if possible. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ctype.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ctype.h.3 new file mode 100644 index 0000000..1982933 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ctype.h.3 @@ -0,0 +1,89 @@ +.TH "ctype.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ctype.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB__CTYPE_H_\fP 1" +.br +.in -1c +.SS "Functions" + +.PP +.RI "\fBCharacter classification routines\fP" +.br +These functions perform character classification. They return true or false status depending whether the character passed to the function falls into the function's classification (i.e. \fBisdigit()\fP returns true if its argument is any value '0' though '9', inclusive). If the input is not an unsigned char value, all of this function return false. +.PP +.in +1c +.in +1c +.ti -1c +.RI "int \fBisalnum\fP (int __c)" +.br +.ti -1c +.RI "int \fBisalpha\fP (int __c)" +.br +.ti -1c +.RI "int \fBisascii\fP (int __c)" +.br +.ti -1c +.RI "int \fBisblank\fP (int __c)" +.br +.ti -1c +.RI "int \fBiscntrl\fP (int __c)" +.br +.ti -1c +.RI "int \fBisdigit\fP (int __c)" +.br +.ti -1c +.RI "int \fBisgraph\fP (int __c)" +.br +.ti -1c +.RI "int \fBislower\fP (int __c)" +.br +.ti -1c +.RI "int \fBisprint\fP (int __c)" +.br +.ti -1c +.RI "int \fBispunct\fP (int __c)" +.br +.ti -1c +.RI "int \fBisspace\fP (int __c)" +.br +.ti -1c +.RI "int \fBisupper\fP (int __c)" +.br +.ti -1c +.RI "int \fBisxdigit\fP (int __c)" +.br +.in -1c +.in -1c +.PP +.RI "\fBCharacter convertion routines\fP" +.br +This realization permits all possible values of integer argument. The \fBtoascii()\fP function clears all highest bits. The \fBtolower()\fP and \fBtoupper()\fP functions return an input argument as is, if it is not an unsigned char value. +.PP +.in +1c +.in +1c +.ti -1c +.RI "int \fBtoascii\fP (int __c)" +.br +.ti -1c +.RI "int \fBtolower\fP (int __c)" +.br +.ti -1c +.RI "int \fBtoupper\fP (int __c)" +.br +.in -1c +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/delay.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/delay.h.3 new file mode 100644 index 0000000..2c342ce --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/delay.h.3 @@ -0,0 +1,34 @@ +.TH "delay.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +delay.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_UTIL_DELAY_H_\fP 1" +.br +.ti -1c +.RI "#define \fBF_CPU\fP 1000000UL" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fB_delay_us\fP (double __us)" +.br +.ti -1c +.RI "void \fB_delay_ms\fP (double __ms)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/delay_basic.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/delay_basic.h.3 new file mode 100644 index 0000000..dada6c4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/delay_basic.h.3 @@ -0,0 +1,31 @@ +.TH "delay_basic.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +delay_basic.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_UTIL_DELAY_BASIC_H_\fP 1" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fB_delay_loop_1\fP (\fBuint8_t\fP __count)" +.br +.ti -1c +.RI "void \fB_delay_loop_2\fP (\fBuint16_t\fP __count)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/demo_project.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/demo_project.3 new file mode 100644 index 0000000..90ee0ee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/demo_project.3 @@ -0,0 +1,815 @@ +.TH "A simple project" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +A simple project \- At this point, you should have the GNU tools configured, built, and installed on your system. In this chapter, we present a simple example of using the GNU tools in an AVR project. After reading this chapter, you should have a better feel as to how the tools are used and how a \fCMakefile\fP can be configured. +.SH "The Project" +.PP +This project will use the pulse-width modulator (\fCPWM\fP) to ramp an LED on and off every two seconds. An AT90S2313 processor will be used as the controller. The circuit for this demonstration is shown in the \fBschematic diagram\fP. If you have a development kit, you should be able to use it, rather than build the circuit, for this project. +.PP +\fBNote:\fP +.RS 4 +Meanwhile, the AT90S2313 became obsolete. Either use its successor, the (pin-compatible) ATtiny2313 for the project, or perhaps the ATmega8 or one of its successors (ATmega48/88/168) which have become quite popular since the original demo project had been established. For all these more modern devices, it is no longer necessary to use an external crystal for clocking as they ship with the internal 1 MHz oscillator enabled, so C1, C2, and Q1 can be omitted. Normally, for this experiment, the external circuitry on /RESET (R1, C3) can be omitted as well, leaving only the AVR, the LED, the bypass capacitor C4, and perhaps R2. For the ATmega8/48/88/168, use PB1 (pin 15 at the DIP-28 package) to connect the LED to. Additionally, this demo has been ported to many different other AVRs. The location of the respective OC pin varies between different AVRs, and it is mandated by the AVR hardware. +.RE +.PP + Schematic of circuit for demo projectSchematic of circuit for demo project +.PP +The source code is given in \fBdemo.c\fP. For the sake of this example, create a file called \fCdemo.c\fP containing this source code. Some of the more important parts of the code are: +.PP +\fBNote [1]:\fP.RS 4 +As the AVR microcontroller series has been developed during the past years, new features have been added over time. Even though the basic concepts of the timer/counter1 are still the same as they used to be back in early 2001 when this simple demo was written initially, the names of registers and bits have been changed slightly to reflect the new features. Also, the port and pin mapping of the output compare match 1A (or 1 for older devices) pin which is used to control the LED varies between different AVRs. The file \fCiocompat.h\fP tries to abstract between all this differences using some preprocessor \fC#ifdef\fP statements, so the actual program itself can operate on a common set of symbolic names. The macros defined by that file are: +.RE +.PP +.IP "\(bu" 2 +\fCOCR\fP the name of the OCR register used to control the PWM (usually either OCR1 or OCR1A) +.IP "\(bu" 2 +\fCDDROC\fP the name of the DDR (data direction register) for the OC output +.IP "\(bu" 2 +\fCOC1\fP the pin number of the OC1[A] output within its port +.IP "\(bu" 2 +\fCTIMER1_TOP\fP the TOP value of the timer used for the PWM (1023 for 10-bit PWMs, 255 for devices that can only handle an 8-bit PWM) +.IP "\(bu" 2 +\fCTIMER1_PWM_INIT\fP the initialization bits to be set into control register 1A in order to setup 10-bit (or 8-bit) phase and frequency correct PWM mode +.IP "\(bu" 2 +\fCTIMER1_CLOCKSOURCE\fP the clock bits to set in the respective control register to start the PWM timer; usually the timer runs at full CPU clock for 10-bit PWMs, while it runs on a prescaled clock for 8-bit PWMs +.PP +.PP +\fBNote [2]:\fP.RS 4 +\fBISR()\fP is a macro that marks the function as an interrupt routine. In this case, the function will get called when timer 1 overflows. Setting up interrupts is explained in greater detail in \fB: Interrupts\fP. +.RE +.PP +\fBNote [3]:\fP.RS 4 +The \fCPWM\fP is being used in 10-bit mode, so we need a 16-bit variable to remember the current value. +.RE +.PP +\fBNote [4]:\fP.RS 4 +This section determines the new value of the \fCPWM\fP. +.RE +.PP +\fBNote [5]:\fP.RS 4 +Here's where the newly computed value is loaded into the \fCPWM\fP register. Since we are in an interrupt routine, it is safe to use a 16-bit assignment to the register. Outside of an interrupt, the assignment should only be performed with interrupts disabled if there's a chance that an interrupt routine could also access this register (or another register that uses \fCTEMP\fP), see the appropriate \fBFAQ entry\fP. +.RE +.PP +\fBNote [6]:\fP.RS 4 +This routine gets called after a reset. It initializes the \fCPWM\fP and enables interrupts. +.RE +.PP +\fBNote [7]:\fP.RS 4 +The main loop of the program does nothing -- all the work is done by the interrupt routine! The \fCsleep_mode()\fP puts the processor on sleep until the next interrupt, to conserve power. Of course, that probably won't be noticable as we are still driving a LED, it is merely mentioned here to demonstrate the basic principle. +.RE +.PP +\fBNote [8]:\fP.RS 4 +Early AVR devices saturate their outputs at rather low currents when sourcing current, so the LED can be connected directly, the resulting current through the LED will be about 15 mA. For modern parts (at least for the ATmega 128), however Atmel has drastically increased the IO source capability, so when operating at 5 V Vcc, R2 is needed. Its value should be about 150 Ohms. When operating the circuit at 3 V, it can still be omitted though. +.RE +.PP +.SH "The Source Code" +.PP +.PP +.nf +/* + * ---------------------------------------------------------------------------- + * 'THE BEER-WARE LICENSE' (Revision 42): + * wrote this file. As long as you retain this notice you + * can do whatever you want with this stuff. If we meet some day, and you think + * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch + * ---------------------------------------------------------------------------- + * + * Simple AVR demonstration. Controls a LED that can be directly + * connected from OC1/OC1A to GND. The brightness of the LED is + * controlled with the PWM. After each period of the PWM, the PWM + * value is either incremented or decremented, that's all. + * + * $Id: demo.c,v 1.9 2006/01/05 21:30:10 joerg_wunsch Exp $ + */ + +#include +#include +#include +#include + +#include 'iocompat.h' /* Note [1] */ + +enum { UP, DOWN }; + +ISR (TIMER1_OVF_vect) /* Note [2] */ +{ + static uint16_t pwm; /* Note [3] */ + static uint8_t direction; + + switch (direction) /* Note [4] */ + { + case UP: + if (++pwm == TIMER1_TOP) + direction = DOWN; + break; + + case DOWN: + if (--pwm == 0) + direction = UP; + break; + } + + OCR = pwm; /* Note [5] */ +} + +void +ioinit (void) /* Note [6] */ +{ + /* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */ + TCCR1A = TIMER1_PWM_INIT; + /* + * Start timer 1. + * + * NB: TCCR1A and TCCR1B could actually be the same register, so + * take care to not clobber it. + */ + TCCR1B |= TIMER1_CLOCKSOURCE; + /* + * Run any device-dependent timer 1 setup hook if present. + */ +#if defined(TIMER1_SETUP_HOOK) + TIMER1_SETUP_HOOK(); +#endif + + /* Set PWM value to 0. */ + OCR = 0; + + /* Enable OC1 as output. */ + DDROC = _BV (OC1); + + /* Enable timer 1 overflow interrupt. */ + TIMSK = _BV (TOIE1); + sei (); +} + +int +main (void) +{ + + ioinit (); + + /* loop forever, the interrupts are doing the rest */ + + for (;;) /* Note [7] */ + sleep_mode(); + + return (0); +} +.fi +.PP +.SH "Compiling and Linking" +.PP +This first thing that needs to be done is compile the source. When compiling, the compiler needs to know the processor type so the \fC-mmcu\fP option is specified. The \fC-Os\fP option will tell the compiler to optimize the code for efficient space usage (at the possible expense of code execution speed). The \fC-g\fP is used to embed debug info. The debug info is useful for disassemblies and doesn't end up in the \fC\fP.hex files, so I usually specify it. Finally, the \fC-c\fP tells the compiler to compile and stop -- don't link. This demo is small enough that we could compile and link in one step. However, real-world projects will have several modules and will typically need to break up the building of the project into several compiles and one link. +.PP +.PP +.nf + + $ avr-gcc -g -Os -mmcu=atmega8 -c demo.c +.fi +.PP +.PP +The compilation will create a \fCdemo.o\fP file. Next we link it into a binary called \fCdemo.elf\fP. +.PP +.PP +.nf + + $ avr-gcc -g -mmcu=atmega8 -o demo.elf demo.o +.fi +.PP +.PP +It is important to specify the MCU type when linking. The compiler uses the \fC-mmcu\fP option to choose start-up files and run-time libraries that get linked together. If this option isn't specified, the compiler defaults to the 8515 processor environment, which is most certainly what you didn't want. +.SH "Examining the Object File" +.PP +.PP +Now we have a binary file. Can we do anything useful with it (besides put it into the processor?) The GNU Binutils suite is made up of many useful tools for manipulating object files that get generated. One tool is \fCavr-objdump\fP, which takes information from the object file and displays it in many useful ways. Typing the command by itself will cause it to list out its options. +.PP +For instance, to get a feel of the application's size, the \fC-h\fP option can be used. The output of this option shows how much space is used in each of the sections (the \fC\fP.stab and \fC\fP.stabstr sections hold the debugging information and won't make it into the ROM file). +.PP +An even more useful option is \fC-S\fP. This option disassembles the binary file and intersperses the source code in the output! This method is much better, in my opinion, than using the \fC-S\fP with the compiler because this listing includes routines from the libraries and the vector table contents. Also, all the 'fix-ups' have been satisfied. In other words, the listing generated by this option reflects the actual code that the processor will run. +.PP +.PP +.nf + + $ avr-objdump -h -S demo.elf > demo.lst +.fi +.PP +.PP +Here's the output as saved in the \fCdemo.lst\fP file: +.PP +.PP +.nf + +demo.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000126 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .bss 00000003 00800060 00800060 0000019a 2**0 + ALLOC + 2 .debug_aranges 00000020 00000000 00000000 0000019a 2**0 + CONTENTS, READONLY, DEBUGGING + 3 .debug_pubnames 00000035 00000000 00000000 000001ba 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_info 00000105 00000000 00000000 000001ef 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 000000cf 00000000 00000000 000002f4 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_line 0000014d 00000000 00000000 000003c3 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_frame 00000040 00000000 00000000 00000510 2**2 + CONTENTS, READONLY, DEBUGGING + 8 .debug_str 000000b1 00000000 00000000 00000550 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> + 2: 8c c0 rjmp .+280 ; 0x11c <__bad_interrupt> + 4: 8b c0 rjmp .+278 ; 0x11c <__bad_interrupt> + 6: 8a c0 rjmp .+276 ; 0x11c <__bad_interrupt> + 8: 89 c0 rjmp .+274 ; 0x11c <__bad_interrupt> + a: 88 c0 rjmp .+272 ; 0x11c <__bad_interrupt> + c: 87 c0 rjmp .+270 ; 0x11c <__bad_interrupt> + e: 86 c0 rjmp .+268 ; 0x11c <__bad_interrupt> + 10: 25 c0 rjmp .+74 ; 0x5c <__vector_8> + 12: 84 c0 rjmp .+264 ; 0x11c <__bad_interrupt> + 14: 83 c0 rjmp .+262 ; 0x11c <__bad_interrupt> + 16: 82 c0 rjmp .+260 ; 0x11c <__bad_interrupt> + 18: 81 c0 rjmp .+258 ; 0x11c <__bad_interrupt> + 1a: 80 c0 rjmp .+256 ; 0x11c <__bad_interrupt> + 1c: 7f c0 rjmp .+254 ; 0x11c <__bad_interrupt> + 1e: 7e c0 rjmp .+252 ; 0x11c <__bad_interrupt> + 20: 7d c0 rjmp .+250 ; 0x11c <__bad_interrupt> + 22: 7c c0 rjmp .+248 ; 0x11c <__bad_interrupt> + 24: 7b c0 rjmp .+246 ; 0x11c <__bad_interrupt> + +00000026 <__ctors_end>: + 26: 11 24 eor r1, r1 + 28: 1f be out 0x3f, r1 ; 63 + 2a: cf e5 ldi r28, 0x5F ; 95 + 2c: d4 e0 ldi r29, 0x04 ; 4 + 2e: de bf out 0x3e, r29 ; 62 + 30: cd bf out 0x3d, r28 ; 61 + +00000032 <__do_copy_data>: + 32: 10 e0 ldi r17, 0x00 ; 0 + 34: a0 e6 ldi r26, 0x60 ; 96 + 36: b0 e0 ldi r27, 0x00 ; 0 + 38: e6 e2 ldi r30, 0x26 ; 38 + 3a: f1 e0 ldi r31, 0x01 ; 1 + 3c: 02 c0 rjmp .+4 ; 0x42 <.do_copy_data_start> + +0000003e <.do_copy_data_loop>: + 3e: 05 90 lpm r0, Z+ + 40: 0d 92 st X+, r0 + +00000042 <.do_copy_data_start>: + 42: a0 36 cpi r26, 0x60 ; 96 + 44: b1 07 cpc r27, r17 + 46: d9 f7 brne .-10 ; 0x3e <.do_copy_data_loop> + +00000048 <__do_clear_bss>: + 48: 10 e0 ldi r17, 0x00 ; 0 + 4a: a0 e6 ldi r26, 0x60 ; 96 + 4c: b0 e0 ldi r27, 0x00 ; 0 + 4e: 01 c0 rjmp .+2 ; 0x52 <.do_clear_bss_start> + +00000050 <.do_clear_bss_loop>: + 50: 1d 92 st X+, r1 + +00000052 <.do_clear_bss_start>: + 52: a3 36 cpi r26, 0x63 ; 99 + 54: b1 07 cpc r27, r17 + 56: e1 f7 brne .-8 ; 0x50 <.do_clear_bss_loop> + 58: 4d d0 rcall .+154 ; 0xf4
+ 5a: 61 c0 rjmp .+194 ; 0x11e + +0000005c <__vector_8>: +#include "iocompat.h" /* Note [1] */ + +enum { UP, DOWN }; + +ISR (TIMER1_OVF_vect) /* Note [2] */ +{ + 5c: 1f 92 push r1 + 5e: 0f 92 push r0 + 60: 0f b6 in r0, 0x3f ; 63 + 62: 0f 92 push r0 + 64: 11 24 eor r1, r1 + 66: 2f 93 push r18 + 68: 3f 93 push r19 + 6a: 8f 93 push r24 + static uint16_t pwm; /* Note [3] */ + static uint8_t direction; + + switch (direction) /* Note [4] */ + 6c: 80 91 60 00 lds r24, 0x0060 + 70: 88 23 and r24, r24 + 72: c1 f4 brne .+48 ; 0xa4 <__vector_8+0x48> + { + case UP: + if (++pwm == TIMER1_TOP) + 74: 20 91 61 00 lds r18, 0x0061 + 78: 30 91 62 00 lds r19, 0x0062 + 7c: 2f 5f subi r18, 0xFF ; 255 + 7e: 3f 4f sbci r19, 0xFF ; 255 + 80: 30 93 62 00 sts 0x0062, r19 + 84: 20 93 61 00 sts 0x0061, r18 + 88: 83 e0 ldi r24, 0x03 ; 3 + 8a: 2f 3f cpi r18, 0xFF ; 255 + 8c: 38 07 cpc r19, r24 + 8e: 09 f1 breq .+66 ; 0xd2 <__vector_8+0x76> + if (--pwm == 0) + direction = UP; + break; + } + + OCR = pwm; /* Note [5] */ + 90: 3b bd out 0x2b, r19 ; 43 + 92: 2a bd out 0x2a, r18 ; 42 +} + 94: 8f 91 pop r24 + 96: 3f 91 pop r19 + 98: 2f 91 pop r18 + 9a: 0f 90 pop r0 + 9c: 0f be out 0x3f, r0 ; 63 + 9e: 0f 90 pop r0 + a0: 1f 90 pop r1 + a2: 18 95 reti +ISR (TIMER1_OVF_vect) /* Note [2] */ +{ + static uint16_t pwm; /* Note [3] */ + static uint8_t direction; + + switch (direction) /* Note [4] */ + a4: 81 30 cpi r24, 0x01 ; 1 + a6: 29 f0 breq .+10 ; 0xb2 <__vector_8+0x56> + a8: 20 91 61 00 lds r18, 0x0061 + ac: 30 91 62 00 lds r19, 0x0062 + b0: ef cf rjmp .-34 ; 0x90 <__vector_8+0x34> + if (++pwm == TIMER1_TOP) + direction = DOWN; + break; + + case DOWN: + if (--pwm == 0) + b2: 20 91 61 00 lds r18, 0x0061 + b6: 30 91 62 00 lds r19, 0x0062 + ba: 21 50 subi r18, 0x01 ; 1 + bc: 30 40 sbci r19, 0x00 ; 0 + be: 30 93 62 00 sts 0x0062, r19 + c2: 20 93 61 00 sts 0x0061, r18 + c6: 21 15 cp r18, r1 + c8: 31 05 cpc r19, r1 + ca: 11 f7 brne .-60 ; 0x90 <__vector_8+0x34> + direction = UP; + cc: 10 92 60 00 sts 0x0060, r1 + d0: df cf rjmp .-66 ; 0x90 <__vector_8+0x34> + + switch (direction) /* Note [4] */ + { + case UP: + if (++pwm == TIMER1_TOP) + direction = DOWN; + d2: 81 e0 ldi r24, 0x01 ; 1 + d4: 80 93 60 00 sts 0x0060, r24 + d8: db cf rjmp .-74 ; 0x90 <__vector_8+0x34> + +000000da : + +void +ioinit (void) /* Note [6] */ +{ + /* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */ + TCCR1A = TIMER1_PWM_INIT; + da: 83 e8 ldi r24, 0x83 ; 131 + dc: 8f bd out 0x2f, r24 ; 47 + * Start timer 1. + * + * NB: TCCR1A and TCCR1B could actually be the same register, so + * take care to not clobber it. + */ + TCCR1B |= TIMER1_CLOCKSOURCE; + de: 8e b5 in r24, 0x2e ; 46 + e0: 81 60 ori r24, 0x01 ; 1 + e2: 8e bd out 0x2e, r24 ; 46 +#if defined(TIMER1_SETUP_HOOK) + TIMER1_SETUP_HOOK(); +#endif + + /* Set PWM value to 0. */ + OCR = 0; + e4: 1b bc out 0x2b, r1 ; 43 + e6: 1a bc out 0x2a, r1 ; 42 + + /* Enable OC1 as output. */ + DDROC = _BV (OC1); + e8: 82 e0 ldi r24, 0x02 ; 2 + ea: 87 bb out 0x17, r24 ; 23 + + /* Enable timer 1 overflow interrupt. */ + TIMSK = _BV (TOIE1); + ec: 84 e0 ldi r24, 0x04 ; 4 + ee: 89 bf out 0x39, r24 ; 57 + sei (); + f0: 78 94 sei +} + f2: 08 95 ret + +000000f4
: + +void +ioinit (void) /* Note [6] */ +{ + /* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */ + TCCR1A = TIMER1_PWM_INIT; + f4: 83 e8 ldi r24, 0x83 ; 131 + f6: 8f bd out 0x2f, r24 ; 47 + * Start timer 1. + * + * NB: TCCR1A and TCCR1B could actually be the same register, so + * take care to not clobber it. + */ + TCCR1B |= TIMER1_CLOCKSOURCE; + f8: 8e b5 in r24, 0x2e ; 46 + fa: 81 60 ori r24, 0x01 ; 1 + fc: 8e bd out 0x2e, r24 ; 46 +#if defined(TIMER1_SETUP_HOOK) + TIMER1_SETUP_HOOK(); +#endif + + /* Set PWM value to 0. */ + OCR = 0; + fe: 1b bc out 0x2b, r1 ; 43 + 100: 1a bc out 0x2a, r1 ; 42 + + /* Enable OC1 as output. */ + DDROC = _BV (OC1); + 102: 82 e0 ldi r24, 0x02 ; 2 + 104: 87 bb out 0x17, r24 ; 23 + + /* Enable timer 1 overflow interrupt. */ + TIMSK = _BV (TOIE1); + 106: 84 e0 ldi r24, 0x04 ; 4 + 108: 89 bf out 0x39, r24 ; 57 + sei (); + 10a: 78 94 sei + ioinit (); + + /* loop forever, the interrupts are doing the rest */ + + for (;;) /* Note [7] */ + sleep_mode(); + 10c: 85 b7 in r24, 0x35 ; 53 + 10e: 80 68 ori r24, 0x80 ; 128 + 110: 85 bf out 0x35, r24 ; 53 + 112: 88 95 sleep + 114: 85 b7 in r24, 0x35 ; 53 + 116: 8f 77 andi r24, 0x7F ; 127 + 118: 85 bf out 0x35, r24 ; 53 + 11a: f8 cf rjmp .-16 ; 0x10c + +0000011c <__bad_interrupt>: + 11c: 71 cf rjmp .-286 ; 0x0 <__vectors> + +0000011e : + 11e: f8 94 cli + 120: 00 c0 rjmp .+0 ; 0x122 <_exit> + +00000122 <_exit>: + 122: f8 94 cli + +00000124 <__stop_program>: + 124: ff cf rjmp .-2 ; 0x124 <__stop_program> +.fi +.PP +.SH "Linker Map Files" +.PP +\fCavr-objdump\fP is very useful, but sometimes it's necessary to see information about the link that can only be generated by the linker. A map file contains this information. A map file is useful for monitoring the sizes of your code and data. It also shows where modules are loaded and which modules were loaded from libraries. It is yet another view of your application. To get a map file, I usually add \fC\fB-Wl,-Map,demo.map\fP\fP to my link command. Relink the application using the following command to generate \fCdemo.map\fP (a portion of which is shown below). +.PP +.PP +.nf + + $ avr-gcc -g -mmcu=atmega8 -Wl,-Map,demo.map -o demo.elf demo.o +.fi +.PP +.PP +.PP +Some points of interest in the \fCdemo.map\fP file are: +.PP +.PP +.nf +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x126 + *(.vectors) + .vectors 0x00000000 0x26 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/atmega8/crtm8.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000026 . = ALIGN (0x2) + 0x00000026 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000026 0x0 linker stubs + *(.trampolines*) + 0x00000026 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000026 __ctors_start = . +.fi +.PP +.PP +The \fC\fP.text segment (where program instructions are stored) starts at location 0x0. +.PP +.PP +.nf + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000122 0x4 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_exit.o) + *(.fini0) + 0x00000126 _etext = . + +.data 0x00800060 0x0 load address 0x00000126 + 0x00800060 PROVIDE (__data_start, .) + *(.data) + .data 0x00800060 0x0 demo.o + .data 0x00800060 0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/atmega8/crtm8.o + .data 0x00800060 0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/exit.o + .data 0x00800060 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_exit.o) + .data 0x00800060 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_copy_data.o) + .data 0x00800060 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800060 . = ALIGN (0x2) + 0x00800060 _edata = . + 0x00800060 PROVIDE (__data_end, .) + +.bss 0x00800060 0x3 + 0x00800060 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800060 0x3 demo.o + .bss 0x00800063 0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/atmega8/crtm8.o + .bss 0x00800063 0x0 c:/avrdev/avr-libc/avr-libc-1.6.4/avr/lib/avr4/exit.o + .bss 0x00800063 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_exit.o) + .bss 0x00800063 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_copy_data.o) + .bss 0x00800063 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.2/avr4\libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800063 PROVIDE (__bss_end, .) + 0x00000126 __data_load_start = LOADADDR (.data) + 0x00000126 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800063 0x0 + 0x00800063 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800063 PROVIDE (__noinit_end, .) + 0x00800063 _end = . + 0x00800063 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . +.fi +.PP +.PP +The last address in the \fC\fP.text segment is location \fC0x114\fP ( denoted by \fC_etext\fP ), so the instructions use up 276 bytes of FLASH. +.PP +The \fC\fP.data segment (where initialized static variables are stored) starts at location \fC0x60\fP, which is the first address after the register bank on an ATmega8 processor. +.PP +The next available address in the \fC\fP.data segment is also location \fC0x60\fP, so the application has no initialized data. +.PP +The \fC\fP.bss segment (where uninitialized data is stored) starts at location \fC0x60\fP. +.PP +The next available address in the \fC\fP.bss segment is location 0x63, so the application uses 3 bytes of uninitialized data. +.PP +The \fC\fP.eeprom segment (where EEPROM variables are stored) starts at location 0x0. +.PP +The next available address in the \fC\fP.eeprom segment is also location 0x0, so there aren't any EEPROM variables. +.SH "Generating Intel Hex Files" +.PP +We have a binary of the application, but how do we get it into the processor? Most (if not all) programmers will not accept a GNU executable as an input file, so we need to do a little more processing. The next step is to extract portions of the binary and save the information into \fC\fP.hex files. The GNU utility that does this is called \fCavr-objcopy\fP. +.PP +The ROM contents can be pulled from our project's binary and put into the file demo.hex using the following command: +.PP +.PP +.nf + + $ avr-objcopy -j .text -j .data -O ihex demo.elf demo.hex +.fi +.PP +.PP +The resulting \fCdemo.hex\fP file contains: +.PP +.PP +.nf +:1000000012C08CC08BC08AC089C088C087C086C01F +:1000100025C084C083C082C081C080C07FC07EC034 +:100020007DC07CC07BC011241FBECFE5D4E0DEBF05 +:10003000CDBF10E0A0E6B0E0E6E2F1E002C005903E +:100040000D92A036B107D9F710E0A0E6B0E001C0EC +:100050001D92A336B107E1F74DD061C01F920F92F8 +:100060000FB60F9211242F933F938F9380916000CE +:100070008823C1F420916100309162002F5F3F4FCF +:10008000309362002093610083E02F3F380709F12D +:100090003BBD2ABD8F913F912F910F900FBE0F90C6 +:1000A0001F901895813029F02091610030916200F5 +:1000B000EFCF2091610030916200215030403093A9 +:1000C0006200209361002115310511F71092600044 +:1000D000DFCF81E080936000DBCF83E88FBD8EB5FA +:1000E00081608EBD1BBC1ABC82E087BB84E089BFE7 +:1000F0007894089583E88FBD8EB581608EBD1BBC5A +:100100001ABC82E087BB84E089BF789485B7806899 +:1001100085BF889585B78F7785BFF8CF71CFF89465 +:0601200000C0F894FFCFBF +:00000001FF +.fi +.PP +.PP +The \fC-j\fP option indicates that we want the information from the \fC\fP.text and \fC\fP.data segment extracted. If we specify the EEPROM segment, we can generate a \fC\fP.hex file that can be used to program the EEPROM: +.PP +.PP +.nf + + $ avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex demo.elf demo_eeprom.hex +.fi +.PP +.PP +There is no \fCdemo_eeprom.hex\fP file written, as that file would be empty. +.PP +Starting with version 2.17 of the GNU binutils, the \fCavr-objcopy\fP command that used to generate the empty EEPROM files now aborts because of the empty input section \fC\fP.eeprom, so these empty files are not generated. It also signals an error to the Makefile which will be caught there, and makes it print a message about the empty file not being generated. +.SH "Letting Make Build the Project" +.PP +Rather than type these commands over and over, they can all be placed in a make file. To build the demo project using \fCmake\fP, save the following in a file called \fCMakefile\fP. +.PP +\fBNote:\fP +.RS 4 +This \fCMakefile\fP can only be used as input for the GNU version of \fCmake\fP. +.RE +.PP +.PP +.nf +PRG = demo +OBJ = demo.o +#MCU_TARGET = at90s2313 +#MCU_TARGET = at90s2333 +#MCU_TARGET = at90s4414 +#MCU_TARGET = at90s4433 +#MCU_TARGET = at90s4434 +#MCU_TARGET = at90s8515 +#MCU_TARGET = at90s8535 +#MCU_TARGET = atmega128 +#MCU_TARGET = atmega1280 +#MCU_TARGET = atmega1281 +#MCU_TARGET = atmega1284p +#MCU_TARGET = atmega16 +#MCU_TARGET = atmega163 +#MCU_TARGET = atmega164p +#MCU_TARGET = atmega165 +#MCU_TARGET = atmega165p +#MCU_TARGET = atmega168 +#MCU_TARGET = atmega169 +#MCU_TARGET = atmega169p +#MCU_TARGET = atmega2560 +#MCU_TARGET = atmega2561 +#MCU_TARGET = atmega32 +#MCU_TARGET = atmega324p +#MCU_TARGET = atmega325 +#MCU_TARGET = atmega3250 +#MCU_TARGET = atmega329 +#MCU_TARGET = atmega3290 +#MCU_TARGET = atmega48 +#MCU_TARGET = atmega64 +#MCU_TARGET = atmega640 +#MCU_TARGET = atmega644 +#MCU_TARGET = atmega644p +#MCU_TARGET = atmega645 +#MCU_TARGET = atmega6450 +#MCU_TARGET = atmega649 +#MCU_TARGET = atmega6490 +MCU_TARGET = atmega8 +#MCU_TARGET = atmega8515 +#MCU_TARGET = atmega8535 +#MCU_TARGET = atmega88 +#MCU_TARGET = attiny2313 +#MCU_TARGET = attiny24 +#MCU_TARGET = attiny25 +#MCU_TARGET = attiny26 +#MCU_TARGET = attiny261 +#MCU_TARGET = attiny44 +#MCU_TARGET = attiny45 +#MCU_TARGET = attiny461 +#MCU_TARGET = attiny84 +#MCU_TARGET = attiny85 +#MCU_TARGET = attiny861 +OPTIMIZE = -O2 + +DEFS = +LIBS = + +# You should not have to change anything below here. + +CC = avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) +override LDFLAGS = -Wl,-Map,$(PRG).map + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: $(PRG).elf lst text eeprom + +$(PRG).elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +# dependency: +demo.o: demo.c iocompat.h + +clean: + rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak + rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) + +lst: $(PRG).lst + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +# Rules for building the .text rom images + +text: hex bin srec + +hex: $(PRG).hex +bin: $(PRG).bin +srec: $(PRG).srec + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +# Rules for building the .eeprom rom images + +eeprom: ehex ebin esrec + +ehex: $(PRG)_eeprom.hex +ebin: $(PRG)_eeprom.bin +esrec: $(PRG)_eeprom.srec + +%_eeprom.hex: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.srec: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ \ + || { echo empty $@ not generated; exit 0; } + +%_eeprom.bin: %.elf + $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ \ + || { echo empty $@ not generated; exit 0; } + +# Every thing below here is used by avr-libc's build system and can be ignored +# by the casual user. + +FIG2DEV = fig2dev +EXTRA_CLEAN_FILES = *.hex *.bin *.srec + +dox: eps png pdf + +eps: $(PRG).eps +png: $(PRG).png +pdf: $(PRG).pdf + +%.eps: %.fig + $(FIG2DEV) -L eps $< $@ + +%.pdf: %.fig + $(FIG2DEV) -L pdf $< $@ + +%.png: %.fig + $(FIG2DEV) -L png $< $@ + +.fi +.PP +.SH "Reference to the source code" +.PP +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/demos.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/demos.3 new file mode 100644 index 0000000..165ccfc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/demos.3 @@ -0,0 +1,44 @@ +.TH "Demo projects" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Demo projects \- +.SH "Detailed Description" +.PP +Various small demo projects are provided to illustrate several aspects of using the opensource utilities for the AVR controller series. It should be kept in mind that these demos serve mainly educational purposes, and are normally not directly suitable for use in any production environment. Usually, they have been kept as simple as sufficient to demonstrate one particular feature. +.PP +The \fBsimple project\fP is somewhat like the 'Hello world!' application for a microcontroller, about the most simple project that can be done. It is explained in good detail, to allow the reader to understand the basic concepts behind using the tools on an AVR microcontroller. +.PP +The \fBmore sophisticated demo project\fP builds on top of that simple project, and adds some controls to it. It touches a number of avr-libc's basic concepts on its way. +.PP +A \fBcomprehensive example on using the standard IO facilities\fP intends to explain that complex topic, using a practical microcontroller peripheral setup with one RS-232 connection, and an HD44780-compatible industry-standard LCD display. +.PP +The \fBExample using the two-wire interface (TWI)\fP project explains the use of the two-wire hardware interface (also known as 'I2C') that is present on many AVR controllers. +.PP +Finally, the \fBCombining C and assembly source files\fP demo shows how C and assembly language source files can collaborate within one project. While the overall project is managed by a C program part for easy maintenance, time-critical parts are written directly in manually optimized assembly language for shortest execution times possible. Naturally, this kind of project is very closely tied to the hardware design, thus it is custom-tailored to a particular controller type and peripheral setup. As an alternative to the assembly-language solution, this project also offers a C-only implementation (deploying the exact same peripheral setup) based on a more sophisticated (and thus more expensive) but pin-compatible controller. +.PP +While the simple demo is meant to run on about any AVR setup possible where a LED could be connected to the OCR1[A] output, the \fBlarge\fP and \fBstdio\fP demos are mainly targeted to the Atmel STK500 starter kit, and the \fBTWI\fP example requires a controller where some 24Cxx two-wire EEPPROM can be connected to. For the STK500 demos, the default CPU (either an AT90S8515 or an ATmega8515) should be removed from its socket, and the ATmega16 that ships with the kit should be inserted into socket SCKT3100A3. The ATmega16 offers an on-board ADC that is used in the \fBlarge\fP demo, and all AVRs with an ADC feature a different pinout than the industry-standard compatible devices. +.PP +In order to fully utilize the \fBlarge\fP demo, a female 10-pin header with cable, connecting to a 10 kOhm potentiometer will be useful. +.PP +For the \fBstdio\fP demo, an industry-standard HD44780-compatible LCD display of at least 16x1 characters will be needed. Among other things, the \fCLCD4Linux\fP project page describes many things around these displays, including common pinouts. +.PP +.SS "Modules" + +.in +1c +.ti -1c +.RI "\fBCombining C and assembly source files\fP" +.br +.ti -1c +.RI "\fBA simple project\fP" +.br +.ti -1c +.RI "\fBA more sophisticated project\fP" +.br +.ti -1c +.RI "\fBUsing the standard IO facilities\fP" +.br +.ti -1c +.RI "\fBExample using the two-wire interface (TWI)\fP" +.br +.in -1c diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/deprecated.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/deprecated.3 new file mode 100644 index 0000000..f3d2ffd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/deprecated.3 @@ -0,0 +1,61 @@ +.TH "deprecated" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +deprecated \- Deprecated List + +.IP "\fBGlobal \fBSIGNAL\fP \fP" 1c +Do not use \fBSIGNAL()\fP in new code. Use \fBISR()\fP instead. +.PP +.PP + +.IP "\fBGlobal \fBISR_ALIAS\fP \fP" 1c +For new code, the use of ISR(..., ISR_ALIASOF(...)) is recommended. +.PP +.PP +.PP + +.IP "\fBGlobal \fBtimer_enable_int\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBenable_external_int\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBINTERRUPT\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBinp\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBoutp\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBinb\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBoutb\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBsbi\fP \fP" 1c +.PP +.PP +.PP + +.IP "\fBGlobal \fBcbi\fP \fP" 1c +.PP +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/deprecated_items.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/deprecated_items.3 new file mode 100644 index 0000000..99435c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/deprecated_items.3 @@ -0,0 +1,155 @@ +.TH ": Deprecated items" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Deprecated items \- +.SH "Detailed Description" +.PP +This header file contains several items that used to be available in previous versions of this library, but have eventually been deprecated over time. +.PP +.PP +.nf + #include +.fi +.PP +.PP +These items are supplied within that header file for backward compatibility reasons only, so old source code that has been written for previous library versions could easily be maintained until its end-of-life. Use of any of these items in new code is strongly discouraged. +.PP +.SS "Allowing specific system-wide interrupts" +In addition to globally enabling interrupts, each device's particular interrupt needs to be enabled separately if interrupts for this device are desired. While some devices maintain their interrupt enable bit inside the device's register set, external and timer interrupts have system-wide configuration registers. +.PP +Example: +.PP +.PP +.nf + // Enable timer 1 overflow interrupts. + timer_enable_int(_BV(TOIE1)); + + // Do some work... + + // Disable all timer interrupts. + timer_enable_int(0); +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +Be careful when you use these functions. If you already have a different interrupt enabled, you could inadvertantly disable it by enabling another intterupt. +.RE +.PP + +.in +1c +.ti -1c +.RI "static __inline__ void \fBtimer_enable_int\fP (unsigned char ints)" +.br +.ti -1c +.RI "#define \fBenable_external_int\fP(mask) (__EICR = mask)" +.br +.ti -1c +.RI "#define \fBINTERRUPT\fP(signame)" +.br +.ti -1c +.RI "#define \fB__INTR_ATTRS\fP used" +.br +.in -1c +.SS "Obsolete IO macros" +Back in a time when AVR-GCC and avr-libc could not handle IO port access in the direct assignment form as they are handled now, all IO port access had to be done through specific macros that eventually resulted in inline assembly instructions performing the desired action. +.PP +These macros became obsolete, as reading and writing IO ports can be done by simply using the IO port name in an expression, and all bit manipulation (including those on IO ports) can be done using generic C bit manipulation operators. +.PP +The macros in this group simulate the historical behaviour. While they are supposed to be applied to IO ports, the emulation actually uses standard C methods, so they could be applied to arbitrary memory locations as well. +.in +1c +.ti -1c +.RI "#define \fBinp\fP(port) (port)" +.br +.ti -1c +.RI "#define \fBoutp\fP(val, port) (port) = (val)" +.br +.ti -1c +.RI "#define \fBinb\fP(port) (port)" +.br +.ti -1c +.RI "#define \fBoutb\fP(port, val) (port) = (val)" +.br +.ti -1c +.RI "#define \fBsbi\fP(port, bit) (port) |= (1 << (bit))" +.br +.ti -1c +.RI "#define \fBcbi\fP(port, bit) (port) &= ~(1 << (bit))" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define cbi(port, bit) (port) &= ~(1 << (bit))" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +Clear \fCbit\fP in IO port \fCport\fP. +.SS "#define enable_external_int(mask) (__EICR = mask)" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +This macro gives access to the \fCGIMSK\fP register (or \fCEIMSK\fP register if using an AVR Mega device or \fCGICR\fP register for others). Although this macro is essentially the same as assigning to the register, it does adapt slightly to the type of device being used. This macro is unavailable if none of the registers listed above are defined. +.SS "#define inb(port) (port)" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +Read a value from an IO port \fCport\fP. +.SS "#define inp(port) (port)" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +Read a value from an IO port \fCport\fP. +.SS "#define INTERRUPT(signame)" +.PP +\fBValue:\fP +.PP +.nf +void signame (void) __attribute__ ((interrupt,__INTR_ATTRS)); \ +void signame (void) +.fi +\fBDeprecated\fP +.RS 4 +.RE +.PP +Introduces an interrupt handler function that runs with global interrupts initially enabled. This allows interrupt handlers to be interrupted. +.PP +As this macro has been used by too many unsuspecting people in the past, it has been deprecated, and will be removed in a future version of the library. Users who want to legitimately re-enable interrupts in their interrupt handlers as quickly as possible are encouraged to explicitly declare their handlers as described \fBabove\fP. +.SS "#define outb(port, val) (port) = (val)" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +Write \fCval\fP to IO port \fCport\fP. +.SS "#define outp(val, port) (port) = (val)" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +Write \fCval\fP to IO port \fCport\fP. +.SS "#define sbi(port, bit) (port) |= (1 << (bit))" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +Set \fCbit\fP in IO port \fCport\fP. +.SH "Function Documentation" +.PP +.SS "static __inline__ void timer_enable_int (unsigned char ints)\fC [static]\fP" +.PP +\fBDeprecated\fP +.RS 4 +.RE +.PP +This function modifies the \fCtimsk\fP register. The value you pass via \fCints\fP is device specific. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/div.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/div.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/div.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/div_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/div_t.3 new file mode 100644 index 0000000..9033776 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/div_t.3 @@ -0,0 +1,33 @@ +.TH "div_t" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +div_t \- +.SH SYNOPSIS +.br +.PP +.SH "Detailed Description" +.PP +Result type for function \fBdiv()\fP. +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "int \fBquot\fP" +.br +.ti -1c +.RI "int \fBrem\fP" +.br +.in -1c +.SH "Field Documentation" +.PP +.SS "int \fBdiv_t::quot\fP" +.PP +The Quotient. +.SS "int \fBdiv_t::rem\fP" +.PP +The Remainder. + +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/dtostre.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/dtostre.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/dtostre.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/dtostrf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/dtostrf.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/dtostrf.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_busy_wait.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_busy_wait.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_busy_wait.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_is_ready.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_is_ready.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_is_ready.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_block.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_block.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_block.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_byte.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_byte.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_byte.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_dword.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_dword.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_dword.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_word.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_word.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_read_word.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_block.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_block.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_block.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_byte.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_byte.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_byte.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_dword.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_dword.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_dword.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_word.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_word.3 new file mode 100644 index 0000000..590ca2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/eeprom_write_word.3 @@ -0,0 +1 @@ +.so man3/avr_eeprom.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/enable_external_int.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/enable_external_int.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/enable_external_int.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/errno.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/errno.3 new file mode 100644 index 0000000..6fb871f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/errno.3 @@ -0,0 +1 @@ +.so man3/errno.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/errno.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/errno.h.3 new file mode 100644 index 0000000..0321294 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/errno.h.3 @@ -0,0 +1,34 @@ +.TH "errno.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +errno.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB__ERRNO_H_\fP 1" +.br +.ti -1c +.RI "#define \fBEDOM\fP 33" +.br +.ti -1c +.RI "#define \fBERANGE\fP 34" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "int \fBerrno\fP" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/exit.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/exit.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/exit.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/exp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/exp.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/exp.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fabs.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fabs.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fabs.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fclose.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fclose.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fclose.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_close.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_close.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_close.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_get_udata.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_get_udata.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_get_udata.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_set_udata.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_set_udata.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdev_set_udata.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdevopen.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdevopen.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdevopen.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdevopen.c.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdevopen.c.3 new file mode 100644 index 0000000..ec707d0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdevopen.c.3 @@ -0,0 +1,21 @@ +.TH "fdevopen.c" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +fdevopen.c \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "FILE * \fBfdevopen\fP (int(*put)(char, FILE *), int(*get)(FILE *))" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdim.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdim.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fdim.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/feof.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/feof.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/feof.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ferror.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ferror.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ferror.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fflush.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fflush.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fflush.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffs.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffs.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffs.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffs.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffs.S.3 new file mode 100644 index 0000000..c5f0bae --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffs.S.3 @@ -0,0 +1,14 @@ +.TH "ffs.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ffs.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsl.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsl.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsl.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsl.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsl.S.3 new file mode 100644 index 0000000..b4cb334 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsl.S.3 @@ -0,0 +1,14 @@ +.TH "ffsl.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ffsl.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsll.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsll.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsll.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsll.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsll.S.3 new file mode 100644 index 0000000..57b318a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ffsll.S.3 @@ -0,0 +1,14 @@ +.TH "ffsll.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ffsll.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fgetc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fgetc.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fgetc.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fgets.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fgets.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fgets.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/floor.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/floor.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/floor.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fma.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fma.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fma.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmax.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmax.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmax.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmin.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmin.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmin.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmod.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmod.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fmod.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fprintf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fprintf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fprintf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fprintf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fprintf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fprintf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputc.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputc.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputs.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputs.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputs.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputs_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputs_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fputs_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fread.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fread.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fread.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/free.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/free.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/free.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/frexp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/frexp.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/frexp.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fscanf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fscanf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fscanf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fscanf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fscanf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fscanf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fuse.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fuse.h.3 new file mode 100644 index 0000000..7071b5a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fuse.h.3 @@ -0,0 +1,27 @@ +.TH "fuse.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +fuse.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_AVR_FUSE_H_\fP 1" +.br +.ti -1c +.RI "#define \fBFUSEMEM\fP __attribute__((section ('.fuse')))" +.br +.ti -1c +.RI "#define \fBFUSES\fP __fuse_t __fuse FUSEMEM" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fwrite.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fwrite.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/fwrite.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/getc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/getc.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/getc.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/getchar.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/getchar.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/getchar.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/gets.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/gets.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/gets.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/hypot.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/hypot.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/hypot.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inb.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inb.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inb.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inline_asm.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inline_asm.3 new file mode 100644 index 0000000..62a62ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inline_asm.3 @@ -0,0 +1,507 @@ +.TH "inline_asm" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +inline_asm \- Inline Assembler Cookbook +AVR-GCC +.br + Inline Assembler Cookbook +.PP +About this Document +.PP +The GNU C compiler for Atmel AVR RISC processors offers, to embed assembly language code into C programs. This cool feature may be used for manually optimizing time critical parts of the software or to use specific processor instruction, which are not available in the C language. +.PP +Because of a lack of documentation, especially for the AVR version of the compiler, it may take some time to figure out the implementation details by studying the compiler and assembler source code. There are also a few sample programs available in the net. Hopefully this document will help to increase their number. +.PP +It's assumed, that you are familiar with writing AVR assembler programs, because this is not an AVR assembler programming tutorial. It's not a C language tutorial either. +.PP +Note that this document does not cover file written completely in assembler language, refer to \fBavr-libc and assembler programs\fP for this. +.PP +Copyright (C) 2001-2002 by egnite Software GmbH +.PP +Permission is granted to copy and distribute verbatim copies of this manual provided that the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. +.PP +This document describes version 3.3 of the compiler. There may be some parts, which hadn't been completely understood by the author himself and not all samples had been tested so far. Because the author is German and not familiar with the English language, there are definitely some typos and syntax errors in the text. As a programmer the author knows, that a wrong documentation sometimes might be worse than none. Anyway, he decided to offer his little knowledge to the public, in the hope to get enough response to improve this document. Feel free to contact the author via e-mail. For the latest release check http://www.ethernut.de/. +.PP +Herne, 17th of May 2002 Harald Kipp harald.kipp-at-egnite.de +.PP +\fBNote:\fP +.RS 4 +As of 26th of July 2002, this document has been merged into the documentation for avr-libc. The latest version is now available at http://savannah.nongnu.org/projects/avr-libc/. +.RE +.PP +.SH "GCC asm Statement" +.PP +Let's start with a simple example of reading a value from port D: +.PP +.PP +.nf +asm('in %0, %1' : '=r' (value) : 'I' (_SFR_IO_ADDR(PORTD)) ); +.fi +.PP +.PP +Each \fCasm\fP statement is devided by colons into (up to) four parts: +.PP +.IP "1." 4 +The assembler instructions, defined as a single string constant: +.PP +.nf + 'in %0, %1' + +.fi +.PP + +.IP "2." 4 +A list of output operands, separated by commas. Our example uses just one: +.PP +.nf + '=r' (value) + +.fi +.PP + +.IP "3." 4 +A comma separated list of input operands. Again our example uses one operand only: +.PP +.nf + 'I' (_SFR_IO_ADDR(PORTD)) + +.fi +.PP + +.IP "4." 4 +Clobbered registers, left empty in our example. +.PP +.PP +You can write assembler instructions in much the same way as you would write assembler programs. However, registers and constants are used in a different way if they refer to expressions of your C program. The connection between registers and C operands is specified in the second and third part of the \fCasm\fP instruction, the list of input and output operands, respectively. The general form is +.PP +.PP +.nf +asm(code : output operand list : input operand list [: clobber list]); +.fi +.PP +.PP +In the code section, operands are referenced by a percent sign followed by a single digit. \fC0\fP refers to the first \fC1\fP to the second operand and so forth. From the above example: +.PP +\fC0\fP refers to \fC'=r' (value)\fP and +.br + \fC1\fP refers to \fC'I' (_SFR_IO_ADDR(PORTD))\fP. +.PP +This may still look a little odd now, but the syntax of an operand list will be explained soon. Let us first examine the part of a compiler listing which may have been generated from our example: +.PP +.PP +.nf + lds r24,value +/* #APP */ + in r24, 12 +/* #NOAPP */ + sts value,r24 +.fi +.PP +.PP +The comments have been added by the compiler to inform the assembler that the included code was not generated by the compilation of C statements, but by inline assembler statements. The compiler selected register \fCr24\fP for storage of the value read from \fCPORTD\fP. The compiler could have selected any other register, though. It may not explicitely load or store the value and it may even decide not to include your assembler code at all. All these decisions are part of the compiler's optimization strategy. For example, if you never use the variable value in the remaining part of the C program, the compiler will most likely remove your code unless you switched off optimization. To avoid this, you can add the volatile attribute to the \fCasm\fP statement: +.PP +.PP +.nf +asm volatile('in %0, %1' : '=r' (value) : 'I' (_SFR_IO_ADDR(PORTD))); +.fi +.PP +.PP +Alternatively, operands can be given names. The name is prepended in brackets to the constraints in the operand list, and references to the named operand use the bracketed name instead of a number after the % sign. Thus, the above example could also be written as +.PP +.PP +.nf +asm('in %[retval], %[port]' : + [retval] '=r' (value) : + [port] 'I' (_SFR_IO_ADDR(PORTD)) ); +.fi +.PP +.PP +The last part of the \fCasm\fP instruction, the clobber list, is mainly used to tell the compiler about modifications done by the assembler code. This part may be omitted, all other parts are required, but may be left empty. If your assembler routine won't use any input or output operand, two colons must still follow the assembler code string. A good example is a simple statement to disable interrupts: +.PP +.PP +.nf +asm volatile('cli'::); +.fi +.PP +.SH "Assembler Code" +.PP +You can use the same assembler instruction mnemonics as you'd use with any other AVR assembler. And you can write as many assembler statements into one code string as you like and your flash memory is able to hold. +.PP +\fBNote:\fP +.RS 4 +The available assembler directives vary from one assembler to another. +.RE +.PP +To make it more readable, you should put each statement on a seperate line: +.PP +.PP +.nf +asm volatile('nop\n\t' + 'nop\n\t' + 'nop\n\t' + 'nop\n\t' + ::); +.fi +.PP +.PP +The linefeed and tab characters will make the assembler listing generated by the compiler more readable. It may look a bit odd for the first time, but that's the way the compiler creates it's own assembler code. +.PP +You may also make use of some special registers. +.PP +\fBSymbol\fP \fBRegister\fP \fC__SREG__\fP Status register at address 0x3F \fC__SP_H__\fP Stack pointer high byte at address 0x3E \fC__SP_L__\fP Stack pointer low byte at address 0x3D \fC__tmp_reg__\fP Register r0, used for temporary storage \fC__zero_reg__\fP Register r1, always zero +.PP +Register \fCr0\fP may be freely used by your assembler code and need not be restored at the end of your code. It's a good idea to use \fC__tmp_reg__\fP and \fC__zero_reg__\fP instead of \fCr0\fP or \fCr1\fP, just in case a new compiler version changes the register usage definitions. +.SH "Input and Output Operands" +.PP +Each input and output operand is described by a constraint string followed by a C expression in parantheses. \fCAVR-GCC\fP 3.3 knows the following constraint characters: +.PP +\fBNote:\fP +.RS 4 +The most up-to-date and detailed information on contraints for the avr can be found in the gcc manual. +.PP +The \fCx\fP register is \fCr27:r26\fP, the \fCy\fP register is \fCr29:r28\fP, and the \fCz\fP register is \fCr31:r30\fP +.RE +.PP +\fBConstraint\fP\fBUsed for\fP\fBRange\fP aSimple upper registersr16 to r23 bBase pointer registers pairsy, z dUpper registerr16 to r31 ePointer register pairsx, y, z qStack pointer registerSPH:SPL rAny registerr0 to r31 tTemporary registerr0 wSpecial upper register pairsr24, r26, r28, r30 xPointer register pair Xx (r27:r26) yPointer register pair Yy (r29:r28) zPointer register pair Zz (r31:r30) GFloating point constant0.0 I6-bit positive integer constant0 to 63 J6-bit negative integer constant-63 to 0 KInteger constant2 LInteger constant0 lLower registersr0 to r15 M8-bit integer constant0 to 255 NInteger constant-1 OInteger constant8, 16, 24 PInteger constant1 Q(GCC >= 4.2.x) A memory address based on Y or Z pointer with displacement. R(GCC >= 4.3.x) Integer constant.-6 to 5 +.PP +The selection of the proper contraint depends on the range of the constants or registers, which must be acceptable to the AVR instruction they are used with. The C compiler doesn't check any line of your assembler code. But it is able to check the constraint against your C expression. However, if you specify the wrong constraints, then the compiler may silently pass wrong code to the assembler. And, of course, the assembler will fail with some cryptic output or internal errors. For example, if you specify the constraint \fC'r'\fP and you are using this register with an \fC'ori'\fP instruction in your assembler code, then the compiler may select any register. This will fail, if the compiler chooses \fCr2\fP to \fCr15\fP. (It will never choose \fCr0\fP or \fCr1\fP, because these are uses for special purposes.) That's why the correct constraint in that case is \fC'd'\fP. On the other hand, if you use the constraint \fC'M'\fP, the compiler will make sure that you don't pass anything else but an 8-bit value. Later on we will see how to pass multibyte expression results to the assembler code. +.PP +The following table shows all AVR assembler mnemonics which require operands, and the related contraints. Because of the improper constraint definitions in version 3.3, they aren't strict enough. There is, for example, no constraint, which restricts integer constants to the range 0 to 7 for bit set and bit clear operations. +.PP +\fBMnemonic\fP \fBConstraints\fP \fBMnemonic\fP \fBConstraints\fP adc r,r add r,r adiw w,I and r,r andi d,M asr r bclr I bld r,I brbc I,label brbs I,label bset I bst r,I cbi I,I cbr d,I com r cp r,r cpc r,r cpi d,M cpse r,r dec r elpm t,z eor r,r in r,I inc r ld r,e ldd r,b ldi d,M lds r,label lpm t,z lsl r lsr r mov r,r movw r,r mul r,r neg r or r,r ori d,M out I,r pop r push r rol r ror r sbc r,r sbci d,M sbi I,I sbic I,I sbiw w,I sbr d,M sbrc r,I sbrs r,I ser d st e,r std b,r sts label,r sub r,r subi d,M swap r +.PP +Constraint characters may be prepended by a single constraint modifier. Contraints without a modifier specify read-only operands. Modifiers are: +.PP +\fBModifier\fP \fBSpecifies\fP = Write-only operand, usually used for all output operands. + Read-write operand & Register should be used for output only +.PP +Output operands must be write-only and the C expression result must be an lvalue, which means that the operands must be valid on the left side of assignments. Note, that the compiler will not check if the operands are of reasonable type for the kind of operation used in the assembler instructions. +.PP +Input operands are, you guessed it, read-only. But what if you need the same operand for input and output? As stated above, read-write operands are not supported in inline assembler code. But there is another solution. For input operators it is possible to use a single digit in the constraint string. Using digit n tells the compiler to use the same register as for the n-th operand, starting with zero. Here is an example: +.PP +.PP +.nf +asm volatile('swap %0' : '=r' (value) : '0' (value)); +.fi +.PP +.PP +This statement will swap the nibbles of an 8-bit variable named value. Constraint \fC'0'\fP tells the compiler, to use the same input register as for the first operand. Note however, that this doesn't automatically imply the reverse case. The compiler may choose the same registers for input and output, even if not told to do so. This is not a problem in most cases, but may be fatal if the output operator is modified by the assembler code before the input operator is used. In the situation where your code depends on different registers used for input and output operands, you must add the \fC&\fP constraint modifier to your output operand. The following example demonstrates this problem: +.PP +.PP +.nf +asm volatile('in %0,%1' '\n\t' + 'out %1, %2' '\n\t' + : '=&r' (input) + : 'I' (_SFR_IO_ADDR(port)), 'r' (output) + ); +.fi +.PP +.PP +In this example an input value is read from a port and then an output value is written to the same port. If the compiler would have choosen the same register for input and output, then the output value would have been destroyed on the first assembler instruction. Fortunately, this example uses the \fC&\fP constraint modifier to instruct the compiler not to select any register for the output value, which is used for any of the input operands. Back to swapping. Here is the code to swap high and low byte of a 16-bit value: +.PP +.PP +.nf +asm volatile('mov __tmp_reg__, %A0' '\n\t' + 'mov %A0, %B0' '\n\t' + 'mov %B0, __tmp_reg__' '\n\t' + : '=r' (value) + : '0' (value) + ); +.fi +.PP +.PP +First you will notice the usage of register \fC__tmp_reg__\fP, which we listed among other special registers in the \fBAssembler Code\fP section. You can use this register without saving its contents. Completely new are those letters \fCA\fP and \fCB\fP in \fC%A0\fP and \fC%B0\fP. In fact they refer to two different 8-bit registers, both containing a part of value. +.PP +Another example to swap bytes of a 32-bit value: +.PP +.PP +.nf +asm volatile('mov __tmp_reg__, %A0' '\n\t' + 'mov %A0, %D0' '\n\t' + 'mov %D0, __tmp_reg__' '\n\t' + 'mov __tmp_reg__, %B0' '\n\t' + 'mov %B0, %C0' '\n\t' + 'mov %C0, __tmp_reg__' '\n\t' + : '=r' (value) + : '0' (value) + ); +.fi +.PP +.PP +Instead of listing the same operand as both, input and output operand, it can also be declared as a read-write operand. This must be applied to an output operand, and the respective input operand list remains empty: +.PP +.PP +.nf +asm volatile('mov __tmp_reg__, %A0' '\n\t' + 'mov %A0, %D0' '\n\t' + 'mov %D0, __tmp_reg__' '\n\t' + 'mov __tmp_reg__, %B0' '\n\t' + 'mov %B0, %C0' '\n\t' + 'mov %C0, __tmp_reg__' '\n\t' + : '+r' (value)); +.fi +.PP +.PP +If operands do not fit into a single register, the compiler will automatically assign enough registers to hold the entire operand. In the assembler code you use \fC%A0\fP to refer to the lowest byte of the first operand, \fC%A1\fP to the lowest byte of the second operand and so on. The next byte of the first operand will be \fC%B0\fP, the next byte \fC%C0\fP and so on. +.PP +This also implies, that it is often neccessary to cast the type of an input operand to the desired size. +.PP +A final problem may arise while using pointer register pairs. If you define an input operand +.PP +.PP +.nf +'e' (ptr) +.fi +.PP +.PP +and the compiler selects register \fCZ\fP \fC\fP(r30:r31), then +.PP +\fC%A0\fP refers to \fCr30\fP and +.br + \fC%B0\fP refers to \fCr31\fP. +.PP +But both versions will fail during the assembly stage of the compiler, if you explicitely need \fCZ\fP, like in +.PP +.PP +.nf +ld r24,Z +.fi +.PP +.PP +If you write +.PP +.PP +.nf +ld r24, %a0 +.fi +.PP +.PP +with a lower case \fCa\fP following the percent sign, then the compiler will create the proper assembler line. +.SH "Clobbers" +.PP +As stated previously, the last part of the \fCasm\fP statement, the list of clobbers, may be omitted, including the colon seperator. However, if you are using registers, which had not been passed as operands, you need to inform the compiler about this. The following example will do an atomic increment. It increments an 8-bit value pointed to by a pointer variable in one go, without being interrupted by an interrupt routine or another thread in a multithreaded environment. Note, that we must use a pointer, because the incremented value needs to be stored before interrupts are enabled. +.PP +.PP +.nf +asm volatile( + 'cli' '\n\t' + 'ld r24, %a0' '\n\t' + 'inc r24' '\n\t' + 'st %a0, r24' '\n\t' + 'sei' '\n\t' + : + : 'e' (ptr) + : 'r24' +); +.fi +.PP +.PP +The compiler might produce the following code: +.PP +.PP +.nf + cli + ld r24, Z + inc r24 + st Z, r24 + sei +.fi +.PP +.PP +One easy solution to avoid clobbering register \fCr24\fP is, to make use of the special temporary register \fC__tmp_reg__\fP defined by the compiler. +.PP +.PP +.nf +asm volatile( + 'cli' '\n\t' + 'ld __tmp_reg__, %a0' '\n\t' + 'inc __tmp_reg__' '\n\t' + 'st %a0, __tmp_reg__' '\n\t' + 'sei' '\n\t' + : + : 'e' (ptr) +); +.fi +.PP +.PP +The compiler is prepared to reload this register next time it uses it. Another problem with the above code is, that it should not be called in code sections, where interrupts are disabled and should be kept disabled, because it will enable interrupts at the end. We may store the current status, but then we need another register. Again we can solve this without clobbering a fixed, but let the compiler select it. This could be done with the help of a local C variable. +.PP +.PP +.nf +{ + uint8_t s; + asm volatile( + 'in %0, __SREG__' '\n\t' + 'cli' '\n\t' + 'ld __tmp_reg__, %a1' '\n\t' + 'inc __tmp_reg__' '\n\t' + 'st %a1, __tmp_reg__' '\n\t' + 'out __SREG__, %0' '\n\t' + : '=&r' (s) + : 'e' (ptr) + ); +} +.fi +.PP +.PP +Now every thing seems correct, but it isn't really. The assembler code modifies the variable, that \fCptr\fP points to. The compiler will not recognize this and may keep its value in any of the other registers. Not only does the compiler work with the wrong value, but the assembler code does too. The C program may have modified the value too, but the compiler didn't update the memory location for optimization reasons. The worst thing you can do in this case is: +.PP +.PP +.nf +{ + uint8_t s; + asm volatile( + 'in %0, __SREG__' '\n\t' + 'cli' '\n\t' + 'ld __tmp_reg__, %a1' '\n\t' + 'inc __tmp_reg__' '\n\t' + 'st %a1, __tmp_reg__' '\n\t' + 'out __SREG__, %0' '\n\t' + : '=&r' (s) + : 'e' (ptr) + : 'memory' + ); +} +.fi +.PP +.PP +The special clobber 'memory' informs the compiler that the assembler code may modify any memory location. It forces the compiler to update all variables for which the contents are currently held in a register before executing the assembler code. And of course, everything has to be reloaded again after this code. +.PP +In most situations, a much better solution would be to declare the pointer destination itself volatile: +.PP +.PP +.nf +volatile uint8_t *ptr; +.fi +.PP +.PP +This way, the compiler expects the value pointed to by \fCptr\fP to be changed and will load it whenever used and store it whenever modified. +.PP +Situations in which you need clobbers are very rare. In most cases there will be better ways. Clobbered registers will force the compiler to store their values before and reload them after your assembler code. Avoiding clobbers gives the compiler more freedom while optimizing your code. +.SH "Assembler Macros" +.PP +In order to reuse your assembler language parts, it is useful to define them as macros and put them into include files. AVR Libc comes with a bunch of them, which could be found in the directory \fCavr/include\fP. Using such include files may produce compiler warnings, if they are used in modules, which are compiled in strict ANSI mode. To avoid that, you can write \fC__asm__\fP instead of \fCasm\fP and \fC__volatile__\fP instead of \fCvolatile\fP. These are equivalent aliases. +.PP +Another problem with reused macros arises if you are using labels. In such cases you may make use of the special pattern \fC=\fP, which is replaced by a unique number on each \fCasm\fP statement. The following code had been taken from \fCavr/include/iomacros.h\fP: +.PP +.PP +.nf +#define loop_until_bit_is_clear(port,bit) \ + __asm__ __volatile__ ( \ + "L_%=: " "sbic %0, %1" "\n\t" \ + "rjmp L_%=" \ + : /* no outputs */ + : "I" (_SFR_IO_ADDR(port)), + "I" (bit) + ) +.fi +.PP +.PP +When used for the first time, \fCL_=\fP may be translated to \fCL_1404\fP, the next usage might create \fCL_1405\fP or whatever. In any case, the labels became unique too. +.PP +Another option is to use Unix-assembler style numeric labels. They are explained in \fBHow do I trace an assembler file in avr-gdb?\fP. The above example would then look like: +.PP +.PP +.nf +#define loop_until_bit_is_clear(port,bit) + __asm__ __volatile__ ( + "1: " "sbic %0, %1" "\n\t" + "rjmp 1b" + : /* no outputs */ + : "I" (_SFR_IO_ADDR(port)), + "I" (bit) + ) +.fi +.PP +.SH "C Stub Functions" +.PP +Macro definitions will include the same assembler code whenever they are referenced. This may not be acceptable for larger routines. In this case you may define a C stub function, containing nothing other than your assembler code. +.PP +.PP +.nf +void delay(uint8_t ms) +{ + uint16_t cnt; + asm volatile ( + '\n' + 'L_dl1%=:' '\n\t' + 'mov %A0, %A2' '\n\t' + 'mov %B0, %B2' '\n' + 'L_dl2%=:' '\n\t' + 'sbiw %A0, 1' '\n\t' + 'brne L_dl2%=' '\n\t' + 'dec %1' '\n\t' + 'brne L_dl1%=' '\n\t' + : '=&w' (cnt) + : 'r' (ms), 'r' (delay_count) + ); +} +.fi +.PP +.PP +The purpose of this function is to delay the program execution by a specified number of milliseconds using a counting loop. The global 16 bit variable delay_count must contain the CPU clock frequency in Hertz divided by 4000 and must have been set before calling this routine for the first time. As described in the \fBclobber\fP section, the routine uses a local variable to hold a temporary value. +.PP +Another use for a local variable is a return value. The following function returns a 16 bit value read from two successive port addresses. +.PP +.PP +.nf +uint16_t inw(uint8_t port) +{ + uint16_t result; + asm volatile ( + 'in %A0,%1' '\n\t' + 'in %B0,(%1) + 1' + : '=r' (result) + : 'I' (_SFR_IO_ADDR(port)) + ); + return result; +} +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +inw() is supplied by avr-libc. +.RE +.PP +.SH "C Names Used in Assembler Code" +.PP +By default \fCAVR-GCC\fP uses the same symbolic names of functions or variables in C and assembler code. You can specify a different name for the assembler code by using a special form of the \fCasm\fP statement: +.PP +.PP +.nf +unsigned long value asm('clock') = 3686400; +.fi +.PP +.PP +This statement instructs the compiler to use the symbol name clock rather than value. This makes sense only for external or static variables, because local variables do not have symbolic names in the assembler code. However, local variables may be held in registers. +.PP +With \fCAVR-GCC\fP you can specify the use of a specific register: +.PP +.PP +.nf +void Count(void) +{ + register unsigned char counter asm('r3'); + + ... some code... + asm volatile('clr r3'); + ... more code... +} +.fi +.PP +.PP +The assembler instruction, \fC'clr r3'\fP, will clear the variable counter. \fCAVR-GCC\fP will not completely reserve the specified register. If the optimizer recognizes that the variable will not be referenced any longer, the register may be re-used. But the compiler is not able to check wether this register usage conflicts with any predefined register. If you reserve too many registers in this way, the compiler may even run out of registers during code generation. +.PP +In order to change the name of a function, you need a prototype declaration, because the compiler will not accept the \fCasm\fP keyword in the function definition: +.PP +.PP +.nf +extern long Calc(void) asm ('CALCULATE'); +.fi +.PP +.PP +Calling the function \fCCalc()\fP will create assembler instructions to call the function \fCCALCULATE\fP. +.SH "Links" +.PP +For a more thorough discussion of inline assembly usage, see the gcc user manual. The latest version of the gcc manual is always available here: http://gcc.gnu.org/onlinedocs/ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inp.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inp.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/install_tools.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/install_tools.3 new file mode 100644 index 0000000..bbadb4a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/install_tools.3 @@ -0,0 +1,1123 @@ +.TH "install_tools" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +install_tools \- Building and Installing the GNU Tool Chain +.PP +This chapter shows how to build and install, from source code, a complete development environment for the AVR processors using the GNU toolset. There are two main sections, one for Linux, FreeBSD, and other Unix-like operating systems, and another section for Windows. +.SH "Building and Installing under Linux, FreeBSD, and Others" +.PP +The default behaviour for most of these tools is to install every thing under the \fC/usr/local\fP directory. In order to keep the AVR tools separate from the base system, it is usually better to install everything into \fC/usr/local/avr\fP. If the \fC/usr/local/avr\fP directory does not exist, you should create it before trying to install anything. You will need \fCroot\fP access to install there. If you don't have root access to the system, you can alternatively install in your home directory, for example, in \fC$HOME/local/avr\fP. Where you install is a completely arbitrary decision, but should be consistent for all the tools. +.PP +You specify the installation directory by using the \fC--prefix=dir\fP option with the \fCconfigure\fP script. It is important to install all the AVR tools in the same directory or some of the tools will not work correctly. To ensure consistency and simplify the discussion, we will use \fC$PREFIX\fP to refer to whatever directory you wish to install in. You can set this as an environment variable if you wish as such (using a Bourne-like shell): +.PP + +.PP +.nf + +$ PREFIX=$HOME/local/avr +$ export PREFIX + +.fi +.PP +.PP + +.PP +\fBNote:\fP +.RS 4 +Be sure that you have your \fCPATH\fP environment variable set to search the directory you install everything in \fIbefore\fP you start installing anything. For example, if you use \fC--prefix=$PREFIX\fP, you must have \fC$PREFIX/bin\fP in your exported \fCPATH\fP. As such: +.RE +.PP +.PP +.nf + +$ PATH=$PATH:$PREFIX/bin +$ export PATH +.fi +.PP +.PP +\fBWarning:\fP +.RS 4 +If you have \fCCC\fP set to anything other than \fCavr-gcc\fP in your environment, this will cause the configure script to fail. It is best to not have \fCCC\fP set at all. +.RE +.PP +\fBNote:\fP +.RS 4 +It is usually the best to use the latest released version of each of the tools. +.RE +.PP +.SH "Required Tools" +.PP +.PP +.IP "\(bu" 2 +\fBGNU Binutils\fP +.br + http://sources.redhat.com/binutils/ +.br + \fBInstallation\fP +.PP +.PP +.IP "\(bu" 2 +\fBGCC\fP +.br + http://gcc.gnu.org/ +.br + \fBInstallation\fP +.PP +.PP +.IP "\(bu" 2 +\fBAVR Libc\fP +.br + http://savannah.gnu.org/projects/avr-libc/ +.br + \fBInstallation\fP +.br + +.PP +.SH "Optional Tools" +.PP +.PP +You can develop programs for AVR devices without the following tools. They may or may not be of use for you. +.PP +.IP "\(bu" 2 +\fBAVRDUDE\fP +.br + http://savannah.nongnu.org/projects/avrdude/ +.br + \fBInstallation\fP +.br + \fBUsage Notes\fP +.PP +.PP +.IP "\(bu" 2 +\fBGDB\fP +.br + http://sources.redhat.com/gdb/ +.br + \fBInstallation\fP +.br + +.PP +.PP +.IP "\(bu" 2 +\fBSimulAVR\fP +.br + http://savannah.gnu.org/projects/simulavr/ +.br + \fBInstallation\fP +.PP +.PP +.IP "\(bu" 2 +\fBAVaRICE\fP +.br + http://avarice.sourceforge.net/ +.br + \fBInstallation\fP +.br + +.PP +.SH "GNU Binutils for the AVR target" +.PP +.PP +The \fC\fBbinutils\fP\fP package provides all the low-level utilities needed in building and manipulating object files. Once installed, your environment will have an AVR assembler (\fCavr-as\fP), linker (\fCavr-ld\fP), and librarian (\fCavr-ar\fP and \fCavr-ranlib\fP). In addition, you get tools which extract data from object files (\fCavr-objcopy\fP), dissassemble object file information (\fCavr-objdump\fP), and strip information from object files (\fCavr-strip\fP). Before we can build the C compiler, these tools need to be in place. +.PP +Download and unpack the source files: +.PP +.PP +.nf + +$ bunzip2 -c binutils-.tar.bz2 | tar xf - +$ cd binutils- +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +Replace \fC\fP with the version of the package you downloaded. +.PP +If you obtained a gzip compressed file (.gz), use \fCgunzip\fP instead of \fCbunzip2\fP. +.RE +.PP +It is usually a good idea to configure and build \fC\fBbinutils\fP\fP in a subdirectory so as not to pollute the source with the compiled files. This is recommended by the \fC\fBbinutils\fP\fP developers. +.PP +.PP +.nf + +$ mkdir obj-avr +$ cd obj-avr +.fi +.PP +.PP +The next step is to configure and build the tools. This is done by supplying arguments to the \fCconfigure\fP script that enable the AVR-specific options. +.PP +.PP +.nf + +$ ../configure --prefix=$PREFIX --target=avr --disable-nls +.fi +.PP +.PP +If you don't specify the \fC--prefix\fP option, the tools will get installed in the \fC/usr/local\fP hierarchy (i.e. the binaries will get installed in \fC/usr/local/bin\fP, the info pages get installed in \fC/usr/local/info\fP, etc.) Since these tools are changing frequently, It is preferrable to put them in a location that is easily removed. +.PP +When \fCconfigure\fP is run, it generates a lot of messages while it determines what is available on your operating system. When it finishes, it will have created several \fCMakefile\fPs that are custom tailored to your platform. At this point, you can build the project. +.PP +.PP +.nf + +$ make +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +BSD users should note that the project's \fCMakefile\fP uses GNU \fCmake\fP syntax. This means FreeBSD users may need to build the tools by using \fCgmake\fP. +.RE +.PP +If the tools compiled cleanly, you're ready to install them. If you specified a destination that isn't owned by your account, you'll need \fCroot\fP access to install them. To install: +.PP +.PP +.nf + +$ make install +.fi +.PP +.PP +You should now have the programs from binutils installed into \fC$PREFIX/bin\fP. Don't forget to \fBset your PATH\fP environment variable before going to build avr-gcc. +.PP +\fBNote:\fP +.RS 4 +The official version of binutils might lack support for recent AVR devices. A patch that adds more AVR types can be found at http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-binutils/files/patch-newdevices +.RE +.PP +.SH "GCC for the AVR target" +.PP +.PP +\fBWarning:\fP +.RS 4 +You \fI\fBmust\fP\fP install \fBavr-binutils\fP and make sure your \fBpath is set\fP properly before installing avr-gcc. +.RE +.PP +The steps to build \fCavr-gcc\fP are essentially same as for \fBbinutils\fP: +.PP +.PP +.nf + +$ bunzip2 -c gcc-.tar.bz2 | tar xf - +$ cd gcc- +$ mkdir obj-avr +$ cd obj-avr +$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ \ + --disable-nls --disable-libssp --with-dwarf2 +$ make +$ make install +.fi +.PP +.PP +To save your self some download time, you can alternatively download only the \fCgcc-core-.tar.bz2\fP and \fCgcc-c++-.tar.bz2\fP parts of the gcc. Also, if you don't need C++ support, you only need the core part and should only enable the C language support. +.PP +\fBNote:\fP +.RS 4 +Early versions of these tools did not support C++. +.PP +The stdc++ libs are not included with C++ for AVR due to the size limitations of the devices. +.PP +The official version of GCC might lack support for recent AVR devices. A patch that adds more AVR types can be found at http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files/patch-newdevices +.RE +.PP +.SH "AVR Libc" +.PP +.PP +\fBWarning:\fP +.RS 4 +You \fI\fBmust\fP\fP install \fBavr-binutils\fP, \fBavr-gcc\fP and make sure your \fBpath is set\fP properly before installing avr-libc. +.RE +.PP +\fBNote:\fP +.RS 4 +If you have obtained the latest avr-libc from cvs, you will have to run the \fCbootstrap\fP script before using either of the build methods described below. +.RE +.PP +To build and install avr-libc: +.PP +.PP +.nf + +$ gunzip -c avr-libc-.tar.gz | tar xf - +$ cd avr-libc- +$ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr +$ make +$ make install +.fi +.PP +.SH "AVRDUDE" +.PP + +.PP +\fBNote:\fP +.RS 4 +It has been ported to windows (via MinGW or cygwin), Linux and Solaris. Other Unix systems should be trivial to port to. +.RE +.PP +\fC\fBavrdude\fP\fP is part of the FreeBSD ports system. To install it, simply do the following: +.PP +.PP +.nf + +# cd /usr/ports/devel/avrdude +# make install +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +Installation into the default location usually requires root permissions. However, running the program only requires access permissions to the appropriate \fCppi(4)\fP device. +.RE +.PP +Building and installing on other systems should use the \fCconfigure\fP system, as such: +.PP +.PP +.nf + +$ gunzip -c avrdude-.tar.gz | tar xf - +$ cd avrdude- +$ mkdir obj-avr +$ cd obj-avr +$ ../configure --prefix=$PREFIX +$ make +$ make install +.fi +.PP +.SH "GDB for the AVR target" +.PP +.PP +GDB also uses the \fCconfigure\fP system, so to build and install: +.PP +.PP +.nf + +$ bunzip2 -c gdb-.tar.bz2 | tar xf - +$ cd gdb- +$ mkdir obj-avr +$ cd obj-avr +$ ../configure --prefix=$PREFIX --target=avr +$ make +$ make install +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +If you are planning on using \fCavr-gdb\fP, you will probably want to install either \fBsimulavr\fP or \fBavarice\fP since avr-gdb needs one of these to run as a a remote target backend. +.RE +.PP +.SH "SimulAVR" +.PP +.PP +SimulAVR also uses the \fCconfigure\fP system, so to build and install: +.PP +.PP +.nf + +$ gunzip -c simulavr-.tar.gz | tar xf - +$ cd simulavr- +$ mkdir obj-avr +$ cd obj-avr +$ ../configure --prefix=$PREFIX +$ make +$ make install +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +You might want to have already installed \fBavr-binutils\fP, \fBavr-gcc\fP and \fBavr-libc\fP if you want to have the test programs built in the simulavr source. +.RE +.PP +.SH "AVaRICE" +.PP +.PP +\fBNote:\fP +.RS 4 +These install notes are not applicable to avarice-1.5 or older. You probably don't want to use anything that old anyways since there have been many improvements and bug fixes since the 1.5 release. +.RE +.PP +AVaRICE also uses the \fCconfigure\fP system, so to build and install: +.PP +.PP +.nf + +$ gunzip -c avarice-.tar.gz | tar xf - +$ cd avarice- +$ mkdir obj-avr +$ cd obj-avr +$ ../configure --prefix=$PREFIX +$ make +$ make install +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +AVaRICE uses the BFD library for accessing various binary file formats. You may need to tell the configure script where to find the lib and headers for the link to work. This is usually done by invoking the configure script like this (Replace \fC\fP with the path to the \fCbfd.h\fP file on your system. Replace \fC\fP with the path to \fClibbfd.a\fP on your system.): +.RE +.PP +.PP +.nf + +$ CPPFLAGS=-I LDFLAGS=-L ../configure --prefix=$PREFIX +.fi +.PP +.SH "Building and Installing under Windows" +.PP +Building and installing the toolchain under Windows requires more effort because all of the tools required for building, and the programs themselves, are mainly designed for running under a POSIX environment such as Unix and Linux. Windows does not natively provide such an environment. +.PP +There are two projects available that provide such an environment, Cygwin and MinGW/MSYS. There are advantages and disadvantages to both. Cygwin provides a very complete POSIX environment that allows one to build many Linux based tools from source with very little or no source modifications. However, POSIX functionality is provided in the form of a DLL that is linked to the application. This DLL has to be redistributed with your application and there are issues if the Cygwin DLL already exists on the installation system and different versions of the DLL. On the other hand, MinGW/MSYS can compile code as native Win32 applications. However, this means that programs designed for Unix and Linux (i.e. that use POSIX functionality) will not compile as MinGW/MSYS does not provide that POSIX layer for you. Therefore most programs that compile on both types of host systems, usually must provide some sort of abstraction layer to allow an application to be built cross-platform. +.PP +MinGW/MSYS does provide somewhat of a POSIX environment that allows you to build Unix and Linux applications as they woud normally do, with a \fCconfigure\fP step and a \fCmake\fP step. Cygwin also provides such an environment. This means that building the AVR toolchain is very similar to how it is built in Linux, described above. The main differences are in what the PATH environment variable gets set to, pathname differences, and the tools that are required to build the projects under Windows. We'll take a look at the tools next. +.SH "Tools Required for Building the Toolchain for Windows" +.PP +These are the tools that are currently used to build WinAVR 20070525 (or later). This list may change, either the version of the tools, or the tools themselves, as improvements are made. +.PP +.IP "\(bu" 2 +\fBMinGW/MSYS\fP +.br + +.IP " \(bu" 4 +Put MinGW-5.1.4.exe in it's own directory (for example: C:\\MinGWSetup) +.IP " \(bu" 4 +Run MinGW-5.1.4.exe +.IP " \(bu" 4 +Select 'Download and install' +.IP " \(bu" 4 +Select 'Current' package. +.IP " \(bu" 4 +Select type of install: Full. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInstall MSYS-1.0.10.exe package.\fP +.br + +.IP " \(bu" 4 +Default selections +.IP " \(bu" 4 +Batch file will ask: +.IP " \(bu" 6 +'Do you wish to continue with the post install?' Press 'y' and press enter. +.IP " \(bu" 6 +'Do you have MinGW installed?' Press 'y' and press enter. +.IP " \(bu" 6 +'Where is your MinGW installation?' Type in 'c:/mingw' (without quotes) and press enter +.IP " \(bu" 6 +'Do you wish for me to add mount bindings for c:/mingw to /mingw?' Press 'y' and press enter. +.IP " \(bu" 6 +It will display some messages on the screen, then it will display: 'Press any key to continue . . .'. Press any key. +.PP + +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBEdit c:\\msys\\1.0\\msys.bat\fP +.br + Change line (should be line 41): +.PP +.nf + + if EXIST rxvt.exe goto startrxvt + +.fi +.PP + to: +.PP +.nf + + rem if EXIST rxvt.exe goto startrxvt + +.fi +.PP + to remark out this line. Doing this will cause MSYS to always use the bash shell and not the rxvt shell. +.PP +.PP +\fBNote:\fP +.RS 4 +The order of the next three is important. Install MSYS Developer toolkit before the autotools. +.RE +.PP +.IP "\(bu" 2 +\fBMSYS Developer Toolkit version 1.0.1\fP +.br +.IP " \(bu" 4 +This is needed to build avr-libc in MinGW. +.IP " \(bu" 4 + +.IP " \(bu" 4 +Single file installer executable. Install. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBautoconf 2.59 from the 'MSYS Developer Toolkit' release\fP +.br +.IP " \(bu" 4 +autoconf 2.59/2.60 is needed to build avr-libc in MinGW. +.IP " \(bu" 4 + +.IP " \(bu" 4 +Extract to c:\\msys\\1.0 +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBautomake 1.8.2\fP +.br +.IP " \(bu" 4 +automake 1.8/1.9 is needed to build avr-libc in MinGW. +.IP " \(bu" 4 + +.IP " \(bu" 4 +Extract to c:\\msys\\1.0 +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInstall Cygwin\fP +.br +.IP " \(bu" 4 +Install everything, all users, UNIX line endings. This will take a *long* time. A fat internet pipe is highly recommended. It is also recommended that you download all to a directory first, and then install from that directory to your machine. +.PP + +.PP +.PP +\fBNote:\fP +.RS 4 +GMP is a prequisite for building MPFR. Build GMP first. +.RE +.PP +.IP "\(bu" 2 +\fBBuild GMP for MinGW\fP +.br +.IP " \(bu" 4 +Version 4.2.3 +.IP " \(bu" 4 + +.IP " \(bu" 4 +Build script: +.PP +.nf + + ./configure 2>&1 | tee gmp-configure.log + make 2>&1 | tee gmp-make.log + make check 2>&1 | tee gmp-make-check.log + make install 2>&1 | tee gmp-make-install.log + +.fi +.PP + +.IP " \(bu" 4 +GMP headers will be installed under /usr/local/include and library installed under /usr/local/lib. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBBuild MPFR for MinGW\fP +.br +.IP " \(bu" 4 +Version 2.3.2 +.IP " \(bu" 4 + +.IP " \(bu" 4 +Build script: +.PP +.nf + + ./configure --with-gmp=/usr/local 2>&1 | tee mpfr-configure.log + make 2>&1 | tee mpfr-make.log + make check 2>&1 | tee mpfr-make-check.log + make install 2>&1 | tee mpfr-make-install.log + +.fi +.PP + +.IP " \(bu" 4 +MPFR headers will be installed under /usr/local/include and library installed under /usr/local/lib. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInstall Doxygen\fP +.br +.IP " \(bu" 4 +Version 1.5.6 +.IP " \(bu" 4 + +.IP " \(bu" 4 +Download and install. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInstall NetPBM\fP +.br +.IP " \(bu" 4 +Version 10.27.0 +.IP " \(bu" 4 +From the GNUWin32 project: +.IP " \(bu" 4 +Download and install. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInstall fig2dev\fP +.br +.IP " \(bu" 4 +Version 3.2 Patchlevel 5 +.IP " \(bu" 4 +From WinFig 2.2: +.IP " \(bu" 4 +Unzip the download file and install fig2dev.exe in a location of your choice. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInstall MiKTeX\fP +.br +.IP " \(bu" 4 +Version 2.7 +.IP " \(bu" 4 + +.IP " \(bu" 4 +Download and install. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInstall Ghostscript\fP +.br +.IP " \(bu" 4 +Version 8.63 +.IP " \(bu" 4 + +.IP " \(bu" 4 +Download and install. +.IP " \(bu" 4 +In the subdirectory of the installaion, copy gswin32c.exe to gs.exe. +.PP + +.PP +.PP +.IP "\(bu" 2 +Set the TEMP and TMP environment variables to \fBc:\\temp\fP or to the short filename version. This helps to avoid NTVDM errors during building. +.PP +.SH "Building the Toolchain for Windows" +.PP +All directories in the PATH enviornment variable should be specified using their short filename (8.3) version. This will also help to avoid NTVDM errors during building. These short filenames can be specific to each machine. +.PP +Build the tools below in MSYS. +.PP +.IP "\(bu" 2 +\fBBinutils\fP +.br +.IP " \(bu" 4 +Open source code pacakge and patch as necessary. +.IP " \(bu" 4 +Configure and build in a directory outside of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 + +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/usr/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 +/mingw/bin +.IP " \(bu" 6 +c:/cygwin/bin +.IP " \(bu" 6 +/bin +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + CFLAGS=-D__USE_MINGW_ACCESS \ + ../$archivedir/configure \ + --prefix=$installdir \ + --target=avr \ + --disable-nls \ + --enable-doc \ + --datadir=$installdir/doc/binutils \ + --with-gmp=/usr/local \ + --with-mpfr=/usr/local \ + 2>&1 | tee binutils-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make all html install install-html 2>&1 | tee binutils-make.log + +.fi +.PP + +.IP " \(bu" 4 +Manually change documentation location. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBGCC\fP +.br +.IP " \(bu" 4 +Open source code pacakge and patch as necessary. +.IP " \(bu" 4 +Configure and build in a directory outside of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 + +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/usr/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 +/mingw/bin +.IP " \(bu" 6 +c:/cygwin/bin +.IP " \(bu" 6 +/bin +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + CFLAGS=-D__USE_MINGW_ACCESS \ + ../gcc-$version/configure \ + --prefix=$installdir \ + --target=$target \ + --enable-languages=c,c++ \ + --with-dwarf2 \ + --enable-win32-registry=WinAVR-$release \ + --disable-nls \ + --with-gmp=/usr/local \ + --with-mpfr=/usr/local \ + --enable-doc \ + --disable-libssp \ + 2>&1 | tee $package-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make all html install 2>&1 | tee $package-make.log + +.fi +.PP + +.IP " \(bu" 4 +Manually copy the HTML documentation from the source code tree to the installation tree. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBavr-libc\fP +.br +.IP " \(bu" 4 +Open source code package. +.IP " \(bu" 4 +Configure and build at the top of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/mingw/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 + +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 + +.IP " \(bu" 6 + +.IP " \(bu" 6 + +.IP " \(bu" 6 + +.IP " \(bu" 6 +c:/cygwin/bin +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + ./configure \ + --host=avr \ + --prefix=$installdir \ + --enable-doc \ + --disable-versioned-doc \ + --enable-html-doc \ + --enable-pdf-doc \ + --enable-man-doc \ + --mandir=$installdir/man \ + --datadir=$installdir \ + 2>&1 | tee $package-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make all install 2>&1 | tee $package-make.log + +.fi +.PP + +.IP " \(bu" 4 +Manually change location of man page documentation. +.IP " \(bu" 4 +Move the examples to the top level of the install tree. +.IP " \(bu" 4 +Convert line endings in examples to Windows line endings. +.IP " \(bu" 4 +Convert line endings in header files to Windows line endings. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBAVRDUDE\fP +.br +.IP " \(bu" 4 +Open source code package. +.IP " \(bu" 4 +Configure and build at the top of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 + +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/usr/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 +/mingw/bin +.IP " \(bu" 6 +c:/cygwin/bin +.IP " \(bu" 6 +/bin +.PP + +.IP " \(bu" 4 +Set location of LibUSB headers and libraries +.PP +.nf + + export CPPFLAGS="-I../../libusb-win32-device-bin-$libusb_version/include" + export CFLAGS="-I../../libusb-win32-device-bin-$libusb_version/include" + export LDFLAGS="-L../../libusb-win32-device-bin-$libusb_version/lib/gcc" + +.fi +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + ./configure \ + --prefix=$installdir \ + --datadir=$installdir \ + --sysconfdir=$installdir/bin \ + --enable-doc \ + --disable-versioned-doc \ + 2>&1 | tee $package-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make -k all install 2>&1 | tee $package-make.log + +.fi +.PP + +.IP " \(bu" 4 +Convert line endings in avrdude config file to Windows line endings. +.IP " \(bu" 4 +Delete backup copy of avrdude config file in install directory if exists. +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBInsight/GDB\fP +.br +.IP " \(bu" 4 +Open source code pacakge and patch as necessary. +.IP " \(bu" 4 +Configure and build in a directory outside of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 + +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/usr/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 +/mingw/bin +.IP " \(bu" 6 +c:/cygwin/bin +.IP " \(bu" 6 +/bin +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + CFLAGS=-D__USE_MINGW_ACCESS \ + LDFLAGS='-static' \ + ../$archivedir/configure \ + --prefix=$installdir \ + --target=avr \ + --with-gmp=/usr/local \ + --with-mpfr=/usr/local \ + --enable-doc \ + 2>&1 | tee insight-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make all install 2>&1 | tee $package-make.log + +.fi +.PP + +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBSRecord\fP +.br +.IP " \(bu" 4 +Open source code package. +.IP " \(bu" 4 +Configure and build at the top of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 + +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/usr/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 +/mingw/bin +.IP " \(bu" 6 +c:/cygwin/bin +.IP " \(bu" 6 +/bin +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + ./configure \ + --prefix=$installdir \ + --infodir=$installdir/info \ + --mandir=$installdir/man \ + 2>&1 | tee $package-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make all install 2>&1 | tee $package-make.log + +.fi +.PP + +.PP + +.PP +.PP +Build the tools below in Cygwin. +.PP +.IP "\(bu" 2 +\fBAVaRICE\fP +.br +.IP " \(bu" 4 +Open source code package. +.IP " \(bu" 4 +Configure and build in a directory outside of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 + +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/usr/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 +/bin +.PP + +.IP " \(bu" 4 +Set location of LibUSB headers and libraries +.PP +.nf + + export CPPFLAGS=-I$startdir/libusb-win32-device-bin-$libusb_version/include + export CFLAGS=-I$startdir/libusb-win32-device-bin-$libusb_version/include + export LDFLAGS="-static -L$startdir/libusb-win32-device-bin-$libusb_version/lib/gcc " + +.fi +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + ../$archivedir/configure \ + --prefix=$installdir \ + --datadir=$installdir/doc \ + --mandir=$installdir/man \ + --infodir=$installdir/info \ + 2>&1 | tee avarice-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make all install 2>&1 | tee avarice-make.log + +.fi +.PP + +.PP + +.PP +.PP +.IP "\(bu" 2 +\fBSimulAVR\fP +.br +.IP " \(bu" 4 +Open source code package. +.IP " \(bu" 4 +Configure and build in a directory outside of the source code tree. +.IP " \(bu" 4 +Set PATH, in order: +.IP " \(bu" 6 + +.IP " \(bu" 6 +/usr/local/bin +.IP " \(bu" 6 +/usr/bin +.IP " \(bu" 6 +/bin +.IP " \(bu" 6 +/bin +.PP + +.IP " \(bu" 4 +Configure +.PP +.nf + + export LDFLAGS="-static" + ../$archivedir/configure \ + --prefix=$installdir \ + --datadir=$installdir \ + --disable-tests \ + --disable-versioned-doc \ + 2>&1 | tee simulavr-configure.log + +.fi +.PP + +.IP " \(bu" 4 +Make +.PP +.nf + + make -k all install 2>&1 | tee simulavr-make.log + make pdf install-pdf 2>&1 | tee simulavr-pdf-make.log + +.fi +.PP + +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int16_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int16_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int16_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int32_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int32_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int32_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int64_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int64_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int64_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int8_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int8_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int8_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_farptr_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_farptr_t.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_farptr_t.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast16_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast16_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast16_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast32_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast32_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast32_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast64_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast64_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast64_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast8_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast8_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_fast8_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least16_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least16_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least16_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least32_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least32_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least32_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least64_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least64_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least64_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least8_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least8_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/int_least8_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/interrupt.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/interrupt.h.3 new file mode 100644 index 0000000..4beb448 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/interrupt.h.3 @@ -0,0 +1,79 @@ +.TH "interrupt.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +interrupt.h \- +.SH "Detailed Description" +.PP +@{ +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.PP +.RI "\fBGlobal manipulation of the interrupt flag\fP" +.br +The global interrupt flag is maintained in the I bit of the status register (SREG). +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBsei\fP()" +.br +.ti -1c +.RI "#define \fBcli\fP()" +.br +.in -1c +.in -1c +.PP +.RI "\fBMacros for writing interrupt handler functions\fP" +.br + +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBISR\fP(vector, attributes)" +.br +.ti -1c +.RI "#define \fBSIGNAL\fP(vector)" +.br +.ti -1c +.RI "#define \fBEMPTY_INTERRUPT\fP(vector)" +.br +.ti -1c +.RI "#define \fBISR_ALIAS\fP(vector, target_vector)" +.br +.ti -1c +.RI "#define \fBreti\fP()" +.br +.ti -1c +.RI "#define \fBBADISR_vect\fP" +.br +.in -1c +.in -1c +.PP +.RI "\fBISR attributes\fP" +.br + +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBISR_BLOCK\fP" +.br +.ti -1c +.RI "#define \fBISR_NOBLOCK\fP" +.br +.ti -1c +.RI "#define \fBISR_NAKED\fP" +.br +.ti -1c +.RI "#define \fBISR_ALIASOF\fP(target_vector)" +.br +.in -1c +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/intmax_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/intmax_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/intmax_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/intptr_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/intptr_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/intptr_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inttypes.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inttypes.h.3 new file mode 100644 index 0000000..d84bcd9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/inttypes.h.3 @@ -0,0 +1,327 @@ +.TH "inttypes.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +inttypes.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.PP +.RI "\fBmacros for printf and scanf format specifiers\fP" +.br +For C++, these are only included if __STDC_LIMIT_MACROS is defined before including <\fBinttypes.h\fP>. +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBPRId8\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdLEAST8\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdFAST8\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIi8\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiLEAST8\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiFAST8\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRId16\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdLEAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIdFAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBPRIi16\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiLEAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRIiFAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBPRId32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBPRIdLEAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBPRIdFAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBPRIi32\fP 'li'" +.br +.ti -1c +.RI "#define \fBPRIiLEAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBPRIiFAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBPRIdPTR\fP PRId16" +.br +.ti -1c +.RI "#define \fBPRIiPTR\fP PRIi16" +.br +.ti -1c +.RI "#define \fBPRIo8\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoLEAST8\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoFAST8\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIu8\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuLEAST8\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuFAST8\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIx8\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxLEAST8\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxFAST8\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIX8\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXLEAST8\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXFAST8\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIo16\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoLEAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIoFAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBPRIu16\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuLEAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIuFAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBPRIx16\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxLEAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIxFAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBPRIX16\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXLEAST16\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIXFAST16\fP 'X'" +.br +.ti -1c +.RI "#define \fBPRIo32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBPRIoLEAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBPRIoFAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBPRIu32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBPRIuLEAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBPRIuFAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBPRIx32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBPRIxLEAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBPRIxFAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBPRIX32\fP 'lX'" +.br +.ti -1c +.RI "#define \fBPRIXLEAST32\fP 'lX'" +.br +.ti -1c +.RI "#define \fBPRIXFAST32\fP 'lX'" +.br +.ti -1c +.RI "#define \fBPRIoPTR\fP PRIo16" +.br +.ti -1c +.RI "#define \fBPRIuPTR\fP PRIu16" +.br +.ti -1c +.RI "#define \fBPRIxPTR\fP PRIx16" +.br +.ti -1c +.RI "#define \fBPRIXPTR\fP PRIX16" +.br +.ti -1c +.RI "#define \fBSCNd16\fP 'd'" +.br +.ti -1c +.RI "#define \fBSCNdLEAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBSCNdFAST16\fP 'd'" +.br +.ti -1c +.RI "#define \fBSCNi16\fP 'i'" +.br +.ti -1c +.RI "#define \fBSCNiLEAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBSCNiFAST16\fP 'i'" +.br +.ti -1c +.RI "#define \fBSCNd32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBSCNdLEAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBSCNdFAST32\fP 'ld'" +.br +.ti -1c +.RI "#define \fBSCNi32\fP 'li'" +.br +.ti -1c +.RI "#define \fBSCNiLEAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBSCNiFAST32\fP 'li'" +.br +.ti -1c +.RI "#define \fBSCNdPTR\fP SCNd16" +.br +.ti -1c +.RI "#define \fBSCNiPTR\fP SCNi16" +.br +.ti -1c +.RI "#define \fBSCNo16\fP 'o'" +.br +.ti -1c +.RI "#define \fBSCNoLEAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBSCNoFAST16\fP 'o'" +.br +.ti -1c +.RI "#define \fBSCNu16\fP 'u'" +.br +.ti -1c +.RI "#define \fBSCNuLEAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBSCNuFAST16\fP 'u'" +.br +.ti -1c +.RI "#define \fBSCNx16\fP 'x'" +.br +.ti -1c +.RI "#define \fBSCNxLEAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBSCNxFAST16\fP 'x'" +.br +.ti -1c +.RI "#define \fBSCNo32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBSCNoLEAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBSCNoFAST32\fP 'lo'" +.br +.ti -1c +.RI "#define \fBSCNu32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBSCNuLEAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBSCNuFAST32\fP 'lu'" +.br +.ti -1c +.RI "#define \fBSCNx32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBSCNxLEAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBSCNxFAST32\fP 'lx'" +.br +.ti -1c +.RI "#define \fBSCNoPTR\fP SCNo16" +.br +.ti -1c +.RI "#define \fBSCNuPTR\fP SCNu16" +.br +.ti -1c +.RI "#define \fBSCNxPTR\fP SCNx16" +.br +.in -1c +.in -1c +.SS "Typedefs" + +.PP +.RI "\fBFar pointers for memory access >64K\fP" +.br + +.PP +.in +1c +.in +1c +.ti -1c +.RI "typedef \fBint32_t\fP \fBint_farptr_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP \fBuint_farptr_t\fP" +.br +.in -1c +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/io.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/io.h.3 new file mode 100644 index 0000000..0a4172f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/io.h.3 @@ -0,0 +1,14 @@ +.TH "io.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +io.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isalnum.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isalnum.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isalnum.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isalpha.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isalpha.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isalpha.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isascii.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isascii.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isascii.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isblank.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isblank.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isblank.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/iscntrl.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/iscntrl.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/iscntrl.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isdigit.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isdigit.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isdigit.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isfinite.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isfinite.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isfinite.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isgraph.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isgraph.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isgraph.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isinf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isinf.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isinf.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/islower.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/islower.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/islower.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isnan.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isnan.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isnan.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isprint.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isprint.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isprint.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ispunct.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ispunct.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ispunct.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isspace.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isspace.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isspace.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isupper.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isupper.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isupper.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isxdigit.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isxdigit.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/isxdigit.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/itoa.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/itoa.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/itoa.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/labs.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/labs.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/labs.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/largedemo.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/largedemo.3 new file mode 100644 index 0000000..12d66cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/largedemo.3 @@ -0,0 +1,112 @@ +.TH "A more sophisticated project" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +A more sophisticated project \- This project extends the basic idea of the \fBsimple project\fP to control a LED with a PWM output, but adds methods to adjust the LED brightness. It employs a lot of the basic concepts of avr-libc to achieve that goal. +.PP +Understanding this project assumes the simple project has been understood in full, as well as being acquainted with the basic hardware concepts of an AVR microcontroller. +.SH "Hardware setup" +.PP +The demo is set up in a way so it can be run on the ATmega16 that ships with the STK500 development kit. The only external part needed is a potentiometer attached to the ADC. It is connected to a 10-pin ribbon cable for port A, both ends of the potentiometer to pins 9 (GND) and 10 (VCC), and the wiper to pin 1 (port A0). A bypass capacitor from pin 1 to pin 9 (like 47 nF) is recommendable. +.PP +Setup of the STK500Setup of the STK500 +.PP +The coloured patch cables are used to provide various interconnections. As there are only four of them in the STK500, there are two options to connect them for this demo. The second option for the yellow-green cable is shown in parenthesis in the table. Alternatively, the 'squid' cable from the JTAG ICE kit can be used if available. +.PP +\fBPort\fP\fBHeader\fP\fBColor\fP\fBFunction\fP\fBConnect to\fP D0 1 brown RxD RXD of the RS-232 header D1 2 grey TxD TXD of the RS-232 header D2 3 black button 'down' SW0 (pin 1 switches header) D3 4 red button 'up' SW1 (pin 2 switches header) D4 5 green button 'ADC' SW2 (pin 3 switches header) D5 6 blue LED LED0 (pin 1 LEDs header) D6 7 (green)clock out LED1 (pin 2 LEDs header) D7 8 white 1-second flashLED2 (pin 3 LEDs header) GND9 unused VCC10unused +.PP +Wiring of the STK500Wiring of the STK500 +.PP +The following picture shows the alternate wiring where LED1 is connected but SW2 is not: +.PP +Wiring option #2 of the STK500Wiring option #2 of the STK500 +.PP +As an alternative, this demo can also be run on the popular ATmega8 controller, or its successor ATmega88 as well as the ATmega48 and ATmega168 variants of the latter. These controllers do not have a port named 'A', so their ADC inputs are located on port C instead, thus the potentiometer needs to be attached to port C. Likewise, the OC1A output is not on port D pin 5 but on port B pin 1 (PB1). Thus, the above cabling scheme needs to be changed so that PB1 connects to the LED0 pin. (PD6 remains unconnected.) When using the STK500, use one of the jumper cables for this connection. All other port D pins should be connected the same way as described for the ATmega16 above. +.PP +When not using an STK500 starter kit, attach the LEDs through some resistor to Vcc (low-active LEDs), and attach pushbuttons from the respective input pins to GND. The internal pull-up resistors are enabled for the pushbutton pins, so no external resistors are needed. +.PP +Finally, the demo has been ported to the ATtiny2313 as well. As this AVR does not offer an ADC, everything related to handling the ADC is disabled in the code for that MCU type. Also, port D of this controller type only features 6 pins, so the 1-second flash LED had to be moved from PD6 to PD4. (PD4 is used as the ADC control button on the other MCU types, but that is not needed here.) OC1A is located at PB3 on this device. +.PP +The \fCMCU_TARGET\fP macro in the Makefile needs to be adjusted appropriately for the alternative controller types. +.PP +The flash ROM and RAM consumption of this demo are way below the resources of even an ATmega48, and still well within the capabilities of an ATtiny2313. The major advantage of experimenting with the ATmega16 (in addition that it ships together with an STK500 anyway) is that it can be debugged online via JTAG. Likewise, the ATmega48/88/168 and ATtiny2313 devices can be debugged through debugWire, using the Atmel JTAG ICE mkII or the low-cost AVR Dragon. +.PP +Note that in the explanation below, all port/pin names are applicable to the ATmega16 setup. +.SH "Functional overview" +.PP +PD6 will be toggled with each internal clock tick (approx. 10 ms). PD7 will flash once per second. +.PP +PD0 and PD1 are configured as UART IO, and can be used to connect the demo kit to a PC (9600 Bd, 8N1 frame format). The demo application talks to the serial port, and it can be controlled from the serial port. +.PP +PD2 through PD4 are configured as inputs, and control the application unless control has been taken over by the serial port. Shorting PD2 to GND will decrease the current PWM value, shorting PD3 to GND will increase it. +.PP +While PD4 is shorted to GND, one ADC conversion for channel 0 (ADC input is on PA0) will be triggered each internal clock tick, and the resulting value will be used as the PWM value. So the brightness of the LED follows the analog input value on PC0. VAREF on the STK500 should be set to the same value as VCC. +.PP +When running in serial control mode, the function of the watchdog timer can be demonstrated by typing an `r'. This will make the demo application run in a tight loop without retriggering the watchdog so after some seconds, the watchdog will reset the MCU. This situation can be figured out on startup by reading the MCUCSR register. +.PP +The current value of the PWM is backed up in an EEPROM cell after about 3 seconds of idle time after the last change. If that EEPROM cell contains a reasonable (i. e. non-erased) value at startup, it is taken as the initial value for the PWM. This virtually preserves the last value across power cycles. By not updating the EEPROM immmediately but only after a timeout, EEPROM wear is reduced considerably compared to immediately writing the value at each change. +.SH "A code walkthrough" +.PP +This section explains the ideas behind individual parts of the code. The \fBsource code\fP has been divided into numbered parts, and the following subsections explain each of these parts. +.SS "Part 1: Macro definitions" +A number of preprocessor macros are defined to improve readability and/or portability of the application. +.PP +The first macros describe the IO pins our LEDs and pushbuttons are connected to. This provides some kind of mini-HAL (hardware abstraction layer) so should some of the connections be changed, they don't need to be changed inside the code but only on top. Note that the location of the PWM output itself is mandated by the hardware, so it cannot be easily changed. As the ATmega48/88/168 controllers belong to a more recent generation of AVRs, a number of register and bit names have been changed there, so they are mapped back to their ATmega8/16 equivalents to keep the actual program code portable. +.PP +The name \fCF_CPU\fP is the conventional name to describe the CPU clock frequency of the controller. This demo project just uses the internal calibrated 1 MHz RC oscillator that is enabled by default. Note that when using the \fC<\fButil/delay.h\fP>\fP functions, \fCF_CPU\fP needs to be defined before including that file. +.PP +The remaining macros have their own comments in the source code. The macro \fCTMR1_SCALE\fP shows how to use the preprocessor and the compiler's constant expression computation to calculate the value of timer 1's post-scaler in a way so it only depends on \fCF_CPU\fP and the desired software clock frequency. While the formula looks a bit complicated, using a macro offers the advantage that the application will automatically scale to new target softclock or master CPU frequencies without having to manually re-calculate hardcoded constants. +.SS "Part 2: Variable definitions" +The \fCintflags\fP structure demonstrates a way to allocate bit variables in memory. Each of the interrupt service routines just sets one bit within that structure, and the application's main loop then monitors the bits in order to act appropriately. +.PP +Like all variables that are used to communicate values between an interrupt service routine and the main application, it is declared \fBvolatile\fP. +.PP +The variable \fCee_pwm\fP is not a variable in the classical C sense that could be used as an lvalue or within an expression to obtain its value. Instead, the +.PP +.PP +.nf + __attribute__((section('.eeprom'))) +.fi +.PP +.PP +marks it as belonging to the \fBEEPROM section\fP. This section is merely used as a placeholder so the compiler can arrange for each individual variable's location in EEPROM. The compiler will also keep track of initial values assigned, and usually the Makefile is arranged to extract these initial values into a separate load file (\fClargedemo_eeprom\fP.* in this case) that can be used to initialize the EEPROM. +.PP +The actual EEPROM IO must be performed manually. +.PP +Similarly, the variable \fCmcucsr\fP is kept in the \fB.noinit\fP section in order to prevent it from being cleared upon application startup. +.SS "Part 3: Interrupt service routines" +The ISR to handle timer 1's overflow interrupt arranges for the software clock. While timer 1 runs the PWM, it calls its overflow handler rather frequently, so the \fCTMR1_SCALE\fP value is used as a postscaler to reduce the internal software clock frequency further. If the software clock triggers, it sets the \fCtmr_int\fP bitfield, and defers all further tasks to the main loop. +.PP +The ADC ISR just fetches the value from the ADC conversion, disables the ADC interrupt again, and announces the presence of the new value in the \fCadc_int\fP bitfield. The interrupt is kept disabled while not needed, because the ADC will also be triggered by executing the SLEEP instruction in idle mode (which is the default sleep mode). Another option would be to turn off the ADC completely here, but that increases the ADC's startup time (not that it would matter much for this application). +.SS "Part 4: Auxiliary functions" +The function \fChandle_mcucsr()\fP uses two \fC__attribute__\fP declarators to achieve specific goals. First, it will instruct the compiler to place the generated code into the \fB.init3\fP section of the output. Thus, it will become part of the application initialization sequence. This is done in order to fetch (and clear) the reason of the last hardware reset from \fCMCUCSR\fP as early as possible. There is a short period of time where the next reset could already trigger before the current reason has been evaluated. This also explains why the variable \fCmcucsr\fP that mirrors the register's value needs to be placed into the .noinit section, because otherwise the default initialization (which happens after .init3) would blank the value again. +.PP +As the initialization code is not called using CALL/RET instructions but rather concatenated together, the compiler needs to be instructed to omit the entire function prologue and epilogue. This is performed by the \fInaked\fP attribute. So while syntactically, \fChandle_mcucsr()\fP is a function to the compiler, the compiler will just emit the instructions for it without setting up any stack frame, and not even a RET instruction at the end. +.PP +Function \fCioinit()\fP centralizes all hardware setup. The very last part of that function demonstrates the use of the EEPROM variable \fCee_pwm\fP to obtain an EEPROM address that can in turn be applied as an argument to \fC\fBeeprom_read_word()\fP\fP. +.PP +The following functions handle UART character and string output. (UART input is handled by an ISR.) There are two string output functions, \fCprintstr()\fP and \fCprintstr_p()\fP. The latter function fetches the string from \fBprogram memory\fP. Both functions translate a newline character into a carriage return/newline sequence, so a simple \fC\\n\fP can be used in the source code. +.PP +The function \fCset_pwm()\fP propagates the new PWM value to the PWM, performing range checking. When the value has been changed, the new percentage will be announced on the serial link. The current value is mirrored in the variable \fCpwm\fP so others can use it in calculations. In order to allow for a simple calculation of a percentage value without requiring floating-point mathematics, the maximal value of the PWM is restricted to 1000 rather than 1023, so a simple division by 10 can be used. Due to the nature of the human eye, the difference in LED brightness between 1000 and 1023 is not noticable anyway. +.SS "Part 5: main()" +At the start of \fCmain()\fP, a variable \fCmode\fP is declared to keep the current mode of operation. An enumeration is used to improve the readability. By default, the compiler would allocate a variable of type \fIint\fP for an enumeration. The \fIpacked\fP attribute declarator instructs the compiler to use the smallest possible integer type (which would be an 8-bit type here). +.PP +After some initialization actions, the application's main loop follows. In an embedded application, this is normally an infinite loop as there is nothing an application could 'exit' into anyway. +.PP +At the beginning of the loop, the watchdog timer will be retriggered. If that timer is not triggered for about 2 seconds, it will issue a hardware reset. Care needs to be taken that no code path blocks longer than this, or it needs to frequently perform watchdog resets of its own. An example of such a code path would be the string IO functions: for an overly large string to print (about 2000 characters at 9600 Bd), they might block for too long. +.PP +The loop itself then acts on the interrupt indication bitfields as appropriate, and will eventually put the CPU on sleep at its end to conserve power. +.PP +The first interrupt bit that is handled is the (software) timer, at a frequency of approximately 100 Hz. The \fCCLOCKOUT\fP pin will be toggled here, so e. g. an oscilloscope can be used on that pin to measure the accuracy of our software clock. Then, the LED flasher for LED2 ('We are alive'-LED) is built. It will flash that LED for about 50 ms, and pause it for another 950 ms. Various actions depending on the operation mode follow. Finally, the 3-second backup timer is implemented that will write the PWM value back to EEPROM once it is not changing anymore. +.PP +The ADC interrupt will just adjust the PWM value only. +.PP +Finally, the UART Rx interrupt will dispatch on the last character received from the UART. +.PP +All the string literals that are used as informational messages within \fCmain()\fP are placed in \fBprogram memory\fP so no SRAM needs to be allocated for them. This is done by using the PSTR macro, and passing the string to \fCprintstr_p()\fP. +.SH "The source code" +.PP +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldexp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldexp.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldexp.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldiv.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldiv.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldiv.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldiv_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldiv_t.3 new file mode 100644 index 0000000..15c652e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ldiv_t.3 @@ -0,0 +1,33 @@ +.TH "ldiv_t" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ldiv_t \- +.SH SYNOPSIS +.br +.PP +.SH "Detailed Description" +.PP +Result type for function \fBldiv()\fP. +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "long \fBquot\fP" +.br +.ti -1c +.RI "long \fBrem\fP" +.br +.in -1c +.SH "Field Documentation" +.PP +.SS "long \fBldiv_t::quot\fP" +.PP +The Quotient. +.SS "long \fBldiv_t::rem\fP" +.PP +The Remainder. + +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/library.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/library.3 new file mode 100644 index 0000000..8696dc1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/library.3 @@ -0,0 +1,98 @@ +.TH "library" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +library \- How to Build a Library +.SH "Introduction" +.PP +So you keep reusing the same functions that you created over and over? Tired of cut and paste going from one project to the next? Would you like to reduce your maintenance overhead? Then you're ready to create your own library! Code reuse is a very laudable goal. With some upfront investment, you can save time and energy on future projects by having ready-to-go libraries. This chapter describes some background information, design considerations, and practical knowledge that you will need to create and use your own libraries. +.SH "How the Linker Works" +.PP +The compiler compiles a single high-level language file (C language, for example) into a single object module file. The linker (ld) can only work with object modules to link them together. Object modules are the smallest unit that the linker works with. +.PP +Typically, on the linker command line, you will specify a set of object modules (that has been previously compiled) and then a list of libraries, including the Standard C Library. The linker takes the set of object modules that you specify on the command line and links them together. Afterwards there will probably be a set of 'undefined references'. A reference is essentially a function call. An undefined reference is a function call, with no defined function to match the call. +.PP +The linker will then go through the libraries, in order, to match the undefined references with function definitions that are found in the libraries. If it finds the function that matches the call, the linker will then link in the object module in which the function is located. This part is important: the linker links in THE ENTIRE OBJECT MODULE in which the function is located. Remember, the linker knows nothing about the functions internal to an object module, other than symbol names (such as function names). The smallest unit the linker works with is object modules. +.PP +When there are no more undefined references, the linker has linked everything and is done and outputs the final application. +.SH "How to Design a Library" +.PP +How the linker behaves is very important in designing a library. Ideally, you want to design a library where only the functions that are called are the only functions to be linked into the final application. This helps keep the code size to a minimum. In order to do this, with the way the linker works, is to only write one function per code module. This will compile to one function per object module. This is usually a very different way of doing things than writing an application! +.PP +There are always exceptions to the rule. There are generally two cases where you would want to have more than one function per object module. +.PP +The first is when you have very complementary functions that it doesn't make much sense to split them up. For example, \fBmalloc()\fP and \fBfree()\fP. If someone is going to use \fBmalloc()\fP, they will very likely be using \fBfree()\fP (or at least should be using \fBfree()\fP). In this case, it makes more sense to aggregate those two functions in the same object module. +.PP +The second case is when you want to have an Interrupt Service Routine (ISR) in your library that you want to link in. The problem in this case is that the linker looks for unresolved references and tries to resolve them with code in libraries. A reference is the same as a function call. But with ISRs, there is no function call to initiate the ISR. The ISR is placed in the Interrupt Vector Table (IVT), hence no call, no reference, and no linking in of the ISR. In order to do this, you have to trick the linker in a way. Aggregate the ISR, with another function in the same object module, but have the other function be something that is required for the user to call in order to use the ISR, like perhaps an initialization function for the subsystem, or perhaps a function that enables the ISR in the first place. +.SH "Creating a Library" +.PP +The librarian program is called \fCar\fP (for 'archiver') and is found in the GNU Binutils project. This program will have been built for the AVR target and will therefore be named \fCavr-ar\fP. +.PP +The job of the librarian program is simple: aggregate a list of object modules into a single library (archive) and create an index for the linker to use. The name that you create for the library filename must follow a specific pattern: lib\fIname\fP.a. The \fIname\fP part is the unique part of the filename that you create. It makes it easier if the \fIname\fP part relates to what the library is about. This \fIname\fP part must be prefixed by 'lib', and it must have a file extension of .a, for 'archive'. The reason for the special form of the filename is for how the library gets used by the toolchain, as we will see later on. +.PP +\fBNote:\fP +.RS 4 +The filename is case-sensitive. Use a lowercase 'lib' prefix, and a lowercase '.a' as the file extension. +.RE +.PP +The command line is fairly simple: +.PP +.PP +.nf +avr-ar rcs +.fi +.PP +.PP +The \fCr\fP command switch tells the program to insert the object modules into the archive with replacement. The \fCc\fP command line switch tells the program to create the archive. And the \fCs\fP command line switch tells the program to write an object-file index into the archive, or update an existing one. This last switch is very important as it helps the linker to find what it needs to do its job. +.PP +\fBNote:\fP +.RS 4 +The command line switches are case sensitive! There are uppercase switches that have completely different actions. +.PP +MFile and the WinAVR distribution contain a Makefile Template that includes the necessary command lines to build a library. You will have to manually modify the template to switch it over to build a library instead of an application. +.RE +.PP +See the GNU Binutils manual for more information on the \fCar\fP program. +.SH "Using a Library" +.PP +To use a library, use the \fC-l\fP switch on your linker command line. The string immediately following the \fC-l\fP is the unique part of the library filename that the linker will link in. For example, if you use: +.PP +.PP +.nf +-lm +.fi +.PP +.PP +this will expand to the library filename: +.PP +.PP +.nf +libm.a +.fi +.PP +.PP +which happens to be the math library included in avr-libc. +.PP +If you use this on your linker command line: +.PP +.PP +.nf +-lprintf_flt +.fi +.PP +.PP +then the linker will look for a library called: +.PP +.PP +.nf +libprintf_flt.a +.fi +.PP +.PP +This is why naming your library is so important when you create it! +.PP +The linker will search libraries in the order that they appear on the command line. Whichever function is found first that matches the undefined reference, it will be linked in. +.PP +There are also command line switches that tell GCC which directory to look in (\fC-L\fP) for the libraries that are specified to be linke in with \fC-l\fP. +.PP +See the GNU Binutils manual for more information on the GNU linker (ld) program. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lock.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lock.h.3 new file mode 100644 index 0000000..a4fdb09 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lock.h.3 @@ -0,0 +1,30 @@ +.TH "lock.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +lock.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_AVR_LOCK_H_\fP 1" +.br +.ti -1c +.RI "#define \fBLOCKMEM\fP __attribute__((section ('.lock')))" +.br +.ti -1c +.RI "#define \fBLOCKBITS\fP unsigned char __lock LOCKMEM" +.br +.ti -1c +.RI "#define \fBLOCKBITS_DEFAULT\fP (0xFF)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/log.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/log.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/log.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/log10.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/log10.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/log10.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/longjmp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/longjmp.3 new file mode 100644 index 0000000..7cf497f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/longjmp.3 @@ -0,0 +1 @@ +.so man3/setjmp.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/loop_until_bit_is_clear.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/loop_until_bit_is_clear.3 new file mode 100644 index 0000000..c8b3036 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/loop_until_bit_is_clear.3 @@ -0,0 +1 @@ +.so man3/avr_sfr.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/loop_until_bit_is_set.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/loop_until_bit_is_set.3 new file mode 100644 index 0000000..c8b3036 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/loop_until_bit_is_set.3 @@ -0,0 +1 @@ +.so man3/avr_sfr.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lrint.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lrint.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lrint.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lround.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lround.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/lround.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ltoa.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ltoa.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ltoa.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/malloc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/malloc.3 new file mode 100644 index 0000000..e9bdb6c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/malloc.3 @@ -0,0 +1,89 @@ +.TH "malloc" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +malloc \- Memory Areas and Using \fBmalloc()\fP +.SH "Introduction" +.PP +Many of the devices that are possible targets of avr-libc have a minimal amount of RAM. The smallest parts supported by the C environment come with 128 bytes of RAM. This needs to be shared between initialized and uninitialized variables (\fBsections\fP \fC\fP.data and \fC\fP.bss), the dynamic memory allocator, and the stack that is used for calling subroutines and storing local (automatic) variables. +.PP +Also, unlike larger architectures, there is no hardware-supported memory management which could help in separating the mentioned RAM regions from being overwritten by each other. +.PP +The standard RAM layout is to place \fC\fP.data variables first, from the beginning of the internal RAM, followed by \fC\fP.bss. The stack is started from the top of internal RAM, growing downwards. The so-called 'heap' available for the dynamic memory allocator will be placed beyond the end of \fC\fP.bss. Thus, there's no risk that dynamic memory will ever collide with the RAM variables (unless there were bugs in the implementation of the allocator). There is still a risk that the heap and stack could collide if there are large requirements for either dynamic memory or stack space. The former can even happen if the allocations aren't all that large but dynamic memory allocations get fragmented over time such that new requests don't quite fit into the 'holes' of previously freed regions. Large stack space requirements can arise in a C function containing large and/or numerous local variables or when recursively calling function. +.PP +\fBNote:\fP +.RS 4 +The pictures shown in this document represent typical situations where the RAM locations refer to an ATmega128. The memory addresses used are not displayed in a linear scale. +.RE +.PP +RAM map of a device with internal RAMRAM map of a device with internal RAM +.PP +On a simple device like a microcontroller it is a challenge to implement a dynamic memory allocator that is simple enough so the code size requirements will remain low, yet powerful enough to avoid unnecessary memory fragmentation and to get it all done with reasonably few CPU cycles. Microcontrollers are often low on space and also run at much lower speeds than the typical PC these days. +.PP +The memory allocator implemented in avr-libc tries to cope with all of these constraints, and offers some tuning options that can be used if there are more resources available than in the default configuration. +.SH "Internal vs. external RAM" +.PP +Obviously, the constraints are much harder to satisfy in the default configuration where only internal RAM is available. Extreme care must be taken to avoid a stack-heap collision, both by making sure functions aren't nesting too deeply, and don't require too much stack space for local variables, as well as by being cautious with allocating too much dynamic memory. +.PP +If external RAM is available, it is strongly recommended to move the heap into the external RAM, regardless of whether or not the variables from the \fC\fP.data and \fC\fP.bss sections are also going to be located there. The stack should always be kept in internal RAM. Some devices even require this, and in general, internal RAM can be accessed faster since no extra wait states are required. When using dynamic memory allocation and stack and heap are separated in distinct memory areas, this is the safest way to avoid a stack-heap collision. +.SH "Tunables for malloc()" +.PP +There are a number of variables that can be tuned to adapt the behavior of \fBmalloc()\fP to the expected requirements and constraints of the application. Any changes to these tunables should be made before the very first call to \fBmalloc()\fP. Note that some library functions might also use dynamic memory (notably those from the \fB: Standard IO facilities\fP), so make sure the changes will be done early enough in the startup sequence. +.PP +The variables \fC__malloc_heap_start\fP and \fC__malloc_heap_end\fP can be used to restrict the \fBmalloc()\fP function to a certain memory region. These variables are statically initialized to point to \fC__heap_start\fP and \fC__heap_end\fP, respectively, where \fC__heap_start\fP is filled in by the linker to point just beyond \fC\fP.bss, and \fC__heap_end\fP is set to 0 which makes \fBmalloc()\fP assume the heap is below the stack. +.PP +If the heap is going to be moved to external RAM, \fC__malloc_heap_end\fP \fImust\fP be adjusted accordingly. This can either be done at run-time, by writing directly to this variable, or it can be done automatically at link-time, by adjusting the value of the symbol \fC__heap_end\fP. +.PP + The following example shows a linker command to relocate the entire \fC\fP.data and \fC\fP.bss segments, and the heap to location 0x1100 in external RAM. The heap will extend up to address 0xffff. +.PP +.PP +.nf +avr-gcc ... -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff ... +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +See \fBexplanation\fP for offset 0x800000. See the chapter about \fBusing gcc\fP for the \fC-Wl\fP options. +.PP +The ld (linker) user manual states that using -Tdata= is equivalent to using --section-start,.data=. However, you have to use --section-start as above because the GCC frontend also sets the -Tdata option for all MCU types where the SRAM doesn't start at 0x800060. Thus, the linker is being faced with two -Tdata options. Sarting with binutils 2.16, the linker changed the preference, and picks the 'wrong' option in this situation. +.RE +.PP +Internal RAM: stack only, external RAM: variables and heapInternal RAM: stack only, external RAM: variables and heap +.PP +If dynamic memory should be placed in external RAM, while keeping the variables in internal RAM, something like the following could be used. Note that for demonstration purposes, the assignment of the various regions has not been made adjacent in this example, so there are 'holes' below and above the heap in external RAM that remain completely unaccessible by regular variables or dynamic memory allocations (shown in light bisque color in the picture below). +.PP +.PP +.nf +avr-gcc ... -Wl,--defsym=__heap_start=0x802000,--defsym=__heap_end=0x803fff ... +.fi +.PP +.PP +Internal RAM: variables and stack, external RAM: heapInternal RAM: variables and stack, external RAM: heap +.PP +If \fC__malloc_heap_end\fP is 0, the allocator attempts to detect the bottom of stack in order to prevent a stack-heap collision when extending the actual size of the heap to gain more space for dynamic memory. It will not try to go beyond the current stack limit, decreased by \fC__malloc_margin\fP bytes. Thus, all possible stack frames of interrupt routines that could interrupt the current function, plus all further nested function calls must not require more stack space, or they will risk colliding with the data segment. +.PP +The default value of \fC__malloc_margin\fP is set to 32. +.SH "Implementation details" +.PP +Dynamic memory allocation requests will be returned with a two-byte header prepended that records the size of the allocation. This is later used by \fBfree()\fP. The returned address points just beyond that header. Thus, if the application accidentally writes before the returned memory region, the internal consistency of the memory allocator is compromised. +.PP +The implementation maintains a simple freelist that accounts for memory blocks that have been returned in previous calls to \fBfree()\fP. Note that all of this memory is considered to be successfully added to the heap already, so no further checks against stack-heap collisions are done when recycling memory from the freelist. +.PP +The freelist itself is not maintained as a separate data structure, but rather by modifying the contents of the freed memory to contain pointers chaining the pieces together. That way, no additional memory is reqired to maintain this list except for a variable that keeps track of the lowest memory segment available for reallocation. Since both, a chain pointer and the size of the chunk need to be recorded in each chunk, the minimum chunk size on the freelist is four bytes. +.PP +When allocating memory, first the freelist is walked to see if it could satisfy the request. If there's a chunk available on the freelist that will fit the request exactly, it will be taken, disconnected from the freelist, and returned to the caller. If no exact match could be found, the closest match that would just satisfy the request will be used. The chunk will normally be split up into one to be returned to the caller, and another (smaller) one that will remain on the freelist. In case this chunk was only up to two bytes larger than the request, the request will simply be altered internally to also account for these additional bytes since no separate freelist entry could be split off in that case. +.PP +If nothing could be found on the freelist, heap extension is attempted. This is where \fC__malloc_margin\fP will be considered if the heap is operating below the stack, or where \fC__malloc_heap_end\fP will be verified otherwise. +.PP +If the remaining memory is insufficient to satisfy the request, \fCNULL\fP will eventually be returned to the caller. +.PP +When calling \fBfree()\fP, a new freelist entry will be prepared. An attempt is then made to aggregate the new entry with possible adjacent entries, yielding a single larger entry available for further allocations. That way, the potential for heap fragmentation is hopefully reduced. +.PP +A call to \fBrealloc()\fP first determines whether the operation is about to grow or shrink the current allocation. When shrinking, the case is easy: the existing chunk is split, and the tail of the region that is no longer to be used is passed to the standard \fBfree()\fP function for insertion into the freelist. Checks are first made whether the tail chunk is large enough to hold a chunk of its own at all, otherwise \fBrealloc()\fP will simply do nothing, and return the original region. +.PP +When growing the region, it is first checked whether the existing allocation can be extended in-place. If so, this is done, and the original pointer is returned without copying any data contents. As a side-effect, this check will also record the size of the largest chunk on the freelist. +.PP +If the region cannot be extended in-place, but the old chunk is at the top of heap, and the above freelist walk did not reveal a large enough chunk on the freelist to satisfy the new request, an attempt is made to quickly extend this topmost chunk (and thus the heap), so no need arises to copy over the existing data. If there's no more space available in the heap (same check is done as in \fBmalloc()\fP), the entire request will fail. +.PP +Otherwise, \fBmalloc()\fP will be called with the new request size, the existing data will be copied over, and \fBfree()\fP will be called on the old region. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/math.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/math.h.3 new file mode 100644 index 0000000..24b8557 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/math.h.3 @@ -0,0 +1,145 @@ +.TH "math.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +math.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBM_PI\fP 3.141592653589793238462643" +.br +.ti -1c +.RI "#define \fBM_SQRT2\fP 1.4142135623730950488016887" +.br +.ti -1c +.RI "#define \fBNAN\fP __builtin_nan('')" +.br +.ti -1c +.RI "#define \fBINFINITY\fP __builtin_inf()" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "double \fBcos\fP (double __x)" +.br +.ti -1c +.RI "double \fBfabs\fP (double __x)" +.br +.ti -1c +.RI "double \fBfmod\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBmodf\fP (double __x, double *__iptr)" +.br +.ti -1c +.RI "double \fBsin\fP (double __x)" +.br +.ti -1c +.RI "double \fBsqrt\fP (double __x)" +.br +.ti -1c +.RI "double \fBtan\fP (double __x)" +.br +.ti -1c +.RI "double \fBfloor\fP (double __x)" +.br +.ti -1c +.RI "double \fBceil\fP (double __x)" +.br +.ti -1c +.RI "double \fBfrexp\fP (double __x, int *__pexp)" +.br +.ti -1c +.RI "double \fBldexp\fP (double __x, int __exp)" +.br +.ti -1c +.RI "double \fBexp\fP (double __x)" +.br +.ti -1c +.RI "double \fBcosh\fP (double __x)" +.br +.ti -1c +.RI "double \fBsinh\fP (double __x)" +.br +.ti -1c +.RI "double \fBtanh\fP (double __x)" +.br +.ti -1c +.RI "double \fBacos\fP (double __x)" +.br +.ti -1c +.RI "double \fBasin\fP (double __x)" +.br +.ti -1c +.RI "double \fBatan\fP (double __x)" +.br +.ti -1c +.RI "double \fBatan2\fP (double __y, double __x)" +.br +.ti -1c +.RI "double \fBlog\fP (double __x)" +.br +.ti -1c +.RI "double \fBlog10\fP (double __x)" +.br +.ti -1c +.RI "double \fBpow\fP (double __x, double __y)" +.br +.ti -1c +.RI "int \fBisnan\fP (double __x)" +.br +.ti -1c +.RI "int \fBisinf\fP (double __x)" +.br +.ti -1c +.RI "double \fBsquare\fP (double __x)" +.br +.ti -1c +.RI "static double \fBcopysign\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBfdim\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBfma\fP (double __x, double __y, double __z)" +.br +.ti -1c +.RI "double \fBfmax\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBfmin\fP (double __x, double __y)" +.br +.ti -1c +.RI "int \fBsignbit\fP (double __x)" +.br +.ti -1c +.RI "double \fBtrunc\fP (double __x)" +.br +.ti -1c +.RI "static int \fBisfinite\fP (double __x)" +.br +.ti -1c +.RI "double \fBhypot\fP (double __x, double __y)" +.br +.ti -1c +.RI "double \fBround\fP (double __x)" +.br +.ti -1c +.RI "long \fBlround\fP (double __x)" +.br +.ti -1c +.RI "long \fBlrint\fP (double __x)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/mem_sections.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/mem_sections.3 new file mode 100644 index 0000000..58a38f8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/mem_sections.3 @@ -0,0 +1,233 @@ +.TH "mem_sections" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +mem_sections \- Memory Sections +\fBRemarks:\fP +.RS 4 +Need to list all the sections which are available to the avr. +.RE +.PP +\fBWeak Bindings\fP.RS 4 +FIXME: need to discuss the .weak directive. +.RE +.PP +The following describes the various sections available. +.SH "The .text Section" +.PP +The .text section contains the actual machine instructions which make up your program. This section is further subdivided by the .initN and .finiN sections dicussed below. +.PP +\fBNote:\fP +.RS 4 +The \fCavr-size\fP program (part of binutils), coming from a Unix background, doesn't account for the .data initialization space added to the .text section, so in order to know how much flash the final program will consume, one needs to add the values for both, .text and .data (but not .bss), while the amount of pre-allocated SRAM is the sum of .data and .bss. +.RE +.PP +.SH "The .data Section" +.PP +This section contains static data which was defined in your code. Things like the following would end up in .data: +.PP +.PP +.nf +char err_str[] = 'Your program has died a horrible death!'; + +struct point pt = { 1, 1 }; +.fi +.PP +.PP +It is possible to tell the linker the SRAM address of the beginning of the .data section. This is accomplished by adding \fB\fC-Wl,-Tdata,\fIaddr\fP\fP\fP to the \fCavr-gcc\fP command used to the link your program. Not that \fI\fCaddr\fP\fP must be offset by adding 0x800000 the to real SRAM address so that the linker knows that the address is in the SRAM memory space. Thus, if you want the .data section to start at 0x1100, pass 0x801100 at the address to the linker. [offset \fBexplained\fP] +.PP +\fBNote:\fP +.RS 4 +When using \fC\fBmalloc()\fP\fP in the application (which could even happen inside library calls), \fBadditional adjustments\fP are required. +.RE +.PP +.SH "The .bss Section" +.PP +Uninitialized global or static variables end up in the .bss section. +.SH "The .eeprom Section" +.PP +This is where eeprom variables are stored. +.SH "The .noinit Section" +.PP +This sections is a part of the .bss section. What makes the .noinit section special is that variables which are defined as such: +.PP +.PP +.nf +int foo __attribute__ ((section ('.noinit'))); +.fi +.PP +.PP +will not be initialized to zero during startup as would normal .bss data. +.PP +Only uninitialized variables can be placed in the .noinit section. Thus, the following code will cause \fCavr-gcc\fP to issue an error: +.PP +.PP +.nf +int bar __attribute__ ((section ('.noinit'))) = 0xaa; +.fi +.PP +.PP +It is possible to tell the linker explicitly where to place the .noinit section by adding \fC-Wl,--section-start=.noinit=0x802000\fP to the \fCavr-gcc\fP command line at the linking stage. For example, suppose you wish to place the .noinit section at SRAM address 0x2000: +.PP +.PP +.nf + + $ avr-gcc ... -Wl,--section-start=.noinit=0x802000 ... +.fi +.PP +.PP + +.PP +\fBNote:\fP +.RS 4 +Because of the Harvard architecture of the AVR devices, you must manually add 0x800000 to the address you pass to the linker as the start of the section. Otherwise, the linker thinks you want to put the .noinit section into the .text section instead of .data/.bss and will complain. +.RE +.PP +Alternatively, you can write your own linker script to automate this. [FIXME: need an example or ref to dox for writing linker scripts.] +.SH "The .initN Sections" +.PP +These sections are used to define the startup code from reset up through the start of main(). These all are subparts of the \fB.text section\fP. +.PP +The purpose of these sections is to allow for more specific placement of code within your program. +.PP +\fBNote:\fP +.RS 4 +Sometimes, it is convenient to think of the .initN and .finiN sections as functions, but in reality they are just symbolic names which tell the linker where to stick a chunk of code which is \fInot\fP a function. Notice that the examples for \fBasm\fP and \fBC\fP can not be called as functions and should not be jumped into. +.RE +.PP +The \fB.initN\fP sections are executed in order from 0 to 9. +.PP +\fB.init0:\fP.RS 4 +Weakly bound to __init(). If user defines __init(), it will be jumped into immediately after a reset. +.RE +.PP +\fB.init1:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.init2:\fP.RS 4 +In C programs, weakly bound to initialize the stack, and to clear __zero_reg__ (r1). +.RE +.PP +\fB.init3:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.init4:\fP.RS 4 + +.RE +.PP +For devices with > 64 KB of ROM, .init4 defines the code which takes care of copying the contents of .data from the flash to SRAM. For all other devices, this code as well as the code to zero out the .bss section is loaded from libgcc.a. +.PP +\fB.init5:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.init6:\fP.RS 4 +Unused for C programs, but used for constructors in C++ programs. +.RE +.PP +\fB.init7:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.init8:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.init9:\fP.RS 4 +Jumps into main(). +.RE +.PP +.SH "The .finiN Sections" +.PP +These sections are used to define the exit code executed after return from main() or a call to \fBexit()\fP. These all are subparts of the \fB.text section\fP. +.PP +The \fB.finiN\fP sections are executed in descending order from 9 to 0. +.PP +\fB.finit9:\fP.RS 4 +Unused. User definable. This is effectively where _exit() starts. +.RE +.PP +\fB.fini8:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.fini7:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.fini6:\fP.RS 4 +Unused for C programs, but used for destructors in C++ programs. +.RE +.PP +\fB.fini5:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.fini4:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.fini3:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.fini2:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.fini1:\fP.RS 4 +Unused. User definable. +.RE +.PP +\fB.fini0:\fP.RS 4 +Goes into an infinite loop after program termination and completion of any _exit() code (execution of code in the .fini9 -> .fini1 sections). +.RE +.PP +.SH "Using Sections in Assembler Code" +.PP +Example: +.PP +.PP +.nf +#include + + .section .init1,'ax',@progbits + ldi r0, 0xff + out _SFR_IO_ADDR(PORTB), r0 + out _SFR_IO_ADDR(DDRB), r0 +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +The \fB\fC,'ax',@progbits\fP\fP tells the assembler that the section is allocatable ('a'), executable ('x') and contains data ('@progbits'). For more detailed information on the .section directive, see the gas user manual. +.RE +.PP +.SH "Using Sections in C Code" +.PP +Example: +.PP +.PP +.nf +#include + +void my_init_portb (void) __attribute__ ((naked)) \ + __attribute__ ((section ('.init3'))); + +void +my_init_portb (void) +{ + PORTB = 0xff; + DDRB = 0xff; +} +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +Section .init3 is used in this example, as this ensures the inernal \fC__zero_reg__\fP has already been set up. The code generated by the compiler might blindly rely on \fC__zero_reg__\fP being really 0. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memccpy.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memccpy.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memccpy.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memccpy.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memccpy.S.3 new file mode 100644 index 0000000..30a48d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memccpy.S.3 @@ -0,0 +1,14 @@ +.TH "memccpy.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memccpy.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr.S.3 new file mode 100644 index 0000000..090d929 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr.S.3 @@ -0,0 +1,14 @@ +.TH "memchr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memchr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr_P.S.3 new file mode 100644 index 0000000..48a252d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memchr_P.S.3 @@ -0,0 +1,14 @@ +.TH "memchr_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memchr_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp.S.3 new file mode 100644 index 0000000..c95eef1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp.S.3 @@ -0,0 +1,14 @@ +.TH "memcmp.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memcmp.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp_P.S.3 new file mode 100644 index 0000000..8b4e808 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcmp_P.S.3 @@ -0,0 +1,14 @@ +.TH "memcmp_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memcmp_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy.S.3 new file mode 100644 index 0000000..10d123b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy.S.3 @@ -0,0 +1,14 @@ +.TH "memcpy.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memcpy.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy_P.S.3 new file mode 100644 index 0000000..cf4f35a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memcpy_P.S.3 @@ -0,0 +1,14 @@ +.TH "memcpy_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memcpy_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem.S.3 new file mode 100644 index 0000000..11aa88f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem.S.3 @@ -0,0 +1,14 @@ +.TH "memmem.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memmem.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmem_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmove.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmove.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmove.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmove.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmove.S.3 new file mode 100644 index 0000000..2b399d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memmove.S.3 @@ -0,0 +1,14 @@ +.TH "memmove.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memmove.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr.S.3 new file mode 100644 index 0000000..813401d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr.S.3 @@ -0,0 +1,14 @@ +.TH "memrchr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memrchr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr_P.S.3 new file mode 100644 index 0000000..2eb81d6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memrchr_P.S.3 @@ -0,0 +1,14 @@ +.TH "memrchr_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memrchr_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memset.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memset.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memset.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memset.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memset.S.3 new file mode 100644 index 0000000..1227d9c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/memset.S.3 @@ -0,0 +1,14 @@ +.TH "memset.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +memset.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/modf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/modf.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/modf.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/outb.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/outb.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/outb.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/outp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/outp.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/outp.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/overview.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/overview.3 new file mode 100644 index 0000000..094e7e0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/overview.3 @@ -0,0 +1,147 @@ +.TH "overview" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +overview \- Toolchain Overview +.SH "Introduction" +.PP +Welcome to the open source software development toolset for the Atmel AVR! +.PP +There is not a single tool that provides everything needed to develop software for the AVR. It takes many tools working together. Collectively, the group of tools are called a toolset, or commonly a toolchain, as the tools are chained together to produce the final executable application for the AVR microcontroller. +.PP +The following sections provide an overview of all of these tools. You may be used to cross-compilers that provide everything with a GUI front-end, and not know what goes on 'underneath the hood'. You may be coming from a desktop or server computer background and not used to embedded systems. Or you may be just learning about the most common software development toolchain available on Unix and Linux systems. Hopefully the following overview will be helpful in putting everything in perspective. +.SH "FSF and GNU" +.PP +According to its website, 'the Free Software Foundation (FSF), established in 1985, is dedicated to promoting computer users' rights to use, study, copy, modify, and redistribute computer programs. The FSF promotes the development and use of free software, particularly the GNU operating system, used widely in its GNU/Linux variant.' The FSF remains the primary sponsor of the GNU project. +.PP +The GNU Project was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system. GNU is a recursive acronym for »GNU's Not Unix«; it is pronounced guh-noo, approximately like canoe. +.PP +One of the main projects of the GNU system is the GNU Compiler Collection, or GCC, and its sister project, GNU Binutils. These two open source projects provide a foundation for a software development toolchain. Note that these projects were designed to originally run on Unix-like systems. +.SH "GCC" +.PP +GCC stands for GNU Compiler Collection. GCC is highly flexible compiler system. It has different compiler front-ends for different languages. It has many back-ends that generate assembly code for many different processors and host operating systems. All share a common 'middle-end', containing the generic parts of the compiler, including a lot of optimizations. +.PP +In GCC, a \fIhost\fP system is the system (processor/OS) that the compiler runs on. A \fItarget\fP system is the system that the compiler compiles code for. And, a \fIbuild\fP system is the system that the compiler is built (from source code) on. If a compiler has the same system for \fIhost\fP and for \fItarget\fP, it is known as a \fInative\fP compiler. If a compiler has different systems for \fIhost\fP and \fItarget\fP, it is known as a cross-compiler. (And if all three, \fIbuild\fP, \fIhost\fP, and \fItarget\fP systems are different, it is known as a Canadian cross compiler, but we won't discuss that here.) When GCC is built to execute on a \fIhost\fP system such as FreeBSD, Linux, or Windows, and it is built to generate code for the AVR microcontroller \fItarget\fP, then it is a cross compiler, and this version of GCC is commonly known as 'AVR GCC'. In documentation, or discussion, AVR GCC is used when referring to GCC targeting specifically the AVR, or something that is AVR specific about GCC. The term 'GCC' is usually used to refer to something generic about GCC, or about GCC as a whole. +.PP +GCC is different from most other compilers. GCC focuses on translating a high-level language to the target assembly only. AVR GCC has three available compilers for the AVR: C language, C++, and Ada. The compiler itself does not assemble or link the final code. +.PP +GCC is also known as a 'driver' program, in that it knows about, and drives other programs seamlessly to create the final output. The assembler, and the linker are part of another open source project called GNU Binutils. GCC knows how to drive the GNU assembler (gas) to assemble the output of the compiler. GCC knows how to drive the GNU linker (ld) to link all of the object modules into a final executable. +.PP +The two projects, GCC and Binutils, are very much interrelated and many of the same volunteers work on both open source projects. +.PP +When GCC is built for the AVR target, the actual program names are prefixed with 'avr-'. So the actual executable name for AVR GCC is: avr-gcc. The name 'avr-gcc' is used in documentation and discussion when referring to the program itself and not just the whole AVR GCC system. +.PP +See the GCC Web Site and GCC User Manual for more information about GCC. +.SH "GNU Binutils" +.PP +The name GNU Binutils stands for 'Binary Utilities'. It contains the GNU assembler (gas), and the GNU linker (ld), but also contains many other utilities that work with binary files that are created as part of the software development toolchain. +.PP +Again, when these tools are built for the AVR target, the actual program names are prefixed with 'avr-'. For example, the assembler program name, for a native assembler is 'as' (even though in documentation the GNU assembler is commonly referred to as 'gas'). But when built for an AVR target, it becomes 'avr-as'. Below is a list of the programs that are included in Binutils: +.PP +\fBavr-as\fP.RS 4 +The Assembler. +.RE +.PP +\fBavr-ld\fP.RS 4 +The Linker. +.RE +.PP +\fBavr-ar\fP.RS 4 +Create, modify, and extract from libraries (archives). +.RE +.PP +\fBavr-ranlib\fP.RS 4 +Generate index to library (archive) contents. +.RE +.PP +\fBavr-objcopy\fP.RS 4 +Copy and translate object files to different formats. +.RE +.PP +\fBavr-objdump\fP.RS 4 +Display information from object files including disassembly. +.RE +.PP +\fBavr-size\fP.RS 4 +List section sizes and total size. +.RE +.PP +\fBavr-nm\fP.RS 4 +List symbols from object files. +.RE +.PP +\fBavr-strings\fP.RS 4 +List printable strings from files. +.RE +.PP +\fBavr-strip\fP.RS 4 +Discard symbols from files. +.RE +.PP +\fBavr-readelf\fP.RS 4 +Display the contents of ELF format files. +.RE +.PP +\fBavr-addr2line\fP.RS 4 +Convert addresses to file and line. +.RE +.PP +\fBavr-c++filt\fP.RS 4 +Filter to demangle encoded C++ symbols. +.RE +.PP +.SH "avr-libc" +.PP +GCC and Binutils provides a lot of the tools to develop software, but there is one critical component that they do not provide: a Standard C Library. +.PP +There are different open source projects that provide a Standard C Library depending upon your system time, whether for a native compiler (GNU Libc), for some other embedded system (newlib), or for some versions of Linux (uCLibc). The open source AVR toolchain has its own Standard C Library project: avr-libc. +.PP +AVR-Libc provides many of the same functions found in a regular Standard C Library and many additional library functions that is specific to an AVR. Some of the Standard C Library functions that are commonly used on a PC environment have limitations or additional issues that a user needs to be aware of when used on an embedded system. +.PP +AVR-Libc also contains the most documentation about the whole AVR toolchain. +.SH "Building Software" +.PP +Even though GCC, Binutils, and avr-libc are the core projects that are used to build software for the AVR, there is another piece of software that ties it all together: Make. GNU Make is a program that makes things, and mainly software. Make interprets and executes a Makefile that is written for a project. A Makefile contains dependency rules, showing which output files are dependent upon which input files, and instructions on how to build output files from input files. +.PP +Some distributions of the toolchains, and other AVR tools such as MFile, contain a Makefile template written for the AVR toolchain and AVR applications that you can copy and modify for your application. +.PP +See the GNU Make User Manual for more information. +.SH "AVRDUDE" +.PP +After creating your software, you'll want to program your device. You can do this by using the program AVRDUDE which can interface with various hardware devices to program your processor. +.PP +AVRDUDE is a very flexible package. All the information about AVR processors and various hardware programmers is stored in a text database. This database can be modified by any user to add new hardware or to add an AVR processor if it is not already listed. +.SH "GDB / Insight / DDD" +.PP +The GNU Debugger (GDB) is a command-line debugger that can be used with the rest of the AVR toolchain. Insight is GDB plus a GUI written in Tcl/Tk. Both GDB and Insight are configured for the AVR and the main executables are prefixed with the target name: avr-gdb, and avr-insight. There is also a 'text mode' GUI for GDB: avr-gdbtui. DDD (Data Display Debugger) is another popular GUI front end to GDB, available on Unix and Linux systems. +.SH "AVaRICE" +.PP +AVaRICE is a back-end program to AVR GDB and interfaces to the Atmel JTAG In-Circuit Emulator (ICE), to provide emulation capabilities. +.SH "SimulAVR" +.PP +SimulAVR is an AVR simulator used as a back-end with AVR GDB. Unfortunately, this project is currently unmaintained and could use some help. +.SH "Utilities" +.PP +There are also other optional utilities available that may be useful to add to your toolset. +.PP +\fCSRecord\fP is a collection of powerful tools for manipulating EPROM load files. It reads and writes numerous EPROM file formats, and can perform many different manipulations. +.PP +\fCMFile\fP is a simple Makefile generator is meant as an aid to quickly customize a Makefile to use for your AVR application. +.SH "Toolchain Distributions (Distros)" +.PP +All of the various open source projects that comprise the entire toolchain are normally distributed as source code. It is left up to the user to build the tool application from its source code. This can be a very daunting task to any potential user of these tools. +.PP +Luckily there are people who help out in this area. Volunteers take the time to build the application from source code on particular host platforms and sometimes packaging the tools for convenient installation by the end user. These packages contain the binary executables of the tools, pre-made and ready to use. These packages are known as 'distributions' of the AVR toolchain, or by a more shortened name, 'distros'. +.PP +AVR toolchain distros are available on FreeBSD, Windows, Mac OS X, and certain flavors of Linux. +.SH "Open Source" +.PP +All of these tools, from the original source code in the multitude of projects, to the various distros, are put together by many, many volunteers. All of these projects could always use more help from other people who are willing to volunteer some of their time. There are many different ways to help, for people with varying skill levels, abilities, and available time. +.PP +You can help to answer questions in mailing lists such as the avr-gcc-list, or on forums at the AVR Freaks website. This helps many people new to the open source AVR tools. +.PP +If you think you found a bug in any of the tools, it is always a big help to submit a good bug report to the proper project. A good bug report always helps other volunteers to analyze the problem and to get it fixed for future versions of the software. +.PP +You can also help to fix bugs in various software projects, or to add desirable new features. +.PP +Volunteers are always welcome! :-) diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/p.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/p.3 new file mode 100644 index 0000000..1dee62e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/p.3 @@ -0,0 +1 @@ +.so man3/strtok.c.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/parity.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/parity.h.3 new file mode 100644 index 0000000..c8dda1e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/parity.h.3 @@ -0,0 +1,21 @@ +.TH "parity.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +parity.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBparity_even_bit\fP(val)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/parity_even_bit.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/parity_even_bit.3 new file mode 100644 index 0000000..5d718e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/parity_even_bit.3 @@ -0,0 +1 @@ +.so man3/util_parity.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte_far.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte_far.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte_far.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte_near.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte_near.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_byte_near.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword_far.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword_far.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword_far.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword_near.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword_near.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_dword_near.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float_far.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float_far.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float_far.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float_near.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float_near.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_float_near.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word_far.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word_far.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word_far.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word_near.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word_near.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgm_read_word_near.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgmspace.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgmspace.3 new file mode 100644 index 0000000..3ceff2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgmspace.3 @@ -0,0 +1,206 @@ +.TH "pgmspace" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pgmspace \- Data in Program Space +.SH "Introduction" +.PP +So you have some constant data and you're running out of room to store it? Many AVRs have limited amount of RAM in which to store data, but may have more Flash space available. The AVR is a Harvard architecture processor, where Flash is used for the program, RAM is used for data, and they each have separate address spaces. It is a challenge to get constant data to be stored in the Program Space, and to retrieve that data to use it in the AVR application. +.PP +The problem is exacerbated by the fact that the C Language was not designed for Harvard architectures, it was designed for Von Neumann architectures where code and data exist in the same address space. This means that any compiler for a Harvard architecture processor, like the AVR, has to use other means to operate with separate address spaces. +.PP +Some compilers use non-standard C language keywords, or they extend the standard syntax in ways that are non-standard. The AVR toolset takes a different approach. +.PP +GCC has a special keyword, \fC__attribute__\fP that is used to attach different attributes to things such as function declarations, variables, and types. This keyword is followed by an attribute specification in double parentheses. In AVR GCC, there is a special attribute called \fCprogmem\fP. This attribute is use on data declarations, and tells the compiler to place the data in the Program Memory (Flash). +.PP +AVR-Libc provides a simple macro \fCPROGMEM\fP that is defined as the attribute syntax of GCC with the \fCprogmem\fP attribute. This macro was created as a convenience to the end user, as we will see below. The \fCPROGMEM\fP macro is defined in the \fC<\fBavr/pgmspace.h\fP>\fP system header file. +.PP +It is difficult to modify GCC to create new extensions to the C language syntax, so instead, avr-libc has created macros to retrieve the data from the Program Space. These macros are also found in the \fC<\fBavr/pgmspace.h\fP>\fP system header file. +.SH "A Note On const" +.PP +Many users bring up the idea of using C's keyword \fCconst\fP as a means of declaring data to be in Program Space. Doing this would be an abuse of the intended meaning of the \fCconst\fP keyword. +.PP +\fCconst\fP is used to tell the compiler that the data is to be 'read-only'. It is used to help make it easier for the compiler to make certain transformations, or to help the compiler check for incorrect usage of those variables. +.PP +For example, the const keyword is commonly used in many functions as a modifier on the parameter type. This tells the compiler that the function will only use the parameter as read-only and will not modify the contents of the parameter variable. +.PP +\fCconst\fP was intended for uses such as this, not as a means to identify where the data should be stored. If it were used as a means to define data storage, then it loses its correct meaning (changes its semantics) in other situations such as in the function parameter example. +.SH "Storing and Retrieving Data in the Program Space" +.PP +Let's say you have some global data: +.PP +.PP +.nf +unsigned char mydata[11][10] = +{ + {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}, + {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13}, + {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D}, + {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27}, + {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31}, + {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B}, + {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45}, + {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F}, + {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59}, + {0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63}, + {0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D} +}; +.fi +.PP +.PP +and later in your code you access this data in a function and store a single byte into a variable like so: +.PP +.PP +.nf +byte = mydata[i][j]; +.fi +.PP +.PP +Now you want to store your data in Program Memory. Use the \fCPROGMEM\fP macro found in \fC<\fBavr/pgmspace.h\fP>\fP and put it after the declaration of the variable, but before the initializer, like so: +.PP +.PP +.nf +#include +. +. +. +unsigned char mydata[11][10] PROGMEM = +{ + {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}, + {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13}, + {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D}, + {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27}, + {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31}, + {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B}, + {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45}, + {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F}, + {0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59}, + {0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63}, + {0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D} +}; +.fi +.PP +.PP +That's it! Now your data is in the Program Space. You can compile, link, and check the map file to verify that \fCmydata\fP is placed in the correct section. +.PP +Now that your data resides in the Program Space, your code to access (read) the data will no longer work. The code that gets generated will retrieve the data that is located at the address of the \fCmydata\fP array, plus offsets indexed by the \fCi\fP and \fCj\fP variables. However, the final address that is calculated where to the retrieve the data points to the Data Space! Not the Program Space where the data is actually located. It is likely that you will be retrieving some garbage. The problem is that AVR GCC does not intrinsically know that the data resides in the Program Space. +.PP +The solution is fairly simple. The 'rule of thumb' for accessing data stored in the Program Space is to access the data as you normally would (as if the variable is stored in Data Space), like so: +.PP +.PP +.nf +byte = mydata[i][j]; +.fi +.PP +.PP +then take the address of the data: +.PP +.PP +.nf +byte = &(mydata[i][j]); +.fi +.PP +.PP +then use the appropriate \fCpgm_read_*\fP macro, and the address of your data becomes the parameter to that macro: +.PP +.PP +.nf +byte = pgm_read_byte(&(mydata[i][j])); +.fi +.PP +.PP +The \fCpgm_read_*\fP macros take an address that points to the Program Space, and retrieves the data that is stored at that address. This is why you take the address of the offset into the array. This address becomes the parameter to the macro so it can generate the correct code to retrieve the data from the Program Space. There are different \fCpgm_read_*\fP macros to read different sizes of data at the address given. +.SH "Storing and Retrieving Strings in the Program Space" +.PP +Now that you can successfully store and retrieve simple data from Program Space you want to store and retrive strings from Program Space. And specifically you want to store and array of strings to Program Space. So you start off with your array, like so: +.PP +.PP +.nf +char *string_table[] = +{ + 'String 1', + 'String 2', + 'String 3', + 'String 4', + 'String 5' +}; +.fi +.PP +.PP +and then you add your PROGMEM macro to the end of the declaration: +.PP +.PP +.nf +char *string_table[] PROGMEM = +{ + 'String 1', + 'String 2', + 'String 3', + 'String 4', + 'String 5' +}; +.fi +.PP +.PP +Right? WRONG! +.PP +Unfortunately, with GCC attributes, they affect only the declaration that they are attached to. So in this case, we successfully put the \fCstring_table\fP variable, the array itself, in the Program Space. This DOES NOT put the actual strings themselves into Program Space. At this point, the strings are still in the Data Space, which is probably not what you want. +.PP +In order to put the strings in Program Space, you have to have explicit declarations for each string, and put each string in Program Space: +.PP +.PP +.nf +char string_1[] PROGMEM = 'String 1'; +char string_2[] PROGMEM = 'String 2'; +char string_3[] PROGMEM = 'String 3'; +char string_4[] PROGMEM = 'String 4'; +char string_5[] PROGMEM = 'String 5'; +.fi +.PP +.PP +Then use the new symbols in your table, like so: +.PP +.PP +.nf +PGM_P string_table[] PROGMEM = +{ + string_1, + string_2, + string_3, + string_4, + string_5 +}; +.fi +.PP +.PP +Now this has the effect of putting \fCstring_table\fP in Program Space, where \fCstring_table\fP is an array of pointers to characters (strings), where each pointer is a pointer to the Program Space, where each string is also stored. +.PP +The \fCPGM_P\fP type above is also a macro that defined as a pointer to a character in the Program Space. +.PP +Retrieving the strings are a different matter. You probably don't want to pull the string out of Program Space, byte by byte, using the \fC\fBpgm_read_byte()\fP\fP macro. There are other functions declared in the <\fBavr/pgmspace.h\fP> header file that work with strings that are stored in the Program Space. +.PP +For example if you want to copy the string from Program Space to a buffer in RAM (like an automatic variable inside a function, that is allocated on the stack), you can do this: +.PP +.PP +.nf +void foo(void) +{ + char buffer[10]; + + for (unsigned char i = 0; i < 5; i++) + { + strcpy_P(buffer, (PGM_P)pgm_read_word(&(string_table[i]))); + + // Display buffer on LCD. + } + return; +} +.fi +.PP +.PP +Here, the \fCstring_table\fP array is stored in Program Space, so we access it normally, as if were stored in Data Space, then take the address of the location we want to access, and use the address as a parameter to \fCpgm_read_word\fP. We use the \fCpgm_read_word\fP macro to read the string pointer out of the \fCstring_table\fP array. Remember that a pointer is 16-bits, or word size. The \fCpgm_read_word\fP macro will return a 16-bit unsigned integer. We then have to typecast it as a true pointer to program memory, \fCPGM_P\fP. This pointer is an address in Program Space pointing to the string that we want to copy. This pointer is then used as a parameter to the function \fCstrcpy_P\fP. The function \fCstrcpy_P\fP is just like the regular \fCstrcpy\fP function, except that it copies a string from Program Space (the second parameter) to a buffer in the Data Space (the first parameter). +.PP +There are many string functions available that work with strings located in Program Space. All of these special string functions have a suffix of \fC_P\fP in the function name, and are declared in the <\fBavr/pgmspace.h\fP> header file. +.SH "Caveats" +.PP +The macros and functions used to retrieve data from the Program Space have to generate some extra code in order to actually load the data from the Program Space. This incurs some extra overhead in terms of code space (extra opcodes) and execution time. Usually, both the space and time overhead is minimal compared to the space savings of putting data in Program Space. But you should be aware of this so you can minimize the number of calls within a single function that gets the same piece of data from Program Space. It is always instructive to look at the resulting disassembly from the compiler. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgmspace.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgmspace.h.3 new file mode 100644 index 0000000..c94e9e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pgmspace.h.3 @@ -0,0 +1,586 @@ +.TH "pgmspace.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pgmspace.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB__PGMSPACE_H_\fP 1" +.br +.ti -1c +.RI "#define \fB__need_size_t\fP" +.br +.ti -1c +.RI "#define \fB__ATTR_PROGMEM__\fP __attribute__((__progmem__))" +.br +.ti -1c +.RI "#define \fB__ATTR_PURE__\fP __attribute__((__pure__))" +.br +.ti -1c +.RI "#define \fBPROGMEM\fP __ATTR_PROGMEM__" +.br +.ti -1c +.RI "#define \fBPSTR\fP(s) ((const PROGMEM char *)(s))" +.br +.ti -1c +.RI "#define \fB__LPM_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_word_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_word_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_dword_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_dword_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_float_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_float_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__LPM\fP(addr) __LPM_classic__(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_word\fP(addr) __LPM_word_classic__(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_dword\fP(addr) __LPM_dword_classic__(addr)" +.br +.ti -1c +.RI "#define \fB__LPM_float\fP(addr) __LPM_float_classic__(addr)" +.br +.ti -1c +.RI "#define \fBpgm_read_byte_near\fP(address_short) __LPM((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fBpgm_read_word_near\fP(address_short) __LPM_word((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fBpgm_read_dword_near\fP(address_short) __LPM_dword((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fBpgm_read_float_near\fP(address_short) __LPM_float((\fBuint16_t\fP)(address_short))" +.br +.ti -1c +.RI "#define \fB__ELPM_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_word_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_word_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_dword_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_dword_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_float_classic__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_float_enhanced__\fP(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM\fP(addr) __ELPM_classic__(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_word\fP(addr) __ELPM_word_classic__(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_dword\fP(addr) __ELPM_dword_classic__(addr)" +.br +.ti -1c +.RI "#define \fB__ELPM_float\fP(addr) __ELPM_float_classic__(addr)" +.br +.ti -1c +.RI "#define \fBpgm_read_byte_far\fP(address_long) __ELPM((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_word_far\fP(address_long) __ELPM_word((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_dword_far\fP(address_long) __ELPM_dword((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_float_far\fP(address_long) __ELPM_float((\fBuint32_t\fP)(address_long))" +.br +.ti -1c +.RI "#define \fBpgm_read_byte\fP(address_short) pgm_read_byte_near(address_short)" +.br +.ti -1c +.RI "#define \fBpgm_read_word\fP(address_short) pgm_read_word_near(address_short)" +.br +.ti -1c +.RI "#define \fBpgm_read_dword\fP(address_short) pgm_read_dword_near(address_short)" +.br +.ti -1c +.RI "#define \fBpgm_read_float\fP(address_short) pgm_read_float_near(address_short)" +.br +.ti -1c +.RI "#define \fBPGM_P\fP const \fBprog_char\fP *" +.br +.ti -1c +.RI "#define \fBPGM_VOID_P\fP const \fBprog_void\fP *" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef void PROGMEM \fBprog_void\fP" +.br +.ti -1c +.RI "typedef char PROGMEM \fBprog_char\fP" +.br +.ti -1c +.RI "typedef unsigned char PROGMEM \fBprog_uchar\fP" +.br +.ti -1c +.RI "typedef \fBint8_t\fP PROGMEM \fBprog_int8_t\fP" +.br +.ti -1c +.RI "typedef \fBuint8_t\fP PROGMEM \fBprog_uint8_t\fP" +.br +.ti -1c +.RI "typedef \fBint16_t\fP PROGMEM \fBprog_int16_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP PROGMEM \fBprog_uint16_t\fP" +.br +.ti -1c +.RI "typedef \fBint32_t\fP PROGMEM \fBprog_int32_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP PROGMEM \fBprog_uint32_t\fP" +.br +.ti -1c +.RI "typedef \fBint64_t\fP PROGMEM \fBprog_int64_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP PROGMEM \fBprog_uint64_t\fP" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "PGM_VOID_P \fBmemchr_P\fP (PGM_VOID_P, int __val, size_t __len)" +.br +.ti -1c +.RI "int \fBmemcmp_P\fP (const void *, PGM_VOID_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemcpy_P\fP (void *, PGM_VOID_P, size_t)" +.br +.ti -1c +.RI "void * \fBmemmem_P\fP (const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "PGM_VOID_P \fBmemrchr_P\fP (PGM_VOID_P, int __val, size_t __len)" +.br +.ti -1c +.RI "char * \fBstrcat_P\fP (char *, PGM_P)" +.br +.ti -1c +.RI "PGM_P \fBstrchr_P\fP (PGM_P, int __val)" +.br +.ti -1c +.RI "PGM_P \fBstrchrnul_P\fP (PGM_P, int __val)" +.br +.ti -1c +.RI "int \fBstrcmp_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcpy_P\fP (char *, PGM_P)" +.br +.ti -1c +.RI "int \fBstrcasecmp_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcasestr_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.ti -1c +.RI "size_t \fBstrcspn_P\fP (const char *__s, PGM_P __reject) __ATTR_PURE__" +.br +.ti -1c +.RI "size_t \fBstrlcat_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlcpy_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlen_P\fP (PGM_P)" +.br +.ti -1c +.RI "size_t \fBstrnlen_P\fP (PGM_P, size_t)" +.br +.ti -1c +.RI "int \fBstrncmp_P\fP (const char *, PGM_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "int \fBstrncasecmp_P\fP (const char *, PGM_P, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrncat_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "char * \fBstrncpy_P\fP (char *, PGM_P, size_t)" +.br +.ti -1c +.RI "char * \fBstrpbrk_P\fP (const char *__s, PGM_P __accept) __ATTR_PURE__" +.br +.ti -1c +.RI "PGM_P \fBstrrchr_P\fP (PGM_P, int __val)" +.br +.ti -1c +.RI "char * \fBstrsep_P\fP (char **__sp, PGM_P __delim)" +.br +.ti -1c +.RI "size_t \fBstrspn_P\fP (const char *__s, PGM_P __accept) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrstr_P\fP (const char *, PGM_P) __ATTR_PURE__" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define __ELPM_classic__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + 'out %2, %C1' '\n\t' \ + 'mov r31, %B1' '\n\t' \ + 'mov r30, %A1' '\n\t' \ + 'elpm' '\n\t' \ + 'mov %0, r0' '\n\t' \ + : '=r' (__result) \ + : 'r' (__addr32), \ + 'I' (_SFR_IO_ADDR(RAMPZ)) \ + : 'r0', 'r30', 'r31' \ + ); \ + __result; \ +})) +.fi +.SS "#define __ELPM_dword_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint32_t __result; \ + __asm__ \ + ( \ + 'out %2, %C1' '\n\t' \ + 'movw r30, %1' '\n\t' \ + 'elpm %A0, Z+' '\n\t' \ + 'elpm %B0, Z+' '\n\t' \ + 'elpm %C0, Z+' '\n\t' \ + 'elpm %D0, Z' '\n\t' \ + : '=r' (__result) \ + : 'r' (__addr32), \ + 'I' (_SFR_IO_ADDR(RAMPZ)) \ + : 'r30', 'r31' \ + ); \ + __result; \ +})) +.fi +.SS "#define __ELPM_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + 'out %2, %C1' '\n\t' \ + 'movw r30, %1' '\n\t' \ + 'elpm %0, Z+' '\n\t' \ + : '=r' (__result) \ + : 'r' (__addr32), \ + 'I' (_SFR_IO_ADDR(RAMPZ)) \ + : 'r30', 'r31' \ + ); \ + __result; \ +})) +.fi +.SS "#define __ELPM_float_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + float __result; \ + __asm__ \ + ( \ + 'out %2, %C1' '\n\t' \ + 'movw r30, %1' '\n\t' \ + 'elpm %A0, Z+' '\n\t' \ + 'elpm %B0, Z+' '\n\t' \ + 'elpm %C0, Z+' '\n\t' \ + 'elpm %D0, Z' '\n\t' \ + : '=r' (__result) \ + : 'r' (__addr32), \ + 'I' (_SFR_IO_ADDR(RAMPZ)) \ + : 'r30', 'r31' \ + ); \ + __result; \ +})) +.fi +.SS "#define __ELPM_word_classic__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + 'out %2, %C1' '\n\t' \ + 'mov r31, %B1' '\n\t' \ + 'mov r30, %A1' '\n\t' \ + 'elpm' '\n\t' \ + 'mov %A0, r0' '\n\t' \ + 'in r0, %2' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'adc r0, __zero_reg__' '\n\t' \ + 'out %2, r0' '\n\t' \ + 'elpm' '\n\t' \ + 'mov %B0, r0' '\n\t' \ + : '=r' (__result) \ + : 'r' (__addr32), \ + 'I' (_SFR_IO_ADDR(RAMPZ)) \ + : 'r0', 'r30', 'r31' \ + ); \ + __result; \ +})) +.fi +.SS "#define __ELPM_word_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint32_t __addr32 = (uint32_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + 'out %2, %C1' '\n\t' \ + 'movw r30, %1' '\n\t' \ + 'elpm %A0, Z+' '\n\t' \ + 'elpm %B0, Z' '\n\t' \ + : '=r' (__result) \ + : 'r' (__addr32), \ + 'I' (_SFR_IO_ADDR(RAMPZ)) \ + : 'r30', 'r31' \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_classic__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + 'lpm' '\n\t' \ + 'mov %0, r0' '\n\t' \ + : '=r' (__result) \ + : 'z' (__addr16) \ + : 'r0' \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_dword_classic__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint32_t __result; \ + __asm__ \ + ( \ + 'lpm' '\n\t' \ + 'mov %A0, r0' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'lpm' '\n\t' \ + 'mov %B0, r0' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'lpm' '\n\t' \ + 'mov %C0, r0' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'lpm' '\n\t' \ + 'mov %D0, r0' '\n\t' \ + : '=r' (__result), '=z' (__addr16) \ + : '1' (__addr16) \ + : 'r0' \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_dword_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint32_t __result; \ + __asm__ \ + ( \ + 'lpm %A0, Z+' '\n\t' \ + 'lpm %B0, Z+' '\n\t' \ + 'lpm %C0, Z+' '\n\t' \ + 'lpm %D0, Z' '\n\t' \ + : '=r' (__result), '=z' (__addr16) \ + : '1' (__addr16) \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint8_t __result; \ + __asm__ \ + ( \ + 'lpm %0, Z' '\n\t' \ + : '=r' (__result) \ + : 'z' (__addr16) \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_float_classic__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + float __result; \ + __asm__ \ + ( \ + 'lpm' '\n\t' \ + 'mov %A0, r0' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'lpm' '\n\t' \ + 'mov %B0, r0' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'lpm' '\n\t' \ + 'mov %C0, r0' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'lpm' '\n\t' \ + 'mov %D0, r0' '\n\t' \ + : '=r' (__result), '=z' (__addr16) \ + : '1' (__addr16) \ + : 'r0' \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_float_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + float __result; \ + __asm__ \ + ( \ + 'lpm %A0, Z+' '\n\t' \ + 'lpm %B0, Z+' '\n\t' \ + 'lpm %C0, Z+' '\n\t' \ + 'lpm %D0, Z' '\n\t' \ + : '=r' (__result), '=z' (__addr16) \ + : '1' (__addr16) \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_word_classic__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + 'lpm' '\n\t' \ + 'mov %A0, r0' '\n\t' \ + 'adiw r30, 1' '\n\t' \ + 'lpm' '\n\t' \ + 'mov %B0, r0' '\n\t' \ + : '=r' (__result), '=z' (__addr16) \ + : '1' (__addr16) \ + : 'r0' \ + ); \ + __result; \ +})) +.fi +.SS "#define __LPM_word_enhanced__(addr)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint16_t __result; \ + __asm__ \ + ( \ + 'lpm %A0, Z+' '\n\t' \ + 'lpm %B0, Z' '\n\t' \ + : '=r' (__result), '=z' (__addr16) \ + : '1' (__addr16) \ + ); \ + __result; \ +})) +.fi +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/porting.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/porting.3 new file mode 100644 index 0000000..c9206df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/porting.3 @@ -0,0 +1,222 @@ +.TH "porting" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +porting \- Porting From IAR to AVR GCC +.SH "Introduction" +.PP +C language was designed to be a portable language. There two main types of porting activities: porting an application to a different platform (OS and/or processor), and porting to a different compiler. Porting to a different compiler can be exacerbated when the application is an embedded system. For example, the C language Standard, strangely, does not specify a standard for declaring and defining Interrupt Service Routines (ISRs). Different compilers have different ways of defining registers, some of which use non-standard language constructs. +.PP +This chapter describes some methods and pointers on porting an AVR application built with the IAR compiler to the GNU toolchain (AVR GCC). Note that this may not be an exhaustive list. +.SH "Registers" +.PP +IO header files contain identifiers for all the register names and bit names for a particular processor. IAR has individual header files for each processor and they must be included when registers are being used in the code. For example: +.PP +.PP +.nf + #include +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +IAR does not always use the same register names or bit names that are used in the AVR datasheet. +.RE +.PP +AVR GCC also has individual IO header files for each processor. However, the actual processor type is specified as a command line flag to the compiler. (Using the \fC-mmcu=\fIprocessor\fP\fP flag.) This is usually done in the Makefile. This allows you to specify only a single header file for any processor type: +.PP +.PP +.nf + #include +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +The forward slash in the <\fBavr/io.h\fP> file name that is used to separate subdirectories can be used on Windows distributions of the toolchain and is the recommended method of including this file. +.RE +.PP +The compiler knows the processor type and through the single header file above, it can pull in and include the correct individual IO header file. This has the advantage that you only have to specify one generic header file, and you can easily port your application to another processor type without having to change every file to include the new IO header file. +.PP +The AVR toolchain tries to adhere to the exact names of the registers and names of the bits found in the AVR datasheet. There may be some descrepencies between the register names found in the IAR IO header files and the AVR GCC IO header files. +.SH "Interrupt Service Routines (ISRs)" +.PP +As mentioned above, the C language Standard, strangely, does not specify a standard way of declaring and defining an ISR. Hence, every compiler seems to have their own special way of doing so. +.PP +IAR declares an ISR like so: +.PP +.PP +.nf +#pragma vector=TIMER0_OVF_vect +__interrupt void MotorPWMBottom() +{ + // code +} +.fi +.PP +.PP +In AVR GCC, you declare an ISR like so: +.PP +.nf +ISR(PCINT1_vect) +{ + //code +} + +.fi +.PP +.PP +AVR GCC uses the \fCISR\fP macro to define an ISR. This macro requries the header file: +.PP +.PP +.nf +#include +.fi +.PP +.PP +The names of the various interrupt vectors are found in the individual processor IO header files that you must include with \fC<\fBavr/io.h\fP>\fP. +.PP +\fBNote:\fP +.RS 4 +The names of the interrupt vectors in AVR GCC has been changed to match the names of the vectors in IAR. This significantly helps in porting applications from IAR to AVR GCC. +.RE +.PP +.SH "Intrinsic Routines" +.PP +IAR has a number of intrinsic routine such as +.PP +\fC__enable_interrupts()\fP \fC__disable_interrupts()\fP \fC__watchdog_reset()\fP +.PP +These intrinsic functions compile to specific AVR opcodes (SEI, CLI, WDR). +.PP +There are equivalent macros that are used in AVR GCC, however they are not located in a single include file. +.PP +AVR GCC has \fC\fBsei()\fP\fP for \fC__enable_interrupts()\fP, and \fC\fBcli()\fP\fP for \fC__disable_interrupts()\fP. Both of these macros are located in \fC\fP. +.PP +AVR GCC has the macro \fC\fBwdt_reset()\fP\fP in place of \fC__watchdog_reset()\fP. However, there is a whole Watchdog Timer API available in AVR GCC that can be found in \fC<\fBavr/wdt.h\fP>\fP. +.SH "Flash Variables" +.PP +The C language was not designed for Harvard architecture processors with separate memory spaces. This means that there are various non-standard ways to define a variable whose data resides in the Program Memory (Flash). +.PP +IAR uses a non-standard keyword to declare a variable in Program Memory: +.PP +.PP +.nf + __flash int mydata[] = .... +.fi +.PP +.PP +AVR GCC uses Variable Attributes to achieve the same effect: +.PP +.PP +.nf + int mydata[] __attribute__((progmem)) +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +See the GCC User Manual for more information about Variable Attributes. +.RE +.PP +avr-libc provides a convenience macro for the Variable Attribute: +.PP +.PP +.nf +#include +. +. +. +int mydata[] PROGMEM = .... +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +The PROGMEM macro expands to the Variable Attribute of \fCprogmem\fP. This macro requires that you include \fC<\fBavr/pgmspace.h\fP>\fP. This is the canonical method for defining a variable in Program Space. +.RE +.PP +To read back flash data, use the \fCpgm_read_*\fP() macros defined in \fC<\fBavr/pgmspace.h\fP>\fP. All Program Memory handling macros are defined there. +.PP +There is also a way to create a method to define variables in Program Memory that is common between the two compilers (IAR and AVR GCC). Create a header file that has these definitions: +.PP +.PP +.nf +#if defined(__ICCAVR__) // IAR C Compiler +#define FLASH_DECLARE(x) __flash x +#endif +#if defined(__GNUC__) // GNU Compiler +#define FLASH_DECLARE(x) x __attribute__((__progmem__)) +#endif +.fi +.PP +.PP +This code snippet checks for the IAR compiler or for the GCC compiler and defines a macro \fCFLASH_DECLARE(x)\fP that will declare a variable in Program Memory using the appropriate method based on the compiler that is being used. Then you would used it like so: +.PP +.PP +.nf + FLASH_DECLARE(int mydata[] = ...); +.fi +.PP +.SH "Non-Returning main()" +.PP +To declare main() to be a non-returning function in IAR, it is done like this: +.PP +.nf +__C_task void main(void) +{ + // code +} + +.fi +.PP +.PP +To do the equivalent in AVR GCC, do this: +.PP +.PP +.nf +void main(void) __attribute__((noreturn)); + +void main(void) +{ + //... +} +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +See the GCC User Manual for more information on Function Attributes. +.RE +.PP +In AVR GCC, a prototype for main() is required so you can declare the function attribute to specify that the main() function is of type 'noreturn'. Then, define main() as normal. Note that the return type for main() is now \fCvoid\fP. +.SH "Locking Registers" +.PP +The IAR compiler allows a user to lock general registers from r15 and down by using compiler options and this keyword syntax: +.PP +.PP +.nf +__regvar __no_init volatile unsigned int filteredTimeSinceCommutation @14; +.fi +.PP +.PP +This line locks r14 for use only when explicitly referenced in your code thorugh the var name 'filteredTimeSinceCommutation'. This means that the compiler cannot dispose of it at its own will. +.PP +To do this in AVR GCC, do this: +.PP +.PP +.nf +register unsigned char counter asm('r3'); +.fi +.PP +.PP +Typically, it should be possible to use r2 through r15 that way. +.PP +\fBNote:\fP +.RS 4 +Do not reserve r0 or r1 as these are used internally by the compiler for a temporary register and for a zero value. +.PP +Locking registers is not recommended in AVR GCC as it removes this register from the control of the compiler, which may make code generation worse. Use at your own risk. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pow.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pow.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/pow.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/power.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/power.h.3 new file mode 100644 index 0000000..3dc0699 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/power.h.3 @@ -0,0 +1,56 @@ +.TH "power.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +power.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_AVR_POWER_H_\fP 1" +.br +.ti -1c +.RI "#define \fBclock_prescale_set\fP(x)" +.br +.ti -1c +.RI "#define \fBclock_prescale_get\fP() (clock_div_t)(CLKPR & (\fBuint8_t\fP)((1<:" to "Changes in avr-libc-:". +.IP "3." 4 +Set the branch-point tag (setting and accordingly): +.br + 'cvs tag avr-libc-_-branchpoint' +.IP "4." 4 +Create the branch: +.br + 'cvs tag -b avr-libc-_-branch' +.IP "5." 4 +Update the package version in configure.ac and commit configure.ac to cvs HEAD: +.br + Change minor number to next odd value. +.IP "6." 4 +Update the NEWS file and commit to cvs HEAD: +.br + Add "Changes since avr-libc-:" +.IP "7." 4 +Check out a new tree for the branch: +.br + 'cvs co -r avr-libc-_-branch' +.IP "8." 4 +Update the package version in configure.ac and commit configure.ac to cvs branch: +.br + Change the patch number to 90 to denote that this now a branch leading up to a release. Be sure to leave the part of the version. +.IP "9." 4 +Bring the build system up to date by running bootstrap and configure. +.IP "10." 4 +Perform a 'make distcheck' and make sure it succeeds. This will create the snapshot source tarball. This should be considered the first release candidate. +.IP "11." 4 +Upload the snapshot tarball to savannah. +.IP "12." 4 +Announce the branch and the branch tag to the avr-libc-dev list so other developers can checkout the branch. +.PP +.PP +\fBNote:\fP +.RS 4 +CVS tags do not allow the use of periods ('.'). +.RE +.PP +.SS "Making a release" +A stable release will only be done on a branch, not from the cvs HEAD. +.PP +The following steps should be taken when making a release: +.PP +.IP "1." 4 +Make sure the source tree you are working from is on the correct branch: +.br + 'cvs update -r avr-libc-_-branch' +.IP "2." 4 +Update the package version in configure.ac and commit it to cvs. +.IP "3." 4 +Update the gnu tool chain version requirements in the README and commit to cvs. +.IP "4." 4 +Update the ChangeLog file to note the release and commit to cvs on the branch: +.br + Add "Released avr-libc-." +.IP "5." 4 +Update the NEWS file with pending release number and commit to cvs: +.br + Change "Changes since avr-libc-:" to "Changes in avr-libc-:". +.IP "6." 4 +Bring the build system up to date by running bootstrap and configure. +.IP "7." 4 +Perform a 'make distcheck' and make sure it succeeds. This will create the source tarball. +.IP "8." 4 +Tag the release: +.br + 'cvs tag avr-libc-__-release' +.IP "9." 4 +Upload the tarball to savannah. +.IP "10." 4 +Update the NEWS file, and commit to cvs: +.br + Add "Changes since avr-libc-__:" +.IP "11." 4 +Generate the latest documentation and upload to savannah. +.IP "12." 4 +Announce the release. +.PP +.PP +The following hypothetical diagram should help clarify version and branch relationships. +.PP +Release treeRelease tree diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/rem.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/rem.3 new file mode 100644 index 0000000..e29b9e7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/rem.3 @@ -0,0 +1 @@ +.so man3/div_t.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/reti.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/reti.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/reti.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/round.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/round.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/round.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sbi.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sbi.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sbi.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/scanf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/scanf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/scanf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/scanf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/scanf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/scanf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sei.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sei.3 new file mode 100644 index 0000000..b7789d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sei.3 @@ -0,0 +1 @@ +.so man3/avr_interrupts.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setbaud.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setbaud.h.3 new file mode 100644 index 0000000..cce17c9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setbaud.h.3 @@ -0,0 +1,33 @@ +.TH "setbaud.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +setbaud.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBAUD_TOL\fP 2" +.br +.ti -1c +.RI "#define \fBUBRR_VALUE\fP" +.br +.ti -1c +.RI "#define \fBUBRRL_VALUE\fP" +.br +.ti -1c +.RI "#define \fBUBRRH_VALUE\fP" +.br +.ti -1c +.RI "#define \fBUSE_2X\fP 0" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setjmp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setjmp.3 new file mode 100644 index 0000000..23804be --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setjmp.3 @@ -0,0 +1,119 @@ +.TH ": Non-local goto" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Non-local goto \- +.SH "Detailed Description" +.PP +While the C language has the dreaded \fCgoto\fP statement, it can only be used to jump to a label in the same (local) function. In order to jump directly to another (non-local) function, the C library provides the \fBsetjmp()\fP and \fBlongjmp()\fP functions. \fBsetjmp()\fP and \fBlongjmp()\fP are useful for dealing with errors and interrupts encountered in a low-level subroutine of a program. +.PP +\fBNote:\fP +.RS 4 +\fBsetjmp()\fP and \fBlongjmp()\fP make programs hard to understand and maintain. If possible, an alternative should be used. +.PP +\fBlongjmp()\fP can destroy changes made to global register variables (see \fBHow to permanently bind a variable to a register?\fP). +.RE +.PP +For a very detailed discussion of \fBsetjmp()\fP/longjmp(), see Chapter 7 of \fIAdvanced Programming in the UNIX Environment\fP, by W. Richard Stevens. +.PP +Example: +.PP +.PP +.nf + #include + + jmp_buf env; + + int main (void) + { + if (setjmp (env)) + { + ... handle error ... + } + + while (1) + { + ... main processing loop which calls foo() some where ... + } + } + + ... + + void foo (void) + { + ... blah, blah, blah ... + + if (err) + { + longjmp (env, 1); + } + } +.fi +.PP + +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "int \fBsetjmp\fP (jmp_buf __jmpb)" +.br +.ti -1c +.RI "void \fBlongjmp\fP (jmp_buf __jmpb, int __ret) __ATTR_NORETURN__" +.br +.in -1c +.SH "Function Documentation" +.PP +.SS "void longjmp (jmp_buf __jmpb, int __ret)" +.PP +Non-local jump to a saved stack context. +.PP +.PP +.nf + #include +.fi +.PP +.PP +\fBlongjmp()\fP restores the environment saved by the last call of \fBsetjmp()\fP with the corresponding \fI__jmpb\fP argument. After \fBlongjmp()\fP is completed, program execution continues as if the corresponding call of \fBsetjmp()\fP had just returned the value \fI__ret\fP. +.PP +\fBNote:\fP +.RS 4 +\fBlongjmp()\fP cannot cause 0 to be returned. If \fBlongjmp()\fP is invoked with a second argument of 0, 1 will be returned instead. +.RE +.PP +\fBParameters:\fP +.RS 4 +\fI__jmpb\fP Information saved by a previous call to \fBsetjmp()\fP. +.br +\fI__ret\fP Value to return to the caller of \fBsetjmp()\fP. +.RE +.PP +\fBReturns:\fP +.RS 4 +This function never returns. +.RE +.PP + +.SS "int setjmp (jmp_buf __jmpb)" +.PP +Save stack context for non-local goto. +.PP +.PP +.nf + #include +.fi +.PP +.PP +\fBsetjmp()\fP saves the stack context/environment in \fI__jmpb\fP for later use by \fBlongjmp()\fP. The stack context will be invalidated if the function which called \fBsetjmp()\fP returns. +.PP +\fBParameters:\fP +.RS 4 +\fI__jmpb\fP Variable of type \fCjmp_buf\fP which holds the stack information such that the environment can be restored. +.RE +.PP +\fBReturns:\fP +.RS 4 +\fBsetjmp()\fP returns 0 if returning directly, and non-zero when returning from \fBlongjmp()\fP using the saved context. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setjmp.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setjmp.h.3 new file mode 100644 index 0000000..15e4af8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/setjmp.h.3 @@ -0,0 +1,34 @@ +.TH "setjmp.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +setjmp.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB__SETJMP_H_\fP 1" +.br +.ti -1c +.RI "#define \fB__ATTR_NORETURN__\fP __attribute__((__noreturn__))" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int \fBsetjmp\fP (jmp_buf __jmpb)" +.br +.ti -1c +.RI "void \fBlongjmp\fP (jmp_buf __jmpb, int __ret) __ATTR_NORETURN__" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/signbit.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/signbit.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/signbit.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sin.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sin.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sin.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sinh.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sinh.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sinh.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep.h.3 new file mode 100644 index 0000000..78f28e2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep.h.3 @@ -0,0 +1,43 @@ +.TH "sleep.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +sleep.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_AVR_SLEEP_H_\fP 1" +.br +.ti -1c +.RI "#define \fB_SLEEP_CONTROL_REG\fP MCUCR" +.br +.ti -1c +.RI "#define \fB_SLEEP_ENABLE_MASK\fP _BV(SE)" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBsleep_enable\fP (void)" +.br +.ti -1c +.RI "void \fBsleep_disable\fP (void)" +.br +.ti -1c +.RI "void \fBsleep_cpu\fP (void)" +.br +.ti -1c +.RI "void \fBsleep_mode\fP (void)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_cpu.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_cpu.3 new file mode 100644 index 0000000..767d26c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_cpu.3 @@ -0,0 +1 @@ +.so man3/avr_sleep.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_disable.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_disable.3 new file mode 100644 index 0000000..767d26c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_disable.3 @@ -0,0 +1 @@ +.so man3/avr_sleep.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_enable.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_enable.3 new file mode 100644 index 0000000..767d26c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_enable.3 @@ -0,0 +1 @@ +.so man3/avr_sleep.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_mode.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_mode.3 new file mode 100644 index 0000000..482bcf7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sleep_mode.3 @@ -0,0 +1 @@ +.so man3/sleep.h.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/snprintf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/snprintf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/snprintf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/snprintf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/snprintf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/snprintf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sprintf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sprintf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sprintf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sprintf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sprintf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sprintf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sqrt.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sqrt.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sqrt.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/square.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/square.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/square.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/srand.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/srand.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/srand.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/srandom.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/srandom.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/srandom.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sscanf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sscanf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sscanf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sscanf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sscanf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/sscanf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stderr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stderr.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stderr.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdin.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdin.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdin.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdint.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdint.h.3 new file mode 100644 index 0000000..fa7dac7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdint.h.3 @@ -0,0 +1,394 @@ +.TH "stdint.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +stdint.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB__USING_MINT8\fP 0" +.br +.ti -1c +.RI "#define \fB__CONCATenate\fP(left, right) left ## right" +.br +.ti -1c +.RI "#define \fB__CONCAT\fP(left, right) __CONCATenate(left, right)" +.br +.in -1c +.PP +.RI "\fBLimits of specified-width integer types\fP" +.br +C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <\fBstdint.h\fP> is included +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBINT8_MAX\fP 0x7f" +.br +.ti -1c +.RI "#define \fBINT8_MIN\fP (-INT8_MAX - 1)" +.br +.ti -1c +.RI "#define \fBUINT8_MAX\fP (__CONCAT(INT8_MAX, U) * 2U + 1U)" +.br +.ti -1c +.RI "#define \fBINT16_MAX\fP 0x7fff" +.br +.ti -1c +.RI "#define \fBINT16_MIN\fP (-INT16_MAX - 1)" +.br +.ti -1c +.RI "#define \fBUINT16_MAX\fP (__CONCAT(INT16_MAX, U) * 2U + 1U)" +.br +.ti -1c +.RI "#define \fBINT32_MAX\fP 0x7fffffffL" +.br +.ti -1c +.RI "#define \fBINT32_MIN\fP (-INT32_MAX - 1L)" +.br +.ti -1c +.RI "#define \fBUINT32_MAX\fP (__CONCAT(INT32_MAX, U) * 2UL + 1UL)" +.br +.ti -1c +.RI "#define \fBINT64_MAX\fP 0x7fffffffffffffffLL" +.br +.ti -1c +.RI "#define \fBINT64_MIN\fP (-INT64_MAX - 1LL)" +.br +.ti -1c +.RI "#define \fBUINT64_MAX\fP (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL)" +.br +.in -1c +.in -1c +.PP +.RI "\fBLimits of minimum-width integer types\fP" +.br + +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBINT_LEAST8_MAX\fP INT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST8_MIN\fP INT8_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST8_MAX\fP UINT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST16_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST16_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST16_MAX\fP UINT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST32_MAX\fP INT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST32_MIN\fP INT32_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST32_MAX\fP UINT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST64_MAX\fP INT64_MAX" +.br +.ti -1c +.RI "#define \fBINT_LEAST64_MIN\fP INT64_MIN" +.br +.ti -1c +.RI "#define \fBUINT_LEAST64_MAX\fP UINT64_MAX" +.br +.in -1c +.in -1c +.PP +.RI "\fBLimits of fastest minimum-width integer types\fP" +.br + +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBINT_FAST8_MAX\fP INT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST8_MIN\fP INT8_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST8_MAX\fP UINT8_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST16_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST16_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST16_MAX\fP UINT16_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST32_MAX\fP INT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST32_MIN\fP INT32_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST32_MAX\fP UINT32_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST64_MAX\fP INT64_MAX" +.br +.ti -1c +.RI "#define \fBINT_FAST64_MIN\fP INT64_MIN" +.br +.ti -1c +.RI "#define \fBUINT_FAST64_MAX\fP UINT64_MAX" +.br +.in -1c +.in -1c +.PP +.RI "\fBLimits of integer types capable of holding object pointers\fP" +.br + +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBINTPTR_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBINTPTR_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBUINTPTR_MAX\fP UINT16_MAX" +.br +.in -1c +.in -1c +.PP +.RI "\fBLimits of greatest-width integer types\fP" +.br + +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBINTMAX_MAX\fP INT64_MAX" +.br +.ti -1c +.RI "#define \fBINTMAX_MIN\fP INT64_MIN" +.br +.ti -1c +.RI "#define \fBUINTMAX_MAX\fP UINT64_MAX" +.br +.in -1c +.in -1c +.PP +.RI "\fBLimits of other integer types\fP" +.br +C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <\fBstdint.h\fP> is included +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBPTRDIFF_MAX\fP INT16_MAX" +.br +.ti -1c +.RI "#define \fBPTRDIFF_MIN\fP INT16_MIN" +.br +.ti -1c +.RI "#define \fBSIG_ATOMIC_MAX\fP INT8_MAX" +.br +.ti -1c +.RI "#define \fBSIG_ATOMIC_MIN\fP INT8_MIN" +.br +.ti -1c +.RI "#define \fBSIZE_MAX\fP (__CONCAT(INT16_MAX, U))" +.br +.in -1c +.in -1c +.PP +.RI "\fBMacros for integer constants\fP" +.br +C++ implementations should define these macros only when __STDC_CONSTANT_MACROS is defined before <\fBstdint.h\fP> is included. +.PP +These definitions are valid for integer constants without suffix and for macros defined as integer constant without suffix +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBINT8_C\fP(value) ((\fBint8_t\fP) value)" +.br +.ti -1c +.RI "#define \fBUINT8_C\fP(value) ((\fBuint8_t\fP) __CONCAT(value, U))" +.br +.ti -1c +.RI "#define \fBINT16_C\fP(value) value" +.br +.ti -1c +.RI "#define \fBUINT16_C\fP(value) __CONCAT(value, U)" +.br +.ti -1c +.RI "#define \fBINT32_C\fP(value) __CONCAT(value, L)" +.br +.ti -1c +.RI "#define \fBUINT32_C\fP(value) __CONCAT(value, UL)" +.br +.ti -1c +.RI "#define \fBINT64_C\fP(value) __CONCAT(value, LL)" +.br +.ti -1c +.RI "#define \fBUINT64_C\fP(value) __CONCAT(value, ULL)" +.br +.ti -1c +.RI "#define \fBINTMAX_C\fP(value) __CONCAT(value, LL)" +.br +.ti -1c +.RI "#define \fBUINTMAX_C\fP(value) __CONCAT(value, ULL)" +.br +.in -1c +.in -1c +.SS "Typedefs" + +.PP +.RI "\fBExact-width integer types\fP" +.br +Integer types having exactly the specified width +.PP +.in +1c +.in +1c +.ti -1c +.RI "typedef signed char \fBint8_t\fP" +.br +.ti -1c +.RI "typedef unsigned char \fBuint8_t\fP" +.br +.ti -1c +.RI "typedef signed int \fBint16_t\fP" +.br +.ti -1c +.RI "typedef unsigned int \fBuint16_t\fP" +.br +.ti -1c +.RI "typedef signed long int \fBint32_t\fP" +.br +.ti -1c +.RI "typedef unsigned long int \fBuint32_t\fP" +.br +.ti -1c +.RI "typedef signed long long int \fBint64_t\fP" +.br +.ti -1c +.RI "typedef unsigned long long int \fBuint64_t\fP" +.br +.in -1c +.in -1c +.PP +.RI "\fBInteger types capable of holding object pointers\fP" +.br +These allow you to declare variables of the same size as a pointer. +.PP +.in +1c +.in +1c +.ti -1c +.RI "typedef \fBint16_t\fP \fBintptr_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP \fBuintptr_t\fP" +.br +.in -1c +.in -1c +.PP +.RI "\fBMinimum-width integer types\fP" +.br +Integer types having at least the specified width +.PP +.in +1c +.in +1c +.ti -1c +.RI "typedef \fBint8_t\fP \fBint_least8_t\fP" +.br +.ti -1c +.RI "typedef \fBuint8_t\fP \fBuint_least8_t\fP" +.br +.ti -1c +.RI "typedef \fBint16_t\fP \fBint_least16_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP \fBuint_least16_t\fP" +.br +.ti -1c +.RI "typedef \fBint32_t\fP \fBint_least32_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP \fBuint_least32_t\fP" +.br +.ti -1c +.RI "typedef \fBint64_t\fP \fBint_least64_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP \fBuint_least64_t\fP" +.br +.in -1c +.in -1c +.PP +.RI "\fBFastest minimum-width integer types\fP" +.br +Integer types being usually fastest having at least the specified width +.PP +.in +1c +.in +1c +.ti -1c +.RI "typedef \fBint8_t\fP \fBint_fast8_t\fP" +.br +.ti -1c +.RI "typedef \fBuint8_t\fP \fBuint_fast8_t\fP" +.br +.ti -1c +.RI "typedef \fBint16_t\fP \fBint_fast16_t\fP" +.br +.ti -1c +.RI "typedef \fBuint16_t\fP \fBuint_fast16_t\fP" +.br +.ti -1c +.RI "typedef \fBint32_t\fP \fBint_fast32_t\fP" +.br +.ti -1c +.RI "typedef \fBuint32_t\fP \fBuint_fast32_t\fP" +.br +.ti -1c +.RI "typedef \fBint64_t\fP \fBint_fast64_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP \fBuint_fast64_t\fP" +.br +.in -1c +.in -1c +.PP +.RI "\fBGreatest-width integer types\fP" +.br +Types designating integer data capable of representing any value of any integer type in the corresponding signed or unsigned category +.PP +.in +1c +.in +1c +.ti -1c +.RI "typedef \fBint64_t\fP \fBintmax_t\fP" +.br +.ti -1c +.RI "typedef \fBuint64_t\fP \fBuintmax_t\fP" +.br +.in -1c +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdio.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdio.h.3 new file mode 100644 index 0000000..7b1fa91 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdio.h.3 @@ -0,0 +1,217 @@ +.TH "stdio.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +stdio.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_STDIO_H_\fP 1" +.br +.ti -1c +.RI "#define \fB__need_NULL\fP" +.br +.ti -1c +.RI "#define \fB__need_size_t\fP" +.br +.ti -1c +.RI "#define \fBFILE\fP struct __file" +.br +.ti -1c +.RI "#define \fBstdin\fP (__iob[0])" +.br +.ti -1c +.RI "#define \fBstdout\fP (__iob[1])" +.br +.ti -1c +.RI "#define \fBstderr\fP (__iob[2])" +.br +.ti -1c +.RI "#define \fBEOF\fP (-1)" +.br +.ti -1c +.RI "#define \fBfdev_set_udata\fP(stream, u) do { (stream)->udata = u; } while(0)" +.br +.ti -1c +.RI "#define \fBfdev_get_udata\fP(stream) ((stream)->udata)" +.br +.ti -1c +.RI "#define \fBfdev_setup_stream\fP(stream, put, get, rwflag)" +.br +.ti -1c +.RI "#define \fB_FDEV_SETUP_READ\fP __SRD" +.br +.ti -1c +.RI "#define \fB_FDEV_SETUP_WRITE\fP __SWR" +.br +.ti -1c +.RI "#define \fB_FDEV_SETUP_RW\fP (__SRD|__SWR)" +.br +.ti -1c +.RI "#define \fB_FDEV_ERR\fP (-1)" +.br +.ti -1c +.RI "#define \fB_FDEV_EOF\fP (-2)" +.br +.ti -1c +.RI "#define \fBFDEV_SETUP_STREAM\fP(put, get, rwflag)" +.br +.ti -1c +.RI "#define \fBfdev_close\fP()" +.br +.ti -1c +.RI "#define \fBputc\fP(__c, __stream) fputc(__c, __stream)" +.br +.ti -1c +.RI "#define \fBputchar\fP(__c) fputc(__c, stdout)" +.br +.ti -1c +.RI "#define \fBgetc\fP(__stream) fgetc(__stream)" +.br +.ti -1c +.RI "#define \fBgetchar\fP() fgetc(stdin)" +.br +.ti -1c +.RI "#define \fBSEEK_SET\fP 0" +.br +.ti -1c +.RI "#define \fBSEEK_CUR\fP 1" +.br +.ti -1c +.RI "#define \fBSEEK_END\fP 2" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int \fBfclose\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBvfprintf\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBvfprintf_P\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBfputc\fP (int __c, FILE *__stream)" +.br +.ti -1c +.RI "int \fBprintf\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBprintf_P\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBvprintf\fP (const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBsprintf\fP (char *__s, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsprintf_P\fP (char *__s, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsnprintf\fP (char *__s, size_t __n, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsnprintf_P\fP (char *__s, size_t __n, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBvsprintf\fP (char *__s, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBvsprintf_P\fP (char *__s, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBvsnprintf\fP (char *__s, size_t __n, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBvsnprintf_P\fP (char *__s, size_t __n, const char *__fmt, va_list ap)" +.br +.ti -1c +.RI "int \fBfprintf\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfprintf_P\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfputs\fP (const char *__str, FILE *__stream)" +.br +.ti -1c +.RI "int \fBfputs_P\fP (const char *__str, FILE *__stream)" +.br +.ti -1c +.RI "int \fBputs\fP (const char *__str)" +.br +.ti -1c +.RI "int \fBputs_P\fP (const char *__str)" +.br +.ti -1c +.RI "size_t \fBfwrite\fP (const void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)" +.br +.ti -1c +.RI "int \fBfgetc\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBungetc\fP (int __c, FILE *__stream)" +.br +.ti -1c +.RI "char * \fBfgets\fP (char *__str, int __size, FILE *__stream)" +.br +.ti -1c +.RI "char * \fBgets\fP (char *__str)" +.br +.ti -1c +.RI "size_t \fBfread\fP (void *__ptr, size_t __size, size_t __nmemb, FILE *__stream)" +.br +.ti -1c +.RI "void \fBclearerr\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBfeof\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBferror\fP (FILE *__stream)" +.br +.ti -1c +.RI "int \fBvfscanf\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBvfscanf_P\fP (FILE *__stream, const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBfscanf\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfscanf_P\fP (FILE *__stream, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBscanf\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBscanf_P\fP (const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBvscanf\fP (const char *__fmt, va_list __ap)" +.br +.ti -1c +.RI "int \fBsscanf\fP (const char *__buf, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBsscanf_P\fP (const char *__buf, const char *__fmt,...)" +.br +.ti -1c +.RI "int \fBfflush\fP (FILE *stream)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdiodemo.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdiodemo.3 new file mode 100644 index 0000000..cfb8e37 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdiodemo.3 @@ -0,0 +1,159 @@ +.TH "Using the standard IO facilities" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Using the standard IO facilities \- This project illustrates how to use the standard IO facilities (stdio) provided by this library. It assumes a basic knowledge of how the stdio subsystem is used in standard C applications, and concentrates on the differences in this library's implementation that mainly result from the differences of the microcontroller environment, compared to a hosted environment of a standard computer. +.PP +This demo is meant to supplement the \fBdocumentation\fP, not to replace it. +.SH "Hardware setup" +.PP +The demo is set up in a way so it can be run on the ATmega16 that ships with the STK500 development kit. The UART port needs to be connected to the RS-232 'spare' port by a jumper cable that connects PD0 to RxD and PD1 to TxD. The RS-232 channel is set up as standard input (\fCstdin\fP) and standard output (\fCstdout\fP), respectively. +.PP +In order to have a different device available for a standard error channel (\fCstderr\fP), an industry-standard LCD display with an HD44780-compatible LCD controller has been chosen. This display needs to be connected to port A of the STK500 in the following way: +.PP +\fBPort\fP\fBHeader\fP\fBFunction\fP A0 1 LCD D4 A1 2 LCD D5 A2 3 LCD D6 A3 4 LCD D7 A4 5 LCD R/~W A5 6 LCD E A6 7 LCD RS A7 8 unused GND9 GND VCC10Vcc +.PP +Wiring of the STK500Wiring of the STK500 +.PP +The LCD controller is used in 4-bit mode, including polling the 'busy' flag so the R/~W line from the LCD controller needs to be connected. Note that the LCD controller has yet another supply pin that is used to adjust the LCD's contrast (V5). Typically, that pin connects to a potentiometer between Vcc and GND. Often, it might work to just connect that pin to GND, while leaving it unconnected usually yields an unreadable display. +.PP +Port A has been chosen as 7 pins on a single port are needed to connect the LCD, yet all other ports are already partially in use: port B has the pins for in-system programming (ISP), port C has the ports for JTAG (can be used for debugging), and port D is used for the UART connection. +.SH "Functional overview" +.PP +The project consists of the following files: +.PP +.IP "\(bu" 2 +\fCstdiodemo.c\fP This is the main example file. +.IP "\(bu" 2 +\fCdefines.h\fP Contains some global defines, like the LCD wiring +.IP "\(bu" 2 +\fChd44780.c\fP Implementation of an HD44780 LCD display driver +.IP "\(bu" 2 +\fChd44780.h\fP Interface declarations for the HD44780 driver +.IP "\(bu" 2 +\fClcd.c\fP Implementation of LCD character IO on top of the HD44780 driver +.IP "\(bu" 2 +\fClcd.h\fP Interface declarations for the LCD driver +.IP "\(bu" 2 +\fCuart.c\fP Implementation of a character IO driver for the internal UART +.IP "\(bu" 2 +\fCuart.h\fP Interface declarations for the UART driver +.PP +.SH "A code walkthrough" +.PP +.SS "stdiodemo.c" +As usual, include files go first. While conventionally, system header files (those in angular brackets \fC<\fP ... \fC>\fP) go before application-specific header files (in double quotes), \fCdefines.h\fP comes as the first header file here. The main reason is that this file defines the value of \fCF_CPU\fP which needs to be known before including \fC\fP. +.PP +The function \fCioinit()\fP summarizes all hardware initialization tasks. As this function is declared to be module-internal only (\fCstatic\fP), the compiler will notice its simplicity, and with a reasonable optimization level in effect, it will inline that function. That needs to be kept in mind when debugging, because the inlining might cause the debugger to 'jump around wildly' at a first glance when single-stepping. +.PP +The definitions of \fCuart_str\fP and \fClcd_str\fP set up two stdio streams. The initialization is done using the \fC\fBFDEV_SETUP_STREAM()\fP\fP initializer template macro, so a static object can be constructed that can be used for IO purposes. This initializer macro takes three arguments, two function macros to connect the corresponding output and input functions, respectively, the third one describes the intent of the stream (read, write, or both). Those functions that are not required by the specified intent (like the input function for \fClcd_str\fP which is specified to only perform output operations) can be given as \fCNULL\fP. +.PP +The stream \fCuart_str\fP corresponds to input and output operations performed over the RS-232 connection to a terminal (e.g. from/to a PC running a terminal program), while the \fClcd_str\fP stream provides a method to display character data on the LCD text display. +.PP +The function \fCdelay_1s()\fP suspends program execution for approximately one second. This is done using the \fC\fB_delay_ms()\fP\fP function from \fC<\fButil/delay.h\fP>\fP which in turn needs the \fCF_CPU\fP macro in order to adjust the cycle counts. As the \fC\fB_delay_ms()\fP\fP function has a limited range of allowable argument values (depending on \fCF_CPU\fP), a value of 10 ms has been chosen as the base delay which would be safe for CPU frequencies of up to about 26 MHz. This function is then called 100 times to accomodate for the actual one-second delay. +.PP +In a practical application, long delays like this one were better be handled by a hardware timer, so the main CPU would be free for other tasks while waiting, or could be put on sleep. +.PP +At the beginning of \fCmain()\fP, after initializing the peripheral devices, the default stdio streams \fCstdin\fP, \fCstdout\fP, and \fCstderr\fP are set up by using the existing static \fCFILE\fP stream objects. While this is not mandatory, the availability of \fCstdin\fP and \fCstdout\fP allows to use the shorthand functions (e.g. \fC\fBprintf()\fP\fP instead of \fC\fBfprintf()\fP\fP), and \fCstderr\fP can mnemonically be referred to when sending out diagnostic messages. +.PP +Just for demonstration purposes, \fCstdin\fP and \fCstdout\fP are connected to a stream that will perform UART IO, while \fCstderr\fP is arranged to output its data to the LCD text display. +.PP +Finally, a main loop follows that accepts simple 'commands' entered via the RS-232 connection, and performs a few simple actions based on the commands. +.PP +First, a prompt is sent out using \fC\fBprintf_P()\fP\fP (which takes a \fBprogram space string\fP). The string is read into an internal buffer as one line of input, using \fC\fBfgets()\fP\fP. While it would be also possible to use \fC\fBgets()\fP\fP (which implicitly reads from \fCstdin\fP), \fC\fBgets()\fP\fP has no control that the user's input does not overflow the input buffer provided so it should never be used at all. +.PP +If \fC\fBfgets()\fP\fP fails to read anything, the main loop is left. Of course, normally the main loop of a microcontroller application is supposed to never finish, but again, for demonstrational purposes, this explains the error handling of stdio. \fC\fBfgets()\fP\fP will return NULL in case of an input error or end-of-file condition on input. Both these conditions are in the domain of the function that is used to establish the stream, \fCuart_putchar()\fP in this case. In short, this function returns EOF in case of a serial line 'break' condition (extended start condition) has been recognized on the serial line. Common PC terminal programs allow to assert this condition as some kind of out-of-band signalling on an RS-232 connection. +.PP +When leaving the main loop, a goodbye message is sent to standard error output (i.e. to the LCD), followed by three dots in one-second spacing, followed by a sequence that will clear the LCD. Finally, \fCmain()\fP will be terminated, and the library will add an infinite loop, so only a CPU reset will be able to restart the application. +.PP +There are three 'commands' recognized, each determined by the first letter of the line entered (converted to lower case): +.PP +.IP "\(bu" 2 +The 'q' (quit) command has the same effect of leaving the main loop. +.IP "\(bu" 2 +The 'l' (LCD) command takes its second argument, and sends it to the LCD. +.IP "\(bu" 2 +The 'u' (UART) command takes its second argument, and sends it back to the UART connection. +.PP +.PP +Command recognition is done using \fC\fBsscanf()\fP\fP where the first format in the format string just skips over the command itself (as the assignment suppression modifier \fC*\fP is given). +.SS "defines.h" +This file just contains a few peripheral definitions. +.PP +The \fCF_CPU\fP macro defines the CPU clock frequency, to be used in delay loops, as well as in the UART baud rate calculation. +.PP +The macro \fCUART_BAUD\fP defines the RS-232 baud rate. Depending on the actual CPU frequency, only a limited range of baud rates can be supported. +.PP +The remaining macros customize the IO port and pins used for the HD44780 LCD driver. +.SS "hd44780.h" +This file describes the public interface of the low-level LCD driver that interfaces to the HD44780 LCD controller. Public functions are available to initialize the controller into 4-bit mode, to wait for the controller's busy bit to be clear, and to read or write one byte from or to the controller. +.PP +As there are two different forms of controller IO, one to send a command or receive the controller status (RS signal clear), and one to send or receive data to/from the controller's SRAM (RS asserted), macros are provided that build on the mentioned function primitives. +.PP +Finally, macros are provided for all the controller commands to allow them to be used symbolically. The HD44780 datasheet explains these basic functions of the controller in more detail. +.SS "hd44780.c" +This is the implementation of the low-level HD44780 LCD controller driver. +.PP +On top, a few preprocessor glueing tricks are used to establish symbolic access to the hardware port pins the LCD controller is attached to, based on the application's definitions made in \fBdefines.h\fP. +.PP +The \fChd44780_pulse_e()\fP function asserts a short pulse to the controller's E (enable) pin. Since reading back the data asserted by the LCD controller needs to be performed while E is active, this function reads and returns the input data if the parameter \fCreadback\fP is true. When called with a compile-time constant parameter that is false, the compiler will completely eliminate the unused readback operation, as well as the return value as part of its optimizations. +.PP +As the controller is used in 4-bit interface mode, all byte IO to/from the controller needs to be handled as two nibble IOs. The functions \fChd44780_outnibble()\fP and \fChd44780_innibble()\fP implement this. They do not belong to the public interface, so they are declared static. +.PP +Building upon these, the public functions \fChd44780_outbyte()\fP and \fChd44780_inbyte()\fP transfer one byte to/from the controller. +.PP +The function \fChd44780_wait_ready()\fP waits for the controller to become ready, by continuously polling the controller's status (which is read by performing a byte read with the RS signal cleard), and examining the BUSY flag within the status byte. This function needs to be called before performing any controller IO. +.PP +Finally, \fChd44780_init()\fP initializes the LCD controller into 4-bit mode, based on the initialization sequence mandated by the datasheet. As the BUSY flag cannot be examined yet at this point, this is the only part of this code where timed delays are used. While the controller can perform a power-on reset when certain constraints on the power supply rise time are met, always calling the software initialization routine at startup ensures the controller will be in a known state. This function also puts the interface into 4-bit mode (which would not be done automatically after a power-on reset). +.SS "lcd.h" +This function declares the public interface of the higher-level (character IO) LCD driver. +.SS "lcd.c" +The implementation of the higher-level LCD driver. This driver builds on top of the HD44780 low-level LCD controller driver, and offers a character IO interface suitable for direct use by the standard IO facilities. Where the low-level HD44780 driver deals with setting up controller SRAM addresses, writing data to the controller's SRAM, and controlling display functions like clearing the display, or moving the cursor, this high-level driver allows to just write a character to the LCD, in the assumption this will somehow show up on the display. +.PP +Control characters can be handled at this level, and used to perform specific actions on the LCD. Currently, there is only one control character that is being dealt with: a newline character (\fC\\n\fP) is taken as an indication to clear the display and set the cursor into its initial position upon reception of the next character, so a 'new line' of text can be displayed. Therefore, a received newline character is remembered until more characters have been sent by the application, and will only then cause the display to be cleared before continuing. This provides a convenient abstraction where full lines of text can be sent to the driver, and will remain visible at the LCD until the next line is to be displayed. +.PP +Further control characters could be implemented, e. g. using a set of escape sequences. That way, it would be possible to implement self-scrolling display lines etc. +.PP +The public function \fClcd_init()\fP first calls the initialization entry point of the lower-level HD44780 driver, and then sets up the LCD in a way we'd like to (display cleared, non-blinking cursor enabled, SRAM addresses are increasing so characters will be written left to right). +.PP +The public function \fClcd_putchar()\fP takes arguments that make it suitable for being passed as a \fCput()\fP function pointer to the stdio stream initialization functions and macros (\fC\fBfdevopen()\fP\fP, \fC\fBFDEV_SETUP_STREAM()\fP\fP etc.). Thus, it takes two arguments, the character to display itself, and a reference to the underlying stream object, and it is expected to return 0 upon success. +.PP +This function remembers the last unprocessed newline character seen in the function-local static variable \fCnl_seen\fP. If a newline character is encountered, it will simply set this variable to a true value, and return to the caller. As soon as the first non-newline character is to be displayed with \fCnl_seen\fP still true, the LCD controller is told to clear the display, put the cursor home, and restart at SRAM address 0. All other characters are sent to the display. +.PP +The single static function-internal variable \fCnl_seen\fP works for this purpose. If multiple LCDs should be controlled using the same set of driver functions, that would not work anymore, as a way is needed to distinguish between the various displays. This is where the second parameter can be used, the reference to the stream itself: instead of keeping the state inside a private variable of the function, it can be kept inside a private object that is attached to the stream itself. A reference to that private object can be attached to the stream (e.g. inside the function \fClcd_init()\fP that then also needs to be passed a reference to the stream) using \fC\fBfdev_set_udata()\fP\fP, and can be accessed inside \fClcd_putchar()\fP using \fBfdev_get_udata()\fP. +.SS "uart.h" +Public interface definition for the RS-232 UART driver, much like in \fBlcd.h\fP except there is now also a character input function available. +.PP +As the RS-232 input is line-buffered in this example, the macro \fCRX_BUFSIZE\fP determines the size of that buffer. +.SS "uart.c" +This implements an stdio-compatible RS-232 driver using an AVR's standard UART (or USART in asynchronous operation mode). Both, character output as well as character input operations are implemented. Character output takes care of converting the internal newline \fC\\n\fP into its external representation carriage return/line feed (\fC\\r\\n\fP). +.PP +Character input is organized as a line-buffered operation that allows to minimally edit the current line until it is 'sent' to the application when either a carriage return (\fC\\r\fP) or newline (\fC\\n\fP) character is received from the terminal. The line editing functions implemented are: +.PP +.IP "\(bu" 2 +\fC\\b\fP (back space) or \fC\\177\fP (delete) deletes the previous character +.IP "\(bu" 2 +^u (control-U, ASCII NAK) deletes the entire input buffer +.IP "\(bu" 2 +^w (control-W, ASCII ETB) deletes the previous input word, delimited by white space +.IP "\(bu" 2 +^r (control-R, ASCII DC2) sends a \fC\\r\fP, then reprints the buffer (refresh) +.IP "\(bu" 2 +\fC\\t\fP (tabulator) will be replaced by a single space +.PP +.PP +The function \fCuart_init()\fP takes care of all hardware initialization that is required to put the UART into a mode with 8 data bits, no parity, one stop bit (commonly referred to as 8N1) at the baud rate configured in \fBdefines.h\fP. At low CPU clock frequencies, the \fCU2X\fP bit in the UART is set, reducing the oversampling from 16x to 8x, which allows for a 9600 Bd rate to be achieved with tolerable error using the default 1 MHz RC oscillator. +.PP +The public function \fCuart_putchar()\fP again has suitable arguments for direct use by the stdio stream interface. It performs the \fC\\n\fP into \fC\\r\\n\fP translation by recursively calling itself when it sees a \fC\\n\fP character. Just for demonstration purposes, the \fC\\a\fP (audible bell, ASCII BEL) character is implemented by sending a string to \fCstderr\fP, so it will be displayed on the LCD. +.PP +The public function \fCuart_getchar()\fP implements the line editor. If there are characters available in the line buffer (variable \fCrxp\fP is not \fCNULL\fP), the next character will be returned from the buffer without any UART interaction. +.PP +If there are no characters inside the line buffer, the input loop will be entered. Characters will be read from the UART, and processed accordingly. If the UART signalled a framing error (\fCFE\fP bit set), typically caused by the terminal sending a \fIline break\fP condition (start condition held much longer than one character period), the function will return an end-of-file condition using \fC_FDEV_EOF\fP. If there was a data overrun condition on input (\fCDOR\fP bit set), an error condition will be returned as \fC_FDEV_ERR\fP. +.PP +Line editing characters are handled inside the loop, potentially modifying the buffer status. If characters are attempted to be entered beyond the size of the line buffer, their reception is refused, and a \fC\\a\fP character is sent to the terminal. If a \fC\\r\fP or \fC\\n\fP character is seen, the variable \fCrxp\fP (receive pointer) is set to the beginning of the buffer, the loop is left, and the first character of the buffer will be returned to the application. (If no other characters have been entered, this will just be the newline character, and the buffer is marked as being exhausted immediately again.) +.SH "The source code" +.PP +.PP + +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdlib.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdlib.h.3 new file mode 100644 index 0000000..0715b5b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdlib.h.3 @@ -0,0 +1,180 @@ +.TH "stdlib.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +stdlib.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBdiv_t\fP" +.br +.ti -1c +.RI "struct \fBldiv_t\fP" +.br +.in -1c +.SS "Non-standard (i.e. non-ISO C) functions." + +.in +1c +.ti -1c +.RI "#define \fBRANDOM_MAX\fP 0x7FFFFFFF" +.br +.ti -1c +.RI "char * \fBitoa\fP (int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "char * \fBltoa\fP (long int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "char * \fButoa\fP (unsigned int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "char * \fBultoa\fP (unsigned long int __val, char *__s, int __radix)" +.br +.ti -1c +.RI "long \fBrandom\fP (void)" +.br +.ti -1c +.RI "void \fBsrandom\fP (unsigned long __seed)" +.br +.ti -1c +.RI "long \fBrandom_r\fP (unsigned long *__ctx)" +.br +.in -1c +.SS "Conversion functions for double arguments." +Note that these functions are not located in the default library, \fClibc.a\fP, but in the mathematical library, \fClibm.a\fP. So when linking the application, the \fC-lm\fP option needs to be specified. +.in +1c +.ti -1c +.RI "#define \fBDTOSTR_ALWAYS_SIGN\fP 0x01" +.br +.ti -1c +.RI "#define \fBDTOSTR_PLUS_SIGN\fP 0x02" +.br +.ti -1c +.RI "#define \fBDTOSTR_UPPERCASE\fP 0x04" +.br +.ti -1c +.RI "char * \fBdtostre\fP (double __val, char *__s, unsigned char __prec, unsigned char __flags)" +.br +.ti -1c +.RI "char * \fBdtostrf\fP (double __val, signed char __width, unsigned char __prec, char *__s)" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_STDLIB_H_\fP 1" +.br +.ti -1c +.RI "#define \fB__need_NULL\fP" +.br +.ti -1c +.RI "#define \fB__need_size_t\fP" +.br +.ti -1c +.RI "#define \fB__need_wchar_t\fP" +.br +.ti -1c +.RI "#define \fB__ptr_t\fP void *" +.br +.ti -1c +.RI "#define \fBRAND_MAX\fP 0x7FFF" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef int(* \fB__compar_fn_t\fP )(const void *, const void *)" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBabort\fP (void) __ATTR_NORETURN__" +.br +.ti -1c +.RI "int \fBabs\fP (int __i)" +.br +.ti -1c +.RI "long \fBlabs\fP (long __i)" +.br +.ti -1c +.RI "void * \fBbsearch\fP (const void *__key, const void *__base, size_t __nmemb, size_t __size, int(*__compar)(const void *, const void *))" +.br +.ti -1c +.RI "\fBdiv_t\fP \fBdiv\fP (int __num, int __denom) __asm__('__divmodhi4')" +.br +.ti -1c +.RI "\fBldiv_t\fP \fBldiv\fP (long __num, long __denom) __asm__('__divmodsi4')" +.br +.ti -1c +.RI "void \fBqsort\fP (void *__base, size_t __nmemb, size_t __size, \fB__compar_fn_t\fP __compar)" +.br +.ti -1c +.RI "long \fBstrtol\fP (const char *__nptr, char **__endptr, int __base)" +.br +.ti -1c +.RI "unsigned long \fBstrtoul\fP (const char *__nptr, char **__endptr, int __base)" +.br +.ti -1c +.RI "long \fBatol\fP (const char *__s) __ATTR_PURE__" +.br +.ti -1c +.RI "int \fBatoi\fP (const char *__s) __ATTR_PURE__" +.br +.ti -1c +.RI "void \fBexit\fP (int __status) __ATTR_NORETURN__" +.br +.ti -1c +.RI "void * \fBmalloc\fP (size_t __size) __ATTR_MALLOC__" +.br +.ti -1c +.RI "void \fBfree\fP (void *__ptr)" +.br +.ti -1c +.RI "void * \fBcalloc\fP (size_t __nele, size_t __size) __ATTR_MALLOC__" +.br +.ti -1c +.RI "void * \fBrealloc\fP (void *__ptr, size_t __size) __ATTR_MALLOC__" +.br +.ti -1c +.RI "double \fBstrtod\fP (const char *__nptr, char **__endptr)" +.br +.ti -1c +.RI "double \fBatof\fP (const char *__nptr)" +.br +.ti -1c +.RI "int \fBrand\fP (void)" +.br +.ti -1c +.RI "void \fBsrand\fP (unsigned int __seed)" +.br +.ti -1c +.RI "int \fBrand_r\fP (unsigned long *__ctx)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "size_t \fB__malloc_margin\fP" +.br +.ti -1c +.RI "char * \fB__malloc_heap_start\fP" +.br +.ti -1c +.RI "char * \fB__malloc_heap_end\fP" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdout.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdout.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/stdout.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp.S.3 new file mode 100644 index 0000000..c392785 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp.S.3 @@ -0,0 +1,14 @@ +.TH "strcasecmp.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcasecmp.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp_P.S.3 new file mode 100644 index 0000000..dbe2046 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasecmp_P.S.3 @@ -0,0 +1,14 @@ +.TH "strcasecmp_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcasecmp_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr.S.3 new file mode 100644 index 0000000..0cdc4ad --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr.S.3 @@ -0,0 +1,14 @@ +.TH "strcasestr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcasestr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcasestr_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat.S.3 new file mode 100644 index 0000000..940c33e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat.S.3 @@ -0,0 +1,14 @@ +.TH "strcat.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcat.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat_P.S.3 new file mode 100644 index 0000000..5a588b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcat_P.S.3 @@ -0,0 +1,14 @@ +.TH "strcat_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcat_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr.S.3 new file mode 100644 index 0000000..a59cd68 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr.S.3 @@ -0,0 +1,14 @@ +.TH "strchr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strchr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr_P.S.3 new file mode 100644 index 0000000..fbdd99c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchr_P.S.3 @@ -0,0 +1,14 @@ +.TH "strchr_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strchr_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul.S.3 new file mode 100644 index 0000000..cd7b063 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul.S.3 @@ -0,0 +1,14 @@ +.TH "strchrnul.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strchrnul.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul_P.S.3 new file mode 100644 index 0000000..aa1dc33 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strchrnul_P.S.3 @@ -0,0 +1,14 @@ +.TH "strchrnul_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strchrnul_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp.S.3 new file mode 100644 index 0000000..6039dba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp.S.3 @@ -0,0 +1,14 @@ +.TH "strcmp.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcmp.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp_P.S.3 new file mode 100644 index 0000000..9387d9e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcmp_P.S.3 @@ -0,0 +1,14 @@ +.TH "strcmp_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcmp_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy.S.3 new file mode 100644 index 0000000..c18e369 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy.S.3 @@ -0,0 +1,14 @@ +.TH "strcpy.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcpy.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy_P.S.3 new file mode 100644 index 0000000..b5f8893 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcpy_P.S.3 @@ -0,0 +1,14 @@ +.TH "strcpy_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcpy_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn.S.3 new file mode 100644 index 0000000..8f11ed3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn.S.3 @@ -0,0 +1,14 @@ +.TH "strcspn.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcspn.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn_P.S.3 new file mode 100644 index 0000000..1699041 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strcspn_P.S.3 @@ -0,0 +1,14 @@ +.TH "strcspn_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strcspn_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strdup.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strdup.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strdup.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strdup.c.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strdup.c.3 new file mode 100644 index 0000000..b587a00 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strdup.c.3 @@ -0,0 +1,21 @@ +.TH "strdup.c" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strdup.c \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "char * \fBstrdup\fP (const char *s1)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/string.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/string.h.3 new file mode 100644 index 0000000..9ff3bab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/string.h.3 @@ -0,0 +1,151 @@ +.TH "string.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +string.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_STRING_H_\fP 1" +.br +.ti -1c +.RI "#define \fB__need_NULL\fP" +.br +.ti -1c +.RI "#define \fB__need_size_t\fP" +.br +.ti -1c +.RI "#define \fB__ATTR_PURE__\fP __attribute__((__pure__))" +.br +.ti -1c +.RI "#define \fB_FFS\fP(x)" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int \fBffs\fP (int __val)" +.br +.ti -1c +.RI "int \fBffsl\fP (long __val)" +.br +.ti -1c +.RI "int \fBffsll\fP (long long __val)" +.br +.ti -1c +.RI "void * \fBmemccpy\fP (void *, const void *, int, size_t)" +.br +.ti -1c +.RI "void * \fBmemchr\fP (const void *, int, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "int \fBmemcmp\fP (const void *, const void *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemcpy\fP (void *, const void *, size_t)" +.br +.ti -1c +.RI "void * \fBmemmem\fP (const void *, size_t, const void *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemmove\fP (void *, const void *, size_t)" +.br +.ti -1c +.RI "void * \fBmemrchr\fP (const void *, int, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "void * \fBmemset\fP (void *, int, size_t)" +.br +.ti -1c +.RI "char * \fBstrcat\fP (char *, const char *)" +.br +.ti -1c +.RI "char * \fBstrchr\fP (const char *, int) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrchrnul\fP (const char *, int) __ATTR_PURE__" +.br +.ti -1c +.RI "int \fBstrcmp\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcpy\fP (char *, const char *)" +.br +.ti -1c +.RI "int \fBstrcasecmp\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrcasestr\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "size_t \fBstrcspn\fP (const char *__s, const char *__reject) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrdup\fP (const char *s1)" +.br +.ti -1c +.RI "size_t \fBstrlcat\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlcpy\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "size_t \fBstrlen\fP (const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrlwr\fP (char *)" +.br +.ti -1c +.RI "char * \fBstrncat\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "int \fBstrncmp\fP (const char *, const char *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrncpy\fP (char *, const char *, size_t)" +.br +.ti -1c +.RI "int \fBstrncasecmp\fP (const char *, const char *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "size_t \fBstrnlen\fP (const char *, size_t) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrpbrk\fP (const char *__s, const char *__accept) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrrchr\fP (const char *, int) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrrev\fP (char *)" +.br +.ti -1c +.RI "char * \fBstrsep\fP (char **, const char *)" +.br +.ti -1c +.RI "size_t \fBstrspn\fP (const char *__s, const char *__accept) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrstr\fP (const char *, const char *) __ATTR_PURE__" +.br +.ti -1c +.RI "char * \fBstrtok\fP (char *, const char *)" +.br +.ti -1c +.RI "char * \fBstrtok_r\fP (char *, const char *, char **)" +.br +.ti -1c +.RI "char * \fBstrupr\fP (char *)" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat.S.3 new file mode 100644 index 0000000..26e15da --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat.S.3 @@ -0,0 +1,14 @@ +.TH "strlcat.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strlcat.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat_P.S.3 new file mode 100644 index 0000000..b296864 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcat_P.S.3 @@ -0,0 +1,14 @@ +.TH "strlcat_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strlcat_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy.S.3 new file mode 100644 index 0000000..00697fa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy.S.3 @@ -0,0 +1,14 @@ +.TH "strlcpy.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strlcpy.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy_P.S.3 new file mode 100644 index 0000000..0010f54 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlcpy_P.S.3 @@ -0,0 +1,14 @@ +.TH "strlcpy_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strlcpy_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen.S.3 new file mode 100644 index 0000000..529c18c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen.S.3 @@ -0,0 +1,14 @@ +.TH "strlen.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strlen.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen_P.S.3 new file mode 100644 index 0000000..2154e6a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlen_P.S.3 @@ -0,0 +1,14 @@ +.TH "strlen_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strlen_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlwr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlwr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlwr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlwr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlwr.S.3 new file mode 100644 index 0000000..5df832f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strlwr.S.3 @@ -0,0 +1,14 @@ +.TH "strlwr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strlwr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp.S.3 new file mode 100644 index 0000000..b13f095 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp.S.3 @@ -0,0 +1,14 @@ +.TH "strncasecmp.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncasecmp.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp_P.S.3 new file mode 100644 index 0000000..5cf1f19 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncasecmp_P.S.3 @@ -0,0 +1,14 @@ +.TH "strncasecmp_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncasecmp_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat.S.3 new file mode 100644 index 0000000..f1b0c4f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat.S.3 @@ -0,0 +1,14 @@ +.TH "strncat.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncat.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat_P.S.3 new file mode 100644 index 0000000..c305ae3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncat_P.S.3 @@ -0,0 +1,14 @@ +.TH "strncat_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncat_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp.S.3 new file mode 100644 index 0000000..af36bfb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp.S.3 @@ -0,0 +1,14 @@ +.TH "strncmp.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncmp.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp_P.S.3 new file mode 100644 index 0000000..7a1ff7d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncmp_P.S.3 @@ -0,0 +1,14 @@ +.TH "strncmp_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncmp_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy.S.3 new file mode 100644 index 0000000..f2f4dde --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy.S.3 @@ -0,0 +1,14 @@ +.TH "strncpy.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncpy.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy_P.S.3 new file mode 100644 index 0000000..2dc5e34 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strncpy_P.S.3 @@ -0,0 +1,14 @@ +.TH "strncpy_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strncpy_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen.S.3 new file mode 100644 index 0000000..9698811 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen.S.3 @@ -0,0 +1,14 @@ +.TH "strnlen.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strnlen.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen_P.S.3 new file mode 100644 index 0000000..f977517 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strnlen_P.S.3 @@ -0,0 +1,14 @@ +.TH "strnlen_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strnlen_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk.S.3 new file mode 100644 index 0000000..8a499ec --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk.S.3 @@ -0,0 +1,14 @@ +.TH "strpbrk.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strpbrk.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk_P.S.3 new file mode 100644 index 0000000..a54bc2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strpbrk_P.S.3 @@ -0,0 +1,14 @@ +.TH "strpbrk_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strpbrk_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr.S.3 new file mode 100644 index 0000000..4d48e5d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr.S.3 @@ -0,0 +1,14 @@ +.TH "strrchr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strrchr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr_P.S.3 new file mode 100644 index 0000000..3a19625 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrchr_P.S.3 @@ -0,0 +1,14 @@ +.TH "strrchr_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strrchr_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrev.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrev.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrev.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrev.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrev.S.3 new file mode 100644 index 0000000..cf7fce1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strrev.S.3 @@ -0,0 +1,14 @@ +.TH "strrev.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strrev.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep.S.3 new file mode 100644 index 0000000..0fa102d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep.S.3 @@ -0,0 +1,14 @@ +.TH "strsep.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strsep.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep_P.S.3 new file mode 100644 index 0000000..35e15ec --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strsep_P.S.3 @@ -0,0 +1,14 @@ +.TH "strsep_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strsep_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn.S.3 new file mode 100644 index 0000000..5320f6c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn.S.3 @@ -0,0 +1,14 @@ +.TH "strspn.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strspn.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn_P.S.3 new file mode 100644 index 0000000..647d2bd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strspn_P.S.3 @@ -0,0 +1,14 @@ +.TH "strspn_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strspn_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr.S.3 new file mode 100644 index 0000000..2f7791d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr.S.3 @@ -0,0 +1,14 @@ +.TH "strstr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strstr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr_P.3 new file mode 100644 index 0000000..56a3e66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr_P.3 @@ -0,0 +1 @@ +.so man3/avr_pgmspace.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr_P.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr_P.S.3 new file mode 100644 index 0000000..aa218c8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strstr_P.S.3 @@ -0,0 +1,14 @@ +.TH "strstr_P.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strstr_P.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtod.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtod.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtod.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok.c.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok.c.3 new file mode 100644 index 0000000..ff43b6d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok.c.3 @@ -0,0 +1,28 @@ +.TH "strtok.c" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strtok.c \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "char * \fBstrtok\fP (char *s, const char *delim)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "static char * \fBp\fP" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok_r.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok_r.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok_r.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok_r.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok_r.S.3 new file mode 100644 index 0000000..6e957f2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtok_r.S.3 @@ -0,0 +1,14 @@ +.TH "strtok_r.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strtok_r.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtol.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtol.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtol.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtoul.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtoul.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strtoul.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strupr.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strupr.3 new file mode 100644 index 0000000..31a9541 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strupr.3 @@ -0,0 +1 @@ +.so man3/avr_string.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strupr.S.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strupr.S.3 new file mode 100644 index 0000000..d3cb9f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/strupr.S.3 @@ -0,0 +1,14 @@ +.TH "strupr.S" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +strupr.S \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tan.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tan.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tan.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tanh.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tanh.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tanh.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/timer_enable_int.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/timer_enable_int.3 new file mode 100644 index 0000000..fca9525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/timer_enable_int.3 @@ -0,0 +1 @@ +.so man3/deprecated_items.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/toascii.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/toascii.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/toascii.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/todo.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/todo.3 new file mode 100644 index 0000000..9930233 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/todo.3 @@ -0,0 +1,11 @@ +.TH "todo" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +todo \- Todo List + +.IP "\fBGroup \fBavr_boot\fP \fP" 1c +From email with Marek: On smaller devices (all except ATmega64/128), __SPM_REG is in the I/O space, accessible with the shorter 'in' and 'out' instructions - since the boot loader has a limited size, this could be an important optimization. +.PP +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tolower.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tolower.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/tolower.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/toupper.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/toupper.3 new file mode 100644 index 0000000..96e1b4b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/toupper.3 @@ -0,0 +1 @@ +.so man3/ctype.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/trunc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/trunc.3 new file mode 100644 index 0000000..e9498f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/trunc.3 @@ -0,0 +1 @@ +.so man3/avr_math.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/twi_demo.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/twi_demo.3 new file mode 100644 index 0000000..ec6848d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/twi_demo.3 @@ -0,0 +1,122 @@ +.TH "Example using the two-wire interface (TWI)" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Example using the two-wire interface (TWI) \- Some newer devices of the ATmega series contain builtin support for interfacing the microcontroller to a two-wire bus, called TWI. This is essentially the same called I2C by Philips, but that term is avoided in Atmel's documentation due to patenting issues. +.PP +For the original Philips documentation, see +.PP +http://www.semiconductors.philips.com/buses/i2c/index.html +.SH "Introduction into TWI" +.PP +The two-wire interface consists of two signal lines named \fISDA\fP (serial data) and \fISCL\fP (serial clock) (plus a ground line, of course). All devices participating in the bus are connected together, using open-drain driver circuitry, so the wires must be terminated using appropriate pullup resistors. The pullups must be small enough to recharge the line capacity in short enough time compared to the desired maximal clock frequency, yet large enough so all drivers will not be overloaded. There are formulas in the datasheet that help selecting the pullups. +.PP +Devices can either act as a master to the bus (i. e., they initiate a transfer), or as a slave (they only act when being called by a master). The bus is multi-master capable, and a particular device implementation can act as either master or slave at different times. Devices are addressed using a 7-bit address (coordinated by Philips) transfered as the first byte after the so-called start condition. The LSB of that byte is R/~W, i. e. it determines whether the request to the slave is to read or write data during the next cycles. (There is also an option to have devices using 10-bit addresses but that is not covered by this example.) +.SH "The TWI example project" +.PP +The ATmega TWI hardware supports both, master and slave operation. This example will only demonstrate how to use an AVR microcontroller as TWI master. The implementation is kept simple in order to concentrate on the steps that are required to talk to a TWI slave, so all processing is done in polled-mode, waiting for the TWI interface to indicate that the next processing step is due (by setting the TWINT interrupt bit). If it is desired to have the entire TWI communication happen in 'background', all this can be implemented in an interrupt-controlled way, where only the start condition needs to be triggered from outside the interrupt routine. +.PP +There is a variety of slave devices available that can be connected to a TWI bus. For the purpose of this example, an EEPROM device out of the industry-standard \fB24C\fIxx\fP\fP series has been chosen (where \fIxx\fP can be one of \fB01\fP, \fB02\fP, \fB04\fP, \fB08\fP, or \fB16\fP) which are available from various vendors. The choice was almost arbitrary, mainly triggered by the fact that an EEPROM device is being talked to in both directions, reading and writing the slave device, so the example will demonstrate the details of both. +.PP +Usually, there is probably not much need to add more EEPROM to an ATmega system that way: the smallest possible AVR device that offers hardware TWI support is the ATmega8 which comes with 512 bytes of EEPROM, which is equivalent to an 24C04 device. The ATmega128 already comes with twice as much EEPROM as the 24C16 would offer. One exception might be to use an externally connected EEPROM device that is removable; e. g. SDRAM PC memory comes with an integrated TWI EEPROM that carries the RAM configuration information. +.SH "The Source Code" +.PP +.PP +.PP +\fBNote [1]\fP.RS 4 + +.RE +.PP +The header file \fC<\fButil/twi.h\fP>\fP contains some macro definitions for symbolic constants used in the TWI status register. These definitions match the names used in the Atmel datasheet except that all names have been prefixed with \fCTW_\fP. +.PP +\fBNote [2]\fP.RS 4 + +.RE +.PP +The clock is used in timer calculations done by the compiler, for the UART baud rate and the TWI clock rate. +.PP +\fBNote [3]\fP.RS 4 + +.RE +.PP +The address assigned for the 24Cxx EEPROM consists of 1010 in the upper four bits. The following three bits are normally available as slave sub-addresses, allowing to operate more than one device of the same type on a single bus, where the actual subaddress used for each device is configured by hardware strapping. However, since the next data packet following the device selection only allows for 8 bits that are used as an EEPROM address, devices that require more than 8 address bits (24C04 and above) 'steal' subaddress bits and use them for the EEPROM cell address bits 9 to 11 as required. This example simply assumes all subaddress bits are 0 for the smaller devices, so the E0, E1, and E2 inputs of the 24Cxx must be grounded. +.PP +\fBNote [4]\fP.RS 4 + +.RE +.PP +For slow clocks, enable the 2 x U[S]ART clock multiplier, to improve the baud rate error. This will allow a 9600 Bd communication using the standard 1 MHz calibrated RC oscillator. See also the Baud rate tables in the datasheets. +.PP +\fBNote [5]\fP.RS 4 + +.RE +.PP +The datasheet explains why a minimum TWBR value of 10 should be maintained when running in master mode. Thus, for system clocks below 3.6 MHz, we cannot run the bus at the intented clock rate of 100 kHz but have to slow down accordingly. +.PP +\fBNote [6]\fP.RS 4 + +.RE +.PP +This function is used by the standard output facilities that are utilized in this example for debugging and demonstration purposes. +.PP +\fBNote [7]\fP.RS 4 + +.RE +.PP +In order to shorten the data to be sent over the TWI bus, the 24Cxx EEPROMs support multiple data bytes transfered within a single request, maintaining an internal address counter that is updated after each data byte transfered successfully. When reading data, one request can read the entire device memory if desired (the counter would wrap around and start back from 0 when reaching the end of the device). +.PP +\fBNote [8]\fP.RS 4 + +.RE +.PP +When reading the EEPROM, a first device selection must be made with write intent (R/~W bit set to 0 indicating a write operation) in order to transfer the EEPROM address to start reading from. This is called \fImaster transmitter mode\fP. Each completion of a particular step in TWI communication is indicated by an asserted TWINT bit in TWCR. (An interrupt would be generated if allowed.) After performing any actions that are needed for the next communication step, the interrupt condition must be manually cleared by \fIsetting\fP the TWINT bit. Unlike with many other interrupt sources, this would even be required when using a true interrupt routine, since as soon as TWINT is re-asserted, the next bus transaction will start. +.PP +\fBNote [9]\fP.RS 4 + +.RE +.PP +Since the TWI bus is multi-master capable, there is potential for a bus contention when one master starts to access the bus. Normally, the TWI bus interface unit will detect this situation, and will not initiate a start condition while the bus is busy. However, in case two masters were starting at exactly the same time, the way bus arbitration works, there is always a chance that one master could lose arbitration of the bus during any transmit operation. A master that has lost arbitration is required by the protocol to immediately cease talking on the bus; in particular it must not initiate a stop condition in order to not corrupt the ongoing transfer from the active master. In this example, upon detecting a lost arbitration condition, the entire transfer is going to be restarted. This will cause a new start condition to be initiated, which will normally be delayed until the currently active master has released the bus. +.PP +\fBNote [10]\fP.RS 4 + +.RE +.PP +Next, the device slave is going to be reselected (using a so-called repeated start condition which is meant to guarantee that the bus arbitration will remain at the current master) using the same slave address (SLA), but this time with read intent (R/~W bit set to 1) in order to request the device slave to start transfering data from the slave to the master in the next packet. +.PP +\fBNote [11]\fP.RS 4 + +.RE +.PP +If the EEPROM device is still busy writing one or more cells after a previous write request, it will simply leave its bus interface drivers at high impedance, and does not respond to a selection in any way at all. The master selecting the device will see the high level at SDA after transfering the SLA+R/W packet as a NACK to its selection request. Thus, the select process is simply started over (effectively causing a \fIrepeated start condition\fP), until the device will eventually respond. This polling procedure is recommended in the 24Cxx datasheet in order to minimize the busy wait time when writing. Note that in case a device is broken and never responds to a selection (e. g. since it is no longer present at all), this will cause an infinite loop. Thus the maximal number of iterations made until the device is declared to be not responding at all, and an error is returned, will be limited to MAX_ITER. +.PP +\fBNote [12]\fP.RS 4 + +.RE +.PP +This is called \fImaster receiver mode\fP: the bus master still supplies the SCL clock, but the device slave drives the SDA line with the appropriate data. After 8 data bits, the master responds with an ACK bit (SDA driven low) in order to request another data transfer from the slave, or it can leave the SDA line high (NACK), indicating to the slave that it is going to stop the transfer now. Assertion of ACK is handled by setting the TWEA bit in TWCR when starting the current transfer. +.PP +\fBNote [13]\fP.RS 4 + +.RE +.PP +The control word sent out in order to initiate the transfer of the next data packet is initially set up to assert the TWEA bit. During the last loop iteration, TWEA is de-asserted so the client will get informed that no further transfer is desired. +.PP +\fBNote [14]\fP.RS 4 + +.RE +.PP +Except in the case of lost arbitration, all bus transactions must properly be terminated by the master initiating a stop condition. +.PP +\fBNote [15]\fP.RS 4 + +.RE +.PP +Writing to the EEPROM device is simpler than reading, since only a master transmitter mode transfer is needed. Note that the first packet after the SLA+W selection is always considered to be the EEPROM address for the next operation. (This packet is exactly the same as the one above sent before starting to read the device.) In case a master transmitter mode transfer is going to send more than one data packet, all following packets will be considered data bytes to write at the indicated address. The internal address pointer will be incremented after each write operation. +.PP +\fBNote [16]\fP.RS 4 + +.RE +.PP +24Cxx devices can become write-protected by strapping their ~WC pin to logic high. (Leaving it unconnected is explicitly allowed, and constitutes logic low level, i. e. no write protection.) In case of a write protected device, all data transfer attempts will be NACKed by the device. Note that some devices might not implement this. +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint16_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint16_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint16_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint32_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint32_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint32_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint64_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint64_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint64_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint8_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint8_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint8_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_farptr_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_farptr_t.3 new file mode 100644 index 0000000..732b33a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_farptr_t.3 @@ -0,0 +1 @@ +.so man3/avr_inttypes.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast16_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast16_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast16_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast32_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast32_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast32_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast64_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast64_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast64_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast8_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast8_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_fast8_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least16_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least16_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least16_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least32_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least32_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least32_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least64_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least64_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least64_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least8_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least8_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uint_least8_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uintmax_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uintmax_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uintmax_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uintptr_t.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uintptr_t.3 new file mode 100644 index 0000000..79c5b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/uintptr_t.3 @@ -0,0 +1 @@ +.so man3/avr_stdint.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ultoa.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ultoa.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ultoa.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ungetc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ungetc.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/ungetc.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/using_avrprog.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/using_avrprog.3 new file mode 100644 index 0000000..567e50e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/using_avrprog.3 @@ -0,0 +1,94 @@ +.TH "using_avrprog" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +using_avrprog \- Using the avrdude program + +.PP +\fBNote:\fP +.RS 4 +This section was contributed by Brian Dean [ bsd@bsdhome.com ]. +.PP +The avrdude program was previously called avrprog. The name was changed to avoid confusion with the avrprog program that Atmel ships with AvrStudio. +.RE +.PP +\fCavrdude\fP is a program that is used to update or read the flash and EEPROM memories of Atmel AVR microcontrollers on FreeBSD Unix. It supports the Atmel serial programming protocol using the PC's parallel port and can upload either a raw binary file or an Intel Hex format file. It can also be used in an interactive mode to individually update EEPROM cells, fuse bits, and/or lock bits (if their access is supported by the Atmel serial programming protocol.) The main flash instruction memory of the AVR can also be programmed in interactive mode, however this is not very useful because one can only turn bits off. The only way to turn flash bits on is to erase the entire memory (using \fCavrdude\fP's \fC-e\fP option). +.PP +\fCavrdude\fP is part of the FreeBSD ports system. To install it, simply do the following: +.PP +.PP +.nf + +# cd /usr/ports/devel/avrdude +# make install +.fi +.PP +.PP +Once installed, \fCavrdude\fP can program processors using the contents of the \fC\fP.hex file specified on the command line. In this example, the file \fCmain.hex\fP is burned into the flash memory: +.PP +.PP +.nf + +# avrdude -p 2313 -e -m flash -i main.hex + +avrdude: AVR device initialized and ready to accept instructions + +avrdude: Device signature = 0x1e9101 + +avrdude: erasing chip +avrdude: done. +avrdude: reading input file "main.hex" +avrdude: input file main.hex auto detected as Intel Hex + +avrdude: writing flash: +1749 0x00 +avrdude: 1750 bytes of flash written +avrdude: verifying flash memory against main.hex: +avrdude: reading on-chip flash data: +1749 0x00 +avrdude: verifying ... +avrdude: 1750 bytes of flash verified + +avrdude done. Thank you. +.fi +.PP +.PP +The \fC-p 2313\fP option lets \fCavrdude\fP know that we are operating on an AT90S2313 chip. This option specifies the device id and is matched up with the device of the same id in \fCavrdude\fP's configuration file ( \fC/usr/local/etc/avrdude\fP.conf ). To list valid parts, specify the \fC-v\fP option. The \fC-e\fP option instructs \fCavrdude\fP to perform a chip-erase before programming; this is almost always necessary before programming the flash. The \fC-m flash\fP option indicates that we want to upload data into the flash memory, while \fC-i main.hex\fP specifies the name of the input file. +.PP +The EEPROM is uploaded in the same way, the only difference is that you would use \fC-m eeprom\fP instead of \fC-m flash\fP. +.PP +To use interactive mode, use the \fC-t\fP option: +.PP +.PP +.nf + +# avrdude -p 2313 -t +avrdude: AVR device initialized and ready to accept instructions +avrdude: Device signature = 0x1e9101 +avrdude> + +The '?' command displays a list of valid +commands: + +avrdude> ? +>>> ? +Valid commands: + + dump : dump memory : dump + read : alias for dump + write : write memory : write ... + erase : perform a chip erase + sig : display device signature bytes + part : display the current part information + send : send a raw command : send + help : help + ? : help + quit : quit + +Use the 'part' command to display valid memory types for use with the +'dump' and 'write' commands. + +avrdude> +.fi +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/using_tools.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/using_tools.3 new file mode 100644 index 0000000..3360c52 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/using_tools.3 @@ -0,0 +1,456 @@ +.TH "using_tools" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +using_tools \- Using the GNU tools +This is a short summary of the AVR-specific aspects of using the GNU tools. Normally, the generic documentation of these tools is fairly large and maintained in \fCtexinfo\fP files. Command-line options are explained in detail in the manual page. +.SH "Options for the C compiler avr-gcc" +.PP +.SS "Machine-specific options for the AVR" +The following machine-specific options are recognized by the C compiler frontend. In addition to the preprocessor macros indicated in the tables below, the preprocessor will define the macros __AVR and __AVR__ (to the value 1) when compiling for an AVR target. The macro AVR will be defined as well when using the standard levels gnu89 (default) and gnu99 but not with c89 and c99. +.PP +.IP "\(bu" 2 +\fC-mmcu=\fP\fIarchitecture\fP +.PP +.PP +Compile code for \fIarchitecture\fP. Currently known architectures are +.PP +Architecture Macros Description avr1 __AVR_ARCH__=1 +.br + __AVR_ASM_ONLY__ +.br + __AVR_2_BYTE_PC__ [2] Simple CPU core, only assembler support avr2 __AVR_ARCH__=2 +.br + __AVR_2_BYTE_PC__ [2] 'Classic' CPU core, up to 8 KB of ROM avr25 [1] __AVR_ARCH__=25 +.br + __AVR_HAVE_MOVW__ [1] +.br + __AVR_HAVE_LPMX__ [1] +.br + __AVR_2_BYTE_PC__ [2] 'Classic' CPU core with 'MOVW' and 'LPM Rx, Z[+]' instruction, up to 8 KB of ROM avr3 __AVR_ARCH__=3 +.br + __AVR_MEGA__ [5] +.br + __AVR_HAVE_JMP_CALL__ [4] +.br + __AVR_2_BYTE_PC__ [2] 'Classic' CPU core, 16 KB to 64 KB of ROM avr31 __AVR_ARCH__=31 +.br + __AVR_MEGA__ +.br + __AVR_HAVE_RAMPZ__[4] +.br + __AVR_HAVE_ELPM__[4] +.br + __AVR_2_BYTE_PC__ [2] 'Classic' CPU core, 128 KB of ROM avr35 [3] __AVR_ARCH__=35 +.br + __AVR_MEGA__ [5] +.br + __AVR_HAVE_JMP_CALL__ [4] +.br + __AVR_HAVE_MOVW__ [1] +.br + __AVR_HAVE_LPMX__ [1] +.br + __AVR_2_BYTE_PC__ [2] 'Classic' CPU core with 'MOVW' and 'LPM Rx, Z[+]' instruction, 16 KB to 64 KB of ROM avr4 __AVR_ARCH__=4 +.br + __AVR_ENHANCED__ [5] +.br + __AVR_HAVE_MOVW__ [1] +.br + __AVR_HAVE_LPMX__ [1] +.br + __AVR_HAVE_MUL__ [1] +.br + __AVR_2_BYTE_PC__ [2] 'Enhanced' CPU core, up to 8 KB of ROM avr5 __AVR_ARCH__=5 +.br + __AVR_MEGA__ [5] +.br + __AVR_ENHANCED__ [5] +.br + __AVR_HAVE_JMP_CALL__ [4] +.br + __AVR_HAVE_MOVW__ [1] +.br + __AVR_HAVE_LPMX__ [1] +.br + __AVR_HAVE_MUL__ [1] +.br + __AVR_2_BYTE_PC__ [2] 'Enhanced' CPU core, 16 KB to 64 KB of ROM avr51 __AVR_ARCH__=51 +.br + __AVR_MEGA__ +.br + __AVR_ENHANCED__ +.br + __AVR_HAVE_MOVW__ [1] +.br + __AVR_HAVE_LPMX__ [1] +.br + __AVR_HAVE_MUL__ [1] +.br + __AVR_HAVE_RAMPZ__[4] +.br + __AVR_HAVE_ELPM__[4] +.br + __AVR_HAVE_ELPMX__[4] +.br + __AVR_2_BYTE_PC__ [2] 'Enhanced' CPU core, 128 KB of ROM avr6 [2] __AVR_ARCH__=6 +.br + __AVR_MEGA__ [5] +.br + __AVR_ENHANCED__ [5] +.br + __AVR_HAVE_JMP_CALL__ [4] +.br + __AVR_HAVE_MOVW__ [1] +.br + __AVR_HAVE_LPMX__ [1] +.br + __AVR_HAVE_MUL__ [1] +.br + __AVR_HAVE_RAMPZ__[4] +.br + __AVR_HAVE_ELPM__[4] +.br + __AVR_HAVE_ELPMX__[4] +.br + __AVR_3_BYTE_PC__ [2] 'Enhanced' CPU core, 256 KB of ROM +.PP +[1] New in GCC 4.2 +.br + [2] Unofficial patch for GCC 4.1 +.br + [3] New in GCC 4.2.3 +.br + [4] New in GCC 4.3 +.br + [5] Obsolete. +.PP +By default, code is generated for the avr2 architecture. +.PP +Note that when only using \fC-mmcu=\fP\fIarchitecture\fP but no \fC-mmcu=\fP\fIMCU type\fP, including the file \fC<\fBavr/io.h\fP>\fP cannot work since it cannot decide which device's definitions to select. +.PP +.IP "\(bu" 2 +\fC-mmcu=\fP\fIMCU type\fP +.PP +.PP +The following MCU types are currently understood by avr-gcc. The table matches them against the corresponding avr-gcc architecture name, and shows the preprocessor symbol declared by the \fC-mmcu\fP option. +.PP +ArchitectureMCU nameMacro avr1at90s1200__AVR_AT90S1200__ avr1attiny11__AVR_ATtiny11__ avr1attiny12__AVR_ATtiny12__ avr1attiny15__AVR_ATtiny15__ avr1attiny28__AVR_ATtiny28__ avr2at90s2313__AVR_AT90S2313__ avr2at90s2323__AVR_AT90S2323__ avr2at90s2333__AVR_AT90S2333__ avr2at90s2343__AVR_AT90S2343__ avr2attiny22__AVR_ATtiny22__ avr2attiny26__AVR_ATtiny26__ avr2at90s4414__AVR_AT90S4414__ avr2at90s4433__AVR_AT90S4433__ avr2at90s4434__AVR_AT90S4434__ avr2at90s8515__AVR_AT90S8515__ avr2at90c8534__AVR_AT90C8534__ avr2at90s8535__AVR_AT90S8535__ avr2/avr25 [1]at86rf401__AVR_AT86RF401__ avr2/avr25 [1]attiny13__AVR_ATtiny13__ avr2/avr25 [1]attiny13a__AVR_ATtiny13A__ avr2/avr25 [1]attiny2313__AVR_ATtiny2313__ avr2/avr25 [1]attiny24__AVR_ATtiny24__ avr2/avr25 [1]attiny25__AVR_ATtiny25__ avr2/avr25 [1]attiny261__AVR_ATtiny261__ avr2/avr25 [1]attiny43u__AVR_ATtiny43U__ avr2/avr25 [1]attiny44__AVR_ATtiny44__ avr2/avr25 [1]attiny45__AVR_ATtiny45__ avr2/avr25 [1]attiny461__AVR_ATtiny461__ avr2/avr25 [1]attiny48__AVR_ATtiny48__ avr2/avr25 [1]attiny84__AVR_ATtiny84__ avr2/avr25 [1]attiny85__AVR_ATtiny85__ avr2/avr25 [1]attiny861__AVR_ATtiny861__ avr2/avr25 [1]attiny88__AVR_ATtiny88__ avr3atmega603__AVR_ATmega603__ avr3at43usb355__AVR_AT43USB355__ avr3/avr31 [3]atmega103__AVR_ATmega103__ avr3/avr31 [3]at43usb320__AVR_AT43USB320__ avr3/avr35 [2]at90usb82__AVR_AT90USB82__ avr3/avr35 [2]at90usb162__AVR_AT90USB162__ avr3/avr35 [2]attiny167__AVR_ATtiny167__ avr3at76c711__AVR_AT76C711__ avr4atmega48__AVR_ATmega48__ avr4atmega48p__AVR_ATmega48P__ avr4atmega8__AVR_ATmega8__ avr4atmega8515__AVR_ATmega8515__ avr4atmega8535__AVR_ATmega8535__ avr4atmega88__AVR_ATmega88__ avr4atmega88p__AVR_ATmega88P__ avr4atmega8hva__AVR_ATmega8HVA__ avr4at90pwm1__AVR_AT90PWM1__ avr4at90pwm2__AVR_AT90PWM2__ avr4at90pwm2b__AVR_AT90PWM2B__ avr4at90pwm3__AVR_AT90PWM3__ avr4at90pwm3b__AVR_AT90PWM3B__ avr5at90pwm216__AVR_AT90PWM216__ avr5at90pwm316__AVR_AT90PWM316__ avr5at90can32__AVR_AT90CAN32__ avr5at90can64__AVR_AT90CAN64__ avr5at90usb646__AVR_AT90USB646__ avr5at90usb647__AVR_AT90USB647__ avr5atmega16__AVR_ATmega16__ avr5atmega161__AVR_ATmega161__ avr5atmega162__AVR_ATmega162__ avr5atmega163__AVR_ATmega163__ avr5atmega164p__AVR_ATmega164P__ avr5atmega165__AVR_ATmega165__ avr5atmega165p__AVR_ATmega165P__ avr5atmega168__AVR_ATmega168__ avr5atmega168p__AVR_ATmega168P__ avr5atmega169__AVR_ATmega169__ avr5atmega169p__AVR_ATmega169P__ avr5atmega16hva__AVR_ATmega16HVA__ avr5atmega32__AVR_ATmega32__ avr5atmega323__AVR_ATmega323__ avr5atmega324p__AVR_ATmega324P__ avr5atmega325__AVR_ATmega325__ avr5atmega325p__AVR_ATmega325P__ avr5atmega3250__AVR_ATmega3250__ avr5atmega3250p__AVR_ATmega3250P__ avr5atmega328p__AVR_ATmega328P__ avr5atmega329__AVR_ATmega329__ avr5atmega329p__AVR_ATmega329P__ avr5atmega3290__AVR_ATmega3290__ avr5atmega3290p__AVR_ATmega3290P__ avr5atmega32c1__AVR_ATMEGA32C1__ avr5atmega32hvb__AVR_ATmega32HVB__ avr5atmega32m1__AVR_ATMEGA32M1__ avr5atmega32u4__AVR_ATMEGA32U4__ avr5atmega32u6__AVR_ATMEGA32U6__ avr5atmega406__AVR_ATmega406__ avr5atmega64__AVR_ATmega64__ avr5atmega640__AVR_ATmega640__ avr5atmega644__AVR_ATmega644__ avr5atmega644p__AVR_ATmega644P__ avr5atmega645__AVR_ATmega645__ avr5atmega6450__AVR_ATmega6450__ avr5atmega649__AVR_ATmega649__ avr5atmega6490__AVR_ATmega6490__ avr5at94k__AVR_AT94K__ avr5/avr51 [3]atmega128__AVR_ATmega128__ avr5/avr51 [3]atmega1280__AVR_ATmega1280__ avr5/avr51 [3]atmega1281__AVR_ATmega1281__ avr5/avr51 [3]atmega1284p__AVR_ATmega1284P__ avr5/avr51 [3]at90can128__AVR_AT90CAN128__ avr5/avr51 [3]at90usb1286__AVR_AT90USB1286__ avr5/avr51 [3]at90usb1287__AVR_AT90USB1287__ avr6atmega2560__AVR_ATmega2560__ avr6atmega2561__AVR_ATmega2561__ avrxmega4atxmega64a3__AVR_ATxmega64A3__ avrxmega5atxmega64a1__AVR_ATxmega64A1__ avrxmega6atxmega128a3__AVR_ATxmega128A3__ avrxmega6atxmega256a3__AVR_ATxmega256A3__ avrxmega6atxmega256a3b__AVR_ATxmega256A3B__ avrxmega7atxmega128a1__AVR_ATxmega128A1__ +.PP +.PP +[1] 'avr25' architecture is new in GCC 4.2 +.br + [2] 'avr35' architecture is new in GCC 4.2.3 +.PP +.IP "\(bu" 2 +\fC-morder1\fP +.IP "\(bu" 2 +\fC-morder2\fP +.PP +.PP +Change the order of register assignment. The default is +.PP +r24, r25, r18, r19, r20, r21, r22, r23, r30, r31, r26, r27, r28, r29, r17, r16, r15, r14, r13, r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r0, r1 +.PP +Order 1 uses +.PP +r18, r19, r20, r21, r22, r23, r24, r25, r30, r31, r26, r27, r28, r29, r17, r16, r15, r14, r13, r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r0, r1 +.PP +Order 2 uses +.PP +r25, r24, r23, r22, r21, r20, r19, r18, r30, r31, r26, r27, r28, r29, r17, r16, r15, r14, r13, r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0 +.PP +.IP "\(bu" 2 +\fC-mint8\fP +.PP +.PP +Assume \fCint\fP to be an 8-bit integer. Note that this is not really supported by \fCavr-libc\fP, so it should normally not be used. The default is to use 16-bit integers. +.PP +.IP "\(bu" 2 +\fC-mno-interrupts\fP +.PP +.PP +Generates code that changes the stack pointer without disabling interrupts. Normally, the state of the status register \fCSREG\fP is saved in a temporary register, interrupts are disabled while changing the stack pointer, and \fCSREG\fP is restored. +.PP +Specifying this option will define the preprocessor macro \fC__NO_INTERRUPTS__\fP to the value 1. +.PP +.IP "\(bu" 2 +\fC-mcall-prologues\fP +.PP +.PP +Use subroutines for function prologue/epilogue. For complex functions that use many registers (that needs to be saved/restored on function entry/exit), this saves some space at the cost of a slightly increased execution time. +.PP +.IP "\(bu" 2 +\fC-mtiny-stack\fP +.PP +.PP +Change only the low 8 bits of the stack pointer. +.PP +.IP "\(bu" 2 +\fC-mno-tablejump\fP +.PP +.PP +Do not generate tablejump instructions. By default, jump tables can be used to optimize \fCswitch\fP statements. When turned off, sequences of compare statements are used instead. Jump tables are usually faster to execute on average, but in particular for \fCswitch\fP statements where most of the jumps would go to the default label, they might waste a bit of flash memory. +.PP +.IP "\(bu" 2 +\fC-mshort-calls\fP +.PP +.PP +Use \fCrjmp/rcall\fP (limited range) on >8K devices. On \fCavr2\fP and \fCavr4\fP architectures (less than 8 KB or flash memory), this is always the case. On \fCavr3\fP and \fCavr5\fP architectures, calls and jumps to targets outside the current function will by default use \fCjmp/call\fP instructions that can cover the entire address range, but that require more flash ROM and execution time. +.PP +.IP "\(bu" 2 +\fC-mrtl\fP +.PP +.PP +Dump the internal compilation result called 'RTL' into comments in the generated assembler code. Used for debugging avr-gcc. +.PP +.IP "\(bu" 2 +\fC-msize\fP +.PP +.PP +Dump the address, size, and relative cost of each statement into comments in the generated assembler code. Used for debugging avr-gcc. +.PP +.IP "\(bu" 2 +\fC-mdeb\fP +.PP +.PP +Generate lots of debugging information to \fCstderr\fP. +.SS "Selected general compiler options" +The following general gcc options might be of some interest to AVR users. +.PP +.IP "\(bu" 2 +\fC-O\fP\fIn\fP +.PP +.PP + Optimization level \fIn\fP. Increasing \fIn\fP is meant to optimize more, an optimization level of 0 means no optimization at all, which is the default if no \fC-O\fP option is present. The special option \fC-Os\fP is meant to turn on all \fC-O2\fP optimizations that are not expected to increase code size. +.PP +Note that at \fC-O3\fP, gcc attempts to inline all 'simple' functions. For the AVR target, this will normally constitute a large pessimization due to the code increasement. The only other optimization turned on with \fC-O3\fP is \fC-frename-registers\fP, which could rather be enabled manually instead. +.PP +A simple \fC-O\fP option is equivalent to \fC-O1\fP. +.PP +Note also that turning off all optimizations will prevent some warnings from being issued since the generation of those warnings depends on code analysis steps that are only performed when optimizing (unreachable code, unused variables). +.PP +See also the \fBappropriate FAQ entry\fP for issues regarding debugging optimized code. +.PP +.IP "\(bu" 2 +\fC-Wa,\fP\fIassembler-options\fP +.IP "\(bu" 2 +\fC-Wl,\fP\fIlinker-options\fP +.PP +.PP + Pass the listed options to the assembler, or linker, respectively. +.PP +.IP "\(bu" 2 +\fC-g\fP +.PP +.PP +Generate debugging information that can be used by avr-gdb. +.PP +.IP "\(bu" 2 +\fC-ffreestanding\fP +.PP +.PP +Assume a 'freestanding' environment as per the C standard. This turns off automatic builtin functions (though they can still be reached by prepending \fC__builtin_\fP to the actual function name). It also makes the compiler not complain when \fCmain()\fP is declared with a \fCvoid\fP return type which makes some sense in a microcontroller environment where the application cannot meaningfully provide a return value to its environment (in most cases, \fCmain()\fP won't even return anyway). However, this also turns off all optimizations normally done by the compiler which assume that functions known by a certain name behave as described by the standard. E. g., applying the function \fBstrlen()\fP to a literal string will normally cause the compiler to immediately replace that call by the actual length of the string, while with \fC-ffreestanding\fP, it will always call \fBstrlen()\fP at run-time. +.PP +.IP "\(bu" 2 +\fC-funsigned-char\fP +.PP +.PP +Make any unqualfied \fCchar\fP type an unsigned char. Without this option, they default to a signed char. +.PP +.IP "\(bu" 2 +\fC-funsigned-bitfields\fP +.PP +.PP +Make any unqualified bitfield type unsigned. By default, they are signed. +.PP +.IP "\(bu" 2 +\fC-fshort-enums\fP +.PP +.PP +Allocate to an \fCenum\fP type only as many bytes as it needs for the declared range of possible values. Specifically, the enum type will be equivalent to the smallest integer type which has enough room. +.PP +.IP "\(bu" 2 +\fC-fpack-struct\fP +.PP +.PP +Pack all structure members together without holes. +.SH "Options for the assembler avr-as" +.PP +.SS "Machine-specific assembler options" +.IP "\(bu" 2 +\fC-mmcu=\fP\fIarchitecture\fP +.IP "\(bu" 2 +\fC-mmcu=\fP\fIMCU name\fP +.PP +.PP +avr-as understands the same \fC-mmcu=\fP options as \fBavr-gcc\fP. By default, avr2 is assumed, but this can be altered by using the appropriate \fC\fP.arch pseudo-instruction inside the assembler source file. +.PP +.IP "\(bu" 2 +\fC-mall-opcodes\fP +.PP +.PP +Turns off opcode checking for the actual MCU type, and allows any possible AVR opcode to be assembled. +.PP +.IP "\(bu" 2 +\fC-mno-skip-bug\fP +.PP +.PP +Don't emit a warning when trying to skip a 2-word instruction with a \fCCPSE/SBIC/SBIS/SBRC/SBRS\fP instruction. Early AVR devices suffered from a hardware bug where these instructions could not be properly skipped. +.PP +.IP "\(bu" 2 +\fC-mno-wrap\fP +.PP +.PP +For \fCRJMP/RCALL\fP instructions, don't allow the target address to wrap around for devices that have more than 8 KB of memory. +.PP +.IP "\(bu" 2 +\fC--gstabs\fP +.PP +.PP +Generate \fC\fP.stabs debugging symbols for assembler source lines. This enables avr-gdb to trace through assembler source files. This option \fImust not\fP be used when assembling sources that have been generated by the C compiler; these files already contain the appropriate line number information from the C source files. +.PP +.IP "\(bu" 2 +\fC-a[cdhlmns=\fP\fIfile\fP\fC]\fP +.PP +.PP +Turn on the assembler listing. The sub-options are: +.PP +.PD 0 +.IP "\(bu" 2 +\fCc\fP omit false conditionals +.IP "\(bu" 2 +\fCd\fP omit debugging directives +.IP "\(bu" 2 +\fCh\fP include high-level source +.IP "\(bu" 2 +\fCl\fP include assembly +.IP "\(bu" 2 +\fCm\fP include macro expansions +.IP "\(bu" 2 +\fCn\fP omit forms processing +.IP "\(bu" 2 +\fCs\fP include symbols +.IP "\(bu" 2 +\fC=\fP\fIfile\fP set the name of the listing file +.PP +.PP +The various sub-options can be combined into a single \fC-a\fP option list; \fI=file\fP must be the last one in that case. +.SS "Examples for assembler options passed through the C compiler" +Remember that assembler options can be passed from the C compiler frontend using \fC-Wa\fP (see \fBabove\fP), so in order to include the C source code into the assembler listing in file \fCfoo.lst\fP, when compiling \fCfoo.c\fP, the following compiler command-line can be used: +.PP +.PP +.nf + + $ avr-gcc -c -O foo.c -o foo.o -Wa,-ahls=foo.lst +.fi +.PP +.PP +In order to pass an assembler file through the C preprocessor first, and have the assembler generate line number debugging information for it, the following command can be used: +.PP +.PP +.nf + + $ avr-gcc -c -x assembler-with-cpp -o foo.o foo.S -Wa,--gstabs +.fi +.PP +.PP +Note that on Unix systems that have case-distinguishing file systems, specifying a file name with the suffix \fC\fP.S (upper-case letter S) will make the compiler automatically assume \fC-x assembler-with-cpp\fP, while using \fC\fP.s would pass the file directly to the assembler (no preprocessing done). +.SH "Controlling the linker avr-ld" +.PP +.SS "Selected linker options" +While there are no machine-specific options for avr-ld, a number of the standard options might be of interest to AVR users. +.PP +.IP "\(bu" 2 +\fC-l\fP\fIname\fP +.PP +.PP +Locate the archive library named \fClib\fP\fIname\fP\fC.a\fP, and use it to resolve currently unresolved symbols from it. The library is searched along a path that consists of builtin pathname entries that have been specified at compile time (e. g. \fC/usr/local/avr/lib\fP on Unix systems), possibly extended by pathname entries as specified by \fC-L\fP options (that must precede the \fC-l\fP options on the command-line). +.PP +.IP "\(bu" 2 +\fC-L\fP\fIpath\fP +.PP +.PP +Additional location to look for archive libraries requested by \fC-l\fP options. +.PP +.IP "\(bu" 2 +\fC--defsym \fP\fIsymbol=expr\fP +.PP +.PP +Define a global symbol \fIsymbol\fP using \fIexpr\fP as the value. +.PP +.IP "\(bu" 2 +\fC-M\fP +.PP +.PP +Print a linker map to \fCstdout\fP. +.PP +.IP "\(bu" 2 +\fC-Map \fP\fImapfile\fP +.PP +.PP +Print a linker map to \fImapfile\fP. +.PP +.IP "\(bu" 2 +\fC--cref\fP +.PP +.PP +Output a cross reference table to the map file (in case \fC-Map\fP is also present), or to \fCstdout\fP. +.PP +.IP "\(bu" 2 +\fC--section-start \fP\fIsectionname=org\fP +.PP +.PP +Start section \fIsectionname\fP at absolute address \fIorg\fP. +.PP +.IP "\(bu" 2 +\fC-Tbss \fP\fIorg\fP +.IP "\(bu" 2 +\fC-Tdata \fP\fIorg\fP +.IP "\(bu" 2 +\fC-Ttext \fP\fIorg\fP +.PP +.PP +Start the \fCbss\fP, \fCdata\fP, or \fCtext\fP section at \fIorg\fP, respectively. +.PP +.IP "\(bu" 2 +\fC-T \fP\fIscriptfile\fP +.PP +.PP +Use \fIscriptfile\fP as the linker script, replacing the default linker script. Default linker scripts are stored in a system-specific location (e. g. under \fC/usr/local/avr/lib/ldscripts\fP on Unix systems), and consist of the AVR architecture name (avr2 through avr5) with the suffix \fC\fP.x appended. They describe how the various \fBmemory sections\fP will be linked together. +.SS "Passing linker options from the C compiler" +By default, all unknown non-option arguments on the avr-gcc command-line (i. e., all filename arguments that don't have a suffix that is handled by avr-gcc) are passed straight to the linker. Thus, all files ending in \fC\fP.o (object files) and \fC\fP.a (object libraries) are provided to the linker. +.PP +System libraries are usually not passed by their explicit filename but rather using the \fC-l\fP option which uses an abbreviated form of the archive filename (see above). avr-libc ships two system libraries, \fClibc.a\fP, and \fClibm.a\fP. While the standard library \fClibc.a\fP will always be searched for unresolved references when the linker is started using the C compiler frontend (i. e., there's always at least one implied \fC-lc\fP option), the mathematics library \fClibm.a\fP needs to be explicitly requested using \fC-lm\fP. See also the \fBentry in the FAQ\fP explaining this. +.PP +Conventionally, Makefiles use the \fCmake\fP macro \fCLDLIBS\fP to keep track of \fC-l\fP (and possibly \fC-L\fP) options that should only be appended to the C compiler command-line when linking the final binary. In contrast, the macro \fCLDFLAGS\fP is used to store other command-line options to the C compiler that should be passed as options during the linking stage. The difference is that options are placed early on the command-line, while libraries are put at the end since they are to be used to resolve global symbols that are still unresolved at this point. +.PP +Specific linker flags can be passed from the C compiler command-line using the \fC-Wl\fP compiler option, see \fBabove\fP. This option requires that there be no spaces in the appended linker option, while some of the linker options above (like \fC-Map\fP or \fC--defsym\fP) would require a space. In these situations, the space can be replaced by an equal sign as well. For example, the following command-line can be used to compile \fCfoo.c\fP into an executable, and also produce a link map that contains a cross-reference list in the file \fCfoo.map:\fP +.PP +.PP +.nf + + $ avr-gcc -O -o foo.out -Wl,-Map=foo.map -Wl,--cref foo.c +.fi +.PP +.PP +Alternatively, a comma as a placeholder will be replaced by a space before passing the option to the linker. So for a device with external SRAM, the following command-line would cause the linker to place the data segment at address 0x2000 in the SRAM: +.PP +.PP +.nf + + $ avr-gcc -mmcu=atmega128 -o foo.out -Wl,-Tdata,0x802000 +.fi +.PP +.PP +See the explanation of the \fBdata section\fP for why 0x800000 needs to be added to the actual value. Note that the stack will still remain in internal RAM, through the symbol \fC__stack\fP that is provided by the run-time startup code. This is probably a good idea anyway (since internal RAM access is faster), and even required for some early devices that had hardware bugs preventing them from using a stack in external RAM. Note also that the heap for \fC\fBmalloc()\fP\fP will still be placed after all the variables in the data section, so in this situation, no stack/heap collision can occur. +.PP +In order to relocate the stack from its default location at the top of interns RAM, the value of the symbol \fC__stack\fP can be changed on the linker command-line. As the linker is typically called from the compiler frontend, this can be achieved using a compiler option like +.PP +.PP +.nf +-Wl,--defsym=__stack=0x8003ff +.fi +.PP +.PP +The above will make the code use stack space from RAM address 0x3ff downwards. The amount of stack space available then depends on the bottom address of internal RAM for a particular device. It is the responsibility of the application to ensure the stack does not grow out of bounds, as well as to arrange for the stack to not collide with variable allocations made by the compiler (sections .data and .bss). diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_atomic.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_atomic.3 new file mode 100644 index 0000000..0307257 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_atomic.3 @@ -0,0 +1,144 @@ +.TH " Atomically and Non-Atomically Executed Code Blocks" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME + Atomically and Non-Atomically Executed Code Blocks \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +The macros in this header file require the ISO/IEC 9899:1999 ('ISO C99') feature of for loop variables that are declared inside the for loop itself. For that reason, this header file can only be used if the standard level of the compiler (option --std=) is set to either \fCc99\fP or \fCgnu99\fP. +.RE +.PP +The macros in this header file deal with code blocks that are guaranteed to be excuted Atomically or Non-Atmomically. The term 'Atomic' in this context refers to the unability of the respective code to be interrupted. +.PP +These macros operate via automatic manipulation of the Global Interrupt Status (I) bit of the SREG register. Exit paths from both block types are all managed automatically without the need for special considerations, i. e. the interrupt status will be restored to the same value it has been when entering the respective block. +.PP +A typical example that requires atomic access is a 16 (or more) bit variable that is shared between the main execution path and an ISR. While declaring such a variable as volatile ensures that the compiler will not optimize accesses to it away, it does not guarantee atomic access to it. Assuming the following example: +.PP +.PP +.nf +#include +#include +#include + +volatile uint16_t ctr; + +ISR(TIMER1_OVF_vect) +{ + ctr--; +} + +... +int +main(void) +{ + ... + ctr = 0x200; + start_timer(); + while (ctr != 0) + // wait + ; + ... +} +.fi +.PP +.PP +There is a chance where the main context will exit its wait loop when the variable \fCctr\fP just reached the value 0xFF. This happens because the compiler cannot natively access a 16-bit variable atomically in an 8-bit CPU. So the variable is for example at 0x100, the compiler then tests the low byte for 0, which succeeds. It then proceeds to test the high byte, but that moment the ISR triggers, and the main context is interrupted. The ISR will decrement the variable from 0x100 to 0xFF, and the main context proceeds. It now tests the high byte of the variable which is (now) also 0, so it concludes the variable has reached 0, and terminates the loop. +.PP +Using the macros from this header file, the above code can be rewritten like: +.PP +.PP +.nf +#include +#include +#include +#include + +volatile uint16_t ctr; + +ISR(TIMER1_OVF_vect) +{ + ctr--; +} + +... +int +main(void) +{ + ... + ctr = 0x200; + start_timer(); + sei(); + uint16_t ctr_copy; + do + { + ATOMIC_BLOCK(ATOMIC_FORCEON) + { + ctr_copy = ctr; + } + } + while (ctr_copy != 0); + ... +} +.fi +.PP +.PP +This will install the appropriate interrupt protection before accessing variable \fCctr\fP, so it is guaranteed to be consistently tested. If the global interrupt state were uncertain before entering the ATOMIC_BLOCK, it should be executed with the parameter ATOMIC_RESTORESTATE rather than ATOMIC_FORCEON. +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBATOMIC_BLOCK\fP(type)" +.br +.ti -1c +.RI "#define \fBNONATOMIC_BLOCK\fP(type)" +.br +.ti -1c +.RI "#define \fBATOMIC_RESTORESTATE\fP" +.br +.ti -1c +.RI "#define \fBATOMIC_FORCEON\fP" +.br +.ti -1c +.RI "#define \fBNONATOMIC_RESTORESTATE\fP" +.br +.ti -1c +.RI "#define \fBNONATOMIC_FORCEOFF\fP" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define ATOMIC_BLOCK(type)" +.PP +Creates a block of code that is guaranteed to be executed atomically. Upon entering the block the Global Interrupt Status flag in SREG is disabled, and re-enabled upon exiting the block from any exit path. +.PP +Two possible macro parameters are permitted, ATOMIC_RESTORESTATE and ATOMIC_FORCEON. +.SS "#define ATOMIC_FORCEON" +.PP +This is a possible parameter for ATOMIC_BLOCK. When used, it will cause the ATOMIC_BLOCK to force the state of the SREG register on exit, enabling the Global Interrupt Status flag bit. This saves on flash space as the previous value of the SREG register does not need to be saved at the start of the block. +.PP +Care should be taken that ATOMIC_FORCEON is only used when it is known that interrupts are enabled before the block's execution or when the side effects of enabling global interrupts at the block's completion are known and understood. +.SS "#define ATOMIC_RESTORESTATE" +.PP +This is a possible parameter for ATOMIC_BLOCK. When used, it will cause the ATOMIC_BLOCK to restore the previous state of the SREG register, saved before the Global Interrupt Status flag bit was disabled. The net effect of this is to make the ATOMIC_BLOCK's contents guaranteed atomic, without changing the state of the Global Interrupt Status flag when execution of the block completes. +.SS "#define NONATOMIC_BLOCK(type)" +.PP +Creates a block of code that is executed non-atomically. Upon entering the block the Global Interrupt Status flag in SREG is enabled, and disabled upon exiting the block from any exit path. This is useful when nested inside ATOMIC_BLOCK sections, allowing for non-atomic execution of small blocks of code while maintaining the atomic access of the other sections of the parent ATOMIC_BLOCK. +.PP +Two possible macro parameters are permitted, NONATOMIC_RESTORESTATE and NONATOMIC_FORCEOFF. +.SS "#define NONATOMIC_FORCEOFF" +.PP +This is a possible parameter for NONATOMIC_BLOCK. When used, it will cause the NONATOMIC_BLOCK to force the state of the SREG register on exit, disabling the Global Interrupt Status flag bit. This saves on flash space as the previous value of the SREG register does not need to be saved at the start of the block. +.PP +Care should be taken that NONATOMIC_FORCEOFF is only used when it is known that interrupts are disabled before the block's execution or when the side effects of disabling global interrupts at the block's completion are known and understood. +.SS "#define NONATOMIC_RESTORESTATE" +.PP +This is a possible parameter for NONATOMIC_BLOCK. When used, it will cause the NONATOMIC_BLOCK to restore the previous state of the SREG register, saved before the Global Interrupt Status flag bit was enabled. The net effect of this is to make the NONATOMIC_BLOCK's contents guaranteed non-atomic, without changing the state of the Global Interrupt Status flag when execution of the block completes. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_crc.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_crc.3 new file mode 100644 index 0000000..1d9f043 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_crc.3 @@ -0,0 +1,200 @@ +.TH ": CRC Computations" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: CRC Computations \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file provides a optimized inline functions for calculating cyclic redundancy checks (CRC) using common polynomials. +.PP +\fBReferences:\fP.RS 4 + +.RE +.PP +\fB\fP.RS 4 +.RE +.PP +See the Dallas Semiconductor app note 27 for 8051 assembler example and general CRC optimization suggestions. The table on the last page of the app note is the key to understanding these implementations. +.PP +\fB\fP.RS 4 +.RE +.PP +Jack Crenshaw's 'Implementing CRCs' article in the January 1992 isue of \fIEmbedded\fP \fISystems\fP \fIProgramming\fP. This may be difficult to find, but it explains CRC's in very clear and concise terms. Well worth the effort to obtain a copy. +.PP +A typical application would look like: +.PP +.PP +.nf + // Dallas iButton test vector. + uint8_t serno[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0, 0xa2 }; + + int + checkcrc(void) + { + uint8_t crc = 0, i; + + for (i = 0; i < sizeof serno / sizeof serno[0]; i++) + crc = _crc_ibutton_update(crc, serno[i]); + + return crc; // must be 0 + } +.fi +.PP + +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "static __inline__ \fBuint16_t\fP \fB_crc16_update\fP (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)" +.br +.ti -1c +.RI "static __inline__ \fBuint16_t\fP \fB_crc_xmodem_update\fP (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)" +.br +.ti -1c +.RI "static __inline__ \fBuint16_t\fP \fB_crc_ccitt_update\fP (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)" +.br +.ti -1c +.RI "static __inline__ \fBuint8_t\fP \fB_crc_ibutton_update\fP (\fBuint8_t\fP __crc, \fBuint8_t\fP __data)" +.br +.in -1c +.SH "Function Documentation" +.PP +.SS "static __inline__ \fBuint16_t\fP _crc16_update (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)\fC [static]\fP" +.PP +Optimized CRC-16 calculation. +.PP +Polynomial: x^16 + x^15 + x^2 + 1 (0xa001) +.br + Initial value: 0xffff +.PP +This CRC is normally used in disk-drive controllers. +.PP +The following is the equivalent functionality written in C. +.PP +.PP +.nf + uint16_t + crc16_update(uint16_t crc, uint8_t a) + { + int i; + + crc ^= a; + for (i = 0; i < 8; ++i) + { + if (crc & 1) + crc = (crc >> 1) ^ 0xA001; + else + crc = (crc >> 1); + } + + return crc; + } +.fi +.PP + +.SS "static __inline__ \fBuint16_t\fP _crc_ccitt_update (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)\fC [static]\fP" +.PP +Optimized CRC-CCITT calculation. +.PP +Polynomial: x^16 + x^12 + x^5 + 1 (0x8408) +.br + Initial value: 0xffff +.PP +This is the CRC used by PPP and IrDA. +.PP +See RFC1171 (PPP protocol) and IrDA IrLAP 1.1 +.PP +\fBNote:\fP +.RS 4 +Although the CCITT polynomial is the same as that used by the Xmodem protocol, they are quite different. The difference is in how the bits are shifted through the alorgithm. Xmodem shifts the MSB of the CRC and the input first, while CCITT shifts the LSB of the CRC and the input first. +.RE +.PP +The following is the equivalent functionality written in C. +.PP +.PP +.nf + uint16_t + crc_ccitt_update (uint16_t crc, uint8_t data) + { + data ^= lo8 (crc); + data ^= data << 4; + + return ((((uint16_t)data << 8) | hi8 (crc)) ^ (uint8_t)(data >> 4) + ^ ((uint16_t)data << 3)); + } +.fi +.PP + +.SS "static __inline__ \fBuint8_t\fP _crc_ibutton_update (\fBuint8_t\fP __crc, \fBuint8_t\fP __data)\fC [static]\fP" +.PP +Optimized Dallas (now Maxim) iButton 8-bit CRC calculation. +.PP +Polynomial: x^8 + x^5 + x^4 + 1 (0x8C) +.br + Initial value: 0x0 +.PP +See http://www.maxim-ic.com/appnotes.cfm/appnote_number/27 +.PP +The following is the equivalent functionality written in C. +.PP +.PP +.nf + uint8_t + _crc_ibutton_update(uint8_t crc, uint8_t data) + { + uint8_t i; + + crc = crc ^ data; + for (i = 0; i < 8; i++) + { + if (crc & 0x01) + crc = (crc >> 1) ^ 0x8C; + else + crc >>= 1; + } + + return crc; + } +.fi +.PP + +.SS "static __inline__ \fBuint16_t\fP _crc_xmodem_update (\fBuint16_t\fP __crc, \fBuint8_t\fP __data)\fC [static]\fP" +.PP +Optimized CRC-XMODEM calculation. +.PP +Polynomial: x^16 + x^12 + x^5 + 1 (0x1021) +.br + Initial value: 0x0 +.PP +This is the CRC used by the Xmodem-CRC protocol. +.PP +The following is the equivalent functionality written in C. +.PP +.PP +.nf + uint16_t + crc_xmodem_update (uint16_t crc, uint8_t data) + { + int i; + + crc = crc ^ ((uint16_t)data << 8); + for (i=0; i<8; i++) + { + if (crc & 0x8000) + crc = (crc << 1) ^ 0x1021; + else + crc <<= 1; + } + + return crc; + } +.fi +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_delay.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_delay.3 new file mode 100644 index 0000000..b972832 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_delay.3 @@ -0,0 +1,59 @@ +.TH ": Convenience functions for busy-wait delay loops" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Convenience functions for busy-wait delay loops \- +.SH "Detailed Description" +.PP +.PP +.nf + #define F_CPU 1000000UL // 1 MHz + //#define F_CPU 14.7456E6 + #include +.fi +.PP +.PP +\fBNote:\fP +.RS 4 +As an alternative method, it is possible to pass the F_CPU macro down to the compiler from the Makefile. Obviously, in that case, no \fC#define\fP statement should be used. +.RE +.PP +The functions in this header file are wrappers around the basic busy-wait functions from <\fButil/delay_basic.h\fP>. They are meant as convenience functions where actual time values can be specified rather than a number of cycles to wait for. The idea behind is that compile-time constant expressions will be eliminated by compiler optimization so floating-point expressions can be used to calculate the number of delay cycles needed based on the CPU frequency passed by the macro F_CPU. +.PP +\fBNote:\fP +.RS 4 +In order for these functions to work as intended, compiler optimizations \fImust\fP be enabled, and the delay time \fImust\fP be an expression that is a known constant at compile-time. If these requirements are not met, the resulting delay will be much longer (and basically unpredictable), and applications that otherwise do not use floating-point calculations will experience severe code bloat by the floating-point library routines linked into the application. +.RE +.PP +The functions available allow the specification of microsecond, and millisecond delays directly, using the application-supplied macro F_CPU as the CPU clock frequency (in Hertz). +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fB_delay_us\fP (double __us)" +.br +.ti -1c +.RI "void \fB_delay_ms\fP (double __ms)" +.br +.in -1c +.SH "Function Documentation" +.PP +.SS "void _delay_ms (double __ms)" +.PP +Perform a delay of \fC__ms\fP milliseconds, using \fB_delay_loop_2()\fP. +.PP +The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz). +.PP +The maximal possible delay is 262.14 ms / F_CPU in MHz. +.PP +When the user request delay which exceed the maximum possible one, \fB_delay_ms()\fP provides a decreased resolution functionality. In this mode \fB_delay_ms()\fP will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency). The user will not be informed about decreased resolution. +.SS "void _delay_us (double __us)" +.PP +Perform a delay of \fC__us\fP microseconds, using \fB_delay_loop_1()\fP. +.PP +The macro F_CPU is supposed to be defined to a constant defining the CPU clock frequency (in Hertz). +.PP +The maximal possible delay is 768 us / F_CPU in MHz. +.PP +If the user requests a delay greater than the maximal possible one, \fB_delay_us()\fP will automatically call \fB_delay_ms()\fP instead. The user will not be informed about this case. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_delay_basic.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_delay_basic.3 new file mode 100644 index 0000000..859a60b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_delay_basic.3 @@ -0,0 +1,41 @@ +.TH ": Basic busy-wait delay loops" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Basic busy-wait delay loops \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +The functions in this header file implement simple delay loops that perform a busy-waiting. They are typically used to facilitate short delays in the program execution. They are implemented as count-down loops with a well-known CPU cycle count per loop iteration. As such, no other processing can occur simultaneously. It should be kept in mind that the functions described here do not disable interrupts. +.PP +In general, for long delays, the use of hardware timers is much preferrable, as they free the CPU, and allow for concurrent processing of other events while the timer is running. However, in particular for very short delays, the overhead of setting up a hardware timer is too much compared to the overall delay time. +.PP +Two inline functions are provided for the actual delay algorithms. +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fB_delay_loop_1\fP (\fBuint8_t\fP __count)" +.br +.ti -1c +.RI "void \fB_delay_loop_2\fP (\fBuint16_t\fP __count)" +.br +.in -1c +.SH "Function Documentation" +.PP +.SS "void _delay_loop_1 (\fBuint8_t\fP __count)" +.PP +Delay loop using an 8-bit counter \fC__count\fP, so up to 256 iterations are possible. (The value 256 would have to be passed as 0.) The loop executes three CPU cycles per iteration, not including the overhead the compiler needs to setup the counter register. +.PP +Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds can be achieved. +.SS "void _delay_loop_2 (\fBuint16_t\fP __count)" +.PP +Delay loop using a 16-bit counter \fC__count\fP, so up to 65536 iterations are possible. (The value 65536 would have to be passed as 0.) The loop executes four CPU cycles per iteration, not including the overhead the compiler requires to setup the counter register pair. +.PP +Thus, at a CPU speed of 1 MHz, delays of up to about 262.1 milliseconds can be achieved. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_parity.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_parity.3 new file mode 100644 index 0000000..88a305a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_parity.3 @@ -0,0 +1,52 @@ +.TH ": Parity bit generation" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Parity bit generation \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file contains optimized assembler code to calculate the parity bit for a byte. +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBparity_even_bit\fP(val)" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define parity_even_bit(val)" +.PP +\fBValue:\fP +.PP +.nf +(__extension__({ \ + unsigned char __t; \ + __asm__ ( \ + 'mov __tmp_reg__,%0' '\n\t' \ + 'swap %0' '\n\t' \ + 'eor %0,__tmp_reg__' '\n\t' \ + 'mov __tmp_reg__,%0' '\n\t' \ + 'lsr %0' '\n\t' \ + 'lsr %0' '\n\t' \ + 'eor %0,__tmp_reg__' \ + : '=r' (__t) \ + : '0' ((unsigned char)(val)) \ + : 'r0' \ + ); \ + (((__t + 1) >> 1) & 1); \ + })) +.fi +\fBReturns:\fP +.RS 4 +1 if \fCval\fP has an odd number of bits set. +.RE +.PP + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_setbaud.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_setbaud.3 new file mode 100644 index 0000000..250a8f5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_setbaud.3 @@ -0,0 +1,108 @@ +.TH ": Helper macros for baud rate calculations" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: Helper macros for baud rate calculations \- +.SH "Detailed Description" +.PP +.PP +.nf + #define F_CPU 11059200 + #define BAUD 38400 + #include +.fi +.PP +.PP +This header file requires that on entry values are already defined for F_CPU and BAUD. In addition, the macro BAUD_TOL will define the baud rate tolerance (in percent) that is acceptable during the calculations. The value of BAUD_TOL will default to 2 %. +.PP +This header file defines macros suitable to setup the UART baud rate prescaler registers of an AVR. All calculations are done using the C preprocessor. Including this header file causes no other side effects so it is possible to include this file more than once (supposedly, with different values for the BAUD parameter), possibly even within the same function. +.PP +Assuming that the requested BAUD is valid for the given F_CPU then the macro UBRR_VALUE is set to the required prescaler value. Two additional macros are provided for the low and high bytes of the prescaler, respectively: UBRRL_VALUE is set to the lower byte of the UBRR_VALUE and UBRRH_VALUE is set to the upper byte. An additional macro USE_2X will be defined. Its value is set to 1 if the desired BAUD rate within the given tolerance could only be achieved by setting the U2X bit in the UART configuration. It will be defined to 0 if U2X is not needed. +.PP +Example usage: +.PP +.PP +.nf + #include + + #define F_CPU 4000000 + + static void + uart_9600(void) + { + #define BAUD 9600 + #include + UBRRH = UBRRH_VALUE; + UBRRL = UBRRL_VALUE; + #if USE_2X + UCSRA |= (1 << U2X); + #else + UCSRA &= ~(1 << U2X); + #endif + } + + static void + uart_38400(void) + { + #undef BAUD // avoid compiler warning + #define BAUD 38400 + #include + UBRRH = UBRRH_VALUE; + UBRRL = UBRRL_VALUE; + #if USE_2X + UCSRA |= (1 << U2X); + #else + UCSRA &= ~(1 << U2X); + #endif + } +.fi +.PP +.PP +In this example, two functions are defined to setup the UART to run at 9600 Bd, and 38400 Bd, respectively. Using a CPU clock of 4 MHz, 9600 Bd can be achieved with an acceptable tolerance without setting U2X (prescaler 25), while 38400 Bd require U2X to be set (prescaler 12). +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBAUD_TOL\fP 2" +.br +.ti -1c +.RI "#define \fBUBRR_VALUE\fP" +.br +.ti -1c +.RI "#define \fBUBRRL_VALUE\fP" +.br +.ti -1c +.RI "#define \fBUBRRH_VALUE\fP" +.br +.ti -1c +.RI "#define \fBUSE_2X\fP 0" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define BAUD_TOL 2" +.PP +Input and output macro for <\fButil/setbaud.h\fP> +.PP +Define the acceptable baud rate tolerance in percent. If not set on entry, it will be set to its default value of 2. +.SS "#define UBRR_VALUE" +.PP +Output macro from <\fButil/setbaud.h\fP> +.PP +Contains the calculated baud rate prescaler value for the UBRR register. +.SS "#define UBRRH_VALUE" +.PP +Output macro from <\fButil/setbaud.h\fP> +.PP +Contains the upper byte of the calculated prescaler value (UBRR_VALUE). +.SS "#define UBRRL_VALUE" +.PP +Output macro from <\fButil/setbaud.h\fP> +.PP +Contains the lower byte of the calculated prescaler value (UBRR_VALUE). +.SS "#define USE_2X 0" +.PP +Output bacro from <\fButil/setbaud.h\fP> +.PP +Contains the value 1 if the desired baud rate tolerance could only be achieved by setting the U2X bit in the UART configuration. Contains 0 otherwise. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_twi.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_twi.3 new file mode 100644 index 0000000..ce50f27 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_twi.3 @@ -0,0 +1,231 @@ +.TH ": TWI bit mask definitions" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +: TWI bit mask definitions \- +.SH "Detailed Description" +.PP +.PP +.nf + #include +.fi +.PP +.PP +This header file contains bit mask definitions for use with the AVR TWI interface. +.PP +.SS "TWSR values" +Mnemonics: +.br +TW_MT_xxx - master transmitter +.br +TW_MR_xxx - master receiver +.br +TW_ST_xxx - slave transmitter +.br +TW_SR_xxx - slave receiver +.in +1c +.ti -1c +.RI "#define \fBTW_START\fP 0x08" +.br +.ti -1c +.RI "#define \fBTW_REP_START\fP 0x10" +.br +.ti -1c +.RI "#define \fBTW_MT_SLA_ACK\fP 0x18" +.br +.ti -1c +.RI "#define \fBTW_MT_SLA_NACK\fP 0x20" +.br +.ti -1c +.RI "#define \fBTW_MT_DATA_ACK\fP 0x28" +.br +.ti -1c +.RI "#define \fBTW_MT_DATA_NACK\fP 0x30" +.br +.ti -1c +.RI "#define \fBTW_MT_ARB_LOST\fP 0x38" +.br +.ti -1c +.RI "#define \fBTW_MR_ARB_LOST\fP 0x38" +.br +.ti -1c +.RI "#define \fBTW_MR_SLA_ACK\fP 0x40" +.br +.ti -1c +.RI "#define \fBTW_MR_SLA_NACK\fP 0x48" +.br +.ti -1c +.RI "#define \fBTW_MR_DATA_ACK\fP 0x50" +.br +.ti -1c +.RI "#define \fBTW_MR_DATA_NACK\fP 0x58" +.br +.ti -1c +.RI "#define \fBTW_ST_SLA_ACK\fP 0xA8" +.br +.ti -1c +.RI "#define \fBTW_ST_ARB_LOST_SLA_ACK\fP 0xB0" +.br +.ti -1c +.RI "#define \fBTW_ST_DATA_ACK\fP 0xB8" +.br +.ti -1c +.RI "#define \fBTW_ST_DATA_NACK\fP 0xC0" +.br +.ti -1c +.RI "#define \fBTW_ST_LAST_DATA\fP 0xC8" +.br +.ti -1c +.RI "#define \fBTW_SR_SLA_ACK\fP 0x60" +.br +.ti -1c +.RI "#define \fBTW_SR_ARB_LOST_SLA_ACK\fP 0x68" +.br +.ti -1c +.RI "#define \fBTW_SR_GCALL_ACK\fP 0x70" +.br +.ti -1c +.RI "#define \fBTW_SR_ARB_LOST_GCALL_ACK\fP 0x78" +.br +.ti -1c +.RI "#define \fBTW_SR_DATA_ACK\fP 0x80" +.br +.ti -1c +.RI "#define \fBTW_SR_DATA_NACK\fP 0x88" +.br +.ti -1c +.RI "#define \fBTW_SR_GCALL_DATA_ACK\fP 0x90" +.br +.ti -1c +.RI "#define \fBTW_SR_GCALL_DATA_NACK\fP 0x98" +.br +.ti -1c +.RI "#define \fBTW_SR_STOP\fP 0xA0" +.br +.ti -1c +.RI "#define \fBTW_NO_INFO\fP 0xF8" +.br +.ti -1c +.RI "#define \fBTW_BUS_ERROR\fP 0x00" +.br +.ti -1c +.RI "#define \fBTW_STATUS_MASK\fP" +.br +.ti -1c +.RI "#define \fBTW_STATUS\fP (TWSR & TW_STATUS_MASK)" +.br +.in -1c +.SS "R/~W bit in SLA+R/W address field." + +.in +1c +.ti -1c +.RI "#define \fBTW_READ\fP 1" +.br +.ti -1c +.RI "#define \fBTW_WRITE\fP 0" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define TW_BUS_ERROR 0x00" +.PP +illegal start or stop condition +.SS "#define TW_MR_ARB_LOST 0x38" +.PP +arbitration lost in SLA+R or NACK +.SS "#define TW_MR_DATA_ACK 0x50" +.PP +data received, ACK returned +.SS "#define TW_MR_DATA_NACK 0x58" +.PP +data received, NACK returned +.SS "#define TW_MR_SLA_ACK 0x40" +.PP +SLA+R transmitted, ACK received +.SS "#define TW_MR_SLA_NACK 0x48" +.PP +SLA+R transmitted, NACK received +.SS "#define TW_MT_ARB_LOST 0x38" +.PP +arbitration lost in SLA+W or data +.SS "#define TW_MT_DATA_ACK 0x28" +.PP +data transmitted, ACK received +.SS "#define TW_MT_DATA_NACK 0x30" +.PP +data transmitted, NACK received +.SS "#define TW_MT_SLA_ACK 0x18" +.PP +SLA+W transmitted, ACK received +.SS "#define TW_MT_SLA_NACK 0x20" +.PP +SLA+W transmitted, NACK received +.SS "#define TW_NO_INFO 0xF8" +.PP +no state information available +.SS "#define TW_READ 1" +.PP +SLA+R address +.SS "#define TW_REP_START 0x10" +.PP +repeated start condition transmitted +.SS "#define TW_SR_ARB_LOST_GCALL_ACK 0x78" +.PP +arbitration lost in SLA+RW, general call received, ACK returned +.SS "#define TW_SR_ARB_LOST_SLA_ACK 0x68" +.PP +arbitration lost in SLA+RW, SLA+W received, ACK returned +.SS "#define TW_SR_DATA_ACK 0x80" +.PP +data received, ACK returned +.SS "#define TW_SR_DATA_NACK 0x88" +.PP +data received, NACK returned +.SS "#define TW_SR_GCALL_ACK 0x70" +.PP +general call received, ACK returned +.SS "#define TW_SR_GCALL_DATA_ACK 0x90" +.PP +general call data received, ACK returned +.SS "#define TW_SR_GCALL_DATA_NACK 0x98" +.PP +general call data received, NACK returned +.SS "#define TW_SR_SLA_ACK 0x60" +.PP +SLA+W received, ACK returned +.SS "#define TW_SR_STOP 0xA0" +.PP +stop or repeated start condition received while selected +.SS "#define TW_ST_ARB_LOST_SLA_ACK 0xB0" +.PP +arbitration lost in SLA+RW, SLA+R received, ACK returned +.SS "#define TW_ST_DATA_ACK 0xB8" +.PP +data transmitted, ACK received +.SS "#define TW_ST_DATA_NACK 0xC0" +.PP +data transmitted, NACK received +.SS "#define TW_ST_LAST_DATA 0xC8" +.PP +last data byte transmitted, ACK received +.SS "#define TW_ST_SLA_ACK 0xA8" +.PP +SLA+R received, ACK returned +.SS "#define TW_START 0x08" +.PP +start condition transmitted +.SS "#define TW_STATUS (TWSR & TW_STATUS_MASK)" +.PP +TWSR, masked by TW_STATUS_MASK +.SS "#define TW_STATUS_MASK" +.PP +\fBValue:\fP +.PP +.nf +(_BV(TWS7)|_BV(TWS6)|_BV(TWS5)|_BV(TWS4)|\ + _BV(TWS3)) +.fi +The lower 3 bits of TWSR are reserved on the ATmega163. The 2 LSB carry the prescaler bits on the newer ATmegas. +.SS "#define TW_WRITE 0" +.PP +SLA+W address diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_twi.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_twi.h.3 new file mode 100644 index 0000000..7565200 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/util_twi.h.3 @@ -0,0 +1,142 @@ +.TH "twi.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +twi.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fB_UTIL_TWI_H_\fP 1" +.br +.in -1c +.PP +.RI "\fBTWSR values\fP" +.br +Mnemonics: +.br +TW_MT_xxx - master transmitter +.br +TW_MR_xxx - master receiver +.br +TW_ST_xxx - slave transmitter +.br +TW_SR_xxx - slave receiver +.PP +.in +1c +.in +1c +.ti -1c +.RI "#define \fBTW_START\fP 0x08" +.br +.ti -1c +.RI "#define \fBTW_REP_START\fP 0x10" +.br +.ti -1c +.RI "#define \fBTW_MT_SLA_ACK\fP 0x18" +.br +.ti -1c +.RI "#define \fBTW_MT_SLA_NACK\fP 0x20" +.br +.ti -1c +.RI "#define \fBTW_MT_DATA_ACK\fP 0x28" +.br +.ti -1c +.RI "#define \fBTW_MT_DATA_NACK\fP 0x30" +.br +.ti -1c +.RI "#define \fBTW_MT_ARB_LOST\fP 0x38" +.br +.ti -1c +.RI "#define \fBTW_MR_ARB_LOST\fP 0x38" +.br +.ti -1c +.RI "#define \fBTW_MR_SLA_ACK\fP 0x40" +.br +.ti -1c +.RI "#define \fBTW_MR_SLA_NACK\fP 0x48" +.br +.ti -1c +.RI "#define \fBTW_MR_DATA_ACK\fP 0x50" +.br +.ti -1c +.RI "#define \fBTW_MR_DATA_NACK\fP 0x58" +.br +.ti -1c +.RI "#define \fBTW_ST_SLA_ACK\fP 0xA8" +.br +.ti -1c +.RI "#define \fBTW_ST_ARB_LOST_SLA_ACK\fP 0xB0" +.br +.ti -1c +.RI "#define \fBTW_ST_DATA_ACK\fP 0xB8" +.br +.ti -1c +.RI "#define \fBTW_ST_DATA_NACK\fP 0xC0" +.br +.ti -1c +.RI "#define \fBTW_ST_LAST_DATA\fP 0xC8" +.br +.ti -1c +.RI "#define \fBTW_SR_SLA_ACK\fP 0x60" +.br +.ti -1c +.RI "#define \fBTW_SR_ARB_LOST_SLA_ACK\fP 0x68" +.br +.ti -1c +.RI "#define \fBTW_SR_GCALL_ACK\fP 0x70" +.br +.ti -1c +.RI "#define \fBTW_SR_ARB_LOST_GCALL_ACK\fP 0x78" +.br +.ti -1c +.RI "#define \fBTW_SR_DATA_ACK\fP 0x80" +.br +.ti -1c +.RI "#define \fBTW_SR_DATA_NACK\fP 0x88" +.br +.ti -1c +.RI "#define \fBTW_SR_GCALL_DATA_ACK\fP 0x90" +.br +.ti -1c +.RI "#define \fBTW_SR_GCALL_DATA_NACK\fP 0x98" +.br +.ti -1c +.RI "#define \fBTW_SR_STOP\fP 0xA0" +.br +.ti -1c +.RI "#define \fBTW_NO_INFO\fP 0xF8" +.br +.ti -1c +.RI "#define \fBTW_BUS_ERROR\fP 0x00" +.br +.ti -1c +.RI "#define \fBTW_STATUS_MASK\fP" +.br +.ti -1c +.RI "#define \fBTW_STATUS\fP (TWSR & TW_STATUS_MASK)" +.br +.in -1c +.in -1c +.PP +.RI "\fBR/~W bit in SLA+R/W address field.\fP" +.br + +.in +1c +.in +1c +.ti -1c +.RI "#define \fBTW_READ\fP 1" +.br +.ti -1c +.RI "#define \fBTW_WRITE\fP 0" +.br +.in -1c +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/utoa.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/utoa.3 new file mode 100644 index 0000000..9f50170 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/utoa.3 @@ -0,0 +1 @@ +.so man3/avr_stdlib.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfprintf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfprintf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfprintf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfprintf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfprintf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfprintf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfscanf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfscanf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfscanf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfscanf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfscanf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vfscanf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vprintf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vprintf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vprintf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vscanf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vscanf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vscanf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsnprintf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsnprintf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsnprintf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsnprintf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsnprintf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsnprintf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsprintf.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsprintf.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsprintf.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsprintf_P.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsprintf_P.3 new file mode 100644 index 0000000..e669383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/vsprintf_P.3 @@ -0,0 +1 @@ +.so man3/avr_stdio.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt.h.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt.h.3 new file mode 100644 index 0000000..21d701e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt.h.3 @@ -0,0 +1,66 @@ +.TH "wdt.h" 3 "4 Dec 2008" "Version 1.6.4" "avr-libc" \" -*- nroff -*- +.ad l +.nh +.SH NAME +wdt.h \- +.SH "Detailed Description" +.PP + +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBwdt_reset\fP() __asm__ __volatile__ ('wdr')" +.br +.ti -1c +.RI "#define \fB_WD_PS3_MASK\fP 0x00" +.br +.ti -1c +.RI "#define \fB_WD_CONTROL_REG\fP WDTCR" +.br +.ti -1c +.RI "#define \fB_WD_CHANGE_BIT\fP WDCE" +.br +.ti -1c +.RI "#define \fBwdt_enable\fP(value)" +.br +.ti -1c +.RI "#define \fBwdt_disable\fP()" +.br +.ti -1c +.RI "#define \fBWDTO_15MS\fP 0" +.br +.ti -1c +.RI "#define \fBWDTO_30MS\fP 1" +.br +.ti -1c +.RI "#define \fBWDTO_60MS\fP 2" +.br +.ti -1c +.RI "#define \fBWDTO_120MS\fP 3" +.br +.ti -1c +.RI "#define \fBWDTO_250MS\fP 4" +.br +.ti -1c +.RI "#define \fBWDTO_500MS\fP 5" +.br +.ti -1c +.RI "#define \fBWDTO_1S\fP 6" +.br +.ti -1c +.RI "#define \fBWDTO_2S\fP 7" +.br +.ti -1c +.RI "#define \fBWDTO_4S\fP 8" +.br +.ti -1c +.RI "#define \fBWDTO_8S\fP 9" +.br +.in -1c +.SH "Author" +.PP +Generated automatically by Doxygen for avr-libc from the source code. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_disable.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_disable.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_disable.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_enable.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_enable.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_enable.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_reset.3 b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_reset.3 new file mode 100644 index 0000000..bc070f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/avr-libc/man/man3/wdt_reset.3 @@ -0,0 +1 @@ +.so man3/avr_watchdog.3 diff --git a/arduino-0018-windows/hardware/tools/avr/doc/avrdude/avrdude.pdf b/arduino-0018-windows/hardware/tools/avr/doc/avrdude/avrdude.pdf new file mode 100644 index 0000000..8d780b3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/avrdude/avrdude.pdf differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ABORT-_0028COFF_0029.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ABORT-_0028COFF_0029.html new file mode 100644 index 0000000..5eb0c45 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ABORT-_0028COFF_0029.html @@ -0,0 +1,53 @@ + + +ABORT (COFF) - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Abort, +Up: Pseudo Ops +



+
+ +

7.2 .ABORT (COFF)

+ +

When producing COFF output, as accepts this directive as a +synonym for .abort. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Directives.html new file mode 100644 index 0000000..043cbe8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Directives.html @@ -0,0 +1,201 @@ + + +ARC Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ARC Floating Point, +Up: ARC-Dependent +



+
+ +

9.2.4 ARC Machine Directives

+ +

The ARC version of as supports the following additional +machine directives: + + + +

.2byte expressions
*TODO* + +


.3byte expressions
*TODO* + +


.4byte expressions
*TODO* + +


.extAuxRegister name,address,mode
The ARCtangent A4 has extensible auxiliary register space. The +auxiliary registers can be defined in the assembler source code by +using this directive. The first parameter is the name of the +new auxiallry register. The second parameter is the address of +the register in the auxiliary register memory map for the variant of +the ARC. The third parameter specifies the mode in which the +register can be operated is and it can be one of: + +
+
r (readonly)
w (write only)
r|w (read or write)
+ +

For example: + +

            .extAuxRegister mulhi,0x12,w
+     
+

This specifies an extension auxiliary register called mulhi +which is at address 0x12 in the memory space and which is only +writable. + +


.extCondCode suffix,value
The condition codes on the ARCtangent A4 are extensible and can be +specified by means of this assembler directive. They are specified +by the suffix and the value for the condition code. They can be used to +specify extra condition codes with any values. For example: + +
            .extCondCode is_busy,0x14
+          
+             add.is_busy  r1,r2,r3
+             bis_busy     _main
+     
+


.extCoreRegister name,regnum,mode,shortcut
Specifies an extension core register name for the application. +This allows a register name with a valid regnum between 0 +and 60, with the following as valid values for mode + +
+
r (readonly)
w (write only)
r|w (read or write)
+ +

The other parameter gives a description of the register having a +shortcut in the pipeline. The valid values are: + +

+
can_shortcut
cannot_shortcut
+ +

For example: + +

            .extCoreRegister mlo,57,r,can_shortcut
+     
+

This defines an extension core register mlo with the value 57 which +can shortcut the pipeline. + +


.extInstruction name,opcode,subopcode,suffixclass,syntaxclass
The ARCtangent A4 allows the user to specify extension instructions. +The extension instructions are not macros. The assembler creates +encodings for use of these instructions according to the specification +by the user. The parameters are: + +
+
name
Name of the extension instruction + +
opcode
Opcode to be used. (Bits 27:31 in the encoding). Valid values +0x10-0x1f or 0x03 + +
subopcode
Subopcode to be used. Valid values are from 0x09-0x3f. However the +correct value also depends on syntaxclass + +
suffixclass
Determines the kinds of suffixes to be allowed. Valid values are +SUFFIX_NONE, SUFFIX_COND, +SUFFIX_FLAG which indicates the absence or presence of +conditional suffixes and flag setting by the extension instruction. +It is also possible to specify that an instruction sets the flags and +is conditional by using SUFFIX_CODE | SUFFIX_FLAG. + +
syntaxclass
Determines the syntax class for the instruction. It can have the +following values: + +
+
SYNTAX_2OP:
2 Operand Instruction +
SYNTAX_3OP:
3 Operand Instruction +
+ +

In addition there could be modifiers for the syntax class as described +below: + +

    +Syntax Class Modifiers are: + +
  • OP1_MUST_BE_IMM: +Modifies syntax class SYNTAX_3OP, specifying that the first operand +of a three-operand instruction must be an immediate (i.e., the result +is discarded). OP1_MUST_BE_IMM is used by bitwise ORing it with +SYNTAX_3OP as given in the example below. This could usually be used +to set the flags using specific instructions and not retain results. + +
  • OP1_IMM_IMPLIED: +Modifies syntax class SYNTAX_20P, it specifies that there is an +implied immediate destination operand which does not appear in the +syntax. For example, if the source code contains an instruction like: + +
                        inst r1,r2
    +               
    +

    it really means that the first argument is an implied immediate (that +is, the result is discarded). This is the same as though the source +code were: inst 0,r1,r2. You use OP1_IMM_IMPLIED by bitwise ORing it +with SYNTAX_20P. + +

+
+ +

For example, defining 64-bit multiplier with immediate operands: + +

          .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
+                          SYNTAX_3OP|OP1_MUST_BE_IMM
+     
+

The above specifies an extension instruction called mp64 which has 3 operands, +sets the flags, can be used with a condition code, for which the +first operand is an immediate. (Equivalent to discarding the result +of the operation). + +

           .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
+     
+

This describes a 2 operand instruction with an implicit first +immediate operand. The result of this operation would be discarded. + +


.half expressions
*TODO* + +


.long expressions
*TODO* + +


.option arc|arc5|arc6|arc7|arc8
The .option directive must be followed by the desired core +version. Again arc is an alias for +arc6. + +

Note: the .option directive overrides the command line option +-marc; a warning is emitted when the version is not consistent +between the two - even for the implicit default core version +(arc6). + +


.short expressions
*TODO* + +


.word expressions
*TODO* + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Floating-Point.html new file mode 100644 index 0000000..fafb81f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Floating-Point.html @@ -0,0 +1,54 @@ + + +ARC Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: ARC Syntax, +Up: ARC-Dependent +



+
+ +

9.2.3 Floating Point

+ +

The ARC core does not currently have hardware floating point +support. Software floating point support is provided by GCC +and uses ieee floating-point numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Opcodes.html new file mode 100644 index 0000000..a498a81 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Opcodes.html @@ -0,0 +1,56 @@ + + +ARC Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: ARC Directives, +Up: ARC-Dependent +



+
+ +

9.2.5 Opcodes

+ +

+For information on the ARC instruction set, see ARC Programmers +Reference Manual, ARC International (www.arc.com) + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Options.html new file mode 100644 index 0000000..8711550 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Options.html @@ -0,0 +1,83 @@ + + +ARC Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: ARC-Dependent +



+
+ +

9.2.1 Options

+ +

+ + +

-marc[5|6|7|8]
This option selects the core processor variant. Using +-marc is the same as -marc6, which +is also the default. + + + +
arc5
Base instruction set. + +


arc6
Jump-and-link (jl) instruction. No requirement of an instruction between +setting flags and conditional jump. For example: + +
                 mov.f r0,r1
+                 beq   foo
+          
+


arc7
Break (brk) and sleep (sleep) instructions. + +


arc8
Software interrupt (swi) instruction. + +
+ +

Note: the .option directive can to be used to select a core +variant from within assembly code. + +


-EB
This option specifies that the output generated by the assembler should +be marked as being encoded for a big-endian processor. + +


-EL
This option specifies that the output generated by the assembler should +be marked as being encoded for a little-endian processor - this is the +default. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Syntax.html new file mode 100644 index 0000000..6a7ab63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC-Syntax.html @@ -0,0 +1,55 @@ + + +ARC Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: ARC Options, +Up: ARC-Dependent +



+
+ +

9.2.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dChars.html new file mode 100644 index 0000000..10403f8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dChars.html @@ -0,0 +1,50 @@ + + +ARC-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: ARC Syntax +



+
+ +
9.2.2.1 Special Characters
+ +

*TODO* + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dDependent.html new file mode 100644 index 0000000..d96919a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dDependent.html @@ -0,0 +1,60 @@ + + +ARC-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Alpha-Dependent, +Up: Machine Dependencies +



+
+ +

9.2 ARC Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dRegs.html new file mode 100644 index 0000000..04719ea --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARC_002dRegs.html @@ -0,0 +1,50 @@ + + +ARC-Regs - Using as + + + + + + + + + + + + +
+

+Previous: ARC-Chars, +Up: ARC Syntax +



+
+ +
9.2.2.2 Register Names
+ +

*TODO* + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Directives.html new file mode 100644 index 0000000..4603fde --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Directives.html @@ -0,0 +1,251 @@ + + +ARM Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ARM Floating Point, +Up: ARM-Dependent +



+
+ +

9.3.4 ARM Machine Directives

+ +

+ + +

.align expression [, expression]
This is the generic .align directive. For the ARM however if the +first argument is zero (ie no alignment is needed) the assembler will +behave as if the argument had been 2 (ie pad to the next four byte +boundary). This is for compatibility with ARM's own assembler. + +


name .req register name
This creates an alias for register name called name. For +example: + +
                  foo .req r0
+     
+


.unreq alias-name
This undefines a register alias which was previously defined using the +req, dn or qn directives. For example: + +
                  foo .req r0
+                  .unreq foo
+     
+

An error occurs if the name is undefined. Note - this pseudo op can +be used to delete builtin in register name aliases (eg 'r0'). This +should only be done if it is really necessary. + +


name .dn register name [.type] [[index]]
name .qn register name [.type] [[index]]
+The dn and qn directives are used to create typed +and/or indexed register aliases for use in Advanced SIMD Extension +(Neon) instructions. The former should be used to create aliases +of double-precision registers, and the latter to create aliases of +quad-precision registers. + +

If these directives are used to create typed aliases, those aliases can +be used in Neon instructions instead of writing types after the mnemonic +or after each operand. For example: + +

                  x .dn d2.f32
+                  y .dn d3.f32
+                  z .dn d4.f32[1]
+                  vmul x,y,z
+     
+

This is equivalent to writing the following: + +

                  vmul.f32 d2,d3,d4[1]
+     
+

Aliases created using dn or qn can be destroyed using +unreq. + +


.code [16|32]
This directive selects the instruction set being generated. The value 16 +selects Thumb, with the value 32 selecting ARM. + +


.thumb
This performs the same action as .code 16. + +


.arm
This performs the same action as .code 32. + +


.force_thumb
This directive forces the selection of Thumb instructions, even if the +target processor does not support those instructions + +


.thumb_func
This directive specifies that the following symbol is the name of a +Thumb encoded function. This information is necessary in order to allow +the assembler and linker to generate correct code for interworking +between Arm and Thumb instructions and should be used even if +interworking is not going to be performed. The presence of this +directive also implies .thumb + +

This directive is not neccessary when generating EABI objects. On these +targets the encoding is implicit when generating Thumb code. + +


.thumb_set
This performs the equivalent of a .set directive in that it +creates a symbol which is an alias for another symbol (possibly not yet +defined). This directive also has the added property in that it marks +the aliased symbol as being a thumb function entry point, in the same +way that the .thumb_func directive does. + +


.ltorg
This directive causes the current contents of the literal pool to be +dumped into the current section (which is assumed to be the .text +section) at the current location (aligned to a word boundary). +GAS maintains a separate literal pool for each section and each +sub-section. The .ltorg directive will only affect the literal +pool of the current section and sub-section. At the end of assembly +all remaining, un-empty literal pools will automatically be dumped. + +

Note - older versions of GAS would dump the current literal +pool any time a section change occurred. This is no longer done, since +it prevents accurate control of the placement of literal pools. + +


.pool
This is a synonym for .ltorg. + +

+

.fnstart
Marks the start of a function with an unwind table entry. + +

+

.fnend
Marks the end of a function with an unwind table entry. The unwind index +table entry is created when this directive is processed. + +

If no personality routine has been specified then standard personality +routine 0 or 1 will be used, depending on the number of unwind opcodes +required. + +


.cantunwind
Prevents unwinding through the current function. No personality routine +or exception table data is required or permitted. + +


.personality name
Sets the personality routine for the current function to name. + +


.personalityindex index
Sets the personality routine for the current function to the EABI standard +routine number index + +


.handlerdata
Marks the end of the current function, and the start of the exception table +entry for that function. Anything between this directive and the +.fnend directive will be added to the exception table entry. + +

Must be preceded by a .personality or .personalityindex +directive. + +

+

.save reglist
Generate unwinder annotations to restore the registers in reglist. +The format of reglist is the same as the corresponding store-multiple +instruction. + +
     
core registers
+ .save {r4, r5, r6, lr} + stmfd sp!, {r4, r5, r6, lr} +
FPA registers
+ .save f4, 2 + sfmfd f4, 2, [sp]! +
VFP registers
+ .save {d8, d9, d10} + fstmdx sp!, {d8, d9, d10} +
iWMMXt registers
+ .save {wr10, wr11} + wstrd wr11, [sp, #-8]! + wstrd wr10, [sp, #-8]! + or + .save wr11 + wstrd wr11, [sp, #-8]! + .save wr10 + wstrd wr10, [sp, #-8]! +
+


.vsave vfp-reglist
Generate unwinder annotations to restore the VFP registers in vfp-reglist +using FLDMD. Also works for VFPv3 registers +that are to be restored using VLDM. +The format of vfp-reglist is the same as the corresponding store-multiple +instruction. + +
     
VFP registers
+ .vsave {d8, d9, d10} + fstmdd sp!, {d8, d9, d10} +
VFPv3 registers
+ .vsave {d15, d16, d17} + vstm sp!, {d15, d16, d17} +
+

Since FLDMX and FSTMX are now deprecated, this directive should be +used in favour of .save for saving VFP registers for ARMv6 and above. + +

+

.pad #count
Generate unwinder annotations for a stack adjustment of count bytes. +A positive value indicates the function prologue allocated stack space by +decrementing the stack pointer. + +

+

.movsp reg [, #offset]
Tell the unwinder that reg contains an offset from the current +stack pointer. If offset is not specified then it is assumed to be +zero. + +

+

.setfp fpreg, spreg [, #offset]
Make all unwinder annotations relaive to a frame pointer. Without this +the unwinder will use offsets from the stack pointer. + +

The syntax of this directive is the same as the sub or mov +instruction used to set the frame pointer. spreg must be either +sp or mentioned in a previous .movsp directive. + +

          .movsp ip
+          mov ip, sp
+          ...
+          .setfp fp, ip, #4
+          sub fp, ip, #4
+     
+


.raw offset, byte1, ...
Insert one of more arbitary unwind opcode bytes, which are known to adjust +the stack pointer by offset bytes. + +

For example .unwind_raw 4, 0xb1, 0x01 is equivalent to +.save {r0} + +


.cpu name
Select the target processor. Valid values for name are the same as +for the -mcpu commandline option. + +


.arch name
Select the target architecture. Valid values for name are the same as +for the -march commandline option. + +


.object_arch name
Override the architecture recorded in the EABI object attribute section. +Valid values for name are the same as for the .arch directive. +Typically this is useful when code uses runtime detection of CPU features. + +


.fpu name
Select the floating point unit to assemble for. Valid values for name +are the same as for the -mfpu commandline option. + +


.eabi_attribute tag, value
Set the EABI object attribute number tag to value. The value +is either a number, "string", or number, "string" +depending on the tag. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Floating-Point.html new file mode 100644 index 0000000..bf019a5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Floating-Point.html @@ -0,0 +1,52 @@ + + +ARM Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: ARM Syntax, +Up: ARM-Dependent +



+
+ +

9.3.3 Floating Point

+ +

The ARM family uses ieee floating-point numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Mapping-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Mapping-Symbols.html new file mode 100644 index 0000000..cf13b3c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Mapping-Symbols.html @@ -0,0 +1,70 @@ + + +ARM Mapping Symbols - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ARM Opcodes, +Up: ARM-Dependent +



+
+ +

9.3.6 Mapping Symbols

+ +

The ARM ELF specification requires that special symbols be inserted +into object files to mark certain features: + + + +

$a
At the start of a region of code containing ARM instructions. + +


$t
At the start of a region of code containing THUMB instructions. + +


$d
At the start of a region of data. + +
+ +

The assembler will automatically insert these symbols for you - there +is no need to code them yourself. Support for tagging symbols ($b, +$f, $p and $m) which is also mentioned in the current ARM ELF +specification is not implemented. This is because they have been +dropped from the new EABI and so tools cannot rely upon their +presence. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Opcodes.html new file mode 100644 index 0000000..d1e1a9c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Opcodes.html @@ -0,0 +1,100 @@ + + +ARM Opcodes - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ARM Directives, +Up: ARM-Dependent +



+
+ +

9.3.5 Opcodes

+ +

as implements all the standard ARM opcodes. It also +implements several pseudo opcodes, including several synthetic load +instructions. + + + +

NOP
+
            nop
+     
+

This pseudo op will always evaluate to a legal ARM instruction that does +nothing. Currently it will evaluate to MOV r0, r0. + +


LDR
+
            ldr <register> , = <expression>
+     
+

If expression evaluates to a numeric constant then a MOV or MVN +instruction will be used in place of the LDR instruction, if the +constant can be generated by either of these instructions. Otherwise +the constant will be placed into the nearest literal pool (if it not +already there) and a PC relative LDR instruction will be generated. + +


ADR
+
            adr <register> <label>
+     
+

This instruction will load the address of label into the indicated +register. The instruction will evaluate to a PC relative ADD or SUB +instruction depending upon where the label is located. If the label is +out of range, or if it is not defined in the same file (and section) as +the ADR instruction, then an error will be generated. This instruction +will not make use of the literal pool. + +


ADRL
+
            adrl <register> <label>
+     
+

This instruction will load the address of label into the indicated +register. The instruction will evaluate to one or two PC relative ADD +or SUB instructions depending upon where the label is located. If a +second instruction is not needed a NOP instruction will be generated in +its place, so that this instruction is always 8 bytes long. + +

If the label is out of range, or if it is not defined in the same file +(and section) as the ADRL instruction, then an error will be generated. +This instruction will not make use of the literal pool. + +

+ +

For information on the ARM or Thumb instruction sets, see ARM +Software Development Toolkit Reference Manual, Advanced RISC Machines +Ltd. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Options.html new file mode 100644 index 0000000..1b25dd1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Options.html @@ -0,0 +1,280 @@ + + +ARM Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: ARM-Dependent +



+
+ +

9.3.1 Options

+ +

+ + +

-mcpu=processor[+extension...]
This option specifies the target processor. The assembler will issue an +error message if an attempt is made to assemble an instruction which +will not execute on the target processor. The following processor names are +recognized: +arm1, +arm2, +arm250, +arm3, +arm6, +arm60, +arm600, +arm610, +arm620, +arm7, +arm7m, +arm7d, +arm7dm, +arm7di, +arm7dmi, +arm70, +arm700, +arm700i, +arm710, +arm710t, +arm720, +arm720t, +arm740t, +arm710c, +arm7100, +arm7500, +arm7500fe, +arm7t, +arm7tdmi, +arm7tdmi-s, +arm8, +arm810, +strongarm, +strongarm1, +strongarm110, +strongarm1100, +strongarm1110, +arm9, +arm920, +arm920t, +arm922t, +arm940t, +arm9tdmi, +fa526 (Faraday FA526 processor), +fa626 (Faraday FA626 processor), +arm9e, +arm926e, +arm926ej-s, +arm946e-r0, +arm946e, +arm946e-s, +arm966e-r0, +arm966e, +arm966e-s, +arm968e-s, +arm10t, +arm10tdmi, +arm10e, +arm1020, +arm1020t, +arm1020e, +arm1022e, +arm1026ej-s, +fa626te (Faraday FA626TE processor), +fa726te (Faraday FA726TE processor), +arm1136j-s, +arm1136jf-s, +arm1156t2-s, +arm1156t2f-s, +arm1176jz-s, +arm1176jzf-s, +mpcore, +mpcorenovfp, +cortex-a8, +cortex-a9, +cortex-r4, +cortex-m3, +ep9312 (ARM920 with Cirrus Maverick coprocessor), +i80200 (Intel XScale processor) +iwmmxt (Intel(r) XScale processor with Wireless MMX(tm) technology coprocessor) +and +xscale. +The special name all may be used to allow the +assembler to accept instructions valid for any ARM processor. + +

In addition to the basic instruction set, the assembler can be told to +accept various extension mnemonics that extend the processor using the +co-processor instruction space. For example, -mcpu=arm920+maverick +is equivalent to specifying -mcpu=ep9312. The following extensions +are currently supported: ++maverick ++iwmmxt +and ++xscale. + +


-march=architecture[+extension...]
This option specifies the target architecture. The assembler will issue +an error message if an attempt is made to assemble an instruction which +will not execute on the target architecture. The following architecture +names are recognized: +armv1, +armv2, +armv2a, +armv2s, +armv3, +armv3m, +armv4, +armv4xm, +armv4t, +armv4txm, +armv5, +armv5t, +armv5txm, +armv5te, +armv5texp, +armv6, +armv6j, +armv6k, +armv6z, +armv6zk, +armv7, +armv7-a, +armv7-r, +armv7-m, +iwmmxt +and +xscale. +If both -mcpu and +-march are specified, the assembler will use +the setting for -mcpu. + +

The architecture option can be extended with the same instruction set +extension options as the -mcpu option. + +


-mfpu=floating-point-format
+This option specifies the floating point format to assemble for. The +assembler will issue an error message if an attempt is made to assemble +an instruction which will not execute on the target floating point unit. +The following format options are recognized: +softfpa, +fpe, +fpe2, +fpe3, +fpa, +fpa10, +fpa11, +arm7500fe, +softvfp, +softvfp+vfp, +vfp, +vfp10, +vfp10-r0, +vfp9, +vfpxd, +vfpv2 +vfpv3 +vfpv3-d16 +arm1020t, +arm1020e, +arm1136jf-s, +maverick +and +neon. + +

In addition to determining which instructions are assembled, this option +also affects the way in which the .double assembler directive behaves +when assembling little-endian code. + +

The default is dependent on the processor selected. For Architecture 5 or +later, the default is to assembler for VFP instructions; for earlier +architectures the default is to assemble for FPA instructions. + +


-mthumb
This option specifies that the assembler should start assembling Thumb +instructions; that is, it should behave as though the file starts with a +.code 16 directive. + +


-mthumb-interwork
This option specifies that the output generated by the assembler should +be marked as supporting interworking. + +


-mapcs [26|32]
This option specifies that the output generated by the assembler should +be marked as supporting the indicated version of the Arm Procedure. +Calling Standard. + +


-matpcs
This option specifies that the output generated by the assembler should +be marked as supporting the Arm/Thumb Procedure Calling Standard. If +enabled this option will cause the assembler to create an empty +debugging section in the object file called .arm.atpcs. Debuggers can +use this to determine the ABI being used by. + +


-mapcs-float
This indicates the floating point variant of the APCS should be +used. In this variant floating point arguments are passed in FP +registers rather than integer registers. + +


-mapcs-reentrant
This indicates that the reentrant variant of the APCS should be used. +This variant supports position independent code. + +


-mfloat-abi=abi
This option specifies that the output generated by the assembler should be +marked as using specified floating point ABI. +The following values are recognized: +soft, +softfp +and +hard. + +


-meabi=ver
This option specifies which EABI version the produced object files should +conform to. +The following values are recognized: +gnu, +4 +and +5. + +


-EB
This option specifies that the output generated by the assembler should +be marked as being encoded for a big-endian processor. + +


-EL
This option specifies that the output generated by the assembler should +be marked as being encoded for a little-endian processor. + +


-k
This option specifies that the output of the assembler should be marked +as position-independent code (PIC). + +


--fix-v4bx
Allow BX instructions in ARMv4 code. This is intended for use with +the linker option of the same name. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Syntax.html new file mode 100644 index 0000000..83e978d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Syntax.html @@ -0,0 +1,56 @@ + + +ARM Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: ARM Options, +Up: ARM-Dependent +



+
+ +

9.3.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Unwinding-Tutorial.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Unwinding-Tutorial.html new file mode 100644 index 0000000..12e391b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM-Unwinding-Tutorial.html @@ -0,0 +1,196 @@ + + +ARM Unwinding Tutorial - Using as + + + + + + + + + + + + +
+

+Previous: ARM Mapping Symbols, +Up: ARM-Dependent +



+
+ +

9.3.7 Unwinding

+ +

The ABI for the ARM Architecture specifies a standard format for +exception unwind information. This information is used when an +exception is thrown to determine where control should be transferred. +In particular, the unwind information is used to determine which +function called the function that threw the exception, and which +function called that one, and so forth. This information is also used +to restore the values of callee-saved registers in the function +catching the exception. + +

If you are writing functions in assembly code, and those functions +call other functions that throw exceptions, you must use assembly +pseudo ops to ensure that appropriate exception unwind information is +generated. Otherwise, if one of the functions called by your assembly +code throws an exception, the run-time library will be unable to +unwind the stack through your assembly code and your program will not +behave correctly. + +

To illustrate the use of these pseudo ops, we will examine the code +that G++ generates for the following C++ input: + +

+void callee (int *);
+
+int 
+caller () 
+{
+  int i;
+  callee (&i);
+  return i; 
+}
+
+ +

This example does not show how to throw or catch an exception from +assembly code. That is a much more complex operation and should +always be done in a high-level language, such as C++, that directly +supports exceptions. + +

The code generated by one particular version of G++ when compiling the +example above is: + +

+_Z6callerv:
+	.fnstart
+.LFB2:
+	@ Function supports interworking.
+	@ args = 0, pretend = 0, frame = 8
+	@ frame_needed = 1, uses_anonymous_args = 0
+	stmfd	sp!, {fp, lr}
+	.save {fp, lr}
+.LCFI0:
+	.setfp fp, sp, #4
+	add	fp, sp, #4
+.LCFI1:
+	.pad #8
+	sub	sp, sp, #8
+.LCFI2:
+	sub	r3, fp, #8
+	mov	r0, r3
+	bl	_Z6calleePi
+	ldr	r3, [fp, #-8]
+	mov	r0, r3
+	sub	sp, fp, #4
+	ldmfd	sp!, {fp, lr}
+	bx	lr
+.LFE2:
+	.fnend
+
+ +

Of course, the sequence of instructions varies based on the options +you pass to GCC and on the version of GCC in use. The exact +instructions are not important since we are focusing on the pseudo ops +that are used to generate unwind information. + +

An important assumption made by the unwinder is that the stack frame +does not change during the body of the function. In particular, since +we assume that the assembly code does not itself throw an exception, +the only point where an exception can be thrown is from a call, such +as the bl instruction above. At each call site, the same saved +registers (including lr, which indicates the return address) +must be located in the same locations relative to the frame pointer. + +

The .fnstart (see .fnstart pseudo op) pseudo +op appears immediately before the first instruction of the function +while the .fnend (see .fnend pseudo op) pseudo +op appears immediately after the last instruction of the function. +These pseudo ops specify the range of the function. + +

Only the order of the other pseudos ops (e.g., .setfp or +.pad) matters; their exact locations are irrelevant. In the +example above, the compiler emits the pseudo ops with particular +instructions. That makes it easier to understand the code, but it is +not required for correctness. It would work just as well to emit all +of the pseudo ops other than .fnend in the same order, but +immediately after .fnstart. + +

The .save (see .save pseudo op) pseudo op +indicates registers that have been saved to the stack so that they can +be restored before the function returns. The argument to the +.save pseudo op is a list of registers to save. If a register +is “callee-saved” (as specified by the ABI) and is modified by the +function you are writing, then your code must save the value before it +is modified and restore the original value before the function +returns. If an exception is thrown, the run-time library restores the +values of these registers from their locations on the stack before +returning control to the exception handler. (Of course, if an +exception is not thrown, the function that contains the .save +pseudo op restores these registers in the function epilogue, as is +done with the ldmfd instruction above.) + +

You do not have to save callee-saved registers at the very beginning +of the function and you do not need to use the .save pseudo op +immediately following the point at which the registers are saved. +However, if you modify a callee-saved register, you must save it on +the stack before modifying it and before calling any functions which +might throw an exception. And, you must use the .save pseudo +op to indicate that you have done so. + +

The .pad (see .pad) pseudo op indicates a +modification of the stack pointer that does not save any registers. +The argument is the number of bytes (in decimal) that are subtracted +from the stack pointer. (On ARM CPUs, the stack grows downwards, so +subtracting from the stack pointer increases the size of the stack.) + +

The .setfp (see .setfp pseudo op) pseudo op +indicates the register that contains the frame pointer. The first +argument is the register that is set, which is typically fp. +The second argument indicates the register from which the frame +pointer takes its value. The third argument, if present, is the value +(in decimal) added to the register specified by the second argument to +compute the value of the frame pointer. You should not modify the +frame pointer in the body of the function. + +

If you do not use a frame pointer, then you should not use the +.setfp pseudo op. If you do not use a frame pointer, then you +should avoid modifying the stack pointer outside of the function +prologue. Otherwise, the run-time library will be unable to find +saved registers when it is unwinding the stack. + +

The pseudo ops described above are sufficient for writing assembly +code that calls functions which may throw exceptions. If you need to +know more about the object-file format used to represent unwind +information, you may consult the Exception Handling ABI for the +ARM Architecture available from http://infocenter.arm.com. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dChars.html new file mode 100644 index 0000000..d55e7f5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dChars.html @@ -0,0 +1,59 @@ + + +ARM-Chars - Using as + + + + + + + + + + + + +

+

+Next: , +Up: ARM Syntax +



+
+ +
9.3.2.1 Special Characters
+ +

The presence of a @ on a line indicates the start of a comment +that extends to the end of the current line. If a # appears as +the first character of a line, the whole line is treated as a comment. + +

The ; character can be used instead of a newline to separate +statements. + +

Either # or $ can be used to indicate immediate operands. + +

*TODO* Explain about /data modifier on symbols. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dDependent.html new file mode 100644 index 0000000..23a4d12 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dDependent.html @@ -0,0 +1,62 @@ + + +ARM-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ARC-Dependent, +Up: Machine Dependencies +



+
+ +

9.3 ARM Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dRegs.html new file mode 100644 index 0000000..4294c61 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dRegs.html @@ -0,0 +1,52 @@ + + +ARM-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: ARM-Chars, +Up: ARM Syntax +



+
+ +
9.3.2.2 Register Names
+ +

*TODO* Explain about ARM register naming, and the predefined names. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dRelocations.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dRelocations.html new file mode 100644 index 0000000..af67c4f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ARM_002dRelocations.html @@ -0,0 +1,79 @@ + + +ARM-Relocations - Using as + + + + + + + + + + + + +

+

+Previous: ARM-Regs, +Up: ARM Syntax +



+
+ +
9.3.3.1 ARM relocation generation
+ +

Specific data relocations can be generated by putting the relocation name +in parentheses after the symbol name. For example: + +

             .word foo(TARGET1)
+
+

This will generate an R_ARM_TARGET1 relocation against the symbol +foo. +The following relocations are supported: +GOT, +GOTOFF, +TARGET1, +TARGET2, +SBREL, +TLSGD, +TLSLDM, +TLSLDO, +GOTTPOFF +and +TPOFF. + +

For compatibility with older toolchains the assembler also accepts +(PLT) after branch targets. This will generate the deprecated +R_ARM_PLT32 relocation. + +

Relocations for MOVW and MOVT instructions can be generated +by prefixing the value with #:lower16: and #:upper16 +respectively. For example to load the 32-bit address of foo into r0: + +

             MOVW r0, #:lower16:foo
+             MOVT r0, #:upper16:foo
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AS-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AS-Index.html new file mode 100644 index 0000000..d786aa9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AS-Index.html @@ -0,0 +1,1935 @@ + + +AS Index - Using as + + + + + + + + + + + +
+

+Previous: GNU Free Documentation License, +Up: Top +



+
+ +

AS Index

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Opcodes.html new file mode 100644 index 0000000..7cbd7bc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Opcodes.html @@ -0,0 +1,197 @@ + + +AVR Opcodes - Using as + + + + + + + + + + + + +
+

+Previous: AVR Syntax, +Up: AVR-Dependent +



+
+ +

9.4.3 Opcodes

+ +

For detailed information on the AVR machine instruction set, see +www.atmel.com/products/AVR. + +

as implements all the standard AVR opcodes. +The following table summarizes the AVR opcodes, and their arguments. + +

     Legend:
+        r   any register
+        d   `ldi' register (r16-r31)
+        v   `movw' even register (r0, r2, ..., r28, r30)
+        a   `fmul' register (r16-r23)
+        w   `adiw' register (r24,r26,r28,r30)
+        e   pointer registers (X,Y,Z)
+        b   base pointer register and displacement ([YZ]+disp)
+        z   Z pointer register (for [e]lpm Rd,Z[+])
+        M   immediate value from 0 to 255
+        n   immediate value from 0 to 255 ( n = ~M ). Relocation impossible
+        s   immediate value from 0 to 7
+        P   Port address value from 0 to 63. (in, out)
+        p   Port address value from 0 to 31. (cbi, sbi, sbic, sbis)
+        K   immediate value from 0 to 63 (used in `adiw', `sbiw')
+        i   immediate value
+        l   signed pc relative offset from -64 to 63
+        L   signed pc relative offset from -2048 to 2047
+        h   absolute code address (call, jmp)
+        S   immediate value from 0 to 7 (S = s << 4)
+        ?   use this opcode entry if no parameters, else use next opcode entry
+     
+     1001010010001000   clc
+     1001010011011000   clh
+     1001010011111000   cli
+     1001010010101000   cln
+     1001010011001000   cls
+     1001010011101000   clt
+     1001010010111000   clv
+     1001010010011000   clz
+     1001010000001000   sec
+     1001010001011000   seh
+     1001010001111000   sei
+     1001010000101000   sen
+     1001010001001000   ses
+     1001010001101000   set
+     1001010000111000   sev
+     1001010000011000   sez
+     100101001SSS1000   bclr    S
+     100101000SSS1000   bset    S
+     1001010100001001   icall
+     1001010000001001   ijmp
+     1001010111001000   lpm     ?
+     1001000ddddd010+   lpm     r,z
+     1001010111011000   elpm    ?
+     1001000ddddd011+   elpm    r,z
+     0000000000000000   nop
+     1001010100001000   ret
+     1001010100011000   reti
+     1001010110001000   sleep
+     1001010110011000   break
+     1001010110101000   wdr
+     1001010111101000   spm
+     000111rdddddrrrr   adc     r,r
+     000011rdddddrrrr   add     r,r
+     001000rdddddrrrr   and     r,r
+     000101rdddddrrrr   cp      r,r
+     000001rdddddrrrr   cpc     r,r
+     000100rdddddrrrr   cpse    r,r
+     001001rdddddrrrr   eor     r,r
+     001011rdddddrrrr   mov     r,r
+     100111rdddddrrrr   mul     r,r
+     001010rdddddrrrr   or      r,r
+     000010rdddddrrrr   sbc     r,r
+     000110rdddddrrrr   sub     r,r
+     001001rdddddrrrr   clr     r
+     000011rdddddrrrr   lsl     r
+     000111rdddddrrrr   rol     r
+     001000rdddddrrrr   tst     r
+     0111KKKKddddKKKK   andi    d,M
+     0111KKKKddddKKKK   cbr     d,n
+     1110KKKKddddKKKK   ldi     d,M
+     11101111dddd1111   ser     d
+     0110KKKKddddKKKK   ori     d,M
+     0110KKKKddddKKKK   sbr     d,M
+     0011KKKKddddKKKK   cpi     d,M
+     0100KKKKddddKKKK   sbci    d,M
+     0101KKKKddddKKKK   subi    d,M
+     1111110rrrrr0sss   sbrc    r,s
+     1111111rrrrr0sss   sbrs    r,s
+     1111100ddddd0sss   bld     r,s
+     1111101ddddd0sss   bst     r,s
+     10110PPdddddPPPP   in      r,P
+     10111PPrrrrrPPPP   out     P,r
+     10010110KKddKKKK   adiw    w,K
+     10010111KKddKKKK   sbiw    w,K
+     10011000pppppsss   cbi     p,s
+     10011010pppppsss   sbi     p,s
+     10011001pppppsss   sbic    p,s
+     10011011pppppsss   sbis    p,s
+     111101lllllll000   brcc    l
+     111100lllllll000   brcs    l
+     111100lllllll001   breq    l
+     111101lllllll100   brge    l
+     111101lllllll101   brhc    l
+     111100lllllll101   brhs    l
+     111101lllllll111   brid    l
+     111100lllllll111   brie    l
+     111100lllllll000   brlo    l
+     111100lllllll100   brlt    l
+     111100lllllll010   brmi    l
+     111101lllllll001   brne    l
+     111101lllllll010   brpl    l
+     111101lllllll000   brsh    l
+     111101lllllll110   brtc    l
+     111100lllllll110   brts    l
+     111101lllllll011   brvc    l
+     111100lllllll011   brvs    l
+     111101lllllllsss   brbc    s,l
+     111100lllllllsss   brbs    s,l
+     1101LLLLLLLLLLLL   rcall   L
+     1100LLLLLLLLLLLL   rjmp    L
+     1001010hhhhh111h   call    h
+     1001010hhhhh110h   jmp     h
+     1001010rrrrr0101   asr     r
+     1001010rrrrr0000   com     r
+     1001010rrrrr1010   dec     r
+     1001010rrrrr0011   inc     r
+     1001010rrrrr0110   lsr     r
+     1001010rrrrr0001   neg     r
+     1001000rrrrr1111   pop     r
+     1001001rrrrr1111   push    r
+     1001010rrrrr0111   ror     r
+     1001010rrrrr0010   swap    r
+     00000001ddddrrrr   movw    v,v
+     00000010ddddrrrr   muls    d,d
+     000000110ddd0rrr   mulsu   a,a
+     000000110ddd1rrr   fmul    a,a
+     000000111ddd0rrr   fmuls   a,a
+     000000111ddd1rrr   fmulsu  a,a
+     1001001ddddd0000   sts     i,r
+     1001000ddddd0000   lds     r,i
+     10o0oo0dddddbooo   ldd     r,b
+     100!000dddddee-+   ld      r,e
+     10o0oo1rrrrrbooo   std     b,r
+     100!001rrrrree-+   st      e,r
+     1001010100011001   eicall
+     1001010000011001   eijmp
+
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Options.html new file mode 100644 index 0000000..c8d12ab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Options.html @@ -0,0 +1,118 @@ + + +AVR Options - Using as + + + + + + + + + + + + +
+

+Next: , +Up: AVR-Dependent +



+
+ +

9.4.1 Options

+ +

+ + +

-mmcu=mcu
Specify ATMEL AVR instruction set or MCU type. + +

Instruction set avr1 is for the minimal AVR core, not supported by the C +compiler, only for assembler programs (MCU types: at90s1200, +attiny11, attiny12, attiny15, attiny28). + +

Instruction set avr2 (default) is for the classic AVR core with up to +8K program memory space (MCU types: at90s2313, at90s2323, at90s2333, at90s2343, +attiny22, attiny26, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534, +at90s8535). + +

Instruction set avr25 is for the classic AVR core with up to 8K program memory +space plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313, +attiny24, attiny44, attiny84, attiny25, attiny45, attiny85, attiny261, +attiny461, attiny861, attiny43u, attiny48, attiny88, at86rf401). + +

Instruction set avr3 is for the classic AVR core with up to 128K program +memory space (MCU types: at43usb355, at76c711). + +

Instruction set avr31 is for the classic AVR core with exactly 128K program +memory space (MCU types: atmega103, at43usb320). + +

Instruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP +instructions (MCU types: attiny167, at90usb82, at90usb162). + +

Instruction set avr4 is for the enhanced AVR core with up to 8K program +memory space (MCU types: atmega48, atmega48p,atmega8, atmega88, atmega88p, +atmega8515, atmega8535, atmega8hva, at90pwm1, at90pwm2, at90pwm2b, +at90pwm3, at90pwm3b). + +

Instruction set avr5 is for the enhanced AVR core with up to 128K program +memory space (MCU types: atmega16, atmega161, atmega162, atmega163, atmega164p, +atmega165, atmega165p, atmega168, atmega168p, atmega169, atmega169p, atmega32, +atmega323, atmega324p, atmega325, atmega325p, atmega3250, atmega3250p, +atmega328p, atmega329, atmega329p, atmega3290, atmega3290p, atmega406, atmega64, +atmega640, atmega644, atmega644p, atmega645, atmega6450, atmega649, atmega6490, +atmega16hva, at90can32, at90can64, at90pwm216, at90pwm316, atmega16u4, +atmega32c1, atmega32m1, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k). + +

Instruction set avr51 is for the enhanced AVR core with exactly 128K program +memory space (MCU types: atmega128, atmega1280, atmega1281, atmega1284p, +at90can128, at90usb1286, at90usb1287). + +

Instruction set avr6 is for the enhanced AVR core with a 3-byte PC (MCU types: +atmega2560, atmega2561). + +

Instruction set avrxmega4 is for the XMEGA AVR cor with up to 64K program +memory space and less than 64K data space (MCU types: atxmega64a3). + +

Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K program +memory space and greater than 64K data space (MCU types: atxmega64a1). + +

Instruction set avrxmega6 is for the XMEGA AVR core with up to 256K program +memory space and less than 64K data space (MCU types: atxmega128a3, +atxmega256a3, atxmega256a3b). + +

Instruction set avrxmega7 is for the XMEGA AVR core with up to 256K program +memory space and greater than 64K data space (MCU types: atxmega128a1). + +


-mall-opcodes
Accept all AVR opcodes, even if not supported by -mmcu. + +


-mno-skip-bug
This option disable warnings for skipping two-word instructions. + +


-mno-wrap
This option reject rjmp/rcall instructions with 8K wrap-around. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Syntax.html new file mode 100644 index 0000000..b29fdc6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR-Syntax.html @@ -0,0 +1,56 @@ + + +AVR Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: AVR Options, +Up: AVR-Dependent +



+
+ +

9.4.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dChars.html new file mode 100644 index 0000000..f280af4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dChars.html @@ -0,0 +1,57 @@ + + +AVR-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: AVR Syntax +



+
+ +
9.4.2.1 Special Characters
+ +

+The presence of a ; on a line indicates the start of a comment +that extends to the end of the current line. If a # appears as +the first character of a line, the whole line is treated as a comment. + +

+The $ character can be used instead of a newline to separate +statements. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dDependent.html new file mode 100644 index 0000000..5f0746e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dDependent.html @@ -0,0 +1,58 @@ + + +AVR-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ARM-Dependent, +Up: Machine Dependencies +



+
+ +

9.4 AVR Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dModifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dModifiers.html new file mode 100644 index 0000000..ef6c648 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dModifiers.html @@ -0,0 +1,114 @@ + + +AVR-Modifiers - Using as + + + + + + + + + + + + +
+

+Previous: AVR-Regs, +Up: AVR Syntax +



+
+ +
9.4.2.3 Relocatable Expression Modifiers
+ +

+The assembler supports several modifiers when using relocatable addresses +in AVR instruction operands. The general syntax is the following: + +

     modifier(relocatable-expression)
+
+ + +
+
lo8
+This modifier allows you to use bits 0 through 7 of +an address expression as 8 bit relocatable expression. + +
hi8
+This modifier allows you to use bits 7 through 15 of an address expression +as 8 bit relocatable expression. This is useful with, for example, the +AVR ldi instruction and lo8 modifier. + +

For example + +

          ldi r26, lo8(sym+10)
+          ldi r27, hi8(sym+10)
+     
+
hh8
+This modifier allows you to use bits 16 through 23 of +an address expression as 8 bit relocatable expression. +Also, can be useful for loading 32 bit constants. + +
hlo8
+Synonym of hh8. + +
hhi8
+This modifier allows you to use bits 24 through 31 of +an expression as 8 bit expression. This is useful with, for example, the +AVR ldi instruction and lo8, hi8, hlo8, +hhi8, modifier. + +

For example + +

          ldi r26, lo8(285774925)
+          ldi r27, hi8(285774925)
+          ldi r28, hlo8(285774925)
+          ldi r29, hhi8(285774925)
+          ; r29,r28,r27,r26 = 285774925
+     
+
pm_lo8
+This modifier allows you to use bits 0 through 7 of +an address expression as 8 bit relocatable expression. +This modifier useful for addressing data or code from +Flash/Program memory. The using of pm_lo8 similar +to lo8. + +
pm_hi8
+This modifier allows you to use bits 8 through 15 of +an address expression as 8 bit relocatable expression. +This modifier useful for addressing data or code from +Flash/Program memory. + +
pm_hh8
+This modifier allows you to use bits 15 through 23 of +an address expression as 8 bit relocatable expression. +This modifier useful for addressing data or code from +Flash/Program memory. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dRegs.html new file mode 100644 index 0000000..b91c94f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/AVR_002dRegs.html @@ -0,0 +1,63 @@ + + +AVR-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: AVR-Chars, +Up: AVR Syntax +



+
+ +
9.4.2.2 Register Names
+ +

+The AVR has 32 x 8-bit general purpose working registers r0, +r1, ... r31. +Six of the 32 registers can be used as three 16-bit indirect address +register pointers for Data Space addressing. One of the these address +pointers can also be used as an address pointer for look up tables in +Flash program memory. These added function registers are the 16-bit +X, Y and Z - registers. + +

     X = r26:r27
+     Y = r28:r29
+     Z = r30:r31
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Abort.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Abort.html new file mode 100644 index 0000000..11ce17c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Abort.html @@ -0,0 +1,54 @@ + + +Abort - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Pseudo Ops +



+
+ +

7.1 .abort

+ +

This directive stops the assembly immediately. It is for +compatibility with other assemblers. The original idea was that the +assembly language source would be piped into the assembler. If the sender +of the source quit, it could use this directive tells as to +quit also. One day .abort will not be supported. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Absolute-Literals-Directive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Absolute-Literals-Directive.html new file mode 100644 index 0000000..03e9732 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Absolute-Literals-Directive.html @@ -0,0 +1,76 @@ + + +Absolute Literals Directive - Using as + + + + + + + + + + + + +

+ +
9.36.5.7 absolute-literals
+ +

+The absolute-literals and no-absolute-literals +directives control the absolute vs. PC-relative mode for L32R +instructions. These are relevant only for Xtensa configurations that +include the absolute addressing option for L32R instructions. + +

         .begin [no-]absolute-literals
+         .end [no-]absolute-literals
+
+

These directives do not change the L32R mode—they only cause +the assembler to emit the appropriate kind of relocation for L32R +instructions and to place the literal values in the appropriate section. +To change the L32R mode, the program must write the +LITBASE special register. It is the programmer's responsibility +to keep track of the mode and indicate to the assembler which mode is +used in each region of code. + +

If the Xtensa configuration includes the absolute L32R addressing +option, the default is to assume absolute L32R addressing unless +the --no-absolute-literals command-line option is specified. +Otherwise, the default is to assume PC-relative L32R addressing. +The absolute-literals directive can then be used to override +the default determined by the command-line options. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Acknowledgements.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Acknowledgements.html new file mode 100644 index 0000000..cb208c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Acknowledgements.html @@ -0,0 +1,151 @@ + + +Acknowledgements - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Reporting Bugs, +Up: Top +



+
+ +

11 Acknowledgements

+ +

If you have contributed to GAS and your name isn't listed here, +it is not meant as a slight. We just don't know about it. Send mail to the +maintainer, and we'll correct the situation. Currently + +the maintainer is Ken Raeburn (email address raeburn@cygnus.com). + +

Dean Elsner wrote the original gnu assembler for the VAX.1 + +

Jay Fenlason maintained GAS for a while, adding support for GDB-specific debug +information and the 68k series machines, most of the preprocessing pass, and +extensive changes in messages.c, input-file.c, write.c. + +

K. Richard Pixley maintained GAS for a while, adding various enhancements and +many bug fixes, including merging support for several processors, breaking GAS +up to handle multiple object file format back ends (including heavy rewrite, +testing, an integration of the coff and b.out back ends), adding configuration +including heavy testing and verification of cross assemblers and file splits +and renaming, converted GAS to strictly ANSI C including full prototypes, added +support for m680[34]0 and cpu32, did considerable work on i960 including a COFF +port (including considerable amounts of reverse engineering), a SPARC opcode +file rewrite, DECstation, rs6000, and hp300hpux host ports, updated “know” +assertions and made them work, much other reorganization, cleanup, and lint. + +

Ken Raeburn wrote the high-level BFD interface code to replace most of the code +in format-specific I/O modules. + +

The original VMS support was contributed by David L. Kashtan. Eric Youngdale +has done much work with it since. + +

The Intel 80386 machine description was written by Eliot Dresselhaus. + +

Minh Tran-Le at IntelliCorp contributed some AIX 386 support. + +

The Motorola 88k machine description was contributed by Devon Bowen of Buffalo +University and Torbjorn Granlund of the Swedish Institute of Computer Science. + +

Keith Knowles at the Open Software Foundation wrote the original MIPS back end +(tc-mips.c, tc-mips.h), and contributed Rose format support +(which hasn't been merged in yet). Ralph Campbell worked with the MIPS code to +support a.out format. + +

Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k, +tc-h8300), and IEEE 695 object file format (obj-ieee), was written by +Steve Chamberlain of Cygnus Support. Steve also modified the COFF back end to +use BFD for some low-level operations, for use with the H8/300 and AMD 29k +targets. + +

John Gilmore built the AMD 29000 support, added .include support, and +simplified the configuration of which versions accept which directives. He +updated the 68k machine description so that Motorola's opcodes always produced +fixed-size instructions (e.g., jsr), while synthetic instructions +remained shrinkable (jbsr). John fixed many bugs, including true tested +cross-compilation support, and one bug in relaxation that took a week and +required the proverbial one-bit fix. + +

Ian Lance Taylor of Cygnus Support merged the Motorola and MIT syntax for the +68k, completed support for some COFF targets (68k, i386 SVR3, and SCO Unix), +added support for MIPS ECOFF and ELF targets, wrote the initial RS/6000 and +PowerPC assembler, and made a few other minor patches. + +

Steve Chamberlain made GAS able to generate listings. + +

Hewlett-Packard contributed support for the HP9000/300. + +

Jeff Law wrote GAS and BFD support for the native HPPA object format (SOM) +along with a fairly extensive HPPA testsuite (for both SOM and ELF object +formats). This work was supported by both the Center for Software Science at +the University of Utah and Cygnus Support. + +

Support for ELF format files has been worked on by Mark Eichin of Cygnus +Support (original, incomplete implementation for SPARC), Pete Hoogenboom and +Jeff Law at the University of Utah (HPPA mainly), Michael Meissner of the Open +Software Foundation (i386 mainly), and Ken Raeburn of Cygnus Support (sparc, +and some initial 64-bit support). + +

Linas Vepstas added GAS support for the ESA/390 “IBM 370” architecture. + +

Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote GAS and BFD +support for openVMS/Alpha. + +

Timothy Wall, Michael Hayes, and Greg Smart contributed to the various tic* +flavors. + +

David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from Tensilica, +Inc. added support for Xtensa processors. + +

Several engineers at Cygnus Support have also provided many small bug fixes and +configuration enhancements. + +

Many others have contributed large or small bugfixes and enhancements. If +you have contributed significant work and are not mentioned on this list, and +want to be, let us know. Some of the history has been lost; we are not +intentionally leaving anyone out. + + +

+
+

Footnotes

[1] Any +more details?

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Align.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Align.html new file mode 100644 index 0000000..2cc51c8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Align.html @@ -0,0 +1,89 @@ + + +Align - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: ABORT (COFF), +Up: Pseudo Ops +



+
+ +

7.3 .align abs-expr, abs-expr, abs-expr

+ +

Pad the location counter (in the current subsection) to a particular storage +boundary. The first expression (which must be absolute) is the alignment +required, as described below. + +

The second expression (also absolute) gives the fill value to be stored in the +padding bytes. It (and the comma) may be omitted. If it is omitted, the +padding bytes are normally zero. However, on some systems, if the section is +marked as containing code and the fill value is omitted, the space is filled +with no-op instructions. + +

The third expression is also absolute, and is also optional. If it is present, +it is the maximum number of bytes that should be skipped by this alignment +directive. If doing the alignment would require skipping more bytes than the +specified maximum, then the alignment is not done at all. You can omit the +fill value (the second argument) entirely by simply using two commas after the +required alignment; this can be useful if you want the alignment to be filled +with no-op instructions when appropriate. + +

The way the required alignment is specified varies from system to system. +For the arc, hppa, i386 using ELF, i860, iq2000, m68k, or32, +s390, sparc, tic4x, tic80 and xtensa, the first expression is the +alignment request in bytes. For example .align 8 advances +the location counter until it is a multiple of 8. If the location counter +is already a multiple of 8, no change is needed. For the tic54x, the +first expression is the alignment request in words. + +

For other systems, including ppc, i386 using a.out format, arm and +strongarm, it is the +number of low-order zero bits the location counter must have after +advancement. For example .align 3 advances the location +counter until it a multiple of 8. If the location counter is already a +multiple of 8, no change is needed. + +

This inconsistency is due to the different behaviors of the various +native assemblers for these systems which GAS must emulate. +GAS also provides .balign and .p2align directives, +described later, which have a consistent behavior across all +architectures (but are specific to GAS). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Directives.html new file mode 100644 index 0000000..8680feb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Directives.html @@ -0,0 +1,159 @@ + + +Alpha Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Alpha Floating Point, +Up: Alpha-Dependent +



+
+ +

9.1.5 Alpha Assembler Directives

+ +

as for the Alpha supports many additional directives for +compatibility with the native assembler. This section describes them only +briefly. + +

These are the additional directives in as for the Alpha: + +

+
.arch cpu
Specifies the target processor. This is equivalent to the +-mcpu command-line option. See Options, +for a list of values for cpu. + +
.ent function[, n]
Mark the beginning of function. An optional number may follow for +compatibility with the OSF/1 assembler, but is ignored. When generating +.mdebug information, this will create a procedure descriptor for +the function. In ELF, it will mark the symbol as a function a-la the +generic .type directive. + +
.end function
Mark the end of function. In ELF, it will set the size of the symbol +a-la the generic .size directive. + +
.mask mask, offset
Indicate which of the integer registers are saved in the current +function's stack frame. mask is interpreted a bit mask in which +bit n set indicates that register n is saved. The registers +are saved in a block located offset bytes from the canonical +frame address (CFA) which is the value of the stack pointer on entry to +the function. The registers are saved sequentially, except that the +return address register (normally $26) is saved first. + +

This and the other directives that describe the stack frame are +currently only used when generating .mdebug information. They +may in the future be used to generate DWARF2 .debug_frame unwind +information for hand written assembly. + +

.fmask mask, offset
Indicate which of the floating-point registers are saved in the current +stack frame. The mask and offset parameters are interpreted +as with .mask. + +
.frame framereg, frameoffset, retreg[, argoffset]
Describes the shape of the stack frame. The frame pointer in use is +framereg; normally this is either $fp or $sp. The +frame pointer is frameoffset bytes below the CFA. The return +address is initially located in retreg until it is saved as +indicated in .mask. For compatibility with OSF/1 an optional +argoffset parameter is accepted and ignored. It is believed to +indicate the offset from the CFA to the saved argument registers. + +
.prologue n
Indicate that the stack frame is set up and all registers have been +spilled. The argument n indicates whether and how the function +uses the incoming procedure vector (the address of the called +function) in $27. 0 indicates that $27 is not used; 1 +indicates that the first two instructions of the function use $27 +to perform a load of the GP register; 2 indicates that $27 is +used in some non-standard way and so the linker cannot elide the load of +the procedure vector during relaxation. + +
.usepv function, which
Used to indicate the use of the $27 register, similar to +.prologue, but without the other semantics of needing to +be inside an open .ent/.end block. + +

The which argument should be either no, indicating that +$27 is not used, or std, indicating that the first two +instructions of the function perform a GP load. + +

One might use this directive instead of .prologue if you are +also using dwarf2 CFI directives. + +

.gprel32 expression
Computes the difference between the address in expression and the +GP for the current object file, and stores it in 4 bytes. In addition +to being smaller than a full 8 byte address, this also does not require +a dynamic relocation when used in a shared library. + +
.t_floating expression
Stores expression as an ieee double precision value. + +
.s_floating expression
Stores expression as an ieee single precision value. + +
.f_floating expression
Stores expression as a VAX F format value. + +
.g_floating expression
Stores expression as a VAX G format value. + +
.d_floating expression
Stores expression as a VAX D format value. + +
.set feature
Enables or disables various assembler features. Using the positive +name of the feature enables while using nofeature disables. + +
+
at
Indicates that macro expansions may clobber the assembler +temporary ($at or $28) register. Some macros may not be +expanded without this and will generate an error message if noat +is in effect. When at is in effect, a warning will be generated +if $at is used by the programmer. + +
macro
Enables the expansion of macro instructions. Note that variants of real +instructions, such as br label vs br $31,label are +considered alternate forms and not macros. + +
move
reorder
volatile
These control whether and how the assembler may re-order instructions. +Accepted for compatibility with the OSF/1 assembler, but as +does not do instruction scheduling, so these features are ignored. +
+
+ +

The following directives are recognized for compatibility with the OSF/1 +assembler but are ignored. + +

     .proc           .aproc
+     .reguse         .livereg
+     .option         .aent
+     .ugen           .eflag
+     .alias          .noalias
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Floating-Point.html new file mode 100644 index 0000000..52b4951 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Floating-Point.html @@ -0,0 +1,52 @@ + + +Alpha Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Alpha Syntax, +Up: Alpha-Dependent +



+
+ +

9.1.4 Floating Point

+ +

The Alpha family uses both ieee and VAX floating-point numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Notes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Notes.html new file mode 100644 index 0000000..d741e95 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Notes.html @@ -0,0 +1,53 @@ + + +Alpha Notes - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Alpha-Dependent +



+
+ +

9.1.1 Notes

+ +

+The documentation here is primarily for the ELF object format. +as also supports the ECOFF and EVAX formats, but +features specific to these formats are not yet documented. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Opcodes.html new file mode 100644 index 0000000..0d9efc6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Opcodes.html @@ -0,0 +1,55 @@ + + +Alpha Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: Alpha Directives, +Up: Alpha-Dependent +



+
+ +

9.1.6 Opcodes

+ +

For detailed information on the Alpha machine instruction set, see the + +Alpha Architecture Handbook. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Options.html new file mode 100644 index 0000000..f748aa7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Options.html @@ -0,0 +1,109 @@ + + +Alpha Options - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Alpha Notes, +Up: Alpha-Dependent +



+
+ +

9.1.2 Options

+ +

+ + +

-mcpu
This option specifies the target processor. If an attempt is made to +assemble an instruction which will not execute on the target processor, +the assembler may either expand the instruction as a macro or issue an +error message. This option is equivalent to the .arch directive. + +

The following processor names are recognized: +21064, +21064a, +21066, +21068, +21164, +21164a, +21164pc, +21264, +21264a, +21264b, +ev4, +ev5, +lca45, +ev5, +ev56, +pca56, +ev6, +ev67, +ev68. +The special name all may be used to allow the assembler to accept +instructions valid for any Alpha processor. + +

In order to support existing practice in OSF/1 with respect to .arch, +and existing practice within MILO (the Linux ARC bootloader), the +numbered processor names (e.g. 21064) enable the processor-specific PALcode +instructions, while the “electro-vlasic” names (e.g. ev4) do not. + +


-mdebug
-no-mdebug
Enables or disables the generation of .mdebug encapsulation for +stabs directives and procedure descriptors. The default is to automatically +enable .mdebug when the first stabs directive is seen. + +


-relax
This option forces all relocations to be put into the object file, instead +of saving space and resolving some relocations at assembly time. Note that +this option does not propagate all symbol arithmetic into the object file, +because not all symbol arithmetic can be represented. However, the option +can still be useful in specific applications. + +


-g
This option is used when the compiler generates debug information. When +gcc is using mips-tfile to generate debug +information for ECOFF, local labels must be passed through to the object +file. Otherwise this option has no effect. + +


-Gsize
A local common symbol larger than size is placed in .bss, +while smaller symbols are placed in .sbss. + +


-F
-32addr
These options are ignored for backward compatibility. +
+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Syntax.html new file mode 100644 index 0000000..dd9792f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha-Syntax.html @@ -0,0 +1,60 @@ + + +Alpha Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Alpha Options, +Up: Alpha-Dependent +



+
+ +

9.1.3 Syntax

+ +

The assembler syntax closely follow the Alpha Reference Manual; +assembler directives and general syntax closely follow the OSF/1 and +OpenVMS syntax, with a few differences for ELF. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dChars.html new file mode 100644 index 0000000..311512c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dChars.html @@ -0,0 +1,52 @@ + + +Alpha-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Alpha Syntax +



+
+ +
9.1.3.1 Special Characters
+ +

# is the line comment character. + +

; can be used instead of a newline to separate statements. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dDependent.html new file mode 100644 index 0000000..bb5dcfb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dDependent.html @@ -0,0 +1,59 @@ + + +Alpha-Dependent - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Machine Dependencies +



+
+ +

9.1 Alpha Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dRegs.html new file mode 100644 index 0000000..6ba3bfd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dRegs.html @@ -0,0 +1,58 @@ + + +Alpha-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Alpha-Chars, +Up: Alpha Syntax +



+
+ +
9.1.3.2 Register Names
+ +

+The 32 integer registers are referred to as $n or +$rn. In addition, registers 15, 28, 29, and 30 may +be referred to by the symbols $fp, $at, $gp, +and $sp respectively. + +

The 32 floating-point registers are referred to as $fn. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dRelocs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dRelocs.html new file mode 100644 index 0000000..1e4f6a9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Alpha_002dRelocs.html @@ -0,0 +1,180 @@ + + +Alpha-Relocs - Using as + + + + + + + + + + + + +

+

+Previous: Alpha-Regs, +Up: Alpha Syntax +



+
+ +
9.1.3.3 Relocations
+ +

+Some of these relocations are available for ECOFF, but mostly +only for ELF. They are modeled after the relocation format +introduced in Digital Unix 4.0, but there are additions. + +

The format is !tag or !tag!number +where tag is the name of the relocation. In some cases +number is used to relate specific instructions. + +

The relocation is placed at the end of the instruction like so: + +

     ldah  $0,a($29)    !gprelhigh
+     lda   $0,a($0)     !gprellow
+     ldq   $1,b($29)    !literal!100
+     ldl   $2,0($1)     !lituse_base!100
+
+
+
!literal
!literal!N
Used with an ldq instruction to load the address of a symbol +from the GOT. + +

A sequence number N is optional, and if present is used to pair +lituse relocations with this literal relocation. The +lituse relocations are used by the linker to optimize the code +based on the final location of the symbol. + +

Note that these optimizations are dependent on the data flow of the +program. Therefore, if any lituse is paired with a +literal relocation, then all uses of the register set by +the literal instruction must also be marked with lituse +relocations. This is because the original literal instruction +may be deleted or transformed into another instruction. + +

Also note that there may be a one-to-many relationship between +literal and lituse, but not a many-to-one. That is, if +there are two code paths that load up the same address and feed the +value to a single use, then the use may not use a lituse +relocation. + +

!lituse_base!N
Used with any memory format instruction (e.g. ldl) to indicate +that the literal is used for an address load. The offset field of the +instruction must be zero. During relaxation, the code may be altered +to use a gp-relative load. + +
!lituse_jsr!N
Used with a register branch format instruction (e.g. jsr) to +indicate that the literal is used for a call. During relaxation, the +code may be altered to use a direct branch (e.g. bsr). + +
!lituse_jsrdirect!N
Similar to lituse_jsr, but also that this call cannot be vectored +through a PLT entry. This is useful for functions with special calling +conventions which do not allow the normal call-clobbered registers to be +clobbered. + +
!lituse_bytoff!N
Used with a byte mask instruction (e.g. extbl) to indicate +that only the low 3 bits of the address are relevant. During relaxation, +the code may be altered to use an immediate instead of a register shift. + +
!lituse_addr!N
Used with any other instruction to indicate that the original address +is in fact used, and the original ldq instruction may not be +altered or deleted. This is useful in conjunction with lituse_jsr +to test whether a weak symbol is defined. + +
          ldq  $27,foo($29)   !literal!1
+          beq  $27,is_undef   !lituse_addr!1
+          jsr  $26,($27),foo  !lituse_jsr!1
+     
+
!lituse_tlsgd!N
Used with a register branch format instruction to indicate that the +literal is the call to __tls_get_addr used to compute the +address of the thread-local storage variable whose descriptor was +loaded with !tlsgd!N. + +
!lituse_tlsldm!N
Used with a register branch format instruction to indicate that the +literal is the call to __tls_get_addr used to compute the +address of the base of the thread-local storage block for the current +module. The descriptor for the module must have been loaded with +!tlsldm!N. + +
!gpdisp!N
Used with ldah and lda to load the GP from the current +address, a-la the ldgp macro. The source register for the +ldah instruction must contain the address of the ldah +instruction. There must be exactly one lda instruction paired +with the ldah instruction, though it may appear anywhere in +the instruction stream. The immediate operands must be zero. + +
          bsr  $26,foo
+          ldah $29,0($26)     !gpdisp!1
+          lda  $29,0($29)     !gpdisp!1
+     
+
!gprelhigh
Used with an ldah instruction to add the high 16 bits of a +32-bit displacement from the GP. + +
!gprellow
Used with any memory format instruction to add the low 16 bits of a +32-bit displacement from the GP. + +
!gprel
Used with any memory format instruction to add a 16-bit displacement +from the GP. + +
!samegp
Used with any branch format instruction to skip the GP load at the +target address. The referenced symbol must have the same GP as the +source object file, and it must be declared to either not use $27 +or perform a standard GP load in the first two instructions via the +.prologue directive. + +
!tlsgd
!tlsgd!N
Used with an lda instruction to load the address of a TLS +descriptor for a symbol in the GOT. + +

The sequence number N is optional, and if present it used to +pair the descriptor load with both the literal loading the +address of the __tls_get_addr function and the lituse_tlsgd +marking the call to that function. + +

For proper relaxation, both the tlsgd, literal and +lituse relocations must be in the same extended basic block. +That is, the relocation with the lowest address must be executed +first at runtime. + +

!tlsldm
!tlsldm!N
Used with an lda instruction to load the address of a TLS +descriptor for the current module in the GOT. + +

Similar in other respects to tlsgd. + +

!gotdtprel
Used with an ldq instruction to load the offset of the TLS +symbol within its module's thread-local storage block. Also known +as the dynamic thread pointer offset or dtp-relative offset. + +
!dtprelhi
!dtprello
!dtprel
Like gprel relocations except they compute dtp-relative offsets. + +
!gottprel
Used with an ldq instruction to load the offset of the TLS +symbol from the thread pointer. Also known as the tp-relative offset. + +
!tprelhi
!tprello
!tprel
Like gprel relocations except they compute tp-relative offsets. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Altmacro.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Altmacro.html new file mode 100644 index 0000000..7e33814 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Altmacro.html @@ -0,0 +1,78 @@ + + +Altmacro - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Align, +Up: Pseudo Ops +



+
+ +

7.77 .altmacro

+ +

Enable alternate macro mode, enabling: + +

+
LOCAL name [ , ... ]
One additional directive, LOCAL, is available. It is used to +generate a string replacement for each of the name arguments, and +replace any instances of name in each macro expansion. The +replacement string is unique in the assembly, and different for each +separate macro expansion. LOCAL allows you to write macros that +define symbols, without fear of conflict between separate macro expansions. + +
String delimiters
You can write strings delimited in these other ways besides +"string": + +
+
'string'
You can delimit strings with single-quote characters. + +
<string>
You can delimit strings with matching angle brackets. +
+ +
single-character string escape
To include any single character literally in a string (even if the +character would otherwise have some special meaning), you can prefix the +character with ! (an exclamation mark). For example, you can +write <4.3 !> 5.4!!> to get the literal text 4.3 > 5.4!. + +
Expression results as strings
You can write %expr to evaluate the expression expr +and use the result as a string. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Arguments.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Arguments.html new file mode 100644 index 0000000..5b2e333 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Arguments.html @@ -0,0 +1,72 @@ + + +Arguments - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Integer Exprs +



+
+ +

6.2.1 Arguments

+ +

Arguments are symbols, numbers or subexpressions. In other +contexts arguments are sometimes called “arithmetic operands”. In +this manual, to avoid confusing them with the “instruction operands” of +the machine language, we use the term “argument” to refer to parts of +expressions only, reserving the word “operand” to refer only to machine +instruction operands. + +

Symbols are evaluated to yield {section NNN} where +section is one of text, data, bss, absolute, +or undefined. NNN is a signed, 2's complement 32 bit +integer. + +

Numbers are usually integers. + +

A number can be a flonum or bignum. In this case, you are warned +that only the low order 32 bits are used, and as pretends +these 32 bits are an integer. You may write integer-manipulating +instructions that act on exotic constants, compatible with other +assemblers. + +

Subexpressions are a left parenthesis ( followed by an integer +expression, followed by a right parenthesis ); or a prefix +operator followed by an argument. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/As-Sections.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/As-Sections.html new file mode 100644 index 0000000..cec81ba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/As-Sections.html @@ -0,0 +1,72 @@ + + +As Sections - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Ld Sections, +Up: Sections +



+
+ +

4.3 Assembler Internal Sections

+ +

These sections are meant only for the internal use of as. They +have no meaning at run-time. You do not really need to know about these +sections for most purposes; but they can be mentioned in as +warning messages, so it might be helpful to have an idea of their +meanings to as. These sections are used to permit the +value of every expression in your assembly language program to be a +section-relative address. + + + +

ASSEMBLER-INTERNAL-LOGIC-ERROR!
An internal assembler logic error has been found. This means there is a +bug in the assembler. + +


expr section
The assembler stores complex expression internally as combinations of +symbols. When it needs to represent an expression as a symbol, it puts +it in the expr section. + + + + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ascii.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ascii.html new file mode 100644 index 0000000..f8541c5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ascii.html @@ -0,0 +1,54 @@ + + +Ascii - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Altmacro, +Up: Pseudo Ops +



+
+ +

7.4 .ascii "string"...

+ +

.ascii expects zero or more string literals (see Strings) +separated by commas. It assembles each string (with no automatic +trailing zero byte) into consecutive addresses. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Asciz.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Asciz.html new file mode 100644 index 0000000..0f1827c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Asciz.html @@ -0,0 +1,53 @@ + + +Asciz - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Ascii, +Up: Pseudo Ops +



+
+ +

7.5 .asciz "string"...

+ +

.asciz is just like .ascii, but each string is followed by +a zero byte. The “z” in .asciz stands for “zero”. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN-Directives.html new file mode 100644 index 0000000..ebcadf3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN-Directives.html @@ -0,0 +1,63 @@ + + +BFIN Directives - Using as + + + + + + + + + + + + +

+

+Previous: BFIN Syntax, +Up: BFIN-Dependent +



+
+ +

9.5.2 Directives

+ +

+The following directives are provided for compatibility with the VDSP assembler. + +

+
.byte2
Initializes a four byte data object. +
.byte4
Initializes a two byte data object. +
.db
TBD +
.dd
TBD +
.dw
TBD +
.var
Define and initialize a 32 bit data object. +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN-Syntax.html new file mode 100644 index 0000000..bffcad9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN-Syntax.html @@ -0,0 +1,161 @@ + + +BFIN Syntax - Using as + + + + + + + + + + + + +
+

+Next: , +Up: BFIN-Dependent +



+
+ +

9.5.1 Syntax

+ +

+

+
Special Characters
Assembler input is free format and may appear anywhere on the line. +One instruction may extend across multiple lines or more than one +instruction may appear on the same line. White space (space, tab, +comments or newline) may appear anywhere between tokens. A token must +not have embedded spaces. Tokens include numbers, register names, +keywords, user identifiers, and also some multicharacter special +symbols like "+=", "/*" or "||". + +
Instruction Delimiting
A semicolon must terminate every instruction. Sometimes a complete +instruction will consist of more than one operation. There are two +cases where this occurs. The first is when two general operations +are combined. Normally a comma separates the different parts, as in + +
          a0= r3.h * r2.l, a1 = r3.l * r2.h ;
+     
+

The second case occurs when a general instruction is combined with one +or two memory references for joint issue. The latter portions are +set off by a "||" token. + +

          a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
+     
+
Register Names
+The assembler treats register names and instruction keywords in a case +insensitive manner. User identifiers are case sensitive. Thus, R3.l, +R3.L, r3.l and r3.L are all equivalent input to the assembler. + +

Register names are reserved and may not be used as program identifiers. + +

Some operations (such as "Move Register") require a register pair. +Register pairs are always data registers and are denoted using a colon, +eg., R3:2. The larger number must be written firsts. Note that the +hardware only supports odd-even pairs, eg., R7:6, R5:4, R3:2, and R1:0. + +

Some instructions (such as –SP (Push Multiple)) require a group of +adjacent registers. Adjacent registers are denoted in the syntax by +the range enclosed in parentheses and separated by a colon, eg., (R7:3). +Again, the larger number appears first. + +

Portions of a particular register may be individually specified. This +is written with a dot (".") following the register name and then a +letter denoting the desired portion. For 32-bit registers, ".H" +denotes the most significant ("High") portion. ".L" denotes the +least-significant portion. The subdivisions of the 40-bit registers +are described later. + +

Accumulators
The set of 40-bit registers A1 and A0 that normally contain data that +is being manipulated. Each accumulator can be accessed in four ways. + +
+
one 40-bit register
The register will be referred to as A1 or A0. +
one 32-bit register
The registers are designated as A1.W or A0.W. +
two 16-bit registers
The registers are designated as A1.H, A1.L, A0.H or A0.L. +
one 8-bit register
The registers are designated as A1.X or A0.X for the bits that +extend beyond bit 31. +
+ +
Data Registers
The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7) that +normally contain data for manipulation. These are abbreviated as +D-register or Dreg. Data registers can be accessed as 32-bit registers +or as two independent 16-bit registers. The least significant 16 bits +of each register is called the "low" half and is designated with ".L" +following the register name. The most significant 16 bits are called +the "high" half and is designated with ".H" following the name. + +
             R7.L, r2.h, r4.L, R0.H
+     
+
Pointer Registers
The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP) that +normally contain byte addresses of data structures. These are +abbreviated as P-register or Preg. + +
          p2, p5, fp, sp
+     
+
Stack Pointer SP
The stack pointer contains the 32-bit address of the last occupied +byte location in the stack. The stack grows by decrementing the +stack pointer. + +
Frame Pointer FP
The frame pointer contains the 32-bit address of the previous frame +pointer in the stack. It is located at the top of a frame. + +
Loop Top
LT0 and LT1. These registers contain the 32-bit address of the top of +a zero overhead loop. + +
Loop Count
LC0 and LC1. These registers contain the 32-bit counter of the zero +overhead loop executions. + +
Loop Bottom
LB0 and LB1. These registers contain the 32-bit address of the bottom +of a zero overhead loop. + +
Index Registers
The set of 32-bit registers (I0, I1, I2, I3) that normally contain byte +addresses of data structures. Abbreviated I-register or Ireg. + +
Modify Registers
The set of 32-bit registers (M0, M1, M2, M3) that normally contain +offset values that are added and subracted to one of the index +registers. Abbreviated as Mreg. + +
Length Registers
The set of 32-bit registers (L0, L1, L2, L3) that normally contain the +length in bytes of the circular buffer. Abbreviated as Lreg. Clear +the Lreg to disable circular addressing for the corresponding Ireg. + +
Base Registers
The set of 32-bit registers (B0, B1, B2, B3) that normally contain the +base address in bytes of the circular buffer. Abbreviated as Breg. + +
Floating Point
The Blackfin family has no hardware floating point but the .float +directive generates ieee floating point numbers for use with software +floating point libraries. + +
Blackfin Opcodes
For detailed information on the Blackfin machine instruction set, see +the Blackfin(r) Processor Instruction Set Reference. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN_002dDependent.html new file mode 100644 index 0000000..a3756af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/BFIN_002dDependent.html @@ -0,0 +1,57 @@ + + +BFIN-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: AVR-Dependent, +Up: Machine Dependencies +



+
+ +

9.5 Blackfin Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Balign.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Balign.html new file mode 100644 index 0000000..43a1be3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Balign.html @@ -0,0 +1,79 @@ + + +Balign - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Asciz, +Up: Pseudo Ops +



+
+ +

7.6 .balign[wl] abs-expr, abs-expr, abs-expr

+ +

Pad the location counter (in the current subsection) to a particular +storage boundary. The first expression (which must be absolute) is the +alignment request in bytes. For example .balign 8 advances +the location counter until it is a multiple of 8. If the location counter +is already a multiple of 8, no change is needed. + +

The second expression (also absolute) gives the fill value to be stored in the +padding bytes. It (and the comma) may be omitted. If it is omitted, the +padding bytes are normally zero. However, on some systems, if the section is +marked as containing code and the fill value is omitted, the space is filled +with no-op instructions. + +

The third expression is also absolute, and is also optional. If it is present, +it is the maximum number of bytes that should be skipped by this alignment +directive. If doing the alignment would require skipping more bytes than the +specified maximum, then the alignment is not done at all. You can omit the +fill value (the second argument) entirely by simply using two commas after the +required alignment; this can be useful if you want the alignment to be filled +with no-op instructions when appropriate. + +

The .balignw and .balignl directives are variants of the +.balign directive. The .balignw directive treats the fill +pattern as a two byte word value. The .balignl directives treats the +fill pattern as a four byte longword value. For example, .balignw +4,0x368d will align to a multiple of 4. If it skips two bytes, they will be +filled in with the value 0x368d (the exact placement of the bytes depends upon +the endianness of the processor). If it skips 1 or 3 bytes, the fill value is +undefined. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bignums.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bignums.html new file mode 100644 index 0000000..17a168d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bignums.html @@ -0,0 +1,55 @@ + + +Bignums - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Integers, +Up: Numbers +



+
+ +
3.6.2.2 Bignums
+ +

A bignum has the same syntax and semantics as an integer +except that the number (or its negative) takes more than 32 bits to +represent in binary. The distinction is made because in some places +integers are permitted while bignums are not. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bug-Criteria.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bug-Criteria.html new file mode 100644 index 0000000..07254e0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bug-Criteria.html @@ -0,0 +1,68 @@ + + +Bug Criteria - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Reporting Bugs +



+
+ +

10.1 Have You Found a Bug?

+ +

+If you are not sure whether you have found a bug, here are some guidelines: + + + + + +

  • If the assembler gets a fatal signal, for any input whatever, that is a +as bug. Reliable assemblers never crash. + +

  • If as produces an error message for valid input, that is a bug. + +

  • If as does not produce an error message for invalid input, that +is a bug. However, you should note that your idea of “invalid input” might +be our idea of “an extension” or “support for traditional practice”. + +
  • If you are an experienced user of assemblers, your suggestions for improvement +of as are welcome in any case. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bug-Reporting.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bug-Reporting.html new file mode 100644 index 0000000..b413f97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Bug-Reporting.html @@ -0,0 +1,186 @@ + + +Bug Reporting - Using as + + + + + + + + + + + + +
+

+Previous: Bug Criteria, +Up: Reporting Bugs +



+
+ +

10.2 How to Report Bugs

+ +

+A number of companies and individuals offer support for gnu products. If +you obtained as from a support organization, we recommend you +contact that organization first. + +

You can find contact information for many support companies and +individuals in the file etc/SERVICE in the gnu Emacs +distribution. + +

In any event, we also recommend that you send bug reports for as +to http://www.sourceware.org/bugzilla/. + +

The fundamental principle of reporting bugs usefully is this: +report all the facts. If you are not sure whether to state a +fact or leave it out, state it! + +

Often people omit facts because they think they know what causes the problem +and assume that some details do not matter. Thus, you might assume that the +name of a symbol you use in an example does not matter. Well, probably it does +not, but one cannot be sure. Perhaps the bug is a stray memory reference which +happens to fetch from the location where that name is stored in memory; +perhaps, if the name were different, the contents of that location would fool +the assembler into doing the right thing despite the bug. Play it safe and +give a specific, complete example. That is the easiest thing for you to do, +and the most helpful. + +

Keep in mind that the purpose of a bug report is to enable us to fix the bug if +it is new to us. Therefore, always write your bug reports on the assumption +that the bug has not been reported previously. + +

Sometimes people give a few sketchy facts and ask, “Does this ring a +bell?” This cannot help us fix a bug, so it is basically useless. We +respond by asking for enough details to enable us to investigate. +You might as well expedite matters by sending them to begin with. + +

To enable us to fix the bug, you should include all these things: + +

    +
  • The version of as. as announces it if you start +it with the --version argument. + +

    Without this, we will not know whether there is any point in looking for +the bug in the current version of as. + +

  • Any patches you may have applied to the as source. + +
  • The type of machine you are using, and the operating system name and +version number. + +
  • What compiler (and its version) was used to compile as—e.g. +“gcc-2.7”. + +
  • The command arguments you gave the assembler to assemble your example and +observe the bug. To guarantee you will not omit something important, list them +all. A copy of the Makefile (or the output from make) is sufficient. + +

    If we were to try to guess the arguments, we would probably guess wrong +and then we might not encounter the bug. + +

  • A complete input file that will reproduce the bug. If the bug is observed when +the assembler is invoked via a compiler, send the assembler source, not the +high level language source. Most compilers will produce the assembler source +when run with the -S option. If you are using gcc, use +the options -v --save-temps; this will save the assembler source in a +file with an extension of .s, and also show you exactly how +as is being run. + +
  • A description of what behavior you observe that you believe is +incorrect. For example, “It gets a fatal signal.” + +

    Of course, if the bug is that as gets a fatal signal, then we +will certainly notice it. But if the bug is incorrect output, we might not +notice unless it is glaringly wrong. You might as well not give us a chance to +make a mistake. + +

    Even if the problem you experience is a fatal signal, you should still say so +explicitly. Suppose something strange is going on, such as, your copy of +as is out of sync, or you have encountered a bug in the C +library on your system. (This has happened!) Your copy might crash and ours +would not. If you told us to expect a crash, then when ours fails to crash, we +would know that the bug was not happening for us. If you had not told us to +expect a crash, then we would not be able to draw any conclusion from our +observations. + +

  • If you wish to suggest changes to the as source, send us context +diffs, as generated by diff with the -u, -c, or -p +option. Always send diffs from the old file to the new file. If you even +discuss something in the as source, refer to it by context, not +by line number. + +

    The line numbers in our development sources will not match those in your +sources. Your line numbers would convey no useful information to us. +

+ +

Here are some things that are not necessary: + +

    +
  • A description of the envelope of the bug. + +

    Often people who encounter a bug spend a lot of time investigating +which changes to the input file will make the bug go away and which +changes will not affect it. + +

    This is often time consuming and not very useful, because the way we +will find the bug is by running a single example under the debugger +with breakpoints, not by pure deduction from a series of examples. +We recommend that you save your time for something else. + +

    Of course, if you can find a simpler example to report instead +of the original one, that is a convenience for us. Errors in the +output will be easier to spot, running under the debugger will take +less time, and so on. + +

    However, simplification is not vital; if you do not want to do this, +report the bug anyway and send us the entire test case you used. + +

  • A patch for the bug. + +

    A patch for the bug does help us if it is a good one. But do not omit +the necessary information, such as the test case, on the assumption that +a patch is all we need. We might see problems with your patch and decide +to fix the problem another way, or we might not understand it at all. + +

    Sometimes with a program as complicated as as it is very hard to +construct an example that will make the program follow a certain path through +the code. If you do not send us the example, we will not be able to construct +one, so we will not be able to verify that the bug is fixed. + +

    And if we cannot understand what bug you are trying to fix, or why your +patch should be an improvement, we will not install it. A test case will +help us to understand. + +

  • A guess about what the bug is or what it depends on. + +

    Such guesses are usually wrong. Even we cannot guess right about such +things without first using the debugger to find the facts. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Byte.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Byte.html new file mode 100644 index 0000000..660ac07 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Byte.html @@ -0,0 +1,53 @@ + + +Byte - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Balign, +Up: Pseudo Ops +



+
+ +

7.7 .byte expressions

+ +

.byte expects zero or more expressions, separated by commas. +Each expression is assembled into the next byte. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CFI-directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CFI-directives.html new file mode 100644 index 0000000..07093e5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CFI-directives.html @@ -0,0 +1,178 @@ + + +CFI directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Comm, +Up: Pseudo Ops +



+
+ +

7.9 .cfi_startproc [simple]

+ +

.cfi_startproc is used at the beginning of each function that +should have an entry in .eh_frame. It initializes some internal +data structures. Don't forget to close the function by +.cfi_endproc. + +

Unless .cfi_startproc is used along with parameter simple +it also emits some architecture dependent initial CFI instructions. + +

7.10 .cfi_endproc

+ +

.cfi_endproc is used at the end of a function where it closes its +unwind entry previously opened by +.cfi_startproc, and emits it to .eh_frame. + +

7.11 .cfi_personality encoding [, exp]

+ +

.cfi_personality defines personality routine and its encoding. +encoding must be a constant determining how the personality +should be encoded. If it is 255 (DW_EH_PE_omit), second +argument is not present, otherwise second argument should be +a constant or a symbol name. When using indirect encodings, +the symbol provided should be the location where personality +can be loaded from, not the personality routine itself. +The default after .cfi_startproc is .cfi_personality 0xff, +no personality routine. + +

7.12 .cfi_lsda encoding [, exp]

+ +

.cfi_lsda defines LSDA and its encoding. +encoding must be a constant determining how the LSDA +should be encoded. If it is 255 (DW_EH_PE_omit), second +argument is not present, otherwise second argument should be a constant +or a symbol name. The default after .cfi_startproc is .cfi_lsda 0xff, +no LSDA. + +

7.13 .cfi_def_cfa register, offset

+ +

.cfi_def_cfa defines a rule for computing CFA as: take +address from register and add offset to it. + +

7.14 .cfi_def_cfa_register register

+ +

.cfi_def_cfa_register modifies a rule for computing CFA. From +now on register will be used instead of the old one. Offset +remains the same. + +

7.15 .cfi_def_cfa_offset offset

+ +

.cfi_def_cfa_offset modifies a rule for computing CFA. Register +remains the same, but offset is new. Note that it is the +absolute offset that will be added to a defined register to compute +CFA address. + +

7.16 .cfi_adjust_cfa_offset offset

+ +

Same as .cfi_def_cfa_offset but offset is a relative +value that is added/substracted from the previous offset. + +

7.17 .cfi_offset register, offset

+ +

Previous value of register is saved at offset offset from +CFA. + +

7.18 .cfi_rel_offset register, offset

+ +

Previous value of register is saved at offset offset from +the current CFA register. This is transformed to .cfi_offset +using the known displacement of the CFA register from the CFA. +This is often easier to use, because the number will match the +code it's annotating. + +

7.19 .cfi_register register1, register2

+ +

Previous value of register1 is saved in register register2. + +

7.20 .cfi_restore register

+ +

.cfi_restore says that the rule for register is now the +same as it was at the beginning of the function, after all initial +instruction added by .cfi_startproc were executed. + +

7.21 .cfi_undefined register

+ +

From now on the previous value of register can't be restored anymore. + +

7.22 .cfi_same_value register

+ +

Current value of register is the same like in the previous frame, +i.e. no restoration needed. + +

7.23 .cfi_remember_state,

+ +

First save all current rules for all registers by .cfi_remember_state, +then totally screw them up by subsequent .cfi_* directives and when +everything is hopelessly bad, use .cfi_restore_state to restore +the previous saved state. + +

7.24 .cfi_return_column register

+ +

Change return column register, i.e. the return address is either +directly in register or can be accessed by rules for register. + +

7.25 .cfi_signal_frame

+ +

Mark current function as signal trampoline. + +

7.26 .cfi_window_save

+ +

SPARC register window has been saved. + +

7.27 .cfi_escape expression[, ...]

+ +

Allows the user to add arbitrary bytes to the unwind info. One +might use this to add OS-specific CFI opcodes, or generic CFI +opcodes that GAS does not yet support. + +

7.28 .cfi_val_encoded_addr register, encoding, label

+ +

The current value of register is label. The value of label +will be encoded in the output file according to encoding; see the +description of .cfi_personality for details on this encoding. + +

The usefulness of equating a register to a fixed label is probably +limited to the return address register. Here, it can be useful to +mark a code segment that has only one return address which is reached +by a direct branch and no copy of the return address exists in memory +or another register. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/COFF-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/COFF-Symbols.html new file mode 100644 index 0000000..72af88e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/COFF-Symbols.html @@ -0,0 +1,66 @@ + + +COFF Symbols - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: a.out Symbols, +Up: Symbol Attributes +



+
+ +

5.5.4 Symbol Attributes for COFF

+ +

+The COFF format supports a multitude of auxiliary symbol attributes; +like the primary symbol attributes, they are set between .def and +.endef directives. + +

5.5.4.1 Primary Attributes
+ +

The symbol name is set with .def; the value and type, +respectively, with .val and .type. + +

5.5.4.2 Auxiliary Attributes
+ +

The as directives .dim, .line, .scl, +.size, .tag, and .weak can generate auxiliary symbol +table information for COFF. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CR16-Operand-Qualifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CR16-Operand-Qualifiers.html new file mode 100644 index 0000000..e220a67 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CR16-Operand-Qualifiers.html @@ -0,0 +1,94 @@ + + +CR16 Operand Qualifiers - Using as + + + + + + + + + + + +

+

+Up: CR16-Dependent +



+
+ +

9.6.1 CR16 Operand Qualifiers

+ +

+The National Semiconductor CR16 target of as has a few machine dependent operand qualifiers. + +

Operand expression type qualifier is an optional field in the instruction operand, to determines the type of the expression field of an operand. The @ is required. CR16 architecture uses one of the following expression qualifiers: + +

+
s
- Specifies expression operand type as small +
m
- Specifies expression operand type as medium +
l
- Specifies expression operand type as large +
c
- Specifies the CR16 Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time. +
+ +

CR16 target operand qualifiers and its size (in bits): + +

+
Immediate Operand
- s —– 4 bits +
- m —– 16 bits, for movb and movw instructions. +
- m —– 20 bits, movd instructions. +
- l —– 32 bits + +
Absolute Operand
- s —– Illegal specifier for this operand. +
- m —– 20 bits, movd instructions. + +
Displacement Operand
- s —– 8 bits +
- m —– 16 bits +
- l —– 24 bits +
+ +

For example: +

     1   movw $_myfun@c,r1
+     
+         This loads the address of _myfun, shifted right by 1, into r1.
+     
+     2   movd $_myfun@c,(r2,r1)
+     
+         This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
+     
+     3   _myfun_ptr:
+         .long _myfun@c
+         loadd _myfun_ptr, (r1,r0)
+         jal (r1,r0)
+     
+         This .long directive, the address of _myfunc, shifted right by 1 at link time.
+
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CR16_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CR16_002dDependent.html new file mode 100644 index 0000000..714d175 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CR16_002dDependent.html @@ -0,0 +1,56 @@ + + +CR16-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: BFIN-Dependent, +Up: Machine Dependencies +



+
+ +

9.6 CR16 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dChars.html new file mode 100644 index 0000000..a606fb4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dChars.html @@ -0,0 +1,59 @@ + + +CRIS-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: CRIS-Syntax +



+
+ +
9.7.4.1 Special Characters
+ +

+The character # is a line comment character. It starts a +comment if and only if it is placed at the beginning of a line. + +

A ; character starts a comment anywhere on the line, +causing all characters up to the end of the line to be ignored. + +

A @ character is handled as a line separator equivalent +to a logical new-line character (except in a comment), so +separate instructions can be specified on a single line. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dDependent.html new file mode 100644 index 0000000..3af8091 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dDependent.html @@ -0,0 +1,59 @@ + + +CRIS-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: CR16-Dependent, +Up: Machine Dependencies +



+
+ +

9.7 CRIS Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dExpand.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dExpand.html new file mode 100644 index 0000000..be6f17c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dExpand.html @@ -0,0 +1,74 @@ + + +CRIS-Expand - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: CRIS-Opts, +Up: CRIS-Dependent +



+
+ +

9.7.2 Instruction expansion

+ +

as will silently choose an instruction that fits +the operand size for [register+constant] operands. For +example, the offset 127 in move.d [r3+127],r4 fits +in an instruction using a signed-byte offset. Similarly, +move.d [r2+32767],r1 will generate an instruction using a +16-bit offset. For symbolic expressions and constants that do +not fit in 16 bits including the sign bit, a 32-bit offset is +generated. + +

For branches, as will expand from a 16-bit branch +instruction into a sequence of instructions that can reach a +full 32-bit address. Since this does not correspond to a single +instruction, such expansions can optionally be warned about. +See CRIS-Opts. + +

If the operand is found to fit the range, a lapc mnemonic +will translate to a lapcq instruction. Use lapc.d +to force the 32-bit lapc instruction. + +

Similarly, the addo mnemonic will translate to the +shortest fitting instruction of addoq, addo.w and +addo.d, when used with a operand that is a constant known +at assembly time. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dOpts.html new file mode 100644 index 0000000..b06dd6c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dOpts.html @@ -0,0 +1,123 @@ + + +CRIS-Opts - Using as + + + + + + + + + + + + +

+

+Next: , +Up: CRIS-Dependent +



+
+ +

9.7.1 Command-line Options

+ +

The CRIS version of as has these +machine-dependent command-line options. + +

+The format of the generated object files can be either ELF or +a.out, specified by the command-line options +--emulation=crisaout and --emulation=criself. +The default is ELF (criself), unless as has been +configured specifically for a.out by using the configuration +name cris-axis-aout. + +

There are two different link-incompatible ELF object file +variants for CRIS, for use in environments where symbols are +expected to be prefixed by a leading _ character and for +environments without such a symbol prefix. The variant used for +GNU/Linux port has no symbol prefix. Which variant to produce +is specified by either of the options --underscore and +--no-underscore. The default is --underscore. +Since symbols in CRIS a.out objects are expected to have a +_ prefix, specifying --no-underscore when +generating a.out objects is an error. Besides the object format +difference, the effect of this option is to parse register names +differently (see crisnous). The --no-underscore +option makes a $ register prefix mandatory. + +

The option --pic must be passed to as in +order to recognize the symbol syntax used for ELF (SVR4 PIC) +position-independent-code (see crispic). This will also +affect expansion of instructions. The expansion with +--pic will use PC-relative rather than (slightly +faster) absolute addresses in those expansions. + +

The option --march=architecture +specifies the recognized instruction set +and recognized register names. It also controls the +architecture type of the object file. Valid values for +architecture are: +

+
v0_v10
All instructions and register names for any architecture variant +in the set v0...v10 are recognized. This is the +default if the target is configured as cris-*. + +
v10
Only instructions and register names for CRIS v10 (as found in +ETRAX 100 LX) are recognized. This is the default if the target +is configured as crisv10-*. + +
v32
Only instructions and register names for CRIS v32 (code name +Guinness) are recognized. This is the default if the target is +configured as crisv32-*. This value implies +--no-mul-bug-abort. (A subsequent +--mul-bug-abort will turn it back on.) + +
common_v10_v32
Only instructions with register names and addressing modes with +opcodes common to the v10 and v32 are recognized. +
+ +

When -N is specified, as will emit a +warning when a 16-bit branch instruction is expanded into a +32-bit multiple-instruction construct (see CRIS-Expand). + +

+Some versions of the CRIS v10, for example in the Etrax 100 LX, +contain a bug that causes destabilizing memory accesses when a +multiply instruction is executed with certain values in the +first operand just before a cache-miss. When the +--mul-bug-abort command line option is active (the +default value), as will refuse to assemble a file +containing a multiply instruction at a dangerous offset, one +that could be the last on a cache-line, or is in a section with +insufficient alignment. This placement checking does not catch +any case where the multiply instruction is dangerously placed +because it is located in a delay-slot. The +--mul-bug-abort command line option turns off the +checking. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dPic.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dPic.html new file mode 100644 index 0000000..d5f77b6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dPic.html @@ -0,0 +1,131 @@ + + +CRIS-Pic - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: CRIS-Chars, +Up: CRIS-Syntax +



+
+ +
9.7.4.2 Symbols in position-independent code
+ +

+When generating position-independent code (SVR4 +PIC) for use in cris-axis-linux-gnu or crisv32-axis-linux-gnu +shared libraries, symbol +suffixes are used to specify what kind of run-time symbol lookup +will be used, expressed in the object as different +relocation types. Usually, all absolute symbol values +must be located in a table, the global offset table, +leaving the code position-independent; independent of values of +global symbols and independent of the address of the code. The +suffix modifies the value of the symbol, into for example an +index into the global offset table where the real symbol value +is entered, or a PC-relative value, or a value relative to the +start of the global offset table. All symbol suffixes start +with the character : (omitted in the list below). Every +symbol use in code or a read-only section must therefore have a +PIC suffix to enable a useful shared library to be created. +Usually, these constructs must not be used with an additive +constant offset as is usually allowed, i.e. no 4 as in +symbol + 4 is allowed. This restriction is checked at +link-time, not at assembly-time. + +

+
GOT
+Attaching this suffix to a symbol in an instruction causes the +symbol to be entered into the global offset table. The value is +a 32-bit index for that symbol into the global offset table. +The name of the corresponding relocation is +R_CRIS_32_GOT. Example: move.d +[$r0+extsym:GOT],$r9 + +
GOT16
+Same as for GOT, but the value is a 16-bit index into the +global offset table. The corresponding relocation is +R_CRIS_16_GOT. Example: move.d +[$r0+asymbol:GOT16],$r10 + +
PLT
+This suffix is used for function symbols. It causes a +procedure linkage table, an array of code stubs, to be +created at the time the shared object is created or linked +against, together with a global offset table entry. The value +is a pc-relative offset to the corresponding stub code in the +procedure linkage table. This arrangement causes the run-time +symbol resolver to be called to look up and set the value of the +symbol the first time the function is called (at latest; +depending environment variables). It is only safe to leave the +symbol unresolved this way if all references are function calls. +The name of the relocation is R_CRIS_32_PLT_PCREL. +Example: add.d fnname:PLT,$pc + +
PLTG
+Like PLT, but the value is relative to the beginning of the +global offset table. The relocation is +R_CRIS_32_PLT_GOTREL. Example: move.d +fnname:PLTG,$r3 + +
GOTPLT
+Similar to PLT, but the value of the symbol is a 32-bit +index into the global offset table. This is somewhat of a mix +between the effect of the GOT and the PLT suffix; +the difference to GOT is that there will be a procedure +linkage table entry created, and that the symbol is assumed to +be a function entry and will be resolved by the run-time +resolver as with PLT. The relocation is +R_CRIS_32_GOTPLT. Example: jsr +[$r0+fnname:GOTPLT] + +
GOTPLT16
+A variant of GOTPLT giving a 16-bit value. Its +relocation name is R_CRIS_16_GOTPLT. Example: jsr +[$r0+fnname:GOTPLT16] + +
GOTOFF
+This suffix must only be attached to a local symbol, but may be +used in an expression adding an offset. The value is the +address of the symbol relative to the start of the global offset +table. The relocation name is R_CRIS_32_GOTREL. +Example: move.d [$r0+localsym:GOTOFF],r3 +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dPseudos.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dPseudos.html new file mode 100644 index 0000000..9e37261 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dPseudos.html @@ -0,0 +1,104 @@ + + +CRIS-Pseudos - Using as + + + + + + + + + + + + +
+

+Previous: CRIS-Regs, +Up: CRIS-Syntax +



+
+ +
9.7.4.4 Assembler Directives
+ +

+There are a few CRIS-specific pseudo-directives in addition to +the generic ones. See Pseudo Ops. Constants emitted by +pseudo-directives are in little-endian order for CRIS. There is +no support for floating-point-specific directives for CRIS. + +

+
.dword EXPRESSIONS
+The .dword directive is a synonym for .int, +expecting zero or more EXPRESSIONS, separated by commas. For +each expression, a 32-bit little-endian constant is emitted. + +
.syntax ARGUMENT
The .syntax directive takes as ARGUMENT one of the +following case-sensitive choices. + +
+
no_register_prefix
+The .syntax no_register_prefix directive +makes a $ character prefix on all registers optional. It +overrides a previous setting, including the corresponding effect +of the option --no-underscore. If this directive is +used when ordinary symbols do not have a _ character +prefix, care must be taken to avoid ambiguities whether an +operand is a register or a symbol; using symbols with names the +same as general or special registers then invoke undefined +behavior. + +
register_prefix
+This directive makes a $ character prefix on all +registers mandatory. It overrides a previous setting, including +the corresponding effect of the option --underscore. + +
leading_underscore
+This is an assertion directive, emitting an error if the +--no-underscore option is in effect. + +
no_leading_underscore
+This is the opposite of the .syntax leading_underscore +directive and emits an error if the option --underscore +is in effect. +
+ +
.arch ARGUMENT
This is an assertion directive, giving an error if the specified +ARGUMENT is not the same as the specified or default value +for the --march=architecture option +(see march-option). + + + + + +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dRegs.html new file mode 100644 index 0000000..d591d02 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dRegs.html @@ -0,0 +1,57 @@ + + +CRIS-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: CRIS-Pic, +Up: CRIS-Syntax +



+
+ +
9.7.4.3 Register names
+ +

+A $ character may always prefix a general or special +register name in an instruction operand but is mandatory when +the option --no-underscore is specified or when the +.syntax register_prefix directive is in effect +(see crisnous). Register names are case-insensitive. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dSymbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dSymbols.html new file mode 100644 index 0000000..a69a185 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dSymbols.html @@ -0,0 +1,81 @@ + + +CRIS-Symbols - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: CRIS-Expand, +Up: CRIS-Dependent +



+
+ +

9.7.3 Symbols

+ +

+Some symbols are defined by the assembler. They're intended to +be used in conditional assembly, for example: +

      .if ..asm.arch.cris.v32
+      code for CRIS v32
+      .elseif ..asm.arch.cris.common_v10_v32
+      code common to CRIS v32 and CRIS v10
+      .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
+      code for v10
+      .else
+      .error "Code needs to be added here."
+      .endif
+
+

These symbols are defined in the assembler, reflecting +command-line options, either when specified or the default. +They are always defined, to 0 or 1. +

+
..asm.arch.cris.any_v0_v10
This symbol is non-zero when --march=v0_v10 is specified +or the default. + +
..asm.arch.cris.common_v10_v32
Set according to the option --march=common_v10_v32. + +
..asm.arch.cris.v10
Reflects the option --march=v10. + +
..asm.arch.cris.v32
Corresponds to --march=v10. +
+ +

Speaking of symbols, when a symbol is used in code, it can have +a suffix modifying its value for use in position-independent +code. See CRIS-Pic. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dSyntax.html new file mode 100644 index 0000000..11a6ac7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/CRIS_002dSyntax.html @@ -0,0 +1,57 @@ + + +CRIS-Syntax - Using as + + + + + + + + + + + + +

+

+Previous: CRIS-Symbols, +Up: CRIS-Dependent +



+
+ +

9.7.4 Syntax

+ +

There are different aspects of the CRIS assembly syntax. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Characters.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Characters.html new file mode 100644 index 0000000..cba5e95 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Characters.html @@ -0,0 +1,59 @@ + + +Characters - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Constants +



+
+ +

3.6.1 Character Constants

+ +

There are two kinds of character constants. A character stands +for one character in one byte and its value may be used in +numeric expressions. String constants (properly called string +literals) are potentially many bytes and their values may not be +used in arithmetic expressions. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Chars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Chars.html new file mode 100644 index 0000000..e42be4f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Chars.html @@ -0,0 +1,60 @@ + + +Chars - Using as + + + + + + + + + + + + +
+

+Previous: Strings, +Up: Characters +



+
+ +
3.6.1.2 Characters
+ +

A single character may be written as a single quote immediately +followed by that character. The same escapes apply to characters as +to strings. So if you want to write the character backslash, you +must write '\\ where the first \ escapes the second +\. As you can see, the quote is an acute accent, not a +grave accent. A newline +immediately following an acute accent is taken as a literal character +and does not count as the end of a statement. The value of a character +constant in a numeric expression is the machine's byte-wide code for +that character. as assumes your character code is ASCII: +'A means 65, 'B means 66, and so on. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Comm.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Comm.html new file mode 100644 index 0000000..1934e44 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Comm.html @@ -0,0 +1,72 @@ + + +Comm - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Byte, +Up: Pseudo Ops +



+
+ +

7.8 .comm symbol , length

+ +

.comm declares a common symbol named symbol. When linking, a +common symbol in one object file may be merged with a defined or common symbol +of the same name in another object file. If ld does not see a +definition for the symbol–just one or more common symbols–then it will +allocate length bytes of uninitialized memory. length must be an +absolute expression. If ld sees multiple common symbols with +the same name, and they do not all have the same size, it will allocate space +using the largest size. + +

When using ELF, the .comm directive takes an optional third argument. +This is the desired alignment of the symbol, specified as a byte boundary (for +example, an alignment of 16 means that the least significant 4 bits of the +address should be zero). The alignment must be an absolute expression, and it +must be a power of two. If ld allocates uninitialized memory +for the common symbol, it will use the alignment when placing the symbol. If +no alignment is specified, as will set the alignment to the +largest power of two less than or equal to the size of the symbol, up to a +maximum of 16. + +

The syntax for .comm differs slightly on the HPPA. The syntax is +symbol .comm, length; symbol is optional. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Command-Line.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Command-Line.html new file mode 100644 index 0000000..1ce5b25 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Command-Line.html @@ -0,0 +1,73 @@ + + +Command Line - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Object Formats, +Up: Overview +



+
+ +

1.4 Command Line

+ +

+After the program name as, the command line may contain +options and file names. Options may appear in any order, and may be +before, after, or between file names. The order of file names is +significant. + +

-- (two hyphens) by itself names the standard input file +explicitly, as one of the files for as to assemble. + +

Except for -- any command line argument that begins with a +hyphen (-) is an option. Each option changes the behavior of +as. No option changes the way another option works. An +option is a - followed by one or more letters; the case of +the letter is important. All options are optional. + +

Some options expect exactly one file name to follow them. The file +name may either immediately follow the option's letter (compatible +with older assemblers) or it may be the next command argument (gnu +standard). These two command lines are equivalent: + +

     as -o my-object-file.o mumble.s
+     as -omy-object-file.o mumble.s
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Comments.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Comments.html new file mode 100644 index 0000000..ffe70af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Comments.html @@ -0,0 +1,114 @@ + + +Comments - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Whitespace, +Up: Syntax +



+
+ +

3.3 Comments

+ +

There are two ways of rendering comments to as. In both +cases the comment is equivalent to one space. + +

Anything from /* through the next */ is a comment. +This means you may not nest these comments. + +

     /*
+       The only way to include a newline ('\n') in a comment
+       is to use this sort of comment.
+     */
+     
+     /* This sort of comment does not nest. */
+
+

Anything from the line comment character to the next newline +is considered a comment and is ignored. The line comment character is +; on the ARC; +@ on the ARM; +; for the H8/300 family; +; for the HPPA; +# on the i386 and x86-64; +# on the i960; +; for the PDP-11; +; for picoJava; +# for Motorola PowerPC; +! for the Renesas / SuperH SH; +! on the SPARC; +# on the ip2k; +# on the m32c; +# on the m32r; +| on the 680x0; +# on the 68HC11 and 68HC12; +# on the Vax; +; for the Z80; +! for the Z8000; +# on the V850; +# for Xtensa systems; +see Machine Dependencies. + + +

On some machines there are two different line comment characters. One +character only begins a comment if it is the first non-whitespace character on +a line, while the other always begins a comment. + +

The V850 assembler also supports a double dash as starting a comment that +extends to the end of the line. + +

--; + +

To be compatible with past assemblers, lines that begin with # have a +special interpretation. Following the # should be an absolute +expression (see Expressions): the logical line number of the next +line. Then a string (see Strings) is allowed: if present it is a +new logical file name. The rest of the line, if any, should be whitespace. + +

If the first non-whitespace characters on the line are not numeric, +the line is ignored. (Just like a comment.) + +

                               # This is an ordinary comment.
+     # 42-6 "new_file_name"    # New logical file name
+                               # This is logical line # 36.
+
+

This feature is deprecated, and may disappear from future versions +of as. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Compare_002dand_002dbranch_002di960.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Compare_002dand_002dbranch_002di960.html new file mode 100644 index 0000000..e059d3f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Compare_002dand_002dbranch_002di960.html @@ -0,0 +1,73 @@ + + +Compare-and-branch-i960 - Using as + + + + + + + + + + + + +

+

+Previous: callj-i960, +Up: Opcodes for i960 +



+
+ +
9.15.4.2 Compare-and-Branch
+ +

The 960 architectures provide combined Compare-and-Branch instructions +that permit you to store the branch target in the lower 13 bits of the +instruction word itself. However, if you specify a branch target far +enough away that its address won't fit in 13 bits, the assembler can +either issue an error, or convert your Compare-and-Branch instruction +into separate instructions to do the compare and the branch. + +

Whether as gives an error or expands the instruction depends +on two choices you can make: whether you use the -no-relax option, +and whether you use a “Compare and Branch” instruction or a “Compare +and Jump” instruction. The “Jump” instructions are always +expanded if necessary; the “Branch” instructions are expanded when +necessary unless you specify -no-relax—in which case +as gives an error instead. + +

These are the Compare-and-Branch instructions, their “Jump” variants, +and the instruction pairs they may expand into: + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Constants.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Constants.html new file mode 100644 index 0000000..8e7d20a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Constants.html @@ -0,0 +1,61 @@ + + +Constants - Using as + + + + + + + + + + + + +

+

+Previous: Statements, +Up: Syntax +



+
+ +

3.6 Constants

+ +

A constant is a number, written so that its value is known by +inspection, without knowing any context. Like this: +

     .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
+     .ascii "Ring the bell\7"                  # A string constant.
+     .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
+     .float 0f-314159265358979323846264338327\
+     95028841971.693993751E-40                 # - pi, a flonum.
+
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D.html new file mode 100644 index 0000000..707a9a7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D.html @@ -0,0 +1,54 @@ + + +D - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: alternate, +Up: Invoking +



+
+ +

2.3 -D

+ +

This option has no effect whatsoever, but it is accepted to make it more +likely that scripts written for other assemblers also work with +as. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dAddressing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dAddressing.html new file mode 100644 index 0000000..d381b1e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dAddressing.html @@ -0,0 +1,64 @@ + + +D10V-Addressing - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D10V-Regs, +Up: D10V-Syntax +



+
+ +
9.8.2.5 Addressing Modes
+ +

as understands the following addressing modes for the D10V. +Rn in the following refers to any of the numbered +registers, but not the control registers. +

+
Rn
Register direct +
@Rn
Register indirect +
@Rn+
Register indirect with post-increment +
@Rn-
Register indirect with post-decrement +
@-SP
Register indirect with pre-decrement +
@(disp, Rn)
Register indirect with displacement +
addr
PC relative address (for branch or rep). +
#imm
Immediate data (the # is optional and ignored) +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dChars.html new file mode 100644 index 0000000..eb93aa9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dChars.html @@ -0,0 +1,75 @@ + + +D10V-Chars - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: D10V-Subs, +Up: D10V-Syntax +



+
+ +
9.8.2.3 Special Characters
+ +

; and # are the line comment characters. +Sub-instructions may be executed in order, in reverse-order, or in parallel. +Instructions listed in the standard one-per-line format will be executed sequentially. +To specify the executing order, use the following symbols: +

+
->
Sequential with instruction on the left first. +
<-
Sequential with instruction on the right first. +
||
Parallel +
+ The D10V syntax allows either one instruction per line, one instruction per line with +the execution symbol, or two instructions per line. For example +
+
abs a1 -> abs r0
Execute these sequentially. The instruction on the right is in the right +container and is executed second. +
abs r0 <- abs a1
Execute these reverse-sequentially. The instruction on the right is in the right +container, and is executed first. +
ld2w r2,@r8+ || mac a0,r0,r7
Execute these in parallel. +
ld2w r2,@r8+ ||
mac a0,r0,r7
Two-line format. Execute these in parallel. +
ld2w r2,@r8+
mac a0,r0,r7
Two-line format. Execute these sequentially. Assembler will +put them in the proper containers. +
ld2w r2,@r8+ ->
mac a0,r0,r7
Two-line format. Execute these sequentially. Same as above but +second instruction will always go into right container. +
+ Since $ has no special meaning, you may use it in symbol names. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dDependent.html new file mode 100644 index 0000000..1bd23f7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dDependent.html @@ -0,0 +1,59 @@ + + +D10V-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: CRIS-Dependent, +Up: Machine Dependencies +



+
+ +

9.8 D10V Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dFloat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dFloat.html new file mode 100644 index 0000000..1edf890 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dFloat.html @@ -0,0 +1,54 @@ + + +D10V-Float - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: D10V-Syntax, +Up: D10V-Dependent +



+
+ +

9.8.3 Floating Point

+ +

The D10V has no hardware floating point, but the .float and .double +directives generates ieee floating-point numbers for compatibility +with other development tools. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dOpcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dOpcodes.html new file mode 100644 index 0000000..51e7927 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dOpcodes.html @@ -0,0 +1,57 @@ + + +D10V-Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: D10V-Float, +Up: D10V-Dependent +



+
+ +

9.8.4 Opcodes

+ +

For detailed information on the D10V machine instruction set, see +D10V Architecture: A VLIW Microprocessor for Multimedia Applications +(Mitsubishi Electric Corp.). +as implements all the standard D10V opcodes. The only changes are those +described in the section on size modifiers + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dOpts.html new file mode 100644 index 0000000..7ced8df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dOpts.html @@ -0,0 +1,65 @@ + + +D10V-Opts - Using as + + + + + + + + + + + + +

+

+Next: , +Up: D10V-Dependent +



+
+ +

9.8.1 D10V Options

+ +

The Mitsubishi D10V version of as has a few machine +dependent options. + +

+
-O
The D10V can often execute two sub-instructions in parallel. When this option +is used, as will attempt to optimize its output by detecting when +instructions can be executed in parallel. +
--nowarnswap
To optimize execution performance, as will sometimes swap the +order of instructions. Normally this generates a warning. When this option +is used, no warning will be generated when instructions are swapped. +
--gstabs-packing
--no-gstabs-packing
as packs adjacent short instructions into a single packed +instruction. --no-gstabs-packing turns instruction packing off if +--gstabs is specified as well; --gstabs-packing (the +default) turns instruction packing on even when --gstabs is +specified. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dRegs.html new file mode 100644 index 0000000..baec580 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dRegs.html @@ -0,0 +1,77 @@ + + +D10V-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: D10V-Chars, +Up: D10V-Syntax +



+
+ +
9.8.2.4 Register Names
+ +

You can use the predefined symbols r0 through r15 to refer to the D10V +registers. You can also use sp as an alias for r15. The accumulators +are a0 and a1. There are special register-pair names that may +optionally be used in opcodes that require even-numbered registers. Register names are +not case sensitive. + +

Register Pairs +

+
r0-r1
r2-r3
r4-r5
r6-r7
r8-r9
r10-r11
r12-r13
r14-r15
+ +

The D10V also has predefined symbols for these control registers and status bits: +

+
psw
Processor Status Word +
bpsw
Backup Processor Status Word +
pc
Program Counter +
bpc
Backup Program Counter +
rpt_c
Repeat Count +
rpt_s
Repeat Start address +
rpt_e
Repeat End address +
mod_s
Modulo Start address +
mod_e
Modulo End address +
iba
Instruction Break Address +
f0
Flag 0 +
f1
Flag 1 +
c
Carry flag +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSize.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSize.html new file mode 100644 index 0000000..165fee3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSize.html @@ -0,0 +1,61 @@ + + +D10V-Size - Using as + + + + + + + + + + + + +
+

+Next: , +Up: D10V-Syntax +



+
+ +
9.8.2.1 Size Modifiers
+ +

The D10V version of as uses the instruction names in the D10V +Architecture Manual. However, the names in the manual are sometimes ambiguous. +There are instruction names that can assemble to a short or long form opcode. +How does the assembler pick the correct form? as will always pick the +smallest form if it can. When dealing with a symbol that is not defined yet when a +line is being assembled, it will always use the long form. If you need to force the +assembler to use either the short or long form of the instruction, you can append +either .s (short) or .l (long) to it. For example, if you are writing +an assembly program and you want to do a branch to a symbol that is defined later +in your program, you can write bra.s foo. +Objdump and GDB will always append .s or .l to instructions which +have both short and long forms. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSubs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSubs.html new file mode 100644 index 0000000..ba848f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSubs.html @@ -0,0 +1,63 @@ + + +D10V-Subs - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D10V-Size, +Up: D10V-Syntax +



+
+ +
9.8.2.2 Sub-Instructions
+ +

The D10V assembler takes as input a series of instructions, either one-per-line, +or in the special two-per-line format described in the next section. Some of these +instructions will be short-form or sub-instructions. These sub-instructions can be packed +into a single instruction. The assembler will do this automatically. It will also detect +when it should not pack instructions. For example, when a label is defined, the next +instruction will never be packaged with the previous one. Whenever a branch and link +instruction is called, it will not be packaged with the next instruction so the return +address will be valid. Nops are automatically inserted when necessary. + +

If you do not want the assembler automatically making these decisions, you can control +the packaging and execution type (parallel or sequential) with the special execution +symbols described in the next section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSyntax.html new file mode 100644 index 0000000..ba9143f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dSyntax.html @@ -0,0 +1,63 @@ + + +D10V-Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D10V-Opts, +Up: D10V-Dependent +



+
+ +

9.8.2 Syntax

+ +

+The D10V syntax is based on the syntax in Mitsubishi's D10V architecture manual. +The differences are detailed below. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dWord.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dWord.html new file mode 100644 index 0000000..b05be7e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D10V_002dWord.html @@ -0,0 +1,56 @@ + + +D10V-Word - Using as + + + + + + + + + + + + +
+

+Previous: D10V-Addressing, +Up: D10V-Syntax +



+
+ +
9.8.2.6 @WORD Modifier
+ +

Any symbol followed by @word will be replaced by the symbol's value +shifted right by 2. This is used in situations such as loading a register +with the address of a function (or any other code fragment). For example, if +you want to load a register with the location of the function main then +jump to that function, you could do it as follows: +

     ldi     r2, main@word
+     jmp     r2
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dAddressing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dAddressing.html new file mode 100644 index 0000000..39eb699 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dAddressing.html @@ -0,0 +1,62 @@ + + +D30V-Addressing - Using as + + + + + + + + + + + + +
+

+Previous: D30V-Regs, +Up: D30V-Syntax +



+
+ +
9.9.2.6 Addressing Modes
+ +

as understands the following addressing modes for the D30V. +Rn in the following refers to any of the numbered +registers, but not the control registers. +

+
Rn
Register direct +
@Rn
Register indirect +
@Rn+
Register indirect with post-increment +
@Rn-
Register indirect with post-decrement +
@-SP
Register indirect with pre-decrement +
@(disp, Rn)
Register indirect with displacement +
addr
PC relative address (for branch or rep). +
#imm
Immediate data (the # is optional and ignored) +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dChars.html new file mode 100644 index 0000000..0ebeefd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dChars.html @@ -0,0 +1,97 @@ + + +D30V-Chars - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: D30V-Subs, +Up: D30V-Syntax +



+
+ +
9.9.2.3 Special Characters
+ +

; and # are the line comment characters. +Sub-instructions may be executed in order, in reverse-order, or in parallel. +Instructions listed in the standard one-per-line format will be executed +sequentially unless you use the -O option. + +

To specify the executing order, use the following symbols: +

+
->
Sequential with instruction on the left first. + +
<-
Sequential with instruction on the right first. + +
||
Parallel +
+ +

The D30V syntax allows either one instruction per line, one instruction per line with +the execution symbol, or two instructions per line. For example +

+
abs r2,r3 -> abs r4,r5
Execute these sequentially. The instruction on the right is in the right +container and is executed second. + +
abs r2,r3 <- abs r4,r5
Execute these reverse-sequentially. The instruction on the right is in the right +container, and is executed first. + +
abs r2,r3 || abs r4,r5
Execute these in parallel. + +
ldw r2,@(r3,r4) ||
mulx r6,r8,r9
Two-line format. Execute these in parallel. + +
mulx a0,r8,r9
stw r2,@(r3,r4)
Two-line format. Execute these sequentially unless -O option is +used. If the -O option is used, the assembler will determine if +the instructions could be done in parallel (the above two instructions +can be done in parallel), and if so, emit them as parallel instructions. +The assembler will put them in the proper containers. In the above +example, the assembler will put the stw instruction in left +container and the mulx instruction in the right container. + +
stw r2,@(r3,r4) ->
mulx a0,r8,r9
Two-line format. Execute the stw instruction followed by the +mulx instruction sequentially. The first instruction goes in the +left container and the second instruction goes into right container. +The assembler will give an error if the machine ordering constraints are +violated. + +
stw r2,@(r3,r4) <-
mulx a0,r8,r9
Same as previous example, except that the mulx instruction is +executed before the stw instruction. +
+ +

Since $ has no special meaning, you may use it in symbol names. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dDependent.html new file mode 100644 index 0000000..e5d5738 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dDependent.html @@ -0,0 +1,59 @@ + + +D30V-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D10V-Dependent, +Up: Machine Dependencies +



+
+ +

9.9 D30V Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dFloat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dFloat.html new file mode 100644 index 0000000..10d9746 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dFloat.html @@ -0,0 +1,54 @@ + + +D30V-Float - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: D30V-Syntax, +Up: D30V-Dependent +



+
+ +

9.9.3 Floating Point

+ +

The D30V has no hardware floating point, but the .float and .double +directives generates ieee floating-point numbers for compatibility +with other development tools. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dGuarded.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dGuarded.html new file mode 100644 index 0000000..f54722f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dGuarded.html @@ -0,0 +1,63 @@ + + +D30V-Guarded - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D30V-Chars, +Up: D30V-Syntax +



+
+ +
9.9.2.4 Guarded Execution
+ +

as supports the full range of guarded execution +directives for each instruction. Just append the directive after the +instruction proper. The directives are: + +

+
/tx
Execute the instruction if flag f0 is true. +
/fx
Execute the instruction if flag f0 is false. +
/xt
Execute the instruction if flag f1 is true. +
/xf
Execute the instruction if flag f1 is false. +
/tt
Execute the instruction if both flags f0 and f1 are true. +
/tf
Execute the instruction if flag f0 is true and flag f1 is false. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dOpcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dOpcodes.html new file mode 100644 index 0000000..124cd1b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dOpcodes.html @@ -0,0 +1,58 @@ + + +D30V-Opcodes - Using as + + + + + + + + + + + + +
+

+Previous: D30V-Float, +Up: D30V-Dependent +



+
+ +

9.9.4 Opcodes

+ +

For detailed information on the D30V machine instruction set, see +D30V Architecture: A VLIW Microprocessor for Multimedia Applications +(Mitsubishi Electric Corp.). +as implements all the standard D30V opcodes. The only changes are those +described in the section on size modifiers + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dOpts.html new file mode 100644 index 0000000..e549dd4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dOpts.html @@ -0,0 +1,64 @@ + + +D30V-Opts - Using as + + + + + + + + + + + + +

+

+Next: , +Up: D30V-Dependent +



+
+ +

9.9.1 D30V Options

+ +

The Mitsubishi D30V version of as has a few machine +dependent options. + +

+
-O
The D30V can often execute two sub-instructions in parallel. When this option +is used, as will attempt to optimize its output by detecting when +instructions can be executed in parallel. + +
-n
When this option is used, as will issue a warning every +time it adds a nop instruction. + +
-N
When this option is used, as will issue a warning if it +needs to insert a nop after a 32-bit multiply before a load or 16-bit +multiply instruction. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dRegs.html new file mode 100644 index 0000000..a15415e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dRegs.html @@ -0,0 +1,82 @@ + + +D30V-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: D30V-Guarded, +Up: D30V-Syntax +



+
+ +
9.9.2.5 Register Names
+ +

You can use the predefined symbols r0 through r63 to refer +to the D30V registers. You can also use sp as an alias for +r63 and link as an alias for r62. The accumulators +are a0 and a1. + +

The D30V also has predefined symbols for these control registers and status bits: +

+
psw
Processor Status Word +
bpsw
Backup Processor Status Word +
pc
Program Counter +
bpc
Backup Program Counter +
rpt_c
Repeat Count +
rpt_s
Repeat Start address +
rpt_e
Repeat End address +
mod_s
Modulo Start address +
mod_e
Modulo End address +
iba
Instruction Break Address +
f0
Flag 0 +
f1
Flag 1 +
f2
Flag 2 +
f3
Flag 3 +
f4
Flag 4 +
f5
Flag 5 +
f6
Flag 6 +
f7
Flag 7 +
s
Same as flag 4 (saturation flag) +
v
Same as flag 5 (overflow flag) +
va
Same as flag 6 (sticky overflow flag) +
c
Same as flag 7 (carry/borrow flag) +
b
Same as flag 7 (carry/borrow flag) +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSize.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSize.html new file mode 100644 index 0000000..e2bf58d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSize.html @@ -0,0 +1,61 @@ + + +D30V-Size - Using as + + + + + + + + + + + + +
+

+Next: , +Up: D30V-Syntax +



+
+ +
9.9.2.1 Size Modifiers
+ +

The D30V version of as uses the instruction names in the D30V +Architecture Manual. However, the names in the manual are sometimes ambiguous. +There are instruction names that can assemble to a short or long form opcode. +How does the assembler pick the correct form? as will always pick the +smallest form if it can. When dealing with a symbol that is not defined yet when a +line is being assembled, it will always use the long form. If you need to force the +assembler to use either the short or long form of the instruction, you can append +either .s (short) or .l (long) to it. For example, if you are writing +an assembly program and you want to do a branch to a symbol that is defined later +in your program, you can write bra.s foo. +Objdump and GDB will always append .s or .l to instructions which +have both short and long forms. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSubs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSubs.html new file mode 100644 index 0000000..682eed8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSubs.html @@ -0,0 +1,63 @@ + + +D30V-Subs - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D30V-Size, +Up: D30V-Syntax +



+
+ +
9.9.2.2 Sub-Instructions
+ +

The D30V assembler takes as input a series of instructions, either one-per-line, +or in the special two-per-line format described in the next section. Some of these +instructions will be short-form or sub-instructions. These sub-instructions can be packed +into a single instruction. The assembler will do this automatically. It will also detect +when it should not pack instructions. For example, when a label is defined, the next +instruction will never be packaged with the previous one. Whenever a branch and link +instruction is called, it will not be packaged with the next instruction so the return +address will be valid. Nops are automatically inserted when necessary. + +

If you do not want the assembler automatically making these decisions, you can control +the packaging and execution type (parallel or sequential) with the special execution +symbols described in the next section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSyntax.html new file mode 100644 index 0000000..3152c4a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/D30V_002dSyntax.html @@ -0,0 +1,63 @@ + + +D30V-Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D30V-Opts, +Up: D30V-Dependent +



+
+ +

9.9.2 Syntax

+ +

+The D30V syntax is based on the syntax in Mitsubishi's D30V architecture manual. +The differences are detailed below. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Data.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Data.html new file mode 100644 index 0000000..5ac9368 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Data.html @@ -0,0 +1,55 @@ + + +Data - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: CFI directives, +Up: Pseudo Ops +



+
+ +

7.32 .data subsection

+ +

.data tells as to assemble the following statements onto the +end of the data subsection numbered subsection (which is an +absolute expression). If subsection is omitted, it defaults +to zero. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Def.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Def.html new file mode 100644 index 0000000..1013b4f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Def.html @@ -0,0 +1,53 @@ + + +Def - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Data, +Up: Pseudo Ops +



+
+ +

7.33 .def name

+ +

Begin defining debugging information for a symbol name; the +definition extends until the .endef directive is encountered. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Defining-New-Object-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Defining-New-Object-Attributes.html new file mode 100644 index 0000000..d020a0b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Defining-New-Object-Attributes.html @@ -0,0 +1,62 @@ + + +Defining New Object Attributes - Using as + + + + + + + + + + + + +

+

+Previous: GNU Object Attributes, +Up: Object Attributes +



+
+ +

8.2 Defining New Object Attributes

+ +

If you want to define a new gnu object attribute, here are the places you +will need to modify. New attributes should be discussed on the binutils +mailing list. + +

    +
  • This manual, which is the official register of attributes. +
  • The header for your architecture include/elf, to define the tag. +
  • The bfd support file for your architecture, to merge the attribute +and issue any appropriate link warnings. +
  • Test cases in ld/testsuite for merging and link warnings. +
  • binutils/readelf.c to display your attribute. +
  • GCC, if you want the compiler to mark the attribute automatically. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Density-Instructions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Density-Instructions.html new file mode 100644 index 0000000..da5d617 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Density-Instructions.html @@ -0,0 +1,64 @@ + + +Density Instructions - Using as + + + + + + + + + + + + + + +
9.36.3.1 Using Density Instructions
+ +

+The Xtensa instruction set has a code density option that provides +16-bit versions of some of the most commonly used opcodes. Use of these +opcodes can significantly reduce code size. When possible, the +assembler automatically translates instructions from the core +Xtensa instruction set into equivalent instructions from the Xtensa code +density option. This translation can be disabled by using underscore +prefixes (see Opcode Names), by using the +--no-transform command-line option (see Command Line Options), or by using the no-transform directive +(see transform). + +

It is a good idea not to use the density instructions directly. +The assembler will automatically select dense instructions where +possible. If you later need to use an Xtensa processor without the code +density option, the same assembly code will then work without modification. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Deprecated.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Deprecated.html new file mode 100644 index 0000000..83a0fa1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Deprecated.html @@ -0,0 +1,53 @@ + + +Deprecated - Using as + + + + + + + + + + + + +

+

+Previous: Word, +Up: Pseudo Ops +



+
+ +

7.121 Deprecated Directives

+ +

One day these directives won't work. +They are included for compatibility with older assemblers. +

+
.abort
.line
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Desc.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Desc.html new file mode 100644 index 0000000..40a0614 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Desc.html @@ -0,0 +1,58 @@ + + +Desc - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Def, +Up: Pseudo Ops +



+
+ +

7.34 .desc symbol, abs-expression

+ +

This directive sets the descriptor of the symbol (see Symbol Attributes) +to the low 16 bits of an absolute expression. + +

The .desc directive is not available when as is +configured for COFF output; it is only for a.out or b.out +object format. For the sake of compatibility, as accepts +it, but produces no output, when configured for COFF. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Dim.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Dim.html new file mode 100644 index 0000000..a1c622a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Dim.html @@ -0,0 +1,54 @@ + + +Dim - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Desc, +Up: Pseudo Ops +



+
+ +

7.35 .dim

+ +

This directive is generated by compilers to include auxiliary debugging +information in the symbol table. It is only permitted inside +.def/.endef pairs. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Directives_002di860.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Directives_002di860.html new file mode 100644 index 0000000..c7d3c88 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Directives_002di860.html @@ -0,0 +1,79 @@ + + +Directives-i860 - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Options-i860, +Up: i860-Dependent +



+
+ +

9.14.3 i860 Machine Directives

+ +

+ + +

.dual
Enter dual instruction mode. While this directive is supported, the +preferred way to use dual instruction mode is to explicitly code +the dual bit with the d. prefix. +
+ + + +
.enddual
Exit dual instruction mode. While this directive is supported, the +preferred way to use dual instruction mode is to explicitly code +the dual bit with the d. prefix. +
+ + + +
.atmp
Change the temporary register used when expanding pseudo operations. The +default register is r31. +
+ +

The .dual, .enddual, and .atmp directives are available only in the Intel syntax mode. + +

Both syntaxes allow for the standard .align directive. However, +the Intel syntax additionally allows keywords for the alignment +parameter: ".align type", where `type' is one of .short, .long, +.quad, .single, .double representing alignments of 2, 4, +16, 4, and 8, respectively. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Directives_002di960.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Directives_002di960.html new file mode 100644 index 0000000..1004631 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Directives_002di960.html @@ -0,0 +1,93 @@ + + +Directives-i960 - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Floating Point-i960, +Up: i960-Dependent +



+
+ +

9.15.3 i960 Machine Directives

+ +

+ + +

.bss symbol, length, align
Reserve length bytes in the bss section for a local symbol, +aligned to the power of two specified by align. length and +align must be positive absolute expressions. This directive +differs from .lcomm only in that it permits you to specify +an alignment. See .lcomm. +
+ + + +
.extended flonums
.extended expects zero or more flonums, separated by commas; for +each flonum, .extended emits an ieee extended-format (80-bit) +floating-point number. + +


.leafproc call-lab, bal-lab
You can use the .leafproc directive in conjunction with the +optimized callj instruction to enable faster calls of leaf +procedures. If a procedure is known to call no other procedures, you +may define an entry point that skips procedure prolog code (and that does +not depend on system-supplied saved context), and declare it as the +bal-lab using .leafproc. If the procedure also has an +entry point that goes through the normal prolog, you can specify that +entry point as call-lab. + +

A .leafproc declaration is meant for use in conjunction with the +optimized call instruction callj; the directive records the data +needed later to choose between converting the callj into a +bal or a call. + +

call-lab is optional; if only one argument is present, or if the +two arguments are identical, the single argument is assumed to be the +bal entry point. + +


.sysproc name, index
The .sysproc directive defines a name for a system procedure. +After you define it using .sysproc, you can use name to +refer to the system procedure identified by index when calling +procedures with the optimized call instruction callj. + +

Both arguments are required; index must be between 0 and 31 +(inclusive). +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Dot.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Dot.html new file mode 100644 index 0000000..08dd532 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Dot.html @@ -0,0 +1,57 @@ + + +Dot - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Symbol Names, +Up: Symbols +



+
+ +

5.4 The Special Dot Symbol

+ +

The special symbol . refers to the current address that +as is assembling into. Thus, the expression melvin: +.long . defines melvin to contain its own address. +Assigning a value to . is treated the same as a .org +directive. Thus, the expression .=.+4 is the same as saying +.space 4. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Double.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Double.html new file mode 100644 index 0000000..62a58b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Double.html @@ -0,0 +1,55 @@ + + +Double - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Dim, +Up: Pseudo Ops +



+
+ +

7.36 .double flonums

+ +

.double expects zero or more flonums, separated by commas. It +assembles floating point numbers. +The exact kind of floating point numbers emitted depends on how +as is configured. See Machine Dependencies. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Directives.html new file mode 100644 index 0000000..29873e0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Directives.html @@ -0,0 +1,125 @@ + + +ESA/390 Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ESA/390 Floating Point, +Up: ESA/390-Dependent +



+
+ +

9.12.5 ESA/390 Assembler Directives

+ +

as for the ESA/390 supports all of the standard ELF/SVR4 +assembler directives that are documented in the main part of this +documentation. Several additional directives are supported in order +to implement the ESA/390 addressing model. The most important of these +are .using and .ltorg + +

These are the additional directives in as for the ESA/390: + +

+
.dc
A small subset of the usual DC directive is supported. + +
.drop regno
Stop using regno as the base register. The regno must +have been previously declared with a .using directive in the +same section as the current section. + +
.ebcdic string
Emit the EBCDIC equivalent of the indicated string. The emitted string +will be null terminated. Note that the directives .string etc. emit +ascii strings by default. + +
EQU
The standard HLASM-style EQU directive is not supported; however, the +standard as directive .equ can be used to the same effect. + +
.ltorg
Dump the literal pool accumulated so far; begin a new literal pool. +The literal pool will be written in the current section; in order to +generate correct assembly, a .using must have been previously +specified in the same section. + +
.using expr,regno
Use regno as the base register for all subsequent RX, RS, and SS form +instructions. The expr will be evaluated to obtain the base address; +usually, expr will merely be *. + +

This assembler allows two .using directives to be simultaneously +outstanding, one in the .text section, and one in another section +(typically, the .data section). This feature allows +dynamically loaded objects to be implemented in a relatively +straightforward way. A .using directive must always be specified +in the .text section; this will specify the base register that +will be used for branches in the .text section. A second +.using may be specified in another section; this will specify +the base register that is used for non-label address literals. +When a second .using is specified, then the subsequent +.ltorg must be put in the same section; otherwise an error will +result. + +

Thus, for example, the following code uses r3 to address branch +targets and r4 to address the literal pool, which has been written +to the .data section. The is, the constants =A(some_routine), +=H'42' and =E'3.1416' will all appear in the .data +section. + +

          .data
+          	.using  LITPOOL,r4
+          .text
+          	BASR	r3,0
+          	.using	*,r3
+                  B       START
+          	.long	LITPOOL
+          START:
+          	L	r4,4(,r3)
+          	L	r15,=A(some_routine)
+          	LTR	r15,r15
+          	BNE	LABEL
+          	AH	r0,=H'42'
+          LABEL:
+          	ME	r6,=E'3.1416'
+          .data
+          LITPOOL:
+          	.ltorg
+     
+

Note that this dual-.using directive semantics extends +and is not compatible with HLASM semantics. Note that this assembler +directive does not support the full range of HLASM semantics. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Floating-Point.html new file mode 100644 index 0000000..dc2b020 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Floating-Point.html @@ -0,0 +1,53 @@ + + +ESA/390 Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: ESA/390 Syntax, +Up: ESA/390-Dependent +



+
+ +

9.12.4 Floating Point

+ +

The assembler generates only ieee floating-point numbers. The older +floating point formats are not supported. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Notes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Notes.html new file mode 100644 index 0000000..c5af064 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Notes.html @@ -0,0 +1,61 @@ + + +ESA/390 Notes - Using as + + + + + + + + + + + + +

+

+Next: , +Up: ESA/390-Dependent +



+
+ +

9.12.1 Notes

+ +

The ESA/390 as port is currently intended to be a back-end +for the gnu cc compiler. It is not HLASM compatible, although +it does support a subset of some of the HLASM directives. The only +supported binary file format is ELF; none of the usual MVS/VM/OE/USS +object file formats, such as ESD or XSD, are supported. + +

When used with the gnu cc compiler, the ESA/390 as +will produce correct, fully relocated, functional binaries, and has been +used to compile and execute large projects. However, many aspects should +still be considered experimental; these include shared library support, +dynamically loadable objects, and any relocation other than the 31-bit +relocation. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Opcodes.html new file mode 100644 index 0000000..31ff93e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Opcodes.html @@ -0,0 +1,56 @@ + + +ESA/390 Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: ESA/390 Directives, +Up: ESA/390-Dependent +



+
+ +

9.12.6 Opcodes

+ +

For detailed information on the ESA/390 machine instruction set, see +ESA/390 Principles of Operation (IBM Publication Number DZ9AR004). + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Options.html new file mode 100644 index 0000000..a20cd7e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Options.html @@ -0,0 +1,54 @@ + + +ESA/390 Options - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ESA/390 Notes, +Up: ESA/390-Dependent +



+
+ +

9.12.2 Options

+ +

as has no machine-dependent command-line options for the ESA/390. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Syntax.html new file mode 100644 index 0000000..67a917f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390-Syntax.html @@ -0,0 +1,102 @@ + + +ESA/390 Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ESA/390 Options, +Up: ESA/390-Dependent +



+
+ +

9.12.3 Syntax

+ +

The opcode/operand syntax follows the ESA/390 Principles of Operation +manual; assembler directives and general syntax are loosely based on the +prevailing AT&T/SVR4/ELF/Solaris style notation. HLASM-style directives +are not supported for the most part, with the exception of those +described herein. + +

A leading dot in front of directives is optional, and the case of +directives is ignored; thus for example, .using and USING have the same +effect. + +

A colon may immediately follow a label definition. This is +simply for compatibility with how most assembly language programmers +write code. + +

# is the line comment character. + +

; can be used instead of a newline to separate statements. + +

Since $ has no special meaning, you may use it in symbol names. + +

Registers can be given the symbolic names r0..r15, fp0, fp2, fp4, fp6. +By using thesse symbolic names, as can detect simple +syntax errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca +for r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base +for r3 and rpgt or r.pgt for r4. + +

* is the current location counter. Unlike . it is always +relative to the last USING directive. Note that this means that +expressions cannot use multiplication, as any occurrence of * +will be interpreted as a location counter. + +

All labels are relative to the last USING. Thus, branches to a label +always imply the use of base+displacement. + +

Many of the usual forms of address constants / address literals +are supported. Thus, +

     	.using	*,r3
+     	L	r15,=A(some_routine)
+     	LM	r6,r7,=V(some_longlong_extern)
+     	A	r1,=F'12'
+     	AH	r0,=H'42'
+     	ME	r6,=E'3.1416'
+     	MD	r6,=D'3.14159265358979'
+     	O	r6,=XL4'cacad0d0'
+     	.ltorg
+
+

should all behave as expected: that is, an entry in the literal +pool will be created (or reused if it already exists), and the +instruction operands will be the displacement into the literal pool +using the current base register (as last declared with the .using +directive). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390_002dDependent.html new file mode 100644 index 0000000..c5fc750 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/ESA_002f390_002dDependent.html @@ -0,0 +1,61 @@ + + +ESA/390-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: HPPA-Dependent, +Up: Machine Dependencies +



+
+ +

9.12 ESA/390 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Eject.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Eject.html new file mode 100644 index 0000000..2ed3e6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Eject.html @@ -0,0 +1,52 @@ + + +Eject - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Double, +Up: Pseudo Ops +



+
+ +

7.37 .eject

+ +

Force a page break at this point, when generating assembly listings. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Else.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Else.html new file mode 100644 index 0000000..cd6b562 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Else.html @@ -0,0 +1,55 @@ + + +Else - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Eject, +Up: Pseudo Ops +



+
+ +

7.38 .else

+ +

.else is part of the as support for conditional +assembly; see .if. It marks the beginning of a section +of code to be assembled if the condition for the preceding .if +was false. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Elseif.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Elseif.html new file mode 100644 index 0000000..ef33908 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Elseif.html @@ -0,0 +1,54 @@ + + +Elseif - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Else, +Up: Pseudo Ops +



+
+ +

7.39 .elseif

+ +

.elseif is part of the as support for conditional +assembly; see .if. It is shorthand for beginning a new +.if block that would otherwise fill the entire .else section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Empty-Exprs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Empty-Exprs.html new file mode 100644 index 0000000..743c39f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Empty-Exprs.html @@ -0,0 +1,53 @@ + + +Empty Exprs - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Expressions +



+
+ +

6.1 Empty Expressions

+ +

An empty expression has no value: it is just whitespace or null. +Wherever an absolute expression is required, you may omit the +expression, and as assumes a value of (absolute) 0. This +is compatible with other assemblers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/End.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/End.html new file mode 100644 index 0000000..6afa8b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/End.html @@ -0,0 +1,53 @@ + + +End - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Elseif, +Up: Pseudo Ops +



+
+ +

7.40 .end

+ +

.end marks the end of the assembly file. as does not +process anything in the file past the .end directive. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endef.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endef.html new file mode 100644 index 0000000..76d3ed8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endef.html @@ -0,0 +1,53 @@ + + +Endef - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: End, +Up: Pseudo Ops +



+
+ +

7.41 .endef

+ +

This directive flags the end of a symbol definition begun with +.def. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endfunc.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endfunc.html new file mode 100644 index 0000000..356d15d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endfunc.html @@ -0,0 +1,52 @@ + + +Endfunc - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Endef, +Up: Pseudo Ops +



+
+ +

7.42 .endfunc

+ +

.endfunc marks the end of a function specified with .func. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endif.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endif.html new file mode 100644 index 0000000..6adcaed --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Endif.html @@ -0,0 +1,54 @@ + + +Endif - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Endfunc, +Up: Pseudo Ops +



+
+ +

7.43 .endif

+ +

.endif is part of the as support for conditional assembly; +it marks the end of a block of code that is only assembled +conditionally. See .if. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Equ.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Equ.html new file mode 100644 index 0000000..c349bd6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Equ.html @@ -0,0 +1,62 @@ + + +Equ - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Endif, +Up: Pseudo Ops +



+
+ +

7.44 .equ symbol, expression

+ +

This directive sets the value of symbol to expression. +It is synonymous with .set; see .set. + +

The syntax for equ on the HPPA is +symbol .equ expression. + +

The syntax for equ on the Z80 is +symbol equ expression. +On the Z80 it is an eror if symbol is already defined, +but the symbol is not protected from later redefinition. +Compare Equiv. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Equiv.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Equiv.html new file mode 100644 index 0000000..36f788c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Equiv.html @@ -0,0 +1,63 @@ + + +Equiv - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Equ, +Up: Pseudo Ops +



+
+ +

7.45 .equiv symbol, expression

+ +

The .equiv directive is like .equ and .set, except that +the assembler will signal an error if symbol is already defined. Note a +symbol which has been referenced but not actually defined is considered to be +undefined. + +

Except for the contents of the error message, this is roughly equivalent to +

     .ifdef SYM
+     .err
+     .endif
+     .equ SYM,VAL
+
+

plus it protects the symbol from later redefinition. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Eqv.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Eqv.html new file mode 100644 index 0000000..fdc73db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Eqv.html @@ -0,0 +1,55 @@ + + +Eqv - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Equiv, +Up: Pseudo Ops +



+
+ +

7.46 .eqv symbol, expression

+ +

The .eqv directive is like .equiv, but no attempt is made to +evaluate the expression or any part of it immediately. Instead each time +the resulting symbol is used in an expression, a snapshot of its current +value is taken. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Err.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Err.html new file mode 100644 index 0000000..116705c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Err.html @@ -0,0 +1,54 @@ + + +Err - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Eqv, +Up: Pseudo Ops +



+
+ +

7.47 .err

+ +

If as assembles a .err directive, it will print an error +message and, unless the -Z option was used, it will not generate an +object file. This can be used to signal an error in conditionally compiled code. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Error.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Error.html new file mode 100644 index 0000000..f135579 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Error.html @@ -0,0 +1,58 @@ + + +Error - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Err, +Up: Pseudo Ops +



+
+ +

7.48 .error "string"

+ +

+Similarly to .err, this directive emits an error, but you can specify a +string that will be emitted as the error message. If you don't specify the +message, it defaults to ".error directive invoked in source file". +See Error and Warning Messages. + +

      .error "This code has not been assembled and tested."
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Errors.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Errors.html new file mode 100644 index 0000000..4a7a724 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Errors.html @@ -0,0 +1,76 @@ + + +Errors - Using as + + + + + + + + + + + + +
+

+Previous: Object, +Up: Overview +



+
+ +

1.7 Error and Warning Messages

+ + +

as may write warnings and error messages to the standard error +file (usually your terminal). This should not happen when a compiler +runs as automatically. Warnings report an assumption made so +that as could keep assembling a flawed program; errors report a +grave problem that stops the assembly. + + +

Warning messages have the format + +

     file_name:NNN:Warning Message Text
+
+

(where NNN is a line number). If a logical file name has been given +(see .file) it is used for the filename, otherwise the name of +the current input file is used. If a logical line number was given +(see .line) +then it is used to calculate the number printed, +otherwise the actual line in the current source file is printed. The +message text is intended to be self explanatory (in the grand Unix +tradition). + +

Error messages have the format +

     file_name:NNN:FATAL:Error Message Text
+
+

The file name and line number are derived as for warning +messages. The actual message text may be rather less explanatory +because many of them aren't supposed to happen. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Exitm.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Exitm.html new file mode 100644 index 0000000..e575aad --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Exitm.html @@ -0,0 +1,52 @@ + + +Exitm - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Error, +Up: Pseudo Ops +



+
+ +

7.49 .exitm

+ +

Exit early from the current macro definition. See Macro. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Expressions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Expressions.html new file mode 100644 index 0000000..7c28769 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Expressions.html @@ -0,0 +1,64 @@ + + +Expressions - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Symbols, +Up: Top +



+
+ +

6 Expressions

+ +

An expression specifies an address or numeric value. +Whitespace may precede and/or follow an expression. + +

The result of an expression must be an absolute number, or else an offset into +a particular section. If an expression is not absolute, and there is not +enough information when as sees the expression to know its +section, a second pass over the source program might be necessary to interpret +the expression—but the second pass is currently not implemented. +as aborts with an error message in this situation. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Extern.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Extern.html new file mode 100644 index 0000000..54e553a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Extern.html @@ -0,0 +1,54 @@ + + +Extern - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Exitm, +Up: Pseudo Ops +



+
+ +

7.50 .extern

+ +

.extern is accepted in the source program—for compatibility +with other assemblers—but it is ignored. as treats +all undefined symbols as external. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Fail.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Fail.html new file mode 100644 index 0000000..802e3f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Fail.html @@ -0,0 +1,56 @@ + + +Fail - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Extern, +Up: Pseudo Ops +



+
+ +

7.51 .fail expression

+ +

Generates an error or a warning. If the value of the expression is 500 +or more, as will print a warning message. If the value is less +than 500, as will print an error message. The message will +include the value of expression. This can occasionally be useful inside +complex nested macros or conditional assembly. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/File.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/File.html new file mode 100644 index 0000000..5efad83 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/File.html @@ -0,0 +1,57 @@ + + +File - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Fail, +Up: Pseudo Ops +



+
+ +

7.52 .file string

+ +

.file tells as that we are about to start a new logical +file. string is the new file name. In general, the filename is +recognized whether or not it is surrounded by quotes "; but if you wish +to specify an empty file name, you must give the quotes–"". This +statement may go away in future: it is only recognized to be compatible with +old as programs. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Fill.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Fill.html new file mode 100644 index 0000000..c5eb1a7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Fill.html @@ -0,0 +1,67 @@ + + +Fill - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: File, +Up: Pseudo Ops +



+
+ +

7.53 .fill repeat , size , value

+ +

repeat, size and value are absolute expressions. +This emits repeat copies of size bytes. Repeat +may be zero or more. Size may be zero or more, but if it is +more than 8, then it is deemed to have the value 8, compatible with +other people's assemblers. The contents of each repeat bytes +is taken from an 8-byte number. The highest order 4 bytes are +zero. The lowest order 4 bytes are value rendered in the +byte-order of an integer on the computer as is assembling for. +Each size bytes in a repetition is taken from the lowest order +size bytes of this number. Again, this bizarre behavior is +compatible with other people's assemblers. + +

size and value are optional. +If the second comma and value are absent, value is +assumed zero. If the first comma and following tokens are absent, +size is assumed to be 1. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Float.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Float.html new file mode 100644 index 0000000..bc70ccc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Float.html @@ -0,0 +1,56 @@ + + +Float - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Fill, +Up: Pseudo Ops +



+
+ +

7.54 .float flonums

+ +

This directive assembles zero or more flonums, separated by commas. It +has the same effect as .single. +The exact kind of floating point numbers emitted depends on how +as is configured. +See Machine Dependencies. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Floating-Point_002di960.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Floating-Point_002di960.html new file mode 100644 index 0000000..e159d47 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Floating-Point_002di960.html @@ -0,0 +1,53 @@ + + +Floating Point-i960 - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Options-i960, +Up: i960-Dependent +



+
+ +

9.15.2 Floating Point

+ +

as generates ieee floating-point numbers for the directives +.float, .double, .extended, and .single. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Flonums.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Flonums.html new file mode 100644 index 0000000..c8bce3a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Flonums.html @@ -0,0 +1,102 @@ + + +Flonums - Using as + + + + + + + + + + + + +

+

+Previous: Bignums, +Up: Numbers +



+
+ +
3.6.2.3 Flonums
+ +

+A flonum represents a floating point number. The translation is +indirect: a decimal floating point number from the text is converted by +as to a generic binary floating point number of more than +sufficient precision. This generic floating point number is converted +to a particular computer's floating point format (or formats) by a +portion of as specialized to that computer. + +

A flonum is written by writing (in order) +

    +
  • The digit 0. +(0 is optional on the HPPA.) + +
  • A letter, to tell as the rest of the number is a flonum. +e is recommended. Case is not important. + +

    On the H8/300, Renesas / SuperH SH, +and AMD 29K architectures, the letter must be +one of the letters DFPRSX (in upper or lower case). + +

    On the ARC, the letter must be one of the letters DFRS +(in upper or lower case). + +

    On the Intel 960 architecture, the letter must be +one of the letters DFT (in upper or lower case). + +

    On the HPPA architecture, the letter must be E (upper case only). + +

  • An optional sign: either + or -. + +
  • An optional integer part: zero or more decimal digits. + +
  • An optional fractional part: . followed by zero +or more decimal digits. + +
  • An optional exponent, consisting of: + +
      +
    • An E or e. + + +
    • Optional sign: either + or -. +
    • One or more decimal digits. +
    + +
+ +

At least one of the integer part or the fractional part must be +present. The floating point number has the usual base-10 value. + +

as does all processing using integers. Flonums are computed +independently of any floating point hardware in the computer running +as. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Func.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Func.html new file mode 100644 index 0000000..9f133d0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Func.html @@ -0,0 +1,59 @@ + + +Func - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Float, +Up: Pseudo Ops +



+
+ +

7.55 .func name[,label]

+ +

.func emits debugging information to denote function name, and +is ignored unless the file is assembled with debugging enabled. +Only --gstabs[+] is currently supported. +label is the entry point of the function and if omitted name +prepended with the leading char is used. +leading char is usually _ or nothing, depending on the target. +All functions are currently defined to have void return type. +The function must be terminated with .endfunc. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Assembler.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Assembler.html new file mode 100644 index 0000000..6336945 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Assembler.html @@ -0,0 +1,75 @@ + + +GNU Assembler - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Manual, +Up: Overview +



+
+ +

1.2 The GNU Assembler

+ + +

gnu as is really a family of assemblers. +If you use (or have used) the gnu assembler on one architecture, you +should find a fairly similar environment when you use it on another +architecture. Each version has much in common with the others, +including object file formats, most assembler directives (often called +pseudo-ops) and assembler syntax. + +

as is primarily intended to assemble the output of the +gnu C compiler gcc for use by the linker +ld. Nevertheless, we've tried to make as +assemble correctly everything that other assemblers for the same +machine would assemble. +Any exceptions are documented explicitly (see Machine Dependencies). + + +This doesn't mean as always uses the same syntax as another +assembler for the same architecture; for example, we know of several +incompatible versions of 680x0 assembly language syntax. + + +

Unlike older assemblers, as is designed to assemble a source +program in one pass of the source file. This has a subtle impact on the +.org directive (see .org). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..9b5051c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Free-Documentation-License.html @@ -0,0 +1,422 @@ + + +GNU Free Documentation License - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Acknowledgements, +Up: Top +



+
+ +

Appendix A GNU Free Documentation License

+ +
Version 1.1, March 2000
+ +
     Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +written document “free” in the sense of freedom: to assure everyone +the effective freedom to copy and redistribute it, with or without +modifying it, either commercially or noncommercially. Secondarily, +this License preserves for the author and publisher a way to get +credit for their work, while not being considered responsible for +modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

    +     
    +     
    +
  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work that contains a +notice placed by the copyright holder saying it can be distributed +under the terms of this License. The “Document”, below, refers to any +such manual or work. Any member of the public is a licensee, and is +addressed as “you.” + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (For example, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, whose contents can be viewed and edited directly and +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup has been designed to thwart or discourage +subsequent modification by readers is not Transparent. A copy that is +not “Transparent” is called “Opaque.” + +

    Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML designed for human modification. Opaque formats include +PostScript, PDF, proprietary formats that can be read and edited only +by proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML produced by some word processors for output +purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. +

    +     
    +     
    +
  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +

    +     
    +     
    +
  4. COPYING IN QUANTITY + +

    If you publish printed copies of the Document numbering more than 100, +and the Document's license notice requires Cover Texts, you must enclose +the copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a publicly-accessible computer-network location containing a complete +Transparent copy of the Document, free of added material, which the +general network-using public has access to download anonymously at no +charge using public-standard network protocols. If you use the latter +option, you must take reasonably prudent steps, when you begin +distribution of Opaque copies in quantity, to ensure that this +Transparent copy will remain thus accessible at the stated location +until at least one year after the last time you distribute an Opaque +copy (directly or through your agents or retailers) of that edition to +the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +

    +     
    +     
    +
  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

    A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission.
    +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five).
    +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher.
    +D. Preserve all the copyright notices of the Document.
    +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices.
    +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below.
    +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice.
    +H. Include an unaltered copy of this License.
    +I. Preserve the section entitled “History”, and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled “History” in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence.
    +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the “History” section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission.
    +K. In any section entitled “Acknowledgements” or “Dedications”, + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein.
    +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles.
    +M. Delete any section entitled “Endorsements.” Such a section + may not be included in the Modified Version.
    +N. Do not retitle any existing section as “Endorsements” + or to conflict in title with any Invariant Section.
    +

    +     
    +     
    + If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties–for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +

    +     
    +     
    +
  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections entitled “History” +in the various original documents, forming one section entitled +“History”; likewise combine any sections entitled “Acknowledgements”, +and any sections entitled “Dedications.” You must delete all sections +entitled “Endorsements.” +

    +     
    +     
    +
  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +

    +     
    +     
    +
  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, does not as a whole count as a Modified Version +of the Document, provided no compilation copyright is claimed for the +compilation. Such a compilation is called an “aggregate”, and this +License does not apply to the other self-contained works thus compiled +with the Document, on account of their being thus compiled, if they +are not themselves derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one quarter +of the entire aggregate, the Document's Cover Texts may be placed on +covers that surround only the Document within the aggregate. +Otherwise they must appear on covers around the whole aggregate. +

    +     
    +     
    +
  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License provided that you also include the +original English version of this License. In case of a disagreement +between the translation and the original English version of this +License, the original English version will prevail. +

    +     
    +     
    +
  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. +

    +     
    +     
    +
  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

     Copyright (C)  year  your name.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being list their titles, with the
+     Front-Cover Texts being list, and with the Back-Cover Texts being list.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+

If you have no Invariant Sections, write “with no Invariant Sections” +instead of saying which ones are invariant. If you have no +Front-Cover Texts, write “no Front-Cover Texts” instead of +“Front-Cover Texts being list”; likewise for Back-Cover Texts. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Object-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Object-Attributes.html new file mode 100644 index 0000000..b68ae58 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GNU-Object-Attributes.html @@ -0,0 +1,108 @@ + + +GNU Object Attributes - Using as + + + + + + + + + + + + +

+ +

8.1 gnu Object Attributes

+ +

The .gnu_attribute directive records an object attribute +with vendor gnu. + +

Except for Tag_compatibility, which has both an integer and a string for +its value, gnu attributes have a string value if the tag number is odd and +an integer value if the tag number is even. The second bit (tag & +2 is set for architecture-independent attributes and clear for +architecture-dependent ones. + +

8.1.1 Common gnu attributes

+ +

These attributes are valid on all architectures. + +

+
Tag_compatibility (32)
The compatibility attribute takes an integer flag value and a vendor name. If +the flag value is 0, the file is compatible with other toolchains. If it is 1, +then the file is only compatible with the named toolchain. If it is greater +than 1, the file can only be processed by other toolchains under some private +arrangement indicated by the flag value and the vendor name. +
+ +

8.1.2 MIPS Attributes

+ +
+
Tag_GNU_MIPS_ABI_FP (4)
The floating-point ABI used by this object file. The value will be: + +
    +
  • 0 for files not affected by the floating-point ABI. +
  • 1 for files using the hardware floating-point with a standard double-precision +FPU. +
  • 2 for files using the hardware floating-point ABI with a single-precision FPU. +
  • 3 for files using the software floating-point ABI. +
  • 4 for files using the hardware floating-point ABI with 64-bit wide +double-precision floating-point registers and 32-bit wide general +purpose registers. +
+
+ +

8.1.3 PowerPC Attributes

+ +
+
Tag_GNU_Power_ABI_FP (4)
The floating-point ABI used by this object file. The value will be: + +
    +
  • 0 for files not affected by the floating-point ABI. +
  • 1 for files using double-precision hardware floating-point ABI. +
  • 2 for files using the software floating-point ABI. +
  • 3 for files using single-precision hardware floating-point ABI. +
+ +
Tag_GNU_Power_ABI_Vector (8)
The vector ABI used by this object file. The value will be: + +
    +
  • 0 for files not affected by the vector ABI. +
  • 1 for files using general purpose registers to pass vectors. +
  • 2 for files using AltiVec registers to pass vectors. +
  • 3 for files using SPE registers to pass vectors. +
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GREG_002dbase.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GREG_002dbase.html new file mode 100644 index 0000000..d3db38b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/GREG_002dbase.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Global.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Global.html new file mode 100644 index 0000000..714dc39 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Global.html @@ -0,0 +1,63 @@ + + +Global - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Func, +Up: Pseudo Ops +



+
+ +

7.56 .global symbol, .globl symbol

+ +

.global makes the symbol visible to ld. If you define +symbol in your partial program, its value is made available to +other partial programs that are linked with it. Otherwise, +symbol takes its attributes from a symbol of the same name +from another file linked into the same program. + +

Both spellings (.globl and .global) are accepted, for +compatibility with other assemblers. + +

On the HPPA, .global is not always enough to make it accessible to other +partial programs. You may need the HPPA-only .EXPORT directive as well. +See HPPA Assembler Directives. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Gnu_005fattribute.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Gnu_005fattribute.html new file mode 100644 index 0000000..0020c98 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Gnu_005fattribute.html @@ -0,0 +1,52 @@ + + +Gnu_attribute - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Global, +Up: Pseudo Ops +



+
+ +

7.57 .gnu_attribute tag,value

+ +

Record a gnu object attribute for this file. See Object Attributes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Directives.html new file mode 100644 index 0000000..dcb3bb4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Directives.html @@ -0,0 +1,75 @@ + + +H8/300 Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: H8/300 Floating Point, +Up: H8/300-Dependent +



+
+ +

9.10.4 H8/300 Machine Directives

+ +

as has the following machine-dependent directives for +the H8/300: + + + +

.h8300h
Recognize and emit additional instructions for the H8/300H variant, and +also make .int emit 32-bit numbers rather than the usual (16-bit) +for the H8/300 family. + +
.h8300s
Recognize and emit additional instructions for the H8S variant, and +also make .int emit 32-bit numbers rather than the usual (16-bit) +for the H8/300 family. + +
.h8300hn
Recognize and emit additional instructions for the H8/300H variant in +normal mode, and also make .int emit 32-bit numbers rather than +the usual (16-bit) for the H8/300 family. + +
.h8300sn
Recognize and emit additional instructions for the H8S variant in +normal mode, and also make .int emit 32-bit numbers rather than +the usual (16-bit) for the H8/300 family. +
+ +

On the H8/300 family (including the H8/300H) .word directives +generate 16-bit numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Floating-Point.html new file mode 100644 index 0000000..dbf3c32 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Floating-Point.html @@ -0,0 +1,54 @@ + + +H8/300 Floating Point - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: H8/300 Syntax, +Up: H8/300-Dependent +



+
+ +

9.10.3 Floating Point

+ +

The H8/300 family has no hardware floating point, but the .float +directive generates ieee floating-point numbers for compatibility +with other development tools. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Opcodes.html new file mode 100644 index 0000000..f1aa055 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Opcodes.html @@ -0,0 +1,74 @@ + + +H8/300 Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: H8/300 Directives, +Up: H8/300-Dependent +



+
+ +

9.10.5 Opcodes

+ +

For detailed information on the H8/300 machine instruction set, see +H8/300 Series Programming Manual. For information specific to +the H8/300H, see H8/300H Series Programming Manual (Renesas). + +

as implements all the standard H8/300 opcodes. No additional +pseudo-instructions are needed on this family. + +

Four H8/300 instructions (add, cmp, mov, +sub) are defined with variants using the suffixes .b, +.w, and .l to specify the size of a memory operand. +as supports these suffixes, but does not require them; +since one of the operands is always a register, as can +deduce the correct size. + +

For example, since r0 refers to a 16-bit register, +

     mov    r0,@foo
+
is equivalent to
+ mov.w r0,@foo +
+

If you use the size suffixes, as issues a warning when +the suffix and the register size do not match. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Options.html new file mode 100644 index 0000000..50f6a53 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Options.html @@ -0,0 +1,56 @@ + + +H8/300 Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: H8/300-Dependent +



+
+ +

9.10.1 Options

+ +

The Renesas H8/300 version of as has one +machine-dependent option: + +

+
-h-tick-hex
Support H'00 style hex constants in addition to 0x00 style. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Syntax.html new file mode 100644 index 0000000..b5b95b7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300-Syntax.html @@ -0,0 +1,56 @@ + + +H8/300 Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: H8/300 Options, +Up: H8/300-Dependent +



+
+ +

9.10.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dAddressing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dAddressing.html new file mode 100644 index 0000000..dadcb8f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dAddressing.html @@ -0,0 +1,73 @@ + + +H8/300-Addressing - Using as + + + + + + + + + + + + +
+

+Previous: H8/300-Regs, +Up: H8/300 Syntax +



+
+ +
9.10.2.3 Addressing Modes
+ +

as understands the following addressing modes for the H8/300: +

+
rn
Register direct + +
@rn
Register indirect + +
@(d, rn)
@(d:16, rn)
@(d:24, rn)
Register indirect: 16-bit or 24-bit displacement d from register +n. (24-bit displacements are only meaningful on the H8/300H.) + +
@rn+
Register indirect with post-increment + +
@-rn
Register indirect with pre-decrement + +
@aa
@aa:8
@aa:16
@aa:24
Absolute address aa. (The address size :24 only makes +sense on the H8/300H.) + +
#xx
#xx:8
#xx:16
#xx:32
Immediate data xx. You may specify the :8, :16, or +:32 for clarity, if you wish; but as neither +requires this nor uses it—the data size required is taken from +context. + +
@@aa
@@aa:8
Memory indirect. You may specify the :8 for clarity, if you +wish; but as neither requires this nor uses it. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dChars.html new file mode 100644 index 0000000..c64c750 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dChars.html @@ -0,0 +1,53 @@ + + +H8/300-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: H8/300 Syntax +



+
+ +
9.10.2.1 Special Characters
+ +

; is the line comment character. + +

$ can be used instead of a newline to separate statements. +Therefore you may not use $ in symbol names on the H8/300. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dDependent.html new file mode 100644 index 0000000..03a2ab8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dDependent.html @@ -0,0 +1,60 @@ + + +H8/300-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D30V-Dependent, +Up: Machine Dependencies +



+
+ +

9.10 H8/300 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dRegs.html new file mode 100644 index 0000000..32583aa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/H8_002f300_002dRegs.html @@ -0,0 +1,69 @@ + + +H8/300-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: H8/300-Chars, +Up: H8/300 Syntax +



+
+ +
9.10.2.2 Register Names
+ +

You can use predefined symbols of the form rnh and +rnl to refer to the H8/300 registers as sixteen 8-bit +general-purpose registers. n is a digit from 0 to +7); for instance, both r0h and r7l are valid +register names. + +

You can also use the eight predefined symbols rn to refer +to the H8/300 registers as 16-bit registers (you must use this form for +addressing). + +

On the H8/300H, you can also use the eight predefined symbols +ern (er0 ... er7) to refer to the 32-bit +general purpose registers. + +

The two control registers are called pc (program counter; a +16-bit register, except on the H8/300H where it is 24 bits) and +ccr (condition code register; an 8-bit register). r7 is +used as the stack pointer, and can also be called sp. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Directives.html new file mode 100644 index 0000000..41aabcf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Directives.html @@ -0,0 +1,230 @@ + + +HPPA Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: HPPA Floating Point, +Up: HPPA-Dependent +



+
+ +

9.11.5 HPPA Assembler Directives

+ +

as for the HPPA supports many additional directives for +compatibility with the native assembler. This section describes them only +briefly. For detailed information on HPPA-specific assembler directives, see +HP9000 Series 800 Assembly Language Reference Manual (HP 92432-90001). + +

as does not support the following assembler directives +described in the HP manual: + +

     .endm           .liston
+     .enter          .locct
+     .leave          .macro
+     .listoff
+
+

Beyond those implemented for compatibility, as supports one +additional assembler directive for the HPPA: .param. It conveys +register argument locations for static functions. Its syntax closely follows +the .export directive. + +

These are the additional directives in as for the HPPA: + +

+
.block n
.blockz n
Reserve n bytes of storage, and initialize them to zero. + +
.call
Mark the beginning of a procedure call. Only the special case with no +arguments is allowed. + +
.callinfo [ param=value, ... ] [ flag, ... ]
Specify a number of parameters and flags that define the environment for a +procedure. + +

param may be any of frame (frame size), entry_gr (end of +general register range), entry_fr (end of float register range), +entry_sr (end of space register range). + +

The values for flag are calls or caller (proc has +subroutines), no_calls (proc does not call subroutines), save_rp +(preserve return pointer), save_sp (proc preserves stack pointer), +no_unwind (do not unwind this proc), hpux_int (proc is interrupt +routine). + +

.code
Assemble into the standard section called $TEXT$, subsection +$CODE$. + +
.copyright "string"
In the SOM object format, insert string into the object code, marked as a +copyright string. + +
.copyright "string"
In the ELF object format, insert string into the object code, marked as a +version string. + +
.enter
Not yet supported; the assembler rejects programs containing this directive. + +
.entry
Mark the beginning of a procedure. + +
.exit
Mark the end of a procedure. + +
.export name [ ,typ ] [ ,param=r ]
Make a procedure name available to callers. typ, if present, must +be one of absolute, code (ELF only, not SOM), data, +entry, data, entry, millicode, plabel, +pri_prog, or sec_prog. + +

param, if present, provides either relocation information for the +procedure arguments and result, or a privilege level. param may be +argwn (where n ranges from 0 to 3, and +indicates one of four one-word arguments); rtnval (the procedure's +result); or priv_lev (privilege level). For arguments or the result, +r specifies how to relocate, and must be one of no (not +relocatable), gr (argument is in general register), fr (in +floating point register), or fu (upper half of float register). +For priv_lev, r is an integer. + +

.half n
Define a two-byte integer constant n; synonym for the portable +as directive .short. + +
.import name [ ,typ ]
Converse of .export; make a procedure available to call. The arguments +use the same conventions as the first two arguments for .export. + +
.label name
Define name as a label for the current assembly location. + +
.leave
Not yet supported; the assembler rejects programs containing this directive. + +
.origin lc
Advance location counter to lc. Synonym for the as +portable directive .org. + +
.param name [ ,typ ] [ ,param=r ]
+Similar to .export, but used for static procedures. + +
.proc
Use preceding the first statement of a procedure. + +
.procend
Use following the last statement of a procedure. + +
label .reg expr
+Synonym for .equ; define label with the absolute expression +expr as its value. + +
.space secname [ ,params ]
Switch to section secname, creating a new section by that name if +necessary. You may only use params when creating a new section, not +when switching to an existing one. secname may identify a section by +number rather than by name. + +

If specified, the list params declares attributes of the section, +identified by keywords. The keywords recognized are spnum=exp +(identify this section by the number exp, an absolute expression), +sort=exp (order sections according to this sort key when linking; +exp is an absolute expression), unloadable (section contains no +loadable data), notdefined (this section defined elsewhere), and +private (data in this section not available to other programs). + +

.spnum secnam
+Allocate four bytes of storage, and initialize them with the section number of +the section named secnam. (You can define the section number with the +HPPA .space directive.) + +


.string "str"
Copy the characters in the string str to the object file. +See Strings, for information on escape sequences you can use in +as strings. + +

Warning! The HPPA version of .string differs from the +usual as definition: it does not write a zero byte +after copying str. + +

.stringz "str"
Like .string, but appends a zero byte after copying str to object +file. + +
.subspa name [ ,params ]
.nsubspa name [ ,params ]
Similar to .space, but selects a subsection name within the +current section. You may only specify params when you create a +subsection (in the first instance of .subspa for this name). + +

If specified, the list params declares attributes of the subsection, +identified by keywords. The keywords recognized are quad=expr +(“quadrant” for this subsection), align=expr (alignment for +beginning of this subsection; a power of two), access=expr (value +for “access rights” field), sort=expr (sorting order for this +subspace in link), code_only (subsection contains only code), +unloadable (subsection cannot be loaded into memory), comdat +(subsection is comdat), common (subsection is common block), +dup_comm (subsection may have duplicate names), or zero +(subsection is all zeros, do not write in object file). + +

.nsubspa always creates a new subspace with the given name, even +if one with the same name already exists. + +

comdat, common and dup_comm can be used to implement +various flavors of one-only support when using the SOM linker. The SOM +linker only supports specific combinations of these flags. The details +are not documented. A brief description is provided here. + +

comdat provides a form of linkonce support. It is useful for +both code and data subspaces. A comdat subspace has a key symbol +marked by the is_comdat flag or ST_COMDAT. Only the first +subspace for any given key is selected. The key symbol becomes universal +in shared links. This is similar to the behavior of secondary_def +symbols. + +

common provides Fortran named common support. It is only useful +for data subspaces. Symbols with the flag is_common retain this +flag in shared links. Referencing a is_common symbol in a shared +library from outside the library doesn't work. Thus, is_common +symbols must be output whenever they are needed. + +

common and dup_comm together provide Cobol common support. +The subspaces in this case must all be the same length. Otherwise, this +support is similar to the Fortran common support. + +

dup_comm by itself provides a type of one-only support for code. +Only the first dup_comm subspace is selected. There is a rather +complex algorithm to compare subspaces. Code symbols marked with the +dup_common flag are hidden. This support was intended for "C++ +duplicate inlines". + +

A simplified technique is used to mark the flags of symbols based on +the flags of their subspace. A symbol with the scope SS_UNIVERSAL and +type ST_ENTRY, ST_CODE or ST_DATA is marked with the corresponding +settings of comdat, common and dup_comm from the +subspace, respectively. This avoids having to introduce additional +directives to mark these symbols. The HP assembler sets is_common +from common. However, it doesn't set the dup_common from +dup_comm. It doesn't have comdat support. + +

.version "str"
Write str as version identifier in object code. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Floating-Point.html new file mode 100644 index 0000000..fcbcacd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Floating-Point.html @@ -0,0 +1,52 @@ + + +HPPA Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: HPPA Syntax, +Up: HPPA-Dependent +



+
+ +

9.11.4 Floating Point

+ +

The HPPA family uses ieee floating-point numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Notes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Notes.html new file mode 100644 index 0000000..fa1bff9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Notes.html @@ -0,0 +1,62 @@ + + +HPPA Notes - Using as + + + + + + + + + + + + +

+

+Next: , +Up: HPPA-Dependent +



+
+ +

9.11.1 Notes

+ +

As a back end for gnu cc as has been throughly tested and should +work extremely well. We have tested it only minimally on hand written assembly +code and no one has tested it much on the assembly output from the HP +compilers. + +

The format of the debugging sections has changed since the original +as port (version 1.3X) was released; therefore, +you must rebuild all HPPA objects and libraries with the new +assembler so that you can debug the final executable. + +

The HPPA as port generates a small subset of the relocations +available in the SOM and ELF object file formats. Additional relocation +support will be added as it becomes necessary. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Opcodes.html new file mode 100644 index 0000000..704c9fb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Opcodes.html @@ -0,0 +1,55 @@ + + +HPPA Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: HPPA Directives, +Up: HPPA-Dependent +



+
+ +

9.11.6 Opcodes

+ +

For detailed information on the HPPA machine instruction set, see +PA-RISC Architecture and Instruction Set Reference Manual +(HP 09740-90039). + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Options.html new file mode 100644 index 0000000..c6f96aa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Options.html @@ -0,0 +1,54 @@ + + +HPPA Options - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: HPPA Notes, +Up: HPPA-Dependent +



+
+ +

9.11.2 Options

+ +

as has no machine-dependent command-line options for the HPPA. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Syntax.html new file mode 100644 index 0000000..b3a7c06 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA-Syntax.html @@ -0,0 +1,79 @@ + + +HPPA Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: HPPA Options, +Up: HPPA-Dependent +



+
+ +

9.11.3 Syntax

+ +

The assembler syntax closely follows the HPPA instruction set +reference manual; assembler directives and general syntax closely follow the +HPPA assembly language reference manual, with a few noteworthy differences. + +

First, a colon may immediately follow a label definition. This is +simply for compatibility with how most assembly language programmers +write code. + +

Some obscure expression parsing problems may affect hand written code which +uses the spop instructions, or code which makes significant +use of the ! line separator. + +

as is much less forgiving about missing arguments and other +similar oversights than the HP assembler. as notifies you +of missing arguments as syntax errors; this is regarded as a feature, not a +bug. + +

Finally, as allows you to use an external symbol without +explicitly importing the symbol. Warning: in the future this will be +an error for HPPA targets. + +

Special characters for HPPA targets include: + +

; is the line comment character. + +

! can be used instead of a newline to separate statements. + +

Since $ has no special meaning, you may use it in symbol names. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA_002dDependent.html new file mode 100644 index 0000000..7b1c0e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/HPPA_002dDependent.html @@ -0,0 +1,61 @@ + + +HPPA-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: H8/300-Dependent, +Up: Machine Dependencies +



+
+ +

9.11 HPPA Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Hidden.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Hidden.html new file mode 100644 index 0000000..e63743b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Hidden.html @@ -0,0 +1,59 @@ + + +Hidden - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Gnu_attribute, +Up: Pseudo Ops +



+
+ +

7.58 .hidden names

+ +

This is one of the ELF visibility directives. The other two are +.internal (see .internal) and +.protected (see .protected). + +

This directive overrides the named symbols default visibility (which is set by +their binding: local, global or weak). The directive sets the visibility to +hidden which means that the symbols are not visible to other components. +Such symbols are always considered to be protected as well. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/I.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/I.html new file mode 100644 index 0000000..e436a50 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/I.html @@ -0,0 +1,58 @@ + + +I - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: f, +Up: Invoking +



+
+ +

2.5 .include Search Path: -I path

+ +

Use this option to add a path to the list of directories +as searches for files specified in .include +directives (see .include). You may use -I as +many times as necessary to include a variety of paths. The current +working directory is always searched first; after that, as +searches any -I directories in the same order as they were +specified (left to right) on the command line. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Opcodes.html new file mode 100644 index 0000000..78aa53d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Opcodes.html @@ -0,0 +1,56 @@ + + +IA-64 Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: IA-64 Syntax, +Up: IA-64-Dependent +



+
+ +

9.16.3 Opcodes

+ +

For detailed information on the IA-64 machine instruction set, see the + +IA-64 Architecture Handbook. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Options.html new file mode 100644 index 0000000..e9c4837 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Options.html @@ -0,0 +1,110 @@ + + +IA-64 Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: IA-64-Dependent +



+
+ +

9.16.1 Options

+ +

+ + +

+
-mconstant-gp
This option instructs the assembler to mark the resulting object file +as using the “constant GP” model. With this model, it is assumed +that the entire program uses a single global pointer (GP) value. Note +that this option does not in any fashion affect the machine code +emitted by the assembler. All it does is turn on the EF_IA_64_CONS_GP +flag in the ELF file header. + +
-mauto-pic
This option instructs the assembler to mark the resulting object file +as using the “constant GP without function descriptor” data model. +This model is like the “constant GP” model, except that it +additionally does away with function descriptors. What this means is +that the address of a function refers directly to the function's code +entry-point. Normally, such an address would refer to a function +descriptor, which contains both the code entry-point and the GP-value +needed by the function. Note that this option does not in any fashion +affect the machine code emitted by the assembler. All it does is +turn on the EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header. + +
-milp32
-milp64
-mlp64
-mp64
These options select the data model. The assembler defaults to -mlp64 +(LP64 data model). + +
-mle
-mbe
These options select the byte order. The -mle option selects little-endian +byte order (default) and -mbe selects big-endian byte order. Note that +IA-64 machine code always uses little-endian byte order. + +
-mtune=itanium1
-mtune=itanium2
Tune for a particular IA-64 CPU, itanium1 or itanium2. The +default is itanium2. + +
-munwind-check=warning
-munwind-check=error
These options control what the assembler will do when performing +consistency checks on unwind directives. -munwind-check=warning +will make the assembler issue a warning when an unwind directive check +fails. This is the default. -munwind-check=error will make the +assembler issue an error when an unwind directive check fails. + +
-mhint.b=ok
-mhint.b=warning
-mhint.b=error
These options control what the assembler will do when the hint.b +instruction is used. -mhint.b=ok will make the assembler accept +hint.b. -mint.b=warning will make the assembler issue a +warning when hint.b is used. -mhint.b=error will make +the assembler treat hint.b as an error, which is the default. + +
-x
-xexplicit
These options turn on dependency violation checking. + +
-xauto
This option instructs the assembler to automatically insert stop bits where necessary +to remove dependency violations. This is the default mode. + +
-xnone
This option turns off dependency violation checking. + +
-xdebug
This turns on debug output intended to help tracking down bugs in the dependency +violation checker. + +
-xdebugn
This is a shortcut for -xnone -xdebug. + +
-xdebugx
This is a shortcut for -xexplicit -xdebug. + +
+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Syntax.html new file mode 100644 index 0000000..6c1634b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64-Syntax.html @@ -0,0 +1,60 @@ + + +IA-64 Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: IA-64 Options, +Up: IA-64-Dependent +



+
+ +

9.16.2 Syntax

+ +

The assembler syntax closely follows the IA-64 Assembly Language +Reference Guide. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dBits.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dBits.html new file mode 100644 index 0000000..e4f1564 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dBits.html @@ -0,0 +1,56 @@ + + +IA-64-Bits - Using as + + + + + + + + + + + + +
+

+Previous: IA-64-Regs, +Up: IA-64 Syntax +



+
+ +
9.16.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
+ +

+The assembler defines bit masks for each of the bits in the IA-64 +processor status register. For example, psr.ic corresponds to +a value of 0x2000. These masks are primarily intended for use with +the ssm/sum and rsm/rum +instructions, but they can be used anywhere else where an integer +constant is expected. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dChars.html new file mode 100644 index 0000000..14d977f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dChars.html @@ -0,0 +1,52 @@ + + +IA-64-Chars - Using as + + + + + + + + + + + + +

+

+Next: , +Up: IA-64 Syntax +



+
+ +
9.16.2.1 Special Characters
+ +

// is the line comment token. + +

; can be used instead of a newline to separate statements. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dDependent.html new file mode 100644 index 0000000..37f32af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dDependent.html @@ -0,0 +1,60 @@ + + +IA-64-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: i960-Dependent, +Up: Machine Dependencies +



+
+ +

9.16 IA-64 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dRegs.html new file mode 100644 index 0000000..ed35487 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IA_002d64_002dRegs.html @@ -0,0 +1,68 @@ + + +IA-64-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: IA-64-Chars, +Up: IA-64 Syntax +



+
+ +
9.16.2.2 Register Names
+ +

+The 128 integer registers are referred to as rn. +The 128 floating-point registers are referred to as fn. +The 128 application registers are referred to as arn. +The 128 control registers are referred to as crn. +The 64 one-bit predicate registers are referred to as pn. +The 8 branch registers are referred to as bn. +In addition, the assembler defines a number of aliases: +gp (r1), sp (r12), rp (b0), +ret0 (r8), ret1 (r9), ret2 (r10), +ret3 (r9), fargn (f8+n), and +fretn (f8+n). + +

For convenience, the assembler also defines aliases for all named application +and control registers. For example, ar.bsp refers to the register +backing store pointer (ar17). Similarly, cr.eoi refers to +the end-of-interrupt register (cr67). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IP2K_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IP2K_002dDependent.html new file mode 100644 index 0000000..3d93e82 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IP2K_002dDependent.html @@ -0,0 +1,56 @@ + + +IP2K-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: IA-64-Dependent, +Up: Machine Dependencies +



+
+ +

9.17 IP2K Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IP2K_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IP2K_002dOpts.html new file mode 100644 index 0000000..96e4053 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/IP2K_002dOpts.html @@ -0,0 +1,64 @@ + + +IP2K-Opts - Using as + + + + + + + + + + + +
+

+Up: IP2K-Dependent +



+
+ +

9.17.1 IP2K Options

+ +

+The Ubicom IP2K version of as has a few machine +dependent options: + +

+
-mip2022ext
as can assemble the extended IP2022 instructions, but +it will only do so if this is specifically allowed via this command +line option. + +
-mip2022
This option restores the assembler's default behaviour of not +permitting the extended IP2022 instructions to be assembled. + +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ident.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ident.html new file mode 100644 index 0000000..d25dc54 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ident.html @@ -0,0 +1,59 @@ + + +Ident - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: hword, +Up: Pseudo Ops +



+
+ +

7.60 .ident

+ +

+This directive is used by some assemblers to place tags in object files. The +behavior of this directive varies depending on the target. When using the +a.out object file format, as simply accepts the directive for +source-file compatibility with existing assemblers, but does not emit anything +for it. When using COFF, comments are emitted to the .comment or +.rdata section, depending on the target. When using ELF, comments are +emitted to the .comment section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/If.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/If.html new file mode 100644 index 0000000..30cb1d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/If.html @@ -0,0 +1,105 @@ + + +If - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Ident, +Up: Pseudo Ops +



+
+ +

7.61 .if absolute expression

+ +

.if marks the beginning of a section of code which is only +considered part of the source program being assembled if the argument +(which must be an absolute expression) is non-zero. The end of +the conditional section of code must be marked by .endif +(see .endif); optionally, you may include code for the +alternative condition, flagged by .else (see .else). +If you have several conditions to check, .elseif may be used to avoid +nesting blocks if/else within each subsequent .else block. + +

The following variants of .if are also supported: + + +

.ifdef symbol
Assembles the following section of code if the specified symbol +has been defined. Note a symbol which has been referenced but not yet defined +is considered to be undefined. + +


.ifb text
Assembles the following section of code if the operand is blank (empty). + +


.ifc string1,string2
Assembles the following section of code if the two strings are the same. The +strings may be optionally quoted with single quotes. If they are not quoted, +the first string stops at the first comma, and the second string stops at the +end of the line. Strings which contain whitespace should be quoted. The +string comparison is case sensitive. + +


.ifeq absolute expression
Assembles the following section of code if the argument is zero. + +


.ifeqs string1,string2
Another form of .ifc. The strings must be quoted using double quotes. + +


.ifge absolute expression
Assembles the following section of code if the argument is greater than or +equal to zero. + +


.ifgt absolute expression
Assembles the following section of code if the argument is greater than zero. + +


.ifle absolute expression
Assembles the following section of code if the argument is less than or equal +to zero. + +


.iflt absolute expression
Assembles the following section of code if the argument is less than zero. + +


.ifnb text
Like .ifb, but the sense of the test is reversed: this assembles the +following section of code if the operand is non-blank (non-empty). + +


.ifnc string1,string2.
Like .ifc, but the sense of the test is reversed: this assembles the +following section of code if the two strings are not the same. + +


.ifndef symbol
.ifnotdef symbol
Assembles the following section of code if the specified symbol +has not been defined. Both spelling variants are equivalent. Note a symbol +which has been referenced but not yet defined is considered to be undefined. + +


.ifne absolute expression
Assembles the following section of code if the argument is not equal to zero +(in other words, this is equivalent to .if). + +


.ifnes string1,string2
Like .ifeqs, but the sense of the test is reversed: this assembles the +following section of code if the two strings are not the same. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Incbin.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Incbin.html new file mode 100644 index 0000000..6eb93ae --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Incbin.html @@ -0,0 +1,61 @@ + + +Incbin - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: If, +Up: Pseudo Ops +



+
+ +

7.62 .incbin "file"[,skip[,count]]

+ +

The incbin directive includes file verbatim at the current +location. You can control the search paths used with the -I command-line +option (see Command-Line Options). Quotation marks are required +around file. + +

The skip argument skips a number of bytes from the start of the +file. The count argument indicates the maximum number of bytes to +read. Note that the data is not aligned in any way, so it is the user's +responsibility to make sure that proper alignment is provided both before and +after the incbin directive. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Include.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Include.html new file mode 100644 index 0000000..38759cf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Include.html @@ -0,0 +1,58 @@ + + +Include - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Incbin, +Up: Pseudo Ops +



+
+ +

7.63 .include "file"

+ +

This directive provides a way to include supporting files at specified +points in your source program. The code from file is assembled as +if it followed the point of the .include; when the end of the +included file is reached, assembly of the original file continues. You +can control the search paths used with the -I command-line option +(see Command-Line Options). Quotation marks are required +around file. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Infix-Ops.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Infix-Ops.html new file mode 100644 index 0000000..1ebe445 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Infix-Ops.html @@ -0,0 +1,128 @@ + + +Infix Ops - Using as + + + + + + + + + + + + +

+

+Previous: Prefix Ops, +Up: Integer Exprs +



+
+ +

6.2.4 Infix Operators

+ +

Infix operators take two arguments, one on either side. Operators +have precedence, but operations with equal precedence are performed left +to right. Apart from + or -, both arguments must be +absolute, and the result is absolute. + +

    + +
  1. Highest Precedence + +
    +
    *
    Multiplication. + +
    /
    Division. Truncation is the same as the C operator / + +
    %
    Remainder. + +
    <<
    Shift Left. Same as the C operator <<. + +
    >>
    Shift Right. Same as the C operator >>. +
    + +
  2. Intermediate precedence + +
    +
    |
    +Bitwise Inclusive Or. + +
    &
    Bitwise And. + +
    ^
    Bitwise Exclusive Or. + +
    !
    Bitwise Or Not. +
    + +
  3. Low Precedence + + + + + +
    +
    Addition. If either argument is absolute, the result has the section of +the other argument. You may not add together arguments from different +sections. + +


    -
    Subtraction. If the right argument is absolute, the +result has the section of the left argument. +If both arguments are in the same section, the result is absolute. +You may not subtract arguments from different sections. + + +


    ==
    Is Equal To +
    <>
    !=
    Is Not Equal To +
    <
    Is Less Than +
    >
    Is Greater Than +
    >=
    Is Greater Than Or Equal To +
    <=
    Is Less Than Or Equal To + +

    The comparison operators can be used as infix operators. A true results has a +value of -1 whereas a false result has a value of 0. Note, these operators +perform signed comparisons. +

    + +
  4. Lowest Precedence + +
    +
    &&
    Logical And. + +
    ||
    Logical Or. + +

    These two logical operations can be used to combine the results of sub +expressions. Note, unlike the comparison operators a true result returns a +value of 1 but a false results does still return 0. Also note that the logical +or operator has a slightly lower precedence than logical and. + +

    +
+ +

In short, it's only meaningful to add or subtract the offsets in an +address; you can only have a defined section in one of the two arguments. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Input-Files.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Input-Files.html new file mode 100644 index 0000000..b50eeb3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Input-Files.html @@ -0,0 +1,99 @@ + + +Input Files - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Command Line, +Up: Overview +



+
+ +

1.5 Input Files

+ +

We use the phrase source program, abbreviated source, to +describe the program input to one run of as. The program may +be in one or more files; how the source is partitioned into files +doesn't change the meaning of the source. + + + +

The source program is a concatenation of the text in all the files, in the +order specified. + + +

Each time you run as it assembles exactly one source +program. The source program is made up of one or more files. +(The standard input is also a file.) + +

You give as a command line that has zero or more input file +names. The input files are read (from left file name to right). A +command line argument (in any position) that has no special meaning +is taken to be an input file name. + +

If you give as no file names it attempts to read one input file +from the as standard input, which is normally your terminal. You +may have to type <ctl-D> to tell as there is no more program +to assemble. + +

Use -- if you need to explicitly name the standard input file +in your command line. + +

If the source is empty, as produces a small, empty object +file. + + +

Filenames and Line-numbers

+ +

There are two ways of locating a line in the input file (or files) and +either may be used in reporting error messages. One way refers to a line +number in a physical file; the other refers to a line number in a +“logical” file. See Error and Warning Messages. + +

Physical files are those files named in the command line given +to as. + +

Logical files are simply names declared explicitly by assembler +directives; they bear no relation to physical files. Logical file names help +error messages reflect the original source file, when as source +is itself synthesized from other files. as understands the +# directives emitted by the gcc preprocessor. See also +.file. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Int.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Int.html new file mode 100644 index 0000000..bdb5733 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Int.html @@ -0,0 +1,55 @@ + + +Int - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Include, +Up: Pseudo Ops +



+
+ +

7.64 .int expressions

+ +

Expect zero or more expressions, of any section, separated by commas. +For each expression, emit a number that, at run time, is the value of that +expression. The byte order and bit size of the number depends on what kind +of target the assembly is for. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Integer-Exprs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Integer-Exprs.html new file mode 100644 index 0000000..38dde86 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Integer-Exprs.html @@ -0,0 +1,58 @@ + + +Integer Exprs - Using as + + + + + + + + + + + + +

+

+Previous: Empty Exprs, +Up: Expressions +



+
+ +

6.2 Integer Expressions

+ +

An integer expression is one or more arguments delimited +by operators. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Integers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Integers.html new file mode 100644 index 0000000..7472891 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Integers.html @@ -0,0 +1,65 @@ + + +Integers - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Numbers +



+
+ +
3.6.2.1 Integers
+ +

+A binary integer is 0b or 0B followed by zero or more of +the binary digits 01. + +

An octal integer is 0 followed by zero or more of the octal +digits (01234567). + +

A decimal integer starts with a non-zero digit followed by zero or +more digits (0123456789). + +

A hexadecimal integer is 0x or 0X followed by one or +more hexadecimal digits chosen from 0123456789abcdefABCDEF. + +

Integers have the usual values. To denote a negative integer, use +the prefix operator - discussed under expressions +(see Prefix Operators). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Internal.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Internal.html new file mode 100644 index 0000000..33140e6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Internal.html @@ -0,0 +1,60 @@ + + +Internal - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Int, +Up: Pseudo Ops +



+
+ +

7.65 .internal names

+ +

This is one of the ELF visibility directives. The other two are +.hidden (see .hidden) and +.protected (see .protected). + +

This directive overrides the named symbols default visibility (which is set by +their binding: local, global or weak). The directive sets the visibility to +internal which means that the symbols are considered to be hidden +(i.e., not visible to other components), and that some extra, processor specific +processing must also be performed upon the symbols as well. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Invoking.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Invoking.html new file mode 100644 index 0000000..98a7164 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Invoking.html @@ -0,0 +1,95 @@ + + +Invoking - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Overview, +Up: Top +



+
+ +

2 Command-Line Options

+ +

This chapter describes command-line options available in all +versions of the gnu assembler; see Machine Dependencies, +for options specific +to particular machine architectures. + + +

If you are invoking as via the gnu C compiler, +you can use the -Wa option to pass arguments through to the assembler. +The assembler arguments must be separated from each other (and the -Wa) +by commas. For example: + +

     gcc -c -g -O -Wa,-alh,-L file.c
+
+

This passes two options to the assembler: -alh (emit a listing to +standard output with high-level and assembly source) and -L (retain +local symbols in the symbol table). + +

Usually you do not need to use this -Wa mechanism, since many compiler +command-line options are automatically passed to the assembler by the compiler. +(You can call the gnu compiler driver with the -v option to see +precisely what options it passes to each compilation pass, including the +assembler.) + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Irp.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Irp.html new file mode 100644 index 0000000..8c70f05 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Irp.html @@ -0,0 +1,72 @@ + + +Irp - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Internal, +Up: Pseudo Ops +



+
+ +

7.66 .irp symbol,values...

+ +

Evaluate a sequence of statements assigning different values to symbol. +The sequence of statements starts at the .irp directive, and is +terminated by an .endr directive. For each value, symbol is +set to value, and the sequence of statements is assembled. If no +value is listed, the sequence of statements is assembled once, with +symbol set to the null string. To refer to symbol within the +sequence of statements, use \symbol. + +

For example, assembling + +

             .irp    param,1,2,3
+             move    d\param,sp@-
+             .endr
+
+

is equivalent to assembling + +

             move    d1,sp@-
+             move    d2,sp@-
+             move    d3,sp@-
+
+

For some caveats with the spelling of symbol, see also Macro. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Irpc.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Irpc.html new file mode 100644 index 0000000..f54ae6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Irpc.html @@ -0,0 +1,73 @@ + + +Irpc - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Irp, +Up: Pseudo Ops +



+
+ +

7.67 .irpc symbol,values...

+ +

Evaluate a sequence of statements assigning different values to symbol. +The sequence of statements starts at the .irpc directive, and is +terminated by an .endr directive. For each character in value, +symbol is set to the character, and the sequence of statements is +assembled. If no value is listed, the sequence of statements is +assembled once, with symbol set to the null string. To refer to +symbol within the sequence of statements, use \symbol. + +

For example, assembling + +

             .irpc    param,123
+             move    d\param,sp@-
+             .endr
+
+

is equivalent to assembling + +

             move    d1,sp@-
+             move    d2,sp@-
+             move    d3,sp@-
+
+

For some caveats with the spelling of symbol, see also the discussion +at See Macro. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/K.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/K.html new file mode 100644 index 0000000..062e6d6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/K.html @@ -0,0 +1,56 @@ + + +K - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: I, +Up: Invoking +



+
+ +

2.6 Difference Tables: -K

+ +

+as sometimes alters the code emitted for directives of the +form .word sym1-sym2. See .word. +You can use the -K option if you want a warning issued when this +is done. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/L.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/L.html new file mode 100644 index 0000000..6247add --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/L.html @@ -0,0 +1,62 @@ + + +L - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: K, +Up: Invoking +



+
+ +

2.7 Include Local Symbols: -L

+ +

Symbols beginning with system-specific local label prefixes, typically +.L for ELF systems or L for traditional a.out systems, are +called local symbols. See Symbol Names. Normally you do not see +such symbols when debugging, because they are intended for the use of +programs (like compilers) that compose assembler programs, not for your +notice. Normally both as and ld discard +such symbols, so you do not normally debug with them. + +

This option tells as to retain those local symbols +in the object file. Usually if you do this you also tell the linker +ld to preserve those symbols. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/LNS-directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/LNS-directives.html new file mode 100644 index 0000000..4802c8e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/LNS-directives.html @@ -0,0 +1,97 @@ + + +LNS directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Ln, +Up: Pseudo Ops +



+
+ +

7.29 .file fileno filename

+ +

When emitting dwarf2 line number information .file assigns filenames +to the .debug_line file name table. The fileno operand should +be a unique positive integer to use as the index of the entry in the table. +The filename operand is a C string literal. + +

The detail of filename indices is exposed to the user because the filename +table is shared with the .debug_info section of the dwarf2 debugging +information, and thus the user must know the exact indices that table +entries will have. + +

7.30 .loc fileno lineno [column] [options]

+ +

The .loc directive will add row to the .debug_line line +number matrix corresponding to the immediately following assembly +instruction. The fileno, lineno, and optional column +arguments will be applied to the .debug_line state machine before +the row is added. + +

The options are a sequence of the following tokens in any order: + +

+
basic_block
This option will set the basic_block register in the +.debug_line state machine to true. + +
prologue_end
This option will set the prologue_end register in the +.debug_line state machine to true. + +
epilogue_begin
This option will set the epilogue_begin register in the +.debug_line state machine to true. + +
is_stmt value
This option will set the is_stmt register in the +.debug_line state machine to value, which must be +either 0 or 1. + +
isa value
This directive will set the isa register in the .debug_line +state machine to value, which must be an unsigned integer. + +
+ +

7.31 .loc_mark_labels enable

+ +

The .loc_mark_labels directive makes the assembler emit an entry +to the .debug_line line number matrix with the basic_block +register in the state machine set whenever a code label is seen. +The enable argument should be either 1 or 0, to enable or disable +this function respectively. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Labels.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Labels.html new file mode 100644 index 0000000..da2365e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Labels.html @@ -0,0 +1,60 @@ + + +Labels - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Symbols +



+
+ +

5.1 Labels

+ +

A label is written as a symbol immediately followed by a colon +:. The symbol then represents the current value of the +active location counter, and is, for example, a suitable instruction +operand. You are warned if you use the same symbol to represent two +different locations: the first definition overrides any other +definitions. + +

On the HPPA, the usual form for a label need not be immediately followed by a +colon, but instead must start in column zero. Only one label may be defined on +a single line. To work around this, the HPPA version of as also +provides a special directive .label for defining labels more flexibly. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Lcomm.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Lcomm.html new file mode 100644 index 0000000..4ef40c7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Lcomm.html @@ -0,0 +1,63 @@ + + +Lcomm - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Irpc, +Up: Pseudo Ops +



+
+ +

7.68 .lcomm symbol , length

+ +

Reserve length (an absolute expression) bytes for a local common +denoted by symbol. The section and value of symbol are +those of the new local common. The addresses are allocated in the bss +section, so that at run-time the bytes start off zeroed. Symbol +is not declared global (see .global), so is normally +not visible to ld. + +

Some targets permit a third argument to be used with .lcomm. This +argument specifies the desired alignment of the symbol in the bss section. + +

The syntax for .lcomm differs slightly on the HPPA. The syntax is +symbol .lcomm, length; symbol is optional. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ld-Sections.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ld-Sections.html new file mode 100644 index 0000000..8087248 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ld-Sections.html @@ -0,0 +1,109 @@ + + +Ld Sections - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Secs Background, +Up: Sections +



+
+ +

4.2 Linker Sections

+ +

ld deals with just four kinds of sections, summarized below. + + + + +

named sections
text section
data section
These sections hold your program. as and ld treat them as +separate but equal sections. Anything you can say of one section is +true of another. + +When the program is running, however, it is +customary for the text section to be unalterable. The +text section is often shared among processes: it contains +instructions, constants and the like. The data section of a running +program is usually alterable: for example, C variables would be stored +in the data section. + + +


bss section
This section contains zeroed bytes when your program begins running. It +is used to hold uninitialized variables or common storage. The length of +each partial program's bss section is important, but because it starts +out containing zeroed bytes there is no need to store explicit zero +bytes in the object file. The bss section was invented to eliminate +those explicit zeros from object files. + +


absolute section
Address 0 of this section is always “relocated” to runtime address 0. +This is useful if you want to refer to an address that ld must +not change when relocating. In this sense we speak of absolute +addresses being “unrelocatable”: they do not change during relocation. + +


undefined section
This “section” is a catch-all for address references to objects not in +the preceding sections. + +
+ +

An idealized example of three relocatable sections follows. +The example uses the traditional section names .text and .data. +Memory addresses are on the horizontal axis. + + + +

                           +-----+----+--+
+     partial program # 1:  |ttttt|dddd|00|
+                           +-----+----+--+
+     
+                           text   data bss
+                           seg.   seg. seg.
+     
+                           +---+---+---+
+     partial program # 2:  |TTT|DDD|000|
+                           +---+---+---+
+     
+                           +--+---+-----+--+----+---+-----+~~
+     linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
+                           +--+---+-----+--+----+---+-----+~~
+     
+         addresses:        0 ...
+
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Lflags.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Lflags.html new file mode 100644 index 0000000..504f0f1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Lflags.html @@ -0,0 +1,53 @@ + + +Lflags - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Lcomm, +Up: Pseudo Ops +



+
+ +

7.69 .lflags

+ +

as accepts this directive, for compatibility with other +assemblers, but ignores it. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Line.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Line.html new file mode 100644 index 0000000..8fd4c03 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Line.html @@ -0,0 +1,67 @@ + + +Line - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Lflags, +Up: Pseudo Ops +



+
+ +

7.70 .line line-number

+ +

Change the logical line number. line-number must be an absolute +expression. The next line has that logical line number. Therefore any other +statements on the current line (after a statement separator character) are +reported as on logical line number line-number − 1. One day +as will no longer support this directive: it is recognized only +for compatibility with existing assembler programs. + +

Even though this is a directive associated with the a.out or +b.out object-code formats, as still recognizes it +when producing COFF output, and treats .line as though it +were the COFF .ln if it is found outside a +.def/.endef pair. + +

Inside a .def, .line is, instead, one of the directives +used by compilers to generate auxiliary symbol information for +debugging. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Linkonce.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Linkonce.html new file mode 100644 index 0000000..f36a4f3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Linkonce.html @@ -0,0 +1,77 @@ + + +Linkonce - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Line, +Up: Pseudo Ops +



+
+ +

7.71 .linkonce [type]

+ +

Mark the current section so that the linker only includes a single copy of it. +This may be used to include the same section in several different object files, +but ensure that the linker will only include it once in the final output file. +The .linkonce pseudo-op must be used for each instance of the section. +Duplicate sections are detected based on the section name, so it should be +unique. + +

This directive is only supported by a few object file formats; as of this +writing, the only object file format which supports it is the Portable +Executable format used on Windows NT. + +

The type argument is optional. If specified, it must be one of the +following strings. For example: +

     .linkonce same_size
+
+

Not all types may be supported on all object file formats. + +

+
discard
Silently discard duplicate sections. This is the default. + +
one_only
Warn if there are duplicate sections, but still keep only one copy. + +
same_size
Warn if any of the duplicates have different sizes. + +
same_contents
Warn if any of the duplicates do not have exactly the same contents. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/List.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/List.html new file mode 100644 index 0000000..ce8af49 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/List.html @@ -0,0 +1,60 @@ + + +List - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Linkonce, +Up: Pseudo Ops +



+
+ +

7.74 .list

+ +

Control (in conjunction with the .nolist directive) whether or +not assembly listings are generated. These two directives maintain an +internal counter (which is zero initially). .list increments the +counter, and .nolist decrements it. Assembly listings are +generated whenever the counter is greater than zero. + +

By default, listings are disabled. When you enable them (with the +-a command line option; see Command-Line Options), +the initial value of the listing counter is one. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Directive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Directive.html new file mode 100644 index 0000000..9e46f92 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Directive.html @@ -0,0 +1,127 @@ + + +Literal Directive - Using as + + + + + + + + + + + + + +

+ +
9.36.5.4 literal
+ +

+The .literal directive is used to define literal pool data, i.e., +read-only 32-bit data accessed via L32R instructions. + +

         .literal label, value[, value...]
+
+

This directive is similar to the standard .word directive, except +that the actual location of the literal data is determined by the +assembler and linker, not by the position of the .literal +directive. Using this directive gives the assembler freedom to locate +the literal data in the most appropriate place and possibly to combine +identical literals. For example, the code: + +

         entry sp, 40
+         .literal .L1, sym
+         l32r    a4, .L1
+
+

can be used to load a pointer to the symbol sym into register +a4. The value of sym will not be placed between the +ENTRY and L32R instructions; instead, the assembler puts +the data in a literal pool. + +

Literal pools are placed by default in separate literal sections; +however, when using the --text-section-literals +option (see Command Line Options), the literal +pools for PC-relative mode L32R instructions +are placed in the current section.1 +These text section literal +pools are created automatically before ENTRY instructions and +manually after .literal_position directives (see literal_position). If there are no preceding +ENTRY instructions, explicit .literal_position directives +must be used to place the text section literal pools; otherwise, +as will report an error. + +

When literals are placed in separate sections, the literal section names +are derived from the names of the sections where the literals are +defined. The base literal section names are .literal for +PC-relative mode L32R instructions and .lit4 for absolute +mode L32R instructions (see absolute-literals). These base names are used for literals defined in +the default .text section. For literals defined in other +sections or within the scope of a literal_prefix directive +(see literal_prefix), the following rules +determine the literal section name: + +

    +
  1. If the current section is a member of a section group, the literal +section name includes the group name as a suffix to the base +.literal or .lit4 name, with a period to separate the base +name and group name. The literal section is also made a member of the +group. + +
  2. If the current section name (or literal_prefix value) begins with +“.gnu.linkonce.kind.”, the literal section name is formed +by replacing “.kind” with the base .literal or +.lit4 name. For example, for literals defined in a section named +.gnu.linkonce.t.func, the literal section will be +.gnu.linkonce.literal.func or .gnu.linkonce.lit4.func. + +
  3. If the current section name (or literal_prefix value) ends with +.text, the literal section name is formed by replacing that +suffix with the base .literal or .lit4 name. For example, +for literals defined in a section named .iram0.text, the literal +section will be .iram0.literal or .iram0.lit4. + +
  4. If none of the preceding conditions apply, the literal section name is +formed by adding the base .literal or .lit4 name as a +suffix to the current section name (or literal_prefix value). +
+ +
+
+

Footnotes

[1] Literals for the +.init and .fini sections are always placed in separate +sections, even when --text-section-literals is enabled.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Position-Directive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Position-Directive.html new file mode 100644 index 0000000..7eb5a26 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Position-Directive.html @@ -0,0 +1,87 @@ + + +Literal Position Directive - Using as + + + + + + + + + + + + + + + +
9.36.5.5 literal_position
+ +

+When using --text-section-literals to place literals inline +in the section being assembled, the .literal_position directive +can be used to mark a potential location for a literal pool. + +

         .literal_position
+
+

The .literal_position directive is ignored when the +--text-section-literals option is not used or when +L32R instructions use the absolute addressing mode. + +

The assembler will automatically place text section literal pools +before ENTRY instructions, so the .literal_position +directive is only needed to specify some other location for a literal +pool. You may need to add an explicit jump instruction to skip over an +inline literal pool. + +

For example, an interrupt vector does not begin with an ENTRY +instruction so the assembler will be unable to automatically find a good +place to put a literal pool. Moreover, the code for the interrupt +vector must be at a specific starting address, so the literal pool +cannot come before the start of the code. The literal pool for the +vector must be explicitly positioned in the middle of the vector (before +any uses of the literals, due to the negative offsets used by +PC-relative L32R instructions). The .literal_position +directive can be used to do this. In the following code, the literal +for M will automatically be aligned correctly and is placed after +the unconditional jump. + +

         .global M
+     code_start:
+         j continue
+         .literal_position
+         .align 4
+     continue:
+         movi    a4, M
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Prefix-Directive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Prefix-Directive.html new file mode 100644 index 0000000..bf29afe --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Literal-Prefix-Directive.html @@ -0,0 +1,66 @@ + + +Literal Prefix Directive - Using as + + + + + + + + + + + + + + + +
9.36.5.6 literal_prefix
+ +

+The literal_prefix directive allows you to override the default +literal section names, which are derived from the names of the sections +where the literals are defined. + +

         .begin literal_prefix [name]
+         .end literal_prefix
+
+

For literals defined within the delimited region, the literal section +names are derived from the name argument instead of the name of +the current section. The rules used to derive the literal section names +do not change. See literal. If the name +argument is omitted, the literal sections revert to the defaults. This +directive has no effect when using the +--text-section-literals option (see Command Line Options). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ln.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ln.html new file mode 100644 index 0000000..1e7fd64 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Ln.html @@ -0,0 +1,52 @@ + + +Ln - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: List, +Up: Pseudo Ops +



+
+ +

7.72 .ln line-number

+ +

.ln is a synonym for .line. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Long.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Long.html new file mode 100644 index 0000000..b9d97be --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Long.html @@ -0,0 +1,52 @@ + + +Long - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: LNS directives, +Up: Pseudo Ops +



+
+ +

7.75 .long expressions

+ +

.long is the same as .int. See .int. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Longcalls-Directive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Longcalls-Directive.html new file mode 100644 index 0000000..6e34e5d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Longcalls-Directive.html @@ -0,0 +1,61 @@ + + +Longcalls Directive - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Schedule Directive, +Up: Xtensa Directives +



+
+ +
9.36.5.2 longcalls
+ +

+The longcalls directive enables or disables function call +relaxation. See Function Call Relaxation. + +

         .begin [no-]longcalls
+         .end [no-]longcalls
+
+

Call relaxation is disabled by default unless the --longcalls +command-line option is specified. The longcalls directive +overrides the default determined by the command-line options. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M.html new file mode 100644 index 0000000..8aac3d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M.html @@ -0,0 +1,175 @@ + + +M - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: listing, +Up: Invoking +



+
+ +

2.9 Assemble in MRI Compatibility Mode: -M

+ +

The -M or --mri option selects MRI compatibility mode. This +changes the syntax and pseudo-op handling of as to make it +compatible with the ASM68K or the ASM960 (depending upon the +configured target) assembler from Microtec Research. The exact nature of the +MRI syntax will not be documented here; see the MRI manuals for more +information. Note in particular that the handling of macros and macro +arguments is somewhat different. The purpose of this option is to permit +assembling existing MRI assembler code using as. + +

The MRI compatibility is not complete. Certain operations of the MRI assembler +depend upon its object file format, and can not be supported using other object +file formats. Supporting these would require enhancing each object file format +individually. These are: + +

    +
  • global symbols in common section + +

    The m68k MRI assembler supports common sections which are merged by the linker. +Other object file formats do not support this. as handles +common sections by treating them as a single common symbol. It permits local +symbols to be defined within a common section, but it can not support global +symbols, since it has no way to describe them. + +

  • complex relocations + +

    The MRI assemblers support relocations against a negated section address, and +relocations which combine the start addresses of two or more sections. These +are not support by other object file formats. + +

  • END pseudo-op specifying start address + +

    The MRI END pseudo-op permits the specification of a start address. +This is not supported by other object file formats. The start address may +instead be specified using the -e option to the linker, or in a linker +script. + +

  • IDNT, .ident and NAME pseudo-ops + +

    The MRI IDNT, .ident and NAME pseudo-ops assign a module +name to the output file. This is not supported by other object file formats. + +

  • ORG pseudo-op + +

    The m68k MRI ORG pseudo-op begins an absolute section at a given +address. This differs from the usual as .org pseudo-op, +which changes the location within the current section. Absolute sections are +not supported by other object file formats. The address of a section may be +assigned within a linker script. +

+ +

There are some other features of the MRI assembler which are not supported by +as, typically either because they are difficult or because they +seem of little consequence. Some of these may be supported in future releases. + +

    +
  • EBCDIC strings + +

    EBCDIC strings are not supported. + +

  • packed binary coded decimal + +

    Packed binary coded decimal is not supported. This means that the DC.P +and DCB.P pseudo-ops are not supported. + +

  • FEQU pseudo-op + +

    The m68k FEQU pseudo-op is not supported. + +

  • NOOBJ pseudo-op + +

    The m68k NOOBJ pseudo-op is not supported. + +

  • OPT branch control options + +

    The m68k OPT branch control options—B, BRS, BRB, +BRL, and BRW—are ignored. as automatically +relaxes all branches, whether forward or backward, to an appropriate size, so +these options serve no purpose. + +

  • OPT list control options + +

    The following m68k OPT list control options are ignored: C, +CEX, CL, CRE, E, G, I, M, +MEX, MC, MD, X. + +

  • other OPT options + +

    The following m68k OPT options are ignored: NEST, O, +OLD, OP, P, PCO, PCR, PCS, R. + +

  • OPT D option is default + +

    The m68k OPT D option is the default, unlike the MRI assembler. +OPT NOD may be used to turn it off. + +

  • XREF pseudo-op. + +

    The m68k XREF pseudo-op is ignored. + +

  • .debug pseudo-op + +

    The i960 .debug pseudo-op is not supported. + +

  • .extended pseudo-op + +

    The i960 .extended pseudo-op is not supported. + +

  • .list pseudo-op. + +

    The various options of the i960 .list pseudo-op are not supported. + +

  • .optimize pseudo-op + +

    The i960 .optimize pseudo-op is not supported. + +

  • .output pseudo-op + +

    The i960 .output pseudo-op is not supported. + +

  • .setreal pseudo-op + +

    The i960 .setreal pseudo-op is not supported. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dDependent.html new file mode 100644 index 0000000..7adbaab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dDependent.html @@ -0,0 +1,61 @@ + + +M32C-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: IP2K-Dependent, +Up: Machine Dependencies +



+
+ +

9.18 M32C Dependent Features

+ +

+as can assemble code for several different members of +the Renesas M32C family. Normally the default is to assemble code for +the M16C microprocessor. The -m32c option may be used to +change the default to the M32C microprocessor. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dModifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dModifiers.html new file mode 100644 index 0000000..d6641d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dModifiers.html @@ -0,0 +1,102 @@ + + +M32C-Modifiers - Using as + + + + + + + + + + + + +
+

+Previous: M32C-Opts, +Up: M32C-Dependent +



+
+ +

9.18.2 Symbolic Operand Modifiers

+ +

+The assembler supports several modifiers when using symbol addresses +in M32C instruction operands. The general syntax is the following: + +

     %modifier(symbol)
+
+ + +
+
%dsp8
%dsp16
+These modifiers override the assembler's assumptions about how big a +symbol's address is. Normally, when it sees an operand like +sym[a0] it assumes sym may require the widest +displacement field (16 bits for -m16c, 24 bits for +-m32c). These modifiers tell it to assume the address will fit +in an 8 or 16 bit (respectively) unsigned displacement. Note that, of +course, if it doesn't actually fit you will get linker errors. Example: + +
          mov.w %dsp8(sym)[a0],r1
+          mov.b #0,%dsp8(sym)[a0]
+     
+
%hi8
+This modifier allows you to load bits 16 through 23 of a 24 bit +address into an 8 bit register. This is useful with, for example, the +M16C smovf instruction, which expects a 20 bit address in +r1h and a0. Example: + +
          mov.b #%hi8(sym),r1h
+          mov.w #%lo16(sym),a0
+          smovf.b
+     
+
%lo16
+Likewise, this modifier allows you to load bits 0 through 15 of a 24 +bit address into a 16 bit register. + +
%hi16
+This modifier allows you to load bits 16 through 31 of a 32 bit +address into a 16 bit register. While the M32C family only has 24 +bits of address space, it does support addresses in pairs of 16 bit +registers (like a1a0 for the lde instruction). This +modifier is for loading the upper half in such cases. Example: + +
          mov.w #%hi16(sym),a1
+          mov.w #%lo16(sym),a0
+          ...
+          lde.w [a1a0],r1
+     
+
+ + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dOpts.html new file mode 100644 index 0000000..d53fd7f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32C_002dOpts.html @@ -0,0 +1,63 @@ + + +M32C-Opts - Using as + + + + + + + + + + + + +
+

+Next: , +Up: M32C-Dependent +



+
+ +

9.18.1 M32C Options

+ +

+The Renesas M32C version of as has these +machine-dependent options: + +

+
-m32c
Assemble M32C instructions. + +
-m16c
Assemble M16C instructions (default). + +
-relax
Enable support for link-time relaxations. + +
-h-tick-hex
Support H'00 style hex constants in addition to 0x00 style. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dDependent.html new file mode 100644 index 0000000..bff27f8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dDependent.html @@ -0,0 +1,58 @@ + + +M32R-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M32C-Dependent, +Up: Machine Dependencies +



+
+ +

9.19 M32R Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dDirectives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dDirectives.html new file mode 100644 index 0000000..32bb37e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dDirectives.html @@ -0,0 +1,136 @@ + + +M32R-Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M32R-Opts, +Up: M32R-Dependent +



+
+ +

9.19.2 M32R Directives

+ +

+The Renease M32R version of as has a few architecture +specific directives: + + + +

low expression
The low directive computes the value of its expression and +places the lower 16-bits of the result into the immediate-field of the +instruction. For example: + +
             or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
+             add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
+     
+
high expression
The high directive computes the value of its expression and +places the upper 16-bits of the result into the immediate-field of the +instruction. For example: + +
             seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
+             seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
+     
+
shigh expression
The shigh directive is very similar to the high +directive. It also computes the value of its expression and places +the upper 16-bits of the result into the immediate-field of the +instruction. The difference is that shigh also checks to see +if the lower 16-bits could be interpreted as a signed number, and if +so it assumes that a borrow will occur from the upper-16 bits. To +compensate for this the shigh directive pre-biases the upper +16 bit value by adding one to it. For example: + +

For example: + +

             seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
+             seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
+     
+

In the second example the lower 16-bits are 0x8000. If these are +treated as a signed value and sign extended to 32-bits then the value +becomes 0xffff8000. If this value is then added to 0x00010000 then +the result is 0x00008000. + +

This behaviour is to allow for the different semantics of the +or3 and add3 instructions. The or3 instruction +treats its 16-bit immediate argument as unsigned whereas the +add3 treats its 16-bit immediate as a signed value. So for +example: + +

             seth  r0, #shigh(0x00008000)
+             add3  r0, r0, #low(0x00008000)
+     
+

Produces the correct result in r0, whereas: + +

             seth  r0, #shigh(0x00008000)
+             or3   r0, r0, #low(0x00008000)
+     
+

Stores 0xffff8000 into r0. + +

Note - the shigh directive does not know where in the assembly +source code the lower 16-bits of the value are going set, so it cannot +check to make sure that an or3 instruction is being used rather +than an add3 instruction. It is up to the programmer to make +sure that correct directives are used. + +


.m32r
The directive performs a similar thing as the -m32r command +line option. It tells the assembler to only accept M32R instructions +from now on. An instructions from later M32R architectures are +refused. + +


.m32rx
The directive performs a similar thing as the -m32rx command +line option. It tells the assembler to start accepting the extra +instructions in the M32RX ISA as well as the ordinary M32R ISA. + +


.m32r2
The directive performs a similar thing as the -m32r2 command +line option. It tells the assembler to start accepting the extra +instructions in the M32R2 ISA as well as the ordinary M32R ISA. + +


.little
The directive performs a similar thing as the -little command +line option. It tells the assembler to start producing little-endian +code and data. This option should be used with care as producing +mixed-endian binary files is fraught with danger. + +


.big
The directive performs a similar thing as the -big command +line option. It tells the assembler to start producing big-endian +code and data. This option should be used with care as producing +mixed-endian binary files is fraught with danger. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dOpts.html new file mode 100644 index 0000000..d98a033 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dOpts.html @@ -0,0 +1,142 @@ + + +M32R-Opts - Using as + + + + + + + + + + + + +
+

+Next: , +Up: M32R-Dependent +



+
+ +

9.19.1 M32R Options

+ +

+The Renease M32R version of as has a few machine +dependent options: + +

+
-m32rx
as can assemble code for several different members of the +Renesas M32R family. Normally the default is to assemble code for +the M32R microprocessor. This option may be used to change the default +to the M32RX microprocessor, which adds some more instructions to the +basic M32R instruction set, and some additional parameters to some of +the original instructions. + +
-m32r2
This option changes the target processor to the the M32R2 +microprocessor. + +
-m32r
This option can be used to restore the assembler's default behaviour of +assembling for the M32R microprocessor. This can be useful if the +default has been changed by a previous command line option. + +
-little
This option tells the assembler to produce little-endian code and +data. The default is dependent upon how the toolchain was +configured. + +
-EL
This is a synonym for -little. + +
-big
This option tells the assembler to produce big-endian code and +data. + +
-EB
This is a synonum for -big. + +
-KPIC
This option specifies that the output of the assembler should be +marked as position-independent code (PIC). + +
-parallel
This option tells the assembler to attempts to combine two sequential +instructions into a single, parallel instruction, where it is legal to +do so. + +
-no-parallel
This option disables a previously enabled -parallel option. + +
-no-bitinst
This option disables the support for the extended bit-field +instructions provided by the M32R2. If this support needs to be +re-enabled the -bitinst switch can be used to restore it. + +
-O
This option tells the assembler to attempt to optimize the +instructions that it produces. This includes filling delay slots and +converting sequential instructions into parallel ones. This option +implies -parallel. + +
-warn-explicit-parallel-conflicts
Instructs as to produce warning messages when +questionable parallel instructions are encountered. This option is +enabled by default, but gcc disables it when it invokes +as directly. Questionable instructions are those whose +behaviour would be different if they were executed sequentially. For +example the code fragment mv r1, r2 || mv r3, r1 produces a +different result from mv r1, r2 \n mv r3, r1 since the former +moves r1 into r3 and then r2 into r1, whereas the later moves r2 into r1 +and r3. + +
-Wp
This is a shorter synonym for the -warn-explicit-parallel-conflicts +option. + +
-no-warn-explicit-parallel-conflicts
Instructs as not to produce warning messages when +questionable parallel instructions are encountered. + +
-Wnp
This is a shorter synonym for the -no-warn-explicit-parallel-conflicts +option. + +
-ignore-parallel-conflicts
This option tells the assembler's to stop checking parallel +instructions for constraint violations. This ability is provided for +hardware vendors testing chip designs and should not be used under +normal circumstances. + +
-no-ignore-parallel-conflicts
This option restores the assembler's default behaviour of checking +parallel instructions to detect constraint violations. + +
-Ip
This is a shorter synonym for the -ignore-parallel-conflicts +option. + +
-nIp
This is a shorter synonym for the -no-ignore-parallel-conflicts +option. + +
-warn-unmatched-high
This option tells the assembler to produce a warning message if a +.high pseudo op is encountered without a matching .low +pseudo op. The presence of such an unmatched pseudo op usually +indicates a programming error. + +
-no-warn-unmatched-high
Disables a previously enabled -warn-unmatched-high option. + +
-Wuh
This is a shorter synonym for the -warn-unmatched-high option. + +
-Wnuh
This is a shorter synonym for the -no-warn-unmatched-high option. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dWarnings.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dWarnings.html new file mode 100644 index 0000000..cb56e0a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M32R_002dWarnings.html @@ -0,0 +1,104 @@ + + +M32R-Warnings - Using as + + + + + + + + + + + + +
+

+Previous: M32R-Directives, +Up: M32R-Dependent +



+
+ +

9.19.3 M32R Warnings

+ +

+There are several warning and error messages that can be produced by +as which are specific to the M32R: + +

+
output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?
This message is only produced if warnings for explicit parallel +conflicts have been enabled. It indicates that the assembler has +encountered a parallel instruction in which the destination register of +the left hand instruction is used as an input register in the right hand +instruction. For example in this code fragment +mv r1, r2 || neg r3, r1 register r1 is the destination of the +move instruction and the input to the neg instruction. + +
output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?
This message is only produced if warnings for explicit parallel +conflicts have been enabled. It indicates that the assembler has +encountered a parallel instruction in which the destination register of +the right hand instruction is used as an input register in the left hand +instruction. For example in this code fragment +mv r1, r2 || neg r2, r3 register r2 is the destination of the +neg instruction and the input to the move instruction. + +
instruction ... is for the M32RX only
This message is produced when the assembler encounters an instruction +which is only supported by the M32Rx processor, and the -m32rx +command line flag has not been specified to allow assembly of such +instructions. + +
unknown instruction ...
This message is produced when the assembler encounters an instruction +which it does not recognize. + +
only the NOP instruction can be issued in parallel on the m32r
This message is produced when the assembler encounters a parallel +instruction which does not involve a NOP instruction and the +-m32rx command line flag has not been specified. Only the M32Rx +processor is able to execute two instructions in parallel. + +
instruction ... cannot be executed in parallel.
This message is produced when the assembler encounters a parallel +instruction which is made up of one or two instructions which cannot be +executed in parallel. + +
Instructions share the same execution pipeline
This message is produced when the assembler encounters a parallel +instruction whoes components both use the same execution pipeline. + +
Instructions write to the same destination register.
This message is produced when the assembler encounters a parallel +instruction where both components attempt to modify the same register. +For example these code fragments will produce this message: +mv r1, r2 || neg r1, r3 +jl r0 || mv r14, r1 +st r2, @-r1 || mv r1, r3 +mv r1, r2 || ld r0, @r1+ +cmp r1, r2 || addx r3, r4 (Both write to the condition bit) + +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dBranch.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dBranch.html new file mode 100644 index 0000000..5513d12 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dBranch.html @@ -0,0 +1,103 @@ + + +M68HC11-Branch - Using as + + + + + + + + + + + +
+

+Up: M68HC11-opcodes +



+
+ +
9.21.6.1 Branch Improvement
+ +

+Certain pseudo opcodes are permitted for branch instructions. +They expand to the shortest branch instruction that reach the +target. Generally these mnemonics are made by prepending j to +the start of Motorola mnemonic. These pseudo opcodes are not affected +by the --short-branches or --force-long-branches options. + +

The following table summarizes the pseudo-operations. + +

                             Displacement Width
+          +-------------------------------------------------------------+
+          |                     Options                                 |
+          |    --short-branches           --force-long-branches         |
+          +--------------------------+----------------------------------+
+       Op |BYTE             WORD     | BYTE          WORD               |
+          +--------------------------+----------------------------------+
+      bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
+      bra | bra <pc-rel>    <error>  |               jmp <abs>          |
+     jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
+     jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
+      bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
+     jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
+          |                jmp <abs> |                                  |
+          +--------------------------+----------------------------------+
+     XX: condition
+     NX: negative of condition XX
+     
+
+
+
jbsr
jbra
These are the simplest jump pseudo-operations; they always map to one +particular machine instruction, depending on the displacement to the +branch target. + +
jbXX
Here, jbXX stands for an entire family of pseudo-operations, +where XX is a conditional branch or condition-code test. The full +list of pseudo-ops in this family is: +
           jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
+           jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
+     
+

For the cases of non-PC relative displacements and long displacements, +as issues a longer code fragment in terms of +NX, the opposite condition to XX. For example, for the +non-PC relative case: +

              jbXX foo
+     
+

gives +

               bNXs oof
+               jmp foo
+           oof:
+     
+
+ + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dDependent.html new file mode 100644 index 0000000..4b57d93 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dDependent.html @@ -0,0 +1,61 @@ + + +M68HC11-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68K-Dependent, +Up: Machine Dependencies +



+
+ +

9.21 M68HC11 and M68HC12 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dDirectives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dDirectives.html new file mode 100644 index 0000000..4c47d1b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dDirectives.html @@ -0,0 +1,78 @@ + + +M68HC11-Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68HC11-Modifiers, +Up: M68HC11-Dependent +



+
+ +

9.21.4 Assembler Directives

+ +

+The 68HC11 and 68HC12 version of as have the following +specific assembler directives: + +

+
.relax
The relax directive is used by the GNU Compiler to emit a specific +relocation to mark a group of instructions for linker relaxation. +The sequence of instructions within the group must be known to the linker +so that relaxation can be performed. + +
.mode [mshort|mlong|mshort-double|mlong-double]
This directive specifies the ABI. It overrides the -mshort, +-mlong, -mshort-double and -mlong-double options. + +
.far symbol
This directive marks the symbol as a far symbol meaning that it +uses a call/rtc calling convention as opposed to jsr/rts. +During a final link, the linker will identify references to the far +symbol and will verify the proper calling convention. + +
.interrupt symbol
This directive marks the symbol as an interrupt entry point. +This information is then used by the debugger to correctly unwind the +frame across interrupts. + +
.xrefb symbol
This directive is defined for compatibility with the +Specification for Motorola 8 and 16-Bit Assembly Language Input +Standard and is ignored. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dFloat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dFloat.html new file mode 100644 index 0000000..b81d524 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dFloat.html @@ -0,0 +1,64 @@ + + +M68HC11-Float - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68HC11-Directives, +Up: M68HC11-Dependent +



+
+ +

9.21.5 Floating Point

+ +

Packed decimal (P) format floating literals are not supported. +Feel free to add the code! + +

The floating point formats generated by directives are these. + + + +

.float
Single precision floating point constants. + +


.double
Double precision floating point constants. + +


.extend
.ldouble
Extended precision (long double) floating point constants. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dModifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dModifiers.html new file mode 100644 index 0000000..511f2be --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dModifiers.html @@ -0,0 +1,96 @@ + + +M68HC11-Modifiers - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68HC11-Syntax, +Up: M68HC11-Dependent +



+
+ +

9.21.3 Symbolic Operand Modifiers

+ +

+The assembler supports several modifiers when using symbol addresses +in 68HC11 and 68HC12 instruction operands. The general syntax is +the following: + +

     %modifier(symbol)
+
+ + +
%addr
This modifier indicates to the assembler and linker to use +the 16-bit physical address corresponding to the symbol. This is intended +to be used on memory window systems to map a symbol in the memory bank window. +If the symbol is in a memory expansion part, the physical address +corresponds to the symbol address within the memory bank window. +If the symbol is not in a memory expansion part, this is the symbol address +(using or not using the %addr modifier has no effect in that case). + +
%page
This modifier indicates to use the memory page number corresponding +to the symbol. If the symbol is in a memory expansion part, its page +number is computed by the linker as a number used to map the page containing +the symbol in the memory bank window. If the symbol is not in a memory +expansion part, the page number is 0. + +
%hi
This modifier indicates to use the 8-bit high part of the physical +address of the symbol. + +
%lo
This modifier indicates to use the 8-bit low part of the physical +address of the symbol. + +
+ +

For example a 68HC12 call to a function foo_example stored in memory +expansion part could be written as follows: + +

     call %addr(foo_example),%page(foo_example)
+
+

and this is equivalent to + +

     call foo_example
+
+

And for 68HC11 it could be written as follows: + +

     ldab #%page(foo_example)
+     stab _page_switch
+     jsr  %addr(foo_example)
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dOpts.html new file mode 100644 index 0000000..2cc99d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dOpts.html @@ -0,0 +1,121 @@ + + +M68HC11-Opts - Using as + + + + + + + + + + + + +
+

+Next: , +Up: M68HC11-Dependent +



+
+ +

9.21.1 M68HC11 and M68HC12 Options

+ +

The Motorola 68HC11 and 68HC12 version of as have a few machine +dependent options. + + + +

-m68hc11
This option switches the assembler in the M68HC11 mode. In this mode, +the assembler only accepts 68HC11 operands and mnemonics. It produces +code for the 68HC11. + +


-m68hc12
This option switches the assembler in the M68HC12 mode. In this mode, +the assembler also accepts 68HC12 operands and mnemonics. It produces +code for the 68HC12. A few 68HC11 instructions are replaced by +some 68HC12 instructions as recommended by Motorola specifications. + +


-m68hcs12
This option switches the assembler in the M68HCS12 mode. This mode is +similar to -m68hc12 but specifies to assemble for the 68HCS12 +series. The only difference is on the assembling of the movb +and movw instruction when a PC-relative operand is used. + +


-mshort
This option controls the ABI and indicates to use a 16-bit integer ABI. +It has no effect on the assembled instructions. +This is the default. + +


-mlong
This option controls the ABI and indicates to use a 32-bit integer ABI. + +


-mshort-double
This option controls the ABI and indicates to use a 32-bit float ABI. +This is the default. + +


-mlong-double
This option controls the ABI and indicates to use a 64-bit float ABI. + +


--strict-direct-mode
You can use the --strict-direct-mode option to disable +the automatic translation of direct page mode addressing into +extended mode when the instruction does not support direct mode. +For example, the clr instruction does not support direct page +mode addressing. When it is used with the direct page mode, +as will ignore it and generate an absolute addressing. +This option prevents as from doing this, and the wrong +usage of the direct page mode will raise an error. + +


--short-branches
The --short-branches option turns off the translation of +relative branches into absolute branches when the branch offset is +out of range. By default as transforms the relative +branch (bsr, bgt, bge, beq, bne, +ble, blt, bhi, bcc, bls, +bcs, bmi, bvs, bvs, bra) into +an absolute branch when the offset is out of the -128 .. 127 range. +In that case, the bsr instruction is translated into a +jsr, the bra instruction is translated into a +jmp and the conditional branches instructions are inverted and +followed by a jmp. This option disables these translations +and as will generate an error if a relative branch +is out of range. This option does not affect the optimization +associated to the jbra, jbsr and jbXX pseudo opcodes. + +


--force-long-branches
The --force-long-branches option forces the translation of +relative branches into absolute branches. This option does not affect +the optimization associated to the jbra, jbsr and +jbXX pseudo opcodes. + +


--print-insn-syntax
You can use the --print-insn-syntax option to obtain the +syntax description of the instruction when an error is detected. + +


--print-opcodes
The --print-opcodes option prints the list of all the +instructions with their syntax. The first item of each line +represents the instruction name and the rest of the line indicates +the possible operands for that instruction. The list is printed +in alphabetical order. Once the list is printed as +exits. + +


--generate-example
The --generate-example option is similar to --print-opcodes +but it generates an example for each instruction instead. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dSyntax.html new file mode 100644 index 0000000..89ba49e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dSyntax.html @@ -0,0 +1,122 @@ + + +M68HC11-Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68HC11-Opts, +Up: M68HC11-Dependent +



+
+ +

9.21.2 Syntax

+ +

+In the M68HC11 syntax, the instruction name comes first and it may +be followed by one or several operands (up to three). Operands are +separated by comma (,). In the normal mode, +as will complain if too many operands are specified for +a given instruction. In the MRI mode (turned on with -M option), +it will treat them as comments. Example: + +

     inx
+     lda  #23
+     bset 2,x #4
+     brclr *bot #8 foo
+
+

The following addressing modes are understood for 68HC11 and 68HC12: +

+
Immediate
#number + +
Address Register
number,X, number,Y + +

The number may be omitted in which case 0 is assumed. + +

Direct Addressing mode
*symbol, or *digits + +
Absolute
symbol, or digits +
+ +

The M68HC12 has other more complex addressing modes. All of them +are supported and they are represented below: + +

+
Constant Offset Indexed Addressing Mode
number,reg + +

The number may be omitted in which case 0 is assumed. +The register can be either X, Y, SP or +PC. The assembler will use the smaller post-byte definition +according to the constant value (5-bit constant offset, 9-bit constant +offset or 16-bit constant offset). If the constant is not known by +the assembler it will use the 16-bit constant offset post-byte and the value +will be resolved at link time. + +

Offset Indexed Indirect
[number,reg] + +

The register can be either X, Y, SP or PC. + +

Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement
number,-reg +number,+reg +number,reg- +number,reg+ + +

The number must be in the range -8..+8 and must not be 0. +The register can be either X, Y, SP or PC. + +

Accumulator Offset
acc,reg + +

The accumulator register can be either A, B or D. +The register can be either X, Y, SP or PC. + +

Accumulator D offset indexed-indirect
[D,reg] + +

The register can be either X, Y, SP or PC. + +

+ +

For example: + +

     ldab 1024,sp
+     ldd [10,x]
+     orab 3,+x
+     stab -2,y-
+     ldx a,pc
+     sty [d,sp]
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dopcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dopcodes.html new file mode 100644 index 0000000..b3eb8b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68HC11_002dopcodes.html @@ -0,0 +1,54 @@ + + +M68HC11-opcodes - Using as + + + + + + + + + + + + +
+

+Previous: M68HC11-Float, +Up: M68HC11-Dependent +



+
+ +

9.21.6 Opcodes

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dBranch.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dBranch.html new file mode 100644 index 0000000..4765f8f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dBranch.html @@ -0,0 +1,142 @@ + + +M68K-Branch - Using as + + + + + + + + + + + + +
+

+Next: , +Up: M68K-opcodes +



+
+ +
9.20.6.1 Branch Improvement
+ +

Certain pseudo opcodes are permitted for branch instructions. +They expand to the shortest branch instruction that reach the +target. Generally these mnemonics are made by substituting j for +b at the start of a Motorola mnemonic. + +

The following table summarizes the pseudo-operations. A * flags +cases that are more fully described after the table: + +

               Displacement
+               +------------------------------------------------------------
+               |                68020           68000/10, not PC-relative OK
+     Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
+               +------------------------------------------------------------
+          jbsr |bsrs    bsrw    bsrl            jsr
+           jra |bras    braw    bral            jmp
+     *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
+     *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
+          fjXX | N/A    fbXXw   fbXXl            N/A
+     
+     XX: condition
+     NX: negative of condition XX
+     
+
+
*—see full description below
+
**—this expansion mode is disallowed by --pcrel
+ +
+
jbsr
jra
These are the simplest jump pseudo-operations; they always map to one +particular machine instruction, depending on the displacement to the +branch target. This instruction will be a byte or word branch is that +is sufficient. Otherwise, a long branch will be emitted if available. +If no long branches are available and the --pcrel option is not +given, an absolute long jump will be emitted instead. If no long +branches are available, the --pcrel option is given, and a word +branch cannot reach the target, an error message is generated. + +

In addition to standard branch operands, as allows these +pseudo-operations to have all operands that are allowed for jsr and jmp, +substituting these instructions if the operand given is not valid for a +branch instruction. + +

jXX
Here, jXX stands for an entire family of pseudo-operations, +where XX is a conditional branch or condition-code test. The full +list of pseudo-ops in this family is: +
           jhi   jls   jcc   jcs   jne   jeq   jvc
+           jvs   jpl   jmi   jge   jlt   jgt   jle
+     
+

Usually, each of these pseudo-operations expands to a single branch +instruction. However, if a word branch is not sufficient, no long branches +are available, and the --pcrel option is not given, as +issues a longer code fragment in terms of NX, the opposite condition +to XX. For example, under these conditions: +

              jXX foo
+     
+

gives +

               bNXs oof
+               jmp foo
+           oof:
+     
+
dbXX
The full family of pseudo-operations covered here is +
           dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
+           dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
+           dbf    dbra   dbt
+     
+

Motorola dbXX instructions allow word displacements only. When +a word displacement is sufficient, each of these pseudo-operations expands +to the corresponding Motorola instruction. When a word displacement is not +sufficient and long branches are available, when the source reads +dbXX foo, as emits +

               dbXX oo1
+               bras oo2
+           oo1:bral foo
+           oo2:
+     
+

If, however, long branches are not available and the --pcrel option is +not given, as emits +

               dbXX oo1
+               bras oo2
+           oo1:jmp foo
+           oo2:
+     
+
fjXX
This family includes +
           fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
+           fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
+           fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
+           fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
+           fjugt  fjule  fjult  fjun
+     
+

Each of these pseudo-operations always expands to a single Motorola +coprocessor branch instruction, word or long. All Motorola coprocessor +branch instructions allow both word and long displacements. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dChars.html new file mode 100644 index 0000000..4d73760 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dChars.html @@ -0,0 +1,58 @@ + + +M68K-Chars - Using as + + + + + + + + + + + + +
+

+Previous: M68K-Branch, +Up: M68K-opcodes +



+
+ +
9.20.6.2 Special Characters
+ +

The immediate character is # for Sun compatibility. The +line-comment character is | (unless the --bitwise-or +option is used). If a # appears at the beginning of a line, it +is treated as a comment unless it looks like # line file, in +which case it is treated normally. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dDependent.html new file mode 100644 index 0000000..375e159 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dDependent.html @@ -0,0 +1,61 @@ + + +M68K-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: M32R-Dependent, +Up: Machine Dependencies +



+
+ +

9.20 M680x0 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dDirectives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dDirectives.html new file mode 100644 index 0000000..02b5531 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dDirectives.html @@ -0,0 +1,80 @@ + + +M68K-Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68K-Float, +Up: M68K-Dependent +



+
+ +

9.20.5 680x0 Machine Directives

+ +

In order to be compatible with the Sun assembler the 680x0 assembler +understands the following directives. + + + +

.data1
This directive is identical to a .data 1 directive. + +


.data2
This directive is identical to a .data 2 directive. + +


.even
This directive is a special case of the .align directive; it +aligns the output to an even byte boundary. + +


.skip
This directive is identical to a .space directive. + +


.arch name
Select the target architecture and extension features. Valid values +for name are the same as for the -march command line +option. This directive cannot be specified after +any instructions have been assembled. If it is given multiple times, +or in conjunction with the -march option, all uses must be for +the same architecture and extension set. + +


.cpu name
Select the target cpu. Valid valuse +for name are the same as for the -mcpu command line +option. This directive cannot be specified after +any instructions have been assembled. If it is given multiple times, +or in conjunction with the -mopt option, all uses must be for +the same cpu. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dFloat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dFloat.html new file mode 100644 index 0000000..7365761 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dFloat.html @@ -0,0 +1,64 @@ + + +M68K-Float - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68K-Moto-Syntax, +Up: M68K-Dependent +



+
+ +

9.20.4 Floating Point

+ +

Packed decimal (P) format floating literals are not supported. +Feel free to add the code! + +

The floating point formats generated by directives are these. + + + +

.float
Single precision floating point constants. + +


.double
Double precision floating point constants. + +


.extend
.ldouble
Extended precision (long double) floating point constants. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dMoto_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dMoto_002dSyntax.html new file mode 100644 index 0000000..a6d1133 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dMoto_002dSyntax.html @@ -0,0 +1,109 @@ + + +M68K-Moto-Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68K-Syntax, +Up: M68K-Dependent +



+
+ +

9.20.3 Motorola Syntax

+ +

+The standard Motorola syntax for this chip differs from the syntax +already discussed (see Syntax). as can +accept Motorola syntax for operands, even if mit syntax is used for +other operands in the same instruction. The two kinds of syntax are +fully compatible. + +

In the following table apc stands for any of the address registers +(%a0 through %a7), the program counter (%pc), the +zero-address relative to the program counter (%zpc), or a +suppressed address register (%za0 through %za7). The use +of size means one of w or l, and it may always be +omitted along with the leading dot. The use of scale means one of +1, 2, 4, or 8, and it may always be omitted +along with the leading asterisk. + +

The following additional addressing modes are understood: + +

+
Address Register Indirect
(%a0) through (%a7)
+%a7 is also known as %sp, i.e., the Stack Pointer. %a6 +is also known as %fp, the Frame Pointer. + +
Address Register Postincrement
(%a0)+ through (%a7)+ + +
Address Register Predecrement
-(%a0) through -(%a7) + +
Indirect Plus Offset
number(%a0) through number(%a7), +or number(%pc). + +

The number may also appear within the parentheses, as in +(number,%a0). When used with the pc, the +number may be omitted (with an address register, omitting the +number produces Address Register Indirect mode). + +

Index
number(apc,register.size*scale) + +

The number may be omitted, or it may appear within the +parentheses. The apc may be omitted. The register and the +apc may appear in either order. If both apc and +register are address registers, and the size and scale +are omitted, then the first register is taken as the base register, and +the second as the index register. + +

Postindex
([number,apc],register.size*scale,onumber) + +

The onumber, or the register, or both, may be omitted. +Either the number or the apc may be omitted, but not both. + +

Preindex
([number,apc,register.size*scale],onumber) + +

The number, or the apc, or the register, or any two of +them, may be omitted. The onumber may be omitted. The +register and the apc may appear in either order. If both +apc and register are address registers, and the size +and scale are omitted, then the first register is taken as the +base register, and the second as the index register. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dOpts.html new file mode 100644 index 0000000..07df3df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dOpts.html @@ -0,0 +1,184 @@ + + +M68K-Opts - Using as + + + + + + + + + + + + +
+

+Next: , +Up: M68K-Dependent +



+
+ +

9.20.1 M680x0 Options

+ +

The Motorola 680x0 version of as has a few machine +dependent options: + + + +

-march=architecture
This option specifies a target architecture. The following +architectures are recognized: +68000, +68010, +68020, +68030, +68040, +68060, +cpu32, +isaa, +isaaplus, +isab, +isac and +cfv4e. + +


-mcpu=cpu
This option specifies a target cpu. When used in conjunction with the +-march option, the cpu must be within the specified +architecture. Also, the generic features of the architecture are used +for instruction generation, rather than those of the specific chip. + +


-m[no-]68851
-m[no-]68881
-m[no-]div
-m[no-]usp
-m[no-]float
-m[no-]mac
-m[no-]emac
+Enable or disable various architecture specific features. If a chip +or architecture by default supports an option (for instance +-march=isaaplus includes the -mdiv option), +explicitly disabling the option will override the default. + +


-l
You can use the -l option to shorten the size of references to undefined +symbols. If you do not use the -l option, references to undefined +symbols are wide enough for a full long (32 bits). (Since +as cannot know where these symbols end up, as can +only allocate space for the linker to fill in later. Since as +does not know how far away these symbols are, it allocates as much space as it +can.) If you use this option, the references are only one word wide (16 bits). +This may be useful if you want the object file to be as small as possible, and +you know that the relevant symbols are always less than 17 bits away. + +


--register-prefix-optional
For some configurations, especially those where the compiler normally +does not prepend an underscore to the names of user variables, the +assembler requires a % before any use of a register name. This +is intended to let the assembler distinguish between C variables and +functions named a0 through a7, and so on. The % is +always accepted, but is not required for certain configurations, notably +sun3. The --register-prefix-optional option may be used +to permit omitting the % even for configurations for which it is +normally required. If this is done, it will generally be impossible to +refer to C variables and functions with the same names as register +names. + +


--bitwise-or
Normally the character | is treated as a comment character, which +means that it can not be used in expressions. The --bitwise-or +option turns | into a normal character. In this mode, you must +either use C style comments, or start comments with a # character +at the beginning of a line. + +


--base-size-default-16 --base-size-default-32
If you use an addressing mode with a base register without specifying +the size, as will normally use the full 32 bit value. +For example, the addressing mode %a0@(%d0) is equivalent to +%a0@(%d0:l). You may use the --base-size-default-16 +option to tell as to default to using the 16 bit value. +In this case, %a0@(%d0) is equivalent to %a0@(%d0:w). +You may use the --base-size-default-32 option to restore the +default behaviour. + +


--disp-size-default-16 --disp-size-default-32
If you use an addressing mode with a displacement, and the value of the +displacement is not known, as will normally assume that +the value is 32 bits. For example, if the symbol disp has not +been defined, as will assemble the addressing mode +%a0@(disp,%d0) as though disp is a 32 bit value. You may +use the --disp-size-default-16 option to tell as +to instead assume that the displacement is 16 bits. In this case, +as will assemble %a0@(disp,%d0) as though +disp is a 16 bit value. You may use the +--disp-size-default-32 option to restore the default behaviour. + +


--pcrel
Always keep branches PC-relative. In the M680x0 architecture all branches +are defined as PC-relative. However, on some processors they are limited +to word displacements maximum. When as needs a long branch +that is not available, it normally emits an absolute jump instead. This +option disables this substitution. When this option is given and no long +branches are available, only word branches will be emitted. An error +message will be generated if a word branch cannot reach its target. This +option has no effect on 68020 and other processors that have long branches. +see Branch Improvement. + +


-m68000
as can assemble code for several different members of the +Motorola 680x0 family. The default depends upon how as +was configured when it was built; normally, the default is to assemble +code for the 68020 microprocessor. The following options may be used to +change the default. These options control which instructions and +addressing modes are permitted. The members of the 680x0 family are +very similar. For detailed information about the differences, see the +Motorola manuals. + +
+
-m68000
-m68ec000
-m68hc000
-m68hc001
-m68008
-m68302
-m68306
-m68307
-m68322
-m68356
Assemble for the 68000. -m68008, -m68302, and so on are synonyms +for -m68000, since the chips are the same from the point of view +of the assembler. + +
-m68010
Assemble for the 68010. + +
-m68020
-m68ec020
Assemble for the 68020. This is normally the default. + +
-m68030
-m68ec030
Assemble for the 68030. + +
-m68040
-m68ec040
Assemble for the 68040. + +
-m68060
-m68ec060
Assemble for the 68060. + +
-mcpu32
-m68330
-m68331
-m68332
-m68333
-m68334
-m68336
-m68340
-m68341
-m68349
-m68360
Assemble for the CPU32 family of chips. + +
-m5200
-m5202
-m5204
-m5206
-m5206e
-m521x
-m5249
-m528x
-m5307
-m5407
-m547x
-m548x
-mcfv4
-mcfv4e
Assemble for the ColdFire family of chips. + +
-m68881
-m68882
Assemble 68881 floating point instructions. This is the default for the +68020, 68030, and the CPU32. The 68040 and 68060 always support +floating point instructions. + +
-mno-68881
Do not assemble 68881 floating point instructions. This is the default +for 68000 and the 68010. The 68040 and 68060 always support floating +point instructions, even if this option is used. + +
-m68851
Assemble 68851 MMU instructions. This is the default for the 68020, +68030, and 68060. The 68040 accepts a somewhat different set of MMU +instructions; -m68851 and -m68040 should not be used +together. + +
-mno-68851
Do not assemble 68851 MMU instructions. This is the default for the +68000, 68010, and the CPU32. The 68040 accepts a somewhat different set +of MMU instructions. +
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dSyntax.html new file mode 100644 index 0000000..a719919 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dSyntax.html @@ -0,0 +1,101 @@ + + +M68K-Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M68K-Opts, +Up: M68K-Dependent +



+
+ +

9.20.2 Syntax

+ +

This syntax for the Motorola 680x0 was developed at mit. + +

The 680x0 version of as uses instructions names and +syntax compatible with the Sun assembler. Intervening periods are +ignored; for example, movl is equivalent to mov.l. + +

In the following table apc stands for any of the address registers +(%a0 through %a7), the program counter (%pc), the +zero-address relative to the program counter (%zpc), a suppressed +address register (%za0 through %za7), or it may be omitted +entirely. The use of size means one of w or l, and +it may be omitted, along with the leading colon, unless a scale is also +specified. The use of scale means one of 1, 2, +4, or 8, and it may always be omitted along with the +leading colon. + +

The following addressing modes are understood: +

+
Immediate
#number + +
Data Register
%d0 through %d7 + +
Address Register
%a0 through %a7
+%a7 is also known as %sp, i.e., the Stack Pointer. %a6 +is also known as %fp, the Frame Pointer. + +
Address Register Indirect
%a0@ through %a7@ + +
Address Register Postincrement
%a0@+ through %a7@+ + +
Address Register Predecrement
%a0@- through %a7@- + +
Indirect Plus Offset
apc@(number) + +
Index
apc@(number,register:size:scale) + +

The number may be omitted. + +

Postindex
apc@(number)@(onumber,register:size:scale) + +

The onumber or the register, but not both, may be omitted. + +

Preindex
apc@(number,register:size:scale)@(onumber) + +

The number may be omitted. Omitting the register produces +the Postindex addressing mode. + +

Absolute
symbol, or digits, optionally followed by +:b, :w, or :l. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dopcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dopcodes.html new file mode 100644 index 0000000..16a97e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/M68K_002dopcodes.html @@ -0,0 +1,57 @@ + + +M68K-opcodes - Using as + + + + + + + + + + + + +
+

+Previous: M68K-Directives, +Up: M68K-Dependent +



+
+ +

9.20.6 Opcodes

+ +

+ + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MD.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MD.html new file mode 100644 index 0000000..c97945b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MD.html @@ -0,0 +1,59 @@ + + +MD - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: M, +Up: Invoking +



+
+ +

2.10 Dependency Tracking: --MD

+ +

+as can generate a dependency file for the file it creates. This +file consists of a single rule suitable for make describing the +dependencies of the main source file. + +

The rule is written to the file named in its argument. + +

This feature is used in the automatic updating of makefiles. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-ASE-instruction-generation-overrides.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-ASE-instruction-generation-overrides.html new file mode 100644 index 0000000..f2fd261 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-ASE-instruction-generation-overrides.html @@ -0,0 +1,84 @@ + + +MIPS ASE instruction generation overrides - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS option stack, +Up: MIPS-Dependent +



+
+ +

9.22.9 Directives to control generation of MIPS ASE instructions

+ +

The directive .set mips3d makes the assembler accept instructions +from the MIPS-3D Application Specific Extension from that point on +in the assembly. The .set nomips3d directive prevents MIPS-3D +instructions from being accepted. + +

The directive .set smartmips makes the assembler accept +instructions from the SmartMIPS Application Specific Extension to the +MIPS32 isa from that point on in the assembly. The +.set nosmartmips directive prevents SmartMIPS instructions from +being accepted. + +

The directive .set mdmx makes the assembler accept instructions +from the MDMX Application Specific Extension from that point on +in the assembly. The .set nomdmx directive prevents MDMX +instructions from being accepted. + +

The directive .set dsp makes the assembler accept instructions +from the DSP Release 1 Application Specific Extension from that point +on in the assembly. The .set nodsp directive prevents DSP +Release 1 instructions from being accepted. + +

The directive .set dspr2 makes the assembler accept instructions +from the DSP Release 2 Application Specific Extension from that point +on in the assembly. This dirctive implies .set dsp. The +.set nodspr2 directive prevents DSP Release 2 instructions from +being accepted. + +

The directive .set mt makes the assembler accept instructions +from the MT Application Specific Extension from that point on +in the assembly. The .set nomt directive prevents MT +instructions from being accepted. + +

Traditional mips assemblers do not support these directives. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-ISA.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-ISA.html new file mode 100644 index 0000000..c3a3578 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-ISA.html @@ -0,0 +1,76 @@ + + +MIPS ISA - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS Stabs, +Up: MIPS-Dependent +



+
+ +

9.22.5 Directives to override the ISA level

+ +

gnu as supports an additional directive to change +the mips Instruction Set Architecture level on the fly: .set +mipsn. n should be a number from 0 to 5, or 32, 32r2, 64 +or 64r2. +The values other than 0 make the assembler accept instructions +for the corresponding isa level, from that point on in the +assembly. .set mipsn affects not only which instructions +are permitted, but also how certain macros are expanded. .set +mips0 restores the isa level to its original level: either the +level you selected with command line options, or the default for your +configuration. You can use this feature to permit specific mips3 +instructions while assembling in 32 bit mode. Use this directive with +care! + +

The .set arch=cpu directive provides even finer control. +It changes the effective CPU target and allows the assembler to use +instructions specific to a particular CPU. All CPUs supported by the +-march command line option are also selectable by this directive. +The original value is restored by .set arch=default. + +

The directive .set mips16 puts the assembler into MIPS 16 mode, +in which it will assemble instructions for the MIPS 16 processor. Use +.set nomips16 to return to normal 32 bit mode. + +

Traditional mips assemblers do not support this directive. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Object.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Object.html new file mode 100644 index 0000000..7752bc2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Object.html @@ -0,0 +1,76 @@ + + +MIPS Object - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS Opts, +Up: MIPS-Dependent +



+
+ +

9.22.2 MIPS ECOFF object code

+ +

Assembling for a mips ecoff target supports some additional sections +besides the usual .text, .data and .bss. The +additional sections are .rdata, used for read-only data, +.sdata, used for small data, and .sbss, used for small +common objects. + +

When assembling for ecoff, the assembler uses the $gp ($28) +register to form the address of a “small object”. Any object in the +.sdata or .sbss sections is considered “small” in this sense. +For external objects, or for objects in the .bss section, you can use +the gcc -G option to control the size of objects addressed via +$gp; the default value is 8, meaning that a reference to any object +eight bytes or smaller uses $gp. Passing -G 0 to +as prevents it from using the $gp register on the basis +of object size (but the assembler uses $gp for objects in .sdata +or sbss in any case). The size of an object in the .bss section +is set by the .comm or .lcomm directive that defines it. The +size of an external object may be set with the .extern directive. For +example, .extern sym,4 declares that the object at sym is 4 bytes +in length, whie leaving sym otherwise undefined. + +

Using small ecoff objects requires linker support, and assumes that the +$gp register is correctly initialized (normally done automatically by +the startup code). mips ecoff assembly code must not modify the +$gp register. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Opts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Opts.html new file mode 100644 index 0000000..f3d0605 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Opts.html @@ -0,0 +1,290 @@ + + +MIPS Opts - Using as + + + + + + + + + + + + +

+

+Next: , +Up: MIPS-Dependent +



+
+ +

9.22.1 Assembler options

+ +

The mips configurations of gnu as support these +special options: + + + +

-G num
This option sets the largest size of an object that can be referenced +implicitly with the gp register. It is only accepted for targets +that use ecoff format. The default value is 8. + +


-EB
-EL
Any mips configuration of as can select big-endian or +little-endian output at run time (unlike the other gnu development +tools, which must be configured for one or the other). Use -EB +to select big-endian output, and -EL for little-endian. + +
-KPIC
Generate SVR4-style PIC. This option tells the assembler to generate +SVR4-style position-independent macro expansions. It also tells the +assembler to mark the output file as PIC. + +
-mvxworks-pic
Generate VxWorks PIC. This option tells the assembler to generate +VxWorks-style position-independent macro expansions. + +


-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips64
-mips64r2
Generate code for a particular MIPS Instruction Set Architecture level. +-mips1 corresponds to the r2000 and r3000 processors, +-mips2 to the r6000 processor, -mips3 to the +r4000 processor, and -mips4 to the r8000 and +r10000 processors. -mips5, -mips32, -mips32r2, +-mips64, and -mips64r2 +correspond to generic +MIPS V, MIPS32, MIPS32 Release 2, MIPS64, +and MIPS64 Release 2 +ISA processors, respectively. You can also switch +instruction sets during the assembly; see Directives to override the ISA level. + +
-mgp32
-mfp32
Some macros have different expansions for 32-bit and 64-bit registers. +The register sizes are normally inferred from the ISA and ABI, but these +flags force a certain group of registers to be treated as 32 bits wide at +all times. -mgp32 controls the size of general-purpose registers +and -mfp32 controls the size of floating-point registers. + +

The .set gp=32 and .set fp=32 directives allow the size +of registers to be changed for parts of an object. The default value is +restored by .set gp=default and .set fp=default. + +

On some MIPS variants there is a 32-bit mode flag; when this flag is +set, 64-bit instructions generate a trap. Also, some 32-bit OSes only +save the 32-bit registers on a context switch, so it is essential never +to use the 64-bit registers. + +

-mgp64
-mfp64
Assume that 64-bit registers are available. This is provided in the +interests of symmetry with -mgp32 and -mfp32. + +

The .set gp=64 and .set fp=64 directives allow the size +of registers to be changed for parts of an object. The default value is +restored by .set gp=default and .set fp=default. + +

-mips16
-no-mips16
Generate code for the MIPS 16 processor. This is equivalent to putting +.set mips16 at the start of the assembly file. -no-mips16 +turns off this option. + +
-msmartmips
-mno-smartmips
Enables the SmartMIPS extensions to the MIPS32 instruction set, which +provides a number of new instructions which target smartcard and +cryptographic applications. This is equivalent to putting +.set smartmips at the start of the assembly file. +-mno-smartmips turns off this option. + +
-mips3d
-no-mips3d
Generate code for the MIPS-3D Application Specific Extension. +This tells the assembler to accept MIPS-3D instructions. +-no-mips3d turns off this option. + +
-mdmx
-no-mdmx
Generate code for the MDMX Application Specific Extension. +This tells the assembler to accept MDMX instructions. +-no-mdmx turns off this option. + +
-mdsp
-mno-dsp
Generate code for the DSP Release 1 Application Specific Extension. +This tells the assembler to accept DSP Release 1 instructions. +-mno-dsp turns off this option. + +
-mdspr2
-mno-dspr2
Generate code for the DSP Release 2 Application Specific Extension. +This option implies -mdsp. +This tells the assembler to accept DSP Release 2 instructions. +-mno-dspr2 turns off this option. + +
-mmt
-mno-mt
Generate code for the MT Application Specific Extension. +This tells the assembler to accept MT instructions. +-mno-mt turns off this option. + +
-mfix7000
-mno-fix7000
Cause nops to be inserted if the read of the destination register +of an mfhi or mflo instruction occurs in the following two instructions. + +
-mfix-vr4120
-no-mfix-vr4120
Insert nops to work around certain VR4120 errata. This option is +intended to be used on GCC-generated code: it is not designed to catch +all problems in hand-written assembler code. + +
-mfix-vr4130
-no-mfix-vr4130
Insert nops to work around the VR4130 mflo/mfhi errata. + +
-m4010
-no-m4010
Generate code for the LSI r4010 chip. This tells the assembler to +accept the r4010 specific instructions (addciu, ffc, +etc.), and to not schedule nop instructions around accesses to +the HI and LO registers. -no-m4010 turns off this +option. + +
-m4650
-no-m4650
Generate code for the MIPS r4650 chip. This tells the assembler to accept +the mad and madu instruction, and to not schedule nop +instructions around accesses to the HI and LO registers. +-no-m4650 turns off this option. + +
-m3900
-no-m3900
-m4100
-no-m4100
For each option -mnnnn, generate code for the MIPS +rnnnn chip. This tells the assembler to accept instructions +specific to that chip, and to schedule for that chip's hazards. + +
-march=cpu
Generate code for a particular MIPS cpu. It is exactly equivalent to +-mcpu, except that there are more value of cpu +understood. Valid cpu value are: + +
+2000, +3000, +3900, +4000, +4010, +4100, +4111, +vr4120, +vr4130, +vr4181, +4300, +4400, +4600, +4650, +5000, +rm5200, +rm5230, +rm5231, +rm5261, +rm5721, +vr5400, +vr5500, +6000, +rm7000, +8000, +rm9000, +10000, +12000, +4kc, +4km, +4kp, +4ksc, +4kec, +4kem, +4kep, +4ksd, +m4k, +m4kp, +24kc, +24kf2_1, +24kf, +24kf1_1, +24kec, +24kef2_1, +24kef, +24kef1_1, +34kc, +34kf2_1, +34kf, +34kf1_1, +74kc, +74kf2_1, +74kf, +74kf1_1, +74kf3_2, +5kc, +5kf, +20kc, +25kf, +sb1, +sb1a, +loongson2e, +loongson2f, +octeon +
+ +

For compatibility reasons, nx and bfx are +accepted as synonyms for nf1_1. These values are +deprecated. + +

-mtune=cpu
Schedule and tune for a particular MIPS cpu. Valid cpu values are +identical to -march=cpu. + +
-mabi=abi
Record which ABI the source code uses. The recognized arguments +are: 32, n32, o64, 64 and eabi. + +
-msym32
-mno-sym32
Equivalent to adding .set sym32 or .set nosym32 to +the beginning of the assembler input. See MIPS symbol sizes. + +


-nocpp
This option is ignored. It is accepted for command-line compatibility with +other assemblers, which use it to turn off C style preprocessing. With +gnu as, there is no need for -nocpp, because the +gnu assembler itself never runs the C preprocessor. + +
-msoft-float
-mhard-float
Disable or enable floating-point instructions. Note that by default +floating-point instructions are always allowed even with CPU targets +that don't have support for these instructions. + +
-msingle-float
-mdouble-float
Disable or enable double-precision floating-point operations. Note +that by default double-precision floating-point operations are always +allowed even with CPU targets that don't have support for these +operations. + +
--construct-floats
--no-construct-floats
The --no-construct-floats option disables the construction of +double width floating point constants by loading the two halves of the +value into the two single width floating point registers that make up +the double width register. This feature is useful if the processor +support the FR bit in its status register, and this bit is known (by +the programmer) to be set. This bit prevents the aliasing of the double +width register by the single width registers. + +

By default --construct-floats is selected, allowing construction +of these floating point constants. + +

--trap
--no-break
+ +as automatically macro expands certain division and +multiplication instructions to check for overflow and division by zero. This +option causes as to generate code to take a trap exception +rather than a break exception when an error is detected. The trap instructions +are only supported at Instruction Set Architecture level 2 and higher. + +
--break
--no-trap
Generate code to take a break exception rather than a trap exception when an +error is detected. This is the default. + +
-mpdr
-mno-pdr
Control generation of .pdr sections. Off by default on IRIX, on +elsewhere. + +
-mshared
-mno-shared
When generating code using the Unix calling conventions (selected by +-KPIC or -mcall_shared), gas will normally generate code +which can go into a shared library. The -mno-shared option +tells gas to generate code which uses the calling convention, but can +not go into a shared library. The resulting code is slightly more +efficient. This option only affects the handling of the +.cpload and .cpsetup pseudo-ops. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Stabs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Stabs.html new file mode 100644 index 0000000..e01bda7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-Stabs.html @@ -0,0 +1,60 @@ + + +MIPS Stabs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MIPS Object, +Up: MIPS-Dependent +



+
+ +

9.22.3 Directives for debugging information

+ +

mips ecoff as supports several directives used for +generating debugging information which are not support by traditional mips +assemblers. These are .def, .endef, .dim, .file, +.scl, .size, .tag, .type, .val, +.stabd, .stabn, and .stabs. The debugging information +generated by the three .stab directives can only be read by gdb, +not by traditional mips debuggers (this enhancement is required to fully +support C++ debugging). These directives are primarily used by compilers, not +assembly language programmers! + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-autoextend.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-autoextend.html new file mode 100644 index 0000000..7142cfc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-autoextend.html @@ -0,0 +1,60 @@ + + +MIPS autoextend - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS symbol sizes, +Up: MIPS-Dependent +



+
+ +

9.22.6 Directives for extending MIPS 16 bit instructions

+ +

By default, MIPS 16 instructions are automatically extended to 32 bits +when necessary. The directive .set noautoextend will turn this +off. When .set noautoextend is in effect, any 32 bit instruction +must be explicitly extended with the .e modifier (e.g., +li.e $4,1000). The directive .set autoextend may be used +to once again automatically extend instructions when necessary. + +

This directive is only meaningful when in MIPS 16 mode. Traditional +mips assemblers do not support this directive. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-floating_002dpoint.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-floating_002dpoint.html new file mode 100644 index 0000000..b7df609 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-floating_002dpoint.html @@ -0,0 +1,66 @@ + + +MIPS floating-point - Using as + + + + + + + + + + + + +

+ +

9.22.10 Directives to override floating-point options

+ +

The directives .set softfloat and .set hardfloat provide +finer control of disabling and enabling float-point instructions. +These directives always override the default (that hard-float +instructions are accepted) or the command-line options +(-msoft-float and -mhard-float). + +

The directives .set singlefloat and .set doublefloat +provide finer control of disabling and enabling double-precision +float-point operations. These directives always override the default +(that double-precision operations are accepted) or the command-line +options (-msingle-float and -mdouble-float). + +

Traditional mips assemblers do not support these directives. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-insn.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-insn.html new file mode 100644 index 0000000..f7a2fc0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-insn.html @@ -0,0 +1,56 @@ + + +MIPS insn - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS autoextend, +Up: MIPS-Dependent +



+
+ +

9.22.7 Directive to mark data as an instruction

+ +

The .insn directive tells as that the following +data is actually instructions. This makes a difference in MIPS 16 mode: +when loading the address of a label which precedes instructions, +as automatically adds 1 to the value, so that jumping to +the loaded address will do the right thing. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-option-stack.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-option-stack.html new file mode 100644 index 0000000..1691f57 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-option-stack.html @@ -0,0 +1,62 @@ + + +MIPS option stack - Using as + + + + + + + + + + + + + +

+ +

9.22.8 Directives to save and restore options

+ +

The directives .set push and .set pop may be used to save +and restore the current settings for all the options which are +controlled by .set. The .set push directive saves the +current settings on a stack. The .set pop directive pops the +stack and restores the settings. + +

These directives can be useful inside an macro which must change an +option such as the ISA level or instruction reordering but does not want +to change the state of the code which invoked the macro. + +

Traditional mips assemblers do not support these directives. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-symbol-sizes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-symbol-sizes.html new file mode 100644 index 0000000..3b9d54d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS-symbol-sizes.html @@ -0,0 +1,94 @@ + + +MIPS symbol sizes - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS ISA, +Up: MIPS-Dependent +



+
+ +

9.22.4 Directives to override the size of symbols

+ +

The n64 ABI allows symbols to have any 64-bit value. Although this +provides a great deal of flexibility, it means that some macros have +much longer expansions than their 32-bit counterparts. For example, +the non-PIC expansion of dla $4,sym is usually: + +

     lui     $4,%highest(sym)
+     lui     $1,%hi(sym)
+     daddiu  $4,$4,%higher(sym)
+     daddiu  $1,$1,%lo(sym)
+     dsll32  $4,$4,0
+     daddu   $4,$4,$1
+
+

whereas the 32-bit expansion is simply: + +

     lui     $4,%hi(sym)
+     daddiu  $4,$4,%lo(sym)
+
+

n64 code is sometimes constructed in such a way that all symbolic +constants are known to have 32-bit values, and in such cases, it's +preferable to use the 32-bit expansion instead of the 64-bit +expansion. + +

You can use the .set sym32 directive to tell the assembler +that, from this point on, all expressions of the form +symbol or symbol + offset +have 32-bit values. For example: + +

     .set sym32
+     dla     $4,sym
+     lw      $4,sym+16
+     sw      $4,sym+0x8000($4)
+
+

will cause the assembler to treat sym, sym+16 and +sym+0x8000 as 32-bit values. The handling of non-symbolic +addresses is not affected. + +

The directive .set nosym32 ends a .set sym32 block and +reverts to the normal behavior. It is also possible to change the +symbol size using the command-line options -msym32 and +-mno-sym32. + +

These options and directives are always accepted, but at present, +they have no effect for anything other than n64. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS_002dDependent.html new file mode 100644 index 0000000..20629f0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MIPS_002dDependent.html @@ -0,0 +1,71 @@ + + +MIPS-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: M68HC11-Dependent, +Up: Machine Dependencies +



+
+ +

9.22 MIPS Dependent Features

+ +

gnu as for mips architectures supports several +different mips processors, and MIPS ISA levels I through V, MIPS32, +and MIPS64. For information about the mips instruction set, see +MIPS RISC Architecture, by Kane and Heindrich (Prentice-Hall). +For an overview of mips assembly conventions, see “Appendix D: +Assembly Language Programming” in the same work. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dChars.html new file mode 100644 index 0000000..502cf11 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dChars.html @@ -0,0 +1,61 @@ + + +MMIX-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: MMIX-Syntax +



+
+ +
9.23.3.1 Special Characters
+ +

+The characters * and # are line comment characters; each +start a comment at the beginning of a line, but only at the beginning of a +line. A # prefixes a hexadecimal number if found elsewhere on a +line. + +

Two other characters, % and !, each start a comment anywhere +on the line. Thus you can't use the modulus and not +operators in expressions normally associated with these two characters. + +

A ; is a line separator, treated as a new-line, so separate +instructions can be specified on a single line. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dDependent.html new file mode 100644 index 0000000..7087f7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dDependent.html @@ -0,0 +1,59 @@ + + +MMIX-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS-Dependent, +Up: Machine Dependencies +



+
+ +

9.23 MMIX Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dExpand.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dExpand.html new file mode 100644 index 0000000..e631dab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dExpand.html @@ -0,0 +1,73 @@ + + +MMIX-Expand - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MMIX-Opts, +Up: MMIX-Dependent +



+
+ +

9.23.2 Instruction expansion

+ +

When as encounters an instruction with an operand that is +either not known or does not fit the operand size of the instruction, +as (and ld) will expand the instruction into +a sequence of instructions semantically equivalent to the operand fitting +the instruction. Expansion will take place for the following +instructions: + +

+
GETA
Expands to a sequence of four instructions: SETL, INCML, +INCMH and INCH. The operand must be a multiple of four. +
Conditional branches
A branch instruction is turned into a branch with the complemented +condition and prediction bit over five instructions; four instructions +setting $255 to the operand value, which like with GETA must +be a multiple of four, and a final GO $255,$255,0. +
PUSHJ
Similar to expansion for conditional branches; four instructions set +$255 to the operand value, followed by a PUSHGO $255,$255,0. +
JMP
Similar to conditional branches and PUSHJ. The final instruction +is GO $255,$255,0. +
+ +

The linker ld is expected to shrink these expansions for +code assembled with --relax (though not currently implemented). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dOpts.html new file mode 100644 index 0000000..ea9c871 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dOpts.html @@ -0,0 +1,116 @@ + + +MMIX-Opts - Using as + + + + + + + + + + + + +

+

+Next: , +Up: MMIX-Dependent +



+
+ +

9.23.1 Command-line Options

+ +

The MMIX version of as has some machine-dependent options. + +

When --fixed-special-register-names is specified, only the register +names specified in MMIX-Regs are recognized in the instructions +PUT and GET. + +

You can use the --globalize-symbols to make all symbols global. +This option is useful when splitting up a mmixal program into +several files. + +

The --gnu-syntax turns off most syntax compatibility with +mmixal. Its usability is currently doubtful. + +

The --relax option is not fully supported, but will eventually make +the object file prepared for linker relaxation. + +

If you want to avoid inadvertently calling a predefined symbol and would +rather get an error, for example when using as with a +compiler or other machine-generated code, specify +--no-predefined-syms. This turns off built-in predefined +definitions of all such symbols, including rounding-mode symbols, segment +symbols, BIT symbols, and TRAP symbols used in mmix +“system calls”. It also turns off predefined special-register names, +except when used in PUT and GET instructions. + +

By default, some instructions are expanded to fit the size of the operand +or an external symbol (see MMIX-Expand). By passing +--no-expand, no such expansion will be done, instead causing errors +at link time if the operand does not fit. + +

The mmixal documentation (see mmixsite) specifies that global +registers allocated with the GREG directive (see MMIX-greg) and +initialized to the same non-zero value, will refer to the same global +register. This isn't strictly enforceable in as since the +final addresses aren't known until link-time, but it will do an effort +unless the --no-merge-gregs option is specified. (Register merging +isn't yet implemented in ld.) + +

as will warn every time it expands an instruction to fit an +operand unless the option -x is specified. It is believed that +this behaviour is more useful than just mimicking mmixal's +behaviour, in which instructions are only expanded if the -x option +is specified, and assembly fails otherwise, when an instruction needs to +be expanded. It needs to be kept in mind that mmixal is both an +assembler and linker, while as will expand instructions +that at link stage can be contracted. (Though linker relaxation isn't yet +implemented in ld.) The option -x also imples +--linker-allocated-gregs. + +

If instruction expansion is enabled, as can expand a +PUSHJ instruction into a series of instructions. The shortest +expansion is to not expand it, but just mark the call as redirectable to a +stub, which ld creates at link-time, but only if the +original PUSHJ instruction is found not to reach the target. The +stub consists of the necessary instructions to form a jump to the target. +This happens if as can assert that the PUSHJ +instruction can reach such a stub. The option --no-pushj-stubs +disables this shorter expansion, and the longer series of instructions is +then created at assembly-time. The option --no-stubs is a synonym, +intended for compatibility with future releases, where generation of stubs +for other instructions may be implemented. + +

Usually a two-operand-expression (see GREG-base) without a matching +GREG directive is treated as an error by as. When +the option --linker-allocated-gregs is in effect, they are instead +passed through to the linker, which will allocate as many global registers +as is needed. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dPseudos.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dPseudos.html new file mode 100644 index 0000000..8311d88 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dPseudos.html @@ -0,0 +1,218 @@ + + +MMIX-Pseudos - Using as + + + + + + + + + + + + +

+

+Previous: MMIX-Regs, +Up: MMIX-Syntax +



+
+ +
9.23.3.4 Assembler Directives
+ +

+

+
LOC
+ +The LOC directive sets the current location to the value of the +operand field, which may include changing sections. If the operand is a +constant, the section is set to either .data if the value is +0x2000000000000000 or larger, else it is set to .text. +Within a section, the current location may only be changed to +monotonically higher addresses. A LOC expression must be a previously +defined symbol or a “pure” constant. + +

An example, which sets the label prev to the current location, and +updates the current location to eight bytes forward: +

          prev LOC @+8
+     
+

When a LOC has a constant as its operand, a symbol +__.MMIX.start..text or __.MMIX.start..data is defined +depending on the address as mentioned above. Each such symbol is +interpreted as special by the linker, locating the section at that +address. Note that if multiple files are linked, the first object file +with that section will be mapped to that address (not necessarily the file +with the LOC definition). + +

LOCAL
+ +Example: +
           LOCAL external_symbol
+           LOCAL 42
+           .local asymbol
+     
+

This directive-operation generates a link-time assertion that the operand +does not correspond to a global register. The operand is an expression +that at link-time resolves to a register symbol or a number. A number is +treated as the register having that number. There is one restriction on +the use of this directive: the pseudo-directive must be placed in a +section with contents, code or data. + +

IS
+ +The IS directive: +
          asymbol IS an_expression
+     
+

sets the symbol asymbol to an_expression. A symbol may not +be set more than once using this directive. Local labels may be set using +this directive, for example: +

          5H IS @+4
+     
+
GREG
+ +This directive reserves a global register, gives it an initial value and +optionally gives it a symbolic name. Some examples: + +
          areg GREG
+          breg GREG data_value
+               GREG data_buffer
+               .greg creg, another_data_value
+     
+

The symbolic register name can be used in place of a (non-special) +register. If a value isn't provided, it defaults to zero. Unless the +option --no-merge-gregs is specified, non-zero registers allocated +with this directive may be eliminated by as; another +register with the same value used in its place. +Any of the instructions +CSWAP, +GO, +LDA, +LDBU, +LDB, +LDHT, +LDOU, +LDO, +LDSF, +LDTU, +LDT, +LDUNC, +LDVTS, +LDWU, +LDW, +PREGO, +PRELD, +PREST, +PUSHGO, +STBU, +STB, +STCO, +STHT, +STOU, +STSF, +STTU, +STT, +STUNC, +SYNCD, +SYNCID, +can have a value nearby an initial value in place of its +second and third operands. Here, “nearby” is defined as within the +range 0...255 from the initial value of such an allocated register. + +

          buffer1 BYTE 0,0,0,0,0
+          buffer2 BYTE 0,0,0,0,0
+           ...
+           GREG buffer1
+           LDOU $42,buffer2
+     
+

In the example above, the Y field of the LDOUI instruction +(LDOU with a constant Z) will be replaced with the global register +allocated for buffer1, and the Z field will have the value +5, the offset from buffer1 to buffer2. The result is +equivalent to this code: +

          buffer1 BYTE 0,0,0,0,0
+          buffer2 BYTE 0,0,0,0,0
+           ...
+          tmpreg GREG buffer1
+           LDOU $42,tmpreg,(buffer2-buffer1)
+     
+

Global registers allocated with this directive are allocated in order +higher-to-lower within a file. Other than that, the exact order of +register allocation and elimination is undefined. For example, the order +is undefined when more than one file with such directives are linked +together. With the options -x and --linker-allocated-gregs, +GREG directives for two-operand cases like the one mentioned above +can be omitted. Sufficient global registers will then be allocated by the +linker. + +

BYTE
+ +The BYTE directive takes a series of operands separated by a comma. +If an operand is a string (see Strings), each character of that string +is emitted as a byte. Other operands must be constant expressions without +forward references, in the range 0...255. If you need operands having +expressions with forward references, use .byte (see Byte). An +operand can be omitted, defaulting to a zero value. + +
WYDE
TETRA
OCTA
+ +The directives WYDE, TETRA and OCTA emit constants of +two, four and eight bytes size respectively. Before anything else happens +for the directive, the current location is aligned to the respective +constant-size boundary. If a label is defined at the beginning of the +line, its value will be that after the alignment. A single operand can be +omitted, defaulting to a zero value emitted for the directive. Operands +can be expressed as strings (see Strings), in which case each +character in the string is emitted as a separate constant of the size +indicated by the directive. + +
PREFIX
+ +The PREFIX directive sets a symbol name prefix to be prepended to +all symbols (except local symbols, see MMIX-Symbols), that are not +prefixed with :, until the next PREFIX directive. Such +prefixes accumulate. For example, +
           PREFIX a
+           PREFIX b
+          c IS 0
+     
+

defines a symbol abc with the value 0. + +

BSPEC
ESPEC
+ +A pair of BSPEC and ESPEC directives delimit a section of +special contents (without specified semantics). Example: +
           BSPEC 42
+           TETRA 1,2,3
+           ESPEC
+     
+

The single operand to BSPEC must be number in the range +0...255. The BSPEC number 80 is used by the GNU binutils +implementation. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dRegs.html new file mode 100644 index 0000000..52ce60a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dRegs.html @@ -0,0 +1,70 @@ + + +MMIX-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MMIX-Symbols, +Up: MMIX-Syntax +



+
+ +
9.23.3.3 Register names
+ +

+Local and global registers are specified as $0 to $255. +The recognized special register names are rJ, rA, rB, +rC, rD, rE, rF, rG, rH, +rI, rK, rL, rM, rN, rO, +rP, rQ, rR, rS, rT, rU, +rV, rW, rX, rY, rZ, rBB, +rTT, rWW, rXX, rYY and rZZ. A leading +: is optional for special register names. + +

Local and global symbols can be equated to register names and used in +place of ordinary registers. + +

Similarly for special registers, local and global symbols can be used. +Also, symbols equated from numbers and constant expressions are allowed in +place of a special register, except when either of the options +--no-predefined-syms and --fixed-special-register-names are +specified. Then only the special register names above are allowed for the +instructions having a special register operand; GET and PUT. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dSymbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dSymbols.html new file mode 100644 index 0000000..5b0fe59 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dSymbols.html @@ -0,0 +1,89 @@ + + +MMIX-Symbols - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MMIX-Chars, +Up: MMIX-Syntax +



+
+ +
9.23.3.2 Symbols
+ +

The character : is permitted in identifiers. There are two +exceptions to it being treated as any other symbol character: if a symbol +begins with :, it means that the symbol is in the global namespace +and that the current prefix should not be prepended to that symbol +(see MMIX-prefix). The : is then not considered part of the +symbol. For a symbol in the label position (first on a line), a : +at the end of a symbol is silently stripped off. A label is permitted, +but not required, to be followed by a :, as with many other +assembly formats. + +

The character @ in an expression, is a synonym for ., the +current location. + +

In addition to the common forward and backward local symbol formats +(see Symbol Names), they can be specified with upper-case B and +F, as in 8B and 9F. A local label defined for the +current position is written with a H appended to the number: +

     3H LDB $0,$1,2
+
+

This and traditional local-label formats cannot be mixed: a label must be +defined and referred to using the same format. + +

There's a minor caveat: just as for the ordinary local symbols, the local +symbols are translated into ordinary symbols using control characters are +to hide the ordinal number of the symbol. Unfortunately, these symbols +are not translated back in error messages. Thus you may see confusing +error messages when local symbols are used. Control characters +\003 (control-C) and \004 (control-D) are used for the +MMIX-specific local-symbol syntax. + +

The symbol Main is handled specially; it is always global. + +

By defining the symbols __.MMIX.start..text and +__.MMIX.start..data, the address of respectively the .text +and .data segments of the final program can be defined, though when +linking more than one object file, the code or data in the object file +containing the symbol is not guaranteed to be start at that position; just +the final executable. See MMIX-loc. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dSyntax.html new file mode 100644 index 0000000..ff724c9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dSyntax.html @@ -0,0 +1,76 @@ + + +MMIX-Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MMIX-Expand, +Up: MMIX-Dependent +



+
+ +

9.23.3 Syntax

+ +

The assembly syntax is supposed to be upward compatible with that +described in Sections 1.3 and 1.4 of The Art of Computer +Programming, Volume 1. Draft versions of those chapters as well as other +MMIX information is located at +http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html. +Most code examples from the mmixal package located there should work +unmodified when assembled and linked as single files, with a few +noteworthy exceptions (see MMIX-mmixal). + +

Before an instruction is emitted, the current location is aligned to the +next four-byte boundary. If a label is defined at the beginning of the +line, its value will be the aligned value. + +

In addition to the traditional hex-prefix 0x, a hexadecimal number +can also be specified by the prefix character #. + +

After all operands to an MMIX instruction or directive have been +specified, the rest of the line is ignored, treated as a comment. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dbyte.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dbyte.html new file mode 100644 index 0000000..a4f12f7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dbyte.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dconstants.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dconstants.html new file mode 100644 index 0000000..f47688c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dconstants.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dgreg.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dgreg.html new file mode 100644 index 0000000..2cea5c4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dgreg.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dis.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dis.html new file mode 100644 index 0000000..e2891db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dis.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dloc.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dloc.html new file mode 100644 index 0000000..55b0adb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dloc.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dlocal.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dlocal.html new file mode 100644 index 0000000..1c9f091 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dlocal.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dmmixal.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dmmixal.html new file mode 100644 index 0000000..4a35763 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dmmixal.html @@ -0,0 +1,136 @@ + + +MMIX-mmixal - Using as + + + + + + + + + + + + +
+

+Previous: MMIX-Syntax, +Up: MMIX-Dependent +



+
+ +

9.23.4 Differences to mmixal

+ +

+The binutils as and ld combination has a few +differences in function compared to mmixal (see mmixsite). + +

The replacement of a symbol with a GREG-allocated register +(see GREG-base) is not handled the exactly same way in +as as in mmixal. This is apparent in the +mmixal example file inout.mms, where different registers +with different offsets, eventually yielding the same address, are used in +the first instruction. This type of difference should however not affect +the function of any program unless it has specific assumptions about the +allocated register number. + +

Line numbers (in the mmo object format) are currently not +supported. + +

Expression operator precedence is not that of mmixal: operator precedence +is that of the C programming language. It's recommended to use +parentheses to explicitly specify wanted operator precedence whenever more +than one type of operators are used. + +

The serialize unary operator &, the fractional division operator +//, the logical not operator ! and the modulus operator +% are not available. + +

Symbols are not global by default, unless the option +--globalize-symbols is passed. Use the .global directive to +globalize symbols (see Global). + +

Operand syntax is a bit stricter with as than +mmixal. For example, you can't say addu 1,2,3, instead you +must write addu $1,$2,3. + +

You can't LOC to a lower address than those already visited +(i.e., “backwards”). + +

A LOC directive must come before any emitted code. + +

Predefined symbols are visible as file-local symbols after use. (In the +ELF file, that is—the linked mmo file has no notion of a file-local +symbol.) + +

Some mapping of constant expressions to sections in LOC expressions is +attempted, but that functionality is easily confused and should be avoided +unless compatibility with mmixal is required. A LOC expression to +0x2000000000000000 or higher, maps to the .data section and +lower addresses map to the .text section (see MMIX-loc). + +

The code and data areas are each contiguous. Sparse programs with +far-away LOC directives will take up the same amount of space as a +contiguous program with zeros filled in the gaps between the LOC +directives. If you need sparse programs, you might try and get the wanted +effect with a linker script and splitting up the code parts into sections +(see Section). Assembly code for this, to be compatible with +mmixal, would look something like: +

      .if 0
+      LOC away_expression
+      .else
+      .section away,"ax"
+      .fi
+
+

as will not execute the LOC directive and mmixal +ignores the lines with .. This construct can be used generally to +help compatibility. + +

Symbols can't be defined twice–not even to the same value. + +

Instruction mnemonics are recognized case-insensitive, though the +IS and GREG pseudo-operations must be specified in +upper-case characters. + +

There's no unicode support. + +

The following is a list of programs in mmix.tar.gz, available at +http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html, last +checked with the version dated 2001-08-25 (md5sum +c393470cfc86fac040487d22d2bf0172) that assemble with mmixal but do +not assemble with as: + +

+
silly.mms
LOC to a previous address. +
sim.mms
Redefines symbol Done. +
test.mms
Uses the serial operator &. +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dprefix.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dprefix.html new file mode 100644 index 0000000..c3c0bd2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dprefix.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dspec.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dspec.html new file mode 100644 index 0000000..b9dea51 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MMIX_002dspec.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MRI.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MRI.html new file mode 100644 index 0000000..0c8a6e7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MRI.html @@ -0,0 +1,55 @@ + + +MRI - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Macro, +Up: Pseudo Ops +



+
+ +

7.73 .mri val

+ +

If val is non-zero, this tells as to enter MRI mode. If +val is zero, this tells as to exit MRI mode. This change +affects code assembled until the next .mri directive, or until the end +of the file. See MRI mode. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Directives.html new file mode 100644 index 0000000..06c9cba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Directives.html @@ -0,0 +1,71 @@ + + +MSP430 Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MSP430 Floating Point, +Up: MSP430-Dependent +



+
+ +

9.24.4 MSP 430 Machine Directives

+ +

+ + +

.file
This directive is ignored; it is accepted for compatibility with other +MSP 430 assemblers. + +
+Warning: in other versions of the gnu assembler, .file is +used for the directive called .app-file in the MSP 430 support. +
+ +


.line
This directive is ignored; it is accepted for compatibility with other +MSP 430 assemblers. + +


.arch
Currently this directive is ignored; it is accepted for compatibility with other +MSP 430 assemblers. + +


.profiler
This directive instructs assembler to add new profile entry to the object file. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Floating-Point.html new file mode 100644 index 0000000..b46ff44 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Floating-Point.html @@ -0,0 +1,52 @@ + + +MSP430 Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MSP430 Syntax, +Up: MSP430-Dependent +



+
+ +

9.24.3 Floating Point

+ +

The MSP 430 family uses ieee 32-bit floating-point numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Opcodes.html new file mode 100644 index 0000000..f7ecfe6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Opcodes.html @@ -0,0 +1,56 @@ + + +MSP430 Opcodes - Using as + + + + + + + + + + + + + +

+ +

9.24.5 Opcodes

+ +

as implements all the standard MSP 430 opcodes. No +additional pseudo-instructions are needed on this family. + +

For information on the 430 machine instruction set, see MSP430 +User's Manual, document slau049d, Texas Instrument, Inc. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Options.html new file mode 100644 index 0000000..2cd2670 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Options.html @@ -0,0 +1,57 @@ + + +MSP430 Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: MSP430-Dependent +



+
+ +

9.24.1 Options

+ +

+

+
-m
select the mpu arch. Currently has no effect. +
-mP
enables polymorph instructions handler. + +
-mQ
enables relaxation at assembly time. DANGEROUS! + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Profiling-Capability.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Profiling-Capability.html new file mode 100644 index 0000000..740647a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Profiling-Capability.html @@ -0,0 +1,118 @@ + + +MSP430 Profiling Capability - Using as + + + + + + + + + + + + +
+

+Previous: MSP430 Opcodes, +Up: MSP430-Dependent +



+
+ +

9.24.6 Profiling Capability

+ +

It is a performance hit to use gcc's profiling approach for this tiny target. +Even more – jtag hardware facility does not perform any profiling functions. +However we've got gdb's built-in simulator where we can do anything. + +

We define new section .profiler which holds all profiling information. +We define new pseudo operation .profiler which will instruct assembler to +add new profile entry to the object file. Profile should take place at the +present address. + +

Pseudo operation format: + +

.profiler flags,function_to_profile [, cycle_corrector, extra] + +

where: + +

+
+flags is a combination of the following characters: + +
s
function entry +
x
function exit +
i
function is in init section +
f
function is in fini section +
l
library call +
c
libc standard call +
d
stack value demand +
I
interrupt service routine +
P
prologue start +
p
prologue end +
E
epilogue start +
e
epilogue end +
j
long jump / sjlj unwind +
a
an arbitrary code fragment +
t
extra parameter saved (a constant value like frame size) +
+ +
function_to_profile
a function address +
cycle_corrector
a value which should be added to the cycle counter, zero if omitted. +
extra
any extra parameter, zero if omitted. + +
+ +

For example: +

     .global fxx
+     .type fxx,@function
+     fxx:
+     .LFrameOffset_fxx=0x08
+     .profiler "scdP", fxx     ; function entry.
+     			  ; we also demand stack value to be saved
+       push r11
+       push r10
+       push r9
+       push r8
+     .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
+     					  ; (this is a prologue end)
+     					  ; note, that spare var filled with
+     					  ; the farme size
+       mov r15,r8
+     ...
+     .profiler cdE,fxx         ; check stack
+       pop r8
+       pop r9
+       pop r10
+       pop r11
+     .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
+       ret                     ; cause 'ret' insn takes 3 cycles
+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Syntax.html new file mode 100644 index 0000000..7373179 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430-Syntax.html @@ -0,0 +1,57 @@ + + +MSP430 Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MSP430 Options, +Up: MSP430-Dependent +



+
+ +

9.24.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dChars.html new file mode 100644 index 0000000..8e5e7da --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dChars.html @@ -0,0 +1,55 @@ + + +MSP430-Chars - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MSP430-Macros, +Up: MSP430 Syntax +



+
+ +
9.24.2.2 Special Characters
+ +

; is the line comment character. + +

The character $ in jump instructions indicates current location and +implemented only for TI syntax compatibility. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dDependent.html new file mode 100644 index 0000000..21a2089 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dDependent.html @@ -0,0 +1,61 @@ + + +MSP430-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MMIX-Dependent, +Up: Machine Dependencies +



+
+ +

9.24 MSP 430 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dExt.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dExt.html new file mode 100644 index 0000000..96fdb72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dExt.html @@ -0,0 +1,93 @@ + + +MSP430-Ext - Using as + + + + + + + + + + + + +
+

+Previous: MSP430-Regs, +Up: MSP430 Syntax +



+
+ +
9.24.2.4 Assembler Extensions
+ +

+

+
@rN
As destination operand being treated as 0(rn) + +
0(rN)
As source operand being treated as @rn + +
jCOND +N
Skips next N bytes followed by jump instruction and equivalent to +jCOND $+N+2 + +
+ +

Also, there are some instructions, which cannot be found in other assemblers. +These are branch instructions, which has different opcodes upon jump distance. +They all got PC relative addressing mode. + +

+
beq label
A polymorph instruction which is jeq label in case if jump distance +within allowed range for cpu's jump instruction. If not, this unrolls into +a sequence of +
            jne $+6
+            br  label
+     
+
bne label
A polymorph instruction which is jne label or jeq +4; br label + +
blt label
A polymorph instruction which is jl label or jge +4; br label + +
bltn label
A polymorph instruction which is jn label or jn +2; jmp +4; br label + +
bltu label
A polymorph instruction which is jlo label or jhs +2; br label + +
bge label
A polymorph instruction which is jge label or jl +4; br label + +
bgeu label
A polymorph instruction which is jhs label or jlo +4; br label + +
bgt label
A polymorph instruction which is jeq +2; jge label or jeq +6; jl +4; br label + +
bgtu label
A polymorph instruction which is jeq +2; jhs label or jeq +6; jlo +4; br label + +
bleu label
A polymorph instruction which is jeq label; jlo label or jeq +2; jhs +4; br label + +
ble label
A polymorph instruction which is jeq label; jl label or jeq +2; jge +4; br label + +
jump label
A polymorph instruction which is jmp label or br label +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dMacros.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dMacros.html new file mode 100644 index 0000000..f178ed6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dMacros.html @@ -0,0 +1,69 @@ + + +MSP430-Macros - Using as + + + + + + + + + + + + +
+

+Next: , +Up: MSP430 Syntax +



+
+ +
9.24.2.1 Macros
+ +

The macro syntax used on the MSP 430 is like that described in the MSP +430 Family Assembler Specification. Normal as +macros should still work. + +

Additional built-in macros are: + +

+
llo(exp)
Extracts least significant word from 32-bit expression 'exp'. + +
lhi(exp)
Extracts most significant word from 32-bit expression 'exp'. + +
hlo(exp)
Extracts 3rd word from 64-bit expression 'exp'. + +
hhi(exp)
Extracts 4rd word from 64-bit expression 'exp'. + +
+ +

They normally being used as an immediate source operand. +

         mov	#llo(1), r10	;	== mov	#1, r10
+         mov	#lhi(1), r10	;	== mov	#0, r10
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dRegs.html new file mode 100644 index 0000000..448d989 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/MSP430_002dRegs.html @@ -0,0 +1,59 @@ + + +MSP430-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MSP430-Chars, +Up: MSP430 Syntax +



+
+ +
9.24.2.3 Register Names
+ +

General-purpose registers are represented by predefined symbols of the +form rN (for global registers), where N represents +a number between 0 and 15. The leading +letters may be in either upper or lower case; for example, r13 +and R7 are both valid register names. + +

Register names PC, SP and SR cannot be used as register names +and will be treated as variables. Use r0, r1, and r2 instead. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Machine-Dependencies.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Machine-Dependencies.html new file mode 100644 index 0000000..a8ae4c1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Machine-Dependencies.html @@ -0,0 +1,145 @@ + + +Machine Dependencies - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Object Attributes, +Up: Top +



+
+ +

9 Machine Dependent Features

+ +

The machine instruction sets are (almost by definition) different on +each machine where as runs. Floating point representations +vary as well, and as often supports a few additional +directives or command-line options for compatibility with other +assemblers on a particular platform. Finally, some versions of +as support special pseudo-instructions for branch +optimization. + +

This chapter discusses most of these differences, though it does not +include details on any machine's instruction set. For details on that +subject, see the hardware manufacturer's manual. + +

+ + + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Macro.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Macro.html new file mode 100644 index 0000000..51e97bd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Macro.html @@ -0,0 +1,187 @@ + + +Macro - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Long, +Up: Pseudo Ops +



+
+ +

7.76 .macro

+ +

The commands .macro and .endm allow you to define macros that +generate assembly output. For example, this definition specifies a macro +sum that puts a sequence of numbers into memory: + +

             .macro  sum from=0, to=5
+             .long   \from
+             .if     \to-\from
+             sum     "(\from+1)",\to
+             .endif
+             .endm
+
+

With that definition, SUM 0,5 is equivalent to this assembly input: + +

             .long   0
+             .long   1
+             .long   2
+             .long   3
+             .long   4
+             .long   5
+
+
+
.macro macname
.macro macname macargs ...
Begin the definition of a macro called macname. If your macro +definition requires arguments, specify their names after the macro name, +separated by commas or spaces. You can qualify the macro argument to +indicate whether all invocations must specify a non-blank value (through +:req), or whether it takes all of the remaining arguments +(through :vararg). You can supply a default value for any +macro argument by following the name with =deflt. You +cannot define two macros with the same macname unless it has been +subject to the .purgem directive (see Purgem) between the two +definitions. For example, these are all valid .macro statements: + +
+
.macro comm
Begin the definition of a macro called comm, which takes no +arguments. + +
.macro plus1 p, p1
.macro plus1 p p1
Either statement begins the definition of a macro called plus1, +which takes two arguments; within the macro definition, write +\p or \p1 to evaluate the arguments. + +
.macro reserve_str p1=0 p2
Begin the definition of a macro called reserve_str, with two +arguments. The first argument has a default value, but not the second. +After the definition is complete, you can call the macro either as +reserve_str a,b (with \p1 evaluating to +a and \p2 evaluating to b), or as reserve_str +,b (with \p1 evaluating as the default, in this case +0, and \p2 evaluating to b). + +
.macro m p1:req, p2=0, p3:vararg
Begin the definition of a macro called m, with at least three +arguments. The first argument must always have a value specified, but +not the second, which instead has a default value. The third formal +will get assigned all remaining arguments specified at invocation time. + +

When you call a macro, you can specify the argument values either by +position, or by keyword. For example, sum 9,17 is equivalent to +sum to=17, from=9. + +

+ +

Note that since each of the macargs can be an identifier exactly +as any other one permitted by the target architecture, there may be +occasional problems if the target hand-crafts special meanings to certain +characters when they occur in a special position. For example, if the colon +(:) is generally permitted to be part of a symbol name, but the +architecture specific code special-cases it when occurring as the final +character of a symbol (to denote a label), then the macro parameter +replacement code will have no way of knowing that and consider the whole +construct (including the colon) an identifier, and check only this +identifier for being the subject to parameter substitution. So for example +this macro definition: + +

          	.macro label l
+          \l:
+          	.endm
+     
+

might not work as expected. Invoking label foo might not create a label +called foo but instead just insert the text \l: into the +assembler source, probably generating an error about an unrecognised +identifier. + +

Similarly problems might occur with the period character (.) +which is often allowed inside opcode names (and hence identifier names). So +for example constructing a macro to build an opcode from a base name and a +length specifier like this: + +

          	.macro opcode base length
+                  \base.\length
+          	.endm
+     
+

and invoking it as opcode store l will not create a store.l +instruction but instead generate some kind of error as the assembler tries to +interpret the text \base.\length. + +

There are several possible ways around this problem: + +

+
Insert white space
If it is possible to use white space characters then this is the simplest +solution. eg: + +
               	.macro label l
+               \l :
+               	.endm
+          
+
Use \()
The string \() can be used to separate the end of a macro argument from +the following text. eg: + +
               	.macro opcode base length
+                       \base\().\length
+               	.endm
+          
+
Use the alternate macro syntax mode
In the alternative macro syntax mode the ampersand character (&) can be +used as a separator. eg: + +
               	.altmacro
+               	.macro label l
+               l&:
+               	.endm
+          
+
+ +

Note: this problem of correctly identifying string parameters to pseudo ops +also applies to the identifiers used in .irp (see Irp) +and .irpc (see Irpc) as well. + +

.endm
Mark the end of a macro definition. + +
.exitm
Exit early from the current macro definition. + +


\@
as maintains a counter of how many macros it has +executed in this pseudo-variable; you can copy that number to your +output with \@, but only within a macro definition. + +
LOCAL name [ , ... ]
Warning: LOCAL is only available if you select “alternate +macro syntax” with --alternate or .altmacro. +See .altmacro. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Manual.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Manual.html new file mode 100644 index 0000000..6f3ab8f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Manual.html @@ -0,0 +1,74 @@ + + +Manual - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Overview +



+
+ +

1.1 Structure of this Manual

+ +

This manual is intended to describe what you need to know to use +gnu as. We cover the syntax expected in source files, including +notation for symbols, constants, and expressions; the directives that +as understands; and of course how to invoke as. + +

This manual also describes some of the machine-dependent features of +various flavors of the assembler. + +

On the other hand, this manual is not intended as an introduction +to programming in assembly language—let alone programming in general! +In a similar vein, we make no attempt to introduce the machine +architecture; we do not describe the instruction set, standard +mnemonics, registers or addressing modes that are standard to a +particular architecture. +You may want to consult the manufacturer's +machine architecture manual for this information. + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Noaltmacro.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Noaltmacro.html new file mode 100644 index 0000000..87a2188 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Noaltmacro.html @@ -0,0 +1,52 @@ + + +Noaltmacro - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MRI, +Up: Pseudo Ops +



+
+ +

7.78 .noaltmacro

+ +

Disable alternate macro mode. See Altmacro. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Nolist.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Nolist.html new file mode 100644 index 0000000..3883f43 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Nolist.html @@ -0,0 +1,56 @@ + + +Nolist - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Noaltmacro, +Up: Pseudo Ops +



+
+ +

7.79 .nolist

+ +

Control (in conjunction with the .list directive) whether or +not assembly listings are generated. These two directives maintain an +internal counter (which is zero initially). .list increments the +counter, and .nolist decrements it. Assembly listings are +generated whenever the counter is greater than zero. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Notes_002di860.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Notes_002di860.html new file mode 100644 index 0000000..18c4a75 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Notes_002di860.html @@ -0,0 +1,63 @@ + + +Notes-i860 - Using as + + + + + + + + + + + + +

+

+Next: , +Up: i860-Dependent +



+
+ +

9.14.1 i860 Notes

+ +

This is a fairly complete i860 assembler which is compatible with the +UNIX System V/860 Release 4 assembler. However, it does not currently +support SVR4 PIC (i.e., @GOT, @GOTOFF, @PLT). + +

Like the SVR4/860 assembler, the output object format is ELF32. Currently, +this is the only supported object format. If there is sufficient interest, +other formats such as COFF may be implemented. + +

Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter +being the default. One difference is that AT&T syntax requires the '%' +prefix on register names while Intel syntax does not. Another difference +is in the specification of relocatable expressions. The Intel syntax +is ha%expression whereas the SVR4 syntax is [expression]@ha +(and similarly for the "l" and "h" selectors). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Numbers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Numbers.html new file mode 100644 index 0000000..06b9cca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Numbers.html @@ -0,0 +1,60 @@ + + +Numbers - Using as + + + + + + + + + + + + +

+

+Previous: Characters, +Up: Constants +



+
+ +

3.6.2 Number Constants

+ +

as distinguishes three kinds of numbers according to how they +are stored in the target machine. Integers are numbers that +would fit into an int in the C language. Bignums are +integers, but they are stored in more than 32 bits. Flonums +are floating point numbers, described below. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object-Attributes.html new file mode 100644 index 0000000..86d8118 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object-Attributes.html @@ -0,0 +1,80 @@ + + +Object Attributes - Using as + + + + + + + + + + + + +
+

+Next: , +Previous: Pseudo Ops, +Up: Top +



+
+ +

8 Object Attributes

+ +

+as assembles source files written for a specific architecture +into object files for that architecture. But not all object files are alike. +Many architectures support incompatible variations. For instance, floating +point arguments might be passed in floating point registers if the object file +requires hardware floating point support—or floating point arguments might be +passed in integer registers if the object file supports processors with no +hardware floating point unit. Or, if two objects are built for different +generations of the same architecture, the combination may require the +newer generation at run-time. + +

This information is useful during and after linking. At link time, +ld can warn about incompatible object files. After link +time, tools like gdb can use it to process the linked file +correctly. + +

Compatibility information is recorded as a series of object attributes. Each +attribute has a vendor, tag, and value. The vendor is a +string, and indicates who sets the meaning of the tag. The tag is an integer, +and indicates what property the attribute describes. The value may be a string +or an integer, and indicates how the property affects this object. Missing +attributes are the same as attributes with a zero value or empty string value. + +

Object attributes were developed as part of the ABI for the ARM Architecture. +The file format is documented in ELF for the ARM Architecture. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object-Formats.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object-Formats.html new file mode 100644 index 0000000..e076801 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object-Formats.html @@ -0,0 +1,55 @@ + + +Object Formats - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: GNU Assembler, +Up: Overview +



+
+ +

1.3 Object File Formats

+ +

The gnu assembler can be configured to produce several alternative +object file formats. For the most part, this does not affect how you +write assembly language programs; but directives for debugging symbols +are typically different in different file formats. See Symbol Attributes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object.html new file mode 100644 index 0000000..4d703e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Object.html @@ -0,0 +1,67 @@ + + +Object - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Input Files, +Up: Overview +



+
+ +

1.6 Output (Object) File

+ +

Every time you run as it produces an output file, which is +your assembly language program translated into numbers. This file +is the object file. Its default name is +a.out. +You can give it another name by using the -o option. Conventionally, +object file names end with .o. The default name is used for historical +reasons: older assemblers were capable of assembling self-contained programs +directly into a runnable program. (For some formats, this isn't currently +possible, but it can be done for the a.out format.) + +

The object file is meant for input to the linker ld. It contains +assembled program code, information to help ld integrate +the assembled program into a runnable file, and (optionally) symbolic +information for the debugger. + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Octa.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Octa.html new file mode 100644 index 0000000..261e951 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Octa.html @@ -0,0 +1,57 @@ + + +Octa - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Nolist, +Up: Pseudo Ops +



+
+ +

7.80 .octa bignums

+ + +

This directive expects zero or more bignums, separated by commas. For each +bignum, it emits a 16-byte integer. + +

The term “octa” comes from contexts in which a “word” is two bytes; +hence octa-word for 16 bytes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Opcodes-for-i860.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Opcodes-for-i860.html new file mode 100644 index 0000000..522f736 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Opcodes-for-i860.html @@ -0,0 +1,100 @@ + + +Opcodes for i860 - Using as + + + + + + + + + + + + +

+

+Previous: Directives-i860, +Up: i860-Dependent +



+
+ +

9.14.4 i860 Opcodes

+ +

All of the Intel i860XR and i860XP machine instructions are supported. Please see +either i860 Microprocessor Programmer's Reference Manual or i860 Microprocessor Architecture for more information. + +

9.14.4.1 Other instruction support (pseudo-instructions)
+ +

For compatibility with some other i860 assemblers, a number of +pseudo-instructions are supported. While these are supported, they are +a very undesirable feature that should be avoided – in particular, when +they result in an expansion to multiple actual i860 instructions. Below +are the pseudo-instructions that result in expansions. +

    +
  • Load large immediate into general register: + +

    The pseudo-instruction mov imm,%rn (where the immediate does +not fit within a signed 16-bit field) will be expanded into: +

              orh large_imm@h,%r0,%rn
    +          or large_imm@l,%rn,%rn
    +     
    +
  • Load/store with relocatable address expression: + +

    For example, the pseudo-instruction ld.b addr_exp(%rx),%rn +will be expanded into: +

              orh addr_exp@ha,%rx,%r31
    +          ld.l addr_exp@l(%r31),%rn
    +     
    +

    The analogous expansions apply to ld.x, st.x, fld.x, pfld.x, fst.x, and pst.x as well. +

  • Signed large immediate with add/subtract: + +

    If any of the arithmetic operations adds, addu, subs, subu are used +with an immediate larger than 16-bits (signed), then they will be expanded. +For instance, the pseudo-instruction adds large_imm,%rx,%rn expands to: +

              orh large_imm@h,%r0,%r31
    +          or large_imm@l,%r31,%r31
    +          adds %r31,%rx,%rn
    +     
    +
  • Unsigned large immediate with logical operations: + +

    Logical operations (or, andnot, or, xor) also result in expansions. +The pseudo-instruction or large_imm,%rx,%rn results in: +

              orh large_imm@h,%rx,%r31
    +          or large_imm@l,%r31,%rn
    +     
    +

    Similarly for the others, except for and which expands to: +

              andnot (-1 - large_imm)@h,%rx,%r31
    +          andnot (-1 - large_imm)@l,%r31,%rn
    +     
    +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Opcodes-for-i960.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Opcodes-for-i960.html new file mode 100644 index 0000000..bdba3bf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Opcodes-for-i960.html @@ -0,0 +1,62 @@ + + +Opcodes for i960 - Using as + + + + + + + + + + + + +
+

+Previous: Directives-i960, +Up: i960-Dependent +



+
+ +

9.15.4 i960 Opcodes

+ +

All Intel 960 machine instructions are supported; +see i960 Command-line Options for a discussion of +selecting the instruction subset for a particular 960 +architecture. + +

Some opcodes are processed beyond simply emitting a single corresponding +instruction: callj, and Compare-and-Branch or Compare-and-Jump +instructions with target displacements larger than 13 bits. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Operators.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Operators.html new file mode 100644 index 0000000..790876e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Operators.html @@ -0,0 +1,55 @@ + + +Operators - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Arguments, +Up: Integer Exprs +



+
+ +

6.2.2 Operators

+ +

Operators are arithmetic functions, like + or %. Prefix +operators are followed by an argument. Infix operators appear +between their arguments. Operators may be preceded and/or followed by +whitespace. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Options_002di860.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Options_002di860.html new file mode 100644 index 0000000..98d364f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Options_002di860.html @@ -0,0 +1,78 @@ + + +Options-i860 - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Notes-i860, +Up: i860-Dependent +



+
+ +

9.14.2 i860 Command-line Options

+ +
9.14.2.1 SVR4 compatibility options
+ +
+
-V
Print assembler version. +
-Qy
Ignored. +
-Qn
Ignored. +
+ +
9.14.2.2 Other options
+ +
+
-EL
Select little endian output (this is the default). +
-EB
Select big endian output. Note that the i860 always reads instructions +as little endian data, so this option only effects data and not +instructions. +
-mwarn-expand
Emit a warning message if any pseudo-instruction expansions occurred. +For example, a or instruction with an immediate larger than 16-bits +will be expanded into two instructions. This is a very undesirable feature to +rely on, so this flag can help detect any code where it happens. One +use of it, for instance, has been to find and eliminate any place +where gcc may emit these pseudo-instructions. +
-mxp
Enable support for the i860XP instructions and control registers. By default, +this option is disabled so that only the base instruction set (i.e., i860XR) +is supported. +
-mintel-syntax
The i860 assembler defaults to AT&T/SVR4 syntax. This option enables the +Intel syntax. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Options_002di960.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Options_002di960.html new file mode 100644 index 0000000..67b0e32 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Options_002di960.html @@ -0,0 +1,115 @@ + + +Options-i960 - Using as + + + + + + + + + + + + +
+

+Next: , +Up: i960-Dependent +



+
+ +

9.15.1 i960 Command-line Options

+ +

+ + + + +

-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC
Select the 80960 architecture. Instructions or features not supported +by the selected architecture cause fatal errors. + +

-ACA is equivalent to -ACA_A; -AKC is equivalent to +-AMC. Synonyms are provided for compatibility with other tools. + +

If you do not specify any of these options, as generates code +for any instruction or feature that is supported by some version of the +960 (even if this means mixing architectures!). In principle, +as attempts to deduce the minimal sufficient processor type if +none is specified; depending on the object code format, the processor type may +be recorded in the object file. If it is critical that the as +output match a specific architecture, specify that architecture explicitly. + +


-b
Add code to collect information about conditional branches taken, for +later optimization using branch prediction bits. (The conditional branch +instructions have branch prediction bits in the CA, CB, and CC +architectures.) If BR represents a conditional branch instruction, +the following represents the code generated by the assembler when +-b is specified: + +
                  call    increment routine
+                  .word   0       # pre-counter
+          Label:  BR
+                  call    increment routine
+                  .word   0       # post-counter
+     
+

The counter following a branch records the number of times that branch +was not taken; the difference between the two counters is the +number of times the branch was taken. + +

A table of every such Label is also generated, so that the +external postprocessor gbr960 (supplied by Intel) can locate all +the counters. This table is always labeled __BRANCH_TABLE__; +this is a local symbol to permit collecting statistics for many separate +object files. The table is word aligned, and begins with a two-word +header. The first word, initialized to 0, is used in maintaining linked +lists of branch tables. The second word is a count of the number of +entries in the table, which follow immediately: each is a word, pointing +to one of the labels illustrated above. + + + +

The first word of the header is used to locate multiple branch tables, +since each object file may contain one. Normally the links are +maintained with a call to an initialization routine, placed at the +beginning of each function in the file. The gnu C compiler +generates these calls automatically when you give it a -b option. +For further details, see the documentation of gbr960. + +


-no-relax
Normally, Compare-and-Branch instructions with targets that require +displacements greater than 13 bits (or that have external targets) are +replaced with the corresponding compare (or chkbit) and branch +instructions. You can use the -no-relax option to specify that +as should generate errors instead, if the target displacement +is larger than 13 bits. + +

This option does not affect the Compare-and-Jump instructions; the code +emitted for them is always adjusted when necessary (depending on +displacement size), regardless of whether you use -no-relax. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Org.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Org.html new file mode 100644 index 0000000..fe2070b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Org.html @@ -0,0 +1,79 @@ + + +Org - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Octa, +Up: Pseudo Ops +



+
+ +

7.81 .org new-lc , fill

+ +

Advance the location counter of the current section to +new-lc. new-lc is either an absolute expression or an +expression with the same section as the current subsection. That is, +you can't use .org to cross sections: if new-lc has the +wrong section, the .org directive is ignored. To be compatible +with former assemblers, if the section of new-lc is absolute, +as issues a warning, then pretends the section of new-lc +is the same as the current subsection. + +

.org may only increase the location counter, or leave it +unchanged; you cannot use .org to move the location counter +backwards. + + + + +

Because as tries to assemble programs in one pass, new-lc +may not be undefined. If you really detest this restriction we eagerly await +a chance to share your improved assembler. + +

Beware that the origin is relative to the start of the section, not +to the start of the subsection. This is compatible with other +people's assemblers. + +

When the location counter (of the current subsection) is advanced, the +intervening bytes are filled with fill which should be an +absolute expression. If the comma and fill are omitted, +fill defaults to zero. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Overview.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Overview.html new file mode 100644 index 0000000..1eed211 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Overview.html @@ -0,0 +1,780 @@ + + +Overview - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 Overview

+ +

Here is a brief summary of how to invoke as. For details, +see Command-Line Options. + + + + +

     
+     as [-a[cdghlns][=file]] [--alternate] [-D]
+      [--debug-prefix-map old=new]
+      [--defsym sym=val] [-f] [-g] [--gstabs]
+      [--gstabs+] [--gdwarf-2] [--help] [-I dir] [-J]
+      [-K] [-L] [--listing-lhs-width=NUM]
+      [--listing-lhs-width2=NUM] [--listing-rhs-width=NUM]
+      [--listing-cont-lines=NUM] [--keep-locals] [-o
+      objfile] [-R] [--reduce-memory-overheads] [--statistics]
+      [-v] [-version] [--version] [-W] [--warn]
+      [--fatal-warnings] [-w] [-x] [-Z] [@FILE]
+      [--target-help] [target-options]
+      [--|files ...]
+     
+     
+     
+     Target Alpha options:
+        [-mcpu]
+        [-mdebug | -no-mdebug]
+        [-relax] [-g] [-Gsize]
+        [-F] [-32addr]
+     
+     Target ARC options:
+        [-marc[5|6|7|8]]
+        [-EB|-EL]
+     
+     Target ARM options:
+     
+        [-mcpu=processor[+extension...]]
+        [-march=architecture[+extension...]]
+        [-mfpu=floating-point-format]
+        [-mfloat-abi=abi]
+        [-meabi=ver]
+        [-mthumb]
+        [-EB|-EL]
+        [-mapcs-32|-mapcs-26|-mapcs-float|
+         -mapcs-reentrant]
+        [-mthumb-interwork] [-k]
+     
+     Target CRIS options:
+        [--underscore | --no-underscore]
+        [--pic] [-N]
+        [--emulation=criself | --emulation=crisaout]
+        [--march=v0_v10 | --march=v10 | --march=v32 | --march=common_v10_v32]
+     
+     
+     
+     Target D10V options:
+        [-O]
+     
+     Target D30V options:
+        [-O|-n|-N]
+     
+     Target H8/300 options:
+        [-h-tick-hex]
+     
+     
+     Target i386 options:
+        [--32|--64] [-n]
+        [-march=CPU[+EXTENSION...]] [-mtune=CPU]
+     
+     Target i960 options:
+     
+        [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
+         -AKC|-AMC]
+        [-b] [-no-relax]
+     
+     Target IA-64 options:
+        [-mconstant-gp|-mauto-pic]
+        [-milp32|-milp64|-mlp64|-mp64]
+        [-mle|mbe]
+        [-mtune=itanium1|-mtune=itanium2]
+        [-munwind-check=warning|-munwind-check=error]
+        [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
+        [-x|-xexplicit] [-xauto] [-xdebug]
+     
+     Target IP2K options:
+        [-mip2022|-mip2022ext]
+     
+     Target M32C options:
+        [-m32c|-m16c] [-relax] [-h-tick-hex]
+     
+     Target M32R options:
+        [--m32rx|--[no-]warn-explicit-parallel-conflicts|
+        --W[n]p]
+     
+     Target M680X0 options:
+        [-l] [-m68000|-m68010|-m68020|...]
+     
+     Target M68HC11 options:
+        [-m68hc11|-m68hc12|-m68hcs12]
+        [-mshort|-mlong]
+        [-mshort-double|-mlong-double]
+        [--force-long-branches] [--short-branches]
+        [--strict-direct-mode] [--print-insn-syntax]
+        [--print-opcodes] [--generate-example]
+     
+     Target MCORE options:
+        [-jsri2bsr] [-sifilter] [-relax]
+        [-mcpu=[210|340]]
+     
+     Target MIPS options:
+        [-nocpp] [-EL] [-EB] [-O[optimization level]]
+        [-g[debug level]] [-G num] [-KPIC] [-call_shared]
+        [-non_shared] [-xgot [-mvxworks-pic]
+        [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
+        [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
+        [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
+        [-mips64] [-mips64r2]
+        [-construct-floats] [-no-construct-floats]
+        [-trap] [-no-break] [-break] [-no-trap]
+        [-mfix7000] [-mno-fix7000]
+        [-mips16] [-no-mips16]
+        [-msmartmips] [-mno-smartmips]
+        [-mips3d] [-no-mips3d]
+        [-mdmx] [-no-mdmx]
+        [-mdsp] [-mno-dsp]
+        [-mdspr2] [-mno-dspr2]
+        [-mmt] [-mno-mt]
+        [-mdebug] [-no-mdebug]
+        [-mpdr] [-mno-pdr]
+     
+     Target MMIX options:
+        [--fixed-special-register-names] [--globalize-symbols]
+        [--gnu-syntax] [--relax] [--no-predefined-symbols]
+        [--no-expand] [--no-merge-gregs] [-x]
+        [--linker-allocated-gregs]
+     
+     Target PDP11 options:
+        [-mpic|-mno-pic] [-mall] [-mno-extensions]
+        [-mextension|-mno-extension]
+        [-mcpu] [-mmachine]
+     
+     Target picoJava options:
+        [-mb|-me]
+     
+     Target PowerPC options:
+        [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
+         -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke|
+         -mbooke32|-mbooke64]
+        [-mcom|-many|-maltivec|-mvsx] [-memb]
+        [-mregnames|-mno-regnames]
+        [-mrelocatable|-mrelocatable-lib]
+        [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
+        [-msolaris|-mno-solaris]
+     
+     Target SPARC options:
+     
+        [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
+         -Av8plus|-Av8plusa|-Av9|-Av9a]
+        [-xarch=v8plus|-xarch=v8plusa] [-bump]
+        [-32|-64]
+     
+     Target TIC54X options:
+      [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
+      [-merrors-to-file <filename>|-me <filename>]
+     
+     
+     Target Z80 options:
+       [-z80] [-r800]
+       [ -ignore-undocumented-instructions] [-Wnud]
+       [ -ignore-unportable-instructions] [-Wnup]
+       [ -warn-undocumented-instructions] [-Wud]
+       [ -warn-unportable-instructions] [-Wup]
+       [ -forbid-undocumented-instructions] [-Fud]
+       [ -forbid-unportable-instructions] [-Fup]
+     
+     
+     
+     Target Xtensa options:
+      [--[no-]text-section-literals] [--[no-]absolute-literals]
+      [--[no-]target-align] [--[no-]longcalls]
+      [--[no-]transform]
+      [--rename-section oldname=newname]
+     
+
+ +
+ + + +
@file
Read command-line options from file. The options read are +inserted in place of the original @file option. If file +does not exist, or cannot be read, then the option will be treated +literally, and not removed. + +

Options in file are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The file may itself contain additional +@file options; any such options will be processed recursively. + +

-a[cdghlmns]
Turn on listings, in any of a variety of ways: + +
+
-ac
omit false conditionals + +
-ad
omit debugging directives + +
-ag
include general information, like as version and options passed + +
-ah
include high-level source + +
-al
include assembly + +
-am
include macro expansions + +
-an
omit forms processing + +
-as
include symbols + +
=file
set the name of the listing file +
+ +

You may combine these options; for example, use -aln for assembly +listing without forms processing. The =file option, if used, must be +the last one. By itself, -a defaults to -ahls. + +

--alternate
Begin in alternate macro mode. +See .altmacro. + +
-D
Ignored. This option is accepted for script compatibility with calls to +other assemblers. + +
--debug-prefix-map old=new
When assembling files in directory old, record debugging +information describing them as in new instead. + +
--defsym sym=value
Define the symbol sym to be value before assembling the input file. +value must be an integer constant. As in C, a leading 0x +indicates a hexadecimal value, and a leading 0 indicates an octal +value. The value of the symbol can be overridden inside a source file via the +use of a .set pseudo-op. + +
-f
“fast”—skip whitespace and comment preprocessing (assume source is +compiler output). + +
-g
--gen-debug
Generate debugging information for each assembler source line using whichever +debug format is preferred by the target. This currently means either STABS, +ECOFF or DWARF2. + +
--gstabs
Generate stabs debugging information for each assembler line. This +may help debugging assembler code, if the debugger can handle it. + +
--gstabs+
Generate stabs debugging information for each assembler line, with GNU +extensions that probably only gdb can handle, and that could make other +debuggers crash or refuse to read your program. This +may help debugging assembler code. Currently the only GNU extension is +the location of the current working directory at assembling time. + +
--gdwarf-2
Generate DWARF2 debugging information for each assembler line. This +may help debugging assembler code, if the debugger can handle it. Note—this +option is only supported by some targets, not all of them. + +
--help
Print a summary of the command line options and exit. + +
--target-help
Print a summary of all target specific options and exit. + +
-I dir
Add directory dir to the search list for .include directives. + +
-J
Don't warn about signed overflow. + +
-K
Issue warnings when difference tables altered for long displacements. + +
-L
--keep-locals
Keep (in the symbol table) local symbols. These symbols start with +system-specific local label prefixes, typically .L for ELF systems +or L for traditional a.out systems. +See Symbol Names. + +
--listing-lhs-width=number
Set the maximum width, in words, of the output data column for an assembler +listing to number. + +
--listing-lhs-width2=number
Set the maximum width, in words, of the output data column for continuation +lines in an assembler listing to number. + +
--listing-rhs-width=number
Set the maximum width of an input source line, as displayed in a listing, to +number bytes. + +
--listing-cont-lines=number
Set the maximum number of lines printed in a listing for a single line of input +to number + 1. + +
-o objfile
Name the object-file output from as objfile. + +
-R
Fold the data section into the text section. + +

Set the default size of GAS's hash tables to a prime number close to +number. Increasing this value can reduce the length of time it takes the +assembler to perform its tasks, at the expense of increasing the assembler's +memory requirements. Similarly reducing this value can reduce the memory +requirements at the expense of speed. + +

--reduce-memory-overheads
This option reduces GAS's memory requirements, at the expense of making the +assembly processes slower. Currently this switch is a synonym for +--hash-size=4051, but in the future it may have other effects as well. + +
--statistics
Print the maximum space (in bytes) and total time (in seconds) used by +assembly. + +
--strip-local-absolute
Remove local absolute symbols from the outgoing symbol table. + +
-v
-version
Print the as version. + +
--version
Print the as version and exit. + +
-W
--no-warn
Suppress warning messages. + +
--fatal-warnings
Treat warnings as errors. + +
--warn
Don't suppress warning messages or treat them as errors. + +
-w
Ignored. + +
-x
Ignored. + +
-Z
Generate an object file even after errors. + +
-- | files ...
Standard input, or source files to assemble. + +
+ +

The following options are available when as is configured for +an ARC processor. + +

+
-marc[5|6|7|8]
This option selects the core processor variant. +
-EB | -EL
Select either big-endian (-EB) or little-endian (-EL) output. +
+ +

The following options are available when as is configured for the ARM +processor family. + +

+
-mcpu=processor[+extension...]
Specify which ARM processor variant is the target. +
-march=architecture[+extension...]
Specify which ARM architecture variant is used by the target. +
-mfpu=floating-point-format
Select which Floating Point architecture is the target. +
-mfloat-abi=abi
Select which floating point ABI is in use. +
-mthumb
Enable Thumb only instruction decoding. +
-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant
Select which procedure calling convention is in use. +
-EB | -EL
Select either big-endian (-EB) or little-endian (-EL) output. +
-mthumb-interwork
Specify that the code has been generated with interworking between Thumb and +ARM code in mind. +
-k
Specify that PIC code has been generated. +
+ +

See the info pages for documentation of the CRIS-specific options. + +

The following options are available when as is configured for +a D10V processor. + + + +

-O
Optimize output by parallelizing instructions. +
+ +

The following options are available when as is configured for a D30V +processor. + + + +

-O
Optimize output by parallelizing instructions. + +


-n
Warn when nops are generated. + +


-N
Warn when a nop after a 32-bit multiply instruction is generated. +
+ +

The following options are available when as is configured for the +Intel 80960 processor. + +

+
-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC
Specify which variant of the 960 architecture is the target. + +
-b
Add code to collect statistics about branches taken. + +
-no-relax
Do not alter compare-and-branch instructions for long displacements; +error if necessary. + +
+ +

The following options are available when as is configured for the +Ubicom IP2K series. + +

+
-mip2022ext
Specifies that the extended IP2022 instructions are allowed. + +
-mip2022
Restores the default behaviour, which restricts the permitted instructions to +just the basic IP2022 ones. + +
+ +

The following options are available when as is configured for the +Renesas M32C and M16C processors. + +

+
-m32c
Assemble M32C instructions. + +
-m16c
Assemble M16C instructions (the default). + +
-relax
Enable support for link-time relaxations. + +
-h-tick-hex
Support H'00 style hex constants in addition to 0x00 style. + +
+ +

The following options are available when as is configured for the +Renesas M32R (formerly Mitsubishi M32R) series. + +

+
--m32rx
Specify which processor in the M32R family is the target. The default +is normally the M32R, but this option changes it to the M32RX. + +
--warn-explicit-parallel-conflicts or --Wp
Produce warning messages when questionable parallel constructs are +encountered. + +
--no-warn-explicit-parallel-conflicts or --Wnp
Do not produce warning messages when questionable parallel constructs are +encountered. + +
+ +

The following options are available when as is configured for the +Motorola 68000 series. + +

+
-l
Shorten references to undefined symbols, to one word instead of two. + +
-m68000 | -m68008 | -m68010 | -m68020 | -m68030
| -m68040 | -m68060 | -m68302 | -m68331 | -m68332
| -m68333 | -m68340 | -mcpu32 | -m5200
Specify what processor in the 68000 family is the target. The default +is normally the 68020, but this can be changed at configuration time. + +
-m68881 | -m68882 | -mno-68881 | -mno-68882
The target machine does (or does not) have a floating-point coprocessor. +The default is to assume a coprocessor for 68020, 68030, and cpu32. Although +the basic 68000 is not compatible with the 68881, a combination of the +two can be specified, since it's possible to do emulation of the +coprocessor instructions with the main processor. + +
-m68851 | -mno-68851
The target machine does (or does not) have a memory-management +unit coprocessor. The default is to assume an MMU for 68020 and up. + +
+ +

For details about the PDP-11 machine dependent features options, +see PDP-11-Options. + +

+
-mpic | -mno-pic
Generate position-independent (or position-dependent) code. The +default is -mpic. + +
-mall
-mall-extensions
Enable all instruction set extensions. This is the default. + +
-mno-extensions
Disable all instruction set extensions. + +
-mextension | -mno-extension
Enable (or disable) a particular instruction set extension. + +
-mcpu
Enable the instruction set extensions supported by a particular CPU, and +disable all other extensions. + +
-mmachine
Enable the instruction set extensions supported by a particular machine +model, and disable all other extensions. +
+ +

The following options are available when as is configured for +a picoJava processor. + + + + + +

-mb
Generate “big endian” format output. + +


-ml
Generate “little endian” format output. + +
+ +

The following options are available when as is configured for the +Motorola 68HC11 or 68HC12 series. + +

+
-m68hc11 | -m68hc12 | -m68hcs12
Specify what processor is the target. The default is +defined by the configuration option when building the assembler. + +
-mshort
Specify to use the 16-bit integer ABI. + +
-mlong
Specify to use the 32-bit integer ABI. + +
-mshort-double
Specify to use the 32-bit double ABI. + +
-mlong-double
Specify to use the 64-bit double ABI. + +
--force-long-branches
Relative branches are turned into absolute ones. This concerns +conditional branches, unconditional branches and branches to a +sub routine. + +
-S | --short-branches
Do not turn relative branches into absolute ones +when the offset is out of range. + +
--strict-direct-mode
Do not turn the direct addressing mode into extended addressing mode +when the instruction does not support direct addressing mode. + +
--print-insn-syntax
Print the syntax of instruction in case of error. + +
--print-opcodes
print the list of instructions with syntax and then exit. + +
--generate-example
print an example of instruction for each possible instruction and then exit. +This option is only useful for testing as. + +
+ +

The following options are available when as is configured +for the SPARC architecture: + +

+
-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite
-Av8plus | -Av8plusa | -Av9 | -Av9a
Explicitly select a variant of the SPARC architecture. + +

-Av8plus and -Av8plusa select a 32 bit environment. +-Av9 and -Av9a select a 64 bit environment. + +

-Av8plusa and -Av9a enable the SPARC V9 instruction set with +UltraSPARC extensions. + +

-xarch=v8plus | -xarch=v8plusa
For compatibility with the Solaris v9 assembler. These options are +equivalent to -Av8plus and -Av8plusa, respectively. + +
-bump
Warn when the assembler switches to another architecture. +
+ +

The following options are available when as is configured for the 'c54x +architecture. + +

+
-mfar-mode
Enable extended addressing mode. All addresses and relocations will assume +extended addressing (usually 23 bits). +
-mcpu=CPU_VERSION
Sets the CPU version being compiled for. +
-merrors-to-file FILENAME
Redirect error output to a file, for broken systems which don't support such +behaviour in the shell. +
+ +

The following options are available when as is configured for +a mips processor. + +

+
-G num
This option sets the largest size of an object that can be referenced +implicitly with the gp register. It is only accepted for targets that +use ECOFF format, such as a DECstation running Ultrix. The default value is 8. + +


-EB
Generate “big endian” format output. + +


-EL
Generate “little endian” format output. + +


-mips1
-mips2
-mips3
-mips4
-mips5
-mips32
-mips32r2
-mips64
-mips64r2
Generate code for a particular mips Instruction Set Architecture level. +-mips1 is an alias for -march=r3000, -mips2 is an +alias for -march=r6000, -mips3 is an alias for +-march=r4000 and -mips4 is an alias for -march=r8000. +-mips5, -mips32, -mips32r2, -mips64, and +-mips64r2 +correspond to generic +MIPS V, MIPS32, MIPS32 Release 2, MIPS64, +and MIPS64 Release 2 +ISA processors, respectively. + +
-march=CPU
Generate code for a particular mips cpu. + +
-mtune=cpu
Schedule and tune for a particular mips cpu. + +
-mfix7000
-mno-fix7000
Cause nops to be inserted if the read of the destination register +of an mfhi or mflo instruction occurs in the following two instructions. + +
-mdebug
-no-mdebug
Cause stabs-style debugging output to go into an ECOFF-style .mdebug +section instead of the standard ELF .stabs sections. + +
-mpdr
-mno-pdr
Control generation of .pdr sections. + +
-mgp32
-mfp32
The register sizes are normally inferred from the ISA and ABI, but these +flags force a certain group of registers to be treated as 32 bits wide at +all times. -mgp32 controls the size of general-purpose registers +and -mfp32 controls the size of floating-point registers. + +
-mips16
-no-mips16
Generate code for the MIPS 16 processor. This is equivalent to putting +.set mips16 at the start of the assembly file. -no-mips16 +turns off this option. + +
-msmartmips
-mno-smartmips
Enables the SmartMIPS extension to the MIPS32 instruction set. This is +equivalent to putting .set smartmips at the start of the assembly file. +-mno-smartmips turns off this option. + +
-mips3d
-no-mips3d
Generate code for the MIPS-3D Application Specific Extension. +This tells the assembler to accept MIPS-3D instructions. +-no-mips3d turns off this option. + +
-mdmx
-no-mdmx
Generate code for the MDMX Application Specific Extension. +This tells the assembler to accept MDMX instructions. +-no-mdmx turns off this option. + +
-mdsp
-mno-dsp
Generate code for the DSP Release 1 Application Specific Extension. +This tells the assembler to accept DSP Release 1 instructions. +-mno-dsp turns off this option. + +
-mdspr2
-mno-dspr2
Generate code for the DSP Release 2 Application Specific Extension. +This option implies -mdsp. +This tells the assembler to accept DSP Release 2 instructions. +-mno-dspr2 turns off this option. + +
-mmt
-mno-mt
Generate code for the MT Application Specific Extension. +This tells the assembler to accept MT instructions. +-mno-mt turns off this option. + +
--construct-floats
--no-construct-floats
The --no-construct-floats option disables the construction of +double width floating point constants by loading the two halves of the +value into the two single width floating point registers that make up +the double width register. By default --construct-floats is +selected, allowing construction of these floating point constants. + +


--emulation=name
This option causes as to emulate as configured +for some other target, in all respects, including output format (choosing +between ELF and ECOFF only), handling of pseudo-opcodes which may generate +debugging information or store symbol table information, and default +endianness. The available configuration names are: mipsecoff, +mipself, mipslecoff, mipsbecoff, mipslelf, +mipsbelf. The first two do not alter the default endianness from that +of the primary target for which the assembler was configured; the others change +the default to little- or big-endian as indicated by the b or l +in the name. Using -EB or -EL will override the endianness +selection in any case. + +

This option is currently supported only when the primary target +as is configured for is a mips ELF or ECOFF target. +Furthermore, the primary target or others specified with +--enable-targets=... at configuration time must include support for +the other format, if both are to be available. For example, the Irix 5 +configuration includes support for both. + +

Eventually, this option will support more configurations, with more +fine-grained control over the assembler's behavior, and will be supported for +more processors. + +

-nocpp
as ignores this option. It is accepted for compatibility with +the native tools. + +
--trap
--no-trap
--break
--no-break
Control how to deal with multiplication overflow and division by zero. +--trap or --no-break (which are synonyms) take a trap exception +(and only work for Instruction Set Architecture level 2 and higher); +--break or --no-trap (also synonyms, and the default) take a +break exception. + +
-n
When this option is used, as will issue a warning every +time it generates a nop instruction from a macro. +
+ +

The following options are available when as is configured for +an MCore processor. + +

+
-jsri2bsr
-nojsri2bsr
Enable or disable the JSRI to BSR transformation. By default this is enabled. +The command line option -nojsri2bsr can be used to disable it. + +
-sifilter
-nosifilter
Enable or disable the silicon filter behaviour. By default this is disabled. +The default can be overridden by the -sifilter command line option. + +
-relax
Alter jump instructions for long displacements. + +
-mcpu=[210|340]
Select the cpu type on the target hardware. This controls which instructions +can be assembled. + +
-EB
Assemble for a big endian target. + +
-EL
Assemble for a little endian target. + +
+ +

See the info pages for documentation of the MMIX-specific options. + +

The following options are available when as is configured for +an Xtensa processor. + +

+
--text-section-literals | --no-text-section-literals
With --text-section-literals, literal pools are interspersed +in the text section. The default is +--no-text-section-literals, which places literals in a +separate section in the output file. These options only affect literals +referenced via PC-relative L32R instructions; literals for +absolute mode L32R instructions are handled separately. + +
--absolute-literals | --no-absolute-literals
Indicate to the assembler whether L32R instructions use absolute +or PC-relative addressing. The default is to assume absolute addressing +if the Xtensa processor includes the absolute L32R addressing +option. Otherwise, only the PC-relative L32R mode can be used. + +
--target-align | --no-target-align
Enable or disable automatic alignment to reduce branch penalties at the +expense of some code density. The default is --target-align. + +
--longcalls | --no-longcalls
Enable or disable transformation of call instructions to allow calls +across a greater range of addresses. The default is +--no-longcalls. + +
--transform | --no-transform
Enable or disable all assembler transformations of Xtensa instructions. +The default is --transform; +--no-transform should be used only in the rare cases when the +instructions must be exactly as specified in the assembly source. + +
--rename-section oldname=newname
When generating output sections, rename the oldname section to +newname. +
+ +

The following options are available when as is configured for +a Z80 family processor. +

+
-z80
Assemble for Z80 processor. +
-r800
Assemble for R800 processor. +
-ignore-undocumented-instructions
-Wnud
Assemble undocumented Z80 instructions that also work on R800 without warning. +
-ignore-unportable-instructions
-Wnup
Assemble all undocumented Z80 instructions without warning. +
-warn-undocumented-instructions
-Wud
Issue a warning for undocumented Z80 instructions that also work on R800. +
-warn-unportable-instructions
-Wup
Issue a warning for undocumented Z80 instructions that do not work on R800. +
-forbid-undocumented-instructions
-Fud
Treat all undocumented instructions as errors. +
-forbid-unportable-instructions
-Fup
Treat undocumented Z80 instructions that do not work on R800 as errors. +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/P2align.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/P2align.html new file mode 100644 index 0000000..d6415ef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/P2align.html @@ -0,0 +1,80 @@ + + +P2align - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Org, +Up: Pseudo Ops +



+
+ +

7.82 .p2align[wl] abs-expr, abs-expr, abs-expr

+ +

Pad the location counter (in the current subsection) to a particular +storage boundary. The first expression (which must be absolute) is the +number of low-order zero bits the location counter must have after +advancement. For example .p2align 3 advances the location +counter until it a multiple of 8. If the location counter is already a +multiple of 8, no change is needed. + +

The second expression (also absolute) gives the fill value to be stored in the +padding bytes. It (and the comma) may be omitted. If it is omitted, the +padding bytes are normally zero. However, on some systems, if the section is +marked as containing code and the fill value is omitted, the space is filled +with no-op instructions. + +

The third expression is also absolute, and is also optional. If it is present, +it is the maximum number of bytes that should be skipped by this alignment +directive. If doing the alignment would require skipping more bytes than the +specified maximum, then the alignment is not done at all. You can omit the +fill value (the second argument) entirely by simply using two commas after the +required alignment; this can be useful if you want the alignment to be filled +with no-op instructions when appropriate. + +

The .p2alignw and .p2alignl directives are variants of the +.p2align directive. The .p2alignw directive treats the fill +pattern as a two byte word value. The .p2alignl directives treats the +fill pattern as a four byte longword value. For example, .p2alignw +2,0x368d will align to a multiple of 4. If it skips two bytes, they will be +filled in with the value 0x368d (the exact placement of the bytes depends upon +the endianness of the processor). If it skips 1 or 3 bytes, the fill value is +undefined. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dDependent.html new file mode 100644 index 0000000..a96f0c5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dDependent.html @@ -0,0 +1,60 @@ + + +PDP-11-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: SH64-Dependent, +Up: Machine Dependencies +



+
+ +

9.25 PDP-11 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dMnemonics.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dMnemonics.html new file mode 100644 index 0000000..ec34365 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dMnemonics.html @@ -0,0 +1,65 @@ + + +PDP-11-Mnemonics - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: PDP-11-Syntax, +Up: PDP-11-Dependent +



+
+ +

9.25.4 Instruction Naming

+ +

+Some instructions have alternative names. + +

+
BCC
BHIS + +
BCS
BLO + +
L2DR
L2D + +
L3DR
L3D + +
SYS
TRAP +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dOptions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dOptions.html new file mode 100644 index 0000000..34c4565 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dOptions.html @@ -0,0 +1,200 @@ + + +PDP-11-Options - Using as + + + + + + + + + + + + +
+

+Next: , +Up: PDP-11-Dependent +



+
+ +

9.25.1 Options

+ +

+The PDP-11 version of as has a rich set of machine +dependent options. + +

9.25.1.1 Code Generation Options
+ + + + +
-mpic | -mno-pic
Generate position-independent (or position-dependent) code. + +

The default is to generate position-independent code. +

+ +
9.25.1.2 Instruction Set Extension Options
+ +

These options enables or disables the use of extensions over the base +line instruction set as introduced by the first PDP-11 CPU: the KA11. +Most options come in two variants: a -mextension that +enables extension, and a -mno-extension that disables +extension. + +

The default is to enable all extensions. + + + + +

-mall | -mall-extensions
Enable all instruction set extensions. + +


-mno-extensions
Disable all instruction set extensions. + +


-mcis | -mno-cis
Enable (or disable) the use of the commercial instruction set, which +consists of these instructions: ADDNI, ADDN, ADDPI, +ADDP, ASHNI, ASHN, ASHPI, ASHP, +CMPCI, CMPC, CMPNI, CMPN, CMPPI, +CMPP, CVTLNI, CVTLN, CVTLPI, CVTLP, +CVTNLI, CVTNL, CVTNPI, CVTNP, CVTPLI, +CVTPL, CVTPNI, CVTPN, DIVPI, DIVP, +L2DR, L3DR, LOCCI, LOCC, MATCI, +MATC, MOVCI, MOVC, MOVRCI, MOVRC, +MOVTCI, MOVTC, MULPI, MULP, SCANCI, +SCANC, SKPCI, SKPC, SPANCI, SPANC, +SUBNI, SUBN, SUBPI, and SUBP. + +


-mcsm | -mno-csm
Enable (or disable) the use of the CSM instruction. + +


-meis | -mno-eis
Enable (or disable) the use of the extended instruction set, which +consists of these instructions: ASHC, ASH, DIV, +MARK, MUL, RTT, SOB SXT, and +XOR. + +


-mfis | -mkev11
-mno-fis | -mno-kev11
Enable (or disable) the use of the KEV11 floating-point instructions: +FADD, FDIV, FMUL, and FSUB. + +


-mfpp | -mfpu | -mfp-11
-mno-fpp | -mno-fpu | -mno-fp-11
Enable (or disable) the use of FP-11 floating-point instructions: +ABSF, ADDF, CFCC, CLRF, CMPF, +DIVF, LDCFF, LDCIF, LDEXP, LDF, +LDFPS, MODF, MULF, NEGF, SETD, +SETF, SETI, SETL, STCFF, STCFI, +STEXP, STF, STFPS, STST, SUBF, and +TSTF. + +


-mlimited-eis | -mno-limited-eis
Enable (or disable) the use of the limited extended instruction set: +MARK, RTT, SOB, SXT, and XOR. + +

The -mno-limited-eis options also implies -mno-eis. + +


-mmfpt | -mno-mfpt
Enable (or disable) the use of the MFPT instruction. + +


-mmultiproc | -mno-multiproc
Enable (or disable) the use of multiprocessor instructions: TSTSET and +WRTLCK. + +


-mmxps | -mno-mxps
Enable (or disable) the use of the MFPS and MTPS instructions. + +


-mspl | -mno-spl
Enable (or disable) the use of the SPL instruction. + +

Enable (or disable) the use of the microcode instructions: LDUB, +MED, and XFC. +

+ +
9.25.1.3 CPU Model Options
+ +

These options enable the instruction set extensions supported by a +particular CPU, and disables all other extensions. + + + +

-mka11
KA11 CPU. Base line instruction set only. + +


-mkb11
KB11 CPU. Enable extended instruction set and SPL. + +


-mkd11a
KD11-A CPU. Enable limited extended instruction set. + +


-mkd11b
KD11-B CPU. Base line instruction set only. + +


-mkd11d
KD11-D CPU. Base line instruction set only. + +


-mkd11e
KD11-E CPU. Enable extended instruction set, MFPS, and MTPS. + +


-mkd11f | -mkd11h | -mkd11q
KD11-F, KD11-H, or KD11-Q CPU. Enable limited extended instruction set, +MFPS, and MTPS. + +


-mkd11k
KD11-K CPU. Enable extended instruction set, LDUB, MED, +MFPS, MFPT, MTPS, and XFC. + +


-mkd11z
KD11-Z CPU. Enable extended instruction set, CSM, MFPS, +MFPT, MTPS, and SPL. + +


-mf11
F11 CPU. Enable extended instruction set, MFPS, MFPT, and +MTPS. + +


-mj11
J11 CPU. Enable extended instruction set, CSM, MFPS, +MFPT, MTPS, SPL, TSTSET, and WRTLCK. + +


-mt11
T11 CPU. Enable limited extended instruction set, MFPS, and +MTPS. +
+ +
9.25.1.4 Machine Model Options
+ +

These options enable the instruction set extensions supported by a +particular machine model, and disables all other extensions. + + + +

-m11/03
Same as -mkd11f. + +


-m11/04
Same as -mkd11d. + +


-m11/05 | -m11/10
Same as -mkd11b. + +


-m11/15 | -m11/20
Same as -mka11. + +


-m11/21
Same as -mt11. + +


-m11/23 | -m11/24
Same as -mf11. + +


-m11/34
Same as -mkd11e. + +


-m11/34a
Ame as -mkd11e -mfpp. + +


-m11/35 | -m11/40
Same as -mkd11a. + +


-m11/44
Same as -mkd11z. + +


-m11/45 | -m11/50 | -m11/55 | -m11/70
Same as -mkb11. + +


-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94
Same as -mj11. + +


-m11/60
Same as -mkd11k. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dPseudos.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dPseudos.html new file mode 100644 index 0000000..07a6107 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dPseudos.html @@ -0,0 +1,59 @@ + + +PDP-11-Pseudos - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: PDP-11-Options, +Up: PDP-11-Dependent +



+
+ +

9.25.2 Assembler Directives

+ +

The PDP-11 version of as has a few machine +dependent assembler directives. + +

+
.bss
Switch to the bss section. + +
.even
Align the location counter to an even number. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dSyntax.html new file mode 100644 index 0000000..cc378e4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dSyntax.html @@ -0,0 +1,66 @@ + + +PDP-11-Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: PDP-11-Pseudos, +Up: PDP-11-Dependent +



+
+ +

9.25.3 PDP-11 Assembly Language Syntax

+ +

+as supports both DEC syntax and BSD syntax. The only +difference is that in DEC syntax, a # character is used to denote +an immediate constants, while in BSD syntax the character for this +purpose is $. + +

general-purpose registers are named r0 through r7. +Mnemonic alternatives for r6 and r7 are sp and +pc, respectively. + +

Floating-point registers are named ac0 through ac3, or +alternatively fr0 through fr3. + +

Comments are started with a # or a / character, and extend +to the end of the line. (FIXME: clash with immediates?) + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dSynthetic.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dSynthetic.html new file mode 100644 index 0000000..0709f93 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PDP_002d11_002dSynthetic.html @@ -0,0 +1,54 @@ + + +PDP-11-Synthetic - Using as + + + + + + + + + + + + +

+

+Previous: PDP-11-Mnemonics, +Up: PDP-11-Dependent +



+
+ +

9.25.5 Synthetic Instructions

+ +

The JBR and JCC synthetic instructions are not +supported yet. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PJ-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PJ-Options.html new file mode 100644 index 0000000..23e6ce2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PJ-Options.html @@ -0,0 +1,58 @@ + + +PJ Options - Using as + + + + + + + + + + + +

+

+Up: PJ-Dependent +



+
+ +

9.26.1 Options

+ +

as has two additional command-line options for the picoJava +architecture. +

+
-ml
This option selects little endian data output. + +
-mb
This option selects big endian data output. +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PJ_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PJ_002dDependent.html new file mode 100644 index 0000000..14fd630 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PJ_002dDependent.html @@ -0,0 +1,56 @@ + + +PJ-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: PDP-11-Dependent, +Up: Machine Dependencies +



+
+ +

9.26 picoJava Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PPC_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PPC_002dDependent.html new file mode 100644 index 0000000..ecb7836 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PPC_002dDependent.html @@ -0,0 +1,57 @@ + + +PPC-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: PJ-Dependent, +Up: Machine Dependencies +



+
+ +

9.27 PowerPC Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PopSection.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PopSection.html new file mode 100644 index 0000000..76cce8b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PopSection.html @@ -0,0 +1,59 @@ + + +PopSection - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: P2align, +Up: Pseudo Ops +



+
+ +

7.84 .popsection

+ +

This is one of the ELF section stack manipulation directives. The others are +.section (see Section), .subsection (see SubSection), +.pushsection (see PushSection), and .previous +(see Previous). + +

This directive replaces the current section (and subsection) with the top +section (and subsection) on the section stack. This section is popped off the +stack. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PowerPC_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PowerPC_002dOpts.html new file mode 100644 index 0000000..8ca61cc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PowerPC_002dOpts.html @@ -0,0 +1,124 @@ + + +PowerPC-Opts - Using as + + + + + + + + + + + + +

+

+Next: , +Up: PPC-Dependent +



+
+ +

9.27.1 Options

+ +

The PowerPC chip family includes several successive levels, using the same +core instruction set, but including a few additional instructions at +each level. There are exceptions to this however. For details on what +instructions each variant supports, please see the chip's architecture +reference manual. + +

The following table lists all available PowerPC options. + +

+
-mpwrx | -mpwr2
Generate code for POWER/2 (RIOS2). + +
-mpwr
Generate code for POWER (RIOS1) + +
-m601
Generate code for PowerPC 601. + +
-mppc, -mppc32, -m603, -m604
Generate code for PowerPC 603/604. + +
-m403, -m405
Generate code for PowerPC 403/405. + +
-m440
Generate code for PowerPC 440. BookE and some 405 instructions. + +
-m7400, -m7410, -m7450, -m7455
Generate code for PowerPC 7400/7410/7450/7455. + +
-m750cl
Generate code for PowerPC 750CL. + +
-mppc64, -m620
Generate code for PowerPC 620/625/630. + +
-me500, -me500x2
Generate code for Motorola e500 core complex. + +
-mspe
Generate code for Motorola SPE instructions. + +
-mppc64bridge
Generate code for PowerPC 64, including bridge insns. + +
-mbooke64
Generate code for 64-bit BookE. + +
-mbooke, mbooke32
Generate code for 32-bit BookE. + +
-me300
Generate code for PowerPC e300 family. + +
-maltivec
Generate code for processors with AltiVec instructions. + +
-mvsx
Generate code for processors with Vector-Scalar (VSX) instructions. + +
-mpower4
Generate code for Power4 architecture. + +
-mpower5
Generate code for Power5 architecture. + +
-mpower6
Generate code for Power6 architecture. + +
-mpower7
Generate code for Power7 architecture. + +
-mcell
Generate code for Cell Broadband Engine architecture. + +
-mcom
Generate code Power/PowerPC common instructions. + +
-many
Generate code for any architecture (PWR/PWRX/PPC). + +
-mregnames
Allow symbolic names for registers. + +
-mno-regnames
Do not allow symbolic names for registers. + +
-mrelocatable
Support for GCC's -mrelocatable option. + +
-mrelocatable-lib
Support for GCC's -mrelocatable-lib option. + +
-memb
Set PPC_EMB bit in ELF flags. + +
-mlittle, -mlittle-endian
Generate code for a little endian machine. + +
-mbig, -mbig-endian
Generate code for a big endian machine. + +
-msolaris
Generate code for Solaris. + +
-mno-solaris
Do not generate code for Solaris. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PowerPC_002dPseudo.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PowerPC_002dPseudo.html new file mode 100644 index 0000000..9044249 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PowerPC_002dPseudo.html @@ -0,0 +1,63 @@ + + +PowerPC-Pseudo - Using as + + + + + + + + + + + + +
+

+Previous: PowerPC-Opts, +Up: PPC-Dependent +



+
+ +

9.27.2 PowerPC Assembler Directives

+ +

A number of assembler directives are available for PowerPC. The +following table is far from complete. + +

+
.machine "string"
This directive allows you to change the machine for which code is +generated. "string" may be any of the -m cpu selection options +(without the -m) enclosed in double quotes, "push", or +"pop". .machine "push" saves the currently selected +cpu, which may be restored with .machine "pop". +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Prefix-Ops.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Prefix-Ops.html new file mode 100644 index 0000000..84914c2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Prefix-Ops.html @@ -0,0 +1,61 @@ + + +Prefix Ops - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Operators, +Up: Integer Exprs +



+
+ +

6.2.3 Prefix Operator

+ +

as has the following prefix operators. They each take +one argument, which must be absolute. + + + + +

+
-
Negation. Two's complement negation. +
~
Complementation. Bitwise not. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Preprocessing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Preprocessing.html new file mode 100644 index 0000000..322d33f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Preprocessing.html @@ -0,0 +1,81 @@ + + +Preprocessing - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Syntax +



+
+ +

3.1 Preprocessing

+ +

The as internal preprocessor: + + +

  • adjusts and removes extra whitespace. It leaves one space or tab before +the keywords on a line, and turns any other whitespace on the line into +a single space. + +

  • removes all comments, replacing them with a single space, or an +appropriate number of newlines. + +

  • converts character constants into the appropriate numeric values. +
+ +

It does not do macro processing, include file handling, or +anything else you may get from your C compiler's preprocessor. You can +do include file processing with the .include directive +(see .include). You can use the gnu C compiler driver +to get other “CPP” style preprocessing by giving the input file a +.S suffix. See Options Controlling the Kind of Output (Using GNU CC). + +

Excess whitespace, comments, and character constants +cannot be used in the portions of the input text that are not +preprocessed. + +

If the first line of an input file is #NO_APP or if you use the +-f option, whitespace and comments are not removed from the input file. +Within an input file, you can ask for whitespace and comment removal in +specific portions of the by putting a line that says #APP before the +text that may contain whitespace or comments, and putting a line that says +#NO_APP after this text. This feature is mainly intend to support +asm statements in compilers whose output is otherwise free of comments +and whitespace. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Previous.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Previous.html new file mode 100644 index 0000000..f4f773d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Previous.html @@ -0,0 +1,92 @@ + + +Previous - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: PopSection, +Up: Pseudo Ops +



+
+ +

7.83 .previous

+ +

This is one of the ELF section stack manipulation directives. The others are +.section (see Section), .subsection (see SubSection), +.pushsection (see PushSection), and .popsection +(see PopSection). + +

This directive swaps the current section (and subsection) with most recently +referenced section/subsection pair prior to this one. Multiple +.previous directives in a row will flip between two sections (and their +subsections). For example: + +

     .section A
+      .subsection 1
+       .word 0x1234
+      .subsection 2
+       .word 0x5678
+     .previous
+      .word 0x9abc
+
+

Will place 0x1234 and 0x9abc into subsection 1 and 0x5678 into subsection 2 of +section A. Whilst: + +

     .section A
+     .subsection 1
+       # Now in section A subsection 1
+       .word 0x1234
+     .section B
+     .subsection 0
+       # Now in section B subsection 0
+       .word 0x5678
+     .subsection 1
+       # Now in section B subsection 1
+       .word 0x9abc
+     .previous
+       # Now in section B subsection 0
+       .word 0xdef0
+
+

Will place 0x1234 into section A, 0x5678 and 0xdef0 into subsection 0 of +section B and 0x9abc into subsection 1 of section B. + +

In terms of the section stack, this directive swaps the current section with +the top section on the section stack. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Print.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Print.html new file mode 100644 index 0000000..107e00e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Print.html @@ -0,0 +1,53 @@ + + +Print - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Previous, +Up: Pseudo Ops +



+
+ +

7.85 .print string

+ +

as will print string on the standard output during +assembly. You must put string in double quotes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Protected.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Protected.html new file mode 100644 index 0000000..4505cd2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Protected.html @@ -0,0 +1,60 @@ + + +Protected - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Print, +Up: Pseudo Ops +



+
+ +

7.86 .protected names

+ +

This is one of the ELF visibility directives. The other two are +.hidden (see Hidden) and .internal (see Internal). + +

This directive overrides the named symbols default visibility (which is set by +their binding: local, global or weak). The directive sets the visibility to +protected which means that any references to the symbols from within the +components that defines them must be resolved to the definition in that +component, even if a definition in another component would normally preempt +this. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Pseudo-Ops.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Pseudo-Ops.html new file mode 100644 index 0000000..cc357d6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Pseudo-Ops.html @@ -0,0 +1,202 @@ + + +Pseudo Ops - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Expressions, +Up: Top +



+
+ +

7 Assembler Directives

+ +

All assembler directives have names that begin with a period (.). +The rest of the name is letters, usually in lower case. + +

This chapter discusses directives that are available regardless of the +target machine configuration for the gnu assembler. +Some machine configurations provide additional directives. +See Machine Dependencies. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Psize.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Psize.html new file mode 100644 index 0000000..93a75ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Psize.html @@ -0,0 +1,64 @@ + + +Psize - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Protected, +Up: Pseudo Ops +



+
+ +

7.87 .psize lines , columns

+ +

Use this directive to declare the number of lines—and, optionally, the +number of columns—to use for each page, when generating listings. + +

If you do not use .psize, listings use a default line-count +of 60. You may omit the comma and columns specification; the +default width is 200 columns. + +

as generates formfeeds whenever the specified number of +lines is exceeded (or whenever you explicitly request one, using +.eject). + +

If you specify lines as 0, no formfeeds are generated save +those explicitly specified with .eject. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Purgem.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Purgem.html new file mode 100644 index 0000000..6137917 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Purgem.html @@ -0,0 +1,53 @@ + + +Purgem - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Psize, +Up: Pseudo Ops +



+
+ +

7.88 .purgem name

+ +

Undefine the macro name, so that later uses of the string will not be +expanded. See Macro. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PushSection.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PushSection.html new file mode 100644 index 0000000..23cd10b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/PushSection.html @@ -0,0 +1,61 @@ + + +PushSection - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Purgem, +Up: Pseudo Ops +



+
+ +

7.89 .pushsection name [, subsection] [, "flags"[, @type[,arguments]]]

+ +

This is one of the ELF section stack manipulation directives. The others are +.section (see Section), .subsection (see SubSection), +.popsection (see PopSection), and .previous +(see Previous). + +

This directive pushes the current section (and subsection) onto the +top of the section stack, and then replaces the current section and +subsection with name and subsection. The optional +flags, type and arguments are treated the same +as in the .section (see Section) directive. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Quad.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Quad.html new file mode 100644 index 0000000..97073de --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Quad.html @@ -0,0 +1,58 @@ + + +Quad - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: PushSection, +Up: Pseudo Ops +



+
+ +

7.90 .quad bignums

+ +

.quad expects zero or more bignums, separated by commas. For +each bignum, it emits +an 8-byte integer. If the bignum won't fit in 8 bytes, it prints a +warning message; and just takes the lowest order 8 bytes of the bignum. + +The term “quad” comes from contexts in which a “word” is two bytes; +hence quad-word for 8 bytes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/R.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/R.html new file mode 100644 index 0000000..6ec29a2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/R.html @@ -0,0 +1,69 @@ + + +R - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: o, +Up: Invoking +



+
+ +

2.12 Join Data and Text Sections: -R

+ +

-R tells as to write the object file as if all +data-section data lives in the text section. This is only done at +the very last moment: your binary data are the same, but data +section parts are relocated differently. The data section part of +your object file is zero bytes long because all its bytes are +appended to the text section. (See Sections and Relocation.) + +

When you specify -R it would be possible to generate shorter +address displacements (because we do not have to cross between text and +data section). We refrain from doing this simply for compatibility with +older versions of as. In future, -R may work this way. + +

When as is configured for COFF or ELF output, +this option is only useful if you use sections named .text and +.data. + +

-R is not supported for any of the HPPA targets. Using +-R generates a warning from as. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Reloc.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Reloc.html new file mode 100644 index 0000000..cc12b49 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Reloc.html @@ -0,0 +1,60 @@ + + +Reloc - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Quad, +Up: Pseudo Ops +



+
+ +

7.91 .reloc offset, reloc_name[, expression]

+ +

Generate a relocation at offset of type reloc_name with value +expression. If offset is a number, the relocation is generated in +the current section. If offset is an expression that resolves to a +symbol plus offset, the relocation is generated in the given symbol's section. +expression, if present, must resolve to a symbol plus addend or to an +absolute value, but note that not all targets support an addend. e.g. ELF REL +targets such as i386 store an addend in the section contents rather than in the +relocation. This low level interface does not support addends stored in the +section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Reporting-Bugs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Reporting-Bugs.html new file mode 100644 index 0000000..6fa13f0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Reporting-Bugs.html @@ -0,0 +1,65 @@ + + +Reporting Bugs - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Machine Dependencies, +Up: Top +



+
+ +

10 Reporting Bugs

+ +

+Your bug reports play an essential role in making as reliable. + +

Reporting a bug may help you by bringing a solution to your problem, or it may +not. But in any case the principal function of a bug report is to help the +entire community by making the next version of as work better. +Bug reports are your contribution to the maintenance of as. + +

In order for a bug report to serve its purpose, you must include the +information that enables us to fix the bug. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Rept.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Rept.html new file mode 100644 index 0000000..169677c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Rept.html @@ -0,0 +1,65 @@ + + +Rept - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Reloc, +Up: Pseudo Ops +



+
+ +

7.92 .rept count

+ +

Repeat the sequence of lines between the .rept directive and the next +.endr directive count times. + +

For example, assembling + +

             .rept   3
+             .long   0
+             .endr
+
+

is equivalent to assembling + +

             .long   0
+             .long   0
+             .long   0
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Directives.html new file mode 100644 index 0000000..2f0a36c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Directives.html @@ -0,0 +1,57 @@ + + +SH Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SH Floating Point, +Up: SH-Dependent +



+
+ +

9.28.4 SH Machine Directives

+ +

+

+
uaword
ualong
as will issue a warning when a misaligned .word or +.long directive is used. You may use .uaword or +.ualong to indicate that the value is intentionally misaligned. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Floating-Point.html new file mode 100644 index 0000000..a945ff8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Floating-Point.html @@ -0,0 +1,68 @@ + + +SH Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SH Syntax, +Up: SH-Dependent +



+
+ +

9.28.3 Floating Point

+ +

SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other +SH groups can use .float directive to generate ieee +floating-point numbers. + +

SH2E and SH3E support single-precision floating point calculations as +well as entirely PCAPI compatible emulation of double-precision +floating point calculations. SH2E and SH3E instructions are a subset of +the floating point calculations conforming to the IEEE754 standard. + +

In addition to single-precision and double-precision floating-point +operation capability, the on-chip FPU of SH4 has a 128-bit graphic +engine that enables 32-bit floating-point data to be processed 128 +bits at a time. It also supports 4 * 4 array operations and inner +product operations. Also, a superscalar architecture is employed that +enables simultaneous execution of two instructions (including FPU +instructions), providing performance of up to twice that of +conventional architectures at the same frequency. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Opcodes.html new file mode 100644 index 0000000..9aedbce --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Opcodes.html @@ -0,0 +1,68 @@ + + +SH Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: SH Directives, +Up: SH-Dependent +



+
+ +

9.28.5 Opcodes

+ +

For detailed information on the SH machine instruction set, see +SH-Microcomputer User's Manual (Renesas) or +SH-4 32-bit CPU Core Architecture (SuperH) and +SuperH (SH) 64-Bit RISC Series (SuperH). + +

as implements all the standard SH opcodes. No additional +pseudo-instructions are needed on this family. Note, however, that +because as supports a simpler form of PC-relative +addressing, you may simply write (for example) + +

     mov.l  bar,r0
+
+

where other assemblers might require an explicit displacement to +bar from the program counter: + +

     mov.l  @(disp, PC)
+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Options.html new file mode 100644 index 0000000..cf7336d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Options.html @@ -0,0 +1,84 @@ + + +SH Options - Using as + + + + + + + + + + + + +
+

+Next: , +Up: SH-Dependent +



+
+ +

9.28.1 Options

+ +

as has following command-line options for the Renesas +(formerly Hitachi) / SuperH SH family. + + + + + + + + + +

+
--little
Generate little endian code. + +
--big
Generate big endian code. + +
--relax
Alter jump instructions for long displacements. + +
--small
Align sections to 4 byte boundaries, not 16. + +
--dsp
Enable sh-dsp insns, and disable sh3e / sh4 insns. + +
--renesas
Disable optimization with section symbol for compatibility with +Renesas assembler. + +
--allow-reg-prefix
Allow '$' as a register name prefix. + +
--isa=sh4 | sh4a
Specify the sh4 or sh4a instruction set. +
--isa=dsp
Enable sh-dsp insns, and disable sh3e / sh4 insns. +
--isa=fp
Enable sh2e, sh3e, sh4, and sh4a insn sets. +
--isa=all
Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets. + +
-h-tick-hex
Support H'00 style hex constants in addition to 0x00 style. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Syntax.html new file mode 100644 index 0000000..f556ee8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH-Syntax.html @@ -0,0 +1,56 @@ + + +SH Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SH Options, +Up: SH-Dependent +



+
+ +

9.28.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Directives.html new file mode 100644 index 0000000..b41b435 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Directives.html @@ -0,0 +1,72 @@ + + +SH64 Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SH64 Syntax, +Up: SH64-Dependent +



+
+ +

9.29.3 SH64 Machine Directives

+ +

In addition to the SH directives, the SH64 provides the following +directives: + +

+

+
.mode [shmedia|shcompact]
.isa [shmedia|shcompact]
Specify the ISA for the following instructions (the two directives are +equivalent). Note that programs such as objdump rely on symbolic +labels to determine when such mode switches occur (by checking the least +significant bit of the label's address), so such mode/isa changes should +always be followed by a label (in practice, this is true anyway). Note +that you cannot use these directives if you didn't specify an ISA on the +command line. + +
.abi [32|64]
Specify the ABI for the following instructions. Note that you cannot use +this directive unless you specified an ABI on the command line, and the +ABIs specified must match. + +
.uaquad
Like .uaword and .ualong, this allows you to specify an intentionally +unaligned quadword (64 bit word). + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Opcodes.html new file mode 100644 index 0000000..279663b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Opcodes.html @@ -0,0 +1,70 @@ + + +SH64 Opcodes - Using as + + + + + + + + + + + + +
+

+Previous: SH64 Directives, +Up: SH64-Dependent +



+
+ +

9.29.4 Opcodes

+ +

For detailed information on the SH64 machine instruction set, see +SuperH 64 bit RISC Series Architecture Manual (SuperH, Inc.). + +

as implements all the standard SH64 opcodes. In +addition, the following pseudo-opcodes may be expanded into one or more +alternate opcodes: + +

+
movi
If the value doesn't fit into a standard movi opcode, +as will replace the movi with a sequence of +movi and shori opcodes. + +
pt
This expands to a sequence of movi and shori opcode, +followed by a ptrel opcode, or to a pta or ptb +opcode, depending on the label referenced. + +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Options.html new file mode 100644 index 0000000..39aed05 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Options.html @@ -0,0 +1,87 @@ + + +SH64 Options - Using as + + + + + + + + + + + + +
+

+Next: , +Up: SH64-Dependent +



+
+ +

9.29.1 Options

+ +

+ + + +

-isa=sh4 | sh4a
Specify the sh4 or sh4a instruction set. +
-isa=dsp
Enable sh-dsp insns, and disable sh3e / sh4 insns. +
-isa=fp
Enable sh2e, sh3e, sh4, and sh4a insn sets. +
-isa=all
Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets. +
-isa=shmedia | -isa=shcompact
Specify the default instruction set. SHmedia specifies the +32-bit opcodes, and SHcompact specifies the 16-bit opcodes +compatible with previous SH families. The default depends on the ABI +selected; the default for the 64-bit ABI is SHmedia, and the default for +the 32-bit ABI is SHcompact. If neither the ABI nor the ISA is +specified, the default is 32-bit SHcompact. + +

Note that the .mode pseudo-op is not permitted if the ISA is not +specified on the command line. + +


-abi=32 | -abi=64
Specify the default ABI. If the ISA is specified and the ABI is not, +the default ABI depends on the ISA, with SHmedia defaulting to 64-bit +and SHcompact defaulting to 32-bit. + +

Note that the .abi pseudo-op is not permitted if the ABI is not +specified on the command line. When the ABI is specified on the command +line, any .abi pseudo-ops in the source must match it. + +

-shcompact-const-crange
Emit code-range descriptors for constants in SHcompact code sections. + +
-no-mix
Disallow SHmedia code in the same section as constants and SHcompact +code. + +
-no-expand
Do not expand MOVI, PT, PTA or PTB instructions. + +
-expand-pt32
With -abi=64, expand PT, PTA and PTB instructions to 32 bits only. + +
-h-tick-hex
Support H'00 style hex constants in addition to 0x00 style. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Syntax.html new file mode 100644 index 0000000..065e8cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64-Syntax.html @@ -0,0 +1,56 @@ + + +SH64 Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SH64 Options, +Up: SH64-Dependent +



+
+ +

9.29.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dAddressing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dAddressing.html new file mode 100644 index 0000000..d3adc26 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dAddressing.html @@ -0,0 +1,75 @@ + + +SH64-Addressing - Using as + + + + + + + + + + + + +
+

+Previous: SH64-Regs, +Up: SH64 Syntax +



+
+ +
9.29.2.3 Addressing Modes
+ +

+SH64 operands consist of either a register or immediate value. The +immediate value can be a constant or label reference (or portion of a +label reference), as in this example: + +

     	movi	4,r2
+     	pt	function, tr4
+     	movi	(function >> 16) & 65535,r0
+     	shori	function & 65535, r0
+     	ld.l	r0,4,r0
+
+

Instruction label references can reference labels in either SHmedia or +SHcompact. To differentiate between the two, labels in SHmedia sections +will always have the least significant bit set (i.e. they will be odd), +which SHcompact labels will have the least significant bit reset +(i.e. they will be even). If you need to reference the actual address +of a label, you can use the datalabel modifier, as in this +example: + +

     	.long	function
+     	.long	datalabel function
+
+

In that example, the first longword may or may not have the least +significant bit set depending on whether the label is an SHmedia label +or an SHcompact label. The second longword will be the actual address +of the label, regardless of what type of label it is. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dChars.html new file mode 100644 index 0000000..d7c41b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dChars.html @@ -0,0 +1,54 @@ + + +SH64-Chars - Using as + + + + + + + + + + + + +

+

+Next: , +Up: SH64 Syntax +



+
+ +
9.29.2.1 Special Characters
+ +

! is the line comment character. + +

You can use ; instead of a newline to separate statements. + +

Since $ has no special meaning, you may use it in symbol names. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dDependent.html new file mode 100644 index 0000000..ea1fe03 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dDependent.html @@ -0,0 +1,59 @@ + + +SH64-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: SH-Dependent, +Up: Machine Dependencies +



+
+ +

9.29 SuperH SH64 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dRegs.html new file mode 100644 index 0000000..22fcf24 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH64_002dRegs.html @@ -0,0 +1,70 @@ + + +SH64-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SH64-Chars, +Up: SH64 Syntax +



+
+ +
9.29.2.2 Register Names
+ +

You can use the predefined symbols r0 through r63 to refer +to the SH64 general registers, cr0 through cr63 for +control registers, tr0 through tr7 for target address +registers, fr0 through fr63 for single-precision floating +point registers, dr0 through dr62 (even numbered registers +only) for double-precision floating point registers, fv0 through +fv60 (multiples of four only) for single-precision floating point +vectors, fp0 through fp62 (even numbered registers only) +for single-precision floating point pairs, mtrx0 through +mtrx48 (multiples of 16 only) for 4x4 matrices of +single-precision floating point registers, pc for the program +counter, and fpscr for the floating point status and control +register. + +

You can also refer to the control registers by the mnemonics sr, +ssr, pssr, intevt, expevt, pexpevt, +tra, spc, pspc, resvec, vbr, +tea, dcr, kcr0, kcr1, ctc, and +usr. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dAddressing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dAddressing.html new file mode 100644 index 0000000..5eec618 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dAddressing.html @@ -0,0 +1,77 @@ + + +SH-Addressing - Using as + + + + + + + + + + + + +

+

+Previous: SH-Regs, +Up: SH Syntax +



+
+ +
9.28.2.3 Addressing Modes
+ +

as understands the following addressing modes for the SH. +Rn in the following refers to any of the numbered +registers, but not the control registers. + +

+
Rn
Register direct + +
@Rn
Register indirect + +
@-Rn
Register indirect with pre-decrement + +
@Rn+
Register indirect with post-increment + +
@(disp, Rn)
Register indirect with displacement + +
@(R0, Rn)
Register indexed + +
@(disp, GBR)
GBR offset + +
@(R0, GBR)
GBR indexed + +
addr
@(disp, PC)
PC relative address (for branch or for addressing memory). The +as implementation allows you to use the simpler form +addr anywhere a PC relative address is called for; the alternate +form is supported for compatibility with other assemblers. + +
#imm
Immediate data +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dChars.html new file mode 100644 index 0000000..6a8399d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dChars.html @@ -0,0 +1,54 @@ + + +SH-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: SH Syntax +



+
+ +
9.28.2.1 Special Characters
+ +

! is the line comment character. + +

You can use ; instead of a newline to separate statements. + +

Since $ has no special meaning, you may use it in symbol names. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dDependent.html new file mode 100644 index 0000000..a973931 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dDependent.html @@ -0,0 +1,60 @@ + + +SH-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: MSP430-Dependent, +Up: Machine Dependencies +



+
+ +

9.28 Renesas / SuperH SH Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dRegs.html new file mode 100644 index 0000000..9d15ad1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SH_002dRegs.html @@ -0,0 +1,71 @@ + + +SH-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SH-Chars, +Up: SH Syntax +



+
+ +
9.28.2.2 Register Names
+ +

You can use the predefined symbols r0, r1, r2, +r3, r4, r5, r6, r7, r8, +r9, r10, r11, r12, r13, r14, +and r15 to refer to the SH registers. + +

The SH also has these control registers: + +

+
pr
procedure register (holds return address) + +
pc
program counter + +
mach
macl
high and low multiply accumulator registers + +
sr
status register + +
gbr
global base register + +
vbr
vector base register (for interrupt vectors) +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SOM-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SOM-Symbols.html new file mode 100644 index 0000000..02d843c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SOM-Symbols.html @@ -0,0 +1,56 @@ + + +SOM Symbols - Using as + + + + + + + + + + + + +
+

+Previous: COFF Symbols, +Up: Symbol Attributes +



+
+ +

5.5.5 Symbol Attributes for SOM

+ +

+The SOM format for the HPPA supports a multitude of symbol attributes set with +the .EXPORT and .IMPORT directives. + +

The attributes are described in HP9000 Series 800 Assembly +Language Reference Manual (HP 92432-90001) under the IMPORT and +EXPORT assembler directive documentation. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sbttl.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sbttl.html new file mode 100644 index 0000000..33f6703 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sbttl.html @@ -0,0 +1,56 @@ + + +Sbttl - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Rept, +Up: Pseudo Ops +



+
+ +

7.93 .sbttl "subheading"

+ +

Use subheading as the title (third line, immediately after the +title line) when generating assembly listings. + +

This directive affects subsequent pages, as well as the current page if +it appears within ten lines of the top of a page. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Schedule-Directive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Schedule-Directive.html new file mode 100644 index 0000000..cfbbf99 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Schedule-Directive.html @@ -0,0 +1,57 @@ + + +Schedule Directive - Using as + + + + + + + + + + + + +

+ +
9.36.5.1 schedule
+ +

+The schedule directive is recognized only for compatibility with +Tensilica's assembler. + +

         .begin [no-]schedule
+         .end [no-]schedule
+
+

This directive is ignored and has no effect on as. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Scl.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Scl.html new file mode 100644 index 0000000..8e42998 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Scl.html @@ -0,0 +1,55 @@ + + +Scl - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Sbttl, +Up: Pseudo Ops +



+
+ +

7.94 .scl class

+ +

Set the storage-class value for a symbol. This directive may only be +used inside a .def/.endef pair. Storage class may flag +whether a symbol is static or external, or it may record further +symbolic debugging information. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Secs-Background.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Secs-Background.html new file mode 100644 index 0000000..f8889c7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Secs-Background.html @@ -0,0 +1,154 @@ + + +Secs Background - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Sections +



+
+ +

4.1 Background

+ +

Roughly, a section is a range of addresses, with no gaps; all data +“in” those addresses is treated the same for some particular purpose. +For example there may be a “read only” section. + +

The linker ld reads many object files (partial programs) and +combines their contents to form a runnable program. When as +emits an object file, the partial program is assumed to start at address 0. +ld assigns the final addresses for the partial program, so that +different partial programs do not overlap. This is actually an +oversimplification, but it suffices to explain how as uses +sections. + +

ld moves blocks of bytes of your program to their run-time +addresses. These blocks slide to their run-time addresses as rigid +units; their length does not change and neither does the order of bytes +within them. Such a rigid unit is called a section. Assigning +run-time addresses to sections is called relocation. It includes +the task of adjusting mentions of object-file addresses so they refer to +the proper run-time addresses. +For the H8/300, and for the Renesas / SuperH SH, +as pads sections if needed to +ensure they end on a word (sixteen bit) boundary. + +

An object file written by as has at least three sections, any +of which may be empty. These are named text, data and +bss sections. + +

When it generates COFF or ELF output, +as can also generate whatever other named sections you specify +using the .section directive (see .section). +If you do not use any directives that place output in the .text +or .data sections, these sections still exist, but are empty. + +

When as generates SOM or ELF output for the HPPA, +as can also generate whatever other named sections you +specify using the .space and .subspace directives. See +HP9000 Series 800 Assembly Language Reference Manual +(HP 92432-90001) for details on the .space and .subspace +assembler directives. + +

Additionally, as uses different names for the standard +text, data, and bss sections when generating SOM output. Program text +is placed into the $CODE$ section, data into $DATA$, and +BSS into $BSS$. + +

Within the object file, the text section starts at address 0, the +data section follows, and the bss section follows the data section. + +

When generating either SOM or ELF output files on the HPPA, the text +section starts at address 0, the data section at address +0x4000000, and the bss section follows the data section. + +

To let ld know which data changes when the sections are +relocated, and how to change that data, as also writes to the +object file details of the relocation needed. To perform relocation +ld must know, each time an address in the object +file is mentioned: +

    +
  • Where in the object file is the beginning of this reference to +an address? +
  • How long (in bytes) is this reference? +
  • Which section does the address refer to? What is the numeric value of +
              (address) − (start-address of section)?
    +     
    +
  • Is the reference to an address “Program-Counter relative”? +
+ +

In fact, every address as ever uses is expressed as +

     (section) + (offset into section)
+
+

Further, most expressions as computes have this section-relative +nature. +(For some object formats, such as SOM for the HPPA, some expressions are +symbol-relative instead.) + +

In this manual we use the notation {secname N} to mean “offset +N into section secname.” + +

Apart from text, data and bss sections you need to know about the +absolute section. When ld mixes partial programs, +addresses in the absolute section remain unchanged. For example, address +{absolute 0} is “relocated” to run-time address 0 by +ld. Although the linker never arranges two partial programs' +data sections with overlapping addresses after linking, by definition +their absolute sections must overlap. Address {absolute 239} in one +part of a program is always the same address when the program is running as +address {absolute 239} in any other part of the program. + +

The idea of sections is extended to the undefined section. Any +address whose section is unknown at assembly time is by definition +rendered {undefined U}—where U is filled in later. +Since numbers are always defined, the only way to generate an undefined +address is to mention an undefined symbol. A reference to a named +common block would be such a symbol: its value is unknown at assembly +time so it has section undefined. + +

By analogy the word section is used to describe groups of sections in +the linked program. ld puts all partial programs' text +sections in contiguous addresses in the linked program. It is +customary to refer to the text section of a program, meaning all +the addresses of all partial programs' text sections. Likewise for +data and bss sections. + +

Some sections are manipulated by ld; others are invented for +use of as and have no meaning except during assembly. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Section.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Section.html new file mode 100644 index 0000000..71eb8ea --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Section.html @@ -0,0 +1,181 @@ + + +Section - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Scl, +Up: Pseudo Ops +



+
+ +

7.95 .section name

+ +

Use the .section directive to assemble the following code into a section +named name. + +

This directive is only supported for targets that actually support arbitrarily +named sections; on a.out targets, for example, it is not accepted, even +with a standard a.out section name. + + +

COFF Version

+ +

For COFF targets, the .section directive is used in one of the following +ways: + +

     .section name[, "flags"]
+     .section name[, subsection]
+
+

If the optional argument is quoted, it is taken as flags to use for the +section. Each flag is a single character. The following flags are recognized: +

+
b
bss section (uninitialized data) +
n
section is not loaded +
w
writable section +
d
data section +
r
read-only section +
x
executable section +
s
shared section (meaningful for PE targets) +
a
ignored. (For compatibility with the ELF version) +
+ +

If no flags are specified, the default flags depend upon the section name. If +the section name is not recognized, the default will be for the section to be +loaded and writable. Note the n and w flags remove attributes +from the section, rather than adding them, so if they are used on their own it +will be as if no flags had been specified at all. + +

If the optional argument to the .section directive is not quoted, it is +taken as a subsection number (see Sub-Sections). + + +

ELF Version

+ +

This is one of the ELF section stack manipulation directives. The others are +.subsection (see SubSection), .pushsection +(see PushSection), .popsection (see PopSection), and +.previous (see Previous). + +

For ELF targets, the .section directive is used like this: + +

     .section name [, "flags"[, @type[,flag_specific_arguments]]]
+
+

The optional flags argument is a quoted string which may contain any +combination of the following characters: +

+
a
section is allocatable +
w
section is writable +
x
section is executable +
M
section is mergeable +
S
section contains zero terminated strings +
G
section is a member of a section group +
T
section is used for thread-local-storage +
+ +

The optional type argument may contain one of the following constants: +

+
@progbits
section contains data +
@nobits
section does not contain data (i.e., section only occupies space) +
@note
section contains data which is used by things other than the program +
@init_array
section contains an array of pointers to init functions +
@fini_array
section contains an array of pointers to finish functions +
@preinit_array
section contains an array of pointers to pre-init functions +
+ +

Many targets only support the first three section types. + +

Note on targets where the @ character is the start of a comment (eg +ARM) then another character is used instead. For example the ARM port uses the +% character. + +

If flags contains the M symbol then the type argument must +be specified as well as an extra argument—entsize—like this: + +

     .section name , "flags"M, @type, entsize
+
+

Sections with the M flag but not S flag must contain fixed size +constants, each entsize octets long. Sections with both M and +S must contain zero terminated strings where each character is +entsize bytes long. The linker may remove duplicates within sections with +the same name, same entity size and same flags. entsize must be an +absolute expression. + +

If flags contains the G symbol then the type argument must +be present along with an additional field like this: + +

     .section name , "flags"G, @type, GroupName[, linkage]
+
+

The GroupName field specifies the name of the section group to which this +particular section belongs. The optional linkage field can contain: +

+
comdat
indicates that only one copy of this section should be retained +
.gnu.linkonce
an alias for comdat +
+ +

Note: if both the M and G flags are present then the fields for +the Merge flag should come first, like this: + +

     .section name , "flags"MG, @type, entsize, GroupName[, linkage]
+
+

If no flags are specified, the default flags depend upon the section name. If +the section name is not recognized, the default will be for the section to have +none of the above flags: it will not be allocated in memory, nor writable, nor +executable. The section will contain data. + +

For ELF targets, the assembler supports another type of .section +directive for compatibility with the Solaris assembler: + +

     .section "name"[, flags...]
+
+

Note that the section name is quoted. There may be a sequence of comma +separated flags: +

+
#alloc
section is allocatable +
#write
section is writable +
#execinstr
section is executable +
#tls
section is used for thread local storage +
+ +

This directive replaces the current section and subsection. See the +contents of the gas testsuite directory gas/testsuite/gas/elf for +some examples of how this directive and the other section stack directives +work. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sections.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sections.html new file mode 100644 index 0000000..9f5e8aa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sections.html @@ -0,0 +1,59 @@ + + +Sections - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Syntax, +Up: Top +



+
+ +

4 Sections and Relocation

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Set.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Set.html new file mode 100644 index 0000000..35d74d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Set.html @@ -0,0 +1,66 @@ + + +Set - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Section, +Up: Pseudo Ops +



+
+ +

7.96 .set symbol, expression

+ +

Set the value of symbol to expression. This +changes symbol's value and type to conform to +expression. If symbol was flagged as external, it remains +flagged (see Symbol Attributes). + +

You may .set a symbol many times in the same assembly. + +

If you .set a global symbol, the value stored in the object +file is the last value stored into it. + +

The syntax for set on the HPPA is +symbol .set expression. + +

On Z80 set is a real instruction, use +symbol defl expression instead. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Setting-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Setting-Symbols.html new file mode 100644 index 0000000..617862d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Setting-Symbols.html @@ -0,0 +1,57 @@ + + +Setting Symbols - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Labels, +Up: Symbols +



+
+ +

5.2 Giving Symbols Other Values

+ +

A symbol can be given an arbitrary value by writing a symbol, followed +by an equals sign =, followed by an expression +(see Expressions). This is equivalent to using the .set +directive. See .set. In the same way, using a double +equals sign == here represents an equivalent of the +.eqv directive. See .eqv. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Short.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Short.html new file mode 100644 index 0000000..b1fdd2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Short.html @@ -0,0 +1,56 @@ + + +Short - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Set, +Up: Pseudo Ops +



+
+ +

7.97 .short expressions

+ +

.short is normally the same as .word. +See .word. + +

In some configurations, however, .short and .word generate +numbers of different lengths. See Machine Dependencies. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Single.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Single.html new file mode 100644 index 0000000..922f11c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Single.html @@ -0,0 +1,55 @@ + + +Single - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Short, +Up: Pseudo Ops +



+
+ +

7.98 .single flonums

+ +

This directive assembles zero or more flonums, separated by commas. It +has the same effect as .float. +The exact kind of floating point numbers emitted depends on how +as is configured. See Machine Dependencies. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Size.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Size.html new file mode 100644 index 0000000..1840d13 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Size.html @@ -0,0 +1,72 @@ + + +Size - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Single, +Up: Pseudo Ops +



+
+ +

7.99 .size

+ +

This directive is used to set the size associated with a symbol. + + +

COFF Version

+ +

For COFF targets, the .size directive is only permitted inside +.def/.endef pairs. It is used like this: + +

     .size expression
+
+ +

ELF Version

+ +

For ELF targets, the .size directive is used like this: + +

     .size name , expression
+
+

This directive sets the size associated with a symbol name. +The size in bytes is computed from expression which can make use of label +arithmetic. This directive is typically used to set the size of function +symbols. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Skip.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Skip.html new file mode 100644 index 0000000..840fe64 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Skip.html @@ -0,0 +1,55 @@ + + +Skip - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Size, +Up: Pseudo Ops +



+
+ +

7.101 .skip size , fill

+ +

This directive emits size bytes, each of value fill. Both +size and fill are absolute expressions. If the comma and +fill are omitted, fill is assumed to be zero. This is the same as +.space. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sleb128.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sleb128.html new file mode 100644 index 0000000..f6f7447 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sleb128.html @@ -0,0 +1,54 @@ + + +Sleb128 - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Skip, +Up: Pseudo Ops +



+
+ +

7.100 .sleb128 expressions

+ +

sleb128 stands for “signed little endian base 128.” This is a +compact, variable length representation of numbers used by the DWARF +symbolic debugging format. See .uleb128. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Space.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Space.html new file mode 100644 index 0000000..14b98d0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Space.html @@ -0,0 +1,63 @@ + + +Space - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Sleb128, +Up: Pseudo Ops +



+
+ +

7.102 .space size , fill

+ +

This directive emits size bytes, each of value fill. Both +size and fill are absolute expressions. If the comma +and fill are omitted, fill is assumed to be zero. This is the same +as .skip. + +

+Warning: .space has a completely different meaning for HPPA +targets; use .block as a substitute. See HP9000 Series 800 +Assembly Language Reference Manual (HP 92432-90001) for the meaning of the +.space directive. See HPPA Assembler Directives, +for a summary. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dAligned_002dData.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dAligned_002dData.html new file mode 100644 index 0000000..35e6bce --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dAligned_002dData.html @@ -0,0 +1,67 @@ + + +Sparc-Aligned-Data - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Sparc-Opts, +Up: Sparc-Dependent +



+
+ +

9.30.2 Enforcing aligned data

+ +

SPARC GAS normally permits data to be misaligned. For example, it +permits the .long pseudo-op to be used on a byte boundary. +However, the native SunOS assemblers issue an error when they see +misaligned data. + +

You can use the --enforce-aligned-data option to make SPARC GAS +also issue an error about misaligned data, just as the SunOS +assemblers do. + +

The --enforce-aligned-data option is not the default because gcc +issues misaligned data pseudo-ops when it initializes certain packed +data structures (structures defined using the packed attribute). +You may have to assemble with GAS in order to initialize packed data +structures in your own code. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dChars.html new file mode 100644 index 0000000..9f310c4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dChars.html @@ -0,0 +1,52 @@ + + +Sparc-Chars - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Sparc-Syntax +



+
+ +
9.30.3.1 Special Characters
+ +

# is the line comment character. + +

; can be used instead of a newline to separate statements. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dConstants.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dConstants.html new file mode 100644 index 0000000..b6df922 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dConstants.html @@ -0,0 +1,164 @@ + + +Sparc-Constants - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Sparc-Regs, +Up: Sparc-Syntax +



+
+ +
9.30.3.3 Constants
+ +

+Several Sparc instructions take an immediate operand field for +which mnemonic names exist. Two such examples are membar +and prefetch. Another example are the set of V9 +memory access instruction that allow specification of an +address space identifier. + +

The membar instruction specifies a memory barrier that is +the defined by the operand which is a bitmask. The supported +mask mnemonics are: + +

    +
  • #Sync requests that all operations (including nonmemory +reference operations) appearing prior to the membar must have +been performed and the effects of any exceptions become visible before +any instructions after the membar may be initiated. This +corresponds to membar cmask field bit 2. + +
  • #MemIssue requests that all memory reference operations +appearing prior to the membar must have been performed before +any memory operation after the membar may be initiated. This +corresponds to membar cmask field bit 1. + +
  • #Lookaside requests that a store appearing prior to the +membar must complete before any load following the +membar referencing the same address can be initiated. This +corresponds to membar cmask field bit 0. + +
  • #StoreStore defines that the effects of all stores appearing +prior to the membar instruction must be visible to all +processors before the effect of any stores following the +membar. Equivalent to the deprecated stbar instruction. +This corresponds to membar mmask field bit 3. + +
  • #LoadStore defines all loads appearing prior to the +membar instruction must have been performed before the effect +of any stores following the membar is visible to any other +processor. This corresponds to membar mmask field bit 2. + +
  • #StoreLoad defines that the effects of all stores appearing +prior to the membar instruction must be visible to all +processors before loads following the membar may be performed. +This corresponds to membar mmask field bit 1. + +
  • #LoadLoad defines that all loads appearing prior to the +membar instruction must have been performed before any loads +following the membar may be performed. This corresponds to +membar mmask field bit 0. + +
+ +

These values can be ored together, for example: + +

     membar #Sync
+     membar #StoreLoad | #LoadLoad
+     membar #StoreLoad | #StoreStore
+
+

The prefetch and prefetcha instructions take a prefetch +function code. The following prefetch function code constant +mnemonics are available: + +

    +
  • #n_reads requests a prefetch for several reads, and corresponds +to a prefetch function code of 0. + +

    #one_read requests a prefetch for one read, and corresponds +to a prefetch function code of 1. + +

    #n_writes requests a prefetch for several writes (and possibly +reads), and corresponds to a prefetch function code of 2. + +

    #one_write requests a prefetch for one write, and corresponds +to a prefetch function code of 3. + +

    #page requests a prefetch page, and corresponds to a prefetch +function code of 4. + +

    #invalidate requests a prefetch invalidate, and corresponds to +a prefetch function code of 16. + +

    #unified requests a prefetch to the nearest unified cache, and +corresponds to a prefetch function code of 17. + +

    #n_reads_strong requests a strong prefetch for several reads, +and corresponds to a prefetch function code of 20. + +

    #one_read_strong requests a strong prefetch for one read, +and corresponds to a prefetch function code of 21. + +

    #n_writes_strong requests a strong prefetch for several writes, +and corresponds to a prefetch function code of 22. + +

    #one_write_strong requests a strong prefetch for one write, +and corresponds to a prefetch function code of 23. + +

    Onle one prefetch code may be specified. Here are some examples: + +

              prefetch  [%l0 + %l2], #one_read
    +          prefetch  [%g2 + 8], #n_writes
    +          prefetcha [%g1] 0x8, #unified
    +          prefetcha [%o0 + 0x10] %asi, #n_reads
    +     
    +

    The actual behavior of a given prefetch function code is processor +specific. If a processor does not implement a given prefetch +function code, it will treat the prefetch instruction as a nop. + +

    For instructions that accept an immediate address space identifier, +as provides many mnemonics corresponding to +V9 defined as well as UltraSPARC and Niagara extended values. +For example, #ASI_P and #ASI_BLK_INIT_QUAD_LDD_AIUS. +See the V9 and processor specific manuals for details. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dDependent.html new file mode 100644 index 0000000..d61df51 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dDependent.html @@ -0,0 +1,60 @@ + + +Sparc-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: PPC-Dependent, +Up: Machine Dependencies +



+
+ +

9.30 SPARC Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dDirectives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dDirectives.html new file mode 100644 index 0000000..9d5b3e2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dDirectives.html @@ -0,0 +1,97 @@ + + +Sparc-Directives - Using as + + + + + + + + + + + + +
+

+Previous: Sparc-Float, +Up: Sparc-Dependent +



+
+ +

9.30.5 Sparc Machine Directives

+ +

The Sparc version of as supports the following additional +machine directives: + + + +

.align
This must be followed by the desired alignment in bytes. + +


.common
This must be followed by a symbol name, a positive number, and +"bss". This behaves somewhat like .comm, but the +syntax is different. + +


.half
This is functionally identical to .short. + +


.nword
On the Sparc, the .nword directive produces native word sized value, +ie. if assembling with -32 it is equivalent to .word, if assembling +with -64 it is equivalent to .xword. + +


.proc
This directive is ignored. Any text following it on the same +line is also ignored. + +


.register
This directive declares use of a global application or system register. +It must be followed by a register name %g2, %g3, %g6 or %g7, comma and +the symbol name for that register. If symbol name is #scratch, +it is a scratch register, if it is #ignore, it just suppresses any +errors about using undeclared global register, but does not emit any +information about it into the object file. This can be useful e.g. if you +save the register before use and restore it after. + +


.reserve
This must be followed by a symbol name, a positive number, and +"bss". This behaves somewhat like .lcomm, but the +syntax is different. + +


.seg
This must be followed by "text", "data", or +"data1". It behaves like .text, .data, or +.data 1. + +


.skip
This is functionally identical to the .space directive. + +


.word
On the Sparc, the .word directive produces 32 bit values, +instead of the 16 bit values it produces on many other machines. + +


.xword
On the Sparc V9 processor, the .xword directive produces +64 bit values. +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dFloat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dFloat.html new file mode 100644 index 0000000..1f0aafb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dFloat.html @@ -0,0 +1,52 @@ + + +Sparc-Float - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Sparc-Syntax, +Up: Sparc-Dependent +



+
+ +

9.30.4 Floating Point

+ +

The Sparc uses ieee floating-point numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dOpts.html new file mode 100644 index 0000000..ceb8a6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dOpts.html @@ -0,0 +1,103 @@ + + +Sparc-Opts - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Sparc-Dependent +



+
+ +

9.30.1 Options

+ +

The SPARC chip family includes several successive versions, using the same +core instruction set, but including a few additional instructions at +each version. There are exceptions to this however. For details on what +instructions each variant supports, please see the chip's architecture +reference manual. + +

By default, as assumes the core instruction set (SPARC +v6), but “bumps” the architecture level as needed: it switches to +successively higher architectures as it encounters instructions that +only exist in the higher levels. + +

If not configured for SPARC v9 (sparc64-*-*) GAS will not bump +past sparclite by default, an option must be passed to enable the +v9 instructions. + +

GAS treats sparclite as being compatible with v8, unless an architecture +is explicitly requested. SPARC v9 is always incompatible with sparclite. + + + + + + + + + + + +

-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite
-Av8plus | -Av8plusa | -Av9 | -Av9a
Use one of the -A options to select one of the SPARC +architectures explicitly. If you select an architecture explicitly, +as reports a fatal error if it encounters an instruction +or feature requiring an incompatible or higher level. + +

-Av8plus and -Av8plusa select a 32 bit environment. + +

-Av9 and -Av9a select a 64 bit environment and are not +available unless GAS is explicitly configured with 64 bit environment +support. + +

-Av8plusa and -Av9a enable the SPARC V9 instruction set with +UltraSPARC extensions. + +

-xarch=v8plus | -xarch=v8plusa
For compatibility with the SunOS v9 assembler. These options are +equivalent to -Av8plus and -Av8plusa, respectively. + +
-bump
Warn whenever it is necessary to switch to another level. +If an architecture level is explicitly requested, GAS will not issue +warnings until that level is reached, and will then bump the level +as required (except between incompatible levels). + +
-32 | -64
Select the word size, either 32 bits or 64 bits. +These options are only available with the ELF object file format, +and require that the necessary BFD support has been included. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dRegs.html new file mode 100644 index 0000000..ea41259 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dRegs.html @@ -0,0 +1,204 @@ + + +Sparc-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Sparc-Chars, +Up: Sparc-Syntax +



+
+ +
9.30.3.2 Register Names
+ +

+The Sparc integer register file is broken down into global, +outgoing, local, and incoming. + +

    +
  • The 8 global registers are referred to as %gn. + +
  • The 8 outgoing registers are referred to as %on. + +
  • The 8 local registers are referred to as %ln. + +
  • The 8 incoming registers are referred to as %in. + +
  • The frame pointer register %i6 can be referenced using +the alias %fp. + +
  • The stack pointer register %o6 can be referenced using +the alias %sp. +
+ +

Floating point registers are simply referred to as %fn. +When assembling for pre-V9, only 32 floating point registers +are available. For V9 and later there are 64, but there are +restrictions when referencing the upper 32 registers. They +can only be accessed as double or quad, and thus only even +or quad numbered accesses are allowed. For example, %f34 +is a legal floating point register, but %f35 is not. + +

Certain V9 instructions allow access to ancillary state registers. +Most simply they can be referred to as %asrn where +n can be from 16 to 31. However, there are some aliases +defined to reference ASR registers defined for various UltraSPARC +processors: + +

    +
  • The tick compare register is referred to as %tick_cmpr. + +
  • The system tick register is referred to as %stick. An alias, +%sys_tick, exists but is deprecated and should not be used +by new software. + +
  • The system tick compare register is referred to as %stick_cmpr. +An alias, %sys_tick_cmpr, exists but is deprecated and should +not be used by new software. + +
  • The software interrupt register is referred to as %softint. + +
  • The set software interrupt register is referred to as %set_softint. +The mnemonic %softint_set is provided as an alias. + +
  • The clear software interrupt register is referred to as +%clear_softint. The mnemonic %softint_clear is provided +as an alias. + +
  • The performance instrumentation counters register is referred to as +%pic. + +
  • The performance control register is referred to as %pcr. + +
  • The graphics status register is referred to as %gsr. + +
  • The V9 dispatch control register is referred to as %dcr. +
+ +

Various V9 branch and conditional move instructions allow +specification of which set of integer condition codes to +test. These are referred to as %xcc and %icc. + +

In V9, there are 4 sets of floating point condition codes +which are referred to as %fccn. + +

Several special privileged and non-privileged registers +exist: + +

    +
  • The V9 address space identifier register is referred to as %asi. + +
  • The V9 restorable windows register is referred to as %canrestore. + +
  • The V9 savable windows register is referred to as %cansave. + +
  • The V9 clean windows register is referred to as %cleanwin. + +
  • The V9 current window pointer register is referred to as %cwp. + +
  • The floating-point queue register is referred to as %fq. + +
  • The V8 co-processor queue register is referred to as %cq. + +
  • The floating point status register is referred to as %fsr. + +
  • The other windows register is referred to as %otherwin. + +
  • The V9 program counter register is referred to as %pc. + +
  • The V9 next program counter register is referred to as %npc. + +
  • The V9 processor interrupt level register is referred to as %pil. + +
  • The V9 processor state register is referred to as %pstate. + +
  • The trap base address register is referred to as %tba. + +
  • The V9 tick register is referred to as %tick. + +
  • The V9 trap level is referred to as %tl. + +
  • The V9 trap program counter is referred to as %tpc. + +
  • The V9 trap next program counter is referred to as %tnpc. + +
  • The V9 trap state is referred to as %tstate. + +
  • The V9 trap type is referred to as %tt. + +
  • The V9 condition codes is referred to as %ccr. + +
  • The V9 floating-point registers state is referred to as %fprs. + +
  • The V9 version register is referred to as %ver. + +
  • The V9 window state register is referred to as %wstate. + +
  • The Y register is referred to as %y. + +
  • The V8 window invalid mask register is referred to as %wim. + +
  • The V8 processor state register is referred to as %psr. + +
  • The V9 global register level register is referred to as %gl. +
+ +

Several special register names exist for hypervisor mode code: + +

    +
  • The hyperprivileged processor state register is referred to as +%hpstate. + +
  • The hyperprivileged trap state register is referred to as %htstate. + +
  • The hyperprivileged interrupt pending register is referred to as +%hintp. + +
  • The hyperprivileged trap base address register is referred to as +%htba. + +
  • The hyperprivileged implementation version register is referred +to as %hver. + +
  • The hyperprivileged system tick compare register is referred +to as %hstick_cmpr. Note that there is no %hstick +register, the normal %stick is used. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dRelocs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dRelocs.html new file mode 100644 index 0000000..adc5a38 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dRelocs.html @@ -0,0 +1,179 @@ + + +Sparc-Relocs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Sparc-Constants, +Up: Sparc-Syntax +



+
+ +
9.30.3.4 Relocations
+ +

+ELF relocations are available as defined in the 32-bit and 64-bit +Sparc ELF specifications. + +

R_SPARC_HI22 is obtained using %hi and R_SPARC_LO10 +is obtained using %lo. Likewise R_SPARC_HIX22 is +obtained from %hix and R_SPARC_LOX10 is obtained +using %lox. For example: + +

     sethi %hi(symbol), %g1
+     or    %g1, %lo(symbol), %g1
+     
+     sethi %hix(symbol), %g1
+     xor   %g1, %lox(symbol), %g1
+
+

These “high” mnemonics extract bits 31:10 of their operand, +and the “low” mnemonics extract bits 9:0 of their operand. + +

V9 code model relocations can be requested as follows: + +

    +
  • R_SPARC_HH22 is requested using %hh. It can +also be generated using %uhi. +
  • R_SPARC_HM10 is requested using %hm. It can +also be generated using %ulo. +
  • R_SPARC_LM22 is requested using %lm. + +
  • R_SPARC_H44 is requested using %h44. +
  • R_SPARC_M44 is requested using %m44. +
  • R_SPARC_L44 is requested using %l44. +
+ +

The PC relative relocation R_SPARC_PC22 can be obtained by +enclosing an operand inside of %pc22. Likewise, the +R_SPARC_PC10 relocation can be obtained using %pc10. +These are mostly used when assembling PIC code. For example, the +standard PIC sequence on Sparc to get the base of the global offset +table, PC relative, into a register, can be performed as: + +

     sethi %pc22(_GLOBAL_OFFSET_TABLE_-4), %l7
+     add   %l7, %pc10(_GLOBAL_OFFSET_TABLE_+4), %l7
+
+

Several relocations exist to allow the link editor to potentially +optimize GOT data references. The R_SPARC_GOTDATA_OP_HIX22 +relocation can obtained by enclosing an operand inside of +%gdop_hix22. The R_SPARC_GOTDATA_OP_LOX10 +relocation can obtained by enclosing an operand inside of +%gdop_lox10. Likewise, R_SPARC_GOTDATA_OP can be +obtained by enclosing an operand inside of %gdop. +For example, assuming the GOT base is in register %l7: + +

     sethi %gdop_hix22(symbol), %l1
+     xor   %l1, %gdop_lox10(symbol), %l1
+     ld    [%l7 + %l1], %l2, %gdop(symbol)
+
+

There are many relocations that can be requested for access to +thread local storage variables. All of the Sparc TLS mnemonics +are supported: + +

    +
  • R_SPARC_TLS_GD_HI22 is requested using %tgd_hi22. +
  • R_SPARC_TLS_GD_LO10 is requested using %tgd_lo10. +
  • R_SPARC_TLS_GD_ADD is requested using %tgd_add. +
  • R_SPARC_TLS_GD_CALL is requested using %tgd_call. + +
  • R_SPARC_TLS_LDM_HI22 is requested using %tldm_hi22. +
  • R_SPARC_TLS_LDM_LO10 is requested using %tldm_lo10. +
  • R_SPARC_TLS_LDM_ADD is requested using %tldm_add. +
  • R_SPARC_TLS_LDM_CALL is requested using %tldm_call. + +
  • R_SPARC_TLS_LDO_HIX22 is requested using %tldo_hix22. +
  • R_SPARC_TLS_LDO_LOX10 is requested using %tldo_lox10. +
  • R_SPARC_TLS_LDO_ADD is requested using %tldo_add. + +
  • R_SPARC_TLS_IE_HI22 is requested using %tie_hi22. +
  • R_SPARC_TLS_IE_LO10 is requested using %tie_lo10. +
  • R_SPARC_TLS_IE_LD is requested using %tie_ld. +
  • R_SPARC_TLS_IE_LDX is requested using %tie_ldx. +
  • R_SPARC_TLS_IE_ADD is requested using %tie_add. + +
  • R_SPARC_TLS_LE_HIX22 is requested using %tle_hix22. +
  • R_SPARC_TLS_LE_LOX10 is requested using %tle_lox10. +
+ +

Here are some example TLS model sequences. + +

First, General Dynamic: + +

     sethi  %tgd_hi22(symbol), %l1
+     add    %l1, %tgd_lo10(symbol), %l1
+     add    %l7, %l1, %o0, %tgd_add(symbol)
+     call   __tls_get_addr, %tgd_call(symbol)
+     nop
+
+

Local Dynamic: + +

     sethi  %tldm_hi22(symbol), %l1
+     add    %l1, %tldm_lo10(symbol), %l1
+     add    %l7, %l1, %o0, %tldm_add(symbol)
+     call   __tls_get_addr, %tldm_call(symbol)
+     nop
+     
+     sethi  %tldo_hix22(symbol), %l1
+     xor    %l1, %tldo_lox10(symbol), %l1
+     add    %o0, %l1, %l1, %tldo_add(symbol)
+
+

Initial Exec: + +

     sethi  %tie_hi22(symbol), %l1
+     add    %l1, %tie_lo10(symbol), %l1
+     ld     [%l7 + %l1], %o0, %tie_ld(symbol)
+     add    %g7, %o0, %o0, %tie_add(symbol)
+     
+     sethi  %tie_hi22(symbol), %l1
+     add    %l1, %tie_lo10(symbol), %l1
+     ldx    [%l7 + %l1], %o0, %tie_ldx(symbol)
+     add    %g7, %o0, %o0, %tie_add(symbol)
+
+

And finally, Local Exec: + +

     sethi  %tle_hix22(symbol), %l1
+     add    %l1, %tle_lox10(symbol), %l1
+     add    %g7, %l1, %l1
+
+

When assembling for 64-bit, and a secondary constant addend is +specified in an address expression that would normally generate +an R_SPARC_LO10 relocation, the assembler will emit an +R_SPARC_OLO10 instead. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dSize_002dTranslations.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dSize_002dTranslations.html new file mode 100644 index 0000000..2184c3d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dSize_002dTranslations.html @@ -0,0 +1,105 @@ + + +Sparc-Size-Translations - Using as + + + + + + + + + + + + +

+

+Previous: Sparc-Relocs, +Up: Sparc-Syntax +



+
+ +
9.30.3.5 Size Translations
+ +

+Often it is desirable to write code in an operand size agnostic +manner. as provides support for this via +operand size opcode translations. Translations are supported +for loads, stores, shifts, compare-and-swap atomics, and the +clr synthetic instruction. + +

If generating 32-bit code, as will generate the +32-bit opcode. Whereas if 64-bit code is being generated, +the 64-bit opcode will be emitted. For example ldn +will be transformed into ld for 32-bit code and +ldx for 64-bit code. + +

Here is an example meant to demonstrate all the supported +opcode translations: + +

     ldn   [%o0], %o1
+     ldna  [%o0] %asi, %o2
+     stn   %o1, [%o0]
+     stna  %o2, [%o0] %asi
+     slln  %o3, 3, %o3
+     srln  %o4, 8, %o4
+     sran  %o5, 12, %o5
+     casn  [%o0], %o1, %o2
+     casna [%o0] %asi, %o1, %o2
+     clrn  %g1
+
+

In 32-bit mode as will emit: + +

     ld   [%o0], %o1
+     lda  [%o0] %asi, %o2
+     st   %o1, [%o0]
+     sta  %o2, [%o0] %asi
+     sll  %o3, 3, %o3
+     srl  %o4, 8, %o4
+     sra  %o5, 12, %o5
+     cas  [%o0], %o1, %o2
+     casa [%o0] %asi, %o1, %o2
+     clr  %g1
+
+

And in 64-bit mode as will emit: + +

     ldx   [%o0], %o1
+     ldxa  [%o0] %asi, %o2
+     stx   %o1, [%o0]
+     stxa  %o2, [%o0] %asi
+     sllx  %o3, 3, %o3
+     srlx  %o4, 8, %o4
+     srax  %o5, 12, %o5
+     casx  [%o0], %o1, %o2
+     casxa [%o0] %asi, %o1, %o2
+     clrx  %g1
+
+

Finally, the .nword translating directive is supported +as well. It is documented in the section on Sparc machine +directives. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dSyntax.html new file mode 100644 index 0000000..743b5f2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sparc_002dSyntax.html @@ -0,0 +1,62 @@ + + +Sparc-Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Sparc-Aligned-Data, +Up: Sparc-Dependent +



+
+ +

9.30.3 Sparc Syntax

+ +

The assembler syntax closely follows The Sparc Architecture Manual, +versions 8 and 9, as well as most extensions defined by Sun +for their UltraSPARC and Niagara line of processors. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Stab.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Stab.html new file mode 100644 index 0000000..7a5b91b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Stab.html @@ -0,0 +1,99 @@ + + +Stab - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Space, +Up: Pseudo Ops +



+
+ +

7.103 .stabd, .stabn, .stabs

+ +

There are three directives that begin .stab. +All emit symbols (see Symbols), for use by symbolic debuggers. +The symbols are not entered in the as hash table: they +cannot be referenced elsewhere in the source file. +Up to five fields are required: + +

+
string
This is the symbol's name. It may contain any character except +\000, so is more general than ordinary symbol names. Some +debuggers used to code arbitrarily complex structures into symbol names +using this field. + +
type
An absolute expression. The symbol's type is set to the low 8 bits of +this expression. Any bit pattern is permitted, but ld +and debuggers choke on silly bit patterns. + +
other
An absolute expression. The symbol's “other” attribute is set to the +low 8 bits of this expression. + +
desc
An absolute expression. The symbol's descriptor is set to the low 16 +bits of this expression. + +
value
An absolute expression which becomes the symbol's value. +
+ +

If a warning is detected while reading a .stabd, .stabn, +or .stabs statement, the symbol has probably already been created; +you get a half-formed symbol in your object file. This is +compatible with earlier assemblers! + + + +

.stabd type , other , desc
+The “name” of the symbol generated is not even an empty string. +It is a null pointer, for compatibility. Older assemblers used a +null pointer so they didn't waste space in object files with empty +strings. + +

The symbol's value is set to the location counter, +relocatably. When your program is linked, the value of this symbol +is the address of the location counter when the .stabd was +assembled. + +


.stabn type , other , desc , value
The name of the symbol is set to the empty string "". + +


.stabs string , type , other , desc , value
All five fields are specified. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Statements.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Statements.html new file mode 100644 index 0000000..d27b032 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Statements.html @@ -0,0 +1,89 @@ + + +Statements - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Symbol Intro, +Up: Syntax +



+
+ +

3.5 Statements

+ +

A statement ends at a newline character (\n) or line +separator character. (The line separator is usually ;, unless this +conflicts with the comment character; see Machine Dependencies.) The +newline or separator character is considered part of the preceding +statement. Newlines and separators within character constants are an +exception: they do not end statements. + +

It is an error to end any statement with end-of-file: the last +character of any input file should be a newline. + +

An empty statement is allowed, and may include whitespace. It is ignored. + +

+ + +A statement begins with zero or more labels, optionally followed by a +key symbol which determines what kind of statement it is. The key +symbol determines the syntax of the rest of the statement. If the +symbol begins with a dot . then the statement is an assembler +directive: typically valid for any computer. If the symbol begins with +a letter the statement is an assembly language instruction: it +assembles into a machine language instruction. +Different versions of as for different computers +recognize different instructions. In fact, the same symbol may +represent a different instruction in a different computer's assembly +language. + +

A label is a symbol immediately followed by a colon (:). +Whitespace before a label or after a colon is permitted, but you may not +have whitespace between a label's symbol and its colon. See Labels. + +

For HPPA targets, labels need not be immediately followed by a colon, but +the definition of a label must begin in column zero. This also implies that +only one label may be defined on each line. + +

     label:     .directive    followed by something
+     another_label:           # This is an empty statement.
+                instruction   operand_1, operand_2, ...
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/String.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/String.html new file mode 100644 index 0000000..bc60c65 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/String.html @@ -0,0 +1,69 @@ + + +String - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Stab, +Up: Pseudo Ops +



+
+ +

7.104 .string "str", .string8 "str", .string16

+ +

"str", .string32 "str", .string64 "str" + +

+Copy the characters in str to the object file. You may specify more than +one string to copy, separated by commas. Unless otherwise specified for a +particular machine, the assembler marks the end of each string with a 0 byte. +You can use any of the escape sequences described in Strings. + +

The variants string16, string32 and string64 differ from +the string pseudo opcode in that each 8-bit character from str is +copied and expanded to 16, 32 or 64 bits respectively. The expanded characters +are stored in target endianness byte order. + +

Example: +

     	.string32 "BYE"
+     expands to:
+     	.string   "B\0\0\0Y\0\0\0E\0\0\0"  /* On little endian targets.  */
+     	.string   "\0\0\0B\0\0\0Y\0\0\0E"  /* On big endian targets.  */
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Strings.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Strings.html new file mode 100644 index 0000000..e8701e3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Strings.html @@ -0,0 +1,113 @@ + + +Strings - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Characters +



+
+ +
3.6.1.1 Strings
+ +

A string is written between double-quotes. It may contain +double-quotes or null characters. The way to get special characters +into a string is to escape these characters: precede them with +a backslash \ character. For example \\ represents +one backslash: the first \ is an escape which tells +as to interpret the second character literally as a backslash +(which prevents as from recognizing the second \ as an +escape character). The complete list of escapes follows. + +

+

+ + +
\b
Mnemonic for backspace; for ASCII this is octal code 010. + + + +


\f
Mnemonic for FormFeed; for ASCII this is octal code 014. + +


\n
Mnemonic for newline; for ASCII this is octal code 012. + + + +


\r
Mnemonic for carriage-Return; for ASCII this is octal code 015. + + + + +


\t
Mnemonic for horizontal Tab; for ASCII this is octal code 011. + + + + + +


\ digit digit digit
An octal character code. The numeric code is 3 octal digits. +For compatibility with other Unix systems, 8 and 9 are accepted as digits: +for example, \008 has the value 010, and \009 the value 011. + +


\x hex-digits...
A hex character code. All trailing hex digits are combined. Either upper or +lower case x works. + +


\\
Represents one \ character. + + + + + + +


\"
Represents one " character. Needed in strings to represent +this character, because an unescaped " would end the string. + +
\ anything-else
Any other character when escaped by \ gives a warning, but +assembles as if the \ was not present. The idea is that if +you used an escape sequence you clearly didn't want the literal +interpretation of the following character. However as has no +other interpretation, so as knows it is giving you the wrong +code and warns you of the fact. +
+ +

Which characters are escapable, and what those escapes represent, +varies widely among assemblers. The current set is what we think +the BSD 4.2 assembler recognizes, and is a subset of what most C +compilers recognize. If you are in doubt, do not use an escape +sequence. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Struct.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Struct.html new file mode 100644 index 0000000..1521aa4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Struct.html @@ -0,0 +1,65 @@ + + +Struct - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: String, +Up: Pseudo Ops +



+
+ +

7.105 .struct expression

+ +

Switch to the absolute section, and set the section offset to expression, +which must be an absolute expression. You might use this as follows: +

             .struct 0
+     field1:
+             .struct field1 + 4
+     field2:
+             .struct field2 + 4
+     field3:
+
+

This would define the symbol field1 to have the value 0, the symbol +field2 to have the value 4, and the symbol field3 to have the +value 8. Assembly would be left in the absolute section, and you would need to +use a .section directive of some sort to change to some other section +before further assembly. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SubSection.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SubSection.html new file mode 100644 index 0000000..fb5000d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/SubSection.html @@ -0,0 +1,59 @@ + + +SubSection - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Struct, +Up: Pseudo Ops +



+
+ +

7.106 .subsection name

+ +

This is one of the ELF section stack manipulation directives. The others are +.section (see Section), .pushsection (see PushSection), +.popsection (see PopSection), and .previous +(see Previous). + +

This directive replaces the current subsection with name. The current +section is not changed. The replaced subsection is put onto the section stack +in place of the then current top of stack subsection. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sub_002dSections.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sub_002dSections.html new file mode 100644 index 0000000..2b5d645 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Sub_002dSections.html @@ -0,0 +1,113 @@ + + +Sub-Sections - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: As Sections, +Up: Sections +



+
+ +

4.4 Sub-Sections

+ +

Assembled bytes +conventionally +fall into two sections: text and data. +You may have separate groups of +data in named sections +that you want to end up near to each other in the object file, even though they +are not contiguous in the assembler source. as allows you to +use subsections for this purpose. Within each section, there can be +numbered subsections with values from 0 to 8192. Objects assembled into the +same subsection go into the object file together with other objects in the same +subsection. For example, a compiler might want to store constants in the text +section, but might not want to have them interspersed with the program being +assembled. In this case, the compiler could issue a .text 0 before each +section of code being output, and a .text 1 before each group of +constants being output. + +

Subsections are optional. If you do not use subsections, everything +goes in subsection number zero. + +

Each subsection is zero-padded up to a multiple of four bytes. +(Subsections may be padded a different amount on different flavors +of as.) + +

Subsections appear in your object file in numeric order, lowest numbered +to highest. (All this to be compatible with other people's assemblers.) +The object file contains no representation of subsections; ld and +other programs that manipulate object files see no trace of them. +They just see all your text subsections as a text section, and all your +data subsections as a data section. + +

To specify which subsection you want subsequent statements assembled +into, use a numeric argument to specify it, in a .text +expression or a .data expression statement. +When generating COFF output, you +can also use an extra subsection +argument with arbitrary named sections: .section name, +expression. +When generating ELF output, you +can also use the .subsection directive (see SubSection) +to specify a subsection: .subsection expression. +Expression should be an absolute expression +(see Expressions). If you just say .text then .text 0 +is assumed. Likewise .data means .data 0. Assembly +begins in text 0. For instance: +

     .text 0     # The default subsection is text 0 anyway.
+     .ascii "This lives in the first text subsection. *"
+     .text 1
+     .ascii "But this lives in the second text subsection."
+     .data 0
+     .ascii "This lives in the data section,"
+     .ascii "in the first data subsection."
+     .text 0
+     .ascii "This lives in the first text section,"
+     .ascii "immediately following the asterisk (*)."
+
+

Each section has a location counter incremented by one for every byte +assembled into that section. Because subsections are merely a convenience +restricted to as there is no concept of a subsection location +counter. There is no way to directly manipulate a location counter—but the +.align directive changes it, and any label definition captures its +current value. The location counter of the section where statements are being +assembled is said to be the active location counter. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Attributes.html new file mode 100644 index 0000000..43d0148 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Attributes.html @@ -0,0 +1,68 @@ + + +Symbol Attributes - Using as + + + + + + + + + + + + +

+

+Previous: Dot, +Up: Symbols +



+
+ +

5.5 Symbol Attributes

+ +

Every symbol has, as well as its name, the attributes “Value” and +“Type”. Depending on output format, symbols can also have auxiliary +attributes. + +

If you use a symbol without defining it, as assumes zero for +all these attributes, and probably won't warn you. This makes the +symbol an externally defined symbol, which is generally what you +would want. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Desc.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Desc.html new file mode 100644 index 0000000..c995a90 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Desc.html @@ -0,0 +1,53 @@ + + +Symbol Desc - Using as + + + + + + + + + + + + +
+

+Next: , +Up: a.out Symbols +



+
+ +
5.5.3.1 Descriptor
+ +

This is an arbitrary 16-bit value. You may establish a symbol's +descriptor value by using a .desc statement +(see .desc). A descriptor value means nothing to +as. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Intro.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Intro.html new file mode 100644 index 0000000..1f1eb06 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Intro.html @@ -0,0 +1,62 @@ + + +Symbol Intro - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Comments, +Up: Syntax +



+
+ +

3.4 Symbols

+ +

A symbol is one or more characters chosen from the set of all +letters (both upper and lower case), digits and the three characters +_.$. +On most machines, you can also use $ in symbol names; exceptions +are noted in Machine Dependencies. +No symbol may begin with a digit. Case is significant. +There is no length limit: all characters are significant. Symbols are +delimited by characters not in that set, or by the beginning of a file +(since the source program must end with a newline, the end of a file is +not a possible symbol delimiter). See Symbols. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Names.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Names.html new file mode 100644 index 0000000..7ed9226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Names.html @@ -0,0 +1,158 @@ + + +Symbol Names - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Setting Symbols, +Up: Symbols +



+
+ +

5.3 Symbol Names

+ +

Symbol names begin with a letter or with one of ._. On most +machines, you can also use $ in symbol names; exceptions are +noted in Machine Dependencies. That character may be followed by any +string of digits, letters, dollar signs (unless otherwise noted for a +particular target machine), and underscores. + +

Case of letters is significant: foo is a different symbol name +than Foo. + +

Each symbol has exactly one name. Each name in an assembly language program +refers to exactly one symbol. You may use that symbol name any number of times +in a program. + +

Local Symbol Names

+ +

A local symbol is any symbol beginning with certain local label prefixes. +By default, the local label prefix is .L for ELF systems or +L for traditional a.out systems, but each target may have its own +set of local label prefixes. +On the HPPA local symbols begin with L$. + +

Local symbols are defined and used within the assembler, but they are +normally not saved in object files. Thus, they are not visible when debugging. +You may use the -L option (see Include Local Symbols: -L) to retain the local symbols in the object files. + +

Local Labels

+ +

Local labels help compilers and programmers use names temporarily. +They create symbols which are guaranteed to be unique over the entire scope of +the input source code and which can be referred to by a simple notation. +To define a local label, write a label of the form N: (where N +represents any positive integer). To refer to the most recent previous +definition of that label write Nb, using the same number as when +you defined the label. To refer to the next definition of a local label, write +Nf—the b stands for “backwards” and the f stands +for “forwards”. + +

There is no restriction on how you can use these labels, and you can reuse them +too. So that it is possible to repeatedly define the same local label (using +the same number N), although you can only refer to the most recently +defined local label of that number (for a backwards reference) or the next +definition of a specific local label for a forward reference. It is also worth +noting that the first 10 local labels (0:...9:) are +implemented in a slightly more efficient manner than the others. + +

Here is an example: + +

     1:        branch 1f
+     2:        branch 1b
+     1:        branch 2f
+     2:        branch 1b
+
+

Which is the equivalent of: + +

     label_1:  branch label_3
+     label_2:  branch label_1
+     label_3:  branch label_4
+     label_4:  branch label_3
+
+

Local label names are only a notational device. They are immediately +transformed into more conventional symbol names before the assembler uses them. +The symbol names are stored in the symbol table, appear in error messages, and +are optionally emitted to the object file. The names are constructed using +these parts: + +

+
local label prefix
All local symbols begin with the system-specific local label prefix. +Normally both as and ld forget symbols +that start with the local label prefix. These labels are +used for symbols you are never intended to see. If you use the +-L option then as retains these symbols in the +object file. If you also instruct ld to retain these symbols, +you may use them in debugging. + +
number
This is the number that was used in the local label definition. So if the +label is written 55: then the number is 55. + +
C-B
This unusual character is included so you do not accidentally invent a symbol +of the same name. The character has ASCII value of \002 (control-B). + +
ordinal number
This is a serial number to keep the labels distinct. The first definition of +0: gets the number 1. The 15th definition of 0: gets the +number 15, and so on. Likewise the first definition of 1: gets +the number 1 and its 15th definition gets 15 as well. +
+ +

So for example, the first 1: may be named .L1C-B1, and +the 44th 3: may be named .L3C-B44. + +

Dollar Local Labels

+ +

+as also supports an even more local form of local labels called +dollar labels. These labels go out of scope (i.e., they become undefined) as +soon as a non-local label is defined. Thus they remain valid for only a small +region of the input source code. Normal local labels, by contrast, remain in +scope for the entire file, or until they are redefined by another occurrence of +the same local label. + +

Dollar labels are defined in exactly the same way as ordinary local labels, +except that instead of being terminated by a colon, they are terminated by a +dollar sign, e.g., 55$. + +

They can also be distinguished from ordinary local labels by their transformed +names which use ASCII character \001 (control-A) as the magic character +to distinguish them from ordinary labels. For example, the fifth definition of +6$ may be named .L6C-A5. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Other.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Other.html new file mode 100644 index 0000000..9ee91b9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Other.html @@ -0,0 +1,50 @@ + + +Symbol Other - Using as + + + + + + + + + + + + +

+

+Previous: Symbol Desc, +Up: a.out Symbols +



+
+ +
5.5.3.2 Other
+ +

This is an arbitrary 8-bit value. It means nothing to as. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Type.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Type.html new file mode 100644 index 0000000..a409564 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Type.html @@ -0,0 +1,55 @@ + + +Symbol Type - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Symbol Value, +Up: Symbol Attributes +



+
+ +

5.5.2 Type

+ +

The type attribute of a symbol contains relocation (section) +information, any flag settings indicating that a symbol is external, and +(optionally), other information for linkers and debuggers. The exact +format depends on the object-code output format in use. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Value.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Value.html new file mode 100644 index 0000000..5c9e6e4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbol-Value.html @@ -0,0 +1,65 @@ + + +Symbol Value - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Symbol Attributes +



+
+ +

5.5.1 Value

+ +

The value of a symbol is (usually) 32 bits. For a symbol which labels a +location in the text, data, bss or absolute sections the value is the +number of addresses from the start of that section to the label. +Naturally for text, data and bss sections the value of a symbol changes +as ld changes section base addresses during linking. Absolute +symbols' values do not change during linking: that is why they are +called absolute. + +

The value of an undefined symbol is treated in a special way. If it is +0 then the symbol is not defined in this assembler source file, and +ld tries to determine its value from other files linked into the +same program. You make this kind of symbol simply by mentioning a symbol +name without defining it. A non-zero value represents a .comm +common declaration. The value is how much common storage to reserve, in +bytes (addresses). The symbol refers to the first address of the +allocated storage. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbols.html new file mode 100644 index 0000000..b0b09c6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symbols.html @@ -0,0 +1,66 @@ + + +Symbols - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Sections, +Up: Top +



+
+ +

5 Symbols

+ +

Symbols are a central concept: the programmer uses symbols to name +things, the linker uses symbols to link, and the debugger uses symbols +to debug. + +

+Warning: as does not place symbols in the object file in +the same order they were declared. This may break some debuggers. +
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symver.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symver.html new file mode 100644 index 0000000..c0cf236 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Symver.html @@ -0,0 +1,96 @@ + + +Symver - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: SubSection, +Up: Pseudo Ops +



+
+ +

7.107 .symver

+ +

Use the .symver directive to bind symbols to specific version nodes +within a source file. This is only supported on ELF platforms, and is +typically used when assembling files to be linked into a shared library. +There are cases where it may make sense to use this in objects to be bound +into an application itself so as to override a versioned symbol from a +shared library. + +

For ELF targets, the .symver directive can be used like this: +

     .symver name, name2@nodename
+
+

If the symbol name is defined within the file +being assembled, the .symver directive effectively creates a symbol +alias with the name name2@nodename, and in fact the main reason that we +just don't try and create a regular alias is that the @ character isn't +permitted in symbol names. The name2 part of the name is the actual name +of the symbol by which it will be externally referenced. The name name +itself is merely a name of convenience that is used so that it is possible to +have definitions for multiple versions of a function within a single source +file, and so that the compiler can unambiguously know which version of a +function is being mentioned. The nodename portion of the alias should be +the name of a node specified in the version script supplied to the linker when +building a shared library. If you are attempting to override a versioned +symbol from a shared library, then nodename should correspond to the +nodename of the symbol you are trying to override. + +

If the symbol name is not defined within the file being assembled, all +references to name will be changed to name2@nodename. If no +reference to name is made, name2@nodename will be removed from the +symbol table. + +

Another usage of the .symver directive is: +

     .symver name, name2@@nodename
+
+

In this case, the symbol name must exist and be defined within +the file being assembled. It is similar to name2@nodename. The +difference is name2@@nodename will also be used to resolve +references to name2 by the linker. + +

The third usage of the .symver directive is: +

     .symver name, name2@@@nodename
+
+

When name is not defined within the +file being assembled, it is treated as name2@nodename. When +name is defined within the file being assembled, the symbol +name, name, will be changed to name2@@nodename. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Syntax.html new file mode 100644 index 0000000..e203fa3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Syntax.html @@ -0,0 +1,63 @@ + + +Syntax - Using as + + + + + + + + + + + + +

+

+Next: , +Previous: Invoking, +Up: Top +



+
+ +

3 Syntax

+ +

This chapter describes the machine-independent syntax allowed in a +source file. as syntax is similar to what many other +assemblers use; it is inspired by the BSD 4.2 +assembler, except that as does not assemble Vax bit-fields. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dBlock.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dBlock.html new file mode 100644 index 0000000..ffdf9b4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dBlock.html @@ -0,0 +1,55 @@ + + +TIC54X-Block - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: TIC54X-Opts, +Up: TIC54X-Dependent +



+
+ +

9.31.2 Blocking

+ +

A blocked section or memory block is guaranteed not to cross the blocking +boundary (usually a page, or 128 words) if it is smaller than the +blocking size, or to start on a page boundary if it is larger than the +blocking size. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dBuiltins.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dBuiltins.html new file mode 100644 index 0000000..b901b85 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dBuiltins.html @@ -0,0 +1,118 @@ + + +TIC54X-Builtins - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: TIC54X-Locals, +Up: TIC54X-Dependent +



+
+ +

9.31.7 Math Builtins

+ +

+The following built-in functions may be used to generate a +floating-point value. All return a floating-point value except +$cvi, $int, and $sgn, which return an integer +value. + + + +

$acos(expr)
Returns the floating point arccosine of expr. + +


$asin(expr)
Returns the floating point arcsine of expr. + +


$atan(expr)
Returns the floating point arctangent of expr. + +


$atan2(expr1,expr2)
Returns the floating point arctangent of expr1 / expr2. + +


$ceil(expr)
Returns the smallest integer not less than expr as floating point. + +


$cosh(expr)
Returns the floating point hyperbolic cosine of expr. + +


$cos(expr)
Returns the floating point cosine of expr. + +


$cvf(expr)
Returns the integer value expr converted to floating-point. + +


$cvi(expr)
Returns the floating point value expr converted to integer. + +


$exp(expr)
Returns the floating point value e ^ expr. + +


$fabs(expr)
Returns the floating point absolute value of expr. + +


$floor(expr)
Returns the largest integer that is not greater than expr as +floating point. + +


$fmod(expr1,expr2)
Returns the floating point remainder of expr1 / expr2. + +


$int(expr)
Returns 1 if expr evaluates to an integer, zero otherwise. + +


$ldexp(expr1,expr2)
Returns the floating point value expr1 * 2 ^ expr2. + +


$log10(expr)
Returns the base 10 logarithm of expr. + +


$log(expr)
Returns the natural logarithm of expr. + +


$max(expr1,expr2)
Returns the floating point maximum of expr1 and expr2. + +


$min(expr1,expr2)
Returns the floating point minimum of expr1 and expr2. + +


$pow(expr1,expr2)
Returns the floating point value expr1 ^ expr2. + +


$round(expr)
Returns the nearest integer to expr as a floating point number. + +


$sgn(expr)
Returns -1, 0, or 1 based on the sign of expr. + +


$sin(expr)
Returns the floating point sine of expr. + +


$sinh(expr)
Returns the floating point hyperbolic sine of expr. + +


$sqrt(expr)
Returns the floating point square root of expr. + +


$tan(expr)
Returns the floating point tangent of expr. + +


$tanh(expr)
Returns the floating point hyperbolic tangent of expr. + +


$trunc(expr)
Returns the integer value of expr truncated towards zero as +floating point. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dConstants.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dConstants.html new file mode 100644 index 0000000..abc6cb6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dConstants.html @@ -0,0 +1,58 @@ + + +TIC54X-Constants - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: TIC54X-Env, +Up: TIC54X-Dependent +



+
+ +

9.31.4 Constants Syntax

+ +

The TIC54X version of as allows the following additional +constant formats, using a suffix to indicate the radix: +

     
+     Binary                  000000B, 011000b
+     Octal                   10Q, 224q
+     Hexadecimal             45h, 0FH
+     
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dDependent.html new file mode 100644 index 0000000..7329cee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dDependent.html @@ -0,0 +1,66 @@ + + +TIC54X-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Sparc-Dependent, +Up: Machine Dependencies +



+
+ +

9.31 TIC54X Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dDirectives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dDirectives.html new file mode 100644 index 0000000..c008a48 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dDirectives.html @@ -0,0 +1,237 @@ + + +TIC54X-Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: TIC54X-Ext, +Up: TIC54X-Dependent +



+
+ +

9.31.9 Directives

+ +

+ + + +

.align [size]
.even
Align the section program counter on the next boundary, based on +size. size may be any power of 2. .even is +equivalent to .align with a size of 2. +
+
1
Align SPC to word boundary +
2
Align SPC to longword boundary (same as .even) +
128
Align SPC to page boundary +
+ +


.asg string, name
Assign name the string string. String replacement is +performed on string before assignment. + +

.eval string, name
Evaluate the contents of string string and assign the result as a +string to the subsym name. String replacement is performed on +string before assignment. + +


.bss symbol, size [, [blocking_flag] [,alignment_flag]]
Reserve space for symbol in the .bss section. size is in +words. If present, blocking_flag indicates the allocated space +should be aligned on a page boundary if it would otherwise cross a page +boundary. If present, alignment_flag causes the assembler to +allocate size on a long word boundary. + +


.byte value [,...,value_n]
.ubyte value [,...,value_n]
.char value [,...,value_n]
.uchar value [,...,value_n]
Place one or more bytes into consecutive words of the current section. +The upper 8 bits of each word is zero-filled. If a label is used, it +points to the word allocated for the first byte encountered. + +


.clink ["section_name"]
Set STYP_CLINK flag for this section, which indicates to the linker that +if no symbols from this section are referenced, the section should not +be included in the link. If section_name is omitted, the current +section is used. + +


.c_mode
TBD. + +


.copy "filename" | filename
.include "filename" | filename
Read source statements from filename. The normal include search +path is used. Normally .copy will cause statements from the included +file to be printed in the assembly listing and .include will not, but +this distinction is not currently implemented. + +


.data
Begin assembling code into the .data section. + +


.double value [,...,value_n]
.ldouble value [,...,value_n]
.float value [,...,value_n]
.xfloat value [,...,value_n]
Place an IEEE single-precision floating-point representation of one or +more floating-point values into the current section. All but +.xfloat align the result on a longword boundary. Values are +stored most-significant word first. + +


.drlist
.drnolist
Control printing of directives to the listing file. Ignored. + +


.emsg string
.mmsg string
.wmsg string
Emit a user-defined error, message, or warning, respectively. + +


.far_mode
Use extended addressing when assembling statements. This should appear +only once per file, and is equivalent to the -mfar-mode option see -mfar-mode. + +


.fclist
.fcnolist
Control printing of false conditional blocks to the listing file. + +


.field value [,size]
Initialize a bitfield of size bits in the current section. If +value is relocatable, then size must be 16. size +defaults to 16 bits. If value does not fit into size bits, +the value will be truncated. Successive .field directives will +pack starting at the current word, filling the most significant bits +first, and aligning to the start of the next word if the field size does +not fit into the space remaining in the current word. A .align +directive with an operand of 1 will force the next .field +directive to begin packing into a new word. If a label is used, it +points to the word that contains the specified field. + +


.global symbol [,...,symbol_n]
.def symbol [,...,symbol_n]
.ref symbol [,...,symbol_n]
.def nominally identifies a symbol defined in the current file +and available to other files. .ref identifies a symbol used in +the current file but defined elsewhere. Both map to the standard +.global directive. + +


.half value [,...,value_n]
.uhalf value [,...,value_n]
.short value [,...,value_n]
.ushort value [,...,value_n]
.int value [,...,value_n]
.uint value [,...,value_n]
.word value [,...,value_n]
.uword value [,...,value_n]
Place one or more values into consecutive words of the current section. +If a label is used, it points to the word allocated for the first value +encountered. + +


.label symbol
Define a special symbol to refer to the load time address of the +current section program counter. + +


.length
.width
Set the page length and width of the output listing file. Ignored. + +


.list
.nolist
Control whether the source listing is printed. Ignored. + +


.long value [,...,value_n]
.ulong value [,...,value_n]
.xlong value [,...,value_n]
Place one or more 32-bit values into consecutive words in the current +section. The most significant word is stored first. .long and +.ulong align the result on a longword boundary; xlong does +not. + +


.loop [count]
.break [condition]
.endloop
Repeatedly assemble a block of code. .loop begins the block, and +.endloop marks its termination. count defaults to 1024, +and indicates the number of times the block should be repeated. +.break terminates the loop so that assembly begins after the +.endloop directive. The optional condition will cause the +loop to terminate only if it evaluates to zero. + +


macro_name .macro [param1][,...param_n]
[.mexit]
.endm
See the section on macros for more explanation (See TIC54X-Macros. + +


.mlib "filename" | filename
Load the macro library filename. filename must be an +archived library (BFD ar-compatible) of text files, expected to contain +only macro definitions. The standard include search path is used. + +


.mlist
.mnolist
Control whether to include macro and loop block expansions in the +listing output. Ignored. + +


.mmregs
Define global symbolic names for the 'c54x registers. Supposedly +equivalent to executing .set directives for each register with +its memory-mapped value, but in reality is provided only for +compatibility and does nothing. + +


.newblock
This directive resets any TIC54X local labels currently defined. Normal +as local labels are unaffected. + +


.option option_list
Set listing options. Ignored. + +


.sblock "section_name" | section_name [,"name_n" | name_n]
Designate section_name for blocking. Blocking guarantees that a +section will start on a page boundary (128 words) if it would otherwise +cross a page boundary. Only initialized sections may be designated with +this directive. See also See TIC54X-Block. + +


.sect "section_name"
Define a named initialized section and make it the current section. + +


symbol .set "value"
symbol .equ "value"
Equate a constant value to a symbol, which is placed in the +symbol table. symbol may not be previously defined. + +


.space size_in_bits
.bes size_in_bits
Reserve the given number of bits in the current section and zero-fill +them. If a label is used with .space, it points to the +first word reserved. With .bes, the label points to the +last word reserved. + +


.sslist
.ssnolist
Controls the inclusion of subsym replacement in the listing output. Ignored. + +


.string "string" [,...,"string_n"]
.pstring "string" [,...,"string_n"]
Place 8-bit characters from string into the current section. +.string zero-fills the upper 8 bits of each word, while +.pstring puts two characters into each word, filling the +most-significant bits first. Unused space is zero-filled. If a label +is used, it points to the first word initialized. + +


[stag] .struct [offset]
[name_1] element [count_1]
[name_2] element [count_2]
[tname] .tag stagx [tcount]
...
[name_n] element [count_n]
[ssize] .endstruct
label .tag [stag]
Assign symbolic offsets to the elements of a structure. stag +defines a symbol to use to reference the structure. offset +indicates a starting value to use for the first element encountered; +otherwise it defaults to zero. Each element can have a named offset, +name, which is a symbol assigned the value of the element's offset +into the structure. If stag is missing, these become global +symbols. count adjusts the offset that many times, as if +element were an array. element may be one of +.byte, .word, .long, .float, or any +equivalent of those, and the structure offset is adjusted accordingly. +.field and .string are also allowed; the size of +.field is one bit, and .string is considered to be one +word in size. Only element descriptors, structure/union tags, +.align and conditional assembly directives are allowed within +.struct/.endstruct. .align aligns member offsets +to word boundaries only. ssize, if provided, will always be +assigned the size of the structure. + +

The .tag directive, in addition to being used to define a +structure/union element within a structure, may be used to apply a +structure to a symbol. Once applied to label, the individual +structure elements may be applied to label to produce the desired +offsets using label as the structure base. + +


.tab
Set the tab size in the output listing. Ignored. + +


[utag] .union
[name_1] element [count_1]
[name_2] element [count_2]
[tname] .tag utagx[,tcount]
...
[name_n] element [count_n]
[usize] .endstruct
label .tag [utag]
Similar to .struct, but the offset after each element is reset to +zero, and the usize is set to the maximum of all defined elements. +Starting offset for the union is always zero. + +


[symbol] .usect "section_name", size, [,[blocking_flag] [,alignment_flag]]
Reserve space for variables in a named, uninitialized section (similar to +.bss). .usect allows definitions sections independent of .bss. +symbol points to the first location reserved by this allocation. +The symbol may be used as a variable name. size is the allocated +size in words. blocking_flag indicates whether to block this +section on a page boundary (128 words) (see TIC54X-Block). +alignment flag indicates whether the section should be +longword-aligned. + +


.var sym[,..., sym_n]
Define a subsym to be a local variable within a macro. See +See TIC54X-Macros. + +


.version version
Set which processor to build instructions for. Though the following +values are accepted, the op is ignored. +
+
541
542
543
545
545LP
546LP
548
549
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dEnv.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dEnv.html new file mode 100644 index 0000000..223556e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dEnv.html @@ -0,0 +1,54 @@ + + +TIC54X-Env - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: TIC54X-Block, +Up: TIC54X-Dependent +



+
+ +

9.31.3 Environment Settings

+ +

C54XDSP_DIR and A_DIR are semicolon-separated +paths which are added to the list of directories normally searched for +source and include files. C54XDSP_DIR will override A_DIR. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dExt.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dExt.html new file mode 100644 index 0000000..d61dd58 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dExt.html @@ -0,0 +1,58 @@ + + +TIC54X-Ext - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: TIC54X-Builtins, +Up: TIC54X-Dependent +



+
+ +

9.31.8 Extended Addressing

+ +

The LDX pseudo-op is provided for loading the extended addressing bits +of a label or address. For example, if an address _label resides +in extended program memory, the value of _label may be loaded as +follows: +

      ldx     #_label,16,a    ; loads extended bits of _label
+      or      #_label,a       ; loads lower 16 bits of _label
+      bacc    a               ; full address is in accumulator A
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dLocals.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dLocals.html new file mode 100644 index 0000000..2723445 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dLocals.html @@ -0,0 +1,68 @@ + + +TIC54X-Locals - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: TIC54X-Subsyms, +Up: TIC54X-Dependent +



+
+ +

9.31.6 Local Labels

+ +

Local labels may be defined in two ways: + +

    +
  • $N, where N is a decimal number between 0 and 9 +
  • LABEL?, where LABEL is any legal symbol name. +
+ +

Local labels thus defined may be redefined or automatically generated. +The scope of a local label is based on when it may be undefined or reset. +This happens when one of the following situations is encountered: + +

    +
  • .newblock directive see .newblock +
  • The current section is changed (.sect, .text, or .data) +
  • Entering or leaving an included file +
  • The macro scope where the label was defined is exited +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dMMRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dMMRegs.html new file mode 100644 index 0000000..21375f1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dMMRegs.html @@ -0,0 +1,55 @@ + + +TIC54X-MMRegs - Using as + + + + + + + + + + + + +
+

+Previous: TIC54X-Macros, +Up: TIC54X-Dependent +



+
+ +

9.31.11 Memory-mapped Registers

+ +

The following symbols are recognized as memory-mapped registers: + +

+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dMacros.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dMacros.html new file mode 100644 index 0000000..fe84240 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dMacros.html @@ -0,0 +1,96 @@ + + +TIC54X-Macros - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: TIC54X-Directives, +Up: TIC54X-Dependent +



+
+ +

9.31.10 Macros

+ +

Macros do not require explicit dereferencing of arguments (i.e., \ARG). + +

During macro expansion, the macro parameters are converted to subsyms. +If the number of arguments passed the macro invocation exceeds the +number of parameters defined, the last parameter is assigned the string +equivalent of all remaining arguments. If fewer arguments are given +than parameters, the missing parameters are assigned empty strings. To +include a comma in an argument, you must enclose the argument in quotes. + +

The following built-in subsym functions allow examination of the string +value of subsyms (or ordinary strings). The arguments are strings +unless otherwise indicated (subsyms passed as args will be replaced by +the strings they represent). + + +

$symlen(str)
Returns the length of str. + +


$symcmp(str1,str2)
Returns 0 if str1 == str2, non-zero otherwise. + +


$firstch(str,ch)
Returns index of the first occurrence of character constant ch in +str. + +


$lastch(str,ch)
Returns index of the last occurrence of character constant ch in +str. + +


$isdefed(symbol)
Returns zero if the symbol symbol is not in the symbol table, +non-zero otherwise. + +


$ismember(symbol,list)
Assign the first member of comma-separated string list to +symbol; list is reassigned the remainder of the list. Returns +zero if list is a null string. Both arguments must be subsyms. + +


$iscons(expr)
Returns 1 if string expr is binary, 2 if octal, 3 if hexadecimal, +4 if a character, 5 if decimal, and zero if not an integer. + +


$isname(name)
Returns 1 if name is a valid symbol name, zero otherwise. + +


$isreg(reg)
Returns 1 if reg is a valid predefined register name (AR0-AR7 only). + +


$structsz(stag)
Returns the size of the structure or union represented by stag. + +


$structacc(stag)
Returns the reference point of the structure or union represented by +stag. Always returns zero. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dOpts.html new file mode 100644 index 0000000..e3ecb8b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dOpts.html @@ -0,0 +1,68 @@ + + +TIC54X-Opts - Using as + + + + + + + + + + + + +
+

+Next: , +Up: TIC54X-Dependent +



+
+ +

9.31.1 Options

+ +

The TMS320C54X version of as has a few machine-dependent options. + +

You can use the -mfar-mode option to enable extended addressing mode. +All addresses will be assumed to be > 16 bits, and the appropriate +relocation types will be used. This option is equivalent to using the +.far_mode directive in the assembly code. If you do not use the +-mfar-mode option, all references will be assumed to be 16 bits. +This option may be abbreviated to -mf. + +

You can use the -mcpu option to specify a particular CPU. +This option is equivalent to using the .version directive in the +assembly code. For recognized CPU codes, see +See .version. The default CPU version is +542. + +

You can use the -merrors-to-file option to redirect error output +to a file (this provided for those deficient environments which don't +provide adequate output redirection). This option may be abbreviated to +-me. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dSubsyms.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dSubsyms.html new file mode 100644 index 0000000..a6f54df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/TIC54X_002dSubsyms.html @@ -0,0 +1,98 @@ + + +TIC54X-Subsyms - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: TIC54X-Constants, +Up: TIC54X-Dependent +



+
+ +

9.31.5 String Substitution

+ +

A subset of allowable symbols (which we'll call subsyms) may be assigned +arbitrary string values. This is roughly equivalent to C preprocessor +#define macros. When as encounters one of these +symbols, the symbol is replaced in the input stream by its string value. +Subsym names must begin with a letter. + +

Subsyms may be defined using the .asg and .eval directives +(See .asg, +See .eval. + +

Expansion is recursive until a previously encountered symbol is seen, at +which point substitution stops. + +

In this example, x is replaced with SYM2; SYM2 is replaced with SYM1, and SYM1 +is replaced with x. At this point, x has already been encountered +and the substitution stops. + +

      .asg   "x",SYM1
+      .asg   "SYM1",SYM2
+      .asg   "SYM2",x
+      add    x,a             ; final code assembled is "add  x, a"
+
+

Macro parameters are converted to subsyms; a side effect of this is the normal +as '\ARG' dereferencing syntax is unnecessary. Subsyms +defined within a macro will have global scope, unless the .var +directive is used to identify the subsym as a local macro variable +see .var. + +

Substitution may be forced in situations where replacement might be +ambiguous by placing colons on either side of the subsym. The following +code: + +

      .eval  "10",x
+     LAB:X:  add     #x, a
+
+

When assembled becomes: + +

     LAB10  add     #10, a
+
+

Smaller parts of the string assigned to a subsym may be accessed with +the following syntax: + +

+
:symbol(char_index):
Evaluates to a single-character string, the character at char_index. +
:symbol(start,length):
Evaluates to a substring of symbol beginning at start with +length length. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Tag.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Tag.html new file mode 100644 index 0000000..3069cef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Tag.html @@ -0,0 +1,55 @@ + + +Tag - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Symver, +Up: Pseudo Ops +



+
+ +

7.108 .tag structname

+ +

This directive is generated by compilers to include auxiliary debugging +information in the symbol table. It is only permitted inside +.def/.endef pairs. Tags are used to link structure +definitions in the symbol table with instances of those structures. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Text.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Text.html new file mode 100644 index 0000000..c721fd6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Text.html @@ -0,0 +1,55 @@ + + +Text - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Tag, +Up: Pseudo Ops +



+
+ +

7.109 .text subsection

+ +

Tells as to assemble the following statements onto the end of +the text subsection numbered subsection, which is an absolute +expression. If subsection is omitted, subsection number zero +is used. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Title.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Title.html new file mode 100644 index 0000000..fedb545 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Title.html @@ -0,0 +1,56 @@ + + +Title - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Text, +Up: Pseudo Ops +



+
+ +

7.110 .title "heading"

+ +

Use heading as the title (second line, immediately after the +source file name and pagenumber) when generating assembly listings. + +

This directive affects subsequent pages, as well as the current page if +it appears within ten lines of the top of a page. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Transform-Directive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Transform-Directive.html new file mode 100644 index 0000000..d0f99ca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Transform-Directive.html @@ -0,0 +1,64 @@ + + +Transform Directive - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Longcalls Directive, +Up: Xtensa Directives +



+
+ +
9.36.5.3 transform
+ +

+This directive enables or disables all assembler transformation, +including relaxation (see Xtensa Relaxation) and +optimization (see Xtensa Optimizations). + +

         .begin [no-]transform
+         .end [no-]transform
+
+

Transformations are enabled by default unless the --no-transform +option is used. The transform directive overrides the default +determined by the command-line options. An underscore opcode prefix, +disabling transformation of that opcode, always takes precedence over +both directives and command-line flags. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Type.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Type.html new file mode 100644 index 0000000..229e687 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Type.html @@ -0,0 +1,104 @@ + + +Type - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Title, +Up: Pseudo Ops +



+
+ +

7.111 .type

+ +

This directive is used to set the type of a symbol. + + +

COFF Version

+ +

For COFF targets, this directive is permitted only within +.def/.endef pairs. It is used like this: + +

     .type int
+
+

This records the integer int as the type attribute of a symbol table +entry. + + +

ELF Version

+ +

For ELF targets, the .type directive is used like this: + +

     .type name , type description
+
+

This sets the type of symbol name to be either a +function symbol or an object symbol. There are five different syntaxes +supported for the type description field, in order to provide +compatibility with various other assemblers. + +

Because some of the characters used in these syntaxes (such as @ and +#) are comment characters for some architectures, some of the syntaxes +below do not work on all architectures. The first variant will be accepted by +the GNU assembler on all architectures so that variant should be used for +maximum portability, if you do not need to assemble your code with other +assemblers. + +

The syntaxes supported are: + +

       .type <name> STT_<TYPE_IN_UPPER_CASE>
+       .type <name>,#<type>
+       .type <name>,@<type>
+       .type <name>,%>type>
+       .type <name>,"<type>"
+
+

The types supported are: + +

+
STT_FUNC
function
Mark the symbol as being a function name. + +
STT_OBJECT
object
Mark the symbol as being a data object. + +
STT_TLS
tls_object
Mark the symbol as being a thead-local data object. + +
STT_COMMON
common
Mark the symbol as being a common data object. +
+ +

Note: Some targets support extra types in addition to those listed above. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Uleb128.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Uleb128.html new file mode 100644 index 0000000..e9f94e3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Uleb128.html @@ -0,0 +1,54 @@ + + +Uleb128 - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Type, +Up: Pseudo Ops +



+
+ +

7.112 .uleb128 expressions

+ +

uleb128 stands for “unsigned little endian base 128.” This is a +compact, variable length representation of numbers used by the DWARF +symbolic debugging format. See .sleb128. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Directives.html new file mode 100644 index 0000000..8ed5d21 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Directives.html @@ -0,0 +1,73 @@ + + +V850 Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: V850 Floating Point, +Up: V850-Dependent +



+
+ +

9.35.4 V850 Machine Directives

+ +

+ + +

.offset <expression>
Moves the offset into the current section to the specified amount. + +


.section "name", <type>
This is an extension to the standard .section directive. It sets the +current section to be <type> and creates an alias for this section +called "name". + +


.v850
Specifies that the assembled code should be marked as being targeted at +the V850 processor. This allows the linker to detect attempts to link +such code with code assembled for other processors. + +


.v850e
Specifies that the assembled code should be marked as being targeted at +the V850E processor. This allows the linker to detect attempts to link +such code with code assembled for other processors. + +


.v850e1
Specifies that the assembled code should be marked as being targeted at +the V850E1 processor. This allows the linker to detect attempts to link +such code with code assembled for other processors. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Floating-Point.html new file mode 100644 index 0000000..48fe880 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Floating-Point.html @@ -0,0 +1,52 @@ + + +V850 Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: V850 Syntax, +Up: V850-Dependent +



+
+ +

9.35.3 Floating Point

+ +

The V850 family uses ieee floating-point numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Opcodes.html new file mode 100644 index 0000000..7763183 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Opcodes.html @@ -0,0 +1,173 @@ + + +V850 Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: V850 Directives, +Up: V850-Dependent +



+
+ +

9.35.5 Opcodes

+ +

as implements all the standard V850 opcodes. + +

as also implements the following pseudo ops: + + + +

hi0()
Computes the higher 16 bits of the given expression and stores it into +the immediate operand field of the given instruction. For example: + +

mulhi hi0(here - there), r5, r6 + +

computes the difference between the address of labels 'here' and +'there', takes the upper 16 bits of this difference, shifts it down 16 +bits and then multiplies it by the lower 16 bits in register 5, putting +the result into register 6. + +


lo()
Computes the lower 16 bits of the given expression and stores it into +the immediate operand field of the given instruction. For example: + +

addi lo(here - there), r5, r6 + +

computes the difference between the address of labels 'here' and +'there', takes the lower 16 bits of this difference and adds it to +register 5, putting the result into register 6. + +


hi()
Computes the higher 16 bits of the given expression and then adds the +value of the most significant bit of the lower 16 bits of the expression +and stores the result into the immediate operand field of the given +instruction. For example the following code can be used to compute the +address of the label 'here' and store it into register 6: + +

movhi hi(here), r0, r6 + movea lo(here), r6, r6 + +

The reason for this special behaviour is that movea performs a sign +extension on its immediate operand. So for example if the address of +'here' was 0xFFFFFFFF then without the special behaviour of the hi() +pseudo-op the movhi instruction would put 0xFFFF0000 into r6, then the +movea instruction would takes its immediate operand, 0xFFFF, sign extend +it to 32 bits, 0xFFFFFFFF, and then add it into r6 giving 0xFFFEFFFF +which is wrong (the fifth nibble is E). With the hi() pseudo op adding +in the top bit of the lo() pseudo op, the movhi instruction actually +stores 0 into r6 (0xFFFF + 1 = 0x0000), so that the movea instruction +stores 0xFFFFFFFF into r6 - the right value. + +


hilo()
Computes the 32 bit value of the given expression and stores it into +the immediate operand field of the given instruction (which must be a +mov instruction). For example: + +

mov hilo(here), r6 + +

computes the absolute address of label 'here' and puts the result into +register 6. + +


sdaoff()
Computes the offset of the named variable from the start of the Small +Data Area (whoes address is held in register 4, the GP register) and +stores the result as a 16 bit signed value in the immediate operand +field of the given instruction. For example: + +

ld.w sdaoff(_a_variable)[gp],r6 + +

loads the contents of the location pointed to by the label '_a_variable' +into register 6, provided that the label is located somewhere within +/- +32K of the address held in the GP register. [Note the linker assumes +that the GP register contains a fixed address set to the address of the +label called '__gp'. This can either be set up automatically by the +linker, or specifically set by using the --defsym __gp=<value> +command line option]. + +


tdaoff()
Computes the offset of the named variable from the start of the Tiny +Data Area (whoes address is held in register 30, the EP register) and +stores the result as a 4,5, 7 or 8 bit unsigned value in the immediate +operand field of the given instruction. For example: + +

sld.w tdaoff(_a_variable)[ep],r6 + +

loads the contents of the location pointed to by the label '_a_variable' +into register 6, provided that the label is located somewhere within +256 +bytes of the address held in the EP register. [Note the linker assumes +that the EP register contains a fixed address set to the address of the +label called '__ep'. This can either be set up automatically by the +linker, or specifically set by using the --defsym __ep=<value> +command line option]. + +


zdaoff()
Computes the offset of the named variable from address 0 and stores the +result as a 16 bit signed value in the immediate operand field of the +given instruction. For example: + +

movea zdaoff(_a_variable),zero,r6 + +

puts the address of the label '_a_variable' into register 6, assuming +that the label is somewhere within the first 32K of memory. (Strictly +speaking it also possible to access the last 32K of memory as well, as +the offsets are signed). + +


ctoff()
Computes the offset of the named variable from the start of the Call +Table Area (whoes address is helg in system register 20, the CTBP +register) and stores the result a 6 or 16 bit unsigned value in the +immediate field of then given instruction or piece of data. For +example: + +

callt ctoff(table_func1) + +

will put the call the function whoes address is held in the call table +at the location labeled 'table_func1'. + +


.longcall name
Indicates that the following sequence of instructions is a long call +to function name. The linker will attempt to shorten this call +sequence if name is within a 22bit offset of the call. Only +valid if the -mrelax command line switch has been enabled. + +


.longjump name
Indicates that the following sequence of instructions is a long jump +to label name. The linker will attempt to shorten this code +sequence if name is within a 22bit offset of the jump. Only +valid if the -mrelax command line switch has been enabled. + +
+ +

For information on the V850 instruction set, see V850 +Family 32-/16-Bit single-Chip Microcontroller Architecture Manual from NEC. +Ltd. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Options.html new file mode 100644 index 0000000..be99f29 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Options.html @@ -0,0 +1,93 @@ + + +V850 Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: V850-Dependent +



+
+ +

9.35.1 Options

+ +

as supports the following additional command-line options +for the V850 processor family: + +

+ + +

-wsigned_overflow
Causes warnings to be produced when signed immediate values overflow the +space available for then within their opcodes. By default this option +is disabled as it is possible to receive spurious warnings due to using +exact bit patterns as immediate constants. + +


-wunsigned_overflow
Causes warnings to be produced when unsigned immediate values overflow +the space available for then within their opcodes. By default this +option is disabled as it is possible to receive spurious warnings due to +using exact bit patterns as immediate constants. + +


-mv850
Specifies that the assembled code should be marked as being targeted at +the V850 processor. This allows the linker to detect attempts to link +such code with code assembled for other processors. + +


-mv850e
Specifies that the assembled code should be marked as being targeted at +the V850E processor. This allows the linker to detect attempts to link +such code with code assembled for other processors. + +


-mv850e1
Specifies that the assembled code should be marked as being targeted at +the V850E1 processor. This allows the linker to detect attempts to link +such code with code assembled for other processors. + +


-mv850any
Specifies that the assembled code should be marked as being targeted at +the V850 processor but support instructions that are specific to the +extended variants of the process. This allows the production of +binaries that contain target specific code, but which are also intended +to be used in a generic fashion. For example libgcc.a contains generic +routines used by the code produced by GCC for all versions of the v850 +architecture, together with support routines only used by the V850E +architecture. + +


-mrelax
Enables relaxation. This allows the .longcall and .longjump pseudo +ops to be used in the assembler source code. These ops label sections +of code which are either a long function call or a long branch. The +assembler will then flag these sections of code and the linker will +attempt to relax them. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Syntax.html new file mode 100644 index 0000000..b40b1bf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850-Syntax.html @@ -0,0 +1,55 @@ + + +V850 Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: V850 Options, +Up: V850-Dependent +



+
+ +

9.35.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dChars.html new file mode 100644 index 0000000..53c979a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dChars.html @@ -0,0 +1,50 @@ + + +V850-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: V850 Syntax +



+
+ +
9.35.2.1 Special Characters
+ +

# is the line comment character. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dDependent.html new file mode 100644 index 0000000..26c6f22 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dDependent.html @@ -0,0 +1,60 @@ + + +V850-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: TIC54X-Dependent, +Up: Machine Dependencies +



+
+ +

9.35 v850 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dRegs.html new file mode 100644 index 0000000..6b4c0eb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/V850_002dRegs.html @@ -0,0 +1,96 @@ + + +V850-Regs - Using as + + + + + + + + + + + + +
+

+Previous: V850-Chars, +Up: V850 Syntax +



+
+ +
9.35.2.2 Register Names
+ +

as supports the following names for registers: + + +

general register 0
r0, zero +
general register 1
r1 +
general register 2
r2, hp +
general register 3
r3, sp +
general register 4
r4, gp +
general register 5
r5, tp +
general register 6
r6 +
general register 7
r7 +
general register 8
r8 +
general register 9
r9 +
general register 10
r10 +
general register 11
r11 +
general register 12
r12 +
general register 13
r13 +
general register 14
r14 +
general register 15
r15 +
general register 16
r16 +
general register 17
r17 +
general register 18
r18 +
general register 19
r19 +
general register 20
r20 +
general register 21
r21 +
general register 22
r22 +
general register 23
r23 +
general register 24
r24 +
general register 25
r25 +
general register 26
r26 +
general register 27
r27 +
general register 28
r28 +
general register 29
r29 +
general register 30
r30, ep +
general register 31
r31, lp +
system register 0
eipc +
system register 1
eipsw +
system register 2
fepc +
system register 3
fepsw +
system register 4
ecr +
system register 5
psw +
system register 16
ctpc +
system register 17
ctpsw +
system register 18
dbpc +
system register 19
dbpsw +
system register 20
ctbp +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dOpts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dOpts.html new file mode 100644 index 0000000..1a32aa9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dOpts.html @@ -0,0 +1,124 @@ + + +VAX-Opts - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Vax-Dependent +



+
+ +

9.34.1 VAX Command-Line Options

+ +

The Vax version of as accepts any of the following options, +gives a warning message that the option was ignored and proceeds. +These options are for compatibility with scripts designed for other +people's assemblers. + + + + + +

-D (Debug)
-S (Symbol Table)
-T (Token Trace)
These are obsolete options used to debug old assemblers. + +


-d (Displacement size for JUMPs)
This option expects a number following the -d. Like options +that expect filenames, the number may immediately follow the +-d (old standard) or constitute the whole of the command line +argument that follows -d (gnu standard). + +


-V (Virtualize Interpass Temporary File)
Some other assemblers use a temporary file. This option +commanded them to keep the information in active memory rather +than in a disk file. as always does this, so this +option is redundant. + +


-J (JUMPify Longer Branches)
Many 32-bit computers permit a variety of branch instructions +to do the same job. Some of these instructions are short (and +fast) but have a limited range; others are long (and slow) but +can branch anywhere in virtual memory. Often there are 3 +flavors of branch: short, medium and long. Some other +assemblers would emit short and medium branches, unless told by +this option to emit short and long branches. + +


-t (Temporary File Directory)
Some other assemblers may use a temporary file, and this option +takes a filename being the directory to site the temporary +file. Since as does not use a temporary disk file, this +option makes no difference. -t needs exactly one +filename. +
+ +

The Vax version of the assembler accepts additional options when +compiled for VMS: + + + +

-h n
External symbol or section (used for global variables) names are not +case sensitive on VAX/VMS and always mapped to upper case. This is +contrary to the C language definition which explicitly distinguishes +upper and lower case. To implement a standard conforming C compiler, +names must be changed (mapped) to preserve the case information. The +default mapping is to convert all lower case characters to uppercase and +adding an underscore followed by a 6 digit hex value, representing a 24 +digit binary value. The one digits in the binary value represent which +characters are uppercase in the original symbol name. + +

The -h n option determines how we map names. This takes +several values. No -h switch at all allows case hacking as +described above. A value of zero (-h0) implies names should be +upper case, and inhibits the case hack. A value of 2 (-h2) +implies names should be all lower case, with no case hack. A value of 3 +(-h3) implies that case should be preserved. The value 1 is +unused. The -H option directs as to display +every mapped symbol during assembly. + +

Symbols whose names include a dollar sign $ are exceptions to the +general name mapping. These symbols are normally only used to reference +VMS library names. Such symbols are always mapped to upper case. + +


-+
The -+ option causes as to truncate any symbol +name larger than 31 characters. The -+ option also prevents some +code following the _main symbol normally added to make the object +file compatible with Vax-11 "C". + +


-1
This option is ignored for backward compatibility with as +version 1.x. + +


-H
The -H option causes as to print every symbol +which was changed by case mapping. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dbranch.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dbranch.html new file mode 100644 index 0000000..0bc606e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dbranch.html @@ -0,0 +1,129 @@ + + +VAX-branch - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: VAX-opcodes, +Up: Vax-Dependent +



+
+ +

9.34.5 VAX Branch Improvement

+ +

Certain pseudo opcodes are permitted. They are for branch +instructions. They expand to the shortest branch instruction that +reaches the target. Generally these mnemonics are made by +substituting j for b at the start of a DEC mnemonic. +This feature is included both for compatibility and to help +compilers. If you do not need this feature, avoid these +opcodes. Here are the mnemonics, and the code they can expand into. + +

+
jbsb
Jsb is already an instruction mnemonic, so we chose jbsb. +
+
(byte displacement)
bsbb ... +
(word displacement)
bsbw ... +
(long displacement)
jsb ... +
+
jbr
jr
Unconditional branch. +
+
(byte displacement)
brb ... +
(word displacement)
brw ... +
(long displacement)
jmp ... +
+
jCOND
COND may be any one of the conditional branches +neq, nequ, eql, eqlu, gtr, +geq, lss, gtru, lequ, vc, vs, +gequ, cc, lssu, cs. +COND may also be one of the bit tests +bs, bc, bss, bcs, bsc, bcc, +bssi, bcci, lbs, lbc. +NOTCOND is the opposite condition to COND. +
+
(byte displacement)
bCOND ... +
(word displacement)
bNOTCOND foo ; brw ... ; foo: +
(long displacement)
bNOTCOND foo ; jmp ... ; foo: +
+
jacbX
X may be one of b d f g h l w. +
+
(word displacement)
OPCODE ... +
(long displacement)
+
               OPCODE ..., foo ;
+               brb bar ;
+               foo: jmp ... ;
+               bar:
+          
+
+
jaobYYY
YYY may be one of lss leq. +
jsobZZZ
ZZZ may be one of geq gtr. +
+
(byte displacement)
OPCODE ... +
(word displacement)
+
               OPCODE ..., foo ;
+               brb bar ;
+               foo: brw destination ;
+               bar:
+          
+
(long displacement)
+
               OPCODE ..., foo ;
+               brb bar ;
+               foo: jmp destination ;
+               bar:
+          
+
+
aobleq
aoblss
sobgeq
sobgtr
+
+
(byte displacement)
OPCODE ... +
(word displacement)
+
               OPCODE ..., foo ;
+               brb bar ;
+               foo: brw destination ;
+               bar:
+          
+
(long displacement)
+
               OPCODE ..., foo ;
+               brb bar ;
+               foo: jmp destination ;
+               bar:
+          
+
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002ddirectives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002ddirectives.html new file mode 100644 index 0000000..c50f3d8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002ddirectives.html @@ -0,0 +1,71 @@ + + +VAX-directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: VAX-float, +Up: Vax-Dependent +



+
+ +

9.34.3 Vax Machine Directives

+ +

The Vax version of the assembler supports four directives for +generating Vax floating point constants. They are described in the +table below. + +

+ + +

.dfloat
This expects zero or more flonums, separated by commas, and +assembles Vax d format 64-bit floating point constants. + +


.ffloat
This expects zero or more flonums, separated by commas, and +assembles Vax f format 32-bit floating point constants. + +


.gfloat
This expects zero or more flonums, separated by commas, and +assembles Vax g format 64-bit floating point constants. + +


.hfloat
This expects zero or more flonums, separated by commas, and +assembles Vax h format 128-bit floating point constants. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dfloat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dfloat.html new file mode 100644 index 0000000..7e59477 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dfloat.html @@ -0,0 +1,64 @@ + + +VAX-float - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: VAX-Opts, +Up: Vax-Dependent +



+
+ +

9.34.2 VAX Floating Point

+ +

Conversion of flonums to floating point is correct, and +compatible with previous assemblers. Rounding is +towards zero if the remainder is exactly half the least significant bit. + +

D, F, G and H floating point formats +are understood. + +

Immediate floating literals (e.g. S`$6.9) +are rendered correctly. Again, rounding is towards zero in the +boundary case. + +

The .float directive produces f format numbers. +The .double directive produces d format numbers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dno.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dno.html new file mode 100644 index 0000000..ed5e999 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dno.html @@ -0,0 +1,54 @@ + + +VAX-no - Using as + + + + + + + + + + + + +

+

+Previous: VAX-operands, +Up: Vax-Dependent +



+
+ +

9.34.7 Not Supported on VAX

+ +

Vax bit fields can not be assembled with as. Someone +can add the required code if they really need it. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dopcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dopcodes.html new file mode 100644 index 0000000..059b5fb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002dopcodes.html @@ -0,0 +1,56 @@ + + +VAX-opcodes - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: VAX-directives, +Up: Vax-Dependent +



+
+ +

9.34.4 VAX Opcodes

+ +

All DEC mnemonics are supported. Beware that case... +instructions have exactly 3 operands. The dispatch table that +follows the case... instruction should be made with +.word statements. This is compatible with all unix +assemblers we know of. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002doperands.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002doperands.html new file mode 100644 index 0000000..532b061 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VAX_002doperands.html @@ -0,0 +1,74 @@ + + +VAX-operands - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: VAX-branch, +Up: Vax-Dependent +



+
+ +

9.34.6 VAX Operands

+ +

The immediate character is $ for Unix compatibility, not +# as DEC writes it. + +

The indirect character is * for Unix compatibility, not +@ as DEC writes it. + +

The displacement sizing character is ` (an accent grave) for +Unix compatibility, not ^ as DEC writes it. The letter +preceding ` may have either case. G is not +understood, but all other letters (b i l s w) are understood. + +

Register names understood are r0 r1 r2 ... r15 ap fp sp +pc. Upper and lower case letters are equivalent. + +

For instance +

     tstb *w`$4(r5)
+
+

Any expression is permitted in an operand. Operands are comma +separated. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VTableEntry.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VTableEntry.html new file mode 100644 index 0000000..baf7f5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VTableEntry.html @@ -0,0 +1,53 @@ + + +VTableEntry - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Version, +Up: Pseudo Ops +



+
+ +

7.115 .vtable_entry table, offset

+ +

This directive finds or creates a symbol table and creates a +VTABLE_ENTRY relocation for it with an addend of offset. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VTableInherit.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VTableInherit.html new file mode 100644 index 0000000..eb94ee7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/VTableInherit.html @@ -0,0 +1,55 @@ + + +VTableInherit - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: VTableEntry, +Up: Pseudo Ops +



+
+ +

7.116 .vtable_inherit child, parent

+ +

This directive finds the symbol child and finds or creates the symbol +parent and then creates a VTABLE_INHERIT relocation for the +parent whose addend is the value of the child symbol. As a special case the +parent name of 0 is treated as referring to the *ABS* section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Val.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Val.html new file mode 100644 index 0000000..6e58ebd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Val.html @@ -0,0 +1,54 @@ + + +Val - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Uleb128, +Up: Pseudo Ops +



+
+ +

7.113 .val addr

+ +

This directive, permitted only within .def/.endef pairs, +records the address addr as the value attribute of a symbol table +entry. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Vax_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Vax_002dDependent.html new file mode 100644 index 0000000..1fb9012 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Vax_002dDependent.html @@ -0,0 +1,60 @@ + + +Vax-Dependent - Using as + + + + + + + + + + + + +

+

+Previous: Z8000-Dependent, +Up: Machine Dependencies +



+
+ +

9.34 VAX Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Version.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Version.html new file mode 100644 index 0000000..b36cf4a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Version.html @@ -0,0 +1,53 @@ + + +Version - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Val, +Up: Pseudo Ops +



+
+ +

7.114 .version "string"

+ +

This directive creates a .note section and places into it an ELF +formatted note of type NT_VERSION. The note's name is set to string. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/W.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/W.html new file mode 100644 index 0000000..931ab60 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/W.html @@ -0,0 +1,66 @@ + + +W - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: v, +Up: Invoking +



+
+ +

2.16 Control Warnings: -W, --warn, --no-warn, --fatal-warnings

+ +

as should never give a warning or error message when +assembling compiler output. But programs written by people often +cause as to give a warning that a particular assumption was +made. All such warnings are directed to the standard error file. + +

If you use the -W and --no-warn options, no warnings are issued. +This only affects the warning messages: it does not change any particular of +how as assembles your file. Errors, which stop the assembly, +are still reported. + +

If you use the --fatal-warnings option, as considers +files that generate warnings to be in error. + +

You can switch these options off again by specifying --warn, which +causes warnings to be output as usual. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Warning.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Warning.html new file mode 100644 index 0000000..ce312c6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Warning.html @@ -0,0 +1,53 @@ + + +Warning - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: VTableInherit, +Up: Pseudo Ops +



+
+ +

7.117 .warning "string"

+ +

Similar to the directive .error +(see .error "string"), but just emits a warning. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Weak.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Weak.html new file mode 100644 index 0000000..cb9f2d6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Weak.html @@ -0,0 +1,61 @@ + + +Weak - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Warning, +Up: Pseudo Ops +



+
+ +

7.118 .weak names

+ +

This directive sets the weak attribute on the comma separated list of symbol +names. If the symbols do not already exist, they will be created. + +

On COFF targets other than PE, weak symbols are a GNU extension. This +directive sets the weak attribute on the comma separated list of symbol +names. If the symbols do not already exist, they will be created. + +

On the PE target, weak symbols are supported natively as weak aliases. +When a weak symbol is created that is not an alias, GAS creates an +alternate symbol to hold the default value. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Weakref.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Weakref.html new file mode 100644 index 0000000..1ff2142 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Weakref.html @@ -0,0 +1,65 @@ + + +Weakref - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Weak, +Up: Pseudo Ops +



+
+ +

7.119 .weakref alias, target

+ +

This directive creates an alias to the target symbol that enables the symbol to +be referenced with weak-symbol semantics, but without actually making it weak. +If direct references or definitions of the symbol are present, then the symbol +will not be weak, but if all references to it are through weak references, the +symbol will be marked as weak in the symbol table. + +

The effect is equivalent to moving all references to the alias to a separate +assembly source file, renaming the alias to the symbol in it, declaring the +symbol as weak there, and running a reloadable link to merge the object files +resulting from the assembly of the new source file and the old source file that +had the references to the alias removed. + +

The alias itself never makes to the symbol table, and is entirely handled +within the assembler. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Whitespace.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Whitespace.html new file mode 100644 index 0000000..ea65a0a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Whitespace.html @@ -0,0 +1,56 @@ + + +Whitespace - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Preprocessing, +Up: Syntax +



+
+ +

3.2 Whitespace

+ +

Whitespace is one or more blanks or tabs, in any order. +Whitespace is used to separate symbols, and to make programs neater for +people to read. Unless within character constants +(see Character Constants), any whitespace means the same +as exactly one space. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Word.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Word.html new file mode 100644 index 0000000..78ec052 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Word.html @@ -0,0 +1,90 @@ + + +Word - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Weakref, +Up: Pseudo Ops +



+
+ +

7.120 .word expressions

+ +

This directive expects zero or more expressions, of any section, +separated by commas. + +

The size of the number emitted, and its byte order, +depend on what target computer the assembly is for. + + + +

+Warning: Special Treatment to support Compilers +
+ +

Machines with a 32-bit address space, but that do less than 32-bit +addressing, require the following special treatment. If the machine of +interest to you does 32-bit addressing (or doesn't require it; +see Machine Dependencies), you can ignore this issue. + +

In order to assemble compiler output into something that works, +as occasionally does strange things to .word directives. +Directives of the form .word sym1-sym2 are often emitted by +compilers as part of jump tables. Therefore, when as assembles a +directive of the form .word sym1-sym2, and the difference between +sym1 and sym2 does not fit in 16 bits, as +creates a secondary jump table, immediately before the next label. +This secondary jump table is preceded by a short-jump to the +first byte after the secondary table. This short-jump prevents the flow +of control from accidentally falling into the new table. Inside the +table is a long-jump to sym2. The original .word +contains sym1 minus the address of the long-jump to +sym2. + +

If there were several occurrences of .word sym1-sym2 before the +secondary jump table, all of them are adjusted. If there was a +.word sym3-sym4, that also did not fit in sixteen bits, a +long-jump to sym4 is included in the secondary jump table, +and the .word directives are adjusted to contain sym3 +minus the address of the long-jump to sym4; and so on, for as many +entries in the original jump table as necessary. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Automatic-Alignment.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Automatic-Alignment.html new file mode 100644 index 0000000..8cba900 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Automatic-Alignment.html @@ -0,0 +1,90 @@ + + +Xtensa Automatic Alignment - Using as + + + + + + + + + + + + +

+

+Previous: Density Instructions, +Up: Xtensa Optimizations +



+
+ +
9.36.3.2 Automatic Instruction Alignment
+ +

+The Xtensa assembler will automatically align certain instructions, both +to optimize performance and to satisfy architectural requirements. + +

As an optimization to improve performance, the assembler attempts to +align branch targets so they do not cross instruction fetch boundaries. +(Xtensa processors can be configured with either 32-bit or 64-bit +instruction fetch widths.) An +instruction immediately following a call is treated as a branch target +in this context, because it will be the target of a return from the +call. This alignment has the potential to reduce branch penalties at +some expense in code size. +This optimization is enabled by default. You can disable it with the +--no-target-align command-line option (see Command Line Options). + +

The target alignment optimization is done without adding instructions +that could increase the execution time of the program. If there are +density instructions in the code preceding a target, the assembler can +change the target alignment by widening some of those instructions to +the equivalent 24-bit instructions. Extra bytes of padding can be +inserted immediately following unconditional jump and return +instructions. +This approach is usually successful in aligning many, but not all, +branch targets. + +

The LOOP family of instructions must be aligned such that the +first instruction in the loop body does not cross an instruction fetch +boundary (e.g., with a 32-bit fetch width, a LOOP instruction +must be on either a 1 or 2 mod 4 byte boundary). The assembler knows +about this restriction and inserts the minimal number of 2 or 3 byte +no-op instructions to satisfy it. When no-op instructions are added, +any label immediately preceding the original loop will be moved in order +to refer to the loop instruction, not the newly generated no-op +instruction. To preserve binary compatibility across processors with +different fetch widths, the assembler conservatively assumes a 32-bit +fetch width when aligning LOOP instructions (except if the first +instruction in the loop is a 64-bit instruction). + +

Previous versions of the assembler automatically aligned ENTRY +instructions to 4-byte boundaries, but that alignment is now the +programmer's responsibility. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Branch-Relaxation.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Branch-Relaxation.html new file mode 100644 index 0000000..c9e3aeb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Branch-Relaxation.html @@ -0,0 +1,77 @@ + + +Xtensa Branch Relaxation - Using as + + + + + + + + + + + + +

+ +
9.36.4.1 Conditional Branch Relaxation
+ +

+When the target of a branch is too far away from the branch itself, +i.e., when the offset from the branch to the target is too large to fit +in the immediate field of the branch instruction, it may be necessary to +replace the branch with a branch around a jump. For example, + +

         beqz    a2, L
+
+

may result in: + +

         bnez.n  a2, M
+         j L
+     M:
+
+

(The BNEZ.N instruction would be used in this example only if the +density option is available. Otherwise, BNEZ would be used.) + +

This relaxation works well because the unconditional jump instruction +has a much larger offset range than the various conditional branches. +However, an error will occur if a branch target is beyond the range of a +jump instruction. as cannot relax unconditional jumps. +Similarly, an error will occur if the original input contains an +unconditional jump to a target that is out of range. + +

Branch relaxation is enabled by default. It can be disabled by using +underscore prefixes (see Opcode Names), the +--no-transform command-line option (see Command Line Options), or the no-transform directive +(see transform). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Call-Relaxation.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Call-Relaxation.html new file mode 100644 index 0000000..d60c239 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Call-Relaxation.html @@ -0,0 +1,84 @@ + + +Xtensa Call Relaxation - Using as + + + + + + + + + + + + + +

+ +
9.36.4.2 Function Call Relaxation
+ +

+Function calls may require relaxation because the Xtensa immediate call +instructions (CALL0, CALL4, CALL8 and +CALL12) provide a PC-relative offset of only 512 Kbytes in either +direction. For larger programs, it may be necessary to use indirect +calls (CALLX0, CALLX4, CALLX8 and CALLX12) +where the target address is specified in a register. The Xtensa +assembler can automatically relax immediate call instructions into +indirect call instructions. This relaxation is done by loading the +address of the called function into the callee's return address register +and then using a CALLX instruction. So, for example: + +

         call8 func
+
+

might be relaxed to: + +

         .literal .L1, func
+         l32r    a8, .L1
+         callx8  a8
+
+

Because the addresses of targets of function calls are not generally +known until link-time, the assembler must assume the worst and relax all +the calls to functions in other source files, not just those that really +will be out of range. The linker can recognize calls that were +unnecessarily relaxed, and it will remove the overhead introduced by the +assembler for those cases where direct calls are sufficient. + +

Call relaxation is disabled by default because it can have a negative +effect on both code size and performance, although the linker can +usually eliminate the unnecessary overhead. If a program is too large +and some of the calls are out of range, function call relaxation can be +enabled using the --longcalls command-line option or the +longcalls directive (see longcalls). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Directives.html new file mode 100644 index 0000000..17eb85a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Directives.html @@ -0,0 +1,93 @@ + + +Xtensa Directives - Using as + + + + + + + + + + + + +

+

+Previous: Xtensa Relaxation, +Up: Xtensa-Dependent +



+
+ +

9.36.5 Directives

+ +

+The Xtensa assembler supports a region-based directive syntax: + +

         .begin directive [options]
+         ...
+         .end directive
+
+

All the Xtensa-specific directives that apply to a region of code use +this syntax. + +

The directive applies to code between the .begin and the +.end. The state of the option after the .end reverts to +what it was before the .begin. +A nested .begin/.end region can further +change the state of the directive without having to be aware of its +outer state. For example, consider: + +

         .begin no-transform
+     L:  add a0, a1, a2
+         .begin transform
+     M:  add a0, a1, a2
+         .end transform
+     N:  add a0, a1, a2
+         .end no-transform
+
+

The ADD opcodes at L and N in the outer +no-transform region both result in ADD machine instructions, +but the assembler selects an ADD.N instruction for the +ADD at M in the inner transform region. + +

The advantage of this style is that it works well inside macros which can +preserve the context of their callers. + +

The following directives are available: + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Immediate-Relaxation.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Immediate-Relaxation.html new file mode 100644 index 0000000..2191b9e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Immediate-Relaxation.html @@ -0,0 +1,114 @@ + + +Xtensa Immediate Relaxation - Using as + + + + + + + + + + + + +
+

+Previous: Xtensa Call Relaxation, +Up: Xtensa Relaxation +



+
+ +
9.36.4.3 Other Immediate Field Relaxation
+ +

+The assembler normally performs the following other relaxations. They +can be disabled by using underscore prefixes (see Opcode Names), the --no-transform command-line option +(see Command Line Options), or the +no-transform directive (see transform). + +

The MOVI machine instruction can only materialize values in the +range from -2048 to 2047. Values outside this range are best +materialized with L32R instructions. Thus: + +

         movi a0, 100000
+
+

is assembled into the following machine code: + +

         .literal .L1, 100000
+         l32r a0, .L1
+
+

The L8UI machine instruction can only be used with immediate +offsets in the range from 0 to 255. The L16SI and L16UI +machine instructions can only be used with offsets from 0 to 510. The +L32I machine instruction can only be used with offsets from 0 to +1020. A load offset outside these ranges can be materialized with +an L32R instruction if the destination register of the load +is different than the source address register. For example: + +

         l32i a1, a0, 2040
+
+

is translated to: + +

         .literal .L1, 2040
+         l32r a1, .L1
+         add a1, a0, a1
+         l32i a1, a1, 0
+
+

If the load destination and source address register are the same, an +out-of-range offset causes an error. + +

The Xtensa ADDI instruction only allows immediate operands in the +range from -128 to 127. There are a number of alternate instruction +sequences for the ADDI operation. First, if the +immediate is 0, the ADDI will be turned into a MOV.N +instruction (or the equivalent OR instruction if the code density +option is not available). If the ADDI immediate is outside of +the range -128 to 127, but inside the range -32896 to 32639, an +ADDMI instruction or ADDMI/ADDI sequence will be +used. Finally, if the immediate is outside of this range and a free +register is available, an L32R/ADD sequence will be used +with a literal allocated from the literal pool. + +

For example: + +

         addi    a5, a6, 0
+         addi    a5, a6, 512
+         addi    a5, a6, 513
+         addi    a5, a6, 50000
+
+

is assembled into the following: + +

         .literal .L1, 50000
+         mov.n   a5, a6
+         addmi   a5, a6, 0x200
+         addmi   a5, a6, 0x200
+         addi    a5, a5, 1
+         l32r    a5, .L1
+         add     a5, a6, a5
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Opcodes.html new file mode 100644 index 0000000..8866605 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Opcodes.html @@ -0,0 +1,77 @@ + + +Xtensa Opcodes - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Xtensa Syntax +



+
+ +
9.36.2.1 Opcode Names
+ +

+See the Xtensa Instruction Set Architecture (ISA) Reference +Manual for a complete list of opcodes and descriptions of their +semantics. + +

If an opcode name is prefixed with an underscore character (_), +as will not transform that instruction in any way. The +underscore prefix disables both optimization (see Xtensa Optimizations) and relaxation (see Xtensa Relaxation) for that particular instruction. Only +use the underscore prefix when it is essential to select the exact +opcode produced by the assembler. Using this feature unnecessarily +makes the code less efficient by disabling assembler optimization and +less flexible by disabling relaxation. + +

Note that this special handling of underscore prefixes only applies to +Xtensa opcodes, not to either built-in macros or user-defined macros. +When an underscore prefix is used with a macro (e.g., _MOV), it +refers to a different macro. The assembler generally provides built-in +macros both with and without the underscore prefix, where the underscore +versions behave as if the underscore carries through to the instructions +in the macros. For example, _MOV may expand to _MOV.N. + +

The underscore prefix only applies to individual instructions, not to +series of instructions. For example, if a series of instructions have +underscore prefixes, the assembler will not transform the individual +instructions, but it may insert other instructions between them (e.g., +to align a LOOP instruction). To prevent the assembler from +modifying a series of instructions as a whole, use the +no-transform directive. See transform. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Optimizations.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Optimizations.html new file mode 100644 index 0000000..b92eeea --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Optimizations.html @@ -0,0 +1,60 @@ + + +Xtensa Optimizations - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Xtensa Syntax, +Up: Xtensa-Dependent +



+
+ +

9.36.3 Xtensa Optimizations

+ +

+The optimizations currently supported by as are +generation of density instructions where appropriate and automatic +branch target alignment. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Options.html new file mode 100644 index 0000000..80ffbc5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Options.html @@ -0,0 +1,93 @@ + + +Xtensa Options - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Xtensa-Dependent +



+
+ +

9.36.1 Command Line Options

+ +

The Xtensa version of the gnu assembler supports these +special options: + +

+
--text-section-literals | --no-text-section-literals
Control the treatment of literal pools. The default is +--no-text-section-literals, which places literals in +separate sections in the output file. This allows the literal pool to be +placed in a data RAM/ROM. With --text-section-literals, the +literals are interspersed in the text section in order to keep them as +close as possible to their references. This may be necessary for large +assembly files, where the literals would otherwise be out of range of the +L32R instructions in the text section. These options only affect +literals referenced via PC-relative L32R instructions; literals +for absolute mode L32R instructions are handled separately. +See literal. + +
--absolute-literals | --no-absolute-literals
Indicate to the assembler whether L32R instructions use absolute +or PC-relative addressing. If the processor includes the absolute +addressing option, the default is to use absolute L32R +relocations. Otherwise, only the PC-relative L32R relocations +can be used. + +
--target-align | --no-target-align
Enable or disable automatic alignment to reduce branch penalties at some +expense in code size. See Automatic Instruction Alignment. This optimization is enabled by default. Note +that the assembler will always align instructions like LOOP that +have fixed alignment requirements. + +
--longcalls | --no-longcalls
Enable or disable transformation of call instructions to allow calls +across a greater range of addresses. See Function Call Relaxation. This option should be used when call +targets can potentially be out of range. It may degrade both code size +and performance, but the linker can generally optimize away the +unnecessary overhead when a call ends up within range. The default is +--no-longcalls. + +
--transform | --no-transform
Enable or disable all assembler transformations of Xtensa instructions, +including both relaxation and optimization. The default is +--transform; --no-transform should only be used in the +rare cases when the instructions must be exactly as specified in the +assembly source. Using --no-transform causes out of range +instruction operands to be errors. + +
--rename-section oldname=newname
Rename the oldname section to newname. This option can be used +multiple times to rename multiple sections. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Registers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Registers.html new file mode 100644 index 0000000..ef36483 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Registers.html @@ -0,0 +1,58 @@ + + +Xtensa Registers - Using as + + + + + + + + + + + + +
+

+Previous: Xtensa Opcodes, +Up: Xtensa Syntax +



+
+ +
9.36.2.2 Register Names
+ +

+The assembly syntax for a register file entry is the “short” name for +a TIE register file followed by the index into that register file. For +example, the general-purpose AR register file has a short name of +a, so these registers are named a0...a15. +As a special feature, sp is also supported as a synonym for +a1. Additional registers may be added by processor configuration +options and by designer-defined TIE extensions. An initial $ +character is optional in all register names. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Relaxation.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Relaxation.html new file mode 100644 index 0000000..43f2b98 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Relaxation.html @@ -0,0 +1,67 @@ + + +Xtensa Relaxation - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Xtensa Optimizations, +Up: Xtensa-Dependent +



+
+ +

9.36.4 Xtensa Relaxation

+ +

+When an instruction operand is outside the range allowed for that +particular instruction field, as can transform the code +to use a functionally-equivalent instruction or sequence of +instructions. This process is known as relaxation. This is +typically done for branch instructions because the distance of the +branch targets is not known until assembly-time. The Xtensa assembler +offers branch relaxation and also extends this concept to function +calls, MOVI instructions and other instructions with immediate +fields. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Syntax.html new file mode 100644 index 0000000..c9c1600 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa-Syntax.html @@ -0,0 +1,96 @@ + + +Xtensa Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Xtensa Options, +Up: Xtensa-Dependent +



+
+ +

9.36.2 Assembler Syntax

+ +

+Block comments are delimited by /* and */. End of line +comments may be introduced with either # or //. + +

Instructions consist of a leading opcode or macro name followed by +whitespace and an optional comma-separated list of operands: + +

     opcode [operand, ...]
+
+

Instructions must be separated by a newline or semicolon. + +

FLIX instructions, which bundle multiple opcodes together in a single +instruction, are specified by enclosing the bundled opcodes inside +braces: + +

     {
+     [format]
+     opcode0 [operands]
+     opcode1 [operands]
+     opcode2 [operands]
+     ...
+     }
+
+

The opcodes in a FLIX instruction are listed in the same order as the +corresponding instruction slots in the TIE format declaration. +Directives and labels are not allowed inside the braces of a FLIX +instruction. A particular TIE format name can optionally be specified +immediately after the opening brace, but this is usually unnecessary. +The assembler will automatically search for a format that can encode the +specified opcodes, so the format name need only be specified in rare +cases where there is more than one applicable format and where it +matters which of those formats is used. A FLIX instruction can also be +specified on a single line by separating the opcodes with semicolons: + +

     { [format;] opcode0 [operands]; opcode1 [operands]; opcode2 [operands]; ... }
+
+

If an opcode can only be encoded in a FLIX instruction but is not +specified as part of a FLIX bundle, the assembler will choose the +smallest format where the opcode can be encoded and +will fill unused instruction slots with no-ops. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa_002dDependent.html new file mode 100644 index 0000000..586dd49 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Xtensa_002dDependent.html @@ -0,0 +1,63 @@ + + +Xtensa-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: V850-Dependent, +Up: Machine Dependencies +



+
+ +

9.36 Xtensa Dependent Features

+ +

This chapter covers features of the gnu assembler that are specific +to the Xtensa architecture. For details about the Xtensa instruction +set, please consult the Xtensa Instruction Set Architecture (ISA) +Reference Manual. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z.html new file mode 100644 index 0000000..406b6c2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z.html @@ -0,0 +1,55 @@ + + +Z - Using as + + + + + + + + + + + + +
+

+Previous: W, +Up: Invoking +



+
+ +

2.17 Generate Object File in Spite of Errors: -Z

+ +

After an error message, as normally produces no output. If for +some reason you are interested in object file output even after +as gives an error message on your program, use the -Z +option. If there are any errors, as continues anyways, and +writes an object file after a final warning message of the form n +errors, m warnings, generating bad object file. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Directives.html new file mode 100644 index 0000000..484f376 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Directives.html @@ -0,0 +1,84 @@ + + +Z80 Directives - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Z80 Floating Point, +Up: Z80-Dependent +



+
+ +

9.32.4 Z80 Assembler Directives

+ +

as for the Z80 supports some additional directives for +compatibility with other assemblers. + +

These are the additional directives in as for the Z80: + +

+
db expression|string[,expression|string...]
defb expression|string[,expression|string...]
For each string the characters are copied to the object file, for +each other expression the value is stored in one byte. +A warning is issued in case of an overflow. + +
dw expression[,expression...]
defw expression[,expression...]
For each expression the value is stored in two bytes, ignoring +overflow. + +
d24 expression[,expression...]
def24 expression[,expression...]
For each expression the value is stored in three bytes, ignoring +overflow. + +
d32 expression[,expression...]
def32 expression[,expression...]
For each expression the value is stored in four bytes, ignoring +overflow. + +
ds count[, value]
defs count[, value]
+ +Fill count bytes in the object file with value, if +value is omitted it defaults to zero. + +
symbol equ expression
symbol defl expression
These directives set the value of symbol to expression. If +equ is used, it is an error if symbol is already defined. +Symbols defined with equ are not protected from redefinition. + +
set
This is a normal instruction on Z80, and not an assembler directive. + +
psect name
A synonym for See Section, no second argument should be given. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Floating-Point.html new file mode 100644 index 0000000..838b01b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Floating-Point.html @@ -0,0 +1,52 @@ + + +Z80 Floating Point - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Z80 Syntax, +Up: Z80-Dependent +



+
+ +

9.32.3 Floating Point

+ +

Floating-point numbers are not supported. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Opcodes.html new file mode 100644 index 0000000..3f83baa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Opcodes.html @@ -0,0 +1,89 @@ + + +Z80 Opcodes - Using as + + + + + + + + + + + + +

+

+Previous: Z80 Directives, +Up: Z80-Dependent +



+
+ +

9.32.5 Opcodes

+ +

In line with common practice, Z80 mnemonics are used for both the Z80 and +the R800. + +

In many instructions it is possible to use one of the half index +registers (ixl,ixh,iyl,iyh) in stead of an +8-bit general purpose register. This yields instructions that are +documented on the R800 and undocumented on the Z80. +Similarly in f,(c) is documented on the R800 and undocumented on +the Z80. + +

The assembler also supports the following undocumented Z80-instructions, +that have not been adopted in the R800 instruction set: +

+
out (c),0
Sends zero to the port pointed to by register c. + +
sli m
Equivalent to m = (m<<1)+1, the operand m can +be any operand that is valid for sla. One can use sll as a +synonym for sli. + +
op (ix+d), r
This is equivalent to + +
          ld r, (ix+d)
+          opc r
+          ld (ix+d), r
+     
+

The operation opc may be any of res b,, +set b,, rl, rlc, rr, rrc, +sla, sli, sra and srl, and the register +r may be any of a, b, c, d, +e, h and l. + +

opc (iy+d), r
As above, but with iy instead of ix. +
+ +

The web site at http://www.z80.info is a good starting place to +find more information on programming the Z80. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Options.html new file mode 100644 index 0000000..c87ef4f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Options.html @@ -0,0 +1,72 @@ + + +Z80 Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Z80-Dependent +



+
+ +

9.32.1 Options

+ +

The Zilog Z80 and Ascii R800 version of as have a few machine +dependent options. + + +

-z80
Produce code for the Z80 processor. There are additional options to +request warnings and error messages for undocumented instructions. +
-ignore-undocumented-instructions
-Wnud
Silently assemble undocumented Z80-instructions that have been adopted +as documented R800-instructions. +
-ignore-unportable-instructions
-Wnup
Silently assemble all undocumented Z80-instructions. +
-warn-undocumented-instructions
-Wud
Issue warnings for undocumented Z80-instructions that work on R800, do +not assemble other undocumented instructions without warning. +
-warn-unportable-instructions
-Wup
Issue warnings for other undocumented Z80-instructions, do not treat any +undocumented instructions as errors. +
-forbid-undocumented-instructions
-Fud
Treat all undocumented z80-instructions as errors. +
-forbid-unportable-instructions
-Fup
Treat undocumented z80-instructions that do not work on R800 as errors. + +


-r800
Produce code for the R800 processor. The assembler does not support +undocumented instructions for the R800. +In line with common practice, as uses Z80 instruction names +for the R800 processor, as far as they exist. +
+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Syntax.html new file mode 100644 index 0000000..e1706d4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80-Syntax.html @@ -0,0 +1,68 @@ + + +Z80 Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Z80 Options, +Up: Z80-Dependent +



+
+ +

9.32.2 Syntax

+ +

The assembler syntax closely follows the 'Z80 family CPU User Manual' by +Zilog. +In expressions a single = may be used as “is equal to” +comparison operator. + +

Suffices can be used to indicate the radix of integer constants; +H or h for hexadecimal, D or d for decimal, +Q, O, q or o for octal, and B for +binary. + +

The suffix b denotes a backreference to local label. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Directives.html new file mode 100644 index 0000000..4f4ffef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Directives.html @@ -0,0 +1,93 @@ + + +Z8000 Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Z8000 Syntax, +Up: Z8000-Dependent +



+
+ +

9.33.3 Assembler Directives for the Z8000

+ +

The Z8000 port of as includes additional assembler directives, +for compatibility with other Z8000 assemblers. These do not begin with +. (unlike the ordinary as directives). + + + +

segm
.z8001
Generate code for the segmented Z8001. + +


unsegm
.z8002
Generate code for the unsegmented Z8002. + +


name
Synonym for .file + +


global
Synonym for .global + +


wval
Synonym for .word + +


lval
Synonym for .long + +


bval
Synonym for .byte + +


sval
Assemble a string. sval expects one string literal, delimited by +single quotes. It assembles each byte of the string into consecutive +addresses. You can use the escape sequence %xx (where +xx represents a two-digit hexadecimal number) to represent the +character whose ascii value is xx. Use this feature to +describe single quote and other characters that may not appear in string +literals as themselves. For example, the C statement char *a = "he said \"it's 50% off\""; is represented in Z8000 assembly language +(shown with the assembler output in hex at the left) as + +
          68652073    sval    'he said %22it%27s 50%25 off%22%00'
+          61696420
+          22697427
+          73203530
+          25206F66
+          662200
+     
+


rsect
synonym for .section + +


block
synonym for .space + +


even
special case of .align; aligns output to even byte boundary. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Opcodes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Opcodes.html new file mode 100644 index 0000000..da72147 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Opcodes.html @@ -0,0 +1,56 @@ + + +Z8000 Opcodes - Using as + + + + + + + + + + + + +
+

+Previous: Z8000 Directives, +Up: Z8000-Dependent +



+
+ +

9.33.4 Opcodes

+ +

For detailed information on the Z8000 machine instruction set, see +Z8000 Technical Manual. + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Options.html new file mode 100644 index 0000000..e9a69c9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Options.html @@ -0,0 +1,56 @@ + + +Z8000 Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Z8000-Dependent +



+
+ +

9.33.1 Options

+ +

+ + +

-z8001
Generate segmented code by default. + +


-z8002
Generate unsegmented code by default. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Syntax.html new file mode 100644 index 0000000..bfdd285 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000-Syntax.html @@ -0,0 +1,56 @@ + + +Z8000 Syntax - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Z8000 Options, +Up: Z8000-Dependent +



+
+ +

9.33.2 Syntax

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dAddressing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dAddressing.html new file mode 100644 index 0000000..5ab339f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dAddressing.html @@ -0,0 +1,73 @@ + + +Z8000-Addressing - Using as + + + + + + + + + + + + +
+

+Previous: Z8000-Regs, +Up: Z8000 Syntax +



+
+ +
9.33.2.3 Addressing Modes
+ +

as understands the following addressing modes for the Z8000: + +

+
rln
rhn
rn
rrn
rqn
Register direct: 8bit, 16bit, 32bit, and 64bit registers. + +
@rn
@rrn
Indirect register: @rrn in segmented mode, @rn in unsegmented +mode. + +
addr
Direct: the 16 bit or 24 bit address (depending on whether the assembler +is in segmented or unsegmented mode) of the operand is in the instruction. + +
address(rn)
Indexed: the 16 or 24 bit address is added to the 16 bit register to produce +the final address in memory of the operand. + +
rn(#imm)
rrn(#imm)
Base Address: the 16 or 24 bit register is added to the 16 bit sign +extended immediate displacement to produce the final address in memory +of the operand. + +
rn(rm)
rrn(rm)
Base Index: the 16 or 24 bit register rn or rrn is added to +the sign extended 16 bit index register rm to produce the final +address in memory of the operand. + +
#xx
Immediate data xx. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dChars.html new file mode 100644 index 0000000..c0609e3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dChars.html @@ -0,0 +1,52 @@ + + +Z8000-Chars - Using as + + + + + + + + + + + + +
+

+Next: , +Up: Z8000 Syntax +



+
+ +
9.33.2.1 Special Characters
+ +

! is the line comment character. + +

You can use ; instead of a newline to separate statements. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dDependent.html new file mode 100644 index 0000000..397ea71 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dDependent.html @@ -0,0 +1,68 @@ + + +Z8000-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Z80-Dependent, +Up: Machine Dependencies +



+
+ +

9.33 Z8000 Dependent Features

+ +

The Z8000 as supports both members of the Z8000 family: the +unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with +24 bit addresses. + +

When the assembler is in unsegmented mode (specified with the +unsegm directive), an address takes up one word (16 bit) +sized register. When the assembler is in segmented mode (specified with +the segm directive), a 24-bit address takes up a long (32 bit) +register. See Assembler Directives for the Z8000, +for a list of other Z8000 specific assembler directives. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dRegs.html new file mode 100644 index 0000000..16f8d15 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z8000_002dRegs.html @@ -0,0 +1,70 @@ + + +Z8000-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Z8000-Chars, +Up: Z8000 Syntax +



+
+ +
9.33.2.2 Register Names
+ +

The Z8000 has sixteen 16 bit registers, numbered 0 to 15. You can refer +to different sized groups of registers by register number, with the +prefix r for 16 bit registers, rr for 32 bit registers and +rq for 64 bit registers. You can also refer to the contents of +the first eight (of the sixteen 16 bit registers) by bytes. They are +named rln and rhn. + +


byte registers
+ rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3 + rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7 + +
word registers
+ r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 + +
long word registers
+ rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14 + +
quad word registers
+ rq0 rq4 rq8 rq12 +
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dCase.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dCase.html new file mode 100644 index 0000000..bd34208 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dCase.html @@ -0,0 +1,55 @@ + + +Z80-Case - Using as + + + + + + + + + + + + +
+

+Previous: Z80-Regs, +Up: Z80 Syntax +



+
+ +
9.32.2.3 Case Sensitivity
+ +

+Upper and lower case are equivalent in register names, opcodes, +condition codes and assembler directives. +The case of letters is significant in labels and symbol names. The case +is also important to distinguish the suffix b for a backward reference +to a local label from the suffix B for a number in binary notation. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dChars.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dChars.html new file mode 100644 index 0000000..5077e6c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dChars.html @@ -0,0 +1,59 @@ + + +Z80-Chars - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Z80 Syntax +



+
+ +
9.32.2.1 Special Characters
+ +

The semicolon ; is the line comment character; + +

The dollar sign $ can be used as a prefix for hexadecimal numbers +and as a symbol denoting the current location counter. + +

A backslash \ is an ordinary character for the Z80 assembler. + +

The single quote ' must be followed by a closing quote. If there +is one character in between, it is a character constant, otherwise it is +a string constant. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dDependent.html new file mode 100644 index 0000000..507638b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dDependent.html @@ -0,0 +1,60 @@ + + +Z80-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Xtensa-Dependent, +Up: Machine Dependencies +



+
+ +

9.32 Z80 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dRegs.html new file mode 100644 index 0000000..214af4e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/Z80_002dRegs.html @@ -0,0 +1,57 @@ + + +Z80-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Z80-Chars, +Up: Z80 Syntax +



+
+ +
9.32.2.2 Register Names
+ +

+The registers are referred to with the letters assigned to them by +Zilog. In addition as recognizes ixl and +ixh as the least and most significant octet in ix, and +similarly iyl and iyh as parts of iy. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/a.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/a.html new file mode 100644 index 0000000..91deaec --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/a.html @@ -0,0 +1,89 @@ + + +a - Using as + + + + + + + + + + + + +

+

+Next: , +Up: Invoking +



+
+ +

2.1 Enable Listings: -a[cdghlns]

+ +

+These options enable listing output from the assembler. By itself, +-a requests high-level, assembly, and symbols listing. +You can use other letters to select specific options for the list: +-ah requests a high-level language listing, +-al requests an output-program assembly listing, and +-as requests a symbol table listing. +High-level listings require that a compiler debugging option like +-g be used, and that assembly listings (-al) be requested +also. + +

Use the -ag option to print a first section with general assembly +information, like as version, switches passed, or time stamp. + +

Use the -ac option to omit false conditionals from a listing. Any lines +which are not assembled because of a false .if (or .ifdef, or any +other conditional), or a true .if followed by an .else, will be +omitted from the listing. + +

Use the -ad option to omit debugging directives from the +listing. + +

Once you have specified one of these options, you can further control +listing output and its appearance using the directives .list, +.nolist, .psize, .eject, .title, and +.sbttl. +The -an option turns off all forms processing. +If you do not request listing output with one of the -a options, the +listing-control directives have no effect. + +

The letters after -a may be combined into one option, +e.g., -aln. + +

Note if the assembler source is coming from the standard input (e.g., +because it +is being created by gcc and the -pipe command line switch +is being used) then the listing will not contain any comments or preprocessor +directives. This is because the listing code buffers input source lines from +stdin only after they have been preprocessed by the assembler. This reduces +memory usage and makes the code more efficient. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/a_002eout-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/a_002eout-Symbols.html new file mode 100644 index 0000000..6cd2272 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/a_002eout-Symbols.html @@ -0,0 +1,57 @@ + + +a.out Symbols - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: Symbol Type, +Up: Symbol Attributes +



+
+ +

5.5.3 Symbol Attributes: a.out

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/alternate.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/alternate.html new file mode 100644 index 0000000..c3da15d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/alternate.html @@ -0,0 +1,52 @@ + + +alternate - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: a, +Up: Invoking +



+
+ +

2.2 --alternate

+ +

Begin in alternate macro mode, see .altmacro. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005ffnend.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005ffnend.html new file mode 100644 index 0000000..c2aae75 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005ffnend.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005ffnstart.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005ffnstart.html new file mode 100644 index 0000000..fb71eaf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005ffnstart.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fmovsp.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fmovsp.html new file mode 100644 index 0000000..1895fb8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fmovsp.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fpad.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fpad.html new file mode 100644 index 0000000..5d5cafb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fpad.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fsave.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fsave.html new file mode 100644 index 0000000..d6e58c4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fsave.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fsetfp.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fsetfp.html new file mode 100644 index 0000000..c1a2348 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/arm_005fsetfp.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/bss.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/bss.html new file mode 100644 index 0000000..a18c332 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/bss.html @@ -0,0 +1,66 @@ + + +bss - Using as + + + + + + + + + + + + +

+

+Previous: Sub-Sections, +Up: Sections +



+
+ +

4.5 bss Section

+ +

The bss section is used for local common variable storage. +You may allocate address space in the bss section, but you may +not dictate data to load into it before your program executes. When +your program starts running, all the contents of the bss +section are zeroed bytes. + +

The .lcomm pseudo-op defines a symbol in the bss section; see +.lcomm. + +

The .comm pseudo-op may be used to declare a common symbol, which is +another form of uninitialized symbol; see .comm. + +

When assembling for a target which supports multiple sections, such as ELF or +COFF, you may switch into the .bss section and define symbols as usual; +see .section. You may only assemble zero values into the +section. Typically the section will only contain symbol definitions and +.skip directives (see .skip). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/callj_002di960.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/callj_002di960.html new file mode 100644 index 0000000..cb3c7dc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/callj_002di960.html @@ -0,0 +1,56 @@ + + +callj-i960 - Using as + + + + + + + + + + + + +

+ +
9.15.4.1 callj
+ +

You can write callj to have the assembler or the linker determine +the most appropriate form of subroutine call: call, +bal, or calls. If the assembly source contains +enough information—a .leafproc or .sysproc directive +defining the operand—then as translates the +callj; if not, it simply emits the callj, leaving it +for the linker to resolve. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/crisnous.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/crisnous.html new file mode 100644 index 0000000..36abf7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/crisnous.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/crispic.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/crispic.html new file mode 100644 index 0000000..f9d67ef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/crispic.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/f.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/f.html new file mode 100644 index 0000000..7a62837 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/f.html @@ -0,0 +1,61 @@ + + +f - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: D, +Up: Invoking +



+
+ +

2.4 Work Faster: -f

+ +

-f should only be used when assembling programs written by a +(trusted) compiler. -f stops the assembler from doing whitespace +and comment preprocessing on +the input file(s) before assembling them. See Preprocessing. + +

+Warning: if you use -f when the files actually need to be +preprocessed (if they contain comments, for example), as does +not work correctly. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/hword.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/hword.html new file mode 100644 index 0000000..13cb246 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/hword.html @@ -0,0 +1,56 @@ + + +hword - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: Hidden, +Up: Pseudo Ops +



+
+ +

7.59 .hword expressions

+ +

This expects zero or more expressions, and emits +a 16 bit number for each. + +

This directive is a synonym for .short; depending on the target +architecture, it may also be a synonym for .word. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002d16bit.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002d16bit.html new file mode 100644 index 0000000..80a52b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002d16bit.html @@ -0,0 +1,88 @@ + + +i386-16bit - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: i386-SIMD, +Up: i386-Dependent +



+
+ +

9.13.12 Writing 16-bit Code

+ +

While as normally writes only “pure” 32-bit i386 code +or 64-bit x86-64 code depending on the default configuration, +it also supports writing code to run in real mode or in 16-bit protected +mode code segments. To do this, put a .code16 or +.code16gcc directive before the assembly language instructions to +be run in 16-bit mode. You can switch as back to writing +normal 32-bit code with the .code32 directive. + +

.code16gcc provides experimental support for generating 16-bit +code from gcc, and differs from .code16 in that call, +ret, enter, leave, push, pop, +pusha, popa, pushf, and popf instructions +default to 32-bit size. This is so that the stack pointer is +manipulated in the same way over function calls, allowing access to +function parameters at the same stack offsets as in 32-bit mode. +.code16gcc also automatically adds address size prefixes where +necessary to use the 32-bit addressing modes that gcc generates. + +

The code which as generates in 16-bit mode will not +necessarily run on a 16-bit pre-80386 processor. To write code that +runs on such a processor, you must refrain from using any 32-bit +constructs which require as to output address or operand +size prefixes. + +

Note that writing 16-bit code instructions by explicitly specifying a +prefix or an instruction mnemonic suffix within a 32-bit code section +generates different machine instructions than those generated for a +16-bit code segment. In a 32-bit code section, the following code +generates the machine opcode bytes 66 6a 04, which pushes the +value 4 onto the stack, decrementing %esp by 2. + +

             pushw $4
+
+

The same code in a 16-bit code section would generate the machine +opcode bytes 6a 04 (i.e., without the operand size prefix), which +is correct since the processor default operand size is assumed to be 16 +bits in a 16-bit code section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dArch.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dArch.html new file mode 100644 index 0000000..25a112a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dArch.html @@ -0,0 +1,100 @@ + + +i386-Arch - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: i386-16bit, +Up: i386-Dependent +



+
+ +

9.13.14 Specifying CPU Architecture

+ +

+as may be told to assemble for a particular CPU +(sub-)architecture with the .arch cpu_type directive. This +directive enables a warning when gas detects an instruction that is not +supported on the CPU specified. The choices for cpu_type are: + +

i8086 i186 i286 i386 +
i486 i586 i686 pentium +
pentiumpro pentiumii pentiumiii pentium4 +
prescott nocona core core2 +
k6 k6_2 athlon k8 +
amdfam10 +
generic32 generic64 +
.mmx .sse .sse2 .sse3 +
.ssse3 .sse4.1 .sse4.2 .sse4 +
.avx .vmx .smx .xsave +
.aes .pclmul .fma .movbe +
.ept +
.3dnow .3dnowa .sse4a .sse5 +
.svme .abm +
.padlock +
+ +

Apart from the warning, there are only two other effects on +as operation; Firstly, if you specify a CPU other than +i486, then shift by one instructions such as sarl $1, %eax +will automatically use a two byte opcode sequence. The larger three +byte opcode sequence is used on the 486 (and when no architecture is +specified) because it executes faster on the 486. Note that you can +explicitly request the two byte opcode by writing sarl %eax. +Secondly, if you specify i8086, i186, or i286, +and .code16 or .code16gcc then byte offset +conditional jumps will be promoted when necessary to a two instruction +sequence consisting of a conditional jump of the opposite sense around +an unconditional jump to the target. + +

Following the CPU architecture (but not a sub-architecture, which are those +starting with a dot), you may specify jumps or nojumps to +control automatic promotion of conditional jumps. jumps is the +default, and enables jump promotion; All external jumps will be of the long +variety, and file-local jumps will be promoted as necessary. +(see i386-Jumps) nojumps leaves external conditional jumps as +byte offset jumps, and warns about file-local conditional jumps that +as promotes. +Unconditional jumps are treated as for jumps. + +

For example + +

      .arch i8086,nojumps
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dBugs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dBugs.html new file mode 100644 index 0000000..c917494 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dBugs.html @@ -0,0 +1,66 @@ + + +i386-Bugs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Arch, +Up: i386-Dependent +



+
+ +

9.13.13 AT&T Syntax bugs

+ +

The UnixWare assembler, and probably other AT&T derived ix86 Unix +assemblers, generate floating point instructions with reversed source +and destination registers in certain cases. Unfortunately, gcc and +possibly many other programs use this reversed syntax, so we're stuck +with it. + +

For example + +

             fsub %st,%st(3)
+
+

results in %st(3) being updated to %st - %st(3) rather +than the expected %st(3) - %st. This happens with all the +non-commutative arithmetic floating point operations with two register +operands where the source register is %st and the destination +register is %st(i). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dDependent.html new file mode 100644 index 0000000..c9cebbf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dDependent.html @@ -0,0 +1,72 @@ + + +i386-Dependent - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: ESA/390-Dependent, +Up: Machine Dependencies +



+
+ +

9.13 80386 Dependent Features

+ +

+The i386 version as supports both the original Intel 386 +architecture in both 16 and 32-bit mode as well as AMD x86-64 architecture +extending the Intel architecture to 64-bits. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dDirectives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dDirectives.html new file mode 100644 index 0000000..67029ff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dDirectives.html @@ -0,0 +1,67 @@ + + +i386-Directives - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Options, +Up: i386-Dependent +



+
+ +

9.13.2 x86 specific Directives

+ +

+ + +

.lcomm symbol , length[, alignment]
Reserve length (an absolute expression) bytes for a local common +denoted by symbol. The section and value of symbol are +those of the new local common. The addresses are allocated in the bss +section, so that at run-time the bytes start off zeroed. Since +symbol is not declared global, it is normally not visible to +ld. The optional third parameter, alignment, +specifies the desired alignment of the symbol in the bss section. + +

This directive is only available for COFF based x86 targets. + + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dFloat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dFloat.html new file mode 100644 index 0000000..b4fa59a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dFloat.html @@ -0,0 +1,83 @@ + + +i386-Float - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Jumps, +Up: i386-Dependent +



+
+ +

9.13.10 Floating Point

+ +

All 80387 floating point types except packed BCD are supported. +(BCD support may be added without much difficulty). These data +types are 16-, 32-, and 64- bit integers, and single (32-bit), +double (64-bit), and extended (80-bit) precision floating point. +Each supported type has an instruction mnemonic suffix and a constructor +associated with it. Instruction mnemonic suffixes specify the operand's +data type. Constructors build these data types into memory. + +

+

    +
  • Floating point constructors are .float or .single, +.double, and .tfloat for 32-, 64-, and 80-bit formats. +These correspond to instruction mnemonic suffixes s, l, +and t. t stands for 80-bit (ten byte) real. The 80387 +only supports this format via the fldt (load 80-bit real to stack +top) and fstpt (store 80-bit real and pop stack) instructions. + +

  • Integer constructors are .word, .long or .int, and +.quad for the 16-, 32-, and 64-bit integer formats. The +corresponding instruction mnemonic suffixes are s (single), +l (long), and q (quad). As with the 80-bit real format, +the 64-bit q format is only present in the fildq (load +quad integer to stack top) and fistpq (store quad integer and pop +stack) instructions. +
+ +

Register to register operations should not use instruction mnemonic suffixes. +fstl %st, %st(1) will give a warning, and be assembled as if you +wrote fst %st, %st(1), since all register to register operations +use 80-bit floating point operands. (Contrast this with fstl %st, mem, +which converts %st from 80-bit to 64-bit floating point format, +then stores the result in the 4 byte location mem) + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dJumps.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dJumps.html new file mode 100644 index 0000000..ddd7784 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dJumps.html @@ -0,0 +1,71 @@ + + +i386-Jumps - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: i386-Memory, +Up: i386-Dependent +



+
+ +

9.13.9 Handling of Jump Instructions

+ +

Jump instructions are always optimized to use the smallest possible +displacements. This is accomplished by using byte (8-bit) displacement +jumps whenever the target is sufficiently close. If a byte displacement +is insufficient a long displacement is used. We do not support +word (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump +instruction with the data16 instruction prefix), since the 80386 +insists upon masking %eip to 16 bits after the word displacement +is added. (See also see i386-Arch) + +

Note that the jcxz, jecxz, loop, loopz, +loope, loopnz and loopne instructions only come in byte +displacements, so that if you use these instructions (gcc does +not use them) you may get an error message (and incorrect code). The AT&T +80386 assembler tries to get around this problem by expanding jcxz foo +to + +

              jcxz cx_zero
+              jmp cx_nonzero
+     cx_zero: jmp foo
+     cx_nonzero:
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dMemory.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dMemory.html new file mode 100644 index 0000000..c9cef0c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dMemory.html @@ -0,0 +1,115 @@ + + +i386-Memory - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Prefixes, +Up: i386-Dependent +



+
+ +

9.13.8 Memory References

+ +

An Intel syntax indirect memory reference of the form + +

     section:[base + index*scale + disp]
+
+

is translated into the AT&T syntax + +

     section:disp(base, index, scale)
+
+

where base and index are the optional 32-bit base and +index registers, disp is the optional displacement, and +scale, taking the values 1, 2, 4, and 8, multiplies index +to calculate the address of the operand. If no scale is +specified, scale is taken to be 1. section specifies the +optional section register for the memory operand, and may override the +default section register (see a 80386 manual for section register +defaults). Note that section overrides in AT&T syntax must +be preceded by a %. If you specify a section override which +coincides with the default section register, as does not +output any section register override prefixes to assemble the given +instruction. Thus, section overrides can be specified to emphasize which +section register is used for a given memory operand. + +

Here are some examples of Intel and AT&T style memory references: + +

+
AT&T: -4(%ebp), Intel: [ebp - 4]
base is %ebp; disp is -4. section is +missing, and the default section is used (%ss for addressing with +%ebp as the base register). index, scale are both missing. + +
AT&T: foo(,%eax,4), Intel: [foo + eax*4]
index is %eax (scaled by a scale 4); disp is +foo. All other fields are missing. The section register here +defaults to %ds. + +
AT&T: foo(,1); Intel [foo]
This uses the value pointed to by foo as a memory operand. +Note that base and index are both missing, but there is only +one ,. This is a syntactic exception. + +
AT&T: %gs:foo; Intel gs:foo
This selects the contents of the variable foo with section +register section being %gs. +
+ +

Absolute (as opposed to PC relative) call and jump operands must be +prefixed with *. If no * is specified, as +always chooses PC relative addressing for jump/call labels. + +

Any instruction that has a memory operand, but no register operand, +must specify its size (byte, word, long, or quadruple) with an +instruction mnemonic suffix (b, w, l or q, +respectively). + +

The x86-64 architecture adds an RIP (instruction pointer relative) +addressing. This addressing mode is specified by using rip as a +base register. Only constant offsets are valid. For example: + +

+
AT&T: 1234(%rip), Intel: [rip + 1234]
Points to the address 1234 bytes past the end of the current +instruction. + +
AT&T: symbol(%rip), Intel: [rip + symbol]
Points to the symbol in RIP relative way, this is shorter than +the default absolute addressing. +
+ +

Other addressing modes remain unchanged in x86-64 architecture, except +registers used are 64-bit instead of 32-bit. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dMnemonics.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dMnemonics.html new file mode 100644 index 0000000..a4ecf72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dMnemonics.html @@ -0,0 +1,118 @@ + + +i386-Mnemonics - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: i386-Syntax, +Up: i386-Dependent +



+
+ +

9.13.4 Instruction Naming

+ +

+Instruction mnemonics are suffixed with one character modifiers which +specify the size of operands. The letters b, w, l +and q specify byte, word, long and quadruple word operands. If +no suffix is specified by an instruction then as tries to +fill in the missing suffix based on the destination register operand +(the last one by convention). Thus, mov %ax, %bx is equivalent +to movw %ax, %bx; also, mov $1, %bx is equivalent to +movw $1, bx. Note that this is incompatible with the AT&T Unix +assembler which assumes that a missing mnemonic suffix implies long +operand size. (This incompatibility does not affect compiler output +since compilers always explicitly specify the mnemonic suffix.) + +

Almost all instructions have the same names in AT&T and Intel format. +There are a few exceptions. The sign extend and zero extend +instructions need two sizes to specify them. They need a size to +sign/zero extend from and a size to zero extend to. This +is accomplished by using two instruction mnemonic suffixes in AT&T +syntax. Base names for sign extend and zero extend are +movs... and movz... in AT&T syntax (movsx +and movzx in Intel syntax). The instruction mnemonic suffixes +are tacked on to this base name, the from suffix before the +to suffix. Thus, movsbl %al, %edx is AT&T syntax for +“move sign extend from %al to %edx.” Possible suffixes, +thus, are bl (from byte to long), bw (from byte to word), +wl (from word to long), bq (from byte to quadruple word), +wq (from word to quadruple word), and lq (from long to +quadruple word). + +

The Intel-syntax conversion instructions + +

    +
  • cbw — sign-extend byte in %al to word in %ax, + +
  • cwde — sign-extend word in %ax to long in %eax, + +
  • cwd — sign-extend word in %ax to long in %dx:%ax, + +
  • cdq — sign-extend dword in %eax to quad in %edx:%eax, + +
  • cdqe — sign-extend dword in %eax to quad in %rax +(x86-64 only), + +
  • cqo — sign-extend quad in %rax to octuple in +%rdx:%rax (x86-64 only), +
+ +

are called cbtw, cwtl, cwtd, cltd, cltq, and +cqto in AT&T naming. as accepts either naming for these +instructions. + +

Far call/jump instructions are lcall and ljmp in +AT&T syntax, but are call far and jump far in Intel +convention. + +

9.13.5 AT&T Mnemonic versus Intel Mnemonic

+ +

+as supports assembly using Intel mnemonic. +.intel_mnemonic selects Intel mnemonic with Intel syntax, and +.att_mnemonic switches back to the usual AT&T mnemonic with AT&T +syntax for compatibility with the output of gcc. +Several x87 instructions, fadd, fdiv, fdivp, +fdivr, fdivrp, fmul, fsub, fsubp, +fsubr and fsubrp, are implemented in AT&T System V/386 +assembler with different mnemonics from those in Intel IA32 specification. +gcc generates those instructions with AT&T mnemonic. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dNotes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dNotes.html new file mode 100644 index 0000000..8bae1b1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dNotes.html @@ -0,0 +1,66 @@ + + +i386-Notes - Using as + + + + + + + + + + + + +

+

+Previous: i386-Bugs, +Up: i386-Dependent +



+
+ +

9.13.15 Notes

+ +

There is some trickery concerning the mul and imul +instructions that deserves mention. The 16-, 32-, 64- and 128-bit expanding +multiplies (base opcode 0xf6; extension 4 for mul and 5 +for imul) can be output only in the one operand form. Thus, +imul %ebx, %eax does not select the expanding multiply; +the expanding multiply would clobber the %edx register, and this +would confuse gcc output. Use imul %ebx to get the +64-bit product in %edx:%eax. + +

We have added a two operand form of imul when the first operand +is an immediate mode expression and the second operand is a register. +This is just a shorthand, so that, multiplying %eax by 69, for +example, can be done with imul $69, %eax rather than imul +$69, %eax, %eax. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dOptions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dOptions.html new file mode 100644 index 0000000..a6cb332 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dOptions.html @@ -0,0 +1,168 @@ + + +i386-Options - Using as + + + + + + + + + + + + +

+

+Next: , +Up: i386-Dependent +



+
+ +

9.13.1 Options

+ +

+The i386 version of as has a few machine +dependent options: + + + + + + +

--32 | --64
Select the word size, either 32 bits or 64 bits. Selecting 32-bit +implies Intel i386 architecture, while 64-bit implies AMD x86-64 +architecture. + +

These options are only available with the ELF object file format, and +require that the necessary BFD support has been included (on a 32-bit +platform you have to add –enable-64-bit-bfd to configure enable 64-bit +usage and use x86-64 as target platform). + +

-n
By default, x86 GAS replaces multiple nop instructions used for +alignment within code sections with multi-byte nop instructions such +as leal 0(%esi,1),%esi. This switch disables the optimization. + +


--divide
On SVR4-derived platforms, the character / is treated as a comment +character, which means that it cannot be used in expressions. The +--divide option turns / into a normal character. This does +not disable / at the beginning of a line starting a comment, or +affect using # for starting a comment. + +


-march=CPU[+EXTENSION...]
This option specifies the target processor. The assembler will +issue an error message if an attempt is made to assemble an instruction +which will not execute on the target processor. The following +processor names are recognized: +i8086, +i186, +i286, +i386, +i486, +i586, +i686, +pentium, +pentiumpro, +pentiumii, +pentiumiii, +pentium4, +prescott, +nocona, +core, +core2, +k6, +k6_2, +athlon, +opteron, +k8, +amdfam10, +generic32 and +generic64. + +

In addition to the basic instruction set, the assembler can be told to +accept various extension mnemonics. For example, +-march=i686+sse4+vmx extends i686 with sse4 and +vmx. The following extensions are currently supported: +mmx, +sse, +sse2, +sse3, +ssse3, +sse4.1, +sse4.2, +sse4, +avx, +vmx, +smx, +xsave, +aes, +pclmul, +fma, +movbe, +ept, +3dnow, +3dnowa, +sse4a, +sse5, +svme, +abm and +padlock. + +

When the .arch directive is used with -march, the +.arch directive will take precedent. + +


-mtune=CPU
This option specifies a processor to optimize for. When used in +conjunction with the -march option, only instructions +of the processor specified by the -march option will be +generated. + +

Valid CPU values are identical to the processor list of +-march=CPU. + +


-msse2avx
This option specifies that the assembler should encode SSE instructions +with VEX prefix. + +


-msse-check=none
-msse-check=warning
-msse-check=error
These options control if the assembler should check SSE intructions. +-msse-check=none will make the assembler not to check SSE +instructions, which is the default. -msse-check=warning +will make the assembler issue a warning for any SSE intruction. +-msse-check=error will make the assembler issue an error +for any SSE intruction. + +


-mmnemonic=att
-mmnemonic=intel
This option specifies instruction mnemonic for matching instructions. +The .att_mnemonic and .intel_mnemonic directives will +take precedent. + +


-msyntax=att
-msyntax=intel
This option specifies instruction syntax when processing instructions. +The .att_syntax and .intel_syntax directives will +take precedent. + +


-mnaked-reg
This opetion specifies that registers don't require a % prefix. +The .att_syntax and .intel_syntax directives will take precedent. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dPrefixes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dPrefixes.html new file mode 100644 index 0000000..4aa4f3a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dPrefixes.html @@ -0,0 +1,108 @@ + + +i386-Prefixes - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Regs, +Up: i386-Dependent +



+
+ +

9.13.7 Instruction Prefixes

+ +

Instruction prefixes are used to modify the following instruction. They +are used to repeat string instructions, to provide section overrides, to +perform bus lock operations, and to change operand and address sizes. +(Most instructions that normally operate on 32-bit operands will use +16-bit operands if the instruction has an “operand size” prefix.) +Instruction prefixes are best written on the same line as the instruction +they act upon. For example, the scas (scan string) instruction is +repeated with: + +

             repne scas %es:(%edi),%al
+
+

You may also place prefixes on the lines immediately preceding the +instruction, but this circumvents checks that as does +with prefixes, and will not work with all prefixes. + +

Here is a list of instruction prefixes: + +

+

    +
  • Section override prefixes cs, ds, ss, es, +fs, gs. These are automatically added by specifying +using the section:memory-operand form for memory references. + +

  • Operand/Address size prefixes data16 and addr16 +change 32-bit operands/addresses into 16-bit operands/addresses, +while data32 and addr32 change 16-bit ones (in a +.code16 section) into 32-bit operands/addresses. These prefixes +must appear on the same line of code as the instruction they +modify. For example, in a 16-bit .code16 section, you might +write: + +
                      addr32 jmpl *(%ebx)
    +     
    +

  • The bus lock prefix lock inhibits interrupts during execution of +the instruction it precedes. (This is only valid with certain +instructions; see a 80386 manual for details). + +

  • The wait for coprocessor prefix wait waits for the coprocessor to +complete the current instruction. This should never be needed for the +80386/80387 combination. + +

  • The rep, repe, and repne prefixes are added +to string instructions to make them repeat %ecx times (%cx +times if the current address size is 16-bits). +
  • The rex family of prefixes is used by x86-64 to encode +extensions to i386 instruction set. The rex prefix has four +bits — an operand size overwrite (64) used to change operand size +from 32-bit to 64-bit and X, Y and Z extensions bits used to extend the +register set. + +

    You may write the rex prefixes directly. The rex64xyz +instruction emits rex prefix with all the bits set. By omitting +the 64, x, y or z you may write other +prefixes as well. Normally, there is no need to write the prefixes +explicitly, since gas will automatically generate them based on the +instruction operands. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dRegs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dRegs.html new file mode 100644 index 0000000..c7d77fb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dRegs.html @@ -0,0 +1,112 @@ + + +i386-Regs - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Mnemonics, +Up: i386-Dependent +



+
+ +

9.13.6 Register Naming

+ +

Register operands are always prefixed with %. The 80386 registers +consist of + +

    +
  • the 8 32-bit registers %eax (the accumulator), %ebx, +%ecx, %edx, %edi, %esi, %ebp (the +frame pointer), and %esp (the stack pointer). + +
  • the 8 16-bit low-ends of these: %ax, %bx, %cx, +%dx, %di, %si, %bp, and %sp. + +
  • the 8 8-bit registers: %ah, %al, %bh, +%bl, %ch, %cl, %dh, and %dl (These +are the high-bytes and low-bytes of %ax, %bx, +%cx, and %dx) + +
  • the 6 section registers %cs (code section), %ds +(data section), %ss (stack section), %es, %fs, +and %gs. + +
  • the 3 processor control registers %cr0, %cr2, and +%cr3. + +
  • the 6 debug registers %db0, %db1, %db2, +%db3, %db6, and %db7. + +
  • the 2 test registers %tr6 and %tr7. + +
  • the 8 floating point register stack %st or equivalently +%st(0), %st(1), %st(2), %st(3), +%st(4), %st(5), %st(6), and %st(7). +These registers are overloaded by 8 MMX registers %mm0, +%mm1, %mm2, %mm3, %mm4, %mm5, +%mm6 and %mm7. + +
  • the 8 SSE registers registers %xmm0, %xmm1, %xmm2, +%xmm3, %xmm4, %xmm5, %xmm6 and %xmm7. +
+ +

The AMD x86-64 architecture extends the register set by: + +

    +
  • enhancing the 8 32-bit registers to 64-bit: %rax (the +accumulator), %rbx, %rcx, %rdx, %rdi, +%rsi, %rbp (the frame pointer), %rsp (the stack +pointer) + +
  • the 8 extended registers %r8%r15. + +
  • the 8 32-bit low ends of the extended registers: %r8d%r15d + +
  • the 8 16-bit low ends of the extended registers: %r8w%r15w + +
  • the 8 8-bit low ends of the extended registers: %r8b%r15b + +
  • the 4 8-bit registers: %sil, %dil, %bpl, %spl. + +
  • the 8 debug registers: %db8%db15. + +
  • the 8 SSE registers: %xmm8%xmm15. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dSIMD.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dSIMD.html new file mode 100644 index 0000000..50df809 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dSIMD.html @@ -0,0 +1,70 @@ + + +i386-SIMD - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Float, +Up: i386-Dependent +



+
+ +

9.13.11 Intel's MMX and AMD's 3DNow! SIMD Operations

+ +

+as supports Intel's MMX instruction set (SIMD +instructions for integer data), available on Intel's Pentium MMX +processors and Pentium II processors, AMD's K6 and K6-2 processors, +Cyrix' M2 processor, and probably others. It also supports AMD's 3DNow! +instruction set (SIMD instructions for 32-bit floating point data) +available on AMD's K6-2 processor and possibly others in the future. + +

Currently, as does not support Intel's floating point +SIMD, Katmai (KNI). + +

The eight 64-bit MMX operands, also used by 3DNow!, are called %mm0, +%mm1, ... %mm7. They contain eight 8-bit integers, four +16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit +floating point values. The MMX registers cannot be used at the same time +as the floating point stack. + +

See Intel and AMD documentation, keeping in mind that the operand order in +instructions is reversed from the Intel syntax. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dSyntax.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dSyntax.html new file mode 100644 index 0000000..d40b6f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i386_002dSyntax.html @@ -0,0 +1,98 @@ + + +i386-Syntax - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: i386-Directives, +Up: i386-Dependent +



+
+ +

9.13.3 AT&T Syntax versus Intel Syntax

+ +

+as now supports assembly using Intel assembler syntax. +.intel_syntax selects Intel mode, and .att_syntax switches +back to the usual AT&T mode for compatibility with the output of +gcc. Either of these directives may have an optional +argument, prefix, or noprefix specifying whether registers +require a % prefix. AT&T System V/386 assembler syntax is quite +different from Intel syntax. We mention these differences because +almost all 80386 documents use Intel syntax. Notable differences +between the two syntaxes are: + +

+ +

    +
  • AT&T immediate operands are preceded by $; Intel immediate +operands are undelimited (Intel push 4 is AT&T pushl $4). +AT&T register operands are preceded by %; Intel register operands +are undelimited. AT&T absolute (as opposed to PC relative) jump/call +operands are prefixed by *; they are undelimited in Intel syntax. + +

  • AT&T and Intel syntax use the opposite order for source and destination +operands. Intel add eax, 4 is addl $4, %eax. The +source, dest convention is maintained for compatibility with +previous Unix assemblers. Note that bound, invlpga, and +instructions with 2 immediate operands, such as the enter +instruction, do not have reversed order. i386-Bugs. + +

  • In AT&T syntax the size of memory operands is determined from the last +character of the instruction mnemonic. Mnemonic suffixes of b, +w, l and q specify byte (8-bit), word (16-bit), long +(32-bit) and quadruple word (64-bit) memory references. Intel syntax accomplishes +this by prefixing memory operands (not the instruction mnemonics) with +byte ptr, word ptr, dword ptr and qword ptr. Thus, +Intel mov al, byte ptr foo is movb foo, %al in AT&T +syntax. + +

  • Immediate form long jumps and calls are +lcall/ljmp $section, $offset in AT&T syntax; the +Intel syntax is +call/jmp far section:offset. Also, the far return +instruction +is lret $stack-adjust in AT&T syntax; Intel syntax is +ret far stack-adjust. + +

  • The AT&T assembler does not provide support for multiple section +programs. Unix style systems expect all programs to be single sections. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i860_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i860_002dDependent.html new file mode 100644 index 0000000..8ff1d81 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i860_002dDependent.html @@ -0,0 +1,59 @@ + + +i860-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i386-Dependent, +Up: Machine Dependencies +



+
+ +

9.14 Intel i860 Dependent Features

+ +

+ +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i960_002dDependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i960_002dDependent.html new file mode 100644 index 0000000..e80ba7b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/i960_002dDependent.html @@ -0,0 +1,61 @@ + + +i960-Dependent - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: i860-Dependent, +Up: Machine Dependencies +



+
+ +

9.15 Intel 80960 Dependent Features

+ +

+ +

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/index.html new file mode 100644 index 0000000..258d01f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/index.html @@ -0,0 +1,749 @@ + + +Using as + + + + + + + + + + +

Using as

+
+

Table of Contents

+ +
+ + + +
+

+Next: , +Up: (dir) +



+
+ +

Using as

+ +

This file is a user guide to the gnu assembler as +(GNU Binutils) +version 2.19. + +

This document is distributed under the terms of the GNU Free +Documentation License. A copy of the license is included in the +section entitled “GNU Free Documentation License”. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/listing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/listing.html new file mode 100644 index 0000000..ab63a78 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/listing.html @@ -0,0 +1,76 @@ + + +listing - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: L, +Up: Invoking +



+
+ +

2.8 Configuring listing output: --listing

+ +

The listing feature of the assembler can be enabled via the command line switch +-a (see a). This feature combines the input source file(s) with a +hex dump of the corresponding locations in the output object file, and displays +them as a listing file. The format of this listing can be controlled by +directives inside the assembler source (i.e., .list (see List), +.title (see Title), .sbttl (see Sbttl), +.psize (see Psize), and +.eject (see Eject) and also by the following switches: + +

+
--listing-lhs-width=number
Sets the maximum width, in words, of the first line of the hex byte dump. This +dump appears on the left hand side of the listing output. + +
--listing-lhs-width2=number
Sets the maximum width, in words, of any further lines of the hex byte dump for +a given input source line. If this value is not specified, it defaults to being +the same as the value specified for --listing-lhs-width. If neither +switch is used the default is to one. + +
--listing-rhs-width=number
Sets the maximum width, in characters, of the source line that is displayed +alongside the hex dump. The default value for this parameter is 100. The +source line is displayed on the right hand side of the listing output. + +
--listing-cont-lines=number
Sets the maximum number of continuation lines of hex dump that will be +displayed for a given single line of source input. The default value is 4. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/march_002doption.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/march_002doption.html new file mode 100644 index 0000000..93d1306 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/march_002doption.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/mmixsite.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/mmixsite.html new file mode 100644 index 0000000..1332eba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/mmixsite.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/o.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/o.html new file mode 100644 index 0000000..a189162 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/o.html @@ -0,0 +1,59 @@ + + +o - Using as + + + + + + + + + + + + + +
+

+Next: , +Previous: MD, +Up: Invoking +



+
+ +

2.11 Name the Object File: -o

+ +

There is always one object file output when you run as. By +default it has the name +a.out (or b.out, for Intel 960 targets only). +You use this option (which takes exactly one filename) to give the +object file a different name. + +

Whatever the object file is called, as overwrites any +existing file of the same name. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/statistics.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/statistics.html new file mode 100644 index 0000000..6d384fa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/statistics.html @@ -0,0 +1,55 @@ + + +statistics - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: R, +Up: Invoking +



+
+ +

2.13 Display Assembly Statistics: --statistics

+ +

Use --statistics to display two statistics about the resources used by +as: the maximum amount of space allocated during the assembly +(in bytes), and the total execution time taken for the assembly (in cpu +seconds). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/traditional_002dformat.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/traditional_002dformat.html new file mode 100644 index 0000000..9602496 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/traditional_002dformat.html @@ -0,0 +1,57 @@ + + +traditional-format - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: statistics, +Up: Invoking +



+
+ +

2.14 Compatible Output: --traditional-format

+ +

For some targets, the output of as is different in some ways +from the output of some existing assembler. This switch requests +as to use the traditional format instead. + +

For example, it disables the exception frame optimizations which +as normally does by default on gcc output. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/v.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/v.html new file mode 100644 index 0000000..1140aac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/as.html/v.html @@ -0,0 +1,54 @@ + + +v - Using as + + + + + + + + + + + + + +

+

+Next: , +Previous: traditional-format, +Up: Invoking +



+
+ +

2.15 Announce Version: -v

+ +

You can find out what version of as is running by including the +option -v (which you can also spell as -version) on the +command line. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-Symbols-to-the-Hash-Table.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-Symbols-to-the-Hash-Table.html new file mode 100644 index 0000000..2c0f2ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-Symbols-to-the-Hash-Table.html @@ -0,0 +1,77 @@ + + +Adding Symbols to the Hash Table - Untitled + + + + + + + + + + + + + +

+ +

2.17.2 Adding symbols to the hash table

+ +

The linker proper will call the _bfd_link_add_symbols +entry point for each object file or archive which is to be +linked (typically these are the files named on the command +line, but some may also come from the linker script). The +entry point is responsible for examining the file. For an +object file, BFD must add any relevant symbol information to +the hash table. For an archive, BFD must determine which +elements of the archive should be used and adding them to the +link. + +

The a.out version of this entry point is +NAME(aout,link_add_symbols). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-symbols-from-an-archive.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-symbols-from-an-archive.html new file mode 100644 index 0000000..fbcfd98 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-symbols-from-an-archive.html @@ -0,0 +1,102 @@ + + +Adding symbols from an archive - Untitled + + + + + + + + + + + + + + +
2.17.2.3 Adding symbols from an archive
+ +

When the _bfd_link_add_symbols routine is passed an +archive, it must look through the symbols defined by the +archive and decide which elements of the archive should be +included in the link. For each such element it must call the +add_archive_element linker callback, and it must add the +symbols from the object file to the linker hash table. + +

In most cases the work of looking through the symbols in the +archive should be done by the +_bfd_generic_link_add_archive_symbols function. This +function builds a hash table from the archive symbol table and +looks through the list of undefined symbols to see which +elements should be included. +_bfd_generic_link_add_archive_symbols is passed a function +to call to make the final decision about adding an archive +element to the link and to do the actual work of adding the +symbols to the linker hash table. + +

The function passed to +_bfd_generic_link_add_archive_symbols must read the +symbols of the archive element and decide whether the archive +element should be included in the link. If the element is to +be included, the add_archive_element linker callback +routine must be called with the element as an argument, and +the elements symbols must be added to the linker hash table +just as though the element had itself been passed to the +_bfd_link_add_symbols function. + +

When the a.out _bfd_link_add_symbols function receives an +archive, it calls _bfd_generic_link_add_archive_symbols +passing aout_link_check_archive_element as the function +argument. aout_link_check_archive_element calls +aout_link_check_ar_symbols. If the latter decides to add +the element (an element is only added if it provides a real, +non-common, definition for a previously undefined or common +symbol) it calls the add_archive_element callback and then +aout_link_check_archive_element calls +aout_link_add_symbols to actually add the symbols to the +linker hash table. + +

The ECOFF back end is unusual in that it does not normally +call _bfd_generic_link_add_archive_symbols, because ECOFF +archives already contain a hash table of symbols. The ECOFF +back end searches the archive itself to avoid the overhead of +creating a new hash table. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-symbols-from-an-object-file.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-symbols-from-an-object-file.html new file mode 100644 index 0000000..179fbe9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Adding-symbols-from-an-object-file.html @@ -0,0 +1,96 @@ + + +Adding symbols from an object file - Untitled + + + + + + + + + + + + + +

+ +
2.17.2.2 Adding symbols from an object file
+ +

When the _bfd_link_add_symbols routine is passed an object +file, it must add all externally visible symbols in that +object file to the hash table. The actual work of adding the +symbol to the hash table is normally handled by the function +_bfd_generic_link_add_one_symbol. The +_bfd_link_add_symbols routine is responsible for reading +all the symbols from the object file and passing the correct +information to _bfd_generic_link_add_one_symbol. + +

The _bfd_link_add_symbols routine should not use +bfd_canonicalize_symtab to read the symbols. The point of +providing this routine is to avoid the overhead of converting +the symbols into generic asymbol structures. + +

_bfd_generic_link_add_one_symbol handles the details of +combining common symbols, warning about multiple definitions, +and so forth. It takes arguments which describe the symbol to +add, notably symbol flags, a section, and an offset. The +symbol flags include such things as BSF_WEAK or +BSF_INDIRECT. The section is a section in the object +file, or something like bfd_und_section_ptr for an undefined +symbol or bfd_com_section_ptr for a common symbol. + +

If the _bfd_final_link routine is also going to need to +read the symbol information, the _bfd_link_add_symbols +routine should save it somewhere attached to the object file +BFD. However, the information should only be saved if the +keep_memory field of the info argument is TRUE, so +that the -no-keep-memory linker switch is effective. + +

The a.out function which adds symbols from an object file is +aout_link_add_object_symbols, and most of the interesting +work is in aout_link_add_symbols. The latter saves +pointers to the hash tables entries created by +_bfd_generic_link_add_one_symbol indexed by symbol number, +so that the _bfd_final_link routine does not have to call +the hash table lookup routine to locate the entry. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Architectures.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Architectures.html new file mode 100644 index 0000000..2d63045 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Architectures.html @@ -0,0 +1,678 @@ + + +Architectures - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Targets, +Up: BFD front end +



+
+ +

2.13 Architectures

+ +

BFD keeps one atom in a BFD describing the +architecture of the data attached to the BFD: a pointer to a +bfd_arch_info_type. + +

Pointers to structures can be requested independently of a BFD +so that an architecture's information can be interrogated +without access to an open BFD. + +

The architecture information is provided by each architecture package. +The set of default architectures is selected by the macro +SELECT_ARCHITECTURES. This is normally set up in the +config/target.mt file of your choice. If the name is not +defined, then all the architectures supported are included. + +

When BFD starts up, all the architectures are called with an +initialize method. It is up to the architecture back end to +insert as many items into the list of architectures as it wants to; +generally this would be one for each machine and one for the +default case (an item with a machine field of 0). + +

BFD's idea of an architecture is implemented in archures.c. + +

2.13.1 bfd_architecture

+ +

Description
+This enum gives the object file's CPU architecture, in a +global sense—i.e., what processor family does it belong to? +Another field indicates which processor within +the family is in use. The machine gives a number which +distinguishes different versions of the architecture, +containing, for example, 2 and 3 for Intel i960 KA and i960 KB, +and 68020 and 68030 for Motorola 68020 and 68030. +

     enum bfd_architecture
+     {
+       bfd_arch_unknown,   /* File arch not known.  */
+       bfd_arch_obscure,   /* Arch known, not one of these.  */
+       bfd_arch_m68k,      /* Motorola 68xxx */
+     #define bfd_mach_m68000 1
+     #define bfd_mach_m68008 2
+     #define bfd_mach_m68010 3
+     #define bfd_mach_m68020 4
+     #define bfd_mach_m68030 5
+     #define bfd_mach_m68040 6
+     #define bfd_mach_m68060 7
+     #define bfd_mach_cpu32  8
+     #define bfd_mach_fido   9
+     #define bfd_mach_mcf_isa_a_nodiv 10
+     #define bfd_mach_mcf_isa_a 11
+     #define bfd_mach_mcf_isa_a_mac 12
+     #define bfd_mach_mcf_isa_a_emac 13
+     #define bfd_mach_mcf_isa_aplus 14
+     #define bfd_mach_mcf_isa_aplus_mac 15
+     #define bfd_mach_mcf_isa_aplus_emac 16
+     #define bfd_mach_mcf_isa_b_nousp 17
+     #define bfd_mach_mcf_isa_b_nousp_mac 18
+     #define bfd_mach_mcf_isa_b_nousp_emac 19
+     #define bfd_mach_mcf_isa_b 20
+     #define bfd_mach_mcf_isa_b_mac 21
+     #define bfd_mach_mcf_isa_b_emac 22
+     #define bfd_mach_mcf_isa_b_float 23
+     #define bfd_mach_mcf_isa_b_float_mac 24
+     #define bfd_mach_mcf_isa_b_float_emac 25
+     #define bfd_mach_mcf_isa_c 26
+     #define bfd_mach_mcf_isa_c_mac 27
+     #define bfd_mach_mcf_isa_c_emac 28
+     #define bfd_mach_mcf_isa_c_nodiv 29
+     #define bfd_mach_mcf_isa_c_nodiv_mac 30
+     #define bfd_mach_mcf_isa_c_nodiv_emac 31
+       bfd_arch_vax,       /* DEC Vax */
+       bfd_arch_i960,      /* Intel 960 */
+         /* The order of the following is important.
+            lower number indicates a machine type that
+            only accepts a subset of the instructions
+            available to machines with higher numbers.
+            The exception is the "ca", which is
+            incompatible with all other machines except
+            "core".  */
+     
+     #define bfd_mach_i960_core      1
+     #define bfd_mach_i960_ka_sa     2
+     #define bfd_mach_i960_kb_sb     3
+     #define bfd_mach_i960_mc        4
+     #define bfd_mach_i960_xa        5
+     #define bfd_mach_i960_ca        6
+     #define bfd_mach_i960_jx        7
+     #define bfd_mach_i960_hx        8
+     
+       bfd_arch_or32,      /* OpenRISC 32 */
+     
+       bfd_arch_sparc,     /* SPARC */
+     #define bfd_mach_sparc                 1
+     /* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
+     #define bfd_mach_sparc_sparclet        2
+     #define bfd_mach_sparc_sparclite       3
+     #define bfd_mach_sparc_v8plus          4
+     #define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
+     #define bfd_mach_sparc_sparclite_le    6
+     #define bfd_mach_sparc_v9              7
+     #define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
+     #define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
+     #define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
+     /* Nonzero if MACH has the v9 instruction set.  */
+     #define bfd_mach_sparc_v9_p(mach) \
+       ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
+        && (mach) != bfd_mach_sparc_sparclite_le)
+     /* Nonzero if MACH is a 64 bit sparc architecture.  */
+     #define bfd_mach_sparc_64bit_p(mach) \
+       ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
+       bfd_arch_spu,       /* PowerPC SPU */
+     #define bfd_mach_spu           256
+       bfd_arch_mips,      /* MIPS Rxxxx */
+     #define bfd_mach_mips3000              3000
+     #define bfd_mach_mips3900              3900
+     #define bfd_mach_mips4000              4000
+     #define bfd_mach_mips4010              4010
+     #define bfd_mach_mips4100              4100
+     #define bfd_mach_mips4111              4111
+     #define bfd_mach_mips4120              4120
+     #define bfd_mach_mips4300              4300
+     #define bfd_mach_mips4400              4400
+     #define bfd_mach_mips4600              4600
+     #define bfd_mach_mips4650              4650
+     #define bfd_mach_mips5000              5000
+     #define bfd_mach_mips5400              5400
+     #define bfd_mach_mips5500              5500
+     #define bfd_mach_mips6000              6000
+     #define bfd_mach_mips7000              7000
+     #define bfd_mach_mips8000              8000
+     #define bfd_mach_mips9000              9000
+     #define bfd_mach_mips10000             10000
+     #define bfd_mach_mips12000             12000
+     #define bfd_mach_mips16                16
+     #define bfd_mach_mips5                 5
+     #define bfd_mach_mips_loongson_2e      3001
+     #define bfd_mach_mips_loongson_2f      3002
+     #define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
+     #define bfd_mach_mips_octeon           6501
+     #define bfd_mach_mipsisa32             32
+     #define bfd_mach_mipsisa32r2           33
+     #define bfd_mach_mipsisa64             64
+     #define bfd_mach_mipsisa64r2           65
+       bfd_arch_i386,      /* Intel 386 */
+     #define bfd_mach_i386_i386 1
+     #define bfd_mach_i386_i8086 2
+     #define bfd_mach_i386_i386_intel_syntax 3
+     #define bfd_mach_x86_64 64
+     #define bfd_mach_x86_64_intel_syntax 65
+       bfd_arch_we32k,     /* AT&T WE32xxx */
+       bfd_arch_tahoe,     /* CCI/Harris Tahoe */
+       bfd_arch_i860,      /* Intel 860 */
+       bfd_arch_i370,      /* IBM 360/370 Mainframes */
+       bfd_arch_romp,      /* IBM ROMP PC/RT */
+       bfd_arch_convex,    /* Convex */
+       bfd_arch_m88k,      /* Motorola 88xxx */
+       bfd_arch_m98k,      /* Motorola 98xxx */
+       bfd_arch_pyramid,   /* Pyramid Technology */
+       bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
+     #define bfd_mach_h8300    1
+     #define bfd_mach_h8300h   2
+     #define bfd_mach_h8300s   3
+     #define bfd_mach_h8300hn  4
+     #define bfd_mach_h8300sn  5
+     #define bfd_mach_h8300sx  6
+     #define bfd_mach_h8300sxn 7
+       bfd_arch_pdp11,     /* DEC PDP-11 */
+       bfd_arch_powerpc,   /* PowerPC */
+     #define bfd_mach_ppc           32
+     #define bfd_mach_ppc64         64
+     #define bfd_mach_ppc_403       403
+     #define bfd_mach_ppc_403gc     4030
+     #define bfd_mach_ppc_505       505
+     #define bfd_mach_ppc_601       601
+     #define bfd_mach_ppc_602       602
+     #define bfd_mach_ppc_603       603
+     #define bfd_mach_ppc_ec603e    6031
+     #define bfd_mach_ppc_604       604
+     #define bfd_mach_ppc_620       620
+     #define bfd_mach_ppc_630       630
+     #define bfd_mach_ppc_750       750
+     #define bfd_mach_ppc_860       860
+     #define bfd_mach_ppc_a35       35
+     #define bfd_mach_ppc_rs64ii    642
+     #define bfd_mach_ppc_rs64iii   643
+     #define bfd_mach_ppc_7400      7400
+     #define bfd_mach_ppc_e500      500
+     #define bfd_mach_ppc_e500mc    5001
+       bfd_arch_rs6000,    /* IBM RS/6000 */
+     #define bfd_mach_rs6k          6000
+     #define bfd_mach_rs6k_rs1      6001
+     #define bfd_mach_rs6k_rsc      6003
+     #define bfd_mach_rs6k_rs2      6002
+       bfd_arch_hppa,      /* HP PA RISC */
+     #define bfd_mach_hppa10        10
+     #define bfd_mach_hppa11        11
+     #define bfd_mach_hppa20        20
+     #define bfd_mach_hppa20w       25
+       bfd_arch_d10v,      /* Mitsubishi D10V */
+     #define bfd_mach_d10v          1
+     #define bfd_mach_d10v_ts2      2
+     #define bfd_mach_d10v_ts3      3
+       bfd_arch_d30v,      /* Mitsubishi D30V */
+       bfd_arch_dlx,       /* DLX */
+       bfd_arch_m68hc11,   /* Motorola 68HC11 */
+       bfd_arch_m68hc12,   /* Motorola 68HC12 */
+     #define bfd_mach_m6812_default 0
+     #define bfd_mach_m6812         1
+     #define bfd_mach_m6812s        2
+       bfd_arch_z8k,       /* Zilog Z8000 */
+     #define bfd_mach_z8001         1
+     #define bfd_mach_z8002         2
+       bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
+       bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
+     #define bfd_mach_sh            1
+     #define bfd_mach_sh2        0x20
+     #define bfd_mach_sh_dsp     0x2d
+     #define bfd_mach_sh2a       0x2a
+     #define bfd_mach_sh2a_nofpu 0x2b
+     #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+     #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+     #define bfd_mach_sh2a_or_sh4  0x2a3
+     #define bfd_mach_sh2a_or_sh3e 0x2a4
+     #define bfd_mach_sh2e       0x2e
+     #define bfd_mach_sh3        0x30
+     #define bfd_mach_sh3_nommu  0x31
+     #define bfd_mach_sh3_dsp    0x3d
+     #define bfd_mach_sh3e       0x3e
+     #define bfd_mach_sh4        0x40
+     #define bfd_mach_sh4_nofpu  0x41
+     #define bfd_mach_sh4_nommu_nofpu  0x42
+     #define bfd_mach_sh4a       0x4a
+     #define bfd_mach_sh4a_nofpu 0x4b
+     #define bfd_mach_sh4al_dsp  0x4d
+     #define bfd_mach_sh5        0x50
+       bfd_arch_alpha,     /* Dec Alpha */
+     #define bfd_mach_alpha_ev4  0x10
+     #define bfd_mach_alpha_ev5  0x20
+     #define bfd_mach_alpha_ev6  0x30
+       bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
+     #define bfd_mach_arm_unknown   0
+     #define bfd_mach_arm_2         1
+     #define bfd_mach_arm_2a        2
+     #define bfd_mach_arm_3         3
+     #define bfd_mach_arm_3M        4
+     #define bfd_mach_arm_4         5
+     #define bfd_mach_arm_4T        6
+     #define bfd_mach_arm_5         7
+     #define bfd_mach_arm_5T        8
+     #define bfd_mach_arm_5TE       9
+     #define bfd_mach_arm_XScale    10
+     #define bfd_mach_arm_ep9312    11
+     #define bfd_mach_arm_iWMMXt    12
+     #define bfd_mach_arm_iWMMXt2   13
+       bfd_arch_ns32k,     /* National Semiconductors ns32000 */
+       bfd_arch_w65,       /* WDC 65816 */
+       bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
+       bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
+     #define bfd_mach_tic3x         30
+     #define bfd_mach_tic4x         40
+       bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
+       bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
+       bfd_arch_v850,      /* NEC V850 */
+     #define bfd_mach_v850          1
+     #define bfd_mach_v850e         'E'
+     #define bfd_mach_v850e1        '1'
+       bfd_arch_arc,       /* ARC Cores */
+     #define bfd_mach_arc_5         5
+     #define bfd_mach_arc_6         6
+     #define bfd_mach_arc_7         7
+     #define bfd_mach_arc_8         8
+      bfd_arch_m32c,     /* Renesas M16C/M32C.  */
+     #define bfd_mach_m16c        0x75
+     #define bfd_mach_m32c        0x78
+       bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
+     #define bfd_mach_m32r          1 /* For backwards compatibility.  */
+     #define bfd_mach_m32rx         'x'
+     #define bfd_mach_m32r2         '2'
+       bfd_arch_mn10200,   /* Matsushita MN10200 */
+       bfd_arch_mn10300,   /* Matsushita MN10300 */
+     #define bfd_mach_mn10300               300
+     #define bfd_mach_am33          330
+     #define bfd_mach_am33_2        332
+       bfd_arch_fr30,
+     #define bfd_mach_fr30          0x46523330
+       bfd_arch_frv,
+     #define bfd_mach_frv           1
+     #define bfd_mach_frvsimple     2
+     #define bfd_mach_fr300         300
+     #define bfd_mach_fr400         400
+     #define bfd_mach_fr450         450
+     #define bfd_mach_frvtomcat     499     /* fr500 prototype */
+     #define bfd_mach_fr500         500
+     #define bfd_mach_fr550         550
+       bfd_arch_mcore,
+       bfd_arch_mep,
+     #define bfd_mach_mep           1
+     #define bfd_mach_mep_h1        0x6831
+       bfd_arch_ia64,      /* HP/Intel ia64 */
+     #define bfd_mach_ia64_elf64    64
+     #define bfd_mach_ia64_elf32    32
+       bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
+     #define bfd_mach_ip2022        1
+     #define bfd_mach_ip2022ext     2
+      bfd_arch_iq2000,     /* Vitesse IQ2000.  */
+     #define bfd_mach_iq2000        1
+     #define bfd_mach_iq10          2
+       bfd_arch_mt,
+     #define bfd_mach_ms1           1
+     #define bfd_mach_mrisc2        2
+     #define bfd_mach_ms2           3
+       bfd_arch_pj,
+       bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
+     #define bfd_mach_avr1          1
+     #define bfd_mach_avr2          2
+     #define bfd_mach_avr25         25
+     #define bfd_mach_avr3          3
+     #define bfd_mach_avr31         31
+     #define bfd_mach_avr35         35
+     #define bfd_mach_avr4          4
+     #define bfd_mach_avr5          5
+     #define bfd_mach_avr51         51
+     #define bfd_mach_avr6          6
+       bfd_arch_bfin,        /* ADI Blackfin */
+     #define bfd_mach_bfin          1
+       bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
+     #define bfd_mach_cr16          1
+       bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
+     #define bfd_mach_cr16c         1
+       bfd_arch_crx,       /*  National Semiconductor CRX.  */
+     #define bfd_mach_crx           1
+       bfd_arch_cris,      /* Axis CRIS */
+     #define bfd_mach_cris_v0_v10   255
+     #define bfd_mach_cris_v32      32
+     #define bfd_mach_cris_v10_v32  1032
+       bfd_arch_s390,      /* IBM s390 */
+     #define bfd_mach_s390_31       31
+     #define bfd_mach_s390_64       64
+       bfd_arch_score,     /* Sunplus score */
+       bfd_arch_openrisc,  /* OpenRISC */
+       bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
+       bfd_arch_xstormy16,
+     #define bfd_mach_xstormy16     1
+       bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
+     #define bfd_mach_msp11          11
+     #define bfd_mach_msp110         110
+     #define bfd_mach_msp12          12
+     #define bfd_mach_msp13          13
+     #define bfd_mach_msp14          14
+     #define bfd_mach_msp15          15
+     #define bfd_mach_msp16          16
+     #define bfd_mach_msp21          21
+     #define bfd_mach_msp31          31
+     #define bfd_mach_msp32          32
+     #define bfd_mach_msp33          33
+     #define bfd_mach_msp41          41
+     #define bfd_mach_msp42          42
+     #define bfd_mach_msp43          43
+     #define bfd_mach_msp44          44
+       bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
+     #define bfd_mach_xc16x         1
+     #define bfd_mach_xc16xl        2
+     #define bfd_mach_xc16xs         3
+       bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
+     #define bfd_mach_xtensa        1
+        bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
+     #define bfd_mach_maxq10    10
+     #define bfd_mach_maxq20    20
+       bfd_arch_z80,
+     #define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
+     #define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
+     #define bfd_mach_z80full        7 /* All undocumented instructions.  */
+     #define bfd_mach_r800           11 /* R800: successor with multiplication.  */
+       bfd_arch_last
+       };
+
+

2.13.2 bfd_arch_info

+ +

Description
+This structure contains information on architectures for use +within BFD. +

     
+     typedef struct bfd_arch_info
+     {
+       int bits_per_word;
+       int bits_per_address;
+       int bits_per_byte;
+       enum bfd_architecture arch;
+       unsigned long mach;
+       const char *arch_name;
+       const char *printable_name;
+       unsigned int section_align_power;
+       /* TRUE if this is the default machine for the architecture.
+          The default arch should be the first entry for an arch so that
+          all the entries for that arch can be accessed via next.  */
+       bfd_boolean the_default;
+       const struct bfd_arch_info * (*compatible)
+         (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
+     
+       bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+     
+       const struct bfd_arch_info *next;
+     }
+     bfd_arch_info_type;
+     
+
+

+ +

2.13.2.1 bfd_printable_name
+ +

Synopsis +

     const char *bfd_printable_name (bfd *abfd);
+
+

Description
+Return a printable string representing the architecture and machine +from the pointer to the architecture info structure. + +

+ +

2.13.2.2 bfd_scan_arch
+ +

Synopsis +

     const bfd_arch_info_type *bfd_scan_arch (const char *string);
+
+

Description
+Figure out if BFD supports any cpu which could be described with +the name string. Return a pointer to an arch_info +structure if a machine is found, otherwise NULL. + +

+ +

2.13.2.3 bfd_arch_list
+ +

Synopsis +

     const char **bfd_arch_list (void);
+
+

Description
+Return a freshly malloced NULL-terminated vector of the names +of all the valid BFD architectures. Do not modify the names. + +

+ +

2.13.2.4 bfd_arch_get_compatible
+ +

Synopsis +

     const bfd_arch_info_type *bfd_arch_get_compatible
+        (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
+
+

Description
+Determine whether two BFDs' architectures and machine types +are compatible. Calculates the lowest common denominator +between the two architectures and machine types implied by +the BFDs and returns a pointer to an arch_info structure +describing the compatible machine. + +

+ +

2.13.2.5 bfd_default_arch_struct
+ +

Description
+The bfd_default_arch_struct is an item of +bfd_arch_info_type which has been initialized to a fairly +generic state. A BFD starts life by pointing to this +structure, until the correct back end has determined the real +architecture of the file. +

     extern const bfd_arch_info_type bfd_default_arch_struct;
+
+

+ +

2.13.2.6 bfd_set_arch_info
+ +

Synopsis +

     void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
+
+

Description
+Set the architecture info of abfd to arg. + +

+ +

2.13.2.7 bfd_default_set_arch_mach
+ +

Synopsis +

     bfd_boolean bfd_default_set_arch_mach
+        (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
+
+

Description
+Set the architecture and machine type in BFD abfd +to arch and mach. Find the correct +pointer to a structure and insert it into the arch_info +pointer. + +

+ +

2.13.2.8 bfd_get_arch
+ +

Synopsis +

     enum bfd_architecture bfd_get_arch (bfd *abfd);
+
+

Description
+Return the enumerated type which describes the BFD abfd's +architecture. + +

+ +

2.13.2.9 bfd_get_mach
+ +

Synopsis +

     unsigned long bfd_get_mach (bfd *abfd);
+
+

Description
+Return the long type which describes the BFD abfd's +machine. + +

+ +

2.13.2.10 bfd_arch_bits_per_byte
+ +

Synopsis +

     unsigned int bfd_arch_bits_per_byte (bfd *abfd);
+
+

Description
+Return the number of bits in one of the BFD abfd's +architecture's bytes. + +

+ +

2.13.2.11 bfd_arch_bits_per_address
+ +

Synopsis +

     unsigned int bfd_arch_bits_per_address (bfd *abfd);
+
+

Description
+Return the number of bits in one of the BFD abfd's +architecture's addresses. + +

+ +

2.13.2.12 bfd_default_compatible
+ +

Synopsis +

     const bfd_arch_info_type *bfd_default_compatible
+        (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
+
+

Description
+The default function for testing for compatibility. + +

+ +

2.13.2.13 bfd_default_scan
+ +

Synopsis +

     bfd_boolean bfd_default_scan
+        (const struct bfd_arch_info *info, const char *string);
+
+

Description
+The default function for working out whether this is an +architecture hit and a machine hit. + +

+ +

2.13.2.14 bfd_get_arch_info
+ +

Synopsis +

     const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
+
+

Description
+Return the architecture info struct in abfd. + +

+ +

2.13.2.15 bfd_lookup_arch
+ +

Synopsis +

     const bfd_arch_info_type *bfd_lookup_arch
+        (enum bfd_architecture arch, unsigned long machine);
+
+

Description
+Look for the architecture info structure which matches the +arguments arch and machine. A machine of 0 matches the +machine/architecture structure which marks itself as the +default. + +

+ +

2.13.2.16 bfd_printable_arch_mach
+ +

Synopsis +

     const char *bfd_printable_arch_mach
+        (enum bfd_architecture arch, unsigned long machine);
+
+

Description
+Return a printable string representing the architecture and +machine type. + +

This routine is depreciated. + +

+ +

2.13.2.17 bfd_octets_per_byte
+ +

Synopsis +

     unsigned int bfd_octets_per_byte (bfd *abfd);
+
+

Description
+Return the number of octets (8-bit quantities) per target byte +(minimum addressable unit). In most cases, this will be one, but some +DSP targets have 16, 32, or even 48 bits per byte. + +

+ +

2.13.2.18 bfd_arch_mach_octets_per_byte
+ +

Synopsis +

     unsigned int bfd_arch_mach_octets_per_byte
+        (enum bfd_architecture arch, unsigned long machine);
+
+

Description
+See bfd_octets_per_byte. + +

This routine is provided for those cases where a bfd * is not +available + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Archives.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Archives.html new file mode 100644 index 0000000..03f3b74 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Archives.html @@ -0,0 +1,156 @@ + + +Archives - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Symbols, +Up: BFD front end +



+
+ +

2.8 Archives

+ +

Description
+An archive (or library) is just another BFD. It has a symbol +table, although there's not much a user program will do with it. + +

The big difference between an archive BFD and an ordinary BFD +is that the archive doesn't have sections. Instead it has a +chain of BFDs that are considered its contents. These BFDs can +be manipulated like any other. The BFDs contained in an +archive opened for reading will all be opened for reading. You +may put either input or output BFDs into an archive opened for +output; they will be handled correctly when the archive is closed. + +

Use bfd_openr_next_archived_file to step through +the contents of an archive opened for input. You don't +have to read the entire archive if you don't want +to! Read it until you find what you want. + +

Archive contents of output BFDs are chained through the +next pointer in a BFD. The first one is findable through +the archive_head slot of the archive. Set it with +bfd_set_archive_head (q.v.). A given BFD may be in only one +open output archive at a time. + +

As expected, the BFD archive code is more general than the +archive code of any given environment. BFD archives may +contain files of different formats (e.g., a.out and coff) and +even different architectures. You may even place archives +recursively into archives! + +

This can cause unexpected confusion, since some archive +formats are more expressive than others. For instance, Intel +COFF archives can preserve long filenames; SunOS a.out archives +cannot. If you move a file from the first to the second +format and back again, the filename may be truncated. +Likewise, different a.out environments have different +conventions as to how they truncate filenames, whether they +preserve directory names in filenames, etc. When +interoperating with native tools, be sure your files are +homogeneous. + +

Beware: most of these formats do not react well to the +presence of spaces in filenames. We do the best we can, but +can't always handle this case due to restrictions in the format of +archives. Many Unix utilities are braindead in regards to +spaces and such in filenames anyway, so this shouldn't be much +of a restriction. + +

Archives are supported in BFD in archive.c. + +

2.8.1 Archive functions

+ +

+ +

2.8.1.1 bfd_get_next_mapent
+ +

Synopsis +

     symindex bfd_get_next_mapent
+        (bfd *abfd, symindex previous, carsym **sym);
+
+

Description
+Step through archive abfd's symbol table (if it +has one). Successively update sym with the next symbol's +information, returning that symbol's (internal) index into the +symbol table. + +

Supply BFD_NO_MORE_SYMBOLS as the previous entry to get +the first one; returns BFD_NO_MORE_SYMBOLS when you've already +got the last one. + +

A carsym is a canonical archive symbol. The only +user-visible element is its name, a null-terminated string. + +

+ +

2.8.1.2 bfd_set_archive_head
+ +

Synopsis +

     bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
+
+

Description
+Set the head of the chain of +BFDs contained in the archive output to new_head. + +

+ +

2.8.1.3 bfd_openr_next_archived_file
+ +

Synopsis +

     bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
+
+

Description
+Provided a BFD, archive, containing an archive and NULL, open +an input BFD on the first contained element and returns that. +Subsequent calls should pass +the archive and the previous return value to return a created +BFD to the next contained element. NULL is returned when there +are no more. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-Index.html new file mode 100644 index 0000000..761f676 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-Index.html @@ -0,0 +1,1455 @@ + + +BFD Index - Untitled + + + + + + + + + + + +

+

+Previous: GNU Free Documentation License, +Up: Top +



+
+ +

BFD Index

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-back-ends.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-back-ends.html new file mode 100644 index 0000000..befc5b0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-back-ends.html @@ -0,0 +1,65 @@ + + +BFD back ends - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: BFD front end, +Up: Top +



+
+ +

3 BFD back ends

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-front-end.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-front-end.html new file mode 100644 index 0000000..b3eaa46 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-front-end.html @@ -0,0 +1,1021 @@ + + +BFD front end - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: Overview, +Up: Top +



+
+ +

2 BFD Front End

+ +

2.1 typedef bfd

+ +

A BFD has type bfd; objects of this type are the +cornerstone of any application using BFD. Using BFD +consists of making references though the BFD and to data in the BFD. + +

Here is the structure that defines the type bfd. It +contains the major data about the file and pointers +to the rest of the data. + +

     
+     struct bfd
+     {
+       /* A unique identifier of the BFD  */
+       unsigned int id;
+     
+       /* The filename the application opened the BFD with.  */
+       const char *filename;
+     
+       /* A pointer to the target jump table.  */
+       const struct bfd_target *xvec;
+     
+       /* The IOSTREAM, and corresponding IO vector that provide access
+          to the file backing the BFD.  */
+       void *iostream;
+       const struct bfd_iovec *iovec;
+     
+       /* The caching routines use these to maintain a
+          least-recently-used list of BFDs.  */
+       struct bfd *lru_prev, *lru_next;
+     
+       /* When a file is closed by the caching routines, BFD retains
+          state information on the file here...  */
+       ufile_ptr where;
+     
+       /* File modified time, if mtime_set is TRUE.  */
+       long mtime;
+     
+       /* Reserved for an unimplemented file locking extension.  */
+       int ifd;
+     
+       /* The format which belongs to the BFD. (object, core, etc.)  */
+       bfd_format format;
+     
+       /* The direction with which the BFD was opened.  */
+       enum bfd_direction
+         {
+           no_direction = 0,
+           read_direction = 1,
+           write_direction = 2,
+           both_direction = 3
+         }
+       direction;
+     
+       /* Format_specific flags.  */
+       flagword flags;
+     
+       /* Values that may appear in the flags field of a BFD.  These also
+          appear in the object_flags field of the bfd_target structure, where
+          they indicate the set of flags used by that backend (not all flags
+          are meaningful for all object file formats) (FIXME: at the moment,
+          the object_flags values have mostly just been copied from backend
+          to another, and are not necessarily correct).  */
+     
+     #define BFD_NO_FLAGS   0x00
+     
+       /* BFD contains relocation entries.  */
+     #define HAS_RELOC      0x01
+     
+       /* BFD is directly executable.  */
+     #define EXEC_P         0x02
+     
+       /* BFD has line number information (basically used for F_LNNO in a
+          COFF header).  */
+     #define HAS_LINENO     0x04
+     
+       /* BFD has debugging information.  */
+     #define HAS_DEBUG      0x08
+     
+       /* BFD has symbols.  */
+     #define HAS_SYMS       0x10
+     
+       /* BFD has local symbols (basically used for F_LSYMS in a COFF
+          header).  */
+     #define HAS_LOCALS     0x20
+     
+       /* BFD is a dynamic object.  */
+     #define DYNAMIC        0x40
+     
+       /* Text section is write protected (if D_PAGED is not set, this is
+          like an a.out NMAGIC file) (the linker sets this by default, but
+          clears it for -r or -N).  */
+     #define WP_TEXT        0x80
+     
+       /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
+          linker sets this by default, but clears it for -r or -n or -N).  */
+     #define D_PAGED        0x100
+     
+       /* BFD is relaxable (this means that bfd_relax_section may be able to
+          do something) (sometimes bfd_relax_section can do something even if
+          this is not set).  */
+     #define BFD_IS_RELAXABLE 0x200
+     
+       /* This may be set before writing out a BFD to request using a
+          traditional format.  For example, this is used to request that when
+          writing out an a.out object the symbols not be hashed to eliminate
+          duplicates.  */
+     #define BFD_TRADITIONAL_FORMAT 0x400
+     
+       /* This flag indicates that the BFD contents are actually cached
+          in memory.  If this is set, iostream points to a bfd_in_memory
+          struct.  */
+     #define BFD_IN_MEMORY 0x800
+     
+       /* The sections in this BFD specify a memory page.  */
+     #define HAS_LOAD_PAGE 0x1000
+     
+       /* This BFD has been created by the linker and doesn't correspond
+          to any input file.  */
+     #define BFD_LINKER_CREATED 0x2000
+     
+       /* Currently my_archive is tested before adding origin to
+          anything. I believe that this can become always an add of
+          origin, with origin set to 0 for non archive files.  */
+       ufile_ptr origin;
+     
+       /* The origin in the archive of the proxy entry.  This will
+          normally be the same as origin, except for thin archives,
+          when it will contain the current offset of the proxy in the
+          thin archive rather than the offset of the bfd in its actual
+          container.  */
+       ufile_ptr proxy_origin;
+     
+       /* A hash table for section names.  */
+       struct bfd_hash_table section_htab;
+     
+       /* Pointer to linked list of sections.  */
+       struct bfd_section *sections;
+     
+       /* The last section on the section list.  */
+       struct bfd_section *section_last;
+     
+       /* The number of sections.  */
+       unsigned int section_count;
+     
+       /* Stuff only useful for object files:
+          The start address.  */
+       bfd_vma start_address;
+     
+       /* Used for input and output.  */
+       unsigned int symcount;
+     
+       /* Symbol table for output BFD (with symcount entries).
+          Also used by the linker to cache input BFD symbols.  */
+       struct bfd_symbol  **outsymbols;
+     
+       /* Used for slurped dynamic symbol tables.  */
+       unsigned int dynsymcount;
+     
+       /* Pointer to structure which contains architecture information.  */
+       const struct bfd_arch_info *arch_info;
+     
+       /* Stuff only useful for archives.  */
+       void *arelt_data;
+       struct bfd *my_archive;      /* The containing archive BFD.  */
+       struct bfd *archive_next;    /* The next BFD in the archive.  */
+       struct bfd *archive_head;    /* The first BFD in the archive.  */
+       struct bfd *nested_archives; /* List of nested archive in a flattened
+                                       thin archive.  */
+     
+       /* A chain of BFD structures involved in a link.  */
+       struct bfd *link_next;
+     
+       /* A field used by _bfd_generic_link_add_archive_symbols.  This will
+          be used only for archive elements.  */
+       int archive_pass;
+     
+       /* Used by the back end to hold private data.  */
+       union
+         {
+           struct aout_data_struct *aout_data;
+           struct artdata *aout_ar_data;
+           struct _oasys_data *oasys_obj_data;
+           struct _oasys_ar_data *oasys_ar_data;
+           struct coff_tdata *coff_obj_data;
+           struct pe_tdata *pe_obj_data;
+           struct xcoff_tdata *xcoff_obj_data;
+           struct ecoff_tdata *ecoff_obj_data;
+           struct ieee_data_struct *ieee_data;
+           struct ieee_ar_data_struct *ieee_ar_data;
+           struct srec_data_struct *srec_data;
+           struct ihex_data_struct *ihex_data;
+           struct tekhex_data_struct *tekhex_data;
+           struct elf_obj_tdata *elf_obj_data;
+           struct nlm_obj_tdata *nlm_obj_data;
+           struct bout_data_struct *bout_data;
+           struct mmo_data_struct *mmo_data;
+           struct sun_core_struct *sun_core_data;
+           struct sco5_core_struct *sco5_core_data;
+           struct trad_core_struct *trad_core_data;
+           struct som_data_struct *som_data;
+           struct hpux_core_struct *hpux_core_data;
+           struct hppabsd_core_struct *hppabsd_core_data;
+           struct sgi_core_struct *sgi_core_data;
+           struct lynx_core_struct *lynx_core_data;
+           struct osf_core_struct *osf_core_data;
+           struct cisco_core_struct *cisco_core_data;
+           struct versados_data_struct *versados_data;
+           struct netbsd_core_struct *netbsd_core_data;
+           struct mach_o_data_struct *mach_o_data;
+           struct mach_o_fat_data_struct *mach_o_fat_data;
+           struct bfd_pef_data_struct *pef_data;
+           struct bfd_pef_xlib_data_struct *pef_xlib_data;
+           struct bfd_sym_data_struct *sym_data;
+           void *any;
+         }
+       tdata;
+     
+       /* Used by the application to hold private data.  */
+       void *usrdata;
+     
+       /* Where all the allocated stuff under this BFD goes.  This is a
+          struct objalloc *, but we use void * to avoid requiring the inclusion
+          of objalloc.h.  */
+       void *memory;
+     
+       /* Is the file descriptor being cached?  That is, can it be closed as
+          needed, and re-opened when accessed later?  */
+       unsigned int cacheable : 1;
+     
+       /* Marks whether there was a default target specified when the
+          BFD was opened. This is used to select which matching algorithm
+          to use to choose the back end.  */
+       unsigned int target_defaulted : 1;
+     
+       /* ... and here: (``once'' means at least once).  */
+       unsigned int opened_once : 1;
+     
+       /* Set if we have a locally maintained mtime value, rather than
+          getting it from the file each time.  */
+       unsigned int mtime_set : 1;
+     
+       /* Flag set if symbols from this BFD should not be exported.  */
+       unsigned int no_export : 1;
+     
+       /* Remember when output has begun, to stop strange things
+          from happening.  */
+       unsigned int output_has_begun : 1;
+     
+       /* Have archive map.  */
+       unsigned int has_armap : 1;
+     
+       /* Set if this is a thin archive.  */
+       unsigned int is_thin_archive : 1;
+     };
+     
+
+

2.2 Error reporting

+ +

Most BFD functions return nonzero on success (check their +individual documentation for precise semantics). On an error, +they call bfd_set_error to set an error condition that callers +can check by calling bfd_get_error. +If that returns bfd_error_system_call, then check +errno. + +

The easiest way to report a BFD error to the user is to +use bfd_perror. + +

2.2.1 Type bfd_error_type

+ +

The values returned by bfd_get_error are defined by the +enumerated type bfd_error_type. + +

     
+     typedef enum bfd_error
+     {
+       bfd_error_no_error = 0,
+       bfd_error_system_call,
+       bfd_error_invalid_target,
+       bfd_error_wrong_format,
+       bfd_error_wrong_object_format,
+       bfd_error_invalid_operation,
+       bfd_error_no_memory,
+       bfd_error_no_symbols,
+       bfd_error_no_armap,
+       bfd_error_no_more_archived_files,
+       bfd_error_malformed_archive,
+       bfd_error_file_not_recognized,
+       bfd_error_file_ambiguously_recognized,
+       bfd_error_no_contents,
+       bfd_error_nonrepresentable_section,
+       bfd_error_no_debug_section,
+       bfd_error_bad_value,
+       bfd_error_file_truncated,
+       bfd_error_file_too_big,
+       bfd_error_on_input,
+       bfd_error_invalid_error_code
+     }
+     bfd_error_type;
+     
+
+

+ +

2.2.1.1 bfd_get_error
+ +

Synopsis +

     bfd_error_type bfd_get_error (void);
+
+

Description
+Return the current BFD error condition. + +

+ +

2.2.1.2 bfd_set_error
+ +

Synopsis +

     void bfd_set_error (bfd_error_type error_tag, ...);
+
+

Description
+Set the BFD error condition to be error_tag. +If error_tag is bfd_error_on_input, then this function +takes two more parameters, the input bfd where the error +occurred, and the bfd_error_type error. + +

+ +

2.2.1.3 bfd_errmsg
+ +

Synopsis +

     const char *bfd_errmsg (bfd_error_type error_tag);
+
+

Description
+Return a string describing the error error_tag, or +the system error if error_tag is bfd_error_system_call. + +

+ +

2.2.1.4 bfd_perror
+ +

Synopsis +

     void bfd_perror (const char *message);
+
+

Description
+Print to the standard error stream a string describing the +last BFD error that occurred, or the last system error if +the last BFD error was a system call failure. If message +is non-NULL and non-empty, the error string printed is preceded +by message, a colon, and a space. It is followed by a newline. + +

2.2.2 BFD error handler

+ +

Some BFD functions want to print messages describing the +problem. They call a BFD error handler function. This +function may be overridden by the program. + +

The BFD error handler acts like printf. + +

     
+     typedef void (*bfd_error_handler_type) (const char *, ...);
+     
+
+

+ +

2.2.2.1 bfd_set_error_handler
+ +

Synopsis +

     bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
+
+

Description
+Set the BFD error handler function. Returns the previous +function. + +

+ +

2.2.2.2 bfd_set_error_program_name
+ +

Synopsis +

     void bfd_set_error_program_name (const char *);
+
+

Description
+Set the program name to use when printing a BFD error. This +is printed before the error message followed by a colon and +space. The string must not be changed after it is passed to +this function. + +

+ +

2.2.2.3 bfd_get_error_handler
+ +

Synopsis +

     bfd_error_handler_type bfd_get_error_handler (void);
+
+

Description
+Return the BFD error handler function. + +

2.3 Miscellaneous

+ +

2.3.1 Miscellaneous functions

+ +

+ +

2.3.1.1 bfd_get_reloc_upper_bound
+ +

Synopsis +

     long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
+
+

Description
+Return the number of bytes required to store the +relocation information associated with section sect +attached to bfd abfd. If an error occurs, return -1. + +

+ +

2.3.1.2 bfd_canonicalize_reloc
+ +

Synopsis +

     long bfd_canonicalize_reloc
+        (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
+
+

Description
+Call the back end associated with the open BFD +abfd and translate the external form of the relocation +information attached to sec into the internal canonical +form. Place the table into memory at loc, which has +been preallocated, usually by a call to +bfd_get_reloc_upper_bound. Returns the number of relocs, or +-1 on error. + +

The syms table is also needed for horrible internal magic +reasons. + +

+ +

2.3.1.3 bfd_set_reloc
+ +

Synopsis +

     void bfd_set_reloc
+        (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
+
+

Description
+Set the relocation pointer and count within +section sec to the values rel and count. +The argument abfd is ignored. + +

+ +

2.3.1.4 bfd_set_file_flags
+ +

Synopsis +

     bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
+
+

Description
+Set the flag word in the BFD abfd to the value flags. + +

Possible errors are: +

    +
  • bfd_error_wrong_format - The target bfd was not of object format. +
  • bfd_error_invalid_operation - The target bfd was open for reading. +
  • bfd_error_invalid_operation - +The flag word contained a bit which was not applicable to the +type of file. E.g., an attempt was made to set the D_PAGED bit +on a BFD format which does not support demand paging. +
+ +

+ +

2.3.1.5 bfd_get_arch_size
+ +

Synopsis +

     int bfd_get_arch_size (bfd *abfd);
+
+

Description
+Returns the architecture address size, in bits, as determined +by the object file's format. For ELF, this information is +included in the header. + +

Returns
+Returns the arch size in bits if known, -1 otherwise. + +

+ +

2.3.1.6 bfd_get_sign_extend_vma
+ +

Synopsis +

     int bfd_get_sign_extend_vma (bfd *abfd);
+
+

Description
+Indicates if the target architecture "naturally" sign extends +an address. Some architectures implicitly sign extend address +values when they are converted to types larger than the size +of an address. For instance, bfd_get_start_address() will +return an address sign extended to fill a bfd_vma when this is +the case. + +

Returns
+Returns 1 if the target architecture is known to sign +extend addresses, 0 if the target architecture is known to +not sign extend addresses, and -1 otherwise. + +

+ +

2.3.1.7 bfd_set_start_address
+ +

Synopsis +

     bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
+
+

Description
+Make vma the entry point of output BFD abfd. + +

Returns
+Returns TRUE on success, FALSE otherwise. + +

+ +

2.3.1.8 bfd_get_gp_size
+ +

Synopsis +

     unsigned int bfd_get_gp_size (bfd *abfd);
+
+

Description
+Return the maximum size of objects to be optimized using the GP +register under MIPS ECOFF. This is typically set by the -G +argument to the compiler, assembler or linker. + +

+ +

2.3.1.9 bfd_set_gp_size
+ +

Synopsis +

     void bfd_set_gp_size (bfd *abfd, unsigned int i);
+
+

Description
+Set the maximum size of objects to be optimized using the GP +register under ECOFF or MIPS ELF. This is typically set by +the -G argument to the compiler, assembler or linker. + +

+ +

2.3.1.10 bfd_scan_vma
+ +

Synopsis +

     bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
+
+

Description
+Convert, like strtoul, a numerical expression +string into a bfd_vma integer, and return that integer. +(Though without as many bells and whistles as strtoul.) +The expression is assumed to be unsigned (i.e., positive). +If given a base, it is used as the base for conversion. +A base of 0 causes the function to interpret the string +in hex if a leading "0x" or "0X" is found, otherwise +in octal if a leading zero is found, otherwise in decimal. + +

If the value would overflow, the maximum bfd_vma value is +returned. + +

+ +

2.3.1.11 bfd_copy_private_header_data
+ +

Synopsis +

     bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+
+

Description
+Copy private BFD header information from the BFD ibfd to the +the BFD obfd. This copies information that may require +sections to exist, but does not require symbol tables. Return +true on success, false on error. +Possible error returns are: + +

    +
  • bfd_error_no_memory - +Not enough memory exists to create private data for obfd. +
+ +
     #define bfd_copy_private_header_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_copy_private_header_data, \
+                    (ibfd, obfd))
+
+

+ +

2.3.1.12 bfd_copy_private_bfd_data
+ +

Synopsis +

     bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+
+

Description
+Copy private BFD information from the BFD ibfd to the +the BFD obfd. Return TRUE on success, FALSE on error. +Possible error returns are: + +

    +
  • bfd_error_no_memory - +Not enough memory exists to create private data for obfd. +
+ +
     #define bfd_copy_private_bfd_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
+                    (ibfd, obfd))
+
+

+ +

2.3.1.13 bfd_merge_private_bfd_data
+ +

Synopsis +

     bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
+
+

Description
+Merge private BFD information from the BFD ibfd to the +the output file BFD obfd when linking. Return TRUE +on success, FALSE on error. Possible error returns are: + +

    +
  • bfd_error_no_memory - +Not enough memory exists to create private data for obfd. +
+ +
     #define bfd_merge_private_bfd_data(ibfd, obfd) \
+          BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
+                    (ibfd, obfd))
+
+

+ +

2.3.1.14 bfd_set_private_flags
+ +

Synopsis +

     bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
+
+

Description
+Set private BFD flag information in the BFD abfd. +Return TRUE on success, FALSE on error. Possible error +returns are: + +

    +
  • bfd_error_no_memory - +Not enough memory exists to create private data for obfd. +
+ +
     #define bfd_set_private_flags(abfd, flags) \
+          BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
+
+

+ +

2.3.1.15 Other functions
+ +

Description
+The following functions exist but have not yet been documented. +

     #define bfd_sizeof_headers(abfd, info) \
+            BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
+     
+     #define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
+            BFD_SEND (abfd, _bfd_find_nearest_line, \
+                      (abfd, sec, syms, off, file, func, line))
+     
+     #define bfd_find_line(abfd, syms, sym, file, line) \
+            BFD_SEND (abfd, _bfd_find_line, \
+                      (abfd, syms, sym, file, line))
+     
+     #define bfd_find_inliner_info(abfd, file, func, line) \
+            BFD_SEND (abfd, _bfd_find_inliner_info, \
+                      (abfd, file, func, line))
+     
+     #define bfd_debug_info_start(abfd) \
+            BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
+     
+     #define bfd_debug_info_end(abfd) \
+            BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
+     
+     #define bfd_debug_info_accumulate(abfd, section) \
+            BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
+     
+     #define bfd_stat_arch_elt(abfd, stat) \
+            BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+     
+     #define bfd_update_armap_timestamp(abfd) \
+            BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
+     
+     #define bfd_set_arch_mach(abfd, arch, mach)\
+            BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
+     
+     #define bfd_relax_section(abfd, section, link_info, again) \
+            BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
+     
+     #define bfd_gc_sections(abfd, link_info) \
+            BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
+     
+     #define bfd_merge_sections(abfd, link_info) \
+            BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
+     
+     #define bfd_is_group_section(abfd, sec) \
+            BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
+     
+     #define bfd_discard_group(abfd, sec) \
+            BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
+     
+     #define bfd_link_hash_table_create(abfd) \
+            BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
+     
+     #define bfd_link_hash_table_free(abfd, hash) \
+            BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
+     
+     #define bfd_link_add_symbols(abfd, info) \
+            BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
+     
+     #define bfd_link_just_syms(abfd, sec, info) \
+            BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
+     
+     #define bfd_final_link(abfd, info) \
+            BFD_SEND (abfd, _bfd_final_link, (abfd, info))
+     
+     #define bfd_free_cached_info(abfd) \
+            BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
+     
+     #define bfd_get_dynamic_symtab_upper_bound(abfd) \
+            BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
+     
+     #define bfd_print_private_bfd_data(abfd, file)\
+            BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
+     
+     #define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
+            BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
+     
+     #define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
+            BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
+                                                        dyncount, dynsyms, ret))
+     
+     #define bfd_get_dynamic_reloc_upper_bound(abfd) \
+            BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
+     
+     #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
+            BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
+     
+     extern bfd_byte *bfd_get_relocated_section_contents
+       (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
+        bfd_boolean, asymbol **);
+     
+
+

+ +

2.3.1.16 bfd_alt_mach_code
+ +

Synopsis +

     bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
+
+

Description
+When more than one machine code number is available for the +same machine type, this function can be used to switch between +the preferred one (alternative == 0) and any others. Currently, +only ELF supports this feature, with up to two alternate +machine codes. + +

     struct bfd_preserve
+     {
+       void *marker;
+       void *tdata;
+       flagword flags;
+       const struct bfd_arch_info *arch_info;
+       struct bfd_section *sections;
+       struct bfd_section *section_last;
+       unsigned int section_count;
+       struct bfd_hash_table section_htab;
+     };
+     
+
+

+ +

2.3.1.17 bfd_preserve_save
+ +

Synopsis +

     bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
+
+

Description
+When testing an object for compatibility with a particular +target back-end, the back-end object_p function needs to set +up certain fields in the bfd on successfully recognizing the +object. This typically happens in a piecemeal fashion, with +failures possible at many points. On failure, the bfd is +supposed to be restored to its initial state, which is +virtually impossible. However, restoring a subset of the bfd +state works in practice. This function stores the subset and +reinitializes the bfd. + +

+ +

2.3.1.18 bfd_preserve_restore
+ +

Synopsis +

     void bfd_preserve_restore (bfd *, struct bfd_preserve *);
+
+

Description
+This function restores bfd state saved by bfd_preserve_save. +If MARKER is non-NULL in struct bfd_preserve then that block +and all subsequently bfd_alloc'd memory is freed. + +

+ +

2.3.1.19 bfd_preserve_finish
+ +

Synopsis +

     void bfd_preserve_finish (bfd *, struct bfd_preserve *);
+
+

Description
+This function should be called when the bfd state saved by +bfd_preserve_save is no longer needed. ie. when the back-end +object_p function returns with success. + +

+ +

2.3.1.20 bfd_emul_get_maxpagesize
+ +

Synopsis +

     bfd_vma bfd_emul_get_maxpagesize (const char *);
+
+

Description
+Returns the maximum page size, in bytes, as determined by +emulation. + +

Returns
+Returns the maximum page size in bytes for ELF, abort +otherwise. + +

+ +

2.3.1.21 bfd_emul_set_maxpagesize
+ +

Synopsis +

     void bfd_emul_set_maxpagesize (const char *, bfd_vma);
+
+

Description
+For ELF, set the maximum page size for the emulation. It is +a no-op for other formats. + +

+ +

2.3.1.22 bfd_emul_get_commonpagesize
+ +

Synopsis +

     bfd_vma bfd_emul_get_commonpagesize (const char *);
+
+

Description
+Returns the common page size, in bytes, as determined by +emulation. + +

Returns
+Returns the common page size in bytes for ELF, abort otherwise. + +

+ +

2.3.1.23 bfd_emul_set_commonpagesize
+ +

Synopsis +

     void bfd_emul_set_commonpagesize (const char *, bfd_vma);
+
+

Description
+For ELF, set the common page size for the emulation. It is +a no-op for other formats. + +

+ +

2.3.1.24 bfd_demangle
+ +

Synopsis +

     char *bfd_demangle (bfd *, const char *, int);
+
+

Description
+Wrapper around cplus_demangle. Strips leading underscores and +other such chars that would otherwise confuse the demangler. +If passed a g++ v3 ABI mangled name, returns a buffer allocated +with malloc holding the demangled name. Returns NULL otherwise +and on memory alloc failure. + +

+ +

2.3.1.25 struct bfd_iovec
+ +

Description
+The struct bfd_iovec contains the internal file I/O class. +Each BFD has an instance of this class and all file I/O is +routed through it (it is assumed that the instance implements +all methods listed below). +

     struct bfd_iovec
+     {
+       /* To avoid problems with macros, a "b" rather than "f"
+          prefix is prepended to each method name.  */
+       /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
+          bytes starting at PTR.  Return the number of bytes actually
+          transfered (a read past end-of-file returns less than NBYTES),
+          or -1 (setting bfd_error) if an error occurs.  */
+       file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
+       file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
+                           file_ptr nbytes);
+       /* Return the current IOSTREAM file offset, or -1 (setting bfd_error
+          if an error occurs.  */
+       file_ptr (*btell) (struct bfd *abfd);
+       /* For the following, on successful completion a value of 0 is returned.
+          Otherwise, a value of -1 is returned (and  bfd_error is set).  */
+       int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
+       int (*bclose) (struct bfd *abfd);
+       int (*bflush) (struct bfd *abfd);
+       int (*bstat) (struct bfd *abfd, struct stat *sb);
+     };
+
+

+ +

2.3.1.26 bfd_get_mtime
+ +

Synopsis +

     long bfd_get_mtime (bfd *abfd);
+
+

Description
+Return the file modification time (as read from the file system, or +from the archive header for archive members). + +

+ +

2.3.1.27 bfd_get_size
+ +

Synopsis +

     file_ptr bfd_get_size (bfd *abfd);
+
+

Description
+Return the file size (as read from file system) for the file +associated with BFD abfd. + +

The initial motivation for, and use of, this routine is not +so we can get the exact size of the object the BFD applies to, since +that might not be generally possible (archive members for example). +It would be ideal if someone could eventually modify +it so that such results were guaranteed. + +

Instead, we want to ask questions like "is this NNN byte sized +object I'm about to try read from file offset YYY reasonable?" +As as example of where we might do this, some object formats +use string tables for which the first sizeof (long) bytes of the +table contain the size of the table itself, including the size bytes. +If an application tries to read what it thinks is one of these +string tables, without some way to validate the size, and for +some reason the size is wrong (byte swapping error, wrong location +for the string table, etc.), the only clue is likely to be a read +error when it tries to read the table, or a "virtual memory +exhausted" error when it tries to allocate 15 bazillon bytes +of space for the 15 bazillon byte table it is about to read. +This function at least allows us to answer the question, "is the +size reasonable?". + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-information-loss.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-information-loss.html new file mode 100644 index 0000000..55c03da --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/BFD-information-loss.html @@ -0,0 +1,98 @@ + + +BFD information loss - Untitled + + + + + + + + + + + + + + +

1.3.1 Information Loss

+ +

Information can be lost during output. The output formats +supported by BFD do not provide identical facilities, and +information which can be described in one form has nowhere to go in +another format. One example of this is alignment information in +b.out. There is nowhere in an a.out format file to store +alignment information on the contained data, so when a file is linked +from b.out and an a.out image is produced, alignment +information will not propagate to the output file. (The linker will +still use the alignment information internally, so the link is performed +correctly). + +

Another example is COFF section names. COFF files may contain an +unlimited number of sections, each one with a textual section name. If +the target of the link is a format which does not have many sections (e.g., +a.out) or has sections without names (e.g., the Oasys format), the +link cannot be done simply. You can circumvent this problem by +describing the desired input-to-output section mapping with the linker command +language. + +

Information can be lost during canonicalization. The BFD +internal canonical form of the external formats is not exhaustive; there +are structures in input formats for which there is no direct +representation internally. This means that the BFD back ends +cannot maintain all possible data richness through the transformation +between external to internal and back to external formats. + +

This limitation is only a problem when an application reads one +format and writes another. Each BFD back end is responsible for +maintaining as much data as possible, and the internal BFD +canonical form has structures which are opaque to the BFD core, +and exported only to the back ends. When a file is read in one format, +the canonical form is generated for BFD and the application. At the +same time, the back end saves away any information which may otherwise +be lost. If the data is then written back in the same format, the back +end routine will be able to use the canonical form provided by the +BFD core as well as the information it prepared earlier. Since +there is a great deal of commonality between back ends, +there is no information lost when +linking or copying big endian COFF to little endian COFF, or a.out to +b.out. When a mixture of formats is linked, the information is +only lost from the files whose format differs from the destination. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Canonical-format.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Canonical-format.html new file mode 100644 index 0000000..b416a29 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Canonical-format.html @@ -0,0 +1,126 @@ + + +Canonical format - Untitled + + + + + + + + + + + + +

+ +

1.3.2 The BFD canonical object-file format

+ +

The greatest potential for loss of information occurs when there is the least +overlap between the information provided by the source format, that +stored by the canonical format, and that needed by the +destination format. A brief description of the canonical form may help +you understand which kinds of data you can count on preserving across +conversions. + +

+
files
Information stored on a per-file basis includes target machine +architecture, particular implementation format type, a demand pageable +bit, and a write protected bit. Information like Unix magic numbers is +not stored here—only the magic numbers' meaning, so a ZMAGIC +file would have both the demand pageable bit and the write protected +text bit set. The byte order of the target is stored on a per-file +basis, so that big- and little-endian object files may be used with one +another. + +
sections
Each section in the input file contains the name of the section, the +section's original address in the object file, size and alignment +information, various flags, and pointers into other BFD data +structures. + +
symbols
Each symbol contains a pointer to the information for the object file +which originally defined it, its name, its value, and various flag +bits. When a BFD back end reads in a symbol table, it relocates all +symbols to make them relative to the base of the section where they were +defined. Doing this ensures that each symbol points to its containing +section. Each symbol also has a varying amount of hidden private data +for the BFD back end. Since the symbol points to the original file, the +private data format for that symbol is accessible. ld can +operate on a collection of symbols of wildly different formats without +problems. + +

Normal global and simple local symbols are maintained on output, so an +output file (no matter its format) will retain symbols pointing to +functions and to global, static, and common variables. Some symbol +information is not worth retaining; in a.out, type information is +stored in the symbol table as long symbol names. This information would +be useless to most COFF debuggers; the linker has command line switches +to allow users to throw it away. + +

There is one word of type information within the symbol, so if the +format supports symbol type information within symbols (for example, COFF, +IEEE, Oasys) and the type is simple enough to fit within one word +(nearly everything but aggregates), the information will be preserved. + +

relocation level
Each canonical BFD relocation record contains a pointer to the symbol to +relocate to, the offset of the data to relocate, the section the data +is in, and a pointer to a relocation type descriptor. Relocation is +performed by passing messages through the relocation type +descriptor and the symbol pointer. Therefore, relocations can be performed +on output data using a relocation method that is only available in one of the +input formats. For instance, Oasys provides a byte relocation format. +A relocation record requesting this relocation type would point +indirectly to a routine to perform this, so the relocation may be +performed on a byte being written to a 68k COFF file, even though 68k COFF +has no such relocation type. + +
line numbers
Object formats can contain, for debugging purposes, some form of mapping +between symbols, source line numbers, and addresses in the output file. +These addresses have to be relocated along with the symbol information. +Each symbol with an associated list of line number records points to the +first record of the list. The head of a line number list consists of a +pointer to the symbol, which allows finding out the address of the +function whose line number is being described. The rest of the list is +made up of pairs: offsets into the section and line numbers. Any format +which can simply derive this information can pass it successfully +between formats (COFF, IEEE and Oasys). +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Core-Files.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Core-Files.html new file mode 100644 index 0000000..66e3a2c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Core-Files.html @@ -0,0 +1,118 @@ + + +Core Files - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Relocations, +Up: BFD front end +



+
+ +

2.11 Core files

+ +

2.11.1 Core file functions

+ +

Description
+These are functions pertaining to core files. + +

+ +

2.11.1.1 bfd_core_file_failing_command
+ +

Synopsis +

     const char *bfd_core_file_failing_command (bfd *abfd);
+
+

Description
+Return a read-only string explaining which program was running +when it failed and produced the core file abfd. + +

+ +

2.11.1.2 bfd_core_file_failing_signal
+ +

Synopsis +

     int bfd_core_file_failing_signal (bfd *abfd);
+
+

Description
+Returns the signal number which caused the core dump which +generated the file the BFD abfd is attached to. + +

+ +

2.11.1.3 core_file_matches_executable_p
+ +

Synopsis +

     bfd_boolean core_file_matches_executable_p
+        (bfd *core_bfd, bfd *exec_bfd);
+
+

Description
+Return TRUE if the core file attached to core_bfd +was generated by a run of the executable file attached to +exec_bfd, FALSE otherwise. + +

+ +

2.11.1.4 generic_core_file_matches_executable_p
+ +

Synopsis +

     bfd_boolean generic_core_file_matches_executable_p
+        (bfd *core_bfd, bfd *exec_bfd);
+
+

Description
+Return TRUE if the core file attached to core_bfd +was generated by a run of the executable file attached +to exec_bfd. The match is based on executable +basenames only. + +

Note: When not able to determine the core file failing +command or the executable name, we still return TRUE even +though we're not sure that core file and executable match. +This is to avoid generating a false warning in situations +where we really don't know whether they match or not. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Creating-a-Linker-Hash-Table.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Creating-a-Linker-Hash-Table.html new file mode 100644 index 0000000..84f9546 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Creating-a-Linker-Hash-Table.html @@ -0,0 +1,89 @@ + + +Creating a Linker Hash Table - Untitled + + + + + + + + + + + + + +

+ +

2.17.1 Creating a linker hash table

+ +

The linker routines must create a hash table, which must be +derived from struct bfd_link_hash_table described in +bfdlink.c. See Hash Tables, for information on how to +create a derived hash table. This entry point is called using +the target vector of the linker output file. + +

The _bfd_link_hash_table_create entry point must allocate +and initialize an instance of the desired hash table. If the +back end does not require any additional information to be +stored with the entries in the hash table, the entry point may +simply create a struct bfd_link_hash_table. Most likely, +however, some additional information will be needed. + +

For example, with each entry in the hash table the a.out +linker keeps the index the symbol has in the final output file +(this index number is used so that when doing a relocatable +link the symbol index used in the output file can be quickly +filled in when copying over a reloc). The a.out linker code +defines the required structures and functions for a hash table +derived from struct bfd_link_hash_table. The a.out linker +hash table is created by the function +NAME(aout,link_hash_table_create); it simply allocates +space for the hash table, initializes it, and returns a +pointer to it. + +

When writing the linker routines for a new back end, you will +generally not know exactly which fields will be required until +you have finished. You should simply create a new hash table +which defines no additional fields, and then simply add fields +as they become necessary. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Creating-and-Freeing-a-Hash-Table.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Creating-and-Freeing-a-Hash-Table.html new file mode 100644 index 0000000..fd43016 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Creating-and-Freeing-a-Hash-Table.html @@ -0,0 +1,82 @@ + + +Creating and Freeing a Hash Table - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Hash Tables, +Up: Hash Tables +



+
+ +

2.18.1 Creating and freeing a hash table

+ +

To create a hash table, create an instance of a struct +bfd_hash_table (defined in bfd.h) and call +bfd_hash_table_init (if you know approximately how many +entries you will need, the function bfd_hash_table_init_n, +which takes a size argument, may be used). +bfd_hash_table_init returns FALSE if some sort of +error occurs. + +

The function bfd_hash_table_init take as an argument a +function to use to create new entries. For a basic hash +table, use the function bfd_hash_newfunc. See Deriving a New Hash Table Type, for why you would want to use a +different value for this argument. + +

bfd_hash_table_init will create an objalloc which will be +used to allocate new entries. You may allocate memory on this +objalloc using bfd_hash_allocate. + +

Use bfd_hash_table_free to free up all the memory that has +been allocated for a hash table. This will not free up the +struct bfd_hash_table itself, which you must provide. + +

Use bfd_hash_set_default_size to set the default size of +hash table to use. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Define-the-Derived-Structures.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Define-the-Derived-Structures.html new file mode 100644 index 0000000..3bc1910 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Define-the-Derived-Structures.html @@ -0,0 +1,76 @@ + + +Define the Derived Structures - Untitled + + + + + + + + + + + + + +

+ +
2.18.4.1 Define the derived structures
+ +

You must define a structure for an entry in the hash table, +and a structure for the hash table itself. + +

The first field in the structure for an entry in the hash +table must be of the type used for an entry in the hash table +you are deriving from. If you are deriving from a basic hash +table this is struct bfd_hash_entry, which is defined in +bfd.h. The first field in the structure for the hash +table itself must be of the type of the hash table you are +deriving from itself. If you are deriving from a basic hash +table, this is struct bfd_hash_table. + +

For example, the linker hash table defines struct +bfd_link_hash_entry (in bfdlink.h). The first field, +root, is of type struct bfd_hash_entry. Similarly, +the first field in struct bfd_link_hash_table, table, +is of type struct bfd_hash_table. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Deriving-a-New-Hash-Table-Type.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Deriving-a-New-Hash-Table-Type.html new file mode 100644 index 0000000..176d8d4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Deriving-a-New-Hash-Table-Type.html @@ -0,0 +1,80 @@ + + +Deriving a New Hash Table Type - Untitled + + + + + + + + + + + + +

+

+Previous: Traversing a Hash Table, +Up: Hash Tables +



+
+ +

2.18.4 Deriving a new hash table type

+ +

Many uses of hash tables want to store additional information +which each entry in the hash table. Some also find it +convenient to store additional information with the hash table +itself. This may be done using a derived hash table. + +

Since C is not an object oriented language, creating a derived +hash table requires sticking together some boilerplate +routines with a few differences specific to the type of hash +table you want to create. + +

An example of a derived hash table is the linker hash table. +The structures for this are defined in bfdlink.h. The +functions are in linker.c. + +

You may also derive a hash table from an already derived hash +table. For example, the a.out linker backend code uses a hash +table derived from the linker hash table. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Differing-file-formats.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Differing-file-formats.html new file mode 100644 index 0000000..ee21ff2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Differing-file-formats.html @@ -0,0 +1,90 @@ + + +Differing file formats - Untitled + + + + + + + + + + + + + + + +
2.17.2.1 Differing file formats
+ +

Normally all the files involved in a link will be of the same +format, but it is also possible to link together different +format object files, and the back end must support that. The +_bfd_link_add_symbols entry point is called via the target +vector of the file to be added. This has an important +consequence: the function may not assume that the hash table +is the type created by the corresponding +_bfd_link_hash_table_create vector. All the +_bfd_link_add_symbols function can assume about the hash +table is that it is derived from struct +bfd_link_hash_table. + +

Sometimes the _bfd_link_add_symbols function must store +some information in the hash table entry to be used by the +_bfd_final_link function. In such a case the output bfd +xvec must be checked to make sure that the hash table was +created by an object file of the same format. + +

The _bfd_final_link routine must be prepared to handle a +hash entry without any extra information added by the +_bfd_link_add_symbols function. A hash entry without +extra information will also occur when the linker script +directs the linker to create a symbol. Note that, regardless +of how a hash table entry is added, all the fields will be +initialized to some sort of null value by the hash table entry +initialization function. + +

See ecoff_link_add_externals for an example of how to +check the output bfd before saving information (in this +case, the ECOFF external symbol debugging information) in a +hash table entry. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/File-Caching.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/File-Caching.html new file mode 100644 index 0000000..335097e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/File-Caching.html @@ -0,0 +1,125 @@ + + +File Caching - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Internal, +Up: BFD front end +



+
+ +

2.16 File caching

+ +

The file caching mechanism is embedded within BFD and allows +the application to open as many BFDs as it wants without +regard to the underlying operating system's file descriptor +limit (often as low as 20 open files). The module in +cache.c maintains a least recently used list of +BFD_CACHE_MAX_OPEN files, and exports the name +bfd_cache_lookup, which runs around and makes sure that +the required BFD is open. If not, then it chooses a file to +close, closes it and opens the one wanted, returning its file +handle. + +

2.16.1 Caching functions

+ +

+ +

2.16.1.1 bfd_cache_init
+ +

Synopsis +

     bfd_boolean bfd_cache_init (bfd *abfd);
+
+

Description
+Add a newly opened BFD to the cache. + +

+ +

2.16.1.2 bfd_cache_close
+ +

Synopsis +

     bfd_boolean bfd_cache_close (bfd *abfd);
+
+

Description
+Remove the BFD abfd from the cache. If the attached file is open, +then close it too. + +

Returns
+FALSE is returned if closing the file fails, TRUE is +returned if all is well. + +

+ +

2.16.1.3 bfd_cache_close_all
+ +

Synopsis +

     bfd_boolean bfd_cache_close_all (void);
+
+

Description
+Remove all BFDs from the cache. If the attached file is open, +then close it too. + +

Returns
+FALSE is returned if closing one of the file fails, TRUE is +returned if all is well. + +

+ +

2.16.1.4 bfd_open_file
+ +

Synopsis +

     FILE* bfd_open_file (bfd *abfd);
+
+

Description
+Call the OS to open a file for abfd. Return the FILE * +(possibly NULL) that results from this operation. Set up the +BFD so that future accesses know the file is open. If the FILE * +returned is NULL, then it won't have been put in the +cache, so it won't have to be removed from it. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/File-layout.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/File-layout.html new file mode 100644 index 0000000..c60c5d5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/File-layout.html @@ -0,0 +1,185 @@ + + +File layout - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: mmo, +Up: mmo +



+
+ +

3.5.1 File layout

+ +

The mmo file contents is not partitioned into named sections as +with e.g. ELF. Memory areas is formed by specifying the +location of the data that follows. Only the memory area +0x0000...00 to 0x01ff...ff is executable, so +it is used for code (and constants) and the area +0x2000...00 to 0x20ff...ff is used for +writable data. See mmo section mapping. + +

There is provision for specifying “special data” of 65536 +different types. We use type 80 (decimal), arbitrarily chosen the +same as the ELF e_machine number for MMIX, filling it with +section information normally found in ELF objects. See mmo section mapping. + +

Contents is entered as 32-bit words, xor:ed over previous +contents, always zero-initialized. A word that starts with the +byte 0x98 forms a command called a lopcode, where +the next byte distinguished between the thirteen lopcodes. The +two remaining bytes, called the Y and Z fields, or +the YZ field (a 16-bit big-endian number), are used for +various purposes different for each lopcode. As documented in +http://www-cs-faculty.stanford.edu/~knuth/mmixal-intro.ps.gz, +the lopcodes are: + +

+
lop_quote
0x98000001. The next word is contents, regardless of whether it +starts with 0x98 or not. + +
lop_loc
0x9801YYZZ, where Z is 1 or 2. This is a location +directive, setting the location for the next data to the next +32-bit word (for Z = 1) or 64-bit word (for Z = 2), +plus Y * 2^56. Normally Y is 0 for the text segment +and 2 for the data segment. + +
lop_skip
0x9802YYZZ. Increase the current location by YZ bytes. + +
lop_fixo
0x9803YYZZ, where Z is 1 or 2. Store the current location +as 64 bits into the location pointed to by the next 32-bit +(Z = 1) or 64-bit (Z = 2) word, plus Y * +2^56. + +
lop_fixr
0x9804YYZZ. YZ is stored into the current location plus +2 - 4 * YZ. + +
lop_fixrx
0x980500ZZ. Z is 16 or 24. A value L derived from +the following 32-bit word are used in a manner similar to +YZ in lop_fixr: it is xor:ed into the current location +minus 4 * L. The first byte of the word is 0 or 1. If it +is 1, then L = (lowest 24 bits of word) - 2^Z, if 0, +then L = (lowest 24 bits of word). + +
lop_file
0x9806YYZZ. Y is the file number, Z is count of +32-bit words. Set the file number to Y and the line +counter to 0. The next Z * 4 bytes contain the file name, +padded with zeros if the count is not a multiple of four. The +same Y may occur multiple times, but Z must be 0 for +all but the first occurrence. + +
lop_line
0x9807YYZZ. YZ is the line number. Together with +lop_file, it forms the source location for the next 32-bit word. +Note that for each non-lopcode 32-bit word, line numbers are +assumed incremented by one. + +
lop_spec
0x9808YYZZ. YZ is the type number. Data until the next +lopcode other than lop_quote forms special data of type YZ. +See mmo section mapping. + +

Other types than 80, (or type 80 with a content that does not +parse) is stored in sections named .MMIX.spec_data.n +where n is the YZ-type. The flags for such a +sections say not to allocate or load the data. The vma is 0. +Contents of multiple occurrences of special data n is +concatenated to the data of the previous lop_spec ns. The +location in data or code at which the lop_spec occurred is lost. + +

lop_pre
0x980901ZZ. The first lopcode in a file. The Z field forms the +length of header information in 32-bit words, where the first word +tells the time in seconds since 00:00:00 GMT Jan 1 1970. + +
lop_post
0x980a00ZZ. Z > 32. This lopcode follows after all +content-generating lopcodes in a program. The Z field +denotes the value of rG at the beginning of the program. +The following 256 - Z big-endian 64-bit words are loaded +into global registers $G ... $255. + +
lop_stab
0x980b0000. The next-to-last lopcode in a program. Must follow +immediately after the lop_post lopcode and its data. After this +lopcode follows all symbols in a compressed format +(see Symbol-table). + +
lop_end
0x980cYYZZ. The last lopcode in a program. It must follow the +lop_stab lopcode and its data. The YZ field contains the +number of 32-bit words of symbol table information after the +preceding lop_stab lopcode. +
+ +

Note that the lopcode "fixups"; lop_fixr, lop_fixrx and +lop_fixo are not generated by BFD, but are handled. They are +generated by mmixal. + +

This trivial one-label, one-instruction file: + +

      :Main TRAP 1,2,3
+
+

can be represented this way in mmo: + +

      0x98090101 - lop_pre, one 32-bit word with timestamp.
+      <timestamp>
+      0x98010002 - lop_loc, text segment, using a 64-bit address.
+                   Note that mmixal does not emit this for the file above.
+      0x00000000 - Address, high 32 bits.
+      0x00000000 - Address, low 32 bits.
+      0x98060002 - lop_file, 2 32-bit words for file-name.
+      0x74657374 - "test"
+      0x2e730000 - ".s\0\0"
+      0x98070001 - lop_line, line 1.
+      0x00010203 - TRAP 1,2,3
+      0x980a00ff - lop_post, setting $255 to 0.
+      0x00000000
+      0x00000000
+      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
+      0x203a4040   See Symbol-table.
+      0x10404020
+      0x4d206120
+      0x69016e00
+      0x81000000
+      0x980c0005 - lop_end; symbol table contained five 32-bit words.
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Formats.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Formats.html new file mode 100644 index 0000000..b74f334 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Formats.html @@ -0,0 +1,161 @@ + + +Formats - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Archives, +Up: BFD front end +



+
+ +

2.9 File formats

+ +

A format is a BFD concept of high level file contents type. The +formats supported by BFD are: + +

    +
  • bfd_object +
+ The BFD may contain data, symbols, relocations and debug info. + +
    +
  • bfd_archive +
+ The BFD contains other BFDs and an optional index. + +
    +
  • bfd_core +
+ The BFD contains the result of an executable core dump. + +

2.9.1 File format functions

+ +

+ +

2.9.1.1 bfd_check_format
+ +

Synopsis +

     bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
+
+

Description
+Verify if the file attached to the BFD abfd is compatible +with the format format (i.e., one of bfd_object, +bfd_archive or bfd_core). + +

If the BFD has been set to a specific target before the +call, only the named target and format combination is +checked. If the target has not been set, or has been set to +default, then all the known target backends is +interrogated to determine a match. If the default target +matches, it is used. If not, exactly one target must recognize +the file, or an error results. + +

The function returns TRUE on success, otherwise FALSE +with one of the following error codes: + +

    +
  • bfd_error_invalid_operation - +if format is not one of bfd_object, bfd_archive or +bfd_core. + +
  • bfd_error_system_call - +if an error occured during a read - even some file mismatches +can cause bfd_error_system_calls. + +
  • file_not_recognised - +none of the backends recognised the file format. + +
  • bfd_error_file_ambiguously_recognized - +more than one backend recognised the file format. +
+ +

+ +

2.9.1.2 bfd_check_format_matches
+ +

Synopsis +

     bfd_boolean bfd_check_format_matches
+        (bfd *abfd, bfd_format format, char ***matching);
+
+

Description
+Like bfd_check_format, except when it returns FALSE with +bfd_errno set to bfd_error_file_ambiguously_recognized. In that +case, if matching is not NULL, it will be filled in with +a NULL-terminated list of the names of the formats that matched, +allocated with malloc. +Then the user may choose a format and try again. + +

When done with the list that matching points to, the caller +should free it. + +

+ +

2.9.1.3 bfd_set_format
+ +

Synopsis +

     bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
+
+

Description
+This function sets the file format of the BFD abfd to the +format format. If the target set in the BFD does not +support the format requested, the format is invalid, or the BFD +is not open for writing, then an error occurs. + +

+ +

2.9.1.4 bfd_format_string
+ +

Synopsis +

     const char *bfd_format_string (bfd_format format);
+
+

Description
+Return a pointer to a const string +invalid, object, archive, core, or unknown, +depending upon the value of format. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..fed96ad --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/GNU-Free-Documentation-License.html @@ -0,0 +1,431 @@ + + +GNU Free Documentation License - Untitled + + + + + + + + + + + + +

+

+Next: , +Previous: BFD back ends, +Up: Top +



+
+ + +

Appendix A GNU Free Documentation License

+ +
Version 1.1, March 2000
+ +
     Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +written document “free” in the sense of freedom: to assure everyone +the effective freedom to copy and redistribute it, with or without +modifying it, either commercially or noncommercially. Secondarily, +this License preserves for the author and publisher a way to get +credit for their work, while not being considered responsible for +modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

    +     
    +     
    +
  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work that contains a +notice placed by the copyright holder saying it can be distributed +under the terms of this License. The “Document”, below, refers to any +such manual or work. Any member of the public is a licensee, and is +addressed as “you.” + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (For example, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, whose contents can be viewed and edited directly and +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup has been designed to thwart or discourage +subsequent modification by readers is not Transparent. A copy that is +not “Transparent” is called “Opaque.” + +

    Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML designed for human modification. Opaque formats include +PostScript, PDF, proprietary formats that can be read and edited only +by proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML produced by some word processors for output +purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. +

    +     
    +     
    +
  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +

    +     
    +     
    +
  4. COPYING IN QUANTITY + +

    If you publish printed copies of the Document numbering more than 100, +and the Document's license notice requires Cover Texts, you must enclose +the copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a publicly-accessible computer-network location containing a complete +Transparent copy of the Document, free of added material, which the +general network-using public has access to download anonymously at no +charge using public-standard network protocols. If you use the latter +option, you must take reasonably prudent steps, when you begin +distribution of Opaque copies in quantity, to ensure that this +Transparent copy will remain thus accessible at the stated location +until at least one year after the last time you distribute an Opaque +copy (directly or through your agents or retailers) of that edition to +the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +

    +     
    +     
    +
  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

    A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission.
    +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five).
    +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher.
    +D. Preserve all the copyright notices of the Document.
    +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices.
    +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below.
    +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice.
    +H. Include an unaltered copy of this License.
    +I. Preserve the section entitled “History”, and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled “History” in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence.
    +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the “History” section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission.
    +K. In any section entitled “Acknowledgements” or “Dedications”, + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein.
    +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles.
    +M. Delete any section entitled “Endorsements.” Such a section + may not be included in the Modified Version.
    +N. Do not retitle any existing section as “Endorsements” + or to conflict in title with any Invariant Section.
    +

    +     
    +     
    + If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties–for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +

    +     
    +     
    +
  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections entitled “History” +in the various original documents, forming one section entitled +“History”; likewise combine any sections entitled “Acknowledgements”, +and any sections entitled “Dedications.” You must delete all sections +entitled “Endorsements.” +

    +     
    +     
    +
  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +

    +     
    +     
    +
  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, does not as a whole count as a Modified Version +of the Document, provided no compilation copyright is claimed for the +compilation. Such a compilation is called an “aggregate”, and this +License does not apply to the other self-contained works thus compiled +with the Document, on account of their being thus compiled, if they +are not themselves derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one quarter +of the entire aggregate, the Document's Cover Texts may be placed on +covers that surround only the Document within the aggregate. +Otherwise they must appear on covers around the whole aggregate. +

    +     
    +     
    +
  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License provided that you also include the +original English version of this License. In case of a disagreement +between the translation and the original English version of this +License, the original English version will prevail. +

    +     
    +     
    +
  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. +

    +     
    +     
    +
  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

     Copyright (C)  year  your name.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being list their titles, with the
+     Front-Cover Texts being list, and with the Back-Cover Texts being list.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+

If you have no Invariant Sections, write “with no Invariant Sections” +instead of saying which ones are invariant. If you have no +Front-Cover Texts, write “no Front-Cover Texts” instead of +“Front-Cover Texts being list”; likewise for Back-Cover Texts. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Hash-Tables.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Hash-Tables.html new file mode 100644 index 0000000..974f837 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Hash-Tables.html @@ -0,0 +1,82 @@ + + +Hash Tables - Untitled + + + + + + + + + + + + +

+

+Previous: Linker Functions, +Up: BFD front end +



+
+ +

2.18 Hash Tables

+ +

BFD provides a simple set of hash table functions. Routines +are provided to initialize a hash table, to free a hash table, +to look up a string in a hash table and optionally create an +entry for it, and to traverse a hash table. There is +currently no routine to delete an string from a hash table. + +

The basic hash table does not permit any data to be stored +with a string. However, a hash table is designed to present a +base class from which other types of hash tables may be +derived. These derived types may store additional information +with the string. Hash tables were implemented in this way, +rather than simply providing a data pointer in a hash table +entry, because they were designed for use by the linker back +ends. The linker may create thousands of hash table entries, +and the overhead of allocating private data and storing and +following pointers becomes noticeable. + +

The basic hash table code is in hash.c. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/History.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/History.html new file mode 100644 index 0000000..41a3b6a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/History.html @@ -0,0 +1,76 @@ + + +History - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Overview, +Up: Overview +



+
+ +

1.1 History

+ +

One spur behind BFD was the desire, on the part of the GNU 960 team at +Intel Oregon, for interoperability of applications on their COFF and +b.out file formats. Cygnus was providing GNU support for the team, and +was contracted to provide the required functionality. + +

The name came from a conversation David Wallace was having with Richard +Stallman about the library: RMS said that it would be quite hard—David +said “BFD”. Stallman was right, but the name stuck. + +

At the same time, Ready Systems wanted much the same thing, but for +different object file formats: IEEE-695, Oasys, Srecords, a.out and 68k +coff. + +

BFD was first implemented by members of Cygnus Support; Steve +Chamberlain (sac@cygnus.com), John Gilmore +(gnu@cygnus.com), K. Richard Pixley (rich@cygnus.com) +and David Henkel-Wallace (gumby@cygnus.com). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/How-It-Works.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/How-It-Works.html new file mode 100644 index 0000000..46e492d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/How-It-Works.html @@ -0,0 +1,99 @@ + + +How It Works - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: History, +Up: Overview +



+
+ +

1.2 How To Use BFD

+ +

To use the library, include bfd.h and link with libbfd.a. + +

BFD provides a common interface to the parts of an object file +for a calling application. + +

When an application successfully opens a target file (object, archive, or +whatever), a pointer to an internal structure is returned. This pointer +points to a structure called bfd, described in +bfd.h. Our convention is to call this pointer a BFD, and +instances of it within code abfd. All operations on +the target object file are applied as methods to the BFD. The mapping is +defined within bfd.h in a set of macros, all beginning +with bfd_ to reduce namespace pollution. + +

For example, this sequence does what you would probably expect: +return the number of sections in an object file attached to a BFD +abfd. + +

     
+     #include "bfd.h"
+     
+     unsigned int number_of_sections (abfd)
+     bfd *abfd;
+     {
+       return bfd_count_sections (abfd);
+     }
+     
+
+

The abstraction used within BFD is that an object file has: + +

    +
  • a header, +
  • a number of sections containing raw data (see Sections), +
  • a set of relocations (see Relocations), and +
  • some symbol information (see Symbols). +
+ Also, BFDs opened for archives have the additional attribute of an index +and contain subordinate BFDs. This approach is fine for a.out and coff, +but loses efficiency when applied to formats such as S-records and +IEEE-695. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Information-provided-by-the-linker.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Information-provided-by-the-linker.html new file mode 100644 index 0000000..d81956e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Information-provided-by-the-linker.html @@ -0,0 +1,77 @@ + + +Information provided by the linker - Untitled + + + + + + + + + + + + + + + +
2.17.3.1 Information provided by the linker
+ +

Before the linker calls the _bfd_final_link entry point, +it sets up some data structures for the function to use. + +

The input_bfds field of the bfd_link_info structure +will point to a list of all the input files included in the +link. These files are linked through the link_next field +of the bfd structure. + +

Each section in the output file will have a list of +link_order structures attached to the map_head.link_order +field (the link_order structure is defined in +bfdlink.h). These structures describe how to create the +contents of the output section in terms of the contents of +various input sections, fill constants, and, eventually, other +types of information. They also describe relocs that must be +created by the BFD backend, but do not correspond to any input +file; this is used to support -Ur, which builds constructors +while generating a relocatable object file. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Initialization.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Initialization.html new file mode 100644 index 0000000..f79de6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Initialization.html @@ -0,0 +1,73 @@ + + +Initialization - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Memory Usage, +Up: BFD front end +



+
+ +

2.5 Initialization

+ +

2.5.1 Initialization functions

+ +

These are the functions that handle initializing a BFD. + +

+ +

2.5.1.1 bfd_init
+ +

Synopsis +

     void bfd_init (void);
+
+

Description
+This routine must be called before any other BFD function to +initialize magical internal data structures. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Internal.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Internal.html new file mode 100644 index 0000000..53bca94 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Internal.html @@ -0,0 +1,237 @@ + + +Internal - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Opening and Closing, +Up: BFD front end +



+
+ +

2.15 Implementation details

+ +

2.15.1 Internal functions

+ +

Description
+These routines are used within BFD. +They are not intended for export, but are documented here for +completeness. + +

+ +

2.15.1.1 bfd_write_bigendian_4byte_int
+ +

Synopsis +

     bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
+
+

Description
+Write a 4 byte integer i to the output BFD abfd, in big +endian order regardless of what else is going on. This is useful in +archives. + +

+ +

2.15.1.2 bfd_put_size
+ +

+ +

2.15.1.3 bfd_get_size
+ +

Description
+These macros as used for reading and writing raw data in +sections; each access (except for bytes) is vectored through +the target format of the BFD and mangled accordingly. The +mangling performs any necessary endian translations and +removes alignment restrictions. Note that types accepted and +returned by these macros are identical so they can be swapped +around in macros—for example, libaout.h defines GET_WORD +to either bfd_get_32 or bfd_get_64. + +

In the put routines, val must be a bfd_vma. If we are on a +system without prototypes, the caller is responsible for making +sure that is true, with a cast if necessary. We don't cast +them in the macro definitions because that would prevent lint +or gcc -Wall from detecting sins such as passing a pointer. +To detect calling these with less than a bfd_vma, use +gcc -Wconversion on a host with 64 bit bfd_vma's. +

     
+     /* Byte swapping macros for user section data.  */
+     
+     #define bfd_put_8(abfd, val, ptr) \
+       ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+     #define bfd_put_signed_8 \
+       bfd_put_8
+     #define bfd_get_8(abfd, ptr) \
+       (*(unsigned char *) (ptr) & 0xff)
+     #define bfd_get_signed_8(abfd, ptr) \
+       (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+     
+     #define bfd_put_16(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
+     #define bfd_put_signed_16 \
+       bfd_put_16
+     #define bfd_get_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx16, (ptr))
+     #define bfd_get_signed_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
+     
+     #define bfd_put_32(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
+     #define bfd_put_signed_32 \
+       bfd_put_32
+     #define bfd_get_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx32, (ptr))
+     #define bfd_get_signed_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
+     
+     #define bfd_put_64(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
+     #define bfd_put_signed_64 \
+       bfd_put_64
+     #define bfd_get_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx64, (ptr))
+     #define bfd_get_signed_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
+     
+     #define bfd_get(bits, abfd, ptr)                       \
+       ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
+        : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
+        : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
+        : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
+        : (abort (), (bfd_vma) - 1))
+     
+     #define bfd_put(bits, abfd, val, ptr)                  \
+       ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
+        : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
+        : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
+        : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
+        : (abort (), (void) 0))
+     
+
+

+ +

2.15.1.4 bfd_h_put_size
+ +

Description
+These macros have the same function as their bfd_get_x +brethren, except that they are used for removing information +for the header records of object files. Believe it or not, +some object files keep their header records in big endian +order and their data in little endian order. +

     
+     /* Byte swapping macros for file header data.  */
+     
+     #define bfd_h_put_8(abfd, val, ptr) \
+       bfd_put_8 (abfd, val, ptr)
+     #define bfd_h_put_signed_8(abfd, val, ptr) \
+       bfd_put_8 (abfd, val, ptr)
+     #define bfd_h_get_8(abfd, ptr) \
+       bfd_get_8 (abfd, ptr)
+     #define bfd_h_get_signed_8(abfd, ptr) \
+       bfd_get_signed_8 (abfd, ptr)
+     
+     #define bfd_h_put_16(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
+     #define bfd_h_put_signed_16 \
+       bfd_h_put_16
+     #define bfd_h_get_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx16, (ptr))
+     #define bfd_h_get_signed_16(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
+     
+     #define bfd_h_put_32(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
+     #define bfd_h_put_signed_32 \
+       bfd_h_put_32
+     #define bfd_h_get_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx32, (ptr))
+     #define bfd_h_get_signed_32(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
+     
+     #define bfd_h_put_64(abfd, val, ptr) \
+       BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
+     #define bfd_h_put_signed_64 \
+       bfd_h_put_64
+     #define bfd_h_get_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx64, (ptr))
+     #define bfd_h_get_signed_64(abfd, ptr) \
+       BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
+     
+     /* Aliases for the above, which should eventually go away.  */
+     
+     #define H_PUT_64  bfd_h_put_64
+     #define H_PUT_32  bfd_h_put_32
+     #define H_PUT_16  bfd_h_put_16
+     #define H_PUT_8   bfd_h_put_8
+     #define H_PUT_S64 bfd_h_put_signed_64
+     #define H_PUT_S32 bfd_h_put_signed_32
+     #define H_PUT_S16 bfd_h_put_signed_16
+     #define H_PUT_S8  bfd_h_put_signed_8
+     #define H_GET_64  bfd_h_get_64
+     #define H_GET_32  bfd_h_get_32
+     #define H_GET_16  bfd_h_get_16
+     #define H_GET_8   bfd_h_get_8
+     #define H_GET_S64 bfd_h_get_signed_64
+     #define H_GET_S32 bfd_h_get_signed_32
+     #define H_GET_S16 bfd_h_get_signed_16
+     #define H_GET_S8  bfd_h_get_signed_8
+     
+     
+
+

+ +

2.15.1.5 bfd_log2
+ +

Synopsis +

     unsigned int bfd_log2 (bfd_vma x);
+
+

Description
+Return the log base 2 of the value supplied, rounded up. E.g., an +x of 1025 returns 11. A x of 0 returns 0. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Linker-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Linker-Functions.html new file mode 100644 index 0000000..cbcfdde --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Linker-Functions.html @@ -0,0 +1,94 @@ + + +Linker Functions - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: File Caching, +Up: BFD front end +



+
+ +

2.17 Linker Functions

+ +

The linker uses three special entry points in the BFD target +vector. It is not necessary to write special routines for +these entry points when creating a new BFD back end, since +generic versions are provided. However, writing them can +speed up linking and make it use significantly less runtime +memory. + +

The first routine creates a hash table used by the other +routines. The second routine adds the symbols from an object +file to the hash table. The third routine takes all the +object files and links them together to create the output +file. These routines are designed so that the linker proper +does not need to know anything about the symbols in the object +files that it is linking. The linker merely arranges the +sections as directed by the linker script and lets BFD handle +the details of symbols and relocs. + +

The second routine and third routines are passed a pointer to +a struct bfd_link_info structure (defined in +bfdlink.h) which holds information relevant to the link, +including the linker hash table (which was created by the +first routine) and a set of callback functions to the linker +proper. + +

The generic linker routines are in linker.c, and use the +header file genlink.h. As of this writing, the only back +ends which have implemented versions of these routines are +a.out (in aoutx.h) and ECOFF (in ecoff.c). The a.out +routines are used as examples throughout this section. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Looking-Up-or-Entering-a-String.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Looking-Up-or-Entering-a-String.html new file mode 100644 index 0000000..ba28d7d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Looking-Up-or-Entering-a-String.html @@ -0,0 +1,82 @@ + + +Looking Up or Entering a String - Untitled + + + + + + + + + + + + + + + +

2.18.2 Looking up or entering a string

+ +

The function bfd_hash_lookup is used both to look up a +string in the hash table and to create a new entry. + +

If the create argument is FALSE, bfd_hash_lookup +will look up a string. If the string is found, it will +returns a pointer to a struct bfd_hash_entry. If the +string is not found in the table bfd_hash_lookup will +return NULL. You should not modify any of the fields in +the returns struct bfd_hash_entry. + +

If the create argument is TRUE, the string will be +entered into the hash table if it is not already there. +Either way a pointer to a struct bfd_hash_entry will be +returned, either to the existing structure or to a newly +created one. In this case, a NULL return means that an +error occurred. + +

If the create argument is TRUE, and a new entry is +created, the copy argument is used to decide whether to +copy the string onto the hash table objalloc or not. If +copy is passed as FALSE, you must be careful not to +deallocate or modify the string as long as the hash table +exists. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Memory-Usage.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Memory-Usage.html new file mode 100644 index 0000000..00a5fa8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Memory-Usage.html @@ -0,0 +1,79 @@ + + +Memory Usage - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: BFD front end, +Up: BFD front end +



+
+ +

2.4 Memory Usage

+ +

BFD keeps all of its internal structures in obstacks. There is one obstack +per open BFD file, into which the current state is stored. When a BFD is +closed, the obstack is deleted, and so everything which has been +allocated by BFD for the closing file is thrown away. + +

BFD does not free anything created by an application, but pointers into +bfd structures become invalid on a bfd_close; for example, +after a bfd_close the vector passed to +bfd_canonicalize_symtab is still around, since it has been +allocated by the application, but the data that it pointed to are +lost. + +

The general rule is to not close a BFD until all operations dependent +upon data from the BFD have been completed, or all the data from within +the file has been copied. To help with the management of memory, there +is a function (bfd_alloc_size) which returns the number of bytes +in obstacks associated with the supplied BFD. This could be used to +select the greediest open BFD, close it to reclaim the memory, perform +some operation and reopen the BFD again, to get a fresh copy of the data +structures. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Mini-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Mini-Symbols.html new file mode 100644 index 0000000..1f1c710 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Mini-Symbols.html @@ -0,0 +1,75 @@ + + +Mini Symbols - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Writing Symbols, +Up: Symbols +



+
+ +

2.7.3 Mini Symbols

+ +

Mini symbols provide read-only access to the symbol table. +They use less memory space, but require more time to access. +They can be useful for tools like nm or objdump, which may +have to handle symbol tables of extremely large executables. + +

The bfd_read_minisymbols function will read the symbols +into memory in an internal form. It will return a void * +pointer to a block of memory, a symbol count, and the size of +each symbol. The pointer is allocated using malloc, and +should be freed by the caller when it is no longer needed. + +

The function bfd_minisymbol_to_symbol will take a pointer +to a minisymbol, and a pointer to a structure returned by +bfd_make_empty_symbol, and return a asymbol structure. +The return value may or may not be the same as the value from +bfd_make_empty_symbol which was passed in. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Opening-and-Closing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Opening-and-Closing.html new file mode 100644 index 0000000..1047467 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Opening-and-Closing.html @@ -0,0 +1,448 @@ + + +Opening and Closing - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Architectures, +Up: BFD front end +



+
+ +

2.14 Opening and closing BFDs

+ +

2.14.1 Functions for opening and closing

+ +

+ +

2.14.1.1 bfd_fopen
+ +

Synopsis +

     bfd *bfd_fopen (const char *filename, const char *target,
+         const char *mode, int fd);
+
+

Description
+Open the file filename with the target target. +Return a pointer to the created BFD. If fd is not -1, +then fdopen is used to open the file; otherwise, fopen +is used. mode is passed directly to fopen or +fdopen. + +

Calls bfd_find_target, so target is interpreted as by +that function. + +

The new BFD is marked as cacheable iff fd is -1. + +

If NULL is returned then an error has occured. Possible errors +are bfd_error_no_memory, bfd_error_invalid_target or +system_call error. + +

+ +

2.14.1.2 bfd_openr
+ +

Synopsis +

     bfd *bfd_openr (const char *filename, const char *target);
+
+

Description
+Open the file filename (using fopen) with the target +target. Return a pointer to the created BFD. + +

Calls bfd_find_target, so target is interpreted as by +that function. + +

If NULL is returned then an error has occured. Possible errors +are bfd_error_no_memory, bfd_error_invalid_target or +system_call error. + +

+ +

2.14.1.3 bfd_fdopenr
+ +

Synopsis +

     bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
+
+

Description
+bfd_fdopenr is to bfd_fopenr much like fdopen is to +fopen. It opens a BFD on a file already described by the +fd supplied. + +

When the file is later bfd_closed, the file descriptor will +be closed. If the caller desires that this file descriptor be +cached by BFD (opened as needed, closed as needed to free +descriptors for other opens), with the supplied fd used as +an initial file descriptor (but subject to closure at any time), +call bfd_set_cacheable(bfd, 1) on the returned BFD. The default +is to assume no caching; the file descriptor will remain open +until bfd_close, and will not be affected by BFD operations +on other files. + +

Possible errors are bfd_error_no_memory, +bfd_error_invalid_target and bfd_error_system_call. + +

+ +

2.14.1.4 bfd_openstreamr
+ +

Synopsis +

     bfd *bfd_openstreamr (const char *, const char *, void *);
+
+

Description
+Open a BFD for read access on an existing stdio stream. When +the BFD is passed to bfd_close, the stream will be closed. + +

+ +

2.14.1.5 bfd_openr_iovec
+ +

Synopsis +

     bfd *bfd_openr_iovec (const char *filename, const char *target,
+         void *(*open) (struct bfd *nbfd,
+         void *open_closure),
+         void *open_closure,
+         file_ptr (*pread) (struct bfd *nbfd,
+         void *stream,
+         void *buf,
+         file_ptr nbytes,
+         file_ptr offset),
+         int (*close) (struct bfd *nbfd,
+         void *stream),
+         int (*stat) (struct bfd *abfd,
+         void *stream,
+         struct stat *sb));
+
+

Description
+Create and return a BFD backed by a read-only stream. +The stream is created using open, accessed using +pread and destroyed using close. + +

Calls bfd_find_target, so target is interpreted as by +that function. + +

Calls open (which can call bfd_zalloc and +bfd_get_filename) to obtain the read-only stream backing +the BFD. open either succeeds returning the +non-NULL stream, or fails returning NULL +(setting bfd_error). + +

Calls pread to request nbytes of data from +stream starting at offset (e.g., via a call to +bfd_read). pread either succeeds returning the +number of bytes read (which can be less than nbytes when +end-of-file), or fails returning -1 (setting bfd_error). + +

Calls close when the BFD is later closed using +bfd_close. close either succeeds returning 0, or +fails returning -1 (setting bfd_error). + +

Calls stat to fill in a stat structure for bfd_stat, +bfd_get_size, and bfd_get_mtime calls. stat returns 0 +on success, or returns -1 on failure (setting bfd_error). + +

If bfd_openr_iovec returns NULL then an error has +occurred. Possible errors are bfd_error_no_memory, +bfd_error_invalid_target and bfd_error_system_call. + +

+ +

2.14.1.6 bfd_openw
+ +

Synopsis +

     bfd *bfd_openw (const char *filename, const char *target);
+
+

Description
+Create a BFD, associated with file filename, using the +file format target, and return a pointer to it. + +

Possible errors are bfd_error_system_call, bfd_error_no_memory, +bfd_error_invalid_target. + +

+ +

2.14.1.7 bfd_close
+ +

Synopsis +

     bfd_boolean bfd_close (bfd *abfd);
+
+

Description
+Close a BFD. If the BFD was open for writing, then pending +operations are completed and the file written out and closed. +If the created file is executable, then chmod is called +to mark it as such. + +

All memory attached to the BFD is released. + +

The file descriptor associated with the BFD is closed (even +if it was passed in to BFD by bfd_fdopenr). + +

Returns
+TRUE is returned if all is ok, otherwise FALSE. + +

+ +

2.14.1.8 bfd_close_all_done
+ +

Synopsis +

     bfd_boolean bfd_close_all_done (bfd *);
+
+

Description
+Close a BFD. Differs from bfd_close since it does not +complete any pending operations. This routine would be used +if the application had just used BFD for swapping and didn't +want to use any of the writing code. + +

If the created file is executable, then chmod is called +to mark it as such. + +

All memory attached to the BFD is released. + +

Returns
+TRUE is returned if all is ok, otherwise FALSE. + +

+ +

2.14.1.9 bfd_create
+ +

Synopsis +

     bfd *bfd_create (const char *filename, bfd *templ);
+
+

Description
+Create a new BFD in the manner of bfd_openw, but without +opening a file. The new BFD takes the target from the target +used by template. The format is always set to bfd_object. + +

+ +

2.14.1.10 bfd_make_writable
+ +

Synopsis +

     bfd_boolean bfd_make_writable (bfd *abfd);
+
+

Description
+Takes a BFD as created by bfd_create and converts it +into one like as returned by bfd_openw. It does this +by converting the BFD to BFD_IN_MEMORY. It's assumed that +you will call bfd_make_readable on this bfd later. + +

Returns
+TRUE is returned if all is ok, otherwise FALSE. + +

+ +

2.14.1.11 bfd_make_readable
+ +

Synopsis +

     bfd_boolean bfd_make_readable (bfd *abfd);
+
+

Description
+Takes a BFD as created by bfd_create and +bfd_make_writable and converts it into one like as +returned by bfd_openr. It does this by writing the +contents out to the memory buffer, then reversing the +direction. + +

Returns
+TRUE is returned if all is ok, otherwise FALSE. + +

+ +

2.14.1.12 bfd_alloc
+ +

Synopsis +

     void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
+
+

Description
+Allocate a block of wanted bytes of memory attached to +abfd and return a pointer to it. + +

+ +

2.14.1.13 bfd_alloc2
+ +

Synopsis +

     void *bfd_alloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+
+

Description
+Allocate a block of nmemb elements of size bytes each +of memory attached to abfd and return a pointer to it. + +

+ +

2.14.1.14 bfd_zalloc
+ +

Synopsis +

     void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
+
+

Description
+Allocate a block of wanted bytes of zeroed memory +attached to abfd and return a pointer to it. + +

+ +

2.14.1.15 bfd_zalloc2
+ +

Synopsis +

     void *bfd_zalloc2 (bfd *abfd, bfd_size_type nmemb, bfd_size_type size);
+
+

Description
+Allocate a block of nmemb elements of size bytes each +of zeroed memory attached to abfd and return a pointer to it. + +

+ +

2.14.1.16 bfd_calc_gnu_debuglink_crc32
+ +

Synopsis +

     unsigned long bfd_calc_gnu_debuglink_crc32
+        (unsigned long crc, const unsigned char *buf, bfd_size_type len);
+
+

Description
+Computes a CRC value as used in the .gnu_debuglink section. +Advances the previously computed crc value by computing +and adding in the crc32 for len bytes of buf. + +

Returns
+Return the updated CRC32 value. + +

+ +

2.14.1.17 get_debug_link_info
+ +

Synopsis +

     char *get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
+
+

Description
+fetch the filename and CRC32 value for any separate debuginfo +associated with abfd. Return NULL if no such info found, +otherwise return filename and update crc32_out. + +

+ +

2.14.1.18 separate_debug_file_exists
+ +

Synopsis +

     bfd_boolean separate_debug_file_exists
+        (char *name, unsigned long crc32);
+
+

Description
+Checks to see if name is a file and if its contents +match crc32. + +

+ +

2.14.1.19 find_separate_debug_file
+ +

Synopsis +

     char *find_separate_debug_file (bfd *abfd);
+
+

Description
+Searches abfd for a reference to separate debugging +information, scans various locations in the filesystem, including +the file tree rooted at debug_file_directory, and returns a +filename of such debugging information if the file is found and has +matching CRC32. Returns NULL if no reference to debugging file +exists, or file cannot be found. + +

+ +

2.14.1.20 bfd_follow_gnu_debuglink
+ +

Synopsis +

     char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
+
+

Description
+Takes a BFD and searches it for a .gnu_debuglink section. If this +section is found, it examines the section for the name and checksum +of a '.debug' file containing auxiliary debugging information. It +then searches the filesystem for this .debug file in some standard +locations, including the directory tree rooted at dir, and if +found returns the full filename. + +

If dir is NULL, it will search a default path configured into +libbfd at build time. [XXX this feature is not currently +implemented]. + +

Returns
+NULL on any errors or failure to locate the .debug file, +otherwise a pointer to a heap-allocated string containing the +filename. The caller is responsible for freeing this string. + +

+ +

2.14.1.21 bfd_create_gnu_debuglink_section
+ +

Synopsis +

     struct bfd_section *bfd_create_gnu_debuglink_section
+        (bfd *abfd, const char *filename);
+
+

Description
+Takes a BFD and adds a .gnu_debuglink section to it. The section is sized +to be big enough to contain a link to the specified filename. + +

Returns
+A pointer to the new section is returned if all is ok. Otherwise NULL is +returned and bfd_error is set. + +

+ +

2.14.1.22 bfd_fill_in_gnu_debuglink_section
+ +

Synopsis +

     bfd_boolean bfd_fill_in_gnu_debuglink_section
+        (bfd *abfd, struct bfd_section *sect, const char *filename);
+
+

Description
+Takes a BFD and containing a .gnu_debuglink section SECT +and fills in the contents of the section to contain a link to the +specified filename. The filename should be relative to the +current directory. + +

Returns
+TRUE is returned if all is ok. Otherwise FALSE is returned +and bfd_error is set. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Overview.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Overview.html new file mode 100644 index 0000000..55a8e19 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Overview.html @@ -0,0 +1,80 @@ + + +Overview - Untitled + + + + + + + + + + + + +

+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 Introduction

+ +

BFD is a package which allows applications to use the +same routines to operate on object files whatever the object file +format. A new object file format can be supported simply by +creating a new BFD back end and adding it to the library. + +

BFD is split into two parts: the front end, and the back ends (one for +each object file format). +

    +
  • The front end of BFD provides the interface to the user. It manages +memory and various canonical data structures. The front end also +decides which back end to use and when to call back end routines. +
  • The back ends provide BFD its view of the real world. Each back +end provides a set of calls which the BFD front end can use to maintain +its canonical form. The back ends also may keep around information for +their own use, for greater efficiency. +
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Performing-the-Final-Link.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Performing-the-Final-Link.html new file mode 100644 index 0000000..2504523 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Performing-the-Final-Link.html @@ -0,0 +1,81 @@ + + +Performing the Final Link - Untitled + + + + + + + + + + + + + + +

2.17.3 Performing the final link

+ +

When all the input files have been processed, the linker calls +the _bfd_final_link entry point of the output BFD. This +routine is responsible for producing the final output file, +which has several aspects. It must relocate the contents of +the input sections and copy the data into the output sections. +It must build an output symbol table including any local +symbols from the input files and the global symbols from the +hash table. When producing relocatable output, it must +modify the input relocs and write them into the output file. +There may also be object format dependent work to be done. + +

The linker will also call the write_object_contents entry +point when the BFD is closed. The two entry points must work +together in order to produce the correct output file. + +

The details of how this works are inevitably dependent upon +the specific object file format. The a.out +_bfd_final_link routine is NAME(aout,final_link). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Reading-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Reading-Symbols.html new file mode 100644 index 0000000..f543f10 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Reading-Symbols.html @@ -0,0 +1,89 @@ + + +Reading Symbols - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Symbols, +Up: Symbols +



+
+ +

2.7.1 Reading symbols

+ +

There are two stages to reading a symbol table from a BFD: +allocating storage, and the actual reading process. This is an +excerpt from an application which reads the symbol table: + +

              long storage_needed;
+              asymbol **symbol_table;
+              long number_of_symbols;
+              long i;
+     
+              storage_needed = bfd_get_symtab_upper_bound (abfd);
+     
+              if (storage_needed < 0)
+                FAIL
+     
+              if (storage_needed == 0)
+                return;
+     
+              symbol_table = xmalloc (storage_needed);
+                ...
+              number_of_symbols =
+                 bfd_canonicalize_symtab (abfd, symbol_table);
+     
+              if (number_of_symbols < 0)
+                FAIL
+     
+              for (i = 0; i < number_of_symbols; i++)
+                process_symbol (symbol_table[i]);
+
+

All storage for the symbols themselves is in an objalloc +connected to the BFD; it is freed when the BFD is closed. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Relocating-the-section-contents.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Relocating-the-section-contents.html new file mode 100644 index 0000000..6ed7df7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Relocating-the-section-contents.html @@ -0,0 +1,89 @@ + + +Relocating the section contents - Untitled + + + + + + + + + + + + + +

+ +
2.17.3.2 Relocating the section contents
+ +

The _bfd_final_link function should look through the +link_order structures attached to each section of the +output file. Each link_order structure should either be +handled specially, or it should be passed to the function +_bfd_default_link_order which will do the right thing +(_bfd_default_link_order is defined in linker.c). + +

For efficiency, a link_order of type +bfd_indirect_link_order whose associated section belongs +to a BFD of the same format as the output BFD must be handled +specially. This type of link_order describes part of an +output section in terms of a section belonging to one of the +input files. The _bfd_final_link function should read the +contents of the section and any associated relocs, apply the +relocs to the section contents, and write out the modified +section contents. If performing a relocatable link, the +relocs themselves must also be modified and written out. + +

The functions _bfd_relocate_contents and +_bfd_final_link_relocate provide some general support for +performing the actual relocations, notably overflow checking. +Their arguments include information about the symbol the +relocation is against and a reloc_howto_type argument +which describes the relocation to perform. These functions +are defined in reloc.c. + +

The a.out function which handles reading, relocating, and +writing section contents is aout_link_input_section. The +actual relocation is done in aout_link_input_section_std +and aout_link_input_section_ext. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Relocations.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Relocations.html new file mode 100644 index 0000000..b70a00e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Relocations.html @@ -0,0 +1,76 @@ + + +Relocations - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Formats, +Up: BFD front end +



+
+ +

2.10 Relocations

+ +

BFD maintains relocations in much the same way it maintains +symbols: they are left alone until required, then read in +en-masse and translated into an internal form. A common +routine bfd_perform_relocation acts upon the +canonical form to do the fixup. + +

Relocations are maintained on a per section basis, +while symbols are maintained on a per BFD basis. + +

All that a back end has to do to fit the BFD interface is to create +a struct reloc_cache_entry for each relocation +in a particular section, and fill in the right bits of the structures. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Section-Input.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Section-Input.html new file mode 100644 index 0000000..447a57a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Section-Input.html @@ -0,0 +1,86 @@ + + +Section Input - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Sections, +Up: Sections +



+
+ +

2.6.1 Section input

+ +

When a BFD is opened for reading, the section structures are +created and attached to the BFD. + +

Each section has a name which describes the section in the +outside world—for example, a.out would contain at least +three sections, called .text, .data and .bss. + +

Names need not be unique; for example a COFF file may have several +sections named .data. + +

Sometimes a BFD will contain more than the “natural” number of +sections. A back end may attach other sections containing +constructor data, or an application may add a section (using +bfd_make_section) to the sections attached to an already open +BFD. For example, the linker creates an extra section +COMMON for each input file's BFD to hold information about +common storage. + +

The raw data is not necessarily read in when +the section descriptor is created. Some targets may leave the +data in place until a bfd_get_section_contents call is +made. Other back ends may read in all the data at once. For +example, an S-record file has to be read once to determine the +size of the data. An IEEE-695 file doesn't contain raw data in +sections, but data and relocation expressions intermixed, so +the data area has to be parsed to get out the data and +relocations. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Section-Output.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Section-Output.html new file mode 100644 index 0000000..167f6a9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Section-Output.html @@ -0,0 +1,111 @@ + + +Section Output - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Section Input, +Up: Sections +



+
+ +

2.6.2 Section output

+ +

To write a new object style BFD, the various sections to be +written have to be created. They are attached to the BFD in +the same way as input sections; data is written to the +sections using bfd_set_section_contents. + +

Any program that creates or combines sections (e.g., the assembler +and linker) must use the asection fields output_section and +output_offset to indicate the file sections to which each +section must be written. (If the section is being created from +scratch, output_section should probably point to the section +itself and output_offset should probably be zero.) + +

The data to be written comes from input sections attached +(via output_section pointers) to +the output sections. The output section structure can be +considered a filter for the input section: the output section +determines the vma of the output data and the name, but the +input section determines the offset into the output section of +the data to be written. + +

E.g., to create a section "O", starting at 0x100, 0x123 long, +containing two subsections, "A" at offset 0x0 (i.e., at vma +0x100) and "B" at offset 0x20 (i.e., at vma 0x120) the asection +structures would look like: + +

        section name          "A"
+          output_offset   0x00
+          size            0x20
+          output_section ----------->  section name    "O"
+                                  |    vma             0x100
+        section name          "B" |    size            0x123
+          output_offset   0x20    |
+          size            0x103   |
+          output_section  --------|
+
+

2.6.3 Link orders

+ +

The data within a section is stored in a link_order. +These are much like the fixups in gas. The link_order +abstraction allows a section to grow and shrink within itself. + +

A link_order knows how big it is, and which is the next +link_order and where the raw data for it is; it also points to +a list of relocations which apply to it. + +

The link_order is used by the linker to perform relaxing on +final code. The compiler creates code which is as big as +necessary to make it work without relaxing, and the user can +select whether to relax. Sometimes relaxing takes a lot of +time. The linker runs around the relocations to see if any +are attached to data which can be shrunk, if so it does it on +a link_order by link_order basis. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Sections.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Sections.html new file mode 100644 index 0000000..2369776 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Sections.html @@ -0,0 +1,72 @@ + + +Sections - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Initialization, +Up: BFD front end +



+
+ +

2.6 Sections

+ +

The raw data contained within a BFD is maintained through the +section abstraction. A single BFD may have any number of +sections. It keeps hold of them by pointing to the first; +each one points to the next in the list. + +

Sections are supported in BFD in section.c. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Symbol_002dtable.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Symbol_002dtable.html new file mode 100644 index 0000000..3b11400 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Symbol_002dtable.html @@ -0,0 +1,151 @@ + + +Symbol-table - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: File layout, +Up: mmo +



+
+ +

3.5.2 Symbol table format

+ +

From mmixal.w (or really, the generated mmixal.tex) in +http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz): +“Symbols are stored and retrieved by means of a ternary +search trie, following ideas of Bentley and Sedgewick. (See +ACM–SIAM Symp. on Discrete Algorithms 8 (1997), 360–369; +R.Sedgewick, Algorithms in C (Reading, Mass. +Addison–Wesley, 1998), 15.4.) Each trie node stores a +character, and there are branches to subtries for the cases where +a given character is less than, equal to, or greater than the +character in the trie. There also is a pointer to a symbol table +entry if a symbol ends at the current node.” + +

So it's a tree encoded as a stream of bytes. The stream of bytes +acts on a single virtual global symbol, adding and removing +characters and signalling complete symbol points. Here, we read +the stream and create symbols at the completion points. + +

First, there's a control byte m. If any of the listed bits +in m is nonzero, we execute what stands at the right, in +the listed order: + +

      (MMO3_LEFT)
+      0x40 - Traverse left trie.
+             (Read a new command byte and recurse.)
+     
+      (MMO3_SYMBITS)
+      0x2f - Read the next byte as a character and store it in the
+             current character position; increment character position.
+             Test the bits of m:
+     
+             (MMO3_WCHAR)
+             0x80 - The character is 16-bit (so read another byte,
+                    merge into current character.
+     
+             (MMO3_TYPEBITS)
+             0xf  - We have a complete symbol; parse the type, value
+                    and serial number and do what should be done
+                    with a symbol.  The type and length information
+                    is in j = (m & 0xf).
+     
+                    (MMO3_REGQUAL_BITS)
+                    j == 0xf: A register variable.  The following
+                              byte tells which register.
+                    j <= 8:   An absolute symbol.  Read j bytes as the
+                              big-endian number the symbol equals.
+                              A j = 2 with two zero bytes denotes an
+                              unknown symbol.
+                    j > 8:    As with j <= 8, but add (0x20 << 56)
+                              to the value in the following j - 8
+                              bytes.
+     
+                    Then comes the serial number, as a variant of
+                    uleb128, but better named ubeb128:
+                    Read bytes and shift the previous value left 7
+                    (multiply by 128).  Add in the new byte, repeat
+                    until a byte has bit 7 set.  The serial number
+                    is the computed value minus 128.
+     
+             (MMO3_MIDDLE)
+             0x20 - Traverse middle trie.  (Read a new command byte
+                    and recurse.)  Decrement character position.
+     
+      (MMO3_RIGHT)
+      0x10 - Traverse right trie.  (Read a new command byte and
+             recurse.)
+
+

Let's look again at the lop_stab for the trivial file +(see File layout). + +

      0x980b0000 - lop_stab for ":Main" = 0, serial 1.
+      0x203a4040
+      0x10404020
+      0x4d206120
+      0x69016e00
+      0x81000000
+
+

This forms the trivial trie (note that the path between “:” and +“M” is redundant): + +

      203a     ":"
+      40       /
+      40      /
+      10      \
+      40      /
+      40     /
+      204d  "M"
+      2061  "a"
+      2069  "i"
+      016e  "n" is the last character in a full symbol, and
+            with a value represented in one byte.
+      00    The value is 0.
+      81    The serial number is 1.
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Symbols.html new file mode 100644 index 0000000..7331a9f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Symbols.html @@ -0,0 +1,90 @@ + + +Symbols - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Sections, +Up: BFD front end +



+
+ +

2.7 Symbols

+ +

BFD tries to maintain as much symbol information as it can when +it moves information from file to file. BFD passes information +to applications though the asymbol structure. When the +application requests the symbol table, BFD reads the table in +the native form and translates parts of it into the internal +format. To maintain more than the information passed to +applications, some targets keep some information “behind the +scenes” in a structure only the particular back end knows +about. For example, the coff back end keeps the original +symbol table structure as well as the canonical structure when +a BFD is read in. On output, the coff back end can reconstruct +the output symbol table so that no information is lost, even +information unique to coff which BFD doesn't know or +understand. If a coff symbol table were read, but were written +through an a.out back end, all the coff specific information +would be lost. The symbol table of a BFD +is not necessarily read in until a canonicalize request is +made. Then the BFD back end fills in a table provided by the +application with pointers to the canonical information. To +output symbols, the application provides BFD with a table of +pointers to pointers to asymbols. This allows applications +like the linker to output a symbol as it was read, since the “behind +the scenes” information will be still available. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Targets.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Targets.html new file mode 100644 index 0000000..22d4270 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Targets.html @@ -0,0 +1,106 @@ + + +Targets - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Core Files, +Up: BFD front end +



+
+ +

2.12 Targets

+ +

Description
+Each port of BFD to a different machine requires the creation +of a target back end. All the back end provides to the root +part of BFD is a structure containing pointers to functions +which perform certain low level operations on files. BFD +translates the applications's requests through a pointer into +calls to the back end routines. + +

When a file is opened with bfd_openr, its format and +target are unknown. BFD uses various mechanisms to determine +how to interpret the file. The operations performed are: + +

    +
  • Create a BFD by calling the internal routine +_bfd_new_bfd, then call bfd_find_target with the +target string supplied to bfd_openr and the new BFD pointer. + +
  • If a null target string was provided to bfd_find_target, +look up the environment variable GNUTARGET and use +that as the target string. + +
  • If the target string is still NULL, or the target string is +default, then use the first item in the target vector +as the target type, and set target_defaulted in the BFD to +cause bfd_check_format to loop through all the targets. +See bfd_target. See Formats. + +
  • Otherwise, inspect the elements in the target vector +one by one, until a match on target name is found. When found, +use it. + +
  • Otherwise return the error bfd_error_invalid_target to +bfd_openr. + +
  • bfd_openr attempts to open the file using +bfd_open_file, and returns the BFD. +
+ Once the BFD has been opened and the target selected, the file +format may be determined. This is done by calling +bfd_check_format on the BFD with a suggested format. +If target_defaulted has been set, each possible target +type is tried to see if it recognizes the specified format. +bfd_check_format returns TRUE when the caller guesses right. + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Traversing-a-Hash-Table.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Traversing-a-Hash-Table.html new file mode 100644 index 0000000..8a88c74 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Traversing-a-Hash-Table.html @@ -0,0 +1,71 @@ + + +Traversing a Hash Table - Untitled + + + + + + + + + + + + + + + +

2.18.3 Traversing a hash table

+ +

The function bfd_hash_traverse may be used to traverse a +hash table, calling a function on each element. The traversal +is done in a random order. + +

bfd_hash_traverse takes as arguments a function and a +generic void * pointer. The function is called with a +hash table entry (a struct bfd_hash_entry *) and the +generic pointer passed to bfd_hash_traverse. The function +must return a boolean value, which indicates whether to +continue traversing the hash table. If the function returns +FALSE, bfd_hash_traverse will stop the traversal and +return immediately. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/What-BFD-Version-2-Can-Do.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/What-BFD-Version-2-Can-Do.html new file mode 100644 index 0000000..94c10b2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/What-BFD-Version-2-Can-Do.html @@ -0,0 +1,80 @@ + + +What BFD Version 2 Can Do - Untitled + + + + + + + + + + + + +

+

+Previous: How It Works, +Up: Overview +



+
+ +

1.3 What BFD Version 2 Can Do

+ + +

When an object file is opened, BFD subroutines automatically determine +the format of the input object file. They then build a descriptor in +memory with pointers to routines that will be used to access elements of +the object file's data structures. + +

As different information from the object files is required, +BFD reads from different sections of the file and processes them. +For example, a very common operation for the linker is processing symbol +tables. Each BFD back end provides a routine for converting +between the object file's representation of symbols and an internal +canonical format. When the linker asks for the symbol table of an object +file, it calls through a memory pointer to the routine from the +relevant BFD back end which reads and converts the table into a canonical +form. The linker then operates upon the canonical form. When the link is +finished and the linker writes the output file's symbol table, +another BFD back end routine is called to take the newly +created symbol table and convert it into the chosen output format. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/What-to-Put-Where.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/What-to-Put-Where.html new file mode 100644 index 0000000..c5cc804 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/What-to-Put-Where.html @@ -0,0 +1,60 @@ + + +What to Put Where - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: BFD back ends, +Up: BFD back ends +



+
+ +

3.1 What to Put Where

+ +

All of BFD lives in one directory. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Write-Other-Derived-Routines.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Write-Other-Derived-Routines.html new file mode 100644 index 0000000..658623f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Write-Other-Derived-Routines.html @@ -0,0 +1,81 @@ + + +Write Other Derived Routines - Untitled + + + + + + + + + + + + +

+ +
2.18.4.3 Write other derived routines
+ +

You will want to write other routines for your new hash table, +as well. + +

You will want an initialization routine which calls the +initialization routine of the hash table you are deriving from +and initializes any other local fields. For the linker hash +table, this is _bfd_link_hash_table_init in linker.c. + +

You will want a lookup routine which calls the lookup routine +of the hash table you are deriving from and casts the result. +The linker hash table uses bfd_link_hash_lookup in +linker.c (this actually takes an additional argument which +it uses to decide how to return the looked up value). + +

You may want a traversal routine. This should just call the +traversal routine of the hash table you are deriving from with +appropriate casts. The linker hash table uses +bfd_link_hash_traverse in linker.c. + +

These routines may simply be defined as macros. For example, +the a.out backend linker hash table, which is derived from the +linker hash table, uses macros for the lookup and traversal +routines. These are aout_link_hash_lookup and +aout_link_hash_traverse in aoutx.h. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Write-the-Derived-Creation-Routine.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Write-the-Derived-Creation-Routine.html new file mode 100644 index 0000000..189a5f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Write-the-Derived-Creation-Routine.html @@ -0,0 +1,124 @@ + + +Write the Derived Creation Routine - Untitled + + + + + + + + + + + + + +

+ +
2.18.4.2 Write the derived creation routine
+ +

You must write a routine which will create and initialize an +entry in the hash table. This routine is passed as the +function argument to bfd_hash_table_init. + +

In order to permit other hash tables to be derived from the +hash table you are creating, this routine must be written in a +standard way. + +

The first argument to the creation routine is a pointer to a +hash table entry. This may be NULL, in which case the +routine should allocate the right amount of space. Otherwise +the space has already been allocated by a hash table type +derived from this one. + +

After allocating space, the creation routine must call the +creation routine of the hash table type it is derived from, +passing in a pointer to the space it just allocated. This +will initialize any fields used by the base hash table. + +

Finally the creation routine must initialize any local fields +for the new hash table type. + +

Here is a boilerplate example of a creation routine. +function_name is the name of the routine. +entry_type is the type of an entry in the hash table you +are creating. base_newfunc is the name of the creation +routine of the hash table type your hash table is derived +from. + +

     struct bfd_hash_entry *
+     function_name (struct bfd_hash_entry *entry,
+                          struct bfd_hash_table *table,
+                          const char *string)
+     {
+       struct entry_type *ret = (entry_type *) entry;
+     
+      /* Allocate the structure if it has not already been allocated by a
+         derived class.  */
+       if (ret == NULL)
+         {
+           ret = bfd_hash_allocate (table, sizeof (* ret));
+           if (ret == NULL)
+             return NULL;
+         }
+     
+      /* Call the allocation method of the base class.  */
+       ret = ((entry_type *)
+             base_newfunc ((struct bfd_hash_entry *) ret, table, string));
+     
+      /* Initialize the local fields here.  */
+     
+       return (struct bfd_hash_entry *) ret;
+     }
+
+

Description
+The creation routine for the linker hash table, which is in +linker.c, looks just like this example. +function_name is _bfd_link_hash_newfunc. +entry_type is struct bfd_link_hash_entry. +base_newfunc is bfd_hash_newfunc, the creation +routine for a basic hash table. + +

_bfd_link_hash_newfunc also initializes the local fields +in a linker hash table entry: type, written and +next. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Writing-Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Writing-Symbols.html new file mode 100644 index 0000000..e9ccd93 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Writing-Symbols.html @@ -0,0 +1,101 @@ + + +Writing Symbols - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Reading Symbols, +Up: Symbols +



+
+ +

2.7.2 Writing symbols

+ +

Writing of a symbol table is automatic when a BFD open for +writing is closed. The application attaches a vector of +pointers to pointers to symbols to the BFD being written, and +fills in the symbol count. The close and cleanup code reads +through the table provided and performs all the necessary +operations. The BFD output code must always be provided with an +“owned” symbol: one which has come from another BFD, or one +which has been created using bfd_make_empty_symbol. Here is an +example showing the creation of a symbol table with only one element: + +

            #include "bfd.h"
+            int main (void)
+            {
+              bfd *abfd;
+              asymbol *ptrs[2];
+              asymbol *new;
+     
+              abfd = bfd_openw ("foo","a.out-sunos-big");
+              bfd_set_format (abfd, bfd_object);
+              new = bfd_make_empty_symbol (abfd);
+              new->name = "dummy_symbol";
+              new->section = bfd_make_section_old_way (abfd, ".text");
+              new->flags = BSF_GLOBAL;
+              new->value = 0x12345;
+     
+              ptrs[0] = new;
+              ptrs[1] = 0;
+     
+              bfd_set_symtab (abfd, ptrs, 1);
+              bfd_close (abfd);
+              return 0;
+            }
+     
+            ./makesym
+            nm foo
+            00012345 A dummy_symbol
+
+

Many formats cannot represent arbitrary symbol information; for +instance, the a.out object format does not allow an +arbitrary number of sections. A symbol pointing to a section +which is not one of .text, .data or .bss cannot +be described. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Writing-the-symbol-table.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Writing-the-symbol-table.html new file mode 100644 index 0000000..92e1df5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/Writing-the-symbol-table.html @@ -0,0 +1,128 @@ + + +Writing the symbol table - Untitled + + + + + + + + + + + + +

+ +
2.17.3.3 Writing the symbol table
+ +

The _bfd_final_link function must gather all the symbols +in the input files and write them out. It must also write out +all the symbols in the global hash table. This must be +controlled by the strip and discard fields of the +bfd_link_info structure. + +

The local symbols of the input files will not have been +entered into the linker hash table. The _bfd_final_link +routine must consider each input file and include the symbols +in the output file. It may be convenient to do this when +looking through the link_order structures, or it may be +done by stepping through the input_bfds list. + +

The _bfd_final_link routine must also traverse the global +hash table to gather all the externally visible symbols. It +is possible that most of the externally visible symbols may be +written out when considering the symbols of each input file, +but it is still necessary to traverse the hash table since the +linker script may have defined some symbols that are not in +any of the input files. + +

The strip field of the bfd_link_info structure +controls which symbols are written out. The possible values +are listed in bfdlink.h. If the value is strip_some, +then the keep_hash field of the bfd_link_info +structure is a hash table of symbols to keep; each symbol +should be looked up in this hash table, and only symbols which +are present should be included in the output file. + +

If the strip field of the bfd_link_info structure +permits local symbols to be written out, the discard field +is used to further controls which local symbols are included +in the output file. If the value is discard_l, then all +local symbols which begin with a certain prefix are discarded; +this is controlled by the bfd_is_local_label_name entry point. + +

The a.out backend handles symbols by calling +aout_link_write_symbols on each input BFD and then +traversing the global hash table with the function +aout_link_write_other_symbol. It builds a string table +while writing out the symbols, which is written to the output +file at the end of NAME(aout,final_link). + +

+ +

2.17.3.4 bfd_link_split_section
+ +

Synopsis +

     bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
+
+

Description
+Return nonzero if sec should be split during a +reloceatable or final link. +

     #define bfd_link_split_section(abfd, sec) \
+            BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
+     
+
+

+ +

2.17.3.5 bfd_section_already_linked
+ +

Synopsis +

     void bfd_section_already_linked (bfd *abfd, asection *sec,
+         struct bfd_link_info *info);
+
+

Description
+Check if sec has been already linked during a reloceatable +or final link. +

     #define bfd_section_already_linked(abfd, sec, info) \
+            BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
+     
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/aout.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/aout.html new file mode 100644 index 0000000..614ee27 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/aout.html @@ -0,0 +1,261 @@ + + +aout - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: What to Put Where, +Up: BFD back ends +



+
+ +

3.2 a.out backends

+ +

Description
+BFD supports a number of different flavours of a.out format, +though the major differences are only the sizes of the +structures on disk, and the shape of the relocation +information. + +

The support is split into a basic support file aoutx.h +and other files which derive functions from the base. One +derivation file is aoutf1.h (for a.out flavour 1), and +adds to the basic a.out functions support for sun3, sun4, 386 +and 29k a.out files, to create a target jump vector for a +specific target. + +

This information is further split out into more specific files +for each machine, including sunos.c for sun3 and sun4, +newsos3.c for the Sony NEWS, and demo64.c for a +demonstration of a 64 bit a.out format. + +

The base file aoutx.h defines general mechanisms for +reading and writing records to and from disk and various +other methods which BFD requires. It is included by +aout32.c and aout64.c to form the names +aout_32_swap_exec_header_in, aout_64_swap_exec_header_in, etc. + +

As an example, this is what goes on to make the back end for a +sun4, from aout32.c: + +

            #define ARCH_SIZE 32
+            #include "aoutx.h"
+
+

Which exports names: + +

            ...
+            aout_32_canonicalize_reloc
+            aout_32_find_nearest_line
+            aout_32_get_lineno
+            aout_32_get_reloc_upper_bound
+            ...
+
+

from sunos.c: + +

            #define TARGET_NAME "a.out-sunos-big"
+            #define VECNAME    sunos_big_vec
+            #include "aoutf1.h"
+
+

requires all the names from aout32.c, and produces the jump vector + +

            sunos_big_vec
+
+

The file host-aout.c is a special case. It is for a large set +of hosts that use “more or less standard” a.out files, and +for which cross-debugging is not interesting. It uses the +standard 32-bit a.out support routines, but determines the +file offsets and addresses of the text, data, and BSS +sections, the machine architecture and machine type, and the +entry point address, in a host-dependent manner. Once these +values have been determined, generic code is used to handle +the object file. + +

When porting it to run on a new system, you must supply: + +

             HOST_PAGE_SIZE
+             HOST_SEGMENT_SIZE
+             HOST_MACHINE_ARCH       (optional)
+             HOST_MACHINE_MACHINE    (optional)
+             HOST_TEXT_START_ADDR
+             HOST_STACK_END_ADDR
+
+

in the file ../include/sys/h-XXX.h (for your host). These +values, plus the structures and macros defined in a.out.h on +your host system, will produce a BFD target that will access +ordinary a.out files on your host. To configure a new machine +to use host-aout.c, specify: + +

            TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
+            TDEPFILES= host-aout.o trad-core.o
+
+

in the config/XXX.mt file, and modify configure.in +to use the +XXX.mt file (by setting "bfd_target=XXX") when your +configuration is selected. + +

3.2.1 Relocations

+ +

Description
+The file aoutx.h provides for both the standard +and extended forms of a.out relocation records. + +

The standard records contain only an +address, a symbol index, and a type field. The extended records +(used on 29ks and sparcs) also have a full integer for an +addend. + +

3.2.2 Internal entry points

+ +

Description
+aoutx.h exports several routines for accessing the +contents of an a.out file, which are gathered and exported in +turn by various format specific files (eg sunos.c). + +

+ +

3.2.2.1 aout_size_swap_exec_header_in
+ +

Synopsis +

     void aout_size_swap_exec_header_in,
+        (bfd *abfd,
+         struct external_exec *bytes,
+         struct internal_exec *execp);
+
+

Description
+Swap the information in an executable header raw_bytes taken +from a raw byte stream memory image into the internal exec header +structure execp. + +

+ +

3.2.2.2 aout_size_swap_exec_header_out
+ +

Synopsis +

     void aout_size_swap_exec_header_out
+        (bfd *abfd,
+         struct internal_exec *execp,
+         struct external_exec *raw_bytes);
+
+

Description
+Swap the information in an internal exec header structure +execp into the buffer raw_bytes ready for writing to disk. + +

+ +

3.2.2.3 aout_size_some_aout_object_p
+ +

Synopsis +

     const bfd_target *aout_size_some_aout_object_p
+        (bfd *abfd,
+         struct internal_exec *execp,
+         const bfd_target *(*callback_to_real_object_p) (bfd *));
+
+

Description
+Some a.out variant thinks that the file open in abfd +checking is an a.out file. Do some more checking, and set up +for access if it really is. Call back to the calling +environment's "finish up" function just before returning, to +handle any last-minute setup. + +

+ +

3.2.2.4 aout_size_mkobject
+ +

Synopsis +

     bfd_boolean aout_size_mkobject, (bfd *abfd);
+
+

Description
+Initialize BFD abfd for use with a.out files. + +

+ +

3.2.2.5 aout_size_machine_type
+ +

Synopsis +

     enum machine_type  aout_size_machine_type
+        (enum bfd_architecture arch,
+         unsigned long machine,
+         bfd_boolean *unknown);
+
+

Description
+Keep track of machine architecture and machine type for +a.out's. Return the machine_type for a particular +architecture and machine, or M_UNKNOWN if that exact architecture +and machine can't be represented in a.out format. + +

If the architecture is understood, machine type 0 (default) +is always understood. + +

+ +

3.2.2.6 aout_size_set_arch_mach
+ +

Synopsis +

     bfd_boolean aout_size_set_arch_mach,
+        (bfd *,
+         enum bfd_architecture arch,
+         unsigned long machine);
+
+

Description
+Set the architecture and the machine of the BFD abfd to the +values arch and machine. Verify that abfd's format +can support the architecture required. + +

+ +

3.2.2.7 aout_size_new_section_hook
+ +

Synopsis +

     bfd_boolean aout_size_new_section_hook,
+        (bfd *abfd,
+         asection *newsect);
+
+

Description
+Called by the BFD in response to a bfd_make_section +request. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/bfd_005ftarget.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/bfd_005ftarget.html new file mode 100644 index 0000000..9c39feb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/bfd_005ftarget.html @@ -0,0 +1,549 @@ + + +bfd_target - Untitled + + + + + + + + + + + + +

+

+Previous: Targets, +Up: Targets +



+
+ +

2.12.1 bfd_target

+ +

Description
+This structure contains everything that BFD knows about a +target. It includes things like its byte order, name, and which +routines to call to do various operations. + +

Every BFD points to a target structure with its xvec +member. + +

The macros below are used to dispatch to functions through the +bfd_target vector. They are used in a number of macros further +down in bfd.h, and are also used when calling various +routines by hand inside the BFD implementation. The arglist +argument must be parenthesized; it contains all the arguments +to the called function. + +

They make the documentation (more) unpleasant to read, so if +someone wants to fix this and not break the above, please do. +

     #define BFD_SEND(bfd, message, arglist) \
+       ((*((bfd)->xvec->message)) arglist)
+     
+     #ifdef DEBUG_BFD_SEND
+     #undef BFD_SEND
+     #define BFD_SEND(bfd, message, arglist) \
+       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+         ((*((bfd)->xvec->message)) arglist) : \
+         (bfd_assert (__FILE__,__LINE__), NULL))
+     #endif
+
+

For operations which index on the BFD format: +

     #define BFD_SEND_FMT(bfd, message, arglist) \
+       (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
+     
+     #ifdef DEBUG_BFD_SEND
+     #undef BFD_SEND_FMT
+     #define BFD_SEND_FMT(bfd, message, arglist) \
+       (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+        (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
+        (bfd_assert (__FILE__,__LINE__), NULL))
+     #endif
+     
+
+

This is the structure which defines the type of BFD this is. The +xvec member of the struct bfd itself points here. Each +module that implements access to a different target under BFD, +defines one of these. + +

FIXME, these names should be rationalised with the names of +the entry points which call them. Too bad we can't have one +macro to define them both! +

     enum bfd_flavour
+     {
+       bfd_target_unknown_flavour,
+       bfd_target_aout_flavour,
+       bfd_target_coff_flavour,
+       bfd_target_ecoff_flavour,
+       bfd_target_xcoff_flavour,
+       bfd_target_elf_flavour,
+       bfd_target_ieee_flavour,
+       bfd_target_nlm_flavour,
+       bfd_target_oasys_flavour,
+       bfd_target_tekhex_flavour,
+       bfd_target_srec_flavour,
+       bfd_target_ihex_flavour,
+       bfd_target_som_flavour,
+       bfd_target_os9k_flavour,
+       bfd_target_versados_flavour,
+       bfd_target_msdos_flavour,
+       bfd_target_ovax_flavour,
+       bfd_target_evax_flavour,
+       bfd_target_mmo_flavour,
+       bfd_target_mach_o_flavour,
+       bfd_target_pef_flavour,
+       bfd_target_pef_xlib_flavour,
+       bfd_target_sym_flavour
+     };
+     
+     enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
+     
+     /* Forward declaration.  */
+     typedef struct bfd_link_info _bfd_link_info;
+     
+     typedef struct bfd_target
+     {
+       /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
+       char *name;
+     
+      /* The "flavour" of a back end is a general indication about
+         the contents of a file.  */
+       enum bfd_flavour flavour;
+     
+       /* The order of bytes within the data area of a file.  */
+       enum bfd_endian byteorder;
+     
+      /* The order of bytes within the header parts of a file.  */
+       enum bfd_endian header_byteorder;
+     
+       /* A mask of all the flags which an executable may have set -
+          from the set BFD_NO_FLAGS, HAS_RELOC, ...D_PAGED.  */
+       flagword object_flags;
+     
+      /* A mask of all the flags which a section may have set - from
+         the set SEC_NO_FLAGS, SEC_ALLOC, ...SET_NEVER_LOAD.  */
+       flagword section_flags;
+     
+      /* The character normally found at the front of a symbol.
+         (if any), perhaps `_'.  */
+       char symbol_leading_char;
+     
+      /* The pad character for file names within an archive header.  */
+       char ar_pad_char;
+     
+       /* The maximum number of characters in an archive header.  */
+       unsigned short ar_max_namelen;
+     
+       /* Entries for byte swapping for data. These are different from the
+          other entry points, since they don't take a BFD as the first argument.
+          Certain other handlers could do the same.  */
+       bfd_uint64_t   (*bfd_getx64) (const void *);
+       bfd_int64_t    (*bfd_getx_signed_64) (const void *);
+       void           (*bfd_putx64) (bfd_uint64_t, void *);
+       bfd_vma        (*bfd_getx32) (const void *);
+       bfd_signed_vma (*bfd_getx_signed_32) (const void *);
+       void           (*bfd_putx32) (bfd_vma, void *);
+       bfd_vma        (*bfd_getx16) (const void *);
+       bfd_signed_vma (*bfd_getx_signed_16) (const void *);
+       void           (*bfd_putx16) (bfd_vma, void *);
+     
+       /* Byte swapping for the headers.  */
+       bfd_uint64_t   (*bfd_h_getx64) (const void *);
+       bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
+       void           (*bfd_h_putx64) (bfd_uint64_t, void *);
+       bfd_vma        (*bfd_h_getx32) (const void *);
+       bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
+       void           (*bfd_h_putx32) (bfd_vma, void *);
+       bfd_vma        (*bfd_h_getx16) (const void *);
+       bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
+       void           (*bfd_h_putx16) (bfd_vma, void *);
+     
+       /* Format dependent routines: these are vectors of entry points
+          within the target vector structure, one for each format to check.  */
+     
+       /* Check the format of a file being read.  Return a bfd_target * or zero.  */
+       const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
+     
+       /* Set the format of a file being written.  */
+       bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
+     
+       /* Write cached information into a file being written, at bfd_close.  */
+       bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+     
+
+

The general target vector. These vectors are initialized using the +BFD_JUMP_TABLE macros. +

     
+       /* Generic entry points.  */
+     #define BFD_JUMP_TABLE_GENERIC(NAME) \
+       NAME##_close_and_cleanup, \
+       NAME##_bfd_free_cached_info, \
+       NAME##_new_section_hook, \
+       NAME##_get_section_contents, \
+       NAME##_get_section_contents_in_window
+     
+       /* Called when the BFD is being closed to do any necessary cleanup.  */
+       bfd_boolean (*_close_and_cleanup) (bfd *);
+       /* Ask the BFD to free all cached information.  */
+       bfd_boolean (*_bfd_free_cached_info) (bfd *);
+       /* Called when a new section is created.  */
+       bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+       /* Read the contents of a section.  */
+       bfd_boolean (*_bfd_get_section_contents)
+         (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
+       bfd_boolean (*_bfd_get_section_contents_in_window)
+         (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
+     
+       /* Entry points to copy private data.  */
+     #define BFD_JUMP_TABLE_COPY(NAME) \
+       NAME##_bfd_copy_private_bfd_data, \
+       NAME##_bfd_merge_private_bfd_data, \
+       _bfd_generic_init_private_section_data, \
+       NAME##_bfd_copy_private_section_data, \
+       NAME##_bfd_copy_private_symbol_data, \
+       NAME##_bfd_copy_private_header_data, \
+       NAME##_bfd_set_private_flags, \
+       NAME##_bfd_print_private_bfd_data
+     
+       /* Called to copy BFD general private data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+       /* Called to merge BFD general private data from one object file
+          to a common output file when linking.  */
+       bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
+       /* Called to initialize BFD private section data from one object file
+          to another.  */
+     #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
+       BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
+       bfd_boolean (*_bfd_init_private_section_data)
+         (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
+       /* Called to copy BFD private section data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_section_data)
+         (bfd *, sec_ptr, bfd *, sec_ptr);
+       /* Called to copy BFD private symbol data from one symbol
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_symbol_data)
+         (bfd *, asymbol *, bfd *, asymbol *);
+       /* Called to copy BFD private header data from one object file
+          to another.  */
+       bfd_boolean (*_bfd_copy_private_header_data)
+         (bfd *, bfd *);
+       /* Called to set private backend flags.  */
+       bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+     
+       /* Called to print private BFD data.  */
+       bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+     
+       /* Core file entry points.  */
+     #define BFD_JUMP_TABLE_CORE(NAME) \
+       NAME##_core_file_failing_command, \
+       NAME##_core_file_failing_signal, \
+       NAME##_core_file_matches_executable_p
+     
+       char *      (*_core_file_failing_command) (bfd *);
+       int         (*_core_file_failing_signal) (bfd *);
+       bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
+     
+       /* Archive entry points.  */
+     #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
+       NAME##_slurp_armap, \
+       NAME##_slurp_extended_name_table, \
+       NAME##_construct_extended_name_table, \
+       NAME##_truncate_arname, \
+       NAME##_write_armap, \
+       NAME##_read_ar_hdr, \
+       NAME##_openr_next_archived_file, \
+       NAME##_get_elt_at_index, \
+       NAME##_generic_stat_arch_elt, \
+       NAME##_update_armap_timestamp
+     
+       bfd_boolean (*_bfd_slurp_armap) (bfd *);
+       bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
+       bfd_boolean (*_bfd_construct_extended_name_table)
+         (bfd *, char **, bfd_size_type *, const char **);
+       void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
+       bfd_boolean (*write_armap)
+         (bfd *, unsigned int, struct orl *, unsigned int, int);
+       void *      (*_bfd_read_ar_hdr_fn) (bfd *);
+       bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+     #define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
+       bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
+       int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+       bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+     
+       /* Entry points used for symbols.  */
+     #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
+       NAME##_get_symtab_upper_bound, \
+       NAME##_canonicalize_symtab, \
+       NAME##_make_empty_symbol, \
+       NAME##_print_symbol, \
+       NAME##_get_symbol_info, \
+       NAME##_bfd_is_local_label_name, \
+       NAME##_bfd_is_target_special_symbol, \
+       NAME##_get_lineno, \
+       NAME##_find_nearest_line, \
+       _bfd_generic_find_line, \
+       NAME##_find_inliner_info, \
+       NAME##_bfd_make_debug_symbol, \
+       NAME##_read_minisymbols, \
+       NAME##_minisymbol_to_symbol
+     
+       long        (*_bfd_get_symtab_upper_bound) (bfd *);
+       long        (*_bfd_canonicalize_symtab)
+         (bfd *, struct bfd_symbol **);
+       struct bfd_symbol *
+                   (*_bfd_make_empty_symbol) (bfd *);
+       void        (*_bfd_print_symbol)
+         (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
+     #define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
+       void        (*_bfd_get_symbol_info)
+         (bfd *, struct bfd_symbol *, symbol_info *);
+     #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
+       bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
+       bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+       alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
+       bfd_boolean (*_bfd_find_nearest_line)
+         (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
+          const char **, const char **, unsigned int *);
+       bfd_boolean (*_bfd_find_line)
+         (bfd *, struct bfd_symbol **, struct bfd_symbol *,
+          const char **, unsigned int *);
+       bfd_boolean (*_bfd_find_inliner_info)
+         (bfd *, const char **, const char **, unsigned int *);
+      /* Back-door to allow format-aware applications to create debug symbols
+         while using BFD for everything else.  Currently used by the assembler
+         when creating COFF files.  */
+       asymbol *   (*_bfd_make_debug_symbol)
+         (bfd *, void *, unsigned long size);
+     #define bfd_read_minisymbols(b, d, m, s) \
+       BFD_SEND (b, _read_minisymbols, (b, d, m, s))
+       long        (*_read_minisymbols)
+         (bfd *, bfd_boolean, void **, unsigned int *);
+     #define bfd_minisymbol_to_symbol(b, d, m, f) \
+       BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
+       asymbol *   (*_minisymbol_to_symbol)
+         (bfd *, bfd_boolean, const void *, asymbol *);
+     
+       /* Routines for relocs.  */
+     #define BFD_JUMP_TABLE_RELOCS(NAME) \
+       NAME##_get_reloc_upper_bound, \
+       NAME##_canonicalize_reloc, \
+       NAME##_bfd_reloc_type_lookup, \
+       NAME##_bfd_reloc_name_lookup
+     
+       long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
+       long        (*_bfd_canonicalize_reloc)
+         (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
+       /* See documentation on reloc types.  */
+       reloc_howto_type *
+                   (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+       reloc_howto_type *
+                   (*reloc_name_lookup) (bfd *, const char *);
+     
+     
+       /* Routines used when writing an object file.  */
+     #define BFD_JUMP_TABLE_WRITE(NAME) \
+       NAME##_set_arch_mach, \
+       NAME##_set_section_contents
+     
+       bfd_boolean (*_bfd_set_arch_mach)
+         (bfd *, enum bfd_architecture, unsigned long);
+       bfd_boolean (*_bfd_set_section_contents)
+         (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
+     
+       /* Routines used by the linker.  */
+     #define BFD_JUMP_TABLE_LINK(NAME) \
+       NAME##_sizeof_headers, \
+       NAME##_bfd_get_relocated_section_contents, \
+       NAME##_bfd_relax_section, \
+       NAME##_bfd_link_hash_table_create, \
+       NAME##_bfd_link_hash_table_free, \
+       NAME##_bfd_link_add_symbols, \
+       NAME##_bfd_link_just_syms, \
+       NAME##_bfd_final_link, \
+       NAME##_bfd_link_split_section, \
+       NAME##_bfd_gc_sections, \
+       NAME##_bfd_merge_sections, \
+       NAME##_bfd_is_group_section, \
+       NAME##_bfd_discard_group, \
+       NAME##_section_already_linked \
+     
+       int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+       bfd_byte *  (*_bfd_get_relocated_section_contents)
+         (bfd *, struct bfd_link_info *, struct bfd_link_order *,
+          bfd_byte *, bfd_boolean, struct bfd_symbol **);
+     
+       bfd_boolean (*_bfd_relax_section)
+         (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
+     
+       /* Create a hash table for the linker.  Different backends store
+          different information in this table.  */
+       struct bfd_link_hash_table *
+                   (*_bfd_link_hash_table_create) (bfd *);
+     
+       /* Release the memory associated with the linker hash table.  */
+       void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
+     
+       /* Add symbols from this object file into the hash table.  */
+       bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+     
+       /* Indicate that we are only retrieving symbol values from this section.  */
+       void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+     
+       /* Do a link based on the link_order structures attached to each
+          section of the BFD.  */
+       bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+     
+       /* Should this section be split up into smaller pieces during linking.  */
+       bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+     
+       /* Remove sections that are not referenced from the output.  */
+       bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+     
+       /* Attempt to merge SEC_MERGE sections.  */
+       bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+     
+       /* Is this section a member of a group?  */
+       bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+     
+       /* Discard members of a group.  */
+       bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+     
+       /* Check if SEC has been already linked during a reloceatable or
+          final link.  */
+       void (*_section_already_linked) (bfd *, struct bfd_section *,
+                                        struct bfd_link_info *);
+     
+       /* Routines to handle dynamic symbols and relocs.  */
+     #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
+       NAME##_get_dynamic_symtab_upper_bound, \
+       NAME##_canonicalize_dynamic_symtab, \
+       NAME##_get_synthetic_symtab, \
+       NAME##_get_dynamic_reloc_upper_bound, \
+       NAME##_canonicalize_dynamic_reloc
+     
+       /* Get the amount of memory required to hold the dynamic symbols.  */
+       long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+       /* Read in the dynamic symbols.  */
+       long        (*_bfd_canonicalize_dynamic_symtab)
+         (bfd *, struct bfd_symbol **);
+       /* Create synthetized symbols.  */
+       long        (*_bfd_get_synthetic_symtab)
+         (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
+          struct bfd_symbol **);
+       /* Get the amount of memory required to hold the dynamic relocs.  */
+       long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+       /* Read in the dynamic relocs.  */
+       long        (*_bfd_canonicalize_dynamic_reloc)
+         (bfd *, arelent **, struct bfd_symbol **);
+     
+
+

A pointer to an alternative bfd_target in case the current one is not +satisfactory. This can happen when the target cpu supports both big +and little endian code, and target chosen by the linker has the wrong +endianness. The function open_output() in ld/ldlang.c uses this field +to find an alternative output format that is suitable. +

       /* Opposite endian version of this target.  */
+       const struct bfd_target * alternative_target;
+     
+       /* Data for use by back-end routines, which isn't
+          generic enough to belong in this structure.  */
+       const void *backend_data;
+     
+     } bfd_target;
+     
+
+

+ +

2.12.1.1 bfd_set_default_target
+ +

Synopsis +

     bfd_boolean bfd_set_default_target (const char *name);
+
+

Description
+Set the default target vector to use when recognizing a BFD. +This takes the name of the target, which may be a BFD target +name or a configuration triplet. + +

+ +

2.12.1.2 bfd_find_target
+ +

Synopsis +

     const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
+
+

Description
+Return a pointer to the transfer vector for the object target +named target_name. If target_name is NULL, +choose the one in the environment variable GNUTARGET; if +that is null or not defined, then choose the first entry in the +target list. Passing in the string "default" or setting the +environment variable to "default" will cause the first entry in +the target list to be returned, and "target_defaulted" will be +set in the BFD if abfd isn't NULL. This causes +bfd_check_format to loop over all the targets to find the +one that matches the file being read. + +

+ +

2.12.1.3 bfd_target_list
+ +

Synopsis +

     const char ** bfd_target_list (void);
+
+

Description
+Return a freshly malloced NULL-terminated +vector of the names of all the valid BFD targets. Do not +modify the names. + +

+ +

2.12.1.4 bfd_seach_for_target
+ +

Synopsis +

     const bfd_target *bfd_search_for_target
+        (int (*search_func) (const bfd_target *, void *),
+         void *);
+
+

Description
+Return a pointer to the first transfer vector in the list of +transfer vectors maintained by BFD that produces a non-zero +result when passed to the function search_func. The +parameter data is passed, unexamined, to the search +function. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/coff.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/coff.html new file mode 100644 index 0000000..21fbf62 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/coff.html @@ -0,0 +1,670 @@ + + +coff - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: aout, +Up: BFD back ends +



+
+ +

3.3 coff backends

+ +

BFD supports a number of different flavours of coff format. +The major differences between formats are the sizes and +alignments of fields in structures on disk, and the occasional +extra field. + +

Coff in all its varieties is implemented with a few common +files and a number of implementation specific files. For +example, The 88k bcs coff format is implemented in the file +coff-m88k.c. This file #includes +coff/m88k.h which defines the external structure of the +coff format for the 88k, and coff/internal.h which +defines the internal structure. coff-m88k.c also +defines the relocations used by the 88k format +See Relocations. + +

The Intel i960 processor version of coff is implemented in +coff-i960.c. This file has the same structure as +coff-m88k.c, except that it includes coff/i960.h +rather than coff-m88k.h. + +

3.3.1 Porting to a new version of coff

+ +

The recommended method is to select from the existing +implementations the version of coff which is most like the one +you want to use. For example, we'll say that i386 coff is +the one you select, and that your coff flavour is called foo. +Copy i386coff.c to foocoff.c, copy +../include/coff/i386.h to ../include/coff/foo.h, +and add the lines to targets.c and Makefile.in +so that your new back end is used. Alter the shapes of the +structures in ../include/coff/foo.h so that they match +what you need. You will probably also have to add +#ifdefs to the code in coff/internal.h and +coffcode.h if your version of coff is too wild. + +

You can verify that your new BFD backend works quite simply by +building objdump from the binutils directory, +and making sure that its version of what's going on and your +host system's idea (assuming it has the pretty standard coff +dump utility, usually called att-dump or just +dump) are the same. Then clean up your code, and send +what you've done to Cygnus. Then your stuff will be in the +next release, and you won't have to keep integrating it. + +

3.3.2 How the coff backend works

+ +
3.3.2.1 File layout
+ +

The Coff backend is split into generic routines that are +applicable to any Coff target and routines that are specific +to a particular target. The target-specific routines are +further split into ones which are basically the same for all +Coff targets except that they use the external symbol format +or use different values for certain constants. + +

The generic routines are in coffgen.c. These routines +work for any Coff target. They use some hooks into the target +specific code; the hooks are in a bfd_coff_backend_data +structure, one of which exists for each target. + +

The essentially similar target-specific routines are in +coffcode.h. This header file includes executable C code. +The various Coff targets first include the appropriate Coff +header file, make any special defines that are needed, and +then include coffcode.h. + +

Some of the Coff targets then also have additional routines in +the target source file itself. + +

For example, coff-i960.c includes +coff/internal.h and coff/i960.h. It then +defines a few constants, such as I960, and includes +coffcode.h. Since the i960 has complex relocation +types, coff-i960.c also includes some code to +manipulate the i960 relocs. This code is not in +coffcode.h because it would not be used by any other +target. + +

3.3.2.2 Bit twiddling
+ +

Each flavour of coff supported in BFD has its own header file +describing the external layout of the structures. There is also +an internal description of the coff layout, in +coff/internal.h. A major function of the +coff backend is swapping the bytes and twiddling the bits to +translate the external form of the structures into the normal +internal form. This is all performed in the +bfd_swap_thing_direction routines. Some +elements are different sizes between different versions of +coff; it is the duty of the coff version specific include file +to override the definitions of various packing routines in +coffcode.h. E.g., the size of line number entry in coff is +sometimes 16 bits, and sometimes 32 bits. #defineing +PUT_LNSZ_LNNO and GET_LNSZ_LNNO will select the +correct one. No doubt, some day someone will find a version of +coff which has a varying field size not catered to at the +moment. To port BFD, that person will have to add more #defines. +Three of the bit twiddling routines are exported to +gdb; coff_swap_aux_in, coff_swap_sym_in +and coff_swap_lineno_in. GDB reads the symbol +table on its own, but uses BFD to fix things up. More of the +bit twiddlers are exported for gas; +coff_swap_aux_out, coff_swap_sym_out, +coff_swap_lineno_out, coff_swap_reloc_out, +coff_swap_filehdr_out, coff_swap_aouthdr_out, +coff_swap_scnhdr_out. Gas currently keeps track +of all the symbol table and reloc drudgery itself, thereby +saving the internal BFD overhead, but uses BFD to swap things +on the way out, making cross ports much safer. Doing so also +allows BFD (and thus the linker) to use the same header files +as gas, which makes one avenue to disaster disappear. + +

3.3.2.3 Symbol reading
+ +

The simple canonical form for symbols used by BFD is not rich +enough to keep all the information available in a coff symbol +table. The back end gets around this problem by keeping the original +symbol table around, "behind the scenes". + +

When a symbol table is requested (through a call to +bfd_canonicalize_symtab), a request gets through to +coff_get_normalized_symtab. This reads the symbol table from +the coff file and swaps all the structures inside into the +internal form. It also fixes up all the pointers in the table +(represented in the file by offsets from the first symbol in +the table) into physical pointers to elements in the new +internal table. This involves some work since the meanings of +fields change depending upon context: a field that is a +pointer to another structure in the symbol table at one moment +may be the size in bytes of a structure at the next. Another +pass is made over the table. All symbols which mark file names +(C_FILE symbols) are modified so that the internal +string points to the value in the auxent (the real filename) +rather than the normal text associated with the symbol +(".file"). + +

At this time the symbol names are moved around. Coff stores +all symbols less than nine characters long physically +within the symbol table; longer strings are kept at the end of +the file in the string table. This pass moves all strings +into memory and replaces them with pointers to the strings. + +

The symbol table is massaged once again, this time to create +the canonical table used by the BFD application. Each symbol +is inspected in turn, and a decision made (using the +sclass field) about the various flags to set in the +asymbol. See Symbols. The generated canonical table +shares strings with the hidden internal symbol table. + +

Any linenumbers are read from the coff file too, and attached +to the symbols which own the functions the linenumbers belong to. + +

3.3.2.4 Symbol writing
+ +

Writing a symbol to a coff file which didn't come from a coff +file will lose any debugging information. The asymbol +structure remembers the BFD from which the symbol was taken, and on +output the back end makes sure that the same destination target as +source target is present. + +

When the symbols have come from a coff file then all the +debugging information is preserved. + +

Symbol tables are provided for writing to the back end in a +vector of pointers to pointers. This allows applications like +the linker to accumulate and output large symbol tables +without having to do too much byte copying. + +

This function runs through the provided symbol table and +patches each symbol marked as a file place holder +(C_FILE) to point to the next file place holder in the +list. It also marks each offset field in the list with +the offset from the first symbol of the current symbol. + +

Another function of this procedure is to turn the canonical +value form of BFD into the form used by coff. Internally, BFD +expects symbol values to be offsets from a section base; so a +symbol physically at 0x120, but in a section starting at +0x100, would have the value 0x20. Coff expects symbols to +contain their final value, so symbols have their values +changed at this point to reflect their sum with their owning +section. This transformation uses the +output_section field of the asymbol's +asection See Sections. + +

    +
  • coff_mangle_symbols +
+ This routine runs though the provided symbol table and uses +the offsets generated by the previous pass and the pointers +generated when the symbol table was read in to create the +structured hierarchy required by coff. It changes each pointer +to a symbol into the index into the symbol table of the asymbol. + +
    +
  • coff_write_symbols +
+ This routine runs through the symbol table and patches up the +symbols from their internal form into the coff way, calls the +bit twiddlers, and writes out the table to the file. + +

+ +

3.3.2.5 coff_symbol_type
+ +

Description
+The hidden information for an asymbol is described in a +combined_entry_type: + +

     
+     typedef struct coff_ptr_struct
+     {
+       /* Remembers the offset from the first symbol in the file for
+          this symbol. Generated by coff_renumber_symbols. */
+       unsigned int offset;
+     
+       /* Should the value of this symbol be renumbered.  Used for
+          XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
+       unsigned int fix_value : 1;
+     
+       /* Should the tag field of this symbol be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_tag : 1;
+     
+       /* Should the endidx field of this symbol be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_end : 1;
+     
+       /* Should the x_csect.x_scnlen field be renumbered.
+          Created by coff_pointerize_aux. */
+       unsigned int fix_scnlen : 1;
+     
+       /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
+          index into the line number entries.  Set by coff_slurp_symbol_table.  */
+       unsigned int fix_line : 1;
+     
+       /* The container for the symbol structure as read and translated
+          from the file. */
+       union
+       {
+         union internal_auxent auxent;
+         struct internal_syment syment;
+       } u;
+     } combined_entry_type;
+     
+     
+     /* Each canonical asymbol really looks like this: */
+     
+     typedef struct coff_symbol_struct
+     {
+       /* The actual symbol which the rest of BFD works with */
+       asymbol symbol;
+     
+       /* A pointer to the hidden information for this symbol */
+       combined_entry_type *native;
+     
+       /* A pointer to the linenumber information for this symbol */
+       struct lineno_cache_entry *lineno;
+     
+       /* Have the line numbers been relocated yet ? */
+       bfd_boolean done_lineno;
+     } coff_symbol_type;
+
+

+ +

3.3.2.6 bfd_coff_backend_data
+ +
     /* COFF symbol classifications.  */
+     
+     enum coff_symbol_classification
+     {
+       /* Global symbol.  */
+       COFF_SYMBOL_GLOBAL,
+       /* Common symbol.  */
+       COFF_SYMBOL_COMMON,
+       /* Undefined symbol.  */
+       COFF_SYMBOL_UNDEFINED,
+       /* Local symbol.  */
+       COFF_SYMBOL_LOCAL,
+       /* PE section symbol.  */
+       COFF_SYMBOL_PE_SECTION
+     };
+     
+
+

Special entry points for gdb to swap in coff symbol table parts: +

     typedef struct
+     {
+       void (*_bfd_coff_swap_aux_in)
+         (bfd *, void *, int, int, int, int, void *);
+     
+       void (*_bfd_coff_swap_sym_in)
+         (bfd *, void *, void *);
+     
+       void (*_bfd_coff_swap_lineno_in)
+         (bfd *, void *, void *);
+     
+       unsigned int (*_bfd_coff_swap_aux_out)
+         (bfd *, void *, int, int, int, int, void *);
+     
+       unsigned int (*_bfd_coff_swap_sym_out)
+         (bfd *, void *, void *);
+     
+       unsigned int (*_bfd_coff_swap_lineno_out)
+         (bfd *, void *, void *);
+     
+       unsigned int (*_bfd_coff_swap_reloc_out)
+         (bfd *, void *, void *);
+     
+       unsigned int (*_bfd_coff_swap_filehdr_out)
+         (bfd *, void *, void *);
+     
+       unsigned int (*_bfd_coff_swap_aouthdr_out)
+         (bfd *, void *, void *);
+     
+       unsigned int (*_bfd_coff_swap_scnhdr_out)
+         (bfd *, void *, void *);
+     
+       unsigned int _bfd_filhsz;
+       unsigned int _bfd_aoutsz;
+       unsigned int _bfd_scnhsz;
+       unsigned int _bfd_symesz;
+       unsigned int _bfd_auxesz;
+       unsigned int _bfd_relsz;
+       unsigned int _bfd_linesz;
+       unsigned int _bfd_filnmlen;
+       bfd_boolean _bfd_coff_long_filenames;
+       bfd_boolean _bfd_coff_long_section_names;
+       unsigned int _bfd_coff_default_section_alignment_power;
+       bfd_boolean _bfd_coff_force_symnames_in_strings;
+       unsigned int _bfd_coff_debug_string_prefix_length;
+     
+       void (*_bfd_coff_swap_filehdr_in)
+         (bfd *, void *, void *);
+     
+       void (*_bfd_coff_swap_aouthdr_in)
+         (bfd *, void *, void *);
+     
+       void (*_bfd_coff_swap_scnhdr_in)
+         (bfd *, void *, void *);
+     
+       void (*_bfd_coff_swap_reloc_in)
+         (bfd *abfd, void *, void *);
+     
+       bfd_boolean (*_bfd_coff_bad_format_hook)
+         (bfd *, void *);
+     
+       bfd_boolean (*_bfd_coff_set_arch_mach_hook)
+         (bfd *, void *);
+     
+       void * (*_bfd_coff_mkobject_hook)
+         (bfd *, void *, void *);
+     
+       bfd_boolean (*_bfd_styp_to_sec_flags_hook)
+         (bfd *, void *, const char *, asection *, flagword *);
+     
+       void (*_bfd_set_alignment_hook)
+         (bfd *, asection *, void *);
+     
+       bfd_boolean (*_bfd_coff_slurp_symbol_table)
+         (bfd *);
+     
+       bfd_boolean (*_bfd_coff_symname_in_debug)
+         (bfd *, struct internal_syment *);
+     
+       bfd_boolean (*_bfd_coff_pointerize_aux_hook)
+         (bfd *, combined_entry_type *, combined_entry_type *,
+                 unsigned int, combined_entry_type *);
+     
+       bfd_boolean (*_bfd_coff_print_aux)
+         (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
+                 combined_entry_type *, unsigned int);
+     
+       void (*_bfd_coff_reloc16_extra_cases)
+         (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
+                bfd_byte *, unsigned int *, unsigned int *);
+     
+       int (*_bfd_coff_reloc16_estimate)
+         (bfd *, asection *, arelent *, unsigned int,
+                 struct bfd_link_info *);
+     
+       enum coff_symbol_classification (*_bfd_coff_classify_symbol)
+         (bfd *, struct internal_syment *);
+     
+       bfd_boolean (*_bfd_coff_compute_section_file_positions)
+         (bfd *);
+     
+       bfd_boolean (*_bfd_coff_start_final_link)
+         (bfd *, struct bfd_link_info *);
+     
+       bfd_boolean (*_bfd_coff_relocate_section)
+         (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
+                 struct internal_reloc *, struct internal_syment *, asection **);
+     
+       reloc_howto_type *(*_bfd_coff_rtype_to_howto)
+         (bfd *, asection *, struct internal_reloc *,
+                 struct coff_link_hash_entry *, struct internal_syment *,
+                 bfd_vma *);
+     
+       bfd_boolean (*_bfd_coff_adjust_symndx)
+         (bfd *, struct bfd_link_info *, bfd *, asection *,
+                 struct internal_reloc *, bfd_boolean *);
+     
+       bfd_boolean (*_bfd_coff_link_add_one_symbol)
+         (struct bfd_link_info *, bfd *, const char *, flagword,
+                 asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
+                 struct bfd_link_hash_entry **);
+     
+       bfd_boolean (*_bfd_coff_link_output_has_begun)
+         (bfd *, struct coff_final_link_info *);
+     
+       bfd_boolean (*_bfd_coff_final_link_postscript)
+         (bfd *, struct coff_final_link_info *);
+     
+       bfd_boolean (*_bfd_coff_print_pdata)
+         (bfd *, void *);
+     
+     } bfd_coff_backend_data;
+     
+     #define coff_backend_info(abfd) \
+       ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
+     
+     #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
+       ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
+     
+     #define bfd_coff_swap_sym_in(a,e,i) \
+       ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
+     
+     #define bfd_coff_swap_lineno_in(a,e,i) \
+       ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
+     
+     #define bfd_coff_swap_reloc_out(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
+     
+     #define bfd_coff_swap_lineno_out(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
+     
+     #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
+       ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
+     
+     #define bfd_coff_swap_sym_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
+     
+     #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
+     
+     #define bfd_coff_swap_filehdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
+     
+     #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
+     
+     #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
+     #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
+     #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
+     #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
+     #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
+     #define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
+     #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
+     #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
+     #define bfd_coff_long_filenames(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_long_filenames)
+     #define bfd_coff_long_section_names(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_long_section_names)
+     #define bfd_coff_default_section_alignment_power(abfd) \
+       (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
+     #define bfd_coff_swap_filehdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
+     
+     #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
+     
+     #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
+     
+     #define bfd_coff_swap_reloc_in(abfd, i, o) \
+       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
+     
+     #define bfd_coff_bad_format_hook(abfd, filehdr) \
+       ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
+     
+     #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
+       ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
+     #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
+       ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
+        (abfd, filehdr, aouthdr))
+     
+     #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
+       ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
+        (abfd, scnhdr, name, section, flags_ptr))
+     
+     #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
+       ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
+     
+     #define bfd_coff_slurp_symbol_table(abfd)\
+       ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
+     
+     #define bfd_coff_symname_in_debug(abfd, sym)\
+       ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
+     
+     #define bfd_coff_force_symnames_in_strings(abfd)\
+       (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+     
+     #define bfd_coff_debug_string_prefix_length(abfd)\
+       (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+     
+     #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
+       ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
+        (abfd, file, base, symbol, aux, indaux))
+     
+     #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
+                                          reloc, data, src_ptr, dst_ptr)\
+       ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
+        (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
+     
+     #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
+       ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
+        (abfd, section, reloc, shrink, link_info))
+     
+     #define bfd_coff_classify_symbol(abfd, sym)\
+       ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
+        (abfd, sym))
+     
+     #define bfd_coff_compute_section_file_positions(abfd)\
+       ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
+        (abfd))
+     
+     #define bfd_coff_start_final_link(obfd, info)\
+       ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
+        (obfd, info))
+     #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
+       ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
+        (obfd, info, ibfd, o, con, rel, isyms, secs))
+     #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
+       ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
+        (abfd, sec, rel, h, sym, addendp))
+     #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
+       ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
+        (obfd, info, ibfd, sec, rel, adjustedp))
+     #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
+                                          value, string, cp, coll, hashp)\
+       ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
+        (info, abfd, name, flags, section, value, string, cp, coll, hashp))
+     
+     #define bfd_coff_link_output_has_begun(a,p) \
+       ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
+     #define bfd_coff_final_link_postscript(a,p) \
+       ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
+     
+     #define bfd_coff_have_print_pdata(a) \
+       (coff_backend_info (a)->_bfd_coff_print_pdata)
+     #define bfd_coff_print_pdata(a,p) \
+       ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))
+     
+
+
3.3.2.7 Writing relocations
+ +

To write relocations, the back end steps though the +canonical relocation table and create an +internal_reloc. The symbol index to use is removed from +the offset field in the symbol table supplied. The +address comes directly from the sum of the section base +address and the relocation offset; the type is dug directly +from the howto field. Then the internal_reloc is +swapped into the shape of an external_reloc and written +out to disk. + +

3.3.2.8 Reading linenumbers
+ +

Creating the linenumber table is done by reading in the entire +coff linenumber table, and creating another table for internal use. + +

A coff linenumber table is structured so that each function +is marked as having a line number of 0. Each line within the +function is an offset from the first line in the function. The +base of the line number information for the table is stored in +the symbol associated with the function. + +

Note: The PE format uses line number 0 for a flag indicating a +new source file. + +

The information is copied from the external to the internal +table, and each symbol which marks a function is marked by +pointing its... + +

How does this work ? + +

3.3.2.9 Reading relocations
+ +

Coff relocations are easily transformed into the internal BFD form +(arelent). + +

Reading a coff relocation table is done in the following stages: + +

    +
  • Read the entire coff relocation table into memory. + +
  • Process each relocation in turn; first swap it from the +external to the internal form. + +
  • Turn the symbol referenced in the relocation's symbol index +into a pointer into the canonical symbol table. +This table is the same as the one returned by a call to +bfd_canonicalize_symtab. The back end will call that +routine and save the result if a canonicalization hasn't been done. + +
  • The reloc index is turned into a pointer to a howto +structure, in a back end specific way. For instance, the 386 +and 960 use the r_type to directly produce an index +into a howto table vector; the 88k subtracts a number from the +r_type field and creates an addend field. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/elf.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/elf.html new file mode 100644 index 0000000..384acc6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/elf.html @@ -0,0 +1,82 @@ + + +elf - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: coff, +Up: BFD back ends +



+
+ +

3.4 ELF backends

+ +

BFD support for ELF formats is being worked on. +Currently, the best supported back ends are for sparc and i386 +(running svr4 or Solaris 2). + +

Documentation of the internals of the support code still needs +to be written. The code is changing quickly enough that we +haven't bothered yet. + +

+ +

3.4.0.1 bfd_elf_find_section
+ +

Synopsis +

     struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
+
+

Description
+Helper functions for GDB to locate the string tables. +Since BFD hides string tables from callers, GDB needs to use an +internal hook to find them. Sun's .stabstr, in particular, +isn't even pointed to by the .stab section, so ordinary +mechanisms wouldn't work to find it, even if we had some. + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/howto-manager.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/howto-manager.html new file mode 100644 index 0000000..8da62ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/howto-manager.html @@ -0,0 +1,2882 @@ + + +howto manager - Untitled + + + + + + + + + + + + +

+

+Previous: typedef arelent, +Up: Relocations +



+
+ +

2.10.2 The howto manager

+ +

When an application wants to create a relocation, but doesn't +know what the target machine might call it, it can find out by +using this bit of code. + +

+ +

2.10.2.1 bfd_reloc_code_type
+ +

Description
+The insides of a reloc code. The idea is that, eventually, there +will be one enumerator for every type of relocation we ever do. +Pass one of these values to bfd_reloc_type_lookup, and it'll +return a howto pointer. + +

This does mean that the application must determine the correct +enumerator value; you can't get a howto pointer from a random set +of attributes. + +

Here are the possible values for enum bfd_reloc_code_real: + +

+— : BFD_RELOC_64
+— : BFD_RELOC_32
+— : BFD_RELOC_26
+— : BFD_RELOC_24
+— : BFD_RELOC_16
+— : BFD_RELOC_14
+— : BFD_RELOC_8
+

Basic absolute relocations of N bits. +

+ +
+— : BFD_RELOC_64_PCREL
+— : BFD_RELOC_32_PCREL
+— : BFD_RELOC_24_PCREL
+— : BFD_RELOC_16_PCREL
+— : BFD_RELOC_12_PCREL
+— : BFD_RELOC_8_PCREL
+

PC-relative relocations. Sometimes these are relative to the address +of the relocation itself; sometimes they are relative to the start of +the section containing the relocation. It depends on the specific target. + +

The 24-bit relocation is used in some Intel 960 configurations. +

+ +
+— : BFD_RELOC_32_SECREL
+

Section relative relocations. Some targets need this for DWARF2. +

+ +
+— : BFD_RELOC_32_GOT_PCREL
+— : BFD_RELOC_16_GOT_PCREL
+— : BFD_RELOC_8_GOT_PCREL
+— : BFD_RELOC_32_GOTOFF
+— : BFD_RELOC_16_GOTOFF
+— : BFD_RELOC_LO16_GOTOFF
+— : BFD_RELOC_HI16_GOTOFF
+— : BFD_RELOC_HI16_S_GOTOFF
+— : BFD_RELOC_8_GOTOFF
+— : BFD_RELOC_64_PLT_PCREL
+— : BFD_RELOC_32_PLT_PCREL
+— : BFD_RELOC_24_PLT_PCREL
+— : BFD_RELOC_16_PLT_PCREL
+— : BFD_RELOC_8_PLT_PCREL
+— : BFD_RELOC_64_PLTOFF
+— : BFD_RELOC_32_PLTOFF
+— : BFD_RELOC_16_PLTOFF
+— : BFD_RELOC_LO16_PLTOFF
+— : BFD_RELOC_HI16_PLTOFF
+— : BFD_RELOC_HI16_S_PLTOFF
+— : BFD_RELOC_8_PLTOFF
+

For ELF. +

+ +
+— : BFD_RELOC_68K_GLOB_DAT
+— : BFD_RELOC_68K_JMP_SLOT
+— : BFD_RELOC_68K_RELATIVE
+

Relocations used by 68K ELF. +

+ +
+— : BFD_RELOC_32_BASEREL
+— : BFD_RELOC_16_BASEREL
+— : BFD_RELOC_LO16_BASEREL
+— : BFD_RELOC_HI16_BASEREL
+— : BFD_RELOC_HI16_S_BASEREL
+— : BFD_RELOC_8_BASEREL
+— : BFD_RELOC_RVA
+

Linkage-table relative. +

+ +
+— : BFD_RELOC_8_FFnn
+

Absolute 8-bit relocation, but used to form an address like 0xFFnn. +

+ +
+— : BFD_RELOC_32_PCREL_S2
+— : BFD_RELOC_16_PCREL_S2
+— : BFD_RELOC_23_PCREL_S2
+

These PC-relative relocations are stored as word displacements – +i.e., byte displacements shifted right two bits. The 30-bit word +displacement (<<32_PCREL_S2>> – 32 bits, shifted 2) is used on the +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The +signed 16-bit displacement is used on the MIPS, and the 23-bit +displacement is used on the Alpha. +

+ +
+— : BFD_RELOC_HI22
+— : BFD_RELOC_LO10
+

High 22 bits and low 10 bits of 32-bit value, placed into lower bits of +the target word. These are used on the SPARC. +

+ +
+— : BFD_RELOC_GPREL16
+— : BFD_RELOC_GPREL32
+

For systems that allocate a Global Pointer register, these are +displacements off that register. These relocation types are +handled specially, because the value the register will have is +decided relatively late. +

+ +
+— : BFD_RELOC_I960_CALLJ
+

Reloc types used for i960/b.out. +

+ +
+— : BFD_RELOC_NONE
+— : BFD_RELOC_SPARC_WDISP22
+— : BFD_RELOC_SPARC22
+— : BFD_RELOC_SPARC13
+— : BFD_RELOC_SPARC_GOT10
+— : BFD_RELOC_SPARC_GOT13
+— : BFD_RELOC_SPARC_GOT22
+— : BFD_RELOC_SPARC_PC10
+— : BFD_RELOC_SPARC_PC22
+— : BFD_RELOC_SPARC_WPLT30
+— : BFD_RELOC_SPARC_COPY
+— : BFD_RELOC_SPARC_GLOB_DAT
+— : BFD_RELOC_SPARC_JMP_SLOT
+— : BFD_RELOC_SPARC_RELATIVE
+— : BFD_RELOC_SPARC_UA16
+— : BFD_RELOC_SPARC_UA32
+— : BFD_RELOC_SPARC_UA64
+— : BFD_RELOC_SPARC_GOTDATA_HIX22
+— : BFD_RELOC_SPARC_GOTDATA_LOX10
+— : BFD_RELOC_SPARC_GOTDATA_OP_HIX22
+— : BFD_RELOC_SPARC_GOTDATA_OP_LOX10
+— : BFD_RELOC_SPARC_GOTDATA_OP
+

SPARC ELF relocations. There is probably some overlap with other +relocation types already defined. +

+ +
+— : BFD_RELOC_SPARC_BASE13
+— : BFD_RELOC_SPARC_BASE22
+

I think these are specific to SPARC a.out (e.g., Sun 4). +

+ +
+— : BFD_RELOC_SPARC_64
+— : BFD_RELOC_SPARC_10
+— : BFD_RELOC_SPARC_11
+— : BFD_RELOC_SPARC_OLO10
+— : BFD_RELOC_SPARC_HH22
+— : BFD_RELOC_SPARC_HM10
+— : BFD_RELOC_SPARC_LM22
+— : BFD_RELOC_SPARC_PC_HH22
+— : BFD_RELOC_SPARC_PC_HM10
+— : BFD_RELOC_SPARC_PC_LM22
+— : BFD_RELOC_SPARC_WDISP16
+— : BFD_RELOC_SPARC_WDISP19
+— : BFD_RELOC_SPARC_7
+— : BFD_RELOC_SPARC_6
+— : BFD_RELOC_SPARC_5
+— : BFD_RELOC_SPARC_DISP64
+— : BFD_RELOC_SPARC_PLT32
+— : BFD_RELOC_SPARC_PLT64
+— : BFD_RELOC_SPARC_HIX22
+— : BFD_RELOC_SPARC_LOX10
+— : BFD_RELOC_SPARC_H44
+— : BFD_RELOC_SPARC_M44
+— : BFD_RELOC_SPARC_L44
+— : BFD_RELOC_SPARC_REGISTER
+

SPARC64 relocations +

+ +
+— : BFD_RELOC_SPARC_REV32
+

SPARC little endian relocation +

+ +
+— : BFD_RELOC_SPARC_TLS_GD_HI22
+— : BFD_RELOC_SPARC_TLS_GD_LO10
+— : BFD_RELOC_SPARC_TLS_GD_ADD
+— : BFD_RELOC_SPARC_TLS_GD_CALL
+— : BFD_RELOC_SPARC_TLS_LDM_HI22
+— : BFD_RELOC_SPARC_TLS_LDM_LO10
+— : BFD_RELOC_SPARC_TLS_LDM_ADD
+— : BFD_RELOC_SPARC_TLS_LDM_CALL
+— : BFD_RELOC_SPARC_TLS_LDO_HIX22
+— : BFD_RELOC_SPARC_TLS_LDO_LOX10
+— : BFD_RELOC_SPARC_TLS_LDO_ADD
+— : BFD_RELOC_SPARC_TLS_IE_HI22
+— : BFD_RELOC_SPARC_TLS_IE_LO10
+— : BFD_RELOC_SPARC_TLS_IE_LD
+— : BFD_RELOC_SPARC_TLS_IE_LDX
+— : BFD_RELOC_SPARC_TLS_IE_ADD
+— : BFD_RELOC_SPARC_TLS_LE_HIX22
+— : BFD_RELOC_SPARC_TLS_LE_LOX10
+— : BFD_RELOC_SPARC_TLS_DTPMOD32
+— : BFD_RELOC_SPARC_TLS_DTPMOD64
+— : BFD_RELOC_SPARC_TLS_DTPOFF32
+— : BFD_RELOC_SPARC_TLS_DTPOFF64
+— : BFD_RELOC_SPARC_TLS_TPOFF32
+— : BFD_RELOC_SPARC_TLS_TPOFF64
+

SPARC TLS relocations +

+ +
+— : BFD_RELOC_SPU_IMM7
+— : BFD_RELOC_SPU_IMM8
+— : BFD_RELOC_SPU_IMM10
+— : BFD_RELOC_SPU_IMM10W
+— : BFD_RELOC_SPU_IMM16
+— : BFD_RELOC_SPU_IMM16W
+— : BFD_RELOC_SPU_IMM18
+— : BFD_RELOC_SPU_PCREL9a
+— : BFD_RELOC_SPU_PCREL9b
+— : BFD_RELOC_SPU_PCREL16
+— : BFD_RELOC_SPU_LO16
+— : BFD_RELOC_SPU_HI16
+— : BFD_RELOC_SPU_PPU32
+— : BFD_RELOC_SPU_PPU64
+

SPU Relocations. +

+ +
+— : BFD_RELOC_ALPHA_GPDISP_HI16
+

Alpha ECOFF and ELF relocations. Some of these treat the symbol or +"addend" in some special way. +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when +writing; when reading, it will be the absolute section symbol. The +addend is the displacement in bytes of the "lda" instruction from +the "ldah" instruction (which is at the address of this reloc). +

+ +
+— : BFD_RELOC_ALPHA_GPDISP_LO16
+

For GPDISP_LO16 ("ignore") relocations, the symbol is handled as +with GPDISP_HI16 relocs. The addend is ignored when writing the +relocations out, and is filled in with the file's GP value on +reading, for convenience. +

+ +
+— : BFD_RELOC_ALPHA_GPDISP
+

The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 +relocation except that there is no accompanying GPDISP_LO16 +relocation. +

+ +
+— : BFD_RELOC_ALPHA_LITERAL
+— : BFD_RELOC_ALPHA_ELF_LITERAL
+— : BFD_RELOC_ALPHA_LITUSE
+

The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; +the assembler turns it into a LDQ instruction to load the address of +the symbol, and then fills in a register in the real instruction. + +

The LITERAL reloc, at the LDQ instruction, refers to the .lita +section symbol. The addend is ignored when writing, but is filled +in with the file's GP value on reading, for convenience, as with the +GPDISP_LO16 reloc. + +

The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16. +It should refer to the symbol to be referenced, as with 16_GOTOFF, +but it generates output not based on the position within the .got +section, but relative to the GP value chosen for the file during the +final link stage. + +

The LITUSE reloc, on the instruction using the loaded address, gives +information to the linker that it might be able to use to optimize +away some literal section references. The symbol is ignored (read +as the absolute section symbol), and the "addend" indicates the type +of instruction using the register: +1 - "memory" fmt insn +2 - byte-manipulation (byte offset reg) +3 - jsr (target of branch) +

+ +
+— : BFD_RELOC_ALPHA_HINT
+

The HINT relocation indicates a value that should be filled into the +"hint" field of a jmp/jsr/ret instruction, for possible branch- +prediction logic which may be provided on some processors. +

+ +
+— : BFD_RELOC_ALPHA_LINKAGE
+

The LINKAGE relocation outputs a linkage pair in the object file, +which is filled by the linker. +

+ +
+— : BFD_RELOC_ALPHA_CODEADDR
+

The CODEADDR relocation outputs a STO_CA in the object file, +which is filled by the linker. +

+ +
+— : BFD_RELOC_ALPHA_GPREL_HI16
+— : BFD_RELOC_ALPHA_GPREL_LO16
+

The GPREL_HI/LO relocations together form a 32-bit offset from the +GP register. +

+ +
+— : BFD_RELOC_ALPHA_BRSGP
+

Like BFD_RELOC_23_PCREL_S2, except that the source and target must +share a common GP, and the target address is adjusted for +STO_ALPHA_STD_GPLOAD. +

+ +
+— : BFD_RELOC_ALPHA_TLSGD
+— : BFD_RELOC_ALPHA_TLSLDM
+— : BFD_RELOC_ALPHA_DTPMOD64
+— : BFD_RELOC_ALPHA_GOTDTPREL16
+— : BFD_RELOC_ALPHA_DTPREL64
+— : BFD_RELOC_ALPHA_DTPREL_HI16
+— : BFD_RELOC_ALPHA_DTPREL_LO16
+— : BFD_RELOC_ALPHA_DTPREL16
+— : BFD_RELOC_ALPHA_GOTTPREL16
+— : BFD_RELOC_ALPHA_TPREL64
+— : BFD_RELOC_ALPHA_TPREL_HI16
+— : BFD_RELOC_ALPHA_TPREL_LO16
+— : BFD_RELOC_ALPHA_TPREL16
+

Alpha thread-local storage relocations. +

+ +
+— : BFD_RELOC_MIPS_JMP
+

Bits 27..2 of the relocation address shifted right 2 bits; +simple reloc otherwise. +

+ +
+— : BFD_RELOC_MIPS16_JMP
+

The MIPS16 jump instruction. +

+ +
+— : BFD_RELOC_MIPS16_GPREL
+

MIPS16 GP relative reloc. +

+ +
+— : BFD_RELOC_HI16
+

High 16 bits of 32-bit value; simple reloc. +

+ +
+— : BFD_RELOC_HI16_S
+

High 16 bits of 32-bit value but the low 16 bits will be sign +extended and added to form the final result. If the low 16 +bits form a negative number, we need to add one to the high value +to compensate for the borrow when the low bits are added. +

+ +
+— : BFD_RELOC_LO16
+

Low 16 bits. +

+ +
+— : BFD_RELOC_HI16_PCREL
+

High 16 bits of 32-bit pc-relative value +

+ +
+— : BFD_RELOC_HI16_S_PCREL
+

High 16 bits of 32-bit pc-relative value, adjusted +

+ +
+— : BFD_RELOC_LO16_PCREL
+

Low 16 bits of pc-relative value +

+ +
+— : BFD_RELOC_MIPS16_GOT16
+— : BFD_RELOC_MIPS16_CALL16
+

Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of +16-bit immediate fields +

+ +
+— : BFD_RELOC_MIPS16_HI16
+

MIPS16 high 16 bits of 32-bit value. +

+ +
+— : BFD_RELOC_MIPS16_HI16_S
+

MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign +extended and added to form the final result. If the low 16 +bits form a negative number, we need to add one to the high value +to compensate for the borrow when the low bits are added. +

+ +
+— : BFD_RELOC_MIPS16_LO16
+

MIPS16 low 16 bits. +

+ +
+— : BFD_RELOC_MIPS_LITERAL
+

Relocation against a MIPS literal section. +

+ +
+— : BFD_RELOC_MIPS_GOT16
+— : BFD_RELOC_MIPS_CALL16
+— : BFD_RELOC_MIPS_GOT_HI16
+— : BFD_RELOC_MIPS_GOT_LO16
+— : BFD_RELOC_MIPS_CALL_HI16
+— : BFD_RELOC_MIPS_CALL_LO16
+— : BFD_RELOC_MIPS_SUB
+— : BFD_RELOC_MIPS_GOT_PAGE
+— : BFD_RELOC_MIPS_GOT_OFST
+— : BFD_RELOC_MIPS_GOT_DISP
+— : BFD_RELOC_MIPS_SHIFT5
+— : BFD_RELOC_MIPS_SHIFT6
+— : BFD_RELOC_MIPS_INSERT_A
+— : BFD_RELOC_MIPS_INSERT_B
+— : BFD_RELOC_MIPS_DELETE
+— : BFD_RELOC_MIPS_HIGHEST
+— : BFD_RELOC_MIPS_HIGHER
+— : BFD_RELOC_MIPS_SCN_DISP
+— : BFD_RELOC_MIPS_REL16
+— : BFD_RELOC_MIPS_RELGOT
+— : BFD_RELOC_MIPS_JALR
+— : BFD_RELOC_MIPS_TLS_DTPMOD32
+— : BFD_RELOC_MIPS_TLS_DTPREL32
+— : BFD_RELOC_MIPS_TLS_DTPMOD64
+— : BFD_RELOC_MIPS_TLS_DTPREL64
+— : BFD_RELOC_MIPS_TLS_GD
+— : BFD_RELOC_MIPS_TLS_LDM
+— : BFD_RELOC_MIPS_TLS_DTPREL_HI16
+— : BFD_RELOC_MIPS_TLS_DTPREL_LO16
+— : BFD_RELOC_MIPS_TLS_GOTTPREL
+— : BFD_RELOC_MIPS_TLS_TPREL32
+— : BFD_RELOC_MIPS_TLS_TPREL64
+— : BFD_RELOC_MIPS_TLS_TPREL_HI16
+— : BFD_RELOC_MIPS_TLS_TPREL_LO16
+

MIPS ELF relocations. +

+ +
+— : BFD_RELOC_MIPS_COPY
+— : BFD_RELOC_MIPS_JUMP_SLOT
+

MIPS ELF relocations (VxWorks and PLT extensions). +

+ +
+— : BFD_RELOC_FRV_LABEL16
+— : BFD_RELOC_FRV_LABEL24
+— : BFD_RELOC_FRV_LO16
+— : BFD_RELOC_FRV_HI16
+— : BFD_RELOC_FRV_GPREL12
+— : BFD_RELOC_FRV_GPRELU12
+— : BFD_RELOC_FRV_GPREL32
+— : BFD_RELOC_FRV_GPRELHI
+— : BFD_RELOC_FRV_GPRELLO
+— : BFD_RELOC_FRV_GOT12
+— : BFD_RELOC_FRV_GOTHI
+— : BFD_RELOC_FRV_GOTLO
+— : BFD_RELOC_FRV_FUNCDESC
+— : BFD_RELOC_FRV_FUNCDESC_GOT12
+— : BFD_RELOC_FRV_FUNCDESC_GOTHI
+— : BFD_RELOC_FRV_FUNCDESC_GOTLO
+— : BFD_RELOC_FRV_FUNCDESC_VALUE
+— : BFD_RELOC_FRV_FUNCDESC_GOTOFF12
+— : BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
+— : BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
+— : BFD_RELOC_FRV_GOTOFF12
+— : BFD_RELOC_FRV_GOTOFFHI
+— : BFD_RELOC_FRV_GOTOFFLO
+— : BFD_RELOC_FRV_GETTLSOFF
+— : BFD_RELOC_FRV_TLSDESC_VALUE
+— : BFD_RELOC_FRV_GOTTLSDESC12
+— : BFD_RELOC_FRV_GOTTLSDESCHI
+— : BFD_RELOC_FRV_GOTTLSDESCLO
+— : BFD_RELOC_FRV_TLSMOFF12
+— : BFD_RELOC_FRV_TLSMOFFHI
+— : BFD_RELOC_FRV_TLSMOFFLO
+— : BFD_RELOC_FRV_GOTTLSOFF12
+— : BFD_RELOC_FRV_GOTTLSOFFHI
+— : BFD_RELOC_FRV_GOTTLSOFFLO
+— : BFD_RELOC_FRV_TLSOFF
+— : BFD_RELOC_FRV_TLSDESC_RELAX
+— : BFD_RELOC_FRV_GETTLSOFF_RELAX
+— : BFD_RELOC_FRV_TLSOFF_RELAX
+— : BFD_RELOC_FRV_TLSMOFF
+

Fujitsu Frv Relocations. +

+ +
+— : BFD_RELOC_MN10300_GOTOFF24
+

This is a 24bit GOT-relative reloc for the mn10300. +

+ +
+— : BFD_RELOC_MN10300_GOT32
+

This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. +

+ +
+— : BFD_RELOC_MN10300_GOT24
+

This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. +

+ +
+— : BFD_RELOC_MN10300_GOT16
+

This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes +in the instruction. +

+ +
+— : BFD_RELOC_MN10300_COPY
+

Copy symbol at runtime. +

+ +
+— : BFD_RELOC_MN10300_GLOB_DAT
+

Create GOT entry. +

+ +
+— : BFD_RELOC_MN10300_JMP_SLOT
+

Create PLT entry. +

+ +
+— : BFD_RELOC_MN10300_RELATIVE
+

Adjust by program base. +

+ +
+— : BFD_RELOC_MN10300_SYM_DIFF
+

Together with another reloc targeted at the same location, +allows for a value that is the difference of two symbols +in the same section. +

+ +
+— : BFD_RELOC_MN10300_ALIGN
+

The addend of this reloc is an alignment power that must +be honoured at the offset's location, regardless of linker +relaxation. +

+ +
+— : BFD_RELOC_386_GOT32
+— : BFD_RELOC_386_PLT32
+— : BFD_RELOC_386_COPY
+— : BFD_RELOC_386_GLOB_DAT
+— : BFD_RELOC_386_JUMP_SLOT
+— : BFD_RELOC_386_RELATIVE
+— : BFD_RELOC_386_GOTOFF
+— : BFD_RELOC_386_GOTPC
+— : BFD_RELOC_386_TLS_TPOFF
+— : BFD_RELOC_386_TLS_IE
+— : BFD_RELOC_386_TLS_GOTIE
+— : BFD_RELOC_386_TLS_LE
+— : BFD_RELOC_386_TLS_GD
+— : BFD_RELOC_386_TLS_LDM
+— : BFD_RELOC_386_TLS_LDO_32
+— : BFD_RELOC_386_TLS_IE_32
+— : BFD_RELOC_386_TLS_LE_32
+— : BFD_RELOC_386_TLS_DTPMOD32
+— : BFD_RELOC_386_TLS_DTPOFF32
+— : BFD_RELOC_386_TLS_TPOFF32
+— : BFD_RELOC_386_TLS_GOTDESC
+— : BFD_RELOC_386_TLS_DESC_CALL
+— : BFD_RELOC_386_TLS_DESC
+

i386/elf relocations +

+ +
+— : BFD_RELOC_X86_64_GOT32
+— : BFD_RELOC_X86_64_PLT32
+— : BFD_RELOC_X86_64_COPY
+— : BFD_RELOC_X86_64_GLOB_DAT
+— : BFD_RELOC_X86_64_JUMP_SLOT
+— : BFD_RELOC_X86_64_RELATIVE
+— : BFD_RELOC_X86_64_GOTPCREL
+— : BFD_RELOC_X86_64_32S
+— : BFD_RELOC_X86_64_DTPMOD64
+— : BFD_RELOC_X86_64_DTPOFF64
+— : BFD_RELOC_X86_64_TPOFF64
+— : BFD_RELOC_X86_64_TLSGD
+— : BFD_RELOC_X86_64_TLSLD
+— : BFD_RELOC_X86_64_DTPOFF32
+— : BFD_RELOC_X86_64_GOTTPOFF
+— : BFD_RELOC_X86_64_TPOFF32
+— : BFD_RELOC_X86_64_GOTOFF64
+— : BFD_RELOC_X86_64_GOTPC32
+— : BFD_RELOC_X86_64_GOT64
+— : BFD_RELOC_X86_64_GOTPCREL64
+— : BFD_RELOC_X86_64_GOTPC64
+— : BFD_RELOC_X86_64_GOTPLT64
+— : BFD_RELOC_X86_64_PLTOFF64
+— : BFD_RELOC_X86_64_GOTPC32_TLSDESC
+— : BFD_RELOC_X86_64_TLSDESC_CALL
+— : BFD_RELOC_X86_64_TLSDESC
+

x86-64/elf relocations +

+ +
+— : BFD_RELOC_NS32K_IMM_8
+— : BFD_RELOC_NS32K_IMM_16
+— : BFD_RELOC_NS32K_IMM_32
+— : BFD_RELOC_NS32K_IMM_8_PCREL
+— : BFD_RELOC_NS32K_IMM_16_PCREL
+— : BFD_RELOC_NS32K_IMM_32_PCREL
+— : BFD_RELOC_NS32K_DISP_8
+— : BFD_RELOC_NS32K_DISP_16
+— : BFD_RELOC_NS32K_DISP_32
+— : BFD_RELOC_NS32K_DISP_8_PCREL
+— : BFD_RELOC_NS32K_DISP_16_PCREL
+— : BFD_RELOC_NS32K_DISP_32_PCREL
+

ns32k relocations +

+ +
+— : BFD_RELOC_PDP11_DISP_8_PCREL
+— : BFD_RELOC_PDP11_DISP_6_PCREL
+

PDP11 relocations +

+ +
+— : BFD_RELOC_PJ_CODE_HI16
+— : BFD_RELOC_PJ_CODE_LO16
+— : BFD_RELOC_PJ_CODE_DIR16
+— : BFD_RELOC_PJ_CODE_DIR32
+— : BFD_RELOC_PJ_CODE_REL16
+— : BFD_RELOC_PJ_CODE_REL32
+

Picojava relocs. Not all of these appear in object files. +

+ +
+— : BFD_RELOC_PPC_B26
+— : BFD_RELOC_PPC_BA26
+— : BFD_RELOC_PPC_TOC16
+— : BFD_RELOC_PPC_B16
+— : BFD_RELOC_PPC_B16_BRTAKEN
+— : BFD_RELOC_PPC_B16_BRNTAKEN
+— : BFD_RELOC_PPC_BA16
+— : BFD_RELOC_PPC_BA16_BRTAKEN
+— : BFD_RELOC_PPC_BA16_BRNTAKEN
+— : BFD_RELOC_PPC_COPY
+— : BFD_RELOC_PPC_GLOB_DAT
+— : BFD_RELOC_PPC_JMP_SLOT
+— : BFD_RELOC_PPC_RELATIVE
+— : BFD_RELOC_PPC_LOCAL24PC
+— : BFD_RELOC_PPC_EMB_NADDR32
+— : BFD_RELOC_PPC_EMB_NADDR16
+— : BFD_RELOC_PPC_EMB_NADDR16_LO
+— : BFD_RELOC_PPC_EMB_NADDR16_HI
+— : BFD_RELOC_PPC_EMB_NADDR16_HA
+— : BFD_RELOC_PPC_EMB_SDAI16
+— : BFD_RELOC_PPC_EMB_SDA2I16
+— : BFD_RELOC_PPC_EMB_SDA2REL
+— : BFD_RELOC_PPC_EMB_SDA21
+— : BFD_RELOC_PPC_EMB_MRKREF
+— : BFD_RELOC_PPC_EMB_RELSEC16
+— : BFD_RELOC_PPC_EMB_RELST_LO
+— : BFD_RELOC_PPC_EMB_RELST_HI
+— : BFD_RELOC_PPC_EMB_RELST_HA
+— : BFD_RELOC_PPC_EMB_BIT_FLD
+— : BFD_RELOC_PPC_EMB_RELSDA
+— : BFD_RELOC_PPC64_HIGHER
+— : BFD_RELOC_PPC64_HIGHER_S
+— : BFD_RELOC_PPC64_HIGHEST
+— : BFD_RELOC_PPC64_HIGHEST_S
+— : BFD_RELOC_PPC64_TOC16_LO
+— : BFD_RELOC_PPC64_TOC16_HI
+— : BFD_RELOC_PPC64_TOC16_HA
+— : BFD_RELOC_PPC64_TOC
+— : BFD_RELOC_PPC64_PLTGOT16
+— : BFD_RELOC_PPC64_PLTGOT16_LO
+— : BFD_RELOC_PPC64_PLTGOT16_HI
+— : BFD_RELOC_PPC64_PLTGOT16_HA
+— : BFD_RELOC_PPC64_ADDR16_DS
+— : BFD_RELOC_PPC64_ADDR16_LO_DS
+— : BFD_RELOC_PPC64_GOT16_DS
+— : BFD_RELOC_PPC64_GOT16_LO_DS
+— : BFD_RELOC_PPC64_PLT16_LO_DS
+— : BFD_RELOC_PPC64_SECTOFF_DS
+— : BFD_RELOC_PPC64_SECTOFF_LO_DS
+— : BFD_RELOC_PPC64_TOC16_DS
+— : BFD_RELOC_PPC64_TOC16_LO_DS
+— : BFD_RELOC_PPC64_PLTGOT16_DS
+— : BFD_RELOC_PPC64_PLTGOT16_LO_DS
+

Power(rs6000) and PowerPC relocations. +

+ +
+— : BFD_RELOC_PPC_TLS
+— : BFD_RELOC_PPC_DTPMOD
+— : BFD_RELOC_PPC_TPREL16
+— : BFD_RELOC_PPC_TPREL16_LO
+— : BFD_RELOC_PPC_TPREL16_HI
+— : BFD_RELOC_PPC_TPREL16_HA
+— : BFD_RELOC_PPC_TPREL
+— : BFD_RELOC_PPC_DTPREL16
+— : BFD_RELOC_PPC_DTPREL16_LO
+— : BFD_RELOC_PPC_DTPREL16_HI
+— : BFD_RELOC_PPC_DTPREL16_HA
+— : BFD_RELOC_PPC_DTPREL
+— : BFD_RELOC_PPC_GOT_TLSGD16
+— : BFD_RELOC_PPC_GOT_TLSGD16_LO
+— : BFD_RELOC_PPC_GOT_TLSGD16_HI
+— : BFD_RELOC_PPC_GOT_TLSGD16_HA
+— : BFD_RELOC_PPC_GOT_TLSLD16
+— : BFD_RELOC_PPC_GOT_TLSLD16_LO
+— : BFD_RELOC_PPC_GOT_TLSLD16_HI
+— : BFD_RELOC_PPC_GOT_TLSLD16_HA
+— : BFD_RELOC_PPC_GOT_TPREL16
+— : BFD_RELOC_PPC_GOT_TPREL16_LO
+— : BFD_RELOC_PPC_GOT_TPREL16_HI
+— : BFD_RELOC_PPC_GOT_TPREL16_HA
+— : BFD_RELOC_PPC_GOT_DTPREL16
+— : BFD_RELOC_PPC_GOT_DTPREL16_LO
+— : BFD_RELOC_PPC_GOT_DTPREL16_HI
+— : BFD_RELOC_PPC_GOT_DTPREL16_HA
+— : BFD_RELOC_PPC64_TPREL16_DS
+— : BFD_RELOC_PPC64_TPREL16_LO_DS
+— : BFD_RELOC_PPC64_TPREL16_HIGHER
+— : BFD_RELOC_PPC64_TPREL16_HIGHERA
+— : BFD_RELOC_PPC64_TPREL16_HIGHEST
+— : BFD_RELOC_PPC64_TPREL16_HIGHESTA
+— : BFD_RELOC_PPC64_DTPREL16_DS
+— : BFD_RELOC_PPC64_DTPREL16_LO_DS
+— : BFD_RELOC_PPC64_DTPREL16_HIGHER
+— : BFD_RELOC_PPC64_DTPREL16_HIGHERA
+— : BFD_RELOC_PPC64_DTPREL16_HIGHEST
+— : BFD_RELOC_PPC64_DTPREL16_HIGHESTA
+

PowerPC and PowerPC64 thread-local storage relocations. +

+ +
+— : BFD_RELOC_I370_D12
+

IBM 370/390 relocations +

+ +
+— : BFD_RELOC_CTOR
+

The type of reloc used to build a constructor table - at the moment +probably a 32 bit wide absolute relocation, but the target can choose. +It generally does map to one of the other relocation types. +

+ +
+— : BFD_RELOC_ARM_PCREL_BRANCH
+

ARM 26 bit pc-relative branch. The lowest two bits must be zero and are +not stored in the instruction. +

+ +
+— : BFD_RELOC_ARM_PCREL_BLX
+

ARM 26 bit pc-relative branch. The lowest bit must be zero and is +not stored in the instruction. The 2nd lowest bit comes from a 1 bit +field in the instruction. +

+ +
+— : BFD_RELOC_THUMB_PCREL_BLX
+

Thumb 22 bit pc-relative branch. The lowest bit must be zero and is +not stored in the instruction. The 2nd lowest bit comes from a 1 bit +field in the instruction. +

+ +
+— : BFD_RELOC_ARM_PCREL_CALL
+

ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. +

+ +
+— : BFD_RELOC_ARM_PCREL_JUMP
+

ARM 26-bit pc-relative branch for B or conditional BL instruction. +

+ +
+— : BFD_RELOC_THUMB_PCREL_BRANCH7
+— : BFD_RELOC_THUMB_PCREL_BRANCH9
+— : BFD_RELOC_THUMB_PCREL_BRANCH12
+— : BFD_RELOC_THUMB_PCREL_BRANCH20
+— : BFD_RELOC_THUMB_PCREL_BRANCH23
+— : BFD_RELOC_THUMB_PCREL_BRANCH25
+

Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches. +The lowest bit must be zero and is not stored in the instruction. +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an +"nn" one smaller in all cases. Note further that BRANCH23 +corresponds to R_ARM_THM_CALL. +

+ +
+— : BFD_RELOC_ARM_OFFSET_IMM
+

12-bit immediate offset, used in ARM-format ldr and str instructions. +

+ +
+— : BFD_RELOC_ARM_THUMB_OFFSET
+

5-bit immediate offset, used in Thumb-format ldr and str instructions. +

+ +
+— : BFD_RELOC_ARM_TARGET1
+

Pc-relative or absolute relocation depending on target. Used for +entries in .init_array sections. +

+ +
+— : BFD_RELOC_ARM_ROSEGREL32
+

Read-only segment base relative address. +

+ +
+— : BFD_RELOC_ARM_SBREL32
+

Data segment base relative address. +

+ +
+— : BFD_RELOC_ARM_TARGET2
+

This reloc is used for references to RTTI data from exception handling +tables. The actual definition depends on the target. It may be a +pc-relative or some form of GOT-indirect relocation. +

+ +
+— : BFD_RELOC_ARM_PREL31
+

31-bit PC relative address. +

+ +
+— : BFD_RELOC_ARM_MOVW
+— : BFD_RELOC_ARM_MOVT
+— : BFD_RELOC_ARM_MOVW_PCREL
+— : BFD_RELOC_ARM_MOVT_PCREL
+— : BFD_RELOC_ARM_THUMB_MOVW
+— : BFD_RELOC_ARM_THUMB_MOVT
+— : BFD_RELOC_ARM_THUMB_MOVW_PCREL
+— : BFD_RELOC_ARM_THUMB_MOVT_PCREL
+

Low and High halfword relocations for MOVW and MOVT instructions. +

+ +
+— : BFD_RELOC_ARM_JUMP_SLOT
+— : BFD_RELOC_ARM_GLOB_DAT
+— : BFD_RELOC_ARM_GOT32
+— : BFD_RELOC_ARM_PLT32
+— : BFD_RELOC_ARM_RELATIVE
+— : BFD_RELOC_ARM_GOTOFF
+— : BFD_RELOC_ARM_GOTPC
+

Relocations for setting up GOTs and PLTs for shared libraries. +

+ +
+— : BFD_RELOC_ARM_TLS_GD32
+— : BFD_RELOC_ARM_TLS_LDO32
+— : BFD_RELOC_ARM_TLS_LDM32
+— : BFD_RELOC_ARM_TLS_DTPOFF32
+— : BFD_RELOC_ARM_TLS_DTPMOD32
+— : BFD_RELOC_ARM_TLS_TPOFF32
+— : BFD_RELOC_ARM_TLS_IE32
+— : BFD_RELOC_ARM_TLS_LE32
+

ARM thread-local storage relocations. +

+ +
+— : BFD_RELOC_ARM_ALU_PC_G0_NC
+— : BFD_RELOC_ARM_ALU_PC_G0
+— : BFD_RELOC_ARM_ALU_PC_G1_NC
+— : BFD_RELOC_ARM_ALU_PC_G1
+— : BFD_RELOC_ARM_ALU_PC_G2
+— : BFD_RELOC_ARM_LDR_PC_G0
+— : BFD_RELOC_ARM_LDR_PC_G1
+— : BFD_RELOC_ARM_LDR_PC_G2
+— : BFD_RELOC_ARM_LDRS_PC_G0
+— : BFD_RELOC_ARM_LDRS_PC_G1
+— : BFD_RELOC_ARM_LDRS_PC_G2
+— : BFD_RELOC_ARM_LDC_PC_G0
+— : BFD_RELOC_ARM_LDC_PC_G1
+— : BFD_RELOC_ARM_LDC_PC_G2
+— : BFD_RELOC_ARM_ALU_SB_G0_NC
+— : BFD_RELOC_ARM_ALU_SB_G0
+— : BFD_RELOC_ARM_ALU_SB_G1_NC
+— : BFD_RELOC_ARM_ALU_SB_G1
+— : BFD_RELOC_ARM_ALU_SB_G2
+— : BFD_RELOC_ARM_LDR_SB_G0
+— : BFD_RELOC_ARM_LDR_SB_G1
+— : BFD_RELOC_ARM_LDR_SB_G2
+— : BFD_RELOC_ARM_LDRS_SB_G0
+— : BFD_RELOC_ARM_LDRS_SB_G1
+— : BFD_RELOC_ARM_LDRS_SB_G2
+— : BFD_RELOC_ARM_LDC_SB_G0
+— : BFD_RELOC_ARM_LDC_SB_G1
+— : BFD_RELOC_ARM_LDC_SB_G2
+

ARM group relocations. +

+ +
+— : BFD_RELOC_ARM_V4BX
+

Annotation of BX instructions. +

+ +
+— : BFD_RELOC_ARM_IMMEDIATE
+— : BFD_RELOC_ARM_ADRL_IMMEDIATE
+— : BFD_RELOC_ARM_T32_IMMEDIATE
+— : BFD_RELOC_ARM_T32_ADD_IMM
+— : BFD_RELOC_ARM_T32_IMM12
+— : BFD_RELOC_ARM_T32_ADD_PC12
+— : BFD_RELOC_ARM_SHIFT_IMM
+— : BFD_RELOC_ARM_SMC
+— : BFD_RELOC_ARM_SWI
+— : BFD_RELOC_ARM_MULTI
+— : BFD_RELOC_ARM_CP_OFF_IMM
+— : BFD_RELOC_ARM_CP_OFF_IMM_S2
+— : BFD_RELOC_ARM_T32_CP_OFF_IMM
+— : BFD_RELOC_ARM_T32_CP_OFF_IMM_S2
+— : BFD_RELOC_ARM_ADR_IMM
+— : BFD_RELOC_ARM_LDR_IMM
+— : BFD_RELOC_ARM_LITERAL
+— : BFD_RELOC_ARM_IN_POOL
+— : BFD_RELOC_ARM_OFFSET_IMM8
+— : BFD_RELOC_ARM_T32_OFFSET_U8
+— : BFD_RELOC_ARM_T32_OFFSET_IMM
+— : BFD_RELOC_ARM_HWLITERAL
+— : BFD_RELOC_ARM_THUMB_ADD
+— : BFD_RELOC_ARM_THUMB_IMM
+— : BFD_RELOC_ARM_THUMB_SHIFT
+

These relocs are only used within the ARM assembler. They are not +(at present) written to any object files. +

+ +
+— : BFD_RELOC_SH_PCDISP8BY2
+— : BFD_RELOC_SH_PCDISP12BY2
+— : BFD_RELOC_SH_IMM3
+— : BFD_RELOC_SH_IMM3U
+— : BFD_RELOC_SH_DISP12
+— : BFD_RELOC_SH_DISP12BY2
+— : BFD_RELOC_SH_DISP12BY4
+— : BFD_RELOC_SH_DISP12BY8
+— : BFD_RELOC_SH_DISP20
+— : BFD_RELOC_SH_DISP20BY8
+— : BFD_RELOC_SH_IMM4
+— : BFD_RELOC_SH_IMM4BY2
+— : BFD_RELOC_SH_IMM4BY4
+— : BFD_RELOC_SH_IMM8
+— : BFD_RELOC_SH_IMM8BY2
+— : BFD_RELOC_SH_IMM8BY4
+— : BFD_RELOC_SH_PCRELIMM8BY2
+— : BFD_RELOC_SH_PCRELIMM8BY4
+— : BFD_RELOC_SH_SWITCH16
+— : BFD_RELOC_SH_SWITCH32
+— : BFD_RELOC_SH_USES
+— : BFD_RELOC_SH_COUNT
+— : BFD_RELOC_SH_ALIGN
+— : BFD_RELOC_SH_CODE
+— : BFD_RELOC_SH_DATA
+— : BFD_RELOC_SH_LABEL
+— : BFD_RELOC_SH_LOOP_START
+— : BFD_RELOC_SH_LOOP_END
+— : BFD_RELOC_SH_COPY
+— : BFD_RELOC_SH_GLOB_DAT
+— : BFD_RELOC_SH_JMP_SLOT
+— : BFD_RELOC_SH_RELATIVE
+— : BFD_RELOC_SH_GOTPC
+— : BFD_RELOC_SH_GOT_LOW16
+— : BFD_RELOC_SH_GOT_MEDLOW16
+— : BFD_RELOC_SH_GOT_MEDHI16
+— : BFD_RELOC_SH_GOT_HI16
+— : BFD_RELOC_SH_GOTPLT_LOW16
+— : BFD_RELOC_SH_GOTPLT_MEDLOW16
+— : BFD_RELOC_SH_GOTPLT_MEDHI16
+— : BFD_RELOC_SH_GOTPLT_HI16
+— : BFD_RELOC_SH_PLT_LOW16
+— : BFD_RELOC_SH_PLT_MEDLOW16
+— : BFD_RELOC_SH_PLT_MEDHI16
+— : BFD_RELOC_SH_PLT_HI16
+— : BFD_RELOC_SH_GOTOFF_LOW16
+— : BFD_RELOC_SH_GOTOFF_MEDLOW16
+— : BFD_RELOC_SH_GOTOFF_MEDHI16
+— : BFD_RELOC_SH_GOTOFF_HI16
+— : BFD_RELOC_SH_GOTPC_LOW16
+— : BFD_RELOC_SH_GOTPC_MEDLOW16
+— : BFD_RELOC_SH_GOTPC_MEDHI16
+— : BFD_RELOC_SH_GOTPC_HI16
+— : BFD_RELOC_SH_COPY64
+— : BFD_RELOC_SH_GLOB_DAT64
+— : BFD_RELOC_SH_JMP_SLOT64
+— : BFD_RELOC_SH_RELATIVE64
+— : BFD_RELOC_SH_GOT10BY4
+— : BFD_RELOC_SH_GOT10BY8
+— : BFD_RELOC_SH_GOTPLT10BY4
+— : BFD_RELOC_SH_GOTPLT10BY8
+— : BFD_RELOC_SH_GOTPLT32
+— : BFD_RELOC_SH_SHMEDIA_CODE
+— : BFD_RELOC_SH_IMMU5
+— : BFD_RELOC_SH_IMMS6
+— : BFD_RELOC_SH_IMMS6BY32
+— : BFD_RELOC_SH_IMMU6
+— : BFD_RELOC_SH_IMMS10
+— : BFD_RELOC_SH_IMMS10BY2
+— : BFD_RELOC_SH_IMMS10BY4
+— : BFD_RELOC_SH_IMMS10BY8
+— : BFD_RELOC_SH_IMMS16
+— : BFD_RELOC_SH_IMMU16
+— : BFD_RELOC_SH_IMM_LOW16
+— : BFD_RELOC_SH_IMM_LOW16_PCREL
+— : BFD_RELOC_SH_IMM_MEDLOW16
+— : BFD_RELOC_SH_IMM_MEDLOW16_PCREL
+— : BFD_RELOC_SH_IMM_MEDHI16
+— : BFD_RELOC_SH_IMM_MEDHI16_PCREL
+— : BFD_RELOC_SH_IMM_HI16
+— : BFD_RELOC_SH_IMM_HI16_PCREL
+— : BFD_RELOC_SH_PT_16
+— : BFD_RELOC_SH_TLS_GD_32
+— : BFD_RELOC_SH_TLS_LD_32
+— : BFD_RELOC_SH_TLS_LDO_32
+— : BFD_RELOC_SH_TLS_IE_32
+— : BFD_RELOC_SH_TLS_LE_32
+— : BFD_RELOC_SH_TLS_DTPMOD32
+— : BFD_RELOC_SH_TLS_DTPOFF32
+— : BFD_RELOC_SH_TLS_TPOFF32
+

Renesas / SuperH SH relocs. Not all of these appear in object files. +

+ +
+— : BFD_RELOC_ARC_B22_PCREL
+

ARC Cores relocs. +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are +not stored in the instruction. The high 20 bits are installed in bits 26 +through 7 of the instruction. +

+ +
+— : BFD_RELOC_ARC_B26
+

ARC 26 bit absolute branch. The lowest two bits must be zero and are not +stored in the instruction. The high 24 bits are installed in bits 23 +through 0. +

+ +
+— : BFD_RELOC_BFIN_16_IMM
+

ADI Blackfin 16 bit immediate absolute reloc. +

+ +
+— : BFD_RELOC_BFIN_16_HIGH
+

ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. +

+ +
+— : BFD_RELOC_BFIN_4_PCREL
+

ADI Blackfin 'a' part of LSETUP. +

+ +
+— : BFD_RELOC_BFIN_5_PCREL
+

ADI Blackfin. +

+ +
+— : BFD_RELOC_BFIN_16_LOW
+

ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. +

+ +
+— : BFD_RELOC_BFIN_10_PCREL
+

ADI Blackfin. +

+ +
+— : BFD_RELOC_BFIN_11_PCREL
+

ADI Blackfin 'b' part of LSETUP. +

+ +
+— : BFD_RELOC_BFIN_12_PCREL_JUMP
+

ADI Blackfin. +

+ +
+— : BFD_RELOC_BFIN_12_PCREL_JUMP_S
+

ADI Blackfin Short jump, pcrel. +

+ +
+— : BFD_RELOC_BFIN_24_PCREL_CALL_X
+

ADI Blackfin Call.x not implemented. +

+ +
+— : BFD_RELOC_BFIN_24_PCREL_JUMP_L
+

ADI Blackfin Long Jump pcrel. +

+ +
+— : BFD_RELOC_BFIN_GOT17M4
+— : BFD_RELOC_BFIN_GOTHI
+— : BFD_RELOC_BFIN_GOTLO
+— : BFD_RELOC_BFIN_FUNCDESC
+— : BFD_RELOC_BFIN_FUNCDESC_GOT17M4
+— : BFD_RELOC_BFIN_FUNCDESC_GOTHI
+— : BFD_RELOC_BFIN_FUNCDESC_GOTLO
+— : BFD_RELOC_BFIN_FUNCDESC_VALUE
+— : BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4
+— : BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI
+— : BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO
+— : BFD_RELOC_BFIN_GOTOFF17M4
+— : BFD_RELOC_BFIN_GOTOFFHI
+— : BFD_RELOC_BFIN_GOTOFFLO
+

ADI Blackfin FD-PIC relocations. +

+ +
+— : BFD_RELOC_BFIN_GOT
+

ADI Blackfin GOT relocation. +

+ +
+— : BFD_RELOC_BFIN_PLTPC
+

ADI Blackfin PLTPC relocation. +

+ +
+— : BFD_ARELOC_BFIN_PUSH
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_CONST
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_ADD
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_SUB
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_MULT
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_DIV
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_MOD
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_LSHIFT
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_RSHIFT
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_AND
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_OR
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_XOR
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_LAND
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_LOR
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_LEN
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_NEG
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_COMP
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_PAGE
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_HWPAGE
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_ARELOC_BFIN_ADDR
+

ADI Blackfin arithmetic relocation. +

+ +
+— : BFD_RELOC_D10V_10_PCREL_R
+

Mitsubishi D10V relocs. +This is a 10-bit reloc with the right 2 bits +assumed to be 0. +

+ +
+— : BFD_RELOC_D10V_10_PCREL_L
+

Mitsubishi D10V relocs. +This is a 10-bit reloc with the right 2 bits +assumed to be 0. This is the same as the previous reloc +except it is in the left container, i.e., +shifted left 15 bits. +

+ +
+— : BFD_RELOC_D10V_18
+

This is an 18-bit reloc with the right 2 bits +assumed to be 0. +

+ +
+— : BFD_RELOC_D10V_18_PCREL
+

This is an 18-bit reloc with the right 2 bits +assumed to be 0. +

+ +
+— : BFD_RELOC_D30V_6
+

Mitsubishi D30V relocs. +This is a 6-bit absolute reloc. +

+ +
+— : BFD_RELOC_D30V_9_PCREL
+

This is a 6-bit pc-relative reloc with +the right 3 bits assumed to be 0. +

+ +
+— : BFD_RELOC_D30V_9_PCREL_R
+

This is a 6-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. +

+ +
+— : BFD_RELOC_D30V_15
+

This is a 12-bit absolute reloc with the +right 3 bitsassumed to be 0. +

+ +
+— : BFD_RELOC_D30V_15_PCREL
+

This is a 12-bit pc-relative reloc with +the right 3 bits assumed to be 0. +

+ +
+— : BFD_RELOC_D30V_15_PCREL_R
+

This is a 12-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. +

+ +
+— : BFD_RELOC_D30V_21
+

This is an 18-bit absolute reloc with +the right 3 bits assumed to be 0. +

+ +
+— : BFD_RELOC_D30V_21_PCREL
+

This is an 18-bit pc-relative reloc with +the right 3 bits assumed to be 0. +

+ +
+— : BFD_RELOC_D30V_21_PCREL_R
+

This is an 18-bit pc-relative reloc with +the right 3 bits assumed to be 0. Same +as the previous reloc but on the right side +of the container. +

+ +
+— : BFD_RELOC_D30V_32
+

This is a 32-bit absolute reloc. +

+ +
+— : BFD_RELOC_D30V_32_PCREL
+

This is a 32-bit pc-relative reloc. +

+ +
+— : BFD_RELOC_DLX_HI16_S
+

DLX relocs +

+ +
+— : BFD_RELOC_DLX_LO16
+

DLX relocs +

+ +
+— : BFD_RELOC_DLX_JMP26
+

DLX relocs +

+ +
+— : BFD_RELOC_M32C_HI8
+— : BFD_RELOC_M32C_RL_JUMP
+— : BFD_RELOC_M32C_RL_1ADDR
+— : BFD_RELOC_M32C_RL_2ADDR
+

Renesas M16C/M32C Relocations. +

+ +
+— : BFD_RELOC_M32R_24
+

Renesas M32R (formerly Mitsubishi M32R) relocs. +This is a 24 bit absolute address. +

+ +
+— : BFD_RELOC_M32R_10_PCREL
+

This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. +

+ +
+— : BFD_RELOC_M32R_18_PCREL
+

This is an 18-bit reloc with the right 2 bits assumed to be 0. +

+ +
+— : BFD_RELOC_M32R_26_PCREL
+

This is a 26-bit reloc with the right 2 bits assumed to be 0. +

+ +
+— : BFD_RELOC_M32R_HI16_ULO
+

This is a 16-bit reloc containing the high 16 bits of an address +used when the lower 16 bits are treated as unsigned. +

+ +
+— : BFD_RELOC_M32R_HI16_SLO
+

This is a 16-bit reloc containing the high 16 bits of an address +used when the lower 16 bits are treated as signed. +

+ +
+— : BFD_RELOC_M32R_LO16
+

This is a 16-bit reloc containing the lower 16 bits of an address. +

+ +
+— : BFD_RELOC_M32R_SDA16
+

This is a 16-bit reloc containing the small data area offset for use in +add3, load, and store instructions. +

+ +
+— : BFD_RELOC_M32R_GOT24
+— : BFD_RELOC_M32R_26_PLTREL
+— : BFD_RELOC_M32R_COPY
+— : BFD_RELOC_M32R_GLOB_DAT
+— : BFD_RELOC_M32R_JMP_SLOT
+— : BFD_RELOC_M32R_RELATIVE
+— : BFD_RELOC_M32R_GOTOFF
+— : BFD_RELOC_M32R_GOTOFF_HI_ULO
+— : BFD_RELOC_M32R_GOTOFF_HI_SLO
+— : BFD_RELOC_M32R_GOTOFF_LO
+— : BFD_RELOC_M32R_GOTPC24
+— : BFD_RELOC_M32R_GOT16_HI_ULO
+— : BFD_RELOC_M32R_GOT16_HI_SLO
+— : BFD_RELOC_M32R_GOT16_LO
+— : BFD_RELOC_M32R_GOTPC_HI_ULO
+— : BFD_RELOC_M32R_GOTPC_HI_SLO
+— : BFD_RELOC_M32R_GOTPC_LO
+

For PIC. +

+ +
+— : BFD_RELOC_V850_9_PCREL
+

This is a 9-bit reloc +

+ +
+— : BFD_RELOC_V850_22_PCREL
+

This is a 22-bit reloc +

+ +
+— : BFD_RELOC_V850_SDA_16_16_OFFSET
+

This is a 16 bit offset from the short data area pointer. +

+ +
+— : BFD_RELOC_V850_SDA_15_16_OFFSET
+

This is a 16 bit offset (of which only 15 bits are used) from the +short data area pointer. +

+ +
+— : BFD_RELOC_V850_ZDA_16_16_OFFSET
+

This is a 16 bit offset from the zero data area pointer. +

+ +
+— : BFD_RELOC_V850_ZDA_15_16_OFFSET
+

This is a 16 bit offset (of which only 15 bits are used) from the +zero data area pointer. +

+ +
+— : BFD_RELOC_V850_TDA_6_8_OFFSET
+

This is an 8 bit offset (of which only 6 bits are used) from the +tiny data area pointer. +

+ +
+— : BFD_RELOC_V850_TDA_7_8_OFFSET
+

This is an 8bit offset (of which only 7 bits are used) from the tiny +data area pointer. +

+ +
+— : BFD_RELOC_V850_TDA_7_7_OFFSET
+

This is a 7 bit offset from the tiny data area pointer. +

+ +
+— : BFD_RELOC_V850_TDA_16_16_OFFSET
+

This is a 16 bit offset from the tiny data area pointer. +

+ +
+— : BFD_RELOC_V850_TDA_4_5_OFFSET
+

This is a 5 bit offset (of which only 4 bits are used) from the tiny +data area pointer. +

+ +
+— : BFD_RELOC_V850_TDA_4_4_OFFSET
+

This is a 4 bit offset from the tiny data area pointer. +

+ +
+— : BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET
+

This is a 16 bit offset from the short data area pointer, with the +bits placed non-contiguously in the instruction. +

+ +
+— : BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET
+

This is a 16 bit offset from the zero data area pointer, with the +bits placed non-contiguously in the instruction. +

+ +
+— : BFD_RELOC_V850_CALLT_6_7_OFFSET
+

This is a 6 bit offset from the call table base pointer. +

+ +
+— : BFD_RELOC_V850_CALLT_16_16_OFFSET
+

This is a 16 bit offset from the call table base pointer. +

+ +
+— : BFD_RELOC_V850_LONGCALL
+

Used for relaxing indirect function calls. +

+ +
+— : BFD_RELOC_V850_LONGJUMP
+

Used for relaxing indirect jumps. +

+ +
+— : BFD_RELOC_V850_ALIGN
+

Used to maintain alignment whilst relaxing. +

+ +
+— : BFD_RELOC_V850_LO16_SPLIT_OFFSET
+

This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu +instructions. +

+ +
+— : BFD_RELOC_MN10300_32_PCREL
+

This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the +instruction. +

+ +
+— : BFD_RELOC_MN10300_16_PCREL
+

This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the +instruction. +

+ +
+— : BFD_RELOC_TIC30_LDP
+

This is a 8bit DP reloc for the tms320c30, where the most +significant 8 bits of a 24 bit word are placed into the least +significant 8 bits of the opcode. +

+ +
+— : BFD_RELOC_TIC54X_PARTLS7
+

This is a 7bit reloc for the tms320c54x, where the least +significant 7 bits of a 16 bit word are placed into the least +significant 7 bits of the opcode. +

+ +
+— : BFD_RELOC_TIC54X_PARTMS9
+

This is a 9bit DP reloc for the tms320c54x, where the most +significant 9 bits of a 16 bit word are placed into the least +significant 9 bits of the opcode. +

+ +
+— : BFD_RELOC_TIC54X_23
+

This is an extended address 23-bit reloc for the tms320c54x. +

+ +
+— : BFD_RELOC_TIC54X_16_OF_23
+

This is a 16-bit reloc for the tms320c54x, where the least +significant 16 bits of a 23-bit extended address are placed into +the opcode. +

+ +
+— : BFD_RELOC_TIC54X_MS7_OF_23
+

This is a reloc for the tms320c54x, where the most +significant 7 bits of a 23-bit extended address are placed into +the opcode. +

+ +
+— : BFD_RELOC_FR30_48
+

This is a 48 bit reloc for the FR30 that stores 32 bits. +

+ +
+— : BFD_RELOC_FR30_20
+

This is a 32 bit reloc for the FR30 that stores 20 bits split up into +two sections. +

+ +
+— : BFD_RELOC_FR30_6_IN_4
+

This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in +4 bits. +

+ +
+— : BFD_RELOC_FR30_8_IN_8
+

This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset +into 8 bits. +

+ +
+— : BFD_RELOC_FR30_9_IN_8
+

This is a 16 bit reloc for the FR30 that stores a 9 bit short offset +into 8 bits. +

+ +
+— : BFD_RELOC_FR30_10_IN_8
+

This is a 16 bit reloc for the FR30 that stores a 10 bit word offset +into 8 bits. +

+ +
+— : BFD_RELOC_FR30_9_PCREL
+

This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative +short offset into 8 bits. +

+ +
+— : BFD_RELOC_FR30_12_PCREL
+

This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative +short offset into 11 bits. +

+ +
+— : BFD_RELOC_MCORE_PCREL_IMM8BY4
+— : BFD_RELOC_MCORE_PCREL_IMM11BY2
+— : BFD_RELOC_MCORE_PCREL_IMM4BY2
+— : BFD_RELOC_MCORE_PCREL_32
+— : BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2
+— : BFD_RELOC_MCORE_RVA
+

Motorola Mcore relocations. +

+ +
+— : BFD_RELOC_MEP_8
+— : BFD_RELOC_MEP_16
+— : BFD_RELOC_MEP_32
+— : BFD_RELOC_MEP_PCREL8A2
+— : BFD_RELOC_MEP_PCREL12A2
+— : BFD_RELOC_MEP_PCREL17A2
+— : BFD_RELOC_MEP_PCREL24A2
+— : BFD_RELOC_MEP_PCABS24A2
+— : BFD_RELOC_MEP_LOW16
+— : BFD_RELOC_MEP_HI16U
+— : BFD_RELOC_MEP_HI16S
+— : BFD_RELOC_MEP_GPREL
+— : BFD_RELOC_MEP_TPREL
+— : BFD_RELOC_MEP_TPREL7
+— : BFD_RELOC_MEP_TPREL7A2
+— : BFD_RELOC_MEP_TPREL7A4
+— : BFD_RELOC_MEP_UIMM24
+— : BFD_RELOC_MEP_ADDR24A4
+— : BFD_RELOC_MEP_GNU_VTINHERIT
+— : BFD_RELOC_MEP_GNU_VTENTRY
+

Toshiba Media Processor Relocations. +

+ +
+— : BFD_RELOC_MMIX_GETA
+— : BFD_RELOC_MMIX_GETA_1
+— : BFD_RELOC_MMIX_GETA_2
+— : BFD_RELOC_MMIX_GETA_3
+

These are relocations for the GETA instruction. +

+ +
+— : BFD_RELOC_MMIX_CBRANCH
+— : BFD_RELOC_MMIX_CBRANCH_J
+— : BFD_RELOC_MMIX_CBRANCH_1
+— : BFD_RELOC_MMIX_CBRANCH_2
+— : BFD_RELOC_MMIX_CBRANCH_3
+

These are relocations for a conditional branch instruction. +

+ +
+— : BFD_RELOC_MMIX_PUSHJ
+— : BFD_RELOC_MMIX_PUSHJ_1
+— : BFD_RELOC_MMIX_PUSHJ_2
+— : BFD_RELOC_MMIX_PUSHJ_3
+— : BFD_RELOC_MMIX_PUSHJ_STUBBABLE
+

These are relocations for the PUSHJ instruction. +

+ +
+— : BFD_RELOC_MMIX_JMP
+— : BFD_RELOC_MMIX_JMP_1
+— : BFD_RELOC_MMIX_JMP_2
+— : BFD_RELOC_MMIX_JMP_3
+

These are relocations for the JMP instruction. +

+ +
+— : BFD_RELOC_MMIX_ADDR19
+

This is a relocation for a relative address as in a GETA instruction or +a branch. +

+ +
+— : BFD_RELOC_MMIX_ADDR27
+

This is a relocation for a relative address as in a JMP instruction. +

+ +
+— : BFD_RELOC_MMIX_REG_OR_BYTE
+

This is a relocation for an instruction field that may be a general +register or a value 0..255. +

+ +
+— : BFD_RELOC_MMIX_REG
+

This is a relocation for an instruction field that may be a general +register. +

+ +
+— : BFD_RELOC_MMIX_BASE_PLUS_OFFSET
+

This is a relocation for two instruction fields holding a register and +an offset, the equivalent of the relocation. +

+ +
+— : BFD_RELOC_MMIX_LOCAL
+

This relocation is an assertion that the expression is not allocated as +a global register. It does not modify contents. +

+ +
+— : BFD_RELOC_AVR_7_PCREL
+

This is a 16 bit reloc for the AVR that stores 8 bit pc relative +short offset into 7 bits. +

+ +
+— : BFD_RELOC_AVR_13_PCREL
+

This is a 16 bit reloc for the AVR that stores 13 bit pc relative +short offset into 12 bits. +

+ +
+— : BFD_RELOC_AVR_16_PM
+

This is a 16 bit reloc for the AVR that stores 17 bit value (usually +program memory address) into 16 bits. +

+ +
+— : BFD_RELOC_AVR_LO8_LDI
+

This is a 16 bit reloc for the AVR that stores 8 bit value (usually +data memory address) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_HI8_LDI
+

This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of data memory address) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_HH8_LDI
+

This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of program memory address) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_MS8_LDI
+

This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of 32 bit value) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_LO8_LDI_NEG
+

This is a 16 bit reloc for the AVR that stores negated 8 bit value +(usually data memory address) into 8 bit immediate value of SUBI insn. +

+ +
+— : BFD_RELOC_AVR_HI8_LDI_NEG
+

This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 8 bit of data memory address) into 8 bit immediate value of +SUBI insn. +

+ +
+— : BFD_RELOC_AVR_HH8_LDI_NEG
+

This is a 16 bit reloc for the AVR that stores negated 8 bit value +(most high 8 bit of program memory address) into 8 bit immediate value +of LDI or SUBI insn. +

+ +
+— : BFD_RELOC_AVR_MS8_LDI_NEG
+

This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb +of 32 bit value) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_LO8_LDI_PM
+

This is a 16 bit reloc for the AVR that stores 8 bit value (usually +command address) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_LO8_LDI_GS
+

This is a 16 bit reloc for the AVR that stores 8 bit value +(command address) into 8 bit immediate value of LDI insn. If the address +is beyond the 128k boundary, the linker inserts a jump stub for this reloc +in the lower 128k. +

+ +
+— : BFD_RELOC_AVR_HI8_LDI_PM
+

This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of command address) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_HI8_LDI_GS
+

This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit +of command address) into 8 bit immediate value of LDI insn. If the address +is beyond the 128k boundary, the linker inserts a jump stub for this reloc +below 128k. +

+ +
+— : BFD_RELOC_AVR_HH8_LDI_PM
+

This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit +of command address) into 8 bit immediate value of LDI insn. +

+ +
+— : BFD_RELOC_AVR_LO8_LDI_PM_NEG
+

This is a 16 bit reloc for the AVR that stores negated 8 bit value +(usually command address) into 8 bit immediate value of SUBI insn. +

+ +
+— : BFD_RELOC_AVR_HI8_LDI_PM_NEG
+

This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 8 bit of 16 bit command address) into 8 bit immediate value +of SUBI insn. +

+ +
+— : BFD_RELOC_AVR_HH8_LDI_PM_NEG
+

This is a 16 bit reloc for the AVR that stores negated 8 bit value +(high 6 bit of 22 bit command address) into 8 bit immediate +value of SUBI insn. +

+ +
+— : BFD_RELOC_AVR_CALL
+

This is a 32 bit reloc for the AVR that stores 23 bit value +into 22 bits. +

+ +
+— : BFD_RELOC_AVR_LDI
+

This is a 16 bit reloc for the AVR that stores all needed bits +for absolute addressing with ldi with overflow check to linktime +

+ +
+— : BFD_RELOC_AVR_6
+

This is a 6 bit reloc for the AVR that stores offset for ldd/std +instructions +

+ +
+— : BFD_RELOC_AVR_6_ADIW
+

This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw +instructions +

+ +
+— : BFD_RELOC_390_12
+

Direct 12 bit. +

+ +
+— : BFD_RELOC_390_GOT12
+

12 bit GOT offset. +

+ +
+— : BFD_RELOC_390_PLT32
+

32 bit PC relative PLT address. +

+ +
+— : BFD_RELOC_390_COPY
+

Copy symbol at runtime. +

+ +
+— : BFD_RELOC_390_GLOB_DAT
+

Create GOT entry. +

+ +
+— : BFD_RELOC_390_JMP_SLOT
+

Create PLT entry. +

+ +
+— : BFD_RELOC_390_RELATIVE
+

Adjust by program base. +

+ +
+— : BFD_RELOC_390_GOTPC
+

32 bit PC relative offset to GOT. +

+ +
+— : BFD_RELOC_390_GOT16
+

16 bit GOT offset. +

+ +
+— : BFD_RELOC_390_PC16DBL
+

PC relative 16 bit shifted by 1. +

+ +
+— : BFD_RELOC_390_PLT16DBL
+

16 bit PC rel. PLT shifted by 1. +

+ +
+— : BFD_RELOC_390_PC32DBL
+

PC relative 32 bit shifted by 1. +

+ +
+— : BFD_RELOC_390_PLT32DBL
+

32 bit PC rel. PLT shifted by 1. +

+ +
+— : BFD_RELOC_390_GOTPCDBL
+

32 bit PC rel. GOT shifted by 1. +

+ +
+— : BFD_RELOC_390_GOT64
+

64 bit GOT offset. +

+ +
+— : BFD_RELOC_390_PLT64
+

64 bit PC relative PLT address. +

+ +
+— : BFD_RELOC_390_GOTENT
+

32 bit rel. offset to GOT entry. +

+ +
+— : BFD_RELOC_390_GOTOFF64
+

64 bit offset to GOT. +

+ +
+— : BFD_RELOC_390_GOTPLT12
+

12-bit offset to symbol-entry within GOT, with PLT handling. +

+ +
+— : BFD_RELOC_390_GOTPLT16
+

16-bit offset to symbol-entry within GOT, with PLT handling. +

+ +
+— : BFD_RELOC_390_GOTPLT32
+

32-bit offset to symbol-entry within GOT, with PLT handling. +

+ +
+— : BFD_RELOC_390_GOTPLT64
+

64-bit offset to symbol-entry within GOT, with PLT handling. +

+ +
+— : BFD_RELOC_390_GOTPLTENT
+

32-bit rel. offset to symbol-entry within GOT, with PLT handling. +

+ +
+— : BFD_RELOC_390_PLTOFF16
+

16-bit rel. offset from the GOT to a PLT entry. +

+ +
+— : BFD_RELOC_390_PLTOFF32
+

32-bit rel. offset from the GOT to a PLT entry. +

+ +
+— : BFD_RELOC_390_PLTOFF64
+

64-bit rel. offset from the GOT to a PLT entry. +

+ +
+— : BFD_RELOC_390_TLS_LOAD
+— : BFD_RELOC_390_TLS_GDCALL
+— : BFD_RELOC_390_TLS_LDCALL
+— : BFD_RELOC_390_TLS_GD32
+— : BFD_RELOC_390_TLS_GD64
+— : BFD_RELOC_390_TLS_GOTIE12
+— : BFD_RELOC_390_TLS_GOTIE32
+— : BFD_RELOC_390_TLS_GOTIE64
+— : BFD_RELOC_390_TLS_LDM32
+— : BFD_RELOC_390_TLS_LDM64
+— : BFD_RELOC_390_TLS_IE32
+— : BFD_RELOC_390_TLS_IE64
+— : BFD_RELOC_390_TLS_IEENT
+— : BFD_RELOC_390_TLS_LE32
+— : BFD_RELOC_390_TLS_LE64
+— : BFD_RELOC_390_TLS_LDO32
+— : BFD_RELOC_390_TLS_LDO64
+— : BFD_RELOC_390_TLS_DTPMOD
+— : BFD_RELOC_390_TLS_DTPOFF
+— : BFD_RELOC_390_TLS_TPOFF
+

s390 tls relocations. +

+ +
+— : BFD_RELOC_390_20
+— : BFD_RELOC_390_GOT20
+— : BFD_RELOC_390_GOTPLT20
+— : BFD_RELOC_390_TLS_GOTIE20
+

Long displacement extension. +

+ +
+— : BFD_RELOC_SCORE_DUMMY1
+

Score relocations +

+ +
+— : BFD_RELOC_SCORE_GPREL15
+

Low 16 bit for load/store +

+ +
+— : BFD_RELOC_SCORE_DUMMY2
+— : BFD_RELOC_SCORE_JMP
+

This is a 24-bit reloc with the right 1 bit assumed to be 0 +

+ +
+— : BFD_RELOC_SCORE_BRANCH
+

This is a 19-bit reloc with the right 1 bit assumed to be 0 +

+ +
+— : BFD_RELOC_SCORE16_JMP
+

This is a 11-bit reloc with the right 1 bit assumed to be 0 +

+ +
+— : BFD_RELOC_SCORE16_BRANCH
+

This is a 8-bit reloc with the right 1 bit assumed to be 0 +

+ +
+— : BFD_RELOC_SCORE_GOT15
+— : BFD_RELOC_SCORE_GOT_LO16
+— : BFD_RELOC_SCORE_CALL15
+— : BFD_RELOC_SCORE_DUMMY_HI16
+

Undocumented Score relocs +

+ +
+— : BFD_RELOC_IP2K_FR9
+

Scenix IP2K - 9-bit register number / data address +

+ +
+— : BFD_RELOC_IP2K_BANK
+

Scenix IP2K - 4-bit register/data bank number +

+ +
+— : BFD_RELOC_IP2K_ADDR16CJP
+

Scenix IP2K - low 13 bits of instruction word address +

+ +
+— : BFD_RELOC_IP2K_PAGE3
+

Scenix IP2K - high 3 bits of instruction word address +

+ +
+— : BFD_RELOC_IP2K_LO8DATA
+— : BFD_RELOC_IP2K_HI8DATA
+— : BFD_RELOC_IP2K_EX8DATA
+

Scenix IP2K - ext/low/high 8 bits of data address +

+ +
+— : BFD_RELOC_IP2K_LO8INSN
+— : BFD_RELOC_IP2K_HI8INSN
+

Scenix IP2K - low/high 8 bits of instruction word address +

+ +
+— : BFD_RELOC_IP2K_PC_SKIP
+

Scenix IP2K - even/odd PC modifier to modify snb pcl.0 +

+ +
+— : BFD_RELOC_IP2K_TEXT
+

Scenix IP2K - 16 bit word address in text section. +

+ +
+— : BFD_RELOC_IP2K_FR_OFFSET
+

Scenix IP2K - 7-bit sp or dp offset +

+ +
+— : BFD_RELOC_VPE4KMATH_DATA
+— : BFD_RELOC_VPE4KMATH_INSN
+

Scenix VPE4K coprocessor - data/insn-space addressing +

+ +
+— : BFD_RELOC_VTABLE_INHERIT
+— : BFD_RELOC_VTABLE_ENTRY
+

These two relocations are used by the linker to determine which of +the entries in a C++ virtual function table are actually used. When +the –gc-sections option is given, the linker will zero out the entries +that are not used, so that the code for those functions need not be +included in the output. + +

VTABLE_INHERIT is a zero-space relocation used to describe to the +linker the inheritance tree of a C++ virtual function table. The +relocation's symbol should be the parent class' vtable, and the +relocation should be located at the child vtable. + +

VTABLE_ENTRY is a zero-space relocation that describes the use of a +virtual function table entry. The reloc's symbol should refer to the +table of the class mentioned in the code. Off of that base, an offset +describes the entry that is being used. For Rela hosts, this offset +is stored in the reloc's addend. For Rel hosts, we are forced to put +this offset in the reloc's section offset. +

+ +
+— : BFD_RELOC_IA64_IMM14
+— : BFD_RELOC_IA64_IMM22
+— : BFD_RELOC_IA64_IMM64
+— : BFD_RELOC_IA64_DIR32MSB
+— : BFD_RELOC_IA64_DIR32LSB
+— : BFD_RELOC_IA64_DIR64MSB
+— : BFD_RELOC_IA64_DIR64LSB
+— : BFD_RELOC_IA64_GPREL22
+— : BFD_RELOC_IA64_GPREL64I
+— : BFD_RELOC_IA64_GPREL32MSB
+— : BFD_RELOC_IA64_GPREL32LSB
+— : BFD_RELOC_IA64_GPREL64MSB
+— : BFD_RELOC_IA64_GPREL64LSB
+— : BFD_RELOC_IA64_LTOFF22
+— : BFD_RELOC_IA64_LTOFF64I
+— : BFD_RELOC_IA64_PLTOFF22
+— : BFD_RELOC_IA64_PLTOFF64I
+— : BFD_RELOC_IA64_PLTOFF64MSB
+— : BFD_RELOC_IA64_PLTOFF64LSB
+— : BFD_RELOC_IA64_FPTR64I
+— : BFD_RELOC_IA64_FPTR32MSB
+— : BFD_RELOC_IA64_FPTR32LSB
+— : BFD_RELOC_IA64_FPTR64MSB
+— : BFD_RELOC_IA64_FPTR64LSB
+— : BFD_RELOC_IA64_PCREL21B
+— : BFD_RELOC_IA64_PCREL21BI
+— : BFD_RELOC_IA64_PCREL21M
+— : BFD_RELOC_IA64_PCREL21F
+— : BFD_RELOC_IA64_PCREL22
+— : BFD_RELOC_IA64_PCREL60B
+— : BFD_RELOC_IA64_PCREL64I
+— : BFD_RELOC_IA64_PCREL32MSB
+— : BFD_RELOC_IA64_PCREL32LSB
+— : BFD_RELOC_IA64_PCREL64MSB
+— : BFD_RELOC_IA64_PCREL64LSB
+— : BFD_RELOC_IA64_LTOFF_FPTR22
+— : BFD_RELOC_IA64_LTOFF_FPTR64I
+— : BFD_RELOC_IA64_LTOFF_FPTR32MSB
+— : BFD_RELOC_IA64_LTOFF_FPTR32LSB
+— : BFD_RELOC_IA64_LTOFF_FPTR64MSB
+— : BFD_RELOC_IA64_LTOFF_FPTR64LSB
+— : BFD_RELOC_IA64_SEGREL32MSB
+— : BFD_RELOC_IA64_SEGREL32LSB
+— : BFD_RELOC_IA64_SEGREL64MSB
+— : BFD_RELOC_IA64_SEGREL64LSB
+— : BFD_RELOC_IA64_SECREL32MSB
+— : BFD_RELOC_IA64_SECREL32LSB
+— : BFD_RELOC_IA64_SECREL64MSB
+— : BFD_RELOC_IA64_SECREL64LSB
+— : BFD_RELOC_IA64_REL32MSB
+— : BFD_RELOC_IA64_REL32LSB
+— : BFD_RELOC_IA64_REL64MSB
+— : BFD_RELOC_IA64_REL64LSB
+— : BFD_RELOC_IA64_LTV32MSB
+— : BFD_RELOC_IA64_LTV32LSB
+— : BFD_RELOC_IA64_LTV64MSB
+— : BFD_RELOC_IA64_LTV64LSB
+— : BFD_RELOC_IA64_IPLTMSB
+— : BFD_RELOC_IA64_IPLTLSB
+— : BFD_RELOC_IA64_COPY
+— : BFD_RELOC_IA64_LTOFF22X
+— : BFD_RELOC_IA64_LDXMOV
+— : BFD_RELOC_IA64_TPREL14
+— : BFD_RELOC_IA64_TPREL22
+— : BFD_RELOC_IA64_TPREL64I
+— : BFD_RELOC_IA64_TPREL64MSB
+— : BFD_RELOC_IA64_TPREL64LSB
+— : BFD_RELOC_IA64_LTOFF_TPREL22
+— : BFD_RELOC_IA64_DTPMOD64MSB
+— : BFD_RELOC_IA64_DTPMOD64LSB
+— : BFD_RELOC_IA64_LTOFF_DTPMOD22
+— : BFD_RELOC_IA64_DTPREL14
+— : BFD_RELOC_IA64_DTPREL22
+— : BFD_RELOC_IA64_DTPREL64I
+— : BFD_RELOC_IA64_DTPREL32MSB
+— : BFD_RELOC_IA64_DTPREL32LSB
+— : BFD_RELOC_IA64_DTPREL64MSB
+— : BFD_RELOC_IA64_DTPREL64LSB
+— : BFD_RELOC_IA64_LTOFF_DTPREL22
+

Intel IA64 Relocations. +

+ +
+— : BFD_RELOC_M68HC11_HI8
+

Motorola 68HC11 reloc. +This is the 8 bit high part of an absolute address. +

+ +
+— : BFD_RELOC_M68HC11_LO8
+

Motorola 68HC11 reloc. +This is the 8 bit low part of an absolute address. +

+ +
+— : BFD_RELOC_M68HC11_3B
+

Motorola 68HC11 reloc. +This is the 3 bit of a value. +

+ +
+— : BFD_RELOC_M68HC11_RL_JUMP
+

Motorola 68HC11 reloc. +This reloc marks the beginning of a jump/call instruction. +It is used for linker relaxation to correctly identify beginning +of instruction and change some branches to use PC-relative +addressing mode. +

+ +
+— : BFD_RELOC_M68HC11_RL_GROUP
+

Motorola 68HC11 reloc. +This reloc marks a group of several instructions that gcc generates +and for which the linker relaxation pass can modify and/or remove +some of them. +

+ +
+— : BFD_RELOC_M68HC11_LO16
+

Motorola 68HC11 reloc. +This is the 16-bit lower part of an address. It is used for 'call' +instruction to specify the symbol address without any special +transformation (due to memory bank window). +

+ +
+— : BFD_RELOC_M68HC11_PAGE
+

Motorola 68HC11 reloc. +This is a 8-bit reloc that specifies the page number of an address. +It is used by 'call' instruction to specify the page number of +the symbol. +

+ +
+— : BFD_RELOC_M68HC11_24
+

Motorola 68HC11 reloc. +This is a 24-bit reloc that represents the address with a 16-bit +value and a 8-bit page number. The symbol address is transformed +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). +

+ +
+— : BFD_RELOC_M68HC12_5B
+

Motorola 68HC12 reloc. +This is the 5 bits of a value. +

+ +
+— : BFD_RELOC_16C_NUM08
+— : BFD_RELOC_16C_NUM08_C
+— : BFD_RELOC_16C_NUM16
+— : BFD_RELOC_16C_NUM16_C
+— : BFD_RELOC_16C_NUM32
+— : BFD_RELOC_16C_NUM32_C
+— : BFD_RELOC_16C_DISP04
+— : BFD_RELOC_16C_DISP04_C
+— : BFD_RELOC_16C_DISP08
+— : BFD_RELOC_16C_DISP08_C
+— : BFD_RELOC_16C_DISP16
+— : BFD_RELOC_16C_DISP16_C
+— : BFD_RELOC_16C_DISP24
+— : BFD_RELOC_16C_DISP24_C
+— : BFD_RELOC_16C_DISP24a
+— : BFD_RELOC_16C_DISP24a_C
+— : BFD_RELOC_16C_REG04
+— : BFD_RELOC_16C_REG04_C
+— : BFD_RELOC_16C_REG04a
+— : BFD_RELOC_16C_REG04a_C
+— : BFD_RELOC_16C_REG14
+— : BFD_RELOC_16C_REG14_C
+— : BFD_RELOC_16C_REG16
+— : BFD_RELOC_16C_REG16_C
+— : BFD_RELOC_16C_REG20
+— : BFD_RELOC_16C_REG20_C
+— : BFD_RELOC_16C_ABS20
+— : BFD_RELOC_16C_ABS20_C
+— : BFD_RELOC_16C_ABS24
+— : BFD_RELOC_16C_ABS24_C
+— : BFD_RELOC_16C_IMM04
+— : BFD_RELOC_16C_IMM04_C
+— : BFD_RELOC_16C_IMM16
+— : BFD_RELOC_16C_IMM16_C
+— : BFD_RELOC_16C_IMM20
+— : BFD_RELOC_16C_IMM20_C
+— : BFD_RELOC_16C_IMM24
+— : BFD_RELOC_16C_IMM24_C
+— : BFD_RELOC_16C_IMM32
+— : BFD_RELOC_16C_IMM32_C
+

NS CR16C Relocations. +

+ +
+— : BFD_RELOC_CR16_NUM8
+— : BFD_RELOC_CR16_NUM16
+— : BFD_RELOC_CR16_NUM32
+— : BFD_RELOC_CR16_NUM32a
+— : BFD_RELOC_CR16_REGREL0
+— : BFD_RELOC_CR16_REGREL4
+— : BFD_RELOC_CR16_REGREL4a
+— : BFD_RELOC_CR16_REGREL14
+— : BFD_RELOC_CR16_REGREL14a
+— : BFD_RELOC_CR16_REGREL16
+— : BFD_RELOC_CR16_REGREL20
+— : BFD_RELOC_CR16_REGREL20a
+— : BFD_RELOC_CR16_ABS20
+— : BFD_RELOC_CR16_ABS24
+— : BFD_RELOC_CR16_IMM4
+— : BFD_RELOC_CR16_IMM8
+— : BFD_RELOC_CR16_IMM16
+— : BFD_RELOC_CR16_IMM20
+— : BFD_RELOC_CR16_IMM24
+— : BFD_RELOC_CR16_IMM32
+— : BFD_RELOC_CR16_IMM32a
+— : BFD_RELOC_CR16_DISP4
+— : BFD_RELOC_CR16_DISP8
+— : BFD_RELOC_CR16_DISP16
+— : BFD_RELOC_CR16_DISP20
+— : BFD_RELOC_CR16_DISP24
+— : BFD_RELOC_CR16_DISP24a
+— : BFD_RELOC_CR16_SWITCH8
+— : BFD_RELOC_CR16_SWITCH16
+— : BFD_RELOC_CR16_SWITCH32
+

NS CR16 Relocations. +

+ +
+— : BFD_RELOC_CRX_REL4
+— : BFD_RELOC_CRX_REL8
+— : BFD_RELOC_CRX_REL8_CMP
+— : BFD_RELOC_CRX_REL16
+— : BFD_RELOC_CRX_REL24
+— : BFD_RELOC_CRX_REL32
+— : BFD_RELOC_CRX_REGREL12
+— : BFD_RELOC_CRX_REGREL22
+— : BFD_RELOC_CRX_REGREL28
+— : BFD_RELOC_CRX_REGREL32
+— : BFD_RELOC_CRX_ABS16
+— : BFD_RELOC_CRX_ABS32
+— : BFD_RELOC_CRX_NUM8
+— : BFD_RELOC_CRX_NUM16
+— : BFD_RELOC_CRX_NUM32
+— : BFD_RELOC_CRX_IMM16
+— : BFD_RELOC_CRX_IMM32
+— : BFD_RELOC_CRX_SWITCH8
+— : BFD_RELOC_CRX_SWITCH16
+— : BFD_RELOC_CRX_SWITCH32
+

NS CRX Relocations. +

+ +
+— : BFD_RELOC_CRIS_BDISP8
+— : BFD_RELOC_CRIS_UNSIGNED_5
+— : BFD_RELOC_CRIS_SIGNED_6
+— : BFD_RELOC_CRIS_UNSIGNED_6
+— : BFD_RELOC_CRIS_SIGNED_8
+— : BFD_RELOC_CRIS_UNSIGNED_8
+— : BFD_RELOC_CRIS_SIGNED_16
+— : BFD_RELOC_CRIS_UNSIGNED_16
+— : BFD_RELOC_CRIS_LAPCQ_OFFSET
+— : BFD_RELOC_CRIS_UNSIGNED_4
+

These relocs are only used within the CRIS assembler. They are not +(at present) written to any object files. +

+ +
+— : BFD_RELOC_CRIS_COPY
+— : BFD_RELOC_CRIS_GLOB_DAT
+— : BFD_RELOC_CRIS_JUMP_SLOT
+— : BFD_RELOC_CRIS_RELATIVE
+

Relocs used in ELF shared libraries for CRIS. +

+ +
+— : BFD_RELOC_CRIS_32_GOT
+

32-bit offset to symbol-entry within GOT. +

+ +
+— : BFD_RELOC_CRIS_16_GOT
+

16-bit offset to symbol-entry within GOT. +

+ +
+— : BFD_RELOC_CRIS_32_GOTPLT
+

32-bit offset to symbol-entry within GOT, with PLT handling. +

+ +
+— : BFD_RELOC_CRIS_16_GOTPLT
+

16-bit offset to symbol-entry within GOT, with PLT handling. +

+ +
+— : BFD_RELOC_CRIS_32_GOTREL
+

32-bit offset to symbol, relative to GOT. +

+ +
+— : BFD_RELOC_CRIS_32_PLT_GOTREL
+

32-bit offset to symbol with PLT entry, relative to GOT. +

+ +
+— : BFD_RELOC_CRIS_32_PLT_PCREL
+

32-bit offset to symbol with PLT entry, relative to this relocation. +

+ +
+— : BFD_RELOC_860_COPY
+— : BFD_RELOC_860_GLOB_DAT
+— : BFD_RELOC_860_JUMP_SLOT
+— : BFD_RELOC_860_RELATIVE
+— : BFD_RELOC_860_PC26
+— : BFD_RELOC_860_PLT26
+— : BFD_RELOC_860_PC16
+— : BFD_RELOC_860_LOW0
+— : BFD_RELOC_860_SPLIT0
+— : BFD_RELOC_860_LOW1
+— : BFD_RELOC_860_SPLIT1
+— : BFD_RELOC_860_LOW2
+— : BFD_RELOC_860_SPLIT2
+— : BFD_RELOC_860_LOW3
+— : BFD_RELOC_860_LOGOT0
+— : BFD_RELOC_860_SPGOT0
+— : BFD_RELOC_860_LOGOT1
+— : BFD_RELOC_860_SPGOT1
+— : BFD_RELOC_860_LOGOTOFF0
+— : BFD_RELOC_860_SPGOTOFF0
+— : BFD_RELOC_860_LOGOTOFF1
+— : BFD_RELOC_860_SPGOTOFF1
+— : BFD_RELOC_860_LOGOTOFF2
+— : BFD_RELOC_860_LOGOTOFF3
+— : BFD_RELOC_860_LOPC
+— : BFD_RELOC_860_HIGHADJ
+— : BFD_RELOC_860_HAGOT
+— : BFD_RELOC_860_HAGOTOFF
+— : BFD_RELOC_860_HAPC
+— : BFD_RELOC_860_HIGH
+— : BFD_RELOC_860_HIGOT
+— : BFD_RELOC_860_HIGOTOFF
+

Intel i860 Relocations. +

+ +
+— : BFD_RELOC_OPENRISC_ABS_26
+— : BFD_RELOC_OPENRISC_REL_26
+

OpenRISC Relocations. +

+ +
+— : BFD_RELOC_H8_DIR16A8
+— : BFD_RELOC_H8_DIR16R8
+— : BFD_RELOC_H8_DIR24A8
+— : BFD_RELOC_H8_DIR24R8
+— : BFD_RELOC_H8_DIR32A16
+

H8 elf Relocations. +

+ +
+— : BFD_RELOC_XSTORMY16_REL_12
+— : BFD_RELOC_XSTORMY16_12
+— : BFD_RELOC_XSTORMY16_24
+— : BFD_RELOC_XSTORMY16_FPTR16
+

Sony Xstormy16 Relocations. +

+ +
+— : BFD_RELOC_RELC
+

Self-describing complex relocations. +

+ +
+— : BFD_RELOC_XC16X_PAG
+— : BFD_RELOC_XC16X_POF
+— : BFD_RELOC_XC16X_SEG
+— : BFD_RELOC_XC16X_SOF
+

Infineon Relocations. +

+ +
+— : BFD_RELOC_VAX_GLOB_DAT
+— : BFD_RELOC_VAX_JMP_SLOT
+— : BFD_RELOC_VAX_RELATIVE
+

Relocations used by VAX ELF. +

+ +
+— : BFD_RELOC_MT_PC16
+

Morpho MT - 16 bit immediate relocation. +

+ +
+— : BFD_RELOC_MT_HI16
+

Morpho MT - Hi 16 bits of an address. +

+ +
+— : BFD_RELOC_MT_LO16
+

Morpho MT - Low 16 bits of an address. +

+ +
+— : BFD_RELOC_MT_GNU_VTINHERIT
+

Morpho MT - Used to tell the linker which vtable entries are used. +

+ +
+— : BFD_RELOC_MT_GNU_VTENTRY
+

Morpho MT - Used to tell the linker which vtable entries are used. +

+ +
+— : BFD_RELOC_MT_PCINSN8
+

Morpho MT - 8 bit immediate relocation. +

+ +
+— : BFD_RELOC_MSP430_10_PCREL
+— : BFD_RELOC_MSP430_16_PCREL
+— : BFD_RELOC_MSP430_16
+— : BFD_RELOC_MSP430_16_PCREL_BYTE
+— : BFD_RELOC_MSP430_16_BYTE
+— : BFD_RELOC_MSP430_2X_PCREL
+— : BFD_RELOC_MSP430_RL_PCREL
+

msp430 specific relocation codes +

+ +
+— : BFD_RELOC_IQ2000_OFFSET_16
+— : BFD_RELOC_IQ2000_OFFSET_21
+— : BFD_RELOC_IQ2000_UHI16
+

IQ2000 Relocations. +

+ +
+— : BFD_RELOC_XTENSA_RTLD
+

Special Xtensa relocation used only by PLT entries in ELF shared +objects to indicate that the runtime linker should set the value +to one of its own internal functions or data structures. +

+ +
+— : BFD_RELOC_XTENSA_GLOB_DAT
+— : BFD_RELOC_XTENSA_JMP_SLOT
+— : BFD_RELOC_XTENSA_RELATIVE
+

Xtensa relocations for ELF shared objects. +

+ +
+— : BFD_RELOC_XTENSA_PLT
+

Xtensa relocation used in ELF object files for symbols that may require +PLT entries. Otherwise, this is just a generic 32-bit relocation. +

+ +
+— : BFD_RELOC_XTENSA_DIFF8
+— : BFD_RELOC_XTENSA_DIFF16
+— : BFD_RELOC_XTENSA_DIFF32
+

Xtensa relocations to mark the difference of two local symbols. +These are only needed to support linker relaxation and can be ignored +when not relaxing. The field is set to the value of the difference +assuming no relaxation. The relocation encodes the position of the +first symbol so the linker can determine whether to adjust the field +value. +

+ +
+— : BFD_RELOC_XTENSA_SLOT0_OP
+— : BFD_RELOC_XTENSA_SLOT1_OP
+— : BFD_RELOC_XTENSA_SLOT2_OP
+— : BFD_RELOC_XTENSA_SLOT3_OP
+— : BFD_RELOC_XTENSA_SLOT4_OP
+— : BFD_RELOC_XTENSA_SLOT5_OP
+— : BFD_RELOC_XTENSA_SLOT6_OP
+— : BFD_RELOC_XTENSA_SLOT7_OP
+— : BFD_RELOC_XTENSA_SLOT8_OP
+— : BFD_RELOC_XTENSA_SLOT9_OP
+— : BFD_RELOC_XTENSA_SLOT10_OP
+— : BFD_RELOC_XTENSA_SLOT11_OP
+— : BFD_RELOC_XTENSA_SLOT12_OP
+— : BFD_RELOC_XTENSA_SLOT13_OP
+— : BFD_RELOC_XTENSA_SLOT14_OP
+

Generic Xtensa relocations for instruction operands. Only the slot +number is encoded in the relocation. The relocation applies to the +last PC-relative immediate operand, or if there are no PC-relative +immediates, to the last immediate operand. +

+ +
+— : BFD_RELOC_XTENSA_SLOT0_ALT
+— : BFD_RELOC_XTENSA_SLOT1_ALT
+— : BFD_RELOC_XTENSA_SLOT2_ALT
+— : BFD_RELOC_XTENSA_SLOT3_ALT
+— : BFD_RELOC_XTENSA_SLOT4_ALT
+— : BFD_RELOC_XTENSA_SLOT5_ALT
+— : BFD_RELOC_XTENSA_SLOT6_ALT
+— : BFD_RELOC_XTENSA_SLOT7_ALT
+— : BFD_RELOC_XTENSA_SLOT8_ALT
+— : BFD_RELOC_XTENSA_SLOT9_ALT
+— : BFD_RELOC_XTENSA_SLOT10_ALT
+— : BFD_RELOC_XTENSA_SLOT11_ALT
+— : BFD_RELOC_XTENSA_SLOT12_ALT
+— : BFD_RELOC_XTENSA_SLOT13_ALT
+— : BFD_RELOC_XTENSA_SLOT14_ALT
+

Alternate Xtensa relocations. Only the slot is encoded in the +relocation. The meaning of these relocations is opcode-specific. +

+ +
+— : BFD_RELOC_XTENSA_OP0
+— : BFD_RELOC_XTENSA_OP1
+— : BFD_RELOC_XTENSA_OP2
+

Xtensa relocations for backward compatibility. These have all been +replaced by BFD_RELOC_XTENSA_SLOT0_OP. +

+ +
+— : BFD_RELOC_XTENSA_ASM_EXPAND
+

Xtensa relocation to mark that the assembler expanded the +instructions from an original target. The expansion size is +encoded in the reloc size. +

+ +
+— : BFD_RELOC_XTENSA_ASM_SIMPLIFY
+

Xtensa relocation to mark that the linker should simplify +assembler-expanded instructions. This is commonly used +internally by the linker after analysis of a +BFD_RELOC_XTENSA_ASM_EXPAND. +

+ +
+— : BFD_RELOC_XTENSA_TLSDESC_FN
+— : BFD_RELOC_XTENSA_TLSDESC_ARG
+— : BFD_RELOC_XTENSA_TLS_DTPOFF
+— : BFD_RELOC_XTENSA_TLS_TPOFF
+— : BFD_RELOC_XTENSA_TLS_FUNC
+— : BFD_RELOC_XTENSA_TLS_ARG
+— : BFD_RELOC_XTENSA_TLS_CALL
+

Xtensa TLS relocations. +

+ +
+— : BFD_RELOC_Z80_DISP8
+

8 bit signed offset in (ix+d) or (iy+d). +

+ +
+— : BFD_RELOC_Z8K_DISP7
+

DJNZ offset. +

+ +
+— : BFD_RELOC_Z8K_CALLR
+

CALR offset. +

+ +
+— : BFD_RELOC_Z8K_IMM4L
+

4 bit value. +

+ +
     
+     typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+
+

+ +

2.10.2.2 bfd_reloc_type_lookup
+ +

Synopsis +

     reloc_howto_type *bfd_reloc_type_lookup
+        (bfd *abfd, bfd_reloc_code_real_type code);
+     reloc_howto_type *bfd_reloc_name_lookup
+        (bfd *abfd, const char *reloc_name);
+
+

Description
+Return a pointer to a howto structure which, when +invoked, will perform the relocation code on data from the +architecture noted. + +

+ +

2.10.2.3 bfd_default_reloc_type_lookup
+ +

Synopsis +

     reloc_howto_type *bfd_default_reloc_type_lookup
+        (bfd *abfd, bfd_reloc_code_real_type  code);
+
+

Description
+Provides a default relocation lookup routine for any architecture. + +

+ +

2.10.2.4 bfd_get_reloc_code_name
+ +

Synopsis +

     const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
+
+

Description
+Provides a printable name for the supplied relocation code. +Useful mainly for printing error messages. + +

+ +

2.10.2.5 bfd_generic_relax_section
+ +

Synopsis +

     bfd_boolean bfd_generic_relax_section
+        (bfd *abfd,
+         asection *section,
+         struct bfd_link_info *,
+         bfd_boolean *);
+
+

Description
+Provides default handling for relaxing for back ends which +don't do relaxing. + +

+ +

2.10.2.6 bfd_generic_gc_sections
+ +

Synopsis +

     bfd_boolean bfd_generic_gc_sections
+        (bfd *, struct bfd_link_info *);
+
+

Description
+Provides default handling for relaxing for back ends which +don't do section gc – i.e., does nothing. + +

+ +

2.10.2.7 bfd_generic_merge_sections
+ +

Synopsis +

     bfd_boolean bfd_generic_merge_sections
+        (bfd *, struct bfd_link_info *);
+
+

Description
+Provides default handling for SEC_MERGE section merging for back ends +which don't have SEC_MERGE support – i.e., does nothing. + +

+ +

2.10.2.8 bfd_generic_get_relocated_section_contents
+ +

Synopsis +

     bfd_byte *bfd_generic_get_relocated_section_contents
+        (bfd *abfd,
+         struct bfd_link_info *link_info,
+         struct bfd_link_order *link_order,
+         bfd_byte *data,
+         bfd_boolean relocatable,
+         asymbol **symbols);
+
+

Description
+Provides default handling of relocation effort for back ends +which can't be bothered to do it efficiently. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/index.html new file mode 100644 index 0000000..a8617a9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/index.html @@ -0,0 +1,412 @@ + + +Untitled + + + + + + + + + + +

+

Table of Contents

+ +
+ + + +
+

+Next: , +Previous: (dir), +Up: (dir) +



+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/mmo-section-mapping.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/mmo-section-mapping.html new file mode 100644 index 0000000..3d19f93 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/mmo-section-mapping.html @@ -0,0 +1,141 @@ + + +mmo section mapping - Untitled + + + + + + + + + + + + +
+

+Previous: Symbol-table, +Up: mmo +



+
+ +

3.5.3 mmo section mapping

+ +

The implementation in BFD uses special data type 80 (decimal) to +encapsulate and describe named sections, containing e.g. debug +information. If needed, any datum in the encapsulation will be +quoted using lop_quote. First comes a 32-bit word holding the +number of 32-bit words containing the zero-terminated zero-padded +segment name. After the name there's a 32-bit word holding flags +describing the section type. Then comes a 64-bit big-endian word +with the section length (in bytes), then another with the section +start address. Depending on the type of section, the contents +might follow, zero-padded to 32-bit boundary. For a loadable +section (such as data or code), the contents might follow at some +later point, not necessarily immediately, as a lop_loc with the +same start address as in the section description, followed by the +contents. This in effect forms a descriptor that must be emitted +before the actual contents. Sections described this way must not +overlap. + +

For areas that don't have such descriptors, synthetic sections are +formed by BFD. Consecutive contents in the two memory areas +0x0000...00 to 0x01ff...ff and +0x2000...00 to 0x20ff...ff are entered in +sections named .text and .data respectively. If an area +is not otherwise described, but would together with a neighboring +lower area be less than 0x40000000 bytes long, it is joined +with the lower area and the gap is zero-filled. For other cases, +a new section is formed, named .MMIX.sec.n. Here, +n is a number, a running count through the mmo file, +starting at 0. + +

A loadable section specified as: + +

      .section secname,"ax"
+      TETRA 1,2,3,4,-1,-2009
+      BYTE 80
+
+

and linked to address 0x4, is represented by the sequence: + +

      0x98080050 - lop_spec 80
+      0x00000002 - two 32-bit words for the section name
+      0x7365636e - "secn"
+      0x616d6500 - "ame\0"
+      0x00000033 - flags CODE, READONLY, LOAD, ALLOC
+      0x00000000 - high 32 bits of section length
+      0x0000001c - section length is 28 bytes; 6 * 4 + 1 + alignment to 32 bits
+      0x00000000 - high 32 bits of section address
+      0x00000004 - section address is 4
+      0x98010002 - 64 bits with address of following data
+      0x00000000 - high 32 bits of address
+      0x00000004 - low 32 bits: data starts at address 4
+      0x00000001 - 1
+      0x00000002 - 2
+      0x00000003 - 3
+      0x00000004 - 4
+      0xffffffff - -1
+      0xfffff827 - -2009
+      0x50000000 - 80 as a byte, padded with zeros.
+
+

Note that the lop_spec wrapping does not include the section +contents. Compare this to a non-loaded section specified as: + +

      .section thirdsec
+      TETRA 200001,100002
+      BYTE 38,40
+
+

This, when linked to address 0x200000000000001c, is +represented by: + +

      0x98080050 - lop_spec 80
+      0x00000002 - two 32-bit words for the section name
+      0x7365636e - "thir"
+      0x616d6500 - "dsec"
+      0x00000010 - flag READONLY
+      0x00000000 - high 32 bits of section length
+      0x0000000c - section length is 12 bytes; 2 * 4 + 2 + alignment to 32 bits
+      0x20000000 - high 32 bits of address
+      0x0000001c - low 32 bits of address 0x200000000000001c
+      0x00030d41 - 200001
+      0x000186a2 - 100002
+      0x26280000 - 38, 40 as bytes, padded with zeros
+
+

For the latter example, the section contents must not be +loaded in memory, and is therefore specified as part of the +special data. The address is usually unimportant but might +provide information for e.g. the DWARF 2 debugging format. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/mmo.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/mmo.html new file mode 100644 index 0000000..c3cc59b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/mmo.html @@ -0,0 +1,79 @@ + + +mmo - Untitled + + + + + + + + + + + + +

+

+Previous: elf, +Up: BFD back ends +



+
+ +

3.5 mmo backend

+ +

The mmo object format is used exclusively together with Professor +Donald E. Knuth's educational 64-bit processor MMIX. The simulator +mmix which is available at +http://www-cs-faculty.stanford.edu/~knuth/programs/mmix.tar.gz +understands this format. That package also includes a combined +assembler and linker called mmixal. The mmo format has +no advantages feature-wise compared to e.g. ELF. It is a simple +non-relocatable object format with no support for archives or +debugging information, except for symbol value information and +line numbers (which is not yet implemented in BFD). See +http://www-cs-faculty.stanford.edu/~knuth/mmix.html for more +information about MMIX. The ELF format is used for intermediate +object files in the BFD implementation. + + + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/section-prototypes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/section-prototypes.html new file mode 100644 index 0000000..99d3005 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/section-prototypes.html @@ -0,0 +1,397 @@ + + +section prototypes - Untitled + + + + + + + + + + + + +
+

+Previous: typedef asection, +Up: Sections +



+
+ +

2.6.5 Section prototypes

+ +

These are the functions exported by the section handling part of BFD. + +

+ +

2.6.5.1 bfd_section_list_clear
+ +

Synopsis +

     void bfd_section_list_clear (bfd *);
+
+

Description
+Clears the section list, and also resets the section count and +hash table entries. + +

+ +

2.6.5.2 bfd_get_section_by_name
+ +

Synopsis +

     asection *bfd_get_section_by_name (bfd *abfd, const char *name);
+
+

Description
+Run through abfd and return the one of the +asections whose name matches name, otherwise NULL. +See Sections, for more information. + +

This should only be used in special cases; the normal way to process +all sections of a given name is to use bfd_map_over_sections and +strcmp on the name (or better yet, base it on the section flags +or something else) for each section. + +

+ +

2.6.5.3 bfd_get_section_by_name_if
+ +

Synopsis +

     asection *bfd_get_section_by_name_if
+        (bfd *abfd,
+         const char *name,
+         bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+
+

Description
+Call the provided function func for each section +attached to the BFD abfd whose name matches name, +passing obj as an argument. The function will be called +as if by + +

            func (abfd, the_section, obj);
+
+

It returns the first section for which func returns true, +otherwise NULL. + +

+ +

2.6.5.4 bfd_get_unique_section_name
+ +

Synopsis +

     char *bfd_get_unique_section_name
+        (bfd *abfd, const char *templat, int *count);
+
+

Description
+Invent a section name that is unique in abfd by tacking +a dot and a digit suffix onto the original templat. If +count is non-NULL, then it specifies the first number +tried as a suffix to generate a unique name. The value +pointed to by count will be incremented in this case. + +

+ +

2.6.5.5 bfd_make_section_old_way
+ +

Synopsis +

     asection *bfd_make_section_old_way (bfd *abfd, const char *name);
+
+

Description
+Create a new empty section called name +and attach it to the end of the chain of sections for the +BFD abfd. An attempt to create a section with a name which +is already in use returns its pointer without changing the +section chain. + +

It has the funny name since this is the way it used to be +before it was rewritten.... + +

Possible errors are: +

    +
  • bfd_error_invalid_operation - +If output has already started for this BFD. +
  • bfd_error_no_memory - +If memory allocation fails. +
+ +

+ +

2.6.5.6 bfd_make_section_anyway_with_flags
+ +

Synopsis +

     asection *bfd_make_section_anyway_with_flags
+        (bfd *abfd, const char *name, flagword flags);
+
+

Description
+Create a new empty section called name and attach it to the end of +the chain of sections for abfd. Create a new section even if there +is already a section with that name. Also set the attributes of the +new section to the value flags. + +

Return NULL and set bfd_error on error; possible errors are: +

    +
  • bfd_error_invalid_operation - If output has already started for abfd. +
  • bfd_error_no_memory - If memory allocation fails. +
+ +

+ +

2.6.5.7 bfd_make_section_anyway
+ +

Synopsis +

     asection *bfd_make_section_anyway (bfd *abfd, const char *name);
+
+

Description
+Create a new empty section called name and attach it to the end of +the chain of sections for abfd. Create a new section even if there +is already a section with that name. + +

Return NULL and set bfd_error on error; possible errors are: +

    +
  • bfd_error_invalid_operation - If output has already started for abfd. +
  • bfd_error_no_memory - If memory allocation fails. +
+ +

+ +

2.6.5.8 bfd_make_section_with_flags
+ +

Synopsis +

     asection *bfd_make_section_with_flags
+        (bfd *, const char *name, flagword flags);
+
+

Description
+Like bfd_make_section_anyway, but return NULL (without calling +bfd_set_error ()) without changing the section chain if there is already a +section named name. Also set the attributes of the new section to +the value flags. If there is an error, return NULL and set +bfd_error. + +

+ +

2.6.5.9 bfd_make_section
+ +

Synopsis +

     asection *bfd_make_section (bfd *, const char *name);
+
+

Description
+Like bfd_make_section_anyway, but return NULL (without calling +bfd_set_error ()) without changing the section chain if there is already a +section named name. If there is an error, return NULL and set +bfd_error. + +

+ +

2.6.5.10 bfd_set_section_flags
+ +

Synopsis +

     bfd_boolean bfd_set_section_flags
+        (bfd *abfd, asection *sec, flagword flags);
+
+

Description
+Set the attributes of the section sec in the BFD +abfd to the value flags. Return TRUE on success, +FALSE on error. Possible error returns are: + +

    +
  • bfd_error_invalid_operation - +The section cannot have one or more of the attributes +requested. For example, a .bss section in a.out may not +have the SEC_HAS_CONTENTS field set. +
+ +

+ +

2.6.5.11 bfd_map_over_sections
+ +

Synopsis +

     void bfd_map_over_sections
+        (bfd *abfd,
+         void (*func) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+
+

Description
+Call the provided function func for each section +attached to the BFD abfd, passing obj as an +argument. The function will be called as if by + +

            func (abfd, the_section, obj);
+
+

This is the preferred method for iterating over sections; an +alternative would be to use a loop: + +

               section *p;
+               for (p = abfd->sections; p != NULL; p = p->next)
+                  func (abfd, p, ...)
+
+

+ +

2.6.5.12 bfd_sections_find_if
+ +

Synopsis +

     asection *bfd_sections_find_if
+        (bfd *abfd,
+         bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
+         void *obj);
+
+

Description
+Call the provided function operation for each section +attached to the BFD abfd, passing obj as an +argument. The function will be called as if by + +

            operation (abfd, the_section, obj);
+
+

It returns the first section for which operation returns true. + +

+ +

2.6.5.13 bfd_set_section_size
+ +

Synopsis +

     bfd_boolean bfd_set_section_size
+        (bfd *abfd, asection *sec, bfd_size_type val);
+
+

Description
+Set sec to the size val. If the operation is +ok, then TRUE is returned, else FALSE. + +

Possible error returns: +

    +
  • bfd_error_invalid_operation - +Writing has started to the BFD, so setting the size is invalid. +
+ +

+ +

2.6.5.14 bfd_set_section_contents
+ +

Synopsis +

     bfd_boolean bfd_set_section_contents
+        (bfd *abfd, asection *section, const void *data,
+         file_ptr offset, bfd_size_type count);
+
+

Description
+Sets the contents of the section section in BFD +abfd to the data starting in memory at data. The +data is written to the output section starting at offset +offset for count octets. + +

Normally TRUE is returned, else FALSE. Possible error +returns are: +

    +
  • bfd_error_no_contents - +The output section does not have the SEC_HAS_CONTENTS +attribute, so nothing can be written to it. +
  • and some more too +
+ This routine is front end to the back end function +_bfd_set_section_contents. + +

+ +

2.6.5.15 bfd_get_section_contents
+ +

Synopsis +

     bfd_boolean bfd_get_section_contents
+        (bfd *abfd, asection *section, void *location, file_ptr offset,
+         bfd_size_type count);
+
+

Description
+Read data from section in BFD abfd +into memory starting at location. The data is read at an +offset of offset from the start of the input section, +and is read for count bytes. + +

If the contents of a constructor with the SEC_CONSTRUCTOR +flag set are requested or if the section does not have the +SEC_HAS_CONTENTS flag set, then the location is filled +with zeroes. If no errors occur, TRUE is returned, else +FALSE. + +

+ +

2.6.5.16 bfd_malloc_and_get_section
+ +

Synopsis +

     bfd_boolean bfd_malloc_and_get_section
+        (bfd *abfd, asection *section, bfd_byte **buf);
+
+

Description
+Read all data from section in BFD abfd +into a buffer, *buf, malloc'd by this function. + +

+ +

2.6.5.17 bfd_copy_private_section_data
+ +

Synopsis +

     bfd_boolean bfd_copy_private_section_data
+        (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
+
+

Description
+Copy private section information from isec in the BFD +ibfd to the section osec in the BFD obfd. +Return TRUE on success, FALSE on error. Possible error +returns are: + +

    +
  • bfd_error_no_memory - +Not enough memory exists to create private data for osec. +
+ +
     #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+          BFD_SEND (obfd, _bfd_copy_private_section_data, \
+                    (ibfd, isection, obfd, osection))
+
+

+ +

2.6.5.18 bfd_generic_is_group_section
+ +

Synopsis +

     bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
+
+

Description
+Returns TRUE if sec is a member of a group. + +

+ +

2.6.5.19 bfd_generic_discard_group
+ +

Synopsis +

     bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
+
+

Description
+Remove all members of group from the output. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/symbol-handling-functions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/symbol-handling-functions.html new file mode 100644 index 0000000..65ac2f3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/symbol-handling-functions.html @@ -0,0 +1,249 @@ + + +symbol handling functions - Untitled + + + + + + + + + + + + +

+

+Previous: typedef asymbol, +Up: Symbols +



+
+ +

2.7.5 Symbol handling functions

+ +

+ +

2.7.5.1 bfd_get_symtab_upper_bound
+ +

Description
+Return the number of bytes required to store a vector of pointers +to asymbols for all the symbols in the BFD abfd, +including a terminal NULL pointer. If there are no symbols in +the BFD, then return 0. If an error occurs, return -1. +

     #define bfd_get_symtab_upper_bound(abfd) \
+          BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
+     
+
+

+ +

2.7.5.2 bfd_is_local_label
+ +

Synopsis +

     bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
+
+

Description
+Return TRUE if the given symbol sym in the BFD abfd is +a compiler generated local label, else return FALSE. + +

+ +

2.7.5.3 bfd_is_local_label_name
+ +

Synopsis +

     bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
+
+

Description
+Return TRUE if a symbol with the name name in the BFD +abfd is a compiler generated local label, else return +FALSE. This just checks whether the name has the form of a +local label. +

     #define bfd_is_local_label_name(abfd, name) \
+       BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
+     
+
+

+ +

2.7.5.4 bfd_is_target_special_symbol
+ +

Synopsis +

     bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
+
+

Description
+Return TRUE iff a symbol sym in the BFD abfd is something +special to the particular target represented by the BFD. Such symbols +should normally not be mentioned to the user. +

     #define bfd_is_target_special_symbol(abfd, sym) \
+       BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
+     
+
+

+ +

2.7.5.5 bfd_canonicalize_symtab
+ +

Description
+Read the symbols from the BFD abfd, and fills in +the vector location with pointers to the symbols and +a trailing NULL. +Return the actual number of symbol pointers, not +including the NULL. +

     #define bfd_canonicalize_symtab(abfd, location) \
+       BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
+     
+
+

+ +

2.7.5.6 bfd_set_symtab
+ +

Synopsis +

     bfd_boolean bfd_set_symtab
+        (bfd *abfd, asymbol **location, unsigned int count);
+
+

Description
+Arrange that when the output BFD abfd is closed, +the table location of count pointers to symbols +will be written. + +

+ +

2.7.5.7 bfd_print_symbol_vandf
+ +

Synopsis +

     void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
+
+

Description
+Print the value and flags of the symbol supplied to the +stream file. + +

+ +

2.7.5.8 bfd_make_empty_symbol
+ +

Description
+Create a new asymbol structure for the BFD abfd +and return a pointer to it. + +

This routine is necessary because each back end has private +information surrounding the asymbol. Building your own +asymbol and pointing to it will not create the private +information, and will cause problems later on. +

     #define bfd_make_empty_symbol(abfd) \
+       BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
+     
+
+

+ +

2.7.5.9 _bfd_generic_make_empty_symbol
+ +

Synopsis +

     asymbol *_bfd_generic_make_empty_symbol (bfd *);
+
+

Description
+Create a new asymbol structure for the BFD abfd +and return a pointer to it. Used by core file routines, +binary back-end and anywhere else where no private info +is needed. + +

+ +

2.7.5.10 bfd_make_debug_symbol
+ +

Description
+Create a new asymbol structure for the BFD abfd, +to be used as a debugging symbol. Further details of its use have +yet to be worked out. +

     #define bfd_make_debug_symbol(abfd,ptr,size) \
+       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+     
+
+

+ +

2.7.5.11 bfd_decode_symclass
+ +

Description
+Return a character corresponding to the symbol +class of symbol, or '?' for an unknown class. + +

Synopsis +

     int bfd_decode_symclass (asymbol *symbol);
+
+

+ +

2.7.5.12 bfd_is_undefined_symclass
+ +

Description
+Returns non-zero if the class symbol returned by +bfd_decode_symclass represents an undefined symbol. +Returns zero otherwise. + +

Synopsis +

     bfd_boolean bfd_is_undefined_symclass (int symclass);
+
+

+ +

2.7.5.13 bfd_symbol_info
+ +

Description
+Fill in the basic info about symbol that nm needs. +Additional info may be added by the back-ends after +calling this function. + +

Synopsis +

     void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+
+

+ +

2.7.5.14 bfd_copy_private_symbol_data
+ +

Synopsis +

     bfd_boolean bfd_copy_private_symbol_data
+        (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
+
+

Description
+Copy private symbol information from isym in the BFD +ibfd to the symbol osym in the BFD obfd. +Return TRUE on success, FALSE on error. Possible error +returns are: + +

    +
  • bfd_error_no_memory - +Not enough memory exists to create private data for osec. +
+ +
     #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
+       BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
+                 (ibfd, isymbol, obfd, osymbol))
+     
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-arelent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-arelent.html new file mode 100644 index 0000000..5e19c54 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-arelent.html @@ -0,0 +1,495 @@ + + +typedef arelent - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Relocations, +Up: Relocations +



+
+ +

2.10.1 typedef arelent

+ +

This is the structure of a relocation entry: + +

     
+     typedef enum bfd_reloc_status
+     {
+       /* No errors detected.  */
+       bfd_reloc_ok,
+     
+       /* The relocation was performed, but there was an overflow.  */
+       bfd_reloc_overflow,
+     
+       /* The address to relocate was not within the section supplied.  */
+       bfd_reloc_outofrange,
+     
+       /* Used by special functions.  */
+       bfd_reloc_continue,
+     
+       /* Unsupported relocation size requested.  */
+       bfd_reloc_notsupported,
+     
+       /* Unused.  */
+       bfd_reloc_other,
+     
+       /* The symbol to relocate against was undefined.  */
+       bfd_reloc_undefined,
+     
+       /* The relocation was performed, but may not be ok - presently
+          generated only when linking i960 coff files with i960 b.out
+          symbols.  If this type is returned, the error_message argument
+          to bfd_perform_relocation will be set.  */
+       bfd_reloc_dangerous
+      }
+      bfd_reloc_status_type;
+     
+     
+     typedef struct reloc_cache_entry
+     {
+       /* A pointer into the canonical table of pointers.  */
+       struct bfd_symbol **sym_ptr_ptr;
+     
+       /* offset in section.  */
+       bfd_size_type address;
+     
+       /* addend for relocation value.  */
+       bfd_vma addend;
+     
+       /* Pointer to how to perform the required relocation.  */
+       reloc_howto_type *howto;
+     
+     }
+     arelent;
+     
+
+

Description
+Here is a description of each of the fields within an arelent: + +

    +
  • sym_ptr_ptr +
+ The symbol table pointer points to a pointer to the symbol +associated with the relocation request. It is the pointer +into the table returned by the back end's +canonicalize_symtab action. See Symbols. The symbol is +referenced through a pointer to a pointer so that tools like +the linker can fix up all the symbols of the same name by +modifying only one pointer. The relocation routine looks in +the symbol and uses the base of the section the symbol is +attached to and the value of the symbol as the initial +relocation offset. If the symbol pointer is zero, then the +section provided is looked up. + +
    +
  • address +
+ The address field gives the offset in bytes from the base of +the section data which owns the relocation record to the first +byte of relocatable information. The actual data relocated +will be relative to this point; for example, a relocation +type which modifies the bottom two bytes of a four byte word +would not touch the first byte pointed to in a big endian +world. + +
    +
  • addend +
+ The addend is a value provided by the back end to be added (!) +to the relocation offset. Its interpretation is dependent upon +the howto. For example, on the 68k the code: + +
             char foo[];
+             main()
+                     {
+                     return foo[0x12345678];
+                     }
+
+

Could be compiled into: + +

             linkw fp,#-4
+             moveb @#12345678,d0
+             extbl d0
+             unlk fp
+             rts
+
+

This could create a reloc pointing to foo, but leave the +offset in the data, something like: + +

     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000006 32        _foo
+     
+     00000000 4e56 fffc          ; linkw fp,#-4
+     00000004 1039 1234 5678     ; moveb @#12345678,d0
+     0000000a 49c0               ; extbl d0
+     0000000c 4e5e               ; unlk fp
+     0000000e 4e75               ; rts
+
+

Using coff and an 88k, some instructions don't have enough +space in them to represent the full address range, and +pointers have to be loaded in two parts. So you'd get something like: + +

             or.u     r13,r0,hi16(_foo+0x12345678)
+             ld.b     r2,r13,lo16(_foo+0x12345678)
+             jmp      r1
+
+

This should create two relocs, both pointing to _foo, and with +0x12340000 in their addend field. The data would consist of: + +

     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000002 HVRT16    _foo+0x12340000
+     00000006 LVRT16    _foo+0x12340000
+     
+     00000000 5da05678           ; or.u r13,r0,0x5678
+     00000004 1c4d5678           ; ld.b r2,r13,0x5678
+     00000008 f400c001           ; jmp r1
+
+

The relocation routine digs out the value from the data, adds +it to the addend to get the original offset, and then adds the +value of _foo. Note that all 32 bits have to be kept around +somewhere, to cope with carry from bit 15 to bit 16. + +

One further example is the sparc and the a.out format. The +sparc has a similar problem to the 88k, in that some +instructions don't have room for an entire offset, but on the +sparc the parts are created in odd sized lumps. The designers of +the a.out format chose to not use the data within the section +for storing part of the offset; all the offset is kept within +the reloc. Anything in the data should be ignored. + +

             save %sp,-112,%sp
+             sethi %hi(_foo+0x12345678),%g2
+             ldsb [%g2+%lo(_foo+0x12345678)],%i0
+             ret
+             restore
+
+

Both relocs contain a pointer to foo, and the offsets +contain junk. + +

     RELOCATION RECORDS FOR [.text]:
+     offset   type      value
+     00000004 HI22      _foo+0x12345678
+     00000008 LO10      _foo+0x12345678
+     
+     00000000 9de3bf90     ; save %sp,-112,%sp
+     00000004 05000000     ; sethi %hi(_foo+0),%g2
+     00000008 f048a000     ; ldsb [%g2+%lo(_foo+0)],%i0
+     0000000c 81c7e008     ; ret
+     00000010 81e80000     ; restore
+
+
    +
  • howto +
+ The howto field can be imagined as a +relocation instruction. It is a pointer to a structure which +contains information on what to do with all of the other +information in the reloc record and data section. A back end +would normally have a relocation instruction set and turn +relocations into pointers to the correct structure on input - +but it would be possible to create each howto field on demand. + +
2.10.1.1 enum complain_overflow
+ +

Indicates what sort of overflow checking should be done when +performing a relocation. + +

     
+     enum complain_overflow
+     {
+       /* Do not complain on overflow.  */
+       complain_overflow_dont,
+     
+       /* Complain if the value overflows when considered as a signed
+          number one bit larger than the field.  ie. A bitfield of N bits
+          is allowed to represent -2**n to 2**n-1.  */
+       complain_overflow_bitfield,
+     
+       /* Complain if the value overflows when considered as a signed
+          number.  */
+       complain_overflow_signed,
+     
+       /* Complain if the value overflows when considered as an
+          unsigned number.  */
+       complain_overflow_unsigned
+     };
+
+
2.10.1.2 reloc_howto_type
+ +

The reloc_howto_type is a structure which contains all the +information that libbfd needs to know to tie up a back end's data. + +

     struct bfd_symbol;             /* Forward declaration.  */
+     
+     struct reloc_howto_struct
+     {
+       /*  The type field has mainly a documentary use - the back end can
+           do what it wants with it, though normally the back end's
+           external idea of what a reloc number is stored
+           in this field.  For example, a PC relative word relocation
+           in a coff environment has the type 023 - because that's
+           what the outside world calls a R_PCRWORD reloc.  */
+       unsigned int type;
+     
+       /*  The value the final relocation is shifted right by.  This drops
+           unwanted data from the relocation.  */
+       unsigned int rightshift;
+     
+       /*  The size of the item to be relocated.  This is *not* a
+           power-of-two measure.  To get the number of bytes operated
+           on by a type of relocation, use bfd_get_reloc_size.  */
+       int size;
+     
+       /*  The number of bits in the item to be relocated.  This is used
+           when doing overflow checking.  */
+       unsigned int bitsize;
+     
+       /*  Notes that the relocation is relative to the location in the
+           data section of the addend.  The relocation function will
+           subtract from the relocation value the address of the location
+           being relocated.  */
+       bfd_boolean pc_relative;
+     
+       /*  The bit position of the reloc value in the destination.
+           The relocated value is left shifted by this amount.  */
+       unsigned int bitpos;
+     
+       /* What type of overflow error should be checked for when
+          relocating.  */
+       enum complain_overflow complain_on_overflow;
+     
+       /* If this field is non null, then the supplied function is
+          called rather than the normal function.  This allows really
+          strange relocation methods to be accommodated (e.g., i960 callj
+          instructions).  */
+       bfd_reloc_status_type (*special_function)
+         (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
+          bfd *, char **);
+     
+       /* The textual name of the relocation type.  */
+       char *name;
+     
+       /* Some formats record a relocation addend in the section contents
+          rather than with the relocation.  For ELF formats this is the
+          distinction between USE_REL and USE_RELA (though the code checks
+          for USE_REL == 1/0).  The value of this field is TRUE if the
+          addend is recorded with the section contents; when performing a
+          partial link (ld -r) the section contents (the data) will be
+          modified.  The value of this field is FALSE if addends are
+          recorded with the relocation (in arelent.addend); when performing
+          a partial link the relocation will be modified.
+          All relocations for all ELF USE_RELA targets should set this field
+          to FALSE (values of TRUE should be looked on with suspicion).
+          However, the converse is not true: not all relocations of all ELF
+          USE_REL targets set this field to TRUE.  Why this is so is peculiar
+          to each particular target.  For relocs that aren't used in partial
+          links (e.g. GOT stuff) it doesn't matter what this is set to.  */
+       bfd_boolean partial_inplace;
+     
+       /* src_mask selects the part of the instruction (or data) to be used
+          in the relocation sum.  If the target relocations don't have an
+          addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
+          dst_mask to extract the addend from the section contents.  If
+          relocations do have an addend in the reloc, eg. ELF USE_RELA, this
+          field should be zero.  Non-zero values for ELF USE_RELA targets are
+          bogus as in those cases the value in the dst_mask part of the
+          section contents should be treated as garbage.  */
+       bfd_vma src_mask;
+     
+       /* dst_mask selects which parts of the instruction (or data) are
+          replaced with a relocated value.  */
+       bfd_vma dst_mask;
+     
+       /* When some formats create PC relative instructions, they leave
+          the value of the pc of the place being relocated in the offset
+          slot of the instruction, so that a PC relative relocation can
+          be made just by adding in an ordinary offset (e.g., sun3 a.out).
+          Some formats leave the displacement part of an instruction
+          empty (e.g., m88k bcs); this flag signals the fact.  */
+       bfd_boolean pcrel_offset;
+     };
+     
+
+

+ +

2.10.1.3 The HOWTO Macro
+ +

Description
+The HOWTO define is horrible and will go away. +

     #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
+       { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
+
+

Description
+And will be replaced with the totally magic way. But for the +moment, we are compatible, so do it this way. +

     #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
+       HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
+              NAME, FALSE, 0, 0, IN)
+     
+
+

Description
+This is used to fill in an empty howto entry in an array. +

     #define EMPTY_HOWTO(C) \
+       HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
+              NULL, FALSE, 0, 0, FALSE)
+     
+
+

Description
+Helper routine to turn a symbol into a relocation value. +

     #define HOWTO_PREPARE(relocation, symbol)               \
+       {                                                     \
+         if (symbol != NULL)                                 \
+           {                                                 \
+             if (bfd_is_com_section (symbol->section))       \
+               {                                             \
+                 relocation = 0;                             \
+               }                                             \
+             else                                            \
+               {                                             \
+                 relocation = symbol->value;                 \
+               }                                             \
+           }                                                 \
+       }
+     
+
+

+ +

2.10.1.4 bfd_get_reloc_size
+ +

Synopsis +

     unsigned int bfd_get_reloc_size (reloc_howto_type *);
+
+

Description
+For a reloc_howto_type that operates on a fixed number of bytes, +this returns the number of bytes operated on. + +

+ +

2.10.1.5 arelent_chain
+ +

Description
+How relocs are tied together in an asection: +

     typedef struct relent_chain
+     {
+       arelent relent;
+       struct relent_chain *next;
+     }
+     arelent_chain;
+     
+
+

+ +

2.10.1.6 bfd_check_overflow
+ +

Synopsis +

     bfd_reloc_status_type bfd_check_overflow
+        (enum complain_overflow how,
+         unsigned int bitsize,
+         unsigned int rightshift,
+         unsigned int addrsize,
+         bfd_vma relocation);
+
+

Description
+Perform overflow checking on relocation which has +bitsize significant bits and will be shifted right by +rightshift bits, on a machine with addresses containing +addrsize significant bits. The result is either of +bfd_reloc_ok or bfd_reloc_overflow. + +

+ +

2.10.1.7 bfd_perform_relocation
+ +

Synopsis +

     bfd_reloc_status_type bfd_perform_relocation
+        (bfd *abfd,
+         arelent *reloc_entry,
+         void *data,
+         asection *input_section,
+         bfd *output_bfd,
+         char **error_message);
+
+

Description
+If output_bfd is supplied to this function, the +generated image will be relocatable; the relocations are +copied to the output file after they have been changed to +reflect the new state of the world. There are two ways of +reflecting the results of partial linkage in an output file: +by modifying the output data in place, and by modifying the +relocation record. Some native formats (e.g., basic a.out and +basic coff) have no way of specifying an addend in the +relocation type, so the addend has to go in the output data. +This is no big deal since in these formats the output data +slot will always be big enough for the addend. Complex reloc +types with addends were invented to solve just this problem. +The error_message argument is set to an error message if +this return bfd_reloc_dangerous. + +

+ +

2.10.1.8 bfd_install_relocation
+ +

Synopsis +

     bfd_reloc_status_type bfd_install_relocation
+        (bfd *abfd,
+         arelent *reloc_entry,
+         void *data, bfd_vma data_start,
+         asection *input_section,
+         char **error_message);
+
+

Description
+This looks remarkably like bfd_perform_relocation, except it +does not expect that the section contents have been filled in. +I.e., it's suitable for use when creating, rather than applying +a relocation. + +

For now, this function should be considered reserved for the +assembler. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-asection.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-asection.html new file mode 100644 index 0000000..e2cae7c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-asection.html @@ -0,0 +1,582 @@ + + +typedef asection - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Section Output, +Up: Sections +



+
+ +

2.6.4 typedef asection

+ +

Here is the section structure: + +

     
+     typedef struct bfd_section
+     {
+       /* The name of the section; the name isn't a copy, the pointer is
+          the same as that passed to bfd_make_section.  */
+       const char *name;
+     
+       /* A unique sequence number.  */
+       int id;
+     
+       /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
+       int index;
+     
+       /* The next section in the list belonging to the BFD, or NULL.  */
+       struct bfd_section *next;
+     
+       /* The previous section in the list belonging to the BFD, or NULL.  */
+       struct bfd_section *prev;
+     
+       /* The field flags contains attributes of the section. Some
+          flags are read in from the object file, and some are
+          synthesized from other information.  */
+       flagword flags;
+     
+     #define SEC_NO_FLAGS   0x000
+     
+       /* Tells the OS to allocate space for this section when loading.
+          This is clear for a section containing debug information only.  */
+     #define SEC_ALLOC      0x001
+     
+       /* Tells the OS to load the section from the file when loading.
+          This is clear for a .bss section.  */
+     #define SEC_LOAD       0x002
+     
+       /* The section contains data still to be relocated, so there is
+          some relocation information too.  */
+     #define SEC_RELOC      0x004
+     
+       /* A signal to the OS that the section contains read only data.  */
+     #define SEC_READONLY   0x008
+     
+       /* The section contains code only.  */
+     #define SEC_CODE       0x010
+     
+       /* The section contains data only.  */
+     #define SEC_DATA       0x020
+     
+       /* The section will reside in ROM.  */
+     #define SEC_ROM        0x040
+     
+       /* The section contains constructor information. This section
+          type is used by the linker to create lists of constructors and
+          destructors used by g++. When a back end sees a symbol
+          which should be used in a constructor list, it creates a new
+          section for the type of name (e.g., __CTOR_LIST__), attaches
+          the symbol to it, and builds a relocation. To build the lists
+          of constructors, all the linker has to do is catenate all the
+          sections called __CTOR_LIST__ and relocate the data
+          contained within - exactly the operations it would peform on
+          standard data.  */
+     #define SEC_CONSTRUCTOR 0x080
+     
+       /* The section has contents - a data section could be
+          SEC_ALLOC | SEC_HAS_CONTENTS; a debug section could be
+          SEC_HAS_CONTENTS  */
+     #define SEC_HAS_CONTENTS 0x100
+     
+       /* An instruction to the linker to not output the section
+          even if it has information which would normally be written.  */
+     #define SEC_NEVER_LOAD 0x200
+     
+       /* The section contains thread local data.  */
+     #define SEC_THREAD_LOCAL 0x400
+     
+       /* The section has GOT references.  This flag is only for the
+          linker, and is currently only used by the elf32-hppa back end.
+          It will be set if global offset table references were detected
+          in this section, which indicate to the linker that the section
+          contains PIC code, and must be handled specially when doing a
+          static link.  */
+     #define SEC_HAS_GOT_REF 0x800
+     
+       /* The section contains common symbols (symbols may be defined
+          multiple times, the value of a symbol is the amount of
+          space it requires, and the largest symbol value is the one
+          used).  Most targets have exactly one of these (which we
+          translate to bfd_com_section_ptr), but ECOFF has two.  */
+     #define SEC_IS_COMMON 0x1000
+     
+       /* The section contains only debugging information.  For
+          example, this is set for ELF .debug and .stab sections.
+          strip tests this flag to see if a section can be
+          discarded.  */
+     #define SEC_DEBUGGING 0x2000
+     
+       /* The contents of this section are held in memory pointed to
+          by the contents field.  This is checked by bfd_get_section_contents,
+          and the data is retrieved from memory if appropriate.  */
+     #define SEC_IN_MEMORY 0x4000
+     
+       /* The contents of this section are to be excluded by the
+          linker for executable and shared objects unless those
+          objects are to be further relocated.  */
+     #define SEC_EXCLUDE 0x8000
+     
+       /* The contents of this section are to be sorted based on the sum of
+          the symbol and addend values specified by the associated relocation
+          entries.  Entries without associated relocation entries will be
+          appended to the end of the section in an unspecified order.  */
+     #define SEC_SORT_ENTRIES 0x10000
+     
+       /* When linking, duplicate sections of the same name should be
+          discarded, rather than being combined into a single section as
+          is usually done.  This is similar to how common symbols are
+          handled.  See SEC_LINK_DUPLICATES below.  */
+     #define SEC_LINK_ONCE 0x20000
+     
+       /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
+          should handle duplicate sections.  */
+     #define SEC_LINK_DUPLICATES 0xc0000
+     
+       /* This value for SEC_LINK_DUPLICATES means that duplicate
+          sections with the same name should simply be discarded.  */
+     #define SEC_LINK_DUPLICATES_DISCARD 0x0
+     
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if there are any duplicate sections, although
+          it should still only link one copy.  */
+     #define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
+     
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if any duplicate sections are a different size.  */
+     #define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
+     
+       /* This value for SEC_LINK_DUPLICATES means that the linker
+          should warn if any duplicate sections contain different
+          contents.  */
+     #define SEC_LINK_DUPLICATES_SAME_CONTENTS \
+       (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
+     
+       /* This section was created by the linker as part of dynamic
+          relocation or other arcane processing.  It is skipped when
+          going through the first-pass output, trusting that someone
+          else up the line will take care of it later.  */
+     #define SEC_LINKER_CREATED 0x100000
+     
+       /* This section should not be subject to garbage collection.
+          Also set to inform the linker that this section should not be
+          listed in the link map as discarded.  */
+     #define SEC_KEEP 0x200000
+     
+       /* This section contains "short" data, and should be placed
+          "near" the GP.  */
+     #define SEC_SMALL_DATA 0x400000
+     
+       /* Attempt to merge identical entities in the section.
+          Entity size is given in the entsize field.  */
+     #define SEC_MERGE 0x800000
+     
+       /* If given with SEC_MERGE, entities to merge are zero terminated
+          strings where entsize specifies character size instead of fixed
+          size entries.  */
+     #define SEC_STRINGS 0x1000000
+     
+       /* This section contains data about section groups.  */
+     #define SEC_GROUP 0x2000000
+     
+       /* The section is a COFF shared library section.  This flag is
+          only for the linker.  If this type of section appears in
+          the input file, the linker must copy it to the output file
+          without changing the vma or size.  FIXME: Although this
+          was originally intended to be general, it really is COFF
+          specific (and the flag was renamed to indicate this).  It
+          might be cleaner to have some more general mechanism to
+          allow the back end to control what the linker does with
+          sections.  */
+     #define SEC_COFF_SHARED_LIBRARY 0x4000000
+     
+       /* This section contains data which may be shared with other
+          executables or shared objects. This is for COFF only.  */
+     #define SEC_COFF_SHARED 0x8000000
+     
+       /* When a section with this flag is being linked, then if the size of
+          the input section is less than a page, it should not cross a page
+          boundary.  If the size of the input section is one page or more,
+          it should be aligned on a page boundary.  This is for TI
+          TMS320C54X only.  */
+     #define SEC_TIC54X_BLOCK 0x10000000
+     
+       /* Conditionally link this section; do not link if there are no
+          references found to any symbol in the section.  This is for TI
+          TMS320C54X only.  */
+     #define SEC_TIC54X_CLINK 0x20000000
+     
+       /*  End of section flags.  */
+     
+       /* Some internal packed boolean fields.  */
+     
+       /* See the vma field.  */
+       unsigned int user_set_vma : 1;
+     
+       /* A mark flag used by some of the linker backends.  */
+       unsigned int linker_mark : 1;
+     
+       /* Another mark flag used by some of the linker backends.  Set for
+          output sections that have an input section.  */
+       unsigned int linker_has_input : 1;
+     
+       /* Mark flag used by some linker backends for garbage collection.  */
+       unsigned int gc_mark : 1;
+     
+       /* The following flags are used by the ELF linker. */
+     
+       /* Mark sections which have been allocated to segments.  */
+       unsigned int segment_mark : 1;
+     
+       /* Type of sec_info information.  */
+       unsigned int sec_info_type:3;
+     #define ELF_INFO_TYPE_NONE      0
+     #define ELF_INFO_TYPE_STABS     1
+     #define ELF_INFO_TYPE_MERGE     2
+     #define ELF_INFO_TYPE_EH_FRAME  3
+     #define ELF_INFO_TYPE_JUST_SYMS 4
+     
+       /* Nonzero if this section uses RELA relocations, rather than REL.  */
+       unsigned int use_rela_p:1;
+     
+       /* Bits used by various backends.  The generic code doesn't touch
+          these fields.  */
+     
+       /* Nonzero if this section has TLS related relocations.  */
+       unsigned int has_tls_reloc:1;
+     
+       /* Nonzero if this section has a gp reloc.  */
+       unsigned int has_gp_reloc:1;
+     
+       /* Nonzero if this section needs the relax finalize pass.  */
+       unsigned int need_finalize_relax:1;
+     
+       /* Whether relocations have been processed.  */
+       unsigned int reloc_done : 1;
+     
+       /* End of internal packed boolean fields.  */
+     
+       /*  The virtual memory address of the section - where it will be
+           at run time.  The symbols are relocated against this.  The
+           user_set_vma flag is maintained by bfd; if it's not set, the
+           backend can assign addresses (for example, in a.out, where
+           the default address for .data is dependent on the specific
+           target and various flags).  */
+       bfd_vma vma;
+     
+       /*  The load address of the section - where it would be in a
+           rom image; really only used for writing section header
+           information.  */
+       bfd_vma lma;
+     
+       /* The size of the section in octets, as it will be output.
+          Contains a value even if the section has no contents (e.g., the
+          size of .bss).  */
+       bfd_size_type size;
+     
+       /* For input sections, the original size on disk of the section, in
+          octets.  This field should be set for any section whose size is
+          changed by linker relaxation.  It is required for sections where
+          the linker relaxation scheme doesn't cache altered section and
+          reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
+          targets), and thus the original size needs to be kept to read the
+          section multiple times.  For output sections, rawsize holds the
+          section size calculated on a previous linker relaxation pass.  */
+       bfd_size_type rawsize;
+     
+       /* If this section is going to be output, then this value is the
+          offset in *bytes* into the output section of the first byte in the
+          input section (byte ==> smallest addressable unit on the
+          target).  In most cases, if this was going to start at the
+          100th octet (8-bit quantity) in the output section, this value
+          would be 100.  However, if the target byte size is 16 bits
+          (bfd_octets_per_byte is "2"), this value would be 50.  */
+       bfd_vma output_offset;
+     
+       /* The output section through which to map on output.  */
+       struct bfd_section *output_section;
+     
+       /* The alignment requirement of the section, as an exponent of 2 -
+          e.g., 3 aligns to 2^3 (or 8).  */
+       unsigned int alignment_power;
+     
+       /* If an input section, a pointer to a vector of relocation
+          records for the data in this section.  */
+       struct reloc_cache_entry *relocation;
+     
+       /* If an output section, a pointer to a vector of pointers to
+          relocation records for the data in this section.  */
+       struct reloc_cache_entry **orelocation;
+     
+       /* The number of relocation records in one of the above.  */
+       unsigned reloc_count;
+     
+       /* Information below is back end specific - and not always used
+          or updated.  */
+     
+       /* File position of section data.  */
+       file_ptr filepos;
+     
+       /* File position of relocation info.  */
+       file_ptr rel_filepos;
+     
+       /* File position of line data.  */
+       file_ptr line_filepos;
+     
+       /* Pointer to data for applications.  */
+       void *userdata;
+     
+       /* If the SEC_IN_MEMORY flag is set, this points to the actual
+          contents.  */
+       unsigned char *contents;
+     
+       /* Attached line number information.  */
+       alent *lineno;
+     
+       /* Number of line number records.  */
+       unsigned int lineno_count;
+     
+       /* Entity size for merging purposes.  */
+       unsigned int entsize;
+     
+       /* Points to the kept section if this section is a link-once section,
+          and is discarded.  */
+       struct bfd_section *kept_section;
+     
+       /* When a section is being output, this value changes as more
+          linenumbers are written out.  */
+       file_ptr moving_line_filepos;
+     
+       /* What the section number is in the target world.  */
+       int target_index;
+     
+       void *used_by_bfd;
+     
+       /* If this is a constructor section then here is a list of the
+          relocations created to relocate items within it.  */
+       struct relent_chain *constructor_chain;
+     
+       /* The BFD which owns the section.  */
+       bfd *owner;
+     
+       /* A symbol which points at this section only.  */
+       struct bfd_symbol *symbol;
+       struct bfd_symbol **symbol_ptr_ptr;
+     
+       /* Early in the link process, map_head and map_tail are used to build
+          a list of input sections attached to an output section.  Later,
+          output sections use these fields for a list of bfd_link_order
+          structs.  */
+       union {
+         struct bfd_link_order *link_order;
+         struct bfd_section *s;
+       } map_head, map_tail;
+     } asection;
+     
+     /* These sections are global, and are managed by BFD.  The application
+        and target back end are not permitted to change the values in
+        these sections.  New code should use the section_ptr macros rather
+        than referring directly to the const sections.  The const sections
+        may eventually vanish.  */
+     #define BFD_ABS_SECTION_NAME "*ABS*"
+     #define BFD_UND_SECTION_NAME "*UND*"
+     #define BFD_COM_SECTION_NAME "*COM*"
+     #define BFD_IND_SECTION_NAME "*IND*"
+     
+     /* The absolute section.  */
+     extern asection bfd_abs_section;
+     #define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
+     #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
+     /* Pointer to the undefined section.  */
+     extern asection bfd_und_section;
+     #define bfd_und_section_ptr ((asection *) &bfd_und_section)
+     #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
+     /* Pointer to the common section.  */
+     extern asection bfd_com_section;
+     #define bfd_com_section_ptr ((asection *) &bfd_com_section)
+     /* Pointer to the indirect section.  */
+     extern asection bfd_ind_section;
+     #define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
+     #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
+     
+     #define bfd_is_const_section(SEC)              \
+      (   ((SEC) == bfd_abs_section_ptr)            \
+       || ((SEC) == bfd_und_section_ptr)            \
+       || ((SEC) == bfd_com_section_ptr)            \
+       || ((SEC) == bfd_ind_section_ptr))
+     
+     /* Macros to handle insertion and deletion of a bfd's sections.  These
+        only handle the list pointers, ie. do not adjust section_count,
+        target_index etc.  */
+     #define bfd_section_list_remove(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           asection *_next = _s->next;                      \
+           asection *_prev = _s->prev;                      \
+           if (_prev)                                       \
+             _prev->next = _next;                           \
+           else                                             \
+             (ABFD)->sections = _next;                      \
+           if (_next)                                       \
+             _next->prev = _prev;                           \
+           else                                             \
+             (ABFD)->section_last = _prev;                  \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_append(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           bfd *_abfd = ABFD;                               \
+           _s->next = NULL;                                 \
+           if (_abfd->section_last)                         \
+             {                                              \
+               _s->prev = _abfd->section_last;              \
+               _abfd->section_last->next = _s;              \
+             }                                              \
+           else                                             \
+             {                                              \
+               _s->prev = NULL;                             \
+               _abfd->sections = _s;                        \
+             }                                              \
+           _abfd->section_last = _s;                        \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_prepend(ABFD, S) \
+       do                                                   \
+         {                                                  \
+           asection *_s = S;                                \
+           bfd *_abfd = ABFD;                               \
+           _s->prev = NULL;                                 \
+           if (_abfd->sections)                             \
+             {                                              \
+               _s->next = _abfd->sections;                  \
+               _abfd->sections->prev = _s;                  \
+             }                                              \
+           else                                             \
+             {                                              \
+               _s->next = NULL;                             \
+               _abfd->section_last = _s;                    \
+             }                                              \
+           _abfd->sections = _s;                            \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_insert_after(ABFD, A, S) \
+       do                                                   \
+         {                                                  \
+           asection *_a = A;                                \
+           asection *_s = S;                                \
+           asection *_next = _a->next;                      \
+           _s->next = _next;                                \
+           _s->prev = _a;                                   \
+           _a->next = _s;                                   \
+           if (_next)                                       \
+             _next->prev = _s;                              \
+           else                                             \
+             (ABFD)->section_last = _s;                     \
+         }                                                  \
+       while (0)
+     #define bfd_section_list_insert_before(ABFD, B, S) \
+       do                                                   \
+         {                                                  \
+           asection *_b = B;                                \
+           asection *_s = S;                                \
+           asection *_prev = _b->prev;                      \
+           _s->prev = _prev;                                \
+           _s->next = _b;                                   \
+           _b->prev = _s;                                   \
+           if (_prev)                                       \
+             _prev->next = _s;                              \
+           else                                             \
+             (ABFD)->sections = _s;                         \
+         }                                                  \
+       while (0)
+     #define bfd_section_removed_from_list(ABFD, S) \
+       ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
+     
+     #define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
+       /* name, id,  index, next, prev, flags, user_set_vma,            */  \
+       { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
+                                                                            \
+       /* linker_mark, linker_has_input, gc_mark,                       */  \
+          0,           0,                1,                                 \
+                                                                            \
+       /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
+          0,            0,             0,          0,                       \
+                                                                            \
+       /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
+          0,            0,                   0,                             \
+                                                                            \
+       /* vma, lma, size, rawsize                                       */  \
+          0,   0,   0,    0,                                                \
+                                                                            \
+       /* output_offset, output_section,              alignment_power,  */  \
+          0,             (struct bfd_section *) &SEC, 0,                    \
+                                                                            \
+       /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
+          NULL,       NULL,        0,           0,       0,                 \
+                                                                            \
+       /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
+          0,            NULL,     NULL,     NULL,   0,                      \
+                                                                            \
+       /* entsize, kept_section, moving_line_filepos,                    */ \
+          0,       NULL,          0,                                        \
+                                                                            \
+       /* target_index, used_by_bfd, constructor_chain, owner,          */  \
+          0,            NULL,        NULL,              NULL,               \
+                                                                            \
+       /* symbol,                    symbol_ptr_ptr,                    */  \
+          (struct bfd_symbol *) SYM, &SEC.symbol,                           \
+                                                                            \
+       /* map_head, map_tail                                            */  \
+          { NULL }, { NULL }                                                \
+         }
+     
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-asymbol.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-asymbol.html new file mode 100644 index 0000000..65f4f5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/bfd.html/typedef-asymbol.html @@ -0,0 +1,197 @@ + + +typedef asymbol - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Mini Symbols, +Up: Symbols +



+
+ +

2.7.4 typedef asymbol

+ +

An asymbol has the form: + +

     
+     typedef struct bfd_symbol
+     {
+       /* A pointer to the BFD which owns the symbol. This information
+          is necessary so that a back end can work out what additional
+          information (invisible to the application writer) is carried
+          with the symbol.
+     
+          This field is *almost* redundant, since you can use section->owner
+          instead, except that some symbols point to the global sections
+          bfd_{abs,com,und}_section.  This could be fixed by making
+          these globals be per-bfd (or per-target-flavor).  FIXME.  */
+       struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
+     
+       /* The text of the symbol. The name is left alone, and not copied; the
+          application may not alter it.  */
+       const char *name;
+     
+       /* The value of the symbol.  This really should be a union of a
+          numeric value with a pointer, since some flags indicate that
+          a pointer to another symbol is stored here.  */
+       symvalue value;
+     
+       /* Attributes of a symbol.  */
+     #define BSF_NO_FLAGS    0x00
+     
+       /* The symbol has local scope; static in C. The value
+          is the offset into the section of the data.  */
+     #define BSF_LOCAL      0x01
+     
+       /* The symbol has global scope; initialized data in C. The
+          value is the offset into the section of the data.  */
+     #define BSF_GLOBAL     0x02
+     
+       /* The symbol has global scope and is exported. The value is
+          the offset into the section of the data.  */
+     #define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
+     
+       /* A normal C symbol would be one of:
+          BSF_LOCAL, BSF_FORT_COMM,  BSF_UNDEFINED or
+          BSF_GLOBAL.  */
+     
+       /* The symbol is a debugging record. The value has an arbitrary
+          meaning, unless BSF_DEBUGGING_RELOC is also set.  */
+     #define BSF_DEBUGGING  0x08
+     
+       /* The symbol denotes a function entry point.  Used in ELF,
+          perhaps others someday.  */
+     #define BSF_FUNCTION    0x10
+     
+       /* Used by the linker.  */
+     #define BSF_KEEP        0x20
+     #define BSF_KEEP_G      0x40
+     
+       /* A weak global symbol, overridable without warnings by
+          a regular global symbol of the same name.  */
+     #define BSF_WEAK        0x80
+     
+       /* This symbol was created to point to a section, e.g. ELF's
+          STT_SECTION symbols.  */
+     #define BSF_SECTION_SYM 0x100
+     
+       /* The symbol used to be a common symbol, but now it is
+          allocated.  */
+     #define BSF_OLD_COMMON  0x200
+     
+       /* The default value for common data.  */
+     #define BFD_FORT_COMM_DEFAULT_VALUE 0
+     
+       /* In some files the type of a symbol sometimes alters its
+          location in an output file - ie in coff a ISFCN symbol
+          which is also C_EXT symbol appears where it was
+          declared and not at the end of a section.  This bit is set
+          by the target BFD part to convey this information.  */
+     #define BSF_NOT_AT_END    0x400
+     
+       /* Signal that the symbol is the label of constructor section.  */
+     #define BSF_CONSTRUCTOR   0x800
+     
+       /* Signal that the symbol is a warning symbol.  The name is a
+          warning.  The name of the next symbol is the one to warn about;
+          if a reference is made to a symbol with the same name as the next
+          symbol, a warning is issued by the linker.  */
+     #define BSF_WARNING       0x1000
+     
+       /* Signal that the symbol is indirect.  This symbol is an indirect
+          pointer to the symbol with the same name as the next symbol.  */
+     #define BSF_INDIRECT      0x2000
+     
+       /* BSF_FILE marks symbols that contain a file name.  This is used
+          for ELF STT_FILE symbols.  */
+     #define BSF_FILE          0x4000
+     
+       /* Symbol is from dynamic linking information.  */
+     #define BSF_DYNAMIC       0x8000
+     
+       /* The symbol denotes a data object.  Used in ELF, and perhaps
+          others someday.  */
+     #define BSF_OBJECT        0x10000
+     
+       /* This symbol is a debugging symbol.  The value is the offset
+          into the section of the data.  BSF_DEBUGGING should be set
+          as well.  */
+     #define BSF_DEBUGGING_RELOC 0x20000
+     
+       /* This symbol is thread local.  Used in ELF.  */
+     #define BSF_THREAD_LOCAL  0x40000
+     
+       /* This symbol represents a complex relocation expression,
+          with the expression tree serialized in the symbol name.  */
+     #define BSF_RELC 0x80000
+     
+       /* This symbol represents a signed complex relocation expression,
+          with the expression tree serialized in the symbol name.  */
+     #define BSF_SRELC 0x100000
+     
+       /* This symbol was created by bfd_get_synthetic_symtab.  */
+     #define BSF_SYNTHETIC 0x200000
+     
+       flagword flags;
+     
+       /* A pointer to the section to which this symbol is
+          relative.  This will always be non NULL, there are special
+          sections for undefined and absolute symbols.  */
+       struct bfd_section *section;
+     
+       /* Back end special data.  */
+       union
+         {
+           void *p;
+           bfd_vma i;
+         }
+       udata;
+     }
+     asymbol;
+     
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Architecture-Selection.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Architecture-Selection.html new file mode 100644 index 0000000..6ee437e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Architecture-Selection.html @@ -0,0 +1,73 @@ + + +Architecture Selection - GNU Binary Utilities + + + + + + + + + + + + + + +

17.2 Architecture Selection

+ +

An architecture is a type of cpu on which an object file is +to run. Its name may contain a colon, separating the name of the +processor family from the name of the particular cpu. + +

The command to list valid architecture values is objdump -i (the +second column contains the relevant information). + +

Sample values: m68k:68020, mips:3000, sparc. + +

objdump Architecture

+ +

Ways to specify: + +

    +
  1. command line option: -m or --architecture + +
  2. deduced from the input file +
+ +

objcopy, nm, size, strings Architecture

+ +

Ways to specify: + +

    +
  1. deduced from the input file +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Binutils-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Binutils-Index.html new file mode 100644 index 0000000..f713d84 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Binutils-Index.html @@ -0,0 +1,187 @@ + + +Binutils Index - GNU Binary Utilities + + + + + + + + + + + +
+

+Previous: GNU Free Documentation License, +Up: Top +



+
+ +

Binutils Index

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Bug-Criteria.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Bug-Criteria.html new file mode 100644 index 0000000..ad1af2b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Bug-Criteria.html @@ -0,0 +1,62 @@ + + +Bug Criteria - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Up: Reporting Bugs +



+
+ +

18.1 Have You Found a Bug?

+ +

+If you are not sure whether you have found a bug, here are some guidelines: + + + + +

  • If a binary utility gets a fatal signal, for any input whatever, that is +a bug. Reliable utilities never crash. + +

  • If a binary utility produces an error message for valid input, that is a +bug. + +
  • If you are an experienced user of binary utilities, your suggestions for +improvement are welcome in any case. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Bug-Reporting.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Bug-Reporting.html new file mode 100644 index 0000000..ff8bcad --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Bug-Reporting.html @@ -0,0 +1,190 @@ + + +Bug Reporting - GNU Binary Utilities + + + + + + + + + + + + +
+

+Previous: Bug Criteria, +Up: Reporting Bugs +



+
+ +

18.2 How to Report Bugs

+ +

+A number of companies and individuals offer support for gnu +products. If you obtained the binary utilities from a support +organization, we recommend you contact that organization first. + +

You can find contact information for many support companies and +individuals in the file etc/SERVICE in the gnu Emacs +distribution. + +

In any event, we also recommend that you send bug reports for the binary +utilities to http://www.sourceware.org/bugzilla/. + +

The fundamental principle of reporting bugs usefully is this: +report all the facts. If you are not sure whether to state a +fact or leave it out, state it! + +

Often people omit facts because they think they know what causes the +problem and assume that some details do not matter. Thus, you might +assume that the name of a file you use in an example does not matter. +Well, probably it does not, but one cannot be sure. Perhaps the bug is +a stray memory reference which happens to fetch from the location where +that pathname is stored in memory; perhaps, if the pathname were +different, the contents of that location would fool the utility into +doing the right thing despite the bug. Play it safe and give a +specific, complete example. That is the easiest thing for you to do, +and the most helpful. + +

Keep in mind that the purpose of a bug report is to enable us to fix the bug if +it is new to us. Therefore, always write your bug reports on the assumption +that the bug has not been reported previously. + +

Sometimes people give a few sketchy facts and ask, “Does this ring a +bell?” This cannot help us fix a bug, so it is basically useless. We +respond by asking for enough details to enable us to investigate. +You might as well expedite matters by sending them to begin with. + +

To enable us to fix the bug, you should include all these things: + +

    +
  • The version of the utility. Each utility announces it if you start it +with the --version argument. + +

    Without this, we will not know whether there is any point in looking for +the bug in the current version of the binary utilities. + +

  • Any patches you may have applied to the source, including any patches +made to the BFD library. + +
  • The type of machine you are using, and the operating system name and +version number. + +
  • What compiler (and its version) was used to compile the utilities—e.g. +“gcc-2.7”. + +
  • The command arguments you gave the utility to observe the bug. To +guarantee you will not omit something important, list them all. A copy +of the Makefile (or the output from make) is sufficient. + +

    If we were to try to guess the arguments, we would probably guess wrong +and then we might not encounter the bug. + +

  • A complete input file, or set of input files, that will reproduce the +bug. If the utility is reading an object file or files, then it is +generally most helpful to send the actual object files. + +

    If the source files were produced exclusively using gnu programs +(e.g., gcc, gas, and/or the gnu ld), then it +may be OK to send the source files rather than the object files. In +this case, be sure to say exactly what version of gcc, or +whatever, was used to produce the object files. Also say how +gcc, or whatever, was configured. + +

  • A description of what behavior you observe that you believe is +incorrect. For example, “It gets a fatal signal.” + +

    Of course, if the bug is that the utility gets a fatal signal, then we +will certainly notice it. But if the bug is incorrect output, we might +not notice unless it is glaringly wrong. You might as well not give us +a chance to make a mistake. + +

    Even if the problem you experience is a fatal signal, you should still +say so explicitly. Suppose something strange is going on, such as your +copy of the utility is out of sync, or you have encountered a bug in +the C library on your system. (This has happened!) Your copy might +crash and ours would not. If you told us to expect a crash, then when +ours fails to crash, we would know that the bug was not happening for +us. If you had not told us to expect a crash, then we would not be able +to draw any conclusion from our observations. + +

  • If you wish to suggest changes to the source, send us context diffs, as +generated by diff with the -u, -c, or -p +option. Always send diffs from the old file to the new file. If you +wish to discuss something in the ld source, refer to it by +context, not by line number. + +

    The line numbers in our development sources will not match those in your +sources. Your line numbers would convey no useful information to us. +

+ +

Here are some things that are not necessary: + +

    +
  • A description of the envelope of the bug. + +

    Often people who encounter a bug spend a lot of time investigating +which changes to the input file will make the bug go away and which +changes will not affect it. + +

    This is often time consuming and not very useful, because the way we +will find the bug is by running a single example under the debugger +with breakpoints, not by pure deduction from a series of examples. +We recommend that you save your time for something else. + +

    Of course, if you can find a simpler example to report instead +of the original one, that is a convenience for us. Errors in the +output will be easier to spot, running under the debugger will take +less time, and so on. + +

    However, simplification is not vital; if you do not want to do this, +report the bug anyway and send us the entire test case you used. + +

  • A patch for the bug. + +

    A patch for the bug does help us if it is a good one. But do not omit +the necessary information, such as the test case, on the assumption that +a patch is all we need. We might see problems with your patch and decide +to fix the problem another way, or we might not understand it at all. + +

    Sometimes with programs as complicated as the binary utilities it is +very hard to construct an example that will make the program follow a +certain path through the code. If you do not send us the example, we +will not be able to construct one, so we will not be able to verify that +the bug is fixed. + +

    And if we cannot understand what bug you are trying to fix, or why your +patch should be an improvement, we will not install it. A test case will +help us to understand. + +

  • A guess about what the bug is or what it depends on. + +

    Such guesses are usually wrong. Even we cannot guess right about such +things without first using the debugger to find the facts. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Common-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Common-Options.html new file mode 100644 index 0000000..9979565 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Common-Options.html @@ -0,0 +1,76 @@ + + +Common Options - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: dlltool, +Up: Top +



+
+ +

16 Common Options

+ +

The following command-line options are supported by all of the +programs described in this manual. + + +

+ + + +
@file
Read command-line options from file. The options read are +inserted in place of the original @file option. If file +does not exist, or cannot be read, then the option will be treated +literally, and not removed. + +

Options in file are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The file may itself contain additional +@file options; any such options will be processed recursively. + + +

--help
Display the command-line options supported by the program. + +
--version
Display the version number of the program. + + +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..205558c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/GNU-Free-Documentation-License.html @@ -0,0 +1,459 @@ + + +GNU Free Documentation License - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: Reporting Bugs, +Up: Top +



+
+ +

Appendix A GNU Free Documentation License

+ + +
Version 1.2, November 2002
+ + + +
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. + +

    Examples of suitable formats for Transparent copies include plain +ascii without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +

    A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. + +

    The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +

  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +

  4. COPYING IN QUANTITY + +

    If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +

  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

      +
    1. Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +
    3. State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +
    13. Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +
    14. Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +
    15. Preserve any Warranty Disclaimers. +
    + +

    If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +

  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” + +

  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +

  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +

  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +

    If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +

  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +

  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

       Copyright (C)  year  your name.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.2
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with...Texts.” line with this: + +

         with the Invariant Sections being list their titles, with
+         the Front-Cover Texts being list, and with the Back-Cover Texts
+         being list.
+
+

If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Reporting-Bugs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Reporting-Bugs.html new file mode 100644 index 0000000..2663fa9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Reporting-Bugs.html @@ -0,0 +1,65 @@ + + +Reporting Bugs - GNU Binary Utilities + + + + + + + + + + + + +

+ +

18 Reporting Bugs

+ +

+Your bug reports play an essential role in making the binary utilities +reliable. + +

Reporting a bug may help you by bringing a solution to your problem, or +it may not. But in any case the principal function of a bug report is +to help the entire community by making the next version of the binary +utilities work better. Bug reports are your contribution to their +maintenance. + +

In order for a bug report to serve its purpose, you must include the +information that enables us to fix the bug. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Selecting-the-Target-System.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Selecting-the-Target-System.html new file mode 100644 index 0000000..d81a174 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Selecting-the-Target-System.html @@ -0,0 +1,72 @@ + + +Selecting the Target System - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: Common Options, +Up: Top +



+
+ +

17 Selecting the Target System

+ +

You can specify two aspects of the target system to the gnu +binary file utilities, each in several ways: + +

    +
  • the target + +
  • the architecture +
+ +

In the following summaries, the lists of ways to specify values are in +order of decreasing precedence. The ways listed first override those +listed later. + +

The commands to list valid values only list the values for which the +programs you are running were configured. If they were configured with +--enable-targets=all, the commands list most of the available +values, but a few are left out; not all targets can be configured in at +once because some of them can only be configured native (on hosts +with the same type as the target system). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Target-Selection.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Target-Selection.html new file mode 100644 index 0000000..9666183 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/Target-Selection.html @@ -0,0 +1,117 @@ + + +Target Selection - GNU Binary Utilities + + + + + + + + + + + + + + +

17.1 Target Selection

+ +

A target is an object file format. A given target may be +supported for multiple architectures (see Architecture Selection). +A target selection may also have variations for different operating +systems or architectures. + +

The command to list valid target values is objdump -i +(the first column of output contains the relevant information). + +

Some sample values are: a.out-hp300bsd, ecoff-littlemips, +a.out-sunos-big. + +

You can also specify a target using a configuration triplet. This is +the same sort of name that is passed to configure to specify a +target. When you use a configuration triplet as an argument, it must be +fully canonicalized. You can see the canonical version of a triplet by +running the shell script config.sub which is included with the +sources. + +

Some sample configuration triplets are: m68k-hp-bsd, +mips-dec-ultrix, sparc-sun-sunos. + +

objdump Target

+ +

Ways to specify: + +

    +
  1. command line option: -b or --target + +
  2. environment variable GNUTARGET + +
  3. deduced from the input file +
+ +

objcopy and strip Input Target

+ +

Ways to specify: + +

    +
  1. command line options: -I or --input-target, or -F or --target + +
  2. environment variable GNUTARGET + +
  3. deduced from the input file +
+ +

objcopy and strip Output Target

+ +

Ways to specify: + +

    +
  1. command line options: -O or --output-target, or -F or --target + +
  2. the input target (see “objcopy and strip Input Target” above) + +
  3. environment variable GNUTARGET + +
  4. deduced from the input file +
+ +

nm, size, and strings Target

+ +

Ways to specify: + +

    +
  1. command line option: --target + +
  2. environment variable GNUTARGET + +
  3. deduced from the input file +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/addr2line.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/addr2line.html new file mode 100644 index 0000000..0b5b0c7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/addr2line.html @@ -0,0 +1,126 @@ + + +addr2line - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: c++filt, +Up: Top +



+
+ +

10 addr2line

+ +

+ + +

     
+     addr2line [-b bfdname|--target=bfdname]
+               [-C|--demangle[=style]]
+               [-e filename|--exe=filename]
+               [-f|--functions] [-s|--basename]
+               [-i|--inlines]
+               [-j|--section=name]
+               [-H|--help] [-V|--version]
+               [addr addr ...]
+     
+
+ +

addr2line translates addresses into file names and line numbers. +Given an address in an executable or an offset in a section of a relocatable +object, it uses the debugging information to figure out which file name and +line number are associated with it. + +

The executable or relocatable object to use is specified with the -e +option. The default is the file a.out. The section in the relocatable +object to use is specified with the -j option. + +

addr2line has two modes of operation. + +

In the first, hexadecimal addresses are specified on the command line, +and addr2line displays the file name and line number for each +address. + +

In the second, addr2line reads hexadecimal addresses from +standard input, and prints the file name and line number for each +address on standard output. In this mode, addr2line may be used +in a pipe to convert dynamically chosen addresses. + +

The format of the output is FILENAME:LINENO. The file name and +line number for each address is printed on a separate line. If the +-f option is used, then each FILENAME:LINENO line is +preceded by a FUNCTIONNAME line which is the name of the function +containing the address. + +

If the file name or function name can not be determined, +addr2line will print two question marks in their place. If the +line number can not be determined, addr2line will print 0. + + + +

The long and short forms of options, shown here as alternatives, are +equivalent. + +

+
-b bfdname
--target=bfdname
Specify that the object-code format for the object files is +bfdname. + +
-C
--demangle[=style]
Decode (demangle) low-level symbol names into user-level names. +Besides removing any initial underscore prepended by the system, this +makes C++ function names readable. Different compilers have different +mangling styles. The optional demangling style argument can be used to +choose an appropriate demangling style for your compiler. See c++filt, +for more information on demangling. + +
-e filename
--exe=filename
Specify the name of the executable for which addresses should be +translated. The default file is a.out. + +
-f
--functions
Display function names as well as file and line number information. + +
-s
--basenames
Display only the base of each file name. + +
-i
--inlines
If the address belongs to a function that was inlined, the source +information for all enclosing scopes back to the first non-inlined +function will also be printed. For example, if main inlines +callee1 which inlines callee2, and address is from +callee2, the source information for callee1 and main +will also be printed. + +
-j
--section
Read offsets relative to the specified section instead of absolute addresses. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar-cmdline.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar-cmdline.html new file mode 100644 index 0000000..8f9e64a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar-cmdline.html @@ -0,0 +1,240 @@ + + +ar cmdline - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Up: ar +



+
+ +

1.1 Controlling ar on the Command Line

+ +
     
+     ar [-X32_64] [-]p[mod [relpos] [count]] archive [member...]
+     
+
+

When you use ar in the Unix style, ar insists on at least two +arguments to execute: one keyletter specifying the operation +(optionally accompanied by other keyletters specifying +modifiers), and the archive name to act on. + +

Most operations can also accept further member arguments, +specifying particular files to operate on. + + +

gnu ar allows you to mix the operation code p and modifier +flags mod in any order, within the first command-line argument. + +

If you wish, you may begin the first command-line argument with a +dash. + +

The p keyletter specifies what operation to execute; it may be +any of the following, but you must specify only one of them: + +

+
d
Delete modules from the archive. Specify the names of modules to +be deleted as member...; the archive is untouched if you +specify no files to delete. + +

If you specify the v modifier, ar lists each module +as it is deleted. + +

m
Use this operation to move members in an archive. + +

The ordering of members in an archive can make a difference in how +programs are linked using the library, if a symbol is defined in more +than one member. + +

If no modifiers are used with m, any members you name in the +member arguments are moved to the end of the archive; +you can use the a, b, or i modifiers to move them to a +specified place instead. + +

p
Print the specified members of the archive, to the standard +output file. If the v modifier is specified, show the member +name before copying its contents to standard output. + +

If you specify no member arguments, all the files in the archive are +printed. + +

q
Quick append; Historically, add the files member... to the end of +archive, without checking for replacement. + +

The modifiers a, b, and i do not affect this +operation; new members are always placed at the end of the archive. + +

The modifier v makes ar list each file as it is appended. + +

Since the point of this operation is speed, the archive's symbol table +index is not updated, even if it already existed; you can use ar s or +ranlib explicitly to update the symbol table index. + +

However, too many different systems assume quick append rebuilds the +index, so gnu ar implements q as a synonym for r. + +

r
Insert the files member... into archive (with +replacement). This operation differs from q in that any +previously existing members are deleted if their names match those being +added. + +

If one of the files named in member... does not exist, ar +displays an error message, and leaves undisturbed any existing members +of the archive matching that name. + +

By default, new members are added at the end of the file; but you may +use one of the modifiers a, b, or i to request +placement relative to some existing member. + +

The modifier v used with this operation elicits a line of +output for each file inserted, along with one of the letters a or +r to indicate whether the file was appended (no old member +deleted) or replaced. + +

t
Display a table listing the contents of archive, or those +of the files listed in member... that are present in the +archive. Normally only the member name is shown; if you also want to +see the modes (permissions), timestamp, owner, group, and size, you can +request that by also specifying the v modifier. + +

If you do not specify a member, all files in the archive +are listed. + +

If there is more than one file with the same name (say, fie) in +an archive (say b.a), ar t b.a fie lists only the +first instance; to see them all, you must ask for a complete +listing—in our example, ar t b.a. + + + +

x
Extract members (named member) from the archive. You can +use the v modifier with this operation, to request that +ar list each name as it extracts it. + +

If you do not specify a member, all files in the archive +are extracted. + +

Files cannot be extracted from a thin archive. + +

+ +

A number of modifiers (mod) may immediately follow the p +keyletter, to specify variations on an operation's behavior: + +

+
a
Add new files after an existing member of the +archive. If you use the modifier a, the name of an existing archive +member must be present as the relpos argument, before the +archive specification. + +
b
Add new files before an existing member of the +archive. If you use the modifier b, the name of an existing archive +member must be present as the relpos argument, before the +archive specification. (same as i). + +
c
Create the archive. The specified archive is always +created if it did not exist, when you request an update. But a warning is +issued unless you specify in advance that you expect to create it, by +using this modifier. + +
f
Truncate names in the archive. gnu ar will normally permit file +names of any length. This will cause it to create archives which are +not compatible with the native ar program on some systems. If +this is a concern, the f modifier may be used to truncate file +names when putting them in the archive. + +
i
Insert new files before an existing member of the +archive. If you use the modifier i, the name of an existing archive +member must be present as the relpos argument, before the +archive specification. (same as b). + +
l
This modifier is accepted but not used. + + + +
N
Uses the count parameter. This is used if there are multiple +entries in the archive with the same name. Extract or delete instance +count of the given name from the archive. + +
o
Preserve the original dates of members when extracting them. If +you do not specify this modifier, files extracted from the archive +are stamped with the time of extraction. + +
P
Use the full path name when matching names in the archive. gnu +ar can not create an archive with a full path name (such archives +are not POSIX complaint), but other archive creators can. This option +will cause gnu ar to match file names using a complete path +name, which can be convenient when extracting a single file from an +archive created by another tool. + +
s
Write an object-file index into the archive, or update an existing one, +even if no other change is made to the archive. You may use this modifier +flag either with any operation, or alone. Running ar s on an +archive is equivalent to running ranlib on it. + +
S
Do not generate an archive symbol table. This can speed up building a +large library in several steps. The resulting archive can not be used +with the linker. In order to build a symbol table, you must omit the +S modifier on the last execution of ar, or you must run +ranlib on the archive. + +
T
Make the specified archive a thin archive. If it already +exists and is a regular archive, the existing members must be present +in the same directory as archive. + +
u
Normally, ar r... inserts all files +listed into the archive. If you would like to insert only those +of the files you list that are newer than existing members of the same +names, use this modifier. The u modifier is allowed only for the +operation r (replace). In particular, the combination qu is +not allowed, since checking the timestamps would lose any speed +advantage from the operation q. + +
v
This modifier requests the verbose version of an operation. Many +operations display additional information, such as filenames processed, +when the modifier v is appended. + +
V
This modifier shows the version number of ar. +
+ +

ar ignores an initial option spelt -X32_64, for +compatibility with AIX. The behaviour produced by this option is the +default for gnu ar. ar does not support any of the other +-X options; in particular, it does not support -X32 +which is the default for AIX ar. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar-scripts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar-scripts.html new file mode 100644 index 0000000..3693d46 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar-scripts.html @@ -0,0 +1,174 @@ + + +ar scripts - GNU Binary Utilities + + + + + + + + + + + + +

+

+Previous: ar cmdline, +Up: ar +



+
+ +

1.2 Controlling ar with a Script

+ +
     ar -M [ <script ]
+
+

If you use the single command-line option -M with ar, you +can control its operation with a rudimentary command language. This +form of ar operates interactively if standard input is coming +directly from a terminal. During interactive use, ar prompts for +input (the prompt is AR >), and continues executing even after +errors. If you redirect standard input to a script file, no prompts are +issued, and ar abandons execution (with a nonzero exit code) +on any error. + +

The ar command language is not designed to be equivalent +to the command-line options; in fact, it provides somewhat less control +over archives. The only purpose of the command language is to ease the +transition to gnu ar for developers who already have scripts +written for the MRI “librarian” program. + +

The syntax for the ar command language is straightforward: +

    +
  • commands are recognized in upper or lower case; for example, LIST +is the same as list. In the following descriptions, commands are +shown in upper case for clarity. + +
  • a single command may appear on each line; it is the first word on the +line. + +
  • empty lines are allowed, and have no effect. + +
  • comments are allowed; text after either of the characters * +or ; is ignored. + +
  • Whenever you use a list of names as part of the argument to an ar +command, you can separate the individual names with either commas or +blanks. Commas are shown in the explanations below, for clarity. + +
  • + is used as a line continuation character; if + appears +at the end of a line, the text on the following line is considered part +of the current command. +
+ +

Here are the commands you can use in ar scripts, or when using +ar interactively. Three of them have special significance: + +

OPEN or CREATE specify a current archive, which is +a temporary file required for most of the other commands. + +

SAVE commits the changes so far specified by the script. Prior +to SAVE, commands affect only the temporary copy of the current +archive. + +

+
ADDLIB archive
ADDLIB archive (module, module, ... module)
Add all the contents of archive (or, if specified, each named +module from archive) to the current archive. + +

Requires prior use of OPEN or CREATE. + +

ADDMOD member, member, ... member
+ +Add each named member as a module in the current archive. + +

Requires prior use of OPEN or CREATE. + +

CLEAR
Discard the contents of the current archive, canceling the effect of +any operations since the last SAVE. May be executed (with no +effect) even if no current archive is specified. + +
CREATE archive
Creates an archive, and makes it the current archive (required for many +other commands). The new archive is created with a temporary name; it +is not actually saved as archive until you use SAVE. +You can overwrite existing archives; similarly, the contents of any +existing file named archive will not be destroyed until SAVE. + +
DELETE module, module, ... module
Delete each listed module from the current archive; equivalent to +ar -d archive module ... module. + +

Requires prior use of OPEN or CREATE. + +

DIRECTORY archive (module, ... module)
DIRECTORY archive (module, ... module) outputfile
List each named module present in archive. The separate +command VERBOSE specifies the form of the output: when verbose +output is off, output is like that of ar -t archive +module.... When verbose output is on, the listing is like +ar -tv archive module.... + +

Output normally goes to the standard output stream; however, if you +specify outputfile as a final argument, ar directs the +output to that file. + +

END
Exit from ar, with a 0 exit code to indicate successful +completion. This command does not save the output file; if you have +changed the current archive since the last SAVE command, those +changes are lost. + +
EXTRACT module, module, ... module
Extract each named module from the current archive, writing them +into the current directory as separate files. Equivalent to ar -x +archive module.... + +

Requires prior use of OPEN or CREATE. + +

LIST
Display full contents of the current archive, in “verbose” style +regardless of the state of VERBOSE. The effect is like ar +tv archive. (This single command is a gnu ar +enhancement, rather than present for MRI compatibility.) + +

Requires prior use of OPEN or CREATE. + +

OPEN archive
Opens an existing archive for use as the current archive (required for +many other commands). Any changes as the result of subsequent commands +will not actually affect archive until you next use SAVE. + +
REPLACE module, module, ... module
In the current archive, replace each existing module (named in +the REPLACE arguments) from files in the current working directory. +To execute this command without errors, both the file, and the module in +the current archive, must exist. + +

Requires prior use of OPEN or CREATE. + +

VERBOSE
Toggle an internal flag governing the output from DIRECTORY. +When the flag is on, DIRECTORY output matches output from +ar -tv .... + +
SAVE
Commit your changes to the current archive, and actually save it as a +file with the name specified in the last CREATE or OPEN +command. + +

Requires prior use of OPEN or CREATE. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar.html new file mode 100644 index 0000000..de414c8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ar.html @@ -0,0 +1,110 @@ + + +ar - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 ar

+ +

+ + +

     ar [-]p[mod [relpos] [count]] archive [member...]
+     ar -M [ <mri-script ]
+
+ +

The gnu ar program creates, modifies, and extracts from +archives. An archive is a single file holding a collection of +other files in a structure that makes it possible to retrieve +the original individual files (called members of the archive). + +

The original files' contents, mode (permissions), timestamp, owner, and +group are preserved in the archive, and can be restored on +extraction. + +

gnu ar can maintain archives whose members have names of any +length; however, depending on how ar is configured on your +system, a limit on member-name length may be imposed for compatibility +with archive formats maintained with other tools. If it exists, the +limit is often 15 characters (typical of formats related to a.out) or 16 +characters (typical of formats related to coff). + +

ar is considered a binary utility because archives of this sort +are most often used as libraries holding commonly needed +subroutines. + +

ar creates an index to the symbols defined in relocatable +object modules in the archive when you specify the modifier s. +Once created, this index is updated in the archive whenever ar +makes a change to its contents (save for the q update operation). +An archive with such an index speeds up linking to the library, and +allows routines in the library to call each other without regard to +their placement in the archive. + +

You may use nm -s or nm --print-armap to list this index +table. If an archive lacks the table, another form of ar called +ranlib can be used to add just the table. + +

gnu ar can optionally create a thin archive, +which contains a symbol index and references to the original copies +of the member files of the archives. Such an archive is useful +for building libraries for use within a local build, where the +relocatable objects are expected to remain available, and copying the +contents of each object would only waste time and space. Thin archives +are also flattened, so that adding one or more archives to a +thin archive will add the elements of the nested archive individually. +The paths to the elements of the archive are stored relative to the +archive itself. + +

gnu ar is designed to be compatible with two different +facilities. You can control its activity using command-line options, +like the different varieties of ar on Unix systems; or, if you +specify the single command-line option -M, you can control it +with a script supplied via standard input, like the MRI “librarian” +program. + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/c_002b_002bfilt.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/c_002b_002bfilt.html new file mode 100644 index 0000000..2966070 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/c_002b_002bfilt.html @@ -0,0 +1,180 @@ + + +c++filt - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: strip, +Up: Top +



+
+ +

9 c++filt

+ +

+ + +

     
+     c++filt [-_|--strip-underscores]
+             [-n|--no-strip-underscores]
+             [-p|--no-params]
+             [-t|--types]
+             [-i|--no-verbose]
+             [-s format|--format=format]
+             [--help]  [--version]  [symbol...]
+     
+
+ +

The C++ and Java languages provide function overloading, which means +that you can write many functions with the same name, providing that +each function takes parameters of different types. In order to be +able to distinguish these similarly named functions C++ and Java +encode them into a low-level assembler name which uniquely identifies +each different version. This process is known as mangling. The +c++filt +1 +program does the inverse mapping: it decodes (demangles) low-level +names into user-level names so that they can be read. + +

Every alphanumeric word (consisting of letters, digits, underscores, +dollars, or periods) seen in the input is a potential mangled name. +If the name decodes into a C++ name, the C++ name replaces the +low-level name in the output, otherwise the original word is output. +In this way you can pass an entire assembler source file, containing +mangled names, through c++filt and see the same source file +containing demangled names. + +

You can also use c++filt to decipher individual symbols by +passing them on the command line: + +

     c++filt symbol
+
+

If no symbol arguments are given, c++filt reads symbol +names from the standard input instead. All the results are printed on +the standard output. The difference between reading names from the +command line versus reading names from the standard input is that +command line arguments are expected to be just mangled names and no +checking is performed to separate them from surrounding text. Thus +for example: + +

     c++filt -n _Z1fv
+
+

will work and demangle the name to “f()” whereas: + +

     c++filt -n _Z1fv,
+
+

will not work. (Note the extra comma at the end of the mangled +name which makes it invalid). This command however will work: + +

     echo _Z1fv, | c++filt -n
+
+

and will display “f(),”, i.e., the demangled name followed by a +trailing comma. This behaviour is because when the names are read +from the standard input it is expected that they might be part of an +assembler source file where there might be extra, extraneous +characters trailing after a mangled name. For example: + +

         .type   _Z1fv, @function
+
+ + +
+
-_
--strip-underscores
On some systems, both the C and C++ compilers put an underscore in front +of every name. For example, the C name foo gets the low-level +name _foo. This option removes the initial underscore. Whether +c++filt removes the underscore by default is target dependent. + +
-j
--java
Prints demangled names using Java syntax. The default is to use C++ +syntax. + +
-n
--no-strip-underscores
Do not remove the initial underscore. + +
-p
--no-params
When demangling the name of a function, do not display the types of +the function's parameters. + +
-t
--types
Attempt to demangle types as well as function names. This is disabled +by default since mangled types are normally only used internally in +the compiler, and they can be confused with non-mangled names. For example, +a function called “a” treated as a mangled type name would be +demangled to “signed char”. + +
-i
--no-verbose
Do not include implementation details (if any) in the demangled +output. + +
-s format
--format=format
c++filt can decode various methods of mangling, used by +different compilers. The argument to this option selects which +method it uses: + +
+
auto
Automatic selection based on executable (the default method) +
gnu
the one used by the gnu C++ compiler (g++) +
lucid
the one used by the Lucid compiler (lcc) +
arm
the one specified by the C++ Annotated Reference Manual +
hp
the one used by the HP compiler (aCC) +
edg
the one used by the EDG compiler +
gnu-v3
the one used by the gnu C++ compiler (g++) with the V3 ABI. +
java
the one used by the gnu Java compiler (gcj) +
gnat
the one used by the gnu Ada compiler (GNAT). +
+ +
--help
Print a summary of the options to c++filt and exit. + +
--version
Print the version number of c++filt and exit. +
+ + +
+Warning: c++filt is a new utility, and the details of its +user interface are subject to change in future releases. In particular, +a command-line option may be required in the future to decode a name +passed as an argument on the command line; in other words, + +
          c++filt symbol
+     
+

may in a future release become + +

          c++filt option symbol
+     
+
+ +
+
+

Footnotes

[1] MS-DOS does not allow + characters in file names, so on +MS-DOS this program is named CXXFILT.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/def-file-format.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/def-file-format.html new file mode 100644 index 0000000..be85b51 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/def-file-format.html @@ -0,0 +1,76 @@ + + +def file format - GNU Binary Utilities + + + + + + + + + + + +
+

+Up: dlltool +



+
+ +

14.1 The format of the dlltool .def file

+ +

A .def file contains any number of the following commands: + +

+
NAME name [ , base ]
The result is going to be named name.exe. + +
LIBRARY name [ , base ]
The result is going to be named name.dll. + +
EXPORTS ( ( ( name1 [ = name2 ] ) | ( name1 = module-name . external-name ) )
[ integer ] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *
Declares name1 as an exported symbol from the DLL, with optional +ordinal number integer, or declares name1 as an alias +(forward) of the function external-name in the DLL +module-name. + +
IMPORTS ( ( internal-name = module-name . integer ) | [ internal-name = ] module-name . external-name ) ) *
Declares that external-name or the exported function whose +ordinal number is integer is to be imported from the file +module-name. If internal-name is specified then this is +the name that the imported function will be referred to in the body of +the DLL. + +
DESCRIPTION string
Puts string into the output .exp file in the +.rdata section. + +
STACKSIZE number-reserve [, number-commit ]
HEAPSIZE number-reserve [, number-commit ]
Generates --stack or --heap +number-reserve,number-commit in the output .drectve +section. The linker will see this and act upon it. + +
CODE attr +
DATA attr +
SECTIONS ( section-name attr + ) *
Generates --attr section-name attr in the output +.drectve section, where attr is one of READ, +WRITE, EXECUTE or SHARED. The linker will see +this and act upon it. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/dlltool.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/dlltool.html new file mode 100644 index 0000000..6a74866 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/dlltool.html @@ -0,0 +1,273 @@ + + +dlltool - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: windmc, +Up: Top +



+
+ +

14 dlltool

+ +

+dlltool is used to create the files needed to create dynamic +link libraries (DLLs) on systems which understand PE format image +files such as Windows. A DLL contains an export table which contains +information that the runtime loader needs to resolve references from a +referencing program. + +

The export table is generated by this program by reading in a +.def file or scanning the .a and .o files which +will be in the DLL. A .o file can contain information in +special .drectve sections with export information. + +

+Note: dlltool is not always built as part of the +binary utilities, since it is only useful for those targets which +support DLLs. +
+ + +
     
+     dlltool [-d|--input-def def-file-name]
+             [-b|--base-file base-file-name]
+             [-e|--output-exp exports-file-name]
+             [-z|--output-def def-file-name]
+             [-l|--output-lib library-file-name]
+             [--export-all-symbols] [--no-export-all-symbols]
+             [--exclude-symbols list]
+             [--no-default-excludes]
+             [-S|--as path-to-assembler] [-f|--as-flags options]
+             [-D|--dllname name] [-m|--machine machine]
+             [-a|--add-indirect]
+             [-U|--add-underscore] [--add-stdcall-underscore]
+             [-k|--kill-at] [-A|--add-stdcall-alias]
+             [-p|--ext-prefix-alias prefix]
+             [-x|--no-idata4] [-c|--no-idata5] [-i|--interwork]
+             [-n|--nodelete] [-t|--temp-prefix prefix]
+             [-v|--verbose]
+             [-h|--help] [-V|--version]
+             [object-file ...]
+     
+
+ +

dlltool reads its inputs, which can come from the -d and +-b options as well as object files specified on the command +line. It then processes these inputs and if the -e option has +been specified it creates a exports file. If the -l option +has been specified it creates a library file and if the -z option +has been specified it creates a def file. Any or all of the -e, +-l and -z options can be present in one invocation of +dlltool. + +

When creating a DLL, along with the source for the DLL, it is necessary +to have three other files. dlltool can help with the creation of +these files. + +

The first file is a .def file which specifies which functions are +exported from the DLL, which functions the DLL imports, and so on. This +is a text file and can be created by hand, or dlltool can be used +to create it using the -z option. In this case dlltool +will scan the object files specified on its command line looking for +those functions which have been specially marked as being exported and +put entries for them in the .def file it creates. + +

In order to mark a function as being exported from a DLL, it needs to +have an -export:<name_of_function> entry in the .drectve +section of the object file. This can be done in C by using the +asm() operator: + +

       asm (".section .drectve");
+       asm (".ascii \"-export:my_func\"");
+     
+       int my_func (void) { ... }
+
+

The second file needed for DLL creation is an exports file. This file +is linked with the object files that make up the body of the DLL and it +handles the interface between the DLL and the outside world. This is a +binary file and it can be created by giving the -e option to +dlltool when it is creating or reading in a .def file. + +

The third file needed for DLL creation is the library file that programs +will link with in order to access the functions in the DLL. This file +can be created by giving the -l option to dlltool when it +is creating or reading in a .def file. + +

dlltool builds the library file by hand, but it builds the +exports file by creating temporary files containing assembler statements +and then assembling these. The -S command line option can be +used to specify the path to the assembler that dlltool will use, +and the -f option can be used to pass specific flags to that +assembler. The -n can be used to prevent dlltool from deleting +these temporary assembler files when it is done, and if -n is +specified twice then this will prevent dlltool from deleting the +temporary object files it used to build the library. + +

Here is an example of creating a DLL from a source file dll.c and +also creating a program (from an object file called program.o) +that uses that DLL: + +

       gcc -c dll.c
+       dlltool -e exports.o -l dll.lib dll.o
+       gcc dll.o exports.o -o dll.dll
+       gcc program.o dll.lib -o program
+
+ + +

The command line options have the following meanings: + +

+
-d filename
--input-def filename
Specifies the name of a .def file to be read in and processed. + +
-b filename
--base-file filename
Specifies the name of a base file to be read in and processed. The +contents of this file will be added to the relocation section in the +exports file generated by dlltool. + +
-e filename
--output-exp filename
Specifies the name of the export file to be created by dlltool. + +
-z filename
--output-def filename
Specifies the name of the .def file to be created by dlltool. + +
-l filename
--output-lib filename
Specifies the name of the library file to be created by dlltool. + +
--export-all-symbols
Treat all global and weak defined symbols found in the input object +files as symbols to be exported. There is a small list of symbols which +are not exported by default; see the --no-default-excludes +option. You may add to the list of symbols to not export by using the +--exclude-symbols option. + +
--no-export-all-symbols
Only export symbols explicitly listed in an input .def file or in +.drectve sections in the input object files. This is the default +behaviour. The .drectve sections are created by dllexport +attributes in the source code. + +
--exclude-symbols list
Do not export the symbols in list. This is a list of symbol names +separated by comma or colon characters. The symbol names should not +contain a leading underscore. This is only meaningful when +--export-all-symbols is used. + +
--no-default-excludes
When --export-all-symbols is used, it will by default avoid +exporting certain special symbols. The current list of symbols to avoid +exporting is DllMain@12, DllEntryPoint@0, +impure_ptr. You may use the --no-default-excludes option +to go ahead and export these special symbols. This is only meaningful +when --export-all-symbols is used. + +
-S path
--as path
Specifies the path, including the filename, of the assembler to be used +to create the exports file. + +
-f options
--as-flags options
Specifies any specific command line options to be passed to the +assembler when building the exports file. This option will work even if +the -S option is not used. This option only takes one argument, +and if it occurs more than once on the command line, then later +occurrences will override earlier occurrences. So if it is necessary to +pass multiple options to the assembler they should be enclosed in +double quotes. + +
-D name
--dll-name name
Specifies the name to be stored in the .def file as the name of +the DLL when the -e option is used. If this option is not +present, then the filename given to the -e option will be +used as the name of the DLL. + +
-m machine
-machine machine
Specifies the type of machine for which the library file should be +built. dlltool has a built in default type, depending upon how +it was created, but this option can be used to override that. This is +normally only useful when creating DLLs for an ARM processor, when the +contents of the DLL are actually encode using Thumb instructions. + +
-a
--add-indirect
Specifies that when dlltool is creating the exports file it +should add a section which allows the exported functions to be +referenced without using the import library. Whatever the hell that +means! + +
-U
--add-underscore
Specifies that when dlltool is creating the exports file it +should prepend an underscore to the names of all exported symbols. + +
--add-stdcall-underscore
Specifies that when dlltool is creating the exports file it +should prepend an underscore to the names of exported stdcall +functions. Variable names and non-stdcall function names are not modified. +This option is useful when creating GNU-compatible import libs for third +party DLLs that were built with MS-Windows tools. + +
-k
--kill-at
Specifies that when dlltool is creating the exports file it +should not append the string @ <number>. These numbers are +called ordinal numbers and they represent another way of accessing the +function in a DLL, other than by name. + +
-A
--add-stdcall-alias
Specifies that when dlltool is creating the exports file it +should add aliases for stdcall symbols without @ <number> +in addition to the symbols with @ <number>. + +
-p
--ext-prefix-alias prefix
Causes dlltool to create external aliases for all DLL +imports with the specified prefix. The aliases are created for both +external and import symbols with no leading underscore. + +
-x
--no-idata4
Specifies that when dlltool is creating the exports and library +files it should omit the .idata4 section. This is for compatibility +with certain operating systems. + +
-c
--no-idata5
Specifies that when dlltool is creating the exports and library +files it should omit the .idata5 section. This is for compatibility +with certain operating systems. + +
-i
--interwork
Specifies that dlltool should mark the objects in the library +file and exports file that it produces as supporting interworking +between ARM and Thumb code. + +
-n
--nodelete
Makes dlltool preserve the temporary assembler files it used to +create the exports file. If this option is repeated then dlltool will +also preserve the temporary object files it uses to create the library +file. + +
-t prefix
--temp-prefix prefix
Makes dlltool use prefix when constructing the names of +temporary assembler and object files. By default, the temp file prefix +is generated from the pid. + +
-v
--verbose
Make dlltool describe what it is doing. + +
-h
--help
Displays a list of command line options and then exits. + +
-V
--version
Displays dlltool's version number and then exits. + +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/index.html new file mode 100644 index 0000000..e969d5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/index.html @@ -0,0 +1,122 @@ + + +GNU Binary Utilities + + + + + + + + + + +

GNU Binary Utilities

+ + + + +
+

+Next: , +Up: (dir) +



+
+ +

Introduction

+ +

This brief manual contains documentation for the gnu binary +utilities +(GNU Binutils) +version 2.19: + +

This document is distributed under the terms of the GNU Free +Documentation License. A copy of the license is included in the +section entitled “GNU Free Documentation License”. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/nlmconv.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/nlmconv.html new file mode 100644 index 0000000..0a8fa4d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/nlmconv.html @@ -0,0 +1,111 @@ + + +nlmconv - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: addr2line, +Up: Top +



+
+ +

11 nlmconv

+ +

nlmconv converts a relocatable object file into a NetWare +Loadable Module. + +

+Warning: nlmconv is not always built as part of the binary +utilities, since it is only useful for NLM targets. +
+ + +
     
+     nlmconv [-I bfdname|--input-target=bfdname]
+             [-O bfdname|--output-target=bfdname]
+             [-T headerfile|--header-file=headerfile]
+             [-d|--debug] [-l linker|--linker=linker]
+             [-h|--help] [-V|--version]
+             infile outfile
+     
+
+ +

nlmconv converts the relocatable i386 object file +infile into the NetWare Loadable Module outfile, optionally +reading headerfile for NLM header information. For instructions +on writing the NLM command file language used in header files, see the +linkers section, NLMLINK in particular, of the NLM +Development and Tools Overview, which is part of the NLM Software +Developer's Kit (“NLM SDK”), available from Novell, Inc. +nlmconv uses the gnu Binary File Descriptor library to read +infile; +see BFD (Using LD), for more information. + +

nlmconv can perform a link step. In other words, you can list +more than one object file for input if you list them in the definitions +file (rather than simply specifying one input file on the command line). +In this case, nlmconv calls the linker for you. + + + +

+
-I bfdname
--input-target=bfdname
Object format of the input file. nlmconv can usually determine +the format of a given file (so no default is necessary). +See Target Selection, for more information. + +
-O bfdname
--output-target=bfdname
Object format of the output file. nlmconv infers the output +format based on the input format, e.g. for a i386 input file the +output format is nlm32-i386. +See Target Selection, for more information. + +
-T headerfile
--header-file=headerfile
Reads headerfile for NLM header information. For instructions on +writing the NLM command file language used in header files, see see the +linkers section, of the NLM Development and Tools +Overview, which is part of the NLM Software Developer's Kit, available +from Novell, Inc. + +
-d
--debug
Displays (on standard error) the linker command line used by nlmconv. + +
-l linker
--linker=linker
Use linker for any linking. linker can be an absolute or a +relative pathname. + +
-h
--help
Prints a usage summary. + +
-V
--version
Prints the version number for nlmconv. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/nm.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/nm.html new file mode 100644 index 0000000..7a0b3df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/nm.html @@ -0,0 +1,234 @@ + + +nm - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: ar, +Up: Top +



+
+ +

2 nm

+ +

+ + +

     
+     nm [-a|--debug-syms] [-g|--extern-only]
+        [-B] [-C|--demangle[=style]] [-D|--dynamic]
+        [-S|--print-size] [-s|--print-armap]
+        [-A|-o|--print-file-name][--special-syms]
+        [-n|-v|--numeric-sort] [-p|--no-sort]
+        [-r|--reverse-sort] [--size-sort] [-u|--undefined-only]
+        [-t radix|--radix=radix] [-P|--portability]
+        [--target=bfdname] [-fformat|--format=format]
+        [--defined-only] [-l|--line-numbers] [--no-demangle]
+        [-V|--version] [-X 32_64] [--help]  [objfile...]
+     
+
+ +

gnu nm lists the symbols from object files objfile.... +If no object files are listed as arguments, nm assumes the file +a.out. + +

For each symbol, nm shows: + +

    +
  • The symbol value, in the radix selected by options (see below), or +hexadecimal by default. + +
  • The symbol type. At least the following types are used; others are, as +well, depending on the object file format. If lowercase, the symbol is +local; if uppercase, the symbol is global (external). + + + +
    +
    A
    The symbol's value is absolute, and will not be changed by further +linking. + +
    B
    b
    The symbol is in the uninitialized data section (known as BSS). + +
    C
    The symbol is common. Common symbols are uninitialized data. When +linking, multiple common symbols may appear with the same name. If the +symbol is defined anywhere, the common symbols are treated as undefined +references. +For more details on common symbols, see the discussion of +–warn-common in Linker options (The GNU linker). + +
    D
    d
    The symbol is in the initialized data section. + +
    G
    g
    The symbol is in an initialized data section for small objects. Some +object file formats permit more efficient access to small data objects, +such as a global int variable as opposed to a large global array. + +
    I
    The symbol is an indirect reference to another symbol. This is a gnu +extension to the a.out object file format which is rarely used. + +
    i
    The symbol is in a section specific to the implementation of DLLs. + +
    N
    The symbol is a debugging symbol. + +
    p
    The symbols is in a stack unwind section. + +
    R
    r
    The symbol is in a read only data section. + +
    S
    s
    The symbol is in an uninitialized data section for small objects. + +
    T
    t
    The symbol is in the text (code) section. + +
    U
    The symbol is undefined. + +
    V
    v
    The symbol is a weak object. When a weak defined symbol is linked with +a normal defined symbol, the normal defined symbol is used with no error. +When a weak undefined symbol is linked and the symbol is not defined, +the value of the weak symbol becomes zero with no error. On some +systems, uppercase indicates that a default value has been specified. + +
    W
    w
    The symbol is a weak symbol that has not been specifically tagged as a +weak object symbol. When a weak defined symbol is linked with a normal +defined symbol, the normal defined symbol is used with no error. +When a weak undefined symbol is linked and the symbol is not defined, +the value of the symbol is determined in a system-specific manner without +error. On some systems, uppercase indicates that a default value has been +specified. + +
    -
    The symbol is a stabs symbol in an a.out object file. In this case, the +next values printed are the stabs other field, the stabs desc field, and +the stab type. Stabs symbols are used to hold debugging information. +For more information, see Stabs (The “stabs” debug format). + +
    ?
    The symbol type is unknown, or object file format specific. +
    + +
  • The symbol name. +
+ + + +

The long and short forms of options, shown here as alternatives, are +equivalent. + +

+
-A
-o
--print-file-name
Precede each symbol by the name of the input file (or archive member) +in which it was found, rather than identifying the input file once only, +before all of its symbols. + +
-a
--debug-syms
Display all symbols, even debugger-only symbols; normally these are not +listed. + +
-B
The same as --format=bsd (for compatibility with the MIPS nm). + +
-C
--demangle[=style]
Decode (demangle) low-level symbol names into user-level names. +Besides removing any initial underscore prepended by the system, this +makes C++ function names readable. Different compilers have different +mangling styles. The optional demangling style argument can be used to +choose an appropriate demangling style for your compiler. See c++filt, +for more information on demangling. + +
--no-demangle
Do not demangle low-level symbol names. This is the default. + +
-D
--dynamic
Display the dynamic symbols rather than the normal symbols. This is +only meaningful for dynamic objects, such as certain types of shared +libraries. + +
-f format
--format=format
Use the output format format, which can be bsd, +sysv, or posix. The default is bsd. +Only the first character of format is significant; it can be +either upper or lower case. + +
-g
--extern-only
Display only external symbols. + +
-l
--line-numbers
For each symbol, use debugging information to try to find a filename and +line number. For a defined symbol, look for the line number of the +address of the symbol. For an undefined symbol, look for the line +number of a relocation entry which refers to the symbol. If line number +information can be found, print it after the other symbol information. + +
-n
-v
--numeric-sort
Sort symbols numerically by their addresses, rather than alphabetically +by their names. + +
-p
--no-sort
Do not bother to sort the symbols in any order; print them in the order +encountered. + +
-P
--portability
Use the POSIX.2 standard output format instead of the default format. +Equivalent to -f posix. + +
-S
--print-size
Print size, not the value, of defined symbols for the bsd output format. + +
-s
--print-armap
When listing symbols from archive members, include the index: a mapping +(stored in the archive by ar or ranlib) of which modules +contain definitions for which names. + +
-r
--reverse-sort
Reverse the order of the sort (whether numeric or alphabetic); let the +last come first. + +
--size-sort
Sort symbols by size. The size is computed as the difference between +the value of the symbol and the value of the symbol with the next higher +value. If the bsd output format is used the size of the symbol +is printed, rather than the value, and -S must be used in order +both size and value to be printed. + +
--special-syms
Display symbols which have a target-specific special meaning. These +symbols are usually used by the target for some special processing and +are not normally helpful when included included in the normal symbol +lists. For example for ARM targets this option would skip the mapping +symbols used to mark transitions between ARM code, THUMB code and +data. + +
-t radix
--radix=radix
Use radix as the radix for printing the symbol values. It must be +d for decimal, o for octal, or x for hexadecimal. + +
--target=bfdname
Specify an object code format other than your system's default format. +See Target Selection, for more information. + +
-u
--undefined-only
Display only undefined symbols (those external to each object file). + +
--defined-only
Display only defined symbols for each object file. + +
-V
--version
Show the version number of nm and exit. + +
-X
This option is ignored for compatibility with the AIX version of +nm. It takes one parameter which must be the string +32_64. The default mode of AIX nm corresponds +to -X 32, which is not supported by gnu nm. + +
--help
Show a summary of the options to nm and exit. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/objcopy.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/objcopy.html new file mode 100644 index 0000000..5157822 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/objcopy.html @@ -0,0 +1,546 @@ + + +objcopy - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: nm, +Up: Top +



+
+ +

3 objcopy

+ + +
     
+     objcopy [-F bfdname|--target=bfdname]
+             [-I bfdname|--input-target=bfdname]
+             [-O bfdname|--output-target=bfdname]
+             [-B bfdarch|--binary-architecture=bfdarch]
+             [-S|--strip-all]
+             [-g|--strip-debug]
+             [-K symbolname|--keep-symbol=symbolname]
+             [-N symbolname|--strip-symbol=symbolname]
+             [--strip-unneeded-symbol=symbolname]
+             [-G symbolname|--keep-global-symbol=symbolname]
+             [--localize-hidden]
+             [-L symbolname|--localize-symbol=symbolname]
+             [--globalize-symbol=symbolname]
+             [-W symbolname|--weaken-symbol=symbolname]
+             [-w|--wildcard]
+             [-x|--discard-all]
+             [-X|--discard-locals]
+             [-b byte|--byte=byte]
+             [-i interleave|--interleave=interleave]
+             [-j sectionname|--only-section=sectionname]
+             [-R sectionname|--remove-section=sectionname]
+             [-p|--preserve-dates]
+             [--debugging]
+             [--gap-fill=val]
+             [--pad-to=address]
+             [--set-start=val]
+             [--adjust-start=incr]
+             [--change-addresses=incr]
+             [--change-section-address section{=,+,-}val]
+             [--change-section-lma section{=,+,-}val]
+             [--change-section-vma section{=,+,-}val]
+             [--change-warnings] [--no-change-warnings]
+             [--set-section-flags section=flags]
+             [--add-section sectionname=filename]
+             [--rename-section oldname=newname[,flags]]
+             [--change-leading-char] [--remove-leading-char]
+             [--reverse-bytes=num]
+             [--srec-len=ival] [--srec-forceS3]
+             [--redefine-sym old=new]
+             [--redefine-syms=filename]
+             [--weaken]
+             [--keep-symbols=filename]
+             [--strip-symbols=filename]
+             [--strip-unneeded-symbols=filename]
+             [--keep-global-symbols=filename]
+             [--localize-symbols=filename]
+             [--globalize-symbols=filename]
+             [--weaken-symbols=filename]
+             [--alt-machine-code=index]
+             [--prefix-symbols=string]
+             [--prefix-sections=string]
+             [--prefix-alloc-sections=string]
+             [--add-gnu-debuglink=path-to-file]
+             [--keep-file-symbols]
+             [--only-keep-debug]
+             [--extract-symbol]
+             [--writable-text]
+             [--readonly-text]
+             [--pure]
+             [--impure]
+             [-v|--verbose]
+             [-V|--version]
+             [--help] [--info]
+             infile [outfile]
+     
+
+ +

The gnu objcopy utility copies the contents of an object +file to another. objcopy uses the gnu bfd Library to +read and write the object files. It can write the destination object +file in a format different from that of the source object file. The +exact behavior of objcopy is controlled by command-line options. +Note that objcopy should be able to copy a fully linked file +between any two formats. However, copying a relocatable object file +between any two formats may not work as expected. + +

objcopy creates temporary files to do its translations and +deletes them afterward. objcopy uses bfd to do all its +translation work; it has access to all the formats described in bfd +and thus is able to recognize most formats without being told +explicitly. See BFD (Using LD). + +

objcopy can be used to generate S-records by using an output +target of srec (e.g., use -O srec). + +

objcopy can be used to generate a raw binary file by using an +output target of binary (e.g., use -O binary). When +objcopy generates a raw binary file, it will essentially produce +a memory dump of the contents of the input object file. All symbols and +relocation information will be discarded. The memory dump will start at +the load address of the lowest section copied into the output file. + +

When generating an S-record or a raw binary file, it may be helpful to +use -S to remove sections containing debugging information. In +some cases -R will be useful to remove sections which contain +information that is not needed by the binary file. + +

Note—objcopy is not able to change the endianness of its input +files. If the input format has an endianness (some formats do not), +objcopy can only copy the inputs into file formats that have the +same endianness or which have no endianness (e.g., srec). +(However, see the --reverse-bytes option.) + + + +

+
infile
outfile
The input and output files, respectively. +If you do not specify outfile, objcopy creates a +temporary file and destructively renames the result with +the name of infile. + +
-I bfdname
--input-target=bfdname
Consider the source file's object format to be bfdname, rather than +attempting to deduce it. See Target Selection, for more information. + +
-O bfdname
--output-target=bfdname
Write the output file using the object format bfdname. +See Target Selection, for more information. + +
-F bfdname
--target=bfdname
Use bfdname as the object format for both the input and the output +file; i.e., simply transfer data from source to destination with no +translation. See Target Selection, for more information. + +
-B bfdarch
--binary-architecture=bfdarch
Useful when transforming a raw binary input file into an object file. +In this case the output architecture can be set to bfdarch. This +option will be ignored if the input file has a known bfdarch. You +can access this binary data inside a program by referencing the special +symbols that are created by the conversion process. These symbols are +called _binary_objfile_start, _binary_objfile_end and +_binary_objfile_size. e.g. you can transform a picture file into +an object file and then access it in your code using these symbols. + +
-j sectionname
--only-section=sectionname
Copy only the named section from the input file to the output file. +This option may be given more than once. Note that using this option +inappropriately may make the output file unusable. + +
-R sectionname
--remove-section=sectionname
Remove any section named sectionname from the output file. This +option may be given more than once. Note that using this option +inappropriately may make the output file unusable. + +
-S
--strip-all
Do not copy relocation and symbol information from the source file. + +
-g
--strip-debug
Do not copy debugging symbols or sections from the source file. + +
--strip-unneeded
Strip all symbols that are not needed for relocation processing. + +
-K symbolname
--keep-symbol=symbolname
When stripping symbols, keep symbol symbolname even if it would +normally be stripped. This option may be given more than once. + +
-N symbolname
--strip-symbol=symbolname
Do not copy symbol symbolname from the source file. This option +may be given more than once. + +
--strip-unneeded-symbol=symbolname
Do not copy symbol symbolname from the source file unless it is needed +by a relocation. This option may be given more than once. + +
-G symbolname
--keep-global-symbol=symbolname
Keep only symbol symbolname global. Make all other symbols local +to the file, so that they are not visible externally. This option may +be given more than once. + +
--localize-hidden
In an ELF object, mark all symbols that have hidden or internal visibility +as local. This option applies on top of symbol-specific localization options +such as -L. + +
-L symbolname
--localize-symbol=symbolname
Make symbol symbolname local to the file, so that it is not +visible externally. This option may be given more than once. + +
-W symbolname
--weaken-symbol=symbolname
Make symbol symbolname weak. This option may be given more than once. + +
--globalize-symbol=symbolname
Give symbol symbolname global scoping so that it is visible +outside of the file in which it is defined. This option may be given +more than once. + +
-w
--wildcard
Permit regular expressions in symbolnames used in other command +line options. The question mark (?), asterisk (*), backslash (\) and +square brackets ([]) operators can be used anywhere in the symbol +name. If the first character of the symbol name is the exclamation +point (!) then the sense of the switch is reversed for that symbol. +For example: + +
            -w -W !foo -W fo*
+     
+

would cause objcopy to weaken all symbols that start with “fo” +except for the symbol “foo”. + +

-x
--discard-all
Do not copy non-global symbols from the source file. + + +
-X
--discard-locals
Do not copy compiler-generated local symbols. +(These usually start with L or ..) + +
-b byte
--byte=byte
Keep only every byteth byte of the input file (header data is not +affected). byte can be in the range from 0 to interleave-1, +where interleave is given by the -i or --interleave +option, or the default of 4. This option is useful for creating files +to program rom. It is typically used with an srec output +target. + +
-i interleave
--interleave=interleave
Only copy one out of every interleave bytes. Select which byte to +copy with the -b or --byte option. The default is 4. +objcopy ignores this option if you do not specify either -b or +--byte. + +
-p
--preserve-dates
Set the access and modification dates of the output file to be the same +as those of the input file. + +
--debugging
Convert debugging information, if possible. This is not the default +because only certain debugging formats are supported, and the +conversion process can be time consuming. + +
--gap-fill val
Fill gaps between sections with val. This operation applies to +the load address (LMA) of the sections. It is done by increasing +the size of the section with the lower address, and filling in the extra +space created with val. + +
--pad-to address
Pad the output file up to the load address address. This is +done by increasing the size of the last section. The extra space is +filled in with the value specified by --gap-fill (default zero). + +
--set-start val
Set the start address of the new file to val. Not all object file +formats support setting the start address. + +
--change-start incr
--adjust-start incr
Change the start address by adding incr. Not all object file +formats support setting the start address. + +
--change-addresses incr
--adjust-vma incr
Change the VMA and LMA addresses of all sections, as well as the start +address, by adding incr. Some object file formats do not permit +section addresses to be changed arbitrarily. Note that this does not +relocate the sections; if the program expects sections to be loaded at a +certain address, and this option is used to change the sections such +that they are loaded at a different address, the program may fail. + +
--change-section-address section{=,+,-}val
--adjust-section-vma section{=,+,-}val
Set or change both the VMA address and the LMA address of the named +section. If = is used, the section address is set to +val. Otherwise, val is added to or subtracted from the +section address. See the comments under --change-addresses, +above. If section does not exist in the input file, a warning will +be issued, unless --no-change-warnings is used. + +
--change-section-lma section{=,+,-}val
Set or change the LMA address of the named section. The LMA +address is the address where the section will be loaded into memory at +program load time. Normally this is the same as the VMA address, which +is the address of the section at program run time, but on some systems, +especially those where a program is held in ROM, the two can be +different. If = is used, the section address is set to +val. Otherwise, val is added to or subtracted from the +section address. See the comments under --change-addresses, +above. If section does not exist in the input file, a warning +will be issued, unless --no-change-warnings is used. + +
--change-section-vma section{=,+,-}val
Set or change the VMA address of the named section. The VMA +address is the address where the section will be located once the +program has started executing. Normally this is the same as the LMA +address, which is the address where the section will be loaded into +memory, but on some systems, especially those where a program is held in +ROM, the two can be different. If = is used, the section address +is set to val. Otherwise, val is added to or subtracted +from the section address. See the comments under +--change-addresses, above. If section does not exist in +the input file, a warning will be issued, unless +--no-change-warnings is used. + +
--change-warnings
--adjust-warnings
If --change-section-address or --change-section-lma or +--change-section-vma is used, and the named section does not +exist, issue a warning. This is the default. + +
--no-change-warnings
--no-adjust-warnings
Do not issue a warning if --change-section-address or +--adjust-section-lma or --adjust-section-vma is used, even +if the named section does not exist. + +
--set-section-flags section=flags
Set the flags for the named section. The flags argument is a +comma separated string of flag names. The recognized names are +alloc, contents, load, noload, +readonly, code, data, rom, share, and +debug. You can set the contents flag for a section which +does not have contents, but it is not meaningful to clear the +contents flag of a section which does have contents–just remove +the section instead. Not all flags are meaningful for all object file +formats. + +
--add-section sectionname=filename
Add a new section named sectionname while copying the file. The +contents of the new section are taken from the file filename. The +size of the section will be the size of the file. This option only +works on file formats which can support sections with arbitrary names. + +
--rename-section oldname=newname[,flags]
Rename a section from oldname to newname, optionally +changing the section's flags to flags in the process. This has +the advantage over usng a linker script to perform the rename in that +the output stays as an object file and does not become a linked +executable. + +

This option is particularly helpful when the input format is binary, +since this will always create a section called .data. If for example, +you wanted instead to create a section called .rodata containing binary +data you could use the following command line to achieve it: + +

            objcopy -I binary -O <output_format> -B <architecture> \
+             --rename-section .data=.rodata,alloc,load,readonly,data,contents \
+             <input_binary_file> <output_object_file>
+     
+
--change-leading-char
Some object file formats use special characters at the start of +symbols. The most common such character is underscore, which compilers +often add before every symbol. This option tells objcopy to +change the leading character of every symbol when it converts between +object file formats. If the object file formats use the same leading +character, this option has no effect. Otherwise, it will add a +character, or remove a character, or change a character, as +appropriate. + +
--remove-leading-char
If the first character of a global symbol is a special symbol leading +character used by the object file format, remove the character. The +most common symbol leading character is underscore. This option will +remove a leading underscore from all global symbols. This can be useful +if you want to link together objects of different file formats with +different conventions for symbol names. This is different from +--change-leading-char because it always changes the symbol name +when appropriate, regardless of the object file format of the output +file. + +
--reverse-bytes=num
Reverse the bytes in a section with output contents. A section length must +be evenly divisible by the value given in order for the swap to be able to +take place. Reversing takes place before the interleaving is performed. + +

This option is used typically in generating ROM images for problematic +target systems. For example, on some target boards, the 32-bit words +fetched from 8-bit ROMs are re-assembled in little-endian byte order +regardless of the CPU byte order. Depending on the programming model, the +endianness of the ROM may need to be modified. + +

Consider a simple file with a section containing the following eight +bytes: 12345678. + +

Using --reverse-bytes=2 for the above example, the bytes in the +output file would be ordered 21436587. + +

Using --reverse-bytes=4 for the above example, the bytes in the +output file would be ordered 43218765. + +

By using --reverse-bytes=2 for the above example, followed by +--reverse-bytes=4 on the output file, the bytes in the second +output file would be ordered 34127856. + +

--srec-len=ival
Meaningful only for srec output. Set the maximum length of the Srecords +being produced to ival. This length covers both address, data and +crc fields. + +
--srec-forceS3
Meaningful only for srec output. Avoid generation of S1/S2 records, +creating S3-only record format. + +
--redefine-sym old=new
Change the name of a symbol old, to new. This can be useful +when one is trying link two things together for which you have no +source, and there are name collisions. + +
--redefine-syms=filename
Apply --redefine-sym to each symbol pair "old new" +listed in the file filename. filename is simply a flat file, +with one symbol pair per line. Line comments may be introduced by the hash +character. This option may be given more than once. + +
--weaken
Change all global symbols in the file to be weak. This can be useful +when building an object which will be linked against other objects using +the -R option to the linker. This option is only effective when +using an object file format which supports weak symbols. + +
--keep-symbols=filename
Apply --keep-symbol option to each symbol listed in the file +filename. filename is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. + +
--strip-symbols=filename
Apply --strip-symbol option to each symbol listed in the file +filename. filename is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. + +
--strip-unneeded-symbols=filename
Apply --strip-unneeded-symbol option to each symbol listed in +the file filename. filename is simply a flat file, with one +symbol name per line. Line comments may be introduced by the hash +character. This option may be given more than once. + +
--keep-global-symbols=filename
Apply --keep-global-symbol option to each symbol listed in the +file filename. filename is simply a flat file, with one +symbol name per line. Line comments may be introduced by the hash +character. This option may be given more than once. + +
--localize-symbols=filename
Apply --localize-symbol option to each symbol listed in the file +filename. filename is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. + +
--globalize-symbols=filename
Apply --globalize-symbol option to each symbol listed in the file +filename. filename is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. + +
--weaken-symbols=filename
Apply --weaken-symbol option to each symbol listed in the file +filename. filename is simply a flat file, with one symbol +name per line. Line comments may be introduced by the hash character. +This option may be given more than once. + +
--alt-machine-code=index
If the output architecture has alternate machine codes, use the +indexth code instead of the default one. This is useful in case +a machine is assigned an official code and the tool-chain adopts the +new code, but other applications still depend on the original code +being used. For ELF based architectures if the index +alternative does not exist then the value is treated as an absolute +number to be stored in the e_machine field of the ELF header. + +
--writable-text
Mark the output text as writable. This option isn't meaningful for all +object file formats. + +
--readonly-text
Make the output text write protected. This option isn't meaningful for all +object file formats. + +
--pure
Mark the output file as demand paged. This option isn't meaningful for all +object file formats. + +
--impure
Mark the output file as impure. This option isn't meaningful for all +object file formats. + +
--prefix-symbols=string
Prefix all symbols in the output file with string. + +
--prefix-sections=string
Prefix all section names in the output file with string. + +
--prefix-alloc-sections=string
Prefix all the names of all allocated sections in the output file with +string. + +
--add-gnu-debuglink=path-to-file
Creates a .gnu_debuglink section which contains a reference to path-to-file +and adds it to the output file. + +
--keep-file-symbols
When stripping a file, perhaps with --strip-debug or +--strip-unneeded, retain any symbols specifying source file names, +which would otherwise get stripped. + +
--only-keep-debug
Strip a file, removing contents of any sections that would not be +stripped by --strip-debug and leaving the debugging sections +intact. In ELF files, this preserves all note sections in the output. + +

The intention is that this option will be used in conjunction with +--add-gnu-debuglink to create a two part executable. One a +stripped binary which will occupy less space in RAM and in a +distribution and the second a debugging information file which is only +needed if debugging abilities are required. The suggested procedure +to create these files is as follows: + +

    +
  1. Link the executable as normal. Assuming that is is called +foo then... +
  2. Run objcopy --only-keep-debug foo foo.dbg to +create a file containing the debugging info. +
  3. Run objcopy --strip-debug foo to create a +stripped executable. +
  4. Run objcopy --add-gnu-debuglink=foo.dbg foo +to add a link to the debugging info into the stripped executable. +
+ +

Note—the choice of .dbg as an extension for the debug info +file is arbitrary. Also the --only-keep-debug step is +optional. You could instead do this: + +

    +
  1. Link the executable as normal. +
  2. Copy foo to foo.full +
  3. Run objcopy --strip-debug foo +
  4. Run objcopy --add-gnu-debuglink=foo.full foo +
+ +

i.e., the file pointed to by the --add-gnu-debuglink can be the +full executable. It does not have to be a file created by the +--only-keep-debug switch. + +

Note—this switch is only intended for use on fully linked files. It +does not make sense to use it on object files where the debugging +information may be incomplete. Besides the gnu_debuglink feature +currently only supports the presence of one filename containing +debugging information, not multiple filenames on a one-per-object-file +basis. + +

--extract-symbol
Keep the file's section flags and symbols but remove all section data. +Specifically, the option: + +
    +
  • removes the contents of all sections; +
  • sets the size of every section to zero; and +
  • sets the file's start address to zero. +
+ +

This option is used to build a .sym file for a VxWorks kernel. +It can also be a useful way of reducing the size of a --just-symbols +linker input file. + +

-V
--version
Show the version number of objcopy. + +
-v
--verbose
Verbose output: list all object files modified. In the case of +archives, objcopy -V lists all members of the archive. + +
--help
Show a summary of the options to objcopy. + +
--info
Display a list showing all architectures and object formats available. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/objdump.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/objdump.html new file mode 100644 index 0000000..e373855 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/objdump.html @@ -0,0 +1,427 @@ + + +objdump - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: objcopy, +Up: Top +



+
+ +

4 objdump

+ +

+ + +

     
+     objdump [-a|--archive-headers]
+             [-b bfdname|--target=bfdname]
+             [-C|--demangle[=style] ]
+             [-d|--disassemble]
+             [-D|--disassemble-all]
+             [-z|--disassemble-zeroes]
+             [-EB|-EL|--endian={big | little }]
+             [-f|--file-headers]
+             [-F|--file-offsets]
+             [--file-start-context]
+             [-g|--debugging]
+             [-e|--debugging-tags]
+             [-h|--section-headers|--headers]
+             [-i|--info]
+             [-j section|--section=section]
+             [-l|--line-numbers]
+             [-S|--source]
+             [-m machine|--architecture=machine]
+             [-M options|--disassembler-options=options]
+             [-p|--private-headers]
+             [-r|--reloc]
+             [-R|--dynamic-reloc]
+             [-s|--full-contents]
+             [-W|--dwarf]
+             [-G|--stabs]
+             [-t|--syms]
+             [-T|--dynamic-syms]
+             [-x|--all-headers]
+             [-w|--wide]
+             [--start-address=address]
+             [--stop-address=address]
+             [--prefix-addresses]
+             [--[no-]show-raw-insn]
+             [--adjust-vma=offset]
+             [--special-syms]
+             [-V|--version]
+             [-H|--help]
+             objfile...
+     
+
+ +

objdump displays information about one or more object files. +The options control what particular information to display. This +information is mostly useful to programmers who are working on the +compilation tools, as opposed to programmers who just want their +program to compile and work. + +

objfile... are the object files to be examined. When you +specify archives, objdump shows information on each of the member +object files. + + + +

The long and short forms of options, shown here as alternatives, are +equivalent. At least one option from the list +-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-r,-R,-s,-S,-t,-T,-V,-x must be given. + +

+
-a
--archive-header
If any of the objfile files are archives, display the archive +header information (in a format similar to ls -l). Besides the +information you could list with ar tv, objdump -a shows +the object file format of each archive member. + +
--adjust-vma=offset
When dumping information, first add offset to all the section +addresses. This is useful if the section addresses do not correspond to +the symbol table, which can happen when putting sections at particular +addresses when using a format which can not represent section addresses, +such as a.out. + +
-b bfdname
--target=bfdname
Specify that the object-code format for the object files is +bfdname. This option may not be necessary; objdump can +automatically recognize many formats. + +

For example, +

          objdump -b oasys -m vax -h fu.o
+     
+

displays summary information from the section headers (-h) of +fu.o, which is explicitly identified (-m) as a VAX object +file in the format produced by Oasys compilers. You can list the +formats available with the -i option. +See Target Selection, for more information. + +

-C
--demangle[=style]
Decode (demangle) low-level symbol names into user-level names. +Besides removing any initial underscore prepended by the system, this +makes C++ function names readable. Different compilers have different +mangling styles. The optional demangling style argument can be used to +choose an appropriate demangling style for your compiler. See c++filt, +for more information on demangling. + +
-g
--debugging
Display debugging information. This attempts to parse STABS and IEEE +debugging format information stored in the file and print it out using +a C like syntax. If neither of these formats are found this option +falls back on the -W option to print any DWARF information in +the file. + +
-e
--debugging-tags
Like -g, but the information is generated in a format compatible +with ctags tool. + +
-d
--disassemble
Display the assembler mnemonics for the machine instructions from +objfile. This option only disassembles those sections which are +expected to contain instructions. + +
-D
--disassemble-all
Like -d, but disassemble the contents of all sections, not just +those expected to contain instructions. + +
--prefix-addresses
When disassembling, print the complete address on each line. This is +the older disassembly format. + +
-EB
-EL
--endian={big|little}
Specify the endianness of the object files. This only affects +disassembly. This can be useful when disassembling a file format which +does not describe endianness information, such as S-records. + +
-f
--file-headers
Display summary information from the overall header of +each of the objfile files. + +
-F
--file-offsets
When disassembling sections, whenever a symbol is displayed, also +display the file offset of the region of data that is about to be +dumped. If zeroes are being skipped, then when disassembly resumes, +tell the user how many zeroes were skipped and the file offset of the +location from where the disassembly resumes. When dumping sections, +display the file offset of the location from where the dump starts. + +
--file-start-context
Specify that when displaying interlisted source code/disassembly +(assumes -S) from a file that has not yet been displayed, extend the +context to the start of the file. + +
-h
--section-headers
--headers
Display summary information from the section headers of the +object file. + +

File segments may be relocated to nonstandard addresses, for example by +using the -Ttext, -Tdata, or -Tbss options to +ld. However, some object file formats, such as a.out, do not +store the starting address of the file segments. In those situations, +although ld relocates the sections correctly, using objdump +-h to list the file section headers cannot show the correct addresses. +Instead, it shows the usual addresses, which are implicit for the +target. + +

-H
--help
Print a summary of the options to objdump and exit. + +
-i
--info
Display a list showing all architectures and object formats available +for specification with -b or -m. + +
-j name
--section=name
Display information only for section name. + +
-l
--line-numbers
Label the display (using debugging information) with the filename and +source line numbers corresponding to the object code or relocs shown. +Only useful with -d, -D, or -r. + +
-m machine
--architecture=machine
Specify the architecture to use when disassembling object files. This +can be useful when disassembling object files which do not describe +architecture information, such as S-records. You can list the available +architectures with the -i option. + +
-M options
--disassembler-options=options
Pass target specific information to the disassembler. Only supported on +some targets. If it is necessary to specify more than one +disassembler option then multiple -M options can be used or +can be placed together into a comma separated list. + +

If the target is an ARM architecture then this switch can be used to +select which register name set is used during disassembler. Specifying +-M reg-names-std (the default) will select the register names as +used in ARM's instruction set documentation, but with register 13 called +'sp', register 14 called 'lr' and register 15 called 'pc'. Specifying +-M reg-names-apcs will select the name set used by the ARM +Procedure Call Standard, whilst specifying -M reg-names-raw will +just use r followed by the register number. + +

There are also two variants on the APCS register naming scheme enabled +by -M reg-names-atpcs and -M reg-names-special-atpcs which +use the ARM/Thumb Procedure Call Standard naming conventions. (Either +with the normal register names or the special register names). + +

This option can also be used for ARM architectures to force the +disassembler to interpret all instructions as Thumb instructions by +using the switch --disassembler-options=force-thumb. This can be +useful when attempting to disassemble thumb code produced by other +compilers. + +

For the x86, some of the options duplicate functions of the -m +switch, but allow finer grained control. Multiple selections from the +following may be specified as a comma separated string. +x86-64, i386 and i8086 select disassembly for +the given architecture. intel and att select between +intel syntax mode and AT&T syntax mode. +intel-mnemonic and att-mnemonic select between +intel mnemonic mode and AT&T mnemonic mode. intel-mnemonic +implies intel and att-mnemonic implies att. +addr64, addr32, +addr16, data32 and data16 specify the default +address size and operand size. These four options will be overridden if +x86-64, i386 or i8086 appear later in the +option string. Lastly, suffix, when in AT&T mode, +instructs the disassembler to print a mnemonic suffix even when the +suffix could be inferred by the operands. + +

For PPC, booke, booke32 and booke64 select +disassembly of BookE instructions. 32 and 64 select +PowerPC and PowerPC64 disassembly, respectively. e300 +selects disassembly for the e300 family. 440 selects +disassembly for the PowerPC 440. ppcps selects disassembly +for the paired single instructions of the PPC750CL. + +

For MIPS, this option controls the printing of instruction mnemonic +names and register names in disassembled instructions. Multiple +selections from the following may be specified as a comma separated +string, and invalid options are ignored: + +

+
no-aliases
Print the 'raw' instruction mnemonic instead of some pseudo +instruction mnemonic. I.e., print 'daddu' or 'or' instead of 'move', +'sll' instead of 'nop', etc. + +
gpr-names=ABI
Print GPR (general-purpose register) names as appropriate +for the specified ABI. By default, GPR names are selected according to +the ABI of the binary being disassembled. + +
fpr-names=ABI
Print FPR (floating-point register) names as +appropriate for the specified ABI. By default, FPR numbers are printed +rather than names. + +
cp0-names=ARCH
Print CP0 (system control coprocessor; coprocessor 0) register names +as appropriate for the CPU or architecture specified by +ARCH. By default, CP0 register names are selected according to +the architecture and CPU of the binary being disassembled. + +
hwr-names=ARCH
Print HWR (hardware register, used by the rdhwr instruction) names +as appropriate for the CPU or architecture specified by +ARCH. By default, HWR names are selected according to +the architecture and CPU of the binary being disassembled. + +
reg-names=ABI
Print GPR and FPR names as appropriate for the selected ABI. + +
reg-names=ARCH
Print CPU-specific register names (CP0 register and HWR names) +as appropriate for the selected CPU or architecture. +
+ +

For any of the options listed above, ABI or +ARCH may be specified as numeric to have numbers printed +rather than names, for the selected types of registers. +You can list the available values of ABI and ARCH using +the --help option. + +

For VAX, you can specify function entry addresses with -M +entry:0xf00ba. You can use this multiple times to properly +disassemble VAX binary files that don't contain symbol tables (like +ROM dumps). In these cases, the function entry mask would otherwise +be decoded as VAX instructions, which would probably lead the rest +of the function being wrongly disassembled. + +

-p
--private-headers
Print information that is specific to the object file format. The exact +information printed depends upon the object file format. For some +object file formats, no additional information is printed. + +
-r
--reloc
Print the relocation entries of the file. If used with -d or +-D, the relocations are printed interspersed with the +disassembly. + +
-R
--dynamic-reloc
Print the dynamic relocation entries of the file. This is only +meaningful for dynamic objects, such as certain types of shared +libraries. + +
-s
--full-contents
Display the full contents of any sections requested. By default all +non-empty sections are displayed. + +
-S
--source
Display source code intermixed with disassembly, if possible. Implies +-d. + +
--show-raw-insn
When disassembling instructions, print the instruction in hex as well as +in symbolic form. This is the default except when +--prefix-addresses is used. + +
--no-show-raw-insn
When disassembling instructions, do not print the instruction bytes. +This is the default when --prefix-addresses is used. + +
-W
--dwarf
Displays the contents of the DWARF debug sections in the file, if any +are present. + +
-G
--stabs
Display the full contents of any sections requested. Display the +contents of the .stab and .stab.index and .stab.excl sections from an +ELF file. This is only useful on systems (such as Solaris 2.0) in which +.stab debugging symbol-table entries are carried in an ELF +section. In most other file formats, debugging symbol-table entries are +interleaved with linkage symbols, and are visible in the --syms +output. +For more information on stabs symbols, see Stabs (The “stabs” debug format). + +
--start-address=address
Start displaying data at the specified address. This affects the output +of the -d, -r and -s options. + +
--stop-address=address
Stop displaying data at the specified address. This affects the output +of the -d, -r and -s options. + +
-t
--syms
Print the symbol table entries of the file. +This is similar to the information provided by the nm program, +although the display format is different. The format of the output +depends upon the format of the file being dumped, but there are two main +types. One looks like this: + +
          [  4](sec  3)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .bss
+          [  6](sec  1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x00000000 fred
+     
+

where the number inside the square brackets is the number of the entry +in the symbol table, the sec number is the section number, the +fl value are the symbol's flag bits, the ty number is the +symbol's type, the scl number is the symbol's storage class and +the nx value is the number of auxilary entries associated with +the symbol. The last two fields are the symbol's value and its name. + +

The other common output format, usually seen with ELF based files, +looks like this: + +

          00000000 l    d  .bss   00000000 .bss
+          00000000 g       .text  00000000 fred
+     
+

Here the first number is the symbol's value (sometimes refered to as +its address). The next field is actually a set of characters and +spaces indicating the flag bits that are set on the symbol. These +characters are described below. Next is the section with which the +symbol is associated or *ABS* if the section is absolute (ie +not connected with any section), or *UND* if the section is +referenced in the file being dumped, but not defined there. + +

After the section name comes another field, a number, which for common +symbols is the alignment and for other symbol is the size. Finally +the symbol's name is displayed. + +

The flag characters are divided into 7 groups as follows: +

+
l
g
!
The symbol is local (l), global (g), neither (a space) or both (!). A +symbol can be neither local or global for a variety of reasons, e.g., +because it is used for debugging, but it is probably an indication of +a bug if it is ever both local and global. + +
w
The symbol is weak (w) or strong (a space). + +
C
The symbol denotes a constructor (C) or an ordinary symbol (a space). + +
W
The symbol is a warning (W) or a normal symbol (a space). A warning +symbol's name is a message to be displayed if the symbol following the +warning symbol is ever referenced. + +
I
The symbol is an indirect reference to another symbol (I) or a normal +symbol (a space). + +
d
D
The symbol is a debugging symbol (d) or a dynamic symbol (D) or a +normal symbol (a space). + +
F
f
O
The symbol is the name of a function (F) or a file (f) or an object +(O) or just a normal symbol (a space). +
+ +
-T
--dynamic-syms
Print the dynamic symbol table entries of the file. This is only +meaningful for dynamic objects, such as certain types of shared +libraries. This is similar to the information provided by the nm +program when given the -D (--dynamic) option. + +
--special-syms
When displaying symbols include those which the target considers to be +special in some way and which would not normally be of interest to the +user. + +
-V
--version
Print the version number of objdump and exit. + +
-x
--all-headers
Display all available header information, including the symbol table and +relocation entries. Using -x is equivalent to specifying all of +-a -f -h -p -r -t. + +
-w
--wide
Format some lines for output devices that have more than 80 columns. +Also do not truncate symbol names when they are displayed. + +
-z
--disassemble-zeroes
Normally the disassembly output will skip blocks of zeroes. This +option directs the disassembler to disassemble those blocks, just like +any other data. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ranlib.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ranlib.html new file mode 100644 index 0000000..4f25de1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/ranlib.html @@ -0,0 +1,78 @@ + + +ranlib - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: objdump, +Up: Top +



+
+ +

5 ranlib

+ +

+ + +

     
+     ranlib [-vVt] archive
+     
+
+ +

ranlib generates an index to the contents of an archive and +stores it in the archive. The index lists each symbol defined by a +member of an archive that is a relocatable object file. + +

You may use nm -s or nm --print-armap to list this index. + +

An archive with such an index speeds up linking to the library and +allows routines in the library to call each other without regard to +their placement in the archive. + +

The gnu ranlib program is another form of gnu ar; running +ranlib is completely equivalent to executing ar -s. +See ar. + + + +

+
-v
-V
--version
Show the version number of ranlib. + +
-t
Update the timestamp of the symbol map of an archive. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/readelf.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/readelf.html new file mode 100644 index 0000000..070d9e4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/readelf.html @@ -0,0 +1,175 @@ + + +readelf - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: ranlib, +Up: Top +



+
+ +

15 readelf

+ +

+ + +

     
+     readelf [-a|--all]
+             [-h|--file-header]
+             [-l|--program-headers|--segments]
+             [-S|--section-headers|--sections]
+             [-g|--section-groups]
+             [-t|--section-details]
+             [-e|--headers]
+             [-s|--syms|--symbols]
+             [-n|--notes]
+             [-r|--relocs]
+             [-u|--unwind]
+             [-d|--dynamic]
+             [-V|--version-info]
+             [-A|--arch-specific]
+             [-D|--use-dynamic]
+             [-x <number or name>|--hex-dump=<number or name>]
+             [-p <number or name>|--string-dump=<number or name>]
+             [-c|--archive-index]
+             [-w[lLiaprmfFsoR]|
+              --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]]
+             [-I|-histogram]
+             [-v|--version]
+             [-W|--wide]
+             [-H|--help]
+             elffile...
+     
+
+ +

readelf displays information about one or more ELF format object +files. The options control what particular information to display. + +

elffile... are the object files to be examined. 32-bit and +64-bit ELF files are supported, as are archives containing ELF files. + +

This program performs a similar function to objdump but it +goes into more detail and it exists independently of the bfd +library, so if there is a bug in bfd then readelf will not be +affected. + + + +

The long and short forms of options, shown here as alternatives, are +equivalent. At least one option besides -v or -H must be +given. + +

+
-a
--all
Equivalent to specifying --file-header, +--program-headers, --sections, --symbols, +--relocs, --dynamic, --notes and +--version-info. + +
-h
--file-header
Displays the information contained in the ELF header at the start of the +file. + +
-l
--program-headers
--segments
Displays the information contained in the file's segment headers, if it +has any. + +
-S
--sections
--section-headers
Displays the information contained in the file's section headers, if it +has any. + +
-g
--section-groups
Displays the information contained in the file's section groups, if it +has any. + +
-t
--section-details
Displays the detailed section information. Implies -S. + +
-s
--symbols
--syms
Displays the entries in symbol table section of the file, if it has one. + +
-e
--headers
Display all the headers in the file. Equivalent to -h -l -S. + +
-n
--notes
Displays the contents of the NOTE segments and/or sections, if any. + +
-r
--relocs
Displays the contents of the file's relocation section, if it has one. + +
-u
--unwind
Displays the contents of the file's unwind section, if it has one. Only +the unwind sections for IA64 ELF files are currently supported. + +
-d
--dynamic
Displays the contents of the file's dynamic section, if it has one. + +
-V
--version-info
Displays the contents of the version sections in the file, it they +exist. + +
-A
--arch-specific
Displays architecture-specific information in the file, if there +is any. + +
-D
--use-dynamic
When displaying symbols, this option makes readelf use the +symbol table in the file's dynamic section, rather than the one in the +symbols section. + +
-x <number or name>
--hex-dump=<number or name>
Displays the contents of the indicated section as a hexadecimal dump. +A number identifies a particular section by index in the section table; +any other string identifies all sections with that name in the object file. + +
-p <number or name>
--string-dump=<number or name>
Displays the contents of the indicated section as printable strings. +A number identifies a particular section by index in the section table; +any other string identifies all sections with that name in the object file. + +
-c
--archive-index
Displays the file symbol index infomation contained in the header part +of binary archives. Performs the same function as the t +command to ar, but without using the BFD library. See ar. + +
-w[lLiaprmfFsoR]
--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]
Displays the contents of the debug sections in the file, if any are +present. If one of the optional letters or words follows the switch +then only data found in those specific sections will be dumped. + +

Note: the =decodedline option will display the interpreted +contents of a .debug_line section whereas the =rawline option +dumps the contents in a raw format. + +

-I
--histogram
Display a histogram of bucket list lengths when displaying the contents +of the symbol tables. + +
-v
--version
Display the version number of readelf. + +
-W
--wide
Don't break output lines to fit into 80 columns. By default +readelf breaks section header and segment listing lines for +64-bit ELF files, so that they fit into 80 columns. This option causes +readelf to print each section header resp. each segment one a +single line, which is far more readable on terminals wider than 80 columns. + +
-H
--help
Display the command line options understood by readelf. + +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/size.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/size.html new file mode 100644 index 0000000..adf5525 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/size.html @@ -0,0 +1,132 @@ + + +size - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: readelf, +Up: Top +



+
+ +

6 size

+ +

+ + +

     
+     size [-A|-B|--format=compatibility]
+          [--help]
+          [-d|-o|-x|--radix=number]
+          [--common]
+          [-t|--totals]
+          [--target=bfdname] [-V|--version]
+          [objfile...]
+     
+
+ +

The gnu size utility lists the section sizes—and the total +size—for each of the object or archive files objfile in its +argument list. By default, one line of output is generated for each +object file or each module in an archive. + +

objfile... are the object files to be examined. +If none are specified, the file a.out will be used. + + + +

The command line options have the following meanings: + +

+
-A
-B
--format=compatibility
Using one of these options, you can choose whether the output from gnu +size resembles output from System V size (using -A, +or --format=sysv), or Berkeley size (using -B, or +--format=berkeley). The default is the one-line format similar to +Berkeley's. + + + + +

Here is an example of the Berkeley (default) format of output from +size: +

          $ size --format=Berkeley ranlib size
+          text    data    bss     dec     hex     filename
+          294880  81920   11592   388392  5ed28   ranlib
+          294880  81920   11888   388688  5ee50   size
+     
+

This is the same data, but displayed closer to System V conventions: + +

          $ size --format=SysV ranlib size
+          ranlib  :
+          section         size         addr
+          .text         294880         8192
+          .data          81920       303104
+          .bss           11592       385024
+          Total         388392
+          
+          
+          size  :
+          section         size         addr
+          .text         294880         8192
+          .data          81920       303104
+          .bss           11888       385024
+          Total         388688
+     
+
--help
Show a summary of acceptable arguments and options. + +
-d
-o
-x
--radix=number
Using one of these options, you can control whether the size of each +section is given in decimal (-d, or --radix=10); octal +(-o, or --radix=8); or hexadecimal (-x, or +--radix=16). In --radix=number, only the three +values (8, 10, 16) are supported. The total size is always given in two +radices; decimal and hexadecimal for -d or -x output, or +octal and hexadecimal if you're using -o. + +
--common
Print total size of common symbols in each file. When using Berkeley +format these are included in the bss size. + +
-t
--totals
Show totals of all objects listed (Berkeley format listing mode only). + +
--target=bfdname
Specify that the object-code format for objfile is +bfdname. This option may not be necessary; size can +automatically recognize many formats. +See Target Selection, for more information. + +
-V
--version
Display the version number of size. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/strings.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/strings.html new file mode 100644 index 0000000..bf75fb7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/strings.html @@ -0,0 +1,107 @@ + + +strings - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: size, +Up: Top +



+
+ +

7 strings

+ +

+ + +

     
+     strings [-afov] [-min-len]
+             [-n min-len] [--bytes=min-len]
+             [-t radix] [--radix=radix]
+             [-e encoding] [--encoding=encoding]
+             [-] [--all] [--print-file-name]
+             [-T bfdname] [--target=bfdname]
+             [--help] [--version] file...
+     
+
+ +

For each file given, gnu strings prints the printable +character sequences that are at least 4 characters long (or the number +given with the options below) and are followed by an unprintable +character. By default, it only prints the strings from the initialized +and loaded sections of object files; for other types of files, it prints +the strings from the whole file. + +

strings is mainly useful for determining the contents of non-text +files. + + + +

+
-a
--all
-
Do not scan only the initialized and loaded sections of object files; +scan the whole files. + +
-f
--print-file-name
Print the name of the file before each string. + +
--help
Print a summary of the program usage on the standard output and exit. + +
-min-len
-n min-len
--bytes=min-len
Print sequences of characters that are at least min-len characters +long, instead of the default 4. + +
-o
Like -t o. Some other versions of strings have -o +act like -t d instead. Since we can not be compatible with both +ways, we simply chose one. + +
-t radix
--radix=radix
Print the offset within the file before each string. The single +character argument specifies the radix of the offset—o for +octal, x for hexadecimal, or d for decimal. + +
-e encoding
--encoding=encoding
Select the character encoding of the strings that are to be found. +Possible values for encoding are: s = single-7-bit-byte +characters (ASCII, ISO 8859, etc., default), S = +single-8-bit-byte characters, b = 16-bit bigendian, l = +16-bit littleendian, B = 32-bit bigendian, L = 32-bit +littleendian. Useful for finding wide character strings. (l +and b apply to, for example, Unicode UTF-16/UCS-2 encodings). + +
-T bfdname
--target=bfdname
Specify an object code format other than your system's default format. +See Target Selection, for more information. + +
-v
--version
Print the program version number on the standard output and exit. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/strip.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/strip.html new file mode 100644 index 0000000..e4102fd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/strip.html @@ -0,0 +1,190 @@ + + +strip - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: strings, +Up: Top +



+
+ +

8 strip

+ +

+ + +

     
+     strip [-F bfdname |--target=bfdname]
+           [-I bfdname |--input-target=bfdname]
+           [-O bfdname |--output-target=bfdname]
+           [-s|--strip-all]
+           [-S|-g|-d|--strip-debug]
+           [-K symbolname |--keep-symbol=symbolname]
+           [-N symbolname |--strip-symbol=symbolname]
+           [-w|--wildcard]
+           [-x|--discard-all] [-X |--discard-locals]
+           [-R sectionname |--remove-section=sectionname]
+           [-o file] [-p|--preserve-dates]
+           [--keep-file-symbols]
+           [--only-keep-debug]
+           [-v |--verbose] [-V|--version]
+           [--help] [--info]
+           objfile...
+     
+
+ +

gnu strip discards all symbols from object files +objfile. The list of object files may include archives. +At least one object file must be given. + +

strip modifies the files named in its argument, +rather than writing modified copies under different names. + + + +

+
-F bfdname
--target=bfdname
Treat the original objfile as a file with the object +code format bfdname, and rewrite it in the same format. +See Target Selection, for more information. + +
--help
Show a summary of the options to strip and exit. + +
--info
Display a list showing all architectures and object formats available. + +
-I bfdname
--input-target=bfdname
Treat the original objfile as a file with the object +code format bfdname. +See Target Selection, for more information. + +
-O bfdname
--output-target=bfdname
Replace objfile with a file in the output format bfdname. +See Target Selection, for more information. + +
-R sectionname
--remove-section=sectionname
Remove any section named sectionname from the output file. This +option may be given more than once. Note that using this option +inappropriately may make the output file unusable. + +
-s
--strip-all
Remove all symbols. + +
-g
-S
-d
--strip-debug
Remove debugging symbols only. + +
--strip-unneeded
Remove all symbols that are not needed for relocation processing. + +
-K symbolname
--keep-symbol=symbolname
When stripping symbols, keep symbol symbolname even if it would +normally be stripped. This option may be given more than once. + +
-N symbolname
--strip-symbol=symbolname
Remove symbol symbolname from the source file. This option may be +given more than once, and may be combined with strip options other than +-K. + +
-o file
Put the stripped output in file, rather than replacing the +existing file. When this argument is used, only one objfile +argument may be specified. + +
-p
--preserve-dates
Preserve the access and modification dates of the file. + +
-w
--wildcard
Permit regular expressions in symbolnames used in other command +line options. The question mark (?), asterisk (*), backslash (\) and +square brackets ([]) operators can be used anywhere in the symbol +name. If the first character of the symbol name is the exclamation +point (!) then the sense of the switch is reversed for that symbol. +For example: + +
            -w -K !foo -K fo*
+     
+

would cause strip to only keep symbols that start with the letters +“fo”, but to discard the symbol “foo”. + +

-x
--discard-all
Remove non-global symbols. + +
-X
--discard-locals
Remove compiler-generated local symbols. +(These usually start with L or ..) + +
--keep-file-symbols
When stripping a file, perhaps with --strip-debug or +--strip-unneeded, retain any symbols specifying source file names, +which would otherwise get stripped. + +
--only-keep-debug
Strip a file, removing contents of any sections that would not be +stripped by --strip-debug and leaving the debugging sections +intact. In ELF files, this preserves all note sections in the output. + +

The intention is that this option will be used in conjunction with +--add-gnu-debuglink to create a two part executable. One a +stripped binary which will occupy less space in RAM and in a +distribution and the second a debugging information file which is only +needed if debugging abilities are required. The suggested procedure +to create these files is as follows: + +

    +
  1. Link the executable as normal. Assuming that is is called +foo then... +
  2. Run objcopy --only-keep-debug foo foo.dbg to +create a file containing the debugging info. +
  3. Run objcopy --strip-debug foo to create a +stripped executable. +
  4. Run objcopy --add-gnu-debuglink=foo.dbg foo +to add a link to the debugging info into the stripped executable. +
+ +

Note—the choice of .dbg as an extension for the debug info +file is arbitrary. Also the --only-keep-debug step is +optional. You could instead do this: + +

    +
  1. Link the executable as normal. +
  2. Copy foo to foo.full +
  3. Run strip --strip-debug foo +
  4. Run objcopy --add-gnu-debuglink=foo.full foo +
+ +

i.e., the file pointed to by the --add-gnu-debuglink can be the +full executable. It does not have to be a file created by the +--only-keep-debug switch. + +

Note—this switch is only intended for use on fully linked files. It +does not make sense to use it on object files where the debugging +information may be incomplete. Besides the gnu_debuglink feature +currently only supports the presence of one filename containing +debugging information, not multiple filenames on a one-per-object-file +basis. + +

-V
--version
Show the version number for strip. + +
-v
--verbose
Verbose output: list all object files modified. In the case of +archives, strip -v lists all members of the archive. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/windmc.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/windmc.html new file mode 100644 index 0000000..13a689e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/windmc.html @@ -0,0 +1,146 @@ + + +windmc - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: windres, +Up: Top +



+
+ +

12 windmc

+ +

windmc may be used to generator Windows message resources. + +

+Warning: windmc is not always built as part of the binary +utilities, since it is only useful for Windows targets. +
+ + +
     
+     windmc [options] input-file
+     
+
+ +

windmc reads message definitions from an input file (.mc) and +translate them into a set of output files. The output files may be of +four kinds: + +

+
h
A C header file containing the message definitions. + +
rc
A resource file compilable by the windres tool. + +
bin
One or more binary files containing the resource data for a specific +message language. + +
dbg
A C include file that maps message id's to their symbolic name. +
+ +

The exact description of these different formats is available in +documentation from Microsoft. + +

When windmc converts from the mc format to the bin +format, rc, h, and optional dbg it is acting like the +Windows Message Compiler. + + + +

+
-a
--ascii_in
Specifies that the input file specified is ANSI. This is the default +behaviour. + +
-A
--ascii_out
Specifies that messages in the output bin files should be in ANSI +format. + +
-b
--binprefix
Specifies that bin filenames should have to be prefixed by the +basename of the source file. + +
-c
--customflag
Sets the customer bit in all message id's. + +
-C codepage
--codepage_in codepage
Sets the default codepage to be used to convert input file to UTF16. The +default is ocdepage 1252. + +
-d
--decimal_values
Outputs the constants in the header file in decimal. Default is using +hexadecimal output. + +
-e ext
--extension ext
The extension for the header file. The default is .h extension. + +
-F target
--target target
Specify the BFD format to use for a bin file as output. This +is a BFD target name; you can use the --help option to see a list +of supported targets. Normally windmc will use the default +format, which is the first one listed by the --help option. +Target Selection. + +
-h path
--headerdir path
The target directory of the generated header file. The default is the +current directory. + +
-H
--help
Displays a list of command line options and then exits. + +
-m characters
--maxlength characters
Instructs windmc to generate a warning if the length +of any message exceeds the number specified. + +
-n
--nullterminate
Terminate message text in bin files by zero. By default they are +terminated by CR/LF. + +
-o
--hresult_use
Not yet implemented. Instructs windmc to generate an OLE2 header +file, using HRESULT definitions. Status codes are used if the flag is not +specified. + +
-O codepage
--codepage_out codepage
Sets the default codepage to be used to output text files. The default +is ocdepage 1252. + +
-r path
--rcdir path
The target directory for the generated rc script and the generated +bin files that the resource compiler script includes. The default +is the current directory. + +
-u
--unicode_in
Specifies that the input file is UTF16. + +
-U
--unicode_out
Specifies that messages in the output bin file should be in UTF16 +format. This is the default behaviour. + +
-v
--verbose
Enable verbose mode. + +
-V
--version
Prints the version number for windmc. + +
-x path
--xdgb path
The path of the dbg C include file that maps message id's to the +symbolic name. No such file is generated without specifying the switch. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/windres.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/windres.html new file mode 100644 index 0000000..723bddc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/binutils.html/windres.html @@ -0,0 +1,183 @@ + + +windres - GNU Binary Utilities + + + + + + + + + + + + +
+

+Next: , +Previous: nlmconv, +Up: Top +



+
+ +

13 windres

+ +

windres may be used to manipulate Windows resources. + +

+Warning: windres is not always built as part of the binary +utilities, since it is only useful for Windows targets. +
+ + +
     
+     windres [options] [input-file] [output-file]
+     
+
+ +

windres reads resources from an input file and copies them into +an output file. Either file may be in one of three formats: + +

+
rc
A text format read by the Resource Compiler. + +
res
A binary format generated by the Resource Compiler. + +
coff
A COFF object or executable. +
+ +

The exact description of these different formats is available in +documentation from Microsoft. + +

When windres converts from the rc format to the res +format, it is acting like the Windows Resource Compiler. When +windres converts from the res format to the coff +format, it is acting like the Windows CVTRES program. + +

When windres generates an rc file, the output is similar +but not identical to the format expected for the input. When an input +rc file refers to an external filename, an output rc file +will instead include the file contents. + +

If the input or output format is not specified, windres will +guess based on the file name, or, for the input file, the file contents. +A file with an extension of .rc will be treated as an rc +file, a file with an extension of .res will be treated as a +res file, and a file with an extension of .o or +.exe will be treated as a coff file. + +

If no output file is specified, windres will print the resources +in rc format to standard output. + +

The normal use is for you to write an rc file, use windres +to convert it to a COFF object file, and then link the COFF file into +your application. This will make the resources described in the +rc file available to Windows. + + + +

+
-i filename
--input filename
The name of the input file. If this option is not used, then +windres will use the first non-option argument as the input file +name. If there are no non-option arguments, then windres will +read from standard input. windres can not read a COFF file from +standard input. + +
-o filename
--output filename
The name of the output file. If this option is not used, then +windres will use the first non-option argument, after any used +for the input file name, as the output file name. If there is no +non-option argument, then windres will write to standard output. +windres can not write a COFF file to standard output. Note, +for compatibility with rc the option -fo is also +accepted, but its use is not recommended. + +
-J format
--input-format format
The input format to read. format may be res, rc, or +coff. If no input format is specified, windres will +guess, as described above. + +
-O format
--output-format format
The output format to generate. format may be res, +rc, or coff. If no output format is specified, +windres will guess, as described above. + +
-F target
--target target
Specify the BFD format to use for a COFF file as input or output. This +is a BFD target name; you can use the --help option to see a list +of supported targets. Normally windres will use the default +format, which is the first one listed by the --help option. +Target Selection. + +
--preprocessor program
When windres reads an rc file, it runs it through the C +preprocessor first. This option may be used to specify the preprocessor +to use, including any leading arguments. The default preprocessor +argument is gcc -E -xc-header -DRC_INVOKED. + +
-I directory
--include-dir directory
Specify an include directory to use when reading an rc file. +windres will pass this to the preprocessor as an -I +option. windres will also search this directory when looking for +files named in the rc file. If the argument passed to this command +matches any of the supported formats (as described in the -J +option), it will issue a deprecation warning, and behave just like the +-J option. New programs should not use this behaviour. If a +directory happens to match a format, simple prefix it with ./ +to disable the backward compatibility. + +
-D target
--define sym[=val]
Specify a -D option to pass to the preprocessor when reading an +rc file. + +
-U target
--undefine sym
Specify a -U option to pass to the preprocessor when reading an +rc file. + +
-r
Ignored for compatibility with rc. + +
-v
Enable verbose mode. This tells you what the preprocessor is if you +didn't specify one. + +
-c val
--codepage val
Specify the default codepage to use when reading an rc file. +val should be a hexadecimal prefixed by 0x or decimal +codepage code. The valid range is from zero up to 0xffff, but the +validity of the codepage is host and configuration dependent. + +
-l val
--language val
Specify the default language to use when reading an rc file. +val should be a hexadecimal language code. The low eight bits are +the language, and the high eight bits are the sublanguage. + +
--use-temp-file
Use a temporary file to instead of using popen to read the output of +the preprocessor. Use this option if the popen implementation is buggy +on the host (eg., certain non-English language versions of Windows 95 and +Windows 98 are known to have buggy popen where the output will instead +go the console). + +
--no-use-temp-file
Use popen, not a temporary file, to read the output of the preprocessor. +This is the default behaviour. + +
-h
--help
Prints a usage summary. + +
-V
--version
Prints the version number for windres. + +
--yydebug
If windres is compiled with YYDEBUG defined as 1, +this will turn on parser debugging. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/configure.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/configure.html new file mode 100644 index 0000000..ee18769 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/configure.html @@ -0,0 +1,2927 @@ + + +The GNU configure and build system + + + + + + + + + +This file documents the GNU configure and build system. + +

Copyright (C) 1998 Cygnus Solutions. + +

Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +

Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +

Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. + +

+


+Next: , +Up: (dir) +
+
+ +

GNU configure and build system

+ +

The GNU configure and build system. + +

+ +
+


+Next: , +Previous: Top, +Up: Top +
+
+ +

1 Introduction

+ +

This document describes the GNU configure and build systems. It +describes how autoconf, automake, libtool, and make fit together. It +also includes a discussion of the older Cygnus configure system. + +

This document does not describe in detail how to use each of the tools; +see the respective manuals for that. Instead, it describes which files +the developer must write, which files are machine generated and how they +are generated, and where certain common problems should be addressed. + +

This document draws on several sources, including +the autoconf manual by David MacKenzie, +the automake manual by David MacKenzie and Tom Tromey, +the libtool manual by Gordon Matzigkeit, and the Cygnus configure manual by +K. Richard Pixley. + +

+ +
+


+Next: , +Up: Introduction +
+
+ +

1.1 Goals

+ +

+The GNU configure and build system has two main goals. + +

The first is to simplify the development of portable programs. The +system permits the developer to concentrate on writing the program, +simplifying many details of portability across Unix and even Windows +systems, and permitting the developer to describe how to build the +program using simple rules rather than complex Makefiles. + +

The second is to simplify the building of programs distributed as source +code. All programs are built using a simple, standardized, two step +process. The program builder need not install any special tools in +order to build the program. + +

+


+Next: , +Previous: Goals, +Up: Introduction +
+
+ +

1.2 Tools

+ +

The GNU configure and build system is comprised of several different +tools. Program developers must build and install all of these tools. + +

People who just want to build programs from distributed sources normally +do not need any special tools beyond a Unix shell, a make program, and a +C compiler. + +

+
autoconf
provides a general portability framework, based on testing the features +of the host system at build time. +
automake
a system for describing how to build a program, permitting the developer +to write a simplified Makefile. +
libtool
a standardized approach to building shared libraries. +
gettext
provides a framework for translation of text messages into other +languages; not really discussed in this document. +
m4
autoconf requires the GNU version of m4; the standard Unix m4 does not +suffice. +
perl
automake requires perl. +
+ +
+


+Next: , +Previous: Tools, +Up: Introduction +
+
+ +

1.3 History

+ +

+This is a very brief and probably inaccurate history. + +

As the number of Unix variants increased during the 1980s, it became +harder to write programs which could run on all variants. While it was +often possible to use #ifdef to identify particular systems, +developers frequently did not have access to every system, and the +characteristics of some systems changed from version to version. + +

By 1992, at least three different approaches had been developed: +

    +
  • The Metaconfig program, by Larry Wall, Harlan Stenn, and Raphael +Manfredi. +
  • The Cygnus configure script, by K. Richard Pixley, and the gcc configure +script, by Richard Stallman. These use essentially the same approach, +and the developers communicated regularly. +
  • The autoconf program, by David MacKenzie. +
+ +

The Metaconfig program is still used for Perl and a few other programs. +It is part of the Dist package. I do not know if it is being developed. + +

In 1994, David MacKenzie and others modified autoconf to incorporate all +the features of Cygnus configure. Since then, there has been a slow but +steady conversion of GNU programs from Cygnus configure to autoconf. gcc +has been converted, eliminating the gcc configure script. + +

GNU autoconf was regularly maintained until late 1996. As of this +writing in June, 1998, it has no public maintainer. + +

Most programs are built using the make program, which requires the +developer to write Makefiles describing how to build the programs. +Since most programs are built in pretty much the same way, this led to a +lot of duplication. + +

The X Window system is built using the imake tool, which uses a database +of rules to eliminate the duplication. However, building a tool which +was developed using imake requires that the builder have imake +installed, violating one of the goals of the GNU system. + +

The new BSD make provides a standard library of Makefile fragments, +which permits developers to write very simple Makefiles. However, this +requires that the builder install the new BSD make program. + +

In 1994, David MacKenzie wrote the first version of automake, which +permitted writing a simple build description which was converted into a +Makefile which could be used by the standard make program. In 1995, Tom +Tromey completely rewrote automake in Perl, and he continues to enhance +it. + +

Various free packages built libraries, and by around 1995 several +included support to build shared libraries on various platforms. +However, there was no consistent approach. In early 1996, Gordon +Matzigkeit began working on libtool, which provided a standardized +approach to building shared libraries. This was integrated into +automake from the start. + +

The development of automake and libtool was driven by the GNITS project, +a group of GNU maintainers who designed standardized tools to help meet +the GNU coding standards. + +

+


+Previous: History, +Up: Introduction +
+
+ +

1.4 Building

+ +

Most readers of this document should already know how to build a tool by +running configure and make. This section may serve as a +quick introduction or reminder. + +

Building a tool is normally as simple as running configure +followed by make. You should normally run configure from +an empty directory, using some path to refer to the configure +script in the source directory. The directory in which you run +configure is called the object directory. + +

In order to use a object directory which is different from the source +directory, you must be using the GNU version of make, which has +the required VPATH support. Despite this restriction, using a +different object directory is highly recommended: +

    +
  • It keeps the files generated during the build from cluttering up your +sources. +
  • It permits you to remove the built files by simply removing the entire +build directory. +
  • It permits you to build from the same sources with several sets of +configure options simultaneously. +
+ +

If you don't have GNU make, you will have to run configure +in the source directory. All GNU packages should support this; in +particular, GNU packages should not assume the presence of GNU +make. + +

After running configure, you can build the tools by running +make. + +

To install the tools, run make install. Installing the tools +will copy the programs and any required support files to the +installation directory. The location of the installation +directory is controlled by configure options, as described below. + +

In the Cygnus tree at present, the info files are built and installed as +a separate step. To build them, run make info. To install them, +run make install-info. The equivalent html files are also built +and installed in a separate step. To build the html files, run +make html. To install the html files run make install-html. + +

All configure scripts support a wide variety of options. The +most interesting ones are --with and --enable options +which are generally specific to particular tools. You can usually use +the --help option to get a list of interesting options for a +particular configure script. + +

The only generic options you are likely to use are the --prefix +and --exec-prefix options. These options are used to specify the +installation directory. + +

The directory named by the --prefix option will hold machine +independent files such as info files. + +

The directory named by the --exec-prefix option, which is +normally a subdirectory of the --prefix directory, will hold +machine dependent files such as executables. + +

The default for --prefix is /usr/local. The default for +--exec-prefix is the value used for --prefix. + +

The convention used in Cygnus releases is to use a --prefix +option of /usr/cygnus/release, where release is the +name of the release, and to use a --exec-prefix option of +/usr/cygnus/release/H-host, where host is the +configuration name of the host system (see Configuration Names). + +

Do not use either the source or the object directory as the installation +directory. That will just lead to confusion. + +

+


+Next: , +Previous: Introduction, +Up: Top +
+
+ +

2 Getting Started

+ +

To start using the GNU configure and build system with your software +package, you must write three files, and you must run some tools to +manually generate additional files. + +

+ +
+


+Next: , +Up: Getting Started +
+
+ +

2.1 Write configure.in

+ +

+You must first write the file configure.in. This is an autoconf +input file, and the autoconf manual describes in detail what this file +should look like. + +

You will write tests in your configure.in file to check for +conditions that may change from one system to another, such as the +presence of particular header files or functions. + +

For example, not all systems support the gettimeofday function. +If you want to use the gettimeofday function when it is +available, and to use some other function when it is not, you would +check for this by putting AC_CHECK_FUNCS(gettimeofday) in +configure.in. + +

When the configure script is run at build time, this will arrange to +define the preprocessor macro HAVE_GETTIMEOFDAY to the value 1 if +the gettimeofday function is available, and to not define the +macro at all if the function is not available. Your code can then use +#ifdef to test whether it is safe to call gettimeofday. + +

If you have an existing body of code, the autoscan program may +help identify potential portability problems, and hence configure tests +that you will want to use. +See the autoscan documentation. + +

Another handy tool for an existing body of code is ifnames. This +will show you all the preprocessor conditionals that the code already +uses. +See the ifnames documentation. + +

Besides the portability tests which are specific to your particular +package, every configure.in file should contain the following +macros. + +

+
AC_INIT
This macro takes a single argument, which is the name of a file in your +package. For example, AC_INIT(foo.c). + +
AC_PREREQ(VERSION)
This macro is optional. It may be used to indicate the version of +autoconf that you are using. This will prevent users from +running an earlier version of autoconf and perhaps getting an +invalid configure script. For example, AC_PREREQ(2.12). + +
AM_INIT_AUTOMAKE
This macro takes two arguments: the name of the package, and a version +number. For example, AM_INIT_AUTOMAKE(foo, 1.0). (This macro is +not needed if you are not using automake). + +
AM_CONFIG_HEADER
This macro names the header file which will hold the preprocessor macro +definitions at run time. Normally this should be config.h. Your +sources would then use #include "config.h" to include it. + +

This macro may optionally name the input file for that header file; by +default, this is config.h.in, but that file name works poorly on +DOS filesystems. Therefore, it is often better to name it explicitly as +config.in. + +

This is what you should normally put in configure.in: +

          AM_CONFIG_HEADER(config.h:config.in)
+     
+

(If you are not using automake, use AC_CONFIG_HEADER rather than +AM_CONFIG_HEADER). + +

AM_MAINTAINER_MODE
This macro always appears in Cygnus configure scripts. Other programs +may or may not use it. + +

If this macro is used, the --enable-maintainer-mode option is +required to enable automatic rebuilding of generated files used by the +configure system. This of course requires that developers be aware of, +and use, that option. + +

If this macro is not used, then the generated files will always be +rebuilt automatically. This will cause problems if the wrong versions +of autoconf, automake, or others are in the builder's PATH. + +

(If you are not using automake, you do not need to use this macro). + +

AC_EXEEXT
Either this macro or AM_EXEEXT always appears in Cygnus configure +files. Other programs may or may not use one of them. + +

This macro looks for the executable suffix used on the host system. On +Unix systems, this is the empty string. On Windows systems, this is +.exe. This macro directs automake to use the executable suffix +as appropriate when creating programs. This macro does not take any +arguments. + +

The AC_EXEEXT form is new, and is part of a Cygnus patch to +autoconf to support compiling with Visual C++. Older programs use +AM_EXEEXT instead. + +

(Programs which do not use automake use neither AC_EXEEXT nor +AM_EXEEXT). + +

AC_PROG_CC
If you are writing C code, you will normally want to use this macro. It +locates the C compiler to use. It does not take any arguments. + +

However, if this configure.in file is for a library which is to +be compiled by a cross compiler which may not fully work, then you will +not want to use AC_PROG_CC. Instead, you will want to use a +variant which does not call the macro AC_PROG_CC_WORKS. Examples +can be found in various configure.in files for libraries that are +compiled with cross compilers, such as libiberty or libgloss. This is +essentially a bug in autoconf, and there will probably be a better +workaround at some point. + +

AC_PROG_CXX
If you are writing C++ code, you will want to use this macro. It +locates the C++ compiler to use. It does not take any arguments. The +same cross compiler comments apply as for AC_PROG_CC. + +
AM_PROG_LIBTOOL
If you want to build libraries, and you want to permit them to be +shared, or you want to link against libraries which were built using +libtool, then you will need this macro. This macro is required in order +to use libtool. + +

By default, this will cause all libraries to be built as shared +libraries. To prevent this–to change the default–use +AM_DISABLE_SHARED before AM_PROG_LIBTOOL. The configure +options --enable-shared and --disable-shared may be used +to override the default at build time. + +

AC_DEFINE(_GNU_SOURCE)
GNU packages should normally include this line before any other feature +tests. This defines the macro _GNU_SOURCE when compiling, which +directs the libc header files to provide the standard GNU system +interfaces including all GNU extensions. If this macro is not defined, +certain GNU extensions may not be available. + +
AC_OUTPUT
This macro takes a list of file names which the configure process should +produce. This is normally a list of one or more Makefile files +in different directories. If your package lives entirely in a single +directory, you would use simply AC_OUTPUT(Makefile). If you also +have, for example, a lib subdirectory, you would use +AC_OUTPUT(Makefile lib/Makefile). +
+ +

If you want to use locally defined macros in your configure.in +file, then you will need to write a acinclude.m4 file which +defines them (if not using automake, this file is called +aclocal.m4). Alternatively, you can put separate macros in an +m4 subdirectory, and put ACLOCAL_AMFLAGS = -I m4 in your +Makefile.am file so that the aclocal program will be able +to find them. + +

The different macro prefixes indicate which tool defines the macro. +Macros which start with AC_ are part of autoconf. Macros which +start with AM_ are provided by automake or libtool. + +

+


+Next: , +Previous: Write configure.in, +Up: Getting Started +
+
+ +

2.2 Write Makefile.am

+ +

+You must write the file Makefile.am. This is an automake input +file, and the automake manual describes in detail what this file should +look like. + +

The automake commands in Makefile.am mostly look like variable +assignments in a Makefile. automake recognizes special variable +names, and automatically add make rules to the output as needed. + +

There will be one Makefile.am file for each directory in your +package. For each directory with subdirectories, the Makefile.am +file should contain the line +

     SUBDIRS = dir dir ...
+
+

where each dir is the name of a subdirectory. + +

For each Makefile.am, there should be a corresponding +Makefile in the AC_OUTPUT macro in configure.in. + +

Every Makefile.am written at Cygnus should contain the line +

     AUTOMAKE_OPTIONS = cygnus
+
+

This puts automake into Cygnus mode. See the automake manual for +details. + +

You may to include the version number of automake that you are +using on the AUTOMAKE_OPTIONS line. For example, +

     AUTOMAKE_OPTIONS = cygnus 1.3
+
+

This will prevent users from running an earlier version of +automake and perhaps getting an invalid Makefile.in. + +

If your package builds a program, then in the directory where that +program is built you will normally want a line like +

     bin_PROGRAMS = program
+
+

where program is the name of the program. You will then want a +line like +

     program_SOURCES = file file ...
+
+

where each file is the name of a source file to link into the +program (e.g., foo.c). + +

If your package builds a library, and you do not want the library to +ever be built as a shared library, then in the directory where that +library is built you will normally want a line like +

     lib_LIBRARIES = libname.a
+
+

where libname.a is the name of the library. You will then +want a line like +

     libname_a_SOURCES = file file ...
+
+

where each file is the name of a source file to add to the +library. + +

If your package builds a library, and you want to permit building the +library as a shared library, then in the directory where that library is +built you will normally want a line like +

     lib_LTLIBRARIES = libname.la
+
+

The use of LTLIBRARIES, and the .la extension, indicate a +library to be built using libtool. As usual, you will then want a line +like +

     libname_la_SOURCES = file file ...
+
+

The strings bin and lib that appear above in +bin_PROGRAMS and lib_LIBRARIES are not arbitrary. They +refer to particular directories, which may be set by the --bindir +and --libdir options to configure. If those options are +not used, the default values are based on the --prefix or +--exec-prefix options to configure. It is possible to use +other names if the program or library should be installed in some other +directory. + +

The Makefile.am file may also contain almost anything that may +appear in a normal Makefile. automake also supports many other +special variables, as well as conditionals. + +

See the automake manual for more information. + +

+


+Next: , +Previous: Write Makefile.am, +Up: Getting Started +
+
+ +

2.3 Write acconfig.h

+ +

+If you are generating a portability header file, (i.e., you are using +AM_CONFIG_HEADER in configure.in), then you will have to +write a acconfig.h file. It will have to contain the following +lines. + +

     /* Name of package.  */
+     #undef PACKAGE
+     
+     /* Version of package.  */
+     #undef VERSION
+
+

This requirement is really a bug in the system, and the requirement may +be eliminated at some later date. + +

The acconfig.h file will also similar comment and #undef +lines for any unusual macros in the configure.in file, including +any macro which appears in a AC_DEFINE macro. + +

In particular, if you are writing a GNU package and therefore include +AC_DEFINE(_GNU_SOURCE) in configure.in as suggested above, +you will need lines like this in acconfig.h: +

     /* Enable GNU extensions.  */
+     #undef _GNU_SOURCE
+
+

Normally the autoheader program will inform you of any such +requirements by printing an error message when it is run. However, if +you do anything particular odd in your configure.in file, you +will have to make sure that the right entries appear in +acconfig.h, since otherwise the results of the tests may not be +available in the config.h file which your code will use. + +

(Thee PACKAGE and VERSION lines are not required if you +are not using automake, and in that case you may not need a +acconfig.h file at all). + +

+


+Next: , +Previous: Write acconfig.h, +Up: Getting Started +
+
+ +

2.4 Generate files

+ +

Once you have written configure.in, Makefile.am, +acconfig.h, and possibly acinclude.m4, you must use +autoconf and automake programs to produce the first versions of the +generated files. This is done by executing the following sequence of +commands. + +

     aclocal
+     autoconf
+     autoheader
+     automake
+
+

The aclocal and automake commands are part of the automake +package, and the autoconf and autoheader commands are part +of the autoconf package. + +

If you are using a m4 subdirectory for your macros, you will need +to use the -I m4 option when you run aclocal. + +

If you are not using the Cygnus tree, use the -a option when +running automake command in order to copy the required support +files into your source directory. + +

If you are using libtool, you must build and install the libtool package +with the same --prefix and --exec-prefix options as you +used with the autoconf and automake packages. You must do this before +running any of the above commands. If you are not using the Cygnus +tree, you will need to run the libtoolize program to copy the +libtool support files into your directory. + +

Once you have managed to run these commands without getting any errors, +you should create a new empty directory, and run the configure +script which will have been created by autoconf with the +--enable-maintainer-mode option. This will give you a set of +Makefiles which will include rules to automatically rebuild all the +generated files. + +

After doing that, whenever you have changed some of the input files and +want to regenerated the other files, go to your object directory and run +make. Doing this is more reliable than trying to rebuild the +files manually, because there are complex order dependencies and it is +easy to forget something. + +

+


+Previous: Generate files, +Up: Getting Started +
+
+ +

2.5 Example

+ +

Let's consider a trivial example. + +

Suppose we want to write a simple version of touch. Our program, +which we will call poke, will take a single file name argument, +and use the utime system call to set the modification and access +times of the file to the current time. We want this program to be +highly portable. + +

We'll first see what this looks like without using autoconf and +automake, and then see what it looks like with them. + +

+ + + +

2.5.1 First Try

+ +

Here is our first try at poke.c. Note that we've written it +without ANSI/ISO C prototypes, since we want it to be highly portable. + +

     #include <stdio.h>
+     #include <stdlib.h>
+     #include <sys/types.h>
+     #include <utime.h>
+     
+     int
+     main (argc, argv)
+          int argc;
+          char **argv;
+     {
+       if (argc != 2)
+         {
+           fprintf (stderr, "Usage: poke file\n");
+           exit (1);
+         }
+     
+       if (utime (argv[1], NULL) < 0)
+         {
+           perror ("utime");
+           exit (1);
+         }
+     
+       exit (0);
+     }
+
+

We also write a simple Makefile. + +

     CC = gcc
+     CFLAGS = -g -O2
+     
+     all: poke
+     
+     poke: poke.o
+     	$(CC) -o poke $(CFLAGS) $(LDFLAGS) poke.o
+
+

So far, so good. + +

Unfortunately, there are a few problems. + +

On older Unix systems derived from BSD 4.3, the utime system call +does not accept a second argument of NULL. On those systems, we +need to pass a pointer to struct utimbuf structure. +Unfortunately, even older systems don't define that structure; on those +systems, we need to pass an array of two long values. + +

The header file stdlib.h was invented by ANSI C, and older +systems don't have a copy. We included it above to get a declaration of +exit. + +

We can find some of these portability problems by running +autoscan, which will create a configure.scan file which we +can use as a prototype for our configure.in file. I won't show +the output, but it will notice the potential problems with utime +and stdlib.h. + +

In our Makefile, we don't provide any way to install the program. +This doesn't matter much for such a simple example, but a real program +will need an install target. For that matter, we will also want +a clean target. + +

+ +

2.5.2 Second Try

+ +

Here is our second try at this program. + +

We modify poke.c to use preprocessor macros to control what +features are available. (I've cheated a bit by using the same macro +names which autoconf will use). + +

     #include <stdio.h>
+     
+     #ifdef STDC_HEADERS
+     #include <stdlib.h>
+     #endif
+     
+     #include <sys/types.h>
+     
+     #ifdef HAVE_UTIME_H
+     #include <utime.h>
+     #endif
+     
+     #ifndef HAVE_UTIME_NULL
+     
+     #include <time.h>
+     
+     #ifndef HAVE_STRUCT_UTIMBUF
+     
+     struct utimbuf
+     {
+       long actime;
+       long modtime;
+     };
+     
+     #endif
+     
+     static int
+     utime_now (file)
+          char *file;
+     {
+       struct utimbuf now;
+     
+       now.actime = now.modtime = time (NULL);
+       return utime (file, &now);
+     }
+     
+     #define utime(f, p) utime_now (f)
+     
+     #endif /* HAVE_UTIME_NULL  */
+     
+     int
+     main (argc, argv)
+          int argc;
+          char **argv;
+     {
+       if (argc != 2)
+         {
+           fprintf (stderr, "Usage: poke file\n");
+           exit (1);
+         }
+     
+       if (utime (argv[1], NULL) < 0)
+         {
+           perror ("utime");
+           exit (1);
+         }
+     
+       exit (0);
+     }
+
+

Here is the associated Makefile. We've added support for the +preprocessor flags we use. We've also added install and +clean targets. + +

     # Set this to your installation directory.
+     bindir = /usr/local/bin
+     
+     # Uncomment this if you have the standard ANSI/ISO C header files.
+     # STDC_HDRS = -DSTDC_HEADERS
+     
+     # Uncomment this if you have utime.h.
+     # UTIME_H = -DHAVE_UTIME_H
+     
+     # Uncomment this if utime (FILE, NULL) works on your system.
+     # UTIME_NULL = -DHAVE_UTIME_NULL
+     
+     # Uncomment this if struct utimbuf is defined in utime.h.
+     # UTIMBUF = -DHAVE_STRUCT_UTIMBUF
+     
+     CC = gcc
+     CFLAGS = -g -O2
+     
+     ALL_CFLAGS = $(STDC_HDRS) $(UTIME_H) $(UTIME_NULL) $(UTIMBUF) $(CFLAGS)
+     
+     all: poke
+     
+     poke: poke.o
+     	$(CC) -o poke $(ALL_CFLAGS) $(LDFLAGS) poke.o
+     
+     .c.o:
+     	$(CC) -c $(ALL_CFLAGS) poke.c
+     
+     install: poke
+     	cp poke $(bindir)/poke
+     
+     clean:
+     	rm poke poke.o
+
+

Some problems with this approach should be clear. + +

Users who want to compile poke will have to know how utime works +on their systems, so that they can uncomment the Makefile +correctly. + +

The installation is done using cp, but many systems have an +install program which may be used, and which supports optional +features such as stripping debugging information out of the installed +binary. + +

The use of Makefile variables like CC, CFLAGS and +LDFLAGS follows the requirements of the GNU standards. This is +convenient for all packages, since it reduces surprises for users. +However, it is easy to get the details wrong, and wind up with a +slightly nonstandard distribution. + +

+ +

2.5.3 Third Try

+ +

For our third try at this program, we will write a configure.in +script to discover the configuration features on the host system, rather +than requiring the user to edit the Makefile. We will also write +a Makefile.am rather than a Makefile. + +

The only change to poke.c is to add a line at the start of the +file: +

     #include "config.h"
+
+

The new configure.in file is as follows. + +

     AC_INIT(poke.c)
+     AM_INIT_AUTOMAKE(poke, 1.0)
+     AM_CONFIG_HEADER(config.h:config.in)
+     AC_PROG_CC
+     AC_HEADER_STDC
+     AC_CHECK_HEADERS(utime.h)
+     AC_EGREP_HEADER(utimbuf, utime.h, AC_DEFINE(HAVE_STRUCT_UTIMBUF))
+     AC_FUNC_UTIME_NULL
+     AC_OUTPUT(Makefile)
+
+

The first four macros in this file, and the last one, were described +above; see Write configure.in. If we omit these macros, then when +we run automake we will get a reminder that we need them. + +

The other macros are standard autoconf macros. + +

+
AC_HEADER_STDC
Check for standard C headers. +
AC_CHECK_HEADERS
Check whether a particular header file exists. +
AC_EGREP_HEADER
Check for a particular string in a particular header file, in this case +checking for utimbuf in utime.h. +
AC_FUNC_UTIME_NULL
Check whether utime accepts a NULL second argument to set the +file change time to the current time. +
+ +

See the autoconf manual for a more complete description. + +

The new Makefile.am file is as follows. Note how simple this is +compared to our earlier Makefile. + +

     bin_PROGRAMS = poke
+     
+     poke_SOURCES = poke.c
+
+

This means that we should build a single program name poke. It +should be installed in the binary directory, which we called +bindir earlier. The program poke is built from the source +file poke.c. + +

We must also write a acconfig.h file. Besides PACKAGE and +VERSION, which must be mentioned for all packages which use +automake, we must include HAVE_STRUCT_UTIMBUF, since we mentioned +it in an AC_DEFINE. + +

     /* Name of package.  */
+     #undef PACKAGE
+     
+     /* Version of package.  */
+     #undef VERSION
+     
+     /* Whether utime.h defines struct utimbuf.  */
+     #undef HAVE_STRUCT_UTIMBUF
+
+ + +

2.5.4 Generate Files

+ +

We must now generate the other files, using the following commands. + +

     aclocal
+     autoconf
+     autoheader
+     automake
+
+

When we run autoheader, it will remind us of any macros we forgot +to add to acconfig.h. + +

When we run automake, it will want to add some files to our +distribution. It will add them automatically if we use the +--add-missing option. + +

By default, automake will run in GNU mode, which means that it +will want us to create certain additional files; as of this writing, it +will want NEWS, README, AUTHORS, and +ChangeLog, all of which are files which should appear in a +standard GNU distribution. We can either add those files, or run +automake with the --foreign option. + +

Running these tools will generate the following files, all of which are +described in the next chapter. + +

    +
  • aclocal.m4 +
  • configure +
  • config.in +
  • Makefile.in +
  • stamp-h.in +
+ +
+


+Next: , +Previous: Getting Started, +Up: Top +
+
+ +

3 Files

+ +

As was seen in the previous chapter, the GNU configure and build system +uses a number of different files. The developer must write a few files. +The others are generated by various tools. + +

The system is rather flexible, and can be used in many different ways. +In describing the files that it uses, I will describe the common case, +and mention some other cases that may arise. + +

+ +
+


+Next: , +Up: Files +
+
+ +

3.1 Developer Files

+ +

This section describes the files written or generated by the developer +of a package. + +

+ + + +

3.1.1 Developer Files Picture

+ +

Here is a picture of the files which are written by the developer, the +generated files which would be included with a complete source +distribution, and the tools which create those files. +The file names are in rectangles with square corners and the tool names +are in rectangles with rounded corners +(e.g., autoheader is the name of a tool, not the name of a file). + +

configdev.jpg
+ + + +

3.1.2 Written Developer Files

+ +

The following files would be written by the developer. + +

+
configure.in
This is the configuration script. This script contains invocations of +autoconf macros. It may also contain ordinary shell script code. This +file will contain feature tests for portability issues. The last thing +in the file will normally be an AC_OUTPUT macro listing which +files to create when the builder runs the configure script. This file +is always required when using the GNU configure system. See Write configure.in. + +
Makefile.am
This is the automake input file. It describes how the code should be +built. It consists of definitions of automake variables. It may also +contain ordinary Makefile targets. This file is only needed when using +automake (newer tools normally use automake, but there are still older +tools which have not been converted, in which the developer writes +Makefile.in directly). See Write Makefile.am. + +
acconfig.h
When the configure script creates a portability header file, by using +AM_CONFIG_HEADER (or, if not using automake, +AC_CONFIG_HEADER), this file is used to describe macros which are +not recognized by the autoheader command. This is normally a +fairly uninteresting file, consisting of a collection of #undef +lines with comments. Normally any call to AC_DEFINE in +configure.in will require a line in this file. See Write acconfig.h. + +
acinclude.m4
This file is not always required. It defines local autoconf macros. +These macros may then be used in configure.in. If you don't need +any local autoconf macros, then you don't need this file at all. In +fact, in general, you never need local autoconf macros, since you can +put everything in configure.in, but sometimes a local macro is +convenient. + +

Newer tools may omit acinclude.m4, and instead use a +subdirectory, typically named m4, and define +ACLOCAL_AMFLAGS = -I m4 in Makefile.am to force +aclocal to look there for macro definitions. The macro +definitions are then placed in separate files in that directory. + +

The acinclude.m4 file is only used when using automake; in older +tools, the developer writes aclocal.m4 directly, if it is needed. +

+ +
+


+Previous: Written Developer Files, +Up: Developer Files +
+
+ +

3.1.3 Generated Developer Files

+ +

The following files would be generated by the developer. + +

When using automake, these files are normally not generated manually +after the first time. Instead, the generated Makefile contains +rules to automatically rebuild the files as required. When +AM_MAINTAINER_MODE is used in configure.in (the normal +case in Cygnus code), the automatic rebuilding rules will only be +defined if you configure using the --enable-maintainer-mode +option. + +

When using automatic rebuilding, it is important to ensure that all the +various tools have been built and installed on your PATH. Using +automatic rebuilding is highly recommended, so much so that I'm not +going to explain what you have to do if you don't use it. + +

+
configure
This is the configure script which will be run when building the +package. This is generated by autoconf from configure.in +and aclocal.m4. This is a shell script. + +
Makefile.in
This is the file which the configure script will turn into the +Makefile at build time. This file is generated by +automake from Makefile.am. If you aren't using automake, +you must write this file yourself. This file is pretty much a normal +Makefile, with some configure substitutions for certain +variables. + +
aclocal.m4
This file is created by the aclocal program, based on the +contents of configure.in and acinclude.m4 (or, as noted in +the description of acinclude.m4 above, on the contents of an +m4 subdirectory). This file contains definitions of autoconf +macros which autoconf will use when generating the file +configure. These autoconf macros may be defined by you in +acinclude.m4 or they may be defined by other packages such as +automake, libtool or gettext. If you aren't using automake, you will +normally write this file yourself; in that case, if configure.in +uses only standard autoconf macros, this file will not be needed at all. + +
config.in
This file is created by autoheader based on acconfig.h and +configure.in. At build time, the configure script will define +some of the macros in it to create config.h, which may then be +included by your program. This permits your C code to use preprocessor +conditionals to change its behaviour based on the characteristics of the +host system. This file may also be called config.h.in. + +
stamp.h-in
This rather uninteresting file, which I omitted from the picture, is +generated by automake. It always contains the string +timestamp. It is used as a timestamp file indicating whether +config.in is up to date. Using a timestamp file means that +config.in can be marked as up to date without actually changing +its modification time. This is useful since config.in depends +upon configure.in, but it is easy to change configure.in +in a way which does not affect config.in. +
+ +
+


+Next: , +Previous: Developer Files, +Up: Files +
+
+ +

3.2 Build Files

+ +

This section describes the files which are created at configure and +build time. These are the files which somebody who builds the package +will see. + +

Of course, the developer will also build the package. The distinction +between developer files and build files is not that the developer does +not see the build files, but that somebody who only builds the package +does not have to worry about the developer files. + +

+ +
+


+Next: , +Up: Build Files +
+
+ +

3.2.1 Build Files Picture

+ +

Here is a picture of the files which will be created at build time. +config.status is both a created file and a shell script which is +run to create other files, and the picture attempts to show that. + +

configbuild.jpg
+ +
+


+Previous: Build Files Picture, +Up: Build Files +
+
+ +

3.2.2 Build Files Description

+ +

This is a description of the files which are created at build time. + +

+
config.status
The first step in building a package is to run the configure +script. The configure script will create the file +config.status, which is itself a shell script. When you first +run configure, it will automatically run config.status. +An Makefile derived from an automake generated Makefile.in +will contain rules to automatically run config.status again when +necessary to recreate certain files if their inputs change. + +
Makefile
This is the file which make will read to build the program. The +config.status script will transform Makefile.in into +Makefile. + +
config.h
This file defines C preprocessor macros which C code can use to adjust +its behaviour on different systems. The config.status script +will transform config.in into config.h. + +
config.cache
This file did not fit neatly into the picture, and I omitted it. It is +used by the configure script to cache results between runs. This +can be an important speedup. If you modify configure.in in such +a way that the results of old tests should change (perhaps you have +added a new library to LDFLAGS), then you will have to remove +config.cache to force the tests to be rerun. + +

The autoconf manual explains how to set up a site specific cache file. +This can speed up running configure scripts on your system. + +

stamp.h
This file, which I omitted from the picture, is similar to +stamp-h.in. It is used as a timestamp file indicating whether +config.h is up to date. This is useful since config.h +depends upon config.status, but it is easy for +config.status to change in a way which does not affect +config.h. +
+ +
+


+Previous: Build Files, +Up: Files +
+
+ +

3.3 Support Files

+ +

The GNU configure and build system requires several support files to be +included with your distribution. You do not normally need to concern +yourself with these. If you are using the Cygnus tree, most are already +present. Otherwise, they will be installed with your source by +automake (with the --add-missing option) and +libtoolize. + +

You don't have to put the support files in the top level directory. You +can put them in a subdirectory, and use the AC_CONFIG_AUX_DIR +macro in configure.in to tell automake and the +configure script where they are. + +

In this section, I describe the support files, so that you can know what +they are and why they are there. + +

+
ABOUT-NLS
Added by automake if you are using gettext. This is a documentation +file about the gettext project. +
ansi2knr.c
Used by an automake generated Makefile if you put ansi2knr +in AUTOMAKE_OPTIONS in Makefile.am. This permits +compiling ANSI C code with a K&R C compiler. +
ansi2knr.1
The man page which goes with ansi2knr.c. +
config.guess
A shell script which determines the configuration name for the system on +which it is run. +
config.sub
A shell script which canonicalizes a configuration name entered by a +user. +
elisp-comp
Used to compile Emacs LISP files. +
install-sh
A shell script which installs a program. This is used if the configure +script can not find an install binary. +
ltconfig
Used by libtool. This is a shell script which configures libtool for +the particular system on which it is used. +
ltmain.sh
Used by libtool. This is the actual libtool script which is used, after +it is configured by ltconfig to build a library. +
mdate-sh
A shell script used by an automake generated Makefile to pretty +print the modification time of a file. This is used to maintain version +numbers for texinfo files. +
missing
A shell script used if some tool is missing entirely. This is used by +an automake generated Makefile to avoid certain sorts of +timestamp problems. +
mkinstalldirs
A shell script which creates a directory, including all parent +directories. This is used by an automake generated Makefile +during installation. +
texinfo.tex
Required if you have any texinfo files. This is used when converting +Texinfo files into DVI using texi2dvi and TeX. +
ylwrap
A shell script used by an automake generated Makefile to run +programs like bison, yacc, flex, and lex. +These programs default to producing output files with a fixed name, and +the ylwrap script runs them in a subdirectory to avoid file name +conflicts when using a parallel make program. +
+ +
+


+Next: , +Previous: Files, +Up: Top +
+
+ +

4 Configuration Names

+ +

+The GNU configure system names all systems using a configuration +name. All such names used to be triplets (they may now contain four +parts in certain cases), and the term configuration triplet is +still seen. + +

+ + + +

4.1 Configuration Name Definition

+ +

This is a string of the form +cpu-manufacturer-operating_system. In some cases, +this is extended to a four part form: +cpu-manufacturer-kernel-operating_system. + +

When using a configuration name in a configure option, it is normally +not necessary to specify an entire name. In particular, the +manufacturer field is often omitted, leading to strings such as +i386-linux or sparc-sunos. The shell script +config.sub will translate these shortened strings into the +canonical form. autoconf will arrange for config.sub to be run +automatically when it is needed. + +

The fields of a configuration name are as follows: + +

+
cpu
The type of processor. This is typically something like i386 or +sparc. More specific variants are used as well, such as +mipsel to indicate a little endian MIPS processor. +
manufacturer
A somewhat freeform field which indicates the manufacturer of the +system. This is often simply unknown. Other common strings are +pc for an IBM PC compatible system, or the name of a workstation +vendor, such as sun. +
operating_system
The name of the operating system which is run on the system. This will +be something like solaris2.5 or irix6.3. There is no +particular restriction on the version number, and strings like +aix4.1.4.0 are seen. For an embedded system, which has no +operating system, this field normally indicates the type of object file +format, such as elf or coff. +
kernel
This is used mainly for GNU/Linux. A typical GNU/Linux configuration +name is i586-pc-linux-gnulibc1. In this case the kernel, +linux, is separated from the operating system, gnulibc1. +
+ +

The shell script config.guess will normally print the correct +configuration name for the system on which it is run. It does by +running uname and by examining other characteristics of the +system. + +

Because config.guess can normally determine the configuration +name for a machine, it is normally only necessary to specify a +configuration name when building a cross-compiler or when building using +a cross-compiler. + +

+ +

4.2 Using Configuration Names

+ +

A configure script will sometimes have to make a decision based on a +configuration name. You will need to do this if you have to compile +code differently based on something which can not be tested using a +standard autoconf feature test. + +

It is normally better to test for particular features, rather than to +test for a particular system. This is because as Unix evolves, +different systems copy features from one another. Even if you need to +determine whether the feature is supported based on a configuration +name, you should define a macro which describes the feature, rather than +defining a macro which describes the particular system you are on. + +

Testing for a particular system is normally done using a case statement +in configure.in. The case statement might look something like +the following, assuming that host is a shell variable holding a +canonical configuration name (which will be the case if +configure.in uses the AC_CANONICAL_HOST or +AC_CANONICAL_SYSTEM macro). + +

     case "${host}" in
+     i[3-7]86-*-linux-gnu*) do something ;;
+     sparc*-sun-solaris2.[56789]*) do something ;;
+     sparc*-sun-solaris*) do something ;;
+     mips*-*-elf*) do something ;;
+     esac
+
+

It is particularly important to use * after the operating system +field, in order to match the version number which will be generated by +config.guess. + +

In most cases you must be careful to match a range of processor types. +For most processor families, a trailing * suffices, as in +mips* above. For the i386 family, something along the lines of +i[3-7]86 suffices at present. For the m68k family, you will +need something like m68*. Of course, if you do not need to match +on the processor, it is simpler to just replace the entire field by a +*, as in *-*-irix*. + +

+


+Next: , +Previous: Configuration Names, +Up: Top +
+
+ +

5 Cross Compilation Tools

+ +

+The GNU configure and build system can be used to build cross +compilation tools. A cross compilation tool is a tool which runs on +one system and produces code which runs on another system. + +

+ + + +

5.1 Cross Compilation Concepts

+ +

A compiler which produces programs which run on a different system is a +cross compilation compiler, or simply a cross compiler. +Similarly, we speak of cross assemblers, cross linkers, etc. + +

In the normal case, a compiler produces code which runs on the same +system as the one on which the compiler runs. When it is necessary to +distinguish this case from the cross compilation case, such a compiler +is called a native compiler. Similarly, we speak of native +assemblers, etc. + +

Although the debugger is not strictly speaking a compilation tool, it is +nevertheless meaningful to speak of a cross debugger: a debugger which +is used to debug code which runs on another system. Everything that is +said below about configuring cross compilation tools applies to the +debugger as well. + +

+ +

5.2 Host and Target

+ +

+When building cross compilation tools, there are two different systems +involved: the system on which the tools will run, and the system for +which the tools generate code. + +

The system on which the tools will run is called the host system. + +

The system for which the tools generate code is called the target +system. + +

For example, suppose you have a compiler which runs on a GNU/Linux +system and generates ELF programs for a MIPS embedded system. In this +case the GNU/Linux system is the host, and the MIPS ELF system is the +target. Such a compiler could be called a GNU/Linux cross MIPS ELF +compiler, or, equivalently, a i386-linux-gnu cross +mips-elf compiler. + +

Naturally, most programs are not cross compilation tools. For those +programs, it does not make sense to speak of a target. It only makes +sense to speak of a target for tools like gcc or the +binutils which actually produce running code. For example, it +does not make sense to speak of the target of a tool like bison +or make. + +

Most cross compilation tools can also serve as native tools. For a +native compilation tool, it is still meaningful to speak of a target. +For a native tool, the target is the same as the host. For example, for +a GNU/Linux native compiler, the host is GNU/Linux, and the target is +also GNU/Linux. + +

+ +

5.3 Using the Host Type

+ +

In almost all cases the host system is the system on which you run the +configure script, and on which you build the tools (for the case +when they differ, see Canadian Cross). + +

If your configure script needs to know the configuration name of the +host system, and the package is not a cross compilation tool and +therefore does not have a target, put AC_CANONICAL_HOST in +configure.in. This macro will arrange to define a few shell +variables when the configure script is run. + +

+
host
The canonical configuration name of the host. This will normally be +determined by running the config.guess shell script, although the +user is permitted to override this by using an explicit --host +option. +
host_alias
In the unusual case that the user used an explicit --host option, +this will be the argument to --host. In the normal case, this +will be the same as the host variable. +
host_cpu
host_vendor
host_os
The first three parts of the canonical configuration name. +
+ +

The shell variables may be used by putting shell code in +configure.in. For an example, see Using Configuration Names. + +

+ +

5.4 Specifying the Target

+ +

By default, the configure script will assume that the target is +the same as the host. This is the more common case; for example, it +leads to a native compiler rather than a cross compiler. + +

If you want to build a cross compilation tool, you must specify the +target explicitly by using the --target option when you run +configure. The argument to --target is the configuration +name of the system for which you wish to generate code. +See Configuration Names. + +

For example, to build tools which generate code for a MIPS ELF embedded +system, you would use --target mips-elf. + +

+ +

5.5 Using the Target Type

+ +

When writing configure.in for a cross compilation tool, you will +need to use information about the target. To do this, put +AC_CANONICAL_SYSTEM in configure.in. + +

AC_CANONICAL_SYSTEM will look for a --target option and +canonicalize it using the config.sub shell script. It will also +run AC_CANONICAL_HOST (see Using the Host Type). + +

The target type will be recorded in the following shell variables. Note +that the host versions of these variables will also be defined by +AC_CANONICAL_HOST. + +

+
target
The canonical configuration name of the target. +
target_alias
The argument to the --target option. If the user did not specify +a --target option, this will be the same as host_alias. +
target_cpu
target_vendor
target_os
The first three parts of the canonical target configuration name. +
+ +

Note that if host and target are the same string, you can +assume a native configuration. If they are different, you can assume a +cross configuration. + +

It is arguably possible for host and target to represent +the same system, but for the strings to not be identical. For example, +if config.guess returns sparc-sun-sunos4.1.4, and somebody +configures with --target sparc-sun-sunos4.1, then the slight +differences between the two versions of SunOS may be unimportant for +your tool. However, in the general case it can be quite difficult to +determine whether the differences between two configuration names are +significant or not. Therefore, by convention, if the user specifies a +--target option without specifying a --host option, it is +assumed that the user wants to configure a cross compilation tool. + +

The variables target and target_alias should be handled +differently. + +

In general, whenever the user may actually see a string, +target_alias should be used. This includes anything which may +appear in the file system, such as a directory name or part of a tool +name. It also includes any tool output, unless it is clearly labelled +as the canonical target configuration name. This permits the user to +use the --target option to specify how the tool will appear to +the outside world. + +

On the other hand, when checking for characteristics of the target +system, target should be used. This is because a wide variety of +--target options may map into the same canonical configuration +name. You should not attempt to duplicate the canonicalization done by +config.sub in your own code. + +

By convention, cross tools are installed with a prefix of the argument +used with the --target option, also known as target_alias +(see Using the Target Type). If the user does not use the +--target option, and thus is building a native tool, no prefix is +used. + +

For example, if gcc is configured with --target mips-elf, then +the installed binary will be named mips-elf-gcc. If gcc is +configured without a --target option, then the installed binary +will be named gcc. + +

The autoconf macro AC_ARG_PROGRAM will handle this for you. If +you are using automake, no more need be done; the programs will +automatically be installed with the correct prefixes. Otherwise, see +the autoconf documentation for AC_ARG_PROGRAM. + +

+ +

5.6 Cross Tools in the Cygnus Tree

+ +

The Cygnus tree is used for various packages including gdb, the GNU +binutils, and egcs. It is also, of course, used for Cygnus releases. + +

In the Cygnus tree, the top level configure script uses the old +Cygnus configure system, not autoconf. The top level Makefile.in +is written to build packages based on what is in the source tree, and +supports building a large number of tools in a single +configure/make step. + +

The Cygnus tree may be configured with a --target option. The +--target option applies recursively to every subdirectory, and +permits building an entire set of cross tools at once. + +

+ + + +

5.6.1 Host and Target Libraries

+ +

The Cygnus tree distinguishes host libraries from target libraries. + +

Host libraries are built with the compiler used to build the programs +which run on the host, which is called the host compiler. This includes +libraries such as bfd and tcl. These libraries are built +with the host compiler, and are linked into programs like the binutils +or gcc which run on the host. + +

Target libraries are built with the target compiler. If gcc is present +in the source tree, then the target compiler is the gcc that is built +using the host compiler. Target libraries are libraries such as +newlib and libstdc++. These libraries are not linked into +the host programs, but are instead made available for use with programs +built with the target compiler. + +

For the rest of this section, assume that gcc is present in the source +tree, so that it will be used to build the target libraries. + +

There is a complication here. The configure process needs to know which +compiler you are going to use to build a tool; otherwise, the feature +tests will not work correctly. The Cygnus tree handles this by not +configuring the target libraries until the target compiler is built. In +order to permit everything to build using a single +configure/make, the configuration of the target libraries +is actually triggered during the make step. + +

When the target libraries are configured, the --target option is +not used. Instead, the --host option is used with the argument +of the --target option for the overall configuration. If no +--target option was used for the overall configuration, the +--host option will be passed with the output of the +config.guess shell script. Any --build option is passed +down unchanged. + +

This translation of configuration options is done because since the +target libraries are compiled with the target compiler, they are being +built in order to run on the target of the overall configuration. By +the definition of host, this means that their host system is the same as +the target system of the overall configuration. + +

The same process is used for both a native configuration and a cross +configuration. Even when using a native configuration, the target +libraries will be configured and built using the newly built compiler. +This is particularly important for the C++ libraries, since there is no +reason to assume that the C++ compiler used to build the host tools (if +there even is one) uses the same ABI as the g++ compiler which will be +used to build the target libraries. + +

There is one difference between a native configuration and a cross +configuration. In a native configuration, the target libraries are +normally configured and built as siblings of the host tools. In a cross +configuration, the target libraries are normally built in a subdirectory +whose name is the argument to --target. This is mainly for +historical reasons. + +

To summarize, running configure in the Cygnus tree configures all +the host libraries and tools, but does not configure any of the target +libraries. Running make then does the following steps: + +

    +
  • Build the host libraries. +
  • Build the host programs, including gcc. Note that we call gcc both a +host program (since it runs on the host) and a target compiler (since it +generates code for the target). +
  • Using the newly built target compiler, configure the target libraries. +
  • Build the target libraries. +
+ +

The steps need not be done in precisely this order, since they are +actually controlled by Makefile targets. + +

+ +

5.6.2 Target Library Configure Scripts

+ +

There are a few things you must know in order to write a configure +script for a target library. This is just a quick sketch, and beginners +shouldn't worry if they don't follow everything here. + +

The target libraries are configured and built using a newly built target +compiler. There may not be any startup files or libraries for this +target compiler. In fact, those files will probably be built as part of +some target library, which naturally means that they will not exist when +your target library is configured. + +

This means that the configure script for a target library may not use +any test which requires doing a link. This unfortunately includes many +useful autoconf macros, such as AC_CHECK_FUNCS. autoconf macros +which do a compile but not a link, such as AC_CHECK_HEADERS, may +be used. + +

This is a severe restriction, but normally not a fatal one, as target +libraries can often assume the presence of other target libraries, and +thus know which functions will be available. + +

As of this writing, the autoconf macro AC_PROG_CC does a link to +make sure that the compiler works. This may fail in a target library, +so target libraries must use a different set of macros to locate the +compiler. See the configure.in file in a directory like +libiberty or libgloss for an example. + +

As noted in the previous section, target libraries are sometimes built +in directories which are siblings to the host tools, and are sometimes +built in a subdirectory. The --with-target-subdir configure +option will be passed when the library is configured. Its value will be +an empty string if the target library is a sibling. Its value will be +the name of the subdirectory if the target library is in a subdirectory. + +

If the overall build is not a native build (i.e., the overall configure +used the --target option), then the library will be configured +with the --with-cross-host option. The value of this option will +be the host system of the overall build. Recall that the host system of +the library will be the target of the overall build. If the overall +build is a native build, the --with-cross-host option will not be +used. + +

A library which can be built both standalone and as a target library may +want to install itself into different directories depending upon the +case. When built standalone, or when built native, the library should +be installed in $(libdir). When built as a target library which +is not native, the library should be installed in $(tooldir)/lib. +The --with-cross-host option may be used to distinguish these +cases. + +

This same test of --with-cross-host may be used to see whether it +is OK to use link tests in the configure script. If the +--with-cross-host option is not used, then the library is being +built either standalone or native, and a link should work. + +

+ +

5.6.3 Make Targets in Cygnus Tree

+ +

The top level Makefile in the Cygnus tree defines targets for +every known subdirectory. + +

For every subdirectory dir which holds a host library or program, +the Makefile target all-dir will build that library +or program. + +

There are dependencies among host tools. For example, building gcc +requires first building gas, because the gcc build process invokes the +target assembler. These dependencies are reflected in the top level +Makefile. + +

For every subdirectory dir which holds a target library, the +Makefile target configure-target-dir will configure +that library. The Makefile target all-target-dir +will build that library. + +

Every configure-target-dir target depends upon +all-gcc, since gcc, the target compiler, is required to configure +the tool. Every all-target-dir target depends upon the +corresponding configure-target-dir target. + +

There are several other targets which may be of interest for each +directory: install-dir, clean-dir, and +check-dir. There are also corresponding target +versions of these for the target libraries , such as +install-target-dir. + +

+ +

5.6.4 Target libiberty

+ +

The libiberty subdirectory is currently a special case, in that +it is the only directory which is built both using the host compiler and +using the target compiler. + +

This is because the files in libiberty are used when building the +host tools, and they are also incorporated into the libstdc++ +target library as support code. + +

This duality does not pose any particular difficulties. It means that +there are targets for both all-libiberty and +all-target-libiberty. + +

In a native configuration, when target libraries are not built in a +subdirectory, the same objects are normally used as both the host build +and the target build. This is normally OK, since libiberty contains +only C code, and in a native configuration the results of the host +compiler and the target compiler are normally interoperable. + +

Irix 6 is again an exception here, since the SGI native compiler +defaults to using the O32 ABI, and gcc defaults to using the +N32 ABI. On Irix 6, the target libraries are built in a +subdirectory even for a native configuration, avoiding this problem. + +

There are currently no other libraries built for both the host and the +target, but there is no conceptual problem with adding more. + +

+


+Next: , +Previous: Cross Compilation Tools, +Up: Top +
+
+ +

6 Canadian Cross

+ +

+It is possible to use the GNU configure and build system to build a +program which will run on a system which is different from the system on +which the tools are built. In other words, it is possible to build +programs using a cross compiler. + +

This is referred to as a Canadian Cross. + +

+ + + +

6.1 Canadian Cross Example

+ +

Here is an example of a Canadian Cross. + +

While running on a GNU/Linux, you can build a program which will run on +a Solaris system. You would use a GNU/Linux cross Solaris compiler to +build the program. + +

Of course, you could not run the resulting program on your GNU/Linux +system. You would have to copy it over to a Solaris system before you +would run it. + +

Of course, you could also simply build the programs on the Solaris +system in the first place. However, perhaps the Solaris system is not +available for some reason; perhaps you actually don't have one, but you +want to build the tools for somebody else to use. Or perhaps your +GNU/Linux system is much faster than your Solaris system. + +

A Canadian Cross build is most frequently used when building programs to +run on a non-Unix system, such as DOS or Windows. It may be simpler to +configure and build on a Unix system than to support the configuration +machinery on a non-Unix system. + +

+ +

6.2 Canadian Cross Concepts

+ +

When building a Canadian Cross, there are at least two different systems +involved: the system on which the tools are being built, and the system +on which the tools will run. + +

The system on which the tools are being built is called the build +system. + +

The system on which the tools will run is called the host system. + +

For example, if you are building a Solaris program on a GNU/Linux +system, as in the previous section, the build system would be GNU/Linux, +and the host system would be Solaris. + +

It is, of course, possible to build a cross compiler using a Canadian +Cross (i.e., build a cross compiler using a cross compiler). In this +case, the system for which the resulting cross compiler generates code +is called the target system. (For a more complete discussion of host +and target systems, see Host and Target). + +

An example of building a cross compiler using a Canadian Cross would be +building a Windows cross MIPS ELF compiler on a GNU/Linux system. In +this case the build system would be GNU/Linux, the host system would be +Windows, and the target system would be MIPS ELF. + +

The name Canadian Cross comes from the case when the build, host, and +target systems are all different. At the time that these issues were +all being hashed out, Canada had three national political parties. + +

+ +

6.3 Build Cross Host Tools

+ +

In order to configure a program for a Canadian Cross build, you must +first build and install the set of cross tools you will use to build the +program. + +

These tools will be build cross host tools. That is, they will run on +the build system, and will produce code that runs on the host system. + +

It is easy to confuse the meaning of build and host here. Always +remember that the build system is where you are doing the build, and the +host system is where the resulting program will run. Therefore, you +need a build cross host compiler. + +

In general, you must have a complete cross environment in order to do +the build. This normally means a cross compiler, cross assembler, and +so forth, as well as libraries and include files for the host system. + +

+ +

6.4 Build and Host Options

+ +

+When you run configure, you must use both the --build and +--host options. + +

The --build option is used to specify the configuration name of +the build system. This can normally be the result of running the +config.guess shell script, and it is reasonable to use +--build=`config.guess`. + +

The --host option is used to specify the configuration name of +the host system. + +

As we explained earlier, config.guess is used to set the default +value for the --host option (see Using the Host Type). We +can now see that since config.guess returns the type of system on +which it is run, it really identifies the build system. Since the host +system is normally the same as the build system (i.e., people do not +normally build using a cross compiler), it is reasonable to use the +result of config.guess as the default for the host system when +the --host option is not used. + +

It might seem that if the --host option were used without the +--build option that the configure script could run +config.guess to determine the build system, and presume a +Canadian Cross if the result of config.guess differed from the +--host option. However, for historical reasons, some configure +scripts are routinely run using an explicit --host option, rather +than using the default from config.guess. As noted earlier, it +is difficult or impossible to reliably compare configuration names +(see Using the Target Type). Therefore, by convention, if the +--host option is used, but the --build option is not used, +then the build system defaults to the host system. + +

+ +

6.5 Canadian Cross not in Cygnus Tree.

+ +

If you are not using the Cygnus tree, you must explicitly specify the +cross tools which you want to use to build the program. This is done by +setting environment variables before running the configure +script. + +

You must normally set at least the environment variables CC, +AR, and RANLIB to the cross tools which you want to use to +build. + +

For some programs, you must set additional cross tools as well, such as +AS, LD, or NM. + +

You would set these environment variables to the build cross tools which +you are going to use. + +

For example, if you are building a Solaris program on a GNU/Linux +system, and your GNU/Linux cross Solaris compiler were named +solaris-gcc, then you would set the environment variable +CC to solaris-gcc. + +

+ +

6.6 Canadian Cross in Cygnus Tree

+ +

+This section describes configuring and building a Canadian Cross when +using the Cygnus tree. + +

+ + + +

6.6.1 Building a Normal Program

+ +

When configuring a Canadian Cross in the Cygnus tree, all the +appropriate environment variables are automatically set to +host-tool, where host is the value used for the +--host option, and tool is the name of the tool (e.g., +gcc, as, etc.). These tools must be on your PATH. + +

Adding a prefix of host will give the usual name for the build +cross host tools. To see this, consider that when these cross tools +were built, they were configured to run on the build system and to +produce code for the host system. That is, they were configured with a +--target option that is the same as the system which we are now +calling the host. Recall that the default name for installed cross +tools uses the target system as a prefix (see Using the Target Type). Since that is the system which we are now calling the host, +host is the right prefix to use. + +

For example, if you configure with --build=i386-linux-gnu and +--host=solaris, then the Cygnus tree will automatically default +to using the compiler solaris-gcc. You must have previously +built and installed this compiler, probably by doing a build with no +--host option and with a --target option of +solaris. + +

+ +

6.6.2 Building a Cross Program

+ +

There are additional considerations if you want to build a cross +compiler, rather than a native compiler, in the Cygnus tree using a +Canadian Cross. + +

When you build a cross compiler using the Cygnus tree, then the target +libraries will normally be built with the newly built target compiler +(see Host and Target Libraries). However, this will not work when +building with a Canadian Cross. This is because the newly built target +compiler will be a program which runs on the host system, and therefore +will not be able to run on the build system. + +

Therefore, when building a cross compiler with the Cygnus tree, you must +first install a set of build cross target tools. These tools will be +used when building the target libraries. + +

Note that this is not a requirement of a Canadian Cross in general. For +example, it would be possible to build just the host cross target tools +on the build system, to copy the tools to the host system, and to build +the target libraries on the host system. The requirement for build +cross target tools is imposed by the Cygnus tree, which expects to be +able to build both host programs and target libraries in a single +configure/make step. Because it builds these in a single +step, it expects to be able to build the target libraries on the build +system, which means that it must use a build cross target toolchain. + +

For example, suppose you want to build a Windows cross MIPS ELF compiler +on a GNU/Linux system. You must have previously installed both a +GNU/Linux cross Windows compiler and a GNU/Linux cross MIPS ELF +compiler. + +

In order to build the Windows (configuration name i386-cygwin32) +cross MIPS ELF (configure name mips-elf) compiler, you might +execute the following commands (long command lines are broken across +lines with a trailing backslash as a continuation character). + +

     mkdir linux-x-cygwin32
+     cd linux-x-cygwin32
+     srcdir/configure --target i386-cygwin32 --prefix=installdir \
+       --exec-prefix=installdir/H-i386-linux
+     make
+     make install
+     cd ..
+     mkdir linux-x-mips-elf
+     cd linux-x-mips-elf
+     srcdir/configure --target mips-elf --prefix=installdir \
+       --exec-prefix=installdir/H-i386-linux
+     make
+     make install
+     cd ..
+     mkdir cygwin32-x-mips-elf
+     cd cygwin32-x-mips-elf
+     srcdir/configure --build=i386-linux-gnu --host=i386-cygwin32 \
+       --target=mips-elf --prefix=wininstalldir \
+       --exec-prefix=wininstalldir/H-i386-cygwin32
+     make
+     make install
+
+

You would then copy the contents of wininstalldir over to the +Windows machine, and run the resulting programs. + +

+


+Previous: CCross in Cygnus Tree, +Up: Canadian Cross +
+
+ +

6.7 Supporting Canadian Cross

+ +

If you want to make it possible to build a program you are developing +using a Canadian Cross, you must take some care when writing your +configure and make rules. Simple cases will normally work correctly. +However, it is not hard to write configure and make tests which will +fail in a Canadian Cross. + +

+ + + +

6.7.1 Supporting Canadian Cross in Configure Scripts

+ +

+In a configure.in file, after calling AC_PROG_CC, you can +find out whether this is a Canadian Cross configure by examining the +shell variable cross_compiling. In a Canadian Cross, which means +that the compiler is a cross compiler, cross_compiling will be +yes. In a normal configuration, cross_compiling will be +no. + +

You ordinarily do not need to know the type of the build system in a +configure script. However, if you do need that information, you can get +it by using the macro AC_CANONICAL_SYSTEM, the same macro that is +used to determine the target system. This macro will set the variables +build, build_alias, build_cpu, build_vendor, +and build_os, which correspond to the similar target and +host variables, except that they describe the build system. + +

When writing tests in configure.in, you must remember that you +want to test the host environment, not the build environment. + +

Macros like AC_CHECK_FUNCS which use the compiler will test the +host environment. That is because the tests will be done by running the +compiler, which is actually a build cross host compiler. If the +compiler can find the function, that means that the function is present +in the host environment. + +

Tests like test -f /dev/ptyp0, on the other hand, will test the +build environment. Remember that the configure script is running on the +build system, not the host system. If your configure scripts examines +files, those files will be on the build system. Whatever you determine +based on those files may or may not be the case on the host system. + +

Most autoconf macros will work correctly for a Canadian Cross. The main +exception is AC_TRY_RUN. This macro tries to compile and run a +test program. This will fail in a Canadian Cross, because the program +will be compiled for the host system, which means that it will not run +on the build system. + +

The AC_TRY_RUN macro provides an optional argument to tell the +configure script what to do in a Canadian Cross. If that argument is +not present, you will get a warning when you run autoconf: +

     warning: AC_TRY_RUN called without default to allow cross compiling
+
+

This tells you that the resulting configure script will not work +with a Canadian Cross. + +

In some cases while it may better to perform a test at configure time, +it is also possible to perform the test at run time. In such a case you +can use the cross compiling argument to AC_TRY_RUN to tell your +program that the test could not be performed at configure time. + +

There are a few other autoconf macros which will not work correctly with +a Canadian Cross: a partial list is AC_FUNC_GETPGRP, +AC_FUNC_SETPGRP, AC_FUNC_SETVBUF_REVERSED, and +AC_SYS_RESTARTABLE_SYSCALLS. The AC_CHECK_SIZEOF macro is +generally not very useful with a Canadian Cross; it permits an optional +argument indicating the default size, but there is no way to know what +the correct default should be. + +

+ +

6.7.2 Supporting Canadian Cross in Makefiles.

+ +

+The main Canadian Cross issue in a Makefile arises when you want +to use a subsidiary program to generate code or data which you will then +include in your real program. + +

If you compile this subsidiary program using $(CC) in the usual +way, you will not be able to run it. This is because $(CC) will +build a program for the host system, but the program is being built on +the build system. + +

You must instead use a compiler for the build system, rather than the +host system. In the Cygnus tree, this make variable +$(CC_FOR_BUILD) will hold a compiler for the build system. + +

Note that you should not include config.h in a file you are +compiling with $(CC_FOR_BUILD). The configure script will +build config.h with information for the host system. However, +you are compiling the file using a compiler for the build system (a +native compiler). Subsidiary programs are normally simple filters which +do no user interaction, and it is normally possible to write them in a +highly portable fashion so that the absence of config.h is not +crucial. + +

The gcc Makefile.in shows a complex situation in which certain +files, such as rtl.c, must be compiled into both subsidiary +programs run on the build system and into the final program. This +approach may be of interest for advanced build system hackers. Note +that the build system compiler is rather confusingly called +HOST_CC. + +

+


+Next: , +Previous: Canadian Cross, +Up: Top +
+
+ +

7 Cygnus Configure

+ +

+The Cygnus configure script predates autoconf. All of its interesting +features have been incorporated into autoconf. No new programs should +be written to use the Cygnus configure script. + +

However, the Cygnus configure script is still used in a few places: at +the top of the Cygnus tree and in a few target libraries in the Cygnus +tree. Until those uses have been replaced with autoconf, some brief +notes are appropriate here. This is not complete documentation, but it +should be possible to use this as a guide while examining the scripts +themselves. + +

+ + + +

7.1 Cygnus Configure Basics

+ +

Cygnus configure does not use any generated files; there is no program +corresponding to autoconf. Instead, there is a single shell +script named configure which may be found at the top of the +Cygnus tree. This shell script was written by hand; it was not +generated by autoconf, and it is incorrect, and indeed harmful, to run +autoconf in the top level of a Cygnus tree. + +

Cygnus configure works in a particular directory by examining the file +configure.in in that directory. That file is broken into four +separate shell scripts. + +

The first is the contents of configure.in up to a line that +starts with # per-host:. This is the common part. + +

The second is the rest of configure.in up to a line that starts +with # per-target:. This is the per host part. + +

The third is the rest of configure.in up to a line that starts +with # post-target:. This is the per target part. + +

The fourth is the remainder of configure.in. This is the post +target part. + +

If any of these comment lines are missing, the corresponding shell +script is empty. + +

Cygnus configure will first execute the common part. This must set the +shell variable srctrigger to the name of a source file, to +confirm that Cygnus configure is looking at the right directory. This +may set the shell variables package_makefile_frag and +package_makefile_rules_frag. + +

Cygnus configure will next set the build and host shell +variables, and execute the per host part. This may set the shell +variable host_makefile_frag. + +

Cygnus configure will next set the target variable, and execute +the per target part. This may set the shell variable +target_makefile_frag. + +

Any of these scripts may set the subdirs shell variable. This +variable is a list of subdirectories where a Makefile.in file may +be found. Cygnus configure will automatically look for a +Makefile.in file in the current directory. The subdirs +shell variable is not normally used, and I believe that the only +directory which uses it at present is newlib. + +

For each Makefile.in, Cygnus configure will automatically create +a Makefile by adding definitions for make variables such +as host and target, and automatically editing the values +of make variables such as prefix if they are present. + +

Also, if any of the makefile_frag shell variables are set, Cygnus +configure will interpret them as file names relative to either the +working directory or the source directory, and will read the contents of +the file into the generated Makefile. The file contents will be +read in after the first line in Makefile.in which starts with +####. + +

These Makefile fragments are used to customize behaviour for a +particular host or target. They serve to select particular files to +compile, and to define particular preprocessor macros by providing +values for make variables which are then used during compilation. +Cygnus configure, unlike autoconf, normally does not do feature tests, +and normally requires support to be added manually for each new host. + +

The Makefile fragment support is similar to the autoconf +AC_SUBST_FILE macro. + +

After creating each Makefile, the post target script will be run +(i.e., it may be run several times). This script may further customize +the Makefile. When it is run, the shell variable Makefile +will hold the name of the Makefile, including the appropriate +directory component. + +

Like an autoconf generated configure script, Cygnus configure +will create a file named config.status which, when run, will +automatically recreate the configuration. The config.status file +will simply execute the Cygnus configure script again with the +appropriate arguments. + +

Any of the parts of configure.in may set the shell variables +files and links. Cygnus configure will set up symlinks +from the names in links to the files named in files. This +is similar to the autoconf AC_LINK_FILES macro. + +

Finally, any of the parts of configure.in may set the shell +variable configdirs to a set of subdirectories. If it is set, +Cygnus configure will recursively run the configure process in each +subdirectory. If the subdirectory uses Cygnus configure, it will +contain a configure.in file but no configure file, in +which case Cygnus configure will invoke itself recursively. If the +subdirectory has a configure file, Cygnus configure assumes that +it is an autoconf generated configure script, and simply invokes +it directly. + +

+


+Previous: Cygnus Configure Basics, +Up: Cygnus Configure +
+
+ +

7.2 Cygnus Configure in C++ Libraries

+ +

+The C++ library configure system, written by Per Bothner, deserves +special mention. It uses Cygnus configure, but it does feature testing +like that done by autoconf generated configure scripts. This +approach is used in the libraries libio, libstdc++, and +libg++. + +

Most of the Makefile information is written out by the shell +script libio/config.shared. Each configure.in file sets +certain shell variables, and then invokes config.shared to create +two package Makefile fragments. These fragments are then +incorporated into the resulting Makefile by the Cygnus configure +script. + +

The file _G_config.h is created in the libio object +directory by running the shell script libio/gen-params. This +shell script uses feature tests to define macros and typedefs in +_G_config.h. + +

+


+Next: , +Previous: Cygnus Configure, +Up: Top +
+
+ +

8 Multilibs

+ +

+For some targets gcc may have different processor requirements depending +upon command line options. An obvious example is the +-msoft-float option supported on several processors. This option +means that the floating point registers are not available, which means +that floating point operations must be done by calling an emulation +subroutine rather than by using machine instructions. + +

For such options, gcc is often configured to compile target libraries +twice: once with -msoft-float and once without. When gcc +compiles target libraries more than once, the resulting libraries are +called multilibs. + +

Multilibs are not really part of the GNU configure and build system, but +we discuss them here since they require support in the configure +scripts and Makefiles used for target libraries. + +

+ + + +

8.1 Multilibs in gcc

+ +

In gcc, multilibs are defined by setting the variable +MULTILIB_OPTIONS in the target Makefile fragment. Several +other MULTILIB variables may also be defined there. See The Target Makefile Fragment (Using and Porting GNU CC). + +

If you have built gcc, you can see what multilibs it uses by running it +with the -print-multi-lib option. The output .; means +that no multilibs are used. In general, the output is a sequence of +lines, one per multilib. The first part of each line, up to the +;, is the name of the multilib directory. The second part is a +list of compiler options separated by @ characters. + +

Multilibs are built in a tree of directories. The top of the tree, +represented by . in the list of multilib directories, is the +default library to use when no special compiler options are used. The +subdirectories of the tree hold versions of the library to use when +particular compiler options are used. + +

+


+Previous: Multilibs in gcc, +Up: Multilibs +
+
+ +

8.2 Multilibs in Target Libraries

+ +

The target libraries in the Cygnus tree are automatically built with +multilibs. That means that each library is built multiple times. + +

This default is set in the top level configure.in file, by adding +--enable-multilib to the list of arguments passed to configure +when it is run for the target libraries (see Host and Target Libraries). + +

Each target library uses the shell script config-ml.in, written +by Doug Evans, to prepare to build target libraries. This shell script +is invoked after the Makefile has been created by the +configure script. If multilibs are not enabled, it does nothing, +otherwise it modifies the Makefile to support multilibs. + +

The config-ml.in script makes one copy of the Makefile for +each multilib in the appropriate subdirectory. When configuring in the +source directory (which is not recommended), it will build a symlink +tree of the sources in each subdirectory. + +

The config-ml.in script sets several variables in the various +Makefiles. The Makefile.in must have definitions for +these variables already; config-ml.in simply changes the existing +values. The Makefile should use default values for these +variables which will do the right thing in the subdirectories. + +

+
MULTISRCTOP
config-ml.in will set this to a sequence of ../ strings, +where the number of strings is the number of multilib levels in the +source tree. The default value should be the empty string. +
MULTIBUILDTOP
config-ml.in will set this to a sequence of ../ strings, +where the number of strings is number of multilib levels in the object +directory. The default value should be the empty string. This will +differ from MULTISRCTOP when configuring in the source tree +(which is not recommended). +
MULTIDIRS
In the top level Makefile only, config-ml.in will set this +to the list of multilib subdirectories. The default value should be the +empty string. +
MULTISUBDIR
config-ml.in will set this to the installed subdirectory name to +use for this subdirectory, with a leading /. The default value +shold be the empty string. +
MULTIDO
MULTICLEAN
In the top level Makefile only, config-ml.in will set +these variables to commands to use when doing a recursive make. These +variables should both default to the string true, so that by +default nothing happens. +
+ +

All references to the parent of the source directory should use the +variable MULTISRCTOP. Instead of writing $(srcdir)/.., +you must write $(srcdir)/$(MULTISRCTOP)... + +

Similarly, references to the parent of the object directory should use +the variable MULTIBUILDTOP. + +

In the installation target, the libraries should be installed in the +subdirectory MULTISUBDIR. Instead of installing +$(libdir)/libfoo.a, install +$(libdir)$(MULTISUBDIR)/libfoo.a. + +

The config-ml.in script also modifies the top level +Makefile to add multi-do and multi-clean targets +which are used when building multilibs. + +

The default target of the Makefile should include the following +command: +

     @$(MULTIDO) $(FLAGS_TO_PASS) DO=all multi-do
+
+

This assumes that $(FLAGS_TO_PASS) is defined as a set of +variables to pass to a recursive invocation of make. This will +build all the multilibs. Note that the default value of MULTIDO +is true, so by default this command will do nothing. It will +only do something in the top level Makefile if multilibs were +enabled. + +

The install target of the Makefile should include the +following command: +

     @$(MULTIDO) $(FLAGS_TO_PASS) DO=install multi-do
+
+

In general, any operation, other than clean, which should be performed +on all the multilibs should use a $(MULTIDO) line, setting the +variable DO to the target of each recursive call to make. + +

The clean targets (clean, mostlyclean, etc.) should +use $(MULTICLEAN). For example, the clean target should +do this: +

     @$(MULTICLEAN) DO=clean multi-clean
+
+
+


+Next: , +Previous: Multilibs, +Up: Top +
+
+ +

9 Frequently Asked Questions

+ +
+
Which do I run first, autoconf or automake?
Except when you first add autoconf or automake support to a package, you +shouldn't run either by hand. Instead, configure with the +--enable-maintainer-mode option, and let make take care of +it. + +


autoconf says something about undefined macros.
This means that you have macros in your configure.in which are +not defined by autoconf. You may be using an old version of +autoconf; try building and installing a newer one. Make sure the +newly installled autoconf is first on your PATH. Also, +see the next question. + +


My configure script has stuff like CY_GNU_GETTEXT in it.
This means that you have macros in your configure.in which should +be defined in your aclocal.m4 file, but aren't. This usually +means that aclocal was not able to appropriate definitions of the +macros. Make sure that you have installed all the packages you need. +In particular, make sure that you have installed libtool (this is where +AM_PROG_LIBTOOL is defined) and gettext (this is where +CY_GNU_GETTEXT is defined, at least in the Cygnus version of +gettext). + +


My Makefile has @ characters in it.
This may mean that you tried to use an autoconf substitution in your +Makefile.in without adding the appropriate AC_SUBST call +to your configure script. Or it may just mean that you need to +rebuild Makefile in your build directory. To rebuild +Makefile from Makefile.in, run the shell script +config.status with no arguments. If you need to force +configure to run again, first run config.status --recheck. +These runs are normally done automatically by Makefile targets, +but if your Makefile has gotten messed up you'll need to help +them along. + +


Why do I have to run both config.status --recheck and config.status?
Normally, you don't; they will be run automatically by Makefile +targets. If you do need to run them, use config.status --recheck +to run the configure script again with the same arguments as the +first time you ran it. Use config.status (with no arguments) to +regenerate all files (Makefile, config.h, etc.) based on +the results of the configure script. The two cases are separate because +it isn't always necessary to regenerate all the files after running +config.status --recheck. The Makefile targets generated +by automake will use the environment variables CONFIG_FILES and +CONFIG_HEADERS to only regenerate files as they are needed. + +
What is the Cygnus tree?
The Cygnus tree is used for various packages including gdb, the GNU +binutils, and egcs. It is also, of course, used for Cygnus releases. +It is the build system which was developed at Cygnus, using the Cygnus +configure script. It permits building many different packages with a +single configure and make. The configure scripts in the tree are being +converted to autoconf, but the general build structure remains intact. + +
Why do I have to keep rebuilding and reinstalling the tools?
I know, it's a pain. Unfortunately, there are bugs in the tools +themselves which need to be fixed, and each time that happens everybody +who uses the tools need to reinstall new versions of them. I don't know +if there is going to be a clever fix until the tools stabilize. + +
Why not just have a Cygnus tree make target to update the tools?
The tools unfortunately need to be installed before they can be used. +That means that they must be built using an appropriate prefix, and it +seems unwise to assume that every configuration uses an appropriate +prefix. It might be possible to make them work in place, or it might be +possible to install them in some subdirectory; so far these approaches +have not been implemented. +
+ +
+


+Previous: FAQ, +Up: Top +
+
+ +

Index

+ + +
+

Table of Contents

+ +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Analysis-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Analysis-Options.html new file mode 100644 index 0000000..991abde --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Analysis-Options.html @@ -0,0 +1,111 @@ + + +Analysis Options - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: Output Options, +Up: Invoking +



+
+ +

4.2 Analysis Options

+ +
+
-a
--no-static
The -a option causes gprof to suppress the printing of +statically declared (private) functions. (These are functions whose +names are not listed as global, and which are not visible outside the +file/function/block where they were defined.) Time spent in these +functions, calls to/from them, etc., will all be attributed to the +function that was loaded directly before it in the executable file. + +This option affects both the flat profile and the call graph. + +
-c
--static-call-graph
The -c option causes the call graph of the program to be +augmented by a heuristic which examines the text space of the object +file and identifies function calls in the binary machine code. +Since normal call graph records are only generated when functions are +entered, this option identifies children that could have been called, +but never were. Calls to functions that were not compiled with +profiling enabled are also identified, but only if symbol table +entries are present for them. +Calls to dynamic library routines are typically not found +by this option. +Parents or children identified via this heuristic +are indicated in the call graph with call counts of 0. + +
-D
--ignore-non-functions
The -D option causes gprof to ignore symbols which +are not known to be functions. This option will give more accurate +profile data on systems where it is supported (Solaris and HPUX for +example). + +
-k from/to
The -k option allows you to delete from the call graph any arcs from +symbols matching symspec from to those matching symspec to. + +
-l
--line
The -l option enables line-by-line profiling, which causes +histogram hits to be charged to individual source code lines, +instead of functions. This feature only works with programs compiled +by older versions of the gcc compiler. Newer versions of +gcc are designed to work with the gcov tool instead. + +

If the program was compiled with basic-block counting enabled, +this option will also identify how many times each line of +code was executed. +While line-by-line profiling can help isolate where in a large function +a program is spending its time, it also significantly increases +the running time of gprof, and magnifies statistical +inaccuracies. +See Statistical Sampling Error. + +

-m num
--min-count=num
This option affects execution count output only. +Symbols that are executed less than num times are suppressed. + +
-nsymspec
--time=symspec
The -n option causes gprof, in its call graph analysis, +to only propagate times for symbols matching symspec. + +
-Nsymspec
--no-time=symspec
The -n option causes gprof, in its call graph analysis, +not to propagate times for symbols matching symspec. + +
-z
--display-unused-functions
If you give the -z option, gprof will mention all +functions in the flat profile, even those that were never called, and +that had no time spent in them. This is useful in conjunction with the +-c option for discovering which routines were never called. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Annotated-Source.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Annotated-Source.html new file mode 100644 index 0000000..e4aba80 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Annotated-Source.html @@ -0,0 +1,125 @@ + + +Annotated Source - GNU gprof + + + + + + + + + + + + +
+

+Previous: Line-by-line, +Up: Output +



+
+ +

5.4 The Annotated Source Listing

+ +

gprof's -A option triggers an annotated source listing, +which lists the program's source code, each function labeled with the +number of times it was called. You may also need to specify the +-I option, if gprof can't find the source code files. + +

With older versions of gcc compiling with gcc ... -g +-pg -a augments your program with basic-block counting code, in +addition to function counting code. This enables gprof to +determine how many times each line of code was executed. With newer +versions of gcc support for displaying basic-block counts is +provided by the gcov program. + +

For example, consider the following function, taken from gzip, +with line numbers added: + +

      1 ulg updcrc(s, n)
+      2     uch *s;
+      3     unsigned n;
+      4 {
+      5     register ulg c;
+      6
+      7     static ulg crc = (ulg)0xffffffffL;
+      8
+      9     if (s == NULL) {
+     10         c = 0xffffffffL;
+     11     } else {
+     12         c = crc;
+     13         if (n) do {
+     14             c = crc_32_tab[...];
+     15         } while (--n);
+     16     }
+     17     crc = c;
+     18     return c ^ 0xffffffffL;
+     19 }
+     
+
+

updcrc has at least five basic-blocks. +One is the function itself. The +if statement on line 9 generates two more basic-blocks, one +for each branch of the if. A fourth basic-block results from +the if on line 13, and the contents of the do loop form +the fifth basic-block. The compiler may also generate additional +basic-blocks to handle various special cases. + +

A program augmented for basic-block counting can be analyzed with +gprof -l -A. +The -x option is also helpful, +to ensure that each line of code is labeled at least once. +Here is updcrc's +annotated source listing for a sample gzip run: + +

                     ulg updcrc(s, n)
+                         uch *s;
+                         unsigned n;
+                 2 ->{
+                         register ulg c;
+     
+                         static ulg crc = (ulg)0xffffffffL;
+     
+                 2 ->    if (s == NULL) {
+                 1 ->        c = 0xffffffffL;
+                 1 ->    } else {
+                 1 ->        c = crc;
+                 1 ->        if (n) do {
+             26312 ->            c = crc_32_tab[...];
+     26312,1,26311 ->        } while (--n);
+                         }
+                 2 ->    crc = c;
+                 2 ->    return c ^ 0xffffffffL;
+                 2 ->}
+
+

In this example, the function was called twice, passing once through +each branch of the if statement. The body of the do +loop was executed a total of 26312 times. Note how the while +statement is annotated. It began execution 26312 times, once for +each iteration through the loop. One of those times (the last time) +it exited, while it branched back to the beginning of the loop 26311 times. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Assumptions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Assumptions.html new file mode 100644 index 0000000..992c0fb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Assumptions.html @@ -0,0 +1,75 @@ + + +Assumptions - GNU gprof + + + + + + + + + + + + +

+

+Previous: Sampling Error, +Up: Inaccuracy +



+
+ +

6.2 Estimating children Times

+ +

Some of the figures in the call graph are estimates—for example, the +children time values and all the time figures in caller and +subroutine lines. + +

There is no direct information about these measurements in the profile +data itself. Instead, gprof estimates them by making an assumption +about your program that might or might not be true. + +

The assumption made is that the average time spent in each call to any +function foo is not correlated with who called foo. If +foo used 5 seconds in all, and 2/5 of the calls to foo came +from a, then foo contributes 2 seconds to a's +children time, by assumption. + +

This assumption is usually true enough, but for some programs it is far +from true. Suppose that foo returns very quickly when its argument +is zero; suppose that a always passes zero as an argument, while +other callers of foo pass other arguments. In this program, all the +time spent in foo is in the calls from callers other than a. +But gprof has no way of knowing this; it will blindly and +incorrectly charge 2 seconds of time in foo to the children of +a. + + +

We hope some day to put more complete data into gmon.out, so that +this assumption is no longer needed, if we can figure out how. For the +novice, the estimated figures are usually more useful than misleading. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Call-Graph.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Call-Graph.html new file mode 100644 index 0000000..d1deb9a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Call-Graph.html @@ -0,0 +1,109 @@ + + +Call Graph - GNU gprof + + + + + + + + + + + + + +

+

+Next: , +Previous: Flat Profile, +Up: Output +



+
+ +

5.2 The Call Graph

+ +

+The call graph shows how much time was spent in each function +and its children. From this information, you can find functions that, +while they themselves may not have used much time, called other +functions that did use unusual amounts of time. + +

Here is a sample call from a small program. This call came from the +same gprof run as the flat profile example in the previous +section. + +

     granularity: each sample hit covers 2 byte(s) for 20.00% of 0.05 seconds
+     
+     index % time    self  children    called     name
+                                                      <spontaneous>
+     [1]    100.0    0.00    0.05                 start [1]
+                     0.00    0.05       1/1           main [2]
+                     0.00    0.00       1/2           on_exit [28]
+                     0.00    0.00       1/1           exit [59]
+     -----------------------------------------------
+                     0.00    0.05       1/1           start [1]
+     [2]    100.0    0.00    0.05       1         main [2]
+                     0.00    0.05       1/1           report [3]
+     -----------------------------------------------
+                     0.00    0.05       1/1           main [2]
+     [3]    100.0    0.00    0.05       1         report [3]
+                     0.00    0.03       8/8           timelocal [6]
+                     0.00    0.01       1/1           print [9]
+                     0.00    0.01       9/9           fgets [12]
+                     0.00    0.00      12/34          strncmp <cycle 1> [40]
+                     0.00    0.00       8/8           lookup [20]
+                     0.00    0.00       1/1           fopen [21]
+                     0.00    0.00       8/8           chewtime [24]
+                     0.00    0.00       8/16          skipspace [44]
+     -----------------------------------------------
+     [4]     59.8    0.01        0.02       8+472     <cycle 2 as a whole> [4]
+                     0.01        0.02     244+260         offtime <cycle 2> [7]
+                     0.00        0.00     236+1           tzset <cycle 2> [26]
+     -----------------------------------------------
+
+

The lines full of dashes divide this table into entries, one for each +function. Each entry has one or more lines. + +

In each entry, the primary line is the one that starts with an index number +in square brackets. The end of this line says which function the entry is +for. The preceding lines in the entry describe the callers of this +function and the following lines describe its subroutines (also called +children when we speak of the call graph). + +

The entries are sorted by time spent in the function and its subroutines. + +

The internal profiling function mcount (see The Flat Profile) is never mentioned in the call graph. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Callers.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Callers.html new file mode 100644 index 0000000..67ea75e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Callers.html @@ -0,0 +1,98 @@ + + +Callers - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: Primary, +Up: Call Graph +



+
+ +

5.2.2 Lines for a Function's Callers

+ +

A function's entry has a line for each function it was called by. +These lines' fields correspond to the fields of the primary line, but +their meanings are different because of the difference in context. + +

For reference, we repeat two lines from the entry for the function +report, the primary line and one caller-line preceding it, together +with the heading line that shows the names of the fields: + +

     index  % time    self  children called     name
+     ...
+                     0.00    0.05       1/1           main [2]
+     [3]    100.0    0.00    0.05       1         report [3]
+
+

Here are the meanings of the fields in the caller-line for report +called from main: + +

+
self
An estimate of the amount of time spent in report itself when it was +called from main. + +
children
An estimate of the amount of time spent in subroutines of report +when report was called from main. + +

The sum of the self and children fields is an estimate +of the amount of time spent within calls to report from main. + +

called
Two numbers: the number of times report was called from main, +followed by the total number of non-recursive calls to report from +all its callers. + +
name and index number
The name of the caller of report to which this line applies, +followed by the caller's index number. + +

Not all functions have entries in the call graph; some +options to gprof request the omission of certain functions. +When a caller has no entry of its own, it still has caller-lines +in the entries of the functions it calls. + +

If the caller is part of a recursion cycle, the cycle number is +printed between the name and the index number. +

+ +

If the identity of the callers of a function cannot be determined, a +dummy caller-line is printed which has <spontaneous> as the +“caller's name” and all other fields blank. This can happen for +signal handlers. + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Compiling.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Compiling.html new file mode 100644 index 0000000..2798029 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Compiling.html @@ -0,0 +1,122 @@ + + +Compiling - GNU gprof + + + + + + + + + + + + +

+

+Next: , +Previous: Introduction, +Up: Top +



+
+ +

2 Compiling a Program for Profiling

+ +

The first step in generating profile information for your program is +to compile and link it with profiling enabled. + +

To compile a source file for profiling, specify the -pg option when +you run the compiler. (This is in addition to the options you normally +use.) + +

To link the program for profiling, if you use a compiler such as cc +to do the linking, simply specify -pg in addition to your usual +options. The same option, -pg, alters either compilation or linking +to do what is necessary for profiling. Here are examples: + +

     cc -g -c myprog.c utils.c -pg
+     cc -o myprog myprog.o utils.o -pg
+
+

The -pg option also works with a command that both compiles and links: + +

     cc -o myprog myprog.c utils.c -g -pg
+
+

Note: The -pg option must be part of your compilation options +as well as your link options. If it is not then no call-graph data +will be gathered and when you run gprof you will get an error +message like this: + +

     gprof: gmon.out file is missing call-graph data
+
+

If you add the -Q switch to suppress the printing of the call +graph data you will still be able to see the time samples: + +

     Flat profile:
+     
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self              self     total
+      time   seconds   seconds    calls  Ts/call  Ts/call  name
+      44.12      0.07     0.07                             zazLoop
+      35.29      0.14     0.06                             main
+      20.59      0.17     0.04                             bazMillion
+
+

If you run the linker ld directly instead of through a compiler +such as cc, you may have to specify a profiling startup file +gcrt0.o as the first input file instead of the usual startup +file crt0.o. In addition, you would probably want to +specify the profiling C library, libc_p.a, by writing +-lc_p instead of the usual -lc. This is not absolutely +necessary, but doing this gives you number-of-calls information for +standard library functions such as read and open. For +example: + +

     ld -o myprog /lib/gcrt0.o myprog.o utils.o -lc_p
+
+

If you compile only some of the modules of the program with -pg, you +can still profile the program, but you won't get complete information about +the modules that were compiled without -pg. The only information +you get for the functions in those modules is the total time spent in them; +there is no record of how many times they were called, or from where. This +will not affect the flat profile (except that the calls field for +the functions will be blank), but will greatly reduce the usefulness of the +call graph. + +

If you wish to perform line-by-line profiling you should use the +gcov tool instead of gprof. See that tool's manual or +info pages for more details of how to do this. + +

Note, older versions of gcc produce line-by-line profiling +information that works with gprof rather than gcov so +there is still support for displaying this kind of information in +gprof. See Line-by-line Profiling. + +

It also worth noting that gcc implements a +-finstrument-functions command line option which will insert +calls to special user supplied instrumentation routines at the entry +and exit of every function in their program. This can be used to +implement an alternative profiling scheme. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Cycles.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Cycles.html new file mode 100644 index 0000000..3a64c84 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Cycles.html @@ -0,0 +1,173 @@ + + +Cycles - GNU gprof + + + + + + + + + + + + +

+

+Previous: Subroutines, +Up: Call Graph +



+
+ +

5.2.4 How Mutually Recursive Functions Are Described

+ +

+The graph may be complicated by the presence of cycles of +recursion in the call graph. A cycle exists if a function calls +another function that (directly or indirectly) calls (or appears to +call) the original function. For example: if a calls b, +and b calls a, then a and b form a cycle. + +

Whenever there are call paths both ways between a pair of functions, they +belong to the same cycle. If a and b call each other and +b and c call each other, all three make one cycle. Note that +even if b only calls a if it was not called from a, +gprof cannot determine this, so a and b are still +considered a cycle. + +

The cycles are numbered with consecutive integers. When a function +belongs to a cycle, each time the function name appears in the call graph +it is followed by <cycle number>. + +

The reason cycles matter is that they make the time values in the call +graph paradoxical. The “time spent in children” of a should +include the time spent in its subroutine b and in b's +subroutines—but one of b's subroutines is a! How much of +a's time should be included in the children of a, when +a is indirectly recursive? + +

The way gprof resolves this paradox is by creating a single entry +for the cycle as a whole. The primary line of this entry describes the +total time spent directly in the functions of the cycle. The +“subroutines” of the cycle are the individual functions of the cycle, and +all other functions that were called directly by them. The “callers” of +the cycle are the functions, outside the cycle, that called functions in +the cycle. + +

Here is an example portion of a call graph which shows a cycle containing +functions a and b. The cycle was entered by a call to +a from main; both a and b called c. + +

     index  % time    self  children called     name
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+     [3]     91.71    1.77        0    1+5    <cycle 1 as a whole> [3]
+                      1.02        0    3          b <cycle 1> [4]
+                      0.75        0    2          a <cycle 1> [5]
+     ----------------------------------------
+                                       3          a <cycle 1> [5]
+     [4]     52.85    1.02        0    0      b <cycle 1> [4]
+                                       2          a <cycle 1> [5]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+                                       2          b <cycle 1> [4]
+     [5]     38.86    0.75        0    1      a <cycle 1> [5]
+                                       3          b <cycle 1> [4]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+
+

(The entire call graph for this program contains in addition an entry for +main, which calls a, and an entry for c, with callers +a and b.) + +

     index  % time    self  children called     name
+                                                  <spontaneous>
+     [1]    100.00       0     1.93    0      start [1]
+                      0.16     1.77    1/1        main [2]
+     ----------------------------------------
+                      0.16     1.77    1/1        start [1]
+     [2]    100.00    0.16     1.77    1      main [2]
+                      1.77        0    1/1        a <cycle 1> [5]
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+     [3]     91.71    1.77        0    1+5    <cycle 1 as a whole> [3]
+                      1.02        0    3          b <cycle 1> [4]
+                      0.75        0    2          a <cycle 1> [5]
+                         0        0    6/6        c [6]
+     ----------------------------------------
+                                       3          a <cycle 1> [5]
+     [4]     52.85    1.02        0    0      b <cycle 1> [4]
+                                       2          a <cycle 1> [5]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+                      1.77        0    1/1        main [2]
+                                       2          b <cycle 1> [4]
+     [5]     38.86    0.75        0    1      a <cycle 1> [5]
+                                       3          b <cycle 1> [4]
+                         0        0    3/6        c [6]
+     ----------------------------------------
+                         0        0    3/6        b <cycle 1> [4]
+                         0        0    3/6        a <cycle 1> [5]
+     [6]      0.00       0        0    6      c [6]
+     ----------------------------------------
+
+

The self field of the cycle's primary line is the total time +spent in all the functions of the cycle. It equals the sum of the +self fields for the individual functions in the cycle, found +in the entry in the subroutine lines for these functions. + +

The children fields of the cycle's primary line and subroutine lines +count only subroutines outside the cycle. Even though a calls +b, the time spent in those calls to b is not counted in +a's children time. Thus, we do not encounter the problem of +what to do when the time in those calls to b includes indirect +recursive calls back to a. + +

The children field of a caller-line in the cycle's entry estimates +the amount of time spent in the whole cycle, and its other +subroutines, on the times when that caller called a function in the cycle. + +

The called field in the primary line for the cycle has two numbers: +first, the number of times functions in the cycle were called by functions +outside the cycle; second, the number of times they were called by +functions in the cycle (including times when a function in the cycle calls +itself). This is a generalization of the usual split into non-recursive and +recursive calls. + +

The called field of a subroutine-line for a cycle member in the +cycle's entry says how many time that function was called from functions in +the cycle. The total of all these is the second number in the primary line's +called field. + +

In the individual entry for a function in a cycle, the other functions in +the same cycle can appear as subroutines and as callers. These lines show +how many times each function in the cycle called or was called from each other +function in the cycle. The self and children fields in these +lines are blank because of the difficulty of defining meanings for them +when recursion is going on. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Debugging.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Debugging.html new file mode 100644 index 0000000..4adb6cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Debugging.html @@ -0,0 +1,73 @@ + + +Debugging - GNU gprof + + + + + + + + + + + + +

+

+Previous: Internals, +Up: Details +



+
+ +

9.4 Debugging gprof

+ +

If gprof was compiled with debugging enabled, +the -d option triggers debugging output +(to stdout) which can be helpful in understanding its operation. +The debugging number specified is interpreted as a sum of the following +options: + +

+
2 - Topological sort
Monitor depth-first numbering of symbols during call graph analysis +
4 - Cycles
Shows symbols as they are identified as cycle heads +
16 - Tallying
As the call graph arcs are read, show each arc and how +the total calls to each function are tallied +
32 - Call graph arc sorting
Details sorting individual parents/children within each call graph entry +
64 - Reading histogram and call graph records
Shows address ranges of histograms as they are read, and each +call graph arc +
128 - Symbol table
Reading, classifying, and sorting the symbol table from the object file. +For line-by-line profiling (-l option), also shows line numbers +being assigned to memory addresses. +
256 - Static call graph
Trace operation of -c option +
512 - Symbol table and arc table lookups
Detail operation of lookup routines +
1024 - Call graph propagation
Shows how function times are propagated along the call graph +
2048 - Basic-blocks
Shows basic-block records as they are read from profile data +(only meaningful with -l option) +
4096 - Symspecs
Shows symspec-to-symbol pattern matching operation +
8192 - Annotate source
Tracks operation of -A option +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Deprecated-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Deprecated-Options.html new file mode 100644 index 0000000..c8d7fac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Deprecated-Options.html @@ -0,0 +1,91 @@ + + +Deprecated Options - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: Miscellaneous Options, +Up: Invoking +



+
+ +

4.4 Deprecated Options

+ +
+These options have been replaced with newer versions that use symspecs. + +
-e function_name
The -e function option tells gprof to not print +information about the function function_name (and its +children...) in the call graph. The function will still be listed +as a child of any functions that call it, but its index number will be +shown as [not printed]. More than one -e option may be +given; only one function_name may be indicated with each -e +option. + +
-E function_name
The -E function option works like the -e option, but +time spent in the function (and children who were not called from +anywhere else), will not be used to compute the percentages-of-time for +the call graph. More than one -E option may be given; only one +function_name may be indicated with each -E option. + +
-f function_name
The -f function option causes gprof to limit the +call graph to the function function_name and its children (and +their children...). More than one -f option may be given; +only one function_name may be indicated with each -f +option. + +
-F function_name
The -F function option works like the -f option, but +only time spent in the function and its children (and their +children...) will be used to determine total-time and +percentages-of-time for the call graph. More than one -F option +may be given; only one function_name may be indicated with each +-F option. The -F option overrides the -E option. + +
+ + +

Note that only one function can be specified with each -e, +-E, -f or -F option. To specify more than one +function, use multiple options. For example, this command: + +

     gprof -e boring -f foo -f bar myprogram > gprof.output
+
+

lists in the call graph all functions that were reached from either +foo or bar and were not reachable from boring. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Details.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Details.html new file mode 100644 index 0000000..36af56c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Details.html @@ -0,0 +1,55 @@ + + +Details - GNU gprof + + + + + + + + + + + + +

+

+Next: , +Previous: Incompatibilities, +Up: Top +



+
+ +

9 Details of Profiling

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Executing.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Executing.html new file mode 100644 index 0000000..9bff64a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Executing.html @@ -0,0 +1,98 @@ + + +Executing - GNU gprof + + + + + + + + + + + + +
+

+Next: , +Previous: Compiling, +Up: Top +



+
+ +

3 Executing the Program

+ +

Once the program is compiled for profiling, you must run it in order to +generate the information that gprof needs. Simply run the program +as usual, using the normal arguments, file names, etc. The program should +run normally, producing the same output as usual. It will, however, run +somewhat slower than normal because of the time spent collecting and +writing the profile data. + +

The way you run the program—the arguments and input that you give +it—may have a dramatic effect on what the profile information shows. The +profile data will describe the parts of the program that were activated for +the particular input you use. For example, if the first command you give +to your program is to quit, the profile data will show the time used in +initialization and in cleanup, but not much else. + +

Your program will write the profile data into a file called gmon.out +just before exiting. If there is already a file called gmon.out, +its contents are overwritten. There is currently no way to tell the +program to write the profile data under a different name, but you can rename +the file afterwards if you are concerned that it may be overwritten. + +

In order to write the gmon.out file properly, your program must exit +normally: by returning from main or by calling exit. Calling +the low-level function _exit does not write the profile data, and +neither does abnormal termination due to an unhandled signal. + +

The gmon.out file is written in the program's current working +directory at the time it exits. This means that if your program calls +chdir, the gmon.out file will be left in the last directory +your program chdir'd to. If you don't have permission to write in +this directory, the file is not written, and you will get an error message. + +

Older versions of the gnu profiling library may also write a file +called bb.out. This file, if present, contains an human-readable +listing of the basic-block execution counts. Unfortunately, the +appearance of a human-readable bb.out means the basic-block +counts didn't get written into gmon.out. +The Perl script bbconv.pl, included with the gprof +source distribution, will convert a bb.out file into +a format readable by gprof. Invoke it like this: + +

     bbconv.pl < bb.out > bh-data
+
+

This translates the information in bb.out into a form that +gprof can understand. But you still need to tell gprof +about the existence of this translated information. To do that, include +bb-data on the gprof command line, along with +gmon.out, like this: + +

     gprof options executable-file gmon.out bb-data [yet-more-profile-data-files...] [> outfile]
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/File-Format.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/File-Format.html new file mode 100644 index 0000000..8ea0137 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/File-Format.html @@ -0,0 +1,125 @@ + + +File Format - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: Implementation, +Up: Details +



+
+ +

9.2 Profiling Data File Format

+ +

The old BSD-derived file format used for profile data does not contain a +magic cookie that allows to check whether a data file really is a +gprof file. Furthermore, it does not provide a version number, thus +rendering changes to the file format almost impossible. gnu gprof +uses a new file format that provides these features. For backward +compatibility, gnu gprof continues to support the old BSD-derived +format, but not all features are supported with it. For example, +basic-block execution counts cannot be accommodated by the old file +format. + +

The new file format is defined in header file gmon_out.h. It +consists of a header containing the magic cookie and a version number, +as well as some spare bytes available for future extensions. All data +in a profile data file is in the native format of the target for which +the profile was collected. gnu gprof adapts automatically +to the byte-order in use. + +

In the new file format, the header is followed by a sequence of +records. Currently, there are three different record types: histogram +records, call-graph arc records, and basic-block execution count +records. Each file can contain any number of each record type. When +reading a file, gnu gprof will ensure records of the same type are +compatible with each other and compute the union of all records. For +example, for basic-block execution counts, the union is simply the sum +of all execution counts for each basic-block. + +

9.2.1 Histogram Records

+ +

Histogram records consist of a header that is followed by an array of +bins. The header contains the text-segment range that the histogram +spans, the size of the histogram in bytes (unlike in the old BSD +format, this does not include the size of the header), the rate of the +profiling clock, and the physical dimension that the bin counts +represent after being scaled by the profiling clock rate. The +physical dimension is specified in two parts: a long name of up to 15 +characters and a single character abbreviation. For example, a +histogram representing real-time would specify the long name as +“seconds” and the abbreviation as “s”. This feature is useful for +architectures that support performance monitor hardware (which, +fortunately, is becoming increasingly common). For example, under DEC +OSF/1, the “uprofile” command can be used to produce a histogram of, +say, instruction cache misses. In this case, the dimension in the +histogram header could be set to “i-cache misses” and the abbreviation +could be set to “1” (because it is simply a count, not a physical +dimension). Also, the profiling rate would have to be set to 1 in +this case. + +

Histogram bins are 16-bit numbers and each bin represent an equal +amount of text-space. For example, if the text-segment is one +thousand bytes long and if there are ten bins in the histogram, each +bin represents one hundred bytes. + +

9.2.2 Call-Graph Records

+ +

Call-graph records have a format that is identical to the one used in +the BSD-derived file format. It consists of an arc in the call graph +and a count indicating the number of times the arc was traversed +during program execution. Arcs are specified by a pair of addresses: +the first must be within caller's function and the second must be +within the callee's function. When performing profiling at the +function level, these addresses can point anywhere within the +respective function. However, when profiling at the line-level, it is +better if the addresses are as close to the call-site/entry-point as +possible. This will ensure that the line-level call-graph is able to +identify exactly which line of source code performed calls to a +function. + +

9.2.3 Basic-Block Execution Count Records

+ +

Basic-block execution count records consist of a header followed by a +sequence of address/count pairs. The header simply specifies the +length of the sequence. In an address/count pair, the address +identifies a basic-block and the count specifies the number of times +that basic-block was executed. Any address within the basic-address can +be used. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Flat-Profile.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Flat-Profile.html new file mode 100644 index 0000000..c807bb8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Flat-Profile.html @@ -0,0 +1,148 @@ + + +Flat Profile - GNU gprof + + + + + + + + + + + + +

+

+Next: , +Up: Output +



+
+ +

5.1 The Flat Profile

+ +

+The flat profile shows the total amount of time your program +spent executing each function. Unless the -z option is given, +functions with no apparent time spent in them, and no apparent calls +to them, are not mentioned. Note that if a function was not compiled +for profiling, and didn't run long enough to show up on the program +counter histogram, it will be indistinguishable from a function that +was never called. + +

This is part of a flat profile for a small program: + +

     Flat profile:
+     
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self              self     total
+      time   seconds   seconds    calls  ms/call  ms/call  name
+      33.34      0.02     0.02     7208     0.00     0.00  open
+      16.67      0.03     0.01      244     0.04     0.12  offtime
+      16.67      0.04     0.01        8     1.25     1.25  memccpy
+      16.67      0.05     0.01        7     1.43     1.43  write
+      16.67      0.06     0.01                             mcount
+       0.00      0.06     0.00      236     0.00     0.00  tzset
+       0.00      0.06     0.00      192     0.00     0.00  tolower
+       0.00      0.06     0.00       47     0.00     0.00  strlen
+       0.00      0.06     0.00       45     0.00     0.00  strchr
+       0.00      0.06     0.00        1     0.00    50.00  main
+       0.00      0.06     0.00        1     0.00     0.00  memcpy
+       0.00      0.06     0.00        1     0.00    10.11  print
+       0.00      0.06     0.00        1     0.00     0.00  profil
+       0.00      0.06     0.00        1     0.00    50.00  report
+     ...
+
+

The functions are sorted first by decreasing run-time spent in them, +then by decreasing number of calls, then alphabetically by name. The +functions mcount and profil are part of the profiling +apparatus and appear in every flat profile; their time gives a measure of +the amount of overhead due to profiling. + +

Just before the column headers, a statement appears indicating +how much time each sample counted as. +This sampling period estimates the margin of error in each of the time +figures. A time figure that is not much larger than this is not +reliable. In this example, each sample counted as 0.01 seconds, +suggesting a 100 Hz sampling rate. +The program's total execution time was 0.06 +seconds, as indicated by the cumulative seconds field. Since +each sample counted for 0.01 seconds, this means only six samples +were taken during the run. Two of the samples occurred while the +program was in the open function, as indicated by the +self seconds field. Each of the other four samples +occurred one each in offtime, memccpy, write, +and mcount. +Since only six samples were taken, none of these values can +be regarded as particularly reliable. +In another run, +the self seconds field for +mcount might well be 0.00 or 0.02. +See Statistical Sampling Error, +for a complete discussion. + +

The remaining functions in the listing (those whose +self seconds field is 0.00) didn't appear +in the histogram samples at all. However, the call graph +indicated that they were called, so therefore they are listed, +sorted in decreasing order by the calls field. +Clearly some time was spent executing these functions, +but the paucity of histogram samples prevents any +determination of how much time each took. + +

Here is what the fields in each line mean: + +

+
% time
This is the percentage of the total execution time your program spent +in this function. These should all add up to 100%. + +
cumulative seconds
This is the cumulative total number of seconds the computer spent +executing this functions, plus the time spent in all the functions +above this one in this table. + +
self seconds
This is the number of seconds accounted for by this function alone. +The flat profile listing is sorted first by this number. + +
calls
This is the total number of times the function was called. If the +function was never called, or the number of times it was called cannot +be determined (probably because the function was not compiled with +profiling enabled), the calls field is blank. + +
self ms/call
This represents the average number of milliseconds spent in this +function per call, if this function is profiled. Otherwise, this field +is blank for this function. + +
total ms/call
This represents the average number of milliseconds spent in this +function and its descendants per call, if this function is profiled. +Otherwise, this field is blank for this function. +This is the only field in the flat profile that uses call graph analysis. + +
name
This is the name of the function. The flat profile is sorted by this +field alphabetically after the self seconds and calls +fields are sorted. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..038748e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/GNU-Free-Documentation-License.html @@ -0,0 +1,419 @@ + + +GNU Free Documentation License - GNU gprof + + + + + + + + + + + +
+

+Previous: Details, +Up: Top +



+
+ +

Appendix A GNU Free Documentation License

+ +
Version 1.1, March 2000
+ +
     Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +written document “free” in the sense of freedom: to assure everyone +the effective freedom to copy and redistribute it, with or without +modifying it, either commercially or noncommercially. Secondarily, +this License preserves for the author and publisher a way to get +credit for their work, while not being considered responsible for +modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

    +     
    +     
    +
  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work that contains a +notice placed by the copyright holder saying it can be distributed +under the terms of this License. The “Document”, below, refers to any +such manual or work. Any member of the public is a licensee, and is +addressed as “you.” + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (For example, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, whose contents can be viewed and edited directly and +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup has been designed to thwart or discourage +subsequent modification by readers is not Transparent. A copy that is +not “Transparent” is called “Opaque.” + +

    Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML designed for human modification. Opaque formats include +PostScript, PDF, proprietary formats that can be read and edited only +by proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML produced by some word processors for output +purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. +

    +     
    +     
    +
  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +

    +     
    +     
    +
  4. COPYING IN QUANTITY + +

    If you publish printed copies of the Document numbering more than 100, +and the Document's license notice requires Cover Texts, you must enclose +the copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a publicly-accessible computer-network location containing a complete +Transparent copy of the Document, free of added material, which the +general network-using public has access to download anonymously at no +charge using public-standard network protocols. If you use the latter +option, you must take reasonably prudent steps, when you begin +distribution of Opaque copies in quantity, to ensure that this +Transparent copy will remain thus accessible at the stated location +until at least one year after the last time you distribute an Opaque +copy (directly or through your agents or retailers) of that edition to +the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +

    +     
    +     
    +
  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

    A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission.
    +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five).
    +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher.
    +D. Preserve all the copyright notices of the Document.
    +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices.
    +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below.
    +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice.
    +H. Include an unaltered copy of this License.
    +I. Preserve the section entitled “History”, and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled “History” in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence.
    +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the “History” section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission.
    +K. In any section entitled “Acknowledgements” or “Dedications”, + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein.
    +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles.
    +M. Delete any section entitled “Endorsements.” Such a section + may not be included in the Modified Version.
    +N. Do not retitle any existing section as “Endorsements” + or to conflict in title with any Invariant Section.
    +

    +     
    +     
    + If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties–for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +

    +     
    +     
    +
  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections entitled “History” +in the various original documents, forming one section entitled +“History”; likewise combine any sections entitled “Acknowledgements”, +and any sections entitled “Dedications.” You must delete all sections +entitled “Endorsements.” +

    +     
    +     
    +
  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +

    +     
    +     
    +
  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, does not as a whole count as a Modified Version +of the Document, provided no compilation copyright is claimed for the +compilation. Such a compilation is called an “aggregate”, and this +License does not apply to the other self-contained works thus compiled +with the Document, on account of their being thus compiled, if they +are not themselves derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one quarter +of the entire aggregate, the Document's Cover Texts may be placed on +covers that surround only the Document within the aggregate. +Otherwise they must appear on covers around the whole aggregate. +

    +     
    +     
    +
  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License provided that you also include the +original English version of this License. In case of a disagreement +between the translation and the original English version of this +License, the original English version will prevail. +

    +     
    +     
    +
  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. +

    +     
    +     
    +
  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

     Copyright (C)  year  your name.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being list their titles, with the
+     Front-Cover Texts being list, and with the Back-Cover Texts being list.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+

If you have no Invariant Sections, write “with no Invariant Sections” +instead of saying which ones are invariant. If you have no +Front-Cover Texts, write “no Front-Cover Texts” instead of +“Front-Cover Texts being list”; likewise for Back-Cover Texts. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/How-do-I_003f.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/How-do-I_003f.html new file mode 100644 index 0000000..9e727b2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/How-do-I_003f.html @@ -0,0 +1,84 @@ + + +How do I? - GNU gprof + + + + + + + + + + + + +

+

+Next: , +Previous: Inaccuracy, +Up: Top +



+
+ +

7 Answers to Common Questions

+ +
+
How can I get more exact information about hot spots in my program?
+Looking at the per-line call counts only tells part of the story. +Because gprof can only report call times and counts by function, +the best way to get finer-grained information on where the program +is spending its time is to re-factor large functions into sequences +of calls to smaller ones. Beware however that this can introduce +artificial hot spots since compiling with -pg adds a significant +overhead to function calls. An alternative solution is to use a +non-intrusive profiler, e.g. oprofile. + +
How do I find which lines in my program were executed the most times?
+Use the gcov program. + +
How do I find which lines in my program called a particular function?
+Use gprof -l and lookup the function in the call graph. +The callers will be broken down by function and line number. + +
How do I analyze a program that runs for less than a second?
+Try using a shell script like this one: + +
          for i in `seq 1 100`; do
+            fastprog
+            mv gmon.out gmon.out.$i
+          done
+          
+          gprof -s fastprog gmon.out.*
+          
+          gprof fastprog gmon.sum
+     
+

If your program is completely deterministic, all the call counts +will be simple multiples of 100 (i.e., a function called once in +each run will appear with a call count of 100). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Implementation.html new file mode 100644 index 0000000..194ed73 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Implementation.html @@ -0,0 +1,156 @@ + + +Implementation - GNU gprof + + + + + + + + + + + + +
+

+Next: , +Up: Details +



+
+ +

9.1 Implementation of Profiling

+ +

Profiling works by changing how every function in your program is compiled +so that when it is called, it will stash away some information about where +it was called from. From this, the profiler can figure out what function +called it, and can count how many times it was called. This change is made +by the compiler when your program is compiled with the -pg option, +which causes every function to call mcount +(or _mcount, or __mcount, depending on the OS and compiler) +as one of its first operations. + +

The mcount routine, included in the profiling library, +is responsible for recording in an in-memory call graph table +both its parent routine (the child) and its parent's parent. This is +typically done by examining the stack frame to find both +the address of the child, and the return address in the original parent. +Since this is a very machine-dependent operation, mcount +itself is typically a short assembly-language stub routine +that extracts the required +information, and then calls __mcount_internal +(a normal C function) with two arguments—frompc and selfpc. +__mcount_internal is responsible for maintaining +the in-memory call graph, which records frompc, selfpc, +and the number of times each of these call arcs was traversed. + +

GCC Version 2 provides a magical function (__builtin_return_address), +which allows a generic mcount function to extract the +required information from the stack frame. However, on some +architectures, most notably the SPARC, using this builtin can be +very computationally expensive, and an assembly language version +of mcount is used for performance reasons. + +

Number-of-calls information for library routines is collected by using a +special version of the C library. The programs in it are the same as in +the usual C library, but they were compiled with -pg. If you +link your program with gcc ... -pg, it automatically uses the +profiling version of the library. + +

Profiling also involves watching your program as it runs, and keeping a +histogram of where the program counter happens to be every now and then. +Typically the program counter is looked at around 100 times per second of +run time, but the exact frequency may vary from system to system. + +

This is done is one of two ways. Most UNIX-like operating systems +provide a profil() system call, which registers a memory +array with the kernel, along with a scale +factor that determines how the program's address space maps +into the array. +Typical scaling values cause every 2 to 8 bytes of address space +to map into a single array slot. +On every tick of the system clock +(assuming the profiled program is running), the value of the +program counter is examined and the corresponding slot in +the memory array is incremented. Since this is done in the kernel, +which had to interrupt the process anyway to handle the clock +interrupt, very little additional system overhead is required. + +

However, some operating systems, most notably Linux 2.0 (and earlier), +do not provide a profil() system call. On such a system, +arrangements are made for the kernel to periodically deliver +a signal to the process (typically via setitimer()), +which then performs the same operation of examining the +program counter and incrementing a slot in the memory array. +Since this method requires a signal to be delivered to +user space every time a sample is taken, it uses considerably +more overhead than kernel-based profiling. Also, due to the +added delay required to deliver the signal, this method is +less accurate as well. + +

A special startup routine allocates memory for the histogram and +either calls profil() or sets up +a clock signal handler. +This routine (monstartup) can be invoked in several ways. +On Linux systems, a special profiling startup file gcrt0.o, +which invokes monstartup before main, +is used instead of the default crt0.o. +Use of this special startup file is one of the effects +of using gcc ... -pg to link. +On SPARC systems, no special startup files are used. +Rather, the mcount routine, when it is invoked for +the first time (typically when main is called), +calls monstartup. + +

If the compiler's -a option was used, basic-block counting +is also enabled. Each object file is then compiled with a static array +of counts, initially zero. +In the executable code, every time a new basic-block begins +(i.e., when an if statement appears), an extra instruction +is inserted to increment the corresponding count in the array. +At compile time, a paired array was constructed that recorded +the starting address of each basic-block. Taken together, +the two arrays record the starting address of every basic-block, +along with the number of times it was executed. + +

The profiling library also includes a function (mcleanup) which is +typically registered using atexit() to be called as the +program exits, and is responsible for writing the file gmon.out. +Profiling is turned off, various headers are output, and the histogram +is written, followed by the call-graph arcs and the basic-block counts. + +

The output from gprof gives no indication of parts of your program that +are limited by I/O or swapping bandwidth. This is because samples of the +program counter are taken at fixed intervals of the program's run time. +Therefore, the +time measurements in gprof output say nothing about time that your +program was not running. For example, a part of the program that creates +so much data that it cannot all fit in physical memory at once may run very +slowly due to thrashing, but gprof will say it uses little time. On +the other hand, sampling by run time has the advantage that the amount of +load due to other users won't directly affect the output you get. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Inaccuracy.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Inaccuracy.html new file mode 100644 index 0000000..367f9e0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Inaccuracy.html @@ -0,0 +1,53 @@ + + +Inaccuracy - GNU gprof + + + + + + + + + + + + +

+

+Next: , +Previous: Output, +Up: Top +



+
+ +

6 Inaccuracy of gprof Output

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Incompatibilities.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Incompatibilities.html new file mode 100644 index 0000000..da4e13e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Incompatibilities.html @@ -0,0 +1,79 @@ + + +Incompatibilities - GNU gprof + + + + + + + + + + + + +
+

+Next: , +Previous: How do I?, +Up: Top +



+
+ +

8 Incompatibilities with Unix gprof

+ +

gnu gprof and Berkeley Unix gprof use the same data +file gmon.out, and provide essentially the same information. But +there are a few differences. + +

    +
  • gnu gprof uses a new, generalized file format with support +for basic-block execution counts and non-realtime histograms. A magic +cookie and version number allows gprof to easily identify +new style files. Old BSD-style files can still be read. +See Profiling Data File Format. + +
  • For a recursive function, Unix gprof lists the function as a +parent and as a child, with a calls field that lists the number +of recursive calls. gnu gprof omits these lines and puts +the number of recursive calls in the primary line. + +
  • When a function is suppressed from the call graph with -e, gnu +gprof still lists it as a subroutine of functions that call it. + +
  • gnu gprof accepts the -k with its argument +in the form from/to, instead of from to. + +
  • In the annotated source listing, +if there are multiple basic blocks on the same line, +gnu gprof prints all of their counts, separated by commas. + +
  • The blurbs, field widths, and output formats are different. gnu +gprof prints blurbs after the tables, so that you can see the +tables without skipping the blurbs. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Internals.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Internals.html new file mode 100644 index 0000000..e61b87e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Internals.html @@ -0,0 +1,221 @@ + + +Internals - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: File Format, +Up: Details +



+
+ +

9.3 gprof's Internal Operation

+ +

Like most programs, gprof begins by processing its options. +During this stage, it may building its symspec list +(sym_ids.c:sym_id_add), if +options are specified which use symspecs. +gprof maintains a single linked list of symspecs, +which will eventually get turned into 12 symbol tables, +organized into six include/exclude pairs—one +pair each for the flat profile (INCL_FLAT/EXCL_FLAT), +the call graph arcs (INCL_ARCS/EXCL_ARCS), +printing in the call graph (INCL_GRAPH/EXCL_GRAPH), +timing propagation in the call graph (INCL_TIME/EXCL_TIME), +the annotated source listing (INCL_ANNO/EXCL_ANNO), +and the execution count listing (INCL_EXEC/EXCL_EXEC). + +

After option processing, gprof finishes +building the symspec list by adding all the symspecs in +default_excluded_list to the exclude lists +EXCL_TIME and EXCL_GRAPH, and if line-by-line profiling is specified, +EXCL_FLAT as well. +These default excludes are not added to EXCL_ANNO, EXCL_ARCS, and EXCL_EXEC. + +

Next, the BFD library is called to open the object file, +verify that it is an object file, +and read its symbol table (core.c:core_init), +using bfd_canonicalize_symtab after mallocing +an appropriately sized array of symbols. At this point, +function mappings are read (if the --file-ordering option +has been specified), and the core text space is read into +memory (if the -c option was given). + +

gprof's own symbol table, an array of Sym structures, +is now built. +This is done in one of two ways, by one of two routines, depending +on whether line-by-line profiling (-l option) has been +enabled. +For normal profiling, the BFD canonical symbol table is scanned. +For line-by-line profiling, every +text space address is examined, and a new symbol table entry +gets created every time the line number changes. +In either case, two passes are made through the symbol +table—one to count the size of the symbol table required, +and the other to actually read the symbols. In between the +two passes, a single array of type Sym is created of +the appropriate length. +Finally, symtab.c:symtab_finalize +is called to sort the symbol table and remove duplicate entries +(entries with the same memory address). + +

The symbol table must be a contiguous array for two reasons. +First, the qsort library function (which sorts an array) +will be used to sort the symbol table. +Also, the symbol lookup routine (symtab.c:sym_lookup), +which finds symbols +based on memory address, uses a binary search algorithm +which requires the symbol table to be a sorted array. +Function symbols are indicated with an is_func flag. +Line number symbols have no special flags set. +Additionally, a symbol can have an is_static flag +to indicate that it is a local symbol. + +

With the symbol table read, the symspecs can now be translated +into Syms (sym_ids.c:sym_id_parse). Remember that a single +symspec can match multiple symbols. +An array of symbol tables +(syms) is created, each entry of which is a symbol table +of Syms to be included or excluded from a particular listing. +The master symbol table and the symspecs are examined by nested +loops, and every symbol that matches a symspec is inserted +into the appropriate syms table. This is done twice, once to +count the size of each required symbol table, and again to build +the tables, which have been malloced between passes. +From now on, to determine whether a symbol is on an include +or exclude symspec list, gprof simply uses its +standard symbol lookup routine on the appropriate table +in the syms array. + +

Now the profile data file(s) themselves are read +(gmon_io.c:gmon_out_read), +first by checking for a new-style gmon.out header, +then assuming this is an old-style BSD gmon.out +if the magic number test failed. + +

New-style histogram records are read by hist.c:hist_read_rec. +For the first histogram record, allocate a memory array to hold +all the bins, and read them in. +When multiple profile data files (or files with multiple histogram +records) are read, the memory ranges of each pair of histogram records +must be either equal, or non-overlapping. For each pair of histogram +records, the resolution (memory region size divided by the number of +bins) must be the same. The time unit must be the same for all +histogram records. If the above containts are met, all histograms +for the same memory range are merged. + +

As each call graph record is read (call_graph.c:cg_read_rec), +the parent and child addresses +are matched to symbol table entries, and a call graph arc is +created by cg_arcs.c:arc_add, unless the arc fails a symspec +check against INCL_ARCS/EXCL_ARCS. As each arc is added, +a linked list is maintained of the parent's child arcs, and of the child's +parent arcs. +Both the child's call count and the arc's call count are +incremented by the record's call count. + +

Basic-block records are read (basic_blocks.c:bb_read_rec), +but only if line-by-line profiling has been selected. +Each basic-block address is matched to a corresponding line +symbol in the symbol table, and an entry made in the symbol's +bb_addr and bb_calls arrays. Again, if multiple basic-block +records are present for the same address, the call counts +are cumulative. + +

A gmon.sum file is dumped, if requested (gmon_io.c:gmon_out_write). + +

If histograms were present in the data files, assign them to symbols +(hist.c:hist_assign_samples) by iterating over all the sample +bins and assigning them to symbols. Since the symbol table +is sorted in order of ascending memory addresses, we can +simple follow along in the symbol table as we make our pass +over the sample bins. +This step includes a symspec check against INCL_FLAT/EXCL_FLAT. +Depending on the histogram +scale factor, a sample bin may span multiple symbols, +in which case a fraction of the sample count is allocated +to each symbol, proportional to the degree of overlap. +This effect is rare for normal profiling, but overlaps +are more common during line-by-line profiling, and can +cause each of two adjacent lines to be credited with half +a hit, for example. + +

If call graph data is present, cg_arcs.c:cg_assemble is called. +First, if -c was specified, a machine-dependent +routine (find_call) scans through each symbol's machine code, +looking for subroutine call instructions, and adding them +to the call graph with a zero call count. +A topological sort is performed by depth-first numbering +all the symbols (cg_dfn.c:cg_dfn), so that +children are always numbered less than their parents, +then making a array of pointers into the symbol table and sorting it into +numerical order, which is reverse topological +order (children appear before parents). +Cycles are also detected at this point, all members +of which are assigned the same topological number. +Two passes are now made through this sorted array of symbol pointers. +The first pass, from end to beginning (parents to children), +computes the fraction of child time to propagate to each parent +and a print flag. +The print flag reflects symspec handling of INCL_GRAPH/EXCL_GRAPH, +with a parent's include or exclude (print or no print) property +being propagated to its children, unless they themselves explicitly appear +in INCL_GRAPH or EXCL_GRAPH. +A second pass, from beginning to end (children to parents) actually +propagates the timings along the call graph, subject +to a check against INCL_TIME/EXCL_TIME. +With the print flag, fractions, and timings now stored in the symbol +structures, the topological sort array is now discarded, and a +new array of pointers is assembled, this time sorted by propagated time. + +

Finally, print the various outputs the user requested, which is now fairly +straightforward. The call graph (cg_print.c:cg_print) and +flat profile (hist.c:hist_print) are regurgitations of values +already computed. The annotated source listing +(basic_blocks.c:print_annotated_source) uses basic-block +information, if present, to label each line of code with call counts, +otherwise only the function call counts are presented. + +

The function ordering code is marginally well documented +in the source code itself (cg_print.c). Basically, +the functions with the most use and the most parents are +placed first, followed by other functions with the most use, +followed by lower use functions, followed by unused functions +at the end. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Introduction.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Introduction.html new file mode 100644 index 0000000..c964f23 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Introduction.html @@ -0,0 +1,101 @@ + + +Introduction - GNU gprof + + + + + + + + + + + + +

+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 Introduction to Profiling

+ +

Profiling allows you to learn where your program spent its time and which +functions called which other functions while it was executing. This +information can show you which pieces of your program are slower than you +expected, and might be candidates for rewriting to make your program +execute faster. It can also tell you which functions are being called more +or less often than you expected. This may help you spot bugs that had +otherwise been unnoticed. + +

Since the profiler uses information collected during the actual execution +of your program, it can be used on programs that are too large or too +complex to analyze by reading the source. However, how your program is run +will affect the information that shows up in the profile data. If you +don't use some feature of your program while it is being profiled, no +profile information will be generated for that feature. + +

Profiling has several steps: + +

+ +

The next three chapters explain these steps in greater detail. + + +

Several forms of output are available from the analysis. + +

The flat profile shows how much time your program spent in each function, +and how many times that function was called. If you simply want to know +which functions burn most of the cycles, it is stated concisely here. +See The Flat Profile. + +

The call graph shows, for each function, which functions called it, which +other functions it called, and how many times. There is also an estimate +of how much time was spent in the subroutines of each function. This can +suggest places where you might try to eliminate function calls that use a +lot of time. See The Call Graph. + +

The annotated source listing is a copy of the program's +source code, labeled with the number of times each line of the +program was executed. See The Annotated Source Listing. + + +

To better understand how profiling works, you may wish to read +a description of its implementation. +See Implementation of Profiling. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Invoking.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Invoking.html new file mode 100644 index 0000000..3e44c6a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Invoking.html @@ -0,0 +1,79 @@ + + +Invoking - GNU gprof + + + + + + + + + + + + +

+

+Next: , +Previous: Executing, +Up: Top +



+
+ +

4 gprof Command Summary

+ +

After you have a profile data file gmon.out, you can run gprof +to interpret the information in it. The gprof program prints a +flat profile and a call graph on standard output. Typically you would +redirect the output of gprof into a file with >. + +

You run gprof like this: + +

     gprof options [executable-file [profile-data-files...]] [> outfile]
+
+

Here square-brackets indicate optional arguments. + +

If you omit the executable file name, the file a.out is used. If +you give no profile data file name, the file gmon.out is used. If +any file is not in the proper format, or if the profile data file does not +appear to belong to the executable file, an error message is printed. + +

You can give more than one profile data file by entering all their names +after the executable file name; then the statistics in all the data files +are summed together. + +

The order of these options does not matter. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Line_002dby_002dline.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Line_002dby_002dline.html new file mode 100644 index 0000000..08e5791 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Line_002dby_002dline.html @@ -0,0 +1,139 @@ + + +Line-by-line - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: Call Graph, +Up: Output +



+
+ +

5.3 Line-by-line Profiling

+ +

gprof's -l option causes the program to perform +line-by-line profiling. In this mode, histogram +samples are assigned not to functions, but to individual +lines of source code. This only works with programs compiled with +older versions of the gcc compiler. Newer versions of gcc +use a different program - gcov - to display line-by-line +profiling information. + +

With the older versions of gcc the program usually has to be +compiled with a -g option, in addition to -pg, in order +to generate debugging symbols for tracking source code lines. +Note, in much older versions of gcc the program had to be +compiled with the -a command line option as well. + +

The flat profile is the most useful output table +in line-by-line mode. +The call graph isn't as useful as normal, since +the current version of gprof does not propagate +call graph arcs from source code lines to the enclosing function. +The call graph does, however, show each line of code +that called each function, along with a count. + +

Here is a section of gprof's output, without line-by-line profiling. +Note that ct_init accounted for four histogram hits, and +13327 calls to init_block. + +

     Flat profile:
+     
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self              self     total
+      time   seconds   seconds    calls  us/call  us/call  name
+      30.77      0.13     0.04     6335     6.31     6.31  ct_init
+     
+     
+     		     Call graph (explanation follows)
+     
+     
+     granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds
+     
+     index % time    self  children    called     name
+     
+                     0.00    0.00       1/13496       name_too_long
+                     0.00    0.00      40/13496       deflate
+                     0.00    0.00     128/13496       deflate_fast
+                     0.00    0.00   13327/13496       ct_init
+     [7]      0.0    0.00    0.00   13496         init_block
+     
+
+

Now let's look at some of gprof's output from the same program run, +this time with line-by-line profiling enabled. Note that ct_init's +four histogram hits are broken down into four lines of source code—one hit +occurred on each of lines 349, 351, 382 and 385. In the call graph, +note how +ct_init's 13327 calls to init_block are broken down +into one call from line 396, 3071 calls from line 384, 3730 calls +from line 385, and 6525 calls from 387. + +

     Flat profile:
+     
+     Each sample counts as 0.01 seconds.
+       %   cumulative   self
+      time   seconds   seconds    calls  name
+       7.69      0.10     0.01           ct_init (trees.c:349)
+       7.69      0.11     0.01           ct_init (trees.c:351)
+       7.69      0.12     0.01           ct_init (trees.c:382)
+       7.69      0.13     0.01           ct_init (trees.c:385)
+     
+     
+     		     Call graph (explanation follows)
+     
+     
+     granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds
+     
+       % time    self  children    called     name
+     
+                 0.00    0.00       1/13496       name_too_long (gzip.c:1440)
+                 0.00    0.00       1/13496       deflate (deflate.c:763)
+                 0.00    0.00       1/13496       ct_init (trees.c:396)
+                 0.00    0.00       2/13496       deflate (deflate.c:727)
+                 0.00    0.00       4/13496       deflate (deflate.c:686)
+                 0.00    0.00       5/13496       deflate (deflate.c:675)
+                 0.00    0.00      12/13496       deflate (deflate.c:679)
+                 0.00    0.00      16/13496       deflate (deflate.c:730)
+                 0.00    0.00     128/13496       deflate_fast (deflate.c:654)
+                 0.00    0.00    3071/13496       ct_init (trees.c:384)
+                 0.00    0.00    3730/13496       ct_init (trees.c:385)
+                 0.00    0.00    6525/13496       ct_init (trees.c:387)
+     [6]  0.0    0.00    0.00   13496         init_block (trees.c:408)
+     
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Miscellaneous-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Miscellaneous-Options.html new file mode 100644 index 0000000..22d487b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Miscellaneous-Options.html @@ -0,0 +1,75 @@ + + +Miscellaneous Options - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: Analysis Options, +Up: Invoking +



+
+ +

4.3 Miscellaneous Options

+ +
+
-d[num]
--debug[=num]
The -d num option specifies debugging options. +If num is not specified, enable all debugging. +See Debugging gprof. + +
-h
--help
The -h option prints command line usage. + +
-Oname
--file-format=name
Selects the format of the profile data files. Recognized formats are +auto (the default), bsd, 4.4bsd, magic, and +prof (not yet supported). + +
-s
--sum
The -s option causes gprof to summarize the information +in the profile data files it read in, and write out a profile data +file called gmon.sum, which contains all the information from +the profile data files that gprof read in. The file gmon.sum +may be one of the specified input files; the effect of this is to +merge the data in the other input files into gmon.sum. + +

Eventually you can run gprof again without -s to analyze the +cumulative data in the file gmon.sum. + +

-v
--version
The -v flag causes gprof to print the current version +number, and then exit. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Output-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Output-Options.html new file mode 100644 index 0000000..49c15c9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Output-Options.html @@ -0,0 +1,192 @@ + + +Output Options - GNU gprof + + + + + + + + + + + + +
+

+Next: , +Up: Invoking +



+
+ +

4.1 Output Options

+ + +

These options specify which of several output formats +gprof should produce. + +

Many of these options take an optional symspec to specify +functions to be included or excluded. These options can be +specified multiple times, with different symspecs, to include +or exclude sets of symbols. See Symspecs. + +

Specifying any of these options overrides the default (-p -q), +which prints a flat profile and call graph analysis +for all functions. + +

+
-A[symspec]
--annotated-source[=symspec]
The -A option causes gprof to print annotated source code. +If symspec is specified, print output only for matching symbols. +See The Annotated Source Listing. + +
-b
--brief
If the -b option is given, gprof doesn't print the +verbose blurbs that try to explain the meaning of all of the fields in +the tables. This is useful if you intend to print out the output, or +are tired of seeing the blurbs. + +
-C[symspec]
--exec-counts[=symspec]
The -C option causes gprof to +print a tally of functions and the number of times each was called. +If symspec is specified, print tally only for matching symbols. + +

If the profile data file contains basic-block count records, specifying +the -l option, along with -C, will cause basic-block +execution counts to be tallied and displayed. + +

-i
--file-info
The -i option causes gprof to display summary information +about the profile data file(s) and then exit. The number of histogram, +call graph, and basic-block count records is displayed. + +
-I dirs
--directory-path=dirs
The -I option specifies a list of search directories in +which to find source files. Environment variable GPROF_PATH +can also be used to convey this information. +Used mostly for annotated source output. + +
-J[symspec]
--no-annotated-source[=symspec]
The -J option causes gprof not to +print annotated source code. +If symspec is specified, gprof prints annotated source, +but excludes matching symbols. + +
-L
--print-path
Normally, source filenames are printed with the path +component suppressed. The -L option causes gprof +to print the full pathname of +source filenames, which is determined +from symbolic debugging information in the image file +and is relative to the directory in which the compiler +was invoked. + +
-p[symspec]
--flat-profile[=symspec]
The -p option causes gprof to print a flat profile. +If symspec is specified, print flat profile only for matching symbols. +See The Flat Profile. + +
-P[symspec]
--no-flat-profile[=symspec]
The -P option causes gprof to suppress printing a flat profile. +If symspec is specified, gprof prints a flat profile, +but excludes matching symbols. + +
-q[symspec]
--graph[=symspec]
The -q option causes gprof to print the call graph analysis. +If symspec is specified, print call graph only for matching symbols +and their children. +See The Call Graph. + +
-Q[symspec]
--no-graph[=symspec]
The -Q option causes gprof to suppress printing the +call graph. +If symspec is specified, gprof prints a call graph, +but excludes matching symbols. + +
-t
--table-length=num
The -t option causes the num most active source lines in +each source file to be listed when source annotation is enabled. The +default is 10. + +
-y
--separate-files
This option affects annotated source output only. +Normally, gprof prints annotated source files +to standard-output. If this option is specified, +annotated source for a file named path/filename +is generated in the file filename-ann. If the underlying +file system would truncate filename-ann so that it +overwrites the original filename, gprof generates +annotated source in the file filename.ann instead (if the +original file name has an extension, that extension is replaced +with .ann). + +
-Z[symspec]
--no-exec-counts[=symspec]
The -Z option causes gprof not to +print a tally of functions and the number of times each was called. +If symspec is specified, print tally, but exclude matching symbols. + +
-r
--function-ordering
The --function-ordering option causes gprof to print a +suggested function ordering for the program based on profiling data. +This option suggests an ordering which may improve paging, tlb and +cache behavior for the program on systems which support arbitrary +ordering of functions in an executable. + +

The exact details of how to force the linker to place functions +in a particular order is system dependent and out of the scope of this +manual. + +

-R map_file
--file-ordering map_file
The --file-ordering option causes gprof to print a +suggested .o link line ordering for the program based on profiling data. +This option suggests an ordering which may improve paging, tlb and +cache behavior for the program on systems which do not support arbitrary +ordering of functions in an executable. + +

Use of the -a argument is highly recommended with this option. + +

The map_file argument is a pathname to a file which provides +function name to object file mappings. The format of the file is similar to +the output of the program nm. + +

          c-parse.o:00000000 T yyparse
+          c-parse.o:00000004 C yyerrflag
+          c-lang.o:00000000 T maybe_objc_method_name
+          c-lang.o:00000000 T print_lang_statistics
+          c-lang.o:00000000 T recognize_objc_keyword
+          c-decl.o:00000000 T print_lang_identifier
+          c-decl.o:00000000 T print_lang_type
+          ...
+     
+

To create a map_file with gnu nm, type a command like +nm --extern-only --defined-only -v --print-file-name program-name. + +

-T
--traditional
The -T option causes gprof to print its output in +“traditional” BSD style. + +
-w width
--width=width
Sets width of output lines to width. +Currently only used when printing the function index at the bottom +of the call graph. + +
-x
--all-lines
This option affects annotated source output only. +By default, only the lines at the beginning of a basic-block +are annotated. If this option is specified, every line in +a basic-block is annotated by repeating the annotation for the +first line. This behavior is similar to tcov's -a. + +
--demangle[=style]
--no-demangle
These options control whether C++ symbol names should be demangled when +printing output. The default is to demangle symbols. The +--no-demangle option may be used to turn off demangling. Different +compilers have different mangling styles. The optional demangling style +argument can be used to choose an appropriate demangling style for your +compiler. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Output.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Output.html new file mode 100644 index 0000000..ee473ef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Output.html @@ -0,0 +1,66 @@ + + +Output - GNU gprof + + + + + + + + + + + + +
+

+Next: , +Previous: Invoking, +Up: Top +



+
+ +

5 Interpreting gprof's Output

+ +

gprof can produce several different output styles, the +most important of which are described below. The simplest output +styles (file information, execution count, and function and file ordering) +are not described here, but are documented with the respective options +that trigger them. +See Output Options. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Primary.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Primary.html new file mode 100644 index 0000000..3d96436 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Primary.html @@ -0,0 +1,109 @@ + + +Primary - GNU gprof + + + + + + + + + + + + +
+

+Next: , +Up: Call Graph +



+
+ +

5.2.1 The Primary Line

+ +

The primary line in a call graph entry is the line that +describes the function which the entry is about and gives the overall +statistics for this function. + +

For reference, we repeat the primary line from the entry for function +report in our main example, together with the heading line that +shows the names of the fields: + +

     index  % time    self  children called     name
+     ...
+     [3]    100.0    0.00    0.05       1         report [3]
+
+

Here is what the fields in the primary line mean: + +

+
index
Entries are numbered with consecutive integers. Each function +therefore has an index number, which appears at the beginning of its +primary line. + +

Each cross-reference to a function, as a caller or subroutine of +another, gives its index number as well as its name. The index number +guides you if you wish to look for the entry for that function. + +

% time
This is the percentage of the total time that was spent in this +function, including time spent in subroutines called from this +function. + +

The time spent in this function is counted again for the callers of +this function. Therefore, adding up these percentages is meaningless. + +

self
This is the total amount of time spent in this function. This +should be identical to the number printed in the seconds field +for this function in the flat profile. + +
children
This is the total amount of time spent in the subroutine calls made by +this function. This should be equal to the sum of all the self +and children entries of the children listed directly below this +function. + +
called
This is the number of times the function was called. + +

If the function called itself recursively, there are two numbers, +separated by a +. The first number counts non-recursive calls, +and the second counts recursive calls. + +

In the example above, the function report was called once from +main. + +

name
This is the name of the current function. The index number is +repeated after it. + +

If the function is part of a cycle of recursion, the cycle number is +printed between the function's name and the index number +(see How Mutually Recursive Functions Are Described). +For example, if function gnurr is part of +cycle number one, and has index number twelve, its primary line would +be end like this: + +

          gnurr <cycle 1> [12]
+     
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Sampling-Error.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Sampling-Error.html new file mode 100644 index 0000000..adffdc4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Sampling-Error.html @@ -0,0 +1,106 @@ + + +Sampling Error - GNU gprof + + + + + + + + + + + + +
+

+Next: , +Up: Inaccuracy +



+
+ +

6.1 Statistical Sampling Error

+ +

The run-time figures that gprof gives you are based on a sampling +process, so they are subject to statistical inaccuracy. If a function runs +only a small amount of time, so that on the average the sampling process +ought to catch that function in the act only once, there is a pretty good +chance it will actually find that function zero times, or twice. + +

By contrast, the number-of-calls and basic-block figures +are derived by counting, not +sampling. They are completely accurate and will not vary from run to run +if your program is deterministic. + +

The sampling period that is printed at the beginning of the flat +profile says how often samples are taken. The rule of thumb is that a +run-time figure is accurate if it is considerably bigger than the sampling +period. + +

The actual amount of error can be predicted. +For n samples, the expected error +is the square-root of n. For example, +if the sampling period is 0.01 seconds and foo's run-time is 1 second, +n is 100 samples (1 second/0.01 seconds), sqrt(n) is 10 samples, so +the expected error in foo's run-time is 0.1 seconds (10*0.01 seconds), +or ten percent of the observed value. +Again, if the sampling period is 0.01 seconds and bar's run-time is +100 seconds, n is 10000 samples, sqrt(n) is 100 samples, so +the expected error in bar's run-time is 1 second, +or one percent of the observed value. +It is likely to +vary this much on the average from one profiling run to the next. +(Sometimes it will vary more.) + +

This does not mean that a small run-time figure is devoid of information. +If the program's total run-time is large, a small run-time for one +function does tell you that that function used an insignificant fraction of +the whole program's time. Usually this means it is not worth optimizing. + +

One way to get more accuracy is to give your program more (but similar) +input data so it will take longer. Another way is to combine the data from +several runs, using the -s option of gprof. Here is how: + +

    +
  1. Run your program once. + +
  2. Issue the command mv gmon.out gmon.sum. + +
  3. Run your program again, the same as before. + +
  4. Merge the new data in gmon.out into gmon.sum with this command: + +
              gprof -s executable-file gmon.out gmon.sum
    +     
    +
  5. Repeat the last two steps as often as you wish. + +
  6. Analyze the cumulative data using this command: + +
              gprof executable-file gmon.sum > output-file
    +     
    +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Subroutines.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Subroutines.html new file mode 100644 index 0000000..1a4b026 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Subroutines.html @@ -0,0 +1,89 @@ + + +Subroutines - GNU gprof + + + + + + + + + + + + + +
+

+Next: , +Previous: Callers, +Up: Call Graph +



+
+ +

5.2.3 Lines for a Function's Subroutines

+ +

A function's entry has a line for each of its subroutines—in other +words, a line for each other function that it called. These lines' +fields correspond to the fields of the primary line, but their meanings +are different because of the difference in context. + +

For reference, we repeat two lines from the entry for the function +main, the primary line and a line for a subroutine, together +with the heading line that shows the names of the fields: + +

     index  % time    self  children called     name
+     ...
+     [2]    100.0    0.00    0.05       1         main [2]
+                     0.00    0.05       1/1           report [3]
+
+

Here are the meanings of the fields in the subroutine-line for main +calling report: + +

+
self
An estimate of the amount of time spent directly within report +when report was called from main. + +
children
An estimate of the amount of time spent in subroutines of report +when report was called from main. + +

The sum of the self and children fields is an estimate +of the total time spent in calls to report from main. + +

called
Two numbers, the number of calls to report from main +followed by the total number of non-recursive calls to report. +This ratio is used to determine how much of report's self +and children time gets credited to main. +See Estimating children Times. + +
name
The name of the subroutine of main to which this line applies, +followed by the subroutine's index number. + +

If the caller is part of a recursion cycle, the cycle number is +printed between the name and the index number. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Symspecs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Symspecs.html new file mode 100644 index 0000000..f9d9b47 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/Symspecs.html @@ -0,0 +1,91 @@ + + +Symspecs - GNU gprof + + + + + + + + + + + + +
+

+Previous: Deprecated Options, +Up: Invoking +



+
+ +

4.5 Symspecs

+ +

Many of the output options allow functions to be included or excluded +using symspecs (symbol specifications), which observe the +following syntax: + +

       filename_containing_a_dot
+     | funcname_not_containing_a_dot
+     | linenumber
+     | ( [ any_filename ] `:' ( any_funcname | linenumber ) )
+
+

Here are some sample symspecs: + +

+
main.c
Selects everything in file main.c—the +dot in the string tells gprof to interpret +the string as a filename, rather than as +a function name. To select a file whose +name does not contain a dot, a trailing colon +should be specified. For example, odd: is +interpreted as the file named odd. + +
main
Selects all functions named main. + +

Note that there may be multiple instances of the same function name +because some of the definitions may be local (i.e., static). Unless a +function name is unique in a program, you must use the colon notation +explained below to specify a function from a specific source file. + +

Sometimes, function names contain dots. In such cases, it is necessary +to add a leading colon to the name. For example, :.mul selects +function .mul. + +

In some object file formats, symbols have a leading underscore. +gprof will normally not print these underscores. When you name a +symbol in a symspec, you should type it exactly as gprof prints +it in its output. For example, if the compiler produces a symbol +_main from your main function, gprof still prints +it as main in its output, so you should use main in +symspecs. + +

main.c:main
Selects function main in file main.c. + +
main.c:134
Selects line 134 in file main.c. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/index.html new file mode 100644 index 0000000..8579ec4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/gprof.html/index.html @@ -0,0 +1,131 @@ + + +GNU gprof + + + + + + + + + + +

GNU gprof

+ + + + +
+

+Next: , +Up: (dir) +



+
+ +

Profiling a Program: Where Does It Spend Its Time?

+ +

This manual describes the gnu profiler, gprof, and how you +can use it to determine which parts of a program are taking most of the +execution time. We assume that you know how to write, compile, and +execute programs. gnu gprof was written by Jay Fenlason. + +

This manual is for gprof +(GNU Binutils) +version 2.19. + +

This document is distributed under the terms of the GNU Free +Documentation License. A copy of the license is included in the +section entitled “GNU Free Documentation License”. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/ARM.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/ARM.html new file mode 100644 index 0000000..b90454e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/ARM.html @@ -0,0 +1,192 @@ + + +ARM - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: i960, +Up: Machine Dependent +



+
+ +

4.4 ld and the ARM family

+ +

For the ARM, ld will generate code stubs to allow functions calls +between ARM and Thumb code. These stubs only work with code that has +been compiled and assembled with the -mthumb-interwork command +line option. If it is necessary to link with old ARM object files or +libraries, which have not been compiled with the -mthumb-interwork +option then the --support-old-code command line switch should be +given to the linker. This will make it generate larger stub functions +which will work with non-interworking aware ARM code. Note, however, +the linker does not support generating stubs for function calls to +non-interworking aware Thumb code. + +

The --thumb-entry switch is a duplicate of the generic +--entry switch, in that it sets the program's starting address. +But it also sets the bottom bit of the address, so that it can be +branched to using a BX instruction, and the program will start +executing in Thumb mode straight away. + +

The --be8 switch instructs ld to generate BE8 format +executables. This option is only valid when linking big-endian objects. +The resulting image will contain big-endian data and little-endian code. + +

The R_ARM_TARGET1 relocation is typically used for entries in the +.init_array section. It is interpreted as either R_ARM_REL32 +or R_ARM_ABS32, depending on the target. The --target1-rel +and --target1-abs switches override the default. + +

The --target2=type switch overrides the default definition of the +R_ARM_TARGET2 relocation. Valid values for type, their +meanings, and target defaults are as follows: +

+
rel
R_ARM_REL32 (arm*-*-elf, arm*-*-eabi) +
abs
R_ARM_ABS32 (arm*-*-symbianelf) +
got-rel
R_ARM_GOT_PREL (arm*-*-linux, arm*-*-*bsd) +
+ +

The R_ARM_V4BX relocation (defined by the ARM AAELF +specification) enables objects compiled for the ARMv4 architecture to be +interworking-safe when linked with other objects compiled for ARMv4t, but +also allows pure ARMv4 binaries to be built from the same ARMv4 objects. + +

In the latter case, the switch --fix-v4bx must be passed to the +linker, which causes v4t BX rM instructions to be rewritten as +MOV PC,rM, since v4 processors do not have a BX instruction. + +

In the former case, the switch should not be used, and R_ARM_V4BX +relocations are ignored. + +

Replace BX rM instructions identified by R_ARM_V4BX +relocations with a branch to the following veneer: + +

     TST rM, #1
+     MOVEQ PC, rM
+     BX Rn
+
+

This allows generation of libraries/applications that work on ARMv4 cores +and are still interworking safe. Note that the above veneer clobbers the +condition flags, so may cause incorrect progrm behavior in rare cases. + +

The --use-blx switch enables the linker to use ARM/Thumb +BLX instructions (available on ARMv5t and above) in various +situations. Currently it is used to perform calls via the PLT from Thumb +code using BLX rather than using BX and a mode-switching stub before +each PLT entry. This should lead to such calls executing slightly faster. + +

This option is enabled implicitly for SymbianOS, so there is no need to +specify it if you are using that target. + +

The --vfp11-denorm-fix switch enables a link-time workaround for a +bug in certain VFP11 coprocessor hardware, which sometimes allows +instructions with denorm operands (which must be handled by support code) +to have those operands overwritten by subsequent instructions before +the support code can read the intended values. + +

The bug may be avoided in scalar mode if you allow at least one +intervening instruction between a VFP11 instruction which uses a register +and another instruction which writes to the same register, or at least two +intervening instructions if vector mode is in use. The bug only affects +full-compliance floating-point mode: you do not need this workaround if +you are using "runfast" mode. Please contact ARM for further details. + +

If you know you are using buggy VFP11 hardware, you can +enable this workaround by specifying the linker option +--vfp-denorm-fix=scalar if you are using the VFP11 scalar +mode only, or --vfp-denorm-fix=vector if you are using +vector mode (the latter also works for scalar code). The default is +--vfp-denorm-fix=none. + +

If the workaround is enabled, instructions are scanned for +potentially-troublesome sequences, and a veneer is created for each +such sequence which may trigger the erratum. The veneer consists of the +first instruction of the sequence and a branch back to the subsequent +instruction. The original instruction is then replaced with a branch to +the veneer. The extra cycles required to call and return from the veneer +are sufficient to avoid the erratum in both the scalar and vector cases. + +

The --no-enum-size-warning switch prevents the linker from +warning when linking object files that specify incompatible EABI +enumeration size attributes. For example, with this switch enabled, +linking of an object file using 32-bit enumeration values with another +using enumeration values fitted into the smallest possible space will +not be diagnosed. + +

The --no-wchar-size-warning switch prevents the linker from +warning when linking object files that specify incompatible EABI +wchar_t size attributes. For example, with this switch enabled, +linking of an object file using 32-bit wchar_t values with another +using 16-bit wchar_t values will not be diagnosed. + +

The --pic-veneer switch makes the linker use PIC sequences for +ARM/Thumb interworking veneers, even if the rest of the binary +is not PIC. This avoids problems on uClinux targets where +--emit-relocs is used to generate relocatable binaries. + +

The linker will automatically generate and insert small sequences of +code into a linked ARM ELF executable whenever an attempt is made to +perform a function call to a symbol that is too far away. The +placement of these sequences of instructions - called stubs - is +controlled by the command line option --stub-group-size=N. +The placement is important because a poor choice can create a need for +duplicate stubs, increasing the code sizw. The linker will try to +group stubs together in order to reduce interruptions to the flow of +code, but it needs guidance as to how big these groups should be and +where they should be placed. + +

The value of N, the parameter to the +--stub-group-size= option controls where the stub groups are +placed. If it is negative then all stubs are placed before the first +branch that needs them. If it is positive then the stubs can be +placed either before or after the branches that need them. If the +value of N is 1 (either +1 or -1) then the linker will choose +exactly where to place groups of stubs, using its built in heuristics. +A value of N greater than 1 (or smaller than -1) tells the +linker that a single group of stubs can service at most N bytes +from the input sections. + +

The default, if --stub-group-size= is not specified, is +N = +1. + +

Farcalls stubs insertion is fully supported for the ARM-EABI target +only, because it relies on object files properties not present +otherwise. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Assignments.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Assignments.html new file mode 100644 index 0000000..1829b9f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Assignments.html @@ -0,0 +1,60 @@ + + +Assignments - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Simple Commands, +Up: Scripts +



+
+ +

3.5 Assigning Values to Symbols

+ +

You may assign a value to a symbol in a linker script. This will define +the symbol and place it into the symbol table with a global scope. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD-information-loss.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD-information-loss.html new file mode 100644 index 0000000..2b84635 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD-information-loss.html @@ -0,0 +1,90 @@ + + +BFD information loss - Untitled + + + + + + + + + + + + +
+

+Next: , +Up: BFD outline +



+
+ +

5.1.1 Information Loss

+ +

Information can be lost during output. The output formats +supported by BFD do not provide identical facilities, and +information which can be described in one form has nowhere to go in +another format. One example of this is alignment information in +b.out. There is nowhere in an a.out format file to store +alignment information on the contained data, so when a file is linked +from b.out and an a.out image is produced, alignment +information will not propagate to the output file. (The linker will +still use the alignment information internally, so the link is performed +correctly). + +

Another example is COFF section names. COFF files may contain an +unlimited number of sections, each one with a textual section name. If +the target of the link is a format which does not have many sections (e.g., +a.out) or has sections without names (e.g., the Oasys format), the +link cannot be done simply. You can circumvent this problem by +describing the desired input-to-output section mapping with the linker command +language. + +

Information can be lost during canonicalization. The BFD +internal canonical form of the external formats is not exhaustive; there +are structures in input formats for which there is no direct +representation internally. This means that the BFD back ends +cannot maintain all possible data richness through the transformation +between external to internal and back to external formats. + +

This limitation is only a problem when an application reads one +format and writes another. Each BFD back end is responsible for +maintaining as much data as possible, and the internal BFD +canonical form has structures which are opaque to the BFD core, +and exported only to the back ends. When a file is read in one format, +the canonical form is generated for BFD and the application. At the +same time, the back end saves away any information which may otherwise +be lost. If the data is then written back in the same format, the back +end routine will be able to use the canonical form provided by the +BFD core as well as the information it prepared earlier. Since +there is a great deal of commonality between back ends, +there is no information lost when +linking or copying big endian COFF to little endian COFF, or a.out to +b.out. When a mixture of formats is linked, the information is +only lost from the files whose format differs from the destination. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD-outline.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD-outline.html new file mode 100644 index 0000000..20ddf0f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD-outline.html @@ -0,0 +1,70 @@ + + +BFD outline - Untitled + + + + + + + + + + + +

+

+Up: BFD +



+
+ +

5.1 How It Works: An Outline of BFD

+ +

+When an object file is opened, BFD subroutines automatically determine +the format of the input object file. They then build a descriptor in +memory with pointers to routines that will be used to access elements of +the object file's data structures. + +

As different information from the object files is required, +BFD reads from different sections of the file and processes them. +For example, a very common operation for the linker is processing symbol +tables. Each BFD back end provides a routine for converting +between the object file's representation of symbols and an internal +canonical format. When the linker asks for the symbol table of an object +file, it calls through a memory pointer to the routine from the +relevant BFD back end which reads and converts the table into a canonical +form. The linker then operates upon the canonical form. When the link is +finished and the linker writes the output file's symbol table, +another BFD back end routine is called to take the newly +created symbol table and convert it into the chosen output format. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD.html new file mode 100644 index 0000000..4a1274d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/BFD.html @@ -0,0 +1,76 @@ + + +BFD - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: Machine Dependent, +Up: Top +



+
+ +

5 BFD

+ +

The linker accesses object and archive files using the BFD libraries. +These libraries allow the linker to use the same routines to operate on +object files whatever the object file format. A different object file +format can be supported simply by creating a new BFD back end and adding +it to the library. To conserve runtime memory, however, the linker and +associated tools are usually configured to support only a subset of the +object file formats available. You can use objdump -i +(see objdump (The GNU Binary Utilities)) to +list all the formats available for your configuration. + +

As with most implementations, BFD is a compromise between +several conflicting requirements. The major factor influencing +BFD design was efficiency: any time used converting between +formats is time which would not have been spent had BFD not +been involved. This is partly offset by abstraction payback; since +BFD simplifies applications and back ends, more time and care +may be spent optimizing algorithms for a greater speed. + +

One minor artifact of the BFD solution which you should bear in +mind is the potential for information loss. There are two places where +useful information can be lost using the BFD mechanism: during +conversion and during output. See BFD information loss. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Basic-Script-Concepts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Basic-Script-Concepts.html new file mode 100644 index 0000000..14cff70 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Basic-Script-Concepts.html @@ -0,0 +1,96 @@ + + +Basic Script Concepts - Untitled + + + + + + + + + + + + +
+

+Next: , +Up: Scripts +



+
+ +

3.1 Basic Linker Script Concepts

+ +

We need to define some basic concepts and vocabulary in order to +describe the linker script language. + +

The linker combines input files into a single output file. The output +file and each input file are in a special data format known as an +object file format. Each file is called an object file. +The output file is often called an executable, but for our +purposes we will also call it an object file. Each object file has, +among other things, a list of sections. We sometimes refer to a +section in an input file as an input section; similarly, a section +in the output file is an output section. + +

Each section in an object file has a name and a size. Most sections +also have an associated block of data, known as the section +contents. A section may be marked as loadable, which mean that +the contents should be loaded into memory when the output file is run. +A section with no contents may be allocatable, which means that an +area in memory should be set aside, but nothing in particular should be +loaded there (in some cases this memory must be zeroed out). A section +which is neither loadable nor allocatable typically contains some sort +of debugging information. + +

Every loadable or allocatable output section has two addresses. The +first is the VMA, or virtual memory address. This is the address +the section will have when the output file is run. The second is the +LMA, or load memory address. This is the address at which the +section will be loaded. In most cases the two addresses will be the +same. An example of when they might be different is when a data section +is loaded into ROM, and then copied into RAM when the program starts up +(this technique is often used to initialize global variables in a ROM +based system). In this case the ROM address would be the LMA, and the +RAM address would be the VMA. + +

You can see the sections in an object file by using the objdump +program with the -h option. + +

Every object file also has a list of symbols, known as the +symbol table. A symbol may be defined or undefined. Each symbol +has a name, and each defined symbol has an address, among other +information. If you compile a C or C++ program into an object file, you +will get a defined symbol for every defined function and global or +static variable. Every undefined function or global variable which is +referenced in the input file will become an undefined symbol. + +

You can see the symbols in an object file by using the nm +program, or by using the objdump program with the -t +option. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Bug-Criteria.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Bug-Criteria.html new file mode 100644 index 0000000..3156f6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Bug-Criteria.html @@ -0,0 +1,68 @@ + + +Bug Criteria - Untitled + + + + + + + + + + + + +

+

+Next: , +Up: Reporting Bugs +



+
+ +

6.1 Have You Found a Bug?

+ +

+If you are not sure whether you have found a bug, here are some guidelines: + + + + + +

  • If the linker gets a fatal signal, for any input whatever, that is a +ld bug. Reliable linkers never crash. + +

  • If ld produces an error message for valid input, that is a bug. + +

  • If ld does not produce an error message for invalid input, that +may be a bug. In the general case, the linker can not verify that +object files are correct. + +
  • If you are an experienced user of linkers, your suggestions for +improvement of ld are welcome in any case. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Bug-Reporting.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Bug-Reporting.html new file mode 100644 index 0000000..0acb49b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Bug-Reporting.html @@ -0,0 +1,197 @@ + + +Bug Reporting - Untitled + + + + + + + + + + + + +
+

+Previous: Bug Criteria, +Up: Reporting Bugs +



+
+ +

6.2 How to Report Bugs

+ +

+A number of companies and individuals offer support for gnu +products. If you obtained ld from a support organization, we +recommend you contact that organization first. + +

You can find contact information for many support companies and +individuals in the file etc/SERVICE in the gnu Emacs +distribution. + +

Otherwise, send bug reports for ld to +http://www.sourceware.org/bugzilla/. + +

The fundamental principle of reporting bugs usefully is this: +report all the facts. If you are not sure whether to state a +fact or leave it out, state it! + +

Often people omit facts because they think they know what causes the +problem and assume that some details do not matter. Thus, you might +assume that the name of a symbol you use in an example does not +matter. Well, probably it does not, but one cannot be sure. Perhaps +the bug is a stray memory reference which happens to fetch from the +location where that name is stored in memory; perhaps, if the name +were different, the contents of that location would fool the linker +into doing the right thing despite the bug. Play it safe and give a +specific, complete example. That is the easiest thing for you to do, +and the most helpful. + +

Keep in mind that the purpose of a bug report is to enable us to fix +the bug if it is new to us. Therefore, always write your bug reports +on the assumption that the bug has not been reported previously. + +

Sometimes people give a few sketchy facts and ask, “Does this ring a +bell?” This cannot help us fix a bug, so it is basically useless. We +respond by asking for enough details to enable us to investigate. +You might as well expedite matters by sending them to begin with. + +

To enable us to fix the bug, you should include all these things: + +

    +
  • The version of ld. ld announces it if you start it with +the --version argument. + +

    Without this, we will not know whether there is any point in looking for +the bug in the current version of ld. + +

  • Any patches you may have applied to the ld source, including any +patches made to the BFD library. + +
  • The type of machine you are using, and the operating system name and +version number. + +
  • What compiler (and its version) was used to compile ld—e.g. +“gcc-2.7”. + +
  • The command arguments you gave the linker to link your example and +observe the bug. To guarantee you will not omit something important, +list them all. A copy of the Makefile (or the output from make) is +sufficient. + +

    If we were to try to guess the arguments, we would probably guess wrong +and then we might not encounter the bug. + +

  • A complete input file, or set of input files, that will reproduce the +bug. It is generally most helpful to send the actual object files +provided that they are reasonably small. Say no more than 10K. For +bigger files you can either make them available by FTP or HTTP or else +state that you are willing to send the object file(s) to whomever +requests them. (Note - your email will be going to a mailing list, so +we do not want to clog it up with large attachments). But small +attachments are best. + +

    If the source files were assembled using gas or compiled using +gcc, then it may be OK to send the source files rather than the +object files. In this case, be sure to say exactly what version of +gas or gcc was used to produce the object files. Also say +how gas or gcc were configured. + +

  • A description of what behavior you observe that you believe is +incorrect. For example, “It gets a fatal signal.” + +

    Of course, if the bug is that ld gets a fatal signal, then we +will certainly notice it. But if the bug is incorrect output, we might +not notice unless it is glaringly wrong. You might as well not give us +a chance to make a mistake. + +

    Even if the problem you experience is a fatal signal, you should still +say so explicitly. Suppose something strange is going on, such as, your +copy of ld is out of sync, or you have encountered a bug in the +C library on your system. (This has happened!) Your copy might crash +and ours would not. If you told us to expect a crash, then when ours +fails to crash, we would know that the bug was not happening for us. If +you had not told us to expect a crash, then we would not be able to draw +any conclusion from our observations. + +

  • If you wish to suggest changes to the ld source, send us context +diffs, as generated by diff with the -u, -c, or +-p option. Always send diffs from the old file to the new file. +If you even discuss something in the ld source, refer to it by +context, not by line number. + +

    The line numbers in our development sources will not match those in your +sources. Your line numbers would convey no useful information to us. +

+ +

Here are some things that are not necessary: + +

    +
  • A description of the envelope of the bug. + +

    Often people who encounter a bug spend a lot of time investigating +which changes to the input file will make the bug go away and which +changes will not affect it. + +

    This is often time consuming and not very useful, because the way we +will find the bug is by running a single example under the debugger +with breakpoints, not by pure deduction from a series of examples. +We recommend that you save your time for something else. + +

    Of course, if you can find a simpler example to report instead +of the original one, that is a convenience for us. Errors in the +output will be easier to spot, running under the debugger will take +less time, and so on. + +

    However, simplification is not vital; if you do not want to do this, +report the bug anyway and send us the entire test case you used. + +

  • A patch for the bug. + +

    A patch for the bug does help us if it is a good one. But do not omit +the necessary information, such as the test case, on the assumption that +a patch is all we need. We might see problems with your patch and decide +to fix the problem another way, or we might not understand it at all. + +

    Sometimes with a program as complicated as ld it is very hard to +construct an example that will make the program follow a certain path +through the code. If you do not send us the example, we will not be +able to construct one, so we will not be able to verify that the bug is +fixed. + +

    And if we cannot understand what bug you are trying to fix, or why your +patch should be an improvement, we will not install it. A test case will +help us to understand. + +

  • A guess about what the bug is or what it depends on. + +

    Such guesses are usually wrong. Even we cannot guess right about such +things without first using the debugger to find the facts. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Builtin-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Builtin-Functions.html new file mode 100644 index 0000000..37a20df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Builtin-Functions.html @@ -0,0 +1,225 @@ + + +Builtin Functions - Untitled + + + + + + + + + + + + +
+

+Previous: Expression Section, +Up: Expressions +



+
+ +

3.10.8 Builtin Functions

+ +

The linker script language includes a number of builtin functions for +use in linker script expressions. + +

+
ABSOLUTE(exp)
Return the absolute (non-relocatable, as opposed to non-negative) value +of the expression exp. Primarily useful to assign an absolute +value to a symbol within a section definition, where symbol values are +normally section relative. See Expression Section. + +
ADDR(section)
Return the absolute address (the VMA) of the named section. Your +script must previously have defined the location of that section. In +the following example, symbol_1 and symbol_2 are assigned +identical values: +
          SECTIONS { ...
+            .output1 :
+              {
+              start_of_output_1 = ABSOLUTE(.);
+              ...
+              }
+            .output :
+              {
+              symbol_1 = ADDR(.output1);
+              symbol_2 = start_of_output_1;
+              }
+          ... }
+     
+
ALIGN(align)
ALIGN(exp,align)
Return the location counter (.) or arbitrary expression aligned +to the next align boundary. The single operand ALIGN +doesn't change the value of the location counter—it just does +arithmetic on it. The two operand ALIGN allows an arbitrary +expression to be aligned upwards (ALIGN(align) is +equivalent to ALIGN(., align)). + +

Here is an example which aligns the output .data section to the +next 0x2000 byte boundary after the preceding section and sets a +variable within the section to the next 0x8000 boundary after the +input sections: +

          SECTIONS { ...
+            .data ALIGN(0x2000): {
+              *(.data)
+              variable = ALIGN(0x8000);
+            }
+          ... }
+     
+

The first use of ALIGN in this example specifies the location of +a section because it is used as the optional address attribute of +a section definition (see Output Section Address). The second use +of ALIGN is used to defines the value of a symbol. + +

The builtin function NEXT is closely related to ALIGN. + +

ALIGNOF(section)
Return the alignment in bytes of the named section, if that section has +been allocated. If the section has not been allocated when this is +evaluated, the linker will report an error. In the following example, +the alignment of the .output section is stored as the first +value in that section. +
          SECTIONS{ ...
+            .output {
+              LONG (ALIGNOF (.output))
+              ...
+              }
+          ... }
+     
+
BLOCK(exp)
This is a synonym for ALIGN, for compatibility with older linker +scripts. It is most often seen when setting the address of an output +section. + +
DATA_SEGMENT_ALIGN(maxpagesize, commonpagesize)
This is equivalent to either +
          (ALIGN(maxpagesize) + (. & (maxpagesize - 1)))
+     
+

or +

          (ALIGN(maxpagesize) + (. & (maxpagesize - commonpagesize)))
+     
+

depending on whether the latter uses fewer commonpagesize sized pages +for the data segment (area between the result of this expression and +DATA_SEGMENT_END) than the former or not. +If the latter form is used, it means commonpagesize bytes of runtime +memory will be saved at the expense of up to commonpagesize wasted +bytes in the on-disk file. + +

This expression can only be used directly in SECTIONS commands, not in +any output section descriptions and only once in the linker script. +commonpagesize should be less or equal to maxpagesize and should +be the system page size the object wants to be optimized for (while still +working on system page sizes up to maxpagesize). + +

Example: +

            . = DATA_SEGMENT_ALIGN(0x10000, 0x2000);
+     
+
DATA_SEGMENT_END(exp)
This defines the end of data segment for DATA_SEGMENT_ALIGN +evaluation purposes. + +
            . = DATA_SEGMENT_END(.);
+     
+
DATA_SEGMENT_RELRO_END(offset, exp)
This defines the end of the PT_GNU_RELRO segment when +-z relro option is used. Second argument is returned. +When -z relro option is not present, DATA_SEGMENT_RELRO_END +does nothing, otherwise DATA_SEGMENT_ALIGN is padded so that +exp + offset is aligned to the most commonly used page +boundary for particular target. If present in the linker script, +it must always come in between DATA_SEGMENT_ALIGN and +DATA_SEGMENT_END. + +
            . = DATA_SEGMENT_RELRO_END(24, .);
+     
+
DEFINED(symbol)
Return 1 if symbol is in the linker global symbol table and is +defined before the statement using DEFINED in the script, otherwise +return 0. You can use this function to provide +default values for symbols. For example, the following script fragment +shows how to set a global symbol begin to the first location in +the .text section—but if a symbol called begin already +existed, its value is preserved: + +
          SECTIONS { ...
+            .text : {
+              begin = DEFINED(begin) ? begin : . ;
+              ...
+            }
+            ...
+          }
+     
+
LENGTH(memory)
Return the length of the memory region named memory. + +
LOADADDR(section)
Return the absolute LMA of the named section. This is normally +the same as ADDR, but it may be different if the AT +attribute is used in the output section definition (see Output Section LMA). + +


MAX(exp1, exp2)
Returns the maximum of exp1 and exp2. + +


MIN(exp1, exp2)
Returns the minimum of exp1 and exp2. + +
NEXT(exp)
Return the next unallocated address that is a multiple of exp. +This function is closely related to ALIGN(exp); unless you +use the MEMORY command to define discontinuous memory for the +output file, the two functions are equivalent. + +
ORIGIN(memory)
Return the origin of the memory region named memory. + +
SEGMENT_START(segment, default)
Return the base address of the named segment. If an explicit +value has been given for this segment (with a command-line -T +option) that value will be returned; otherwise the value will be +default. At present, the -T command-line option can only +be used to set the base address for the “text”, “data”, and +“bss” sections, but you use SEGMENT_START with any segment +name. + +
SIZEOF(section)
Return the size in bytes of the named section, if that section has +been allocated. If the section has not been allocated when this is +evaluated, the linker will report an error. In the following example, +symbol_1 and symbol_2 are assigned identical values: +
          SECTIONS{ ...
+            .output {
+              .start = . ;
+              ...
+              .end = . ;
+              }
+            symbol_1 = .end - .start ;
+            symbol_2 = SIZEOF(.output);
+          ... }
+     
+
SIZEOF_HEADERS
sizeof_headers
Return the size in bytes of the output file's headers. This is +information which appears at the start of the output file. You can use +this number when setting the start address of the first section, if you +choose, to facilitate paging. + +

When producing an ELF output file, if the linker script uses the +SIZEOF_HEADERS builtin function, the linker must compute the +number of program headers before it has determined all the section +addresses and sizes. If the linker later discovers that it needs +additional program headers, it will report an error not enough +room for program headers. To avoid this error, you must avoid using +the SIZEOF_HEADERS function, or you must rework your linker +script to avoid forcing the linker to use additional program headers, or +you must define the program headers yourself using the PHDRS +command (see PHDRS). +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Canonical-format.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Canonical-format.html new file mode 100644 index 0000000..2cb7972 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Canonical-format.html @@ -0,0 +1,118 @@ + + +Canonical format - Untitled + + + + + + + + + + + + +
+

+Previous: BFD information loss, +Up: BFD outline +



+
+ +

5.1.2 The BFD canonical object-file format

+ +

The greatest potential for loss of information occurs when there is the least +overlap between the information provided by the source format, that +stored by the canonical format, and that needed by the +destination format. A brief description of the canonical form may help +you understand which kinds of data you can count on preserving across +conversions. + +

+
files
Information stored on a per-file basis includes target machine +architecture, particular implementation format type, a demand pageable +bit, and a write protected bit. Information like Unix magic numbers is +not stored here—only the magic numbers' meaning, so a ZMAGIC +file would have both the demand pageable bit and the write protected +text bit set. The byte order of the target is stored on a per-file +basis, so that big- and little-endian object files may be used with one +another. + +
sections
Each section in the input file contains the name of the section, the +section's original address in the object file, size and alignment +information, various flags, and pointers into other BFD data +structures. + +
symbols
Each symbol contains a pointer to the information for the object file +which originally defined it, its name, its value, and various flag +bits. When a BFD back end reads in a symbol table, it relocates all +symbols to make them relative to the base of the section where they were +defined. Doing this ensures that each symbol points to its containing +section. Each symbol also has a varying amount of hidden private data +for the BFD back end. Since the symbol points to the original file, the +private data format for that symbol is accessible. ld can +operate on a collection of symbols of wildly different formats without +problems. + +

Normal global and simple local symbols are maintained on output, so an +output file (no matter its format) will retain symbols pointing to +functions and to global, static, and common variables. Some symbol +information is not worth retaining; in a.out, type information is +stored in the symbol table as long symbol names. This information would +be useless to most COFF debuggers; the linker has command line switches +to allow users to throw it away. + +

There is one word of type information within the symbol, so if the +format supports symbol type information within symbols (for example, COFF, +IEEE, Oasys) and the type is simple enough to fit within one word +(nearly everything but aggregates), the information will be preserved. + +

relocation level
Each canonical BFD relocation record contains a pointer to the symbol to +relocate to, the offset of the data to relocate, the section the data +is in, and a pointer to a relocation type descriptor. Relocation is +performed by passing messages through the relocation type +descriptor and the symbol pointer. Therefore, relocations can be performed +on output data using a relocation method that is only available in one of the +input formats. For instance, Oasys provides a byte relocation format. +A relocation record requesting this relocation type would point +indirectly to a routine to perform this, so the relocation may be +performed on a byte being written to a 68k COFF file, even though 68k COFF +has no such relocation type. + +
line numbers
Object formats can contain, for debugging purposes, some form of mapping +between symbols, source line numbers, and addresses in the output file. +These addresses have to be relocated along with the symbol information. +Each symbol with an associated list of line number records points to the +first record of the list. The head of a line number list consists of a +pointer to the symbol, which allows finding out the address of the +function whose line number is being described. The rest of the list is +made up of pairs: offsets into the section and line numbers. Any format +which can simply derive this information can pass it successfully +between formats (COFF, IEEE and Oasys). +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Constants.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Constants.html new file mode 100644 index 0000000..96ee861 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Constants.html @@ -0,0 +1,66 @@ + + +Constants - Untitled + + + + + + + + + + + + +
+

+Next: , +Up: Expressions +



+
+ +

3.10.1 Constants

+ +

All constants are integers. + +

As in C, the linker considers an integer beginning with 0 to be +octal, and an integer beginning with 0x or 0X to be +hexadecimal. The linker considers other integers to be decimal. + +

In addition, you can use the suffixes K and M to scale a +constant by + + +1024 or 1024*1024 + + +respectively. For example, the following all refer to the same quantity: +

     _fourk_1 = 4K;
+     _fourk_2 = 4096;
+     _fourk_3 = 0x1000;
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Entry-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Entry-Point.html new file mode 100644 index 0000000..761f79f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Entry-Point.html @@ -0,0 +1,64 @@ + + +Entry Point - Untitled + + + + + + + + + + + + +
+

+Next: , +Up: Simple Commands +



+
+ +

3.4.1 Setting the Entry Point

+ +

The first instruction to execute in a program is called the entry +point. You can use the ENTRY linker script command to set the +entry point. The argument is a symbol name: +

     ENTRY(symbol)
+
+

There are several ways to set the entry point. The linker will set the +entry point by trying each of the following methods in order, and +stopping when one of them succeeds: +

    +
  • the -e entry command-line option; +
  • the ENTRY(symbol) command in a linker script; +
  • the value of the symbol start, if defined; +
  • the address of the first byte of the .text section, if present; +
  • The address 0. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Environment.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Environment.html new file mode 100644 index 0000000..9614376 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Environment.html @@ -0,0 +1,81 @@ + + +Environment - Untitled + + + + + + + + + + + + +
+

+Previous: Options, +Up: Invocation +



+
+ +

2.2 Environment Variables

+ + +

You can change the behaviour of ld with the environment variables +GNUTARGET, +LDEMULATION and COLLECT_NO_DEMANGLE. + +

GNUTARGET determines the input-file object format if you don't +use -b (or its synonym --format). Its value should be one +of the BFD names for an input format (see BFD). If there is no +GNUTARGET in the environment, ld uses the natural format +of the target. If GNUTARGET is set to default then BFD +attempts to discover the input format by examining binary input files; +this method often succeeds, but there are potential ambiguities, since +there is no method of ensuring that the magic number used to specify +object-file formats is unique. However, the configuration procedure for +BFD on each system places the conventional format for that system first +in the search-list, so ambiguities are resolved in favor of convention. + +

LDEMULATION determines the default emulation if you don't use the +-m option. The emulation can affect various aspects of linker +behaviour, particularly the default linker script. You can list the +available emulations with the --verbose or -V options. If +the -m option is not used, and the LDEMULATION environment +variable is not defined, the default emulation depends upon how the +linker was configured. + +

Normally, the linker will default to demangling symbols. However, if +COLLECT_NO_DEMANGLE is set in the environment, then it will +default to not demangling symbols. This environment variable is used in +a similar fashion by the gcc linker wrapper program. The default +may be overridden by the --demangle and --no-demangle +options. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Evaluation.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Evaluation.html new file mode 100644 index 0000000..1b858e6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Evaluation.html @@ -0,0 +1,82 @@ + + +Evaluation - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Operators, +Up: Expressions +



+
+ +

3.10.6 Evaluation

+ +

The linker evaluates expressions lazily. It only computes the value of +an expression when absolutely necessary. + +

The linker needs some information, such as the value of the start +address of the first section, and the origins and lengths of memory +regions, in order to do any linking at all. These values are computed +as soon as possible when the linker reads in the linker script. + +

However, other values (such as symbol values) are not known or needed +until after storage allocation. Such values are evaluated later, when +other information (such as the sizes of output sections) is available +for use in the symbol assignment expression. + +

The sizes of sections cannot be known until after allocation, so +assignments dependent upon these are not performed until after +allocation. + +

Some expressions, such as those depending upon the location counter +., must be evaluated during section allocation. + +

If the result of an expression is required, but the value is not +available, then an error results. For example, a script like the +following +

     SECTIONS
+       {
+         .text 9+this_isnt_constant :
+           { *(.text) }
+       }
+
+

will cause the error message non constant expression for initial +address. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Expression-Section.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Expression-Section.html new file mode 100644 index 0000000..bedbb7f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Expression-Section.html @@ -0,0 +1,80 @@ + + +Expression Section - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Evaluation, +Up: Expressions +



+
+ +

3.10.7 The Section of an Expression

+ +

When the linker evaluates an expression, the result is either absolute +or relative to some section. A relative expression is expressed as a +fixed offset from the base of a section. + +

The position of the expression within the linker script determines +whether it is absolute or relative. An expression which appears within +an output section definition is relative to the base of the output +section. An expression which appears elsewhere will be absolute. + +

A symbol set to a relative expression will be relocatable if you request +relocatable output using the -r option. That means that a +further link operation may change the value of the symbol. The symbol's +section will be the section of the relative expression. + +

A symbol set to an absolute expression will retain the same value +through any further link operation. The symbol will be absolute, and +will not have any particular associated section. + +

You can use the builtin function ABSOLUTE to force an expression +to be absolute when it would otherwise be relative. For example, to +create an absolute symbol set to the address of the end of the output +section .data: +

     SECTIONS
+       {
+         .data : { *(.data) _edata = ABSOLUTE(.); }
+       }
+
+

If ABSOLUTE were not used, _edata would be relative to the +.data section. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Expressions.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Expressions.html new file mode 100644 index 0000000..9776874 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Expressions.html @@ -0,0 +1,71 @@ + + +Expressions - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: VERSION, +Up: Scripts +



+
+ +

3.10 Expressions in Linker Scripts

+ +

The syntax for expressions in the linker script language is identical to +that of C expressions. All expressions are evaluated as integers. All +expressions are evaluated in the same size, which is 32 bits if both the +host and target are 32 bits, and is otherwise 64 bits. + +

You can use and set symbol values in expressions. + +

The linker defines several special purpose builtin functions for use in +expressions. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/File-Commands.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/File-Commands.html new file mode 100644 index 0000000..93b899e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/File-Commands.html @@ -0,0 +1,123 @@ + + +File Commands - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Entry Point, +Up: Simple Commands +



+
+ +

3.4.2 Commands Dealing with Files

+ +

Several linker script commands deal with files. + +

+
INCLUDE filename
Include the linker script filename at this point. The file will +be searched for in the current directory, and in any directory specified +with the -L option. You can nest calls to INCLUDE up to +10 levels deep. + +

You can place INCLUDE directives at the top level, in MEMORY or +SECTIONS commands, or in output section descriptions. + +

INPUT(file, file, ...)
INPUT(file file ...)
The INPUT command directs the linker to include the named files +in the link, as though they were named on the command line. + +

For example, if you always want to include subr.o any time you do +a link, but you can't be bothered to put it on every link command line, +then you can put INPUT (subr.o) in your linker script. + +

In fact, if you like, you can list all of your input files in the linker +script, and then invoke the linker with nothing but a -T option. + +

In case a sysroot prefix is configured, and the filename starts +with the / character, and the script being processed was +located inside the sysroot prefix, the filename will be looked +for in the sysroot prefix. Otherwise, the linker will try to +open the file in the current directory. If it is not found, the +linker will search through the archive library search path. See the +description of -L in Command Line Options. + +

If you use INPUT (-lfile), ld will transform the +name to libfile.a, as with the command line argument +-l. + +

When you use the INPUT command in an implicit linker script, the +files will be included in the link at the point at which the linker +script file is included. This can affect archive searching. + +

GROUP(file, file, ...)
GROUP(file file ...)
The GROUP command is like INPUT, except that the named +files should all be archives, and they are searched repeatedly until no +new undefined references are created. See the description of -( +in Command Line Options. + +
AS_NEEDED(file, file, ...)
AS_NEEDED(file file ...)
This construct can appear only inside of the INPUT or GROUP +commands, among other filenames. The files listed will be handled +as if they appear directly in the INPUT or GROUP commands, +with the exception of ELF shared libraries, that will be added only +when they are actually needed. This construct essentially enables +--as-needed option for all the files listed inside of it +and restores previous --as-needed resp. --no-as-needed +setting afterwards. + +
OUTPUT(filename)
The OUTPUT command names the output file. Using +OUTPUT(filename) in the linker script is exactly like using +-o filename on the command line (see Command Line Options). If both are used, the command line option takes +precedence. + +

You can use the OUTPUT command to define a default name for the +output file other than the usual default of a.out. + +

SEARCH_DIR(path)
The SEARCH_DIR command adds path to the list of paths where +ld looks for archive libraries. Using +SEARCH_DIR(path) is exactly like using -L path +on the command line (see Command Line Options). If both +are used, then the linker will search both paths. Paths specified using +the command line option are searched first. + +
STARTUP(filename)
The STARTUP command is just like the INPUT command, except +that filename will become the first input file to be linked, as +though it were specified first on the command line. This may be useful +when using a system in which the entry point is always the start of the +first file. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Forced-Input-Alignment.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Forced-Input-Alignment.html new file mode 100644 index 0000000..7a12129 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Forced-Input-Alignment.html @@ -0,0 +1,54 @@ + + +Forced Input Alignment - Untitled + + + + + + + + + + + + + + + +
3.6.8.4 Forced Input Alignment
+ +

You can force input section alignment within an output section by using +SUBALIGN. The value specified overrides any alignment given by input +sections, whether larger or smaller. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Forced-Output-Alignment.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Forced-Output-Alignment.html new file mode 100644 index 0000000..beeccc2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Forced-Output-Alignment.html @@ -0,0 +1,52 @@ + + +Forced Output Alignment - Untitled + + + + + + + + + + + + + +

+ +
3.6.8.3 Forced Output Alignment
+ +

You can increase an output section's alignment by using ALIGN. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Format-Commands.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Format-Commands.html new file mode 100644 index 0000000..be6b689 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Format-Commands.html @@ -0,0 +1,86 @@ + + +Format Commands - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: File Commands, +Up: Simple Commands +



+
+ +

3.4.3 Commands Dealing with Object File Formats

+ +

A couple of linker script commands deal with object file formats. + +

+
OUTPUT_FORMAT(bfdname)
OUTPUT_FORMAT(default, big, little)
The OUTPUT_FORMAT command names the BFD format to use for the +output file (see BFD). Using OUTPUT_FORMAT(bfdname) is +exactly like using --oformat bfdname on the command line +(see Command Line Options). If both are used, the command +line option takes precedence. + +

You can use OUTPUT_FORMAT with three arguments to use different +formats based on the -EB and -EL command line options. +This permits the linker script to set the output format based on the +desired endianness. + +

If neither -EB nor -EL are used, then the output format +will be the first argument, default. If -EB is used, the +output format will be the second argument, big. If -EL is +used, the output format will be the third argument, little. + +

For example, the default linker script for the MIPS ELF target uses this +command: +

          OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
+     
+

This says that the default format for the output file is +elf32-bigmips, but if the user uses the -EL command line +option, the output file will be created in the elf32-littlemips +format. + +

TARGET(bfdname)
The TARGET command names the BFD format to use when reading input +files. It affects subsequent INPUT and GROUP commands. +This command is like using -b bfdname on the command line +(see Command Line Options). If the TARGET command +is used but OUTPUT_FORMAT is not, then the last TARGET +command is also used to set the format for the output file. See BFD. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..9b297c9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/GNU-Free-Documentation-License.html @@ -0,0 +1,422 @@ + + +GNU Free Documentation License - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: MRI, +Up: Top +



+
+ +

Appendix B GNU Free Documentation License

+ +
Version 1.1, March 2000
+ +
     Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
+
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +written document “free” in the sense of freedom: to assure everyone +the effective freedom to copy and redistribute it, with or without +modifying it, either commercially or noncommercially. Secondarily, +this License preserves for the author and publisher a way to get +credit for their work, while not being considered responsible for +modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

    +     
    +     
    +
  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work that contains a +notice placed by the copyright holder saying it can be distributed +under the terms of this License. The “Document”, below, refers to any +such manual or work. Any member of the public is a licensee, and is +addressed as “you.” + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (For example, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, whose contents can be viewed and edited directly and +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup has been designed to thwart or discourage +subsequent modification by readers is not Transparent. A copy that is +not “Transparent” is called “Opaque.” + +

    Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML designed for human modification. Opaque formats include +PostScript, PDF, proprietary formats that can be read and edited only +by proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML produced by some word processors for output +purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. +

    +     
    +     
    +
  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +

    +     
    +     
    +
  4. COPYING IN QUANTITY + +

    If you publish printed copies of the Document numbering more than 100, +and the Document's license notice requires Cover Texts, you must enclose +the copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a publicly-accessible computer-network location containing a complete +Transparent copy of the Document, free of added material, which the +general network-using public has access to download anonymously at no +charge using public-standard network protocols. If you use the latter +option, you must take reasonably prudent steps, when you begin +distribution of Opaque copies in quantity, to ensure that this +Transparent copy will remain thus accessible at the stated location +until at least one year after the last time you distribute an Opaque +copy (directly or through your agents or retailers) of that edition to +the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +

    +     
    +     
    +
  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

    A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission.
    +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five).
    +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher.
    +D. Preserve all the copyright notices of the Document.
    +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices.
    +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below.
    +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice.
    +H. Include an unaltered copy of this License.
    +I. Preserve the section entitled “History”, and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled “History” in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence.
    +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the “History” section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission.
    +K. In any section entitled “Acknowledgements” or “Dedications”, + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein.
    +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles.
    +M. Delete any section entitled “Endorsements.” Such a section + may not be included in the Modified Version.
    +N. Do not retitle any existing section as “Endorsements” + or to conflict in title with any Invariant Section.
    +

    +     
    +     
    + If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties–for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +

    +     
    +     
    +
  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections entitled “History” +in the various original documents, forming one section entitled +“History”; likewise combine any sections entitled “Acknowledgements”, +and any sections entitled “Dedications.” You must delete all sections +entitled “Endorsements.” +

    +     
    +     
    +
  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +

    +     
    +     
    +
  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, does not as a whole count as a Modified Version +of the Document, provided no compilation copyright is claimed for the +compilation. Such a compilation is called an “aggregate”, and this +License does not apply to the other self-contained works thus compiled +with the Document, on account of their being thus compiled, if they +are not themselves derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one quarter +of the entire aggregate, the Document's Cover Texts may be placed on +covers that surround only the Document within the aggregate. +Otherwise they must appear on covers around the whole aggregate. +

    +     
    +     
    +
  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License provided that you also include the +original English version of this License. In case of a disagreement +between the translation and the original English version of this +License, the original English version will prevail. +

    +     
    +     
    +
  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. +

    +     
    +     
    +
  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

     Copyright (C)  year  your name.
+     Permission is granted to copy, distribute and/or modify this document
+     under the terms of the GNU Free Documentation License, Version 1.1
+     or any later version published by the Free Software Foundation;
+     with the Invariant Sections being list their titles, with the
+     Front-Cover Texts being list, and with the Back-Cover Texts being list.
+     A copy of the license is included in the section entitled "GNU
+     Free Documentation License."
+
+

If you have no Invariant Sections, write “with no Invariant Sections” +instead of saying which ones are invariant. If you have no +Front-Cover Texts, write “no Front-Cover Texts” instead of +“Front-Cover Texts being list”; likewise for Back-Cover Texts. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/H8_002f300.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/H8_002f300.html new file mode 100644 index 0000000..5293a7c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/H8_002f300.html @@ -0,0 +1,82 @@ + + +H8/300 - Untitled + + + + + + + + + + + + +

+

+Next: , +Up: Machine Dependent +



+
+ +

4.1 ld and the H8/300

+ +

For the H8/300, ld can perform these global optimizations when +you specify the --relax command-line option. + + + +

relaxing address modes
ld finds all jsr and jmp instructions whose +targets are within eight bits, and turns them into eight-bit +program-counter relative bsr and bra instructions, +respectively. + +


synthesizing instructions
+ld finds all mov.b instructions which use the +sixteen-bit absolute address form, but refer to the top +page of memory, and changes them to use the eight-bit address form. +(That is: the linker turns mov.b @aa:16 into +mov.b @aa:8 whenever the address aa is in the +top page of memory). + +
bit manipulation instructions
ld finds all bit manipulation instructions like band, bclr, +biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, bxor +which use 32 bit and 16 bit absolute address form, but refer to the top +page of memory, and changes them to use the 8 bit address form. +(That is: the linker turns bset #xx:3,@aa:32 into +bset #xx:3,@aa:8 whenever the address aa is in +the top page of memory). + +
system control instructions
ld finds all ldc.w, stc.w instructions which use the +32 bit absolute address form, but refer to the top page of memory, and +changes them to use 16 bit address form. +(That is: the linker turns ldc.w @aa:32,ccr into +ldc.w @aa:16,ccr whenever the address aa is in +the top page of memory). +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/HPPA-ELF32.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/HPPA-ELF32.html new file mode 100644 index 0000000..e20f551 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/HPPA-ELF32.html @@ -0,0 +1,76 @@ + + +HPPA ELF32 - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: ARM, +Up: Machine Dependent +



+
+ +

4.5 ld and HPPA 32-bit ELF Support

+ +

When generating a shared library, ld will by default generate +import stubs suitable for use with a single sub-space application. +The --multi-subspace switch causes ld to generate export +stubs, and different (larger) import stubs suitable for use with +multiple sub-spaces. + +

Long branch stubs and import/export stubs are placed by ld in +stub sections located between groups of input sections. +--stub-group-size specifies the maximum size of a group of input +sections handled by one stub section. Since branch offsets are signed, +a stub section may serve two groups of input sections, one group before +the stub section, and one group after it. However, when using +conditional branches that require stubs, it may be better (for branch +prediction) that stub sections only serve one group of input sections. +A negative value for N chooses this scheme, ensuring that +branches to stubs always use a negative offset. Two special values of +N are recognized, 1 and -1. These both instruct +ld to automatically size input section groups for the branch types +detected, with the same behaviour regarding stub placement as other +positive or negative values of N respectively. + +

Note that --stub-group-size does not split input sections. A +single input section larger than the group size specified will of course +create a larger group (of one section). If input sections are too +large, it may not be possible for a branch to reach its stub. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Implicit-Linker-Scripts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Implicit-Linker-Scripts.html new file mode 100644 index 0000000..20f2d54 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Implicit-Linker-Scripts.html @@ -0,0 +1,63 @@ + + +Implicit Linker Scripts - Untitled + + + + + + + + + + + + +

+

+Previous: Expressions, +Up: Scripts +



+
+ +

3.11 Implicit Linker Scripts

+ +

If you specify a linker input file which the linker can not recognize as +an object file or an archive file, it will try to read the file as a +linker script. If the file can not be parsed as a linker script, the +linker will report an error. + +

An implicit linker script will not replace the default linker script. + +

Typically an implicit linker script would contain only symbol +assignments, or the INPUT, GROUP, or VERSION +commands. + +

Any input files read because of an implicit linker script will be read +at the position in the command line where the implicit linker script was +read. This can affect archive searching. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Basics.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Basics.html new file mode 100644 index 0000000..199b95b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Basics.html @@ -0,0 +1,118 @@ + + +Input Section Basics - Untitled + + + + + + + + + + + + +

+ +
3.6.4.1 Input Section Basics
+ +

An input section description consists of a file name optionally followed +by a list of section names in parentheses. + +

The file name and the section name may be wildcard patterns, which we +describe further below (see Input Section Wildcards). + +

The most common input section description is to include all input +sections with a particular name in the output section. For example, to +include all input .text sections, you would write: +

     *(.text)
+
+

Here the * is a wildcard which matches any file name. To exclude a list +of files from matching the file name wildcard, EXCLUDE_FILE may be used to +match all files except the ones specified in the EXCLUDE_FILE list. For +example: +

     *(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)
+
+

will cause all .ctors sections from all files except crtend.o and +otherfile.o to be included. + +

There are two ways to include more than one section: +

     *(.text .rdata)
+     *(.text) *(.rdata)
+
+

The difference between these is the order in which the .text and +.rdata input sections will appear in the output section. In the +first example, they will be intermingled, appearing in the same order as +they are found in the linker input. In the second example, all +.text input sections will appear first, followed by all +.rdata input sections. + +

You can specify a file name to include sections from a particular file. +You would do this if one or more of your files contain special data that +needs to be at a particular location in memory. For example: +

     data.o(.data)
+
+

You can also specify files within archives by writing a pattern +matching the archive, a colon, then the pattern matching the file, +with no whitespace around the colon. + +

+
archive:file
matches file within archive +
archive:
matches the whole archive +
:file
matches file but not one in an archive +
+ +

Either one or both of archive and file can contain shell +wildcards. On DOS based file systems, the linker will assume that a +single letter followed by a colon is a drive specifier, so +c:myfile.o is a simple file specification, not myfile.o +within an archive called c. archive:file filespecs may +also be used within an EXCLUDE_FILE list, but may not appear in +other linker script contexts. For instance, you cannot extract a file +from an archive by using archive:file in an INPUT +command. + +

If you use a file name without a list of sections, then all sections in +the input file will be included in the output section. This is not +commonly done, but it may by useful on occasion. For example: +

     data.o
+
+

When you use a file name which is not an archive:file specifier +and does not contain any wild card +characters, the linker will first see if you also specified the file +name on the linker command line or in an INPUT command. If you +did not, the linker will attempt to open the file as an input file, as +though it appeared on the command line. Note that this differs from an +INPUT command, because the linker will not search for the file in +the archive search path. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Common.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Common.html new file mode 100644 index 0000000..81913c0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Common.html @@ -0,0 +1,77 @@ + + +Input Section Common - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Input Section Wildcards, +Up: Input Section +



+
+ +
3.6.4.3 Input Section for Common Symbols
+ +

A special notation is needed for common symbols, because in many object +file formats common symbols do not have a particular input section. The +linker treats common symbols as though they are in an input section +named COMMON. + +

You may use file names with the COMMON section just as with any +other input sections. You can use this to place common symbols from a +particular input file in one section while common symbols from other +input files are placed in another section. + +

In most cases, common symbols in input files will be placed in the +.bss section in the output file. For example: +

     .bss { *(.bss) *(COMMON) }
+
+

Some object file formats have more than one type of common symbol. For +example, the MIPS ELF object file format distinguishes standard common +symbols and small common symbols. In this case, the linker will use a +different special section name for other types of common symbols. In +the case of MIPS ELF, the linker uses COMMON for standard common +symbols and .scommon for small common symbols. This permits you +to map the different types of common symbols into memory at different +locations. + +

You will sometimes see [COMMON] in old linker scripts. This +notation is now considered obsolete. It is equivalent to +*(COMMON). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Example.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Example.html new file mode 100644 index 0000000..71a7b56 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Example.html @@ -0,0 +1,76 @@ + + +Input Section Example - Untitled + + + + + + + + + + + + +

+

+Previous: Input Section Keep, +Up: Input Section +



+
+ +
3.6.4.5 Input Section Example
+ +

The following example is a complete linker script. It tells the linker +to read all of the sections from file all.o and place them at the +start of output section outputa which starts at location +0x10000. All of section .input1 from file foo.o +follows immediately, in the same output section. All of section +.input2 from foo.o goes into output section +outputb, followed by section .input1 from foo1.o. +All of the remaining .input1 and .input2 sections from any +files are written to output section outputc. + +

     SECTIONS {
+       outputa 0x10000 :
+         {
+         all.o
+         foo.o (.input1)
+         }
+       outputb :
+         {
+         foo.o (.input2)
+         foo1.o (.input1)
+         }
+       outputc :
+         {
+         *(.input1)
+         *(.input2)
+         }
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Keep.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Keep.html new file mode 100644 index 0000000..f8cef0a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Keep.html @@ -0,0 +1,56 @@ + + +Input Section Keep - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Input Section Common, +Up: Input Section +



+
+ +
3.6.4.4 Input Section and Garbage Collection
+ +

When link-time garbage collection is in use (--gc-sections), +it is often useful to mark sections that should not be eliminated. +This is accomplished by surrounding an input section's wildcard entry +with KEEP(), as in KEEP(*(.init)) or +KEEP(SORT_BY_NAME(*)(.ctors)). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Wildcards.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Wildcards.html new file mode 100644 index 0000000..4438383 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section-Wildcards.html @@ -0,0 +1,153 @@ + + +Input Section Wildcards - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Input Section Basics, +Up: Input Section +



+
+ +
3.6.4.2 Input Section Wildcard Patterns
+ +

In an input section description, either the file name or the section +name or both may be wildcard patterns. + +

The file name of * seen in many examples is a simple wildcard +pattern for the file name. + +

The wildcard patterns are like those used by the Unix shell. + +

+
*
matches any number of characters +
?
matches any single character +
[chars]
matches a single instance of any of the chars; the - +character may be used to specify a range of characters, as in +[a-z] to match any lower case letter +
\
quotes the following character +
+ +

When a file name is matched with a wildcard, the wildcard characters +will not match a / character (used to separate directory names on +Unix). A pattern consisting of a single * character is an +exception; it will always match any file name, whether it contains a +/ or not. In a section name, the wildcard characters will match +a / character. + +

File name wildcard patterns only match files which are explicitly +specified on the command line or in an INPUT command. The linker +does not search directories to expand wildcards. + +

If a file name matches more than one wildcard pattern, or if a file name +appears explicitly and is also matched by a wildcard pattern, the linker +will use the first match in the linker script. For example, this +sequence of input section descriptions is probably in error, because the +data.o rule will not be used: +

     .data : { *(.data) }
+     .data1 : { data.o(.data) }
+
+

Normally, the linker will place files and sections matched by wildcards +in the order in which they are seen during the link. You can change +this by using the SORT_BY_NAME keyword, which appears before a wildcard +pattern in parentheses (e.g., SORT_BY_NAME(.text*)). When the +SORT_BY_NAME keyword is used, the linker will sort the files or sections +into ascending order by name before placing them in the output file. + +

SORT_BY_ALIGNMENT is very similar to SORT_BY_NAME. The +difference is SORT_BY_ALIGNMENT will sort sections into +ascending order by alignment before placing them in the output file. + +

SORT is an alias for SORT_BY_NAME. + +

When there are nested section sorting commands in linker script, there +can be at most 1 level of nesting for section sorting commands. + +

    +
  1. SORT_BY_NAME (SORT_BY_ALIGNMENT (wildcard section pattern)). +It will sort the input sections by name first, then by alignment if 2 +sections have the same name. +
  2. SORT_BY_ALIGNMENT (SORT_BY_NAME (wildcard section pattern)). +It will sort the input sections by alignment first, then by name if 2 +sections have the same alignment. +
  3. SORT_BY_NAME (SORT_BY_NAME (wildcard section pattern)) is +treated the same as SORT_BY_NAME (wildcard section pattern). +
  4. SORT_BY_ALIGNMENT (SORT_BY_ALIGNMENT (wildcard section pattern)) +is treated the same as SORT_BY_ALIGNMENT (wildcard section pattern). +
  5. All other nested section sorting commands are invalid. +
+ +

When both command line section sorting option and linker script +section sorting command are used, section sorting command always +takes precedence over the command line option. + +

If the section sorting command in linker script isn't nested, the +command line option will make the section sorting command to be +treated as nested sorting command. + +

    +
  1. SORT_BY_NAME (wildcard section pattern ) with +--sort-sections alignment is equivalent to +SORT_BY_NAME (SORT_BY_ALIGNMENT (wildcard section pattern)). +
  2. SORT_BY_ALIGNMENT (wildcard section pattern) with +--sort-section name is equivalent to +SORT_BY_ALIGNMENT (SORT_BY_NAME (wildcard section pattern)). +
+ +

If the section sorting command in linker script is nested, the +command line option will be ignored. + +

If you ever get confused about where input sections are going, use the +-M linker option to generate a map file. The map file shows +precisely how input sections are mapped to output sections. + +

This example shows how wildcard patterns might be used to partition +files. This linker script directs the linker to place all .text +sections in .text and all .bss sections in .bss. +The linker will place the .data section from all files beginning +with an upper case character in .DATA; for all other files, the +linker will place the .data section in .data. +

     SECTIONS {
+       .text : { *(.text) }
+       .DATA : { [A-Z]*(.data) }
+       .data : { *(.data) }
+       .bss : { *(.bss) }
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section.html new file mode 100644 index 0000000..396b174 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Input-Section.html @@ -0,0 +1,65 @@ + + +Input Section - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Output Section Address, +Up: SECTIONS +



+
+ +

3.6.4 Input Section Description

+ +

The most common output section command is an input section description. + +

The input section description is the most basic linker script operation. +You use output sections to tell the linker how to lay out your program +in memory. You use input section descriptions to tell the linker how to +map the input files into your memory layout. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Invocation.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Invocation.html new file mode 100644 index 0000000..be1e2ba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Invocation.html @@ -0,0 +1,60 @@ + + +Invocation - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: Overview, +Up: Top +



+
+ +

2 Invocation

+ + +

The gnu linker ld is meant to cover a broad range of situations, +and to be as compatible as possible with other linkers. As a result, +you have many choices to control its behavior. + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/LD-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/LD-Index.html new file mode 100644 index 0000000..f0a2746 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/LD-Index.html @@ -0,0 +1,699 @@ + + +LD Index - Untitled + + + + + + + + + + + +
+

+Previous: GNU Free Documentation License, +Up: Top +



+
+ +

LD Index

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Location-Counter.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Location-Counter.html new file mode 100644 index 0000000..5fed9c6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Location-Counter.html @@ -0,0 +1,172 @@ + + +Location Counter - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Orphan Sections, +Up: Expressions +



+
+ +

3.10.4 The Location Counter

+ +

The special linker variable dot . always contains the +current output location counter. Since the . always refers to a +location in an output section, it may only appear in an expression +within a SECTIONS command. The . symbol may appear +anywhere that an ordinary symbol is allowed in an expression. + +

Assigning a value to . will cause the location counter to be +moved. This may be used to create holes in the output section. The +location counter may not be moved backwards inside an output section, +and may not be moved backwards outside of an output section if so +doing creates areas with overlapping LMAs. + +

     SECTIONS
+     {
+       output :
+         {
+           file1(.text)
+           . = . + 1000;
+           file2(.text)
+           . += 1000;
+           file3(.text)
+         } = 0x12345678;
+     }
+
+

In the previous example, the .text section from file1 is +located at the beginning of the output section output. It is +followed by a 1000 byte gap. Then the .text section from +file2 appears, also with a 1000 byte gap following before the +.text section from file3. The notation = 0x12345678 +specifies what data to write in the gaps (see Output Section Fill). + +

Note: . actually refers to the byte offset from the start of the +current containing object. Normally this is the SECTIONS +statement, whose start address is 0, hence . can be used as an +absolute address. If . is used inside a section description +however, it refers to the byte offset from the start of that section, +not an absolute address. Thus in a script like this: + +

     SECTIONS
+     {
+         . = 0x100
+         .text: {
+           *(.text)
+           . = 0x200
+         }
+         . = 0x500
+         .data: {
+           *(.data)
+           . += 0x600
+         }
+     }
+
+

The .text section will be assigned a starting address of 0x100 +and a size of exactly 0x200 bytes, even if there is not enough data in +the .text input sections to fill this area. (If there is too +much data, an error will be produced because this would be an attempt to +move . backwards). The .data section will start at 0x500 +and it will have an extra 0x600 bytes worth of space after the end of +the values from the .data input sections and before the end of +the .data output section itself. + +

Setting symbols to the value of the location counter outside of an +output section statement can result in unexpected values if the linker +needs to place orphan sections. For example, given the following: + +

     SECTIONS
+     {
+         start_of_text = . ;
+         .text: { *(.text) }
+         end_of_text = . ;
+     
+         start_of_data = . ;
+         .data: { *(.data) }
+         end_of_data = . ;
+     }
+
+

If the linker needs to place some input section, e.g. .rodata, +not mentioned in the script, it might choose to place that section +between .text and .data. You might think the linker +should place .rodata on the blank line in the above script, but +blank lines are of no particular significance to the linker. As well, +the linker doesn't associate the above symbol names with their +sections. Instead, it assumes that all assignments or other +statements belong to the previous output section, except for the +special case of an assignment to .. I.e., the linker will +place the orphan .rodata section as if the script was written +as follows: + +

     SECTIONS
+     {
+         start_of_text = . ;
+         .text: { *(.text) }
+         end_of_text = . ;
+     
+         start_of_data = . ;
+         .rodata: { *(.rodata) }
+         .data: { *(.data) }
+         end_of_data = . ;
+     }
+
+

This may or may not be the script author's intention for the value of +start_of_data. One way to influence the orphan section +placement is to assign the location counter to itself, as the linker +assumes that an assignment to . is setting the start address of +a following output section and thus should be grouped with that +section. So you could write: + +

     SECTIONS
+     {
+         start_of_text = . ;
+         .text: { *(.text) }
+         end_of_text = . ;
+     
+         . = . ;
+         start_of_data = . ;
+         .data: { *(.data) }
+         end_of_data = . ;
+     }
+
+

Now, the orphan .rodata section will be placed between +end_of_text and start_of_data. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/M68HC11_002f68HC12.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/M68HC11_002f68HC12.html new file mode 100644 index 0000000..f45fbe1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/M68HC11_002f68HC12.html @@ -0,0 +1,84 @@ + + +M68HC11/68HC12 - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: MSP430, +Up: Machine Dependent +



+
+ +

4.3 ld and the Motorola 68HC11 and 68HC12 families

+ +

+ +

4.3.1 Linker Relaxation

+ +

For the Motorola 68HC11, ld can perform these global +optimizations when you specify the --relax command-line option. + + + +

relaxing address modes
ld finds all jsr and jmp instructions whose +targets are within eight bits, and turns them into eight-bit +program-counter relative bsr and bra instructions, +respectively. + +

ld also looks at all 16-bit extended addressing modes and +transforms them in a direct addressing mode when the address is in +page 0 (between 0 and 0x0ff). + +

relaxing gcc instruction group
When gcc is called with -mrelax, it can emit group +of instructions that the linker can optimize to use a 68HC11 direct +addressing mode. These instructions consists of bclr or +bset instructions. + +
+ +

4.3.2 Trampoline Generation

+ +

For 68HC11 and 68HC12, ld can generate trampoline code to +call a far function using a normal jsr instruction. The linker +will also change the relocation to some far function to use the +trampoline address instead of the function address. This is typically the +case when a pointer to a function is taken. The pointer will in fact +point to the function trampoline. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/M68K.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/M68K.html new file mode 100644 index 0000000..ccf4cfc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/M68K.html @@ -0,0 +1,64 @@ + + +M68K - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: HPPA ELF32, +Up: Machine Dependent +



+
+ +

4.6 ld and the Motorola 68K family

+ +

The --got=type option lets you choose the GOT generation scheme. +The choices are single, negative, multigot and +target. When target is selected the linker chooses +the default GOT generation scheme for the current target. +single tells the linker to generate a single GOT with +entries only at non-negative offsets. +negative instructs the linker to generate a single GOT with +entries at both negative and positive offsets. Not all environments +support such GOTs. +multigot allows the linker to generate several GOTs in the +output file. All GOT references from a single input object +file access the same GOT, but references from different input object +files might access different GOTs. Not all environments support such GOTs. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MEMORY.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MEMORY.html new file mode 100644 index 0000000..8791cd5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MEMORY.html @@ -0,0 +1,143 @@ + + +MEMORY - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: SECTIONS, +Up: Scripts +



+
+ +

3.7 MEMORY Command

+ +

The linker's default configuration permits allocation of all available +memory. You can override this by using the MEMORY command. + +

The MEMORY command describes the location and size of blocks of +memory in the target. You can use it to describe which memory regions +may be used by the linker, and which memory regions it must avoid. You +can then assign sections to particular memory regions. The linker will +set section addresses based on the memory regions, and will warn about +regions that become too full. The linker will not shuffle sections +around to fit into the available regions. + +

A linker script may contain at most one use of the MEMORY +command. However, you can define as many blocks of memory within it as +you wish. The syntax is: +

     MEMORY
+       {
+         name [(attr)] : ORIGIN = origin, LENGTH = len
+         ...
+       }
+
+

The name is a name used in the linker script to refer to the +region. The region name has no meaning outside of the linker script. +Region names are stored in a separate name space, and will not conflict +with symbol names, file names, or section names. Each memory region +must have a distinct name. + +

The attr string is an optional list of attributes that specify +whether to use a particular memory region for an input section which is +not explicitly mapped in the linker script. As described in +SECTIONS, if you do not specify an output section for some input +section, the linker will create an output section with the same name as +the input section. If you define region attributes, the linker will use +them to select the memory region for the output section that it creates. + +

The attr string must consist only of the following characters: +

+
R
Read-only section +
W
Read/write section +
X
Executable section +
A
Allocatable section +
I
Initialized section +
L
Same as I +
!
Invert the sense of any of the preceding attributes +
+ +

If a unmapped section matches any of the listed attributes other than +!, it will be placed in the memory region. The ! +attribute reverses this test, so that an unmapped section will be placed +in the memory region only if it does not match any of the listed +attributes. + +

The origin is an numerical expression for the start address of +the memory region. The expression must evaluate to a constant and it +cannot involve any symbols. The keyword ORIGIN may be +abbreviated to org or o (but not, for example, +ORG). + +

The len is an expression for the size in bytes of the memory +region. As with the origin expression, the expression must +be numerical only and must evaluate to a constant. The keyword +LENGTH may be abbreviated to len or l. + +

In the following example, we specify that there are two memory regions +available for allocation: one starting at 0 for 256 kilobytes, +and the other starting at 0x40000000 for four megabytes. The +linker will place into the rom memory region every section which +is not explicitly mapped into a memory region, and is either read-only +or executable. The linker will place other sections which are not +explicitly mapped into a memory region into the ram memory +region. + +

     MEMORY
+       {
+         rom (rx)  : ORIGIN = 0, LENGTH = 256K
+         ram (!rx) : org = 0x40000000, l = 4M
+       }
+
+

Once you define a memory region, you can direct the linker to place +specific output sections into that memory region by using the +>region output section attribute. For example, if you have +a memory region named mem, you would use >mem in the +output section definition. See Output Section Region. If no address +was specified for the output section, the linker will set the address to +the next available address within the memory region. If the combined +output sections directed to a memory region are too large for the +region, the linker will issue an error message. + +

It is possible to access the origin and length of a memory in an +expression via the ORIGIN(memory) and +LENGTH(memory) functions: + +

       _fstack = ORIGIN(ram) + LENGTH(ram) - 4;
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MMIX.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MMIX.html new file mode 100644 index 0000000..eae16ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MMIX.html @@ -0,0 +1,72 @@ + + +MMIX - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: M68K, +Up: Machine Dependent +



+
+ +

4.7 ld and MMIX

+ +

For MMIX, there is a choice of generating ELF object files or +mmo object files when linking. The simulator mmix +understands the mmo format. The binutils objcopy utility +can translate between the two formats. + +

There is one special section, the .MMIX.reg_contents section. +Contents in this section is assumed to correspond to that of global +registers, and symbols referring to it are translated to special symbols, +equal to registers. In a final link, the start address of the +.MMIX.reg_contents section corresponds to the first allocated +global register multiplied by 8. Register $255 is not included in +this section; it is always set to the program entry, which is at the +symbol Main for mmo files. + +

Global symbols with the prefix __.MMIX.start., for example +__.MMIX.start..text and __.MMIX.start..data are special. +The default linker script uses these to set the default start address +of a section. + +

Initial and trailing multiples of zero-valued 32-bit words in a section, +are left out from an mmo file. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MRI.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MRI.html new file mode 100644 index 0000000..e187fe0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MRI.html @@ -0,0 +1,144 @@ + + +MRI - Untitled + + + + + + + + + + + + +

+

+Next: , +Previous: Reporting Bugs, +Up: Top +



+
+ +

Appendix A MRI Compatible Script Files

+ +

To aid users making the transition to gnu ld from the MRI +linker, ld can use MRI compatible linker scripts as an +alternative to the more general-purpose linker scripting language +described in Scripts. MRI compatible linker scripts have a much +simpler command set than the scripting language otherwise used with +ld. gnu ld supports the most commonly used MRI +linker commands; these commands are described here. + +

In general, MRI scripts aren't of much use with the a.out object +file format, since it only has three sections and MRI scripts lack some +features to make use of them. + +

You can specify a file containing an MRI-compatible script using the +-c command-line option. + +

Each command in an MRI-compatible script occupies its own line; each +command line starts with the keyword that identifies the command (though +blank lines are also allowed for punctuation). If a line of an +MRI-compatible script begins with an unrecognized keyword, ld +issues a warning message, but continues processing the script. + +

Lines beginning with * are comments. + +

You can write these commands using all upper-case letters, or all +lower case; for example, chip is the same as CHIP. +The following list shows only the upper-case form of each command. + + + +

ABSOLUTE secname
ABSOLUTE secname, secname, ... secname
Normally, ld includes in the output file all sections from all +the input files. However, in an MRI-compatible script, you can use the +ABSOLUTE command to restrict the sections that will be present in +your output program. If the ABSOLUTE command is used at all in a +script, then only the sections named explicitly in ABSOLUTE +commands will appear in the linker output. You can still use other +input sections (whatever you select on the command line, or using +LOAD) to resolve addresses in the output file. + +


ALIAS out-secname, in-secname
Use this command to place the data from input section in-secname +in a section called out-secname in the linker output file. + +

in-secname may be an integer. + +


ALIGN secname = expression
Align the section called secname to expression. The +expression should be a power of two. + +


BASE expression
Use the value of expression as the lowest address (other than +absolute addresses) in the output file. + +


CHIP expression
CHIP expression, expression
This command does nothing; it is accepted only for compatibility. + +


END
This command does nothing whatever; it's only accepted for compatibility. + +


FORMAT output-format
Similar to the OUTPUT_FORMAT command in the more general linker +language, but restricted to one of these output formats: + +
    +
  1. S-records, if output-format is S + +
  2. IEEE, if output-format is IEEE + +
  3. COFF (the coff-m68k variant in BFD), if output-format is +COFF +
+ +


LIST anything...
Print (to the standard output file) a link map, as produced by the +ld command-line option -M. + +

The keyword LIST may be followed by anything on the +same line, with no change in its effect. + +


LOAD filename
LOAD filename, filename, ... filename
Include one or more object file filename in the link; this has the +same effect as specifying filename directly on the ld +command line. + +


NAME output-name
output-name is the name for the program produced by ld; the +MRI-compatible command NAME is equivalent to the command-line +option -o or the general script language command OUTPUT. + +


ORDER secname, secname, ... secname
ORDER secname secname secname
Normally, ld orders the sections in its output file in the +order in which they first appear in the input files. In an MRI-compatible +script, you can override this ordering with the ORDER command. The +sections you list with ORDER will appear first in your output +file, in the order specified. + +


PUBLIC name=expression
PUBLIC name,expression
PUBLIC name expression
Supply a value (expression) for external symbol +name used in the linker input files. + +


SECT secname, expression
SECT secname=expression
SECT secname expression
You can use any of these three forms of the SECT command to +specify the start address (expression) for section secname. +If you have more than one SECT statement for the same +secname, only the first sets the start address. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MSP430.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MSP430.html new file mode 100644 index 0000000..4af4204 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/MSP430.html @@ -0,0 +1,73 @@ + + +MSP430 - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: MMIX, +Up: Machine Dependent +



+
+ +

4.8 ld and MSP430

+ +

For the MSP430 it is possible to select the MPU architecture. The flag -m [mpu type] +will select an appropriate linker script for selected MPU type. (To get a list of known MPUs +just pass -m help option to the linker). + +

The linker will recognize some extra sections which are MSP430 specific: + +

+
.vectors
Defines a portion of ROM where interrupt vectors located. + +
.bootloader
Defines the bootloader portion of the ROM (if applicable). Any code +in this section will be uploaded to the MPU. + +
.infomem
Defines an information memory section (if applicable). Any code in +this section will be uploaded to the MPU. + +
.infomemnobits
This is the same as the .infomem section except that any code +in this section will not be uploaded to the MPU. + +
.noinit
Denotes a portion of RAM located above .bss section. + +

The last two sections are used by gcc. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Machine-Dependent.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Machine-Dependent.html new file mode 100644 index 0000000..c5ff5b6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Machine-Dependent.html @@ -0,0 +1,83 @@ + + +Machine Dependent - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: Scripts, +Up: Top +



+
+ +

4 Machine Dependent Features

+ +

ld has additional features on some platforms; the following +sections describe them. Machines where ld has no additional +functionality are not listed. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Miscellaneous-Commands.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Miscellaneous-Commands.html new file mode 100644 index 0000000..856eb2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Miscellaneous-Commands.html @@ -0,0 +1,113 @@ + + +Miscellaneous Commands - Untitled + + + + + + + + + + + + +
+

+Previous: Format Commands, +Up: Simple Commands +



+
+ +

3.4.4 Other Linker Script Commands

+ +

There are a few other linker scripts commands. + +

+
ASSERT(exp, message)
Ensure that exp is non-zero. If it is zero, then exit the linker +with an error code, and print message. + +
EXTERN(symbol symbol ...)
Force symbol to be entered in the output file as an undefined +symbol. Doing this may, for example, trigger linking of additional +modules from standard libraries. You may list several symbols for +each EXTERN, and you may use EXTERN multiple times. This +command has the same effect as the -u command-line option. + +
FORCE_COMMON_ALLOCATION
This command has the same effect as the -d command-line option: +to make ld assign space to common symbols even if a relocatable +output file is specified (-r). + +
INHIBIT_COMMON_ALLOCATION
This command has the same effect as the --no-define-common +command-line option: to make ld omit the assignment of addresses +to common symbols even for a non-relocatable output file. + +
INSERT [ AFTER | BEFORE ] output_section
This command is typically used in a script specified by -T to +augment the default SECTIONS with, for example, overlays. It +inserts all prior linker script statements after (or before) +output_section, and also causes -T to not override the +default linker script. The exact insertion point is as for orphan +sections. See Location Counter. The insertion happens after the +linker has mapped input sections to output sections. Prior to the +insertion, since -T scripts are parsed before the default +linker script, statements in the -T script occur before the +default linker script statements in the internal linker representation +of the script. In particular, input section assignments will be made +to -T output sections before those in the default script. Here +is an example of how a -T script using INSERT might look: + +
          SECTIONS
+          {
+            OVERLAY :
+            {
+              .ov1 { ov1*(.text) }
+              .ov2 { ov2*(.text) }
+            }
+          }
+          INSERT AFTER .text;
+     
+
NOCROSSREFS(section section ...)
This command may be used to tell ld to issue an error about any +references among certain output sections. + +

In certain types of programs, particularly on embedded systems when +using overlays, when one section is loaded into memory, another section +will not be. Any direct references between the two sections would be +errors. For example, it would be an error if code in one section called +a function defined in the other section. + +

The NOCROSSREFS command takes a list of output section names. If +ld detects any cross references between the sections, it reports +an error and returns a non-zero exit status. Note that the +NOCROSSREFS command uses output section names, not input section +names. + +

OUTPUT_ARCH(bfdarch)
Specify a particular output machine architecture. The argument is one +of the names used by the BFD library (see BFD). You can see the +architecture of an object file by using the objdump program with +the -f option. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Operators.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Operators.html new file mode 100644 index 0000000..66610a5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Operators.html @@ -0,0 +1,75 @@ + + +Operators - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Location Counter, +Up: Expressions +



+
+ +

3.10.5 Operators

+ +

The linker recognizes the standard C set of arithmetic operators, with +the standard bindings and precedence levels: + + +

     precedence      associativity   Operators                Notes
+     (highest)
+     1               left            !  -  ~                  (1)
+     2               left            *  /  %
+     3               left            +  -
+     4               left            >>  <<
+     5               left            ==  !=  >  <  <=  >=
+     6               left            &
+     7               left            |
+     8               left            &&
+     9               left            ||
+     10              right           ? :
+     11              right           &=  +=  -=  *=  /=       (2)
+     (lowest)
+
+

Notes: +(1) Prefix operators +(2) See Assignments. + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Options.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Options.html new file mode 100644 index 0000000..945a6a0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Options.html @@ -0,0 +1,1629 @@ + + +Options - Untitled + + + + + + + + + + + + +

+

+Next: , +Up: Invocation +



+
+ +

2.1 Command Line Options

+ +

+ + +

The linker supports a plethora of command-line options, but in actual +practice few of them are used in any particular context. +For instance, a frequent use of ld is to link standard Unix +object files on a standard, supported Unix system. On such a system, to +link a file hello.o: + +

     ld -o output /lib/crt0.o hello.o -lc
+
+

This tells ld to produce a file called output as the +result of linking the file /lib/crt0.o with hello.o and +the library libc.a, which will come from the standard search +directories. (See the discussion of the -l option below.) + +

Some of the command-line options to ld may be specified at any +point in the command line. However, options which refer to files, such +as -l or -T, cause the file to be read at the point at +which the option appears in the command line, relative to the object +files and other file options. Repeating non-file options with a +different argument will either have no further effect, or override prior +occurrences (those further to the left on the command line) of that +option. Options which may be meaningfully specified more than once are +noted in the descriptions below. + +

Non-option arguments are object files or archives which are to be linked +together. They may follow, precede, or be mixed in with command-line +options, except that an object file argument may not be placed between +an option and its argument. + +

Usually the linker is invoked with at least one object file, but you can +specify other forms of binary input files using -l, -R, +and the script command language. If no binary input files at all +are specified, the linker does not produce any output, and issues the +message No input files. + +

If the linker cannot recognize the format of an object file, it will +assume that it is a linker script. A script specified in this way +augments the main linker script used for the link (either the default +linker script or the one specified by using -T). This feature +permits the linker to link against a file which appears to be an object +or an archive, but actually merely defines some symbol values, or uses +INPUT or GROUP to load other objects. Specifying a +script in this way merely augments the main linker script, with the +extra commands placed after the main script; use the -T option +to replace the default linker script entirely, but note the effect of +the INSERT command. See Scripts. + +

For options whose names are a single letter, +option arguments must either follow the option letter without intervening +whitespace, or be given as separate arguments immediately following the +option that requires them. + +

For options whose names are multiple letters, either one dash or two can +precede the option name; for example, -trace-symbol and +--trace-symbol are equivalent. Note—there is one exception to +this rule. Multiple letter options that start with a lower case 'o' can +only be preceded by two dashes. This is to reduce confusion with the +-o option. So for example -omagic sets the output file +name to magic whereas --omagic sets the NMAGIC flag on the +output. + +

Arguments to multiple-letter options must either be separated from the +option name by an equals sign, or be given as separate arguments +immediately following the option that requires them. For example, +--trace-symbol foo and --trace-symbol=foo are equivalent. +Unique abbreviations of the names of multiple-letter options are +accepted. + +

Note—if the linker is being invoked indirectly, via a compiler driver +(e.g. gcc) then all the linker command line options should be +prefixed by -Wl, (or whatever is appropriate for the particular +compiler driver) like this: + +

       gcc -Wl,--startgroup foo.o bar.o -Wl,--endgroup
+
+

This is important, because otherwise the compiler driver program may +silently drop the linker options, resulting in a bad link. + +

Here is a table of the generic command line switches accepted by the GNU +linker: + +

+ + + +
@file
Read command-line options from file. The options read are +inserted in place of the original @file option. If file +does not exist, or cannot be read, then the option will be treated +literally, and not removed. + +

Options in file are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The file may itself contain additional +@file options; any such options will be processed recursively. + +


-akeyword
This option is supported for HP/UX compatibility. The keyword +argument must be one of the strings archive, shared, or +default. -aarchive is functionally equivalent to +-Bstatic, and the other two keywords are functionally equivalent +to -Bdynamic. This option may be used any number of times. + +


-Aarchitecture
--architecture=architecture
In the current release of ld, this option is useful only for the +Intel 960 family of architectures. In that ld configuration, the +architecture argument identifies the particular architecture in +the 960 family, enabling some safeguards and modifying the +archive-library search path. See ld and the Intel 960 family, for details. + +

Future releases of ld may support similar functionality for +other architecture families. + +


-b input-format
--format=input-format
ld may be configured to support more than one kind of object +file. If your ld is configured this way, you can use the +-b option to specify the binary format for input object files +that follow this option on the command line. Even when ld is +configured to support alternative object formats, you don't usually need +to specify this, as ld should be configured to expect as a +default input format the most usual format on each machine. +input-format is a text string, the name of a particular format +supported by the BFD libraries. (You can list the available binary +formats with objdump -i.) +See BFD. + +

You may want to use this option if you are linking files with an unusual +binary format. You can also use -b to switch formats explicitly (when +linking object files of different formats), by including +-b input-format before each group of object files in a +particular format. + +

The default format is taken from the environment variable +GNUTARGET. +See Environment. +You can also define the input format from a script, using the command +TARGET; +see Format Commands. + +


-c MRI-commandfile
--mri-script=MRI-commandfile
For compatibility with linkers produced by MRI, ld accepts script +files written in an alternate, restricted command language, described in +MRI Compatible Script Files. +Introduce MRI script files with +the option -c; use the -T option to run linker +scripts written in the general-purpose ld scripting language. +If MRI-cmdfile does not exist, ld looks for it in the directories +specified by any -L options. + +


-d
-dc
-dp
These three options are equivalent; multiple forms are supported for +compatibility with other linkers. They assign space to common symbols +even if a relocatable output file is specified (with -r). The +script command FORCE_COMMON_ALLOCATION has the same effect. +See Miscellaneous Commands. + +


-e entry
--entry=entry
Use entry as the explicit symbol for beginning execution of your +program, rather than the default entry point. If there is no symbol +named entry, the linker will try to parse entry as a number, +and use that as the entry address (the number will be interpreted in +base 10; you may use a leading 0x for base 16, or a leading +0 for base 8). See Entry Point, for a discussion of defaults +and other ways of specifying the entry point. + +


--exclude-libs lib,lib,...
Specifies a list of archive libraries from which symbols should not be automatically +exported. The library names may be delimited by commas or colons. Specifying +--exclude-libs ALL excludes symbols in all archive libraries from +automatic export. This option is available only for the i386 PE targeted +port of the linker and for ELF targeted ports. For i386 PE, symbols +explicitly listed in a .def file are still exported, regardless of this +option. For ELF targeted ports, symbols affected by this option will +be treated as hidden. + +


-E
--export-dynamic
When creating a dynamically linked executable, add all symbols to the +dynamic symbol table. The dynamic symbol table is the set of symbols +which are visible from dynamic objects at run time. + +

If you do not use this option, the dynamic symbol table will normally +contain only those symbols which are referenced by some dynamic object +mentioned in the link. + +

If you use dlopen to load a dynamic object which needs to refer +back to the symbols defined by the program, rather than some other +dynamic object, then you will probably need to use this option when +linking the program itself. + +

You can also use the dynamic list to control what symbols should +be added to the dynamic symbol table if the output format supports it. +See the description of --dynamic-list. + +


-EB
Link big-endian objects. This affects the default output format. + +


-EL
Link little-endian objects. This affects the default output format. + +


-f
--auxiliary name
When creating an ELF shared object, set the internal DT_AUXILIARY field +to the specified name. This tells the dynamic linker that the symbol +table of the shared object should be used as an auxiliary filter on the +symbol table of the shared object name. + +

If you later link a program against this filter object, then, when you +run the program, the dynamic linker will see the DT_AUXILIARY field. If +the dynamic linker resolves any symbols from the filter object, it will +first check whether there is a definition in the shared object +name. If there is one, it will be used instead of the definition +in the filter object. The shared object name need not exist. +Thus the shared object name may be used to provide an alternative +implementation of certain functions, perhaps for debugging or for +machine specific performance. + +

This option may be specified more than once. The DT_AUXILIARY entries +will be created in the order in which they appear on the command line. + +


-F name
--filter name
When creating an ELF shared object, set the internal DT_FILTER field to +the specified name. This tells the dynamic linker that the symbol table +of the shared object which is being created should be used as a filter +on the symbol table of the shared object name. + +

If you later link a program against this filter object, then, when you +run the program, the dynamic linker will see the DT_FILTER field. The +dynamic linker will resolve symbols according to the symbol table of the +filter object as usual, but it will actually link to the definitions +found in the shared object name. Thus the filter object can be +used to select a subset of the symbols provided by the object +name. + +

Some older linkers used the -F option throughout a compilation +toolchain for specifying object-file format for both input and output +object files. +The gnu linker uses other mechanisms for this purpose: the +-b, --format, --oformat options, the +TARGET command in linker scripts, and the GNUTARGET +environment variable. +The gnu linker will ignore the -F option when not +creating an ELF shared object. + +


-fini name
When creating an ELF executable or shared object, call NAME when the +executable or shared object is unloaded, by setting DT_FINI to the +address of the function. By default, the linker uses _fini as +the function to call. + +


-g
Ignored. Provided for compatibility with other tools. + +


-Gvalue
--gpsize=value
Set the maximum size of objects to be optimized using the GP register to +size. This is only meaningful for object file formats such as +MIPS ECOFF which supports putting large and small objects into different +sections. This is ignored for other object file formats. + +


-hname
-soname=name
When creating an ELF shared object, set the internal DT_SONAME field to +the specified name. When an executable is linked with a shared object +which has a DT_SONAME field, then when the executable is run the dynamic +linker will attempt to load the shared object specified by the DT_SONAME +field rather than the using the file name given to the linker. + +


-i
Perform an incremental link (same as option -r). + +


-init name
When creating an ELF executable or shared object, call NAME when the +executable or shared object is loaded, by setting DT_INIT to the address +of the function. By default, the linker uses _init as the +function to call. + +


-lnamespec
--library=namespec
Add the archive or object file specified by namespec to the +list of files to link. This option may be used any number of times. +If namespec is of the form :filename, ld +will search the library path for a file called filename, otherise it +will search the library path for a file called libnamespec.a. + +

On systems which support shared libraries, ld may also search for +files other than libnamespec.a. Specifically, on ELF +and SunOS systems, ld will search a directory for a library +called libnamespec.so before searching for one called +libnamespec.a. (By convention, a .so extension +indicates a shared library.) Note that this behavior does not apply +to :filename, which always specifies a file called +filename. + +

The linker will search an archive only once, at the location where it is +specified on the command line. If the archive defines a symbol which +was undefined in some object which appeared before the archive on the +command line, the linker will include the appropriate file(s) from the +archive. However, an undefined symbol in an object appearing later on +the command line will not cause the linker to search the archive again. + +

See the -( option for a way to force the linker to search +archives multiple times. + +

You may list the same archive multiple times on the command line. + +

This type of archive searching is standard for Unix linkers. However, +if you are using ld on AIX, note that it is different from the +behaviour of the AIX linker. + +


-Lsearchdir
--library-path=searchdir
Add path searchdir to the list of paths that ld will search +for archive libraries and ld control scripts. You may use this +option any number of times. The directories are searched in the order +in which they are specified on the command line. Directories specified +on the command line are searched before the default directories. All +-L options apply to all -l options, regardless of the +order in which the options appear. + +

If searchdir begins with =, then the = will be replaced +by the sysroot prefix, a path specified when the linker is configured. + +

The default set of paths searched (without being specified with +-L) depends on which emulation mode ld is using, and in +some cases also on how it was configured. See Environment. + +

The paths can also be specified in a link script with the +SEARCH_DIR command. Directories specified this way are searched +at the point in which the linker script appears in the command line. + +


-memulation
Emulate the emulation linker. You can list the available +emulations with the --verbose or -V options. + +

If the -m option is not used, the emulation is taken from the +LDEMULATION environment variable, if that is defined. + +

Otherwise, the default emulation depends upon how the linker was +configured. + +


-M
--print-map
Print a link map to the standard output. A link map provides +information about the link, including the following: + +
    +
  • Where object files are mapped into memory. +
  • How common symbols are allocated. +
  • All archive members included in the link, with a mention of the symbol +which caused the archive member to be brought in. +
  • The values assigned to symbols. + +

    Note - symbols whose values are computed by an expression which +involves a reference to a previous value of the same symbol may not +have correct result displayed in the link map. This is because the +linker discards intermediate results and only retains the final value +of an expression. Under such circumstances the linker will display +the final value enclosed by square brackets. Thus for example a +linker script containing: + +

                      foo = 1
    +                  foo = foo * 4
    +                  foo = foo + 8
    +          
    +

    will produce the following output in the link map if the -M +option is used: + +

                      0x00000001                foo = 0x1
    +                  [0x0000000c]                foo = (foo * 0x4)
    +                  [0x0000000c]                foo = (foo + 0x8)
    +          
    +

    See Expressions for more information about expressions in linker +scripts. +

+ +


-n
--nmagic
Turn off page alignment of sections, and mark the output as +NMAGIC if possible. + +


-N
--omagic
Set the text and data sections to be readable and writable. Also, do +not page-align the data segment, and disable linking against shared +libraries. If the output format supports Unix style magic numbers, +mark the output as OMAGIC. Note: Although a writable text section +is allowed for PE-COFF targets, it does not conform to the format +specification published by Microsoft. + +


--no-omagic
This option negates most of the effects of the -N option. It +sets the text section to be read-only, and forces the data segment to +be page-aligned. Note - this option does not enable linking against +shared libraries. Use -Bdynamic for this. + +


-o output
--output=output
Use output as the name for the program produced by ld; if this +option is not specified, the name a.out is used by default. The +script command OUTPUT can also specify the output file name. + +


-O level
If level is a numeric values greater than zero ld optimizes +the output. This might take significantly longer and therefore probably +should only be enabled for the final binary. At the moment this +option only affects ELF shared library generation. Future releases of +the linker may make more use of this option. Also currently there is +no difference in the linker's behaviour for different non-zero values +of this option. Again this may change with future releases. + +


-q
--emit-relocs
Leave relocation sections and contents in fully linked executables. +Post link analysis and optimization tools may need this information in +order to perform correct modifications of executables. This results +in larger executables. + +

This option is currently only supported on ELF platforms. + +


--force-dynamic
Force the output file to have dynamic sections. This option is specific +to VxWorks targets. + +


-r
--relocatable
Generate relocatable output—i.e., generate an output file that can in +turn serve as input to ld. This is often called partial +linking. As a side effect, in environments that support standard Unix +magic numbers, this option also sets the output file's magic number to +OMAGIC. + +If this option is not specified, an absolute file is produced. When +linking C++ programs, this option will not resolve references to +constructors; to do that, use -Ur. + +

When an input file does not have the same format as the output file, +partial linking is only supported if that input file does not contain any +relocations. Different output formats can have further restrictions; for +example some a.out-based formats do not support partial linking +with input files in other formats at all. + +

This option does the same thing as -i. + +


-R filename
--just-symbols=filename
Read symbol names and their addresses from filename, but do not +relocate it or include it in the output. This allows your output file +to refer symbolically to absolute locations of memory defined in other +programs. You may use this option more than once. + +

For compatibility with other ELF linkers, if the -R option is +followed by a directory name, rather than a file name, it is treated as +the -rpath option. + +


-s
--strip-all
Omit all symbol information from the output file. + +


-S
--strip-debug
Omit debugger symbol information (but not all symbols) from the output file. + +


-t
--trace
Print the names of the input files as ld processes them. + +


-T scriptfile
--script=scriptfile
Use scriptfile as the linker script. This script replaces +ld's default linker script (rather than adding to it), so +commandfile must specify everything necessary to describe the +output file. See Scripts. If scriptfile does not exist in +the current directory, ld looks for it in the directories +specified by any preceding -L options. Multiple -T +options accumulate. + +


-dT scriptfile
--default-script=scriptfile
Use scriptfile as the default linker script. See Scripts. + +

This option is similar to the --script option except that +processing of the script is delayed until after the rest of the +command line has been processed. This allows options placed after the +--default-script option on the command line to affect the +behaviour of the linker script, which can be important when the linker +command line cannot be directly controlled by the user. (eg because +the command line is being constructed by another tool, such as +gcc). + +


-u symbol
--undefined=symbol
Force symbol to be entered in the output file as an undefined +symbol. Doing this may, for example, trigger linking of additional +modules from standard libraries. -u may be repeated with +different option arguments to enter additional undefined symbols. This +option is equivalent to the EXTERN linker script command. + +


-Ur
For anything other than C++ programs, this option is equivalent to +-r: it generates relocatable output—i.e., an output file that can in +turn serve as input to ld. When linking C++ programs, -Ur +does resolve references to constructors, unlike -r. +It does not work to use -Ur on files that were themselves linked +with -Ur; once the constructor table has been built, it cannot +be added to. Use -Ur only for the last partial link, and +-r for the others. + +


--unique[=SECTION]
Creates a separate output section for every input section matching +SECTION, or if the optional wildcard SECTION argument is +missing, for every orphan input section. An orphan section is one not +specifically mentioned in a linker script. You may use this option +multiple times on the command line; It prevents the normal merging of +input sections with the same name, overriding output section assignments +in a linker script. + +


-v
--version
-V
Display the version number for ld. The -V option also +lists the supported emulations. + +


-x
--discard-all
Delete all local symbols. + +


-X
--discard-locals
Delete all temporary local symbols. (These symbols start with +system-specific local label prefixes, typically .L for ELF systems +or L for traditional a.out systems.) + +


-y symbol
--trace-symbol=symbol
Print the name of each linked file in which symbol appears. This +option may be given any number of times. On many systems it is necessary +to prepend an underscore. + +

This option is useful when you have an undefined symbol in your link but +don't know where the reference is coming from. + +


-Y path
Add path to the default library search path. This option exists +for Solaris compatibility. + +


-z keyword
The recognized keywords are: +
+
combreloc
Combines multiple reloc sections and sorts them to make dynamic symbol +lookup caching possible. + +
defs
Disallows undefined symbols in object files. Undefined symbols in +shared libraries are still allowed. + +
execstack
Marks the object as requiring executable stack. + +
initfirst
This option is only meaningful when building a shared object. +It marks the object so that its runtime initialization will occur +before the runtime initialization of any other objects brought into +the process at the same time. Similarly the runtime finalization of +the object will occur after the runtime finalization of any other +objects. + +
interpose
Marks the object that its symbol table interposes before all symbols +but the primary executable. + +
lazy
When generating an executable or shared library, mark it to tell the +dynamic linker to defer function call resolution to the point when +the function is called (lazy binding), rather than at load time. +Lazy binding is the default. + +
loadfltr
Marks the object that its filters be processed immediately at +runtime. + +
muldefs
Allows multiple definitions. + +
nocombreloc
Disables multiple reloc sections combining. + +
nocopyreloc
Disables production of copy relocs. + +
nodefaultlib
Marks the object that the search for dependencies of this object will +ignore any default library search paths. + +
nodelete
Marks the object shouldn't be unloaded at runtime. + +
nodlopen
Marks the object not available to dlopen. + +
nodump
Marks the object can not be dumped by dldump. + +
noexecstack
Marks the object as not requiring executable stack. + +
norelro
Don't create an ELF PT_GNU_RELRO segment header in the object. + +
now
When generating an executable or shared library, mark it to tell the +dynamic linker to resolve all symbols when the program is started, or +when the shared library is linked to using dlopen, instead of +deferring function call resolution to the point when the function is +first called. + +
origin
Marks the object may contain $ORIGIN. + +
relro
Create an ELF PT_GNU_RELRO segment header in the object. + +
max-page-size=value
Set the emulation maximum page size to value. + +
common-page-size=value
Set the emulation common page size to value. + +
+ +

Other keywords are ignored for Solaris compatibility. + +


-( archives -)
--start-group archives --end-group
The archives should be a list of archive files. They may be +either explicit file names, or -l options. + +

The specified archives are searched repeatedly until no new undefined +references are created. Normally, an archive is searched only once in +the order that it is specified on the command line. If a symbol in that +archive is needed to resolve an undefined symbol referred to by an +object in an archive that appears later on the command line, the linker +would not be able to resolve that reference. By grouping the archives, +they all be searched repeatedly until all possible references are +resolved. + +

Using this option has a significant performance cost. It is best to use +it only when there are unavoidable circular references between two or +more archives. + +


--accept-unknown-input-arch
--no-accept-unknown-input-arch
Tells the linker to accept input files whose architecture cannot be +recognised. The assumption is that the user knows what they are doing +and deliberately wants to link in these unknown input files. This was +the default behaviour of the linker, before release 2.14. The default +behaviour from release 2.14 onwards is to reject such input files, and +so the --accept-unknown-input-arch option has been added to +restore the old behaviour. + +


--as-needed
--no-as-needed
This option affects ELF DT_NEEDED tags for dynamic libraries mentioned +on the command line after the --as-needed option. Normally, +the linker will add a DT_NEEDED tag for each dynamic library mentioned +on the command line, regardless of whether the library is actually +needed. --as-needed causes DT_NEEDED tags to only be emitted +for libraries that satisfy some symbol reference from regular objects +which is undefined at the point that the library was linked. +--no-as-needed restores the default behaviour. + +


--add-needed
--no-add-needed
This option affects the treatment of dynamic libraries from ELF +DT_NEEDED tags in dynamic libraries mentioned on the command line after +the --no-add-needed option. Normally, the linker will add +a DT_NEEDED tag for each dynamic library from DT_NEEDED tags. +--no-add-needed causes DT_NEEDED tags will never be emitted +for those libraries from DT_NEEDED tags. --add-needed restores +the default behaviour. + +


-assert keyword
This option is ignored for SunOS compatibility. + +


-Bdynamic
-dy
-call_shared
Link against dynamic libraries. This is only meaningful on platforms +for which shared libraries are supported. This option is normally the +default on such platforms. The different variants of this option are +for compatibility with various systems. You may use this option +multiple times on the command line: it affects library searching for +-l options which follow it. + +


-Bgroup
Set the DF_1_GROUP flag in the DT_FLAGS_1 entry in the dynamic +section. This causes the runtime linker to handle lookups in this +object and its dependencies to be performed only inside the group. +--unresolved-symbols=report-all is implied. This option is +only meaningful on ELF platforms which support shared libraries. + +


-Bstatic
-dn
-non_shared
-static
Do not link against shared libraries. This is only meaningful on +platforms for which shared libraries are supported. The different +variants of this option are for compatibility with various systems. You +may use this option multiple times on the command line: it affects +library searching for -l options which follow it. This +option also implies --unresolved-symbols=report-all. This +option can be used with -shared. Doing so means that a +shared library is being created but that all of the library's external +references must be resolved by pulling in entries from static +libraries. + +


-Bsymbolic
When creating a shared library, bind references to global symbols to the +definition within the shared library, if any. Normally, it is possible +for a program linked against a shared library to override the definition +within the shared library. This option is only meaningful on ELF +platforms which support shared libraries. + +


-Bsymbolic-functions
When creating a shared library, bind references to global function +symbols to the definition within the shared library, if any. +This option is only meaningful on ELF platforms which support shared +libraries. + +


--dynamic-list=dynamic-list-file
Specify the name of a dynamic list file to the linker. This is +typically used when creating shared libraries to specify a list of +global symbols whose references shouldn't be bound to the definition +within the shared library, or creating dynamically linked executables +to specify a list of symbols which should be added to the symbol table +in the executable. This option is only meaningful on ELF platforms +which support shared libraries. + +

The format of the dynamic list is the same as the version node without +scope and node name. See VERSION for more information. + +


--dynamic-list-data
Include all global data symbols to the dynamic list. + +


--dynamic-list-cpp-new
Provide the builtin dynamic list for C++ operator new and delete. It +is mainly useful for building shared libstdc++. + +


--dynamic-list-cpp-typeinfo
Provide the builtin dynamic list for C++ runtime type identification. + +


--check-sections
--no-check-sections
Asks the linker not to check section addresses after they have +been assigned to see if there are any overlaps. Normally the linker will +perform this check, and if it finds any overlaps it will produce +suitable error messages. The linker does know about, and does make +allowances for sections in overlays. The default behaviour can be +restored by using the command line switch --check-sections. + +


--cref
Output a cross reference table. If a linker map file is being +generated, the cross reference table is printed to the map file. +Otherwise, it is printed on the standard output. + +

The format of the table is intentionally simple, so that it may be +easily processed by a script if necessary. The symbols are printed out, +sorted by name. For each symbol, a list of file names is given. If the +symbol is defined, the first file listed is the location of the +definition. The remaining files contain references to the symbol. + +


--no-define-common
This option inhibits the assignment of addresses to common symbols. +The script command INHIBIT_COMMON_ALLOCATION has the same effect. +See Miscellaneous Commands. + +

The --no-define-common option allows decoupling +the decision to assign addresses to Common symbols from the choice +of the output file type; otherwise a non-Relocatable output type +forces assigning addresses to Common symbols. +Using --no-define-common allows Common symbols that are referenced +from a shared library to be assigned addresses only in the main program. +This eliminates the unused duplicate space in the shared library, +and also prevents any possible confusion over resolving to the wrong +duplicate when there are many dynamic modules with specialized search +paths for runtime symbol resolution. + +


--defsym symbol=expression
Create a global symbol in the output file, containing the absolute +address given by expression. You may use this option as many +times as necessary to define multiple symbols in the command line. A +limited form of arithmetic is supported for the expression in this +context: you may give a hexadecimal constant or the name of an existing +symbol, or use + and - to add or subtract hexadecimal +constants or symbols. If you need more elaborate expressions, consider +using the linker command language from a script (see Assignment: Symbol Definitions). Note: there should be no white +space between symbol, the equals sign (“<=>”), and +expression. + +


--demangle[=style]
--no-demangle
These options control whether to demangle symbol names in error messages +and other output. When the linker is told to demangle, it tries to +present symbol names in a readable fashion: it strips leading +underscores if they are used by the object file format, and converts C++ +mangled symbol names into user readable names. Different compilers have +different mangling styles. The optional demangling style argument can be used +to choose an appropriate demangling style for your compiler. The linker will +demangle by default unless the environment variable COLLECT_NO_DEMANGLE +is set. These options may be used to override the default. + +


--dynamic-linker file
Set the name of the dynamic linker. This is only meaningful when +generating dynamically linked ELF executables. The default dynamic +linker is normally correct; don't use this unless you know what you are +doing. + +


--fatal-warnings
--no-fatal-warnings
Treat all warnings as errors. The default behaviour can be restored +with the option --no-fatal-warnings. + +


--force-exe-suffix
Make sure that an output file has a .exe suffix. + +

If a successfully built fully linked output file does not have a +.exe or .dll suffix, this option forces the linker to copy +the output file to one of the same name with a .exe suffix. This +option is useful when using unmodified Unix makefiles on a Microsoft +Windows host, since some versions of Windows won't run an image unless +it ends in a .exe suffix. + +


--gc-sections
--no-gc-sections
Enable garbage collection of unused input sections. It is ignored on +targets that do not support this option. The default behaviour (of not +performing this garbage collection) can be restored by specifying +--no-gc-sections on the command line. + +

--gc-sections decides which input sections are used by +examining symbols and relocations. The section containing the entry +symbol and all sections containing symbols undefined on the +command-line will be kept, as will sections containing symbols +referenced by dynamic objects. Note that when building shared +libraries, the linker must assume that any visible symbol is +referenced. Once this initial set of sections has been determined, +the linker recursively marks as used any section referenced by their +relocations. See --entry and --undefined. + +

This option can be set when doing a partial link (enabled with option +-r). In this case the root of symbols kept must be explicitely +specified either by an --entry or --undefined option or by +a ENTRY command in the linker script. + +


--print-gc-sections
--no-print-gc-sections
List all sections removed by garbage collection. The listing is +printed on stderr. This option is only effective if garbage +collection has been enabled via the --gc-sections) option. The +default behaviour (of not listing the sections that are removed) can +be restored by specifying --no-print-gc-sections on the command +line. + +


--help
Print a summary of the command-line options on the standard output and exit. + +


--target-help
Print a summary of all target specific options on the standard output and exit. + +


-Map mapfile
Print a link map to the file mapfile. See the description of the +-M option, above. + +


--no-keep-memory
ld normally optimizes for speed over memory usage by caching the +symbol tables of input files in memory. This option tells ld to +instead optimize for memory usage, by rereading the symbol tables as +necessary. This may be required if ld runs out of memory space +while linking a large executable. + +


--no-undefined
-z defs
Report unresolved symbol references from regular object files. This +is done even if the linker is creating a non-symbolic shared library. +The switch --[no-]allow-shlib-undefined controls the +behaviour for reporting unresolved references found in shared +libraries being linked in. + +


--allow-multiple-definition
-z muldefs
Normally when a symbol is defined multiple times, the linker will +report a fatal error. These options allow multiple definitions and the +first definition will be used. + +


--allow-shlib-undefined
--no-allow-shlib-undefined
Allows (the default) or disallows undefined symbols in shared libraries. +This switch is similar to --no-undefined except that it +determines the behaviour when the undefined symbols are in a +shared library rather than a regular object file. It does not affect +how undefined symbols in regular object files are handled. + +

The reason that --allow-shlib-undefined is the default is that +the shared library being specified at link time may not be the same as +the one that is available at load time, so the symbols might actually be +resolvable at load time. Plus there are some systems, (eg BeOS) where +undefined symbols in shared libraries is normal. (The kernel patches +them at load time to select which function is most appropriate +for the current architecture. This is used for example to dynamically +select an appropriate memset function). Apparently it is also normal +for HPPA shared libraries to have undefined symbols. + +


--no-undefined-version
Normally when a symbol has an undefined version, the linker will ignore +it. This option disallows symbols with undefined version and a fatal error +will be issued instead. + +


--default-symver
Create and use a default symbol version (the soname) for unversioned +exported symbols. + +


--default-imported-symver
Create and use a default symbol version (the soname) for unversioned +imported symbols. + +


--no-warn-mismatch
Normally ld will give an error if you try to link together input +files that are mismatched for some reason, perhaps because they have +been compiled for different processors or for different endiannesses. +This option tells ld that it should silently permit such possible +errors. This option should only be used with care, in cases when you +have taken some special action that ensures that the linker errors are +inappropriate. + +


--no-warn-search-mismatch
Normally ld will give a warning if it finds an incompatible +library during a library search. This option silences the warning. + +


--no-whole-archive
Turn off the effect of the --whole-archive option for subsequent +archive files. + +


--noinhibit-exec
Retain the executable output file whenever it is still usable. +Normally, the linker will not produce an output file if it encounters +errors during the link process; it exits without writing an output file +when it issues any error whatsoever. + +


-nostdlib
Only search library directories explicitly specified on the +command line. Library directories specified in linker scripts +(including linker scripts specified on the command line) are ignored. + +


--oformat output-format
ld may be configured to support more than one kind of object +file. If your ld is configured this way, you can use the +--oformat option to specify the binary format for the output +object file. Even when ld is configured to support alternative +object formats, you don't usually need to specify this, as ld +should be configured to produce as a default output format the most +usual format on each machine. output-format is a text string, the +name of a particular format supported by the BFD libraries. (You can +list the available binary formats with objdump -i.) The script +command OUTPUT_FORMAT can also specify the output format, but +this option overrides it. See BFD. + +


-pie
--pic-executable
Create a position independent executable. This is currently only supported on +ELF platforms. Position independent executables are similar to shared +libraries in that they are relocated by the dynamic linker to the virtual +address the OS chooses for them (which can vary between invocations). Like +normal dynamically linked executables they can be executed and symbols +defined in the executable cannot be overridden by shared libraries. + +


-qmagic
This option is ignored for Linux compatibility. + +


-Qy
This option is ignored for SVR4 compatibility. + +


--relax
An option with machine dependent effects. +This option is only supported on a few targets. +See ld and the H8/300. +See ld and the Intel 960 family. +See ld and Xtensa Processors. +See ld and the 68HC11 and 68HC12. +See ld and PowerPC 32-bit ELF Support. + +

On some platforms, the --relax option performs global +optimizations that become possible when the linker resolves addressing +in the program, such as relaxing address modes and synthesizing new +instructions in the output object file. + +

On some platforms these link time global optimizations may make symbolic +debugging of the resulting executable impossible. +This is known to be +the case for the Matsushita MN10200 and MN10300 family of processors. + +

On platforms where this is not supported, --relax is accepted, +but ignored. + +


--retain-symbols-file filename
Retain only the symbols listed in the file filename, +discarding all others. filename is simply a flat file, with one +symbol name per line. This option is especially useful in environments +(such as VxWorks) +where a large global symbol table is accumulated gradually, to conserve +run-time memory. + +

--retain-symbols-file does not discard undefined symbols, +or symbols needed for relocations. + +

You may only specify --retain-symbols-file once in the command +line. It overrides -s and -S. + +

-rpath dir
Add a directory to the runtime library search path. This is used when +linking an ELF executable with shared objects. All -rpath +arguments are concatenated and passed to the runtime linker, which uses +them to locate shared objects at runtime. The -rpath option is +also used when locating shared objects which are needed by shared +objects explicitly included in the link; see the description of the +-rpath-link option. If -rpath is not used when linking an +ELF executable, the contents of the environment variable +LD_RUN_PATH will be used if it is defined. + +

The -rpath option may also be used on SunOS. By default, on +SunOS, the linker will form a runtime search patch out of all the +-L options it is given. If a -rpath option is used, the +runtime search path will be formed exclusively using the -rpath +options, ignoring the -L options. This can be useful when using +gcc, which adds many -L options which may be on NFS mounted +file systems. + +

For compatibility with other ELF linkers, if the -R option is +followed by a directory name, rather than a file name, it is treated as +the -rpath option. + +


-rpath-link DIR
When using ELF or SunOS, one shared library may require another. This +happens when an ld -shared link includes a shared library as one +of the input files. + +

When the linker encounters such a dependency when doing a non-shared, +non-relocatable link, it will automatically try to locate the required +shared library and include it in the link, if it is not included +explicitly. In such a case, the -rpath-link option +specifies the first set of directories to search. The +-rpath-link option may specify a sequence of directory names +either by specifying a list of names separated by colons, or by +appearing multiple times. + +

This option should be used with caution as it overrides the search path +that may have been hard compiled into a shared library. In such a case it +is possible to use unintentionally a different search path than the +runtime linker would do. + +

The linker uses the following search paths to locate required shared +libraries: +

    +
  1. Any directories specified by -rpath-link options. +
  2. Any directories specified by -rpath options. The difference +between -rpath and -rpath-link is that directories +specified by -rpath options are included in the executable and +used at runtime, whereas the -rpath-link option is only effective +at link time. Searching -rpath in this way is only supported +by native linkers and cross linkers which have been configured with +the --with-sysroot option. +
  3. On an ELF system, for native linkers, if the -rpath and +-rpath-link options were not used, search the contents of the +environment variable LD_RUN_PATH. +
  4. On SunOS, if the -rpath option was not used, search any +directories specified using -L options. +
  5. For a native linker, the search the contents of the environment +variable LD_LIBRARY_PATH. +
  6. For a native ELF linker, the directories in DT_RUNPATH or +DT_RPATH of a shared library are searched for shared +libraries needed by it. The DT_RPATH entries are ignored if +DT_RUNPATH entries exist. +
  7. The default directories, normally /lib and /usr/lib. +
  8. For a native linker on an ELF system, if the file /etc/ld.so.conf +exists, the list of directories found in that file. +
+ +

If the required shared library is not found, the linker will issue a +warning and continue with the link. + +


-shared
-Bshareable
Create a shared library. This is currently only supported on ELF, XCOFF +and SunOS platforms. On SunOS, the linker will automatically create a +shared library if the -e option is not used and there are +undefined symbols in the link. + +
--sort-common [= ascending | descending]
This option tells ld to sort the common symbols by alignment in +ascending or descending order when it places them in the appropriate output +sections. The symbol alignments considered are sixteen-byte or larger, +eight-byte, four-byte, two-byte, and one-byte. This is to prevent gaps +between symbols due to alignment constraints. If no sorting order is +specified, then descending order is assumed. + +


--sort-section name
This option will apply SORT_BY_NAME to all wildcard section +patterns in the linker script. + +


--sort-section alignment
This option will apply SORT_BY_ALIGNMENT to all wildcard section +patterns in the linker script. + +


--split-by-file [size]
Similar to --split-by-reloc but creates a new output section for +each input file when size is reached. size defaults to a +size of 1 if not given. + +


--split-by-reloc [count]
Tries to creates extra sections in the output file so that no single +output section in the file contains more than count relocations. +This is useful when generating huge relocatable files for downloading into +certain real time kernels with the COFF object file format; since COFF +cannot represent more than 65535 relocations in a single section. Note +that this will fail to work with object file formats which do not +support arbitrary sections. The linker will not split up individual +input sections for redistribution, so if a single input section contains +more than count relocations one output section will contain that +many relocations. count defaults to a value of 32768. + +


--stats
Compute and display statistics about the operation of the linker, such +as execution time and memory usage. + +


--sysroot=directory
Use directory as the location of the sysroot, overriding the +configure-time default. This option is only supported by linkers +that were configured using --with-sysroot. + +


--traditional-format
For some targets, the output of ld is different in some ways from +the output of some existing linker. This switch requests ld to +use the traditional format instead. + +

For example, on SunOS, ld combines duplicate entries in the +symbol string table. This can reduce the size of an output file with +full debugging information by over 30 percent. Unfortunately, the SunOS +dbx program can not read the resulting program (gdb has no +trouble). The --traditional-format switch tells ld to not +combine duplicate entries. + +


--section-start sectionname=org
Locate a section in the output file at the absolute +address given by org. You may use this option as many +times as necessary to locate multiple sections in the command +line. +org must be a single hexadecimal integer; +for compatibility with other linkers, you may omit the leading +0x usually associated with hexadecimal values. Note: there +should be no white space between sectionname, the equals +sign (“<=>”), and org. + +


-Tbss org
-Tdata org
-Ttext org
Same as –section-start, with .bss, .data or +.text as the sectionname. + +


--unresolved-symbols=method
Determine how to handle unresolved symbols. There are four possible +values for method: + +
+
ignore-all
Do not report any unresolved symbols. + +
report-all
Report all unresolved symbols. This is the default. + +
ignore-in-object-files
Report unresolved symbols that are contained in shared libraries, but +ignore them if they come from regular object files. + +
ignore-in-shared-libs
Report unresolved symbols that come from regular object files, but +ignore them if they come from shared libraries. This can be useful +when creating a dynamic binary and it is known that all the shared +libraries that it should be referencing are included on the linker's +command line. +
+ +

The behaviour for shared libraries on their own can also be controlled +by the --[no-]allow-shlib-undefined option. + +

Normally the linker will generate an error message for each reported +unresolved symbol but the option --warn-unresolved-symbols +can change this to a warning. + +


--dll-verbose
--verbose
Display the version number for ld and list the linker emulations +supported. Display which input files can and cannot be opened. Display +the linker script being used by the linker. + +

--version-script=version-scriptfile
Specify the name of a version script to the linker. This is typically +used when creating shared libraries to specify additional information +about the version hierarchy for the library being created. This option +is only meaningful on ELF platforms which support shared libraries. +See VERSION. + +


--warn-common
Warn when a common symbol is combined with another common symbol or with +a symbol definition. Unix linkers allow this somewhat sloppy practise, +but linkers on some other operating systems do not. This option allows +you to find potential problems from combining global symbols. +Unfortunately, some C libraries use this practise, so you may get some +warnings about symbols in the libraries as well as in your programs. + +

There are three kinds of global symbols, illustrated here by C examples: + +

+
int i = 1;
A definition, which goes in the initialized data section of the output +file. + +
extern int i;
An undefined reference, which does not allocate space. +There must be either a definition or a common symbol for the +variable somewhere. + +
int i;
A common symbol. If there are only (one or more) common symbols for a +variable, it goes in the uninitialized data area of the output file. +The linker merges multiple common symbols for the same variable into a +single symbol. If they are of different sizes, it picks the largest +size. The linker turns a common symbol into a declaration, if there is +a definition of the same variable. +
+ +

The --warn-common option can produce five kinds of warnings. +Each warning consists of a pair of lines: the first describes the symbol +just encountered, and the second describes the previous symbol +encountered with the same name. One or both of the two symbols will be +a common symbol. + +

    +
  1. Turning a common symbol into a reference, because there is already a +definition for the symbol. +
                   file(section): warning: common of `symbol'
    +                  overridden by definition
    +               file(section): warning: defined here
    +          
    +
  2. Turning a common symbol into a reference, because a later definition for +the symbol is encountered. This is the same as the previous case, +except that the symbols are encountered in a different order. +
                   file(section): warning: definition of `symbol'
    +                  overriding common
    +               file(section): warning: common is here
    +          
    +
  3. Merging a common symbol with a previous same-sized common symbol. +
                   file(section): warning: multiple common
    +                  of `symbol'
    +               file(section): warning: previous common is here
    +          
    +
  4. Merging a common symbol with a previous larger common symbol. +
                   file(section): warning: common of `symbol'
    +                  overridden by larger common
    +               file(section): warning: larger common is here
    +          
    +
  5. Merging a common symbol with a previous smaller common symbol. This is +the same as the previous case, except that the symbols are +encountered in a different order. +
                   file(section): warning: common of `symbol'
    +                  overriding smaller common
    +               file(section): warning: smaller common is here
    +          
    +
+ +


--warn-constructors
Warn if any global constructors are used. This is only useful for a few +object file formats. For formats like COFF or ELF, the linker can not +detect the use of global constructors. + +


--warn-multiple-gp
Warn if multiple global pointer values are required in the output file. +This is only meaningful for certain processors, such as the Alpha. +Specifically, some processors put large-valued constants in a special +section. A special register (the global pointer) points into the middle +of this section, so that constants can be loaded efficiently via a +base-register relative addressing mode. Since the offset in +base-register relative mode is fixed and relatively small (e.g., 16 +bits), this limits the maximum size of the constant pool. Thus, in +large programs, it is often necessary to use multiple global pointer +values in order to be able to address all possible constants. This +option causes a warning to be issued whenever this case occurs. + +


--warn-once
Only warn once for each undefined symbol, rather than once per module +which refers to it. + +


--warn-section-align
Warn if the address of an output section is changed because of +alignment. Typically, the alignment will be set by an input section. +The address will only be changed if it not explicitly specified; that +is, if the SECTIONS command does not specify a start address for +the section (see SECTIONS). + +


--warn-shared-textrel
Warn if the linker adds a DT_TEXTREL to a shared object. + +


--warn-unresolved-symbols
If the linker is going to report an unresolved symbol (see the option +--unresolved-symbols) it will normally generate an error. +This option makes it generate a warning instead. + +


--error-unresolved-symbols
This restores the linker's default behaviour of generating errors when +it is reporting unresolved symbols. + +


--whole-archive
For each archive mentioned on the command line after the +--whole-archive option, include every object file in the archive +in the link, rather than searching the archive for the required object +files. This is normally used to turn an archive file into a shared +library, forcing every object to be included in the resulting shared +library. This option may be used more than once. + +

Two notes when using this option from gcc: First, gcc doesn't know +about this option, so you have to use -Wl,-whole-archive. +Second, don't forget to use -Wl,-no-whole-archive after your +list of archives, because gcc will add its own list of archives to +your link and you may not want this flag to affect those as well. + +


--wrap symbol
Use a wrapper function for symbol. Any undefined reference to +symbol will be resolved to __wrap_symbol. Any +undefined reference to __real_symbol will be resolved to +symbol. + +

This can be used to provide a wrapper for a system function. The +wrapper function should be called __wrap_symbol. If it +wishes to call the system function, it should call +__real_symbol. + +

Here is a trivial example: + +

          void *
+          __wrap_malloc (size_t c)
+          {
+            printf ("malloc called with %zu\n", c);
+            return __real_malloc (c);
+          }
+     
+

If you link other code with this file using --wrap malloc, then +all calls to malloc will call the function __wrap_malloc +instead. The call to __real_malloc in __wrap_malloc will +call the real malloc function. + +

You may wish to provide a __real_malloc function as well, so that +links without the --wrap option will succeed. If you do this, +you should not put the definition of __real_malloc in the same +file as __wrap_malloc; if you do, the assembler may resolve the +call before the linker has a chance to wrap it to malloc. + +


--eh-frame-hdr
Request creation of .eh_frame_hdr section and ELF +PT_GNU_EH_FRAME segment header. + +


--enable-new-dtags
--disable-new-dtags
This linker can create the new dynamic tags in ELF. But the older ELF +systems may not understand them. If you specify +--enable-new-dtags, the dynamic tags will be created as needed. +If you specify --disable-new-dtags, no new dynamic tags will be +created. By default, the new dynamic tags are not created. Note that +those options are only available for ELF systems. + +


--hash-size=number
Set the default size of the linker's hash tables to a prime number +close to number. Increasing this value can reduce the length of +time it takes the linker to perform its tasks, at the expense of +increasing the linker's memory requirements. Similarly reducing this +value can reduce the memory requirements at the expense of speed. + +


--hash-style=style
Set the type of linker's hash table(s). style can be either +sysv for classic ELF .hash section, gnu for +new style GNU .gnu.hash section or both for both +the classic ELF .hash and new style GNU .gnu.hash +hash tables. The default is sysv. + +


--reduce-memory-overheads
This option reduces memory requirements at ld runtime, at the expense of +linking speed. This was introduced to select the old O(n^2) algorithm +for link map file generation, rather than the new O(n) algorithm which uses +about 40% more memory for symbol storage. + +

Another effect of the switch is to set the default hash table size to +1021, which again saves memory at the cost of lengthening the linker's +run time. This is not done however if the --hash-size switch +has been used. + +

The --reduce-memory-overheads switch may be also be used to +enable other tradeoffs in future versions of the linker. + +


--build-id
--build-id=style
Request creation of .note.gnu.build-id ELF note section. +The contents of the note are unique bits identifying this linked +file. style can be uuid to use 128 random bits, +sha1 to use a 160-bit SHA1 hash on the normative +parts of the output contents, md5 to use a 128-bit +MD5 hash on the normative parts of the output contents, or +0xhexstring to use a chosen bit string specified as +an even number of hexadecimal digits (- and : +characters between digit pairs are ignored). If style is +omitted, sha1 is used. + +

The md5 and sha1 styles produces an identifier +that is always the same in an identical output file, but will be +unique among all nonidentical output files. It is not intended +to be compared as a checksum for the file's contents. A linked +file may be changed later by other tools, but the build ID bit +string identifying the original linked file does not change. + +

Passing none for style disables the setting from any +--build-id options earlier on the command line. +

+ + +

2.1.1 Options Specific to i386 PE Targets

+ + +

The i386 PE linker supports the -shared option, which causes +the output to be a dynamically linked library (DLL) instead of a +normal executable. You should name the output *.dll when you +use this option. In addition, the linker fully supports the standard +*.def files, which may be specified on the linker command line +like an object file (in fact, it should precede archives it exports +symbols from, to ensure that they get linked in, just like a normal +object file). + +

In addition to the options common to all targets, the i386 PE linker +support additional command line options that are specific to the i386 +PE target. Options that take values may be separated from their +values by either a space or an equals sign. + + + +

--add-stdcall-alias
If given, symbols with a stdcall suffix (@nn) will be exported +as-is and also with the suffix stripped. +[This option is specific to the i386 PE targeted port of the linker] + +


--base-file file
Use file as the name of a file in which to save the base +addresses of all the relocations needed for generating DLLs with +dlltool. +[This is an i386 PE specific option] + +


--dll
Create a DLL instead of a regular executable. You may also use +-shared or specify a LIBRARY in a given .def +file. +[This option is specific to the i386 PE targeted port of the linker] + +


--enable-stdcall-fixup
--disable-stdcall-fixup
If the link finds a symbol that it cannot resolve, it will attempt to +do “fuzzy linking” by looking for another defined symbol that differs +only in the format of the symbol name (cdecl vs stdcall) and will +resolve that symbol by linking to the match. For example, the +undefined symbol _foo might be linked to the function +_foo@12, or the undefined symbol _bar@16 might be linked +to the function _bar. When the linker does this, it prints a +warning, since it normally should have failed to link, but sometimes +import libraries generated from third-party dlls may need this feature +to be usable. If you specify --enable-stdcall-fixup, this +feature is fully enabled and warnings are not printed. If you specify +--disable-stdcall-fixup, this feature is disabled and such +mismatches are considered to be errors. +[This option is specific to the i386 PE targeted port of the linker] + +


--export-all-symbols
If given, all global symbols in the objects used to build a DLL will +be exported by the DLL. Note that this is the default if there +otherwise wouldn't be any exported symbols. When symbols are +explicitly exported via DEF files or implicitly exported via function +attributes, the default is to not export anything else unless this +option is given. Note that the symbols DllMain@12, +DllEntryPoint@0, DllMainCRTStartup@12, and +impure_ptr will not be automatically +exported. Also, symbols imported from other DLLs will not be +re-exported, nor will symbols specifying the DLL's internal layout +such as those beginning with _head_ or ending with +_iname. In addition, no symbols from libgcc, +libstd++, libmingw32, or crtX.o will be exported. +Symbols whose names begin with __rtti_ or __builtin_ will +not be exported, to help with C++ DLLs. Finally, there is an +extensive list of cygwin-private symbols that are not exported +(obviously, this applies on when building DLLs for cygwin targets). +These cygwin-excludes are: _cygwin_dll_entry@12, +_cygwin_crt0_common@8, _cygwin_noncygwin_dll_entry@12, +_fmode, _impure_ptr, cygwin_attach_dll, +cygwin_premain0, cygwin_premain1, cygwin_premain2, +cygwin_premain3, and environ. +[This option is specific to the i386 PE targeted port of the linker] + +


--exclude-symbols symbol,symbol,...
Specifies a list of symbols which should not be automatically +exported. The symbol names may be delimited by commas or colons. +[This option is specific to the i386 PE targeted port of the linker] + +


--file-alignment
Specify the file alignment. Sections in the file will always begin at +file offsets which are multiples of this number. This defaults to +512. +[This option is specific to the i386 PE targeted port of the linker] + +


--heap reserve
--heap reserve,commit
Specify the number of bytes of memory to reserve (and optionally commit) +to be used as heap for this program. The default is 1Mb reserved, 4K +committed. +[This option is specific to the i386 PE targeted port of the linker] + +


--image-base value
Use value as the base address of your program or dll. This is +the lowest memory location that will be used when your program or dll +is loaded. To reduce the need to relocate and improve performance of +your dlls, each should have a unique base address and not overlap any +other dlls. The default is 0x400000 for executables, and 0x10000000 +for dlls. +[This option is specific to the i386 PE targeted port of the linker] + +


--kill-at
If given, the stdcall suffixes (@nn) will be stripped from +symbols before they are exported. +[This option is specific to the i386 PE targeted port of the linker] + +


--large-address-aware
If given, the appropriate bit in the “Characteristics” field of the COFF +header is set to indicate that this executable supports virtual addresses +greater than 2 gigabytes. This should be used in conjunction with the /3GB +or /USERVA=value megabytes switch in the “[operating systems]” +section of the BOOT.INI. Otherwise, this bit has no effect. +[This option is specific to PE targeted ports of the linker] + +


--major-image-version value
Sets the major number of the “image version”. Defaults to 1. +[This option is specific to the i386 PE targeted port of the linker] + +


--major-os-version value
Sets the major number of the “os version”. Defaults to 4. +[This option is specific to the i386 PE targeted port of the linker] + +


--major-subsystem-version value
Sets the major number of the “subsystem version”. Defaults to 4. +[This option is specific to the i386 PE targeted port of the linker] + +


--minor-image-version value
Sets the minor number of the “image version”. Defaults to 0. +[This option is specific to the i386 PE targeted port of the linker] + +


--minor-os-version value
Sets the minor number of the “os version”. Defaults to 0. +[This option is specific to the i386 PE targeted port of the linker] + +


--minor-subsystem-version value
Sets the minor number of the “subsystem version”. Defaults to 0. +[This option is specific to the i386 PE targeted port of the linker] + +


--output-def file
The linker will create the file file which will contain a DEF +file corresponding to the DLL the linker is generating. This DEF file +(which should be called *.def) may be used to create an import +library with dlltool or may be used as a reference to +automatically or implicitly exported symbols. +[This option is specific to the i386 PE targeted port of the linker] + +


--out-implib file
The linker will create the file file which will contain an +import lib corresponding to the DLL the linker is generating. This +import lib (which should be called *.dll.a or *.a +may be used to link clients against the generated DLL; this behaviour +makes it possible to skip a separate dlltool import library +creation step. +[This option is specific to the i386 PE targeted port of the linker] + +


--enable-auto-image-base
Automatically choose the image base for DLLs, unless one is specified +using the --image-base argument. By using a hash generated +from the dllname to create unique image bases for each DLL, in-memory +collisions and relocations which can delay program execution are +avoided. +[This option is specific to the i386 PE targeted port of the linker] + +


--disable-auto-image-base
Do not automatically generate a unique image base. If there is no +user-specified image base (--image-base) then use the platform +default. +[This option is specific to the i386 PE targeted port of the linker] + +


--dll-search-prefix string
When linking dynamically to a dll without an import library, +search for <string><basename>.dll in preference to +lib<basename>.dll. This behaviour allows easy distinction +between DLLs built for the various "subplatforms": native, cygwin, +uwin, pw, etc. For instance, cygwin DLLs typically use +--dll-search-prefix=cyg. +[This option is specific to the i386 PE targeted port of the linker] + +


--enable-auto-import
Do sophisticated linking of _symbol to __imp__symbol for +DATA imports from DLLs, and create the necessary thunking symbols when +building the import libraries with those DATA exports. Note: Use of the +'auto-import' extension will cause the text section of the image file +to be made writable. This does not conform to the PE-COFF format +specification published by Microsoft. + +

Note - use of the 'auto-import' extension will also cause read only +data which would normally be placed into the .rdata section to be +placed into the .data section instead. This is in order to work +around a problem with consts that is described here: +http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html + +

Using 'auto-import' generally will 'just work' – but sometimes you may +see this message: + +

"variable '<var>' can't be auto-imported. Please read the +documentation for ld's --enable-auto-import for details." + +

This message occurs when some (sub)expression accesses an address +ultimately given by the sum of two constants (Win32 import tables only +allow one). Instances where this may occur include accesses to member +fields of struct variables imported from a DLL, as well as using a +constant index into an array variable imported from a DLL. Any +multiword variable (arrays, structs, long long, etc) may trigger +this error condition. However, regardless of the exact data type +of the offending exported variable, ld will always detect it, issue +the warning, and exit. + +

There are several ways to address this difficulty, regardless of the +data type of the exported variable: + +

One way is to use –enable-runtime-pseudo-reloc switch. This leaves the task +of adjusting references in your client code for runtime environment, so +this method works only when runtime environment supports this feature. + +

A second solution is to force one of the 'constants' to be a variable – +that is, unknown and un-optimizable at compile time. For arrays, +there are two possibilities: a) make the indexee (the array's address) +a variable, or b) make the 'constant' index a variable. Thus: + +

          extern type extern_array[];
+          extern_array[1] -->
+             { volatile type *t=extern_array; t[1] }
+     
+

or + +

          extern type extern_array[];
+          extern_array[1] -->
+             { volatile int t=1; extern_array[t] }
+     
+

For structs (and most other multiword data types) the only option +is to make the struct itself (or the long long, or the ...) variable: + +

          extern struct s extern_struct;
+          extern_struct.field -->
+             { volatile struct s *t=&extern_struct; t->field }
+     
+

or + +

          extern long long extern_ll;
+          extern_ll -->
+            { volatile long long * local_ll=&extern_ll; *local_ll }
+     
+

A third method of dealing with this difficulty is to abandon +'auto-import' for the offending symbol and mark it with +__declspec(dllimport). However, in practise that +requires using compile-time #defines to indicate whether you are +building a DLL, building client code that will link to the DLL, or +merely building/linking to a static library. In making the choice +between the various methods of resolving the 'direct address with +constant offset' problem, you should consider typical real-world usage: + +

Original: +

          --foo.h
+          extern int arr[];
+          --foo.c
+          #include "foo.h"
+          void main(int argc, char **argv){
+            printf("%d\n",arr[1]);
+          }
+     
+

Solution 1: +

          --foo.h
+          extern int arr[];
+          --foo.c
+          #include "foo.h"
+          void main(int argc, char **argv){
+            /* This workaround is for win32 and cygwin; do not "optimize" */
+            volatile int *parr = arr;
+            printf("%d\n",parr[1]);
+          }
+     
+

Solution 2: +

          --foo.h
+          /* Note: auto-export is assumed (no __declspec(dllexport)) */
+          #if (defined(_WIN32) || defined(__CYGWIN__)) && \
+            !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
+          #define FOO_IMPORT __declspec(dllimport)
+          #else
+          #define FOO_IMPORT
+          #endif
+          extern FOO_IMPORT int arr[];
+          --foo.c
+          #include "foo.h"
+          void main(int argc, char **argv){
+            printf("%d\n",arr[1]);
+          }
+     
+

A fourth way to avoid this problem is to re-code your +library to use a functional interface rather than a data interface +for the offending variables (e.g. set_foo() and get_foo() accessor +functions). +[This option is specific to the i386 PE targeted port of the linker] + +


--disable-auto-import
Do not attempt to do sophisticated linking of _symbol to +__imp__symbol for DATA imports from DLLs. +[This option is specific to the i386 PE targeted port of the linker] + +


--enable-runtime-pseudo-reloc
If your code contains expressions described in –enable-auto-import section, +that is, DATA imports from DLL with non-zero offset, this switch will create +a vector of 'runtime pseudo relocations' which can be used by runtime +environment to adjust references to such data in your client code. +[This option is specific to the i386 PE targeted port of the linker] + +


--disable-runtime-pseudo-reloc
Do not create pseudo relocations for non-zero offset DATA imports from +DLLs. This is the default. +[This option is specific to the i386 PE targeted port of the linker] + +


--enable-extra-pe-debug
Show additional debug info related to auto-import symbol thunking. +[This option is specific to the i386 PE targeted port of the linker] + +


--section-alignment
Sets the section alignment. Sections in memory will always begin at +addresses which are a multiple of this number. Defaults to 0x1000. +[This option is specific to the i386 PE targeted port of the linker] + +


--stack reserve
--stack reserve,commit
Specify the number of bytes of memory to reserve (and optionally commit) +to be used as stack for this program. The default is 2Mb reserved, 4K +committed. +[This option is specific to the i386 PE targeted port of the linker] + +


--subsystem which
--subsystem which:major
--subsystem which:major.minor
Specifies the subsystem under which your program will execute. The +legal values for which are native, windows, +console, posix, and xbox. You may optionally set +the subsystem version also. Numeric values are also accepted for +which. +[This option is specific to the i386 PE targeted port of the linker] + +
+ + +

2.1.2 Options specific to Motorola 68HC11 and 68HC12 targets

+ + +

The 68HC11 and 68HC12 linkers support specific options to control the +memory bank switching mapping and trampoline code generation. + + + +

--no-trampoline
This option disables the generation of trampoline. By default a trampoline +is generated for each far function which is called using a jsr +instruction (this happens when a pointer to a far function is taken). + +


--bank-window name
This option indicates to the linker the name of the memory region in +the MEMORY specification that describes the memory bank window. +The definition of such region is then used by the linker to compute +paging and addresses within the memory window. + +
+ + +

2.1.3 Options specific to Motorola 68K target

+ + +

The following options are supported to control handling of GOT generation +when linking for 68K targets. + + + +

--got=type
This option tells the linker which GOT generation scheme to use. +type should be one of single, negative, +multigot or target. For more information refer to the +Info entry for ld. + +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Orphan-Sections.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Orphan-Sections.html new file mode 100644 index 0000000..156fd55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Orphan-Sections.html @@ -0,0 +1,71 @@ + + +Orphan Sections - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Symbols, +Up: Expressions +



+
+ +

3.10.3 Orphan Sections

+ +

Orphan sections are sections present in the input files which +are not explicitly placed into the output file by the linker +script. The linker will still copy these sections into the +output file, but it has to guess as to where they should be +placed. The linker uses a simple heuristic to do this. It +attempts to place orphan sections after non-orphan sections of the +same attribute, such as code vs data, loadable vs non-loadable, etc. +If there is not enough room to do this then it places +at the end of the file. + +

For ELF targets, the attribute of the section includes section type as +well as section flag. + +

If an orphaned section's name is representable as a C identifier then +the linker will automatically see PROVIDE two symbols: +__start_SECNAME and __end_SECNAME, where SECNAME is the name of the +section. These indicate the start address and end address of the +orphaned section respectively. Note: most section names are not +representable as C identifiers because they contain a . +character. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Address.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Address.html new file mode 100644 index 0000000..9082c43 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Address.html @@ -0,0 +1,87 @@ + + +Output Section Address - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Output Section Name, +Up: SECTIONS +



+
+ +

3.6.3 Output Section Address

+ +

The address is an expression for the VMA (the virtual memory +address) of the output section. If you do not provide address, +the linker will set it based on region if present, or otherwise +based on the current value of the location counter. + +

If you provide address, the address of the output section will be +set to precisely that. If you provide neither address nor +region, then the address of the output section will be set to the +current value of the location counter aligned to the alignment +requirements of the output section. The alignment requirement of the +output section is the strictest alignment of any input section contained +within the output section. + +

For example, +

     .text . : { *(.text) }
+
+

and +

     .text : { *(.text) }
+
+

are subtly different. The first will set the address of the +.text output section to the current value of the location +counter. The second will set it to the current value of the location +counter aligned to the strictest alignment of a .text input +section. + +

The address may be an arbitrary expression; Expressions. +For example, if you want to align the section on a 0x10 byte boundary, +so that the lowest four bits of the section address are zero, you could +do something like this: +

     .text ALIGN(0x10) : { *(.text) }
+
+

This works because ALIGN returns the current location counter +aligned upward to the specified value. + +

Specifying address for a section will change the value of the +location counter. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Attributes.html new file mode 100644 index 0000000..fbc90c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Attributes.html @@ -0,0 +1,74 @@ + + +Output Section Attributes - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Output Section Discarding, +Up: SECTIONS +



+
+ +

3.6.8 Output Section Attributes

+ +

We showed above that the full description of an output section looked +like this: +

     section [address] [(type)] :
+       [AT(lma)] [ALIGN(section_align)] [SUBALIGN(subsection_align)]
+       {
+         output-section-command
+         output-section-command
+         ...
+       } [>region] [AT>lma_region] [:phdr :phdr ...] [=fillexp]
+
+

We've already described section, address, and +output-section-command. In this section we will describe the +remaining section attributes. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Data.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Data.html new file mode 100644 index 0000000..f6364b7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Data.html @@ -0,0 +1,105 @@ + + +Output Section Data - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Input Section, +Up: SECTIONS +



+
+ +

3.6.5 Output Section Data

+ +

You can include explicit bytes of data in an output section by using +BYTE, SHORT, LONG, QUAD, or SQUAD as +an output section command. Each keyword is followed by an expression in +parentheses providing the value to store (see Expressions). The +value of the expression is stored at the current value of the location +counter. + +

The BYTE, SHORT, LONG, and QUAD commands +store one, two, four, and eight bytes (respectively). After storing the +bytes, the location counter is incremented by the number of bytes +stored. + +

For example, this will store the byte 1 followed by the four byte value +of the symbol addr: +

     BYTE(1)
+     LONG(addr)
+
+

When using a 64 bit host or target, QUAD and SQUAD are the +same; they both store an 8 byte, or 64 bit, value. When both host and +target are 32 bits, an expression is computed as 32 bits. In this case +QUAD stores a 32 bit value zero extended to 64 bits, and +SQUAD stores a 32 bit value sign extended to 64 bits. + +

If the object file format of the output file has an explicit endianness, +which is the normal case, the value will be stored in that endianness. +When the object file format does not have an explicit endianness, as is +true of, for example, S-records, the value will be stored in the +endianness of the first input object file. + +

Note—these commands only work inside a section description and not +between them, so the following will produce an error from the linker: +

     SECTIONS { .text : { *(.text) } LONG(1) .data : { *(.data) } }
+

whereas this will work: +

     SECTIONS { .text : { *(.text) ; LONG(1) } .data : { *(.data) } }
+

You may use the FILL command to set the fill pattern for the +current section. It is followed by an expression in parentheses. Any +otherwise unspecified regions of memory within the section (for example, +gaps left due to the required alignment of input sections) are filled +with the value of the expression, repeated as +necessary. A FILL statement covers memory locations after the +point at which it occurs in the section definition; by including more +than one FILL statement, you can have different fill patterns in +different parts of an output section. + +

This example shows how to fill unspecified regions of memory with the +value 0x90: +

     FILL(0x90909090)
+
+

The FILL command is similar to the =fillexp output +section attribute, but it only affects the +part of the section following the FILL command, rather than the +entire section. If both are used, the FILL command takes +precedence. See Output Section Fill, for details on the fill +expression. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Description.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Description.html new file mode 100644 index 0000000..4ddd782 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Description.html @@ -0,0 +1,72 @@ + + +Output Section Description - Untitled + + + + + + + + + + + + +

+

+Next: , +Up: SECTIONS +



+
+ +

3.6.1 Output Section Description

+ +

The full description of an output section looks like this: +

     section [address] [(type)] :
+       [AT(lma)] [ALIGN(section_align)] [SUBALIGN(subsection_align)]
+       {
+         output-section-command
+         output-section-command
+         ...
+       } [>region] [AT>lma_region] [:phdr :phdr ...] [=fillexp]
+
+

Most output sections do not use most of the optional section attributes. + +

The whitespace around section is required, so that the section +name is unambiguous. The colon and the curly braces are also required. +The line breaks and other white space are optional. + +

Each output-section-command may be one of the following: + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Discarding.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Discarding.html new file mode 100644 index 0000000..75b62b9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Discarding.html @@ -0,0 +1,70 @@ + + +Output Section Discarding - Untitled + + + + + + + + + + + + + + + +

3.6.7 Output Section Discarding

+ +

The linker will not create output sections with no contents. This is +for convenience when referring to input sections that may or may not +be present in any of the input files. For example: +

     .foo : { *(.foo) }
+
+

will only create a .foo section in the output file if there is a +.foo section in at least one input file, and if the input +sections are not all empty. Other link script directives that allocate +space in an output section will also create the output section. + +

The linker will ignore address assignments (see Output Section Address) +on discarded output sections, except when the linker script defines +symbols in the output section. In that case the linker will obey +the address assignments, possibly advancing dot even though the +section is discarded. + +

The special output section name /DISCARD/ may be used to discard +input sections. Any input sections which are assigned to an output +section named /DISCARD/ are not included in the output file. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Fill.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Fill.html new file mode 100644 index 0000000..23bac9e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Fill.html @@ -0,0 +1,67 @@ + + +Output Section Fill - Untitled + + + + + + + + + + + + +

+ +
3.6.8.7 Output Section Fill
+ +

You can set the fill pattern for an entire section by using +=fillexp. fillexp is an expression +(see Expressions). Any otherwise unspecified regions of memory +within the output section (for example, gaps left due to the required +alignment of input sections) will be filled with the value, repeated as +necessary. If the fill expression is a simple hex number, ie. a string +of hex digit starting with 0x and without a trailing k or M, then +an arbitrarily long sequence of hex digits can be used to specify the +fill pattern; Leading zeros become part of the pattern too. For all +other cases, including extra parentheses or a unary +, the fill +pattern is the four least significant bytes of the value of the +expression. In all cases, the number is big-endian. + +

You can also change the fill value with a FILL command in the +output section commands; (see Output Section Data). + +

Here is a simple example: +

     SECTIONS { .text : { *(.text) } =0x90909090 }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Keywords.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Keywords.html new file mode 100644 index 0000000..bbd0863 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Keywords.html @@ -0,0 +1,122 @@ + + +Output Section Keywords - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Output Section Data, +Up: SECTIONS +



+
+ +

3.6.6 Output Section Keywords

+ +

There are a couple of keywords which can appear as output section +commands. + + + + + +

CREATE_OBJECT_SYMBOLS
The command tells the linker to create a symbol for each input file. +The name of each symbol will be the name of the corresponding input +file. The section of each symbol will be the output section in which +the CREATE_OBJECT_SYMBOLS command appears. + +

This is conventional for the a.out object file format. It is not +normally used for any other object file format. + +


CONSTRUCTORS
When linking using the a.out object file format, the linker uses an +unusual set construct to support C++ global constructors and +destructors. When linking object file formats which do not support +arbitrary sections, such as ECOFF and XCOFF, the linker will +automatically recognize C++ global constructors and destructors by name. +For these object file formats, the CONSTRUCTORS command tells the +linker to place constructor information in the output section where the +CONSTRUCTORS command appears. The CONSTRUCTORS command is +ignored for other object file formats. + +

The symbol __CTOR_LIST__ marks the start of the global +constructors, and the symbol __CTOR_END__ marks the end. +Similarly, __DTOR_LIST__ and __DTOR_END__ mark +the start and end of the global destructors. The +first word in the list is the number of entries, followed by the address +of each constructor or destructor, followed by a zero word. The +compiler must arrange to actually run the code. For these object file +formats gnu C++ normally calls constructors from a subroutine +__main; a call to __main is automatically inserted into +the startup code for main. gnu C++ normally runs +destructors either by using atexit, or directly from the function +exit. + +

For object file formats such as COFF or ELF which support +arbitrary section names, gnu C++ will normally arrange to put the +addresses of global constructors and destructors into the .ctors +and .dtors sections. Placing the following sequence into your +linker script will build the sort of table which the gnu C++ +runtime code expects to see. + +

                __CTOR_LIST__ = .;
+                LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
+                *(.ctors)
+                LONG(0)
+                __CTOR_END__ = .;
+                __DTOR_LIST__ = .;
+                LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
+                *(.dtors)
+                LONG(0)
+                __DTOR_END__ = .;
+     
+

If you are using the gnu C++ support for initialization priority, +which provides some control over the order in which global constructors +are run, you must sort the constructors at link time to ensure that they +are executed in the correct order. When using the CONSTRUCTORS +command, use SORT_BY_NAME(CONSTRUCTORS) instead. When using the +.ctors and .dtors sections, use *(SORT_BY_NAME(.ctors)) and +*(SORT_BY_NAME(.dtors)) instead of just *(.ctors) and +*(.dtors). + +

Normally the compiler and linker will handle these issues automatically, +and you will not need to concern yourself with them. However, you may +need to consider this if you are using C++ and writing your own linker +scripts. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-LMA.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-LMA.html new file mode 100644 index 0000000..e421521 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-LMA.html @@ -0,0 +1,108 @@ + + +Output Section LMA - Untitled + + + + + + + + + + + + + + + +
3.6.8.2 Output Section LMA
+ +

Every section has a virtual address (VMA) and a load address (LMA); see +Basic Script Concepts. The address expression which may appear in +an output section description sets the VMA (see Output Section Address). + +

The expression lma that follows the AT keyword specifies +the load address of the section. + +

Alternatively, with AT>lma_region expression, you may +specify a memory region for the section's load address. See MEMORY. +Note that if the section has not had a VMA assigned to it then the +linker will use the lma_region as the VMA region as well. + +

If neither AT nor AT> is specified for an allocatable +section, the linker will set the LMA such that the difference between +VMA and LMA for the section is the same as the preceding output +section in the same region. If there is no preceding output section +or the section is not allocatable, the linker will set the LMA equal +to the VMA. +See Output Section Region. + +

This feature is designed to make it easy to build a ROM image. For +example, the following linker script creates three output sections: one +called .text, which starts at 0x1000, one called +.mdata, which is loaded at the end of the .text section +even though its VMA is 0x2000, and one called .bss to hold +uninitialized data at address 0x3000. The symbol _data is +defined with the value 0x2000, which shows that the location +counter holds the VMA value, not the LMA value. + +

     SECTIONS
+       {
+       .text 0x1000 : { *(.text) _etext = . ; }
+       .mdata 0x2000 :
+         AT ( ADDR (.text) + SIZEOF (.text) )
+         { _data = . ; *(.data); _edata = . ;  }
+       .bss 0x3000 :
+         { _bstart = . ;  *(.bss) *(COMMON) ; _bend = . ;}
+     }
+
+

The run-time initialization code for use with a program generated with +this linker script would include something like the following, to copy +the initialized data from the ROM image to its runtime address. Notice +how this code takes advantage of the symbols defined by the linker +script. + +

     extern char _etext, _data, _edata, _bstart, _bend;
+     char *src = &_etext;
+     char *dst = &_data;
+     
+     /* ROM has data at end of text; copy it. */
+     while (dst < &_edata) {
+       *dst++ = *src++;
+     }
+     
+     /* Zero bss */
+     for (dst = &_bstart; dst< &_bend; dst++)
+       *dst = 0;
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Name.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Name.html new file mode 100644 index 0000000..f6d9332 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Name.html @@ -0,0 +1,63 @@ + + +Output Section Name - Untitled + + + + + + + + + + + + + + + +

3.6.2 Output Section Name

+ +

The name of the output section is section. section must +meet the constraints of your output format. In formats which only +support a limited number of sections, such as a.out, the name +must be one of the names supported by the format (a.out, for +example, allows only .text, .data or .bss). If the +output format supports any number of sections, but with numbers and not +names (as is the case for Oasys), the name should be supplied as a +quoted numeric string. A section name may consist of any sequence of +characters, but a name which contains any unusual characters such as +commas must be quoted. + +

The output section name /DISCARD/ is special; Output Section Discarding. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Phdr.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Phdr.html new file mode 100644 index 0000000..67462e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Phdr.html @@ -0,0 +1,61 @@ + + +Output Section Phdr - Untitled + + + + + + + + + + + + + +

+ +
3.6.8.6 Output Section Phdr
+ +

You can assign a section to a previously defined program segment by +using :phdr. See PHDRS. If a section is assigned to +one or more segments, then all subsequent allocated sections will be +assigned to those segments as well, unless they use an explicitly +:phdr modifier. You can use :NONE to tell the +linker to not put the section in any segment at all. + +

Here is a simple example: +

     PHDRS { text PT_LOAD ; }
+     SECTIONS { .text : { *(.text) } :text }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Region.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Region.html new file mode 100644 index 0000000..e5457b9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Region.html @@ -0,0 +1,57 @@ + + +Output Section Region - Untitled + + + + + + + + + + + + + + + +
3.6.8.5 Output Section Region
+ +

You can assign a section to a previously defined region of memory by +using >region. See MEMORY. + +

Here is a simple example: +

     MEMORY { rom : ORIGIN = 0x1000, LENGTH = 0x1000 }
+     SECTIONS { ROM : { *(.text) } >rom }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Type.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Type.html new file mode 100644 index 0000000..af95f68 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Output-Section-Type.html @@ -0,0 +1,71 @@ + + +Output Section Type - Untitled + + + + + + + + + + + + + + +
3.6.8.1 Output Section Type
+ +

Each output section may have a type. The type is a keyword in +parentheses. The following types are defined: + +

+
NOLOAD
The section should be marked as not loadable, so that it will not be +loaded into memory when the program is run. +
DSECT
COPY
INFO
OVERLAY
These type names are supported for backward compatibility, and are +rarely used. They all have the same effect: the section should be +marked as not allocatable, so that no memory is allocated for the +section when the program is run. +
+ +

The linker normally sets the attributes of an output section based on +the input sections which map into it. You can override this by using +the section type. For example, in the script sample below, the +ROM section is addressed at memory location 0 and does not +need to be loaded when the program is run. The contents of the +ROM section will appear in the linker output file as usual. +

     SECTIONS {
+       ROM 0 (NOLOAD) : { ... }
+       ...
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Overlay-Description.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Overlay-Description.html new file mode 100644 index 0000000..d4563c5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Overlay-Description.html @@ -0,0 +1,141 @@ + + +Overlay Description - Untitled + + + + + + + + + + + + +
+

+Previous: Output Section Attributes, +Up: SECTIONS +



+
+ +

3.6.9 Overlay Description

+ +

An overlay description provides an easy way to describe sections which +are to be loaded as part of a single memory image but are to be run at +the same memory address. At run time, some sort of overlay manager will +copy the overlaid sections in and out of the runtime memory address as +required, perhaps by simply manipulating addressing bits. This approach +can be useful, for example, when a certain region of memory is faster +than another. + +

Overlays are described using the OVERLAY command. The +OVERLAY command is used within a SECTIONS command, like an +output section description. The full syntax of the OVERLAY +command is as follows: +

     OVERLAY [start] : [NOCROSSREFS] [AT ( ldaddr )]
+       {
+         secname1
+           {
+             output-section-command
+             output-section-command
+             ...
+           } [:phdr...] [=fill]
+         secname2
+           {
+             output-section-command
+             output-section-command
+             ...
+           } [:phdr...] [=fill]
+         ...
+       } [>region] [:phdr...] [=fill]
+
+

Everything is optional except OVERLAY (a keyword), and each +section must have a name (secname1 and secname2 above). The +section definitions within the OVERLAY construct are identical to +those within the general SECTIONS contruct (see SECTIONS), +except that no addresses and no memory regions may be defined for +sections within an OVERLAY. + +

The sections are all defined with the same starting address. The load +addresses of the sections are arranged such that they are consecutive in +memory starting at the load address used for the OVERLAY as a +whole (as with normal section definitions, the load address is optional, +and defaults to the start address; the start address is also optional, +and defaults to the current value of the location counter). + +

If the NOCROSSREFS keyword is used, and there any references +among the sections, the linker will report an error. Since the sections +all run at the same address, it normally does not make sense for one +section to refer directly to another. See NOCROSSREFS. + +

For each section within the OVERLAY, the linker automatically +provides two symbols. The symbol __load_start_secname is +defined as the starting load address of the section. The symbol +__load_stop_secname is defined as the final load address of +the section. Any characters within secname which are not legal +within C identifiers are removed. C (or assembler) code may use these +symbols to move the overlaid sections around as necessary. + +

At the end of the overlay, the value of the location counter is set to +the start address of the overlay plus the size of the largest section. + +

Here is an example. Remember that this would appear inside a +SECTIONS construct. +

       OVERLAY 0x1000 : AT (0x4000)
+        {
+          .text0 { o1/*.o(.text) }
+          .text1 { o2/*.o(.text) }
+        }
+
+

This will define both .text0 and .text1 to start at +address 0x1000. .text0 will be loaded at address 0x4000, and +.text1 will be loaded immediately after .text0. The +following symbols will be defined if referenced: __load_start_text0, +__load_stop_text0, __load_start_text1, +__load_stop_text1. + +

C code to copy overlay .text1 into the overlay area might look +like the following. + +

       extern char __load_start_text1, __load_stop_text1;
+       memcpy ((char *) 0x1000, &__load_start_text1,
+               &__load_stop_text1 - &__load_start_text1);
+
+

Note that the OVERLAY command is just syntactic sugar, since +everything it does can be done using the more basic commands. The above +example could have been written identically as follows. + +

       .text0 0x1000 : AT (0x4000) { o1/*.o(.text) }
+       PROVIDE (__load_start_text0 = LOADADDR (.text0));
+       PROVIDE (__load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0));
+       .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) }
+       PROVIDE (__load_start_text1 = LOADADDR (.text1));
+       PROVIDE (__load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1));
+       . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Overview.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Overview.html new file mode 100644 index 0000000..dd12d0d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Overview.html @@ -0,0 +1,73 @@ + + +Overview - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 Overview

+ +

+ + +

ld combines a number of object and archive files, relocates +their data and ties up symbol references. Usually the last step in +compiling a program is to run ld. + +

ld accepts Linker Command Language files written in +a superset of AT&T's Link Editor Command Language syntax, +to provide explicit and total control over the linking process. + +

This version of ld uses the general purpose BFD libraries +to operate on object files. This allows ld to read, combine, and +write object files in many different formats—for example, COFF or +a.out. Different formats may be linked together to produce any +available kind of object file. See BFD, for more information. + +

Aside from its flexibility, the gnu linker is more helpful than other +linkers in providing diagnostic information. Many linkers abandon +execution immediately upon encountering an error; whenever possible, +ld continues executing, allowing you to identify other errors +(or, in some cases, to get an output file in spite of the error). + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PHDRS.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PHDRS.html new file mode 100644 index 0000000..6f3266c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PHDRS.html @@ -0,0 +1,172 @@ + + +PHDRS - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: MEMORY, +Up: Scripts +



+
+ +

3.8 PHDRS Command

+ +

The ELF object file format uses program headers, also knows as +segments. The program headers describe how the program should be +loaded into memory. You can print them out by using the objdump +program with the -p option. + +

When you run an ELF program on a native ELF system, the system loader +reads the program headers in order to figure out how to load the +program. This will only work if the program headers are set correctly. +This manual does not describe the details of how the system loader +interprets program headers; for more information, see the ELF ABI. + +

The linker will create reasonable program headers by default. However, +in some cases, you may need to specify the program headers more +precisely. You may use the PHDRS command for this purpose. When +the linker sees the PHDRS command in the linker script, it will +not create any program headers other than the ones specified. + +

The linker only pays attention to the PHDRS command when +generating an ELF output file. In other cases, the linker will simply +ignore PHDRS. + +

This is the syntax of the PHDRS command. The words PHDRS, +FILEHDR, AT, and FLAGS are keywords. + +

     PHDRS
+     {
+       name type [ FILEHDR ] [ PHDRS ] [ AT ( address ) ]
+             [ FLAGS ( flags ) ] ;
+     }
+
+

The name is used only for reference in the SECTIONS command +of the linker script. It is not put into the output file. Program +header names are stored in a separate name space, and will not conflict +with symbol names, file names, or section names. Each program header +must have a distinct name. + +

Certain program header types describe segments of memory which the +system loader will load from the file. In the linker script, you +specify the contents of these segments by placing allocatable output +sections in the segments. You use the :phdr output section +attribute to place a section in a particular segment. See Output Section Phdr. + +

It is normal to put certain sections in more than one segment. This +merely implies that one segment of memory contains another. You may +repeat :phdr, using it once for each segment which should +contain the section. + +

If you place a section in one or more segments using :phdr, +then the linker will place all subsequent allocatable sections which do +not specify :phdr in the same segments. This is for +convenience, since generally a whole set of contiguous sections will be +placed in a single segment. You can use :NONE to override the +default segment and tell the linker to not put the section in any +segment at all. + +

You may use the FILEHDR and PHDRS keywords appear after +the program header type to further describe the contents of the segment. +The FILEHDR keyword means that the segment should include the ELF +file header. The PHDRS keyword means that the segment should +include the ELF program headers themselves. + +

The type may be one of the following. The numbers indicate the +value of the keyword. + +

+
PT_NULL (0)
Indicates an unused program header. + +
PT_LOAD (1)
Indicates that this program header describes a segment to be loaded from +the file. + +
PT_DYNAMIC (2)
Indicates a segment where dynamic linking information can be found. + +
PT_INTERP (3)
Indicates a segment where the name of the program interpreter may be +found. + +
PT_NOTE (4)
Indicates a segment holding note information. + +
PT_SHLIB (5)
A reserved program header type, defined but not specified by the ELF +ABI. + +
PT_PHDR (6)
Indicates a segment where the program headers may be found. + +
expression
An expression giving the numeric type of the program header. This may +be used for types not defined above. +
+ +

You can specify that a segment should be loaded at a particular address +in memory by using an AT expression. This is identical to the +AT command used as an output section attribute (see Output Section LMA). The AT command for a program header overrides the +output section attribute. + +

The linker will normally set the segment flags based on the sections +which comprise the segment. You may use the FLAGS keyword to +explicitly specify the segment flags. The value of flags must be +an integer. It is used to set the p_flags field of the program +header. + +

Here is an example of PHDRS. This shows a typical set of program +headers used on a native ELF system. + +

     PHDRS
+     {
+       headers PT_PHDR PHDRS ;
+       interp PT_INTERP ;
+       text PT_LOAD FILEHDR PHDRS ;
+       data PT_LOAD ;
+       dynamic PT_DYNAMIC ;
+     }
+     
+     SECTIONS
+     {
+       . = SIZEOF_HEADERS;
+       .interp : { *(.interp) } :text :interp
+       .text : { *(.text) } :text
+       .rodata : { *(.rodata) } /* defaults to :text */
+       ...
+       . = . + 0x1000; /* move to a new page in memory */
+       .data : { *(.data) } :data
+       .dynamic : { *(.dynamic) } :data :dynamic
+       ...
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PROVIDE.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PROVIDE.html new file mode 100644 index 0000000..b98cf28 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PROVIDE.html @@ -0,0 +1,77 @@ + + +PROVIDE - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Simple Assignments, +Up: Assignments +



+
+ +

3.5.2 PROVIDE

+ +

In some cases, it is desirable for a linker script to define a symbol +only if it is referenced and is not defined by any object included in +the link. For example, traditional linkers defined the symbol +etext. However, ANSI C requires that the user be able to use +etext as a function name without encountering an error. The +PROVIDE keyword may be used to define a symbol, such as +etext, only if it is referenced but not defined. The syntax is +PROVIDE(symbol = expression). + +

Here is an example of using PROVIDE to define etext: +

     SECTIONS
+     {
+       .text :
+         {
+           *(.text)
+           _etext = .;
+           PROVIDE(etext = .);
+         }
+     }
+
+

In this example, if the program defines _etext (with a leading +underscore), the linker will give a multiple definition error. If, on +the other hand, the program defines etext (with no leading +underscore), the linker will silently use the definition in the program. +If the program references etext but does not define it, the +linker will use the definition in the linker script. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PROVIDE_005fHIDDEN.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PROVIDE_005fHIDDEN.html new file mode 100644 index 0000000..af173bb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PROVIDE_005fHIDDEN.html @@ -0,0 +1,53 @@ + + +PROVIDE_HIDDEN - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: PROVIDE, +Up: Assignments +



+
+ +

3.5.3 PROVIDE_HIDDEN

+ +

Similar to PROVIDE. For ELF targeted ports, the symbol will be +hidden and won't be exported. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PowerPC-ELF32.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PowerPC-ELF32.html new file mode 100644 index 0000000..5737f94 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PowerPC-ELF32.html @@ -0,0 +1,98 @@ + + +PowerPC ELF32 - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: M68HC11/68HC12, +Up: Machine Dependent +



+
+ +

4.9 ld and PowerPC 32-bit ELF Support

+ +

Branches on PowerPC processors are limited to a signed 26-bit +displacement, which may result in ld giving +relocation truncated to fit errors with very large programs. +--relax enables the generation of trampolines that can access +the entire 32-bit address space. These trampolines are inserted at +section boundaries, so may not themselves be reachable if an input +section exceeds 33M in size. + +

+ + + +

--bss-plt
Current PowerPC GCC accepts a -msecure-plt option that +generates code capable of using a newer PLT and GOT layout that has +the security advantage of no executable section ever needing to be +writable and no writable section ever being executable. PowerPC +ld will generate this layout, including stubs to access the +PLT, if all input files (including startup and static libraries) were +compiled with -msecure-plt. --bss-plt forces the old +BSS PLT (and GOT layout) which can give slightly better performance. + +


--secure-plt
ld will use the new PLT and GOT layout if it is linking new +-fpic or -fPIC code, but does not do so automatically +when linking non-PIC code. This option requests the new PLT and GOT +layout. A warning will be given if some object file requires the old +style BSS PLT. + +


--sdata-got
The new secure PLT and GOT are placed differently relative to other +sections compared to older BSS PLT and GOT placement. The location of +.plt must change because the new secure PLT is an initialized +section while the old PLT is uninitialized. The reason for the +.got change is more subtle: The new placement allows +.got to be read-only in applications linked with +-z relro -z now. However, this placement means that +.sdata cannot always be used in shared libraries, because the +PowerPC ABI accesses .sdata in shared libraries from the GOT +pointer. --sdata-got forces the old GOT placement. PowerPC +GCC doesn't use .sdata in shared libraries, so this option is +really only useful for other compilers that may do so. + +


--emit-stub-syms
This option causes ld to label linker stubs with a local +symbol that encodes the stub type and destination. + +


--no-tls-optimize
PowerPC ld normally performs some optimization of code +sequences used to access Thread-Local Storage. Use this option to +disable the optimization. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PowerPC64-ELF64.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PowerPC64-ELF64.html new file mode 100644 index 0000000..91bd409 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/PowerPC64-ELF64.html @@ -0,0 +1,125 @@ + + +PowerPC64 ELF64 - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: PowerPC ELF32, +Up: Machine Dependent +



+
+ +

4.10 ld and PowerPC64 64-bit ELF Support

+ +

+ + + +

--stub-group-size
Long branch stubs, PLT call stubs and TOC adjusting stubs are placed +by ld in stub sections located between groups of input sections. +--stub-group-size specifies the maximum size of a group of input +sections handled by one stub section. Since branch offsets are signed, +a stub section may serve two groups of input sections, one group before +the stub section, and one group after it. However, when using +conditional branches that require stubs, it may be better (for branch +prediction) that stub sections only serve one group of input sections. +A negative value for N chooses this scheme, ensuring that +branches to stubs always use a negative offset. Two special values of +N are recognized, 1 and -1. These both instruct +ld to automatically size input section groups for the branch types +detected, with the same behaviour regarding stub placement as other +positive or negative values of N respectively. + +

Note that --stub-group-size does not split input sections. A +single input section larger than the group size specified will of course +create a larger group (of one section). If input sections are too +large, it may not be possible for a branch to reach its stub. + +


--emit-stub-syms
This option causes ld to label linker stubs with a local +symbol that encodes the stub type and destination. + +


--dotsyms, --no-dotsyms
These two options control how ld interprets version patterns +in a version script. Older PowerPC64 compilers emitted both a +function descriptor symbol with the same name as the function, and a +code entry symbol with the name prefixed by a dot (.). To +properly version a function foo, the version script thus needs +to control both foo and .foo. The option +--dotsyms, on by default, automatically adds the required +dot-prefixed patterns. Use --no-dotsyms to disable this +feature. + +


--no-tls-optimize
PowerPC64 ld normally performs some optimization of code +sequences used to access Thread-Local Storage. Use this option to +disable the optimization. + +


--no-opd-optimize
PowerPC64 ld normally removes .opd section entries +corresponding to deleted link-once functions, or functions removed by +the action of --gc-sections or linker script /DISCARD/. +Use this option to disable .opd optimization. + +


--non-overlapping-opd
Some PowerPC64 compilers have an option to generate compressed +.opd entries spaced 16 bytes apart, overlapping the third word, +the static chain pointer (unused in C) with the first word of the next +entry. This option expands such entries to the full 24 bytes. + +


--no-toc-optimize
PowerPC64 ld normally removes unused .toc section +entries. Such entries are detected by examining relocations that +reference the TOC in code sections. A reloc in a deleted code section +marks a TOC word as unneeded, while a reloc in a kept code section +marks a TOC word as needed. Since the TOC may reference itself, TOC +relocs are also examined. TOC words marked as both needed and +unneeded will of course be kept. TOC words without any referencing +reloc are assumed to be part of a multi-word entry, and are kept or +discarded as per the nearest marked preceding word. This works +reliably for compiler generated code, but may be incorrect if assembly +code is used to insert TOC entries. Use this option to disable the +optimization. + +


--no-multi-toc
By default, PowerPC64 GCC generates code for a TOC model where TOC +entries are accessed with a 16-bit offset from r2. This limits the +total TOC size to 64K. PowerPC64 ld extends this limit by +grouping code sections such that each group uses less than 64K for its +TOC entries, then inserts r2 adjusting stubs between inter-group +calls. ld does not split apart input sections, so cannot +help if a single input file has a .toc section that exceeds +64K, most likely from linking multiple files with ld -r. +Use this option to turn off this feature. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Reporting-Bugs.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Reporting-Bugs.html new file mode 100644 index 0000000..e160422 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Reporting-Bugs.html @@ -0,0 +1,66 @@ + + +Reporting Bugs - Untitled + + + + + + + + + + + + +
+

+Next: , +Previous: BFD, +Up: Top +



+
+ +

6 Reporting Bugs

+ +

+Your bug reports play an essential role in making ld reliable. + +

Reporting a bug may help you by bringing a solution to your problem, or +it may not. But in any case the principal function of a bug report is +to help the entire community by making the next version of ld +work better. Bug reports are your contribution to the maintenance of +ld. + +

In order for a bug report to serve its purpose, you must include the +information that enables us to fix the bug. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/SECTIONS.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/SECTIONS.html new file mode 100644 index 0000000..b755215 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/SECTIONS.html @@ -0,0 +1,98 @@ + + +SECTIONS - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Assignments, +Up: Scripts +



+
+ +

3.6 SECTIONS Command

+ +

The SECTIONS command tells the linker how to map input sections +into output sections, and how to place the output sections in memory. + +

The format of the SECTIONS command is: +

     SECTIONS
+     {
+       sections-command
+       sections-command
+       ...
+     }
+
+

Each sections-command may of be one of the following: + +

    +
  • an ENTRY command (see Entry command) +
  • a symbol assignment (see Assignments) +
  • an output section description +
  • an overlay description +
+ +

The ENTRY command and symbol assignments are permitted inside the +SECTIONS command for convenience in using the location counter in +those commands. This can also make the linker script easier to +understand because you can use those commands at meaningful points in +the layout of the output file. + +

Output section descriptions and overlay descriptions are described +below. + +

If you do not use a SECTIONS command in your linker script, the +linker will place each input section into an identically named output +section in the order that the sections are first encountered in the +input files. If all input sections are present in the first file, for +example, the order of sections in the output file will match the order +in the first input file. The first section will be at address zero. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/SPU-ELF.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/SPU-ELF.html new file mode 100644 index 0000000..e80ff73 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/SPU-ELF.html @@ -0,0 +1,98 @@ + + +SPU ELF - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: PowerPC64 ELF64, +Up: Machine Dependent +



+
+ +

4.11 ld and SPU ELF Support

+ +

+ + + +

--plugin
This option marks an executable as a PIC plugin module. + +


--no-overlays
Normally, ld recognizes calls to functions within overlay +regions, and redirects such calls to an overlay manager via a stub. +ld also provides a built-in overlay manager. This option +turns off all this special overlay handling. + +


--emit-stub-syms
This option causes ld to label overlay stubs with a local +symbol that encodes the stub type and destination. + +


--extra-overlay-stubs
This option causes ld to add overlay call stubs on all +function calls out of overlay regions. Normally stubs are not added +on calls to non-overlay regions. + +


--local-store=lo:hi
ld usually checks that a final executable for SPU fits in +the address range 0 to 256k. This option may be used to change the +range. Disable the check entirely with --local-store=0:0. + +


--stack-analysis
SPU local store space is limited. Over-allocation of stack space +unnecessarily limits space available for code and data, while +under-allocation results in runtime failures. If given this option, +ld will provide an estimate of maximum stack usage. +ld does this by examining symbols in code sections to +determine the extents of functions, and looking at function prologues +for stack adjusting instructions. A call-graph is created by looking +for relocations on branch instructions. The graph is then searched +for the maximum stack usage path. Note that this analysis does not +find calls made via function pointers, and does not handle recursion +and other cycles in the call graph. Stack usage may be +under-estimated if your code makes such calls. Also, stack usage for +dynamic allocation, e.g. alloca, will not be detected. If a link map +is requested, detailed information about each function's stack usage +and calls will be given. + +


--emit-stack-syms
This option, if given along with --stack-analysis will result +in ld emitting stack sizing symbols for each function. +These take the form __stack_<function_name> for global +functions, and __stack_<number>_<function_name> for static +functions. <number> is the section id in hex. The value of +such symbols is the stack requirement for the corresponding function. +The symbol size will be zero, type STT_NOTYPE, binding +STB_LOCAL, and section SHN_ABS. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Script-Format.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Script-Format.html new file mode 100644 index 0000000..67c0894 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Script-Format.html @@ -0,0 +1,67 @@ + + +Script Format - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Basic Script Concepts, +Up: Scripts +



+
+ +

3.2 Linker Script Format

+ +

Linker scripts are text files. + +

You write a linker script as a series of commands. Each command is +either a keyword, possibly followed by arguments, or an assignment to a +symbol. You may separate commands using semicolons. Whitespace is +generally ignored. + +

Strings such as file or format names can normally be entered directly. +If the file name contains a character such as a comma which would +otherwise serve to separate file names, you may put the file name in +double quotes. There is no way to use a double quote character in a +file name. + +

You may include comments in linker scripts just as in C, delimited by +/* and */. As in C, comments are syntactically equivalent +to whitespace. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Scripts.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Scripts.html new file mode 100644 index 0000000..8700cac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Scripts.html @@ -0,0 +1,86 @@ + + +Scripts - Untitled + + + + + + + + + + + + +

+

+Next: , +Previous: Invocation, +Up: Top +



+
+ +

3 Linker Scripts

+ +

Every link is controlled by a linker script. This script is +written in the linker command language. + +

The main purpose of the linker script is to describe how the sections in +the input files should be mapped into the output file, and to control +the memory layout of the output file. Most linker scripts do nothing +more than this. However, when necessary, the linker script can also +direct the linker to perform many other operations, using the commands +described below. + +

The linker always uses a linker script. If you do not supply one +yourself, the linker will use a default script that is compiled into the +linker executable. You can use the --verbose command line option +to display the default linker script. Certain command line options, +such as -r or -N, will affect the default linker script. + +

You may supply your own linker script by using the -T command +line option. When you do this, your linker script will replace the +default linker script. + +

You may also use linker scripts implicitly by naming them as input files +to the linker, as though they were files to be linked. See Implicit Linker Scripts. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Assignments.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Assignments.html new file mode 100644 index 0000000..23fd8e3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Assignments.html @@ -0,0 +1,92 @@ + + +Simple Assignments - Untitled + + + + + + + + + + + + +
+

+Next: , +Up: Assignments +



+
+ +

3.5.1 Simple Assignments

+ +

You may assign to a symbol using any of the C assignment operators: + +

+
symbol = expression ;
symbol += expression ;
symbol -= expression ;
symbol *= expression ;
symbol /= expression ;
symbol <<= expression ;
symbol >>= expression ;
symbol &= expression ;
symbol |= expression ;
+ +

The first case will define symbol to the value of +expression. In the other cases, symbol must already be +defined, and the value will be adjusted accordingly. + +

The special symbol name . indicates the location counter. You +may only use this within a SECTIONS command. See Location Counter. + +

The semicolon after expression is required. + +

Expressions are defined below; see Expressions. + +

You may write symbol assignments as commands in their own right, or as +statements within a SECTIONS command, or as part of an output +section description in a SECTIONS command. + +

The section of the symbol will be set from the section of the +expression; for more information, see Expression Section. + +

Here is an example showing the three different places that symbol +assignments may be used: + +

     floating_point = 0;
+     SECTIONS
+     {
+       .text :
+         {
+           *(.text)
+           _etext = .;
+         }
+       _bdata = (. + 3) & ~ 3;
+       .data : { *(.data) }
+     }
+
+

In this example, the symbol floating_point will be defined as +zero. The symbol _etext will be defined as the address following +the last .text input section. The symbol _bdata will be +defined as the address following the .text output section aligned +upward to a 4 byte boundary. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Commands.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Commands.html new file mode 100644 index 0000000..cafb1fc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Commands.html @@ -0,0 +1,61 @@ + + +Simple Commands - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Simple Example, +Up: Scripts +



+
+ +

3.4 Simple Linker Script Commands

+ +

In this section we describe the simple linker script commands. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Example.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Example.html new file mode 100644 index 0000000..89d9166 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Simple-Example.html @@ -0,0 +1,115 @@ + + +Simple Example - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: Script Format, +Up: Scripts +



+
+ +

3.3 Simple Linker Script Example

+ +

Many linker scripts are fairly simple. + +

The simplest possible linker script has just one command: +SECTIONS. You use the SECTIONS command to describe the +memory layout of the output file. + +

The SECTIONS command is a powerful command. Here we will +describe a simple use of it. Let's assume your program consists only of +code, initialized data, and uninitialized data. These will be in the +.text, .data, and .bss sections, respectively. +Let's assume further that these are the only sections which appear in +your input files. + +

For this example, let's say that the code should be loaded at address +0x10000, and that the data should start at address 0x8000000. Here is a +linker script which will do that: +

     SECTIONS
+     {
+       . = 0x10000;
+       .text : { *(.text) }
+       . = 0x8000000;
+       .data : { *(.data) }
+       .bss : { *(.bss) }
+     }
+
+

You write the SECTIONS command as the keyword SECTIONS, +followed by a series of symbol assignments and output section +descriptions enclosed in curly braces. + +

The first line inside the SECTIONS command of the above example +sets the value of the special symbol ., which is the location +counter. If you do not specify the address of an output section in some +other way (other ways are described later), the address is set from the +current value of the location counter. The location counter is then +incremented by the size of the output section. At the start of the +SECTIONS command, the location counter has the value 0. + +

The second line defines an output section, .text. The colon is +required syntax which may be ignored for now. Within the curly braces +after the output section name, you list the names of the input sections +which should be placed into this output section. The * is a +wildcard which matches any file name. The expression *(.text) +means all .text input sections in all input files. + +

Since the location counter is 0x10000 when the output section +.text is defined, the linker will set the address of the +.text section in the output file to be 0x10000. + +

The remaining lines define the .data and .bss sections in +the output file. The linker will place the .data output section +at address 0x8000000. After the linker places the .data +output section, the value of the location counter will be +0x8000000 plus the size of the .data output section. The +effect is that the linker will place the .bss output section +immediately after the .data output section in memory. + +

The linker will ensure that each output section has the required +alignment, by increasing the location counter if necessary. In this +example, the specified addresses for the .text and .data +sections will probably satisfy any alignment constraints, but the linker +may have to create a small gap between the .data and .bss +sections. + +

That's it! That's a simple and complete linker script. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Source-Code-Reference.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Source-Code-Reference.html new file mode 100644 index 0000000..ca21b80 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Source-Code-Reference.html @@ -0,0 +1,132 @@ + + +Source Code Reference - Untitled + + + + + + + + + + + + +

+

+Previous: PROVIDE_HIDDEN, +Up: Assignments +



+
+ +

3.5.4 Source Code Reference

+ +

Accessing a linker script defined variable from source code is not +intuitive. In particular a linker script symbol is not equivalent to +a variable declaration in a high level language, it is instead a +symbol that does not have a value. + +

Before going further, it is important to note that compilers often +transform names in the source code into different names when they are +stored in the symbol table. For example, Fortran compilers commonly +prepend or append an underscore, and C++ performs extensive name +mangling. Therefore there might be a discrepancy between the name +of a variable as it is used in source code and the name of the same +variable as it is defined in a linker script. For example in C a +linker script variable might be referred to as: + +

       extern int foo;
+
+

But in the linker script it might be defined as: + +

       _foo = 1000;
+
+

In the remaining examples however it is assumed that no name +transformation has taken place. + +

When a symbol is declared in a high level language such as C, two +things happen. The first is that the compiler reserves enough space +in the program's memory to hold the value of the symbol. The +second is that the compiler creates an entry in the program's symbol +table which holds the symbol's address. ie the symbol table +contains the address of the block of memory holding the symbol's +value. So for example the following C declaration, at file scope: + +

       int foo = 1000;
+
+

creates a entry called foo in the symbol table. This entry +holds the address of an int sized block of memory where the +number 1000 is initially stored. + +

When a program references a symbol the compiler generates code that +first accesses the symbol table to find the address of the symbol's +memory block and then code to read the value from that memory block. +So: + +

       foo = 1;
+
+

looks up the symbol foo in the symbol table, gets the address +associated with this symbol and then writes the value 1 into that +address. Whereas: + +

       int * a = & foo;
+
+

looks up the symbol foo in the symbol table, gets it address +and then copies this address into the block of memory associated with +the variable a. + +

Linker scripts symbol declarations, by contrast, create an entry in +the symbol table but do not assign any memory to them. Thus they are +an address without a value. So for example the linker script definition: + +

       foo = 1000;
+
+

creates an entry in the symbol table called foo which holds +the address of memory location 1000, but nothing special is stored at +address 1000. This means that you cannot access the value of a +linker script defined symbol - it has no value - all you can do is +access the address of a linker script defined symbol. + +

Hence when you are using a linker script defined symbol in source code +you should always take the address of the symbol, and never attempt to +use its value. For example suppose you want to copy the contents of a +section of memory called .ROM into a section called .FLASH and the +linker script contains these declarations: + +

       start_of_ROM   = .ROM;
+       end_of_ROM     = .ROM + sizeof (.ROM) - 1;
+       start_of_FLASH = .FLASH;
+
+

Then the C source code to perform the copy would be: + +

       extern char start_of_ROM, end_of_ROM, start_of_FLASH;
+     
+       memcpy (& start_of_FLASH, & start_of_ROM, & end_of_ROM - & start_of_ROM);
+
+

Note the use of the & operators. These are correct. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Symbols.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Symbols.html new file mode 100644 index 0000000..b3a3b84 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Symbols.html @@ -0,0 +1,62 @@ + + +Symbols - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: Constants, +Up: Expressions +



+
+ +

3.10.2 Symbol Names

+ +

Unless quoted, symbol names start with a letter, underscore, or period +and may include letters, digits, underscores, periods, and hyphens. +Unquoted symbol names must not conflict with any keywords. You can +specify a symbol which contains odd characters or has the same name as a +keyword by surrounding the symbol name in double quotes: +

     "SECTION" = 9;
+     "with a space" = "also with a space" + 10;
+
+

Since symbols can contain many non-alphabetic characters, it is safest +to delimit symbols with spaces. For example, A-B is one symbol, +whereas A - B is an expression involving subtraction. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/TI-COFF.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/TI-COFF.html new file mode 100644 index 0000000..6d7268d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/TI-COFF.html @@ -0,0 +1,56 @@ + + +TI COFF - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: SPU ELF, +Up: Machine Dependent +



+
+ +

4.12 ld's Support for Various TI COFF Versions

+ +

The --format switch allows selection of one of the various +TI COFF versions. The latest of this writing is 2; versions 0 and 1 are +also supported. The TI COFF versions also vary in header byte-order +format; ld will read any version or byte order, but the output +header format depends on the default specified by the specific target. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/VERSION.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/VERSION.html new file mode 100644 index 0000000..40736a2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/VERSION.html @@ -0,0 +1,216 @@ + + +VERSION - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: PHDRS, +Up: Scripts +



+
+ +

3.9 VERSION Command

+ +

The linker supports symbol versions when using ELF. Symbol versions are +only useful when using shared libraries. The dynamic linker can use +symbol versions to select a specific version of a function when it runs +a program that may have been linked against an earlier version of the +shared library. + +

You can include a version script directly in the main linker script, or +you can supply the version script as an implicit linker script. You can +also use the --version-script linker option. + +

The syntax of the VERSION command is simply +

     VERSION { version-script-commands }
+
+

The format of the version script commands is identical to that used by +Sun's linker in Solaris 2.5. The version script defines a tree of +version nodes. You specify the node names and interdependencies in the +version script. You can specify which symbols are bound to which +version nodes, and you can reduce a specified set of symbols to local +scope so that they are not globally visible outside of the shared +library. + +

The easiest way to demonstrate the version script language is with a few +examples. + +

     VERS_1.1 {
+     	 global:
+     		 foo1;
+     	 local:
+     		 old*;
+     		 original*;
+     		 new*;
+     };
+     
+     VERS_1.2 {
+     		 foo2;
+     } VERS_1.1;
+     
+     VERS_2.0 {
+     		 bar1; bar2;
+     	 extern "C++" {
+     		 ns::*;
+     		 "int f(int, double)";
+              }
+     } VERS_1.2;
+
+

This example version script defines three version nodes. The first +version node defined is VERS_1.1; it has no other dependencies. +The script binds the symbol foo1 to VERS_1.1. It reduces +a number of symbols to local scope so that they are not visible outside +of the shared library; this is done using wildcard patterns, so that any +symbol whose name begins with old, original, or new +is matched. The wildcard patterns available are the same as those used +in the shell when matching filenames (also known as “globbing”). +However, if you specify the symbol name inside double quotes, then the +name is treated as literal, rather than as a glob pattern. + +

Next, the version script defines node VERS_1.2. This node +depends upon VERS_1.1. The script binds the symbol foo2 +to the version node VERS_1.2. + +

Finally, the version script defines node VERS_2.0. This node +depends upon VERS_1.2. The scripts binds the symbols bar1 +and bar2 are bound to the version node VERS_2.0. + +

When the linker finds a symbol defined in a library which is not +specifically bound to a version node, it will effectively bind it to an +unspecified base version of the library. You can bind all otherwise +unspecified symbols to a given version node by using global: *; +somewhere in the version script. + +

The names of the version nodes have no specific meaning other than what +they might suggest to the person reading them. The 2.0 version +could just as well have appeared in between 1.1 and 1.2. +However, this would be a confusing way to write a version script. + +

Node name can be omitted, provided it is the only version node +in the version script. Such version script doesn't assign any versions to +symbols, only selects which symbols will be globally visible out and which +won't. + +

     { global: foo; bar; local: *; };
+
+

When you link an application against a shared library that has versioned +symbols, the application itself knows which version of each symbol it +requires, and it also knows which version nodes it needs from each +shared library it is linked against. Thus at runtime, the dynamic +loader can make a quick check to make sure that the libraries you have +linked against do in fact supply all of the version nodes that the +application will need to resolve all of the dynamic symbols. In this +way it is possible for the dynamic linker to know with certainty that +all external symbols that it needs will be resolvable without having to +search for each symbol reference. + +

The symbol versioning is in effect a much more sophisticated way of +doing minor version checking that SunOS does. The fundamental problem +that is being addressed here is that typically references to external +functions are bound on an as-needed basis, and are not all bound when +the application starts up. If a shared library is out of date, a +required interface may be missing; when the application tries to use +that interface, it may suddenly and unexpectedly fail. With symbol +versioning, the user will get a warning when they start their program if +the libraries being used with the application are too old. + +

There are several GNU extensions to Sun's versioning approach. The +first of these is the ability to bind a symbol to a version node in the +source file where the symbol is defined instead of in the versioning +script. This was done mainly to reduce the burden on the library +maintainer. You can do this by putting something like: +

     __asm__(".symver original_foo,foo@VERS_1.1");
+
+

in the C source file. This renames the function original_foo to +be an alias for foo bound to the version node VERS_1.1. +The local: directive can be used to prevent the symbol +original_foo from being exported. A .symver directive +takes precedence over a version script. + +

The second GNU extension is to allow multiple versions of the same +function to appear in a given shared library. In this way you can make +an incompatible change to an interface without increasing the major +version number of the shared library, while still allowing applications +linked against the old interface to continue to function. + +

To do this, you must use multiple .symver directives in the +source file. Here is an example: + +

     __asm__(".symver original_foo,foo@");
+     __asm__(".symver old_foo,foo@VERS_1.1");
+     __asm__(".symver old_foo1,foo@VERS_1.2");
+     __asm__(".symver new_foo,foo@@VERS_2.0");
+
+

In this example, foo@ represents the symbol foo bound to the +unspecified base version of the symbol. The source file that contains this +example would define 4 C functions: original_foo, old_foo, +old_foo1, and new_foo. + +

When you have multiple definitions of a given symbol, there needs to be +some way to specify a default version to which external references to +this symbol will be bound. You can do this with the +foo@@VERS_2.0 type of .symver directive. You can only +declare one version of a symbol as the default in this manner; otherwise +you would effectively have multiple definitions of the same symbol. + +

If you wish to bind a reference to a specific version of the symbol +within the shared library, you can use the aliases of convenience +(i.e., old_foo), or you can use the .symver directive to +specifically bind to an external version of the function in question. + +

You can also specify the language in the version script: + +

     VERSION extern "lang" { version-script-commands }
+
+

The supported langs are C, C++, and Java. +The linker will iterate over the list of symbols at the link time and +demangle them according to lang before matching them to the +patterns specified in version-script-commands. + +

Demangled names may contains spaces and other special characters. As +described above, you can use a glob pattern to match demangled names, +or you can use a double-quoted string to match the string exactly. In +the latter case, be aware that minor differences (such as differing +whitespace) between the version script and the demangler output will +cause a mismatch. As the exact string generated by the demangler +might change in the future, even if the mangled name does not, you +should check that all of your version directives are behaving as you +expect when you upgrade. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/WIN32.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/WIN32.html new file mode 100644 index 0000000..5094f67 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/WIN32.html @@ -0,0 +1,431 @@ + + +WIN32 - Untitled + + + + + + + + + + + + + +

+

+Next: , +Previous: TI COFF, +Up: Machine Dependent +



+
+ +

4.13 ld and WIN32 (cygwin/mingw)

+ +

This section describes some of the win32 specific ld issues. +See Command Line Options for detailed description of the +command line options mentioned here. + + + +

import libraries
The standard Windows linker creates and uses so-called import +libraries, which contains information for linking to dll's. They are +regular static archives and are handled as any other static +archive. The cygwin and mingw ports of ld have specific +support for creating such libraries provided with the +--out-implib command line option. + +
exporting DLL symbols
The cygwin/mingw ld has several ways to export symbols for dll's. + +
+
using auto-export functionality
By default ld exports symbols with the auto-export functionality, +which is controlled by the following command line options: + +
    +
  • –export-all-symbols [This is the default] +
  • –exclude-symbols +
  • –exclude-libs +
+ +

If, however, --export-all-symbols is not given explicitly on the +command line, then the default auto-export behavior will be disabled +if either of the following are true: + +

    +
  • A DEF file is used. +
  • Any symbol in any object file was marked with the __declspec(dllexport) attribute. +
+ +
using a DEF file
Another way of exporting symbols is using a DEF file. A DEF file is +an ASCII file containing definitions of symbols which should be +exported when a dll is created. Usually it is named <dll +name>.def and is added as any other object file to the linker's +command line. The file's name must end in .def or .DEF. + +
               gcc -o <output> <objectfiles> <dll name>.def
+          
+

Using a DEF file turns off the normal auto-export behavior, unless the +--export-all-symbols option is also used. + +

Here is an example of a DEF file for a shared library called xyz.dll: + +

               LIBRARY "xyz.dll" BASE=0x20000000
+               
+               EXPORTS
+               foo
+               bar
+               _bar = bar
+               another_foo = abc.dll.afoo
+               var1 DATA
+          
+

This example defines a DLL with a non-default base address and five +symbols in the export table. The third exported symbol _bar is an +alias for the second. The fourth symbol, another_foo is resolved +by "forwarding" to another module and treating it as an alias for +afoo exported from the DLL abc.dll. The final symbol +var1 is declared to be a data object. + +

The optional LIBRARY <name> command indicates the internal +name of the output DLL. If <name> does not include a suffix, +the default library suffix, .DLL is appended. + +

When the .DEF file is used to build an application, rather than a +library, the NAME <name> command should be used instead of +LIBRARY. If <name> does not include a suffix, the default +executable suffix, .EXE is appended. + +

With either LIBRARY <name> or NAME <name> the optional +specification BASE = <number> may be used to specify a +non-default base address for the image. + +

If neither LIBRARY <name> nor NAME <name> is specified, +or they specify an empty string, the internal name is the same as the +filename specified on the command line. + +

The complete specification of an export symbol is: + +

               EXPORTS
+                 ( (  ( <name1> [ = <name2> ] )
+                    | ( <name1> = <module-name> . <external-name>))
+                 [ @ <integer> ] [NONAME] [DATA] [CONSTANT] [PRIVATE] ) *
+          
+

Declares <name1> as an exported symbol from the DLL, or declares +<name1> as an exported alias for <name2>; or declares +<name1> as a "forward" alias for the symbol +<external-name> in the DLL <module-name>. +Optionally, the symbol may be exported by the specified ordinal +<integer> alias. + +

The optional keywords that follow the declaration indicate: + +

NONAME: Do not put the symbol name in the DLL's export table. It +will still be exported by its ordinal alias (either the value specified +by the .def specification or, otherwise, the value assigned by the +linker). The symbol name, however, does remain visible in the import +library (if any), unless PRIVATE is also specified. + +

DATA: The symbol is a variable or object, rather than a function. +The import lib will export only an indirect reference to foo as +the symbol _imp__foo (ie, foo must be resolved as +*_imp__foo). + +

CONSTANT: Like DATA, but put the undecorated foo as +well as _imp__foo into the import library. Both refer to the +read-only import address table's pointer to the variable, not to the +variable itself. This can be dangerous. If the user code fails to add +the dllimport attribute and also fails to explicitly add the +extra indirection that the use of the attribute enforces, the +application will behave unexpectedly. + +

PRIVATE: Put the symbol in the DLL's export table, but do not put +it into the static import library used to resolve imports at link time. The +symbol can still be imported using the LoadLibrary/GetProcAddress +API at runtime or by by using the GNU ld extension of linking directly to +the DLL without an import library. + +

See ld/deffilep.y in the binutils sources for the full specification of +other DEF file statements + +

While linking a shared dll, ld is able to create a DEF file +with the --output-def <file> command line option. + +

Using decorations
Another way of marking symbols for export is to modify the source code +itself, so that when building the DLL each symbol to be exported is +declared as: + +
               __declspec(dllexport) int a_variable
+               __declspec(dllexport) void a_function(int with_args)
+          
+

All such symbols will be exported from the DLL. If, however, +any of the object files in the DLL contain symbols decorated in +this way, then the normal auto-export behavior is disabled, unless +the --export-all-symbols option is also used. + +

Note that object files that wish to access these symbols must not +decorate them with dllexport. Instead, they should use dllimport, +instead: + +

               __declspec(dllimport) int a_variable
+               __declspec(dllimport) void a_function(int with_args)
+          
+

This complicates the structure of library header files, because +when included by the library itself the header must declare the +variables and functions as dllexport, but when included by client +code the header must declare them as dllimport. There are a number +of idioms that are typically used to do this; often client code can +omit the __declspec() declaration completely. See +--enable-auto-import and automatic data imports for more +information. +

+ +


automatic data imports
The standard Windows dll format supports data imports from dlls only +by adding special decorations (dllimport/dllexport), which let the +compiler produce specific assembler instructions to deal with this +issue. This increases the effort necessary to port existing Un*x +code to these platforms, especially for large +c++ libraries and applications. The auto-import feature, which was +initially provided by Paul Sokolovsky, allows one to omit the +decorations to achieve a behavior that conforms to that on POSIX/Un*x +platforms. This feature is enabled with the --enable-auto-import +command-line option, although it is enabled by default on cygwin/mingw. +The --enable-auto-import option itself now serves mainly to +suppress any warnings that are ordinarily emitted when linked objects +trigger the feature's use. + +

auto-import of variables does not always work flawlessly without +additional assistance. Sometimes, you will see this message + +

"variable '<var>' can't be auto-imported. Please read the +documentation for ld's --enable-auto-import for details." + +

The --enable-auto-import documentation explains why this error +occurs, and several methods that can be used to overcome this difficulty. +One of these methods is the runtime pseudo-relocs feature, described +below. + +

For complex variables imported from DLLs (such as structs or classes), +object files typically contain a base address for the variable and an +offset (addend) within the variable–to specify a particular +field or public member, for instance. Unfortunately, the runtime loader used +in win32 environments is incapable of fixing these references at runtime +without the additional information supplied by dllimport/dllexport decorations. +The standard auto-import feature described above is unable to resolve these +references. + +

The --enable-runtime-pseudo-relocs switch allows these references to +be resolved without error, while leaving the task of adjusting the references +themselves (with their non-zero addends) to specialized code provided by the +runtime environment. Recent versions of the cygwin and mingw environments and +compilers provide this runtime support; older versions do not. However, the +support is only necessary on the developer's platform; the compiled result will +run without error on an older system. + +

--enable-runtime-pseudo-relocs is not the default; it must be explicitly +enabled as needed. + +


direct linking to a dll
The cygwin/mingw ports of ld support the direct linking, +including data symbols, to a dll without the usage of any import +libraries. This is much faster and uses much less memory than does the +traditional import library method, especially when linking large +libraries or applications. When ld creates an import lib, each +function or variable exported from the dll is stored in its own bfd, even +though a single bfd could contain many exports. The overhead involved in +storing, loading, and processing so many bfd's is quite large, and explains the +tremendous time, memory, and storage needed to link against particularly +large or complex libraries when using import libs. + +

Linking directly to a dll uses no extra command-line switches other than +-L and -l, because ld already searches for a number +of names to match each library. All that is needed from the developer's +perspective is an understanding of this search, in order to force ld to +select the dll instead of an import library. + +

For instance, when ld is called with the argument -lxxx it will attempt +to find, in the first directory of its search path, + +

          libxxx.dll.a
+          xxx.dll.a
+          libxxx.a
+          xxx.lib
+          cygxxx.dll (*)
+          libxxx.dll
+          xxx.dll
+     
+

before moving on to the next directory in the search path. + +

(*) Actually, this is not cygxxx.dll but in fact is <prefix>xxx.dll, +where <prefix> is set by the ld option +--dll-search-prefix=<prefix>. In the case of cygwin, the standard gcc spec +file includes --dll-search-prefix=cyg, so in effect we actually search for +cygxxx.dll. + +

Other win32-based unix environments, such as mingw or pw32, may use other +<prefix>es, although at present only cygwin makes use of this feature. It +was originally intended to help avoid name conflicts among dll's built for the +various win32/un*x environments, so that (for example) two versions of a zlib dll +could coexist on the same machine. + +

The generic cygwin/mingw path layout uses a bin directory for +applications and dll's and a lib directory for the import +libraries (using cygwin nomenclature): + +

          bin/
+          	cygxxx.dll
+          lib/
+          	libxxx.dll.a   (in case of dll's)
+          	libxxx.a       (in case of static archive)
+     
+

Linking directly to a dll without using the import library can be +done two ways: + +

1. Use the dll directly by adding the bin path to the link line +

          gcc -Wl,-verbose  -o a.exe -L../bin/ -lxxx
+     
+

However, as the dll's often have version numbers appended to their names +(cygncurses-5.dll) this will often fail, unless one specifies +-L../bin -lncurses-5 to include the version. Import libs are generally +not versioned, and do not have this difficulty. + +

2. Create a symbolic link from the dll to a file in the lib +directory according to the above mentioned search pattern. This +should be used to avoid unwanted changes in the tools needed for +making the app/dll. + +

          ln -s bin/cygxxx.dll lib/[cyg|lib|]xxx.dll[.a]
+     
+

Then you can link without any make environment changes. + +

          gcc -Wl,-verbose  -o a.exe -L../lib/ -lxxx
+     
+

This technique also avoids the version number problems, because the following is +perfectly legal + +

          bin/
+          	cygxxx-5.dll
+          lib/
+          	libxxx.dll.a -> ../bin/cygxxx-5.dll
+     
+

Linking directly to a dll without using an import lib will work +even when auto-import features are exercised, and even when +--enable-runtime-pseudo-relocs is used. + +

Given the improvements in speed and memory usage, one might justifiably +wonder why import libraries are used at all. There are three reasons: + +

1. Until recently, the link-directly-to-dll functionality did not +work with auto-imported data. + +

2. Sometimes it is necessary to include pure static objects within the +import library (which otherwise contains only bfd's for indirection +symbols that point to the exports of a dll). Again, the import lib +for the cygwin kernel makes use of this ability, and it is not +possible to do this without an import lib. + +

3. Symbol aliases can only be resolved using an import lib. This is +critical when linking against OS-supplied dll's (eg, the win32 API) +in which symbols are usually exported as undecorated aliases of their +stdcall-decorated assembly names. + +

So, import libs are not going away. But the ability to replace +true import libs with a simple symbolic link to (or a copy of) +a dll, in many cases, is a useful addition to the suite of tools +binutils makes available to the win32 developer. Given the +massive improvements in memory requirements during linking, storage +requirements, and linking speed, we expect that many developers +will soon begin to use this feature whenever possible. + +

symbol aliasing
+
+
adding additional names
Sometimes, it is useful to export symbols with additional names. +A symbol foo will be exported as foo, but it can also be +exported as _foo by using special directives in the DEF file +when creating the dll. This will affect also the optional created +import library. Consider the following DEF file: + +
               LIBRARY "xyz.dll" BASE=0x61000000
+               
+               EXPORTS
+               foo
+               _foo = foo
+          
+

The line _foo = foo maps the symbol foo to _foo. + +

Another method for creating a symbol alias is to create it in the +source code using the "weak" attribute: + +

               void foo () { /* Do something.  */; }
+               void _foo () __attribute__ ((weak, alias ("foo")));
+          
+

See the gcc manual for more information about attributes and weak +symbols. + +

renaming symbols
Sometimes it is useful to rename exports. For instance, the cygwin +kernel does this regularly. A symbol _foo can be exported as +foo but not as _foo by using special directives in the +DEF file. (This will also affect the import library, if it is +created). In the following example: + +
               LIBRARY "xyz.dll" BASE=0x61000000
+               
+               EXPORTS
+               _foo = foo
+          
+

The line _foo = foo maps the exported symbol foo to +_foo. +

+ +

Note: using a DEF file disables the default auto-export behavior, +unless the --export-all-symbols command line option is used. +If, however, you are trying to rename symbols, then you should list +all desired exports in the DEF file, including the symbols +that are not being renamed, and do not use the +--export-all-symbols option. If you list only the +renamed symbols in the DEF file, and use --export-all-symbols +to handle the other symbols, then the both the new names and +the original names for the renamed symbols will be exported. +In effect, you'd be aliasing those symbols, not renaming them, +which is probably not what you wanted. + +


weak externals
The Windows object format, PE, specifies a form of weak symbols called +weak externals. When a weak symbol is linked and the symbol is not +defined, the weak symbol becomes an alias for some other symbol. There +are three variants of weak externals: +
    +
  • Definition is searched for in objects and libraries, historically +called lazy externals. +
  • Definition is searched for only in other objects, not in libraries. +This form is not presently implemented. +
  • No search; the symbol is an alias. This form is not presently +implemented. +
+ As a GNU extension, weak symbols that do not specify an alternate symbol +are supported. If the symbol is undefined when linking, the symbol +uses a default value. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Xtensa.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Xtensa.html new file mode 100644 index 0000000..95e5135 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/Xtensa.html @@ -0,0 +1,112 @@ + + +Xtensa - Untitled + + + + + + + + + + + + +
+

+Previous: WIN32, +Up: Machine Dependent +



+
+ +

4.14 ld and Xtensa Processors

+ +

The default ld behavior for Xtensa processors is to interpret +SECTIONS commands so that lists of explicitly named sections in a +specification with a wildcard file will be interleaved when necessary to +keep literal pools within the range of PC-relative load offsets. For +example, with the command: + +

     SECTIONS
+     {
+       .text : {
+         *(.literal .text)
+       }
+     }
+
+

ld may interleave some of the .literal +and .text sections from different object files to ensure that the +literal pools are within the range of PC-relative load offsets. A valid +interleaving might place the .literal sections from an initial +group of files followed by the .text sections of that group of +files. Then, the .literal sections from the rest of the files +and the .text sections from the rest of the files would follow. + +

Relaxation is enabled by default for the Xtensa version of ld and +provides two important link-time optimizations. The first optimization +is to combine identical literal values to reduce code size. A redundant +literal will be removed and all the L32R instructions that use it +will be changed to reference an identical literal, as long as the +location of the replacement literal is within the offset range of all +the L32R instructions. The second optimization is to remove +unnecessary overhead from assembler-generated “longcall” sequences of +L32R/CALLXn when the target functions are within +range of direct CALLn instructions. + +

For each of these cases where an indirect call sequence can be optimized +to a direct call, the linker will change the CALLXn +instruction to a CALLn instruction, remove the L32R +instruction, and remove the literal referenced by the L32R +instruction if it is not used for anything else. Removing the +L32R instruction always reduces code size but can potentially +hurt performance by changing the alignment of subsequent branch targets. +By default, the linker will always preserve alignments, either by +switching some instructions between 24-bit encodings and the equivalent +density instructions or by inserting a no-op in place of the L32R +instruction that was removed. If code size is more important than +performance, the --size-opt option can be used to prevent the +linker from widening density instructions or inserting no-ops, except in +a few cases where no-ops are required for correctness. + +

The following Xtensa-specific command-line options can be used to +control the linker: + +

+ + +

--no-relax
Since the Xtensa version of ld enables the --relax option +by default, the --no-relax option is provided to disable +relaxation. + +
--size-opt
When optimizing indirect calls to direct calls, optimize for code size +more than performance. With this option, the linker will not insert +no-ops or widen density instructions to preserve branch target +alignment. There may still be some cases where no-ops are required to +preserve the correctness of the code. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/i960.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/i960.html new file mode 100644 index 0000000..a723b75 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/i960.html @@ -0,0 +1,86 @@ + + +i960 - Untitled + + + + + + + + + + + + + +
+

+Next: , +Previous: H8/300, +Up: Machine Dependent +



+
+ +

4.2 ld and the Intel 960 Family

+ +

+You can use the -Aarchitecture command line option to +specify one of the two-letter names identifying members of the 960 +family; the option specifies the desired output target, and warns of any +incompatible instructions in the input files. It also modifies the +linker's search strategy for archive libraries, to support the use of +libraries specific to each particular architecture, by including in the +search loop names suffixed with the string identifying the architecture. + +

For example, if your ld command line included -ACA as +well as -ltry, the linker would look (in its built-in search +paths, and in any paths you specify with -L) for a library with +the names + +

     try
+     libtry.a
+     tryca
+     libtryca.a
+
+

The first two possibilities would be considered in any event; the last +two are due to the use of -ACA. + +

You can meaningfully use -A more than once on a command line, since +the 960 architecture family allows combination of target architectures; each +use will add another pair of name variants to search for when -l +specifies a library. + +

ld supports the --relax option for the i960 family. If +you specify --relax, ld finds all balx and +calx instructions whose targets are within 24 bits, and turns +them into 24-bit program-counter relative bal and cal +instructions, respectively. ld also turns cal +instructions into bal instructions when it determines that the +target subroutine is a leaf routine (that is, the target subroutine does +not itself call any subroutines). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/index.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/index.html new file mode 100644 index 0000000..e07fe67 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/ld.html/index.html @@ -0,0 +1,194 @@ + + +Untitled + + + + + + + + + + +

+

Table of Contents

+ +
+ + + + +
+

+Next: , +Up: (dir) +



+
+ +

LD

+ +

This file documents the gnu linker ld +(GNU Binutils) +version 2.19. + +

This document is distributed under the terms of the GNU Free +Documentation License. A copy of the license is included in the +section entitled “GNU Free Documentation License”. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/libiberty.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/libiberty.html new file mode 100644 index 0000000..aeb9f60 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/libiberty.html @@ -0,0 +1,3535 @@ + + +GNU libiberty + + + + + + + + + +

GNU libiberty

+ + + + +
+


+Next:  +
+
+ +

Introduction

+ +

The libiberty library is a collection of subroutines used by various +GNU programs. It is available under the Library General Public +License; for more information, see Library Copying. + + +

This edition accompanies GCC 3, September 2001. + +

+ +
+


+Next: , +Previous: Top, +Up: Top +
+
+ +

1 Using

+ +

+ + +

To date, libiberty is generally not installed on its own. It has evolved +over years but does not have its own version number nor release schedule. + +

Possibly the easiest way to use libiberty in your projects is to drop the +libiberty code into your project's sources, and to build the library along +with your own sources; the library would then be linked in at the end. This +prevents any possible version mismatches with other copies of libiberty +elsewhere on the system. + +

Passing --enable-install-libiberty to the configure +script when building libiberty causes the header files and archive library +to be installed when make install is run. This option also takes +an (optional) argument to specify the installation location, in the same +manner as --prefix. + +

For your own projects, an approach which offers stability and flexibility +is to include libiberty with your code, but allow the end user to optionally +choose to use a previously-installed version instead. In this way the +user may choose (for example) to install libiberty as part of GCC, and use +that version for all software built with that compiler. (This approach +has proven useful with software using the GNU readline library.) + +

Making use of libiberty code usually requires that you include one or more +header files from the libiberty distribution. (They will be named as +necessary in the function descriptions.) At link time, you will need to +add -liberty to your link command invocation. + +

+


+Next: , +Previous: Using, +Up: Top +
+
+ +

2 Overview

+ +

Functions contained in libiberty can be divided into three general categories. + +

+ +
+


+Next: , +Up: Overview +
+
+ +

2.1 Supplemental Functions

+ +

+Certain operating systems do not provide functions which have since +become standardized, or at least common. For example, the Single +Unix Specification Version 2 requires that the basename +function be provided, but an OS which predates that specification +might not have this function. This should not prevent well-written +code from running on such a system. + +

Similarly, some functions exist only among a particular “flavor” +or “family” of operating systems. As an example, the bzero +function is often not present on systems outside the BSD-derived +family of systems. + +

Many such functions are provided in libiberty. They are quickly +listed here with little description, as systems which lack them +become less and less common. Each function foo is implemented +in foo.c but not declared in any libiberty header file; more +comments and caveats for each function's implementation are often +available in the source file. Generally, the function can simply +be declared as extern. + +

+


+Next: , +Previous: Supplemental Functions, +Up: Overview +
+
+ +

2.2 Replacement Functions

+ +

+Some functions have extremely limited implementations on different +platforms. Other functions are tedious to use correctly; for example, +proper use of malloc calls for the return value to be checked and +appropriate action taken if memory has been exhausted. A group of +“replacement functions” is available in libiberty to address these issues +for some of the most commonly used subroutines. + +

All of these functions are declared in the libiberty.h header +file. Many of the implementations will use preprocessor macros set by +GNU Autoconf, if you decide to make use of that program. Some of these +functions may call one another. + +

+ +
+


+Next: , +Up: Replacement Functions +
+
+ +

2.2.1 Memory Allocation

+ +

+The functions beginning with the letter x are wrappers around +standard functions; the functions provided by the system environment +are called and their results checked before the results are passed back +to client code. If the standard functions fail, these wrappers will +terminate the program. Thus, these versions can be used with impunity. + +

+


+Next: , +Previous: Memory Allocation, +Up: Replacement Functions +
+
+ +

2.2.2 Exit Handlers

+ +

+The existence and implementation of the atexit routine varies +amongst the flavors of Unix. libiberty provides an unvarying dependable +implementation via xatexit and xexit. + +

+


+Previous: Exit Handlers, +Up: Replacement Functions +
+
+ +

2.2.3 Error Reporting

+ +

+These are a set of routines to facilitate programming with the system +errno interface. The libiberty source file strerror.c +contains a good deal of documentation for these functions. + + +

+


+Previous: Replacement Functions, +Up: Overview +
+
+ +

2.3 Extensions

+ +

+libiberty includes additional functionality above and beyond standard +functions, which has proven generically useful in GNU programs, such as +obstacks and regex. These functions are often copied from other +projects as they gain popularity, and are included here to provide a +central location from which to use, maintain, and distribute them. + +

+ + + +
+


+Next: , +Previous: Functions, +Up: Top +
+
+ +

3 Obstacks

+ +

+An obstack is a pool of memory containing a stack of objects. You +can create any number of separate obstacks, and then allocate objects in +specified obstacks. Within each obstack, the last object allocated must +always be the first one freed, but distinct obstacks are independent of +each other. + +

Aside from this one constraint of order of freeing, obstacks are totally +general: an obstack can contain any number of objects of any size. They +are implemented with macros, so allocation is usually very fast as long as +the objects are usually small. And the only space overhead per object is +the padding needed to start each object on a suitable boundary. + +

+ +
+


+Next: , +Up: Obstacks +
+
+ +

3.1 Creating Obstacks

+ +

The utilities for manipulating obstacks are declared in the header +file obstack.h. + + + + +

+— Data Type: struct obstack
+

An obstack is represented by a data structure of type struct +obstack. This structure has a small fixed size; it records the status +of the obstack and how to find the space in which objects are allocated. +It does not contain any of the objects themselves. You should not try +to access the contents of the structure directly; use only the functions +described in this chapter. +

+ +

You can declare variables of type struct obstack and use them as +obstacks, or you can allocate obstacks dynamically like any other kind +of object. Dynamic allocation of obstacks allows your program to have a +variable number of different stacks. (You can even allocate an +obstack structure in another obstack, but this is rarely useful.) + +

All the functions that work with obstacks require you to specify which +obstack to use. You do this with a pointer of type struct obstack +*. In the following, we often say “an obstack” when strictly +speaking the object at hand is such a pointer. + +

The objects in the obstack are packed into large blocks called +chunks. The struct obstack structure points to a chain of +the chunks currently in use. + +

The obstack library obtains a new chunk whenever you allocate an object +that won't fit in the previous chunk. Since the obstack library manages +chunks automatically, you don't need to pay much attention to them, but +you do need to supply a function which the obstack library should use to +get a chunk. Usually you supply a function which uses malloc +directly or indirectly. You must also supply a function to free a chunk. +These matters are described in the following section. + +

+


+Next: , +Previous: Creating Obstacks, +Up: Obstacks +
+
+ +

3.2 Preparing for Using Obstacks

+ +

Each source file in which you plan to use the obstack functions +must include the header file obstack.h, like this: + +

     #include <obstack.h>
+
+

Also, if the source file uses the macro obstack_init, it must +declare or define two functions or macros that will be called by the +obstack library. One, obstack_chunk_alloc, is used to allocate +the chunks of memory into which objects are packed. The other, +obstack_chunk_free, is used to return chunks when the objects in +them are freed. These macros should appear before any use of obstacks +in the source file. + +

Usually these are defined to use malloc via the intermediary +xmalloc (see Unconstrained Allocation (The GNU C Library Reference Manual)). This is done with +the following pair of macro definitions: + +

     #define obstack_chunk_alloc xmalloc
+     #define obstack_chunk_free free
+
+

Though the memory you get using obstacks really comes from malloc, +using obstacks is faster because malloc is called less often, for +larger blocks of memory. See Obstack Chunks, for full details. + +

At run time, before the program can use a struct obstack object +as an obstack, it must initialize the obstack by calling +obstack_init. + + + +

+— Function: int obstack_init (struct obstack *obstack-ptr)
+

Initialize obstack obstack-ptr for allocation of objects. This +function calls the obstack's obstack_chunk_alloc function. If +allocation of memory fails, the function pointed to by +obstack_alloc_failed_handler is called. The obstack_init +function always returns 1 (Compatibility notice: Former versions of +obstack returned 0 if allocation failed). +

+ +

Here are two examples of how to allocate the space for an obstack and +initialize it. First, an obstack that is a static variable: + +

     static struct obstack myobstack;
+     ...
+     obstack_init (&myobstack);
+
+

Second, an obstack that is itself dynamically allocated: + +

     struct obstack *myobstack_ptr
+       = (struct obstack *) xmalloc (sizeof (struct obstack));
+     
+     obstack_init (myobstack_ptr);
+
+ + +
+— Variable: obstack_alloc_failed_handler
+

The value of this variable is a pointer to a function that +obstack uses when obstack_chunk_alloc fails to allocate +memory. The default action is to print a message and abort. +You should supply a function that either calls exit +(see Program Termination (The GNU C Library Reference Manual)) or longjmp (see Non-Local Exits (The GNU C Library Reference Manual)) and doesn't return. + +

          void my_obstack_alloc_failed (void)
+          ...
+          obstack_alloc_failed_handler = &my_obstack_alloc_failed;
+     
+
+ +
+


+Next: , +Previous: Preparing for Obstacks, +Up: Obstacks +
+
+ +

3.3 Allocation in an Obstack

+ +

+The most direct way to allocate an object in an obstack is with +obstack_alloc, which is invoked almost like malloc. + + + +

+— Function: void * obstack_alloc (struct obstack *obstack-ptr, int size)
+

This allocates an uninitialized block of size bytes in an obstack +and returns its address. Here obstack-ptr specifies which obstack +to allocate the block in; it is the address of the struct obstack +object which represents the obstack. Each obstack function or macro +requires you to specify an obstack-ptr as the first argument. + +

This function calls the obstack's obstack_chunk_alloc function if +it needs to allocate a new chunk of memory; it calls +obstack_alloc_failed_handler if allocation of memory by +obstack_chunk_alloc failed. +

+ +

For example, here is a function that allocates a copy of a string str +in a specific obstack, which is in the variable string_obstack: + +

     struct obstack string_obstack;
+     
+     char *
+     copystring (char *string)
+     {
+       size_t len = strlen (string) + 1;
+       char *s = (char *) obstack_alloc (&string_obstack, len);
+       memcpy (s, string, len);
+       return s;
+     }
+
+

To allocate a block with specified contents, use the function +obstack_copy, declared like this: + + + +

+— Function: void * obstack_copy (struct obstack *obstack-ptr, void *address, int size)
+

This allocates a block and initializes it by copying size +bytes of data starting at address. It calls +obstack_alloc_failed_handler if allocation of memory by +obstack_chunk_alloc failed. +

+ + + +
+— Function: void * obstack_copy0 (struct obstack *obstack-ptr, void *address, int size)
+

Like obstack_copy, but appends an extra byte containing a null +character. This extra byte is not counted in the argument size. +

+ +

The obstack_copy0 function is convenient for copying a sequence +of characters into an obstack as a null-terminated string. Here is an +example of its use: + +

     char *
+     obstack_savestring (char *addr, int size)
+     {
+       return obstack_copy0 (&myobstack, addr, size);
+     }
+
+

Contrast this with the previous example of savestring using +malloc (see Basic Allocation (The GNU C Library Reference Manual)). + +

+


+Next: , +Previous: Allocation in an Obstack, +Up: Obstacks +
+
+ +

3.4 Freeing Objects in an Obstack

+ +

+To free an object allocated in an obstack, use the function +obstack_free. Since the obstack is a stack of objects, freeing +one object automatically frees all other objects allocated more recently +in the same obstack. + + + +

+— Function: void obstack_free (struct obstack *obstack-ptr, void *object)
+

If object is a null pointer, everything allocated in the obstack +is freed. Otherwise, object must be the address of an object +allocated in the obstack. Then object is freed, along with +everything allocated in obstack since object. +

+ +

Note that if object is a null pointer, the result is an +uninitialized obstack. To free all memory in an obstack but leave it +valid for further allocation, call obstack_free with the address +of the first object allocated on the obstack: + +

     obstack_free (obstack_ptr, first_object_allocated_ptr);
+
+

Recall that the objects in an obstack are grouped into chunks. When all +the objects in a chunk become free, the obstack library automatically +frees the chunk (see Preparing for Obstacks). Then other +obstacks, or non-obstack allocation, can reuse the space of the chunk. + +

+


+Next: , +Previous: Freeing Obstack Objects, +Up: Obstacks +
+
+ +

3.5 Obstack Functions and Macros

+ +

+The interfaces for using obstacks may be defined either as functions or +as macros, depending on the compiler. The obstack facility works with +all C compilers, including both ISO C and traditional C, but there are +precautions you must take if you plan to use compilers other than GNU C. + +

If you are using an old-fashioned non-ISO C compiler, all the obstack +“functions” are actually defined only as macros. You can call these +macros like functions, but you cannot use them in any other way (for +example, you cannot take their address). + +

Calling the macros requires a special precaution: namely, the first +operand (the obstack pointer) may not contain any side effects, because +it may be computed more than once. For example, if you write this: + +

     obstack_alloc (get_obstack (), 4);
+
+

you will find that get_obstack may be called several times. +If you use *obstack_list_ptr++ as the obstack pointer argument, +you will get very strange results since the incrementation may occur +several times. + +

In ISO C, each function has both a macro definition and a function +definition. The function definition is used if you take the address of the +function without calling it. An ordinary call uses the macro definition by +default, but you can request the function definition instead by writing the +function name in parentheses, as shown here: + +

     char *x;
+     void *(*funcp) ();
+     /* Use the macro.  */
+     x = (char *) obstack_alloc (obptr, size);
+     /* Call the function.  */
+     x = (char *) (obstack_alloc) (obptr, size);
+     /* Take the address of the function.  */
+     funcp = obstack_alloc;
+
+

This is the same situation that exists in ISO C for the standard library +functions. See Macro Definitions (The GNU C Library Reference Manual). + +

Warning: When you do use the macros, you must observe the +precaution of avoiding side effects in the first operand, even in ISO C. + +

If you use the GNU C compiler, this precaution is not necessary, because +various language extensions in GNU C permit defining the macros so as to +compute each argument only once. + +

+


+Next: , +Previous: Obstack Functions, +Up: Obstacks +
+
+ +

3.6 Growing Objects

+ +

+Because memory in obstack chunks is used sequentially, it is possible to +build up an object step by step, adding one or more bytes at a time to the +end of the object. With this technique, you do not need to know how much +data you will put in the object until you come to the end of it. We call +this the technique of growing objects. The special functions +for adding data to the growing object are described in this section. + +

You don't need to do anything special when you start to grow an object. +Using one of the functions to add data to the object automatically +starts it. However, it is necessary to say explicitly when the object is +finished. This is done with the function obstack_finish. + +

The actual address of the object thus built up is not known until the +object is finished. Until then, it always remains possible that you will +add so much data that the object must be copied into a new chunk. + +

While the obstack is in use for a growing object, you cannot use it for +ordinary allocation of another object. If you try to do so, the space +already added to the growing object will become part of the other object. + + + +

+— Function: void obstack_blank (struct obstack *obstack-ptr, int size)
+

The most basic function for adding to a growing object is +obstack_blank, which adds space without initializing it. +

+ + + +
+— Function: void obstack_grow (struct obstack *obstack-ptr, void *data, int size)
+

To add a block of initialized space, use obstack_grow, which is +the growing-object analogue of obstack_copy. It adds size +bytes of data to the growing object, copying the contents from +data. +

+ + + +
+— Function: void obstack_grow0 (struct obstack *obstack-ptr, void *data, int size)
+

This is the growing-object analogue of obstack_copy0. It adds +size bytes copied from data, followed by an additional null +character. +

+ + + +
+— Function: void obstack_1grow (struct obstack *obstack-ptr, char c)
+

To add one character at a time, use the function obstack_1grow. +It adds a single byte containing c to the growing object. +

+ + + +
+— Function: void obstack_ptr_grow (struct obstack *obstack-ptr, void *data)
+

Adding the value of a pointer one can use the function +obstack_ptr_grow. It adds sizeof (void *) bytes +containing the value of data. +

+ + + +
+— Function: void obstack_int_grow (struct obstack *obstack-ptr, int data)
+

A single value of type int can be added by using the +obstack_int_grow function. It adds sizeof (int) bytes to +the growing object and initializes them with the value of data. +

+ + + +
+— Function: void * obstack_finish (struct obstack *obstack-ptr)
+

When you are finished growing the object, use the function +obstack_finish to close it off and return its final address. + +

Once you have finished the object, the obstack is available for ordinary +allocation or for growing another object. + +

This function can return a null pointer under the same conditions as +obstack_alloc (see Allocation in an Obstack). +

+ +

When you build an object by growing it, you will probably need to know +afterward how long it became. You need not keep track of this as you grow +the object, because you can find out the length from the obstack just +before finishing the object with the function obstack_object_size, +declared as follows: + + + +

+— Function: int obstack_object_size (struct obstack *obstack-ptr)
+

This function returns the current size of the growing object, in bytes. +Remember to call this function before finishing the object. +After it is finished, obstack_object_size will return zero. +

+ +

If you have started growing an object and wish to cancel it, you should +finish it and then free it, like this: + +

     obstack_free (obstack_ptr, obstack_finish (obstack_ptr));
+
+

This has no effect if no object was growing. + +

You can use obstack_blank with a negative size argument to make +the current object smaller. Just don't try to shrink it beyond zero +length—there's no telling what will happen if you do that. + +

+


+Next: , +Previous: Growing Objects, +Up: Obstacks +
+
+ +

3.7 Extra Fast Growing Objects

+ +

+The usual functions for growing objects incur overhead for checking +whether there is room for the new growth in the current chunk. If you +are frequently constructing objects in small steps of growth, this +overhead can be significant. + +

You can reduce the overhead by using special “fast growth” +functions that grow the object without checking. In order to have a +robust program, you must do the checking yourself. If you do this checking +in the simplest way each time you are about to add data to the object, you +have not saved anything, because that is what the ordinary growth +functions do. But if you can arrange to check less often, or check +more efficiently, then you make the program faster. + +

The function obstack_room returns the amount of room available +in the current chunk. It is declared as follows: + + + +

+— Function: int obstack_room (struct obstack *obstack-ptr)
+

This returns the number of bytes that can be added safely to the current +growing object (or to an object about to be started) in obstack +obstack using the fast growth functions. +

+ +

While you know there is room, you can use these fast growth functions +for adding data to a growing object: + + + +

+— Function: void obstack_1grow_fast (struct obstack *obstack-ptr, char c)
+

The function obstack_1grow_fast adds one byte containing the +character c to the growing object in obstack obstack-ptr. +

+ + + +
+— Function: void obstack_ptr_grow_fast (struct obstack *obstack-ptr, void *data)
+

The function obstack_ptr_grow_fast adds sizeof (void *) +bytes containing the value of data to the growing object in +obstack obstack-ptr. +

+ + + +
+— Function: void obstack_int_grow_fast (struct obstack *obstack-ptr, int data)
+

The function obstack_int_grow_fast adds sizeof (int) bytes +containing the value of data to the growing object in obstack +obstack-ptr. +

+ + + +
+— Function: void obstack_blank_fast (struct obstack *obstack-ptr, int size)
+

The function obstack_blank_fast adds size bytes to the +growing object in obstack obstack-ptr without initializing them. +

+ +

When you check for space using obstack_room and there is not +enough room for what you want to add, the fast growth functions +are not safe. In this case, simply use the corresponding ordinary +growth function instead. Very soon this will copy the object to a +new chunk; then there will be lots of room available again. + +

So, each time you use an ordinary growth function, check afterward for +sufficient space using obstack_room. Once the object is copied +to a new chunk, there will be plenty of space again, so the program will +start using the fast growth functions again. + +

Here is an example: + +

     void
+     add_string (struct obstack *obstack, const char *ptr, int len)
+     {
+       while (len > 0)
+         {
+           int room = obstack_room (obstack);
+           if (room == 0)
+             {
+               /* Not enough room. Add one character slowly,
+                  which may copy to a new chunk and make room.  */
+               obstack_1grow (obstack, *ptr++);
+               len--;
+             }
+           else
+             {
+               if (room > len)
+                 room = len;
+               /* Add fast as much as we have room for. */
+               len -= room;
+               while (room-- > 0)
+                 obstack_1grow_fast (obstack, *ptr++);
+             }
+         }
+     }
+
+
+


+Next: , +Previous: Extra Fast Growing, +Up: Obstacks +
+
+ +

3.8 Status of an Obstack

+ +

+Here are functions that provide information on the current status of +allocation in an obstack. You can use them to learn about an object while +still growing it. + + + +

+— Function: void * obstack_base (struct obstack *obstack-ptr)
+

This function returns the tentative address of the beginning of the +currently growing object in obstack-ptr. If you finish the object +immediately, it will have that address. If you make it larger first, it +may outgrow the current chunk—then its address will change! + +

If no object is growing, this value says where the next object you +allocate will start (once again assuming it fits in the current +chunk). +

+ + + +
+— Function: void * obstack_next_free (struct obstack *obstack-ptr)
+

This function returns the address of the first free byte in the current +chunk of obstack obstack-ptr. This is the end of the currently +growing object. If no object is growing, obstack_next_free +returns the same value as obstack_base. +

+ + + +
+— Function: int obstack_object_size (struct obstack *obstack-ptr)
+

This function returns the size in bytes of the currently growing object. +This is equivalent to + +

          obstack_next_free (obstack-ptr) - obstack_base (obstack-ptr)
+     
+
+ +
+


+Next: , +Previous: Status of an Obstack, +Up: Obstacks +
+
+ +

3.9 Alignment of Data in Obstacks

+ +

+Each obstack has an alignment boundary; each object allocated in +the obstack automatically starts on an address that is a multiple of the +specified boundary. By default, this boundary is 4 bytes. + +

To access an obstack's alignment boundary, use the macro +obstack_alignment_mask, whose function prototype looks like +this: + + + +

+— Macro: int obstack_alignment_mask (struct obstack *obstack-ptr)
+

The value is a bit mask; a bit that is 1 indicates that the corresponding +bit in the address of an object should be 0. The mask value should be one +less than a power of 2; the effect is that all object addresses are +multiples of that power of 2. The default value of the mask is 3, so that +addresses are multiples of 4. A mask value of 0 means an object can start +on any multiple of 1 (that is, no alignment is required). + +

The expansion of the macro obstack_alignment_mask is an lvalue, +so you can alter the mask by assignment. For example, this statement: + +

          obstack_alignment_mask (obstack_ptr) = 0;
+     
+

has the effect of turning off alignment processing in the specified obstack. +

+ +

Note that a change in alignment mask does not take effect until +after the next time an object is allocated or finished in the +obstack. If you are not growing an object, you can make the new +alignment mask take effect immediately by calling obstack_finish. +This will finish a zero-length object and then do proper alignment for +the next object. + +

+


+Next: , +Previous: Obstacks Data Alignment, +Up: Obstacks +
+
+ +

3.10 Obstack Chunks

+ +

+Obstacks work by allocating space for themselves in large chunks, and +then parceling out space in the chunks to satisfy your requests. Chunks +are normally 4096 bytes long unless you specify a different chunk size. +The chunk size includes 8 bytes of overhead that are not actually used +for storing objects. Regardless of the specified size, longer chunks +will be allocated when necessary for long objects. + +

The obstack library allocates chunks by calling the function +obstack_chunk_alloc, which you must define. When a chunk is no +longer needed because you have freed all the objects in it, the obstack +library frees the chunk by calling obstack_chunk_free, which you +must also define. + +

These two must be defined (as macros) or declared (as functions) in each +source file that uses obstack_init (see Creating Obstacks). +Most often they are defined as macros like this: + +

     #define obstack_chunk_alloc malloc
+     #define obstack_chunk_free free
+
+

Note that these are simple macros (no arguments). Macro definitions with +arguments will not work! It is necessary that obstack_chunk_alloc +or obstack_chunk_free, alone, expand into a function name if it is +not itself a function name. + +

If you allocate chunks with malloc, the chunk size should be a +power of 2. The default chunk size, 4096, was chosen because it is long +enough to satisfy many typical requests on the obstack yet short enough +not to waste too much memory in the portion of the last chunk not yet used. + + + +

+— Macro: int obstack_chunk_size (struct obstack *obstack-ptr)
+

This returns the chunk size of the given obstack. +

+ +

Since this macro expands to an lvalue, you can specify a new chunk size by +assigning it a new value. Doing so does not affect the chunks already +allocated, but will change the size of chunks allocated for that particular +obstack in the future. It is unlikely to be useful to make the chunk size +smaller, but making it larger might improve efficiency if you are +allocating many objects whose size is comparable to the chunk size. Here +is how to do so cleanly: + +

     if (obstack_chunk_size (obstack_ptr) < new-chunk-size)
+       obstack_chunk_size (obstack_ptr) = new-chunk-size;
+
+
+


+Previous: Obstack Chunks, +Up: Obstacks +
+
+ +

3.11 Summary of Obstack Functions

+ +

Here is a summary of all the functions associated with obstacks. Each +takes the address of an obstack (struct obstack *) as its first +argument. + +

+
void obstack_init (struct obstack *obstack-ptr)
Initialize use of an obstack. See Creating Obstacks. + +
void *obstack_alloc (struct obstack *obstack-ptr, int size)
Allocate an object of size uninitialized bytes. +See Allocation in an Obstack. + +
void *obstack_copy (struct obstack *obstack-ptr, void *address, int size)
Allocate an object of size bytes, with contents copied from +address. See Allocation in an Obstack. + +
void *obstack_copy0 (struct obstack *obstack-ptr, void *address, int size)
Allocate an object of size+1 bytes, with size of them copied +from address, followed by a null character at the end. +See Allocation in an Obstack. + +
void obstack_free (struct obstack *obstack-ptr, void *object)
Free object (and everything allocated in the specified obstack +more recently than object). See Freeing Obstack Objects. + +
void obstack_blank (struct obstack *obstack-ptr, int size)
Add size uninitialized bytes to a growing object. +See Growing Objects. + +
void obstack_grow (struct obstack *obstack-ptr, void *address, int size)
Add size bytes, copied from address, to a growing object. +See Growing Objects. + +
void obstack_grow0 (struct obstack *obstack-ptr, void *address, int size)
Add size bytes, copied from address, to a growing object, +and then add another byte containing a null character. See Growing Objects. + +
void obstack_1grow (struct obstack *obstack-ptr, char data-char)
Add one byte containing data-char to a growing object. +See Growing Objects. + +
void *obstack_finish (struct obstack *obstack-ptr)
Finalize the object that is growing and return its permanent address. +See Growing Objects. + +
int obstack_object_size (struct obstack *obstack-ptr)
Get the current size of the currently growing object. See Growing Objects. + +
void obstack_blank_fast (struct obstack *obstack-ptr, int size)
Add size uninitialized bytes to a growing object without checking +that there is enough room. See Extra Fast Growing. + +
void obstack_1grow_fast (struct obstack *obstack-ptr, char data-char)
Add one byte containing data-char to a growing object without +checking that there is enough room. See Extra Fast Growing. + +
int obstack_room (struct obstack *obstack-ptr)
Get the amount of room now available for growing the current object. +See Extra Fast Growing. + +
int obstack_alignment_mask (struct obstack *obstack-ptr)
The mask used for aligning the beginning of an object. This is an +lvalue. See Obstacks Data Alignment. + +
int obstack_chunk_size (struct obstack *obstack-ptr)
The size for allocating chunks. This is an lvalue. See Obstack Chunks. + +
void *obstack_base (struct obstack *obstack-ptr)
Tentative starting address of the currently growing object. +See Status of an Obstack. + +
void *obstack_next_free (struct obstack *obstack-ptr)
Address just after the end of the currently growing object. +See Status of an Obstack. +
+ +
+


+Next: , +Previous: Overview, +Up: Top +
+
+ +

4 Function, Variable, and Macro Listing.

+ + + + + + +
+— Extension: HOST_CHARSET
+

This macro indicates the basic character set and encoding used by the +host: more precisely, the encoding used for character constants in +preprocessor #if statements (the C "execution character set"). +It is defined by safe-ctype.h, and will be an integer constant +with one of the following values: + +

+
HOST_CHARSET_UNKNOWN
The host character set is unknown - that is, not one of the next two +possibilities. + +
HOST_CHARSET_ASCII
The host character set is ASCII. + +
HOST_CHARSET_EBCDIC
The host character set is some variant of EBCDIC. (Only one of the +nineteen EBCDIC varying characters is tested; exercise caution.) +
+

+ + +
+— Replacement: void* alloca (size_t size)
+
+

This function allocates memory which will be automatically reclaimed +after the procedure exits. The libiberty implementation does not free +the memory immediately but will do so eventually during subsequent +calls to this function. Memory is allocated using xmalloc under +normal circumstances. + +

The header file alloca-conf.h can be used in conjunction with the +GNU Autoconf test AC_FUNC_ALLOCA to test for and properly make +available this function. The AC_FUNC_ALLOCA test requires that +client code use a block of preprocessor code to be safe (see the Autoconf +manual for more); this header incorporates that logic and more, including +the possibility of a GCC built-in function. + +

+ + +
+— Extension: int asprintf (char **resptr, const char *format, ...)
+
+

Like sprintf, but instead of passing a pointer to a buffer, you +pass a pointer to a pointer. This function will compute the size of +the buffer needed, allocate memory with malloc, and store a +pointer to the allocated memory in *resptr. The value +returned is the same as sprintf would return. If memory could +not be allocated, minus one is returned and NULL is stored in +*resptr. + +

+ + +
+— Supplemental: int atexit (void (*f)())
+
+

Causes function f to be called at exit. Returns 0. + +

+ + +
+— Supplemental: char* basename (const char *name)
+
+

Returns a pointer to the last component of pathname name. +Behavior is undefined if the pathname ends in a directory separator. + +

+ + +
+— Supplemental: int bcmp (char *x, char *y, int count)
+
+

Compares the first count bytes of two areas of memory. Returns +zero if they are the same, nonzero otherwise. Returns zero if +count is zero. A nonzero result only indicates a difference, +it does not indicate any sorting order (say, by having a positive +result mean x sorts before y). + +

+ + +
+— Supplemental: void bcopy (char *in, char *out, int length)
+
+

Copies length bytes from memory region in to region +out. The use of bcopy is deprecated in new programs. + +

+ + +
+— Supplemental: void* bsearch (const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
+
+

Performs a search over an array of nmemb elements pointed to by +base for a member that matches the object pointed to by key. +The size of each member is specified by size. The array contents +should be sorted in ascending order according to the compar +comparison function. This routine should take two arguments pointing to +the key and to an array member, in that order, and should return an +integer less than, equal to, or greater than zero if the key object +is respectively less than, matching, or greater than the array member. + +

+ + +
+— Extension: char** buildargv (char *sp)
+
+

Given a pointer to a string, parse the string extracting fields +separated by whitespace and optionally enclosed within either single +or double quotes (which are stripped off), and build a vector of +pointers to copies of the string for each field. The input string +remains unchanged. The last element of the vector is followed by a +NULL element. + +

All of the memory for the pointer array and copies of the string +is obtained from malloc. All of the memory can be returned to the +system with the single function call freeargv, which takes the +returned result of buildargv, as it's argument. + +

Returns a pointer to the argument vector if successful. Returns +NULL if sp is NULL or if there is insufficient +memory to complete building the argument vector. + +

If the input is a null string (as opposed to a NULL pointer), +then buildarg returns an argument vector that has one arg, a null +string. + +

+ + +
+— Supplemental: void bzero (char *mem, int count)
+
+

Zeros count bytes starting at mem. Use of this function +is deprecated in favor of memset. + +

+ + +
+— Supplemental: void* calloc (size_t nelem, size_t elsize)
+
+

Uses malloc to allocate storage for nelem objects of +elsize bytes each, then zeros the memory. + +

+ + +
+— Extension: char* choose_temp_base (void)
+
+

Return a prefix for temporary file names or NULL if unable to +find one. The current directory is chosen if all else fails so the +program is exited if a temporary directory can't be found (mktemp +fails). The buffer for the result is obtained with xmalloc. + +

This function is provided for backwards compatibility only. Its use is +not recommended. + +

+ + +
+— Replacement: char* choose_tmpdir ()
+
+

Returns a pointer to a directory path suitable for creating temporary +files in. + +

+ + +
+— Supplemental: long clock (void)
+
+

Returns an approximation of the CPU time used by the process as a +clock_t; divide this number by CLOCKS_PER_SEC to get the +number of seconds used. + +

+ + +
+— Extension: char* concat (const char *s1, const char *s2, ..., NULL)
+
+

Concatenate zero or more of strings and return the result in freshly +xmalloced memory. Returns NULL if insufficient memory is +available. The argument list is terminated by the first NULL +pointer encountered. Pointers to empty strings are ignored. + +

+ + +
+— Extension: char** dupargv (char **vector)
+
+

Duplicate an argument vector. Simply scans through vector, +duplicating each argument until the terminating NULL is found. +Returns a pointer to the argument vector if successful. Returns +NULL if there is insufficient memory to complete building the +argument vector. + +

+ + +
+— Extension: int errno_max (void)
+
+

Returns the maximum errno value for which a corresponding +symbolic name or message is available. Note that in the case where we +use the sys_errlist supplied by the system, it is possible for +there to be more symbolic names than messages, or vice versa. In +fact, the manual page for perror(3C) explicitly warns that one +should check the size of the table (sys_nerr) before indexing +it, since new error codes may be added to the system before they are +added to the table. Thus sys_nerr might be smaller than value +implied by the largest errno value defined in <errno.h>. + +

We return the maximum value that can be used to obtain a meaningful +symbolic name or message. + +

+ + +
+— Extension: void expandargv (int *argcp, char ***argvp)
+
+

The argcp and argvp arguments are pointers to the usual +argc and argv arguments to main. This function +looks for arguments that begin with the character @. Any such +arguments are interpreted as “response files”. The contents of the +response file are interpreted as additional command line options. In +particular, the file is separated into whitespace-separated strings; +each such string is taken as a command-line option. The new options +are inserted in place of the option naming the response file, and +*argcp and *argvp will be updated. If the value of +*argvp is modified by this function, then the new value has +been dynamically allocated and can be deallocated by the caller with +freeargv. However, most callers will simply call +expandargv near the beginning of main and allow the +operating system to free the memory when the program exits. + +

+ + +
+— Extension: int fdmatch (int fd1, int fd2)
+
+

Check to see if two open file descriptors refer to the same file. +This is useful, for example, when we have an open file descriptor for +an unnamed file, and the name of a file that we believe to correspond +to that fd. This can happen when we are exec'd with an already open +file (stdout for example) or from the SVR4 /proc calls +that return open file descriptors for mapped address spaces. All we +have to do is open the file by name and check the two file descriptors +for a match, which is done by comparing major and minor device numbers +and inode numbers. + +

+ + +
+— Extension: FILE * fdopen_unlocked (int fildes, const char * mode)
+
+

Opens and returns a FILE pointer via fdopen. If the +operating system supports it, ensure that the stream is setup to avoid +any multi-threaded locking. Otherwise return the FILE pointer +unchanged. + +

+ + +
+— Supplemental: int ffs (int valu)
+
+

Find the first (least significant) bit set in valu. Bits are +numbered from right to left, starting with bit 1 (corresponding to the +value 1). If valu is zero, zero is returned. + +

+ + +
+— Extension: int filename_cmp (const char *s1, const char *s2)
+
+

Return zero if the two file names s1 and s2 are equivalent. +If not equivalent, the returned value is similar to what strcmp +would return. In other words, it returns a negative value if s1 +is less than s2, or a positive value if s2 is greater than +s2. + +

This function does not normalize file names. As a result, this function +will treat filenames that are spelled differently as different even in +the case when the two filenames point to the same underlying file. +However, it does handle the fact that on DOS-like file systems, forward +and backward slashes are equal. + +

+ + +
+— Replacement: int fnmatch (const char *pattern, const char *string, int flags)
+
+

Matches string against pattern, returning zero if it +matches, FNM_NOMATCH if not. pattern may contain the +wildcards ? to match any one character, * to match any +zero or more characters, or a set of alternate characters in square +brackets, like [a-gt8], which match one character (a +through g, or t, or 8, in this example) if that one +character is in the set. A set may be inverted (i.e., match anything +except what's in the set) by giving ^ or ! as the first +character in the set. To include those characters in the set, list them +as anything other than the first character of the set. To include a +dash in the set, list it last in the set. A backslash character makes +the following character not special, so for example you could match +against a literal asterisk with \*. To match a literal +backslash, use \\. + +

flags controls various aspects of the matching process, and is a +boolean OR of zero or more of the following values (defined in +<fnmatch.h>): + +

+
FNM_PATHNAME
FNM_FILE_NAME
string is assumed to be a path name. No wildcard will ever match +/. + +
FNM_NOESCAPE
Do not interpret backslashes as quoting the following special character. + +
FNM_PERIOD
A leading period (at the beginning of string, or if +FNM_PATHNAME after a slash) is not matched by * or +? but must be matched explicitly. + +
FNM_LEADING_DIR
Means that string also matches pattern if some initial part +of string matches, and is followed by / and zero or more +characters. For example, foo* would match either foobar +or foobar/grill. + +
FNM_CASEFOLD
Ignores case when performing the comparison. + +
+ +
+ + +
+— Extension: FILE * fopen_unlocked (const char *path, const char * mode)
+
+

Opens and returns a FILE pointer via fopen. If the +operating system supports it, ensure that the stream is setup to avoid +any multi-threaded locking. Otherwise return the FILE pointer +unchanged. + +

+ + +
+— Extension: void freeargv (char **vector)
+
+

Free an argument vector that was built using buildargv. Simply +scans through vector, freeing the memory for each argument until +the terminating NULL is found, and then frees vector +itself. + +

+ + +
+— Extension: FILE * freopen_unlocked (const char * path, const char * mode, FILE * stream)
+
+

Opens and returns a FILE pointer via freopen. If the +operating system supports it, ensure that the stream is setup to avoid +any multi-threaded locking. Otherwise return the FILE pointer +unchanged. + +

+ + +
+— Replacement: long get_run_time (void)
+
+

Returns the time used so far, in microseconds. If possible, this is +the time used by this process, else it is the elapsed time since the +process started. + +

+ + +
+— Supplemental: char* getcwd (char *pathname, int len)
+
+

Copy the absolute pathname for the current working directory into +pathname, which is assumed to point to a buffer of at least +len bytes, and return a pointer to the buffer. If the current +directory's path doesn't fit in len characters, the result is +NULL and errno is set. If pathname is a null pointer, +getcwd will obtain len bytes of space using +malloc. + +

+ + +
+— Supplemental: int getpagesize (void)
+
+

Returns the number of bytes in a page of memory. This is the +granularity of many of the system memory management routines. No +guarantee is made as to whether or not it is the same as the basic +memory management hardware page size. + +

+ + +
+— Supplemental: char* getpwd (void)
+
+

Returns the current working directory. This implementation caches the +result on the assumption that the process will not call chdir +between calls to getpwd. + +

+ + +
+— Supplemental: int gettimeofday (struct timeval *tp, void *tz)
+
+

Writes the current time to tp. This implementation requires +that tz be NULL. Returns 0 on success, -1 on failure. + +

+ + +
+— Extension: void hex_init (void)
+
+

Initializes the array mapping the current character set to +corresponding hex values. This function must be called before any +call to hex_p or hex_value. If you fail to call it, a +default ASCII-based table will normally be used on ASCII systems. + +

+ + +
+— Extension: int hex_p (int c)
+
+

Evaluates to non-zero if the given character is a valid hex character, +or zero if it is not. Note that the value you pass will be cast to +unsigned char within the macro. + +

+ + +
+— Extension: unsigned int hex_value (int c)
+
+

Returns the numeric equivalent of the given character when interpreted +as a hexadecimal digit. The result is undefined if you pass an +invalid hex digit. Note that the value you pass will be cast to +unsigned char within the macro. + +

The hex_value macro returns unsigned int, rather than +signed int, to make it easier to use in parsing addresses from +hex dump files: a signed int would be sign-extended when +converted to a wider unsigned type — like bfd_vma, on some +systems. + +

+ + +
+— Supplemental: char* index (char *s, int c)
+
+

Returns a pointer to the first occurrence of the character c in +the string s, or NULL if not found. The use of index is +deprecated in new programs in favor of strchr. + +

+ + +
+— Supplemental: void insque (struct qelem *elem, struct qelem *pred)
+— Supplemental: void remque (struct qelem *elem)
+
+

Routines to manipulate queues built from doubly linked lists. The +insque routine inserts elem in the queue immediately +after pred. The remque routine removes elem from +its containing queue. These routines expect to be passed pointers to +structures which have as their first members a forward pointer and a +back pointer, like this prototype (although no prototype is provided): + +

          struct qelem {
+            struct qelem *q_forw;
+            struct qelem *q_back;
+            char q_data[];
+          };
+     
+
+ + +
+— Extension: ISALPHA (c)
+— Extension: ISALNUM (c)
+— Extension: ISBLANK (c)
+— Extension: ISCNTRL (c)
+— Extension: ISDIGIT (c)
+— Extension: ISGRAPH (c)
+— Extension: ISLOWER (c)
+— Extension: ISPRINT (c)
+— Extension: ISPUNCT (c)
+— Extension: ISSPACE (c)
+— Extension: ISUPPER (c)
+— Extension: ISXDIGIT (c)
+
+

These twelve macros are defined by safe-ctype.h. Each has the +same meaning as the corresponding macro (with name in lowercase) +defined by the standard header ctype.h. For example, +ISALPHA returns true for alphabetic characters and false for +others. However, there are two differences between these macros and +those provided by ctype.h: + +

    +
  • These macros are guaranteed to have well-defined behavior for all +values representable by signed char and unsigned char, and +for EOF. + +
  • These macros ignore the current locale; they are true for these +fixed sets of characters: +

    ALPHA A-Za-z +
    ALNUM A-Za-z0-9 +
    BLANK space tab +
    CNTRL !PRINT +
    DIGIT 0-9 +
    GRAPH ALNUM || PUNCT +
    LOWER a-z +
    PRINT GRAPH || space +
    PUNCT `~!@#$%^&*()_-=+[{]}\|;:'",<.>/? +
    SPACE space tab \n \r \f \v +
    UPPER A-Z +
    XDIGIT 0-9A-Fa-f +
    + +

    Note that, if the host character set is ASCII or a superset thereof, +all these macros will return false for all values of char outside +the range of 7-bit ASCII. In particular, both ISPRINT and ISCNTRL return +false for characters with numeric values from 128 to 255. +

+

+ + +
+— Extension: ISIDNUM (c)
+— Extension: ISIDST (c)
+— Extension: IS_VSPACE (c)
+— Extension: IS_NVSPACE (c)
+— Extension: IS_SPACE_OR_NUL (c)
+— Extension: IS_ISOBASIC (c)
+

These six macros are defined by safe-ctype.h and provide +additional character classes which are useful when doing lexical +analysis of C or similar languages. They are true for the following +sets of characters: + +

IDNUM A-Za-z0-9_ +
IDST A-Za-z_ +
VSPACE \r \n +
NVSPACE space tab \f \v \0 +
SPACE_OR_NUL VSPACE || NVSPACE +
ISOBASIC VSPACE || NVSPACE || PRINT +
+

+ + +
+— Replacement: const char* lbasename (const char *name)
+
+

Given a pointer to a string containing a typical pathname +(/usr/src/cmd/ls/ls.c for example), returns a pointer to the +last component of the pathname (ls.c in this case). The +returned pointer is guaranteed to lie within the original +string. This latter fact is not true of many vendor C +libraries, which return special strings or modify the passed +strings for particular input. + +

In particular, the empty string returns the same empty string, +and a path ending in / returns the empty string after it. + +

+ + +
+— Replacement: const char* lrealpath (const char *name)
+
+

Given a pointer to a string containing a pathname, returns a canonical +version of the filename. Symlinks will be resolved, and “.” and “..” +components will be simplified. The returned value will be allocated using +malloc, or NULL will be returned on a memory allocation error. + +

+ + +
+— Extension: const char* make_relative_prefix (const char *progname, const char *bin_prefix, const char *prefix)
+
+

Given three paths progname, bin_prefix, prefix, +return the path that is in the same position relative to +progname's directory as prefix is relative to +bin_prefix. That is, a string starting with the directory +portion of progname, followed by a relative pathname of the +difference between bin_prefix and prefix. + +

If progname does not contain any directory separators, +make_relative_prefix will search PATH to find a program +named progname. Also, if progname is a symbolic link, +the symbolic link will be resolved. + +

For example, if bin_prefix is /alpha/beta/gamma/gcc/delta, +prefix is /alpha/beta/gamma/omega/, and progname is +/red/green/blue/gcc, then this function will return +/red/green/blue/../../omega/. + +

The return value is normally allocated via malloc. If no +relative prefix can be found, return NULL. + +

+ + +
+— Replacement: char* make_temp_file (const char *suffix)
+
+

Return a temporary file name (as a string) or NULL if unable to +create one. suffix is a suffix to append to the file name. The +string is malloced, and the temporary file has been created. + +

+ + +
+— Supplemental: void* memchr (const void *s, int c, size_t n)
+
+

This function searches memory starting at *s for the +character c. The search only ends with the first occurrence of +c, or after length characters; in particular, a null +character does not terminate the search. If the character c is +found within length characters of *s, a pointer +to the character is returned. If c is not found, then NULL is +returned. + +

+ + +
+— Supplemental: int memcmp (const void *x, const void *y, size_t count)
+
+

Compares the first count bytes of two areas of memory. Returns +zero if they are the same, a value less than zero if x is +lexically less than y, or a value greater than zero if x +is lexically greater than y. Note that lexical order is determined +as if comparing unsigned char arrays. + +

+ + +
+— Supplemental: void* memcpy (void *out, const void *in, size_t length)
+
+

Copies length bytes from memory region in to region +out. Returns a pointer to out. + +

+ + +
+— Supplemental: void* memmove (void *from, const void *to, size_t count)
+
+

Copies count bytes from memory area from to memory area +to, returning a pointer to to. + +

+ + +
+— Supplemental: void* mempcpy (void *out, const void *in, size_t length)
+
+

Copies length bytes from memory region in to region +out. Returns a pointer to out + length. + +

+ + +
+— Supplemental: void* memset (void *s, int c, size_t count)
+
+

Sets the first count bytes of s to the constant byte +c, returning a pointer to s. + +

+ + +
+— Replacement: int mkstemps (char *pattern, int suffix_len)
+
+

Generate a unique temporary file name from pattern. +pattern has the form: + +

             path/ccXXXXXXsuffix
+     
+

suffix_len tells us how long suffix is (it can be zero +length). The last six characters of pattern before suffix +must be XXXXXX; they are replaced with a string that makes the +filename unique. Returns a file descriptor open on the file for +reading and writing. + +

+ + +
+— Extension: void pex_free (struct pex_obj obj)
+
+

Clean up and free all data associated with obj. If you have not +yet called pex_get_times or pex_get_status, this will +try to kill the subprocesses. + +

+ + +
+— Extension: int pex_get_status (struct pex_obj *obj, int count, int *vector)
+
+

Returns the exit status of all programs run using obj. +count is the number of results expected. The results will be +placed into vector. The results are in the order of the calls +to pex_run. Returns 0 on error, 1 on success. + +

+ + +
+— Extension: int pex_get_times (struct pex_obj *obj, int count, struct pex_time *vector)
+
+

Returns the process execution times of all programs run using +obj. count is the number of results expected. The +results will be placed into vector. The results are in the +order of the calls to pex_run. Returns 0 on error, 1 on +success. + +

struct pex_time has the following fields of the type +unsigned long: user_seconds, +user_microseconds, system_seconds, +system_microseconds. On systems which do not support reporting +process times, all the fields will be set to 0. + +

+ + +
+— Extension: struct pex_obj * pex_init (int flags, const char *pname, const char *tempbase)
+
+

Prepare to execute one or more programs, with standard output of each +program fed to standard input of the next. This is a system +independent interface to execute a pipeline. + +

flags is a bitwise combination of the following: + + + +

PEX_RECORD_TIMES
Record subprocess times if possible. + +


PEX_USE_PIPES
Use pipes for communication between processes, if possible. + +


PEX_SAVE_TEMPS
Don't delete temporary files used for communication between +processes. + +
+ +

pname is the name of program to be executed, used in error +messages. tempbase is a base name to use for any required +temporary files; it may be NULL to use a randomly chosen name. + +

+ + +
+— Extension: FILE * pex_input_file (struct pex_obj *obj, int flags, const char *in_name)
+
+

Return a stream for a temporary file to pass to the first program in +the pipeline as input. + +

The name of the input file is chosen according to the same rules +pex_run uses to choose output file names, based on +in_name, obj and the PEX_SUFFIX bit in flags. + +

Don't call fclose on the returned stream; the first call to +pex_run closes it automatically. + +

If flags includes PEX_BINARY_OUTPUT, open the stream in +binary mode; otherwise, open it in the default mode. Including +PEX_BINARY_OUTPUT in flags has no effect on Unix. +

+ + +
+— Extension: FILE * pex_input_pipe (struct pex_obj *obj, int binary)
+
+

Return a stream fp for a pipe connected to the standard input of +the first program in the pipeline; fp is opened for writing. +You must have passed PEX_USE_PIPES to the pex_init call +that returned obj. + +

You must close fp using fclose yourself when you have +finished writing data to the pipeline. + +

The file descriptor underlying fp is marked not to be inherited +by child processes. + +

On systems that do not support pipes, this function returns +NULL, and sets errno to EINVAL. If you would +like to write code that is portable to all systems the pex +functions support, consider using pex_input_file instead. + +

There are two opportunities for deadlock using +pex_input_pipe: + +

    +
  • Most systems' pipes can buffer only a fixed amount of data; a process +that writes to a full pipe blocks. Thus, if you write to fp +before starting the first process, you run the risk of blocking when +there is no child process yet to read the data and allow you to +continue. pex_input_pipe makes no promises about the +size of the pipe's buffer, so if you need to write any data at all +before starting the first process in the pipeline, consider using +pex_input_file instead. + +
  • Using pex_input_pipe and pex_read_output together +may also cause deadlock. If the output pipe fills up, so that each +program in the pipeline is waiting for the next to read more data, and +you fill the input pipe by writing more data to fp, then there +is no way to make progress: the only process that could read data from +the output pipe is you, but you are blocked on the input pipe. + +
+ +
+ + +
+— Extension: const char * pex_one (int flags, const char *executable, char * const *argv, const char *pname, const char *outname, const char *errname, int *status, int *err)
+
+

An interface to permit the easy execution of a +single program. The return value and most of the parameters are as +for a call to pex_run. flags is restricted to a +combination of PEX_SEARCH, PEX_STDERR_TO_STDOUT, and +PEX_BINARY_OUTPUT. outname is interpreted as if +PEX_LAST were set. On a successful return, *status will +be set to the exit status of the program. + +

+ + +
+— Extension: FILE * pex_read_err (struct pex_obj *obj, int binary)
+
+

Returns a FILE pointer which may be used to read the standard +error of the last program in the pipeline. When this is used, +PEX_LAST should not be used in a call to pex_run. After +this is called, pex_run may no longer be called with the same +obj. binary should be non-zero if the file should be +opened in binary mode. Don't call fclose on the returned file; +it will be closed by pex_free. + +

+ + +
+— Extension: FILE * pex_read_output (struct pex_obj *obj, int binary)
+
+

Returns a FILE pointer which may be used to read the standard +output of the last program in the pipeline. When this is used, +PEX_LAST should not be used in a call to pex_run. After +this is called, pex_run may no longer be called with the same +obj. binary should be non-zero if the file should be +opened in binary mode. Don't call fclose on the returned file; +it will be closed by pex_free. + +

+ + +
+— Extension: const char * pex_run (struct pex_obj *obj, int flags, const char *executable, char * const *argv, const char *outname, const char *errname, int *err)
+
+

Execute one program in a pipeline. On success this returns +NULL. On failure it returns an error message, a statically +allocated string. + +

obj is returned by a previous call to pex_init. + +

flags is a bitwise combination of the following: + + + +

PEX_LAST
This must be set on the last program in the pipeline. In particular, +it should be set when executing a single program. The standard output +of the program will be sent to outname, or, if outname is +NULL, to the standard output of the calling program. Do not +set this bit if you want to call pex_read_output +(described below). After a call to pex_run with this bit set, +pex_run may no longer be called with the same obj. + +


PEX_SEARCH
Search for the program using the user's executable search path. + +


PEX_SUFFIX
outname is a suffix. See the description of outname, +below. + +


PEX_STDERR_TO_STDOUT
Send the program's standard error to standard output, if possible. + +


PEX_BINARY_INPUT
PEX_BINARY_OUTPUT
PEX_BINARY_ERROR
The standard input (output or error) of the program should be read (written) in +binary mode rather than text mode. These flags are ignored on systems +which do not distinguish binary mode and text mode, such as Unix. For +proper behavior these flags should match appropriately—a call to +pex_run using PEX_BINARY_OUTPUT should be followed by a +call using PEX_BINARY_INPUT. + +


PEX_STDERR_TO_PIPE
Send the program's standard error to a pipe, if possible. This flag +cannot be specified together with PEX_STDERR_TO_STDOUT. This +flag can be specified only on the last program in pipeline. + +
+ +

executable is the program to execute. argv is the set of +arguments to pass to the program; normally argv[0] will +be a copy of executable. + +

outname is used to set the name of the file to use for standard +output. There are two cases in which no output file will be used: + +

    +
  1. if PEX_LAST is not set in flags, and PEX_USE_PIPES +was set in the call to pex_init, and the system supports pipes + +
  2. if PEX_LAST is set in flags, and outname is +NULL +
+ +

Otherwise the code will use a file to hold standard +output. If PEX_LAST is not set, this file is considered to be +a temporary file, and it will be removed when no longer needed, unless +PEX_SAVE_TEMPS was set in the call to pex_init. + +

There are two cases to consider when setting the name of the file to +hold standard output. + +

    +
  1. PEX_SUFFIX is set in flags. In this case +outname may not be NULL. If the tempbase parameter +to pex_init was not NULL, then the output file name is +the concatenation of tempbase and outname. If +tempbase was NULL, then the output file name is a random +file name ending in outname. + +
  2. PEX_SUFFIX was not set in flags. In this +case, if outname is not NULL, it is used as the output +file name. If outname is NULL, and tempbase was +not NULL, the output file name is randomly chosen using +tempbase. Otherwise the output file name is chosen completely +at random. +
+ +

errname is the file name to use for standard error output. If +it is NULL, standard error is the same as the caller's. +Otherwise, standard error is written to the named file. + +

On an error return, the code sets *err to an errno +value, or to 0 if there is no relevant errno. + +

+ + +
+— Extension: const char * pex_run_in_environment (struct pex_obj *obj, int flags, const char *executable, char * const *argv, char * const *env, int env_size, const char *outname, const char *errname, int *err)
+
+

Execute one program in a pipeline, permitting the environment for the +program to be specified. Behaviour and parameters not listed below are +as for pex_run. + +

env is the environment for the child process, specified as an array of +character pointers. Each element of the array should point to a string of the +form VAR=VALUE, with the exception of the last element that must be +NULL. + +

+ + +
+— Extension: int pexecute (const char *program, char * const *argv, const char *this_pname, const char *temp_base, char **errmsg_fmt, char **errmsg_arg, int flags)
+
+

This is the old interface to execute one or more programs. It is +still supported for compatibility purposes, but is no longer +documented. + +

+ + +
+— Supplemental: void psignal (int signo, char *message)
+
+

Print message to the standard error, followed by a colon, +followed by the description of the signal specified by signo, +followed by a newline. + +

+ + +
+— Supplemental: int putenv (const char *string)
+
+

Uses setenv or unsetenv to put string into +the environment or remove it. If string is of the form +name=value the string is added; if no = is present the +name is unset/removed. + +

+ + +
+— Extension: int pwait (int pid, int *status, int flags)
+
+

Another part of the old execution interface. + +

+ + +
+— Supplement: long int random (void)
+— Supplement: void srandom (unsigned int seed)
+— Supplement: void* initstate (unsigned int seed, void *arg_state, unsigned long n)
+— Supplement: void* setstate (void *arg_state)
+
+

Random number functions. random returns a random number in the +range 0 to LONG_MAX. srandom initializes the random +number generator to some starting point determined by seed +(else, the values returned by random are always the same for each +run of the program). initstate and setstate allow fine-grained +control over the state of the random number generator. + +

+ + +
+— Extension: char* reconcat (char *optr, const char *s1, ..., NULL)
+
+

Same as concat, except that if optr is not NULL it +is freed after the string is created. This is intended to be useful +when you're extending an existing string or building up a string in a +loop: + +

            str = reconcat (str, "pre-", str, NULL);
+     
+
+ + +
+— Supplemental: int rename (const char *old, const char *new)
+
+

Renames a file from old to new. If new already +exists, it is removed. + +

+ + +
+— Supplemental: char* rindex (const char *s, int c)
+
+

Returns a pointer to the last occurrence of the character c in +the string s, or NULL if not found. The use of rindex is +deprecated in new programs in favor of strrchr. + +

+ + +
+— Supplemental: int setenv (const char *name, const char *value, int overwrite)
+— Supplemental: void unsetenv (const char *name)
+
+

setenv adds name to the environment with value +value. If the name was already present in the environment, +the new value will be stored only if overwrite is nonzero. +The companion unsetenv function removes name from the +environment. This implementation is not safe for multithreaded code. + +

+ + +
+— Extension: int signo_max (void)
+
+

Returns the maximum signal value for which a corresponding symbolic +name or message is available. Note that in the case where we use the +sys_siglist supplied by the system, it is possible for there to +be more symbolic names than messages, or vice versa. In fact, the +manual page for psignal(3b) explicitly warns that one should +check the size of the table (NSIG) before indexing it, since +new signal codes may be added to the system before they are added to +the table. Thus NSIG might be smaller than value implied by +the largest signo value defined in <signal.h>. + +

We return the maximum value that can be used to obtain a meaningful +symbolic name or message. + +

+ + +
+— Supplemental: int sigsetmask (int set)
+
+

Sets the signal mask to the one provided in set and returns +the old mask (which, for libiberty's implementation, will always +be the value 1). + +

+ + +
+— Supplemental: int snprintf (char *buf, size_t n, const char *format, ...)
+
+

This function is similar to sprintf, but it will print at most n +characters. On error the return value is -1, otherwise it returns the +number of characters that would have been printed had n been +sufficiently large, regardless of the actual value of n. Note +some pre-C99 system libraries do not implement this correctly so users +cannot generally rely on the return value if the system version of +this function is used. + +

+ + +
+— Extension: char* spaces (int count)
+
+

Returns a pointer to a memory region filled with the specified +number of spaces and null terminated. The returned pointer is +valid until at least the next call. + +

+ + +
+— Supplemental: char* stpcpy (char *dst, const char *src)
+
+

Copies the string src into dst. Returns a pointer to +dst + strlen(src). + +

+ + +
+— Supplemental: char* stpncpy (char *dst, const char *src, size_t len)
+
+

Copies the string src into dst, copying exactly len +and padding with zeros if necessary. If len < strlen(src) +then return dst + len, otherwise returns dst + +strlen(src). + +

+ + +
+— Supplemental: int strcasecmp (const char *s1, const char *s2)
+
+

A case-insensitive strcmp. + +

+ + +
+— Supplemental: char* strchr (const char *s, int c)
+
+

Returns a pointer to the first occurrence of the character c in +the string s, or NULL if not found. If c is itself the +null character, the results are undefined. + +

+ + +
+— Supplemental: char* strdup (const char *s)
+
+

Returns a pointer to a copy of s in memory obtained from +malloc, or NULL if insufficient memory was available. + +

+ + +
+— Replacement: const char* strerrno (int errnum)
+
+

Given an error number returned from a system call (typically returned +in errno), returns a pointer to a string containing the +symbolic name of that error number, as found in <errno.h>. + +

If the supplied error number is within the valid range of indices for +symbolic names, but no name is available for the particular error +number, then returns the string Error num, where num +is the error number. + +

If the supplied error number is not within the range of valid +indices, then returns NULL. + +

The contents of the location pointed to are only guaranteed to be +valid until the next call to strerrno. + +

+ + +
+— Supplemental: char* strerror (int errnoval)
+
+

Maps an errno number to an error message string, the contents +of which are implementation defined. On systems which have the +external variables sys_nerr and sys_errlist, these +strings will be the same as the ones used by perror. + +

If the supplied error number is within the valid range of indices for +the sys_errlist, but no message is available for the particular +error number, then returns the string Error num, where +num is the error number. + +

If the supplied error number is not a valid index into +sys_errlist, returns NULL. + +

The returned string is only guaranteed to be valid only until the +next call to strerror. + +

+ + +
+— Supplemental: int strncasecmp (const char *s1, const char *s2)
+
+

A case-insensitive strncmp. + +

+ + +
+— Supplemental: int strncmp (const char *s1, const char *s2, size_t n)
+
+

Compares the first n bytes of two strings, returning a value as +strcmp. + +

+ + +
+— Extension: char* strndup (const char *s, size_t n)
+
+

Returns a pointer to a copy of s with at most n characters +in memory obtained from malloc, or NULL if insufficient +memory was available. The result is always NUL terminated. + +

+ + +
+— Supplemental: char* strrchr (const char *s, int c)
+
+

Returns a pointer to the last occurrence of the character c in +the string s, or NULL if not found. If c is itself the +null character, the results are undefined. + +

+ + +
+— Supplemental: const char * strsignal (int signo)
+
+

Maps an signal number to an signal message string, the contents of +which are implementation defined. On systems which have the external +variable sys_siglist, these strings will be the same as the +ones used by psignal(). + +

If the supplied signal number is within the valid range of indices for +the sys_siglist, but no message is available for the particular +signal number, then returns the string Signal num, where +num is the signal number. + +

If the supplied signal number is not a valid index into +sys_siglist, returns NULL. + +

The returned string is only guaranteed to be valid only until the next +call to strsignal. + +

+ + +
+— Extension: const char* strsigno (int signo)
+
+

Given an signal number, returns a pointer to a string containing the +symbolic name of that signal number, as found in <signal.h>. + +

If the supplied signal number is within the valid range of indices for +symbolic names, but no name is available for the particular signal +number, then returns the string Signal num, where +num is the signal number. + +

If the supplied signal number is not within the range of valid +indices, then returns NULL. + +

The contents of the location pointed to are only guaranteed to be +valid until the next call to strsigno. + +

+ + +
+— Supplemental: char* strstr (const char *string, const char *sub)
+
+

This function searches for the substring sub in the string +string, not including the terminating null characters. A pointer +to the first occurrence of sub is returned, or NULL if the +substring is absent. If sub points to a string with zero +length, the function returns string. + +

+ + +
+— Supplemental: double strtod (const char *string, char **endptr)
+
+

This ISO C function converts the initial portion of string to a +double. If endptr is not NULL, a pointer to the +character after the last character used in the conversion is stored in +the location referenced by endptr. If no conversion is +performed, zero is returned and the value of string is stored in +the location referenced by endptr. + +

+ + +
+— Extension: int strtoerrno (const char *name)
+
+

Given the symbolic name of a error number (e.g., EACCES), map it +to an errno value. If no translation is found, returns 0. + +

+ + +
+— Supplemental: long int strtol (const char *string, char **endptr, int base)
+— Supplemental: unsigned long int strtoul (const char *string, char **endptr, int base)
+
+

The strtol function converts the string in string to a +long integer value according to the given base, which must be +between 2 and 36 inclusive, or be the special value 0. If base +is 0, strtol will look for the prefixes 0 and 0x +to indicate bases 8 and 16, respectively, else default to base 10. +When the base is 16 (either explicitly or implicitly), a prefix of +0x is allowed. The handling of endptr is as that of +strtod above. The strtoul function is the same, except +that the converted value is unsigned. + +

+ + +
+— Extension: int strtosigno (const char *name)
+
+

Given the symbolic name of a signal, map it to a signal number. If no +translation is found, returns 0. + +

+ + +
+— Function: int strverscmp (const char *s1, const char *s2)
+

The strverscmp function compares the string s1 against +s2, considering them as holding indices/version numbers. Return +value follows the same conventions as found in the strverscmp +function. In fact, if s1 and s2 contain no digits, +strverscmp behaves like strcmp. + +

Basically, we compare strings normally (character by character), until +we find a digit in each string - then we enter a special comparison +mode, where each sequence of digits is taken as a whole. If we reach the +end of these two parts without noticing a difference, we return to the +standard comparison mode. There are two types of numeric parts: +"integral" and "fractional" (those begin with a '0'). The types +of the numeric parts affect the way we sort them: + +

    +
  • integral/integral: we compare values as you would expect. + +
  • fractional/integral: the fractional part is less than the integral one. +Again, no surprise. + +
  • fractional/fractional: the things become a bit more complex. +If the common prefix contains only leading zeroes, the longest part is less +than the other one; else the comparison behaves normally. +
+ +
          strverscmp ("no digit", "no digit")
+              => 0    // same behavior as strcmp.
+          strverscmp ("item#99", "item#100")
+              => <0   // same prefix, but 99 < 100.
+          strverscmp ("alpha1", "alpha001")
+              => >0   // fractional part inferior to integral one.
+          strverscmp ("part1_f012", "part1_f01")
+              => >0   // two fractional parts.
+          strverscmp ("foo.009", "foo.0")
+              => <0   // idem, but with leading zeroes only.
+     
+

This function is especially useful when dealing with filename sorting, +because filenames frequently hold indices/version numbers. +

+ + +
+— Supplemental: char* tmpnam (char *s)
+
+

This function attempts to create a name for a temporary file, which +will be a valid file name yet not exist when tmpnam checks for +it. s must point to a buffer of at least L_tmpnam bytes, +or be NULL. Use of this function creates a security risk, and it must +not be used in new projects. Use mkstemp instead. + +

+ + +
+— Supplemental: int unlink_if_ordinary (const char*)
+
+

Unlinks the named file, unless it is special (e.g. a device file). +Returns 0 when the file was unlinked, a negative value (and errno set) when +there was an error deleting the file, and a positive value if no attempt +was made to unlink the file because it is special. + +

+ + +
+— Extension: void unlock_std_streams (void)
+
+

If the OS supports it, ensure that the standard I/O streams, +stdin, stdout and stderr are setup to avoid any +multi-threaded locking. Otherwise do nothing. + +

+ + +
+— Extension: void unlock_stream (FILE * stream)
+
+

If the OS supports it, ensure that the supplied stream is setup to +avoid any multi-threaded locking. Otherwise leave the FILE +pointer unchanged. If the stream is NULL do nothing. + +

+ + +
+— Extension: int vasprintf (char **resptr, const char *format, va_list args)
+
+

Like vsprintf, but instead of passing a pointer to a buffer, +you pass a pointer to a pointer. This function will compute the size +of the buffer needed, allocate memory with malloc, and store a +pointer to the allocated memory in *resptr. The value +returned is the same as vsprintf would return. If memory could +not be allocated, minus one is returned and NULL is stored in +*resptr. + +

+ + +
+— Supplemental: int vfork (void)
+
+

Emulates vfork by calling fork and returning its value. + +

+ + +
+— Supplemental: int vprintf (const char *format, va_list ap)
+— Supplemental: int vfprintf (FILE *stream, const char *format, va_list ap)
+— Supplemental: int vsprintf (char *str, const char *format, va_list ap)
+
+

These functions are the same as printf, fprintf, and +sprintf, respectively, except that they are called with a +va_list instead of a variable number of arguments. Note that +they do not call va_end; this is the application's +responsibility. In libiberty they are implemented in terms of the +nonstandard but common function _doprnt. + +

+ + +
+— Supplemental: int vsnprintf (char *buf, size_t n, const char *format, va_list ap)
+
+

This function is similar to vsprintf, but it will print at most +n characters. On error the return value is -1, otherwise it +returns the number of characters that would have been printed had +n been sufficiently large, regardless of the actual value of +n. Note some pre-C99 system libraries do not implement this +correctly so users cannot generally rely on the return value if the +system version of this function is used. + +

+ + +
+— Supplemental: int waitpid (int pid, int *status, int)
+
+

This is a wrapper around the wait function. Any “special” +values of pid depend on your implementation of wait, as +does the return value. The third argument is unused in libiberty. + +

+ + +
+— Extension: int writeargv (const char **argv, FILE *file)
+
+

Write each member of ARGV, handling all necessary quoting, to the file +named by FILE, separated by whitespace. Return 0 on success, non-zero +if an error occurred while writing to FILE. + +

+ + +
+— Function: int xatexit (void (*fn) (void))
+
+

Behaves as the standard atexit function, but with no limit on +the number of registered functions. Returns 0 on success, or −1 on +failure. If you use xatexit to register functions, you must use +xexit to terminate your program. + +

+ + +
+— Replacement: void* xcalloc (size_t nelem, size_t elsize)
+
+

Allocate memory without fail, and set it to zero. This routine functions +like calloc, but will behave the same as xmalloc if memory +cannot be found. + +

+ + +
+— Replacement: void xexit (int code)
+
+

Terminates the program. If any functions have been registered with +the xatexit replacement function, they will be called first. +Termination is handled via the system's normal exit call. + +

+ + +
+— Replacement: void* xmalloc (size_t)
+
+

Allocate memory without fail. If malloc fails, this will print +a message to stderr (using the name set by +xmalloc_set_program_name, +if any) and then call xexit. Note that it is therefore safe for +a program to contain #define malloc xmalloc in its source. + +

+ + +
+— Replacement: void xmalloc_failed (size_t)
+
+

This function is not meant to be called by client code, and is listed +here for completeness only. If any of the allocation routines fail, this +function will be called to print an error message and terminate execution. + +

+ + +
+— Replacement: void xmalloc_set_program_name (const char *name)
+
+

You can use this to set the name of the program used by +xmalloc_failed when printing a failure message. + +

+ + +
+— Replacement: void* xmemdup (void *input, size_t copy_size, size_t alloc_size)
+
+

Duplicates a region of memory without fail. First, alloc_size bytes +are allocated, then copy_size bytes from input are copied into +it, and the new memory is returned. If fewer bytes are copied than were +allocated, the remaining memory is zeroed. + +

+ + +
+— Replacement: void* xrealloc (void *ptr, size_t size)
+

Reallocate memory without fail. This routine functions like realloc, +but will behave the same as xmalloc if memory cannot be found. + +

+ + +
+— Replacement: char* xstrdup (const char *s)
+
+

Duplicates a character string without fail, using xmalloc to +obtain memory. + +

+ + +
+— Replacement: char* xstrerror (int errnum)
+
+

Behaves exactly like the standard strerror function, but +will never return a NULL pointer. + +

+ + +
+— Replacement: char* xstrndup (const char *s, size_t n)
+
+

Returns a pointer to a copy of s with at most n characters +without fail, using xmalloc to obtain memory. The result is +always NUL terminated. + +

+ +
+


+Next: , +Previous: Obstacks, +Up: Top +
+
+ +

Appendix A Licenses

+ + + + + +
+


+Next: , +Up: Licenses +
+
+ +

A.1 GNU LESSER GENERAL PUBLIC LICENSE

+ +

Version 2.1, February 1999
+ +
     Copyright © 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+     
+     [This is the first released version of the Lesser GPL.  It also counts
+     as the successor of the GNU Library Public License, version 2, hence the
+     version number 2.1.]
+
+

A.1.1 Preamble

+ +

The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software—to make sure the software is free for all its users. + +

This license, the Lesser General Public License, applies to some +specially designated software—typically libraries—of the Free +Software Foundation and other authors who decide to use it. You can use +it too, but we suggest you first think carefully about whether this +license or the ordinary General Public License is the better strategy to +use in any particular case, based on the explanations below. + +

When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of it +in new free programs; and that you are informed that you can do these +things. + +

To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + +

For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + +

We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + +

To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + +

Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + +

Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + +

When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + +

We call this license the Lesser General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + +

For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + +

In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + +

Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + +

The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +“work based on the library” and a “work that uses the library”. The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + +

    +
  1. This License Agreement applies to any software library or other program +which contains a notice placed by the copyright holder or other +authorized party saying it may be distributed under the terms of this +Lesser General Public License (also called “this License”). Each +licensee is addressed as “you”. + +

    A “library” means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + +

    The “Library”, below, refers to any such software library or work +which has been distributed under these terms. A “work based on the +Library” means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term “modification”.) + +

    “Source code” for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + +

    Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + +

  2. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + +

    You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + +

  3. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +
      +
    1. The modified work must itself be a software library. + +
    2. You must cause the files modified to carry prominent notices +stating that you changed the files and the date of any change. + +
    3. You must cause the whole of the work to be licensed at no +charge to all third parties under the terms of this License. + +
    4. If a facility in the modified Library refers to a function or a +table of data to be supplied by an application program that uses +the facility, other than as an argument passed when the facility +is invoked, then you must make a good faith effort to ensure that, +in the event an application does not supply such function or +table, the facility still operates, and performs whatever part of +its purpose remains meaningful. + +

      (For example, a function in a library to compute square roots has +a purpose that is entirely well-defined independent of the +application. Therefore, Subsection 2d requires that any +application-supplied function or table used by this function must +be optional: if the application does not supply it, the square +root function must still compute square roots.) +

    + +

    These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +

    Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +

    In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +

  4. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + +

    Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + +

    This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + +

  5. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + +

    If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + +

  6. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a “work that uses the Library”. Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + +

    However, linking a “work that uses the Library” with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a “work that uses the +library”. The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + +

    When a “work that uses the Library” uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + +

    If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + +

    Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + +

  7. As an exception to the Sections above, you may also combine or +link a “work that uses the Library” with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + +

    You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + +

      +
    1. Accompany the work with the complete corresponding +machine-readable source code for the Library including whatever +changes were used in the work (which must be distributed under +Sections 1 and 2 above); and, if the work is an executable linked +with the Library, with the complete machine-readable “work that +uses the Library”, as object code and/or source code, so that the +user can modify the Library and then relink to produce a modified +executable containing the modified Library. (It is understood +that the user who changes the contents of definitions files in the +Library will not necessarily be able to recompile the application +to use the modified definitions.) + +
    2. Use a suitable shared library mechanism for linking with the Library. A +suitable mechanism is one that (1) uses at run time a copy of the +library already present on the user's computer system, rather than +copying library functions into the executable, and (2) will operate +properly with a modified version of the library, if the user installs +one, as long as the modified version is interface-compatible with the +version that the work was made with. + +
    3. Accompany the work with a written offer, valid for at +least three years, to give the same user the materials +specified in Subsection 6a, above, for a charge no more +than the cost of performing this distribution. + +
    4. If distribution of the work is made by offering access to copy +from a designated place, offer equivalent access to copy the above +specified materials from the same place. + +
    5. Verify that the user has already received a copy of these +materials or that you have already sent this user a copy. +
    + +

    For an executable, the required form of the “work that uses the +Library” must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies the +executable. + +

    It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + +

  8. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + +
      +
    1. Accompany the combined library with a copy of the same work +based on the Library, uncombined with any other library +facilities. This must be distributed under the terms of the +Sections above. + +
    2. Give prominent notice with the combined library of the fact +that part of it is a work based on the Library, and explaining +where to find the accompanying uncombined form of the same work. +
    + +
  9. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + +
  10. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + +
  11. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + +
  12. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +

    If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +

    It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +

    This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +

  13. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + +
  14. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +

    Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +“any later version”, you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + +

  15. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + +
  16. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY “AS IS” WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +
  17. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. +
+ +

A.1.2 How to Apply These Terms to Your New Libraries

+ +

If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + +

To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +“copyright” line and a pointer to where the full notice is found. + +

     one line to give the library's name and an idea of what it does.
+     Copyright (C) year  name of author
+     
+     This library is free software; you can redistribute it and/or modify it
+     under the terms of the GNU Lesser General Public License as published by
+     the Free Software Foundation; either version 2.1 of the License, or (at
+     your option) any later version.
+     
+     This library is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     Lesser General Public License for more details.
+     
+     You should have received a copy of the GNU Lesser General Public
+     License along with this library; if not, write to the Free Software
+     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+     USA.
+
+

Also add information on how to contact you by electronic and paper mail. + +

You should also get your employer (if you work as a programmer) or your +school, if any, to sign a “copyright disclaimer” for the library, if +necessary. Here is a sample; alter the names: + +

     Yoyodyne, Inc., hereby disclaims all copyright interest in the library
+     `Frob' (a library for tweaking knobs) written by James Random Hacker.
+     
+     signature of Ty Coon, 1 April 1990
+     Ty Coon, President of Vice
+
+

That's all there is to it! + +

+


+Previous: Library Copying, +Up: Licenses +
+
+ +

A.2 BSD

+ +

Copyright © 1990 Regents of the University of California. +All rights reserved. + +

Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +

    + +
  1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +
  2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +
  3. [rescinded 22 July 1999] + +
  4. Neither the name of the University nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +
+ +

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS “AS IS” AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +

+


+Previous: Licenses, +Up: Top +
+
+ +

Index

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/binutils/standards.html b/arduino-0018-windows/hardware/tools/avr/doc/binutils/standards.html new file mode 100644 index 0000000..57c0c2f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/binutils/standards.html @@ -0,0 +1,5542 @@ + + +GNU Coding Standards + + + + + + + + + + +

GNU Coding Standards

+
+

Table of Contents

+ +
+ + + +
+


+Next: , +Previous: (dir), +Up: (dir) +
+
+ +

Version

+ +

The GNU coding standards, last updated July 22, 2007. + +

Copyright © 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software +Foundation, Inc. + +

Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 +or any later version published by the Free Software Foundation; +with no Invariant Sections, with no +Front-Cover Texts, and with no Back-Cover Texts. +A copy of the license is included in the section entitled “GNU +Free Documentation License”. + +

+ +
+


+Next: , +Previous: Top, +Up: Top +
+
+ +

1 About the GNU Coding Standards

+ +

The GNU Coding Standards were written by Richard Stallman and other GNU +Project volunteers. Their purpose is to make the GNU system clean, +consistent, and easy to install. This document can also be read as a +guide to writing portable, robust and reliable programs. It focuses on +programs written in C, but many of the rules and principles are useful +even if you write in another programming language. The rules often +state reasons for writing in a certain way. + +

This release of the GNU Coding Standards was last updated +July 22, 2007. + +

If you did not obtain this file directly from the GNU project and +recently, please check for a newer version. You can get the GNU +Coding Standards from the GNU web server in many +different formats, including the Texinfo source, PDF, HTML, DVI, plain +text, and more, at: http://www.gnu.org/prep/standards/. + +

Corrections or suggestions for this document should be sent to +bug-standards@gnu.org. If you make a suggestion, please include a +suggested new wording for it; our time is limited. We prefer a context +diff to the standards.texi or make-stds.texi files, but if +you don't have those files, please mail your suggestion anyway. + +

These standards cover the minimum of what is important when writing a +GNU package. Likely, the need for additional standards will come up. +Sometimes, you might suggest that such standards be added to this +document. If you think your standards would be generally useful, please +do suggest them. + +

You should also set standards for your package on many questions not +addressed or not firmly specified here. The most important point is to +be self-consistent—try to stick to the conventions you pick, and try +to document them as much as possible. That way, your program will be +more maintainable by others. + +

The GNU Hello program serves as an example of how to follow the GNU +coding standards for a trivial program. +http://www.gnu.org/software/hello/hello.html. + +

+


+Next: , +Previous: Preface, +Up: Top +
+
+ +

2 Keeping Free Software Free

+ +

+This chapter discusses how you can make sure that GNU software +avoids legal difficulties, and other related issues. + +

+ +
+


+Next: , +Up: Legal Issues +
+
+ +

2.1 Referring to Proprietary Programs

+ +

+Don't in any circumstances refer to Unix source code for or during +your work on GNU! (Or to any other proprietary programs.) + +

If you have a vague recollection of the internals of a Unix program, +this does not absolutely mean you can't write an imitation of it, but +do try to organize the imitation internally along different lines, +because this is likely to make the details of the Unix version +irrelevant and dissimilar to your results. + +

For example, Unix utilities were generally optimized to minimize +memory use; if you go for speed instead, your program will be very +different. You could keep the entire input file in memory and scan it +there instead of using stdio. Use a smarter algorithm discovered more +recently than the Unix program. Eliminate use of temporary files. Do +it in one pass instead of two (we did this in the assembler). + +

Or, on the contrary, emphasize simplicity instead of speed. For some +applications, the speed of today's computers makes simpler algorithms +adequate. + +

Or go for generality. For example, Unix programs often have static +tables or fixed-size strings, which make for arbitrary limits; use +dynamic allocation instead. Make sure your program handles NULs and +other funny characters in the input files. Add a programming language +for extensibility and write part of the program in that language. + +

Or turn some parts of the program into independently usable libraries. +Or use a simple garbage collector instead of tracking precisely when +to free memory, or use a new GNU facility such as obstacks. + +

+


+Next: , +Previous: Reading Non-Free Code, +Up: Legal Issues +
+
+ +

2.2 Accepting Contributions

+ +

+If the program you are working on is copyrighted by the Free Software +Foundation, then when someone else sends you a piece of code to add to +the program, we need legal papers to use it—just as we asked you to +sign papers initially. Each person who makes a nontrivial +contribution to a program must sign some sort of legal papers in order +for us to have clear title to the program; the main author alone is not +enough. + +

So, before adding in any contributions from other people, please tell +us, so we can arrange to get the papers. Then wait until we tell you +that we have received the signed papers, before you actually use the +contribution. + +

This applies both before you release the program and afterward. If +you receive diffs to fix a bug, and they make significant changes, we +need legal papers for that change. + +

This also applies to comments and documentation files. For copyright +law, comments and code are just text. Copyright applies to all kinds of +text, so we need legal papers for all kinds. + +

We know it is frustrating to ask for legal papers; it's frustrating for +us as well. But if you don't wait, you are going out on a limb—for +example, what if the contributor's employer won't sign a disclaimer? +You might have to take that code out again! + +

You don't need papers for changes of a few lines here or there, since +they are not significant for copyright purposes. Also, you don't need +papers if all you get from the suggestion is some ideas, not actual code +which you use. For example, if someone sent you one implementation, but +you write a different implementation of the same idea, you don't need to +get papers. + +

The very worst thing is if you forget to tell us about the other +contributor. We could be very embarrassed in court some day as a +result. + +

We have more detailed advice for maintainers of programs; if you have +reached the stage of actually maintaining a program for GNU (whether +released or not), please ask us for a copy. It is also available +online for your perusal: http://www.gnu.org/prep/maintain/. + +

+


+Previous: Contributions, +Up: Legal Issues +
+
+ +

2.3 Trademarks

+ +

+Please do not include any trademark acknowledgements in GNU software +packages or documentation. + +

Trademark acknowledgements are the statements that such-and-such is a +trademark of so-and-so. The GNU Project has no objection to the basic +idea of trademarks, but these acknowledgements feel like kowtowing, +and there is no legal requirement for them, so we don't use them. + +

What is legally required, as regards other people's trademarks, is to +avoid using them in ways which a reader might reasonably understand as +naming or labeling our own programs or activities. For example, since +“Objective C” is (or at least was) a trademark, we made sure to say +that we provide a “compiler for the Objective C language” rather +than an “Objective C compiler”. The latter would have been meant as +a shorter way of saying the former, but it does not explicitly state +the relationship, so it could be misinterpreted as using “Objective +C” as a label for the compiler rather than for the language. + +

Please don't use “win” as an abbreviation for Microsoft Windows in +GNU software or documentation. In hacker terminology, calling +something a “win” is a form of praise. If you wish to praise +Microsoft Windows when speaking on your own, by all means do so, but +not in GNU software. Usually we write the name “Windows” in full, +but when brevity is very important (as in file names and sometimes +symbol names), we abbreviate it to “w”. For instance, the files and +functions in Emacs that deal with Windows start with w32. + +

+


+Next: , +Previous: Legal Issues, +Up: Top +
+
+ +

3 General Program Design

+ +

+This chapter discusses some of the issues you should take into +account when designing your program. + + + + + + + + +

+ +
+


+Next: , +Up: Design Advice +
+
+ +

3.1 Which Languages to Use

+ +

+When you want to use a language that gets compiled and runs at high +speed, the best language to use is C. Using another language is like +using a non-standard feature: it will cause trouble for users. Even if +GCC supports the other language, users may find it inconvenient to have +to install the compiler for that other language in order to build your +program. For example, if you write your program in C++, people will +have to install the GNU C++ compiler in order to compile your program. + +

C has one other advantage over C++ and other compiled languages: more +people know C, so more people will find it easy to read and modify the +program if it is written in C. + +

So in general it is much better to use C, rather than the +comparable alternatives. + +

But there are two exceptions to that conclusion: + +

    +
  • It is no problem to use another language to write a tool specifically +intended for use with that language. That is because the only people +who want to build the tool will be those who have installed the other +language anyway. + +
  • If an application is of interest only to a narrow part of the community, +then the question of which language it is written in has less effect on +other people, so you may as well please yourself. +
+ +

Many programs are designed to be extensible: they include an interpreter +for a language that is higher level than C. Often much of the program +is written in that language, too. The Emacs editor pioneered this +technique. + +

The standard extensibility interpreter for GNU software is GUILE +(http://www.gnu.org/software/guile/), which implements the +language Scheme (an especially clean and simple dialect of Lisp). We +don't reject programs written in other “scripting languages” such as +Perl and Python, but using GUILE is very important for the overall +consistency of the GNU system. + +

+


+Next: , +Previous: Source Language, +Up: Design Advice +
+
+ +

3.2 Compatibility with Other Implementations

+ +

+With occasional exceptions, utility programs and libraries for GNU +should be upward compatible with those in Berkeley Unix, and upward +compatible with Standard C if Standard C specifies their +behavior, and upward compatible with posix if posix specifies +their behavior. + +

When these standards conflict, it is useful to offer compatibility +modes for each of them. + +

Standard C and posix prohibit many kinds of extensions. Feel +free to make the extensions anyway, and include a --ansi, +--posix, or --compatible option to turn them off. +However, if the extension has a significant chance of breaking any real +programs or scripts, then it is not really upward compatible. So you +should try to redesign its interface to make it upward compatible. + +

Many GNU programs suppress extensions that conflict with posix if the +environment variable POSIXLY_CORRECT is defined (even if it is +defined with a null value). Please make your program recognize this +variable if appropriate. + +

When a feature is used only by users (not by programs or command +files), and it is done poorly in Unix, feel free to replace it +completely with something totally different and better. (For example, +vi is replaced with Emacs.) But it is nice to offer a compatible +feature as well. (There is a free vi clone, so we offer it.) + +

Additional useful features are welcome regardless of whether +there is any precedent for them. + +

+


+Next: , +Previous: Compatibility, +Up: Design Advice +
+
+ +

3.3 Using Non-standard Features

+ +

+Many GNU facilities that already exist support a number of convenient +extensions over the comparable Unix facilities. Whether to use these +extensions in implementing your program is a difficult question. + +

On the one hand, using the extensions can make a cleaner program. +On the other hand, people will not be able to build the program +unless the other GNU tools are available. This might cause the +program to work on fewer kinds of machines. + +

With some extensions, it might be easy to provide both alternatives. +For example, you can define functions with a “keyword” INLINE +and define that as a macro to expand into either inline or +nothing, depending on the compiler. + +

In general, perhaps it is best not to use the extensions if you can +straightforwardly do without them, but to use the extensions if they +are a big improvement. + +

An exception to this rule are the large, established programs (such as +Emacs) which run on a great variety of systems. Using GNU extensions in +such programs would make many users unhappy, so we don't do that. + +

Another exception is for programs that are used as part of compilation: +anything that must be compiled with other compilers in order to +bootstrap the GNU compilation facilities. If these require the GNU +compiler, then no one can compile them without having them installed +already. That would be extremely troublesome in certain cases. + +

+


+Next: , +Previous: Using Extensions, +Up: Design Advice +
+
+ +

3.4 Standard C and Pre-Standard C

+ +

+1989 Standard C is widespread enough now that it is ok to use its +features in new programs. There is one exception: do not ever use the +“trigraph” feature of Standard C. + +

1999 Standard C is not widespread yet, so please do not require its +features in programs. It is ok to use its features if they are present. + +

However, it is easy to support pre-standard compilers in most programs, +so if you know how to do that, feel free. If a program you are +maintaining has such support, you should try to keep it working. + +

To support pre-standard C, instead of writing function definitions in +standard prototype form, + +

     int
+     foo (int x, int y)
+     ...
+
+

write the definition in pre-standard style like this, + +

     int
+     foo (x, y)
+          int x, y;
+     ...
+
+

and use a separate declaration to specify the argument prototype: + +

     int foo (int, int);
+
+

You need such a declaration anyway, in a header file, to get the benefit +of prototypes in all the files where the function is called. And once +you have the declaration, you normally lose nothing by writing the +function definition in the pre-standard style. + +

This technique does not work for integer types narrower than int. +If you think of an argument as being of a type narrower than int, +declare it as int instead. + +

There are a few special cases where this technique is hard to use. For +example, if a function argument needs to hold the system type +dev_t, you run into trouble, because dev_t is shorter than +int on some machines; but you cannot use int instead, +because dev_t is wider than int on some machines. There +is no type you can safely use on all machines in a non-standard +definition. The only way to support non-standard C and pass such an +argument is to check the width of dev_t using Autoconf and choose +the argument type accordingly. This may not be worth the trouble. + +

In order to support pre-standard compilers that do not recognize +prototypes, you may want to use a preprocessor macro like this: + +

     /* Declare the prototype for a general external function.  */
+     #if defined (__STDC__) || defined (WINDOWSNT)
+     #define P_(proto) proto
+     #else
+     #define P_(proto) ()
+     #endif
+
+
+


+Previous: Standard C, +Up: Design Advice +
+
+ +

3.5 Conditional Compilation

+ +

When supporting configuration options already known when building your +program we prefer using if (... ) over conditional compilation, +as in the former case the compiler is able to perform more extensive +checking of all possible code paths. + +

For example, please write + +

       if (HAS_FOO)
+         ...
+       else
+         ...
+
+

instead of: + +

       #ifdef HAS_FOO
+         ...
+       #else
+         ...
+       #endif
+
+

A modern compiler such as GCC will generate exactly the same code in +both cases, and we have been using similar techniques with good success +in several projects. Of course, the former method assumes that +HAS_FOO is defined as either 0 or 1. + +

While this is not a silver bullet solving all portability problems, +and is not always appropriate, following this policy would have saved +GCC developers many hours, or even days, per year. + +

In the case of function-like macros like REVERSIBLE_CC_MODE in +GCC which cannot be simply used in if( ...) statements, there is +an easy workaround. Simply introduce another macro +HAS_REVERSIBLE_CC_MODE as in the following example: + +

       #ifdef REVERSIBLE_CC_MODE
+       #define HAS_REVERSIBLE_CC_MODE 1
+       #else
+       #define HAS_REVERSIBLE_CC_MODE 0
+       #endif
+
+
+


+Next: , +Previous: Design Advice, +Up: Top +
+
+ +

4 Program Behavior for All Programs

+ +

This chapter describes conventions for writing robust +software. It also describes general standards for error messages, the +command line interface, and how libraries should behave. + +

+ +
+


+Next: , +Up: Program Behavior +
+
+ +

4.1 Non-GNU Standards

+ +

The GNU Project regards standards published by other organizations as +suggestions, not orders. We consider those standards, but we do not +“obey” them. In developing a GNU program, you should implement +an outside standard's specifications when that makes the GNU system +better overall in an objective sense. When it doesn't, you shouldn't. + +

In most cases, following published standards is convenient for +users—it means that their programs or scripts will work more +portably. For instance, GCC implements nearly all the features of +Standard C as specified by that standard. C program developers would +be unhappy if it did not. And GNU utilities mostly follow +specifications of POSIX.2; shell script writers and users would be +unhappy if our programs were incompatible. + +

But we do not follow either of these specifications rigidly, and there +are specific points on which we decided not to follow them, so as to +make the GNU system better for users. + +

For instance, Standard C says that nearly all extensions to C are +prohibited. How silly! GCC implements many extensions, some of which +were later adopted as part of the standard. If you want these +constructs to give an error message as “required” by the standard, +you must specify --pedantic, which was implemented only so that +we can say “GCC is a 100% implementation of the standard,” not +because there is any reason to actually use it. + +

POSIX.2 specifies that df and du must output sizes by +default in units of 512 bytes. What users want is units of 1k, so +that is what we do by default. If you want the ridiculous behavior +“required” by POSIX, you must set the environment variable +POSIXLY_CORRECT (which was originally going to be named +POSIX_ME_HARDER). + +

GNU utilities also depart from the letter of the POSIX.2 specification +when they support long-named command-line options, and intermixing +options with ordinary arguments. This minor incompatibility with +POSIX is never a problem in practice, and it is very useful. + +

In particular, don't reject a new feature, or remove an old one, +merely because a standard says it is “forbidden” or “deprecated.” + +

+


+Next: , +Previous: Non-GNU Standards, +Up: Program Behavior +
+
+ +

4.2 Writing Robust Programs

+ +

Avoid arbitrary limits on the length or number of any data +structure, including file names, lines, files, and symbols, by allocating +all data structures dynamically. In most Unix utilities, “long lines +are silently truncated”. This is not acceptable in a GNU utility. + +

Utilities reading files should not drop NUL characters, or any other +nonprinting characters including those with codes above 0177. +The only sensible exceptions would be utilities specifically intended +for interface to certain types of terminals or printers +that can't handle those characters. +Whenever possible, try to make programs work properly with +sequences of bytes that represent multibyte characters, using encodings +such as UTF-8 and others. + +

Check every system call for an error return, unless you know you wish to +ignore errors. Include the system error text (from perror or +equivalent) in every error message resulting from a failing +system call, as well as the name of the file if any and the name of the +utility. Just “cannot open foo.c” or “stat failed” is not +sufficient. + +

Check every call to malloc or realloc to see if it +returned zero. Check realloc even if you are making the block +smaller; in a system that rounds block sizes to a power of 2, +realloc may get a different block if you ask for less space. + +

In Unix, realloc can destroy the storage block if it returns +zero. GNU realloc does not have this bug: if it fails, the +original block is unchanged. Feel free to assume the bug is fixed. If +you wish to run your program on Unix, and wish to avoid lossage in this +case, you can use the GNU malloc. + +

You must expect free to alter the contents of the block that was +freed. Anything you want to fetch from the block, you must fetch before +calling free. + +

If malloc fails in a noninteractive program, make that a fatal +error. In an interactive program (one that reads commands from the +user), it is better to abort the command and return to the command +reader loop. This allows the user to kill other processes to free up +virtual memory, and then try the command again. + +

Use getopt_long to decode arguments, unless the argument syntax +makes this unreasonable. + +

When static storage is to be written in during program execution, use +explicit C code to initialize it. Reserve C initialized declarations +for data that will not be changed. + + +

Try to avoid low-level interfaces to obscure Unix data structures (such +as file directories, utmp, or the layout of kernel memory), since these +are less likely to work compatibly. If you need to find all the files +in a directory, use readdir or some other high-level interface. +These are supported compatibly by GNU. + +

The preferred signal handling facilities are the BSD variant of +signal, and the posix sigaction function; the +alternative USG signal interface is an inferior design. + +

Nowadays, using the posix signal functions may be the easiest way +to make a program portable. If you use signal, then on GNU/Linux +systems running GNU libc version 1, you should include +bsd/signal.h instead of signal.h, so as to get BSD +behavior. It is up to you whether to support systems where +signal has only the USG behavior, or give up on them. + +

In error checks that detect “impossible” conditions, just abort. +There is usually no point in printing any message. These checks +indicate the existence of bugs. Whoever wants to fix the bugs will have +to read the source code and run a debugger. So explain the problem with +comments in the source. The relevant data will be in variables, which +are easy to examine with the debugger, so there is no point moving them +elsewhere. + +

Do not use a count of errors as the exit status for a program. +That does not work, because exit status values are limited to 8 +bits (0 through 255). A single run of the program might have 256 +errors; if you try to return 256 as the exit status, the parent process +will see 0 as the status, and it will appear that the program succeeded. + +

If you make temporary files, check the TMPDIR environment +variable; if that variable is defined, use the specified directory +instead of /tmp. + +

In addition, be aware that there is a possible security problem when +creating temporary files in world-writable directories. In C, you can +avoid this problem by creating temporary files in this manner: + +

     fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
+
+

or by using the mkstemps function from libiberty. + +

In bash, use set -C to avoid this problem. + +

+


+Next: , +Previous: Semantics, +Up: Program Behavior +
+
+ +

4.3 Library Behavior

+ +

+Try to make library functions reentrant. If they need to do dynamic +storage allocation, at least try to avoid any nonreentrancy aside from +that of malloc itself. + +

Here are certain name conventions for libraries, to avoid name +conflicts. + +

Choose a name prefix for the library, more than two characters long. +All external function and variable names should start with this +prefix. In addition, there should only be one of these in any given +library member. This usually means putting each one in a separate +source file. + +

An exception can be made when two external symbols are always used +together, so that no reasonable program could use one without the +other; then they can both go in the same file. + +

External symbols that are not documented entry points for the user +should have names beginning with _. The _ should be +followed by the chosen name prefix for the library, to prevent +collisions with other libraries. These can go in the same files with +user entry points if you like. + +

Static functions and variables can be used as you like and need not +fit any naming convention. + +

+


+Next: , +Previous: Libraries, +Up: Program Behavior +
+
+ +

4.4 Formatting Error Messages

+ +

+Error messages from compilers should look like this: + +

     source-file-name:lineno: message
+
+

If you want to mention the column number, use one of these formats: + +

     source-file-name:lineno:column: message
+     source-file-name:lineno.column: message
+     
+
+

Line numbers should start from 1 at the beginning of the file, and +column numbers should start from 1 at the beginning of the line. (Both +of these conventions are chosen for compatibility.) Calculate column +numbers assuming that space and all ASCII printing characters have +equal width, and assuming tab stops every 8 columns. + +

The error message can also give both the starting and ending positions +of the erroneous text. There are several formats so that you can +avoid redundant information such as a duplicate line number. +Here are the possible formats: + +

     source-file-name:lineno-1.column-1-lineno-2.column-2: message
+     source-file-name:lineno-1.column-1-column-2: message
+     source-file-name:lineno-1-lineno-2: message
+
+

When an error is spread over several files, you can use this format: + +

     file-1:lineno-1.column-1-file-2:lineno-2.column-2: message
+
+

Error messages from other noninteractive programs should look like this: + +

     program:source-file-name:lineno: message
+
+

when there is an appropriate source file, or like this: + +

     program: message
+
+

when there is no relevant source file. + +

If you want to mention the column number, use this format: + +

     program:source-file-name:lineno:column: message
+
+

In an interactive program (one that is reading commands from a +terminal), it is better not to include the program name in an error +message. The place to indicate which program is running is in the +prompt or with the screen layout. (When the same program runs with +input from a source other than a terminal, it is not interactive and +would do best to print error messages using the noninteractive style.) + +

The string message should not begin with a capital letter when +it follows a program name and/or file name, because that isn't the +beginning of a sentence. (The sentence conceptually starts at the +beginning of the line.) Also, it should not end with a period. + +

Error messages from interactive programs, and other messages such as +usage messages, should start with a capital letter. But they should not +end with a period. + +

+


+Next: , +Previous: Errors, +Up: Program Behavior +
+
+ +

4.5 Standards for Interfaces Generally

+ +

Please don't make the behavior of a utility depend on the name used +to invoke it. It is useful sometimes to make a link to a utility +with a different name, and that should not change what it does. + +

Instead, use a run time option or a compilation switch or both +to select among the alternate behaviors. + +

Likewise, please don't make the behavior of the program depend on the +type of output device it is used with. Device independence is an +important principle of the system's design; do not compromise it merely +to save someone from typing an option now and then. (Variation in error +message syntax when using a terminal is ok, because that is a side issue +that people do not depend on.) + +

If you think one behavior is most useful when the output is to a +terminal, and another is most useful when the output is a file or a +pipe, then it is usually best to make the default behavior the one that +is useful with output to a terminal, and have an option for the other +behavior. + +

Compatibility requires certain programs to depend on the type of output +device. It would be disastrous if ls or sh did not do so +in the way all users expect. In some of these cases, we supplement the +program with a preferred alternate version that does not depend on the +output device type. For example, we provide a dir program much +like ls except that its default output format is always +multi-column format. + +

+


+Next: , +Previous: User Interfaces, +Up: Program Behavior +
+
+ +

4.6 Standards for Graphical Interfaces

+ +

+When you write a program that provides a graphical user interface, +please make it work with X Windows and the GTK+ toolkit unless the +functionality specifically requires some alternative (for example, +“displaying jpeg images while in console mode”). + +

In addition, please provide a command-line interface to control the +functionality. (In many cases, the graphical user interface can be a +separate program which invokes the command-line program.) This is +so that the same jobs can be done from scripts. + +

Please also consider providing a CORBA interface (for use from GNOME), a +library interface (for use from C), and perhaps a keyboard-driven +console interface (for use by users from console mode). Once you are +doing the work to provide the functionality and the graphical interface, +these won't be much extra work. + +

+


+Next: , +Previous: Graphical Interfaces, +Up: Program Behavior +
+
+ +

4.7 Standards for Command Line Interfaces

+ +

+It is a good idea to follow the posix guidelines for the +command-line options of a program. The easiest way to do this is to use +getopt to parse them. Note that the GNU version of getopt +will normally permit options anywhere among the arguments unless the +special argument -- is used. This is not what posix +specifies; it is a GNU extension. + +

Please define long-named options that are equivalent to the +single-letter Unix-style options. We hope to make GNU more user +friendly this way. This is easy to do with the GNU function +getopt_long. + +

One of the advantages of long-named options is that they can be +consistent from program to program. For example, users should be able +to expect the “verbose” option of any GNU program which has one, to be +spelled precisely --verbose. To achieve this uniformity, look at +the table of common long-option names when you choose the option names +for your program (see Option Table). + +

It is usually a good idea for file names given as ordinary arguments to +be input files only; any output files would be specified using options +(preferably -o or --output). Even if you allow an output +file name as an ordinary argument for compatibility, try to provide an +option as another way to specify it. This will lead to more consistency +among GNU utilities, and fewer idiosyncrasies for users to remember. + +

All programs should support two standard options: --version +and --help. CGI programs should accept these as command-line +options, and also if given as the PATH_INFO; for instance, +visiting http://example.org/p.cgi/–help in a browser should +output the same information as invoking p.cgi --help from the +command line. + +

+ +
+


+Next: , +Up: Command-Line Interfaces +
+
+ +

4.7.1 --version

+ +

+The standard --version option should direct the program to +print information about its name, version, origin and legal status, +all on standard output, and then exit successfully. Other options and +arguments should be ignored once this is seen, and the program should +not perform its normal function. + +

The first line is meant to be easy for a program to parse; the version +number proper starts after the last space. In addition, it contains +the canonical name for this program, in this format: + +

     GNU Emacs 19.30
+
+

The program's name should be a constant string; don't compute it +from argv[0]. The idea is to state the standard or canonical +name for the program, not its file name. There are other ways to find +out the precise file name where a command is found in PATH. + +

If the program is a subsidiary part of a larger package, mention the +package name in parentheses, like this: + +

     emacsserver (GNU Emacs) 19.30
+
+

If the package has a version number which is different from this +program's version number, you can mention the package version number +just before the close-parenthesis. + +

If you need to mention the version numbers of libraries which +are distributed separately from the package which contains this program, +you can do so by printing an additional line of version info for each +library you want to mention. Use the same format for these lines as for +the first line. + +

Please do not mention all of the libraries that the program uses “just +for completeness”—that would produce a lot of unhelpful clutter. +Please mention library version numbers only if you find in practice that +they are very important to you in debugging. + +

The following line, after the version number line or lines, should be a +copyright notice. If more than one copyright notice is called for, put +each on a separate line. + +

Next should follow a line stating the license, preferably using one of +abbrevations below, and a brief statement that the program is free +software, and that users are free to copy and change it. Also mention +that there is no warranty, to the extent permitted by law. See +recommended wording below. + +

It is ok to finish the output with a list of the major authors of the +program, as a way of giving credit. + +

Here's an example of output that follows these rules: + +

     GNU hello 2.3
+     Copyright (C) 2007 Free Software Foundation, Inc.
+     License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+     This is free software: you are free to change and redistribute it.
+     There is NO WARRANTY, to the extent permitted by law.
+
+

You should adapt this to your program, of course, filling in the proper +year, copyright holder, name of program, and the references to +distribution terms, and changing the rest of the wording as necessary. + +

This copyright notice only needs to mention the most recent year in +which changes were made—there's no need to list the years for previous +versions' changes. You don't have to mention the name of the program in +these notices, if that is inconvenient, since it appeared in the first +line. (The rules are different for copyright notices in source files; +see Copyright Notices (Information for GNU Maintainers).) + +

Translations of the above lines must preserve the validity of the +copyright notices (see Internationalization). If the translation's +character set supports it, the (C) should be replaced with the +copyright symbol, as follows: + +

© + +

Write the word “Copyright” exactly like that, in English. Do not +translate it into another language. International treaties recognize +the English word “Copyright”; translations into other languages do not +have legal significance. + +

Finally, here is the table of our suggested license abbreviations. +Any abbreviation can be followed by vversion[+], meaning +that particular version, or later versions with the +, as shown +above. + +

In the case of exceptions for extra permissions with the GPL, we use +/ for a separator; the version number can follow the license +abbreviation as usual, as in the examples below. + +

+
GPL
GNU General Public License, http://www.gnu.org/licenses/gpl.html. + +
LGPL
GNU Lesser General Public License, http://www.gnu.org/licenses/lgpl.html. + +
GPL/Guile
GNU GPL with the exception for Guile; for example, GPLv3+/Guile means +the GNU GPL version 3 or later, with the extra exception for Guile. + +

GNU GPL with the exception for Ada. + +

Apache
The Apache Software Foundation license, +http://www.apache.org/licenses. + +
Artistic
The Artistic license used for Perl, http://www.perlfoundation.org/legal. + +
Expat
The Expat license, http://www.jclark.com/xml/copying.txt. + +
MPL
The Mozilla Public License, http://www.mozilla.org/MPL/. + +
OBSD
The original (4-clause) BSD license, incompatible with the GNU GPL +http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6. + +
PHP
The license used for PHP, http://www.php.net/license/. + +
public domain
The non-license that is being in the public domain, +http://www.gnu.org/licenses/license-list.html#PublicDomain. + +
Python
The license for Python, http://www.python.org/2.0.1/license.html. + +
RBSD
The revised (3-clause) BSD, compatible with the GNU GPL, +http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5. + +
X11
The simple non-copyleft license used for most versions of the X Window +system, http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3. + +
Zlib
The license for Zlib, http://www.gzip.org/zlib/zlib_license.html. + +
+ +

More information about these licenses and many more are on the GNU +licensing web pages, +http://www.gnu.org/licenses/license-list.html. + +

+


+Previous: --version, +Up: Command-Line Interfaces +
+
+ +

4.7.2 --help

+ +

+The standard --help option should output brief documentation +for how to invoke the program, on standard output, then exit +successfully. Other options and arguments should be ignored once this +is seen, and the program should not perform its normal function. + +

Near the end of the --help option's output there should be a line +that says where to mail bug reports. It should have this format: + +

     Report bugs to mailing-address.
+
+
+


+Next: , +Previous: Command-Line Interfaces, +Up: Program Behavior +
+
+ +

4.8 Table of Long Options

+ +

+Here is a table of long options used by GNU programs. It is surely +incomplete, but we aim to list all the options that a new program might +want to be compatible with. If you use names not already in the table, +please send bug-standards@gnu.org a list of them, with their +meanings, so we can update the table. + + + + + + +

+
after-date
-N in tar. + +
all
-a in du, ls, nm, stty, uname, +and unexpand. + +
all-text
-a in diff. + +
almost-all
-A in ls. + +
append
-a in etags, tee, time; +-r in tar. + +
archive
-a in cp. + +
archive-name
-n in shar. + +
arglength
-l in m4. + +
ascii
-a in diff. + +
assign
-v in gawk. + +
assume-new
-W in Make. + +
assume-old
-o in Make. + +
auto-check
-a in recode. + +
auto-pager
-a in wdiff. + +
auto-reference
-A in ptx. + +
avoid-wraps
-n in wdiff. + +
background
For server programs, run in the background. + +
backward-search
-B in ctags. + +
basename
-f in shar. + +
batch
Used in GDB. + +
baud
Used in GDB. + +
before
-b in tac. + +
binary
-b in cpio and diff. + +
bits-per-code
-b in shar. + +
block-size
Used in cpio and tar. + +
blocks
-b in head and tail. + +
break-file
-b in ptx. + +
brief
Used in various programs to make output shorter. + +
bytes
-c in head, split, and tail. + +
c++
-C in etags. + +
catenate
-A in tar. + +
cd
Used in various programs to specify the directory to use. + +
changes
-c in chgrp and chown. + +
classify
-F in ls. + +
colons
-c in recode. + +
command
-c in su; +-x in GDB. + +
compare
-d in tar. + +
compat
Used in gawk. + +
compress
-Z in tar and shar. + +
concatenate
-A in tar. + +
confirmation
-w in tar. + +
context
Used in diff. + +
copyleft
-W copyleft in gawk. + +
copyright
-C in ptx, recode, and wdiff; +-W copyright in gawk. + +
core
Used in GDB. + +
count
-q in who. + +
count-links
-l in du. + +
create
Used in tar and cpio. + +
cut-mark
-c in shar. + +
cxref
-x in ctags. + +
date
-d in touch. + +
debug
-d in Make and m4; +-t in Bison. + +
define
-D in m4. + +
defines
-d in Bison and ctags. + +
delete
-D in tar. + +
dereference
-L in chgrp, chown, cpio, du, +ls, and tar. + +
dereference-args
-D in du. + +
device
Specify an I/O device (special file name). + +
diacritics
-d in recode. + +
dictionary-order
-d in look. + +
diff
-d in tar. + +
digits
-n in csplit. + +
directory
Specify the directory to use, in various programs. In ls, it +means to show directories themselves rather than their contents. In +rm and ln, it means to not treat links to directories +specially. + +
discard-all
-x in strip. + +
discard-locals
-X in strip. + +
dry-run
-n in Make. + +
ed
-e in diff. + +
elide-empty-files
-z in csplit. + +
end-delete
-x in wdiff. + +
end-insert
-z in wdiff. + +
entire-new-file
-N in diff. + +
environment-overrides
-e in Make. + +
eof
-e in xargs. + +
epoch
Used in GDB. + +
error-limit
Used in makeinfo. + +
error-output
-o in m4. + +
escape
-b in ls. + +
exclude-from
-X in tar. + +
exec
Used in GDB. + +
exit
-x in xargs. + +
exit-0
-e in unshar. + +
expand-tabs
-t in diff. + +
expression
-e in sed. + +
extern-only
-g in nm. + +
extract
-i in cpio; +-x in tar. + +
faces
-f in finger. + +
fast
-f in su. + +
fatal-warnings
-E in m4. + +
file
-f in info, gawk, Make, mt, and tar; +-n in sed; +-r in touch. + +
field-separator
-F in gawk. + +
file-prefix
-b in Bison. + +
file-type
-F in ls. + +
files-from
-T in tar. + +
fill-column
Used in makeinfo. + +
flag-truncation
-F in ptx. + +
fixed-output-files
-y in Bison. + +
follow
-f in tail. + +
footnote-style
Used in makeinfo. + +
force
-f in cp, ln, mv, and rm. + +
force-prefix
-F in shar. + +
foreground
For server programs, run in the foreground; +in other words, don't do anything special to run the server +in the background. + +
format
Used in ls, time, and ptx. + +
freeze-state
-F in m4. + +
fullname
Used in GDB. + +
gap-size
-g in ptx. + +
get
-x in tar. + +
graphic
-i in ul. + +
graphics
-g in recode. + +
group
-g in install. + +
gzip
-z in tar and shar. + +
hashsize
-H in m4. + +
header
-h in objdump and recode + +
heading
-H in who. + +
help
Used to ask for brief usage information. + +
here-delimiter
-d in shar. + +
hide-control-chars
-q in ls. + +
html
In makeinfo, output HTML. + +
idle
-u in who. + +
ifdef
-D in diff. + +
ignore
-I in ls; +-x in recode. + +
ignore-all-space
-w in diff. + +
ignore-backups
-B in ls. + +
ignore-blank-lines
-B in diff. + +
ignore-case
-f in look and ptx; +-i in diff and wdiff. + +
ignore-errors
-i in Make. + +
ignore-file
-i in ptx. + +
ignore-indentation
-I in etags. + +
ignore-init-file
-f in Oleo. + +
ignore-interrupts
-i in tee. + +
ignore-matching-lines
-I in diff. + +
ignore-space-change
-b in diff. + +
ignore-zeros
-i in tar. + +
include
-i in etags; +-I in m4. + +
include-dir
-I in Make. + +
incremental
-G in tar. + +
info
-i, -l, and -m in Finger. + +
init-file
In some programs, specify the name of the file to read as the user's +init file. + +
initial
-i in expand. + +
initial-tab
-T in diff. + +
inode
-i in ls. + +
interactive
-i in cp, ln, mv, rm; +-e in m4; +-p in xargs; +-w in tar. + +
intermix-type
-p in shar. + +
iso-8601
Used in date + +
jobs
-j in Make. + +
just-print
-n in Make. + +
keep-going
-k in Make. + +
keep-files
-k in csplit. + +
kilobytes
-k in du and ls. + +
language
-l in etags. + +
less-mode
-l in wdiff. + +
level-for-gzip
-g in shar. + +
line-bytes
-C in split. + +
lines
Used in split, head, and tail. + +
link
-l in cpio. + +
lint
lint-old
Used in gawk. + +
list
-t in cpio; +-l in recode. + +
list
-t in tar. + +
literal
-N in ls. + +
load-average
-l in Make. + +
login
Used in su. + +
machine
Used in uname. + +
macro-name
-M in ptx. + +
mail
-m in hello and uname. + +
make-directories
-d in cpio. + +
makefile
-f in Make. + +
mapped
Used in GDB. + +
max-args
-n in xargs. + +
max-chars
-n in xargs. + +
max-lines
-l in xargs. + +
max-load
-l in Make. + +
max-procs
-P in xargs. + +
mesg
-T in who. + +
message
-T in who. + +
minimal
-d in diff. + +
mixed-uuencode
-M in shar. + +
mode
-m in install, mkdir, and mkfifo. + +
modification-time
-m in tar. + +
multi-volume
-M in tar. + +
name-prefix
-a in Bison. + +
nesting-limit
-L in m4. + +
net-headers
-a in shar. + +
new-file
-W in Make. + +
no-builtin-rules
-r in Make. + +
no-character-count
-w in shar. + +
no-check-existing
-x in shar. + +
no-common
-3 in wdiff. + +
no-create
-c in touch. + +
no-defines
-D in etags. + +
no-deleted
-1 in wdiff. + +
no-dereference
-d in cp. + +
no-inserted
-2 in wdiff. + +
no-keep-going
-S in Make. + +
no-lines
-l in Bison. + +
no-piping
-P in shar. + +
no-prof
-e in gprof. + +
no-regex
-R in etags. + +
no-sort
-p in nm. + +
no-splash
Don't print a startup splash screen. + +
no-split
Used in makeinfo. + +
no-static
-a in gprof. + +
no-time
-E in gprof. + +
no-timestamp
-m in shar. + +
no-validate
Used in makeinfo. + +
no-wait
Used in emacsclient. + +
no-warn
Used in various programs to inhibit warnings. + +
node
-n in info. + +
nodename
-n in uname. + +
nonmatching
-f in cpio. + +
nstuff
-n in objdump. + +
null
-0 in xargs. + +
number
-n in cat. + +
number-nonblank
-b in cat. + +
numeric-sort
-n in nm. + +
numeric-uid-gid
-n in cpio and ls. + +
nx
Used in GDB. + +
old-archive
-o in tar. + +
old-file
-o in Make. + +
one-file-system
-l in tar, cp, and du. + +
only-file
-o in ptx. + +
only-prof
-f in gprof. + +
only-time
-F in gprof. + +
options
-o in getopt, fdlist, fdmount, +fdmountd, and fdumount. + +
output
In various programs, specify the output file name. + +
output-prefix
-o in shar. + +
override
-o in rm. + +
overwrite
-c in unshar. + +
owner
-o in install. + +
paginate
-l in diff. + +
paragraph-indent
Used in makeinfo. + +
parents
-p in mkdir and rmdir. + +
pass-all
-p in ul. + +
pass-through
-p in cpio. + +
port
-P in finger. + +
portability
-c in cpio and tar. + +
posix
Used in gawk. + +
prefix-builtins
-P in m4. + +
prefix
-f in csplit. + +
preserve
Used in tar and cp. + +
preserve-environment
-p in su. + +
preserve-modification-time
-m in cpio. + +
preserve-order
-s in tar. + +
preserve-permissions
-p in tar. + +
print
-l in diff. + +
print-chars
-L in cmp. + +
print-data-base
-p in Make. + +
print-directory
-w in Make. + +
print-file-name
-o in nm. + +
print-symdefs
-s in nm. + +
printer
-p in wdiff. + +
prompt
-p in ed. + +
proxy
Specify an HTTP proxy. + +
query-user
-X in shar. + +
question
-q in Make. + +
quiet
Used in many programs to inhibit the usual output. Every +program accepting --quiet should accept --silent as a +synonym. + +
quiet-unshar
-Q in shar + +
quote-name
-Q in ls. + +
rcs
-n in diff. + +
re-interval
Used in gawk. + +
read-full-blocks
-B in tar. + +
readnow
Used in GDB. + +
recon
-n in Make. + +
record-number
-R in tar. + +
recursive
Used in chgrp, chown, cp, ls, diff, +and rm. + +
reference-limit
Used in makeinfo. + +
references
-r in ptx. + +
regex
-r in tac and etags. + +
release
-r in uname. + +
reload-state
-R in m4. + +
relocation
-r in objdump. + +
rename
-r in cpio. + +
replace
-i in xargs. + +
report-identical-files
-s in diff. + +
reset-access-time
-a in cpio. + +
reverse
-r in ls and nm. + +
reversed-ed
-f in diff. + +
right-side-defs
-R in ptx. + +
same-order
-s in tar. + +
same-permissions
-p in tar. + +
save
-g in stty. + +
se
Used in GDB. + +
sentence-regexp
-S in ptx. + +
separate-dirs
-S in du. + +
separator
-s in tac. + +
sequence
Used by recode to chose files or pipes for sequencing passes. + +
shell
-s in su. + +
show-all
-A in cat. + +
show-c-function
-p in diff. + +
show-ends
-E in cat. + +
show-function-line
-F in diff. + +
show-tabs
-T in cat. + +
silent
Used in many programs to inhibit the usual output. +Every program accepting +--silent should accept --quiet as a synonym. + +
size
-s in ls. + +
socket
Specify a file descriptor for a network server to use for its socket, +instead of opening and binding a new socket. This provides a way to +run, in a non-privileged process, a server that normally needs a +reserved port number. + +
sort
Used in ls. + +
source
-W source in gawk. + +
sparse
-S in tar. + +
speed-large-files
-H in diff. + +
split-at
-E in unshar. + +
split-size-limit
-L in shar. + +
squeeze-blank
-s in cat. + +
start-delete
-w in wdiff. + +
start-insert
-y in wdiff. + +
starting-file
Used in tar and diff to specify which file within +a directory to start processing with. + +
statistics
-s in wdiff. + +
stdin-file-list
-S in shar. + +
stop
-S in Make. + +
strict
-s in recode. + +
strip
-s in install. + +
strip-all
-s in strip. + +
strip-debug
-S in strip. + +
submitter
-s in shar. + +
suffix
-S in cp, ln, mv. + +
suffix-format
-b in csplit. + +
sum
-s in gprof. + +
summarize
-s in du. + +
symbolic
-s in ln. + +
symbols
Used in GDB and objdump. + +
synclines
-s in m4. + +
sysname
-s in uname. + +
tabs
-t in expand and unexpand. + +
tabsize
-T in ls. + +
terminal
-T in tput and ul. +-t in wdiff. + +
text
-a in diff. + +
text-files
-T in shar. + +
time
Used in ls and touch. + +
timeout
Specify how long to wait before giving up on some operation. + +
to-stdout
-O in tar. + +
total
-c in du. + +
touch
-t in Make, ranlib, and recode. + +
trace
-t in m4. + +
traditional
-t in hello; +-W traditional in gawk; +-G in ed, m4, and ptx. + +
tty
Used in GDB. + +
typedefs
-t in ctags. + +
typedefs-and-c++
-T in ctags. + +
typeset-mode
-t in ptx. + +
uncompress
-z in tar. + +
unconditional
-u in cpio. + +
undefine
-U in m4. + +
undefined-only
-u in nm. + +
update
-u in cp, ctags, mv, tar. + +
usage
Used in gawk; same as --help. + +
uuencode
-B in shar. + +
vanilla-operation
-V in shar. + +
verbose
Print more information about progress. Many programs support this. + +
verify
-W in tar. + +
version
Print the version number. + +
version-control
-V in cp, ln, mv. + +
vgrind
-v in ctags. + +
volume
-V in tar. + +
what-if
-W in Make. + +
whole-size-limit
-l in shar. + +
width
-w in ls and ptx. + +
word-regexp
-W in ptx. + +
writable
-T in who. + +
zeros
-z in gprof. +
+ +
+


+Next: , +Previous: Option Table, +Up: Program Behavior +
+
+ +

4.9 Memory Usage

+ +

+If a program typically uses just a few meg of memory, don't bother making any +effort to reduce memory usage. For example, if it is impractical for +other reasons to operate on files more than a few meg long, it is +reasonable to read entire input files into memory to operate on them. + +

However, for programs such as cat or tail, that can +usefully operate on very large files, it is important to avoid using a +technique that would artificially limit the size of files it can handle. +If a program works by lines and could be applied to arbitrary +user-supplied input files, it should keep only a line in memory, because +this is not very hard and users will want to be able to operate on input +files that are bigger than will fit in memory all at once. + +

If your program creates complicated data structures, just make them in +memory and give a fatal error if malloc returns zero. + +

+


+Previous: Memory Usage, +Up: Program Behavior +
+
+ +

4.10 File Usage

+ +

+Programs should be prepared to operate when /usr and /etc +are read-only file systems. Thus, if the program manages log files, +lock files, backup files, score files, or any other files which are +modified for internal purposes, these files should not be stored in +/usr or /etc. + +

There are two exceptions. /etc is used to store system +configuration information; it is reasonable for a program to modify +files in /etc when its job is to update the system configuration. +Also, if the user explicitly asks to modify one file in a directory, it +is reasonable for the program to store other files in the same +directory. + +

+


+Next: , +Previous: Program Behavior, +Up: Top +
+
+ +

5 Making The Best Use of C

+ +

This chapter provides advice on how best to use the C language +when writing GNU software. + +

+ +
+


+Next: , +Up: Writing C +
+
+ +

5.1 Formatting Your Source Code

+ +

+It is important to put the open-brace that starts the body of a C +function in column one, so that they will start a defun. Several +tools look for open-braces in column one to find the beginnings of C +functions. These tools will not work on code not formatted that way. + +

Avoid putting open-brace, open-parenthesis or open-bracket in column +one when they are inside a function, so that they won't start a defun. +The open-brace that starts a struct body can go in column one +if you find it useful to treat that definition as a defun. + +

It is also important for function definitions to start the name of the +function in column one. This helps people to search for function +definitions, and may also help certain tools recognize them. Thus, +using Standard C syntax, the format is this: + +

     static char *
+     concat (char *s1, char *s2)
+     {
+       ...
+     }
+
+

or, if you want to use traditional C syntax, format the definition like +this: + +

     static char *
+     concat (s1, s2)        /* Name starts in column one here */
+          char *s1, *s2;
+     {                     /* Open brace in column one here */
+       ...
+     }
+
+

In Standard C, if the arguments don't fit nicely on one line, +split it like this: + +

     int
+     lots_of_args (int an_integer, long a_long, short a_short,
+                   double a_double, float a_float)
+     ...
+
+

The rest of this section gives our recommendations for other aspects of +C formatting style, which is also the default style of the indent +program in version 1.2 and newer. It corresponds to the options + +

     -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2
+     -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob
+
+

We don't think of these recommendations as requirements, because it +causes no problems for users if two different programs have different +formatting styles. + +

But whatever style you use, please use it consistently, since a mixture +of styles within one program tends to look ugly. If you are +contributing changes to an existing program, please follow the style of +that program. + +

For the body of the function, our recommended style looks like this: + +

     if (x < foo (y, z))
+       haha = bar[4] + 5;
+     else
+       {
+         while (z)
+           {
+             haha += foo (z, z);
+             z--;
+           }
+         return ++x + bar ();
+       }
+
+

We find it easier to read a program when it has spaces before the +open-parentheses and after the commas. Especially after the commas. + +

When you split an expression into multiple lines, split it +before an operator, not after one. Here is the right way: + +

+

     if (foo_this_is_long && bar > win (x, y, z)
+         && remaining_condition)
+
+

Try to avoid having two operators of different precedence at the same +level of indentation. For example, don't write this: + +

     mode = (inmode[j] == VOIDmode
+             || GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])
+             ? outmode[j] : inmode[j]);
+
+

Instead, use extra parentheses so that the indentation shows the nesting: + +

     mode = ((inmode[j] == VOIDmode
+              || (GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j])))
+             ? outmode[j] : inmode[j]);
+
+

Insert extra parentheses so that Emacs will indent the code properly. +For example, the following indentation looks nice if you do it by hand, + +

     v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
+         + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000;
+
+

but Emacs would alter it. Adding a set of parentheses produces +something that looks equally nice, and which Emacs will preserve: + +

     v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000
+          + rup->ru_stime.tv_sec*1000 + rup->ru_stime.tv_usec/1000);
+
+

Format do-while statements like this: + +

     do
+       {
+         a = foo (a);
+       }
+     while (a > 0);
+
+

Please use formfeed characters (control-L) to divide the program into +pages at logical places (but not within a function). It does not matter +just how long the pages are, since they do not have to fit on a printed +page. The formfeeds should appear alone on lines by themselves. + +

+


+Next: , +Previous: Formatting, +Up: Writing C +
+
+ +

5.2 Commenting Your Work

+ +

+Every program should start with a comment saying briefly what it is for. +Example: fmt - filter for simple filling of text. This comment +should be at the top of the source file containing the main +function of the program. + +

Also, please write a brief comment at the start of each source file, +with the file name and a line or two about the overall purpose of the +file. + +

Please write the comments in a GNU program in English, because English +is the one language that nearly all programmers in all countries can +read. If you do not write English well, please write comments in +English as well as you can, then ask other people to help rewrite them. +If you can't write comments in English, please find someone to work with +you and translate your comments into English. + +

Please put a comment on each function saying what the function does, +what sorts of arguments it gets, and what the possible values of +arguments mean and are used for. It is not necessary to duplicate in +words the meaning of the C argument declarations, if a C type is being +used in its customary fashion. If there is anything nonstandard about +its use (such as an argument of type char * which is really the +address of the second character of a string, not the first), or any +possible values that would not work the way one would expect (such as, +that strings containing newlines are not guaranteed to work), be sure +to say so. + +

Also explain the significance of the return value, if there is one. + +

Please put two spaces after the end of a sentence in your comments, so +that the Emacs sentence commands will work. Also, please write +complete sentences and capitalize the first word. If a lower-case +identifier comes at the beginning of a sentence, don't capitalize it! +Changing the spelling makes it a different identifier. If you don't +like starting a sentence with a lower case letter, write the sentence +differently (e.g., “The identifier lower-case is ...”). + +

The comment on a function is much clearer if you use the argument +names to speak about the argument values. The variable name itself +should be lower case, but write it in upper case when you are speaking +about the value rather than the variable itself. Thus, “the inode +number NODE_NUM” rather than “an inode”. + +

There is usually no purpose in restating the name of the function in +the comment before it, because the reader can see that for himself. +There might be an exception when the comment is so long that the function +itself would be off the bottom of the screen. + +

There should be a comment on each static variable as well, like this: + +

     /* Nonzero means truncate lines in the display;
+        zero means continue them.  */
+     int truncate_lines;
+
+

Every #endif should have a comment, except in the case of short +conditionals (just a few lines) that are not nested. The comment should +state the condition of the conditional that is ending, including +its sense. #else should have a comment describing the condition +and sense of the code that follows. For example: + +

     #ifdef foo
+       ...
+     #else /* not foo */
+       ...
+     #endif /* not foo */
+     #ifdef foo
+       ...
+     #endif /* foo */
+
+

but, by contrast, write the comments this way for a #ifndef: + +

     #ifndef foo
+       ...
+     #else /* foo */
+       ...
+     #endif /* foo */
+     #ifndef foo
+       ...
+     #endif /* not foo */
+
+
+


+Next: , +Previous: Comments, +Up: Writing C +
+
+ +

5.3 Clean Use of C Constructs

+ +

+Please explicitly declare the types of all objects. For example, you +should explicitly declare all arguments to functions, and you should +declare functions to return int rather than omitting the +int. + +

Some programmers like to use the GCC -Wall option, and change the +code whenever it issues a warning. If you want to do this, then do. +Other programmers prefer not to use -Wall, because it gives +warnings for valid and legitimate code which they do not want to change. +If you want to do this, then do. The compiler should be your servant, +not your master. + +

Declarations of external functions and functions to appear later in the +source file should all go in one place near the beginning of the file +(somewhere before the first function definition in the file), or else +should go in a header file. Don't put extern declarations inside +functions. + +

It used to be common practice to use the same local variables (with +names like tem) over and over for different values within one +function. Instead of doing this, it is better to declare a separate local +variable for each distinct purpose, and give it a name which is +meaningful. This not only makes programs easier to understand, it also +facilitates optimization by good compilers. You can also move the +declaration of each local variable into the smallest scope that includes +all its uses. This makes the program even cleaner. + +

Don't use local variables or parameters that shadow global identifiers. + +

Don't declare multiple variables in one declaration that spans lines. +Start a new declaration on each line, instead. For example, instead +of this: + +

     int    foo,
+            bar;
+
+

write either this: + +

     int foo, bar;
+
+

or this: + +

     int foo;
+     int bar;
+
+

(If they are global variables, each should have a comment preceding it +anyway.) + +

When you have an if-else statement nested in another +if statement, always put braces around the if-else. +Thus, never write like this: + +

     if (foo)
+       if (bar)
+         win ();
+       else
+         lose ();
+
+

always like this: + +

     if (foo)
+       {
+         if (bar)
+           win ();
+         else
+           lose ();
+       }
+
+

If you have an if statement nested inside of an else +statement, either write else if on one line, like this, + +

     if (foo)
+       ...
+     else if (bar)
+       ...
+
+

with its then-part indented like the preceding then-part, +or write the nested if within braces like this: + +

     if (foo)
+       ...
+     else
+       {
+         if (bar)
+           ...
+       }
+
+

Don't declare both a structure tag and variables or typedefs in the +same declaration. Instead, declare the structure tag separately +and then use it to declare the variables or typedefs. + +

Try to avoid assignments inside if-conditions (assignments +inside while-conditions are ok). For example, don't write +this: + +

     if ((foo = (char *) malloc (sizeof *foo)) == 0)
+       fatal ("virtual memory exhausted");
+
+

instead, write this: + +

     foo = (char *) malloc (sizeof *foo);
+     if (foo == 0)
+       fatal ("virtual memory exhausted");
+
+

Don't make the program ugly to placate lint. Please don't insert any +casts to void. Zero without a cast is perfectly fine as a null +pointer constant, except when calling a varargs function. + +

+


+Next: , +Previous: Syntactic Conventions, +Up: Writing C +
+
+ +

5.4 Naming Variables, Functions, and Files

+ +

The names of global variables and functions in a program serve as +comments of a sort. So don't choose terse names—instead, look for +names that give useful information about the meaning of the variable or +function. In a GNU program, names should be English, like other +comments. + +

Local variable names can be shorter, because they are used only within +one context, where (presumably) comments explain their purpose. + +

Try to limit your use of abbreviations in symbol names. It is ok to +make a few abbreviations, explain what they mean, and then use them +frequently, but don't use lots of obscure abbreviations. + +

Please use underscores to separate words in a name, so that the Emacs +word commands can be useful within them. Stick to lower case; reserve +upper case for macros and enum constants, and for name-prefixes +that follow a uniform convention. + +

For example, you should use names like ignore_space_change_flag; +don't use names like iCantReadThis. + +

Variables that indicate whether command-line options have been +specified should be named after the meaning of the option, not after +the option-letter. A comment should state both the exact meaning of +the option and its letter. For example, + +

     /* Ignore changes in horizontal whitespace (-b).  */
+     int ignore_space_change_flag;
+
+

When you want to define names with constant integer values, use +enum rather than #define. GDB knows about enumeration +constants. + +

You might want to make sure that none of the file names would conflict +if the files were loaded onto an MS-DOS file system which shortens the +names. You can use the program doschk to test for this. + +

Some GNU programs were designed to limit themselves to file names of 14 +characters or less, to avoid file name conflicts if they are read into +older System V systems. Please preserve this feature in the existing +GNU programs that have it, but there is no need to do this in new GNU +programs. doschk also reports file names longer than 14 +characters. + +

+


+Next: , +Previous: Names, +Up: Writing C +
+
+ +

5.5 Portability between System Types

+ +

+In the Unix world, “portability” refers to porting to different Unix +versions. For a GNU program, this kind of portability is desirable, but +not paramount. + +

The primary purpose of GNU software is to run on top of the GNU kernel, +compiled with the GNU C compiler, on various types of cpu. So the +kinds of portability that are absolutely necessary are quite limited. +But it is important to support Linux-based GNU systems, since they +are the form of GNU that is popular. + +

Beyond that, it is good to support the other free operating systems +(*BSD), and it is nice to support other Unix-like systems if you want +to. Supporting a variety of Unix-like systems is desirable, although +not paramount. It is usually not too hard, so you may as well do it. +But you don't have to consider it an obligation, if it does turn out to +be hard. + +

The easiest way to achieve portability to most Unix-like systems is to +use Autoconf. It's unlikely that your program needs to know more +information about the host platform than Autoconf can provide, simply +because most of the programs that need such knowledge have already been +written. + +

Avoid using the format of semi-internal data bases (e.g., directories) +when there is a higher-level alternative (readdir). + +

As for systems that are not like Unix, such as MSDOS, Windows, VMS, MVS, +and older Macintosh systems, supporting them is often a lot of work. +When that is the case, it is better to spend your time adding features +that will be useful on GNU and GNU/Linux, rather than on supporting +other incompatible systems. + +

If you do support Windows, please do not abbreviate it as “win”. In +hacker terminology, calling something a “win” is a form of praise. +You're free to praise Microsoft Windows on your own if you want, but +please don't do this in GNU packages. Instead of abbreviating +“Windows” to “un”, you can write it in full or abbreviate it to +“woe” or “w”. In GNU Emacs, for instance, we use w32 in +file names of Windows-specific files, but the macro for Windows +conditionals is called WINDOWSNT. + +

It is a good idea to define the “feature test macro” +_GNU_SOURCE when compiling your C files. When you compile on GNU +or GNU/Linux, this will enable the declarations of GNU library extension +functions, and that will usually give you a compiler error message if +you define the same function names in some other way in your program. +(You don't have to actually use these functions, if you prefer +to make the program more portable to other systems.) + +

But whether or not you use these GNU extensions, you should avoid +using their names for any other meanings. Doing so would make it hard +to move your code into other GNU programs. + +

+


+Next: , +Previous: System Portability, +Up: Writing C +
+
+ +

5.6 Portability between cpus

+ +

Even GNU systems will differ because of differences among cpu +types—for example, difference in byte ordering and alignment +requirements. It is absolutely essential to handle these differences. +However, don't make any effort to cater to the possibility that an +int will be less than 32 bits. We don't support 16-bit machines +in GNU. + +

Similarly, don't make any effort to cater to the possibility that +long will be smaller than predefined types like size_t. +For example, the following code is ok: + +

     printf ("size = %lu\n", (unsigned long) sizeof array);
+     printf ("diff = %ld\n", (long) (pointer2 - pointer1));
+
+

1989 Standard C requires this to work, and we know of only one +counterexample: 64-bit programs on Microsoft Windows. We will +leave it to those who want to port GNU programs to that environment +to figure out how to do it. + +

Predefined file-size types like off_t are an exception: they are +longer than long on many platforms, so code like the above won't +work with them. One way to print an off_t value portably is to +print its digits yourself, one by one. + +

Don't assume that the address of an int object is also the +address of its least-significant byte. This is false on big-endian +machines. Thus, don't make the following mistake: + +

     int c;
+     ...
+     while ((c = getchar ()) != EOF)
+       write (file_descriptor, &c, 1);
+
+

Instead, use unsigned char as follows. (The unsigned +is for portability to unusual systems where char is signed and +where there is integer overflow checking.) + +

     int c;
+     while ((c = getchar ()) != EOF)
+       {
+         unsigned char u = c;
+         write (file_descriptor, &u, 1);
+       }
+
+

It used to be ok to not worry about the difference between pointers +and integers when passing arguments to functions. However, on most +modern 64-bit machines pointers are wider than int. +Conversely, integer types like long long int and off_t +are wider than pointers on most modern 32-bit machines. Hence it's +often better nowadays to use prototypes to define functions whose +argument types are not trivial. + +

In particular, if functions accept varying argument counts or types +they should be declared using prototypes containing ... and +defined using stdarg.h. For an example of this, please see the +Gnulib error module, which +declares and defines the following function: + +

     /* Print a message with `fprintf (stderr, FORMAT, ...)';
+        if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+        If STATUS is nonzero, terminate the program with `exit (STATUS)'.  */
+     
+     void error (int status, int errnum, const char *format, ...);
+
+

A simple way to use the Gnulib error module is to obtain the two +source files error.c and error.h from the Gnulib library +source code repository at +http://savannah.gnu.org/cgi-bin/viewcvs/gnulib/gnulib/lib/. +Here's a sample use: + +

     #include "error.h"
+     #include <errno.h>
+     #include <stdio.h>
+     
+     char *program_name = "myprogram";
+     
+     FILE *
+     xfopen (char const *name)
+     {
+       FILE *fp = fopen (name, "r");
+       if (! fp)
+         error (1, errno, "cannot read %s", name);
+       return fp;
+     }
+
+

Avoid casting pointers to integers if you can. Such casts greatly +reduce portability, and in most programs they are easy to avoid. In the +cases where casting pointers to integers is essential—such as, a Lisp +interpreter which stores type information as well as an address in one +word—you'll have to make explicit provisions to handle different word +sizes. You will also need to make provision for systems in which the +normal range of addresses you can get from malloc starts far away +from zero. + +

+


+Next: , +Previous: CPU Portability, +Up: Writing C +
+
+ +

5.7 Calling System Functions

+ +

+C implementations differ substantially. Standard C reduces but does +not eliminate the incompatibilities; meanwhile, many GNU packages still +support pre-standard compilers because this is not hard to do. This +chapter gives recommendations for how to use the more-or-less standard C +library functions to avoid unnecessary loss of portability. + +

    +
  • Don't use the return value of sprintf. It returns the number of +characters written on some systems, but not on all systems. + +
  • Be aware that vfprintf is not always available. + +
  • main should be declared to return type int. It should +terminate either by calling exit or by returning the integer +status code; make sure it cannot ever return an undefined value. + +

  • Don't declare system functions explicitly. + +

    Almost any declaration for a system function is wrong on some system. +To minimize conflicts, leave it to the system header files to declare +system functions. If the headers don't declare a function, let it +remain undeclared. + +

    While it may seem unclean to use a function without declaring it, in +practice this works fine for most system library functions on the +systems where this really happens; thus, the disadvantage is only +theoretical. By contrast, actual declarations have frequently caused +actual conflicts. + +

  • If you must declare a system function, don't specify the argument types. +Use an old-style declaration, not a Standard C prototype. The more you +specify about the function, the more likely a conflict. + +
  • In particular, don't unconditionally declare malloc or +realloc. + +

    Most GNU programs use those functions just once, in functions +conventionally named xmalloc and xrealloc. These +functions call malloc and realloc, respectively, and +check the results. + +

    Because xmalloc and xrealloc are defined in your program, +you can declare them in other files without any risk of type conflict. + +

    On most systems, int is the same length as a pointer; thus, the +calls to malloc and realloc work fine. For the few +exceptional systems (mostly 64-bit machines), you can use +conditionalized declarations of malloc and +realloc—or put these declarations in configuration files +specific to those systems. + +

  • The string functions require special treatment. Some Unix systems have +a header file string.h; others have strings.h. Neither +file name is portable. There are two things you can do: use Autoconf to +figure out which file to include, or don't include either file. + +
  • If you don't include either strings file, you can't get declarations for +the string functions from the header file in the usual way. + +

    That causes less of a problem than you might think. The newer standard +string functions should be avoided anyway because many systems still +don't support them. The string functions you can use are these: + +

              strcpy   strncpy   strcat   strncat
    +          strlen   strcmp    strncmp
    +          strchr   strrchr
    +     
    +

    The copy and concatenate functions work fine without a declaration as +long as you don't use their values. Using their values without a +declaration fails on systems where the width of a pointer differs from +the width of int, and perhaps in other cases. It is trivial to +avoid using their values, so do that. + +

    The compare functions and strlen work fine without a declaration +on most systems, possibly all the ones that GNU software runs on. +You may find it necessary to declare them conditionally on a +few systems. + +

    The search functions must be declared to return char *. Luckily, +there is no variation in the data type they return. But there is +variation in their names. Some systems give these functions the names +index and rindex; other systems use the names +strchr and strrchr. Some systems support both pairs of +names, but neither pair works on all systems. + +

    You should pick a single pair of names and use it throughout your +program. (Nowadays, it is better to choose strchr and +strrchr for new programs, since those are the standard +names.) Declare both of those names as functions returning char +*. On systems which don't support those names, define them as macros +in terms of the other pair. For example, here is what to put at the +beginning of your file (or in a header) if you want to use the names +strchr and strrchr throughout: + +

              #ifndef HAVE_STRCHR
    +          #define strchr index
    +          #endif
    +          #ifndef HAVE_STRRCHR
    +          #define strrchr rindex
    +          #endif
    +          
    +          char *strchr ();
    +          char *strrchr ();
    +     
    +
+ +

Here we assume that HAVE_STRCHR and HAVE_STRRCHR are +macros defined in systems where the corresponding functions exist. +One way to get them properly defined is to use Autoconf. + +

+


+Next: , +Previous: System Functions, +Up: Writing C +
+
+ +

5.8 Internationalization

+ +

+GNU has a library called GNU gettext that makes it easy to translate the +messages in a program into various languages. You should use this +library in every program. Use English for the messages as they appear +in the program, and let gettext provide the way to translate them into +other languages. + +

Using GNU gettext involves putting a call to the gettext macro +around each string that might need translation—like this: + +

     printf (gettext ("Processing file `%s'..."));
+
+

This permits GNU gettext to replace the string "Processing file +`%s'..." with a translated version. + +

Once a program uses gettext, please make a point of writing calls to +gettext when you add new strings that call for translation. + +

Using GNU gettext in a package involves specifying a text domain +name for the package. The text domain name is used to separate the +translations for this package from the translations for other packages. +Normally, the text domain name should be the same as the name of the +package—for example, coreutils for the GNU core utilities. + +

To enable gettext to work well, avoid writing code that makes +assumptions about the structure of words or sentences. When you want +the precise text of a sentence to vary depending on the data, use two or +more alternative string constants each containing a complete sentences, +rather than inserting conditionalized words or phrases into a single +sentence framework. + +

Here is an example of what not to do: + +

     printf ("%s is full", capacity > 5000000 ? "disk" : "floppy disk");
+
+

If you apply gettext to all strings, like this, + +

     printf (gettext ("%s is full"),
+             capacity > 5000000 ? gettext ("disk") : gettext ("floppy disk"));
+
+

the translator will hardly know that "disk" and "floppy disk" are meant to +be substituted in the other string. Worse, in some languages (like French) +the construction will not work: the translation of the word "full" depends +on the gender of the first part of the sentence; it happens to be not the +same for "disk" as for "floppy disk". + +

Complete sentences can be translated without problems: + +

     printf (capacity > 5000000 ? gettext ("disk is full")
+             : gettext ("floppy disk is full"));
+
+

A similar problem appears at the level of sentence structure with this +code: + +

     printf ("#  Implicit rule search has%s been done.\n",
+             f->tried_implicit ? "" : " not");
+
+

Adding gettext calls to this code cannot give correct results for +all languages, because negation in some languages requires adding words +at more than one place in the sentence. By contrast, adding +gettext calls does the job straightforwardly if the code starts +out like this: + +

     printf (f->tried_implicit
+             ? "#  Implicit rule search has been done.\n",
+             : "#  Implicit rule search has not been done.\n");
+
+

Another example is this one: + +

     printf ("%d file%s processed", nfiles,
+             nfiles != 1 ? "s" : "");
+
+

The problem with this example is that it assumes that plurals are made +by adding `s'. If you apply gettext to the format string, like this, + +

     printf (gettext ("%d file%s processed"), nfiles,
+             nfiles != 1 ? "s" : "");
+
+

the message can use different words, but it will still be forced to use +`s' for the plural. Here is a better way, with gettext being applied to +the two strings independently: + +

     printf ((nfiles != 1 ? gettext ("%d files processed")
+              : gettext ("%d file processed")),
+             nfiles);
+
+

But this still doesn't work for languages like Polish, which has three +plural forms: one for nfiles == 1, one for nfiles == 2, 3, 4, 22, 23, 24, ... +and one for the rest. The GNU ngettext function solves this problem: + +

     printf (ngettext ("%d files processed", "%d file processed", nfiles),
+             nfiles);
+
+
+


+Next: , +Previous: Internationalization, +Up: Writing C +
+
+ +

5.9 Character Set

+ +

+Sticking to the ASCII character set (plain text, 7-bit characters) is +preferred in GNU source code comments, text documents, and other +contexts, unless there is good reason to do something else because of +the application domain. For example, if source code deals with the +French Revolutionary calendar, it is OK if its literal strings contain +accented characters in month names like “Floréal”. Also, it is OK +to use non-ASCII characters to represent proper names of contributors in +change logs (see Change Logs). + +

If you need to use non-ASCII characters, you should normally stick with +one encoding, as one cannot in general mix encodings reliably. + +

+


+Next: , +Previous: Character Set, +Up: Writing C +
+
+ +

5.10 Quote Characters

+ +

+In the C locale, GNU programs should stick to plain ASCII for quotation +characters in messages to users: preferably 0x60 (`) for left +quotes and 0x27 (') for right quotes. It is ok, but not +required, to use locale-specific quotes in other locales. + +

The Gnulib quote and +quotearg modules provide a reasonably straightforward way to +support locale-specific quote characters, as well as taking care of +other issues, such as quoting a filename that itself contains a quote +character. See the Gnulib documentation for usage details. + +

In any case, the documentation for your program should clearly specify +how it does quoting, if different than the preferred method of ` +and '. This is especially important if the output of your +program is ever likely to be parsed by another program. + +

Quotation characters are a difficult area in the computing world at +this time: there are no true left or right quote characters in Latin1; +the ` character we use was standardized there as a grave +accent. Moreover, Latin1 is still not universally usable. + +

Unicode contains the unambiguous quote characters required, and its +common encoding UTF-8 is upward compatible with Latin1. However, +Unicode and UTF-8 are not universally well-supported, either. + +

This may change over the next few years, and then we will revisit +this. + +

+


+Previous: Quote Characters, +Up: Writing C +
+
+ +

5.11 Mmap

+ +

+Don't assume that mmap either works on all files or fails +for all files. It may work on some files and fail on others. + +

The proper way to use mmap is to try it on the specific file for +which you want to use it—and if mmap doesn't work, fall back on +doing the job in another way using read and write. + +

The reason this precaution is needed is that the GNU kernel (the HURD) +provides a user-extensible file system, in which there can be many +different kinds of “ordinary files.” Many of them support +mmap, but some do not. It is important to make programs handle +all these kinds of files. + +

+


+Next: , +Previous: Writing C, +Up: Top +
+
+ +

6 Documenting Programs

+ +

+A GNU program should ideally come with full free documentation, adequate +for both reference and tutorial purposes. If the package can be +programmed or extended, the documentation should cover programming or +extending it, as well as just using it. + +

+ + + +

6.1 GNU Manuals

+ +

The preferred document format for the GNU system is the Texinfo +formatting language. Every GNU package should (ideally) have +documentation in Texinfo both for reference and for learners. Texinfo +makes it possible to produce a good quality formatted book, using +TeX, and to generate an Info file. It is also possible to generate +HTML output from Texinfo source. See the Texinfo manual, either the +hardcopy, or the on-line version available through info or the +Emacs Info subsystem (C-h i). + +

Nowadays some other formats such as Docbook and Sgmltexi can be +converted automatically into Texinfo. It is ok to produce the Texinfo +documentation by conversion this way, as long as it gives good results. + +

Make sure your manual is clear to a reader who knows nothing about the +topic and reads it straight through. This means covering basic topics +at the beginning, and advanced topics only later. This also means +defining every specialized term when it is first used. + +

Programmers tend to carry over the structure of the program as the +structure for its documentation. But this structure is not +necessarily good for explaining how to use the program; it may be +irrelevant and confusing for a user. + +

Instead, the right way to structure documentation is according to the +concepts and questions that a user will have in mind when reading it. +This principle applies at every level, from the lowest (ordering +sentences in a paragraph) to the highest (ordering of chapter topics +within the manual). Sometimes this structure of ideas matches the +structure of the implementation of the software being documented—but +often they are different. An important part of learning to write good +documentation is to learn to notice when you have unthinkingly +structured the documentation like the implementation, stop yourself, +and look for better alternatives. + +

For example, each program in the GNU system probably ought to be +documented in one manual; but this does not mean each program should +have its own manual. That would be following the structure of the +implementation, rather than the structure that helps the user +understand. + +

Instead, each manual should cover a coherent topic. For example, +instead of a manual for diff and a manual for diff3, we +have one manual for “comparison of files” which covers both of those +programs, as well as cmp. By documenting these programs +together, we can make the whole subject clearer. + +

The manual which discusses a program should certainly document all of +the program's command-line options and all of its commands. It should +give examples of their use. But don't organize the manual as a list +of features. Instead, organize it logically, by subtopics. Address +the questions that a user will ask when thinking about the job that +the program does. Don't just tell the reader what each feature can +do—say what jobs it is good for, and show how to use it for those +jobs. Explain what is recommended usage, and what kinds of usage +users should avoid. + +

In general, a GNU manual should serve both as tutorial and reference. +It should be set up for convenient access to each topic through Info, +and for reading straight through (appendixes aside). A GNU manual +should give a good introduction to a beginner reading through from the +start, and should also provide all the details that hackers want. +The Bison manual is a good example of this—please take a look at it +to see what we mean. + +

That is not as hard as it first sounds. Arrange each chapter as a +logical breakdown of its topic, but order the sections, and write their +text, so that reading the chapter straight through makes sense. Do +likewise when structuring the book into chapters, and when structuring a +section into paragraphs. The watchword is, at each point, address +the most fundamental and important issue raised by the preceding text. + +

If necessary, add extra chapters at the beginning of the manual which +are purely tutorial and cover the basics of the subject. These provide +the framework for a beginner to understand the rest of the manual. The +Bison manual provides a good example of how to do this. + +

To serve as a reference, a manual should have an Index that list all the +functions, variables, options, and important concepts that are part of +the program. One combined Index should do for a short manual, but +sometimes for a complex package it is better to use multiple indices. +The Texinfo manual includes advice on preparing good index entries, see +Making Index Entries (GNU Texinfo), and +see Defining the Entries of an Index (GNU Texinfo). + +

Don't use Unix man pages as a model for how to write GNU documentation; +most of them are terse, badly structured, and give inadequate +explanation of the underlying concepts. (There are, of course, some +exceptions.) Also, Unix man pages use a particular format which is +different from what we use in GNU manuals. + +

Please include an email address in the manual for where to report +bugs in the text of the manual. + +

Please do not use the term “pathname” that is used in Unix +documentation; use “file name” (two words) instead. We use the term +“path” only for search paths, which are lists of directory names. + +

Please do not use the term “illegal” to refer to erroneous input to +a computer program. Please use “invalid” for this, and reserve the +term “illegal” for activities prohibited by law. + +

Please do not write () after a function name just to indicate +it is a function. foo () is not a function, it is a function +call with no arguments. + +

+


+Next: , +Previous: GNU Manuals, +Up: Documentation +
+
+ +

6.2 Doc Strings and Manuals

+ +

Some programming systems, such as Emacs, provide a documentation string +for each function, command or variable. You may be tempted to write a +reference manual by compiling the documentation strings and writing a +little additional text to go around them—but you must not do it. That +approach is a fundamental mistake. The text of well-written +documentation strings will be entirely wrong for a manual. + +

A documentation string needs to stand alone—when it appears on the +screen, there will be no other text to introduce or explain it. +Meanwhile, it can be rather informal in style. + +

The text describing a function or variable in a manual must not stand +alone; it appears in the context of a section or subsection. Other text +at the beginning of the section should explain some of the concepts, and +should often make some general points that apply to several functions or +variables. The previous descriptions of functions and variables in the +section will also have given information about the topic. A description +written to stand alone would repeat some of that information; this +redundancy looks bad. Meanwhile, the informality that is acceptable in +a documentation string is totally unacceptable in a manual. + +

The only good way to use documentation strings in writing a good manual +is to use them as a source of information for writing good text. + +

+


+Next: , +Previous: Doc Strings and Manuals, +Up: Documentation +
+
+ +

6.3 Manual Structure Details

+ +

+The title page of the manual should state the version of the programs or +packages documented in the manual. The Top node of the manual should +also contain this information. If the manual is changing more +frequently than or independent of the program, also state a version +number for the manual in both of these places. + +

Each program documented in the manual should have a node named +program Invocation or Invoking program. This +node (together with its subnodes, if any) should describe the program's +command line arguments and how to run it (the sort of information people +would look for in a man page). Start with an @example +containing a template for all the options and arguments that the program +uses. + +

Alternatively, put a menu item in some menu whose item name fits one of +the above patterns. This identifies the node which that item points to +as the node for this purpose, regardless of the node's actual name. + +

The --usage feature of the Info reader looks for such a node +or menu item in order to find the relevant text, so it is essential +for every Texinfo file to have one. + +

If one manual describes several programs, it should have such a node for +each program described in the manual. + +

+


+Next: , +Previous: Manual Structure Details, +Up: Documentation +
+
+ +

6.4 License for Manuals

+ +

+Please use the GNU Free Documentation License for all GNU manuals that +are more than a few pages long. Likewise for a collection of short +documents—you only need one copy of the GNU FDL for the whole +collection. For a single short document, you can use a very permissive +non-copyleft license, to avoid taking up space with a long license. + +

See http://www.gnu.org/copyleft/fdl-howto.html for more explanation +of how to employ the GFDL. + +

Note that it is not obligatory to include a copy of the GNU GPL or GNU +LGPL in a manual whose license is neither the GPL nor the LGPL. It can +be a good idea to include the program's license in a large manual; in a +short manual, whose size would be increased considerably by including +the program's license, it is probably better not to include it. + +

+


+Next: , +Previous: License for Manuals, +Up: Documentation +
+
+ +

6.5 Manual Credits

+ +

+Please credit the principal human writers of the manual as the authors, +on the title page of the manual. If a company sponsored the work, thank +the company in a suitable place in the manual, but do not cite the +company as an author. + +

+


+Next: , +Previous: Manual Credits, +Up: Documentation +
+
+ +

6.6 Printed Manuals

+ +

The FSF publishes some GNU manuals in printed form. To encourage sales +of these manuals, the on-line versions of the manual should mention at +the very start that the printed manual is available and should point at +information for getting it—for instance, with a link to the page +http://www.gnu.org/order/order.html. This should not be included +in the printed manual, though, because there it is redundant. + +

It is also useful to explain in the on-line forms of the manual how the +user can print out the manual from the sources. + +

+


+Next: , +Previous: Printed Manuals, +Up: Documentation +
+
+ +

6.7 The NEWS File

+ +

+In addition to its manual, the package should have a file named +NEWS which contains a list of user-visible changes worth +mentioning. In each new release, add items to the front of the file and +identify the version they pertain to. Don't discard old items; leave +them in the file after the newer items. This way, a user upgrading from +any previous version can see what is new. + +

If the NEWS file gets very long, move some of the older items +into a file named ONEWS and put a note at the end referring the +user to that file. + +

+


+Next: , +Previous: NEWS File, +Up: Documentation +
+
+ +

6.8 Change Logs

+ +

+Keep a change log to describe all the changes made to program source +files. The purpose of this is so that people investigating bugs in the +future will know about the changes that might have introduced the bug. +Often a new bug can be found by looking at what was recently changed. +More importantly, change logs can help you eliminate conceptual +inconsistencies between different parts of a program, by giving you a +history of how the conflicting concepts arose and who they came from. + +

+ +
+


+Next: , +Up: Change Logs +
+
+ +

6.8.1 Change Log Concepts

+ +

You can think of the change log as a conceptual “undo list” which +explains how earlier versions were different from the current version. +People can see the current version; they don't need the change log +to tell them what is in it. What they want from a change log is a +clear explanation of how the earlier version differed. + +

The change log file is normally called ChangeLog and covers an +entire directory. Each directory can have its own change log, or a +directory can use the change log of its parent directory–it's up to +you. + +

Another alternative is to record change log information with a version +control system such as RCS or CVS. This can be converted automatically +to a ChangeLog file using rcs2log; in Emacs, the command +C-x v a (vc-update-change-log) does the job. + +

There's no need to describe the full purpose of the changes or how they +work together. If you think that a change calls for explanation, you're +probably right. Please do explain it—but please put the explanation +in comments in the code, where people will see it whenever they see the +code. For example, “New function” is enough for the change log when +you add a function, because there should be a comment before the +function definition to explain what it does. + +

In the past, we recommended not mentioning changes in non-software +files (manuals, help files, etc.) in change logs. However, we've been +advised that it is a good idea to include them, for the sake of +copyright records. + +

However, sometimes it is useful to write one line to describe the +overall purpose of a batch of changes. + +

The easiest way to add an entry to ChangeLog is with the Emacs +command M-x add-change-log-entry. An entry should have an +asterisk, the name of the changed file, and then in parentheses the name +of the changed functions, variables or whatever, followed by a colon. +Then describe the changes you made to that function or variable. + +

+


+Next: , +Previous: Change Log Concepts, +Up: Change Logs +
+
+ +

6.8.2 Style of Change Logs

+ +

+Here are some simple examples of change log entries, starting with the +header line that says who made the change and when it was installed, +followed by descriptions of specific changes. (These examples are +drawn from Emacs and GCC.) + +

     1998-08-17  Richard Stallman  <rms@gnu.org>
+     
+     * register.el (insert-register): Return nil.
+     (jump-to-register): Likewise.
+     
+     * sort.el (sort-subr): Return nil.
+     
+     * tex-mode.el (tex-bibtex-file, tex-file, tex-region):
+     Restart the tex shell if process is gone or stopped.
+     (tex-shell-running): New function.
+     
+     * expr.c (store_one_arg): Round size up for move_block_to_reg.
+     (expand_call): Round up when emitting USE insns.
+     * stmt.c (assign_parms): Round size up for move_block_from_reg.
+
+

It's important to name the changed function or variable in full. Don't +abbreviate function or variable names, and don't combine them. +Subsequent maintainers will often search for a function name to find all +the change log entries that pertain to it; if you abbreviate the name, +they won't find it when they search. + +

For example, some people are tempted to abbreviate groups of function +names by writing * register.el ({insert,jump-to}-register); +this is not a good idea, since searching for jump-to-register or +insert-register would not find that entry. + +

Separate unrelated change log entries with blank lines. When two +entries represent parts of the same change, so that they work together, +then don't put blank lines between them. Then you can omit the file +name and the asterisk when successive entries are in the same file. + +

Break long lists of function names by closing continued lines with +), rather than ,, and opening the continuation with +( as in this example: + +

     * keyboard.c (menu_bar_items, tool_bar_items)
+     (Fexecute_extended_command): Deal with `keymap' property.
+
+

When you install someone else's changes, put the contributor's name in +the change log entry rather than in the text of the entry. In other +words, write this: + +

     2002-07-14  John Doe  <jdoe@gnu.org>
+     
+             * sewing.c: Make it sew.
+
+

rather than this: + +

     2002-07-14  Usual Maintainer  <usual@gnu.org>
+     
+             * sewing.c: Make it sew.  Patch by jdoe@gnu.org.
+
+

As for the date, that should be the date you applied the change. + +

+


+Next: , +Previous: Style of Change Logs, +Up: Change Logs +
+
+ +

6.8.3 Simple Changes

+ +

Certain simple kinds of changes don't need much detail in the change +log. + +

When you change the calling sequence of a function in a simple fashion, +and you change all the callers of the function to use the new calling +sequence, there is no need to make individual entries for all the +callers that you changed. Just write in the entry for the function +being called, “All callers changed”—like this: + +

     * keyboard.c (Fcommand_execute): New arg SPECIAL.
+     All callers changed.
+
+

When you change just comments or doc strings, it is enough to write an +entry for the file, without mentioning the functions. Just “Doc +fixes” is enough for the change log. + +

There's no technical need to make change log entries for documentation +files. This is because documentation is not susceptible to bugs that +are hard to fix. Documentation does not consist of parts that must +interact in a precisely engineered fashion. To correct an error, you +need not know the history of the erroneous passage; it is enough to +compare what the documentation says with the way the program actually +works. + +

However, you should keep change logs for documentation files when the +project gets copyright assignments from its contributors, so as to +make the records of authorship more accurate. + +

+


+Next: , +Previous: Simple Changes, +Up: Change Logs +
+
+ +

6.8.4 Conditional Changes

+ +

+C programs often contain compile-time #if conditionals. Many +changes are conditional; sometimes you add a new definition which is +entirely contained in a conditional. It is very useful to indicate in +the change log the conditions for which the change applies. + +

Our convention for indicating conditional changes is to use square +brackets around the name of the condition. + +

Here is a simple example, describing a change which is conditional but +does not have a function or entity name associated with it: + +

     * xterm.c [SOLARIS2]: Include string.h.
+
+

Here is an entry describing a new definition which is entirely +conditional. This new definition for the macro FRAME_WINDOW_P is +used only when HAVE_X_WINDOWS is defined: + +

     * frame.h [HAVE_X_WINDOWS] (FRAME_WINDOW_P): Macro defined.
+
+

Here is an entry for a change within the function init_display, +whose definition as a whole is unconditional, but the changes themselves +are contained in a #ifdef HAVE_LIBNCURSES conditional: + +

     * dispnew.c (init_display) [HAVE_LIBNCURSES]: If X, call tgetent.
+
+

Here is an entry for a change that takes affect only when +a certain macro is not defined: + +

     (gethostname) [!HAVE_SOCKETS]: Replace with winsock version.
+
+
+


+Previous: Conditional Changes, +Up: Change Logs +
+
+ +

6.8.5 Indicating the Part Changed

+ +

Indicate the part of a function which changed by using angle brackets +enclosing an indication of what the changed part does. Here is an entry +for a change in the part of the function sh-while-getopts that +deals with sh commands: + +

     * progmodes/sh-script.el (sh-while-getopts) <sh>: Handle case that
+     user-specified option string is empty.
+
+
+


+Next: , +Previous: Change Logs, +Up: Documentation +
+
+ +

6.9 Man Pages

+ +

+In the GNU project, man pages are secondary. It is not necessary or +expected for every GNU program to have a man page, but some of them do. +It's your choice whether to include a man page in your program. + +

When you make this decision, consider that supporting a man page +requires continual effort each time the program is changed. The time +you spend on the man page is time taken away from more useful work. + +

For a simple program which changes little, updating the man page may be +a small job. Then there is little reason not to include a man page, if +you have one. + +

For a large program that changes a great deal, updating a man page may +be a substantial burden. If a user offers to donate a man page, you may +find this gift costly to accept. It may be better to refuse the man +page unless the same person agrees to take full responsibility for +maintaining it—so that you can wash your hands of it entirely. If +this volunteer later ceases to do the job, then don't feel obliged to +pick it up yourself; it may be better to withdraw the man page from the +distribution until someone else agrees to update it. + +

When a program changes only a little, you may feel that the +discrepancies are small enough that the man page remains useful without +updating. If so, put a prominent note near the beginning of the man +page explaining that you don't maintain it and that the Texinfo manual +is more authoritative. The note should say how to access the Texinfo +documentation. + +

Be sure that man pages include a copyright statement and free +license. The simple all-permissive license is appropriate for simple +man pages: + +

     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.
+
+

For long man pages, with enough explanation and documentation that +they can be considered true manuals, use the GFDL (see License for Manuals). + +

Finally, the GNU help2man program +(http://www.gnu.org/software/help2man/) is one way to automate +generation of a man page, in this case from --help output. +This is sufficient in many cases. + +

+


+Previous: Man Pages, +Up: Documentation +
+
+ +

6.10 Reading other Manuals

+ +

There may be non-free books or documentation files that describe the +program you are documenting. + +

It is ok to use these documents for reference, just as the author of a +new algebra textbook can read other books on algebra. A large portion +of any non-fiction book consists of facts, in this case facts about how +a certain program works, and these facts are necessarily the same for +everyone who writes about the subject. But be careful not to copy your +outline structure, wording, tables or examples from preexisting non-free +documentation. Copying from free documentation may be ok; please check +with the FSF about the individual case. + +

+


+Next: , +Previous: Documentation, +Up: Top +
+
+ +

7 The Release Process

+ +

+Making a release is more than just bundling up your source files in a +tar file and putting it up for FTP. You should set up your software so +that it can be configured to run on a variety of systems. Your Makefile +should conform to the GNU standards described below, and your directory +layout should also conform to the standards discussed below. Doing so +makes it easy to include your package into the larger framework of +all GNU software. + +

+ + + +

7.1 How Configuration Should Work

+ +

+Each GNU distribution should come with a shell script named +configure. This script is given arguments which describe the +kind of machine and system you want to compile the program for. + +

The configure script must record the configuration options so +that they affect compilation. + +

One way to do this is to make a link from a standard name such as +config.h to the proper configuration file for the chosen system. +If you use this technique, the distribution should not contain a +file named config.h. This is so that people won't be able to +build the program without configuring it first. + +

Another thing that configure can do is to edit the Makefile. If +you do this, the distribution should not contain a file named +Makefile. Instead, it should include a file Makefile.in which +contains the input used for editing. Once again, this is so that people +won't be able to build the program without configuring it first. + +

If configure does write the Makefile, then Makefile +should have a target named Makefile which causes configure +to be rerun, setting up the same configuration that was set up last +time. The files that configure reads should be listed as +dependencies of Makefile. + +

All the files which are output from the configure script should +have comments at the beginning explaining that they were generated +automatically using configure. This is so that users won't think +of trying to edit them by hand. + +

The configure script should write a file named config.status +which describes which configuration options were specified when the +program was last configured. This file should be a shell script which, +if run, will recreate the same configuration. + +

The configure script should accept an option of the form +--srcdir=dirname to specify the directory where sources are found +(if it is not the current directory). This makes it possible to build +the program in a separate directory, so that the actual source directory +is not modified. + +

If the user does not specify --srcdir, then configure should +check both . and .. to see if it can find the sources. If +it finds the sources in one of these places, it should use them from +there. Otherwise, it should report that it cannot find the sources, and +should exit with nonzero status. + +

Usually the easy way to support --srcdir is by editing a +definition of VPATH into the Makefile. Some rules may need to +refer explicitly to the specified source directory. To make this +possible, configure can add to the Makefile a variable named +srcdir whose value is precisely the specified directory. + +

The configure script should also take an argument which specifies the +type of system to build the program for. This argument should look like +this: + +

     cpu-company-system
+
+

For example, an Athlon-based GNU/Linux system might be +i686-pc-linux-gnu. + +

The configure script needs to be able to decode all plausible +alternatives for how to describe a machine. Thus, +athlon-pc-gnu/linux would be a valid alias. There is a shell +script called +config.sub that you can use as a subroutine to validate system +types and canonicalize aliases. + +

The configure script should also take the option +--build=buildtype, which should be equivalent to a +plain buildtype argument. For example, configure +--build=i686-pc-linux-gnu is equivalent to configure +i686-pc-linux-gnu. When the build type is not specified by an option +or argument, the configure script should normally guess it using +the shell script +config.guess. + +

Other options are permitted to specify in more detail the software +or hardware present on the machine, to include or exclude optional parts +of the package, or to adjust the name of some tools or arguments to them: + +

+
--enable-feature[=parameter]
Configure the package to build and install an optional user-level +facility called feature. This allows users to choose which +optional features to include. Giving an optional parameter of +no should omit feature, if it is built by default. + +

No --enable option should ever cause one feature to +replace another. No --enable option should ever substitute one +useful behavior for another useful behavior. The only proper use for +--enable is for questions of whether to build part of the program +or exclude it. + +

--with-package
+The package package will be installed, so configure this package +to work with package. + + + +

Possible values of package include +gnu-as (or gas), gnu-ld, gnu-libc, +gdb, +x, +and +x-toolkit. + +

Do not use a --with option to specify the file name to use to +find certain files. That is outside the scope of what --with +options are for. + +

variable=value
Set the value of the variable variable to value. This is +used to override the default values of commands or arguments in the +build process. For example, the user could issue configure +CFLAGS=-g CXXFLAGS=-g to build with debugging information and without +the default optimization. + +

Specifying variables as arguments to configure, like this: +

          ./configure CC=gcc
+     
+

is preferable to setting them in environment variables: +

          CC=gcc ./configure
+     
+

as it helps to recreate the same configuration later with +config.status. +

+ +

All configure scripts should accept all of the “detail” +options and the variable settings, whether or not they make any +difference to the particular package at hand. In particular, they +should accept any option that starts with --with- or +--enable-. This is so users will be able to configure an +entire GNU source tree at once with a single set of options. + +

You will note that the categories --with- and --enable- +are narrow: they do not provide a place for any sort of option +you might think of. That is deliberate. We want to limit the possible +configuration options in GNU software. We do not want GNU programs to +have idiosyncratic configuration options. + +

Packages that perform part of the compilation process may support +cross-compilation. In such a case, the host and target machines for the +program may be different. + +

The configure script should normally treat the specified type of +system as both the host and the target, thus producing a program which +works for the same type of machine that it runs on. + +

To compile a program to run on a host type that differs from the build +type, use the configure option --host=hosttype, where +hosttype uses the same syntax as buildtype. The host type +normally defaults to the build type. + +

To configure a cross-compiler, cross-assembler, or what have you, you +should specify a target different from the host, using the configure +option --target=targettype. The syntax for +targettype is the same as for the host type. So the command would +look like this: + +

     ./configure --host=hosttype --target=targettype
+
+

The target type normally defaults to the host type. +Programs for which cross-operation is not meaningful need not accept the +--target option, because configuring an entire operating system for +cross-operation is not a meaningful operation. + +

Some programs have ways of configuring themselves automatically. If +your program is set up to do this, your configure script can simply +ignore most of its arguments. + + + + + + +

+


+Next: , +Previous: Configuration, +Up: Managing Releases +
+
+ +

7.2 Makefile Conventions

+ + +

+ + + + + + + + + + +

This +describes conventions for writing the Makefiles for GNU programs. +Using Automake will help you write a Makefile that follows these +conventions. + +

+ + + +

7.2.1 General Conventions for Makefiles

+ +

Every Makefile should contain this line: + +

     SHELL = /bin/sh
+
+

to avoid trouble on systems where the SHELL variable might be +inherited from the environment. (This is never a problem with GNU +make.) + +

Different make programs have incompatible suffix lists and +implicit rules, and this sometimes creates confusion or misbehavior. So +it is a good idea to set the suffix list explicitly using only the +suffixes you need in the particular Makefile, like this: + +

     .SUFFIXES:
+     .SUFFIXES: .c .o
+
+

The first line clears out the suffix list, the second introduces all +suffixes which may be subject to implicit rules in this Makefile. + +

Don't assume that . is in the path for command execution. When +you need to run programs that are a part of your package during the +make, please make sure that it uses ./ if the program is built as +part of the make or $(srcdir)/ if the file is an unchanging part +of the source code. Without one of these prefixes, the current search +path is used. + +

The distinction between ./ (the build directory) and +$(srcdir)/ (the source directory) is important because +users can build in a separate directory using the --srcdir option +to configure. A rule of the form: + +

     foo.1 : foo.man sedscript
+             sed -e sedscript foo.man > foo.1
+
+

will fail when the build directory is not the source directory, because +foo.man and sedscript are in the source directory. + +

When using GNU make, relying on VPATH to find the source +file will work in the case where there is a single dependency file, +since the make automatic variable $< will represent the +source file wherever it is. (Many versions of make set $< +only in implicit rules.) A Makefile target like + +

     foo.o : bar.c
+             $(CC) -I. -I$(srcdir) $(CFLAGS) -c bar.c -o foo.o
+
+

should instead be written as + +

     foo.o : bar.c
+             $(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@
+
+

in order to allow VPATH to work correctly. When the target has +multiple dependencies, using an explicit $(srcdir) is the easiest +way to make the rule work well. For example, the target above for +foo.1 is best written as: + +

     foo.1 : foo.man sedscript
+             sed -e $(srcdir)/sedscript $(srcdir)/foo.man > $@
+
+

GNU distributions usually contain some files which are not source +files—for example, Info files, and the output from Autoconf, Automake, +Bison or Flex. Since these files normally appear in the source +directory, they should always appear in the source directory, not in the +build directory. So Makefile rules to update them should put the +updated files in the source directory. + +

However, if a file does not appear in the distribution, then the +Makefile should not put it in the source directory, because building a +program in ordinary circumstances should not modify the source directory +in any way. + +

Try to make the build and installation targets, at least (and all their +subtargets) work correctly with a parallel make. + +

+


+Next: , +Previous: Makefile Basics, +Up: Makefile Conventions +
+
+ +

7.2.2 Utilities in Makefiles

+ +

Write the Makefile commands (and any shell scripts, such as +configure) to run in sh, not in csh. Don't use any +special features of ksh or bash. + +

The configure script and the Makefile rules for building and +installation should not use any utilities directly except these: + + + + +

     cat cmp cp diff echo egrep expr false grep install-info
+     ln ls mkdir mv pwd rm rmdir sed sleep sort tar test touch true
+
+

The compression program gzip can be used in the dist rule. + +

Stick to the generally supported options for these programs. For +example, don't use mkdir -p, convenient as it may be, because +most systems don't support it. + +

It is a good idea to avoid creating symbolic links in makefiles, since a +few systems don't support them. + +

The Makefile rules for building and installation can also use compilers +and related programs, but should do so via make variables so that the +user can substitute alternatives. Here are some of the programs we +mean: + +

     ar bison cc flex install ld ldconfig lex
+     make makeinfo ranlib texi2dvi yacc
+
+

Use the following make variables to run those programs: + +

     $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)
+     $(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)
+
+

When you use ranlib or ldconfig, you should make sure +nothing bad happens if the system does not have the program in question. +Arrange to ignore an error from that command, and print a message before +the command to tell the user that failure of this command does not mean +a problem. (The Autoconf AC_PROG_RANLIB macro can help with +this.) + +

If you use symbolic links, you should implement a fallback for systems +that don't have symbolic links. + +

Additional utilities that can be used via Make variables are: + +

     chgrp chmod chown mknod
+
+

It is ok to use other utilities in Makefile portions (or scripts) +intended only for particular systems where you know those utilities +exist. + +

+


+Next: , +Previous: Utilities in Makefiles, +Up: Makefile Conventions +
+
+ +

7.2.3 Variables for Specifying Commands

+ +

Makefiles should provide variables for overriding certain commands, options, +and so on. + +

In particular, you should run most utility programs via variables. +Thus, if you use Bison, have a variable named BISON whose default +value is set with BISON = bison, and refer to it with +$(BISON) whenever you need to use Bison. + +

File management utilities such as ln, rm, mv, and +so on, need not be referred to through variables in this way, since users +don't need to replace them with other programs. + +

Each program-name variable should come with an options variable that is +used to supply options to the program. Append FLAGS to the +program-name variable name to get the options variable name—for +example, BISONFLAGS. (The names CFLAGS for the C +compiler, YFLAGS for yacc, and LFLAGS for lex, are +exceptions to this rule, but we keep them because they are standard.) +Use CPPFLAGS in any compilation command that runs the +preprocessor, and use LDFLAGS in any compilation command that +does linking as well as in any direct use of ld. + +

If there are C compiler options that must be used for proper +compilation of certain files, do not include them in CFLAGS. +Users expect to be able to specify CFLAGS freely themselves. +Instead, arrange to pass the necessary options to the C compiler +independently of CFLAGS, by writing them explicitly in the +compilation commands or by defining an implicit rule, like this: + +

     CFLAGS = -g
+     ALL_CFLAGS = -I. $(CFLAGS)
+     .c.o:
+             $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
+
+

Do include the -g option in CFLAGS, because that is not +required for proper compilation. You can consider it a default +that is only recommended. If the package is set up so that it is +compiled with GCC by default, then you might as well include -O +in the default value of CFLAGS as well. + +

Put CFLAGS last in the compilation command, after other variables +containing compiler options, so the user can use CFLAGS to +override the others. + +

CFLAGS should be used in every invocation of the C compiler, +both those which do compilation and those which do linking. + +

Every Makefile should define the variable INSTALL, which is the +basic command for installing a file into the system. + +

Every Makefile should also define the variables INSTALL_PROGRAM +and INSTALL_DATA. (The default for INSTALL_PROGRAM should +be $(INSTALL); the default for INSTALL_DATA should be +${INSTALL} -m 644.) Then it should use those variables as the +commands for actual installation, for executables and non-executables +respectively. Minimal use of these variables is as follows: + +

     $(INSTALL_PROGRAM) foo $(bindir)/foo
+     $(INSTALL_DATA) libfoo.a $(libdir)/libfoo.a
+
+

However, it is preferable to support a DESTDIR prefix on the +target files, as explained in the next section. + +

Always use a file name, not a directory name, as the second argument of +the installation commands. Use a separate command for each file to be +installed. + +

+ +

7.2.4 DESTDIR: support for staged installs

+ +

+DESTDIR is a variable prepended to each installed target file, +like this: + +

     $(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
+     $(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
+
+

The DESTDIR variable is specified by the user on the make +command line. For example: + +

     make DESTDIR=/tmp/stage install
+
+

DESTDIR should be supported only in the install* and +uninstall* targets, as those are the only targets where it is +useful. + +

If your installation step would normally install +/usr/local/bin/foo and /usr/local/lib/libfoo.a, then an +installation invoked as in the example above would install +/tmp/stage/usr/local/bin/foo and +/tmp/stage/usr/local/lib/libfoo.a instead. + +

Prepending the variable DESTDIR to each target in this way +provides for staged installs, where the installed files are not +placed directly into their expected location but are instead copied +into a temporary location (DESTDIR). However, installed files +maintain their relative directory structure and any embedded file names +will not be modified. + +

You should not set the value of DESTDIR in your Makefile +at all; then the files are installed into their expected locations by +default. Also, specifying DESTDIR should not change the +operation of the software in any way, so its value should not be +included in any file contents. + +

DESTDIR support is commonly used in package creation. It is +also helpful to users who want to understand what a given package will +install where, and to allow users who don't normally have permissions +to install into protected areas to build and install before gaining +those permissions. Finally, it can be useful with tools such as +stow, where code is installed in one place but made to appear +to be installed somewhere else using symbolic links or special mount +operations. So, we strongly recommend GNU packages support +DESTDIR, though it is not an absolute requirement. + +

+


+Next: , +Previous: DESTDIR, +Up: Makefile Conventions +
+
+ +

7.2.5 Variables for Installation Directories

+ +

Installation directories should always be named by variables, so it is +easy to install in a nonstandard place. The standard names for these +variables and the values they should have in GNU packages are +described below. They are based on a standard file system layout; +variants of it are used in GNU/Linux and other modern operating +systems. + +

Installers are expected to override these values when calling +make (e.g., make prefix=/usr install or +configure (e.g., configure --prefix=/usr). GNU +packages should not try to guess which value should be appropriate for +these variables on the system they are being installed onto: use the +default settings specified here so that all GNU packages behave +identically, allowing the installer to achieve any desired layout. + +

These first two variables set the root for the installation. All the +other installation directories should be subdirectories of one of +these two, and nothing should be directly installed into these two +directories. + +

+
prefix
A prefix used in constructing the default values of the variables listed +below. The default value of prefix should be /usr/local. +When building the complete GNU system, the prefix will be empty and +/usr will be a symbolic link to /. +(If you are using Autoconf, write it as @prefix@.) + +

Running make install with a different value of prefix from +the one used to build the program should not recompile the +program. + +

exec_prefix
A prefix used in constructing the default values of some of the +variables listed below. The default value of exec_prefix should +be $(prefix). +(If you are using Autoconf, write it as @exec_prefix@.) + +

Generally, $(exec_prefix) is used for directories that contain +machine-specific files (such as executables and subroutine libraries), +while $(prefix) is used directly for other directories. + +

Running make install with a different value of exec_prefix +from the one used to build the program should not recompile the +program. +

+ +

Executable programs are installed in one of the following directories. + +

+
bindir
The directory for installing executable programs that users can run. +This should normally be /usr/local/bin, but write it as +$(exec_prefix)/bin. +(If you are using Autoconf, write it as @bindir@.) + +
sbindir
The directory for installing executable programs that can be run from +the shell, but are only generally useful to system administrators. This +should normally be /usr/local/sbin, but write it as +$(exec_prefix)/sbin. +(If you are using Autoconf, write it as @sbindir@.) + +
libexecdir
+The directory for installing executable programs to be run by other +programs rather than by users. This directory should normally be +/usr/local/libexec, but write it as $(exec_prefix)/libexec. +(If you are using Autoconf, write it as @libexecdir@.) + +

The definition of libexecdir is the same for all packages, so +you should install your data in a subdirectory thereof. Most packages +install their data under $(libexecdir)/package-name/, +possibly within additional subdirectories thereof, such as +$(libexecdir)/package-name/machine/version. +

+ +

Data files used by the program during its execution are divided into +categories in two ways. + +

    +
  • Some files are normally modified by programs; others are never normally +modified (though users may edit some of these). + +
  • Some files are architecture-independent and can be shared by all +machines at a site; some are architecture-dependent and can be shared +only by machines of the same kind and operating system; others may never +be shared between two machines. +
+ +

This makes for six different possibilities. However, we want to +discourage the use of architecture-dependent files, aside from object +files and libraries. It is much cleaner to make other data files +architecture-independent, and it is generally not hard. + +

Here are the variables Makefiles should use to specify directories +to put these various kinds of files in: + +

+
datarootdir
The root of the directory tree for read-only architecture-independent +data files. This should normally be /usr/local/share, but +write it as $(prefix)/share. (If you are using Autoconf, write +it as @datarootdir@.) datadir's default value is +based on this variable; so are infodir, mandir, and +others. + +
datadir
The directory for installing idiosyncratic read-only +architecture-independent data files for this program. This is usually +the same place as datarootdir, but we use the two separate +variables so that you can move these program-specific files without +altering the location for Info files, man pages, etc. + +

This should normally be /usr/local/share, but write it as +$(datarootdir). (If you are using Autoconf, write it as +@datadir@.) + +

The definition of datadir is the same for all packages, so you +should install your data in a subdirectory thereof. Most packages +install their data under $(datadir)/package-name/. + +

sysconfdir
The directory for installing read-only data files that pertain to a +single machine–that is to say, files for configuring a host. Mailer +and network configuration files, /etc/passwd, and so forth belong +here. All the files in this directory should be ordinary ASCII text +files. This directory should normally be /usr/local/etc, but +write it as $(prefix)/etc. +(If you are using Autoconf, write it as @sysconfdir@.) + +

Do not install executables here in this directory (they probably belong +in $(libexecdir) or $(sbindir)). Also do not install +files that are modified in the normal course of their use (programs +whose purpose is to change the configuration of the system excluded). +Those probably belong in $(localstatedir). + +

sharedstatedir
The directory for installing architecture-independent data files which +the programs modify while they run. This should normally be +/usr/local/com, but write it as $(prefix)/com. +(If you are using Autoconf, write it as @sharedstatedir@.) + +
localstatedir
The directory for installing data files which the programs modify while +they run, and that pertain to one specific machine. Users should never +need to modify files in this directory to configure the package's +operation; put such configuration information in separate files that go +in $(datadir) or $(sysconfdir). $(localstatedir) +should normally be /usr/local/var, but write it as +$(prefix)/var. +(If you are using Autoconf, write it as @localstatedir@.) +
+ +

These variables specify the directory for installing certain specific +types of files, if your program has them. Every GNU package should +have Info files, so every program needs infodir, but not all +need libdir or lispdir. + +

+
includedir
+The directory for installing header files to be included by user +programs with the C #include preprocessor directive. This +should normally be /usr/local/include, but write it as +$(prefix)/include. +(If you are using Autoconf, write it as @includedir@.) + +

Most compilers other than GCC do not look for header files in directory +/usr/local/include. So installing the header files this way is +only useful with GCC. Sometimes this is not a problem because some +libraries are only really intended to work with GCC. But some libraries +are intended to work with other compilers. They should install their +header files in two places, one specified by includedir and one +specified by oldincludedir. + +

oldincludedir
The directory for installing #include header files for use with +compilers other than GCC. This should normally be /usr/include. +(If you are using Autoconf, you can write it as @oldincludedir@.) + +

The Makefile commands should check whether the value of +oldincludedir is empty. If it is, they should not try to use +it; they should cancel the second installation of the header files. + +

A package should not replace an existing header in this directory unless +the header came from the same package. Thus, if your Foo package +provides a header file foo.h, then it should install the header +file in the oldincludedir directory if either (1) there is no +foo.h there or (2) the foo.h that exists came from the Foo +package. + +

To tell whether foo.h came from the Foo package, put a magic +string in the file—part of a comment—and grep for that string. + +

docdir
The directory for installing documentation files (other than Info) for +this package. By default, it should be +/usr/local/share/doc/yourpkg, but it should be written as +$(datarootdir)/doc/yourpkg. (If you are using Autoconf, +write it as @docdir@.) The yourpkg subdirectory, which +may include a version number, prevents collisions among files with +common names, such as README. + +
infodir
The directory for installing the Info files for this package. By +default, it should be /usr/local/share/info, but it should be +written as $(datarootdir)/info. (If you are using Autoconf, +write it as @infodir@.) infodir is separate from +docdir for compatibility with existing practice. + +
htmldir
dvidir
pdfdir
psdir
Directories for installing documentation files in the particular +format. They should all be set to $(docdir) by default. (If +you are using Autoconf, write them as @htmldir@, +@dvidir@, etc.) Packages which supply several translations +of their documentation should install them in +$(htmldir)/ll, $(pdfdir)/ll, etc. where +ll is a locale abbreviation such as en or pt_BR. + +
libdir
The directory for object files and libraries of object code. Do not +install executables here, they probably ought to go in $(libexecdir) +instead. The value of libdir should normally be +/usr/local/lib, but write it as $(exec_prefix)/lib. +(If you are using Autoconf, write it as @libdir@.) + +
lispdir
The directory for installing any Emacs Lisp files in this package. By +default, it should be /usr/local/share/emacs/site-lisp, but it +should be written as $(datarootdir)/emacs/site-lisp. + +

If you are using Autoconf, write the default as @lispdir@. +In order to make @lispdir@ work, you need the following lines +in your configure.in file: + +

          lispdir='${datarootdir}/emacs/site-lisp'
+          AC_SUBST(lispdir)
+     
+
localedir
The directory for installing locale-specific message catalogs for this +package. By default, it should be /usr/local/share/locale, but +it should be written as $(datarootdir)/locale. (If you are +using Autoconf, write it as @localedir@.) This directory +usually has a subdirectory per locale. +
+ +

Unix-style man pages are installed in one of the following: + +

+
mandir
The top-level directory for installing the man pages (if any) for this +package. It will normally be /usr/local/share/man, but you +should write it as $(datarootdir)/man. (If you are using +Autoconf, write it as @mandir@.) + +
man1dir
The directory for installing section 1 man pages. Write it as +$(mandir)/man1. +
man2dir
The directory for installing section 2 man pages. Write it as +$(mandir)/man2 +
...
+Don't make the primary documentation for any GNU software be a +man page. Write a manual in Texinfo instead. Man pages are just for +the sake of people running GNU software on Unix, which is a secondary +application only. + +
manext
The file name extension for the installed man page. This should contain +a period followed by the appropriate digit; it should normally be .1. + +
man1ext
The file name extension for installed section 1 man pages. +
man2ext
The file name extension for installed section 2 man pages. +
...
Use these names instead of manext if the package needs to install man +pages in more than one section of the manual. +
+ +

And finally, you should set the following variable: + +

+
srcdir
The directory for the sources being compiled. The value of this +variable is normally inserted by the configure shell script. +(If you are using Autoconf, use srcdir = @srcdir@.) +
+ +

For example: + +

     
+     
+     # Common prefix for installation directories.
+     # NOTE: This directory must exist when you start the install.
+     prefix = /usr/local
+     datarootdir = $(prefix)/share
+     datadir = $(datarootdir)
+     exec_prefix = $(prefix)
+     # Where to put the executable for the command `gcc'.
+     bindir = $(exec_prefix)/bin
+     # Where to put the directories used by the compiler.
+     libexecdir = $(exec_prefix)/libexec
+     # Where to put the Info files.
+     infodir = $(datarootdir)/info
+
+

If your program installs a large number of files into one of the +standard user-specified directories, it might be useful to group them +into a subdirectory particular to that program. If you do this, you +should write the install rule to create these subdirectories. + +

Do not expect the user to include the subdirectory name in the value of +any of the variables listed above. The idea of having a uniform set of +variable names for installation directories is to enable the user to +specify the exact same values for several different GNU packages. In +order for this to be useful, all the packages must be designed so that +they will work sensibly when the user does so. + +

At times, not all of these variables may be implemented in the current +release of Autoconf and/or Automake; but as of Autoconf 2.60, we +believe all of them are. When any are missing, the descriptions here +serve as specifications for what Autoconf will implement. As a +programmer, you can either use a development version of Autoconf or +avoid using these variables until a stable release is made which +supports them. + +

+ +

7.2.6 Standard Targets for Users

+ +

All GNU programs should have the following targets in their Makefiles: + +

+
all
Compile the entire program. This should be the default target. This +target need not rebuild any documentation files; Info files should +normally be included in the distribution, and DVI (and other +documentation format) files should be made only when explicitly asked +for. + +

By default, the Make rules should compile and link with -g, so +that executable programs have debugging symbols. Users who don't mind +being helpless can strip the executables later if they wish. + +

install
Compile the program and copy the executables, libraries, and so on to +the file names where they should reside for actual use. If there is a +simple test to verify that a program is properly installed, this target +should run that test. + +

Do not strip executables when installing them. Devil-may-care users can +use the install-strip target to do that. + +

If possible, write the install target rule so that it does not +modify anything in the directory where the program was built, provided +make all has just been done. This is convenient for building the +program under one user name and installing it under another. + +

The commands should create all the directories in which files are to be +installed, if they don't already exist. This includes the directories +specified as the values of the variables prefix and +exec_prefix, as well as all subdirectories that are needed. +One way to do this is by means of an installdirs target +as described below. + +

Use - before any command for installing a man page, so that +make will ignore any errors. This is in case there are systems +that don't have the Unix man page documentation system installed. + +

The way to install Info files is to copy them into $(infodir) +with $(INSTALL_DATA) (see Command Variables), and then run +the install-info program if it is present. install-info +is a program that edits the Info dir file to add or update the +menu entry for the given Info file; it is part of the Texinfo package. +Here is a sample rule to install an Info file: + + + +

          $(DESTDIR)$(infodir)/foo.info: foo.info
+                  $(POST_INSTALL)
+          # There may be a newer info file in . than in srcdir.
+                  -if test -f foo.info; then d=.; \
+                   else d=$(srcdir); fi; \
+                  $(INSTALL_DATA) $$d/foo.info $(DESTDIR)$@; \
+          # Run install-info only if it exists.
+          # Use `if' instead of just prepending `-' to the
+          # line so we notice real errors from install-info.
+          # We use `$(SHELL) -c' because some shells do not
+          # fail gracefully when there is an unknown command.
+                  if $(SHELL) -c 'install-info --version' \
+                     >/dev/null 2>&1; then \
+                    install-info --dir-file=$(DESTDIR)$(infodir)/dir \
+                                 $(DESTDIR)$(infodir)/foo.info; \
+                  else true; fi
+     
+

When writing the install target, you must classify all the +commands into three categories: normal ones, pre-installation +commands and post-installation commands. See Install Command Categories. + +

install-html
install-dvi
install-pdf
install-ps
These targets install documentation in formats other than Info; +they're intended to be called explicitly by the person installing the +package, if that format is desired. GNU prefers Info files, so these +must be installed by the install target. + +

When you have many documentation files to install, we recommend that +you avoid collisions and clutter by arranging for these targets to +install in subdirectories of the appropriate installation directory, +such as htmldir. As one example, if your package has multiple +manuals, and you wish to install HTML documentation with many files +(such as the “split” mode output by makeinfo --html), you'll +certainly want to use subdirectories, or two nodes with the same name +in different manuals will overwrite each other. + +

Please make these install-format targets invoke the +commands for the format target, for example, by making +format a dependency. + +

uninstall
Delete all the installed files—the copies that the install +and install-* targets create. + +

This rule should not modify the directories where compilation is done, +only the directories where files are installed. + +

The uninstallation commands are divided into three categories, just like +the installation commands. See Install Command Categories. + +

install-strip
Like install, but strip the executable files while installing +them. In simple cases, this target can use the install target in +a simple way: + +
          install-strip:
+                  $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \
+                          install
+     
+

But if the package installs scripts as well as real executables, the +install-strip target can't just refer to the install +target; it has to strip the executables but not the scripts. + +

install-strip should not strip the executables in the build +directory which are being copied for installation. It should only strip +the copies that are installed. + +

Normally we do not recommend stripping an executable unless you are sure +the program has no bugs. However, it can be reasonable to install a +stripped executable for actual execution while saving the unstripped +executable elsewhere in case there is a bug. + + + +

clean
+Delete all files in the current directory that are normally created by +building the program. Also delete files in other directories if they +are created by this makefile. However, don't delete the files that +record the configuration. Also preserve files that could be made by +building, but normally aren't because the distribution comes with +them. There is no need to delete parent directories that were created +with mkdir -p, since they could have existed anyway. + +

Delete .dvi files here if they are not part of the distribution. + +

distclean
Delete all files in the current directory (or created by this +makefile) that are created by configuring or building the program. If +you have unpacked the source and built the program without creating +any other files, make distclean should leave only the files +that were in the distribution. However, there is no need to delete +parent directories that were created with mkdir -p, since they +could have existed anyway. + +
mostlyclean
Like clean, but may refrain from deleting a few files that people +normally don't want to recompile. For example, the mostlyclean +target for GCC does not delete libgcc.a, because recompiling it +is rarely necessary and takes a lot of time. + +
maintainer-clean
Delete almost everything that can be reconstructed with this Makefile. +This typically includes everything deleted by distclean, plus +more: C source files produced by Bison, tags tables, Info files, and +so on. + +

The reason we say “almost everything” is that running the command +make maintainer-clean should not delete configure even +if configure can be remade using a rule in the Makefile. More +generally, make maintainer-clean should not delete anything +that needs to exist in order to run configure and then begin to +build the program. Also, there is no need to delete parent +directories that were created with mkdir -p, since they could +have existed anyway. These are the only exceptions; +maintainer-clean should delete everything else that can be +rebuilt. + +

The maintainer-clean target is intended to be used by a maintainer of +the package, not by ordinary users. You may need special tools to +reconstruct some of the files that make maintainer-clean deletes. +Since these files are normally included in the distribution, we don't +take care to make them easy to reconstruct. If you find you need to +unpack the full distribution again, don't blame us. + +

To help make users aware of this, the commands for the special +maintainer-clean target should start with these two: + +

          @echo 'This command is intended for maintainers to use; it'
+          @echo 'deletes files that may need special tools to rebuild.'
+     
+
TAGS
Update a tags table for this program. + + +
info
Generate any Info files needed. The best way to write the rules is as +follows: + +
          info: foo.info
+          
+          foo.info: foo.texi chap1.texi chap2.texi
+                  $(MAKEINFO) $(srcdir)/foo.texi
+     
+

You must define the variable MAKEINFO in the Makefile. It should +run the makeinfo program, which is part of the Texinfo +distribution. + +

Normally a GNU distribution comes with Info files, and that means the +Info files are present in the source directory. Therefore, the Make +rule for an info file should update it in the source directory. When +users build the package, ordinarily Make will not update the Info files +because they will already be up to date. + +

dvi
html
pdf
ps
Generate documentation files in the given format. These targets +should always exist, but any or all can be a no-op if the given output +format cannot be generated. These targets should not be dependencies +of the all target; the user must manually invoke them. + +

Here's an example rule for generating DVI files from Texinfo: + +

          dvi: foo.dvi
+          
+          foo.dvi: foo.texi chap1.texi chap2.texi
+                  $(TEXI2DVI) $(srcdir)/foo.texi
+     
+

You must define the variable TEXI2DVI in the Makefile. It should +run the program texi2dvi, which is part of the Texinfo +distribution.1 Alternatively, +write just the dependencies, and allow GNU make to provide the command. + +

Here's another example, this one for generating HTML from Texinfo: + +

          html: foo.html
+          
+          foo.html: foo.texi chap1.texi chap2.texi
+                  $(TEXI2HTML) $(srcdir)/foo.texi
+     
+

Again, you would define the variable TEXI2HTML in the Makefile; +for example, it might run makeinfo --no-split --html +(makeinfo is part of the Texinfo distribution). + +

dist
Create a distribution tar file for this program. The tar file should be +set up so that the file names in the tar file start with a subdirectory +name which is the name of the package it is a distribution for. This +name can include the version number. + +

For example, the distribution tar file of GCC version 1.40 unpacks into +a subdirectory named gcc-1.40. + +

The easiest way to do this is to create a subdirectory appropriately +named, use ln or cp to install the proper files in it, and +then tar that subdirectory. + +

Compress the tar file with gzip. For example, the actual +distribution file for GCC version 1.40 is called gcc-1.40.tar.gz. + +

The dist target should explicitly depend on all non-source files +that are in the distribution, to make sure they are up to date in the +distribution. +See Making Releases. + +

check
Perform self-tests (if any). The user must build the program before +running the tests, but need not install the program; you should write +the self-tests so that they work when the program is built but not +installed. +
+ +

The following targets are suggested as conventional names, for programs +in which they are useful. + +

+
installcheck
Perform installation tests (if any). The user must build and install +the program before running the tests. You should not assume that +$(bindir) is in the search path. + +
installdirs
It's useful to add a target named installdirs to create the +directories where files are installed, and their parent directories. +There is a script called mkinstalldirs which is convenient for +this; you can find it in the Texinfo package. + +You can use a rule like this: + + + +
          # Make sure all installation directories (e.g. $(bindir))
+          # actually exist by making them if necessary.
+          installdirs: mkinstalldirs
+                  $(srcdir)/mkinstalldirs $(bindir) $(datadir) \
+                                          $(libdir) $(infodir) \
+                                          $(mandir)
+     
+

or, if you wish to support DESTDIR, + +

          # Make sure all installation directories (e.g. $(bindir))
+          # actually exist by making them if necessary.
+          installdirs: mkinstalldirs
+                  $(srcdir)/mkinstalldirs \
+                      $(DESTDIR)$(bindir) $(DESTDIR)$(datadir) \
+                      $(DESTDIR)$(libdir) $(DESTDIR)$(infodir) \
+                      $(DESTDIR)$(mandir)
+     
+

This rule should not modify the directories where compilation is done. +It should do nothing but create installation directories. +

+ +
+


+Previous: Standard Targets, +Up: Makefile Conventions +
+
+ +

7.2.7 Install Command Categories

+ +

When writing the install target, you must classify all the +commands into three categories: normal ones, pre-installation +commands and post-installation commands. + +

Normal commands move files into their proper places, and set their +modes. They may not alter any files except the ones that come entirely +from the package they belong to. + +

Pre-installation and post-installation commands may alter other files; +in particular, they can edit global configuration files or data bases. + +

Pre-installation commands are typically executed before the normal +commands, and post-installation commands are typically run after the +normal commands. + +

The most common use for a post-installation command is to run +install-info. This cannot be done with a normal command, since +it alters a file (the Info directory) which does not come entirely and +solely from the package being installed. It is a post-installation +command because it needs to be done after the normal command which +installs the package's Info files. + +

Most programs don't need any pre-installation commands, but we have the +feature just in case it is needed. + +

To classify the commands in the install rule into these three +categories, insert category lines among them. A category line +specifies the category for the commands that follow. + +

A category line consists of a tab and a reference to a special Make +variable, plus an optional comment at the end. There are three +variables you can use, one for each category; the variable name +specifies the category. Category lines are no-ops in ordinary execution +because these three Make variables are normally undefined (and you +should not define them in the makefile). + +

Here are the three possible category lines, each with a comment that +explains what it means: + +

             $(PRE_INSTALL)     # Pre-install commands follow.
+             $(POST_INSTALL)    # Post-install commands follow.
+             $(NORMAL_INSTALL)  # Normal commands follow.
+
+

If you don't use a category line at the beginning of the install +rule, all the commands are classified as normal until the first category +line. If you don't use any category lines, all the commands are +classified as normal. + +

These are the category lines for uninstall: + +

             $(PRE_UNINSTALL)     # Pre-uninstall commands follow.
+             $(POST_UNINSTALL)    # Post-uninstall commands follow.
+             $(NORMAL_UNINSTALL)  # Normal commands follow.
+
+

Typically, a pre-uninstall command would be used for deleting entries +from the Info directory. + +

If the install or uninstall target has any dependencies +which act as subroutines of installation, then you should start +each dependency's commands with a category line, and start the +main target's commands with a category line also. This way, you can +ensure that each command is placed in the right category regardless of +which of the dependencies actually run. + +

Pre-installation and post-installation commands should not run any +programs except for these: + +

     [ basename bash cat chgrp chmod chown cmp cp dd diff echo
+     egrep expand expr false fgrep find getopt grep gunzip gzip
+     hostname install install-info kill ldconfig ln ls md5sum
+     mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee
+     test touch true uname xargs yes
+
+

The reason for distinguishing the commands in this way is for the sake +of making binary packages. Typically a binary package contains all the +executables and other files that need to be installed, and has its own +method of installing them—so it does not need to run the normal +installation commands. But installing the binary package does need to +execute the pre-installation and post-installation commands. + +

Programs to build binary packages work by extracting the +pre-installation and post-installation commands. Here is one way of +extracting the pre-installation commands (the -s option to +make is needed to silence messages about entering +subdirectories): + +

     make -s -n install -o all \
+           PRE_INSTALL=pre-install \
+           POST_INSTALL=post-install \
+           NORMAL_INSTALL=normal-install \
+       | gawk -f pre-install.awk
+
+

where the file pre-install.awk could contain this: + +

     $0 ~ /^(normal-install|post-install)[ \t]*$/ {on = 0}
+     on {print $0}
+     $0 ~ /^pre-install[ \t]*$/ {on = 1}
+
+
+


+Previous: Makefile Conventions, +Up: Managing Releases +
+
+ +

7.3 Making Releases

+ +

+You should identify each release with a pair of version numbers, a +major version and a minor. We have no objection to using more than +two numbers, but it is very unlikely that you really need them. + +

Package the distribution of Foo version 69.96 up in a gzipped tar +file with the name foo-69.96.tar.gz. It should unpack into a +subdirectory named foo-69.96. + +

Building and installing the program should never modify any of the files +contained in the distribution. This means that all the files that form +part of the program in any way must be classified into source +files and non-source files. Source files are written by humans +and never changed automatically; non-source files are produced from +source files by programs under the control of the Makefile. + +

The distribution should contain a file named README which gives +the name of the package, and a general description of what it does. It +is also good to explain the purpose of each of the first-level +subdirectories in the package, if there are any. The README file +should either state the version number of the package, or refer to where +in the package it can be found. + +

The README file should refer to the file INSTALL, which +should contain an explanation of the installation procedure. + +

The README file should also refer to the file which contains the +copying conditions. The GNU GPL, if used, should be in a file called +COPYING. If the GNU LGPL is used, it should be in a file called +COPYING.LIB. + +

Naturally, all the source files must be in the distribution. It is okay +to include non-source files in the distribution, provided they are +up-to-date and machine-independent, so that building the distribution +normally will never modify them. We commonly include non-source files +produced by Bison, lex, TeX, and makeinfo; this helps avoid +unnecessary dependencies between our distributions, so that users can +install whichever packages they want to install. + +

Non-source files that might actually be modified by building and +installing the program should never be included in the +distribution. So if you do distribute non-source files, always make +sure they are up to date when you make a new distribution. + +

Make sure that the directory into which the distribution unpacks (as +well as any subdirectories) are all world-writable (octal mode 777). +This is so that old versions of tar which preserve the +ownership and permissions of the files from the tar archive will be +able to extract all the files even if the user is unprivileged. + +

Make sure that all the files in the distribution are world-readable. + +

Don't include any symbolic links in the distribution itself. If the tar +file contains symbolic links, then people cannot even unpack it on +systems that don't support symbolic links. Also, don't use multiple +names for one file in different directories, because certain file +systems cannot handle this and that prevents unpacking the +distribution. + +

Try to make sure that all the file names will be unique on MS-DOS. A +name on MS-DOS consists of up to 8 characters, optionally followed by a +period and up to three characters. MS-DOS will truncate extra +characters both before and after the period. Thus, +foobarhacker.c and foobarhacker.o are not ambiguous; they +are truncated to foobarha.c and foobarha.o, which are +distinct. + +

Include in your distribution a copy of the texinfo.tex you used +to test print any *.texinfo or *.texi files. + +

Likewise, if your program uses small GNU software packages like regex, +getopt, obstack, or termcap, include them in the distribution file. +Leaving them out would make the distribution file a little smaller at +the expense of possible inconvenience to a user who doesn't know what +other files to get. + +

+


+Next: , +Previous: Managing Releases, +Up: Top +
+
+ +

8 References to Non-Free Software and Documentation

+ +

+A GNU program should not recommend use of any non-free program. We +can't stop some people from writing proprietary programs, or stop +other people from using them, but we can and should refuse to +advertise them to new potential customers. Proprietary software is a +social and ethical problem, and the point of GNU is to solve that +problem. + +

The GNU definition of free software is found on the GNU web site at +http://www.gnu.org/philosophy/free-sw.html, and the definition +of free documentation is found at +http://www.gnu.org/philosophy/free-doc.html. A list of +important licenses and whether they qualify as free is in +http://www.gnu.org/licenses/license-list.html. The terms +“free” and “non-free”, used in this document, refer to that +definition. If it is not clear whether a license qualifies as free +under this definition, please ask the GNU Project by writing to +licensing@gnu.org. We will answer, and if the license is an +important one, we will add it to the list. + +

When a non-free program or system is well known, you can mention it in +passing—that is harmless, since users who might want to use it +probably already know about it. For instance, it is fine to explain +how to build your package on top of some widely used non-free +operating system, or how to use it together with some widely used +non-free program. + +

However, you should give only the necessary information to help those +who already use the non-free program to use your program with +it—don't give, or refer to, any further information about the +proprietary program, and don't imply that the proprietary program +enhances your program, or that its existence is in any way a good +thing. The goal should be that people already using the proprietary +program will get the advice they need about how to use your free +program with it, while people who don't already use the proprietary +program will not see anything to lead them to take an interest in it. + +

If a non-free program or system is obscure in your program's domain, +your program should not mention or support it at all, since doing so +would tend to popularize the non-free program more than it popularizes +your program. (You cannot hope to find many additional users among +the users of Foobar if the users of Foobar are few.) + +

Sometimes a program is free software in itself but depends on a +non-free platform in order to run. For instance, many Java programs +depend on the parts of Sun's Java implementation which are not yet +free software, and won't run on the GNU Java Compiler (which does not +yet have all the features) or won't run with the GNU Java libraries. +We hope this particular problem will be gone in a few months, when Sun +makes the standard Java libraries free software, but of course the +general principle remains: you should not recommend programs that +depend on non-free software to run. + +

Some free programs encourage the use of non-free software. A typical +example is mplayer. It is free software in itself, and the +free code can handle some kinds of files. However, mplayer +recommends use of non-free codecs for other kinds of files, and users +that install mplayer are very likely to install those codecs +along with it. To recommend mplayer is, in effect, to +recommend the non-free codecs. We must not do that, so we cannot +recommend mplayer either. + +

In general, you should also not recommend programs that themselves +strongly recommend the use of non-free software. + +

A GNU package should not refer the user to any non-free documentation +for free software. Free documentation that can be included in free +operating systems is essential for completing the GNU system, or any +free operating system, so it is a major focus of the GNU Project; to +recommend use of documentation that we are not allowed to use in GNU +would weaken the impetus for the community to produce documentation +that we can include. So GNU packages should never recommend non-free +documentation. + +

By contrast, it is ok to refer to journal articles and textbooks in +the comments of a program for explanation of how it functions, even +though they be non-free. This is because we don't include such things +in the GNU system even if we are allowed to—they are outside the +scope of an operating system project. + +

Referring to a web site that describes or recommends a non-free +program is in effect promoting that software, so please do not make +links (or mention by name) web sites that contain such material. This +policy is relevant particularly for the web pages for a GNU package. + +

Following links from nearly any web site can lead to non-free +software; this is an inescapable aspect of the nature of the web, and +in itself is no objection to linking to a site. As long as the site +does not itself recommend a non-free program, there is no need be +concerned about the sites it links to for other reasons. + +

Thus, for example, you should not make a link to AT&T's web site, +because that recommends AT&T's non-free software packages; you should +not make a link to a site that links to AT&T's site saying it is a +place to get a non-free program; but if a site you want to link to +refers to AT&T's web site in some other context (such as long-distance +telephone service), that is not a problem. + +

+


+Next: , +Previous: References, +Up: Top +
+
+ +

Appendix A GNU Free Documentation License

+ +

+ + +

Version 1.2, November 2002
+ + + +
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. + +

    Examples of suitable formats for Transparent copies include plain +ascii without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +

    A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. + +

    The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +

  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +

  4. COPYING IN QUANTITY + +

    If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +

  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

      +
    1. Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +
    3. State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +
    13. Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +
    14. Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +
    15. Preserve any Warranty Disclaimers. +
    + +

    If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +

  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” + +

  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +

  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +

  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +

    If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +

  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +

  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

       Copyright (C)  year  your name.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.2
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with...Texts.” line with this: + +

         with the Invariant Sections being list their titles, with
+         the Front-Cover Texts being list, and with the Back-Cover Texts
+         being list.
+
+

If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + + +

+


+Previous: GNU Free Documentation License, +Up: Top +
+
+ +

Index

+ +
+
+

Footnotes

[1] texi2dvi uses TeX to do the real work +of formatting. TeX is not distributed with Texinfo.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Argument-Prescan.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Argument-Prescan.html new file mode 100644 index 0000000..bcbdde1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Argument-Prescan.html @@ -0,0 +1,142 @@ + + +Argument Prescan - The C Preprocessor + + + + + + + + + + + + + + + +

3.10.6 Argument Prescan

+ +

+Macro arguments are completely macro-expanded before they are +substituted into a macro body, unless they are stringified or pasted +with other tokens. After substitution, the entire macro body, including +the substituted arguments, is scanned again for macros to be expanded. +The result is that the arguments are scanned twice to expand +macro calls in them. + +

Most of the time, this has no effect. If the argument contained any +macro calls, they are expanded during the first scan. The result +therefore contains no macro calls, so the second scan does not change +it. If the argument were substituted as given, with no prescan, the +single remaining scan would find the same macro calls and produce the +same results. + +

You might expect the double scan to change the results when a +self-referential macro is used in an argument of another macro +(see Self-Referential Macros): the self-referential macro would be +expanded once in the first scan, and a second time in the second scan. +However, this is not what happens. The self-references that do not +expand in the first scan are marked so that they will not expand in the +second scan either. + +

You might wonder, “Why mention the prescan, if it makes no difference? +And why not skip it and make the preprocessor faster?” The answer is +that the prescan does make a difference in three special cases: + +

    +
  • Nested calls to a macro. + +

    We say that nested calls to a macro occur when a macro's argument +contains a call to that very macro. For example, if f is a macro +that expects one argument, f (f (1)) is a nested pair of calls to +f. The desired expansion is made by expanding f (1) and +substituting that into the definition of f. The prescan causes +the expected result to happen. Without the prescan, f (1) itself +would be substituted as an argument, and the inner use of f would +appear during the main scan as an indirect self-reference and would not +be expanded. + +

  • Macros that call other macros that stringify or concatenate. + +

    If an argument is stringified or concatenated, the prescan does not +occur. If you want to expand a macro, then stringify or +concatenate its expansion, you can do that by causing one macro to call +another macro that does the stringification or concatenation. For +instance, if you have + +

              #define AFTERX(x) X_ ## x
    +          #define XAFTERX(x) AFTERX(x)
    +          #define TABLESIZE 1024
    +          #define BUFSIZE TABLESIZE
    +     
    +

    then AFTERX(BUFSIZE) expands to X_BUFSIZE, and +XAFTERX(BUFSIZE) expands to X_1024. (Not to +X_TABLESIZE. Prescan always does a complete expansion.) + +

  • Macros used in arguments, whose expansions contain unshielded commas. + +

    This can cause a macro expanded on the second scan to be called with the +wrong number of arguments. Here is an example: + +

              #define foo  a,b
    +          #define bar(x) lose(x)
    +          #define lose(x) (1 + (x))
    +     
    +

    We would like bar(foo) to turn into (1 + (foo)), which +would then turn into (1 + (a,b)). Instead, bar(foo) +expands into lose(a,b), and you get an error because lose +requires a single argument. In this case, the problem is easily solved +by the same parentheses that ought to be used to prevent misnesting of +arithmetic operations: + +

              #define foo (a,b)
    +     
    or
    + #define bar(x) lose((x)) +
    +

    The extra pair of parentheses prevents the comma in foo's +definition from being interpreted as an argument separator. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Assertions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Assertions.html new file mode 100644 index 0000000..3e937e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Assertions.html @@ -0,0 +1,120 @@ + + +Assertions - The C Preprocessor + + + + + + + + + + + + + + +

11.3.1 Assertions

+ +

+Assertions are a deprecated alternative to macros in writing +conditionals to test what sort of computer or system the compiled +program will run on. Assertions are usually predefined, but you can +define them with preprocessing directives or command-line options. + +

Assertions were intended to provide a more systematic way to describe +the compiler's target system. However, in practice they are just as +unpredictable as the system-specific predefined macros. In addition, they +are not part of any standard, and only a few compilers support them. +Therefore, the use of assertions is less portable than the use +of system-specific predefined macros. We recommend you do not use them at +all. + +

An assertion looks like this: + +

     #predicate (answer)
+
+

predicate must be a single identifier. answer can be any +sequence of tokens; all characters are significant except for leading +and trailing whitespace, and differences in internal whitespace +sequences are ignored. (This is similar to the rules governing macro +redefinition.) Thus, (x + y) is different from (x+y) but +equivalent to ( x + y ). Parentheses do not nest inside an +answer. + +

To test an assertion, you write it in an #if. For example, this +conditional succeeds if either vax or ns16000 has been +asserted as an answer for machine. + +

     #if #machine (vax) || #machine (ns16000)
+
+

You can test whether any answer is asserted for a predicate by +omitting the answer in the conditional: + +

     #if #machine
+
+

Assertions are made with the #assert directive. Its sole +argument is the assertion to make, without the leading # that +identifies assertions in conditionals. + +

     #assert predicate (answer)
+
+

You may make several assertions with the same predicate and different +answers. Subsequent assertions do not override previous ones for the +same predicate. All the answers for any given predicate are +simultaneously true. + +

Assertions can be canceled with the #unassert directive. It +has the same syntax as #assert. In that form it cancels only the +answer which was specified on the #unassert line; other answers +for that predicate remain true. You can cancel an entire predicate by +leaving out the answer: + +

     #unassert predicate
+
+

In either form, if no such assertion has been made, #unassert has +no effect. + +

You can also make or cancel assertions using command line options. +See Invocation. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/C_002b_002b-Named-Operators.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/C_002b_002b-Named-Operators.html new file mode 100644 index 0000000..650c4b2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/C_002b_002b-Named-Operators.html @@ -0,0 +1,83 @@ + + +C++ Named Operators - The C Preprocessor + + + + + + + + + + + + +

+ +

3.7.4 C++ Named Operators

+ +

+In C++, there are eleven keywords which are simply alternate spellings +of operators normally written with punctuation. These keywords are +treated as such even in the preprocessor. They function as operators in +#if, and they cannot be defined as macros or poisoned. In C, you +can request that those keywords take their C++ meaning by including +iso646.h. That header defines each one as a normal object-like +macro expanding to the appropriate punctuator. + +

These are the named operators and their corresponding punctuators: + +

Named Operator Punctuator +
and && +
and_eq &= +
bitand & +
bitor | +
compl ~ +
not ! +
not_eq != +
or || +
or_eq |= +
xor ^ +
xor_eq ^= +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Character-sets.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Character-sets.html new file mode 100644 index 0000000..408bb5b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Character-sets.html @@ -0,0 +1,107 @@ + + +Character sets - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Up: Overview +



+
+ +

1.1 Character sets

+ +

Source code character set processing in C and related languages is +rather complicated. The C standard discusses two character sets, but +there are really at least four. + +

The files input to CPP might be in any character set at all. CPP's +very first action, before it even looks for line boundaries, is to +convert the file into the character set it uses for internal +processing. That set is what the C standard calls the source +character set. It must be isomorphic with ISO 10646, also known as +Unicode. CPP uses the UTF-8 encoding of Unicode. + +

The character sets of the input files are specified using the +-finput-charset= option. + +

All preprocessing work (the subject of the rest of this manual) is +carried out in the source character set. If you request textual +output from the preprocessor with the -E option, it will be +in UTF-8. + +

After preprocessing is complete, string and character constants are +converted again, into the execution character set. This +character set is under control of the user; the default is UTF-8, +matching the source character set. Wide string and character +constants have their own character set, which is not called out +specifically in the standard. Again, it is under control of the user. +The default is UTF-16 or UTF-32, whichever fits in the target's +wchar_t type, in the target machine's byte +order.1 Octal and hexadecimal escape sequences do not undergo +conversion; '\x12' has the value 0x12 regardless of the currently +selected execution character set. All other escapes are replaced by +the character in the source character set that they represent, then +converted to the execution character set, just like unescaped +characters. + +

Unless the experimental -fextended-identifiers option is used, +GCC does not permit the use of characters outside the ASCII range, nor +\u and \U escapes, in identifiers. Even with that +option, characters outside the ASCII range can only be specified with +the \u and \U escapes, not used directly in identifiers. + +

+
+

Footnotes

[1] UTF-16 does not meet the requirements of the C +standard for a wide character set, but the choice of 16-bit +wchar_t is enshrined in some system ABIs so we cannot fix +this.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Common-Predefined-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Common-Predefined-Macros.html new file mode 100644 index 0000000..0a97cc8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Common-Predefined-Macros.html @@ -0,0 +1,285 @@ + + +Common Predefined Macros - The C Preprocessor + + + + + + + + + + + + + + + +

3.7.2 Common Predefined Macros

+ +

+The common predefined macros are GNU C extensions. They are available +with the same meanings regardless of the machine or operating system on +which you are using GNU C or GNU Fortran. Their names all start with +double underscores. + +

+
__COUNTER__
This macro expands to sequential integral values starting from 0. In +conjunction with the ## operator, this provides a convenient means to +generate unique identifiers. Care must be taken to ensure that +__COUNTER__ is not expanded prior to inclusion of precompiled headers +which use it. Otherwise, the precompiled headers will not be used. + +
__GFORTRAN__
The GNU Fortran compiler defines this. + +
__GNUC__
__GNUC_MINOR__
__GNUC_PATCHLEVEL__
These macros are defined by all GNU compilers that use the C +preprocessor: C, C++, Objective-C and Fortran. Their values are the major +version, minor version, and patch level of the compiler, as integer +constants. For example, GCC 3.2.1 will define __GNUC__ to 3, +__GNUC_MINOR__ to 2, and __GNUC_PATCHLEVEL__ to 1. These +macros are also defined if you invoke the preprocessor directly. + +

__GNUC_PATCHLEVEL__ is new to GCC 3.0; it is also present in the +widely-used development snapshots leading up to 3.0 (which identify +themselves as GCC 2.96 or 2.97, depending on which snapshot you have). + +

If all you need to know is whether or not your program is being compiled +by GCC, or a non-GCC compiler that claims to accept the GNU C dialects, +you can simply test __GNUC__. If you need to write code +which depends on a specific version, you must be more careful. Each +time the minor version is increased, the patch level is reset to zero; +each time the major version is increased (which happens rarely), the +minor version and patch level are reset. If you wish to use the +predefined macros directly in the conditional, you will need to write it +like this: + +

          /* Test for GCC > 3.2.0 */
+          #if __GNUC__ > 3 || \
+              (__GNUC__ == 3 && (__GNUC_MINOR__ > 2 || \
+                                 (__GNUC_MINOR__ == 2 && \
+                                  __GNUC_PATCHLEVEL__ > 0))
+     
+

Another approach is to use the predefined macros to +calculate a single number, then compare that against a threshold: + +

          #define GCC_VERSION (__GNUC__ * 10000 \
+                               + __GNUC_MINOR__ * 100 \
+                               + __GNUC_PATCHLEVEL__)
+          ...
+          /* Test for GCC > 3.2.0 */
+          #if GCC_VERSION > 30200
+     
+

Many people find this form easier to understand. + +

__GNUG__
The GNU C++ compiler defines this. Testing it is equivalent to +testing (__GNUC__ && __cplusplus). + +
__STRICT_ANSI__
GCC defines this macro if and only if the -ansi switch, or a +-std switch specifying strict conformance to some version of ISO C, +was specified when GCC was invoked. It is defined to 1. +This macro exists primarily to direct GNU libc's header files to +restrict their definitions to the minimal set found in the 1989 C +standard. + +
__BASE_FILE__
This macro expands to the name of the main input file, in the form +of a C string constant. This is the source file that was specified +on the command line of the preprocessor or C compiler. + +
__INCLUDE_LEVEL__
This macro expands to a decimal integer constant that represents the +depth of nesting in include files. The value of this macro is +incremented on every #include directive and decremented at the +end of every included file. It starts out at 0, its value within the +base file specified on the command line. + +
__ELF__
This macro is defined if the target uses the ELF object format. + +
__VERSION__
This macro expands to a string constant which describes the version of +the compiler in use. You should not rely on its contents having any +particular form, but it can be counted on to contain at least the +release number. + +
__OPTIMIZE__
__OPTIMIZE_SIZE__
__NO_INLINE__
These macros describe the compilation mode. __OPTIMIZE__ is +defined in all optimizing compilations. __OPTIMIZE_SIZE__ is +defined if the compiler is optimizing for size, not speed. +__NO_INLINE__ is defined if no functions will be inlined into +their callers (when not optimizing, or when inlining has been +specifically disabled by -fno-inline). + +

These macros cause certain GNU header files to provide optimized +definitions, using macros or inline functions, of system library +functions. You should not use these macros in any way unless you make +sure that programs will execute with the same effect whether or not they +are defined. If they are defined, their value is 1. + +

__GNUC_GNU_INLINE__
GCC defines this macro if functions declared inline will be +handled in GCC's traditional gnu89 mode. Object files will contain +externally visible definitions of all functions declared inline +without extern or static. They will not contain any +definitions of any functions declared extern inline. + +
__GNUC_STDC_INLINE__
GCC defines this macro if functions declared inline will be +handled according to the ISO C99 standard. Object files will contain +externally visible definitions of all functions declared extern +inline. They will not contain definitions of any functions declared +inline without extern. + +

If this macro is defined, GCC supports the gnu_inline function +attribute as a way to always get the gnu89 behavior. Support for +this and __GNUC_GNU_INLINE__ was added in GCC 4.1.3. If +neither macro is defined, an older version of GCC is being used: +inline functions will be compiled in gnu89 mode, and the +gnu_inline function attribute will not be recognized. + +

__CHAR_UNSIGNED__
GCC defines this macro if and only if the data type char is +unsigned on the target machine. It exists to cause the standard header +file limits.h to work correctly. You should not use this macro +yourself; instead, refer to the standard macros defined in limits.h. + +
__WCHAR_UNSIGNED__
Like __CHAR_UNSIGNED__, this macro is defined if and only if the +data type wchar_t is unsigned and the front-end is in C++ mode. + +
__REGISTER_PREFIX__
This macro expands to a single token (not a string constant) which is +the prefix applied to CPU register names in assembly language for this +target. You can use it to write assembly that is usable in multiple +environments. For example, in the m68k-aout environment it +expands to nothing, but in the m68k-coff environment it expands +to a single %. + +
__USER_LABEL_PREFIX__
This macro expands to a single token which is the prefix applied to +user labels (symbols visible to C code) in assembly. For example, in +the m68k-aout environment it expands to an _, but in the +m68k-coff environment it expands to nothing. + +

This macro will have the correct definition even if +-f(no-)underscores is in use, but it will not be correct if +target-specific options that adjust this prefix are used (e.g. the +OSF/rose -mno-underscores option). + +

__SIZE_TYPE__
__PTRDIFF_TYPE__
__WCHAR_TYPE__
__WINT_TYPE__
__INTMAX_TYPE__
__UINTMAX_TYPE__
These macros are defined to the correct underlying types for the +size_t, ptrdiff_t, wchar_t, wint_t, +intmax_t, and uintmax_t +typedefs, respectively. They exist to make the standard header files +stddef.h and wchar.h work correctly. You should not use +these macros directly; instead, include the appropriate headers and use +the typedefs. + +
__CHAR_BIT__
Defined to the number of bits used in the representation of the +char data type. It exists to make the standard header given +numerical limits work correctly. You should not use +this macro directly; instead, include the appropriate headers. + +
__SCHAR_MAX__
__WCHAR_MAX__
__SHRT_MAX__
__INT_MAX__
__LONG_MAX__
__LONG_LONG_MAX__
__INTMAX_MAX__
Defined to the maximum value of the signed char, wchar_t, +signed short, +signed int, signed long, signed long long, and +intmax_t types +respectively. They exist to make the standard header given numerical limits +work correctly. You should not use these macros directly; instead, include +the appropriate headers. + +
__SIZEOF_INT__
__SIZEOF_LONG__
__SIZEOF_LONG_LONG__
__SIZEOF_SHORT__
__SIZEOF_POINTER__
__SIZEOF_FLOAT__
__SIZEOF_DOUBLE__
__SIZEOF_LONG_DOUBLE__
__SIZEOF_SIZE_T__
__SIZEOF_WCHAR_T__
__SIZEOF_WINT_T__
__SIZEOF_PTRDIFF_T__
Defined to the number of bytes of the C standard data types: int, +long, long long, short, void *, float, +double, long double, size_t, wchar_t, wint_t +and ptrdiff_t. + +
__DEPRECATED
This macro is defined, with value 1, when compiling a C++ source file +with warnings about deprecated constructs enabled. These warnings are +enabled by default, but can be disabled with -Wno-deprecated. + +
__EXCEPTIONS
This macro is defined, with value 1, when compiling a C++ source file +with exceptions enabled. If -fno-exceptions is used when +compiling the file, then this macro is not defined. + +
__GXX_RTTI
This macro is defined, with value 1, when compiling a C++ source file +with runtime type identification enabled. If -fno-rtti is +used when compiling the file, then this macro is not defined. + +
__USING_SJLJ_EXCEPTIONS__
This macro is defined, with value 1, if the compiler uses the old +mechanism based on setjmp and longjmp for exception +handling. + +
__GXX_EXPERIMENTAL_CXX0X__
This macro is defined when compiling a C++ source file with the option +-std=c++0x or -std=gnu++0x. It indicates that some +features likely to be included in C++0x are available. Note that these +features are experimental, and may change or be removed in future +versions of GCC. + +
__GXX_WEAK__
This macro is defined when compiling a C++ source file. It has the +value 1 if the compiler will use weak symbols, COMDAT sections, or +other similar techniques to collapse symbols with “vague linkage” +that are defined in multiple translation units. If the compiler will +not collapse such symbols, this macro is defined with value 0. In +general, user code should not need to make use of this macro; the +purpose of this macro is to ease implementation of the C++ runtime +library provided with G++. + +
__NEXT_RUNTIME__
This macro is defined, with value 1, if (and only if) the NeXT runtime +(as in -fnext-runtime) is in use for Objective-C. If the GNU +runtime is used, this macro is not defined, so that you can use this +macro to determine which runtime (NeXT or GNU) is being used. + +
__LP64__
_LP64
These macros are defined, with value 1, if (and only if) the compilation +is for a target where long int and pointer both use 64-bits and +int uses 32-bit. + +
__SSP__
This macro is defined, with value 1, when -fstack-protector is in +use. + +
__SSP_ALL__
This macro is defined, with value 2, when -fstack-protector-all is +in use. + +
__TIMESTAMP__
This macro expands to a string constant that describes the date and time +of the last modification of the current source file. The string constant +contains abbreviated day of the week, month, day of the month, time in +hh:mm:ss form, year and looks like "Sun Sep 16 01:03:52 1973". +If the day of the month is less than 10, it is padded with a space on the left. + +

If GCC cannot determine the current date, it will emit a warning message +(once per compilation) and __TIMESTAMP__ will expand to +"??? ??? ?? ??:??:?? ????". + +

__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
These macros are defined when the target processor supports atomic compare +and swap operations on operands 1, 2, 4, 8 or 16 bytes in length, respectively. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Computed-Includes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Computed-Includes.html new file mode 100644 index 0000000..30f5ea8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Computed-Includes.html @@ -0,0 +1,130 @@ + + +Computed Includes - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Once-Only Headers, +Up: Header Files +



+
+ +

2.5 Computed Includes

+ +

+Sometimes it is necessary to select one of several different header +files to be included into your program. They might specify +configuration parameters to be used on different sorts of operating +systems, for instance. You could do this with a series of conditionals, + +

     #if SYSTEM_1
+     # include "system_1.h"
+     #elif SYSTEM_2
+     # include "system_2.h"
+     #elif SYSTEM_3
+     ...
+     #endif
+
+

That rapidly becomes tedious. Instead, the preprocessor offers the +ability to use a macro for the header name. This is called a +computed include. Instead of writing a header name as the direct +argument of #include, you simply put a macro name there instead: + +

     #define SYSTEM_H "system_1.h"
+     ...
+     #include SYSTEM_H
+
+

SYSTEM_H will be expanded, and the preprocessor will look for +system_1.h as if the #include had been written that way +originally. SYSTEM_H could be defined by your Makefile with a +-D option. + +

You must be careful when you define the macro. #define saves +tokens, not text. The preprocessor has no way of knowing that the macro +will be used as the argument of #include, so it generates +ordinary tokens, not a header name. This is unlikely to cause problems +if you use double-quote includes, which are close enough to string +constants. If you use angle brackets, however, you may have trouble. + +

The syntax of a computed include is actually a bit more general than the +above. If the first non-whitespace character after #include is +not " or <, then the entire line is macro-expanded +like running text would be. + +

If the line expands to a single string constant, the contents of that +string constant are the file to be included. CPP does not re-examine the +string for embedded quotes, but neither does it process backslash +escapes in the string. Therefore + +

     #define HEADER "a\"b"
+     #include HEADER
+
+

looks for a file named a\"b. CPP searches for the file according +to the rules for double-quoted includes. + +

If the line expands to a token stream beginning with a < token +and including a > token, then the tokens between the < and +the first > are combined to form the filename to be included. +Any whitespace between tokens is reduced to a single space; then any +space after the initial < is retained, but a trailing space +before the closing > is ignored. CPP searches for the file +according to the rules for angle-bracket includes. + +

In either case, if there are any tokens on the line after the file name, +an error occurs and the directive is not processed. It is also an error +if the result of expansion does not match either of the two expected +forms. + +

These rules are implementation-defined behavior according to the C +standard. To minimize the risk of different compilers interpreting your +computed includes differently, we recommend you use only a single +object-like macro which expands to a string constant. This will also +minimize confusion for people reading your program. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Concatenation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Concatenation.html new file mode 100644 index 0000000..5ceb591 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Concatenation.html @@ -0,0 +1,131 @@ + + +Concatenation - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Stringification, +Up: Macros +



+
+ +

3.5 Concatenation

+ +

+It is often useful to merge two tokens into one while expanding macros. +This is called token pasting or token concatenation. The +## preprocessing operator performs token pasting. When a macro +is expanded, the two tokens on either side of each ## operator +are combined into a single token, which then replaces the ## and +the two original tokens in the macro expansion. Usually both will be +identifiers, or one will be an identifier and the other a preprocessing +number. When pasted, they make a longer identifier. This isn't the +only valid case. It is also possible to concatenate two numbers (or a +number and a name, such as 1.5 and e3) into a number. +Also, multi-character operators such as += can be formed by +token pasting. + +

However, two tokens that don't together form a valid token cannot be +pasted together. For example, you cannot concatenate x with ++ in either order. If you try, the preprocessor issues a warning +and emits the two tokens. Whether it puts white space between the +tokens is undefined. It is common to find unnecessary uses of ## +in complex macros. If you get this warning, it is likely that you can +simply remove the ##. + +

Both the tokens combined by ## could come from the macro body, +but you could just as well write them as one token in the first place. +Token pasting is most useful when one or both of the tokens comes from a +macro argument. If either of the tokens next to an ## is a +parameter name, it is replaced by its actual argument before ## +executes. As with stringification, the actual argument is not +macro-expanded first. If the argument is empty, that ## has no +effect. + +

Keep in mind that the C preprocessor converts comments to whitespace +before macros are even considered. Therefore, you cannot create a +comment by concatenating / and *. You can put as much +whitespace between ## and its operands as you like, including +comments, and you can put comments in arguments that will be +concatenated. However, it is an error if ## appears at either +end of a macro body. + +

Consider a C program that interprets named commands. There probably +needs to be a table of commands, perhaps an array of structures declared +as follows: + +

     struct command
+     {
+       char *name;
+       void (*function) (void);
+     };
+     
+     struct command commands[] =
+     {
+       { "quit", quit_command },
+       { "help", help_command },
+       ...
+     };
+
+

It would be cleaner not to have to give each command name twice, once in +the string constant and once in the function name. A macro which takes the +name of a command as an argument can make this unnecessary. The string +constant can be created with stringification, and the function name by +concatenating the argument with _command. Here is how it is done: + +

     #define COMMAND(NAME)  { #NAME, NAME ## _command }
+     
+     struct command commands[] =
+     {
+       COMMAND (quit),
+       COMMAND (help),
+       ...
+     };
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Concept-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Concept-Index.html new file mode 100644 index 0000000..4482e84 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Concept-Index.html @@ -0,0 +1,168 @@ + + +Concept Index - The C Preprocessor + + + + + + + + + + + +
+

+Previous: Option Index, +Up: Top +



+
+ +

Concept Index

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditional-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditional-Syntax.html new file mode 100644 index 0000000..c9366a7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditional-Syntax.html @@ -0,0 +1,71 @@ + + +Conditional Syntax - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Conditional Uses, +Up: Conditionals +



+
+ +

4.2 Conditional Syntax

+ +

A conditional in the C preprocessor begins with a conditional +directive: #if, #ifdef or #ifndef. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditional-Uses.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditional-Uses.html new file mode 100644 index 0000000..57d5d48 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditional-Uses.html @@ -0,0 +1,83 @@ + + +Conditional Uses - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Up: Conditionals +



+
+ +

4.1 Conditional Uses

+ +

There are three general reasons to use a conditional. + +

    +
  • A program may need to use different code depending on the machine or +operating system it is to run on. In some cases the code for one +operating system may be erroneous on another operating system; for +example, it might refer to data types or constants that do not exist on +the other system. When this happens, it is not enough to avoid +executing the invalid code. Its mere presence will cause the compiler +to reject the program. With a preprocessing conditional, the offending +code can be effectively excised from the program when it is not valid. + +
  • You may want to be able to compile the same source file into two +different programs. One version might make frequent time-consuming +consistency checks on its intermediate data, or print the values of +those data for debugging, and the other not. + +
  • A conditional whose condition is always false is one way to exclude code +from the program but keep it as a sort of comment for future reference. +
+ +

Simple programs that do not need system-specific logic or complex +debugging hooks generally will not need to use preprocessing +conditionals. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditionals.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditionals.html new file mode 100644 index 0000000..4be167e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Conditionals.html @@ -0,0 +1,95 @@ + + +Conditionals - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: Macros, +Up: Top +



+
+ +

4 Conditionals

+ +

+A conditional is a directive that instructs the preprocessor to +select whether or not to include a chunk of code in the final token +stream passed to the compiler. Preprocessor conditionals can test +arithmetic expressions, or whether a name is defined as a macro, or both +simultaneously using the special defined operator. + +

A conditional in the C preprocessor resembles in some ways an if +statement in C, but it is important to understand the difference between +them. The condition in an if statement is tested during the +execution of your program. Its purpose is to allow your program to +behave differently from run to run, depending on the data it is +operating on. The condition in a preprocessing conditional directive is +tested when your program is compiled. Its purpose is to allow different +code to be included in the program depending on the situation at the +time of compilation. + +

However, the distinction is becoming less clear. Modern compilers often +do test if statements when a program is compiled, if their +conditions are known not to vary at run time, and eliminate code which +can never be executed. If you can count on your compiler to do this, +you may find that your program is more readable if you use if +statements with constant conditions (perhaps determined by macros). Of +course, you can only use this to exclude code, not type definitions or +other preprocessing directives, and you can only do it if the code +remains syntactically valid when it is not to be used. + +

GCC version 3 eliminates this kind of never-executed code even when +not optimizing. Older versions did it only when optimizing. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Defined.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Defined.html new file mode 100644 index 0000000..5d347fa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Defined.html @@ -0,0 +1,88 @@ + + +Defined - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: If, +Up: Conditional Syntax +



+
+ +

4.2.3 Defined

+ +

The special operator defined is used in #if and +#elif expressions to test whether a certain name is defined as a +macro. defined name and defined (name) are +both expressions whose value is 1 if name is defined as a macro at +the current point in the program, and 0 otherwise. Thus, #if defined MACRO is precisely equivalent to #ifdef MACRO. + +

defined is useful when you wish to test more than one macro for +existence at once. For example, + +

     #if defined (__vax__) || defined (__ns16000__)
+
+

would succeed if either of the names __vax__ or +__ns16000__ is defined as a macro. + +

Conditionals written like this: + +

     #if defined BUFSIZE && BUFSIZE >= 1024
+
+

can generally be simplified to just #if BUFSIZE >= 1024, +since if BUFSIZE is not defined, it will be interpreted as having +the value zero. + +

If the defined operator appears as a result of a macro expansion, +the C standard says the behavior is undefined. GNU cpp treats it as a +genuine defined operator and evaluates it normally. It will warn +wherever your code uses this feature if you use the command-line option +-pedantic, since other compilers may handle it differently. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Deleted-Code.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Deleted-Code.html new file mode 100644 index 0000000..1f03925 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Deleted-Code.html @@ -0,0 +1,82 @@ + + +Deleted Code - The C Preprocessor + + + + + + + + + + + + +

+

+Previous: Conditional Syntax, +Up: Conditionals +



+
+ +

4.3 Deleted Code

+ +

+If you replace or delete a part of the program but want to keep the old +code around for future reference, you often cannot simply comment it +out. Block comments do not nest, so the first comment inside the old +code will end the commenting-out. The probable result is a flood of +syntax errors. + +

One way to avoid this problem is to use an always-false conditional +instead. For instance, put #if 0 before the deleted code and +#endif after it. This works even if the code being turned +off contains conditionals, but they must be entire conditionals +(balanced #if and #endif). + +

Some people use #ifdef notdef instead. This is risky, because +notdef might be accidentally defined as a macro, and then the +conditional would succeed. #if 0 can be counted on to fail. + +

Do not use #if 0 for comments which are not C code. Use a real +comment, instead. The interior of #if 0 must consist of complete +tokens; in particular, single-quote characters must balance. Comments +often contain unbalanced single-quote characters (known in English as +apostrophes). These confuse #if 0. They don't confuse +/*. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Diagnostics.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Diagnostics.html new file mode 100644 index 0000000..5cbb80b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Diagnostics.html @@ -0,0 +1,94 @@ + + +Diagnostics - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: Conditionals, +Up: Top +



+
+ +

5 Diagnostics

+ +

+The directive #error causes the preprocessor to report a fatal +error. The tokens forming the rest of the line following #error +are used as the error message. + +

You would use #error inside of a conditional that detects a +combination of parameters which you know the program does not properly +support. For example, if you know that the program will not run +properly on a VAX, you might write + +

     #ifdef __vax__
+     #error "Won't work on VAXen.  See comments at get_last_object."
+     #endif
+
+

If you have several configuration parameters that must be set up by +the installation in a consistent way, you can use conditionals to detect +an inconsistency and report it with #error. For example, + +

     #if !defined(UNALIGNED_INT_ASM_OP) && defined(DWARF2_DEBUGGING_INFO)
+     #error "DWARF2_DEBUGGING_INFO requires UNALIGNED_INT_ASM_OP."
+     #endif
+
+

The directive #warning is like #error, but causes the +preprocessor to issue a warning and continue preprocessing. The tokens +following #warning are used as the warning message. + +

You might use #warning in obsolete header files, with a message +directing the user to the header file which should be used instead. + +

Neither #error nor #warning macro-expands its argument. +Internal whitespace sequences are each replaced with a single space. +The line must consist of complete tokens. It is wisest to make the +argument of these directives be a single string constant; this avoids +problems with apostrophes and the like. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Differences-from-previous-versions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Differences-from-previous-versions.html new file mode 100644 index 0000000..80a3fc9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Differences-from-previous-versions.html @@ -0,0 +1,144 @@ + + +Differences from previous versions - The C Preprocessor + + + + + + + + + + + + +

+

+Previous: Obsolete Features, +Up: Implementation Details +



+
+ +

11.4 Differences from previous versions

+ +

+This section details behavior which has changed from previous versions +of CPP. We do not plan to change it again in the near future, but +we do not promise not to, either. + +

The “previous versions” discussed here are 2.95 and before. The +behavior of GCC 3.0 is mostly the same as the behavior of the widely +used 2.96 and 2.97 development snapshots. Where there are differences, +they generally represent bugs in the snapshots. + +

    +
  • -I- deprecated + +

    This option has been deprecated in 4.0. -iquote is meant to +replace the need for this option. + +

  • Order of evaluation of # and ## operators + +

    The standard does not specify the order of evaluation of a chain of +## operators, nor whether # is evaluated before, after, or +at the same time as ##. You should therefore not write any code +which depends on any specific ordering. It is possible to guarantee an +ordering, if you need one, by suitable use of nested macros. + +

    An example of where this might matter is pasting the arguments 1, +e and -2. This would be fine for left-to-right pasting, +but right-to-left pasting would produce an invalid token e-2. + +

    GCC 3.0 evaluates # and ## at the same time and strictly +left to right. Older versions evaluated all # operators first, +then all ## operators, in an unreliable order. + +

  • The form of whitespace between tokens in preprocessor output + +

    See Preprocessor Output, for the current textual format. This is +also the format used by stringification. Normally, the preprocessor +communicates tokens directly to the compiler's parser, and whitespace +does not come up at all. + +

    Older versions of GCC preserved all whitespace provided by the user and +inserted lots more whitespace of their own, because they could not +accurately predict when extra spaces were needed to prevent accidental +token pasting. + +

  • Optional argument when invoking rest argument macros + +

    As an extension, GCC permits you to omit the variable arguments entirely +when you use a variable argument macro. This is forbidden by the 1999 C +standard, and will provoke a pedantic warning with GCC 3.0. Previous +versions accepted it silently. + +

  • ## swallowing preceding text in rest argument macros + +

    Formerly, in a macro expansion, if ## appeared before a variable +arguments parameter, and the set of tokens specified for that argument +in the macro invocation was empty, previous versions of CPP would +back up and remove the preceding sequence of non-whitespace characters +(not the preceding token). This extension is in direct +conflict with the 1999 C standard and has been drastically pared back. + +

    In the current version of the preprocessor, if ## appears between +a comma and a variable arguments parameter, and the variable argument is +omitted entirely, the comma will be removed from the expansion. If the +variable argument is empty, or the token before ## is not a +comma, then ## behaves as a normal token paste. + +

  • #line and #include + +

    The #line directive used to change GCC's notion of the +“directory containing the current file”, used by #include with +a double-quoted header file name. In 3.0 and later, it does not. +See Line Control, for further explanation. + +

  • Syntax of #line + +

    In GCC 2.95 and previous, the string constant argument to #line +was treated the same way as the argument to #include: backslash +escapes were not honored, and the string ended at the second ". +This is not compliant with the C standard. In GCC 3.0, an attempt was +made to correct the behavior, so that the string was treated as a real +string constant, but it turned out to be buggy. In 3.1, the bugs have +been fixed. (We are not fixing the bugs in 3.0 because they affect +relatively few people and the fix is quite invasive.) + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Directives-Within-Macro-Arguments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Directives-Within-Macro-Arguments.html new file mode 100644 index 0000000..67cd762 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Directives-Within-Macro-Arguments.html @@ -0,0 +1,95 @@ + + +Directives Within Macro Arguments - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Undefining and Redefining Macros, +Up: Macros +



+
+ +

3.9 Directives Within Macro Arguments

+ +

+Occasionally it is convenient to use preprocessor directives within +the arguments of a macro. The C and C++ standards declare that +behavior in these cases is undefined. + +

Versions of CPP prior to 3.2 would reject such constructs with an +error message. This was the only syntactic difference between normal +functions and function-like macros, so it seemed attractive to remove +this limitation, and people would often be surprised that they could +not use macros in this way. Moreover, sometimes people would use +conditional compilation in the argument list to a normal library +function like printf, only to find that after a library upgrade +printf had changed to be a function-like macro, and their code +would no longer compile. So from version 3.2 we changed CPP to +successfully process arbitrary directives within macro arguments in +exactly the same way as it would have processed the directive were the +function-like macro invocation not present. + +

If, within a macro invocation, that macro is redefined, then the new +definition takes effect in time for argument pre-expansion, but the +original definition is still used for argument replacement. Here is a +pathological example: + +

     #define f(x) x x
+     f (1
+     #undef f
+     #define f 2
+     f)
+
+

which expands to + +

     1 2 1 2
+
+

with the semantics described above. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Duplication-of-Side-Effects.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Duplication-of-Side-Effects.html new file mode 100644 index 0000000..553ab23 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Duplication-of-Side-Effects.html @@ -0,0 +1,114 @@ + + +Duplication of Side Effects - The C Preprocessor + + + + + + + + + + + + + +

+ +

3.10.4 Duplication of Side Effects

+ +

Many C programs define a macro min, for “minimum”, like this: + +

     #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
+
+

When you use this macro with an argument containing a side effect, +as shown here, + +

     next = min (x + y, foo (z));
+
+

it expands as follows: + +

     next = ((x + y) < (foo (z)) ? (x + y) : (foo (z)));
+
+

where x + y has been substituted for X and foo (z) +for Y. + +

The function foo is used only once in the statement as it appears +in the program, but the expression foo (z) has been substituted +twice into the macro expansion. As a result, foo might be called +two times when the statement is executed. If it has side effects or if +it takes a long time to compute, the results might not be what you +intended. We say that min is an unsafe macro. + +

The best solution to this problem is to define min in a way that +computes the value of foo (z) only once. The C language offers +no standard way to do this, but it can be done with GNU extensions as +follows: + +

     #define min(X, Y)                \
+     ({ typeof (X) x_ = (X);          \
+        typeof (Y) y_ = (Y);          \
+        (x_ < y_) ? x_ : y_; })
+
+

The ({ ... }) notation produces a compound statement that +acts as an expression. Its value is the value of its last statement. +This permits us to define local variables and assign each argument to +one. The local variables have underscores after their names to reduce +the risk of conflict with an identifier of wider scope (it is impossible +to avoid this entirely). Now each argument is evaluated exactly once. + +

If you do not wish to use GNU C extensions, the only solution is to be +careful when using the macro min. For example, you can +calculate the value of foo (z), save it in a variable, and use +that variable in min: + +

     #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
+     ...
+     {
+       int tem = foo (z);
+       next = min (x + y, tem);
+     }
+
+

(where we assume that foo returns type int). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Elif.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Elif.html new file mode 100644 index 0000000..70273b1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Elif.html @@ -0,0 +1,97 @@ + + +Elif - The C Preprocessor + + + + + + + + + + + + +

+

+Previous: Else, +Up: Conditional Syntax +



+
+ +

4.2.5 Elif

+ +

One common case of nested conditionals is used to check for more than two +possible alternatives. For example, you might have + +

     #if X == 1
+     ...
+     #else /* X != 1 */
+     #if X == 2
+     ...
+     #else /* X != 2 */
+     ...
+     #endif /* X != 2 */
+     #endif /* X != 1 */
+
+

Another conditional directive, #elif, allows this to be +abbreviated as follows: + +

     #if X == 1
+     ...
+     #elif X == 2
+     ...
+     #else /* X != 2 and X != 1*/
+     ...
+     #endif /* X != 2 and X != 1*/
+
+

#elif stands for “else if”. Like #else, it goes in the +middle of a conditional group and subdivides it; it does not require a +matching #endif of its own. Like #if, the #elif +directive includes an expression to be tested. The text following the +#elif is processed only if the original #if-condition +failed and the #elif condition succeeds. + +

More than one #elif can go in the same conditional group. Then +the text after each #elif is processed only if the #elif +condition succeeds after the original #if and all previous +#elif directives within it have failed. + +

#else is allowed after any number of #elif directives, but +#elif may not follow #else. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Else.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Else.html new file mode 100644 index 0000000..b2320cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Else.html @@ -0,0 +1,76 @@ + + +Else - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Defined, +Up: Conditional Syntax +



+
+ +

4.2.4 Else

+ +

The #else directive can be added to a conditional to provide +alternative text to be used if the condition fails. This is what it +looks like: + +

     #if expression
+     text-if-true
+     #else /* Not expression */
+     text-if-false
+     #endif /* Not expression */
+
+

If expression is nonzero, the text-if-true is included and +the text-if-false is skipped. If expression is zero, the +opposite happens. + +

You can use #else with #ifdef and #ifndef, too. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Environment-Variables.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Environment-Variables.html new file mode 100644 index 0000000..5296f71 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Environment-Variables.html @@ -0,0 +1,135 @@ + + +Environment Variables - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: Invocation, +Up: Top +



+
+ +

13 Environment Variables

+ +

+ +

This section describes the environment variables that affect how CPP +operates. You can use them to specify directories or prefixes to use +when searching for include files, or to control dependency output. + +

Note that you can also specify places to search using options such as +-I, and control dependency output with options like +-M (see Invocation). These take precedence over +environment variables, which in turn take precedence over the +configuration of GCC. + + + + + + + + + + +

+
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
+ +Each variable's value is a list of directories separated by a special +character, much like PATH, in which to look for header files. +The special character, PATH_SEPARATOR, is target-dependent and +determined at GCC build time. For Microsoft Windows-based targets it is a +semicolon, and for almost all other targets it is a colon. + +

CPATH specifies a list of directories to be searched as if +specified with -I, but after any paths given with -I +options on the command line. This environment variable is used +regardless of which language is being preprocessed. + +

The remaining environment variables apply only when preprocessing the +particular language indicated. Each specifies a list of directories +to be searched as if specified with -isystem, but after any +paths given with -isystem options on the command line. + +

In all these variables, an empty element instructs the compiler to +search its current working directory. Empty elements can appear at the +beginning or end of a path. For instance, if the value of +CPATH is :/special/include, that has the same +effect as -I. -I/special/include. + + +

See also Search Path. + + +

DEPENDENCIES_OUTPUT
If this variable is set, its value specifies how to output +dependencies for Make based on the non-system header files processed +by the compiler. System header files are ignored in the dependency +output. + +

The value of DEPENDENCIES_OUTPUT can be just a file name, in +which case the Make rules are written to that file, guessing the target +name from the source file name. Or the value can have the form +file target, in which case the rules are written to +file file using target as the target name. + +

In other words, this environment variable is equivalent to combining +the options -MM and -MF +(see Invocation), +with an optional -MT switch too. + +

SUNPRO_DEPENDENCIES
This variable is the same as DEPENDENCIES_OUTPUT (see above), +except that system header files are not ignored, so it implies +-M rather than -MM. However, the dependence on the +main input file is omitted. +See Invocation. +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Function_002dlike-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Function_002dlike-Macros.html new file mode 100644 index 0000000..4ae8c00 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Function_002dlike-Macros.html @@ -0,0 +1,99 @@ + + +Function-like Macros - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Object-like Macros, +Up: Macros +



+
+ +

3.2 Function-like Macros

+ +

+You can also define macros whose use looks like a function call. These +are called function-like macros. To define a function-like macro, +you use the same #define directive, but you put a pair of +parentheses immediately after the macro name. For example, + +

     #define lang_init()  c_init()
+     lang_init()
+          ==> c_init()
+
+

A function-like macro is only expanded if its name appears with a pair +of parentheses after it. If you write just the name, it is left alone. +This can be useful when you have a function and a macro of the same +name, and you wish to use the function sometimes. + +

     extern void foo(void);
+     #define foo() /* optimized inline version */
+     ...
+       foo();
+       funcptr = foo;
+
+

Here the call to foo() will use the macro, but the function +pointer will get the address of the real function. If the macro were to +be expanded, it would cause a syntax error. + +

If you put spaces between the macro name and the parentheses in the +macro definition, that does not define a function-like macro, it defines +an object-like macro whose expansion happens to begin with a pair of +parentheses. + +

     #define lang_init ()    c_init()
+     lang_init()
+          ==> () c_init()()
+
+

The first two pairs of parentheses in this expansion come from the +macro. The third is the pair that was originally after the macro +invocation. Since lang_init is an object-like macro, it does not +consume those parentheses. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..1450c23 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/GNU-Free-Documentation-License.html @@ -0,0 +1,469 @@ + + +GNU Free Documentation License - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: Environment Variables, +Up: Top +



+
+ +

GNU Free Documentation License

+ +

Version 1.2, November 2002
+ +
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. + +

    Examples of suitable formats for Transparent copies include plain +ascii without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +

    A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. + +

    The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +

  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +

  4. COPYING IN QUANTITY + +

    If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +

  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

      +
    1. Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +
    3. State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +
    13. Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +
    14. Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +
    15. Preserve any Warranty Disclaimers. +
    + +

    If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +

  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” + +

  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +

  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +

  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +

    If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +

  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +

  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

       Copyright (C)  year  your name.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.2
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with...Texts.” line with this: + +

         with the Invariant Sections being list their titles, with
+         the Front-Cover Texts being list, and with the Back-Cover Texts
+         being list.
+
+

If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Header-Files.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Header-Files.html new file mode 100644 index 0000000..92d5452 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Header-Files.html @@ -0,0 +1,102 @@ + + +Header Files - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: Overview, +Up: Top +



+
+ +

2 Header Files

+ +

A header file is a file containing C declarations and macro definitions +(see Macros) to be shared between several source files. You request +the use of a header file in your program by including it, with the +C preprocessing directive #include. + +

Header files serve two purposes. + +

    +
  • System header files declare the interfaces to parts of the operating +system. You include them in your program to supply the definitions and +declarations you need to invoke system calls and libraries. + +
  • Your own header files contain declarations for interfaces between the +source files of your program. Each time you have a group of related +declarations and macro definitions all or most of which are needed in +several different source files, it is a good idea to create a header +file for them. +
+ +

Including a header file produces the same results as copying the header +file into each source file that needs it. Such copying would be +time-consuming and error-prone. With a header file, the related +declarations appear in only one place. If they need to be changed, they +can be changed in one place, and programs that include the header file +will automatically use the new version when next recompiled. The header +file eliminates the labor of finding and changing all the copies as well +as the risk that a failure to find one copy will result in +inconsistencies within a program. + +

In C, the usual convention is to give header files names that end with +.h. It is most portable to use only letters, digits, dashes, and +underscores in header file names, and at most one dot. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Identifier-characters.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Identifier-characters.html new file mode 100644 index 0000000..1cabe72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Identifier-characters.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/If.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/If.html new file mode 100644 index 0000000..d5adcec --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/If.html @@ -0,0 +1,114 @@ + + +If - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Ifdef, +Up: Conditional Syntax +



+
+ +

4.2.2 If

+ +

The #if directive allows you to test the value of an arithmetic +expression, rather than the mere existence of one macro. Its syntax is + +

     #if expression
+     
+     controlled text
+     
+     #endif /* expression */
+
+

expression is a C expression of integer type, subject to stringent +restrictions. It may contain + +

    +
  • Integer constants. + +
  • Character constants, which are interpreted as they would be in normal +code. + +
  • Arithmetic operators for addition, subtraction, multiplication, +division, bitwise operations, shifts, comparisons, and logical +operations (&& and ||). The latter two obey the usual +short-circuiting rules of standard C. + +
  • Macros. All macros in the expression are expanded before actual +computation of the expression's value begins. + +
  • Uses of the defined operator, which lets you check whether macros +are defined in the middle of an #if. + +
  • Identifiers that are not macros, which are all considered to be the +number zero. This allows you to write #if MACRO instead of +#ifdef MACRO, if you know that MACRO, when defined, will +always have a nonzero value. Function-like macros used without their +function call parentheses are also treated as zero. + +

    In some contexts this shortcut is undesirable. The -Wundef +option causes GCC to warn whenever it encounters an identifier which is +not a macro in an #if. +

+ +

The preprocessor does not know anything about types in the language. +Therefore, sizeof operators are not recognized in #if, and +neither are enum constants. They will be taken as identifiers +which are not macros, and replaced by zero. In the case of +sizeof, this is likely to cause the expression to be invalid. + +

The preprocessor calculates the value of expression. It carries +out all calculations in the widest integer type known to the compiler; +on most machines supported by GCC this is 64 bits. This is not the same +rule as the compiler uses to calculate the value of a constant +expression, and may give different results in some cases. If the value +comes out to be nonzero, the #if succeeds and the controlled +text is included; otherwise it is skipped. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Ifdef.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Ifdef.html new file mode 100644 index 0000000..67b2ab8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Ifdef.html @@ -0,0 +1,126 @@ + + +Ifdef - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Up: Conditional Syntax +



+
+ +

4.2.1 Ifdef

+ +

+The simplest sort of conditional is + +

     #ifdef MACRO
+     
+     controlled text
+     
+     #endif /* MACRO */
+
+

This block is called a conditional group. controlled text +will be included in the output of the preprocessor if and only if +MACRO is defined. We say that the conditional succeeds if +MACRO is defined, fails if it is not. + +

The controlled text inside of a conditional can include +preprocessing directives. They are executed only if the conditional +succeeds. You can nest conditional groups inside other conditional +groups, but they must be completely nested. In other words, +#endif always matches the nearest #ifdef (or +#ifndef, or #if). Also, you cannot start a conditional +group in one file and end it in another. + +

Even if a conditional fails, the controlled text inside it is +still run through initial transformations and tokenization. Therefore, +it must all be lexically valid C. Normally the only way this matters is +that all comments and string literals inside a failing conditional group +must still be properly ended. + +

The comment following the #endif is not required, but it is a +good practice if there is a lot of controlled text, because it +helps people match the #endif to the corresponding #ifdef. +Older programs sometimes put MACRO directly after the +#endif without enclosing it in a comment. This is invalid code +according to the C standard. CPP accepts it with a warning. It +never affects which #ifndef the #endif matches. + +

Sometimes you wish to use some code if a macro is not defined. +You can do this by writing #ifndef instead of #ifdef. +One common use of #ifndef is to include code only the first +time a header file is included. See Once-Only Headers. + +

Macro definitions can vary between compilations for several reasons. +Here are some samples. + +

    +
  • Some macros are predefined on each kind of machine +(see System-specific Predefined Macros). This allows you to provide +code specially tuned for a particular machine. + +
  • System header files define more macros, associated with the features +they implement. You can test these macros with conditionals to avoid +using a system feature on a machine where it is not implemented. + +
  • Macros can be defined or undefined with the -D and -U +command line options when you compile the program. You can arrange to +compile the same source file into two different programs by choosing a +macro name to specify which program you want, writing conditionals to +test whether or how this macro is defined, and then controlling the +state of the macro with command line options, perhaps set in the +Makefile. See Invocation. + +
  • Your program might have a special header file (often called +config.h) that is adjusted when the program is compiled. It can +define or not define macros depending on the features of the system and +the desired capabilities of the program. The adjustment can be +automated by a tool such as autoconf, or done by hand. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation-Details.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation-Details.html new file mode 100644 index 0000000..4770714 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation-Details.html @@ -0,0 +1,74 @@ + + +Implementation Details - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Traditional Mode, +Up: Top +



+
+ +

11 Implementation Details

+ +

Here we document details of how the preprocessor's implementation +affects its user-visible behavior. You should try to avoid undue +reliance on behavior described here, as it is possible that it will +change subtly in future implementations. + +

Also documented here are obsolete features and changes from previous +versions of CPP. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation-limits.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation-limits.html new file mode 100644 index 0000000..c5e3980 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation-limits.html @@ -0,0 +1,121 @@ + + +Implementation limits - The C Preprocessor + + + + + + + + + + + + + + + +

11.2 Implementation limits

+ +

+CPP has a small number of internal limits. This section lists the +limits which the C standard requires to be no lower than some minimum, +and all the others known. It is intended that there should be as few limits +as possible. If you encounter an undocumented or inconvenient limit, +please report that as a bug. See Reporting Bugs (Using the GNU Compiler Collection (GCC)). + +

Where we say something is limited only by available memory, that +means that internal data structures impose no intrinsic limit, and space +is allocated with malloc or equivalent. The actual limit will +therefore depend on many things, such as the size of other things +allocated by the compiler at the same time, the amount of memory +consumed by other processes on the same computer, etc. + +

    +
  • Nesting levels of #include files. + +

    We impose an arbitrary limit of 200 levels, to avoid runaway recursion. +The standard requires at least 15 levels. + +

  • Nesting levels of conditional inclusion. + +

    The C standard mandates this be at least 63. CPP is limited only by +available memory. + +

  • Levels of parenthesized expressions within a full expression. + +

    The C standard requires this to be at least 63. In preprocessor +conditional expressions, it is limited only by available memory. + +

  • Significant initial characters in an identifier or macro name. + +

    The preprocessor treats all characters as significant. The C standard +requires only that the first 63 be significant. + +

  • Number of macros simultaneously defined in a single translation unit. + +

    The standard requires at least 4095 be possible. CPP is limited only +by available memory. + +

  • Number of parameters in a macro definition and arguments in a macro call. + +

    We allow USHRT_MAX, which is no smaller than 65,535. The minimum +required by the standard is 127. + +

  • Number of characters on a logical source line. + +

    The C standard requires a minimum of 4096 be permitted. CPP places +no limits on this, but you may get incorrect column numbers reported in +diagnostics for lines longer than 65,535 characters. + +

  • Maximum size of a source file. + +

    The standard does not specify any lower limit on the maximum size of a +source file. GNU cpp maps files into memory, so it is limited by the +available address space. This is generally at least two gigabytes. +Depending on the operating system, the size of physical memory may or +may not be a limitation. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation_002ddefined-behavior.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation_002ddefined-behavior.html new file mode 100644 index 0000000..2d1e966 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Implementation_002ddefined-behavior.html @@ -0,0 +1,144 @@ + + +Implementation-defined behavior - The C Preprocessor + + + + + + + + + + + + + + +

11.1 Implementation-defined behavior

+ +

+This is how CPP behaves in all the cases which the C standard +describes as implementation-defined. This term means that the +implementation is free to do what it likes, but must document its choice +and stick to it. + + +

    +
  • The mapping of physical source file multi-byte characters to the +execution character set. + +

    Currently, CPP requires its input to be ASCII or UTF-8. The execution +character set may be controlled by the user, with the +-fexec-charset and -fwide-exec-charset options. + +

  • Identifier characters. + + +

    The C and C++ standards allow identifiers to be composed of _ +and the alphanumeric characters. C++ and C99 also allow universal +character names, and C99 further permits implementation-defined +characters. GCC currently only permits universal character names if +-fextended-identifiers is used, because the implementation of +universal character names in identifiers is experimental. + +

    GCC allows the $ character in identifiers as an extension for +most targets. This is true regardless of the std= switch, +since this extension cannot conflict with standards-conforming +programs. When preprocessing assembler, however, dollars are not +identifier characters by default. + +

    Currently the targets that by default do not permit $ are AVR, +IP2K, MMIX, MIPS Irix 3, ARM aout, and PowerPC targets for the AIX and +BeOS operating systems. + +

    You can override the default with -fdollars-in-identifiers or +fno-dollars-in-identifiers. See fdollars-in-identifiers. + +

  • Non-empty sequences of whitespace characters. + +

    In textual output, each whitespace sequence is collapsed to a single +space. For aesthetic reasons, the first token on each non-directive +line of output is preceded with sufficient spaces that it appears in the +same column as it did in the original source file. + +

  • The numeric value of character constants in preprocessor expressions. + +

    The preprocessor and compiler interpret character constants in the +same way; i.e. escape sequences such as \a are given the +values they would have on the target machine. + +

    The compiler values a multi-character character constant a character +at a time, shifting the previous value left by the number of bits per +target character, and then or-ing in the bit-pattern of the new +character truncated to the width of a target character. The final +bit-pattern is given type int, and is therefore signed, +regardless of whether single characters are signed or not (a slight +change from versions 3.1 and earlier of GCC). If there are more +characters in the constant than would fit in the target int the +compiler issues a warning, and the excess leading characters are +ignored. + +

    For example, 'ab' for a target with an 8-bit char would be +interpreted as (int) ((unsigned char) 'a' * 256 + (unsigned char) 'b'), and '\234a' as (int) ((unsigned char) '\234' * 256 + (unsigned char) 'a'). + +

  • Source file inclusion. + +

    For a discussion on how the preprocessor locates header files, +Include Operation. + +

  • Interpretation of the filename resulting from a macro-expanded +#include directive. + +

    See Computed Includes. + +

  • Treatment of a #pragma directive that after macro-expansion +results in a standard pragma. + +

    No macro expansion occurs on any #pragma directive line, so the +question does not arise. + +

    Note that GCC does not yet implement any of the standard +pragmas. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Include-Operation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Include-Operation.html new file mode 100644 index 0000000..c70a63c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Include-Operation.html @@ -0,0 +1,112 @@ + + +Include Operation - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Include Syntax, +Up: Header Files +



+
+ +

2.2 Include Operation

+ +

The #include directive works by directing the C preprocessor to +scan the specified file as input before continuing with the rest of the +current file. The output from the preprocessor contains the output +already generated, followed by the output resulting from the included +file, followed by the output that comes from the text after the +#include directive. For example, if you have a header file +header.h as follows, + +

     char *test (void);
+
+

and a main program called program.c that uses the header file, +like this, + +

     int x;
+     #include "header.h"
+     
+     int
+     main (void)
+     {
+       puts (test ());
+     }
+
+

the compiler will see the same token stream as it would if +program.c read + +

     int x;
+     char *test (void);
+     
+     int
+     main (void)
+     {
+       puts (test ());
+     }
+
+

Included files are not limited to declarations and macro definitions; +those are merely the typical uses. Any fragment of a C program can be +included from another file. The include file could even contain the +beginning of a statement that is concluded in the containing file, or +the end of a statement that was started in the including file. However, +an included file must consist of complete tokens. Comments and string +literals which have not been closed by the end of an included file are +invalid. For error recovery, they are considered to end at the end of +the file. + +

To avoid confusion, it is best if header files contain only complete +syntactic units—function declarations or definitions, type +declarations, etc. + +

The line following the #include directive is always treated as a +separate line by the C preprocessor, even if the included file lacks a +final newline. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Include-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Include-Syntax.html new file mode 100644 index 0000000..5a8e683 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Include-Syntax.html @@ -0,0 +1,88 @@ + + +Include Syntax - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Up: Header Files +



+
+ +

2.1 Include Syntax

+ +

Both user and system header files are included using the preprocessing +directive #include. It has two variants: + +

+
#include <file>
This variant is used for system header files. It searches for a file +named file in a standard list of system directories. You can prepend +directories to this list with the -I option (see Invocation). + +
#include "file"
This variant is used for header files of your own program. It +searches for a file named file first in the directory containing +the current file, then in the quote directories and then the same +directories used for <file>. You can prepend directories +to the list of quote directories with the -iquote option. +
+ +

The argument of #include, whether delimited with quote marks or +angle brackets, behaves like a string constant in that comments are not +recognized, and macro names are not expanded. Thus, #include <x/*y> specifies inclusion of a system header file named x/*y. + +

However, if backslashes occur within file, they are considered +ordinary text characters, not escape characters. None of the character +escape sequences appropriate to string constants in C are processed. +Thus, #include "x\n\\y" specifies a filename containing three +backslashes. (Some systems interpret \ as a pathname separator. +All of these also interpret / the same way. It is most portable +to use only /.) + +

It is an error if there is anything (other than comments) on the line +after the file name. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Index-of-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Index-of-Directives.html new file mode 100644 index 0000000..12404c1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Index-of-Directives.html @@ -0,0 +1,82 @@ + + +Index of Directives - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: GNU Free Documentation License, +Up: Top +



+
+ +

Index of Directives

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Initial-processing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Initial-processing.html new file mode 100644 index 0000000..f3a2249 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Initial-processing.html @@ -0,0 +1,195 @@ + + +Initial processing - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Character sets, +Up: Overview +



+
+ +

1.2 Initial processing

+ +

The preprocessor performs a series of textual transformations on its +input. These happen before all other processing. Conceptually, they +happen in a rigid order, and the entire file is run through each +transformation before the next one begins. CPP actually does them +all at once, for performance reasons. These transformations correspond +roughly to the first three “phases of translation” described in the C +standard. + +

    +
  1. The input file is read into memory and broken into lines. + +

    Different systems use different conventions to indicate the end of a +line. GCC accepts the ASCII control sequences LF, CR LF and CR as end-of-line markers. These are the canonical +sequences used by Unix, DOS and VMS, and the classic Mac OS (before +OSX) respectively. You may therefore safely copy source code written +on any of those systems to a different one and use it without +conversion. (GCC may lose track of the current line number if a file +doesn't consistently use one convention, as sometimes happens when it +is edited on computers with different conventions that share a network +file system.) + +

    If the last line of any input file lacks an end-of-line marker, the end +of the file is considered to implicitly supply one. The C standard says +that this condition provokes undefined behavior, so GCC will emit a +warning message. + +

  2. If trigraphs are enabled, they are replaced by their +corresponding single characters. By default GCC ignores trigraphs, +but if you request a strictly conforming mode with the -std +option, or you specify the -trigraphs option, then it +converts them. + +

    These are nine three-character sequences, all starting with ??, +that are defined by ISO C to stand for single characters. They permit +obsolete systems that lack some of C's punctuation to use C. For +example, ??/ stands for \, so '??/n' is a character +constant for a newline. + +

    Trigraphs are not popular and many compilers implement them +incorrectly. Portable code should not rely on trigraphs being either +converted or ignored. With -Wtrigraphs GCC will warn you +when a trigraph may change the meaning of your program if it were +converted. See Wtrigraphs. + +

    In a string constant, you can prevent a sequence of question marks +from being confused with a trigraph by inserting a backslash between +the question marks, or by separating the string literal at the +trigraph and making use of string literal concatenation. "(??\?)" +is the string (???), not (?]. Traditional C compilers +do not recognize these idioms. + +

    The nine trigraphs and their replacements are + +

              Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
    +          Replacement:      [    ]    {    }    #    \    ^    |    ~
    +     
    +
  3. Continued lines are merged into one long line. + +

    A continued line is a line which ends with a backslash, \. The +backslash is removed and the following line is joined with the current +one. No space is inserted, so you may split a line anywhere, even in +the middle of a word. (It is generally more readable to split lines +only at white space.) + +

    The trailing backslash on a continued line is commonly referred to as a +backslash-newline. + +

    If there is white space between a backslash and the end of a line, that +is still a continued line. However, as this is usually the result of an +editing mistake, and many compilers will not accept it as a continued +line, GCC will warn you about it. + +

  4. All comments are replaced with single spaces. + +

    There are two kinds of comments. Block comments begin with +/* and continue until the next */. Block comments do not +nest: + +

              /* this is /* one comment */ text outside comment
    +     
    +

    Line comments begin with // and continue to the end of the +current line. Line comments do not nest either, but it does not matter, +because they would end in the same place anyway. + +

              // this is // one comment
    +          text outside comment
    +     
    +
+ +

It is safe to put line comments inside block comments, or vice versa. + +

     /* block comment
+        // contains line comment
+        yet more comment
+      */ outside comment
+     
+     // line comment /* contains block comment */
+
+

But beware of commenting out one end of a block comment with a line +comment. + +

      // l.c.  /* block comment begins
+         oops! this isn't a comment anymore */
+
+

Comments are not recognized within string literals. +"/* blah */" is the string constant /* blah */, not +an empty string. + +

Line comments are not in the 1989 edition of the C standard, but they +are recognized by GCC as an extension. In C++ and in the 1999 edition +of the C standard, they are an official part of the language. + +

Since these transformations happen before all other processing, you can +split a line mechanically with backslash-newline anywhere. You can +comment out the end of a line. You can continue a line comment onto the +next line with backslash-newline. You can even split /*, +*/, and // onto multiple lines with backslash-newline. +For example: + +

     /\
+     *
+     */ # /*
+     */ defi\
+     ne FO\
+     O 10\
+     20
+
+

is equivalent to #define FOO 1020. All these tricks are +extremely confusing and should not be used in code intended to be +readable. + +

There is no way to prevent a backslash at the end of a line from being +interpreted as a backslash-newline. This cannot affect any correct +program, however. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Invocation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Invocation.html new file mode 100644 index 0000000..423b801 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Invocation.html @@ -0,0 +1,630 @@ + + +Invocation - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: Implementation Details, +Up: Top +



+
+ +

12 Invocation

+ +

+Most often when you use the C preprocessor you will not have to invoke it +explicitly: the C compiler will do so automatically. However, the +preprocessor is sometimes useful on its own. All the options listed +here are also acceptable to the C compiler and have the same meaning, +except that the C compiler has different rules for specifying the output +file. + +

Note: Whether you use the preprocessor by way of gcc +or cpp, the compiler driver is run first. This +program's purpose is to translate your command into invocations of the +programs that do the actual work. Their command line interfaces are +similar but not identical to the documented interface, and may change +without notice. + + +

The C preprocessor expects two file names as arguments, infile and +outfile. The preprocessor reads infile together with any +other files it specifies with #include. All the output generated +by the combined input files is written in outfile. + +

Either infile or outfile may be -, which as +infile means to read from standard input and as outfile +means to write to standard output. Also, if either file is omitted, it +means the same as if - had been specified for that file. + +

Unless otherwise noted, or the option ends in =, all options +which take an argument may have that argument appear either immediately +after the option, or with a space between option and argument: +-Ifoo and -I foo have the same effect. + +

Many options have multi-letter names; therefore multiple single-letter +options may not be grouped: -dM is very different from +-d -M. + +

+ + + + + + + + + + +

+
-D name
Predefine name as a macro, with definition 1. + +
-D name=definition
The contents of definition are tokenized and processed as if +they appeared during translation phase three in a #define +directive. In particular, the definition will be truncated by +embedded newline characters. + +

If you are invoking the preprocessor from a shell or shell-like +program you may need to use the shell's quoting syntax to protect +characters such as spaces that have a meaning in the shell syntax. + +

If you wish to define a function-like macro on the command line, write +its argument list with surrounding parentheses before the equals sign +(if any). Parentheses are meaningful to most shells, so you will need +to quote the option. With sh and csh, +-D'name(args...)=definition' works. + +

-D and -U options are processed in the order they +are given on the command line. All -imacros file and +-include file options are processed after all +-D and -U options. + +

-U name
Cancel any previous definition of name, either built in or +provided with a -D option. + +
-undef
Do not predefine any system-specific or GCC-specific macros. The +standard predefined macros remain defined. +See Standard Predefined Macros. + +
-I dir
Add the directory dir to the list of directories to be searched +for header files. +See Search Path. +Directories named by -I are searched before the standard +system include directories. If the directory dir is a standard +system include directory, the option is ignored to ensure that the +default search order for system directories and the special treatment +of system headers are not defeated +(see System Headers) +. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-o file
Write output to file. This is the same as specifying file +as the second non-option argument to cpp. gcc has a +different interpretation of a second non-option argument, so you must +use -o to specify the output file. + +
-Wall
Turns on all optional warnings which are desirable for normal code. +At present this is -Wcomment, -Wtrigraphs, +-Wmultichar and a warning about integer promotion causing a +change of sign in #if expressions. Note that many of the +preprocessor's warnings are on by default and have no options to +control them. + +
-Wcomment
-Wcomments
Warn whenever a comment-start sequence /* appears in a /* +comment, or whenever a backslash-newline appears in a // comment. +(Both forms have the same effect.) + +
-Wtrigraphs
+Most trigraphs in comments cannot affect the meaning of the program. +However, a trigraph that would form an escaped newline (??/ at +the end of a line) can, by changing where the comment begins or ends. +Therefore, only trigraphs that would form escaped newlines produce +warnings inside a comment. + +

This option is implied by -Wall. If -Wall is not +given, this option is still enabled unless trigraphs are enabled. To +get trigraph conversion without warnings, but get the other +-Wall warnings, use -trigraphs -Wall -Wno-trigraphs. + +

-Wtraditional
Warn about certain constructs that behave differently in traditional and +ISO C. Also warn about ISO C constructs that have no traditional C +equivalent, and problematic constructs which should be avoided. +See Traditional Mode. + +
-Wimport
Warn the first time #import is used. + +
-Wundef
Warn whenever an identifier which is not a macro is encountered in an +#if directive, outside of defined. Such identifiers are +replaced with zero. + +
-Wunused-macros
Warn about macros defined in the main file that are unused. A macro +is used if it is expanded or tested for existence at least once. +The preprocessor will also warn if the macro has not been used at the +time it is redefined or undefined. + +

Built-in macros, macros defined on the command line, and macros +defined in include files are not warned about. + +

Note: If a macro is actually used, but only used in skipped +conditional blocks, then CPP will report it as unused. To avoid the +warning in such a case, you might improve the scope of the macro's +definition by, for example, moving it into the first skipped block. +Alternatively, you could provide a dummy use with something like: + +

          #if defined the_macro_causing_the_warning
+          #endif
+     
+
-Wendif-labels
Warn whenever an #else or an #endif are followed by text. +This usually happens in code of the form + +
          #if FOO
+          ...
+          #else FOO
+          ...
+          #endif FOO
+     
+

The second and third FOO should be in comments, but often are not +in older programs. This warning is on by default. + +

-Werror
Make all warnings into hard errors. Source code which triggers warnings +will be rejected. + +
-Wsystem-headers
Issue warnings for code in system headers. These are normally unhelpful +in finding bugs in your own code, therefore suppressed. If you are +responsible for the system library, you may want to see them. + +
-w
Suppress all warnings, including those which GNU CPP issues by default. + +
-pedantic
Issue all the mandatory diagnostics listed in the C standard. Some of +them are left out by default, since they trigger frequently on harmless +code. + +
-pedantic-errors
Issue all the mandatory diagnostics, and make all mandatory diagnostics +into errors. This includes mandatory diagnostics that GCC issues +without -pedantic but treats as warnings. + +
-M
Instead of outputting the result of preprocessing, output a rule +suitable for make describing the dependencies of the main +source file. The preprocessor outputs one make rule containing +the object file name for that source file, a colon, and the names of all +the included files, including those coming from -include or +-imacros command line options. + +

Unless specified explicitly (with -MT or -MQ), the +object file name consists of the name of the source file with any +suffix replaced with object file suffix and with any leading directory +parts removed. If there are many included files then the rule is +split into several lines using \-newline. The rule has no +commands. + +

This option does not suppress the preprocessor's debug output, such as +-dM. To avoid mixing such debug output with the dependency +rules you should explicitly specify the dependency output file with +-MF, or use an environment variable like +DEPENDENCIES_OUTPUT (see Environment Variables). Debug output +will still be sent to the regular output stream as normal. + +

Passing -M to the driver implies -E, and suppresses +warnings with an implicit -w. + +

-MM
Like -M but do not mention header files that are found in +system header directories, nor header files that are included, +directly or indirectly, from such a header. + +

This implies that the choice of angle brackets or double quotes in an +#include directive does not in itself determine whether that +header will appear in -MM dependency output. This is a +slight change in semantics from GCC versions 3.0 and earlier. + +

+

-MF file
When used with -M or -MM, specifies a +file to write the dependencies to. If no -MF switch is given +the preprocessor sends the rules to the same place it would have sent +preprocessed output. + +

When used with the driver options -MD or -MMD, +-MF overrides the default dependency output file. + +

-MG
In conjunction with an option such as -M requesting +dependency generation, -MG assumes missing header files are +generated files and adds them to the dependency list without raising +an error. The dependency filename is taken directly from the +#include directive without prepending any path. -MG +also suppresses preprocessed output, as a missing header file renders +this useless. + +

This feature is used in automatic updating of makefiles. + +

-MP
This option instructs CPP to add a phony target for each dependency +other than the main file, causing each to depend on nothing. These +dummy rules work around errors make gives if you remove header +files without updating the Makefile to match. + +

This is typical output: + +

          test.o: test.c test.h
+          
+          test.h:
+     
+
-MT target
+Change the target of the rule emitted by dependency generation. By +default CPP takes the name of the main input file, deletes any +directory components and any file suffix such as .c, and +appends the platform's usual object suffix. The result is the target. + +

An -MT option will set the target to be exactly the string you +specify. If you want multiple targets, you can specify them as a single +argument to -MT, or use multiple -MT options. + +

For example, -MT '$(objpfx)foo.o' might give + +

          $(objpfx)foo.o: foo.c
+     
+
-MQ target
+Same as -MT, but it quotes any characters which are special to +Make. -MQ '$(objpfx)foo.o' gives + +
          $$(objpfx)foo.o: foo.c
+     
+

The default target is automatically quoted, as if it were given with +-MQ. + +

-MD
-MD is equivalent to -M -MF file, except that +-E is not implied. The driver determines file based on +whether an -o option is given. If it is, the driver uses its +argument but with a suffix of .d, otherwise it takes the name +of the input file, removes any directory components and suffix, and +applies a .d suffix. + +

If -MD is used in conjunction with -E, any +-o switch is understood to specify the dependency output file +(see -MF), but if used without -E, each -o +is understood to specify a target object file. + +

Since -E is not implied, -MD can be used to generate +a dependency output file as a side-effect of the compilation process. + +

-MMD
Like -MD except mention only user header files, not system +header files. + +
-x c
-x c++
-x objective-c
-x assembler-with-cpp
Specify the source language: C, C++, Objective-C, or assembly. This has +nothing to do with standards conformance or extensions; it merely +selects which base syntax to expect. If you give none of these options, +cpp will deduce the language from the extension of the source file: +.c, .cc, .m, or .S. Some other common +extensions for C++ and assembly are also recognized. If cpp does not +recognize the extension, it will treat the file as C; this is the most +generic mode. + +

Note: Previous versions of cpp accepted a -lang option +which selected both the language and the standards conformance level. +This option has been removed, because it conflicts with the -l +option. + +

-std=standard
-ansi
Specify the standard to which the code should conform. Currently CPP +knows about C and C++ standards; others may be added in the future. + +

standard +may be one of: +

+
iso9899:1990
c89
The ISO C standard from 1990. c89 is the customary shorthand for +this version of the standard. + +

The -ansi option is equivalent to -std=c89. + +

iso9899:199409
The 1990 C standard, as amended in 1994. + +
iso9899:1999
c99
iso9899:199x
c9x
The revised ISO C standard, published in December 1999. Before +publication, this was known as C9X. + +
gnu89
The 1990 C standard plus GNU extensions. This is the default. + +
gnu99
gnu9x
The 1999 C standard plus GNU extensions. + +
c++98
The 1998 ISO C++ standard plus amendments. + +
gnu++98
The same as -std=c++98 plus GNU extensions. This is the +default for C++ code. +
+ +
-I-
Split the include path. Any directories specified with -I +options before -I- are searched only for headers requested with +#include "file"; they are not searched for +#include <file>. If additional directories are +specified with -I options after the -I-, those +directories are searched for all #include directives. + +

In addition, -I- inhibits the use of the directory of the current +file directory as the first search directory for #include "file". +See Search Path. +This option has been deprecated. + +

-nostdinc
Do not search the standard system directories for header files. +Only the directories you have specified with -I options +(and the directory of the current file, if appropriate) are searched. + +
-nostdinc++
Do not search for header files in the C++-specific standard directories, +but do still search the other standard directories. (This option is +used when building the C++ library.) + +
-include file
Process file as if #include "file" appeared as the first +line of the primary source file. However, the first directory searched +for file is the preprocessor's working directory instead of +the directory containing the main source file. If not found there, it +is searched for in the remainder of the #include "..." search +chain as normal. + +

If multiple -include options are given, the files are included +in the order they appear on the command line. + +

-imacros file
Exactly like -include, except that any output produced by +scanning file is thrown away. Macros it defines remain defined. +This allows you to acquire all the macros from a header without also +processing its declarations. + +

All files specified by -imacros are processed before all files +specified by -include. + +

-idirafter dir
Search dir for header files, but do it after all +directories specified with -I and the standard system directories +have been exhausted. dir is treated as a system include directory. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-iprefix prefix
Specify prefix as the prefix for subsequent -iwithprefix +options. If the prefix represents a directory, you should include the +final /. + +
-iwithprefix dir
-iwithprefixbefore dir
Append dir to the prefix specified previously with +-iprefix, and add the resulting directory to the include search +path. -iwithprefixbefore puts it in the same place -I +would; -iwithprefix puts it where -idirafter would. + +
-isysroot dir
This option is like the --sysroot option, but applies only to +header files. See the --sysroot option for more information. + +
-imultilib dir
Use dir as a subdirectory of the directory containing +target-specific C++ headers. + +
-isystem dir
Search dir for header files, after all directories specified by +-I but before the standard system directories. Mark it +as a system directory, so that it gets the same special treatment as +is applied to the standard system directories. +See System Headers. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-iquote dir
Search dir only for header files requested with +#include "file"; they are not searched for +#include <file>, before all directories specified by +-I and before the standard system directories. +See Search Path. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-fdirectives-only
When preprocessing, handle directives, but do not expand macros. + +

The option's behavior depends on the -E and -fpreprocessed +options. + +

With -E, preprocessing is limited to the handling of directives +such as #define, #ifdef, and #error. Other +preprocessor operations, such as macro expansion and trigraph +conversion are not performed. In addition, the -dD option is +implicitly enabled. + +

With -fpreprocessed, predefinition of command line and most +builtin macros is disabled. Macros such as __LINE__, which are +contextually dependent, are handled normally. This enables compilation of +files previously preprocessed with -E -fdirectives-only. + +

With both -E and -fpreprocessed, the rules for +-fpreprocessed take precedence. This enables full preprocessing of +files previously preprocessed with -E -fdirectives-only. + +

-fdollars-in-identifiers
+Accept $ in identifiers. + See Identifier characters. + +
-fextended-identifiers
Accept universal character names in identifiers. This option is +experimental; in a future version of GCC, it will be enabled by +default for C99 and C++. + +
-fpreprocessed
Indicate to the preprocessor that the input file has already been +preprocessed. This suppresses things like macro expansion, trigraph +conversion, escaped newline splicing, and processing of most directives. +The preprocessor still recognizes and removes comments, so that you can +pass a file preprocessed with -C to the compiler without +problems. In this mode the integrated preprocessor is little more than +a tokenizer for the front ends. + +

-fpreprocessed is implicit if the input file has one of the +extensions .i, .ii or .mi. These are the +extensions that GCC uses for preprocessed files created by +-save-temps. + +

-ftabstop=width
Set the distance between tab stops. This helps the preprocessor report +correct column numbers in warnings or errors, even if tabs appear on the +line. If the value is less than 1 or greater than 100, the option is +ignored. The default is 8. + +
-fexec-charset=charset
Set the execution character set, used for string and character +constants. The default is UTF-8. charset can be any encoding +supported by the system's iconv library routine. + +
-fwide-exec-charset=charset
Set the wide execution character set, used for wide string and +character constants. The default is UTF-32 or UTF-16, whichever +corresponds to the width of wchar_t. As with +-fexec-charset, charset can be any encoding supported +by the system's iconv library routine; however, you will have +problems with encodings that do not fit exactly in wchar_t. + +
-finput-charset=charset
Set the input character set, used for translation from the character +set of the input file to the source character set used by GCC. If the +locale does not specify, or GCC cannot get this information from the +locale, the default is UTF-8. This can be overridden by either the locale +or this command line option. Currently the command line option takes +precedence if there's a conflict. charset can be any encoding +supported by the system's iconv library routine. + +
-fworking-directory
Enable generation of linemarkers in the preprocessor output that will +let the compiler know the current working directory at the time of +preprocessing. When this option is enabled, the preprocessor will +emit, after the initial linemarker, a second linemarker with the +current working directory followed by two slashes. GCC will use this +directory, when it's present in the preprocessed input, as the +directory emitted as the current working directory in some debugging +information formats. This option is implicitly enabled if debugging +information is enabled, but this can be inhibited with the negated +form -fno-working-directory. If the -P flag is +present in the command line, this option has no effect, since no +#line directives are emitted whatsoever. + +
-fno-show-column
Do not print column numbers in diagnostics. This may be necessary if +diagnostics are being scanned by a program that does not understand the +column numbers, such as dejagnu. + +
-A predicate=answer
Make an assertion with the predicate predicate and answer +answer. This form is preferred to the older form -A +predicate(answer), which is still supported, because +it does not use shell special characters. +See Assertions. + +
-A -predicate=answer
Cancel an assertion with the predicate predicate and answer +answer. + +
-dCHARS
CHARS is a sequence of one or more of the following characters, +and must not be preceded by a space. Other characters are interpreted +by the compiler proper, or reserved for future versions of GCC, and so +are silently ignored. If you specify characters whose behavior +conflicts, the result is undefined. + +
+
M
Instead of the normal output, generate a list of #define +directives for all the macros defined during the execution of the +preprocessor, including predefined macros. This gives you a way of +finding out what is predefined in your version of the preprocessor. +Assuming you have no file foo.h, the command + +
               touch foo.h; cpp -dM foo.h
+          
+

will show all the predefined macros. + +

If you use -dM without the -E option, -dM is +interpreted as a synonym for -fdump-rtl-mach. +See Debugging Options (gcc). + +

D
Like M except in two respects: it does not include the +predefined macros, and it outputs both the #define +directives and the result of preprocessing. Both kinds of output go to +the standard output file. + +
N
Like D, but emit only the macro names, not their expansions. + +
I
Output #include directives in addition to the result of +preprocessing. +
+ +
-P
Inhibit generation of linemarkers in the output from the preprocessor. +This might be useful when running the preprocessor on something that is +not C code, and will be sent to a program which might be confused by the +linemarkers. +See Preprocessor Output. + +
-C
Do not discard comments. All comments are passed through to the output +file, except for comments in processed directives, which are deleted +along with the directive. + +

You should be prepared for side effects when using -C; it +causes the preprocessor to treat comments as tokens in their own right. +For example, comments appearing at the start of what would be a +directive line have the effect of turning that line into an ordinary +source line, since the first token on the line is no longer a #. + +

-CC
Do not discard comments, including during macro expansion. This is +like -C, except that comments contained within macros are +also passed through to the output file where the macro is expanded. + +

In addition to the side-effects of the -C option, the +-CC option causes all C++-style comments inside a macro +to be converted to C-style comments. This is to prevent later use +of that macro from inadvertently commenting out the remainder of +the source line. + +

The -CC option is generally used to support lint comments. + +

-traditional-cpp
Try to imitate the behavior of old-fashioned C preprocessors, as +opposed to ISO C preprocessors. +See Traditional Mode. + +
-trigraphs
Process trigraph sequences. +See Initial processing. + +
-remap
Enable special code to work around file systems which only permit very +short file names, such as MS-DOS. + +
--help
--target-help
Print text describing all the command line options instead of +preprocessing anything. + +
-v
Verbose mode. Print out GNU CPP's version number at the beginning of +execution, and report the final form of the include path. + +
-H
Print the name of each header file used, in addition to other normal +activities. Each name is indented to show how deep in the +#include stack it is. Precompiled header files are also +printed, even if they are found to be invalid; an invalid precompiled +header file is printed with ...x and a valid one with ...! . + +
-version
--version
Print out GNU CPP's version number. With one dash, proceed to +preprocess as normal. With two dashes, exit immediately. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Line-Control.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Line-Control.html new file mode 100644 index 0000000..00ebf47 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Line-Control.html @@ -0,0 +1,131 @@ + + +Line Control - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Diagnostics, +Up: Top +



+
+ +

6 Line Control

+ +

+The C preprocessor informs the C compiler of the location in your source +code where each token came from. Presently, this is just the file name +and line number. All the tokens resulting from macro expansion are +reported as having appeared on the line of the source file where the +outermost macro was used. We intend to be more accurate in the future. + +

If you write a program which generates source code, such as the +bison parser generator, you may want to adjust the preprocessor's +notion of the current file name and line number by hand. Parts of the +output from bison are generated from scratch, other parts come +from a standard parser file. The rest are copied verbatim from +bison's input. You would like compiler error messages and +symbolic debuggers to be able to refer to bison's input file. + +

bison or any such program can arrange this by writing +#line directives into the output file. #line is a +directive that specifies the original line number and source file name +for subsequent input in the current preprocessor input file. +#line has three variants: + +

+
#line linenum
linenum is a non-negative decimal integer constant. It specifies +the line number which should be reported for the following line of +input. Subsequent lines are counted from linenum. + +
#line linenum filename
linenum is the same as for the first form, and has the same +effect. In addition, filename is a string constant. The +following line and all subsequent lines are reported to come from the +file it specifies, until something else happens to change that. +filename is interpreted according to the normal rules for a string +constant: backslash escapes are interpreted. This is different from +#include. + +

Previous versions of CPP did not interpret escapes in #line; +we have changed it because the standard requires they be interpreted, +and most other compilers do. + +

#line anything else
anything else is checked for macro calls, which are expanded. +The result should match one of the above two forms. +
+ +

#line directives alter the results of the __FILE__ and +__LINE__ predefined macros from that point on. See Standard Predefined Macros. They do not have any effect on #include's +idea of the directory containing the current file. This is a change +from GCC 2.95. Previously, a file reading + +

     #line 1 "../src/gram.y"
+     #include "gram.h"
+
+

would search for gram.h in ../src, then the -I +chain; the directory containing the physical source file would not be +searched. In GCC 3.0 and later, the #include is not affected by +the presence of a #line referring to a different directory. + +

We made this change because the old behavior caused problems when +generated source files were transported between machines. For instance, +it is common practice to ship generated parsers with a source release, +so that people building the distribution do not need to have yacc or +Bison installed. These files frequently have #line directives +referring to the directory tree of the system where the distribution was +created. If GCC tries to search for headers in those directories, the +build is likely to fail. + +

The new behavior can cause failures too, if the generated file is not +in the same directory as its source and it attempts to include a header +which would be visible searching from the directory containing the +source file. However, this problem is easily solved with an additional +-I switch on the command line. The failures caused by the old +semantics could sometimes be corrected only by editing the generated +files, which is difficult and error-prone. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macro-Arguments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macro-Arguments.html new file mode 100644 index 0000000..1068d72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macro-Arguments.html @@ -0,0 +1,148 @@ + + +Macro Arguments - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Function-like Macros, +Up: Macros +



+
+ +

3.3 Macro Arguments

+ +

+Function-like macros can take arguments, just like true functions. +To define a macro that uses arguments, you insert parameters +between the pair of parentheses in the macro definition that make the +macro function-like. The parameters must be valid C identifiers, +separated by commas and optionally whitespace. + +

To invoke a macro that takes arguments, you write the name of the macro +followed by a list of actual arguments in parentheses, separated +by commas. The invocation of the macro need not be restricted to a +single logical line—it can cross as many lines in the source file as +you wish. The number of arguments you give must match the number of +parameters in the macro definition. When the macro is expanded, each +use of a parameter in its body is replaced by the tokens of the +corresponding argument. (You need not use all of the parameters in the +macro body.) + +

As an example, here is a macro that computes the minimum of two numeric +values, as it is defined in many C programs, and some uses. + +

     #define min(X, Y)  ((X) < (Y) ? (X) : (Y))
+       x = min(a, b);          ==>  x = ((a) < (b) ? (a) : (b));
+       y = min(1, 2);          ==>  y = ((1) < (2) ? (1) : (2));
+       z = min(a + 28, *p);    ==>  z = ((a + 28) < (*p) ? (a + 28) : (*p));
+
+

(In this small example you can already see several of the dangers of +macro arguments. See Macro Pitfalls, for detailed explanations.) + +

Leading and trailing whitespace in each argument is dropped, and all +whitespace between the tokens of an argument is reduced to a single +space. Parentheses within each argument must balance; a comma within +such parentheses does not end the argument. However, there is no +requirement for square brackets or braces to balance, and they do not +prevent a comma from separating arguments. Thus, + +

     macro (array[x = y, x + 1])
+
+

passes two arguments to macro: array[x = y and x + +1]. If you want to supply array[x = y, x + 1] as an argument, +you can write it as array[(x = y, x + 1)], which is equivalent C +code. + +

All arguments to a macro are completely macro-expanded before they are +substituted into the macro body. After substitution, the complete text +is scanned again for macros to expand, including the arguments. This rule +may seem strange, but it is carefully designed so you need not worry +about whether any function call is actually a macro invocation. You can +run into trouble if you try to be too clever, though. See Argument Prescan, for detailed discussion. + +

For example, min (min (a, b), c) is first expanded to + +

       min (((a) < (b) ? (a) : (b)), (c))
+
+

and then to + +

     ((((a) < (b) ? (a) : (b))) < (c)
+      ? (((a) < (b) ? (a) : (b)))
+      : (c))
+
+

(Line breaks shown here for clarity would not actually be generated.) + +

You can leave macro arguments empty; this is not an error to the +preprocessor (but many macros will then expand to invalid code). +You cannot leave out arguments entirely; if a macro takes two arguments, +there must be exactly one comma at the top level of its argument list. +Here are some silly examples using min: + +

     min(, b)        ==> ((   ) < (b) ? (   ) : (b))
+     min(a, )        ==> ((a  ) < ( ) ? (a  ) : ( ))
+     min(,)          ==> ((   ) < ( ) ? (   ) : ( ))
+     min((,),)       ==> (((,)) < ( ) ? ((,)) : ( ))
+     
+     min()      error--> macro "min" requires 2 arguments, but only 1 given
+     min(,,)    error--> macro "min" passed 3 arguments, but takes just 2
+
+

Whitespace is not a preprocessing token, so if a macro foo takes +one argument, foo () and foo ( ) both supply it an +empty argument. Previous GNU preprocessor implementations and +documentation were incorrect on this point, insisting that a +function-like macro that takes a single argument be passed a space if an +empty argument was required. + +

Macro parameters appearing inside string literals are not replaced by +their corresponding actual arguments. + +

     #define foo(x) x, "x"
+     foo(bar)        ==> bar, "x"
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macro-Pitfalls.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macro-Pitfalls.html new file mode 100644 index 0000000..722cb11 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macro-Pitfalls.html @@ -0,0 +1,73 @@ + + +Macro Pitfalls - The C Preprocessor + + + + + + + + + + + + +
+

+Previous: Directives Within Macro Arguments, +Up: Macros +



+
+ +

3.10 Macro Pitfalls

+ +

+In this section we describe some special rules that apply to macros and +macro expansion, and point out certain cases in which the rules have +counter-intuitive consequences that you must watch out for. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macros.html new file mode 100644 index 0000000..412ad80 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Macros.html @@ -0,0 +1,86 @@ + + +Macros - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Header Files, +Up: Top +



+
+ +

3 Macros

+ +

A macro is a fragment of code which has been given a name. +Whenever the name is used, it is replaced by the contents of the macro. +There are two kinds of macros. They differ mostly in what they look +like when they are used. Object-like macros resemble data objects +when used, function-like macros resemble function calls. + +

You may define any valid identifier as a macro, even if it is a C +keyword. The preprocessor does not know anything about keywords. This +can be useful if you wish to hide a keyword such as const from an +older compiler that does not understand it. However, the preprocessor +operator defined (see Defined) can never be defined as a +macro, and C++'s named operators (see C++ Named Operators) cannot be +macros when you are compiling C++. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Misnesting.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Misnesting.html new file mode 100644 index 0000000..e9d7a64 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Misnesting.html @@ -0,0 +1,84 @@ + + +Misnesting - The C Preprocessor + + + + + + + + + + + + + + +

3.10.1 Misnesting

+ +

When a macro is called with arguments, the arguments are substituted +into the macro body and the result is checked, together with the rest of +the input file, for more macro calls. It is possible to piece together +a macro call coming partially from the macro body and partially from the +arguments. For example, + +

     #define twice(x) (2*(x))
+     #define call_with_1(x) x(1)
+     call_with_1 (twice)
+          ==> twice(1)
+          ==> (2*(1))
+
+

Macro definitions do not have to have balanced parentheses. By writing +an unbalanced open parenthesis in a macro body, it is possible to create +a macro call that begins inside the macro body but ends outside of it. +For example, + +

     #define strange(file) fprintf (file, "%s %d",
+     ...
+     strange(stderr) p, 35)
+          ==> fprintf (stderr, "%s %d", p, 35)
+
+

The ability to piece together a macro call can be useful, but the use of +unbalanced open parentheses in a macro body is just confusing, and +should be avoided. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Newlines-in-Arguments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Newlines-in-Arguments.html new file mode 100644 index 0000000..5d6a380 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Newlines-in-Arguments.html @@ -0,0 +1,79 @@ + + +Newlines in Arguments - The C Preprocessor + + + + + + + + + + + + +

+

+Previous: Argument Prescan, +Up: Macro Pitfalls +



+
+ +

3.10.7 Newlines in Arguments

+ +

+The invocation of a function-like macro can extend over many logical +lines. However, in the present implementation, the entire expansion +comes out on one line. Thus line numbers emitted by the compiler or +debugger refer to the line the invocation started on, which might be +different to the line containing the argument causing the problem. + +

Here is an example illustrating this: + +

     #define ignore_second_arg(a,b,c) a; c
+     
+     ignore_second_arg (foo (),
+                        ignored (),
+                        syntax error);
+
+

The syntax error triggered by the tokens syntax error results in +an error message citing line three—the line of ignore_second_arg— +even though the problematic code comes from line five. + +

We consider this a bug, and intend to fix it in the near future. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Object_002dlike-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Object_002dlike-Macros.html new file mode 100644 index 0000000..f8cf495 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Object_002dlike-Macros.html @@ -0,0 +1,156 @@ + + +Object-like Macros - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Up: Macros +



+
+ +

3.1 Object-like Macros

+ +

+An object-like macro is a simple identifier which will be replaced +by a code fragment. It is called object-like because it looks like a +data object in code that uses it. They are most commonly used to give +symbolic names to numeric constants. + +

You create macros with the #define directive. #define is +followed by the name of the macro and then the token sequence it should +be an abbreviation for, which is variously referred to as the macro's +body, expansion or replacement list. For example, + +

     #define BUFFER_SIZE 1024
+
+

defines a macro named BUFFER_SIZE as an abbreviation for the +token 1024. If somewhere after this #define directive +there comes a C statement of the form + +

     foo = (char *) malloc (BUFFER_SIZE);
+
+

then the C preprocessor will recognize and expand the macro +BUFFER_SIZE. The C compiler will see the same tokens as it would +if you had written + +

     foo = (char *) malloc (1024);
+
+

By convention, macro names are written in uppercase. Programs are +easier to read when it is possible to tell at a glance which names are +macros. + +

The macro's body ends at the end of the #define line. You may +continue the definition onto multiple lines, if necessary, using +backslash-newline. When the macro is expanded, however, it will all +come out on one line. For example, + +

     #define NUMBERS 1, \
+                     2, \
+                     3
+     int x[] = { NUMBERS };
+          ==> int x[] = { 1, 2, 3 };
+
+

The most common visible consequence of this is surprising line numbers +in error messages. + +

There is no restriction on what can go in a macro body provided it +decomposes into valid preprocessing tokens. Parentheses need not +balance, and the body need not resemble valid C code. (If it does not, +you may get error messages from the C compiler when you use the macro.) + +

The C preprocessor scans your program sequentially. Macro definitions +take effect at the place you write them. Therefore, the following input +to the C preprocessor + +

     foo = X;
+     #define X 4
+     bar = X;
+
+

produces + +

     foo = X;
+     bar = 4;
+
+

When the preprocessor expands a macro name, the macro's expansion +replaces the macro invocation, then the expansion is examined for more +macros to expand. For example, + +

     #define TABLESIZE BUFSIZE
+     #define BUFSIZE 1024
+     TABLESIZE
+          ==> BUFSIZE
+          ==> 1024
+
+

TABLESIZE is expanded first to produce BUFSIZE, then that +macro is expanded to produce the final result, 1024. + +

Notice that BUFSIZE was not defined when TABLESIZE was +defined. The #define for TABLESIZE uses exactly the +expansion you specify—in this case, BUFSIZE—and does not +check to see whether it too contains macro names. Only when you +use TABLESIZE is the result of its expansion scanned for +more macro names. + +

This makes a difference if you change the definition of BUFSIZE +at some point in the source file. TABLESIZE, defined as shown, +will always expand using the definition of BUFSIZE that is +currently in effect: + +

     #define BUFSIZE 1020
+     #define TABLESIZE BUFSIZE
+     #undef BUFSIZE
+     #define BUFSIZE 37
+
+

Now TABLESIZE expands (in two stages) to 37. + +

If the expansion of a macro contains its own name, either directly or +via intermediate macros, it is not expanded again when the expansion is +examined for more macros. This prevents infinite recursion. +See Self-Referential Macros, for the precise details. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Obsolete-Features.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Obsolete-Features.html new file mode 100644 index 0000000..039a2d6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Obsolete-Features.html @@ -0,0 +1,69 @@ + + +Obsolete Features - The C Preprocessor + + + + + + + + + + + + + +

+ +

11.3 Obsolete Features

+ +

CPP has a number of features which are present mainly for +compatibility with older programs. We discourage their use in new code. +In some cases, we plan to remove the feature in a future version of GCC. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Obsolete-once_002donly-headers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Obsolete-once_002donly-headers.html new file mode 100644 index 0000000..501e34f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Obsolete-once_002donly-headers.html @@ -0,0 +1,90 @@ + + +Obsolete once-only headers - The C Preprocessor + + + + + + + + + + + + +
+

+Previous: Assertions, +Up: Obsolete Features +



+
+ +

11.3.2 Obsolete once-only headers

+ +

CPP supports two more ways of indicating that a header file should be +read only once. Neither one is as portable as a wrapper #ifndef, +and we recommend you do not use them in new programs. + +

In the Objective-C language, there is a variant of #include +called #import which includes a file, but does so at most once. +If you use #import instead of #include, then you don't +need the conditionals inside the header file to prevent multiple +inclusion of the contents. GCC permits the use of #import in C +and C++ as well as Objective-C. However, it is not in standard C or C++ +and should therefore not be used by portable programs. + +

#import is not a well designed feature. It requires the users of +a header file to know that it should only be included once. It is much +better for the header file's implementor to write the file so that users +don't need to know this. Using a wrapper #ifndef accomplishes +this goal. + +

In the present implementation, a single use of #import will +prevent the file from ever being read again, by either #import or +#include. You should not rely on this; do not use both +#import and #include to refer to the same header file. + +

Another way to prevent a header file from being included more than once +is with the #pragma once directive. If #pragma once is +seen when scanning a header file, that file will never be read again, no +matter what. + +

#pragma once does not have the problems that #import does, +but it is not recognized by all preprocessors, so you cannot rely on it +in a portable program. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Once_002dOnly-Headers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Once_002dOnly-Headers.html new file mode 100644 index 0000000..881f24e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Once_002dOnly-Headers.html @@ -0,0 +1,98 @@ + + +Once-Only Headers - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Search Path, +Up: Header Files +



+
+ +

2.4 Once-Only Headers

+ +

+If a header file happens to be included twice, the compiler will process +its contents twice. This is very likely to cause an error, e.g. when the +compiler sees the same structure definition twice. Even if it does not, +it will certainly waste time. + +

The standard way to prevent this is to enclose the entire real contents +of the file in a conditional, like this: + +

     /* File foo.  */
+     #ifndef FILE_FOO_SEEN
+     #define FILE_FOO_SEEN
+     
+     the entire file
+     
+     #endif /* !FILE_FOO_SEEN */
+
+

This construct is commonly known as a wrapper #ifndef. +When the header is included again, the conditional will be false, +because FILE_FOO_SEEN is defined. The preprocessor will skip +over the entire contents of the file, and the compiler will not see it +twice. + +

CPP optimizes even further. It remembers when a header file has a +wrapper #ifndef. If a subsequent #include specifies that +header, and the macro in the #ifndef is still defined, it does +not bother to rescan the file at all. + +

You can put comments outside the wrapper. They will not interfere with +this optimization. + +

The macro FILE_FOO_SEEN is called the controlling macro or +guard macro. In a user header file, the macro name should not +begin with _. In a system header file, it should begin with +__ to avoid conflicts with user programs. In any kind of header +file, the macro name should contain the name of the file and some +additional text, to avoid conflicts with other header files. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Operator-Precedence-Problems.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Operator-Precedence-Problems.html new file mode 100644 index 0000000..80dd91d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Operator-Precedence-Problems.html @@ -0,0 +1,109 @@ + + +Operator Precedence Problems - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Misnesting, +Up: Macro Pitfalls +



+
+ +

3.10.2 Operator Precedence Problems

+ +

+You may have noticed that in most of the macro definition examples shown +above, each occurrence of a macro argument name had parentheses around +it. In addition, another pair of parentheses usually surround the +entire macro definition. Here is why it is best to write macros that +way. + +

Suppose you define a macro as follows, + +

     #define ceil_div(x, y) (x + y - 1) / y
+
+

whose purpose is to divide, rounding up. (One use for this operation is +to compute how many int objects are needed to hold a certain +number of char objects.) Then suppose it is used as follows: + +

     a = ceil_div (b & c, sizeof (int));
+          ==> a = (b & c + sizeof (int) - 1) / sizeof (int);
+
+

This does not do what is intended. The operator-precedence rules of +C make it equivalent to this: + +

     a = (b & (c + sizeof (int) - 1)) / sizeof (int);
+
+

What we want is this: + +

     a = ((b & c) + sizeof (int) - 1)) / sizeof (int);
+
+

Defining the macro as + +

     #define ceil_div(x, y) ((x) + (y) - 1) / (y)
+
+

provides the desired result. + +

Unintended grouping can result in another way. Consider sizeof +ceil_div(1, 2). That has the appearance of a C expression that would +compute the size of the type of ceil_div (1, 2), but in fact it +means something very different. Here is what it expands to: + +

     sizeof ((1) + (2) - 1) / (2)
+
+

This would take the size of an integer and divide it by two. The +precedence rules have put the division outside the sizeof when it +was intended to be inside. + +

Parentheses around the entire macro definition prevent such problems. +Here, then, is the recommended way to define ceil_div: + +

     #define ceil_div(x, y) (((x) + (y) - 1) / (y))
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Option-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Option-Index.html new file mode 100644 index 0000000..52aecf7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Option-Index.html @@ -0,0 +1,141 @@ + + +Option Index - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Index of Directives, +Up: Top +



+
+ +

Option Index

+ +

CPP's command line options and environment variables are indexed here +without any initial - or --. + + + +

+ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Other-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Other-Directives.html new file mode 100644 index 0000000..76585a7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Other-Directives.html @@ -0,0 +1,76 @@ + + +Other Directives - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Pragmas, +Up: Top +



+
+ +

8 Other Directives

+ +

The #ident directive takes one argument, a string constant. On +some systems, that string constant is copied into a special segment of +the object file. On other systems, the directive is ignored. The +#sccs directive is a synonym for #ident. + +

These directives are not part of the C standard, but they are not +official GNU extensions either. What historical information we have +been able to find, suggests they originated with System V. + +

The null directive consists of a # followed by a newline, +with only whitespace (including comments) in between. A null directive +is understood as a preprocessing directive but has no effect on the +preprocessor output. The primary significance of the existence of the +null directive is that an input line consisting of just a # will +produce no output, rather than a line of output containing just a +#. Supposedly some old C programs contain such lines. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Overview.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Overview.html new file mode 100644 index 0000000..501b6ae --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Overview.html @@ -0,0 +1,115 @@ + + +Overview - The C Preprocessor + + + + + + + + + + + + +

+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 Overview

+ + +

The C preprocessor, often known as cpp, is a macro processor +that is used automatically by the C compiler to transform your program +before compilation. It is called a macro processor because it allows +you to define macros, which are brief abbreviations for longer +constructs. + +

The C preprocessor is intended to be used only with C, C++, and +Objective-C source code. In the past, it has been abused as a general +text processor. It will choke on input which does not obey C's lexical +rules. For example, apostrophes will be interpreted as the beginning of +character constants, and cause errors. Also, you cannot rely on it +preserving characteristics of the input which are not significant to +C-family languages. If a Makefile is preprocessed, all the hard tabs +will be removed, and the Makefile will not work. + +

Having said that, you can often get away with using cpp on things which +are not C. Other Algol-ish programming languages are often safe +(Pascal, Ada, etc.) So is assembly, with caution. -traditional-cpp +mode preserves more white space, and is otherwise more permissive. Many +of the problems can be avoided by writing C or C++ style comments +instead of native language comments, and keeping macros simple. + +

Wherever possible, you should use a preprocessor geared to the language +you are writing in. Modern versions of the GNU assembler have macro +facilities. Most high level programming languages have their own +conditional compilation and inclusion mechanism. If all else fails, +try a true general text processor, such as GNU M4. + +

C preprocessors vary in some details. This manual discusses the GNU C +preprocessor, which provides a small superset of the features of ISO +Standard C. In its default mode, the GNU C preprocessor does not do a +few things required by the standard. These are features which are +rarely, if ever, used, and may cause surprising changes to the meaning +of a program which does not expect them. To get strict ISO Standard C, +you should use the -std=c89 or -std=c99 options, depending +on which version of the standard you want. To get all the mandatory +diagnostics, you must also use -pedantic. See Invocation. + +

This manual describes the behavior of the ISO preprocessor. To +minimize gratuitous differences, where the ISO preprocessor's +behavior does not conflict with traditional semantics, the +traditional preprocessor should behave the same way. The various +differences that do exist are detailed in the section Traditional Mode. + +

For clarity, unless noted otherwise, references to CPP in this +manual refer to GNU CPP. + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Pragmas.html new file mode 100644 index 0000000..0e17880 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Pragmas.html @@ -0,0 +1,152 @@ + + +Pragmas - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Line Control, +Up: Top +



+
+ +

7 Pragmas

+ +

The #pragma directive is the method specified by the C standard +for providing additional information to the compiler, beyond what is +conveyed in the language itself. Three forms of this directive +(commonly known as pragmas) are specified by the 1999 C standard. +A C compiler is free to attach any meaning it likes to other pragmas. + +

GCC has historically preferred to use extensions to the syntax of the +language, such as __attribute__, for this purpose. However, GCC +does define a few pragmas of its own. These mostly have effects on the +entire translation unit or source file. + +

In GCC version 3, all GNU-defined, supported pragmas have been given a +GCC prefix. This is in line with the STDC prefix on all +pragmas defined by C99. For backward compatibility, pragmas which were +recognized by previous versions are still recognized without the +GCC prefix, but that usage is deprecated. Some older pragmas are +deprecated in their entirety. They are not recognized with the +GCC prefix. See Obsolete Features. + +

C99 introduces the _Pragma operator. This feature addresses a +major problem with #pragma: being a directive, it cannot be +produced as the result of macro expansion. _Pragma is an +operator, much like sizeof or defined, and can be embedded +in a macro. + +

Its syntax is _Pragma (string-literal), where +string-literal can be either a normal or wide-character string +literal. It is destringized, by replacing all \\ with a single +\ and all \" with a ". The result is then +processed as if it had appeared as the right hand side of a +#pragma directive. For example, + +

     _Pragma ("GCC dependency \"parse.y\"")
+
+

has the same effect as #pragma GCC dependency "parse.y". The +same effect could be achieved using macros, for example + +

     #define DO_PRAGMA(x) _Pragma (#x)
+     DO_PRAGMA (GCC dependency "parse.y")
+
+

The standard is unclear on where a _Pragma operator can appear. +The preprocessor does not accept it within a preprocessing conditional +directive like #if. To be safe, you are probably best keeping it +out of directives other than #define, and putting it on a line of +its own. + +

This manual documents the pragmas which are meaningful to the +preprocessor itself. Other pragmas are meaningful to the C or C++ +compilers. They are documented in the GCC manual. + +

+
#pragma GCC dependency
#pragma GCC dependency allows you to check the relative dates of +the current file and another file. If the other file is more recent than +the current file, a warning is issued. This is useful if the current +file is derived from the other file, and should be regenerated. The +other file is searched for using the normal include search path. +Optional trailing text can be used to give more information in the +warning message. + +
          #pragma GCC dependency "parse.y"
+          #pragma GCC dependency "/usr/include/time.h" rerun fixincludes
+     
+
#pragma GCC poison
Sometimes, there is an identifier that you want to remove completely +from your program, and make sure that it never creeps back in. To +enforce this, you can poison the identifier with this pragma. +#pragma GCC poison is followed by a list of identifiers to +poison. If any of those identifiers appears anywhere in the source +after the directive, it is a hard error. For example, + +
          #pragma GCC poison printf sprintf fprintf
+          sprintf(some_string, "hello");
+     
+

will produce an error. + +

If a poisoned identifier appears as part of the expansion of a macro +which was defined before the identifier was poisoned, it will not +cause an error. This lets you poison an identifier without worrying +about system headers defining macros that use it. + +

For example, + +

          #define strrchr rindex
+          #pragma GCC poison rindex
+          strrchr(some_string, 'h');
+     
+

will not produce an error. + +

#pragma GCC system_header
This pragma takes no arguments. It causes the rest of the code in the +current file to be treated as if it came from a system header. +See System Headers. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Predefined-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Predefined-Macros.html new file mode 100644 index 0000000..e18a178 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Predefined-Macros.html @@ -0,0 +1,74 @@ + + +Predefined Macros - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Variadic Macros, +Up: Macros +



+
+ +

3.7 Predefined Macros

+ +

Several object-like macros are predefined; you use them without +supplying their definitions. They fall into three classes: standard, +common, and system-specific. + +

In C++, there is a fourth category, the named operators. They act like +predefined macros, but you cannot undefine them. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Preprocessor-Output.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Preprocessor-Output.html new file mode 100644 index 0000000..f98d41b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Preprocessor-Output.html @@ -0,0 +1,123 @@ + + +Preprocessor Output - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Other Directives, +Up: Top +



+
+ +

9 Preprocessor Output

+ +

When the C preprocessor is used with the C, C++, or Objective-C +compilers, it is integrated into the compiler and communicates a stream +of binary tokens directly to the compiler's parser. However, it can +also be used in the more conventional standalone mode, where it produces +textual output. + + +

The output from the C preprocessor looks much like the input, except +that all preprocessing directive lines have been replaced with blank +lines and all comments with spaces. Long runs of blank lines are +discarded. + +

The ISO standard specifies that it is implementation defined whether a +preprocessor preserves whitespace between tokens, or replaces it with +e.g. a single space. In GNU CPP, whitespace between tokens is collapsed +to become a single space, with the exception that the first token on a +non-directive line is preceded with sufficient spaces that it appears in +the same column in the preprocessed output that it appeared in the +original source file. This is so the output is easy to read. +See Differences from previous versions. CPP does not insert any +whitespace where there was none in the original source, except where +necessary to prevent an accidental token paste. + +

Source file name and line number information is conveyed by lines +of the form + +

     # linenum filename flags
+
+

These are called linemarkers. They are inserted as needed into +the output (but never within a string or character constant). They mean +that the following line originated in file filename at line +linenum. filename will never contain any non-printing +characters; they are replaced with octal escape sequences. + +

After the file name comes zero or more flags, which are 1, +2, 3, or 4. If there are multiple flags, spaces +separate them. Here is what the flags mean: + +

+
1
This indicates the start of a new file. +
2
This indicates returning to a file (after having included another file). +
3
This indicates that the following text comes from a system header file, +so certain warnings should be suppressed. +
4
This indicates that the following text should be treated as being +wrapped in an implicit extern "C" block. + +
+ +

As an extension, the preprocessor accepts linemarkers in non-assembler +input files. They are treated like the corresponding #line +directive, (see Line Control), except that trailing flags are +permitted, and are interpreted with the meanings described above. If +multiple flags are given, they must be in ascending order. + +

Some directives may be duplicated in the output of the preprocessor. +These are #ident (always), #pragma (only if the +preprocessor does not handle the pragma itself), and #define and +#undef (with certain debugging options). If this happens, the +# of the directive will always be in the first column, and there +will be no space between the # and the directive name. If macro +expansion happens to generate tokens which might be mistaken for a +duplicated directive, a space will be inserted between the # and +the directive name. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Search-Path.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Search-Path.html new file mode 100644 index 0000000..f05d77c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Search-Path.html @@ -0,0 +1,126 @@ + + +Search Path - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Include Operation, +Up: Header Files +



+
+ +

2.3 Search Path

+ +

GCC looks in several different places for headers. On a normal Unix +system, if you do not instruct it otherwise, it will look for headers +requested with #include <file> in: + +

     /usr/local/include
+     libdir/gcc/target/version/include
+     /usr/target/include
+     /usr/include
+
+

For C++ programs, it will also look in /usr/include/g++-v3, +first. In the above, target is the canonical name of the system +GCC was configured to compile code for; often but not always the same as +the canonical name of the system it runs on. version is the +version of GCC in use. + +

You can add to this list with the -Idir command line +option. All the directories named by -I are searched, in +left-to-right order, before the default directories. The only +exception is when dir is already searched by default. In +this case, the option is ignored and the search order for system +directories remains unchanged. + +

Duplicate directories are removed from the quote and bracket search +chains before the two chains are merged to make the final search chain. +Thus, it is possible for a directory to occur twice in the final search +chain if it was specified in both the quote and bracket chains. + +

You can prevent GCC from searching any of the default directories with +the -nostdinc option. This is useful when you are compiling an +operating system kernel or some other program that does not use the +standard C library facilities, or the standard C library itself. +-I options are not ignored as described above when +-nostdinc is in effect. + +

GCC looks for headers requested with #include "file" +first in the directory containing the current file, then in the +directories as specified by -iquote options, then in the same +places it would have looked for a header requested with angle +brackets. For example, if /usr/include/sys/stat.h contains +#include "types.h", GCC looks for types.h first in +/usr/include/sys, then in its usual search path. + +

#line (see Line Control) does not change GCC's idea of the +directory containing the current file. + +

You may put -I- at any point in your list of -I options. +This has two effects. First, directories appearing before the +-I- in the list are searched only for headers requested with +quote marks. Directories after -I- are searched for all +headers. Second, the directory containing the current file is not +searched for anything, unless it happens to be one of the directories +named by an -I switch. -I- is deprecated, -iquote +should be used instead. + +

-I. -I- is not the same as no -I options at all, and does +not cause the same behavior for <> includes that "" +includes get with no special options. -I. searches the +compiler's current working directory for header files. That may or may +not be the same as the directory containing the current file. + +

If you need to look for headers in a directory named -, write +-I./-. + +

There are several more ways to adjust the header search path. They are +generally less useful. See Invocation. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Self_002dReferential-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Self_002dReferential-Macros.html new file mode 100644 index 0000000..756942c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Self_002dReferential-Macros.html @@ -0,0 +1,117 @@ + + +Self-Referential Macros - The C Preprocessor + + + + + + + + + + + + + +

+ +

3.10.5 Self-Referential Macros

+ +

+A self-referential macro is one whose name appears in its +definition. Recall that all macro definitions are rescanned for more +macros to replace. If the self-reference were considered a use of the +macro, it would produce an infinitely large expansion. To prevent this, +the self-reference is not considered a macro call. It is passed into +the preprocessor output unchanged. Consider an example: + +

     #define foo (4 + foo)
+
+

where foo is also a variable in your program. + +

Following the ordinary rules, each reference to foo will expand +into (4 + foo); then this will be rescanned and will expand into +(4 + (4 + foo)); and so on until the computer runs out of memory. + +

The self-reference rule cuts this process short after one step, at +(4 + foo). Therefore, this macro definition has the possibly +useful effect of causing the program to add 4 to the value of foo +wherever foo is referred to. + +

In most cases, it is a bad idea to take advantage of this feature. A +person reading the program who sees that foo is a variable will +not expect that it is a macro as well. The reader will come across the +identifier foo in the program and think its value should be that +of the variable foo, whereas in fact the value is four greater. + +

One common, useful use of self-reference is to create a macro which +expands to itself. If you write + +

     #define EPERM EPERM
+
+

then the macro EPERM expands to EPERM. Effectively, it is +left alone by the preprocessor whenever it's used in running text. You +can tell that it's a macro with #ifdef. You might do this if you +want to define numeric constants with an enum, but have +#ifdef be true for each constant. + +

If a macro x expands to use a macro y, and the expansion of +y refers to the macro x, that is an indirect +self-reference of x. x is not expanded in this case +either. Thus, if we have + +

     #define x (4 + y)
+     #define y (2 * x)
+
+

then x and y expand as follows: + +

     x    ==> (4 + y)
+          ==> (4 + (2 * x))
+     
+     y    ==> (2 * x)
+          ==> (2 * (4 + y))
+
+

Each macro is expanded when it appears in the definition of the other +macro, but not when it indirectly appears in its own definition. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Standard-Predefined-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Standard-Predefined-Macros.html new file mode 100644 index 0000000..c9989e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Standard-Predefined-Macros.html @@ -0,0 +1,177 @@ + + +Standard Predefined Macros - The C Preprocessor + + + + + + + + + + + + +

+ +

3.7.1 Standard Predefined Macros

+ +

+The standard predefined macros are specified by the relevant +language standards, so they are available with all compilers that +implement those standards. Older compilers may not provide all of +them. Their names all start with double underscores. + +

+
__FILE__
This macro expands to the name of the current input file, in the form of +a C string constant. This is the path by which the preprocessor opened +the file, not the short name specified in #include or as the +input file name argument. For example, +"/usr/local/include/myheader.h" is a possible expansion of this +macro. + +
__LINE__
This macro expands to the current input line number, in the form of a +decimal integer constant. While we call it a predefined macro, it's +a pretty strange macro, since its “definition” changes with each +new line of source code. +
+ +

__FILE__ and __LINE__ are useful in generating an error +message to report an inconsistency detected by the program; the message +can state the source line at which the inconsistency was detected. For +example, + +

     fprintf (stderr, "Internal error: "
+                      "negative string length "
+                      "%d at %s, line %d.",
+              length, __FILE__, __LINE__);
+
+

An #include directive changes the expansions of __FILE__ +and __LINE__ to correspond to the included file. At the end of +that file, when processing resumes on the input file that contained +the #include directive, the expansions of __FILE__ and +__LINE__ revert to the values they had before the +#include (but __LINE__ is then incremented by one as +processing moves to the line after the #include). + +

A #line directive changes __LINE__, and may change +__FILE__ as well. See Line Control. + +

C99 introduces __func__, and GCC has provided __FUNCTION__ +for a long time. Both of these are strings containing the name of the +current function (there are slight semantic differences; see the GCC +manual). Neither of them is a macro; the preprocessor does not know the +name of the current function. They tend to be useful in conjunction +with __FILE__ and __LINE__, though. + +

+
__DATE__
This macro expands to a string constant that describes the date on which +the preprocessor is being run. The string constant contains eleven +characters and looks like "Feb 12 1996". If the day of the +month is less than 10, it is padded with a space on the left. + +

If GCC cannot determine the current date, it will emit a warning message +(once per compilation) and __DATE__ will expand to +"??? ?? ????". + +

__TIME__
This macro expands to a string constant that describes the time at +which the preprocessor is being run. The string constant contains +eight characters and looks like "23:59:01". + +

If GCC cannot determine the current time, it will emit a warning message +(once per compilation) and __TIME__ will expand to +"??:??:??". + +

__STDC__
In normal operation, this macro expands to the constant 1, to signify +that this compiler conforms to ISO Standard C. If GNU CPP is used with +a compiler other than GCC, this is not necessarily true; however, the +preprocessor always conforms to the standard unless the +-traditional-cpp option is used. + +

This macro is not defined if the -traditional-cpp option is used. + +

On some hosts, the system compiler uses a different convention, where +__STDC__ is normally 0, but is 1 if the user specifies strict +conformance to the C Standard. CPP follows the host convention when +processing system header files, but when processing user files +__STDC__ is always 1. This has been reported to cause problems; +for instance, some versions of Solaris provide X Windows headers that +expect __STDC__ to be either undefined or 1. See Invocation. + +

__STDC_VERSION__
This macro expands to the C Standard's version number, a long integer +constant of the form yyyymmL where yyyy and +mm are the year and month of the Standard version. This signifies +which version of the C Standard the compiler conforms to. Like +__STDC__, this is not necessarily accurate for the entire +implementation, unless GNU CPP is being used with GCC. + +

The value 199409L signifies the 1989 C standard as amended in +1994, which is the current default; the value 199901L signifies +the 1999 revision of the C standard. Support for the 1999 revision is +not yet complete. + +

This macro is not defined if the -traditional-cpp option is +used, nor when compiling C++ or Objective-C. + +

__STDC_HOSTED__
This macro is defined, with value 1, if the compiler's target is a +hosted environment. A hosted environment has the complete +facilities of the standard C library available. + +
__cplusplus
This macro is defined when the C++ compiler is in use. You can use +__cplusplus to test whether a header is compiled by a C compiler +or a C++ compiler. This macro is similar to __STDC_VERSION__, in +that it expands to a version number. A fully conforming implementation +of the 1998 C++ standard will define this macro to 199711L. The +GNU C++ compiler is not yet fully conforming, so it uses 1 +instead. It is hoped to complete the implementation of standard C++ +in the near future. + +
__OBJC__
This macro is defined, with value 1, when the Objective-C compiler is in +use. You can use __OBJC__ to test whether a header is compiled +by a C compiler or a Objective-C compiler. + +
__ASSEMBLER__
This macro is defined with value 1 when preprocessing assembly +language. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Stringification.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Stringification.html new file mode 100644 index 0000000..dc04124 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Stringification.html @@ -0,0 +1,132 @@ + + +Stringification - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Macro Arguments, +Up: Macros +



+
+ +

3.4 Stringification

+ +

+Sometimes you may want to convert a macro argument into a string +constant. Parameters are not replaced inside string constants, but you +can use the # preprocessing operator instead. When a macro +parameter is used with a leading #, the preprocessor replaces it +with the literal text of the actual argument, converted to a string +constant. Unlike normal parameter replacement, the argument is not +macro-expanded first. This is called stringification. + +

There is no way to combine an argument with surrounding text and +stringify it all together. Instead, you can write a series of adjacent +string constants and stringified arguments. The preprocessor will +replace the stringified arguments with string constants. The C +compiler will then combine all the adjacent string constants into one +long string. + +

Here is an example of a macro definition that uses stringification: + +

     #define WARN_IF(EXP) \
+     do { if (EXP) \
+             fprintf (stderr, "Warning: " #EXP "\n"); } \
+     while (0)
+     WARN_IF (x == 0);
+          ==> do { if (x == 0)
+                fprintf (stderr, "Warning: " "x == 0" "\n"); } while (0);
+
+

The argument for EXP is substituted once, as-is, into the +if statement, and once, stringified, into the argument to +fprintf. If x were a macro, it would be expanded in the +if statement, but not in the string. + +

The do and while (0) are a kludge to make it possible to +write WARN_IF (arg);, which the resemblance of +WARN_IF to a function would make C programmers want to do; see +Swallowing the Semicolon. + +

Stringification in C involves more than putting double-quote characters +around the fragment. The preprocessor backslash-escapes the quotes +surrounding embedded string constants, and all backslashes within string and +character constants, in order to get a valid C string constant with the +proper contents. Thus, stringifying p = "foo\n"; results in +"p = \"foo\\n\";". However, backslashes that are not inside string +or character constants are not duplicated: \n by itself +stringifies to "\n". + +

All leading and trailing whitespace in text being stringified is +ignored. Any sequence of whitespace in the middle of the text is +converted to a single space in the stringified result. Comments are +replaced by whitespace long before stringification happens, so they +never appear in stringified text. + +

There is no way to convert a macro argument into a character constant. + +

If you want to stringify the result of expansion of a macro argument, +you have to use two levels of macros. + +

     #define xstr(s) str(s)
+     #define str(s) #s
+     #define foo 4
+     str (foo)
+          ==> "foo"
+     xstr (foo)
+          ==> xstr (4)
+          ==> str (4)
+          ==> "4"
+
+

s is stringified when it is used in str, so it is not +macro-expanded first. But s is an ordinary argument to +xstr, so it is completely macro-expanded before xstr +itself is expanded (see Argument Prescan). Therefore, by the time +str gets to its argument, it has already been macro-expanded. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Swallowing-the-Semicolon.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Swallowing-the-Semicolon.html new file mode 100644 index 0000000..cc4e895 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Swallowing-the-Semicolon.html @@ -0,0 +1,111 @@ + + +Swallowing the Semicolon - The C Preprocessor + + + + + + + + + + + + + +

+ +

3.10.3 Swallowing the Semicolon

+ +

+Often it is desirable to define a macro that expands into a compound +statement. Consider, for example, the following macro, that advances a +pointer (the argument p says where to find it) across whitespace +characters: + +

     #define SKIP_SPACES(p, limit)  \
+     { char *lim = (limit);         \
+       while (p < lim) {            \
+         if (*p++ != ' ') {         \
+           p--; break; }}}
+
+

Here backslash-newline is used to split the macro definition, which must +be a single logical line, so that it resembles the way such code would +be laid out if not part of a macro definition. + +

A call to this macro might be SKIP_SPACES (p, lim). Strictly +speaking, the call expands to a compound statement, which is a complete +statement with no need for a semicolon to end it. However, since it +looks like a function call, it minimizes confusion if you can use it +like a function call, writing a semicolon afterward, as in +SKIP_SPACES (p, lim); + +

This can cause trouble before else statements, because the +semicolon is actually a null statement. Suppose you write + +

     if (*p != 0)
+       SKIP_SPACES (p, lim);
+     else ...
+
+

The presence of two statements—the compound statement and a null +statement—in between the if condition and the else +makes invalid C code. + +

The definition of the macro SKIP_SPACES can be altered to solve +this problem, using a do ... while statement. Here is how: + +

     #define SKIP_SPACES(p, limit)     \
+     do { char *lim = (limit);         \
+          while (p < lim) {            \
+            if (*p++ != ' ') {         \
+              p--; break; }}}          \
+     while (0)
+
+

Now SKIP_SPACES (p, lim); expands into + +

     do {...} while (0);
+
+

which is one statement. The loop executes exactly once; most compilers +generate no extra code for it. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/System-Headers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/System-Headers.html new file mode 100644 index 0000000..ae05ccf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/System-Headers.html @@ -0,0 +1,94 @@ + + +System Headers - The C Preprocessor + + + + + + + + + + + + +

+

+Previous: Wrapper Headers, +Up: Header Files +



+
+ +

2.7 System Headers

+ +

+The header files declaring interfaces to the operating system and +runtime libraries often cannot be written in strictly conforming C. +Therefore, GCC gives code found in system headers special +treatment. All warnings, other than those generated by #warning +(see Diagnostics), are suppressed while GCC is processing a system +header. Macros defined in a system header are immune to a few warnings +wherever they are expanded. This immunity is granted on an ad-hoc +basis, when we find that a warning generates lots of false positives +because of code in macros defined in system headers. + +

Normally, only the headers found in specific directories are considered +system headers. These directories are determined when GCC is compiled. +There are, however, two ways to make normal headers into system headers. + +

The -isystem command line option adds its argument to the list of +directories to search for headers, just like -I. Any headers +found in that directory will be considered system headers. + +

All directories named by -isystem are searched after all +directories named by -I, no matter what their order was on the +command line. If the same directory is named by both -I and +-isystem, the -I option is ignored. GCC provides an +informative message when this occurs if -v is used. + +

There is also a directive, #pragma GCC system_header, which +tells GCC to consider the rest of the current include file a system +header, no matter where it was found. Code that comes before the +#pragma in the file will not be affected. #pragma GCC system_header has no effect in the primary source file. + +

On very old systems, some of the pre-defined system header directories +get even more special treatment. GNU C++ considers code in headers +found in those directories to be surrounded by an extern "C" +block. There is no way to request this behavior with a #pragma, +or from the command line. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/System_002dspecific-Predefined-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/System_002dspecific-Predefined-Macros.html new file mode 100644 index 0000000..40536ee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/System_002dspecific-Predefined-Macros.html @@ -0,0 +1,94 @@ + + +System-specific Predefined Macros - The C Preprocessor + + + + + + + + + + + + + +

+ +

3.7.3 System-specific Predefined Macros

+ +

+The C preprocessor normally predefines several macros that indicate what +type of system and machine is in use. They are obviously different on +each target supported by GCC. This manual, being for all systems and +machines, cannot tell you what their names are, but you can use +cpp -dM to see them all. See Invocation. All system-specific +predefined macros expand to the constant 1, so you can test them with +either #ifdef or #if. + +

The C standard requires that all system-specific macros be part of the +reserved namespace. All names which begin with two underscores, +or an underscore and a capital letter, are reserved for the compiler and +library to use as they wish. However, historically system-specific +macros have had names with no special prefix; for instance, it is common +to find unix defined on Unix systems. For all such macros, GCC +provides a parallel macro with two underscores added at the beginning +and the end. If unix is defined, __unix__ will be defined +too. There will never be more than two underscores; the parallel of +_mips is __mips__. + +

When the -ansi option, or any -std option that +requests strict conformance, is given to the compiler, all the +system-specific predefined macros outside the reserved namespace are +suppressed. The parallel macros, inside the reserved namespace, remain +defined. + +

We are slowly phasing out all predefined macros which are outside the +reserved namespace. You should never use them in new programs, and we +encourage you to correct older code to use the parallel macros whenever +you find it. We don't recommend you use the system-specific macros that +are in the reserved namespace, either. It is better in the long run to +check specifically for features you need, using a tool such as +autoconf. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/The-preprocessing-language.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/The-preprocessing-language.html new file mode 100644 index 0000000..553354f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/The-preprocessing-language.html @@ -0,0 +1,119 @@ + + +The preprocessing language - The C Preprocessor + + + + + + + + + + + + +

+

+Previous: Tokenization, +Up: Overview +



+
+ +

1.4 The preprocessing language

+ +

+After tokenization, the stream of tokens may simply be passed straight +to the compiler's parser. However, if it contains any operations in the +preprocessing language, it will be transformed first. This stage +corresponds roughly to the standard's “translation phase 4” and is +what most people think of as the preprocessor's job. + +

The preprocessing language consists of directives to be executed +and macros to be expanded. Its primary capabilities are: + +

    +
  • Inclusion of header files. These are files of declarations that can be +substituted into your program. + +
  • Macro expansion. You can define macros, which are abbreviations +for arbitrary fragments of C code. The preprocessor will replace the +macros with their definitions throughout the program. Some macros are +automatically defined for you. + +
  • Conditional compilation. You can include or exclude parts of the +program according to various conditions. + +
  • Line control. If you use a program to combine or rearrange source files +into an intermediate file which is then compiled, you can use line +control to inform the compiler where each source line originally came +from. + +
  • Diagnostics. You can detect problems at compile time and issue errors +or warnings. +
+ +

There are a few more, less useful, features. + +

Except for expansion of predefined macros, all these operations are +triggered with preprocessing directives. Preprocessing directives +are lines in your program that start with #. Whitespace is +allowed before and after the #. The # is followed by an +identifier, the directive name. It specifies the operation to +perform. Directives are commonly referred to as #name +where name is the directive name. For example, #define is +the directive that defines a macro. + +

The # which begins a directive cannot come from a macro +expansion. Also, the directive name is not macro expanded. Thus, if +foo is defined as a macro expanding to define, that does +not make #foo a valid preprocessing directive. + +

The set of valid directive names is fixed. Programs cannot define new +preprocessing directives. + +

Some directives require arguments; these make up the rest of the +directive line and must be separated from the directive name by +whitespace. For example, #define must be followed by a macro +name and the intended expansion of the macro. + +

A preprocessing directive cannot cover more than one line. The line +may, however, be continued with backslash-newline, or by a block comment +which extends past the end of the line. In either case, when the +directive is processed, the continuations have already been merged with +the first line to make one long line. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Tokenization.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Tokenization.html new file mode 100644 index 0000000..a116e2f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Tokenization.html @@ -0,0 +1,206 @@ + + +Tokenization - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Initial processing, +Up: Overview +



+
+ +

1.3 Tokenization

+ +

After the textual transformations are finished, the input file is +converted into a sequence of preprocessing tokens. These mostly +correspond to the syntactic tokens used by the C compiler, but there are +a few differences. White space separates tokens; it is not itself a +token of any kind. Tokens do not have to be separated by white space, +but it is often necessary to avoid ambiguities. + +

When faced with a sequence of characters that has more than one possible +tokenization, the preprocessor is greedy. It always makes each token, +starting from the left, as big as possible before moving on to the next +token. For instance, a+++++b is interpreted as +a ++ ++ + b, not as a ++ + ++ b, even though the +latter tokenization could be part of a valid C program and the former +could not. + +

Once the input file is broken into tokens, the token boundaries never +change, except when the ## preprocessing operator is used to paste +tokens together. See Concatenation. For example, + +

     #define foo() bar
+     foo()baz
+          ==> bar baz
+     not
+          ==> barbaz
+
+

The compiler does not re-tokenize the preprocessor's output. Each +preprocessing token becomes one compiler token. + +

Preprocessing tokens fall into five broad classes: identifiers, +preprocessing numbers, string literals, punctuators, and other. An +identifier is the same as an identifier in C: any sequence of +letters, digits, or underscores, which begins with a letter or +underscore. Keywords of C have no significance to the preprocessor; +they are ordinary identifiers. You can define a macro whose name is a +keyword, for instance. The only identifier which can be considered a +preprocessing keyword is defined. See Defined. + +

This is mostly true of other languages which use the C preprocessor. +However, a few of the keywords of C++ are significant even in the +preprocessor. See C++ Named Operators. + +

In the 1999 C standard, identifiers may contain letters which are not +part of the “basic source character set”, at the implementation's +discretion (such as accented Latin letters, Greek letters, or Chinese +ideograms). This may be done with an extended character set, or the +\u and \U escape sequences. The implementation of this +feature in GCC is experimental; such characters are only accepted in +the \u and \U forms and only if +-fextended-identifiers is used. + +

As an extension, GCC treats $ as a letter. This is for +compatibility with some systems, such as VMS, where $ is commonly +used in system-defined function and object names. $ is not a +letter in strictly conforming mode, or if you specify the -$ +option. See Invocation. + +

A preprocessing number has a rather bizarre definition. The +category includes all the normal integer and floating point constants +one expects of C, but also a number of other things one might not +initially recognize as a number. Formally, preprocessing numbers begin +with an optional period, a required decimal digit, and then continue +with any sequence of letters, digits, underscores, periods, and +exponents. Exponents are the two-character sequences e+, +e-, E+, E-, p+, p-, P+, and +P-. (The exponents that begin with p or P are new +to C99. They are used for hexadecimal floating-point constants.) + +

The purpose of this unusual definition is to isolate the preprocessor +from the full complexity of numeric constants. It does not have to +distinguish between lexically valid and invalid floating-point numbers, +which is complicated. The definition also permits you to split an +identifier at any position and get exactly two tokens, which can then be +pasted back together with the ## operator. + +

It's possible for preprocessing numbers to cause programs to be +misinterpreted. For example, 0xE+12 is a preprocessing number +which does not translate to any valid numeric constant, therefore a +syntax error. It does not mean 0xE + 12, which is what you +might have intended. + +

+String literals are string constants, character constants, and +header file names (the argument of #include).1 String constants and character +constants are straightforward: "..." or '...'. In +either case embedded quotes should be escaped with a backslash: +'\'' is the character constant for '. There is no limit on +the length of a character constant, but the value of a character +constant that contains more than one character is +implementation-defined. See Implementation Details. + +

Header file names either look like string constants, "...", or are +written with angle brackets instead, <...>. In either case, +backslash is an ordinary character. There is no way to escape the +closing quote or angle bracket. The preprocessor looks for the header +file in different places depending on which form you use. See Include Operation. + +

No string literal may extend past the end of a line. Older versions +of GCC accepted multi-line string constants. You may use continued +lines instead, or string constant concatenation. See Differences from previous versions. + +

Punctuators are all the usual bits of punctuation which are +meaningful to C and C++. All but three of the punctuation characters in +ASCII are C punctuators. The exceptions are @, $, and +`. In addition, all the two- and three-character operators are +punctuators. There are also six digraphs, which the C++ standard +calls alternative tokens, which are merely alternate ways to spell +other punctuators. This is a second attempt to work around missing +punctuation in obsolete systems. It has no negative side effects, +unlike trigraphs, but does not cover as much ground. The digraphs and +their corresponding normal punctuators are: + +

     Digraph:        <%  %>  <:  :>  %:  %:%:
+     Punctuator:      {   }   [   ]   #    ##
+
+

Any other single character is considered “other”. It is passed on to +the preprocessor's output unmolested. The C compiler will almost +certainly reject source code containing “other” tokens. In ASCII, the +only other characters are @, $, `, and control +characters other than NUL (all bits zero). (Note that $ is +normally considered a letter.) All characters with the high bit set +(numeric range 0x7F–0xFF) are also “other” in the present +implementation. This will change when proper support for international +character sets is added to GCC. + +

NUL is a special case because of the high probability that its +appearance is accidental, and because it may be invisible to the user +(many terminals do not display NUL at all). Within comments, NULs are +silently ignored, just as any other character would be. In running +text, NUL is considered white space. For example, these two directives +have the same meaning. + +

     #define X^@1
+     #define X 1
+
+

(where ^@ is ASCII NUL). Within string or character constants, +NULs are preserved. In the latter two cases the preprocessor emits a +warning message. + +

+
+

Footnotes

[1] The C +standard uses the term string literal to refer only to what we are +calling string constants.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-Mode.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-Mode.html new file mode 100644 index 0000000..ebc0e6b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-Mode.html @@ -0,0 +1,82 @@ + + +Traditional Mode - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Previous: Preprocessor Output, +Up: Top +



+
+ +

10 Traditional Mode

+ +

Traditional (pre-standard) C preprocessing is rather different from +the preprocessing specified by the standard. When GCC is given the +-traditional-cpp option, it attempts to emulate a traditional +preprocessor. + +

GCC versions 3.2 and later only support traditional mode semantics in +the preprocessor, and not in the compiler front ends. This chapter +outlines the traditional preprocessor semantics we implemented. + +

The implementation does not correspond precisely to the behavior of +earlier versions of GCC, nor to any true traditional preprocessor. +After all, inconsistencies among traditional implementations were a +major motivation for C standardization. However, we intend that it +should be compatible with true traditional preprocessors in all ways +that actually matter. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-lexical-analysis.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-lexical-analysis.html new file mode 100644 index 0000000..8f879dc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-lexical-analysis.html @@ -0,0 +1,115 @@ + + +Traditional lexical analysis - The C Preprocessor + + + + + + + + + + + + +
+

+Next: , +Up: Traditional Mode +



+
+ +

10.1 Traditional lexical analysis

+ +

The traditional preprocessor does not decompose its input into tokens +the same way a standards-conforming preprocessor does. The input is +simply treated as a stream of text with minimal internal form. + +

This implementation does not treat trigraphs (see trigraphs) +specially since they were an invention of the standards committee. It +handles arbitrarily-positioned escaped newlines properly and splices +the lines as you would expect; many traditional preprocessors did not +do this. + +

The form of horizontal whitespace in the input file is preserved in +the output. In particular, hard tabs remain hard tabs. This can be +useful if, for example, you are preprocessing a Makefile. + +

Traditional CPP only recognizes C-style block comments, and treats the +/* sequence as introducing a comment only if it lies outside +quoted text. Quoted text is introduced by the usual single and double +quotes, and also by an initial < in a #include +directive. + +

Traditionally, comments are completely removed and are not replaced +with a space. Since a traditional compiler does its own tokenization +of the output of the preprocessor, this means that comments can +effectively be used as token paste operators. However, comments +behave like separators for text handled by the preprocessor itself, +since it doesn't re-lex its input. For example, in + +

     #if foo/**/bar
+
+

foo and bar are distinct identifiers and expanded +separately if they happen to be macros. In other words, this +directive is equivalent to + +

     #if foo bar
+
+

rather than + +

     #if foobar
+
+

Generally speaking, in traditional mode an opening quote need not have +a matching closing quote. In particular, a macro may be defined with +replacement text that contains an unmatched quote. Of course, if you +attempt to compile preprocessed output containing an unmatched quote +you will get a syntax error. + +

However, all preprocessing directives other than #define +require matching quotes. For example: + +

     #define m This macro's fine and has an unmatched quote
+     "/* This is not a comment.  */
+     /* This is a comment.  The following #include directive
+        is ill-formed.  */
+     #include <stdio.h
+
+

Just as for the ISO preprocessor, what would be a closing quote can be +escaped with a backslash to prevent the quoted text from closing. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-macros.html new file mode 100644 index 0000000..3ad1fee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-macros.html @@ -0,0 +1,142 @@ + + +Traditional macros - The C Preprocessor + + + + + + + + + + + + + +

+ +

10.2 Traditional macros

+ +

The major difference between traditional and ISO macros is that the +former expand to text rather than to a token sequence. CPP removes +all leading and trailing horizontal whitespace from a macro's +replacement text before storing it, but preserves the form of internal +whitespace. + +

One consequence is that it is legitimate for the replacement text to +contain an unmatched quote (see Traditional lexical analysis). An +unclosed string or character constant continues into the text +following the macro call. Similarly, the text at the end of a macro's +expansion can run together with the text after the macro invocation to +produce a single token. + +

Normally comments are removed from the replacement text after the +macro is expanded, but if the -CC option is passed on the +command line comments are preserved. (In fact, the current +implementation removes comments even before saving the macro +replacement text, but it careful to do it in such a way that the +observed effect is identical even in the function-like macro case.) + +

The ISO stringification operator # and token paste operator +## have no special meaning. As explained later, an effect +similar to these operators can be obtained in a different way. Macro +names that are embedded in quotes, either from the main file or after +macro replacement, do not expand. + +

CPP replaces an unquoted object-like macro name with its replacement +text, and then rescans it for further macros to replace. Unlike +standard macro expansion, traditional macro expansion has no provision +to prevent recursion. If an object-like macro appears unquoted in its +replacement text, it will be replaced again during the rescan pass, +and so on ad infinitum. GCC detects when it is expanding +recursive macros, emits an error message, and continues after the +offending macro invocation. + +

     #define PLUS +
+     #define INC(x) PLUS+x
+     INC(foo);
+          ==> ++foo;
+
+

Function-like macros are similar in form but quite different in +behavior to their ISO counterparts. Their arguments are contained +within parentheses, are comma-separated, and can cross physical lines. +Commas within nested parentheses are not treated as argument +separators. Similarly, a quote in an argument cannot be left +unclosed; a following comma or parenthesis that comes before the +closing quote is treated like any other character. There is no +facility for handling variadic macros. + +

This implementation removes all comments from macro arguments, unless +the -C option is given. The form of all other horizontal +whitespace in arguments is preserved, including leading and trailing +whitespace. In particular + +

     f( )
+
+

is treated as an invocation of the macro f with a single +argument consisting of a single space. If you want to invoke a +function-like macro that takes no arguments, you must not leave any +whitespace between the parentheses. + +

If a macro argument crosses a new line, the new line is replaced with +a space when forming the argument. If the previous line contained an +unterminated quote, the following line inherits the quoted state. + +

Traditional preprocessors replace parameters in the replacement text +with their arguments regardless of whether the parameters are within +quotes or not. This provides a way to stringize arguments. For +example + +

     #define str(x) "x"
+     str(/* A comment */some text )
+          ==> "some text "
+
+

Note that the comment is removed, but that the trailing space is +preserved. Here is an example of using a comment to effect token +pasting. + +

     #define suffix(x) foo_/**/x
+     suffix(bar)
+          ==> foo_bar
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-miscellany.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-miscellany.html new file mode 100644 index 0000000..2b5b358 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-miscellany.html @@ -0,0 +1,84 @@ + + +Traditional miscellany - The C Preprocessor + + + + + + + + + + + + + +
+

+Next: , +Previous: Traditional macros, +Up: Traditional Mode +



+
+ +

10.3 Traditional miscellany

+ +

Here are some things to be aware of when using the traditional +preprocessor. + +

    +
  • Preprocessing directives are recognized only when their leading +# appears in the first column. There can be no whitespace +between the beginning of the line and the #, but whitespace can +follow the #. + +
  • A true traditional C preprocessor does not recognize #error or +#pragma, and may not recognize #elif. CPP supports all +the directives in traditional mode that it supports in ISO mode, +including extensions, with the exception that the effects of +#pragma GCC poison are undefined. + +
  • __STDC__ is not defined. + +
  • If you use digraphs the behavior is undefined. + +
  • If a line that looks like a directive appears within macro arguments, +the behavior is undefined. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-warnings.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-warnings.html new file mode 100644 index 0000000..5b49302 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Traditional-warnings.html @@ -0,0 +1,100 @@ + + +Traditional warnings - The C Preprocessor + + + + + + + + + + + + +
+

+Previous: Traditional miscellany, +Up: Traditional Mode +



+
+ +

10.4 Traditional warnings

+ +

You can request warnings about features that did not exist, or worked +differently, in traditional C with the -Wtraditional option. +GCC does not warn about features of ISO C which you must use when you +are using a conforming compiler, such as the # and ## +operators. + +

Presently -Wtraditional warns about: + +

    +
  • Macro parameters that appear within string literals in the macro body. +In traditional C macro replacement takes place within string literals, +but does not in ISO C. + +
  • In traditional C, some preprocessor directives did not exist. +Traditional preprocessors would only consider a line to be a directive +if the # appeared in column 1 on the line. Therefore +-Wtraditional warns about directives that traditional C +understands but would ignore because the # does not appear as the +first character on the line. It also suggests you hide directives like +#pragma not understood by traditional C by indenting them. Some +traditional implementations would not recognize #elif, so it +suggests avoiding it altogether. + +
  • A function-like macro that appears without an argument list. In some +traditional preprocessors this was an error. In ISO C it merely means +that the macro is not expanded. + +
  • The unary plus operator. This did not exist in traditional C. + +
  • The U and LL integer constant suffixes, which were not +available in traditional C. (Traditional C does support the L +suffix for simple long integer constants.) You are not warned about +uses of these suffixes in macros defined in system headers. For +instance, UINT_MAX may well be defined as 4294967295U, but +you will not be warned if you use UINT_MAX. + +

    You can usually avoid the warning, and the related warning about +constants which are so large that they are unsigned, by writing the +integer constant in question in hexadecimal, with no U suffix. Take +care, though, because this gives the wrong result in exotic cases. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Undefining-and-Redefining-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Undefining-and-Redefining-Macros.html new file mode 100644 index 0000000..d483d97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Undefining-and-Redefining-Macros.html @@ -0,0 +1,107 @@ + + +Undefining and Redefining Macros - The C Preprocessor + + + + + + + + + + + + + + + +

3.8 Undefining and Redefining Macros

+ +

+If a macro ceases to be useful, it may be undefined with the +#undef directive. #undef takes a single argument, the +name of the macro to undefine. You use the bare macro name, even if the +macro is function-like. It is an error if anything appears on the line +after the macro name. #undef has no effect if the name is not a +macro. + +

     #define FOO 4
+     x = FOO;        ==> x = 4;
+     #undef FOO
+     x = FOO;        ==> x = FOO;
+
+

Once a macro has been undefined, that identifier may be redefined +as a macro by a subsequent #define directive. The new definition +need not have any resemblance to the old definition. + +

However, if an identifier which is currently a macro is redefined, then +the new definition must be effectively the same as the old one. +Two macro definitions are effectively the same if: +

    +
  • Both are the same type of macro (object- or function-like). +
  • All the tokens of the replacement list are the same. +
  • If there are any parameters, they are the same. +
  • Whitespace appears in the same places in both. It need not be +exactly the same amount of whitespace, though. Remember that comments +count as whitespace. +
+ +

These definitions are effectively the same: +

     #define FOUR (2 + 2)
+     #define FOUR         (2    +    2)
+     #define FOUR (2 /* two */ + 2)
+
+

but these are not: +

     #define FOUR (2 + 2)
+     #define FOUR ( 2+2 )
+     #define FOUR (2 * 2)
+     #define FOUR(score,and,seven,years,ago) (2 + 2)
+
+

If a macro is redefined with a definition that is not effectively the +same as the old one, the preprocessor issues a warning and changes the +macro to use the new definition. If the new definition is effectively +the same, the redefinition is silently ignored. This allows, for +instance, two different headers to define a common macro. The +preprocessor will only complain if the definitions do not match. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Variadic-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Variadic-Macros.html new file mode 100644 index 0000000..0377c76 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Variadic-Macros.html @@ -0,0 +1,162 @@ + + +Variadic Macros - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Concatenation, +Up: Macros +



+
+ +

3.6 Variadic Macros

+ +

+A macro can be declared to accept a variable number of arguments much as +a function can. The syntax for defining the macro is similar to that of +a function. Here is an example: + +

     #define eprintf(...) fprintf (stderr, __VA_ARGS__)
+
+

This kind of macro is called variadic. When the macro is invoked, +all the tokens in its argument list after the last named argument (this +macro has none), including any commas, become the variable +argument. This sequence of tokens replaces the identifier +__VA_ARGS__ in the macro body wherever it appears. Thus, we +have this expansion: + +

     eprintf ("%s:%d: ", input_file, lineno)
+          ==>  fprintf (stderr, "%s:%d: ", input_file, lineno)
+
+

The variable argument is completely macro-expanded before it is inserted +into the macro expansion, just like an ordinary argument. You may use +the # and ## operators to stringify the variable argument +or to paste its leading or trailing token with another token. (But see +below for an important special case for ##.) + +

If your macro is complicated, you may want a more descriptive name for +the variable argument than __VA_ARGS__. CPP permits +this, as an extension. You may write an argument name immediately +before the ...; that name is used for the variable argument. +The eprintf macro above could be written + +

     #define eprintf(args...) fprintf (stderr, args)
+
+

using this extension. You cannot use __VA_ARGS__ and this +extension in the same macro. + +

You can have named arguments as well as variable arguments in a variadic +macro. We could define eprintf like this, instead: + +

     #define eprintf(format, ...) fprintf (stderr, format, __VA_ARGS__)
+
+

This formulation looks more descriptive, but unfortunately it is less +flexible: you must now supply at least one argument after the format +string. In standard C, you cannot omit the comma separating the named +argument from the variable arguments. Furthermore, if you leave the +variable argument empty, you will get a syntax error, because +there will be an extra comma after the format string. + +

     eprintf("success!\n", );
+          ==> fprintf(stderr, "success!\n", );
+
+

GNU CPP has a pair of extensions which deal with this problem. First, +you are allowed to leave the variable argument out entirely: + +

     eprintf ("success!\n")
+          ==> fprintf(stderr, "success!\n", );
+
+

Second, the ## token paste operator has a special meaning when +placed between a comma and a variable argument. If you write + +

     #define eprintf(format, ...) fprintf (stderr, format, ##__VA_ARGS__)
+
+

and the variable argument is left out when the eprintf macro is +used, then the comma before the ## will be deleted. This does +not happen if you pass an empty argument, nor does it happen if +the token preceding ## is anything other than a comma. + +

     eprintf ("success!\n")
+          ==> fprintf(stderr, "success!\n");
+
+

The above explanation is ambiguous about the case where the only macro +parameter is a variable arguments parameter, as it is meaningless to +try to distinguish whether no argument at all is an empty argument or +a missing argument. In this case the C99 standard is clear that the +comma must remain, however the existing GCC extension used to swallow +the comma. So CPP retains the comma when conforming to a specific C +standard, and drops it otherwise. + +

C99 mandates that the only place the identifier __VA_ARGS__ +can appear is in the replacement list of a variadic macro. It may not +be used as a macro name, macro argument name, or within a different type +of macro. It may also be forbidden in open text; the standard is +ambiguous. We recommend you avoid using it except for its defined +purpose. + +

Variadic macros are a new feature in C99. GNU CPP has supported them +for a long time, but only with a named variable argument +(args..., not ... and __VA_ARGS__). If you are +concerned with portability to previous versions of GCC, you should use +only named variable arguments. On the other hand, if you are concerned +with portability to other conforming implementations of C99, you should +use only __VA_ARGS__. + +

Previous versions of CPP implemented the comma-deletion extension +much more generally. We have restricted it in this release to minimize +the differences from C99. To get the same effect with both this and +previous versions of GCC, the token preceding the special ## must +be a comma, and there must be white space between that comma and +whatever comes immediately before it: + +

     #define eprintf(format, args...) fprintf (stderr, format , ##args)
+
+

See Differences from previous versions, for the gory details. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Wrapper-Headers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Wrapper-Headers.html new file mode 100644 index 0000000..e00d211 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Wrapper-Headers.html @@ -0,0 +1,104 @@ + + +Wrapper Headers - The C Preprocessor + + + + + + + + + + + + + +

+

+Next: , +Previous: Computed Includes, +Up: Header Files +



+
+ +

2.6 Wrapper Headers

+ +

+Sometimes it is necessary to adjust the contents of a system-provided +header file without editing it directly. GCC's fixincludes +operation does this, for example. One way to do that would be to create +a new header file with the same name and insert it in the search path +before the original header. That works fine as long as you're willing +to replace the old header entirely. But what if you want to refer to +the old header from the new one? + +

You cannot simply include the old header with #include. That +will start from the beginning, and find your new header again. If your +header is not protected from multiple inclusion (see Once-Only Headers), it will recurse infinitely and cause a fatal error. + +

You could include the old header with an absolute pathname: +

     #include "/usr/include/old-header.h"
+
+

This works, but is not clean; should the system headers ever move, you +would have to edit the new headers to match. + +

There is no way to solve this problem within the C standard, but you can +use the GNU extension #include_next. It means, “Include the +next file with this name”. This directive works like +#include except in searching for the specified file: it starts +searching the list of header file directories after the directory +in which the current file was found. + +

Suppose you specify -I /usr/local/include, and the list of +directories to search also includes /usr/include; and suppose +both directories contain signal.h. Ordinary #include <signal.h> finds the file under /usr/local/include. If that +file contains #include_next <signal.h>, it starts searching +after that directory, and finds the file in /usr/include. + +

#include_next does not distinguish between <file> +and "file" inclusion, nor does it check that the file you +specify has the same name as the current file. It simply looks for the +file named, starting with the directory in the search path after the one +where the current file was found. + +

The use of #include_next can lead to great confusion. We +recommend it be used only when there is no other alternative. In +particular, it should not be used in the headers belonging to a specific +program; it should be used only to make global corrections along the +lines of fixincludes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Wtrigraphs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Wtrigraphs.html new file mode 100644 index 0000000..becc6ae --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/Wtrigraphs.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/dashMF.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/dashMF.html new file mode 100644 index 0000000..d038a27 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/dashMF.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/fdollars_002din_002didentifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/fdollars_002din_002didentifiers.html new file mode 100644 index 0000000..da3dbc4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/fdollars_002din_002didentifiers.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/index.html new file mode 100644 index 0000000..c9afee2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/index.html @@ -0,0 +1,310 @@ + + +The C Preprocessor + + + + + + + + + + +

The C Preprocessor

+
+

Table of Contents

+ +
+ + + +
+

+Next: , +Up: (dir) +



+
+ +

The C Preprocessor

+ +

The C preprocessor implements the macro language used to transform C, +C++, and Objective-C programs before they are compiled. It can also be +useful on its own. + +

+

--- The Detailed Node Listing --- + +

Overview + +

+ +

Header Files + +

+ +

Macros + +

+ +

Predefined Macros + +

+ +

Macro Pitfalls + +

+ +

Conditionals + +

+ +

Conditional Syntax + +

+ +

Implementation Details + +

+ +

Obsolete Features + +

+ + + +

Copyright © 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, +1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 +Free Software Foundation, Inc. + +

Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation. A copy of +the license is included in the + +section entitled “GNU Free Documentation License”. + + +

This manual contains no Invariant Sections. The Front-Cover Texts are +(a) (see below), and the Back-Cover Texts are (b) (see below). + +

(a) The FSF's Front-Cover Text is: + +

A GNU Manual + +

(b) The FSF's Back-Cover Text is: + +

You have freedom to copy and modify this GNU Manual, like GNU + software. Copies published by the Free Software Foundation raise + funds for GNU development. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/trigraphs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/trigraphs.html new file mode 100644 index 0000000..7d94d62 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cpp/trigraphs.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Concept-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Concept-Index.html new file mode 100644 index 0000000..223303c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Concept-Index.html @@ -0,0 +1,55 @@ + + +Concept Index - The GNU C Preprocessor Internals + + + + + + + + + + +

+

+Previous: Files, +Up: Top +



+
+ +

Concept Index

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Conventions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Conventions.html new file mode 100644 index 0000000..ca2a240 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Conventions.html @@ -0,0 +1,53 @@ + + +Conventions - The GNU C Preprocessor Internals + + + + + + + + + + + +
+

+Next: , +Previous: Top, +Up: Top +



+
+ +

Conventions

+ +

+cpplib has two interfaces—one is exposed internally only, and the +other is for both internal and external use. + +

The convention is that functions and types that are exposed to multiple +files internally are prefixed with _cpp_, and are to be found in +the file internal.h. Functions and types exposed to external +clients are in cpplib.h, and prefixed with cpp_. For +historical reasons this is no longer quite true, but we should strive to +stick to it. + +

We are striving to reduce the information exposed in cpplib.h to the +bare minimum necessary, and then to keep it there. This makes clear +exactly what external clients are entitled to assume, and allows us to +change internals in the future without worrying whether library clients +are perhaps relying on some kind of undocumented implementation-specific +behavior. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Files.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Files.html new file mode 100644 index 0000000..87e7e74 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Files.html @@ -0,0 +1,100 @@ + + +Files - The GNU C Preprocessor Internals + + + + + + + + + + + +

+

+Next: , +Previous: Guard Macros, +Up: Top +



+
+ +

File Handling

+ +

+Fairly obviously, the file handling code of cpplib resides in the file +files.c. It takes care of the details of file searching, +opening, reading and caching, for both the main source file and all the +headers it recursively includes. + +

The basic strategy is to minimize the number of system calls. On many +systems, the basic open () and fstat () system calls can +be quite expensive. For every #include-d file, we need to try +all the directories in the search path until we find a match. Some +projects, such as glibc, pass twenty or thirty include paths on the +command line, so this can rapidly become time consuming. + +

For a header file we have not encountered before we have little choice +but to do this. However, it is often the case that the same headers are +repeatedly included, and in these cases we try to avoid repeating the +filesystem queries whilst searching for the correct file. + +

For each file we try to open, we store the constructed path in a splay +tree. This path first undergoes simplification by the function +_cpp_simplify_pathname. For example, +/usr/include/bits/../foo.h is simplified to +/usr/include/foo.h before we enter it in the splay tree and try +to open () the file. CPP will then find subsequent uses of +foo.h, even as /usr/include/foo.h, in the splay tree and +save system calls. + +

Further, it is likely the file contents have also been cached, saving a +read () system call. We don't bother caching the contents of +header files that are re-inclusion protected, and whose re-inclusion +macro is defined when we leave the header file for the first time. If +the host supports it, we try to map suitably large files into memory, +rather than reading them in directly. + +

The include paths are internally stored on a null-terminated +singly-linked list, starting with the "header.h" directory search +chain, which then links into the <header.h> directory chain. + +

Files included with the <foo.h> syntax start the lookup directly +in the second half of this chain. However, files included with the +"foo.h" syntax start at the beginning of the chain, but with one +extra directory prepended. This is the directory of the current file; +the one containing the #include directive. Prepending this +directory on a per-file basis is handled by the function +search_from. + +

Note that a header included with a directory component, such as +#include "mydir/foo.h" and opened as +/usr/local/include/mydir/foo.h, will have the complete path minus +the basename foo.h as the current directory. + +

Enough information is stored in the splay tree that CPP can immediately +tell whether it can skip the header file because of the multiple include +optimization, whether the file didn't exist or couldn't be opened for +some reason, or whether the header was flagged not to be re-used, as it +is with the obsolete #import directive. + +

For the benefit of MS-DOS filesystems with an 8.3 filename limitation, +CPP offers the ability to treat various include file names as aliases +for the real header files with shorter names. The map from one to the +other is found in a special file called header.gcc, stored in the +command line (or system) include directories to which the mapping +applies. This may be higher up the directory tree than the full path to +the file minus the base name. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Guard-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Guard-Macros.html new file mode 100644 index 0000000..4b1274f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Guard-Macros.html @@ -0,0 +1,143 @@ + + +Guard Macros - The GNU C Preprocessor Internals + + + + + + + + + + + +

+

+Next: , +Previous: Line Numbering, +Up: Top +



+
+ +

The Multiple-Include Optimization

+ +

+Header files are often of the form + +

     #ifndef FOO
+     #define FOO
+     ...
+     #endif
+
+

to prevent the compiler from processing them more than once. The +preprocessor notices such header files, so that if the header file +appears in a subsequent #include directive and FOO is +defined, then it is ignored and it doesn't preprocess or even re-open +the file a second time. This is referred to as the multiple +include optimization. + +

Under what circumstances is such an optimization valid? If the file +were included a second time, it can only be optimized away if that +inclusion would result in no tokens to return, and no relevant +directives to process. Therefore the current implementation imposes +requirements and makes some allowances as follows: + +

    +
  1. There must be no tokens outside the controlling #if-#endif +pair, but whitespace and comments are permitted. + +
  2. There must be no directives outside the controlling directive pair, but +the null directive (a line containing nothing other than a single +# and possibly whitespace) is permitted. + +
  3. The opening directive must be of the form + +
              #ifndef FOO
    +     
    +

    or + +

              #if !defined FOO     [equivalently, #if !defined(FOO)]
    +     
    +
  4. In the second form above, the tokens forming the #if expression +must have come directly from the source file—no macro expansion must +have been involved. This is because macro definitions can change, and +tracking whether or not a relevant change has been made is not worth the +implementation cost. + +
  5. There can be no #else or #elif directives at the outer +conditional block level, because they would probably contain something +of interest to a subsequent pass. +
+ +

First, when pushing a new file on the buffer stack, +_stack_include_file sets the controlling macro mi_cmacro to +NULL, and sets mi_valid to true. This indicates +that the preprocessor has not yet encountered anything that would +invalidate the multiple-include optimization. As described in the next +few paragraphs, these two variables having these values effectively +indicates top-of-file. + +

When about to return a token that is not part of a directive, +_cpp_lex_token sets mi_valid to false. This +enforces the constraint that tokens outside the controlling conditional +block invalidate the optimization. + +

The do_if, when appropriate, and do_ifndef directive +handlers pass the controlling macro to the function +push_conditional. cpplib maintains a stack of nested conditional +blocks, and after processing every opening conditional this function +pushes an if_stack structure onto the stack. In this structure +it records the controlling macro for the block, provided there is one +and we're at top-of-file (as described above). If an #elif or +#else directive is encountered, the controlling macro for that +block is cleared to NULL. Otherwise, it survives until the +#endif closing the block, upon which do_endif sets +mi_valid to true and stores the controlling macro in +mi_cmacro. + +

_cpp_handle_directive clears mi_valid when processing any +directive other than an opening conditional and the null directive. +With this, and requiring top-of-file to record a controlling macro, and +no #else or #elif for it to survive and be copied to +mi_cmacro by do_endif, we have enforced the absence of +directives outside the main conditional block for the optimization to be +on. + +

Note that whilst we are inside the conditional block, mi_valid is +likely to be reset to false, but this does not matter since +the closing #endif restores it to true if appropriate. + +

Finally, since _cpp_lex_direct pops the file off the buffer stack +at EOF without returning a token, if the #endif directive +was not followed by any tokens, mi_valid is true and +_cpp_pop_file_buffer remembers the controlling macro associated +with the file. Subsequent calls to stack_include_file result in +no buffer being pushed if the controlling macro is defined, effecting +the optimization. + +

A quick word on how we handle the + +

     #if !defined FOO
+
+

case. _cpp_parse_expr and parse_defined take steps to see +whether the three stages !, defined-expression and +end-of-directive occur in order in a #if expression. If +so, they return the guard macro to do_if in the variable +mi_ind_cmacro, and otherwise set it to NULL. +enter_macro_context sets mi_valid to false, so if a macro +was expanded whilst parsing any part of the expression, then the +top-of-file test in push_conditional fails and the optimization +is turned off. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Hash-Nodes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Hash-Nodes.html new file mode 100644 index 0000000..7442cf7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Hash-Nodes.html @@ -0,0 +1,91 @@ + + +Hash Nodes - The GNU C Preprocessor Internals + + + + + + + + + + + +

+

+Next: , +Previous: Lexer, +Up: Top +



+
+ +

Hash Nodes

+ +

+When cpplib encounters an “identifier”, it generates a hash code for +it and stores it in the hash table. By “identifier” we mean tokens +with type CPP_NAME; this includes identifiers in the usual C +sense, as well as keywords, directive names, macro names and so on. For +example, all of pragma, int, foo and +__GNUC__ are identifiers and hashed when lexed. + +

Each node in the hash table contain various information about the +identifier it represents. For example, its length and type. At any one +time, each identifier falls into exactly one of three categories: + +

    +
  • Macros + +

    These have been declared to be macros, either on the command line or +with #define. A few, such as __TIME__ are built-ins +entered in the hash table during initialization. The hash node for a +normal macro points to a structure with more information about the +macro, such as whether it is function-like, how many arguments it takes, +and its expansion. Built-in macros are flagged as special, and instead +contain an enum indicating which of the various built-in macros it is. + +

  • Assertions + +

    Assertions are in a separate namespace to macros. To enforce this, cpp +actually prepends a # character before hashing and entering it in +the hash table. An assertion's node points to a chain of answers to +that assertion. + +

  • Void + +

    Everything else falls into this category—an identifier that is not +currently a macro, or a macro that has since been undefined with +#undef. + +

    When preprocessing C++, this category also includes the named operators, +such as xor. In expressions these behave like the operators they +represent, but in contexts where the spelling of a token matters they +are spelt differently. This spelling distinction is relevant when they +are operands of the stringizing and pasting macro operators # and +##. Named operator hash nodes are flagged, both to catch the +spelling distinction and to prevent them from being defined as macros. +

+ +

The same identifiers share the same hash node. Since each identifier +token, after lexing, contains a pointer to its hash node, this is used +to provide rapid lookup of various information. For example, when +parsing a #define statement, CPP flags each argument's identifier +hash node with the index of that argument. This makes duplicated +argument checking an O(1) operation for each argument. Similarly, for +each identifier in the macro's expansion, lookup to see if it is an +argument, and which argument it is, is also an O(1) operation. Further, +each directive name, such as endif, has an associated directive +enum stored in its hash node, so that directive lookup is also O(1). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Invalid-identifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Invalid-identifiers.html new file mode 100644 index 0000000..503bb57 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Invalid-identifiers.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Lexer.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Lexer.html new file mode 100644 index 0000000..78dcf45 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Lexer.html @@ -0,0 +1,308 @@ + + +Lexer - The GNU C Preprocessor Internals + + + + + + + + + + + +

+

+Next: , +Previous: Conventions, +Up: Top +



+
+ +

The Lexer

+ +

+ +

Overview

+ +

The lexer is contained in the file lex.c. It is a hand-coded +lexer, and not implemented as a state machine. It can understand C, C++ +and Objective-C source code, and has been extended to allow reasonably +successful preprocessing of assembly language. The lexer does not make +an initial pass to strip out trigraphs and escaped newlines, but handles +them as they are encountered in a single pass of the input file. It +returns preprocessing tokens individually, not a line at a time. + +

It is mostly transparent to users of the library, since the library's +interface for obtaining the next token, cpp_get_token, takes care +of lexing new tokens, handling directives, and expanding macros as +necessary. However, the lexer does expose some functionality so that +clients of the library can easily spell a given token, such as +cpp_spell_token and cpp_token_len. These functions are +useful when generating diagnostics, and for emitting the preprocessed +output. + +

Lexing a token

+ +

Lexing of an individual token is handled by _cpp_lex_direct and +its subroutines. In its current form the code is quite complicated, +with read ahead characters and such-like, since it strives to not step +back in the character stream in preparation for handling non-ASCII file +encodings. The current plan is to convert any such files to UTF-8 +before processing them. This complexity is therefore unnecessary and +will be removed, so I'll not discuss it further here. + +

The job of _cpp_lex_direct is simply to lex a token. It is not +responsible for issues like directive handling, returning lookahead +tokens directly, multiple-include optimization, or conditional block +skipping. It necessarily has a minor rôle to play in memory +management of lexed lines. I discuss these issues in a separate section +(see Lexing a line). + +

The lexer places the token it lexes into storage pointed to by the +variable cur_token, and then increments it. This variable is +important for correct diagnostic positioning. Unless a specific line +and column are passed to the diagnostic routines, they will examine the +line and col values of the token just before the location +that cur_token points to, and use that location to report the +diagnostic. + +

The lexer does not consider whitespace to be a token in its own right. +If whitespace (other than a new line) precedes a token, it sets the +PREV_WHITE bit in the token's flags. Each token has its +line and col variables set to the line and column of the +first character of the token. This line number is the line number in +the translation unit, and can be converted to a source (file, line) pair +using the line map code. + +

The first token on a logical, i.e. unescaped, line has the flag +BOL set for beginning-of-line. This flag is intended for +internal use, both to distinguish a # that begins a directive +from one that doesn't, and to generate a call-back to clients that want +to be notified about the start of every non-directive line with tokens +on it. Clients cannot reliably determine this for themselves: the first +token might be a macro, and the tokens of a macro expansion do not have +the BOL flag set. The macro expansion may even be empty, and the +next token on the line certainly won't have the BOL flag set. + +

New lines are treated specially; exactly how the lexer handles them is +context-dependent. The C standard mandates that directives are +terminated by the first unescaped newline character, even if it appears +in the middle of a macro expansion. Therefore, if the state variable +in_directive is set, the lexer returns a CPP_EOF token, +which is normally used to indicate end-of-file, to indicate +end-of-directive. In a directive a CPP_EOF token never means +end-of-file. Conveniently, if the caller was collect_args, it +already handles CPP_EOF as if it were end-of-file, and reports an +error about an unterminated macro argument list. + +

The C standard also specifies that a new line in the middle of the +arguments to a macro is treated as whitespace. This white space is +important in case the macro argument is stringified. The state variable +parsing_args is nonzero when the preprocessor is collecting the +arguments to a macro call. It is set to 1 when looking for the opening +parenthesis to a function-like macro, and 2 when collecting the actual +arguments up to the closing parenthesis, since these two cases need to +be distinguished sometimes. One such time is here: the lexer sets the +PREV_WHITE flag of a token if it meets a new line when +parsing_args is set to 2. It doesn't set it if it meets a new +line when parsing_args is 1, since then code like + +

     #define foo() bar
+     foo
+     baz
+
+

would be output with an erroneous space before baz: + +

     foo
+      baz
+
+

This is a good example of the subtlety of getting token spacing correct +in the preprocessor; there are plenty of tests in the testsuite for +corner cases like this. + +

The lexer is written to treat each of \r, \n, \r\n +and \n\r as a single new line indicator. This allows it to +transparently preprocess MS-DOS, Macintosh and Unix files without their +needing to pass through a special filter beforehand. + +

We also decided to treat a backslash, either \ or the trigraph +??/, separated from one of the above newline indicators by +non-comment whitespace only, as intending to escape the newline. It +tends to be a typing mistake, and cannot reasonably be mistaken for +anything else in any of the C-family grammars. Since handling it this +way is not strictly conforming to the ISO standard, the library issues a +warning wherever it encounters it. + +

Handling newlines like this is made simpler by doing it in one place +only. The function handle_newline takes care of all newline +characters, and skip_escaped_newlines takes care of arbitrarily +long sequences of escaped newlines, deferring to handle_newline +to handle the newlines themselves. + +

The most painful aspect of lexing ISO-standard C and C++ is handling +trigraphs and backlash-escaped newlines. Trigraphs are processed before +any interpretation of the meaning of a character is made, and unfortunately +there is a trigraph representation for a backslash, so it is possible for +the trigraph ??/ to introduce an escaped newline. + +

Escaped newlines are tedious because theoretically they can occur +anywhere—between the + and = of the += token, +within the characters of an identifier, and even between the * +and / that terminates a comment. Moreover, you cannot be sure +there is just one—there might be an arbitrarily long sequence of them. + +

So, for example, the routine that lexes a number, parse_number, +cannot assume that it can scan forwards until the first non-number +character and be done with it, because this could be the \ +introducing an escaped newline, or the ? introducing the trigraph +sequence that represents the \ of an escaped newline. If it +encounters a ? or \, it calls skip_escaped_newlines +to skip over any potential escaped newlines before checking whether the +number has been finished. + +

Similarly code in the main body of _cpp_lex_direct cannot simply +check for a = after a + character to determine whether it +has a += token; it needs to be prepared for an escaped newline of +some sort. Such cases use the function get_effective_char, which +returns the first character after any intervening escaped newlines. + +

The lexer needs to keep track of the correct column position, including +counting tabs as specified by the -ftabstop= option. This +should be done even within C-style comments; they can appear in the +middle of a line, and we want to report diagnostics in the correct +position for text appearing after the end of the comment. + +

+Some identifiers, such as __VA_ARGS__ and poisoned identifiers, +may be invalid and require a diagnostic. However, if they appear in a +macro expansion we don't want to complain with each use of the macro. +It is therefore best to catch them during the lexing stage, in +parse_identifier. In both cases, whether a diagnostic is needed +or not is dependent upon the lexer's state. For example, we don't want +to issue a diagnostic for re-poisoning a poisoned identifier, or for +using __VA_ARGS__ in the expansion of a variable-argument macro. +Therefore parse_identifier makes use of state flags to determine +whether a diagnostic is appropriate. Since we change state on a +per-token basis, and don't lex whole lines at a time, this is not a +problem. + +

Another place where state flags are used to change behavior is whilst +lexing header names. Normally, a < would be lexed as a single +token. After a #include directive, though, it should be lexed as +a single token as far as the nearest > character. Note that we +don't allow the terminators of header names to be escaped; the first +" or > terminates the header name. + +

Interpretation of some character sequences depends upon whether we are +lexing C, C++ or Objective-C, and on the revision of the standard in +force. For example, :: is a single token in C++, but in C it is +two separate : tokens and almost certainly a syntax error. Such +cases are handled by _cpp_lex_direct based upon command-line +flags stored in the cpp_options structure. + +

Once a token has been lexed, it leads an independent existence. The +spelling of numbers, identifiers and strings is copied to permanent +storage from the original input buffer, so a token remains valid and +correct even if its source buffer is freed with _cpp_pop_buffer. +The storage holding the spellings of such tokens remains until the +client program calls cpp_destroy, probably at the end of the translation +unit. + +

+ +

Lexing a line

+ +

+When the preprocessor was changed to return pointers to tokens, one +feature I wanted was some sort of guarantee regarding how long a +returned pointer remains valid. This is important to the stand-alone +preprocessor, the future direction of the C family front ends, and even +to cpplib itself internally. + +

Occasionally the preprocessor wants to be able to peek ahead in the +token stream. For example, after the name of a function-like macro, it +wants to check the next token to see if it is an opening parenthesis. +Another example is that, after reading the first few tokens of a +#pragma directive and not recognizing it as a registered pragma, +it wants to backtrack and allow the user-defined handler for unknown +pragmas to access the full #pragma token stream. The stand-alone +preprocessor wants to be able to test the current token with the +previous one to see if a space needs to be inserted to preserve their +separate tokenization upon re-lexing (paste avoidance), so it needs to +be sure the pointer to the previous token is still valid. The +recursive-descent C++ parser wants to be able to perform tentative +parsing arbitrarily far ahead in the token stream, and then to be able +to jump back to a prior position in that stream if necessary. + +

The rule I chose, which is fairly natural, is to arrange that the +preprocessor lex all tokens on a line consecutively into a token buffer, +which I call a token run, and when meeting an unescaped new line +(newlines within comments do not count either), to start lexing back at +the beginning of the run. Note that we do not lex a line of +tokens at once; if we did that parse_identifier would not have +state flags available to warn about invalid identifiers (see Invalid identifiers). + +

In other words, accessing tokens that appeared earlier in the current +line is valid, but since each logical line overwrites the tokens of the +previous line, tokens from prior lines are unavailable. In particular, +since a directive only occupies a single logical line, this means that +the directive handlers like the #pragma handler can jump around +in the directive's tokens if necessary. + +

Two issues remain: what about tokens that arise from macro expansions, +and what happens when we have a long line that overflows the token run? + +

Since we promise clients that we preserve the validity of pointers that +we have already returned for tokens that appeared earlier in the line, +we cannot reallocate the run. Instead, on overflow it is expanded by +chaining a new token run on to the end of the existing one. + +

The tokens forming a macro's replacement list are collected by the +#define handler, and placed in storage that is only freed by +cpp_destroy. So if a macro is expanded in the line of tokens, +the pointers to the tokens of its expansion that are returned will always +remain valid. However, macros are a little trickier than that, since +they give rise to three sources of fresh tokens. They are the built-in +macros like __LINE__, and the # and ## operators +for stringification and token pasting. I handled this by allocating +space for these tokens from the lexer's token run chain. This means +they automatically receive the same lifetime guarantees as lexed tokens, +and we don't need to concern ourselves with freeing them. + +

Lexing into a line of tokens solves some of the token memory management +issues, but not all. The opening parenthesis after a function-like +macro name might lie on a different line, and the front ends definitely +want the ability to look ahead past the end of the current line. So +cpplib only moves back to the start of the token run at the end of a +line if the variable keep_tokens is zero. Line-buffering is +quite natural for the preprocessor, and as a result the only time cpplib +needs to increment this variable is whilst looking for the opening +parenthesis to, and reading the arguments of, a function-like macro. In +the near future cpplib will export an interface to increment and +decrement this variable, so that clients can share full control over the +lifetime of token pointers too. + +

The routine _cpp_lex_token handles moving to new token runs, +calling _cpp_lex_direct to lex new tokens, or returning +previously-lexed tokens if we stepped back in the token stream. It also +checks each token for the BOL flag, which might indicate a +directive that needs to be handled, or require a start-of-line call-back +to be made. _cpp_lex_token also handles skipping over tokens in +failed conditional blocks, and invalidates the control macro of the +multiple-include optimization if a token was successfully lexed outside +a directive. In other words, its callers do not need to concern +themselves with such issues. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Lexing-a-line.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Lexing-a-line.html new file mode 100644 index 0000000..52c093b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Lexing-a-line.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Line-Numbering.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Line-Numbering.html new file mode 100644 index 0000000..e1ebc6b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Line-Numbering.html @@ -0,0 +1,120 @@ + + +Line Numbering - The GNU C Preprocessor Internals + + + + + + + + + + + +

+

+Next: , +Previous: Token Spacing, +Up: Top +



+
+ +

Line numbering

+ +

+ +

Just which line number anyway?

+ +

There are three reasonable requirements a cpplib client might have for +the line number of a token passed to it: + +

    +
  • The source line it was lexed on. +
  • The line it is output on. This can be different to the line it was +lexed on if, for example, there are intervening escaped newlines or +C-style comments. For example: + +
              foo /* A long
    +          comment */ bar \
    +          baz
    +          =>
    +          foo bar baz
    +     
    +
  • If the token results from a macro expansion, the line of the macro name, +or possibly the line of the closing parenthesis in the case of +function-like macro expansion. +
+ +

The cpp_token structure contains line and col +members. The lexer fills these in with the line and column of the first +character of the token. Consequently, but maybe unexpectedly, a token +from the replacement list of a macro expansion carries the location of +the token within the #define directive, because cpplib expands a +macro by returning pointers to the tokens in its replacement list. The +current implementation of cpplib assigns tokens created from built-in +macros and the # and ## operators the location of the most +recently lexed token. This is a because they are allocated from the +lexer's token runs, and because of the way the diagnostic routines infer +the appropriate location to report. + +

The diagnostic routines in cpplib display the location of the most +recently lexed token, unless they are passed a specific line and +column to report. For diagnostics regarding tokens that arise from +macro expansions, it might also be helpful for the user to see the +original location in the macro definition that the token came from. +Since that is exactly the information each token carries, such an +enhancement could be made relatively easily in future. + +

The stand-alone preprocessor faces a similar problem when determining +the correct line to output the token on: the position attached to a +token is fairly useless if the token came from a macro expansion. All +tokens on a logical line should be output on its first physical line, so +the token's reported location is also wrong if it is part of a physical +line other than the first. + +

To solve these issues, cpplib provides a callback that is generated +whenever it lexes a preprocessing token that starts a new logical line +other than a directive. It passes this token (which may be a +CPP_EOF token indicating the end of the translation unit) to the +callback routine, which can then use the line and column of this token +to produce correct output. + +

Representation of line numbers

+ +

As mentioned above, cpplib stores with each token the line number that +it was lexed on. In fact, this number is not the number of the line in +the source file, but instead bears more resemblance to the number of the +line in the translation unit. + +

The preprocessor maintains a monotonic increasing line count, which is +incremented at every new line character (and also at the end of any +buffer that does not end in a new line). Since a line number of zero is +useful to indicate certain special states and conditions, this variable +starts counting from one. + +

This variable therefore uniquely enumerates each line in the translation +unit. With some simple infrastructure, it is straight forward to map +from this to the original source file and line number pair, saving space +whenever line number information needs to be saved. The code the +implements this mapping lies in the files line-map.c and +line-map.h. + +

Command-line macros and assertions are implemented by pushing a buffer +containing the right hand side of an equivalent #define or +#assert directive. Some built-in macros are handled similarly. +Since these are all processed before the first line of the main input +file, it will typically have an assigned line closer to twenty than to +one. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Macro-Expansion.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Macro-Expansion.html new file mode 100644 index 0000000..315fea9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Macro-Expansion.html @@ -0,0 +1,203 @@ + + +Macro Expansion - The GNU C Preprocessor Internals + + + + + + + + + + + +

+

+Next: , +Previous: Hash Nodes, +Up: Top +



+
+ +

Macro Expansion Algorithm

+ +

+Macro expansion is a tricky operation, fraught with nasty corner cases +and situations that render what you thought was a nifty way to +optimize the preprocessor's expansion algorithm wrong in quite subtle +ways. + +

I strongly recommend you have a good grasp of how the C and C++ +standards require macros to be expanded before diving into this +section, let alone the code!. If you don't have a clear mental +picture of how things like nested macro expansion, stringification and +token pasting are supposed to work, damage to your sanity can quickly +result. + +

Internal representation of macros

+ +

+The preprocessor stores macro expansions in tokenized form. This +saves repeated lexing passes during expansion, at the cost of a small +increase in memory consumption on average. The tokens are stored +contiguously in memory, so a pointer to the first one and a token +count is all you need to get the replacement list of a macro. + +

If the macro is a function-like macro the preprocessor also stores its +parameters, in the form of an ordered list of pointers to the hash +table entry of each parameter's identifier. Further, in the macro's +stored expansion each occurrence of a parameter is replaced with a +special token of type CPP_MACRO_ARG. Each such token holds the +index of the parameter it represents in the parameter list, which +allows rapid replacement of parameters with their arguments during +expansion. Despite this optimization it is still necessary to store +the original parameters to the macro, both for dumping with e.g., +-dD, and to warn about non-trivial macro redefinitions when +the parameter names have changed. + +

Macro expansion overview

+ +

The preprocessor maintains a context stack, implemented as a +linked list of cpp_context structures, which together represent +the macro expansion state at any one time. The struct +cpp_reader member variable context points to the current top +of this stack. The top normally holds the unexpanded replacement list +of the innermost macro under expansion, except when cpplib is about to +pre-expand an argument, in which case it holds that argument's +unexpanded tokens. + +

When there are no macros under expansion, cpplib is in base +context. All contexts other than the base context contain a +contiguous list of tokens delimited by a starting and ending token. +When not in base context, cpplib obtains the next token from the list +of the top context. If there are no tokens left in the list, it pops +that context off the stack, and subsequent ones if necessary, until an +unexhausted context is found or it returns to base context. In base +context, cpplib reads tokens directly from the lexer. + +

If it encounters an identifier that is both a macro and enabled for +expansion, cpplib prepares to push a new context for that macro on the +stack by calling the routine enter_macro_context. When this +routine returns, the new context will contain the unexpanded tokens of +the replacement list of that macro. In the case of function-like +macros, enter_macro_context also replaces any parameters in the +replacement list, stored as CPP_MACRO_ARG tokens, with the +appropriate macro argument. If the standard requires that the +parameter be replaced with its expanded argument, the argument will +have been fully macro expanded first. + +

enter_macro_context also handles special macros like +__LINE__. Although these macros expand to a single token which +cannot contain any further macros, for reasons of token spacing +(see Token Spacing) and simplicity of implementation, cpplib +handles these special macros by pushing a context containing just that +one token. + +

The final thing that enter_macro_context does before returning +is to mark the macro disabled for expansion (except for special macros +like __TIME__). The macro is re-enabled when its context is +later popped from the context stack, as described above. This strict +ordering ensures that a macro is disabled whilst its expansion is +being scanned, but that it is not disabled whilst any arguments +to it are being expanded. + +

Scanning the replacement list for macros to expand

+ +

The C standard states that, after any parameters have been replaced +with their possibly-expanded arguments, the replacement list is +scanned for nested macros. Further, any identifiers in the +replacement list that are not expanded during this scan are never +again eligible for expansion in the future, if the reason they were +not expanded is that the macro in question was disabled. + +

Clearly this latter condition can only apply to tokens resulting from +argument pre-expansion. Other tokens never have an opportunity to be +re-tested for expansion. It is possible for identifiers that are +function-like macros to not expand initially but to expand during a +later scan. This occurs when the identifier is the last token of an +argument (and therefore originally followed by a comma or a closing +parenthesis in its macro's argument list), and when it replaces its +parameter in the macro's replacement list, the subsequent token +happens to be an opening parenthesis (itself possibly the first token +of an argument). + +

It is important to note that when cpplib reads the last token of a +given context, that context still remains on the stack. Only when +looking for the next token do we pop it off the stack and drop +to a lower context. This makes backing up by one token easy, but more +importantly ensures that the macro corresponding to the current +context is still disabled when we are considering the last token of +its replacement list for expansion (or indeed expanding it). As an +example, which illustrates many of the points above, consider + +

     #define foo(x) bar x
+     foo(foo) (2)
+
+

which fully expands to bar foo (2). During pre-expansion +of the argument, foo does not expand even though the macro is +enabled, since it has no following parenthesis [pre-expansion of an +argument only uses tokens from that argument; it cannot take tokens +from whatever follows the macro invocation]. This still leaves the +argument token foo eligible for future expansion. Then, when +re-scanning after argument replacement, the token foo is +rejected for expansion, and marked ineligible for future expansion, +since the macro is now disabled. It is disabled because the +replacement list bar foo of the macro is still on the context +stack. + +

If instead the algorithm looked for an opening parenthesis first and +then tested whether the macro were disabled it would be subtly wrong. +In the example above, the replacement list of foo would be +popped in the process of finding the parenthesis, re-enabling +foo and expanding it a second time. + +

Looking for a function-like macro's opening parenthesis

+ +

Function-like macros only expand when immediately followed by a +parenthesis. To do this cpplib needs to temporarily disable macros +and read the next token. Unfortunately, because of spacing issues +(see Token Spacing), there can be fake padding tokens in-between, +and if the next real token is not a parenthesis cpplib needs to be +able to back up that one token as well as retain the information in +any intervening padding tokens. + +

Backing up more than one token when macros are involved is not +permitted by cpplib, because in general it might involve issues like +restoring popped contexts onto the context stack, which are too hard. +Instead, searching for the parenthesis is handled by a special +function, funlike_invocation_p, which remembers padding +information as it reads tokens. If the next real token is not an +opening parenthesis, it backs up that one token, and then pushes an +extra context just containing the padding information if necessary. + +

Marking tokens ineligible for future expansion

+ +

As discussed above, cpplib needs a way of marking tokens as +unexpandable. Since the tokens cpplib handles are read-only once they +have been lexed, it instead makes a copy of the token and adds the +flag NO_EXPAND to the copy. + +

For efficiency and to simplify memory management by avoiding having to +remember to free these tokens, they are allocated as temporary tokens +from the lexer's current token run (see Lexing a line) using the +function _cpp_temp_token. The tokens are then re-used once the +current line of tokens has been read in. + +

This might sound unsafe. However, tokens runs are not re-used at the +end of a line if it happens to be in the middle of a macro argument +list, and cpplib only wants to back-up more than one lexer token in +situations where no macro expansion is involved, so the optimization +is safe. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Token-Spacing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Token-Spacing.html new file mode 100644 index 0000000..7d6a2c8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/Token-Spacing.html @@ -0,0 +1,158 @@ + + +Token Spacing - The GNU C Preprocessor Internals + + + + + + + + + + + +

+

+Next: , +Previous: Macro Expansion, +Up: Top +



+
+ +

Token Spacing

+ +

+First, consider an issue that only concerns the stand-alone +preprocessor: there needs to be a guarantee that re-reading its preprocessed +output results in an identical token stream. Without taking special +measures, this might not be the case because of macro substitution. +For example: + +

     #define PLUS +
+     #define EMPTY
+     #define f(x) =x=
+     +PLUS -EMPTY- PLUS+ f(=)
+             ==> + + - - + + = = =
+     not
+             ==> ++ -- ++ ===
+
+

One solution would be to simply insert a space between all adjacent +tokens. However, we would like to keep space insertion to a minimum, +both for aesthetic reasons and because it causes problems for people who +still try to abuse the preprocessor for things like Fortran source and +Makefiles. + +

For now, just notice that when tokens are added (or removed, as shown by +the EMPTY example) from the original lexed token stream, we need +to check for accidental token pasting. We call this paste +avoidance. Token addition and removal can only occur because of macro +expansion, but accidental pasting can occur in many places: both before +and after each macro replacement, each argument replacement, and +additionally each token created by the # and ## operators. + +

Look at how the preprocessor gets whitespace output correct +normally. The cpp_token structure contains a flags byte, and one +of those flags is PREV_WHITE. This is flagged by the lexer, and +indicates that the token was preceded by whitespace of some form other +than a new line. The stand-alone preprocessor can use this flag to +decide whether to insert a space between tokens in the output. + +

Now consider the result of the following macro expansion: + +

     #define add(x, y, z) x + y +z;
+     sum = add (1,2, 3);
+             ==> sum = 1 + 2 +3;
+
+

The interesting thing here is that the tokens 1 and 2 are +output with a preceding space, and 3 is output without a +preceding space, but when lexed none of these tokens had that property. +Careful consideration reveals that 1 gets its preceding +whitespace from the space preceding add in the macro invocation, +not replacement list. 2 gets its whitespace from the +space preceding the parameter y in the macro replacement list, +and 3 has no preceding space because parameter z has none +in the replacement list. + +

Once lexed, tokens are effectively fixed and cannot be altered, since +pointers to them might be held in many places, in particular by +in-progress macro expansions. So instead of modifying the two tokens +above, the preprocessor inserts a special token, which I call a +padding token, into the token stream to indicate that spacing of +the subsequent token is special. The preprocessor inserts padding +tokens in front of every macro expansion and expanded macro argument. +These point to a source token from which the subsequent real token +should inherit its spacing. In the above example, the source tokens are +add in the macro invocation, and y and z in the +macro replacement list, respectively. + +

It is quite easy to get multiple padding tokens in a row, for example if +a macro's first replacement token expands straight into another macro. + +

     #define foo bar
+     #define bar baz
+     [foo]
+             ==> [baz]
+
+

Here, two padding tokens are generated with sources the foo token +between the brackets, and the bar token from foo's replacement +list, respectively. Clearly the first padding token is the one to +use, so the output code should contain a rule that the first +padding token in a sequence is the one that matters. + +

But what if a macro expansion is left? Adjusting the above +example slightly: + +

     #define foo bar
+     #define bar EMPTY baz
+     #define EMPTY
+     [foo] EMPTY;
+             ==> [ baz] ;
+
+

As shown, now there should be a space before baz and the +semicolon in the output. + +

The rules we decided above fail for baz: we generate three +padding tokens, one per macro invocation, before the token baz. +We would then have it take its spacing from the first of these, which +carries source token foo with no leading space. + +

It is vital that cpplib get spacing correct in these examples since any +of these macro expansions could be stringified, where spacing matters. + +

So, this demonstrates that not just entering macro and argument +expansions, but leaving them requires special handling too. I made +cpplib insert a padding token with a NULL source token when +leaving macro expansions, as well as after each replaced argument in a +macro's replacement list. It also inserts appropriate padding tokens on +either side of tokens created by the # and ## operators. +I expanded the rule so that, if we see a padding token with a +NULL source token, and that source token has no leading +space, then we behave as if we have seen no padding tokens at all. A +quick check shows this rule will then get the above example correct as +well. + +

Now a relationship with paste avoidance is apparent: we have to be +careful about paste avoidance in exactly the same locations we have +padding tokens in order to get white space correct. This makes +implementation of paste avoidance easy: wherever the stand-alone +preprocessor is fixing up spacing because of padding tokens, and it +turns out that no space is needed, it has to take the extra step to +check that a space is not needed after all to avoid an accidental paste. +The function cpp_avoid_paste advises whether a space is required +between two consecutive tokens. To avoid excessive spacing, it tries +hard to only require a space if one is likely to be necessary, but for +reasons of efficiency it is slightly conservative and might recommend a +space where one is not strictly needed. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/index.html new file mode 100644 index 0000000..29332eb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/cppinternals/index.html @@ -0,0 +1,101 @@ + + +The GNU C Preprocessor Internals + + + + + + + + + +

The GNU C Preprocessor Internals

+ + + + +
+

+Next: , +Up: (dir) +



+
+ +

The GNU C Preprocessor Internals

+ +

1 Cpplib—the GNU C Preprocessor

+ +

The GNU C preprocessor is +implemented as a library, cpplib, so it can be easily shared between +a stand-alone preprocessor, and a preprocessor integrated with the C, +C++ and Objective-C front ends. It is also available for use by other +programs, though this is not recommended as its exposed interface has +not yet reached a point of reasonable stability. + +

The library has been written to be re-entrant, so that it can be used +to preprocess many files simultaneously if necessary. It has also been +written with the preprocessing token as the fundamental unit; the +preprocessor in previous versions of GCC would operate on text strings +as the fundamental unit. + +

This brief manual documents the internals of cpplib, and explains some +of the tricky issues. It is intended that, along with the comments in +the source code, a reasonably competent C programmer should be able to +figure out what the code is doing, and why things have been implemented +the way they have. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARC-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARC-Options.html new file mode 100644 index 0000000..c7d61fe --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARC-Options.html @@ -0,0 +1,82 @@ + + +ARC Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Up: Submodel Options +



+
+ +

3.17.1 ARC Options

+ +

+These options are defined for ARC implementations: + +

+
-EL
Compile code for little endian mode. This is the default. + +
-EB
Compile code for big endian mode. + +
-mmangle-cpu
Prepend the name of the cpu to all public symbol names. +In multiple-processor systems, there are many ARC variants with different +instruction and register set characteristics. This flag prevents code +compiled for one cpu to be linked with code compiled for another. +No facility exists for handling variants that are “almost identical”. +This is an all or nothing option. + +
-mcpu=cpu
Compile code for ARC variant cpu. +Which variants are supported depend on the configuration. +All variants support -mcpu=base, this is the default. + +
-mtext=text-section
-mdata=data-section
-mrodata=readonly-data-section
Put functions, data, and readonly data in text-section, +data-section, and readonly-data-section respectively +by default. This can be overridden with the section attribute. +See Variable Attributes. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-NEON-Intrinsics.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-NEON-Intrinsics.html new file mode 100644 index 0000000..5ed3c37 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-NEON-Intrinsics.html @@ -0,0 +1,9321 @@ + + +ARM NEON Intrinsics - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

5.50.3 ARM NEON Intrinsics

+ +

These built-in intrinsics for the ARM Advanced SIMD extension are available +when the -mfpu=neon switch is used: + + + + + + +

5.50.3.1 Addition
+ +
    +
  • uint32x2_t vadd_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vadd.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vadd_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vadd.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vadd_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vadd.i8 d0, d0, d0 +
+ +
    +
  • int32x2_t vadd_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vadd.i32 d0, d0, d0 +
+ +
    +
  • int16x4_t vadd_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vadd.i16 d0, d0, d0 +
+ +
    +
  • int8x8_t vadd_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vadd.i8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vadd_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vadd.i64 d0, d0, d0 +
+ +
    +
  • int64x1_t vadd_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vadd.i64 d0, d0, d0 +
+ +
    +
  • float32x2_t vadd_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vadd.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vaddq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vadd.i32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vaddq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vadd.i16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vaddq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vadd.i8 q0, q0, q0 +
+ +
    +
  • int32x4_t vaddq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vadd.i32 q0, q0, q0 +
+ +
    +
  • int16x8_t vaddq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vadd.i16 q0, q0, q0 +
+ +
    +
  • int8x16_t vaddq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vadd.i8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vaddq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vadd.i64 q0, q0, q0 +
+ +
    +
  • int64x2_t vaddq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vadd.i64 q0, q0, q0 +
+ +
    +
  • float32x4_t vaddq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vadd.f32 q0, q0, q0 +
+ +
    +
  • uint64x2_t vaddl_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vaddl.u32 q0, d0, d0 +
+ +
    +
  • uint32x4_t vaddl_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vaddl.u16 q0, d0, d0 +
+ +
    +
  • uint16x8_t vaddl_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vaddl.u8 q0, d0, d0 +
+ +
    +
  • int64x2_t vaddl_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vaddl.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vaddl_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vaddl.s16 q0, d0, d0 +
+ +
    +
  • int16x8_t vaddl_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vaddl.s8 q0, d0, d0 +
+ +
    +
  • uint64x2_t vaddw_u32 (uint64x2_t, uint32x2_t) +
    Form of expected instruction(s): vaddw.u32 q0, q0, d0 +
+ +
    +
  • uint32x4_t vaddw_u16 (uint32x4_t, uint16x4_t) +
    Form of expected instruction(s): vaddw.u16 q0, q0, d0 +
+ +
    +
  • uint16x8_t vaddw_u8 (uint16x8_t, uint8x8_t) +
    Form of expected instruction(s): vaddw.u8 q0, q0, d0 +
+ +
    +
  • int64x2_t vaddw_s32 (int64x2_t, int32x2_t) +
    Form of expected instruction(s): vaddw.s32 q0, q0, d0 +
+ +
    +
  • int32x4_t vaddw_s16 (int32x4_t, int16x4_t) +
    Form of expected instruction(s): vaddw.s16 q0, q0, d0 +
+ +
    +
  • int16x8_t vaddw_s8 (int16x8_t, int8x8_t) +
    Form of expected instruction(s): vaddw.s8 q0, q0, d0 +
+ +
    +
  • uint32x2_t vhadd_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vhadd.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vhadd_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vhadd.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vhadd_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vhadd.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vhadd_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vhadd.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vhadd_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vhadd.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vhadd_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vhadd.s8 d0, d0, d0 +
+ +
    +
  • uint32x4_t vhaddq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vhadd.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vhaddq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vhadd.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vhaddq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vhadd.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vhaddq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vhadd.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vhaddq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vhadd.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vhaddq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vhadd.s8 q0, q0, q0 +
+ +
    +
  • uint32x2_t vrhadd_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vrhadd.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vrhadd_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vrhadd.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vrhadd_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vrhadd.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vrhadd_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vrhadd.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vrhadd_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vrhadd.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vrhadd_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vrhadd.s8 d0, d0, d0 +
+ +
    +
  • uint32x4_t vrhaddq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vrhadd.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vrhaddq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vrhadd.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vrhaddq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vrhadd.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vrhaddq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vrhadd.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vrhaddq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vrhadd.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vrhaddq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vrhadd.s8 q0, q0, q0 +
+ +
    +
  • uint32x2_t vqadd_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vqadd.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vqadd_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vqadd.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vqadd_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vqadd.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vqadd_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqadd.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vqadd_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqadd.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vqadd_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vqadd.s8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vqadd_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vqadd.u64 d0, d0, d0 +
+ +
    +
  • int64x1_t vqadd_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vqadd.s64 d0, d0, d0 +
+ +
    +
  • uint32x4_t vqaddq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vqadd.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vqaddq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vqadd.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vqaddq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vqadd.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vqaddq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vqadd.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vqaddq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vqadd.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vqaddq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vqadd.s8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vqaddq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vqadd.u64 q0, q0, q0 +
+ +
    +
  • int64x2_t vqaddq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vqadd.s64 q0, q0, q0 +
+ +
    +
  • uint32x2_t vaddhn_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vaddhn.i64 d0, q0, q0 +
+ +
    +
  • uint16x4_t vaddhn_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vaddhn.i32 d0, q0, q0 +
+ +
    +
  • uint8x8_t vaddhn_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vaddhn.i16 d0, q0, q0 +
+ +
    +
  • int32x2_t vaddhn_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vaddhn.i64 d0, q0, q0 +
+ +
    +
  • int16x4_t vaddhn_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vaddhn.i32 d0, q0, q0 +
+ +
    +
  • int8x8_t vaddhn_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vaddhn.i16 d0, q0, q0 +
+ +
    +
  • uint32x2_t vraddhn_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vraddhn.i64 d0, q0, q0 +
+ +
    +
  • uint16x4_t vraddhn_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vraddhn.i32 d0, q0, q0 +
+ +
    +
  • uint8x8_t vraddhn_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vraddhn.i16 d0, q0, q0 +
+ +
    +
  • int32x2_t vraddhn_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vraddhn.i64 d0, q0, q0 +
+ +
    +
  • int16x4_t vraddhn_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vraddhn.i32 d0, q0, q0 +
+ +
    +
  • int8x8_t vraddhn_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vraddhn.i16 d0, q0, q0 +
+ +
5.50.3.2 Multiplication
+ +
    +
  • uint32x2_t vmul_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmul.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vmul_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmul.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vmul_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmul.i8 d0, d0, d0 +
+ +
    +
  • int32x2_t vmul_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmul.i32 d0, d0, d0 +
+ +
    +
  • int16x4_t vmul_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmul.i16 d0, d0, d0 +
+ +
    +
  • int8x8_t vmul_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmul.i8 d0, d0, d0 +
+ +
    +
  • float32x2_t vmul_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vmul.f32 d0, d0, d0 +
+ +
    +
  • poly8x8_t vmul_p8 (poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vmul.p8 d0, d0, d0 +
+ +
    +
  • uint32x4_t vmulq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vmul.i32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vmulq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vmul.i16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vmulq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vmul.i8 q0, q0, q0 +
+ +
    +
  • int32x4_t vmulq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vmul.i32 q0, q0, q0 +
+ +
    +
  • int16x8_t vmulq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vmul.i16 q0, q0, q0 +
+ +
    +
  • int8x16_t vmulq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vmul.i8 q0, q0, q0 +
+ +
    +
  • float32x4_t vmulq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vmul.f32 q0, q0, q0 +
+ +
    +
  • poly8x16_t vmulq_p8 (poly8x16_t, poly8x16_t) +
    Form of expected instruction(s): vmul.p8 q0, q0, q0 +
+ +
    +
  • int32x2_t vqdmulh_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqdmulh.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vqdmulh_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqdmulh.s16 d0, d0, d0 +
+ +
    +
  • int32x4_t vqdmulhq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vqdmulh.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vqdmulhq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vqdmulh.s16 q0, q0, q0 +
+ +
    +
  • int32x2_t vqrdmulh_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqrdmulh.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vqrdmulh_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqrdmulh.s16 d0, d0, d0 +
+ +
    +
  • int32x4_t vqrdmulhq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vqrdmulh.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vqrdmulhq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vqrdmulh.s16 q0, q0, q0 +
+ +
    +
  • uint64x2_t vmull_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmull.u32 q0, d0, d0 +
+ +
    +
  • uint32x4_t vmull_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmull.u16 q0, d0, d0 +
+ +
    +
  • uint16x8_t vmull_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmull.u8 q0, d0, d0 +
+ +
    +
  • int64x2_t vmull_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmull.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vmull_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmull.s16 q0, d0, d0 +
+ +
    +
  • int16x8_t vmull_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmull.s8 q0, d0, d0 +
+ +
    +
  • poly16x8_t vmull_p8 (poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vmull.p8 q0, d0, d0 +
+ +
    +
  • int64x2_t vqdmull_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqdmull.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vqdmull_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqdmull.s16 q0, d0, d0 +
+ +
5.50.3.3 Multiply-accumulate
+ +
    +
  • uint32x2_t vmla_u32 (uint32x2_t, uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmla.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vmla_u16 (uint16x4_t, uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmla.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vmla_u8 (uint8x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmla.i8 d0, d0, d0 +
+ +
    +
  • int32x2_t vmla_s32 (int32x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmla.i32 d0, d0, d0 +
+ +
    +
  • int16x4_t vmla_s16 (int16x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmla.i16 d0, d0, d0 +
+ +
    +
  • int8x8_t vmla_s8 (int8x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmla.i8 d0, d0, d0 +
+ +
    +
  • float32x2_t vmla_f32 (float32x2_t, float32x2_t, float32x2_t) +
    Form of expected instruction(s): vmla.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vmlaq_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vmla.i32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vmlaq_u16 (uint16x8_t, uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vmla.i16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vmlaq_u8 (uint8x16_t, uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vmla.i8 q0, q0, q0 +
+ +
    +
  • int32x4_t vmlaq_s32 (int32x4_t, int32x4_t, int32x4_t) +
    Form of expected instruction(s): vmla.i32 q0, q0, q0 +
+ +
    +
  • int16x8_t vmlaq_s16 (int16x8_t, int16x8_t, int16x8_t) +
    Form of expected instruction(s): vmla.i16 q0, q0, q0 +
+ +
    +
  • int8x16_t vmlaq_s8 (int8x16_t, int8x16_t, int8x16_t) +
    Form of expected instruction(s): vmla.i8 q0, q0, q0 +
+ +
    +
  • float32x4_t vmlaq_f32 (float32x4_t, float32x4_t, float32x4_t) +
    Form of expected instruction(s): vmla.f32 q0, q0, q0 +
+ +
    +
  • uint64x2_t vmlal_u32 (uint64x2_t, uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmlal.u32 q0, d0, d0 +
+ +
    +
  • uint32x4_t vmlal_u16 (uint32x4_t, uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmlal.u16 q0, d0, d0 +
+ +
    +
  • uint16x8_t vmlal_u8 (uint16x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmlal.u8 q0, d0, d0 +
+ +
    +
  • int64x2_t vmlal_s32 (int64x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmlal.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vmlal_s16 (int32x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmlal.s16 q0, d0, d0 +
+ +
    +
  • int16x8_t vmlal_s8 (int16x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmlal.s8 q0, d0, d0 +
+ +
    +
  • int64x2_t vqdmlal_s32 (int64x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqdmlal.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vqdmlal_s16 (int32x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqdmlal.s16 q0, d0, d0 +
+ +
5.50.3.4 Multiply-subtract
+ +
    +
  • uint32x2_t vmls_u32 (uint32x2_t, uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmls.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vmls_u16 (uint16x4_t, uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmls.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vmls_u8 (uint8x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmls.i8 d0, d0, d0 +
+ +
    +
  • int32x2_t vmls_s32 (int32x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmls.i32 d0, d0, d0 +
+ +
    +
  • int16x4_t vmls_s16 (int16x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmls.i16 d0, d0, d0 +
+ +
    +
  • int8x8_t vmls_s8 (int8x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmls.i8 d0, d0, d0 +
+ +
    +
  • float32x2_t vmls_f32 (float32x2_t, float32x2_t, float32x2_t) +
    Form of expected instruction(s): vmls.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vmlsq_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vmls.i32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vmlsq_u16 (uint16x8_t, uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vmls.i16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vmlsq_u8 (uint8x16_t, uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vmls.i8 q0, q0, q0 +
+ +
    +
  • int32x4_t vmlsq_s32 (int32x4_t, int32x4_t, int32x4_t) +
    Form of expected instruction(s): vmls.i32 q0, q0, q0 +
+ +
    +
  • int16x8_t vmlsq_s16 (int16x8_t, int16x8_t, int16x8_t) +
    Form of expected instruction(s): vmls.i16 q0, q0, q0 +
+ +
    +
  • int8x16_t vmlsq_s8 (int8x16_t, int8x16_t, int8x16_t) +
    Form of expected instruction(s): vmls.i8 q0, q0, q0 +
+ +
    +
  • float32x4_t vmlsq_f32 (float32x4_t, float32x4_t, float32x4_t) +
    Form of expected instruction(s): vmls.f32 q0, q0, q0 +
+ +
    +
  • uint64x2_t vmlsl_u32 (uint64x2_t, uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmlsl.u32 q0, d0, d0 +
+ +
    +
  • uint32x4_t vmlsl_u16 (uint32x4_t, uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmlsl.u16 q0, d0, d0 +
+ +
    +
  • uint16x8_t vmlsl_u8 (uint16x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmlsl.u8 q0, d0, d0 +
+ +
    +
  • int64x2_t vmlsl_s32 (int64x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmlsl.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vmlsl_s16 (int32x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmlsl.s16 q0, d0, d0 +
+ +
    +
  • int16x8_t vmlsl_s8 (int16x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmlsl.s8 q0, d0, d0 +
+ +
    +
  • int64x2_t vqdmlsl_s32 (int64x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqdmlsl.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vqdmlsl_s16 (int32x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqdmlsl.s16 q0, d0, d0 +
+ +
5.50.3.5 Subtraction
+ +
    +
  • uint32x2_t vsub_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vsub.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vsub_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vsub.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vsub_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vsub.i8 d0, d0, d0 +
+ +
    +
  • int32x2_t vsub_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vsub.i32 d0, d0, d0 +
+ +
    +
  • int16x4_t vsub_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vsub.i16 d0, d0, d0 +
+ +
    +
  • int8x8_t vsub_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vsub.i8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vsub_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vsub.i64 d0, d0, d0 +
+ +
    +
  • int64x1_t vsub_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vsub.i64 d0, d0, d0 +
+ +
    +
  • float32x2_t vsub_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vsub.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vsubq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vsub.i32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vsubq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vsub.i16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vsubq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vsub.i8 q0, q0, q0 +
+ +
    +
  • int32x4_t vsubq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vsub.i32 q0, q0, q0 +
+ +
    +
  • int16x8_t vsubq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vsub.i16 q0, q0, q0 +
+ +
    +
  • int8x16_t vsubq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vsub.i8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vsubq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vsub.i64 q0, q0, q0 +
+ +
    +
  • int64x2_t vsubq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vsub.i64 q0, q0, q0 +
+ +
    +
  • float32x4_t vsubq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vsub.f32 q0, q0, q0 +
+ +
    +
  • uint64x2_t vsubl_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vsubl.u32 q0, d0, d0 +
+ +
    +
  • uint32x4_t vsubl_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vsubl.u16 q0, d0, d0 +
+ +
    +
  • uint16x8_t vsubl_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vsubl.u8 q0, d0, d0 +
+ +
    +
  • int64x2_t vsubl_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vsubl.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vsubl_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vsubl.s16 q0, d0, d0 +
+ +
    +
  • int16x8_t vsubl_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vsubl.s8 q0, d0, d0 +
+ +
    +
  • uint64x2_t vsubw_u32 (uint64x2_t, uint32x2_t) +
    Form of expected instruction(s): vsubw.u32 q0, q0, d0 +
+ +
    +
  • uint32x4_t vsubw_u16 (uint32x4_t, uint16x4_t) +
    Form of expected instruction(s): vsubw.u16 q0, q0, d0 +
+ +
    +
  • uint16x8_t vsubw_u8 (uint16x8_t, uint8x8_t) +
    Form of expected instruction(s): vsubw.u8 q0, q0, d0 +
+ +
    +
  • int64x2_t vsubw_s32 (int64x2_t, int32x2_t) +
    Form of expected instruction(s): vsubw.s32 q0, q0, d0 +
+ +
    +
  • int32x4_t vsubw_s16 (int32x4_t, int16x4_t) +
    Form of expected instruction(s): vsubw.s16 q0, q0, d0 +
+ +
    +
  • int16x8_t vsubw_s8 (int16x8_t, int8x8_t) +
    Form of expected instruction(s): vsubw.s8 q0, q0, d0 +
+ +
    +
  • uint32x2_t vhsub_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vhsub.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vhsub_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vhsub.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vhsub_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vhsub.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vhsub_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vhsub.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vhsub_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vhsub.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vhsub_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vhsub.s8 d0, d0, d0 +
+ +
    +
  • uint32x4_t vhsubq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vhsub.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vhsubq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vhsub.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vhsubq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vhsub.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vhsubq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vhsub.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vhsubq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vhsub.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vhsubq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vhsub.s8 q0, q0, q0 +
+ +
    +
  • uint32x2_t vqsub_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vqsub.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vqsub_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vqsub.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vqsub_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vqsub.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vqsub_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqsub.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vqsub_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqsub.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vqsub_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vqsub.s8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vqsub_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vqsub.u64 d0, d0, d0 +
+ +
    +
  • int64x1_t vqsub_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vqsub.s64 d0, d0, d0 +
+ +
    +
  • uint32x4_t vqsubq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vqsub.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vqsubq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vqsub.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vqsubq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vqsub.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vqsubq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vqsub.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vqsubq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vqsub.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vqsubq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vqsub.s8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vqsubq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vqsub.u64 q0, q0, q0 +
+ +
    +
  • int64x2_t vqsubq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vqsub.s64 q0, q0, q0 +
+ +
    +
  • uint32x2_t vsubhn_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vsubhn.i64 d0, q0, q0 +
+ +
    +
  • uint16x4_t vsubhn_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vsubhn.i32 d0, q0, q0 +
+ +
    +
  • uint8x8_t vsubhn_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vsubhn.i16 d0, q0, q0 +
+ +
    +
  • int32x2_t vsubhn_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vsubhn.i64 d0, q0, q0 +
+ +
    +
  • int16x4_t vsubhn_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vsubhn.i32 d0, q0, q0 +
+ +
    +
  • int8x8_t vsubhn_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vsubhn.i16 d0, q0, q0 +
+ +
    +
  • uint32x2_t vrsubhn_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vrsubhn.i64 d0, q0, q0 +
+ +
    +
  • uint16x4_t vrsubhn_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vrsubhn.i32 d0, q0, q0 +
+ +
    +
  • uint8x8_t vrsubhn_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vrsubhn.i16 d0, q0, q0 +
+ +
    +
  • int32x2_t vrsubhn_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vrsubhn.i64 d0, q0, q0 +
+ +
    +
  • int16x4_t vrsubhn_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vrsubhn.i32 d0, q0, q0 +
+ +
    +
  • int8x8_t vrsubhn_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vrsubhn.i16 d0, q0, q0 +
+ +
5.50.3.6 Comparison (equal-to)
+ +
    +
  • uint32x2_t vceq_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vceq.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vceq_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vceq.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vceq_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vceq.i8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vceq_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vceq.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vceq_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vceq.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vceq_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vceq.i8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vceq_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vceq.f32 d0, d0, d0 +
+ +
    +
  • uint8x8_t vceq_p8 (poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vceq.i8 d0, d0, d0 +
+ +
    +
  • uint32x4_t vceqq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vceq.i32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vceqq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vceq.i16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vceqq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vceq.i8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vceqq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vceq.i32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vceqq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vceq.i16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vceqq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vceq.i8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vceqq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vceq.f32 q0, q0, q0 +
+ +
    +
  • uint8x16_t vceqq_p8 (poly8x16_t, poly8x16_t) +
    Form of expected instruction(s): vceq.i8 q0, q0, q0 +
+ +
5.50.3.7 Comparison (greater-than-or-equal-to)
+ +
    +
  • uint32x2_t vcge_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vcge.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vcge_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vcge.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vcge_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vcge.u8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vcge_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vcge.s32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vcge_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vcge.s16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vcge_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vcge.s8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vcge_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vcge.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcgeq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vcge.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcgeq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vcge.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcgeq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vcge.u8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcgeq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vcge.s32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcgeq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vcge.s16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcgeq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vcge.s8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcgeq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vcge.f32 q0, q0, q0 +
+ +
5.50.3.8 Comparison (less-than-or-equal-to)
+ +
    +
  • uint32x2_t vcle_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vcge.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vcle_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vcge.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vcle_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vcge.u8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vcle_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vcge.s32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vcle_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vcge.s16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vcle_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vcge.s8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vcle_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vcge.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcleq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vcge.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcleq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vcge.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcleq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vcge.u8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcleq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vcge.s32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcleq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vcge.s16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcleq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vcge.s8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcleq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vcge.f32 q0, q0, q0 +
+ +
5.50.3.9 Comparison (greater-than)
+ +
    +
  • uint32x2_t vcgt_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vcgt.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vcgt_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vcgt.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vcgt_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vcgt.u8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vcgt_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vcgt.s32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vcgt_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vcgt.s16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vcgt_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vcgt.s8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vcgt_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vcgt.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcgtq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vcgt.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcgtq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vcgt.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcgtq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vcgt.u8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcgtq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vcgt.s32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcgtq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vcgt.s16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcgtq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vcgt.s8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcgtq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vcgt.f32 q0, q0, q0 +
+ +
5.50.3.10 Comparison (less-than)
+ +
    +
  • uint32x2_t vclt_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vcgt.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vclt_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vcgt.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vclt_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vcgt.u8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vclt_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vcgt.s32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vclt_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vcgt.s16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vclt_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vcgt.s8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vclt_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vcgt.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcltq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vcgt.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcltq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vcgt.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcltq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vcgt.u8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcltq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vcgt.s32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vcltq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vcgt.s16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vcltq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vcgt.s8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vcltq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vcgt.f32 q0, q0, q0 +
+ +
5.50.3.11 Comparison (absolute greater-than-or-equal-to)
+ +
    +
  • uint32x2_t vcage_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vacge.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcageq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vacge.f32 q0, q0, q0 +
+ +
5.50.3.12 Comparison (absolute less-than-or-equal-to)
+ +
    +
  • uint32x2_t vcale_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vacge.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcaleq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vacge.f32 q0, q0, q0 +
+ +
5.50.3.13 Comparison (absolute greater-than)
+ +
    +
  • uint32x2_t vcagt_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vacgt.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcagtq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vacgt.f32 q0, q0, q0 +
+ +
5.50.3.14 Comparison (absolute less-than)
+ +
    +
  • uint32x2_t vcalt_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vacgt.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vcaltq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vacgt.f32 q0, q0, q0 +
+ +
5.50.3.15 Test bits
+ +
    +
  • uint32x2_t vtst_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vtst.32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vtst_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vtst.16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vtst_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vtst.8 d0, d0, d0 +
+ +
    +
  • uint32x2_t vtst_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vtst.32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vtst_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vtst.16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vtst_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vtst.8 d0, d0, d0 +
+ +
    +
  • uint8x8_t vtst_p8 (poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vtst.8 d0, d0, d0 +
+ +
    +
  • uint32x4_t vtstq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vtst.32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vtstq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vtst.16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vtstq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vtst.8 q0, q0, q0 +
+ +
    +
  • uint32x4_t vtstq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vtst.32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vtstq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vtst.16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vtstq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vtst.8 q0, q0, q0 +
+ +
    +
  • uint8x16_t vtstq_p8 (poly8x16_t, poly8x16_t) +
    Form of expected instruction(s): vtst.8 q0, q0, q0 +
+ +
5.50.3.16 Absolute difference
+ +
    +
  • uint32x2_t vabd_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vabd.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vabd_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vabd.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vabd_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vabd.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vabd_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vabd.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vabd_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vabd.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vabd_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vabd.s8 d0, d0, d0 +
+ +
    +
  • float32x2_t vabd_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vabd.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vabdq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vabd.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vabdq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vabd.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vabdq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vabd.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vabdq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vabd.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vabdq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vabd.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vabdq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vabd.s8 q0, q0, q0 +
+ +
    +
  • float32x4_t vabdq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vabd.f32 q0, q0, q0 +
+ +
    +
  • uint64x2_t vabdl_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vabdl.u32 q0, d0, d0 +
+ +
    +
  • uint32x4_t vabdl_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vabdl.u16 q0, d0, d0 +
+ +
    +
  • uint16x8_t vabdl_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vabdl.u8 q0, d0, d0 +
+ +
    +
  • int64x2_t vabdl_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vabdl.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vabdl_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vabdl.s16 q0, d0, d0 +
+ +
    +
  • int16x8_t vabdl_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vabdl.s8 q0, d0, d0 +
+ +
5.50.3.17 Absolute difference and accumulate
+ +
    +
  • uint32x2_t vaba_u32 (uint32x2_t, uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vaba.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vaba_u16 (uint16x4_t, uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vaba.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vaba_u8 (uint8x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vaba.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vaba_s32 (int32x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vaba.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vaba_s16 (int16x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vaba.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vaba_s8 (int8x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vaba.s8 d0, d0, d0 +
+ +
    +
  • uint32x4_t vabaq_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vaba.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vabaq_u16 (uint16x8_t, uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vaba.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vabaq_u8 (uint8x16_t, uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vaba.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vabaq_s32 (int32x4_t, int32x4_t, int32x4_t) +
    Form of expected instruction(s): vaba.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vabaq_s16 (int16x8_t, int16x8_t, int16x8_t) +
    Form of expected instruction(s): vaba.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vabaq_s8 (int8x16_t, int8x16_t, int8x16_t) +
    Form of expected instruction(s): vaba.s8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vabal_u32 (uint64x2_t, uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vabal.u32 q0, d0, d0 +
+ +
    +
  • uint32x4_t vabal_u16 (uint32x4_t, uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vabal.u16 q0, d0, d0 +
+ +
    +
  • uint16x8_t vabal_u8 (uint16x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vabal.u8 q0, d0, d0 +
+ +
    +
  • int64x2_t vabal_s32 (int64x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vabal.s32 q0, d0, d0 +
+ +
    +
  • int32x4_t vabal_s16 (int32x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vabal.s16 q0, d0, d0 +
+ +
    +
  • int16x8_t vabal_s8 (int16x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vabal.s8 q0, d0, d0 +
+ +
5.50.3.18 Maximum
+ +
    +
  • uint32x2_t vmax_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmax.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vmax_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmax.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vmax_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmax.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vmax_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmax.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vmax_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmax.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vmax_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmax.s8 d0, d0, d0 +
+ +
    +
  • float32x2_t vmax_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vmax.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vmaxq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vmax.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vmaxq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vmax.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vmaxq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vmax.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vmaxq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vmax.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vmaxq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vmax.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vmaxq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vmax.s8 q0, q0, q0 +
+ +
    +
  • float32x4_t vmaxq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vmax.f32 q0, q0, q0 +
+ +
5.50.3.19 Minimum
+ +
    +
  • uint32x2_t vmin_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vmin.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vmin_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vmin.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vmin_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vmin.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vmin_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vmin.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vmin_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vmin.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vmin_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vmin.s8 d0, d0, d0 +
+ +
    +
  • float32x2_t vmin_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vmin.f32 d0, d0, d0 +
+ +
    +
  • uint32x4_t vminq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vmin.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vminq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vmin.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vminq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vmin.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vminq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vmin.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vminq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vmin.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vminq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vmin.s8 q0, q0, q0 +
+ +
    +
  • float32x4_t vminq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vmin.f32 q0, q0, q0 +
+ +
5.50.3.20 Pairwise add
+ +
    +
  • uint32x2_t vpadd_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vpadd.i32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vpadd_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vpadd.i16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vpadd_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vpadd.i8 d0, d0, d0 +
+ +
    +
  • int32x2_t vpadd_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vpadd.i32 d0, d0, d0 +
+ +
    +
  • int16x4_t vpadd_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vpadd.i16 d0, d0, d0 +
+ +
    +
  • int8x8_t vpadd_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vpadd.i8 d0, d0, d0 +
+ +
    +
  • float32x2_t vpadd_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vpadd.f32 d0, d0, d0 +
+ +
    +
  • uint64x1_t vpaddl_u32 (uint32x2_t) +
    Form of expected instruction(s): vpaddl.u32 d0, d0 +
+ +
    +
  • uint32x2_t vpaddl_u16 (uint16x4_t) +
    Form of expected instruction(s): vpaddl.u16 d0, d0 +
+ +
    +
  • uint16x4_t vpaddl_u8 (uint8x8_t) +
    Form of expected instruction(s): vpaddl.u8 d0, d0 +
+ +
    +
  • int64x1_t vpaddl_s32 (int32x2_t) +
    Form of expected instruction(s): vpaddl.s32 d0, d0 +
+ +
    +
  • int32x2_t vpaddl_s16 (int16x4_t) +
    Form of expected instruction(s): vpaddl.s16 d0, d0 +
+ +
    +
  • int16x4_t vpaddl_s8 (int8x8_t) +
    Form of expected instruction(s): vpaddl.s8 d0, d0 +
+ +
    +
  • uint64x2_t vpaddlq_u32 (uint32x4_t) +
    Form of expected instruction(s): vpaddl.u32 q0, q0 +
+ +
    +
  • uint32x4_t vpaddlq_u16 (uint16x8_t) +
    Form of expected instruction(s): vpaddl.u16 q0, q0 +
+ +
    +
  • uint16x8_t vpaddlq_u8 (uint8x16_t) +
    Form of expected instruction(s): vpaddl.u8 q0, q0 +
+ +
    +
  • int64x2_t vpaddlq_s32 (int32x4_t) +
    Form of expected instruction(s): vpaddl.s32 q0, q0 +
+ +
    +
  • int32x4_t vpaddlq_s16 (int16x8_t) +
    Form of expected instruction(s): vpaddl.s16 q0, q0 +
+ +
    +
  • int16x8_t vpaddlq_s8 (int8x16_t) +
    Form of expected instruction(s): vpaddl.s8 q0, q0 +
+ +
5.50.3.21 Pairwise add, single_opcode widen and accumulate
+ +
    +
  • uint64x1_t vpadal_u32 (uint64x1_t, uint32x2_t) +
    Form of expected instruction(s): vpadal.u32 d0, d0 +
+ +
    +
  • uint32x2_t vpadal_u16 (uint32x2_t, uint16x4_t) +
    Form of expected instruction(s): vpadal.u16 d0, d0 +
+ +
    +
  • uint16x4_t vpadal_u8 (uint16x4_t, uint8x8_t) +
    Form of expected instruction(s): vpadal.u8 d0, d0 +
+ +
    +
  • int64x1_t vpadal_s32 (int64x1_t, int32x2_t) +
    Form of expected instruction(s): vpadal.s32 d0, d0 +
+ +
    +
  • int32x2_t vpadal_s16 (int32x2_t, int16x4_t) +
    Form of expected instruction(s): vpadal.s16 d0, d0 +
+ +
    +
  • int16x4_t vpadal_s8 (int16x4_t, int8x8_t) +
    Form of expected instruction(s): vpadal.s8 d0, d0 +
+ +
    +
  • uint64x2_t vpadalq_u32 (uint64x2_t, uint32x4_t) +
    Form of expected instruction(s): vpadal.u32 q0, q0 +
+ +
    +
  • uint32x4_t vpadalq_u16 (uint32x4_t, uint16x8_t) +
    Form of expected instruction(s): vpadal.u16 q0, q0 +
+ +
    +
  • uint16x8_t vpadalq_u8 (uint16x8_t, uint8x16_t) +
    Form of expected instruction(s): vpadal.u8 q0, q0 +
+ +
    +
  • int64x2_t vpadalq_s32 (int64x2_t, int32x4_t) +
    Form of expected instruction(s): vpadal.s32 q0, q0 +
+ +
    +
  • int32x4_t vpadalq_s16 (int32x4_t, int16x8_t) +
    Form of expected instruction(s): vpadal.s16 q0, q0 +
+ +
    +
  • int16x8_t vpadalq_s8 (int16x8_t, int8x16_t) +
    Form of expected instruction(s): vpadal.s8 q0, q0 +
+ +
5.50.3.22 Folding maximum
+ +
    +
  • uint32x2_t vpmax_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vpmax.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vpmax_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vpmax.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vpmax_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vpmax.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vpmax_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vpmax.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vpmax_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vpmax.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vpmax_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vpmax.s8 d0, d0, d0 +
+ +
    +
  • float32x2_t vpmax_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vpmax.f32 d0, d0, d0 +
+ +
5.50.3.23 Folding minimum
+ +
    +
  • uint32x2_t vpmin_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vpmin.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vpmin_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vpmin.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vpmin_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vpmin.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vpmin_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vpmin.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vpmin_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vpmin.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vpmin_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vpmin.s8 d0, d0, d0 +
+ +
    +
  • float32x2_t vpmin_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vpmin.f32 d0, d0, d0 +
+ +
5.50.3.24 Reciprocal step
+ +
    +
  • float32x2_t vrecps_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vrecps.f32 d0, d0, d0 +
+ +
    +
  • float32x4_t vrecpsq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vrecps.f32 q0, q0, q0 +
+ +
    +
  • float32x2_t vrsqrts_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vrsqrts.f32 d0, d0, d0 +
+ +
    +
  • float32x4_t vrsqrtsq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vrsqrts.f32 q0, q0, q0 +
+ +
5.50.3.25 Vector shift left
+ +
    +
  • uint32x2_t vshl_u32 (uint32x2_t, int32x2_t) +
    Form of expected instruction(s): vshl.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vshl_u16 (uint16x4_t, int16x4_t) +
    Form of expected instruction(s): vshl.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vshl_u8 (uint8x8_t, int8x8_t) +
    Form of expected instruction(s): vshl.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vshl_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vshl.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vshl_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vshl.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vshl_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vshl.s8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vshl_u64 (uint64x1_t, int64x1_t) +
    Form of expected instruction(s): vshl.u64 d0, d0, d0 +
+ +
    +
  • int64x1_t vshl_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vshl.s64 d0, d0, d0 +
+ +
    +
  • uint32x4_t vshlq_u32 (uint32x4_t, int32x4_t) +
    Form of expected instruction(s): vshl.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vshlq_u16 (uint16x8_t, int16x8_t) +
    Form of expected instruction(s): vshl.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vshlq_u8 (uint8x16_t, int8x16_t) +
    Form of expected instruction(s): vshl.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vshlq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vshl.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vshlq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vshl.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vshlq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vshl.s8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vshlq_u64 (uint64x2_t, int64x2_t) +
    Form of expected instruction(s): vshl.u64 q0, q0, q0 +
+ +
    +
  • int64x2_t vshlq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vshl.s64 q0, q0, q0 +
+ +
    +
  • uint32x2_t vrshl_u32 (uint32x2_t, int32x2_t) +
    Form of expected instruction(s): vrshl.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vrshl_u16 (uint16x4_t, int16x4_t) +
    Form of expected instruction(s): vrshl.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vrshl_u8 (uint8x8_t, int8x8_t) +
    Form of expected instruction(s): vrshl.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vrshl_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vrshl.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vrshl_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vrshl.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vrshl_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vrshl.s8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vrshl_u64 (uint64x1_t, int64x1_t) +
    Form of expected instruction(s): vrshl.u64 d0, d0, d0 +
+ +
    +
  • int64x1_t vrshl_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vrshl.s64 d0, d0, d0 +
+ +
    +
  • uint32x4_t vrshlq_u32 (uint32x4_t, int32x4_t) +
    Form of expected instruction(s): vrshl.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vrshlq_u16 (uint16x8_t, int16x8_t) +
    Form of expected instruction(s): vrshl.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vrshlq_u8 (uint8x16_t, int8x16_t) +
    Form of expected instruction(s): vrshl.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vrshlq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vrshl.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vrshlq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vrshl.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vrshlq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vrshl.s8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vrshlq_u64 (uint64x2_t, int64x2_t) +
    Form of expected instruction(s): vrshl.u64 q0, q0, q0 +
+ +
    +
  • int64x2_t vrshlq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vrshl.s64 q0, q0, q0 +
+ +
    +
  • uint32x2_t vqshl_u32 (uint32x2_t, int32x2_t) +
    Form of expected instruction(s): vqshl.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vqshl_u16 (uint16x4_t, int16x4_t) +
    Form of expected instruction(s): vqshl.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vqshl_u8 (uint8x8_t, int8x8_t) +
    Form of expected instruction(s): vqshl.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vqshl_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqshl.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vqshl_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqshl.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vqshl_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vqshl.s8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vqshl_u64 (uint64x1_t, int64x1_t) +
    Form of expected instruction(s): vqshl.u64 d0, d0, d0 +
+ +
    +
  • int64x1_t vqshl_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vqshl.s64 d0, d0, d0 +
+ +
    +
  • uint32x4_t vqshlq_u32 (uint32x4_t, int32x4_t) +
    Form of expected instruction(s): vqshl.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vqshlq_u16 (uint16x8_t, int16x8_t) +
    Form of expected instruction(s): vqshl.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vqshlq_u8 (uint8x16_t, int8x16_t) +
    Form of expected instruction(s): vqshl.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vqshlq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vqshl.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vqshlq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vqshl.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vqshlq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vqshl.s8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vqshlq_u64 (uint64x2_t, int64x2_t) +
    Form of expected instruction(s): vqshl.u64 q0, q0, q0 +
+ +
    +
  • int64x2_t vqshlq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vqshl.s64 q0, q0, q0 +
+ +
    +
  • uint32x2_t vqrshl_u32 (uint32x2_t, int32x2_t) +
    Form of expected instruction(s): vqrshl.u32 d0, d0, d0 +
+ +
    +
  • uint16x4_t vqrshl_u16 (uint16x4_t, int16x4_t) +
    Form of expected instruction(s): vqrshl.u16 d0, d0, d0 +
+ +
    +
  • uint8x8_t vqrshl_u8 (uint8x8_t, int8x8_t) +
    Form of expected instruction(s): vqrshl.u8 d0, d0, d0 +
+ +
    +
  • int32x2_t vqrshl_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vqrshl.s32 d0, d0, d0 +
+ +
    +
  • int16x4_t vqrshl_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vqrshl.s16 d0, d0, d0 +
+ +
    +
  • int8x8_t vqrshl_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vqrshl.s8 d0, d0, d0 +
+ +
    +
  • uint64x1_t vqrshl_u64 (uint64x1_t, int64x1_t) +
    Form of expected instruction(s): vqrshl.u64 d0, d0, d0 +
+ +
    +
  • int64x1_t vqrshl_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vqrshl.s64 d0, d0, d0 +
+ +
    +
  • uint32x4_t vqrshlq_u32 (uint32x4_t, int32x4_t) +
    Form of expected instruction(s): vqrshl.u32 q0, q0, q0 +
+ +
    +
  • uint16x8_t vqrshlq_u16 (uint16x8_t, int16x8_t) +
    Form of expected instruction(s): vqrshl.u16 q0, q0, q0 +
+ +
    +
  • uint8x16_t vqrshlq_u8 (uint8x16_t, int8x16_t) +
    Form of expected instruction(s): vqrshl.u8 q0, q0, q0 +
+ +
    +
  • int32x4_t vqrshlq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vqrshl.s32 q0, q0, q0 +
+ +
    +
  • int16x8_t vqrshlq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vqrshl.s16 q0, q0, q0 +
+ +
    +
  • int8x16_t vqrshlq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vqrshl.s8 q0, q0, q0 +
+ +
    +
  • uint64x2_t vqrshlq_u64 (uint64x2_t, int64x2_t) +
    Form of expected instruction(s): vqrshl.u64 q0, q0, q0 +
+ +
    +
  • int64x2_t vqrshlq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vqrshl.s64 q0, q0, q0 +
+ +
5.50.3.26 Vector shift left by constant
+ +
    +
  • uint32x2_t vshl_n_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vshl.i32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vshl_n_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vshl.i16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vshl_n_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vshl.i8 d0, d0, #0 +
+ +
    +
  • int32x2_t vshl_n_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vshl.i32 d0, d0, #0 +
+ +
    +
  • int16x4_t vshl_n_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vshl.i16 d0, d0, #0 +
+ +
    +
  • int8x8_t vshl_n_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vshl.i8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vshl_n_u64 (uint64x1_t, const int) +
    Form of expected instruction(s): vshl.i64 d0, d0, #0 +
+ +
    +
  • int64x1_t vshl_n_s64 (int64x1_t, const int) +
    Form of expected instruction(s): vshl.i64 d0, d0, #0 +
+ +
    +
  • uint32x4_t vshlq_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vshl.i32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vshlq_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vshl.i16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vshlq_n_u8 (uint8x16_t, const int) +
    Form of expected instruction(s): vshl.i8 q0, q0, #0 +
+ +
    +
  • int32x4_t vshlq_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vshl.i32 q0, q0, #0 +
+ +
    +
  • int16x8_t vshlq_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vshl.i16 q0, q0, #0 +
+ +
    +
  • int8x16_t vshlq_n_s8 (int8x16_t, const int) +
    Form of expected instruction(s): vshl.i8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vshlq_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vshl.i64 q0, q0, #0 +
+ +
    +
  • int64x2_t vshlq_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vshl.i64 q0, q0, #0 +
+ +
    +
  • uint32x2_t vqshl_n_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vqshl.u32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vqshl_n_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vqshl.u16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vqshl_n_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vqshl.u8 d0, d0, #0 +
+ +
    +
  • int32x2_t vqshl_n_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vqshl.s32 d0, d0, #0 +
+ +
    +
  • int16x4_t vqshl_n_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vqshl.s16 d0, d0, #0 +
+ +
    +
  • int8x8_t vqshl_n_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vqshl.s8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vqshl_n_u64 (uint64x1_t, const int) +
    Form of expected instruction(s): vqshl.u64 d0, d0, #0 +
+ +
    +
  • int64x1_t vqshl_n_s64 (int64x1_t, const int) +
    Form of expected instruction(s): vqshl.s64 d0, d0, #0 +
+ +
    +
  • uint32x4_t vqshlq_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vqshl.u32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vqshlq_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vqshl.u16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vqshlq_n_u8 (uint8x16_t, const int) +
    Form of expected instruction(s): vqshl.u8 q0, q0, #0 +
+ +
    +
  • int32x4_t vqshlq_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vqshl.s32 q0, q0, #0 +
+ +
    +
  • int16x8_t vqshlq_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vqshl.s16 q0, q0, #0 +
+ +
    +
  • int8x16_t vqshlq_n_s8 (int8x16_t, const int) +
    Form of expected instruction(s): vqshl.s8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vqshlq_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vqshl.u64 q0, q0, #0 +
+ +
    +
  • int64x2_t vqshlq_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vqshl.s64 q0, q0, #0 +
+ +
    +
  • uint64x1_t vqshlu_n_s64 (int64x1_t, const int) +
    Form of expected instruction(s): vqshlu.s64 d0, d0, #0 +
+ +
    +
  • uint32x2_t vqshlu_n_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vqshlu.s32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vqshlu_n_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vqshlu.s16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vqshlu_n_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vqshlu.s8 d0, d0, #0 +
+ +
    +
  • uint64x2_t vqshluq_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vqshlu.s64 q0, q0, #0 +
+ +
    +
  • uint32x4_t vqshluq_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vqshlu.s32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vqshluq_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vqshlu.s16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vqshluq_n_s8 (int8x16_t, const int) +
    Form of expected instruction(s): vqshlu.s8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vshll_n_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vshll.u32 q0, d0, #0 +
+ +
    +
  • uint32x4_t vshll_n_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vshll.u16 q0, d0, #0 +
+ +
    +
  • uint16x8_t vshll_n_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vshll.u8 q0, d0, #0 +
+ +
    +
  • int64x2_t vshll_n_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vshll.s32 q0, d0, #0 +
+ +
    +
  • int32x4_t vshll_n_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vshll.s16 q0, d0, #0 +
+ +
    +
  • int16x8_t vshll_n_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vshll.s8 q0, d0, #0 +
+ +
5.50.3.27 Vector shift right by constant
+ +
    +
  • uint32x2_t vshr_n_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vshr.u32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vshr_n_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vshr.u16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vshr_n_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vshr.u8 d0, d0, #0 +
+ +
    +
  • int32x2_t vshr_n_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vshr.s32 d0, d0, #0 +
+ +
    +
  • int16x4_t vshr_n_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vshr.s16 d0, d0, #0 +
+ +
    +
  • int8x8_t vshr_n_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vshr.s8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vshr_n_u64 (uint64x1_t, const int) +
    Form of expected instruction(s): vshr.u64 d0, d0, #0 +
+ +
    +
  • int64x1_t vshr_n_s64 (int64x1_t, const int) +
    Form of expected instruction(s): vshr.s64 d0, d0, #0 +
+ +
    +
  • uint32x4_t vshrq_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vshr.u32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vshrq_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vshr.u16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vshrq_n_u8 (uint8x16_t, const int) +
    Form of expected instruction(s): vshr.u8 q0, q0, #0 +
+ +
    +
  • int32x4_t vshrq_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vshr.s32 q0, q0, #0 +
+ +
    +
  • int16x8_t vshrq_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vshr.s16 q0, q0, #0 +
+ +
    +
  • int8x16_t vshrq_n_s8 (int8x16_t, const int) +
    Form of expected instruction(s): vshr.s8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vshrq_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vshr.u64 q0, q0, #0 +
+ +
    +
  • int64x2_t vshrq_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vshr.s64 q0, q0, #0 +
+ +
    +
  • uint32x2_t vrshr_n_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vrshr.u32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vrshr_n_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vrshr.u16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vrshr_n_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vrshr.u8 d0, d0, #0 +
+ +
    +
  • int32x2_t vrshr_n_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vrshr.s32 d0, d0, #0 +
+ +
    +
  • int16x4_t vrshr_n_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vrshr.s16 d0, d0, #0 +
+ +
    +
  • int8x8_t vrshr_n_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vrshr.s8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vrshr_n_u64 (uint64x1_t, const int) +
    Form of expected instruction(s): vrshr.u64 d0, d0, #0 +
+ +
    +
  • int64x1_t vrshr_n_s64 (int64x1_t, const int) +
    Form of expected instruction(s): vrshr.s64 d0, d0, #0 +
+ +
    +
  • uint32x4_t vrshrq_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vrshr.u32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vrshrq_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vrshr.u16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vrshrq_n_u8 (uint8x16_t, const int) +
    Form of expected instruction(s): vrshr.u8 q0, q0, #0 +
+ +
    +
  • int32x4_t vrshrq_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vrshr.s32 q0, q0, #0 +
+ +
    +
  • int16x8_t vrshrq_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vrshr.s16 q0, q0, #0 +
+ +
    +
  • int8x16_t vrshrq_n_s8 (int8x16_t, const int) +
    Form of expected instruction(s): vrshr.s8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vrshrq_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vrshr.u64 q0, q0, #0 +
+ +
    +
  • int64x2_t vrshrq_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vrshr.s64 q0, q0, #0 +
+ +
    +
  • uint32x2_t vshrn_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vshrn.i64 d0, q0, #0 +
+ +
    +
  • uint16x4_t vshrn_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vshrn.i32 d0, q0, #0 +
+ +
    +
  • uint8x8_t vshrn_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vshrn.i16 d0, q0, #0 +
+ +
    +
  • int32x2_t vshrn_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vshrn.i64 d0, q0, #0 +
+ +
    +
  • int16x4_t vshrn_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vshrn.i32 d0, q0, #0 +
+ +
    +
  • int8x8_t vshrn_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vshrn.i16 d0, q0, #0 +
+ +
    +
  • uint32x2_t vrshrn_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vrshrn.i64 d0, q0, #0 +
+ +
    +
  • uint16x4_t vrshrn_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vrshrn.i32 d0, q0, #0 +
+ +
    +
  • uint8x8_t vrshrn_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vrshrn.i16 d0, q0, #0 +
+ +
    +
  • int32x2_t vrshrn_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vrshrn.i64 d0, q0, #0 +
+ +
    +
  • int16x4_t vrshrn_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vrshrn.i32 d0, q0, #0 +
+ +
    +
  • int8x8_t vrshrn_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vrshrn.i16 d0, q0, #0 +
+ +
    +
  • uint32x2_t vqshrn_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vqshrn.u64 d0, q0, #0 +
+ +
    +
  • uint16x4_t vqshrn_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vqshrn.u32 d0, q0, #0 +
+ +
    +
  • uint8x8_t vqshrn_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vqshrn.u16 d0, q0, #0 +
+ +
    +
  • int32x2_t vqshrn_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vqshrn.s64 d0, q0, #0 +
+ +
    +
  • int16x4_t vqshrn_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vqshrn.s32 d0, q0, #0 +
+ +
    +
  • int8x8_t vqshrn_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vqshrn.s16 d0, q0, #0 +
+ +
    +
  • uint32x2_t vqrshrn_n_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vqrshrn.u64 d0, q0, #0 +
+ +
    +
  • uint16x4_t vqrshrn_n_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vqrshrn.u32 d0, q0, #0 +
+ +
    +
  • uint8x8_t vqrshrn_n_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vqrshrn.u16 d0, q0, #0 +
+ +
    +
  • int32x2_t vqrshrn_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vqrshrn.s64 d0, q0, #0 +
+ +
    +
  • int16x4_t vqrshrn_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vqrshrn.s32 d0, q0, #0 +
+ +
    +
  • int8x8_t vqrshrn_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vqrshrn.s16 d0, q0, #0 +
+ +
    +
  • uint32x2_t vqshrun_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vqshrun.s64 d0, q0, #0 +
+ +
    +
  • uint16x4_t vqshrun_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vqshrun.s32 d0, q0, #0 +
+ +
    +
  • uint8x8_t vqshrun_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vqshrun.s16 d0, q0, #0 +
+ +
    +
  • uint32x2_t vqrshrun_n_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vqrshrun.s64 d0, q0, #0 +
+ +
    +
  • uint16x4_t vqrshrun_n_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vqrshrun.s32 d0, q0, #0 +
+ +
    +
  • uint8x8_t vqrshrun_n_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vqrshrun.s16 d0, q0, #0 +
+ +
5.50.3.28 Vector shift right by constant and accumulate
+ +
    +
  • uint32x2_t vsra_n_u32 (uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vsra.u32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vsra_n_u16 (uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vsra.u16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vsra_n_u8 (uint8x8_t, uint8x8_t, const int) +
    Form of expected instruction(s): vsra.u8 d0, d0, #0 +
+ +
    +
  • int32x2_t vsra_n_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vsra.s32 d0, d0, #0 +
+ +
    +
  • int16x4_t vsra_n_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vsra.s16 d0, d0, #0 +
+ +
    +
  • int8x8_t vsra_n_s8 (int8x8_t, int8x8_t, const int) +
    Form of expected instruction(s): vsra.s8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vsra_n_u64 (uint64x1_t, uint64x1_t, const int) +
    Form of expected instruction(s): vsra.u64 d0, d0, #0 +
+ +
    +
  • int64x1_t vsra_n_s64 (int64x1_t, int64x1_t, const int) +
    Form of expected instruction(s): vsra.s64 d0, d0, #0 +
+ +
    +
  • uint32x4_t vsraq_n_u32 (uint32x4_t, uint32x4_t, const int) +
    Form of expected instruction(s): vsra.u32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vsraq_n_u16 (uint16x8_t, uint16x8_t, const int) +
    Form of expected instruction(s): vsra.u16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vsraq_n_u8 (uint8x16_t, uint8x16_t, const int) +
    Form of expected instruction(s): vsra.u8 q0, q0, #0 +
+ +
    +
  • int32x4_t vsraq_n_s32 (int32x4_t, int32x4_t, const int) +
    Form of expected instruction(s): vsra.s32 q0, q0, #0 +
+ +
    +
  • int16x8_t vsraq_n_s16 (int16x8_t, int16x8_t, const int) +
    Form of expected instruction(s): vsra.s16 q0, q0, #0 +
+ +
    +
  • int8x16_t vsraq_n_s8 (int8x16_t, int8x16_t, const int) +
    Form of expected instruction(s): vsra.s8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vsraq_n_u64 (uint64x2_t, uint64x2_t, const int) +
    Form of expected instruction(s): vsra.u64 q0, q0, #0 +
+ +
    +
  • int64x2_t vsraq_n_s64 (int64x2_t, int64x2_t, const int) +
    Form of expected instruction(s): vsra.s64 q0, q0, #0 +
+ +
    +
  • uint32x2_t vrsra_n_u32 (uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vrsra.u32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vrsra_n_u16 (uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vrsra.u16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vrsra_n_u8 (uint8x8_t, uint8x8_t, const int) +
    Form of expected instruction(s): vrsra.u8 d0, d0, #0 +
+ +
    +
  • int32x2_t vrsra_n_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vrsra.s32 d0, d0, #0 +
+ +
    +
  • int16x4_t vrsra_n_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vrsra.s16 d0, d0, #0 +
+ +
    +
  • int8x8_t vrsra_n_s8 (int8x8_t, int8x8_t, const int) +
    Form of expected instruction(s): vrsra.s8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vrsra_n_u64 (uint64x1_t, uint64x1_t, const int) +
    Form of expected instruction(s): vrsra.u64 d0, d0, #0 +
+ +
    +
  • int64x1_t vrsra_n_s64 (int64x1_t, int64x1_t, const int) +
    Form of expected instruction(s): vrsra.s64 d0, d0, #0 +
+ +
    +
  • uint32x4_t vrsraq_n_u32 (uint32x4_t, uint32x4_t, const int) +
    Form of expected instruction(s): vrsra.u32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vrsraq_n_u16 (uint16x8_t, uint16x8_t, const int) +
    Form of expected instruction(s): vrsra.u16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vrsraq_n_u8 (uint8x16_t, uint8x16_t, const int) +
    Form of expected instruction(s): vrsra.u8 q0, q0, #0 +
+ +
    +
  • int32x4_t vrsraq_n_s32 (int32x4_t, int32x4_t, const int) +
    Form of expected instruction(s): vrsra.s32 q0, q0, #0 +
+ +
    +
  • int16x8_t vrsraq_n_s16 (int16x8_t, int16x8_t, const int) +
    Form of expected instruction(s): vrsra.s16 q0, q0, #0 +
+ +
    +
  • int8x16_t vrsraq_n_s8 (int8x16_t, int8x16_t, const int) +
    Form of expected instruction(s): vrsra.s8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vrsraq_n_u64 (uint64x2_t, uint64x2_t, const int) +
    Form of expected instruction(s): vrsra.u64 q0, q0, #0 +
+ +
    +
  • int64x2_t vrsraq_n_s64 (int64x2_t, int64x2_t, const int) +
    Form of expected instruction(s): vrsra.s64 q0, q0, #0 +
+ +
5.50.3.29 Vector shift right and insert
+ +
    +
  • uint32x2_t vsri_n_u32 (uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vsri.32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vsri_n_u16 (uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vsri.16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vsri_n_u8 (uint8x8_t, uint8x8_t, const int) +
    Form of expected instruction(s): vsri.8 d0, d0, #0 +
+ +
    +
  • int32x2_t vsri_n_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vsri.32 d0, d0, #0 +
+ +
    +
  • int16x4_t vsri_n_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vsri.16 d0, d0, #0 +
+ +
    +
  • int8x8_t vsri_n_s8 (int8x8_t, int8x8_t, const int) +
    Form of expected instruction(s): vsri.8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vsri_n_u64 (uint64x1_t, uint64x1_t, const int) +
    Form of expected instruction(s): vsri.64 d0, d0, #0 +
+ +
    +
  • int64x1_t vsri_n_s64 (int64x1_t, int64x1_t, const int) +
    Form of expected instruction(s): vsri.64 d0, d0, #0 +
+ +
    +
  • poly16x4_t vsri_n_p16 (poly16x4_t, poly16x4_t, const int) +
    Form of expected instruction(s): vsri.16 d0, d0, #0 +
+ +
    +
  • poly8x8_t vsri_n_p8 (poly8x8_t, poly8x8_t, const int) +
    Form of expected instruction(s): vsri.8 d0, d0, #0 +
+ +
    +
  • uint32x4_t vsriq_n_u32 (uint32x4_t, uint32x4_t, const int) +
    Form of expected instruction(s): vsri.32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vsriq_n_u16 (uint16x8_t, uint16x8_t, const int) +
    Form of expected instruction(s): vsri.16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vsriq_n_u8 (uint8x16_t, uint8x16_t, const int) +
    Form of expected instruction(s): vsri.8 q0, q0, #0 +
+ +
    +
  • int32x4_t vsriq_n_s32 (int32x4_t, int32x4_t, const int) +
    Form of expected instruction(s): vsri.32 q0, q0, #0 +
+ +
    +
  • int16x8_t vsriq_n_s16 (int16x8_t, int16x8_t, const int) +
    Form of expected instruction(s): vsri.16 q0, q0, #0 +
+ +
    +
  • int8x16_t vsriq_n_s8 (int8x16_t, int8x16_t, const int) +
    Form of expected instruction(s): vsri.8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vsriq_n_u64 (uint64x2_t, uint64x2_t, const int) +
    Form of expected instruction(s): vsri.64 q0, q0, #0 +
+ +
    +
  • int64x2_t vsriq_n_s64 (int64x2_t, int64x2_t, const int) +
    Form of expected instruction(s): vsri.64 q0, q0, #0 +
+ +
    +
  • poly16x8_t vsriq_n_p16 (poly16x8_t, poly16x8_t, const int) +
    Form of expected instruction(s): vsri.16 q0, q0, #0 +
+ +
    +
  • poly8x16_t vsriq_n_p8 (poly8x16_t, poly8x16_t, const int) +
    Form of expected instruction(s): vsri.8 q0, q0, #0 +
+ +
5.50.3.30 Vector shift left and insert
+ +
    +
  • uint32x2_t vsli_n_u32 (uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vsli.32 d0, d0, #0 +
+ +
    +
  • uint16x4_t vsli_n_u16 (uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vsli.16 d0, d0, #0 +
+ +
    +
  • uint8x8_t vsli_n_u8 (uint8x8_t, uint8x8_t, const int) +
    Form of expected instruction(s): vsli.8 d0, d0, #0 +
+ +
    +
  • int32x2_t vsli_n_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vsli.32 d0, d0, #0 +
+ +
    +
  • int16x4_t vsli_n_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vsli.16 d0, d0, #0 +
+ +
    +
  • int8x8_t vsli_n_s8 (int8x8_t, int8x8_t, const int) +
    Form of expected instruction(s): vsli.8 d0, d0, #0 +
+ +
    +
  • uint64x1_t vsli_n_u64 (uint64x1_t, uint64x1_t, const int) +
    Form of expected instruction(s): vsli.64 d0, d0, #0 +
+ +
    +
  • int64x1_t vsli_n_s64 (int64x1_t, int64x1_t, const int) +
    Form of expected instruction(s): vsli.64 d0, d0, #0 +
+ +
    +
  • poly16x4_t vsli_n_p16 (poly16x4_t, poly16x4_t, const int) +
    Form of expected instruction(s): vsli.16 d0, d0, #0 +
+ +
    +
  • poly8x8_t vsli_n_p8 (poly8x8_t, poly8x8_t, const int) +
    Form of expected instruction(s): vsli.8 d0, d0, #0 +
+ +
    +
  • uint32x4_t vsliq_n_u32 (uint32x4_t, uint32x4_t, const int) +
    Form of expected instruction(s): vsli.32 q0, q0, #0 +
+ +
    +
  • uint16x8_t vsliq_n_u16 (uint16x8_t, uint16x8_t, const int) +
    Form of expected instruction(s): vsli.16 q0, q0, #0 +
+ +
    +
  • uint8x16_t vsliq_n_u8 (uint8x16_t, uint8x16_t, const int) +
    Form of expected instruction(s): vsli.8 q0, q0, #0 +
+ +
    +
  • int32x4_t vsliq_n_s32 (int32x4_t, int32x4_t, const int) +
    Form of expected instruction(s): vsli.32 q0, q0, #0 +
+ +
    +
  • int16x8_t vsliq_n_s16 (int16x8_t, int16x8_t, const int) +
    Form of expected instruction(s): vsli.16 q0, q0, #0 +
+ +
    +
  • int8x16_t vsliq_n_s8 (int8x16_t, int8x16_t, const int) +
    Form of expected instruction(s): vsli.8 q0, q0, #0 +
+ +
    +
  • uint64x2_t vsliq_n_u64 (uint64x2_t, uint64x2_t, const int) +
    Form of expected instruction(s): vsli.64 q0, q0, #0 +
+ +
    +
  • int64x2_t vsliq_n_s64 (int64x2_t, int64x2_t, const int) +
    Form of expected instruction(s): vsli.64 q0, q0, #0 +
+ +
    +
  • poly16x8_t vsliq_n_p16 (poly16x8_t, poly16x8_t, const int) +
    Form of expected instruction(s): vsli.16 q0, q0, #0 +
+ +
    +
  • poly8x16_t vsliq_n_p8 (poly8x16_t, poly8x16_t, const int) +
    Form of expected instruction(s): vsli.8 q0, q0, #0 +
+ +
5.50.3.31 Absolute value
+ +
    +
  • float32x2_t vabs_f32 (float32x2_t) +
    Form of expected instruction(s): vabs.f32 d0, d0 +
+ +
    +
  • int32x2_t vabs_s32 (int32x2_t) +
    Form of expected instruction(s): vabs.s32 d0, d0 +
+ +
    +
  • int16x4_t vabs_s16 (int16x4_t) +
    Form of expected instruction(s): vabs.s16 d0, d0 +
+ +
    +
  • int8x8_t vabs_s8 (int8x8_t) +
    Form of expected instruction(s): vabs.s8 d0, d0 +
+ +
    +
  • float32x4_t vabsq_f32 (float32x4_t) +
    Form of expected instruction(s): vabs.f32 q0, q0 +
+ +
    +
  • int32x4_t vabsq_s32 (int32x4_t) +
    Form of expected instruction(s): vabs.s32 q0, q0 +
+ +
    +
  • int16x8_t vabsq_s16 (int16x8_t) +
    Form of expected instruction(s): vabs.s16 q0, q0 +
+ +
    +
  • int8x16_t vabsq_s8 (int8x16_t) +
    Form of expected instruction(s): vabs.s8 q0, q0 +
+ +
    +
  • int32x2_t vqabs_s32 (int32x2_t) +
    Form of expected instruction(s): vqabs.s32 d0, d0 +
+ +
    +
  • int16x4_t vqabs_s16 (int16x4_t) +
    Form of expected instruction(s): vqabs.s16 d0, d0 +
+ +
    +
  • int8x8_t vqabs_s8 (int8x8_t) +
    Form of expected instruction(s): vqabs.s8 d0, d0 +
+ +
    +
  • int32x4_t vqabsq_s32 (int32x4_t) +
    Form of expected instruction(s): vqabs.s32 q0, q0 +
+ +
    +
  • int16x8_t vqabsq_s16 (int16x8_t) +
    Form of expected instruction(s): vqabs.s16 q0, q0 +
+ +
    +
  • int8x16_t vqabsq_s8 (int8x16_t) +
    Form of expected instruction(s): vqabs.s8 q0, q0 +
+ +
5.50.3.32 Negation
+ +
    +
  • float32x2_t vneg_f32 (float32x2_t) +
    Form of expected instruction(s): vneg.f32 d0, d0 +
+ +
    +
  • int32x2_t vneg_s32 (int32x2_t) +
    Form of expected instruction(s): vneg.s32 d0, d0 +
+ +
    +
  • int16x4_t vneg_s16 (int16x4_t) +
    Form of expected instruction(s): vneg.s16 d0, d0 +
+ +
    +
  • int8x8_t vneg_s8 (int8x8_t) +
    Form of expected instruction(s): vneg.s8 d0, d0 +
+ +
    +
  • float32x4_t vnegq_f32 (float32x4_t) +
    Form of expected instruction(s): vneg.f32 q0, q0 +
+ +
    +
  • int32x4_t vnegq_s32 (int32x4_t) +
    Form of expected instruction(s): vneg.s32 q0, q0 +
+ +
    +
  • int16x8_t vnegq_s16 (int16x8_t) +
    Form of expected instruction(s): vneg.s16 q0, q0 +
+ +
    +
  • int8x16_t vnegq_s8 (int8x16_t) +
    Form of expected instruction(s): vneg.s8 q0, q0 +
+ +
    +
  • int32x2_t vqneg_s32 (int32x2_t) +
    Form of expected instruction(s): vqneg.s32 d0, d0 +
+ +
    +
  • int16x4_t vqneg_s16 (int16x4_t) +
    Form of expected instruction(s): vqneg.s16 d0, d0 +
+ +
    +
  • int8x8_t vqneg_s8 (int8x8_t) +
    Form of expected instruction(s): vqneg.s8 d0, d0 +
+ +
    +
  • int32x4_t vqnegq_s32 (int32x4_t) +
    Form of expected instruction(s): vqneg.s32 q0, q0 +
+ +
    +
  • int16x8_t vqnegq_s16 (int16x8_t) +
    Form of expected instruction(s): vqneg.s16 q0, q0 +
+ +
    +
  • int8x16_t vqnegq_s8 (int8x16_t) +
    Form of expected instruction(s): vqneg.s8 q0, q0 +
+ +
5.50.3.33 Bitwise not
+ +
    +
  • uint32x2_t vmvn_u32 (uint32x2_t) +
    Form of expected instruction(s): vmvn d0, d0 +
+ +
    +
  • uint16x4_t vmvn_u16 (uint16x4_t) +
    Form of expected instruction(s): vmvn d0, d0 +
+ +
    +
  • uint8x8_t vmvn_u8 (uint8x8_t) +
    Form of expected instruction(s): vmvn d0, d0 +
+ +
    +
  • int32x2_t vmvn_s32 (int32x2_t) +
    Form of expected instruction(s): vmvn d0, d0 +
+ +
    +
  • int16x4_t vmvn_s16 (int16x4_t) +
    Form of expected instruction(s): vmvn d0, d0 +
+ +
    +
  • int8x8_t vmvn_s8 (int8x8_t) +
    Form of expected instruction(s): vmvn d0, d0 +
+ +
    +
  • poly8x8_t vmvn_p8 (poly8x8_t) +
    Form of expected instruction(s): vmvn d0, d0 +
+ +
    +
  • uint32x4_t vmvnq_u32 (uint32x4_t) +
    Form of expected instruction(s): vmvn q0, q0 +
+ +
    +
  • uint16x8_t vmvnq_u16 (uint16x8_t) +
    Form of expected instruction(s): vmvn q0, q0 +
+ +
    +
  • uint8x16_t vmvnq_u8 (uint8x16_t) +
    Form of expected instruction(s): vmvn q0, q0 +
+ +
    +
  • int32x4_t vmvnq_s32 (int32x4_t) +
    Form of expected instruction(s): vmvn q0, q0 +
+ +
    +
  • int16x8_t vmvnq_s16 (int16x8_t) +
    Form of expected instruction(s): vmvn q0, q0 +
+ +
    +
  • int8x16_t vmvnq_s8 (int8x16_t) +
    Form of expected instruction(s): vmvn q0, q0 +
+ +
    +
  • poly8x16_t vmvnq_p8 (poly8x16_t) +
    Form of expected instruction(s): vmvn q0, q0 +
+ +
5.50.3.34 Count leading sign bits
+ +
    +
  • int32x2_t vcls_s32 (int32x2_t) +
    Form of expected instruction(s): vcls.s32 d0, d0 +
+ +
    +
  • int16x4_t vcls_s16 (int16x4_t) +
    Form of expected instruction(s): vcls.s16 d0, d0 +
+ +
    +
  • int8x8_t vcls_s8 (int8x8_t) +
    Form of expected instruction(s): vcls.s8 d0, d0 +
+ +
    +
  • int32x4_t vclsq_s32 (int32x4_t) +
    Form of expected instruction(s): vcls.s32 q0, q0 +
+ +
    +
  • int16x8_t vclsq_s16 (int16x8_t) +
    Form of expected instruction(s): vcls.s16 q0, q0 +
+ +
    +
  • int8x16_t vclsq_s8 (int8x16_t) +
    Form of expected instruction(s): vcls.s8 q0, q0 +
+ +
5.50.3.35 Count leading zeros
+ +
    +
  • uint32x2_t vclz_u32 (uint32x2_t) +
    Form of expected instruction(s): vclz.i32 d0, d0 +
+ +
    +
  • uint16x4_t vclz_u16 (uint16x4_t) +
    Form of expected instruction(s): vclz.i16 d0, d0 +
+ +
    +
  • uint8x8_t vclz_u8 (uint8x8_t) +
    Form of expected instruction(s): vclz.i8 d0, d0 +
+ +
    +
  • int32x2_t vclz_s32 (int32x2_t) +
    Form of expected instruction(s): vclz.i32 d0, d0 +
+ +
    +
  • int16x4_t vclz_s16 (int16x4_t) +
    Form of expected instruction(s): vclz.i16 d0, d0 +
+ +
    +
  • int8x8_t vclz_s8 (int8x8_t) +
    Form of expected instruction(s): vclz.i8 d0, d0 +
+ +
    +
  • uint32x4_t vclzq_u32 (uint32x4_t) +
    Form of expected instruction(s): vclz.i32 q0, q0 +
+ +
    +
  • uint16x8_t vclzq_u16 (uint16x8_t) +
    Form of expected instruction(s): vclz.i16 q0, q0 +
+ +
    +
  • uint8x16_t vclzq_u8 (uint8x16_t) +
    Form of expected instruction(s): vclz.i8 q0, q0 +
+ +
    +
  • int32x4_t vclzq_s32 (int32x4_t) +
    Form of expected instruction(s): vclz.i32 q0, q0 +
+ +
    +
  • int16x8_t vclzq_s16 (int16x8_t) +
    Form of expected instruction(s): vclz.i16 q0, q0 +
+ +
    +
  • int8x16_t vclzq_s8 (int8x16_t) +
    Form of expected instruction(s): vclz.i8 q0, q0 +
+ +
5.50.3.36 Count number of set bits
+ +
    +
  • uint8x8_t vcnt_u8 (uint8x8_t) +
    Form of expected instruction(s): vcnt.8 d0, d0 +
+ +
    +
  • int8x8_t vcnt_s8 (int8x8_t) +
    Form of expected instruction(s): vcnt.8 d0, d0 +
+ +
    +
  • poly8x8_t vcnt_p8 (poly8x8_t) +
    Form of expected instruction(s): vcnt.8 d0, d0 +
+ +
    +
  • uint8x16_t vcntq_u8 (uint8x16_t) +
    Form of expected instruction(s): vcnt.8 q0, q0 +
+ +
    +
  • int8x16_t vcntq_s8 (int8x16_t) +
    Form of expected instruction(s): vcnt.8 q0, q0 +
+ +
    +
  • poly8x16_t vcntq_p8 (poly8x16_t) +
    Form of expected instruction(s): vcnt.8 q0, q0 +
+ +
5.50.3.37 Reciprocal estimate
+ +
    +
  • float32x2_t vrecpe_f32 (float32x2_t) +
    Form of expected instruction(s): vrecpe.f32 d0, d0 +
+ +
    +
  • uint32x2_t vrecpe_u32 (uint32x2_t) +
    Form of expected instruction(s): vrecpe.u32 d0, d0 +
+ +
    +
  • float32x4_t vrecpeq_f32 (float32x4_t) +
    Form of expected instruction(s): vrecpe.f32 q0, q0 +
+ +
    +
  • uint32x4_t vrecpeq_u32 (uint32x4_t) +
    Form of expected instruction(s): vrecpe.u32 q0, q0 +
+ +
5.50.3.38 Reciprocal square-root estimate
+ +
    +
  • float32x2_t vrsqrte_f32 (float32x2_t) +
    Form of expected instruction(s): vrsqrte.f32 d0, d0 +
+ +
    +
  • uint32x2_t vrsqrte_u32 (uint32x2_t) +
    Form of expected instruction(s): vrsqrte.u32 d0, d0 +
+ +
    +
  • float32x4_t vrsqrteq_f32 (float32x4_t) +
    Form of expected instruction(s): vrsqrte.f32 q0, q0 +
+ +
    +
  • uint32x4_t vrsqrteq_u32 (uint32x4_t) +
    Form of expected instruction(s): vrsqrte.u32 q0, q0 +
+ +
5.50.3.39 Get lanes from a vector
+ +
    +
  • uint32_t vget_lane_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vmov.u32 r0, d0[0] +
+ +
    +
  • uint16_t vget_lane_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vmov.u16 r0, d0[0] +
+ +
    +
  • uint8_t vget_lane_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vmov.u8 r0, d0[0] +
+ +
    +
  • int32_t vget_lane_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vmov.s32 r0, d0[0] +
+ +
    +
  • int16_t vget_lane_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vmov.s16 r0, d0[0] +
+ +
    +
  • int8_t vget_lane_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vmov.s8 r0, d0[0] +
+ +
    +
  • float32_t vget_lane_f32 (float32x2_t, const int) +
    Form of expected instruction(s): vmov.f32 r0, d0[0] +
+ +
    +
  • poly16_t vget_lane_p16 (poly16x4_t, const int) +
    Form of expected instruction(s): vmov.u16 r0, d0[0] +
+ +
    +
  • poly8_t vget_lane_p8 (poly8x8_t, const int) +
    Form of expected instruction(s): vmov.u8 r0, d0[0] +
+ +
    +
  • uint64_t vget_lane_u64 (uint64x1_t, const int) +
    Form of expected instruction(s): vmov r0, r0, d0 +
+ +
    +
  • int64_t vget_lane_s64 (int64x1_t, const int) +
    Form of expected instruction(s): vmov r0, r0, d0 +
+ +
    +
  • uint32_t vgetq_lane_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vmov.u32 r0, d0[0] +
+ +
    +
  • uint16_t vgetq_lane_u16 (uint16x8_t, const int) +
    Form of expected instruction(s): vmov.u16 r0, d0[0] +
+ +
    +
  • uint8_t vgetq_lane_u8 (uint8x16_t, const int) +
    Form of expected instruction(s): vmov.u8 r0, d0[0] +
+ +
    +
  • int32_t vgetq_lane_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vmov.s32 r0, d0[0] +
+ +
    +
  • int16_t vgetq_lane_s16 (int16x8_t, const int) +
    Form of expected instruction(s): vmov.s16 r0, d0[0] +
+ +
    +
  • int8_t vgetq_lane_s8 (int8x16_t, const int) +
    Form of expected instruction(s): vmov.s8 r0, d0[0] +
+ +
    +
  • float32_t vgetq_lane_f32 (float32x4_t, const int) +
    Form of expected instruction(s): vmov.f32 r0, d0[0] +
+ +
    +
  • poly16_t vgetq_lane_p16 (poly16x8_t, const int) +
    Form of expected instruction(s): vmov.u16 r0, d0[0] +
+ +
    +
  • poly8_t vgetq_lane_p8 (poly8x16_t, const int) +
    Form of expected instruction(s): vmov.u8 r0, d0[0] +
+ +
    +
  • uint64_t vgetq_lane_u64 (uint64x2_t, const int) +
    Form of expected instruction(s): vmov r0, r0, d0 +
+ +
    +
  • int64_t vgetq_lane_s64 (int64x2_t, const int) +
    Form of expected instruction(s): vmov r0, r0, d0 +
+ +
5.50.3.40 Set lanes in a vector
+ +
    +
  • uint32x2_t vset_lane_u32 (uint32_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmov.32 d0[0], r0 +
+ +
    +
  • uint16x4_t vset_lane_u16 (uint16_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmov.16 d0[0], r0 +
+ +
    +
  • uint8x8_t vset_lane_u8 (uint8_t, uint8x8_t, const int) +
    Form of expected instruction(s): vmov.8 d0[0], r0 +
+ +
    +
  • int32x2_t vset_lane_s32 (int32_t, int32x2_t, const int) +
    Form of expected instruction(s): vmov.32 d0[0], r0 +
+ +
    +
  • int16x4_t vset_lane_s16 (int16_t, int16x4_t, const int) +
    Form of expected instruction(s): vmov.16 d0[0], r0 +
+ +
    +
  • int8x8_t vset_lane_s8 (int8_t, int8x8_t, const int) +
    Form of expected instruction(s): vmov.8 d0[0], r0 +
+ +
    +
  • float32x2_t vset_lane_f32 (float32_t, float32x2_t, const int) +
    Form of expected instruction(s): vmov.32 d0[0], r0 +
+ +
    +
  • poly16x4_t vset_lane_p16 (poly16_t, poly16x4_t, const int) +
    Form of expected instruction(s): vmov.16 d0[0], r0 +
+ +
    +
  • poly8x8_t vset_lane_p8 (poly8_t, poly8x8_t, const int) +
    Form of expected instruction(s): vmov.8 d0[0], r0 +
+ +
    +
  • uint64x1_t vset_lane_u64 (uint64_t, uint64x1_t, const int) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • int64x1_t vset_lane_s64 (int64_t, int64x1_t, const int) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • uint32x4_t vsetq_lane_u32 (uint32_t, uint32x4_t, const int) +
    Form of expected instruction(s): vmov.32 d0[0], r0 +
+ +
    +
  • uint16x8_t vsetq_lane_u16 (uint16_t, uint16x8_t, const int) +
    Form of expected instruction(s): vmov.16 d0[0], r0 +
+ +
    +
  • uint8x16_t vsetq_lane_u8 (uint8_t, uint8x16_t, const int) +
    Form of expected instruction(s): vmov.8 d0[0], r0 +
+ +
    +
  • int32x4_t vsetq_lane_s32 (int32_t, int32x4_t, const int) +
    Form of expected instruction(s): vmov.32 d0[0], r0 +
+ +
    +
  • int16x8_t vsetq_lane_s16 (int16_t, int16x8_t, const int) +
    Form of expected instruction(s): vmov.16 d0[0], r0 +
+ +
    +
  • int8x16_t vsetq_lane_s8 (int8_t, int8x16_t, const int) +
    Form of expected instruction(s): vmov.8 d0[0], r0 +
+ +
    +
  • float32x4_t vsetq_lane_f32 (float32_t, float32x4_t, const int) +
    Form of expected instruction(s): vmov.32 d0[0], r0 +
+ +
    +
  • poly16x8_t vsetq_lane_p16 (poly16_t, poly16x8_t, const int) +
    Form of expected instruction(s): vmov.16 d0[0], r0 +
+ +
    +
  • poly8x16_t vsetq_lane_p8 (poly8_t, poly8x16_t, const int) +
    Form of expected instruction(s): vmov.8 d0[0], r0 +
+ +
    +
  • uint64x2_t vsetq_lane_u64 (uint64_t, uint64x2_t, const int) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • int64x2_t vsetq_lane_s64 (int64_t, int64x2_t, const int) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
5.50.3.41 Create vector from literal bit pattern
+ +
    +
  • uint32x2_t vcreate_u32 (uint64_t) +
+ +
    +
  • uint16x4_t vcreate_u16 (uint64_t) +
+ +
    +
  • uint8x8_t vcreate_u8 (uint64_t) +
+ +
    +
  • int32x2_t vcreate_s32 (uint64_t) +
+ +
    +
  • int16x4_t vcreate_s16 (uint64_t) +
+ +
    +
  • int8x8_t vcreate_s8 (uint64_t) +
+ +
    +
  • uint64x1_t vcreate_u64 (uint64_t) +
+ +
    +
  • int64x1_t vcreate_s64 (uint64_t) +
+ +
    +
  • float32x2_t vcreate_f32 (uint64_t) +
+ +
    +
  • poly16x4_t vcreate_p16 (uint64_t) +
+ +
    +
  • poly8x8_t vcreate_p8 (uint64_t) +
+ +
5.50.3.42 Set all lanes to the same value
+ +
    +
  • uint32x2_t vdup_n_u32 (uint32_t) +
    Form of expected instruction(s): vdup.32 d0, r0 +
+ +
    +
  • uint16x4_t vdup_n_u16 (uint16_t) +
    Form of expected instruction(s): vdup.16 d0, r0 +
+ +
    +
  • uint8x8_t vdup_n_u8 (uint8_t) +
    Form of expected instruction(s): vdup.8 d0, r0 +
+ +
    +
  • int32x2_t vdup_n_s32 (int32_t) +
    Form of expected instruction(s): vdup.32 d0, r0 +
+ +
    +
  • int16x4_t vdup_n_s16 (int16_t) +
    Form of expected instruction(s): vdup.16 d0, r0 +
+ +
    +
  • int8x8_t vdup_n_s8 (int8_t) +
    Form of expected instruction(s): vdup.8 d0, r0 +
+ +
    +
  • float32x2_t vdup_n_f32 (float32_t) +
    Form of expected instruction(s): vdup.32 d0, r0 +
+ +
    +
  • poly16x4_t vdup_n_p16 (poly16_t) +
    Form of expected instruction(s): vdup.16 d0, r0 +
+ +
    +
  • poly8x8_t vdup_n_p8 (poly8_t) +
    Form of expected instruction(s): vdup.8 d0, r0 +
+ +
    +
  • uint64x1_t vdup_n_u64 (uint64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • int64x1_t vdup_n_s64 (int64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • uint32x4_t vdupq_n_u32 (uint32_t) +
    Form of expected instruction(s): vdup.32 q0, r0 +
+ +
    +
  • uint16x8_t vdupq_n_u16 (uint16_t) +
    Form of expected instruction(s): vdup.16 q0, r0 +
+ +
    +
  • uint8x16_t vdupq_n_u8 (uint8_t) +
    Form of expected instruction(s): vdup.8 q0, r0 +
+ +
    +
  • int32x4_t vdupq_n_s32 (int32_t) +
    Form of expected instruction(s): vdup.32 q0, r0 +
+ +
    +
  • int16x8_t vdupq_n_s16 (int16_t) +
    Form of expected instruction(s): vdup.16 q0, r0 +
+ +
    +
  • int8x16_t vdupq_n_s8 (int8_t) +
    Form of expected instruction(s): vdup.8 q0, r0 +
+ +
    +
  • float32x4_t vdupq_n_f32 (float32_t) +
    Form of expected instruction(s): vdup.32 q0, r0 +
+ +
    +
  • poly16x8_t vdupq_n_p16 (poly16_t) +
    Form of expected instruction(s): vdup.16 q0, r0 +
+ +
    +
  • poly8x16_t vdupq_n_p8 (poly8_t) +
    Form of expected instruction(s): vdup.8 q0, r0 +
+ +
    +
  • uint64x2_t vdupq_n_u64 (uint64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • int64x2_t vdupq_n_s64 (int64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • uint32x2_t vmov_n_u32 (uint32_t) +
    Form of expected instruction(s): vdup.32 d0, r0 +
+ +
    +
  • uint16x4_t vmov_n_u16 (uint16_t) +
    Form of expected instruction(s): vdup.16 d0, r0 +
+ +
    +
  • uint8x8_t vmov_n_u8 (uint8_t) +
    Form of expected instruction(s): vdup.8 d0, r0 +
+ +
    +
  • int32x2_t vmov_n_s32 (int32_t) +
    Form of expected instruction(s): vdup.32 d0, r0 +
+ +
    +
  • int16x4_t vmov_n_s16 (int16_t) +
    Form of expected instruction(s): vdup.16 d0, r0 +
+ +
    +
  • int8x8_t vmov_n_s8 (int8_t) +
    Form of expected instruction(s): vdup.8 d0, r0 +
+ +
    +
  • float32x2_t vmov_n_f32 (float32_t) +
    Form of expected instruction(s): vdup.32 d0, r0 +
+ +
    +
  • poly16x4_t vmov_n_p16 (poly16_t) +
    Form of expected instruction(s): vdup.16 d0, r0 +
+ +
    +
  • poly8x8_t vmov_n_p8 (poly8_t) +
    Form of expected instruction(s): vdup.8 d0, r0 +
+ +
    +
  • uint64x1_t vmov_n_u64 (uint64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • int64x1_t vmov_n_s64 (int64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • uint32x4_t vmovq_n_u32 (uint32_t) +
    Form of expected instruction(s): vdup.32 q0, r0 +
+ +
    +
  • uint16x8_t vmovq_n_u16 (uint16_t) +
    Form of expected instruction(s): vdup.16 q0, r0 +
+ +
    +
  • uint8x16_t vmovq_n_u8 (uint8_t) +
    Form of expected instruction(s): vdup.8 q0, r0 +
+ +
    +
  • int32x4_t vmovq_n_s32 (int32_t) +
    Form of expected instruction(s): vdup.32 q0, r0 +
+ +
    +
  • int16x8_t vmovq_n_s16 (int16_t) +
    Form of expected instruction(s): vdup.16 q0, r0 +
+ +
    +
  • int8x16_t vmovq_n_s8 (int8_t) +
    Form of expected instruction(s): vdup.8 q0, r0 +
+ +
    +
  • float32x4_t vmovq_n_f32 (float32_t) +
    Form of expected instruction(s): vdup.32 q0, r0 +
+ +
    +
  • poly16x8_t vmovq_n_p16 (poly16_t) +
    Form of expected instruction(s): vdup.16 q0, r0 +
+ +
    +
  • poly8x16_t vmovq_n_p8 (poly8_t) +
    Form of expected instruction(s): vdup.8 q0, r0 +
+ +
    +
  • uint64x2_t vmovq_n_u64 (uint64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • int64x2_t vmovq_n_s64 (int64_t) +
    Form of expected instruction(s): vmov d0, r0, r0 +
+ +
    +
  • uint32x2_t vdup_lane_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vdup.32 d0, d0[0] +
+ +
    +
  • uint16x4_t vdup_lane_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vdup.16 d0, d0[0] +
+ +
    +
  • uint8x8_t vdup_lane_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vdup.8 d0, d0[0] +
+ +
    +
  • int32x2_t vdup_lane_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vdup.32 d0, d0[0] +
+ +
    +
  • int16x4_t vdup_lane_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vdup.16 d0, d0[0] +
+ +
    +
  • int8x8_t vdup_lane_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vdup.8 d0, d0[0] +
+ +
    +
  • float32x2_t vdup_lane_f32 (float32x2_t, const int) +
    Form of expected instruction(s): vdup.32 d0, d0[0] +
+ +
    +
  • poly16x4_t vdup_lane_p16 (poly16x4_t, const int) +
    Form of expected instruction(s): vdup.16 d0, d0[0] +
+ +
    +
  • poly8x8_t vdup_lane_p8 (poly8x8_t, const int) +
    Form of expected instruction(s): vdup.8 d0, d0[0] +
+ +
    +
  • uint64x1_t vdup_lane_u64 (uint64x1_t, const int) +
+ +
    +
  • int64x1_t vdup_lane_s64 (int64x1_t, const int) +
+ +
    +
  • uint32x4_t vdupq_lane_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vdup.32 q0, d0[0] +
+ +
    +
  • uint16x8_t vdupq_lane_u16 (uint16x4_t, const int) +
    Form of expected instruction(s): vdup.16 q0, d0[0] +
+ +
    +
  • uint8x16_t vdupq_lane_u8 (uint8x8_t, const int) +
    Form of expected instruction(s): vdup.8 q0, d0[0] +
+ +
    +
  • int32x4_t vdupq_lane_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vdup.32 q0, d0[0] +
+ +
    +
  • int16x8_t vdupq_lane_s16 (int16x4_t, const int) +
    Form of expected instruction(s): vdup.16 q0, d0[0] +
+ +
    +
  • int8x16_t vdupq_lane_s8 (int8x8_t, const int) +
    Form of expected instruction(s): vdup.8 q0, d0[0] +
+ +
    +
  • float32x4_t vdupq_lane_f32 (float32x2_t, const int) +
    Form of expected instruction(s): vdup.32 q0, d0[0] +
+ +
    +
  • poly16x8_t vdupq_lane_p16 (poly16x4_t, const int) +
    Form of expected instruction(s): vdup.16 q0, d0[0] +
+ +
    +
  • poly8x16_t vdupq_lane_p8 (poly8x8_t, const int) +
    Form of expected instruction(s): vdup.8 q0, d0[0] +
+ +
    +
  • uint64x2_t vdupq_lane_u64 (uint64x1_t, const int) +
+ +
    +
  • int64x2_t vdupq_lane_s64 (int64x1_t, const int) +
+ +
5.50.3.43 Combining vectors
+ +
    +
  • uint32x4_t vcombine_u32 (uint32x2_t, uint32x2_t) +
+ +
    +
  • uint16x8_t vcombine_u16 (uint16x4_t, uint16x4_t) +
+ +
    +
  • uint8x16_t vcombine_u8 (uint8x8_t, uint8x8_t) +
+ +
    +
  • int32x4_t vcombine_s32 (int32x2_t, int32x2_t) +
+ +
    +
  • int16x8_t vcombine_s16 (int16x4_t, int16x4_t) +
+ +
    +
  • int8x16_t vcombine_s8 (int8x8_t, int8x8_t) +
+ +
    +
  • uint64x2_t vcombine_u64 (uint64x1_t, uint64x1_t) +
+ +
    +
  • int64x2_t vcombine_s64 (int64x1_t, int64x1_t) +
+ +
    +
  • float32x4_t vcombine_f32 (float32x2_t, float32x2_t) +
+ +
    +
  • poly16x8_t vcombine_p16 (poly16x4_t, poly16x4_t) +
+ +
    +
  • poly8x16_t vcombine_p8 (poly8x8_t, poly8x8_t) +
+ +
5.50.3.44 Splitting vectors
+ +
    +
  • uint32x2_t vget_high_u32 (uint32x4_t) +
+ +
    +
  • uint16x4_t vget_high_u16 (uint16x8_t) +
+ +
    +
  • uint8x8_t vget_high_u8 (uint8x16_t) +
+ +
    +
  • int32x2_t vget_high_s32 (int32x4_t) +
+ +
    +
  • int16x4_t vget_high_s16 (int16x8_t) +
+ +
    +
  • int8x8_t vget_high_s8 (int8x16_t) +
+ +
    +
  • uint64x1_t vget_high_u64 (uint64x2_t) +
+ +
    +
  • int64x1_t vget_high_s64 (int64x2_t) +
+ +
    +
  • float32x2_t vget_high_f32 (float32x4_t) +
+ +
    +
  • poly16x4_t vget_high_p16 (poly16x8_t) +
+ +
    +
  • poly8x8_t vget_high_p8 (poly8x16_t) +
+ +
    +
  • uint32x2_t vget_low_u32 (uint32x4_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • uint16x4_t vget_low_u16 (uint16x8_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • uint8x8_t vget_low_u8 (uint8x16_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • int32x2_t vget_low_s32 (int32x4_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • int16x4_t vget_low_s16 (int16x8_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • int8x8_t vget_low_s8 (int8x16_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • uint64x1_t vget_low_u64 (uint64x2_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • int64x1_t vget_low_s64 (int64x2_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • float32x2_t vget_low_f32 (float32x4_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • poly16x4_t vget_low_p16 (poly16x8_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
    +
  • poly8x8_t vget_low_p8 (poly8x16_t) +
    Form of expected instruction(s): vmov d0, d0 +
+ +
5.50.3.45 Conversions
+ +
    +
  • float32x2_t vcvt_f32_u32 (uint32x2_t) +
    Form of expected instruction(s): vcvt.f32.u32 d0, d0 +
+ +
    +
  • float32x2_t vcvt_f32_s32 (int32x2_t) +
    Form of expected instruction(s): vcvt.f32.s32 d0, d0 +
+ +
    +
  • uint32x2_t vcvt_u32_f32 (float32x2_t) +
    Form of expected instruction(s): vcvt.u32.f32 d0, d0 +
+ +
    +
  • int32x2_t vcvt_s32_f32 (float32x2_t) +
    Form of expected instruction(s): vcvt.s32.f32 d0, d0 +
+ +
    +
  • float32x4_t vcvtq_f32_u32 (uint32x4_t) +
    Form of expected instruction(s): vcvt.f32.u32 q0, q0 +
+ +
    +
  • float32x4_t vcvtq_f32_s32 (int32x4_t) +
    Form of expected instruction(s): vcvt.f32.s32 q0, q0 +
+ +
    +
  • uint32x4_t vcvtq_u32_f32 (float32x4_t) +
    Form of expected instruction(s): vcvt.u32.f32 q0, q0 +
+ +
    +
  • int32x4_t vcvtq_s32_f32 (float32x4_t) +
    Form of expected instruction(s): vcvt.s32.f32 q0, q0 +
+ +
    +
  • float32x2_t vcvt_n_f32_u32 (uint32x2_t, const int) +
    Form of expected instruction(s): vcvt.f32.u32 d0, d0, #0 +
+ +
    +
  • float32x2_t vcvt_n_f32_s32 (int32x2_t, const int) +
    Form of expected instruction(s): vcvt.f32.s32 d0, d0, #0 +
+ +
    +
  • uint32x2_t vcvt_n_u32_f32 (float32x2_t, const int) +
    Form of expected instruction(s): vcvt.u32.f32 d0, d0, #0 +
+ +
    +
  • int32x2_t vcvt_n_s32_f32 (float32x2_t, const int) +
    Form of expected instruction(s): vcvt.s32.f32 d0, d0, #0 +
+ +
    +
  • float32x4_t vcvtq_n_f32_u32 (uint32x4_t, const int) +
    Form of expected instruction(s): vcvt.f32.u32 q0, q0, #0 +
+ +
    +
  • float32x4_t vcvtq_n_f32_s32 (int32x4_t, const int) +
    Form of expected instruction(s): vcvt.f32.s32 q0, q0, #0 +
+ +
    +
  • uint32x4_t vcvtq_n_u32_f32 (float32x4_t, const int) +
    Form of expected instruction(s): vcvt.u32.f32 q0, q0, #0 +
+ +
    +
  • int32x4_t vcvtq_n_s32_f32 (float32x4_t, const int) +
    Form of expected instruction(s): vcvt.s32.f32 q0, q0, #0 +
+ +
5.50.3.46 Move, single_opcode narrowing
+ +
    +
  • uint32x2_t vmovn_u64 (uint64x2_t) +
    Form of expected instruction(s): vmovn.i64 d0, q0 +
+ +
    +
  • uint16x4_t vmovn_u32 (uint32x4_t) +
    Form of expected instruction(s): vmovn.i32 d0, q0 +
+ +
    +
  • uint8x8_t vmovn_u16 (uint16x8_t) +
    Form of expected instruction(s): vmovn.i16 d0, q0 +
+ +
    +
  • int32x2_t vmovn_s64 (int64x2_t) +
    Form of expected instruction(s): vmovn.i64 d0, q0 +
+ +
    +
  • int16x4_t vmovn_s32 (int32x4_t) +
    Form of expected instruction(s): vmovn.i32 d0, q0 +
+ +
    +
  • int8x8_t vmovn_s16 (int16x8_t) +
    Form of expected instruction(s): vmovn.i16 d0, q0 +
+ +
    +
  • uint32x2_t vqmovn_u64 (uint64x2_t) +
    Form of expected instruction(s): vqmovn.u64 d0, q0 +
+ +
    +
  • uint16x4_t vqmovn_u32 (uint32x4_t) +
    Form of expected instruction(s): vqmovn.u32 d0, q0 +
+ +
    +
  • uint8x8_t vqmovn_u16 (uint16x8_t) +
    Form of expected instruction(s): vqmovn.u16 d0, q0 +
+ +
    +
  • int32x2_t vqmovn_s64 (int64x2_t) +
    Form of expected instruction(s): vqmovn.s64 d0, q0 +
+ +
    +
  • int16x4_t vqmovn_s32 (int32x4_t) +
    Form of expected instruction(s): vqmovn.s32 d0, q0 +
+ +
    +
  • int8x8_t vqmovn_s16 (int16x8_t) +
    Form of expected instruction(s): vqmovn.s16 d0, q0 +
+ +
    +
  • uint32x2_t vqmovun_s64 (int64x2_t) +
    Form of expected instruction(s): vqmovun.s64 d0, q0 +
+ +
    +
  • uint16x4_t vqmovun_s32 (int32x4_t) +
    Form of expected instruction(s): vqmovun.s32 d0, q0 +
+ +
    +
  • uint8x8_t vqmovun_s16 (int16x8_t) +
    Form of expected instruction(s): vqmovun.s16 d0, q0 +
+ +
5.50.3.47 Move, single_opcode long
+ +
    +
  • uint64x2_t vmovl_u32 (uint32x2_t) +
    Form of expected instruction(s): vmovl.u32 q0, d0 +
+ +
    +
  • uint32x4_t vmovl_u16 (uint16x4_t) +
    Form of expected instruction(s): vmovl.u16 q0, d0 +
+ +
    +
  • uint16x8_t vmovl_u8 (uint8x8_t) +
    Form of expected instruction(s): vmovl.u8 q0, d0 +
+ +
    +
  • int64x2_t vmovl_s32 (int32x2_t) +
    Form of expected instruction(s): vmovl.s32 q0, d0 +
+ +
    +
  • int32x4_t vmovl_s16 (int16x4_t) +
    Form of expected instruction(s): vmovl.s16 q0, d0 +
+ +
    +
  • int16x8_t vmovl_s8 (int8x8_t) +
    Form of expected instruction(s): vmovl.s8 q0, d0 +
+ +
5.50.3.48 Table lookup
+ +
    +
  • poly8x8_t vtbl1_p8 (poly8x8_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0}, d0 +
+ +
    +
  • int8x8_t vtbl1_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0}, d0 +
+ +
    +
  • uint8x8_t vtbl1_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0}, d0 +
+ +
    +
  • poly8x8_t vtbl2_p8 (poly8x8x2_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1}, d0 +
+ +
    +
  • int8x8_t vtbl2_s8 (int8x8x2_t, int8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1}, d0 +
+ +
    +
  • uint8x8_t vtbl2_u8 (uint8x8x2_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1}, d0 +
+ +
    +
  • poly8x8_t vtbl3_p8 (poly8x8x3_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1, d2}, d0 +
+ +
    +
  • int8x8_t vtbl3_s8 (int8x8x3_t, int8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1, d2}, d0 +
+ +
    +
  • uint8x8_t vtbl3_u8 (uint8x8x3_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1, d2}, d0 +
+ +
    +
  • poly8x8_t vtbl4_p8 (poly8x8x4_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1, d2, d3}, d0 +
+ +
    +
  • int8x8_t vtbl4_s8 (int8x8x4_t, int8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1, d2, d3}, d0 +
+ +
    +
  • uint8x8_t vtbl4_u8 (uint8x8x4_t, uint8x8_t) +
    Form of expected instruction(s): vtbl.8 d0, {d0, d1, d2, d3}, d0 +
+ +
5.50.3.49 Extended table lookup
+ +
    +
  • poly8x8_t vtbx1_p8 (poly8x8_t, poly8x8_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0}, d0 +
+ +
    +
  • int8x8_t vtbx1_s8 (int8x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0}, d0 +
+ +
    +
  • uint8x8_t vtbx1_u8 (uint8x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0}, d0 +
+ +
    +
  • poly8x8_t vtbx2_p8 (poly8x8_t, poly8x8x2_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1}, d0 +
+ +
    +
  • int8x8_t vtbx2_s8 (int8x8_t, int8x8x2_t, int8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1}, d0 +
+ +
    +
  • uint8x8_t vtbx2_u8 (uint8x8_t, uint8x8x2_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1}, d0 +
+ +
    +
  • poly8x8_t vtbx3_p8 (poly8x8_t, poly8x8x3_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1, d2}, d0 +
+ +
    +
  • int8x8_t vtbx3_s8 (int8x8_t, int8x8x3_t, int8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1, d2}, d0 +
+ +
    +
  • uint8x8_t vtbx3_u8 (uint8x8_t, uint8x8x3_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1, d2}, d0 +
+ +
    +
  • poly8x8_t vtbx4_p8 (poly8x8_t, poly8x8x4_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1, d2, d3}, d0 +
+ +
    +
  • int8x8_t vtbx4_s8 (int8x8_t, int8x8x4_t, int8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1, d2, d3}, d0 +
+ +
    +
  • uint8x8_t vtbx4_u8 (uint8x8_t, uint8x8x4_t, uint8x8_t) +
    Form of expected instruction(s): vtbx.8 d0, {d0, d1, d2, d3}, d0 +
+ +
5.50.3.50 Multiply, lane
+ +
    +
  • float32x2_t vmul_lane_f32 (float32x2_t, float32x2_t, const int) +
    Form of expected instruction(s): vmul.f32 d0, d0, d0[0] +
+ +
    +
  • uint32x2_t vmul_lane_u32 (uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmul.i32 d0, d0, d0[0] +
+ +
    +
  • uint16x4_t vmul_lane_u16 (uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmul.i16 d0, d0, d0[0] +
+ +
    +
  • int32x2_t vmul_lane_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vmul.i32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vmul_lane_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vmul.i16 d0, d0, d0[0] +
+ +
    +
  • float32x4_t vmulq_lane_f32 (float32x4_t, float32x2_t, const int) +
    Form of expected instruction(s): vmul.f32 q0, q0, d0[0] +
+ +
    +
  • uint32x4_t vmulq_lane_u32 (uint32x4_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmul.i32 q0, q0, d0[0] +
+ +
    +
  • uint16x8_t vmulq_lane_u16 (uint16x8_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmul.i16 q0, q0, d0[0] +
+ +
    +
  • int32x4_t vmulq_lane_s32 (int32x4_t, int32x2_t, const int) +
    Form of expected instruction(s): vmul.i32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vmulq_lane_s16 (int16x8_t, int16x4_t, const int) +
    Form of expected instruction(s): vmul.i16 q0, q0, d0[0] +
+ +
5.50.3.51 Long multiply, lane
+ +
    +
  • uint64x2_t vmull_lane_u32 (uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmull.u32 q0, d0, d0[0] +
+ +
    +
  • uint32x4_t vmull_lane_u16 (uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmull.u16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vmull_lane_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vmull.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vmull_lane_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vmull.s16 q0, d0, d0[0] +
+ +
5.50.3.52 Saturating doubling long multiply, lane
+ +
    +
  • int64x2_t vqdmull_lane_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vqdmull.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vqdmull_lane_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vqdmull.s16 q0, d0, d0[0] +
+ +
5.50.3.53 Saturating doubling multiply high, lane
+ +
    +
  • int32x4_t vqdmulhq_lane_s32 (int32x4_t, int32x2_t, const int) +
    Form of expected instruction(s): vqdmulh.s32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vqdmulhq_lane_s16 (int16x8_t, int16x4_t, const int) +
    Form of expected instruction(s): vqdmulh.s16 q0, q0, d0[0] +
+ +
    +
  • int32x2_t vqdmulh_lane_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vqdmulh.s32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vqdmulh_lane_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vqdmulh.s16 d0, d0, d0[0] +
+ +
    +
  • int32x4_t vqrdmulhq_lane_s32 (int32x4_t, int32x2_t, const int) +
    Form of expected instruction(s): vqrdmulh.s32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vqrdmulhq_lane_s16 (int16x8_t, int16x4_t, const int) +
    Form of expected instruction(s): vqrdmulh.s16 q0, q0, d0[0] +
+ +
    +
  • int32x2_t vqrdmulh_lane_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vqrdmulh.s32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vqrdmulh_lane_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vqrdmulh.s16 d0, d0, d0[0] +
+ +
5.50.3.54 Multiply-accumulate, lane
+ +
    +
  • float32x2_t vmla_lane_f32 (float32x2_t, float32x2_t, float32x2_t, const int) +
    Form of expected instruction(s): vmla.f32 d0, d0, d0[0] +
+ +
    +
  • uint32x2_t vmla_lane_u32 (uint32x2_t, uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmla.i32 d0, d0, d0[0] +
+ +
    +
  • uint16x4_t vmla_lane_u16 (uint16x4_t, uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmla.i16 d0, d0, d0[0] +
+ +
    +
  • int32x2_t vmla_lane_s32 (int32x2_t, int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vmla.i32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vmla_lane_s16 (int16x4_t, int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vmla.i16 d0, d0, d0[0] +
+ +
    +
  • float32x4_t vmlaq_lane_f32 (float32x4_t, float32x4_t, float32x2_t, const int) +
    Form of expected instruction(s): vmla.f32 q0, q0, d0[0] +
+ +
    +
  • uint32x4_t vmlaq_lane_u32 (uint32x4_t, uint32x4_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmla.i32 q0, q0, d0[0] +
+ +
    +
  • uint16x8_t vmlaq_lane_u16 (uint16x8_t, uint16x8_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmla.i16 q0, q0, d0[0] +
+ +
    +
  • int32x4_t vmlaq_lane_s32 (int32x4_t, int32x4_t, int32x2_t, const int) +
    Form of expected instruction(s): vmla.i32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vmlaq_lane_s16 (int16x8_t, int16x8_t, int16x4_t, const int) +
    Form of expected instruction(s): vmla.i16 q0, q0, d0[0] +
+ +
    +
  • uint64x2_t vmlal_lane_u32 (uint64x2_t, uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmlal.u32 q0, d0, d0[0] +
+ +
    +
  • uint32x4_t vmlal_lane_u16 (uint32x4_t, uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmlal.u16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vmlal_lane_s32 (int64x2_t, int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vmlal.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vmlal_lane_s16 (int32x4_t, int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vmlal.s16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vqdmlal_lane_s32 (int64x2_t, int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vqdmlal.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vqdmlal_lane_s16 (int32x4_t, int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vqdmlal.s16 q0, d0, d0[0] +
+ +
5.50.3.55 Multiply-subtract, lane
+ +
    +
  • float32x2_t vmls_lane_f32 (float32x2_t, float32x2_t, float32x2_t, const int) +
    Form of expected instruction(s): vmls.f32 d0, d0, d0[0] +
+ +
    +
  • uint32x2_t vmls_lane_u32 (uint32x2_t, uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmls.i32 d0, d0, d0[0] +
+ +
    +
  • uint16x4_t vmls_lane_u16 (uint16x4_t, uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmls.i16 d0, d0, d0[0] +
+ +
    +
  • int32x2_t vmls_lane_s32 (int32x2_t, int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vmls.i32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vmls_lane_s16 (int16x4_t, int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vmls.i16 d0, d0, d0[0] +
+ +
    +
  • float32x4_t vmlsq_lane_f32 (float32x4_t, float32x4_t, float32x2_t, const int) +
    Form of expected instruction(s): vmls.f32 q0, q0, d0[0] +
+ +
    +
  • uint32x4_t vmlsq_lane_u32 (uint32x4_t, uint32x4_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmls.i32 q0, q0, d0[0] +
+ +
    +
  • uint16x8_t vmlsq_lane_u16 (uint16x8_t, uint16x8_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmls.i16 q0, q0, d0[0] +
+ +
    +
  • int32x4_t vmlsq_lane_s32 (int32x4_t, int32x4_t, int32x2_t, const int) +
    Form of expected instruction(s): vmls.i32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vmlsq_lane_s16 (int16x8_t, int16x8_t, int16x4_t, const int) +
    Form of expected instruction(s): vmls.i16 q0, q0, d0[0] +
+ +
    +
  • uint64x2_t vmlsl_lane_u32 (uint64x2_t, uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vmlsl.u32 q0, d0, d0[0] +
+ +
    +
  • uint32x4_t vmlsl_lane_u16 (uint32x4_t, uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vmlsl.u16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vmlsl_lane_s32 (int64x2_t, int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vmlsl.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vmlsl_lane_s16 (int32x4_t, int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vmlsl.s16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vqdmlsl_lane_s32 (int64x2_t, int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vqdmlsl.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vqdmlsl_lane_s16 (int32x4_t, int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vqdmlsl.s16 q0, d0, d0[0] +
+ +
5.50.3.56 Vector multiply by scalar
+ +
    +
  • float32x2_t vmul_n_f32 (float32x2_t, float32_t) +
    Form of expected instruction(s): vmul.f32 d0, d0, d0[0] +
+ +
    +
  • uint32x2_t vmul_n_u32 (uint32x2_t, uint32_t) +
    Form of expected instruction(s): vmul.i32 d0, d0, d0[0] +
+ +
    +
  • uint16x4_t vmul_n_u16 (uint16x4_t, uint16_t) +
    Form of expected instruction(s): vmul.i16 d0, d0, d0[0] +
+ +
    +
  • int32x2_t vmul_n_s32 (int32x2_t, int32_t) +
    Form of expected instruction(s): vmul.i32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vmul_n_s16 (int16x4_t, int16_t) +
    Form of expected instruction(s): vmul.i16 d0, d0, d0[0] +
+ +
    +
  • float32x4_t vmulq_n_f32 (float32x4_t, float32_t) +
    Form of expected instruction(s): vmul.f32 q0, q0, d0[0] +
+ +
    +
  • uint32x4_t vmulq_n_u32 (uint32x4_t, uint32_t) +
    Form of expected instruction(s): vmul.i32 q0, q0, d0[0] +
+ +
    +
  • uint16x8_t vmulq_n_u16 (uint16x8_t, uint16_t) +
    Form of expected instruction(s): vmul.i16 q0, q0, d0[0] +
+ +
    +
  • int32x4_t vmulq_n_s32 (int32x4_t, int32_t) +
    Form of expected instruction(s): vmul.i32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vmulq_n_s16 (int16x8_t, int16_t) +
    Form of expected instruction(s): vmul.i16 q0, q0, d0[0] +
+ +
5.50.3.57 Vector long multiply by scalar
+ +
    +
  • uint64x2_t vmull_n_u32 (uint32x2_t, uint32_t) +
    Form of expected instruction(s): vmull.u32 q0, d0, d0[0] +
+ +
    +
  • uint32x4_t vmull_n_u16 (uint16x4_t, uint16_t) +
    Form of expected instruction(s): vmull.u16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vmull_n_s32 (int32x2_t, int32_t) +
    Form of expected instruction(s): vmull.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vmull_n_s16 (int16x4_t, int16_t) +
    Form of expected instruction(s): vmull.s16 q0, d0, d0[0] +
+ +
5.50.3.58 Vector saturating doubling long multiply by scalar
+ +
    +
  • int64x2_t vqdmull_n_s32 (int32x2_t, int32_t) +
    Form of expected instruction(s): vqdmull.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vqdmull_n_s16 (int16x4_t, int16_t) +
    Form of expected instruction(s): vqdmull.s16 q0, d0, d0[0] +
+ +
5.50.3.59 Vector saturating doubling multiply high by scalar
+ +
    +
  • int32x4_t vqdmulhq_n_s32 (int32x4_t, int32_t) +
    Form of expected instruction(s): vqdmulh.s32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vqdmulhq_n_s16 (int16x8_t, int16_t) +
    Form of expected instruction(s): vqdmulh.s16 q0, q0, d0[0] +
+ +
    +
  • int32x2_t vqdmulh_n_s32 (int32x2_t, int32_t) +
    Form of expected instruction(s): vqdmulh.s32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vqdmulh_n_s16 (int16x4_t, int16_t) +
    Form of expected instruction(s): vqdmulh.s16 d0, d0, d0[0] +
+ +
    +
  • int32x4_t vqrdmulhq_n_s32 (int32x4_t, int32_t) +
    Form of expected instruction(s): vqrdmulh.s32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vqrdmulhq_n_s16 (int16x8_t, int16_t) +
    Form of expected instruction(s): vqrdmulh.s16 q0, q0, d0[0] +
+ +
    +
  • int32x2_t vqrdmulh_n_s32 (int32x2_t, int32_t) +
    Form of expected instruction(s): vqrdmulh.s32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vqrdmulh_n_s16 (int16x4_t, int16_t) +
    Form of expected instruction(s): vqrdmulh.s16 d0, d0, d0[0] +
+ +
5.50.3.60 Vector multiply-accumulate by scalar
+ +
    +
  • float32x2_t vmla_n_f32 (float32x2_t, float32x2_t, float32_t) +
    Form of expected instruction(s): vmla.f32 d0, d0, d0[0] +
+ +
    +
  • uint32x2_t vmla_n_u32 (uint32x2_t, uint32x2_t, uint32_t) +
    Form of expected instruction(s): vmla.i32 d0, d0, d0[0] +
+ +
    +
  • uint16x4_t vmla_n_u16 (uint16x4_t, uint16x4_t, uint16_t) +
    Form of expected instruction(s): vmla.i16 d0, d0, d0[0] +
+ +
    +
  • int32x2_t vmla_n_s32 (int32x2_t, int32x2_t, int32_t) +
    Form of expected instruction(s): vmla.i32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vmla_n_s16 (int16x4_t, int16x4_t, int16_t) +
    Form of expected instruction(s): vmla.i16 d0, d0, d0[0] +
+ +
    +
  • float32x4_t vmlaq_n_f32 (float32x4_t, float32x4_t, float32_t) +
    Form of expected instruction(s): vmla.f32 q0, q0, d0[0] +
+ +
    +
  • uint32x4_t vmlaq_n_u32 (uint32x4_t, uint32x4_t, uint32_t) +
    Form of expected instruction(s): vmla.i32 q0, q0, d0[0] +
+ +
    +
  • uint16x8_t vmlaq_n_u16 (uint16x8_t, uint16x8_t, uint16_t) +
    Form of expected instruction(s): vmla.i16 q0, q0, d0[0] +
+ +
    +
  • int32x4_t vmlaq_n_s32 (int32x4_t, int32x4_t, int32_t) +
    Form of expected instruction(s): vmla.i32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vmlaq_n_s16 (int16x8_t, int16x8_t, int16_t) +
    Form of expected instruction(s): vmla.i16 q0, q0, d0[0] +
+ +
    +
  • uint64x2_t vmlal_n_u32 (uint64x2_t, uint32x2_t, uint32_t) +
    Form of expected instruction(s): vmlal.u32 q0, d0, d0[0] +
+ +
    +
  • uint32x4_t vmlal_n_u16 (uint32x4_t, uint16x4_t, uint16_t) +
    Form of expected instruction(s): vmlal.u16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vmlal_n_s32 (int64x2_t, int32x2_t, int32_t) +
    Form of expected instruction(s): vmlal.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vmlal_n_s16 (int32x4_t, int16x4_t, int16_t) +
    Form of expected instruction(s): vmlal.s16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vqdmlal_n_s32 (int64x2_t, int32x2_t, int32_t) +
    Form of expected instruction(s): vqdmlal.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vqdmlal_n_s16 (int32x4_t, int16x4_t, int16_t) +
    Form of expected instruction(s): vqdmlal.s16 q0, d0, d0[0] +
+ +
5.50.3.61 Vector multiply-subtract by scalar
+ +
    +
  • float32x2_t vmls_n_f32 (float32x2_t, float32x2_t, float32_t) +
    Form of expected instruction(s): vmls.f32 d0, d0, d0[0] +
+ +
    +
  • uint32x2_t vmls_n_u32 (uint32x2_t, uint32x2_t, uint32_t) +
    Form of expected instruction(s): vmls.i32 d0, d0, d0[0] +
+ +
    +
  • uint16x4_t vmls_n_u16 (uint16x4_t, uint16x4_t, uint16_t) +
    Form of expected instruction(s): vmls.i16 d0, d0, d0[0] +
+ +
    +
  • int32x2_t vmls_n_s32 (int32x2_t, int32x2_t, int32_t) +
    Form of expected instruction(s): vmls.i32 d0, d0, d0[0] +
+ +
    +
  • int16x4_t vmls_n_s16 (int16x4_t, int16x4_t, int16_t) +
    Form of expected instruction(s): vmls.i16 d0, d0, d0[0] +
+ +
    +
  • float32x4_t vmlsq_n_f32 (float32x4_t, float32x4_t, float32_t) +
    Form of expected instruction(s): vmls.f32 q0, q0, d0[0] +
+ +
    +
  • uint32x4_t vmlsq_n_u32 (uint32x4_t, uint32x4_t, uint32_t) +
    Form of expected instruction(s): vmls.i32 q0, q0, d0[0] +
+ +
    +
  • uint16x8_t vmlsq_n_u16 (uint16x8_t, uint16x8_t, uint16_t) +
    Form of expected instruction(s): vmls.i16 q0, q0, d0[0] +
+ +
    +
  • int32x4_t vmlsq_n_s32 (int32x4_t, int32x4_t, int32_t) +
    Form of expected instruction(s): vmls.i32 q0, q0, d0[0] +
+ +
    +
  • int16x8_t vmlsq_n_s16 (int16x8_t, int16x8_t, int16_t) +
    Form of expected instruction(s): vmls.i16 q0, q0, d0[0] +
+ +
    +
  • uint64x2_t vmlsl_n_u32 (uint64x2_t, uint32x2_t, uint32_t) +
    Form of expected instruction(s): vmlsl.u32 q0, d0, d0[0] +
+ +
    +
  • uint32x4_t vmlsl_n_u16 (uint32x4_t, uint16x4_t, uint16_t) +
    Form of expected instruction(s): vmlsl.u16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vmlsl_n_s32 (int64x2_t, int32x2_t, int32_t) +
    Form of expected instruction(s): vmlsl.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vmlsl_n_s16 (int32x4_t, int16x4_t, int16_t) +
    Form of expected instruction(s): vmlsl.s16 q0, d0, d0[0] +
+ +
    +
  • int64x2_t vqdmlsl_n_s32 (int64x2_t, int32x2_t, int32_t) +
    Form of expected instruction(s): vqdmlsl.s32 q0, d0, d0[0] +
+ +
    +
  • int32x4_t vqdmlsl_n_s16 (int32x4_t, int16x4_t, int16_t) +
    Form of expected instruction(s): vqdmlsl.s16 q0, d0, d0[0] +
+ +
5.50.3.62 Vector extract
+ +
    +
  • uint32x2_t vext_u32 (uint32x2_t, uint32x2_t, const int) +
    Form of expected instruction(s): vext.32 d0, d0, d0, #0 +
+ +
    +
  • uint16x4_t vext_u16 (uint16x4_t, uint16x4_t, const int) +
    Form of expected instruction(s): vext.16 d0, d0, d0, #0 +
+ +
    +
  • uint8x8_t vext_u8 (uint8x8_t, uint8x8_t, const int) +
    Form of expected instruction(s): vext.8 d0, d0, d0, #0 +
+ +
    +
  • int32x2_t vext_s32 (int32x2_t, int32x2_t, const int) +
    Form of expected instruction(s): vext.32 d0, d0, d0, #0 +
+ +
    +
  • int16x4_t vext_s16 (int16x4_t, int16x4_t, const int) +
    Form of expected instruction(s): vext.16 d0, d0, d0, #0 +
+ +
    +
  • int8x8_t vext_s8 (int8x8_t, int8x8_t, const int) +
    Form of expected instruction(s): vext.8 d0, d0, d0, #0 +
+ +
    +
  • uint64x1_t vext_u64 (uint64x1_t, uint64x1_t, const int) +
    Form of expected instruction(s): vext.64 d0, d0, d0, #0 +
+ +
    +
  • int64x1_t vext_s64 (int64x1_t, int64x1_t, const int) +
    Form of expected instruction(s): vext.64 d0, d0, d0, #0 +
+ +
    +
  • float32x2_t vext_f32 (float32x2_t, float32x2_t, const int) +
    Form of expected instruction(s): vext.32 d0, d0, d0, #0 +
+ +
    +
  • poly16x4_t vext_p16 (poly16x4_t, poly16x4_t, const int) +
    Form of expected instruction(s): vext.16 d0, d0, d0, #0 +
+ +
    +
  • poly8x8_t vext_p8 (poly8x8_t, poly8x8_t, const int) +
    Form of expected instruction(s): vext.8 d0, d0, d0, #0 +
+ +
    +
  • uint32x4_t vextq_u32 (uint32x4_t, uint32x4_t, const int) +
    Form of expected instruction(s): vext.32 q0, q0, q0, #0 +
+ +
    +
  • uint16x8_t vextq_u16 (uint16x8_t, uint16x8_t, const int) +
    Form of expected instruction(s): vext.16 q0, q0, q0, #0 +
+ +
    +
  • uint8x16_t vextq_u8 (uint8x16_t, uint8x16_t, const int) +
    Form of expected instruction(s): vext.8 q0, q0, q0, #0 +
+ +
    +
  • int32x4_t vextq_s32 (int32x4_t, int32x4_t, const int) +
    Form of expected instruction(s): vext.32 q0, q0, q0, #0 +
+ +
    +
  • int16x8_t vextq_s16 (int16x8_t, int16x8_t, const int) +
    Form of expected instruction(s): vext.16 q0, q0, q0, #0 +
+ +
    +
  • int8x16_t vextq_s8 (int8x16_t, int8x16_t, const int) +
    Form of expected instruction(s): vext.8 q0, q0, q0, #0 +
+ +
    +
  • uint64x2_t vextq_u64 (uint64x2_t, uint64x2_t, const int) +
    Form of expected instruction(s): vext.64 q0, q0, q0, #0 +
+ +
    +
  • int64x2_t vextq_s64 (int64x2_t, int64x2_t, const int) +
    Form of expected instruction(s): vext.64 q0, q0, q0, #0 +
+ +
    +
  • float32x4_t vextq_f32 (float32x4_t, float32x4_t, const int) +
    Form of expected instruction(s): vext.32 q0, q0, q0, #0 +
+ +
    +
  • poly16x8_t vextq_p16 (poly16x8_t, poly16x8_t, const int) +
    Form of expected instruction(s): vext.16 q0, q0, q0, #0 +
+ +
    +
  • poly8x16_t vextq_p8 (poly8x16_t, poly8x16_t, const int) +
    Form of expected instruction(s): vext.8 q0, q0, q0, #0 +
+ +
5.50.3.63 Reverse elements
+ +
    +
  • uint32x2_t vrev64_u32 (uint32x2_t) +
    Form of expected instruction(s): vrev64.32 d0, d0 +
+ +
    +
  • uint16x4_t vrev64_u16 (uint16x4_t) +
    Form of expected instruction(s): vrev64.16 d0, d0 +
+ +
    +
  • uint8x8_t vrev64_u8 (uint8x8_t) +
    Form of expected instruction(s): vrev64.8 d0, d0 +
+ +
    +
  • int32x2_t vrev64_s32 (int32x2_t) +
    Form of expected instruction(s): vrev64.32 d0, d0 +
+ +
    +
  • int16x4_t vrev64_s16 (int16x4_t) +
    Form of expected instruction(s): vrev64.16 d0, d0 +
+ +
    +
  • int8x8_t vrev64_s8 (int8x8_t) +
    Form of expected instruction(s): vrev64.8 d0, d0 +
+ +
    +
  • float32x2_t vrev64_f32 (float32x2_t) +
    Form of expected instruction(s): vrev64.32 d0, d0 +
+ +
    +
  • poly16x4_t vrev64_p16 (poly16x4_t) +
    Form of expected instruction(s): vrev64.16 d0, d0 +
+ +
    +
  • poly8x8_t vrev64_p8 (poly8x8_t) +
    Form of expected instruction(s): vrev64.8 d0, d0 +
+ +
    +
  • uint32x4_t vrev64q_u32 (uint32x4_t) +
    Form of expected instruction(s): vrev64.32 q0, q0 +
+ +
    +
  • uint16x8_t vrev64q_u16 (uint16x8_t) +
    Form of expected instruction(s): vrev64.16 q0, q0 +
+ +
    +
  • uint8x16_t vrev64q_u8 (uint8x16_t) +
    Form of expected instruction(s): vrev64.8 q0, q0 +
+ +
    +
  • int32x4_t vrev64q_s32 (int32x4_t) +
    Form of expected instruction(s): vrev64.32 q0, q0 +
+ +
    +
  • int16x8_t vrev64q_s16 (int16x8_t) +
    Form of expected instruction(s): vrev64.16 q0, q0 +
+ +
    +
  • int8x16_t vrev64q_s8 (int8x16_t) +
    Form of expected instruction(s): vrev64.8 q0, q0 +
+ +
    +
  • float32x4_t vrev64q_f32 (float32x4_t) +
    Form of expected instruction(s): vrev64.32 q0, q0 +
+ +
    +
  • poly16x8_t vrev64q_p16 (poly16x8_t) +
    Form of expected instruction(s): vrev64.16 q0, q0 +
+ +
    +
  • poly8x16_t vrev64q_p8 (poly8x16_t) +
    Form of expected instruction(s): vrev64.8 q0, q0 +
+ +
    +
  • uint16x4_t vrev32_u16 (uint16x4_t) +
    Form of expected instruction(s): vrev32.16 d0, d0 +
+ +
    +
  • int16x4_t vrev32_s16 (int16x4_t) +
    Form of expected instruction(s): vrev32.16 d0, d0 +
+ +
    +
  • uint8x8_t vrev32_u8 (uint8x8_t) +
    Form of expected instruction(s): vrev32.8 d0, d0 +
+ +
    +
  • int8x8_t vrev32_s8 (int8x8_t) +
    Form of expected instruction(s): vrev32.8 d0, d0 +
+ +
    +
  • poly16x4_t vrev32_p16 (poly16x4_t) +
    Form of expected instruction(s): vrev32.16 d0, d0 +
+ +
    +
  • poly8x8_t vrev32_p8 (poly8x8_t) +
    Form of expected instruction(s): vrev32.8 d0, d0 +
+ +
    +
  • uint16x8_t vrev32q_u16 (uint16x8_t) +
    Form of expected instruction(s): vrev32.16 q0, q0 +
+ +
    +
  • int16x8_t vrev32q_s16 (int16x8_t) +
    Form of expected instruction(s): vrev32.16 q0, q0 +
+ +
    +
  • uint8x16_t vrev32q_u8 (uint8x16_t) +
    Form of expected instruction(s): vrev32.8 q0, q0 +
+ +
    +
  • int8x16_t vrev32q_s8 (int8x16_t) +
    Form of expected instruction(s): vrev32.8 q0, q0 +
+ +
    +
  • poly16x8_t vrev32q_p16 (poly16x8_t) +
    Form of expected instruction(s): vrev32.16 q0, q0 +
+ +
    +
  • poly8x16_t vrev32q_p8 (poly8x16_t) +
    Form of expected instruction(s): vrev32.8 q0, q0 +
+ +
    +
  • uint8x8_t vrev16_u8 (uint8x8_t) +
    Form of expected instruction(s): vrev16.8 d0, d0 +
+ +
    +
  • int8x8_t vrev16_s8 (int8x8_t) +
    Form of expected instruction(s): vrev16.8 d0, d0 +
+ +
    +
  • poly8x8_t vrev16_p8 (poly8x8_t) +
    Form of expected instruction(s): vrev16.8 d0, d0 +
+ +
    +
  • uint8x16_t vrev16q_u8 (uint8x16_t) +
    Form of expected instruction(s): vrev16.8 q0, q0 +
+ +
    +
  • int8x16_t vrev16q_s8 (int8x16_t) +
    Form of expected instruction(s): vrev16.8 q0, q0 +
+ +
    +
  • poly8x16_t vrev16q_p8 (poly8x16_t) +
    Form of expected instruction(s): vrev16.8 q0, q0 +
+ +
5.50.3.64 Bit selection
+ +
    +
  • uint32x2_t vbsl_u32 (uint32x2_t, uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • uint16x4_t vbsl_u16 (uint16x4_t, uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • uint8x8_t vbsl_u8 (uint8x8_t, uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • int32x2_t vbsl_s32 (uint32x2_t, int32x2_t, int32x2_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • int16x4_t vbsl_s16 (uint16x4_t, int16x4_t, int16x4_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • int8x8_t vbsl_s8 (uint8x8_t, int8x8_t, int8x8_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • uint64x1_t vbsl_u64 (uint64x1_t, uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • int64x1_t vbsl_s64 (uint64x1_t, int64x1_t, int64x1_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • float32x2_t vbsl_f32 (uint32x2_t, float32x2_t, float32x2_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • poly16x4_t vbsl_p16 (uint16x4_t, poly16x4_t, poly16x4_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • poly8x8_t vbsl_p8 (uint8x8_t, poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vbsl d0, d0, d0 or vbit d0, d0, d0 or vbif d0, d0, d0 +
+ +
    +
  • uint32x4_t vbslq_u32 (uint32x4_t, uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • uint16x8_t vbslq_u16 (uint16x8_t, uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • uint8x16_t vbslq_u8 (uint8x16_t, uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • int32x4_t vbslq_s32 (uint32x4_t, int32x4_t, int32x4_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • int16x8_t vbslq_s16 (uint16x8_t, int16x8_t, int16x8_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • int8x16_t vbslq_s8 (uint8x16_t, int8x16_t, int8x16_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • uint64x2_t vbslq_u64 (uint64x2_t, uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • int64x2_t vbslq_s64 (uint64x2_t, int64x2_t, int64x2_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • float32x4_t vbslq_f32 (uint32x4_t, float32x4_t, float32x4_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • poly16x8_t vbslq_p16 (uint16x8_t, poly16x8_t, poly16x8_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
    +
  • poly8x16_t vbslq_p8 (uint8x16_t, poly8x16_t, poly8x16_t) +
    Form of expected instruction(s): vbsl q0, q0, q0 or vbit q0, q0, q0 or vbif q0, q0, q0 +
+ +
5.50.3.65 Transpose elements
+ +
    +
  • uint32x2x2_t vtrn_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vtrn.32 d0, d1 +
+ +
    +
  • uint16x4x2_t vtrn_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vtrn.16 d0, d1 +
+ +
    +
  • uint8x8x2_t vtrn_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vtrn.8 d0, d1 +
+ +
    +
  • int32x2x2_t vtrn_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vtrn.32 d0, d1 +
+ +
    +
  • int16x4x2_t vtrn_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vtrn.16 d0, d1 +
+ +
    +
  • int8x8x2_t vtrn_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vtrn.8 d0, d1 +
+ +
    +
  • float32x2x2_t vtrn_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vtrn.32 d0, d1 +
+ +
    +
  • poly16x4x2_t vtrn_p16 (poly16x4_t, poly16x4_t) +
    Form of expected instruction(s): vtrn.16 d0, d1 +
+ +
    +
  • poly8x8x2_t vtrn_p8 (poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vtrn.8 d0, d1 +
+ +
    +
  • uint32x4x2_t vtrnq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vtrn.32 q0, q1 +
+ +
    +
  • uint16x8x2_t vtrnq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vtrn.16 q0, q1 +
+ +
    +
  • uint8x16x2_t vtrnq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vtrn.8 q0, q1 +
+ +
    +
  • int32x4x2_t vtrnq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vtrn.32 q0, q1 +
+ +
    +
  • int16x8x2_t vtrnq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vtrn.16 q0, q1 +
+ +
    +
  • int8x16x2_t vtrnq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vtrn.8 q0, q1 +
+ +
    +
  • float32x4x2_t vtrnq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vtrn.32 q0, q1 +
+ +
    +
  • poly16x8x2_t vtrnq_p16 (poly16x8_t, poly16x8_t) +
    Form of expected instruction(s): vtrn.16 q0, q1 +
+ +
    +
  • poly8x16x2_t vtrnq_p8 (poly8x16_t, poly8x16_t) +
    Form of expected instruction(s): vtrn.8 q0, q1 +
+ +
5.50.3.66 Zip elements
+ +
    +
  • uint32x2x2_t vzip_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vzip.32 d0, d1 +
+ +
    +
  • uint16x4x2_t vzip_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vzip.16 d0, d1 +
+ +
    +
  • uint8x8x2_t vzip_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vzip.8 d0, d1 +
+ +
    +
  • int32x2x2_t vzip_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vzip.32 d0, d1 +
+ +
    +
  • int16x4x2_t vzip_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vzip.16 d0, d1 +
+ +
    +
  • int8x8x2_t vzip_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vzip.8 d0, d1 +
+ +
    +
  • float32x2x2_t vzip_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vzip.32 d0, d1 +
+ +
    +
  • poly16x4x2_t vzip_p16 (poly16x4_t, poly16x4_t) +
    Form of expected instruction(s): vzip.16 d0, d1 +
+ +
    +
  • poly8x8x2_t vzip_p8 (poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vzip.8 d0, d1 +
+ +
    +
  • uint32x4x2_t vzipq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vzip.32 q0, q1 +
+ +
    +
  • uint16x8x2_t vzipq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vzip.16 q0, q1 +
+ +
    +
  • uint8x16x2_t vzipq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vzip.8 q0, q1 +
+ +
    +
  • int32x4x2_t vzipq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vzip.32 q0, q1 +
+ +
    +
  • int16x8x2_t vzipq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vzip.16 q0, q1 +
+ +
    +
  • int8x16x2_t vzipq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vzip.8 q0, q1 +
+ +
    +
  • float32x4x2_t vzipq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vzip.32 q0, q1 +
+ +
    +
  • poly16x8x2_t vzipq_p16 (poly16x8_t, poly16x8_t) +
    Form of expected instruction(s): vzip.16 q0, q1 +
+ +
    +
  • poly8x16x2_t vzipq_p8 (poly8x16_t, poly8x16_t) +
    Form of expected instruction(s): vzip.8 q0, q1 +
+ +
5.50.3.67 Unzip elements
+ +
    +
  • uint32x2x2_t vuzp_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vuzp.32 d0, d1 +
+ +
    +
  • uint16x4x2_t vuzp_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vuzp.16 d0, d1 +
+ +
    +
  • uint8x8x2_t vuzp_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vuzp.8 d0, d1 +
+ +
    +
  • int32x2x2_t vuzp_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vuzp.32 d0, d1 +
+ +
    +
  • int16x4x2_t vuzp_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vuzp.16 d0, d1 +
+ +
    +
  • int8x8x2_t vuzp_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vuzp.8 d0, d1 +
+ +
    +
  • float32x2x2_t vuzp_f32 (float32x2_t, float32x2_t) +
    Form of expected instruction(s): vuzp.32 d0, d1 +
+ +
    +
  • poly16x4x2_t vuzp_p16 (poly16x4_t, poly16x4_t) +
    Form of expected instruction(s): vuzp.16 d0, d1 +
+ +
    +
  • poly8x8x2_t vuzp_p8 (poly8x8_t, poly8x8_t) +
    Form of expected instruction(s): vuzp.8 d0, d1 +
+ +
    +
  • uint32x4x2_t vuzpq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vuzp.32 q0, q1 +
+ +
    +
  • uint16x8x2_t vuzpq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vuzp.16 q0, q1 +
+ +
    +
  • uint8x16x2_t vuzpq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vuzp.8 q0, q1 +
+ +
    +
  • int32x4x2_t vuzpq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vuzp.32 q0, q1 +
+ +
    +
  • int16x8x2_t vuzpq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vuzp.16 q0, q1 +
+ +
    +
  • int8x16x2_t vuzpq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vuzp.8 q0, q1 +
+ +
    +
  • float32x4x2_t vuzpq_f32 (float32x4_t, float32x4_t) +
    Form of expected instruction(s): vuzp.32 q0, q1 +
+ +
    +
  • poly16x8x2_t vuzpq_p16 (poly16x8_t, poly16x8_t) +
    Form of expected instruction(s): vuzp.16 q0, q1 +
+ +
    +
  • poly8x16x2_t vuzpq_p8 (poly8x16_t, poly8x16_t) +
    Form of expected instruction(s): vuzp.8 q0, q1 +
+ +
5.50.3.68 Element/structure loads, VLD1 variants
+ +
    +
  • uint32x2_t vld1_u32 (const uint32_t *) +
    Form of expected instruction(s): vld1.32 {d0}, [r0] +
+ +
    +
  • uint16x4_t vld1_u16 (const uint16_t *) +
    Form of expected instruction(s): vld1.16 {d0}, [r0] +
+ +
    +
  • uint8x8_t vld1_u8 (const uint8_t *) +
    Form of expected instruction(s): vld1.8 {d0}, [r0] +
+ +
    +
  • int32x2_t vld1_s32 (const int32_t *) +
    Form of expected instruction(s): vld1.32 {d0}, [r0] +
+ +
    +
  • int16x4_t vld1_s16 (const int16_t *) +
    Form of expected instruction(s): vld1.16 {d0}, [r0] +
+ +
    +
  • int8x8_t vld1_s8 (const int8_t *) +
    Form of expected instruction(s): vld1.8 {d0}, [r0] +
+ +
    +
  • uint64x1_t vld1_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • int64x1_t vld1_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • float32x2_t vld1_f32 (const float32_t *) +
    Form of expected instruction(s): vld1.32 {d0}, [r0] +
+ +
    +
  • poly16x4_t vld1_p16 (const poly16_t *) +
    Form of expected instruction(s): vld1.16 {d0}, [r0] +
+ +
    +
  • poly8x8_t vld1_p8 (const poly8_t *) +
    Form of expected instruction(s): vld1.8 {d0}, [r0] +
+ +
    +
  • uint32x4_t vld1q_u32 (const uint32_t *) +
    Form of expected instruction(s): vld1.32 {d0, d1}, [r0] +
+ +
    +
  • uint16x8_t vld1q_u16 (const uint16_t *) +
    Form of expected instruction(s): vld1.16 {d0, d1}, [r0] +
+ +
    +
  • uint8x16_t vld1q_u8 (const uint8_t *) +
    Form of expected instruction(s): vld1.8 {d0, d1}, [r0] +
+ +
    +
  • int32x4_t vld1q_s32 (const int32_t *) +
    Form of expected instruction(s): vld1.32 {d0, d1}, [r0] +
+ +
    +
  • int16x8_t vld1q_s16 (const int16_t *) +
    Form of expected instruction(s): vld1.16 {d0, d1}, [r0] +
+ +
    +
  • int8x16_t vld1q_s8 (const int8_t *) +
    Form of expected instruction(s): vld1.8 {d0, d1}, [r0] +
+ +
    +
  • uint64x2_t vld1q_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
    +
  • int64x2_t vld1q_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
    +
  • float32x4_t vld1q_f32 (const float32_t *) +
    Form of expected instruction(s): vld1.32 {d0, d1}, [r0] +
+ +
    +
  • poly16x8_t vld1q_p16 (const poly16_t *) +
    Form of expected instruction(s): vld1.16 {d0, d1}, [r0] +
+ +
    +
  • poly8x16_t vld1q_p8 (const poly8_t *) +
    Form of expected instruction(s): vld1.8 {d0, d1}, [r0] +
+ +
    +
  • uint32x2_t vld1_lane_u32 (const uint32_t *, uint32x2_t, const int) +
    Form of expected instruction(s): vld1.32 {d0[0]}, [r0] +
+ +
    +
  • uint16x4_t vld1_lane_u16 (const uint16_t *, uint16x4_t, const int) +
    Form of expected instruction(s): vld1.16 {d0[0]}, [r0] +
+ +
    +
  • uint8x8_t vld1_lane_u8 (const uint8_t *, uint8x8_t, const int) +
    Form of expected instruction(s): vld1.8 {d0[0]}, [r0] +
+ +
    +
  • int32x2_t vld1_lane_s32 (const int32_t *, int32x2_t, const int) +
    Form of expected instruction(s): vld1.32 {d0[0]}, [r0] +
+ +
    +
  • int16x4_t vld1_lane_s16 (const int16_t *, int16x4_t, const int) +
    Form of expected instruction(s): vld1.16 {d0[0]}, [r0] +
+ +
    +
  • int8x8_t vld1_lane_s8 (const int8_t *, int8x8_t, const int) +
    Form of expected instruction(s): vld1.8 {d0[0]}, [r0] +
+ +
    +
  • float32x2_t vld1_lane_f32 (const float32_t *, float32x2_t, const int) +
    Form of expected instruction(s): vld1.32 {d0[0]}, [r0] +
+ +
    +
  • poly16x4_t vld1_lane_p16 (const poly16_t *, poly16x4_t, const int) +
    Form of expected instruction(s): vld1.16 {d0[0]}, [r0] +
+ +
    +
  • poly8x8_t vld1_lane_p8 (const poly8_t *, poly8x8_t, const int) +
    Form of expected instruction(s): vld1.8 {d0[0]}, [r0] +
+ +
    +
  • uint64x1_t vld1_lane_u64 (const uint64_t *, uint64x1_t, const int) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • int64x1_t vld1_lane_s64 (const int64_t *, int64x1_t, const int) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • uint32x4_t vld1q_lane_u32 (const uint32_t *, uint32x4_t, const int) +
    Form of expected instruction(s): vld1.32 {d0[0]}, [r0] +
+ +
    +
  • uint16x8_t vld1q_lane_u16 (const uint16_t *, uint16x8_t, const int) +
    Form of expected instruction(s): vld1.16 {d0[0]}, [r0] +
+ +
    +
  • uint8x16_t vld1q_lane_u8 (const uint8_t *, uint8x16_t, const int) +
    Form of expected instruction(s): vld1.8 {d0[0]}, [r0] +
+ +
    +
  • int32x4_t vld1q_lane_s32 (const int32_t *, int32x4_t, const int) +
    Form of expected instruction(s): vld1.32 {d0[0]}, [r0] +
+ +
    +
  • int16x8_t vld1q_lane_s16 (const int16_t *, int16x8_t, const int) +
    Form of expected instruction(s): vld1.16 {d0[0]}, [r0] +
+ +
    +
  • int8x16_t vld1q_lane_s8 (const int8_t *, int8x16_t, const int) +
    Form of expected instruction(s): vld1.8 {d0[0]}, [r0] +
+ +
    +
  • float32x4_t vld1q_lane_f32 (const float32_t *, float32x4_t, const int) +
    Form of expected instruction(s): vld1.32 {d0[0]}, [r0] +
+ +
    +
  • poly16x8_t vld1q_lane_p16 (const poly16_t *, poly16x8_t, const int) +
    Form of expected instruction(s): vld1.16 {d0[0]}, [r0] +
+ +
    +
  • poly8x16_t vld1q_lane_p8 (const poly8_t *, poly8x16_t, const int) +
    Form of expected instruction(s): vld1.8 {d0[0]}, [r0] +
+ +
    +
  • uint64x2_t vld1q_lane_u64 (const uint64_t *, uint64x2_t, const int) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • int64x2_t vld1q_lane_s64 (const int64_t *, int64x2_t, const int) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • uint32x2_t vld1_dup_u32 (const uint32_t *) +
    Form of expected instruction(s): vld1.32 {d0[]}, [r0] +
+ +
    +
  • uint16x4_t vld1_dup_u16 (const uint16_t *) +
    Form of expected instruction(s): vld1.16 {d0[]}, [r0] +
+ +
    +
  • uint8x8_t vld1_dup_u8 (const uint8_t *) +
    Form of expected instruction(s): vld1.8 {d0[]}, [r0] +
+ +
    +
  • int32x2_t vld1_dup_s32 (const int32_t *) +
    Form of expected instruction(s): vld1.32 {d0[]}, [r0] +
+ +
    +
  • int16x4_t vld1_dup_s16 (const int16_t *) +
    Form of expected instruction(s): vld1.16 {d0[]}, [r0] +
+ +
    +
  • int8x8_t vld1_dup_s8 (const int8_t *) +
    Form of expected instruction(s): vld1.8 {d0[]}, [r0] +
+ +
    +
  • float32x2_t vld1_dup_f32 (const float32_t *) +
    Form of expected instruction(s): vld1.32 {d0[]}, [r0] +
+ +
    +
  • poly16x4_t vld1_dup_p16 (const poly16_t *) +
    Form of expected instruction(s): vld1.16 {d0[]}, [r0] +
+ +
    +
  • poly8x8_t vld1_dup_p8 (const poly8_t *) +
    Form of expected instruction(s): vld1.8 {d0[]}, [r0] +
+ +
    +
  • uint64x1_t vld1_dup_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • int64x1_t vld1_dup_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0}, [r0] +
+ +
    +
  • uint32x4_t vld1q_dup_u32 (const uint32_t *) +
    Form of expected instruction(s): vld1.32 {d0[], d1[]}, [r0] +
+ +
    +
  • uint16x8_t vld1q_dup_u16 (const uint16_t *) +
    Form of expected instruction(s): vld1.16 {d0[], d1[]}, [r0] +
+ +
    +
  • uint8x16_t vld1q_dup_u8 (const uint8_t *) +
    Form of expected instruction(s): vld1.8 {d0[], d1[]}, [r0] +
+ +
    +
  • int32x4_t vld1q_dup_s32 (const int32_t *) +
    Form of expected instruction(s): vld1.32 {d0[], d1[]}, [r0] +
+ +
    +
  • int16x8_t vld1q_dup_s16 (const int16_t *) +
    Form of expected instruction(s): vld1.16 {d0[], d1[]}, [r0] +
+ +
    +
  • int8x16_t vld1q_dup_s8 (const int8_t *) +
    Form of expected instruction(s): vld1.8 {d0[], d1[]}, [r0] +
+ +
    +
  • float32x4_t vld1q_dup_f32 (const float32_t *) +
    Form of expected instruction(s): vld1.32 {d0[], d1[]}, [r0] +
+ +
    +
  • poly16x8_t vld1q_dup_p16 (const poly16_t *) +
    Form of expected instruction(s): vld1.16 {d0[], d1[]}, [r0] +
+ +
    +
  • poly8x16_t vld1q_dup_p8 (const poly8_t *) +
    Form of expected instruction(s): vld1.8 {d0[], d1[]}, [r0] +
+ +
    +
  • uint64x2_t vld1q_dup_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
    +
  • int64x2_t vld1q_dup_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
5.50.3.69 Element/structure stores, VST1 variants
+ +
    +
  • void vst1_u32 (uint32_t *, uint32x2_t) +
    Form of expected instruction(s): vst1.32 {d0}, [r0] +
+ +
    +
  • void vst1_u16 (uint16_t *, uint16x4_t) +
    Form of expected instruction(s): vst1.16 {d0}, [r0] +
+ +
    +
  • void vst1_u8 (uint8_t *, uint8x8_t) +
    Form of expected instruction(s): vst1.8 {d0}, [r0] +
+ +
    +
  • void vst1_s32 (int32_t *, int32x2_t) +
    Form of expected instruction(s): vst1.32 {d0}, [r0] +
+ +
    +
  • void vst1_s16 (int16_t *, int16x4_t) +
    Form of expected instruction(s): vst1.16 {d0}, [r0] +
+ +
    +
  • void vst1_s8 (int8_t *, int8x8_t) +
    Form of expected instruction(s): vst1.8 {d0}, [r0] +
+ +
    +
  • void vst1_u64 (uint64_t *, uint64x1_t) +
    Form of expected instruction(s): vst1.64 {d0}, [r0] +
+ +
    +
  • void vst1_s64 (int64_t *, int64x1_t) +
    Form of expected instruction(s): vst1.64 {d0}, [r0] +
+ +
    +
  • void vst1_f32 (float32_t *, float32x2_t) +
    Form of expected instruction(s): vst1.32 {d0}, [r0] +
+ +
    +
  • void vst1_p16 (poly16_t *, poly16x4_t) +
    Form of expected instruction(s): vst1.16 {d0}, [r0] +
+ +
    +
  • void vst1_p8 (poly8_t *, poly8x8_t) +
    Form of expected instruction(s): vst1.8 {d0}, [r0] +
+ +
    +
  • void vst1q_u32 (uint32_t *, uint32x4_t) +
    Form of expected instruction(s): vst1.32 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_u16 (uint16_t *, uint16x8_t) +
    Form of expected instruction(s): vst1.16 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_u8 (uint8_t *, uint8x16_t) +
    Form of expected instruction(s): vst1.8 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_s32 (int32_t *, int32x4_t) +
    Form of expected instruction(s): vst1.32 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_s16 (int16_t *, int16x8_t) +
    Form of expected instruction(s): vst1.16 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_s8 (int8_t *, int8x16_t) +
    Form of expected instruction(s): vst1.8 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_u64 (uint64_t *, uint64x2_t) +
    Form of expected instruction(s): vst1.64 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_s64 (int64_t *, int64x2_t) +
    Form of expected instruction(s): vst1.64 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_f32 (float32_t *, float32x4_t) +
    Form of expected instruction(s): vst1.32 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_p16 (poly16_t *, poly16x8_t) +
    Form of expected instruction(s): vst1.16 {d0, d1}, [r0] +
+ +
    +
  • void vst1q_p8 (poly8_t *, poly8x16_t) +
    Form of expected instruction(s): vst1.8 {d0, d1}, [r0] +
+ +
    +
  • void vst1_lane_u32 (uint32_t *, uint32x2_t, const int) +
    Form of expected instruction(s): vst1.32 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_u16 (uint16_t *, uint16x4_t, const int) +
    Form of expected instruction(s): vst1.16 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_u8 (uint8_t *, uint8x8_t, const int) +
    Form of expected instruction(s): vst1.8 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_s32 (int32_t *, int32x2_t, const int) +
    Form of expected instruction(s): vst1.32 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_s16 (int16_t *, int16x4_t, const int) +
    Form of expected instruction(s): vst1.16 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_s8 (int8_t *, int8x8_t, const int) +
    Form of expected instruction(s): vst1.8 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_f32 (float32_t *, float32x2_t, const int) +
    Form of expected instruction(s): vst1.32 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_p16 (poly16_t *, poly16x4_t, const int) +
    Form of expected instruction(s): vst1.16 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_p8 (poly8_t *, poly8x8_t, const int) +
    Form of expected instruction(s): vst1.8 {d0[0]}, [r0] +
+ +
    +
  • void vst1_lane_s64 (int64_t *, int64x1_t, const int) +
    Form of expected instruction(s): vst1.64 {d0}, [r0] +
+ +
    +
  • void vst1_lane_u64 (uint64_t *, uint64x1_t, const int) +
    Form of expected instruction(s): vst1.64 {d0}, [r0] +
+ +
    +
  • void vst1q_lane_u32 (uint32_t *, uint32x4_t, const int) +
    Form of expected instruction(s): vst1.32 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_u16 (uint16_t *, uint16x8_t, const int) +
    Form of expected instruction(s): vst1.16 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_u8 (uint8_t *, uint8x16_t, const int) +
    Form of expected instruction(s): vst1.8 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_s32 (int32_t *, int32x4_t, const int) +
    Form of expected instruction(s): vst1.32 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_s16 (int16_t *, int16x8_t, const int) +
    Form of expected instruction(s): vst1.16 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_s8 (int8_t *, int8x16_t, const int) +
    Form of expected instruction(s): vst1.8 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_f32 (float32_t *, float32x4_t, const int) +
    Form of expected instruction(s): vst1.32 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_p16 (poly16_t *, poly16x8_t, const int) +
    Form of expected instruction(s): vst1.16 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_p8 (poly8_t *, poly8x16_t, const int) +
    Form of expected instruction(s): vst1.8 {d0[0]}, [r0] +
+ +
    +
  • void vst1q_lane_s64 (int64_t *, int64x2_t, const int) +
    Form of expected instruction(s): vst1.64 {d0}, [r0] +
+ +
    +
  • void vst1q_lane_u64 (uint64_t *, uint64x2_t, const int) +
    Form of expected instruction(s): vst1.64 {d0}, [r0] +
+ +
5.50.3.70 Element/structure loads, VLD2 variants
+ +
    +
  • uint32x2x2_t vld2_u32 (const uint32_t *) +
    Form of expected instruction(s): vld2.32 {d0, d1}, [r0] +
+ +
    +
  • uint16x4x2_t vld2_u16 (const uint16_t *) +
    Form of expected instruction(s): vld2.16 {d0, d1}, [r0] +
+ +
    +
  • uint8x8x2_t vld2_u8 (const uint8_t *) +
    Form of expected instruction(s): vld2.8 {d0, d1}, [r0] +
+ +
    +
  • int32x2x2_t vld2_s32 (const int32_t *) +
    Form of expected instruction(s): vld2.32 {d0, d1}, [r0] +
+ +
    +
  • int16x4x2_t vld2_s16 (const int16_t *) +
    Form of expected instruction(s): vld2.16 {d0, d1}, [r0] +
+ +
    +
  • int8x8x2_t vld2_s8 (const int8_t *) +
    Form of expected instruction(s): vld2.8 {d0, d1}, [r0] +
+ +
    +
  • float32x2x2_t vld2_f32 (const float32_t *) +
    Form of expected instruction(s): vld2.32 {d0, d1}, [r0] +
+ +
    +
  • poly16x4x2_t vld2_p16 (const poly16_t *) +
    Form of expected instruction(s): vld2.16 {d0, d1}, [r0] +
+ +
    +
  • poly8x8x2_t vld2_p8 (const poly8_t *) +
    Form of expected instruction(s): vld2.8 {d0, d1}, [r0] +
+ +
    +
  • uint64x1x2_t vld2_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
    +
  • int64x1x2_t vld2_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
    +
  • uint32x4x2_t vld2q_u32 (const uint32_t *) +
    Form of expected instruction(s): vld2.32 {d0, d1}, [r0] +
+ +
    +
  • uint16x8x2_t vld2q_u16 (const uint16_t *) +
    Form of expected instruction(s): vld2.16 {d0, d1}, [r0] +
+ +
    +
  • uint8x16x2_t vld2q_u8 (const uint8_t *) +
    Form of expected instruction(s): vld2.8 {d0, d1}, [r0] +
+ +
    +
  • int32x4x2_t vld2q_s32 (const int32_t *) +
    Form of expected instruction(s): vld2.32 {d0, d1}, [r0] +
+ +
    +
  • int16x8x2_t vld2q_s16 (const int16_t *) +
    Form of expected instruction(s): vld2.16 {d0, d1}, [r0] +
+ +
    +
  • int8x16x2_t vld2q_s8 (const int8_t *) +
    Form of expected instruction(s): vld2.8 {d0, d1}, [r0] +
+ +
    +
  • float32x4x2_t vld2q_f32 (const float32_t *) +
    Form of expected instruction(s): vld2.32 {d0, d1}, [r0] +
+ +
    +
  • poly16x8x2_t vld2q_p16 (const poly16_t *) +
    Form of expected instruction(s): vld2.16 {d0, d1}, [r0] +
+ +
    +
  • poly8x16x2_t vld2q_p8 (const poly8_t *) +
    Form of expected instruction(s): vld2.8 {d0, d1}, [r0] +
+ +
    +
  • uint32x2x2_t vld2_lane_u32 (const uint32_t *, uint32x2x2_t, const int) +
    Form of expected instruction(s): vld2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • uint16x4x2_t vld2_lane_u16 (const uint16_t *, uint16x4x2_t, const int) +
    Form of expected instruction(s): vld2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • uint8x8x2_t vld2_lane_u8 (const uint8_t *, uint8x8x2_t, const int) +
    Form of expected instruction(s): vld2.8 {d0[0], d1[0]}, [r0] +
+ +
    +
  • int32x2x2_t vld2_lane_s32 (const int32_t *, int32x2x2_t, const int) +
    Form of expected instruction(s): vld2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • int16x4x2_t vld2_lane_s16 (const int16_t *, int16x4x2_t, const int) +
    Form of expected instruction(s): vld2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • int8x8x2_t vld2_lane_s8 (const int8_t *, int8x8x2_t, const int) +
    Form of expected instruction(s): vld2.8 {d0[0], d1[0]}, [r0] +
+ +
    +
  • float32x2x2_t vld2_lane_f32 (const float32_t *, float32x2x2_t, const int) +
    Form of expected instruction(s): vld2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • poly16x4x2_t vld2_lane_p16 (const poly16_t *, poly16x4x2_t, const int) +
    Form of expected instruction(s): vld2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • poly8x8x2_t vld2_lane_p8 (const poly8_t *, poly8x8x2_t, const int) +
    Form of expected instruction(s): vld2.8 {d0[0], d1[0]}, [r0] +
+ +
    +
  • int32x4x2_t vld2q_lane_s32 (const int32_t *, int32x4x2_t, const int) +
    Form of expected instruction(s): vld2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • int16x8x2_t vld2q_lane_s16 (const int16_t *, int16x8x2_t, const int) +
    Form of expected instruction(s): vld2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • uint32x4x2_t vld2q_lane_u32 (const uint32_t *, uint32x4x2_t, const int) +
    Form of expected instruction(s): vld2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • uint16x8x2_t vld2q_lane_u16 (const uint16_t *, uint16x8x2_t, const int) +
    Form of expected instruction(s): vld2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • float32x4x2_t vld2q_lane_f32 (const float32_t *, float32x4x2_t, const int) +
    Form of expected instruction(s): vld2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • poly16x8x2_t vld2q_lane_p16 (const poly16_t *, poly16x8x2_t, const int) +
    Form of expected instruction(s): vld2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • uint32x2x2_t vld2_dup_u32 (const uint32_t *) +
    Form of expected instruction(s): vld2.32 {d0[], d1[]}, [r0] +
+ +
    +
  • uint16x4x2_t vld2_dup_u16 (const uint16_t *) +
    Form of expected instruction(s): vld2.16 {d0[], d1[]}, [r0] +
+ +
    +
  • uint8x8x2_t vld2_dup_u8 (const uint8_t *) +
    Form of expected instruction(s): vld2.8 {d0[], d1[]}, [r0] +
+ +
    +
  • int32x2x2_t vld2_dup_s32 (const int32_t *) +
    Form of expected instruction(s): vld2.32 {d0[], d1[]}, [r0] +
+ +
    +
  • int16x4x2_t vld2_dup_s16 (const int16_t *) +
    Form of expected instruction(s): vld2.16 {d0[], d1[]}, [r0] +
+ +
    +
  • int8x8x2_t vld2_dup_s8 (const int8_t *) +
    Form of expected instruction(s): vld2.8 {d0[], d1[]}, [r0] +
+ +
    +
  • float32x2x2_t vld2_dup_f32 (const float32_t *) +
    Form of expected instruction(s): vld2.32 {d0[], d1[]}, [r0] +
+ +
    +
  • poly16x4x2_t vld2_dup_p16 (const poly16_t *) +
    Form of expected instruction(s): vld2.16 {d0[], d1[]}, [r0] +
+ +
    +
  • poly8x8x2_t vld2_dup_p8 (const poly8_t *) +
    Form of expected instruction(s): vld2.8 {d0[], d1[]}, [r0] +
+ +
    +
  • uint64x1x2_t vld2_dup_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
    +
  • int64x1x2_t vld2_dup_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1}, [r0] +
+ +
5.50.3.71 Element/structure stores, VST2 variants
+ +
    +
  • void vst2_u32 (uint32_t *, uint32x2x2_t) +
    Form of expected instruction(s): vst2.32 {d0, d1}, [r0] +
+ +
    +
  • void vst2_u16 (uint16_t *, uint16x4x2_t) +
    Form of expected instruction(s): vst2.16 {d0, d1}, [r0] +
+ +
    +
  • void vst2_u8 (uint8_t *, uint8x8x2_t) +
    Form of expected instruction(s): vst2.8 {d0, d1}, [r0] +
+ +
    +
  • void vst2_s32 (int32_t *, int32x2x2_t) +
    Form of expected instruction(s): vst2.32 {d0, d1}, [r0] +
+ +
    +
  • void vst2_s16 (int16_t *, int16x4x2_t) +
    Form of expected instruction(s): vst2.16 {d0, d1}, [r0] +
+ +
    +
  • void vst2_s8 (int8_t *, int8x8x2_t) +
    Form of expected instruction(s): vst2.8 {d0, d1}, [r0] +
+ +
    +
  • void vst2_f32 (float32_t *, float32x2x2_t) +
    Form of expected instruction(s): vst2.32 {d0, d1}, [r0] +
+ +
    +
  • void vst2_p16 (poly16_t *, poly16x4x2_t) +
    Form of expected instruction(s): vst2.16 {d0, d1}, [r0] +
+ +
    +
  • void vst2_p8 (poly8_t *, poly8x8x2_t) +
    Form of expected instruction(s): vst2.8 {d0, d1}, [r0] +
+ +
    +
  • void vst2_u64 (uint64_t *, uint64x1x2_t) +
    Form of expected instruction(s): vst1.64 {d0, d1}, [r0] +
+ +
    +
  • void vst2_s64 (int64_t *, int64x1x2_t) +
    Form of expected instruction(s): vst1.64 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_u32 (uint32_t *, uint32x4x2_t) +
    Form of expected instruction(s): vst2.32 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_u16 (uint16_t *, uint16x8x2_t) +
    Form of expected instruction(s): vst2.16 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_u8 (uint8_t *, uint8x16x2_t) +
    Form of expected instruction(s): vst2.8 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_s32 (int32_t *, int32x4x2_t) +
    Form of expected instruction(s): vst2.32 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_s16 (int16_t *, int16x8x2_t) +
    Form of expected instruction(s): vst2.16 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_s8 (int8_t *, int8x16x2_t) +
    Form of expected instruction(s): vst2.8 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_f32 (float32_t *, float32x4x2_t) +
    Form of expected instruction(s): vst2.32 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_p16 (poly16_t *, poly16x8x2_t) +
    Form of expected instruction(s): vst2.16 {d0, d1}, [r0] +
+ +
    +
  • void vst2q_p8 (poly8_t *, poly8x16x2_t) +
    Form of expected instruction(s): vst2.8 {d0, d1}, [r0] +
+ +
    +
  • void vst2_lane_u32 (uint32_t *, uint32x2x2_t, const int) +
    Form of expected instruction(s): vst2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_u16 (uint16_t *, uint16x4x2_t, const int) +
    Form of expected instruction(s): vst2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_u8 (uint8_t *, uint8x8x2_t, const int) +
    Form of expected instruction(s): vst2.8 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_s32 (int32_t *, int32x2x2_t, const int) +
    Form of expected instruction(s): vst2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_s16 (int16_t *, int16x4x2_t, const int) +
    Form of expected instruction(s): vst2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_s8 (int8_t *, int8x8x2_t, const int) +
    Form of expected instruction(s): vst2.8 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_f32 (float32_t *, float32x2x2_t, const int) +
    Form of expected instruction(s): vst2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_p16 (poly16_t *, poly16x4x2_t, const int) +
    Form of expected instruction(s): vst2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2_lane_p8 (poly8_t *, poly8x8x2_t, const int) +
    Form of expected instruction(s): vst2.8 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2q_lane_s32 (int32_t *, int32x4x2_t, const int) +
    Form of expected instruction(s): vst2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2q_lane_s16 (int16_t *, int16x8x2_t, const int) +
    Form of expected instruction(s): vst2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2q_lane_u32 (uint32_t *, uint32x4x2_t, const int) +
    Form of expected instruction(s): vst2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2q_lane_u16 (uint16_t *, uint16x8x2_t, const int) +
    Form of expected instruction(s): vst2.16 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2q_lane_f32 (float32_t *, float32x4x2_t, const int) +
    Form of expected instruction(s): vst2.32 {d0[0], d1[0]}, [r0] +
+ +
    +
  • void vst2q_lane_p16 (poly16_t *, poly16x8x2_t, const int) +
    Form of expected instruction(s): vst2.16 {d0[0], d1[0]}, [r0] +
+ +
5.50.3.72 Element/structure loads, VLD3 variants
+ +
    +
  • uint32x2x3_t vld3_u32 (const uint32_t *) +
    Form of expected instruction(s): vld3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • uint16x4x3_t vld3_u16 (const uint16_t *) +
    Form of expected instruction(s): vld3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • uint8x8x3_t vld3_u8 (const uint8_t *) +
    Form of expected instruction(s): vld3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • int32x2x3_t vld3_s32 (const int32_t *) +
    Form of expected instruction(s): vld3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • int16x4x3_t vld3_s16 (const int16_t *) +
    Form of expected instruction(s): vld3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • int8x8x3_t vld3_s8 (const int8_t *) +
    Form of expected instruction(s): vld3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • float32x2x3_t vld3_f32 (const float32_t *) +
    Form of expected instruction(s): vld3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • poly16x4x3_t vld3_p16 (const poly16_t *) +
    Form of expected instruction(s): vld3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • poly8x8x3_t vld3_p8 (const poly8_t *) +
    Form of expected instruction(s): vld3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • uint64x1x3_t vld3_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2}, [r0] +
+ +
    +
  • int64x1x3_t vld3_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2}, [r0] +
+ +
    +
  • uint32x4x3_t vld3q_u32 (const uint32_t *) +
    Form of expected instruction(s): vld3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • uint16x8x3_t vld3q_u16 (const uint16_t *) +
    Form of expected instruction(s): vld3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • uint8x16x3_t vld3q_u8 (const uint8_t *) +
    Form of expected instruction(s): vld3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • int32x4x3_t vld3q_s32 (const int32_t *) +
    Form of expected instruction(s): vld3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • int16x8x3_t vld3q_s16 (const int16_t *) +
    Form of expected instruction(s): vld3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • int8x16x3_t vld3q_s8 (const int8_t *) +
    Form of expected instruction(s): vld3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • float32x4x3_t vld3q_f32 (const float32_t *) +
    Form of expected instruction(s): vld3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • poly16x8x3_t vld3q_p16 (const poly16_t *) +
    Form of expected instruction(s): vld3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • poly8x16x3_t vld3q_p8 (const poly8_t *) +
    Form of expected instruction(s): vld3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • uint32x2x3_t vld3_lane_u32 (const uint32_t *, uint32x2x3_t, const int) +
    Form of expected instruction(s): vld3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • uint16x4x3_t vld3_lane_u16 (const uint16_t *, uint16x4x3_t, const int) +
    Form of expected instruction(s): vld3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • uint8x8x3_t vld3_lane_u8 (const uint8_t *, uint8x8x3_t, const int) +
    Form of expected instruction(s): vld3.8 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • int32x2x3_t vld3_lane_s32 (const int32_t *, int32x2x3_t, const int) +
    Form of expected instruction(s): vld3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • int16x4x3_t vld3_lane_s16 (const int16_t *, int16x4x3_t, const int) +
    Form of expected instruction(s): vld3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • int8x8x3_t vld3_lane_s8 (const int8_t *, int8x8x3_t, const int) +
    Form of expected instruction(s): vld3.8 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • float32x2x3_t vld3_lane_f32 (const float32_t *, float32x2x3_t, const int) +
    Form of expected instruction(s): vld3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • poly16x4x3_t vld3_lane_p16 (const poly16_t *, poly16x4x3_t, const int) +
    Form of expected instruction(s): vld3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • poly8x8x3_t vld3_lane_p8 (const poly8_t *, poly8x8x3_t, const int) +
    Form of expected instruction(s): vld3.8 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • int32x4x3_t vld3q_lane_s32 (const int32_t *, int32x4x3_t, const int) +
    Form of expected instruction(s): vld3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • int16x8x3_t vld3q_lane_s16 (const int16_t *, int16x8x3_t, const int) +
    Form of expected instruction(s): vld3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • uint32x4x3_t vld3q_lane_u32 (const uint32_t *, uint32x4x3_t, const int) +
    Form of expected instruction(s): vld3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • uint16x8x3_t vld3q_lane_u16 (const uint16_t *, uint16x8x3_t, const int) +
    Form of expected instruction(s): vld3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • float32x4x3_t vld3q_lane_f32 (const float32_t *, float32x4x3_t, const int) +
    Form of expected instruction(s): vld3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • poly16x8x3_t vld3q_lane_p16 (const poly16_t *, poly16x8x3_t, const int) +
    Form of expected instruction(s): vld3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • uint32x2x3_t vld3_dup_u32 (const uint32_t *) +
    Form of expected instruction(s): vld3.32 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • uint16x4x3_t vld3_dup_u16 (const uint16_t *) +
    Form of expected instruction(s): vld3.16 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • uint8x8x3_t vld3_dup_u8 (const uint8_t *) +
    Form of expected instruction(s): vld3.8 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • int32x2x3_t vld3_dup_s32 (const int32_t *) +
    Form of expected instruction(s): vld3.32 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • int16x4x3_t vld3_dup_s16 (const int16_t *) +
    Form of expected instruction(s): vld3.16 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • int8x8x3_t vld3_dup_s8 (const int8_t *) +
    Form of expected instruction(s): vld3.8 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • float32x2x3_t vld3_dup_f32 (const float32_t *) +
    Form of expected instruction(s): vld3.32 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • poly16x4x3_t vld3_dup_p16 (const poly16_t *) +
    Form of expected instruction(s): vld3.16 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • poly8x8x3_t vld3_dup_p8 (const poly8_t *) +
    Form of expected instruction(s): vld3.8 {d0[], d1[], d2[]}, [r0] +
+ +
    +
  • uint64x1x3_t vld3_dup_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2}, [r0] +
+ +
    +
  • int64x1x3_t vld3_dup_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2}, [r0] +
+ +
5.50.3.73 Element/structure stores, VST3 variants
+ +
    +
  • void vst3_u32 (uint32_t *, uint32x2x3_t) +
    Form of expected instruction(s): vst3.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_u16 (uint16_t *, uint16x4x3_t) +
    Form of expected instruction(s): vst3.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_u8 (uint8_t *, uint8x8x3_t) +
    Form of expected instruction(s): vst3.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_s32 (int32_t *, int32x2x3_t) +
    Form of expected instruction(s): vst3.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_s16 (int16_t *, int16x4x3_t) +
    Form of expected instruction(s): vst3.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_s8 (int8_t *, int8x8x3_t) +
    Form of expected instruction(s): vst3.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_f32 (float32_t *, float32x2x3_t) +
    Form of expected instruction(s): vst3.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_p16 (poly16_t *, poly16x4x3_t) +
    Form of expected instruction(s): vst3.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_p8 (poly8_t *, poly8x8x3_t) +
    Form of expected instruction(s): vst3.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_u64 (uint64_t *, uint64x1x3_t) +
    Form of expected instruction(s): vst1.64 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3_s64 (int64_t *, int64x1x3_t) +
    Form of expected instruction(s): vst1.64 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst3q_u32 (uint32_t *, uint32x4x3_t) +
    Form of expected instruction(s): vst3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_u16 (uint16_t *, uint16x8x3_t) +
    Form of expected instruction(s): vst3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_u8 (uint8_t *, uint8x16x3_t) +
    Form of expected instruction(s): vst3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_s32 (int32_t *, int32x4x3_t) +
    Form of expected instruction(s): vst3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_s16 (int16_t *, int16x8x3_t) +
    Form of expected instruction(s): vst3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_s8 (int8_t *, int8x16x3_t) +
    Form of expected instruction(s): vst3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_f32 (float32_t *, float32x4x3_t) +
    Form of expected instruction(s): vst3.32 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_p16 (poly16_t *, poly16x8x3_t) +
    Form of expected instruction(s): vst3.16 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3q_p8 (poly8_t *, poly8x16x3_t) +
    Form of expected instruction(s): vst3.8 {d0, d1, d2}, [r0] +
+ +
    +
  • void vst3_lane_u32 (uint32_t *, uint32x2x3_t, const int) +
    Form of expected instruction(s): vst3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_u16 (uint16_t *, uint16x4x3_t, const int) +
    Form of expected instruction(s): vst3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_u8 (uint8_t *, uint8x8x3_t, const int) +
    Form of expected instruction(s): vst3.8 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_s32 (int32_t *, int32x2x3_t, const int) +
    Form of expected instruction(s): vst3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_s16 (int16_t *, int16x4x3_t, const int) +
    Form of expected instruction(s): vst3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_s8 (int8_t *, int8x8x3_t, const int) +
    Form of expected instruction(s): vst3.8 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_f32 (float32_t *, float32x2x3_t, const int) +
    Form of expected instruction(s): vst3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_p16 (poly16_t *, poly16x4x3_t, const int) +
    Form of expected instruction(s): vst3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3_lane_p8 (poly8_t *, poly8x8x3_t, const int) +
    Form of expected instruction(s): vst3.8 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3q_lane_s32 (int32_t *, int32x4x3_t, const int) +
    Form of expected instruction(s): vst3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3q_lane_s16 (int16_t *, int16x8x3_t, const int) +
    Form of expected instruction(s): vst3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3q_lane_u32 (uint32_t *, uint32x4x3_t, const int) +
    Form of expected instruction(s): vst3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3q_lane_u16 (uint16_t *, uint16x8x3_t, const int) +
    Form of expected instruction(s): vst3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3q_lane_f32 (float32_t *, float32x4x3_t, const int) +
    Form of expected instruction(s): vst3.32 {d0[0], d1[0], d2[0]}, [r0] +
+ +
    +
  • void vst3q_lane_p16 (poly16_t *, poly16x8x3_t, const int) +
    Form of expected instruction(s): vst3.16 {d0[0], d1[0], d2[0]}, [r0] +
+ +
5.50.3.74 Element/structure loads, VLD4 variants
+ +
    +
  • uint32x2x4_t vld4_u32 (const uint32_t *) +
    Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • uint16x4x4_t vld4_u16 (const uint16_t *) +
    Form of expected instruction(s): vld4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • uint8x8x4_t vld4_u8 (const uint8_t *) +
    Form of expected instruction(s): vld4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int32x2x4_t vld4_s32 (const int32_t *) +
    Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int16x4x4_t vld4_s16 (const int16_t *) +
    Form of expected instruction(s): vld4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int8x8x4_t vld4_s8 (const int8_t *) +
    Form of expected instruction(s): vld4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • float32x2x4_t vld4_f32 (const float32_t *) +
    Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • poly16x4x4_t vld4_p16 (const poly16_t *) +
    Form of expected instruction(s): vld4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • poly8x8x4_t vld4_p8 (const poly8_t *) +
    Form of expected instruction(s): vld4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • uint64x1x4_t vld4_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int64x1x4_t vld4_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • uint32x4x4_t vld4q_u32 (const uint32_t *) +
    Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • uint16x8x4_t vld4q_u16 (const uint16_t *) +
    Form of expected instruction(s): vld4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • uint8x16x4_t vld4q_u8 (const uint8_t *) +
    Form of expected instruction(s): vld4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int32x4x4_t vld4q_s32 (const int32_t *) +
    Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int16x8x4_t vld4q_s16 (const int16_t *) +
    Form of expected instruction(s): vld4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int8x16x4_t vld4q_s8 (const int8_t *) +
    Form of expected instruction(s): vld4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • float32x4x4_t vld4q_f32 (const float32_t *) +
    Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • poly16x8x4_t vld4q_p16 (const poly16_t *) +
    Form of expected instruction(s): vld4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • poly8x16x4_t vld4q_p8 (const poly8_t *) +
    Form of expected instruction(s): vld4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • uint32x2x4_t vld4_lane_u32 (const uint32_t *, uint32x2x4_t, const int) +
    Form of expected instruction(s): vld4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • uint16x4x4_t vld4_lane_u16 (const uint16_t *, uint16x4x4_t, const int) +
    Form of expected instruction(s): vld4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • uint8x8x4_t vld4_lane_u8 (const uint8_t *, uint8x8x4_t, const int) +
    Form of expected instruction(s): vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • int32x2x4_t vld4_lane_s32 (const int32_t *, int32x2x4_t, const int) +
    Form of expected instruction(s): vld4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • int16x4x4_t vld4_lane_s16 (const int16_t *, int16x4x4_t, const int) +
    Form of expected instruction(s): vld4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • int8x8x4_t vld4_lane_s8 (const int8_t *, int8x8x4_t, const int) +
    Form of expected instruction(s): vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • float32x2x4_t vld4_lane_f32 (const float32_t *, float32x2x4_t, const int) +
    Form of expected instruction(s): vld4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • poly16x4x4_t vld4_lane_p16 (const poly16_t *, poly16x4x4_t, const int) +
    Form of expected instruction(s): vld4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • poly8x8x4_t vld4_lane_p8 (const poly8_t *, poly8x8x4_t, const int) +
    Form of expected instruction(s): vld4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • int32x4x4_t vld4q_lane_s32 (const int32_t *, int32x4x4_t, const int) +
    Form of expected instruction(s): vld4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • int16x8x4_t vld4q_lane_s16 (const int16_t *, int16x8x4_t, const int) +
    Form of expected instruction(s): vld4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • uint32x4x4_t vld4q_lane_u32 (const uint32_t *, uint32x4x4_t, const int) +
    Form of expected instruction(s): vld4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • uint16x8x4_t vld4q_lane_u16 (const uint16_t *, uint16x8x4_t, const int) +
    Form of expected instruction(s): vld4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • float32x4x4_t vld4q_lane_f32 (const float32_t *, float32x4x4_t, const int) +
    Form of expected instruction(s): vld4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • poly16x8x4_t vld4q_lane_p16 (const poly16_t *, poly16x8x4_t, const int) +
    Form of expected instruction(s): vld4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • uint32x2x4_t vld4_dup_u32 (const uint32_t *) +
    Form of expected instruction(s): vld4.32 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • uint16x4x4_t vld4_dup_u16 (const uint16_t *) +
    Form of expected instruction(s): vld4.16 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • uint8x8x4_t vld4_dup_u8 (const uint8_t *) +
    Form of expected instruction(s): vld4.8 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • int32x2x4_t vld4_dup_s32 (const int32_t *) +
    Form of expected instruction(s): vld4.32 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • int16x4x4_t vld4_dup_s16 (const int16_t *) +
    Form of expected instruction(s): vld4.16 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • int8x8x4_t vld4_dup_s8 (const int8_t *) +
    Form of expected instruction(s): vld4.8 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • float32x2x4_t vld4_dup_f32 (const float32_t *) +
    Form of expected instruction(s): vld4.32 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • poly16x4x4_t vld4_dup_p16 (const poly16_t *) +
    Form of expected instruction(s): vld4.16 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • poly8x8x4_t vld4_dup_p8 (const poly8_t *) +
    Form of expected instruction(s): vld4.8 {d0[], d1[], d2[], d3[]}, [r0] +
+ +
    +
  • uint64x1x4_t vld4_dup_u64 (const uint64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • int64x1x4_t vld4_dup_s64 (const int64_t *) +
    Form of expected instruction(s): vld1.64 {d0, d1, d2, d3}, [r0] +
+ +
5.50.3.75 Element/structure stores, VST4 variants
+ +
    +
  • void vst4_u32 (uint32_t *, uint32x2x4_t) +
    Form of expected instruction(s): vst4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_u16 (uint16_t *, uint16x4x4_t) +
    Form of expected instruction(s): vst4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_u8 (uint8_t *, uint8x8x4_t) +
    Form of expected instruction(s): vst4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_s32 (int32_t *, int32x2x4_t) +
    Form of expected instruction(s): vst4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_s16 (int16_t *, int16x4x4_t) +
    Form of expected instruction(s): vst4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_s8 (int8_t *, int8x8x4_t) +
    Form of expected instruction(s): vst4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_f32 (float32_t *, float32x2x4_t) +
    Form of expected instruction(s): vst4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_p16 (poly16_t *, poly16x4x4_t) +
    Form of expected instruction(s): vst4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_p8 (poly8_t *, poly8x8x4_t) +
    Form of expected instruction(s): vst4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_u64 (uint64_t *, uint64x1x4_t) +
    Form of expected instruction(s): vst1.64 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_s64 (int64_t *, int64x1x4_t) +
    Form of expected instruction(s): vst1.64 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_u32 (uint32_t *, uint32x4x4_t) +
    Form of expected instruction(s): vst4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_u16 (uint16_t *, uint16x8x4_t) +
    Form of expected instruction(s): vst4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_u8 (uint8_t *, uint8x16x4_t) +
    Form of expected instruction(s): vst4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_s32 (int32_t *, int32x4x4_t) +
    Form of expected instruction(s): vst4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_s16 (int16_t *, int16x8x4_t) +
    Form of expected instruction(s): vst4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_s8 (int8_t *, int8x16x4_t) +
    Form of expected instruction(s): vst4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_f32 (float32_t *, float32x4x4_t) +
    Form of expected instruction(s): vst4.32 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_p16 (poly16_t *, poly16x8x4_t) +
    Form of expected instruction(s): vst4.16 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4q_p8 (poly8_t *, poly8x16x4_t) +
    Form of expected instruction(s): vst4.8 {d0, d1, d2, d3}, [r0] +
+ +
    +
  • void vst4_lane_u32 (uint32_t *, uint32x2x4_t, const int) +
    Form of expected instruction(s): vst4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_u16 (uint16_t *, uint16x4x4_t, const int) +
    Form of expected instruction(s): vst4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_u8 (uint8_t *, uint8x8x4_t, const int) +
    Form of expected instruction(s): vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_s32 (int32_t *, int32x2x4_t, const int) +
    Form of expected instruction(s): vst4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_s16 (int16_t *, int16x4x4_t, const int) +
    Form of expected instruction(s): vst4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_s8 (int8_t *, int8x8x4_t, const int) +
    Form of expected instruction(s): vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_f32 (float32_t *, float32x2x4_t, const int) +
    Form of expected instruction(s): vst4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_p16 (poly16_t *, poly16x4x4_t, const int) +
    Form of expected instruction(s): vst4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4_lane_p8 (poly8_t *, poly8x8x4_t, const int) +
    Form of expected instruction(s): vst4.8 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4q_lane_s32 (int32_t *, int32x4x4_t, const int) +
    Form of expected instruction(s): vst4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4q_lane_s16 (int16_t *, int16x8x4_t, const int) +
    Form of expected instruction(s): vst4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4q_lane_u32 (uint32_t *, uint32x4x4_t, const int) +
    Form of expected instruction(s): vst4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4q_lane_u16 (uint16_t *, uint16x8x4_t, const int) +
    Form of expected instruction(s): vst4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4q_lane_f32 (float32_t *, float32x4x4_t, const int) +
    Form of expected instruction(s): vst4.32 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
    +
  • void vst4q_lane_p16 (poly16_t *, poly16x8x4_t, const int) +
    Form of expected instruction(s): vst4.16 {d0[0], d1[0], d2[0], d3[0]}, [r0] +
+ +
5.50.3.76 Logical operations (AND)
+ +
    +
  • uint32x2_t vand_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • uint16x4_t vand_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • uint8x8_t vand_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • int32x2_t vand_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • int16x4_t vand_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • int8x8_t vand_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • uint64x1_t vand_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • int64x1_t vand_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vand d0, d0, d0 +
+ +
    +
  • uint32x4_t vandq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
    +
  • uint16x8_t vandq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
    +
  • uint8x16_t vandq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
    +
  • int32x4_t vandq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
    +
  • int16x8_t vandq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
    +
  • int8x16_t vandq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
    +
  • uint64x2_t vandq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
    +
  • int64x2_t vandq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vand q0, q0, q0 +
+ +
5.50.3.77 Logical operations (OR)
+ +
    +
  • uint32x2_t vorr_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • uint16x4_t vorr_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • uint8x8_t vorr_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • int32x2_t vorr_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • int16x4_t vorr_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • int8x8_t vorr_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • uint64x1_t vorr_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • int64x1_t vorr_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vorr d0, d0, d0 +
+ +
    +
  • uint32x4_t vorrq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
    +
  • uint16x8_t vorrq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
    +
  • uint8x16_t vorrq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
    +
  • int32x4_t vorrq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
    +
  • int16x8_t vorrq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
    +
  • int8x16_t vorrq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
    +
  • uint64x2_t vorrq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
    +
  • int64x2_t vorrq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vorr q0, q0, q0 +
+ +
5.50.3.78 Logical operations (exclusive OR)
+ +
    +
  • uint32x2_t veor_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • uint16x4_t veor_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • uint8x8_t veor_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • int32x2_t veor_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • int16x4_t veor_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • int8x8_t veor_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • uint64x1_t veor_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • int64x1_t veor_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): veor d0, d0, d0 +
+ +
    +
  • uint32x4_t veorq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
    +
  • uint16x8_t veorq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
    +
  • uint8x16_t veorq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
    +
  • int32x4_t veorq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
    +
  • int16x8_t veorq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
    +
  • int8x16_t veorq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
    +
  • uint64x2_t veorq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
    +
  • int64x2_t veorq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): veor q0, q0, q0 +
+ +
5.50.3.79 Logical operations (AND-NOT)
+ +
    +
  • uint32x2_t vbic_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • uint16x4_t vbic_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • uint8x8_t vbic_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • int32x2_t vbic_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • int16x4_t vbic_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • int8x8_t vbic_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • uint64x1_t vbic_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • int64x1_t vbic_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vbic d0, d0, d0 +
+ +
    +
  • uint32x4_t vbicq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
    +
  • uint16x8_t vbicq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
    +
  • uint8x16_t vbicq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
    +
  • int32x4_t vbicq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
    +
  • int16x8_t vbicq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
    +
  • int8x16_t vbicq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
    +
  • uint64x2_t vbicq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
    +
  • int64x2_t vbicq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vbic q0, q0, q0 +
+ +
5.50.3.80 Logical operations (OR-NOT)
+ +
    +
  • uint32x2_t vorn_u32 (uint32x2_t, uint32x2_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • uint16x4_t vorn_u16 (uint16x4_t, uint16x4_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • uint8x8_t vorn_u8 (uint8x8_t, uint8x8_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • int32x2_t vorn_s32 (int32x2_t, int32x2_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • int16x4_t vorn_s16 (int16x4_t, int16x4_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • int8x8_t vorn_s8 (int8x8_t, int8x8_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • uint64x1_t vorn_u64 (uint64x1_t, uint64x1_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • int64x1_t vorn_s64 (int64x1_t, int64x1_t) +
    Form of expected instruction(s): vorn d0, d0, d0 +
+ +
    +
  • uint32x4_t vornq_u32 (uint32x4_t, uint32x4_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
    +
  • uint16x8_t vornq_u16 (uint16x8_t, uint16x8_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
    +
  • uint8x16_t vornq_u8 (uint8x16_t, uint8x16_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
    +
  • int32x4_t vornq_s32 (int32x4_t, int32x4_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
    +
  • int16x8_t vornq_s16 (int16x8_t, int16x8_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
    +
  • int8x16_t vornq_s8 (int8x16_t, int8x16_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
    +
  • uint64x2_t vornq_u64 (uint64x2_t, uint64x2_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
    +
  • int64x2_t vornq_s64 (int64x2_t, int64x2_t) +
    Form of expected instruction(s): vorn q0, q0, q0 +
+ +
5.50.3.81 Reinterpret casts
+ +
    +
  • poly8x8_t vreinterpret_p8_u32 (uint32x2_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_u16 (uint16x4_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_u8 (uint8x8_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_s32 (int32x2_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_s16 (int16x4_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_s8 (int8x8_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_u64 (uint64x1_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_s64 (int64x1_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_f32 (float32x2_t) +
+ +
    +
  • poly8x8_t vreinterpret_p8_p16 (poly16x4_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_u32 (uint32x4_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_u16 (uint16x8_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_u8 (uint8x16_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_s32 (int32x4_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_s16 (int16x8_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_s8 (int8x16_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_u64 (uint64x2_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_s64 (int64x2_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_f32 (float32x4_t) +
+ +
    +
  • poly8x16_t vreinterpretq_p8_p16 (poly16x8_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_u32 (uint32x2_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_u16 (uint16x4_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_u8 (uint8x8_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_s32 (int32x2_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_s16 (int16x4_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_s8 (int8x8_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_u64 (uint64x1_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_s64 (int64x1_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_f32 (float32x2_t) +
+ +
    +
  • poly16x4_t vreinterpret_p16_p8 (poly8x8_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_u32 (uint32x4_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_u16 (uint16x8_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_u8 (uint8x16_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_s32 (int32x4_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_s16 (int16x8_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_s8 (int8x16_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_u64 (uint64x2_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_s64 (int64x2_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_f32 (float32x4_t) +
+ +
    +
  • poly16x8_t vreinterpretq_p16_p8 (poly8x16_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_u32 (uint32x2_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_u16 (uint16x4_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_u8 (uint8x8_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_s32 (int32x2_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_s16 (int16x4_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_s8 (int8x8_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_u64 (uint64x1_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_s64 (int64x1_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_p16 (poly16x4_t) +
+ +
    +
  • float32x2_t vreinterpret_f32_p8 (poly8x8_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_u32 (uint32x4_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_u16 (uint16x8_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_u8 (uint8x16_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_s32 (int32x4_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_s16 (int16x8_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_s8 (int8x16_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_u64 (uint64x2_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_s64 (int64x2_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_p16 (poly16x8_t) +
+ +
    +
  • float32x4_t vreinterpretq_f32_p8 (poly8x16_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_u32 (uint32x2_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_u16 (uint16x4_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_u8 (uint8x8_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_s32 (int32x2_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_s16 (int16x4_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_s8 (int8x8_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_u64 (uint64x1_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_f32 (float32x2_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_p16 (poly16x4_t) +
+ +
    +
  • int64x1_t vreinterpret_s64_p8 (poly8x8_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_u32 (uint32x4_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_u16 (uint16x8_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_u8 (uint8x16_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_s32 (int32x4_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_s16 (int16x8_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_s8 (int8x16_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_u64 (uint64x2_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_f32 (float32x4_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_p16 (poly16x8_t) +
+ +
    +
  • int64x2_t vreinterpretq_s64_p8 (poly8x16_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_u32 (uint32x2_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_u16 (uint16x4_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_u8 (uint8x8_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_s32 (int32x2_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_s16 (int16x4_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_s8 (int8x8_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_s64 (int64x1_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_f32 (float32x2_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_p16 (poly16x4_t) +
+ +
    +
  • uint64x1_t vreinterpret_u64_p8 (poly8x8_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_u32 (uint32x4_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_u16 (uint16x8_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_u8 (uint8x16_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_s32 (int32x4_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_s16 (int16x8_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_s8 (int8x16_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_s64 (int64x2_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_f32 (float32x4_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_p16 (poly16x8_t) +
+ +
    +
  • uint64x2_t vreinterpretq_u64_p8 (poly8x16_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_u32 (uint32x2_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_u16 (uint16x4_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_u8 (uint8x8_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_s32 (int32x2_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_s16 (int16x4_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_u64 (uint64x1_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_s64 (int64x1_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_f32 (float32x2_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_p16 (poly16x4_t) +
+ +
    +
  • int8x8_t vreinterpret_s8_p8 (poly8x8_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_u32 (uint32x4_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_u16 (uint16x8_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_u8 (uint8x16_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_s32 (int32x4_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_s16 (int16x8_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_u64 (uint64x2_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_s64 (int64x2_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_f32 (float32x4_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_p16 (poly16x8_t) +
+ +
    +
  • int8x16_t vreinterpretq_s8_p8 (poly8x16_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_u32 (uint32x2_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_u16 (uint16x4_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_u8 (uint8x8_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_s32 (int32x2_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_s8 (int8x8_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_u64 (uint64x1_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_s64 (int64x1_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_f32 (float32x2_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_p16 (poly16x4_t) +
+ +
    +
  • int16x4_t vreinterpret_s16_p8 (poly8x8_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_u32 (uint32x4_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_u16 (uint16x8_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_u8 (uint8x16_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_s32 (int32x4_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_s8 (int8x16_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_u64 (uint64x2_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_s64 (int64x2_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_f32 (float32x4_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_p16 (poly16x8_t) +
+ +
    +
  • int16x8_t vreinterpretq_s16_p8 (poly8x16_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_u32 (uint32x2_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_u16 (uint16x4_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_u8 (uint8x8_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_s16 (int16x4_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_s8 (int8x8_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_u64 (uint64x1_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_s64 (int64x1_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_f32 (float32x2_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_p16 (poly16x4_t) +
+ +
    +
  • int32x2_t vreinterpret_s32_p8 (poly8x8_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_u32 (uint32x4_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_u16 (uint16x8_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_u8 (uint8x16_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_s16 (int16x8_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_s8 (int8x16_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_u64 (uint64x2_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_s64 (int64x2_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_f32 (float32x4_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_p16 (poly16x8_t) +
+ +
    +
  • int32x4_t vreinterpretq_s32_p8 (poly8x16_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_u32 (uint32x2_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_u16 (uint16x4_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_s32 (int32x2_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_s16 (int16x4_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_s8 (int8x8_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_u64 (uint64x1_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_s64 (int64x1_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_f32 (float32x2_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_p16 (poly16x4_t) +
+ +
    +
  • uint8x8_t vreinterpret_u8_p8 (poly8x8_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_u32 (uint32x4_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_u16 (uint16x8_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_s32 (int32x4_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_s16 (int16x8_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_s8 (int8x16_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_u64 (uint64x2_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_s64 (int64x2_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_f32 (float32x4_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_p16 (poly16x8_t) +
+ +
    +
  • uint8x16_t vreinterpretq_u8_p8 (poly8x16_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_u32 (uint32x2_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_u8 (uint8x8_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_s32 (int32x2_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_s16 (int16x4_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_s8 (int8x8_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_u64 (uint64x1_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_s64 (int64x1_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_f32 (float32x2_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_p16 (poly16x4_t) +
+ +
    +
  • uint16x4_t vreinterpret_u16_p8 (poly8x8_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_u32 (uint32x4_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_u8 (uint8x16_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_s32 (int32x4_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_s16 (int16x8_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_s8 (int8x16_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_u64 (uint64x2_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_s64 (int64x2_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_f32 (float32x4_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_p16 (poly16x8_t) +
+ +
    +
  • uint16x8_t vreinterpretq_u16_p8 (poly8x16_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_u16 (uint16x4_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_u8 (uint8x8_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_s32 (int32x2_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_s16 (int16x4_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_s8 (int8x8_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_u64 (uint64x1_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_s64 (int64x1_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_f32 (float32x2_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_p16 (poly16x4_t) +
+ +
    +
  • uint32x2_t vreinterpret_u32_p8 (poly8x8_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_u16 (uint16x8_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_u8 (uint8x16_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_s32 (int32x4_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_s16 (int16x8_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_s8 (int8x16_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_u64 (uint64x2_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_s64 (int64x2_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_f32 (float32x4_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_p16 (poly16x8_t) +
+ +
    +
  • uint32x4_t vreinterpretq_u32_p8 (poly8x16_t) +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-Options.html new file mode 100644 index 0000000..0cab1be --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-Options.html @@ -0,0 +1,282 @@ + + +ARM Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: ARC Options, +Up: Submodel Options +



+
+ +

3.17.2 ARM Options

+ +

+These -m options are defined for Advanced RISC Machines (ARM) +architectures: + +

+
-mabi=name
Generate code for the specified ABI. Permissible values are: apcs-gnu, +atpcs, aapcs, aapcs-linux and iwmmxt. + +
-mapcs-frame
Generate a stack frame that is compliant with the ARM Procedure Call +Standard for all functions, even if this is not strictly necessary for +correct execution of the code. Specifying -fomit-frame-pointer +with this option will cause the stack frames not to be generated for +leaf functions. The default is -mno-apcs-frame. + +
-mapcs
This is a synonym for -mapcs-frame. + +
-mthumb-interwork
Generate code which supports calling between the ARM and Thumb +instruction sets. Without this option the two instruction sets cannot +be reliably used inside one program. The default is +-mno-thumb-interwork, since slightly larger code is generated +when -mthumb-interwork is specified. + +
-mno-sched-prolog
Prevent the reordering of instructions in the function prolog, or the +merging of those instruction with the instructions in the function's +body. This means that all functions will start with a recognizable set +of instructions (or in fact one of a choice from a small set of +different function prologues), and this information can be used to +locate the start if functions inside an executable piece of code. The +default is -msched-prolog. + +
-mhard-float
Generate output containing floating point instructions. This is the +default. + +
-msoft-float
Generate output containing library calls for floating point. +Warning: the requisite libraries are not available for all ARM +targets. Normally the facilities of the machine's usual C compiler are +used, but this cannot be done directly in cross-compilation. You must make +your own arrangements to provide suitable library functions for +cross-compilation. + +

-msoft-float changes the calling convention in the output file; +therefore, it is only useful if you compile all of a program with +this option. In particular, you need to compile libgcc.a, the +library that comes with GCC, with -msoft-float in order for +this to work. + +

-mfloat-abi=name
Specifies which ABI to use for floating point values. Permissible values +are: soft, softfp and hard. + +

soft and hard are equivalent to -msoft-float +and -mhard-float respectively. softfp allows the generation +of floating point instructions, but still uses the soft-float calling +conventions. + +

-mlittle-endian
Generate code for a processor running in little-endian mode. This is +the default for all standard configurations. + +
-mbig-endian
Generate code for a processor running in big-endian mode; the default is +to compile code for a little-endian processor. + +
-mwords-little-endian
This option only applies when generating code for big-endian processors. +Generate code for a little-endian word order but a big-endian byte +order. That is, a byte order of the form 32107654. Note: this +option should only be used if you require compatibility with code for +big-endian ARM processors generated by versions of the compiler prior to +2.8. + +
-mcpu=name
This specifies the name of the target ARM processor. GCC uses this name +to determine what kind of instructions it can emit when generating +assembly code. Permissible names are: arm2, arm250, +arm3, arm6, arm60, arm600, arm610, +arm620, arm7, arm7m, arm7d, arm7dm, +arm7di, arm7dmi, arm70, arm700, +arm700i, arm710, arm710c, arm7100, +arm7500, arm7500fe, arm7tdmi, arm7tdmi-s, +arm8, strongarm, strongarm110, strongarm1100, +arm8, arm810, arm9, arm9e, arm920, +arm920t, arm922t, arm946e-s, arm966e-s, +arm968e-s, arm926ej-s, arm940t, arm9tdmi, +arm10tdmi, arm1020t, arm1026ej-s, +arm10e, arm1020e, arm1022e, +arm1136j-s, arm1136jf-s, mpcore, mpcorenovfp, +arm1156t2-s, arm1176jz-s, arm1176jzf-s, +cortex-a8, cortex-r4, cortex-m3, +xscale, iwmmxt, ep9312. + +
-mtune=name
This option is very similar to the -mcpu= option, except that +instead of specifying the actual target processor type, and hence +restricting which instructions can be used, it specifies that GCC should +tune the performance of the code as if the target were of the type +specified in this option, but still choosing the instructions that it +will generate based on the cpu specified by a -mcpu= option. +For some ARM implementations better performance can be obtained by using +this option. + +
-march=name
This specifies the name of the target ARM architecture. GCC uses this +name to determine what kind of instructions it can emit when generating +assembly code. This option can be used in conjunction with or instead +of the -mcpu= option. Permissible names are: armv2, +armv2a, armv3, armv3m, armv4, armv4t, +armv5, armv5t, armv5te, armv6, armv6j, +armv6t2, armv6z, armv6zk, armv7, armv7-a, +armv7-r, armv7-m, iwmmxt, ep9312. + +
-mfpu=name
-mfpe=number
-mfp=number
This specifies what floating point hardware (or hardware emulation) is +available on the target. Permissible names are: fpa, fpe2, +fpe3, maverick, vfp. -mfp and -mfpe +are synonyms for -mfpu=fpenumber, for compatibility +with older versions of GCC. + +

If -msoft-float is specified this specifies the format of +floating point values. + +

-mstructure-size-boundary=n
The size of all structures and unions will be rounded up to a multiple +of the number of bits set by this option. Permissible values are 8, 32 +and 64. The default value varies for different toolchains. For the COFF +targeted toolchain the default value is 8. A value of 64 is only allowed +if the underlying ABI supports it. + +

Specifying the larger number can produce faster, more efficient code, but +can also increase the size of the program. Different values are potentially +incompatible. Code compiled with one value cannot necessarily expect to +work with code or libraries compiled with another value, if they exchange +information using structures or unions. + +

-mabort-on-noreturn
Generate a call to the function abort at the end of a +noreturn function. It will be executed if the function tries to +return. + +
-mlong-calls
-mno-long-calls
Tells the compiler to perform function calls by first loading the +address of the function into a register and then performing a subroutine +call on this register. This switch is needed if the target function +will lie outside of the 64 megabyte addressing range of the offset based +version of subroutine call instruction. + +

Even if this switch is enabled, not all function calls will be turned +into long calls. The heuristic is that static functions, functions +which have the short-call attribute, functions that are inside +the scope of a #pragma no_long_calls directive and functions whose +definitions have already been compiled within the current compilation +unit, will not be turned into long calls. The exception to this rule is +that weak function definitions, functions with the long-call +attribute or the section attribute, and functions that are within +the scope of a #pragma long_calls directive, will always be +turned into long calls. + +

This feature is not enabled by default. Specifying +-mno-long-calls will restore the default behavior, as will +placing the function calls within the scope of a #pragma +long_calls_off directive. Note these switches have no effect on how +the compiler generates code to handle function calls via function +pointers. + +

-mnop-fun-dllimport
Disable support for the dllimport attribute. + +
-msingle-pic-base
Treat the register used for PIC addressing as read-only, rather than +loading it in the prologue for each function. The run-time system is +responsible for initializing this register with an appropriate value +before execution begins. + +
-mpic-register=reg
Specify the register to be used for PIC addressing. The default is R10 +unless stack-checking is enabled, when R9 is used. + +
-mcirrus-fix-invalid-insns
Insert NOPs into the instruction stream to in order to work around +problems with invalid Maverick instruction combinations. This option +is only valid if the -mcpu=ep9312 option has been used to +enable generation of instructions for the Cirrus Maverick floating +point co-processor. This option is not enabled by default, since the +problem is only present in older Maverick implementations. The default +can be re-enabled by use of the -mno-cirrus-fix-invalid-insns +switch. + +
-mpoke-function-name
Write the name of each function into the text section, directly +preceding the function prologue. The generated code is similar to this: + +
               t0
+                   .ascii "arm_poke_function_name", 0
+                   .align
+               t1
+                   .word 0xff000000 + (t1 - t0)
+               arm_poke_function_name
+                   mov     ip, sp
+                   stmfd   sp!, {fp, ip, lr, pc}
+                   sub     fp, ip, #4
+     
+

When performing a stack backtrace, code can inspect the value of +pc stored at fp + 0. If the trace function then looks at +location pc - 12 and the top 8 bits are set, then we know that +there is a function name embedded immediately preceding this location +and has length ((pc[-3]) & 0xff000000). + +

-mthumb
Generate code for the Thumb instruction set. The default is to +use the 32-bit ARM instruction set. +This option automatically enables either 16-bit Thumb-1 or +mixed 16/32-bit Thumb-2 instructions based on the -mcpu=name +and -march=name options. + +
-mtpcs-frame
Generate a stack frame that is compliant with the Thumb Procedure Call +Standard for all non-leaf functions. (A leaf function is one that does +not call any other functions.) The default is -mno-tpcs-frame. + +
-mtpcs-leaf-frame
Generate a stack frame that is compliant with the Thumb Procedure Call +Standard for all leaf functions. (A leaf function is one that does +not call any other functions.) The default is -mno-apcs-leaf-frame. + +
-mcallee-super-interworking
Gives all externally visible functions in the file being compiled an ARM +instruction set header which switches to Thumb mode before executing the +rest of the function. This allows these functions to be called from +non-interworking code. + +
-mcaller-super-interworking
Allows calls via function pointers (including virtual functions) to +execute correctly regardless of whether the target code has been +compiled for interworking or not. There is a small overhead in the cost +of executing a function pointer if this option is enabled. + +
-mtp=name
Specify the access model for the thread local storage pointer. The valid +models are soft, which generates calls to __aeabi_read_tp, +cp15, which fetches the thread pointer from cp15 directly +(supported in the arm6k architecture), and auto, which uses the +best available method for the selected processor. The default setting is +auto. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-Pragmas.html new file mode 100644 index 0000000..7e40dd7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-Pragmas.html @@ -0,0 +1,70 @@ + + +ARM Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Up: Pragmas +



+
+ +

5.52.1 ARM Pragmas

+ +

The ARM target defines pragmas for controlling the default addition of +long_call and short_call attributes to functions. +See Function Attributes, for information about the effects of these +attributes. + +

+
long_calls
Set all subsequent functions to have the long_call attribute. + +
no_long_calls
Set all subsequent functions to have the short_call attribute. + +
long_calls_off
Do not affect the long_call or short_call attributes of +subsequent functions. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-iWMMXt-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-iWMMXt-Built_002din-Functions.html new file mode 100644 index 0000000..68bc03a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/ARM-iWMMXt-Built_002din-Functions.html @@ -0,0 +1,200 @@ + + +ARM iWMMXt Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

5.50.2 ARM iWMMXt Built-in Functions

+ +

These built-in functions are available for the ARM family of +processors when the -mcpu=iwmmxt switch is used: + +

     typedef int v2si __attribute__ ((vector_size (8)));
+     typedef short v4hi __attribute__ ((vector_size (8)));
+     typedef char v8qi __attribute__ ((vector_size (8)));
+     
+     int __builtin_arm_getwcx (int)
+     void __builtin_arm_setwcx (int, int)
+     int __builtin_arm_textrmsb (v8qi, int)
+     int __builtin_arm_textrmsh (v4hi, int)
+     int __builtin_arm_textrmsw (v2si, int)
+     int __builtin_arm_textrmub (v8qi, int)
+     int __builtin_arm_textrmuh (v4hi, int)
+     int __builtin_arm_textrmuw (v2si, int)
+     v8qi __builtin_arm_tinsrb (v8qi, int)
+     v4hi __builtin_arm_tinsrh (v4hi, int)
+     v2si __builtin_arm_tinsrw (v2si, int)
+     long long __builtin_arm_tmia (long long, int, int)
+     long long __builtin_arm_tmiabb (long long, int, int)
+     long long __builtin_arm_tmiabt (long long, int, int)
+     long long __builtin_arm_tmiaph (long long, int, int)
+     long long __builtin_arm_tmiatb (long long, int, int)
+     long long __builtin_arm_tmiatt (long long, int, int)
+     int __builtin_arm_tmovmskb (v8qi)
+     int __builtin_arm_tmovmskh (v4hi)
+     int __builtin_arm_tmovmskw (v2si)
+     long long __builtin_arm_waccb (v8qi)
+     long long __builtin_arm_wacch (v4hi)
+     long long __builtin_arm_waccw (v2si)
+     v8qi __builtin_arm_waddb (v8qi, v8qi)
+     v8qi __builtin_arm_waddbss (v8qi, v8qi)
+     v8qi __builtin_arm_waddbus (v8qi, v8qi)
+     v4hi __builtin_arm_waddh (v4hi, v4hi)
+     v4hi __builtin_arm_waddhss (v4hi, v4hi)
+     v4hi __builtin_arm_waddhus (v4hi, v4hi)
+     v2si __builtin_arm_waddw (v2si, v2si)
+     v2si __builtin_arm_waddwss (v2si, v2si)
+     v2si __builtin_arm_waddwus (v2si, v2si)
+     v8qi __builtin_arm_walign (v8qi, v8qi, int)
+     long long __builtin_arm_wand(long long, long long)
+     long long __builtin_arm_wandn (long long, long long)
+     v8qi __builtin_arm_wavg2b (v8qi, v8qi)
+     v8qi __builtin_arm_wavg2br (v8qi, v8qi)
+     v4hi __builtin_arm_wavg2h (v4hi, v4hi)
+     v4hi __builtin_arm_wavg2hr (v4hi, v4hi)
+     v8qi __builtin_arm_wcmpeqb (v8qi, v8qi)
+     v4hi __builtin_arm_wcmpeqh (v4hi, v4hi)
+     v2si __builtin_arm_wcmpeqw (v2si, v2si)
+     v8qi __builtin_arm_wcmpgtsb (v8qi, v8qi)
+     v4hi __builtin_arm_wcmpgtsh (v4hi, v4hi)
+     v2si __builtin_arm_wcmpgtsw (v2si, v2si)
+     v8qi __builtin_arm_wcmpgtub (v8qi, v8qi)
+     v4hi __builtin_arm_wcmpgtuh (v4hi, v4hi)
+     v2si __builtin_arm_wcmpgtuw (v2si, v2si)
+     long long __builtin_arm_wmacs (long long, v4hi, v4hi)
+     long long __builtin_arm_wmacsz (v4hi, v4hi)
+     long long __builtin_arm_wmacu (long long, v4hi, v4hi)
+     long long __builtin_arm_wmacuz (v4hi, v4hi)
+     v4hi __builtin_arm_wmadds (v4hi, v4hi)
+     v4hi __builtin_arm_wmaddu (v4hi, v4hi)
+     v8qi __builtin_arm_wmaxsb (v8qi, v8qi)
+     v4hi __builtin_arm_wmaxsh (v4hi, v4hi)
+     v2si __builtin_arm_wmaxsw (v2si, v2si)
+     v8qi __builtin_arm_wmaxub (v8qi, v8qi)
+     v4hi __builtin_arm_wmaxuh (v4hi, v4hi)
+     v2si __builtin_arm_wmaxuw (v2si, v2si)
+     v8qi __builtin_arm_wminsb (v8qi, v8qi)
+     v4hi __builtin_arm_wminsh (v4hi, v4hi)
+     v2si __builtin_arm_wminsw (v2si, v2si)
+     v8qi __builtin_arm_wminub (v8qi, v8qi)
+     v4hi __builtin_arm_wminuh (v4hi, v4hi)
+     v2si __builtin_arm_wminuw (v2si, v2si)
+     v4hi __builtin_arm_wmulsm (v4hi, v4hi)
+     v4hi __builtin_arm_wmulul (v4hi, v4hi)
+     v4hi __builtin_arm_wmulum (v4hi, v4hi)
+     long long __builtin_arm_wor (long long, long long)
+     v2si __builtin_arm_wpackdss (long long, long long)
+     v2si __builtin_arm_wpackdus (long long, long long)
+     v8qi __builtin_arm_wpackhss (v4hi, v4hi)
+     v8qi __builtin_arm_wpackhus (v4hi, v4hi)
+     v4hi __builtin_arm_wpackwss (v2si, v2si)
+     v4hi __builtin_arm_wpackwus (v2si, v2si)
+     long long __builtin_arm_wrord (long long, long long)
+     long long __builtin_arm_wrordi (long long, int)
+     v4hi __builtin_arm_wrorh (v4hi, long long)
+     v4hi __builtin_arm_wrorhi (v4hi, int)
+     v2si __builtin_arm_wrorw (v2si, long long)
+     v2si __builtin_arm_wrorwi (v2si, int)
+     v2si __builtin_arm_wsadb (v8qi, v8qi)
+     v2si __builtin_arm_wsadbz (v8qi, v8qi)
+     v2si __builtin_arm_wsadh (v4hi, v4hi)
+     v2si __builtin_arm_wsadhz (v4hi, v4hi)
+     v4hi __builtin_arm_wshufh (v4hi, int)
+     long long __builtin_arm_wslld (long long, long long)
+     long long __builtin_arm_wslldi (long long, int)
+     v4hi __builtin_arm_wsllh (v4hi, long long)
+     v4hi __builtin_arm_wsllhi (v4hi, int)
+     v2si __builtin_arm_wsllw (v2si, long long)
+     v2si __builtin_arm_wsllwi (v2si, int)
+     long long __builtin_arm_wsrad (long long, long long)
+     long long __builtin_arm_wsradi (long long, int)
+     v4hi __builtin_arm_wsrah (v4hi, long long)
+     v4hi __builtin_arm_wsrahi (v4hi, int)
+     v2si __builtin_arm_wsraw (v2si, long long)
+     v2si __builtin_arm_wsrawi (v2si, int)
+     long long __builtin_arm_wsrld (long long, long long)
+     long long __builtin_arm_wsrldi (long long, int)
+     v4hi __builtin_arm_wsrlh (v4hi, long long)
+     v4hi __builtin_arm_wsrlhi (v4hi, int)
+     v2si __builtin_arm_wsrlw (v2si, long long)
+     v2si __builtin_arm_wsrlwi (v2si, int)
+     v8qi __builtin_arm_wsubb (v8qi, v8qi)
+     v8qi __builtin_arm_wsubbss (v8qi, v8qi)
+     v8qi __builtin_arm_wsubbus (v8qi, v8qi)
+     v4hi __builtin_arm_wsubh (v4hi, v4hi)
+     v4hi __builtin_arm_wsubhss (v4hi, v4hi)
+     v4hi __builtin_arm_wsubhus (v4hi, v4hi)
+     v2si __builtin_arm_wsubw (v2si, v2si)
+     v2si __builtin_arm_wsubwss (v2si, v2si)
+     v2si __builtin_arm_wsubwus (v2si, v2si)
+     v4hi __builtin_arm_wunpckehsb (v8qi)
+     v2si __builtin_arm_wunpckehsh (v4hi)
+     long long __builtin_arm_wunpckehsw (v2si)
+     v4hi __builtin_arm_wunpckehub (v8qi)
+     v2si __builtin_arm_wunpckehuh (v4hi)
+     long long __builtin_arm_wunpckehuw (v2si)
+     v4hi __builtin_arm_wunpckelsb (v8qi)
+     v2si __builtin_arm_wunpckelsh (v4hi)
+     long long __builtin_arm_wunpckelsw (v2si)
+     v4hi __builtin_arm_wunpckelub (v8qi)
+     v2si __builtin_arm_wunpckeluh (v4hi)
+     long long __builtin_arm_wunpckeluw (v2si)
+     v8qi __builtin_arm_wunpckihb (v8qi, v8qi)
+     v4hi __builtin_arm_wunpckihh (v4hi, v4hi)
+     v2si __builtin_arm_wunpckihw (v2si, v2si)
+     v8qi __builtin_arm_wunpckilb (v8qi, v8qi)
+     v4hi __builtin_arm_wunpckilh (v4hi, v4hi)
+     v2si __builtin_arm_wunpckilw (v2si, v2si)
+     long long __builtin_arm_wxor (long long, long long)
+     long long __builtin_arm_wzero ()
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/AVR-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/AVR-Options.html new file mode 100644 index 0000000..e88af20 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/AVR-Options.html @@ -0,0 +1,105 @@ + + +AVR Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: ARM Options, +Up: Submodel Options +



+
+ +

3.17.3 AVR Options

+ +

+These options are defined for AVR implementations: + +

+
-mmcu=mcu
Specify ATMEL AVR instruction set or MCU type. + +

Instruction set avr1 is for the minimal AVR core, not supported by the C +compiler, only for assembler programs (MCU types: at90s1200, attiny10, +attiny11, attiny12, attiny15, attiny28). + +

Instruction set avr2 (default) is for the classic AVR core with up to +8K program memory space (MCU types: at90s2313, at90s2323, attiny22, +at90s2333, at90s2343, at90s4414, at90s4433, at90s4434, at90s8515, +at90c8534, at90s8535). + +

Instruction set avr3 is for the classic AVR core with up to 128K program +memory space (MCU types: atmega103, atmega603, at43usb320, at76c711). + +

Instruction set avr4 is for the enhanced AVR core with up to 8K program +memory space (MCU types: atmega8, atmega83, atmega85). + +

Instruction set avr5 is for the enhanced AVR core with up to 128K program +memory space (MCU types: atmega16, atmega161, atmega163, atmega32, atmega323, +atmega64, atmega128, at43usb355, at94k). + +

-msize
Output instruction sizes to the asm file. + +
-minit-stack=N
Specify the initial stack address, which may be a symbol or numeric value, +__stack is the default. + +
-mno-interrupts
Generated code is not compatible with hardware interrupts. +Code size will be smaller. + +
-mcall-prologues
Functions prologues/epilogues expanded as call to appropriate +subroutines. Code size will be smaller. + +
-mno-tablejump
Do not generate tablejump insns which sometimes increase code size. + +
-mtiny-stack
Change only the low 8 bits of the stack pointer. + +
-mint8
Assume int to be 8 bit integer. This affects the sizes of all types: A +char will be 1 byte, an int will be 1 byte, an long will be 2 bytes +and long long will be 4 bytes. Please note that this option does not +comply to the C standards, but it will provide you with smaller code +size. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Actual-Bugs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Actual-Bugs.html new file mode 100644 index 0000000..1d831cc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Actual-Bugs.html @@ -0,0 +1,69 @@ + + +Actual Bugs - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Up: Trouble +



+
+ +

10.1 Actual Bugs We Haven't Fixed Yet

+ +
    +
  • The fixincludes script interacts badly with automounters; if the +directory of system header files is automounted, it tends to be +unmounted while fixincludes is running. This would seem to be a +bug in the automounter. We don't know any good way to work around it. + +
  • The fixproto script will sometimes add prototypes for the +sigsetjmp and siglongjmp functions that reference the +jmp_buf type before that type is defined. To work around this, +edit the offending file and place the typedef in front of the +prototypes. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alignment.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alignment.html new file mode 100644 index 0000000..d5d0bb1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alignment.html @@ -0,0 +1,86 @@ + + +Alignment - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Type Attributes, +Up: C Extensions +



+
+ +

5.33 Inquiring on Alignment of Types or Variables

+ +

+The keyword __alignof__ allows you to inquire about how an object +is aligned, or the minimum alignment usually required by a type. Its +syntax is just like sizeof. + +

For example, if the target machine requires a double value to be +aligned on an 8-byte boundary, then __alignof__ (double) is 8. +This is true on many RISC machines. On more traditional machine +designs, __alignof__ (double) is 4 or even 2. + +

Some machines never actually require alignment; they allow reference to any +data type even at an odd address. For these machines, __alignof__ +reports the smallest alignment that GCC will give the data type, usually as +mandated by the target ABI. + +

If the operand of __alignof__ is an lvalue rather than a type, +its value is the required alignment for its type, taking into account +any minimum alignment specified with GCC's __attribute__ +extension (see Variable Attributes). For example, after this +declaration: + +

     struct foo { int x; char y; } foo1;
+
+

the value of __alignof__ (foo1.y) is 1, even though its actual +alignment is probably 2 or 4, the same as __alignof__ (int). + +

It is an error to ask for the alignment of an incomplete type. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alpha-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alpha-Built_002din-Functions.html new file mode 100644 index 0000000..11caf40 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alpha-Built_002din-Functions.html @@ -0,0 +1,127 @@ + + +Alpha Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+ +

5.50.1 Alpha Built-in Functions

+ +

These built-in functions are available for the Alpha family of +processors, depending on the command-line switches used. + +

The following built-in functions are always available. They +all generate the machine instruction that is part of the name. + +

     long __builtin_alpha_implver (void)
+     long __builtin_alpha_rpcc (void)
+     long __builtin_alpha_amask (long)
+     long __builtin_alpha_cmpbge (long, long)
+     long __builtin_alpha_extbl (long, long)
+     long __builtin_alpha_extwl (long, long)
+     long __builtin_alpha_extll (long, long)
+     long __builtin_alpha_extql (long, long)
+     long __builtin_alpha_extwh (long, long)
+     long __builtin_alpha_extlh (long, long)
+     long __builtin_alpha_extqh (long, long)
+     long __builtin_alpha_insbl (long, long)
+     long __builtin_alpha_inswl (long, long)
+     long __builtin_alpha_insll (long, long)
+     long __builtin_alpha_insql (long, long)
+     long __builtin_alpha_inswh (long, long)
+     long __builtin_alpha_inslh (long, long)
+     long __builtin_alpha_insqh (long, long)
+     long __builtin_alpha_mskbl (long, long)
+     long __builtin_alpha_mskwl (long, long)
+     long __builtin_alpha_mskll (long, long)
+     long __builtin_alpha_mskql (long, long)
+     long __builtin_alpha_mskwh (long, long)
+     long __builtin_alpha_msklh (long, long)
+     long __builtin_alpha_mskqh (long, long)
+     long __builtin_alpha_umulh (long, long)
+     long __builtin_alpha_zap (long, long)
+     long __builtin_alpha_zapnot (long, long)
+
+

The following built-in functions are always with -mmax +or -mcpu=cpu where cpu is pca56 or +later. They all generate the machine instruction that is part +of the name. + +

     long __builtin_alpha_pklb (long)
+     long __builtin_alpha_pkwb (long)
+     long __builtin_alpha_unpkbl (long)
+     long __builtin_alpha_unpkbw (long)
+     long __builtin_alpha_minub8 (long, long)
+     long __builtin_alpha_minsb8 (long, long)
+     long __builtin_alpha_minuw4 (long, long)
+     long __builtin_alpha_minsw4 (long, long)
+     long __builtin_alpha_maxub8 (long, long)
+     long __builtin_alpha_maxsb8 (long, long)
+     long __builtin_alpha_maxuw4 (long, long)
+     long __builtin_alpha_maxsw4 (long, long)
+     long __builtin_alpha_perr (long, long)
+
+

The following built-in functions are always with -mcix +or -mcpu=cpu where cpu is ev67 or +later. They all generate the machine instruction that is part +of the name. + +

     long __builtin_alpha_cttz (long)
+     long __builtin_alpha_ctlz (long)
+     long __builtin_alpha_ctpop (long)
+
+

The following builtins are available on systems that use the OSF/1 +PALcode. Normally they invoke the rduniq and wruniq +PAL calls, but when invoked with -mtls-kernel, they invoke +rdval and wrval. + +

     void *__builtin_thread_pointer (void)
+     void __builtin_set_thread_pointer (void *)
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alternate-Keywords.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alternate-Keywords.html new file mode 100644 index 0000000..18459c7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Alternate-Keywords.html @@ -0,0 +1,88 @@ + + +Alternate Keywords - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Explicit Reg Vars, +Up: C Extensions +



+
+ +

5.41 Alternate Keywords

+ +

+-ansi and the various -std options disable certain +keywords. This causes trouble when you want to use GNU C extensions, or +a general-purpose header file that should be usable by all programs, +including ISO C programs. The keywords asm, typeof and +inline are not available in programs compiled with +-ansi or -std (although inline can be used in a +program compiled with -std=c99). The ISO C99 keyword +restrict is only available when -std=gnu99 (which will +eventually be the default) or -std=c99 (or the equivalent +-std=iso9899:1999) is used. + +

The way to solve these problems is to put __ at the beginning and +end of each problematical keyword. For example, use __asm__ +instead of asm, and __inline__ instead of inline. + +

Other C compilers won't accept these alternative keywords; if you want to +compile with another compiler, you can define the alternate keywords as +macros to replace them with the customary keywords. It looks like this: + +

     #ifndef __GNUC__
+     #define __asm__ asm
+     #endif
+
+

-pedantic and other options cause warnings for many GNU C extensions. +You can +prevent such warnings within one expression by writing +__extension__ before the expression. __extension__ has no +effect aside from this. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Architecture-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Architecture-implementation.html new file mode 100644 index 0000000..e1a578f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Architecture-implementation.html @@ -0,0 +1,77 @@ + + +Architecture implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.15 Architecture

+ +
    +
  • The values or expressions assigned to the macros specified in the +headers <float.h>, <limits.h>, and <stdint.h> +(C90 and C99 5.2.4.2, C99 7.18.2, C99 7.18.3). + +

    Determined by ABI. + +

  • The number, order, and encoding of bytes in any object +(when not explicitly specified in this International Standard) (C99 6.2.6.1). + +

    Determined by ABI. + +

  • The value of the result of the sizeof operator (C90 +6.3.3.4, C99 6.5.3.4). + +

    Determined by ABI. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Argument-Types.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Argument-Types.html new file mode 100644 index 0000000..965d5b9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Argument-Types.html @@ -0,0 +1,91 @@ + + +Argument Types - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +
5.50.5.1 Argument Types
+ +

The arguments to the built-in functions can be divided into three groups: +register numbers, compile-time constants and run-time values. In order +to make this classification clear at a glance, the arguments and return +values are given the following pseudo types: + +

Pseudo type Real C type Constant? Description +
uh unsigned short No an unsigned halfword +
uw1 unsigned int No an unsigned word +
sw1 int No a signed word +
uw2 unsigned long long No +an unsigned doubleword +
sw2 long long No a signed doubleword +
const int Yes an integer constant +
acc int Yes an ACC register number +
iacc int Yes an IACC register number +
+ +

These pseudo types are not defined by GCC, they are simply a notational +convenience used in this manual. + +

Arguments of type uh, uw1, sw1, uw2 +and sw2 are evaluated at run time. They correspond to +register operands in the underlying FR-V instructions. + +

const arguments represent immediate operands in the underlying +FR-V instructions. They must be compile-time constants. + +

acc arguments are evaluated at compile time and specify the number +of an accumulator register. For example, an acc argument of 2 +will select the ACC2 register. + +

iacc arguments are similar to acc arguments but specify the +number of an IACC register. See see Other Built-in Functions +for more details. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Arrays-and-pointers-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Arrays-and-pointers-implementation.html new file mode 100644 index 0000000..775dd82 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Arrays-and-pointers-implementation.html @@ -0,0 +1,99 @@ + + +Arrays and pointers implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.7 Arrays and pointers

+ +
    +
  • The result of converting a pointer to an integer or +vice versa (C90 6.3.4, C99 6.3.2.3). + +

    A cast from pointer to integer discards most-significant bits if the +pointer representation is larger than the integer type, +sign-extends1 +if the pointer representation is smaller than the integer type, otherwise +the bits are unchanged. + + + + + + +

    A cast from integer to pointer discards most-significant bits if the +pointer representation is smaller than the integer type, extends according +to the signedness of the integer type if the pointer representation +is larger than the integer type, otherwise the bits are unchanged. + +

    When casting from pointer to integer and back again, the resulting +pointer must reference the same object as the original pointer, otherwise +the behavior is undefined. That is, one may not use integer arithmetic to +avoid the undefined behavior of pointer arithmetic as proscribed in +C99 6.5.6/8. + +

  • The size of the result of subtracting two pointers to elements +of the same array (C90 6.3.6, C99 6.5.6). + +

    The value is as specified in the standard and the type is determined +by the ABI. + +

+ +
+
+

Footnotes

[1] Future versions of GCC may zero-extend, or use +a target-defined ptr_extend pattern. Do not rely on sign extension.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Asm-Labels.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Asm-Labels.html new file mode 100644 index 0000000..29461d4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Asm-Labels.html @@ -0,0 +1,95 @@ + + +Asm Labels - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Constraints, +Up: C Extensions +



+
+ +

5.39 Controlling Names Used in Assembler Code

+ +

+You can specify the name to be used in the assembler code for a C +function or variable by writing the asm (or __asm__) +keyword after the declarator as follows: + +

     int foo asm ("myfoo") = 2;
+
+

This specifies that the name to be used for the variable foo in +the assembler code should be myfoo rather than the usual +_foo. + +

On systems where an underscore is normally prepended to the name of a C +function or variable, this feature allows you to define names for the +linker that do not start with an underscore. + +

It does not make sense to use this feature with a non-static local +variable since such variables do not have assembler names. If you are +trying to put the variable in a particular register, see Explicit Reg Vars. GCC presently accepts such code with a warning, but will +probably be changed to issue an error, rather than a warning, in the +future. + +

You cannot use asm in this way in a function definition; but +you can get the same effect by writing a declaration for the function +before its definition and putting asm there, like this: + +

     extern func () asm ("FUNC");
+     
+     func (x, y)
+          int x, y;
+     /* ... */
+
+

It is up to you to make sure that the assembler names you choose do not +conflict with any other assembler symbols. Also, you must not use a +register name; that would produce completely invalid assembler code. GCC +does not as yet have the ability to store static variables in registers. +Perhaps that will be added. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Assembler-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Assembler-Options.html new file mode 100644 index 0000000..7d9b492 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Assembler-Options.html @@ -0,0 +1,74 @@ + + +Assembler Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Preprocessor Options, +Up: Invoking GCC +



+
+ +

3.12 Passing Options to the Assembler

+ + +

You can pass options to the assembler. + +

+
-Wa,option
Pass option as an option to the assembler. If option +contains commas, it is split into multiple options at the commas. + +
-Xassembler option
Pass option as an option to the assembler. You can use this to +supply system-specific assembler options which GCC does not know how to +recognize. + +

If you want to pass an option that takes an argument, you must use +-Xassembler twice, once for the option and once for the argument. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Atomic-Builtins.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Atomic-Builtins.html new file mode 100644 index 0000000..e1544b1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Atomic-Builtins.html @@ -0,0 +1,142 @@ + + +Atomic Builtins - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Offsetof, +Up: C Extensions +



+
+ +

5.47 Built-in functions for atomic memory access

+ +

The following builtins are intended to be compatible with those described +in the Intel Itanium Processor-specific Application Binary Interface, +section 7.4. As such, they depart from the normal GCC practice of using +the “__builtin_” prefix, and further that they are overloaded such that +they work on multiple types. + +

The definition given in the Intel documentation allows only for the use of +the types int, long, long long as well as their unsigned +counterparts. GCC will allow any integral scalar or pointer type that is +1, 2, 4 or 8 bytes in length. + +

Not all operations are supported by all target processors. If a particular +operation cannot be implemented on the target processor, a warning will be +generated and a call an external function will be generated. The external +function will carry the same name as the builtin, with an additional suffix +_n where n is the size of the data type. + + + + +

In most cases, these builtins are considered a full barrier. That is, +no memory operand will be moved across the operation, either forward or +backward. Further, instructions will be issued as necessary to prevent the +processor from speculating loads across the operation and from queuing stores +after the operation. + +

All of the routines are are described in the Intel documentation to take +“an optional list of variables protected by the memory barrier”. It's +not clear what is meant by that; it could mean that only the +following variables are protected, or it could mean that these variables +should in addition be protected. At present GCC ignores this list and +protects all variables which are globally accessible. If in the future +we make some use of this list, an empty list will continue to mean all +globally accessible variables. + +

+
type __sync_fetch_and_add (type *ptr, type value, ...)
type __sync_fetch_and_sub (type *ptr, type value, ...)
type __sync_fetch_and_or (type *ptr, type value, ...)
type __sync_fetch_and_and (type *ptr, type value, ...)
type __sync_fetch_and_xor (type *ptr, type value, ...)
type __sync_fetch_and_nand (type *ptr, type value, ...)
These builtins perform the operation suggested by the name, and +returns the value that had previously been in memory. That is, + +
          { tmp = *ptr; *ptr op= value; return tmp; }
+          { tmp = *ptr; *ptr = ~tmp & value; return tmp; }   // nand
+     
+
type __sync_add_and_fetch (type *ptr, type value, ...)
type __sync_sub_and_fetch (type *ptr, type value, ...)
type __sync_or_and_fetch (type *ptr, type value, ...)
type __sync_and_and_fetch (type *ptr, type value, ...)
type __sync_xor_and_fetch (type *ptr, type value, ...)
type __sync_nand_and_fetch (type *ptr, type value, ...)
These builtins perform the operation suggested by the name, and +return the new value. That is, + +
          { *ptr op= value; return *ptr; }
+          { *ptr = ~*ptr & value; return *ptr; }   // nand
+     
+
bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...)
type __sync_val_compare_and_swap (type *ptr, type oldval type newval, ...)
These builtins perform an atomic compare and swap. That is, if the current +value of *ptr is oldval, then write newval into +*ptr. + +

The “bool” version returns true if the comparison is successful and +newval was written. The “val” version returns the contents +of *ptr before the operation. + +

__sync_synchronize (...)
This builtin issues a full memory barrier. + +
type __sync_lock_test_and_set (type *ptr, type value, ...)
This builtin, as described by Intel, is not a traditional test-and-set +operation, but rather an atomic exchange operation. It writes value +into *ptr, and returns the previous contents of +*ptr. + +

Many targets have only minimal support for such locks, and do not support +a full exchange operation. In this case, a target may support reduced +functionality here by which the only valid value to store is the +immediate constant 1. The exact value actually stored in *ptr +is implementation defined. + +

This builtin is not a full barrier, but rather an acquire barrier. +This means that references after the builtin cannot move to (or be +speculated to) before the builtin, but previous memory stores may not +be globally visible yet, and previous memory loads may not yet be +satisfied. + +

void __sync_lock_release (type *ptr, ...)
This builtin releases the lock acquired by __sync_lock_test_and_set. +Normally this means writing the constant 0 to *ptr. + +

This builtin is not a full barrier, but rather a release barrier. +This means that all previous memory stores are globally visible, and all +previous memory loads have been satisfied, but following memory reads +are not prevented from being speculated to before the barrier. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Attribute-Syntax.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Attribute-Syntax.html new file mode 100644 index 0000000..1634001 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Attribute-Syntax.html @@ -0,0 +1,266 @@ + + +Attribute Syntax - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Function Attributes, +Up: C Extensions +



+
+ +

5.28 Attribute Syntax

+ +

+This section describes the syntax with which __attribute__ may be +used, and the constructs to which attribute specifiers bind, for the C +language. Some details may vary for C++ and Objective-C. Because of +infelicities in the grammar for attributes, some forms described here +may not be successfully parsed in all cases. + +

There are some problems with the semantics of attributes in C++. For +example, there are no manglings for attributes, although they may affect +code generation, so problems may arise when attributed types are used in +conjunction with templates or overloading. Similarly, typeid +does not distinguish between types with different attributes. Support +for attributes in C++ may be restricted in future to attributes on +declarations only, but not on nested declarators. + +

See Function Attributes, for details of the semantics of attributes +applying to functions. See Variable Attributes, for details of the +semantics of attributes applying to variables. See Type Attributes, +for details of the semantics of attributes applying to structure, union +and enumerated types. + +

An attribute specifier is of the form +__attribute__ ((attribute-list)). An attribute list +is a possibly empty comma-separated sequence of attributes, where +each attribute is one of the following: + +

    +
  • Empty. Empty attributes are ignored. + +
  • A word (which may be an identifier such as unused, or a reserved +word such as const). + +
  • A word, followed by, in parentheses, parameters for the attribute. +These parameters take one of the following forms: + +
      +
    • An identifier. For example, mode attributes use this form. + +
    • An identifier followed by a comma and a non-empty comma-separated list +of expressions. For example, format attributes use this form. + +
    • A possibly empty comma-separated list of expressions. For example, +format_arg attributes use this form with the list being a single +integer constant expression, and alias attributes use this form +with the list being a single string constant. +
    +
+ +

An attribute specifier list is a sequence of one or more attribute +specifiers, not separated by any other tokens. + +

In GNU C, an attribute specifier list may appear after the colon following a +label, other than a case or default label. The only +attribute it makes sense to use after a label is unused. This +feature is intended for code generated by programs which contains labels +that may be unused but which is compiled with -Wall. It would +not normally be appropriate to use in it human-written code, though it +could be useful in cases where the code that jumps to the label is +contained within an #ifdef conditional. GNU C++ does not permit +such placement of attribute lists, as it is permissible for a +declaration, which could begin with an attribute list, to be labelled in +C++. Declarations cannot be labelled in C90 or C99, so the ambiguity +does not arise there. + +

An attribute specifier list may appear as part of a struct, +union or enum specifier. It may go either immediately +after the struct, union or enum keyword, or after +the closing brace. The former syntax is preferred. +Where attribute specifiers follow the closing brace, they are considered +to relate to the structure, union or enumerated type defined, not to any +enclosing declaration the type specifier appears in, and the type +defined is not complete until after the attribute specifiers. + + + + + + +

Otherwise, an attribute specifier appears as part of a declaration, +counting declarations of unnamed parameters and type names, and relates +to that declaration (which may be nested in another declaration, for +example in the case of a parameter declaration), or to a particular declarator +within a declaration. Where an +attribute specifier is applied to a parameter declared as a function or +an array, it should apply to the function or array rather than the +pointer to which the parameter is implicitly converted, but this is not +yet correctly implemented. + +

Any list of specifiers and qualifiers at the start of a declaration may +contain attribute specifiers, whether or not such a list may in that +context contain storage class specifiers. (Some attributes, however, +are essentially in the nature of storage class specifiers, and only make +sense where storage class specifiers may be used; for example, +section.) There is one necessary limitation to this syntax: the +first old-style parameter declaration in a function definition cannot +begin with an attribute specifier, because such an attribute applies to +the function instead by syntax described below (which, however, is not +yet implemented in this case). In some other cases, attribute +specifiers are permitted by this grammar but not yet supported by the +compiler. All attribute specifiers in this place relate to the +declaration as a whole. In the obsolescent usage where a type of +int is implied by the absence of type specifiers, such a list of +specifiers and qualifiers may be an attribute specifier list with no +other specifiers or qualifiers. + +

At present, the first parameter in a function prototype must have some +type specifier which is not an attribute specifier; this resolves an +ambiguity in the interpretation of void f(int +(__attribute__((foo)) x)), but is subject to change. At present, if +the parentheses of a function declarator contain only attributes then +those attributes are ignored, rather than yielding an error or warning +or implying a single parameter of type int, but this is subject to +change. + +

An attribute specifier list may appear immediately before a declarator +(other than the first) in a comma-separated list of declarators in a +declaration of more than one identifier using a single list of +specifiers and qualifiers. Such attribute specifiers apply +only to the identifier before whose declarator they appear. For +example, in + +

     __attribute__((noreturn)) void d0 (void),
+         __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
+          d2 (void)
+
+

the noreturn attribute applies to all the functions +declared; the format attribute only applies to d1. + +

An attribute specifier list may appear immediately before the comma, += or semicolon terminating the declaration of an identifier other +than a function definition. Such attribute specifiers apply +to the declared object or function. Where an +assembler name for an object or function is specified (see Asm Labels), the attribute must follow the asm +specification. + +

An attribute specifier list may, in future, be permitted to appear after +the declarator in a function definition (before any old-style parameter +declarations or the function body). + +

Attribute specifiers may be mixed with type qualifiers appearing inside +the [] of a parameter array declarator, in the C99 construct by +which such qualifiers are applied to the pointer to which the array is +implicitly converted. Such attribute specifiers apply to the pointer, +not to the array, but at present this is not implemented and they are +ignored. + +

An attribute specifier list may appear at the start of a nested +declarator. At present, there are some limitations in this usage: the +attributes correctly apply to the declarator, but for most individual +attributes the semantics this implies are not implemented. +When attribute specifiers follow the * of a pointer +declarator, they may be mixed with any type qualifiers present. +The following describes the formal semantics of this syntax. It will make the +most sense if you are familiar with the formal specification of +declarators in the ISO C standard. + +

Consider (as in C99 subclause 6.7.5 paragraph 4) a declaration T +D1, where T contains declaration specifiers that specify a type +Type (such as int) and D1 is a declarator that +contains an identifier ident. The type specified for ident +for derived declarators whose type does not include an attribute +specifier is as in the ISO C standard. + +

If D1 has the form ( attribute-specifier-list D ), +and the declaration T D specifies the type +“derived-declarator-type-list Type” for ident, then +T D1 specifies the type “derived-declarator-type-list +attribute-specifier-list Type” for ident. + +

If D1 has the form * +type-qualifier-and-attribute-specifier-list D, and the +declaration T D specifies the type +“derived-declarator-type-list Type” for ident, then +T D1 specifies the type “derived-declarator-type-list +type-qualifier-and-attribute-specifier-list Type” for +ident. + +

For example, + +

     void (__attribute__((noreturn)) ****f) (void);
+
+

specifies the type “pointer to pointer to pointer to pointer to +non-returning function returning void”. As another example, + +

     char *__attribute__((aligned(8))) *f;
+
+

specifies the type “pointer to 8-byte-aligned pointer to char”. +Note again that this does not work with most attributes; for example, +the usage of aligned and noreturn attributes given above +is not yet supported. + +

For compatibility with existing code written for compiler versions that +did not implement attributes on nested declarators, some laxity is +allowed in the placing of attributes. If an attribute that only applies +to types is applied to a declaration, it will be treated as applying to +the type of that declaration. If an attribute that only applies to +declarations is applied to the type of a declaration, it will be treated +as applying to that declaration; and, for compatibility with code +placing the attributes immediately before the identifier declared, such +an attribute applied to a function return type will be treated as +applying to the function type, and such an attribute applied to an array +element type will be treated as applying to the array type. If an +attribute that only applies to function types is applied to a +pointer-to-function type, it will be treated as applying to the pointer +target type; if such an attribute is applied to a function return type +that is not a pointer-to-function type, it will be treated as applying +to the function type. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Backwards-Compatibility.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Backwards-Compatibility.html new file mode 100644 index 0000000..36bbbdd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Backwards-Compatibility.html @@ -0,0 +1,83 @@ + + +Backwards Compatibility - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Previous: Deprecated Features, +Up: C++ Extensions +



+
+ +

6.12 Backwards Compatibility

+ +

+Now that there is a definitive ISO standard C++, G++ has a specification +to adhere to. The C++ language evolved over time, and features that +used to be acceptable in previous drafts of the standard, such as the ARM +[Annotated C++ Reference Manual], are no longer accepted. In order to allow +compilation of C++ written to such drafts, G++ contains some backwards +compatibilities. All such backwards compatibility features are +liable to disappear in future versions of G++. They should be considered +deprecated See Deprecated Features. + +

+
For scope
If a variable is declared at for scope, it used to remain in scope until +the end of the scope which contained the for statement (rather than just +within the for scope). G++ retains this, but issues a warning, if such a +variable is accessed outside the for scope. + +
Implicit C language
Old C system header files did not contain an extern "C" {...} +scope to set the language. On such systems, all header files are +implicitly scoped inside a C language scope. Also, an empty prototype +() will be treated as an unspecified number of arguments, rather +than no arguments, as C++ demands. +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Binary-constants.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Binary-constants.html new file mode 100644 index 0000000..3fbd6bd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Binary-constants.html @@ -0,0 +1,73 @@ + + +Binary constants - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Thread-Local, +Up: C Extensions +



+
+ +

5.55 Binary constants using the 0b prefix

+ +

+Integer constants can be written as binary constants, consisting of a +sequence of 0 and 1 digits, prefixed by 0b or +0B. This is particularly useful in environments that operate a +lot on the bit-level (like microcontrollers). + +

The following statements are identical: + +

     i =       42;
+     i =     0x2a;
+     i =      052;
+     i = 0b101010;
+
+

The type of these constants follows the same rules as for octal or +hexadecimal integer constants, so suffixes like L or UL +can be applied. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Blackfin-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Blackfin-Built_002din-Functions.html new file mode 100644 index 0000000..d821cc3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Blackfin-Built_002din-Functions.html @@ -0,0 +1,67 @@ + + +Blackfin Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

5.50.4 Blackfin Built-in Functions

+ +

Currently, there are two Blackfin-specific built-in functions. These are +used for generating CSYNC and SSYNC machine insns without +using inline assembly; by using these built-in functions the compiler can +automatically add workarounds for hardware errata involving these +instructions. These functions are named as follows: + +

     void __builtin_bfin_csync (void)
+     void __builtin_bfin_ssync (void)
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Blackfin-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Blackfin-Options.html new file mode 100644 index 0000000..f29cd87 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Blackfin-Options.html @@ -0,0 +1,167 @@ + + +Blackfin Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: AVR Options, +Up: Submodel Options +



+
+ +

3.17.4 Blackfin Options

+ +

+

+
-mcpu=cpu[-sirevision]
Specifies the name of the target Blackfin processor. Currently, cpu +can be one of bf522, bf523, bf524, +bf525, bf526, bf527, +bf531, bf532, bf533, bf534, +bf536, bf537, bf538, bf539, +bf542, bf544, bf547, bf548, bf549, +bf561. +The optional sirevision specifies the silicon revision of the target +Blackfin processor. Any workarounds available for the targeted silicon revision +will be enabled. If sirevision is none, no workarounds are enabled. +If sirevision is any, all workarounds for the targeted processor +will be enabled. The __SILICON_REVISION__ macro is defined to two +hexadecimal digits representing the major and minor numbers in the silicon +revision. If sirevision is none, the __SILICON_REVISION__ +is not defined. If sirevision is any, the +__SILICON_REVISION__ is defined to be 0xffff. +If this optional sirevision is not used, GCC assumes the latest known +silicon revision of the targeted Blackfin processor. + +

Support for bf561 is incomplete. For bf561, +Only the processor macro is defined. +Without this option, bf532 is used as the processor by default. +The corresponding predefined processor macros for cpu is to +be defined. And for bfin-elf toolchain, this causes the hardware BSP +provided by libgloss to be linked in if -msim is not given. + +

-msim
Specifies that the program will be run on the simulator. This causes +the simulator BSP provided by libgloss to be linked in. This option +has effect only for bfin-elf toolchain. +Certain other options, such as -mid-shared-library and +-mfdpic, imply -msim. + +
-momit-leaf-frame-pointer
Don't keep the frame pointer in a register for leaf functions. This +avoids the instructions to save, set up and restore frame pointers and +makes an extra register available in leaf functions. The option +-fomit-frame-pointer removes the frame pointer for all functions +which might make debugging harder. + +
-mspecld-anomaly
When enabled, the compiler will ensure that the generated code does not +contain speculative loads after jump instructions. If this option is used, +__WORKAROUND_SPECULATIVE_LOADS is defined. + +
-mno-specld-anomaly
Don't generate extra code to prevent speculative loads from occurring. + +
-mcsync-anomaly
When enabled, the compiler will ensure that the generated code does not +contain CSYNC or SSYNC instructions too soon after conditional branches. +If this option is used, __WORKAROUND_SPECULATIVE_SYNCS is defined. + +
-mno-csync-anomaly
Don't generate extra code to prevent CSYNC or SSYNC instructions from +occurring too soon after a conditional branch. + +
-mlow-64k
When enabled, the compiler is free to take advantage of the knowledge that +the entire program fits into the low 64k of memory. + +
-mno-low-64k
Assume that the program is arbitrarily large. This is the default. + +
-mstack-check-l1
Do stack checking using information placed into L1 scratchpad memory by the +uClinux kernel. + +
-mid-shared-library
Generate code that supports shared libraries via the library ID method. +This allows for execute in place and shared libraries in an environment +without virtual memory management. This option implies -fPIC. +With a bfin-elf target, this option implies -msim. + +
-mno-id-shared-library
Generate code that doesn't assume ID based shared libraries are being used. +This is the default. + +
-mleaf-id-shared-library
Generate code that supports shared libraries via the library ID method, +but assumes that this library or executable won't link against any other +ID shared libraries. That allows the compiler to use faster code for jumps +and calls. + +
-mno-leaf-id-shared-library
Do not assume that the code being compiled won't link against any ID shared +libraries. Slower code will be generated for jump and call insns. + +
-mshared-library-id=n
Specified the identification number of the ID based shared library being +compiled. Specifying a value of 0 will generate more compact code, specifying +other values will force the allocation of that number to the current +library but is no more space or time efficient than omitting this option. + +
-msep-data
Generate code that allows the data segment to be located in a different +area of memory from the text segment. This allows for execute in place in +an environment without virtual memory management by eliminating relocations +against the text section. + +
-mno-sep-data
Generate code that assumes that the data segment follows the text segment. +This is the default. + +
-mlong-calls
-mno-long-calls
Tells the compiler to perform function calls by first loading the +address of the function into a register and then performing a subroutine +call on this register. This switch is needed if the target function +will lie outside of the 24 bit addressing range of the offset based +version of subroutine call instruction. + +

This feature is not enabled by default. Specifying +-mno-long-calls will restore the default behavior. Note these +switches have no effect on how the compiler generates code to handle +function calls via function pointers. + +

-mfast-fp
Link with the fast floating-point library. This library relaxes some of +the IEEE floating-point standard's rules for checking inputs against +Not-a-Number (NAN), in the interest of performance. + +
-minline-plt
Enable inlining of PLT entries in function calls to functions that are +not known to bind locally. It has no effect without -mfdpic. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bound-member-functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bound-member-functions.html new file mode 100644 index 0000000..b60c8d1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bound-member-functions.html @@ -0,0 +1,90 @@ + + +Bound member functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Template Instantiation, +Up: C++ Extensions +



+
+ +

6.6 Extracting the function pointer from a bound pointer to member function

+ +

+In C++, pointer to member functions (PMFs) are implemented using a wide +pointer of sorts to handle all the possible call mechanisms; the PMF +needs to store information about how to adjust the this pointer, +and if the function pointed to is virtual, where to find the vtable, and +where in the vtable to look for the member function. If you are using +PMFs in an inner loop, you should really reconsider that decision. If +that is not an option, you can extract the pointer to the function that +would be called for a given object/PMF pair and call it directly inside +the inner loop, to save a bit of time. + +

Note that you will still be paying the penalty for the call through a +function pointer; on most modern architectures, such a call defeats the +branch prediction features of the CPU. This is also true of normal +virtual function calls. + +

The syntax for this extension is + +

     extern A a;
+     extern int (A::*fp)();
+     typedef int (*fptr)(A *);
+     
+     fptr p = (fptr)(a.*fp);
+
+

For PMF constants (i.e. expressions of the form &Klasse::Member), +no object is needed to obtain the address of the function. They can be +converted to function pointers directly: + +

     fptr p1 = (fptr)(&A::foo);
+
+

You must specify -Wno-pmf-conversions to use this extension. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bug-Criteria.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bug-Criteria.html new file mode 100644 index 0000000..d901c26 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bug-Criteria.html @@ -0,0 +1,104 @@ + + +Bug Criteria - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Up: Bugs +



+
+ +

11.1 Have You Found a Bug?

+ +

+If you are not sure whether you have found a bug, here are some guidelines: + + + + +

  • If the compiler gets a fatal signal, for any input whatever, that is a +compiler bug. Reliable compilers never crash. + +

  • If the compiler produces invalid assembly code, for any input whatever +(except an asm statement), that is a compiler bug, unless the +compiler reports errors (not just warnings) which would ordinarily +prevent the assembler from being run. + +

  • If the compiler produces valid assembly code that does not correctly +execute the input source code, that is a compiler bug. + +

    However, you must double-check to make sure, because you may have a +program whose behavior is undefined, which happened by chance to give +the desired results with another C or C++ compiler. + +

    For example, in many nonoptimizing compilers, you can write x; +at the end of a function instead of return x;, with the same +results. But the value of the function is undefined if return +is omitted; it is not a bug when GCC produces different results. + +

    Problems often result from expressions with two increment operators, +as in f (*p++, *p++). Your previous compiler might have +interpreted that expression the way you intended; GCC might +interpret it another way. Neither compiler is wrong. The bug is +in your code. + +

    After you have localized the error to a single source line, it should +be easy to check for these things. If your program is correct and +well defined, you have found a compiler bug. + +

  • If the compiler produces an error message for valid input, that is a +compiler bug. + +

  • If the compiler does not produce an error message for invalid input, +that is a compiler bug. However, you should note that your idea of +“invalid input” might be someone else's idea of “an extension” or +“support for traditional practice”. + +
  • If you are an experienced user of one of the languages GCC supports, your +suggestions for improvement of GCC are welcome in any case. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bug-Reporting.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bug-Reporting.html new file mode 100644 index 0000000..b4e19fe --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bug-Reporting.html @@ -0,0 +1,63 @@ + + +Bug Reporting - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Bug Criteria, +Up: Bugs +



+
+ +

11.2 How and where to Report Bugs

+ +

+Bugs should be reported to the bug database at URL:http://sourceforge.net/tracker/?atid=520074&group_id=68108&func=browse. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bugs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bugs.html new file mode 100644 index 0000000..f3e21e7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Bugs.html @@ -0,0 +1,71 @@ + + +Bugs - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Previous: Trouble, +Up: Top +



+
+ +

11 Reporting Bugs

+ +

+Your bug reports play an essential role in making GCC reliable. + +

When you encounter a problem, the first thing to do is to see if it is +already known. See Trouble. If it isn't known, then you should +report the problem. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Dialect-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Dialect-Options.html new file mode 100644 index 0000000..48bef26 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Dialect-Options.html @@ -0,0 +1,316 @@ + + +C Dialect Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Invoking G++, +Up: Invoking GCC +



+
+ +

3.4 Options Controlling C Dialect

+ +

+The following options control the dialect of C (or languages derived +from C, such as C++, Objective-C and Objective-C++) that the compiler +accepts: + + + + +

-ansi
In C mode, this is equivalent to -std=c89. In C++ mode, it is +equivalent to -std=c++98. + +

This turns off certain features of GCC that are incompatible with ISO +C90 (when compiling C code), or of standard C++ (when compiling C++ code), +such as the asm and typeof keywords, and +predefined macros such as unix and vax that identify the +type of system you are using. It also enables the undesirable and +rarely used ISO trigraph feature. For the C compiler, +it disables recognition of C++ style // comments as well as +the inline keyword. + +

The alternate keywords __asm__, __extension__, +__inline__ and __typeof__ continue to work despite +-ansi. You would not want to use them in an ISO C program, of +course, but it is useful to put them in header files that might be included +in compilations done with -ansi. Alternate predefined macros +such as __unix__ and __vax__ are also available, with or +without -ansi. + +

The -ansi option does not cause non-ISO programs to be +rejected gratuitously. For that, -pedantic is required in +addition to -ansi. See Warning Options. + +

The macro __STRICT_ANSI__ is predefined when the -ansi +option is used. Some header files may notice this macro and refrain +from declaring certain functions or defining certain macros that the +ISO standard doesn't call for; this is to avoid interfering with any +programs that might use these names for other things. + +

Functions that would normally be built in but do not have semantics +defined by ISO C (such as alloca and ffs) are not built-in +functions when -ansi is used. See Other built-in functions provided by GCC, for details of the functions +affected. + +

-std=
Determine the language standard. See Language Standards Supported by GCC, for details of these standard versions. This option +is currently only supported when compiling C or C++. + +

The compiler can accept several base standards, such as c89 or +c++98, and GNU dialects of those standards, such as +gnu89 or gnu++98. By specifing a base standard, the +compiler will accept all programs following that standard and those +using GNU extensions that do not contradict it. For example, +-std=c89 turns off certain features of GCC that are +incompatible with ISO C90, such as the asm and typeof +keywords, but not other GNU extensions that do not have a meaning in +ISO C90, such as omitting the middle term of a ?: +expression. On the other hand, by specifing a GNU dialect of a +standard, all features the compiler support are enabled, even when +those features change the meaning of the base standard and some +strict-conforming programs may be rejected. The particular standard +is used by -pedantic to identify which features are GNU +extensions given that version of the standard. For example +-std=gnu89 -pedantic would warn about C++ style // +comments, while -std=gnu99 -pedantic would not. + +

A value for this option must be provided; possible values are + +

+
c89
iso9899:1990
Support all ISO C90 programs (certain GNU extensions that conflict +with ISO C90 are disabled). Same as -ansi for C code. + +
iso9899:199409
ISO C90 as modified in amendment 1. + +
c99
c9x
iso9899:1999
iso9899:199x
ISO C99. Note that this standard is not yet fully supported; see +http://gcc.gnu.org/gcc-4.3/c99status.html for more information. The +names c9x and iso9899:199x are deprecated. + +
gnu89
GNU dialect of ISO C90 (including some C99 features). This +is the default for C code. + +
gnu99
gnu9x
GNU dialect of ISO C99. When ISO C99 is fully implemented in GCC, +this will become the default. The name gnu9x is deprecated. + +
c++98
The 1998 ISO C++ standard plus amendments. Same as -ansi for +C++ code. + +
gnu++98
GNU dialect of -std=c++98. This is the default for +C++ code. + +
c++0x
The working draft of the upcoming ISO C++0x standard. This option +enables experimental features that are likely to be included in +C++0x. The working draft is constantly changing, and any feature that is +enabled by this flag may be removed from future versions of GCC if it is +not part of the C++0x standard. + +
gnu++0x
GNU dialect of -std=c++0x. This option enables +experimental features that may be removed in future versions of GCC. +
+ +
-fgnu89-inline
The option -fgnu89-inline tells GCC to use the traditional +GNU semantics for inline functions when in C99 mode. +See An Inline Function is As Fast As a Macro. This option +is accepted and ignored by GCC versions 4.1.3 up to but not including +4.3. In GCC versions 4.3 and later it changes the behavior of GCC in +C99 mode. Using this option is roughly equivalent to adding the +gnu_inline function attribute to all inline functions +(see Function Attributes). + +

The option -fno-gnu89-inline explicitly tells GCC to use the +C99 semantics for inline when in C99 or gnu99 mode (i.e., it +specifies the default behavior). This option was first supported in +GCC 4.3. This option is not supported in C89 or gnu89 mode. + +

The preprocessor macros __GNUC_GNU_INLINE__ and +__GNUC_STDC_INLINE__ may be used to check which semantics are +in effect for inline functions. See Common Predefined Macros (The C Preprocessor). + +

-aux-info filename
Output to the given filename prototyped declarations for all functions +declared and/or defined in a translation unit, including those in header +files. This option is silently ignored in any language other than C. + +

Besides declarations, the file indicates, in comments, the origin of +each declaration (source file and line), whether the declaration was +implicit, prototyped or unprototyped (I, N for new or +O for old, respectively, in the first character after the line +number and the colon), and whether it came from a declaration or a +definition (C or F, respectively, in the following +character). In the case of function definitions, a K&R-style list of +arguments followed by their declarations is also provided, inside +comments, after the declaration. + +

-fno-asm
Do not recognize asm, inline or typeof as a +keyword, so that code can use these words as identifiers. You can use +the keywords __asm__, __inline__ and __typeof__ +instead. -ansi implies -fno-asm. + +

In C++, this switch only affects the typeof keyword, since +asm and inline are standard keywords. You may want to +use the -fno-gnu-keywords flag instead, which has the same +effect. In C99 mode (-std=c99 or -std=gnu99), this +switch only affects the asm and typeof keywords, since +inline is a standard keyword in ISO C99. + +

-fno-builtin
-fno-builtin-function
Don't recognize built-in functions that do not begin with +__builtin_ as prefix. See Other built-in functions provided by GCC, for details of the functions affected, +including those which are not built-in functions when -ansi or +-std options for strict ISO C conformance are used because they +do not have an ISO standard meaning. + +

GCC normally generates special code to handle certain built-in functions +more efficiently; for instance, calls to alloca may become single +instructions that adjust the stack directly, and calls to memcpy +may become inline copy loops. The resulting code is often both smaller +and faster, but since the function calls no longer appear as such, you +cannot set a breakpoint on those calls, nor can you change the behavior +of the functions by linking with a different library. In addition, +when a function is recognized as a built-in function, GCC may use +information about that function to warn about problems with calls to +that function, or to generate more efficient code, even if the +resulting code still contains calls to that function. For example, +warnings are given with -Wformat for bad calls to +printf, when printf is built in, and strlen is +known not to modify global memory. + +

With the -fno-builtin-function option +only the built-in function function is +disabled. function must not begin with __builtin_. If a +function is named this is not built-in in this version of GCC, this +option is ignored. There is no corresponding +-fbuiltin-function option; if you wish to enable +built-in functions selectively when using -fno-builtin or +-ffreestanding, you may define macros such as: + +

          #define abs(n)          __builtin_abs ((n))
+          #define strcpy(d, s)    __builtin_strcpy ((d), (s))
+     
+
-fhosted
+Assert that compilation takes place in a hosted environment. This implies +-fbuiltin. A hosted environment is one in which the +entire standard library is available, and in which main has a return +type of int. Examples are nearly everything except a kernel. +This is equivalent to -fno-freestanding. + +
-ffreestanding
+Assert that compilation takes place in a freestanding environment. This +implies -fno-builtin. A freestanding environment +is one in which the standard library may not exist, and program startup may +not necessarily be at main. The most obvious example is an OS kernel. +This is equivalent to -fno-hosted. + +

See Language Standards Supported by GCC, for details of +freestanding and hosted environments. + +

-fopenmp
Enable handling of OpenMP directives #pragma omp in C/C++ and +!$omp in Fortran. When -fopenmp is specified, the +compiler generates parallel code according to the OpenMP Application +Program Interface v2.5 http://www.openmp.org/. This option +implies -pthread, and thus is only supported on targets that +have support for -pthread. + +
-fms-extensions
Accept some non-standard constructs used in Microsoft header files. + +

Some cases of unnamed fields in structures and unions are only +accepted with this option. See Unnamed struct/union fields within structs/unions, for details. + +

-trigraphs
Support ISO C trigraphs. The -ansi option (and -std +options for strict ISO C conformance) implies -trigraphs. + +
-no-integrated-cpp
Performs a compilation in two passes: preprocessing and compiling. This +option allows a user supplied "cc1", "cc1plus", or "cc1obj" via the +-B option. The user supplied compilation step can then add in +an additional preprocessing step after normal preprocessing but before +compiling. The default is to use the integrated cpp (internal cpp) + +

The semantics of this option will change if "cc1", "cc1plus", and +"cc1obj" are merged. + +


-traditional
-traditional-cpp
Formerly, these options caused GCC to attempt to emulate a pre-standard +C compiler. They are now only supported with the -E switch. +The preprocessor continues to support a pre-standard mode. See the GNU +CPP manual for details. + +
-fcond-mismatch
Allow conditional expressions with mismatched types in the second and +third arguments. The value of such an expression is void. This option +is not supported for C++. + +
-flax-vector-conversions
Allow implicit conversions between vectors with differing numbers of +elements and/or incompatible element types. This option should not be +used for new code. + +
-funsigned-char
Let the type char be unsigned, like unsigned char. + +

Each kind of machine has a default for what char should +be. It is either like unsigned char by default or like +signed char by default. + +

Ideally, a portable program should always use signed char or +unsigned char when it depends on the signedness of an object. +But many programs have been written to use plain char and +expect it to be signed, or expect it to be unsigned, depending on the +machines they were written for. This option, and its inverse, let you +make such a program work with the opposite default. + +

The type char is always a distinct type from each of +signed char or unsigned char, even though its behavior +is always just like one of those two. + +

-fsigned-char
Let the type char be signed, like signed char. + +

Note that this is equivalent to -fno-unsigned-char, which is +the negative form of -funsigned-char. Likewise, the option +-fno-signed-char is equivalent to -funsigned-char. + +

-fsigned-bitfields
-funsigned-bitfields
-fno-signed-bitfields
-fno-unsigned-bitfields
These options control whether a bit-field is signed or unsigned, when the +declaration does not use either signed or unsigned. By +default, such a bit-field is signed, because this is consistent: the +basic integer types such as int are signed types. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Extensions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Extensions.html new file mode 100644 index 0000000..d6613b4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Extensions.html @@ -0,0 +1,133 @@ + + +C Extensions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: C Implementation, +Up: Top +



+
+ +

5 Extensions to the C Language Family

+ +

+GNU C provides several language features not found in ISO standard C. +(The -pedantic option directs GCC to print a warning message if +any of these features is used.) To test for the availability of these +features in conditional compilation, check for a predefined macro +__GNUC__, which is always defined under GCC. + +

These extensions are available in C and Objective-C. Most of them are +also available in C++. See Extensions to the C++ Language, for extensions that apply only to C++. + +

Some features that are in ISO C99 but not C89 or C++ are also, as +extensions, accepted by GCC in C89 mode and in C++. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Implementation.html new file mode 100644 index 0000000..cec0b25 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C-Implementation.html @@ -0,0 +1,92 @@ + + +C Implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Invoking GCC, +Up: Top +



+
+ +

4 C Implementation-defined behavior

+ +

+A conforming implementation of ISO C is required to document its +choice of behavior in each of the areas that are designated +“implementation defined”. The following lists all such areas, +along with the section numbers from the ISO/IEC 9899:1990 and ISO/IEC +9899:1999 standards. Some areas are only implementation-defined in +one version of the standard. + +

Some choices depend on the externally determined ABI for the platform +(including standard character encodings) which GCC follows; these are +listed as “determined by ABI” below. See Binary Compatibility, and http://gcc.gnu.org/readings.html. Some +choices are documented in the preprocessor manual. +See Implementation-defined behavior (The C Preprocessor). Some choices are made by the +library and operating system (or other environment when compiling for +a freestanding environment); refer to their documentation for details. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C99-Thread_002dLocal-Edits.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C99-Thread_002dLocal-Edits.html new file mode 100644 index 0000000..7ac9baa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C99-Thread_002dLocal-Edits.html @@ -0,0 +1,116 @@ + + +C99 Thread-Local Edits - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +

5.54.1 ISO/IEC 9899:1999 Edits for Thread-Local Storage

+ +

The following are a set of changes to ISO/IEC 9899:1999 (aka C99) +that document the exact semantics of the language extension. + +

    +
  • 5.1.2 Execution environments + +

    Add new text after paragraph 1 + +

    +Within either execution environment, a thread is a flow of +control within a program. It is implementation defined whether +or not there may be more than one thread associated with a program. +It is implementation defined how threads beyond the first are +created, the name and type of the function called at thread +startup, and how threads may be terminated. However, objects +with thread storage duration shall be initialized before thread +startup. +
    + +
  • 6.2.4 Storage durations of objects + +

    Add new text before paragraph 3 + +

    +An object whose identifier is declared with the storage-class +specifier __thread has thread storage duration. +Its lifetime is the entire execution of the thread, and its +stored value is initialized only once, prior to thread startup. +
    + +
  • 6.4.1 Keywords + +

    Add __thread. + +

  • 6.7.1 Storage-class specifiers + +

    Add __thread to the list of storage class specifiers in +paragraph 1. + +

    Change paragraph 2 to + +

    +With the exception of __thread, at most one storage-class +specifier may be given [...]. The __thread specifier may +be used alone, or immediately following extern or +static. +
    + +

    Add new text after paragraph 6 + +

    +The declaration of an identifier for a variable that has +block scope that specifies __thread shall also +specify either extern or static. + +

    The __thread specifier shall be used only with +variables. +

    +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/CRIS-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/CRIS-Options.html new file mode 100644 index 0000000..3ab3232 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/CRIS-Options.html @@ -0,0 +1,137 @@ + + +CRIS Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Blackfin Options, +Up: Submodel Options +



+
+ +

3.17.5 CRIS Options

+ +

+These options are defined specifically for the CRIS ports. + +

+
-march=architecture-type
-mcpu=architecture-type
Generate code for the specified architecture. The choices for +architecture-type are v3, v8 and v10 for +respectively ETRAX 4, ETRAX 100, and ETRAX 100 LX. +Default is v0 except for cris-axis-linux-gnu, where the default is +v10. + +
-mtune=architecture-type
Tune to architecture-type everything applicable about the generated +code, except for the ABI and the set of available instructions. The +choices for architecture-type are the same as for +-march=architecture-type. + +
-mmax-stack-frame=n
Warn when the stack frame of a function exceeds n bytes. + +
-melinux-stacksize=n
Only available with the cris-axis-aout target. Arranges for +indications in the program to the kernel loader that the stack of the +program should be set to n bytes. + +
-metrax4
-metrax100
The options -metrax4 and -metrax100 are synonyms for +-march=v3 and -march=v8 respectively. + +
-mmul-bug-workaround
-mno-mul-bug-workaround
Work around a bug in the muls and mulu instructions for CPU +models where it applies. This option is active by default. + +
-mpdebug
Enable CRIS-specific verbose debug-related information in the assembly +code. This option also has the effect to turn off the #NO_APP +formatted-code indicator to the assembler at the beginning of the +assembly file. + +
-mcc-init
Do not use condition-code results from previous instruction; always emit +compare and test instructions before use of condition codes. + +
-mno-side-effects
Do not emit instructions with side-effects in addressing modes other than +post-increment. + +
-mstack-align
-mno-stack-align
-mdata-align
-mno-data-align
-mconst-align
-mno-const-align
These options (no-options) arranges (eliminate arrangements) for the +stack-frame, individual data and constants to be aligned for the maximum +single data access size for the chosen CPU model. The default is to +arrange for 32-bit alignment. ABI details such as structure layout are +not affected by these options. + +
-m32-bit
-m16-bit
-m8-bit
Similar to the stack- data- and const-align options above, these options +arrange for stack-frame, writable data and constants to all be 32-bit, +16-bit or 8-bit aligned. The default is 32-bit alignment. + +
-mno-prologue-epilogue
-mprologue-epilogue
With -mno-prologue-epilogue, the normal function prologue and +epilogue that sets up the stack-frame are omitted and no return +instructions or return sequences are generated in the code. Use this +option only together with visual inspection of the compiled code: no +warnings or errors are generated when call-saved registers must be saved, +or storage for local variable needs to be allocated. + +
-mno-gotplt
-mgotplt
With -fpic and -fPIC, don't generate (do generate) +instruction sequences that load addresses for functions from the PLT part +of the GOT rather than (traditional on other architectures) calls to the +PLT. The default is -mgotplt. + +
-maout
Legacy no-op option only recognized with the cris-axis-aout target. + +
-melf
Legacy no-op option only recognized with the cris-axis-elf and +cris-axis-linux-gnu targets. + +
-melinux
Only recognized with the cris-axis-aout target, where it selects a +GNU/linux-like multilib, include files and instruction set for +-march=v8. + +
-mlinux
Legacy no-op option only recognized with the cris-axis-linux-gnu target. + +
-sim
This option, recognized for the cris-axis-aout and cris-axis-elf arranges +to link with input-output functions from a simulator library. Code, +initialized data and zero-initialized data are allocated consecutively. + +
-sim2
Like -sim, but pass linker options to locate initialized data at +0x40000000 and zero-initialized data at 0x80000000. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/CRX-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/CRX-Options.html new file mode 100644 index 0000000..cfd02a9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/CRX-Options.html @@ -0,0 +1,68 @@ + + +CRX Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: CRIS Options, +Up: Submodel Options +



+
+ +

3.17.6 CRX Options

+ +

+These options are defined specifically for the CRX ports. + +

+
-mmac
Enable the use of multiply-accumulate instructions. Disabled by default. + +
-mpush-args
Push instructions will be used to pass outgoing arguments when functions +are called. Enabled by default. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Attributes.html new file mode 100644 index 0000000..4cfea02 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Attributes.html @@ -0,0 +1,91 @@ + + +C++ Attributes - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

6.7 C++-Specific Variable, Function, and Type Attributes

+ +

Some attributes only make sense for C++ programs. + +

+
init_priority (priority)
+ +

In Standard C++, objects defined at namespace scope are guaranteed to be +initialized in an order in strict accordance with that of their definitions +in a given translation unit. No guarantee is made for initializations +across translation units. However, GNU C++ allows users to control the +order of initialization of objects defined at namespace scope with the +init_priority attribute by specifying a relative priority, +a constant integral expression currently bounded between 101 and 65535 +inclusive. Lower numbers indicate a higher priority. + +

In the following example, A would normally be created before +B, but the init_priority attribute has reversed that order: + +

          Some_Class  A  __attribute__ ((init_priority (2000)));
+          Some_Class  B  __attribute__ ((init_priority (543)));
+     
+

Note that the particular values of priority do not matter; only their +relative ordering. + +

java_interface
+This type attribute informs C++ that the class is a Java interface. It may +only be applied to classes declared within an extern "Java" block. +Calls to methods declared in this interface will be dispatched using GCJ's +interface table mechanism, instead of regular virtual table dispatch. + +
+ +

See also See Namespace Association. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Comments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Comments.html new file mode 100644 index 0000000..6cc1704 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Comments.html @@ -0,0 +1,66 @@ + + +C++ Comments - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Function Prototypes, +Up: C Extensions +



+
+ +

5.30 C++ Style Comments

+ +

+In GNU C, you may use C++ style comments, which start with // and +continue until the end of the line. Many other C implementations allow +such comments, and they are included in the 1999 C standard. However, +C++ style comments are not recognized if you specify an -std +option specifying a version of ISO C before C99, or -ansi +(equivalent to -std=c89). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Dialect-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Dialect-Options.html new file mode 100644 index 0000000..847938b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Dialect-Options.html @@ -0,0 +1,489 @@ + + +C++ Dialect Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

3.5 Options Controlling C++ Dialect

+ +

This section describes the command-line options that are only meaningful +for C++ programs; but you can also use most of the GNU compiler options +regardless of what language your program is in. For example, you +might compile a file firstClass.C like this: + +

     g++ -g -frepo -O -c firstClass.C
+
+

In this example, only -frepo is an option meant +only for C++ programs; you can use the other options with any +language supported by GCC. + +

Here is a list of options that are only for compiling C++ programs: + +

+
-fabi-version=n
Use version n of the C++ ABI. Version 2 is the version of the +C++ ABI that first appeared in G++ 3.4. Version 1 is the version of +the C++ ABI that first appeared in G++ 3.2. Version 0 will always be +the version that conforms most closely to the C++ ABI specification. +Therefore, the ABI obtained using version 0 will change as ABI bugs +are fixed. + +

The default is version 2. + +

-fno-access-control
Turn off all access checking. This switch is mainly useful for working +around bugs in the access control code. + +
-fcheck-new
Check that the pointer returned by operator new is non-null +before attempting to modify the storage allocated. This check is +normally unnecessary because the C++ standard specifies that +operator new will only return 0 if it is declared +throw(), in which case the compiler will always check the +return value even without this option. In all other cases, when +operator new has a non-empty exception specification, memory +exhaustion is signalled by throwing std::bad_alloc. See also +new (nothrow). + +
-fconserve-space
Put uninitialized or runtime-initialized global variables into the +common segment, as C does. This saves space in the executable at the +cost of not diagnosing duplicate definitions. If you compile with this +flag and your program mysteriously crashes after main() has +completed, you may have an object that is being destroyed twice because +two definitions were merged. + +

This option is no longer useful on most targets, now that support has +been added for putting variables into BSS without making them common. + +

-ffriend-injection
Inject friend functions into the enclosing namespace, so that they are +visible outside the scope of the class in which they are declared. +Friend functions were documented to work this way in the old Annotated +C++ Reference Manual, and versions of G++ before 4.1 always worked +that way. However, in ISO C++ a friend function which is not declared +in an enclosing scope can only be found using argument dependent +lookup. This option causes friends to be injected as they were in +earlier releases. + +

This option is for compatibility, and may be removed in a future +release of G++. + +

-fno-elide-constructors
The C++ standard allows an implementation to omit creating a temporary +which is only used to initialize another object of the same type. +Specifying this option disables that optimization, and forces G++ to +call the copy constructor in all cases. + +
-fno-enforce-eh-specs
Don't generate code to check for violation of exception specifications +at runtime. This option violates the C++ standard, but may be useful +for reducing code size in production builds, much like defining +NDEBUG. This does not give user code permission to throw +exceptions in violation of the exception specifications; the compiler +will still optimize based on the specifications, so throwing an +unexpected exception will result in undefined behavior. + +
-ffor-scope
-fno-for-scope
If -ffor-scope is specified, the scope of variables declared in +a for-init-statement is limited to the for loop itself, +as specified by the C++ standard. +If -fno-for-scope is specified, the scope of variables declared in +a for-init-statement extends to the end of the enclosing scope, +as was the case in old versions of G++, and other (traditional) +implementations of C++. + +

The default if neither flag is given to follow the standard, +but to allow and give a warning for old-style code that would +otherwise be invalid, or have different behavior. + +

-fno-gnu-keywords
Do not recognize typeof as a keyword, so that code can use this +word as an identifier. You can use the keyword __typeof__ instead. +-ansi implies -fno-gnu-keywords. + +
-fno-implicit-templates
Never emit code for non-inline templates which are instantiated +implicitly (i.e. by use); only emit code for explicit instantiations. +See Template Instantiation, for more information. + +
-fno-implicit-inline-templates
Don't emit code for implicit instantiations of inline templates, either. +The default is to handle inlines differently so that compiles with and +without optimization will need the same set of explicit instantiations. + +
-fno-implement-inlines
To save space, do not emit out-of-line copies of inline functions +controlled by #pragma implementation. This will cause linker +errors if these functions are not inlined everywhere they are called. + +
-fms-extensions
Disable pedantic warnings about constructs used in MFC, such as implicit +int and getting a pointer to member function via non-standard syntax. + +
-fno-nonansi-builtins
Disable built-in declarations of functions that are not mandated by +ANSI/ISO C. These include ffs, alloca, _exit, +index, bzero, conjf, and other related functions. + +
-fno-operator-names
Do not treat the operator name keywords and, bitand, +bitor, compl, not, or and xor as +synonyms as keywords. + +
-fno-optional-diags
Disable diagnostics that the standard says a compiler does not need to +issue. Currently, the only such diagnostic issued by G++ is the one for +a name having multiple meanings within a class. + +
-fpermissive
Downgrade some diagnostics about nonconformant code from errors to +warnings. Thus, using -fpermissive will allow some +nonconforming code to compile. + +
-frepo
Enable automatic template instantiation at link time. This option also +implies -fno-implicit-templates. See Template Instantiation, for more information. + +
-fno-rtti
Disable generation of information about every class with virtual +functions for use by the C++ runtime type identification features +(dynamic_cast and typeid). If you don't use those parts +of the language, you can save some space by using this flag. Note that +exception handling uses the same information, but it will generate it as +needed. The dynamic_cast operator can still be used for casts that +do not require runtime type information, i.e. casts to void * or to +unambiguous base classes. + +
-fstats
Emit statistics about front-end processing at the end of the compilation. +This information is generally only useful to the G++ development team. + +
-ftemplate-depth-n
Set the maximum instantiation depth for template classes to n. +A limit on the template instantiation depth is needed to detect +endless recursions during template class instantiation. ANSI/ISO C++ +conforming programs must not rely on a maximum depth greater than 17. + +
-fno-threadsafe-statics
Do not emit the extra code to use the routines specified in the C++ +ABI for thread-safe initialization of local statics. You can use this +option to reduce code size slightly in code that doesn't need to be +thread-safe. + +
-fuse-cxa-atexit
Register destructors for objects with static storage duration with the +__cxa_atexit function rather than the atexit function. +This option is required for fully standards-compliant handling of static +destructors, but will only work if your C library supports +__cxa_atexit. + +
-fno-use-cxa-get-exception-ptr
Don't use the __cxa_get_exception_ptr runtime routine. This +will cause std::uncaught_exception to be incorrect, but is necessary +if the runtime routine is not available. + +
-fvisibility-inlines-hidden
This switch declares that the user does not attempt to compare +pointers to inline methods where the addresses of the two functions +were taken in different shared objects. + +

The effect of this is that GCC may, effectively, mark inline methods with +__attribute__ ((visibility ("hidden"))) so that they do not +appear in the export table of a DSO and do not require a PLT indirection +when used within the DSO. Enabling this option can have a dramatic effect +on load and link times of a DSO as it massively reduces the size of the +dynamic export table when the library makes heavy use of templates. + +

The behavior of this switch is not quite the same as marking the +methods as hidden directly, because it does not affect static variables +local to the function or cause the compiler to deduce that +the function is defined in only one shared object. + +

You may mark a method as having a visibility explicitly to negate the +effect of the switch for that method. For example, if you do want to +compare pointers to a particular inline method, you might mark it as +having default visibility. Marking the enclosing class with explicit +visibility will have no effect. + +

Explicitly instantiated inline methods are unaffected by this option +as their linkage might otherwise cross a shared library boundary. +See Template Instantiation. + +

-fvisibility-ms-compat
This flag attempts to use visibility settings to make GCC's C++ +linkage model compatible with that of Microsoft Visual Studio. + +

The flag makes these changes to GCC's linkage model: + +

    +
  1. It sets the default visibility to hidden, like +-fvisibility=hidden. + +
  2. Types, but not their members, are not hidden by default. + +
  3. The One Definition Rule is relaxed for types without explicit +visibility specifications which are defined in more than one different +shared object: those declarations are permitted if they would have +been permitted when this option was not used. +
+ +

In new code it is better to use -fvisibility=hidden and +export those classes which are intended to be externally visible. +Unfortunately it is possible for code to rely, perhaps accidentally, +on the Visual Studio behavior. + +

Among the consequences of these changes are that static data members +of the same type with the same name but defined in different shared +objects will be different, so changing one will not change the other; +and that pointers to function members defined in different shared +objects may not compare equal. When this flag is given, it is a +violation of the ODR to define types with the same name differently. + +

-fno-weak
Do not use weak symbol support, even if it is provided by the linker. +By default, G++ will use weak symbols if they are available. This +option exists only for testing, and should not be used by end-users; +it will result in inferior code and has no benefits. This option may +be removed in a future release of G++. + +
-nostdinc++
Do not search for header files in the standard directories specific to +C++, but do still search the other standard directories. (This option +is used when building the C++ library.) +
+ +

In addition, these optimization, warning, and code generation options +have meanings only for C++ programs: + +

+
-fno-default-inline
Do not assume inline for functions defined inside a class scope. +See Options That Control Optimization. Note that these +functions will have linkage like inline functions; they just won't be +inlined by default. + +
-Wabi (C++ and Objective-C++ only)
Warn when G++ generates code that is probably not compatible with the +vendor-neutral C++ ABI. Although an effort has been made to warn about +all such cases, there are probably some cases that are not warned about, +even though G++ is generating incompatible code. There may also be +cases where warnings are emitted even though the code that is generated +will be compatible. + +

You should rewrite your code to avoid these warnings if you are +concerned about the fact that code generated by G++ may not be binary +compatible with code generated by other compilers. + +

The known incompatibilities at this point include: + +

    +
  • Incorrect handling of tail-padding for bit-fields. G++ may attempt to +pack data into the same byte as a base class. For example: + +
                   struct A { virtual void f(); int f1 : 1; };
    +               struct B : public A { int f2 : 1; };
    +          
    +

    In this case, G++ will place B::f2 into the same byte +asA::f1; other compilers will not. You can avoid this problem +by explicitly padding A so that its size is a multiple of the +byte size on your platform; that will cause G++ and other compilers to +layout B identically. + +

  • Incorrect handling of tail-padding for virtual bases. G++ does not use +tail padding when laying out virtual bases. For example: + +
                   struct A { virtual void f(); char c1; };
    +               struct B { B(); char c2; };
    +               struct C : public A, public virtual B {};
    +          
    +

    In this case, G++ will not place B into the tail-padding for +A; other compilers will. You can avoid this problem by +explicitly padding A so that its size is a multiple of its +alignment (ignoring virtual base classes); that will cause G++ and other +compilers to layout C identically. + +

  • Incorrect handling of bit-fields with declared widths greater than that +of their underlying types, when the bit-fields appear in a union. For +example: + +
                   union U { int i : 4096; };
    +          
    +

    Assuming that an int does not have 4096 bits, G++ will make the +union too small by the number of bits in an int. + +

  • Empty classes can be placed at incorrect offsets. For example: + +
                   struct A {};
    +               
    +               struct B {
    +                 A a;
    +                 virtual void f ();
    +               };
    +               
    +               struct C : public B, public A {};
    +          
    +

    G++ will place the A base class of C at a nonzero offset; +it should be placed at offset zero. G++ mistakenly believes that the +A data member of B is already at offset zero. + +

  • Names of template functions whose types involve typename or +template template parameters can be mangled incorrectly. + +
                   template <typename Q>
    +               void f(typename Q::X) {}
    +               
    +               template <template <typename> class Q>
    +               void f(typename Q<int>::X) {}
    +          
    +

    Instantiations of these templates may be mangled incorrectly. + +

+ +
-Wctor-dtor-privacy (C++ and Objective-C++ only)
Warn when a class seems unusable because all the constructors or +destructors in that class are private, and it has neither friends nor +public static member functions. + +
-Wnon-virtual-dtor (C++ and Objective-C++ only)
Warn when a class has virtual functions and accessible non-virtual +destructor, in which case it would be possible but unsafe to delete +an instance of a derived class through a pointer to the base class. +This warning is also enabled if -Weffc++ is specified. + +
-Wreorder (C++ and Objective-C++ only)
Warn when the order of member initializers given in the code does not +match the order in which they must be executed. For instance: + +
          struct A {
+            int i;
+            int j;
+            A(): j (0), i (1) { }
+          };
+     
+

The compiler will rearrange the member initializers for i +and j to match the declaration order of the members, emitting +a warning to that effect. This warning is enabled by -Wall. +

+ +

The following -W... options are not affected by -Wall. + +

+
-Weffc++ (C++ and Objective-C++ only)
Warn about violations of the following style guidelines from Scott Meyers' +Effective C++ book: + +
    +
  • Item 11: Define a copy constructor and an assignment operator for classes +with dynamically allocated memory. + +
  • Item 12: Prefer initialization to assignment in constructors. + +
  • Item 14: Make destructors virtual in base classes. + +
  • Item 15: Have operator= return a reference to *this. + +
  • Item 23: Don't try to return a reference when you must return an object. + +
+ +

Also warn about violations of the following style guidelines from +Scott Meyers' More Effective C++ book: + +

    +
  • Item 6: Distinguish between prefix and postfix forms of increment and +decrement operators. + +
  • Item 7: Never overload &&, ||, or ,. + +
+ +

When selecting this option, be aware that the standard library +headers do not obey all of these guidelines; use grep -v +to filter out those warnings. + +

-Wno-deprecated (C++ and Objective-C++ only)
Do not warn about usage of deprecated features. See Deprecated Features. + +
-Wstrict-null-sentinel (C++ and Objective-C++ only)
Warn also about the use of an uncasted NULL as sentinel. When +compiling only with GCC this is a valid sentinel, as NULL is defined +to __null. Although it is a null pointer constant not a null pointer, +it is guaranteed to of the same size as a pointer. But this use is +not portable across different compilers. + +
-Wno-non-template-friend (C++ and Objective-C++ only)
Disable warnings when non-templatized friend functions are declared +within a template. Since the advent of explicit template specification +support in G++, if the name of the friend is an unqualified-id (i.e., +friend foo(int)), the C++ language specification demands that the +friend declare or define an ordinary, nontemplate function. (Section +14.5.3). Before G++ implemented explicit specification, unqualified-ids +could be interpreted as a particular specialization of a templatized +function. Because this non-conforming behavior is no longer the default +behavior for G++, -Wnon-template-friend allows the compiler to +check existing code for potential trouble spots and is on by default. +This new compiler behavior can be turned off with +-Wno-non-template-friend which keeps the conformant compiler code +but disables the helpful warning. + +
-Wold-style-cast (C++ and Objective-C++ only)
Warn if an old-style (C-style) cast to a non-void type is used within +a C++ program. The new-style casts (dynamic_cast, +static_cast, reinterpret_cast, and const_cast) are +less vulnerable to unintended effects and much easier to search for. + +
-Woverloaded-virtual (C++ and Objective-C++ only)
Warn when a function declaration hides virtual functions from a +base class. For example, in: + +
          struct A {
+            virtual void f();
+          };
+          
+          struct B: public A {
+            void f(int);
+          };
+     
+

the A class version of f is hidden in B, and code +like: + +

          B* b;
+          b->f();
+     
+

will fail to compile. + +

-Wno-pmf-conversions (C++ and Objective-C++ only)
Disable the diagnostic for converting a bound pointer to member function +to a plain pointer. + +
-Wsign-promo (C++ and Objective-C++ only)
Warn when overload resolution chooses a promotion from unsigned or +enumerated type to a signed type, over a conversion to an unsigned type of +the same size. Previous versions of G++ would try to preserve +unsignedness, but the standard mandates the current behavior. + +
          struct A {
+            operator int ();
+            A& operator = (int);
+          };
+          
+          main ()
+          {
+            A a,b;
+            a = b;
+          }
+     
+

In this example, G++ will synthesize a default A& operator = +(const A&);, while cfront will use the user-defined operator =. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Extensions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Extensions.html new file mode 100644 index 0000000..ebb618b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Extensions.html @@ -0,0 +1,83 @@ + + +C++ Extensions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: C Extensions, +Up: Top +



+
+ +

6 Extensions to the C++ Language

+ +

+The GNU compiler provides these extensions to the C++ language (and you +can also use most of the C language extensions in your C++ programs). If you +want to write code that checks whether these features are available, you can +test for the GNU compiler the same way as for C programs: check for a +predefined macro __GNUC__. You can also use __GNUG__ to +test specifically for GNU C++ (see Predefined Macros (The GNU C Preprocessor)). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Interface.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Interface.html new file mode 100644 index 0000000..06db09b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Interface.html @@ -0,0 +1,145 @@ + + +C++ Interface - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Vague Linkage, +Up: C++ Extensions +



+
+ +

6.4 #pragma interface and implementation

+ +

+#pragma interface and #pragma implementation provide the +user with a way of explicitly directing the compiler to emit entities +with vague linkage (and debugging information) in a particular +translation unit. + +

Note: As of GCC 2.7.2, these #pragmas are not useful in +most cases, because of COMDAT support and the “key method” heuristic +mentioned in Vague Linkage. Using them can actually cause your +program to grow due to unnecessary out-of-line copies of inline +functions. Currently (3.4) the only benefit of these +#pragmas is reduced duplication of debugging information, and +that should be addressed soon on DWARF 2 targets with the use of +COMDAT groups. + +

+
#pragma interface
#pragma interface "subdir/objects.h"
Use this directive in header files that define object classes, to save +space in most of the object files that use those classes. Normally, +local copies of certain information (backup copies of inline member +functions, debugging information, and the internal tables that implement +virtual functions) must be kept in each object file that includes class +definitions. You can use this pragma to avoid such duplication. When a +header file containing #pragma interface is included in a +compilation, this auxiliary information will not be generated (unless +the main input source file itself uses #pragma implementation). +Instead, the object files will contain references to be resolved at link +time. + +

The second form of this directive is useful for the case where you have +multiple headers with the same name in different directories. If you +use this form, you must specify the same string to #pragma +implementation. + +

#pragma implementation
#pragma implementation "objects.h"
Use this pragma in a main input file, when you want full output from +included header files to be generated (and made globally visible). The +included header file, in turn, should use #pragma interface. +Backup copies of inline member functions, debugging information, and the +internal tables used to implement virtual functions are all generated in +implementation files. + +

If you use #pragma implementation with no argument, it applies to +an include file with the same basename1 as your source +file. For example, in allclass.cc, giving just +#pragma implementation +by itself is equivalent to #pragma implementation "allclass.h". + +

In versions of GNU C++ prior to 2.6.0 allclass.h was treated as +an implementation file whenever you would include it from +allclass.cc even if you never specified #pragma +implementation. This was deemed to be more trouble than it was worth, +however, and disabled. + +

Use the string argument if you want a single implementation file to +include code from multiple header files. (You must also use +#include to include the header file; #pragma +implementation only specifies how to use the file—it doesn't actually +include it.) + +

There is no way to split up the contents of a single header file into +multiple implementation files. +

+ +

#pragma implementation and #pragma interface also have an +effect on function inlining. + +

If you define a class in a header file marked with #pragma +interface, the effect on an inline function defined in that class is +similar to an explicit extern declaration—the compiler emits +no code at all to define an independent version of the function. Its +definition is used only for inlining with its callers. + +

Conversely, when you include the same header file in a main source file +that declares it as #pragma implementation, the compiler emits +code for the function itself; this defines a version of the function +that can be found via pointers (or by callers compiled without +inlining). If all calls to the function can be inlined, you can avoid +emitting the function by compiling with -fno-implement-inlines. +If any calls were not inlined, you will get linker errors. + +

+
+

Footnotes

[1] A file's basename +was the name stripped of all leading path information and of trailing +suffixes, such as .h or .C or .cc.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Misunderstandings.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Misunderstandings.html new file mode 100644 index 0000000..a779f55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b-Misunderstandings.html @@ -0,0 +1,71 @@ + + +C++ Misunderstandings - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Disappointments, +Up: Trouble +



+
+ +

10.8 Common Misunderstandings with GNU C++

+ +

C++ is a complex language and an evolving one, and its standard +definition (the ISO C++ standard) was only recently completed. As a +result, your C++ compiler may occasionally surprise you, even when its +behavior is correct. This section discusses some areas that frequently +give rise to questions of this sort. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b98-Thread_002dLocal-Edits.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b98-Thread_002dLocal-Edits.html new file mode 100644 index 0000000..7c408a8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/C_002b_002b98-Thread_002dLocal-Edits.html @@ -0,0 +1,181 @@ + + +C++98 Thread-Local Edits - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: C99 Thread-Local Edits, +Up: Thread-Local +



+
+ +

5.54.2 ISO/IEC 14882:1998 Edits for Thread-Local Storage

+ +

The following are a set of changes to ISO/IEC 14882:1998 (aka C++98) +that document the exact semantics of the language extension. + +

    +
  • [intro.execution] + +

    New text after paragraph 4 + +

    +A thread is a flow of control within the abstract machine. +It is implementation defined whether or not there may be more than +one thread. +
    + +

    New text after paragraph 7 + +

    +It is unspecified whether additional action must be taken to +ensure when and whether side effects are visible to other threads. +
    + +
  • [lex.key] + +

    Add __thread. + +

  • [basic.start.main] + +

    Add after paragraph 5 + +

    +The thread that begins execution at the main function is called +the main thread. It is implementation defined how functions +beginning threads other than the main thread are designated or typed. +A function so designated, as well as the main function, is called +a thread startup function. It is implementation defined what +happens if a thread startup function returns. It is implementation +defined what happens to other threads when any thread calls exit. +
    + +
  • [basic.start.init] + +

    Add after paragraph 4 + +

    +The storage for an object of thread storage duration shall be +statically initialized before the first statement of the thread startup +function. An object of thread storage duration shall not require +dynamic initialization. +
    + +
  • [basic.start.term] + +

    Add after paragraph 3 + +

    +The type of an object with thread storage duration shall not have a +non-trivial destructor, nor shall it be an array type whose elements +(directly or indirectly) have non-trivial destructors. +
    + +
  • [basic.stc] + +

    Add “thread storage duration” to the list in paragraph 1. + +

    Change paragraph 2 + +

    +Thread, static, and automatic storage durations are associated with +objects introduced by declarations [...]. +
    + +

    Add __thread to the list of specifiers in paragraph 3. + +

  • [basic.stc.thread] + +

    New section before [basic.stc.static] + +

    +The keyword __thread applied to a non-local object gives the +object thread storage duration. + +

    A local variable or class data member declared both static +and __thread gives the variable or member thread storage +duration. +

    + +
  • [basic.stc.static] + +

    Change paragraph 1 + +

    +All objects which have neither thread storage duration, dynamic +storage duration nor are local [...]. +
    + +
  • [dcl.stc] + +

    Add __thread to the list in paragraph 1. + +

    Change paragraph 1 + +

    +With the exception of __thread, at most one +storage-class-specifier shall appear in a given +decl-specifier-seq. The __thread specifier may +be used alone, or immediately following the extern or +static specifiers. [...] +
    + +

    Add after paragraph 5 + +

    +The __thread specifier can be applied only to the names of objects +and to anonymous unions. +
    + +
  • [class.mem] + +

    Add after paragraph 6 + +

    +Non-static members shall not be __thread. +
    +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Case-Ranges.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Case-Ranges.html new file mode 100644 index 0000000..07ebc05 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Case-Ranges.html @@ -0,0 +1,81 @@ + + +Case Ranges - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Cast to Union, +Up: C Extensions +



+
+ +

5.24 Case Ranges

+ +

+You can specify a range of consecutive values in a single case label, +like this: + +

     case low ... high:
+
+

This has the same effect as the proper number of individual case +labels, one for each integer value from low to high, inclusive. + +

This feature is especially useful for ranges of ASCII character codes: + +

     case 'A' ... 'Z':
+
+

Be careful: Write spaces around the ..., for otherwise +it may be parsed wrong when you use it with integer values. For example, +write this: + +

     case 1 ... 5:
+
+

rather than this: + +

     case 1...5:
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cast-to-Union.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cast-to-Union.html new file mode 100644 index 0000000..ca5917d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cast-to-Union.html @@ -0,0 +1,88 @@ + + +Cast to Union - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Designated Inits, +Up: C Extensions +



+
+ +

5.25 Cast to a Union Type

+ +

+A cast to union type is similar to other casts, except that the type +specified is a union type. You can specify the type either with +union tag or with a typedef name. A cast to union is actually +a constructor though, not a cast, and hence does not yield an lvalue like +normal casts. (See Compound Literals.) + +

The types that may be cast to the union type are those of the members +of the union. Thus, given the following union and variables: + +

     union foo { int i; double d; };
+     int x;
+     double y;
+
+

both x and y can be cast to type union foo. + +

Using the cast as the right-hand side of an assignment to a variable of +union type is equivalent to storing in a member of the union: + +

     union foo u;
+     /* ... */
+     u = (union foo) x  ==  u.i = x
+     u = (union foo) y  ==  u.d = y
+
+

You can also use the union cast as a function argument: + +

     void hack (union foo);
+     /* ... */
+     hack ((union foo) x);
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Character-Escapes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Character-Escapes.html new file mode 100644 index 0000000..dad4285 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Character-Escapes.html @@ -0,0 +1,61 @@ + + +Character Escapes - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Dollar Signs, +Up: C Extensions +



+
+ +

5.32 The Character <ESC> in Constants

+ +

You can use the sequence \e in a string or character constant to +stand for the ASCII character <ESC>. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Characters-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Characters-implementation.html new file mode 100644 index 0000000..8e250d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Characters-implementation.html @@ -0,0 +1,123 @@ + + +Characters implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.4 Characters

+ +
    +
  • The number of bits in a byte (C90 3.4, C99 3.6). + +

    Determined by ABI. + +

  • The values of the members of the execution character set (C90 +and C99 5.2.1). + +

    Determined by ABI. + +

  • The unique value of the member of the execution character set produced +for each of the standard alphabetic escape sequences (C90 and C99 5.2.2). + +

    Determined by ABI. + +

  • The value of a char object into which has been stored any +character other than a member of the basic execution character set +(C90 6.1.2.5, C99 6.2.5). + +

    Determined by ABI. + +

  • Which of signed char or unsigned char has the same +range, representation, and behavior as “plain” char (C90 +6.1.2.5, C90 6.2.1.1, C99 6.2.5, C99 6.3.1.1). + +

    Determined by ABI. The options -funsigned-char and +-fsigned-char change the default. See Options Controlling C Dialect. + +

  • The mapping of members of the source character set (in character +constants and string literals) to members of the execution character +set (C90 6.1.3.4, C99 6.4.4.4, C90 and C99 5.1.1.2). + +

    Determined by ABI. + +

  • The value of an integer character constant containing more than one +character or containing a character or escape sequence that does not map +to a single-byte execution character (C90 6.1.3.4, C99 6.4.4.4). + +

    See Implementation-defined behavior (The C Preprocessor). + +

  • The value of a wide character constant containing more than one +multibyte character, or containing a multibyte character or escape +sequence not represented in the extended execution character set (C90 +6.1.3.4, C99 6.4.4.4). + +

    See Implementation-defined behavior (The C Preprocessor). + +

  • The current locale used to convert a wide character constant consisting +of a single multibyte character that maps to a member of the extended +execution character set into a corresponding wide character code (C90 +6.1.3.4, C99 6.4.4.4). + +

    See Implementation-defined behavior (The C Preprocessor). + +

  • The current locale used to convert a wide string literal into +corresponding wide character codes (C90 6.1.4, C99 6.4.5). + +

    See Implementation-defined behavior (The C Preprocessor). + +

  • The value of a string literal containing a multibyte character or escape +sequence not represented in the execution character set (C90 6.1.4, C99 6.4.5). + +

    See Implementation-defined behavior (The C Preprocessor). +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Code-Gen-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Code-Gen-Options.html new file mode 100644 index 0000000..d65f702 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Code-Gen-Options.html @@ -0,0 +1,477 @@ + + +Code Gen Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Submodel Options, +Up: Invoking GCC +



+
+ +

3.18 Options for Code Generation Conventions

+ +

+These machine-independent options control the interface conventions +used in code generation. + +

Most of them have both positive and negative forms; the negative form +of -ffoo would be -fno-foo. In the table below, only +one of the forms is listed—the one which is not the default. You +can figure out the other form by either removing no- or adding +it. + +

+
-fbounds-check
For front-ends that support it, generate additional code to check that +indices used to access arrays are within the declared range. This is +currently only supported by the Java and Fortran front-ends, where +this option defaults to true and false respectively. + +
-ftrapv
This option generates traps for signed overflow on addition, subtraction, +multiplication operations. + +
-fwrapv
This option instructs the compiler to assume that signed arithmetic +overflow of addition, subtraction and multiplication wraps around +using twos-complement representation. This flag enables some optimizations +and disables others. This option is enabled by default for the Java +front-end, as required by the Java language specification. + +
-fexceptions
Enable exception handling. Generates extra code needed to propagate +exceptions. For some targets, this implies GCC will generate frame +unwind information for all functions, which can produce significant data +size overhead, although it does not affect execution. If you do not +specify this option, GCC will enable it by default for languages like +C++ which normally require exception handling, and disable it for +languages like C that do not normally require it. However, you may need +to enable this option when compiling C code that needs to interoperate +properly with exception handlers written in C++. You may also wish to +disable this option if you are compiling older C++ programs that don't +use exception handling. + +
-fnon-call-exceptions
Generate code that allows trapping instructions to throw exceptions. +Note that this requires platform-specific runtime support that does +not exist everywhere. Moreover, it only allows trapping +instructions to throw exceptions, i.e. memory references or floating +point instructions. It does not allow exceptions to be thrown from +arbitrary signal handlers such as SIGALRM. + +
-funwind-tables
Similar to -fexceptions, except that it will just generate any needed +static data, but will not affect the generated code in any other way. +You will normally not enable this option; instead, a language processor +that needs this handling would enable it on your behalf. + +
-fasynchronous-unwind-tables
Generate unwind table in dwarf2 format, if supported by target machine. The +table is exact at each instruction boundary, so it can be used for stack +unwinding from asynchronous events (such as debugger or garbage collector). + +
-fpcc-struct-return
Return “short” struct and union values in memory like +longer ones, rather than in registers. This convention is less +efficient, but it has the advantage of allowing intercallability between +GCC-compiled files and files compiled with other compilers, particularly +the Portable C Compiler (pcc). + +

The precise convention for returning structures in memory depends +on the target configuration macros. + +

Short structures and unions are those whose size and alignment match +that of some integer type. + +

Warning: code compiled with the -fpcc-struct-return +switch is not binary compatible with code compiled with the +-freg-struct-return switch. +Use it to conform to a non-default application binary interface. + +

-freg-struct-return
Return struct and union values in registers when possible. +This is more efficient for small structures than +-fpcc-struct-return. + +

If you specify neither -fpcc-struct-return nor +-freg-struct-return, GCC defaults to whichever convention is +standard for the target. If there is no standard convention, GCC +defaults to -fpcc-struct-return, except on targets where GCC is +the principal compiler. In those cases, we can choose the standard, and +we chose the more efficient register return alternative. + +

Warning: code compiled with the -freg-struct-return +switch is not binary compatible with code compiled with the +-fpcc-struct-return switch. +Use it to conform to a non-default application binary interface. + +

-fshort-enums
Allocate to an enum type only as many bytes as it needs for the +declared range of possible values. Specifically, the enum type +will be equivalent to the smallest integer type which has enough room. + +

Warning: the -fshort-enums switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Use it to conform to a non-default application binary interface. + +

-fshort-double
Use the same size for double as for float. + +

Warning: the -fshort-double switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Use it to conform to a non-default application binary interface. + +

-fshort-wchar
Override the underlying type for wchar_t to be short +unsigned int instead of the default for the target. This option is +useful for building programs to run under WINE. + +

Warning: the -fshort-wchar switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Use it to conform to a non-default application binary interface. + +

-fno-common
In C, allocate even uninitialized global variables in the data section of the +object file, rather than generating them as common blocks. This has the +effect that if the same variable is declared (without extern) in +two different compilations, you will get an error when you link them. +The only reason this might be useful is if you wish to verify that the +program will work on other systems which always work this way. + +
-fno-ident
Ignore the #ident directive. + +
-finhibit-size-directive
Don't output a .size assembler directive, or anything else that +would cause trouble if the function is split in the middle, and the +two halves are placed at locations far apart in memory. This option is +used when compiling crtstuff.c; you should not need to use it +for anything else. + +
-fverbose-asm
Put extra commentary information in the generated assembly code to +make it more readable. This option is generally only of use to those +who actually need to read the generated assembly code (perhaps while +debugging the compiler itself). + +

-fno-verbose-asm, the default, causes the +extra information to be omitted and is useful when comparing two assembler +files. + +

-frecord-gcc-switches
This switch causes the command line that was used to invoke the +compiler to be recorded into the object file that is being created. +This switch is only implemented on some targets and the exact format +of the recording is target and binary file format dependent, but it +usually takes the form of a section containing ASCII text. This +switch is related to the -fverbose-asm switch, but that +switch only records information in the assembler output file as +comments, so it never reaches the object file. + +
-fpic
Generate position-independent code (PIC) suitable for use in a shared +library, if supported for the target machine. Such code accesses all +constant addresses through a global offset table (GOT). The dynamic +loader resolves the GOT entries when the program starts (the dynamic +loader is not part of GCC; it is part of the operating system). If +the GOT size for the linked executable exceeds a machine-specific +maximum size, you get an error message from the linker indicating that +-fpic does not work; in that case, recompile with -fPIC +instead. (These maximums are 8k on the SPARC and 32k +on the m68k and RS/6000. The 386 has no such limit.) + +

Position-independent code requires special support, and therefore works +only on certain machines. For the 386, GCC supports PIC for System V +but not for the Sun 386i. Code generated for the IBM RS/6000 is always +position-independent. + +

When this flag is set, the macros __pic__ and __PIC__ +are defined to 1. + +

-fPIC
If supported for the target machine, emit position-independent code, +suitable for dynamic linking and avoiding any limit on the size of the +global offset table. This option makes a difference on the m68k, +PowerPC and SPARC. + +

Position-independent code requires special support, and therefore works +only on certain machines. + +

When this flag is set, the macros __pic__ and __PIC__ +are defined to 2. + +

-fpie
-fPIE
These options are similar to -fpic and -fPIC, but +generated position independent code can be only linked into executables. +Usually these options are used when -pie GCC option will be +used during linking. + +

-fpie and -fPIE both define the macros +__pie__ and __PIE__. The macros have the value 1 +for -fpie and 2 for -fPIE. + +

-fno-jump-tables
Do not use jump tables for switch statements even where it would be +more efficient than other code generation strategies. This option is +of use in conjunction with -fpic or -fPIC for +building code which forms part of a dynamic linker and cannot +reference the address of a jump table. On some targets, jump tables +do not require a GOT and this option is not needed. + +
-ffixed-reg
Treat the register named reg as a fixed register; generated code +should never refer to it (except perhaps as a stack pointer, frame +pointer or in some other fixed role). + +

reg must be the name of a register. The register names accepted +are machine-specific and are defined in the REGISTER_NAMES +macro in the machine description macro file. + +

This flag does not have a negative form, because it specifies a +three-way choice. + +

-fcall-used-reg
Treat the register named reg as an allocable register that is +clobbered by function calls. It may be allocated for temporaries or +variables that do not live across a call. Functions compiled this way +will not save and restore the register reg. + +

It is an error to used this flag with the frame pointer or stack pointer. +Use of this flag for other registers that have fixed pervasive roles in +the machine's execution model will produce disastrous results. + +

This flag does not have a negative form, because it specifies a +three-way choice. + +

-fcall-saved-reg
Treat the register named reg as an allocable register saved by +functions. It may be allocated even for temporaries or variables that +live across a call. Functions compiled this way will save and restore +the register reg if they use it. + +

It is an error to used this flag with the frame pointer or stack pointer. +Use of this flag for other registers that have fixed pervasive roles in +the machine's execution model will produce disastrous results. + +

A different sort of disaster will result from the use of this flag for +a register in which function values may be returned. + +

This flag does not have a negative form, because it specifies a +three-way choice. + +

-fpack-struct[=n]
Without a value specified, pack all structure members together without +holes. When a value is specified (which must be a small power of two), pack +structure members according to this value, representing the maximum +alignment (that is, objects with default alignment requirements larger than +this will be output potentially unaligned at the next fitting location. + +

Warning: the -fpack-struct switch causes GCC to generate +code that is not binary compatible with code generated without that switch. +Additionally, it makes the code suboptimal. +Use it to conform to a non-default application binary interface. + +

-finstrument-functions
Generate instrumentation calls for entry and exit to functions. Just +after function entry and just before function exit, the following +profiling functions will be called with the address of the current +function and its call site. (On some platforms, +__builtin_return_address does not work beyond the current +function, so the call site information may not be available to the +profiling functions otherwise.) + +
          void __cyg_profile_func_enter (void *this_fn,
+                                         void *call_site);
+          void __cyg_profile_func_exit  (void *this_fn,
+                                         void *call_site);
+     
+

The first argument is the address of the start of the current function, +which may be looked up exactly in the symbol table. + +

This instrumentation is also done for functions expanded inline in other +functions. The profiling calls will indicate where, conceptually, the +inline function is entered and exited. This means that addressable +versions of such functions must be available. If all your uses of a +function are expanded inline, this may mean an additional expansion of +code size. If you use extern inline in your C code, an +addressable version of such functions must be provided. (This is +normally the case anyways, but if you get lucky and the optimizer always +expands the functions inline, you might have gotten away without +providing static copies.) + +

A function may be given the attribute no_instrument_function, in +which case this instrumentation will not be done. This can be used, for +example, for the profiling functions listed above, high-priority +interrupt routines, and any functions from which the profiling functions +cannot safely be called (perhaps signal handlers, if the profiling +routines generate output or allocate memory). + +

-finstrument-functions-exclude-file-list=file,file,...
+Set the list of functions that are excluded from instrumentation (see +the description of -finstrument-functions). If the file that +contains a function definition matches with one of file, then +that function is not instrumented. The match is done on substrings: +if the file parameter is a substring of the file name, it is +considered to be a match. + +

For example, +-finstrument-functions-exclude-file-list=/bits/stl,include/sys +will exclude any inline function defined in files whose pathnames +contain /bits/stl or include/sys. + +

If, for some reason, you want to include letter ',' in one of +sym, write '\,'. For example, +-finstrument-functions-exclude-file-list='\,\,tmp' +(note the single quote surrounding the option). + +

-finstrument-functions-exclude-function-list=sym,sym,...
+This is similar to -finstrument-functions-exclude-file-list, +but this option sets the list of function names to be excluded from +instrumentation. The function name to be matched is its user-visible +name, such as vector<int> blah(const vector<int> &), not the +internal mangled name (e.g., _Z4blahRSt6vectorIiSaIiEE). The +match is done on substrings: if the sym parameter is a substring +of the function name, it is considered to be a match. + +
-fstack-check
Generate code to verify that you do not go beyond the boundary of the +stack. You should specify this flag if you are running in an +environment with multiple threads, but only rarely need to specify it in +a single-threaded environment since stack overflow is automatically +detected on nearly all systems if there is only one stack. + +

Note that this switch does not actually cause checking to be done; the +operating system must do that. The switch causes generation of code +to ensure that the operating system sees the stack being extended. + +

-fstack-limit-register=reg
-fstack-limit-symbol=sym
-fno-stack-limit
Generate code to ensure that the stack does not grow beyond a certain value, +either the value of a register or the address of a symbol. If the stack +would grow beyond the value, a signal is raised. For most targets, +the signal is raised before the stack overruns the boundary, so +it is possible to catch the signal without taking special precautions. + +

For instance, if the stack starts at absolute address 0x80000000 +and grows downwards, you can use the flags +-fstack-limit-symbol=__stack_limit and +-Wl,--defsym,__stack_limit=0x7ffe0000 to enforce a stack limit +of 128KB. Note that this may only work with the GNU linker. + +


-fargument-alias
-fargument-noalias
-fargument-noalias-global
-fargument-noalias-anything
Specify the possible relationships among parameters and between +parameters and global data. + +

-fargument-alias specifies that arguments (parameters) may +alias each other and may alias global storage.
+-fargument-noalias specifies that arguments do not alias +each other, but may alias global storage.
+-fargument-noalias-global specifies that arguments do not +alias each other and do not alias global storage. +-fargument-noalias-anything specifies that arguments do not +alias any other storage. + +

Each language will automatically use whatever option is required by +the language standard. You should not need to use these options yourself. + +

-fleading-underscore
This option and its counterpart, -fno-leading-underscore, forcibly +change the way C symbols are represented in the object file. One use +is to help link with legacy assembly code. + +

Warning: the -fleading-underscore switch causes GCC to +generate code that is not binary compatible with code generated without that +switch. Use it to conform to a non-default application binary interface. +Not all targets provide complete support for this switch. + +

-ftls-model=model
Alter the thread-local storage model to be used (see Thread-Local). +The model argument should be one of global-dynamic, +local-dynamic, initial-exec or local-exec. + +

The default without -fpic is initial-exec; with +-fpic the default is global-dynamic. + +

-fvisibility=default|internal|hidden|protected
Set the default ELF image symbol visibility to the specified option—all +symbols will be marked with this unless overridden within the code. +Using this feature can very substantially improve linking and +load times of shared object libraries, produce more optimized +code, provide near-perfect API export and prevent symbol clashes. +It is strongly recommended that you use this in any shared objects +you distribute. + +

Despite the nomenclature, default always means public ie; +available to be linked against from outside the shared object. +protected and internal are pretty useless in real-world +usage so the only other commonly used option will be hidden. +The default if -fvisibility isn't specified is +default, i.e., make every +symbol public—this causes the same behavior as previous versions of +GCC. + +

A good explanation of the benefits offered by ensuring ELF +symbols have the correct visibility is given by “How To Write +Shared Libraries” by Ulrich Drepper (which can be found at +http://people.redhat.com/~drepper/)—however a superior +solution made possible by this option to marking things hidden when +the default is public is to make the default hidden and mark things +public. This is the norm with DLL's on Windows and with -fvisibility=hidden +and __attribute__ ((visibility("default"))) instead of +__declspec(dllexport) you get almost identical semantics with +identical syntax. This is a great boon to those working with +cross-platform projects. + +

For those adding visibility support to existing code, you may find +#pragma GCC visibility of use. This works by you enclosing +the declarations you wish to set visibility for with (for example) +#pragma GCC visibility push(hidden) and +#pragma GCC visibility pop. +Bear in mind that symbol visibility should be viewed as +part of the API interface contract and thus all new code should +always specify visibility when it is not the default ie; declarations +only for use within the local DSO should always be marked explicitly +as hidden as so to avoid PLT indirection overheads—making this +abundantly clear also aids readability and self-documentation of the code. +Note that due to ISO C++ specification requirements, operator new and +operator delete must always be of default visibility. + +

Be aware that headers from outside your project, in particular system +headers and headers from any other library you use, may not be +expecting to be compiled with visibility other than the default. You +may need to explicitly say #pragma GCC visibility push(default) +before including any such headers. + +

extern declarations are not affected by -fvisibility, so +a lot of code can be recompiled with -fvisibility=hidden with +no modifications. However, this means that calls to extern +functions with no explicit visibility will use the PLT, so it is more +effective to use __attribute ((visibility)) and/or +#pragma GCC visibility to tell the compiler which extern +declarations should be treated as hidden. + +

Note that -fvisibility does affect C++ vague linkage +entities. This means that, for instance, an exception class that will +be thrown between DSOs must be explicitly marked with default +visibility so that the type_info nodes will be unified between +the DSOs. + +

An overview of these techniques, their benefits and how to use them +is at http://gcc.gnu.org/wiki/Visibility. + +

+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Compatibility.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Compatibility.html new file mode 100644 index 0000000..f173ff7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Compatibility.html @@ -0,0 +1,189 @@ + + +Compatibility - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Objective-C, +Up: Top +



+
+ +

8 Binary Compatibility

+ +

+Binary compatibility encompasses several related concepts: + +

+
application binary interface (ABI)
The set of runtime conventions followed by all of the tools that deal +with binary representations of a program, including compilers, assemblers, +linkers, and language runtime support. +Some ABIs are formal with a written specification, possibly designed +by multiple interested parties. Others are simply the way things are +actually done by a particular set of tools. + +
ABI conformance
A compiler conforms to an ABI if it generates code that follows all of +the specifications enumerated by that ABI. +A library conforms to an ABI if it is implemented according to that ABI. +An application conforms to an ABI if it is built using tools that conform +to that ABI and does not contain source code that specifically changes +behavior specified by the ABI. + +
calling conventions
Calling conventions are a subset of an ABI that specify of how arguments +are passed and function results are returned. + +
interoperability
Different sets of tools are interoperable if they generate files that +can be used in the same program. The set of tools includes compilers, +assemblers, linkers, libraries, header files, startup files, and debuggers. +Binaries produced by different sets of tools are not interoperable unless +they implement the same ABI. This applies to different versions of the +same tools as well as tools from different vendors. + +
intercallability
Whether a function in a binary built by one set of tools can call a +function in a binary built by a different set of tools is a subset +of interoperability. + +
implementation-defined features
Language standards include lists of implementation-defined features whose +behavior can vary from one implementation to another. Some of these +features are normally covered by a platform's ABI and others are not. +The features that are not covered by an ABI generally affect how a +program behaves, but not intercallability. + +
compatibility
Conformance to the same ABI and the same behavior of implementation-defined +features are both relevant for compatibility. +
+ +

The application binary interface implemented by a C or C++ compiler +affects code generation and runtime support for: + +

    +
  • size and alignment of data types +
  • layout of structured types +
  • calling conventions +
  • register usage conventions +
  • interfaces for runtime arithmetic support +
  • object file formats +
+ +

In addition, the application binary interface implemented by a C++ compiler +affects code generation and runtime support for: +

    +
  • name mangling +
  • exception handling +
  • invoking constructors and destructors +
  • layout, alignment, and padding of classes +
  • layout and alignment of virtual tables +
+ +

Some GCC compilation options cause the compiler to generate code that +does not conform to the platform's default ABI. Other options cause +different program behavior for implementation-defined features that are +not covered by an ABI. These options are provided for consistency with +other compilers that do not follow the platform's default ABI or the +usual behavior of implementation-defined features for the platform. +Be very careful about using such options. + +

Most platforms have a well-defined ABI that covers C code, but ABIs +that cover C++ functionality are not yet common. + +

Starting with GCC 3.2, GCC binary conventions for C++ are based on a +written, vendor-neutral C++ ABI that was designed to be specific to +64-bit Itanium but also includes generic specifications that apply to +any platform. +This C++ ABI is also implemented by other compiler vendors on some +platforms, notably GNU/Linux and BSD systems. +We have tried hard to provide a stable ABI that will be compatible with +future GCC releases, but it is possible that we will encounter problems +that make this difficult. Such problems could include different +interpretations of the C++ ABI by different vendors, bugs in the ABI, or +bugs in the implementation of the ABI in different compilers. +GCC's -Wabi switch warns when G++ generates code that is +probably not compatible with the C++ ABI. + +

The C++ library used with a C++ compiler includes the Standard C++ +Library, with functionality defined in the C++ Standard, plus language +runtime support. The runtime support is included in a C++ ABI, but there +is no formal ABI for the Standard C++ Library. Two implementations +of that library are interoperable if one follows the de-facto ABI of the +other and if they are both built with the same compiler, or with compilers +that conform to the same ABI for C++ compiler and runtime support. + +

When G++ and another C++ compiler conform to the same C++ ABI, but the +implementations of the Standard C++ Library that they normally use do not +follow the same ABI for the Standard C++ Library, object files built with +those compilers can be used in the same program only if they use the same +C++ library. This requires specifying the location of the C++ library +header files when invoking the compiler whose usual library is not being +used. The location of GCC's C++ header files depends on how the GCC +build was configured, but can be seen by using the G++ -v option. +With default configuration options for G++ 3.3 the compile line for a +different C++ compiler needs to include + +

         -Igcc_install_directory/include/c++/3.3
+
+

Similarly, compiling code with G++ that must use a C++ library other +than the GNU C++ library requires specifying the location of the header +files for that other library. + +

The most straightforward way to link a program to use a particular +C++ library is to use a C++ driver that specifies that C++ library by +default. The g++ driver, for example, tells the linker where +to find GCC's C++ library (libstdc++) plus the other libraries +and startup files it needs, in the proper order. + +

If a program must use a different C++ library and it's not possible +to do the final link using a C++ driver that uses that library by default, +it is necessary to tell g++ the location and name of that +library. It might also be necessary to specify different startup files +and other runtime support libraries, and to suppress the use of GCC's +support libraries with one or more of the options -nostdlib, +-nostartfiles, and -nodefaultlibs. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Complex.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Complex.html new file mode 100644 index 0000000..35e15b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Complex.html @@ -0,0 +1,106 @@ + + +Complex - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Long Long, +Up: C Extensions +



+
+ +

5.9 Complex Numbers

+ +

+ISO C99 supports complex floating data types, and as an extension GCC +supports them in C89 mode and in C++, and supports complex integer data +types which are not part of ISO C99. You can declare complex types +using the keyword _Complex. As an extension, the older GNU +keyword __complex__ is also supported. + +

For example, _Complex double x; declares x as a +variable whose real part and imaginary part are both of type +double. _Complex short int y; declares y to +have real and imaginary parts of type short int; this is not +likely to be useful, but it shows that the set of complex types is +complete. + +

To write a constant with a complex data type, use the suffix i or +j (either one; they are equivalent). For example, 2.5fi +has type _Complex float and 3i has type +_Complex int. Such a constant always has a pure imaginary +value, but you can form any complex value you like by adding one to a +real constant. This is a GNU extension; if you have an ISO C99 +conforming C library (such as GNU libc), and want to construct complex +constants of floating type, you should include <complex.h> and +use the macros I or _Complex_I instead. + +

To extract the real part of a complex-valued expression exp, write +__real__ exp. Likewise, use __imag__ to +extract the imaginary part. This is a GNU extension; for values of +floating type, you should use the ISO C99 functions crealf, +creal, creall, cimagf, cimag and +cimagl, declared in <complex.h> and also provided as +built-in functions by GCC. + +

The operator ~ performs complex conjugation when used on a value +with a complex type. This is a GNU extension; for values of +floating type, you should use the ISO C99 functions conjf, +conj and conjl, declared in <complex.h> and also +provided as built-in functions by GCC. + +

GCC can allocate complex automatic variables in a noncontiguous +fashion; it's even possible for the real part to be in a register while +the imaginary part is on the stack (or vice-versa). Only the DWARF2 +debug info format can represent this, so use of DWARF2 is recommended. +If you are using the stabs debug info format, GCC describes a noncontiguous +complex variable as if it were two separate variables of noncomplex type. +If the variable's actual name is foo, the two fictitious +variables are named foo$real and foo$imag. You can +examine and set these two fictitious variables with your debugger. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Compound-Literals.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Compound-Literals.html new file mode 100644 index 0000000..91df96f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Compound-Literals.html @@ -0,0 +1,112 @@ + + +Compound Literals - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Initializers, +Up: C Extensions +



+
+ +

5.22 Compound Literals

+ +

+ +

ISO C99 supports compound literals. A compound literal looks like +a cast containing an initializer. Its value is an object of the +type specified in the cast, containing the elements specified in +the initializer; it is an lvalue. As an extension, GCC supports +compound literals in C89 mode and in C++. + +

Usually, the specified type is a structure. Assume that +struct foo and structure are declared as shown: + +

     struct foo {int a; char b[2];} structure;
+
+

Here is an example of constructing a struct foo with a compound literal: + +

     structure = ((struct foo) {x + y, 'a', 0});
+
+

This is equivalent to writing the following: + +

     {
+       struct foo temp = {x + y, 'a', 0};
+       structure = temp;
+     }
+
+

You can also construct an array. If all the elements of the compound literal +are (made up of) simple constant expressions, suitable for use in +initializers of objects of static storage duration, then the compound +literal can be coerced to a pointer to its first element and used in +such an initializer, as shown here: + +

     char **foo = (char *[]) { "x", "y", "z" };
+
+

Compound literals for scalar types and union types are is +also allowed, but then the compound literal is equivalent +to a cast. + +

As a GNU extension, GCC allows initialization of objects with static storage +duration by compound literals (which is not possible in ISO C99, because +the initializer is not a constant). +It is handled as if the object was initialized only with the bracket +enclosed list if the types of the compound literal and the object match. +The initializer list of the compound literal must be constant. +If the object being initialized has array type of unknown size, the size is +determined by compound literal size. + +

     static struct foo x = (struct foo) {1, 'a', 'b'};
+     static int y[] = (int []) {1, 2, 3};
+     static int z[] = (int [3]) {1};
+
+

The above lines are equivalent to the following: +

     static struct foo x = {1, 'a', 'b'};
+     static int y[] = {1, 2, 3};
+     static int z[] = {1, 0, 0};
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Conditionals.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Conditionals.html new file mode 100644 index 0000000..c6c216f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Conditionals.html @@ -0,0 +1,81 @@ + + +Conditionals - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Typeof, +Up: C Extensions +



+
+ +

5.7 Conditionals with Omitted Operands

+ +

+The middle operand in a conditional expression may be omitted. Then +if the first operand is nonzero, its value is the value of the conditional +expression. + +

Therefore, the expression + +

     x ? : y
+
+

has the value of x if that is nonzero; otherwise, the value of +y. + +

This example is perfectly equivalent to + +

     x ? x : y
+
+

In this simple case, the ability to omit the middle operand is not +especially useful. When it becomes useful is when the first operand does, +or may (if it is a macro argument), contain a side effect. Then repeating +the operand in the middle would perform the side effect twice. Omitting +the middle operand uses the value already computed without the undesirable +effects of recomputing it. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constant-string-objects.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constant-string-objects.html new file mode 100644 index 0000000..2846623 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constant-string-objects.html @@ -0,0 +1,112 @@ + + +Constant string objects - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Garbage Collection, +Up: Objective-C +



+
+ +

7.4 Constant string objects

+ +

GNU Objective-C provides constant string objects that are generated +directly by the compiler. You declare a constant string object by +prefixing a C constant string with the character @: + +

       id myString = @"this is a constant string object";
+
+

The constant string objects are by default instances of the +NXConstantString class which is provided by the GNU Objective-C +runtime. To get the definition of this class you must include the +objc/NXConstStr.h header file. + +

User defined libraries may want to implement their own constant string +class. To be able to support them, the GNU Objective-C compiler provides +a new command line options -fconstant-string-class=class-name. +The provided class should adhere to a strict structure, the same +as NXConstantString's structure: + +

     
+     @interface MyConstantStringClass
+     {
+       Class isa;
+       char *c_string;
+       unsigned int len;
+     }
+     @end
+     
+
+

NXConstantString inherits from Object; user class +libraries may choose to inherit the customized constant string class +from a different class than Object. There is no requirement in +the methods the constant string class has to implement, but the final +ivar layout of the class must be the compatible with the given +structure. + +

When the compiler creates the statically allocated constant string +object, the c_string field will be filled by the compiler with +the string; the length field will be filled by the compiler with +the string length; the isa pointer will be filled with +NULL by the compiler, and it will later be fixed up automatically +at runtime by the GNU Objective-C runtime library to point to the class +which was set by the -fconstant-string-class option when the +object file is loaded (if you wonder how it works behind the scenes, the +name of the class to use, and the list of static objects to fixup, are +stored by the compiler in the object file in a place where the GNU +runtime library will find them at runtime). + +

As a result, when a file is compiled with the +-fconstant-string-class option, all the constant string objects +will be instances of the class specified as argument to this option. It +is possible to have multiple compilation units referring to different +constant string classes, neither the compiler nor the linker impose any +restrictions in doing this. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constraints.html new file mode 100644 index 0000000..ece9288 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constraints.html @@ -0,0 +1,74 @@ + + +Constraints - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Extended Asm, +Up: C Extensions +



+
+ +

5.38 Constraints for asm Operands

+ +

+Here are specific details on what constraint letters you can use with +asm operands. +Constraints can say whether +an operand may be in a register, and which kinds of register; whether the +operand can be a memory reference, and which kinds of address; whether the +operand may be an immediate constant, and which possible values it may +have. Constraints can also require two operands to match. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constructing-Calls.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constructing-Calls.html new file mode 100644 index 0000000..b6491f7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Constructing-Calls.html @@ -0,0 +1,174 @@ + + +Constructing Calls - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Nested Functions, +Up: C Extensions +



+
+ +

5.5 Constructing Function Calls

+ +

+Using the built-in functions described below, you can record +the arguments a function received, and call another function +with the same arguments, without knowing the number or types +of the arguments. + +

You can also record the return value of that function call, +and later return that value, without knowing what data type +the function tried to return (as long as your caller expects +that data type). + +

However, these built-in functions may interact badly with some +sophisticated features or other extensions of the language. It +is, therefore, not recommended to use them outside very simple +functions acting as mere forwarders for their arguments. + +

+— Built-in Function: void * __builtin_apply_args ()
+

This built-in function returns a pointer to data +describing how to perform a call with the same arguments as were passed +to the current function. + +

The function saves the arg pointer register, structure value address, +and all registers that might be used to pass arguments to a function +into a block of memory allocated on the stack. Then it returns the +address of that block. +

+ +
+— Built-in Function: void * __builtin_apply (void (*function)(), void *arguments, size_t size)
+

This built-in function invokes function +with a copy of the parameters described by arguments +and size. + +

The value of arguments should be the value returned by +__builtin_apply_args. The argument size specifies the size +of the stack argument data, in bytes. + +

This function returns a pointer to data describing +how to return whatever value was returned by function. The data +is saved in a block of memory allocated on the stack. + +

It is not always simple to compute the proper value for size. The +value is used by __builtin_apply to compute the amount of data +that should be pushed on the stack and copied from the incoming argument +area. +

+ +
+— Built-in Function: void __builtin_return (void *result)
+

This built-in function returns the value described by result from +the containing function. You should specify, for result, a value +returned by __builtin_apply. +

+ +
+— Built-in Function: __builtin_va_arg_pack ()
+

This built-in function represents all anonymous arguments of an inline +function. It can be used only in inline functions which will be always +inlined, never compiled as a separate function, such as those using +__attribute__ ((__always_inline__)) or +__attribute__ ((__gnu_inline__)) extern inline functions. +It must be only passed as last argument to some other function +with variable arguments. This is useful for writing small wrapper +inlines for variable argument functions, when using preprocessor +macros is undesirable. For example: +

          extern int myprintf (FILE *f, const char *format, ...);
+          extern inline __attribute__ ((__gnu_inline__)) int
+          myprintf (FILE *f, const char *format, ...)
+          {
+            int r = fprintf (f, "myprintf: ");
+            if (r < 0)
+              return r;
+            int s = fprintf (f, format, __builtin_va_arg_pack ());
+            if (s < 0)
+              return s;
+            return r + s;
+          }
+     
+
+ +
+— Built-in Function: __builtin_va_arg_pack_len ()
+

This built-in function returns the number of anonymous arguments of +an inline function. It can be used only in inline functions which +will be always inlined, never compiled as a separate function, such +as those using __attribute__ ((__always_inline__)) or +__attribute__ ((__gnu_inline__)) extern inline functions. +For example following will do link or runtime checking of open +arguments for optimized code: +

          #ifdef __OPTIMIZE__
+          extern inline __attribute__((__gnu_inline__)) int
+          myopen (const char *path, int oflag, ...)
+          {
+            if (__builtin_va_arg_pack_len () > 1)
+              warn_open_too_many_arguments ();
+          
+            if (__builtin_constant_p (oflag))
+              {
+                if ((oflag & O_CREAT) != 0 && __builtin_va_arg_pack_len () < 1)
+                  {
+                    warn_open_missing_mode ();
+                    return __open_2 (path, oflag);
+                  }
+                return open (path, oflag, __builtin_va_arg_pack ());
+              }
+          
+            if (__builtin_va_arg_pack_len () < 1)
+              return __open_2 (path, oflag);
+          
+            return open (path, oflag, __builtin_va_arg_pack ());
+          }
+          #endif
+     
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Contributing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Contributing.html new file mode 100644 index 0000000..730fde2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Contributing.html @@ -0,0 +1,72 @@ + + +Contributing - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Service, +Up: Top +



+
+ +

13 Contributing to GCC Development

+ +

If you would like to help pretest GCC releases to assure they work well, +current development sources are available by SVN (see +http://gcc.gnu.org/svn.html). Source and binary snapshots are +also available for FTP; see http://gcc.gnu.org/snapshots.html. + +

If you would like to work on improvements to GCC, please read the +advice at these URLs: + +

     http://gcc.gnu.org/contribute.html
+     http://gcc.gnu.org/contributewhy.html
+
+

for information on how to make useful contributions and avoid +duplication of effort. Suggested projects are listed at +http://gcc.gnu.org/projects/. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Contributors.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Contributors.html new file mode 100644 index 0000000..97271e2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Contributors.html @@ -0,0 +1,1210 @@ + + +Contributors - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Previous: GNU Free Documentation License, +Up: Top +



+
+ +

Contributors to GCC

+ +

+The GCC project would like to thank its many contributors. Without them the +project would not have been nearly as successful as it has been. Any omissions +in this list are accidental. Feel free to contact +law@redhat.com or gerald@pfeifer.com if you have been left +out or some of your contributions are not listed. Please keep this list in +alphabetical order. + +

    +
  • Analog Devices helped implement the support for complex data types +and iterators. + +
  • John David Anglin for threading-related fixes and improvements to +libstdc++-v3, and the HP-UX port. + +
  • James van Artsdalen wrote the code that makes efficient use of +the Intel 80387 register stack. + +
  • Abramo and Roberto Bagnara for the SysV68 Motorola 3300 Delta Series +port. + +
  • Alasdair Baird for various bug fixes. + +
  • Giovanni Bajo for analyzing lots of complicated C++ problem reports. + +
  • Peter Barada for his work to improve code generation for new +ColdFire cores. + +
  • Gerald Baumgartner added the signature extension to the C++ front end. + +
  • Godmar Back for his Java improvements and encouragement. + +
  • Scott Bambrough for help porting the Java compiler. + +
  • Wolfgang Bangerth for processing tons of bug reports. + +
  • Jon Beniston for his Microsoft Windows port of Java. + +
  • Daniel Berlin for better DWARF2 support, faster/better optimizations, +improved alias analysis, plus migrating GCC to Bugzilla. + +
  • Geoff Berry for his Java object serialization work and various patches. + +
  • Uros Bizjak for the implementation of x87 math built-in functions and +for various middle end and i386 back end improvements and bug fixes. + +
  • Eric Blake for helping to make GCJ and libgcj conform to the +specifications. + +
  • Janne Blomqvist for contributions to GNU Fortran. + +
  • Segher Boessenkool for various fixes. + +
  • Hans-J. Boehm for his garbage collector, IA-64 libffi port, and other Java work. + +
  • Neil Booth for work on cpplib, lang hooks, debug hooks and other +miscellaneous clean-ups. + +
  • Steven Bosscher for integrating the GNU Fortran front end into GCC and for +contributing to the tree-ssa branch. + +
  • Eric Botcazou for fixing middle- and backend bugs left and right. + +
  • Per Bothner for his direction via the steering committee and various +improvements to the infrastructure for supporting new languages. Chill +front end implementation. Initial implementations of +cpplib, fix-header, config.guess, libio, and past C++ library (libg++) +maintainer. Dreaming up, designing and implementing much of GCJ. + +
  • Devon Bowen helped port GCC to the Tahoe. + +
  • Don Bowman for mips-vxworks contributions. + +
  • Dave Brolley for work on cpplib and Chill. + +
  • Paul Brook for work on the ARM architecture and maintaining GNU Fortran. + +
  • Robert Brown implemented the support for Encore 32000 systems. + +
  • Christian Bruel for improvements to local store elimination. + +
  • Herman A.J. ten Brugge for various fixes. + +
  • Joerg Brunsmann for Java compiler hacking and help with the GCJ FAQ. + +
  • Joe Buck for his direction via the steering committee. + +
  • Craig Burley for leadership of the G77 Fortran effort. + +
  • Stephan Buys for contributing Doxygen notes for libstdc++. + +
  • Paolo Carlini for libstdc++ work: lots of efficiency improvements to +the C++ strings, streambufs and formatted I/O, hard detective work on +the frustrating localization issues, and keeping up with the problem reports. + +
  • John Carr for his alias work, SPARC hacking, infrastructure improvements, +previous contributions to the steering committee, loop optimizations, etc. + +
  • Stephane Carrez for 68HC11 and 68HC12 ports. + +
  • Steve Chamberlain for support for the Renesas SH and H8 processors +and the PicoJava processor, and for GCJ config fixes. + +
  • Glenn Chambers for help with the GCJ FAQ. + +
  • John-Marc Chandonia for various libgcj patches. + +
  • Scott Christley for his Objective-C contributions. + +
  • Eric Christopher for his Java porting help and clean-ups. + +
  • Branko Cibej for more warning contributions. + +
  • The GNU Classpath project +for all of their merged runtime code. + +
  • Nick Clifton for arm, mcore, fr30, v850, m32r work, --help, and +other random hacking. + +
  • Michael Cook for libstdc++ cleanup patches to reduce warnings. + +
  • R. Kelley Cook for making GCC buildable from a read-only directory as +well as other miscellaneous build process and documentation clean-ups. + +
  • Ralf Corsepius for SH testing and minor bug fixing. + +
  • Stan Cox for care and feeding of the x86 port and lots of behind +the scenes hacking. + +
  • Alex Crain provided changes for the 3b1. + +
  • Ian Dall for major improvements to the NS32k port. + +
  • Paul Dale for his work to add uClinux platform support to the +m68k backend. + +
  • Dario Dariol contributed the four varieties of sample programs +that print a copy of their source. + +
  • Russell Davidson for fstream and stringstream fixes in libstdc++. + +
  • Bud Davis for work on the G77 and GNU Fortran compilers. + +
  • Mo DeJong for GCJ and libgcj bug fixes. + +
  • DJ Delorie for the DJGPP port, build and libiberty maintenance, +various bug fixes, and the M32C port. + +
  • Arnaud Desitter for helping to debug GNU Fortran. + +
  • Gabriel Dos Reis for contributions to G++, contributions and +maintenance of GCC diagnostics infrastructure, libstdc++-v3, +including valarray<>, complex<>, maintaining the numerics library +(including that pesky <limits> :-) and keeping up-to-date anything +to do with numbers. + +
  • Ulrich Drepper for his work on glibc, testing of GCC using glibc, ISO C99 +support, CFG dumping support, etc., plus support of the C++ runtime +libraries including for all kinds of C interface issues, contributing and +maintaining complex<>, sanity checking and disbursement, configuration +architecture, libio maintenance, and early math work. + +
  • Zdenek Dvorak for a new loop unroller and various fixes. + +
  • Richard Earnshaw for his ongoing work with the ARM. + +
  • David Edelsohn for his direction via the steering committee, ongoing work +with the RS6000/PowerPC port, help cleaning up Haifa loop changes, +doing the entire AIX port of libstdc++ with his bare hands, and for +ensuring GCC properly keeps working on AIX. + +
  • Kevin Ediger for the floating point formatting of num_put::do_put in +libstdc++. + +
  • Phil Edwards for libstdc++ work including configuration hackery, +documentation maintainer, chief breaker of the web pages, the occasional +iostream bug fix, and work on shared library symbol versioning. + +
  • Paul Eggert for random hacking all over GCC. + +
  • Mark Elbrecht for various DJGPP improvements, and for libstdc++ +configuration support for locales and fstream-related fixes. + +
  • Vadim Egorov for libstdc++ fixes in strings, streambufs, and iostreams. + +
  • Christian Ehrhardt for dealing with bug reports. + +
  • Ben Elliston for his work to move the Objective-C runtime into its +own subdirectory and for his work on autoconf. + +
  • Revital Eres for work on the PowerPC 750CL port. + +
  • Marc Espie for OpenBSD support. + +
  • Doug Evans for much of the global optimization framework, arc, m32r, +and SPARC work. + +
  • Christopher Faylor for his work on the Cygwin port and for caring and +feeding the gcc.gnu.org box and saving its users tons of spam. + +
  • Fred Fish for BeOS support and Ada fixes. + +
  • Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ. + +
  • Peter Gerwinski for various bug fixes and the Pascal front end. + +
  • Kaveh R. Ghazi for his direction via the steering committee, amazing +work to make -W -Wall -W* -Werror useful, and continuously +testing GCC on a plethora of platforms. Kaveh extends his gratitude to +the CAIP Center at Rutgers +University for providing him with computing resources to work on Free +Software since the late 1980s. + +
  • John Gilmore for a donation to the FSF earmarked improving GNU Java. + +
  • Judy Goldberg for c++ contributions. + +
  • Torbjorn Granlund for various fixes and the c-torture testsuite, +multiply- and divide-by-constant optimization, improved long long +support, improved leaf function register allocation, and his direction +via the steering committee. + +
  • Anthony Green for his -Os contributions and Java front end work. + +
  • Stu Grossman for gdb hacking, allowing GCJ developers to debug Java code. + +
  • Michael K. Gschwind contributed the port to the PDP-11. + +
  • Ron Guilmette implemented the protoize and unprotoize +tools, the support for Dwarf symbolic debugging information, and much of +the support for System V Release 4. He has also worked heavily on the +Intel 386 and 860 support. + +
  • Mostafa Hagog for Swing Modulo Scheduling (SMS) and post reload GCSE. + +
  • Bruno Haible for improvements in the runtime overhead for EH, new +warnings and assorted bug fixes. + +
  • Andrew Haley for his amazing Java compiler and library efforts. + +
  • Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. + +
  • Michael Hayes for various thankless work he's done trying to get +the c30/c40 ports functional. Lots of loop and unroll improvements and +fixes. + +
  • Dara Hazeghi for wading through myriads of target-specific bug reports. + +
  • Kate Hedstrom for staking the G77 folks with an initial testsuite. + +
  • Richard Henderson for his ongoing SPARC, alpha, ia32, and ia64 work, loop +opts, and generally fixing lots of old problems we've ignored for +years, flow rewrite and lots of further stuff, including reviewing +tons of patches. + +
  • Aldy Hernandez for working on the PowerPC port, SIMD support, and +various fixes. + +
  • Nobuyuki Hikichi of Software Research Associates, Tokyo, contributed +the support for the Sony NEWS machine. + +
  • Kazu Hirata for caring and feeding the Renesas H8/300 port and various fixes. + +
  • Katherine Holcomb for work on GNU Fortran. + +
  • Manfred Hollstein for his ongoing work to keep the m88k alive, lots +of testing and bug fixing, particularly of GCC configury code. + +
  • Steve Holmgren for MachTen patches. + +
  • Jan Hubicka for his x86 port improvements. + +
  • Falk Hueffner for working on C and optimization bug reports. + +
  • Bernardo Innocenti for his m68k work, including merging of +ColdFire improvements and uClinux support. + +
  • Christian Iseli for various bug fixes. + +
  • Kamil Iskra for general m68k hacking. + +
  • Lee Iverson for random fixes and MIPS testing. + +
  • Andreas Jaeger for testing and benchmarking of GCC and various bug fixes. + +
  • Jakub Jelinek for his SPARC work and sibling call optimizations as well +as lots of bug fixes and test cases, and for improving the Java build +system. + +
  • Janis Johnson for ia64 testing and fixes, her quality improvement +sidetracks, and web page maintenance. + +
  • Kean Johnston for SCO OpenServer support and various fixes. + +
  • Tim Josling for the sample language treelang based originally on Richard +Kenner's “toy” language. + +
  • Nicolai Josuttis for additional libstdc++ documentation. + +
  • Klaus Kaempf for his ongoing work to make alpha-vms a viable target. + +
  • Steven G. Kargl for work on GNU Fortran. + +
  • David Kashtan of SRI adapted GCC to VMS. + +
  • Ryszard Kabatek for many, many libstdc++ bug fixes and optimizations of +strings, especially member functions, and for auto_ptr fixes. + +
  • Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux +and his automatic regression tester. + +
  • Brendan Kehoe for his ongoing work with G++ and for a lot of early work +in just about every part of libstdc++. + +
  • Oliver M. Kellogg of Deutsche Aerospace contributed the port to the +MIL-STD-1750A. + +
  • Richard Kenner of the New York University Ultracomputer Research +Laboratory wrote the machine descriptions for the AMD 29000, the DEC +Alpha, the IBM RT PC, and the IBM RS/6000 as well as the support for +instruction attributes. He also made changes to better support RISC +processors including changes to common subexpression elimination, +strength reduction, function calling sequence handling, and condition +code support, in addition to generalizing the code for frame pointer +elimination and delay slot scheduling. Richard Kenner was also the +head maintainer of GCC for several years. + +
  • Mumit Khan for various contributions to the Cygwin and Mingw32 ports and +maintaining binary releases for Microsoft Windows hosts, and for massive libstdc++ +porting work to Cygwin/Mingw32. + +
  • Robin Kirkham for cpu32 support. + +
  • Mark Klein for PA improvements. + +
  • Thomas Koenig for various bug fixes. + +
  • Bruce Korb for the new and improved fixincludes code. + +
  • Benjamin Kosnik for his G++ work and for leading the libstdc++-v3 effort. + +
  • Charles LaBrec contributed the support for the Integrated Solutions +68020 system. + +
  • Asher Langton and Mike Kumbera for contributing Cray pointer support +to GNU Fortran, and for other GNU Fortran improvements. + +
  • Jeff Law for his direction via the steering committee, coordinating the +entire egcs project and GCC 2.95, rolling out snapshots and releases, +handling merges from GCC2, reviewing tons of patches that might have +fallen through the cracks else, and random but extensive hacking. + +
  • Marc Lehmann for his direction via the steering committee and helping +with analysis and improvements of x86 performance. + +
  • Victor Leikehman for work on GNU Fortran. + +
  • Ted Lemon wrote parts of the RTL reader and printer. + +
  • Kriang Lerdsuwanakij for C++ improvements including template as template +parameter support, and many C++ fixes. + +
  • Warren Levy for tremendous work on libgcj (Java Runtime Library) and +random work on the Java front end. + +
  • Alain Lichnewsky ported GCC to the MIPS CPU. + +
  • Oskar Liljeblad for hacking on AWT and his many Java bug reports and +patches. + +
  • Robert Lipe for OpenServer support, new testsuites, testing, etc. + +
  • Chen Liqin for various S+core related fixes/improvement, and for +maintaining the S+core port. + +
  • Weiwen Liu for testing and various bug fixes. + +
  • Manuel López-Ibáñez for improving -Wconversion and +many other diagnostics fixes and improvements. + +
  • Dave Love for his ongoing work with the Fortran front end and +runtime libraries. + +
  • Martin von Löwis for internal consistency checking infrastructure, +various C++ improvements including namespace support, and tons of +assistance with libstdc++/compiler merges. + +
  • H.J. Lu for his previous contributions to the steering committee, many x86 +bug reports, prototype patches, and keeping the GNU/Linux ports working. + +
  • Greg McGary for random fixes and (someday) bounded pointers. + +
  • Andrew MacLeod for his ongoing work in building a real EH system, +various code generation improvements, work on the global optimizer, etc. + +
  • Vladimir Makarov for hacking some ugly i960 problems, PowerPC hacking +improvements to compile-time performance, overall knowledge and +direction in the area of instruction scheduling, and design and +implementation of the automaton based instruction scheduler. + +
  • Bob Manson for his behind the scenes work on dejagnu. + +
  • Philip Martin for lots of libstdc++ string and vector iterator fixes and +improvements, and string clean up and testsuites. + +
  • All of the Mauve project +contributors, +for Java test code. + +
  • Bryce McKinlay for numerous GCJ and libgcj fixes and improvements. + +
  • Adam Megacz for his work on the Microsoft Windows port of GCJ. + +
  • Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, +powerpc, haifa, ECOFF debug support, and other assorted hacking. + +
  • Jason Merrill for his direction via the steering committee and leading +the G++ effort. + +
  • Martin Michlmayr for testing GCC on several architectures using the +entire Debian archive. + +
  • David Miller for his direction via the steering committee, lots of +SPARC work, improvements in jump.c and interfacing with the Linux kernel +developers. + +
  • Gary Miller ported GCC to Charles River Data Systems machines. + +
  • Alfred Minarik for libstdc++ string and ios bug fixes, and turning the +entire libstdc++ testsuite namespace-compatible. + +
  • Mark Mitchell for his direction via the steering committee, mountains of +C++ work, load/store hoisting out of loops, alias analysis improvements, +ISO C restrict support, and serving as release manager for GCC 3.x. + +
  • Alan Modra for various GNU/Linux bits and testing. + +
  • Toon Moene for his direction via the steering committee, Fortran +maintenance, and his ongoing work to make us make Fortran run fast. + +
  • Jason Molenda for major help in the care and feeding of all the services +on the gcc.gnu.org (formerly egcs.cygnus.com) machine—mail, web +services, ftp services, etc etc. Doing all this work on scrap paper and +the backs of envelopes would have been... difficult. + +
  • Catherine Moore for fixing various ugly problems we have sent her +way, including the haifa bug which was killing the Alpha & PowerPC +Linux kernels. + +
  • Mike Moreton for his various Java patches. + +
  • David Mosberger-Tang for various Alpha improvements, and for the initial +IA-64 port. + +
  • Stephen Moshier contributed the floating point emulator that assists in +cross-compilation and permits support for floating point numbers wider +than 64 bits and for ISO C99 support. + +
  • Bill Moyer for his behind the scenes work on various issues. + +
  • Philippe De Muyter for his work on the m68k port. + +
  • Joseph S. Myers for his work on the PDP-11 port, format checking and ISO +C99 support, and continuous emphasis on (and contributions to) documentation. + +
  • Nathan Myers for his work on libstdc++-v3: architecture and authorship +through the first three snapshots, including implementation of locale +infrastructure, string, shadow C headers, and the initial project +documentation (DESIGN, CHECKLIST, and so forth). Later, more work on +MT-safe string and shadow headers. + +
  • Felix Natter for documentation on porting libstdc++. + +
  • Nathanael Nerode for cleaning up the configuration/build process. + +
  • NeXT, Inc. donated the front end that supports the Objective-C +language. + +
  • Hans-Peter Nilsson for the CRIS and MMIX ports, improvements to the search +engine setup, various documentation fixes and other small fixes. + +
  • Geoff Noer for his work on getting cygwin native builds working. + +
  • Diego Novillo for his work on Tree SSA, OpenMP, SPEC performance +tracking web pages and assorted fixes. + +
  • David O'Brien for the FreeBSD/alpha, FreeBSD/AMD x86-64, FreeBSD/ARM, +FreeBSD/PowerPC, and FreeBSD/SPARC64 ports and related infrastructure +improvements. + +
  • Alexandre Oliva for various build infrastructure improvements, scripts and +amazing testing work, including keeping libtool issues sane and happy. + +
  • Stefan Olsson for work on mt_alloc. + +
  • Melissa O'Neill for various NeXT fixes. + +
  • Rainer Orth for random MIPS work, including improvements to GCC's o32 +ABI support, improvements to dejagnu's MIPS support, Java configuration +clean-ups and porting work, etc. + +
  • Hartmut Penner for work on the s390 port. + +
  • Paul Petersen wrote the machine description for the Alliant FX/8. + +
  • Alexandre Petit-Bianco for implementing much of the Java compiler and +continued Java maintainership. + +
  • Matthias Pfaller for major improvements to the NS32k port. + +
  • Gerald Pfeifer for his direction via the steering committee, pointing +out lots of problems we need to solve, maintenance of the web pages, and +taking care of documentation maintenance in general. + +
  • Andrew Pinski for processing bug reports by the dozen. + +
  • Ovidiu Predescu for his work on the Objective-C front end and runtime +libraries. + +
  • Jerry Quinn for major performance improvements in C++ formatted I/O. + +
  • Ken Raeburn for various improvements to checker, MIPS ports and various +cleanups in the compiler. + +
  • Rolf W. Rasmussen for hacking on AWT. + +
  • David Reese of Sun Microsystems contributed to the Solaris on PowerPC +port. + +
  • Volker Reichelt for keeping up with the problem reports. + +
  • Joern Rennecke for maintaining the sh port, loop, regmove & reload +hacking. + +
  • Loren J. Rittle for improvements to libstdc++-v3 including the FreeBSD +port, threading fixes, thread-related configury changes, critical +threading documentation, and solutions to really tricky I/O problems, +as well as keeping GCC properly working on FreeBSD and continuous testing. + +
  • Craig Rodrigues for processing tons of bug reports. + +
  • Ola Rönnerup for work on mt_alloc. + +
  • Gavin Romig-Koch for lots of behind the scenes MIPS work. + +
  • David Ronis inspired and encouraged Craig to rewrite the G77 +documentation in texinfo format by contributing a first pass at a +translation of the old g77-0.5.16/f/DOC file. + +
  • Ken Rose for fixes to GCC's delay slot filling code. + +
  • Paul Rubin wrote most of the preprocessor. + +
  • Pétur Runólfsson for major performance improvements in C++ formatted I/O and +large file support in C++ filebuf. + +
  • Chip Salzenberg for libstdc++ patches and improvements to locales, traits, +Makefiles, libio, libtool hackery, and “long long” support. + +
  • Juha Sarlin for improvements to the H8 code generator. + +
  • Greg Satz assisted in making GCC work on HP-UX for the 9000 series 300. + +
  • Roger Sayle for improvements to constant folding and GCC's RTL optimizers +as well as for fixing numerous bugs. + +
  • Bradley Schatz for his work on the GCJ FAQ. + +
  • Peter Schauer wrote the code to allow debugging to work on the Alpha. + +
  • William Schelter did most of the work on the Intel 80386 support. + +
  • Tobias Schlüter for work on GNU Fortran. + +
  • Bernd Schmidt for various code generation improvements and major +work in the reload pass as well a serving as release manager for +GCC 2.95.3. + +
  • Peter Schmid for constant testing of libstdc++—especially application +testing, going above and beyond what was requested for the release +criteria—and libstdc++ header file tweaks. + +
  • Jason Schroeder for jcf-dump patches. + +
  • Andreas Schwab for his work on the m68k port. + +
  • Lars Segerlund for work on GNU Fortran. + +
  • Joel Sherrill for his direction via the steering committee, RTEMS +contributions and RTEMS testing. + +
  • Nathan Sidwell for many C++ fixes/improvements. + +
  • Jeffrey Siegal for helping RMS with the original design of GCC, some +code which handles the parse tree and RTL data structures, constant +folding and help with the original VAX & m68k ports. + +
  • Kenny Simpson for prompting libstdc++ fixes due to defect reports from +the LWG (thereby keeping GCC in line with updates from the ISO). + +
  • Franz Sirl for his ongoing work with making the PPC port stable +for GNU/Linux. + +
  • Andrey Slepuhin for assorted AIX hacking. + +
  • Trevor Smigiel for contributing the SPU port. + +
  • Christopher Smith did the port for Convex machines. + +
  • Danny Smith for his major efforts on the Mingw (and Cygwin) ports. + +
  • Randy Smith finished the Sun FPA support. + +
  • Scott Snyder for queue, iterator, istream, and string fixes and libstdc++ +testsuite entries. Also for providing the patch to G77 to add +rudimentary support for INTEGER*1, INTEGER*2, and +LOGICAL*1. + +
  • Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique. + +
  • Richard Stallman, for writing the original GCC and launching the GNU project. + +
  • Jan Stein of the Chalmers Computer Society provided support for +Genix, as well as part of the 32000 machine description. + +
  • Nigel Stephens for various mips16 related fixes/improvements. + +
  • Jonathan Stone wrote the machine description for the Pyramid computer. + +
  • Graham Stott for various infrastructure improvements. + +
  • John Stracke for his Java HTTP protocol fixes. + +
  • Mike Stump for his Elxsi port, G++ contributions over the years and more +recently his vxworks contributions + +
  • Jeff Sturm for Java porting help, bug fixes, and encouragement. + +
  • Shigeya Suzuki for this fixes for the bsdi platforms. + +
  • Ian Lance Taylor for his mips16 work, general configury hacking, +fixincludes, etc. + +
  • Holger Teutsch provided the support for the Clipper CPU. + +
  • Gary Thomas for his ongoing work to make the PPC work for GNU/Linux. + +
  • Philipp Thomas for random bug fixes throughout the compiler + +
  • Jason Thorpe for thread support in libstdc++ on NetBSD. + +
  • Kresten Krab Thorup wrote the run time support for the Objective-C +language and the fantastic Java bytecode interpreter. + +
  • Michael Tiemann for random bug fixes, the first instruction scheduler, +initial C++ support, function integration, NS32k, SPARC and M88k +machine description work, delay slot scheduling. + +
  • Andreas Tobler for his work porting libgcj to Darwin. + +
  • Teemu Torma for thread safe exception handling support. + +
  • Leonard Tower wrote parts of the parser, RTL generator, and RTL +definitions, and of the VAX machine description. + +
  • Tom Tromey for internationalization support and for his many Java +contributions and libgcj maintainership. + +
  • Lassi Tuura for improvements to config.guess to determine HP processor +types. + +
  • Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes. + +
  • Andy Vaught for the design and initial implementation of the GNU Fortran +front end. + +
  • Brent Verner for work with the libstdc++ cshadow files and their +associated configure steps. + +
  • Todd Vierling for contributions for NetBSD ports. + +
  • Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML +guidance. + +
  • Dean Wakerley for converting the install documentation from HTML to texinfo +in time for GCC 3.0. + +
  • Krister Walfridsson for random bug fixes. + +
  • Feng Wang for contributions to GNU Fortran. + +
  • Stephen M. Webb for time and effort on making libstdc++ shadow files +work with the tricky Solaris 8+ headers, and for pushing the build-time +header tree. + +
  • John Wehle for various improvements for the x86 code generator, +related infrastructure improvements to help x86 code generation, +value range propagation and other work, WE32k port. + +
  • Ulrich Weigand for work on the s390 port. + +
  • Zack Weinberg for major work on cpplib and various other bug fixes. + +
  • Matt Welsh for help with Linux Threads support in GCJ. + +
  • Urban Widmark for help fixing java.io. + +
  • Mark Wielaard for new Java library code and his work integrating with +Classpath. + +
  • Dale Wiles helped port GCC to the Tahoe. + +
  • Bob Wilson from Tensilica, Inc. for the Xtensa port. + +
  • Jim Wilson for his direction via the steering committee, tackling hard +problems in various places that nobody else wanted to work on, strength +reduction and other loop optimizations. + +
  • Paul Woegerer and Tal Agmon for the CRX port. + +
  • Carlo Wood for various fixes. + +
  • Tom Wood for work on the m88k port. + +
  • Canqun Yang for work on GNU Fortran. + +
  • Masanobu Yuhara of Fujitsu Laboratories implemented the machine +description for the Tron architecture (specifically, the Gmicro). + +
  • Kevin Zachmann helped port GCC to the Tahoe. + +
  • Ayal Zaks for Swing Modulo Scheduling (SMS). + +
  • Xiaoqiang Zhang for work on GNU Fortran. + +
  • Gilles Zunino for help porting Java to Irix. + +
+ +

The following people are recognized for their contributions to GNAT, +the Ada front end of GCC: +

    +
  • Bernard Banner + +
  • Romain Berrendonner + +
  • Geert Bosch + +
  • Emmanuel Briot + +
  • Joel Brobecker + +
  • Ben Brosgol + +
  • Vincent Celier + +
  • Arnaud Charlet + +
  • Chien Chieng + +
  • Cyrille Comar + +
  • Cyrille Crozes + +
  • Robert Dewar + +
  • Gary Dismukes + +
  • Robert Duff + +
  • Ed Falis + +
  • Ramon Fernandez + +
  • Sam Figueroa + +
  • Vasiliy Fofanov + +
  • Michael Friess + +
  • Franco Gasperoni + +
  • Ted Giering + +
  • Matthew Gingell + +
  • Laurent Guerby + +
  • Jerome Guitton + +
  • Olivier Hainque + +
  • Jerome Hugues + +
  • Hristian Kirtchev + +
  • Jerome Lambourg + +
  • Bruno Leclerc + +
  • Albert Lee + +
  • Sean McNeil + +
  • Javier Miranda + +
  • Laurent Nana + +
  • Pascal Obry + +
  • Dong-Ik Oh + +
  • Laurent Pautet + +
  • Brett Porter + +
  • Thomas Quinot + +
  • Nicolas Roche + +
  • Pat Rogers + +
  • Jose Ruiz + +
  • Douglas Rupp + +
  • Sergey Rybin + +
  • Gail Schenker + +
  • Ed Schonberg + +
  • Nicolas Setton + +
  • Samuel Tardieu + +
+ +

The following people are recognized for their contributions of new +features, bug reports, testing and integration of classpath/libgcj for +GCC version 4.1: +

    +
  • Lillian Angel for JTree implementation and lots Free Swing +additions and bug fixes. + +
  • Wolfgang Baer for GapContent bug fixes. + +
  • Anthony Balkissoon for JList, Free Swing 1.5 updates and mouse event +fixes, lots of Free Swing work including JTable editing. + +
  • Stuart Ballard for RMI constant fixes. + +
  • Goffredo Baroncelli for HTTPURLConnection fixes. + +
  • Gary Benson for MessageFormat fixes. + +
  • Daniel Bonniot for Serialization fixes. + +
  • Chris Burdess for lots of gnu.xml and http protocol fixes, StAX +and DOM xml:id support. + +
  • Ka-Hing Cheung for TreePath and TreeSelection fixes. + +
  • Archie Cobbs for build fixes, VM interface updates, +URLClassLoader updates. + +
  • Kelley Cook for build fixes. + +
  • Martin Cordova for Suggestions for better SocketTimeoutException. + +
  • David Daney for BitSet bug fixes, HttpURLConnection +rewrite and improvements. + +
  • Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo 2D +support. Lots of imageio framework additions, lots of AWT and Free +Swing bug fixes. + +
  • Jeroen Frijters for ClassLoader and nio cleanups, serialization fixes, +better Proxy support, bug fixes and IKVM integration. + +
  • Santiago Gala for AccessControlContext fixes. + +
  • Nicolas Geoffray for VMClassLoader and AccessController +improvements. + +
  • David Gilbert for basic and metal icon and plaf support +and lots of documenting, Lots of Free Swing and metal theme +additions. MetalIconFactory implementation. + +
  • Anthony Green for MIDI framework, ALSA and DSSI +providers. + +
  • Andrew Haley for Serialization and URLClassLoader fixes, +gcj build speedups. + +
  • Kim Ho for JFileChooser implementation. + +
  • Andrew John Hughes for Locale and net fixes, URI RFC2986 +updates, Serialization fixes, Properties XML support and +generic branch work, VMIntegration guide update. + +
  • Bastiaan Huisman for TimeZone bug fixing. + +
  • Andreas Jaeger for mprec updates. + +
  • Paul Jenner for better -Werror support. + +
  • Ito Kazumitsu for NetworkInterface implementation and updates. + +
  • Roman Kennke for BoxLayout, GrayFilter and +SplitPane, plus bug fixes all over. Lots of Free Swing work +including styled text. + +
  • Simon Kitching for String cleanups and optimization suggestions. + +
  • Michael Koch for configuration fixes, Locale updates, bug and +build fixes. + +
  • Guilhem Lavaux for configuration, thread and channel fixes and Kaffe +integration. JCL native Pointer updates. Logger bug fixes. + +
  • David Lichteblau for JCL support library global/local reference +cleanups. + +
  • Aaron Luchko for JDWP updates and documentation fixes. + +
  • Ziga Mahkovec for Graphics2D upgraded to Cairo 0.5 and new regex +features. + +
  • Sven de Marothy for BMP imageio support, CSS and TextLayout +fixes. GtkImage rewrite, 2D, awt, free swing and date/time fixes and +implementing the Qt4 peers. + +
  • Casey Marshall for crypto algorithm fixes, FileChannel lock, +SystemLogger and FileHandler rotate implementations, NIO +FileChannel.map support, security and policy updates. + +
  • Bryce McKinlay for RMI work. + +
  • Audrius Meskauskas for lots of Free Corba, RMI and HTML work plus +testing and documenting. + +
  • Kalle Olavi Niemitalo for build fixes. + +
  • Rainer Orth for build fixes. + +
  • Andrew Overholt for File locking fixes. + +
  • Ingo Proetel for Image, Logger and URLClassLoader +updates. + +
  • Olga Rodimina for MenuSelectionManager implementation. + +
  • Jan Roehrich for BasicTreeUI and JTree fixes. + +
  • Julian Scheid for documentation updates and gjdoc support. + +
  • Christian Schlichtherle for zip fixes and cleanups. + +
  • Robert Schuster for documentation updates and beans fixes, +TreeNode enumerations and ActionCommand and various +fixes, XML and URL, AWT and Free Swing bug fixes. + +
  • Keith Seitz for lots of JDWP work. + +
  • Christian Thalinger for 64-bit cleanups, Configuration and VM +interface fixes and CACAO integration, fdlibm updates. + +
  • Gael Thomas for VMClassLoader boot packages support suggestions. + +
  • Andreas Tobler for Darwin and Solaris testing and fixing, Qt4 +support for Darwin/OS X, Graphics2D support, gtk+ +updates. + +
  • Dalibor Topic for better DEBUG support, build cleanups and +Kaffe integration. Qt4 build infrastructure, SHA1PRNG +and GdkPixbugDecoder updates. + +
  • Tom Tromey for Eclipse integration, generics work, lots of bug fixes +and gcj integration including coordinating The Big Merge. + +
  • Mark Wielaard for bug fixes, packaging and release management, +Clipboard implementation, system call interrupts and network +timeouts and GdkPixpufDecoder fixes. + +
+ +

In addition to the above, all of which also contributed time and energy in +testing GCC, we would like to thank the following for their contributions +to testing: + +

    +
  • Michael Abd-El-Malek + +
  • Thomas Arend + +
  • Bonzo Armstrong + +
  • Steven Ashe + +
  • Chris Baldwin + +
  • David Billinghurst + +
  • Jim Blandy + +
  • Stephane Bortzmeyer + +
  • Horst von Brand + +
  • Frank Braun + +
  • Rodney Brown + +
  • Sidney Cadot + +
  • Bradford Castalia + +
  • Jonathan Corbet + +
  • Ralph Doncaster + +
  • Richard Emberson + +
  • Levente Farkas + +
  • Graham Fawcett + +
  • Mark Fernyhough + +
  • Robert A. French + +
  • Jörgen Freyh + +
  • Mark K. Gardner + +
  • Charles-Antoine Gauthier + +
  • Yung Shing Gene + +
  • David Gilbert + +
  • Simon Gornall + +
  • Fred Gray + +
  • John Griffin + +
  • Patrik Hagglund + +
  • Phil Hargett + +
  • Amancio Hasty + +
  • Takafumi Hayashi + +
  • Bryan W. Headley + +
  • Kevin B. Hendricks + +
  • Joep Jansen + +
  • Christian Joensson + +
  • Michel Kern + +
  • David Kidd + +
  • Tobias Kuipers + +
  • Anand Krishnaswamy + +
  • A. O. V. Le Blanc + +
  • llewelly + +
  • Damon Love + +
  • Brad Lucier + +
  • Matthias Klose + +
  • Martin Knoblauch + +
  • Rick Lutowski + +
  • Jesse Macnish + +
  • Stefan Morrell + +
  • Anon A. Mous + +
  • Matthias Mueller + +
  • Pekka Nikander + +
  • Rick Niles + +
  • Jon Olson + +
  • Magnus Persson + +
  • Chris Pollard + +
  • Richard Polton + +
  • Derk Reefman + +
  • David Rees + +
  • Paul Reilly + +
  • Tom Reilly + +
  • Torsten Rueger + +
  • Danny Sadinoff + +
  • Marc Schifer + +
  • Erik Schnetter + +
  • Wayne K. Schroll + +
  • David Schuler + +
  • Vin Shelton + +
  • Tim Souder + +
  • Adam Sulmicki + +
  • Bill Thorson + +
  • George Talbot + +
  • Pedro A. M. Vazquez + +
  • Gregory Warnes + +
  • Ian Watson + +
  • David E. Young + +
  • And many others +
+ +

And finally we'd like to thank everyone who uses the compiler, submits bug +reports and generally reminds us why we're doing this work in the first place. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Copy-Assignment.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Copy-Assignment.html new file mode 100644 index 0000000..b2d5390 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Copy-Assignment.html @@ -0,0 +1,106 @@ + + +Copy Assignment - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Previous: Temporaries, +Up: C++ Misunderstandings +



+
+ +

10.8.4 Implicit Copy-Assignment for Virtual Bases

+ +

When a base class is virtual, only one subobject of the base class +belongs to each full object. Also, the constructors and destructors are +invoked only once, and called from the most-derived class. However, such +objects behave unspecified when being assigned. For example: + +

     struct Base{
+       char *name;
+       Base(char *n) : name(strdup(n)){}
+       Base& operator= (const Base& other){
+        free (name);
+        name = strdup (other.name);
+       }
+     };
+     
+     struct A:virtual Base{
+       int val;
+       A():Base("A"){}
+     };
+     
+     struct B:virtual Base{
+       int bval;
+       B():Base("B"){}
+     };
+     
+     struct Derived:public A, public B{
+       Derived():Base("Derived"){}
+     };
+     
+     void func(Derived &d1, Derived &d2)
+     {
+       d1 = d2;
+     }
+
+

The C++ standard specifies that Base::Base is only called once +when constructing or copy-constructing a Derived object. It is +unspecified whether Base::operator= is called more than once when +the implicit copy-assignment for Derived objects is invoked (as it is +inside func in the example). + +

G++ implements the “intuitive” algorithm for copy-assignment: assign all +direct bases, then assign all members. In that algorithm, the virtual +base subobject can be encountered more than once. In the example, copying +proceeds in the following order: val, name (via +strdup), bval, and name again. + +

If application code relies on copy-assignment, a user-defined +copy-assignment operator removes any uncertainties. With such an +operator, the application can define whether and how the virtual base +subobject is assigned. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Copying.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Copying.html new file mode 100644 index 0000000..52cd7af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Copying.html @@ -0,0 +1,758 @@ + + +Copying - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Previous: GNU Project, +Up: Top +



+
+ + +

GNU General Public License

+ +
Version 3, 29 June 2007
+ + +
     Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/
+     
+     Everyone is permitted to copy and distribute verbatim copies of this
+     license document, but changing it is not allowed.
+
+

Preamble

+ +

The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +

The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom +to share and change all versions of a program–to make sure it remains +free software for all its users. We, the Free Software Foundation, +use the GNU General Public License for most of our software; it +applies also to any other work released this way by its authors. You +can apply it to your programs, too. + +

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +

To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you +have certain responsibilities if you distribute copies of the +software, or if you modify it: responsibilities to respect the freedom +of others. + +

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, +receive or can get the source code. And you must show them these +terms so they know their rights. + +

Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +

For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +

Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the +manufacturer can do so. This is fundamentally incompatible with the +aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for +individuals to use, which is precisely where it is most unacceptable. +Therefore, we have designed this version of the GPL to prohibit the +practice for those products. If such problems arise substantially in +other domains, we stand ready to extend this provision to those +domains in future versions of the GPL, as needed to protect the +freedom of users. + +

Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish +to avoid the special danger that patents applied to a free program +could make it effectively proprietary. To prevent this, the GPL +assures that patents cannot be used to render the program non-free. + +

The precise terms and conditions for copying, distribution and +modification follow. + +

TERMS AND CONDITIONS

+ +
    +
  1. Definitions. + +

    “This License” refers to version 3 of the GNU General Public License. + +

    “Copyright” also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +

    “The Program” refers to any copyrightable work licensed under this +License. Each licensee is addressed as “you”. “Licensees” and +“recipients” may be individuals or organizations. + +

    To “modify” a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a “modified version” of +the earlier work or a work “based on” the earlier work. + +

    A “covered work” means either the unmodified Program or a work based +on the Program. + +

    To “propagate” a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +

    To “convey” a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +

    An interactive user interface displays “Appropriate Legal Notices” to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +

  2. Source Code. + +

    The “source code” for a work means the preferred form of the work for +making modifications to it. “Object code” means any non-source form +of a work. + +

    A “Standard Interface” means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +

    The “System Libraries” of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +“Major Component”, in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +

    The “Corresponding Source” for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +

    The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +

    The Corresponding Source for a work in source code form is that same +work. + +

  3. Basic Permissions. + +

    All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +

    You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +

    Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +

  4. Protecting Users' Legal Rights From Anti-Circumvention Law. + +

    No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +

    When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +

  5. Conveying Verbatim Copies. + +

    You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +

    You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +

  6. Conveying Modified Source Versions. + +

    You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +

      +
    1. The work must carry prominent notices stating that you modified it, +and giving a relevant date. + +
    2. The work must carry prominent notices stating that it is released +under this License and any conditions added under section 7. This +requirement modifies the requirement in section 4 to “keep intact all +notices”. + +
    3. You must license the entire work, as a whole, under this License to +anyone who comes into possession of a copy. This License will +therefore apply, along with any applicable section 7 additional terms, +to the whole of the work, and all its parts, regardless of how they +are packaged. This License gives no permission to license the work in +any other way, but it does not invalidate such permission if you have +separately received it. + +
    4. If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your work +need not make them do so. +
    + +

    A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +“aggregate” if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +

  7. Conveying Non-Source Forms. + +

    You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +

      +
    1. Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium customarily +used for software interchange. + +
    2. Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a written +offer, valid for at least three years and valid for as long as you +offer spare parts or customer support for that product model, to give +anyone who possesses the object code either (1) a copy of the +Corresponding Source for all the software in the product that is +covered by this License, on a durable physical medium customarily used +for software interchange, for a price no more than your reasonable +cost of physically performing this conveying of source, or (2) access +to copy the Corresponding Source from a network server at no charge. + +
    3. Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is +allowed only occasionally and noncommercially, and only if you +received the object code with such an offer, in accord with subsection +6b. + +
    4. Convey the object code by offering access from a designated place +(gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to copy +the object code is a network server, the Corresponding Source may be +on a different server (operated by you or a third party) that supports +equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. +Regardless of what server hosts the Corresponding Source, you remain +obligated to ensure that it is available for as long as needed to +satisfy these requirements. + +
    5. Convey the object code using peer-to-peer transmission, provided you +inform other peers where the object code and Corresponding Source of +the work are being offered to the general public at no charge under +subsection 6d. + +
    + +

    A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +

    A “User Product” is either (1) a “consumer product”, which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +“normally used” refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +

    “Installation Information” for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +

    If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +

    The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +

    Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +

  8. Additional Terms. + +

    “Additional permissions” are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +

    When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +

    Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +

      +
    1. Disclaiming warranty or limiting liability differently from the terms +of sections 15 and 16 of this License; or + +
    2. Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices +displayed by works containing it; or + +
    3. Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +
    4. Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +
    5. Declining to grant rights under trademark law for use of some trade +names, trademarks, or service marks; or + +
    6. Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with +contractual assumptions of liability to the recipient, for any +liability that these contractual assumptions directly impose on those +licensors and authors. +
    + +

    All other non-permissive additional terms are considered “further +restrictions” within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +

    If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +

    Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +

  9. Termination. + +

    You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +

    However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +

    Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +

    Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +

  10. Acceptance Not Required for Having Copies. + +

    You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +

  11. Automatic Licensing of Downstream Recipients. + +

    Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +

    An “entity transaction” is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +

    You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +

  12. Patents. + +

    A “contributor” is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's “contributor version”. + +

    A contributor's “essential patent claims” are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, “control” includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +

    Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +

    In the following three paragraphs, a “patent license” is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To “grant” such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +

    If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. “Knowingly relying” means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +

    If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +

    A patent license is “discriminatory” if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +

    Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +

  13. No Surrender of Others' Freedom. + +

    If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey +a covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree +to terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +

  14. Use with the GNU Affero General Public License. + +

    Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +

  15. Revised Versions of this License. + +

    The Free Software Foundation may publish revised and/or new versions +of the GNU General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +

    Each version is given a distinguishing version number. If the Program +specifies that a certain numbered version of the GNU General Public +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that numbered version or +of any later version published by the Free Software Foundation. If +the Program does not specify a version number of the GNU General +Public License, you may choose any version ever published by the Free +Software Foundation. + +

    If the Program specifies that a proxy can decide which future versions +of the GNU General Public License can be used, that proxy's public +statement of acceptance of a version permanently authorizes you to +choose that version for the Program. + +

    Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +

  16. Disclaimer of Warranty. + +

    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +

  17. Limitation of Liability. + +

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +

  18. Interpretation of Sections 15 and 16. + +

    If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +

+ +

END OF TERMS AND CONDITIONS

+ +

How to Apply These Terms to Your New Programs

+ +

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the “copyright” line and a pointer to where the full notice is found. + +

     one line to give the program's name and a brief idea of what it does.
+     Copyright (C) year name of author
+     
+     This program is free software: you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+     the Free Software Foundation, either version 3 of the License, or (at
+     your option) any later version.
+     
+     This program is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+     
+     You should have received a copy of the GNU General Public License
+     along with this program.  If not, see http://www.gnu.org/licenses/.
+
+

Also add information on how to contact you by electronic and paper mail. + +

If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +

     program Copyright (C) year name of author
+     This program comes with ABSOLUTELY NO WARRANTY; for details type show w.
+     This is free software, and you are welcome to redistribute it
+     under certain conditions; type show c for details.
+
+

The hypothetical commands show w and show c should show +the appropriate parts of the General Public License. Of course, your +program's commands might be different; for a GUI interface, you would +use an “about box”. + +

You should also get your employer (if you work as a programmer) or school, +if any, to sign a “copyright disclaimer” for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +http://www.gnu.org/licenses/. + +

The GNU General Public License does not permit incorporating your +program into proprietary programs. If your program is a subroutine +library, you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use +the GNU Lesser General Public License instead of this License. But +first, please read http://www.gnu.org/philosophy/why-not-lgpl.html. + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cross_002dCompiler-Problems.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cross_002dCompiler-Problems.html new file mode 100644 index 0000000..4554a88 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cross_002dCompiler-Problems.html @@ -0,0 +1,67 @@ + + +Cross-Compiler Problems - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Actual Bugs, +Up: Trouble +



+
+ +

10.2 Cross-Compiler Problems

+ +

You may run into problems with cross compilation on certain machines, +for several reasons. + +

    +
  • At present, the program mips-tfile which adds debug +support to object files on MIPS systems does not work in a cross +compile environment. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cross_002dprofiling.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cross_002dprofiling.html new file mode 100644 index 0000000..b4095e2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Cross_002dprofiling.html @@ -0,0 +1,95 @@ + + +Cross-profiling - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Gcov Data Files, +Up: Gcov +



+
+ +

9.5 Data file relocation to support cross-profiling

+ +

Running the program will cause profile output to be generated. For each +source file compiled with -fprofile-arcs, an accompanying .gcda +file will be placed in the object file directory. That implicitly requires +running the program on the same system as it was built or having the same +absolute directory structure on the target system. The program will try +to create the needed directory structure, if it is not already present. + +

To support cross-profiling, a program compiled with -fprofile-arcs +can relocate the data files based on two environment variables: + +

    +
  • GCOV_PREFIX contains the prefix to add to the absolute paths +in the object file. Prefix must be absolute as well, otherwise its +value is ignored. The default is no prefix. + +
  • GCOV_PREFIX_STRIP indicates the how many initial directory names to strip off +the hardwired absolute paths. Default value is 0. + +

    Note: GCOV_PREFIX_STRIP has no effect if GCOV_PREFIX is undefined, empty +or non-absolute. +

+ +

For example, if the object file /user/build/foo.o was built with +-fprofile-arcs, the final executable will try to create the data file +/user/build/foo.gcda when running on the target system. This will +fail if the corresponding directory does not exist and it is unable to create +it. This can be overcome by, for example, setting the environment as +GCOV_PREFIX=/target/run and GCOV_PREFIX_STRIP=1. Such a +setting will name the data file /target/run/build/foo.gcda. + +

You must move the data files to the expected directory tree in order to +use them for profile directed optimizations (--use-profile), or to +use the gcov tool. + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/DEC-Alpha-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/DEC-Alpha-Options.html new file mode 100644 index 0000000..d4f0f08 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/DEC-Alpha-Options.html @@ -0,0 +1,275 @@ + + +DEC Alpha Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Darwin Options, +Up: Submodel Options +



+
+ +

3.17.8 DEC Alpha Options

+ +

These -m options are defined for the DEC Alpha implementations: + +

+
-mno-soft-float
-msoft-float
Use (do not use) the hardware floating-point instructions for +floating-point operations. When -msoft-float is specified, +functions in libgcc.a will be used to perform floating-point +operations. Unless they are replaced by routines that emulate the +floating-point operations, or compiled in such a way as to call such +emulations routines, these routines will issue floating-point +operations. If you are compiling for an Alpha without floating-point +operations, you must ensure that the library is built so as not to call +them. + +

Note that Alpha implementations without floating-point operations are +required to have floating-point registers. + +

-mfp-reg
-mno-fp-regs
Generate code that uses (does not use) the floating-point register set. +-mno-fp-regs implies -msoft-float. If the floating-point +register set is not used, floating point operands are passed in integer +registers as if they were integers and floating-point results are passed +in $0 instead of $f0. This is a non-standard calling sequence, +so any function with a floating-point argument or return value called by code +compiled with -mno-fp-regs must also be compiled with that +option. + +

A typical use of this option is building a kernel that does not use, +and hence need not save and restore, any floating-point registers. + +

-mieee
The Alpha architecture implements floating-point hardware optimized for +maximum performance. It is mostly compliant with the IEEE floating +point standard. However, for full compliance, software assistance is +required. This option generates code fully IEEE compliant code +except that the inexact-flag is not maintained (see below). +If this option is turned on, the preprocessor macro _IEEE_FP is +defined during compilation. The resulting code is less efficient but is +able to correctly support denormalized numbers and exceptional IEEE +values such as not-a-number and plus/minus infinity. Other Alpha +compilers call this option -ieee_with_no_inexact. + +
-mieee-with-inexact
This is like -mieee except the generated code also maintains +the IEEE inexact-flag. Turning on this option causes the +generated code to implement fully-compliant IEEE math. In addition to +_IEEE_FP, _IEEE_FP_EXACT is defined as a preprocessor +macro. On some Alpha implementations the resulting code may execute +significantly slower than the code generated by default. Since there is +very little code that depends on the inexact-flag, you should +normally not specify this option. Other Alpha compilers call this +option -ieee_with_inexact. + +
-mfp-trap-mode=trap-mode
This option controls what floating-point related traps are enabled. +Other Alpha compilers call this option -fptm trap-mode. +The trap mode can be set to one of four values: + +
+
n
This is the default (normal) setting. The only traps that are enabled +are the ones that cannot be disabled in software (e.g., division by zero +trap). + +
u
In addition to the traps enabled by n, underflow traps are enabled +as well. + +
su
Like u, but the instructions are marked to be safe for software +completion (see Alpha architecture manual for details). + +
sui
Like su, but inexact traps are enabled as well. +
+ +
-mfp-rounding-mode=rounding-mode
Selects the IEEE rounding mode. Other Alpha compilers call this option +-fprm rounding-mode. The rounding-mode can be one +of: + +
+
n
Normal IEEE rounding mode. Floating point numbers are rounded towards +the nearest machine number or towards the even machine number in case +of a tie. + +
m
Round towards minus infinity. + +
c
Chopped rounding mode. Floating point numbers are rounded towards zero. + +
d
Dynamic rounding mode. A field in the floating point control register +(fpcr, see Alpha architecture reference manual) controls the +rounding mode in effect. The C library initializes this register for +rounding towards plus infinity. Thus, unless your program modifies the +fpcr, d corresponds to round towards plus infinity. +
+ +
-mtrap-precision=trap-precision
In the Alpha architecture, floating point traps are imprecise. This +means without software assistance it is impossible to recover from a +floating trap and program execution normally needs to be terminated. +GCC can generate code that can assist operating system trap handlers +in determining the exact location that caused a floating point trap. +Depending on the requirements of an application, different levels of +precisions can be selected: + +
+
p
Program precision. This option is the default and means a trap handler +can only identify which program caused a floating point exception. + +
f
Function precision. The trap handler can determine the function that +caused a floating point exception. + +
i
Instruction precision. The trap handler can determine the exact +instruction that caused a floating point exception. +
+ +

Other Alpha compilers provide the equivalent options called +-scope_safe and -resumption_safe. + +

-mieee-conformant
This option marks the generated code as IEEE conformant. You must not +use this option unless you also specify -mtrap-precision=i and either +-mfp-trap-mode=su or -mfp-trap-mode=sui. Its only effect +is to emit the line .eflag 48 in the function prologue of the +generated assembly file. Under DEC Unix, this has the effect that +IEEE-conformant math library routines will be linked in. + +
-mbuild-constants
Normally GCC examines a 32- or 64-bit integer constant to +see if it can construct it from smaller constants in two or three +instructions. If it cannot, it will output the constant as a literal and +generate code to load it from the data segment at runtime. + +

Use this option to require GCC to construct all integer constants +using code, even if it takes more instructions (the maximum is six). + +

You would typically use this option to build a shared library dynamic +loader. Itself a shared library, it must relocate itself in memory +before it can find the variables and constants in its own data segment. + +

-malpha-as
-mgas
Select whether to generate code to be assembled by the vendor-supplied +assembler (-malpha-as) or by the GNU assembler -mgas. + +
-mbwx
-mno-bwx
-mcix
-mno-cix
-mfix
-mno-fix
-mmax
-mno-max
Indicate whether GCC should generate code to use the optional BWX, +CIX, FIX and MAX instruction sets. The default is to use the instruction +sets supported by the CPU type specified via -mcpu= option or that +of the CPU on which GCC was built if none was specified. + +
-mfloat-vax
-mfloat-ieee
Generate code that uses (does not use) VAX F and G floating point +arithmetic instead of IEEE single and double precision. + +
-mexplicit-relocs
-mno-explicit-relocs
Older Alpha assemblers provided no way to generate symbol relocations +except via assembler macros. Use of these macros does not allow +optimal instruction scheduling. GNU binutils as of version 2.12 +supports a new syntax that allows the compiler to explicitly mark +which relocations should apply to which instructions. This option +is mostly useful for debugging, as GCC detects the capabilities of +the assembler when it is built and sets the default accordingly. + +
-msmall-data
-mlarge-data
When -mexplicit-relocs is in effect, static data is +accessed via gp-relative relocations. When -msmall-data +is used, objects 8 bytes long or smaller are placed in a small data area +(the .sdata and .sbss sections) and are accessed via +16-bit relocations off of the $gp register. This limits the +size of the small data area to 64KB, but allows the variables to be +directly accessed via a single instruction. + +

The default is -mlarge-data. With this option the data area +is limited to just below 2GB. Programs that require more than 2GB of +data must use malloc or mmap to allocate the data in the +heap instead of in the program's data segment. + +

When generating code for shared libraries, -fpic implies +-msmall-data and -fPIC implies -mlarge-data. + +

-msmall-text
-mlarge-text
When -msmall-text is used, the compiler assumes that the +code of the entire program (or shared library) fits in 4MB, and is +thus reachable with a branch instruction. When -msmall-data +is used, the compiler can assume that all local symbols share the +same $gp value, and thus reduce the number of instructions +required for a function call from 4 to 1. + +

The default is -mlarge-text. + +

-mcpu=cpu_type
Set the instruction set and instruction scheduling parameters for +machine type cpu_type. You can specify either the EV +style name or the corresponding chip number. GCC supports scheduling +parameters for the EV4, EV5 and EV6 family of processors and will +choose the default values for the instruction set from the processor +you specify. If you do not specify a processor type, GCC will default +to the processor on which the compiler was built. + +

Supported values for cpu_type are + +

+
ev4
ev45
21064
Schedules as an EV4 and has no instruction set extensions. + +
ev5
21164
Schedules as an EV5 and has no instruction set extensions. + +
ev56
21164a
Schedules as an EV5 and supports the BWX extension. + +
pca56
21164pc
21164PC
Schedules as an EV5 and supports the BWX and MAX extensions. + +
ev6
21264
Schedules as an EV6 and supports the BWX, FIX, and MAX extensions. + +
ev67
21264a
Schedules as an EV6 and supports the BWX, CIX, FIX, and MAX extensions. +
+ +
-mtune=cpu_type
Set only the instruction scheduling parameters for machine type +cpu_type. The instruction set is not changed. + +
-mmemory-latency=time
Sets the latency the scheduler should assume for typical memory +references as seen by the application. This number is highly +dependent on the memory access patterns used by the application +and the size of the external cache on the machine. + +

Valid options for time are + +

+
number
A decimal number representing clock cycles. + +
L1
L2
L3
main
The compiler contains estimates of the number of clock cycles for +“typical” EV4 & EV5 hardware for the Level 1, 2 & 3 caches +(also called Dcache, Scache, and Bcache), as well as to main memory. +Note that L3 is only valid for EV5. + +
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/DEC-Alpha_002fVMS-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/DEC-Alpha_002fVMS-Options.html new file mode 100644 index 0000000..d296c97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/DEC-Alpha_002fVMS-Options.html @@ -0,0 +1,65 @@ + + +DEC Alpha/VMS Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: DEC Alpha Options, +Up: Submodel Options +



+
+ +

3.17.9 DEC Alpha/VMS Options

+ +

These -m options are defined for the DEC Alpha/VMS implementations: + +

+
-mvms-return-codes
Return VMS condition codes from main. The default is to return POSIX +style condition (e.g. error) codes. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Darwin-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Darwin-Options.html new file mode 100644 index 0000000..d3dcaac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Darwin-Options.html @@ -0,0 +1,184 @@ + + +Darwin Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: CRX Options, +Up: Submodel Options +



+
+ +

3.17.7 Darwin Options

+ +

+These options are defined for all architectures running the Darwin operating +system. + +

FSF GCC on Darwin does not create “fat” object files; it will create +an object file for the single architecture that it was built to +target. Apple's GCC on Darwin does create “fat” files if multiple +-arch options are used; it does so by running the compiler or +linker multiple times and joining the results together with +lipo. + +

The subtype of the file created (like ppc7400 or ppc970 or +i686) is determined by the flags that specify the ISA +that GCC is targetting, like -mcpu or -march. The +-force_cpusubtype_ALL option can be used to override this. + +

The Darwin tools vary in their behavior when presented with an ISA +mismatch. The assembler, as, will only permit instructions to +be used that are valid for the subtype of the file it is generating, +so you cannot put 64-bit instructions in an ppc750 object file. +The linker for shared libraries, /usr/bin/libtool, will fail +and print an error if asked to create a shared library with a less +restrictive subtype than its input files (for instance, trying to put +a ppc970 object file in a ppc7400 library). The linker +for executables, ld, will quietly give the executable the most +restrictive subtype of any of its input files. + +

+
-Fdir
Add the framework directory dir to the head of the list of +directories to be searched for header files. These directories are +interleaved with those specified by -I options and are +scanned in a left-to-right order. + +

A framework directory is a directory with frameworks in it. A +framework is a directory with a "Headers" and/or +"PrivateHeaders" directory contained directly in it that ends +in ".framework". The name of a framework is the name of this +directory excluding the ".framework". Headers associated with +the framework are found in one of those two directories, with +"Headers" being searched first. A subframework is a framework +directory that is in a framework's "Frameworks" directory. +Includes of subframework headers can only appear in a header of a +framework that contains the subframework, or in a sibling subframework +header. Two subframeworks are siblings if they occur in the same +framework. A subframework should not have the same name as a +framework, a warning will be issued if this is violated. Currently a +subframework cannot have subframeworks, in the future, the mechanism +may be extended to support this. The standard frameworks can be found +in "/System/Library/Frameworks" and +"/Library/Frameworks". An example include looks like +#include <Framework/header.h>, where Framework denotes +the name of the framework and header.h is found in the +"PrivateHeaders" or "Headers" directory. + +

-iframeworkdir
Like -F except the directory is a treated as a system +directory. The main difference between this -iframework and +-F is that with -iframework the compiler does not +warn about constructs contained within header files found via +dir. This option is valid only for the C family of languages. + +
-gused
Emit debugging information for symbols that are used. For STABS +debugging format, this enables -feliminate-unused-debug-symbols. +This is by default ON. + +
-gfull
Emit debugging information for all symbols and types. + +
-mmacosx-version-min=version
The earliest version of MacOS X that this executable will run on +is version. Typical values of version include 10.1, +10.2, and 10.3.9. + +

If the compiler was built to use the system's headers by default, +then the default for this option is the system version on which the +compiler is running, otherwise the default is to make choices which +are compatible with as many systems and code bases as possible. + +

-mkernel
Enable kernel development mode. The -mkernel option sets +-static, -fno-common, -fno-cxa-atexit, +-fno-exceptions, -fno-non-call-exceptions, +-fapple-kext, -fno-weak and -fno-rtti where +applicable. This mode also sets -mno-altivec, +-msoft-float, -fno-builtin and +-mlong-branch for PowerPC targets. + +
-mone-byte-bool
Override the defaults for bool so that sizeof(bool)==1. +By default sizeof(bool) is 4 when compiling for +Darwin/PowerPC and 1 when compiling for Darwin/x86, so this +option has no effect on x86. + +

Warning: The -mone-byte-bool switch causes GCC +to generate code that is not binary compatible with code generated +without that switch. Using this switch may require recompiling all +other modules in a program, including system libraries. Use this +switch to conform to a non-default data model. + +

-mfix-and-continue
-ffix-and-continue
-findirect-data
Generate code suitable for fast turn around development. Needed to +enable gdb to dynamically load .o files into already running +programs. -findirect-data and -ffix-and-continue +are provided for backwards compatibility. + +
-all_load
Loads all members of static archive libraries. +See man ld(1) for more information. + +
-arch_errors_fatal
Cause the errors having to do with files that have the wrong architecture +to be fatal. + +
-bind_at_load
Causes the output file to be marked such that the dynamic linker will +bind all undefined references when the file is loaded or launched. + +
-bundle
Produce a Mach-o bundle format file. +See man ld(1) for more information. + +
-bundle_loader executable
This option specifies the executable that will be loading the build +output file being linked. See man ld(1) for more information. + +
-dynamiclib
When passed this option, GCC will produce a dynamic library instead of +an executable when linking, using the Darwin libtool command. + +
-force_cpusubtype_ALL
This causes GCC's output file to have the ALL subtype, instead of +one controlled by the -mcpu or -march option. + +
-allowable_client client_name
-client_name
-compatibility_version
-current_version
-dead_strip
-dependency-file
-dylib_file
-dylinker_install_name
-dynamic
-exported_symbols_list
-filelist
-flat_namespace
-force_flat_namespace
-headerpad_max_install_names
-image_base
-init
-install_name
-keep_private_externs
-multi_module
-multiply_defined
-multiply_defined_unused
-noall_load
-no_dead_strip_inits_and_terms
-nofixprebinding
-nomultidefs
-noprebind
-noseglinkedit
-pagezero_size
-prebind
-prebind_all_twolevel_modules
-private_bundle
-read_only_relocs
-sectalign
-sectobjectsymbols
-whyload
-seg1addr
-sectcreate
-sectobjectsymbols
-sectorder
-segaddr
-segs_read_only_addr
-segs_read_write_addr
-seg_addr_table
-seg_addr_table_filename
-seglinkedit
-segprot
-segs_read_only_addr
-segs_read_write_addr
-single_module
-static
-sub_library
-sub_umbrella
-twolevel_namespace
-umbrella
-undefined
-unexported_symbols_list
-weak_reference_mismatches
-whatsloaded
+ +These options are passed to the Darwin linker. The Darwin linker man page +describes them in detail. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Darwin-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Darwin-Pragmas.html new file mode 100644 index 0000000..470866c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Darwin-Pragmas.html @@ -0,0 +1,79 @@ + + +Darwin Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: RS/6000 and PowerPC Pragmas, +Up: Pragmas +



+
+ +

5.52.4 Darwin Pragmas

+ +

The following pragmas are available for all architectures running the +Darwin operating system. These are useful for compatibility with other +Mac OS compilers. + +

+
mark tokens...
This pragma is accepted, but has no effect. + +
options align=alignment
This pragma sets the alignment of fields in structures. The values of +alignment may be mac68k, to emulate m68k alignment, or +power, to emulate PowerPC alignment. Uses of this pragma nest +properly; to restore the previous setting, use reset for the +alignment. + +
segment tokens...
This pragma is accepted, but has no effect. + +
unused (var [, var]...)
This pragma declares variables to be possibly unused. GCC will not +produce warnings for the listed variables. The effect is similar to +that of the unused attribute, except that this pragma may appear +anywhere within the variables' scopes. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Debugging-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Debugging-Options.html new file mode 100644 index 0000000..f22953e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Debugging-Options.html @@ -0,0 +1,754 @@ + + +Debugging Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Warning Options, +Up: Invoking GCC +



+
+ +

3.9 Options for Debugging Your Program or GCC

+ +

+GCC has various special options that are used for debugging +either your program or GCC: + +

+
-g
Produce debugging information in the operating system's native format +(stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging +information. + +

On most systems that use stabs format, -g enables use of extra +debugging information that only GDB can use; this extra information +makes debugging work better in GDB but will probably make other debuggers +crash or +refuse to read the program. If you want to control for certain whether +to generate the extra information, use -gstabs+, -gstabs, +-gxcoff+, -gxcoff, or -gvms (see below). + +

GCC allows you to use -g with +-O. The shortcuts taken by optimized code may occasionally +produce surprising results: some variables you declared may not exist +at all; flow of control may briefly move where you did not expect it; +some statements may not be executed because they compute constant +results or their values were already at hand; some statements may +execute in different places because they were moved out of loops. + +

Nevertheless it proves possible to debug optimized output. This makes +it reasonable to use the optimizer for programs that might have bugs. + +

The following options are useful when GCC is generated with the +capability for more than one debugging format. + +

-ggdb
Produce debugging information for use by GDB. This means to use the +most expressive format available (DWARF 2, stabs, or the native format +if neither of those are supported), including GDB extensions if at all +possible. + +
-gstabs
Produce debugging information in stabs format (if that is supported), +without GDB extensions. This is the format used by DBX on most BSD +systems. On MIPS, Alpha and System V Release 4 systems this option +produces stabs debugging output which is not understood by DBX or SDB. +On System V Release 4 systems this option requires the GNU assembler. + +
-feliminate-unused-debug-symbols
Produce debugging information in stabs format (if that is supported), +for only symbols that are actually used. + +
-femit-class-debug-always
Instead of emitting debugging information for a C++ class in only one +object file, emit it in all object files using the class. This option +should be used only with debuggers that are unable to handle the way GCC +normally emits debugging information for classes because using this +option will increase the size of debugging information by as much as a +factor of two. + +
-gstabs+
Produce debugging information in stabs format (if that is supported), +using GNU extensions understood only by the GNU debugger (GDB). The +use of these extensions is likely to make other debuggers crash or +refuse to read the program. + +
-gcoff
Produce debugging information in COFF format (if that is supported). +This is the format used by SDB on most System V systems prior to +System V Release 4. + +
-gxcoff
Produce debugging information in XCOFF format (if that is supported). +This is the format used by the DBX debugger on IBM RS/6000 systems. + +
-gxcoff+
Produce debugging information in XCOFF format (if that is supported), +using GNU extensions understood only by the GNU debugger (GDB). The +use of these extensions is likely to make other debuggers crash or +refuse to read the program, and may cause assemblers other than the GNU +assembler (GAS) to fail with an error. + +
-gdwarf-2
Produce debugging information in DWARF version 2 format (if that is +supported). This is the format used by DBX on IRIX 6. With this +option, GCC uses features of DWARF version 3 when they are useful; +version 3 is upward compatible with version 2, but may still cause +problems for older debuggers. + +
-gvms
Produce debugging information in VMS debug format (if that is +supported). This is the format used by DEBUG on VMS systems. + +
-glevel
-ggdblevel
-gstabslevel
-gcofflevel
-gxcofflevel
-gvmslevel
Request debugging information and also use level to specify how +much information. The default level is 2. + +

Level 0 produces no debug information at all. Thus, -g0 negates +-g. + +

Level 1 produces minimal information, enough for making backtraces in +parts of the program that you don't plan to debug. This includes +descriptions of functions and external variables, but no information +about local variables and no line numbers. + +

Level 3 includes extra information, such as all the macro definitions +present in the program. Some debuggers support macro expansion when +you use -g3. + +

-gdwarf-2 does not accept a concatenated debug level, because +GCC used to support an option -gdwarf that meant to generate +debug information in version 1 of the DWARF format (which is very +different from version 2), and it would have been too confusing. That +debug format is long obsolete, but the option cannot be changed now. +Instead use an additional -glevel option to change the +debug level for DWARF2. + +

-feliminate-dwarf2-dups
Compress DWARF2 debugging information by eliminating duplicated +information about each symbol. This option only makes sense when +generating DWARF2 debugging information with -gdwarf-2. + +
-femit-struct-debug-baseonly
Emit debug information for struct-like types +only when the base name of the compilation source file +matches the base name of file in which the struct was defined. + +

This option substantially reduces the size of debugging information, +but at significant potential loss in type information to the debugger. +See -femit-struct-debug-reduced for a less aggressive option. +See -femit-struct-debug-detailed for more detailed control. + +

This option works only with DWARF 2. + +

-femit-struct-debug-reduced
Emit debug information for struct-like types +only when the base name of the compilation source file +matches the base name of file in which the type was defined, +unless the struct is a template or defined in a system header. + +

This option significantly reduces the size of debugging information, +with some potential loss in type information to the debugger. +See -femit-struct-debug-baseonly for a more aggressive option. +See -femit-struct-debug-detailed for more detailed control. + +

This option works only with DWARF 2. + +

-femit-struct-debug-detailed[=spec-list]
Specify the struct-like types +for which the compiler will generate debug information. +The intent is to reduce duplicate struct debug information +between different object files within the same program. + +

This option is a detailed version of +-femit-struct-debug-reduced and -femit-struct-debug-baseonly, +which will serve for most needs. + +

A specification has the syntax +[dir:|ind:][ord:|gen:](any|sys|base|none) + +

The optional first word limits the specification to +structs that are used directly (dir:) or used indirectly (ind:). +A struct type is used directly when it is the type of a variable, member. +Indirect uses arise through pointers to structs. +That is, when use of an incomplete struct would be legal, the use is indirect. +An example is +struct one direct; struct two * indirect;. + +

The optional second word limits the specification to +ordinary structs (ord:) or generic structs (gen:). +Generic structs are a bit complicated to explain. +For C++, these are non-explicit specializations of template classes, +or non-template classes within the above. +Other programming languages have generics, +but -femit-struct-debug-detailed does not yet implement them. + +

The third word specifies the source files for those +structs for which the compiler will emit debug information. +The values none and any have the normal meaning. +The value base means that +the base of name of the file in which the type declaration appears +must match the base of the name of the main compilation file. +In practice, this means that +types declared in foo.c and foo.h will have debug information, +but types declared in other header will not. +The value sys means those types satisfying base +or declared in system or compiler headers. + +

You may need to experiment to determine the best settings for your application. + +

The default is -femit-struct-debug-detailed=all. + +

This option works only with DWARF 2. + +

-fno-merge-debug-strings
Direct the linker to merge together strings which are identical in +different object files. This is not supported by all assemblers or +linker. This decreases the size of the debug information in the +output file at the cost of increasing link processing time. This is +on by default. + +
-fdebug-prefix-map=old=new
When compiling files in directory old, record debugging +information describing them as in new instead. + +


-p
Generate extra code to write profile information suitable for the +analysis program prof. You must use this option when compiling +the source files you want data about, and you must also use it when +linking. + +


-pg
Generate extra code to write profile information suitable for the +analysis program gprof. You must use this option when compiling +the source files you want data about, and you must also use it when +linking. + +
-Q
Makes the compiler print out each function name as it is compiled, and +print some statistics about each pass when it finishes. + +
-ftime-report
Makes the compiler print some statistics about the time consumed by each +pass when it finishes. + +
-fmem-report
Makes the compiler print some statistics about permanent memory +allocation when it finishes. + +
-fpre-ipa-mem-report

-fpost-ipa-mem-report
Makes the compiler print some statistics about permanent memory +allocation before or after interprocedural optimization. + +
-fprofile-arcs
Add code so that program flow arcs are instrumented. During +execution the program records how many times each branch and call is +executed and how many times it is taken or returns. When the compiled +program exits it saves this data to a file called +auxname.gcda for each source file. The data may be used for +profile-directed optimizations (-fbranch-probabilities), or for +test coverage analysis (-ftest-coverage). Each object file's +auxname is generated from the name of the output file, if +explicitly specified and it is not the final executable, otherwise it is +the basename of the source file. In both cases any suffix is removed +(e.g. foo.gcda for input file dir/foo.c, or +dir/foo.gcda for output file specified as -o dir/foo.o). +See Cross-profiling. + +


--coverage
+This option is used to compile and link code instrumented for coverage +analysis. The option is a synonym for -fprofile-arcs +-ftest-coverage (when compiling) and -lgcov (when +linking). See the documentation for those options for more details. + +
    +
  • Compile the source files with -fprofile-arcs plus optimization +and code generation options. For test coverage analysis, use the +additional -ftest-coverage option. You do not need to profile +every source file in a program. + +
  • Link your object files with -lgcov or -fprofile-arcs +(the latter implies the former). + +
  • Run the program on a representative workload to generate the arc profile +information. This may be repeated any number of times. You can run +concurrent instances of your program, and provided that the file system +supports locking, the data files will be correctly updated. Also +fork calls are detected and correctly handled (double counting +will not happen). + +
  • For profile-directed optimizations, compile the source files again with +the same optimization and code generation options plus +-fbranch-probabilities (see Options that Control Optimization). + +
  • For test coverage analysis, use gcov to produce human readable +information from the .gcno and .gcda files. Refer to the +gcov documentation for further information. + +
+ +

With -fprofile-arcs, for each function of your program GCC +creates a program flow graph, then finds a spanning tree for the graph. +Only arcs that are not on the spanning tree have to be instrumented: the +compiler adds code to count the number of times that these arcs are +executed. When an arc is the only exit or only entrance to a block, the +instrumentation code can be added to the block; otherwise, a new basic +block must be created to hold the instrumentation code. + +

-ftest-coverage
Produce a notes file that the gcov code-coverage utility +(see gcov—a Test Coverage Program) can use to +show program coverage. Each source file's note file is called +auxname.gcno. Refer to the -fprofile-arcs option +above for a description of auxname and instructions on how to +generate test coverage data. Coverage data will match the source files +more closely, if you do not optimize. + +
-fdbg-cnt-list
Print the name and the counter upperbound for all debug counters. + +
-fdbg-cnt=counter-value-list
Set the internal debug counter upperbound. counter-value-list +is a comma-separated list of name:value pairs +which sets the upperbound of each debug counter name to value. +All debug counters have the initial upperbound of UINT_MAX, +thus dbg_cnt() returns true always unless the upperbound is set by this option. +e.g. With -fdbg-cnt=dce:10,tail_call:0 +dbg_cnt(dce) will return true only for first 10 invocations +and dbg_cnt(tail_call) will return false always. + +
-dletters
-fdump-rtl-pass
Says to make debugging dumps during compilation at times specified by +letters. This is used for debugging the RTL-based passes of the +compiler. The file names for most of the dumps are made by appending a +pass number and a word to the dumpname. dumpname is generated +from the name of the output file, if explicitly specified and it is not +an executable, otherwise it is the basename of the source file. These +switches may have different effects when -E is used for +preprocessing. + +

Most debug dumps can be enabled either passing a letter to the -d +option, or with a long -fdump-rtl switch; here are the possible +letters for use in letters and pass, and their meanings: + +

+
-dA
Annotate the assembler output with miscellaneous debugging information. + +
-dB
-fdump-rtl-bbro
Dump after block reordering, to file.148r.bbro. + +
-dc
-fdump-rtl-combine
Dump after the RTL instruction combination pass, to the file +file.129r.combine. + +
-dC
-fdump-rtl-ce1
-fdump-rtl-ce2
-dC and -fdump-rtl-ce1 enable dumping after the +first if conversion, to the file file.117r.ce1. -dC +and -fdump-rtl-ce2 enable dumping after the second if +conversion, to the file file.130r.ce2. + +
-dd
-fdump-rtl-btl
-fdump-rtl-dbr
-dd and -fdump-rtl-btl enable dumping after branch +target load optimization, to file.31.btl. -dd +and -fdump-rtl-dbr enable dumping after delayed branch +scheduling, to file.36.dbr. + +
-dD
Dump all macro definitions, at the end of preprocessing, in addition to +normal output. + +
-dE
-fdump-rtl-ce3
Dump after the third if conversion, to file.146r.ce3. + +
-df
-fdump-rtl-cfg
-fdump-rtl-life
-df and -fdump-rtl-cfg enable dumping after control +and data flow analysis, to file.116r.cfg. -df +and -fdump-rtl-cfg enable dumping dump after life analysis, +to file.128r.life1 and file.135r.life2. + +
-dg
-fdump-rtl-greg
Dump after global register allocation, to file.139r.greg. + +
-dG
-fdump-rtl-gcse
-fdump-rtl-bypass
-dG and -fdump-rtl-gcse enable dumping after GCSE, to +file.114r.gcse. -dG and -fdump-rtl-bypass +enable dumping after jump bypassing and control flow optimizations, to +file.115r.bypass. + +
-dh
-fdump-rtl-eh
Dump after finalization of EH handling code, to file.02.eh. + +
-di
-fdump-rtl-sibling
Dump after sibling call optimizations, to file.106r.sibling. + +
-dj
-fdump-rtl-jump
Dump after the first jump optimization, to file.112r.jump. + +
-dk
-fdump-rtl-stack
Dump after conversion from GCC's "flat register file" registers to the +x87's stack-like registers, to file.152r.stack. + +
-dl
-fdump-rtl-lreg
Dump after local register allocation, to file.138r.lreg. + +
-dL
-fdump-rtl-loop2
-dL and -fdump-rtl-loop2 enable dumping after the +loop optimization pass, to file.119r.loop2, +file.120r.loop2_init, +file.121r.loop2_invariant, and +file.125r.loop2_done. + +
-dm
-fdump-rtl-sms
Dump after modulo scheduling, to file.136r.sms. + +
-dM
-fdump-rtl-mach
Dump after performing the machine dependent reorganization pass, to +file.155r.mach if that pass exists. + +
-dn
-fdump-rtl-rnreg
Dump after register renumbering, to file.147r.rnreg. + +
-dN
-fdump-rtl-regmove
Dump after the register move pass, to file.132r.regmove. + +
-do
-fdump-rtl-postreload
Dump after post-reload optimizations, to file.24.postreload. + +
-dr
-fdump-rtl-expand
Dump after RTL generation, to file.104r.expand. + +
-dR
-fdump-rtl-sched2
Dump after the second scheduling pass, to file.149r.sched2. + +
-ds
-fdump-rtl-cse
Dump after CSE (including the jump optimization that sometimes follows +CSE), to file.113r.cse. + +
-dS
-fdump-rtl-sched1
Dump after the first scheduling pass, to file.136r.sched1. + +
-dt
-fdump-rtl-cse2
Dump after the second CSE pass (including the jump optimization that +sometimes follows CSE), to file.127r.cse2. + +
-dT
-fdump-rtl-tracer
Dump after running tracer, to file.118r.tracer. + +
-dV
-fdump-rtl-vpt
-fdump-rtl-vartrack
-dV and -fdump-rtl-vpt enable dumping after the value +profile transformations, to file.10.vpt. -dV +and -fdump-rtl-vartrack enable dumping after variable tracking, +to file.154r.vartrack. + +
-dw
-fdump-rtl-flow2
Dump after the second flow pass, to file.142r.flow2. + +
-dz
-fdump-rtl-peephole2
Dump after the peephole pass, to file.145r.peephole2. + +
-dZ
-fdump-rtl-web
Dump after live range splitting, to file.126r.web. + +
-da
-fdump-rtl-all
Produce all the dumps listed above. + +
-dH
Produce a core dump whenever an error occurs. + +
-dm
Print statistics on memory usage, at the end of the run, to +standard error. + +
-dp
Annotate the assembler output with a comment indicating which +pattern and alternative was used. The length of each instruction is +also printed. + +
-dP
Dump the RTL in the assembler output as a comment before each instruction. +Also turns on -dp annotation. + +
-dv
For each of the other indicated dump files (either with -d or +-fdump-rtl-pass), dump a representation of the control flow +graph suitable for viewing with VCG to file.pass.vcg. + +
-dx
Just generate RTL for a function instead of compiling it. Usually used +with r (-fdump-rtl-expand). + +
-dy
Dump debugging information during parsing, to standard error. +
+ +
-fdump-noaddr
When doing debugging dumps (see -d option above), suppress +address output. This makes it more feasible to use diff on debugging +dumps for compiler invocations with different compiler binaries and/or +different text / bss / data / heap / stack / dso start locations. + +
-fdump-unnumbered
When doing debugging dumps (see -d option above), suppress instruction +numbers and address output. This makes it more feasible to +use diff on debugging dumps for compiler invocations with different +options, in particular with and without -g. + +
-fdump-translation-unit (C++ only)
-fdump-translation-unit-options (C++ only)
Dump a representation of the tree structure for the entire translation +unit to a file. The file name is made by appending .tu to the +source file name. If the -options form is used, options +controls the details of the dump as described for the +-fdump-tree options. + +
-fdump-class-hierarchy (C++ only)
-fdump-class-hierarchy-options (C++ only)
Dump a representation of each class's hierarchy and virtual function +table layout to a file. The file name is made by appending .class +to the source file name. If the -options form is used, +options controls the details of the dump as described for the +-fdump-tree options. + +
-fdump-ipa-switch
Control the dumping at various stages of inter-procedural analysis +language tree to a file. The file name is generated by appending a switch +specific suffix to the source file name. The following dumps are possible: + +
+
all
Enables all inter-procedural analysis dumps. + +
cgraph
Dumps information about call-graph optimization, unused function removal, +and inlining decisions. + +
inline
Dump after function inlining. + +
+ +
-fdump-tree-switch
-fdump-tree-switch-options
Control the dumping at various stages of processing the intermediate +language tree to a file. The file name is generated by appending a switch +specific suffix to the source file name. If the -options +form is used, options is a list of - separated options that +control the details of the dump. Not all options are applicable to all +dumps, those which are not meaningful will be ignored. The following +options are available + +
+
address
Print the address of each node. Usually this is not meaningful as it +changes according to the environment and source file. Its primary use +is for tying up a dump file with a debug environment. +
slim
Inhibit dumping of members of a scope or body of a function merely +because that scope has been reached. Only dump such items when they +are directly reachable by some other path. When dumping pretty-printed +trees, this option inhibits dumping the bodies of control structures. +
raw
Print a raw representation of the tree. By default, trees are +pretty-printed into a C-like representation. +
details
Enable more detailed dumps (not honored by every dump option). +
stats
Enable dumping various statistics about the pass (not honored by every dump +option). +
blocks
Enable showing basic block boundaries (disabled in raw dumps). +
vops
Enable showing virtual operands for every statement. +
lineno
Enable showing line numbers for statements. +
uid
Enable showing the unique ID (DECL_UID) for each variable. +
all
Turn on all options, except raw, slim and lineno. +
+ +

The following tree dumps are possible: +

+
original
Dump before any tree based optimization, to file.original. + +
optimized
Dump after all tree based optimization, to file.optimized. + +
gimple
Dump each function before and after the gimplification pass to a file. The +file name is made by appending .gimple to the source file name. + +
cfg
Dump the control flow graph of each function to a file. The file name is +made by appending .cfg to the source file name. + +
vcg
Dump the control flow graph of each function to a file in VCG format. The +file name is made by appending .vcg to the source file name. Note +that if the file contains more than one function, the generated file cannot +be used directly by VCG. You will need to cut and paste each function's +graph into its own separate file first. + +
ch
Dump each function after copying loop headers. The file name is made by +appending .ch to the source file name. + +
ssa
Dump SSA related information to a file. The file name is made by appending +.ssa to the source file name. + +
salias
Dump structure aliasing variable information to a file. This file name +is made by appending .salias to the source file name. + +
alias
Dump aliasing information for each function. The file name is made by +appending .alias to the source file name. + +
ccp
Dump each function after CCP. The file name is made by appending +.ccp to the source file name. + +
storeccp
Dump each function after STORE-CCP. The file name is made by appending +.storeccp to the source file name. + +
pre
Dump trees after partial redundancy elimination. The file name is made +by appending .pre to the source file name. + +
fre
Dump trees after full redundancy elimination. The file name is made +by appending .fre to the source file name. + +
copyprop
Dump trees after copy propagation. The file name is made +by appending .copyprop to the source file name. + +
store_copyprop
Dump trees after store copy-propagation. The file name is made +by appending .store_copyprop to the source file name. + +
dce
Dump each function after dead code elimination. The file name is made by +appending .dce to the source file name. + +
mudflap
Dump each function after adding mudflap instrumentation. The file name is +made by appending .mudflap to the source file name. + +
sra
Dump each function after performing scalar replacement of aggregates. The +file name is made by appending .sra to the source file name. + +
sink
Dump each function after performing code sinking. The file name is made +by appending .sink to the source file name. + +
dom
Dump each function after applying dominator tree optimizations. The file +name is made by appending .dom to the source file name. + +
dse
Dump each function after applying dead store elimination. The file +name is made by appending .dse to the source file name. + +
phiopt
Dump each function after optimizing PHI nodes into straightline code. The file +name is made by appending .phiopt to the source file name. + +
forwprop
Dump each function after forward propagating single use variables. The file +name is made by appending .forwprop to the source file name. + +
copyrename
Dump each function after applying the copy rename optimization. The file +name is made by appending .copyrename to the source file name. + +
nrv
Dump each function after applying the named return value optimization on +generic trees. The file name is made by appending .nrv to the source +file name. + +
vect
Dump each function after applying vectorization of loops. The file name is +made by appending .vect to the source file name. + +
vrp
Dump each function after Value Range Propagation (VRP). The file name +is made by appending .vrp to the source file name. + +
all
Enable all the available tree dumps with the flags provided in this option. +
+ +
-ftree-vectorizer-verbose=n
This option controls the amount of debugging output the vectorizer prints. +This information is written to standard error, unless +-fdump-tree-all or -fdump-tree-vect is specified, +in which case it is output to the usual dump listing file, .vect. +For n=0 no diagnostic information is reported. +If n=1 the vectorizer reports each loop that got vectorized, +and the total number of loops that got vectorized. +If n=2 the vectorizer also reports non-vectorized loops that passed +the first analysis phase (vect_analyze_loop_form) - i.e. countable, +inner-most, single-bb, single-entry/exit loops. This is the same verbosity +level that -fdump-tree-vect-stats uses. +Higher verbosity levels mean either more information dumped for each +reported loop, or same amount of information reported for more loops: +If n=3, alignment related information is added to the reports. +If n=4, data-references related information (e.g. memory dependences, +memory access-patterns) is added to the reports. +If n=5, the vectorizer reports also non-vectorized inner-most loops +that did not pass the first analysis phase (i.e., may not be countable, or +may have complicated control-flow). +If n=6, the vectorizer reports also non-vectorized nested loops. +For n=7, all the information the vectorizer generates during its +analysis and transformation is reported. This is the same verbosity level +that -fdump-tree-vect-details uses. + +
-frandom-seed=string
This option provides a seed that GCC uses when it would otherwise use +random numbers. It is used to generate certain symbol names +that have to be different in every compiled file. It is also used to +place unique stamps in coverage data files and the object files that +produce them. You can use the -frandom-seed option to produce +reproducibly identical object files. + +

The string should be different for every file you compile. + +

-fsched-verbose=n
On targets that use instruction scheduling, this option controls the +amount of debugging output the scheduler prints. This information is +written to standard error, unless -dS or -dR is +specified, in which case it is output to the usual dump +listing file, .sched or .sched2 respectively. However +for n greater than nine, the output is always printed to standard +error. + +

For n greater than zero, -fsched-verbose outputs the +same information as -dRS. For n greater than one, it +also output basic block probabilities, detailed ready list information +and unit/insn info. For n greater than two, it includes RTL +at abort point, control-flow and regions info. And for n over +four, -fsched-verbose also includes dependence info. + +

-save-temps
Store the usual “temporary” intermediate files permanently; place them +in the current directory and name them based on the source file. Thus, +compiling foo.c with -c -save-temps would produce files +foo.i and foo.s, as well as foo.o. This creates a +preprocessed foo.i output file even though the compiler now +normally uses an integrated preprocessor. + +

When used in combination with the -x command line option, +-save-temps is sensible enough to avoid over writing an +input source file with the same extension as an intermediate file. +The corresponding intermediate file may be obtained by renaming the +source file before using -save-temps. + +

-time
Report the CPU time taken by each subprocess in the compilation +sequence. For C source files, this is the compiler proper and assembler +(plus the linker if linking is done). The output looks like this: + +
          # cc1 0.12 0.01
+          # as 0.00 0.01
+     
+

The first number on each line is the “user time”, that is time spent +executing the program itself. The second number is “system time”, +time spent executing operating system routines on behalf of the program. +Both numbers are in seconds. + +

-fvar-tracking
Run variable tracking pass. It computes where variables are stored at each +position in code. Better debugging information is then generated +(if the debugging information format supports this information). + +

It is enabled by default when compiling with optimization (-Os, +-O, -O2, ...), debugging information (-g) and +the debug info format supports it. + +

-print-file-name=library
Print the full absolute name of the library file library that +would be used when linking—and don't do anything else. With this +option, GCC does not compile or link anything; it just prints the +file name. + +
-print-multi-directory
Print the directory name corresponding to the multilib selected by any +other switches present in the command line. This directory is supposed +to exist in GCC_EXEC_PREFIX. + +
-print-multi-lib
Print the mapping from multilib directory names to compiler switches +that enable them. The directory name is separated from the switches by +;, and each switch starts with an @ instead of the +-, without spaces between multiple switches. This is supposed to +ease shell-processing. + +
-print-prog-name=program
Like -print-file-name, but searches for a program such as cpp. + +
-print-libgcc-file-name
Same as -print-file-name=libgcc.a. + +

This is useful when you use -nostdlib or -nodefaultlibs +but you do want to link with libgcc.a. You can do + +

          gcc -nostdlib files... `gcc -print-libgcc-file-name`
+     
+
-print-search-dirs
Print the name of the configured installation directory and a list of +program and library directories gcc will search—and don't do anything else. + +

This is useful when gcc prints the error message +installation problem, cannot exec cpp0: No such file or directory. +To resolve this you either need to put cpp0 and the other compiler +components where gcc expects to find them, or you can set the environment +variable GCC_EXEC_PREFIX to the directory where you installed them. +Don't forget the trailing /. +See Environment Variables. + +

-print-sysroot-headers-suffix
Print the suffix added to the target sysroot when searching for +headers, or give an error if the compiler is not configured with such +a suffix—and don't do anything else. + +
-dumpmachine
Print the compiler's target machine (for example, +i686-pc-linux-gnu)—and don't do anything else. + +
-dumpversion
Print the compiler version (for example, 3.0)—and don't do +anything else. + +
-dumpspecs
Print the compiler's built-in specs—and don't do anything else. (This +is used when GCC itself is being built.) See Spec Files. + +
-feliminate-unused-debug-types
Normally, when producing DWARF2 output, GCC will emit debugging +information for all types declared in a compilation +unit, regardless of whether or not they are actually used +in that compilation unit. Sometimes this is useful, such as +if, in the debugger, you want to cast a value to a type that is +not actually used in your program (but is declared). More often, +however, this results in a significant amount of wasted space. +With this option, GCC will avoid producing debug symbol output +for types that are nowhere used in the source file being compiled. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Decimal-Float.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Decimal-Float.html new file mode 100644 index 0000000..03a1140 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Decimal-Float.html @@ -0,0 +1,92 @@ + + +Decimal Float - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Floating Types, +Up: C Extensions +



+
+ +

5.11 Decimal Floating Types

+ +

+As an extension, the GNU C compiler supports decimal floating types as +defined in the N1176 draft of ISO/IEC WDTR24732. Support for decimal +floating types in GCC will evolve as the draft technical report changes. +Calling conventions for any target might also change. Not all targets +support decimal floating types. + +

The decimal floating types are _Decimal32, _Decimal64, and +_Decimal128. They use a radix of ten, unlike the floating types +float, double, and long double whose radix is not +specified by the C standard but is usually two. + +

Support for decimal floating types includes the arithmetic operators +add, subtract, multiply, divide; unary arithmetic operators; +relational operators; equality operators; and conversions to and from +integer and other floating types. Use a suffix df or +DF in a literal constant of type _Decimal32, dd +or DD for _Decimal64, and dl or DL for +_Decimal128. + +

GCC support of decimal float as specified by the draft technical report +is incomplete: + +

    +
  • Translation time data type (TTDT) is not supported. + +
  • When the value of a decimal floating type cannot be represented in the +integer type to which it is being converted, the result is undefined +rather than the result value specified by the draft technical report. +
+ +

Types _Decimal32, _Decimal64, and _Decimal128 +are supported by the DWARF2 debug information format. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Declarators-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Declarators-implementation.html new file mode 100644 index 0000000..d4d4cdb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Declarators-implementation.html @@ -0,0 +1,66 @@ + + +Declarators implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.11 Declarators

+ +
    +
  • The maximum number of declarators that may modify an arithmetic, +structure or union type (C90 6.5.4). + +

    GCC is only limited by available memory. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Deprecated-Features.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Deprecated-Features.html new file mode 100644 index 0000000..1734107 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Deprecated-Features.html @@ -0,0 +1,117 @@ + + +Deprecated Features - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Java Exceptions, +Up: C++ Extensions +



+
+ +

6.11 Deprecated Features

+ +

In the past, the GNU C++ compiler was extended to experiment with new +features, at a time when the C++ language was still evolving. Now that +the C++ standard is complete, some of those features are superseded by +superior alternatives. Using the old features might cause a warning in +some cases that the feature will be dropped in the future. In other +cases, the feature might be gone already. + +

While the list below is not exhaustive, it documents some of the options +that are now deprecated: + +

+
-fexternal-templates
-falt-external-templates
These are two of the many ways for G++ to implement template +instantiation. See Template Instantiation. The C++ standard clearly +defines how template definitions have to be organized across +implementation units. G++ has an implicit instantiation mechanism that +should work just fine for standard-conforming code. + +
-fstrict-prototype
-fno-strict-prototype
Previously it was possible to use an empty prototype parameter list to +indicate an unspecified number of parameters (like C), rather than no +parameters, as C++ demands. This feature has been removed, except where +it is required for backwards compatibility See Backwards Compatibility. +
+ +

G++ allows a virtual function returning void * to be overridden +by one returning a different pointer type. This extension to the +covariant return type rules is now deprecated and will be removed from a +future version. + +

The G++ minimum and maximum operators (<? and >?) and +their compound forms (<?=) and >?=) have been deprecated +and are now removed from G++. Code using these operators should be +modified to use std::min and std::max instead. + +

The named return value extension has been deprecated, and is now +removed from G++. + +

The use of initializer lists with new expressions has been deprecated, +and is now removed from G++. + +

Floating and complex non-type template parameters have been deprecated, +and are now removed from G++. + +

The implicit typename extension has been deprecated and is now +removed from G++. + +

The use of default arguments in function pointers, function typedefs +and other places where they are not permitted by the standard is +deprecated and will be removed from a future version of G++. + +

G++ allows floating-point literals to appear in integral constant expressions, +e.g. enum E { e = int(2.2 * 3.7) } +This extension is deprecated and will be removed from a future version. + +

G++ allows static data members of const floating-point type to be declared +with an initializer in a class definition. The standard only allows +initializers for static members of const integral types and const +enumeration types so this extension has been deprecated and will be removed +from a future version. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Designated-Inits.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Designated-Inits.html new file mode 100644 index 0000000..28afa88 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Designated-Inits.html @@ -0,0 +1,161 @@ + + +Designated Inits - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Compound Literals, +Up: C Extensions +



+
+ +

5.23 Designated Initializers

+ +

+Standard C89 requires the elements of an initializer to appear in a fixed +order, the same as the order of the elements in the array or structure +being initialized. + +

In ISO C99 you can give the elements in any order, specifying the array +indices or structure field names they apply to, and GNU C allows this as +an extension in C89 mode as well. This extension is not +implemented in GNU C++. + +

To specify an array index, write +[index] = before the element value. For example, + +

     int a[6] = { [4] = 29, [2] = 15 };
+
+

is equivalent to + +

     int a[6] = { 0, 0, 15, 0, 29, 0 };
+
+

The index values must be constant expressions, even if the array being +initialized is automatic. + +

An alternative syntax for this which has been obsolete since GCC 2.5 but +GCC still accepts is to write [index] before the element +value, with no =. + +

To initialize a range of elements to the same value, write +[first ... last] = value. This is a GNU +extension. For example, + +

     int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
+
+

If the value in it has side-effects, the side-effects will happen only once, +not for each initialized field by the range initializer. + +

Note that the length of the array is the highest value specified +plus one. + +

In a structure initializer, specify the name of a field to initialize +with .fieldname = before the element value. For example, +given the following structure, + +

     struct point { int x, y; };
+
+

the following initialization + +

     struct point p = { .y = yvalue, .x = xvalue };
+
+

is equivalent to + +

     struct point p = { xvalue, yvalue };
+
+

Another syntax which has the same meaning, obsolete since GCC 2.5, is +fieldname:, as shown here: + +

     struct point p = { y: yvalue, x: xvalue };
+
+

The [index] or .fieldname is known as a +designator. You can also use a designator (or the obsolete colon +syntax) when initializing a union, to specify which element of the union +should be used. For example, + +

     union foo { int i; double d; };
+     
+     union foo f = { .d = 4 };
+
+

will convert 4 to a double to store it in the union using +the second element. By contrast, casting 4 to type union foo +would store it into the union as the integer i, since it is +an integer. (See Cast to Union.) + +

You can combine this technique of naming elements with ordinary C +initialization of successive elements. Each initializer element that +does not have a designator applies to the next consecutive element of the +array or structure. For example, + +

     int a[6] = { [1] = v1, v2, [4] = v4 };
+
+

is equivalent to + +

     int a[6] = { 0, v1, v2, 0, v4, 0 };
+
+

Labeling the elements of an array initializer is especially useful +when the indices are characters or belong to an enum type. +For example: + +

     int whitespace[256]
+       = { [' '] = 1, ['\t'] = 1, ['\h'] = 1,
+           ['\f'] = 1, ['\n'] = 1, ['\r'] = 1 };
+
+

You can also write a series of .fieldname and +[index] designators before an = to specify a +nested subobject to initialize; the list is taken relative to the +subobject corresponding to the closest surrounding brace pair. For +example, with the struct point declaration above: + +

     struct point ptarray[10] = { [2].y = yv2, [2].x = xv2, [0].x = xv0 };
+
+

If the same field is initialized multiple times, it will have value from +the last initialization. If any such overridden initialization has +side-effect, it is unspecified whether the side-effect happens or not. +Currently, GCC will discard them and issue a warning. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Diagnostic-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Diagnostic-Pragmas.html new file mode 100644 index 0000000..b06b8a6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Diagnostic-Pragmas.html @@ -0,0 +1,96 @@ + + +Diagnostic Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Weak Pragmas, +Up: Pragmas +



+
+ +

5.52.9 Diagnostic Pragmas

+ +

GCC allows the user to selectively enable or disable certain types of +diagnostics, and change the kind of the diagnostic. For example, a +project's policy might require that all sources compile with +-Werror but certain files might have exceptions allowing +specific types of warnings. Or, a project might selectively enable +diagnostics and treat them as errors depending on which preprocessor +macros are defined. + +

+
#pragma GCC diagnostic kind option
+Modifies the disposition of a diagnostic. Note that not all +diagnostics are modifiable; at the moment only warnings (normally +controlled by -W...) can be controlled, and not all of them. +Use -fdiagnostics-show-option to determine which diagnostics +are controllable and which option controls them. + +

kind is error to treat this diagnostic as an error, +warning to treat it like a warning (even if -Werror is +in effect), or ignored if the diagnostic is to be ignored. +option is a double quoted string which matches the command line +option. + +

          #pragma GCC diagnostic warning "-Wformat"
+          #pragma GCC diagnostic error "-Wformat"
+          #pragma GCC diagnostic ignored "-Wformat"
+     
+

Note that these pragmas override any command line options. Also, +while it is syntactically valid to put these pragmas anywhere in your +sources, the only supported location for them is before any data or +functions are defined. Doing otherwise may result in unpredictable +results depending on how the optimizer manages your sources. If the +same option is listed multiple times, the last one specified is the +one that is in effect. This pragma is not intended to be a general +purpose replacement for command line options, but for implementing +strict control over project policies. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directly_002dmapped-Integer-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directly_002dmapped-Integer-Functions.html new file mode 100644 index 0000000..348eb55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directly_002dmapped-Integer-Functions.html @@ -0,0 +1,93 @@ + + +Directly-mapped Integer Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +
5.50.5.2 Directly-mapped Integer Functions
+ +

The functions listed below map directly to FR-V I-type instructions. + +

Function prototype Example usage Assembly output +
sw1 __ADDSS (sw1, sw1) +c = __ADDSS (a, b) +ADDSS a,b,c +
sw1 __SCAN (sw1, sw1) +c = __SCAN (a, b) +SCAN a,b,c +
sw1 __SCUTSS (sw1) +b = __SCUTSS (a) +SCUTSS a,b +
sw1 __SLASS (sw1, sw1) +c = __SLASS (a, b) +SLASS a,b,c +
void __SMASS (sw1, sw1) +__SMASS (a, b) +SMASS a,b +
void __SMSSS (sw1, sw1) +__SMSSS (a, b) +SMSSS a,b +
void __SMU (sw1, sw1) +__SMU (a, b) +SMU a,b +
sw2 __SMUL (sw1, sw1) +c = __SMUL (a, b) +SMUL a,b,c +
sw1 __SUBSS (sw1, sw1) +c = __SUBSS (a, b) +SUBSS a,b,c +
uw2 __UMUL (uw1, uw1) +c = __UMUL (a, b) +UMUL a,b,c +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directly_002dmapped-Media-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directly_002dmapped-Media-Functions.html new file mode 100644 index 0000000..59e464a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directly_002dmapped-Media-Functions.html @@ -0,0 +1,327 @@ + + +Directly-mapped Media Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +
5.50.5.3 Directly-mapped Media Functions
+ +

The functions listed below map directly to FR-V M-type instructions. + +

Function prototype Example usage Assembly output +
uw1 __MABSHS (sw1) +b = __MABSHS (a) +MABSHS a,b +
void __MADDACCS (acc, acc) +__MADDACCS (b, a) +MADDACCS a,b +
sw1 __MADDHSS (sw1, sw1) +c = __MADDHSS (a, b) +MADDHSS a,b,c +
uw1 __MADDHUS (uw1, uw1) +c = __MADDHUS (a, b) +MADDHUS a,b,c +
uw1 __MAND (uw1, uw1) +c = __MAND (a, b) +MAND a,b,c +
void __MASACCS (acc, acc) +__MASACCS (b, a) +MASACCS a,b +
uw1 __MAVEH (uw1, uw1) +c = __MAVEH (a, b) +MAVEH a,b,c +
uw2 __MBTOH (uw1) +b = __MBTOH (a) +MBTOH a,b +
void __MBTOHE (uw1 *, uw1) +__MBTOHE (&b, a) +MBTOHE a,b +
void __MCLRACC (acc) +__MCLRACC (a) +MCLRACC a +
void __MCLRACCA (void) +__MCLRACCA () +MCLRACCA +
uw1 __Mcop1 (uw1, uw1) +c = __Mcop1 (a, b) +Mcop1 a,b,c +
uw1 __Mcop2 (uw1, uw1) +c = __Mcop2 (a, b) +Mcop2 a,b,c +
uw1 __MCPLHI (uw2, const) +c = __MCPLHI (a, b) +MCPLHI a,#b,c +
uw1 __MCPLI (uw2, const) +c = __MCPLI (a, b) +MCPLI a,#b,c +
void __MCPXIS (acc, sw1, sw1) +__MCPXIS (c, a, b) +MCPXIS a,b,c +
void __MCPXIU (acc, uw1, uw1) +__MCPXIU (c, a, b) +MCPXIU a,b,c +
void __MCPXRS (acc, sw1, sw1) +__MCPXRS (c, a, b) +MCPXRS a,b,c +
void __MCPXRU (acc, uw1, uw1) +__MCPXRU (c, a, b) +MCPXRU a,b,c +
uw1 __MCUT (acc, uw1) +c = __MCUT (a, b) +MCUT a,b,c +
uw1 __MCUTSS (acc, sw1) +c = __MCUTSS (a, b) +MCUTSS a,b,c +
void __MDADDACCS (acc, acc) +__MDADDACCS (b, a) +MDADDACCS a,b +
void __MDASACCS (acc, acc) +__MDASACCS (b, a) +MDASACCS a,b +
uw2 __MDCUTSSI (acc, const) +c = __MDCUTSSI (a, b) +MDCUTSSI a,#b,c +
uw2 __MDPACKH (uw2, uw2) +c = __MDPACKH (a, b) +MDPACKH a,b,c +
uw2 __MDROTLI (uw2, const) +c = __MDROTLI (a, b) +MDROTLI a,#b,c +
void __MDSUBACCS (acc, acc) +__MDSUBACCS (b, a) +MDSUBACCS a,b +
void __MDUNPACKH (uw1 *, uw2) +__MDUNPACKH (&b, a) +MDUNPACKH a,b +
uw2 __MEXPDHD (uw1, const) +c = __MEXPDHD (a, b) +MEXPDHD a,#b,c +
uw1 __MEXPDHW (uw1, const) +c = __MEXPDHW (a, b) +MEXPDHW a,#b,c +
uw1 __MHDSETH (uw1, const) +c = __MHDSETH (a, b) +MHDSETH a,#b,c +
sw1 __MHDSETS (const) +b = __MHDSETS (a) +MHDSETS #a,b +
uw1 __MHSETHIH (uw1, const) +b = __MHSETHIH (b, a) +MHSETHIH #a,b +
sw1 __MHSETHIS (sw1, const) +b = __MHSETHIS (b, a) +MHSETHIS #a,b +
uw1 __MHSETLOH (uw1, const) +b = __MHSETLOH (b, a) +MHSETLOH #a,b +
sw1 __MHSETLOS (sw1, const) +b = __MHSETLOS (b, a) +MHSETLOS #a,b +
uw1 __MHTOB (uw2) +b = __MHTOB (a) +MHTOB a,b +
void __MMACHS (acc, sw1, sw1) +__MMACHS (c, a, b) +MMACHS a,b,c +
void __MMACHU (acc, uw1, uw1) +__MMACHU (c, a, b) +MMACHU a,b,c +
void __MMRDHS (acc, sw1, sw1) +__MMRDHS (c, a, b) +MMRDHS a,b,c +
void __MMRDHU (acc, uw1, uw1) +__MMRDHU (c, a, b) +MMRDHU a,b,c +
void __MMULHS (acc, sw1, sw1) +__MMULHS (c, a, b) +MMULHS a,b,c +
void __MMULHU (acc, uw1, uw1) +__MMULHU (c, a, b) +MMULHU a,b,c +
void __MMULXHS (acc, sw1, sw1) +__MMULXHS (c, a, b) +MMULXHS a,b,c +
void __MMULXHU (acc, uw1, uw1) +__MMULXHU (c, a, b) +MMULXHU a,b,c +
uw1 __MNOT (uw1) +b = __MNOT (a) +MNOT a,b +
uw1 __MOR (uw1, uw1) +c = __MOR (a, b) +MOR a,b,c +
uw1 __MPACKH (uh, uh) +c = __MPACKH (a, b) +MPACKH a,b,c +
sw2 __MQADDHSS (sw2, sw2) +c = __MQADDHSS (a, b) +MQADDHSS a,b,c +
uw2 __MQADDHUS (uw2, uw2) +c = __MQADDHUS (a, b) +MQADDHUS a,b,c +
void __MQCPXIS (acc, sw2, sw2) +__MQCPXIS (c, a, b) +MQCPXIS a,b,c +
void __MQCPXIU (acc, uw2, uw2) +__MQCPXIU (c, a, b) +MQCPXIU a,b,c +
void __MQCPXRS (acc, sw2, sw2) +__MQCPXRS (c, a, b) +MQCPXRS a,b,c +
void __MQCPXRU (acc, uw2, uw2) +__MQCPXRU (c, a, b) +MQCPXRU a,b,c +
sw2 __MQLCLRHS (sw2, sw2) +c = __MQLCLRHS (a, b) +MQLCLRHS a,b,c +
sw2 __MQLMTHS (sw2, sw2) +c = __MQLMTHS (a, b) +MQLMTHS a,b,c +
void __MQMACHS (acc, sw2, sw2) +__MQMACHS (c, a, b) +MQMACHS a,b,c +
void __MQMACHU (acc, uw2, uw2) +__MQMACHU (c, a, b) +MQMACHU a,b,c +
void __MQMACXHS (acc, sw2, sw2) +__MQMACXHS (c, a, b) +MQMACXHS a,b,c +
void __MQMULHS (acc, sw2, sw2) +__MQMULHS (c, a, b) +MQMULHS a,b,c +
void __MQMULHU (acc, uw2, uw2) +__MQMULHU (c, a, b) +MQMULHU a,b,c +
void __MQMULXHS (acc, sw2, sw2) +__MQMULXHS (c, a, b) +MQMULXHS a,b,c +
void __MQMULXHU (acc, uw2, uw2) +__MQMULXHU (c, a, b) +MQMULXHU a,b,c +
sw2 __MQSATHS (sw2, sw2) +c = __MQSATHS (a, b) +MQSATHS a,b,c +
uw2 __MQSLLHI (uw2, int) +c = __MQSLLHI (a, b) +MQSLLHI a,b,c +
sw2 __MQSRAHI (sw2, int) +c = __MQSRAHI (a, b) +MQSRAHI a,b,c +
sw2 __MQSUBHSS (sw2, sw2) +c = __MQSUBHSS (a, b) +MQSUBHSS a,b,c +
uw2 __MQSUBHUS (uw2, uw2) +c = __MQSUBHUS (a, b) +MQSUBHUS a,b,c +
void __MQXMACHS (acc, sw2, sw2) +__MQXMACHS (c, a, b) +MQXMACHS a,b,c +
void __MQXMACXHS (acc, sw2, sw2) +__MQXMACXHS (c, a, b) +MQXMACXHS a,b,c +
uw1 __MRDACC (acc) +b = __MRDACC (a) +MRDACC a,b +
uw1 __MRDACCG (acc) +b = __MRDACCG (a) +MRDACCG a,b +
uw1 __MROTLI (uw1, const) +c = __MROTLI (a, b) +MROTLI a,#b,c +
uw1 __MROTRI (uw1, const) +c = __MROTRI (a, b) +MROTRI a,#b,c +
sw1 __MSATHS (sw1, sw1) +c = __MSATHS (a, b) +MSATHS a,b,c +
uw1 __MSATHU (uw1, uw1) +c = __MSATHU (a, b) +MSATHU a,b,c +
uw1 __MSLLHI (uw1, const) +c = __MSLLHI (a, b) +MSLLHI a,#b,c +
sw1 __MSRAHI (sw1, const) +c = __MSRAHI (a, b) +MSRAHI a,#b,c +
uw1 __MSRLHI (uw1, const) +c = __MSRLHI (a, b) +MSRLHI a,#b,c +
void __MSUBACCS (acc, acc) +__MSUBACCS (b, a) +MSUBACCS a,b +
sw1 __MSUBHSS (sw1, sw1) +c = __MSUBHSS (a, b) +MSUBHSS a,b,c +
uw1 __MSUBHUS (uw1, uw1) +c = __MSUBHUS (a, b) +MSUBHUS a,b,c +
void __MTRAP (void) +__MTRAP () +MTRAP +
uw2 __MUNPACKH (uw1) +b = __MUNPACKH (a) +MUNPACKH a,b +
uw1 __MWCUT (uw2, uw1) +c = __MWCUT (a, b) +MWCUT a,b,c +
void __MWTACC (acc, uw1) +__MWTACC (b, a) +MWTACC a,b +
void __MWTACCG (acc, uw1) +__MWTACCG (b, a) +MWTACCG a,b +
uw1 __MXOR (uw1, uw1) +c = __MXOR (a, b) +MXOR a,b,c +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directory-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directory-Options.html new file mode 100644 index 0000000..d09331f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Directory-Options.html @@ -0,0 +1,175 @@ + + +Directory Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Link Options, +Up: Invoking GCC +



+
+ +

3.14 Options for Directory Search

+ +

+These options specify directories to search for header files, for +libraries and for parts of the compiler: + +

+
-Idir
Add the directory dir to the head of the list of directories to be +searched for header files. This can be used to override a system header +file, substituting your own version, since these directories are +searched before the system header file directories. However, you should +not use this option to add directories that contain vendor-supplied +system header files (use -isystem for that). If you use more than +one -I option, the directories are scanned in left-to-right +order; the standard system directories come after. + +

If a standard system include directory, or a directory specified with +-isystem, is also specified with -I, the -I +option will be ignored. The directory will still be searched but as a +system directory at its normal position in the system include chain. +This is to ensure that GCC's procedure to fix buggy system headers and +the ordering for the include_next directive are not inadvertently changed. +If you really need to change the search order for system directories, +use the -nostdinc and/or -isystem options. + +

-iquotedir
Add the directory dir to the head of the list of directories to +be searched for header files only for the case of #include +"file"; they are not searched for #include <file>, +otherwise just like -I. + +
-Ldir
Add directory dir to the list of directories to be searched +for -l. + +
-Bprefix
This option specifies where to find the executables, libraries, +include files, and data files of the compiler itself. + +

The compiler driver program runs one or more of the subprograms +cpp, cc1, as and ld. It tries +prefix as a prefix for each program it tries to run, both with and +without machine/version/ (see Target Options). + +

For each subprogram to be run, the compiler driver first tries the +-B prefix, if any. If that name is not found, or if -B +was not specified, the driver tries two standard prefixes, which are +/usr/lib/gcc/ and /usr/local/lib/gcc/. If neither of +those results in a file name that is found, the unmodified program +name is searched for using the directories specified in your +PATH environment variable. + +

The compiler will check to see if the path provided by the -B +refers to a directory, and if necessary it will add a directory +separator character at the end of the path. + +

-B prefixes that effectively specify directory names also apply +to libraries in the linker, because the compiler translates these +options into -L options for the linker. They also apply to +includes files in the preprocessor, because the compiler translates these +options into -isystem options for the preprocessor. In this case, +the compiler appends include to the prefix. + +

The run-time support file libgcc.a can also be searched for using +the -B prefix, if needed. If it is not found there, the two +standard prefixes above are tried, and that is all. The file is left +out of the link if it is not found by those means. + +

Another way to specify a prefix much like the -B prefix is to use +the environment variable GCC_EXEC_PREFIX. See Environment Variables. + +

As a special kludge, if the path provided by -B is +[dir/]stageN/, where N is a number in the range 0 to +9, then it will be replaced by [dir/]include. This is to help +with boot-strapping the compiler. + +

-specs=file
Process file after the compiler reads in the standard specs +file, in order to override the defaults that the gcc driver +program uses when determining what switches to pass to cc1, +cc1plus, as, ld, etc. More than one +-specs=file can be specified on the command line, and they +are processed in order, from left to right. + +
--sysroot=dir
Use dir as the logical root directory for headers and libraries. +For example, if the compiler would normally search for headers in +/usr/include and libraries in /usr/lib, it will instead +search dir/usr/include and dir/usr/lib. + +

If you use both this option and the -isysroot option, then +the --sysroot option will apply to libraries, but the +-isysroot option will apply to header files. + +

The GNU linker (beginning with version 2.16) has the necessary support +for this option. If your linker does not support this option, the +header file aspect of --sysroot will still work, but the +library aspect will not. + +

-I-
This option has been deprecated. Please use -iquote instead for +-I directories before the -I- and remove the -I-. +Any directories you specify with -I options before the -I- +option are searched only for the case of #include "file"; +they are not searched for #include <file>. + +

If additional directories are specified with -I options after +the -I-, these directories are searched for all #include +directives. (Ordinarily all -I directories are used +this way.) + +

In addition, the -I- option inhibits the use of the current +directory (where the current input file came from) as the first search +directory for #include "file". There is no way to +override this effect of -I-. With -I. you can specify +searching the directory which was current when the compiler was +invoked. That is not exactly the same as what the preprocessor does +by default, but it is often satisfactory. + +

-I- does not inhibit the use of the standard system directories +for header files. Thus, -I- and -nostdinc are +independent. +

+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Disappointments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Disappointments.html new file mode 100644 index 0000000..61b43f5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Disappointments.html @@ -0,0 +1,145 @@ + + +Disappointments - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Standard Libraries, +Up: Trouble +



+
+ +

10.7 Disappointments and Misunderstandings

+ +

These problems are perhaps regrettable, but we don't know any practical +way around them. + +

    +
  • Certain local variables aren't recognized by debuggers when you compile +with optimization. + +

    This occurs because sometimes GCC optimizes the variable out of +existence. There is no way to tell the debugger how to compute the +value such a variable “would have had”, and it is not clear that would +be desirable anyway. So GCC simply does not mention the eliminated +variable when it writes debugging information. + +

    You have to expect a certain amount of disagreement between the +executable and your source code, when you use optimization. + +

  • Users often think it is a bug when GCC reports an error for code +like this: + +
              int foo (struct mumble *);
    +          
    +          struct mumble { ... };
    +          
    +          int foo (struct mumble *x)
    +          { ... }
    +     
    +

    This code really is erroneous, because the scope of struct +mumble in the prototype is limited to the argument list containing it. +It does not refer to the struct mumble defined with file scope +immediately below—they are two unrelated types with similar names in +different scopes. + +

    But in the definition of foo, the file-scope type is used +because that is available to be inherited. Thus, the definition and +the prototype do not match, and you get an error. + +

    This behavior may seem silly, but it's what the ISO standard specifies. +It is easy enough for you to make your code work by moving the +definition of struct mumble above the prototype. It's not worth +being incompatible with ISO C just to avoid an error for the example +shown above. + +

  • Accesses to bit-fields even in volatile objects works by accessing larger +objects, such as a byte or a word. You cannot rely on what size of +object is accessed in order to read or write the bit-field; it may even +vary for a given bit-field according to the precise usage. + +

    If you care about controlling the amount of memory that is accessed, use +volatile but do not use bit-fields. + +

  • GCC comes with shell scripts to fix certain known problems in system +header files. They install corrected copies of various header files in +a special directory where only GCC will normally look for them. The +scripts adapt to various systems by searching all the system header +files for the problem cases that we know about. + +

    If new system header files are installed, nothing automatically arranges +to update the corrected header files. They can be updated using the +mkheaders script installed in +libexecdir/gcc/target/version/install-tools/. + +

  • On 68000 and x86 systems, for instance, you can get paradoxical results +if you test the precise values of floating point numbers. For example, +you can find that a floating point value which is not a NaN is not equal +to itself. This results from the fact that the floating point registers +hold a few more bits of precision than fit in a double in memory. +Compiled code moves values between memory and floating point registers +at its convenience, and moving them into memory truncates them. + +

    You can partially avoid this problem by using the -ffloat-store +option (see Optimize Options). + +

  • On AIX and other platforms without weak symbol support, templates +need to be instantiated explicitly and symbols for static members +of templates will not be generated. + +
  • On AIX, GCC scans object files and library archives for static +constructors and destructors when linking an application before the +linker prunes unreferenced symbols. This is necessary to prevent the +AIX linker from mistakenly assuming that static constructor or +destructor are unused and removing them before the scanning can occur. +All static constructors and destructors found will be referenced even +though the modules in which they occur may not be used by the program. +This may lead to both increased executable size and unexpected symbol +references. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Dollar-Signs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Dollar-Signs.html new file mode 100644 index 0000000..8c593b2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Dollar-Signs.html @@ -0,0 +1,64 @@ + + +Dollar Signs - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: C++ Comments, +Up: C Extensions +



+
+ +

5.31 Dollar Signs in Identifier Names

+ +

+In GNU C, you may normally use dollar signs in identifier names. +This is because many traditional C implementations allow such identifiers. +However, dollar signs in identifiers are not supported on a few target +machines, typically because the target assembler does not allow them. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Empty-Structures.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Empty-Structures.html new file mode 100644 index 0000000..83eeb74 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Empty-Structures.html @@ -0,0 +1,68 @@ + + +Empty Structures - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Variable Length, +Up: C Extensions +



+
+ +

5.15 Structures With No Members

+ +

+GCC permits a C structure to have no members: + +

     struct empty {
+     };
+
+

The structure will have size zero. In C++, empty structures are part +of the language. G++ treats empty structures as if they had a single +member of type char. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Environment-Variables.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Environment-Variables.html new file mode 100644 index 0000000..2add380 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Environment-Variables.html @@ -0,0 +1,235 @@ + + +Environment Variables - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Code Gen Options, +Up: Invoking GCC +



+
+ +

3.19 Environment Variables Affecting GCC

+ +

+ +This section describes several environment variables that affect how GCC +operates. Some of them work by specifying directories or prefixes to use +when searching for various kinds of files. Some are used to specify other +aspects of the compilation environment. + +

Note that you can also specify places to search using options such as +-B, -I and -L (see Directory Options). These +take precedence over places specified using environment variables, which +in turn take precedence over those specified by the configuration of GCC. +See Controlling the Compilation Driver gcc (GNU Compiler Collection (GCC) Internals). + +

+
LANG
LC_CTYPE
+
LC_MESSAGES
+ + +
LC_ALL
+ + + +These environment variables control the way that GCC uses +localization information that allow GCC to work with different +national conventions. GCC inspects the locale categories +LC_CTYPE and LC_MESSAGES if it has been configured to do +so. These locale categories can be set to any value supported by your +installation. A typical value is en_GB.UTF-8 for English in the United +Kingdom encoded in UTF-8. + +

The LC_CTYPE environment variable specifies character +classification. GCC uses it to determine the character boundaries in +a string; this is needed for some multibyte encodings that contain quote +and escape characters that would otherwise be interpreted as a string +end or escape. + +

The LC_MESSAGES environment variable specifies the language to +use in diagnostic messages. + +

If the LC_ALL environment variable is set, it overrides the value +of LC_CTYPE and LC_MESSAGES; otherwise, LC_CTYPE +and LC_MESSAGES default to the value of the LANG +environment variable. If none of these variables are set, GCC +defaults to traditional C English behavior. + +

TMPDIR
If TMPDIR is set, it specifies the directory to use for temporary +files. GCC uses temporary files to hold the output of one stage of +compilation which is to be used as input to the next stage: for example, +the output of the preprocessor, which is the input to the compiler +proper. + +
GCC_EXEC_PREFIX
If GCC_EXEC_PREFIX is set, it specifies a prefix to use in the +names of the subprograms executed by the compiler. No slash is added +when this prefix is combined with the name of a subprogram, but you can +specify a prefix that ends with a slash if you wish. + +

If GCC_EXEC_PREFIX is not set, GCC will attempt to figure out +an appropriate prefix to use based on the pathname it was invoked with. + +

If GCC cannot find the subprogram using the specified prefix, it +tries looking in the usual places for the subprogram. + +

The default value of GCC_EXEC_PREFIX is +prefix/lib/gcc/ where prefix is the prefix to +the installed compiler. In many cases prefix is the value +of prefix when you ran the configure script. + +

Other prefixes specified with -B take precedence over this prefix. + +

This prefix is also used for finding files such as crt0.o that are +used for linking. + +

In addition, the prefix is used in an unusual way in finding the +directories to search for header files. For each of the standard +directories whose name normally begins with /usr/local/lib/gcc +(more precisely, with the value of GCC_INCLUDE_DIR), GCC tries +replacing that beginning with the specified prefix to produce an +alternate directory name. Thus, with -Bfoo/, GCC will search +foo/bar where it would normally search /usr/local/lib/bar. +These alternate directories are searched first; the standard directories +come next. If a standard directory begins with the configured +prefix then the value of prefix is replaced by +GCC_EXEC_PREFIX when looking for header files. + +

COMPILER_PATH
The value of COMPILER_PATH is a colon-separated list of +directories, much like PATH. GCC tries the directories thus +specified when searching for subprograms, if it can't find the +subprograms using GCC_EXEC_PREFIX. + +
LIBRARY_PATH
The value of LIBRARY_PATH is a colon-separated list of +directories, much like PATH. When configured as a native compiler, +GCC tries the directories thus specified when searching for special +linker files, if it can't find them using GCC_EXEC_PREFIX. Linking +using GCC also uses these directories when searching for ordinary +libraries for the -l option (but directories specified with +-L come first). + +
LANG
This variable is used to pass locale information to the compiler. One way in +which this information is used is to determine the character set to be used +when character literals, string literals and comments are parsed in C and C++. +When the compiler is configured to allow multibyte characters, +the following values for LANG are recognized: + +
+
C-JIS
Recognize JIS characters. +
C-SJIS
Recognize SJIS characters. +
C-EUCJP
Recognize EUCJP characters. +
+ +

If LANG is not defined, or if it has some other value, then the +compiler will use mblen and mbtowc as defined by the default locale to +recognize and translate multibyte characters. +

+ +

Some additional environments variables affect the behavior of the +preprocessor. + + + + + + + + + + +

+
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
+ +Each variable's value is a list of directories separated by a special +character, much like PATH, in which to look for header files. +The special character, PATH_SEPARATOR, is target-dependent and +determined at GCC build time. For Microsoft Windows-based targets it is a +semicolon, and for almost all other targets it is a colon. + +

CPATH specifies a list of directories to be searched as if +specified with -I, but after any paths given with -I +options on the command line. This environment variable is used +regardless of which language is being preprocessed. + +

The remaining environment variables apply only when preprocessing the +particular language indicated. Each specifies a list of directories +to be searched as if specified with -isystem, but after any +paths given with -isystem options on the command line. + +

In all these variables, an empty element instructs the compiler to +search its current working directory. Empty elements can appear at the +beginning or end of a path. For instance, if the value of +CPATH is :/special/include, that has the same +effect as -I. -I/special/include. + + + +

DEPENDENCIES_OUTPUT
If this variable is set, its value specifies how to output +dependencies for Make based on the non-system header files processed +by the compiler. System header files are ignored in the dependency +output. + +

The value of DEPENDENCIES_OUTPUT can be just a file name, in +which case the Make rules are written to that file, guessing the target +name from the source file name. Or the value can have the form +file target, in which case the rules are written to +file file using target as the target name. + +

In other words, this environment variable is equivalent to combining +the options -MM and -MF +(see Preprocessor Options), +with an optional -MT switch too. + +

SUNPRO_DEPENDENCIES
This variable is the same as DEPENDENCIES_OUTPUT (see above), +except that system header files are not ignored, so it implies +-M rather than -MM. However, the dependence on the +main input file is omitted. +See Preprocessor Options. +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Environment-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Environment-implementation.html new file mode 100644 index 0000000..a9996e5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Environment-implementation.html @@ -0,0 +1,69 @@ + + +Environment implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

4.2 Environment

+ +

The behavior of most of these points are dependent on the implementation +of the C library, and are not defined by GCC itself. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Escaped-Newlines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Escaped-Newlines.html new file mode 100644 index 0000000..5493cd2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Escaped-Newlines.html @@ -0,0 +1,70 @@ + + +Escaped Newlines - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Variadic Macros, +Up: C Extensions +



+
+ +

5.18 Slightly Looser Rules for Escaped Newlines

+ +

+Recently, the preprocessor has relaxed its treatment of escaped +newlines. Previously, the newline had to immediately follow a +backslash. The current implementation allows whitespace in the form +of spaces, horizontal and vertical tabs, and form feeds between the +backslash and the subsequent newline. The preprocessor issues a +warning, but treats it as a valid escaped newline and combines the two +lines to form a single logical line. This works within comments and +tokens, as well as between tokens. Comments are not treated as +whitespace for the purposes of this relaxation, since they have not +yet been replaced with spaces. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Example-of-asm-with-clobbered-asm-reg.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Example-of-asm-with-clobbered-asm-reg.html new file mode 100644 index 0000000..6e11a56 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Example-of-asm-with-clobbered-asm-reg.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Executing-code-before-main.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Executing-code-before-main.html new file mode 100644 index 0000000..1ff7a39 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Executing-code-before-main.html @@ -0,0 +1,131 @@ + + +Executing code before main - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Objective-C, +Up: Objective-C +



+
+ +

7.1 +load: Executing code before main

+ +

The GNU Objective-C runtime provides a way that allows you to execute +code before the execution of the program enters the main +function. The code is executed on a per-class and a per-category basis, +through a special class method +load. + +

This facility is very useful if you want to initialize global variables +which can be accessed by the program directly, without sending a message +to the class first. The usual way to initialize global variables, in the ++initialize method, might not be useful because ++initialize is only called when the first message is sent to a +class object, which in some cases could be too late. + +

Suppose for example you have a FileStream class that declares +Stdin, Stdout and Stderr as global variables, like +below: + +

     
+     FileStream *Stdin = nil;
+     FileStream *Stdout = nil;
+     FileStream *Stderr = nil;
+     
+     @implementation FileStream
+     
+     + (void)initialize
+     {
+         Stdin = [[FileStream new] initWithFd:0];
+         Stdout = [[FileStream new] initWithFd:1];
+         Stderr = [[FileStream new] initWithFd:2];
+     }
+     
+     /* Other methods here */
+     @end
+     
+
+

In this example, the initialization of Stdin, Stdout and +Stderr in +initialize occurs too late. The programmer can +send a message to one of these objects before the variables are actually +initialized, thus sending messages to the nil object. The ++initialize method which actually initializes the global +variables is not invoked until the first message is sent to the class +object. The solution would require these variables to be initialized +just before entering main. + +

The correct solution of the above problem is to use the +load +method instead of +initialize: + +

     
+     @implementation FileStream
+     
+     + (void)load
+     {
+         Stdin = [[FileStream new] initWithFd:0];
+         Stdout = [[FileStream new] initWithFd:1];
+         Stderr = [[FileStream new] initWithFd:2];
+     }
+     
+     /* Other methods here */
+     @end
+     
+
+

The +load is a method that is not overridden by categories. If a +class and a category of it both implement +load, both methods are +invoked. This allows some additional initializations to be performed in +a category. + +

This mechanism is not intended to be a replacement for +initialize. +You should be aware of its limitations when you decide to use it +instead of +initialize. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Explicit-Reg-Vars.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Explicit-Reg-Vars.html new file mode 100644 index 0000000..721df00 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Explicit-Reg-Vars.html @@ -0,0 +1,90 @@ + + +Explicit Reg Vars - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Asm Labels, +Up: C Extensions +



+
+ +

5.40 Variables in Specified Registers

+ +

+GNU C allows you to put a few global variables into specified hardware +registers. You can also specify the register in which an ordinary +register variable should be allocated. + +

    +
  • Global register variables reserve registers throughout the program. +This may be useful in programs such as programming language +interpreters which have a couple of global variables that are accessed +very often. + +
  • Local register variables in specific registers do not reserve the +registers, except at the point where they are used as input or output +operands in an asm statement and the asm statement itself is +not deleted. The compiler's data flow analysis is capable of determining +where the specified registers contain live values, and where they are +available for other uses. Stores into local register variables may be deleted +when they appear to be dead according to dataflow analysis. References +to local register variables may be deleted or moved or simplified. + +

    These local variables are sometimes convenient for use with the extended +asm feature (see Extended Asm), if you want to write one +output of the assembler instruction directly into a particular register. +(This will work provided the register you specify fits the constraints +specified for that operand in the asm.) +

+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Extended-Asm.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Extended-Asm.html new file mode 100644 index 0000000..65046e8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Extended-Asm.html @@ -0,0 +1,489 @@ + + +Extended Asm - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Inline, +Up: C Extensions +



+
+ +

5.37 Assembler Instructions with C Expression Operands

+ +

+In an assembler instruction using asm, you can specify the +operands of the instruction using C expressions. This means you need not +guess which registers or memory locations will contain the data you want +to use. + +

You must specify an assembler instruction template much like what +appears in a machine description, plus an operand constraint string for +each operand. + +

For example, here is how to use the 68881's fsinx instruction: + +

     asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
+
+

Here angle is the C expression for the input operand while +result is that of the output operand. Each has "f" as its +operand constraint, saying that a floating point register is required. +The = in =f indicates that the operand is an output; all +output operands' constraints must use =. The constraints use the +same language used in the machine description (see Constraints). + +

Each operand is described by an operand-constraint string followed by +the C expression in parentheses. A colon separates the assembler +template from the first output operand and another separates the last +output operand from the first input, if any. Commas separate the +operands within each group. The total number of operands is currently +limited to 30; this limitation may be lifted in some future version of +GCC. + +

If there are no output operands but there are input operands, you must +place two consecutive colons surrounding the place where the output +operands would go. + +

As of GCC version 3.1, it is also possible to specify input and output +operands using symbolic names which can be referenced within the +assembler code. These names are specified inside square brackets +preceding the constraint string, and can be referenced inside the +assembler code using %[name] instead of a percentage sign +followed by the operand number. Using named operands the above example +could look like: + +

     asm ("fsinx %[angle],%[output]"
+          : [output] "=f" (result)
+          : [angle] "f" (angle));
+
+

Note that the symbolic operand names have no relation whatsoever to +other C identifiers. You may use any name you like, even those of +existing C symbols, but you must ensure that no two operands within the same +assembler construct use the same symbolic name. + +

Output operand expressions must be lvalues; the compiler can check this. +The input operands need not be lvalues. The compiler cannot check +whether the operands have data types that are reasonable for the +instruction being executed. It does not parse the assembler instruction +template and does not know what it means or even whether it is valid +assembler input. The extended asm feature is most often used for +machine instructions the compiler itself does not know exist. If +the output expression cannot be directly addressed (for example, it is a +bit-field), your constraint must allow a register. In that case, GCC +will use the register as the output of the asm, and then store +that register into the output. + +

The ordinary output operands must be write-only; GCC will assume that +the values in these operands before the instruction are dead and need +not be generated. Extended asm supports input-output or read-write +operands. Use the constraint character + to indicate such an +operand and list it with the output operands. You should only use +read-write operands when the constraints for the operand (or the +operand in which only some of the bits are to be changed) allow a +register. + +

You may, as an alternative, logically split its function into two +separate operands, one input operand and one write-only output +operand. The connection between them is expressed by constraints +which say they need to be in the same location when the instruction +executes. You can use the same C expression for both operands, or +different expressions. For example, here we write the (fictitious) +combine instruction with bar as its read-only source +operand and foo as its read-write destination: + +

     asm ("combine %2,%0" : "=r" (foo) : "0" (foo), "g" (bar));
+
+

The constraint "0" for operand 1 says that it must occupy the +same location as operand 0. A number in constraint is allowed only in +an input operand and it must refer to an output operand. + +

Only a number in the constraint can guarantee that one operand will be in +the same place as another. The mere fact that foo is the value +of both operands is not enough to guarantee that they will be in the +same place in the generated assembler code. The following would not +work reliably: + +

     asm ("combine %2,%0" : "=r" (foo) : "r" (foo), "g" (bar));
+
+

Various optimizations or reloading could cause operands 0 and 1 to be in +different registers; GCC knows no reason not to do so. For example, the +compiler might find a copy of the value of foo in one register and +use it for operand 1, but generate the output operand 0 in a different +register (copying it afterward to foo's own address). Of course, +since the register for operand 1 is not even mentioned in the assembler +code, the result will not work, but GCC can't tell that. + +

As of GCC version 3.1, one may write [name] instead of +the operand number for a matching constraint. For example: + +

     asm ("cmoveq %1,%2,%[result]"
+          : [result] "=r"(result)
+          : "r" (test), "r"(new), "[result]"(old));
+
+

Sometimes you need to make an asm operand be a specific register, +but there's no matching constraint letter for that register by +itself. To force the operand into that register, use a local variable +for the operand and specify the register in the variable declaration. +See Explicit Reg Vars. Then for the asm operand, use any +register constraint letter that matches the register: + +

     register int *p1 asm ("r0") = ...;
+     register int *p2 asm ("r1") = ...;
+     register int *result asm ("r0");
+     asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
+
+

+In the above example, beware that a register that is call-clobbered by +the target ABI will be overwritten by any function call in the +assignment, including library calls for arithmetic operators. +Assuming it is a call-clobbered register, this may happen to r0 +above by the assignment to p2. If you have to use such a +register, use temporary variables for expressions between the register +assignment and use: + +

     int t1 = ...;
+     register int *p1 asm ("r0") = ...;
+     register int *p2 asm ("r1") = t1;
+     register int *result asm ("r0");
+     asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
+
+

Some instructions clobber specific hard registers. To describe this, +write a third colon after the input operands, followed by the names of +the clobbered hard registers (given as strings). Here is a realistic +example for the VAX: + +

     asm volatile ("movc3 %0,%1,%2"
+                   : /* no outputs */
+                   : "g" (from), "g" (to), "g" (count)
+                   : "r0", "r1", "r2", "r3", "r4", "r5");
+
+

You may not write a clobber description in a way that overlaps with an +input or output operand. For example, you may not have an operand +describing a register class with one member if you mention that register +in the clobber list. Variables declared to live in specific registers +(see Explicit Reg Vars), and used as asm input or output operands must +have no part mentioned in the clobber description. +There is no way for you to specify that an input +operand is modified without also specifying it as an output +operand. Note that if all the output operands you specify are for this +purpose (and hence unused), you will then also need to specify +volatile for the asm construct, as described below, to +prevent GCC from deleting the asm statement as unused. + +

If you refer to a particular hardware register from the assembler code, +you will probably have to list the register after the third colon to +tell the compiler the register's value is modified. In some assemblers, +the register names begin with %; to produce one % in the +assembler code, you must write %% in the input. + +

If your assembler instruction can alter the condition code register, add +cc to the list of clobbered registers. GCC on some machines +represents the condition codes as a specific hardware register; +cc serves to name this register. On other machines, the +condition code is handled differently, and specifying cc has no +effect. But it is valid no matter what the machine. + +

If your assembler instructions access memory in an unpredictable +fashion, add memory to the list of clobbered registers. This +will cause GCC to not keep memory values cached in registers across the +assembler instruction and not optimize stores or loads to that memory. +You will also want to add the volatile keyword if the memory +affected is not listed in the inputs or outputs of the asm, as +the memory clobber does not count as a side-effect of the +asm. If you know how large the accessed memory is, you can add +it as input or output but if this is not known, you should add +memory. As an example, if you access ten bytes of a string, you +can use a memory input like: + +

     {"m"( ({ struct { char x[10]; } *p = (void *)ptr ; *p; }) )}.
+
+

Note that in the following example the memory input is necessary, +otherwise GCC might optimize the store to x away: +

     int foo ()
+     {
+       int x = 42;
+       int *y = &x;
+       int result;
+       asm ("magic stuff accessing an 'int' pointed to by '%1'"
+             "=&d" (r) : "a" (y), "m" (*y));
+       return result;
+     }
+
+

You can put multiple assembler instructions together in a single +asm template, separated by the characters normally used in assembly +code for the system. A combination that works in most places is a newline +to break the line, plus a tab character to move to the instruction field +(written as \n\t). Sometimes semicolons can be used, if the +assembler allows semicolons as a line-breaking character. Note that some +assembler dialects use semicolons to start a comment. +The input operands are guaranteed not to use any of the clobbered +registers, and neither will the output operands' addresses, so you can +read and write the clobbered registers as many times as you like. Here +is an example of multiple instructions in a template; it assumes the +subroutine _foo accepts arguments in registers 9 and 10: + +

     asm ("movl %0,r9\n\tmovl %1,r10\n\tcall _foo"
+          : /* no outputs */
+          : "g" (from), "g" (to)
+          : "r9", "r10");
+
+

Unless an output operand has the & constraint modifier, GCC +may allocate it in the same register as an unrelated input operand, on +the assumption the inputs are consumed before the outputs are produced. +This assumption may be false if the assembler code actually consists of +more than one instruction. In such a case, use & for each output +operand that may not overlap an input. See Modifiers. + +

If you want to test the condition code produced by an assembler +instruction, you must include a branch and a label in the asm +construct, as follows: + +

     asm ("clr %0\n\tfrob %1\n\tbeq 0f\n\tmov #1,%0\n0:"
+          : "g" (result)
+          : "g" (input));
+
+

This assumes your assembler supports local labels, as the GNU assembler +and most Unix assemblers do. + +

Speaking of labels, jumps from one asm to another are not +supported. The compiler's optimizers do not know about these jumps, and +therefore they cannot take account of them when deciding how to +optimize. + +

Usually the most convenient way to use these asm instructions is to +encapsulate them in macros that look like functions. For example, + +

     #define sin(x)       \
+     ({ double __value, __arg = (x);   \
+        asm ("fsinx %1,%0": "=f" (__value): "f" (__arg));  \
+        __value; })
+
+

Here the variable __arg is used to make sure that the instruction +operates on a proper double value, and to accept only those +arguments x which can convert automatically to a double. + +

Another way to make sure the instruction operates on the correct data +type is to use a cast in the asm. This is different from using a +variable __arg in that it converts more different types. For +example, if the desired type were int, casting the argument to +int would accept a pointer with no complaint, while assigning the +argument to an int variable named __arg would warn about +using a pointer unless the caller explicitly casts it. + +

If an asm has output operands, GCC assumes for optimization +purposes the instruction has no side effects except to change the output +operands. This does not mean instructions with a side effect cannot be +used, but you must be careful, because the compiler may eliminate them +if the output operands aren't used, or move them out of loops, or +replace two with one if they constitute a common subexpression. Also, +if your instruction does have a side effect on a variable that otherwise +appears not to change, the old value of the variable may be reused later +if it happens to be found in a register. + +

You can prevent an asm instruction from being deleted +by writing the keyword volatile after +the asm. For example: + +

     #define get_and_set_priority(new)              \
+     ({ int __old;                                  \
+        asm volatile ("get_and_set_priority %0, %1" \
+                      : "=g" (__old) : "g" (new));  \
+        __old; })
+
+

The volatile keyword indicates that the instruction has +important side-effects. GCC will not delete a volatile asm if +it is reachable. (The instruction can still be deleted if GCC can +prove that control-flow will never reach the location of the +instruction.) Note that even a volatile asm instruction +can be moved relative to other code, including across jump +instructions. For example, on many targets there is a system +register which can be set to control the rounding mode of +floating point operations. You might try +setting it with a volatile asm, like this PowerPC example: + +

            asm volatile("mtfsf 255,%0" : : "f" (fpenv));
+            sum = x + y;
+
+

This will not work reliably, as the compiler may move the addition back +before the volatile asm. To make it work you need to add an +artificial dependency to the asm referencing a variable in the code +you don't want moved, for example: + +

         asm volatile ("mtfsf 255,%1" : "=X"(sum): "f"(fpenv));
+         sum = x + y;
+
+

Similarly, you can't expect a +sequence of volatile asm instructions to remain perfectly +consecutive. If you want consecutive output, use a single asm. +Also, GCC will perform some optimizations across a volatile asm +instruction; GCC does not “forget everything” when it encounters +a volatile asm instruction the way some other compilers do. + +

An asm instruction without any output operands will be treated +identically to a volatile asm instruction. + +

It is a natural idea to look for a way to give access to the condition +code left by the assembler instruction. However, when we attempted to +implement this, we found no way to make it work reliably. The problem +is that output operands might need reloading, which would result in +additional following “store” instructions. On most machines, these +instructions would alter the condition code before there was time to +test it. This problem doesn't arise for ordinary “test” and +“compare” instructions because they don't have any output operands. + +

For reasons similar to those described above, it is not possible to give +an assembler instruction access to the condition code left by previous +instructions. + +

If you are writing a header file that should be includable in ISO C +programs, write __asm__ instead of asm. See Alternate Keywords. + +

5.37.1 Size of an asm

+ +

Some targets require that GCC track the size of each instruction used in +order to generate correct code. Because the final length of an +asm is only known by the assembler, GCC must make an estimate as +to how big it will be. The estimate is formed by counting the number of +statements in the pattern of the asm and multiplying that by the +length of the longest instruction on that processor. Statements in the +asm are identified by newline characters and whatever statement +separator characters are supported by the assembler; on most processors +this is the `;' character. + +

Normally, GCC's estimate is perfectly adequate to ensure that correct +code is generated, but it is possible to confuse the compiler if you use +pseudo instructions or assembler macros that expand into multiple real +instructions or if you use assembler directives that expand to more +space in the object file than would be needed for a single instruction. +If this happens then the assembler will produce a diagnostic saying that +a label is unreachable. + +

5.37.2 i386 floating point asm operands

+ +

There are several rules on the usage of stack-like regs in +asm_operands insns. These rules apply only to the operands that are +stack-like regs: + +

    +
  1. Given a set of input regs that die in an asm_operands, it is +necessary to know which are implicitly popped by the asm, and +which must be explicitly popped by gcc. + +

    An input reg that is implicitly popped by the asm must be +explicitly clobbered, unless it is constrained to match an +output operand. + +

  2. For any input reg that is implicitly popped by an asm, it is +necessary to know how to adjust the stack to compensate for the pop. +If any non-popped input is closer to the top of the reg-stack than +the implicitly popped reg, it would not be possible to know what the +stack looked like—it's not clear how the rest of the stack “slides +up”. + +

    All implicitly popped input regs must be closer to the top of +the reg-stack than any input that is not implicitly popped. + +

    It is possible that if an input dies in an insn, reload might +use the input reg for an output reload. Consider this example: + +

              asm ("foo" : "=t" (a) : "f" (b));
    +     
    +

    This asm says that input B is not popped by the asm, and that +the asm pushes a result onto the reg-stack, i.e., the stack is one +deeper after the asm than it was before. But, it is possible that +reload will think that it can use the same reg for both the input and +the output, if input B dies in this insn. + +

    If any input operand uses the f constraint, all output reg +constraints must use the & earlyclobber. + +

    The asm above would be written as + +

              asm ("foo" : "=&t" (a) : "f" (b));
    +     
    +
  3. Some operands need to be in particular places on the stack. All +output operands fall in this category—there is no other way to +know which regs the outputs appear in unless the user indicates +this in the constraints. + +

    Output operands must specifically indicate which reg an output +appears in after an asm. =f is not allowed: the operand +constraints must select a class with a single reg. + +

  4. Output operands may not be “inserted” between existing stack regs. +Since no 387 opcode uses a read/write operand, all output operands +are dead before the asm_operands, and are pushed by the asm_operands. +It makes no sense to push anywhere but the top of the reg-stack. + +

    Output operands must start at the top of the reg-stack: output +operands may not “skip” a reg. + +

  5. Some asm statements may need extra stack space for internal +calculations. This can be guaranteed by clobbering stack registers +unrelated to the inputs and outputs. + +
+ +

Here are a couple of reasonable asms to want to write. This asm +takes one input, which is internally popped, and produces two outputs. + +

     asm ("fsincos" : "=t" (cos), "=u" (sin) : "0" (inp));
+
+

This asm takes two inputs, which are popped by the fyl2xp1 opcode, +and replaces them with one output. The user must code the st(1) +clobber for reg-stack.c to know that fyl2xp1 pops both inputs. + +

     asm ("fyl2xp1" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
+
+ + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/FRV-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/FRV-Options.html new file mode 100644 index 0000000..d670a71 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/FRV-Options.html @@ -0,0 +1,273 @@ + + +FRV Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: DEC Alpha/VMS Options, +Up: Submodel Options +



+
+ +

3.17.10 FRV Options

+ +

+

+
-mgpr-32
+Only use the first 32 general purpose registers. + +
-mgpr-64
+Use all 64 general purpose registers. + +
-mfpr-32
+Use only the first 32 floating point registers. + +
-mfpr-64
+Use all 64 floating point registers + +
-mhard-float
+Use hardware instructions for floating point operations. + +
-msoft-float
+Use library routines for floating point operations. + +
-malloc-cc
+Dynamically allocate condition code registers. + +
-mfixed-cc
+Do not try to dynamically allocate condition code registers, only +use icc0 and fcc0. + +
-mdword
+Change ABI to use double word insns. + +
-mno-dword
+Do not use double word instructions. + +
-mdouble
+Use floating point double instructions. + +
-mno-double
+Do not use floating point double instructions. + +
-mmedia
+Use media instructions. + +
-mno-media
+Do not use media instructions. + +
-mmuladd
+Use multiply and add/subtract instructions. + +
-mno-muladd
+Do not use multiply and add/subtract instructions. + +
-mfdpic
+Select the FDPIC ABI, that uses function descriptors to represent +pointers to functions. Without any PIC/PIE-related options, it +implies -fPIE. With -fpic or -fpie, it +assumes GOT entries and small data are within a 12-bit range from the +GOT base address; with -fPIC or -fPIE, GOT offsets +are computed with 32 bits. +With a bfin-elf target, this option implies -msim. + +
-minline-plt
+Enable inlining of PLT entries in function calls to functions that are +not known to bind locally. It has no effect without -mfdpic. +It's enabled by default if optimizing for speed and compiling for +shared libraries (i.e., -fPIC or -fpic), or when an +optimization option such as -O3 or above is present in the +command line. + +
-mTLS
+Assume a large TLS segment when generating thread-local code. + +
-mtls
+Do not assume a large TLS segment when generating thread-local code. + +
-mgprel-ro
+Enable the use of GPREL relocations in the FDPIC ABI for data +that is known to be in read-only sections. It's enabled by default, +except for -fpic or -fpie: even though it may help +make the global offset table smaller, it trades 1 instruction for 4. +With -fPIC or -fPIE, it trades 3 instructions for 4, +one of which may be shared by multiple symbols, and it avoids the need +for a GOT entry for the referenced symbol, so it's more likely to be a +win. If it is not, -mno-gprel-ro can be used to disable it. + +
-multilib-library-pic
+Link with the (library, not FD) pic libraries. It's implied by +-mlibrary-pic, as well as by -fPIC and +-fpic without -mfdpic. You should never have to use +it explicitly. + +
-mlinked-fp
+Follow the EABI requirement of always creating a frame pointer whenever +a stack frame is allocated. This option is enabled by default and can +be disabled with -mno-linked-fp. + +
-mlong-calls
+Use indirect addressing to call functions outside the current +compilation unit. This allows the functions to be placed anywhere +within the 32-bit address space. + +
-malign-labels
+Try to align labels to an 8-byte boundary by inserting nops into the +previous packet. This option only has an effect when VLIW packing +is enabled. It doesn't create new packets; it merely adds nops to +existing ones. + +
-mlibrary-pic
+Generate position-independent EABI code. + +
-macc-4
+Use only the first four media accumulator registers. + +
-macc-8
+Use all eight media accumulator registers. + +
-mpack
+Pack VLIW instructions. + +
-mno-pack
+Do not pack VLIW instructions. + +
-mno-eflags
+Do not mark ABI switches in e_flags. + +
-mcond-move
+Enable the use of conditional-move instructions (default). + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mno-cond-move
+Disable the use of conditional-move instructions. + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mscc
+Enable the use of conditional set instructions (default). + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mno-scc
+Disable the use of conditional set instructions. + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mcond-exec
+Enable the use of conditional execution (default). + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mno-cond-exec
+Disable the use of conditional execution. + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mvliw-branch
+Run a pass to pack branches into VLIW instructions (default). + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mno-vliw-branch
+Do not run a pass to pack branches into VLIW instructions. + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mmulti-cond-exec
+Enable optimization of && and || in conditional execution +(default). + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mno-multi-cond-exec
+Disable optimization of && and || in conditional execution. + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mnested-cond-exec
+Enable nested conditional execution optimizations (default). + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-mno-nested-cond-exec
+Disable nested conditional execution optimizations. + +

This switch is mainly for debugging the compiler and will likely be removed +in a future version. + +

-moptimize-membar
+This switch removes redundant membar instructions from the +compiler generated code. It is enabled by default. + +
-mno-optimize-membar
+This switch disables the automatic removal of redundant membar +instructions from the generated code. + +
-mtomcat-stats
+Cause gas to print out tomcat statistics. + +
-mcpu=cpu
+Select the processor type for which to generate code. Possible values are +frv, fr550, tomcat, fr500, fr450, +fr405, fr400, fr300 and simple. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/FR_002dV-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/FR_002dV-Built_002din-Functions.html new file mode 100644 index 0000000..3a86d8f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/FR_002dV-Built_002din-Functions.html @@ -0,0 +1,77 @@ + + +FR-V Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

5.50.5 FR-V Built-in Functions

+ +

GCC provides many FR-V-specific built-in functions. In general, +these functions are intended to be compatible with those described +by FR-V Family, Softune C/C++ Compiler Manual (V6), Fujitsu +Semiconductor. The two exceptions are __MDUNPACKH and +__MBTOHE, the gcc forms of which pass 128-bit values by +pointer rather than by value. + +

Most of the functions are named after specific FR-V instructions. +Such functions are said to be “directly mapped” and are summarized +here in tabular form. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Fixed-Headers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Fixed-Headers.html new file mode 100644 index 0000000..7fb8658 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Fixed-Headers.html @@ -0,0 +1,90 @@ + + +Fixed Headers - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Incompatibilities, +Up: Trouble +



+
+ +

10.5 Fixed Header Files

+ +

GCC needs to install corrected versions of some system header files. +This is because most target systems have some header files that won't +work with GCC unless they are changed. Some have bugs, some are +incompatible with ISO C, and some depend on special features of other +compilers. + +

Installing GCC automatically creates and installs the fixed header +files, by running a program called fixincludes. Normally, you +don't need to pay attention to this. But there are cases where it +doesn't do the right thing automatically. + +

    +
  • If you update the system's header files, such as by installing a new +system version, the fixed header files of GCC are not automatically +updated. They can be updated using the mkheaders script +installed in +libexecdir/gcc/target/version/install-tools/. + +
  • On some systems, header file directories contain +machine-specific symbolic links in certain places. This makes it +possible to share most of the header files among hosts running the +same version of the system on different machine models. + +

    The programs that fix the header files do not understand this special +way of using symbolic links; therefore, the directory of fixed header +files is good only for the machine model used to build it. + +

    It is possible to make separate sets of fixed header files for the +different machine models, and arrange a structure of symbolic links so +as to use the proper set, but you'll have to do this by hand. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Fixed_002dPoint.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Fixed_002dPoint.html new file mode 100644 index 0000000..7da0e59 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Fixed_002dPoint.html @@ -0,0 +1,147 @@ + + +Fixed-Point - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Hex Floats, +Up: C Extensions +



+
+ +

5.13 Fixed-Point Types

+ +

+As an extension, the GNU C compiler supports fixed-point types as +defined in the N1169 draft of ISO/IEC DTR 18037. Support for fixed-point +types in GCC will evolve as the draft technical report changes. +Calling conventions for any target might also change. Not all targets +support fixed-point types. + +

The fixed-point types are +short _Fract, +_Fract, +long _Fract, +long long _Fract, +unsigned short _Fract, +unsigned _Fract, +unsigned long _Fract, +unsigned long long _Fract, +_Sat short _Fract, +_Sat _Fract, +_Sat long _Fract, +_Sat long long _Fract, +_Sat unsigned short _Fract, +_Sat unsigned _Fract, +_Sat unsigned long _Fract, +_Sat unsigned long long _Fract, +short _Accum, +_Accum, +long _Accum, +long long _Accum, +unsigned short _Accum, +unsigned _Accum, +unsigned long _Accum, +unsigned long long _Accum, +_Sat short _Accum, +_Sat _Accum, +_Sat long _Accum, +_Sat long long _Accum, +_Sat unsigned short _Accum, +_Sat unsigned _Accum, +_Sat unsigned long _Accum, +_Sat unsigned long long _Accum. +Fixed-point data values contain fractional and optional integral parts. +The format of fixed-point data varies and depends on the target machine. + +

Support for fixed-point types includes prefix and postfix increment +and decrement operators (++, --); unary arithmetic operators +(+, -, !); binary arithmetic operators (+, +-, *, /); binary shift operators (<<, >>); +relational operators (<, <=, >=, >); +equality operators (==, !=); assignment operators +(+=, -=, *=, /=, <<=, >>=); +and conversions to and from integer, floating-point, or fixed-point types. + +

Use a suffix hr or HR in a literal constant of type +short _Fract and _Sat short _Fract, +r or R for _Fract and _Sat _Fract, +lr or LR for long _Fract and _Sat long _Fract, +llr or LLR for long long _Fract and +_Sat long long _Fract, +uhr or UHR for unsigned short _Fract and +_Sat unsigned short _Fract, +ur or UR for unsigned _Fract and +_Sat unsigned _Fract, +ulr or ULR for unsigned long _Fract and +_Sat unsigned long _Fract, +ullr or ULLR for unsigned long long _Fract +and _Sat unsigned long long _Fract, +hk or HK for short _Accum and _Sat short _Accum, +k or K for _Accum and _Sat _Accum, +lk or LK for long _Accum and _Sat long _Accum, +llk or LLK for long long _Accum and +_Sat long long _Accum, +uhk or UHK for unsigned short _Accum and +_Sat unsigned short _Accum, +uk or UK for unsigned _Accum and +_Sat unsigned _Accum, +ulk or ULK for unsigned long _Accum and +_Sat unsigned long _Accum, +and ullk or ULLK for unsigned long long _Accum +and _Sat unsigned long long _Accum. + +

GCC support of fixed-point types as specified by the draft technical report +is incomplete: + +

    +
  • Pragmas to control overflow and rounding behaviors are not implemented. +
+ +

Fixed-point types are supported by the DWARF2 debug information format. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Floating-Types.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Floating-Types.html new file mode 100644 index 0000000..24e8f01 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Floating-Types.html @@ -0,0 +1,78 @@ + + +Floating Types - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Complex, +Up: C Extensions +



+
+ +

5.10 Additional Floating Types

+ +

+As an extension, the GNU C compiler supports additional floating +types, __float80 and __float128 to support 80bit +(XFmode) and 128 bit (TFmode) floating types. +Support for additional types includes the arithmetic operators: +add, subtract, multiply, divide; unary arithmetic operators; +relational operators; equality operators; and conversions to and from +integer and other floating types. Use a suffix w or W +in a literal constant of type __float80 and q or Q +for _float128. You can declare complex types using the +corresponding internal complex type, XCmode for __float80 +type and TCmode for __float128 type: + +

     typedef _Complex float __attribute__((mode(TC))) _Complex128;
+     typedef _Complex float __attribute__((mode(XC))) _Complex80;
+
+

Not all targets support additional floating point types. __float80 +is supported on i386, x86_64 and ia64 targets and target __float128 +is supported on x86_64 and ia64 targets. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Floating-point-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Floating-point-implementation.html new file mode 100644 index 0000000..cf5a245 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Floating-point-implementation.html @@ -0,0 +1,135 @@ + + +Floating point implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.6 Floating point

+ +
    +
  • The accuracy of the floating-point operations and of the library +functions in <math.h> and <complex.h> that return floating-point +results (C90 and C99 5.2.4.2.2). + +

    The accuracy is unknown. + +

  • The rounding behaviors characterized by non-standard values +of FLT_ROUNDS +(C90 and C99 5.2.4.2.2). + +

    GCC does not use such values. + +

  • The evaluation methods characterized by non-standard negative +values of FLT_EVAL_METHOD (C99 5.2.4.2.2). + +

    GCC does not use such values. + +

  • The direction of rounding when an integer is converted to a +floating-point number that cannot exactly represent the original +value (C90 6.2.1.3, C99 6.3.1.4). + +

    C99 Annex F is followed. + +

  • The direction of rounding when a floating-point number is +converted to a narrower floating-point number (C90 6.2.1.4, C99 +6.3.1.5). + +

    C99 Annex F is followed. + +

  • How the nearest representable value or the larger or smaller +representable value immediately adjacent to the nearest representable +value is chosen for certain floating constants (C90 6.1.3.1, C99 +6.4.4.2). + +

    C99 Annex F is followed. + +

  • Whether and how floating expressions are contracted when not +disallowed by the FP_CONTRACT pragma (C99 6.5). + +

    Expressions are currently only contracted if +-funsafe-math-optimizations or -ffast-math are used. +This is subject to change. + +

  • The default state for the FENV_ACCESS pragma (C99 7.6.1). + +

    This pragma is not implemented, but the default is to “off” unless +-frounding-math is used in which case it is “on”. + +

  • Additional floating-point exceptions, rounding modes, environments, +and classifications, and their macro names (C99 7.6, C99 7.12). + +

    This is dependent on the implementation of the C library, and is not +defined by GCC itself. + +

  • The default state for the FP_CONTRACT pragma (C99 7.12.2). + +

    This pragma is not implemented. Expressions are currently only +contracted if -funsafe-math-optimizations or +-ffast-math are used. This is subject to change. + +

  • Whether the “inexact” floating-point exception can be raised +when the rounded result actually does equal the mathematical result +in an IEC 60559 conformant implementation (C99 F.9). + +

    This is dependent on the implementation of the C library, and is not +defined by GCC itself. + +

  • Whether the “underflow” (and “inexact”) floating-point +exception can be raised when a result is tiny but not inexact in an +IEC 60559 conformant implementation (C99 F.9). + +

    This is dependent on the implementation of the C library, and is not +defined by GCC itself. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Attributes.html new file mode 100644 index 0000000..256ba82 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Attributes.html @@ -0,0 +1,1108 @@ + + +Function Attributes - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Mixed Declarations, +Up: C Extensions +



+
+ +

5.27 Declaring Attributes of Functions

+ +

+In GNU C, you declare certain things about functions called in your program +which help the compiler optimize function calls and check your code more +carefully. + +

The keyword __attribute__ allows you to specify special +attributes when making a declaration. This keyword is followed by an +attribute specification inside double parentheses. The following +attributes are currently defined for functions on all targets: +aligned, alloc_size, noreturn, +returns_twice, noinline, always_inline, +flatten, pure, const, nothrow, +sentinel, format, format_arg, +no_instrument_function, section, constructor, +destructor, used, unused, deprecated, +weak, malloc, alias, warn_unused_result, +nonnull, gnu_inline, externally_visible, +hot, cold, artificial, error +and warning. +Several other attributes are defined for functions on particular +target systems. Other attributes, including section are +supported for variables declarations (see Variable Attributes) and +for types (see Type Attributes). + +

You may also specify attributes with __ preceding and following +each keyword. This allows you to use them in header files without +being concerned about a possible macro of the same name. For example, +you may use __noreturn__ instead of noreturn. + +

See Attribute Syntax, for details of the exact syntax for using +attributes. + +

+ + +
alias ("target")
The alias attribute causes the declaration to be emitted as an +alias for another symbol, which must be specified. For instance, + +
          void __f () { /* Do something. */; }
+          void f () __attribute__ ((weak, alias ("__f")));
+     
+

defines f to be a weak alias for __f. In C++, the +mangled name for the target must be used. It is an error if __f +is not defined in the same translation unit. + +

Not all target machines support this attribute. + +

aligned (alignment)
This attribute specifies a minimum alignment for the function, +measured in bytes. + +

You cannot use this attribute to decrease the alignment of a function, +only to increase it. However, when you explicitly specify a function +alignment this will override the effect of the +-falign-functions (see Optimize Options) option for this +function. + +

Note that the effectiveness of aligned attributes may be +limited by inherent limitations in your linker. On many systems, the +linker is only able to arrange for functions to be aligned up to a +certain maximum alignment. (For some linkers, the maximum supported +alignment may be very very small.) See your linker documentation for +further information. + +

The aligned attribute can also be used for variables and fields +(see Variable Attributes.) + +

alloc_size
The alloc_size attribute is used to tell the compiler that the +function return value points to memory, where the size is given by +one or two of the functions parameters. GCC uses this +information to improve the correctness of __builtin_object_size. + +

The function parameter(s) denoting the allocated size are specified by +one or two integer arguments supplied to the attribute. The allocated size +is either the value of the single function argument specified or the product +of the two function arguments specified. Argument numbering starts at +one. + +

For instance, + +

          void* my_calloc(size_t, size_t) __attribute__((alloc_size(1,2)))
+          void my_realloc(void* size_t) __attribute__((alloc_size(2)))
+     
+

declares that my_calloc will return memory of the size given by +the product of parameter 1 and 2 and that my_realloc will return memory +of the size given by parameter 2. + +

always_inline
Generally, functions are not inlined unless optimization is specified. +For functions declared inline, this attribute inlines the function even +if no optimization level was specified. + +
gnu_inline
This attribute should be used with a function which is also declared +with the inline keyword. It directs GCC to treat the function +as if it were defined in gnu89 mode even when compiling in C99 or +gnu99 mode. + +

If the function is declared extern, then this definition of the +function is used only for inlining. In no case is the function +compiled as a standalone function, not even if you take its address +explicitly. Such an address becomes an external reference, as if you +had only declared the function, and had not defined it. This has +almost the effect of a macro. The way to use this is to put a +function definition in a header file with this attribute, and put +another copy of the function, without extern, in a library +file. The definition in the header file will cause most calls to the +function to be inlined. If any uses of the function remain, they will +refer to the single copy in the library. Note that the two +definitions of the functions need not be precisely the same, although +if they do not have the same effect your program may behave oddly. + +

In C, if the function is neither extern nor static, then +the function is compiled as a standalone function, as well as being +inlined where possible. + +

This is how GCC traditionally handled functions declared +inline. Since ISO C99 specifies a different semantics for +inline, this function attribute is provided as a transition +measure and as a useful feature in its own right. This attribute is +available in GCC 4.1.3 and later. It is available if either of the +preprocessor macros __GNUC_GNU_INLINE__ or +__GNUC_STDC_INLINE__ are defined. See An Inline Function is As Fast As a Macro. + +

In C++, this attribute does not depend on extern in any way, +but it still requires the inline keyword to enable its special +behavior. + +


artificial
This attribute is useful for small inline wrappers which if possible +should appear during debugging as a unit, depending on the debug +info format it will either mean marking the function as artificial +or using the caller location for all instructions within the inlined +body. + +


flatten
Generally, inlining into a function is limited. For a function marked with +this attribute, every call inside this function will be inlined, if possible. +Whether the function itself is considered for inlining depends on its size and +the current inlining parameters. The flatten attribute only works +reliably in unit-at-a-time mode. + +
error ("message")
If this attribute is used on a function declaration and a call to such a function +is not eliminated through dead code elimination or other optimizations, an error +which will include message will be diagnosed. This is useful +for compile time checking, especially together with __builtin_constant_p +and inline functions where checking the inline function arguments is not +possible through extern char [(condition) ? 1 : -1]; tricks. +While it is possible to leave the function undefined and thus invoke +a link failure, when using this attribute the problem will be diagnosed +earlier and with exact location of the call even in presence of inline +functions or when not emitting debugging information. + +
warning ("message")
If this attribute is used on a function declaration and a call to such a function +is not eliminated through dead code elimination or other optimizations, a warning +which will include message will be diagnosed. This is useful +for compile time checking, especially together with __builtin_constant_p +and inline functions. While it is possible to define the function with +a message in .gnu.warning* section, when using this attribute the problem +will be diagnosed earlier and with exact location of the call even in presence +of inline functions or when not emitting debugging information. + +
cdecl
On the Intel 386, the cdecl attribute causes the compiler to +assume that the calling function will pop off the stack space used to +pass arguments. This is +useful to override the effects of the -mrtd switch. + +
const
Many functions do not examine any values except their arguments, and +have no effects except the return value. Basically this is just slightly +more strict class than the pure attribute below, since function is not +allowed to read global memory. + +

Note that a function that has pointer arguments and examines the data +pointed to must not be declared const. Likewise, a +function that calls a non-const function usually must not be +const. It does not make sense for a const function to +return void. + +

The attribute const is not implemented in GCC versions earlier +than 2.5. An alternative way to declare that a function has no side +effects, which works in the current version and in some older versions, +is as follows: + +

          typedef int intfn ();
+          
+          extern const intfn square;
+     
+

This approach does not work in GNU C++ from 2.6.0 on, since the language +specifies that the const must be attached to the return value. + +

constructor
destructor
constructor (priority)
destructor (priority)
The constructor attribute causes the function to be called +automatically before execution enters main (). Similarly, the +destructor attribute causes the function to be called +automatically after main () has completed or exit () has +been called. Functions with these attributes are useful for +initializing data that will be used implicitly during the execution of +the program. + +

You may provide an optional integer priority to control the order in +which constructor and destructor functions are run. A constructor +with a smaller priority number runs before a constructor with a larger +priority number; the opposite relationship holds for destructors. So, +if you have a constructor that allocates a resource and a destructor +that deallocates the same resource, both functions typically have the +same priority. The priorities for constructor and destructor +functions are the same as those specified for namespace-scope C++ +objects (see C++ Attributes). + +

These attributes are not currently implemented for Objective-C. + +

deprecated
The deprecated attribute results in a warning if the function +is used anywhere in the source file. This is useful when identifying +functions that are expected to be removed in a future version of a +program. The warning also includes the location of the declaration +of the deprecated function, to enable users to easily find further +information about why the function is deprecated, or what they should +do instead. Note that the warnings only occurs for uses: + +
          int old_fn () __attribute__ ((deprecated));
+          int old_fn ();
+          int (*fn_ptr)() = old_fn;
+     
+

results in a warning on line 3 but not line 2. + +

The deprecated attribute can also be used for variables and +types (see Variable Attributes, see Type Attributes.) + +

dllexport
On Microsoft Windows targets and Symbian OS targets the +dllexport attribute causes the compiler to provide a global +pointer to a pointer in a DLL, so that it can be referenced with the +dllimport attribute. On Microsoft Windows targets, the pointer +name is formed by combining _imp__ and the function or variable +name. + +

You can use __declspec(dllexport) as a synonym for +__attribute__ ((dllexport)) for compatibility with other +compilers. + +

On systems that support the visibility attribute, this +attribute also implies “default” visibility. It is an error to +explicitly specify any other visibility. + +

Currently, the dllexport attribute is ignored for inlined +functions, unless the -fkeep-inline-functions flag has been +used. The attribute is also ignored for undefined symbols. + +

When applied to C++ classes, the attribute marks defined non-inlined +member functions and static data members as exports. Static consts +initialized in-class are not marked unless they are also defined +out-of-class. + +

For Microsoft Windows targets there are alternative methods for +including the symbol in the DLL's export table such as using a +.def file with an EXPORTS section or, with GNU ld, using +the --export-all linker flag. + +

dllimport
On Microsoft Windows and Symbian OS targets, the dllimport +attribute causes the compiler to reference a function or variable via +a global pointer to a pointer that is set up by the DLL exporting the +symbol. The attribute implies extern. On Microsoft Windows +targets, the pointer name is formed by combining _imp__ and the +function or variable name. + +

You can use __declspec(dllimport) as a synonym for +__attribute__ ((dllimport)) for compatibility with other +compilers. + +

On systems that support the visibility attribute, this +attribute also implies “default” visibility. It is an error to +explicitly specify any other visibility. + +

Currently, the attribute is ignored for inlined functions. If the +attribute is applied to a symbol definition, an error is reported. +If a symbol previously declared dllimport is later defined, the +attribute is ignored in subsequent references, and a warning is emitted. +The attribute is also overridden by a subsequent declaration as +dllexport. + +

When applied to C++ classes, the attribute marks non-inlined +member functions and static data members as imports. However, the +attribute is ignored for virtual methods to allow creation of vtables +using thunks. + +

On the SH Symbian OS target the dllimport attribute also has +another affect—it can cause the vtable and run-time type information +for a class to be exported. This happens when the class has a +dllimport'ed constructor or a non-inline, non-pure virtual function +and, for either of those two conditions, the class also has a inline +constructor or destructor and has a key function that is defined in +the current translation unit. + +

For Microsoft Windows based targets the use of the dllimport +attribute on functions is not necessary, but provides a small +performance benefit by eliminating a thunk in the DLL. The use of the +dllimport attribute on imported variables was required on older +versions of the GNU linker, but can now be avoided by passing the +--enable-auto-import switch to the GNU linker. As with +functions, using the attribute for a variable eliminates a thunk in +the DLL. + +

One drawback to using this attribute is that a pointer to a +variable marked as dllimport cannot be used as a constant +address. However, a pointer to a function with the +dllimport attribute can be used as a constant initializer; in +this case, the address of a stub function in the import lib is +referenced. On Microsoft Windows targets, the attribute can be disabled +for functions by setting the -mnop-fun-dllimport flag. + +

eightbit_data
Use this attribute on the H8/300, H8/300H, and H8S to indicate that the specified +variable should be placed into the eight bit data section. +The compiler will generate more efficient code for certain operations +on data in the eight bit data area. Note the eight bit data area is limited to +256 bytes of data. + +

You must use GAS and GLD from GNU binutils version 2.7 or later for +this attribute to work correctly. + +

exception_handler
Use this attribute on the Blackfin to indicate that the specified function +is an exception handler. The compiler will generate function entry and +exit sequences suitable for use in an exception handler when this +attribute is present. + +
far
On 68HC11 and 68HC12 the far attribute causes the compiler to +use a calling convention that takes care of switching memory banks when +entering and leaving a function. This calling convention is also the +default when using the -mlong-calls option. + +

On 68HC12 the compiler will use the call and rtc instructions +to call and return from a function. + +

On 68HC11 the compiler will generate a sequence of instructions +to invoke a board-specific routine to switch the memory bank and call the +real function. The board-specific routine simulates a call. +At the end of a function, it will jump to a board-specific routine +instead of using rts. The board-specific return routine simulates +the rtc. + +

fastcall
On the Intel 386, the fastcall attribute causes the compiler to +pass the first argument (if of integral type) in the register ECX and +the second argument (if of integral type) in the register EDX. Subsequent +and other typed arguments are passed on the stack. The called function will +pop the arguments off the stack. If the number of arguments is variable all +arguments are pushed on the stack. + +
format (archetype, string-index, first-to-check)
The format attribute specifies that a function takes printf, +scanf, strftime or strfmon style arguments which +should be type-checked against a format string. For example, the +declaration: + +
          extern int
+          my_printf (void *my_object, const char *my_format, ...)
+                __attribute__ ((format (printf, 2, 3)));
+     
+

causes the compiler to check the arguments in calls to my_printf +for consistency with the printf style format string argument +my_format. + +

The parameter archetype determines how the format string is +interpreted, and should be printf, scanf, strftime +or strfmon. (You can also use __printf__, +__scanf__, __strftime__ or __strfmon__.) The +parameter string-index specifies which argument is the format +string argument (starting from 1), while first-to-check is the +number of the first argument to check against the format string. For +functions where the arguments are not available to be checked (such as +vprintf), specify the third parameter as zero. In this case the +compiler only checks the format string for consistency. For +strftime formats, the third parameter is required to be zero. +Since non-static C++ methods have an implicit this argument, the +arguments of such methods should be counted from two, not one, when +giving values for string-index and first-to-check. + +

In the example above, the format string (my_format) is the second +argument of the function my_print, and the arguments to check +start with the third argument, so the correct parameters for the format +attribute are 2 and 3. + +

The format attribute allows you to identify your own functions +which take format strings as arguments, so that GCC can check the +calls to these functions for errors. The compiler always (unless +-ffreestanding or -fno-builtin is used) checks formats +for the standard library functions printf, fprintf, +sprintf, scanf, fscanf, sscanf, strftime, +vprintf, vfprintf and vsprintf whenever such +warnings are requested (using -Wformat), so there is no need to +modify the header file stdio.h. In C99 mode, the functions +snprintf, vsnprintf, vscanf, vfscanf and +vsscanf are also checked. Except in strictly conforming C +standard modes, the X/Open function strfmon is also checked as +are printf_unlocked and fprintf_unlocked. +See Options Controlling C Dialect. + +

The target may provide additional types of format checks. +See Format Checks Specific to Particular Target Machines. + +

format_arg (string-index)
The format_arg attribute specifies that a function takes a format +string for a printf, scanf, strftime or +strfmon style function and modifies it (for example, to translate +it into another language), so the result can be passed to a +printf, scanf, strftime or strfmon style +function (with the remaining arguments to the format function the same +as they would have been for the unmodified string). For example, the +declaration: + +
          extern char *
+          my_dgettext (char *my_domain, const char *my_format)
+                __attribute__ ((format_arg (2)));
+     
+

causes the compiler to check the arguments in calls to a printf, +scanf, strftime or strfmon type function, whose +format string argument is a call to the my_dgettext function, for +consistency with the format string argument my_format. If the +format_arg attribute had not been specified, all the compiler +could tell in such calls to format functions would be that the format +string argument is not constant; this would generate a warning when +-Wformat-nonliteral is used, but the calls could not be checked +without the attribute. + +

The parameter string-index specifies which argument is the format +string argument (starting from one). Since non-static C++ methods have +an implicit this argument, the arguments of such methods should +be counted from two. + +

The format-arg attribute allows you to identify your own +functions which modify format strings, so that GCC can check the +calls to printf, scanf, strftime or strfmon +type function whose operands are a call to one of your own function. +The compiler always treats gettext, dgettext, and +dcgettext in this manner except when strict ISO C support is +requested by -ansi or an appropriate -std option, or +-ffreestanding or -fno-builtin +is used. See Options Controlling C Dialect. + +

function_vector
Use this attribute on the H8/300, H8/300H, and H8S to indicate that the specified +function should be called through the function vector. Calling a +function through the function vector will reduce code size, however; +the function vector has a limited size (maximum 128 entries on the H8/300 +and 64 entries on the H8/300H and H8S) and shares space with the interrupt vector. + +

You must use GAS and GLD from GNU binutils version 2.7 or later for +this attribute to work correctly. + +

On M16C/M32C targets, the function_vector attribute declares a +special page subroutine call function. Use of this attribute reduces +the code size by 2 bytes for each call generated to the +subroutine. The argument to the attribute is the vector number entry +from the special page vector table which contains the 16 low-order +bits of the subroutine's entry address. Each vector table has special +page number (18 to 255) which are used in jsrs instruction. +Jump addresses of the routines are generated by adding 0x0F0000 (in +case of M16C targets) or 0xFF0000 (in case of M32C targets), to the 2 +byte addresses set in the vector table. Therefore you need to ensure +that all the special page vector routines should get mapped within the +address range 0x0F0000 to 0x0FFFFF (for M16C) and 0xFF0000 to 0xFFFFFF +(for M32C). + +

In the following example 2 bytes will be saved for each call to +function foo. + +

          void foo (void) __attribute__((function_vector(0x18)));
+          void foo (void)
+          {
+          }
+          
+          void bar (void)
+          {
+              foo();
+          }
+     
+

If functions are defined in one file and are called in another file, +then be sure to write this declaration in both files. + +

This attribute is ignored for R8C target. + +

interrupt
Use this attribute on the ARM, AVR, CRX, M32C, M32R/D, m68k, MS1, +and Xstormy16 ports to indicate that the specified function is an +interrupt handler. The compiler will generate function entry and exit +sequences suitable for use in an interrupt handler when this attribute +is present. + +

Note, interrupt handlers for the Blackfin, H8/300, H8/300H, H8S, and +SH processors can be specified via the interrupt_handler attribute. + +

Note, on the AVR, interrupts will be enabled inside the function. + +

Note, for the ARM, you can specify the kind of interrupt to be handled by +adding an optional parameter to the interrupt attribute like this: + +

          void f () __attribute__ ((interrupt ("IRQ")));
+     
+

Permissible values for this parameter are: IRQ, FIQ, SWI, ABORT and UNDEF. + +

On ARMv7-M the interrupt type is ignored, and the attribute means the function +may be called with a word aligned stack pointer. + +

interrupt_handler
Use this attribute on the Blackfin, m68k, H8/300, H8/300H, H8S, and SH to +indicate that the specified function is an interrupt handler. The compiler +will generate function entry and exit sequences suitable for use in an +interrupt handler when this attribute is present. + +
interrupt_thread
Use this attribute on fido, a subarchitecture of the m68k, to indicate +that the specified function is an interrupt handler that is designed +to run as a thread. The compiler omits generate prologue/epilogue +sequences and replaces the return instruction with a sleep +instruction. This attribute is available only on fido. + +
kspisusp
When used together with interrupt_handler, exception_handler +or nmi_handler, code will be generated to load the stack pointer +from the USP register in the function prologue. + +
l1_text
This attribute specifies a function to be placed into L1 Instruction +SRAM. The function will be put into a specific section named .l1.text. +With -mfdpic, function calls with a such function as the callee +or caller will use inlined PLT. + +
long_call/short_call
This attribute specifies how a particular function is called on +ARM. Both attributes override the -mlong-calls (see ARM Options) +command line switch and #pragma long_calls settings. The +long_call attribute indicates that the function might be far +away from the call site and require a different (more expensive) +calling sequence. The short_call attribute always places +the offset to the function from the call site into the BL +instruction directly. + +
longcall/shortcall
On the Blackfin, RS/6000 and PowerPC, the longcall attribute +indicates that the function might be far away from the call site and +require a different (more expensive) calling sequence. The +shortcall attribute indicates that the function is always close +enough for the shorter calling sequence to be used. These attributes +override both the -mlongcall switch and, on the RS/6000 and +PowerPC, the #pragma longcall setting. + +

See RS/6000 and PowerPC Options, for more information on whether long +calls are necessary. + +

long_call/near/far
These attributes specify how a particular function is called on MIPS. +The attributes override the -mlong-calls (see MIPS Options) +command-line switch. The long_call and far attributes are +synonyms, and cause the compiler to always call +the function by first loading its address into a register, and then using +the contents of that register. The near attribute has the opposite +effect; it specifies that non-PIC calls should be made using the more +efficient jal instruction. + +
malloc
The malloc attribute is used to tell the compiler that a function +may be treated as if any non-NULL pointer it returns cannot +alias any other pointer valid when the function returns. +This will often improve optimization. +Standard functions with this property include malloc and +calloc. realloc-like functions have this property as +long as the old pointer is never referred to (including comparing it +to the new pointer) after the function returns a non-NULL +value. + +
mips16/nomips16
+On MIPS targets, you can use the mips16 and nomips16 +function attributes to locally select or turn off MIPS16 code generation. +A function with the mips16 attribute is emitted as MIPS16 code, +while MIPS16 code generation is disabled for functions with the +nomips16 attribute. These attributes override the +-mips16 and -mno-mips16 options on the command line +(see MIPS Options). + +

When compiling files containing mixed MIPS16 and non-MIPS16 code, the +preprocessor symbol __mips16 reflects the setting on the command line, +not that within individual functions. Mixed MIPS16 and non-MIPS16 code +may interact badly with some GCC extensions such as __builtin_apply +(see Constructing Calls). + +

model (model-name)
+On the M32R/D, use this attribute to set the addressability of an +object, and of the code generated for a function. The identifier +model-name is one of small, medium, or +large, representing each of the code models. + +

Small model objects live in the lower 16MB of memory (so that their +addresses can be loaded with the ld24 instruction), and are +callable with the bl instruction. + +

Medium model objects may live anywhere in the 32-bit address space (the +compiler will generate seth/add3 instructions to load their addresses), +and are callable with the bl instruction. + +

Large model objects may live anywhere in the 32-bit address space (the +compiler will generate seth/add3 instructions to load their addresses), +and may not be reachable with the bl instruction (the compiler will +generate the much slower seth/add3/jl instruction sequence). + +

On IA-64, use this attribute to set the addressability of an object. +At present, the only supported identifier for model-name is +small, indicating addressability via “small” (22-bit) +addresses (so that their addresses can be loaded with the addl +instruction). Caveat: such addressing is by definition not position +independent and hence this attribute must not be used for objects +defined by shared libraries. + +

naked
Use this attribute on the ARM, AVR, IP2K and SPU ports to indicate that +the specified function does not need prologue/epilogue sequences generated by +the compiler. It is up to the programmer to provide these sequences. + +
near
On 68HC11 and 68HC12 the near attribute causes the compiler to +use the normal calling convention based on jsr and rts. +This attribute can be used to cancel the effect of the -mlong-calls +option. + +
nesting
Use this attribute together with interrupt_handler, +exception_handler or nmi_handler to indicate that the function +entry code should enable nested interrupts or exceptions. + +
nmi_handler
Use this attribute on the Blackfin to indicate that the specified function +is an NMI handler. The compiler will generate function entry and +exit sequences suitable for use in an NMI handler when this +attribute is present. + +
no_instrument_function
If -finstrument-functions is given, profiling function calls will +be generated at entry and exit of most user-compiled functions. +Functions with this attribute will not be so instrumented. + +
noinline
This function attribute prevents a function from being considered for +inlining. + + +If the function does not have side-effects, there are optimizations +other than inlining that causes function calls to be optimized away, +although the function call is live. To keep such calls from being +optimized away, put +
          asm ("");
+     
+

(see Extended Asm) in the called function, to serve as a special +side-effect. + +

nonnull (arg-index, ...)
The nonnull attribute specifies that some function parameters should +be non-null pointers. For instance, the declaration: + +
          extern void *
+          my_memcpy (void *dest, const void *src, size_t len)
+          	__attribute__((nonnull (1, 2)));
+     
+

causes the compiler to check that, in calls to my_memcpy, +arguments dest and src are non-null. If the compiler +determines that a null pointer is passed in an argument slot marked +as non-null, and the -Wnonnull option is enabled, a warning +is issued. The compiler may also choose to make optimizations based +on the knowledge that certain function arguments will not be null. + +

If no argument index list is given to the nonnull attribute, +all pointer arguments are marked as non-null. To illustrate, the +following declaration is equivalent to the previous example: + +

          extern void *
+          my_memcpy (void *dest, const void *src, size_t len)
+          	__attribute__((nonnull));
+     
+
noreturn
A few standard library functions, such as abort and exit, +cannot return. GCC knows this automatically. Some programs define +their own functions that never return. You can declare them +noreturn to tell the compiler this fact. For example, + +
          void fatal () __attribute__ ((noreturn));
+          
+          void
+          fatal (/* ... */)
+          {
+            /* ... */ /* Print error message. */ /* ... */
+            exit (1);
+          }
+     
+

The noreturn keyword tells the compiler to assume that +fatal cannot return. It can then optimize without regard to what +would happen if fatal ever did return. This makes slightly +better code. More importantly, it helps avoid spurious warnings of +uninitialized variables. + +

The noreturn keyword does not affect the exceptional path when that +applies: a noreturn-marked function may still return to the caller +by throwing an exception or calling longjmp. + +

Do not assume that registers saved by the calling function are +restored before calling the noreturn function. + +

It does not make sense for a noreturn function to have a return +type other than void. + +

The attribute noreturn is not implemented in GCC versions +earlier than 2.5. An alternative way to declare that a function does +not return, which works in the current version and in some older +versions, is as follows: + +

          typedef void voidfn ();
+          
+          volatile voidfn fatal;
+     
+

This approach does not work in GNU C++. + +

nothrow
The nothrow attribute is used to inform the compiler that a +function cannot throw an exception. For example, most functions in +the standard C library can be guaranteed not to throw an exception +with the notable exceptions of qsort and bsearch that +take function pointer arguments. The nothrow attribute is not +implemented in GCC versions earlier than 3.3. + +
pure
Many functions have no effects except the return value and their +return value depends only on the parameters and/or global variables. +Such a function can be subject +to common subexpression elimination and loop optimization just as an +arithmetic operator would be. These functions should be declared +with the attribute pure. For example, + +
          int square (int) __attribute__ ((pure));
+     
+

says that the hypothetical function square is safe to call +fewer times than the program says. + +

Some of common examples of pure functions are strlen or memcmp. +Interesting non-pure functions are functions with infinite loops or those +depending on volatile memory or other system resource, that may change between +two consecutive calls (such as feof in a multithreading environment). + +

The attribute pure is not implemented in GCC versions earlier +than 2.96. + +

hot
The hot attribute is used to inform the compiler that a function is a +hot spot of the compiled program. The function is optimized more aggressively +and on many target it is placed into special subsection of the text section so +all hot functions appears close together improving locality. + +

When profile feedback is available, via -fprofile-use, hot functions +are automatically detected and this attribute is ignored. + +

The hot attribute is not implemented in GCC versions earlier than 4.3. + +

cold
The cold attribute is used to inform the compiler that a function is +unlikely executed. The function is optimized for size rather than speed and on +many targets it is placed into special subsection of the text section so all +cold functions appears close together improving code locality of non-cold parts +of program. The paths leading to call of cold functions within code are marked +as unlikely by the branch prediction mechanism. It is thus useful to mark +functions used to handle unlikely conditions, such as perror, as cold to +improve optimization of hot functions that do call marked functions in rare +occasions. + +

When profile feedback is available, via -fprofile-use, hot functions +are automatically detected and this attribute is ignored. + +

The hot attribute is not implemented in GCC versions earlier than 4.3. + +

regparm (number)
On the Intel 386, the regparm attribute causes the compiler to +pass arguments number one to number if they are of integral type +in registers EAX, EDX, and ECX instead of on the stack. Functions that +take a variable number of arguments will continue to be passed all of their +arguments on the stack. + +

Beware that on some ELF systems this attribute is unsuitable for +global functions in shared libraries with lazy binding (which is the +default). Lazy binding will send the first call via resolving code in +the loader, which might assume EAX, EDX and ECX can be clobbered, as +per the standard calling conventions. Solaris 8 is affected by this. +GNU systems with GLIBC 2.1 or higher, and FreeBSD, are believed to be +safe since the loaders there save all registers. (Lazy binding can be +disabled with the linker or the loader if desired, to avoid the +problem.) + +

sseregparm
On the Intel 386 with SSE support, the sseregparm attribute +causes the compiler to pass up to 3 floating point arguments in +SSE registers instead of on the stack. Functions that take a +variable number of arguments will continue to pass all of their +floating point arguments on the stack. + +
force_align_arg_pointer
On the Intel x86, the force_align_arg_pointer attribute may be +applied to individual function definitions, generating an alternate +prologue and epilogue that realigns the runtime stack. This supports +mixing legacy codes that run with a 4-byte aligned stack with modern +codes that keep a 16-byte stack for SSE compatibility. The alternate +prologue and epilogue are slower and bigger than the regular ones, and +the alternate prologue requires a scratch register; this lowers the +number of registers available if used in conjunction with the +regparm attribute. The force_align_arg_pointer +attribute is incompatible with nested functions; this is considered a +hard error. + +
returns_twice
The returns_twice attribute tells the compiler that a function may +return more than one time. The compiler will ensure that all registers +are dead before calling such a function and will emit a warning about +the variables that may be clobbered after the second return from the +function. Examples of such functions are setjmp and vfork. +The longjmp-like counterpart of such function, if any, might need +to be marked with the noreturn attribute. + +
saveall
Use this attribute on the Blackfin, H8/300, H8/300H, and H8S to indicate that +all registers except the stack pointer should be saved in the prologue +regardless of whether they are used or not. + +
section ("section-name")
Normally, the compiler places the code it generates in the text section. +Sometimes, however, you need additional sections, or you need certain +particular functions to appear in special sections. The section +attribute specifies that a function lives in a particular section. +For example, the declaration: + +
          extern void foobar (void) __attribute__ ((section ("bar")));
+     
+

puts the function foobar in the bar section. + +

Some file formats do not support arbitrary sections so the section +attribute is not available on all platforms. +If you need to map the entire contents of a module to a particular +section, consider using the facilities of the linker instead. + +

sentinel
This function attribute ensures that a parameter in a function call is +an explicit NULL. The attribute is only valid on variadic +functions. By default, the sentinel is located at position zero, the +last parameter of the function call. If an optional integer position +argument P is supplied to the attribute, the sentinel must be located at +position P counting backwards from the end of the argument list. + +
          __attribute__ ((sentinel))
+          is equivalent to
+          __attribute__ ((sentinel(0)))
+     
+

The attribute is automatically set with a position of 0 for the built-in +functions execl and execlp. The built-in function +execle has the attribute set with a position of 1. + +

A valid NULL in this context is defined as zero with any pointer +type. If your system defines the NULL macro with an integer type +then you need to add an explicit cast. GCC replaces stddef.h +with a copy that redefines NULL appropriately. + +

The warnings for missing or incorrect sentinels are enabled with +-Wformat. + +

short_call
See long_call/short_call. + +
shortcall
See longcall/shortcall. + +
signal
Use this attribute on the AVR to indicate that the specified +function is a signal handler. The compiler will generate function +entry and exit sequences suitable for use in a signal handler when this +attribute is present. Interrupts will be disabled inside the function. + +
sp_switch
Use this attribute on the SH to indicate an interrupt_handler +function should switch to an alternate stack. It expects a string +argument that names a global variable holding the address of the +alternate stack. + +
          void *alt_stack;
+          void f () __attribute__ ((interrupt_handler,
+                                    sp_switch ("alt_stack")));
+     
+
stdcall
On the Intel 386, the stdcall attribute causes the compiler to +assume that the called function will pop off the stack space used to +pass arguments, unless it takes a variable number of arguments. + +
tiny_data
Use this attribute on the H8/300H and H8S to indicate that the specified +variable should be placed into the tiny data section. +The compiler will generate more efficient code for loads and stores +on data in the tiny data section. Note the tiny data area is limited to +slightly under 32kbytes of data. + +
trap_exit
Use this attribute on the SH for an interrupt_handler to return using +trapa instead of rte. This attribute expects an integer +argument specifying the trap number to be used. + +
unused
This attribute, attached to a function, means that the function is meant +to be possibly unused. GCC will not produce a warning for this +function. + +
used
This attribute, attached to a function, means that code must be emitted +for the function even if it appears that the function is not referenced. +This is useful, for example, when the function is referenced only in +inline assembly. + +
version_id
This attribute, attached to a global variable or function, renames a +symbol to contain a version string, thus allowing for function level +versioning. HP-UX system header files may use version level functioning +for some system calls. + +
          extern int foo () __attribute__((version_id ("20040821")));
+     
+

Calls to foo will be mapped to calls to foo{20040821}. + +

visibility ("visibility_type")
This attribute affects the linkage of the declaration to which it is attached. +There are four supported visibility_type values: default, +hidden, protected or internal visibility. + +
          void __attribute__ ((visibility ("protected")))
+          f () { /* Do something. */; }
+          int i __attribute__ ((visibility ("hidden")));
+     
+

The possible values of visibility_type correspond to the +visibility settings in the ELF gABI. + +

+ + +
default
Default visibility is the normal case for the object file format. +This value is available for the visibility attribute to override other +options that may change the assumed visibility of entities. + +

On ELF, default visibility means that the declaration is visible to other +modules and, in shared libraries, means that the declared entity may be +overridden. + +

On Darwin, default visibility means that the declaration is visible to +other modules. + +

Default visibility corresponds to “external linkage” in the language. + +

hidden
Hidden visibility indicates that the entity declared will have a new +form of linkage, which we'll call “hidden linkage”. Two +declarations of an object with hidden linkage refer to the same object +if they are in the same shared object. + +
internal
Internal visibility is like hidden visibility, but with additional +processor specific semantics. Unless otherwise specified by the +psABI, GCC defines internal visibility to mean that a function is +never called from another module. Compare this with hidden +functions which, while they cannot be referenced directly by other +modules, can be referenced indirectly via function pointers. By +indicating that a function cannot be called from outside the module, +GCC may for instance omit the load of a PIC register since it is known +that the calling function loaded the correct value. + +
protected
Protected visibility is like default visibility except that it +indicates that references within the defining module will bind to the +definition in that module. That is, the declared entity cannot be +overridden by another module. + +
+ +

All visibilities are supported on many, but not all, ELF targets +(supported when the assembler supports the .visibility +pseudo-op). Default visibility is supported everywhere. Hidden +visibility is supported on Darwin targets. + +

The visibility attribute should be applied only to declarations which +would otherwise have external linkage. The attribute should be applied +consistently, so that the same entity should not be declared with +different settings of the attribute. + +

In C++, the visibility attribute applies to types as well as functions +and objects, because in C++ types have linkage. A class must not have +greater visibility than its non-static data member types and bases, +and class members default to the visibility of their class. Also, a +declaration without explicit visibility is limited to the visibility +of its type. + +

In C++, you can mark member functions and static member variables of a +class with the visibility attribute. This is useful if if you know a +particular method or static member variable should only be used from +one shared object; then you can mark it hidden while the rest of the +class has default visibility. Care must be taken to avoid breaking +the One Definition Rule; for example, it is usually not useful to mark +an inline method as hidden without marking the whole class as hidden. + +

A C++ namespace declaration can also have the visibility attribute. +This attribute applies only to the particular namespace body, not to +other definitions of the same namespace; it is equivalent to using +#pragma GCC visibility before and after the namespace +definition (see Visibility Pragmas). + +

In C++, if a template argument has limited visibility, this +restriction is implicitly propagated to the template instantiation. +Otherwise, template instantiations and specializations default to the +visibility of their template. + +

If both the template and enclosing class have explicit visibility, the +visibility from the template is used. + +

warn_unused_result
The warn_unused_result attribute causes a warning to be emitted +if a caller of the function with this attribute does not use its +return value. This is useful for functions where not checking +the result is either a security problem or always a bug, such as +realloc. + +
          int fn () __attribute__ ((warn_unused_result));
+          int foo ()
+          {
+            if (fn () < 0) return -1;
+            fn ();
+            return 0;
+          }
+     
+

results in warning on line 5. + +

weak
The weak attribute causes the declaration to be emitted as a weak +symbol rather than a global. This is primarily useful in defining +library functions which can be overridden in user code, though it can +also be used with non-function declarations. Weak symbols are supported +for ELF targets, and also for a.out targets when using the GNU assembler +and linker. + +
weakref
weakref ("target")
The weakref attribute marks a declaration as a weak reference. +Without arguments, it should be accompanied by an alias attribute +naming the target symbol. Optionally, the target may be given as +an argument to weakref itself. In either case, weakref +implicitly marks the declaration as weak. Without a +target, given as an argument to weakref or to alias, +weakref is equivalent to weak. + +
          static int x() __attribute__ ((weakref ("y")));
+          /* is equivalent to... */
+          static int x() __attribute__ ((weak, weakref, alias ("y")));
+          /* and to... */
+          static int x() __attribute__ ((weakref));
+          static int x() __attribute__ ((alias ("y")));
+     
+

A weak reference is an alias that does not by itself require a +definition to be given for the target symbol. If the target symbol is +only referenced through weak references, then the becomes a weak +undefined symbol. If it is directly referenced, however, then such +strong references prevail, and a definition will be required for the +symbol, not necessarily in the same translation unit. + +

The effect is equivalent to moving all references to the alias to a +separate translation unit, renaming the alias to the aliased symbol, +declaring it as weak, compiling the two separate translation units and +performing a reloadable link on them. + +

At present, a declaration to which weakref is attached can +only be static. + +

externally_visible
This attribute, attached to a global variable or function nullify +effect of -fwhole-program command line option, so the object +remain visible outside the current compilation unit + +
+ +

You can specify multiple attributes in a declaration by separating them +by commas within the double parentheses or by immediately following an +attribute declaration with another attribute declaration. + +

Some people object to the __attribute__ feature, suggesting that +ISO C's #pragma should be used instead. At the time +__attribute__ was designed, there were two reasons for not doing +this. + +

    +
  1. It is impossible to generate #pragma commands from a macro. + +
  2. There is no telling what the same #pragma might mean in another +compiler. +
+ +

These two reasons applied to almost any application that might have been +proposed for #pragma. It was basically a mistake to use +#pragma for anything. + +

The ISO C99 standard includes _Pragma, which now allows pragmas +to be generated from macros. In addition, a #pragma GCC +namespace is now in use for GCC-specific pragmas. However, it has been +found convenient to use __attribute__ to achieve a natural +attachment of attributes to their corresponding declarations, whereas +#pragma GCC is of use for constructs that do not naturally form +part of the grammar. See Miscellaneous Preprocessing Directives (The GNU C Preprocessor). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Names.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Names.html new file mode 100644 index 0000000..650e22f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Names.html @@ -0,0 +1,125 @@ + + +Function Names - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Incomplete Enums, +Up: C Extensions +



+
+ +

5.43 Function Names as Strings

+ +

+GCC provides three magic variables which hold the name of the current +function, as a string. The first of these is __func__, which +is part of the C99 standard: + +

     The identifier __func__ is implicitly declared by the translator
+     as if, immediately following the opening brace of each function
+     definition, the declaration
+     
          static const char __func__[] = "function-name";
+     
+ +

appeared, where function-name is the name of the lexically-enclosing + function. This name is the unadorned name of the function. +

+

__FUNCTION__ is another name for __func__. Older +versions of GCC recognize only this name. However, it is not +standardized. For maximum portability, we recommend you use +__func__, but provide a fallback definition with the +preprocessor: + +

     #if __STDC_VERSION__ < 199901L
+     # if __GNUC__ >= 2
+     #  define __func__ __FUNCTION__
+     # else
+     #  define __func__ "<unknown>"
+     # endif
+     #endif
+
+

In C, __PRETTY_FUNCTION__ is yet another name for +__func__. However, in C++, __PRETTY_FUNCTION__ contains +the type signature of the function as well as its bare name. For +example, this program: + +

     extern "C" {
+     extern int printf (char *, ...);
+     }
+     
+     class a {
+      public:
+       void sub (int i)
+         {
+           printf ("__FUNCTION__ = %s\n", __FUNCTION__);
+           printf ("__PRETTY_FUNCTION__ = %s\n", __PRETTY_FUNCTION__);
+         }
+     };
+     
+     int
+     main (void)
+     {
+       a ax;
+       ax.sub (0);
+       return 0;
+     }
+
+

gives this output: + +

     __FUNCTION__ = sub
+     __PRETTY_FUNCTION__ = void a::sub(int)
+
+

These identifiers are not preprocessor macros. In GCC 3.3 and +earlier, in C only, __FUNCTION__ and __PRETTY_FUNCTION__ +were treated as string literals; they could be used to initialize +char arrays, and they could be concatenated with other string +literals. GCC 3.4 and later treat them as variables, like +__func__. In C++, __FUNCTION__ and +__PRETTY_FUNCTION__ have always been variables. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Prototypes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Prototypes.html new file mode 100644 index 0000000..f188741 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Function-Prototypes.html @@ -0,0 +1,107 @@ + + +Function Prototypes - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Attribute Syntax, +Up: C Extensions +



+
+ +

5.29 Prototypes and Old-Style Function Definitions

+ +

+GNU C extends ISO C to allow a function prototype to override a later +old-style non-prototype definition. Consider the following example: + +

     /* Use prototypes unless the compiler is old-fashioned.  */
+     #ifdef __STDC__
+     #define P(x) x
+     #else
+     #define P(x) ()
+     #endif
+     
+     /* Prototype function declaration.  */
+     int isroot P((uid_t));
+     
+     /* Old-style function definition.  */
+     int
+     isroot (x)   /* ??? lossage here ??? */
+          uid_t x;
+     {
+       return x == 0;
+     }
+
+

Suppose the type uid_t happens to be short. ISO C does +not allow this example, because subword arguments in old-style +non-prototype definitions are promoted. Therefore in this example the +function definition's argument is really an int, which does not +match the prototype argument type of short. + +

This restriction of ISO C makes it hard to write code that is portable +to traditional C compilers, because the programmer does not know +whether the uid_t type is short, int, or +long. Therefore, in cases like these GNU C allows a prototype +to override a later old-style definition. More precisely, in GNU C, a +function prototype argument type overrides the argument type specified +by a later old-style definition if the former type is the same as the +latter type before promotion. Thus in GNU C the above example is +equivalent to the following: + +

     int isroot (uid_t);
+     
+     int
+     isroot (uid_t x)
+     {
+       return x == 0;
+     }
+
+

GNU C++ does not support old-style function definitions, so this +extension is irrelevant. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Funding.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Funding.html new file mode 100644 index 0000000..4fbde3c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Funding.html @@ -0,0 +1,108 @@ + + +Funding - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Previous: Contributing, +Up: Top +



+
+ + +

Funding Free Software

+ +

If you want to have more free software a few years from now, it makes +sense for you to help encourage people to contribute funds for its +development. The most effective approach known is to encourage +commercial redistributors to donate. + +

Users of free software systems can boost the pace of development by +encouraging for-a-fee distributors to donate part of their selling price +to free software developers—the Free Software Foundation, and others. + +

The way to convince distributors to do this is to demand it and expect +it from them. So when you compare distributors, judge them partly by +how much they give to free software development. Show distributors +they must compete to be the one who gives the most. + +

To make this approach work, you must insist on numbers that you can +compare, such as, “We will donate ten dollars to the Frobnitz project +for each disk sold.” Don't be satisfied with a vague promise, such as +“A portion of the profits are donated,” since it doesn't give a basis +for comparison. + +

Even a precise fraction “of the profits from this disk” is not very +meaningful, since creative accounting and unrelated business decisions +can greatly alter what fraction of the sales price counts as profit. +If the price you pay is $50, ten percent of the profit is probably +less than a dollar; it might be a few cents, or nothing at all. + +

Some redistributors do development work themselves. This is useful too; +but to keep everyone honest, you need to inquire how much they do, and +what kind. Some kinds of development make much more long-term +difference than others. For example, maintaining a separate version of +a program contributes very little; maintaining the standard version of a +program for the whole community contributes much. Easy new ports +contribute little, since someone else would surely do them; difficult +ports such as adding a new CPU to the GNU Compiler Collection contribute more; +major new features or packages contribute the most. + +

By establishing the idea that supporting further development is “the +proper thing to do” when distributing free software for a fee, we can +assure a steady flow of resources into making more free software. + + +

     
+     Copyright © 1994 Free Software Foundation, Inc.
+     Verbatim copying and redistribution of this section is permitted
+     without royalty; alteration is not permitted.
+     
+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..0dd6f63 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU-Free-Documentation-License.html @@ -0,0 +1,471 @@ + + +GNU Free Documentation License - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Copying, +Up: Top +



+
+ +

GNU Free Documentation License

+ +

Version 1.2, November 2002
+ +
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. + +

    Examples of suitable formats for Transparent copies include plain +ascii without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +

    A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. + +

    The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +

  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +

  4. COPYING IN QUANTITY + +

    If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +

  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

      +
    1. Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +
    3. State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +
    13. Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +
    14. Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +
    15. Preserve any Warranty Disclaimers. +
    + +

    If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +

  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” + +

  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +

  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +

  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +

    If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +

  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +

  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

       Copyright (C)  year  your name.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.2
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with...Texts.” line with this: + +

         with the Invariant Sections being list their titles, with
+         the Front-Cover Texts being list, and with the Back-Cover Texts
+         being list.
+
+

If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU-Project.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU-Project.html new file mode 100644 index 0000000..97f09e0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU-Project.html @@ -0,0 +1,69 @@ + + +GNU Project - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Previous: Funding, +Up: Top +



+
+ +

The GNU Project and GNU/Linux

+ +

The GNU Project was launched in 1984 to develop a complete Unix-like +operating system which is free software: the GNU system. (GNU is a +recursive acronym for “GNU's Not Unix”; it is pronounced +“guh-NEW”.) Variants of the GNU operating system, which use the +kernel Linux, are now widely used; though these systems are often +referred to as “Linux”, they are more accurately called GNU/Linux +systems. + +

For more information, see: +

     http://www.gnu.org/
+     http://www.gnu.org/gnu/linux-and-gnu.html
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU_002fLinux-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU_002fLinux-Options.html new file mode 100644 index 0000000..e06649a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/GNU_002fLinux-Options.html @@ -0,0 +1,68 @@ + + +GNU/Linux Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: FRV Options, +Up: Submodel Options +



+
+ +

3.17.11 GNU/Linux Options

+ +

These -m options are defined for GNU/Linux targets: + +

+
-mglibc
Use the GNU C library instead of uClibc. This is the default except +on *-*-linux-*uclibc* targets. + +
-muclibc
Use uClibc instead of the GNU C library. This is the default on +*-*-linux-*uclibc* targets. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/G_002b_002b-and-GCC.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/G_002b_002b-and-GCC.html new file mode 100644 index 0000000..3dd6f4d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/G_002b_002b-and-GCC.html @@ -0,0 +1,99 @@ + + +G++ and GCC - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

Using the GNU Compiler Collection (GCC)

+
+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 Programming Languages Supported by GCC

+ +

GCC stands for “GNU Compiler Collection”. GCC is an integrated +distribution of compilers for several major programming languages. These +languages currently include C, C++, Objective-C, Objective-C++, Java, +Fortran, and Ada. + +

The abbreviation GCC has multiple meanings in common use. The +current official meaning is “GNU Compiler Collection”, which refers +generically to the complete suite of tools. The name historically stood +for “GNU C Compiler”, and this usage is still common when the emphasis +is on compiling C programs. Finally, the name is also used when speaking +of the language-independent component of GCC: code shared among the +compilers for all supported languages. + +

The language-independent component of GCC includes the majority of the +optimizers, as well as the “back ends” that generate machine code for +various processors. + +

The part of a compiler that is specific to a particular language is +called the “front end”. In addition to the front ends that are +integrated components of GCC, there are several other front ends that +are maintained separately. These support languages such as Pascal, +Mercury, and COBOL. To use these, they must be built together with +GCC proper. + +

Most of the compilers for languages other than C have their own names. +The C++ compiler is G++, the Ada compiler is GNAT, and so on. When we +talk about compiling one of those languages, we might refer to that +compiler by its own name, or as GCC. Either is correct. + +

Historically, compilers for many languages, including C++ and Fortran, +have been implemented as “preprocessors” which emit another high +level language such as C. None of the compilers included in GCC are +implemented this way; they all generate machine code directly. This +sort of preprocessor should not be confused with the C +preprocessor, which is an integral feature of the C, C++, Objective-C +and Objective-C++ languages. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Garbage-Collection.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Garbage-Collection.html new file mode 100644 index 0000000..9af372b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Garbage-Collection.html @@ -0,0 +1,130 @@ + + +Garbage Collection - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Type encoding, +Up: Objective-C +



+
+ +

7.3 Garbage Collection

+ +

Support for a new memory management policy has been added by using a +powerful conservative garbage collector, known as the +Boehm-Demers-Weiser conservative garbage collector. It is available from +http://www.hpl.hp.com/personal/Hans_Boehm/gc/. + +

To enable the support for it you have to configure the compiler using an +additional argument, --enable-objc-gc. You need to have +garbage collector installed before building the compiler. This will +build an additional runtime library which has several enhancements to +support the garbage collector. The new library has a new name, +libobjc_gc.a to not conflict with the non-garbage-collected +library. + +

When the garbage collector is used, the objects are allocated using the +so-called typed memory allocation mechanism available in the +Boehm-Demers-Weiser collector. This mode requires precise information on +where pointers are located inside objects. This information is computed +once per class, immediately after the class has been initialized. + +

There is a new runtime function class_ivar_set_gcinvisible() +which can be used to declare a so-called weak pointer +reference. Such a pointer is basically hidden for the garbage collector; +this can be useful in certain situations, especially when you want to +keep track of the allocated objects, yet allow them to be +collected. This kind of pointers can only be members of objects, you +cannot declare a global pointer as a weak reference. Every type which is +a pointer type can be declared a weak pointer, including id, +Class and SEL. + +

Here is an example of how to use this feature. Suppose you want to +implement a class whose instances hold a weak pointer reference; the +following class does this: + +

     
+     @interface WeakPointer : Object
+     {
+         const void* weakPointer;
+     }
+     
+     - initWithPointer:(const void*)p;
+     - (const void*)weakPointer;
+     @end
+     
+     
+     @implementation WeakPointer
+     
+     + (void)initialize
+     {
+       class_ivar_set_gcinvisible (self, "weakPointer", YES);
+     }
+     
+     - initWithPointer:(const void*)p
+     {
+       weakPointer = p;
+       return self;
+     }
+     
+     - (const void*)weakPointer
+     {
+       return weakPointer;
+     }
+     
+     @end
+     
+
+

Weak pointers are supported through a new type character specifier +represented by the ! character. The +class_ivar_set_gcinvisible() function adds or removes this +specifier to the string type description of the instance variable named +as argument. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-Data-Files.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-Data-Files.html new file mode 100644 index 0000000..37bee7f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-Data-Files.html @@ -0,0 +1,79 @@ + + +Gcov Data Files - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Gcov and Optimization, +Up: Gcov +



+
+ +

9.4 Brief description of gcov data files

+ +

gcov uses two files for profiling. The names of these files +are derived from the original object file by substituting the +file suffix with either .gcno, or .gcda. All of these files +are placed in the same directory as the object file, and contain data +stored in a platform-independent format. + +

The .gcno file is generated when the source file is compiled with +the GCC -ftest-coverage option. It contains information to +reconstruct the basic block graphs and assign source line numbers to +blocks. + +

The .gcda file is generated when a program containing object files +built with the GCC -fprofile-arcs option is executed. A +separate .gcda file is created for each object file compiled with +this option. It contains arc transition counts, and some summary +information. + +

The full details of the file format is specified in gcov-io.h, +and functions provided in that header file should be used to access the +coverage files. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-Intro.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-Intro.html new file mode 100644 index 0000000..f23d3d1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-Intro.html @@ -0,0 +1,113 @@ + + +Gcov Intro - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Up: Gcov +



+
+ +

9.1 Introduction to gcov

+ + +

gcov is a test coverage program. Use it in concert with GCC +to analyze your programs to help create more efficient, faster running +code and to discover untested parts of your program. You can use +gcov as a profiling tool to help discover where your +optimization efforts will best affect your code. You can also use +gcov along with the other profiling tool, gprof, to +assess which parts of your code use the greatest amount of computing +time. + +

Profiling tools help you analyze your code's performance. Using a +profiler such as gcov or gprof, you can find out some +basic performance statistics, such as: + +

    +
  • how often each line of code executes + +
  • what lines of code are actually executed + +
  • how much computing time each section of code uses +
+ +

Once you know these things about how your code works when compiled, you +can look at each module to see which modules should be optimized. +gcov helps you determine where to work on optimization. + +

Software developers also use coverage testing in concert with +testsuites, to make sure software is actually good enough for a release. +Testsuites can verify that a program works as expected; a coverage +program tests to see how much of the program is exercised by the +testsuite. Developers can then determine what kinds of test cases need +to be added to the testsuites to create both better testing and a better +final product. + +

You should compile your code without optimization if you plan to use +gcov because the optimization, by combining some lines of code +into one function, may not give you as much information as you need to +look for `hot spots' where the code is using a great deal of computer +time. Likewise, because gcov accumulates statistics by line (at +the lowest resolution), it works best with a programming style that +places only one statement on each line. If you use complicated macros +that expand to loops or to other control structures, the statistics are +less helpful—they only report on the line where the macro call +appears. If your complex macros behave like functions, you can replace +them with inline functions to solve this problem. + +

gcov creates a logfile called sourcefile.gcov which +indicates how many times each line of a source file sourcefile.c +has executed. You can use these logfiles along with gprof to aid +in fine-tuning the performance of your programs. gprof gives +timing information you can use along with the information you get from +gcov. + +

gcov works only on code compiled with GCC. It is not +compatible with any other profiling or test coverage mechanism. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-and-Optimization.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-and-Optimization.html new file mode 100644 index 0000000..404e35d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov-and-Optimization.html @@ -0,0 +1,111 @@ + + +Gcov and Optimization - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Invoking Gcov, +Up: Gcov +



+
+ +

9.3 Using gcov with GCC Optimization

+ +

If you plan to use gcov to help optimize your code, you must +first compile your program with two special GCC options: +-fprofile-arcs -ftest-coverage. Aside from that, you can use any +other GCC options; but if you want to prove that every single line +in your program was executed, you should not compile with optimization +at the same time. On some machines the optimizer can eliminate some +simple code lines by combining them with other lines. For example, code +like this: + +

     if (a != b)
+       c = 1;
+     else
+       c = 0;
+
+

can be compiled into one instruction on some machines. In this case, +there is no way for gcov to calculate separate execution counts +for each line because there isn't separate code for each line. Hence +the gcov output looks like this if you compiled the program with +optimization: + +

           100:   12:if (a != b)
+           100:   13:  c = 1;
+           100:   14:else
+           100:   15:  c = 0;
+
+

The output shows that this block of code, combined by optimization, +executed 100 times. In one sense this result is correct, because there +was only one instruction representing all four of these lines. However, +the output does not indicate how many times the result was 0 and how +many times the result was 1. + +

Inlineable functions can create unexpected line counts. Line counts are +shown for the source code of the inlineable function, but what is shown +depends on where the function is inlined, or if it is not inlined at all. + +

If the function is not inlined, the compiler must emit an out of line +copy of the function, in any object file that needs it. If +fileA.o and fileB.o both contain out of line bodies of a +particular inlineable function, they will also both contain coverage +counts for that function. When fileA.o and fileB.o are +linked together, the linker will, on many systems, select one of those +out of line bodies for all calls to that function, and remove or ignore +the other. Unfortunately, it will not remove the coverage counters for +the unused function body. Hence when instrumented, all but one use of +that function will show zero counts. + +

If the function is inlined in several places, the block structure in +each location might not be the same. For instance, a condition might +now be calculable at compile time in some instances. Because the +coverage of all the uses of the inline function will be shown for the +same source lines, the line counts themselves might seem inconsistent. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov.html new file mode 100644 index 0000000..313c1ba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Gcov.html @@ -0,0 +1,68 @@ + + +Gcov - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Previous: Compatibility, +Up: Top +



+
+ +

9 gcov—a Test Coverage Program

+ +

gcov is a tool you can use in conjunction with GCC to +test code coverage in your programs. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Global-Reg-Vars.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Global-Reg-Vars.html new file mode 100644 index 0000000..42c4c2f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Global-Reg-Vars.html @@ -0,0 +1,140 @@ + + +Global Reg Vars - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Up: Explicit Reg Vars +



+
+ +

5.40.1 Defining Global Register Variables

+ +

+You can define a global register variable in GNU C like this: + +

     register int *foo asm ("a5");
+
+

Here a5 is the name of the register which should be used. Choose a +register which is normally saved and restored by function calls on your +machine, so that library routines will not clobber it. + +

Naturally the register name is cpu-dependent, so you would need to +conditionalize your program according to cpu type. The register +a5 would be a good choice on a 68000 for a variable of pointer +type. On machines with register windows, be sure to choose a “global” +register that is not affected magically by the function call mechanism. + +

In addition, operating systems on one type of cpu may differ in how they +name the registers; then you would need additional conditionals. For +example, some 68000 operating systems call this register %a5. + +

Eventually there may be a way of asking the compiler to choose a register +automatically, but first we need to figure out how it should choose and +how to enable you to guide the choice. No solution is evident. + +

Defining a global register variable in a certain register reserves that +register entirely for this use, at least within the current compilation. +The register will not be allocated for any other purpose in the functions +in the current compilation. The register will not be saved and restored by +these functions. Stores into this register are never deleted even if they +would appear to be dead, but references may be deleted or moved or +simplified. + +

It is not safe to access the global register variables from signal +handlers, or from more than one thread of control, because the system +library routines may temporarily use the register for other things (unless +you recompile them specially for the task at hand). + +

It is not safe for one function that uses a global register variable to +call another such function foo by way of a third function +lose that was compiled without knowledge of this variable (i.e. in a +different source file in which the variable wasn't declared). This is +because lose might save the register and put some other value there. +For example, you can't expect a global register variable to be available in +the comparison-function that you pass to qsort, since qsort +might have put something else in that register. (If you are prepared to +recompile qsort with the same global register variable, you can +solve this problem.) + +

If you want to recompile qsort or other source files which do not +actually use your global register variable, so that they will not use that +register for any other purpose, then it suffices to specify the compiler +option -ffixed-reg. You need not actually add a global +register declaration to their source code. + +

A function which can alter the value of a global register variable cannot +safely be called from a function compiled without this variable, because it +could clobber the value the caller expects to find there on return. +Therefore, the function which is the entry point into the part of the +program that uses the global register variable must explicitly save and +restore the value which belongs to its caller. + +

On most machines, longjmp will restore to each global register +variable the value it had at the time of the setjmp. On some +machines, however, longjmp will not change the value of global +register variables. To be portable, the function that called setjmp +should make other arrangements to save the values of the global register +variables, and to restore them in a longjmp. This way, the same +thing will happen regardless of what longjmp does. + +

All global register variable declarations must precede all function +definitions. If such a declaration could appear after function +definitions, the declaration would be too late to prevent the register from +being used for other purposes in the preceding functions. + +

Global register variables may not have initial values, because an +executable file has no means to supply initial contents for a register. + +

On the SPARC, there are reports that g3 ... g7 are suitable +registers, but certain library functions, such as getwd, as well +as the subroutines for division and remainder, modify g3 and g4. g1 and +g2 are local temporaries. + +

On the 68000, a2 ... a5 should be suitable, as should d2 ... d7. +Of course, it will not do to use more than a few of those. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/H8_002f300-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/H8_002f300-Options.html new file mode 100644 index 0000000..2e6067e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/H8_002f300-Options.html @@ -0,0 +1,82 @@ + + +H8/300 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: GNU/Linux Options, +Up: Submodel Options +



+
+ +

3.17.12 H8/300 Options

+ +

These -m options are defined for the H8/300 implementations: + +

+
-mrelax
Shorten some address references at link time, when possible; uses the +linker option -relax. See ld and the H8/300 (Using ld), for a fuller description. + +
-mh
Generate code for the H8/300H. + +
-ms
Generate code for the H8S. + +
-mn
Generate code for the H8S and H8/300H in the normal mode. This switch +must be used either with -mh or -ms. + +
-ms2600
Generate code for the H8S/2600. This switch must be used with -ms. + +
-mint32
Make int data 32 bits by default. + +
-malign-300
On the H8/300H and H8S, use the same alignment rules as for the H8/300. +The default for the H8/300H and H8S is to align longs and floats on 4 +byte boundaries. +-malign-300 causes them to be aligned on 2 byte boundaries. +This option has no effect on the H8/300. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/HPPA-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/HPPA-Options.html new file mode 100644 index 0000000..5b1972d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/HPPA-Options.html @@ -0,0 +1,233 @@ + + +HPPA Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: H8/300 Options, +Up: Submodel Options +



+
+ +

3.17.13 HPPA Options

+ +

+These -m options are defined for the HPPA family of computers: + +

+
-march=architecture-type
Generate code for the specified architecture. The choices for +architecture-type are 1.0 for PA 1.0, 1.1 for PA +1.1, and 2.0 for PA 2.0 processors. Refer to +/usr/lib/sched.models on an HP-UX system to determine the proper +architecture option for your machine. Code compiled for lower numbered +architectures will run on higher numbered architectures, but not the +other way around. + +
-mpa-risc-1-0
-mpa-risc-1-1
-mpa-risc-2-0
Synonyms for -march=1.0, -march=1.1, and -march=2.0 respectively. + +
-mbig-switch
Generate code suitable for big switch tables. Use this option only if +the assembler/linker complain about out of range branches within a switch +table. + +
-mjump-in-delay
Fill delay slots of function calls with unconditional jump instructions +by modifying the return pointer for the function call to be the target +of the conditional jump. + +
-mdisable-fpregs
Prevent floating point registers from being used in any manner. This is +necessary for compiling kernels which perform lazy context switching of +floating point registers. If you use this option and attempt to perform +floating point operations, the compiler will abort. + +
-mdisable-indexing
Prevent the compiler from using indexing address modes. This avoids some +rather obscure problems when compiling MIG generated code under MACH. + +
-mno-space-regs
Generate code that assumes the target has no space registers. This allows +GCC to generate faster indirect calls and use unscaled index address modes. + +

Such code is suitable for level 0 PA systems and kernels. + +

-mfast-indirect-calls
Generate code that assumes calls never cross space boundaries. This +allows GCC to emit code which performs faster indirect calls. + +

This option will not work in the presence of shared libraries or nested +functions. + +

-mfixed-range=register-range
Generate code treating the given register range as fixed registers. +A fixed register is one that the register allocator can not use. This is +useful when compiling kernel code. A register range is specified as +two registers separated by a dash. Multiple register ranges can be +specified separated by a comma. + +
-mlong-load-store
Generate 3-instruction load and store sequences as sometimes required by +the HP-UX 10 linker. This is equivalent to the +k option to +the HP compilers. + +
-mportable-runtime
Use the portable calling conventions proposed by HP for ELF systems. + +
-mgas
Enable the use of assembler directives only GAS understands. + +
-mschedule=cpu-type
Schedule code according to the constraints for the machine type +cpu-type. The choices for cpu-type are 700 +7100, 7100LC, 7200, 7300 and 8000. Refer +to /usr/lib/sched.models on an HP-UX system to determine the +proper scheduling option for your machine. The default scheduling is +8000. + +
-mlinker-opt
Enable the optimization pass in the HP-UX linker. Note this makes symbolic +debugging impossible. It also triggers a bug in the HP-UX 8 and HP-UX 9 +linkers in which they give bogus error messages when linking some programs. + +
-msoft-float
Generate output containing library calls for floating point. +Warning: the requisite libraries are not available for all HPPA +targets. Normally the facilities of the machine's usual C compiler are +used, but this cannot be done directly in cross-compilation. You must make +your own arrangements to provide suitable library functions for +cross-compilation. The embedded target hppa1.1-*-pro +does provide software floating point support. + +

-msoft-float changes the calling convention in the output file; +therefore, it is only useful if you compile all of a program with +this option. In particular, you need to compile libgcc.a, the +library that comes with GCC, with -msoft-float in order for +this to work. + +

-msio
Generate the predefine, _SIO, for server IO. The default is +-mwsio. This generates the predefines, __hp9000s700, +__hp9000s700__ and _WSIO, for workstation IO. These +options are available under HP-UX and HI-UX. + +
-mgnu-ld
Use GNU ld specific options. This passes -shared to ld when +building a shared library. It is the default when GCC is configured, +explicitly or implicitly, with the GNU linker. This option does not +have any affect on which ld is called, it only changes what parameters +are passed to that ld. The ld that is called is determined by the +--with-ld configure option, GCC's program search path, and +finally by the user's PATH. The linker used by GCC can be printed +using which `gcc -print-prog-name=ld`. This option is only available +on the 64 bit HP-UX GCC, i.e. configured with hppa*64*-*-hpux*. + +
-mhp-ld
Use HP ld specific options. This passes -b to ld when building +a shared library and passes +Accept TypeMismatch to ld on all +links. It is the default when GCC is configured, explicitly or +implicitly, with the HP linker. This option does not have any affect on +which ld is called, it only changes what parameters are passed to that +ld. The ld that is called is determined by the --with-ld +configure option, GCC's program search path, and finally by the user's +PATH. The linker used by GCC can be printed using which +`gcc -print-prog-name=ld`. This option is only available on the 64 bit +HP-UX GCC, i.e. configured with hppa*64*-*-hpux*. + +
-mlong-calls
Generate code that uses long call sequences. This ensures that a call +is always able to reach linker generated stubs. The default is to generate +long calls only when the distance from the call site to the beginning +of the function or translation unit, as the case may be, exceeds a +predefined limit set by the branch type being used. The limits for +normal calls are 7,600,000 and 240,000 bytes, respectively for the +PA 2.0 and PA 1.X architectures. Sibcalls are always limited at +240,000 bytes. + +

Distances are measured from the beginning of functions when using the +-ffunction-sections option, or when using the -mgas +and -mno-portable-runtime options together under HP-UX with +the SOM linker. + +

It is normally not desirable to use this option as it will degrade +performance. However, it may be useful in large applications, +particularly when partial linking is used to build the application. + +

The types of long calls used depends on the capabilities of the +assembler and linker, and the type of code being generated. The +impact on systems that support long absolute calls, and long pic +symbol-difference or pc-relative calls should be relatively small. +However, an indirect call is used on 32-bit ELF systems in pic code +and it is quite long. + +

-munix=unix-std
Generate compiler predefines and select a startfile for the specified +UNIX standard. The choices for unix-std are 93, 95 +and 98. 93 is supported on all HP-UX versions. 95 +is available on HP-UX 10.10 and later. 98 is available on HP-UX +11.11 and later. The default values are 93 for HP-UX 10.00, +95 for HP-UX 10.10 though to 11.00, and 98 for HP-UX 11.11 +and later. + +

-munix=93 provides the same predefines as GCC 3.3 and 3.4. +-munix=95 provides additional predefines for XOPEN_UNIX +and _XOPEN_SOURCE_EXTENDED, and the startfile unix95.o. +-munix=98 provides additional predefines for _XOPEN_UNIX, +_XOPEN_SOURCE_EXTENDED, _INCLUDE__STDC_A1_SOURCE and +_INCLUDE_XOPEN_SOURCE_500, and the startfile unix98.o. + +

It is important to note that this option changes the interfaces +for various library routines. It also affects the operational behavior +of the C library. Thus, extreme care is needed in using this +option. + +

Library code that is intended to operate with more than one UNIX +standard must test, set and restore the variable __xpg4_extended_mask +as appropriate. Most GNU software doesn't provide this capability. + +

-nolibdld
Suppress the generation of link options to search libdld.sl when the +-static option is specified on HP-UX 10 and later. + +
-static
The HP-UX implementation of setlocale in libc has a dependency on +libdld.sl. There isn't an archive version of libdld.sl. Thus, +when the -static option is specified, special link options +are needed to resolve this dependency. + +

On HP-UX 10 and later, the GCC driver adds the necessary options to +link with libdld.sl when the -static option is specified. +This causes the resulting binary to be dynamic. On the 64-bit port, +the linkers generate dynamic binaries by default in any case. The +-nolibdld option can be used to prevent the GCC driver from +adding these link options. + +

-threads
Add support for multithreading with the dce thread library +under HP-UX. This option sets flags for both the preprocessor and +linker. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Hex-Floats.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Hex-Floats.html new file mode 100644 index 0000000..a1d11b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Hex-Floats.html @@ -0,0 +1,77 @@ + + +Hex Floats - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Decimal Float, +Up: C Extensions +



+
+ +

5.12 Hex Floats

+ +

+ISO C99 supports floating-point numbers written not only in the usual +decimal notation, such as 1.55e1, but also numbers such as +0x1.fp3 written in hexadecimal format. As a GNU extension, GCC +supports this in C89 mode (except in some cases when strictly +conforming) and in C++. In that format the +0x hex introducer and the p or P exponent field are +mandatory. The exponent is a decimal number that indicates the power of +2 by which the significant part will be multiplied. Thus 0x1.f is +1 15/16, +p3 multiplies it by 8, and the value of 0x1.fp3 +is the same as 1.55e1. + +

Unlike for floating-point numbers in the decimal notation the exponent +is always required in the hexadecimal notation. Otherwise the compiler +would not be able to resolve the ambiguity of, e.g., 0x1.f. This +could mean 1.0f or 1.9375 since f is also the +extension for floating-point constants of type float. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Hints-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Hints-implementation.html new file mode 100644 index 0000000..8b953d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Hints-implementation.html @@ -0,0 +1,90 @@ + + +Hints implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.8 Hints

+ +
    +
  • The extent to which suggestions made by using the register +storage-class specifier are effective (C90 6.5.1, C99 6.7.1). + +

    The register specifier affects code generation only in these ways: + +

      +
    • When used as part of the register variable extension, see +Explicit Reg Vars. + +
    • When -O0 is in use, the compiler allocates distinct stack +memory for all variables that do not have the register +storage-class specifier; if register is specified, the variable +may have a shorter lifespan than the code would indicate and may never +be placed in memory. + +
    • On some rare x86 targets, setjmp doesn't save the registers in +all circumstances. In those cases, GCC doesn't allocate any variables +in registers unless they are marked register. + +
    + +
  • The extent to which suggestions made by using the inline function +specifier are effective (C99 6.7.4). + +

    GCC will not inline any functions if the -fno-inline option is +used or if -O0 is used. Otherwise, GCC may still be unable to +inline a function for many reasons; the -Winline option may be +used to determine if a function has not been inlined and why not. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/IA_002d64-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/IA_002d64-Options.html new file mode 100644 index 0000000..f0d7c07 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/IA_002d64-Options.html @@ -0,0 +1,201 @@ + + +IA-64 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: i386 and x86-64 Options, +Up: Submodel Options +



+
+ +

3.17.15 IA-64 Options

+ +

+These are the -m options defined for the Intel IA-64 architecture. + +

+
-mbig-endian
Generate code for a big endian target. This is the default for HP-UX. + +
-mlittle-endian
Generate code for a little endian target. This is the default for AIX5 +and GNU/Linux. + +
-mgnu-as
-mno-gnu-as
Generate (or don't) code for the GNU assembler. This is the default. + + + +
-mgnu-ld
-mno-gnu-ld
Generate (or don't) code for the GNU linker. This is the default. + + + +
-mno-pic
Generate code that does not use a global pointer register. The result +is not position independent code, and violates the IA-64 ABI. + +
-mvolatile-asm-stop
-mno-volatile-asm-stop
Generate (or don't) a stop bit immediately before and after volatile asm +statements. + +
-mregister-names
-mno-register-names
Generate (or don't) in, loc, and out register names for +the stacked registers. This may make assembler output more readable. + +
-mno-sdata
-msdata
Disable (or enable) optimizations that use the small data section. This may +be useful for working around optimizer bugs. + +
-mconstant-gp
Generate code that uses a single constant global pointer value. This is +useful when compiling kernel code. + +
-mauto-pic
Generate code that is self-relocatable. This implies -mconstant-gp. +This is useful when compiling firmware code. + +
-minline-float-divide-min-latency
Generate code for inline divides of floating point values +using the minimum latency algorithm. + +
-minline-float-divide-max-throughput
Generate code for inline divides of floating point values +using the maximum throughput algorithm. + +
-minline-int-divide-min-latency
Generate code for inline divides of integer values +using the minimum latency algorithm. + +
-minline-int-divide-max-throughput
Generate code for inline divides of integer values +using the maximum throughput algorithm. + +
-minline-sqrt-min-latency
Generate code for inline square roots +using the minimum latency algorithm. + +
-minline-sqrt-max-throughput
Generate code for inline square roots +using the maximum throughput algorithm. + +
-mno-dwarf2-asm
-mdwarf2-asm
Don't (or do) generate assembler code for the DWARF2 line number debugging +info. This may be useful when not using the GNU assembler. + +
-mearly-stop-bits
-mno-early-stop-bits
Allow stop bits to be placed earlier than immediately preceding the +instruction that triggered the stop bit. This can improve instruction +scheduling, but does not always do so. + +
-mfixed-range=register-range
Generate code treating the given register range as fixed registers. +A fixed register is one that the register allocator can not use. This is +useful when compiling kernel code. A register range is specified as +two registers separated by a dash. Multiple register ranges can be +specified separated by a comma. + +
-mtls-size=tls-size
Specify bit size of immediate TLS offsets. Valid values are 14, 22, and +64. + +
-mtune=cpu-type
Tune the instruction scheduling for a particular CPU, Valid values are +itanium, itanium1, merced, itanium2, and mckinley. + +
-mt
-pthread
Add support for multithreading using the POSIX threads library. This +option sets flags for both the preprocessor and linker. It does +not affect the thread safety of object code produced by the compiler or +that of libraries supplied with it. These are HP-UX specific flags. + +
-milp32
-mlp64
Generate code for a 32-bit or 64-bit environment. +The 32-bit environment sets int, long and pointer to 32 bits. +The 64-bit environment sets int to 32 bits and long and pointer +to 64 bits. These are HP-UX specific flags. + +
-mno-sched-br-data-spec
-msched-br-data-spec
(Dis/En)able data speculative scheduling before reload. +This will result in generation of the ld.a instructions and +the corresponding check instructions (ld.c / chk.a). +The default is 'disable'. + +
-msched-ar-data-spec
-mno-sched-ar-data-spec
(En/Dis)able data speculative scheduling after reload. +This will result in generation of the ld.a instructions and +the corresponding check instructions (ld.c / chk.a). +The default is 'enable'. + +
-mno-sched-control-spec
-msched-control-spec
(Dis/En)able control speculative scheduling. This feature is +available only during region scheduling (i.e. before reload). +This will result in generation of the ld.s instructions and +the corresponding check instructions chk.s . +The default is 'disable'. + +
-msched-br-in-data-spec
-mno-sched-br-in-data-spec
(En/Dis)able speculative scheduling of the instructions that +are dependent on the data speculative loads before reload. +This is effective only with -msched-br-data-spec enabled. +The default is 'enable'. + +
-msched-ar-in-data-spec
-mno-sched-ar-in-data-spec
(En/Dis)able speculative scheduling of the instructions that +are dependent on the data speculative loads after reload. +This is effective only with -msched-ar-data-spec enabled. +The default is 'enable'. + +
-msched-in-control-spec
-mno-sched-in-control-spec
(En/Dis)able speculative scheduling of the instructions that +are dependent on the control speculative loads. +This is effective only with -msched-control-spec enabled. +The default is 'enable'. + +
-msched-ldc
-mno-sched-ldc
(En/Dis)able use of simple data speculation checks ld.c . +If disabled, only chk.a instructions will be emitted to check +data speculative loads. +The default is 'enable'. + +
-mno-sched-control-ldc
-msched-control-ldc
(Dis/En)able use of ld.c instructions to check control speculative loads. +If enabled, in case of control speculative load with no speculatively +scheduled dependent instructions this load will be emitted as ld.sa and +ld.c will be used to check it. +The default is 'disable'. + +
-mno-sched-spec-verbose
-msched-spec-verbose
(Dis/En)able printing of the information about speculative motions. + +
-mno-sched-prefer-non-data-spec-insns
-msched-prefer-non-data-spec-insns
If enabled, data speculative instructions will be chosen for schedule +only if there are no other choices at the moment. This will make +the use of the data speculation much more conservative. +The default is 'disable'. + +
-mno-sched-prefer-non-control-spec-insns
-msched-prefer-non-control-spec-insns
If enabled, control speculative instructions will be chosen for schedule +only if there are no other choices at the moment. This will make +the use of the control speculation much more conservative. +The default is 'disable'. + +
-mno-sched-count-spec-in-critical-path
-msched-count-spec-in-critical-path
If enabled, speculative dependencies will be considered during +computation of the instructions priorities. This will make the use of the +speculation a bit more conservative. +The default is 'disable'. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Identifiers-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Identifiers-implementation.html new file mode 100644 index 0000000..bd8a189 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Identifiers-implementation.html @@ -0,0 +1,80 @@ + + +Identifiers implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

4.3 Identifiers

+ +
    +
  • Which additional multibyte characters may appear in identifiers +and their correspondence to universal character names (C99 6.4.2). + +

    See Implementation-defined behavior (The C Preprocessor). + +

  • The number of significant initial characters in an identifier +(C90 6.1.2, C90 and C99 5.2.4.1, C99 6.4.2). + +

    For internal names, all characters are significant. For external names, +the number of significant characters are defined by the linker; for +almost all targets, all characters are significant. + +

  • Whether case distinctions are significant in an identifier with +external linkage (C90 6.1.2). + +

    This is a property of the linker. C99 requires that case distinctions +are always significant in identifiers with external linkage and +systems without this property are not supported by GCC. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Incompatibilities.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Incompatibilities.html new file mode 100644 index 0000000..5fb22fe --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Incompatibilities.html @@ -0,0 +1,248 @@ + + +Incompatibilities - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Interoperation, +Up: Trouble +



+
+ +

10.4 Incompatibilities of GCC

+ +

+There are several noteworthy incompatibilities between GNU C and K&R +(non-ISO) versions of C. + + + + + +

  • GCC normally makes string constants read-only. If several +identical-looking string constants are used, GCC stores only one +copy of the string. + +

    One consequence is that you cannot call mktemp with a string +constant argument. The function mktemp always alters the +string its argument points to. + +

    Another consequence is that sscanf does not work on some very +old systems when passed a string constant as its format control string +or input. This is because sscanf incorrectly tries to write +into the string constant. Likewise fscanf and scanf. + +

    The solution to these problems is to change the program to use +char-array variables with initialization strings for these +purposes instead of string constants. + +

  • -2147483648 is positive. + +

    This is because 2147483648 cannot fit in the type int, so +(following the ISO C rules) its data type is unsigned long int. +Negating this value yields 2147483648 again. + +

  • GCC does not substitute macro arguments when they appear inside of +string constants. For example, the following macro in GCC + +
              #define foo(a) "a"
    +     
    +

    will produce output "a" regardless of what the argument a is. + +

  • When you use setjmp and longjmp, the only automatic +variables guaranteed to remain valid are those declared +volatile. This is a consequence of automatic register +allocation. Consider this function: + +
              jmp_buf j;
    +          
    +          foo ()
    +          {
    +            int a, b;
    +          
    +            a = fun1 ();
    +            if (setjmp (j))
    +              return a;
    +          
    +            a = fun2 ();
    +            /* longjmp (j) may occur in fun3. */
    +            return a + fun3 ();
    +          }
    +     
    +

    Here a may or may not be restored to its first value when the +longjmp occurs. If a is allocated in a register, then +its first value is restored; otherwise, it keeps the last value stored +in it. + +

    If you use the -W option with the -O option, you will +get a warning when GCC thinks such a problem might be possible. + +

  • Programs that use preprocessing directives in the middle of macro +arguments do not work with GCC. For example, a program like this +will not work: + +
              foobar (
    +          #define luser
    +                  hack)
    +     
    +

    ISO C does not permit such a construct. + +

  • K&R compilers allow comments to cross over an inclusion boundary +(i.e. started in an include file and ended in the including file). + +

  • Declarations of external variables and functions within a block apply +only to the block containing the declaration. In other words, they +have the same scope as any other declaration in the same place. + +

    In some other C compilers, a extern declaration affects all the +rest of the file even if it happens within a block. + +

  • In traditional C, you can combine long, etc., with a typedef name, +as shown here: + +
              typedef int foo;
    +          typedef long foo bar;
    +     
    +

    In ISO C, this is not allowed: long and other type modifiers +require an explicit int. + +

  • PCC allows typedef names to be used as function parameters. + +
  • Traditional C allows the following erroneous pair of declarations to +appear together in a given scope: + +
              typedef int foo;
    +          typedef foo foo;
    +     
    +
  • GCC treats all characters of identifiers as significant. According to +K&R-1 (2.2), “No more than the first eight characters are significant, +although more may be used.”. Also according to K&R-1 (2.2), “An +identifier is a sequence of letters and digits; the first character must +be a letter. The underscore _ counts as a letter.”, but GCC also +allows dollar signs in identifiers. + +

  • PCC allows whitespace in the middle of compound assignment operators +such as +=. GCC, following the ISO standard, does not +allow this. + +

  • GCC complains about unterminated character constants inside of +preprocessing conditionals that fail. Some programs have English +comments enclosed in conditionals that are guaranteed to fail; if these +comments contain apostrophes, GCC will probably report an error. For +example, this code would produce an error: + +
              #if 0
    +          You can't expect this to work.
    +          #endif
    +     
    +

    The best solution to such a problem is to put the text into an actual +C comment delimited by /*...*/. + +

  • Many user programs contain the declaration long time ();. In the +past, the system header files on many systems did not actually declare +time, so it did not matter what type your program declared it to +return. But in systems with ISO C headers, time is declared to +return time_t, and if that is not the same as long, then +long time (); is erroneous. + +

    The solution is to change your program to use appropriate system headers +(<time.h> on systems with ISO C headers) and not to declare +time if the system header files declare it, or failing that to +use time_t as the return type of time. + +

  • When compiling functions that return float, PCC converts it to +a double. GCC actually returns a float. If you are concerned +with PCC compatibility, you should declare your functions to return +double; you might as well say what you mean. + +

  • When compiling functions that return structures or unions, GCC +output code normally uses a method different from that used on most +versions of Unix. As a result, code compiled with GCC cannot call +a structure-returning function compiled with PCC, and vice versa. + +

    The method used by GCC is as follows: a structure or union which is +1, 2, 4 or 8 bytes long is returned like a scalar. A structure or union +with any other size is stored into an address supplied by the caller +(usually in a special, fixed register, but on some machines it is passed +on the stack). The target hook TARGET_STRUCT_VALUE_RTX +tells GCC where to pass this address. + +

    By contrast, PCC on most target machines returns structures and unions +of any size by copying the data into an area of static storage, and then +returning the address of that storage as if it were a pointer value. +The caller must copy the data from that memory area to the place where +the value is wanted. GCC does not use this method because it is +slower and nonreentrant. + +

    On some newer machines, PCC uses a reentrant convention for all +structure and union returning. GCC on most of these machines uses a +compatible convention when returning structures and unions in memory, +but still returns small structures and unions in registers. + +

    You can tell GCC to use a compatible convention for all structure and +union returning with the option -fpcc-struct-return. + +

  • GCC complains about program fragments such as 0x74ae-0x4000 +which appear to be two hexadecimal constants separated by the minus +operator. Actually, this string is a single preprocessing token. +Each such token must correspond to one token in C. Since this does not, +GCC prints an error message. Although it may appear obvious that what +is meant is an operator and two values, the ISO C standard specifically +requires that this be treated as erroneous. + +

    A preprocessing token is a preprocessing number if it +begins with a digit and is followed by letters, underscores, digits, +periods and e+, e-, E+, E-, p+, +p-, P+, or P- character sequences. (In strict C89 +mode, the sequences p+, p-, P+ and P- cannot +appear in preprocessing numbers.) + +

    To make the above program fragment valid, place whitespace in front of +the minus sign. This whitespace will end the preprocessing number. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Incomplete-Enums.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Incomplete-Enums.html new file mode 100644 index 0000000..9f73926 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Incomplete-Enums.html @@ -0,0 +1,72 @@ + + +Incomplete Enums - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Alternate Keywords, +Up: C Extensions +



+
+ +

5.42 Incomplete enum Types

+ +

You can define an enum tag without specifying its possible values. +This results in an incomplete type, much like what you get if you write +struct foo without describing the elements. A later declaration +which does specify the possible values completes the type. + +

You can't allocate variables or storage using the type while it is +incomplete. However, you can work with pointers to that type. + +

This extension may not be very useful, but it makes the handling of +enum more consistent with the way struct and union +are handled. + +

This extension is not supported by GNU C++. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Initializers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Initializers.html new file mode 100644 index 0000000..d180a57 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Initializers.html @@ -0,0 +1,69 @@ + + +Initializers - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Pointer Arith, +Up: C Extensions +



+
+ +

5.21 Non-Constant Initializers

+ +

+As in standard C++ and ISO C99, the elements of an aggregate initializer for an +automatic variable are not required to be constant expressions in GNU C. +Here is an example of an initializer with run-time varying elements: + +

     foo (float f, float g)
+     {
+       float beat_freqs[2] = { f-g, f+g };
+       /* ... */
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Inline.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Inline.html new file mode 100644 index 0000000..4e5ecf6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Inline.html @@ -0,0 +1,160 @@ + + +Inline - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Alignment, +Up: C Extensions +



+
+ +

5.36 An Inline Function is As Fast As a Macro

+ +

+By declaring a function inline, you can direct GCC to make +calls to that function faster. One way GCC can achieve this is to +integrate that function's code into the code for its callers. This +makes execution faster by eliminating the function-call overhead; in +addition, if any of the actual argument values are constant, their +known values may permit simplifications at compile time so that not +all of the inline function's code needs to be included. The effect on +code size is less predictable; object code may be larger or smaller +with function inlining, depending on the particular case. You can +also direct GCC to try to integrate all “simple enough” functions +into their callers with the option -finline-functions. + +

GCC implements three different semantics of declaring a function +inline. One is available with -std=gnu89 or +-fgnu89-inline or when gnu_inline attribute is present +on all inline declarations, another when -std=c99 or +-std=gnu99 (without -fgnu89-inline), and the third +is used when compiling C++. + +

To declare a function inline, use the inline keyword in its +declaration, like this: + +

     static inline int
+     inc (int *a)
+     {
+       (*a)++;
+     }
+
+

If you are writing a header file to be included in ISO C89 programs, write +__inline__ instead of inline. See Alternate Keywords. + +

The three types of inlining behave similarly in two important cases: +when the inline keyword is used on a static function, +like the example above, and when a function is first declared without +using the inline keyword and then is defined with +inline, like this: + +

     extern int inc (int *a);
+     inline int
+     inc (int *a)
+     {
+       (*a)++;
+     }
+
+

In both of these common cases, the program behaves the same as if you +had not used the inline keyword, except for its speed. + +

When a function is both inline and static, if all calls to the +function are integrated into the caller, and the function's address is +never used, then the function's own assembler code is never referenced. +In this case, GCC does not actually output assembler code for the +function, unless you specify the option -fkeep-inline-functions. +Some calls cannot be integrated for various reasons (in particular, +calls that precede the function's definition cannot be integrated, and +neither can recursive calls within the definition). If there is a +nonintegrated call, then the function is compiled to assembler code as +usual. The function must also be compiled as usual if the program +refers to its address, because that can't be inlined. + +

Note that certain usages in a function definition can make it unsuitable +for inline substitution. Among these usages are: use of varargs, use of +alloca, use of variable sized data types (see Variable Length), +use of computed goto (see Labels as Values), use of nonlocal goto, +and nested functions (see Nested Functions). Using -Winline +will warn when a function marked inline could not be substituted, +and will give the reason for the failure. + +

As required by ISO C++, GCC considers member functions defined within +the body of a class to be marked inline even if they are +not explicitly declared with the inline keyword. You can +override this with -fno-default-inline; see Options Controlling C++ Dialect. + +

GCC does not inline any functions when not optimizing unless you specify +the always_inline attribute for the function, like this: + +

     /* Prototype.  */
+     inline void foo (const char) __attribute__((always_inline));
+
+

The remainder of this section is specific to GNU C89 inlining. + +

When an inline function is not static, then the compiler must assume +that there may be calls from other source files; since a global symbol can +be defined only once in any program, the function must not be defined in +the other source files, so the calls therein cannot be integrated. +Therefore, a non-static inline function is always compiled on its +own in the usual fashion. + +

If you specify both inline and extern in the function +definition, then the definition is used only for inlining. In no case +is the function compiled on its own, not even if you refer to its +address explicitly. Such an address becomes an external reference, as +if you had only declared the function, and had not defined it. + +

This combination of inline and extern has almost the +effect of a macro. The way to use it is to put a function definition in +a header file with these keywords, and put another copy of the +definition (lacking inline and extern) in a library file. +The definition in the header file will cause most calls to the function +to be inlined. If any uses of the function remain, they will refer to +the single copy in the library. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Integers-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Integers-implementation.html new file mode 100644 index 0000000..354d5af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Integers-implementation.html @@ -0,0 +1,108 @@ + + +Integers implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.5 Integers

+ +
    +
  • Any extended integer types that exist in the implementation (C99 6.2.5). + +

    GCC does not support any extended integer types. + + + + + + + +

  • Whether signed integer types are represented using sign and magnitude, +two's complement, or one's complement, and whether the extraordinary value +is a trap representation or an ordinary value (C99 6.2.6.2). + +

    GCC supports only two's complement integer types, and all bit patterns +are ordinary values. + +

  • The rank of any extended integer type relative to another extended +integer type with the same precision (C99 6.3.1.1). + +

    GCC does not support any extended integer types. + + +

  • The result of, or the signal raised by, converting an integer to a +signed integer type when the value cannot be represented in an object of +that type (C90 6.2.1.2, C99 6.3.1.3). + +

    For conversion to a type of width N, the value is reduced +modulo 2^N to be within range of the type; no signal is raised. + +

  • The results of some bitwise operations on signed integers (C90 +6.3, C99 6.5). + +

    Bitwise operators act on the representation of the value including +both the sign and value bits, where the sign bit is considered +immediately above the highest-value value bit. Signed >> acts +on negative numbers by sign extension. + +

    GCC does not use the latitude given in C99 only to treat certain +aspects of signed << as undefined, but this is subject to +change. + +

  • The sign of the remainder on integer division (C90 6.3.5). + +

    GCC always follows the C99 requirement that the result of division is +truncated towards zero. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Interoperation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Interoperation.html new file mode 100644 index 0000000..8c04690 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Interoperation.html @@ -0,0 +1,203 @@ + + +Interoperation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Cross-Compiler Problems, +Up: Trouble +



+
+ +

10.3 Interoperation

+ +

This section lists various difficulties encountered in using GCC +together with other compilers or with the assemblers, linkers, +libraries and debuggers on certain systems. + +

    +
  • On many platforms, GCC supports a different ABI for C++ than do other +compilers, so the object files compiled by GCC cannot be used with object +files generated by another C++ compiler. + +

    An area where the difference is most apparent is name mangling. The use +of different name mangling is intentional, to protect you from more subtle +problems. +Compilers differ as to many internal details of C++ implementation, +including: how class instances are laid out, how multiple inheritance is +implemented, and how virtual function calls are handled. If the name +encoding were made the same, your programs would link against libraries +provided from other compilers—but the programs would then crash when +run. Incompatible libraries are then detected at link time, rather than +at run time. + +

  • On some BSD systems, including some versions of Ultrix, use of profiling +causes static variable destructors (currently used only in C++) not to +be run. + +
  • On some SGI systems, when you use -lgl_s as an option, +it gets translated magically to -lgl_s -lX11_s -lc_s. +Naturally, this does not happen when you use GCC. +You must specify all three options explicitly. + +
  • On a SPARC, GCC aligns all values of type double on an 8-byte +boundary, and it expects every double to be so aligned. The Sun +compiler usually gives double values 8-byte alignment, with one +exception: function arguments of type double may not be aligned. + +

    As a result, if a function compiled with Sun CC takes the address of an +argument of type double and passes this pointer of type +double * to a function compiled with GCC, dereferencing the +pointer may cause a fatal signal. + +

    One way to solve this problem is to compile your entire program with GCC. +Another solution is to modify the function that is compiled with +Sun CC to copy the argument into a local variable; local variables +are always properly aligned. A third solution is to modify the function +that uses the pointer to dereference it via the following function +access_double instead of directly with *: + +

              inline double
    +          access_double (double *unaligned_ptr)
    +          {
    +            union d2i { double d; int i[2]; };
    +          
    +            union d2i *p = (union d2i *) unaligned_ptr;
    +            union d2i u;
    +          
    +            u.i[0] = p->i[0];
    +            u.i[1] = p->i[1];
    +          
    +            return u.d;
    +          }
    +     
    +

    Storing into the pointer can be done likewise with the same union. + +

  • On Solaris, the malloc function in the libmalloc.a library +may allocate memory that is only 4 byte aligned. Since GCC on the +SPARC assumes that doubles are 8 byte aligned, this may result in a +fatal signal if doubles are stored in memory allocated by the +libmalloc.a library. + +

    The solution is to not use the libmalloc.a library. Use instead +malloc and related functions from libc.a; they do not have +this problem. + +

  • On the HP PA machine, ADB sometimes fails to work on functions compiled +with GCC. Specifically, it fails to work on functions that use +alloca or variable-size arrays. This is because GCC doesn't +generate HP-UX unwind descriptors for such functions. It may even be +impossible to generate them. + +
  • Debugging (-g) is not supported on the HP PA machine, unless you use +the preliminary GNU tools. + +
  • Taking the address of a label may generate errors from the HP-UX +PA assembler. GAS for the PA does not have this problem. + +
  • Using floating point parameters for indirect calls to static functions +will not work when using the HP assembler. There simply is no way for GCC +to specify what registers hold arguments for static functions when using +the HP assembler. GAS for the PA does not have this problem. + +
  • In extremely rare cases involving some very large functions you may +receive errors from the HP linker complaining about an out of bounds +unconditional branch offset. This used to occur more often in previous +versions of GCC, but is now exceptionally rare. If you should run +into it, you can work around by making your function smaller. + +
  • GCC compiled code sometimes emits warnings from the HP-UX assembler of +the form: + +
              (warning) Use of GR3 when
    +            frame >= 8192 may cause conflict.
    +     
    +

    These warnings are harmless and can be safely ignored. + +

  • In extremely rare cases involving some very large functions you may +receive errors from the AIX Assembler complaining about a displacement +that is too large. If you should run into it, you can work around by +making your function smaller. + +
  • The libstdc++.a library in GCC relies on the SVR4 dynamic +linker semantics which merges global symbols between libraries and +applications, especially necessary for C++ streams functionality. +This is not the default behavior of AIX shared libraries and dynamic +linking. libstdc++.a is built on AIX with “runtime-linking” +enabled so that symbol merging can occur. To utilize this feature, +the application linked with libstdc++.a must include the +-Wl,-brtl flag on the link line. G++ cannot impose this +because this option may interfere with the semantics of the user +program and users may not always use g++ to link his or her +application. Applications are not required to use the +-Wl,-brtl flag on the link line—the rest of the +libstdc++.a library which is not dependent on the symbol +merging semantics will continue to function correctly. + +
  • An application can interpose its own definition of functions for +functions invoked by libstdc++.a with “runtime-linking” +enabled on AIX. To accomplish this the application must be linked +with “runtime-linking” option and the functions explicitly must be +exported by the application (-Wl,-brtl,-bE:exportfile). + +
  • AIX on the RS/6000 provides support (NLS) for environments outside of +the United States. Compilers and assemblers use NLS to support +locale-specific representations of various objects including +floating-point numbers (. vs , for separating decimal +fractions). There have been problems reported where the library linked +with GCC does not produce the same floating-point formats that the +assembler accepts. If you have this problem, set the LANG +environment variable to C or En_US. + +
  • Even if you specify -fdollars-in-identifiers, +you cannot successfully use $ in identifiers on the RS/6000 due +to a restriction in the IBM assembler. GAS supports these +identifiers. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-GCC.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-GCC.html new file mode 100644 index 0000000..21faae9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-GCC.html @@ -0,0 +1,132 @@ + + +Invoking GCC - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Standards, +Up: Top +



+
+ +

3 GCC Command Options

+ +

+ +When you invoke GCC, it normally does preprocessing, compilation, +assembly and linking. The “overall options” allow you to stop this +process at an intermediate stage. For example, the -c option +says not to run the linker. Then the output consists of object files +output by the assembler. + +

Other options are passed on to one stage of processing. Some options +control the preprocessor and others the compiler itself. Yet other +options control the assembler and linker; most of these are not +documented here, since you rarely need to use any of them. + +

Most of the command line options that you can use with GCC are useful +for C programs; when an option is only useful with another language +(usually C++), the explanation says so explicitly. If the description +for a particular option does not mention a source language, you can use +that option with all supported languages. + +

See Compiling C++ Programs, for a summary of special +options for compiling C++ programs. + +

The gcc program accepts options and file names as operands. Many +options have multi-letter names; therefore multiple single-letter options +may not be grouped: -dr is very different from -d -r. + +

You can mix options and other arguments. For the most part, the order +you use doesn't matter. Order does matter when you use several +options of the same kind; for example, if you specify -L more +than once, the directories are searched in the order specified. Also, +the placement of the -l option is significant. + +

Many options have long names starting with -f or with +-W—for example, +-fmove-loop-invariants, -Wformat and so on. Most of +these have both positive and negative forms; the negative form of +-ffoo would be -fno-foo. This manual documents +only one of these two forms, whichever one is not the default. + + +

See Option Index, for an index to GCC's options. + +

+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-G_002b_002b.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-G_002b_002b.html new file mode 100644 index 0000000..062ed77 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-G_002b_002b.html @@ -0,0 +1,85 @@ + + +Invoking G++ - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Overall Options, +Up: Invoking GCC +



+
+ +

3.3 Compiling C++ Programs

+ +

C++ source files conventionally use one of the suffixes .C, +.cc, .cpp, .CPP, .c++, .cp, or +.cxx; C++ header files often use .hh, .hpp, +.H, or (for shared template code) .tcc; and +preprocessed C++ files use the suffix .ii. GCC recognizes +files with these names and compiles them as C++ programs even if you +call the compiler the same way as for compiling C programs (usually +with the name gcc). + +

However, the use of gcc does not add the C++ library. +g++ is a program that calls GCC and treats .c, +.h and .i files as C++ source files instead of C source +files unless -x is used, and automatically specifies linking +against the C++ library. This program is also useful when +precompiling a C header file with a .h extension for use in C++ +compilations. On many systems, g++ is also installed with +the name c++. + +

When you compile C++ programs, you may specify many of the same +command-line options that you use for compiling programs in any +language; or command-line options meaningful for C and related +languages; or options that are meaningful only for C++ programs. +See Options Controlling C Dialect, for +explanations of options for languages related to C. +See Options Controlling C++ Dialect, for +explanations of options that are meaningful only for C++ programs. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-Gcov.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-Gcov.html new file mode 100644 index 0000000..971e07d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Invoking-Gcov.html @@ -0,0 +1,333 @@ + + +Invoking Gcov - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Gcov Intro, +Up: Gcov +



+
+ +

9.2 Invoking gcov

+ +
     gcov [options] sourcefiles
+
+

gcov accepts the following options: + + +

+
-h
--help
Display help about using gcov (on the standard output), and +exit without doing any further processing. + +
-v
--version
Display the gcov version number (on the standard output), +and exit without doing any further processing. + +
-a
--all-blocks
Write individual execution counts for every basic block. Normally gcov +outputs execution counts only for the main blocks of a line. With this +option you can determine if blocks within a single line are not being +executed. + +
-b
--branch-probabilities
Write branch frequencies to the output file, and write branch summary +info to the standard output. This option allows you to see how often +each branch in your program was taken. Unconditional branches will not +be shown, unless the -u option is given. + +
-c
--branch-counts
Write branch frequencies as the number of branches taken, rather than +the percentage of branches taken. + +
-n
--no-output
Do not create the gcov output file. + +
-l
--long-file-names
Create long file names for included source files. For example, if the +header file x.h contains code, and was included in the file +a.c, then running gcov on the file a.c will produce +an output file called a.c##x.h.gcov instead of x.h.gcov. +This can be useful if x.h is included in multiple source +files. If you use the -p option, both the including and +included file names will be complete path names. + +
-p
--preserve-paths
Preserve complete path information in the names of generated +.gcov files. Without this option, just the filename component is +used. With this option, all directories are used, with / characters +translated to # characters, . directory components +removed and .. +components renamed to ^. This is useful if sourcefiles are in several +different directories. It also affects the -l option. + +
-f
--function-summaries
Output summaries for each function in addition to the file level summary. + +
-o directory|file
--object-directory directory
--object-file file
Specify either the directory containing the gcov data files, or the +object path name. The .gcno, and +.gcda data files are searched for using this option. If a directory +is specified, the data files are in that directory and named after the +source file name, without its extension. If a file is specified here, +the data files are named after that file, without its extension. If this +option is not supplied, it defaults to the current directory. + +
-u
--unconditional-branches
When branch probabilities are given, include those of unconditional branches. +Unconditional branches are normally not interesting. + +
+ +

gcov should be run with the current directory the same as that +when you invoked the compiler. Otherwise it will not be able to locate +the source files. gcov produces files called +mangledname.gcov in the current directory. These contain +the coverage information of the source file they correspond to. +One .gcov file is produced for each source file containing code, +which was compiled to produce the data files. The mangledname part +of the output file name is usually simply the source file name, but can +be something more complicated if the -l or -p options are +given. Refer to those options for details. + +

The .gcov files contain the : separated fields along with +program source code. The format is + +

     execution_count:line_number:source line text
+
+

Additional block information may succeed each line, when requested by +command line option. The execution_count is - for lines +containing no code and ##### for lines which were never executed. +Some lines of information at the start have line_number of zero. + +

The preamble lines are of the form + +

     -:0:tag:value
+
+

The ordering and number of these preamble lines will be augmented as +gcov development progresses — do not rely on them remaining +unchanged. Use tag to locate a particular preamble line. + +

The additional block information is of the form + +

     tag information
+
+

The information is human readable, but designed to be simple +enough for machine parsing too. + +

When printing percentages, 0% and 100% are only printed when the values +are exactly 0% and 100% respectively. Other values which would +conventionally be rounded to 0% or 100% are instead printed as the +nearest non-boundary value. + +

When using gcov, you must first compile your program with two +special GCC options: -fprofile-arcs -ftest-coverage. +This tells the compiler to generate additional information needed by +gcov (basically a flow graph of the program) and also includes +additional code in the object files for generating the extra profiling +information needed by gcov. These additional files are placed in the +directory where the object file is located. + +

Running the program will cause profile output to be generated. For each +source file compiled with -fprofile-arcs, an accompanying +.gcda file will be placed in the object file directory. + +

Running gcov with your program's source file names as arguments +will now produce a listing of the code along with frequency of execution +for each line. For example, if your program is called tmp.c, this +is what you see when you use the basic gcov facility: + +

     $ gcc -fprofile-arcs -ftest-coverage tmp.c
+     $ a.out
+     $ gcov tmp.c
+     90.00% of 10 source lines executed in file tmp.c
+     Creating tmp.c.gcov.
+
+

The file tmp.c.gcov contains output from gcov. +Here is a sample: + +

             -:    0:Source:tmp.c
+             -:    0:Graph:tmp.gcno
+             -:    0:Data:tmp.gcda
+             -:    0:Runs:1
+             -:    0:Programs:1
+             -:    1:#include <stdio.h>
+             -:    2:
+             -:    3:int main (void)
+             1:    4:{
+             1:    5:  int i, total;
+             -:    6:
+             1:    7:  total = 0;
+             -:    8:
+            11:    9:  for (i = 0; i < 10; i++)
+            10:   10:    total += i;
+             -:   11:
+             1:   12:  if (total != 45)
+         #####:   13:    printf ("Failure\n");
+             -:   14:  else
+             1:   15:    printf ("Success\n");
+             1:   16:  return 0;
+             -:   17:}
+
+

When you use the -a option, you will get individual block +counts, and the output looks like this: + +

             -:    0:Source:tmp.c
+             -:    0:Graph:tmp.gcno
+             -:    0:Data:tmp.gcda
+             -:    0:Runs:1
+             -:    0:Programs:1
+             -:    1:#include <stdio.h>
+             -:    2:
+             -:    3:int main (void)
+             1:    4:{
+             1:    4-block  0
+             1:    5:  int i, total;
+             -:    6:
+             1:    7:  total = 0;
+             -:    8:
+            11:    9:  for (i = 0; i < 10; i++)
+            11:    9-block  0
+            10:   10:    total += i;
+            10:   10-block  0
+             -:   11:
+             1:   12:  if (total != 45)
+             1:   12-block  0
+         #####:   13:    printf ("Failure\n");
+         $$$$$:   13-block  0
+             -:   14:  else
+             1:   15:    printf ("Success\n");
+             1:   15-block  0
+             1:   16:  return 0;
+             1:   16-block  0
+             -:   17:}
+
+

In this mode, each basic block is only shown on one line – the last +line of the block. A multi-line block will only contribute to the +execution count of that last line, and other lines will not be shown +to contain code, unless previous blocks end on those lines. +The total execution count of a line is shown and subsequent lines show +the execution counts for individual blocks that end on that line. After each +block, the branch and call counts of the block will be shown, if the +-b option is given. + +

Because of the way GCC instruments calls, a call count can be shown +after a line with no individual blocks. +As you can see, line 13 contains a basic block that was not executed. + +

When you use the -b option, your output looks like this: + +

     $ gcov -b tmp.c
+     90.00% of 10 source lines executed in file tmp.c
+     80.00% of 5 branches executed in file tmp.c
+     80.00% of 5 branches taken at least once in file tmp.c
+     50.00% of 2 calls executed in file tmp.c
+     Creating tmp.c.gcov.
+
+

Here is a sample of a resulting tmp.c.gcov file: + +

             -:    0:Source:tmp.c
+             -:    0:Graph:tmp.gcno
+             -:    0:Data:tmp.gcda
+             -:    0:Runs:1
+             -:    0:Programs:1
+             -:    1:#include <stdio.h>
+             -:    2:
+             -:    3:int main (void)
+     function main called 1 returned 1 blocks executed 75%
+             1:    4:{
+             1:    5:  int i, total;
+             -:    6:
+             1:    7:  total = 0;
+             -:    8:
+            11:    9:  for (i = 0; i < 10; i++)
+     branch  0 taken 91% (fallthrough)
+     branch  1 taken 9%
+            10:   10:    total += i;
+             -:   11:
+             1:   12:  if (total != 45)
+     branch  0 taken 0% (fallthrough)
+     branch  1 taken 100%
+         #####:   13:    printf ("Failure\n");
+     call    0 never executed
+             -:   14:  else
+             1:   15:    printf ("Success\n");
+     call    0 called 1 returned 100%
+             1:   16:  return 0;
+             -:   17:}
+
+

For each function, a line is printed showing how many times the function +is called, how many times it returns and what percentage of the +function's blocks were executed. + +

For each basic block, a line is printed after the last line of the basic +block describing the branch or call that ends the basic block. There can +be multiple branches and calls listed for a single source line if there +are multiple basic blocks that end on that line. In this case, the +branches and calls are each given a number. There is no simple way to map +these branches and calls back to source constructs. In general, though, +the lowest numbered branch or call will correspond to the leftmost construct +on the source line. + +

For a branch, if it was executed at least once, then a percentage +indicating the number of times the branch was taken divided by the +number of times the branch was executed will be printed. Otherwise, the +message “never executed” is printed. + +

For a call, if it was executed at least once, then a percentage +indicating the number of times the call returned divided by the number +of times the call was executed will be printed. This will usually be +100%, but may be less for functions that call exit or longjmp, +and thus may not return every time they are called. + +

The execution counts are cumulative. If the example program were +executed again without removing the .gcda file, the count for the +number of times each line in the source was executed would be added to +the results of the previous run(s). This is potentially useful in +several ways. For example, it could be used to accumulate data over a +number of program runs as part of a test verification suite, or to +provide more accurate long-term information over a large number of +program runs. + +

The data in the .gcda files is saved immediately before the program +exits. For each source file compiled with -fprofile-arcs, the +profiling code first attempts to read in an existing .gcda file; if +the file doesn't match the executable (differing number of basic block +counts) it will ignore the contents of the file. It then adds in the +new execution counts and finally writes the data to the file. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Java-Exceptions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Java-Exceptions.html new file mode 100644 index 0000000..a14025c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Java-Exceptions.html @@ -0,0 +1,87 @@ + + +Java Exceptions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Type Traits, +Up: C++ Extensions +



+
+ +

6.10 Java Exceptions

+ +

The Java language uses a slightly different exception handling model +from C++. Normally, GNU C++ will automatically detect when you are +writing C++ code that uses Java exceptions, and handle them +appropriately. However, if C++ code only needs to execute destructors +when Java exceptions are thrown through it, GCC will guess incorrectly. +Sample problematic code is: + +

       struct S { ~S(); };
+       extern void bar();    // is written in Java, and may throw exceptions
+       void foo()
+       {
+         S s;
+         bar();
+       }
+
+

The usual effect of an incorrect guess is a link failure, complaining of +a missing routine called __gxx_personality_v0. + +

You can inform the compiler that Java exceptions are to be used in a +translation unit, irrespective of what it might think, by writing +#pragma GCC java_exceptions at the head of the file. This +#pragma must appear before any functions that throw or catch +exceptions, or run destructors when exceptions are thrown through them. + +

You cannot mix Java and C++ exceptions in the same translation unit. It +is believed to be safe to throw a C++ exception from one file through +another file compiled for the Java exception model, or vice versa, but +there may be bugs in this area. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Keyword-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Keyword-Index.html new file mode 100644 index 0000000..8583b50 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Keyword-Index.html @@ -0,0 +1,1237 @@ + + +Keyword Index - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + +

+

+Previous: Option Index, +Up: Top +



+
+ +

Keyword Index

+ + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Labels-as-Values.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Labels-as-Values.html new file mode 100644 index 0000000..a453153 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Labels-as-Values.html @@ -0,0 +1,126 @@ + + +Labels as Values - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Local Labels, +Up: C Extensions +



+
+ +

5.3 Labels as Values

+ +

+You can get the address of a label defined in the current function +(or a containing function) with the unary operator &&. The +value has type void *. This value is a constant and can be used +wherever a constant of that type is valid. For example: + +

     void *ptr;
+     /* ... */
+     ptr = &&foo;
+
+

To use these values, you need to be able to jump to one. This is done +with the computed goto statement1, goto *exp;. For example, + +

     goto *ptr;
+
+

Any expression of type void * is allowed. + +

One way of using these constants is in initializing a static array that +will serve as a jump table: + +

     static void *array[] = { &&foo, &&bar, &&hack };
+
+

Then you can select a label with indexing, like this: + +

     goto *array[i];
+
+

Note that this does not check whether the subscript is in bounds—array +indexing in C never does that. + +

Such an array of label values serves a purpose much like that of the +switch statement. The switch statement is cleaner, so +use that rather than an array unless the problem does not fit a +switch statement very well. + +

Another use of label values is in an interpreter for threaded code. +The labels within the interpreter function can be stored in the +threaded code for super-fast dispatching. + +

You may not use this mechanism to jump to code in a different function. +If you do that, totally unpredictable things will happen. The best way to +avoid this is to store the label address only in automatic variables and +never pass it as an argument. + +

An alternate way to write the above example is + +

     static const int array[] = { &&foo - &&foo, &&bar - &&foo,
+                                  &&hack - &&foo };
+     goto *(&&foo + array[i]);
+
+

This is more friendly to code living in shared libraries, as it reduces +the number of dynamic relocations that are needed, and by consequence, +allows the data to be read-only. + +

The &&foo expressions for the same label might have different values +if the containing function is inlined or cloned. If a program relies on +them being always the same, __attribute__((__noinline__)) should +be used to prevent inlining. If &&foo is used +in a static variable initializer, inlining is forbidden. + +

+
+

Footnotes

[1] The analogous feature in +Fortran is called an assigned goto, but that name seems inappropriate in +C, where one can do more than simply store label addresses in label +variables.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Language-Independent-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Language-Independent-Options.html new file mode 100644 index 0000000..61e4d96 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Language-Independent-Options.html @@ -0,0 +1,105 @@ + + +Language Independent Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

3.7 Options to Control Diagnostic Messages Formatting

+ +

+Traditionally, diagnostic messages have been formatted irrespective of +the output device's aspect (e.g. its width, ...). The options described +below can be used to control the diagnostic messages formatting +algorithm, e.g. how many characters per line, how often source location +information should be reported. Right now, only the C++ front end can +honor these options. However it is expected, in the near future, that +the remaining front ends would be able to digest them correctly. + +

+
-fmessage-length=n
Try to format error messages so that they fit on lines of about n +characters. The default is 72 characters for g++ and 0 for the rest of +the front ends supported by GCC. If n is zero, then no +line-wrapping will be done; each error message will appear on a single +line. + +


-fdiagnostics-show-location=once
Only meaningful in line-wrapping mode. Instructs the diagnostic messages +reporter to emit once source location information; that is, in +case the message is too long to fit on a single physical line and has to +be wrapped, the source location won't be emitted (as prefix) again, +over and over, in subsequent continuation lines. This is the default +behavior. + +
-fdiagnostics-show-location=every-line
Only meaningful in line-wrapping mode. Instructs the diagnostic +messages reporter to emit the same source location information (as +prefix) for physical lines that result from the process of breaking +a message which is too long to fit on a single line. + +
-fdiagnostics-show-option
This option instructs the diagnostic machinery to add text to each +diagnostic emitted, which indicates which command line option directly +controls that diagnostic, when such an option is known to the +diagnostic machinery. + +
-Wcoverage-mismatch
Warn if feedback profiles do not match when using the +-fprofile-use option. +If a source file was changed between -fprofile-gen and +-fprofile-use, the files with the profile feedback can fail +to match the source file and GCC can not use the profile feedback +information. By default, GCC emits an error message in this case. +The option -Wcoverage-mismatch emits a warning instead of an +error. GCC does not use appropriate feedback profiles, so using this +option can result in poorly optimized code. This option is useful +only in the case of very minor changes such as bug fixes to an +existing code-base. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Library-functions-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Library-functions-implementation.html new file mode 100644 index 0000000..5f12a5d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Library-functions-implementation.html @@ -0,0 +1,71 @@ + + +Library functions implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

4.14 Library functions

+ +

The behavior of most of these points are dependent on the implementation +of the C library, and are not defined by GCC itself. + +

    +
  • The null pointer constant to which the macro NULL expands +(C90 7.1.6, C99 7.17). + +

    In <stddef.h>, NULL expands to ((void *)0). GCC +does not provide the other headers which define NULL and some +library implementations may use other definitions in those headers. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Link-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Link-Options.html new file mode 100644 index 0000000..a7a4669 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Link-Options.html @@ -0,0 +1,227 @@ + + +Link Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Assembler Options, +Up: Invoking GCC +



+
+ +

3.13 Options for Linking

+ +

+These options come into play when the compiler links object files into +an executable output file. They are meaningless if the compiler is +not doing a link step. + + + +

object-file-name
A file name that does not end in a special recognized suffix is +considered to name an object file or library. (Object files are +distinguished from libraries by the linker according to the file +contents.) If linking is done, these object files are used as input +to the linker. + +
-c
-S
-E
If any of these options is used, then the linker is not run, and +object file names should not be used as arguments. See Overall Options. + +


-llibrary
-l library
Search the library named library when linking. (The second +alternative with the library as a separate argument is only for +POSIX compliance and is not recommended.) + +

It makes a difference where in the command you write this option; the +linker searches and processes libraries and object files in the order they +are specified. Thus, foo.o -lz bar.o searches library z +after file foo.o but before bar.o. If bar.o refers +to functions in z, those functions may not be loaded. + +

The linker searches a standard list of directories for the library, +which is actually a file named liblibrary.a. The linker +then uses this file as if it had been specified precisely by name. + +

The directories searched include several standard system directories +plus any that you specify with -L. + +

Normally the files found this way are library files—archive files +whose members are object files. The linker handles an archive file by +scanning through it for members which define symbols that have so far +been referenced but not defined. But if the file that is found is an +ordinary object file, it is linked in the usual fashion. The only +difference between using an -l option and specifying a file name +is that -l surrounds library with lib and .a +and searches several directories. + +

-lobjc
You need this special case of the -l option in order to +link an Objective-C or Objective-C++ program. + +
-nostartfiles
Do not use the standard system startup files when linking. +The standard system libraries are used normally, unless -nostdlib +or -nodefaultlibs is used. + +
-nodefaultlibs
Do not use the standard system libraries when linking. +Only the libraries you specify will be passed to the linker. +The standard startup files are used normally, unless -nostartfiles +is used. The compiler may generate calls to memcmp, +memset, memcpy and memmove. +These entries are usually resolved by entries in +libc. These entry points should be supplied through some other +mechanism when this option is specified. + +
-nostdlib
Do not use the standard system startup files or libraries when linking. +No startup files and only the libraries you specify will be passed to +the linker. The compiler may generate calls to memcmp, memset, +memcpy and memmove. +These entries are usually resolved by entries in +libc. These entry points should be supplied through some other +mechanism when this option is specified. + +

One of the standard libraries bypassed by -nostdlib and +-nodefaultlibs is libgcc.a, a library of internal subroutines +that GCC uses to overcome shortcomings of particular machines, or special +needs for some languages. +(See Interfacing to GCC Output (GNU Compiler Collection (GCC) Internals), +for more discussion of libgcc.a.) +In most cases, you need libgcc.a even when you want to avoid +other standard libraries. In other words, when you specify -nostdlib +or -nodefaultlibs you should usually specify -lgcc as well. +This ensures that you have no unresolved references to internal GCC +library subroutines. (For example, __main, used to ensure C++ +constructors will be called; see collect2 (GNU Compiler Collection (GCC) Internals).) + +

-pie
Produce a position independent executable on targets which support it. +For predictable results, you must also specify the same set of options +that were used to generate code (-fpie, -fPIE, +or model suboptions) when you specify this option. + +
-rdynamic
Pass the flag -export-dynamic to the ELF linker, on targets +that support it. This instructs the linker to add all symbols, not +only used ones, to the dynamic symbol table. This option is needed +for some uses of dlopen or to allow obtaining backtraces +from within a program. + +
-s
Remove all symbol table and relocation information from the executable. + +
-static
On systems that support dynamic linking, this prevents linking with the shared +libraries. On other systems, this option has no effect. + +
-shared
Produce a shared object which can then be linked with other objects to +form an executable. Not all systems support this option. For predictable +results, you must also specify the same set of options that were used to +generate code (-fpic, -fPIC, or model suboptions) +when you specify this option.1 + +
-shared-libgcc
-static-libgcc
On systems that provide libgcc as a shared library, these options +force the use of either the shared or static version respectively. +If no shared version of libgcc was built when the compiler was +configured, these options have no effect. + +

There are several situations in which an application should use the +shared libgcc instead of the static version. The most common +of these is when the application wishes to throw and catch exceptions +across different shared libraries. In that case, each of the libraries +as well as the application itself should use the shared libgcc. + +

Therefore, the G++ and GCJ drivers automatically add +-shared-libgcc whenever you build a shared library or a main +executable, because C++ and Java programs typically use exceptions, so +this is the right thing to do. + +

If, instead, you use the GCC driver to create shared libraries, you may +find that they will not always be linked with the shared libgcc. +If GCC finds, at its configuration time, that you have a non-GNU linker +or a GNU linker that does not support option --eh-frame-hdr, +it will link the shared version of libgcc into shared libraries +by default. Otherwise, it will take advantage of the linker and optimize +away the linking with the shared version of libgcc, linking with +the static version of libgcc by default. This allows exceptions to +propagate through such shared libraries, without incurring relocation +costs at library load time. + +

However, if a library or main executable is supposed to throw or catch +exceptions, you must link it using the G++ or GCJ driver, as appropriate +for the languages used in the program, or using the option +-shared-libgcc, such that it is linked with the shared +libgcc. + +

-symbolic
Bind references to global symbols when building a shared object. Warn +about any unresolved references (unless overridden by the link editor +option -Xlinker -z -Xlinker defs). Only a few systems support +this option. + +
-Xlinker option
Pass option as an option to the linker. You can use this to +supply system-specific linker options which GCC does not know how to +recognize. + +

If you want to pass an option that takes an argument, you must use +-Xlinker twice, once for the option and once for the argument. +For example, to pass -assert definitions, you must write +-Xlinker -assert -Xlinker definitions. It does not work to write +-Xlinker "-assert definitions", because this passes the entire +string as a single argument, which is not what the linker expects. + +

-Wl,option
Pass option as an option to the linker. If option contains +commas, it is split into multiple options at the commas. + +
-u symbol
Pretend the symbol symbol is undefined, to force linking of +library modules to define it. You can use -u multiple times with +different symbols to force loading of additional library modules. +
+ +
+
+

Footnotes

[1] On some systems, gcc -shared +needs to build supplementary stub code for constructors to work. On +multi-libbed systems, gcc -shared must select the correct support +libraries to link against. Failing to supply the correct flags may lead +to subtle defects. Supplying them in cases where they are not necessary +is innocuous.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Local-Labels.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Local-Labels.html new file mode 100644 index 0000000..3a35045 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Local-Labels.html @@ -0,0 +1,122 @@ + + +Local Labels - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Statement Exprs, +Up: C Extensions +



+
+ +

5.2 Locally Declared Labels

+ +

+GCC allows you to declare local labels in any nested block +scope. A local label is just like an ordinary label, but you can +only reference it (with a goto statement, or by taking its +address) within the block in which it was declared. + +

A local label declaration looks like this: + +

     __label__ label;
+
+

or + +

     __label__ label1, label2, /* ... */;
+
+

Local label declarations must come at the beginning of the block, +before any ordinary declarations or statements. + +

The label declaration defines the label name, but does not define +the label itself. You must do this in the usual way, with +label:, within the statements of the statement expression. + +

The local label feature is useful for complex macros. If a macro +contains nested loops, a goto can be useful for breaking out of +them. However, an ordinary label whose scope is the whole function +cannot be used: if the macro can be expanded several times in one +function, the label will be multiply defined in that function. A +local label avoids this problem. For example: + +

     #define SEARCH(value, array, target)              \
+     do {                                              \
+       __label__ found;                                \
+       typeof (target) _SEARCH_target = (target);      \
+       typeof (*(array)) *_SEARCH_array = (array);     \
+       int i, j;                                       \
+       int value;                                      \
+       for (i = 0; i < max; i++)                       \
+         for (j = 0; j < max; j++)                     \
+           if (_SEARCH_array[i][j] == _SEARCH_target)  \
+             { (value) = i; goto found; }              \
+       (value) = -1;                                   \
+      found:;                                          \
+     } while (0)
+
+

This could also be written using a statement-expression: + +

     #define SEARCH(array, target)                     \
+     ({                                                \
+       __label__ found;                                \
+       typeof (target) _SEARCH_target = (target);      \
+       typeof (*(array)) *_SEARCH_array = (array);     \
+       int i, j;                                       \
+       int value;                                      \
+       for (i = 0; i < max; i++)                       \
+         for (j = 0; j < max; j++)                     \
+           if (_SEARCH_array[i][j] == _SEARCH_target)  \
+             { value = i; goto found; }                \
+       value = -1;                                     \
+      found:                                           \
+       value;                                          \
+     })
+
+

Local label declarations also make the labels they declare visible to +nested functions, if there are any. See Nested Functions, for details. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Local-Reg-Vars.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Local-Reg-Vars.html new file mode 100644 index 0000000..3844870 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Local-Reg-Vars.html @@ -0,0 +1,105 @@ + + +Local Reg Vars - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Previous: Global Reg Vars, +Up: Explicit Reg Vars +



+
+ +

5.40.2 Specifying Registers for Local Variables

+ +

+You can define a local register variable with a specified register +like this: + +

     register int *foo asm ("a5");
+
+

Here a5 is the name of the register which should be used. Note +that this is the same syntax used for defining global register +variables, but for a local variable it would appear within a function. + +

Naturally the register name is cpu-dependent, but this is not a +problem, since specific registers are most often useful with explicit +assembler instructions (see Extended Asm). Both of these things +generally require that you conditionalize your program according to +cpu type. + +

In addition, operating systems on one type of cpu may differ in how they +name the registers; then you would need additional conditionals. For +example, some 68000 operating systems call this register %a5. + +

Defining such a register variable does not reserve the register; it +remains available for other uses in places where flow control determines +the variable's value is not live. + +

This option does not guarantee that GCC will generate code that has +this variable in the register you specify at all times. You may not +code an explicit reference to this register in the assembler +instruction template part of an asm statement and assume it will +always refer to this variable. However, using the variable as an +asm operand guarantees that the specified register is used +for the operand. + +

Stores into local register variables may be deleted when they appear to be dead +according to dataflow analysis. References to local register variables may +be deleted or moved or simplified. + +

As for global register variables, it's recommended that you choose a +register which is normally saved and restored by function calls on +your machine, so that library routines will not clobber it. A common +pitfall is to initialize multiple call-clobbered registers with +arbitrary expressions, where a function call or library call for an +arithmetic operator will overwrite a register value from a previous +assignment, for example r0 below: +

     register int *p1 asm ("r0") = ...;
+     register int *p2 asm ("r1") = ...;
+
+

In those cases, a solution is to use a temporary variable for +each arbitrary expression. See Example of asm with clobbered asm reg. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Locale_002dspecific-behavior-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Locale_002dspecific-behavior-implementation.html new file mode 100644 index 0000000..9d9d2fe --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Locale_002dspecific-behavior-implementation.html @@ -0,0 +1,63 @@ + + +Locale-specific behavior implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+ +

4.16 Locale-specific behavior

+ +

The behavior of these points are dependent on the implementation +of the C library, and are not defined by GCC itself. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Long-Long.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Long-Long.html new file mode 100644 index 0000000..56dd0d0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Long-Long.html @@ -0,0 +1,83 @@ + + +Long Long - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Conditionals, +Up: C Extensions +



+
+ +

5.8 Double-Word Integers

+ +

+ISO C99 supports data types for integers that are at least 64 bits wide, +and as an extension GCC supports them in C89 mode and in C++. +Simply write long long int for a signed integer, or +unsigned long long int for an unsigned integer. To make an +integer constant of type long long int, add the suffix LL +to the integer. To make an integer constant of type unsigned long +long int, add the suffix ULL to the integer. + +

You can use these types in arithmetic like any other integer types. +Addition, subtraction, and bitwise boolean operations on these types +are open-coded on all types of machines. Multiplication is open-coded +if the machine supports fullword-to-doubleword a widening multiply +instruction. Division and shifts are open-coded only on machines that +provide special support. The operations that are not open-coded use +special library routines that come with GCC. + +

There may be pitfalls when you use long long types for function +arguments, unless you declare function prototypes. If a function +expects type int for its argument, and you pass a value of type +long long int, confusion will result because the caller and the +subroutine will disagree about the number of bytes for the argument. +Likewise, if the function expects long long int and you pass +int. The best way to avoid such problems is to use prototypes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32C-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32C-Options.html new file mode 100644 index 0000000..d4e3d86 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32C-Options.html @@ -0,0 +1,82 @@ + + +M32C Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: IA-64 Options, +Up: Submodel Options +



+
+ +

3.17.16 M32C Options

+ +

+

+
-mcpu=name
Select the CPU for which code is generated. name may be one of +r8c for the R8C/Tiny series, m16c for the M16C (up to +/60) series, m32cm for the M16C/80 series, or m32c for +the M32C/80 series. + +
-msim
Specifies that the program will be run on the simulator. This causes +an alternate runtime library to be linked in which supports, for +example, file I/O. You must not use this option when generating +programs that will run on real hardware; you must provide your own +runtime library for whatever I/O functions are needed. + +
-memregs=number
Specifies the number of memory-based pseudo-registers GCC will use +during code generation. These pseudo-registers will be used like real +registers, so there is a tradeoff between GCC's ability to fit the +code into available registers, and the performance penalty of using +memory instead of registers. Note that all modules in a program must +be compiled with the same value for this option. Because of that, you +must not use this option with the default runtime libraries gcc +builds. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32C-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32C-Pragmas.html new file mode 100644 index 0000000..22cce7e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32C-Pragmas.html @@ -0,0 +1,68 @@ + + +M32C Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: ARM Pragmas, +Up: Pragmas +



+
+ +

5.52.2 M32C Pragmas

+ +
+
memregs number
Overrides the command line option -memregs= for the current +file. Use with care! This pragma must be before any function in the +file, and mixing different memregs values in different objects may +make them incompatible. This pragma is useful when a +performance-critical function uses a memreg for temporary values, +as it may allow you to reduce the number of memregs used. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32R_002fD-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32R_002fD-Options.html new file mode 100644 index 0000000..bb15abb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M32R_002fD-Options.html @@ -0,0 +1,139 @@ + + +M32R/D Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: M32C Options, +Up: Submodel Options +



+
+ +

3.17.17 M32R/D Options

+ +

+These -m options are defined for Renesas M32R/D architectures: + +

+
-m32r2
Generate code for the M32R/2. + +
-m32rx
Generate code for the M32R/X. + +
-m32r
Generate code for the M32R. This is the default. + +
-mmodel=small
Assume all objects live in the lower 16MB of memory (so that their addresses +can be loaded with the ld24 instruction), and assume all subroutines +are reachable with the bl instruction. +This is the default. + +

The addressability of a particular object can be set with the +model attribute. + +

-mmodel=medium
Assume objects may be anywhere in the 32-bit address space (the compiler +will generate seth/add3 instructions to load their addresses), and +assume all subroutines are reachable with the bl instruction. + +
-mmodel=large
Assume objects may be anywhere in the 32-bit address space (the compiler +will generate seth/add3 instructions to load their addresses), and +assume subroutines may not be reachable with the bl instruction +(the compiler will generate the much slower seth/add3/jl +instruction sequence). + +
-msdata=none
Disable use of the small data area. Variables will be put into +one of .data, bss, or .rodata (unless the +section attribute has been specified). +This is the default. + +

The small data area consists of sections .sdata and .sbss. +Objects may be explicitly put in the small data area with the +section attribute using one of these sections. + +

-msdata=sdata
Put small global and static data in the small data area, but do not +generate special code to reference them. + +
-msdata=use
Put small global and static data in the small data area, and generate +special instructions to reference them. + +
-G num
Put global and static objects less than or equal to num bytes +into the small data or bss sections instead of the normal data or bss +sections. The default value of num is 8. +The -msdata option must be set to one of sdata or use +for this option to have any effect. + +

All modules should be compiled with the same -G num value. +Compiling with different values of num may or may not work; if it +doesn't the linker will give an error message—incorrect code will not be +generated. + +

-mdebug
Makes the M32R specific code in the compiler display some statistics +that might help in debugging programs. + +
-malign-loops
Align all loops to a 32-byte boundary. + +
-mno-align-loops
Do not enforce a 32-byte alignment for loops. This is the default. + +
-missue-rate=number
Issue number instructions per cycle. number can only be 1 +or 2. + +
-mbranch-cost=number
number can only be 1 or 2. If it is 1 then branches will be +preferred over conditional code, if it is 2, then the opposite will +apply. + +
-mflush-trap=number
Specifies the trap number to use to flush the cache. The default is +12. Valid numbers are between 0 and 15 inclusive. + +
-mno-flush-trap
Specifies that the cache cannot be flushed by using a trap. + +
-mflush-func=name
Specifies the name of the operating system function to call to flush +the cache. The default is _flush_cache, but a function call +will only be used if a trap is not available. + +
-mno-flush-func
Indicates that there is no OS function for flushing the cache. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M680x0-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M680x0-Options.html new file mode 100644 index 0000000..79396d5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M680x0-Options.html @@ -0,0 +1,324 @@ + + +M680x0 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: M32R/D Options, +Up: Submodel Options +



+
+ +

3.17.18 M680x0 Options

+ +

+These are the -m options defined for M680x0 and ColdFire processors. +The default settings depend on which architecture was selected when +the compiler was configured; the defaults for the most common choices +are given below. + +

+
-march=arch
Generate code for a specific M680x0 or ColdFire instruction set +architecture. Permissible values of arch for M680x0 +architectures are: 68000, 68010, 68020, +68030, 68040, 68060 and cpu32. ColdFire +architectures are selected according to Freescale's ISA classification +and the permissible values are: isaa, isaaplus, +isab and isac. + +

gcc defines a macro __mcfarch__ whenever it is generating +code for a ColdFire target. The arch in this macro is one of the +-march arguments given above. + +

When used together, -march and -mtune select code +that runs on a family of similar processors but that is optimized +for a particular microarchitecture. + +

-mcpu=cpu
Generate code for a specific M680x0 or ColdFire processor. +The M680x0 cpus are: 68000, 68010, 68020, +68030, 68040, 68060, 68302, 68332 +and cpu32. The ColdFire cpus are given by the table +below, which also classifies the CPUs into families: + +

Family -mcpu arguments +
51qe 51qe +
5206 5202 5204 5206 +
5206e 5206e +
5208 5207 5208 +
5211a 5210a 5211a +
5213 5211 5212 5213 +
5216 5214 5216 +
52235 52230 52231 52232 52233 52234 52235 +
5225 5224 5225 +
5235 5232 5233 5234 5235 523x +
5249 5249 +
5250 5250 +
5271 5270 5271 +
5272 5272 +
5275 5274 5275 +
5282 5280 5281 5282 528x +
5307 5307 +
5329 5327 5328 5329 532x +
5373 5372 5373 537x +
5407 5407 +
5475 5470 5471 5472 5473 5474 5475 547x 5480 5481 5482 5483 5484 5485 +
+ +

-mcpu=cpu overrides -march=arch if +arch is compatible with cpu. Other combinations of +-mcpu and -march are rejected. + +

gcc defines the macro __mcf_cpu_cpu when ColdFire target +cpu is selected. It also defines __mcf_family_family, +where the value of family is given by the table above. + +

-mtune=tune
Tune the code for a particular microarchitecture, within the +constraints set by -march and -mcpu. +The M680x0 microarchitectures are: 68000, 68010, +68020, 68030, 68040, 68060 +and cpu32. The ColdFire microarchitectures +are: cfv1, cfv2, cfv3, cfv4 and cfv4e. + +

You can also use -mtune=68020-40 for code that needs +to run relatively well on 68020, 68030 and 68040 targets. +-mtune=68020-60 is similar but includes 68060 targets +as well. These two options select the same tuning decisions as +-m68020-40 and -m68020-60 respectively. + +

gcc defines the macros __mcarch and __mcarch__ +when tuning for 680x0 architecture arch. It also defines +mcarch unless either -ansi or a non-GNU -std +option is used. If gcc is tuning for a range of architectures, +as selected by -mtune=68020-40 or -mtune=68020-60, +it defines the macros for every architecture in the range. + +

gcc also defines the macro __muarch__ when tuning for +ColdFire microarchitecture uarch, where uarch is one +of the arguments given above. + +

-m68000
-mc68000
Generate output for a 68000. This is the default +when the compiler is configured for 68000-based systems. +It is equivalent to -march=68000. + +

Use this option for microcontrollers with a 68000 or EC000 core, +including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356. + +

-m68010
Generate output for a 68010. This is the default +when the compiler is configured for 68010-based systems. +It is equivalent to -march=68010. + +
-m68020
-mc68020
Generate output for a 68020. This is the default +when the compiler is configured for 68020-based systems. +It is equivalent to -march=68020. + +
-m68030
Generate output for a 68030. This is the default when the compiler is +configured for 68030-based systems. It is equivalent to +-march=68030. + +
-m68040
Generate output for a 68040. This is the default when the compiler is +configured for 68040-based systems. It is equivalent to +-march=68040. + +

This option inhibits the use of 68881/68882 instructions that have to be +emulated by software on the 68040. Use this option if your 68040 does not +have code to emulate those instructions. + +

-m68060
Generate output for a 68060. This is the default when the compiler is +configured for 68060-based systems. It is equivalent to +-march=68060. + +

This option inhibits the use of 68020 and 68881/68882 instructions that +have to be emulated by software on the 68060. Use this option if your 68060 +does not have code to emulate those instructions. + +

-mcpu32
Generate output for a CPU32. This is the default +when the compiler is configured for CPU32-based systems. +It is equivalent to -march=cpu32. + +

Use this option for microcontrollers with a +CPU32 or CPU32+ core, including the 68330, 68331, 68332, 68333, 68334, +68336, 68340, 68341, 68349 and 68360. + +

-m5200
Generate output for a 520X ColdFire CPU. This is the default +when the compiler is configured for 520X-based systems. +It is equivalent to -mcpu=5206, and is now deprecated +in favor of that option. + +

Use this option for microcontroller with a 5200 core, including +the MCF5202, MCF5203, MCF5204 and MCF5206. + +

-m5206e
Generate output for a 5206e ColdFire CPU. The option is now +deprecated in favor of the equivalent -mcpu=5206e. + +
-m528x
Generate output for a member of the ColdFire 528X family. +The option is now deprecated in favor of the equivalent +-mcpu=528x. + +
-m5307
Generate output for a ColdFire 5307 CPU. The option is now deprecated +in favor of the equivalent -mcpu=5307. + +
-m5407
Generate output for a ColdFire 5407 CPU. The option is now deprecated +in favor of the equivalent -mcpu=5407. + +
-mcfv4e
Generate output for a ColdFire V4e family CPU (e.g. 547x/548x). +This includes use of hardware floating point instructions. +The option is equivalent to -mcpu=547x, and is now +deprecated in favor of that option. + +
-m68020-40
Generate output for a 68040, without using any of the new instructions. +This results in code which can run relatively efficiently on either a +68020/68881 or a 68030 or a 68040. The generated code does use the +68881 instructions that are emulated on the 68040. + +

The option is equivalent to -march=68020 -mtune=68020-40. + +

-m68020-60
Generate output for a 68060, without using any of the new instructions. +This results in code which can run relatively efficiently on either a +68020/68881 or a 68030 or a 68040. The generated code does use the +68881 instructions that are emulated on the 68060. + +

The option is equivalent to -march=68020 -mtune=68020-60. + +

-mhard-float
-m68881
Generate floating-point instructions. This is the default for 68020 +and above, and for ColdFire devices that have an FPU. It defines the +macro __HAVE_68881__ on M680x0 targets and __mcffpu__ +on ColdFire targets. + +
-msoft-float
Do not generate floating-point instructions; use library calls instead. +This is the default for 68000, 68010, and 68832 targets. It is also +the default for ColdFire devices that have no FPU. + +
-mdiv
-mno-div
Generate (do not generate) ColdFire hardware divide and remainder +instructions. If -march is used without -mcpu, +the default is “on” for ColdFire architectures and “off” for M680x0 +architectures. Otherwise, the default is taken from the target CPU +(either the default CPU, or the one specified by -mcpu). For +example, the default is “off” for -mcpu=5206 and “on” for +-mcpu=5206e. + +

gcc defines the macro __mcfhwdiv__ when this option is enabled. + +

-mshort
Consider type int to be 16 bits wide, like short int. +Additionally, parameters passed on the stack are also aligned to a +16-bit boundary even on targets whose API mandates promotion to 32-bit. + +
-mno-short
Do not consider type int to be 16 bits wide. This is the default. + +
-mnobitfield
-mno-bitfield
Do not use the bit-field instructions. The -m68000, -mcpu32 +and -m5200 options imply -mnobitfield. + +
-mbitfield
Do use the bit-field instructions. The -m68020 option implies +-mbitfield. This is the default if you use a configuration +designed for a 68020. + +
-mrtd
Use a different function-calling convention, in which functions +that take a fixed number of arguments return with the rtd +instruction, which pops their arguments while returning. This +saves one instruction in the caller since there is no need to pop +the arguments there. + +

This calling convention is incompatible with the one normally +used on Unix, so you cannot use it if you need to call libraries +compiled with the Unix compiler. + +

Also, you must provide function prototypes for all functions that +take variable numbers of arguments (including printf); +otherwise incorrect code will be generated for calls to those +functions. + +

In addition, seriously incorrect code will result if you call a +function with too many arguments. (Normally, extra arguments are +harmlessly ignored.) + +

The rtd instruction is supported by the 68010, 68020, 68030, +68040, 68060 and CPU32 processors, but not by the 68000 or 5200. + +

-mno-rtd
Do not use the calling conventions selected by -mrtd. +This is the default. + +
-malign-int
-mno-align-int
Control whether GCC aligns int, long, long long, +float, double, and long double variables on a 32-bit +boundary (-malign-int) or a 16-bit boundary (-mno-align-int). +Aligning variables on 32-bit boundaries produces code that runs somewhat +faster on processors with 32-bit busses at the expense of more memory. + +

Warning: if you use the -malign-int switch, GCC will +align structures containing the above types differently than +most published application binary interface specifications for the m68k. + +

-mpcrel
Use the pc-relative addressing mode of the 68000 directly, instead of +using a global offset table. At present, this option implies -fpic, +allowing at most a 16-bit offset for pc-relative addressing. -fPIC is +not presently supported with -mpcrel, though this could be supported for +68020 and higher processors. + +
-mno-strict-align
-mstrict-align
Do not (do) assume that unaligned memory references will be handled by +the system. + +
-msep-data
Generate code that allows the data segment to be located in a different +area of memory from the text segment. This allows for execute in place in +an environment without virtual memory management. This option implies +-fPIC. + +
-mno-sep-data
Generate code that assumes that the data segment follows the text segment. +This is the default. + +
-mid-shared-library
Generate code that supports shared libraries via the library ID method. +This allows for execute in place and shared libraries in an environment +without virtual memory management. This option implies -fPIC. + +
-mno-id-shared-library
Generate code that doesn't assume ID based shared libraries are being used. +This is the default. + +
-mshared-library-id=n
Specified the identification number of the ID based shared library being +compiled. Specifying a value of 0 will generate more compact code, specifying +other values will force the allocation of that number to the current +library but is no more space or time efficient than omitting this option. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M68hc1x-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M68hc1x-Options.html new file mode 100644 index 0000000..4c26d53 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/M68hc1x-Options.html @@ -0,0 +1,91 @@ + + +M68hc1x Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: M680x0 Options, +Up: Submodel Options +



+
+ +

3.17.19 M68hc1x Options

+ +

+These are the -m options defined for the 68hc11 and 68hc12 +microcontrollers. The default values for these options depends on +which style of microcontroller was selected when the compiler was configured; +the defaults for the most common choices are given below. + +

+
-m6811
-m68hc11
Generate output for a 68HC11. This is the default +when the compiler is configured for 68HC11-based systems. + +
-m6812
-m68hc12
Generate output for a 68HC12. This is the default +when the compiler is configured for 68HC12-based systems. + +
-m68S12
-m68hcs12
Generate output for a 68HCS12. + +
-mauto-incdec
Enable the use of 68HC12 pre and post auto-increment and auto-decrement +addressing modes. + +
-minmax
-nominmax
Enable the use of 68HC12 min and max instructions. + +
-mlong-calls
-mno-long-calls
Treat all calls as being far away (near). If calls are assumed to be +far away, the compiler will use the call instruction to +call a function and the rtc instruction for returning. + +
-mshort
Consider type int to be 16 bits wide, like short int. + +
-msoft-reg-count=count
Specify the number of pseudo-soft registers which are used for the +code generation. The maximum number is 32. Using more pseudo-soft +register may or may not result in better code depending on the program. +The default is 4 for 68HC11 and 2 for 68HC12. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MCore-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MCore-Options.html new file mode 100644 index 0000000..ca86eb1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MCore-Options.html @@ -0,0 +1,83 @@ + + +MCore Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: M68hc1x Options, +Up: Submodel Options +



+
+ +

3.17.20 MCore Options

+ +

+These are the -m options defined for the Motorola M*Core +processors. + +

+
-mhardlit
-mno-hardlit
Inline constants into the code stream if it can be done in two +instructions or less. + +
-mdiv
-mno-div
Use the divide instruction. (Enabled by default). + +
-mrelax-immediate
-mno-relax-immediate
Allow arbitrary sized immediates in bit operations. + +
-mwide-bitfields
-mno-wide-bitfields
Always treat bit-fields as int-sized. + +
-m4byte-functions
-mno-4byte-functions
Force all functions to be aligned to a four byte boundary. + +
-mcallgraph-data
-mno-callgraph-data
Emit callgraph information. + +
-mslow-bytes
-mno-slow-bytes
Prefer word access when reading byte quantities. + +
-mlittle-endian
-mbig-endian
Generate code for a little endian target. + +
-m210
-m340
Generate code for the 210 processor. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-DSP-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-DSP-Built_002din-Functions.html new file mode 100644 index 0000000..b9132af --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-DSP-Built_002din-Functions.html @@ -0,0 +1,325 @@ + + +MIPS DSP Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

5.50.7 MIPS DSP Built-in Functions

+ +

The MIPS DSP Application-Specific Extension (ASE) includes new +instructions that are designed to improve the performance of DSP and +media applications. It provides instructions that operate on packed +8-bit/16-bit integer data, Q7, Q15 and Q31 fractional data. + +

GCC supports MIPS DSP operations using both the generic +vector extensions (see Vector Extensions) and a collection of +MIPS-specific built-in functions. Both kinds of support are +enabled by the -mdsp command-line option. + +

Revision 2 of the ASE was introduced in the second half of 2006. +This revision adds extra instructions to the original ASE, but is +otherwise backwards-compatible with it. You can select revision 2 +using the command-line option -mdspr2; this option implies +-mdsp. + +

At present, GCC only provides support for operations on 32-bit +vectors. The vector type associated with 8-bit integer data is +usually called v4i8, the vector type associated with Q7 +is usually called v4q7, the vector type associated with 16-bit +integer data is usually called v2i16, and the vector type +associated with Q15 is usually called v2q15. They can be +defined in C as follows: + +

     typedef signed char v4i8 __attribute__ ((vector_size(4)));
+     typedef signed char v4q7 __attribute__ ((vector_size(4)));
+     typedef short v2i16 __attribute__ ((vector_size(4)));
+     typedef short v2q15 __attribute__ ((vector_size(4)));
+
+

v4i8, v4q7, v2i16 and v2q15 values are +initialized in the same way as aggregates. For example: + +

     v4i8 a = {1, 2, 3, 4};
+     v4i8 b;
+     b = (v4i8) {5, 6, 7, 8};
+     
+     v2q15 c = {0x0fcb, 0x3a75};
+     v2q15 d;
+     d = (v2q15) {0.1234 * 0x1.0p15, 0.4567 * 0x1.0p15};
+
+

Note: The CPU's endianness determines the order in which values +are packed. On little-endian targets, the first value is the least +significant and the last value is the most significant. The opposite +order applies to big-endian targets. For example, the code above will +set the lowest byte of a to 1 on little-endian targets +and 4 on big-endian targets. + +

Note: Q7, Q15 and Q31 values must be initialized with their integer +representation. As shown in this example, the integer representation +of a Q7 value can be obtained by multiplying the fractional value by +0x1.0p7. The equivalent for Q15 values is to multiply by +0x1.0p15. The equivalent for Q31 values is to multiply by +0x1.0p31. + +

The table below lists the v4i8 and v2q15 operations for which +hardware support exists. a and b are v4i8 values, +and c and d are v2q15 values. + +

C code MIPS instruction +
a + b addu.qb +
c + d addq.ph +
a - b subu.qb +
c - d subq.ph +
+ +

The table below lists the v2i16 operation for which +hardware support exists for the DSP ASE REV 2. e and f are +v2i16 values. + +

C code MIPS instruction +
e * f mul.ph +
+ +

It is easier to describe the DSP built-in functions if we first define +the following types: + +

     typedef int q31;
+     typedef int i32;
+     typedef unsigned int ui32;
+     typedef long long a64;
+
+

q31 and i32 are actually the same as int, but we +use q31 to indicate a Q31 fractional value and i32 to +indicate a 32-bit integer value. Similarly, a64 is the same as +long long, but we use a64 to indicate values that will +be placed in one of the four DSP accumulators ($ac0, +$ac1, $ac2 or $ac3). + +

Also, some built-in functions prefer or require immediate numbers as +parameters, because the corresponding DSP instructions accept both immediate +numbers and register operands, or accept immediate numbers only. The +immediate parameters are listed as follows. + +

     imm0_3: 0 to 3.
+     imm0_7: 0 to 7.
+     imm0_15: 0 to 15.
+     imm0_31: 0 to 31.
+     imm0_63: 0 to 63.
+     imm0_255: 0 to 255.
+     imm_n32_31: -32 to 31.
+     imm_n512_511: -512 to 511.
+
+

The following built-in functions map directly to a particular MIPS DSP +instruction. Please refer to the architecture specification +for details on what each instruction does. + +

     v2q15 __builtin_mips_addq_ph (v2q15, v2q15)
+     v2q15 __builtin_mips_addq_s_ph (v2q15, v2q15)
+     q31 __builtin_mips_addq_s_w (q31, q31)
+     v4i8 __builtin_mips_addu_qb (v4i8, v4i8)
+     v4i8 __builtin_mips_addu_s_qb (v4i8, v4i8)
+     v2q15 __builtin_mips_subq_ph (v2q15, v2q15)
+     v2q15 __builtin_mips_subq_s_ph (v2q15, v2q15)
+     q31 __builtin_mips_subq_s_w (q31, q31)
+     v4i8 __builtin_mips_subu_qb (v4i8, v4i8)
+     v4i8 __builtin_mips_subu_s_qb (v4i8, v4i8)
+     i32 __builtin_mips_addsc (i32, i32)
+     i32 __builtin_mips_addwc (i32, i32)
+     i32 __builtin_mips_modsub (i32, i32)
+     i32 __builtin_mips_raddu_w_qb (v4i8)
+     v2q15 __builtin_mips_absq_s_ph (v2q15)
+     q31 __builtin_mips_absq_s_w (q31)
+     v4i8 __builtin_mips_precrq_qb_ph (v2q15, v2q15)
+     v2q15 __builtin_mips_precrq_ph_w (q31, q31)
+     v2q15 __builtin_mips_precrq_rs_ph_w (q31, q31)
+     v4i8 __builtin_mips_precrqu_s_qb_ph (v2q15, v2q15)
+     q31 __builtin_mips_preceq_w_phl (v2q15)
+     q31 __builtin_mips_preceq_w_phr (v2q15)
+     v2q15 __builtin_mips_precequ_ph_qbl (v4i8)
+     v2q15 __builtin_mips_precequ_ph_qbr (v4i8)
+     v2q15 __builtin_mips_precequ_ph_qbla (v4i8)
+     v2q15 __builtin_mips_precequ_ph_qbra (v4i8)
+     v2q15 __builtin_mips_preceu_ph_qbl (v4i8)
+     v2q15 __builtin_mips_preceu_ph_qbr (v4i8)
+     v2q15 __builtin_mips_preceu_ph_qbla (v4i8)
+     v2q15 __builtin_mips_preceu_ph_qbra (v4i8)
+     v4i8 __builtin_mips_shll_qb (v4i8, imm0_7)
+     v4i8 __builtin_mips_shll_qb (v4i8, i32)
+     v2q15 __builtin_mips_shll_ph (v2q15, imm0_15)
+     v2q15 __builtin_mips_shll_ph (v2q15, i32)
+     v2q15 __builtin_mips_shll_s_ph (v2q15, imm0_15)
+     v2q15 __builtin_mips_shll_s_ph (v2q15, i32)
+     q31 __builtin_mips_shll_s_w (q31, imm0_31)
+     q31 __builtin_mips_shll_s_w (q31, i32)
+     v4i8 __builtin_mips_shrl_qb (v4i8, imm0_7)
+     v4i8 __builtin_mips_shrl_qb (v4i8, i32)
+     v2q15 __builtin_mips_shra_ph (v2q15, imm0_15)
+     v2q15 __builtin_mips_shra_ph (v2q15, i32)
+     v2q15 __builtin_mips_shra_r_ph (v2q15, imm0_15)
+     v2q15 __builtin_mips_shra_r_ph (v2q15, i32)
+     q31 __builtin_mips_shra_r_w (q31, imm0_31)
+     q31 __builtin_mips_shra_r_w (q31, i32)
+     v2q15 __builtin_mips_muleu_s_ph_qbl (v4i8, v2q15)
+     v2q15 __builtin_mips_muleu_s_ph_qbr (v4i8, v2q15)
+     v2q15 __builtin_mips_mulq_rs_ph (v2q15, v2q15)
+     q31 __builtin_mips_muleq_s_w_phl (v2q15, v2q15)
+     q31 __builtin_mips_muleq_s_w_phr (v2q15, v2q15)
+     a64 __builtin_mips_dpau_h_qbl (a64, v4i8, v4i8)
+     a64 __builtin_mips_dpau_h_qbr (a64, v4i8, v4i8)
+     a64 __builtin_mips_dpsu_h_qbl (a64, v4i8, v4i8)
+     a64 __builtin_mips_dpsu_h_qbr (a64, v4i8, v4i8)
+     a64 __builtin_mips_dpaq_s_w_ph (a64, v2q15, v2q15)
+     a64 __builtin_mips_dpaq_sa_l_w (a64, q31, q31)
+     a64 __builtin_mips_dpsq_s_w_ph (a64, v2q15, v2q15)
+     a64 __builtin_mips_dpsq_sa_l_w (a64, q31, q31)
+     a64 __builtin_mips_mulsaq_s_w_ph (a64, v2q15, v2q15)
+     a64 __builtin_mips_maq_s_w_phl (a64, v2q15, v2q15)
+     a64 __builtin_mips_maq_s_w_phr (a64, v2q15, v2q15)
+     a64 __builtin_mips_maq_sa_w_phl (a64, v2q15, v2q15)
+     a64 __builtin_mips_maq_sa_w_phr (a64, v2q15, v2q15)
+     i32 __builtin_mips_bitrev (i32)
+     i32 __builtin_mips_insv (i32, i32)
+     v4i8 __builtin_mips_repl_qb (imm0_255)
+     v4i8 __builtin_mips_repl_qb (i32)
+     v2q15 __builtin_mips_repl_ph (imm_n512_511)
+     v2q15 __builtin_mips_repl_ph (i32)
+     void __builtin_mips_cmpu_eq_qb (v4i8, v4i8)
+     void __builtin_mips_cmpu_lt_qb (v4i8, v4i8)
+     void __builtin_mips_cmpu_le_qb (v4i8, v4i8)
+     i32 __builtin_mips_cmpgu_eq_qb (v4i8, v4i8)
+     i32 __builtin_mips_cmpgu_lt_qb (v4i8, v4i8)
+     i32 __builtin_mips_cmpgu_le_qb (v4i8, v4i8)
+     void __builtin_mips_cmp_eq_ph (v2q15, v2q15)
+     void __builtin_mips_cmp_lt_ph (v2q15, v2q15)
+     void __builtin_mips_cmp_le_ph (v2q15, v2q15)
+     v4i8 __builtin_mips_pick_qb (v4i8, v4i8)
+     v2q15 __builtin_mips_pick_ph (v2q15, v2q15)
+     v2q15 __builtin_mips_packrl_ph (v2q15, v2q15)
+     i32 __builtin_mips_extr_w (a64, imm0_31)
+     i32 __builtin_mips_extr_w (a64, i32)
+     i32 __builtin_mips_extr_r_w (a64, imm0_31)
+     i32 __builtin_mips_extr_s_h (a64, i32)
+     i32 __builtin_mips_extr_rs_w (a64, imm0_31)
+     i32 __builtin_mips_extr_rs_w (a64, i32)
+     i32 __builtin_mips_extr_s_h (a64, imm0_31)
+     i32 __builtin_mips_extr_r_w (a64, i32)
+     i32 __builtin_mips_extp (a64, imm0_31)
+     i32 __builtin_mips_extp (a64, i32)
+     i32 __builtin_mips_extpdp (a64, imm0_31)
+     i32 __builtin_mips_extpdp (a64, i32)
+     a64 __builtin_mips_shilo (a64, imm_n32_31)
+     a64 __builtin_mips_shilo (a64, i32)
+     a64 __builtin_mips_mthlip (a64, i32)
+     void __builtin_mips_wrdsp (i32, imm0_63)
+     i32 __builtin_mips_rddsp (imm0_63)
+     i32 __builtin_mips_lbux (void *, i32)
+     i32 __builtin_mips_lhx (void *, i32)
+     i32 __builtin_mips_lwx (void *, i32)
+     i32 __builtin_mips_bposge32 (void)
+
+

The following built-in functions map directly to a particular MIPS DSP REV 2 +instruction. Please refer to the architecture specification +for details on what each instruction does. + +

     v4q7 __builtin_mips_absq_s_qb (v4q7);
+     v2i16 __builtin_mips_addu_ph (v2i16, v2i16);
+     v2i16 __builtin_mips_addu_s_ph (v2i16, v2i16);
+     v4i8 __builtin_mips_adduh_qb (v4i8, v4i8);
+     v4i8 __builtin_mips_adduh_r_qb (v4i8, v4i8);
+     i32 __builtin_mips_append (i32, i32, imm0_31);
+     i32 __builtin_mips_balign (i32, i32, imm0_3);
+     i32 __builtin_mips_cmpgdu_eq_qb (v4i8, v4i8);
+     i32 __builtin_mips_cmpgdu_lt_qb (v4i8, v4i8);
+     i32 __builtin_mips_cmpgdu_le_qb (v4i8, v4i8);
+     a64 __builtin_mips_dpa_w_ph (a64, v2i16, v2i16);
+     a64 __builtin_mips_dps_w_ph (a64, v2i16, v2i16);
+     a64 __builtin_mips_madd (a64, i32, i32);
+     a64 __builtin_mips_maddu (a64, ui32, ui32);
+     a64 __builtin_mips_msub (a64, i32, i32);
+     a64 __builtin_mips_msubu (a64, ui32, ui32);
+     v2i16 __builtin_mips_mul_ph (v2i16, v2i16);
+     v2i16 __builtin_mips_mul_s_ph (v2i16, v2i16);
+     q31 __builtin_mips_mulq_rs_w (q31, q31);
+     v2q15 __builtin_mips_mulq_s_ph (v2q15, v2q15);
+     q31 __builtin_mips_mulq_s_w (q31, q31);
+     a64 __builtin_mips_mulsa_w_ph (a64, v2i16, v2i16);
+     a64 __builtin_mips_mult (i32, i32);
+     a64 __builtin_mips_multu (ui32, ui32);
+     v4i8 __builtin_mips_precr_qb_ph (v2i16, v2i16);
+     v2i16 __builtin_mips_precr_sra_ph_w (i32, i32, imm0_31);
+     v2i16 __builtin_mips_precr_sra_r_ph_w (i32, i32, imm0_31);
+     i32 __builtin_mips_prepend (i32, i32, imm0_31);
+     v4i8 __builtin_mips_shra_qb (v4i8, imm0_7);
+     v4i8 __builtin_mips_shra_r_qb (v4i8, imm0_7);
+     v4i8 __builtin_mips_shra_qb (v4i8, i32);
+     v4i8 __builtin_mips_shra_r_qb (v4i8, i32);
+     v2i16 __builtin_mips_shrl_ph (v2i16, imm0_15);
+     v2i16 __builtin_mips_shrl_ph (v2i16, i32);
+     v2i16 __builtin_mips_subu_ph (v2i16, v2i16);
+     v2i16 __builtin_mips_subu_s_ph (v2i16, v2i16);
+     v4i8 __builtin_mips_subuh_qb (v4i8, v4i8);
+     v4i8 __builtin_mips_subuh_r_qb (v4i8, v4i8);
+     v2q15 __builtin_mips_addqh_ph (v2q15, v2q15);
+     v2q15 __builtin_mips_addqh_r_ph (v2q15, v2q15);
+     q31 __builtin_mips_addqh_w (q31, q31);
+     q31 __builtin_mips_addqh_r_w (q31, q31);
+     v2q15 __builtin_mips_subqh_ph (v2q15, v2q15);
+     v2q15 __builtin_mips_subqh_r_ph (v2q15, v2q15);
+     q31 __builtin_mips_subqh_w (q31, q31);
+     q31 __builtin_mips_subqh_r_w (q31, q31);
+     a64 __builtin_mips_dpax_w_ph (a64, v2i16, v2i16);
+     a64 __builtin_mips_dpsx_w_ph (a64, v2i16, v2i16);
+     a64 __builtin_mips_dpaqx_s_w_ph (a64, v2q15, v2q15);
+     a64 __builtin_mips_dpaqx_sa_w_ph (a64, v2q15, v2q15);
+     a64 __builtin_mips_dpsqx_s_w_ph (a64, v2q15, v2q15);
+     a64 __builtin_mips_dpsqx_sa_w_ph (a64, v2q15, v2q15);
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-Options.html new file mode 100644 index 0000000..cf942ef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-Options.html @@ -0,0 +1,520 @@ + + +MIPS Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: MCore Options, +Up: Submodel Options +



+
+ +

3.17.21 MIPS Options

+ +

+

+
-EB
Generate big-endian code. + +
-EL
Generate little-endian code. This is the default for mips*el-*-* +configurations. + +
-march=arch
Generate code that will run on arch, which can be the name of a +generic MIPS ISA, or the name of a particular processor. +The ISA names are: +mips1, mips2, mips3, mips4, +mips32, mips32r2, and mips64. +The processor names are: +4kc, 4km, 4kp, 4ksc, +4kec, 4kem, 4kep, 4ksd, +5kc, 5kf, +20kc, +24kc, 24kf2_1, 24kf1_1, +24kec, 24kef2_1, 24kef1_1, +34kc, 34kf2_1, 34kf1_1, +74kc, 74kf2_1, 74kf1_1, 74kf3_2, +m4k, +orion, +r2000, r3000, r3900, r4000, r4400, +r4600, r4650, r6000, r8000, +rm7000, rm9000, +sb1, +sr71000, +vr4100, vr4111, vr4120, vr4130, vr4300, +vr5000, vr5400 and vr5500. +The special value from-abi selects the +most compatible architecture for the selected ABI (that is, +mips1 for 32-bit ABIs and mips3 for 64-bit ABIs). + +

In processor names, a final 000 can be abbreviated as k +(for example, -march=r2k). Prefixes are optional, and +vr may be written r. + +

Names of the form nf2_1 refer to processors with +FPUs clocked at half the rate of the core, names of the form +nf1_1 refer to processors with FPUs clocked at the same +rate as the core, and names of the form nf3_2 refer to +processors with FPUs clocked a ratio of 3:2 with respect to the core. +For compatibility reasons, nf is accepted as a synonym +for nf2_1 while nx and bfx are +accepted as synonyms for nf1_1. + +

GCC defines two macros based on the value of this option. The first +is _MIPS_ARCH, which gives the name of target architecture, as +a string. The second has the form _MIPS_ARCH_foo, +where foo is the capitalized value of _MIPS_ARCH. +For example, -march=r2000 will set _MIPS_ARCH +to "r2000" and define the macro _MIPS_ARCH_R2000. + +

Note that the _MIPS_ARCH macro uses the processor names given +above. In other words, it will have the full prefix and will not +abbreviate 000 as k. In the case of from-abi, +the macro names the resolved architecture (either "mips1" or +"mips3"). It names the default architecture when no +-march option is given. + +

-mtune=arch
Optimize for arch. Among other things, this option controls +the way instructions are scheduled, and the perceived cost of arithmetic +operations. The list of arch values is the same as for +-march. + +

When this option is not used, GCC will optimize for the processor +specified by -march. By using -march and +-mtune together, it is possible to generate code that will +run on a family of processors, but optimize the code for one +particular member of that family. + +

-mtune defines the macros _MIPS_TUNE and +_MIPS_TUNE_foo, which work in the same way as the +-march ones described above. + +

-mips1
Equivalent to -march=mips1. + +
-mips2
Equivalent to -march=mips2. + +
-mips3
Equivalent to -march=mips3. + +
-mips4
Equivalent to -march=mips4. + +
-mips32
Equivalent to -march=mips32. + +
-mips32r2
Equivalent to -march=mips32r2. + +
-mips64
Equivalent to -march=mips64. + +
-mips16
-mno-mips16
Generate (do not generate) MIPS16 code. If GCC is targetting a +MIPS32 or MIPS64 architecture, it will make use of the MIPS16e ASE. + +

MIPS16 code generation can also be controlled on a per-function basis +by means of mips16 and nomips16 attributes. +See Function Attributes, for more information. + +

-mflip-mips16
Generate MIPS16 code on alternating functions. This option is provided +for regression testing of mixed MIPS16/non-MIPS16 code generation, and is +not intended for ordinary use in compiling user code. + +
-minterlink-mips16
-mno-interlink-mips16
Require (do not require) that non-MIPS16 code be link-compatible with +MIPS16 code. + +

For example, non-MIPS16 code cannot jump directly to MIPS16 code; +it must either use a call or an indirect jump. -minterlink-mips16 +therefore disables direct jumps unless GCC knows that the target of the +jump is not MIPS16. + +

-mabi=32
-mabi=o64
-mabi=n32
-mabi=64
-mabi=eabi
Generate code for the given ABI. + +

Note that the EABI has a 32-bit and a 64-bit variant. GCC normally +generates 64-bit code when you select a 64-bit architecture, but you +can use -mgp32 to get 32-bit code instead. + +

For information about the O64 ABI, see +http://gcc.gnu.org/projects/mipso64-abi.html. + +

GCC supports a variant of the o32 ABI in which floating-point registers +are 64 rather than 32 bits wide. You can select this combination with +-mabi=32 -mfp64. This ABI relies on the mthc1 +and mfhc1 instructions and is therefore only supported for +MIPS32R2 processors. + +

The register assignments for arguments and return values remain the +same, but each scalar value is passed in a single 64-bit register +rather than a pair of 32-bit registers. For example, scalar +floating-point values are returned in $f0 only, not a +$f0/$f1 pair. The set of call-saved registers also +remains the same, but all 64 bits are saved. + +

-mabicalls
-mno-abicalls
Generate (do not generate) code that is suitable for SVR4-style +dynamic objects. -mabicalls is the default for SVR4-based +systems. + +
-mshared
-mno-shared
Generate (do not generate) code that is fully position-independent, +and that can therefore be linked into shared libraries. This option +only affects -mabicalls. + +

All -mabicalls code has traditionally been position-independent, +regardless of options like -fPIC and -fpic. However, +as an extension, the GNU toolchain allows executables to use absolute +accesses for locally-binding symbols. It can also use shorter GP +initialization sequences and generate direct calls to locally-defined +functions. This mode is selected by -mno-shared. + +

-mno-shared depends on binutils 2.16 or higher and generates +objects that can only be linked by the GNU linker. However, the option +does not affect the ABI of the final executable; it only affects the ABI +of relocatable objects. Using -mno-shared will generally make +executables both smaller and quicker. + +

-mshared is the default. + +

-mxgot
-mno-xgot
Lift (do not lift) the usual restrictions on the size of the global +offset table. + +

GCC normally uses a single instruction to load values from the GOT. +While this is relatively efficient, it will only work if the GOT +is smaller than about 64k. Anything larger will cause the linker +to report an error such as: + +

+

          relocation truncated to fit: R_MIPS_GOT16 foobar
+     
+

If this happens, you should recompile your code with -mxgot. +It should then work with very large GOTs, although it will also be +less efficient, since it will take three instructions to fetch the +value of a global symbol. + +

Note that some linkers can create multiple GOTs. If you have such a +linker, you should only need to use -mxgot when a single object +file accesses more than 64k's worth of GOT entries. Very few do. + +

These options have no effect unless GCC is generating position +independent code. + +

-mgp32
Assume that general-purpose registers are 32 bits wide. + +
-mgp64
Assume that general-purpose registers are 64 bits wide. + +
-mfp32
Assume that floating-point registers are 32 bits wide. + +
-mfp64
Assume that floating-point registers are 64 bits wide. + +
-mhard-float
Use floating-point coprocessor instructions. + +
-msoft-float
Do not use floating-point coprocessor instructions. Implement +floating-point calculations using library calls instead. + +
-msingle-float
Assume that the floating-point coprocessor only supports single-precision +operations. + +
-mdouble-float
Assume that the floating-point coprocessor supports double-precision +operations. This is the default. + +
-mllsc
-mno-llsc
Use (do not use) ll, sc, and sync instructions to +implement atomic memory built-in functions. When neither option is +specified, GCC will use the instructions if the target architecture +supports them. + +

-mllsc is useful if the runtime environment can emulate the +instructions and -mno-llsc can be useful when compiling for +nonstandard ISAs. You can make either option the default by +configuring GCC with --with-llsc and --without-llsc +respectively. --with-llsc is the default for some +configurations; see the installation documentation for details. + +

-mdsp
-mno-dsp
Use (do not use) revision 1 of the MIPS DSP ASE. +See MIPS DSP Built-in Functions. This option defines the +preprocessor macro __mips_dsp. It also defines +__mips_dsp_rev to 1. + +
-mdspr2
-mno-dspr2
Use (do not use) revision 2 of the MIPS DSP ASE. +See MIPS DSP Built-in Functions. This option defines the +preprocessor macros __mips_dsp and __mips_dspr2. +It also defines __mips_dsp_rev to 2. + +
-msmartmips
-mno-smartmips
Use (do not use) the MIPS SmartMIPS ASE. + +
-mpaired-single
-mno-paired-single
Use (do not use) paired-single floating-point instructions. +See MIPS Paired-Single Support. This option requires +hardware floating-point support to be enabled. + +
-mdmx
-mno-mdmx
Use (do not use) MIPS Digital Media Extension instructions. +This option can only be used when generating 64-bit code and requires +hardware floating-point support to be enabled. + +
-mips3d
-mno-mips3d
Use (do not use) the MIPS-3D ASE. See MIPS-3D Built-in Functions. +The option -mips3d implies -mpaired-single. + +
-mmt
-mno-mt
Use (do not use) MT Multithreading instructions. + +
-mlong64
Force long types to be 64 bits wide. See -mlong32 for +an explanation of the default and the way that the pointer size is +determined. + +
-mlong32
Force long, int, and pointer types to be 32 bits wide. + +

The default size of ints, longs and pointers depends on +the ABI. All the supported ABIs use 32-bit ints. The n64 ABI +uses 64-bit longs, as does the 64-bit EABI; the others use +32-bit longs. Pointers are the same size as longs, +or the same size as integer registers, whichever is smaller. + +

-msym32
-mno-sym32
Assume (do not assume) that all symbols have 32-bit values, regardless +of the selected ABI. This option is useful in combination with +-mabi=64 and -mno-abicalls because it allows GCC +to generate shorter and faster references to symbolic addresses. + +
-G num
Put definitions of externally-visible data in a small data section +if that data is no bigger than num bytes. GCC can then access +the data more efficiently; see -mgpopt for details. + +

The default -G option depends on the configuration. + +

-mlocal-sdata
-mno-local-sdata
Extend (do not extend) the -G behavior to local data too, +such as to static variables in C. -mlocal-sdata is the +default for all configurations. + +

If the linker complains that an application is using too much small data, +you might want to try rebuilding the less performance-critical parts with +-mno-local-sdata. You might also want to build large +libraries with -mno-local-sdata, so that the libraries leave +more room for the main program. + +

-mextern-sdata
-mno-extern-sdata
Assume (do not assume) that externally-defined data will be in +a small data section if that data is within the -G limit. +-mextern-sdata is the default for all configurations. + +

If you compile a module Mod with -mextern-sdata -G +num -mgpopt, and Mod references a variable Var +that is no bigger than num bytes, you must make sure that Var +is placed in a small data section. If Var is defined by another +module, you must either compile that module with a high-enough +-G setting or attach a section attribute to Var's +definition. If Var is common, you must link the application +with a high-enough -G setting. + +

The easiest way of satisfying these restrictions is to compile +and link every module with the same -G option. However, +you may wish to build a library that supports several different +small data limits. You can do this by compiling the library with +the highest supported -G setting and additionally using +-mno-extern-sdata to stop the library from making assumptions +about externally-defined data. + +

-mgpopt
-mno-gpopt
Use (do not use) GP-relative accesses for symbols that are known to be +in a small data section; see -G, -mlocal-sdata and +-mextern-sdata. -mgpopt is the default for all +configurations. + +

-mno-gpopt is useful for cases where the $gp register +might not hold the value of _gp. For example, if the code is +part of a library that might be used in a boot monitor, programs that +call boot monitor routines will pass an unknown value in $gp. +(In such situations, the boot monitor itself would usually be compiled +with -G0.) + +

-mno-gpopt implies -mno-local-sdata and +-mno-extern-sdata. + +

-membedded-data
-mno-embedded-data
Allocate variables to the read-only data section first if possible, then +next in the small data section if possible, otherwise in data. This gives +slightly slower code than the default, but reduces the amount of RAM required +when executing, and thus may be preferred for some embedded systems. + +
-muninit-const-in-rodata
-mno-uninit-const-in-rodata
Put uninitialized const variables in the read-only data section. +This option is only meaningful in conjunction with -membedded-data. + +
-mcode-readable=setting
Specify whether GCC may generate code that reads from executable sections. +There are three possible settings: + +
+
-mcode-readable=yes
Instructions may freely access executable sections. This is the +default setting. + +
-mcode-readable=pcrel
MIPS16 PC-relative load instructions can access executable sections, +but other instructions must not do so. This option is useful on 4KSc +and 4KSd processors when the code TLBs have the Read Inhibit bit set. +It is also useful on processors that can be configured to have a dual +instruction/data SRAM interface and that, like the M4K, automatically +redirect PC-relative loads to the instruction RAM. + +
-mcode-readable=no
Instructions must not access executable sections. This option can be +useful on targets that are configured to have a dual instruction/data +SRAM interface but that (unlike the M4K) do not automatically redirect +PC-relative loads to the instruction RAM. +
+ +
-msplit-addresses
-mno-split-addresses
Enable (disable) use of the %hi() and %lo() assembler +relocation operators. This option has been superseded by +-mexplicit-relocs but is retained for backwards compatibility. + +
-mexplicit-relocs
-mno-explicit-relocs
Use (do not use) assembler relocation operators when dealing with symbolic +addresses. The alternative, selected by -mno-explicit-relocs, +is to use assembler macros instead. + +

-mexplicit-relocs is the default if GCC was configured +to use an assembler that supports relocation operators. + +

-mcheck-zero-division
-mno-check-zero-division
Trap (do not trap) on integer division by zero. + +

The default is -mcheck-zero-division. + +

-mdivide-traps
-mdivide-breaks
MIPS systems check for division by zero by generating either a +conditional trap or a break instruction. Using traps results in +smaller code, but is only supported on MIPS II and later. Also, some +versions of the Linux kernel have a bug that prevents trap from +generating the proper signal (SIGFPE). Use -mdivide-traps to +allow conditional traps on architectures that support them and +-mdivide-breaks to force the use of breaks. + +

The default is usually -mdivide-traps, but this can be +overridden at configure time using --with-divide=breaks. +Divide-by-zero checks can be completely disabled using +-mno-check-zero-division. + +

-mmemcpy
-mno-memcpy
Force (do not force) the use of memcpy() for non-trivial block +moves. The default is -mno-memcpy, which allows GCC to inline +most constant-sized copies. + +
-mlong-calls
-mno-long-calls
Disable (do not disable) use of the jal instruction. Calling +functions using jal is more efficient but requires the caller +and callee to be in the same 256 megabyte segment. + +

This option has no effect on abicalls code. The default is +-mno-long-calls. + +

-mmad
-mno-mad
Enable (disable) use of the mad, madu and mul +instructions, as provided by the R4650 ISA. + +
-mfused-madd
-mno-fused-madd
Enable (disable) use of the floating point multiply-accumulate +instructions, when they are available. The default is +-mfused-madd. + +

When multiply-accumulate instructions are used, the intermediate +product is calculated to infinite precision and is not subject to +the FCSR Flush to Zero bit. This may be undesirable in some +circumstances. + +

-nocpp
Tell the MIPS assembler to not run its preprocessor over user +assembler files (with a .s suffix) when assembling them. + +
-mfix-r4000
-mno-fix-r4000
Work around certain R4000 CPU errata: +
    +
  • A double-word or a variable shift may give an incorrect result if executed +immediately after starting an integer division. +
  • A double-word or a variable shift may give an incorrect result if executed +while an integer multiplication is in progress. +
  • An integer division may give an incorrect result if started in a delay slot +of a taken branch or a jump. +
+ +
-mfix-r4400
-mno-fix-r4400
Work around certain R4400 CPU errata: +
    +
  • A double-word or a variable shift may give an incorrect result if executed +immediately after starting an integer division. +
+ +
-mfix-vr4120
-mno-fix-vr4120
Work around certain VR4120 errata: +
    +
  • dmultu does not always produce the correct result. +
  • div and ddiv do not always produce the correct result if one +of the operands is negative. +
+ The workarounds for the division errata rely on special functions in +libgcc.a. At present, these functions are only provided by +the mips64vr*-elf configurations. + +

Other VR4120 errata require a nop to be inserted between certain pairs of +instructions. These errata are handled by the assembler, not by GCC itself. + +

-mfix-vr4130
Work around the VR4130 mflo/mfhi errata. The +workarounds are implemented by the assembler rather than by GCC, +although GCC will avoid using mflo and mfhi if the +VR4130 macc, macchi, dmacc and dmacchi +instructions are available instead. + +
-mfix-sb1
-mno-fix-sb1
Work around certain SB-1 CPU core errata. +(This flag currently works around the SB-1 revision 2 +“F1” and “F2” floating point errata.) + +
-mflush-func=func
-mno-flush-func
Specifies the function to call to flush the I and D caches, or to not +call any such function. If called, the function must take the same +arguments as the common _flush_func(), that is, the address of the +memory range for which the cache is being flushed, the size of the +memory range, and the number 3 (to flush both caches). The default +depends on the target GCC was configured for, but commonly is either +_flush_func or __cpu_flush. + +
mbranch-cost=num
Set the cost of branches to roughly num “simple” instructions. +This cost is only a heuristic and is not guaranteed to produce +consistent results across releases. A zero cost redundantly selects +the default, which is based on the -mtune setting. + +
-mbranch-likely
-mno-branch-likely
Enable or disable use of Branch Likely instructions, regardless of the +default for the selected architecture. By default, Branch Likely +instructions may be generated if they are supported by the selected +architecture. An exception is for the MIPS32 and MIPS64 architectures +and processors which implement those architectures; for those, Branch +Likely instructions will not be generated by default because the MIPS32 +and MIPS64 architectures specifically deprecate their use. + +
-mfp-exceptions
-mno-fp-exceptions
Specifies whether FP exceptions are enabled. This affects how we schedule +FP instructions for some processors. The default is that FP exceptions are +enabled. + +

For instance, on the SB-1, if FP exceptions are disabled, and we are emitting +64-bit code, then we can use both FP pipes. Otherwise, we can only use one +FP pipe. + +

-mvr4130-align
-mno-vr4130-align
The VR4130 pipeline is two-way superscalar, but can only issue two +instructions together if the first one is 8-byte aligned. When this +option is enabled, GCC will align pairs of instructions that it +thinks should execute in parallel. + +

This option only has an effect when optimizing for the VR4130. +It normally makes code faster, but at the expense of making it bigger. +It is enabled by default at optimization level -O3. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-Paired_002dSingle-Support.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-Paired_002dSingle-Support.html new file mode 100644 index 0000000..00be72a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS-Paired_002dSingle-Support.html @@ -0,0 +1,95 @@ + + +MIPS Paired-Single Support - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

5.50.8 MIPS Paired-Single Support

+ +

The MIPS64 architecture includes a number of instructions that +operate on pairs of single-precision floating-point values. +Each pair is packed into a 64-bit floating-point register, +with one element being designated the “upper half” and +the other being designated the “lower half”. + +

GCC supports paired-single operations using both the generic +vector extensions (see Vector Extensions) and a collection of +MIPS-specific built-in functions. Both kinds of support are +enabled by the -mpaired-single command-line option. + +

The vector type associated with paired-single values is usually +called v2sf. It can be defined in C as follows: + +

     typedef float v2sf __attribute__ ((vector_size (8)));
+
+

v2sf values are initialized in the same way as aggregates. +For example: + +

     v2sf a = {1.5, 9.1};
+     v2sf b;
+     float e, f;
+     b = (v2sf) {e, f};
+
+

Note: The CPU's endianness determines which value is stored in +the upper half of a register and which value is stored in the lower half. +On little-endian targets, the first value is the lower one and the second +value is the upper one. The opposite order applies to big-endian targets. +For example, the code above will set the lower half of a to +1.5 on little-endian targets and 9.1 on big-endian targets. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS_002d3D-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS_002d3D-Built_002din-Functions.html new file mode 100644 index 0000000..a3e5fc6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MIPS_002d3D-Built_002din-Functions.html @@ -0,0 +1,177 @@ + + +MIPS-3D Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +
5.50.8.3 MIPS-3D Built-in Functions
+ +

The MIPS-3D Application-Specific Extension (ASE) includes additional +paired-single instructions that are designed to improve the performance +of 3D graphics operations. Support for these instructions is controlled +by the -mips3d command-line option. + +

The functions listed below map directly to a particular MIPS-3D +instruction. Please refer to the architecture specification for +more details on what each instruction does. + +

+
v2sf __builtin_mips_addr_ps (v2sf, v2sf)
Reduction add (addr.ps). + +
v2sf __builtin_mips_mulr_ps (v2sf, v2sf)
Reduction multiply (mulr.ps). + +
v2sf __builtin_mips_cvt_pw_ps (v2sf)
Convert paired single to paired word (cvt.pw.ps). + +
v2sf __builtin_mips_cvt_ps_pw (v2sf)
Convert paired word to paired single (cvt.ps.pw). + +
float __builtin_mips_recip1_s (float)
double __builtin_mips_recip1_d (double)
v2sf __builtin_mips_recip1_ps (v2sf)
Reduced precision reciprocal (sequence step 1) (recip1.fmt). + +
float __builtin_mips_recip2_s (float, float)
double __builtin_mips_recip2_d (double, double)
v2sf __builtin_mips_recip2_ps (v2sf, v2sf)
Reduced precision reciprocal (sequence step 2) (recip2.fmt). + +
float __builtin_mips_rsqrt1_s (float)
double __builtin_mips_rsqrt1_d (double)
v2sf __builtin_mips_rsqrt1_ps (v2sf)
Reduced precision reciprocal square root (sequence step 1) +(rsqrt1.fmt). + +
float __builtin_mips_rsqrt2_s (float, float)
double __builtin_mips_rsqrt2_d (double, double)
v2sf __builtin_mips_rsqrt2_ps (v2sf, v2sf)
Reduced precision reciprocal square root (sequence step 2) +(rsqrt2.fmt). +
+ +

The following multi-instruction functions are also available. +In each case, cond can be any of the 16 floating-point conditions: +f, un, eq, ueq, olt, ult, +ole, ule, sf, ngle, seq, +ngl, lt, nge, le or ngt. + +

+
int __builtin_mips_cabs_cond_s (float a, float b)
int __builtin_mips_cabs_cond_d (double a, double b)
Absolute comparison of two scalar values (cabs.cond.fmt, +bc1t/bc1f). + +

These functions compare a and b using cabs.cond.s +or cabs.cond.d and return the result as a boolean value. +For example: + +

          float a, b;
+          if (__builtin_mips_cabs_eq_s (a, b))
+            true ();
+          else
+            false ();
+     
+
int __builtin_mips_upper_cabs_cond_ps (v2sf a, v2sf b)
int __builtin_mips_lower_cabs_cond_ps (v2sf a, v2sf b)
Absolute comparison of two paired-single values (cabs.cond.ps, +bc1t/bc1f). + +

These functions compare a and b using cabs.cond.ps +and return either the upper or lower half of the result. For example: + +

          v2sf a, b;
+          if (__builtin_mips_upper_cabs_eq_ps (a, b))
+            upper_halves_are_equal ();
+          else
+            upper_halves_are_unequal ();
+          
+          if (__builtin_mips_lower_cabs_eq_ps (a, b))
+            lower_halves_are_equal ();
+          else
+            lower_halves_are_unequal ();
+     
+
v2sf __builtin_mips_movt_cabs_cond_ps (v2sf a, v2sf b, v2sf c, v2sf d)
v2sf __builtin_mips_movf_cabs_cond_ps (v2sf a, v2sf b, v2sf c, v2sf d)
Conditional move based on absolute comparison (cabs.cond.ps, +movt.ps/movf.ps). + +

The movt functions return the value x computed by: + +

          cabs.cond.ps cc,a,b
+          mov.ps x,c
+          movt.ps x,d,cc
+     
+

The movf functions are similar but use movf.ps instead +of movt.ps. + +

int __builtin_mips_any_c_cond_ps (v2sf a, v2sf b)
int __builtin_mips_all_c_cond_ps (v2sf a, v2sf b)
int __builtin_mips_any_cabs_cond_ps (v2sf a, v2sf b)
int __builtin_mips_all_cabs_cond_ps (v2sf a, v2sf b)
Comparison of two paired-single values +(c.cond.ps/cabs.cond.ps, +bc1any2t/bc1any2f). + +

These functions compare a and b using c.cond.ps +or cabs.cond.ps. The any forms return true if either +result is true and the all forms return true if both results are true. +For example: + +

          v2sf a, b;
+          if (__builtin_mips_any_c_eq_ps (a, b))
+            one_is_true ();
+          else
+            both_are_false ();
+          
+          if (__builtin_mips_all_c_eq_ps (a, b))
+            both_are_true ();
+          else
+            one_is_false ();
+     
+
int __builtin_mips_any_c_cond_4s (v2sf a, v2sf b, v2sf c, v2sf d)
int __builtin_mips_all_c_cond_4s (v2sf a, v2sf b, v2sf c, v2sf d)
int __builtin_mips_any_cabs_cond_4s (v2sf a, v2sf b, v2sf c, v2sf d)
int __builtin_mips_all_cabs_cond_4s (v2sf a, v2sf b, v2sf c, v2sf d)
Comparison of four paired-single values +(c.cond.ps/cabs.cond.ps, +bc1any4t/bc1any4f). + +

These functions use c.cond.ps or cabs.cond.ps +to compare a with b and to compare c with d. +The any forms return true if any of the four results are true +and the all forms return true if all four results are true. +For example: + +

          v2sf a, b, c, d;
+          if (__builtin_mips_any_c_eq_4s (a, b, c, d))
+            some_are_true ();
+          else
+            all_are_false ();
+          
+          if (__builtin_mips_all_c_eq_4s (a, b, c, d))
+            all_are_true ();
+          else
+            some_are_false ();
+     
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MMIX-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MMIX-Options.html new file mode 100644 index 0000000..f103573 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MMIX-Options.html @@ -0,0 +1,103 @@ + + +MMIX Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: MIPS Options, +Up: Submodel Options +



+
+ +

3.17.22 MMIX Options

+ +

+These options are defined for the MMIX: + +

+
-mlibfuncs
-mno-libfuncs
Specify that intrinsic library functions are being compiled, passing all +values in registers, no matter the size. + +
-mepsilon
-mno-epsilon
Generate floating-point comparison instructions that compare with respect +to the rE epsilon register. + +
-mabi=mmixware
-mabi=gnu
Generate code that passes function parameters and return values that (in +the called function) are seen as registers $0 and up, as opposed to +the GNU ABI which uses global registers $231 and up. + +
-mzero-extend
-mno-zero-extend
When reading data from memory in sizes shorter than 64 bits, use (do not +use) zero-extending load instructions by default, rather than +sign-extending ones. + +
-mknuthdiv
-mno-knuthdiv
Make the result of a division yielding a remainder have the same sign as +the divisor. With the default, -mno-knuthdiv, the sign of the +remainder follows the sign of the dividend. Both methods are +arithmetically valid, the latter being almost exclusively used. + +
-mtoplevel-symbols
-mno-toplevel-symbols
Prepend (do not prepend) a : to all global symbols, so the assembly +code can be used with the PREFIX assembly directive. + +
-melf
Generate an executable in the ELF format, rather than the default +mmo format used by the mmix simulator. + +
-mbranch-predict
-mno-branch-predict
Use (do not use) the probable-branch instructions, when static branch +prediction indicates a probable branch. + +
-mbase-addresses
-mno-base-addresses
Generate (do not generate) code that uses base addresses. Using a +base address automatically generates a request (handled by the assembler +and the linker) for a constant to be set up in a global register. The +register is used for one or more base address requests within the range 0 +to 255 from the value held in the register. The generally leads to short +and fast code, but the number of different data items that can be +addressed is limited. This means that a program that uses lots of static +data may require -mno-base-addresses. + +
-msingle-exit
-mno-single-exit
Force (do not force) generated code to have a single exit point in each +function. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MN10300-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MN10300-Options.html new file mode 100644 index 0000000..0db79a1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MN10300-Options.html @@ -0,0 +1,88 @@ + + +MN10300 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: MMIX Options, +Up: Submodel Options +



+
+ +

3.17.23 MN10300 Options

+ +

+These -m options are defined for Matsushita MN10300 architectures: + +

+
-mmult-bug
Generate code to avoid bugs in the multiply instructions for the MN10300 +processors. This is the default. + +
-mno-mult-bug
Do not generate code to avoid bugs in the multiply instructions for the +MN10300 processors. + +
-mam33
Generate code which uses features specific to the AM33 processor. + +
-mno-am33
Do not generate code which uses features specific to the AM33 processor. This +is the default. + +
-mreturn-pointer-on-d0
When generating a function which returns a pointer, return the pointer +in both a0 and d0. Otherwise, the pointer is returned +only in a0, and attempts to call such functions without a prototype +would result in errors. Note that this option is on by default; use +-mno-return-pointer-on-d0 to disable it. + +
-mno-crt0
Do not link in the C run-time initialization object file. + +
-mrelax
Indicate to the linker that it should perform a relaxation optimization pass +to shorten branches, calls and absolute memory addresses. This option only +has an effect when used on the command line for the final link step. + +

This option makes symbolic debugging impossible. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MT-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MT-Options.html new file mode 100644 index 0000000..7e003ba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/MT-Options.html @@ -0,0 +1,82 @@ + + +MT Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: MN10300 Options, +Up: Submodel Options +



+
+ +

3.17.24 MT Options

+ +

+These -m options are defined for Morpho MT architectures: + +

+
-march=cpu-type
Generate code that will run on cpu-type, which is the name of a system +representing a certain processor type. Possible values for +cpu-type are ms1-64-001, ms1-16-002, +ms1-16-003 and ms2. + +

When this option is not used, the default is -march=ms1-16-002. + +

-mbacc
Use byte loads and stores when generating code. + +
-mno-bacc
Do not use byte loads and stores when generating code. + +
-msim
Use simulator runtime + +
-mno-crt0
Do not link in the C run-time initialization object file +crti.o. Other run-time initialization and termination files +such as startup.o and exit.o are still included on the +linker command line. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Machine-Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Machine-Constraints.html new file mode 100644 index 0000000..5338b87 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Machine-Constraints.html @@ -0,0 +1,1086 @@ + + +Machine Constraints - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Modifiers, +Up: Constraints +



+
+ +

5.38.4 Constraints for Particular Machines

+ +

+Whenever possible, you should use the general-purpose constraint letters +in asm arguments, since they will convey meaning more readily to +people reading your code. Failing that, use the constraint letters +that usually have very similar meanings across architectures. The most +commonly used constraints are m and r (for memory and +general-purpose registers respectively; see Simple Constraints), and +I, usually the letter indicating the most common +immediate-constant format. + +

Each architecture defines additional constraints. These constraints +are used by the compiler itself for instruction generation, as well as +for asm statements; therefore, some of the constraints are not +particularly useful for asm. Here is a summary of some of the +machine-dependent constraints available on some particular machines; +it includes both constraints that are useful for asm and +constraints that aren't. The compiler source file mentioned in the +table heading for each architecture is the definitive reference for +the meanings of that architecture's constraints. + +

+
ARM family—config/arm/arm.h
+
+
f
Floating-point register + +
w
VFP floating-point register + +
F
One of the floating-point constants 0.0, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0 +or 10.0 + +
G
Floating-point constant that would satisfy the constraint F if it +were negated + +
I
Integer that is valid as an immediate operand in a data processing +instruction. That is, an integer in the range 0 to 255 rotated by a +multiple of 2 + +
J
Integer in the range −4095 to 4095 + +
K
Integer that satisfies constraint I when inverted (ones complement) + +
L
Integer that satisfies constraint I when negated (twos complement) + +
M
Integer in the range 0 to 32 + +
Q
A memory reference where the exact address is in a single register +(`m' is preferable for asm statements) + +
R
An item in the constant pool + +
S
A symbol in the text segment of the current file + +
Uv
A memory reference suitable for VFP load/store insns (reg+constant offset) + +
Uy
A memory reference suitable for iWMMXt load/store instructions. + +
Uq
A memory reference suitable for the ARMv4 ldrsb instruction. +
+ +
AVR family—config/avr/constraints.md
+
+
l
Registers from r0 to r15 + +
a
Registers from r16 to r23 + +
d
Registers from r16 to r31 + +
w
Registers from r24 to r31. These registers can be used in adiw command + +
e
Pointer register (r26–r31) + +
b
Base pointer register (r28–r31) + +
q
Stack pointer register (SPH:SPL) + +
t
Temporary register r0 + +
x
Register pair X (r27:r26) + +
y
Register pair Y (r29:r28) + +
z
Register pair Z (r31:r30) + +
I
Constant greater than −1, less than 64 + +
J
Constant greater than −64, less than 1 + +
K
Constant integer 2 + +
L
Constant integer 0 + +
M
Constant that fits in 8 bits + +
N
Constant integer −1 + +
O
Constant integer 8, 16, or 24 + +
P
Constant integer 1 + +
G
A floating point constant 0.0 + +
R
Integer constant in the range -6 ... 5. + +
Q
A memory address based on Y or Z pointer with displacement. +
+ +
CRX Architecture—config/crx/crx.h
+
+
b
Registers from r0 to r14 (registers without stack pointer) + +
l
Register r16 (64-bit accumulator lo register) + +
h
Register r17 (64-bit accumulator hi register) + +
k
Register pair r16-r17. (64-bit accumulator lo-hi pair) + +
I
Constant that fits in 3 bits + +
J
Constant that fits in 4 bits + +
K
Constant that fits in 5 bits + +
L
Constant that is one of -1, 4, -4, 7, 8, 12, 16, 20, 32, 48 + +
G
Floating point constant that is legal for store immediate +
+ +
Hewlett-Packard PA-RISC—config/pa/pa.h
+
+
a
General register 1 + +
f
Floating point register + +
q
Shift amount register + +
x
Floating point register (deprecated) + +
y
Upper floating point register (32-bit), floating point register (64-bit) + +
Z
Any register + +
I
Signed 11-bit integer constant + +
J
Signed 14-bit integer constant + +
K
Integer constant that can be deposited with a zdepi instruction + +
L
Signed 5-bit integer constant + +
M
Integer constant 0 + +
N
Integer constant that can be loaded with a ldil instruction + +
O
Integer constant whose value plus one is a power of 2 + +
P
Integer constant that can be used for and operations in depi +and extru instructions + +
S
Integer constant 31 + +
U
Integer constant 63 + +
G
Floating-point constant 0.0 + +
A
A lo_sum data-linkage-table memory operand + +
Q
A memory operand that can be used as the destination operand of an +integer store instruction + +
R
A scaled or unscaled indexed memory operand + +
T
A memory operand for floating-point loads and stores + +
W
A register indirect memory operand +
+ +
PowerPC and IBM RS6000—config/rs6000/rs6000.h
+
+
b
Address base register + +
f
Floating point register + +
v
Vector register + +
h
MQ, CTR, or LINK register + +
q
MQ register + +
c
CTR register + +
l
LINK register + +
x
CR register (condition register) number 0 + +
y
CR register (condition register) + +
z
FPMEM stack memory for FPR-GPR transfers + +
I
Signed 16-bit constant + +
J
Unsigned 16-bit constant shifted left 16 bits (use L instead for +SImode constants) + +
K
Unsigned 16-bit constant + +
L
Signed 16-bit constant shifted left 16 bits + +
M
Constant larger than 31 + +
N
Exact power of 2 + +
O
Zero + +
P
Constant whose negation is a signed 16-bit constant + +
G
Floating point constant that can be loaded into a register with one +instruction per word + +
H
Integer/Floating point constant that can be loaded into a register using +three instructions + +
Q
Memory operand that is an offset from a register (m is preferable +for asm statements) + +
Z
Memory operand that is an indexed or indirect from a register (m is +preferable for asm statements) + +
R
AIX TOC entry + +
a
Address operand that is an indexed or indirect from a register (p is +preferable for asm statements) + +
S
Constant suitable as a 64-bit mask operand + +
T
Constant suitable as a 32-bit mask operand + +
U
System V Release 4 small data area reference + +
t
AND masks that can be performed by two rldic{l, r} instructions + +
W
Vector constant that does not require memory + +
+ +
MorphoTech family—config/mt/mt.h
+
+
I
Constant for an arithmetic insn (16-bit signed integer). + +
J
The constant 0. + +
K
Constant for a logical insn (16-bit zero-extended integer). + +
L
A constant that can be loaded with lui (i.e. the bottom 16 +bits are zero). + +
M
A constant that takes two words to load (i.e. not matched by +I, K, or L). + +
N
Negative 16-bit constants other than -65536. + +
O
A 15-bit signed integer constant. + +
P
A positive 16-bit constant. +
+ +
Intel 386—config/i386/constraints.md
+
+
R
Legacy register—the eight integer registers available on all +i386 processors (a, b, c, d, +si, di, bp, sp). + +
q
Any register accessible as rl. In 32-bit mode, a, +b, c, and d; in 64-bit mode, any integer register. + +
Q
Any register accessible as rh: a, b, +c, and d. + +
a
The a register. + +
b
The b register. + +
c
The c register. + +
d
The d register. + +
S
The si register. + +
D
The di register. + +
A
The a and d registers, as a pair (for instructions that +return half the result in one and half in the other). + +
f
Any 80387 floating-point (stack) register. + +
t
Top of 80387 floating-point stack (%st(0)). + +
u
Second from top of 80387 floating-point stack (%st(1)). + +
y
Any MMX register. + +
x
Any SSE register. + +
I
Integer constant in the range 0 ... 31, for 32-bit shifts. + +
J
Integer constant in the range 0 ... 63, for 64-bit shifts. + +
K
Signed 8-bit integer constant. + +
L
0xFF or 0xFFFF, for andsi as a zero-extending move. + +
M
0, 1, 2, or 3 (shifts for the lea instruction). + +
N
Unsigned 8-bit integer constant (for in and out +instructions). + +
G
Standard 80387 floating point constant. + +
C
Standard SSE floating point constant. + +
e
32-bit signed integer constant, or a symbolic reference known +to fit that range (for immediate operands in sign-extending x86-64 +instructions). + +
Z
32-bit unsigned integer constant, or a symbolic reference known +to fit that range (for immediate operands in zero-extending x86-64 +instructions). + +
+ +
Intel IA-64—config/ia64/ia64.h
+
+
a
General register r0 to r3 for addl instruction + +
b
Branch register + +
c
Predicate register (c as in “conditional”) + +
d
Application register residing in M-unit + +
e
Application register residing in I-unit + +
f
Floating-point register + +
m
Memory operand. +Remember that m allows postincrement and postdecrement which +require printing with %Pn on IA-64. +Use S to disallow postincrement and postdecrement. + +
G
Floating-point constant 0.0 or 1.0 + +
I
14-bit signed integer constant + +
J
22-bit signed integer constant + +
K
8-bit signed integer constant for logical instructions + +
L
8-bit adjusted signed integer constant for compare pseudo-ops + +
M
6-bit unsigned integer constant for shift counts + +
N
9-bit signed integer constant for load and store postincrements + +
O
The constant zero + +
P
0 or −1 for dep instruction + +
Q
Non-volatile memory for floating-point loads and stores + +
R
Integer constant in the range 1 to 4 for shladd instruction + +
S
Memory operand except postincrement and postdecrement +
+ +
FRV—config/frv/frv.h
+
+
a
Register in the class ACC_REGS (acc0 to acc7). + +
b
Register in the class EVEN_ACC_REGS (acc0 to acc7). + +
c
Register in the class CC_REGS (fcc0 to fcc3 and +icc0 to icc3). + +
d
Register in the class GPR_REGS (gr0 to gr63). + +
e
Register in the class EVEN_REGS (gr0 to gr63). +Odd registers are excluded not in the class but through the use of a machine +mode larger than 4 bytes. + +
f
Register in the class FPR_REGS (fr0 to fr63). + +
h
Register in the class FEVEN_REGS (fr0 to fr63). +Odd registers are excluded not in the class but through the use of a machine +mode larger than 4 bytes. + +
l
Register in the class LR_REG (the lr register). + +
q
Register in the class QUAD_REGS (gr2 to gr63). +Register numbers not divisible by 4 are excluded not in the class but through +the use of a machine mode larger than 8 bytes. + +
t
Register in the class ICC_REGS (icc0 to icc3). + +
u
Register in the class FCC_REGS (fcc0 to fcc3). + +
v
Register in the class ICR_REGS (cc4 to cc7). + +
w
Register in the class FCR_REGS (cc0 to cc3). + +
x
Register in the class QUAD_FPR_REGS (fr0 to fr63). +Register numbers not divisible by 4 are excluded not in the class but through +the use of a machine mode larger than 8 bytes. + +
z
Register in the class SPR_REGS (lcr and lr). + +
A
Register in the class QUAD_ACC_REGS (acc0 to acc7). + +
B
Register in the class ACCG_REGS (accg0 to accg7). + +
C
Register in the class CR_REGS (cc0 to cc7). + +
G
Floating point constant zero + +
I
6-bit signed integer constant + +
J
10-bit signed integer constant + +
L
16-bit signed integer constant + +
M
16-bit unsigned integer constant + +
N
12-bit signed integer constant that is negative—i.e. in the +range of −2048 to −1 + +
O
Constant zero + +
P
12-bit signed integer constant that is greater than zero—i.e. in the +range of 1 to 2047. + +
+ +
Blackfin family—config/bfin/bfin.h
+
+
a
P register + +
d
D register + +
z
A call clobbered P register. + +
qn
A single register. If n is in the range 0 to 7, the corresponding D +register. If it is A, then the register P0. + +
D
Even-numbered D register + +
W
Odd-numbered D register + +
e
Accumulator register. + +
A
Even-numbered accumulator register. + +
B
Odd-numbered accumulator register. + +
b
I register + +
v
B register + +
f
M register + +
c
Registers used for circular buffering, i.e. I, B, or L registers. + +
C
The CC register. + +
t
LT0 or LT1. + +
k
LC0 or LC1. + +
u
LB0 or LB1. + +
x
Any D, P, B, M, I or L register. + +
y
Additional registers typically used only in prologues and epilogues: RETS, +RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and USP. + +
w
Any register except accumulators or CC. + +
Ksh
Signed 16 bit integer (in the range -32768 to 32767) + +
Kuh
Unsigned 16 bit integer (in the range 0 to 65535) + +
Ks7
Signed 7 bit integer (in the range -64 to 63) + +
Ku7
Unsigned 7 bit integer (in the range 0 to 127) + +
Ku5
Unsigned 5 bit integer (in the range 0 to 31) + +
Ks4
Signed 4 bit integer (in the range -8 to 7) + +
Ks3
Signed 3 bit integer (in the range -3 to 4) + +
Ku3
Unsigned 3 bit integer (in the range 0 to 7) + +
Pn
Constant n, where n is a single-digit constant in the range 0 to 4. + +
PA
An integer equal to one of the MACFLAG_XXX constants that is suitable for +use with either accumulator. + +
PB
An integer equal to one of the MACFLAG_XXX constants that is suitable for +use only with accumulator A1. + +
M1
Constant 255. + +
M2
Constant 65535. + +
J
An integer constant with exactly a single bit set. + +
L
An integer constant with all bits set except exactly one. + +
H +
Q
Any SYMBOL_REF. +
+ +
M32C—config/m32c/m32c.c
+
+
Rsp
Rfb
Rsb
$sp, $fb, $sb. + +
Rcr
Any control register, when they're 16 bits wide (nothing if control +registers are 24 bits wide) + +
Rcl
Any control register, when they're 24 bits wide. + +
R0w
R1w
R2w
R3w
$r0, $r1, $r2, $r3. + +
R02
$r0 or $r2, or $r2r0 for 32 bit values. + +
R13
$r1 or $r3, or $r3r1 for 32 bit values. + +
Rdi
A register that can hold a 64 bit value. + +
Rhl
$r0 or $r1 (registers with addressable high/low bytes) + +
R23
$r2 or $r3 + +
Raa
Address registers + +
Raw
Address registers when they're 16 bits wide. + +
Ral
Address registers when they're 24 bits wide. + +
Rqi
Registers that can hold QI values. + +
Rad
Registers that can be used with displacements ($a0, $a1, $sb). + +
Rsi
Registers that can hold 32 bit values. + +
Rhi
Registers that can hold 16 bit values. + +
Rhc
Registers chat can hold 16 bit values, including all control +registers. + +
Rra
$r0 through R1, plus $a0 and $a1. + +
Rfl
The flags register. + +
Rmm
The memory-based pseudo-registers $mem0 through $mem15. + +
Rpi
Registers that can hold pointers (16 bit registers for r8c, m16c; 24 +bit registers for m32cm, m32c). + +
Rpa
Matches multiple registers in a PARALLEL to form a larger register. +Used to match function return values. + +
Is3
-8 ... 7 + +
IS1
-128 ... 127 + +
IS2
-32768 ... 32767 + +
IU2
0 ... 65535 + +
In4
-8 ... -1 or 1 ... 8 + +
In5
-16 ... -1 or 1 ... 16 + +
In6
-32 ... -1 or 1 ... 32 + +
IM2
-65536 ... -1 + +
Ilb
An 8 bit value with exactly one bit set. + +
Ilw
A 16 bit value with exactly one bit set. + +
Sd
The common src/dest memory addressing modes. + +
Sa
Memory addressed using $a0 or $a1. + +
Si
Memory addressed with immediate addresses. + +
Ss
Memory addressed using the stack pointer ($sp). + +
Sf
Memory addressed using the frame base register ($fb). + +
Ss
Memory addressed using the small base register ($sb). + +
S1
$r1h +
+ +
MIPS—config/mips/constraints.md
+
+
d
An address register. This is equivalent to r unless +generating MIPS16 code. + +
f
A floating-point register (if available). + +
h
The hi register. + +
l
The lo register. + +
x
The hi and lo registers. + +
c
A register suitable for use in an indirect jump. This will always be +$25 for -mabicalls. + +
v
Register $3. Do not use this constraint in new code; +it is retained only for compatibility with glibc. + +
y
Equivalent to r; retained for backwards compatibility. + +
z
A floating-point condition code register. + +
I
A signed 16-bit constant (for arithmetic instructions). + +
J
Integer zero. + +
K
An unsigned 16-bit constant (for logic instructions). + +
L
A signed 32-bit constant in which the lower 16 bits are zero. +Such constants can be loaded using lui. + +
M
A constant that cannot be loaded using lui, addiu +or ori. + +
N
A constant in the range -65535 to -1 (inclusive). + +
O
A signed 15-bit constant. + +
P
A constant in the range 1 to 65535 (inclusive). + +
G
Floating-point zero. + +
R
An address that can be used in a non-macro load or store. +
+ +
Motorola 680x0—config/m68k/constraints.md
+
+
a
Address register + +
d
Data register + +
f
68881 floating-point register, if available + +
I
Integer in the range 1 to 8 + +
J
16-bit signed number + +
K
Signed number whose magnitude is greater than 0x80 + +
L
Integer in the range −8 to −1 + +
M
Signed number whose magnitude is greater than 0x100 + +
N
Range 24 to 31, rotatert:SI 8 to 1 expressed as rotate + +
O
16 (for rotate using swap) + +
P
Range 8 to 15, rotatert:HI 8 to 1 expressed as rotate + +
R
Numbers that mov3q can handle + +
G
Floating point constant that is not a 68881 constant + +
S
Operands that satisfy 'm' when -mpcrel is in effect + +
T
Operands that satisfy 's' when -mpcrel is not in effect + +
Q
Address register indirect addressing mode + +
U
Register offset addressing + +
W
const_call_operand + +
Cs
symbol_ref or const + +
Ci
const_int + +
C0
const_int 0 + +
Cj
Range of signed numbers that don't fit in 16 bits + +
Cmvq
Integers valid for mvq + +
Capsw
Integers valid for a moveq followed by a swap + +
Cmvz
Integers valid for mvz + +
Cmvs
Integers valid for mvs + +
Ap
push_operand + +
Ac
Non-register operands allowed in clr + +
+ +
Motorola 68HC11 & 68HC12 families—config/m68hc11/m68hc11.h
+
+
a
Register `a' + +
b
Register `b' + +
d
Register `d' + +
q
An 8-bit register + +
t
Temporary soft register _.tmp + +
u
A soft register _.d1 to _.d31 + +
w
Stack pointer register + +
x
Register `x' + +
y
Register `y' + +
z
Pseudo register `z' (replaced by `x' or `y' at the end) + +
A
An address register: x, y or z + +
B
An address register: x or y + +
D
Register pair (x:d) to form a 32-bit value + +
L
Constants in the range −65536 to 65535 + +
M
Constants whose 16-bit low part is zero + +
N
Constant integer 1 or −1 + +
O
Constant integer 16 + +
P
Constants in the range −8 to 2 + +
+ +
SPARC—config/sparc/sparc.h
+
+
f
Floating-point register on the SPARC-V8 architecture and +lower floating-point register on the SPARC-V9 architecture. + +
e
Floating-point register. It is equivalent to f on the +SPARC-V8 architecture and contains both lower and upper +floating-point registers on the SPARC-V9 architecture. + +
c
Floating-point condition code register. + +
d
Lower floating-point register. It is only valid on the SPARC-V9 +architecture when the Visual Instruction Set is available. + +
b
Floating-point register. It is only valid on the SPARC-V9 architecture +when the Visual Instruction Set is available. + +
h
64-bit global or out register for the SPARC-V8+ architecture. + +
I
Signed 13-bit constant + +
J
Zero + +
K
32-bit constant with the low 12 bits clear (a constant that can be +loaded with the sethi instruction) + +
L
A constant in the range supported by movcc instructions + +
M
A constant in the range supported by movrcc instructions + +
N
Same as K, except that it verifies that bits that are not in the +lower 32-bit range are all zero. Must be used instead of K for +modes wider than SImode + +
O
The constant 4096 + +
G
Floating-point zero + +
H
Signed 13-bit constant, sign-extended to 32 or 64 bits + +
Q
Floating-point constant whose integral representation can +be moved into an integer register using a single sethi +instruction + +
R
Floating-point constant whose integral representation can +be moved into an integer register using a single mov +instruction + +
S
Floating-point constant whose integral representation can +be moved into an integer register using a high/lo_sum +instruction sequence + +
T
Memory address aligned to an 8-byte boundary + +
U
Even register + +
W
Memory address for e constraint registers + +
Y
Vector zero + +
+ +
SPU—config/spu/spu.h
+
+
a
An immediate which can be loaded with the il/ila/ilh/ilhu instructions. const_int is treated as a 64 bit value. + +
c
An immediate for and/xor/or instructions. const_int is treated as a 64 bit value. + +
d
An immediate for the iohl instruction. const_int is treated as a 64 bit value. + +
f
An immediate which can be loaded with fsmbi. + +
A
An immediate which can be loaded with the il/ila/ilh/ilhu instructions. const_int is treated as a 32 bit value. + +
B
An immediate for most arithmetic instructions. const_int is treated as a 32 bit value. + +
C
An immediate for and/xor/or instructions. const_int is treated as a 32 bit value. + +
D
An immediate for the iohl instruction. const_int is treated as a 32 bit value. + +
I
A constant in the range [-64, 63] for shift/rotate instructions. + +
J
An unsigned 7-bit constant for conversion/nop/channel instructions. + +
K
A signed 10-bit constant for most arithmetic instructions. + +
M
A signed 16 bit immediate for stop. + +
N
An unsigned 16-bit constant for iohl and fsmbi. + +
O
An unsigned 7-bit constant whose 3 least significant bits are 0. + +
P
An unsigned 3-bit constant for 16-byte rotates and shifts + +
R
Call operand, reg, for indirect calls + +
S
Call operand, symbol, for relative calls. + +
T
Call operand, const_int, for absolute calls. + +
U
An immediate which can be loaded with the il/ila/ilh/ilhu instructions. const_int is sign extended to 128 bit. + +
W
An immediate for shift and rotate instructions. const_int is treated as a 32 bit value. + +
Y
An immediate for and/xor/or instructions. const_int is sign extended as a 128 bit. + +
Z
An immediate for the iohl instruction. const_int is sign extended to 128 bit. + +
+ +
S/390 and zSeries—config/s390/s390.h
+
+
a
Address register (general purpose register except r0) + +
c
Condition code register + +
d
Data register (arbitrary general purpose register) + +
f
Floating-point register + +
I
Unsigned 8-bit constant (0–255) + +
J
Unsigned 12-bit constant (0–4095) + +
K
Signed 16-bit constant (−32768–32767) + +
L
Value appropriate as displacement. +
+
(0..4095)
for short displacement +
(-524288..524287)
for long displacement +
+ +
M
Constant integer with a value of 0x7fffffff. + +
N
Multiple letter constraint followed by 4 parameter letters. +
+
0..9:
number of the part counting from most to least significant +
H,Q:
mode of the part +
D,S,H:
mode of the containing operand +
0,F:
value of the other parts (F—all bits set) +
+ The constraint matches if the specified part of a constant +has a value different from its other parts. + +
Q
Memory reference without index register and with short displacement. + +
R
Memory reference with index register and short displacement. + +
S
Memory reference without index register but with long displacement. + +
T
Memory reference with index register and long displacement. + +
U
Pointer with short displacement. + +
W
Pointer with long displacement. + +
Y
Shift count operand. + +
+ +
Score family—config/score/score.h
+
+
d
Registers from r0 to r32. + +
e
Registers from r0 to r16. + +
t
r8—r11 or r22—r27 registers. + +
h
hi register. + +
l
lo register. + +
x
hi + lo register. + +
q
cnt register. + +
y
lcb register. + +
z
scb register. + +
a
cnt + lcb + scb register. + +
c
cr0—cr15 register. + +
b
cp1 registers. + +
f
cp2 registers. + +
i
cp3 registers. + +
j
cp1 + cp2 + cp3 registers. + +
I
High 16-bit constant (32-bit constant with 16 LSBs zero). + +
J
Unsigned 5 bit integer (in the range 0 to 31). + +
K
Unsigned 16 bit integer (in the range 0 to 65535). + +
L
Signed 16 bit integer (in the range −32768 to 32767). + +
M
Unsigned 14 bit integer (in the range 0 to 16383). + +
N
Signed 14 bit integer (in the range −8192 to 8191). + +
Z
Any SYMBOL_REF. +
+ +
Xstormy16—config/stormy16/stormy16.h
+
+
a
Register r0. + +
b
Register r1. + +
c
Register r2. + +
d
Register r8. + +
e
Registers r0 through r7. + +
t
Registers r0 and r1. + +
y
The carry register. + +
z
Registers r8 and r9. + +
I
A constant between 0 and 3 inclusive. + +
J
A constant that has exactly one bit set. + +
K
A constant that has exactly one bit clear. + +
L
A constant between 0 and 255 inclusive. + +
M
A constant between −255 and 0 inclusive. + +
N
A constant between −3 and 0 inclusive. + +
O
A constant between 1 and 4 inclusive. + +
P
A constant between −4 and −1 inclusive. + +
Q
A memory reference that is a stack push. + +
R
A memory reference that is a stack pop. + +
S
A memory reference that refers to a constant address of known value. + +
T
The register indicated by Rx (not implemented yet). + +
U
A constant that is not between 2 and 15 inclusive. + +
Z
The constant 0. + +
+ +
Xtensa—config/xtensa/constraints.md
+
+
a
General-purpose 32-bit register + +
b
One-bit boolean register + +
A
MAC16 40-bit accumulator register + +
I
Signed 12-bit integer constant, for use in MOVI instructions + +
J
Signed 8-bit integer constant, for use in ADDI instructions + +
K
Integer constant valid for BccI instructions + +
L
Unsigned constant valid for BccUI instructions + +
+ +
+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Mixed-Declarations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Mixed-Declarations.html new file mode 100644 index 0000000..cd0042a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Mixed-Declarations.html @@ -0,0 +1,71 @@ + + +Mixed Declarations - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Case Ranges, +Up: C Extensions +



+
+ +

5.26 Mixed Declarations and Code

+ +

+ISO C99 and ISO C++ allow declarations and code to be freely mixed +within compound statements. As an extension, GCC also allows this in +C89 mode. For example, you could do: + +

     int i;
+     /* ... */
+     i++;
+     int j = i + 2;
+
+

Each identifier is visible from where it is declared until the end of +the enclosing block. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Modifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Modifiers.html new file mode 100644 index 0000000..fc0074c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Modifiers.html @@ -0,0 +1,119 @@ + + +Modifiers - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Multi-Alternative, +Up: Constraints +



+
+ +

5.38.3 Constraint Modifier Characters

+ +

+ +Here are constraint modifier characters. + + + +

=
Means that this operand is write-only for this instruction: the previous +value is discarded and replaced by output data. + +


+
Means that this operand is both read and written by the instruction. + +

When the compiler fixes up the operands to satisfy the constraints, +it needs to know which operands are inputs to the instruction and +which are outputs from it. = identifies an output; + +identifies an operand that is both input and output; all other operands +are assumed to be input only. + +

If you specify = or + in a constraint, you put it in the +first character of the constraint string. + +


&
Means (in a particular alternative) that this operand is an +earlyclobber operand, which is modified before the instruction is +finished using the input operands. Therefore, this operand may not lie +in a register that is used as an input operand or as part of any memory +address. + +

& applies only to the alternative in which it is written. In +constraints with multiple alternatives, sometimes one alternative +requires & while others do not. See, for example, the +movdf insn of the 68000. + +

An input operand can be tied to an earlyclobber operand if its only +use as an input occurs before the early result is written. Adding +alternatives of this form often allows GCC to produce better code +when only some of the inputs can be affected by the earlyclobber. +See, for example, the mulsi3 insn of the ARM. + +

& does not obviate the need to write =. + +


%
Declares the instruction to be commutative for this operand and the +following operand. This means that the compiler may interchange the +two operands if that is the cheapest way to make all operands fit the +constraints. +GCC can only handle one commutative pair in an asm; if you use more, +the compiler may fail. Note that you need not use the modifier if +the two alternatives are strictly identical; this would only waste +time in the reload pass. The modifier is not operational after +register allocation, so the result of define_peephole2 +and define_splits performed after reload cannot rely on +% to make the intended insn match. + +


#
Says that all following characters, up to the next comma, are to be +ignored as a constraint. They are significant only for choosing +register preferences. + +


*
Says that the following character should be ignored when choosing +register preferences. * has no effect on the meaning of the +constraint as a constraint, and no effect on reloading. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Multi_002dAlternative.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Multi_002dAlternative.html new file mode 100644 index 0000000..e6b8488 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Multi_002dAlternative.html @@ -0,0 +1,92 @@ + + +Multi-Alternative - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Simple Constraints, +Up: Constraints +



+
+ +

5.38.2 Multiple Alternative Constraints

+ +

+Sometimes a single instruction has multiple alternative sets of possible +operands. For example, on the 68000, a logical-or instruction can combine +register or an immediate value into memory, or it can combine any kind of +operand into a register; but it cannot combine one memory location into +another. + +

These constraints are represented as multiple alternatives. An alternative +can be described by a series of letters for each operand. The overall +constraint for an operand is made from the letters for this operand +from the first alternative, a comma, the letters for this operand from +the second alternative, a comma, and so on until the last alternative. + + +

If all the operands fit any one alternative, the instruction is valid. +Otherwise, for each alternative, the compiler counts how many instructions +must be added to copy the operands so that that alternative applies. +The alternative requiring the least copying is chosen. If two alternatives +need the same amount of copying, the one that comes first is chosen. +These choices can be altered with the ? and ! characters: + + + + +

?
Disparage slightly the alternative that the ? appears in, +as a choice when no alternative applies exactly. The compiler regards +this alternative as one unit more costly for each ? that appears +in it. + +


!
Disparage severely the alternative that the ! appears in. +This alternative can still be used if it fits without reloading, +but if reloading is needed, some other alternative will be used. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Name-lookup.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Name-lookup.html new file mode 100644 index 0000000..173cc93 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Name-lookup.html @@ -0,0 +1,172 @@ + + +Name lookup - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Static Definitions, +Up: C++ Misunderstandings +



+
+ +

10.8.2 Name lookup, templates, and accessing members of base classes

+ +

+The C++ standard prescribes that all names that are not dependent on +template parameters are bound to their present definitions when parsing +a template function or class.1 Only names that are dependent are looked up at the point +of instantiation. For example, consider + +

       void foo(double);
+     
+       struct A {
+         template <typename T>
+         void f () {
+           foo (1);        // 1
+           int i = N;      // 2
+           T t;
+           t.bar();        // 3
+           foo (t);        // 4
+         }
+     
+         static const int N;
+       };
+
+

Here, the names foo and N appear in a context that does +not depend on the type of T. The compiler will thus require that +they are defined in the context of use in the template, not only before +the point of instantiation, and will here use ::foo(double) and +A::N, respectively. In particular, it will convert the integer +value to a double when passing it to ::foo(double). + +

Conversely, bar and the call to foo in the fourth marked +line are used in contexts that do depend on the type of T, so +they are only looked up at the point of instantiation, and you can +provide declarations for them after declaring the template, but before +instantiating it. In particular, if you instantiate A::f<int>, +the last line will call an overloaded ::foo(int) if one was +provided, even if after the declaration of struct A. + +

This distinction between lookup of dependent and non-dependent names is +called two-stage (or dependent) name lookup. G++ implements it +since version 3.4. + +

Two-stage name lookup sometimes leads to situations with behavior +different from non-template codes. The most common is probably this: + +

       template <typename T> struct Base {
+         int i;
+       };
+     
+       template <typename T> struct Derived : public Base<T> {
+         int get_i() { return i; }
+       };
+
+

In get_i(), i is not used in a dependent context, so the +compiler will look for a name declared at the enclosing namespace scope +(which is the global scope here). It will not look into the base class, +since that is dependent and you may declare specializations of +Base even after declaring Derived, so the compiler can't +really know what i would refer to. If there is no global +variable i, then you will get an error message. + +

In order to make it clear that you want the member of the base class, +you need to defer lookup until instantiation time, at which the base +class is known. For this, you need to access i in a dependent +context, by either using this->i (remember that this is of +type Derived<T>*, so is obviously dependent), or using +Base<T>::i. Alternatively, Base<T>::i might be brought +into scope by a using-declaration. + +

Another, similar example involves calling member functions of a base +class: + +

       template <typename T> struct Base {
+           int f();
+       };
+     
+       template <typename T> struct Derived : Base<T> {
+           int g() { return f(); };
+       };
+
+

Again, the call to f() is not dependent on template arguments +(there are no arguments that depend on the type T, and it is also +not otherwise specified that the call should be in a dependent context). +Thus a global declaration of such a function must be available, since +the one in the base class is not visible until instantiation time. The +compiler will consequently produce the following error message: + +

       x.cc: In member function `int Derived<T>::g()':
+       x.cc:6: error: there are no arguments to `f' that depend on a template
+          parameter, so a declaration of `f' must be available
+       x.cc:6: error: (if you use `-fpermissive', G++ will accept your code, but
+          allowing the use of an undeclared name is deprecated)
+
+

To make the code valid either use this->f(), or +Base<T>::f(). Using the -fpermissive flag will also let +the compiler accept the code, by marking all function calls for which no +declaration is visible at the time of definition of the template for +later lookup at instantiation time, as if it were a dependent call. +We do not recommend using -fpermissive to work around invalid +code, and it will also only catch cases where functions in base classes +are called, not where variables in base classes are used (as in the +example above). + +

Note that some compilers (including G++ versions prior to 3.4) get these +examples wrong and accept above code without an error. Those compilers +do not implement two-stage name lookup correctly. + +

+
+

Footnotes

[1] The C++ standard just uses the +term “dependent” for names that depend on the type or value of +template parameters. This shorter term will also be used in the rest of +this section.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Namespace-Association.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Namespace-Association.html new file mode 100644 index 0000000..4a0051a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Namespace-Association.html @@ -0,0 +1,97 @@ + + +Namespace Association - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: C++ Attributes, +Up: C++ Extensions +



+
+ +

6.8 Namespace Association

+ +

Caution: The semantics of this extension are not fully +defined. Users should refrain from using this extension as its +semantics may change subtly over time. It is possible that this +extension will be removed in future versions of G++. + +

A using-directive with __attribute ((strong)) is stronger +than a normal using-directive in two ways: + +

    +
  • Templates from the used namespace can be specialized and explicitly +instantiated as though they were members of the using namespace. + +
  • The using namespace is considered an associated namespace of all +templates in the used namespace for purposes of argument-dependent +name lookup. +
+ +

The used namespace must be nested within the using namespace so that +normal unqualified lookup works properly. + +

This is useful for composing a namespace transparently from +implementation namespaces. For example: + +

     namespace std {
+       namespace debug {
+         template <class T> struct A { };
+       }
+       using namespace debug __attribute ((__strong__));
+       template <> struct A<int> { };   // ok to specialize
+     
+       template <class T> void f (A<T>);
+     }
+     
+     int main()
+     {
+       f (std::A<float>());             // lookup finds std::f
+       f (std::A<int>());
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Nested-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Nested-Functions.html new file mode 100644 index 0000000..d14f692 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Nested-Functions.html @@ -0,0 +1,167 @@ + + +Nested Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Labels as Values, +Up: C Extensions +



+
+ +

5.4 Nested Functions

+ +

+A nested function is a function defined inside another function. +(Nested functions are not supported for GNU C++.) The nested function's +name is local to the block where it is defined. For example, here we +define a nested function named square, and call it twice: + +

     foo (double a, double b)
+     {
+       double square (double z) { return z * z; }
+     
+       return square (a) + square (b);
+     }
+
+

The nested function can access all the variables of the containing +function that are visible at the point of its definition. This is +called lexical scoping. For example, here we show a nested +function which uses an inherited variable named offset: + +

     bar (int *array, int offset, int size)
+     {
+       int access (int *array, int index)
+         { return array[index + offset]; }
+       int i;
+       /* ... */
+       for (i = 0; i < size; i++)
+         /* ... */ access (array, i) /* ... */
+     }
+
+

Nested function definitions are permitted within functions in the places +where variable definitions are allowed; that is, in any block, mixed +with the other declarations and statements in the block. + +

It is possible to call the nested function from outside the scope of its +name by storing its address or passing the address to another function: + +

     hack (int *array, int size)
+     {
+       void store (int index, int value)
+         { array[index] = value; }
+     
+       intermediate (store, size);
+     }
+
+

Here, the function intermediate receives the address of +store as an argument. If intermediate calls store, +the arguments given to store are used to store into array. +But this technique works only so long as the containing function +(hack, in this example) does not exit. + +

If you try to call the nested function through its address after the +containing function has exited, all hell will break loose. If you try +to call it after a containing scope level has exited, and if it refers +to some of the variables that are no longer in scope, you may be lucky, +but it's not wise to take the risk. If, however, the nested function +does not refer to anything that has gone out of scope, you should be +safe. + +

GCC implements taking the address of a nested function using a technique +called trampolines. A paper describing them is available as + +

http://people.debian.org/~aaronl/Usenix88-lexic.pdf. + +

A nested function can jump to a label inherited from a containing +function, provided the label was explicitly declared in the containing +function (see Local Labels). Such a jump returns instantly to the +containing function, exiting the nested function which did the +goto and any intermediate functions as well. Here is an example: + +

     bar (int *array, int offset, int size)
+     {
+       __label__ failure;
+       int access (int *array, int index)
+         {
+           if (index > size)
+             goto failure;
+           return array[index + offset];
+         }
+       int i;
+       /* ... */
+       for (i = 0; i < size; i++)
+         /* ... */ access (array, i) /* ... */
+       /* ... */
+       return 0;
+     
+      /* Control comes here from access
+         if it detects an error.  */
+      failure:
+       return -1;
+     }
+
+

A nested function always has no linkage. Declaring one with +extern or static is erroneous. If you need to declare the nested function +before its definition, use auto (which is otherwise meaningless +for function declarations). + +

     bar (int *array, int offset, int size)
+     {
+       __label__ failure;
+       auto int access (int *, int);
+       /* ... */
+       int access (int *array, int index)
+         {
+           if (index > size)
+             goto failure;
+           return array[index + offset];
+         }
+       /* ... */
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Non_002dbugs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Non_002dbugs.html new file mode 100644 index 0000000..6f12666 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Non_002dbugs.html @@ -0,0 +1,272 @@ + + +Non-bugs - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Protoize Caveats, +Up: Trouble +



+
+ +

10.10 Certain Changes We Don't Want to Make

+ +

This section lists changes that people frequently request, but which +we do not make because we think GCC is better without them. + +

    +
  • Checking the number and type of arguments to a function which has an +old-fashioned definition and no prototype. + +

    Such a feature would work only occasionally—only for calls that appear +in the same file as the called function, following the definition. The +only way to check all calls reliably is to add a prototype for the +function. But adding a prototype eliminates the motivation for this +feature. So the feature is not worthwhile. + +

  • Warning about using an expression whose type is signed as a shift count. + +

    Shift count operands are probably signed more often than unsigned. +Warning about this would cause far more annoyance than good. + +

  • Warning about assigning a signed value to an unsigned variable. + +

    Such assignments must be very common; warning about them would cause +more annoyance than good. + +

  • Warning when a non-void function value is ignored. + +

    C contains many standard functions that return a value that most +programs choose to ignore. One obvious example is printf. +Warning about this practice only leads the defensive programmer to +clutter programs with dozens of casts to void. Such casts are +required so frequently that they become visual noise. Writing those +casts becomes so automatic that they no longer convey useful +information about the intentions of the programmer. For functions +where the return value should never be ignored, use the +warn_unused_result function attribute (see Function Attributes). + +

  • Making -fshort-enums the default. + +

    This would cause storage layout to be incompatible with most other C +compilers. And it doesn't seem very important, given that you can get +the same result in other ways. The case where it matters most is when +the enumeration-valued object is inside a structure, and in that case +you can specify a field width explicitly. + +

  • Making bit-fields unsigned by default on particular machines where “the +ABI standard” says to do so. + +

    The ISO C standard leaves it up to the implementation whether a bit-field +declared plain int is signed or not. This in effect creates two +alternative dialects of C. + +

    The GNU C compiler supports both dialects; you can specify the signed +dialect with -fsigned-bitfields and the unsigned dialect with +-funsigned-bitfields. However, this leaves open the question of +which dialect to use by default. + +

    Currently, the preferred dialect makes plain bit-fields signed, because +this is simplest. Since int is the same as signed int in +every other context, it is cleanest for them to be the same in bit-fields +as well. + +

    Some computer manufacturers have published Application Binary Interface +standards which specify that plain bit-fields should be unsigned. It is +a mistake, however, to say anything about this issue in an ABI. This is +because the handling of plain bit-fields distinguishes two dialects of C. +Both dialects are meaningful on every type of machine. Whether a +particular object file was compiled using signed bit-fields or unsigned +is of no concern to other object files, even if they access the same +bit-fields in the same data structures. + +

    A given program is written in one or the other of these two dialects. +The program stands a chance to work on most any machine if it is +compiled with the proper dialect. It is unlikely to work at all if +compiled with the wrong dialect. + +

    Many users appreciate the GNU C compiler because it provides an +environment that is uniform across machines. These users would be +inconvenienced if the compiler treated plain bit-fields differently on +certain machines. + +

    Occasionally users write programs intended only for a particular machine +type. On these occasions, the users would benefit if the GNU C compiler +were to support by default the same dialect as the other compilers on +that machine. But such applications are rare. And users writing a +program to run on more than one type of machine cannot possibly benefit +from this kind of compatibility. + +

    This is why GCC does and will treat plain bit-fields in the same +fashion on all types of machines (by default). + +

    There are some arguments for making bit-fields unsigned by default on all +machines. If, for example, this becomes a universal de facto standard, +it would make sense for GCC to go along with it. This is something +to be considered in the future. + +

    (Of course, users strongly concerned about portability should indicate +explicitly in each bit-field whether it is signed or not. In this way, +they write programs which have the same meaning in both C dialects.) + +

  • Undefining __STDC__ when -ansi is not used. + +

    Currently, GCC defines __STDC__ unconditionally. This provides +good results in practice. + +

    Programmers normally use conditionals on __STDC__ to ask whether +it is safe to use certain features of ISO C, such as function +prototypes or ISO token concatenation. Since plain gcc supports +all the features of ISO C, the correct answer to these questions is +“yes”. + +

    Some users try to use __STDC__ to check for the availability of +certain library facilities. This is actually incorrect usage in an ISO +C program, because the ISO C standard says that a conforming +freestanding implementation should define __STDC__ even though it +does not have the library facilities. gcc -ansi -pedantic is a +conforming freestanding implementation, and it is therefore required to +define __STDC__, even though it does not come with an ISO C +library. + +

    Sometimes people say that defining __STDC__ in a compiler that +does not completely conform to the ISO C standard somehow violates the +standard. This is illogical. The standard is a standard for compilers +that claim to support ISO C, such as gcc -ansi—not for other +compilers such as plain gcc. Whatever the ISO C standard says +is relevant to the design of plain gcc without -ansi only +for pragmatic reasons, not as a requirement. + +

    GCC normally defines __STDC__ to be 1, and in addition +defines __STRICT_ANSI__ if you specify the -ansi option, +or a -std option for strict conformance to some version of ISO C. +On some hosts, system include files use a different convention, where +__STDC__ is normally 0, but is 1 if the user specifies strict +conformance to the C Standard. GCC follows the host convention when +processing system include files, but when processing user files it follows +the usual GNU C convention. + +

  • Undefining __STDC__ in C++. + +

    Programs written to compile with C++-to-C translators get the +value of __STDC__ that goes with the C compiler that is +subsequently used. These programs must test __STDC__ +to determine what kind of C preprocessor that compiler uses: +whether they should concatenate tokens in the ISO C fashion +or in the traditional fashion. + +

    These programs work properly with GNU C++ if __STDC__ is defined. +They would not work otherwise. + +

    In addition, many header files are written to provide prototypes in ISO +C but not in traditional C. Many of these header files can work without +change in C++ provided __STDC__ is defined. If __STDC__ +is not defined, they will all fail, and will all need to be changed to +test explicitly for C++ as well. + +

  • Deleting “empty” loops. + +

    Historically, GCC has not deleted “empty” loops under the +assumption that the most likely reason you would put one in a program is +to have a delay, so deleting them will not make real programs run any +faster. + +

    However, the rationale here is that optimization of a nonempty loop +cannot produce an empty one. This held for carefully written C compiled +with less powerful optimizers but is not always the case for carefully +written C++ or with more powerful optimizers. +Thus GCC will remove operations from loops whenever it can determine +those operations are not externally visible (apart from the time taken +to execute them, of course). In case the loop can be proved to be finite, +GCC will also remove the loop itself. + +

    Be aware of this when performing timing tests, for instance the +following loop can be completely removed, provided +some_expression can provably not change any global state. + +

              {
    +             int sum = 0;
    +             int ix;
    +          
    +             for (ix = 0; ix != 10000; ix++)
    +                sum += some_expression;
    +          }
    +     
    +

    Even though sum is accumulated in the loop, no use is made of +that summation, so the accumulation can be removed. + +

  • Making side effects happen in the same order as in some other compiler. + +

    It is never safe to depend on the order of evaluation of side effects. +For example, a function call like this may very well behave differently +from one compiler to another: + +

              void func (int, int);
    +          
    +          int i = 2;
    +          func (i++, i++);
    +     
    +

    There is no guarantee (in either the C or the C++ standard language +definitions) that the increments will be evaluated in any particular +order. Either increment might happen first. func might get the +arguments 2, 3, or it might get 3, 2, or even 2, 2. + +

  • Making certain warnings into errors by default. + +

    Some ISO C testsuites report failure when the compiler does not produce +an error message for a certain program. + +

    ISO C requires a “diagnostic” message for certain kinds of invalid +programs, but a warning is defined by GCC to count as a diagnostic. If +GCC produces a warning but not an error, that is correct ISO C support. +If testsuites call this “failure”, they should be run with the GCC +option -pedantic-errors, which will turn these warnings into +errors. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Object-Size-Checking.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Object-Size-Checking.html new file mode 100644 index 0000000..8b41779 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Object-Size-Checking.html @@ -0,0 +1,167 @@ + + +Object Size Checking - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Atomic Builtins, +Up: C Extensions +



+
+ +

5.48 Object Size Checking Builtins

+ +

+GCC implements a limited buffer overflow protection mechanism +that can prevent some buffer overflow attacks. + +

+— Built-in Function: size_t __builtin_object_size (void * ptr, int type)
+

is a built-in construct that returns a constant number of bytes from +ptr to the end of the object ptr pointer points to +(if known at compile time). __builtin_object_size never evaluates +its arguments for side-effects. If there are any side-effects in them, it +returns (size_t) -1 for type 0 or 1 and (size_t) 0 +for type 2 or 3. If there are multiple objects ptr can +point to and all of them are known at compile time, the returned number +is the maximum of remaining byte counts in those objects if type & 2 is +0 and minimum if nonzero. If it is not possible to determine which objects +ptr points to at compile time, __builtin_object_size should +return (size_t) -1 for type 0 or 1 and (size_t) 0 +for type 2 or 3. + +

type is an integer constant from 0 to 3. If the least significant +bit is clear, objects are whole variables, if it is set, a closest +surrounding subobject is considered the object a pointer points to. +The second bit determines if maximum or minimum of remaining bytes +is computed. + +

          struct V { char buf1[10]; int b; char buf2[10]; } var;
+          char *p = &var.buf1[1], *q = &var.b;
+          
+          /* Here the object p points to is var.  */
+          assert (__builtin_object_size (p, 0) == sizeof (var) - 1);
+          /* The subobject p points to is var.buf1.  */
+          assert (__builtin_object_size (p, 1) == sizeof (var.buf1) - 1);
+          /* The object q points to is var.  */
+          assert (__builtin_object_size (q, 0)
+          	== (char *) (&var + 1) - (char *) &var.b);
+          /* The subobject q points to is var.b.  */
+          assert (__builtin_object_size (q, 1) == sizeof (var.b));
+     
+
+ +

There are built-in functions added for many common string operation +functions, e.g., for memcpy __builtin___memcpy_chk +built-in is provided. This built-in has an additional last argument, +which is the number of bytes remaining in object the dest +argument points to or (size_t) -1 if the size is not known. + +

The built-in functions are optimized into the normal string functions +like memcpy if the last argument is (size_t) -1 or if +it is known at compile time that the destination object will not +be overflown. If the compiler can determine at compile time the +object will be always overflown, it issues a warning. + +

The intended use can be e.g. + +

     #undef memcpy
+     #define bos0(dest) __builtin_object_size (dest, 0)
+     #define memcpy(dest, src, n) \
+       __builtin___memcpy_chk (dest, src, n, bos0 (dest))
+     
+     char *volatile p;
+     char buf[10];
+     /* It is unknown what object p points to, so this is optimized
+        into plain memcpy - no checking is possible.  */
+     memcpy (p, "abcde", n);
+     /* Destination is known and length too.  It is known at compile
+        time there will be no overflow.  */
+     memcpy (&buf[5], "abcde", 5);
+     /* Destination is known, but the length is not known at compile time.
+        This will result in __memcpy_chk call that can check for overflow
+        at runtime.  */
+     memcpy (&buf[5], "abcde", n);
+     /* Destination is known and it is known at compile time there will
+        be overflow.  There will be a warning and __memcpy_chk call that
+        will abort the program at runtime.  */
+     memcpy (&buf[6], "abcde", 5);
+
+

Such built-in functions are provided for memcpy, mempcpy, +memmove, memset, strcpy, stpcpy, strncpy, +strcat and strncat. + +

There are also checking built-in functions for formatted output functions. +

     int __builtin___sprintf_chk (char *s, int flag, size_t os, const char *fmt, ...);
+     int __builtin___snprintf_chk (char *s, size_t maxlen, int flag, size_t os,
+     			      const char *fmt, ...);
+     int __builtin___vsprintf_chk (char *s, int flag, size_t os, const char *fmt,
+     			      va_list ap);
+     int __builtin___vsnprintf_chk (char *s, size_t maxlen, int flag, size_t os,
+     			       const char *fmt, va_list ap);
+
+

The added flag argument is passed unchanged to __sprintf_chk +etc. functions and can contain implementation specific flags on what +additional security measures the checking function might take, such as +handling %n differently. + +

The os argument is the object size s points to, like in the +other built-in functions. There is a small difference in the behavior +though, if os is (size_t) -1, the built-in functions are +optimized into the non-checking functions only if flag is 0, otherwise +the checking function is called with os argument set to +(size_t) -1. + +

In addition to this, there are checking built-in functions +__builtin___printf_chk, __builtin___vprintf_chk, +__builtin___fprintf_chk and __builtin___vfprintf_chk. +These have just one additional argument, flag, right before +format string fmt. If the compiler is able to optimize them to +fputc etc. functions, it will, otherwise the checking function +should be called and the flag argument passed to it. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html new file mode 100644 index 0000000..0b2a80a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Objective_002dC-and-Objective_002dC_002b_002b-Dialect-Options.html @@ -0,0 +1,280 @@ + + +Objective-C and Objective-C++ Dialect Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

3.6 Options Controlling Objective-C and Objective-C++ Dialects

+ +

(NOTE: This manual does not describe the Objective-C and Objective-C++ +languages themselves. See See Language Standards Supported by GCC, for references.) + +

This section describes the command-line options that are only meaningful +for Objective-C and Objective-C++ programs, but you can also use most of +the language-independent GNU compiler options. +For example, you might compile a file some_class.m like this: + +

     gcc -g -fgnu-runtime -O -c some_class.m
+
+

In this example, -fgnu-runtime is an option meant only for +Objective-C and Objective-C++ programs; you can use the other options with +any language supported by GCC. + +

Note that since Objective-C is an extension of the C language, Objective-C +compilations may also use options specific to the C front-end (e.g., +-Wtraditional). Similarly, Objective-C++ compilations may use +C++-specific options (e.g., -Wabi). + +

Here is a list of options that are only for compiling Objective-C +and Objective-C++ programs: + +

+
-fconstant-string-class=class-name
Use class-name as the name of the class to instantiate for each +literal string specified with the syntax @"...". The default +class name is NXConstantString if the GNU runtime is being used, and +NSConstantString if the NeXT runtime is being used (see below). The +-fconstant-cfstrings option, if also present, will override the +-fconstant-string-class setting and cause @"..." literals +to be laid out as constant CoreFoundation strings. + +
-fgnu-runtime
Generate object code compatible with the standard GNU Objective-C +runtime. This is the default for most types of systems. + +
-fnext-runtime
Generate output compatible with the NeXT runtime. This is the default +for NeXT-based systems, including Darwin and Mac OS X. The macro +__NEXT_RUNTIME__ is predefined if (and only if) this option is +used. + +
-fno-nil-receivers
Assume that all Objective-C message dispatches (e.g., +[receiver message:arg]) in this translation unit ensure that the receiver +is not nil. This allows for more efficient entry points in the runtime +to be used. Currently, this option is only available in conjunction with +the NeXT runtime on Mac OS X 10.3 and later. + +
-fobjc-call-cxx-cdtors
For each Objective-C class, check if any of its instance variables is a +C++ object with a non-trivial default constructor. If so, synthesize a +special - (id) .cxx_construct instance method that will run +non-trivial default constructors on any such instance variables, in order, +and then return self. Similarly, check if any instance variable +is a C++ object with a non-trivial destructor, and if so, synthesize a +special - (void) .cxx_destruct method that will run +all such default destructors, in reverse order. + +

The - (id) .cxx_construct and/or - (void) .cxx_destruct methods +thusly generated will only operate on instance variables declared in the +current Objective-C class, and not those inherited from superclasses. It +is the responsibility of the Objective-C runtime to invoke all such methods +in an object's inheritance hierarchy. The - (id) .cxx_construct methods +will be invoked by the runtime immediately after a new object +instance is allocated; the - (void) .cxx_destruct methods will +be invoked immediately before the runtime deallocates an object instance. + +

As of this writing, only the NeXT runtime on Mac OS X 10.4 and later has +support for invoking the - (id) .cxx_construct and +- (void) .cxx_destruct methods. + +

-fobjc-direct-dispatch
Allow fast jumps to the message dispatcher. On Darwin this is +accomplished via the comm page. + +
-fobjc-exceptions
Enable syntactic support for structured exception handling in Objective-C, +similar to what is offered by C++ and Java. This option is +unavailable in conjunction with the NeXT runtime on Mac OS X 10.2 and +earlier. + +
            @try {
+              ...
+                 @throw expr;
+              ...
+            }
+            @catch (AnObjCClass *exc) {
+              ...
+                @throw expr;
+              ...
+                @throw;
+              ...
+            }
+            @catch (AnotherClass *exc) {
+              ...
+            }
+            @catch (id allOthers) {
+              ...
+            }
+            @finally {
+              ...
+                @throw expr;
+              ...
+            }
+     
+

The @throw statement may appear anywhere in an Objective-C or +Objective-C++ program; when used inside of a @catch block, the +@throw may appear without an argument (as shown above), in which case +the object caught by the @catch will be rethrown. + +

Note that only (pointers to) Objective-C objects may be thrown and +caught using this scheme. When an object is thrown, it will be caught +by the nearest @catch clause capable of handling objects of that type, +analogously to how catch blocks work in C++ and Java. A +@catch(id ...) clause (as shown above) may also be provided to catch +any and all Objective-C exceptions not caught by previous @catch +clauses (if any). + +

The @finally clause, if present, will be executed upon exit from the +immediately preceding @try ... @catch section. This will happen +regardless of whether any exceptions are thrown, caught or rethrown +inside the @try ... @catch section, analogously to the behavior +of the finally clause in Java. + +

There are several caveats to using the new exception mechanism: + +

    +
  • Although currently designed to be binary compatible with NS_HANDLER-style +idioms provided by the NSException class, the new +exceptions can only be used on Mac OS X 10.3 (Panther) and later +systems, due to additional functionality needed in the (NeXT) Objective-C +runtime. + +
  • As mentioned above, the new exceptions do not support handling +types other than Objective-C objects. Furthermore, when used from +Objective-C++, the Objective-C exception model does not interoperate with C++ +exceptions at this time. This means you cannot @throw an exception +from Objective-C and catch it in C++, or vice versa +(i.e., throw ... @catch). +
+ +

The -fobjc-exceptions switch also enables the use of synchronization +blocks for thread-safe execution: + +

            @synchronized (ObjCClass *guard) {
+              ...
+            }
+     
+

Upon entering the @synchronized block, a thread of execution shall +first check whether a lock has been placed on the corresponding guard +object by another thread. If it has, the current thread shall wait until +the other thread relinquishes its lock. Once guard becomes available, +the current thread will place its own lock on it, execute the code contained in +the @synchronized block, and finally relinquish the lock (thereby +making guard available to other threads). + +

Unlike Java, Objective-C does not allow for entire methods to be marked +@synchronized. Note that throwing exceptions out of +@synchronized blocks is allowed, and will cause the guarding object +to be unlocked properly. + +

-fobjc-gc
Enable garbage collection (GC) in Objective-C and Objective-C++ programs. + +
-freplace-objc-classes
Emit a special marker instructing ld(1) not to statically link in +the resulting object file, and allow dyld(1) to load it in at +run time instead. This is used in conjunction with the Fix-and-Continue +debugging mode, where the object file in question may be recompiled and +dynamically reloaded in the course of program execution, without the need +to restart the program itself. Currently, Fix-and-Continue functionality +is only available in conjunction with the NeXT runtime on Mac OS X 10.3 +and later. + +
-fzero-link
When compiling for the NeXT runtime, the compiler ordinarily replaces calls +to objc_getClass("...") (when the name of the class is known at +compile time) with static class references that get initialized at load time, +which improves run-time performance. Specifying the -fzero-link flag +suppresses this behavior and causes calls to objc_getClass("...") +to be retained. This is useful in Zero-Link debugging mode, since it allows +for individual class implementations to be modified during program execution. + +
-gen-decls
Dump interface declarations for all classes seen in the source file to a +file named sourcename.decl. + +
-Wassign-intercept (Objective-C and Objective-C++ only)
Warn whenever an Objective-C assignment is being intercepted by the +garbage collector. + +
-Wno-protocol (Objective-C and Objective-C++ only)
If a class is declared to implement a protocol, a warning is issued for +every method in the protocol that is not implemented by the class. The +default behavior is to issue a warning for every method not explicitly +implemented in the class, even if a method implementation is inherited +from the superclass. If you use the -Wno-protocol option, then +methods inherited from the superclass are considered to be implemented, +and no warning is issued for them. + +
-Wselector (Objective-C and Objective-C++ only)
Warn if multiple methods of different types for the same selector are +found during compilation. The check is performed on the list of methods +in the final stage of compilation. Additionally, a check is performed +for each selector appearing in a @selector(...) +expression, and a corresponding method for that selector has been found +during compilation. Because these checks scan the method table only at +the end of compilation, these warnings are not produced if the final +stage of compilation is not reached, for example because an error is +found during compilation, or because the -fsyntax-only option is +being used. + +
-Wstrict-selector-match (Objective-C and Objective-C++ only)
Warn if multiple methods with differing argument and/or return types are +found for a given selector when attempting to send a message using this +selector to a receiver of type id or Class. When this flag +is off (which is the default behavior), the compiler will omit such warnings +if any differences found are confined to types which share the same size +and alignment. + +
-Wundeclared-selector (Objective-C and Objective-C++ only)
Warn if a @selector(...) expression referring to an +undeclared selector is found. A selector is considered undeclared if no +method with that name has been declared before the +@selector(...) expression, either explicitly in an +@interface or @protocol declaration, or implicitly in +an @implementation section. This option always performs its +checks as soon as a @selector(...) expression is found, +while -Wselector only performs its checks in the final stage of +compilation. This also enforces the coding style convention +that methods and selectors must be declared before being used. + +
-print-objc-runtime-info
Generate C header describing the largest structure that is passed by +value, if any. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Objective_002dC.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Objective_002dC.html new file mode 100644 index 0000000..a46f98d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Objective_002dC.html @@ -0,0 +1,72 @@ + + +Objective-C - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: C++ Extensions, +Up: Top +



+
+ + +

7 GNU Objective-C runtime features

+ +

This document is meant to describe some of the GNU Objective-C runtime +features. It is not intended to teach you Objective-C, there are several +resources on the Internet that present the language. Questions and +comments about this document to Ovidiu Predescu +ovidiu@cup.hp.com. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Offsetof.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Offsetof.html new file mode 100644 index 0000000..b4b5727 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Offsetof.html @@ -0,0 +1,78 @@ + + +Offsetof - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Vector Extensions, +Up: C Extensions +



+
+ +

5.46 Offsetof

+ +

+GCC implements for both C and C++ a syntactic extension to implement +the offsetof macro. + +

     primary:
+     	"__builtin_offsetof" "(" typename "," offsetof_member_designator ")"
+     
+     offsetof_member_designator:
+     	  identifier
+     	| offsetof_member_designator "." identifier
+     	| offsetof_member_designator "[" expr "]"
+
+

This extension is sufficient such that + +

     #define offsetof(type, member)  __builtin_offsetof (type, member)
+
+

is a suitable definition of the offsetof macro. In C++, type +may be dependent. In either case, member may consist of a single +identifier, or a sequence of member accesses and array references. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Optimize-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Optimize-Options.html new file mode 100644 index 0000000..1f310d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Optimize-Options.html @@ -0,0 +1,1852 @@ + + +Optimize Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Debugging Options, +Up: Invoking GCC +



+
+ +

3.10 Options That Control Optimization

+ +

+These options control various sorts of optimizations. + +

Without any optimization option, the compiler's goal is to reduce the +cost of compilation and to make debugging produce the expected +results. Statements are independent: if you stop the program with a +breakpoint between statements, you can then assign a new value to any +variable or change the program counter to any other statement in the +function and get exactly the results you would expect from the source +code. + +

Turning on optimization flags makes the compiler attempt to improve +the performance and/or code size at the expense of compilation time +and possibly the ability to debug the program. + +

The compiler performs optimization based on the knowledge it has of +the program. Optimization levels -O and above, in +particular, enable unit-at-a-time mode, which allows the +compiler to consider information gained from later functions in +the file when compiling a function. Compiling multiple files at +once to a single output file in unit-at-a-time mode allows +the compiler to use information gained from all of the files when +compiling each of them. + +

Not all optimizations are controlled directly by a flag. Only +optimizations that have a flag are listed. + +

+
-O
-O1
Optimize. Optimizing compilation takes somewhat more time, and a lot +more memory for a large function. + +

With -O, the compiler tries to reduce code size and execution +time, without performing any optimizations that take a great deal of +compilation time. + +

-O turns on the following optimization flags: +

          -fauto-inc-dec 
+          -fcprop-registers 
+          -fdce 
+          -fdefer-pop 
+          -fdelayed-branch 
+          -fdse 
+          -fguess-branch-probability 
+          -fif-conversion2 
+          -fif-conversion 
+          -finline-small-functions 
+          -fipa-pure-const 
+          -fipa-reference 
+          -fmerge-constants
+          -fsplit-wide-types 
+          -ftree-ccp 
+          -ftree-ch 
+          -ftree-copyrename 
+          -ftree-dce 
+          -ftree-dominator-opts 
+          -ftree-dse 
+          -ftree-fre 
+          -ftree-sra 
+          -ftree-ter 
+          -funit-at-a-time
+     
+

-O also turns on -fomit-frame-pointer on machines +where doing so does not interfere with debugging. + +

-O2
Optimize even more. GCC performs nearly all supported optimizations +that do not involve a space-speed tradeoff. The compiler does not +perform loop unrolling or function inlining when you specify -O2. +As compared to -O, this option increases both compilation time +and the performance of the generated code. + +

-O2 turns on all optimization flags specified by -O. It +also turns on the following optimization flags: +

          -fthread-jumps 
+          -falign-functions  -falign-jumps 
+          -falign-loops  -falign-labels 
+          -fcaller-saves 
+          -fcrossjumping 
+          -fcse-follow-jumps  -fcse-skip-blocks 
+          -fdelete-null-pointer-checks 
+          -fexpensive-optimizations 
+          -fgcse  -fgcse-lm  
+          -foptimize-sibling-calls 
+          -fpeephole2 
+          -fregmove 
+          -freorder-blocks  -freorder-functions 
+          -frerun-cse-after-loop  
+          -fsched-interblock  -fsched-spec 
+          -fschedule-insns  -fschedule-insns2 
+          -fstrict-aliasing -fstrict-overflow 
+          -ftree-pre 
+          -ftree-vrp
+     
+

Please note the warning under -fgcse about +invoking -O2 on programs that use computed gotos. + +

-O3
Optimize yet more. -O3 turns on all optimizations specified by +-O2 and also turns on the -finline-functions, +-funswitch-loops, -fpredictive-commoning, +-fgcse-after-reload and -ftree-vectorize +options. + +
-O0
Reduce compilation time and make debugging produce the expected +results. This is the default. + +
-Os
Optimize for size. -Os enables all -O2 optimizations that +do not typically increase code size. It also performs further +optimizations designed to reduce code size. + +

-Os disables the following optimization flags: +

          -falign-functions  -falign-jumps  -falign-loops 
+          -falign-labels  -freorder-blocks  -freorder-blocks-and-partition 
+          -fprefetch-loop-arrays  -ftree-vect-loop-version
+     
+

If you use multiple -O options, with or without level numbers, +the last such option is the one that is effective. +

+ +

Options of the form -fflag specify machine-independent +flags. Most flags have both positive and negative forms; the negative +form of -ffoo would be -fno-foo. In the table +below, only one of the forms is listed—the one you typically will +use. You can figure out the other form by either removing no- +or adding it. + +

The following options control specific optimizations. They are either +activated by -O options or are related to ones that are. You +can use the following flags in the rare cases when “fine-tuning” of +optimizations to be performed is desired. + +

+
-fno-default-inline
Do not make member functions inline by default merely because they are +defined inside the class scope (C++ only). Otherwise, when you specify +-O, member functions defined inside class scope are compiled +inline by default; i.e., you don't need to add inline in front of +the member function name. + +
-fno-defer-pop
Always pop the arguments to each function call as soon as that function +returns. For machines which must pop arguments after a function call, +the compiler normally lets arguments accumulate on the stack for several +function calls and pops them all at once. + +

Disabled at levels -O, -O2, -O3, -Os. + +

-fforward-propagate
Perform a forward propagation pass on RTL. The pass tries to combine two +instructions and checks if the result can be simplified. If loop unrolling +is active, two passes are performed and the second is scheduled after +loop unrolling. + +

This option is enabled by default at optimization levels -O2, +-O3, -Os. + +

-fomit-frame-pointer
Don't keep the frame pointer in a register for functions that +don't need one. This avoids the instructions to save, set up and +restore frame pointers; it also makes an extra register available +in many functions. It also makes debugging impossible on +some machines. + +

On some machines, such as the VAX, this flag has no effect, because +the standard calling sequence automatically handles the frame pointer +and nothing is saved by pretending it doesn't exist. The +machine-description macro FRAME_POINTER_REQUIRED controls +whether a target machine supports this flag. See Register Usage (GNU Compiler Collection (GCC) Internals). + +

Enabled at levels -O, -O2, -O3, -Os. + +

-foptimize-sibling-calls
Optimize sibling and tail recursive calls. + +

Enabled at levels -O2, -O3, -Os. + +

-fno-inline
Don't pay attention to the inline keyword. Normally this option +is used to keep the compiler from expanding any functions inline. +Note that if you are not optimizing, no functions can be expanded inline. + +
-finline-small-functions
Integrate functions into their callers when their body is smaller than expected +function call code (so overall size of program gets smaller). The compiler +heuristically decides which functions are simple enough to be worth integrating +in this way. + +

Enabled at level -O2. + +

-finline-functions
Integrate all simple functions into their callers. The compiler +heuristically decides which functions are simple enough to be worth +integrating in this way. + +

If all calls to a given function are integrated, and the function is +declared static, then the function is normally not output as +assembler code in its own right. + +

Enabled at level -O3. + +

-finline-functions-called-once
Consider all static functions called once for inlining into their +caller even if they are not marked inline. If a call to a given +function is integrated, then the function is not output as assembler code +in its own right. + +

Enabled if -funit-at-a-time is enabled. + +

-fearly-inlining
Inline functions marked by always_inline and functions whose body seems +smaller than the function call overhead early before doing +-fprofile-generate instrumentation and real inlining pass. Doing so +makes profiling significantly cheaper and usually inlining faster on programs +having large chains of nested wrapper functions. + +

Enabled by default. + +

-finline-limit=n
By default, GCC limits the size of functions that can be inlined. This flag +allows coarse control of this limit. n is the size of functions that +can be inlined in number of pseudo instructions. + +

Inlining is actually controlled by a number of parameters, which may be +specified individually by using --param name=value. +The -finline-limit=n option sets some of these parameters +as follows: + +

+
max-inline-insns-single
is set to n/2. +
max-inline-insns-auto
is set to n/2. +
+ +

See below for a documentation of the individual +parameters controlling inlining and for the defaults of these parameters. + +

Note: there may be no value to -finline-limit that results +in default behavior. + +

Note: pseudo instruction represents, in this particular context, an +abstract measurement of function's size. In no way does it represent a count +of assembly instructions and as such its exact meaning might change from one +release to an another. + +

-fkeep-inline-functions
In C, emit static functions that are declared inline +into the object file, even if the function has been inlined into all +of its callers. This switch does not affect functions using the +extern inline extension in GNU C89. In C++, emit any and all +inline functions into the object file. + +
-fkeep-static-consts
Emit variables declared static const when optimization isn't turned +on, even if the variables aren't referenced. + +

GCC enables this option by default. If you want to force the compiler to +check if the variable was referenced, regardless of whether or not +optimization is turned on, use the -fno-keep-static-consts option. + +

-fmerge-constants
Attempt to merge identical constants (string constants and floating point +constants) across compilation units. + +

This option is the default for optimized compilation if the assembler and +linker support it. Use -fno-merge-constants to inhibit this +behavior. + +

Enabled at levels -O, -O2, -O3, -Os. + +

-fmerge-all-constants
Attempt to merge identical constants and identical variables. + +

This option implies -fmerge-constants. In addition to +-fmerge-constants this considers e.g. even constant initialized +arrays or initialized constant variables with integral or floating point +types. Languages like C or C++ require each non-automatic variable to +have distinct location, so using this option will result in non-conforming +behavior. + +

-fmodulo-sched
Perform swing modulo scheduling immediately before the first scheduling +pass. This pass looks at innermost loops and reorders their +instructions by overlapping different iterations. + +
-fmodulo-sched-allow-regmoves
Perform more aggressive SMS based modulo scheduling with register moves +allowed. By setting this flag certain anti-dependences edges will be +deleted which will trigger the generation of reg-moves based on the +life-range analysis. This option is effective only with +-fmodulo-sched enabled. + +
-fno-branch-count-reg
Do not use “decrement and branch” instructions on a count register, +but instead generate a sequence of instructions that decrement a +register, compare it against zero, then branch based upon the result. +This option is only meaningful on architectures that support such +instructions, which include x86, PowerPC, IA-64 and S/390. + +

The default is -fbranch-count-reg. + +

-fno-function-cse
Do not put function addresses in registers; make each instruction that +calls a constant function contain the function's address explicitly. + +

This option results in less efficient code, but some strange hacks +that alter the assembler output may be confused by the optimizations +performed when this option is not used. + +

The default is -ffunction-cse + +

-fno-zero-initialized-in-bss
If the target supports a BSS section, GCC by default puts variables that +are initialized to zero into BSS. This can save space in the resulting +code. + +

This option turns off this behavior because some programs explicitly +rely on variables going to the data section. E.g., so that the +resulting executable can find the beginning of that section and/or make +assumptions based on that. + +

The default is -fzero-initialized-in-bss. + +

-fmudflap -fmudflapth -fmudflapir
For front-ends that support it (C and C++), instrument all risky +pointer/array dereferencing operations, some standard library +string/heap functions, and some other associated constructs with +range/validity tests. Modules so instrumented should be immune to +buffer overflows, invalid heap use, and some other classes of C/C++ +programming errors. The instrumentation relies on a separate runtime +library (libmudflap), which will be linked into a program if +-fmudflap is given at link time. Run-time behavior of the +instrumented program is controlled by the MUDFLAP_OPTIONS +environment variable. See env MUDFLAP_OPTIONS=-help a.out +for its options. + +

Use -fmudflapth instead of -fmudflap to compile and to +link if your program is multi-threaded. Use -fmudflapir, in +addition to -fmudflap or -fmudflapth, if +instrumentation should ignore pointer reads. This produces less +instrumentation (and therefore faster execution) and still provides +some protection against outright memory corrupting writes, but allows +erroneously read data to propagate within a program. + +

-fthread-jumps
Perform optimizations where we check to see if a jump branches to a +location where another comparison subsumed by the first is found. If +so, the first branch is redirected to either the destination of the +second branch or a point immediately following it, depending on whether +the condition is known to be true or false. + +

Enabled at levels -O2, -O3, -Os. + +

-fsplit-wide-types
When using a type that occupies multiple registers, such as long +long on a 32-bit system, split the registers apart and allocate them +independently. This normally generates better code for those types, +but may make debugging more difficult. + +

Enabled at levels -O, -O2, -O3, +-Os. + +

-fcse-follow-jumps
In common subexpression elimination (CSE), scan through jump instructions +when the target of the jump is not reached by any other path. For +example, when CSE encounters an if statement with an +else clause, CSE will follow the jump when the condition +tested is false. + +

Enabled at levels -O2, -O3, -Os. + +

-fcse-skip-blocks
This is similar to -fcse-follow-jumps, but causes CSE to +follow jumps which conditionally skip over blocks. When CSE +encounters a simple if statement with no else clause, +-fcse-skip-blocks causes CSE to follow the jump around the +body of the if. + +

Enabled at levels -O2, -O3, -Os. + +

-frerun-cse-after-loop
Re-run common subexpression elimination after loop optimizations has been +performed. + +

Enabled at levels -O2, -O3, -Os. + +

-fgcse
Perform a global common subexpression elimination pass. +This pass also performs global constant and copy propagation. + +

Note: When compiling a program using computed gotos, a GCC +extension, you may get better runtime performance if you disable +the global common subexpression elimination pass by adding +-fno-gcse to the command line. + +

Enabled at levels -O2, -O3, -Os. + +

-fgcse-lm
When -fgcse-lm is enabled, global common subexpression elimination will +attempt to move loads which are only killed by stores into themselves. This +allows a loop containing a load/store sequence to be changed to a load outside +the loop, and a copy/store within the loop. + +

Enabled by default when gcse is enabled. + +

-fgcse-sm
When -fgcse-sm is enabled, a store motion pass is run after +global common subexpression elimination. This pass will attempt to move +stores out of loops. When used in conjunction with -fgcse-lm, +loops containing a load/store sequence can be changed to a load before +the loop and a store after the loop. + +

Not enabled at any optimization level. + +

-fgcse-las
When -fgcse-las is enabled, the global common subexpression +elimination pass eliminates redundant loads that come after stores to the +same memory location (both partial and full redundancies). + +

Not enabled at any optimization level. + +

-fgcse-after-reload
When -fgcse-after-reload is enabled, a redundant load elimination +pass is performed after reload. The purpose of this pass is to cleanup +redundant spilling. + +
-funsafe-loop-optimizations
If given, the loop optimizer will assume that loop indices do not +overflow, and that the loops with nontrivial exit condition are not +infinite. This enables a wider range of loop optimizations even if +the loop optimizer itself cannot prove that these assumptions are valid. +Using -Wunsafe-loop-optimizations, the compiler will warn you +if it finds this kind of loop. + +
-fcrossjumping
Perform cross-jumping transformation. This transformation unifies equivalent code and save code size. The +resulting code may or may not perform better than without cross-jumping. + +

Enabled at levels -O2, -O3, -Os. + +

-fauto-inc-dec
Combine increments or decrements of addresses with memory accesses. +This pass is always skipped on architectures that do not have +instructions to support this. Enabled by default at -O and +higher on architectures that support this. + +
-fdce
Perform dead code elimination (DCE) on RTL. +Enabled by default at -O and higher. + +
-fdse
Perform dead store elimination (DSE) on RTL. +Enabled by default at -O and higher. + +
-fif-conversion
Attempt to transform conditional jumps into branch-less equivalents. This +include use of conditional moves, min, max, set flags and abs instructions, and +some tricks doable by standard arithmetics. The use of conditional execution +on chips where it is available is controlled by if-conversion2. + +

Enabled at levels -O, -O2, -O3, -Os. + +

-fif-conversion2
Use conditional execution (where available) to transform conditional jumps into +branch-less equivalents. + +

Enabled at levels -O, -O2, -O3, -Os. + +

-fdelete-null-pointer-checks
Use global dataflow analysis to identify and eliminate useless checks +for null pointers. The compiler assumes that dereferencing a null +pointer would have halted the program. If a pointer is checked after +it has already been dereferenced, it cannot be null. + +

In some environments, this assumption is not true, and programs can +safely dereference null pointers. Use +-fno-delete-null-pointer-checks to disable this optimization +for programs which depend on that behavior. + +

Enabled at levels -O2, -O3, -Os. + +

-fexpensive-optimizations
Perform a number of minor optimizations that are relatively expensive. + +

Enabled at levels -O2, -O3, -Os. + +

-foptimize-register-move
-fregmove
Attempt to reassign register numbers in move instructions and as +operands of other simple instructions in order to maximize the amount of +register tying. This is especially helpful on machines with two-operand +instructions. + +

Note -fregmove and -foptimize-register-move are the same +optimization. + +

Enabled at levels -O2, -O3, -Os. + +

-fdelayed-branch
If supported for the target machine, attempt to reorder instructions +to exploit instruction slots available after delayed branch +instructions. + +

Enabled at levels -O, -O2, -O3, -Os. + +

-fschedule-insns
If supported for the target machine, attempt to reorder instructions to +eliminate execution stalls due to required data being unavailable. This +helps machines that have slow floating point or memory load instructions +by allowing other instructions to be issued until the result of the load +or floating point instruction is required. + +

Enabled at levels -O2, -O3, -Os. + +

-fschedule-insns2
Similar to -fschedule-insns, but requests an additional pass of +instruction scheduling after register allocation has been done. This is +especially useful on machines with a relatively small number of +registers and where memory load instructions take more than one cycle. + +

Enabled at levels -O2, -O3, -Os. + +

-fno-sched-interblock
Don't schedule instructions across basic blocks. This is normally +enabled by default when scheduling before register allocation, i.e. +with -fschedule-insns or at -O2 or higher. + +
-fno-sched-spec
Don't allow speculative motion of non-load instructions. This is normally +enabled by default when scheduling before register allocation, i.e. +with -fschedule-insns or at -O2 or higher. + +
-fsched-spec-load
Allow speculative motion of some load instructions. This only makes +sense when scheduling before register allocation, i.e. with +-fschedule-insns or at -O2 or higher. + +
-fsched-spec-load-dangerous
Allow speculative motion of more load instructions. This only makes +sense when scheduling before register allocation, i.e. with +-fschedule-insns or at -O2 or higher. + +
-fsched-stalled-insns
-fsched-stalled-insns=n
Define how many insns (if any) can be moved prematurely from the queue +of stalled insns into the ready list, during the second scheduling pass. +-fno-sched-stalled-insns means that no insns will be moved +prematurely, -fsched-stalled-insns=0 means there is no limit +on how many queued insns can be moved prematurely. +-fsched-stalled-insns without a value is equivalent to +-fsched-stalled-insns=1. + +
-fsched-stalled-insns-dep
-fsched-stalled-insns-dep=n
Define how many insn groups (cycles) will be examined for a dependency +on a stalled insn that is candidate for premature removal from the queue +of stalled insns. This has an effect only during the second scheduling pass, +and only if -fsched-stalled-insns is used. +-fno-sched-stalled-insns-dep is equivalent to +-fsched-stalled-insns-dep=0. +-fsched-stalled-insns-dep without a value is equivalent to +-fsched-stalled-insns-dep=1. + +
-fsched2-use-superblocks
When scheduling after register allocation, do use superblock scheduling +algorithm. Superblock scheduling allows motion across basic block boundaries +resulting on faster schedules. This option is experimental, as not all machine +descriptions used by GCC model the CPU closely enough to avoid unreliable +results from the algorithm. + +

This only makes sense when scheduling after register allocation, i.e. with +-fschedule-insns2 or at -O2 or higher. + +

-fsched2-use-traces
Use -fsched2-use-superblocks algorithm when scheduling after register +allocation and additionally perform code duplication in order to increase the +size of superblocks using tracer pass. See -ftracer for details on +trace formation. + +

This mode should produce faster but significantly longer programs. Also +without -fbranch-probabilities the traces constructed may not +match the reality and hurt the performance. This only makes +sense when scheduling after register allocation, i.e. with +-fschedule-insns2 or at -O2 or higher. + +

-fsee
Eliminate redundant sign extension instructions and move the non-redundant +ones to optimal placement using lazy code motion (LCM). + +
-freschedule-modulo-scheduled-loops
The modulo scheduling comes before the traditional scheduling, if a loop +was modulo scheduled we may want to prevent the later scheduling passes +from changing its schedule, we use this option to control that. + +
-fcaller-saves
Enable values to be allocated in registers that will be clobbered by +function calls, by emitting extra instructions to save and restore the +registers around such calls. Such allocation is done only when it +seems to result in better code than would otherwise be produced. + +

This option is always enabled by default on certain machines, usually +those which have no call-preserved registers to use instead. + +

Enabled at levels -O2, -O3, -Os. + +

-ftree-reassoc
Perform reassociation on trees. This flag is enabled by default +at -O and higher. + +
-ftree-pre
Perform partial redundancy elimination (PRE) on trees. This flag is +enabled by default at -O2 and -O3. + +
-ftree-fre
Perform full redundancy elimination (FRE) on trees. The difference +between FRE and PRE is that FRE only considers expressions +that are computed on all paths leading to the redundant computation. +This analysis is faster than PRE, though it exposes fewer redundancies. +This flag is enabled by default at -O and higher. + +
-ftree-copy-prop
Perform copy propagation on trees. This pass eliminates unnecessary +copy operations. This flag is enabled by default at -O and +higher. + +
-ftree-salias
Perform structural alias analysis on trees. This flag +is enabled by default at -O and higher. + +
-fipa-pure-const
Discover which functions are pure or constant. +Enabled by default at -O and higher. + +
-fipa-reference
Discover which static variables do not escape cannot escape the +compilation unit. +Enabled by default at -O and higher. + +
-fipa-struct-reorg
Perform structure reorganization optimization, that change C-like structures +layout in order to better utilize spatial locality. This transformation is +affective for programs containing arrays of structures. Available in two +compilation modes: profile-based (enabled with -fprofile-generate) +or static (which uses built-in heuristics). Require -fipa-type-escape +to provide the safety of this transformation. It works only in whole program +mode, so it requires -fwhole-program and -combine to be +enabled. Structures considered cold by this transformation are not +affected (see --param struct-reorg-cold-struct-ratio=value). + +

With this flag, the program debug info reflects a new structure layout. + +

-fipa-pta
Perform interprocedural pointer analysis. + +
-fipa-cp
Perform interprocedural constant propagation. +This optimization analyzes the program to determine when values passed +to functions are constants and then optimizes accordingly. +This optimization can substantially increase performance +if the application has constants passed to functions, but +because this optimization can create multiple copies of functions, +it may significantly increase code size. + +
-fipa-matrix-reorg
Perform matrix flattening and transposing. +Matrix flattening tries to replace a m-dimensional matrix +with its equivalent n-dimensional matrix, where n < m. +This reduces the level of indirection needed for accessing the elements +of the matrix. The second optimization is matrix transposing that +attemps to change the order of the matrix's dimensions in order to +improve cache locality. +Both optimizations need fwhole-program flag. +Transposing is enabled only if profiling information is avaliable. + +
-ftree-sink
Perform forward store motion on trees. This flag is +enabled by default at -O and higher. + +
-ftree-ccp
Perform sparse conditional constant propagation (CCP) on trees. This +pass only operates on local scalar variables and is enabled by default +at -O and higher. + +
-ftree-store-ccp
Perform sparse conditional constant propagation (CCP) on trees. This +pass operates on both local scalar variables and memory stores and +loads (global variables, structures, arrays, etc). This flag is +enabled by default at -O2 and higher. + +
-ftree-dce
Perform dead code elimination (DCE) on trees. This flag is enabled by +default at -O and higher. + +
-ftree-dominator-opts
Perform a variety of simple scalar cleanups (constant/copy +propagation, redundancy elimination, range propagation and expression +simplification) based on a dominator tree traversal. This also +performs jump threading (to reduce jumps to jumps). This flag is +enabled by default at -O and higher. + +
-ftree-dse
Perform dead store elimination (DSE) on trees. A dead store is a store into +a memory location which will later be overwritten by another store without +any intervening loads. In this case the earlier store can be deleted. This +flag is enabled by default at -O and higher. + +
-ftree-ch
Perform loop header copying on trees. This is beneficial since it increases +effectiveness of code motion optimizations. It also saves one jump. This flag +is enabled by default at -O and higher. It is not enabled +for -Os, since it usually increases code size. + +
-ftree-loop-optimize
Perform loop optimizations on trees. This flag is enabled by default +at -O and higher. + +
-ftree-loop-linear
Perform linear loop transformations on tree. This flag can improve cache +performance and allow further loop optimizations to take place. + +
-fcheck-data-deps
Compare the results of several data dependence analyzers. This option +is used for debugging the data dependence analyzers. + +
-ftree-loop-im
Perform loop invariant motion on trees. This pass moves only invariants that +would be hard to handle at RTL level (function calls, operations that expand to +nontrivial sequences of insns). With -funswitch-loops it also moves +operands of conditions that are invariant out of the loop, so that we can use +just trivial invariantness analysis in loop unswitching. The pass also includes +store motion. + +
-ftree-loop-ivcanon
Create a canonical counter for number of iterations in the loop for that +determining number of iterations requires complicated analysis. Later +optimizations then may determine the number easily. Useful especially +in connection with unrolling. + +
-fivopts
Perform induction variable optimizations (strength reduction, induction +variable merging and induction variable elimination) on trees. + +
-ftree-parallelize-loops=n
Parallelize loops, i.e., split their iteration space to run in n threads. +This is only possible for loops whose iterations are independent +and can be arbitrarily reordered. The optimization is only +profitable on multiprocessor machines, for loops that are CPU-intensive, +rather than constrained e.g. by memory bandwidth. This option +implies -pthread, and thus is only supported on targets +that have support for -pthread. + +
-ftree-sra
Perform scalar replacement of aggregates. This pass replaces structure +references with scalars to prevent committing structures to memory too +early. This flag is enabled by default at -O and higher. + +
-ftree-copyrename
Perform copy renaming on trees. This pass attempts to rename compiler +temporaries to other variables at copy locations, usually resulting in +variable names which more closely resemble the original variables. This flag +is enabled by default at -O and higher. + +
-ftree-ter
Perform temporary expression replacement during the SSA->normal phase. Single +use/single def temporaries are replaced at their use location with their +defining expression. This results in non-GIMPLE code, but gives the expanders +much more complex trees to work on resulting in better RTL generation. This is +enabled by default at -O and higher. + +
-ftree-vectorize
Perform loop vectorization on trees. This flag is enabled by default at +-O3. + +
-ftree-vect-loop-version
Perform loop versioning when doing loop vectorization on trees. When a loop +appears to be vectorizable except that data alignment or data dependence cannot +be determined at compile time then vectorized and non-vectorized versions of +the loop are generated along with runtime checks for alignment or dependence +to control which version is executed. This option is enabled by default +except at level -Os where it is disabled. + +
-fvect-cost-model
Enable cost model for vectorization. + +
-ftree-vrp
Perform Value Range Propagation on trees. This is similar to the +constant propagation pass, but instead of values, ranges of values are +propagated. This allows the optimizers to remove unnecessary range +checks like array bound checks and null pointer checks. This is +enabled by default at -O2 and higher. Null pointer check +elimination is only done if -fdelete-null-pointer-checks is +enabled. + +
-ftracer
Perform tail duplication to enlarge superblock size. This transformation +simplifies the control flow of the function allowing other optimizations to do +better job. + +
-funroll-loops
Unroll loops whose number of iterations can be determined at compile +time or upon entry to the loop. -funroll-loops implies +-frerun-cse-after-loop. This option makes code larger, +and may or may not make it run faster. + +
-funroll-all-loops
Unroll all loops, even if their number of iterations is uncertain when +the loop is entered. This usually makes programs run more slowly. +-funroll-all-loops implies the same options as +-funroll-loops, + +
-fsplit-ivs-in-unroller
Enables expressing of values of induction variables in later iterations +of the unrolled loop using the value in the first iteration. This breaks +long dependency chains, thus improving efficiency of the scheduling passes. + +

Combination of -fweb and CSE is often sufficient to obtain the +same effect. However in cases the loop body is more complicated than +a single basic block, this is not reliable. It also does not work at all +on some of the architectures due to restrictions in the CSE pass. + +

This optimization is enabled by default. + +

-fvariable-expansion-in-unroller
With this option, the compiler will create multiple copies of some +local variables when unrolling a loop which can result in superior code. + +
-fpredictive-commoning
Perform predictive commoning optimization, i.e., reusing computations +(especially memory loads and stores) performed in previous +iterations of loops. + +

This option is enabled at level -O3. + +

-fprefetch-loop-arrays
If supported by the target machine, generate instructions to prefetch +memory to improve the performance of loops that access large arrays. + +

This option may generate better or worse code; results are highly +dependent on the structure of loops within the source code. + +

Disabled at level -Os. + +

-fno-peephole
-fno-peephole2
Disable any machine-specific peephole optimizations. The difference +between -fno-peephole and -fno-peephole2 is in how they +are implemented in the compiler; some targets use one, some use the +other, a few use both. + +

-fpeephole is enabled by default. +-fpeephole2 enabled at levels -O2, -O3, -Os. + +

-fno-guess-branch-probability
Do not guess branch probabilities using heuristics. + +

GCC will use heuristics to guess branch probabilities if they are +not provided by profiling feedback (-fprofile-arcs). These +heuristics are based on the control flow graph. If some branch probabilities +are specified by __builtin_expect, then the heuristics will be +used to guess branch probabilities for the rest of the control flow graph, +taking the __builtin_expect info into account. The interactions +between the heuristics and __builtin_expect can be complex, and in +some cases, it may be useful to disable the heuristics so that the effects +of __builtin_expect are easier to understand. + +

The default is -fguess-branch-probability at levels +-O, -O2, -O3, -Os. + +

-freorder-blocks
Reorder basic blocks in the compiled function in order to reduce number of +taken branches and improve code locality. + +

Enabled at levels -O2, -O3. + +

-freorder-blocks-and-partition
In addition to reordering basic blocks in the compiled function, in order +to reduce number of taken branches, partitions hot and cold basic blocks +into separate sections of the assembly and .o files, to improve +paging and cache locality performance. + +

This optimization is automatically turned off in the presence of +exception handling, for linkonce sections, for functions with a user-defined +section attribute and on any architecture that does not support named +sections. + +

-freorder-functions
Reorder functions in the object file in order to +improve code locality. This is implemented by using special +subsections .text.hot for most frequently executed functions and +.text.unlikely for unlikely executed functions. Reordering is done by +the linker so object file format must support named sections and linker must +place them in a reasonable way. + +

Also profile feedback must be available in to make this option effective. See +-fprofile-arcs for details. + +

Enabled at levels -O2, -O3, -Os. + +

-fstrict-aliasing
Allows the compiler to assume the strictest aliasing rules applicable to +the language being compiled. For C (and C++), this activates +optimizations based on the type of expressions. In particular, an +object of one type is assumed never to reside at the same address as an +object of a different type, unless the types are almost the same. For +example, an unsigned int can alias an int, but not a +void* or a double. A character type may alias any other +type. + +

Pay special attention to code like this: +

          union a_union {
+            int i;
+            double d;
+          };
+          
+          int f() {
+            a_union t;
+            t.d = 3.0;
+            return t.i;
+          }
+     
+

The practice of reading from a different union member than the one most +recently written to (called “type-punning”) is common. Even with +-fstrict-aliasing, type-punning is allowed, provided the memory +is accessed through the union type. So, the code above will work as +expected. See Structures unions enumerations and bit-fields implementation. However, this code might not: +

          int f() {
+            a_union t;
+            int* ip;
+            t.d = 3.0;
+            ip = &t.i;
+            return *ip;
+          }
+     
+

Similarly, access by taking the address, casting the resulting pointer +and dereferencing the result has undefined behavior, even if the cast +uses a union type, e.g.: +

          int f() {
+            double d = 3.0;
+            return ((union a_union *) &d)->i;
+          }
+     
+

The -fstrict-aliasing option is enabled at levels +-O2, -O3, -Os. + +

-fstrict-overflow
Allow the compiler to assume strict signed overflow rules, depending +on the language being compiled. For C (and C++) this means that +overflow when doing arithmetic with signed numbers is undefined, which +means that the compiler may assume that it will not happen. This +permits various optimizations. For example, the compiler will assume +that an expression like i + 10 > i will always be true for +signed i. This assumption is only valid if signed overflow is +undefined, as the expression is false if i + 10 overflows when +using twos complement arithmetic. When this option is in effect any +attempt to determine whether an operation on signed numbers will +overflow must be written carefully to not actually involve overflow. + +

This option also allows the compiler to assume strict pointer +semantics: given a pointer to an object, if adding an offset to that +pointer does not produce a pointer to the same object, the addition is +undefined. This permits the compiler to conclude that p + u > +p is always true for a pointer p and unsigned integer +u. This assumption is only valid because pointer wraparound is +undefined, as the expression is false if p + u overflows using +twos complement arithmetic. + +

See also the -fwrapv option. Using -fwrapv means +that integer signed overflow is fully defined: it wraps. When +-fwrapv is used, there is no difference between +-fstrict-overflow and -fno-strict-overflow for +integers. With -fwrapv certain types of overflow are +permitted. For example, if the compiler gets an overflow when doing +arithmetic on constants, the overflowed value can still be used with +-fwrapv, but not otherwise. + +

The -fstrict-overflow option is enabled at levels +-O2, -O3, -Os. + +

-falign-functions
-falign-functions=n
Align the start of functions to the next power-of-two greater than +n, skipping up to n bytes. For instance, +-falign-functions=32 aligns functions to the next 32-byte +boundary, but -falign-functions=24 would align to the next +32-byte boundary only if this can be done by skipping 23 bytes or less. + +

-fno-align-functions and -falign-functions=1 are +equivalent and mean that functions will not be aligned. + +

Some assemblers only support this flag when n is a power of two; +in that case, it is rounded up. + +

If n is not specified or is zero, use a machine-dependent default. + +

Enabled at levels -O2, -O3. + +

-falign-labels
-falign-labels=n
Align all branch targets to a power-of-two boundary, skipping up to +n bytes like -falign-functions. This option can easily +make code slower, because it must insert dummy operations for when the +branch target is reached in the usual flow of the code. + +

-fno-align-labels and -falign-labels=1 are +equivalent and mean that labels will not be aligned. + +

If -falign-loops or -falign-jumps are applicable and +are greater than this value, then their values are used instead. + +

If n is not specified or is zero, use a machine-dependent default +which is very likely to be 1, meaning no alignment. + +

Enabled at levels -O2, -O3. + +

-falign-loops
-falign-loops=n
Align loops to a power-of-two boundary, skipping up to n bytes +like -falign-functions. The hope is that the loop will be +executed many times, which will make up for any execution of the dummy +operations. + +

-fno-align-loops and -falign-loops=1 are +equivalent and mean that loops will not be aligned. + +

If n is not specified or is zero, use a machine-dependent default. + +

Enabled at levels -O2, -O3. + +

-falign-jumps
-falign-jumps=n
Align branch targets to a power-of-two boundary, for branch targets +where the targets can only be reached by jumping, skipping up to n +bytes like -falign-functions. In this case, no dummy operations +need be executed. + +

-fno-align-jumps and -falign-jumps=1 are +equivalent and mean that loops will not be aligned. + +

If n is not specified or is zero, use a machine-dependent default. + +

Enabled at levels -O2, -O3. + +

-funit-at-a-time
Parse the whole compilation unit before starting to produce code. +This allows some extra optimizations to take place but consumes +more memory (in general). There are some compatibility issues +with unit-at-a-time mode: +
    +
  • enabling unit-at-a-time mode may change the order +in which functions, variables, and top-level asm statements +are emitted, and will likely break code relying on some particular +ordering. The majority of such top-level asm statements, +though, can be replaced by section attributes. The +fno-toplevel-reorder option may be used to keep the ordering +used in the input file, at the cost of some optimizations. + +
  • unit-at-a-time mode removes unreferenced static variables +and functions. This may result in undefined references +when an asm statement refers directly to variables or functions +that are otherwise unused. In that case either the variable/function +shall be listed as an operand of the asm statement operand or, +in the case of top-level asm statements the attribute used +shall be used on the declaration. + +
  • Static functions now can use non-standard passing conventions that +may break asm statements calling functions directly. Again, +attribute used will prevent this behavior. +
+ +

As a temporary workaround, -fno-unit-at-a-time can be used, +but this scheme may not be supported by future releases of GCC. + +

Enabled at levels -O, -O2, -O3, -Os. + +

-fno-toplevel-reorder
Do not reorder top-level functions, variables, and asm +statements. Output them in the same order that they appear in the +input file. When this option is used, unreferenced static variables +will not be removed. This option is intended to support existing code +which relies on a particular ordering. For new code, it is better to +use attributes. + +
-fweb
Constructs webs as commonly used for register allocation purposes and assign +each web individual pseudo register. This allows the register allocation pass +to operate on pseudos directly, but also strengthens several other optimization +passes, such as CSE, loop optimizer and trivial dead code remover. It can, +however, make debugging impossible, since variables will no longer stay in a +“home register”. + +

Enabled by default with -funroll-loops. + +

-fwhole-program
Assume that the current compilation unit represents whole program being +compiled. All public functions and variables with the exception of main +and those merged by attribute externally_visible become static functions +and in a affect gets more aggressively optimized by interprocedural optimizers. +While this option is equivalent to proper use of static keyword for +programs consisting of single file, in combination with option +--combine this flag can be used to compile most of smaller scale C +programs since the functions and variables become local for the whole combined +compilation unit, not for the single source file itself. + +

This option is not supported for Fortran programs. + +

-fcprop-registers
After register allocation and post-register allocation instruction splitting, +we perform a copy-propagation pass to try to reduce scheduling dependencies +and occasionally eliminate the copy. + +

Enabled at levels -O, -O2, -O3, -Os. + +

-fprofile-generate
+Enable options usually used for instrumenting application to produce +profile useful for later recompilation with profile feedback based +optimization. You must use -fprofile-generate both when +compiling and when linking your program. + +

The following options are enabled: -fprofile-arcs, -fprofile-values, -fvpt. + +

-fprofile-use
Enable profile feedback directed optimizations, and optimizations +generally profitable only with profile feedback available. + +

The following options are enabled: -fbranch-probabilities, -fvpt, +-funroll-loops, -fpeel-loops, -ftracer + +

By default, GCC emits an error message if the feedback profiles do not +match the source code. This error can be turned into a warning by using +-Wcoverage-mismatch. Note this may result in poorly optimized +code. +

+ +

The following options control compiler behavior regarding floating +point arithmetic. These options trade off between speed and +correctness. All must be specifically enabled. + +

+
-ffloat-store
Do not store floating point variables in registers, and inhibit other +options that might change whether a floating point value is taken from a +register or memory. + +

This option prevents undesirable excess precision on machines such as +the 68000 where the floating registers (of the 68881) keep more +precision than a double is supposed to have. Similarly for the +x86 architecture. For most programs, the excess precision does only +good, but a few programs rely on the precise definition of IEEE floating +point. Use -ffloat-store for such programs, after modifying +them to store all pertinent intermediate computations into variables. + +

-ffast-math
Sets -fno-math-errno, -funsafe-math-optimizations, +-ffinite-math-only, -fno-rounding-math, +-fno-signaling-nans and -fcx-limited-range. + +

This option causes the preprocessor macro __FAST_MATH__ to be defined. + +

This option is not turned on by any -O option since +it can result in incorrect output for programs which depend on +an exact implementation of IEEE or ISO rules/specifications for +math functions. It may, however, yield faster code for programs +that do not require the guarantees of these specifications. + +

-fno-math-errno
Do not set ERRNO after calling math functions that are executed +with a single instruction, e.g., sqrt. A program that relies on +IEEE exceptions for math error handling may want to use this flag +for speed while maintaining IEEE arithmetic compatibility. + +

This option is not turned on by any -O option since +it can result in incorrect output for programs which depend on +an exact implementation of IEEE or ISO rules/specifications for +math functions. It may, however, yield faster code for programs +that do not require the guarantees of these specifications. + +

The default is -fmath-errno. + +

On Darwin systems, the math library never sets errno. There is +therefore no reason for the compiler to consider the possibility that +it might, and -fno-math-errno is the default. + +

-funsafe-math-optimizations
+Allow optimizations for floating-point arithmetic that (a) assume +that arguments and results are valid and (b) may violate IEEE or +ANSI standards. When used at link-time, it may include libraries +or startup files that change the default FPU control word or other +similar optimizations. + +

This option is not turned on by any -O option since +it can result in incorrect output for programs which depend on +an exact implementation of IEEE or ISO rules/specifications for +math functions. It may, however, yield faster code for programs +that do not require the guarantees of these specifications. +Enables -fno-signed-zeros, -fno-trapping-math, +-fassociative-math and -freciprocal-math. + +

The default is -fno-unsafe-math-optimizations. + +

-fassociative-math
+Allow re-association of operands in series of floating-point operations. +This violates the ISO C and C++ language standard by possibly changing +computation result. NOTE: re-ordering may change the sign of zero as +well as ignore NaNs and inhibit or create underflow or overflow (and +thus cannot be used on a code which relies on rounding behavior like +(x + 2**52) - 2**52). May also reorder floating-point comparisons +and thus may not be used when ordered comparisons are required. +This option requires that both -fno-signed-zeros and +-fno-trapping-math be in effect. Moreover, it doesn't make +much sense with -frounding-math. + +

The default is -fno-associative-math. + +

-freciprocal-math
+Allow the reciprocal of a value to be used instead of dividing by +the value if this enables optimizations. For example x / y +can be replaced with x * (1/y) which is useful if (1/y) +is subject to common subexpression elimination. Note that this loses +precision and increases the number of flops operating on the value. + +

The default is -fno-reciprocal-math. + +

-ffinite-math-only
Allow optimizations for floating-point arithmetic that assume +that arguments and results are not NaNs or +-Infs. + +

This option is not turned on by any -O option since +it can result in incorrect output for programs which depend on +an exact implementation of IEEE or ISO rules/specifications for +math functions. It may, however, yield faster code for programs +that do not require the guarantees of these specifications. + +

The default is -fno-finite-math-only. + +

-fno-signed-zeros
Allow optimizations for floating point arithmetic that ignore the +signedness of zero. IEEE arithmetic specifies the behavior of +distinct +0.0 and −0.0 values, which then prohibits simplification +of expressions such as x+0.0 or 0.0*x (even with -ffinite-math-only). +This option implies that the sign of a zero result isn't significant. + +

The default is -fsigned-zeros. + +

-fno-trapping-math
Compile code assuming that floating-point operations cannot generate +user-visible traps. These traps include division by zero, overflow, +underflow, inexact result and invalid operation. This option requires +that -fno-signaling-nans be in effect. Setting this option may +allow faster code if one relies on “non-stop” IEEE arithmetic, for example. + +

This option should never be turned on by any -O option since +it can result in incorrect output for programs which depend on +an exact implementation of IEEE or ISO rules/specifications for +math functions. + +

The default is -ftrapping-math. + +

-frounding-math
Disable transformations and optimizations that assume default floating +point rounding behavior. This is round-to-zero for all floating point +to integer conversions, and round-to-nearest for all other arithmetic +truncations. This option should be specified for programs that change +the FP rounding mode dynamically, or that may be executed with a +non-default rounding mode. This option disables constant folding of +floating point expressions at compile-time (which may be affected by +rounding mode) and arithmetic transformations that are unsafe in the +presence of sign-dependent rounding modes. + +

The default is -fno-rounding-math. + +

This option is experimental and does not currently guarantee to +disable all GCC optimizations that are affected by rounding mode. +Future versions of GCC may provide finer control of this setting +using C99's FENV_ACCESS pragma. This command line option +will be used to specify the default state for FENV_ACCESS. + +

-frtl-abstract-sequences
It is a size optimization method. This option is to find identical +sequences of code, which can be turned into pseudo-procedures and +then replace all occurrences with calls to the newly created +subroutine. It is kind of an opposite of -finline-functions. +This optimization runs at RTL level. + +
-fsignaling-nans
Compile code assuming that IEEE signaling NaNs may generate user-visible +traps during floating-point operations. Setting this option disables +optimizations that may change the number of exceptions visible with +signaling NaNs. This option implies -ftrapping-math. + +

This option causes the preprocessor macro __SUPPORT_SNAN__ to +be defined. + +

The default is -fno-signaling-nans. + +

This option is experimental and does not currently guarantee to +disable all GCC optimizations that affect signaling NaN behavior. + +

-fsingle-precision-constant
Treat floating point constant as single precision constant instead of +implicitly converting it to double precision constant. + +
-fcx-limited-range
When enabled, this option states that a range reduction step is not +needed when performing complex division. The default is +-fno-cx-limited-range, but is enabled by -ffast-math. + +

This option controls the default setting of the ISO C99 +CX_LIMITED_RANGE pragma. Nevertheless, the option applies to +all languages. + +

+ +

The following options control optimizations that may improve +performance, but are not enabled by any -O options. This +section includes experimental options that may produce broken code. + +

+
-fbranch-probabilities
After running a program compiled with -fprofile-arcs +(see Options for Debugging Your Program or gcc), you can compile it a second time using +-fbranch-probabilities, to improve optimizations based on +the number of times each branch was taken. When the program +compiled with -fprofile-arcs exits it saves arc execution +counts to a file called sourcename.gcda for each source +file. The information in this data file is very dependent on the +structure of the generated code, so you must use the same source code +and the same optimization options for both compilations. + +

With -fbranch-probabilities, GCC puts a +REG_BR_PROB note on each JUMP_INSN and CALL_INSN. +These can be used to improve optimization. Currently, they are only +used in one place: in reorg.c, instead of guessing which path a +branch is mostly to take, the REG_BR_PROB values are used to +exactly determine which path is taken more often. + +

-fprofile-values
If combined with -fprofile-arcs, it adds code so that some +data about values of expressions in the program is gathered. + +

With -fbranch-probabilities, it reads back the data gathered +from profiling values of expressions and adds REG_VALUE_PROFILE +notes to instructions for their later usage in optimizations. + +

Enabled with -fprofile-generate and -fprofile-use. + +

-fvpt
If combined with -fprofile-arcs, it instructs the compiler to add +a code to gather information about values of expressions. + +

With -fbranch-probabilities, it reads back the data gathered +and actually performs the optimizations based on them. +Currently the optimizations include specialization of division operation +using the knowledge about the value of the denominator. + +

-frename-registers
Attempt to avoid false dependencies in scheduled code by making use +of registers left over after register allocation. This optimization +will most benefit processors with lots of registers. Depending on the +debug information format adopted by the target, however, it can +make debugging impossible, since variables will no longer stay in +a “home register”. + +

Enabled by default with -funroll-loops. + +

-ftracer
Perform tail duplication to enlarge superblock size. This transformation +simplifies the control flow of the function allowing other optimizations to do +better job. + +

Enabled with -fprofile-use. + +

-funroll-loops
Unroll loops whose number of iterations can be determined at compile time or +upon entry to the loop. -funroll-loops implies +-frerun-cse-after-loop, -fweb and -frename-registers. +It also turns on complete loop peeling (i.e. complete removal of loops with +small constant number of iterations). This option makes code larger, and may +or may not make it run faster. + +

Enabled with -fprofile-use. + +

-funroll-all-loops
Unroll all loops, even if their number of iterations is uncertain when +the loop is entered. This usually makes programs run more slowly. +-funroll-all-loops implies the same options as +-funroll-loops. + +
-fpeel-loops
Peels the loops for that there is enough information that they do not +roll much (from profile feedback). It also turns on complete loop peeling +(i.e. complete removal of loops with small constant number of iterations). + +

Enabled with -fprofile-use. + +

-fmove-loop-invariants
Enables the loop invariant motion pass in the RTL loop optimizer. Enabled +at level -O1 + +
-funswitch-loops
Move branches with loop invariant conditions out of the loop, with duplicates +of the loop on both branches (modified according to result of the condition). + +
-ffunction-sections
-fdata-sections
Place each function or data item into its own section in the output +file if the target supports arbitrary sections. The name of the +function or the name of the data item determines the section's name +in the output file. + +

Use these options on systems where the linker can perform optimizations +to improve locality of reference in the instruction space. Most systems +using the ELF object format and SPARC processors running Solaris 2 have +linkers with such optimizations. AIX may have these optimizations in +the future. + +

Only use these options when there are significant benefits from doing +so. When you specify these options, the assembler and linker will +create larger object and executable files and will also be slower. +You will not be able to use gprof on all systems if you +specify this option and you may have problems with debugging if +you specify both this option and -g. + +

-fbranch-target-load-optimize
Perform branch target register load optimization before prologue / epilogue +threading. +The use of target registers can typically be exposed only during reload, +thus hoisting loads out of loops and doing inter-block scheduling needs +a separate optimization pass. + +
-fbranch-target-load-optimize2
Perform branch target register load optimization after prologue / epilogue +threading. + +
-fbtr-bb-exclusive
When performing branch target register load optimization, don't reuse +branch target registers in within any basic block. + +
-fstack-protector
Emit extra code to check for buffer overflows, such as stack smashing +attacks. This is done by adding a guard variable to functions with +vulnerable objects. This includes functions that call alloca, and +functions with buffers larger than 8 bytes. The guards are initialized +when a function is entered and then checked when the function exits. +If a guard check fails, an error message is printed and the program exits. + +
-fstack-protector-all
Like -fstack-protector except that all functions are protected. + +
-fsection-anchors
Try to reduce the number of symbolic address calculations by using +shared “anchor” symbols to address nearby objects. This transformation +can help to reduce the number of GOT entries and GOT accesses on some +targets. + +

For example, the implementation of the following function foo: + +

          static int a, b, c;
+          int foo (void) { return a + b + c; }
+     
+

would usually calculate the addresses of all three variables, but if you +compile it with -fsection-anchors, it will access the variables +from a common anchor point instead. The effect is similar to the +following pseudocode (which isn't valid C): + +

          int foo (void)
+          {
+            register int *xr = &x;
+            return xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
+          }
+     
+

Not all targets support this option. + +

--param name=value
In some places, GCC uses various constants to control the amount of +optimization that is done. For example, GCC will not inline functions +that contain more that a certain number of instructions. You can +control some of these constants on the command-line using the +--param option. + +

The names of specific parameters, and the meaning of the values, are +tied to the internals of the compiler, and are subject to change +without notice in future releases. + +

In each case, the value is an integer. The allowable choices for +name are given in the following table: + +

+
salias-max-implicit-fields
The maximum number of fields in a variable without direct +structure accesses for which structure aliasing will consider trying +to track each field. The default is 5 + +
salias-max-array-elements
The maximum number of elements an array can have and its elements +still be tracked individually by structure aliasing. The default is 4 + +
sra-max-structure-size
The maximum structure size, in bytes, at which the scalar replacement +of aggregates (SRA) optimization will perform block copies. The +default value, 0, implies that GCC will select the most appropriate +size itself. + +
sra-field-structure-ratio
The threshold ratio (as a percentage) between instantiated fields and +the complete structure size. We say that if the ratio of the number +of bytes in instantiated fields to the number of bytes in the complete +structure exceeds this parameter, then block copies are not used. The +default is 75. + +
struct-reorg-cold-struct-ratio
The threshold ratio (as a percentage) between a structure frequency +and the frequency of the hottest structure in the program. This parameter +is used by struct-reorg optimization enabled by -fipa-struct-reorg. +We say that if the ratio of a structure frequency, calculated by profiling, +to the hottest structure frequency in the program is less than this +parameter, then structure reorganization is not applied to this structure. +The default is 10. + +
max-crossjump-edges
The maximum number of incoming edges to consider for crossjumping. +The algorithm used by -fcrossjumping is O(N^2) in +the number of edges incoming to each block. Increasing values mean +more aggressive optimization, making the compile time increase with +probably small improvement in executable size. + +
min-crossjump-insns
The minimum number of instructions which must be matched at the end +of two blocks before crossjumping will be performed on them. This +value is ignored in the case where all instructions in the block being +crossjumped from are matched. The default value is 5. + +
max-grow-copy-bb-insns
The maximum code size expansion factor when copying basic blocks +instead of jumping. The expansion is relative to a jump instruction. +The default value is 8. + +
max-goto-duplication-insns
The maximum number of instructions to duplicate to a block that jumps +to a computed goto. To avoid O(N^2) behavior in a number of +passes, GCC factors computed gotos early in the compilation process, +and unfactors them as late as possible. Only computed jumps at the +end of a basic blocks with no more than max-goto-duplication-insns are +unfactored. The default value is 8. + +
max-delay-slot-insn-search
The maximum number of instructions to consider when looking for an +instruction to fill a delay slot. If more than this arbitrary number of +instructions is searched, the time savings from filling the delay slot +will be minimal so stop searching. Increasing values mean more +aggressive optimization, making the compile time increase with probably +small improvement in executable run time. + +
max-delay-slot-live-search
When trying to fill delay slots, the maximum number of instructions to +consider when searching for a block with valid live register +information. Increasing this arbitrarily chosen value means more +aggressive optimization, increasing the compile time. This parameter +should be removed when the delay slot code is rewritten to maintain the +control-flow graph. + +
max-gcse-memory
The approximate maximum amount of memory that will be allocated in +order to perform the global common subexpression elimination +optimization. If more memory than specified is required, the +optimization will not be done. + +
max-gcse-passes
The maximum number of passes of GCSE to run. The default is 1. + +
max-pending-list-length
The maximum number of pending dependencies scheduling will allow +before flushing the current state and starting over. Large functions +with few branches or calls can create excessively large lists which +needlessly consume memory and resources. + +
max-inline-insns-single
Several parameters control the tree inliner used in gcc. +This number sets the maximum number of instructions (counted in GCC's +internal representation) in a single function that the tree inliner +will consider for inlining. This only affects functions declared +inline and methods implemented in a class declaration (C++). +The default value is 450. + +
max-inline-insns-auto
When you use -finline-functions (included in -O3), +a lot of functions that would otherwise not be considered for inlining +by the compiler will be investigated. To those functions, a different +(more restrictive) limit compared to functions declared inline can +be applied. +The default value is 90. + +
large-function-insns
The limit specifying really large functions. For functions larger than this +limit after inlining inlining is constrained by +--param large-function-growth. This parameter is useful primarily +to avoid extreme compilation time caused by non-linear algorithms used by the +backend. +This parameter is ignored when -funit-at-a-time is not used. +The default value is 2700. + +
large-function-growth
Specifies maximal growth of large function caused by inlining in percents. +This parameter is ignored when -funit-at-a-time is not used. +The default value is 100 which limits large function growth to 2.0 times +the original size. + +
large-unit-insns
The limit specifying large translation unit. Growth caused by inlining of +units larger than this limit is limited by --param inline-unit-growth. +For small units this might be too tight (consider unit consisting of function A +that is inline and B that just calls A three time. If B is small relative to +A, the growth of unit is 300\% and yet such inlining is very sane. For very +large units consisting of small inlineable functions however the overall unit +growth limit is needed to avoid exponential explosion of code size. Thus for +smaller units, the size is increased to --param large-unit-insns +before applying --param inline-unit-growth. The default is 10000 + +
inline-unit-growth
Specifies maximal overall growth of the compilation unit caused by inlining. +This parameter is ignored when -funit-at-a-time is not used. +The default value is 30 which limits unit growth to 1.3 times the original +size. + +
large-stack-frame
The limit specifying large stack frames. While inlining the algorithm is trying +to not grow past this limit too much. Default value is 256 bytes. + +
large-stack-frame-growth
Specifies maximal growth of large stack frames caused by inlining in percents. +The default value is 1000 which limits large stack frame growth to 11 times +the original size. + +
max-inline-insns-recursive
max-inline-insns-recursive-auto
Specifies maximum number of instructions out-of-line copy of self recursive inline +function can grow into by performing recursive inlining. + +

For functions declared inline --param max-inline-insns-recursive is +taken into account. For function not declared inline, recursive inlining +happens only when -finline-functions (included in -O3) is +enabled and --param max-inline-insns-recursive-auto is used. The +default value is 450. + +

max-inline-recursive-depth
max-inline-recursive-depth-auto
Specifies maximum recursion depth used by the recursive inlining. + +

For functions declared inline --param max-inline-recursive-depth is +taken into account. For function not declared inline, recursive inlining +happens only when -finline-functions (included in -O3) is +enabled and --param max-inline-recursive-depth-auto is used. The +default value is 8. + +

min-inline-recursive-probability
Recursive inlining is profitable only for function having deep recursion +in average and can hurt for function having little recursion depth by +increasing the prologue size or complexity of function body to other +optimizers. + +

When profile feedback is available (see -fprofile-generate) the actual +recursion depth can be guessed from probability that function will recurse via +given call expression. This parameter limits inlining only to call expression +whose probability exceeds given threshold (in percents). The default value is +10. + +

inline-call-cost
Specify cost of call instruction relative to simple arithmetics operations +(having cost of 1). Increasing this cost disqualifies inlining of non-leaf +functions and at the same time increases size of leaf function that is believed to +reduce function size by being inlined. In effect it increases amount of +inlining for code having large abstraction penalty (many functions that just +pass the arguments to other functions) and decrease inlining for code with low +abstraction penalty. The default value is 12. + +
min-vect-loop-bound
The minimum number of iterations under which a loop will not get vectorized +when -ftree-vectorize is used. The number of iterations after +vectorization needs to be greater than the value specified by this option +to allow vectorization. The default value is 0. + +
max-unrolled-insns
The maximum number of instructions that a loop should have if that loop +is unrolled, and if the loop is unrolled, it determines how many times +the loop code is unrolled. + +
max-average-unrolled-insns
The maximum number of instructions biased by probabilities of their execution +that a loop should have if that loop is unrolled, and if the loop is unrolled, +it determines how many times the loop code is unrolled. + +
max-unroll-times
The maximum number of unrollings of a single loop. + +
max-peeled-insns
The maximum number of instructions that a loop should have if that loop +is peeled, and if the loop is peeled, it determines how many times +the loop code is peeled. + +
max-peel-times
The maximum number of peelings of a single loop. + +
max-completely-peeled-insns
The maximum number of insns of a completely peeled loop. + +
max-completely-peel-times
The maximum number of iterations of a loop to be suitable for complete peeling. + +
max-unswitch-insns
The maximum number of insns of an unswitched loop. + +
max-unswitch-level
The maximum number of branches unswitched in a single loop. + +
lim-expensive
The minimum cost of an expensive expression in the loop invariant motion. + +
iv-consider-all-candidates-bound
Bound on number of candidates for induction variables below that +all candidates are considered for each use in induction variable +optimizations. Only the most relevant candidates are considered +if there are more candidates, to avoid quadratic time complexity. + +
iv-max-considered-uses
The induction variable optimizations give up on loops that contain more +induction variable uses. + +
iv-always-prune-cand-set-bound
If number of candidates in the set is smaller than this value, +we always try to remove unnecessary ivs from the set during its +optimization when a new iv is added to the set. + +
scev-max-expr-size
Bound on size of expressions used in the scalar evolutions analyzer. +Large expressions slow the analyzer. + +
omega-max-vars
The maximum number of variables in an Omega constraint system. +The default value is 128. + +
omega-max-geqs
The maximum number of inequalities in an Omega constraint system. +The default value is 256. + +
omega-max-eqs
The maximum number of equalities in an Omega constraint system. +The default value is 128. + +
omega-max-wild-cards
The maximum number of wildcard variables that the Omega solver will +be able to insert. The default value is 18. + +
omega-hash-table-size
The size of the hash table in the Omega solver. The default value is +550. + +
omega-max-keys
The maximal number of keys used by the Omega solver. The default +value is 500. + +
omega-eliminate-redundant-constraints
When set to 1, use expensive methods to eliminate all redundant +constraints. The default value is 0. + +
vect-max-version-for-alignment-checks
The maximum number of runtime checks that can be performed when +doing loop versioning for alignment in the vectorizer. See option +ftree-vect-loop-version for more information. + +
vect-max-version-for-alias-checks
The maximum number of runtime checks that can be performed when +doing loop versioning for alias in the vectorizer. See option +ftree-vect-loop-version for more information. + +
max-iterations-to-track
+The maximum number of iterations of a loop the brute force algorithm +for analysis of # of iterations of the loop tries to evaluate. + +
hot-bb-count-fraction
Select fraction of the maximal count of repetitions of basic block in program +given basic block needs to have to be considered hot. + +
hot-bb-frequency-fraction
Select fraction of the maximal frequency of executions of basic block in +function given basic block needs to have to be considered hot + +
max-predicted-iterations
The maximum number of loop iterations we predict statically. This is useful +in cases where function contain single loop with known bound and other loop +with unknown. We predict the known number of iterations correctly, while +the unknown number of iterations average to roughly 10. This means that the +loop without bounds would appear artificially cold relative to the other one. + +
align-threshold
+Select fraction of the maximal frequency of executions of basic block in +function given basic block will get aligned. + +
align-loop-iterations
+A loop expected to iterate at lest the selected number of iterations will get +aligned. + +
tracer-dynamic-coverage
tracer-dynamic-coverage-feedback
+This value is used to limit superblock formation once the given percentage of +executed instructions is covered. This limits unnecessary code size +expansion. + +

The tracer-dynamic-coverage-feedback is used only when profile +feedback is available. The real profiles (as opposed to statically estimated +ones) are much less balanced allowing the threshold to be larger value. + +

tracer-max-code-growth
Stop tail duplication once code growth has reached given percentage. This is +rather hokey argument, as most of the duplicates will be eliminated later in +cross jumping, so it may be set to much higher values than is the desired code +growth. + +
tracer-min-branch-ratio
+Stop reverse growth when the reverse probability of best edge is less than this +threshold (in percent). + +
tracer-min-branch-ratio
tracer-min-branch-ratio-feedback
+Stop forward growth if the best edge do have probability lower than this +threshold. + +

Similarly to tracer-dynamic-coverage two values are present, one for +compilation for profile feedback and one for compilation without. The value +for compilation with profile feedback needs to be more conservative (higher) in +order to make tracer effective. + +

max-cse-path-length
+Maximum number of basic blocks on path that cse considers. The default is 10. + +
max-cse-insns
The maximum instructions CSE process before flushing. The default is 1000. + +
max-aliased-vops
+Maximum number of virtual operands per function allowed to represent +aliases before triggering the alias partitioning heuristic. Alias +partitioning reduces compile times and memory consumption needed for +aliasing at the expense of precision loss in alias information. The +default value for this parameter is 100 for -O1, 500 for -O2 and 1000 +for -O3. + +

Notice that if a function contains more memory statements than the +value of this parameter, it is not really possible to achieve this +reduction. In this case, the compiler will use the number of memory +statements as the value for max-aliased-vops. + +

avg-aliased-vops
+Average number of virtual operands per statement allowed to represent +aliases before triggering the alias partitioning heuristic. This +works in conjunction with max-aliased-vops. If a function +contains more than max-aliased-vops virtual operators, then +memory symbols will be grouped into memory partitions until either the +total number of virtual operators is below max-aliased-vops +or the average number of virtual operators per memory statement is +below avg-aliased-vops. The default value for this parameter +is 1 for -O1 and -O2, and 3 for -O3. + +
ggc-min-expand
+GCC uses a garbage collector to manage its own memory allocation. This +parameter specifies the minimum percentage by which the garbage +collector's heap should be allowed to expand between collections. +Tuning this may improve compilation speed; it has no effect on code +generation. + +

The default is 30% + 70% * (RAM/1GB) with an upper bound of 100% when +RAM >= 1GB. If getrlimit is available, the notion of "RAM" is +the smallest of actual RAM and RLIMIT_DATA or RLIMIT_AS. If +GCC is not able to calculate RAM on a particular platform, the lower +bound of 30% is used. Setting this parameter and +ggc-min-heapsize to zero causes a full collection to occur at +every opportunity. This is extremely slow, but can be useful for +debugging. + +

ggc-min-heapsize
+Minimum size of the garbage collector's heap before it begins bothering +to collect garbage. The first collection occurs after the heap expands +by ggc-min-expand% beyond ggc-min-heapsize. Again, +tuning this may improve compilation speed, and has no effect on code +generation. + +

The default is the smaller of RAM/8, RLIMIT_RSS, or a limit which +tries to ensure that RLIMIT_DATA or RLIMIT_AS are not exceeded, but +with a lower bound of 4096 (four megabytes) and an upper bound of +131072 (128 megabytes). If GCC is not able to calculate RAM on a +particular platform, the lower bound is used. Setting this parameter +very large effectively disables garbage collection. Setting this +parameter and ggc-min-expand to zero causes a full collection +to occur at every opportunity. + +

max-reload-search-insns
The maximum number of instruction reload should look backward for equivalent +register. Increasing values mean more aggressive optimization, making the +compile time increase with probably slightly better performance. The default +value is 100. + +
max-cselib-memory-locations
The maximum number of memory locations cselib should take into account. +Increasing values mean more aggressive optimization, making the compile time +increase with probably slightly better performance. The default value is 500. + +
max-flow-memory-locations
Similar as max-cselib-memory-locations but for dataflow liveness. +The default value is 100. + +
reorder-blocks-duplicate
reorder-blocks-duplicate-feedback
+Used by basic block reordering pass to decide whether to use unconditional +branch or duplicate the code on its destination. Code is duplicated when its +estimated size is smaller than this value multiplied by the estimated size of +unconditional jump in the hot spots of the program. + +

The reorder-block-duplicate-feedback is used only when profile +feedback is available and may be set to higher values than +reorder-block-duplicate since information about the hot spots is more +accurate. + +

max-sched-ready-insns
The maximum number of instructions ready to be issued the scheduler should +consider at any given time during the first scheduling pass. Increasing +values mean more thorough searches, making the compilation time increase +with probably little benefit. The default value is 100. + +
max-sched-region-blocks
The maximum number of blocks in a region to be considered for +interblock scheduling. The default value is 10. + +
max-sched-region-insns
The maximum number of insns in a region to be considered for +interblock scheduling. The default value is 100. + +
min-spec-prob
The minimum probability (in percents) of reaching a source block +for interblock speculative scheduling. The default value is 40. + +
max-sched-extend-regions-iters
The maximum number of iterations through CFG to extend regions. +0 - disable region extension, +N - do at most N iterations. +The default value is 0. + +
max-sched-insn-conflict-delay
The maximum conflict delay for an insn to be considered for speculative motion. +The default value is 3. + +
sched-spec-prob-cutoff
The minimal probability of speculation success (in percents), so that +speculative insn will be scheduled. +The default value is 40. + +
max-last-value-rtl
+The maximum size measured as number of RTLs that can be recorded in an expression +in combiner for a pseudo register as last known value of that register. The default +is 10000. + +
integer-share-limit
Small integer constants can use a shared data structure, reducing the +compiler's memory usage and increasing its speed. This sets the maximum +value of a shared integer constant. The default value is 256. + +
min-virtual-mappings
Specifies the minimum number of virtual mappings in the incremental +SSA updater that should be registered to trigger the virtual mappings +heuristic defined by virtual-mappings-ratio. The default value is +100. + +
virtual-mappings-ratio
If the number of virtual mappings is virtual-mappings-ratio bigger +than the number of virtual symbols to be updated, then the incremental +SSA updater switches to a full update for those symbols. The default +ratio is 3. + +
ssp-buffer-size
The minimum size of buffers (i.e. arrays) that will receive stack smashing +protection when -fstack-protection is used. + +
max-jump-thread-duplication-stmts
Maximum number of statements allowed in a block that needs to be +duplicated when threading jumps. + +
max-fields-for-field-sensitive
Maximum number of fields in a structure we will treat in +a field sensitive manner during pointer analysis. The default is zero +for -O0, and -O1 and 100 for -Os, -O2, and -O3. + +
prefetch-latency
Estimate on average number of instructions that are executed before +prefetch finishes. The distance we prefetch ahead is proportional +to this constant. Increasing this number may also lead to less +streams being prefetched (see simultaneous-prefetches). + +
simultaneous-prefetches
Maximum number of prefetches that can run at the same time. + +
l1-cache-line-size
The size of cache line in L1 cache, in bytes. + +
l1-cache-size
The size of L1 cache, in kilobytes. + +
l2-cache-size
The size of L2 cache, in kilobytes. + +
use-canonical-types
Whether the compiler should use the “canonical” type system. By +default, this should always be 1, which uses a more efficient internal +mechanism for comparing types in C++ and Objective-C++. However, if +bugs in the canonical type system are causing compilation failures, +set this value to 0 to disable canonical types. + +
max-partial-antic-length
Maximum length of the partial antic set computed during the tree +partial redundancy elimination optimization (-ftree-pre) when +optimizing at -O3 and above. For some sorts of source code +the enhanced partial redundancy elimination optimization can run away, +consuming all of the memory available on the host machine. This +parameter sets a limit on the length of the sets that are computed, +which prevents the runaway behaviour. Setting a value of 0 for +this paramter will allow an unlimited set length. + +
sccvn-max-scc-size
Maximum size of a strongly connected component (SCC) during SCCVN +processing. If this limit is hit, SCCVN processing for the whole +function will not be done and optimizations depending on it will +be disabled. The default maximum SCC size is 10000. + +
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Option-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Option-Index.html new file mode 100644 index 0000000..3b62699 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Option-Index.html @@ -0,0 +1,1801 @@ + + +Option Index - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Contributors, +Up: Top +



+
+ +

Option Index

+ +

GCC's command line options are indexed here without any initial - +or --. Where an option has both positive and negative forms +(such as -foption and -fno-option), +relevant entries in the manual are indexed under the most appropriate +form; it may sometimes be useful to look up both forms. + +

+ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Option-Summary.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Option-Summary.html new file mode 100644 index 0000000..26f7f03 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Option-Summary.html @@ -0,0 +1,735 @@ + + +Option Summary - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Up: Invoking GCC +



+
+ +

3.1 Option Summary

+ +

Here is a summary of all the options, grouped by type. Explanations are +in the following sections. + +

+
Overall Options
See Options Controlling the Kind of Output. +
          -c  -S  -E  -o file  -combine  -pipe  -pass-exit-codes  
+          -x language  -v  -###  --help[=class]  --target-help  
+          --version @file
+     
+
C Language Options
See Options Controlling C Dialect. +
          -ansi  -std=standard  -fgnu89-inline 
+          -aux-info filename 
+          -fno-asm  -fno-builtin  -fno-builtin-function 
+          -fhosted  -ffreestanding -fopenmp -fms-extensions 
+          -trigraphs  -no-integrated-cpp  -traditional  -traditional-cpp 
+          -fallow-single-precision  -fcond-mismatch -flax-vector-conversions 
+          -fsigned-bitfields  -fsigned-char 
+          -funsigned-bitfields  -funsigned-char
+     
+
C++ Language Options
See Options Controlling C++ Dialect. +
          -fabi-version=n  -fno-access-control  -fcheck-new 
+          -fconserve-space  -ffriend-injection 
+          -fno-elide-constructors 
+          -fno-enforce-eh-specs 
+          -ffor-scope  -fno-for-scope  -fno-gnu-keywords 
+          -fno-implicit-templates 
+          -fno-implicit-inline-templates 
+          -fno-implement-inlines  -fms-extensions 
+          -fno-nonansi-builtins  -fno-operator-names 
+          -fno-optional-diags  -fpermissive 
+          -frepo  -fno-rtti  -fstats  -ftemplate-depth-n 
+          -fno-threadsafe-statics -fuse-cxa-atexit  -fno-weak  -nostdinc++ 
+          -fno-default-inline  -fvisibility-inlines-hidden 
+          -fvisibility-ms-compat 
+          -Wabi  -Wctor-dtor-privacy 
+          -Wnon-virtual-dtor  -Wreorder 
+          -Weffc++  -Wno-deprecated  -Wstrict-null-sentinel 
+          -Wno-non-template-friend  -Wold-style-cast 
+          -Woverloaded-virtual  -Wno-pmf-conversions 
+          -Wsign-promo
+     
+
Objective-C and Objective-C++ Language Options
See Options Controlling Objective-C and Objective-C++ Dialects. +
          -fconstant-string-class=class-name 
+          -fgnu-runtime  -fnext-runtime 
+          -fno-nil-receivers 
+          -fobjc-call-cxx-cdtors 
+          -fobjc-direct-dispatch 
+          -fobjc-exceptions 
+          -fobjc-gc 
+          -freplace-objc-classes 
+          -fzero-link 
+          -gen-decls 
+          -Wassign-intercept 
+          -Wno-protocol  -Wselector 
+          -Wstrict-selector-match 
+          -Wundeclared-selector
+     
+
Language Independent Options
See Options to Control Diagnostic Messages Formatting. +
          -fmessage-length=n  
+          -fdiagnostics-show-location=[once|every-line]  
+          -fdiagnostics-show-option
+     
+
Warning Options
See Options to Request or Suppress Warnings. +
          -fsyntax-only  -pedantic  -pedantic-errors 
+          -w  -Wextra  -Wall  -Waddress  -Waggregate-return  -Warray-bounds 
+          -Wno-attributes -Wc++-compat -Wc++0x-compat -Wcast-align  -Wcast-qual  
+          -Wchar-subscripts -Wclobbered  -Wcomment 
+          -Wconversion  -Wcoverage-mismatch  -Wno-deprecated-declarations 
+          -Wdisabled-optimization  -Wno-div-by-zero  
+          -Wempty-body  -Wno-endif-labels 
+          -Werror  -Werror=* 
+          -Wfatal-errors  -Wfloat-equal  -Wformat  -Wformat=2 
+          -Wno-format-extra-args -Wformat-nonliteral 
+          -Wformat-security  -Wformat-y2k -Wignored-qualifiers 
+          -Wimplicit  -Wimplicit-function-declaration  -Wimplicit-int 
+          -Wimport  -Wno-import  -Winit-self  -Winline 
+          -Wno-int-to-pointer-cast -Wno-invalid-offsetof 
+          -Winvalid-pch -Wlarger-than-len  -Wunsafe-loop-optimizations 
+          -Wlogical-op -Wlong-long 
+          -Wmain  -Wmissing-braces  -Wmissing-field-initializers 
+          -Wmissing-format-attribute  -Wmissing-include-dirs 
+          -Wmissing-noreturn 
+          -Wno-multichar  -Wnonnull  -Wno-overflow 
+          -Woverlength-strings  -Wpacked  -Wpadded 
+          -Wparentheses  -Wpointer-arith  -Wno-pointer-to-int-cast 
+          -Wredundant-decls 
+          -Wreturn-type  -Wsequence-point  -Wshadow 
+          -Wsign-compare  -Wsign-conversion  -Wstack-protector 
+          -Wstrict-aliasing -Wstrict-aliasing=n 
+          -Wstrict-overflow -Wstrict-overflow=n 
+          -Wswitch  -Wswitch-default  -Wswitch-enum 
+          -Wsystem-headers  -Wtrigraphs  -Wtype-limits  -Wundef  -Wuninitialized 
+          -Wunknown-pragmas  -Wno-pragmas -Wunreachable-code 
+          -Wunused  -Wunused-function  -Wunused-label  -Wunused-parameter 
+          -Wunused-value  -Wunused-variable 
+          -Wvariadic-macros -Wvla 
+          -Wvolatile-register-var  -Wwrite-strings
+     
+
C and Objective-C-only Warning Options
+
          -Wbad-function-cast  -Wmissing-declarations 
+          -Wmissing-parameter-type  -Wmissing-prototypes  -Wnested-externs 
+          -Wold-style-declaration  -Wold-style-definition 
+          -Wstrict-prototypes  -Wtraditional  -Wtraditional-conversion 
+          -Wdeclaration-after-statement -Wpointer-sign
+     
+
Debugging Options
See Options for Debugging Your Program or GCC. +
          -dletters  -dumpspecs  -dumpmachine  -dumpversion 
+          -fdbg-cnt-list -fdbg-cnt=counter-value-list 
+          -fdump-noaddr -fdump-unnumbered  -fdump-translation-unit[-n] 
+          -fdump-class-hierarchy[-n] 
+          -fdump-ipa-all -fdump-ipa-cgraph -fdump-ipa-inline 
+          -fdump-tree-all 
+          -fdump-tree-original[-n]  
+          -fdump-tree-optimized[-n] 
+          -fdump-tree-cfg -fdump-tree-vcg -fdump-tree-alias 
+          -fdump-tree-ch 
+          -fdump-tree-ssa[-n] -fdump-tree-pre[-n] 
+          -fdump-tree-ccp[-n] -fdump-tree-dce[-n] 
+          -fdump-tree-gimple[-raw] -fdump-tree-mudflap[-n] 
+          -fdump-tree-dom[-n] 
+          -fdump-tree-dse[-n] 
+          -fdump-tree-phiopt[-n] 
+          -fdump-tree-forwprop[-n] 
+          -fdump-tree-copyrename[-n] 
+          -fdump-tree-nrv -fdump-tree-vect 
+          -fdump-tree-sink 
+          -fdump-tree-sra[-n] 
+          -fdump-tree-salias 
+          -fdump-tree-fre[-n] 
+          -fdump-tree-vrp[-n] 
+          -ftree-vectorizer-verbose=n 
+          -fdump-tree-storeccp[-n] 
+          -feliminate-dwarf2-dups -feliminate-unused-debug-types 
+          -feliminate-unused-debug-symbols -femit-class-debug-always 
+          -fmem-report -fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arcs 
+          -frandom-seed=string -fsched-verbose=n 
+          -ftest-coverage  -ftime-report -fvar-tracking 
+          -g  -glevel  -gcoff -gdwarf-2 
+          -ggdb  -gstabs  -gstabs+  -gvms  -gxcoff  -gxcoff+ 
+          -fno-merge-debug-strings -fdebug-prefix-map=old=new 
+          -femit-struct-debug-baseonly -femit-struct-debug-reduced 
+          -femit-struct-debug-detailed[=spec-list] 
+          -p  -pg  -print-file-name=library  -print-libgcc-file-name 
+          -print-multi-directory  -print-multi-lib 
+          -print-prog-name=program  -print-search-dirs  -Q 
+          -print-sysroot-headers-suffix 
+          -save-temps  -time
+     
+
Optimization Options
See Options that Control Optimization. +
          -falign-functions[=n] -falign-jumps[=n] 
+          -falign-labels[=n] -falign-loops[=n] -fassociative-math 
+          -fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize 
+          -fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves 
+          -fcheck-data-deps -fcprop-registers -fcrossjumping -fcse-follow-jumps 
+          -fcse-skip-blocks -fcx-limited-range -fdata-sections -fdce -fdce 
+          -fdelayed-branch -fdelete-null-pointer-checks -fdse -fdse 
+          -fearly-inlining -fexpensive-optimizations -ffast-math 
+          -ffinite-math-only -ffloat-store -fforward-propagate 
+          -ffunction-sections -fgcse -fgcse-after-reload -fgcse-las -fgcse-lm 
+          -fgcse-sm -fif-conversion -fif-conversion2 -finline-functions 
+          -finline-functions-called-once -finline-limit=n 
+          -finline-small-functions -fipa-cp -fipa-marix-reorg -fipa-pta 
+          -fipa-pure-const -fipa-reference -fipa-struct-reorg 
+          -fipa-type-escape -fivopts -fkeep-inline-functions -fkeep-static-consts 
+          -fmerge-all-constants -fmerge-constants -fmodulo-sched 
+          -fmodulo-sched-allow-regmoves -fmove-loop-invariants -fmudflap 
+          -fmudflapir -fmudflapth -fno-branch-count-reg -fno-default-inline 
+          -fno-defer-pop -fno-function-cse -fno-guess-branch-probability 
+          -fno-inline -fno-math-errno -fno-peephole -fno-peephole2 
+          -fno-sched-interblock -fno-sched-spec -fno-signed-zeros 
+          -fno-toplevel-reorder -fno-trapping-math -fno-zero-initialized-in-bss 
+          -fomit-frame-pointer -foptimize-register-move -foptimize-sibling-calls 
+          -fpeel-loops -fpredictive-commoning -fprefetch-loop-arrays 
+          -fprofile-generate -fprofile-use -fprofile-values -freciprocal-math 
+          -fregmove -frename-registers -freorder-blocks 
+          -freorder-blocks-and-partition -freorder-functions 
+          -frerun-cse-after-loop -freschedule-modulo-scheduled-loops 
+          -frounding-math -frtl-abstract-sequences -fsched2-use-superblocks 
+          -fsched2-use-traces -fsched-spec-load -fsched-spec-load-dangerous 
+          -fsched-stalled-insns-dep[=n] -fsched-stalled-insns[=n] 
+          -fschedule-insns -fschedule-insns2 -fsection-anchors -fsee 
+          -fsignaling-nans -fsingle-precision-constant -fsplit-ivs-in-unroller 
+          -fsplit-wide-types -fstack-protector -fstack-protector-all 
+          -fstrict-aliasing -fstrict-overflow -fthread-jumps -ftracer -ftree-ccp 
+          -ftree-ch -ftree-copy-prop -ftree-copyrename -ftree-dce 
+          -ftree-dominator-opts -ftree-dse -ftree-fre -ftree-loop-im 
+          -ftree-loop-ivcanon -ftree-loop-linear -ftree-loop-optimize 
+          -ftree-parallelize-loops=n -ftree-pre -ftree-reassoc -ftree-salias 
+          -ftree-sink -ftree-sra -ftree-store-ccp -ftree-ter 
+          -ftree-vect-loop-version -ftree-vectorize -ftree-vrp -funit-at-a-time 
+          -funroll-all-loops -funroll-loops -funsafe-loop-optimizations 
+          -funsafe-math-optimizations -funswitch-loops 
+          -fvariable-expansion-in-unroller -fvect-cost-model -fvpt -fweb 
+          -fwhole-program 
+          --param name=value
+          -O  -O0  -O1  -O2  -O3  -Os
+     
+
Preprocessor Options
See Options Controlling the Preprocessor. +
          -Aquestion=answer 
+          -A-question[=answer] 
+          -C  -dD  -dI  -dM  -dN 
+          -Dmacro[=defn]  -E  -H 
+          -idirafter dir 
+          -include file  -imacros file 
+          -iprefix file  -iwithprefix dir 
+          -iwithprefixbefore dir  -isystem dir 
+          -imultilib dir -isysroot dir 
+          -M  -MM  -MF  -MG  -MP  -MQ  -MT  -nostdinc  
+          -P  -fworking-directory  -remap 
+          -trigraphs  -undef  -Umacro  -Wp,option 
+          -Xpreprocessor option
+     
+
Assembler Option
See Passing Options to the Assembler. +
          -Wa,option  -Xassembler option
+     
+
Linker Options
See Options for Linking. +
          object-file-name  -llibrary 
+          -nostartfiles  -nodefaultlibs  -nostdlib -pie -rdynamic 
+          -s  -static  -static-libgcc  -shared  -shared-libgcc  -symbolic 
+          -Wl,option  -Xlinker option 
+          -u symbol
+     
+
Directory Options
See Options for Directory Search. +
          -Bprefix  -Idir  -iquotedir  -Ldir
+          -specs=file  -I- --sysroot=dir
+     
+
Target Options
+See Target Options. +
          -V version  -b machine
+     
+
Machine Dependent Options
See Hardware Models and Configurations. + + + + +

ARC Options +

          -EB  -EL 
+          -mmangle-cpu  -mcpu=cpu  -mtext=text-section 
+          -mdata=data-section  -mrodata=readonly-data-section
+     
+

ARM Options +

          -mapcs-frame  -mno-apcs-frame 
+          -mabi=name 
+          -mapcs-stack-check  -mno-apcs-stack-check 
+          -mapcs-float  -mno-apcs-float 
+          -mapcs-reentrant  -mno-apcs-reentrant 
+          -msched-prolog  -mno-sched-prolog 
+          -mlittle-endian  -mbig-endian  -mwords-little-endian 
+          -mfloat-abi=name  -msoft-float  -mhard-float  -mfpe 
+          -mthumb-interwork  -mno-thumb-interwork 
+          -mcpu=name  -march=name  -mfpu=name  
+          -mstructure-size-boundary=n 
+          -mabort-on-noreturn 
+          -mlong-calls  -mno-long-calls 
+          -msingle-pic-base  -mno-single-pic-base 
+          -mpic-register=reg 
+          -mnop-fun-dllimport 
+          -mcirrus-fix-invalid-insns -mno-cirrus-fix-invalid-insns 
+          -mpoke-function-name 
+          -mthumb  -marm 
+          -mtpcs-frame  -mtpcs-leaf-frame 
+          -mcaller-super-interworking  -mcallee-super-interworking 
+          -mtp=name
+     
+

AVR Options +

          -mmcu=mcu  -msize  -minit-stack=n  -mno-interrupts 
+          -mcall-prologues  -mno-tablejump  -mtiny-stack  -mint8
+     
+

Blackfin Options +

          -mcpu=cpu[-sirevision] 
+          -msim -momit-leaf-frame-pointer  -mno-omit-leaf-frame-pointer 
+          -mspecld-anomaly  -mno-specld-anomaly  -mcsync-anomaly  -mno-csync-anomaly 
+          -mlow-64k -mno-low64k  -mstack-check-l1  -mid-shared-library 
+          -mno-id-shared-library  -mshared-library-id=n 
+          -mleaf-id-shared-library  -mno-leaf-id-shared-library 
+          -msep-data  -mno-sep-data  -mlong-calls  -mno-long-calls 
+          -mfast-fp -minline-plt
+     
+

CRIS Options +

          -mcpu=cpu  -march=cpu  -mtune=cpu 
+          -mmax-stack-frame=n  -melinux-stacksize=n 
+          -metrax4  -metrax100  -mpdebug  -mcc-init  -mno-side-effects 
+          -mstack-align  -mdata-align  -mconst-align 
+          -m32-bit  -m16-bit  -m8-bit  -mno-prologue-epilogue  -mno-gotplt 
+          -melf  -maout  -melinux  -mlinux  -sim  -sim2 
+          -mmul-bug-workaround  -mno-mul-bug-workaround
+     
+

CRX Options +

          -mmac -mpush-args
+     
+

Darwin Options +

          -all_load  -allowable_client  -arch  -arch_errors_fatal 
+          -arch_only  -bind_at_load  -bundle  -bundle_loader 
+          -client_name  -compatibility_version  -current_version 
+          -dead_strip 
+          -dependency-file  -dylib_file  -dylinker_install_name 
+          -dynamic  -dynamiclib  -exported_symbols_list 
+          -filelist  -flat_namespace  -force_cpusubtype_ALL 
+          -force_flat_namespace  -headerpad_max_install_names 
+          -iframework 
+          -image_base  -init  -install_name  -keep_private_externs 
+          -multi_module  -multiply_defined  -multiply_defined_unused 
+          -noall_load   -no_dead_strip_inits_and_terms 
+          -nofixprebinding -nomultidefs  -noprebind  -noseglinkedit 
+          -pagezero_size  -prebind  -prebind_all_twolevel_modules 
+          -private_bundle  -read_only_relocs  -sectalign 
+          -sectobjectsymbols  -whyload  -seg1addr 
+          -sectcreate  -sectobjectsymbols  -sectorder 
+          -segaddr -segs_read_only_addr -segs_read_write_addr 
+          -seg_addr_table  -seg_addr_table_filename  -seglinkedit 
+          -segprot  -segs_read_only_addr  -segs_read_write_addr 
+          -single_module  -static  -sub_library  -sub_umbrella 
+          -twolevel_namespace  -umbrella  -undefined 
+          -unexported_symbols_list  -weak_reference_mismatches 
+          -whatsloaded -F -gused -gfull -mmacosx-version-min=version 
+          -mkernel -mone-byte-bool
+     
+

DEC Alpha Options +

          -mno-fp-regs  -msoft-float  -malpha-as  -mgas 
+          -mieee  -mieee-with-inexact  -mieee-conformant 
+          -mfp-trap-mode=mode  -mfp-rounding-mode=mode 
+          -mtrap-precision=mode  -mbuild-constants 
+          -mcpu=cpu-type  -mtune=cpu-type 
+          -mbwx  -mmax  -mfix  -mcix 
+          -mfloat-vax  -mfloat-ieee 
+          -mexplicit-relocs  -msmall-data  -mlarge-data 
+          -msmall-text  -mlarge-text 
+          -mmemory-latency=time
+     
+

DEC Alpha/VMS Options +

          -mvms-return-codes
+     
+

FRV Options +

          -mgpr-32  -mgpr-64  -mfpr-32  -mfpr-64 
+          -mhard-float  -msoft-float 
+          -malloc-cc  -mfixed-cc  -mdword  -mno-dword 
+          -mdouble  -mno-double 
+          -mmedia  -mno-media  -mmuladd  -mno-muladd 
+          -mfdpic  -minline-plt -mgprel-ro  -multilib-library-pic 
+          -mlinked-fp  -mlong-calls  -malign-labels 
+          -mlibrary-pic  -macc-4  -macc-8 
+          -mpack  -mno-pack  -mno-eflags  -mcond-move  -mno-cond-move 
+          -moptimize-membar -mno-optimize-membar 
+          -mscc  -mno-scc  -mcond-exec  -mno-cond-exec 
+          -mvliw-branch  -mno-vliw-branch 
+          -mmulti-cond-exec  -mno-multi-cond-exec  -mnested-cond-exec 
+          -mno-nested-cond-exec  -mtomcat-stats 
+          -mTLS -mtls 
+          -mcpu=cpu
+     
+

GNU/Linux Options +

          -muclibc
+     
+

H8/300 Options +

          -mrelax  -mh  -ms  -mn  -mint32  -malign-300
+     
+

HPPA Options +

          -march=architecture-type 
+          -mbig-switch  -mdisable-fpregs  -mdisable-indexing 
+          -mfast-indirect-calls  -mgas  -mgnu-ld   -mhp-ld 
+          -mfixed-range=register-range 
+          -mjump-in-delay -mlinker-opt -mlong-calls 
+          -mlong-load-store  -mno-big-switch  -mno-disable-fpregs 
+          -mno-disable-indexing  -mno-fast-indirect-calls  -mno-gas 
+          -mno-jump-in-delay  -mno-long-load-store 
+          -mno-portable-runtime  -mno-soft-float 
+          -mno-space-regs  -msoft-float  -mpa-risc-1-0 
+          -mpa-risc-1-1  -mpa-risc-2-0  -mportable-runtime 
+          -mschedule=cpu-type  -mspace-regs  -msio  -mwsio 
+          -munix=unix-std  -nolibdld  -static  -threads
+     
+

i386 and x86-64 Options +

          -mtune=cpu-type  -march=cpu-type 
+          -mfpmath=unit 
+          -masm=dialect  -mno-fancy-math-387 
+          -mno-fp-ret-in-387  -msoft-float 
+          -mno-wide-multiply  -mrtd  -malign-double 
+          -mpreferred-stack-boundary=num -mcld -mcx16 -msahf -mrecip 
+          -mmmx  -msse  -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 
+          -msse4a -m3dnow -mpopcnt -mabm -msse5 
+          -mthreads  -mno-align-stringops  -minline-all-stringops 
+          -mpush-args  -maccumulate-outgoing-args  -m128bit-long-double 
+          -m96bit-long-double  -mregparm=num  -msseregparm 
+          -mveclibabi=type -mpc32 -mpc64 -mpc80 -mstackrealign 
+          -momit-leaf-frame-pointer  -mno-red-zone -mno-tls-direct-seg-refs 
+          -mcmodel=code-model 
+          -m32  -m64 -mlarge-data-threshold=num 
+          -mfused-madd -mno-fused-madd
+     
+

IA-64 Options +

          -mbig-endian  -mlittle-endian  -mgnu-as  -mgnu-ld  -mno-pic 
+          -mvolatile-asm-stop  -mregister-names  -mno-sdata 
+          -mconstant-gp  -mauto-pic  -minline-float-divide-min-latency 
+          -minline-float-divide-max-throughput 
+          -minline-int-divide-min-latency 
+          -minline-int-divide-max-throughput  
+          -minline-sqrt-min-latency -minline-sqrt-max-throughput 
+          -mno-dwarf2-asm -mearly-stop-bits 
+          -mfixed-range=register-range -mtls-size=tls-size 
+          -mtune=cpu-type -mt -pthread -milp32 -mlp64 
+          -mno-sched-br-data-spec -msched-ar-data-spec -mno-sched-control-spec 
+          -msched-br-in-data-spec -msched-ar-in-data-spec -msched-in-control-spec 
+          -msched-ldc -mno-sched-control-ldc -mno-sched-spec-verbose 
+          -mno-sched-prefer-non-data-spec-insns 
+          -mno-sched-prefer-non-control-spec-insns 
+          -mno-sched-count-spec-in-critical-path
+     
+

M32R/D Options +

          -m32r2 -m32rx -m32r 
+          -mdebug 
+          -malign-loops -mno-align-loops 
+          -missue-rate=number 
+          -mbranch-cost=number 
+          -mmodel=code-size-model-type 
+          -msdata=sdata-type 
+          -mno-flush-func -mflush-func=name 
+          -mno-flush-trap -mflush-trap=number 
+          -G num
+     
+

M32C Options +

          -mcpu=cpu -msim -memregs=number
+     
+

M680x0 Options +

          -march=arch  -mcpu=cpu  -mtune=tune
+          -m68000  -m68020  -m68020-40  -m68020-60  -m68030  -m68040 
+          -m68060  -mcpu32  -m5200  -m5206e  -m528x  -m5307  -m5407 
+          -mcfv4e  -mbitfield  -mno-bitfield  -mc68000  -mc68020 
+          -mnobitfield  -mrtd  -mno-rtd  -mdiv  -mno-div  -mshort 
+          -mno-short  -mhard-float  -m68881  -msoft-float  -mpcrel 
+          -malign-int  -mstrict-align  -msep-data  -mno-sep-data 
+          -mshared-library-id=n  -mid-shared-library  -mno-id-shared-library
+     
+

M68hc1x Options +

          -m6811  -m6812  -m68hc11  -m68hc12   -m68hcs12 
+          -mauto-incdec  -minmax  -mlong-calls  -mshort 
+          -msoft-reg-count=count
+     
+

MCore Options +

          -mhardlit  -mno-hardlit  -mdiv  -mno-div  -mrelax-immediates 
+          -mno-relax-immediates  -mwide-bitfields  -mno-wide-bitfields 
+          -m4byte-functions  -mno-4byte-functions  -mcallgraph-data 
+          -mno-callgraph-data  -mslow-bytes  -mno-slow-bytes  -mno-lsim 
+          -mlittle-endian  -mbig-endian  -m210  -m340  -mstack-increment
+     
+

MIPS Options +

          -EL  -EB  -march=arch  -mtune=arch 
+          -mips1  -mips2  -mips3  -mips4  -mips32  -mips32r2  -mips64 
+          -mips16  -mno-mips16  -mflip-mips16 
+          -minterlink-mips16  -mno-interlink-mips16 
+          -mabi=abi  -mabicalls  -mno-abicalls 
+          -mshared  -mno-shared  -mxgot  -mno-xgot  -mgp32  -mgp64 
+          -mfp32  -mfp64  -mhard-float  -msoft-float 
+          -msingle-float  -mdouble-float  -mdsp  -mno-dsp  -mdspr2  -mno-dspr2 
+          -msmartmips  -mno-smartmips 
+          -mpaired-single  -mno-paired-single  -mdmx  -mno-mdmx 
+          -mips3d  -mno-mips3d  -mmt  -mno-mt  -mllsc  -mno-llsc 
+          -mlong64  -mlong32  -msym32  -mno-sym32 
+          -Gnum  -mlocal-sdata  -mno-local-sdata 
+          -mextern-sdata  -mno-extern-sdata  -mgpopt  -mno-gopt 
+          -membedded-data  -mno-embedded-data 
+          -muninit-const-in-rodata  -mno-uninit-const-in-rodata 
+          -mcode-readable=setting 
+          -msplit-addresses  -mno-split-addresses 
+          -mexplicit-relocs  -mno-explicit-relocs 
+          -mcheck-zero-division  -mno-check-zero-division 
+          -mdivide-traps  -mdivide-breaks 
+          -mmemcpy  -mno-memcpy  -mlong-calls  -mno-long-calls 
+          -mmad  -mno-mad  -mfused-madd  -mno-fused-madd  -nocpp 
+          -mfix-r4000  -mno-fix-r4000  -mfix-r4400  -mno-fix-r4400 
+          -mfix-vr4120  -mno-fix-vr4120  -mfix-vr4130  -mno-fix-vr4130 
+          -mfix-sb1  -mno-fix-sb1 
+          -mflush-func=func  -mno-flush-func 
+          -mbranch-cost=num  -mbranch-likely  -mno-branch-likely 
+          -mfp-exceptions -mno-fp-exceptions 
+          -mvr4130-align -mno-vr4130-align
+     
+

MMIX Options +

          -mlibfuncs  -mno-libfuncs  -mepsilon  -mno-epsilon  -mabi=gnu 
+          -mabi=mmixware  -mzero-extend  -mknuthdiv  -mtoplevel-symbols 
+          -melf  -mbranch-predict  -mno-branch-predict  -mbase-addresses 
+          -mno-base-addresses  -msingle-exit  -mno-single-exit
+     
+

MN10300 Options +

          -mmult-bug  -mno-mult-bug 
+          -mam33  -mno-am33 
+          -mam33-2  -mno-am33-2 
+          -mreturn-pointer-on-d0 
+          -mno-crt0  -mrelax
+     
+

MT Options +

          -mno-crt0 -mbacc -msim 
+          -march=cpu-type
+     
+

PDP-11 Options +

          -mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10 
+          -mbcopy  -mbcopy-builtin  -mint32  -mno-int16 
+          -mint16  -mno-int32  -mfloat32  -mno-float64 
+          -mfloat64  -mno-float32  -mabshi  -mno-abshi 
+          -mbranch-expensive  -mbranch-cheap 
+          -msplit  -mno-split  -munix-asm  -mdec-asm
+     
+

PowerPC Options +See RS/6000 and PowerPC Options. + +

RS/6000 and PowerPC Options +

          -mcpu=cpu-type 
+          -mtune=cpu-type 
+          -mpower  -mno-power  -mpower2  -mno-power2 
+          -mpowerpc  -mpowerpc64  -mno-powerpc 
+          -maltivec  -mno-altivec 
+          -mpowerpc-gpopt  -mno-powerpc-gpopt 
+          -mpowerpc-gfxopt  -mno-powerpc-gfxopt 
+          -mmfcrf  -mno-mfcrf  -mpopcntb  -mno-popcntb  -mfprnd  -mno-fprnd 
+          -mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr -mhard-dfp -mno-hard-dfp 
+          -mnew-mnemonics  -mold-mnemonics 
+          -mfull-toc   -mminimal-toc  -mno-fp-in-toc  -mno-sum-in-toc 
+          -m64  -m32  -mxl-compat  -mno-xl-compat  -mpe 
+          -malign-power  -malign-natural 
+          -msoft-float  -mhard-float  -mmultiple  -mno-multiple 
+          -mstring  -mno-string  -mupdate  -mno-update 
+          -mfused-madd  -mno-fused-madd  -mbit-align  -mno-bit-align 
+          -mstrict-align  -mno-strict-align  -mrelocatable 
+          -mno-relocatable  -mrelocatable-lib  -mno-relocatable-lib 
+          -mtoc  -mno-toc  -mlittle  -mlittle-endian  -mbig  -mbig-endian 
+          -mdynamic-no-pic  -maltivec  -mswdiv 
+          -mprioritize-restricted-insns=priority 
+          -msched-costly-dep=dependence_type 
+          -minsert-sched-nops=scheme 
+          -mcall-sysv  -mcall-netbsd 
+          -maix-struct-return  -msvr4-struct-return 
+          -mabi=abi-type -msecure-plt -mbss-plt 
+          -misel -mno-isel 
+          -misel=yes  -misel=no 
+          -mspe -mno-spe 
+          -mspe=yes  -mspe=no 
+          -mpaired 
+          -mvrsave -mno-vrsave 
+          -mmulhw -mno-mulhw 
+          -mdlmzb -mno-dlmzb 
+          -mfloat-gprs=yes  -mfloat-gprs=no -mfloat-gprs=single -mfloat-gprs=double 
+          -mprototype  -mno-prototype 
+          -msim  -mmvme  -mads  -myellowknife  -memb  -msdata 
+          -msdata=opt  -mvxworks  -mwindiss  -G num  -pthread
+     
+

S/390 and zSeries Options +

          -mtune=cpu-type  -march=cpu-type 
+          -mhard-float  -msoft-float -mlong-double-64 -mlong-double-128 
+          -mbackchain  -mno-backchain -mpacked-stack  -mno-packed-stack 
+          -msmall-exec  -mno-small-exec  -mmvcle -mno-mvcle 
+          -m64  -m31  -mdebug  -mno-debug  -mesa  -mzarch 
+          -mtpf-trace -mno-tpf-trace  -mfused-madd  -mno-fused-madd 
+          -mwarn-framesize  -mwarn-dynamicstack  -mstack-size -mstack-guard
+     
+

Score Options +

          -meb -mel 
+          -mnhwloop 
+          -muls 
+          -mmac 
+          -mscore5 -mscore5u -mscore7 -mscore7d
+     
+

SH Options +

          -m1  -m2  -m2e  -m3  -m3e 
+          -m4-nofpu  -m4-single-only  -m4-single  -m4 
+          -m4a-nofpu -m4a-single-only -m4a-single -m4a -m4al 
+          -m5-64media  -m5-64media-nofpu 
+          -m5-32media  -m5-32media-nofpu 
+          -m5-compact  -m5-compact-nofpu 
+          -mb  -ml  -mdalign  -mrelax 
+          -mbigtable  -mfmovd  -mhitachi -mrenesas -mno-renesas -mnomacsave 
+          -mieee  -misize  -minline-ic_invalidate -mpadstruct  -mspace 
+          -mprefergot  -musermode -multcost=number -mdiv=strategy 
+          -mdivsi3_libfunc=name  
+          -madjust-unroll -mindexed-addressing -mgettrcost=number -mpt-fixed 
+           -minvalid-symbols
+     
+

SPARC Options +

          -mcpu=cpu-type 
+          -mtune=cpu-type 
+          -mcmodel=code-model 
+          -m32  -m64  -mapp-regs  -mno-app-regs 
+          -mfaster-structs  -mno-faster-structs 
+          -mfpu  -mno-fpu  -mhard-float  -msoft-float 
+          -mhard-quad-float  -msoft-quad-float 
+          -mimpure-text  -mno-impure-text  -mlittle-endian 
+          -mstack-bias  -mno-stack-bias 
+          -munaligned-doubles  -mno-unaligned-doubles 
+          -mv8plus  -mno-v8plus  -mvis  -mno-vis
+          -threads -pthreads -pthread
+     
+

SPU Options +

          -mwarn-reloc -merror-reloc 
+          -msafe-dma -munsafe-dma 
+          -mbranch-hints 
+          -msmall-mem -mlarge-mem -mstdmain 
+          -mfixed-range=register-range
+     
+

System V Options +

          -Qy  -Qn  -YP,paths  -Ym,dir
+     
+

V850 Options +

          -mlong-calls  -mno-long-calls  -mep  -mno-ep 
+          -mprolog-function  -mno-prolog-function  -mspace 
+          -mtda=n  -msda=n  -mzda=n 
+          -mapp-regs  -mno-app-regs 
+          -mdisable-callt  -mno-disable-callt 
+          -mv850e1 
+          -mv850e 
+          -mv850  -mbig-switch
+     
+

VAX Options +

          -mg  -mgnu  -munix
+     
+

VxWorks Options +

          -mrtp  -non-static  -Bstatic  -Bdynamic 
+          -Xbind-lazy  -Xbind-now
+     
+

x86-64 Options +See i386 and x86-64 Options. + +

Xstormy16 Options +

          -msim
+     
+

Xtensa Options +

          -mconst16 -mno-const16 
+          -mfused-madd  -mno-fused-madd 
+          -mtext-section-literals  -mno-text-section-literals 
+          -mtarget-align  -mno-target-align 
+          -mlongcalls  -mno-longcalls
+     
+

zSeries Options +See S/390 and zSeries Options. + +

Code Generation Options
See Options for Code Generation Conventions. +
          -fcall-saved-reg  -fcall-used-reg 
+          -ffixed-reg  -fexceptions 
+          -fnon-call-exceptions  -funwind-tables 
+          -fasynchronous-unwind-tables 
+          -finhibit-size-directive  -finstrument-functions 
+          -finstrument-functions-exclude-function-list=sym,sym,... 
+          -finstrument-functions-exclude-file-list=file,file,... 
+          -fno-common  -fno-ident 
+          -fpcc-struct-return  -fpic  -fPIC -fpie -fPIE 
+          -fno-jump-tables 
+          -frecord-gcc-switches 
+          -freg-struct-return  -fshort-enums 
+          -fshort-double  -fshort-wchar 
+          -fverbose-asm  -fpack-struct[=n]  -fstack-check 
+          -fstack-limit-register=reg  -fstack-limit-symbol=sym 
+          -fno-stack-limit  -fargument-alias  -fargument-noalias 
+          -fargument-noalias-global  -fargument-noalias-anything 
+          -fleading-underscore  -ftls-model=model 
+          -ftrapv  -fwrapv  -fbounds-check 
+          -fvisibility
+     
+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Other-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Other-Built_002din-Functions.html new file mode 100644 index 0000000..f73997c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Other-Built_002din-Functions.html @@ -0,0 +1,79 @@ + + +Other Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +
5.50.5.5 Other Built-in Functions
+ +

This section describes built-in functions that are not named after +a specific FR-V instruction. + +

+
sw2 __IACCreadll (iacc reg)
Return the full 64-bit value of IACC0. The reg argument is reserved +for future expansion and must be 0. + +
sw1 __IACCreadl (iacc reg)
Return the value of IACC0H if reg is 0 and IACC0L if reg is 1. +Other values of reg are rejected as invalid. + +
void __IACCsetll (iacc reg, sw2 x)
Set the full 64-bit value of IACC0 to x. The reg argument +is reserved for future expansion and must be 0. + +
void __IACCsetl (iacc reg, sw1 x)
Set IACC0H to x if reg is 0 and IACC0L to x if reg +is 1. Other values of reg are rejected as invalid. + +
void __data_prefetch0 (const void *x)
Use the dcpl instruction to load the contents of address x +into the data cache. + +
void __data_prefetch (const void *x)
Use the nldub instruction to load the contents of address x +into the data cache. The instruction will be issued in slot I1. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Other-Builtins.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Other-Builtins.html new file mode 100644 index 0000000..df30b55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Other-Builtins.html @@ -0,0 +1,658 @@ + + +Other Builtins - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Object Size Checking, +Up: C Extensions +



+
+ +

5.49 Other built-in functions provided by GCC

+ +

+GCC provides a large number of built-in functions other than the ones +mentioned above. Some of these are for internal use in the processing +of exceptions or variable-length argument lists and will not be +documented here because they may change from time to time; we do not +recommend general use of these functions. + +

The remaining functions are provided for optimization purposes. + +

GCC includes built-in versions of many of the functions in the standard +C library. The versions prefixed with __builtin_ will always be +treated as having the same meaning as the C library function even if you +specify the -fno-builtin option. (see C Dialect Options) +Many of these functions are only optimized in certain cases; if they are +not optimized in a particular case, a call to the library function will +be emitted. + +

Outside strict ISO C mode (-ansi, -std=c89 or +-std=c99), the functions +_exit, alloca, bcmp, bzero, +dcgettext, dgettext, dremf, dreml, +drem, exp10f, exp10l, exp10, ffsll, +ffsl, ffs, fprintf_unlocked, +fputs_unlocked, gammaf, gammal, gamma, +gammaf_r, gammal_r, gamma_r, gettext, +index, isascii, j0f, j0l, j0, +j1f, j1l, j1, jnf, jnl, jn, +lgammaf_r, lgammal_r, lgamma_r, mempcpy, +pow10f, pow10l, pow10, printf_unlocked, +rindex, scalbf, scalbl, scalb, +signbit, signbitf, signbitl, signbitd32, +signbitd64, signbitd128, significandf, +significandl, significand, sincosf, +sincosl, sincos, stpcpy, stpncpy, +strcasecmp, strdup, strfmon, strncasecmp, +strndup, toascii, y0f, y0l, y0, +y1f, y1l, y1, ynf, ynl and +yn +may be handled as built-in functions. +All these functions have corresponding versions +prefixed with __builtin_, which may be used even in strict C89 +mode. + +

The ISO C99 functions +_Exit, acoshf, acoshl, acosh, asinhf, +asinhl, asinh, atanhf, atanhl, atanh, +cabsf, cabsl, cabs, cacosf, cacoshf, +cacoshl, cacosh, cacosl, cacos, +cargf, cargl, carg, casinf, casinhf, +casinhl, casinh, casinl, casin, +catanf, catanhf, catanhl, catanh, +catanl, catan, cbrtf, cbrtl, cbrt, +ccosf, ccoshf, ccoshl, ccosh, ccosl, +ccos, cexpf, cexpl, cexp, cimagf, +cimagl, cimag, clogf, clogl, clog, +conjf, conjl, conj, copysignf, copysignl, +copysign, cpowf, cpowl, cpow, cprojf, +cprojl, cproj, crealf, creall, creal, +csinf, csinhf, csinhl, csinh, csinl, +csin, csqrtf, csqrtl, csqrt, ctanf, +ctanhf, ctanhl, ctanh, ctanl, ctan, +erfcf, erfcl, erfc, erff, erfl, +erf, exp2f, exp2l, exp2, expm1f, +expm1l, expm1, fdimf, fdiml, fdim, +fmaf, fmal, fmaxf, fmaxl, fmax, +fma, fminf, fminl, fmin, hypotf, +hypotl, hypot, ilogbf, ilogbl, ilogb, +imaxabs, isblank, iswblank, lgammaf, +lgammal, lgamma, llabs, llrintf, llrintl, +llrint, llroundf, llroundl, llround, +log1pf, log1pl, log1p, log2f, log2l, +log2, logbf, logbl, logb, lrintf, +lrintl, lrint, lroundf, lroundl, +lround, nearbyintf, nearbyintl, nearbyint, +nextafterf, nextafterl, nextafter, +nexttowardf, nexttowardl, nexttoward, +remainderf, remainderl, remainder, remquof, +remquol, remquo, rintf, rintl, rint, +roundf, roundl, round, scalblnf, +scalblnl, scalbln, scalbnf, scalbnl, +scalbn, snprintf, tgammaf, tgammal, +tgamma, truncf, truncl, trunc, +vfscanf, vscanf, vsnprintf and vsscanf +are handled as built-in functions +except in strict ISO C90 mode (-ansi or -std=c89). + +

There are also built-in versions of the ISO C99 functions +acosf, acosl, asinf, asinl, atan2f, +atan2l, atanf, atanl, ceilf, ceill, +cosf, coshf, coshl, cosl, expf, +expl, fabsf, fabsl, floorf, floorl, +fmodf, fmodl, frexpf, frexpl, ldexpf, +ldexpl, log10f, log10l, logf, logl, +modfl, modf, powf, powl, sinf, +sinhf, sinhl, sinl, sqrtf, sqrtl, +tanf, tanhf, tanhl and tanl +that are recognized in any mode since ISO C90 reserves these names for +the purpose to which ISO C99 puts them. All these functions have +corresponding versions prefixed with __builtin_. + +

The ISO C94 functions +iswalnum, iswalpha, iswcntrl, iswdigit, +iswgraph, iswlower, iswprint, iswpunct, +iswspace, iswupper, iswxdigit, towlower and +towupper +are handled as built-in functions +except in strict ISO C90 mode (-ansi or -std=c89). + +

The ISO C90 functions +abort, abs, acos, asin, atan2, +atan, calloc, ceil, cosh, cos, +exit, exp, fabs, floor, fmod, +fprintf, fputs, frexp, fscanf, +isalnum, isalpha, iscntrl, isdigit, +isgraph, islower, isprint, ispunct, +isspace, isupper, isxdigit, tolower, +toupper, labs, ldexp, log10, log, +malloc, memchr, memcmp, memcpy, +memset, modf, pow, printf, putchar, +puts, scanf, sinh, sin, snprintf, +sprintf, sqrt, sscanf, strcat, +strchr, strcmp, strcpy, strcspn, +strlen, strncat, strncmp, strncpy, +strpbrk, strrchr, strspn, strstr, +tanh, tan, vfprintf, vprintf and vsprintf +are all recognized as built-in functions unless +-fno-builtin is specified (or -fno-builtin-function +is specified for an individual function). All of these functions have +corresponding versions prefixed with __builtin_. + +

GCC provides built-in versions of the ISO C99 floating point comparison +macros that avoid raising exceptions for unordered operands. They have +the same names as the standard macros ( isgreater, +isgreaterequal, isless, islessequal, +islessgreater, and isunordered) , with __builtin_ +prefixed. We intend for a library implementor to be able to simply +#define each standard macro to its built-in equivalent. +In the same fashion, GCC provides isfinite and isnormal +built-ins used with __builtin_ prefixed. + +

+— Built-in Function: int __builtin_types_compatible_p (type1, type2)
+
+

You can use the built-in function __builtin_types_compatible_p to +determine whether two types are the same. + +

This built-in function returns 1 if the unqualified versions of the +types type1 and type2 (which are types, not expressions) are +compatible, 0 otherwise. The result of this built-in function can be +used in integer constant expressions. + +

This built-in function ignores top level qualifiers (e.g., const, +volatile). For example, int is equivalent to const +int. + +

The type int[] and int[5] are compatible. On the other +hand, int and char * are not compatible, even if the size +of their types, on the particular architecture are the same. Also, the +amount of pointer indirection is taken into account when determining +similarity. Consequently, short * is not similar to +short **. Furthermore, two types that are typedefed are +considered compatible if their underlying types are compatible. + +

An enum type is not considered to be compatible with another +enum type even if both are compatible with the same integer +type; this is what the C standard specifies. +For example, enum {foo, bar} is not similar to +enum {hot, dog}. + +

You would typically use this function in code whose execution varies +depending on the arguments' types. For example: + +

          #define foo(x)                                                  \
+            ({                                                           \
+              typeof (x) tmp = (x);                                       \
+              if (__builtin_types_compatible_p (typeof (x), long double)) \
+                tmp = foo_long_double (tmp);                              \
+              else if (__builtin_types_compatible_p (typeof (x), double)) \
+                tmp = foo_double (tmp);                                   \
+              else if (__builtin_types_compatible_p (typeof (x), float))  \
+                tmp = foo_float (tmp);                                    \
+              else                                                        \
+                abort ();                                                 \
+              tmp;                                                        \
+            })
+     
+

Note: This construct is only available for C. + +

+ +
+— Built-in Function: type __builtin_choose_expr (const_exp, exp1, exp2)
+
+

You can use the built-in function __builtin_choose_expr to +evaluate code depending on the value of a constant expression. This +built-in function returns exp1 if const_exp, which is a +constant expression that must be able to be determined at compile time, +is nonzero. Otherwise it returns 0. + +

This built-in function is analogous to the ? : operator in C, +except that the expression returned has its type unaltered by promotion +rules. Also, the built-in function does not evaluate the expression +that was not chosen. For example, if const_exp evaluates to true, +exp2 is not evaluated even if it has side-effects. + +

This built-in function can return an lvalue if the chosen argument is an +lvalue. + +

If exp1 is returned, the return type is the same as exp1's +type. Similarly, if exp2 is returned, its return type is the same +as exp2. + +

Example: + +

          #define foo(x)                                                    \
+            __builtin_choose_expr (                                         \
+              __builtin_types_compatible_p (typeof (x), double),            \
+              foo_double (x),                                               \
+              __builtin_choose_expr (                                       \
+                __builtin_types_compatible_p (typeof (x), float),           \
+                foo_float (x),                                              \
+                /* The void expression results in a compile-time error  \
+                   when assigning the result to something.  */          \
+                (void)0))
+     
+

Note: This construct is only available for C. Furthermore, the +unused expression (exp1 or exp2 depending on the value of +const_exp) may still generate syntax errors. This may change in +future revisions. + +

+ +
+— Built-in Function: int __builtin_constant_p (exp)
+

You can use the built-in function __builtin_constant_p to +determine if a value is known to be constant at compile-time and hence +that GCC can perform constant-folding on expressions involving that +value. The argument of the function is the value to test. The function +returns the integer 1 if the argument is known to be a compile-time +constant and 0 if it is not known to be a compile-time constant. A +return of 0 does not indicate that the value is not a constant, +but merely that GCC cannot prove it is a constant with the specified +value of the -O option. + +

You would typically use this function in an embedded application where +memory was a critical resource. If you have some complex calculation, +you may want it to be folded if it involves constants, but need to call +a function if it does not. For example: + +

          #define Scale_Value(X)      \
+            (__builtin_constant_p (X) \
+            ? ((X) * SCALE + OFFSET) : Scale (X))
+     
+

You may use this built-in function in either a macro or an inline +function. However, if you use it in an inlined function and pass an +argument of the function as the argument to the built-in, GCC will +never return 1 when you call the inline function with a string constant +or compound literal (see Compound Literals) and will not return 1 +when you pass a constant numeric value to the inline function unless you +specify the -O option. + +

You may also use __builtin_constant_p in initializers for static +data. For instance, you can write + +

          static const int table[] = {
+             __builtin_constant_p (EXPRESSION) ? (EXPRESSION) : -1,
+             /* ... */
+          };
+     
+

This is an acceptable initializer even if EXPRESSION is not a +constant expression. GCC must be more conservative about evaluating the +built-in in this case, because it has no opportunity to perform +optimization. + +

Previous versions of GCC did not accept this built-in in data +initializers. The earliest version where it is completely safe is +3.0.1. +

+ +
+— Built-in Function: long __builtin_expect (long exp, long c)
+

You may use __builtin_expect to provide the compiler with +branch prediction information. In general, you should prefer to +use actual profile feedback for this (-fprofile-arcs), as +programmers are notoriously bad at predicting how their programs +actually perform. However, there are applications in which this +data is hard to collect. + +

The return value is the value of exp, which should be an integral +expression. The semantics of the built-in are that it is expected that +exp == c. For example: + +

          if (__builtin_expect (x, 0))
+            foo ();
+     
+

would indicate that we do not expect to call foo, since +we expect x to be zero. Since you are limited to integral +expressions for exp, you should use constructions such as + +

          if (__builtin_expect (ptr != NULL, 1))
+            error ();
+     
+

when testing pointer or floating-point values. +

+ +
+— Built-in Function: void __builtin_trap (void)
+

This function causes the program to exit abnormally. GCC implements +this function by using a target-dependent mechanism (such as +intentionally executing an illegal instruction) or by calling +abort. The mechanism used may vary from release to release so +you should not rely on any particular implementation. +

+ +
+— Built-in Function: void __builtin___clear_cache (char *begin, char *end)
+

This function is used to flush the processor's instruction cache for +the region of memory between begin inclusive and end +exclusive. Some targets require that the instruction cache be +flushed, after modifying memory containing code, in order to obtain +deterministic behavior. + +

If the target does not require instruction cache flushes, +__builtin___clear_cache has no effect. Otherwise either +instructions are emitted in-line to clear the instruction cache or a +call to the __clear_cache function in libgcc is made. +

+ +
+— Built-in Function: void __builtin_prefetch (const void *addr, ...)
+

This function is used to minimize cache-miss latency by moving data into +a cache before it is accessed. +You can insert calls to __builtin_prefetch into code for which +you know addresses of data in memory that is likely to be accessed soon. +If the target supports them, data prefetch instructions will be generated. +If the prefetch is done early enough before the access then the data will +be in the cache by the time it is accessed. + +

The value of addr is the address of the memory to prefetch. +There are two optional arguments, rw and locality. +The value of rw is a compile-time constant one or zero; one +means that the prefetch is preparing for a write to the memory address +and zero, the default, means that the prefetch is preparing for a read. +The value locality must be a compile-time constant integer between +zero and three. A value of zero means that the data has no temporal +locality, so it need not be left in the cache after the access. A value +of three means that the data has a high degree of temporal locality and +should be left in all levels of cache possible. Values of one and two +mean, respectively, a low or moderate degree of temporal locality. The +default is three. + +

          for (i = 0; i < n; i++)
+            {
+              a[i] = a[i] + b[i];
+              __builtin_prefetch (&a[i+j], 1, 1);
+              __builtin_prefetch (&b[i+j], 0, 1);
+              /* ... */
+            }
+     
+

Data prefetch does not generate faults if addr is invalid, but +the address expression itself must be valid. For example, a prefetch +of p->next will not fault if p->next is not a valid +address, but evaluation will fault if p is not a valid address. + +

If the target does not support data prefetch, the address expression +is evaluated if it includes side effects but no other code is generated +and GCC does not issue a warning. +

+ +
+— Built-in Function: double __builtin_huge_val (void)
+

Returns a positive infinity, if supported by the floating-point format, +else DBL_MAX. This function is suitable for implementing the +ISO C macro HUGE_VAL. +

+ +
+— Built-in Function: float __builtin_huge_valf (void)
+

Similar to __builtin_huge_val, except the return type is float. +

+ +
+— Built-in Function: long double __builtin_huge_vall (void)
+

Similar to __builtin_huge_val, except the return +type is long double. +

+ +
+— Built-in Function: double __builtin_inf (void)
+

Similar to __builtin_huge_val, except a warning is generated +if the target floating-point format does not support infinities. +

+ +
+— Built-in Function: _Decimal32 __builtin_infd32 (void)
+

Similar to __builtin_inf, except the return type is _Decimal32. +

+ +
+— Built-in Function: _Decimal64 __builtin_infd64 (void)
+

Similar to __builtin_inf, except the return type is _Decimal64. +

+ +
+— Built-in Function: _Decimal128 __builtin_infd128 (void)
+

Similar to __builtin_inf, except the return type is _Decimal128. +

+ +
+— Built-in Function: float __builtin_inff (void)
+

Similar to __builtin_inf, except the return type is float. +This function is suitable for implementing the ISO C99 macro INFINITY. +

+ +
+— Built-in Function: long double __builtin_infl (void)
+

Similar to __builtin_inf, except the return +type is long double. +

+ +
+— Built-in Function: double __builtin_nan (const char *str)
+

This is an implementation of the ISO C99 function nan. + +

Since ISO C99 defines this function in terms of strtod, which we +do not implement, a description of the parsing is in order. The string +is parsed as by strtol; that is, the base is recognized by +leading 0 or 0x prefixes. The number parsed is placed +in the significand such that the least significant bit of the number +is at the least significant bit of the significand. The number is +truncated to fit the significand field provided. The significand is +forced to be a quiet NaN. + +

This function, if given a string literal all of which would have been +consumed by strtol, is evaluated early enough that it is considered a +compile-time constant. +

+ +
+— Built-in Function: _Decimal32 __builtin_nand32 (const char *str)
+

Similar to __builtin_nan, except the return type is _Decimal32. +

+ +
+— Built-in Function: _Decimal64 __builtin_nand64 (const char *str)
+

Similar to __builtin_nan, except the return type is _Decimal64. +

+ +
+— Built-in Function: _Decimal128 __builtin_nand128 (const char *str)
+

Similar to __builtin_nan, except the return type is _Decimal128. +

+ +
+— Built-in Function: float __builtin_nanf (const char *str)
+

Similar to __builtin_nan, except the return type is float. +

+ +
+— Built-in Function: long double __builtin_nanl (const char *str)
+

Similar to __builtin_nan, except the return type is long double. +

+ +
+— Built-in Function: double __builtin_nans (const char *str)
+

Similar to __builtin_nan, except the significand is forced +to be a signaling NaN. The nans function is proposed by +WG14 N965. +

+ +
+— Built-in Function: float __builtin_nansf (const char *str)
+

Similar to __builtin_nans, except the return type is float. +

+ +
+— Built-in Function: long double __builtin_nansl (const char *str)
+

Similar to __builtin_nans, except the return type is long double. +

+ +
+— Built-in Function: int __builtin_ffs (unsigned int x)
+

Returns one plus the index of the least significant 1-bit of x, or +if x is zero, returns zero. +

+ +
+— Built-in Function: int __builtin_clz (unsigned int x)
+

Returns the number of leading 0-bits in x, starting at the most +significant bit position. If x is 0, the result is undefined. +

+ +
+— Built-in Function: int __builtin_ctz (unsigned int x)
+

Returns the number of trailing 0-bits in x, starting at the least +significant bit position. If x is 0, the result is undefined. +

+ +
+— Built-in Function: int __builtin_popcount (unsigned int x)
+

Returns the number of 1-bits in x. +

+ +
+— Built-in Function: int __builtin_parity (unsigned int x)
+

Returns the parity of x, i.e. the number of 1-bits in x +modulo 2. +

+ +
+— Built-in Function: int __builtin_ffsl (unsigned long)
+

Similar to __builtin_ffs, except the argument type is +unsigned long. +

+ +
+— Built-in Function: int __builtin_clzl (unsigned long)
+

Similar to __builtin_clz, except the argument type is +unsigned long. +

+ +
+— Built-in Function: int __builtin_ctzl (unsigned long)
+

Similar to __builtin_ctz, except the argument type is +unsigned long. +

+ +
+— Built-in Function: int __builtin_popcountl (unsigned long)
+

Similar to __builtin_popcount, except the argument type is +unsigned long. +

+ +
+— Built-in Function: int __builtin_parityl (unsigned long)
+

Similar to __builtin_parity, except the argument type is +unsigned long. +

+ +
+— Built-in Function: int __builtin_ffsll (unsigned long long)
+

Similar to __builtin_ffs, except the argument type is +unsigned long long. +

+ +
+— Built-in Function: int __builtin_clzll (unsigned long long)
+

Similar to __builtin_clz, except the argument type is +unsigned long long. +

+ +
+— Built-in Function: int __builtin_ctzll (unsigned long long)
+

Similar to __builtin_ctz, except the argument type is +unsigned long long. +

+ +
+— Built-in Function: int __builtin_popcountll (unsigned long long)
+

Similar to __builtin_popcount, except the argument type is +unsigned long long. +

+ +
+— Built-in Function: int __builtin_parityll (unsigned long long)
+

Similar to __builtin_parity, except the argument type is +unsigned long long. +

+ +
+— Built-in Function: double __builtin_powi (double, int)
+

Returns the first argument raised to the power of the second. Unlike the +pow function no guarantees about precision and rounding are made. +

+ +
+— Built-in Function: float __builtin_powif (float, int)
+

Similar to __builtin_powi, except the argument and return types +are float. +

+ +
+— Built-in Function: long double __builtin_powil (long double, int)
+

Similar to __builtin_powi, except the argument and return types +are long double. +

+ +
+— Built-in Function: int32_t __builtin_bswap32 (int32_t x)
+

Returns x with the order of the bytes reversed; for example, +0xaabbccdd becomes 0xddccbbaa. Byte here always means +exactly 8 bits. +

+ +
+— Built-in Function: int64_t __builtin_bswap64 (int64_t x)
+

Similar to __builtin_bswap32, except the argument and return types +are 64-bit. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Overall-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Overall-Options.html new file mode 100644 index 0000000..54e7a6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Overall-Options.html @@ -0,0 +1,361 @@ + + +Overall Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Option Summary, +Up: Invoking GCC +



+
+ +

3.2 Options Controlling the Kind of Output

+ +

Compilation can involve up to four stages: preprocessing, compilation +proper, assembly and linking, always in that order. GCC is capable of +preprocessing and compiling several files either into several +assembler input files, or into one assembler input file; then each +assembler input file produces an object file, and linking combines all +the object files (those newly compiled, and those specified as input) +into an executable file. + +

For any given input file, the file name suffix determines what kind of +compilation is done: + +

+
file.c
C source code which must be preprocessed. + +
file.i
C source code which should not be preprocessed. + +
file.ii
C++ source code which should not be preprocessed. + +
file.m
Objective-C source code. Note that you must link with the libobjc +library to make an Objective-C program work. + +
file.mi
Objective-C source code which should not be preprocessed. + +
file.mm
file.M
Objective-C++ source code. Note that you must link with the libobjc +library to make an Objective-C++ program work. Note that .M refers +to a literal capital M. + +
file.mii
Objective-C++ source code which should not be preprocessed. + +
file.h
C, C++, Objective-C or Objective-C++ header file to be turned into a +precompiled header. + +
file.cc
file.cp
file.cxx
file.cpp
file.CPP
file.c++
file.C
C++ source code which must be preprocessed. Note that in .cxx, +the last two letters must both be literally x. Likewise, +.C refers to a literal capital C. + +
file.mm
file.M
Objective-C++ source code which must be preprocessed. + +
file.mii
Objective-C++ source code which should not be preprocessed. + +
file.hh
file.H
file.hp
file.hxx
file.hpp
file.HPP
file.h++
file.tcc
C++ header file to be turned into a precompiled header. + +
file.f
file.for
file.FOR
Fixed form Fortran source code which should not be preprocessed. + +
file.F
file.fpp
file.FPP
Fixed form Fortran source code which must be preprocessed (with the traditional +preprocessor). + +
file.f90
file.f95
Free form Fortran source code which should not be preprocessed. + +
file.F90
file.F95
Free form Fortran source code which must be preprocessed (with the +traditional preprocessor). + + + + + + +
file.ads
Ada source code file which contains a library unit declaration (a +declaration of a package, subprogram, or generic, or a generic +instantiation), or a library unit renaming declaration (a package, +generic, or subprogram renaming declaration). Such files are also +called specs. + +
file.adb
Ada source code file containing a library unit body (a subprogram or +package body). Such files are also called bodies. + + + + + + + +
file.s
Assembler code. + +
file.S
file.sx
Assembler code which must be preprocessed. + +
other
An object file to be fed straight into linking. +Any file name with no recognized suffix is treated this way. +
+ +

You can specify the input language explicitly with the -x option: + +

+
-x language
Specify explicitly the language for the following input files +(rather than letting the compiler choose a default based on the file +name suffix). This option applies to all following input files until +the next -x option. Possible values for language are: +
          c  c-header  c-cpp-output
+          c++  c++-header  c++-cpp-output
+          objective-c  objective-c-header  objective-c-cpp-output
+          objective-c++ objective-c++-header objective-c++-cpp-output
+          assembler  assembler-with-cpp
+          ada
+          f95  f95-cpp-input
+          java
+          treelang
+     
+
-x none
Turn off any specification of a language, so that subsequent files are +handled according to their file name suffixes (as they are if -x +has not been used at all). + +
-pass-exit-codes
Normally the gcc program will exit with the code of 1 if any +phase of the compiler returns a non-success return code. If you specify +-pass-exit-codes, the gcc program will instead return with +numerically highest error produced by any phase that returned an error +indication. The C, C++, and Fortran frontends return 4, if an internal +compiler error is encountered. +
+ +

If you only want some of the stages of compilation, you can use +-x (or filename suffixes) to tell gcc where to start, and +one of the options -c, -S, or -E to say where +gcc is to stop. Note that some combinations (for example, +-x cpp-output -E) instruct gcc to do nothing at all. + +

+
-c
Compile or assemble the source files, but do not link. The linking +stage simply is not done. The ultimate output is in the form of an +object file for each source file. + +

By default, the object file name for a source file is made by replacing +the suffix .c, .i, .s, etc., with .o. + +

Unrecognized input files, not requiring compilation or assembly, are +ignored. + +

-S
Stop after the stage of compilation proper; do not assemble. The output +is in the form of an assembler code file for each non-assembler input +file specified. + +

By default, the assembler file name for a source file is made by +replacing the suffix .c, .i, etc., with .s. + +

Input files that don't require compilation are ignored. + +

-E
Stop after the preprocessing stage; do not run the compiler proper. The +output is in the form of preprocessed source code, which is sent to the +standard output. + +

Input files which don't require preprocessing are ignored. + +


-o file
Place output in file file. This applies regardless to whatever +sort of output is being produced, whether it be an executable file, +an object file, an assembler file or preprocessed C code. + +

If -o is not specified, the default is to put an executable +file in a.out, the object file for +source.suffix in source.o, its +assembler file in source.s, a precompiled header file in +source.suffix.gch, and all preprocessed C source on +standard output. + +

-v
Print (on standard error output) the commands executed to run the stages +of compilation. Also print the version number of the compiler driver +program and of the preprocessor and the compiler proper. + +
-###
Like -v except the commands are not executed and all command +arguments are quoted. This is useful for shell scripts to capture the +driver-generated command lines. + +
-pipe
Use pipes rather than temporary files for communication between the +various stages of compilation. This fails to work on some systems where +the assembler is unable to read from a pipe; but the GNU assembler has +no trouble. + +
-combine
If you are compiling multiple source files, this option tells the driver +to pass all the source files to the compiler at once (for those +languages for which the compiler can handle this). This will allow +intermodule analysis (IMA) to be performed by the compiler. Currently the only +language for which this is supported is C. If you pass source files for +multiple languages to the driver, using this option, the driver will invoke +the compiler(s) that support IMA once each, passing each compiler all the +source files appropriate for it. For those languages that do not support +IMA this option will be ignored, and the compiler will be invoked once for +each source file in that language. If you use this option in conjunction +with -save-temps, the compiler will generate multiple +pre-processed files +(one for each source file), but only one (combined) .o or +.s file. + +
--help
Print (on the standard output) a description of the command line options +understood by gcc. If the -v option is also specified +then --help will also be passed on to the various processes +invoked by gcc, so that they can display the command line options +they accept. If the -Wextra option has also been specified +(prior to the --help option), then command line options which +have no documentation associated with them will also be displayed. + +
--target-help
Print (on the standard output) a description of target-specific command +line options for each tool. For some targets extra target-specific +information may also be printed. + +
--help=class[,qualifier]
Print (on the standard output) a description of the command line +options understood by the compiler that fit into a specific class. +The class can be one of optimizers, warnings, target, +params, or language: + +
+
optimizers
This will display all of the optimization options supported by the +compiler. + +
warnings
This will display all of the options controlling warning messages +produced by the compiler. + +
target
This will display target-specific options. Unlike the +--target-help option however, target-specific options of the +linker and assembler will not be displayed. This is because those +tools do not currently support the extended --help= syntax. + +
params
This will display the values recognized by the --param +option. + +
language
This will display the options supported for language, where +language is the name of one of the languages supported in this +version of GCC. + +
common
This will display the options that are common to all languages. +
+ +

It is possible to further refine the output of the --help= +option by adding a comma separated list of qualifiers after the +class. These can be any from the following list: + +

+
undocumented
Display only those options which are undocumented. + +
joined
Display options which take an argument that appears after an equal +sign in the same continuous piece of text, such as: +--help=target. + +
separate
Display options which take an argument that appears as a separate word +following the original option, such as: -o output-file. +
+ +

Thus for example to display all the undocumented target-specific +switches supported by the compiler the following can be used: + +

          --help=target,undocumented
+     
+

The sense of a qualifier can be inverted by prefixing it with the +^ character, so for example to display all binary warning +options (i.e., ones that are either on or off and that do not take an +argument), which have a description the following can be used: + +

          --help=warnings,^joined,^undocumented
+     
+

A class can also be used as a qualifier, although this usually +restricts the output by so much that there is nothing to display. One +case where it does work however is when one of the classes is +target. So for example to display all the target-specific +optimization options the following can be used: + +

          --help=target,optimizers
+     
+

The --help= option can be repeated on the command line. Each +successive use will display its requested class of options, skipping +those that have already been displayed. + +

If the -Q option appears on the command line before the +--help= option, then the descriptive text displayed by +--help= is changed. Instead of describing the displayed +options, an indication is given as to whether the option is enabled, +disabled or set to a specific value (assuming that the compiler +knows this at the point where the --help= option is used). + +

Here is a truncated example from the ARM port of gcc: + +

            % gcc -Q -mabi=2 --help=target -c
+            The following options are target specific:
+            -mabi=                                2
+            -mabort-on-noreturn                   [disabled]
+            -mapcs                                [disabled]
+     
+

The output is sensitive to the effects of previous command line +options, so for example it is possible to find out which optimizations +are enabled at -O2 by using: + +

          -O2 --help=optimizers
+     
+

Alternatively you can discover which binary optimizations are enabled +by -O3 by using: + +

          gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
+          gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
+          diff /tmp/O2-opts /tmp/O3-opts | grep enabled
+     
+
--version
Display the version number and copyrights of the invoked GCC. + + + +
@file
Read command-line options from file. The options read are +inserted in place of the original @file option. If file +does not exist, or cannot be read, then the option will be treated +literally, and not removed. + +

Options in file are separated by whitespace. A whitespace +character may be included in an option by surrounding the entire +option in either single or double quotes. Any character (including a +backslash) may be included by prefixing the character to be included +with a backslash. The file may itself contain additional +@file options; any such options will be processed recursively. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PDP_002d11-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PDP_002d11-Options.html new file mode 100644 index 0000000..970eccc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PDP_002d11-Options.html @@ -0,0 +1,110 @@ + + +PDP-11 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: MT Options, +Up: Submodel Options +



+
+ +

3.17.25 PDP-11 Options

+ +

+These options are defined for the PDP-11: + +

+
-mfpu
Use hardware FPP floating point. This is the default. (FIS floating +point on the PDP-11/40 is not supported.) + +
-msoft-float
Do not use hardware floating point. + +
-mac0
Return floating-point results in ac0 (fr0 in Unix assembler syntax). + +
-mno-ac0
Return floating-point results in memory. This is the default. + +
-m40
Generate code for a PDP-11/40. + +
-m45
Generate code for a PDP-11/45. This is the default. + +
-m10
Generate code for a PDP-11/10. + +
-mbcopy-builtin
Use inline movmemhi patterns for copying memory. This is the +default. + +
-mbcopy
Do not use inline movmemhi patterns for copying memory. + +
-mint16
-mno-int32
Use 16-bit int. This is the default. + +
-mint32
-mno-int16
Use 32-bit int. + +
-mfloat64
-mno-float32
Use 64-bit float. This is the default. + +
-mfloat32
-mno-float64
Use 32-bit float. + +
-mabshi
Use abshi2 pattern. This is the default. + +
-mno-abshi
Do not use abshi2 pattern. + +
-mbranch-expensive
Pretend that branches are expensive. This is for experimenting with +code generation only. + +
-mbranch-cheap
Do not pretend that branches are expensive. This is the default. + +
-msplit
Generate code for a system with split I&D. + +
-mno-split
Generate code for a system without split I&D. This is the default. + +
-munix-asm
Use Unix assembler syntax. This is the default when configured for +pdp11-*-bsd. + +
-mdec-asm
Use DEC assembler syntax. This is the default when configured for any +PDP-11 target other than pdp11-*-bsd. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Paired_002dSingle-Arithmetic.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Paired_002dSingle-Arithmetic.html new file mode 100644 index 0000000..906d281 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Paired_002dSingle-Arithmetic.html @@ -0,0 +1,75 @@ + + +Paired-Single Arithmetic - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +
5.50.8.1 Paired-Single Arithmetic
+ +

The table below lists the v2sf operations for which hardware +support exists. a, b and c are v2sf +values and x is an integral value. + +

C code MIPS instruction +
a + b add.ps +
a - b sub.ps +
-a neg.ps +
a * b mul.ps +
a * b + c madd.ps +
a * b - c msub.ps +
-(a * b + c) nmadd.ps +
-(a * b - c) nmsub.ps +
x ? a : b movn.ps/movz.ps +
+ +

Note that the multiply-accumulate instructions can be disabled +using the command-line option -mno-fused-madd. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Paired_002dSingle-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Paired_002dSingle-Built_002din-Functions.html new file mode 100644 index 0000000..45c0917 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Paired_002dSingle-Built_002din-Functions.html @@ -0,0 +1,124 @@ + + +Paired-Single Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +
5.50.8.2 Paired-Single Built-in Functions
+ +

The following paired-single functions map directly to a particular +MIPS instruction. Please refer to the architecture specification +for details on what each instruction does. + +

+
v2sf __builtin_mips_pll_ps (v2sf, v2sf)
Pair lower lower (pll.ps). + +
v2sf __builtin_mips_pul_ps (v2sf, v2sf)
Pair upper lower (pul.ps). + +
v2sf __builtin_mips_plu_ps (v2sf, v2sf)
Pair lower upper (plu.ps). + +
v2sf __builtin_mips_puu_ps (v2sf, v2sf)
Pair upper upper (puu.ps). + +
v2sf __builtin_mips_cvt_ps_s (float, float)
Convert pair to paired single (cvt.ps.s). + +
float __builtin_mips_cvt_s_pl (v2sf)
Convert pair lower to single (cvt.s.pl). + +
float __builtin_mips_cvt_s_pu (v2sf)
Convert pair upper to single (cvt.s.pu). + +
v2sf __builtin_mips_abs_ps (v2sf)
Absolute value (abs.ps). + +
v2sf __builtin_mips_alnv_ps (v2sf, v2sf, int)
Align variable (alnv.ps). + +

Note: The value of the third parameter must be 0 or 4 +modulo 8, otherwise the result will be unpredictable. Please read the +instruction description for details. +

+ +

The following multi-instruction functions are also available. +In each case, cond can be any of the 16 floating-point conditions: +f, un, eq, ueq, olt, ult, +ole, ule, sf, ngle, seq, ngl, +lt, nge, le or ngt. + +

+
v2sf __builtin_mips_movt_c_cond_ps (v2sf a, v2sf b, v2sf c, v2sf d)
v2sf __builtin_mips_movf_c_cond_ps (v2sf a, v2sf b, v2sf c, v2sf d)
Conditional move based on floating point comparison (c.cond.ps, +movt.ps/movf.ps). + +

The movt functions return the value x computed by: + +

          c.cond.ps cc,a,b
+          mov.ps x,c
+          movt.ps x,d,cc
+     
+

The movf functions are similar but use movf.ps instead +of movt.ps. + +

int __builtin_mips_upper_c_cond_ps (v2sf a, v2sf b)
int __builtin_mips_lower_c_cond_ps (v2sf a, v2sf b)
Comparison of two paired-single values (c.cond.ps, +bc1t/bc1f). + +

These functions compare a and b using c.cond.ps +and return either the upper or lower half of the result. For example: + +

          v2sf a, b;
+          if (__builtin_mips_upper_c_eq_ps (a, b))
+            upper_halves_are_equal ();
+          else
+            upper_halves_are_unequal ();
+          
+          if (__builtin_mips_lower_c_eq_ps (a, b))
+            lower_halves_are_equal ();
+          else
+            lower_halves_are_unequal ();
+     
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Pointer-Arith.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Pointer-Arith.html new file mode 100644 index 0000000..050a082 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Pointer-Arith.html @@ -0,0 +1,69 @@ + + +Pointer Arith - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Subscripting, +Up: C Extensions +



+
+ +

5.20 Arithmetic on void- and Function-Pointers

+ +

+In GNU C, addition and subtraction operations are supported on pointers to +void and on pointers to functions. This is done by treating the +size of a void or of a function as 1. + +

A consequence of this is that sizeof is also allowed on void +and on function types, and returns 1. + +

The option -Wpointer-arith requests a warning if these extensions +are used. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-AltiVec-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-AltiVec-Built_002din-Functions.html new file mode 100644 index 0000000..e805ee2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-AltiVec-Built_002din-Functions.html @@ -0,0 +1,1934 @@ + + +PowerPC AltiVec Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

5.50.9 PowerPC AltiVec Built-in Functions

+ +

GCC provides an interface for the PowerPC family of processors to access +the AltiVec operations described in Motorola's AltiVec Programming +Interface Manual. The interface is made available by including +<altivec.h> and using -maltivec and +-mabi=altivec. The interface supports the following vector +types. + +

     vector unsigned char
+     vector signed char
+     vector bool char
+     
+     vector unsigned short
+     vector signed short
+     vector bool short
+     vector pixel
+     
+     vector unsigned int
+     vector signed int
+     vector bool int
+     vector float
+
+

GCC's implementation of the high-level language interface available from +C and C++ code differs from Motorola's documentation in several ways. + +

    +
  • A vector constant is a list of constant expressions within curly braces. + +
  • A vector initializer requires no cast if the vector constant is of the +same type as the variable it is initializing. + +
  • If signed or unsigned is omitted, the signedness of the +vector type is the default signedness of the base type. The default +varies depending on the operating system, so a portable program should +always specify the signedness. + +
  • Compiling with -maltivec adds keywords __vector, +__pixel, and __bool. Macros vector, +pixel, and bool are defined in <altivec.h> and can +be undefined. + +
  • GCC allows using a typedef name as the type specifier for a +vector type. + +
  • For C, overloaded functions are implemented with macros so the following +does not work: + +
                vec_add ((vector signed int){1, 2, 3, 4}, foo);
    +     
    +

    Since vec_add is a macro, the vector constant in the example +is treated as four separate arguments. Wrap the entire argument in +parentheses for this to work. +

+ +

Note: Only the <altivec.h> interface is supported. +Internally, GCC uses built-in functions to achieve the functionality in +the aforementioned header file, but they are not supported and are +subject to change without notice. + +

The following interfaces are supported for the generic and specific +AltiVec operations and the AltiVec predicates. In cases where there +is a direct mapping between generic and specific operations, only the +generic names are shown here, although the specific operations can also +be used. + +

Arguments that are documented as const int require literal +integral values within the range required for that operation. + +

     vector signed char vec_abs (vector signed char);
+     vector signed short vec_abs (vector signed short);
+     vector signed int vec_abs (vector signed int);
+     vector float vec_abs (vector float);
+     
+     vector signed char vec_abss (vector signed char);
+     vector signed short vec_abss (vector signed short);
+     vector signed int vec_abss (vector signed int);
+     
+     vector signed char vec_add (vector bool char, vector signed char);
+     vector signed char vec_add (vector signed char, vector bool char);
+     vector signed char vec_add (vector signed char, vector signed char);
+     vector unsigned char vec_add (vector bool char, vector unsigned char);
+     vector unsigned char vec_add (vector unsigned char, vector bool char);
+     vector unsigned char vec_add (vector unsigned char,
+                                   vector unsigned char);
+     vector signed short vec_add (vector bool short, vector signed short);
+     vector signed short vec_add (vector signed short, vector bool short);
+     vector signed short vec_add (vector signed short, vector signed short);
+     vector unsigned short vec_add (vector bool short,
+                                    vector unsigned short);
+     vector unsigned short vec_add (vector unsigned short,
+                                    vector bool short);
+     vector unsigned short vec_add (vector unsigned short,
+                                    vector unsigned short);
+     vector signed int vec_add (vector bool int, vector signed int);
+     vector signed int vec_add (vector signed int, vector bool int);
+     vector signed int vec_add (vector signed int, vector signed int);
+     vector unsigned int vec_add (vector bool int, vector unsigned int);
+     vector unsigned int vec_add (vector unsigned int, vector bool int);
+     vector unsigned int vec_add (vector unsigned int, vector unsigned int);
+     vector float vec_add (vector float, vector float);
+     
+     vector float vec_vaddfp (vector float, vector float);
+     
+     vector signed int vec_vadduwm (vector bool int, vector signed int);
+     vector signed int vec_vadduwm (vector signed int, vector bool int);
+     vector signed int vec_vadduwm (vector signed int, vector signed int);
+     vector unsigned int vec_vadduwm (vector bool int, vector unsigned int);
+     vector unsigned int vec_vadduwm (vector unsigned int, vector bool int);
+     vector unsigned int vec_vadduwm (vector unsigned int,
+                                      vector unsigned int);
+     
+     vector signed short vec_vadduhm (vector bool short,
+                                      vector signed short);
+     vector signed short vec_vadduhm (vector signed short,
+                                      vector bool short);
+     vector signed short vec_vadduhm (vector signed short,
+                                      vector signed short);
+     vector unsigned short vec_vadduhm (vector bool short,
+                                        vector unsigned short);
+     vector unsigned short vec_vadduhm (vector unsigned short,
+                                        vector bool short);
+     vector unsigned short vec_vadduhm (vector unsigned short,
+                                        vector unsigned short);
+     
+     vector signed char vec_vaddubm (vector bool char, vector signed char);
+     vector signed char vec_vaddubm (vector signed char, vector bool char);
+     vector signed char vec_vaddubm (vector signed char, vector signed char);
+     vector unsigned char vec_vaddubm (vector bool char,
+                                       vector unsigned char);
+     vector unsigned char vec_vaddubm (vector unsigned char,
+                                       vector bool char);
+     vector unsigned char vec_vaddubm (vector unsigned char,
+                                       vector unsigned char);
+     
+     vector unsigned int vec_addc (vector unsigned int, vector unsigned int);
+     
+     vector unsigned char vec_adds (vector bool char, vector unsigned char);
+     vector unsigned char vec_adds (vector unsigned char, vector bool char);
+     vector unsigned char vec_adds (vector unsigned char,
+                                    vector unsigned char);
+     vector signed char vec_adds (vector bool char, vector signed char);
+     vector signed char vec_adds (vector signed char, vector bool char);
+     vector signed char vec_adds (vector signed char, vector signed char);
+     vector unsigned short vec_adds (vector bool short,
+                                     vector unsigned short);
+     vector unsigned short vec_adds (vector unsigned short,
+                                     vector bool short);
+     vector unsigned short vec_adds (vector unsigned short,
+                                     vector unsigned short);
+     vector signed short vec_adds (vector bool short, vector signed short);
+     vector signed short vec_adds (vector signed short, vector bool short);
+     vector signed short vec_adds (vector signed short, vector signed short);
+     vector unsigned int vec_adds (vector bool int, vector unsigned int);
+     vector unsigned int vec_adds (vector unsigned int, vector bool int);
+     vector unsigned int vec_adds (vector unsigned int, vector unsigned int);
+     vector signed int vec_adds (vector bool int, vector signed int);
+     vector signed int vec_adds (vector signed int, vector bool int);
+     vector signed int vec_adds (vector signed int, vector signed int);
+     
+     vector signed int vec_vaddsws (vector bool int, vector signed int);
+     vector signed int vec_vaddsws (vector signed int, vector bool int);
+     vector signed int vec_vaddsws (vector signed int, vector signed int);
+     
+     vector unsigned int vec_vadduws (vector bool int, vector unsigned int);
+     vector unsigned int vec_vadduws (vector unsigned int, vector bool int);
+     vector unsigned int vec_vadduws (vector unsigned int,
+                                      vector unsigned int);
+     
+     vector signed short vec_vaddshs (vector bool short,
+                                      vector signed short);
+     vector signed short vec_vaddshs (vector signed short,
+                                      vector bool short);
+     vector signed short vec_vaddshs (vector signed short,
+                                      vector signed short);
+     
+     vector unsigned short vec_vadduhs (vector bool short,
+                                        vector unsigned short);
+     vector unsigned short vec_vadduhs (vector unsigned short,
+                                        vector bool short);
+     vector unsigned short vec_vadduhs (vector unsigned short,
+                                        vector unsigned short);
+     
+     vector signed char vec_vaddsbs (vector bool char, vector signed char);
+     vector signed char vec_vaddsbs (vector signed char, vector bool char);
+     vector signed char vec_vaddsbs (vector signed char, vector signed char);
+     
+     vector unsigned char vec_vaddubs (vector bool char,
+                                       vector unsigned char);
+     vector unsigned char vec_vaddubs (vector unsigned char,
+                                       vector bool char);
+     vector unsigned char vec_vaddubs (vector unsigned char,
+                                       vector unsigned char);
+     
+     vector float vec_and (vector float, vector float);
+     vector float vec_and (vector float, vector bool int);
+     vector float vec_and (vector bool int, vector float);
+     vector bool int vec_and (vector bool int, vector bool int);
+     vector signed int vec_and (vector bool int, vector signed int);
+     vector signed int vec_and (vector signed int, vector bool int);
+     vector signed int vec_and (vector signed int, vector signed int);
+     vector unsigned int vec_and (vector bool int, vector unsigned int);
+     vector unsigned int vec_and (vector unsigned int, vector bool int);
+     vector unsigned int vec_and (vector unsigned int, vector unsigned int);
+     vector bool short vec_and (vector bool short, vector bool short);
+     vector signed short vec_and (vector bool short, vector signed short);
+     vector signed short vec_and (vector signed short, vector bool short);
+     vector signed short vec_and (vector signed short, vector signed short);
+     vector unsigned short vec_and (vector bool short,
+                                    vector unsigned short);
+     vector unsigned short vec_and (vector unsigned short,
+                                    vector bool short);
+     vector unsigned short vec_and (vector unsigned short,
+                                    vector unsigned short);
+     vector signed char vec_and (vector bool char, vector signed char);
+     vector bool char vec_and (vector bool char, vector bool char);
+     vector signed char vec_and (vector signed char, vector bool char);
+     vector signed char vec_and (vector signed char, vector signed char);
+     vector unsigned char vec_and (vector bool char, vector unsigned char);
+     vector unsigned char vec_and (vector unsigned char, vector bool char);
+     vector unsigned char vec_and (vector unsigned char,
+                                   vector unsigned char);
+     
+     vector float vec_andc (vector float, vector float);
+     vector float vec_andc (vector float, vector bool int);
+     vector float vec_andc (vector bool int, vector float);
+     vector bool int vec_andc (vector bool int, vector bool int);
+     vector signed int vec_andc (vector bool int, vector signed int);
+     vector signed int vec_andc (vector signed int, vector bool int);
+     vector signed int vec_andc (vector signed int, vector signed int);
+     vector unsigned int vec_andc (vector bool int, vector unsigned int);
+     vector unsigned int vec_andc (vector unsigned int, vector bool int);
+     vector unsigned int vec_andc (vector unsigned int, vector unsigned int);
+     vector bool short vec_andc (vector bool short, vector bool short);
+     vector signed short vec_andc (vector bool short, vector signed short);
+     vector signed short vec_andc (vector signed short, vector bool short);
+     vector signed short vec_andc (vector signed short, vector signed short);
+     vector unsigned short vec_andc (vector bool short,
+                                     vector unsigned short);
+     vector unsigned short vec_andc (vector unsigned short,
+                                     vector bool short);
+     vector unsigned short vec_andc (vector unsigned short,
+                                     vector unsigned short);
+     vector signed char vec_andc (vector bool char, vector signed char);
+     vector bool char vec_andc (vector bool char, vector bool char);
+     vector signed char vec_andc (vector signed char, vector bool char);
+     vector signed char vec_andc (vector signed char, vector signed char);
+     vector unsigned char vec_andc (vector bool char, vector unsigned char);
+     vector unsigned char vec_andc (vector unsigned char, vector bool char);
+     vector unsigned char vec_andc (vector unsigned char,
+                                    vector unsigned char);
+     
+     vector unsigned char vec_avg (vector unsigned char,
+                                   vector unsigned char);
+     vector signed char vec_avg (vector signed char, vector signed char);
+     vector unsigned short vec_avg (vector unsigned short,
+                                    vector unsigned short);
+     vector signed short vec_avg (vector signed short, vector signed short);
+     vector unsigned int vec_avg (vector unsigned int, vector unsigned int);
+     vector signed int vec_avg (vector signed int, vector signed int);
+     
+     vector signed int vec_vavgsw (vector signed int, vector signed int);
+     
+     vector unsigned int vec_vavguw (vector unsigned int,
+                                     vector unsigned int);
+     
+     vector signed short vec_vavgsh (vector signed short,
+                                     vector signed short);
+     
+     vector unsigned short vec_vavguh (vector unsigned short,
+                                       vector unsigned short);
+     
+     vector signed char vec_vavgsb (vector signed char, vector signed char);
+     
+     vector unsigned char vec_vavgub (vector unsigned char,
+                                      vector unsigned char);
+     
+     vector float vec_ceil (vector float);
+     
+     vector signed int vec_cmpb (vector float, vector float);
+     
+     vector bool char vec_cmpeq (vector signed char, vector signed char);
+     vector bool char vec_cmpeq (vector unsigned char, vector unsigned char);
+     vector bool short vec_cmpeq (vector signed short, vector signed short);
+     vector bool short vec_cmpeq (vector unsigned short,
+                                  vector unsigned short);
+     vector bool int vec_cmpeq (vector signed int, vector signed int);
+     vector bool int vec_cmpeq (vector unsigned int, vector unsigned int);
+     vector bool int vec_cmpeq (vector float, vector float);
+     
+     vector bool int vec_vcmpeqfp (vector float, vector float);
+     
+     vector bool int vec_vcmpequw (vector signed int, vector signed int);
+     vector bool int vec_vcmpequw (vector unsigned int, vector unsigned int);
+     
+     vector bool short vec_vcmpequh (vector signed short,
+                                     vector signed short);
+     vector bool short vec_vcmpequh (vector unsigned short,
+                                     vector unsigned short);
+     
+     vector bool char vec_vcmpequb (vector signed char, vector signed char);
+     vector bool char vec_vcmpequb (vector unsigned char,
+                                    vector unsigned char);
+     
+     vector bool int vec_cmpge (vector float, vector float);
+     
+     vector bool char vec_cmpgt (vector unsigned char, vector unsigned char);
+     vector bool char vec_cmpgt (vector signed char, vector signed char);
+     vector bool short vec_cmpgt (vector unsigned short,
+                                  vector unsigned short);
+     vector bool short vec_cmpgt (vector signed short, vector signed short);
+     vector bool int vec_cmpgt (vector unsigned int, vector unsigned int);
+     vector bool int vec_cmpgt (vector signed int, vector signed int);
+     vector bool int vec_cmpgt (vector float, vector float);
+     
+     vector bool int vec_vcmpgtfp (vector float, vector float);
+     
+     vector bool int vec_vcmpgtsw (vector signed int, vector signed int);
+     
+     vector bool int vec_vcmpgtuw (vector unsigned int, vector unsigned int);
+     
+     vector bool short vec_vcmpgtsh (vector signed short,
+                                     vector signed short);
+     
+     vector bool short vec_vcmpgtuh (vector unsigned short,
+                                     vector unsigned short);
+     
+     vector bool char vec_vcmpgtsb (vector signed char, vector signed char);
+     
+     vector bool char vec_vcmpgtub (vector unsigned char,
+                                    vector unsigned char);
+     
+     vector bool int vec_cmple (vector float, vector float);
+     
+     vector bool char vec_cmplt (vector unsigned char, vector unsigned char);
+     vector bool char vec_cmplt (vector signed char, vector signed char);
+     vector bool short vec_cmplt (vector unsigned short,
+                                  vector unsigned short);
+     vector bool short vec_cmplt (vector signed short, vector signed short);
+     vector bool int vec_cmplt (vector unsigned int, vector unsigned int);
+     vector bool int vec_cmplt (vector signed int, vector signed int);
+     vector bool int vec_cmplt (vector float, vector float);
+     
+     vector float vec_ctf (vector unsigned int, const int);
+     vector float vec_ctf (vector signed int, const int);
+     
+     vector float vec_vcfsx (vector signed int, const int);
+     
+     vector float vec_vcfux (vector unsigned int, const int);
+     
+     vector signed int vec_cts (vector float, const int);
+     
+     vector unsigned int vec_ctu (vector float, const int);
+     
+     void vec_dss (const int);
+     
+     void vec_dssall (void);
+     
+     void vec_dst (const vector unsigned char *, int, const int);
+     void vec_dst (const vector signed char *, int, const int);
+     void vec_dst (const vector bool char *, int, const int);
+     void vec_dst (const vector unsigned short *, int, const int);
+     void vec_dst (const vector signed short *, int, const int);
+     void vec_dst (const vector bool short *, int, const int);
+     void vec_dst (const vector pixel *, int, const int);
+     void vec_dst (const vector unsigned int *, int, const int);
+     void vec_dst (const vector signed int *, int, const int);
+     void vec_dst (const vector bool int *, int, const int);
+     void vec_dst (const vector float *, int, const int);
+     void vec_dst (const unsigned char *, int, const int);
+     void vec_dst (const signed char *, int, const int);
+     void vec_dst (const unsigned short *, int, const int);
+     void vec_dst (const short *, int, const int);
+     void vec_dst (const unsigned int *, int, const int);
+     void vec_dst (const int *, int, const int);
+     void vec_dst (const unsigned long *, int, const int);
+     void vec_dst (const long *, int, const int);
+     void vec_dst (const float *, int, const int);
+     
+     void vec_dstst (const vector unsigned char *, int, const int);
+     void vec_dstst (const vector signed char *, int, const int);
+     void vec_dstst (const vector bool char *, int, const int);
+     void vec_dstst (const vector unsigned short *, int, const int);
+     void vec_dstst (const vector signed short *, int, const int);
+     void vec_dstst (const vector bool short *, int, const int);
+     void vec_dstst (const vector pixel *, int, const int);
+     void vec_dstst (const vector unsigned int *, int, const int);
+     void vec_dstst (const vector signed int *, int, const int);
+     void vec_dstst (const vector bool int *, int, const int);
+     void vec_dstst (const vector float *, int, const int);
+     void vec_dstst (const unsigned char *, int, const int);
+     void vec_dstst (const signed char *, int, const int);
+     void vec_dstst (const unsigned short *, int, const int);
+     void vec_dstst (const short *, int, const int);
+     void vec_dstst (const unsigned int *, int, const int);
+     void vec_dstst (const int *, int, const int);
+     void vec_dstst (const unsigned long *, int, const int);
+     void vec_dstst (const long *, int, const int);
+     void vec_dstst (const float *, int, const int);
+     
+     void vec_dststt (const vector unsigned char *, int, const int);
+     void vec_dststt (const vector signed char *, int, const int);
+     void vec_dststt (const vector bool char *, int, const int);
+     void vec_dststt (const vector unsigned short *, int, const int);
+     void vec_dststt (const vector signed short *, int, const int);
+     void vec_dststt (const vector bool short *, int, const int);
+     void vec_dststt (const vector pixel *, int, const int);
+     void vec_dststt (const vector unsigned int *, int, const int);
+     void vec_dststt (const vector signed int *, int, const int);
+     void vec_dststt (const vector bool int *, int, const int);
+     void vec_dststt (const vector float *, int, const int);
+     void vec_dststt (const unsigned char *, int, const int);
+     void vec_dststt (const signed char *, int, const int);
+     void vec_dststt (const unsigned short *, int, const int);
+     void vec_dststt (const short *, int, const int);
+     void vec_dststt (const unsigned int *, int, const int);
+     void vec_dststt (const int *, int, const int);
+     void vec_dststt (const unsigned long *, int, const int);
+     void vec_dststt (const long *, int, const int);
+     void vec_dststt (const float *, int, const int);
+     
+     void vec_dstt (const vector unsigned char *, int, const int);
+     void vec_dstt (const vector signed char *, int, const int);
+     void vec_dstt (const vector bool char *, int, const int);
+     void vec_dstt (const vector unsigned short *, int, const int);
+     void vec_dstt (const vector signed short *, int, const int);
+     void vec_dstt (const vector bool short *, int, const int);
+     void vec_dstt (const vector pixel *, int, const int);
+     void vec_dstt (const vector unsigned int *, int, const int);
+     void vec_dstt (const vector signed int *, int, const int);
+     void vec_dstt (const vector bool int *, int, const int);
+     void vec_dstt (const vector float *, int, const int);
+     void vec_dstt (const unsigned char *, int, const int);
+     void vec_dstt (const signed char *, int, const int);
+     void vec_dstt (const unsigned short *, int, const int);
+     void vec_dstt (const short *, int, const int);
+     void vec_dstt (const unsigned int *, int, const int);
+     void vec_dstt (const int *, int, const int);
+     void vec_dstt (const unsigned long *, int, const int);
+     void vec_dstt (const long *, int, const int);
+     void vec_dstt (const float *, int, const int);
+     
+     vector float vec_expte (vector float);
+     
+     vector float vec_floor (vector float);
+     
+     vector float vec_ld (int, const vector float *);
+     vector float vec_ld (int, const float *);
+     vector bool int vec_ld (int, const vector bool int *);
+     vector signed int vec_ld (int, const vector signed int *);
+     vector signed int vec_ld (int, const int *);
+     vector signed int vec_ld (int, const long *);
+     vector unsigned int vec_ld (int, const vector unsigned int *);
+     vector unsigned int vec_ld (int, const unsigned int *);
+     vector unsigned int vec_ld (int, const unsigned long *);
+     vector bool short vec_ld (int, const vector bool short *);
+     vector pixel vec_ld (int, const vector pixel *);
+     vector signed short vec_ld (int, const vector signed short *);
+     vector signed short vec_ld (int, const short *);
+     vector unsigned short vec_ld (int, const vector unsigned short *);
+     vector unsigned short vec_ld (int, const unsigned short *);
+     vector bool char vec_ld (int, const vector bool char *);
+     vector signed char vec_ld (int, const vector signed char *);
+     vector signed char vec_ld (int, const signed char *);
+     vector unsigned char vec_ld (int, const vector unsigned char *);
+     vector unsigned char vec_ld (int, const unsigned char *);
+     
+     vector signed char vec_lde (int, const signed char *);
+     vector unsigned char vec_lde (int, const unsigned char *);
+     vector signed short vec_lde (int, const short *);
+     vector unsigned short vec_lde (int, const unsigned short *);
+     vector float vec_lde (int, const float *);
+     vector signed int vec_lde (int, const int *);
+     vector unsigned int vec_lde (int, const unsigned int *);
+     vector signed int vec_lde (int, const long *);
+     vector unsigned int vec_lde (int, const unsigned long *);
+     
+     vector float vec_lvewx (int, float *);
+     vector signed int vec_lvewx (int, int *);
+     vector unsigned int vec_lvewx (int, unsigned int *);
+     vector signed int vec_lvewx (int, long *);
+     vector unsigned int vec_lvewx (int, unsigned long *);
+     
+     vector signed short vec_lvehx (int, short *);
+     vector unsigned short vec_lvehx (int, unsigned short *);
+     
+     vector signed char vec_lvebx (int, char *);
+     vector unsigned char vec_lvebx (int, unsigned char *);
+     
+     vector float vec_ldl (int, const vector float *);
+     vector float vec_ldl (int, const float *);
+     vector bool int vec_ldl (int, const vector bool int *);
+     vector signed int vec_ldl (int, const vector signed int *);
+     vector signed int vec_ldl (int, const int *);
+     vector signed int vec_ldl (int, const long *);
+     vector unsigned int vec_ldl (int, const vector unsigned int *);
+     vector unsigned int vec_ldl (int, const unsigned int *);
+     vector unsigned int vec_ldl (int, const unsigned long *);
+     vector bool short vec_ldl (int, const vector bool short *);
+     vector pixel vec_ldl (int, const vector pixel *);
+     vector signed short vec_ldl (int, const vector signed short *);
+     vector signed short vec_ldl (int, const short *);
+     vector unsigned short vec_ldl (int, const vector unsigned short *);
+     vector unsigned short vec_ldl (int, const unsigned short *);
+     vector bool char vec_ldl (int, const vector bool char *);
+     vector signed char vec_ldl (int, const vector signed char *);
+     vector signed char vec_ldl (int, const signed char *);
+     vector unsigned char vec_ldl (int, const vector unsigned char *);
+     vector unsigned char vec_ldl (int, const unsigned char *);
+     
+     vector float vec_loge (vector float);
+     
+     vector unsigned char vec_lvsl (int, const volatile unsigned char *);
+     vector unsigned char vec_lvsl (int, const volatile signed char *);
+     vector unsigned char vec_lvsl (int, const volatile unsigned short *);
+     vector unsigned char vec_lvsl (int, const volatile short *);
+     vector unsigned char vec_lvsl (int, const volatile unsigned int *);
+     vector unsigned char vec_lvsl (int, const volatile int *);
+     vector unsigned char vec_lvsl (int, const volatile unsigned long *);
+     vector unsigned char vec_lvsl (int, const volatile long *);
+     vector unsigned char vec_lvsl (int, const volatile float *);
+     
+     vector unsigned char vec_lvsr (int, const volatile unsigned char *);
+     vector unsigned char vec_lvsr (int, const volatile signed char *);
+     vector unsigned char vec_lvsr (int, const volatile unsigned short *);
+     vector unsigned char vec_lvsr (int, const volatile short *);
+     vector unsigned char vec_lvsr (int, const volatile unsigned int *);
+     vector unsigned char vec_lvsr (int, const volatile int *);
+     vector unsigned char vec_lvsr (int, const volatile unsigned long *);
+     vector unsigned char vec_lvsr (int, const volatile long *);
+     vector unsigned char vec_lvsr (int, const volatile float *);
+     
+     vector float vec_madd (vector float, vector float, vector float);
+     
+     vector signed short vec_madds (vector signed short,
+                                    vector signed short,
+                                    vector signed short);
+     
+     vector unsigned char vec_max (vector bool char, vector unsigned char);
+     vector unsigned char vec_max (vector unsigned char, vector bool char);
+     vector unsigned char vec_max (vector unsigned char,
+                                   vector unsigned char);
+     vector signed char vec_max (vector bool char, vector signed char);
+     vector signed char vec_max (vector signed char, vector bool char);
+     vector signed char vec_max (vector signed char, vector signed char);
+     vector unsigned short vec_max (vector bool short,
+                                    vector unsigned short);
+     vector unsigned short vec_max (vector unsigned short,
+                                    vector bool short);
+     vector unsigned short vec_max (vector unsigned short,
+                                    vector unsigned short);
+     vector signed short vec_max (vector bool short, vector signed short);
+     vector signed short vec_max (vector signed short, vector bool short);
+     vector signed short vec_max (vector signed short, vector signed short);
+     vector unsigned int vec_max (vector bool int, vector unsigned int);
+     vector unsigned int vec_max (vector unsigned int, vector bool int);
+     vector unsigned int vec_max (vector unsigned int, vector unsigned int);
+     vector signed int vec_max (vector bool int, vector signed int);
+     vector signed int vec_max (vector signed int, vector bool int);
+     vector signed int vec_max (vector signed int, vector signed int);
+     vector float vec_max (vector float, vector float);
+     
+     vector float vec_vmaxfp (vector float, vector float);
+     
+     vector signed int vec_vmaxsw (vector bool int, vector signed int);
+     vector signed int vec_vmaxsw (vector signed int, vector bool int);
+     vector signed int vec_vmaxsw (vector signed int, vector signed int);
+     
+     vector unsigned int vec_vmaxuw (vector bool int, vector unsigned int);
+     vector unsigned int vec_vmaxuw (vector unsigned int, vector bool int);
+     vector unsigned int vec_vmaxuw (vector unsigned int,
+                                     vector unsigned int);
+     
+     vector signed short vec_vmaxsh (vector bool short, vector signed short);
+     vector signed short vec_vmaxsh (vector signed short, vector bool short);
+     vector signed short vec_vmaxsh (vector signed short,
+                                     vector signed short);
+     
+     vector unsigned short vec_vmaxuh (vector bool short,
+                                       vector unsigned short);
+     vector unsigned short vec_vmaxuh (vector unsigned short,
+                                       vector bool short);
+     vector unsigned short vec_vmaxuh (vector unsigned short,
+                                       vector unsigned short);
+     
+     vector signed char vec_vmaxsb (vector bool char, vector signed char);
+     vector signed char vec_vmaxsb (vector signed char, vector bool char);
+     vector signed char vec_vmaxsb (vector signed char, vector signed char);
+     
+     vector unsigned char vec_vmaxub (vector bool char,
+                                      vector unsigned char);
+     vector unsigned char vec_vmaxub (vector unsigned char,
+                                      vector bool char);
+     vector unsigned char vec_vmaxub (vector unsigned char,
+                                      vector unsigned char);
+     
+     vector bool char vec_mergeh (vector bool char, vector bool char);
+     vector signed char vec_mergeh (vector signed char, vector signed char);
+     vector unsigned char vec_mergeh (vector unsigned char,
+                                      vector unsigned char);
+     vector bool short vec_mergeh (vector bool short, vector bool short);
+     vector pixel vec_mergeh (vector pixel, vector pixel);
+     vector signed short vec_mergeh (vector signed short,
+                                     vector signed short);
+     vector unsigned short vec_mergeh (vector unsigned short,
+                                       vector unsigned short);
+     vector float vec_mergeh (vector float, vector float);
+     vector bool int vec_mergeh (vector bool int, vector bool int);
+     vector signed int vec_mergeh (vector signed int, vector signed int);
+     vector unsigned int vec_mergeh (vector unsigned int,
+                                     vector unsigned int);
+     
+     vector float vec_vmrghw (vector float, vector float);
+     vector bool int vec_vmrghw (vector bool int, vector bool int);
+     vector signed int vec_vmrghw (vector signed int, vector signed int);
+     vector unsigned int vec_vmrghw (vector unsigned int,
+                                     vector unsigned int);
+     
+     vector bool short vec_vmrghh (vector bool short, vector bool short);
+     vector signed short vec_vmrghh (vector signed short,
+                                     vector signed short);
+     vector unsigned short vec_vmrghh (vector unsigned short,
+                                       vector unsigned short);
+     vector pixel vec_vmrghh (vector pixel, vector pixel);
+     
+     vector bool char vec_vmrghb (vector bool char, vector bool char);
+     vector signed char vec_vmrghb (vector signed char, vector signed char);
+     vector unsigned char vec_vmrghb (vector unsigned char,
+                                      vector unsigned char);
+     
+     vector bool char vec_mergel (vector bool char, vector bool char);
+     vector signed char vec_mergel (vector signed char, vector signed char);
+     vector unsigned char vec_mergel (vector unsigned char,
+                                      vector unsigned char);
+     vector bool short vec_mergel (vector bool short, vector bool short);
+     vector pixel vec_mergel (vector pixel, vector pixel);
+     vector signed short vec_mergel (vector signed short,
+                                     vector signed short);
+     vector unsigned short vec_mergel (vector unsigned short,
+                                       vector unsigned short);
+     vector float vec_mergel (vector float, vector float);
+     vector bool int vec_mergel (vector bool int, vector bool int);
+     vector signed int vec_mergel (vector signed int, vector signed int);
+     vector unsigned int vec_mergel (vector unsigned int,
+                                     vector unsigned int);
+     
+     vector float vec_vmrglw (vector float, vector float);
+     vector signed int vec_vmrglw (vector signed int, vector signed int);
+     vector unsigned int vec_vmrglw (vector unsigned int,
+                                     vector unsigned int);
+     vector bool int vec_vmrglw (vector bool int, vector bool int);
+     
+     vector bool short vec_vmrglh (vector bool short, vector bool short);
+     vector signed short vec_vmrglh (vector signed short,
+                                     vector signed short);
+     vector unsigned short vec_vmrglh (vector unsigned short,
+                                       vector unsigned short);
+     vector pixel vec_vmrglh (vector pixel, vector pixel);
+     
+     vector bool char vec_vmrglb (vector bool char, vector bool char);
+     vector signed char vec_vmrglb (vector signed char, vector signed char);
+     vector unsigned char vec_vmrglb (vector unsigned char,
+                                      vector unsigned char);
+     
+     vector unsigned short vec_mfvscr (void);
+     
+     vector unsigned char vec_min (vector bool char, vector unsigned char);
+     vector unsigned char vec_min (vector unsigned char, vector bool char);
+     vector unsigned char vec_min (vector unsigned char,
+                                   vector unsigned char);
+     vector signed char vec_min (vector bool char, vector signed char);
+     vector signed char vec_min (vector signed char, vector bool char);
+     vector signed char vec_min (vector signed char, vector signed char);
+     vector unsigned short vec_min (vector bool short,
+                                    vector unsigned short);
+     vector unsigned short vec_min (vector unsigned short,
+                                    vector bool short);
+     vector unsigned short vec_min (vector unsigned short,
+                                    vector unsigned short);
+     vector signed short vec_min (vector bool short, vector signed short);
+     vector signed short vec_min (vector signed short, vector bool short);
+     vector signed short vec_min (vector signed short, vector signed short);
+     vector unsigned int vec_min (vector bool int, vector unsigned int);
+     vector unsigned int vec_min (vector unsigned int, vector bool int);
+     vector unsigned int vec_min (vector unsigned int, vector unsigned int);
+     vector signed int vec_min (vector bool int, vector signed int);
+     vector signed int vec_min (vector signed int, vector bool int);
+     vector signed int vec_min (vector signed int, vector signed int);
+     vector float vec_min (vector float, vector float);
+     
+     vector float vec_vminfp (vector float, vector float);
+     
+     vector signed int vec_vminsw (vector bool int, vector signed int);
+     vector signed int vec_vminsw (vector signed int, vector bool int);
+     vector signed int vec_vminsw (vector signed int, vector signed int);
+     
+     vector unsigned int vec_vminuw (vector bool int, vector unsigned int);
+     vector unsigned int vec_vminuw (vector unsigned int, vector bool int);
+     vector unsigned int vec_vminuw (vector unsigned int,
+                                     vector unsigned int);
+     
+     vector signed short vec_vminsh (vector bool short, vector signed short);
+     vector signed short vec_vminsh (vector signed short, vector bool short);
+     vector signed short vec_vminsh (vector signed short,
+                                     vector signed short);
+     
+     vector unsigned short vec_vminuh (vector bool short,
+                                       vector unsigned short);
+     vector unsigned short vec_vminuh (vector unsigned short,
+                                       vector bool short);
+     vector unsigned short vec_vminuh (vector unsigned short,
+                                       vector unsigned short);
+     
+     vector signed char vec_vminsb (vector bool char, vector signed char);
+     vector signed char vec_vminsb (vector signed char, vector bool char);
+     vector signed char vec_vminsb (vector signed char, vector signed char);
+     
+     vector unsigned char vec_vminub (vector bool char,
+                                      vector unsigned char);
+     vector unsigned char vec_vminub (vector unsigned char,
+                                      vector bool char);
+     vector unsigned char vec_vminub (vector unsigned char,
+                                      vector unsigned char);
+     
+     vector signed short vec_mladd (vector signed short,
+                                    vector signed short,
+                                    vector signed short);
+     vector signed short vec_mladd (vector signed short,
+                                    vector unsigned short,
+                                    vector unsigned short);
+     vector signed short vec_mladd (vector unsigned short,
+                                    vector signed short,
+                                    vector signed short);
+     vector unsigned short vec_mladd (vector unsigned short,
+                                      vector unsigned short,
+                                      vector unsigned short);
+     
+     vector signed short vec_mradds (vector signed short,
+                                     vector signed short,
+                                     vector signed short);
+     
+     vector unsigned int vec_msum (vector unsigned char,
+                                   vector unsigned char,
+                                   vector unsigned int);
+     vector signed int vec_msum (vector signed char,
+                                 vector unsigned char,
+                                 vector signed int);
+     vector unsigned int vec_msum (vector unsigned short,
+                                   vector unsigned short,
+                                   vector unsigned int);
+     vector signed int vec_msum (vector signed short,
+                                 vector signed short,
+                                 vector signed int);
+     
+     vector signed int vec_vmsumshm (vector signed short,
+                                     vector signed short,
+                                     vector signed int);
+     
+     vector unsigned int vec_vmsumuhm (vector unsigned short,
+                                       vector unsigned short,
+                                       vector unsigned int);
+     
+     vector signed int vec_vmsummbm (vector signed char,
+                                     vector unsigned char,
+                                     vector signed int);
+     
+     vector unsigned int vec_vmsumubm (vector unsigned char,
+                                       vector unsigned char,
+                                       vector unsigned int);
+     
+     vector unsigned int vec_msums (vector unsigned short,
+                                    vector unsigned short,
+                                    vector unsigned int);
+     vector signed int vec_msums (vector signed short,
+                                  vector signed short,
+                                  vector signed int);
+     
+     vector signed int vec_vmsumshs (vector signed short,
+                                     vector signed short,
+                                     vector signed int);
+     
+     vector unsigned int vec_vmsumuhs (vector unsigned short,
+                                       vector unsigned short,
+                                       vector unsigned int);
+     
+     void vec_mtvscr (vector signed int);
+     void vec_mtvscr (vector unsigned int);
+     void vec_mtvscr (vector bool int);
+     void vec_mtvscr (vector signed short);
+     void vec_mtvscr (vector unsigned short);
+     void vec_mtvscr (vector bool short);
+     void vec_mtvscr (vector pixel);
+     void vec_mtvscr (vector signed char);
+     void vec_mtvscr (vector unsigned char);
+     void vec_mtvscr (vector bool char);
+     
+     vector unsigned short vec_mule (vector unsigned char,
+                                     vector unsigned char);
+     vector signed short vec_mule (vector signed char,
+                                   vector signed char);
+     vector unsigned int vec_mule (vector unsigned short,
+                                   vector unsigned short);
+     vector signed int vec_mule (vector signed short, vector signed short);
+     
+     vector signed int vec_vmulesh (vector signed short,
+                                    vector signed short);
+     
+     vector unsigned int vec_vmuleuh (vector unsigned short,
+                                      vector unsigned short);
+     
+     vector signed short vec_vmulesb (vector signed char,
+                                      vector signed char);
+     
+     vector unsigned short vec_vmuleub (vector unsigned char,
+                                       vector unsigned char);
+     
+     vector unsigned short vec_mulo (vector unsigned char,
+                                     vector unsigned char);
+     vector signed short vec_mulo (vector signed char, vector signed char);
+     vector unsigned int vec_mulo (vector unsigned short,
+                                   vector unsigned short);
+     vector signed int vec_mulo (vector signed short, vector signed short);
+     
+     vector signed int vec_vmulosh (vector signed short,
+                                    vector signed short);
+     
+     vector unsigned int vec_vmulouh (vector unsigned short,
+                                      vector unsigned short);
+     
+     vector signed short vec_vmulosb (vector signed char,
+                                      vector signed char);
+     
+     vector unsigned short vec_vmuloub (vector unsigned char,
+                                        vector unsigned char);
+     
+     vector float vec_nmsub (vector float, vector float, vector float);
+     
+     vector float vec_nor (vector float, vector float);
+     vector signed int vec_nor (vector signed int, vector signed int);
+     vector unsigned int vec_nor (vector unsigned int, vector unsigned int);
+     vector bool int vec_nor (vector bool int, vector bool int);
+     vector signed short vec_nor (vector signed short, vector signed short);
+     vector unsigned short vec_nor (vector unsigned short,
+                                    vector unsigned short);
+     vector bool short vec_nor (vector bool short, vector bool short);
+     vector signed char vec_nor (vector signed char, vector signed char);
+     vector unsigned char vec_nor (vector unsigned char,
+                                   vector unsigned char);
+     vector bool char vec_nor (vector bool char, vector bool char);
+     
+     vector float vec_or (vector float, vector float);
+     vector float vec_or (vector float, vector bool int);
+     vector float vec_or (vector bool int, vector float);
+     vector bool int vec_or (vector bool int, vector bool int);
+     vector signed int vec_or (vector bool int, vector signed int);
+     vector signed int vec_or (vector signed int, vector bool int);
+     vector signed int vec_or (vector signed int, vector signed int);
+     vector unsigned int vec_or (vector bool int, vector unsigned int);
+     vector unsigned int vec_or (vector unsigned int, vector bool int);
+     vector unsigned int vec_or (vector unsigned int, vector unsigned int);
+     vector bool short vec_or (vector bool short, vector bool short);
+     vector signed short vec_or (vector bool short, vector signed short);
+     vector signed short vec_or (vector signed short, vector bool short);
+     vector signed short vec_or (vector signed short, vector signed short);
+     vector unsigned short vec_or (vector bool short, vector unsigned short);
+     vector unsigned short vec_or (vector unsigned short, vector bool short);
+     vector unsigned short vec_or (vector unsigned short,
+                                   vector unsigned short);
+     vector signed char vec_or (vector bool char, vector signed char);
+     vector bool char vec_or (vector bool char, vector bool char);
+     vector signed char vec_or (vector signed char, vector bool char);
+     vector signed char vec_or (vector signed char, vector signed char);
+     vector unsigned char vec_or (vector bool char, vector unsigned char);
+     vector unsigned char vec_or (vector unsigned char, vector bool char);
+     vector unsigned char vec_or (vector unsigned char,
+                                  vector unsigned char);
+     
+     vector signed char vec_pack (vector signed short, vector signed short);
+     vector unsigned char vec_pack (vector unsigned short,
+                                    vector unsigned short);
+     vector bool char vec_pack (vector bool short, vector bool short);
+     vector signed short vec_pack (vector signed int, vector signed int);
+     vector unsigned short vec_pack (vector unsigned int,
+                                     vector unsigned int);
+     vector bool short vec_pack (vector bool int, vector bool int);
+     
+     vector bool short vec_vpkuwum (vector bool int, vector bool int);
+     vector signed short vec_vpkuwum (vector signed int, vector signed int);
+     vector unsigned short vec_vpkuwum (vector unsigned int,
+                                        vector unsigned int);
+     
+     vector bool char vec_vpkuhum (vector bool short, vector bool short);
+     vector signed char vec_vpkuhum (vector signed short,
+                                     vector signed short);
+     vector unsigned char vec_vpkuhum (vector unsigned short,
+                                       vector unsigned short);
+     
+     vector pixel vec_packpx (vector unsigned int, vector unsigned int);
+     
+     vector unsigned char vec_packs (vector unsigned short,
+                                     vector unsigned short);
+     vector signed char vec_packs (vector signed short, vector signed short);
+     vector unsigned short vec_packs (vector unsigned int,
+                                      vector unsigned int);
+     vector signed short vec_packs (vector signed int, vector signed int);
+     
+     vector signed short vec_vpkswss (vector signed int, vector signed int);
+     
+     vector unsigned short vec_vpkuwus (vector unsigned int,
+                                        vector unsigned int);
+     
+     vector signed char vec_vpkshss (vector signed short,
+                                     vector signed short);
+     
+     vector unsigned char vec_vpkuhus (vector unsigned short,
+                                       vector unsigned short);
+     
+     vector unsigned char vec_packsu (vector unsigned short,
+                                      vector unsigned short);
+     vector unsigned char vec_packsu (vector signed short,
+                                      vector signed short);
+     vector unsigned short vec_packsu (vector unsigned int,
+                                       vector unsigned int);
+     vector unsigned short vec_packsu (vector signed int, vector signed int);
+     
+     vector unsigned short vec_vpkswus (vector signed int,
+                                        vector signed int);
+     
+     vector unsigned char vec_vpkshus (vector signed short,
+                                       vector signed short);
+     
+     vector float vec_perm (vector float,
+                            vector float,
+                            vector unsigned char);
+     vector signed int vec_perm (vector signed int,
+                                 vector signed int,
+                                 vector unsigned char);
+     vector unsigned int vec_perm (vector unsigned int,
+                                   vector unsigned int,
+                                   vector unsigned char);
+     vector bool int vec_perm (vector bool int,
+                               vector bool int,
+                               vector unsigned char);
+     vector signed short vec_perm (vector signed short,
+                                   vector signed short,
+                                   vector unsigned char);
+     vector unsigned short vec_perm (vector unsigned short,
+                                     vector unsigned short,
+                                     vector unsigned char);
+     vector bool short vec_perm (vector bool short,
+                                 vector bool short,
+                                 vector unsigned char);
+     vector pixel vec_perm (vector pixel,
+                            vector pixel,
+                            vector unsigned char);
+     vector signed char vec_perm (vector signed char,
+                                  vector signed char,
+                                  vector unsigned char);
+     vector unsigned char vec_perm (vector unsigned char,
+                                    vector unsigned char,
+                                    vector unsigned char);
+     vector bool char vec_perm (vector bool char,
+                                vector bool char,
+                                vector unsigned char);
+     
+     vector float vec_re (vector float);
+     
+     vector signed char vec_rl (vector signed char,
+                                vector unsigned char);
+     vector unsigned char vec_rl (vector unsigned char,
+                                  vector unsigned char);
+     vector signed short vec_rl (vector signed short, vector unsigned short);
+     vector unsigned short vec_rl (vector unsigned short,
+                                   vector unsigned short);
+     vector signed int vec_rl (vector signed int, vector unsigned int);
+     vector unsigned int vec_rl (vector unsigned int, vector unsigned int);
+     
+     vector signed int vec_vrlw (vector signed int, vector unsigned int);
+     vector unsigned int vec_vrlw (vector unsigned int, vector unsigned int);
+     
+     vector signed short vec_vrlh (vector signed short,
+                                   vector unsigned short);
+     vector unsigned short vec_vrlh (vector unsigned short,
+                                     vector unsigned short);
+     
+     vector signed char vec_vrlb (vector signed char, vector unsigned char);
+     vector unsigned char vec_vrlb (vector unsigned char,
+                                    vector unsigned char);
+     
+     vector float vec_round (vector float);
+     
+     vector float vec_rsqrte (vector float);
+     
+     vector float vec_sel (vector float, vector float, vector bool int);
+     vector float vec_sel (vector float, vector float, vector unsigned int);
+     vector signed int vec_sel (vector signed int,
+                                vector signed int,
+                                vector bool int);
+     vector signed int vec_sel (vector signed int,
+                                vector signed int,
+                                vector unsigned int);
+     vector unsigned int vec_sel (vector unsigned int,
+                                  vector unsigned int,
+                                  vector bool int);
+     vector unsigned int vec_sel (vector unsigned int,
+                                  vector unsigned int,
+                                  vector unsigned int);
+     vector bool int vec_sel (vector bool int,
+                              vector bool int,
+                              vector bool int);
+     vector bool int vec_sel (vector bool int,
+                              vector bool int,
+                              vector unsigned int);
+     vector signed short vec_sel (vector signed short,
+                                  vector signed short,
+                                  vector bool short);
+     vector signed short vec_sel (vector signed short,
+                                  vector signed short,
+                                  vector unsigned short);
+     vector unsigned short vec_sel (vector unsigned short,
+                                    vector unsigned short,
+                                    vector bool short);
+     vector unsigned short vec_sel (vector unsigned short,
+                                    vector unsigned short,
+                                    vector unsigned short);
+     vector bool short vec_sel (vector bool short,
+                                vector bool short,
+                                vector bool short);
+     vector bool short vec_sel (vector bool short,
+                                vector bool short,
+                                vector unsigned short);
+     vector signed char vec_sel (vector signed char,
+                                 vector signed char,
+                                 vector bool char);
+     vector signed char vec_sel (vector signed char,
+                                 vector signed char,
+                                 vector unsigned char);
+     vector unsigned char vec_sel (vector unsigned char,
+                                   vector unsigned char,
+                                   vector bool char);
+     vector unsigned char vec_sel (vector unsigned char,
+                                   vector unsigned char,
+                                   vector unsigned char);
+     vector bool char vec_sel (vector bool char,
+                               vector bool char,
+                               vector bool char);
+     vector bool char vec_sel (vector bool char,
+                               vector bool char,
+                               vector unsigned char);
+     
+     vector signed char vec_sl (vector signed char,
+                                vector unsigned char);
+     vector unsigned char vec_sl (vector unsigned char,
+                                  vector unsigned char);
+     vector signed short vec_sl (vector signed short, vector unsigned short);
+     vector unsigned short vec_sl (vector unsigned short,
+                                   vector unsigned short);
+     vector signed int vec_sl (vector signed int, vector unsigned int);
+     vector unsigned int vec_sl (vector unsigned int, vector unsigned int);
+     
+     vector signed int vec_vslw (vector signed int, vector unsigned int);
+     vector unsigned int vec_vslw (vector unsigned int, vector unsigned int);
+     
+     vector signed short vec_vslh (vector signed short,
+                                   vector unsigned short);
+     vector unsigned short vec_vslh (vector unsigned short,
+                                     vector unsigned short);
+     
+     vector signed char vec_vslb (vector signed char, vector unsigned char);
+     vector unsigned char vec_vslb (vector unsigned char,
+                                    vector unsigned char);
+     
+     vector float vec_sld (vector float, vector float, const int);
+     vector signed int vec_sld (vector signed int,
+                                vector signed int,
+                                const int);
+     vector unsigned int vec_sld (vector unsigned int,
+                                  vector unsigned int,
+                                  const int);
+     vector bool int vec_sld (vector bool int,
+                              vector bool int,
+                              const int);
+     vector signed short vec_sld (vector signed short,
+                                  vector signed short,
+                                  const int);
+     vector unsigned short vec_sld (vector unsigned short,
+                                    vector unsigned short,
+                                    const int);
+     vector bool short vec_sld (vector bool short,
+                                vector bool short,
+                                const int);
+     vector pixel vec_sld (vector pixel,
+                           vector pixel,
+                           const int);
+     vector signed char vec_sld (vector signed char,
+                                 vector signed char,
+                                 const int);
+     vector unsigned char vec_sld (vector unsigned char,
+                                   vector unsigned char,
+                                   const int);
+     vector bool char vec_sld (vector bool char,
+                               vector bool char,
+                               const int);
+     
+     vector signed int vec_sll (vector signed int,
+                                vector unsigned int);
+     vector signed int vec_sll (vector signed int,
+                                vector unsigned short);
+     vector signed int vec_sll (vector signed int,
+                                vector unsigned char);
+     vector unsigned int vec_sll (vector unsigned int,
+                                  vector unsigned int);
+     vector unsigned int vec_sll (vector unsigned int,
+                                  vector unsigned short);
+     vector unsigned int vec_sll (vector unsigned int,
+                                  vector unsigned char);
+     vector bool int vec_sll (vector bool int,
+                              vector unsigned int);
+     vector bool int vec_sll (vector bool int,
+                              vector unsigned short);
+     vector bool int vec_sll (vector bool int,
+                              vector unsigned char);
+     vector signed short vec_sll (vector signed short,
+                                  vector unsigned int);
+     vector signed short vec_sll (vector signed short,
+                                  vector unsigned short);
+     vector signed short vec_sll (vector signed short,
+                                  vector unsigned char);
+     vector unsigned short vec_sll (vector unsigned short,
+                                    vector unsigned int);
+     vector unsigned short vec_sll (vector unsigned short,
+                                    vector unsigned short);
+     vector unsigned short vec_sll (vector unsigned short,
+                                    vector unsigned char);
+     vector bool short vec_sll (vector bool short, vector unsigned int);
+     vector bool short vec_sll (vector bool short, vector unsigned short);
+     vector bool short vec_sll (vector bool short, vector unsigned char);
+     vector pixel vec_sll (vector pixel, vector unsigned int);
+     vector pixel vec_sll (vector pixel, vector unsigned short);
+     vector pixel vec_sll (vector pixel, vector unsigned char);
+     vector signed char vec_sll (vector signed char, vector unsigned int);
+     vector signed char vec_sll (vector signed char, vector unsigned short);
+     vector signed char vec_sll (vector signed char, vector unsigned char);
+     vector unsigned char vec_sll (vector unsigned char,
+                                   vector unsigned int);
+     vector unsigned char vec_sll (vector unsigned char,
+                                   vector unsigned short);
+     vector unsigned char vec_sll (vector unsigned char,
+                                   vector unsigned char);
+     vector bool char vec_sll (vector bool char, vector unsigned int);
+     vector bool char vec_sll (vector bool char, vector unsigned short);
+     vector bool char vec_sll (vector bool char, vector unsigned char);
+     
+     vector float vec_slo (vector float, vector signed char);
+     vector float vec_slo (vector float, vector unsigned char);
+     vector signed int vec_slo (vector signed int, vector signed char);
+     vector signed int vec_slo (vector signed int, vector unsigned char);
+     vector unsigned int vec_slo (vector unsigned int, vector signed char);
+     vector unsigned int vec_slo (vector unsigned int, vector unsigned char);
+     vector signed short vec_slo (vector signed short, vector signed char);
+     vector signed short vec_slo (vector signed short, vector unsigned char);
+     vector unsigned short vec_slo (vector unsigned short,
+                                    vector signed char);
+     vector unsigned short vec_slo (vector unsigned short,
+                                    vector unsigned char);
+     vector pixel vec_slo (vector pixel, vector signed char);
+     vector pixel vec_slo (vector pixel, vector unsigned char);
+     vector signed char vec_slo (vector signed char, vector signed char);
+     vector signed char vec_slo (vector signed char, vector unsigned char);
+     vector unsigned char vec_slo (vector unsigned char, vector signed char);
+     vector unsigned char vec_slo (vector unsigned char,
+                                   vector unsigned char);
+     
+     vector signed char vec_splat (vector signed char, const int);
+     vector unsigned char vec_splat (vector unsigned char, const int);
+     vector bool char vec_splat (vector bool char, const int);
+     vector signed short vec_splat (vector signed short, const int);
+     vector unsigned short vec_splat (vector unsigned short, const int);
+     vector bool short vec_splat (vector bool short, const int);
+     vector pixel vec_splat (vector pixel, const int);
+     vector float vec_splat (vector float, const int);
+     vector signed int vec_splat (vector signed int, const int);
+     vector unsigned int vec_splat (vector unsigned int, const int);
+     vector bool int vec_splat (vector bool int, const int);
+     
+     vector float vec_vspltw (vector float, const int);
+     vector signed int vec_vspltw (vector signed int, const int);
+     vector unsigned int vec_vspltw (vector unsigned int, const int);
+     vector bool int vec_vspltw (vector bool int, const int);
+     
+     vector bool short vec_vsplth (vector bool short, const int);
+     vector signed short vec_vsplth (vector signed short, const int);
+     vector unsigned short vec_vsplth (vector unsigned short, const int);
+     vector pixel vec_vsplth (vector pixel, const int);
+     
+     vector signed char vec_vspltb (vector signed char, const int);
+     vector unsigned char vec_vspltb (vector unsigned char, const int);
+     vector bool char vec_vspltb (vector bool char, const int);
+     
+     vector signed char vec_splat_s8 (const int);
+     
+     vector signed short vec_splat_s16 (const int);
+     
+     vector signed int vec_splat_s32 (const int);
+     
+     vector unsigned char vec_splat_u8 (const int);
+     
+     vector unsigned short vec_splat_u16 (const int);
+     
+     vector unsigned int vec_splat_u32 (const int);
+     
+     vector signed char vec_sr (vector signed char, vector unsigned char);
+     vector unsigned char vec_sr (vector unsigned char,
+                                  vector unsigned char);
+     vector signed short vec_sr (vector signed short,
+                                 vector unsigned short);
+     vector unsigned short vec_sr (vector unsigned short,
+                                   vector unsigned short);
+     vector signed int vec_sr (vector signed int, vector unsigned int);
+     vector unsigned int vec_sr (vector unsigned int, vector unsigned int);
+     
+     vector signed int vec_vsrw (vector signed int, vector unsigned int);
+     vector unsigned int vec_vsrw (vector unsigned int, vector unsigned int);
+     
+     vector signed short vec_vsrh (vector signed short,
+                                   vector unsigned short);
+     vector unsigned short vec_vsrh (vector unsigned short,
+                                     vector unsigned short);
+     
+     vector signed char vec_vsrb (vector signed char, vector unsigned char);
+     vector unsigned char vec_vsrb (vector unsigned char,
+                                    vector unsigned char);
+     
+     vector signed char vec_sra (vector signed char, vector unsigned char);
+     vector unsigned char vec_sra (vector unsigned char,
+                                   vector unsigned char);
+     vector signed short vec_sra (vector signed short,
+                                  vector unsigned short);
+     vector unsigned short vec_sra (vector unsigned short,
+                                    vector unsigned short);
+     vector signed int vec_sra (vector signed int, vector unsigned int);
+     vector unsigned int vec_sra (vector unsigned int, vector unsigned int);
+     
+     vector signed int vec_vsraw (vector signed int, vector unsigned int);
+     vector unsigned int vec_vsraw (vector unsigned int,
+                                    vector unsigned int);
+     
+     vector signed short vec_vsrah (vector signed short,
+                                    vector unsigned short);
+     vector unsigned short vec_vsrah (vector unsigned short,
+                                      vector unsigned short);
+     
+     vector signed char vec_vsrab (vector signed char, vector unsigned char);
+     vector unsigned char vec_vsrab (vector unsigned char,
+                                     vector unsigned char);
+     
+     vector signed int vec_srl (vector signed int, vector unsigned int);
+     vector signed int vec_srl (vector signed int, vector unsigned short);
+     vector signed int vec_srl (vector signed int, vector unsigned char);
+     vector unsigned int vec_srl (vector unsigned int, vector unsigned int);
+     vector unsigned int vec_srl (vector unsigned int,
+                                  vector unsigned short);
+     vector unsigned int vec_srl (vector unsigned int, vector unsigned char);
+     vector bool int vec_srl (vector bool int, vector unsigned int);
+     vector bool int vec_srl (vector bool int, vector unsigned short);
+     vector bool int vec_srl (vector bool int, vector unsigned char);
+     vector signed short vec_srl (vector signed short, vector unsigned int);
+     vector signed short vec_srl (vector signed short,
+                                  vector unsigned short);
+     vector signed short vec_srl (vector signed short, vector unsigned char);
+     vector unsigned short vec_srl (vector unsigned short,
+                                    vector unsigned int);
+     vector unsigned short vec_srl (vector unsigned short,
+                                    vector unsigned short);
+     vector unsigned short vec_srl (vector unsigned short,
+                                    vector unsigned char);
+     vector bool short vec_srl (vector bool short, vector unsigned int);
+     vector bool short vec_srl (vector bool short, vector unsigned short);
+     vector bool short vec_srl (vector bool short, vector unsigned char);
+     vector pixel vec_srl (vector pixel, vector unsigned int);
+     vector pixel vec_srl (vector pixel, vector unsigned short);
+     vector pixel vec_srl (vector pixel, vector unsigned char);
+     vector signed char vec_srl (vector signed char, vector unsigned int);
+     vector signed char vec_srl (vector signed char, vector unsigned short);
+     vector signed char vec_srl (vector signed char, vector unsigned char);
+     vector unsigned char vec_srl (vector unsigned char,
+                                   vector unsigned int);
+     vector unsigned char vec_srl (vector unsigned char,
+                                   vector unsigned short);
+     vector unsigned char vec_srl (vector unsigned char,
+                                   vector unsigned char);
+     vector bool char vec_srl (vector bool char, vector unsigned int);
+     vector bool char vec_srl (vector bool char, vector unsigned short);
+     vector bool char vec_srl (vector bool char, vector unsigned char);
+     
+     vector float vec_sro (vector float, vector signed char);
+     vector float vec_sro (vector float, vector unsigned char);
+     vector signed int vec_sro (vector signed int, vector signed char);
+     vector signed int vec_sro (vector signed int, vector unsigned char);
+     vector unsigned int vec_sro (vector unsigned int, vector signed char);
+     vector unsigned int vec_sro (vector unsigned int, vector unsigned char);
+     vector signed short vec_sro (vector signed short, vector signed char);
+     vector signed short vec_sro (vector signed short, vector unsigned char);
+     vector unsigned short vec_sro (vector unsigned short,
+                                    vector signed char);
+     vector unsigned short vec_sro (vector unsigned short,
+                                    vector unsigned char);
+     vector pixel vec_sro (vector pixel, vector signed char);
+     vector pixel vec_sro (vector pixel, vector unsigned char);
+     vector signed char vec_sro (vector signed char, vector signed char);
+     vector signed char vec_sro (vector signed char, vector unsigned char);
+     vector unsigned char vec_sro (vector unsigned char, vector signed char);
+     vector unsigned char vec_sro (vector unsigned char,
+                                   vector unsigned char);
+     
+     void vec_st (vector float, int, vector float *);
+     void vec_st (vector float, int, float *);
+     void vec_st (vector signed int, int, vector signed int *);
+     void vec_st (vector signed int, int, int *);
+     void vec_st (vector unsigned int, int, vector unsigned int *);
+     void vec_st (vector unsigned int, int, unsigned int *);
+     void vec_st (vector bool int, int, vector bool int *);
+     void vec_st (vector bool int, int, unsigned int *);
+     void vec_st (vector bool int, int, int *);
+     void vec_st (vector signed short, int, vector signed short *);
+     void vec_st (vector signed short, int, short *);
+     void vec_st (vector unsigned short, int, vector unsigned short *);
+     void vec_st (vector unsigned short, int, unsigned short *);
+     void vec_st (vector bool short, int, vector bool short *);
+     void vec_st (vector bool short, int, unsigned short *);
+     void vec_st (vector pixel, int, vector pixel *);
+     void vec_st (vector pixel, int, unsigned short *);
+     void vec_st (vector pixel, int, short *);
+     void vec_st (vector bool short, int, short *);
+     void vec_st (vector signed char, int, vector signed char *);
+     void vec_st (vector signed char, int, signed char *);
+     void vec_st (vector unsigned char, int, vector unsigned char *);
+     void vec_st (vector unsigned char, int, unsigned char *);
+     void vec_st (vector bool char, int, vector bool char *);
+     void vec_st (vector bool char, int, unsigned char *);
+     void vec_st (vector bool char, int, signed char *);
+     
+     void vec_ste (vector signed char, int, signed char *);
+     void vec_ste (vector unsigned char, int, unsigned char *);
+     void vec_ste (vector bool char, int, signed char *);
+     void vec_ste (vector bool char, int, unsigned char *);
+     void vec_ste (vector signed short, int, short *);
+     void vec_ste (vector unsigned short, int, unsigned short *);
+     void vec_ste (vector bool short, int, short *);
+     void vec_ste (vector bool short, int, unsigned short *);
+     void vec_ste (vector pixel, int, short *);
+     void vec_ste (vector pixel, int, unsigned short *);
+     void vec_ste (vector float, int, float *);
+     void vec_ste (vector signed int, int, int *);
+     void vec_ste (vector unsigned int, int, unsigned int *);
+     void vec_ste (vector bool int, int, int *);
+     void vec_ste (vector bool int, int, unsigned int *);
+     
+     void vec_stvewx (vector float, int, float *);
+     void vec_stvewx (vector signed int, int, int *);
+     void vec_stvewx (vector unsigned int, int, unsigned int *);
+     void vec_stvewx (vector bool int, int, int *);
+     void vec_stvewx (vector bool int, int, unsigned int *);
+     
+     void vec_stvehx (vector signed short, int, short *);
+     void vec_stvehx (vector unsigned short, int, unsigned short *);
+     void vec_stvehx (vector bool short, int, short *);
+     void vec_stvehx (vector bool short, int, unsigned short *);
+     void vec_stvehx (vector pixel, int, short *);
+     void vec_stvehx (vector pixel, int, unsigned short *);
+     
+     void vec_stvebx (vector signed char, int, signed char *);
+     void vec_stvebx (vector unsigned char, int, unsigned char *);
+     void vec_stvebx (vector bool char, int, signed char *);
+     void vec_stvebx (vector bool char, int, unsigned char *);
+     
+     void vec_stl (vector float, int, vector float *);
+     void vec_stl (vector float, int, float *);
+     void vec_stl (vector signed int, int, vector signed int *);
+     void vec_stl (vector signed int, int, int *);
+     void vec_stl (vector unsigned int, int, vector unsigned int *);
+     void vec_stl (vector unsigned int, int, unsigned int *);
+     void vec_stl (vector bool int, int, vector bool int *);
+     void vec_stl (vector bool int, int, unsigned int *);
+     void vec_stl (vector bool int, int, int *);
+     void vec_stl (vector signed short, int, vector signed short *);
+     void vec_stl (vector signed short, int, short *);
+     void vec_stl (vector unsigned short, int, vector unsigned short *);
+     void vec_stl (vector unsigned short, int, unsigned short *);
+     void vec_stl (vector bool short, int, vector bool short *);
+     void vec_stl (vector bool short, int, unsigned short *);
+     void vec_stl (vector bool short, int, short *);
+     void vec_stl (vector pixel, int, vector pixel *);
+     void vec_stl (vector pixel, int, unsigned short *);
+     void vec_stl (vector pixel, int, short *);
+     void vec_stl (vector signed char, int, vector signed char *);
+     void vec_stl (vector signed char, int, signed char *);
+     void vec_stl (vector unsigned char, int, vector unsigned char *);
+     void vec_stl (vector unsigned char, int, unsigned char *);
+     void vec_stl (vector bool char, int, vector bool char *);
+     void vec_stl (vector bool char, int, unsigned char *);
+     void vec_stl (vector bool char, int, signed char *);
+     
+     vector signed char vec_sub (vector bool char, vector signed char);
+     vector signed char vec_sub (vector signed char, vector bool char);
+     vector signed char vec_sub (vector signed char, vector signed char);
+     vector unsigned char vec_sub (vector bool char, vector unsigned char);
+     vector unsigned char vec_sub (vector unsigned char, vector bool char);
+     vector unsigned char vec_sub (vector unsigned char,
+                                   vector unsigned char);
+     vector signed short vec_sub (vector bool short, vector signed short);
+     vector signed short vec_sub (vector signed short, vector bool short);
+     vector signed short vec_sub (vector signed short, vector signed short);
+     vector unsigned short vec_sub (vector bool short,
+                                    vector unsigned short);
+     vector unsigned short vec_sub (vector unsigned short,
+                                    vector bool short);
+     vector unsigned short vec_sub (vector unsigned short,
+                                    vector unsigned short);
+     vector signed int vec_sub (vector bool int, vector signed int);
+     vector signed int vec_sub (vector signed int, vector bool int);
+     vector signed int vec_sub (vector signed int, vector signed int);
+     vector unsigned int vec_sub (vector bool int, vector unsigned int);
+     vector unsigned int vec_sub (vector unsigned int, vector bool int);
+     vector unsigned int vec_sub (vector unsigned int, vector unsigned int);
+     vector float vec_sub (vector float, vector float);
+     
+     vector float vec_vsubfp (vector float, vector float);
+     
+     vector signed int vec_vsubuwm (vector bool int, vector signed int);
+     vector signed int vec_vsubuwm (vector signed int, vector bool int);
+     vector signed int vec_vsubuwm (vector signed int, vector signed int);
+     vector unsigned int vec_vsubuwm (vector bool int, vector unsigned int);
+     vector unsigned int vec_vsubuwm (vector unsigned int, vector bool int);
+     vector unsigned int vec_vsubuwm (vector unsigned int,
+                                      vector unsigned int);
+     
+     vector signed short vec_vsubuhm (vector bool short,
+                                      vector signed short);
+     vector signed short vec_vsubuhm (vector signed short,
+                                      vector bool short);
+     vector signed short vec_vsubuhm (vector signed short,
+                                      vector signed short);
+     vector unsigned short vec_vsubuhm (vector bool short,
+                                        vector unsigned short);
+     vector unsigned short vec_vsubuhm (vector unsigned short,
+                                        vector bool short);
+     vector unsigned short vec_vsubuhm (vector unsigned short,
+                                        vector unsigned short);
+     
+     vector signed char vec_vsububm (vector bool char, vector signed char);
+     vector signed char vec_vsububm (vector signed char, vector bool char);
+     vector signed char vec_vsububm (vector signed char, vector signed char);
+     vector unsigned char vec_vsububm (vector bool char,
+                                       vector unsigned char);
+     vector unsigned char vec_vsububm (vector unsigned char,
+                                       vector bool char);
+     vector unsigned char vec_vsububm (vector unsigned char,
+                                       vector unsigned char);
+     
+     vector unsigned int vec_subc (vector unsigned int, vector unsigned int);
+     
+     vector unsigned char vec_subs (vector bool char, vector unsigned char);
+     vector unsigned char vec_subs (vector unsigned char, vector bool char);
+     vector unsigned char vec_subs (vector unsigned char,
+                                    vector unsigned char);
+     vector signed char vec_subs (vector bool char, vector signed char);
+     vector signed char vec_subs (vector signed char, vector bool char);
+     vector signed char vec_subs (vector signed char, vector signed char);
+     vector unsigned short vec_subs (vector bool short,
+                                     vector unsigned short);
+     vector unsigned short vec_subs (vector unsigned short,
+                                     vector bool short);
+     vector unsigned short vec_subs (vector unsigned short,
+                                     vector unsigned short);
+     vector signed short vec_subs (vector bool short, vector signed short);
+     vector signed short vec_subs (vector signed short, vector bool short);
+     vector signed short vec_subs (vector signed short, vector signed short);
+     vector unsigned int vec_subs (vector bool int, vector unsigned int);
+     vector unsigned int vec_subs (vector unsigned int, vector bool int);
+     vector unsigned int vec_subs (vector unsigned int, vector unsigned int);
+     vector signed int vec_subs (vector bool int, vector signed int);
+     vector signed int vec_subs (vector signed int, vector bool int);
+     vector signed int vec_subs (vector signed int, vector signed int);
+     
+     vector signed int vec_vsubsws (vector bool int, vector signed int);
+     vector signed int vec_vsubsws (vector signed int, vector bool int);
+     vector signed int vec_vsubsws (vector signed int, vector signed int);
+     
+     vector unsigned int vec_vsubuws (vector bool int, vector unsigned int);
+     vector unsigned int vec_vsubuws (vector unsigned int, vector bool int);
+     vector unsigned int vec_vsubuws (vector unsigned int,
+                                      vector unsigned int);
+     
+     vector signed short vec_vsubshs (vector bool short,
+                                      vector signed short);
+     vector signed short vec_vsubshs (vector signed short,
+                                      vector bool short);
+     vector signed short vec_vsubshs (vector signed short,
+                                      vector signed short);
+     
+     vector unsigned short vec_vsubuhs (vector bool short,
+                                        vector unsigned short);
+     vector unsigned short vec_vsubuhs (vector unsigned short,
+                                        vector bool short);
+     vector unsigned short vec_vsubuhs (vector unsigned short,
+                                        vector unsigned short);
+     
+     vector signed char vec_vsubsbs (vector bool char, vector signed char);
+     vector signed char vec_vsubsbs (vector signed char, vector bool char);
+     vector signed char vec_vsubsbs (vector signed char, vector signed char);
+     
+     vector unsigned char vec_vsububs (vector bool char,
+                                       vector unsigned char);
+     vector unsigned char vec_vsububs (vector unsigned char,
+                                       vector bool char);
+     vector unsigned char vec_vsububs (vector unsigned char,
+                                       vector unsigned char);
+     
+     vector unsigned int vec_sum4s (vector unsigned char,
+                                    vector unsigned int);
+     vector signed int vec_sum4s (vector signed char, vector signed int);
+     vector signed int vec_sum4s (vector signed short, vector signed int);
+     
+     vector signed int vec_vsum4shs (vector signed short, vector signed int);
+     
+     vector signed int vec_vsum4sbs (vector signed char, vector signed int);
+     
+     vector unsigned int vec_vsum4ubs (vector unsigned char,
+                                       vector unsigned int);
+     
+     vector signed int vec_sum2s (vector signed int, vector signed int);
+     
+     vector signed int vec_sums (vector signed int, vector signed int);
+     
+     vector float vec_trunc (vector float);
+     
+     vector signed short vec_unpackh (vector signed char);
+     vector bool short vec_unpackh (vector bool char);
+     vector signed int vec_unpackh (vector signed short);
+     vector bool int vec_unpackh (vector bool short);
+     vector unsigned int vec_unpackh (vector pixel);
+     
+     vector bool int vec_vupkhsh (vector bool short);
+     vector signed int vec_vupkhsh (vector signed short);
+     
+     vector unsigned int vec_vupkhpx (vector pixel);
+     
+     vector bool short vec_vupkhsb (vector bool char);
+     vector signed short vec_vupkhsb (vector signed char);
+     
+     vector signed short vec_unpackl (vector signed char);
+     vector bool short vec_unpackl (vector bool char);
+     vector unsigned int vec_unpackl (vector pixel);
+     vector signed int vec_unpackl (vector signed short);
+     vector bool int vec_unpackl (vector bool short);
+     
+     vector unsigned int vec_vupklpx (vector pixel);
+     
+     vector bool int vec_vupklsh (vector bool short);
+     vector signed int vec_vupklsh (vector signed short);
+     
+     vector bool short vec_vupklsb (vector bool char);
+     vector signed short vec_vupklsb (vector signed char);
+     
+     vector float vec_xor (vector float, vector float);
+     vector float vec_xor (vector float, vector bool int);
+     vector float vec_xor (vector bool int, vector float);
+     vector bool int vec_xor (vector bool int, vector bool int);
+     vector signed int vec_xor (vector bool int, vector signed int);
+     vector signed int vec_xor (vector signed int, vector bool int);
+     vector signed int vec_xor (vector signed int, vector signed int);
+     vector unsigned int vec_xor (vector bool int, vector unsigned int);
+     vector unsigned int vec_xor (vector unsigned int, vector bool int);
+     vector unsigned int vec_xor (vector unsigned int, vector unsigned int);
+     vector bool short vec_xor (vector bool short, vector bool short);
+     vector signed short vec_xor (vector bool short, vector signed short);
+     vector signed short vec_xor (vector signed short, vector bool short);
+     vector signed short vec_xor (vector signed short, vector signed short);
+     vector unsigned short vec_xor (vector bool short,
+                                    vector unsigned short);
+     vector unsigned short vec_xor (vector unsigned short,
+                                    vector bool short);
+     vector unsigned short vec_xor (vector unsigned short,
+                                    vector unsigned short);
+     vector signed char vec_xor (vector bool char, vector signed char);
+     vector bool char vec_xor (vector bool char, vector bool char);
+     vector signed char vec_xor (vector signed char, vector bool char);
+     vector signed char vec_xor (vector signed char, vector signed char);
+     vector unsigned char vec_xor (vector bool char, vector unsigned char);
+     vector unsigned char vec_xor (vector unsigned char, vector bool char);
+     vector unsigned char vec_xor (vector unsigned char,
+                                   vector unsigned char);
+     
+     int vec_all_eq (vector signed char, vector bool char);
+     int vec_all_eq (vector signed char, vector signed char);
+     int vec_all_eq (vector unsigned char, vector bool char);
+     int vec_all_eq (vector unsigned char, vector unsigned char);
+     int vec_all_eq (vector bool char, vector bool char);
+     int vec_all_eq (vector bool char, vector unsigned char);
+     int vec_all_eq (vector bool char, vector signed char);
+     int vec_all_eq (vector signed short, vector bool short);
+     int vec_all_eq (vector signed short, vector signed short);
+     int vec_all_eq (vector unsigned short, vector bool short);
+     int vec_all_eq (vector unsigned short, vector unsigned short);
+     int vec_all_eq (vector bool short, vector bool short);
+     int vec_all_eq (vector bool short, vector unsigned short);
+     int vec_all_eq (vector bool short, vector signed short);
+     int vec_all_eq (vector pixel, vector pixel);
+     int vec_all_eq (vector signed int, vector bool int);
+     int vec_all_eq (vector signed int, vector signed int);
+     int vec_all_eq (vector unsigned int, vector bool int);
+     int vec_all_eq (vector unsigned int, vector unsigned int);
+     int vec_all_eq (vector bool int, vector bool int);
+     int vec_all_eq (vector bool int, vector unsigned int);
+     int vec_all_eq (vector bool int, vector signed int);
+     int vec_all_eq (vector float, vector float);
+     
+     int vec_all_ge (vector bool char, vector unsigned char);
+     int vec_all_ge (vector unsigned char, vector bool char);
+     int vec_all_ge (vector unsigned char, vector unsigned char);
+     int vec_all_ge (vector bool char, vector signed char);
+     int vec_all_ge (vector signed char, vector bool char);
+     int vec_all_ge (vector signed char, vector signed char);
+     int vec_all_ge (vector bool short, vector unsigned short);
+     int vec_all_ge (vector unsigned short, vector bool short);
+     int vec_all_ge (vector unsigned short, vector unsigned short);
+     int vec_all_ge (vector signed short, vector signed short);
+     int vec_all_ge (vector bool short, vector signed short);
+     int vec_all_ge (vector signed short, vector bool short);
+     int vec_all_ge (vector bool int, vector unsigned int);
+     int vec_all_ge (vector unsigned int, vector bool int);
+     int vec_all_ge (vector unsigned int, vector unsigned int);
+     int vec_all_ge (vector bool int, vector signed int);
+     int vec_all_ge (vector signed int, vector bool int);
+     int vec_all_ge (vector signed int, vector signed int);
+     int vec_all_ge (vector float, vector float);
+     
+     int vec_all_gt (vector bool char, vector unsigned char);
+     int vec_all_gt (vector unsigned char, vector bool char);
+     int vec_all_gt (vector unsigned char, vector unsigned char);
+     int vec_all_gt (vector bool char, vector signed char);
+     int vec_all_gt (vector signed char, vector bool char);
+     int vec_all_gt (vector signed char, vector signed char);
+     int vec_all_gt (vector bool short, vector unsigned short);
+     int vec_all_gt (vector unsigned short, vector bool short);
+     int vec_all_gt (vector unsigned short, vector unsigned short);
+     int vec_all_gt (vector bool short, vector signed short);
+     int vec_all_gt (vector signed short, vector bool short);
+     int vec_all_gt (vector signed short, vector signed short);
+     int vec_all_gt (vector bool int, vector unsigned int);
+     int vec_all_gt (vector unsigned int, vector bool int);
+     int vec_all_gt (vector unsigned int, vector unsigned int);
+     int vec_all_gt (vector bool int, vector signed int);
+     int vec_all_gt (vector signed int, vector bool int);
+     int vec_all_gt (vector signed int, vector signed int);
+     int vec_all_gt (vector float, vector float);
+     
+     int vec_all_in (vector float, vector float);
+     
+     int vec_all_le (vector bool char, vector unsigned char);
+     int vec_all_le (vector unsigned char, vector bool char);
+     int vec_all_le (vector unsigned char, vector unsigned char);
+     int vec_all_le (vector bool char, vector signed char);
+     int vec_all_le (vector signed char, vector bool char);
+     int vec_all_le (vector signed char, vector signed char);
+     int vec_all_le (vector bool short, vector unsigned short);
+     int vec_all_le (vector unsigned short, vector bool short);
+     int vec_all_le (vector unsigned short, vector unsigned short);
+     int vec_all_le (vector bool short, vector signed short);
+     int vec_all_le (vector signed short, vector bool short);
+     int vec_all_le (vector signed short, vector signed short);
+     int vec_all_le (vector bool int, vector unsigned int);
+     int vec_all_le (vector unsigned int, vector bool int);
+     int vec_all_le (vector unsigned int, vector unsigned int);
+     int vec_all_le (vector bool int, vector signed int);
+     int vec_all_le (vector signed int, vector bool int);
+     int vec_all_le (vector signed int, vector signed int);
+     int vec_all_le (vector float, vector float);
+     
+     int vec_all_lt (vector bool char, vector unsigned char);
+     int vec_all_lt (vector unsigned char, vector bool char);
+     int vec_all_lt (vector unsigned char, vector unsigned char);
+     int vec_all_lt (vector bool char, vector signed char);
+     int vec_all_lt (vector signed char, vector bool char);
+     int vec_all_lt (vector signed char, vector signed char);
+     int vec_all_lt (vector bool short, vector unsigned short);
+     int vec_all_lt (vector unsigned short, vector bool short);
+     int vec_all_lt (vector unsigned short, vector unsigned short);
+     int vec_all_lt (vector bool short, vector signed short);
+     int vec_all_lt (vector signed short, vector bool short);
+     int vec_all_lt (vector signed short, vector signed short);
+     int vec_all_lt (vector bool int, vector unsigned int);
+     int vec_all_lt (vector unsigned int, vector bool int);
+     int vec_all_lt (vector unsigned int, vector unsigned int);
+     int vec_all_lt (vector bool int, vector signed int);
+     int vec_all_lt (vector signed int, vector bool int);
+     int vec_all_lt (vector signed int, vector signed int);
+     int vec_all_lt (vector float, vector float);
+     
+     int vec_all_nan (vector float);
+     
+     int vec_all_ne (vector signed char, vector bool char);
+     int vec_all_ne (vector signed char, vector signed char);
+     int vec_all_ne (vector unsigned char, vector bool char);
+     int vec_all_ne (vector unsigned char, vector unsigned char);
+     int vec_all_ne (vector bool char, vector bool char);
+     int vec_all_ne (vector bool char, vector unsigned char);
+     int vec_all_ne (vector bool char, vector signed char);
+     int vec_all_ne (vector signed short, vector bool short);
+     int vec_all_ne (vector signed short, vector signed short);
+     int vec_all_ne (vector unsigned short, vector bool short);
+     int vec_all_ne (vector unsigned short, vector unsigned short);
+     int vec_all_ne (vector bool short, vector bool short);
+     int vec_all_ne (vector bool short, vector unsigned short);
+     int vec_all_ne (vector bool short, vector signed short);
+     int vec_all_ne (vector pixel, vector pixel);
+     int vec_all_ne (vector signed int, vector bool int);
+     int vec_all_ne (vector signed int, vector signed int);
+     int vec_all_ne (vector unsigned int, vector bool int);
+     int vec_all_ne (vector unsigned int, vector unsigned int);
+     int vec_all_ne (vector bool int, vector bool int);
+     int vec_all_ne (vector bool int, vector unsigned int);
+     int vec_all_ne (vector bool int, vector signed int);
+     int vec_all_ne (vector float, vector float);
+     
+     int vec_all_nge (vector float, vector float);
+     
+     int vec_all_ngt (vector float, vector float);
+     
+     int vec_all_nle (vector float, vector float);
+     
+     int vec_all_nlt (vector float, vector float);
+     
+     int vec_all_numeric (vector float);
+     
+     int vec_any_eq (vector signed char, vector bool char);
+     int vec_any_eq (vector signed char, vector signed char);
+     int vec_any_eq (vector unsigned char, vector bool char);
+     int vec_any_eq (vector unsigned char, vector unsigned char);
+     int vec_any_eq (vector bool char, vector bool char);
+     int vec_any_eq (vector bool char, vector unsigned char);
+     int vec_any_eq (vector bool char, vector signed char);
+     int vec_any_eq (vector signed short, vector bool short);
+     int vec_any_eq (vector signed short, vector signed short);
+     int vec_any_eq (vector unsigned short, vector bool short);
+     int vec_any_eq (vector unsigned short, vector unsigned short);
+     int vec_any_eq (vector bool short, vector bool short);
+     int vec_any_eq (vector bool short, vector unsigned short);
+     int vec_any_eq (vector bool short, vector signed short);
+     int vec_any_eq (vector pixel, vector pixel);
+     int vec_any_eq (vector signed int, vector bool int);
+     int vec_any_eq (vector signed int, vector signed int);
+     int vec_any_eq (vector unsigned int, vector bool int);
+     int vec_any_eq (vector unsigned int, vector unsigned int);
+     int vec_any_eq (vector bool int, vector bool int);
+     int vec_any_eq (vector bool int, vector unsigned int);
+     int vec_any_eq (vector bool int, vector signed int);
+     int vec_any_eq (vector float, vector float);
+     
+     int vec_any_ge (vector signed char, vector bool char);
+     int vec_any_ge (vector unsigned char, vector bool char);
+     int vec_any_ge (vector unsigned char, vector unsigned char);
+     int vec_any_ge (vector signed char, vector signed char);
+     int vec_any_ge (vector bool char, vector unsigned char);
+     int vec_any_ge (vector bool char, vector signed char);
+     int vec_any_ge (vector unsigned short, vector bool short);
+     int vec_any_ge (vector unsigned short, vector unsigned short);
+     int vec_any_ge (vector signed short, vector signed short);
+     int vec_any_ge (vector signed short, vector bool short);
+     int vec_any_ge (vector bool short, vector unsigned short);
+     int vec_any_ge (vector bool short, vector signed short);
+     int vec_any_ge (vector signed int, vector bool int);
+     int vec_any_ge (vector unsigned int, vector bool int);
+     int vec_any_ge (vector unsigned int, vector unsigned int);
+     int vec_any_ge (vector signed int, vector signed int);
+     int vec_any_ge (vector bool int, vector unsigned int);
+     int vec_any_ge (vector bool int, vector signed int);
+     int vec_any_ge (vector float, vector float);
+     
+     int vec_any_gt (vector bool char, vector unsigned char);
+     int vec_any_gt (vector unsigned char, vector bool char);
+     int vec_any_gt (vector unsigned char, vector unsigned char);
+     int vec_any_gt (vector bool char, vector signed char);
+     int vec_any_gt (vector signed char, vector bool char);
+     int vec_any_gt (vector signed char, vector signed char);
+     int vec_any_gt (vector bool short, vector unsigned short);
+     int vec_any_gt (vector unsigned short, vector bool short);
+     int vec_any_gt (vector unsigned short, vector unsigned short);
+     int vec_any_gt (vector bool short, vector signed short);
+     int vec_any_gt (vector signed short, vector bool short);
+     int vec_any_gt (vector signed short, vector signed short);
+     int vec_any_gt (vector bool int, vector unsigned int);
+     int vec_any_gt (vector unsigned int, vector bool int);
+     int vec_any_gt (vector unsigned int, vector unsigned int);
+     int vec_any_gt (vector bool int, vector signed int);
+     int vec_any_gt (vector signed int, vector bool int);
+     int vec_any_gt (vector signed int, vector signed int);
+     int vec_any_gt (vector float, vector float);
+     
+     int vec_any_le (vector bool char, vector unsigned char);
+     int vec_any_le (vector unsigned char, vector bool char);
+     int vec_any_le (vector unsigned char, vector unsigned char);
+     int vec_any_le (vector bool char, vector signed char);
+     int vec_any_le (vector signed char, vector bool char);
+     int vec_any_le (vector signed char, vector signed char);
+     int vec_any_le (vector bool short, vector unsigned short);
+     int vec_any_le (vector unsigned short, vector bool short);
+     int vec_any_le (vector unsigned short, vector unsigned short);
+     int vec_any_le (vector bool short, vector signed short);
+     int vec_any_le (vector signed short, vector bool short);
+     int vec_any_le (vector signed short, vector signed short);
+     int vec_any_le (vector bool int, vector unsigned int);
+     int vec_any_le (vector unsigned int, vector bool int);
+     int vec_any_le (vector unsigned int, vector unsigned int);
+     int vec_any_le (vector bool int, vector signed int);
+     int vec_any_le (vector signed int, vector bool int);
+     int vec_any_le (vector signed int, vector signed int);
+     int vec_any_le (vector float, vector float);
+     
+     int vec_any_lt (vector bool char, vector unsigned char);
+     int vec_any_lt (vector unsigned char, vector bool char);
+     int vec_any_lt (vector unsigned char, vector unsigned char);
+     int vec_any_lt (vector bool char, vector signed char);
+     int vec_any_lt (vector signed char, vector bool char);
+     int vec_any_lt (vector signed char, vector signed char);
+     int vec_any_lt (vector bool short, vector unsigned short);
+     int vec_any_lt (vector unsigned short, vector bool short);
+     int vec_any_lt (vector unsigned short, vector unsigned short);
+     int vec_any_lt (vector bool short, vector signed short);
+     int vec_any_lt (vector signed short, vector bool short);
+     int vec_any_lt (vector signed short, vector signed short);
+     int vec_any_lt (vector bool int, vector unsigned int);
+     int vec_any_lt (vector unsigned int, vector bool int);
+     int vec_any_lt (vector unsigned int, vector unsigned int);
+     int vec_any_lt (vector bool int, vector signed int);
+     int vec_any_lt (vector signed int, vector bool int);
+     int vec_any_lt (vector signed int, vector signed int);
+     int vec_any_lt (vector float, vector float);
+     
+     int vec_any_nan (vector float);
+     
+     int vec_any_ne (vector signed char, vector bool char);
+     int vec_any_ne (vector signed char, vector signed char);
+     int vec_any_ne (vector unsigned char, vector bool char);
+     int vec_any_ne (vector unsigned char, vector unsigned char);
+     int vec_any_ne (vector bool char, vector bool char);
+     int vec_any_ne (vector bool char, vector unsigned char);
+     int vec_any_ne (vector bool char, vector signed char);
+     int vec_any_ne (vector signed short, vector bool short);
+     int vec_any_ne (vector signed short, vector signed short);
+     int vec_any_ne (vector unsigned short, vector bool short);
+     int vec_any_ne (vector unsigned short, vector unsigned short);
+     int vec_any_ne (vector bool short, vector bool short);
+     int vec_any_ne (vector bool short, vector unsigned short);
+     int vec_any_ne (vector bool short, vector signed short);
+     int vec_any_ne (vector pixel, vector pixel);
+     int vec_any_ne (vector signed int, vector bool int);
+     int vec_any_ne (vector signed int, vector signed int);
+     int vec_any_ne (vector unsigned int, vector bool int);
+     int vec_any_ne (vector unsigned int, vector unsigned int);
+     int vec_any_ne (vector bool int, vector bool int);
+     int vec_any_ne (vector bool int, vector unsigned int);
+     int vec_any_ne (vector bool int, vector signed int);
+     int vec_any_ne (vector float, vector float);
+     
+     int vec_any_nge (vector float, vector float);
+     
+     int vec_any_ngt (vector float, vector float);
+     
+     int vec_any_nle (vector float, vector float);
+     
+     int vec_any_nlt (vector float, vector float);
+     
+     int vec_any_numeric (vector float);
+     
+     int vec_any_out (vector float, vector float);
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-Options.html new file mode 100644 index 0000000..f9fed7c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-Options.html @@ -0,0 +1,61 @@ + + +PowerPC Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

3.17.26 PowerPC Options

+ +

+These are listed under See RS/6000 and PowerPC Options. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-Type-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-Type-Attributes.html new file mode 100644 index 0000000..08e69a6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/PowerPC-Type-Attributes.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Pragmas.html new file mode 100644 index 0000000..8b84263 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Pragmas.html @@ -0,0 +1,77 @@ + + +Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Target Format Checks, +Up: C Extensions +



+
+ +

5.52 Pragmas Accepted by GCC

+ +

+GCC supports several types of pragmas, primarily in order to compile +code originally written for other compilers. Note that in general +we do not recommend the use of pragmas; See Function Attributes, +for further explanation. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Precompiled-Headers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Precompiled-Headers.html new file mode 100644 index 0000000..3080b16 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Precompiled-Headers.html @@ -0,0 +1,181 @@ + + +Precompiled Headers - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Environment Variables, +Up: Invoking GCC +



+
+ +

3.20 Using Precompiled Headers

+ +

+Often large projects have many header files that are included in every +source file. The time the compiler takes to process these header files +over and over again can account for nearly all of the time required to +build the project. To make builds faster, GCC allows users to +`precompile' a header file; then, if builds can use the precompiled +header file they will be much faster. + +

To create a precompiled header file, simply compile it as you would any +other file, if necessary using the -x option to make the driver +treat it as a C or C++ header file. You will probably want to use a +tool like make to keep the precompiled header up-to-date when +the headers it contains change. + +

A precompiled header file will be searched for when #include is +seen in the compilation. As it searches for the included file +(see Search Path (The C Preprocessor)) the +compiler looks for a precompiled header in each directory just before it +looks for the include file in that directory. The name searched for is +the name specified in the #include with .gch appended. If +the precompiled header file can't be used, it is ignored. + +

For instance, if you have #include "all.h", and you have +all.h.gch in the same directory as all.h, then the +precompiled header file will be used if possible, and the original +header will be used otherwise. + +

Alternatively, you might decide to put the precompiled header file in a +directory and use -I to ensure that directory is searched +before (or instead of) the directory containing the original header. +Then, if you want to check that the precompiled header file is always +used, you can put a file of the same name as the original header in this +directory containing an #error command. + +

This also works with -include. So yet another way to use +precompiled headers, good for projects not designed with precompiled +header files in mind, is to simply take most of the header files used by +a project, include them from another header file, precompile that header +file, and -include the precompiled header. If the header files +have guards against multiple inclusion, they will be skipped because +they've already been included (in the precompiled header). + +

If you need to precompile the same header file for different +languages, targets, or compiler options, you can instead make a +directory named like all.h.gch, and put each precompiled +header in the directory, perhaps using -o. It doesn't matter +what you call the files in the directory, every precompiled header in +the directory will be considered. The first precompiled header +encountered in the directory that is valid for this compilation will +be used; they're searched in no particular order. + +

There are many other possibilities, limited only by your imagination, +good sense, and the constraints of your build system. + +

A precompiled header file can be used only when these conditions apply: + +

    +
  • Only one precompiled header can be used in a particular compilation. + +
  • A precompiled header can't be used once the first C token is seen. You +can have preprocessor directives before a precompiled header; you can +even include a precompiled header from inside another header, so long as +there are no C tokens before the #include. + +
  • The precompiled header file must be produced for the same language as +the current compilation. You can't use a C precompiled header for a C++ +compilation. + +
  • The precompiled header file must have been produced by the same compiler +binary as the current compilation is using. + +
  • Any macros defined before the precompiled header is included must +either be defined in the same way as when the precompiled header was +generated, or must not affect the precompiled header, which usually +means that they don't appear in the precompiled header at all. + +

    The -D option is one way to define a macro before a +precompiled header is included; using a #define can also do it. +There are also some options that define macros implicitly, like +-O and -Wdeprecated; the same rule applies to macros +defined this way. + +

  • If debugging information is output when using the precompiled +header, using -g or similar, the same kind of debugging information +must have been output when building the precompiled header. However, +a precompiled header built using -g can be used in a compilation +when no debugging information is being output. + +
  • The same -m options must generally be used when building +and using the precompiled header. See Submodel Options, +for any cases where this rule is relaxed. + +
  • Each of the following options must be the same when building and using +the precompiled header: + +
              -fexceptions -funit-at-a-time
    +     
    +
  • Some other command-line options starting with -f, +-p, or -O must be defined in the same way as when +the precompiled header was generated. At present, it's not clear +which options are safe to change and which are not; the safest choice +is to use exactly the same options when generating and using the +precompiled header. The following are known to be safe: + +
              -fmessage-length=  -fpreprocessed  -fsched-interblock 
    +          -fsched-spec  -fsched-spec-load  -fsched-spec-load-dangerous 
    +          -fsched-verbose=<number>  -fschedule-insns  -fvisibility= 
    +          -pedantic-errors
    +     
    +
+ +

For all of these except the last, the compiler will automatically +ignore the precompiled header if the conditions aren't met. If you +find an option combination that doesn't work and doesn't cause the +precompiled header to be ignored, please consider filing a bug report, +see Bugs. + +

If you do use differing options when generating and using the +precompiled header, the actual behavior will be a mixture of the +behavior for the options. For instance, if you use -g to +generate the precompiled header but not when using it, you may or may +not get debugging information for routines in the precompiled header. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Preprocessing-directives-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Preprocessing-directives-implementation.html new file mode 100644 index 0000000..dc1fc8f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Preprocessing-directives-implementation.html @@ -0,0 +1,103 @@ + + +Preprocessing directives implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.13 Preprocessing directives

+ +

See Implementation-defined behavior (The C Preprocessor), for details of these aspects of +implementation-defined behavior. + +

    +
  • How sequences in both forms of header names are mapped to headers +or external source file names (C90 6.1.7, C99 6.4.7). + +
  • Whether the value of a character constant in a constant expression +that controls conditional inclusion matches the value of the same character +constant in the execution character set (C90 6.8.1, C99 6.10.1). + +
  • Whether the value of a single-character character constant in a +constant expression that controls conditional inclusion may have a +negative value (C90 6.8.1, C99 6.10.1). + +
  • The places that are searched for an included <> delimited +header, and how the places are specified or the header is +identified (C90 6.8.2, C99 6.10.2). + +
  • How the named source file is searched for in an included "" +delimited header (C90 6.8.2, C99 6.10.2). + +
  • The method by which preprocessing tokens (possibly resulting from +macro expansion) in a #include directive are combined into a header +name (C90 6.8.2, C99 6.10.2). + +
  • The nesting limit for #include processing (C90 6.8.2, C99 +6.10.2). + +
  • Whether the # operator inserts a \ character before +the \ character that begins a universal character name in a +character constant or string literal (C99 6.10.3.2). + +
  • The behavior on each recognized non-STDC #pragma +directive (C90 6.8.6, C99 6.10.6). + +

    See Pragmas (The C Preprocessor), for details of +pragmas accepted by GCC on all targets. See Pragmas Accepted by GCC, for details of target-specific pragmas. + +

  • The definitions for __DATE__ and __TIME__ when +respectively, the date and time of translation are not available (C90 +6.8.8, C99 6.10.8). + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Preprocessor-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Preprocessor-Options.html new file mode 100644 index 0000000..d37707b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Preprocessor-Options.html @@ -0,0 +1,641 @@ + + +Preprocessor Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Optimize Options, +Up: Invoking GCC +



+
+ +

3.11 Options Controlling the Preprocessor

+ +

+These options control the C preprocessor, which is run on each C source +file before actual compilation. + +

If you use the -E option, nothing is done except preprocessing. +Some of these options make sense only together with -E because +they cause the preprocessor output to be unsuitable for actual +compilation. + + + +

You can use -Wp,option to bypass the compiler driver +and pass option directly through to the preprocessor. If +option contains commas, it is split into multiple options at the +commas. However, many options are modified, translated or interpreted +by the compiler driver before being passed to the preprocessor, and +-Wp forcibly bypasses this phase. The preprocessor's direct +interface is undocumented and subject to change, so whenever possible +you should avoid using -Wp and let the driver handle the +options instead. + +
-Xpreprocessor option
Pass option as an option to the preprocessor. You can use this to +supply system-specific preprocessor options which GCC does not know how to +recognize. + +

If you want to pass an option that takes an argument, you must use +-Xpreprocessor twice, once for the option and once for the argument. +

+ + + + + + + + + + +
+
-D name
Predefine name as a macro, with definition 1. + +
-D name=definition
The contents of definition are tokenized and processed as if +they appeared during translation phase three in a #define +directive. In particular, the definition will be truncated by +embedded newline characters. + +

If you are invoking the preprocessor from a shell or shell-like +program you may need to use the shell's quoting syntax to protect +characters such as spaces that have a meaning in the shell syntax. + +

If you wish to define a function-like macro on the command line, write +its argument list with surrounding parentheses before the equals sign +(if any). Parentheses are meaningful to most shells, so you will need +to quote the option. With sh and csh, +-D'name(args...)=definition' works. + +

-D and -U options are processed in the order they +are given on the command line. All -imacros file and +-include file options are processed after all +-D and -U options. + +

-U name
Cancel any previous definition of name, either built in or +provided with a -D option. + +
-undef
Do not predefine any system-specific or GCC-specific macros. The +standard predefined macros remain defined. + +
-I dir
Add the directory dir to the list of directories to be searched +for header files. +Directories named by -I are searched before the standard +system include directories. If the directory dir is a standard +system include directory, the option is ignored to ensure that the +default search order for system directories and the special treatment +of system headers are not defeated +. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-o file
Write output to file. This is the same as specifying file +as the second non-option argument to cpp. gcc has a +different interpretation of a second non-option argument, so you must +use -o to specify the output file. + +
-Wall
Turns on all optional warnings which are desirable for normal code. +At present this is -Wcomment, -Wtrigraphs, +-Wmultichar and a warning about integer promotion causing a +change of sign in #if expressions. Note that many of the +preprocessor's warnings are on by default and have no options to +control them. + +
-Wcomment
-Wcomments
Warn whenever a comment-start sequence /* appears in a /* +comment, or whenever a backslash-newline appears in a // comment. +(Both forms have the same effect.) + +
-Wtrigraphs
+Most trigraphs in comments cannot affect the meaning of the program. +However, a trigraph that would form an escaped newline (??/ at +the end of a line) can, by changing where the comment begins or ends. +Therefore, only trigraphs that would form escaped newlines produce +warnings inside a comment. + +

This option is implied by -Wall. If -Wall is not +given, this option is still enabled unless trigraphs are enabled. To +get trigraph conversion without warnings, but get the other +-Wall warnings, use -trigraphs -Wall -Wno-trigraphs. + +

-Wtraditional
Warn about certain constructs that behave differently in traditional and +ISO C. Also warn about ISO C constructs that have no traditional C +equivalent, and problematic constructs which should be avoided. + +
-Wimport
Warn the first time #import is used. + +
-Wundef
Warn whenever an identifier which is not a macro is encountered in an +#if directive, outside of defined. Such identifiers are +replaced with zero. + +
-Wunused-macros
Warn about macros defined in the main file that are unused. A macro +is used if it is expanded or tested for existence at least once. +The preprocessor will also warn if the macro has not been used at the +time it is redefined or undefined. + +

Built-in macros, macros defined on the command line, and macros +defined in include files are not warned about. + +

Note: If a macro is actually used, but only used in skipped +conditional blocks, then CPP will report it as unused. To avoid the +warning in such a case, you might improve the scope of the macro's +definition by, for example, moving it into the first skipped block. +Alternatively, you could provide a dummy use with something like: + +

          #if defined the_macro_causing_the_warning
+          #endif
+     
+
-Wendif-labels
Warn whenever an #else or an #endif are followed by text. +This usually happens in code of the form + +
          #if FOO
+          ...
+          #else FOO
+          ...
+          #endif FOO
+     
+

The second and third FOO should be in comments, but often are not +in older programs. This warning is on by default. + +

-Werror
Make all warnings into hard errors. Source code which triggers warnings +will be rejected. + +
-Wsystem-headers
Issue warnings for code in system headers. These are normally unhelpful +in finding bugs in your own code, therefore suppressed. If you are +responsible for the system library, you may want to see them. + +
-w
Suppress all warnings, including those which GNU CPP issues by default. + +
-pedantic
Issue all the mandatory diagnostics listed in the C standard. Some of +them are left out by default, since they trigger frequently on harmless +code. + +
-pedantic-errors
Issue all the mandatory diagnostics, and make all mandatory diagnostics +into errors. This includes mandatory diagnostics that GCC issues +without -pedantic but treats as warnings. + +
-M
Instead of outputting the result of preprocessing, output a rule +suitable for make describing the dependencies of the main +source file. The preprocessor outputs one make rule containing +the object file name for that source file, a colon, and the names of all +the included files, including those coming from -include or +-imacros command line options. + +

Unless specified explicitly (with -MT or -MQ), the +object file name consists of the name of the source file with any +suffix replaced with object file suffix and with any leading directory +parts removed. If there are many included files then the rule is +split into several lines using \-newline. The rule has no +commands. + +

This option does not suppress the preprocessor's debug output, such as +-dM. To avoid mixing such debug output with the dependency +rules you should explicitly specify the dependency output file with +-MF, or use an environment variable like +DEPENDENCIES_OUTPUT (see Environment Variables). Debug output +will still be sent to the regular output stream as normal. + +

Passing -M to the driver implies -E, and suppresses +warnings with an implicit -w. + +

-MM
Like -M but do not mention header files that are found in +system header directories, nor header files that are included, +directly or indirectly, from such a header. + +

This implies that the choice of angle brackets or double quotes in an +#include directive does not in itself determine whether that +header will appear in -MM dependency output. This is a +slight change in semantics from GCC versions 3.0 and earlier. + +

+

-MF file
When used with -M or -MM, specifies a +file to write the dependencies to. If no -MF switch is given +the preprocessor sends the rules to the same place it would have sent +preprocessed output. + +

When used with the driver options -MD or -MMD, +-MF overrides the default dependency output file. + +

-MG
In conjunction with an option such as -M requesting +dependency generation, -MG assumes missing header files are +generated files and adds them to the dependency list without raising +an error. The dependency filename is taken directly from the +#include directive without prepending any path. -MG +also suppresses preprocessed output, as a missing header file renders +this useless. + +

This feature is used in automatic updating of makefiles. + +

-MP
This option instructs CPP to add a phony target for each dependency +other than the main file, causing each to depend on nothing. These +dummy rules work around errors make gives if you remove header +files without updating the Makefile to match. + +

This is typical output: + +

          test.o: test.c test.h
+          
+          test.h:
+     
+
-MT target
+Change the target of the rule emitted by dependency generation. By +default CPP takes the name of the main input file, deletes any +directory components and any file suffix such as .c, and +appends the platform's usual object suffix. The result is the target. + +

An -MT option will set the target to be exactly the string you +specify. If you want multiple targets, you can specify them as a single +argument to -MT, or use multiple -MT options. + +

For example, -MT '$(objpfx)foo.o' might give + +

          $(objpfx)foo.o: foo.c
+     
+
-MQ target
+Same as -MT, but it quotes any characters which are special to +Make. -MQ '$(objpfx)foo.o' gives + +
          $$(objpfx)foo.o: foo.c
+     
+

The default target is automatically quoted, as if it were given with +-MQ. + +

-MD
-MD is equivalent to -M -MF file, except that +-E is not implied. The driver determines file based on +whether an -o option is given. If it is, the driver uses its +argument but with a suffix of .d, otherwise it takes the name +of the input file, removes any directory components and suffix, and +applies a .d suffix. + +

If -MD is used in conjunction with -E, any +-o switch is understood to specify the dependency output file +(see -MF), but if used without -E, each -o +is understood to specify a target object file. + +

Since -E is not implied, -MD can be used to generate +a dependency output file as a side-effect of the compilation process. + +

-MMD
Like -MD except mention only user header files, not system +header files. + +
-fpch-deps
When using precompiled headers (see Precompiled Headers), this flag +will cause the dependency-output flags to also list the files from the +precompiled header's dependencies. If not specified only the +precompiled header would be listed and not the files that were used to +create it because those files are not consulted when a precompiled +header is used. + +
-fpch-preprocess
This option allows use of a precompiled header (see Precompiled Headers) together with -E. It inserts a special #pragma, +#pragma GCC pch_preprocess "<filename>" in the output to mark +the place where the precompiled header was found, and its filename. When +-fpreprocessed is in use, GCC recognizes this #pragma and +loads the PCH. + +

This option is off by default, because the resulting preprocessed output +is only really suitable as input to GCC. It is switched on by +-save-temps. + +

You should not write this #pragma in your own code, but it is +safe to edit the filename if the PCH file is available in a different +location. The filename may be absolute or it may be relative to GCC's +current directory. + +

-x c
-x c++
-x objective-c
-x assembler-with-cpp
Specify the source language: C, C++, Objective-C, or assembly. This has +nothing to do with standards conformance or extensions; it merely +selects which base syntax to expect. If you give none of these options, +cpp will deduce the language from the extension of the source file: +.c, .cc, .m, or .S. Some other common +extensions for C++ and assembly are also recognized. If cpp does not +recognize the extension, it will treat the file as C; this is the most +generic mode. + +

Note: Previous versions of cpp accepted a -lang option +which selected both the language and the standards conformance level. +This option has been removed, because it conflicts with the -l +option. + +

-std=standard
-ansi
Specify the standard to which the code should conform. Currently CPP +knows about C and C++ standards; others may be added in the future. + +

standard +may be one of: +

+
iso9899:1990
c89
The ISO C standard from 1990. c89 is the customary shorthand for +this version of the standard. + +

The -ansi option is equivalent to -std=c89. + +

iso9899:199409
The 1990 C standard, as amended in 1994. + +
iso9899:1999
c99
iso9899:199x
c9x
The revised ISO C standard, published in December 1999. Before +publication, this was known as C9X. + +
gnu89
The 1990 C standard plus GNU extensions. This is the default. + +
gnu99
gnu9x
The 1999 C standard plus GNU extensions. + +
c++98
The 1998 ISO C++ standard plus amendments. + +
gnu++98
The same as -std=c++98 plus GNU extensions. This is the +default for C++ code. +
+ +
-I-
Split the include path. Any directories specified with -I +options before -I- are searched only for headers requested with +#include "file"; they are not searched for +#include <file>. If additional directories are +specified with -I options after the -I-, those +directories are searched for all #include directives. + +

In addition, -I- inhibits the use of the directory of the current +file directory as the first search directory for #include "file". +This option has been deprecated. + +

-nostdinc
Do not search the standard system directories for header files. +Only the directories you have specified with -I options +(and the directory of the current file, if appropriate) are searched. + +
-nostdinc++
Do not search for header files in the C++-specific standard directories, +but do still search the other standard directories. (This option is +used when building the C++ library.) + +
-include file
Process file as if #include "file" appeared as the first +line of the primary source file. However, the first directory searched +for file is the preprocessor's working directory instead of +the directory containing the main source file. If not found there, it +is searched for in the remainder of the #include "..." search +chain as normal. + +

If multiple -include options are given, the files are included +in the order they appear on the command line. + +

-imacros file
Exactly like -include, except that any output produced by +scanning file is thrown away. Macros it defines remain defined. +This allows you to acquire all the macros from a header without also +processing its declarations. + +

All files specified by -imacros are processed before all files +specified by -include. + +

-idirafter dir
Search dir for header files, but do it after all +directories specified with -I and the standard system directories +have been exhausted. dir is treated as a system include directory. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-iprefix prefix
Specify prefix as the prefix for subsequent -iwithprefix +options. If the prefix represents a directory, you should include the +final /. + +
-iwithprefix dir
-iwithprefixbefore dir
Append dir to the prefix specified previously with +-iprefix, and add the resulting directory to the include search +path. -iwithprefixbefore puts it in the same place -I +would; -iwithprefix puts it where -idirafter would. + +
-isysroot dir
This option is like the --sysroot option, but applies only to +header files. See the --sysroot option for more information. + +
-imultilib dir
Use dir as a subdirectory of the directory containing +target-specific C++ headers. + +
-isystem dir
Search dir for header files, after all directories specified by +-I but before the standard system directories. Mark it +as a system directory, so that it gets the same special treatment as +is applied to the standard system directories. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-iquote dir
Search dir only for header files requested with +#include "file"; they are not searched for +#include <file>, before all directories specified by +-I and before the standard system directories. +If dir begins with =, then the = will be replaced +by the sysroot prefix; see --sysroot and -isysroot. + +
-fdirectives-only
When preprocessing, handle directives, but do not expand macros. + +

The option's behavior depends on the -E and -fpreprocessed +options. + +

With -E, preprocessing is limited to the handling of directives +such as #define, #ifdef, and #error. Other +preprocessor operations, such as macro expansion and trigraph +conversion are not performed. In addition, the -dD option is +implicitly enabled. + +

With -fpreprocessed, predefinition of command line and most +builtin macros is disabled. Macros such as __LINE__, which are +contextually dependent, are handled normally. This enables compilation of +files previously preprocessed with -E -fdirectives-only. + +

With both -E and -fpreprocessed, the rules for +-fpreprocessed take precedence. This enables full preprocessing of +files previously preprocessed with -E -fdirectives-only. + +

-fdollars-in-identifiers
+Accept $ in identifiers. + +
-fextended-identifiers
Accept universal character names in identifiers. This option is +experimental; in a future version of GCC, it will be enabled by +default for C99 and C++. + +
-fpreprocessed
Indicate to the preprocessor that the input file has already been +preprocessed. This suppresses things like macro expansion, trigraph +conversion, escaped newline splicing, and processing of most directives. +The preprocessor still recognizes and removes comments, so that you can +pass a file preprocessed with -C to the compiler without +problems. In this mode the integrated preprocessor is little more than +a tokenizer for the front ends. + +

-fpreprocessed is implicit if the input file has one of the +extensions .i, .ii or .mi. These are the +extensions that GCC uses for preprocessed files created by +-save-temps. + +

-ftabstop=width
Set the distance between tab stops. This helps the preprocessor report +correct column numbers in warnings or errors, even if tabs appear on the +line. If the value is less than 1 or greater than 100, the option is +ignored. The default is 8. + +
-fexec-charset=charset
Set the execution character set, used for string and character +constants. The default is UTF-8. charset can be any encoding +supported by the system's iconv library routine. + +
-fwide-exec-charset=charset
Set the wide execution character set, used for wide string and +character constants. The default is UTF-32 or UTF-16, whichever +corresponds to the width of wchar_t. As with +-fexec-charset, charset can be any encoding supported +by the system's iconv library routine; however, you will have +problems with encodings that do not fit exactly in wchar_t. + +
-finput-charset=charset
Set the input character set, used for translation from the character +set of the input file to the source character set used by GCC. If the +locale does not specify, or GCC cannot get this information from the +locale, the default is UTF-8. This can be overridden by either the locale +or this command line option. Currently the command line option takes +precedence if there's a conflict. charset can be any encoding +supported by the system's iconv library routine. + +
-fworking-directory
Enable generation of linemarkers in the preprocessor output that will +let the compiler know the current working directory at the time of +preprocessing. When this option is enabled, the preprocessor will +emit, after the initial linemarker, a second linemarker with the +current working directory followed by two slashes. GCC will use this +directory, when it's present in the preprocessed input, as the +directory emitted as the current working directory in some debugging +information formats. This option is implicitly enabled if debugging +information is enabled, but this can be inhibited with the negated +form -fno-working-directory. If the -P flag is +present in the command line, this option has no effect, since no +#line directives are emitted whatsoever. + +
-fno-show-column
Do not print column numbers in diagnostics. This may be necessary if +diagnostics are being scanned by a program that does not understand the +column numbers, such as dejagnu. + +
-A predicate=answer
Make an assertion with the predicate predicate and answer +answer. This form is preferred to the older form -A +predicate(answer), which is still supported, because +it does not use shell special characters. + +
-A -predicate=answer
Cancel an assertion with the predicate predicate and answer +answer. + +
-dCHARS
CHARS is a sequence of one or more of the following characters, +and must not be preceded by a space. Other characters are interpreted +by the compiler proper, or reserved for future versions of GCC, and so +are silently ignored. If you specify characters whose behavior +conflicts, the result is undefined. + +
+
M
Instead of the normal output, generate a list of #define +directives for all the macros defined during the execution of the +preprocessor, including predefined macros. This gives you a way of +finding out what is predefined in your version of the preprocessor. +Assuming you have no file foo.h, the command + +
               touch foo.h; cpp -dM foo.h
+          
+

will show all the predefined macros. + +

If you use -dM without the -E option, -dM is +interpreted as a synonym for -fdump-rtl-mach. +See Debugging Options (gcc). + +

D
Like M except in two respects: it does not include the +predefined macros, and it outputs both the #define +directives and the result of preprocessing. Both kinds of output go to +the standard output file. + +
N
Like D, but emit only the macro names, not their expansions. + +
I
Output #include directives in addition to the result of +preprocessing. +
+ +
-P
Inhibit generation of linemarkers in the output from the preprocessor. +This might be useful when running the preprocessor on something that is +not C code, and will be sent to a program which might be confused by the +linemarkers. + +
-C
Do not discard comments. All comments are passed through to the output +file, except for comments in processed directives, which are deleted +along with the directive. + +

You should be prepared for side effects when using -C; it +causes the preprocessor to treat comments as tokens in their own right. +For example, comments appearing at the start of what would be a +directive line have the effect of turning that line into an ordinary +source line, since the first token on the line is no longer a #. + +

-CC
Do not discard comments, including during macro expansion. This is +like -C, except that comments contained within macros are +also passed through to the output file where the macro is expanded. + +

In addition to the side-effects of the -C option, the +-CC option causes all C++-style comments inside a macro +to be converted to C-style comments. This is to prevent later use +of that macro from inadvertently commenting out the remainder of +the source line. + +

The -CC option is generally used to support lint comments. + +

-traditional-cpp
Try to imitate the behavior of old-fashioned C preprocessors, as +opposed to ISO C preprocessors. + +
-trigraphs
Process trigraph sequences. +These are three-character sequences, all starting with ??, that +are defined by ISO C to stand for single characters. For example, +??/ stands for \, so '??/n' is a character +constant for a newline. By default, GCC ignores trigraphs, but in +standard-conforming modes it converts them. See the -std and +-ansi options. + +

The nine trigraphs and their replacements are + +

          Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
+          Replacement:      [    ]    {    }    #    \    ^    |    ~
+     
+
-remap
Enable special code to work around file systems which only permit very +short file names, such as MS-DOS. + +
--help
--target-help
Print text describing all the command line options instead of +preprocessing anything. + +
-v
Verbose mode. Print out GNU CPP's version number at the beginning of +execution, and report the final form of the include path. + +
-H
Print the name of each header file used, in addition to other normal +activities. Each name is indented to show how deep in the +#include stack it is. Precompiled header files are also +printed, even if they are found to be invalid; an invalid precompiled +header file is printed with ...x and a valid one with ...! . + +
-version
--version
Print out GNU CPP's version number. With one dash, proceed to +preprocess as normal. With two dashes, exit immediately. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Protoize-Caveats.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Protoize-Caveats.html new file mode 100644 index 0000000..b8af605 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Protoize-Caveats.html @@ -0,0 +1,132 @@ + + +Protoize Caveats - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: C++ Misunderstandings, +Up: Trouble +



+
+ +

10.9 Caveats of using protoize

+ +

The conversion programs protoize and unprotoize can +sometimes change a source file in a way that won't work unless you +rearrange it. + +

    +
  • protoize can insert references to a type name or type tag before +the definition, or in a file where they are not defined. + +

    If this happens, compiler error messages should show you where the new +references are, so fixing the file by hand is straightforward. + +

  • There are some C constructs which protoize cannot figure out. +For example, it can't determine argument types for declaring a +pointer-to-function variable; this you must do by hand. protoize +inserts a comment containing ??? each time it finds such a +variable; so you can find all such variables by searching for this +string. ISO C does not require declaring the argument types of +pointer-to-function types. + +
  • Using unprotoize can easily introduce bugs. If the program +relied on prototypes to bring about conversion of arguments, these +conversions will not take place in the program without prototypes. +One case in which you can be sure unprotoize is safe is when +you are removing prototypes that were made with protoize; if +the program worked before without any prototypes, it will work again +without them. + +

    You can find all the places where this problem might occur by compiling +the program with the -Wtraditional-conversion option. It +prints a warning whenever an argument is converted. + +

  • Both conversion programs can be confused if there are macro calls in and +around the text to be converted. In other words, the standard syntax +for a declaration or definition must not result from expanding a macro. +This problem is inherent in the design of C and cannot be fixed. If +only a few functions have confusing macro calls, you can easily convert +them manually. + +
  • protoize cannot get the argument types for a function whose +definition was not actually compiled due to preprocessing conditionals. +When this happens, protoize changes nothing in regard to such +a function. protoize tries to detect such instances and warn +about them. + +

    You can generally work around this problem by using protoize step +by step, each time specifying a different set of -D options for +compilation, until all of the functions have been converted. There is +no automatic way to verify that you have got them all, however. + +

  • Confusion may result if there is an occasion to convert a function +declaration or definition in a region of source code where there is more +than one formal parameter list present. Thus, attempts to convert code +containing multiple (conditionally compiled) versions of a single +function header (in the same vicinity) may not produce the desired (or +expected) results. + +

    If you plan on converting source files which contain such code, it is +recommended that you first make sure that each conditionally compiled +region of source code which contains an alternative function header also +contains at least one additional follower token (past the final right +parenthesis of the function header). This should circumvent the +problem. + +

  • unprotoize can become confused when trying to convert a function +definition or declaration which contains a declaration for a +pointer-to-function formal argument which has the same name as the +function being defined or declared. We recommend you avoid such choices +of formal parameter names. + +
  • You might also want to correct some of the indentation by hand and break +long lines. (The conversion programs don't write lines longer than +eighty characters in any case.) +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Qualifiers-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Qualifiers-implementation.html new file mode 100644 index 0000000..5e7c581 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Qualifiers-implementation.html @@ -0,0 +1,96 @@ + + +Qualifiers implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

4.10 Qualifiers

+ +
    +
  • What constitutes an access to an object that has volatile-qualified +type (C90 6.5.3, C99 6.7.3). + +

    Such an object is normally accessed by pointers and used for accessing +hardware. In most expressions, it is intuitively obvious what is a read +and what is a write. For example + +

              volatile int *dst = somevalue;
    +          volatile int *src = someothervalue;
    +          *dst = *src;
    +     
    +

    will cause a read of the volatile object pointed to by src and store the +value into the volatile object pointed to by dst. There is no +guarantee that these reads and writes are atomic, especially for objects +larger than int. + +

    However, if the volatile storage is not being modified, and the value of +the volatile storage is not used, then the situation is less obvious. +For example + +

              volatile int *src = somevalue;
    +          *src;
    +     
    +

    According to the C standard, such an expression is an rvalue whose type +is the unqualified version of its original type, i.e. int. Whether +GCC interprets this as a read of the volatile object being pointed to or +only as a request to evaluate the expression for its side-effects depends +on this type. + +

    If it is a scalar type, or on most targets an aggregate type whose only +member object is of a scalar type, or a union type whose member objects +are of scalar types, the expression is interpreted by GCC as a read of +the volatile object; in the other cases, the expression is only evaluated +for its side-effects. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/RS_002f6000-and-PowerPC-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/RS_002f6000-and-PowerPC-Options.html new file mode 100644 index 0000000..4d559d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/RS_002f6000-and-PowerPC-Options.html @@ -0,0 +1,597 @@ + + +RS/6000 and PowerPC Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

3.17.27 IBM RS/6000 and PowerPC Options

+ +

+These -m options are defined for the IBM RS/6000 and PowerPC: +

+
-mpower
-mno-power
-mpower2
-mno-power2
-mpowerpc
-mno-powerpc
-mpowerpc-gpopt
-mno-powerpc-gpopt
-mpowerpc-gfxopt
-mno-powerpc-gfxopt
-mpowerpc64
-mno-powerpc64
-mmfcrf
-mno-mfcrf
-mpopcntb
-mno-popcntb
-mfprnd
-mno-fprnd
-mcmpb
-mno-cmpb
-mmfpgpr
-mno-mfpgpr
-mhard-dfp
-mno-hard-dfp
GCC supports two related instruction set architectures for the +RS/6000 and PowerPC. The POWER instruction set are those +instructions supported by the rios chip set used in the original +RS/6000 systems and the PowerPC instruction set is the +architecture of the Freescale MPC5xx, MPC6xx, MPC8xx microprocessors, and +the IBM 4xx, 6xx, and follow-on microprocessors. + +

Neither architecture is a subset of the other. However there is a +large common subset of instructions supported by both. An MQ +register is included in processors supporting the POWER architecture. + +

You use these options to specify which instructions are available on the +processor you are using. The default value of these options is +determined when configuring GCC. Specifying the +-mcpu=cpu_type overrides the specification of these +options. We recommend you use the -mcpu=cpu_type option +rather than the options listed above. + +

The -mpower option allows GCC to generate instructions that +are found only in the POWER architecture and to use the MQ register. +Specifying -mpower2 implies -power and also allows GCC +to generate instructions that are present in the POWER2 architecture but +not the original POWER architecture. + +

The -mpowerpc option allows GCC to generate instructions that +are found only in the 32-bit subset of the PowerPC architecture. +Specifying -mpowerpc-gpopt implies -mpowerpc and also allows +GCC to use the optional PowerPC architecture instructions in the +General Purpose group, including floating-point square root. Specifying +-mpowerpc-gfxopt implies -mpowerpc and also allows GCC to +use the optional PowerPC architecture instructions in the Graphics +group, including floating-point select. + +

The -mmfcrf option allows GCC to generate the move from +condition register field instruction implemented on the POWER4 +processor and other processors that support the PowerPC V2.01 +architecture. +The -mpopcntb option allows GCC to generate the popcount and +double precision FP reciprocal estimate instruction implemented on the +POWER5 processor and other processors that support the PowerPC V2.02 +architecture. +The -mfprnd option allows GCC to generate the FP round to +integer instructions implemented on the POWER5+ processor and other +processors that support the PowerPC V2.03 architecture. +The -mcmpb option allows GCC to generate the compare bytes +instruction implemented on the POWER6 processor and other processors +that support the PowerPC V2.05 architecture. +The -mmfpgpr option allows GCC to generate the FP move to/from +general purpose register instructions implemented on the POWER6X +processor and other processors that support the extended PowerPC V2.05 +architecture. +The -mhard-dfp option allows GCC to generate the decimal floating +point instructions implemented on some POWER processors. + +

The -mpowerpc64 option allows GCC to generate the additional +64-bit instructions that are found in the full PowerPC64 architecture +and to treat GPRs as 64-bit, doubleword quantities. GCC defaults to +-mno-powerpc64. + +

If you specify both -mno-power and -mno-powerpc, GCC +will use only the instructions in the common subset of both +architectures plus some special AIX common-mode calls, and will not use +the MQ register. Specifying both -mpower and -mpowerpc +permits GCC to use any instruction from either architecture and to +allow use of the MQ register; specify this for the Motorola MPC601. + +

-mnew-mnemonics
-mold-mnemonics
Select which mnemonics to use in the generated assembler code. With +-mnew-mnemonics, GCC uses the assembler mnemonics defined for +the PowerPC architecture. With -mold-mnemonics it uses the +assembler mnemonics defined for the POWER architecture. Instructions +defined in only one architecture have only one mnemonic; GCC uses that +mnemonic irrespective of which of these options is specified. + +

GCC defaults to the mnemonics appropriate for the architecture in +use. Specifying -mcpu=cpu_type sometimes overrides the +value of these option. Unless you are building a cross-compiler, you +should normally not specify either -mnew-mnemonics or +-mold-mnemonics, but should instead accept the default. + +

-mcpu=cpu_type
Set architecture type, register usage, choice of mnemonics, and +instruction scheduling parameters for machine type cpu_type. +Supported values for cpu_type are 401, 403, +405, 405fp, 440, 440fp, 505, +601, 602, 603, 603e, 604, +604e, 620, 630, 740, 7400, +7450, 750, 801, 821, 823, +860, 970, 8540, ec603e, G3, +G4, G5, power, power2, power3, +power4, power5, power5+, power6, +power6x, common, powerpc, powerpc64, +rios, rios1, rios2, rsc, and rs64. + +

-mcpu=common selects a completely generic processor. Code +generated under this option will run on any POWER or PowerPC processor. +GCC will use only the instructions in the common subset of both +architectures, and will not use the MQ register. GCC assumes a generic +processor model for scheduling purposes. + +

-mcpu=power, -mcpu=power2, -mcpu=powerpc, and +-mcpu=powerpc64 specify generic POWER, POWER2, pure 32-bit +PowerPC (i.e., not MPC601), and 64-bit PowerPC architecture machine +types, with an appropriate, generic processor model assumed for +scheduling purposes. + +

The other options specify a specific processor. Code generated under +those options will run best on that processor, and may not run at all on +others. + +

The -mcpu options automatically enable or disable the +following options: + +

          -maltivec  -mfprnd  -mhard-float  -mmfcrf  -mmultiple 
+          -mnew-mnemonics  -mpopcntb  -mpower  -mpower2  -mpowerpc64 
+          -mpowerpc-gpopt  -mpowerpc-gfxopt  -mstring  -mmulhw  -mdlmzb  -mmfpgpr
+     
+

The particular options set for any particular CPU will vary between +compiler versions, depending on what setting seems to produce optimal +code for that CPU; it doesn't necessarily reflect the actual hardware's +capabilities. If you wish to set an individual option to a particular +value, you may specify it after the -mcpu option, like +-mcpu=970 -mno-altivec. + +

On AIX, the -maltivec and -mpowerpc64 options are +not enabled or disabled by the -mcpu option at present because +AIX does not have full support for these options. You may still +enable or disable them individually if you're sure it'll work in your +environment. + +

-mtune=cpu_type
Set the instruction scheduling parameters for machine type +cpu_type, but do not set the architecture type, register usage, or +choice of mnemonics, as -mcpu=cpu_type would. The same +values for cpu_type are used for -mtune as for +-mcpu. If both are specified, the code generated will use the +architecture, registers, and mnemonics set by -mcpu, but the +scheduling parameters set by -mtune. + +
-mswdiv
-mno-swdiv
Generate code to compute division as reciprocal estimate and iterative +refinement, creating opportunities for increased throughput. This +feature requires: optional PowerPC Graphics instruction set for single +precision and FRE instruction for double precision, assuming divides +cannot generate user-visible traps, and the domain values not include +Infinities, denormals or zero denominator. + +
-maltivec
-mno-altivec
Generate code that uses (does not use) AltiVec instructions, and also +enable the use of built-in functions that allow more direct access to +the AltiVec instruction set. You may also need to set +-mabi=altivec to adjust the current ABI with AltiVec ABI +enhancements. + +
-mvrsave
-mno-vrsave
Generate VRSAVE instructions when generating AltiVec code. + +
-msecure-plt
Generate code that allows ld and ld.so to build executables and shared +libraries with non-exec .plt and .got sections. This is a PowerPC +32-bit SYSV ABI option. + +
-mbss-plt
Generate code that uses a BSS .plt section that ld.so fills in, and +requires .plt and .got sections that are both writable and executable. +This is a PowerPC 32-bit SYSV ABI option. + +
-misel
-mno-isel
This switch enables or disables the generation of ISEL instructions. + +
-misel=yes/no
This switch has been deprecated. Use -misel and +-mno-isel instead. + +
-mspe
-mno-spe
This switch enables or disables the generation of SPE simd +instructions. + +
-mpaired
-mno-paired
This switch enables or disables the generation of PAIRED simd +instructions. + +
-mspe=yes/no
This option has been deprecated. Use -mspe and +-mno-spe instead. + +
-mfloat-gprs=yes/single/double/no
-mfloat-gprs
This switch enables or disables the generation of floating point +operations on the general purpose registers for architectures that +support it. + +

The argument yes or single enables the use of +single-precision floating point operations. + +

The argument double enables the use of single and +double-precision floating point operations. + +

The argument no disables floating point operations on the +general purpose registers. + +

This option is currently only available on the MPC854x. + +

-m32
-m64
Generate code for 32-bit or 64-bit environments of Darwin and SVR4 +targets (including GNU/Linux). The 32-bit environment sets int, long +and pointer to 32 bits and generates code that runs on any PowerPC +variant. The 64-bit environment sets int to 32 bits and long and +pointer to 64 bits, and generates code for PowerPC64, as for +-mpowerpc64. + +
-mfull-toc
-mno-fp-in-toc
-mno-sum-in-toc
-mminimal-toc
Modify generation of the TOC (Table Of Contents), which is created for +every executable file. The -mfull-toc option is selected by +default. In that case, GCC will allocate at least one TOC entry for +each unique non-automatic variable reference in your program. GCC +will also place floating-point constants in the TOC. However, only +16,384 entries are available in the TOC. + +

If you receive a linker error message that saying you have overflowed +the available TOC space, you can reduce the amount of TOC space used +with the -mno-fp-in-toc and -mno-sum-in-toc options. +-mno-fp-in-toc prevents GCC from putting floating-point +constants in the TOC and -mno-sum-in-toc forces GCC to +generate code to calculate the sum of an address and a constant at +run-time instead of putting that sum into the TOC. You may specify one +or both of these options. Each causes GCC to produce very slightly +slower and larger code at the expense of conserving TOC space. + +

If you still run out of space in the TOC even when you specify both of +these options, specify -mminimal-toc instead. This option causes +GCC to make only one TOC entry for every file. When you specify this +option, GCC will produce code that is slower and larger but which +uses extremely little TOC space. You may wish to use this option +only on files that contain less frequently executed code. + +

-maix64
-maix32
Enable 64-bit AIX ABI and calling convention: 64-bit pointers, 64-bit +long type, and the infrastructure needed to support them. +Specifying -maix64 implies -mpowerpc64 and +-mpowerpc, while -maix32 disables the 64-bit ABI and +implies -mno-powerpc64. GCC defaults to -maix32. + +
-mxl-compat
-mno-xl-compat
Produce code that conforms more closely to IBM XL compiler semantics +when using AIX-compatible ABI. Pass floating-point arguments to +prototyped functions beyond the register save area (RSA) on the stack +in addition to argument FPRs. Do not assume that most significant +double in 128-bit long double value is properly rounded when comparing +values and converting to double. Use XL symbol names for long double +support routines. + +

The AIX calling convention was extended but not initially documented to +handle an obscure K&R C case of calling a function that takes the +address of its arguments with fewer arguments than declared. IBM XL +compilers access floating point arguments which do not fit in the +RSA from the stack when a subroutine is compiled without +optimization. Because always storing floating-point arguments on the +stack is inefficient and rarely needed, this option is not enabled by +default and only is necessary when calling subroutines compiled by IBM +XL compilers without optimization. + +

-mpe
Support IBM RS/6000 SP Parallel Environment (PE). Link an +application written to use message passing with special startup code to +enable the application to run. The system must have PE installed in the +standard location (/usr/lpp/ppe.poe/), or the specs file +must be overridden with the -specs= option to specify the +appropriate directory location. The Parallel Environment does not +support threads, so the -mpe option and the -pthread +option are incompatible. + +
-malign-natural
-malign-power
On AIX, 32-bit Darwin, and 64-bit PowerPC GNU/Linux, the option +-malign-natural overrides the ABI-defined alignment of larger +types, such as floating-point doubles, on their natural size-based boundary. +The option -malign-power instructs GCC to follow the ABI-specified +alignment rules. GCC defaults to the standard alignment defined in the ABI. + +

On 64-bit Darwin, natural alignment is the default, and -malign-power +is not supported. + +

-msoft-float
-mhard-float
Generate code that does not use (uses) the floating-point register set. +Software floating point emulation is provided if you use the +-msoft-float option, and pass the option to GCC when linking. + +
-mmultiple
-mno-multiple
Generate code that uses (does not use) the load multiple word +instructions and the store multiple word instructions. These +instructions are generated by default on POWER systems, and not +generated on PowerPC systems. Do not use -mmultiple on little +endian PowerPC systems, since those instructions do not work when the +processor is in little endian mode. The exceptions are PPC740 and +PPC750 which permit the instructions usage in little endian mode. + +
-mstring
-mno-string
Generate code that uses (does not use) the load string instructions +and the store string word instructions to save multiple registers and +do small block moves. These instructions are generated by default on +POWER systems, and not generated on PowerPC systems. Do not use +-mstring on little endian PowerPC systems, since those +instructions do not work when the processor is in little endian mode. +The exceptions are PPC740 and PPC750 which permit the instructions +usage in little endian mode. + +
-mupdate
-mno-update
Generate code that uses (does not use) the load or store instructions +that update the base register to the address of the calculated memory +location. These instructions are generated by default. If you use +-mno-update, there is a small window between the time that the +stack pointer is updated and the address of the previous frame is +stored, which means code that walks the stack frame across interrupts or +signals may get corrupted data. + +
-mfused-madd
-mno-fused-madd
Generate code that uses (does not use) the floating point multiply and +accumulate instructions. These instructions are generated by default if +hardware floating is used. + +
-mmulhw
-mno-mulhw
Generate code that uses (does not use) the half-word multiply and +multiply-accumulate instructions on the IBM 405 and 440 processors. +These instructions are generated by default when targetting those +processors. + +
-mdlmzb
-mno-dlmzb
Generate code that uses (does not use) the string-search dlmzb +instruction on the IBM 405 and 440 processors. This instruction is +generated by default when targetting those processors. + +
-mno-bit-align
-mbit-align
On System V.4 and embedded PowerPC systems do not (do) force structures +and unions that contain bit-fields to be aligned to the base type of the +bit-field. + +

For example, by default a structure containing nothing but 8 +unsigned bit-fields of length 1 would be aligned to a 4 byte +boundary and have a size of 4 bytes. By using -mno-bit-align, +the structure would be aligned to a 1 byte boundary and be one byte in +size. + +

-mno-strict-align
-mstrict-align
On System V.4 and embedded PowerPC systems do not (do) assume that +unaligned memory references will be handled by the system. + +
-mrelocatable
-mno-relocatable
On embedded PowerPC systems generate code that allows (does not allow) +the program to be relocated to a different address at runtime. If you +use -mrelocatable on any module, all objects linked together must +be compiled with -mrelocatable or -mrelocatable-lib. + +
-mrelocatable-lib
-mno-relocatable-lib
On embedded PowerPC systems generate code that allows (does not allow) +the program to be relocated to a different address at runtime. Modules +compiled with -mrelocatable-lib can be linked with either modules +compiled without -mrelocatable and -mrelocatable-lib or +with modules compiled with the -mrelocatable options. + +
-mno-toc
-mtoc
On System V.4 and embedded PowerPC systems do not (do) assume that +register 2 contains a pointer to a global area pointing to the addresses +used in the program. + +
-mlittle
-mlittle-endian
On System V.4 and embedded PowerPC systems compile code for the +processor in little endian mode. The -mlittle-endian option is +the same as -mlittle. + +
-mbig
-mbig-endian
On System V.4 and embedded PowerPC systems compile code for the +processor in big endian mode. The -mbig-endian option is +the same as -mbig. + +
-mdynamic-no-pic
On Darwin and Mac OS X systems, compile code so that it is not +relocatable, but that its external references are relocatable. The +resulting code is suitable for applications, but not shared +libraries. + +
-mprioritize-restricted-insns=priority
This option controls the priority that is assigned to +dispatch-slot restricted instructions during the second scheduling +pass. The argument priority takes the value 0/1/2 to assign +no/highest/second-highest priority to dispatch slot restricted +instructions. + +
-msched-costly-dep=dependence_type
This option controls which dependences are considered costly +by the target during instruction scheduling. The argument +dependence_type takes one of the following values: +no: no dependence is costly, +all: all dependences are costly, +true_store_to_load: a true dependence from store to load is costly, +store_to_load: any dependence from store to load is costly, +number: any dependence which latency >= number is costly. + +
-minsert-sched-nops=scheme
This option controls which nop insertion scheme will be used during +the second scheduling pass. The argument scheme takes one of the +following values: +no: Don't insert nops. +pad: Pad with nops any dispatch group which has vacant issue slots, +according to the scheduler's grouping. +regroup_exact: Insert nops to force costly dependent insns into +separate groups. Insert exactly as many nops as needed to force an insn +to a new group, according to the estimated processor grouping. +number: Insert nops to force costly dependent insns into +separate groups. Insert number nops to force an insn to a new group. + +
-mcall-sysv
On System V.4 and embedded PowerPC systems compile code using calling +conventions that adheres to the March 1995 draft of the System V +Application Binary Interface, PowerPC processor supplement. This is the +default unless you configured GCC using powerpc-*-eabiaix. + +
-mcall-sysv-eabi
Specify both -mcall-sysv and -meabi options. + +
-mcall-sysv-noeabi
Specify both -mcall-sysv and -mno-eabi options. + +
-mcall-solaris
On System V.4 and embedded PowerPC systems compile code for the Solaris +operating system. + +
-mcall-linux
On System V.4 and embedded PowerPC systems compile code for the +Linux-based GNU system. + +
-mcall-gnu
On System V.4 and embedded PowerPC systems compile code for the +Hurd-based GNU system. + +
-mcall-netbsd
On System V.4 and embedded PowerPC systems compile code for the +NetBSD operating system. + +
-maix-struct-return
Return all structures in memory (as specified by the AIX ABI). + +
-msvr4-struct-return
Return structures smaller than 8 bytes in registers (as specified by the +SVR4 ABI). + +
-mabi=abi-type
Extend the current ABI with a particular extension, or remove such extension. +Valid values are altivec, no-altivec, spe, +no-spe, ibmlongdouble, ieeelongdouble. + +
-mabi=spe
Extend the current ABI with SPE ABI extensions. This does not change +the default ABI, instead it adds the SPE ABI extensions to the current +ABI. + +
-mabi=no-spe
Disable Booke SPE ABI extensions for the current ABI. + +
-mabi=ibmlongdouble
Change the current ABI to use IBM extended precision long double. +This is a PowerPC 32-bit SYSV ABI option. + +
-mabi=ieeelongdouble
Change the current ABI to use IEEE extended precision long double. +This is a PowerPC 32-bit Linux ABI option. + +
-mprototype
-mno-prototype
On System V.4 and embedded PowerPC systems assume that all calls to +variable argument functions are properly prototyped. Otherwise, the +compiler must insert an instruction before every non prototyped call to +set or clear bit 6 of the condition code register (CR) to +indicate whether floating point values were passed in the floating point +registers in case the function takes a variable arguments. With +-mprototype, only calls to prototyped variable argument functions +will set or clear the bit. + +
-msim
On embedded PowerPC systems, assume that the startup module is called +sim-crt0.o and that the standard C libraries are libsim.a and +libc.a. This is the default for powerpc-*-eabisim +configurations. + +
-mmvme
On embedded PowerPC systems, assume that the startup module is called +crt0.o and the standard C libraries are libmvme.a and +libc.a. + +
-mads
On embedded PowerPC systems, assume that the startup module is called +crt0.o and the standard C libraries are libads.a and +libc.a. + +
-myellowknife
On embedded PowerPC systems, assume that the startup module is called +crt0.o and the standard C libraries are libyk.a and +libc.a. + +
-mvxworks
On System V.4 and embedded PowerPC systems, specify that you are +compiling for a VxWorks system. + +
-mwindiss
Specify that you are compiling for the WindISS simulation environment. + +
-memb
On embedded PowerPC systems, set the PPC_EMB bit in the ELF flags +header to indicate that eabi extended relocations are used. + +
-meabi
-mno-eabi
On System V.4 and embedded PowerPC systems do (do not) adhere to the +Embedded Applications Binary Interface (eabi) which is a set of +modifications to the System V.4 specifications. Selecting -meabi +means that the stack is aligned to an 8 byte boundary, a function +__eabi is called to from main to set up the eabi +environment, and the -msdata option can use both r2 and +r13 to point to two separate small data areas. Selecting +-mno-eabi means that the stack is aligned to a 16 byte boundary, +do not call an initialization function from main, and the +-msdata option will only use r13 to point to a single +small data area. The -meabi option is on by default if you +configured GCC using one of the powerpc*-*-eabi* options. + +
-msdata=eabi
On System V.4 and embedded PowerPC systems, put small initialized +const global and static data in the .sdata2 section, which +is pointed to by register r2. Put small initialized +non-const global and static data in the .sdata section, +which is pointed to by register r13. Put small uninitialized +global and static data in the .sbss section, which is adjacent to +the .sdata section. The -msdata=eabi option is +incompatible with the -mrelocatable option. The +-msdata=eabi option also sets the -memb option. + +
-msdata=sysv
On System V.4 and embedded PowerPC systems, put small global and static +data in the .sdata section, which is pointed to by register +r13. Put small uninitialized global and static data in the +.sbss section, which is adjacent to the .sdata section. +The -msdata=sysv option is incompatible with the +-mrelocatable option. + +
-msdata=default
-msdata
On System V.4 and embedded PowerPC systems, if -meabi is used, +compile code the same as -msdata=eabi, otherwise compile code the +same as -msdata=sysv. + +
-msdata-data
On System V.4 and embedded PowerPC systems, put small global +data in the .sdata section. Put small uninitialized global +data in the .sbss section. Do not use register r13 +to address small data however. This is the default behavior unless +other -msdata options are used. + +
-msdata=none
-mno-sdata
On embedded PowerPC systems, put all initialized global and static data +in the .data section, and all uninitialized data in the +.bss section. + +
-G num
On embedded PowerPC systems, put global and static items less than or +equal to num bytes into the small data or bss sections instead of +the normal data or bss section. By default, num is 8. The +-G num switch is also passed to the linker. +All modules should be compiled with the same -G num value. + +
-mregnames
-mno-regnames
On System V.4 and embedded PowerPC systems do (do not) emit register +names in the assembly language output using symbolic forms. + +
-mlongcall
-mno-longcall
By default assume that all calls are far away so that a longer more +expensive calling sequence is required. This is required for calls +further than 32 megabytes (33,554,432 bytes) from the current location. +A short call will be generated if the compiler knows +the call cannot be that far away. This setting can be overridden by +the shortcall function attribute, or by #pragma +longcall(0). + +

Some linkers are capable of detecting out-of-range calls and generating +glue code on the fly. On these systems, long calls are unnecessary and +generate slower code. As of this writing, the AIX linker can do this, +as can the GNU linker for PowerPC/64. It is planned to add this feature +to the GNU linker for 32-bit PowerPC systems as well. + +

On Darwin/PPC systems, #pragma longcall will generate “jbsr +callee, L42”, plus a “branch island” (glue code). The two target +addresses represent the callee and the “branch island”. The +Darwin/PPC linker will prefer the first address and generate a “bl +callee” if the PPC “bl” instruction will reach the callee directly; +otherwise, the linker will generate “bl L42” to call the “branch +island”. The “branch island” is appended to the body of the +calling function; it computes the full 32-bit address of the callee +and jumps to it. + +

On Mach-O (Darwin) systems, this option directs the compiler emit to +the glue for every direct call, and the Darwin linker decides whether +to use or discard it. + +

In the future, we may cause GCC to ignore all longcall specifications +when the linker is known to generate glue. + +

-pthread
Adds support for multithreading with the pthreads library. +This option sets flags for both the preprocessor and linker. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/RS_002f6000-and-PowerPC-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/RS_002f6000-and-PowerPC-Pragmas.html new file mode 100644 index 0000000..e684e8a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/RS_002f6000-and-PowerPC-Pragmas.html @@ -0,0 +1,76 @@ + + +RS/6000 and PowerPC Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: M32C Pragmas, +Up: Pragmas +



+
+ +

5.52.3 RS/6000 and PowerPC Pragmas

+ +

The RS/6000 and PowerPC targets define one pragma for controlling +whether or not the longcall attribute is added to function +declarations by default. This pragma overrides the -mlongcall +option, but not the longcall and shortcall attributes. +See RS/6000 and PowerPC Options, for more information about when long +calls are and are not necessary. + +

+
longcall (1)
Apply the longcall attribute to all subsequent function +declarations. + +
longcall (0)
Do not apply the longcall attribute to subsequent function +declarations. +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Raw-read_002fwrite-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Raw-read_002fwrite-Functions.html new file mode 100644 index 0000000..29b9d9e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Raw-read_002fwrite-Functions.html @@ -0,0 +1,67 @@ + + +Raw read/write Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +
5.50.5.4 Raw read/write Functions
+ +

This sections describes built-in functions related to read and write +instructions to access memory. These functions generate +membar instructions to flush the I/O load and stores where +appropriate, as described in Fujitsu's manual described above. + +

+
unsigned char __builtin_read8 (void *data)
unsigned short __builtin_read16 (void *data)
unsigned long __builtin_read32 (void *data)
unsigned long long __builtin_read64 (void *data) +
void __builtin_write8 (void *data, unsigned char datum)
void __builtin_write16 (void *data, unsigned short datum)
void __builtin_write32 (void *data, unsigned long datum)
void __builtin_write64 (void *data, unsigned long long datum)
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Restricted-Pointers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Restricted-Pointers.html new file mode 100644 index 0000000..7f1cd5e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Restricted-Pointers.html @@ -0,0 +1,96 @@ + + +Restricted Pointers - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Volatiles, +Up: C++ Extensions +



+
+ +

6.2 Restricting Pointer Aliasing

+ +

+As with the C front end, G++ understands the C99 feature of restricted pointers, +specified with the __restrict__, or __restrict type +qualifier. Because you cannot compile C++ by specifying the -std=c99 +language flag, restrict is not a keyword in C++. + +

In addition to allowing restricted pointers, you can specify restricted +references, which indicate that the reference is not aliased in the local +context. + +

     void fn (int *__restrict__ rptr, int &__restrict__ rref)
+     {
+       /* ... */
+     }
+
+

In the body of fn, rptr points to an unaliased integer and +rref refers to a (different) unaliased integer. + +

You may also specify whether a member function's this pointer is +unaliased by using __restrict__ as a member function qualifier. + +

     void T::fn () __restrict__
+     {
+       /* ... */
+     }
+
+

Within the body of T::fn, this will have the effective +definition T *__restrict__ const this. Notice that the +interpretation of a __restrict__ member function qualifier is +different to that of const or volatile qualifier, in that it +is applied to the pointer rather than the object. This is consistent with +other compilers which implement restricted pointers. + +

As with all outermost parameter qualifiers, __restrict__ is +ignored in function definition matching. This means you only need to +specify __restrict__ in a function definition, rather than +in a function prototype as well. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Return-Address.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Return-Address.html new file mode 100644 index 0000000..5329e56 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Return-Address.html @@ -0,0 +1,110 @@ + + +Return Address - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Function Names, +Up: C Extensions +



+
+ +

5.44 Getting the Return or Frame Address of a Function

+ +

These functions may be used to get information about the callers of a +function. + +

+— Built-in Function: void * __builtin_return_address (unsigned int level)
+

This function returns the return address of the current function, or of +one of its callers. The level argument is number of frames to +scan up the call stack. A value of 0 yields the return address +of the current function, a value of 1 yields the return address +of the caller of the current function, and so forth. When inlining +the expected behavior is that the function will return the address of +the function that will be returned to. To work around this behavior use +the noinline function attribute. + +

The level argument must be a constant integer. + +

On some machines it may be impossible to determine the return address of +any function other than the current one; in such cases, or when the top +of the stack has been reached, this function will return 0 or a +random value. In addition, __builtin_frame_address may be used +to determine if the top of the stack has been reached. + +

This function should only be used with a nonzero argument for debugging +purposes. +

+ +
+— Built-in Function: void * __builtin_frame_address (unsigned int level)
+

This function is similar to __builtin_return_address, but it +returns the address of the function frame rather than the return address +of the function. Calling __builtin_frame_address with a value of +0 yields the frame address of the current function, a value of +1 yields the frame address of the caller of the current function, +and so forth. + +

The frame is the area on the stack which holds local variables and saved +registers. The frame address is normally the address of the first word +pushed on to the stack by the function. However, the exact definition +depends upon the processor and the calling convention. If the processor +has a dedicated frame pointer register, and the function has a frame, +then __builtin_frame_address will return the value of the frame +pointer register. + +

On some machines it may be impossible to determine the frame address of +any function other than the current one; in such cases, or when the top +of the stack has been reached, this function will return 0 if +the first frame pointer is properly initialized by the startup code. + +

This function should only be used with a nonzero argument for debugging +purposes. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Running-Protoize.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Running-Protoize.html new file mode 100644 index 0000000..8ce2e72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Running-Protoize.html @@ -0,0 +1,194 @@ + + +Running Protoize - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Precompiled Headers, +Up: Invoking GCC +



+
+ +

3.21 Running Protoize

+ +

The program protoize is an optional part of GCC. You can use +it to add prototypes to a program, thus converting the program to ISO +C in one respect. The companion program unprotoize does the +reverse: it removes argument types from any prototypes that are found. + +

When you run these programs, you must specify a set of source files as +command line arguments. The conversion programs start out by compiling +these files to see what functions they define. The information gathered +about a file foo is saved in a file named foo.X. + +

After scanning comes actual conversion. The specified files are all +eligible to be converted; any files they include (whether sources or +just headers) are eligible as well. + +

But not all the eligible files are converted. By default, +protoize and unprotoize convert only source and header +files in the current directory. You can specify additional directories +whose files should be converted with the -d directory +option. You can also specify particular files to exclude with the +-x file option. A file is converted if it is eligible, its +directory name matches one of the specified directory names, and its +name within the directory has not been excluded. + +

Basic conversion with protoize consists of rewriting most +function definitions and function declarations to specify the types of +the arguments. The only ones not rewritten are those for varargs +functions. + +

protoize optionally inserts prototype declarations at the +beginning of the source file, to make them available for any calls that +precede the function's definition. Or it can insert prototype +declarations with block scope in the blocks where undeclared functions +are called. + +

Basic conversion with unprotoize consists of rewriting most +function declarations to remove any argument types, and rewriting +function definitions to the old-style pre-ISO form. + +

Both conversion programs print a warning for any function declaration or +definition that they can't convert. You can suppress these warnings +with -q. + +

The output from protoize or unprotoize replaces the +original source file. The original file is renamed to a name ending +with .save (for DOS, the saved filename ends in .sav +without the original .c suffix). If the .save (.sav +for DOS) file already exists, then the source file is simply discarded. + +

protoize and unprotoize both depend on GCC itself to +scan the program and collect information about the functions it uses. +So neither of these programs will work until GCC is installed. + +

Here is a table of the options you can use with protoize and +unprotoize. Each option works with both programs unless +otherwise stated. + +

+
-B directory
Look for the file SYSCALLS.c.X in directory, instead of the +usual directory (normally /usr/local/lib). This file contains +prototype information about standard system functions. This option +applies only to protoize. + +
-c compilation-options
Use compilation-options as the options when running gcc to +produce the .X files. The special option -aux-info is +always passed in addition, to tell gcc to write a .X file. + +

Note that the compilation options must be given as a single argument to +protoize or unprotoize. If you want to specify several +gcc options, you must quote the entire set of compilation options +to make them a single word in the shell. + +

There are certain gcc arguments that you cannot use, because they +would produce the wrong kind of output. These include -g, +-O, -c, -S, and -o If you include these in +the compilation-options, they are ignored. + +

-C
Rename files to end in .C (.cc for DOS-based file +systems) instead of .c. This is convenient if you are converting +a C program to C++. This option applies only to protoize. + +
-g
Add explicit global declarations. This means inserting explicit +declarations at the beginning of each source file for each function +that is called in the file and was not declared. These declarations +precede the first function definition that contains a call to an +undeclared function. This option applies only to protoize. + +
-i string
Indent old-style parameter declarations with the string string. +This option applies only to protoize. + +

unprotoize converts prototyped function definitions to old-style +function definitions, where the arguments are declared between the +argument list and the initial {. By default, unprotoize +uses five spaces as the indentation. If you want to indent with just +one space instead, use -i " ". + +

-k
Keep the .X files. Normally, they are deleted after conversion +is finished. + +
-l
Add explicit local declarations. protoize with -l inserts +a prototype declaration for each function in each block which calls the +function without any declaration. This option applies only to +protoize. + +
-n
Make no real changes. This mode just prints information about the conversions +that would have been done without -n. + +
-N
Make no .save files. The original files are simply deleted. +Use this option with caution. + +
-p program
Use the program program as the compiler. Normally, the name +gcc is used. + +
-q
Work quietly. Most warnings are suppressed. + +
-v
Print the version number, just like -v for gcc. +
+ +

If you need special compiler options to compile one of your program's +source files, then you should generate that file's .X file +specially, by running gcc on that source file with the +appropriate options and the option -aux-info. Then run +protoize on the entire set of files. protoize will use +the existing .X file because it is newer than the source file. +For example: + +

     gcc -Dfoo=bar file1.c -aux-info file1.X
+     protoize *.c
+
+

You need to include the special files along with the rest in the +protoize command, even though their .X files already +exist, because otherwise they won't get converted. + +

See Protoize Caveats, for more information on how to use +protoize successfully. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SH-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SH-Options.html new file mode 100644 index 0000000..6de7e13 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SH-Options.html @@ -0,0 +1,241 @@ + + +SH Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Score Options, +Up: Submodel Options +



+
+ +

3.17.30 SH Options

+ +

These -m options are defined for the SH implementations: + +

+
-m1
Generate code for the SH1. + +
-m2
Generate code for the SH2. + +
-m2e
Generate code for the SH2e. + +
-m3
Generate code for the SH3. + +
-m3e
Generate code for the SH3e. + +
-m4-nofpu
Generate code for the SH4 without a floating-point unit. + +
-m4-single-only
Generate code for the SH4 with a floating-point unit that only +supports single-precision arithmetic. + +
-m4-single
Generate code for the SH4 assuming the floating-point unit is in +single-precision mode by default. + +
-m4
Generate code for the SH4. + +
-m4a-nofpu
Generate code for the SH4al-dsp, or for a SH4a in such a way that the +floating-point unit is not used. + +
-m4a-single-only
Generate code for the SH4a, in such a way that no double-precision +floating point operations are used. + +
-m4a-single
Generate code for the SH4a assuming the floating-point unit is in +single-precision mode by default. + +
-m4a
Generate code for the SH4a. + +
-m4al
Same as -m4a-nofpu, except that it implicitly passes +-dsp to the assembler. GCC doesn't generate any DSP +instructions at the moment. + +
-mb
Compile code for the processor in big endian mode. + +
-ml
Compile code for the processor in little endian mode. + +
-mdalign
Align doubles at 64-bit boundaries. Note that this changes the calling +conventions, and thus some functions from the standard C library will +not work unless you recompile it first with -mdalign. + +
-mrelax
Shorten some address references at link time, when possible; uses the +linker option -relax. + +
-mbigtable
Use 32-bit offsets in switch tables. The default is to use +16-bit offsets. + +
-mfmovd
Enable the use of the instruction fmovd. + +
-mhitachi
Comply with the calling conventions defined by Renesas. + +
-mrenesas
Comply with the calling conventions defined by Renesas. + +
-mno-renesas
Comply with the calling conventions defined for GCC before the Renesas +conventions were available. This option is the default for all +targets of the SH toolchain except for sh-symbianelf. + +
-mnomacsave
Mark the MAC register as call-clobbered, even if +-mhitachi is given. + +
-mieee
Increase IEEE-compliance of floating-point code. +At the moment, this is equivalent to -fno-finite-math-only. +When generating 16 bit SH opcodes, getting IEEE-conforming results for +comparisons of NANs / infinities incurs extra overhead in every +floating point comparison, therefore the default is set to +-ffinite-math-only. + +
-minline-ic_invalidate
Inline code to invalidate instruction cache entries after setting up +nested function trampolines. +This option has no effect if -musermode is in effect and the selected +code generation option (e.g. -m4) does not allow the use of the icbi +instruction. +If the selected code generation option does not allow the use of the icbi +instruction, and -musermode is not in effect, the inlined code will +manipulate the instruction cache address array directly with an associative +write. This not only requires privileged mode, but it will also +fail if the cache line had been mapped via the TLB and has become unmapped. + +
-misize
Dump instruction size and location in the assembly code. + +
-mpadstruct
This option is deprecated. It pads structures to multiple of 4 bytes, +which is incompatible with the SH ABI. + +
-mspace
Optimize for space instead of speed. Implied by -Os. + +
-mprefergot
When generating position-independent code, emit function calls using +the Global Offset Table instead of the Procedure Linkage Table. + +
-musermode
Don't generate privileged mode only code; implies -mno-inline-ic_invalidate +if the inlined code would not work in user mode. +This is the default when the target is sh-*-linux*. + +
-multcost=number
Set the cost to assume for a multiply insn. + +
-mdiv=strategy
Set the division strategy to use for SHmedia code. strategy must be +one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, +inv:call2, inv:fp . +"fp" performs the operation in floating point. This has a very high latency, +but needs only a few instructions, so it might be a good choice if +your code has enough easily exploitable ILP to allow the compiler to +schedule the floating point instructions together with other instructions. +Division by zero causes a floating point exception. +"inv" uses integer operations to calculate the inverse of the divisor, +and then multiplies the dividend with the inverse. This strategy allows +cse and hoisting of the inverse calculation. Division by zero calculates +an unspecified result, but does not trap. +"inv:minlat" is a variant of "inv" where if no cse / hoisting opportunities +have been found, or if the entire operation has been hoisted to the same +place, the last stages of the inverse calculation are intertwined with the +final multiply to reduce the overall latency, at the expense of using a few +more instructions, and thus offering fewer scheduling opportunities with +other code. +"call" calls a library function that usually implements the inv:minlat +strategy. +This gives high code density for m5-*media-nofpu compilations. +"call2" uses a different entry point of the same library function, where it +assumes that a pointer to a lookup table has already been set up, which +exposes the pointer load to cse / code hoisting optimizations. +"inv:call", "inv:call2" and "inv:fp" all use the "inv" algorithm for initial +code generation, but if the code stays unoptimized, revert to the "call", +"call2", or "fp" strategies, respectively. Note that the +potentially-trapping side effect of division by zero is carried by a +separate instruction, so it is possible that all the integer instructions +are hoisted out, but the marker for the side effect stays where it is. +A recombination to fp operations or a call is not possible in that case. +"inv20u" and "inv20l" are variants of the "inv:minlat" strategy. In the case +that the inverse calculation was nor separated from the multiply, they speed +up division where the dividend fits into 20 bits (plus sign where applicable), +by inserting a test to skip a number of operations in this case; this test +slows down the case of larger dividends. inv20u assumes the case of a such +a small dividend to be unlikely, and inv20l assumes it to be likely. + +
-mdivsi3_libfunc=name
Set the name of the library function used for 32 bit signed division to +name. This only affect the name used in the call and inv:call +division strategies, and the compiler will still expect the same +sets of input/output/clobbered registers as if this option was not present. + +
-madjust-unroll
Throttle unrolling to avoid thrashing target registers. +This option only has an effect if the gcc code base supports the +TARGET_ADJUST_UNROLL_MAX target hook. + +
-mindexed-addressing
Enable the use of the indexed addressing mode for SHmedia32/SHcompact. +This is only safe if the hardware and/or OS implement 32 bit wrap-around +semantics for the indexed addressing mode. The architecture allows the +implementation of processors with 64 bit MMU, which the OS could use to +get 32 bit addressing, but since no current hardware implementation supports +this or any other way to make the indexed addressing mode safe to use in +the 32 bit ABI, the default is -mno-indexed-addressing. + +
-mgettrcost=number
Set the cost assumed for the gettr instruction to number. +The default is 2 if -mpt-fixed is in effect, 100 otherwise. + +
-mpt-fixed
Assume pt* instructions won't trap. This will generally generate better +scheduled code, but is unsafe on current hardware. The current architecture +definition says that ptabs and ptrel trap when the target anded with 3 is 3. +This has the unintentional effect of making it unsafe to schedule ptabs / +ptrel before a branch, or hoist it out of a loop. For example, +__do_global_ctors, a part of libgcc that runs constructors at program +startup, calls functions in a list which is delimited by −1. With the +-mpt-fixed option, the ptabs will be done before testing against −1. +That means that all the constructors will be run a bit quicker, but when +the loop comes to the end of the list, the program crashes because ptabs +loads −1 into a target register. Since this option is unsafe for any +hardware implementing the current architecture specification, the default +is -mno-pt-fixed. Unless the user specifies a specific cost with +-mgettrcost, -mno-pt-fixed also implies -mgettrcost=100; +this deters register allocation using target registers for storing +ordinary integers. + +
-minvalid-symbols
Assume symbols might be invalid. Ordinary function symbols generated by +the compiler will always be valid to load with movi/shori/ptabs or +movi/shori/ptrel, but with assembler and/or linker tricks it is possible +to generate symbols that will cause ptabs / ptrel to trap. +This option is only meaningful when -mno-pt-fixed is in effect. +It will then prevent cross-basic-block cse, hoisting and most scheduling +of symbol loads. The default is -mno-invalid-symbols. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPARC-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPARC-Options.html new file mode 100644 index 0000000..157eeba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPARC-Options.html @@ -0,0 +1,265 @@ + + +SPARC Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: SH Options, +Up: Submodel Options +



+
+ +

3.17.31 SPARC Options

+ +

+These -m options are supported on the SPARC: + +

+
-mno-app-regs
-mapp-regs
Specify -mapp-regs to generate output using the global registers +2 through 4, which the SPARC SVR4 ABI reserves for applications. This +is the default. + +

To be fully SVR4 ABI compliant at the cost of some performance loss, +specify -mno-app-regs. You should compile libraries and system +software with this option. + +

-mfpu
-mhard-float
Generate output containing floating point instructions. This is the +default. + +
-mno-fpu
-msoft-float
Generate output containing library calls for floating point. +Warning: the requisite libraries are not available for all SPARC +targets. Normally the facilities of the machine's usual C compiler are +used, but this cannot be done directly in cross-compilation. You must make +your own arrangements to provide suitable library functions for +cross-compilation. The embedded targets sparc-*-aout and +sparclite-*-* do provide software floating point support. + +

-msoft-float changes the calling convention in the output file; +therefore, it is only useful if you compile all of a program with +this option. In particular, you need to compile libgcc.a, the +library that comes with GCC, with -msoft-float in order for +this to work. + +

-mhard-quad-float
Generate output containing quad-word (long double) floating point +instructions. + +
-msoft-quad-float
Generate output containing library calls for quad-word (long double) +floating point instructions. The functions called are those specified +in the SPARC ABI. This is the default. + +

As of this writing, there are no SPARC implementations that have hardware +support for the quad-word floating point instructions. They all invoke +a trap handler for one of these instructions, and then the trap handler +emulates the effect of the instruction. Because of the trap handler overhead, +this is much slower than calling the ABI library routines. Thus the +-msoft-quad-float option is the default. + +

-mno-unaligned-doubles
-munaligned-doubles
Assume that doubles have 8 byte alignment. This is the default. + +

With -munaligned-doubles, GCC assumes that doubles have 8 byte +alignment only if they are contained in another type, or if they have an +absolute address. Otherwise, it assumes they have 4 byte alignment. +Specifying this option avoids some rare compatibility problems with code +generated by other compilers. It is not the default because it results +in a performance loss, especially for floating point code. + +

-mno-faster-structs
-mfaster-structs
With -mfaster-structs, the compiler assumes that structures +should have 8 byte alignment. This enables the use of pairs of +ldd and std instructions for copies in structure +assignment, in place of twice as many ld and st pairs. +However, the use of this changed alignment directly violates the SPARC +ABI. Thus, it's intended only for use on targets where the developer +acknowledges that their resulting code will not be directly in line with +the rules of the ABI. + +
-mimpure-text
-mimpure-text, used in addition to -shared, tells +the compiler to not pass -z text to the linker when linking a +shared object. Using this option, you can link position-dependent +code into a shared object. + +

-mimpure-text suppresses the “relocations remain against +allocatable but non-writable sections” linker error message. +However, the necessary relocations will trigger copy-on-write, and the +shared object is not actually shared across processes. Instead of +using -mimpure-text, you should compile all source code with +-fpic or -fPIC. + +

This option is only available on SunOS and Solaris. + +

-mcpu=cpu_type
Set the instruction set, register set, and instruction scheduling parameters +for machine type cpu_type. Supported values for cpu_type are +v7, cypress, v8, supersparc, sparclite, +f930, f934, hypersparc, sparclite86x, +sparclet, tsc701, v9, ultrasparc, +ultrasparc3, niagara and niagara2. + +

Default instruction scheduling parameters are used for values that select +an architecture and not an implementation. These are v7, v8, +sparclite, sparclet, v9. + +

Here is a list of each supported architecture and their supported +implementations. + +

              v7:             cypress
+              v8:             supersparc, hypersparc
+              sparclite:      f930, f934, sparclite86x
+              sparclet:       tsc701
+              v9:             ultrasparc, ultrasparc3, niagara, niagara2
+     
+

By default (unless configured otherwise), GCC generates code for the V7 +variant of the SPARC architecture. With -mcpu=cypress, the compiler +additionally optimizes it for the Cypress CY7C602 chip, as used in the +SPARCStation/SPARCServer 3xx series. This is also appropriate for the older +SPARCStation 1, 2, IPX etc. + +

With -mcpu=v8, GCC generates code for the V8 variant of the SPARC +architecture. The only difference from V7 code is that the compiler emits +the integer multiply and integer divide instructions which exist in SPARC-V8 +but not in SPARC-V7. With -mcpu=supersparc, the compiler additionally +optimizes it for the SuperSPARC chip, as used in the SPARCStation 10, 1000 and +2000 series. + +

With -mcpu=sparclite, GCC generates code for the SPARClite variant of +the SPARC architecture. This adds the integer multiply, integer divide step +and scan (ffs) instructions which exist in SPARClite but not in SPARC-V7. +With -mcpu=f930, the compiler additionally optimizes it for the +Fujitsu MB86930 chip, which is the original SPARClite, with no FPU. With +-mcpu=f934, the compiler additionally optimizes it for the Fujitsu +MB86934 chip, which is the more recent SPARClite with FPU. + +

With -mcpu=sparclet, GCC generates code for the SPARClet variant of +the SPARC architecture. This adds the integer multiply, multiply/accumulate, +integer divide step and scan (ffs) instructions which exist in SPARClet +but not in SPARC-V7. With -mcpu=tsc701, the compiler additionally +optimizes it for the TEMIC SPARClet chip. + +

With -mcpu=v9, GCC generates code for the V9 variant of the SPARC +architecture. This adds 64-bit integer and floating-point move instructions, +3 additional floating-point condition code registers and conditional move +instructions. With -mcpu=ultrasparc, the compiler additionally +optimizes it for the Sun UltraSPARC I/II/IIi chips. With +-mcpu=ultrasparc3, the compiler additionally optimizes it for the +Sun UltraSPARC III/III+/IIIi/IIIi+/IV/IV+ chips. With +-mcpu=niagara, the compiler additionally optimizes it for +Sun UltraSPARC T1 chips. With -mcpu=niagara2, the compiler +additionally optimizes it for Sun UltraSPARC T2 chips. + +

-mtune=cpu_type
Set the instruction scheduling parameters for machine type +cpu_type, but do not set the instruction set or register set that the +option -mcpu=cpu_type would. + +

The same values for -mcpu=cpu_type can be used for +-mtune=cpu_type, but the only useful values are those +that select a particular cpu implementation. Those are cypress, +supersparc, hypersparc, f930, f934, +sparclite86x, tsc701, ultrasparc, +ultrasparc3, niagara, and niagara2. + +

-mv8plus
-mno-v8plus
With -mv8plus, GCC generates code for the SPARC-V8+ ABI. The +difference from the V8 ABI is that the global and out registers are +considered 64-bit wide. This is enabled by default on Solaris in 32-bit +mode for all SPARC-V9 processors. + +
-mvis
-mno-vis
With -mvis, GCC generates code that takes advantage of the UltraSPARC +Visual Instruction Set extensions. The default is -mno-vis. +
+ +

These -m options are supported in addition to the above +on SPARC-V9 processors in 64-bit environments: + +

+
-mlittle-endian
Generate code for a processor running in little-endian mode. It is only +available for a few configurations and most notably not on Solaris and Linux. + +
-m32
-m64
Generate code for a 32-bit or 64-bit environment. +The 32-bit environment sets int, long and pointer to 32 bits. +The 64-bit environment sets int to 32 bits and long and pointer +to 64 bits. + +
-mcmodel=medlow
Generate code for the Medium/Low code model: 64-bit addresses, programs +must be linked in the low 32 bits of memory. Programs can be statically +or dynamically linked. + +
-mcmodel=medmid
Generate code for the Medium/Middle code model: 64-bit addresses, programs +must be linked in the low 44 bits of memory, the text and data segments must +be less than 2GB in size and the data segment must be located within 2GB of +the text segment. + +
-mcmodel=medany
Generate code for the Medium/Anywhere code model: 64-bit addresses, programs +may be linked anywhere in memory, the text and data segments must be less +than 2GB in size and the data segment must be located within 2GB of the +text segment. + +
-mcmodel=embmedany
Generate code for the Medium/Anywhere code model for embedded systems: +64-bit addresses, the text and data segments must be less than 2GB in +size, both starting anywhere in memory (determined at link time). The +global register %g4 points to the base of the data segment. Programs +are statically linked and PIC is not supported. + +
-mstack-bias
-mno-stack-bias
With -mstack-bias, GCC assumes that the stack pointer, and +frame pointer if present, are offset by −2047 which must be added back +when making stack frame references. This is the default in 64-bit mode. +Otherwise, assume no such offset is present. +
+ +

These switches are supported in addition to the above on Solaris: + +

+
-threads
Add support for multithreading using the Solaris threads library. This +option sets flags for both the preprocessor and linker. This option does +not affect the thread safety of object code produced by the compiler or +that of libraries supplied with it. + +
-pthreads
Add support for multithreading using the POSIX threads library. This +option sets flags for both the preprocessor and linker. This option does +not affect the thread safety of object code produced by the compiler or +that of libraries supplied with it. + +
-pthread
This is a synonym for -pthreads. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPARC-VIS-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPARC-VIS-Built_002din-Functions.html new file mode 100644 index 0000000..610e9d8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPARC-VIS-Built_002din-Functions.html @@ -0,0 +1,92 @@ + + +SPARC VIS Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

5.50.10 SPARC VIS Built-in Functions

+ +

GCC supports SIMD operations on the SPARC using both the generic vector +extensions (see Vector Extensions) as well as built-in functions for +the SPARC Visual Instruction Set (VIS). When you use the -mvis +switch, the VIS extension is exposed as the following built-in functions: + +

     typedef int v2si __attribute__ ((vector_size (8)));
+     typedef short v4hi __attribute__ ((vector_size (8)));
+     typedef short v2hi __attribute__ ((vector_size (4)));
+     typedef char v8qi __attribute__ ((vector_size (8)));
+     typedef char v4qi __attribute__ ((vector_size (4)));
+     
+     void * __builtin_vis_alignaddr (void *, long);
+     int64_t __builtin_vis_faligndatadi (int64_t, int64_t);
+     v2si __builtin_vis_faligndatav2si (v2si, v2si);
+     v4hi __builtin_vis_faligndatav4hi (v4si, v4si);
+     v8qi __builtin_vis_faligndatav8qi (v8qi, v8qi);
+     
+     v4hi __builtin_vis_fexpand (v4qi);
+     
+     v4hi __builtin_vis_fmul8x16 (v4qi, v4hi);
+     v4hi __builtin_vis_fmul8x16au (v4qi, v4hi);
+     v4hi __builtin_vis_fmul8x16al (v4qi, v4hi);
+     v4hi __builtin_vis_fmul8sux16 (v8qi, v4hi);
+     v4hi __builtin_vis_fmul8ulx16 (v8qi, v4hi);
+     v2si __builtin_vis_fmuld8sux16 (v4qi, v2hi);
+     v2si __builtin_vis_fmuld8ulx16 (v4qi, v2hi);
+     
+     v4qi __builtin_vis_fpack16 (v4hi);
+     v8qi __builtin_vis_fpack32 (v2si, v2si);
+     v2hi __builtin_vis_fpackfix (v2si);
+     v8qi __builtin_vis_fpmerge (v4qi, v4qi);
+     
+     int64_t __builtin_vis_pdist (v8qi, v8qi, int64_t);
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Built_002din-Functions.html new file mode 100644 index 0000000..b28cc5e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Built_002din-Functions.html @@ -0,0 +1,99 @@ + + +SPU Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +

5.50.11 SPU Built-in Functions

+ +

GCC provides extensions for the SPU processor as described in the +Sony/Toshiba/IBM SPU Language Extensions Specification, which can be +found at http://cell.scei.co.jp/ or +http://www.ibm.com/developerworks/power/cell/. GCC's +implementation differs in several ways. + +

    +
  • The optional extension of specifying vector constants in parentheses is +not supported. + +
  • A vector initializer requires no cast if the vector constant is of the +same type as the variable it is initializing. + +
  • If signed or unsigned is omitted, the signedness of the +vector type is the default signedness of the base type. The default +varies depending on the operating system, so a portable program should +always specify the signedness. + +
  • By default, the keyword __vector is added. The macro +vector is defined in <spu_intrinsics.h> and can be +undefined. + +
  • GCC allows using a typedef name as the type specifier for a +vector type. + +
  • For C, overloaded functions are implemented with macros so the following +does not work: + +
                spu_add ((vector signed int){1, 2, 3, 4}, foo);
    +     
    +

    Since spu_add is a macro, the vector constant in the example +is treated as four separate arguments. Wrap the entire argument in +parentheses for this to work. + +

  • The extended version of __builtin_expect is not supported. + +
+ +

Note: Only the interface described in the aforementioned +specification is supported. Internally, GCC uses built-in functions to +implement the required functionality, but these are not supported and +are subject to change without notice. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Options.html new file mode 100644 index 0000000..e64fbc3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Options.html @@ -0,0 +1,105 @@ + + +SPU Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: SPARC Options, +Up: Submodel Options +



+
+ +

3.17.32 SPU Options

+ +

+These -m options are supported on the SPU: + +

+
-mwarn-reloc
-merror-reloc
+The loader for SPU does not handle dynamic relocations. By default, GCC +will give an error when it generates code that requires a dynamic +relocation. -mno-error-reloc disables the error, +-mwarn-reloc will generate a warning instead. + +
-msafe-dma
-munsafe-dma
+Instructions which initiate or test completion of DMA must not be +reordered with respect to loads and stores of the memory which is being +accessed. Users typically address this problem using the volatile +keyword, but that can lead to inefficient code in places where the +memory is known to not change. Rather than mark the memory as volatile +we treat the DMA instructions as potentially effecting all memory. With +-munsafe-dma users must use the volatile keyword to protect +memory accesses. + +
-mbranch-hints
+By default, GCC will generate a branch hint instruction to avoid +pipeline stalls for always taken or probably taken branches. A hint +will not be generated closer than 8 instructions away from its branch. +There is little reason to disable them, except for debugging purposes, +or to make an object a little bit smaller. + +
-msmall-mem
-mlarge-mem
+By default, GCC generates code assuming that addresses are never larger +than 18 bits. With -mlarge-mem code is generated that assumes +a full 32 bit address. + +
-mstdmain
+By default, GCC links against startup code that assumes the SPU-style +main function interface (which has an unconventional parameter list). +With -mstdmain, GCC will link your program against startup +code that assumes a C99-style interface to main, including a +local copy of argv strings. + +
-mfixed-range=register-range
Generate code treating the given register range as fixed registers. +A fixed register is one that the register allocator can not use. This is +useful when compiling kernel code. A register range is specified as +two registers separated by a dash. Multiple register ranges can be +specified separated by a comma. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Type-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Type-Attributes.html new file mode 100644 index 0000000..53f4f5a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/SPU-Type-Attributes.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/S_002f390-and-zSeries-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/S_002f390-and-zSeries-Options.html new file mode 100644 index 0000000..c966f59 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/S_002f390-and-zSeries-Options.html @@ -0,0 +1,186 @@ + + +S/390 and zSeries Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

3.17.28 S/390 and zSeries Options

+ +

+These are the -m options defined for the S/390 and zSeries architecture. + +

+
-mhard-float
-msoft-float
Use (do not use) the hardware floating-point instructions and registers +for floating-point operations. When -msoft-float is specified, +functions in libgcc.a will be used to perform floating-point +operations. When -mhard-float is specified, the compiler +generates IEEE floating-point instructions. This is the default. + +
-mlong-double-64
-mlong-double-128
These switches control the size of long double type. A size +of 64bit makes the long double type equivalent to the double +type. This is the default. + +
-mbackchain
-mno-backchain
Store (do not store) the address of the caller's frame as backchain pointer +into the callee's stack frame. +A backchain may be needed to allow debugging using tools that do not understand +DWARF-2 call frame information. +When -mno-packed-stack is in effect, the backchain pointer is stored +at the bottom of the stack frame; when -mpacked-stack is in effect, +the backchain is placed into the topmost word of the 96/160 byte register +save area. + +

In general, code compiled with -mbackchain is call-compatible with +code compiled with -mmo-backchain; however, use of the backchain +for debugging purposes usually requires that the whole binary is built with +-mbackchain. Note that the combination of -mbackchain, +-mpacked-stack and -mhard-float is not supported. In order +to build a linux kernel use -msoft-float. + +

The default is to not maintain the backchain. + +

-mpacked-stack
-mno-packed-stack
Use (do not use) the packed stack layout. When -mno-packed-stack is +specified, the compiler uses the all fields of the 96/160 byte register save +area only for their default purpose; unused fields still take up stack space. +When -mpacked-stack is specified, register save slots are densely +packed at the top of the register save area; unused space is reused for other +purposes, allowing for more efficient use of the available stack space. +However, when -mbackchain is also in effect, the topmost word of +the save area is always used to store the backchain, and the return address +register is always saved two words below the backchain. + +

As long as the stack frame backchain is not used, code generated with +-mpacked-stack is call-compatible with code generated with +-mno-packed-stack. Note that some non-FSF releases of GCC 2.95 for +S/390 or zSeries generated code that uses the stack frame backchain at run +time, not just for debugging purposes. Such code is not call-compatible +with code compiled with -mpacked-stack. Also, note that the +combination of -mbackchain, +-mpacked-stack and -mhard-float is not supported. In order +to build a linux kernel use -msoft-float. + +

The default is to not use the packed stack layout. + +

-msmall-exec
-mno-small-exec
Generate (or do not generate) code using the bras instruction +to do subroutine calls. +This only works reliably if the total executable size does not +exceed 64k. The default is to use the basr instruction instead, +which does not have this limitation. + +
-m64
-m31
When -m31 is specified, generate code compliant to the +GNU/Linux for S/390 ABI. When -m64 is specified, generate +code compliant to the GNU/Linux for zSeries ABI. This allows GCC in +particular to generate 64-bit instructions. For the s390 +targets, the default is -m31, while the s390x +targets default to -m64. + +
-mzarch
-mesa
When -mzarch is specified, generate code using the +instructions available on z/Architecture. +When -mesa is specified, generate code using the +instructions available on ESA/390. Note that -mesa is +not possible with -m64. +When generating code compliant to the GNU/Linux for S/390 ABI, +the default is -mesa. When generating code compliant +to the GNU/Linux for zSeries ABI, the default is -mzarch. + +
-mmvcle
-mno-mvcle
Generate (or do not generate) code using the mvcle instruction +to perform block moves. When -mno-mvcle is specified, +use a mvc loop instead. This is the default unless optimizing for +size. + +
-mdebug
-mno-debug
Print (or do not print) additional debug information when compiling. +The default is to not print debug information. + +
-march=cpu-type
Generate code that will run on cpu-type, which is the name of a system +representing a certain processor type. Possible values for +cpu-type are g5, g6, z900, and z990. +When generating code using the instructions available on z/Architecture, +the default is -march=z900. Otherwise, the default is +-march=g5. + +
-mtune=cpu-type
Tune to cpu-type everything applicable about the generated code, +except for the ABI and the set of available instructions. +The list of cpu-type values is the same as for -march. +The default is the value used for -march. + +
-mtpf-trace
-mno-tpf-trace
Generate code that adds (does not add) in TPF OS specific branches to trace +routines in the operating system. This option is off by default, even +when compiling for the TPF OS. + +
-mfused-madd
-mno-fused-madd
Generate code that uses (does not use) the floating point multiply and +accumulate instructions. These instructions are generated by default if +hardware floating point is used. + +
-mwarn-framesize=framesize
Emit a warning if the current function exceeds the given frame size. Because +this is a compile time check it doesn't need to be a real problem when the program +runs. It is intended to identify functions which most probably cause +a stack overflow. It is useful to be used in an environment with limited stack +size e.g. the linux kernel. + +
-mwarn-dynamicstack
Emit a warning if the function calls alloca or uses dynamically +sized arrays. This is generally a bad idea with a limited stack size. + +
-mstack-guard=stack-guard
-mstack-size=stack-size
If these options are provided the s390 back end emits additional instructions in +the function prologue which trigger a trap if the stack size is stack-guard +bytes above the stack-size (remember that the stack on s390 grows downward). +If the stack-guard option is omitted the smallest power of 2 larger than +the frame size of the compiled function is chosen. +These options are intended to be used to help debugging stack overflow problems. +The additionally emitted code causes only little overhead and hence can also be +used in production like systems without greater performance degradation. The given +values have to be exact powers of 2 and stack-size has to be greater than +stack-guard without exceeding 64k. +In order to be efficient the extra code makes the assumption that the stack starts +at an address aligned to the value given by stack-size. +The stack-guard option can only be used in conjunction with stack-size. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Score-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Score-Options.html new file mode 100644 index 0000000..57609f7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Score-Options.html @@ -0,0 +1,81 @@ + + +Score Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: S/390 and zSeries Options, +Up: Submodel Options +



+
+ +

3.17.29 Score Options

+ +

+These options are defined for Score implementations: + +

+
-meb
Compile code for big endian mode. This is the default. + +
-mel
Compile code for little endian mode. + +
-mnhwloop
Disable generate bcnz instruction. + +
-muls
Enable generate unaligned load and store instruction. + +
-mmac
Enable the use of multiply-accumulate instructions. Disabled by default. + +
-mscore5
Specify the SCORE5 as the target architecture. + +
-mscore5u
Specify the SCORE5U of the target architecture. + +
-mscore7
Specify the SCORE7 as the target architecture. This is the default. + +
-mscore7d
Specify the SCORE7D as the target architecture. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Service.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Service.html new file mode 100644 index 0000000..7ac2465 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Service.html @@ -0,0 +1,80 @@ + + +Service - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Bugs, +Up: Top +



+
+ +

12 How To Get Help with GCC

+ +

If you need help installing, using or changing GCC, there are two +ways to find it: + +

+ +

For further information, see +http://gcc.gnu.org/faq.html#support. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Simple-Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Simple-Constraints.html new file mode 100644 index 0000000..cb2f3cf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Simple-Constraints.html @@ -0,0 +1,189 @@ + + +Simple Constraints - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Up: Constraints +



+
+ +

5.38.1 Simple Constraints

+ +

+The simplest kind of constraint is a string full of letters, each of +which describes one kind of operand that is permitted. Here are +the letters that are allowed: + +

+
whitespace
Whitespace characters are ignored and can be inserted at any position +except the first. This enables each alternative for different operands to +be visually aligned in the machine description even if they have different +number of constraints and modifiers. + +


m
A memory operand is allowed, with any kind of address that the machine +supports in general. + +


o
A memory operand is allowed, but only if the address is +offsettable. This means that adding a small integer (actually, +the width in bytes of the operand, as determined by its machine mode) +may be added to the address and the result is also a valid memory +address. + +

For example, an address which is constant is offsettable; so is an +address that is the sum of a register and a constant (as long as a +slightly larger constant is also within the range of address-offsets +supported by the machine); but an autoincrement or autodecrement +address is not offsettable. More complicated indirect/indexed +addresses may or may not be offsettable depending on the other +addressing modes that the machine supports. + +

Note that in an output operand which can be matched by another +operand, the constraint letter o is valid only when accompanied +by both < (if the target machine has predecrement addressing) +and > (if the target machine has preincrement addressing). + +


V
A memory operand that is not offsettable. In other words, anything that +would fit the m constraint but not the o constraint. + +


<
A memory operand with autodecrement addressing (either predecrement or +postdecrement) is allowed. + +


>
A memory operand with autoincrement addressing (either preincrement or +postincrement) is allowed. + +


r
A register operand is allowed provided that it is in a general +register. + +


i
An immediate integer operand (one with constant value) is allowed. +This includes symbolic constants whose values will be known only at +assembly time or later. + +


n
An immediate integer operand with a known numeric value is allowed. +Many systems cannot support assembly-time constants for operands less +than a word wide. Constraints for these operands should use n +rather than i. + +


I, J, K, ... P
Other letters in the range I through P may be defined in +a machine-dependent fashion to permit immediate integer operands with +explicit integer values in specified ranges. For example, on the +68000, I is defined to stand for the range of values 1 to 8. +This is the range permitted as a shift count in the shift +instructions. + +


E
An immediate floating operand (expression code const_double) is +allowed, but only if the target floating point format is the same as +that of the host machine (on which the compiler is running). + +


F
An immediate floating operand (expression code const_double or +const_vector) is allowed. + +


G, H
G and H may be defined in a machine-dependent fashion to +permit immediate floating operands in particular ranges of values. + +


s
An immediate integer operand whose value is not an explicit integer is +allowed. + +

This might appear strange; if an insn allows a constant operand with a +value not known at compile time, it certainly must allow any known +value. So why use s instead of i? Sometimes it allows +better code to be generated. + +

For example, on the 68000 in a fullword instruction it is possible to +use an immediate operand; but if the immediate value is between −128 +and 127, better code results from loading the value into a register and +using the register. This is because the load into the register can be +done with a moveq instruction. We arrange for this to happen +by defining the letter K to mean “any integer outside the +range −128 to 127”, and then specifying Ks in the operand +constraints. + +


g
Any register, memory or immediate integer operand is allowed, except for +registers that are not general registers. + +


X
Any operand whatsoever is allowed. + +


0, 1, 2, ... 9
An operand that matches the specified operand number is allowed. If a +digit is used together with letters within the same alternative, the +digit should come last. + +

This number is allowed to be more than a single digit. If multiple +digits are encountered consecutively, they are interpreted as a single +decimal integer. There is scant chance for ambiguity, since to-date +it has never been desirable that 10 be interpreted as matching +either operand 1 or operand 0. Should this be desired, one +can use multiple alternatives instead. + +

This is called a matching constraint and what it really means is +that the assembler has only a single operand that fills two roles +which asm distinguishes. For example, an add instruction uses +two input operands and an output operand, but on most CISC +machines an add instruction really has only two operands, one of them an +input-output operand: + +

          addl #35,r12
+     
+

Matching constraints are used in these circumstances. +More precisely, the two operands that match must include one input-only +operand and one output-only operand. Moreover, the digit must be a +smaller number than the number of the operand that uses it in the +constraint. + +


p
An operand that is a valid memory address is allowed. This is +for “load address” and “push address” instructions. + +

p in the constraint must be accompanied by address_operand +as the predicate in the match_operand. This predicate interprets +the mode specified in the match_operand as the mode of the memory +reference for which the address would be valid. + +


other-letters
Other letters can be defined in machine-dependent fashion to stand for +particular classes of registers or other arbitrary operand types. +d, a and f are defined on the 68000/68020 to stand +for data, address and floating point registers. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Solaris-Format-Checks.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Solaris-Format-Checks.html new file mode 100644 index 0000000..5fbc725 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Solaris-Format-Checks.html @@ -0,0 +1,59 @@ + + +Solaris Format Checks - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

5.51.1 Solaris Format Checks

+ +

Solaris targets support the cmn_err (or __cmn_err__) format +check. cmn_err accepts a subset of the standard printf +conversions, and the two-argument %b conversion for displaying +bit-fields. See the Solaris man page for cmn_err for more information. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Solaris-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Solaris-Pragmas.html new file mode 100644 index 0000000..cc20fe6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Solaris-Pragmas.html @@ -0,0 +1,82 @@ + + +Solaris Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Darwin Pragmas, +Up: Pragmas +



+
+ +

5.52.5 Solaris Pragmas

+ +

The Solaris target supports #pragma redefine_extname +(see Symbol-Renaming Pragmas). It also supports additional +#pragma directives for compatibility with the system compiler. + +

+
align alignment (variable [, variable]...)
+Increase the minimum alignment of each variable to alignment. +This is the same as GCC's aligned attribute see Variable Attributes). Macro expansion occurs on the arguments to this pragma +when compiling C and Objective-C. It does not currently occur when +compiling C++, but this is a bug which may be fixed in a future +release. + +
fini (function [, function]...)
+This pragma causes each listed function to be called after +main, or during shared module unloading, by adding a call to the +.fini section. + +
init (function [, function]...)
+This pragma causes each listed function to be called during +initialization (before main) or during shared module loading, by +adding a call to the .init section. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Spec-Files.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Spec-Files.html new file mode 100644 index 0000000..3f315a8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Spec-Files.html @@ -0,0 +1,493 @@ + + +Spec Files - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Directory Options, +Up: Invoking GCC +



+
+ +

3.15 Specifying subprocesses and the switches to pass to them

+ +

+gcc is a driver program. It performs its job by invoking a +sequence of other programs to do the work of compiling, assembling and +linking. GCC interprets its command-line parameters and uses these to +deduce which programs it should invoke, and which command-line options +it ought to place on their command lines. This behavior is controlled +by spec strings. In most cases there is one spec string for each +program that GCC can invoke, but a few programs have multiple spec +strings to control their behavior. The spec strings built into GCC can +be overridden by using the -specs= command-line switch to specify +a spec file. + +

Spec files are plaintext files that are used to construct spec +strings. They consist of a sequence of directives separated by blank +lines. The type of directive is determined by the first non-whitespace +character on the line and it can be one of the following: + +

+
%command
Issues a command to the spec file processor. The commands that can +appear here are: + +
+
%include <file>
Search for file and insert its text at the current point in the +specs file. + +
%include_noerr <file>
Just like %include, but do not generate an error message if the include +file cannot be found. + +
%rename old_name new_name
Rename the spec string old_name to new_name. + +
+ +
*[spec_name]:
This tells the compiler to create, override or delete the named spec +string. All lines after this directive up to the next directive or +blank line are considered to be the text for the spec string. If this +results in an empty string then the spec will be deleted. (Or, if the +spec did not exist, then nothing will happened.) Otherwise, if the spec +does not currently exist a new spec will be created. If the spec does +exist then its contents will be overridden by the text of this +directive, unless the first character of that text is the + +character, in which case the text will be appended to the spec. + +
[suffix]:
Creates a new [suffix] spec pair. All lines after this directive +and up to the next directive or blank line are considered to make up the +spec string for the indicated suffix. When the compiler encounters an +input file with the named suffix, it will processes the spec string in +order to work out how to compile that file. For example: + +
          .ZZ:
+          z-compile -input %i
+     
+

This says that any input file whose name ends in .ZZ should be +passed to the program z-compile, which should be invoked with the +command-line switch -input and with the result of performing the +%i substitution. (See below.) + +

As an alternative to providing a spec string, the text that follows a +suffix directive can be one of the following: + +

+
@language
This says that the suffix is an alias for a known language. This is +similar to using the -x command-line switch to GCC to specify a +language explicitly. For example: + +
               .ZZ:
+               @c++
+          
+

Says that .ZZ files are, in fact, C++ source files. + +

#name
This causes an error messages saying: + +
               name compiler not installed on this system.
+          
+
+ +

GCC already has an extensive list of suffixes built into it. +This directive will add an entry to the end of the list of suffixes, but +since the list is searched from the end backwards, it is effectively +possible to override earlier entries using this technique. + +

+ +

GCC has the following spec strings built into it. Spec files can +override these strings or create their own. Note that individual +targets can also add their own spec strings to this list. + +

     asm          Options to pass to the assembler
+     asm_final    Options to pass to the assembler post-processor
+     cpp          Options to pass to the C preprocessor
+     cc1          Options to pass to the C compiler
+     cc1plus      Options to pass to the C++ compiler
+     endfile      Object files to include at the end of the link
+     link         Options to pass to the linker
+     lib          Libraries to include on the command line to the linker
+     libgcc       Decides which GCC support library to pass to the linker
+     linker       Sets the name of the linker
+     predefines   Defines to be passed to the C preprocessor
+     signed_char  Defines to pass to CPP to say whether char is signed
+                  by default
+     startfile    Object files to include at the start of the link
+
+

Here is a small example of a spec file: + +

     %rename lib                 old_lib
+     
+     *lib:
+     --start-group -lgcc -lc -leval1 --end-group %(old_lib)
+
+

This example renames the spec called lib to old_lib and +then overrides the previous definition of lib with a new one. +The new definition adds in some extra command-line options before +including the text of the old definition. + +

Spec strings are a list of command-line options to be passed to their +corresponding program. In addition, the spec strings can contain +%-prefixed sequences to substitute variable text or to +conditionally insert text into the command line. Using these constructs +it is possible to generate quite complex command lines. + +

Here is a table of all defined %-sequences for spec +strings. Note that spaces are not generated automatically around the +results of expanding these sequences. Therefore you can concatenate them +together or combine them with constant text in a single argument. + +

+
%%
Substitute one % into the program name or argument. + +
%i
Substitute the name of the input file being processed. + +
%b
Substitute the basename of the input file being processed. +This is the substring up to (and not including) the last period +and not including the directory. + +
%B
This is the same as %b, but include the file suffix (text after +the last period). + +
%d
Marks the argument containing or following the %d as a +temporary file name, so that that file will be deleted if GCC exits +successfully. Unlike %g, this contributes no text to the +argument. + +
%gsuffix
Substitute a file name that has suffix suffix and is chosen +once per compilation, and mark the argument in the same way as +%d. To reduce exposure to denial-of-service attacks, the file +name is now chosen in a way that is hard to predict even when previously +chosen file names are known. For example, %g.s ... %g.o ... %g.s +might turn into ccUVUUAU.s ccXYAXZ12.o ccUVUUAU.s. suffix matches +the regexp [.A-Za-z]* or the special string %O, which is +treated exactly as if %O had been preprocessed. Previously, %g +was simply substituted with a file name chosen once per compilation, +without regard to any appended suffix (which was therefore treated +just like ordinary text), making such attacks more likely to succeed. + +
%usuffix
Like %g, but generates a new temporary file name even if +%usuffix was already seen. + +
%Usuffix
Substitutes the last file name generated with %usuffix, generating a +new one if there is no such last file name. In the absence of any +%usuffix, this is just like %gsuffix, except they don't share +the same suffix space, so %g.s ... %U.s ... %g.s ... %U.s +would involve the generation of two distinct file names, one +for each %g.s and another for each %U.s. Previously, %U was +simply substituted with a file name chosen for the previous %u, +without regard to any appended suffix. + +
%jsuffix
Substitutes the name of the HOST_BIT_BUCKET, if any, and if it is +writable, and if save-temps is off; otherwise, substitute the name +of a temporary file, just like %u. This temporary file is not +meant for communication between processes, but rather as a junk +disposal mechanism. + +
%|suffix
%msuffix
Like %g, except if -pipe is in effect. In that case +%| substitutes a single dash and %m substitutes nothing at +all. These are the two most common ways to instruct a program that it +should read from standard input or write to standard output. If you +need something more elaborate you can use an %{pipe:X} +construct: see for example f/lang-specs.h. + +
%.SUFFIX
Substitutes .SUFFIX for the suffixes of a matched switch's args +when it is subsequently output with %*. SUFFIX is +terminated by the next space or %. + +
%w
Marks the argument containing or following the %w as the +designated output file of this compilation. This puts the argument +into the sequence of arguments that %o will substitute later. + +
%o
Substitutes the names of all the output files, with spaces +automatically placed around them. You should write spaces +around the %o as well or the results are undefined. +%o is for use in the specs for running the linker. +Input files whose names have no recognized suffix are not compiled +at all, but they are included among the output files, so they will +be linked. + +
%O
Substitutes the suffix for object files. Note that this is +handled specially when it immediately follows %g, %u, or %U, +because of the need for those to form complete file names. The +handling is such that %O is treated exactly as if it had already +been substituted, except that %g, %u, and %U do not currently +support additional suffix characters following %O as they would +following, for example, .o. + +
%p
Substitutes the standard macro predefinitions for the +current target machine. Use this when running cpp. + +
%P
Like %p, but puts __ before and after the name of each +predefined macro, except for macros that start with __ or with +_L, where L is an uppercase letter. This is for ISO +C. + +
%I
Substitute any of -iprefix (made from GCC_EXEC_PREFIX), +-isysroot (made from TARGET_SYSTEM_ROOT), +-isystem (made from COMPILER_PATH and -B options) +and -imultilib as necessary. + +
%s
Current argument is the name of a library or startup file of some sort. +Search for that file in a standard list of directories and substitute +the full name found. + +
%estr
Print str as an error message. str is terminated by a newline. +Use this when inconsistent options are detected. + +
%(name)
Substitute the contents of spec string name at this point. + +
%[name]
Like %(...) but put __ around -D arguments. + +
%x{option}
Accumulate an option for %X. + +
%X
Output the accumulated linker options specified by -Wl or a %x +spec string. + +
%Y
Output the accumulated assembler options specified by -Wa. + +
%Z
Output the accumulated preprocessor options specified by -Wp. + +
%a
Process the asm spec. This is used to compute the +switches to be passed to the assembler. + +
%A
Process the asm_final spec. This is a spec string for +passing switches to an assembler post-processor, if such a program is +needed. + +
%l
Process the link spec. This is the spec for computing the +command line passed to the linker. Typically it will make use of the +%L %G %S %D and %E sequences. + +
%D
Dump out a -L option for each directory that GCC believes might +contain startup files. If the target supports multilibs then the +current multilib directory will be prepended to each of these paths. + +
%L
Process the lib spec. This is a spec string for deciding which +libraries should be included on the command line to the linker. + +
%G
Process the libgcc spec. This is a spec string for deciding +which GCC support library should be included on the command line to the linker. + +
%S
Process the startfile spec. This is a spec for deciding which +object files should be the first ones passed to the linker. Typically +this might be a file named crt0.o. + +
%E
Process the endfile spec. This is a spec string that specifies +the last object files that will be passed to the linker. + +
%C
Process the cpp spec. This is used to construct the arguments +to be passed to the C preprocessor. + +
%1
Process the cc1 spec. This is used to construct the options to be +passed to the actual C compiler (cc1). + +
%2
Process the cc1plus spec. This is used to construct the options to be +passed to the actual C++ compiler (cc1plus). + +
%*
Substitute the variable part of a matched option. See below. +Note that each comma in the substituted string is replaced by +a single space. + +
%<S
Remove all occurrences of -S from the command line. Note—this +command is position dependent. % commands in the spec string +before this one will see -S, % commands in the spec string +after this one will not. + +
%:function(args)
Call the named function function, passing it args. +args is first processed as a nested spec string, then split +into an argument vector in the usual fashion. The function returns +a string which is processed as if it had appeared literally as part +of the current spec. + +

The following built-in spec functions are provided: + +

+
getenv
The getenv spec function takes two arguments: an environment +variable name and a string. If the environment variable is not +defined, a fatal error is issued. Otherwise, the return value is the +value of the environment variable concatenated with the string. For +example, if TOPDIR is defined as /path/to/top, then: + +
               %:getenv(TOPDIR /include)
+          
+

expands to /path/to/top/include. + +

if-exists
The if-exists spec function takes one argument, an absolute +pathname to a file. If the file exists, if-exists returns the +pathname. Here is a small example of its usage: + +
               *startfile:
+               crt0%O%s %:if-exists(crti%O%s) crtbegin%O%s
+          
+
if-exists-else
The if-exists-else spec function is similar to the if-exists +spec function, except that it takes two arguments. The first argument is +an absolute pathname to a file. If the file exists, if-exists-else +returns the pathname. If it does not exist, it returns the second argument. +This way, if-exists-else can be used to select one file or another, +based on the existence of the first. Here is a small example of its usage: + +
               *startfile:
+               crt0%O%s %:if-exists(crti%O%s) \
+               %:if-exists-else(crtbeginT%O%s crtbegin%O%s)
+          
+
replace-outfile
The replace-outfile spec function takes two arguments. It looks for the +first argument in the outfiles array and replaces it with the second argument. Here +is a small example of its usage: + +
               %{fgnu-runtime:%:replace-outfile(-lobjc -lobjc-gnu)}
+          
+
print-asm-header
The print-asm-header function takes no arguments and simply +prints a banner like: + +
               Assembler options
+               =================
+               
+               Use "-Wa,OPTION" to pass "OPTION" to the assembler.
+          
+

It is used to separate compiler options from assembler options +in the --target-help output. +

+ +
%{S}
Substitutes the -S switch, if that switch was given to GCC. +If that switch was not specified, this substitutes nothing. Note that +the leading dash is omitted when specifying this option, and it is +automatically inserted if the substitution is performed. Thus the spec +string %{foo} would match the command-line option -foo +and would output the command line option -foo. + +
%W{S}
Like %{S} but mark last argument supplied within as a file to be +deleted on failure. + +
%{S*}
Substitutes all the switches specified to GCC whose names start +with -S, but which also take an argument. This is used for +switches like -o, -D, -I, etc. +GCC considers -o foo as being +one switch whose names starts with o. %{o*} would substitute this +text, including the space. Thus two arguments would be generated. + +
%{S*&T*}
Like %{S*}, but preserve order of S and T options +(the order of S and T in the spec is not significant). +There can be any number of ampersand-separated variables; for each the +wild card is optional. Useful for CPP as %{D*&U*&A*}. + +
%{S:X}
Substitutes X, if the -S switch was given to GCC. + +
%{!S:X}
Substitutes X, if the -S switch was not given to GCC. + +
%{S*:X}
Substitutes X if one or more switches whose names start with +-S are specified to GCC. Normally X is substituted only +once, no matter how many such switches appeared. However, if %* +appears somewhere in X, then X will be substituted once +for each matching switch, with the %* replaced by the part of +that switch that matched the *. + +
%{.S:X}
Substitutes X, if processing a file with suffix S. + +
%{!.S:X}
Substitutes X, if not processing a file with suffix S. + +
%{,S:X}
Substitutes X, if processing a file for language S. + +
%{!,S:X}
Substitutes X, if not processing a file for language S. + +
%{S|P:X}
Substitutes X if either -S or -P was given to +GCC. This may be combined with !, ., ,, and +* sequences as well, although they have a stronger binding than +the |. If %* appears in X, all of the +alternatives must be starred, and only the first matching alternative +is substituted. + +

For example, a spec string like this: + +

          %{.c:-foo} %{!.c:-bar} %{.c|d:-baz} %{!.c|d:-boggle}
+     
+

will output the following command-line options from the following input +command-line options: + +

          fred.c        -foo -baz
+          jim.d         -bar -boggle
+          -d fred.c     -foo -baz -boggle
+          -d jim.d      -bar -baz -boggle
+     
+
%{S:X; T:Y; :D}
+If S was given to GCC, substitutes X; else if T was +given to GCC, substitutes Y; else substitutes D. There can +be as many clauses as you need. This may be combined with ., +,, !, |, and * as needed. + +
+ +

The conditional text X in a %{S:X} or similar +construct may contain other nested % constructs or spaces, or +even newlines. They are processed as usual, as described above. +Trailing white space in X is ignored. White space may also +appear anywhere on the left side of the colon in these constructs, +except between . or * and the corresponding word. + +

The -O, -f, -m, and -W switches are +handled specifically in these constructs. If another value of +-O or the negated form of a -f, -m, or +-W switch is found later in the command line, the earlier +switch value is ignored, except with {S*} where S is +just one letter, which passes all matching options. + +

The character | at the beginning of the predicate text is used to +indicate that a command should be piped to the following command, but +only if -pipe is specified. + +

It is built into GCC which switches take arguments and which do not. +(You might think it would be useful to generalize this to allow each +compiler's spec to say which switches take arguments. But this cannot +be done in a consistent fashion. GCC cannot even decide which input +files have been specified without knowing which switches take arguments, +and it must know which input files to compile in order to tell which +compilers to run). + +

GCC also knows implicitly that arguments starting in -l are to be +treated as compiler output files, and passed to the linker in their +proper position among the other output files. + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Standard-Libraries.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Standard-Libraries.html new file mode 100644 index 0000000..68bd240 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Standard-Libraries.html @@ -0,0 +1,80 @@ + + +Standard Libraries - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Fixed Headers, +Up: Trouble +



+
+ +

10.6 Standard Libraries

+ +

GCC by itself attempts to be a conforming freestanding implementation. +See Language Standards Supported by GCC, for details of +what this means. Beyond the library facilities required of such an +implementation, the rest of the C library is supplied by the vendor of +the operating system. If that C library doesn't conform to the C +standards, then your programs might get warnings (especially when using +-Wall) that you don't expect. + +

For example, the sprintf function on SunOS 4.1.3 returns +char * while the C standard says that sprintf returns an +int. The fixincludes program could make the prototype for +this function match the Standard, but that would be wrong, since the +function will still return char *. + +

If you need a Standard compliant library, then you need to find one, as +GCC does not provide one. The GNU C library (called glibc) +provides ISO C, POSIX, BSD, SystemV and X/Open compatibility for +GNU/Linux and HURD-based GNU systems; no recent version of it supports +other systems, though some very old versions did. Version 2.2 of the +GNU C library includes nearly complete C99 support. You could also ask +your operating system vendor if newer libraries are available. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Standards.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Standards.html new file mode 100644 index 0000000..4fd21e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Standards.html @@ -0,0 +1,246 @@ + + +Standards - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Previous: G++ and GCC, +Up: Top +



+
+ +

2 Language Standards Supported by GCC

+ +

For each language compiled by GCC for which there is a standard, GCC +attempts to follow one or more versions of that standard, possibly +with some exceptions, and possibly with some extensions. + +

2.1 C language

+ +

+GCC supports three versions of the C standard, although support for +the most recent version is not yet complete. + +

The original ANSI C standard (X3.159-1989) was ratified in 1989 and +published in 1990. This standard was ratified as an ISO standard +(ISO/IEC 9899:1990) later in 1990. There were no technical +differences between these publications, although the sections of the +ANSI standard were renumbered and became clauses in the ISO standard. +This standard, in both its forms, is commonly known as C89, or +occasionally as C90, from the dates of ratification. The ANSI +standard, but not the ISO standard, also came with a Rationale +document. To select this standard in GCC, use one of the options +-ansi, -std=c89 or -std=iso9899:1990; to obtain +all the diagnostics required by the standard, you should also specify +-pedantic (or -pedantic-errors if you want them to be +errors rather than warnings). See Options Controlling C Dialect. + +

Errors in the 1990 ISO C standard were corrected in two Technical +Corrigenda published in 1994 and 1996. GCC does not support the +uncorrected version. + +

An amendment to the 1990 standard was published in 1995. This +amendment added digraphs and __STDC_VERSION__ to the language, +but otherwise concerned the library. This amendment is commonly known +as AMD1; the amended standard is sometimes known as C94 or +C95. To select this standard in GCC, use the option +-std=iso9899:199409 (with, as for other standard versions, +-pedantic to receive all required diagnostics). + +

A new edition of the ISO C standard was published in 1999 as ISO/IEC +9899:1999, and is commonly known as C99. GCC has incomplete +support for this standard version; see +http://gcc.gnu.org/gcc-4.3/c99status.html for details. To select this +standard, use -std=c99 or -std=iso9899:1999. (While in +development, drafts of this standard version were referred to as +C9X.) + +

Errors in the 1999 ISO C standard were corrected in three Technical +Corrigenda published in 2001, 2004 and 2007. GCC does not support the +uncorrected version. + +

By default, GCC provides some extensions to the C language that on +rare occasions conflict with the C standard. See Extensions to the C Language Family. Use of the +-std options listed above will disable these extensions where +they conflict with the C standard version selected. You may also +select an extended version of the C language explicitly with +-std=gnu89 (for C89 with GNU extensions) or -std=gnu99 +(for C99 with GNU extensions). The default, if no C language dialect +options are given, is -std=gnu89; this will change to +-std=gnu99 in some future release when the C99 support is +complete. Some features that are part of the C99 standard are +accepted as extensions in C89 mode. + +

The ISO C standard defines (in clause 4) two classes of conforming +implementation. A conforming hosted implementation supports the +whole standard including all the library facilities; a conforming +freestanding implementation is only required to provide certain +library facilities: those in <float.h>, <limits.h>, +<stdarg.h>, and <stddef.h>; since AMD1, also those in +<iso646.h>; and in C99, also those in <stdbool.h> and +<stdint.h>. In addition, complex types, added in C99, are not +required for freestanding implementations. The standard also defines +two environments for programs, a freestanding environment, +required of all implementations and which may not have library +facilities beyond those required of freestanding implementations, +where the handling of program startup and termination are +implementation-defined, and a hosted environment, which is not +required, in which all the library facilities are provided and startup +is through a function int main (void) or int main (int, +char *[]). An OS kernel would be a freestanding environment; a +program using the facilities of an operating system would normally be +in a hosted implementation. + +

GCC aims towards being usable as a conforming freestanding +implementation, or as the compiler for a conforming hosted +implementation. By default, it will act as the compiler for a hosted +implementation, defining __STDC_HOSTED__ as 1 and +presuming that when the names of ISO C functions are used, they have +the semantics defined in the standard. To make it act as a conforming +freestanding implementation for a freestanding environment, use the +option -ffreestanding; it will then define +__STDC_HOSTED__ to 0 and not make assumptions about the +meanings of function names from the standard library, with exceptions +noted below. To build an OS kernel, you may well still need to make +your own arrangements for linking and startup. +See Options Controlling C Dialect. + +

GCC does not provide the library facilities required only of hosted +implementations, nor yet all the facilities required by C99 of +freestanding implementations; to use the facilities of a hosted +environment, you will need to find them elsewhere (for example, in the +GNU C library). See Standard Libraries. + +

Most of the compiler support routines used by GCC are present in +libgcc, but there are a few exceptions. GCC requires the +freestanding environment provide memcpy, memmove, +memset and memcmp. +Finally, if __builtin_trap is used, and the target does +not implement the trap pattern, then GCC will emit a call +to abort. + +

For references to Technical Corrigenda, Rationale documents and +information concerning the history of C that is available online, see +http://gcc.gnu.org/readings.html + +

2.2 C++ language

+ +

GCC supports the ISO C++ standard (1998) and contains experimental +support for the upcoming ISO C++ standard (200x). + +

The original ISO C++ standard was published as the ISO standard (ISO/IEC +14882:1998) and amended by a Technical Corrigenda published in 2003 +(ISO/IEC 14882:2003). These standards are referred to as C++98 and +C++03, respectively. GCC implements the majority of C++98 (export +is a notable exception) and most of the changes in C++03. To select +this standard in GCC, use one of the options -ansi or +-std=c++98; to obtain all the diagnostics required by the +standard, you should also specify -pedantic (or +-pedantic-errors if you want them to be errors rather than +warnings). + +

The ISO C++ committee is working on a new ISO C++ standard, dubbed +C++0x, that is intended to be published by 2009. C++0x contains several +changes to the C++ language, some of which have been implemented in an +experimental C++0x mode in GCC. The C++0x mode in GCC tracks the draft +working paper for the C++0x standard; the latest working paper is +available on the ISO C++ committee's web site at +http://www.open-std.org/jtc1/sc22/wg21/. For information +regarding the C++0x features available in the experimental C++0x mode, +see http://gcc.gnu.org/gcc-4.3/cxx0x_status.html. To select this +standard in GCC, use the option -std=c++0x; to obtain all the +diagnostics required by the standard, you should also specify +-pedantic (or -pedantic-errors if you want them to be +errors rather than warnings). + +

By default, GCC provides some extensions to the C++ language; See Options Controlling C++ Dialect. Use of the +-std option listed above will disable these extensions. You +may also select an extended version of the C++ language explicitly with +-std=gnu++98 (for C++98 with GNU extensions) or +-std=gnu++0x (for C++0x with GNU extensions). The default, if +no C++ language dialect options are given, is -std=gnu++98. + +

2.3 Objective-C and Objective-C++ languages

+ +

+There is no formal written standard for Objective-C or Objective-C++. The most +authoritative manual is “Object-Oriented Programming and the +Objective-C Language”, available at a number of web sites: + +

+ +

2.4 Treelang language

+ +

There is no standard for treelang, which is a sample language front end +for GCC. Its only purpose is as a sample for people wishing to write a +new language for GCC. The language is documented in +gcc/treelang/treelang.texi which can be turned into info or +HTML format. + +

See GNAT Reference Manual (GNAT Reference Manual), for information on standard +conformance and compatibility of the Ada compiler. + +

See Standards (The GNU Fortran Compiler), for details +of standards supported by GNU Fortran. + +

See Compatibility with the Java Platform (GNU gcj), +for details of compatibility between gcj and the Java Platform. + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Statement-Exprs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Statement-Exprs.html new file mode 100644 index 0000000..8035ef3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Statement-Exprs.html @@ -0,0 +1,164 @@ + + +Statement Exprs - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Next: , +Up: C Extensions +



+
+ +

5.1 Statements and Declarations in Expressions

+ +

+ + +A compound statement enclosed in parentheses may appear as an expression +in GNU C. This allows you to use loops, switches, and local variables +within an expression. + +

Recall that a compound statement is a sequence of statements surrounded +by braces; in this construct, parentheses go around the braces. For +example: + +

     ({ int y = foo (); int z;
+        if (y > 0) z = y;
+        else z = - y;
+        z; })
+
+

is a valid (though slightly more complex than necessary) expression +for the absolute value of foo (). + +

The last thing in the compound statement should be an expression +followed by a semicolon; the value of this subexpression serves as the +value of the entire construct. (If you use some other kind of statement +last within the braces, the construct has type void, and thus +effectively no value.) + +

This feature is especially useful in making macro definitions “safe” (so +that they evaluate each operand exactly once). For example, the +“maximum” function is commonly defined as a macro in standard C as +follows: + +

     #define max(a,b) ((a) > (b) ? (a) : (b))
+
+

But this definition computes either a or b twice, with bad +results if the operand has side effects. In GNU C, if you know the +type of the operands (here taken as int), you can define +the macro safely as follows: + +

     #define maxint(a,b) \
+       ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
+
+

Embedded statements are not allowed in constant expressions, such as +the value of an enumeration constant, the width of a bit-field, or +the initial value of a static variable. + +

If you don't know the type of the operand, you can still do this, but you +must use typeof (see Typeof). + +

In G++, the result value of a statement expression undergoes array and +function pointer decay, and is returned by value to the enclosing +expression. For instance, if A is a class, then + +

             A a;
+     
+             ({a;}).Foo ()
+
+

will construct a temporary A object to hold the result of the +statement expression, and that will be used to invoke Foo. +Therefore the this pointer observed by Foo will not be the +address of a. + +

Any temporaries created within a statement within a statement expression +will be destroyed at the statement's end. This makes statement +expressions inside macros slightly different from function calls. In +the latter case temporaries introduced during argument evaluation will +be destroyed at the end of the statement that includes the function +call. In the statement expression case they will be destroyed during +the statement expression. For instance, + +

     #define macro(a)  ({__typeof__(a) b = (a); b + 3; })
+     template<typename T> T function(T a) { T b = a; return b + 3; }
+     
+     void foo ()
+     {
+       macro (X ());
+       function (X ());
+     }
+
+

will have different places where temporaries are destroyed. For the +macro case, the temporary X will be destroyed just after +the initialization of b. In the function case that +temporary will be destroyed when the function returns. + +

These considerations mean that it is probably a bad idea to use +statement-expressions of this form in header files that are designed to +work with C++. (Note that some versions of the GNU C Library contained +header files using statement-expression that lead to precisely this +bug.) + +

Jumping into a statement expression with goto or using a +switch statement outside the statement expression with a +case or default label inside the statement expression is +not permitted. Jumping into a statement expression with a computed +goto (see Labels as Values) yields undefined behavior. +Jumping out of a statement expression is permitted, but if the +statement expression is part of a larger expression then it is +unspecified which other subexpressions of that expression have been +evaluated except where the language definition requires certain +subexpressions to be evaluated before or after the statement +expression. In any case, as with a function call the evaluation of a +statement expression is not interleaved with the evaluation of other +parts of the containing expression. For example, + +

       foo (), (({ bar1 (); goto a; 0; }) + bar2 ()), baz();
+
+

will call foo and bar1 and will not call baz but +may or may not call bar2. If bar2 is called, it will be +called after foo and before bar1 + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Statements-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Statements-implementation.html new file mode 100644 index 0000000..2cc14bd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Statements-implementation.html @@ -0,0 +1,66 @@ + + +Statements implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

4.12 Statements

+ +
    +
  • The maximum number of case values in a switch +statement (C90 6.6.4.2). + +

    GCC is only limited by available memory. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Static-Definitions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Static-Definitions.html new file mode 100644 index 0000000..99ef42c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Static-Definitions.html @@ -0,0 +1,81 @@ + + +Static Definitions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Up: C++ Misunderstandings +



+
+ +

10.8.1 Declare and Define Static Members

+ +

When a class has static data members, it is not enough to declare +the static member; you must also define it. For example: + +

     class Foo
+     {
+       ...
+       void method();
+       static int bar;
+     };
+
+

This declaration only establishes that the class Foo has an +int named Foo::bar, and a member function named +Foo::method. But you still need to define both +method and bar elsewhere. According to the ISO +standard, you must supply an initializer in one (and only one) source +file, such as: + +

     int Foo::bar = 0;
+
+

Other C++ compilers may not correctly implement the standard behavior. +As a result, when you switch to g++ from one of these compilers, +you may discover that a program that appeared to work correctly in fact +does not conform to the standard: g++ reports as undefined +symbols any static data members that lack definitions. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Structure_002dPacking-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Structure_002dPacking-Pragmas.html new file mode 100644 index 0000000..d51bcc2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Structure_002dPacking-Pragmas.html @@ -0,0 +1,90 @@ + + +Structure-Packing Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Symbol-Renaming Pragmas, +Up: Pragmas +



+
+ +

5.52.7 Structure-Packing Pragmas

+ +

For compatibility with Win32, GCC supports a set of #pragma +directives which change the maximum alignment of members of structures +(other than zero-width bitfields), unions, and classes subsequently +defined. The n value below always is required to be a small power +of two and specifies the new alignment in bytes. + +

    +
  1. #pragma pack(n) simply sets the new alignment. +
  2. #pragma pack() sets the alignment to the one that was in +effect when compilation started (see also command line option +-fpack-struct[=<n>] see Code Gen Options). +
  3. #pragma pack(push[,n]) pushes the current alignment +setting on an internal stack and then optionally sets the new alignment. +
  4. #pragma pack(pop) restores the alignment setting to the one +saved at the top of the internal stack (and removes that stack entry). +Note that #pragma pack([n]) does not influence this internal +stack; thus it is possible to have #pragma pack(push) followed by +multiple #pragma pack(n) instances and finalized by a single +#pragma pack(pop). +
+ +

Some targets, e.g. i386 and powerpc, support the ms_struct +#pragma which lays out a structure as the documented +__attribute__ ((ms_struct)). +

    +
  1. #pragma ms_struct on turns on the layout for structures +declared. +
  2. #pragma ms_struct off turns off the layout for structures +declared. +
  3. #pragma ms_struct reset goes back to the default layout. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Structures-unions-enumerations-and-bit_002dfields-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Structures-unions-enumerations-and-bit_002dfields-implementation.html new file mode 100644 index 0000000..ebb1605 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Structures-unions-enumerations-and-bit_002dfields-implementation.html @@ -0,0 +1,117 @@ + + +Structures unions enumerations and bit-fields implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

4.9 Structures, unions, enumerations, and bit-fields

+ +
    +
  • A member of a union object is accessed using a member of a +different type (C90 6.3.2.3). + +

    The relevant bytes of the representation of the object are treated as +an object of the type used for the access. See Type-punning. This +may be a trap representation. + +

  • Whether a “plain” int bit-field is treated as a +signed int bit-field or as an unsigned int bit-field +(C90 6.5.2, C90 6.5.2.1, C99 6.7.2, C99 6.7.2.1). + +

    By default it is treated as signed int but this may be changed +by the -funsigned-bitfields option. + +

  • Allowable bit-field types other than _Bool, signed int, +and unsigned int (C99 6.7.2.1). + +

    No other types are permitted in strictly conforming mode. + + + +

  • Whether a bit-field can straddle a storage-unit boundary (C90 +6.5.2.1, C99 6.7.2.1). + +

    Determined by ABI. + +

  • The order of allocation of bit-fields within a unit (C90 +6.5.2.1, C99 6.7.2.1). + +

    Determined by ABI. + +

  • The alignment of non-bit-field members of structures (C90 +6.5.2.1, C99 6.7.2.1). + +

    Determined by ABI. + +

  • The integer type compatible with each enumerated type (C90 +6.5.2.2, C99 6.7.2.2). + +

    Normally, the type is unsigned int if there are no negative +values in the enumeration, otherwise int. If +-fshort-enums is specified, then if there are negative values +it is the first of signed char, short and int +that can represent all the values, otherwise it is the first of +unsigned char, unsigned short and unsigned int +that can represent all the values. + + + + + + + +

    On some targets, -fshort-enums is the default; this is +determined by the ABI. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Submodel-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Submodel-Options.html new file mode 100644 index 0000000..33b709f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Submodel-Options.html @@ -0,0 +1,120 @@ + + +Submodel Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Target Options, +Up: Invoking GCC +



+
+ +

3.17 Hardware Models and Configurations

+ +

+Earlier we discussed the standard option -b which chooses among +different installed compilers for completely different target +machines, such as VAX vs. 68000 vs. 80386. + +

In addition, each of these target machine types can have its own +special options, starting with -m, to choose among various +hardware models or configurations—for example, 68010 vs 68020, +floating coprocessor or none. A single installed version of the +compiler can compile for any model or configuration, according to the +options specified. + +

Some configurations of the compiler also support additional special +options, usually for compatibility with other compilers on the same +platform. + + + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Subscripting.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Subscripting.html new file mode 100644 index 0000000..d1b3dd2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Subscripting.html @@ -0,0 +1,76 @@ + + +Subscripting - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Escaped Newlines, +Up: C Extensions +



+
+ +

5.19 Non-Lvalue Arrays May Have Subscripts

+ +

+In ISO C99, arrays that are not lvalues still decay to pointers, and +may be subscripted, although they may not be modified or used after +the next sequence point and the unary & operator may not be +applied to them. As an extension, GCC allows such arrays to be +subscripted in C89 mode, though otherwise they do not decay to +pointers outside C99 mode. For example, +this is valid in GNU C though not valid in C89: + +

     struct foo {int a[4];};
+     
+     struct foo f();
+     
+     bar (int index)
+     {
+       return f().a[index];
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Symbol_002dRenaming-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Symbol_002dRenaming-Pragmas.html new file mode 100644 index 0000000..c8f2ead --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Symbol_002dRenaming-Pragmas.html @@ -0,0 +1,112 @@ + + +Symbol-Renaming Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Solaris Pragmas, +Up: Pragmas +



+
+ +

5.52.6 Symbol-Renaming Pragmas

+ +

For compatibility with the Solaris and Tru64 UNIX system headers, GCC +supports two #pragma directives which change the name used in +assembly for a given declaration. These pragmas are only available on +platforms whose system headers need them. To get this effect on all +platforms supported by GCC, use the asm labels extension (see Asm Labels). + +

+
redefine_extname oldname newname
+This pragma gives the C function oldname the assembly symbol +newname. The preprocessor macro __PRAGMA_REDEFINE_EXTNAME +will be defined if this pragma is available (currently only on +Solaris). + +
extern_prefix string
+This pragma causes all subsequent external function and variable +declarations to have string prepended to their assembly symbols. +This effect may be terminated with another extern_prefix pragma +whose argument is an empty string. The preprocessor macro +__PRAGMA_EXTERN_PREFIX will be defined if this pragma is +available (currently only on Tru64 UNIX). +
+ +

These pragmas and the asm labels extension interact in a complicated +manner. Here are some corner cases you may want to be aware of. + +

    +
  1. Both pragmas silently apply only to declarations with external +linkage. Asm labels do not have this restriction. + +
  2. In C++, both pragmas silently apply only to declarations with +“C” linkage. Again, asm labels do not have this restriction. + +
  3. If any of the three ways of changing the assembly name of a +declaration is applied to a declaration whose assembly name has +already been determined (either by a previous use of one of these +features, or because the compiler needed the assembly name in order to +generate code), and the new name is different, a warning issues and +the name does not change. + +
  4. The oldname used by #pragma redefine_extname is +always the C-language name. + +
  5. If #pragma extern_prefix is in effect, and a declaration +occurs with an asm label attached, the prefix is silently ignored for +that declaration. + +
  6. If #pragma extern_prefix and #pragma redefine_extname +apply to the same declaration, whichever triggered first wins, and a +warning issues if they contradict each other. (We would like to have +#pragma redefine_extname always win, for consistency with asm +labels, but if #pragma extern_prefix triggers first we have no +way of knowing that that happened.) +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/System-V-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/System-V-Options.html new file mode 100644 index 0000000..eaeee30 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/System-V-Options.html @@ -0,0 +1,80 @@ + + +System V Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: SPU Options, +Up: Submodel Options +



+
+ +

3.17.33 Options for System V

+ +

These additional options are available on System V Release 4 for +compatibility with other compilers on those systems: + +

+
-G
Create a shared object. +It is recommended that -symbolic or -shared be used instead. + +
-Qy
Identify the versions of each tool used by the compiler, in a +.ident assembler directive in the output. + +
-Qn
Refrain from adding .ident directives to the output file (this is +the default). + +
-YP,dirs
Search the directories dirs, and no others, for libraries +specified with -l. + +
-Ym,dir
Look in the directory dir to find the M4 preprocessor. +The assembler uses this option. + + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Builtins.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Builtins.html new file mode 100644 index 0000000..f5bf2db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Builtins.html @@ -0,0 +1,76 @@ + + +Target Builtins - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Other Builtins, +Up: C Extensions +



+
+ +

5.50 Built-in Functions Specific to Particular Target Machines

+ +

On some target machines, GCC supports many built-in functions specific +to those machines. Generally these generate calls to specific machine +instructions, but allow the compiler to schedule those calls. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Format-Checks.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Format-Checks.html new file mode 100644 index 0000000..9572f54 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Format-Checks.html @@ -0,0 +1,66 @@ + + +Target Format Checks - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Target Builtins, +Up: C Extensions +



+
+ +

5.51 Format Checks Specific to Particular Target Machines

+ +

For some target machines, GCC supports additional options to the +format attribute +(see Declaring Attributes of Functions). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Options.html new file mode 100644 index 0000000..4978ca8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Target-Options.html @@ -0,0 +1,85 @@ + + +Target Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Spec Files, +Up: Invoking GCC +



+
+ +

3.16 Specifying Target Machine and Compiler Version

+ +

+The usual way to run GCC is to run the executable called gcc, or +<machine>-gcc when cross-compiling, or +<machine>-gcc-<version> to run a version other than the one that +was installed last. Sometimes this is inconvenient, so GCC provides +options that will switch to another cross-compiler or version. + +

+
-b machine
The argument machine specifies the target machine for compilation. + +

The value to use for machine is the same as was specified as the +machine type when configuring GCC as a cross-compiler. For +example, if a cross-compiler was configured with configure +arm-elf, meaning to compile for an arm processor with elf binaries, +then you would specify -b arm-elf to run that cross compiler. +Because there are other options beginning with -b, the +configuration must contain a hyphen. + +

-V version
The argument version specifies which version of GCC to run. +This is useful when multiple versions are installed. For example, +version might be 4.0, meaning to run GCC version 4.0. +
+ +

The -V and -b options work by running the +<machine>-gcc-<version> executable, so there's no real reason to +use them if you can just run that directly. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Template-Instantiation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Template-Instantiation.html new file mode 100644 index 0000000..f180d55 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Template-Instantiation.html @@ -0,0 +1,186 @@ + + +Template Instantiation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: C++ Interface, +Up: C++ Extensions +



+
+ +

6.5 Where's the Template?

+ +

+C++ templates are the first language feature to require more +intelligence from the environment than one usually finds on a UNIX +system. Somehow the compiler and linker have to make sure that each +template instance occurs exactly once in the executable if it is needed, +and not at all otherwise. There are two basic approaches to this +problem, which are referred to as the Borland model and the Cfront model. + +

+
Borland model
Borland C++ solved the template instantiation problem by adding the code +equivalent of common blocks to their linker; the compiler emits template +instances in each translation unit that uses them, and the linker +collapses them together. The advantage of this model is that the linker +only has to consider the object files themselves; there is no external +complexity to worry about. This disadvantage is that compilation time +is increased because the template code is being compiled repeatedly. +Code written for this model tends to include definitions of all +templates in the header file, since they must be seen to be +instantiated. + +
Cfront model
The AT&T C++ translator, Cfront, solved the template instantiation +problem by creating the notion of a template repository, an +automatically maintained place where template instances are stored. A +more modern version of the repository works as follows: As individual +object files are built, the compiler places any template definitions and +instantiations encountered in the repository. At link time, the link +wrapper adds in the objects in the repository and compiles any needed +instances that were not previously emitted. The advantages of this +model are more optimal compilation speed and the ability to use the +system linker; to implement the Borland model a compiler vendor also +needs to replace the linker. The disadvantages are vastly increased +complexity, and thus potential for error; for some code this can be +just as transparent, but in practice it can been very difficult to build +multiple programs in one directory and one program in multiple +directories. Code written for this model tends to separate definitions +of non-inline member templates into a separate file, which should be +compiled separately. +
+ +

When used with GNU ld version 2.8 or later on an ELF system such as +GNU/Linux or Solaris 2, or on Microsoft Windows, G++ supports the +Borland model. On other systems, G++ implements neither automatic +model. + +

A future version of G++ will support a hybrid model whereby the compiler +will emit any instantiations for which the template definition is +included in the compile, and store template definitions and +instantiation context information into the object file for the rest. +The link wrapper will extract that information as necessary and invoke +the compiler to produce the remaining instantiations. The linker will +then combine duplicate instantiations. + +

In the mean time, you have the following options for dealing with +template instantiations: + +

    +
  1. Compile your template-using code with -frepo. The compiler will +generate files with the extension .rpo listing all of the +template instantiations used in the corresponding object files which +could be instantiated there; the link wrapper, collect2, will +then update the .rpo files to tell the compiler where to place +those instantiations and rebuild any affected object files. The +link-time overhead is negligible after the first pass, as the compiler +will continue to place the instantiations in the same files. + +

    This is your best option for application code written for the Borland +model, as it will just work. Code written for the Cfront model will +need to be modified so that the template definitions are available at +one or more points of instantiation; usually this is as simple as adding +#include <tmethods.cc> to the end of each template header. + +

    For library code, if you want the library to provide all of the template +instantiations it needs, just try to link all of its object files +together; the link will fail, but cause the instantiations to be +generated as a side effect. Be warned, however, that this may cause +conflicts if multiple libraries try to provide the same instantiations. +For greater control, use explicit instantiation as described in the next +option. + +

  2. Compile your code with -fno-implicit-templates to disable the +implicit generation of template instances, and explicitly instantiate +all the ones you use. This approach requires more knowledge of exactly +which instances you need than do the others, but it's less +mysterious and allows greater control. You can scatter the explicit +instantiations throughout your program, perhaps putting them in the +translation units where the instances are used or the translation units +that define the templates themselves; you can put all of the explicit +instantiations you need into one big file; or you can create small files +like + +
              #include "Foo.h"
    +          #include "Foo.cc"
    +          
    +          template class Foo<int>;
    +          template ostream& operator <<
    +                          (ostream&, const Foo<int>&);
    +     
    +

    for each of the instances you need, and create a template instantiation +library from those. + +

    If you are using Cfront-model code, you can probably get away with not +using -fno-implicit-templates when compiling files that don't +#include the member template definitions. + +

    If you use one big file to do the instantiations, you may want to +compile it without -fno-implicit-templates so you get all of the +instances required by your explicit instantiations (but not by any +other files) without having to specify them as well. + +

    G++ has extended the template instantiation syntax given in the ISO +standard to allow forward declaration of explicit instantiations +(with extern), instantiation of the compiler support data for a +template class (i.e. the vtable) without instantiating any of its +members (with inline), and instantiation of only the static data +members of a template class, without the support data or member +functions (with (static): + +

              extern template int max (int, int);
    +          inline template class Foo<int>;
    +          static template class Foo<int>;
    +     
    +
  3. Do nothing. Pretend G++ does implement automatic instantiation +management. Code written for the Borland model will work fine, but +each translation unit will contain instances of each of the templates it +uses. In a large program, this can lead to an unacceptable amount of code +duplication. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Temporaries.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Temporaries.html new file mode 100644 index 0000000..4e60014 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Temporaries.html @@ -0,0 +1,104 @@ + + +Temporaries - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Name lookup, +Up: C++ Misunderstandings +



+
+ +

10.8.3 Temporaries May Vanish Before You Expect

+ +

It is dangerous to use pointers or references to portions of a +temporary object. The compiler may very well delete the object before +you expect it to, leaving a pointer to garbage. The most common place +where this problem crops up is in classes like string classes, +especially ones that define a conversion function to type char * +or const char *—which is one reason why the standard +string class requires you to call the c_str member +function. However, any class that returns a pointer to some internal +structure is potentially subject to this problem. + +

For example, a program may use a function strfunc that returns +string objects, and another function charfunc that +operates on pointers to char: + +

     string strfunc ();
+     void charfunc (const char *);
+     
+     void
+     f ()
+     {
+       const char *p = strfunc().c_str();
+       ...
+       charfunc (p);
+       ...
+       charfunc (p);
+     }
+
+

In this situation, it may seem reasonable to save a pointer to the C +string returned by the c_str member function and use that rather +than call c_str repeatedly. However, the temporary string +created by the call to strfunc is destroyed after p is +initialized, at which point p is left pointing to freed memory. + +

Code like this may run successfully under some other compilers, +particularly obsolete cfront-based compilers that delete temporaries +along with normal local variables. However, the GNU C++ behavior is +standard-conforming, so if your program depends on late destruction of +temporaries it is not portable. + +

The safe way to write such code is to give the temporary a name, which +forces it to remain until the end of the scope of the name. For +example: + +

     const string& tmp = strfunc ();
+     charfunc (tmp.c_str ());
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Thread_002dLocal.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Thread_002dLocal.html new file mode 100644 index 0000000..ea96efb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Thread_002dLocal.html @@ -0,0 +1,105 @@ + + +Thread-Local - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Unnamed Fields, +Up: C Extensions +



+
+ +

5.54 Thread-Local Storage

+ +

+Thread-local storage (TLS) is a mechanism by which variables +are allocated such that there is one instance of the variable per extant +thread. The run-time model GCC uses to implement this originates +in the IA-64 processor-specific ABI, but has since been migrated +to other processors as well. It requires significant support from +the linker (ld), dynamic linker (ld.so), and +system libraries (libc.so and libpthread.so), so it +is not available everywhere. + +

At the user level, the extension is visible with a new storage +class keyword: __thread. For example: + +

     __thread int i;
+     extern __thread struct state s;
+     static __thread char *p;
+
+

The __thread specifier may be used alone, with the extern +or static specifiers, but with no other storage class specifier. +When used with extern or static, __thread must appear +immediately after the other storage class specifier. + +

The __thread specifier may be applied to any global, file-scoped +static, function-scoped static, or static data member of a class. It may +not be applied to block-scoped automatic or non-static data member. + +

When the address-of operator is applied to a thread-local variable, it is +evaluated at run-time and returns the address of the current thread's +instance of that variable. An address so obtained may be used by any +thread. When a thread terminates, any pointers to thread-local variables +in that thread become invalid. + +

No static initialization may refer to the address of a thread-local variable. + +

In C++, if an initializer is present for a thread-local variable, it must +be a constant-expression, as defined in 5.19.2 of the ANSI/ISO C++ +standard. + +

See ELF Handling For Thread-Local Storage for a detailed explanation of +the four thread-local storage addressing models, and how the run-time +is expected to function. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Translation-implementation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Translation-implementation.html new file mode 100644 index 0000000..23df7fc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Translation-implementation.html @@ -0,0 +1,69 @@ + + +Translation implementation - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +

4.1 Translation

+ +
    +
  • How a diagnostic is identified (C90 3.7, C99 3.10, C90 and C99 5.1.1.3). + +

    Diagnostics consist of all the output sent to stderr by GCC. + +

  • Whether each nonempty sequence of white-space characters other than +new-line is retained or replaced by one space character in translation +phase 3 (C90 and C99 5.1.1.2). + +

    See Implementation-defined behavior (The C Preprocessor). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Trouble.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Trouble.html new file mode 100644 index 0000000..353f88f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Trouble.html @@ -0,0 +1,84 @@ + + +Trouble - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Previous: Gcov, +Up: Top +



+
+ +

10 Known Causes of Trouble with GCC

+ +

+This section describes known problems that affect users of GCC. Most +of these are not GCC bugs per se—if they were, we would fix them. +But the result for a user may be like the result of a bug. + +

Some of these problems are due to bugs in other software, some are +missing features that are too much work to add, and some are places +where people's opinions differ as to what is best. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-Attributes.html new file mode 100644 index 0000000..edacea3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-Attributes.html @@ -0,0 +1,400 @@ + + +Type Attributes - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Variable Attributes, +Up: C Extensions +



+
+ +

5.35 Specifying Attributes of Types

+ +

+The keyword __attribute__ allows you to specify special +attributes of struct and union types when you define +such types. This keyword is followed by an attribute specification +inside double parentheses. Seven attributes are currently defined for +types: aligned, packed, transparent_union, +unused, deprecated, visibility, and +may_alias. Other attributes are defined for functions +(see Function Attributes) and for variables (see Variable Attributes). + +

You may also specify any one of these attributes with __ +preceding and following its keyword. This allows you to use these +attributes in header files without being concerned about a possible +macro of the same name. For example, you may use __aligned__ +instead of aligned. + +

You may specify type attributes in an enum, struct or union type +declaration or definition, or for other types in a typedef +declaration. + +

For an enum, struct or union type, you may specify attributes either +between the enum, struct or union tag and the name of the type, or +just past the closing curly brace of the definition. The +former syntax is preferred. + +

See Attribute Syntax, for details of the exact syntax for using +attributes. + + + +

aligned (alignment)
This attribute specifies a minimum alignment (in bytes) for variables +of the specified type. For example, the declarations: + +
          struct S { short f[3]; } __attribute__ ((aligned (8)));
+          typedef int more_aligned_int __attribute__ ((aligned (8)));
+     
+

force the compiler to insure (as far as it can) that each variable whose +type is struct S or more_aligned_int will be allocated and +aligned at least on a 8-byte boundary. On a SPARC, having all +variables of type struct S aligned to 8-byte boundaries allows +the compiler to use the ldd and std (doubleword load and +store) instructions when copying one variable of type struct S to +another, thus improving run-time efficiency. + +

Note that the alignment of any given struct or union type +is required by the ISO C standard to be at least a perfect multiple of +the lowest common multiple of the alignments of all of the members of +the struct or union in question. This means that you can +effectively adjust the alignment of a struct or union +type by attaching an aligned attribute to any one of the members +of such a type, but the notation illustrated in the example above is a +more obvious, intuitive, and readable way to request the compiler to +adjust the alignment of an entire struct or union type. + +

As in the preceding example, you can explicitly specify the alignment +(in bytes) that you wish the compiler to use for a given struct +or union type. Alternatively, you can leave out the alignment factor +and just ask the compiler to align a type to the maximum +useful alignment for the target machine you are compiling for. For +example, you could write: + +

          struct S { short f[3]; } __attribute__ ((aligned));
+     
+

Whenever you leave out the alignment factor in an aligned +attribute specification, the compiler automatically sets the alignment +for the type to the largest alignment which is ever used for any data +type on the target machine you are compiling for. Doing this can often +make copy operations more efficient, because the compiler can use +whatever instructions copy the biggest chunks of memory when performing +copies to or from the variables which have types that you have aligned +this way. + +

In the example above, if the size of each short is 2 bytes, then +the size of the entire struct S type is 6 bytes. The smallest +power of two which is greater than or equal to that is 8, so the +compiler sets the alignment for the entire struct S type to 8 +bytes. + +

Note that although you can ask the compiler to select a time-efficient +alignment for a given type and then declare only individual stand-alone +objects of that type, the compiler's ability to select a time-efficient +alignment is primarily useful only when you plan to create arrays of +variables having the relevant (efficiently aligned) type. If you +declare or use arrays of variables of an efficiently-aligned type, then +it is likely that your program will also be doing pointer arithmetic (or +subscripting, which amounts to the same thing) on pointers to the +relevant type, and the code that the compiler generates for these +pointer arithmetic operations will often be more efficient for +efficiently-aligned types than for other types. + +

The aligned attribute can only increase the alignment; but you +can decrease it by specifying packed as well. See below. + +

Note that the effectiveness of aligned attributes may be limited +by inherent limitations in your linker. On many systems, the linker is +only able to arrange for variables to be aligned up to a certain maximum +alignment. (For some linkers, the maximum supported alignment may +be very very small.) If your linker is only able to align variables +up to a maximum of 8 byte alignment, then specifying aligned(16) +in an __attribute__ will still only provide you with 8 byte +alignment. See your linker documentation for further information. + +

packed
This attribute, attached to struct or union type +definition, specifies that each member (other than zero-width bitfields) +of the structure or union is placed to minimize the memory required. When +attached to an enum definition, it indicates that the smallest +integral type should be used. + +

Specifying this attribute for struct and union types is +equivalent to specifying the packed attribute on each of the +structure or union members. Specifying the -fshort-enums +flag on the line is equivalent to specifying the packed +attribute on all enum definitions. + +

In the following example struct my_packed_struct's members are +packed closely together, but the internal layout of its s member +is not packed—to do that, struct my_unpacked_struct would need to +be packed too. + +

          struct my_unpacked_struct
+           {
+              char c;
+              int i;
+           };
+          
+          struct __attribute__ ((__packed__)) my_packed_struct
+            {
+               char c;
+               int  i;
+               struct my_unpacked_struct s;
+            };
+     
+

You may only specify this attribute on the definition of a enum, +struct or union, not on a typedef which does not +also define the enumerated type, structure or union. + +

transparent_union
This attribute, attached to a union type definition, indicates +that any function parameter having that union type causes calls to that +function to be treated in a special way. + +

First, the argument corresponding to a transparent union type can be of +any type in the union; no cast is required. Also, if the union contains +a pointer type, the corresponding argument can be a null pointer +constant or a void pointer expression; and if the union contains a void +pointer type, the corresponding argument can be any pointer expression. +If the union member type is a pointer, qualifiers like const on +the referenced type must be respected, just as with normal pointer +conversions. + +

Second, the argument is passed to the function using the calling +conventions of the first member of the transparent union, not the calling +conventions of the union itself. All members of the union must have the +same machine representation; this is necessary for this argument passing +to work properly. + +

Transparent unions are designed for library functions that have multiple +interfaces for compatibility reasons. For example, suppose the +wait function must accept either a value of type int * to +comply with Posix, or a value of type union wait * to comply with +the 4.1BSD interface. If wait's parameter were void *, +wait would accept both kinds of arguments, but it would also +accept any other pointer type and this would make argument type checking +less useful. Instead, <sys/wait.h> might define the interface +as follows: + +

          typedef union __attribute__ ((__transparent_union__))
+            {
+              int *__ip;
+              union wait *__up;
+            } wait_status_ptr_t;
+          
+          pid_t wait (wait_status_ptr_t);
+     
+

This interface allows either int * or union wait * +arguments to be passed, using the int * calling convention. +The program can call wait with arguments of either type: + +

          int w1 () { int w; return wait (&w); }
+          int w2 () { union wait w; return wait (&w); }
+     
+

With this interface, wait's implementation might look like this: + +

          pid_t wait (wait_status_ptr_t p)
+          {
+            return waitpid (-1, p.__ip, 0);
+          }
+     
+
unused
When attached to a type (including a union or a struct), +this attribute means that variables of that type are meant to appear +possibly unused. GCC will not produce a warning for any variables of +that type, even if the variable appears to do nothing. This is often +the case with lock or thread classes, which are usually defined and then +not referenced, but contain constructors and destructors that have +nontrivial bookkeeping functions. + +
deprecated
The deprecated attribute results in a warning if the type +is used anywhere in the source file. This is useful when identifying +types that are expected to be removed in a future version of a program. +If possible, the warning also includes the location of the declaration +of the deprecated type, to enable users to easily find further +information about why the type is deprecated, or what they should do +instead. Note that the warnings only occur for uses and then only +if the type is being applied to an identifier that itself is not being +declared as deprecated. + +
          typedef int T1 __attribute__ ((deprecated));
+          T1 x;
+          typedef T1 T2;
+          T2 y;
+          typedef T1 T3 __attribute__ ((deprecated));
+          T3 z __attribute__ ((deprecated));
+     
+

results in a warning on line 2 and 3 but not lines 4, 5, or 6. No +warning is issued for line 4 because T2 is not explicitly +deprecated. Line 5 has no warning because T3 is explicitly +deprecated. Similarly for line 6. + +

The deprecated attribute can also be used for functions and +variables (see Function Attributes, see Variable Attributes.) + +

may_alias
Accesses through pointers to types with this attribute are not subject +to type-based alias analysis, but are instead assumed to be able to alias +any other type of objects. In the context of 6.5/7 an lvalue expression +dereferencing such a pointer is treated like having a character type. +See -fstrict-aliasing for more information on aliasing issues. +This extension exists to support some vector APIs, in which pointers to +one vector type are permitted to alias pointers to a different vector type. + +

Note that an object of a type with this attribute does not have any +special semantics. + +

Example of use: + +

          typedef short __attribute__((__may_alias__)) short_a;
+          
+          int
+          main (void)
+          {
+            int a = 0x12345678;
+            short_a *b = (short_a *) &a;
+          
+            b[1] = 0;
+          
+            if (a == 0x12345678)
+              abort();
+          
+            exit(0);
+          }
+     
+

If you replaced short_a with short in the variable +declaration, the above program would abort when compiled with +-fstrict-aliasing, which is on by default at -O2 or +above in recent GCC versions. + +

visibility
In C++, attribute visibility (see Function Attributes) can also be +applied to class, struct, union and enum types. Unlike other type +attributes, the attribute must appear between the initial keyword and +the name of the type; it cannot appear after the body of the type. + +

Note that the type visibility is applied to vague linkage entities +associated with the class (vtable, typeinfo node, etc.). In +particular, if a class is thrown as an exception in one shared object +and caught in another, the class must have default visibility. +Otherwise the two shared objects will be unable to use the same +typeinfo node and exception handling will break. + +

5.35.1 ARM Type Attributes

+ +

On those ARM targets that support dllimport (such as Symbian +OS), you can use the notshared attribute to indicate that the +virtual table and other similar data for a class should not be +exported from a DLL. For example: + +

          class __declspec(notshared) C {
+          public:
+            __declspec(dllimport) C();
+            virtual void f();
+          }
+          
+          __declspec(dllexport)
+          C::C() {}
+     
+

In this code, C::C is exported from the current DLL, but the +virtual table for C is not exported. (You can use +__attribute__ instead of __declspec if you prefer, but +most Symbian OS code uses __declspec.) + +

+ +

5.35.2 i386 Type Attributes

+ +

Two attributes are currently defined for i386 configurations: +ms_struct and gcc_struct + +

ms_struct
gcc_struct
+If packed is used on a structure, or if bit-fields are used +it may be that the Microsoft ABI packs them differently +than GCC would normally pack them. Particularly when moving packed +data between functions compiled with GCC and the native Microsoft compiler +(either via function call or as data in a file), it may be necessary to access +either format. + +

Currently -m[no-]ms-bitfields is provided for the Microsoft Windows X86 +compilers to match the native Microsoft compiler. +

+ +

To specify multiple attributes, separate them by commas within the +double parentheses: for example, __attribute__ ((aligned (16), +packed)). + +

+ +

5.35.3 PowerPC Type Attributes

+ +

Three attributes currently are defined for PowerPC configurations: +altivec, ms_struct and gcc_struct. + +

For full documentation of the struct attributes please see the +documentation in the See i386 Type Attributes, section. + +

The altivec attribute allows one to declare AltiVec vector data +types supported by the AltiVec Programming Interface Manual. The +attribute requires an argument to specify one of three vector types: +vector__, pixel__ (always followed by unsigned short), +and bool__ (always followed by unsigned). + +

     __attribute__((altivec(vector__)))
+     __attribute__((altivec(pixel__))) unsigned short
+     __attribute__((altivec(bool__))) unsigned
+
+

These attributes mainly are intended to support the __vector, +__pixel, and __bool AltiVec keywords. + +

+ +

5.35.4 SPU Type Attributes

+ +

The SPU supports the spu_vector attribute for types. This attribute +allows one to declare vector data types supported by the Sony/Toshiba/IBM SPU +Language Extensions Specification. It is intended to support the +__vector keyword. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-Traits.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-Traits.html new file mode 100644 index 0000000..91bb711 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-Traits.html @@ -0,0 +1,156 @@ + + +Type Traits - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Namespace Association, +Up: C++ Extensions +



+
+ +

6.9 Type Traits

+ +

The C++ front-end implements syntactic extensions that allow to +determine at compile time various characteristics of a type (or of a +pair of types). + +

+
__has_nothrow_assign (type)
If type is const qualified or is a reference type then the trait is +false. Otherwise if __has_trivial_assign (type) is true then the trait +is true, else if type is a cv class or union type with copy assignment +operators that are known not to throw an exception then the trait is true, +else it is false. Requires: type shall be a complete type, an array +type of unknown bound, or is a void type. + +
__has_nothrow_copy (type)
If __has_trivial_copy (type) is true then the trait is true, else if +type is a cv class or union type with copy constructors that +are known not to throw an exception then the trait is true, else it is false. +Requires: type shall be a complete type, an array type of +unknown bound, or is a void type. + +
__has_nothrow_constructor (type)
If __has_trivial_constructor (type) is true then the trait is +true, else if type is a cv class or union type (or array +thereof) with a default constructor that is known not to throw an +exception then the trait is true, else it is false. Requires: +type shall be a complete type, an array type of unknown bound, +or is a void type. + +
__has_trivial_assign (type)
If type is const qualified or is a reference type then the trait is +false. Otherwise if __is_pod (type) is true then the trait is +true, else if type is a cv class or union type with a trivial +copy assignment ([class.copy]) then the trait is true, else it is +false. Requires: type shall be a complete type, an array type +of unknown bound, or is a void type. + +
__has_trivial_copy (type)
If __is_pod (type) is true or type is a reference type +then the trait is true, else if type is a cv class or union type +with a trivial copy constructor ([class.copy]) then the trait +is true, else it is false. Requires: type shall be a complete +type, an array type of unknown bound, or is a void type. + +
__has_trivial_constructor (type)
If __is_pod (type) is true then the trait is true, else if +type is a cv class or union type (or array thereof) with a +trivial default constructor ([class.ctor]) then the trait is true, +else it is false. Requires: type shall be a complete type, an +array type of unknown bound, or is a void type. + +
__has_trivial_destructor (type)
If __is_pod (type) is true or type is a reference type then +the trait is true, else if type is a cv class or union type (or +array thereof) with a trivial destructor ([class.dtor]) then the trait +is true, else it is false. Requires: type shall be a complete +type, an array type of unknown bound, or is a void type. + +
__has_virtual_destructor (type)
If type is a class type with a virtual destructor +([class.dtor]) then the trait is true, else it is false. Requires: +type shall be a complete type, an array type of unknown bound, +or is a void type. + +
__is_abstract (type)
If type is an abstract class ([class.abstract]) then the trait +is true, else it is false. Requires: type shall be a complete +type, an array type of unknown bound, or is a void type. + +
__is_base_of (base_type, derived_type)
If base_type is a base class of derived_type +([class.derived]) then the trait is true, otherwise it is false. +Top-level cv qualifications of base_type and +derived_type are ignored. For the purposes of this trait, a +class type is considered is own base. Requires: if __is_class +(base_type) and __is_class (derived_type) are true and +base_type and derived_type are not the same type +(disregarding cv-qualifiers), derived_type shall be a complete +type. Diagnostic is produced if this requirement is not met. + +
__is_class (type)
If type is a cv class type, and not a union type +([basic.compound]) the the trait is true, else it is false. + +
__is_empty (type)
If __is_class (type) is false then the trait is false. +Otherwise type is considered empty if and only if: type +has no non-static data members, or all non-static data members, if +any, are bit-fields of lenght 0, and type has no virtual +members, and type has no virtual base classes, and type +has no base classes base_type for which +__is_empty (base_type) is false. Requires: type shall +be a complete type, an array type of unknown bound, or is a +void type. + +
__is_enum (type)
If type is a cv enumeration type ([basic.compound]) the the trait is +true, else it is false. + +
__is_pod (type)
If type is a cv POD type ([basic.types]) then the trait is true, +else it is false. Requires: type shall be a complete type, +an array type of unknown bound, or is a void type. + +
__is_polymorphic (type)
If type is a polymorphic class ([class.virtual]) then the trait +is true, else it is false. Requires: type shall be a complete +type, an array type of unknown bound, or is a void type. + +
__is_union (type)
If type is a cv union type ([basic.compound]) the the trait is +true, else it is false. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-encoding.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-encoding.html new file mode 100644 index 0000000..46b2c81 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type-encoding.html @@ -0,0 +1,195 @@ + + +Type encoding - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Executing code before main, +Up: Objective-C +



+
+ +

7.2 Type encoding

+ +

The Objective-C compiler generates type encodings for all the +types. These type encodings are used at runtime to find out information +about selectors and methods and about objects and classes. + +

The types are encoded in the following way: + + +

_Bool +B +
char +c +
unsigned char +C +
short +s +
unsigned short +S +
int +i +
unsigned int +I +
long +l +
unsigned long +L +
long long +q +
unsigned long long +Q +
float +f +
double +d +
void +v +
id +@ +
Class +# +
SEL +: +
char* +* +
unknown type +? +
Complex types +j followed by the inner type. For example _Complex double is encoded as "jd". +
bit-fields +b followed by the starting position of the bit-field, the type of the bit-field and the size of the bit-field (the bit-fields encoding was changed from the NeXT's compiler encoding, see below) +
+ + +

The encoding of bit-fields has changed to allow bit-fields to be properly +handled by the runtime functions that compute sizes and alignments of +types that contain bit-fields. The previous encoding contained only the +size of the bit-field. Using only this information it is not possible to +reliably compute the size occupied by the bit-field. This is very +important in the presence of the Boehm's garbage collector because the +objects are allocated using the typed memory facility available in this +collector. The typed memory allocation requires information about where +the pointers are located inside the object. + +

The position in the bit-field is the position, counting in bits, of the +bit closest to the beginning of the structure. + +

The non-atomic types are encoded as follows: + + +

pointers +^ followed by the pointed type. +
arrays +[ followed by the number of elements in the array followed by the type of the elements followed by ] +
structures +{ followed by the name of the structure (or ? if the structure is unnamed), the = sign, the type of the members and by } +
unions +( followed by the name of the structure (or ? if the union is unnamed), the = sign, the type of the members followed by ) +
+ +

Here are some types and their encodings, as they are generated by the +compiler on an i386 machine: + +

+
+
+

Objective-C type +Compiler encoding +
+
     int a[10];
+
+

[10i] +
+
     struct {
+       int i;
+       float f[3];
+       int a:3;
+       int b:2;
+       char c;
+     }
+
+

{?=i[3f]b128i3b131i2c} +
+ +

+
+
+ +In addition to the types the compiler also encodes the type +specifiers. The table below describes the encoding of the current +Objective-C type specifiers: + +
+
+
+

Specifier +Encoding +
const +r +
in +n +
inout +N +
out +o +
bycopy +O +
oneway +V +
+ +

+
+
+ +The type specifiers are encoded just before the type. Unlike types +however, the type specifiers are only encoded when they appear in method +argument types. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type_002dpunning.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type_002dpunning.html new file mode 100644 index 0000000..567f9bb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Type_002dpunning.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Typeof.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Typeof.html new file mode 100644 index 0000000..ed90ca9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Typeof.html @@ -0,0 +1,150 @@ + + +Typeof - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Constructing Calls, +Up: C Extensions +



+
+ +

5.6 Referring to a Type with typeof

+ +

+Another way to refer to the type of an expression is with typeof. +The syntax of using of this keyword looks like sizeof, but the +construct acts semantically like a type name defined with typedef. + +

There are two ways of writing the argument to typeof: with an +expression or with a type. Here is an example with an expression: + +

     typeof (x[0](1))
+
+

This assumes that x is an array of pointers to functions; +the type described is that of the values of the functions. + +

Here is an example with a typename as the argument: + +

     typeof (int *)
+
+

Here the type described is that of pointers to int. + +

If you are writing a header file that must work when included in ISO C +programs, write __typeof__ instead of typeof. +See Alternate Keywords. + +

A typeof-construct can be used anywhere a typedef name could be +used. For example, you can use it in a declaration, in a cast, or inside +of sizeof or typeof. + +

typeof is often useful in conjunction with the +statements-within-expressions feature. Here is how the two together can +be used to define a safe “maximum” macro that operates on any +arithmetic type and evaluates each of its arguments exactly once: + +

     #define max(a,b) \
+       ({ typeof (a) _a = (a); \
+           typeof (b) _b = (b); \
+         _a > _b ? _a : _b; })
+
+

+The reason for using names that start with underscores for the local +variables is to avoid conflicts with variable names that occur within the +expressions that are substituted for a and b. Eventually we +hope to design a new form of declaration syntax that allows you to declare +variables whose scopes start only after their initializers; this will be a +more reliable way to prevent such conflicts. + +

Some more examples of the use of typeof: + +

    +
  • This declares y with the type of what x points to. + +
              typeof (*x) y;
    +     
    +
  • This declares y as an array of such values. + +
              typeof (*x) y[4];
    +     
    +
  • This declares y as an array of pointers to characters: + +
              typeof (typeof (char *)[4]) y;
    +     
    +

    It is equivalent to the following traditional C declaration: + +

              char *y[4];
    +     
    +

    To see the meaning of the declaration using typeof, and why it +might be a useful way to write, rewrite it with these macros: + +

              #define pointer(T)  typeof(T *)
    +          #define array(T, N) typeof(T [N])
    +     
    +

    Now the declaration can be rewritten this way: + +

              array (pointer (char), 4) y;
    +     
    +

    Thus, array (pointer (char), 4) is the type of arrays of 4 +pointers to char. +

+ +

Compatibility Note: In addition to typeof, GCC 2 supported +a more limited extension which permitted one to write + +

     typedef T = expr;
+
+

with the effect of declaring T to have the type of the expression +expr. This extension does not work with GCC 3 (versions between +3.0 and 3.2 will crash; 3.2.1 and later give an error). Code which +relies on it should be rewritten to use typeof: + +

     typedef typeof(expr) T;
+
+

This will work with all versions of GCC. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Unnamed-Fields.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Unnamed-Fields.html new file mode 100644 index 0000000..e2bec86 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Unnamed-Fields.html @@ -0,0 +1,99 @@ + + +Unnamed Fields - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Pragmas, +Up: C Extensions +



+
+ +

5.53 Unnamed struct/union fields within structs/unions

+ +

+For compatibility with other compilers, GCC allows you to define +a structure or union that contains, as fields, structures and unions +without names. For example: + +

     struct {
+       int a;
+       union {
+         int b;
+         float c;
+       };
+       int d;
+     } foo;
+
+

In this example, the user would be able to access members of the unnamed +union with code like foo.b. Note that only unnamed structs and +unions are allowed, you may not have, for example, an unnamed +int. + +

You must never create such structures that cause ambiguous field definitions. +For example, this structure: + +

     struct {
+       int a;
+       struct {
+         int a;
+       };
+     } foo;
+
+

It is ambiguous which a is being referred to with foo.a. +Such constructs are not supported and must be avoided. In the future, +such constructs may be detected and treated as compilation errors. + +

Unless -fms-extensions is used, the unnamed field must be a +structure or union definition without a tag (for example, struct +{ int a; };). If -fms-extensions is used, the field may +also be a definition with a tag such as struct foo { int a; +};, a reference to a previously defined structure or union such as +struct foo;, or a reference to a typedef name for a +previously defined structure or union type. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/V850-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/V850-Options.html new file mode 100644 index 0000000..f48ace8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/V850-Options.html @@ -0,0 +1,122 @@ + + +V850 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: System V Options, +Up: Submodel Options +



+
+ +

3.17.34 V850 Options

+ +

+These -m options are defined for V850 implementations: + +

+
-mlong-calls
-mno-long-calls
Treat all calls as being far away (near). If calls are assumed to be +far away, the compiler will always load the functions address up into a +register, and call indirect through the pointer. + +
-mno-ep
-mep
Do not optimize (do optimize) basic blocks that use the same index +pointer 4 or more times to copy pointer into the ep register, and +use the shorter sld and sst instructions. The -mep +option is on by default if you optimize. + +
-mno-prolog-function
-mprolog-function
Do not use (do use) external functions to save and restore registers +at the prologue and epilogue of a function. The external functions +are slower, but use less code space if more than one function saves +the same number of registers. The -mprolog-function option +is on by default if you optimize. + +
-mspace
Try to make the code as small as possible. At present, this just turns +on the -mep and -mprolog-function options. + +
-mtda=n
Put static or global variables whose size is n bytes or less into +the tiny data area that register ep points to. The tiny data +area can hold up to 256 bytes in total (128 bytes for byte references). + +
-msda=n
Put static or global variables whose size is n bytes or less into +the small data area that register gp points to. The small data +area can hold up to 64 kilobytes. + +
-mzda=n
Put static or global variables whose size is n bytes or less into +the first 32 kilobytes of memory. + +
-mv850
Specify that the target processor is the V850. + +
-mbig-switch
Generate code suitable for big switch tables. Use this option only if +the assembler/linker complain about out of range branches within a switch +table. + +
-mapp-regs
This option will cause r2 and r5 to be used in the code generated by +the compiler. This setting is the default. + +
-mno-app-regs
This option will cause r2 and r5 to be treated as fixed registers. + +
-mv850e1
Specify that the target processor is the V850E1. The preprocessor +constants __v850e1__ and __v850e__ will be defined if +this option is used. + +
-mv850e
Specify that the target processor is the V850E. The preprocessor +constant __v850e__ will be defined if this option is used. + +

If neither -mv850 nor -mv850e nor -mv850e1 +are defined then a default target processor will be chosen and the +relevant __v850*__ preprocessor constant will be defined. + +

The preprocessor constants __v850 and __v851__ are always +defined, regardless of which processor variant is the target. + +

-mdisable-callt
This option will suppress generation of the CALLT instruction for the +v850e and v850e1 flavors of the v850 architecture. The default is +-mno-disable-callt which allows the CALLT instruction to be used. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/VAX-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/VAX-Options.html new file mode 100644 index 0000000..c918b7e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/VAX-Options.html @@ -0,0 +1,72 @@ + + +VAX Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: V850 Options, +Up: Submodel Options +



+
+ +

3.17.35 VAX Options

+ +

+These -m options are defined for the VAX: + +

+
-munix
Do not output certain jump instructions (aobleq and so on) +that the Unix assembler for the VAX cannot handle across long +ranges. + +
-mgnu
Do output those jump instructions, on the assumption that you +will assemble with the GNU assembler. + +
-mg
Output code for g-format floating point numbers instead of d-format. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Vague-Linkage.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Vague-Linkage.html new file mode 100644 index 0000000..a581dfa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Vague-Linkage.html @@ -0,0 +1,125 @@ + + +Vague Linkage - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Restricted Pointers, +Up: C++ Extensions +



+
+ +

6.3 Vague Linkage

+ +

+There are several constructs in C++ which require space in the object +file but are not clearly tied to a single translation unit. We say that +these constructs have “vague linkage”. Typically such constructs are +emitted wherever they are needed, though sometimes we can be more +clever. + +

+
Inline Functions
Inline functions are typically defined in a header file which can be +included in many different compilations. Hopefully they can usually be +inlined, but sometimes an out-of-line copy is necessary, if the address +of the function is taken or if inlining fails. In general, we emit an +out-of-line copy in all translation units where one is needed. As an +exception, we only emit inline virtual functions with the vtable, since +it will always require a copy. + +

Local static variables and string constants used in an inline function +are also considered to have vague linkage, since they must be shared +between all inlined and out-of-line instances of the function. + +

VTables
C++ virtual functions are implemented in most compilers using a lookup +table, known as a vtable. The vtable contains pointers to the virtual +functions provided by a class, and each object of the class contains a +pointer to its vtable (or vtables, in some multiple-inheritance +situations). If the class declares any non-inline, non-pure virtual +functions, the first one is chosen as the “key method” for the class, +and the vtable is only emitted in the translation unit where the key +method is defined. + +

Note: If the chosen key method is later defined as inline, the +vtable will still be emitted in every translation unit which defines it. +Make sure that any inline virtuals are declared inline in the class +body, even if they are not defined there. + +

type_info objects
C++ requires information about types to be written out in order to +implement dynamic_cast, typeid and exception handling. +For polymorphic classes (classes with virtual functions), the type_info +object is written out along with the vtable so that dynamic_cast +can determine the dynamic type of a class object at runtime. For all +other types, we write out the type_info object when it is used: when +applying typeid to an expression, throwing an object, or +referring to a type in a catch clause or exception specification. + +
Template Instantiations
Most everything in this section also applies to template instantiations, +but there are other options as well. +See Where's the Template?. + +
+ +

When used with GNU ld version 2.8 or later on an ELF system such as +GNU/Linux or Solaris 2, or on Microsoft Windows, duplicate copies of +these constructs will be discarded at link time. This is known as +COMDAT support. + +

On targets that don't support COMDAT, but do support weak symbols, GCC +will use them. This way one copy will override all the others, but +the unused copies will still take up space in the executable. + +

For targets which do not support either COMDAT or weak symbols, +most entities with vague linkage will be emitted as local symbols to +avoid duplicate definition errors from the linker. This will not happen +for local statics in inlines, however, as having multiple copies will +almost certainly break things. + +

See Declarations and Definitions in One Header, for +another way to control placement of these constructs. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variable-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variable-Attributes.html new file mode 100644 index 0000000..1fc9d49 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variable-Attributes.html @@ -0,0 +1,515 @@ + + +Variable Attributes - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Character Escapes, +Up: C Extensions +



+
+ +

5.34 Specifying Attributes of Variables

+ +

+The keyword __attribute__ allows you to specify special +attributes of variables or structure fields. This keyword is followed +by an attribute specification inside double parentheses. Some +attributes are currently defined generically for variables. +Other attributes are defined for variables on particular target +systems. Other attributes are available for functions +(see Function Attributes) and for types (see Type Attributes). +Other front ends might define more attributes +(see Extensions to the C++ Language). + +

You may also specify attributes with __ preceding and following +each keyword. This allows you to use them in header files without +being concerned about a possible macro of the same name. For example, +you may use __aligned__ instead of aligned. + +

See Attribute Syntax, for details of the exact syntax for using +attributes. + + + +

aligned (alignment)
This attribute specifies a minimum alignment for the variable or +structure field, measured in bytes. For example, the declaration: + +
          int x __attribute__ ((aligned (16))) = 0;
+     
+

causes the compiler to allocate the global variable x on a +16-byte boundary. On a 68040, this could be used in conjunction with +an asm expression to access the move16 instruction which +requires 16-byte aligned operands. + +

You can also specify the alignment of structure fields. For example, to +create a double-word aligned int pair, you could write: + +

          struct foo { int x[2] __attribute__ ((aligned (8))); };
+     
+

This is an alternative to creating a union with a double member +that forces the union to be double-word aligned. + +

As in the preceding examples, you can explicitly specify the alignment +(in bytes) that you wish the compiler to use for a given variable or +structure field. Alternatively, you can leave out the alignment factor +and just ask the compiler to align a variable or field to the maximum +useful alignment for the target machine you are compiling for. For +example, you could write: + +

          short array[3] __attribute__ ((aligned));
+     
+

Whenever you leave out the alignment factor in an aligned attribute +specification, the compiler automatically sets the alignment for the declared +variable or field to the largest alignment which is ever used for any data +type on the target machine you are compiling for. Doing this can often make +copy operations more efficient, because the compiler can use whatever +instructions copy the biggest chunks of memory when performing copies to +or from the variables or fields that you have aligned this way. + +

When used on a struct, or struct member, the aligned attribute can +only increase the alignment; in order to decrease it, the packed +attribute must be specified as well. When used as part of a typedef, the +aligned attribute can both increase and decrease alignment, and +specifying the packed attribute will generate a warning. + +

Note that the effectiveness of aligned attributes may be limited +by inherent limitations in your linker. On many systems, the linker is +only able to arrange for variables to be aligned up to a certain maximum +alignment. (For some linkers, the maximum supported alignment may +be very very small.) If your linker is only able to align variables +up to a maximum of 8 byte alignment, then specifying aligned(16) +in an __attribute__ will still only provide you with 8 byte +alignment. See your linker documentation for further information. + +

The aligned attribute can also be used for functions +(see Function Attributes.) + +

cleanup (cleanup_function)
The cleanup attribute runs a function when the variable goes +out of scope. This attribute can only be applied to auto function +scope variables; it may not be applied to parameters or variables +with static storage duration. The function must take one parameter, +a pointer to a type compatible with the variable. The return value +of the function (if any) is ignored. + +

If -fexceptions is enabled, then cleanup_function +will be run during the stack unwinding that happens during the +processing of the exception. Note that the cleanup attribute +does not allow the exception to be caught, only to perform an action. +It is undefined what happens if cleanup_function does not +return normally. + +

common
nocommon
The common attribute requests GCC to place a variable in +“common” storage. The nocommon attribute requests the +opposite—to allocate space for it directly. + +

These attributes override the default chosen by the +-fno-common and -fcommon flags respectively. + +

deprecated
The deprecated attribute results in a warning if the variable +is used anywhere in the source file. This is useful when identifying +variables that are expected to be removed in a future version of a +program. The warning also includes the location of the declaration +of the deprecated variable, to enable users to easily find further +information about why the variable is deprecated, or what they should +do instead. Note that the warning only occurs for uses: + +
          extern int old_var __attribute__ ((deprecated));
+          extern int old_var;
+          int new_fn () { return old_var; }
+     
+

results in a warning on line 3 but not line 2. + +

The deprecated attribute can also be used for functions and +types (see Function Attributes, see Type Attributes.) + +

mode (mode)
This attribute specifies the data type for the declaration—whichever +type corresponds to the mode mode. This in effect lets you +request an integer or floating point type according to its width. + +

You may also specify a mode of byte or __byte__ to +indicate the mode corresponding to a one-byte integer, word or +__word__ for the mode of a one-word integer, and pointer +or __pointer__ for the mode used to represent pointers. + +

packed
The packed attribute specifies that a variable or structure field +should have the smallest possible alignment—one byte for a variable, +and one bit for a field, unless you specify a larger value with the +aligned attribute. + +

Here is a structure in which the field x is packed, so that it +immediately follows a: + +

          struct foo
+          {
+            char a;
+            int x[2] __attribute__ ((packed));
+          };
+     
+
section ("section-name")
Normally, the compiler places the objects it generates in sections like +data and bss. Sometimes, however, you need additional sections, +or you need certain particular variables to appear in special sections, +for example to map to special hardware. The section +attribute specifies that a variable (or function) lives in a particular +section. For example, this small program uses several specific section names: + +
          struct duart a __attribute__ ((section ("DUART_A"))) = { 0 };
+          struct duart b __attribute__ ((section ("DUART_B"))) = { 0 };
+          char stack[10000] __attribute__ ((section ("STACK"))) = { 0 };
+          int init_data __attribute__ ((section ("INITDATA"))) = 0;
+          
+          main()
+          {
+            /* Initialize stack pointer */
+            init_sp (stack + sizeof (stack));
+          
+            /* Initialize initialized data */
+            memcpy (&init_data, &data, &edata - &data);
+          
+            /* Turn on the serial ports */
+            init_duart (&a);
+            init_duart (&b);
+          }
+     
+

Use the section attribute with an initialized definition +of a global variable, as shown in the example. GCC issues +a warning and otherwise ignores the section attribute in +uninitialized variable declarations. + +

You may only use the section attribute with a fully initialized +global definition because of the way linkers work. The linker requires +each object be defined once, with the exception that uninitialized +variables tentatively go in the common (or bss) section +and can be multiply “defined”. You can force a variable to be +initialized with the -fno-common flag or the nocommon +attribute. + +

Some file formats do not support arbitrary sections so the section +attribute is not available on all platforms. +If you need to map the entire contents of a module to a particular +section, consider using the facilities of the linker instead. + +

shared
On Microsoft Windows, in addition to putting variable definitions in a named +section, the section can also be shared among all running copies of an +executable or DLL. For example, this small program defines shared data +by putting it in a named section shared and marking the section +shareable: + +
          int foo __attribute__((section ("shared"), shared)) = 0;
+          
+          int
+          main()
+          {
+            /* Read and write foo.  All running
+               copies see the same value.  */
+            return 0;
+          }
+     
+

You may only use the shared attribute along with section +attribute with a fully initialized global definition because of the way +linkers work. See section attribute for more information. + +

The shared attribute is only available on Microsoft Windows. + +

tls_model ("tls_model")
The tls_model attribute sets thread-local storage model +(see Thread-Local) of a particular __thread variable, +overriding -ftls-model= command line switch on a per-variable +basis. +The tls_model argument should be one of global-dynamic, +local-dynamic, initial-exec or local-exec. + +

Not all targets support this attribute. + +

unused
This attribute, attached to a variable, means that the variable is meant +to be possibly unused. GCC will not produce a warning for this +variable. + +
used
This attribute, attached to a variable, means that the variable must be +emitted even if it appears that the variable is not referenced. + +
vector_size (bytes)
This attribute specifies the vector size for the variable, measured in +bytes. For example, the declaration: + +
          int foo __attribute__ ((vector_size (16)));
+     
+

causes the compiler to set the mode for foo, to be 16 bytes, +divided into int sized units. Assuming a 32-bit int (a vector of +4 units of 4 bytes), the corresponding mode of foo will be V4SI. + +

This attribute is only applicable to integral and float scalars, +although arrays, pointers, and function return values are allowed in +conjunction with this construct. + +

Aggregates with this attribute are invalid, even if they are of the same +size as a corresponding scalar. For example, the declaration: + +

          struct S { int a; };
+          struct S  __attribute__ ((vector_size (16))) foo;
+     
+

is invalid even if the size of the structure is the same as the size of +the int. + +

selectany
The selectany attribute causes an initialized global variable to +have link-once semantics. When multiple definitions of the variable are +encountered by the linker, the first is selected and the remainder are +discarded. Following usage by the Microsoft compiler, the linker is told +not to warn about size or content differences of the multiple +definitions. + +

Although the primary usage of this attribute is for POD types, the +attribute can also be applied to global C++ objects that are initialized +by a constructor. In this case, the static initialization and destruction +code for the object is emitted in each translation defining the object, +but the calls to the constructor and destructor are protected by a +link-once guard variable. + +

The selectany attribute is only available on Microsoft Windows +targets. You can use __declspec (selectany) as a synonym for +__attribute__ ((selectany)) for compatibility with other +compilers. + +

weak
The weak attribute is described in See Function Attributes. + +
dllimport
The dllimport attribute is described in See Function Attributes. + +
dllexport
The dllexport attribute is described in See Function Attributes. + +
+ +

5.34.1 Blackfin Variable Attributes

+ +

Three attributes are currently defined for the Blackfin. + +

+
l1_data
l1_data_A
l1_data_B
Use these attributes on the Blackfin to place the variable into L1 Data SRAM. +Variables with l1_data attribute will be put into the specific section +named .l1.data. Those with l1_data_A attribute will be put into +the specific section named .l1.data.A. Those with l1_data_B +attribute will be put into the specific section named .l1.data.B. +
+ +

5.34.2 M32R/D Variable Attributes

+ +

One attribute is currently defined for the M32R/D. + +

+
model (model-name)
Use this attribute on the M32R/D to set the addressability of an object. +The identifier model-name is one of small, medium, +or large, representing each of the code models. + +

Small model objects live in the lower 16MB of memory (so that their +addresses can be loaded with the ld24 instruction). + +

Medium and large model objects may live anywhere in the 32-bit address space +(the compiler will generate seth/add3 instructions to load their +addresses). +

+ +

+ +

5.34.3 i386 Variable Attributes

+ +

Two attributes are currently defined for i386 configurations: +ms_struct and gcc_struct + +

+
ms_struct
gcc_struct
+If packed is used on a structure, or if bit-fields are used +it may be that the Microsoft ABI packs them differently +than GCC would normally pack them. Particularly when moving packed +data between functions compiled with GCC and the native Microsoft compiler +(either via function call or as data in a file), it may be necessary to access +either format. + +

Currently -m[no-]ms-bitfields is provided for the Microsoft Windows X86 +compilers to match the native Microsoft compiler. + +

The Microsoft structure layout algorithm is fairly simple with the exception +of the bitfield packing: + +

The padding and alignment of members of structures and whether a bit field +can straddle a storage-unit boundary + +

    +
  1. Structure members are stored sequentially in the order in which they are +declared: the first member has the lowest memory address and the last member +the highest. + +
  2. Every data object has an alignment-requirement. The alignment-requirement +for all data except structures, unions, and arrays is either the size of the +object or the current packing size (specified with either the aligned attribute +or the pack pragma), whichever is less. For structures, unions, and arrays, +the alignment-requirement is the largest alignment-requirement of its members. +Every object is allocated an offset so that: + +

    offset % alignment-requirement == 0 + +

  3. Adjacent bit fields are packed into the same 1-, 2-, or 4-byte allocation +unit if the integral types are the same size and if the next bit field fits +into the current allocation unit without crossing the boundary imposed by the +common alignment requirements of the bit fields. +
+ +

Handling of zero-length bitfields: + +

MSVC interprets zero-length bitfields in the following ways: + +

    +
  1. If a zero-length bitfield is inserted between two bitfields that would +normally be coalesced, the bitfields will not be coalesced. + +

    For example: + +

                   struct
    +                {
    +                  unsigned long bf_1 : 12;
    +                  unsigned long : 0;
    +                  unsigned long bf_2 : 12;
    +                } t1;
    +          
    +

    The size of t1 would be 8 bytes with the zero-length bitfield. If the +zero-length bitfield were removed, t1's size would be 4 bytes. + +

  2. If a zero-length bitfield is inserted after a bitfield, foo, and the +alignment of the zero-length bitfield is greater than the member that follows it, +bar, bar will be aligned as the type of the zero-length bitfield. + +

    For example: + +

                   struct
    +                {
    +                  char foo : 4;
    +                  short : 0;
    +                  char bar;
    +                } t2;
    +               
    +               struct
    +                {
    +                  char foo : 4;
    +                  short : 0;
    +                  double bar;
    +                } t3;
    +          
    +

    For t2, bar will be placed at offset 2, rather than offset 1. +Accordingly, the size of t2 will be 4. For t3, the zero-length +bitfield will not affect the alignment of bar or, as a result, the size +of the structure. + +

    Taking this into account, it is important to note the following: + +

      +
    1. If a zero-length bitfield follows a normal bitfield, the type of the +zero-length bitfield may affect the alignment of the structure as whole. For +example, t2 has a size of 4 bytes, since the zero-length bitfield follows a +normal bitfield, and is of type short. + +
    2. Even if a zero-length bitfield is not followed by a normal bitfield, it may +still affect the alignment of the structure: + +
                          struct
      +                     {
      +                       char foo : 6;
      +                       long : 0;
      +                     } t4;
      +               
      +

      Here, t4 will take up 4 bytes. +

    + +
  3. Zero-length bitfields following non-bitfield members are ignored: + +
                   struct
    +                {
    +                  char foo;
    +                  long : 0;
    +                  char bar;
    +                } t5;
    +          
    +

    Here, t5 will take up 2 bytes. +

+
+ +

5.34.4 PowerPC Variable Attributes

+ +

Three attributes currently are defined for PowerPC configurations: +altivec, ms_struct and gcc_struct. + +

For full documentation of the struct attributes please see the +documentation in the See i386 Variable Attributes, section. + +

For documentation of altivec attribute please see the +documentation in the See PowerPC Type Attributes, section. + +

5.34.5 SPU Variable Attributes

+ +

The SPU supports the spu_vector attribute for variables. For +documentation of this attribute please see the documentation in the +See SPU Type Attributes, section. + +

5.34.6 Xstormy16 Variable Attributes

+ +

One attribute is currently defined for xstormy16 configurations: +below100 + +

+
below100
+If a variable has the below100 attribute (BELOW100 is +allowed also), GCC will place the variable in the first 0x100 bytes of +memory and use special opcodes to access it. Such variables will be +placed in either the .bss_below100 section or the +.data_below100 section. + +
+ +

5.34.7 AVR Variable Attributes

+ +
+
progmem
The progmem attribute is used on the AVR to place data in the Program +Memory address space. The AVR is a Harvard Architecture processor and data +normally resides in the Data Memory address space. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variable-Length.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variable-Length.html new file mode 100644 index 0000000..5861065 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variable-Length.html @@ -0,0 +1,125 @@ + + +Variable Length - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Zero Length, +Up: C Extensions +



+
+ +

5.16 Arrays of Variable Length

+ +

+Variable-length automatic arrays are allowed in ISO C99, and as an +extension GCC accepts them in C89 mode and in C++. (However, GCC's +implementation of variable-length arrays does not yet conform in detail +to the ISO C99 standard.) These arrays are +declared like any other automatic arrays, but with a length that is not +a constant expression. The storage is allocated at the point of +declaration and deallocated when the brace-level is exited. For +example: + +

     FILE *
+     concat_fopen (char *s1, char *s2, char *mode)
+     {
+       char str[strlen (s1) + strlen (s2) + 1];
+       strcpy (str, s1);
+       strcat (str, s2);
+       return fopen (str, mode);
+     }
+
+

Jumping or breaking out of the scope of the array name deallocates the +storage. Jumping into the scope is not allowed; you get an error +message for it. + +

You can use the function alloca to get an effect much like +variable-length arrays. The function alloca is available in +many other C implementations (but not in all). On the other hand, +variable-length arrays are more elegant. + +

There are other differences between these two methods. Space allocated +with alloca exists until the containing function returns. +The space for a variable-length array is deallocated as soon as the array +name's scope ends. (If you use both variable-length arrays and +alloca in the same function, deallocation of a variable-length array +will also deallocate anything more recently allocated with alloca.) + +

You can also use variable-length arrays as arguments to functions: + +

     struct entry
+     tester (int len, char data[len][len])
+     {
+       /* ... */
+     }
+
+

The length of an array is computed once when the storage is allocated +and is remembered for the scope of the array in case you access it with +sizeof. + +

If you want to pass the array first and the length afterward, you can +use a forward declaration in the parameter list—another GNU extension. + +

     struct entry
+     tester (int len; char data[len][len], int len)
+     {
+       /* ... */
+     }
+
+

The int len before the semicolon is a parameter forward +declaration, and it serves the purpose of making the name len +known when the declaration of data is parsed. + +

You can write any number of such parameter forward declarations in the +parameter list. They can be separated by commas or semicolons, but the +last one must end with a semicolon, which is followed by the “real” +parameter declarations. Each forward declaration must match a “real” +declaration in parameter name and data type. ISO C99 does not support +parameter forward declarations. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variadic-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variadic-Macros.html new file mode 100644 index 0000000..69ba368 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Variadic-Macros.html @@ -0,0 +1,108 @@ + + +Variadic Macros - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Empty Structures, +Up: C Extensions +



+
+ +

5.17 Macros with a Variable Number of Arguments.

+ +

+In the ISO C standard of 1999, a macro can be declared to accept a +variable number of arguments much as a function can. The syntax for +defining the macro is similar to that of a function. Here is an +example: + +

     #define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)
+
+

Here ... is a variable argument. In the invocation of +such a macro, it represents the zero or more tokens until the closing +parenthesis that ends the invocation, including any commas. This set of +tokens replaces the identifier __VA_ARGS__ in the macro body +wherever it appears. See the CPP manual for more information. + +

GCC has long supported variadic macros, and used a different syntax that +allowed you to give a name to the variable arguments just like any other +argument. Here is an example: + +

     #define debug(format, args...) fprintf (stderr, format, args)
+
+

This is in all ways equivalent to the ISO C example above, but arguably +more readable and descriptive. + +

GNU CPP has two further variadic macro extensions, and permits them to +be used with either of the above forms of macro definition. + +

In standard C, you are not allowed to leave the variable argument out +entirely; but you are allowed to pass an empty argument. For example, +this invocation is invalid in ISO C, because there is no comma after +the string: + +

     debug ("A message")
+
+

GNU CPP permits you to completely omit the variable arguments in this +way. In the above examples, the compiler would complain, though since +the expansion of the macro still has the extra comma after the format +string. + +

To help solve this problem, CPP behaves specially for variable arguments +used with the token paste operator, ##. If instead you write + +

     #define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
+
+

and if the variable arguments are omitted or empty, the ## +operator causes the preprocessor to remove the comma before it. If you +do provide some variable arguments in your macro invocation, GNU CPP +does not complain about the paste operation and instead places the +variable arguments after the comma. Just like any other pasted macro +argument, these arguments are not macro expanded. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Vector-Extensions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Vector-Extensions.html new file mode 100644 index 0000000..3a9681f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Vector-Extensions.html @@ -0,0 +1,134 @@ + + +Vector Extensions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Return Address, +Up: C Extensions +



+
+ +

5.45 Using vector instructions through built-in functions

+ +

On some targets, the instruction set contains SIMD vector instructions that +operate on multiple values contained in one large register at the same time. +For example, on the i386 the MMX, 3Dnow! and SSE extensions can be used +this way. + +

The first step in using these extensions is to provide the necessary data +types. This should be done using an appropriate typedef: + +

     typedef int v4si __attribute__ ((vector_size (16)));
+
+

The int type specifies the base type, while the attribute specifies +the vector size for the variable, measured in bytes. For example, the +declaration above causes the compiler to set the mode for the v4si +type to be 16 bytes wide and divided into int sized units. For +a 32-bit int this means a vector of 4 units of 4 bytes, and the +corresponding mode of foo will be V4SI. + +

The vector_size attribute is only applicable to integral and +float scalars, although arrays, pointers, and function return values +are allowed in conjunction with this construct. + +

All the basic integer types can be used as base types, both as signed +and as unsigned: char, short, int, long, +long long. In addition, float and double can be +used to build floating-point vector types. + +

Specifying a combination that is not valid for the current architecture +will cause GCC to synthesize the instructions using a narrower mode. +For example, if you specify a variable of type V4SI and your +architecture does not allow for this specific SIMD type, GCC will +produce code that uses 4 SIs. + +

The types defined in this manner can be used with a subset of normal C +operations. Currently, GCC will allow using the following operators +on these types: +, -, *, /, unary minus, ^, |, &, ~. + +

The operations behave like C++ valarrays. Addition is defined as +the addition of the corresponding elements of the operands. For +example, in the code below, each of the 4 elements in a will be +added to the corresponding 4 elements in b and the resulting +vector will be stored in c. + +

     typedef int v4si __attribute__ ((vector_size (16)));
+     
+     v4si a, b, c;
+     
+     c = a + b;
+
+

Subtraction, multiplication, division, and the logical operations +operate in a similar manner. Likewise, the result of using the unary +minus or complement operators on a vector type is a vector whose +elements are the negative or complemented values of the corresponding +elements in the operand. + +

You can declare variables and use them in function calls and returns, as +well as in assignments and some casts. You can specify a vector type as +a return type for a function. Vector types can also be used as function +arguments. It is possible to cast from one vector type to another, +provided they are of the same size (in fact, you can also cast vectors +to and from other datatypes of the same size). + +

You cannot operate between vectors of different lengths or different +signedness without a cast. + +

A port that supports hardware vector operations, usually provides a set +of built-in functions that can be used to operate on vectors. For +example, a function to add two vectors and multiply the result by a +third could look like this: + +

     v4si f (v4si a, v4si b, v4si c)
+     {
+       v4si tmp = __builtin_addv4si (a, b);
+       return __builtin_mulv4si (tmp, c);
+     }
+     
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Visibility-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Visibility-Pragmas.html new file mode 100644 index 0000000..e163b78 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Visibility-Pragmas.html @@ -0,0 +1,70 @@ + + +Visibility Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Diagnostic Pragmas, +Up: Pragmas +



+
+ +

5.52.10 Visibility Pragmas

+ +
+
#pragma GCC visibility push(visibility)
#pragma GCC visibility pop
+This pragma allows the user to set the visibility for multiple +declarations without having to give each a visibility attribute +See Function Attributes, for more information about visibility and +the attribute syntax. + +

In C++, #pragma GCC visibility affects only namespace-scope +declarations. Class members and template specializations are not +affected; if you want to override the visibility for a particular +member or instantiation, you must use an attribute. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Volatiles.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Volatiles.html new file mode 100644 index 0000000..6a1eaa4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Volatiles.html @@ -0,0 +1,101 @@ + + +Volatiles - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Next: , +Up: C++ Extensions +



+
+ +

6.1 When is a Volatile Object Accessed?

+ +

+Both the C and C++ standard have the concept of volatile objects. These +are normally accessed by pointers and used for accessing hardware. The +standards encourage compilers to refrain from optimizations concerning +accesses to volatile objects. The C standard leaves it implementation +defined as to what constitutes a volatile access. The C++ standard omits +to specify this, except to say that C++ should behave in a similar manner +to C with respect to volatiles, where possible. The minimum either +standard specifies is that at a sequence point all previous accesses to +volatile objects have stabilized and no subsequent accesses have +occurred. Thus an implementation is free to reorder and combine +volatile accesses which occur between sequence points, but cannot do so +for accesses across a sequence point. The use of volatiles does not +allow you to violate the restriction on updating objects multiple times +within a sequence point. + +

See Volatile qualifier and the C compiler. + +

The behavior differs slightly between C and C++ in the non-obvious cases: + +

     volatile int *src = somevalue;
+     *src;
+
+

With C, such expressions are rvalues, and GCC interprets this either as a +read of the volatile object being pointed to or only as request to evaluate +the side-effects. The C++ standard specifies that such expressions do not +undergo lvalue to rvalue conversion, and that the type of the dereferenced +object may be incomplete. The C++ standard does not specify explicitly +that it is this lvalue to rvalue conversion which may be responsible for +causing an access. However, there is reason to believe that it is, +because otherwise certain simple expressions become undefined. However, +because it would surprise most programmers, G++ treats dereferencing a +pointer to volatile object of complete type when the value is unused as +GCC would do for an equivalent type in C. When the object has incomplete +type, G++ issues a warning; if you wish to force an error, you must +force a conversion to rvalue with, for instance, a static cast. + +

When using a reference to volatile, G++ does not treat equivalent +expressions as accesses to volatiles, but instead issues a warning that +no volatile is accessed. The rationale for this is that otherwise it +becomes difficult to determine where volatile access occur, and not +possible to ignore the return value from functions returning volatile +references. Again, if you wish to force a read, cast the reference to +an rvalue. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/VxWorks-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/VxWorks-Options.html new file mode 100644 index 0000000..d499d99 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/VxWorks-Options.html @@ -0,0 +1,83 @@ + + +VxWorks Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: VAX Options, +Up: Submodel Options +



+
+ +

3.17.36 VxWorks Options

+ +

+The options in this section are defined for all VxWorks targets. +Options specific to the target hardware are listed with the other +options for that target. + +

+
-mrtp
GCC can generate code for both VxWorks kernels and real time processes +(RTPs). This option switches from the former to the latter. It also +defines the preprocessor macro __RTP__. + +
-non-static
Link an RTP executable against shared libraries rather than static +libraries. The options -static and -shared can +also be used for RTPs (see Link Options); -static +is the default. + +
-Bstatic
-Bdynamic
These options are passed down to the linker. They are defined for +compatibility with Diab. + +
-Xbind-lazy
Enable lazy binding of function calls. This option is equivalent to +-Wl,-z,now and is defined for compatibility with Diab. + +
-Xbind-now
Disable lazy binding of function calls. This option is the default and +is defined for compatibility with Diab. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Warning-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Warning-Options.html new file mode 100644 index 0000000..bcc08b5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Warning-Options.html @@ -0,0 +1,1171 @@ + + +Warning Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + + +

3.8 Options to Request or Suppress Warnings

+ +

+Warnings are diagnostic messages that report constructions which +are not inherently erroneous but which are risky or suggest there +may have been an error. + +

The following language-independent options do not enable specific +warnings but control the kinds of diagnostics produced by GCC. + + + +

-fsyntax-only
Check the code for syntax errors, but don't do anything beyond that. + +
-w
Inhibit all warning messages. + +
-Werror
Make all warnings into errors. + +
-Werror=
Make the specified warning into an error. The specifier for a warning +is appended, for example -Werror=switch turns the warnings +controlled by -Wswitch into errors. This switch takes a +negative form, to be used to negate -Werror for specific +warnings, for example -Wno-error=switch makes +-Wswitch warnings not be errors, even when -Werror +is in effect. You can use the -fdiagnostics-show-option +option to have each controllable warning amended with the option which +controls it, to determine what to use with this option. + +

Note that specifying -Werror=foo automatically implies +-Wfoo. However, -Wno-error=foo does not +imply anything. + +

-Wfatal-errors
This option causes the compiler to abort compilation on the first error +occurred rather than trying to keep going and printing further error +messages. + +
+ +

You can request many specific warnings with options beginning +-W, for example -Wimplicit to request warnings on +implicit declarations. Each of these specific warning options also +has a negative form beginning -Wno- to turn off warnings; for +example, -Wno-implicit. This manual lists only one of the +two forms, whichever is not the default. For further, +language-specific options also refer to C++ Dialect Options and +Objective-C and Objective-C++ Dialect Options. + +

+
-pedantic
Issue all the warnings demanded by strict ISO C and ISO C++; +reject all programs that use forbidden extensions, and some other +programs that do not follow ISO C and ISO C++. For ISO C, follows the +version of the ISO C standard specified by any -std option used. + +

Valid ISO C and ISO C++ programs should compile properly with or without +this option (though a rare few will require -ansi or a +-std option specifying the required version of ISO C). However, +without this option, certain GNU extensions and traditional C and C++ +features are supported as well. With this option, they are rejected. + +

-pedantic does not cause warning messages for use of the +alternate keywords whose names begin and end with __. Pedantic +warnings are also disabled in the expression that follows +__extension__. However, only system header files should use +these escape routes; application programs should avoid them. +See Alternate Keywords. + +

Some users try to use -pedantic to check programs for strict ISO +C conformance. They soon find that it does not do quite what they want: +it finds some non-ISO practices, but not all—only those for which +ISO C requires a diagnostic, and some others for which +diagnostics have been added. + +

A feature to report any failure to conform to ISO C might be useful in +some instances, but would require considerable additional work and would +be quite different from -pedantic. We don't have plans to +support such a feature in the near future. + +

Where the standard specified with -std represents a GNU +extended dialect of C, such as gnu89 or gnu99, there is a +corresponding base standard, the version of ISO C on which the GNU +extended dialect is based. Warnings from -pedantic are given +where they are required by the base standard. (It would not make sense +for such warnings to be given only for features not in the specified GNU +C dialect, since by definition the GNU dialects of C include all +features the compiler supports with the given option, and there would be +nothing to warn about.) + +

-pedantic-errors
Like -pedantic, except that errors are produced rather than +warnings. + +
-Wall
This enables all the warnings about constructions that some users +consider questionable, and that are easy to avoid (or modify to +prevent the warning), even in conjunction with macros. This also +enables some language-specific warnings described in C++ Dialect Options and Objective-C and Objective-C++ Dialect Options. + +

-Wall turns on the following warning flags: + +

          -Waddress   
+          -Warray-bounds (only with -O2)  
+          -Wc++0x-compat  
+          -Wchar-subscripts  
+          -Wimplicit-int  
+          -Wimplicit-function-declaration  
+          -Wcomment  
+          -Wformat   
+          -Wmain (only for C/ObjC and unless -ffreestanding)  
+          -Wmissing-braces  
+          -Wnonnull  
+          -Wparentheses  
+          -Wpointer-sign  
+          -Wreorder   
+          -Wreturn-type  
+          -Wsequence-point  
+          -Wsign-compare (only in C++)  
+          -Wstrict-aliasing  
+          -Wstrict-overflow=1  
+          -Wswitch  
+          -Wtrigraphs  
+          -Wuninitialized (only with -O1 and above)  
+          -Wunknown-pragmas  
+          -Wunused-function  
+          -Wunused-label     
+          -Wunused-value     
+          -Wunused-variable  
+          
+     
+

Note that some warning flags are not implied by -Wall. Some of +them warn about constructions that users generally do not consider +questionable, but which occasionally you might wish to check for; +others warn about constructions that are necessary or hard to avoid in +some cases, and there is no simple way to modify the code to suppress +the warning. Some of them are enabled by -Wextra but many of +them must be enabled individually. + +

-Wextra
This enables some extra warning flags that are not enabled by +-Wall. (This option used to be called -W. The older +name is still supported, but the newer name is more descriptive.) + +
          -Wclobbered  
+          -Wempty-body  
+          -Wignored-qualifiers 
+          -Wmissing-field-initializers  
+          -Wmissing-parameter-type (C only)  
+          -Wold-style-declaration (C only)  
+          -Woverride-init  
+          -Wsign-compare  
+          -Wtype-limits  
+          -Wuninitialized (only with -O1 and above)  
+          -Wunused-parameter (only with -Wunused or -Wall)  
+          
+     
+

The option -Wextra also prints warning messages for the +following cases: + +

    +
  • A pointer is compared against integer zero with <, <=, +>, or >=. + +
  • (C++ only) An enumerator and a non-enumerator both appear in a +conditional expression. + +
  • (C++ only) A non-static reference or non-static const member +appears in a class without constructors. + +
  • (C++ only) Ambiguous virtual bases. + +
  • (C++ only) Subscripting an array which has been declared register. + +
  • (C++ only) Taking the address of a variable which has been declared +register. + +
  • (C++ only) A base class is not initialized in a derived class' copy +constructor. + +
+ +
-Wno-import
Inhibit warning messages about the use of #import. + +
-Wchar-subscripts
Warn if an array subscript has type char. This is a common cause +of error, as programmers often forget that this type is signed on some +machines. +This warning is enabled by -Wall. + +
-Wcomment
Warn whenever a comment-start sequence /* appears in a /* +comment, or whenever a Backslash-Newline appears in a // comment. +This warning is enabled by -Wall. + +
-Wformat
Check calls to printf and scanf, etc., to make sure that +the arguments supplied have types appropriate to the format string +specified, and that the conversions specified in the format string make +sense. This includes standard functions, and others specified by format +attributes (see Function Attributes), in the printf, +scanf, strftime and strfmon (an X/Open extension, +not in the C standard) families (or other target-specific families). +Which functions are checked without format attributes having been +specified depends on the standard version selected, and such checks of +functions without the attribute specified are disabled by +-ffreestanding or -fno-builtin. + +

The formats are checked against the format features supported by GNU +libc version 2.2. These include all ISO C90 and C99 features, as well +as features from the Single Unix Specification and some BSD and GNU +extensions. Other library implementations may not support all these +features; GCC does not support warning about features that go beyond a +particular library's limitations. However, if -pedantic is used +with -Wformat, warnings will be given about format features not +in the selected standard version (but not for strfmon formats, +since those are not in any version of the C standard). See Options Controlling C Dialect. + +

Since -Wformat also checks for null format arguments for +several functions, -Wformat also implies -Wnonnull. + +

-Wformat is included in -Wall. For more control over some +aspects of format checking, the options -Wformat-y2k, +-Wno-format-extra-args, -Wno-format-zero-length, +-Wformat-nonliteral, -Wformat-security, and +-Wformat=2 are available, but are not included in -Wall. + +

-Wformat-y2k
If -Wformat is specified, also warn about strftime +formats which may yield only a two-digit year. + +
-Wno-format-extra-args
If -Wformat is specified, do not warn about excess arguments to a +printf or scanf format function. The C standard specifies +that such arguments are ignored. + +

Where the unused arguments lie between used arguments that are +specified with $ operand number specifications, normally +warnings are still given, since the implementation could not know what +type to pass to va_arg to skip the unused arguments. However, +in the case of scanf formats, this option will suppress the +warning if the unused arguments are all pointers, since the Single +Unix Specification says that such unused arguments are allowed. + +

-Wno-format-zero-length (C and Objective-C only)
If -Wformat is specified, do not warn about zero-length formats. +The C standard specifies that zero-length formats are allowed. + +
-Wformat-nonliteral
If -Wformat is specified, also warn if the format string is not a +string literal and so cannot be checked, unless the format function +takes its format arguments as a va_list. + +
-Wformat-security
If -Wformat is specified, also warn about uses of format +functions that represent possible security problems. At present, this +warns about calls to printf and scanf functions where the +format string is not a string literal and there are no format arguments, +as in printf (foo);. This may be a security hole if the format +string came from untrusted input and contains %n. (This is +currently a subset of what -Wformat-nonliteral warns about, but +in future warnings may be added to -Wformat-security that are not +included in -Wformat-nonliteral.) + +
-Wformat=2
Enable -Wformat plus format checks not included in +-Wformat. Currently equivalent to -Wformat +-Wformat-nonliteral -Wformat-security -Wformat-y2k. + +
-Wnonnull (C and Objective-C only)
Warn about passing a null pointer for arguments marked as +requiring a non-null value by the nonnull function attribute. + +

-Wnonnull is included in -Wall and -Wformat. It +can be disabled with the -Wno-nonnull option. + +

-Winit-self (C, C++, Objective-C and Objective-C++ only)
Warn about uninitialized variables which are initialized with themselves. +Note this option can only be used with the -Wuninitialized option, +which in turn only works with -O1 and above. + +

For example, GCC will warn about i being uninitialized in the +following snippet only when -Winit-self has been specified: +

          int f()
+          {
+            int i = i;
+            return i;
+          }
+     
+
-Wimplicit-int (C and Objective-C only)
Warn when a declaration does not specify a type. +This warning is enabled by -Wall. + +
-Wimplicit-function-declaration (C and Objective-C only)
Give a warning whenever a function is used before being declared. In +C99 mode (-std=c99 or -std=gnu99), this warning is +enabled by default and it is made into an error by +-pedantic-errors. This warning is also enabled by +-Wall. + +
-Wimplicit
Same as -Wimplicit-int and -Wimplicit-function-declaration. +This warning is enabled by -Wall. + +
-Wignored-qualifiers (C and C++ only)
Warn if the return type of a function has a type qualifier +such as const. For ISO C such a type qualifier has no effect, +since the value returned by a function is not an lvalue. +For C++, the warning is only emitted for scalar types or void. +ISO C prohibits qualified void return types on function +definitions, so such return types always receive a warning +even without this option. + +

This warning is also enabled by -Wextra. + +

-Wmain
Warn if the type of main is suspicious. main should be a +function with external linkage, returning int, taking either zero +arguments, two, or three arguments of appropriate types. +This warning is enabled by -Wall. + +
-Wmissing-braces
Warn if an aggregate or union initializer is not fully bracketed. In +the following example, the initializer for a is not fully +bracketed, but that for b is fully bracketed. + +
          int a[2][2] = { 0, 1, 2, 3 };
+          int b[2][2] = { { 0, 1 }, { 2, 3 } };
+     
+

This warning is enabled by -Wall. + +

-Wmissing-include-dirs (C, C++, Objective-C and Objective-C++ only)
Warn if a user-supplied include directory does not exist. + +
-Wparentheses
Warn if parentheses are omitted in certain contexts, such +as when there is an assignment in a context where a truth value +is expected, or when operators are nested whose precedence people +often get confused about. + +

Also warn if a comparison like x<=y<=z appears; this is +equivalent to (x<=y ? 1 : 0) <= z, which is a different +interpretation from that of ordinary mathematical notation. + +

Also warn about constructions where there may be confusion to which +if statement an else branch belongs. Here is an example of +such a case: + +

          {
+            if (a)
+              if (b)
+                foo ();
+            else
+              bar ();
+          }
+     
+

In C/C++, every else branch belongs to the innermost possible +if statement, which in this example is if (b). This is +often not what the programmer expected, as illustrated in the above +example by indentation the programmer chose. When there is the +potential for this confusion, GCC will issue a warning when this flag +is specified. To eliminate the warning, add explicit braces around +the innermost if statement so there is no way the else +could belong to the enclosing if. The resulting code would +look like this: + +

          {
+            if (a)
+              {
+                if (b)
+                  foo ();
+                else
+                  bar ();
+              }
+          }
+     
+

This warning is enabled by -Wall. + +

-Wsequence-point
Warn about code that may have undefined semantics because of violations +of sequence point rules in the C and C++ standards. + +

The C and C++ standards defines the order in which expressions in a C/C++ +program are evaluated in terms of sequence points, which represent +a partial ordering between the execution of parts of the program: those +executed before the sequence point, and those executed after it. These +occur after the evaluation of a full expression (one which is not part +of a larger expression), after the evaluation of the first operand of a +&&, ||, ? : or , (comma) operator, before a +function is called (but after the evaluation of its arguments and the +expression denoting the called function), and in certain other places. +Other than as expressed by the sequence point rules, the order of +evaluation of subexpressions of an expression is not specified. All +these rules describe only a partial order rather than a total order, +since, for example, if two functions are called within one expression +with no sequence point between them, the order in which the functions +are called is not specified. However, the standards committee have +ruled that function calls do not overlap. + +

It is not specified when between sequence points modifications to the +values of objects take effect. Programs whose behavior depends on this +have undefined behavior; the C and C++ standards specify that “Between +the previous and next sequence point an object shall have its stored +value modified at most once by the evaluation of an expression. +Furthermore, the prior value shall be read only to determine the value +to be stored.”. If a program breaks these rules, the results on any +particular implementation are entirely unpredictable. + +

Examples of code with undefined behavior are a = a++;, a[n] += b[n++] and a[i++] = i;. Some more complicated cases are not +diagnosed by this option, and it may give an occasional false positive +result, but in general it has been found fairly effective at detecting +this sort of problem in programs. + +

The standard is worded confusingly, therefore there is some debate +over the precise meaning of the sequence point rules in subtle cases. +Links to discussions of the problem, including proposed formal +definitions, may be found on the GCC readings page, at +http://gcc.gnu.org/readings.html. + +

This warning is enabled by -Wall for C and C++. + +

-Wreturn-type
Warn whenever a function is defined with a return-type that defaults +to int. Also warn about any return statement with no +return-value in a function whose return-type is not void +(falling off the end of the function body is considered returning +without a value), and about a return statement with a +expression in a function whose return-type is void. + +

For C++, a function without return type always produces a diagnostic +message, even when -Wno-return-type is specified. The only +exceptions are main and functions defined in system headers. + +

This warning is enabled by -Wall. + +

-Wswitch
Warn whenever a switch statement has an index of enumerated type +and lacks a case for one or more of the named codes of that +enumeration. (The presence of a default label prevents this +warning.) case labels outside the enumeration range also +provoke warnings when this option is used. +This warning is enabled by -Wall. + +
-Wswitch-default
Warn whenever a switch statement does not have a default +case. + +
-Wswitch-enum
Warn whenever a switch statement has an index of enumerated type +and lacks a case for one or more of the named codes of that +enumeration. case labels outside the enumeration range also +provoke warnings when this option is used. + +
-Wtrigraphs
Warn if any trigraphs are encountered that might change the meaning of +the program (trigraphs within comments are not warned about). +This warning is enabled by -Wall. + +
-Wunused-function
Warn whenever a static function is declared but not defined or a +non-inline static function is unused. +This warning is enabled by -Wall. + +
-Wunused-label
Warn whenever a label is declared but not used. +This warning is enabled by -Wall. + +

To suppress this warning use the unused attribute +(see Variable Attributes). + +

-Wunused-parameter
Warn whenever a function parameter is unused aside from its declaration. + +

To suppress this warning use the unused attribute +(see Variable Attributes). + +

-Wunused-variable
Warn whenever a local variable or non-constant static variable is unused +aside from its declaration. +This warning is enabled by -Wall. + +

To suppress this warning use the unused attribute +(see Variable Attributes). + +

-Wunused-value
Warn whenever a statement computes a result that is explicitly not +used. To suppress this warning cast the unused expression to +void. This includes an expression-statement or the left-hand +side of a comma expression that contains no side effects. For example, +an expression such as x[i,j] will cause a warning, while +x[(void)i,j] will not. + +

This warning is enabled by -Wall. + +

-Wunused
All the above -Wunused options combined. + +

In order to get a warning about an unused function parameter, you must +either specify -Wextra -Wunused (note that -Wall implies +-Wunused), or separately specify -Wunused-parameter. + +

-Wuninitialized
Warn if an automatic variable is used without first being initialized or +if a variable may be clobbered by a setjmp call. + +

These warnings are possible only in optimizing compilation, +because they require data flow information that is computed only +when optimizing. If you do not specify -O, you will not get +these warnings. Instead, GCC will issue a warning about -Wuninitialized +requiring -O. + +

If you want to warn about code which uses the uninitialized value of the +variable in its own initializer, use the -Winit-self option. + +

These warnings occur for individual uninitialized or clobbered +elements of structure, union or array variables as well as for +variables which are uninitialized or clobbered as a whole. They do +not occur for variables or elements declared volatile. Because +these warnings depend on optimization, the exact variables or elements +for which there are warnings will depend on the precise optimization +options and version of GCC used. + +

Note that there may be no warning about a variable that is used only +to compute a value that itself is never used, because such +computations may be deleted by data flow analysis before the warnings +are printed. + +

These warnings are made optional because GCC is not smart +enough to see all the reasons why the code might be correct +despite appearing to have an error. Here is one example of how +this can happen: + +

          {
+            int x;
+            switch (y)
+              {
+              case 1: x = 1;
+                break;
+              case 2: x = 4;
+                break;
+              case 3: x = 5;
+              }
+            foo (x);
+          }
+     
+

If the value of y is always 1, 2 or 3, then x is +always initialized, but GCC doesn't know this. Here is +another common case: + +

          {
+            int save_y;
+            if (change_y) save_y = y, y = new_y;
+            ...
+            if (change_y) y = save_y;
+          }
+     
+

This has no bug because save_y is used only if it is set. + +

This option also warns when a non-volatile automatic variable might be +changed by a call to longjmp. These warnings as well are possible +only in optimizing compilation. + +

The compiler sees only the calls to setjmp. It cannot know +where longjmp will be called; in fact, a signal handler could +call it at any point in the code. As a result, you may get a warning +even when there is in fact no problem because longjmp cannot +in fact be called at the place which would cause a problem. + +

Some spurious warnings can be avoided if you declare all the functions +you use that never return as noreturn. See Function Attributes. + +

This warning is enabled by -Wall or -Wextra in +optimizing compilations (-O1 and above). + +

-Wunknown-pragmas
Warn when a #pragma directive is encountered which is not understood by +GCC. If this command line option is used, warnings will even be issued +for unknown pragmas in system header files. This is not the case if +the warnings were only enabled by the -Wall command line option. + +
-Wno-pragmas
Do not warn about misuses of pragmas, such as incorrect parameters, +invalid syntax, or conflicts between pragmas. See also +-Wunknown-pragmas. + +
-Wstrict-aliasing
This option is only active when -fstrict-aliasing is active. +It warns about code which might break the strict aliasing rules that the +compiler is using for optimization. The warning does not catch all +cases, but does attempt to catch the more common pitfalls. It is +included in -Wall. +It is equivalent to -Wstrict-aliasing=3 + +
-Wstrict-aliasing=n
This option is only active when -fstrict-aliasing is active. +It warns about code which might break the strict aliasing rules that the +compiler is using for optimization. +Higher levels correspond to higher accuracy (fewer false positives). +Higher levels also correspond to more effort, similar to the way -O works. +-Wstrict-aliasing is equivalent to -Wstrict-aliasing=n, +with n=3. + +

Level 1: Most aggressive, quick, least accurate. +Possibly useful when higher levels +do not warn but -fstrict-aliasing still breaks the code, as it has very few +false negatives. However, it has many false positives. +Warns for all pointer conversions between possibly incompatible types, +even if never dereferenced. Runs in the frontend only. + +

Level 2: Aggressive, quick, not too precise. +May still have many false positives (not as many as level 1 though), +and few false negatives (but possibly more than level 1). +Unlike level 1, it only warns when an address is taken. Warns about +incomplete types. Runs in the frontend only. + +

Level 3 (default for -Wstrict-aliasing): +Should have very few false positives and few false +negatives. Slightly slower than levels 1 or 2 when optimization is enabled. +Takes care of the common punn+dereference pattern in the frontend: +*(int*)&some_float. +If optimization is enabled, it also runs in the backend, where it deals +with multiple statement cases using flow-sensitive points-to information. +Only warns when the converted pointer is dereferenced. +Does not warn about incomplete types. + +

-Wstrict-overflow
-Wstrict-overflow=n
This option is only active when -fstrict-overflow is active. +It warns about cases where the compiler optimizes based on the +assumption that signed overflow does not occur. Note that it does not +warn about all cases where the code might overflow: it only warns +about cases where the compiler implements some optimization. Thus +this warning depends on the optimization level. + +

An optimization which assumes that signed overflow does not occur is +perfectly safe if the values of the variables involved are such that +overflow never does, in fact, occur. Therefore this warning can +easily give a false positive: a warning about code which is not +actually a problem. To help focus on important issues, several +warning levels are defined. No warnings are issued for the use of +undefined signed overflow when estimating how many iterations a loop +will require, in particular when determining whether a loop will be +executed at all. + +

+
-Wstrict-overflow=1
Warn about cases which are both questionable and easy to avoid. For +example: x + 1 > x; with -fstrict-overflow, the +compiler will simplify this to 1. This level of +-Wstrict-overflow is enabled by -Wall; higher levels +are not, and must be explicitly requested. + +
-Wstrict-overflow=2
Also warn about other cases where a comparison is simplified to a +constant. For example: abs (x) >= 0. This can only be +simplified when -fstrict-overflow is in effect, because +abs (INT_MIN) overflows to INT_MIN, which is less than +zero. -Wstrict-overflow (with no level) is the same as +-Wstrict-overflow=2. + +
-Wstrict-overflow=3
Also warn about other cases where a comparison is simplified. For +example: x + 1 > 1 will be simplified to x > 0. + +
-Wstrict-overflow=4
Also warn about other simplifications not covered by the above cases. +For example: (x * 10) / 5 will be simplified to x * 2. + +
-Wstrict-overflow=5
Also warn about cases where the compiler reduces the magnitude of a +constant involved in a comparison. For example: x + 2 > y will +be simplified to x + 1 >= y. This is reported only at the +highest warning level because this simplification applies to many +comparisons, so this warning level will give a very large number of +false positives. +
+ +
-Warray-bounds
This option is only active when -ftree-vrp is active +(default for -O2 and above). It warns about subscripts to arrays +that are always out of bounds. This warning is enabled by -Wall. + +
-Wno-div-by-zero
Do not warn about compile-time integer division by zero. Floating point +division by zero is not warned about, as it can be a legitimate way of +obtaining infinities and NaNs. + +
-Wsystem-headers
Print warning messages for constructs found in system header files. +Warnings from system headers are normally suppressed, on the assumption +that they usually do not indicate real problems and would only make the +compiler output harder to read. Using this command line option tells +GCC to emit warnings from system headers as if they occurred in user +code. However, note that using -Wall in conjunction with this +option will not warn about unknown pragmas in system +headers—for that, -Wunknown-pragmas must also be used. + +
-Wfloat-equal
Warn if floating point values are used in equality comparisons. + +

The idea behind this is that sometimes it is convenient (for the +programmer) to consider floating-point values as approximations to +infinitely precise real numbers. If you are doing this, then you need +to compute (by analyzing the code, or in some other way) the maximum or +likely maximum error that the computation introduces, and allow for it +when performing comparisons (and when producing output, but that's a +different problem). In particular, instead of testing for equality, you +would check to see whether the two values have ranges that overlap; and +this is done with the relational operators, so equality comparisons are +probably mistaken. + +

-Wtraditional (C and Objective-C only)
Warn about certain constructs that behave differently in traditional and +ISO C. Also warn about ISO C constructs that have no traditional C +equivalent, and/or problematic constructs which should be avoided. + +
    +
  • Macro parameters that appear within string literals in the macro body. +In traditional C macro replacement takes place within string literals, +but does not in ISO C. + +
  • In traditional C, some preprocessor directives did not exist. +Traditional preprocessors would only consider a line to be a directive +if the # appeared in column 1 on the line. Therefore +-Wtraditional warns about directives that traditional C +understands but would ignore because the # does not appear as the +first character on the line. It also suggests you hide directives like +#pragma not understood by traditional C by indenting them. Some +traditional implementations would not recognize #elif, so it +suggests avoiding it altogether. + +
  • A function-like macro that appears without arguments. + +
  • The unary plus operator. + +
  • The U integer constant suffix, or the F or L floating point +constant suffixes. (Traditional C does support the L suffix on integer +constants.) Note, these suffixes appear in macros defined in the system +headers of most modern systems, e.g. the _MIN/_MAX macros in <limits.h>. +Use of these macros in user code might normally lead to spurious +warnings, however GCC's integrated preprocessor has enough context to +avoid warning in these cases. + +
  • A function declared external in one block and then used after the end of +the block. + +
  • A switch statement has an operand of type long. + +
  • A non-static function declaration follows a static one. +This construct is not accepted by some traditional C compilers. + +
  • The ISO type of an integer constant has a different width or +signedness from its traditional type. This warning is only issued if +the base of the constant is ten. I.e. hexadecimal or octal values, which +typically represent bit patterns, are not warned about. + +
  • Usage of ISO string concatenation is detected. + +
  • Initialization of automatic aggregates. + +
  • Identifier conflicts with labels. Traditional C lacks a separate +namespace for labels. + +
  • Initialization of unions. If the initializer is zero, the warning is +omitted. This is done under the assumption that the zero initializer in +user code appears conditioned on e.g. __STDC__ to avoid missing +initializer warnings and relies on default initialization to zero in the +traditional C case. + +
  • Conversions by prototypes between fixed/floating point values and vice +versa. The absence of these prototypes when compiling with traditional +C would cause serious problems. This is a subset of the possible +conversion warnings, for the full set use -Wtraditional-conversion. + +
  • Use of ISO C style function definitions. This warning intentionally is +not issued for prototype declarations or variadic functions +because these ISO C features will appear in your code when using +libiberty's traditional C compatibility macros, PARAMS and +VPARAMS. This warning is also bypassed for nested functions +because that feature is already a GCC extension and thus not relevant to +traditional C compatibility. +
+ +
-Wtraditional-conversion (C and Objective-C only)
Warn if a prototype causes a type conversion that is different from what +would happen to the same argument in the absence of a prototype. This +includes conversions of fixed point to floating and vice versa, and +conversions changing the width or signedness of a fixed point argument +except when the same as the default promotion. + +
-Wdeclaration-after-statement (C and Objective-C only)
Warn when a declaration is found after a statement in a block. This +construct, known from C++, was introduced with ISO C99 and is by default +allowed in GCC. It is not supported by ISO C90 and was not supported by +GCC versions before GCC 3.0. See Mixed Declarations. + +
-Wundef
Warn if an undefined identifier is evaluated in an #if directive. + +
-Wno-endif-labels
Do not warn whenever an #else or an #endif are followed by text. + +
-Wshadow
Warn whenever a local variable shadows another local variable, parameter or +global variable or whenever a built-in function is shadowed. + +
-Wlarger-than-len
Warn whenever an object of larger than len bytes is defined. + +
-Wunsafe-loop-optimizations
Warn if the loop cannot be optimized because the compiler could not +assume anything on the bounds of the loop indices. With +-funsafe-loop-optimizations warn if the compiler made +such assumptions. + +
-Wpointer-arith
Warn about anything that depends on the “size of” a function type or +of void. GNU C assigns these types a size of 1, for +convenience in calculations with void * pointers and pointers +to functions. In C++, warn also when an arithmetic operation involves +NULL. This warning is also enabled by -pedantic. + +
-Wtype-limits
Warn if a comparison is always true or always false due to the limited +range of the data type, but do not warn for constant expressions. For +example, warn if an unsigned variable is compared against zero with +< or >=. This warning is also enabled by +-Wextra. + +
-Wbad-function-cast (C and Objective-C only)
Warn whenever a function call is cast to a non-matching type. +For example, warn if int malloc() is cast to anything *. + +
-Wc++-compat (C and Objective-C only)
Warn about ISO C constructs that are outside of the common subset of +ISO C and ISO C++, e.g. request for implicit conversion from +void * to a pointer to non-void type. + +
-Wc++0x-compat (C++ and Objective-C++ only)
Warn about C++ constructs whose meaning differs between ISO C++ 1998 and +ISO C++ 200x, e.g., identifiers in ISO C++ 1998 that will become keywords +in ISO C++ 200x. This warning is enabled by -Wall. + +
-Wcast-qual
Warn whenever a pointer is cast so as to remove a type qualifier from +the target type. For example, warn if a const char * is cast +to an ordinary char *. + +
-Wcast-align
Warn whenever a pointer is cast such that the required alignment of the +target is increased. For example, warn if a char * is cast to +an int * on machines where integers can only be accessed at +two- or four-byte boundaries. + +
-Wwrite-strings
When compiling C, give string constants the type const +char[length] so that +copying the address of one into a non-const char * +pointer will get a warning; when compiling C++, warn about the +deprecated conversion from string literals to char *. This +warning, by default, is enabled for C++ programs. +These warnings will help you find at +compile time code that can try to write into a string constant, but +only if you have been very careful about using const in +declarations and prototypes. Otherwise, it will just be a nuisance; +this is why we did not make -Wall request these warnings. + +
-Wclobbered
Warn for variables that might be changed by longjmp or +vfork. This warning is also enabled by -Wextra. + +
-Wconversion
Warn for implicit conversions that may alter a value. This includes +conversions between real and integer, like abs (x) when +x is double; conversions between signed and unsigned, +like unsigned ui = -1; and conversions to smaller types, like +sqrtf (M_PI). Do not warn for explicit casts like abs +((int) x) and ui = (unsigned) -1, or if the value is not +changed by the conversion like in abs (2.0). Warnings about +conversions between signed and unsigned integers can be disabled by +using -Wno-sign-conversion. + +

For C++, also warn for conversions between NULL and non-pointer +types; confusing overload resolution for user-defined conversions; and +conversions that will never use a type conversion operator: +conversions to void, the same type, a base class or a reference +to them. Warnings about conversions between signed and unsigned +integers are disabled by default in C++ unless +-Wsign-conversion is explicitly enabled. + +

-Wempty-body
Warn if an empty body occurs in an if, else or do +while statement. Additionally, in C++, warn when an empty body occurs +in a while or for statement with no whitespacing before +the semicolon. This warning is also enabled by -Wextra. + +
-Wsign-compare
Warn when a comparison between signed and unsigned values could produce +an incorrect result when the signed value is converted to unsigned. +This warning is also enabled by -Wextra; to get the other warnings +of -Wextra without this warning, use -Wextra -Wno-sign-compare. + +
-Wsign-conversion
Warn for implicit conversions that may change the sign of an integer +value, like assigning a signed integer expression to an unsigned +integer variable. An explicit cast silences the warning. In C, this +option is enabled also by -Wconversion. + +
-Waddress
Warn about suspicious uses of memory addresses. These include using +the address of a function in a conditional expression, such as +void func(void); if (func), and comparisons against the memory +address of a string literal, such as if (x == "abc"). Such +uses typically indicate a programmer error: the address of a function +always evaluates to true, so their use in a conditional usually +indicate that the programmer forgot the parentheses in a function +call; and comparisons against string literals result in unspecified +behavior and are not portable in C, so they usually indicate that the +programmer intended to use strcmp. This warning is enabled by +-Wall. + +
-Wlogical-op
Warn about suspicious uses of logical operators in expressions. +This includes using logical operators in contexts where a +bit-wise operator is likely to be expected. + +
-Waggregate-return
Warn if any functions that return structures or unions are defined or +called. (In languages where you can return an array, this also elicits +a warning.) + +
-Wno-attributes
Do not warn if an unexpected __attribute__ is used, such as +unrecognized attributes, function attributes applied to variables, +etc. This will not stop errors for incorrect use of supported +attributes. + +
-Wstrict-prototypes (C and Objective-C only)
Warn if a function is declared or defined without specifying the +argument types. (An old-style function definition is permitted without +a warning if preceded by a declaration which specifies the argument +types.) + +
-Wold-style-declaration (C and Objective-C only)
Warn for obsolescent usages, according to the C Standard, in a +declaration. For example, warn if storage-class specifiers like +static are not the first things in a declaration. This warning +is also enabled by -Wextra. + +
-Wold-style-definition (C and Objective-C only)
Warn if an old-style function definition is used. A warning is given +even if there is a previous prototype. + +
-Wmissing-parameter-type (C and Objective-C only)
A function parameter is declared without a type specifier in K&R-style +functions: + +
          void foo(bar) { }
+     
+

This warning is also enabled by -Wextra. + +

-Wmissing-prototypes (C and Objective-C only)
Warn if a global function is defined without a previous prototype +declaration. This warning is issued even if the definition itself +provides a prototype. The aim is to detect global functions that fail +to be declared in header files. + +
-Wmissing-declarations
Warn if a global function is defined without a previous declaration. +Do so even if the definition itself provides a prototype. +Use this option to detect global functions that are not declared in +header files. In C++, no warnings are issued for function templates, +or for inline functions, or for functions in anonymous namespaces. + +
-Wmissing-field-initializers
Warn if a structure's initializer has some fields missing. For +example, the following code would cause such a warning, because +x.h is implicitly zero: + +
          struct s { int f, g, h; };
+          struct s x = { 3, 4 };
+     
+

This option does not warn about designated initializers, so the following +modification would not trigger a warning: + +

          struct s { int f, g, h; };
+          struct s x = { .f = 3, .g = 4 };
+     
+

This warning is included in -Wextra. To get other -Wextra +warnings without this one, use -Wextra -Wno-missing-field-initializers. + +

-Wmissing-noreturn
Warn about functions which might be candidates for attribute noreturn. +Note these are only possible candidates, not absolute ones. Care should +be taken to manually verify functions actually do not ever return before +adding the noreturn attribute, otherwise subtle code generation +bugs could be introduced. You will not get a warning for main in +hosted C environments. + +
-Wmissing-format-attribute
Warn about function pointers which might be candidates for format +attributes. Note these are only possible candidates, not absolute ones. +GCC will guess that function pointers with format attributes that +are used in assignment, initialization, parameter passing or return +statements should have a corresponding format attribute in the +resulting type. I.e. the left-hand side of the assignment or +initialization, the type of the parameter variable, or the return type +of the containing function respectively should also have a format +attribute to avoid the warning. + +

GCC will also warn about function definitions which might be +candidates for format attributes. Again, these are only +possible candidates. GCC will guess that format attributes +might be appropriate for any function that calls a function like +vprintf or vscanf, but this might not always be the +case, and some functions for which format attributes are +appropriate may not be detected. + +

-Wno-multichar
Do not warn if a multicharacter constant ('FOOF') is used. +Usually they indicate a typo in the user's code, as they have +implementation-defined values, and should not be used in portable code. + +
-Wnormalized=<none|id|nfc|nfkc>
In ISO C and ISO C++, two identifiers are different if they are +different sequences of characters. However, sometimes when characters +outside the basic ASCII character set are used, you can have two +different character sequences that look the same. To avoid confusion, +the ISO 10646 standard sets out some normalization rules which +when applied ensure that two sequences that look the same are turned into +the same sequence. GCC can warn you if you are using identifiers which +have not been normalized; this option controls that warning. + +

There are four levels of warning that GCC supports. The default is +-Wnormalized=nfc, which warns about any identifier which is +not in the ISO 10646 “C” normalized form, NFC. NFC is the +recommended form for most uses. + +

Unfortunately, there are some characters which ISO C and ISO C++ allow +in identifiers that when turned into NFC aren't allowable as +identifiers. That is, there's no way to use these symbols in portable +ISO C or C++ and have all your identifiers in NFC. +-Wnormalized=id suppresses the warning for these characters. +It is hoped that future versions of the standards involved will correct +this, which is why this option is not the default. + +

You can switch the warning off for all characters by writing +-Wnormalized=none. You would only want to do this if you +were using some other normalization scheme (like “D”), because +otherwise you can easily create bugs that are literally impossible to see. + +

Some characters in ISO 10646 have distinct meanings but look identical +in some fonts or display methodologies, especially once formatting has +been applied. For instance \u207F, “SUPERSCRIPT LATIN SMALL +LETTER N”, will display just like a regular n which has been +placed in a superscript. ISO 10646 defines the NFKC +normalization scheme to convert all these into a standard form as +well, and GCC will warn if your code is not in NFKC if you use +-Wnormalized=nfkc. This warning is comparable to warning +about every identifier that contains the letter O because it might be +confused with the digit 0, and so is not the default, but may be +useful as a local coding convention if the programming environment is +unable to be fixed to display these characters distinctly. + +

-Wno-deprecated-declarations
Do not warn about uses of functions (see Function Attributes), +variables (see Variable Attributes), and types (see Type Attributes) marked as deprecated by using the deprecated +attribute. + +
-Wno-overflow
Do not warn about compile-time overflow in constant expressions. + +
-Woverride-init (C and Objective-C only)
Warn if an initialized field without side effects is overridden when +using designated initializers (see Designated Initializers). + +

This warning is included in -Wextra. To get other +-Wextra warnings without this one, use -Wextra +-Wno-override-init. + +

-Wpacked
Warn if a structure is given the packed attribute, but the packed +attribute has no effect on the layout or size of the structure. +Such structures may be mis-aligned for little benefit. For +instance, in this code, the variable f.x in struct bar +will be misaligned even though struct bar does not itself +have the packed attribute: + +
          struct foo {
+            int x;
+            char a, b, c, d;
+          } __attribute__((packed));
+          struct bar {
+            char z;
+            struct foo f;
+          };
+     
+
-Wpadded
Warn if padding is included in a structure, either to align an element +of the structure or to align the whole structure. Sometimes when this +happens it is possible to rearrange the fields of the structure to +reduce the padding and so make the structure smaller. + +
-Wredundant-decls
Warn if anything is declared more than once in the same scope, even in +cases where multiple declaration is valid and changes nothing. + +
-Wnested-externs (C and Objective-C only)
Warn if an extern declaration is encountered within a function. + +
-Wunreachable-code
Warn if the compiler detects that code will never be executed. + +

This option is intended to warn when the compiler detects that at +least a whole line of source code will never be executed, because +some condition is never satisfied or because it is after a +procedure that never returns. + +

It is possible for this option to produce a warning even though there +are circumstances under which part of the affected line can be executed, +so care should be taken when removing apparently-unreachable code. + +

For instance, when a function is inlined, a warning may mean that the +line is unreachable in only one inlined copy of the function. + +

This option is not made part of -Wall because in a debugging +version of a program there is often substantial code which checks +correct functioning of the program and is, hopefully, unreachable +because the program does work. Another common use of unreachable +code is to provide behavior which is selectable at compile-time. + +

-Winline
Warn if a function can not be inlined and it was declared as inline. +Even with this option, the compiler will not warn about failures to +inline functions declared in system headers. + +

The compiler uses a variety of heuristics to determine whether or not +to inline a function. For example, the compiler takes into account +the size of the function being inlined and the amount of inlining +that has already been done in the current function. Therefore, +seemingly insignificant changes in the source program can cause the +warnings produced by -Winline to appear or disappear. + +

-Wno-invalid-offsetof (C++ and Objective-C++ only)
Suppress warnings from applying the offsetof macro to a non-POD +type. According to the 1998 ISO C++ standard, applying offsetof +to a non-POD type is undefined. In existing C++ implementations, +however, offsetof typically gives meaningful results even when +applied to certain kinds of non-POD types. (Such as a simple +struct that fails to be a POD type only by virtue of having a +constructor.) This flag is for users who are aware that they are +writing nonportable code and who have deliberately chosen to ignore the +warning about it. + +

The restrictions on offsetof may be relaxed in a future version +of the C++ standard. + +

-Wno-int-to-pointer-cast (C and Objective-C only)
Suppress warnings from casts to pointer type of an integer of a +different size. + +
-Wno-pointer-to-int-cast (C and Objective-C only)
Suppress warnings from casts from a pointer to an integer type of a +different size. + +
-Winvalid-pch
Warn if a precompiled header (see Precompiled Headers) is found in +the search path but can't be used. + +
-Wlong-long
Warn if long long type is used. This is default. To inhibit +the warning messages, use -Wno-long-long. Flags +-Wlong-long and -Wno-long-long are taken into account +only when -pedantic flag is used. + +
-Wvariadic-macros
Warn if variadic macros are used in pedantic ISO C90 mode, or the GNU +alternate syntax when in pedantic ISO C99 mode. This is default. +To inhibit the warning messages, use -Wno-variadic-macros. + +
-Wvla
Warn if variable length array is used in the code. +-Wno-vla will prevent the -pedantic warning of +the variable length array. + +
-Wvolatile-register-var
Warn if a register variable is declared volatile. The volatile +modifier does not inhibit all optimizations that may eliminate reads +and/or writes to register variables. + +
-Wdisabled-optimization
Warn if a requested optimization pass is disabled. This warning does +not generally indicate that there is anything wrong with your code; it +merely indicates that GCC's optimizers were unable to handle the code +effectively. Often, the problem is that your code is too big or too +complex; GCC will refuse to optimize programs when the optimization +itself is likely to take inordinate amounts of time. + +
-Wpointer-sign (C and Objective-C only)
Warn for pointer argument passing or assignment with different signedness. +This option is only supported for C and Objective-C. It is implied by +-Wall and by -pedantic, which can be disabled with +-Wno-pointer-sign. + +
-Wstack-protector
This option is only active when -fstack-protector is active. It +warns about functions that will not be protected against stack smashing. + +
-Woverlength-strings
Warn about string constants which are longer than the “minimum +maximum” length specified in the C standard. Modern compilers +generally allow string constants which are much longer than the +standard's minimum limit, but very portable programs should avoid +using longer strings. + +

The limit applies after string constant concatenation, and does +not count the trailing NUL. In C89, the limit was 509 characters; in +C99, it was raised to 4095. C++98 does not specify a normative +minimum maximum, so we do not diagnose overlength strings in C++. + +

This option is implied by -pedantic, and can be disabled with +-Wno-overlength-strings. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Warnings-and-Errors.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Warnings-and-Errors.html new file mode 100644 index 0000000..226029a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Warnings-and-Errors.html @@ -0,0 +1,95 @@ + + +Warnings and Errors - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Non-bugs, +Up: Trouble +



+
+ +

10.11 Warning Messages and Error Messages

+ +

The GNU compiler can produce two kinds of diagnostics: errors and +warnings. Each kind has a different purpose: + +

    +
  • Errors report problems that make it impossible to compile your +program. GCC reports errors with the source file name and line +number where the problem is apparent. + +
  • Warnings report other unusual conditions in your code that +may indicate a problem, although compilation can (and does) +proceed. Warning messages also report the source file name and line +number, but include the text warning: to distinguish them +from error messages. +
+ +

Warnings may indicate danger points where you should check to make sure +that your program really does what you intend; or the use of obsolete +features; or the use of nonstandard features of GNU C or C++. Many +warnings are issued only if you ask for them, with one of the -W +options (for instance, -Wall requests a variety of useful +warnings). + +

GCC always tries to compile your program if possible; it never +gratuitously rejects a program whose meaning is clear merely because +(for instance) it fails to conform to a standard. In some cases, +however, the C and C++ standards specify that certain extensions are +forbidden, and a diagnostic must be issued by a conforming +compiler. The -pedantic option tells GCC to issue warnings in +such cases; -pedantic-errors says to make them errors instead. +This does not mean that all non-ISO constructs get warnings +or errors. + +

See Options to Request or Suppress Warnings, for +more detail on these and related command-line options. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Weak-Pragmas.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Weak-Pragmas.html new file mode 100644 index 0000000..7cad4d2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Weak-Pragmas.html @@ -0,0 +1,74 @@ + + +Weak Pragmas - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+

+Next: , +Previous: Structure-Packing Pragmas, +Up: Pragmas +



+
+ +

5.52.8 Weak Pragmas

+ +

For compatibility with SVR4, GCC supports a set of #pragma +directives for declaring symbols to be weak, and defining weak +aliases. + +

+
#pragma weak symbol
This pragma declares symbol to be weak, as if the declaration +had the attribute of the same name. The pragma may appear before +or after the declaration of symbol, but must appear before +either its first use or its definition. It is not an error for +symbol to never be defined at all. + +
#pragma weak symbol1 = symbol2
This pragma declares symbol1 to be a weak alias of symbol2. +It is an error if symbol2 is not defined in the current +translation unit. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/What-you-can-and-what-you-cannot-do-in-_002bload.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/What-you-can-and-what-you-cannot-do-in-_002bload.html new file mode 100644 index 0000000..b906dff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/What-you-can-and-what-you-cannot-do-in-_002bload.html @@ -0,0 +1,106 @@ + + +What you can and what you cannot do in +load - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + + +

7.1.1 What you can and what you cannot do in +load

+ +

The +load implementation in the GNU runtime guarantees you the following +things: + +

    +
  • you can write whatever C code you like; + +
  • you can send messages to Objective-C constant strings (@"this is a +constant string"); + +
  • you can allocate and send messages to objects whose class is implemented +in the same file; + +
  • the +load implementation of all super classes of a class are executed before the +load of that class is executed; + +
  • the +load implementation of a class is executed before the ++load implementation of any category. + +
+ +

In particular, the following things, even if they can work in a +particular case, are not guaranteed: + +

    +
  • allocation of or sending messages to arbitrary objects; + +
  • allocation of or sending messages to objects whose classes have a +category implemented in the same file; + +
+ +

You should make no assumptions about receiving +load in sibling +classes when you write +load of a class. The order in which +sibling classes receive +load is not guaranteed. + +

The order in which +load and +initialize are called could +be problematic if this matters. If you don't allocate objects inside ++load, it is guaranteed that +load is called before ++initialize. If you create an object inside +load the ++initialize method of object's class is invoked even if ++load was not invoked. Note if you explicitly call +load +on a class, +initialize will be called first. To avoid possible +problems try to implement only one of these methods. + +

The +load method is also invoked when a bundle is dynamically +loaded into your running program. This happens automatically without any +intervening operation from you. When you write bundles and you need to +write +load you can safely create and send messages to objects whose +classes already exist in the running program. The same restrictions as +above apply to classes defined in bundle. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Wtrigraphs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Wtrigraphs.html new file mode 100644 index 0000000..098c9eb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Wtrigraphs.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/X86-Built_002din-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/X86-Built_002din-Functions.html new file mode 100644 index 0000000..c6b6d9f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/X86-Built_002din-Functions.html @@ -0,0 +1,833 @@ + + +X86 Built-in Functions - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +

+ +

5.50.6 X86 Built-in Functions

+ +

These built-in functions are available for the i386 and x86-64 family +of computers, depending on the command-line switches used. + +

Note that, if you specify command-line switches such as -msse, +the compiler could use the extended instruction sets even if the built-ins +are not used explicitly in the program. For this reason, applications +which perform runtime CPU detection must compile separate files for each +supported architecture, using the appropriate flags. In particular, +the file containing the CPU detection code should be compiled without +these options. + +

The following machine modes are available for use with MMX built-in functions +(see Vector Extensions): V2SI for a vector of two 32-bit integers, +V4HI for a vector of four 16-bit integers, and V8QI for a +vector of eight 8-bit integers. Some of the built-in functions operate on +MMX registers as a whole 64-bit entity, these use DI as their mode. + +

If 3Dnow extensions are enabled, V2SF is used as a mode for a vector +of two 32-bit floating point values. + +

If SSE extensions are enabled, V4SF is used for a vector of four 32-bit +floating point values. Some instructions use a vector of four 32-bit +integers, these use V4SI. Finally, some instructions operate on an +entire vector register, interpreting it as a 128-bit integer, these use mode +TI. + +

In 64-bit mode, the x86-64 family of processors uses additional built-in +functions for efficient use of TF (__float128) 128-bit +floating point and TC 128-bit complex floating point values. + +

The following floating point built-in functions are available in 64-bit +mode. All of them implement the function that is part of the name. + +

     __float128 __builtin_fabsq (__float128)
+     __float128 __builtin_copysignq (__float128, __float128)
+
+

The following floating point built-in functions are made available in the +64-bit mode. + +

+
__float128 __builtin_infq (void)
Similar to __builtin_inf, except the return type is __float128. +
+ +

The following built-in functions are made available by -mmmx. +All of them generate the machine instruction that is part of the name. + +

     v8qi __builtin_ia32_paddb (v8qi, v8qi)
+     v4hi __builtin_ia32_paddw (v4hi, v4hi)
+     v2si __builtin_ia32_paddd (v2si, v2si)
+     v8qi __builtin_ia32_psubb (v8qi, v8qi)
+     v4hi __builtin_ia32_psubw (v4hi, v4hi)
+     v2si __builtin_ia32_psubd (v2si, v2si)
+     v8qi __builtin_ia32_paddsb (v8qi, v8qi)
+     v4hi __builtin_ia32_paddsw (v4hi, v4hi)
+     v8qi __builtin_ia32_psubsb (v8qi, v8qi)
+     v4hi __builtin_ia32_psubsw (v4hi, v4hi)
+     v8qi __builtin_ia32_paddusb (v8qi, v8qi)
+     v4hi __builtin_ia32_paddusw (v4hi, v4hi)
+     v8qi __builtin_ia32_psubusb (v8qi, v8qi)
+     v4hi __builtin_ia32_psubusw (v4hi, v4hi)
+     v4hi __builtin_ia32_pmullw (v4hi, v4hi)
+     v4hi __builtin_ia32_pmulhw (v4hi, v4hi)
+     di __builtin_ia32_pand (di, di)
+     di __builtin_ia32_pandn (di,di)
+     di __builtin_ia32_por (di, di)
+     di __builtin_ia32_pxor (di, di)
+     v8qi __builtin_ia32_pcmpeqb (v8qi, v8qi)
+     v4hi __builtin_ia32_pcmpeqw (v4hi, v4hi)
+     v2si __builtin_ia32_pcmpeqd (v2si, v2si)
+     v8qi __builtin_ia32_pcmpgtb (v8qi, v8qi)
+     v4hi __builtin_ia32_pcmpgtw (v4hi, v4hi)
+     v2si __builtin_ia32_pcmpgtd (v2si, v2si)
+     v8qi __builtin_ia32_punpckhbw (v8qi, v8qi)
+     v4hi __builtin_ia32_punpckhwd (v4hi, v4hi)
+     v2si __builtin_ia32_punpckhdq (v2si, v2si)
+     v8qi __builtin_ia32_punpcklbw (v8qi, v8qi)
+     v4hi __builtin_ia32_punpcklwd (v4hi, v4hi)
+     v2si __builtin_ia32_punpckldq (v2si, v2si)
+     v8qi __builtin_ia32_packsswb (v4hi, v4hi)
+     v4hi __builtin_ia32_packssdw (v2si, v2si)
+     v8qi __builtin_ia32_packuswb (v4hi, v4hi)
+
+

The following built-in functions are made available either with +-msse, or with a combination of -m3dnow and +-march=athlon. All of them generate the machine +instruction that is part of the name. + +

     v4hi __builtin_ia32_pmulhuw (v4hi, v4hi)
+     v8qi __builtin_ia32_pavgb (v8qi, v8qi)
+     v4hi __builtin_ia32_pavgw (v4hi, v4hi)
+     v4hi __builtin_ia32_psadbw (v8qi, v8qi)
+     v8qi __builtin_ia32_pmaxub (v8qi, v8qi)
+     v4hi __builtin_ia32_pmaxsw (v4hi, v4hi)
+     v8qi __builtin_ia32_pminub (v8qi, v8qi)
+     v4hi __builtin_ia32_pminsw (v4hi, v4hi)
+     int __builtin_ia32_pextrw (v4hi, int)
+     v4hi __builtin_ia32_pinsrw (v4hi, int, int)
+     int __builtin_ia32_pmovmskb (v8qi)
+     void __builtin_ia32_maskmovq (v8qi, v8qi, char *)
+     void __builtin_ia32_movntq (di *, di)
+     void __builtin_ia32_sfence (void)
+
+

The following built-in functions are available when -msse is used. +All of them generate the machine instruction that is part of the name. + +

     int __builtin_ia32_comieq (v4sf, v4sf)
+     int __builtin_ia32_comineq (v4sf, v4sf)
+     int __builtin_ia32_comilt (v4sf, v4sf)
+     int __builtin_ia32_comile (v4sf, v4sf)
+     int __builtin_ia32_comigt (v4sf, v4sf)
+     int __builtin_ia32_comige (v4sf, v4sf)
+     int __builtin_ia32_ucomieq (v4sf, v4sf)
+     int __builtin_ia32_ucomineq (v4sf, v4sf)
+     int __builtin_ia32_ucomilt (v4sf, v4sf)
+     int __builtin_ia32_ucomile (v4sf, v4sf)
+     int __builtin_ia32_ucomigt (v4sf, v4sf)
+     int __builtin_ia32_ucomige (v4sf, v4sf)
+     v4sf __builtin_ia32_addps (v4sf, v4sf)
+     v4sf __builtin_ia32_subps (v4sf, v4sf)
+     v4sf __builtin_ia32_mulps (v4sf, v4sf)
+     v4sf __builtin_ia32_divps (v4sf, v4sf)
+     v4sf __builtin_ia32_addss (v4sf, v4sf)
+     v4sf __builtin_ia32_subss (v4sf, v4sf)
+     v4sf __builtin_ia32_mulss (v4sf, v4sf)
+     v4sf __builtin_ia32_divss (v4sf, v4sf)
+     v4si __builtin_ia32_cmpeqps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpltps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpleps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpgtps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpgeps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpunordps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpneqps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpnltps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpnleps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpngtps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpngeps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpordps (v4sf, v4sf)
+     v4si __builtin_ia32_cmpeqss (v4sf, v4sf)
+     v4si __builtin_ia32_cmpltss (v4sf, v4sf)
+     v4si __builtin_ia32_cmpless (v4sf, v4sf)
+     v4si __builtin_ia32_cmpunordss (v4sf, v4sf)
+     v4si __builtin_ia32_cmpneqss (v4sf, v4sf)
+     v4si __builtin_ia32_cmpnlts (v4sf, v4sf)
+     v4si __builtin_ia32_cmpnless (v4sf, v4sf)
+     v4si __builtin_ia32_cmpordss (v4sf, v4sf)
+     v4sf __builtin_ia32_maxps (v4sf, v4sf)
+     v4sf __builtin_ia32_maxss (v4sf, v4sf)
+     v4sf __builtin_ia32_minps (v4sf, v4sf)
+     v4sf __builtin_ia32_minss (v4sf, v4sf)
+     v4sf __builtin_ia32_andps (v4sf, v4sf)
+     v4sf __builtin_ia32_andnps (v4sf, v4sf)
+     v4sf __builtin_ia32_orps (v4sf, v4sf)
+     v4sf __builtin_ia32_xorps (v4sf, v4sf)
+     v4sf __builtin_ia32_movss (v4sf, v4sf)
+     v4sf __builtin_ia32_movhlps (v4sf, v4sf)
+     v4sf __builtin_ia32_movlhps (v4sf, v4sf)
+     v4sf __builtin_ia32_unpckhps (v4sf, v4sf)
+     v4sf __builtin_ia32_unpcklps (v4sf, v4sf)
+     v4sf __builtin_ia32_cvtpi2ps (v4sf, v2si)
+     v4sf __builtin_ia32_cvtsi2ss (v4sf, int)
+     v2si __builtin_ia32_cvtps2pi (v4sf)
+     int __builtin_ia32_cvtss2si (v4sf)
+     v2si __builtin_ia32_cvttps2pi (v4sf)
+     int __builtin_ia32_cvttss2si (v4sf)
+     v4sf __builtin_ia32_rcpps (v4sf)
+     v4sf __builtin_ia32_rsqrtps (v4sf)
+     v4sf __builtin_ia32_sqrtps (v4sf)
+     v4sf __builtin_ia32_rcpss (v4sf)
+     v4sf __builtin_ia32_rsqrtss (v4sf)
+     v4sf __builtin_ia32_sqrtss (v4sf)
+     v4sf __builtin_ia32_shufps (v4sf, v4sf, int)
+     void __builtin_ia32_movntps (float *, v4sf)
+     int __builtin_ia32_movmskps (v4sf)
+
+

The following built-in functions are available when -msse is used. + +

+
v4sf __builtin_ia32_loadaps (float *)
Generates the movaps machine instruction as a load from memory. +
void __builtin_ia32_storeaps (float *, v4sf)
Generates the movaps machine instruction as a store to memory. +
v4sf __builtin_ia32_loadups (float *)
Generates the movups machine instruction as a load from memory. +
void __builtin_ia32_storeups (float *, v4sf)
Generates the movups machine instruction as a store to memory. +
v4sf __builtin_ia32_loadsss (float *)
Generates the movss machine instruction as a load from memory. +
void __builtin_ia32_storess (float *, v4sf)
Generates the movss machine instruction as a store to memory. +
v4sf __builtin_ia32_loadhps (v4sf, v2si *)
Generates the movhps machine instruction as a load from memory. +
v4sf __builtin_ia32_loadlps (v4sf, v2si *)
Generates the movlps machine instruction as a load from memory +
void __builtin_ia32_storehps (v4sf, v2si *)
Generates the movhps machine instruction as a store to memory. +
void __builtin_ia32_storelps (v4sf, v2si *)
Generates the movlps machine instruction as a store to memory. +
+ +

The following built-in functions are available when -msse2 is used. +All of them generate the machine instruction that is part of the name. + +

     int __builtin_ia32_comisdeq (v2df, v2df)
+     int __builtin_ia32_comisdlt (v2df, v2df)
+     int __builtin_ia32_comisdle (v2df, v2df)
+     int __builtin_ia32_comisdgt (v2df, v2df)
+     int __builtin_ia32_comisdge (v2df, v2df)
+     int __builtin_ia32_comisdneq (v2df, v2df)
+     int __builtin_ia32_ucomisdeq (v2df, v2df)
+     int __builtin_ia32_ucomisdlt (v2df, v2df)
+     int __builtin_ia32_ucomisdle (v2df, v2df)
+     int __builtin_ia32_ucomisdgt (v2df, v2df)
+     int __builtin_ia32_ucomisdge (v2df, v2df)
+     int __builtin_ia32_ucomisdneq (v2df, v2df)
+     v2df __builtin_ia32_cmpeqpd (v2df, v2df)
+     v2df __builtin_ia32_cmpltpd (v2df, v2df)
+     v2df __builtin_ia32_cmplepd (v2df, v2df)
+     v2df __builtin_ia32_cmpgtpd (v2df, v2df)
+     v2df __builtin_ia32_cmpgepd (v2df, v2df)
+     v2df __builtin_ia32_cmpunordpd (v2df, v2df)
+     v2df __builtin_ia32_cmpneqpd (v2df, v2df)
+     v2df __builtin_ia32_cmpnltpd (v2df, v2df)
+     v2df __builtin_ia32_cmpnlepd (v2df, v2df)
+     v2df __builtin_ia32_cmpngtpd (v2df, v2df)
+     v2df __builtin_ia32_cmpngepd (v2df, v2df)
+     v2df __builtin_ia32_cmpordpd (v2df, v2df)
+     v2df __builtin_ia32_cmpeqsd (v2df, v2df)
+     v2df __builtin_ia32_cmpltsd (v2df, v2df)
+     v2df __builtin_ia32_cmplesd (v2df, v2df)
+     v2df __builtin_ia32_cmpunordsd (v2df, v2df)
+     v2df __builtin_ia32_cmpneqsd (v2df, v2df)
+     v2df __builtin_ia32_cmpnltsd (v2df, v2df)
+     v2df __builtin_ia32_cmpnlesd (v2df, v2df)
+     v2df __builtin_ia32_cmpordsd (v2df, v2df)
+     v2di __builtin_ia32_paddq (v2di, v2di)
+     v2di __builtin_ia32_psubq (v2di, v2di)
+     v2df __builtin_ia32_addpd (v2df, v2df)
+     v2df __builtin_ia32_subpd (v2df, v2df)
+     v2df __builtin_ia32_mulpd (v2df, v2df)
+     v2df __builtin_ia32_divpd (v2df, v2df)
+     v2df __builtin_ia32_addsd (v2df, v2df)
+     v2df __builtin_ia32_subsd (v2df, v2df)
+     v2df __builtin_ia32_mulsd (v2df, v2df)
+     v2df __builtin_ia32_divsd (v2df, v2df)
+     v2df __builtin_ia32_minpd (v2df, v2df)
+     v2df __builtin_ia32_maxpd (v2df, v2df)
+     v2df __builtin_ia32_minsd (v2df, v2df)
+     v2df __builtin_ia32_maxsd (v2df, v2df)
+     v2df __builtin_ia32_andpd (v2df, v2df)
+     v2df __builtin_ia32_andnpd (v2df, v2df)
+     v2df __builtin_ia32_orpd (v2df, v2df)
+     v2df __builtin_ia32_xorpd (v2df, v2df)
+     v2df __builtin_ia32_movsd (v2df, v2df)
+     v2df __builtin_ia32_unpckhpd (v2df, v2df)
+     v2df __builtin_ia32_unpcklpd (v2df, v2df)
+     v16qi __builtin_ia32_paddb128 (v16qi, v16qi)
+     v8hi __builtin_ia32_paddw128 (v8hi, v8hi)
+     v4si __builtin_ia32_paddd128 (v4si, v4si)
+     v2di __builtin_ia32_paddq128 (v2di, v2di)
+     v16qi __builtin_ia32_psubb128 (v16qi, v16qi)
+     v8hi __builtin_ia32_psubw128 (v8hi, v8hi)
+     v4si __builtin_ia32_psubd128 (v4si, v4si)
+     v2di __builtin_ia32_psubq128 (v2di, v2di)
+     v8hi __builtin_ia32_pmullw128 (v8hi, v8hi)
+     v8hi __builtin_ia32_pmulhw128 (v8hi, v8hi)
+     v2di __builtin_ia32_pand128 (v2di, v2di)
+     v2di __builtin_ia32_pandn128 (v2di, v2di)
+     v2di __builtin_ia32_por128 (v2di, v2di)
+     v2di __builtin_ia32_pxor128 (v2di, v2di)
+     v16qi __builtin_ia32_pavgb128 (v16qi, v16qi)
+     v8hi __builtin_ia32_pavgw128 (v8hi, v8hi)
+     v16qi __builtin_ia32_pcmpeqb128 (v16qi, v16qi)
+     v8hi __builtin_ia32_pcmpeqw128 (v8hi, v8hi)
+     v4si __builtin_ia32_pcmpeqd128 (v4si, v4si)
+     v16qi __builtin_ia32_pcmpgtb128 (v16qi, v16qi)
+     v8hi __builtin_ia32_pcmpgtw128 (v8hi, v8hi)
+     v4si __builtin_ia32_pcmpgtd128 (v4si, v4si)
+     v16qi __builtin_ia32_pmaxub128 (v16qi, v16qi)
+     v8hi __builtin_ia32_pmaxsw128 (v8hi, v8hi)
+     v16qi __builtin_ia32_pminub128 (v16qi, v16qi)
+     v8hi __builtin_ia32_pminsw128 (v8hi, v8hi)
+     v16qi __builtin_ia32_punpckhbw128 (v16qi, v16qi)
+     v8hi __builtin_ia32_punpckhwd128 (v8hi, v8hi)
+     v4si __builtin_ia32_punpckhdq128 (v4si, v4si)
+     v2di __builtin_ia32_punpckhqdq128 (v2di, v2di)
+     v16qi __builtin_ia32_punpcklbw128 (v16qi, v16qi)
+     v8hi __builtin_ia32_punpcklwd128 (v8hi, v8hi)
+     v4si __builtin_ia32_punpckldq128 (v4si, v4si)
+     v2di __builtin_ia32_punpcklqdq128 (v2di, v2di)
+     v16qi __builtin_ia32_packsswb128 (v16qi, v16qi)
+     v8hi __builtin_ia32_packssdw128 (v8hi, v8hi)
+     v16qi __builtin_ia32_packuswb128 (v16qi, v16qi)
+     v8hi __builtin_ia32_pmulhuw128 (v8hi, v8hi)
+     void __builtin_ia32_maskmovdqu (v16qi, v16qi)
+     v2df __builtin_ia32_loadupd (double *)
+     void __builtin_ia32_storeupd (double *, v2df)
+     v2df __builtin_ia32_loadhpd (v2df, double *)
+     v2df __builtin_ia32_loadlpd (v2df, double *)
+     int __builtin_ia32_movmskpd (v2df)
+     int __builtin_ia32_pmovmskb128 (v16qi)
+     void __builtin_ia32_movnti (int *, int)
+     void __builtin_ia32_movntpd (double *, v2df)
+     void __builtin_ia32_movntdq (v2df *, v2df)
+     v4si __builtin_ia32_pshufd (v4si, int)
+     v8hi __builtin_ia32_pshuflw (v8hi, int)
+     v8hi __builtin_ia32_pshufhw (v8hi, int)
+     v2di __builtin_ia32_psadbw128 (v16qi, v16qi)
+     v2df __builtin_ia32_sqrtpd (v2df)
+     v2df __builtin_ia32_sqrtsd (v2df)
+     v2df __builtin_ia32_shufpd (v2df, v2df, int)
+     v2df __builtin_ia32_cvtdq2pd (v4si)
+     v4sf __builtin_ia32_cvtdq2ps (v4si)
+     v4si __builtin_ia32_cvtpd2dq (v2df)
+     v2si __builtin_ia32_cvtpd2pi (v2df)
+     v4sf __builtin_ia32_cvtpd2ps (v2df)
+     v4si __builtin_ia32_cvttpd2dq (v2df)
+     v2si __builtin_ia32_cvttpd2pi (v2df)
+     v2df __builtin_ia32_cvtpi2pd (v2si)
+     int __builtin_ia32_cvtsd2si (v2df)
+     int __builtin_ia32_cvttsd2si (v2df)
+     long long __builtin_ia32_cvtsd2si64 (v2df)
+     long long __builtin_ia32_cvttsd2si64 (v2df)
+     v4si __builtin_ia32_cvtps2dq (v4sf)
+     v2df __builtin_ia32_cvtps2pd (v4sf)
+     v4si __builtin_ia32_cvttps2dq (v4sf)
+     v2df __builtin_ia32_cvtsi2sd (v2df, int)
+     v2df __builtin_ia32_cvtsi642sd (v2df, long long)
+     v4sf __builtin_ia32_cvtsd2ss (v4sf, v2df)
+     v2df __builtin_ia32_cvtss2sd (v2df, v4sf)
+     void __builtin_ia32_clflush (const void *)
+     void __builtin_ia32_lfence (void)
+     void __builtin_ia32_mfence (void)
+     v16qi __builtin_ia32_loaddqu (const char *)
+     void __builtin_ia32_storedqu (char *, v16qi)
+     unsigned long long __builtin_ia32_pmuludq (v2si, v2si)
+     v2di __builtin_ia32_pmuludq128 (v4si, v4si)
+     v8hi __builtin_ia32_psllw128 (v8hi, v2di)
+     v4si __builtin_ia32_pslld128 (v4si, v2di)
+     v2di __builtin_ia32_psllq128 (v4si, v2di)
+     v8hi __builtin_ia32_psrlw128 (v8hi, v2di)
+     v4si __builtin_ia32_psrld128 (v4si, v2di)
+     v2di __builtin_ia32_psrlq128 (v2di, v2di)
+     v8hi __builtin_ia32_psraw128 (v8hi, v2di)
+     v4si __builtin_ia32_psrad128 (v4si, v2di)
+     v2di __builtin_ia32_pslldqi128 (v2di, int)
+     v8hi __builtin_ia32_psllwi128 (v8hi, int)
+     v4si __builtin_ia32_pslldi128 (v4si, int)
+     v2di __builtin_ia32_psllqi128 (v2di, int)
+     v2di __builtin_ia32_psrldqi128 (v2di, int)
+     v8hi __builtin_ia32_psrlwi128 (v8hi, int)
+     v4si __builtin_ia32_psrldi128 (v4si, int)
+     v2di __builtin_ia32_psrlqi128 (v2di, int)
+     v8hi __builtin_ia32_psrawi128 (v8hi, int)
+     v4si __builtin_ia32_psradi128 (v4si, int)
+     v4si __builtin_ia32_pmaddwd128 (v8hi, v8hi)
+
+

The following built-in functions are available when -msse3 is used. +All of them generate the machine instruction that is part of the name. + +

     v2df __builtin_ia32_addsubpd (v2df, v2df)
+     v4sf __builtin_ia32_addsubps (v4sf, v4sf)
+     v2df __builtin_ia32_haddpd (v2df, v2df)
+     v4sf __builtin_ia32_haddps (v4sf, v4sf)
+     v2df __builtin_ia32_hsubpd (v2df, v2df)
+     v4sf __builtin_ia32_hsubps (v4sf, v4sf)
+     v16qi __builtin_ia32_lddqu (char const *)
+     void __builtin_ia32_monitor (void *, unsigned int, unsigned int)
+     v2df __builtin_ia32_movddup (v2df)
+     v4sf __builtin_ia32_movshdup (v4sf)
+     v4sf __builtin_ia32_movsldup (v4sf)
+     void __builtin_ia32_mwait (unsigned int, unsigned int)
+
+

The following built-in functions are available when -msse3 is used. + +

+
v2df __builtin_ia32_loadddup (double const *)
Generates the movddup machine instruction as a load from memory. +
+ +

The following built-in functions are available when -mssse3 is used. +All of them generate the machine instruction that is part of the name +with MMX registers. + +

     v2si __builtin_ia32_phaddd (v2si, v2si)
+     v4hi __builtin_ia32_phaddw (v4hi, v4hi)
+     v4hi __builtin_ia32_phaddsw (v4hi, v4hi)
+     v2si __builtin_ia32_phsubd (v2si, v2si)
+     v4hi __builtin_ia32_phsubw (v4hi, v4hi)
+     v4hi __builtin_ia32_phsubsw (v4hi, v4hi)
+     v8qi __builtin_ia32_pmaddubsw (v8qi, v8qi)
+     v4hi __builtin_ia32_pmulhrsw (v4hi, v4hi)
+     v8qi __builtin_ia32_pshufb (v8qi, v8qi)
+     v8qi __builtin_ia32_psignb (v8qi, v8qi)
+     v2si __builtin_ia32_psignd (v2si, v2si)
+     v4hi __builtin_ia32_psignw (v4hi, v4hi)
+     long long __builtin_ia32_palignr (long long, long long, int)
+     v8qi __builtin_ia32_pabsb (v8qi)
+     v2si __builtin_ia32_pabsd (v2si)
+     v4hi __builtin_ia32_pabsw (v4hi)
+
+

The following built-in functions are available when -mssse3 is used. +All of them generate the machine instruction that is part of the name +with SSE registers. + +

     v4si __builtin_ia32_phaddd128 (v4si, v4si)
+     v8hi __builtin_ia32_phaddw128 (v8hi, v8hi)
+     v8hi __builtin_ia32_phaddsw128 (v8hi, v8hi)
+     v4si __builtin_ia32_phsubd128 (v4si, v4si)
+     v8hi __builtin_ia32_phsubw128 (v8hi, v8hi)
+     v8hi __builtin_ia32_phsubsw128 (v8hi, v8hi)
+     v16qi __builtin_ia32_pmaddubsw128 (v16qi, v16qi)
+     v8hi __builtin_ia32_pmulhrsw128 (v8hi, v8hi)
+     v16qi __builtin_ia32_pshufb128 (v16qi, v16qi)
+     v16qi __builtin_ia32_psignb128 (v16qi, v16qi)
+     v4si __builtin_ia32_psignd128 (v4si, v4si)
+     v8hi __builtin_ia32_psignw128 (v8hi, v8hi)
+     v2di __builtin_ia32_palignr (v2di, v2di, int)
+     v16qi __builtin_ia32_pabsb128 (v16qi)
+     v4si __builtin_ia32_pabsd128 (v4si)
+     v8hi __builtin_ia32_pabsw128 (v8hi)
+
+

The following built-in functions are available when -msse4.1 is +used. All of them generate the machine instruction that is part of the +name. + +

     v2df __builtin_ia32_blendpd (v2df, v2df, const int)
+     v4sf __builtin_ia32_blendps (v4sf, v4sf, const int)
+     v2df __builtin_ia32_blendvpd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_blendvps (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_dppd (v2df, v2df, const int)
+     v4sf __builtin_ia32_dpps (v4sf, v4sf, const int)
+     v4sf __builtin_ia32_insertps128 (v4sf, v4sf, const int)
+     v2di __builtin_ia32_movntdqa (v2di *);
+     v16qi __builtin_ia32_mpsadbw128 (v16qi, v16qi, const int)
+     v8hi __builtin_ia32_packusdw128 (v4si, v4si)
+     v16qi __builtin_ia32_pblendvb128 (v16qi, v16qi, v16qi)
+     v8hi __builtin_ia32_pblendw128 (v8hi, v8hi, const int)
+     v2di __builtin_ia32_pcmpeqq (v2di, v2di)
+     v8hi __builtin_ia32_phminposuw128 (v8hi)
+     v16qi __builtin_ia32_pmaxsb128 (v16qi, v16qi)
+     v4si __builtin_ia32_pmaxsd128 (v4si, v4si)
+     v4si __builtin_ia32_pmaxud128 (v4si, v4si)
+     v8hi __builtin_ia32_pmaxuw128 (v8hi, v8hi)
+     v16qi __builtin_ia32_pminsb128 (v16qi, v16qi)
+     v4si __builtin_ia32_pminsd128 (v4si, v4si)
+     v4si __builtin_ia32_pminud128 (v4si, v4si)
+     v8hi __builtin_ia32_pminuw128 (v8hi, v8hi)
+     v4si __builtin_ia32_pmovsxbd128 (v16qi)
+     v2di __builtin_ia32_pmovsxbq128 (v16qi)
+     v8hi __builtin_ia32_pmovsxbw128 (v16qi)
+     v2di __builtin_ia32_pmovsxdq128 (v4si)
+     v4si __builtin_ia32_pmovsxwd128 (v8hi)
+     v2di __builtin_ia32_pmovsxwq128 (v8hi)
+     v4si __builtin_ia32_pmovzxbd128 (v16qi)
+     v2di __builtin_ia32_pmovzxbq128 (v16qi)
+     v8hi __builtin_ia32_pmovzxbw128 (v16qi)
+     v2di __builtin_ia32_pmovzxdq128 (v4si)
+     v4si __builtin_ia32_pmovzxwd128 (v8hi)
+     v2di __builtin_ia32_pmovzxwq128 (v8hi)
+     v2di __builtin_ia32_pmuldq128 (v4si, v4si)
+     v4si __builtin_ia32_pmulld128 (v4si, v4si)
+     int __builtin_ia32_ptestc128 (v2di, v2di)
+     int __builtin_ia32_ptestnzc128 (v2di, v2di)
+     int __builtin_ia32_ptestz128 (v2di, v2di)
+     v2df __builtin_ia32_roundpd (v2df, const int)
+     v4sf __builtin_ia32_roundps (v4sf, const int)
+     v2df __builtin_ia32_roundsd (v2df, v2df, const int)
+     v4sf __builtin_ia32_roundss (v4sf, v4sf, const int)
+
+

The following built-in functions are available when -msse4.1 is +used. + +

+
v4sf __builtin_ia32_vec_set_v4sf (v4sf, float, const int)
Generates the insertps machine instruction. +
int __builtin_ia32_vec_ext_v16qi (v16qi, const int)
Generates the pextrb machine instruction. +
v16qi __builtin_ia32_vec_set_v16qi (v16qi, int, const int)
Generates the pinsrb machine instruction. +
v4si __builtin_ia32_vec_set_v4si (v4si, int, const int)
Generates the pinsrd machine instruction. +
v2di __builtin_ia32_vec_set_v2di (v2di, long long, const int)
Generates the pinsrq machine instruction in 64bit mode. +
+ +

The following built-in functions are changed to generate new SSE4.1 +instructions when -msse4.1 is used. + +

+
float __builtin_ia32_vec_ext_v4sf (v4sf, const int)
Generates the extractps machine instruction. +
int __builtin_ia32_vec_ext_v4si (v4si, const int)
Generates the pextrd machine instruction. +
long long __builtin_ia32_vec_ext_v2di (v2di, const int)
Generates the pextrq machine instruction in 64bit mode. +
+ +

The following built-in functions are available when -msse4.2 is +used. All of them generate the machine instruction that is part of the +name. + +

     v16qi __builtin_ia32_pcmpestrm128 (v16qi, int, v16qi, int, const int)
+     int __builtin_ia32_pcmpestri128 (v16qi, int, v16qi, int, const int)
+     int __builtin_ia32_pcmpestria128 (v16qi, int, v16qi, int, const int)
+     int __builtin_ia32_pcmpestric128 (v16qi, int, v16qi, int, const int)
+     int __builtin_ia32_pcmpestrio128 (v16qi, int, v16qi, int, const int)
+     int __builtin_ia32_pcmpestris128 (v16qi, int, v16qi, int, const int)
+     int __builtin_ia32_pcmpestriz128 (v16qi, int, v16qi, int, const int)
+     v16qi __builtin_ia32_pcmpistrm128 (v16qi, v16qi, const int)
+     int __builtin_ia32_pcmpistri128 (v16qi, v16qi, const int)
+     int __builtin_ia32_pcmpistria128 (v16qi, v16qi, const int)
+     int __builtin_ia32_pcmpistric128 (v16qi, v16qi, const int)
+     int __builtin_ia32_pcmpistrio128 (v16qi, v16qi, const int)
+     int __builtin_ia32_pcmpistris128 (v16qi, v16qi, const int)
+     int __builtin_ia32_pcmpistriz128 (v16qi, v16qi, const int)
+     v2di __builtin_ia32_pcmpgtq (v2di, v2di)
+
+

The following built-in functions are available when -msse4.2 is +used. + +

+
unsigned int __builtin_ia32_crc32qi (unsigned int, unsigned char)
Generates the crc32b machine instruction. +
unsigned int __builtin_ia32_crc32hi (unsigned int, unsigned short)
Generates the crc32w machine instruction. +
unsigned int __builtin_ia32_crc32si (unsigned int, unsigned int)
Generates the crc32l machine instruction. +
unsigned long long __builtin_ia32_crc32di (unsigned long long, unsigned long long)
+ +

The following built-in functions are changed to generate new SSE4.2 +instructions when -msse4.2 is used. + +

+
int __builtin_popcount (unsigned int)
Generates the popcntl machine instruction. +
int __builtin_popcountl (unsigned long)
Generates the popcntl or popcntq machine instruction, +depending on the size of unsigned long. +
int __builtin_popcountll (unsigned long long)
Generates the popcntq machine instruction. +
+ +

The following built-in functions are available when -msse4a is used. +All of them generate the machine instruction that is part of the name. + +

     void __builtin_ia32_movntsd (double *, v2df)
+     void __builtin_ia32_movntss (float *, v4sf)
+     v2di __builtin_ia32_extrq  (v2di, v16qi)
+     v2di __builtin_ia32_extrqi (v2di, const unsigned int, const unsigned int)
+     v2di __builtin_ia32_insertq (v2di, v2di)
+     v2di __builtin_ia32_insertqi (v2di, v2di, const unsigned int, const unsigned int)
+
+

The following built-in functions are available when -msse5 is used. +All of them generate the machine instruction that is part of the name +with MMX registers. + +

     v2df __builtin_ia32_comeqpd (v2df, v2df)
+     v2df __builtin_ia32_comeqps (v2df, v2df)
+     v4sf __builtin_ia32_comeqsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comeqss (v4sf, v4sf)
+     v2df __builtin_ia32_comfalsepd (v2df, v2df)
+     v2df __builtin_ia32_comfalseps (v2df, v2df)
+     v4sf __builtin_ia32_comfalsesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comfalsess (v4sf, v4sf)
+     v2df __builtin_ia32_comgepd (v2df, v2df)
+     v2df __builtin_ia32_comgeps (v2df, v2df)
+     v4sf __builtin_ia32_comgesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comgess (v4sf, v4sf)
+     v2df __builtin_ia32_comgtpd (v2df, v2df)
+     v2df __builtin_ia32_comgtps (v2df, v2df)
+     v4sf __builtin_ia32_comgtsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comgtss (v4sf, v4sf)
+     v2df __builtin_ia32_comlepd (v2df, v2df)
+     v2df __builtin_ia32_comleps (v2df, v2df)
+     v4sf __builtin_ia32_comlesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comless (v4sf, v4sf)
+     v2df __builtin_ia32_comltpd (v2df, v2df)
+     v2df __builtin_ia32_comltps (v2df, v2df)
+     v4sf __builtin_ia32_comltsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comltss (v4sf, v4sf)
+     v2df __builtin_ia32_comnepd (v2df, v2df)
+     v2df __builtin_ia32_comneps (v2df, v2df)
+     v4sf __builtin_ia32_comnesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comness (v4sf, v4sf)
+     v2df __builtin_ia32_comordpd (v2df, v2df)
+     v2df __builtin_ia32_comordps (v2df, v2df)
+     v4sf __builtin_ia32_comordsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comordss (v4sf, v4sf)
+     v2df __builtin_ia32_comtruepd (v2df, v2df)
+     v2df __builtin_ia32_comtrueps (v2df, v2df)
+     v4sf __builtin_ia32_comtruesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comtruess (v4sf, v4sf)
+     v2df __builtin_ia32_comueqpd (v2df, v2df)
+     v2df __builtin_ia32_comueqps (v2df, v2df)
+     v4sf __builtin_ia32_comueqsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comueqss (v4sf, v4sf)
+     v2df __builtin_ia32_comugepd (v2df, v2df)
+     v2df __builtin_ia32_comugeps (v2df, v2df)
+     v4sf __builtin_ia32_comugesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comugess (v4sf, v4sf)
+     v2df __builtin_ia32_comugtpd (v2df, v2df)
+     v2df __builtin_ia32_comugtps (v2df, v2df)
+     v4sf __builtin_ia32_comugtsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comugtss (v4sf, v4sf)
+     v2df __builtin_ia32_comulepd (v2df, v2df)
+     v2df __builtin_ia32_comuleps (v2df, v2df)
+     v4sf __builtin_ia32_comulesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comuless (v4sf, v4sf)
+     v2df __builtin_ia32_comultpd (v2df, v2df)
+     v2df __builtin_ia32_comultps (v2df, v2df)
+     v4sf __builtin_ia32_comultsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comultss (v4sf, v4sf)
+     v2df __builtin_ia32_comunepd (v2df, v2df)
+     v2df __builtin_ia32_comuneps (v2df, v2df)
+     v4sf __builtin_ia32_comunesd (v4sf, v4sf)
+     v4sf __builtin_ia32_comuness (v4sf, v4sf)
+     v2df __builtin_ia32_comunordpd (v2df, v2df)
+     v2df __builtin_ia32_comunordps (v2df, v2df)
+     v4sf __builtin_ia32_comunordsd (v4sf, v4sf)
+     v4sf __builtin_ia32_comunordss (v4sf, v4sf)
+     v2df __builtin_ia32_fmaddpd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fmaddps (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_fmaddsd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fmaddss (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_fmsubpd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fmsubps (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_fmsubsd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fmsubss (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_fnmaddpd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fnmaddps (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_fnmaddsd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fnmaddss (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_fnmsubpd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fnmsubps (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_fnmsubsd (v2df, v2df, v2df)
+     v4sf __builtin_ia32_fnmsubss (v4sf, v4sf, v4sf)
+     v2df __builtin_ia32_frczpd (v2df)
+     v4sf __builtin_ia32_frczps (v4sf)
+     v2df __builtin_ia32_frczsd (v2df, v2df)
+     v4sf __builtin_ia32_frczss (v4sf, v4sf)
+     v2di __builtin_ia32_pcmov (v2di, v2di, v2di)
+     v2di __builtin_ia32_pcmov_v2di (v2di, v2di, v2di)
+     v4si __builtin_ia32_pcmov_v4si (v4si, v4si, v4si)
+     v8hi __builtin_ia32_pcmov_v8hi (v8hi, v8hi, v8hi)
+     v16qi __builtin_ia32_pcmov_v16qi (v16qi, v16qi, v16qi)
+     v2df __builtin_ia32_pcmov_v2df (v2df, v2df, v2df)
+     v4sf __builtin_ia32_pcmov_v4sf (v4sf, v4sf, v4sf)
+     v16qi __builtin_ia32_pcomeqb (v16qi, v16qi)
+     v8hi __builtin_ia32_pcomeqw (v8hi, v8hi)
+     v4si __builtin_ia32_pcomeqd (v4si, v4si)
+     v2di __builtin_ia32_pcomeqq (v2di, v2di)
+     v16qi __builtin_ia32_pcomequb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomequd (v4si, v4si)
+     v2di __builtin_ia32_pcomequq (v2di, v2di)
+     v8hi __builtin_ia32_pcomequw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomeqw (v8hi, v8hi)
+     v16qi __builtin_ia32_pcomfalseb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomfalsed (v4si, v4si)
+     v2di __builtin_ia32_pcomfalseq (v2di, v2di)
+     v16qi __builtin_ia32_pcomfalseub (v16qi, v16qi)
+     v4si __builtin_ia32_pcomfalseud (v4si, v4si)
+     v2di __builtin_ia32_pcomfalseuq (v2di, v2di)
+     v8hi __builtin_ia32_pcomfalseuw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomfalsew (v8hi, v8hi)
+     v16qi __builtin_ia32_pcomgeb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomged (v4si, v4si)
+     v2di __builtin_ia32_pcomgeq (v2di, v2di)
+     v16qi __builtin_ia32_pcomgeub (v16qi, v16qi)
+     v4si __builtin_ia32_pcomgeud (v4si, v4si)
+     v2di __builtin_ia32_pcomgeuq (v2di, v2di)
+     v8hi __builtin_ia32_pcomgeuw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomgew (v8hi, v8hi)
+     v16qi __builtin_ia32_pcomgtb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomgtd (v4si, v4si)
+     v2di __builtin_ia32_pcomgtq (v2di, v2di)
+     v16qi __builtin_ia32_pcomgtub (v16qi, v16qi)
+     v4si __builtin_ia32_pcomgtud (v4si, v4si)
+     v2di __builtin_ia32_pcomgtuq (v2di, v2di)
+     v8hi __builtin_ia32_pcomgtuw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomgtw (v8hi, v8hi)
+     v16qi __builtin_ia32_pcomleb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomled (v4si, v4si)
+     v2di __builtin_ia32_pcomleq (v2di, v2di)
+     v16qi __builtin_ia32_pcomleub (v16qi, v16qi)
+     v4si __builtin_ia32_pcomleud (v4si, v4si)
+     v2di __builtin_ia32_pcomleuq (v2di, v2di)
+     v8hi __builtin_ia32_pcomleuw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomlew (v8hi, v8hi)
+     v16qi __builtin_ia32_pcomltb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomltd (v4si, v4si)
+     v2di __builtin_ia32_pcomltq (v2di, v2di)
+     v16qi __builtin_ia32_pcomltub (v16qi, v16qi)
+     v4si __builtin_ia32_pcomltud (v4si, v4si)
+     v2di __builtin_ia32_pcomltuq (v2di, v2di)
+     v8hi __builtin_ia32_pcomltuw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomltw (v8hi, v8hi)
+     v16qi __builtin_ia32_pcomneb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomned (v4si, v4si)
+     v2di __builtin_ia32_pcomneq (v2di, v2di)
+     v16qi __builtin_ia32_pcomneub (v16qi, v16qi)
+     v4si __builtin_ia32_pcomneud (v4si, v4si)
+     v2di __builtin_ia32_pcomneuq (v2di, v2di)
+     v8hi __builtin_ia32_pcomneuw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomnew (v8hi, v8hi)
+     v16qi __builtin_ia32_pcomtrueb (v16qi, v16qi)
+     v4si __builtin_ia32_pcomtrued (v4si, v4si)
+     v2di __builtin_ia32_pcomtrueq (v2di, v2di)
+     v16qi __builtin_ia32_pcomtrueub (v16qi, v16qi)
+     v4si __builtin_ia32_pcomtrueud (v4si, v4si)
+     v2di __builtin_ia32_pcomtrueuq (v2di, v2di)
+     v8hi __builtin_ia32_pcomtrueuw (v8hi, v8hi)
+     v8hi __builtin_ia32_pcomtruew (v8hi, v8hi)
+     v4df __builtin_ia32_permpd (v2df, v2df, v16qi)
+     v4sf __builtin_ia32_permps (v4sf, v4sf, v16qi)
+     v4si __builtin_ia32_phaddbd (v16qi)
+     v2di __builtin_ia32_phaddbq (v16qi)
+     v8hi __builtin_ia32_phaddbw (v16qi)
+     v2di __builtin_ia32_phadddq (v4si)
+     v4si __builtin_ia32_phaddubd (v16qi)
+     v2di __builtin_ia32_phaddubq (v16qi)
+     v8hi __builtin_ia32_phaddubw (v16qi)
+     v2di __builtin_ia32_phaddudq (v4si)
+     v4si __builtin_ia32_phadduwd (v8hi)
+     v2di __builtin_ia32_phadduwq (v8hi)
+     v4si __builtin_ia32_phaddwd (v8hi)
+     v2di __builtin_ia32_phaddwq (v8hi)
+     v8hi __builtin_ia32_phsubbw (v16qi)
+     v2di __builtin_ia32_phsubdq (v4si)
+     v4si __builtin_ia32_phsubwd (v8hi)
+     v4si __builtin_ia32_pmacsdd (v4si, v4si, v4si)
+     v2di __builtin_ia32_pmacsdqh (v4si, v4si, v2di)
+     v2di __builtin_ia32_pmacsdql (v4si, v4si, v2di)
+     v4si __builtin_ia32_pmacssdd (v4si, v4si, v4si)
+     v2di __builtin_ia32_pmacssdqh (v4si, v4si, v2di)
+     v2di __builtin_ia32_pmacssdql (v4si, v4si, v2di)
+     v4si __builtin_ia32_pmacsswd (v8hi, v8hi, v4si)
+     v8hi __builtin_ia32_pmacssww (v8hi, v8hi, v8hi)
+     v4si __builtin_ia32_pmacswd (v8hi, v8hi, v4si)
+     v8hi __builtin_ia32_pmacsww (v8hi, v8hi, v8hi)
+     v4si __builtin_ia32_pmadcsswd (v8hi, v8hi, v4si)
+     v4si __builtin_ia32_pmadcswd (v8hi, v8hi, v4si)
+     v16qi __builtin_ia32_pperm (v16qi, v16qi, v16qi)
+     v16qi __builtin_ia32_protb (v16qi, v16qi)
+     v4si __builtin_ia32_protd (v4si, v4si)
+     v2di __builtin_ia32_protq (v2di, v2di)
+     v8hi __builtin_ia32_protw (v8hi, v8hi)
+     v16qi __builtin_ia32_pshab (v16qi, v16qi)
+     v4si __builtin_ia32_pshad (v4si, v4si)
+     v2di __builtin_ia32_pshaq (v2di, v2di)
+     v8hi __builtin_ia32_pshaw (v8hi, v8hi)
+     v16qi __builtin_ia32_pshlb (v16qi, v16qi)
+     v4si __builtin_ia32_pshld (v4si, v4si)
+     v2di __builtin_ia32_pshlq (v2di, v2di)
+     v8hi __builtin_ia32_pshlw (v8hi, v8hi)
+
+

The following builtin-in functions are available when -msse5 +is used. The second argument must be an integer constant and generate +the machine instruction that is part of the name with the _imm +suffix removed. + +

     v16qi __builtin_ia32_protb_imm (v16qi, int)
+     v4si __builtin_ia32_protd_imm (v4si, int)
+     v2di __builtin_ia32_protq_imm (v2di, int)
+     v8hi __builtin_ia32_protw_imm (v8hi, int)
+
+

The following built-in functions are available when -m3dnow is used. +All of them generate the machine instruction that is part of the name. + +

     void __builtin_ia32_femms (void)
+     v8qi __builtin_ia32_pavgusb (v8qi, v8qi)
+     v2si __builtin_ia32_pf2id (v2sf)
+     v2sf __builtin_ia32_pfacc (v2sf, v2sf)
+     v2sf __builtin_ia32_pfadd (v2sf, v2sf)
+     v2si __builtin_ia32_pfcmpeq (v2sf, v2sf)
+     v2si __builtin_ia32_pfcmpge (v2sf, v2sf)
+     v2si __builtin_ia32_pfcmpgt (v2sf, v2sf)
+     v2sf __builtin_ia32_pfmax (v2sf, v2sf)
+     v2sf __builtin_ia32_pfmin (v2sf, v2sf)
+     v2sf __builtin_ia32_pfmul (v2sf, v2sf)
+     v2sf __builtin_ia32_pfrcp (v2sf)
+     v2sf __builtin_ia32_pfrcpit1 (v2sf, v2sf)
+     v2sf __builtin_ia32_pfrcpit2 (v2sf, v2sf)
+     v2sf __builtin_ia32_pfrsqrt (v2sf)
+     v2sf __builtin_ia32_pfrsqrtit1 (v2sf, v2sf)
+     v2sf __builtin_ia32_pfsub (v2sf, v2sf)
+     v2sf __builtin_ia32_pfsubr (v2sf, v2sf)
+     v2sf __builtin_ia32_pi2fd (v2si)
+     v4hi __builtin_ia32_pmulhrw (v4hi, v4hi)
+
+

The following built-in functions are available when both -m3dnow +and -march=athlon are used. All of them generate the machine +instruction that is part of the name. + +

     v2si __builtin_ia32_pf2iw (v2sf)
+     v2sf __builtin_ia32_pfnacc (v2sf, v2sf)
+     v2sf __builtin_ia32_pfpnacc (v2sf, v2sf)
+     v2sf __builtin_ia32_pi2fw (v2si)
+     v2sf __builtin_ia32_pswapdsf (v2sf)
+     v2si __builtin_ia32_pswapdsi (v2si)
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Xstormy16-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Xstormy16-Options.html new file mode 100644 index 0000000..11a9b8d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Xstormy16-Options.html @@ -0,0 +1,65 @@ + + +Xstormy16 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: x86-64 Options, +Up: Submodel Options +



+
+ +

3.17.38 Xstormy16 Options

+ +

+These options are defined for Xstormy16: + +

+
-msim
Choose startup files and linker script suitable for the simulator. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Xtensa-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Xtensa-Options.html new file mode 100644 index 0000000..88379e7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Xtensa-Options.html @@ -0,0 +1,118 @@ + + +Xtensa Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Xstormy16 Options, +Up: Submodel Options +



+
+ +

3.17.39 Xtensa Options

+ +

+These options are supported for Xtensa targets: + +

+
-mconst16
-mno-const16
Enable or disable use of CONST16 instructions for loading +constant values. The CONST16 instruction is currently not a +standard option from Tensilica. When enabled, CONST16 +instructions are always used in place of the standard L32R +instructions. The use of CONST16 is enabled by default only if +the L32R instruction is not available. + +
-mfused-madd
-mno-fused-madd
Enable or disable use of fused multiply/add and multiply/subtract +instructions in the floating-point option. This has no effect if the +floating-point option is not also enabled. Disabling fused multiply/add +and multiply/subtract instructions forces the compiler to use separate +instructions for the multiply and add/subtract operations. This may be +desirable in some cases where strict IEEE 754-compliant results are +required: the fused multiply add/subtract instructions do not round the +intermediate result, thereby producing results with more bits of +precision than specified by the IEEE standard. Disabling fused multiply +add/subtract instructions also ensures that the program output is not +sensitive to the compiler's ability to combine multiply and add/subtract +operations. + +
-mtext-section-literals
-mno-text-section-literals
Control the treatment of literal pools. The default is +-mno-text-section-literals, which places literals in a separate +section in the output file. This allows the literal pool to be placed +in a data RAM/ROM, and it also allows the linker to combine literal +pools from separate object files to remove redundant literals and +improve code size. With -mtext-section-literals, the literals +are interspersed in the text section in order to keep them as close as +possible to their references. This may be necessary for large assembly +files. + +
-mtarget-align
-mno-target-align
When this option is enabled, GCC instructs the assembler to +automatically align instructions to reduce branch penalties at the +expense of some code density. The assembler attempts to widen density +instructions to align branch targets and the instructions following call +instructions. If there are not enough preceding safe density +instructions to align a target, no widening will be performed. The +default is -mtarget-align. These options do not affect the +treatment of auto-aligned instructions like LOOP, which the +assembler will always align, either by widening density instructions or +by inserting no-op instructions. + +
-mlongcalls
-mno-longcalls
When this option is enabled, GCC instructs the assembler to translate +direct calls to indirect calls unless it can determine that the target +of a direct call is in the range allowed by the call instruction. This +translation typically occurs for calls to functions in other source +files. Specifically, the assembler translates a direct CALL +instruction into an L32R followed by a CALLX instruction. +The default is -mno-longcalls. This option should be used in +programs where the call target can potentially be out of range. This +option is implemented in the assembler, not the compiler, so the +assembly code generated by GCC will still show direct call +instructions—look at the disassembled object code to see the actual +instructions. Note that the assembler will use an indirect call for +every cross-file call, not just those that really will be out of range. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Zero-Length.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Zero-Length.html new file mode 100644 index 0000000..5387a06 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/Zero-Length.html @@ -0,0 +1,139 @@ + + +Zero Length - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: Fixed-Point, +Up: C Extensions +



+
+ +

5.14 Arrays of Length Zero

+ +

+Zero-length arrays are allowed in GNU C. They are very useful as the +last element of a structure which is really a header for a variable-length +object: + +

     struct line {
+       int length;
+       char contents[0];
+     };
+     
+     struct line *thisline = (struct line *)
+       malloc (sizeof (struct line) + this_length);
+     thisline->length = this_length;
+
+

In ISO C90, you would have to give contents a length of 1, which +means either you waste space or complicate the argument to malloc. + +

In ISO C99, you would use a flexible array member, which is +slightly different in syntax and semantics: + +

    +
  • Flexible array members are written as contents[] without +the 0. + +
  • Flexible array members have incomplete type, and so the sizeof +operator may not be applied. As a quirk of the original implementation +of zero-length arrays, sizeof evaluates to zero. + +
  • Flexible array members may only appear as the last member of a +struct that is otherwise non-empty. + +
  • A structure containing a flexible array member, or a union containing +such a structure (possibly recursively), may not be a member of a +structure or an element of an array. (However, these uses are +permitted by GCC as extensions.) +
+ +

GCC versions before 3.0 allowed zero-length arrays to be statically +initialized, as if they were flexible arrays. In addition to those +cases that were useful, it also allowed initializations in situations +that would corrupt later data. Non-empty initialization of zero-length +arrays is now treated like any case where there are more initializer +elements than the array holds, in that a suitable warning about "excess +elements in array" is given, and the excess elements (all of them, in +this case) are ignored. + +

Instead GCC allows static initialization of flexible array members. +This is equivalent to defining a new structure containing the original +structure followed by an array of sufficient size to contain the data. +I.e. in the following, f1 is constructed as if it were declared +like f2. + +

     struct f1 {
+       int x; int y[];
+     } f1 = { 1, { 2, 3, 4 } };
+     
+     struct f2 {
+       struct f1 f1; int data[3];
+     } f2 = { { 1 }, { 2, 3, 4 } };
+
+

The convenience of this extension is that f1 has the desired +type, eliminating the need to consistently refer to f2.f1. + +

This has symmetry with normal static arrays, in that an array of +unknown size is also written with []. + +

Of course, this extension only makes sense if the extra data comes at +the end of a top-level object, as otherwise we would be overwriting +data at subsequent offsets. To avoid undue complication and confusion +with initialization of deeply nested arrays, we simply disallow any +non-empty initialization except when the structure is the top-level +object. For example: + +

     struct foo { int x; int y[]; };
+     struct bar { struct foo z; };
+     
+     struct foo a = { 1, { 2, 3, 4 } };        // Valid.
+     struct bar b = { { 1, { 2, 3, 4 } } };    // Invalid.
+     struct bar c = { { 1, { } } };            // Valid.
+     struct foo d[1] = { { 1 { 2, 3, 4 } } };  // Invalid.
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/compatibility_005falias.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/compatibility_005falias.html new file mode 100644 index 0000000..fb97c23 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/compatibility_005falias.html @@ -0,0 +1,81 @@ + + +compatibility_alias - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +
+

+Previous: Constant string objects, +Up: Objective-C +



+
+ +

7.5 compatibility_alias

+ +

This is a feature of the Objective-C compiler rather than of the +runtime, anyway since it is documented nowhere and its existence was +forgotten, we are documenting it here. + +

The keyword @compatibility_alias allows you to define a class name +as equivalent to another class name. For example: + +

     @compatibility_alias WOApplication GSWApplication;
+
+

tells the compiler that each time it encounters WOApplication as +a class name, it should replace it with GSWApplication (that is, +WOApplication is just an alias for GSWApplication). + +

There are some constraints on how this can be used— + +

    +
  • WOApplication (the alias) must not be an existing class; + +
  • GSWApplication (the real class) must be an existing class. + +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/dashMF.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/dashMF.html new file mode 100644 index 0000000..9ee9956 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/dashMF.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/fdollars_002din_002didentifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/fdollars_002din_002didentifiers.html new file mode 100644 index 0000000..bc4a679 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/fdollars_002din_002didentifiers.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-Type-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-Type-Attributes.html new file mode 100644 index 0000000..6a026fd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-Type-Attributes.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-Variable-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-Variable-Attributes.html new file mode 100644 index 0000000..844a45c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-Variable-Attributes.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-and-x86_002d64-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-and-x86_002d64-Options.html new file mode 100644 index 0000000..00f07b4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/i386-and-x86_002d64-Options.html @@ -0,0 +1,510 @@ + + +i386 and x86-64 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: HPPA Options, +Up: Submodel Options +



+
+ +

3.17.14 Intel 386 and AMD x86-64 Options

+ +

+These -m options are defined for the i386 and x86-64 family of +computers: + +

+
-mtune=cpu-type
Tune to cpu-type everything applicable about the generated code, except +for the ABI and the set of available instructions. The choices for +cpu-type are: +
+
generic
Produce code optimized for the most common IA32/AMD64/EM64T processors. +If you know the CPU on which your code will run, then you should use +the corresponding -mtune option instead of +-mtune=generic. But, if you do not know exactly what CPU users +of your application will have, then you should use this option. + +

As new processors are deployed in the marketplace, the behavior of this +option will change. Therefore, if you upgrade to a newer version of +GCC, the code generated option will change to reflect the processors +that were most common when that version of GCC was released. + +

There is no -march=generic option because -march +indicates the instruction set the compiler can use, and there is no +generic instruction set applicable to all processors. In contrast, +-mtune indicates the processor (or, in this case, collection of +processors) for which the code is optimized. +

native
This selects the CPU to tune for at compilation time by determining +the processor type of the compiling machine. Using -mtune=native +will produce code optimized for the local machine under the constraints +of the selected instruction set. Using -march=native will +enable all instruction subsets supported by the local machine (hence +the result might not run on different machines). +
i386
Original Intel's i386 CPU. +
i486
Intel's i486 CPU. (No scheduling is implemented for this chip.) +
i586, pentium
Intel Pentium CPU with no MMX support. +
pentium-mmx
Intel PentiumMMX CPU based on Pentium core with MMX instruction set support. +
pentiumpro
Intel PentiumPro CPU. +
i686
Same as generic, but when used as march option, PentiumPro +instruction set will be used, so the code will run on all i686 family chips. +
pentium2
Intel Pentium2 CPU based on PentiumPro core with MMX instruction set support. +
pentium3, pentium3m
Intel Pentium3 CPU based on PentiumPro core with MMX and SSE instruction set +support. +
pentium-m
Low power version of Intel Pentium3 CPU with MMX, SSE and SSE2 instruction set +support. Used by Centrino notebooks. +
pentium4, pentium4m
Intel Pentium4 CPU with MMX, SSE and SSE2 instruction set support. +
prescott
Improved version of Intel Pentium4 CPU with MMX, SSE, SSE2 and SSE3 instruction +set support. +
nocona
Improved version of Intel Pentium4 CPU with 64-bit extensions, MMX, SSE, +SSE2 and SSE3 instruction set support. +
core2
Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 +instruction set support. +
k6
AMD K6 CPU with MMX instruction set support. +
k6-2, k6-3
Improved versions of AMD K6 CPU with MMX and 3dNOW! instruction set support. +
athlon, athlon-tbird
AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and SSE prefetch instructions +support. +
athlon-4, athlon-xp, athlon-mp
Improved AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and full SSE +instruction set support. +
k8, opteron, athlon64, athlon-fx
AMD K8 core based CPUs with x86-64 instruction set support. (This supersets +MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit instruction set extensions.) +
k8-sse3, opteron-sse3, athlon64-sse3
Improved versions of k8, opteron and athlon64 with SSE3 instruction set support. +
amdfam10, barcelona
AMD Family 10h core based CPUs with x86-64 instruction set support. (This +supersets MMX, SSE, SSE2, SSE3, SSE4A, 3dNOW!, enhanced 3dNOW!, ABM and 64-bit +instruction set extensions.) +
winchip-c6
IDT Winchip C6 CPU, dealt in same way as i486 with additional MMX instruction +set support. +
winchip2
IDT Winchip2 CPU, dealt in same way as i486 with additional MMX and 3dNOW! +instruction set support. +
c3
Via C3 CPU with MMX and 3dNOW! instruction set support. (No scheduling is +implemented for this chip.) +
c3-2
Via C3-2 CPU with MMX and SSE instruction set support. (No scheduling is +implemented for this chip.) +
geode
Embedded AMD CPU with MMX and 3dNOW! instruction set support. +
+ +

While picking a specific cpu-type will schedule things appropriately +for that particular chip, the compiler will not generate any code that +does not run on the i386 without the -march=cpu-type option +being used. + +

-march=cpu-type
Generate instructions for the machine type cpu-type. The choices +for cpu-type are the same as for -mtune. Moreover, +specifying -march=cpu-type implies -mtune=cpu-type. + +
-mcpu=cpu-type
A deprecated synonym for -mtune. + +
-mfpmath=unit
Generate floating point arithmetics for selected unit unit. The choices +for unit are: + +
+
387
Use the standard 387 floating point coprocessor present majority of chips and +emulated otherwise. Code compiled with this option will run almost everywhere. +The temporary results are computed in 80bit precision instead of precision +specified by the type resulting in slightly different results compared to most +of other chips. See -ffloat-store for more detailed description. + +

This is the default choice for i386 compiler. + +

sse
Use scalar floating point instructions present in the SSE instruction set. +This instruction set is supported by Pentium3 and newer chips, in the AMD line +by Athlon-4, Athlon-xp and Athlon-mp chips. The earlier version of SSE +instruction set supports only single precision arithmetics, thus the double and +extended precision arithmetics is still done using 387. Later version, present +only in Pentium4 and the future AMD x86-64 chips supports double precision +arithmetics too. + +

For the i386 compiler, you need to use -march=cpu-type, -msse +or -msse2 switches to enable SSE extensions and make this option +effective. For the x86-64 compiler, these extensions are enabled by default. + +

The resulting code should be considerably faster in the majority of cases and avoid +the numerical instability problems of 387 code, but may break some existing +code that expects temporaries to be 80bit. + +

This is the default choice for the x86-64 compiler. + +

sse,387
Attempt to utilize both instruction sets at once. This effectively double the +amount of available registers and on chips with separate execution units for +387 and SSE the execution resources too. Use this option with care, as it is +still experimental, because the GCC register allocator does not model separate +functional units well resulting in instable performance. +
+ +
-masm=dialect
Output asm instructions using selected dialect. Supported +choices are intel or att (the default one). Darwin does +not support intel. + +
-mieee-fp
-mno-ieee-fp
Control whether or not the compiler uses IEEE floating point +comparisons. These handle correctly the case where the result of a +comparison is unordered. + +
-msoft-float
Generate output containing library calls for floating point. +Warning: the requisite libraries are not part of GCC. +Normally the facilities of the machine's usual C compiler are used, but +this can't be done directly in cross-compilation. You must make your +own arrangements to provide suitable library functions for +cross-compilation. + +

On machines where a function returns floating point results in the 80387 +register stack, some floating point opcodes may be emitted even if +-msoft-float is used. + +

-mno-fp-ret-in-387
Do not use the FPU registers for return values of functions. + +

The usual calling convention has functions return values of types +float and double in an FPU register, even if there +is no FPU. The idea is that the operating system should emulate +an FPU. + +

The option -mno-fp-ret-in-387 causes such values to be returned +in ordinary CPU registers instead. + +

-mno-fancy-math-387
Some 387 emulators do not support the sin, cos and +sqrt instructions for the 387. Specify this option to avoid +generating those instructions. This option is the default on FreeBSD, +OpenBSD and NetBSD. This option is overridden when -march +indicates that the target cpu will always have an FPU and so the +instruction will not need emulation. As of revision 2.6.1, these +instructions are not generated unless you also use the +-funsafe-math-optimizations switch. + +
-malign-double
-mno-align-double
Control whether GCC aligns double, long double, and +long long variables on a two word boundary or a one word +boundary. Aligning double variables on a two word boundary will +produce code that runs somewhat faster on a Pentium at the +expense of more memory. + +

On x86-64, -malign-double is enabled by default. + +

Warning: if you use the -malign-double switch, +structures containing the above types will be aligned differently than +the published application binary interface specifications for the 386 +and will not be binary compatible with structures in code compiled +without that switch. + +

-m96bit-long-double
-m128bit-long-double
These switches control the size of long double type. The i386 +application binary interface specifies the size to be 96 bits, +so -m96bit-long-double is the default in 32 bit mode. + +

Modern architectures (Pentium and newer) would prefer long double +to be aligned to an 8 or 16 byte boundary. In arrays or structures +conforming to the ABI, this would not be possible. So specifying a +-m128bit-long-double will align long double +to a 16 byte boundary by padding the long double with an additional +32 bit zero. + +

In the x86-64 compiler, -m128bit-long-double is the default choice as +its ABI specifies that long double is to be aligned on 16 byte boundary. + +

Notice that neither of these options enable any extra precision over the x87 +standard of 80 bits for a long double. + +

Warning: if you override the default value for your target ABI, the +structures and arrays containing long double variables will change +their size as well as function calling convention for function taking +long double will be modified. Hence they will not be binary +compatible with arrays or structures in code compiled without that switch. + +

-mmlarge-data-threshold=number
When -mcmodel=medium is specified, the data greater than +threshold are placed in large data section. This value must be the +same across all object linked into the binary and defaults to 65535. + +
-mrtd
Use a different function-calling convention, in which functions that +take a fixed number of arguments return with the ret num +instruction, which pops their arguments while returning. This saves one +instruction in the caller since there is no need to pop the arguments +there. + +

You can specify that an individual function is called with this calling +sequence with the function attribute stdcall. You can also +override the -mrtd option by using the function attribute +cdecl. See Function Attributes. + +

Warning: this calling convention is incompatible with the one +normally used on Unix, so you cannot use it if you need to call +libraries compiled with the Unix compiler. + +

Also, you must provide function prototypes for all functions that +take variable numbers of arguments (including printf); +otherwise incorrect code will be generated for calls to those +functions. + +

In addition, seriously incorrect code will result if you call a +function with too many arguments. (Normally, extra arguments are +harmlessly ignored.) + +

-mregparm=num
Control how many registers are used to pass integer arguments. By +default, no registers are used to pass arguments, and at most 3 +registers can be used. You can control this behavior for a specific +function by using the function attribute regparm. +See Function Attributes. + +

Warning: if you use this switch, and +num is nonzero, then you must build all modules with the same +value, including any libraries. This includes the system libraries and +startup modules. + +

-msseregparm
Use SSE register passing conventions for float and double arguments +and return values. You can control this behavior for a specific +function by using the function attribute sseregparm. +See Function Attributes. + +

Warning: if you use this switch then you must build all +modules with the same value, including any libraries. This includes +the system libraries and startup modules. + +

-mpc32
-mpc64
-mpc80
+Set 80387 floating-point precision to 32, 64 or 80 bits. When -mpc32 +is specified, the significands of results of floating-point operations are +rounded to 24 bits (single precision); -mpc64 rounds the the +significands of results of floating-point operations to 53 bits (double +precision) and -mpc80 rounds the significands of results of +floating-point operations to 64 bits (extended double precision), which is +the default. When this option is used, floating-point operations in higher +precisions are not available to the programmer without setting the FPU +control word explicitly. + +

Setting the rounding of floating-point operations to less than the default +80 bits can speed some programs by 2% or more. Note that some mathematical +libraries assume that extended precision (80 bit) floating-point operations +are enabled by default; routines in such libraries could suffer significant +loss of accuracy, typically through so-called "catastrophic cancellation", +when this option is used to set the precision to less than extended precision. + +

-mstackrealign
Realign the stack at entry. On the Intel x86, the +-mstackrealign option will generate an alternate prologue and +epilogue that realigns the runtime stack. This supports mixing legacy +codes that keep a 4-byte aligned stack with modern codes that keep a +16-byte stack for SSE compatibility. The alternate prologue and +epilogue are slower and bigger than the regular ones, and the +alternate prologue requires an extra scratch register; this lowers the +number of registers available if used in conjunction with the +regparm attribute. The -mstackrealign option is +incompatible with the nested function prologue; this is considered a +hard error. See also the attribute force_align_arg_pointer, +applicable to individual functions. + +
-mpreferred-stack-boundary=num
Attempt to keep the stack boundary aligned to a 2 raised to num +byte boundary. If -mpreferred-stack-boundary is not specified, +the default is 4 (16 bytes or 128 bits). + +

On Pentium and PentiumPro, double and long double values +should be aligned to an 8 byte boundary (see -malign-double) or +suffer significant run time performance penalties. On Pentium III, the +Streaming SIMD Extension (SSE) data type __m128 may not work +properly if it is not 16 byte aligned. + +

To ensure proper alignment of this values on the stack, the stack boundary +must be as aligned as that required by any value stored on the stack. +Further, every function must be generated such that it keeps the stack +aligned. Thus calling a function compiled with a higher preferred +stack boundary from a function compiled with a lower preferred stack +boundary will most likely misalign the stack. It is recommended that +libraries that use callbacks always use the default setting. + +

This extra alignment does consume extra stack space, and generally +increases code size. Code that is sensitive to stack space usage, such +as embedded systems and operating system kernels, may want to reduce the +preferred alignment to -mpreferred-stack-boundary=2. + +

-mmmx
-mno-mmx
-msse
-mno-sse
-msse2
-mno-sse2
-msse3
-mno-sse3
-mssse3
-mno-ssse3
-msse4.1
-mno-sse4.1
-msse4.2
-mno-sse4.2
-msse4
-mno-sse4
-msse4a
-mno-sse4a
-msse5
-mno-sse5
-m3dnow
-mno-3dnow
-mpopcnt
-mno-popcnt
-mabm
-mno-abm
These switches enable or disable the use of instructions in the MMX, +SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4A, SSE5, ABM or 3DNow! extended +instruction sets. +These extensions are also available as built-in functions: see +X86 Built-in Functions, for details of the functions enabled and +disabled by these switches. + +

To have SSE/SSE2 instructions generated automatically from floating-point +code (as opposed to 387 instructions), see -mfpmath=sse. + +

These options will enable GCC to use these extended instructions in +generated code, even without -mfpmath=sse. Applications which +perform runtime CPU detection must compile separate files for each +supported architecture, using the appropriate flags. In particular, +the file containing the CPU detection code should be compiled without +these options. + +

-mcld
This option instructs GCC to emit a cld instruction in the prologue +of functions that use string instructions. String instructions depend on +the DF flag to select between autoincrement or autodecrement mode. While the +ABI specifies the DF flag to be cleared on function entry, some operating +systems violate this specification by not clearing the DF flag in their +exception dispatchers. The exception handler can be invoked with the DF flag +set which leads to wrong direction mode, when string instructions are used. +This option can be enabled by default on 32-bit x86 targets by configuring +GCC with the --enable-cld configure option. Generation of cld +instructions can be suppressed with the -mno-cld compiler option +in this case. + +
-mcx16
This option will enable GCC to use CMPXCHG16B instruction in generated code. +CMPXCHG16B allows for atomic operations on 128-bit double quadword (or oword) +data types. This is useful for high resolution counters that could be updated +by multiple processors (or cores). This instruction is generated as part of +atomic built-in functions: see Atomic Builtins for details. + +
-msahf
This option will enable GCC to use SAHF instruction in generated 64-bit code. +Early Intel CPUs with Intel 64 lacked LAHF and SAHF instructions supported +by AMD64 until introduction of Pentium 4 G1 step in December 2005. LAHF and +SAHF are load and store instructions, respectively, for certain status flags. +In 64-bit mode, SAHF instruction is used to optimize fmod, drem +or remainder built-in functions: see Other Builtins for details. + +
-mrecip
This option will enable GCC to use RCPSS and RSQRTSS instructions (and their +vectorized variants RCPPS and RSQRTPS) with an additional Newton-Rhapson step +to increase precision instead of DIVSS and SQRTSS (and their vectorized +variants) for single precision floating point arguments. These instructions +are generated only when -funsafe-math-optimizations is enabled +together with -finite-math-only and -fno-trapping-math. +Note that while the throughput of the sequence is higher than the throughput +of the non-reciprocal instruction, the precision of the sequence can be +decreased by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994). + +
-mveclibabi=type
Specifies the ABI type to use for vectorizing intrinsics using an +external library. Supported types are acml for the AMD +math core library style of interfacing. GCC will currently emit +calls to __vrd2_sin, __vrd2_cos, __vrd2_exp, +__vrd2_log, __vrd2_log2, __vrd2_log10, +__vrs4_sinf, __vrs4_cosf, __vrs4_expf, +__vrs4_logf, __vrs4_log2f, __vrs4_log10f +and __vrs4_powf when using this type and -ftree-vectorize +is enabled. A ACML ABI compatible library will have to be specified +at link time. + +
-mpush-args
-mno-push-args
Use PUSH operations to store outgoing parameters. This method is shorter +and usually equally fast as method using SUB/MOV operations and is enabled +by default. In some cases disabling it may improve performance because of +improved scheduling and reduced dependencies. + +
-maccumulate-outgoing-args
If enabled, the maximum amount of space required for outgoing arguments will be +computed in the function prologue. This is faster on most modern CPUs +because of reduced dependencies, improved scheduling and reduced stack usage +when preferred stack boundary is not equal to 2. The drawback is a notable +increase in code size. This switch implies -mno-push-args. + +
-mthreads
Support thread-safe exception handling on Mingw32. Code that relies +on thread-safe exception handling must compile and link all code with the +-mthreads option. When compiling, -mthreads defines +-D_MT; when linking, it links in a special thread helper library +-lmingwthrd which cleans up per thread exception handling data. + +
-mno-align-stringops
Do not align destination of inlined string operations. This switch reduces +code size and improves performance in case the destination is already aligned, +but GCC doesn't know about it. + +
-minline-all-stringops
By default GCC inlines string operations only when destination is known to be +aligned at least to 4 byte boundary. This enables more inlining, increase code +size, but may improve performance of code that depends on fast memcpy, strlen +and memset for short lengths. + +
-minline-stringops-dynamically
For string operation of unknown size, inline runtime checks so for small +blocks inline code is used, while for large blocks library call is used. + +
-mstringop-strategy=alg
Overwrite internal decision heuristic about particular algorithm to inline +string operation with. The allowed values are rep_byte, +rep_4byte, rep_8byte for expanding using i386 rep prefix +of specified size, byte_loop, loop, unrolled_loop for +expanding inline loop, libcall for always expanding library call. + +
-momit-leaf-frame-pointer
Don't keep the frame pointer in a register for leaf functions. This +avoids the instructions to save, set up and restore frame pointers and +makes an extra register available in leaf functions. The option +-fomit-frame-pointer removes the frame pointer for all functions +which might make debugging harder. + +
-mtls-direct-seg-refs
-mno-tls-direct-seg-refs
Controls whether TLS variables may be accessed with offsets from the +TLS segment register (%gs for 32-bit, %fs for 64-bit), +or whether the thread base pointer must be added. Whether or not this +is legal depends on the operating system, and whether it maps the +segment to cover the entire TLS area. + +

For systems that use GNU libc, the default is on. + +

-mfused-madd
-mno-fused-madd
Enable automatic generation of fused floating point multiply-add instructions +if the ISA supports such instructions. The -mfused-madd option is on by +default. The fused multiply-add instructions have a different +rounding behavior compared to executing a multiply followed by an add. +
+ +

These -m switches are supported in addition to the above +on AMD x86-64 processors in 64-bit environments. + +

+
-m32
-m64
Generate code for a 32-bit or 64-bit environment. +The 32-bit environment sets int, long and pointer to 32 bits and +generates code that runs on any i386 system. +The 64-bit environment sets int to 32 bits and long and pointer +to 64 bits and generates code for AMD's x86-64 architecture. For +darwin only the -m64 option turns off the -fno-pic and +-mdynamic-no-pic options. + +
-mno-red-zone
Do not use a so called red zone for x86-64 code. The red zone is mandated +by the x86-64 ABI, it is a 128-byte area beyond the location of the +stack pointer that will not be modified by signal or interrupt handlers +and therefore can be used for temporary data without adjusting the stack +pointer. The flag -mno-red-zone disables this red zone. + +
-mcmodel=small
Generate code for the small code model: the program and its symbols must +be linked in the lower 2 GB of the address space. Pointers are 64 bits. +Programs can be statically or dynamically linked. This is the default +code model. + +
-mcmodel=kernel
Generate code for the kernel code model. The kernel runs in the +negative 2 GB of the address space. +This model has to be used for Linux kernel code. + +
-mcmodel=medium
Generate code for the medium model: The program is linked in the lower 2 +GB of the address space but symbols can be located anywhere in the +address space. Programs can be statically or dynamically linked, but +building of shared libraries are not supported with the medium model. + +
-mcmodel=large
Generate code for the large model: This model makes no assumptions +about addresses and sizes of sections. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/index.html new file mode 100644 index 0000000..a59b2e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/index.html @@ -0,0 +1,539 @@ + + +Using the GNU Compiler Collection (GCC) + + + + + + + + + + +This file documents the use of the GNU compilers. +
+
+
+Copyright © 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 +2008 Free Software Foundation, Inc. + +

Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with the +Invariant Sections being “GNU General Public License” and “Funding +Free Software”, the Front-Cover texts being (a) (see below), and with +the Back-Cover Texts being (b) (see below). A copy of the license is +included in the section entitled “GNU Free Documentation License”. + +

(a) The FSF's Front-Cover Text is: + +

A GNU Manual + +

(b) The FSF's Back-Cover Text is: + +

You have freedom to copy and modify this GNU Manual, like GNU + software. Copies published by the Free Software Foundation raise + funds for GNU development. +

+
+
+ + + + + +
+

Table of Contents

+ +
+ +
+

+Next: , +Up: (DIR) +



+
+ +

Introduction

+ +

+This manual documents how to use the GNU compilers, +as well as their features and incompatibilities, and how to report +bugs. It corresponds to the compilers +(WinAVR 20081205) +version 4.3.2. +The internals of the GNU compilers, including how to port them to new +targets and some information about how to write front ends for new +languages, are documented in a separate manual. See Introduction (GNU Compiler Collection (GCC) Internals). + +

+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/x86_002d64-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/x86_002d64-Options.html new file mode 100644 index 0000000..431f1fd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/x86_002d64-Options.html @@ -0,0 +1,61 @@ + + +x86-64 Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + + +
+

+Next: , +Previous: VxWorks Options, +Up: Submodel Options +



+
+ +

3.17.37 x86-64 Options

+ +

+These are listed under See i386 and x86-64 Options. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/zSeries-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/zSeries-Options.html new file mode 100644 index 0000000..2545f7c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gcc/zSeries-Options.html @@ -0,0 +1,59 @@ + + +zSeries Options - Using the GNU Compiler Collection (GCC) + + + + + + + + + + + + +

+

+Previous: Xtensa Options, +Up: Submodel Options +



+
+ +

3.17.40 zSeries Options

+ +

+These are listed under See S/390 and zSeries Options. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/binaries.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/binaries.html new file mode 100644 index 0000000..67c9434 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/binaries.html @@ -0,0 +1,119 @@ + + +Installing GCC: Binaries + + + + + + + + + + +

Installing GCC: Binaries

+ +We are often asked about pre-compiled versions of GCC. While we cannot +provide these for all platforms, below you'll find links to binaries for +various platforms where creating them by yourself is not easy due to various +reasons. + +

Please note that we did not create these binaries, nor do we +support them. If you have any problems installing them, please +contact their makers. + +

+ +

In addition to those specific offerings, you can get a binary +distribution CD-ROM from the +Free Software Foundation. +It contains binaries for a number of platforms, and +includes not only GCC, but other stuff as well. The current CD does +not contain the latest version of GCC, but it should allow +bootstrapping the compiler. An updated version of that disk is in the +works. + +


+

Return to the GCC Installation page + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/build.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/build.html new file mode 100644 index 0000000..ecb1fee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/build.html @@ -0,0 +1,313 @@ + + +Installing GCC: Building + + + + + + + + + + +

Installing GCC: Building

+ +Now that GCC is configured, you are ready to build the compiler and +runtime libraries. + +

Some commands executed when making the compiler may fail (return a +nonzero status) and be ignored by make. These failures, which +are often due to files that were not found, are expected, and can safely +be ignored. + +

It is normal to have compiler warnings when compiling certain files. +Unless you are a GCC developer, you can generally ignore these warnings +unless they cause compilation to fail. Developers should attempt to fix +any warnings encountered, however they can temporarily continue past +warnings-as-errors by specifying the configure flag +--disable-werror. + +

On certain old systems, defining certain environment variables such as +CC can interfere with the functioning of make. + +

If you encounter seemingly strange errors when trying to build the +compiler in a directory other than the source directory, it could be +because you have previously configured the compiler in the source +directory. Make sure you have done all the necessary preparations. + +

If you build GCC on a BSD system using a directory stored in an old System +V file system, problems may occur in running fixincludes if the +System V file system doesn't support symbolic links. These problems +result in a failure to fix the declaration of size_t in +sys/types.h. If you find that size_t is a signed type and +that type mismatches occur, this could be the cause. + +

The solution is not to use such a directory for building GCC. + +

When building from SVN or snapshots and enabling the treelang +front end, or if you modify *.y files, you need the Bison parser +generator installed. If you do not modify *.y files, releases +contain the Bison-generated files and you do not need Bison installed +to build them. Note that most front ends now use hand-written parsers, +which can be modified with no need for Bison. + +

Similarly, when building from SVN or snapshots, or if you modify +*.l files, you need the Flex lexical analyzer generator installed. +There is still one Flex-based lexical analyzer (part of the build +machinery, not of GCC itself) that is used even if you only build the +C front end. + +

When building from SVN or snapshots, or if you modify Texinfo +documentation, you need version 4.4 or later of Texinfo installed if you +want Info documentation to be regenerated. Releases contain Info +documentation pre-built for the unmodified documentation in the release. + +

0.1 Building a native compiler

+ +

For a native build, the default configuration is to perform +a 3-stage bootstrap of the compiler when make is invoked. +This will build the entire GCC system and ensure that it compiles +itself correctly. It can be disabled with the --disable-bootstrap +parameter to configure, but bootstrapping is suggested because +the compiler will be tested more completely and could also have +better performance. + +

The bootstrapping process will complete the following steps: + +

    +
  • Build tools necessary to build the compiler. + +
  • Perform a 3-stage bootstrap of the compiler. This includes building +three times the target tools for use by the compiler such as binutils +(bfd, binutils, gas, gprof, ld, and opcodes) if they have been +individually linked or moved into the top level GCC source tree before +configuring. + +
  • Perform a comparison test of the stage2 and stage3 compilers. + +
  • Build runtime libraries using the stage3 compiler from the previous step. + +
+ +

If you are short on disk space you might consider make +bootstrap-lean instead. The sequence of compilation is the +same described above, but object files from the stage1 and +stage2 of the 3-stage bootstrap of the compiler are deleted as +soon as they are no longer needed. + +

If you want to save additional space during the bootstrap and in +the final installation as well, you can build the compiler binaries +without debugging information as in the following example. This will save +roughly 40% of disk space both for the bootstrap and the final installation. +(Libraries will still contain debugging information.) + +

          make CFLAGS='-O' LIBCFLAGS='-g -O2' \
+            LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap
+
+

If you wish to use non-default GCC flags when compiling the stage2 and +stage3 compilers, set BOOT_CFLAGS on the command line when doing +make. Non-default optimization flags are less well +tested here than the default of -g -O2, but should still work. +In a few cases, you may find that you need to specify special flags such +as -msoft-float here to complete the bootstrap; or, if the +native compiler miscompiles the stage1 compiler, you may need to work +around this, by choosing BOOT_CFLAGS to avoid the parts of the +stage1 compiler that were miscompiled, or by using make +bootstrap4 to increase the number of stages of bootstrap. + +

Note that using non-standard CFLAGS can cause bootstrap to fail +if these trigger a warning with the new compiler. For example using +-O2 -g -mcpu=i686 on i686-pc-linux-gnu will cause bootstrap +failure as -mcpu= is deprecated in 3.4.0 and above. + +

If you used the flag --enable-languages=... to restrict +the compilers to be built, only those you've actually enabled will be +built. This will of course only build those runtime libraries, for +which the particular compiler has been built. Please note, +that re-defining LANGUAGES when calling make +does not work anymore! + +

If the comparison of stage2 and stage3 fails, this normally indicates +that the stage2 compiler has compiled GCC incorrectly, and is therefore +a potentially serious bug which you should investigate and report. (On +a few systems, meaningful comparison of object files is impossible; they +always appear “different”. If you encounter this problem, you will +need to disable comparison in the Makefile.) + +

If you do not want to bootstrap your compiler, you can configure with +--disable-bootstrap. In particular cases, you may want to +bootstrap your compiler even if the target system is not the same as +the one you are building on: for example, you could build a +powerpc-unknown-linux-gnu toolchain on a +powerpc64-unknown-linux-gnu host. In this case, pass +--enable-bootstrap to the configure script. + +

0.2 Building a cross compiler

+ +

When building a cross compiler, it is not generally possible to do a +3-stage bootstrap of the compiler. This makes for an interesting problem +as parts of GCC can only be built with GCC. + +

To build a cross compiler, we first recommend building and installing a +native compiler. You can then use the native GCC compiler to build the +cross compiler. The installed native compiler needs to be GCC version +2.95 or later. + +

If the cross compiler is to be built with support for the Java +programming language and the ability to compile .java source files is +desired, the installed native compiler used to build the cross +compiler needs to be the same GCC version as the cross compiler. In +addition the cross compiler needs to be configured with +--with-ecj-jar=.... + +

Assuming you have already installed a native copy of GCC and configured +your cross compiler, issue the command make, which performs the +following steps: + +

    +
  • Build host tools necessary to build the compiler. + +
  • Build target tools for use by the compiler such as binutils (bfd, +binutils, gas, gprof, ld, and opcodes) +if they have been individually linked or moved into the top level GCC source +tree before configuring. + +
  • Build the compiler (single stage only). + +
  • Build runtime libraries using the compiler from the previous step. +
+ +

Note that if an error occurs in any step the make process will exit. + +

If you are not building GNU binutils in the same source tree as GCC, +you will need a cross-assembler and cross-linker installed before +configuring GCC. Put them in the directory +prefix/target/bin. Here is a table of the tools +you should put in this directory: + +

+
as
This should be the cross-assembler. + +
ld
This should be the cross-linker. + +
ar
This should be the cross-archiver: a program which can manipulate +archive files (linker libraries) in the target machine's format. + +
ranlib
This should be a program to construct a symbol table in an archive file. +
+ +

The installation of GCC will find these programs in that directory, +and copy or link them to the proper place to for the cross-compiler to +find them when run later. + +

The easiest way to provide these files is to build the Binutils package. +Configure it with the same --host and --target +options that you use for configuring GCC, then build and install +them. They install their executables automatically into the proper +directory. Alas, they do not support all the targets that GCC +supports. + +

If you are not building a C library in the same source tree as GCC, +you should also provide the target libraries and headers before +configuring GCC, specifying the directories with +--with-sysroot or --with-headers and +--with-libs. Many targets also require “start files” such +as crt0.o and +crtn.o which are linked into each executable. There may be several +alternatives for crt0.o, for use with profiling or other +compilation options. Check your target's definition of +STARTFILE_SPEC to find out what start files it uses. + +

0.3 Building in parallel

+ +

GNU Make 3.79 and above, which is necessary to build GCC, support +building in parallel. To activate this, you can use make -j 2 +instead of make. You can also specify a bigger number, and +in most cases using a value greater than the number of processors in +your machine will result in fewer and shorter I/O latency hits, thus +improving overall throughput; this is especially true for slow drives +and network filesystems. + +

0.4 Building the Ada compiler

+ +

In order to build GNAT, the Ada compiler, you need a working GNAT +compiler (GNAT version 3.14 or later, or GCC version 3.1 or later). +This includes GNAT tools such as gnatmake and +gnatlink, since the Ada front end is written in Ada and +uses some GNAT-specific extensions. + +

In order to build a cross compiler, it is suggested to install +the new compiler as native first, and then use it to build the cross +compiler. + +

configure does not test whether the GNAT installation works +and has a sufficiently recent version; if too old a GNAT version is +installed, the build will fail unless --enable-languages is +used to disable building the Ada front end. + +

ADA_INCLUDE_PATH and ADA_OBJECT_PATH environment variables +must not be set when building the Ada compiler, the Ada tools, or the +Ada runtime libraries. You can check that your build environment is clean +by verifying that gnatls -v lists only one explicit path in each +section. + +

0.5 Building with profile feedback

+ +

It is possible to use profile feedback to optimize the compiler itself. This +should result in a faster compiler binary. Experiments done on x86 using gcc +3.3 showed approximately 7 percent speedup on compiling C programs. To +bootstrap the compiler with profile feedback, use make profiledbootstrap. + +

When make profiledbootstrap is run, it will first build a stage1 +compiler. This compiler is used to build a stageprofile compiler +instrumented to collect execution counts of instruction and branch +probabilities. Then runtime libraries are compiled with profile collected. +Finally a stagefeedback compiler is built using the information collected. + +

Unlike standard bootstrap, several additional restrictions apply. The +compiler used to build stage1 needs to support a 64-bit integral type. +It is recommended to only use GCC for this. Also parallel make is currently +not supported since collisions in profile collecting may occur. + +


+

Return to the GCC Installation page + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/configure.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/configure.html new file mode 100644 index 0000000..65fde05 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/configure.html @@ -0,0 +1,1008 @@ + + +Installing GCC: Configuration + + + + + + + + + + +

Installing GCC: Configuration

+ +Like most GNU software, GCC must be configured before it can be built. +This document describes the recommended configuration procedure +for both native and cross targets. + +

We use srcdir to refer to the toplevel source directory for +GCC; we use objdir to refer to the toplevel build/object directory. + +

If you obtained the sources via SVN, srcdir must refer to the top +gcc directory, the one where the MAINTAINERS can be found, +and not its gcc subdirectory, otherwise the build will fail. + +

If either srcdir or objdir is located on an automounted NFS +file system, the shell's built-in pwd command will return +temporary pathnames. Using these can lead to various sorts of build +problems. To avoid this issue, set the PWDCMD environment +variable to an automounter-aware pwd command, e.g., +pawd or amq -w, during the configuration and build +phases. + +

First, we highly recommend that GCC be built into a +separate directory than the sources which does not reside +within the source tree. This is how we generally build GCC; building +where srcdir == objdir should still work, but doesn't +get extensive testing; building where objdir is a subdirectory +of srcdir is unsupported. + +

If you have previously built GCC in the same directory for a +different target machine, do make distclean to delete all files +that might be invalid. One of the files this deletes is Makefile; +if make distclean complains that Makefile does not exist +or issues a message like “don't know how to make distclean” it probably +means that the directory is already suitably clean. However, with the +recommended method of building in a separate objdir, you should +simply use a different objdir for each target. + +

Second, when configuring a native system, either cc or +gcc must be in your path or you must set CC in +your environment before running configure. Otherwise the configuration +scripts may fail. + +

To configure GCC: + +

        % mkdir objdir
+        % cd objdir
+        % srcdir/configure [options] [target]
+
+

Distributor options

+ +

If you will be distributing binary versions of GCC, with modifications +to the source code, you should use the options described in this +section to make clear that your version contains modifications. + +

+
--with-pkgversion=version
Specify a string that identifies your package. You may wish +to include a build number or build date. This version string will be +included in the output of gcc --version. This suffix does +not replace the default version string, only the GCC part. + +

The default value is GCC. + +

--with-bugurl=url
Specify the URL that users should visit if they wish to report a bug. +You are of course welcome to forward bugs reported to you to the FSF, +if you determine that they are not bugs in your modifications. + +

The default value refers to the FSF's GCC bug tracker. + +

+ +

Target specification

+ +
    +
  • GCC has code to correctly determine the correct value for target +for nearly all native systems. Therefore, we highly recommend you not +provide a configure target when configuring a native compiler. + +
  • target must be specified as --target=target +when configuring a cross compiler; examples of valid targets would be +m68k-coff, sh-elf, etc. + +
  • Specifying just target instead of --target=target +implies that the host defaults to target. +
+ +

Options specification

+ +

Use options to override several configure time options for +GCC. A list of supported options follows; configure +--help may list other options, but those not listed below may not +work and should not normally be used. + +

Note that each --enable option has a corresponding +--disable option and that each --with option has a +corresponding --without option. + +

+
--prefix=dirname
Specify the toplevel installation +directory. This is the recommended way to install the tools into a directory +other than the default. The toplevel installation directory defaults to +/usr/local. + +

We highly recommend against dirname being the same or a +subdirectory of objdir or vice versa. If specifying a directory +beneath a user's home directory tree, some shells will not expand +dirname correctly if it contains the ~ metacharacter; use +$HOME instead. + +

The following standard autoconf options are supported. Normally you +should not need to use these options. +

+
--exec-prefix=dirname
Specify the toplevel installation directory for architecture-dependent +files. The default is prefix. + +
--bindir=dirname
Specify the installation directory for the executables called by users +(such as gcc and g++). The default is +exec-prefix/bin. + +
--libdir=dirname
Specify the installation directory for object code libraries and +internal data files of GCC. The default is exec-prefix/lib. + +
--libexecdir=dirname
Specify the installation directory for internal executables of GCC. + The default is exec-prefix/libexec. + +
--with-slibdir=dirname
Specify the installation directory for the shared libgcc library. The +default is libdir. + +
--infodir=dirname
Specify the installation directory for documentation in info format. +The default is prefix/info. + +
--datadir=dirname
Specify the installation directory for some architecture-independent +data files referenced by GCC. The default is prefix/share. + +
--mandir=dirname
Specify the installation directory for manual pages. The default is +prefix/man. (Note that the manual pages are only extracts from +the full GCC manuals, which are provided in Texinfo format. The manpages +are derived by an automatic conversion process from parts of the full +manual.) + +
--with-gxx-include-dir=dirname
Specify +the installation directory for G++ header files. The default is +prefix/include/c++/version. + +
+ +
--program-prefix=prefix
GCC supports some transformations of the names of its programs when +installing them. This option prepends prefix to the names of +programs to install in bindir (see above). For example, specifying +--program-prefix=foo- would result in gcc +being installed as /usr/local/bin/foo-gcc. + +
--program-suffix=suffix
Appends suffix to the names of programs to install in bindir +(see above). For example, specifying --program-suffix=-3.1 +would result in gcc being installed as +/usr/local/bin/gcc-3.1. + +
--program-transform-name=pattern
Applies the sed script pattern to be applied to the names +of programs to install in bindir (see above). pattern has to +consist of one or more basic sed editing commands, separated by +semicolons. For example, if you want the gcc program name to be +transformed to the installed program /usr/local/bin/myowngcc and +the g++ program name to be transformed to +/usr/local/bin/gspecial++ without changing other program names, +you could use the pattern +--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/' +to achieve this effect. + +

All three options can be combined and used together, resulting in more +complex conversion patterns. As a basic rule, prefix (and +suffix) are prepended (appended) before further transformations +can happen with a special transformation script pattern. + +

As currently implemented, this option only takes effect for native +builds; cross compiler binaries' names are not transformed even when a +transformation is explicitly asked for by one of these options. + +

For native builds, some of the installed programs are also installed +with the target alias in front of their name, as in +i686-pc-linux-gnu-gcc. All of the above transformations happen +before the target alias is prepended to the name—so, specifying +--program-prefix=foo- and program-suffix=-3.1, the +resulting binary would be installed as +/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1. + +

As a last shortcoming, none of the installed Ada programs are +transformed yet, which will be fixed in some time. + +

--with-local-prefix=dirname
Specify the +installation directory for local include files. The default is +/usr/local. Specify this option if you want the compiler to +search directory dirname/include for locally installed +header files instead of /usr/local/include. + +

You should specify --with-local-prefix only if your +site has a different convention (not /usr/local) for where to put +site-specific files. + +

The default value for --with-local-prefix is /usr/local +regardless of the value of --prefix. Specifying +--prefix has no effect on which directory GCC searches for +local header files. This may seem counterintuitive, but actually it is +logical. + +

The purpose of --prefix is to specify where to install +GCC. The local header files in /usr/local/include—if you put +any in that directory—are not part of GCC. They are part of other +programs—perhaps many others. (GCC installs its own header files in +another directory which is based on the --prefix value.) + +

Both the local-prefix include directory and the GCC-prefix include +directory are part of GCC's “system include” directories. Although these +two directories are not fixed, they need to be searched in the proper +order for the correct processing of the include_next directive. The +local-prefix include directory is searched before the GCC-prefix +include directory. Another characteristic of system include directories +is that pedantic warnings are turned off for headers in these directories. + +

Some autoconf macros add -I directory options to the +compiler command line, to ensure that directories containing installed +packages' headers are searched. When directory is one of GCC's +system include directories, GCC will ignore the option so that system +directories continue to be processed in the correct order. This +may result in a search order different from what was specified but the +directory will still be searched. + +

GCC automatically searches for ordinary libraries using +GCC_EXEC_PREFIX. Thus, when the same installation prefix is +used for both GCC and packages, GCC will automatically search for +both headers and libraries. This provides a configuration that is +easy to use. GCC behaves in a manner similar to that when it is +installed as a system compiler in /usr. + +

Sites that need to install multiple versions of GCC may not want to +use the above simple configuration. It is possible to use the +--program-prefix, --program-suffix and +--program-transform-name options to install multiple versions +into a single directory, but it may be simpler to use different prefixes +and the --with-local-prefix option to specify the location of the +site-specific files for each version. It will then be necessary for +users to specify explicitly the location of local site libraries +(e.g., with LIBRARY_PATH). + +

The same value can be used for both --with-local-prefix and +--prefix provided it is not /usr. This can be used +to avoid the default search of /usr/local/include. + +

Do not specify /usr as the --with-local-prefix! +The directory you use for --with-local-prefix must not +contain any of the system's standard header files. If it did contain +them, certain programs would be miscompiled (including GNU Emacs, on +certain targets), because this would override and nullify the header +file corrections made by the fixincludes script. + +

Indications are that people who use this option use it based on mistaken +ideas of what it is for. People use it as if it specified where to +install part of GCC. Perhaps they make this assumption because +installing GCC creates the directory. + +

--enable-shared[=package[,...]]
Build shared versions of libraries, if shared libraries are supported on +the target platform. Unlike GCC 2.95.x and earlier, shared libraries +are enabled by default on all platforms that support shared libraries. + +

If a list of packages is given as an argument, build shared libraries +only for the listed packages. For other packages, only static libraries +will be built. Package names currently recognized in the GCC tree are +libgcc (also known as gcc), libstdc++ (not +libstdc++-v3), libffi, zlib, boehm-gc, +ada, libada, libjava and libobjc. +Note libiberty does not support shared libraries at all. + +

Use --disable-shared to build only static libraries. Note that +--disable-shared does not accept a list of package names as +argument, only --enable-shared does. + +

--with-gnu-as
Specify that the compiler should assume that the +assembler it finds is the GNU assembler. However, this does not modify +the rules to find an assembler and will result in confusion if the +assembler found is not actually the GNU assembler. (Confusion may also +result if the compiler finds the GNU assembler but has not been +configured with --with-gnu-as.) If you have more than one +assembler installed on your system, you may want to use this option in +connection with --with-as=pathname or +--with-build-time-tools=pathname. + +

The following systems are the only ones where it makes a difference +whether you use the GNU assembler. On any other system, +--with-gnu-as has no effect. + +

    +
  • hppa1.0-any-any +
  • hppa1.1-any-any +
  • i386-any-sysv +
  • m68k-bull-sysv +
  • m68k-hp-hpux +
  • m68000-hp-hpux +
  • m68000-att-sysv +
  • sparc-sun-solaris2.any +
  • sparc64-any-solaris2.any +
+ +

On the systems listed above (except for the HP-PA, the SPARC, for ISC on +the 386, if you use the GNU assembler, you should also use the GNU linker +(and specify --with-gnu-ld). + +

--with-as=pathname
Specify that the compiler should use the assembler pointed to by +pathname, rather than the one found by the standard rules to find +an assembler, which are: +
    +
  • Unless GCC is being built with a cross compiler, check the +libexec/gcc/target/version directory. +libexec defaults to exec-prefix/libexec; +exec-prefix defaults to prefix, which +defaults to /usr/local unless overridden by the +--prefix=pathname switch described above. target +is the target system triple, such as sparc-sun-solaris2.7, and +version denotes the GCC version, such as 3.0. + +
  • If the target system is the same that you are building on, check +operating system specific directories (e.g. /usr/ccs/bin on +Sun Solaris 2). + +
  • Check in the PATH for a tool whose name is prefixed by the +target system triple. + +
  • Check in the PATH for a tool whose name is not prefixed by the +target system triple, if the host and target system triple are +the same (in other words, we use a host tool if it can be used for +the target as well). +
+ +

You may want to use --with-as if no assembler +is installed in the directories listed above, or if you have multiple +assemblers installed and want to choose one that is not found by the +above rules. + +

--with-gnu-ld
Same as --with-gnu-as +but for the linker. + +
--with-ld=pathname
Same as --with-as +but for the linker. + +
--with-stabs
Specify that stabs debugging +information should be used instead of whatever format the host normally +uses. Normally GCC uses the same debug format as the host system. + +

On MIPS based systems and on Alphas, you must specify whether you want +GCC to create the normal ECOFF debugging format, or to use BSD-style +stabs passed through the ECOFF symbol table. The normal ECOFF debug +format cannot fully handle languages other than C. BSD stabs format can +handle other languages, but it only works with the GNU debugger GDB. + +

Normally, GCC uses the ECOFF debugging format by default; if you +prefer BSD stabs, specify --with-stabs when you configure GCC. + +

No matter which default you choose when you configure GCC, the user +can use the -gcoff and -gstabs+ options to specify explicitly +the debug format for a particular compilation. + +

--with-stabs is meaningful on the ISC system on the 386, also, if +--with-gas is used. It selects use of stabs debugging +information embedded in COFF output. This kind of debugging information +supports C++ well; ordinary COFF debugging information does not. + +

--with-stabs is also meaningful on 386 systems running SVR4. It +selects use of stabs debugging information embedded in ELF output. The +C++ compiler currently (2.6.0) does not support the DWARF debugging +information normally used on 386 SVR4 platforms; stabs provide a +workable alternative. This requires gas and gdb, as the normal SVR4 +tools can not generate or interpret stabs. + +

--disable-multilib
Specify that multiple target +libraries to support different target variants, calling +conventions, etc. should not be built. The default is to build a +predefined set of them. + +

Some targets provide finer-grained control over which multilibs are built +(e.g., --disable-softfloat): +

+
arc-*-elf*
biendian. + +
arm-*-*
fpu, 26bit, underscore, interwork, biendian, nofmult. + +
m68*-*-*
softfloat, m68881, m68000, m68020. + +
mips*-*-*
single-float, biendian, softfloat. + +
powerpc*-*-*, rs6000*-*-*
aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian, +sysv, aix. + +
+ +
--enable-threads
Specify that the target +supports threads. This affects the Objective-C compiler and runtime +library, and exception handling for other languages like C++ and Java. +On some systems, this is the default. + +

In general, the best (and, in many cases, the only known) threading +model available will be configured for use. Beware that on some +systems, GCC has not been taught what threading models are generally +available for the system. In this case, --enable-threads is an +alias for --enable-threads=single. + +

--disable-threads
Specify that threading support should be disabled for the system. +This is an alias for --enable-threads=single. + +
--enable-threads=lib
Specify that +lib is the thread support library. This affects the Objective-C +compiler and runtime library, and exception handling for other languages +like C++ and Java. The possibilities for lib are: + +
+
aix
AIX thread support. +
dce
DCE thread support. +
gnat
Ada tasking support. For non-Ada programs, this setting is equivalent +to single. When used in conjunction with the Ada run time, it +causes GCC to use the same thread primitives as Ada uses. This option +is necessary when using both Ada and the back end exception handling, +which is the default for most Ada targets. +
mach
Generic MACH thread support, known to work on NeXTSTEP. (Please note +that the file needed to support this configuration, gthr-mach.h, is +missing and thus this setting will cause a known bootstrap failure.) +
no
This is an alias for single. +
posix
Generic POSIX/Unix98 thread support. +
posix95
Generic POSIX/Unix95 thread support. +
rtems
RTEMS thread support. +
single
Disable thread support, should work for all platforms. +
solaris
Sun Solaris 2 thread support. +
vxworks
VxWorks thread support. +
win32
Microsoft Win32 API thread support. +
nks
Novell Kernel Services thread support. +
+ +
--enable-tls
Specify that the target supports TLS (Thread Local Storage). Usually +configure can correctly determine if TLS is supported. In cases where +it guesses incorrectly, TLS can be explicitly enabled or disabled with +--enable-tls or --disable-tls. This can happen if +the assembler supports TLS but the C library does not, or if the +assumptions made by the configure test are incorrect. + +
--disable-tls
Specify that the target does not support TLS. +This is an alias for --enable-tls=no. + +
--with-cpu=cpu
Specify which cpu variant the compiler should generate code for by default. +cpu will be used as the default value of the -mcpu= switch. +This option is only supported on some targets, including ARM, i386, M68k, +PowerPC, and SPARC. + +
--with-schedule=cpu
--with-arch=cpu
--with-tune=cpu
--with-abi=abi
--with-fpu=type
--with-float=type
These configure options provide default values for the -mschedule=, +-march=, -mtune=, -mabi=, and -mfpu= +options and for -mhard-float or -msoft-float. As with +--with-cpu, which switches will be accepted and acceptable values +of the arguments depend on the target. + +
--with-mode=mode
Specify if the compiler should default to -marm or -mthumb. +This option is only supported on ARM targets. + +
--with-divide=type
Specify how the compiler should generate code for checking for +division by zero. This option is only supported on the MIPS target. +The possibilities for type are: +
+
traps
Division by zero checks use conditional traps (this is the default on +systems that support conditional traps). +
breaks
Division by zero checks use the break instruction. +
+ + + +
--with-llsc
On MIPS targets, make -mllsc the default when no +-mno-lsc option is passed. This is the default for +Linux-based targets, as the kernel will emulate them if the ISA does +not provide them. + +
--without-llsc
On MIPS targets, make -mno-llsc the default when no +-mllsc option is passed. + +
--enable-__cxa_atexit
Define if you want to use __cxa_atexit, rather than atexit, to +register C++ destructors for local statics and global objects. +This is essential for fully standards-compliant handling of +destructors, but requires __cxa_atexit in libc. This option is currently +only available on systems with GNU libc. When enabled, this will cause +-fuse-cxa-atexit to be passed by default. + +
--enable-target-optspace
Specify that target +libraries should be optimized for code space instead of code speed. +This is the default for the m32r platform. + +
--disable-cpp
Specify that a user visible cpp program should not be installed. + +
--with-cpp-install-dir=dirname
Specify that the user visible cpp program should be installed +in prefix/dirname/cpp, in addition to bindir. + +
--enable-initfini-array
Force the use of sections .init_array and .fini_array +(instead of .init and .fini) for constructors and +destructors. Option --disable-initfini-array has the +opposite effect. If neither option is specified, the configure script +will try to guess whether the .init_array and +.fini_array sections are supported and, if they are, use them. + +
--enable-maintainer-mode
The build rules that +regenerate the GCC master message catalog gcc.pot are normally +disabled. This is because it can only be rebuilt if the complete source +tree is present. If you have changed the sources and want to rebuild the +catalog, configuring with --enable-maintainer-mode will enable +this. Note that you need a recent version of the gettext tools +to do so. + +
--disable-bootstrap
For a native build, the default configuration is to perform +a 3-stage bootstrap of the compiler when make is invoked, +testing that GCC can compile itself correctly. If you want to disable +this process, you can configure with --disable-bootstrap. + +
--enable-bootstrap
In special cases, you may want to perform a 3-stage build +even if the target and host triplets are different. +This could happen when the host can run code compiled for +the target (e.g. host is i686-linux, target is i486-linux). +Starting from GCC 4.2, to do this you have to configure explicitly +with --enable-bootstrap. + +
--enable-generated-files-in-srcdir
Neither the .c and .h files that are generated from Bison and flex nor the +info manuals and man pages that are built from the .texi files are present +in the SVN development tree. When building GCC from that development tree, +or from one of our snapshots, those generated files are placed in your +build directory, which allows for the source to be in a readonly +directory. + +

If you configure with --enable-generated-files-in-srcdir then those +generated files will go into the source directory. This is mainly intended +for generating release or prerelease tarballs of the GCC sources, since it +is not a requirement that the users of source releases to have flex, Bison, +or makeinfo. + +

--enable-version-specific-runtime-libs
Specify +that runtime libraries should be installed in the compiler specific +subdirectory (libdir/gcc) rather than the usual places. In +addition, libstdc++'s include files will be installed into +libdir unless you overruled it by using +--with-gxx-include-dir=dirname. Using this option is +particularly useful if you intend to use several versions of GCC in +parallel. This is currently supported by libgfortran, +libjava, libmudflap, libstdc++, and libobjc. + +
--enable-languages=lang1,lang2,...
Specify that only a particular subset of compilers and +their runtime libraries should be built. For a list of valid values for +langN you can issue the following command in the +gcc directory of your GCC source tree:
+
          grep language= */config-lang.in
+     
+

Currently, you can use any of the following: +all, ada, c, c++, fortran, java, +objc, obj-c++, treelang. +Building the Ada compiler has special requirements, see below. +If you do not pass this flag, or specify the option all, then all +default languages available in the gcc sub-tree will be configured. +Ada, Objective-C++, and treelang are not default languages; the rest are. +Re-defining LANGUAGES when calling make does not +work anymore, as those language sub-directories might not have been +configured! + +

--enable-stage1-languages=lang1,lang2,...
Specify that a particular subset of compilers and their runtime +libraries should be built with the system C compiler during stage 1 of +the bootstrap process, rather than only in later stages with the +bootstrapped C compiler. The list of valid values is the same as for +--enable-languages, and the option all will select all +of the languages enabled by --enable-languages. This option is +primarily useful for GCC development; for instance, when a development +version of the compiler cannot bootstrap due to compiler bugs, or when +one is debugging front ends other than the C front end. When this +option is used, one can then build the target libraries for the +specified languages with the stage-1 compiler by using make +stage1-bubble all-target, or run the testsuite on the stage-1 compiler +for the specified languages using make stage1-start check-gcc. + +
--disable-libada
Specify that the run-time libraries and tools used by GNAT should not +be built. This can be useful for debugging, or for compatibility with +previous Ada build procedures, when it was required to explicitly +do a make -C gcc gnatlib_and_tools. + +
--disable-libssp
Specify that the run-time libraries for stack smashing protection +should not be built. + +
--disable-libgomp
Specify that the run-time libraries used by GOMP should not be built. + +
--with-dwarf2
Specify that the compiler should +use DWARF 2 debugging information as the default. + +
--enable-targets=all
--enable-targets=target_list
Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers. +These are compilers that are able to generate either 64-bit or 32-bit +code. Typically, the corresponding 32-bit target, e.g. +powerpc-linux for powerpc64-linux, only generates 32-bit code. This +option enables the 32-bit target to be a bi-arch compiler, which is +useful when you want a bi-arch compiler that defaults to 32-bit, and +you are building a bi-arch or multi-arch binutils in a combined tree. +Currently, this option only affects powerpc-linux and x86-linux. + +
--enable-secureplt
This option enables -msecure-plt by default for powerpc-linux. +See “RS/6000 and PowerPC Options” in the main manual + +
--enable-cld
This option enables -mcld by default for 32-bit x86 targets. +See “i386 and x86-64 Options” in the main manual + +
--enable-win32-registry
--enable-win32-registry=key
--disable-win32-registry
The --enable-win32-registry option enables Microsoft Windows-hosted GCC +to look up installations paths in the registry using the following key: + +
          HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\key
+     
+

key defaults to GCC version number, and can be overridden by the +--enable-win32-registry=key option. Vendors and distributors +who use custom installers are encouraged to provide a different key, +perhaps one comprised of vendor name and GCC version number, to +avoid conflict with existing installations. This feature is enabled +by default, and can be disabled by --disable-win32-registry +option. This option has no effect on the other hosts. + +

--nfp
Specify that the machine does not have a floating point unit. This +option only applies to m68k-sun-sunosn. On any other +system, --nfp has no effect. + +
--enable-werror
--disable-werror
--enable-werror=yes
--enable-werror=no
When you specify this option, it controls whether certain files in the +compiler are built with -Werror in bootstrap stage2 and later. +If you don't specify it, -Werror is turned on for the main +development trunk. However it defaults to off for release branches and +final releases. The specific files which get -Werror are +controlled by the Makefiles. + +
--enable-checking
--enable-checking=list
When you specify this option, the compiler is built to perform internal +consistency checks of the requested complexity. This does not change the +generated code, but adds error checking within the compiler. This will +slow down the compiler and may only work properly if you are building +the compiler with GCC. This is yes by default when building +from SVN or snapshots, but release for releases. More control +over the checks may be had by specifying list. The categories of +checks available are yes (most common checks +assert,misc,tree,gc,rtlflag,runtime), no (no checks at +all), all (all but valgrind), release (cheapest +checks assert,runtime) or none (same as no). +Individual checks can be enabled with these flags assert, +df, fold, gc, gcac misc, rtl, +rtlflag, runtime, tree, and valgrind. + +

The valgrind check requires the external valgrind +simulator, available from http://valgrind.org/. The +df, rtl, gcac and valgrind checks are very expensive. +To disable all checking, --disable-checking or +--enable-checking=none must be explicitly requested. Disabling +assertions will make the compiler and runtime slightly faster but +increase the risk of undetected internal errors causing wrong code to be +generated. + +

--enable-coverage
--enable-coverage=level
With this option, the compiler is built to collect self coverage +information, every time it is run. This is for internal development +purposes, and only works when the compiler is being built with gcc. The +level argument controls whether the compiler is built optimized or +not, values are opt and noopt. For coverage analysis you +want to disable optimization, for performance analysis you want to +enable optimization. When coverage is enabled, the default level is +without optimization. + +
--enable-gather-detailed-mem-stats
When this option is specified more detailed information on memory +allocation is gathered. This information is printed when using +-fmem-report. + +
--with-gc
--with-gc=choice
With this option you can specify the garbage collector implementation +used during the compilation process. choice can be one of +page and zone, where page is the default. + +
--enable-nls
--disable-nls
The --enable-nls option enables Native Language Support (NLS), +which lets GCC output diagnostics in languages other than American +English. Native Language Support is enabled by default if not doing a +canadian cross build. The --disable-nls option disables NLS. + +
--with-included-gettext
If NLS is enabled, the --with-included-gettext option causes the build +procedure to prefer its copy of GNU gettext. + +
--with-catgets
If NLS is enabled, and if the host lacks gettext but has the +inferior catgets interface, the GCC build procedure normally +ignores catgets and instead uses GCC's copy of the GNU +gettext library. The --with-catgets option causes the +build procedure to use the host's catgets in this situation. + +
--with-libiconv-prefix=dir
Search for libiconv header files in dir/include and +libiconv library files in dir/lib. + +
--enable-obsolete
Enable configuration for an obsoleted system. If you attempt to +configure GCC for a system (build, host, or target) which has been +obsoleted, and you do not specify this flag, configure will halt with an +error message. + +

All support for systems which have been obsoleted in one release of GCC +is removed entirely in the next major release, unless someone steps +forward to maintain the port. + +

--enable-decimal-float
--enable-decimal-float=yes
--enable-decimal-float=no
--enable-decimal-float=bid
--enable-decimal-float=dpd
--disable-decimal-float
Enable (or disable) support for the C decimal floating point extension +that is in the IEEE 754R extension to the IEEE754 floating point +standard. This is enabled by default only on PowerPC, i386, and +x86_64 GNU/Linux systems. Other systems may also support it, but +require the user to specifically enable it. You can optionally +control which decimal floating point format is used (either bid +or dpd). The bid (binary integer decimal) format is +default on i386 and x86_64 systems, and the dpd (densely packed +decimal) format is default on PowerPC systems. + +
--enable-fixed-point
--disable-fixed-point
Enable (or disable) support for C fixed-point arithmetic. +This option is enabled by default for some targets (such as MIPS) which +have hardware-support for fixed-point operations. On other targets, you +may enable this option manually. + +
--with-long-double-128
Specify if long double type should be 128-bit by default on selected +GNU/Linux architectures. If using --without-long-double-128, +long double will be by default 64-bit, the same as double type. +When neither of these configure options are used, the default will be +128-bit long double when built against GNU C Library 2.4 and later, +64-bit long double otherwise. + +
--with-gmp=pathname
--with-gmp-include=pathname
--with-gmp-lib=pathname
--with-mpfr=pathname
--with-mpfr-include=pathname
--with-mpfr-lib=pathname
If you do not have GMP (the GNU Multiple Precision library) and the +MPFR Libraries installed in a standard location and you want to build +GCC, you can explicitly specify the directory where they are installed +(--with-gmp=gmpinstalldir, +--with-mpfr=mpfrinstalldir). The +--with-gmp=gmpinstalldir option is shorthand for +--with-gmp-lib=gmpinstalldir/lib and +--with-gmp-include=gmpinstalldir/include. Likewise the +--with-mpfr=mpfrinstalldir option is shorthand for +--with-mpfr-lib=mpfrinstalldir/lib and +--with-mpfr-include=mpfrinstalldir/include. If these +shorthand assumptions are not correct, you can use the explicit +include and lib options directly. + +
--with-debug-prefix-map=map
Convert source directory names using -fdebug-prefix-map when +building runtime libraries. map is a space-separated +list of maps of the form old=new. + +
+ +

Cross-Compiler-Specific Options

+ +

The following options only apply to building cross compilers. +

+
--with-sysroot
--with-sysroot=dir
Tells GCC to consider dir as the root of a tree that contains a +(subset of) the root filesystem of the target operating system. +Target system headers, libraries and run-time object files will be +searched in there. The specified directory is not copied into the +install tree, unlike the options --with-headers and +--with-libs that this option obsoletes. The default value, +in case --with-sysroot is not given an argument, is +${gcc_tooldir}/sys-root. If the specified directory is a +subdirectory of ${exec_prefix}, then it will be found relative to +the GCC binaries if the installation tree is moved. + +
--with-build-sysroot
--with-build-sysroot=dir
Tells GCC to consider dir as the system root (see +--with-sysroot) while building target libraries, instead of +the directory specified with --with-sysroot. This option is +only useful when you are already using --with-sysroot. You +can use --with-build-sysroot when you are configuring with +--prefix set to a directory that is different from the one in +which you are installing GCC and your target libraries. + +

This option affects the system root for the compiler used to build +target libraries (which runs on the build system); it does not affect +the compiler which is used to build GCC itself. + +

--with-headers
--with-headers=dir
Deprecated in favor of --with-sysroot. +Specifies that target headers are available when building a cross compiler. +The dir argument specifies a directory which has the target include +files. These include files will be copied into the gcc install +directory. This option with the dir argument is required when +building a cross compiler, if prefix/target/sys-include +doesn't pre-exist. If prefix/target/sys-include does +pre-exist, the dir argument may be omitted. fixincludes +will be run on these files to make them compatible with GCC. + +
--without-headers
Tells GCC not use any target headers from a libc when building a cross +compiler. When crossing to GNU/Linux, you need the headers so GCC +can build the exception handling for libgcc. + +
--with-libs
--with-libs=``dir1 dir2 ... dirN''
Deprecated in favor of --with-sysroot. +Specifies a list of directories which contain the target runtime +libraries. These libraries will be copied into the gcc install +directory. If the directory list is omitted, this option has no +effect. + +
--with-newlib
Specifies that newlib is +being used as the target C library. This causes __eprintf to be +omitted from libgcc.a on the assumption that it will be provided by +newlib. + +
--with-build-time-tools=dir
Specifies where to find the set of target tools (assembler, linker, etc.) +that will be used while building GCC itself. This option can be useful +if the directory layouts are different between the system you are building +GCC on, and the system where you will deploy it. + +

For example, on a ia64-hp-hpux system, you may have the GNU +assembler and linker in /usr/bin, and the native tools in a +different path, and build a toolchain that expects to find the +native tools in /usr/bin. + +

When you use this option, you should ensure that dir includes +ar, as, ld, nm, +ranlib and strip if necessary, and possibly +objdump. Otherwise, GCC may use an inconsistent set of +tools. +

+ +

Java-Specific Options

+ +

The following option applies to the build of the Java front end. + +

+
--disable-libgcj
Specify that the run-time libraries +used by GCJ should not be built. This is useful in case you intend +to use GCJ with some other run-time, or you're going to install it +separately, or it just happens not to build on your particular +machine. In general, if the Java front end is enabled, the GCJ +libraries will be enabled too, unless they're known to not work on +the target platform. If GCJ is enabled but libgcj isn't built, you +may need to port it; in this case, before modifying the top-level +configure.in so that libgcj is enabled by default on this platform, +you may use --enable-libgcj to override the default. + +
+ +

The following options apply to building libgcj. + +

General Options
+ +
+
--enable-java-maintainer-mode
By default the libjava build will not attempt to compile the +.java source files to .class. Instead, it will use the +.class files from the source tree. If you use this option you +must have executables named ecj1 and gjavah in your path +for use by the build. You must use this option if you intend to +modify any .java files in libjava. + +
--with-java-home=dirname
This libjava option overrides the default value of the +java.home system property. It is also used to set +sun.boot.class.path to dirname/lib/rt.jar. By +default java.home is set to prefix and +sun.boot.class.path to +datadir/java/libgcj-version.jar. + +
--with-ecj-jar=filename
This option can be used to specify the location of an external jar +file containing the Eclipse Java compiler. A specially modified +version of this compiler is used by gcj to parse +.java source files. If this option is given, the +libjava build will create and install an ecj1 executable +which uses this jar file at runtime. + +

If this option is not given, but an ecj.jar file is found in +the topmost source tree at configure time, then the libgcj +build will create and install ecj1, and will also install the +discovered ecj.jar into a suitable place in the install tree. + +

If ecj1 is not installed, then the user will have to supply one +on his path in order for gcj to properly parse .java +source files. A suitable jar is available from +ftp://sourceware.org/pub/java/. + +

--disable-getenv-properties
Don't set system properties from GCJ_PROPERTIES. + +
--enable-hash-synchronization
Use a global hash table for monitor locks. Ordinarily, +libgcj's configure script automatically makes +the correct choice for this option for your platform. Only use +this if you know you need the library to be configured differently. + +
--enable-interpreter
Enable the Java interpreter. The interpreter is automatically +enabled by default on all platforms that support it. This option +is really only useful if you want to disable the interpreter +(using --disable-interpreter). + +
--disable-java-net
Disable java.net. This disables the native part of java.net only, +using non-functional stubs for native method implementations. + +
--disable-jvmpi
Disable JVMPI support. + +
--disable-libgcj-bc
Disable BC ABI compilation of certain parts of libgcj. By default, +some portions of libgcj are compiled with -findirect-dispatch +and -fno-indirect-classes, allowing them to be overridden at +run-time. + +

If --disable-libgcj-bc is specified, libgcj is built without +these options. This allows the compile-time linker to resolve +dependencies when statically linking to libgcj. However it makes it +impossible to override the affected portions of libgcj at run-time. + +

--with-ecos
Enable runtime eCos target support. + +
--without-libffi
Don't use libffi. This will disable the interpreter and JNI +support as well, as these require libffi to work. + +
--enable-libgcj-debug
Enable runtime debugging code. + +
--enable-libgcj-multifile
If specified, causes all .java source files to be +compiled into .class files in one invocation of +gcj. This can speed up build time, but is more +resource-intensive. If this option is unspecified or +disabled, gcj is invoked once for each .java +file to compile into a .class file. + +
--with-libiconv-prefix=DIR
Search for libiconv in DIR/include and DIR/lib. + +
--enable-sjlj-exceptions
Force use of the setjmp/longjmp-based scheme for exceptions. +configure ordinarily picks the correct value based on the platform. +Only use this option if you are sure you need a different setting. + +
--with-system-zlib
Use installed zlib rather than that included with GCC. + +
--with-win32-nlsapi=ansi, unicows or unicode
Indicates how MinGW libgcj translates between UNICODE +characters and the Win32 API. +
+
ansi
Use the single-byte char and the Win32 A functions natively, +translating to and from UNICODE when using these functions. If +unspecified, this is the default. + +
unicows
Use the WCHAR and Win32 W functions natively. Adds +-lunicows to libgcj.spec to link with libunicows. +unicows.dll needs to be deployed on Microsoft Windows 9X machines +running built executables. libunicows.a, an open-source +import library around Microsoft's unicows.dll, is obtained from +http://libunicows.sourceforge.net/, which also gives details +on getting unicows.dll from Microsoft. + +
unicode
Use the WCHAR and Win32 W functions natively. Does not +add -lunicows to libgcj.spec. The built executables will +only run on Microsoft Windows NT and above. +
+
+ +
AWT-Specific Options
+ +
+
--with-x
Use the X Window System. + +
--enable-java-awt=PEER(S)
Specifies the AWT peer library or libraries to build alongside +libgcj. If this option is unspecified or disabled, AWT +will be non-functional. Current valid values are gtk and +xlib. Multiple libraries should be separated by a +comma (i.e. --enable-java-awt=gtk,xlib). + +
--enable-gtk-cairo
Build the cairo Graphics2D implementation on GTK. + +
--enable-java-gc=TYPE
Choose garbage collector. Defaults to boehm if unspecified. + +
--disable-gtktest
Do not try to compile and run a test GTK+ program. + +
--disable-glibtest
Do not try to compile and run a test GLIB program. + +
--with-libart-prefix=PFX
Prefix where libart is installed (optional). + +
--with-libart-exec-prefix=PFX
Exec prefix where libart is installed (optional). + +
--disable-libarttest
Do not try to compile and run a test libart program. + +
+ +


+

Return to the GCC Installation page + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/download.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/download.html new file mode 100644 index 0000000..ce75bf4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/download.html @@ -0,0 +1,89 @@ + + +Downloading GCC + + + + + + + + + + +

Downloading GCC

+ +GCC is distributed via SVN and FTP +tarballs compressed with gzip or +bzip2. It is possible to download a full distribution or specific +components. + +

Please refer to the releases web page +for information on how to obtain GCC. + +

The full distribution includes the C, C++, Objective-C, Fortran, Java, +and Ada (in the case of GCC 3.1 and later) compilers. The full +distribution also includes runtime libraries for C++, Objective-C, +Fortran, and Java. In GCC 3.0 and later versions, the GNU compiler +testsuites are also included in the full distribution. + +

If you choose to download specific components, you must download the core +GCC distribution plus any language specific distributions you wish to +use. The core distribution includes the C language front end as well as the +shared components. Each language has a tarball which includes the language +front end as well as the language runtime (when appropriate). + +

Unpack the core distribution as well as any language specific +distributions in the same directory. + +

If you also intend to build binutils (either to upgrade an existing +installation or for use in place of the corresponding tools of your +OS), unpack the binutils distribution either in the same directory or +a separate one. In the latter case, add symbolic links to any +components of the binutils you intend to build alongside the compiler +(bfd, binutils, gas, gprof, ld, +opcodes, ...) to the directory containing the GCC sources. + +


+

Return to the GCC Installation page + + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/finalinstall.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/finalinstall.html new file mode 100644 index 0000000..d93dd41 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/finalinstall.html @@ -0,0 +1,168 @@ + + +Installing GCC: Final installation + + + + + + + + + + +

Installing GCC: Final installation

+Now that GCC has been built (and optionally tested), you can install it with +
     cd objdir; make install
+
+

We strongly recommend to install into a target directory where there is +no previous version of GCC present. Also, the GNAT runtime should not +be stripped, as this would break certain features of the debugger that +depend on this debugging information (catching Ada exceptions for +instance). + +

That step completes the installation of GCC; user level binaries can +be found in prefix/bin where prefix is the value +you specified with the --prefix to configure (or +/usr/local by default). (If you specified --bindir, +that directory will be used instead; otherwise, if you specified +--exec-prefix, exec-prefix/bin will be used.) +Headers for the C++ and Java libraries are installed in +prefix/include; libraries in libdir +(normally prefix/lib); internal parts of the compiler in +libdir/gcc and libexecdir/gcc; documentation +in info format in infodir (normally +prefix/info). + +

When installing cross-compilers, GCC's executables +are not only installed into bindir, that +is, exec-prefix/bin, but additionally into +exec-prefix/target-alias/bin, if that directory +exists. Typically, such tooldirs hold target-specific +binutils, including assembler and linker. + +

Installation into a temporary staging area or into a chroot +jail can be achieved with the command + +

     make DESTDIR=path-to-rootdir install
+
+

where path-to-rootdir is the absolute path of +a directory relative to which all installation paths will be +interpreted. Note that the directory specified by DESTDIR +need not exist yet; it will be created if necessary. + +

There is a subtle point with tooldirs and DESTDIR: +If you relocate a cross-compiler installation with +e.g. DESTDIR=rootdir, then the directory +rootdir/exec-prefix/target-alias/bin will +be filled with duplicated GCC executables only if it already exists, +it will not be created otherwise. This is regarded as a feature, +not as a bug, because it gives slightly more control to the packagers +using the DESTDIR feature. + +

If you are bootstrapping a released version of GCC then please +quickly review the build status page for your release, available from +http://gcc.gnu.org/buildstat.html. +If your system is not listed for the version of GCC that you built, +send a note to +gcc@gcc.gnu.org indicating +that you successfully built and installed GCC. +Include the following information: + +

    +
  • Output from running srcdir/config.guess. Do not send +that file itself, just the one-line output from running it. + +
  • The output of gcc -v for your newly installed gcc. +This tells us which version of GCC you built and the options you passed to +configure. + +
  • Whether you enabled all languages or a subset of them. If you used a +full distribution then this information is part of the configure +options in the output of gcc -v, but if you downloaded the +“core” compiler plus additional front ends then it isn't apparent +which ones you built unless you tell us about it. + +
  • If the build was for GNU/Linux, also include: +
      +
    • The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3); +this information should be available from /etc/issue. + +
    • The version of the Linux kernel, available from uname --version +or uname -a. + +
    • The version of glibc you used; for RPM-based systems like Red Hat, +Mandrake, and SuSE type rpm -q glibc to get the glibc version, +and on systems like Debian and Progeny use dpkg -l libc6. +
    + For other systems, you can include similar information if you think it is +relevant. + +
  • Any other information that you think would be useful to people building +GCC on the same configuration. The new entry in the build status list +will include a link to the archived copy of your message. +
+ +

We'd also like to know if the +host/target specific installation notes +didn't include your host/target information or if that information is +incomplete or out of date. Send a note to +gcc@gcc.gnu.org detailing how the information should be changed. + +

If you find a bug, please report it following the +bug reporting guidelines. + +

If you want to print the GCC manuals, do cd objdir; make +dvi. You will need to have texi2dvi (version at least 4.4) +and TeX installed. This creates a number of .dvi files in +subdirectories of objdir; these may be converted for +printing with programs such as dvips. Alternately, by using +make pdf in place of make dvi, you can create documentation +in the form of .pdf files; this requires texi2pdf, which +is included with Texinfo version 4.8 and later. You can also +buy printed manuals from the Free Software Foundation, though such manuals may not be for the most +recent version of GCC. + +

If you would like to generate online HTML documentation, do cd +objdir; make html and HTML will be generated for the gcc manuals in +objdir/gcc/HTML. + +


+

Return to the GCC Installation page + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/gfdl.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/gfdl.html new file mode 100644 index 0000000..dfd66d5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/gfdl.html @@ -0,0 +1,461 @@ + + +Installing GCC: GNU Free Documentation License + + + + + + + + + + +

Installing GCC: GNU Free Documentation License

+

Installing GCC: GNU Free Documentation License

+ +

Version 1.2, November 2002
+ +
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. + +

    Examples of suitable formats for Transparent copies include plain +ascii without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +

    A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. + +

    The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +

  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +

  4. COPYING IN QUANTITY + +

    If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +

  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

      +
    1. Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +
    3. State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +
    13. Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +
    14. Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +
    15. Preserve any Warranty Disclaimers. +
    + +

    If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +

  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” + +

  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +

  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +

  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +

    If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +

  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +

  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

       Copyright (C)  year  your name.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.2
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with...Texts.” line with this: + +

         with the Invariant Sections being list their titles, with
+         the Front-Cover Texts being list, and with the Back-Cover Texts
+         being list.
+
+

If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + + + +


+

Return to the GCC Installation page + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/index.html new file mode 100644 index 0000000..c93484c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/index.html @@ -0,0 +1,122 @@ + + +Installing GCC + + + + + + + + + + +

Installing GCC

+The latest version of this document is always available at +http://gcc.gnu.org/install/. + +

This document describes the generic installation procedure for GCC as well +as detailing some target specific installation instructions. + +

GCC includes several components that previously were separate distributions +with their own installation instructions. This document supersedes all +package specific installation instructions. + +

Before starting the build/install procedure please check the +host/target specific installation notes. +We recommend you browse the entire generic installation instructions before +you proceed. + +

Lists of successful builds for released versions of GCC are +available at http://gcc.gnu.org/buildstat.html. +These lists are updated as new information becomes available. + +

The installation procedure itself is broken into five steps. + +

    +
  1. Prerequisites +
  2. Downloading the source +
  3. Configuration +
  4. Building +
  5. Testing (optional) +
  6. Final install +
+ +

Please note that GCC does not support make uninstall and probably +won't do so in the near future as this would open a can of worms. Instead, +we suggest that you install GCC into a directory of its own and simply +remove that directory when you do not need that specific version of GCC +any longer, and, if shared libraries are installed there as well, no +more binaries exist that use them. + +

There are also some old installation instructions, +which are mostly obsolete but still contain some information which has +not yet been merged into the main part of this manual. + +


+

Return to the GCC Installation page + +

Copyright © 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +

+
+
+Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Sections, the Front-Cover texts being (a) (see below), and +with the Back-Cover Texts being (b) (see below). A copy of the +license is included in the section entitled “GNU Free Documentation License”. + +

(a) The FSF's Front-Cover Text is: + +

A GNU Manual + +

(b) The FSF's Back-Cover Text is: + +

You have freedom to copy and modify this GNU Manual, like GNU + software. Copies published by the Free Software Foundation raise + funds for GNU development. + + + + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/old.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/old.html new file mode 100644 index 0000000..1c46a80 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/old.html @@ -0,0 +1,211 @@ + + +Installing GCC: Old documentation + + + + + + + + + + +

Installing GCC: Old documentation

+

Old installation documentation

+ +

Note most of this information is out of date and superseded by the +previous chapters of this manual. It is provided for historical +reference only, because of a lack of volunteers to merge it into the +main manual. + +

Here is the procedure for installing GCC on a GNU or Unix system. + +

    +
  1. If you have chosen a configuration for GCC which requires other GNU +tools (such as GAS or the GNU linker) instead of the standard system +tools, install the required tools in the build directory under the names +as, ld or whatever is appropriate. + +

    Alternatively, you can do subsequent compilation using a value of the +PATH environment variable such that the necessary GNU tools come +before the standard system tools. + +

  2. Specify the host, build and target machine configurations. You do this +when you run the configure script. + +

    The build machine is the system which you are using, the +host machine is the system where you want to run the resulting +compiler (normally the build machine), and the target machine is +the system for which you want the compiler to generate code. + +

    If you are building a compiler to produce code for the machine it runs +on (a native compiler), you normally do not need to specify any operands +to configure; it will try to guess the type of machine you are on +and use that as the build, host and target machines. So you don't need +to specify a configuration when building a native compiler unless +configure cannot figure out what your configuration is or guesses +wrong. + +

    In those cases, specify the build machine's configuration name +with the --host option; the host and target will default to be +the same as the host machine. + +

    Here is an example: + +

              ./configure --host=sparc-sun-sunos4.1
    +     
    +

    A configuration name may be canonical or it may be more or less +abbreviated. + +

    A canonical configuration name has three parts, separated by dashes. +It looks like this: cpu-company-system. +(The three parts may themselves contain dashes; configure +can figure out which dashes serve which purpose.) For example, +m68k-sun-sunos4.1 specifies a Sun 3. + +

    You can also replace parts of the configuration by nicknames or aliases. +For example, sun3 stands for m68k-sun, so +sun3-sunos4.1 is another way to specify a Sun 3. + +

    You can specify a version number after any of the system types, and some +of the CPU types. In most cases, the version is irrelevant, and will be +ignored. So you might as well specify the version if you know it. + +

    See Configurations, for a list of supported configuration names and +notes on many of the configurations. You should check the notes in that +section before proceeding any further with the installation of GCC. + +

+ +

Configurations Supported by GCC

+Here are the possible CPU types: + +
+ +1750a, a29k, alpha, arm, avr, cn, clipper, dsp16xx, elxsi, fr30, h8300, +hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860, i960, ip2k, m32r, +m68000, m68k, m6811, m6812, m88k, mcore, mips, mipsel, mips64, mips64el, +mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc, +sparclite, sparc64, v850, vax, we32k. +
+ +

Here are the recognized company names. As you can see, customary +abbreviations are used rather than the longer official names. + + +

+acorn, alliant, altos, apollo, apple, att, bull, +cbm, convergent, convex, crds, dec, dg, dolphin, +elxsi, encore, harris, hitachi, hp, ibm, intergraph, isi, +mips, motorola, ncr, next, ns, omron, plexus, +sequent, sgi, sony, sun, tti, unicom, wrs. +
+ +

The company name is meaningful only to disambiguate when the rest of +the information supplied is insufficient. You can omit it, writing +just cpu-system, if it is not needed. For example, +vax-ultrix4.2 is equivalent to vax-dec-ultrix4.2. + +

Here is a list of system types: + +

+386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux, +dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux, +linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs, +netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim, +solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta, +vxworks, winnt, xenix. +
+ +

You can omit the system type; then configure guesses the +operating system from the CPU and company. + +

You can add a version number to the system type; this may or may not +make a difference. For example, you can write bsd4.3 or +bsd4.4 to distinguish versions of BSD. In practice, the version +number is most needed for sysv3 and sysv4, which are often +treated differently. + +

linux-gnu is the canonical name for the GNU/Linux target; however +GCC will also accept linux. The version of the kernel in use is +not relevant on these systems. A suffix such as libc1 or aout +distinguishes major versions of the C library; all of the suffixed versions +are obsolete. + +

If you specify an impossible combination such as i860-dg-vms, +then you may get an error message from configure, or it may +ignore part of the information and do the best it can with the rest. +configure always prints the canonical name for the alternative +that it used. GCC does not support all possible alternatives. + +

Often a particular model of machine has a name. Many machine names are +recognized as aliases for CPU/company combinations. Thus, the machine +name sun3, mentioned above, is an alias for m68k-sun. +Sometimes we accept a company name as a machine name, when the name is +popularly used for a particular machine. Here is a table of the known +machine names: + +

+3300, 3b1, 3bn, 7300, altos3068, altos, +apollo68, att-7300, balance, +convex-cn, crds, decstation-3100, +decstation, delta, encore, +fx2800, gmicro, hp7nn, hp8nn, +hp9k2nn, hp9k3nn, hp9k7nn, +hp9k8nn, iris4d, iris, isi68, +m3230, magnum, merlin, miniframe, +mmax, news-3600, news800, news, next, +pbd, pc532, pmax, powerpc, powerpcle, ps2, risc-news, +rtpc, sun2, sun386i, sun386, sun3, +sun4, symmetry, tower-32, tower. +
+ +

Remember that a machine name specifies both the cpu type and the company +name. +If you want to install your own homemade configuration files, you can +use local as the company name to access them. If you use +configuration cpu-local, the configuration name +without the cpu prefix +is used to form the configuration file names. + +

Thus, if you specify m68k-local, configuration uses +files m68k.md, local.h, m68k.c, +xm-local.h, t-local, and x-local, all in the +directory config/m68k. +


+

Return to the GCC Installation page + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/prerequisites.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/prerequisites.html new file mode 100644 index 0000000..3f50c8a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/prerequisites.html @@ -0,0 +1,247 @@ + + +Prerequisites for GCC + + + + + + + + + + +

Prerequisites for GCC

+ +GCC requires that various tools and packages be available for use in the +build procedure. Modifying GCC sources requires additional tools +described below. + +

Tools/packages necessary for building GCC

+ +
+
ISO C90 compiler
Necessary to bootstrap GCC, although versions of GCC prior +to 3.4 also allow bootstrapping with a traditional (K&R) C compiler. + +

To build all languages in a cross-compiler or other configuration where +3-stage bootstrap is not performed, you need to start with an existing +GCC binary (version 2.95 or later) because source code for language +frontends other than C might use GCC extensions. + +

GNAT
+In order to build the Ada compiler (GNAT) you must already have GNAT +installed because portions of the Ada frontend are written in Ada (with +GNAT extensions.) Refer to the Ada installation instructions for more +specific information. + +
A “working” POSIX compatible shell, or GNU bash
+Necessary when running configure because some +/bin/sh shells have bugs and may crash when configuring the +target libraries. In other cases, /bin/sh or ksh +have disastrous corner-case performance problems. This +can cause target configure runs to literally take days to +complete in some cases. + +

So on some platforms /bin/ksh is sufficient, on others it +isn't. See the host/target specific instructions for your platform, or +use bash to be sure. Then set CONFIG_SHELL in your +environment to your “good” shell prior to running +configure/make. + +

zsh is not a fully compliant POSIX shell and will not +work when configuring GCC. + +

A POSIX or SVR4 awk
+Necessary for creating some of the generated source files for GCC. +If in doubt, use a recent GNU awk version, as some of the older ones +are broken. GNU awk version 3.1.5 is known to work. + +
GNU binutils
+Necessary in some circumstances, optional in others. See the +host/target specific instructions for your platform for the exact +requirements. + +
gzip version 1.2.4 (or later) or
bzip2 version 1.0.2 (or later)
+Necessary to uncompress GCC tar files when source code is +obtained via FTP mirror sites. + +
GNU make version 3.79.1 (or later)
+You must have GNU make installed to build GCC. + +
GNU tar version 1.14 (or later)
+Necessary (only on some platforms) to untar the source code. Many +systems' tar programs will also work, only try GNU +tar if you have problems. + +
GNU Multiple Precision Library (GMP) version 4.1 (or later)
+Necessary to build GCC. If you do not have it installed in your +library search path, you will have to configure with the +--with-gmp configure option. See also +--with-gmp-lib and --with-gmp-include. + +
MPFR Library version 2.3.0 (or later)
+Necessary to build GCC. It can be downloaded from +http://www.mpfr.org/. The version of MPFR that is bundled with +GMP 4.1.x contains numerous bugs. Although GCC may appear to function +with the buggy versions of MPFR, there are a few bugs that will not be +fixed when using this version. It is strongly recommended to upgrade +to the recommended version of MPFR. + +

The --with-mpfr configure option should be used if your MPFR +Library is not installed in your default library search path. See +also --with-mpfr-lib and --with-mpfr-include. + +

jar, or InfoZIP (zip and unzip)
+Necessary to build libgcj, the GCJ runtime. + +
+ +

Tools/packages necessary for modifying GCC

+ +
+
autoconf version 2.59
GNU m4 version 1.4 (or later)
+Necessary when modifying configure.ac, aclocal.m4, etc. +to regenerate configure and config.in files. + +
automake version 1.9.6
+Necessary when modifying a Makefile.am file to regenerate its +associated Makefile.in. + +

Much of GCC does not use automake, so directly edit the Makefile.in +file. Specifically this applies to the gcc, intl, +libcpp, libiberty, libobjc directories as well +as any of their subdirectories. + +

For directories that use automake, GCC requires the latest release in +the 1.9.x series, which is currently 1.9.6. When regenerating a directory +to a newer version, please update all the directories using an older 1.9.x +to the latest released version. + +

gettext version 0.14.5 (or later)
+Needed to regenerate gcc.pot. + +
gperf version 2.7.2 (or later)
+Necessary when modifying gperf input files, e.g. +gcc/cp/cfns.gperf to regenerate its associated header file, e.g. +gcc/cp/cfns.h. + +
DejaGnu 1.4.4
Expect
Tcl
+Necessary to run the GCC testsuite; see the section on testing for details. + +
autogen version 5.5.4 (or later) and
guile version 1.4.1 (or later)
+Necessary to regenerate fixinc/fixincl.x from +fixinc/inclhack.def and fixinc/*.tpl. + +

Necessary to run make check for fixinc. + +

Necessary to regenerate the top level Makefile.in file from +Makefile.tpl and Makefile.def. + +

GNU Bison version 1.28 (or later)
+Necessary when modifying *.y files. Necessary to build the +treelang front end (which is not enabled by default) from a +checkout of the SVN repository; the generated files are not in the +repository. They are included in releases. + +

Berkeley yacc (byacc) has been reported to work +as well. + +

Flex version 2.5.4 (or later)
+Necessary when modifying *.l files. + +

Necessary to build GCC during development because the generated output +files are not included in the SVN repository. They are included in +releases. + +

Texinfo version 4.4 (or later)
+Necessary for running makeinfo when modifying *.texi +files to test your changes. + +

Necessary for running make dvi or make pdf to +create printable documentation in DVI or PDF format. Texinfo version +4.8 or later is required for make pdf. + +

Necessary to build GCC documentation during development because the +generated output files are not included in the SVN repository. They are +included in releases. + +

TeX (any working version)
+Necessary for running texi2dvi and texi2pdf, which +are used when running make dvi or make pdf to create +DVI or PDF files, respectively. + +
SVN (any version)
SSH (any version)
+Necessary to access the SVN repository. Public releases and weekly +snapshots of the development sources are also available via FTP. + +
Perl version 5.6.1 (or later)
+Necessary when regenerating Makefile dependencies in libiberty. +Necessary when regenerating libiberty/functions.texi. +Necessary when generating manpages from Texinfo manuals. +Necessary when targetting Darwin, building libstdc++, +and not using --disable-symvers. +Used by various scripts to generate some files included in SVN (mainly +Unicode-related and rarely changing) from source tables. + +
GNU diffutils version 2.7 (or later)
+Useful when submitting patches for the GCC source code. + +
patch version 2.5.4 (or later)
+Necessary when applying patches, created with diff, to one's +own sources. + +
ecj1
gjavah
+If you wish to modify .java files in libjava, you will need to +configure with --enable-java-maintainer-mode, and you will need +to have executables named ecj1 and gjavah in your path. +The ecj1 executable should run the Eclipse Java compiler via +the GCC-specific entry point. You can download a suitable jar from +ftp://sourceware.org/pub/java/, or by running the script +contrib/download_ecj. + +
+ +


+

Return to the GCC Installation page + + + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/specific.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/specific.html new file mode 100644 index 0000000..7fce399 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/specific.html @@ -0,0 +1,1716 @@ + + +Host/Target specific installation notes for GCC + + + + + + + + + + +

Host/Target specific installation notes for GCC

+ +Please read this document carefully before installing the +GNU Compiler Collection on your machine. + +

Note that this list of install notes is not a list of supported +hosts or targets. Not all supported hosts and targets are listed +here, only the ones that require host-specific or target-specific +information are. + +

+ + + +

+


+ +

alpha*-*-*

+ +

This section contains general configuration information for all +alpha-based platforms using ELF (in particular, ignore this section for +DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this +section, please read all other sections that match your target. + +

We require binutils 2.11.2 or newer. +Previous binutils releases had a number of problems with DWARF 2 +debugging information, not the least of which is incorrect linking of +shared libraries. + +


+ +

alpha*-dec-osf*

+ +

Systems using processors that implement the DEC Alpha architecture and +are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq +Tru64 UNIX) operating system, for example the DEC Alpha AXP systems. + +

As of GCC 3.2, versions before alpha*-dec-osf4 are no longer +supported. (These are the versions which identify themselves as DEC +OSF/1.) + +

In Digital Unix V4.0, virtual memory exhausted bootstrap failures +may be fixed by configuring with --with-gc=simple, +reconfiguring Kernel Virtual Memory and Swap parameters +per the /usr/sbin/sys_check Tuning Suggestions, +or applying the patch in +http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html. + +

In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not +currently (2001-06-13) work with mips-tfile. As a workaround, +we need to use the old assembler, invoked via the barely documented +-oldas option. To bootstrap GCC, you either need to use the +Compaq C Compiler: + +

        % CC=cc srcdir/configure [options] [target]
+
+

or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: + +

        % CC=gcc -Wa,-oldas srcdir/configure [options] [target]
+
+

As of GNU binutils 2.11.2, neither GNU as nor GNU ld +are supported on Tru64 UNIX, so you must not configure GCC with +--with-gnu-as or --with-gnu-ld. + +

GCC writes a .verstamp directive to the assembler output file +unless it is built as a cross-compiler. It gets the version to use from +the system header file /usr/include/stamp.h. If you install a +new version of DEC Unix, you should rebuild GCC to pick up the new version +stamp. + +

Note that since the Alpha is a 64-bit architecture, cross-compilers from +32-bit machines will not generate code as efficient as that generated +when the compiler is running on a 64-bit machine because many +optimizations that depend on being able to represent a word on the +target in an integral value on the host cannot be performed. Building +cross-compilers on the Alpha for 32-bit machines has only been tested in +a few cases and may not work properly. + +

make compare may fail on old versions of DEC Unix unless you add +-save-temps to CFLAGS. On these systems, the name of the +assembler input file is stored in the object file, and that makes +comparison fail if it differs between the stage1 and +stage2 compilations. The option -save-temps forces a +fixed name to be used for the assembler input file, instead of a +randomly chosen name in /tmp. Do not add -save-temps +unless the comparisons fail without that option. If you add +-save-temps, you will have to manually delete the .i and +.s files after each series of compilations. + +

GCC now supports both the native (ECOFF) debugging format used by DBX +and GDB and an encapsulated STABS format for use only with GDB. See the +discussion of the --with-stabs option of configure above +for more information on these formats and how to select them. + +

There is a bug in DEC's assembler that produces incorrect line numbers +for ECOFF format when the .align directive is used. To work +around this problem, GCC will not emit such alignment directives +while writing ECOFF format debugging information even if optimization is +being performed. Unfortunately, this has the very undesirable +side-effect that code addresses when -O is specified are +different depending on whether or not -g is also specified. + +

To avoid this behavior, specify -gstabs+ and use GDB instead of +DBX. DEC is now aware of this problem with the assembler and hopes to +provide a fix shortly. + +


+ +

alphaev5-cray-unicosmk*

+ +

Cray T3E systems running Unicos/Mk. + +

This port is incomplete and has many known bugs. We hope to improve the +support for this target soon. Currently, only the C front end is supported, +and it is not possible to build parallel applications. Cray modules are not +supported; in particular, Craylibs are assumed to be in +/opt/ctl/craylibs/craylibs. + +

On this platform, you need to tell GCC where to find the assembler and +the linker. The simplest way to do so is by providing --with-as +and --with-ld to configure, e.g. + +

         configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \
+           --enable-languages=c
+
+

The comparison test at the end of the bootstrapping process fails on Unicos/Mk +because the assembler inserts timestamps into object files. You should +be able to work around this by doing make all after getting this +failure. + +


+ +

arc-*-elf

+ +

Argonaut ARC processor. +This configuration is intended for embedded systems. + +


+ +

arm-*-elf

+ +

xscale-*-*

+ +

ARM-family processors. Subtargets that use the ELF object format +require GNU binutils 2.13 or newer. Such subtargets include: +arm-*-freebsd, arm-*-netbsdelf, arm-*-*linux, +arm-*-rtems and arm-*-kaos. + +


+ +

arm-*-coff

+ +

ARM-family processors. Note that there are two different varieties +of PE format subtarget supported: arm-wince-pe and +arm-pe as well as a standard COFF target arm-*-coff. + +


+ +

arm-*-aout

+ +

ARM-family processors. These targets support the AOUT file format: +arm-*-aout, arm-*-netbsd. + +


+ +

avr

+ +

ATMEL AVR-family micro controllers. These are used in embedded +applications. There are no standard Unix configurations. +See “AVR Options” in the main manual +for the list of supported MCU types. + +

Use configure --target=avr --enable-languages="c" to configure GCC. + +

Further installation notes and other useful information about AVR tools +can also be obtained from: + +

+ +

We strongly recommend using binutils 2.13 or newer. + +

The following error: +

       Error: register required
+
+

indicates that you should upgrade to a newer version of the binutils. + +


+ +

Blackfin

+ +

The Blackfin processor, an Analog Devices DSP. +See “Blackfin Options” in the main manual + +

More information, and a version of binutils with support for this processor, +is available at http://blackfin.uclinux.org + +


+ +

CRIS

+ +

CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip +series. These are used in embedded applications. + +

See “CRIS Options” in the main manual +for a list of CRIS-specific options. + +

There are a few different CRIS targets: +

+
cris-axis-aout
Old target. Includes a multilib for the elinux a.out-based +target. No multilibs for newer architecture variants. +
cris-axis-elf
Mainly for monolithic embedded systems. Includes a multilib for the +v10 core used in ETRAX 100 LX. +
cris-axis-linux-gnu
A GNU/Linux port for the CRIS architecture, currently targeting +ETRAX 100 LX by default. +
+ +

For cris-axis-aout and cris-axis-elf you need binutils 2.11 +or newer. For cris-axis-linux-gnu you need binutils 2.12 or newer. + +

Pre-packaged tools can be obtained from +ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/. More +information about this platform is available at +http://developer.axis.com/. + +


+ +

CRX

+ +

The CRX CompactRISC architecture is a low-power 32-bit architecture with +fast context switching and architectural extensibility features. + +

See “CRX Options” in the main manual for a list of CRX-specific options. + +

Use configure --target=crx-elf --enable-languages=c,c++ to configure +GCC for building a CRX cross-compiler. The option --target=crx-elf +is also used to build the newlib C library for CRX. + +

It is also possible to build libstdc++-v3 for the CRX architecture. This +needs to be done in a separate step with the following configure settings: +gcc/libstdc++-v3/configure --host=crx-elf --with-newlib +--enable-sjlj-exceptions --enable-cxx-flags='-fexceptions -frtti' + +


+ +

DOS

+ +

Please have a look at the binaries page. + +

You cannot install GCC by itself on MSDOS; it will not compile under +any MSDOS compiler except itself. You need to get the complete +compilation package DJGPP, which includes binaries as well as sources, +and includes all the necessary compilation tools and libraries. + +


+ +

*-*-freebsd*

+ +

The version of binutils installed in /usr/bin probably works with +this release of GCC. However, on FreeBSD 4, bootstrapping against the +latest FSF binutils is known to improve overall testsuite results; and, +on FreeBSD/alpha, using binutils 2.14 or later is required to build libjava. + +

Support for FreeBSD 1 was discontinued in GCC 3.2. + +

Support for FreeBSD 2 will be discontinued after GCC 3.4. The +following was true for GCC 3.1 but the current status is unknown. +For FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All +configuration support and files as shipped with GCC 2.95 are still in +place. FreeBSD 2.2.7 has been known to bootstrap completely; however, +it is unknown which version of binutils was used (it is assumed that it +was the system copy in /usr/bin) and C++ EH failures were noted. + +

For FreeBSD using the ELF file format: DWARF 2 debugging is now the +default for all CPU architectures. It had been the default on +FreeBSD/alpha since its inception. You may use -gstabs instead +of -g, if you really want the old debugging format. There are +no known issues with mixing object files and libraries with different +debugging formats. Otherwise, this release of GCC should now match more +of the configuration used in the stock FreeBSD configuration of GCC. In +particular, --enable-threads is now configured by default. +However, as a general user, do not attempt to replace the system +compiler with this release. Known to bootstrap and check with good +results on FreeBSD 4.9-STABLE and 5-CURRENT. In the past, known to +bootstrap and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, +4.3, 4.4, 4.5, 4.8-STABLE. + +

In principle, --enable-threads is now compatible with +--enable-libgcj on FreeBSD. However, it has only been built +and tested on i386-*-freebsd[45] and alpha-*-freebsd[45]. +The static +library may be incorrectly built (symbols are missing at link time). +There is a rare timing-based startup hang (probably involves an +assumption about the thread library). Multi-threaded boehm-gc (required for +libjava) exposes severe threaded signal-handling bugs on FreeBSD before +4.5-RELEASE. Other CPU architectures +supported by FreeBSD will require additional configuration tuning in, at +the very least, both boehm-gc and libffi. + +

Shared libgcc_s.so is now built and installed by default. + +


+ +

h8300-hms

+ +

Renesas H8/300 series of processors. + +

Please have a look at the binaries page. + +

The calling convention and structure layout has changed in release 2.6. +All code must be recompiled. The calling convention now passes the +first three arguments in function calls in registers. Structures are no +longer a multiple of 2 bytes. + +


+ +

hppa*-hp-hpux*

+ +

Support for HP-UX version 9 and older was discontinued in GCC 3.4. + +

We require using gas/binutils on all hppa platforms; +you may encounter a variety of problems if you try to use the HP assembler. + +

Specifically, -g does not work on HP-UX (since that system +uses a peculiar debugging format which GCC does not know about), unless +you use GAS and GDB. It may be helpful to configure GCC with the +--with-gnu-as and +--with-as=... options to ensure that GCC can find GAS. + +

If you wish to use the pa-risc 2.0 architecture support with a 32-bit +runtime, you must use gas/binutils 2.11 or newer. + +

There are two default scheduling models for instructions. These are +PROCESSOR_7100LC and PROCESSOR_8000. They are selected from the pa-risc +architecture specified for the target machine when configuring. +PROCESSOR_8000 is the default. PROCESSOR_7100LC is selected when +the target is a hppa1* machine. + +

The PROCESSOR_8000 model is not well suited to older processors. Thus, +it is important to completely specify the machine architecture when +configuring if you want a model other than PROCESSOR_8000. The macro +TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different +default scheduling model is desired. + +

As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10 +through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later. +This namespace change might cause problems when bootstrapping with +an earlier version of GCC or the HP compiler as essentially the same +namespace is required for an entire build. This problem can be avoided +in a number of ways. With HP cc, UNIX_STD can be set to 95 +or 98. Another way is to add an appropriate set of predefines +to CC. The description for the munix= option contains +a list of the predefines used with each standard. + +

As of GCC 4.1, DWARF2 exception handling is available on HP-UX. +It is now the default. This exposed a bug in the handling of data +relocations in the GAS assembler. The handling of 64-bit data relocations +was seriously broken, affecting debugging and exception support on all +hppa64-*-* targets. Under some circumstances, 32-bit data relocations +could also be handled incorrectly. This problem is fixed in GAS version +2.16.91 20051125. + +

GCC versions prior to 4.1 incorrectly passed and returned complex +values. They are now passed in the same manner as aggregates. + +

More specific information to hppa*-hp-hpux* targets follows. + +


+ +

hppa*-hp-hpux10

+ +

For hpux10.20, we highly recommend you pick up the latest sed patch +PHCO_19798 from HP. HP has two sites which provide patches free of +charge: + +

+ +

The HP assembler on these systems has some problems. Most notably the +assembler inserts timestamps into each object file it creates, causing +the 3-stage comparison test to fail during a bootstrap. +You should be able to continue by saying make all-host all-target +after getting the failure from make. + +

GCC 4.0 requires CVS binutils as of April 28, 2004 or later. Earlier +versions require binutils 2.8 or later. + +

The C++ ABI has changed incompatibly in GCC 4.0. COMDAT subspaces are +used for one-only code and data. This resolves many of the previous +problems in using C++ on this target. However, the ABI is not compatible +with the one implemented under HP-UX 11 using secondary definitions. + +


+ +

hppa*-hp-hpux11

+ +

GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot +be used to compile GCC 3.0 and up. + +

Refer to binaries for information about obtaining +precompiled GCC binaries for HP-UX. Precompiled binaries must be obtained +to build the Ada language as it can't be bootstrapped using C. Ada is +only available for the 32-bit PA-RISC runtime. The libffi and libjava +haven't been ported to HP-UX and don't build. + +

Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The +bundled compiler supports only traditional C; you will need either HP's +unbundled compiler, or a binary distribution of GCC. + +

It is possible to build GCC 3.3 starting with the bundled HP compiler, +but the process requires several steps. GCC 3.3 can then be used to +build later versions. The fastjar program contains ISO C code and +can't be built with the HP bundled compiler. This problem can be +avoided by not building the Java language. For example, use the +--enable-languages="c,c++,f77,objc" option in your configure +command. + +

There are several possible approaches to building the distribution. +Binutils can be built first using the HP tools. Then, the GCC +distribution can be built. The second approach is to build GCC +first using the HP tools, then build binutils, then rebuild GCC. +There have been problems with various binary distributions, so it +is best not to start from a binary distribution. + +

On 64-bit capable systems, there are two distinct targets. Different +installation prefixes must be used if both are to be installed on +the same system. The hppa[1-2]*-hp-hpux11* target generates code +for the 32-bit PA-RISC runtime architecture and uses the HP linker. +The hppa64-hp-hpux11* target generates 64-bit code for the +PA-RISC 2.0 architecture. The HP and GNU linkers are both supported +for this target. + +

The script config.guess now selects the target type based on the compiler +detected during configuration. You must define PATH or CC so +that configure finds an appropriate compiler for the initial bootstrap. +When CC is used, the definition should contain the options that are +needed whenever CC is used. + +

Specifically, options that determine the runtime architecture must be +in CC to correctly select the target for the build. It is also +convenient to place many other compiler options in CC. For example, +CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE" +can be used to bootstrap the GCC 3.3 branch with the HP compiler in +64-bit K&R/bundled mode. The +DA2.0W option will result in +the automatic selection of the hppa64-hp-hpux11* target. The +macro definition table of cpp needs to be increased for a successful +build with the HP compiler. _CLASSIC_TYPES and _HPUX_SOURCE need to +be defined when building with the bundled compiler, or when using the +-Ac option. These defines aren't necessary with -Ae. + +

It is best to explicitly configure the hppa64-hp-hpux11* target +with the --with-ld=... option. This overrides the standard +search for ld. The two linkers supported on this target require different +commands. The default linker is determined during configuration. As a +result, it's not possible to switch linkers in the middle of a GCC build. +This has been been reported to sometimes occur in unified builds of +binutils and GCC. + +

GCC 3.0 through 3.2 require binutils 2.11 or above. GCC 3.3 through +GCC 4.0 require binutils 2.14 or later. + +

Although the HP assembler can be used for an initial build, it shouldn't +be used with any languages other than C and perhaps Fortran due to its +many limitations. For example, it does not support weak symbols or alias +definitions. As a result, explicit template instantiations are required +when using C++. This makes it difficult if not impossible to build many +C++ applications. You can't generate debugging information when using +the HP assembler. Finally, bootstrapping fails in the final +comparison of object modules due to the time stamps that it inserts into +the modules. The bootstrap can be continued from this point with +make all-host all-target. + +

A recent linker patch must be installed for the correct operation of +GCC 3.3 and later. PHSS_26559 and PHSS_24304 are the +oldest linker patches that are known to work. They are for HP-UX +11.00 and 11.11, respectively. PHSS_24303, the companion to +PHSS_24304, might be usable but it hasn't been tested. These +patches have been superseded. Consult the HP patch database to obtain +the currently recommended linker patch for your system. + +

The patches are necessary for the support of weak symbols on the +32-bit port, and for the running of initializers and finalizers. Weak +symbols are implemented using SOM secondary definition symbols. Prior +to HP-UX 11, there are bugs in the linker support for secondary symbols. +The patches correct a problem of linker core dumps creating shared +libraries containing secondary symbols, as well as various other +linking issues involving secondary symbols. + +

GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to +run initializers and finalizers on the 64-bit port. The 32-bit port +uses the linker +init and +fini options for the same +purpose. The patches correct various problems with the +init/+fini +options, including program core dumps. Binutils 2.14 corrects a +problem on the 64-bit port resulting from HP's non-standard use of +the .init and .fini sections for array initializers and finalizers. + +

There are a number of issues to consider in selecting which linker to +use with the 64-bit port. The GNU 64-bit linker can only create dynamic +binaries. The -static option causes linking with archive +libraries but doesn't produce a truly static binary. Dynamic binaries +still require final binding by the dynamic loader to resolve a set of +dynamic-loader-defined symbols. The default behavior of the HP linker +is the same as the GNU linker. However, it can generate true 64-bit +static binaries using the +compat option. + +

The HP 64-bit linker doesn't support linkonce semantics. As a +result, C++ programs have many more sections than they should. + +

The GNU 64-bit linker has some issues with shared library support +and exceptions. As a result, we only support libgcc in archive +format. For similar reasons, dwarf2 unwind and exception support +are disabled. The GNU linker also has problems creating binaries +with -static. It doesn't provide stubs for internal +calls to global functions in shared libraries, so these calls +can't be overloaded. + +

Thread support is not implemented in GCC 3.0 through 3.2, so the +--enable-threads configure option does not work. In 3.3 +and later, POSIX threads are supported. The optional DCE thread +library is not supported. + +

This port still is undergoing significant development. + +


+ +

*-*-linux-gnu

+ +

Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present +in glibc 2.2.5 and later. More information is available in the +libstdc++-v3 documentation. + +


+ +

i?86-*-linux*aout

+ +

Use this configuration to generate a.out binaries on Linux-based +GNU systems. This configuration is being superseded. + +


+ +

i?86-*-linux*

+ +

As of GCC 3.3, binutils 2.13.1 or later is required for this platform. +See bug 10877 for more information. + +

If you receive Signal 11 errors when building on GNU/Linux, then it is +possible you have a hardware problem. Further information on this can be +found on www.bitwizard.nl. + +


+ +

i?86-*-sco3.2v5*

+ +

Use this for the SCO OpenServer Release 5 family of operating systems. + +

Unlike earlier versions of GCC, the ability to generate COFF with this +target is no longer provided. + +

Earlier versions of GCC emitted DWARF 1 when generating ELF to allow +the system debugger to be used. That support was too burdensome to +maintain. GCC now emits only DWARF 2 for this target. This means you +may use either the UDK debugger or GDB to debug programs built by this +version of GCC. + +

GCC is now only supported on releases 5.0.4 and later, and requires that +you install Support Level Supplement OSS646B or later, and Support Level +Supplement OSS631C or later. If you are using release 5.0.7 of +OpenServer, you must have at least the first maintenance pack installed +(this includes the relevant portions of OSS646). OSS646, also known as +the “Execution Environment Update”, provides updated link editors and +assemblers, as well as updated standard C and math libraries. The C +startup modules are also updated to support the System V gABI draft, and +GCC relies on that behavior. OSS631 provides a collection of commonly +used open source libraries, some of which GCC depends on (such as GNU +gettext and zlib). SCO OpenServer Release 5.0.7 has all of this built +in by default, but OSS631C and later also apply to that release. Please +visit +ftp://ftp.sco.com/pub/openserver5 +for the latest versions of these (and other potentially useful) +supplements. + +

Although there is support for using the native assembler, it is +recommended that you configure GCC to use the GNU assembler. You do +this by using the flags +--with-gnu-as. You should +use a modern version of GNU binutils. Version 2.13.2.1 was used for all +testing. In general, only the --with-gnu-as option is tested. +A modern bintuils (as well as a plethora of other development related +GNU utilities) can be found in Support Level Supplement OSS658A, the +“GNU Development Tools” package. See the SCO web and ftp sites for details. +That package also contains the currently “officially supported” version of +GCC, version 2.95.3. It is useful for bootstrapping this version. + +


+ +

i?86-*-solaris2.10

+ +

Use this for Solaris 10 or later on x86 and x86-64 systems. This +configuration is supported by GCC 4.0 and later versions only. + +

It is recommended that you configure GCC to use the GNU assembler in +/usr/sfw/bin/gas but the Sun linker, using the options +--with-gnu-as --with-as=/usr/sfw/bin/gas --without-gnu-ld +--with-ld=/usr/ccs/bin/ld. + +


+ +

i?86-*-udk

+ +

This target emulates the SCO Universal Development Kit and requires that +package be installed. (If it is installed, you will have a +/udk/usr/ccs/bin/cc file present.) It's very much like the +i?86-*-unixware7* target +but is meant to be used when hosting on a system where UDK isn't the +default compiler such as OpenServer 5 or Unixware 2. This target will +generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, +with the same warnings and caveats as the SCO UDK. + +

This target is a little tricky to build because we have to distinguish +it from the native tools (so it gets headers, startups, and libraries +from the right place) while making the tools not think we're actually +building a cross compiler. The easiest way to do this is with a configure +command like this: + +

         CC=/udk/usr/ccs/bin/cc /your/path/to/gcc/configure \
+           --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-
+
+

You should substitute i686 in the above command with the appropriate +processor for your host. + +

After the usual make and +make install, you can then access the UDK-targeted GCC +tools by adding udk- before the commonly known name. For +example, to invoke the C compiler, you would use udk-gcc. +They will coexist peacefully with any native-target GCC tools you may +have installed. + +


+ +

ia64-*-linux

+ +

IA-64 processor (also known as IPF, or Itanium Processor Family) +running GNU/Linux. + +

If you are using the installed system libunwind library with +--with-system-libunwind, then you must use libunwind 0.98 or +later. + +

None of the following versions of GCC has an ABI that is compatible +with any of the other versions in this list, with the exception that +Red Hat 2.96 and Trillian 000171 are compatible with each other: +3.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. +This primarily affects C++ programs and programs that create shared libraries. +GCC 3.1 or later is recommended for compiling linux, the kernel. +As of version 3.1 GCC is believed to be fully ABI compliant, and hence no +more major ABI changes are expected. + +


+ +

ia64-*-hpux*

+ +

Building GCC on this target requires the GNU Assembler. The bundled HP +assembler will not work. To prevent GCC from using the wrong assembler, +the option --with-gnu-as may be necessary. + +

The GCC libunwind library has not been ported to HPUX. This means that for +GCC versions 3.2.3 and earlier, --enable-libunwind-exceptions +is required to build GCC. For GCC 3.3 and later, this is the default. +For gcc 3.4.3 and later, --enable-libunwind-exceptions is +removed and the system libunwind library will always be used. + +


+ + +

*-ibm-aix*

+ +

Support for AIX version 3 and older was discontinued in GCC 3.4. + +

“out of memory” bootstrap failures may indicate a problem with +process resource limits (ulimit). Hard limits are configured in the +/etc/security/limits system configuration file. + +

To speed up the configuration phases of bootstrapping and installing GCC, +one may use GNU Bash instead of AIX /bin/sh, e.g., + +

        % CONFIG_SHELL=/opt/freeware/bin/bash
+        % export CONFIG_SHELL
+
+

and then proceed as described in the build instructions, where we strongly recommend specifying an absolute path +to invoke srcdir/configure. + +

Because GCC on AIX is built as a 32-bit executable by default, +(although it can generate 64-bit programs) the GMP and MPFR libraries +required by gfortran must be 32-bit libraries. Building GMP and MPFR +as static archive libraries works better than shared libraries. + +

Errors involving alloca when building GCC generally are due +to an incorrect definition of CC in the Makefile or mixing files +compiled with the native C compiler and GCC. During the stage1 phase of +the build, the native AIX compiler must be invoked as cc +(not xlc). Once configure has been informed of +xlc, one needs to use make distclean to remove the +configure cache files and ensure that CC environment variable +does not provide a definition that will confuse configure. +If this error occurs during stage2 or later, then the problem most likely +is the version of Make (see above). + +

The native as and ld are recommended for bootstrapping +on AIX 4 and required for bootstrapping on AIX 5L. The GNU Assembler +reports that it supports WEAK symbols on AIX 4, which causes GCC to try to +utilize weak symbol functionality although it is not supported. The GNU +Assembler and Linker do not support AIX 5L sufficiently to bootstrap GCC. +The native AIX tools do interoperate with GCC. + +

Building libstdc++.a requires a fix for an AIX Assembler bug +APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a +fix for another AIX Assembler bug and a co-dependent AIX Archiver fix +referenced as APAR IY53606 (AIX 5.2) or a APAR IY54774 (AIX 5.1) + +

libstdc++ in GCC 3.4 increments the major version number of the +shared object and GCC installation places the libstdc++.a +shared library in a common location which will overwrite the and GCC +3.3 version of the shared library. Applications either need to be +re-linked against the new shared library or the GCC 3.1 and GCC 3.3 +versions of the libstdc++ shared object needs to be available +to the AIX runtime loader. The GCC 3.1 libstdc++.so.4, if +present, and GCC 3.3 libstdc++.so.5 shared objects can be +installed for runtime dynamic loading using the following steps to set +the F_LOADONLY flag in the shared object for each +multilib libstdc++.a installed: + +

Extract the shared objects from the currently installed +libstdc++.a archive: +

        % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
+
+

Enable the F_LOADONLY flag so that the shared object will be +available for runtime dynamic loading, but not linking: +

        % strip -e libstdc++.so.4 libstdc++.so.5
+
+

Archive the runtime-only shared object in the GCC 3.4 +libstdc++.a archive: +

        % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
+
+

Linking executables and shared libraries may produce warnings of +duplicate symbols. The assembly files generated by GCC for AIX always +have included multiple symbol definitions for certain global variable +and function declarations in the original program. The warnings should +not prevent the linker from producing a correct library or runnable +executable. + +

AIX 4.3 utilizes a “large format” archive to support both 32-bit and +64-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1 +to parse archive libraries did not handle the new format correctly. +These routines are used by GCC and result in error messages during +linking such as “not a COFF file”. The version of the routines shipped +with AIX 4.3.1 should work for a 32-bit environment. The -g +option of the archive command may be used to create archives of 32-bit +objects using the original “small format”. A correct version of the +routines is shipped with AIX 4.3.2 and above. + +

Some versions of the AIX binder (linker) can fail with a relocation +overflow severe error when the -bbigtoc option is used to link +GCC-produced object files into an executable that overflows the TOC. A fix +for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is +available from IBM Customer Support and from its +techsupport.services.ibm.com +website as PTF U455193. + +

The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core +with a segmentation fault when invoked by any version of GCC. A fix for +APAR IX87327 is available from IBM Customer Support and from its +techsupport.services.ibm.com +website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above. + +

The initial assembler shipped with AIX 4.3.0 generates incorrect object +files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS +TO ASSEMBLE/BIND) is available from IBM Customer Support and from its +techsupport.services.ibm.com +website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above. + +

AIX provides National Language Support (NLS). Compilers and assemblers +use NLS to support locale-specific representations of various data +formats including floating-point numbers (e.g., . vs , for +separating decimal fractions). There have been problems reported where +GCC does not produce the same floating-point formats that the assembler +expects. If one encounters this problem, set the LANG +environment variable to C or En_US. + +

By default, GCC for AIX 4.1 and above produces code that can be used on +both Power or PowerPC processors. + +

A default can be specified with the -mcpu=cpu_type +switch and using the configure option --with-cpu-cpu_type. + +


+ +

iq2000-*-elf

+ +

Vitesse IQ2000 processors. These are used in embedded +applications. There are no standard Unix configurations. + +


+ +

m32c-*-elf

+ +

Renesas M32C processor. +This configuration is intended for embedded systems. + +


+ +

m32r-*-elf

+ +

Renesas M32R processor. +This configuration is intended for embedded systems. + +


+ +

m6811-elf

+ +

Motorola 68HC11 family micro controllers. These are used in embedded +applications. There are no standard Unix configurations. + +


+ +

m6812-elf

+ +

Motorola 68HC12 family micro controllers. These are used in embedded +applications. There are no standard Unix configurations. + +


+ +

m68k-*-*

+ +

By default, m68k-*-aout, m68k-*-coff*, +m68k-*-elf*, m68k-*-rtems and m68k-*-uclinux +build libraries for both M680x0 and ColdFire processors. If you only +need the M680x0 libraries, you can omit the ColdFire ones by passing +--with-arch=m68k to configure. Alternatively, you +can omit the M680x0 libraries by passing --with-arch=cf to +configure. These targets default to 5206 code when +configured with --with-arch=cf and 68020 code otherwise. + +

The m68k-*-linux-gnu, m68k-*-netbsd and +m68k-*-openbsd targets also support the --with-arch +option. They will generate ColdFire CFV4e code when configured with +--with-arch=cf and 68020 code otherwise. + +

You can override the default processors listed above by configuring +with --with-cpu=target. This target can either +be a -mcpu argument or one of the following values: +m68000, m68010, m68020, m68030, +m68040, m68060, m68020-40 and m68020-60. + +


+ +

m68k-hp-hpux

+ +

HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a bug in +the assembler that prevents compilation of GCC. This +bug manifests itself during the first stage of compilation, while +building libgcc2.a: + +

     _floatdisf
+     cc1: warning: `-g' option not supported on this version of GCC
+     cc1: warning: `-g1' option not supported on this version of GCC
+     ./xgcc: Internal compiler error: program as got fatal signal 11
+
+

A patched version of the assembler is available as the file +ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler. If you +have HP software support, the patch can also be obtained directly from +HP, as described in the following note: + +

+This is the patched assembler, to patch SR#1653-010439, where the +assembler aborts on floating point constants. + +

The bug is not really in the assembler, but in the shared library +version of the function “cvtnum(3c)”. The bug on “cvtnum(3c)” is +SR#4701-078451. Anyway, the attached assembler uses the archive +library version of “cvtnum(3c)” and thus does not exhibit the bug. +

+ +

This patch is also known as PHCO_4484. + +

In addition gdb does not understand that native HP-UX format, so +you must use gas if you wish to use gdb. + +

On HP-UX version 8.05, but not on 8.07 or more recent versions, the +fixproto shell script triggers a bug in the system shell. If you +encounter this problem, upgrade your operating system or use BASH (the +GNU shell) to run fixproto. This bug will cause the fixproto +program to report an error of the form: + +

     ./fixproto: sh internal 1K buffer overflow
+
+

To fix this, you can also change the first line of the fixproto script +to look like: + +

     #!/bin/ksh
+
+


+ +

m68k-*-uclinux

+ +

GCC 4.3 changed the uClinux configuration so that it uses the +m68k-linux-gnu ABI rather than the m68k-elf ABI. +It also added improved support for C++ and flat shared libraries, +both of which were ABI changes. However, you can still use the +original ABI by configuring for m68k-uclinuxoldabi or +m68k-vendor-uclinuxoldabi. + +


+ +

mips-*-*

+ +

If on a MIPS system you get an error message saying “does not have gp +sections for all it's [sic] sectons [sic]”, don't worry about it. This +happens whenever you use GAS with the MIPS linker, but there is not +really anything wrong, and it is okay to use the output file. You can +stop such warnings by installing the GNU linker. + +

It would be nice to extend GAS to produce the gp tables, but they are +optional, and there should not be a warning about their absence. + +

The libstdc++ atomic locking routines for MIPS targets requires MIPS II +and later. A patch went in just after the GCC 3.3 release to +make mips*-*-* use the generic implementation instead. You can also +configure for mipsel-elf as a workaround. The +mips*-*-linux* target continues to use the MIPS II routines. More +work on this is expected in future releases. + + + +

The built-in __sync_* functions are available on MIPS II and +later systems and others that support the ll, sc and +sync instructions. This can be overridden by passing +--with-llsc or --without-llsc when configuring GCC. +Since the Linux kernel emulates these instructions if they are +missing, the default for mips*-*-linux* targets is +--with-llsc. The --with-llsc and +--without-llsc configure options may be overridden at compile +time by passing the -mllsc or -mno-llsc options to +the compiler. + +

MIPS systems check for division by zero (unless +-mno-check-zero-division is passed to the compiler) by +generating either a conditional trap or a break instruction. Using +trap results in smaller code, but is only supported on MIPS II and +later. Also, some versions of the Linux kernel have a bug that +prevents trap from generating the proper signal (SIGFPE). To enable +the use of break, use the --with-divide=breaks +configure option when configuring GCC. The default is to +use traps on systems that support them. + +

Cross-compilers for the MIPS as target using the MIPS assembler +currently do not work, because the auxiliary programs +mips-tdump.c and mips-tfile.c can't be compiled on +anything but a MIPS. It does work to cross compile for a MIPS +if you use the GNU assembler and linker. + +

The assembler from GNU binutils 2.17 and earlier has a bug in the way +it sorts relocations for REL targets (o32, o64, EABI). This can cause +bad code to be generated for simple C++ programs. Also the linker +from GNU binutils versions prior to 2.17 has a bug which causes the +runtime linker stubs in very large programs, like libgcj.so, to +be incorrectly generated. GNU Binutils 2.18 and later (and snapshots +made after Nov. 9, 2006) should be free from both of these problems. + +


+ +

mips-sgi-irix5

+ +

In order to compile GCC on an SGI running IRIX 5, the compiler_dev.hdr +subsystem must be installed from the IDO CD-ROM supplied by SGI. +It is also available for download from +ftp://ftp.sgi.com/sgi/IRIX5.3/iris-development-option-5.3.tardist. + +

If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +-Wf,-XNg1500 option. If you use the -O2 +optimization option, you also need to use -Olimit 3000. + +

To enable debugging under IRIX 5, you must use GNU binutils 2.15 or +later, and use the --with-gnu-ld configure option +when configuring GCC. You need to use GNU ar and nm, +also distributed with GNU binutils. + +

Some users have reported that /bin/sh will hang during bootstrap. +This problem can be avoided by running the commands: + +

        % CONFIG_SHELL=/bin/ksh
+        % export CONFIG_SHELL
+
+

before starting the build. + +


+ +

mips-sgi-irix6

+ +

If you are using SGI's MIPSpro cc as your bootstrap compiler, you must +ensure that the N32 ABI is in use. To test this, compile a simple C +file with cc and then run file on the +resulting object file. The output should look like: + +

     test.o: ELF N32 MSB ...
+
+

If you see: + +

     test.o: ELF 32-bit MSB ...
+
+

or + +

     test.o: ELF 64-bit MSB ...
+
+

then your version of cc uses the O32 or N64 ABI by default. You +should set the environment variable CC to cc -n32 +before configuring GCC. + +

If you want the resulting gcc to run on old 32-bit systems +with the MIPS R4400 CPU, you need to ensure that only code for the mips3 +instruction set architecture (ISA) is generated. While GCC 3.x does +this correctly, both GCC 2.95 and SGI's MIPSpro cc may change +the ISA depending on the machine where GCC is built. Using one of them +as the bootstrap compiler may result in mips4 code, which won't run at +all on mips3-only systems. For the test program above, you should see: + +

     test.o: ELF N32 MSB mips-3 ...
+
+

If you get: + +

     test.o: ELF N32 MSB mips-4 ...
+
+

instead, you should set the environment variable CC to cc +-n32 -mips3 or gcc -mips3 respectively before configuring GCC. + +

MIPSpro C 7.4 may cause bootstrap failures, due to a bug when inlining +memcmp. Either add -U__INLINE_INTRINSICS to the CC +environment variable as a workaround or upgrade to MIPSpro C 7.4.1m. + +

GCC on IRIX 6 is usually built to support the N32, O32 and N64 ABIs. If +you build GCC on a system that doesn't have the N64 libraries installed +or cannot run 64-bit binaries, +you need to configure with --disable-multilib so GCC doesn't +try to use them. This will disable building the O32 libraries, too. +Look for /usr/lib64/libc.so.1 to see if you +have the 64-bit libraries installed. + +

To enable debugging for the O32 ABI, you must use GNU as from +GNU binutils 2.15 or later. You may also use GNU ld, but +this is not required and currently causes some problems with Ada. + +

The --enable-libgcj +option is disabled by default: IRIX 6 uses a very low default limit +(20480) for the command line length. Although libtool contains a +workaround for this problem, at least the N64 libgcj is known not +to build despite this, running into an internal error of the native +ld. A sure fix is to increase this limit (ncargs) to +its maximum of 262144 bytes. If you have root access, you can use the +systune command to do this. + +

wchar_t support in libstdc++ is not available for old +IRIX 6.5.x releases, x < 19. The problem cannot be autodetected +and in order to build GCC for such targets you need to configure with +--disable-wchar_t. + +

See http://freeware.sgi.com/ for more +information about using GCC on IRIX platforms. + +


+ +

powerpc-*-*

+ +

You can specify a default version for the -mcpu=cpu_type +switch by using the configure option --with-cpu-cpu_type. + +


+ +

powerpc-*-darwin*

+ +

PowerPC running Darwin (Mac OS X kernel). + +

Pre-installed versions of Mac OS X may not include any developer tools, +meaning that you will not be able to build GCC from source. Tool +binaries are available at +http://developer.apple.com/darwin/projects/compiler/ (free +registration required). + +

This version of GCC requires at least cctools-590.36. The +cctools-590.36 package referenced from +http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html will not work +on systems older than 10.3.9 (aka darwin7.9.0). + +


+ +

powerpc-*-elf, powerpc-*-sysv4

+ +

PowerPC system in big endian mode, running System V.4. + +


+ +

powerpc*-*-linux-gnu*

+ +

You will need +binutils 2.15 +or newer for a working GCC. + +


+ +

powerpc-*-netbsd*

+ +

PowerPC system in big endian mode running NetBSD. To build the +documentation you will need Texinfo version 4.4 (NetBSD 1.5.1 included +Texinfo version 3.12). + +


+ +

powerpc-*-eabisim

+ +

Embedded PowerPC system in big endian mode for use in running under the +PSIM simulator. + +


+ +

powerpc-*-eabi

+ +

Embedded PowerPC system in big endian mode. + +


+ +

powerpcle-*-elf, powerpcle-*-sysv4

+ +

PowerPC system in little endian mode, running System V.4. + +


+ +

powerpcle-*-eabisim

+ +

Embedded PowerPC system in little endian mode for use in running under +the PSIM simulator. + +


+ +

powerpcle-*-eabi

+ +

Embedded PowerPC system in little endian mode. + +


+ +

s390-*-linux*

+ +

S/390 system running GNU/Linux for S/390. + +


+ +

s390x-*-linux*

+ +

zSeries system (64-bit) running GNU/Linux for zSeries. + +


+ +

s390x-ibm-tpf*

+ +

zSeries system (64-bit) running TPF. This platform is +supported as cross-compilation target only. + +


+ + + + +

*-*-solaris2*

+ +

Sun does not ship a C compiler with Solaris 2. To bootstrap and install +GCC you first have to install a pre-built compiler, see the +binaries page for details. + +

The Solaris 2 /bin/sh will often fail to configure +libstdc++-v3, boehm-gc or libjava. We therefore +recommend using the following initial sequence of commands + +

        % CONFIG_SHELL=/bin/ksh
+        % export CONFIG_SHELL
+
+

and proceed as described in the configure instructions. +In addition we strongly recommend specifying an absolute path to invoke +srcdir/configure. + +

Solaris 2 comes with a number of optional OS packages. Some of these +are needed to use GCC fully, namely SUNWarc, +SUNWbtool, SUNWesu, SUNWhea, SUNWlibm, +SUNWsprot, and SUNWtoo. If you did not install all +optional packages when installing Solaris 2, you will need to verify that +the packages that GCC needs are installed. + +

To check whether an optional package is installed, use +the pkginfo command. To add an optional package, use the +pkgadd command. For further details, see the Solaris 2 +documentation. + +

Trying to use the linker and other tools in +/usr/ucb to install GCC has been observed to cause trouble. +For example, the linker may hang indefinitely. The fix is to remove +/usr/ucb from your PATH. + +

The build process works more smoothly with the legacy Sun tools so, if you +have /usr/xpg4/bin in your PATH, we recommend that you place +/usr/bin before /usr/xpg4/bin for the duration of the build. + +

All releases of GNU binutils prior to 2.11.2 have known bugs on this +platform. We recommend the use of GNU binutils 2.11.2 or later, or the +vendor tools (Sun as, Sun ld). Note that your mileage +may vary if you use a combination of the GNU tools and the Sun tools: while +the combination GNU as + Sun ld should reasonably work, +the reverse combination Sun as + GNU ld is known to +cause memory corruption at runtime in some cases for C++ programs. + +

The stock GNU binutils 2.15 release is broken on this platform because of a +single bug. It has been fixed on the 2.15 branch in the CVS repository. +You can obtain a working version by checking out the binutils-2_15-branch +from the CVS repository or applying the patch +http://sourceware.org/ml/binutils-cvs/2004-09/msg00036.html to the +release. + +

We recommend using GNU binutils 2.16 or later in conjunction with GCC 4.x, +or the vendor tools (Sun as, Sun ld). However, for +Solaris 10 and above, an additional patch is required in order for the GNU +linker to be able to cope with a new flavor of shared libraries. You +can obtain a working version by checking out the binutils-2_16-branch from +the CVS repository or applying the patch +http://sourceware.org/ml/binutils-cvs/2005-07/msg00122.html to the +release. + +

Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or +newer: g++ will complain that types are missing. These headers assume +that omitting the type means int; this assumption worked for C89 but +is wrong for C++, and is now wrong for C99 also. + +

g++ accepts such (invalid) constructs with the option +-fpermissive; it +will assume that any missing type is int (as defined by C89). + +

There are patches for Solaris 2.6 (105633-56 or newer for SPARC, +106248-42 or newer for Intel), Solaris 7 (108376-21 or newer for SPARC, +108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC, +108653-22 for Intel) that fix this bug. + +

Sun bug 4927647 sometimes causes random spurious testsuite failures +related to missing diagnostic output. This bug doesn't affect GCC +itself, rather it is a kernel bug triggered by the expect +program which is used only by the GCC testsuite driver. When the bug +causes the expect program to miss anticipated output, extra +testsuite failures appear. + +

There are patches for Solaris 8 (117350-12 or newer for SPARC, +117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for +SPARC, 117172-11 or newer for Intel) that address this problem. + +


+ +

sparc-sun-solaris2*

+ +

When GCC is configured to use binutils 2.11.2 or later the binaries +produced are smaller than the ones produced using Sun's native tools; +this difference is quite significant for binaries containing debugging +information. + +

Sun as 4.x is broken in that it cannot cope with long symbol names. +A typical error message might look similar to the following: + +

     /usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: error:
+       can't compute value of an expression involving an external symbol.
+
+

This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris +2.6 and has been fixed in later (5.x) versions of the assembler, +starting with Solaris 7. + +

Starting with Solaris 7, the operating system is capable of executing +64-bit SPARC V9 binaries. GCC 3.1 and later properly supports +this; the -m64 option enables 64-bit code generation. +However, if all you want is code tuned for the UltraSPARC CPU, you +should try the -mtune=ultrasparc option instead, which produces +code that, unlike full 64-bit code, can still run on non-UltraSPARC +machines. + +

When configuring on a Solaris 7 or later system that is running a kernel +that supports only 32-bit binaries, one must configure with +--disable-multilib, since we will not be able to build the +64-bit target libraries. + +

GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of +the GNU compiler (especially GCC 3.0.x versions), which lead to the +miscompilation of the stage1 compiler and the subsequent failure of the +bootstrap process. A workaround is to use GCC 3.2.3 as an intermediary +stage, i.e. to bootstrap that compiler with the base compiler and then +use it to bootstrap the final compiler. + +

GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7) +and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap +failure in form of a miscompilation of the stage1 compiler by the Sun +compiler. This is Sun bug 4974440. This is fixed with patch 112760-07. + +

GCC 3.4 changed the default debugging format from STABS to DWARF-2 for +32-bit code on Solaris 7 and later. If you use the Sun assembler, this +change apparently runs afoul of Sun bug 4910101 (which is referenced as +a x86-only problem by Sun, probably because they do not use DWARF-2). +A symptom of the problem is that you cannot compile C++ programs like +groff 1.19.1 without getting messages similar to the following: + +

     ld: warning: relocation error: R_SPARC_UA32: ...
+       external symbolic relocation against non-allocatable section
+       .debug_info cannot be processed at runtime: relocation ignored.
+
+

To work around this problem, compile with -gstabs+ instead of +plain -g. + +

When configuring the GNU Multiple Precision Library (GMP) or the MPFR +library on a Solaris 7 or later system, the canonical target triplet +must be specified as the build parameter on the configure +line. This triplet can be obtained by invoking ./config.guess in +the toplevel source directory of GCC (and not that of GMP or MPFR). +For example on a Solaris 7 system: + +

        % ./configure --build=sparc-sun-solaris2.7 --prefix=xxx
+
+


+ +

sparc-sun-solaris2.7

+ +

Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in +the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 +and later, including all EGCS releases. Sun formerly recommended +107058-01 for all Solaris 7 users, but around 1999-09-01 it started to +recommend it only for people who use Sun's compilers. + +

Here are some workarounds to this problem: +

    +
  • Do not install Sun patch 107058-01 until after Sun releases a +complete patch for bug 4210064. This is the simplest course to take, +unless you must also use Sun's C compiler. Unfortunately 107058-01 +is preinstalled on some new Solaris 7-based hosts, so you may have to +back it out. + +
  • Copy the original, unpatched Solaris 7 +/usr/ccs/bin/as into +/usr/local/libexec/gcc/sparc-sun-solaris2.7/3.4/as, +adjusting the latter name to fit your local conventions and software +version numbers. + +
  • Install Sun patch 106950-03 (1999-05-25) or later. Nobody with +both 107058-01 and 106950-03 installed has reported the bug with GCC +and Sun's dynamic linker. This last course of action is riskiest, +for two reasons. First, you must install 106950 on all hosts that +run code generated by GCC; it doesn't suffice to install it only on +the hosts that run GCC itself. Second, Sun says that 106950-03 is +only a partial fix for bug 4210064, but Sun doesn't know whether the +partial fix is adequate for GCC. Revision -08 or later should fix +the bug. The current (as of 2004-05-23) revision is -24, and is included in +the Solaris 7 Recommended Patch Cluster. +
+ +

GCC 3.3 triggers a bug in version 5.0 Alpha 03/27/98 of the Sun assembler, +which causes a bootstrap failure when linking the 64-bit shared version of +libgcc. A typical error message is: + +

     ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o:
+       symbol <unknown>:  offset 0xffffffff7ec133e7 is non-aligned.
+
+

This bug has been fixed in the final 5.0 version of the assembler. + +

A similar problem was reported for version Sun WorkShop 6 99/08/18 of the +Sun assembler, which causes a bootstrap failure with GCC 4.0.0: + +

     ld: fatal: relocation error: R_SPARC_DISP32:
+       file .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o:
+         symbol <unknown>: offset 0xfccd33ad is non-aligned
+
+

This bug has been fixed in more recent revisions of the assembler. + +


+ +

sparc-*-linux*

+ +

GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 +or newer on this platform. All earlier binutils and glibc +releases mishandled unaligned relocations on sparc-*-* targets. + +


+ +

sparc64-*-solaris2*

+ +

When configuring the GNU Multiple Precision Library (GMP) or the +MPFR library, the canonical target triplet must be specified as +the build parameter on the configure line. For example +on a Solaris 7 system: + +

        % ./configure --build=sparc64-sun-solaris2.7 --prefix=xxx
+
+

The following compiler flags must be specified in the configure +step in order to bootstrap this target with the Sun compiler: + +

        % CC="cc -xarch=v9 -xildoff" srcdir/configure [options] [target]
+
+

-xarch=v9 specifies the SPARC-V9 architecture to the Sun toolchain +and -xildoff turns off the incremental linker. + +


+ +

sparcv9-*-solaris2*

+ +

This is a synonym for sparc64-*-solaris2*. + +


+ +

*-*-sysv*

+ +

On System V release 3, you may get this error message +while linking: + +

     ld fatal: failed to write symbol name something
+      in strings table for file whatever
+
+

This probably indicates that the disk is full or your ulimit won't allow +the file to be as large as it needs to be. + +

This problem can also result because the kernel parameter MAXUMEM +is too small. If so, you must regenerate the kernel and make the value +much larger. The default value is reported to be 1024; a value of 32768 +is said to work. Smaller values may also work. + +

On System V, if you get an error like this, + +

     /usr/local/lib/bison.simple: In function `yyparse':
+     /usr/local/lib/bison.simple:625: virtual memory exhausted
+
+

that too indicates a problem with disk space, ulimit, or MAXUMEM. + +

On a System V release 4 system, make sure /usr/bin precedes +/usr/ucb in PATH. The cc command in +/usr/ucb uses libraries which have bugs. + +


+ +

vax-dec-ultrix

+ +

Don't try compiling with VAX C (vcc). It produces incorrect code +in some cases (for example, when alloca is used). + +


+ +

*-*-vxworks*

+ +

Support for VxWorks is in flux. At present GCC supports only the +very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC. +We welcome patches for other architectures supported by VxWorks 5.5. +Support for VxWorks AE would also be welcome; we believe this is merely +a matter of writing an appropriate “configlette” (see below). We are +not interested in supporting older, a.out or COFF-based, versions of +VxWorks in GCC 3. + +

VxWorks comes with an older version of GCC installed in +$WIND_BASE/host; we recommend you do not overwrite it. +Choose an installation prefix entirely outside $WIND_BASE. +Before running configure, create the directories prefix +and prefix/bin. Link or copy the appropriate assembler, +linker, etc. into prefix/bin, and set your PATH to +include that directory while running both configure and +make. + +

You must give configure the +--with-headers=$WIND_BASE/target/h switch so that it can +find the VxWorks system headers. Since VxWorks is a cross compilation +target only, you must also specify --target=target. +configure will attempt to create the directory +prefix/target/sys-include and copy files into it; +make sure the user running configure has sufficient privilege +to do so. + +

GCC's exception handling runtime requires a special “configlette” +module, contrib/gthr_supp_vxw_5x.c. Follow the instructions in +that file to add the module to your kernel build. (Future versions of +VxWorks will incorporate this module.) + +


+ +

x86_64-*-*, amd64-*-*

+ +

GCC supports the x86-64 architecture implemented by the AMD64 processor +(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD. +On GNU/Linux the default is a bi-arch compiler which is able to generate +both 64-bit x86-64 and 32-bit x86 code (via the -m32 switch). + +


+ +

xtensa-*-elf

+ +

This target is intended for embedded Xtensa systems using the +newlib C library. It uses ELF but does not support shared +objects. Designed-defined instructions specified via the +Tensilica Instruction Extension (TIE) language are only supported +through inline assembly. + +

The Xtensa configuration information must be specified prior to +building GCC. The include/xtensa-config.h header +file contains the configuration information. If you created your +own Xtensa configuration with the Xtensa Processor Generator, the +downloaded files include a customized copy of this header file, +which you can use to replace the default header file. + +


+ +

xtensa-*-linux*

+ +

This target is for Xtensa systems running GNU/Linux. It supports ELF +shared objects and the GNU C library (glibc). It also generates +position-independent code (PIC) regardless of whether the +-fpic or -fPIC options are used. In other +respects, this target is the same as the +xtensa-*-elf target. + +


+ +

Microsoft Windows (32-bit)

+ +

Ports of GCC are included with the +Cygwin environment. + +

GCC will build under Cygwin without modification; it does not build +with Microsoft's C++ compiler and there are no plans to make it do so. + +

For MinGW, GCC will build with and support only MinGW runtime 3.12 and later. +Earlier versions of headers are incompatible with the new default semantics +of extern inline in -std=c99 and -std=gnu99 modes. + +


+ +

OS/2

+ +

GCC does not currently support OS/2. However, Andrew Zabolotny has been +working on a generic OS/2 port with pgcc. The current code can be found +at http://www.goof.com/pcg/os2/. + +


+ +

Older systems

+ +

GCC contains support files for many older (1980s and early +1990s) Unix variants. For the most part, support for these systems +has not been deliberately removed, but it has not been maintained for +several years and may suffer from bitrot. + +

Starting with GCC 3.1, each release has a list of “obsoleted” systems. +Support for these systems is still present in that release, but +configure will fail unless the --enable-obsolete +option is given. Unless a maintainer steps forward, support for these +systems will be removed from the next release of GCC. + +

Support for old systems as hosts for GCC can cause problems if the +workarounds for compiler, library and operating system bugs affect the +cleanliness or maintainability of the rest of GCC. In some cases, to +bring GCC up on such a system, if still possible with current GCC, may +require first installing an old version of GCC which did work on that +system, and using it to compile a more recent GCC, to avoid bugs in the +vendor compiler. Old releases of GCC 1 and GCC 2 are available in the +old-releases directory on the GCC mirror sites. Header bugs may generally be avoided using +fixincludes, but bugs or deficiencies in libraries and the +operating system may still cause problems. + +

Support for older systems as targets for cross-compilation is less +problematic than support for them as hosts for GCC; if an enthusiast +wishes to make such a target work again (including resurrecting any of +the targets that never worked with GCC 2, starting from the last +version before they were removed), patches +following the usual requirements would be +likely to be accepted, since they should not affect the support for more +modern targets. + +

For some systems, old versions of GNU binutils may also be useful, +and are available from pub/binutils/old-releases on +sourceware.org mirror sites. + +

Some of the information on specific systems above relates to +such older systems, but much of the information +about GCC on such systems (which may no longer be applicable to +current GCC) is to be found in the GCC texinfo manual. + +


+ +

all ELF targets (SVR4, Solaris 2, etc.)

+ +

C++ support is significantly better on ELF targets if you use the +GNU linker; duplicate copies of +inlines, vtables and template instantiations will be discarded +automatically. + +


+

Return to the GCC Installation page + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/test.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/test.html new file mode 100644 index 0000000..6f40d36 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccinstall/test.html @@ -0,0 +1,231 @@ + + +Installing GCC: Testing + + + + + + + + + + +

Installing GCC: Testing

+ +Before you install GCC, we encourage you to run the testsuites and to +compare your results with results from a similar configuration that have +been submitted to the +gcc-testresults mailing list. +Some of these archived results are linked from the build status lists +at http://gcc.gnu.org/buildstat.html, although not everyone who +reports a successful build runs the testsuites and submits the results. +This step is optional and may require you to download additional software, +but it can give you confidence in your new GCC installation or point out +problems before you install and start using your new GCC. + +

First, you must have downloaded the testsuites. +These are part of the full distribution, but if you downloaded the +“core” compiler plus any front ends, you must download the testsuites +separately. + +

Second, you must have the testing tools installed. This includes +DejaGnu, Tcl, and Expect; +the DejaGnu site has links to these. + +

If the directories where runtest and expect were +installed are not in the PATH, you may need to set the following +environment variables appropriately, as in the following example (which +assumes that DejaGnu has been installed under /usr/local): + +

          TCL_LIBRARY = /usr/local/share/tcl8.0
+          DEJAGNULIBS = /usr/local/share/dejagnu
+
+

(On systems such as Cygwin, these paths are required to be actual +paths, not mounts or links; presumably this is due to some lack of +portability in the DejaGnu code.) + +

Finally, you can run the testsuite (which may take a long time): +

          cd objdir; make -k check
+
+

This will test various components of GCC, such as compiler +front ends and runtime libraries. While running the testsuite, DejaGnu +might emit some harmless messages resembling +WARNING: Couldn't find the global config file. or +WARNING: Couldn't find tool init file that can be ignored. + +

If you are testing a cross-compiler, you may want to run the testsuite +on a simulator as described at http://gcc.gnu.org/simtest-howto.html. + +

0.1 How can you run the testsuite on selected tests?

+ +

In order to run sets of tests selectively, there are targets +make check-gcc and make check-g++ +in the gcc subdirectory of the object directory. You can also +just run make check in a subdirectory of the object directory. + +

A more selective way to just run all gcc execute tests in the +testsuite is to use + +

         make check-gcc RUNTESTFLAGS="execute.exp other-options"
+
+

Likewise, in order to run only the g++ “old-deja” tests in +the testsuite with filenames matching 9805*, you would use + +

         make check-g++ RUNTESTFLAGS="old-deja.exp=9805* other-options"
+
+

The *.exp files are located in the testsuite directories of the GCC +source, the most important ones being compile.exp, +execute.exp, dg.exp and old-deja.exp. +To get a list of the possible *.exp files, pipe the +output of make check into a file and look at the +Running ... .exp lines. + +

0.2 Passing options and running multiple testsuites

+ +

You can pass multiple options to the testsuite using the +--target_board option of DejaGNU, either passed as part of +RUNTESTFLAGS, or directly to runtest if you prefer to +work outside the makefiles. For example, + +

         make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
+
+

will run the standard g++ testsuites (“unix” is the target name +for a standard native testsuite situation), passing +-O3 -fmerge-constants to the compiler on every test, i.e., +slashes separate options. + +

You can run the testsuites multiple times using combinations of options +with a syntax similar to the brace expansion of popular shells: + +

         ..."--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}"
+
+

(Note the empty option caused by the trailing comma in the final group.) +The following will run each testsuite eight times using the arm-sim +target, as if you had specified all possible combinations yourself: + +

         --target_board=arm-sim/-mhard-float/-O1
+         --target_board=arm-sim/-mhard-float/-O2
+         --target_board=arm-sim/-mhard-float/-O3
+         --target_board=arm-sim/-mhard-float
+         --target_board=arm-sim/-msoft-float/-O1
+         --target_board=arm-sim/-msoft-float/-O2
+         --target_board=arm-sim/-msoft-float/-O3
+         --target_board=arm-sim/-msoft-float
+
+

They can be combined as many times as you wish, in arbitrary ways. This +list: + +

         ..."--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}"
+
+

will generate four combinations, all involving -Wextra. + +

The disadvantage to this method is that the testsuites are run in serial, +which is a waste on multiprocessor systems. For users with GNU Make and +a shell which performs brace expansion, you can run the testsuites in +parallel by having the shell perform the combinations and make +do the parallel runs. Instead of using --target_board, use a +special makefile target: + +

         make -jN check-testsuite//test-target/option1/option2/...
+
+

For example, + +

         make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
+
+

will run three concurrent “make-gcc” testsuites, eventually testing all +ten combinations as described above. Note that this is currently only +supported in the gcc subdirectory. (To see how this works, try +typing echo before the example given here.) + +

0.3 Additional testing for Java Class Libraries

+ +

The Java runtime tests can be executed via make check +in the target/libjava/testsuite directory in +the build tree. + +

The Mauve Project provides +a suite of tests for the Java Class Libraries. This suite can be run +as part of libgcj testing by placing the Mauve tree within the libjava +testsuite at libjava/testsuite/libjava.mauve/mauve, or by +specifying the location of that tree when invoking make, as in +make MAUVEDIR=~/mauve check. + +

0.4 How to interpret test results

+ +

The result of running the testsuite are various *.sum and *.log +files in the testsuite subdirectories. The *.log files contain a +detailed log of the compiler invocations and the corresponding +results, the *.sum files summarize the results. These summaries +contain status codes for all tests: + +

    +
  • PASS: the test passed as expected +
  • XPASS: the test unexpectedly passed +
  • FAIL: the test unexpectedly failed +
  • XFAIL: the test failed as expected +
  • UNSUPPORTED: the test is not supported on this platform +
  • ERROR: the testsuite detected an error +
  • WARNING: the testsuite detected a possible problem +
+ +

It is normal for some tests to report unexpected failures. At the +current time the testing harness does not allow fine grained control +over whether or not a test is expected to fail. This problem should +be fixed in future releases. + +

0.5 Submitting test results

+ +

If you want to report the results to the GCC project, use the +contrib/test_summary shell script. Start it in the objdir with + +

         srcdir/contrib/test_summary -p your_commentary.txt \
+             -m gcc-testresults@gcc.gnu.org |sh
+
+

This script uses the Mail program to send the results, so +make sure it is in your PATH. The file your_commentary.txt is +prepended to the testsuite summary and should contain any special +remarks you have on your results or your build environment. Please +do not edit the testsuite result block or the subject line, as these +messages may be automatically processed. + +


+

Return to the GCC Installation page + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Accessors.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Accessors.html new file mode 100644 index 0000000..ff3a36b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Accessors.html @@ -0,0 +1,114 @@ + + +Accessors - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: RTL Classes, +Up: RTL +



+
+ +

12.3 Access to Operands

+ +

+Operands of expressions are accessed using the macros XEXP, +XINT, XWINT and XSTR. Each of these macros takes +two arguments: an expression-pointer (RTX) and an operand number +(counting from zero). Thus, + +

     XEXP (x, 2)
+
+

accesses operand 2 of expression x, as an expression. + +

     XINT (x, 2)
+
+

accesses the same operand as an integer. XSTR, used in the same +fashion, would access it as a string. + +

Any operand can be accessed as an integer, as an expression or as a string. +You must choose the correct method of access for the kind of value actually +stored in the operand. You would do this based on the expression code of +the containing expression. That is also how you would know how many +operands there are. + +

For example, if x is a subreg expression, you know that it has +two operands which can be correctly accessed as XEXP (x, 0) +and XINT (x, 1). If you did XINT (x, 0), you +would get the address of the expression operand but cast as an integer; +that might occasionally be useful, but it would be cleaner to write +(int) XEXP (x, 0). XEXP (x, 1) would also +compile without error, and would return the second, integer operand cast as +an expression pointer, which would probably result in a crash when +accessed. Nothing stops you from writing XEXP (x, 28) either, +but this will access memory past the end of the expression with +unpredictable results. + +

Access to operands which are vectors is more complicated. You can use the +macro XVEC to get the vector-pointer itself, or the macros +XVECEXP and XVECLEN to access the elements and length of a +vector. + + + +

XVEC (exp, idx)
Access the vector-pointer which is operand number idx in exp. + +


XVECLEN (exp, idx)
Access the length (number of elements) in the vector which is +in operand number idx in exp. This value is an int. + +


XVECEXP (exp, idx, eltnum)
Access element number eltnum in the vector which is +in operand number idx in exp. This value is an RTX. + +

It is up to you to make sure that eltnum is not negative +and is less than XVECLEN (exp, idx). +

+ +

All the macros defined in this section expand into lvalues and therefore +can be used to assign the operands, lengths and vector elements as well as +to access them. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Ada-Tests.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Ada-Tests.html new file mode 100644 index 0000000..b03d4c6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Ada-Tests.html @@ -0,0 +1,88 @@ + + +Ada Tests - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Test Directives, +Up: Testsuites +



+
+ +

6.4.3 Ada Language Testsuites

+ +

The Ada testsuite includes executable tests from the ACATS 2.5 +testsuite, publicly available at +http://www.adaic.org/compilers/acats/2.5 + +

These tests are integrated in the GCC testsuite in the +gcc/testsuite/ada/acats directory, and +enabled automatically when running make check, assuming +the Ada language has been enabled when configuring GCC. + +

You can also run the Ada testsuite independently, using +make check-ada, or run a subset of the tests by specifying which +chapter to run, e.g.: + +

     $ make check-ada CHAPTERS="c3 c9"
+
+

The tests are organized by directory, each directory corresponding to +a chapter of the Ada Reference Manual. So for example, c9 corresponds +to chapter 9, which deals with tasking features of the language. + +

There is also an extra chapter called gcc containing a template for +creating new executable tests. + +

The tests are run using two sh scripts: run_acats and +run_all.sh. To run the tests using a simulator or a cross +target, see the small +customization section at the top of run_all.sh. + +

These tests are run using the build tree: they can be run without doing +a make install. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Adding-new-DECL-node-types.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Adding-new-DECL-node-types.html new file mode 100644 index 0000000..aacdf86 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Adding-new-DECL-node-types.html @@ -0,0 +1,142 @@ + + +Adding new DECL node types - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+ +
9.5.2.2 Adding new DECL node types
+ +

Adding a new DECL tree consists of the following steps + +

+
Add a new tree code for the DECL node
For language specific DECL nodes, there is a .def file +in each frontend directory where the tree code should be added. +For DECL nodes that are part of the middle-end, the code should +be added to tree.def. + +
Create a new structure type for the DECL node
These structures should inherit from one of the existing structures in +the language hierarchy by using that structure as the first member. + +
          struct tree_foo_decl
+          {
+             struct tree_decl_with_vis common;
+          }
+     
+

Would create a structure name tree_foo_decl that inherits from +struct tree_decl_with_vis. + +

For language specific DECL nodes, this new structure type +should go in the appropriate .h file. +For DECL nodes that are part of the middle-end, the structure +type should go in tree.h. + +

Add a member to the tree structure enumerator for the node
For garbage collection and dynamic checking purposes, each DECL +node structure type is required to have a unique enumerator value +specified with it. +For language specific DECL nodes, this new enumerator value +should go in the appropriate .def file. +For DECL nodes that are part of the middle-end, the enumerator +values are specified in treestruct.def. + +
Update union tree_node
In order to make your new structure type usable, it must be added to +union tree_node. +For language specific DECL nodes, a new entry should be added +to the appropriate .h file of the form +
            struct tree_foo_decl GTY ((tag ("TS_VAR_DECL"))) foo_decl;
+     
+

For DECL nodes that are part of the middle-end, the additional +member goes directly into union tree_node in tree.h. + +

Update dynamic checking info
In order to be able to check whether accessing a named portion of +union tree_node is legal, and whether a certain DECL node +contains one of the enumerated DECL node structures in the +hierarchy, a simple lookup table is used. +This lookup table needs to be kept up to date with the tree structure +hierarchy, or else checking and containment macros will fail +inappropriately. + +

For language specific DECL nodes, their is an init_ts +function in an appropriate .c file, which initializes the lookup +table. +Code setting up the table for new DECL nodes should be added +there. +For each DECL tree code and enumerator value representing a +member of the inheritance hierarchy, the table should contain 1 if +that tree code inherits (directly or indirectly) from that member. +Thus, a FOO_DECL node derived from struct decl_with_rtl, +and enumerator value TS_FOO_DECL, would be set up as follows +

          tree_contains_struct[FOO_DECL][TS_FOO_DECL] = 1;
+          tree_contains_struct[FOO_DECL][TS_DECL_WRTL] = 1;
+          tree_contains_struct[FOO_DECL][TS_DECL_COMMON] = 1;
+          tree_contains_struct[FOO_DECL][TS_DECL_MINIMAL] = 1;
+     
+

For DECL nodes that are part of the middle-end, the setup code +goes into tree.c. + +

Add macros to access any new fields and flags
+Each added field or flag should have a macro that is used to access +it, that performs appropriate checking to ensure only the right type of +DECL nodes access the field. + +

These macros generally take the following form +

          #define FOO_DECL_FIELDNAME(NODE) FOO_DECL_CHECK(NODE)->foo_decl.fieldname
+     
+

However, if the structure is simply a base class for further +structures, something like the following should be used +

          #define BASE_STRUCT_CHECK(T) CONTAINS_STRUCT_CHECK(T, TS_BASE_STRUCT)
+          #define BASE_STRUCT_FIELDNAME(NODE) \
+             (BASE_STRUCT_CHECK(NODE)->base_struct.fieldname
+     
+
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Addressing-Modes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Addressing-Modes.html new file mode 100644 index 0000000..bd67f45 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Addressing-Modes.html @@ -0,0 +1,394 @@ + + +Addressing Modes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Library Calls, +Up: Target Macros +



+
+ +

15.14 Addressing Modes

+ +

+ +This is about addressing modes. + +

+— Macro: HAVE_PRE_INCREMENT
+— Macro: HAVE_PRE_DECREMENT
+— Macro: HAVE_POST_INCREMENT
+— Macro: HAVE_POST_DECREMENT
+

A C expression that is nonzero if the machine supports pre-increment, +pre-decrement, post-increment, or post-decrement addressing respectively. +

+ +
+— Macro: HAVE_PRE_MODIFY_DISP
+— Macro: HAVE_POST_MODIFY_DISP
+

A C expression that is nonzero if the machine supports pre- or +post-address side-effect generation involving constants other than +the size of the memory operand. +

+ +
+— Macro: HAVE_PRE_MODIFY_REG
+— Macro: HAVE_POST_MODIFY_REG
+

A C expression that is nonzero if the machine supports pre- or +post-address side-effect generation involving a register displacement. +

+ +
+— Macro: CONSTANT_ADDRESS_P (x)
+

A C expression that is 1 if the RTX x is a constant which +is a valid address. On most machines, this can be defined as +CONSTANT_P (x), but a few machines are more restrictive +in which constant addresses are supported. +

+ +
+— Macro: CONSTANT_P (x)
+

CONSTANT_P, which is defined by target-independent code, +accepts integer-values expressions whose values are not explicitly +known, such as symbol_ref, label_ref, and high +expressions and const arithmetic expressions, in addition to +const_int and const_double expressions. +

+ +
+— Macro: MAX_REGS_PER_ADDRESS
+

A number, the maximum number of registers that can appear in a valid +memory address. Note that it is up to you to specify a value equal to +the maximum number that GO_IF_LEGITIMATE_ADDRESS would ever +accept. +

+ +
+— Macro: GO_IF_LEGITIMATE_ADDRESS (mode, x, label)
+

A C compound statement with a conditional goto label; +executed if x (an RTX) is a legitimate memory address on the +target machine for a memory operand of mode mode. + +

It usually pays to define several simpler macros to serve as +subroutines for this one. Otherwise it may be too complicated to +understand. + +

This macro must exist in two variants: a strict variant and a +non-strict one. The strict variant is used in the reload pass. It +must be defined so that any pseudo-register that has not been +allocated a hard register is considered a memory reference. In +contexts where some kind of register is required, a pseudo-register +with no hard register must be rejected. + +

The non-strict variant is used in other passes. It must be defined to +accept all pseudo-registers in every context where some kind of +register is required. + +

Compiler source files that want to use the strict variant of this +macro define the macro REG_OK_STRICT. You should use an +#ifdef REG_OK_STRICT conditional to define the strict variant +in that case and the non-strict variant otherwise. + +

Subroutines to check for acceptable registers for various purposes (one +for base registers, one for index registers, and so on) are typically +among the subroutines used to define GO_IF_LEGITIMATE_ADDRESS. +Then only these subroutine macros need have two variants; the higher +levels of macros may be the same whether strict or not. + +

Normally, constant addresses which are the sum of a symbol_ref +and an integer are stored inside a const RTX to mark them as +constant. Therefore, there is no need to recognize such sums +specifically as legitimate addresses. Normally you would simply +recognize any const as legitimate. + +

Usually PRINT_OPERAND_ADDRESS is not prepared to handle constant +sums that are not marked with const. It assumes that a naked +plus indicates indexing. If so, then you must reject such +naked constant sums as illegitimate addresses, so that none of them will +be given to PRINT_OPERAND_ADDRESS. + +

On some machines, whether a symbolic address is legitimate depends on +the section that the address refers to. On these machines, define the +target hook TARGET_ENCODE_SECTION_INFO to store the information +into the symbol_ref, and then check for it here. When you see a +const, you will have to look inside it to find the +symbol_ref in order to determine the section. See Assembler Format. +

+ +
+— Macro: FIND_BASE_TERM (x)
+

A C expression to determine the base term of address x. +This macro is used in only one place: `find_base_term' in alias.c. + +

It is always safe for this macro to not be defined. It exists so +that alias analysis can understand machine-dependent addresses. + +

The typical use of this macro is to handle addresses containing +a label_ref or symbol_ref within an UNSPEC. +

+ +
+— Macro: LEGITIMIZE_ADDRESS (x, oldx, mode, win)
+

A C compound statement that attempts to replace x with a valid +memory address for an operand of mode mode. win will be a +C statement label elsewhere in the code; the macro definition may use + +

          GO_IF_LEGITIMATE_ADDRESS (mode, x, win);
+     
+

to avoid further processing if the address has become legitimate. + +

x will always be the result of a call to break_out_memory_refs, +and oldx will be the operand that was given to that function to produce +x. + +

The code generated by this macro should not alter the substructure of +x. If it transforms x into a more legitimate form, it +should assign x (which will always be a C variable) a new value. + +

It is not necessary for this macro to come up with a legitimate +address. The compiler has standard ways of doing so in all cases. In +fact, it is safe to omit this macro. But often a +machine-dependent strategy can generate better code. +

+ +
+— Macro: LEGITIMIZE_RELOAD_ADDRESS (x, mode, opnum, type, ind_levels, win)
+

A C compound statement that attempts to replace x, which is an address +that needs reloading, with a valid memory address for an operand of mode +mode. win will be a C statement label elsewhere in the code. +It is not necessary to define this macro, but it might be useful for +performance reasons. + +

For example, on the i386, it is sometimes possible to use a single +reload register instead of two by reloading a sum of two pseudo +registers into a register. On the other hand, for number of RISC +processors offsets are limited so that often an intermediate address +needs to be generated in order to address a stack slot. By defining +LEGITIMIZE_RELOAD_ADDRESS appropriately, the intermediate addresses +generated for adjacent some stack slots can be made identical, and thus +be shared. + +

Note: This macro should be used with caution. It is necessary +to know something of how reload works in order to effectively use this, +and it is quite easy to produce macros that build in too much knowledge +of reload internals. + +

Note: This macro must be able to reload an address created by a +previous invocation of this macro. If it fails to handle such addresses +then the compiler may generate incorrect code or abort. + +

The macro definition should use push_reload to indicate parts that +need reloading; opnum, type and ind_levels are usually +suitable to be passed unaltered to push_reload. + +

The code generated by this macro must not alter the substructure of +x. If it transforms x into a more legitimate form, it +should assign x (which will always be a C variable) a new value. +This also applies to parts that you change indirectly by calling +push_reload. + +

The macro definition may use strict_memory_address_p to test if +the address has become legitimate. + +

If you want to change only a part of x, one standard way of doing +this is to use copy_rtx. Note, however, that it unshares only a +single level of rtl. Thus, if the part to be changed is not at the +top level, you'll need to replace first the top level. +It is not necessary for this macro to come up with a legitimate +address; but often a machine-dependent strategy can generate better code. +

+ +
+— Macro: GO_IF_MODE_DEPENDENT_ADDRESS (addr, label)
+

A C statement or compound statement with a conditional goto +label; executed if memory address x (an RTX) can have +different meanings depending on the machine mode of the memory +reference it is used for or if the address is valid for some modes +but not others. + +

Autoincrement and autodecrement addresses typically have mode-dependent +effects because the amount of the increment or decrement is the size +of the operand being addressed. Some machines have other mode-dependent +addresses. Many RISC machines have no mode-dependent addresses. + +

You may assume that addr is a valid address for the machine. +

+ +
+— Macro: LEGITIMATE_CONSTANT_P (x)
+

A C expression that is nonzero if x is a legitimate constant for +an immediate operand on the target machine. You can assume that +x satisfies CONSTANT_P, so you need not check this. In fact, +1 is a suitable definition for this macro on machines where +anything CONSTANT_P is valid. +

+ +
+— Target Hook: rtx TARGET_DELEGITIMIZE_ADDRESS (rtx x)
+

This hook is used to undo the possibly obfuscating effects of the +LEGITIMIZE_ADDRESS and LEGITIMIZE_RELOAD_ADDRESS target +macros. Some backend implementations of these macros wrap symbol +references inside an UNSPEC rtx to represent PIC or similar +addressing modes. This target hook allows GCC's optimizers to understand +the semantics of these opaque UNSPECs by converting them back +into their original form. +

+ +
+— Target Hook: bool TARGET_CANNOT_FORCE_CONST_MEM (rtx x)
+

This hook should return true if x is of a form that cannot (or +should not) be spilled to the constant pool. The default version of +this hook returns false. + +

The primary reason to define this hook is to prevent reload from +deciding that a non-legitimate constant would be better reloaded +from the constant pool instead of spilling and reloading a register +holding the constant. This restriction is often true of addresses +of TLS symbols for various targets. +

+ +
+— Target Hook: bool TARGET_USE_BLOCKS_FOR_CONSTANT_P (enum machine_mode mode, rtx x)
+

This hook should return true if pool entries for constant x can +be placed in an object_block structure. mode is the mode +of x. + +

The default version returns false for all constants. +

+ +
+— Target Hook: tree TARGET_BUILTIN_RECIPROCAL (enum tree_code fn, bool tm_fn, bool sqrt)
+

This hook should return the DECL of a function that implements reciprocal of +the builtin function with builtin function code fn, or +NULL_TREE if such a function is not available. tm_fn is true +when fn is a code of a machine-dependent builtin function. When +sqrt is true, additional optimizations that apply only to the reciprocal +of a square root function are performed, and only reciprocals of sqrt +function are valid. +

+ +
+— Target Hook: tree TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD (void)
+

This hook should return the DECL of a function f that given an +address addr as an argument returns a mask m that can be +used to extract from two vectors the relevant data that resides in +addr in case addr is not properly aligned. + +

The autovectorizer, when vectorizing a load operation from an address +addr that may be unaligned, will generate two vector loads from +the two aligned addresses around addr. It then generates a +REALIGN_LOAD operation to extract the relevant data from the +two loaded vectors. The first two arguments to REALIGN_LOAD, +v1 and v2, are the two vectors, each of size VS, and +the third argument, OFF, defines how the data will be extracted +from these two vectors: if OFF is 0, then the returned vector is +v2; otherwise, the returned vector is composed from the last +VS-OFF elements of v1 concatenated to the first +OFF elements of v2. + +

If this hook is defined, the autovectorizer will generate a call +to f (using the DECL tree that this hook returns) and will +use the return value of f as the argument OFF to +REALIGN_LOAD. Therefore, the mask m returned by f +should comply with the semantics expected by REALIGN_LOAD +described above. +If this hook is not defined, then addr will be used as +the argument OFF to REALIGN_LOAD, in which case the low +log2(VS)-1 bits of addr will be considered. +

+ +
+— Target Hook: tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN (tree x)
+

This hook should return the DECL of a function f that implements +widening multiplication of the even elements of two input vectors of type x. + +

If this hook is defined, the autovectorizer will use it along with the +TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD target hook when vectorizing +widening multiplication in cases that the order of the results does not have to be +preserved (e.g. used only by a reduction computation). Otherwise, the +widen_mult_hi/lo idioms will be used. +

+ +
+— Target Hook: tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD (tree x)
+

This hook should return the DECL of a function f that implements +widening multiplication of the odd elements of two input vectors of type x. + +

If this hook is defined, the autovectorizer will use it along with the +TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN target hook when vectorizing +widening multiplication in cases that the order of the results does not have to be +preserved (e.g. used only by a reduction computation). Otherwise, the +widen_mult_hi/lo idioms will be used. +

+ +
+— Target Hook: tree TARGET_VECTORIZE_BUILTIN_CONVERSION (enum tree_code code, tree type)
+

This hook should return the DECL of a function that implements conversion of the +input vector of type type. +If type is an integral type, the result of the conversion is a vector of +floating-point type of the same size. +If type is a floating-point type, the result of the conversion is a vector +of integral type of the same size. +code specifies how the conversion is to be applied +(truncation, rounding, etc.). + +

If this hook is defined, the autovectorizer will use the +TARGET_VECTORIZE_BUILTIN_CONVERSION target hook when vectorizing +conversion. Otherwise, it will return NULL_TREE. +

+ +
+— Target Hook: tree TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION (enum built_in_function code, tree vec_type_out, tree vec_type_in)
+

This hook should return the decl of a function that implements the vectorized +variant of the builtin function with builtin function code code or +NULL_TREE if such a function is not available. The return type of +the vectorized function shall be of vector type vec_type_out and the +argument types should be vec_type_in. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Aggregate-Return.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Aggregate-Return.html new file mode 100644 index 0000000..14ec6f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Aggregate-Return.html @@ -0,0 +1,138 @@ + + +Aggregate Return - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Scalar Return, +Up: Stack and Calling +



+
+ +

15.10.9 How Large Values Are Returned

+ +

+When a function value's mode is BLKmode (and in some other +cases), the value is not returned according to +TARGET_FUNCTION_VALUE (see Scalar Return). Instead, the +caller passes the address of a block of memory in which the value +should be stored. This address is called the structure value +address. + +

This section describes how to control returning structure values in +memory. + +

+— Target Hook: bool TARGET_RETURN_IN_MEMORY (tree type, tree fntype)
+

This target hook should return a nonzero value to say to return the +function value in memory, just as large structures are always returned. +Here type will be the data type of the value, and fntype +will be the type of the function doing the returning, or NULL for +libcalls. + +

Note that values of mode BLKmode must be explicitly handled +by this function. Also, the option -fpcc-struct-return +takes effect regardless of this macro. On most systems, it is +possible to leave the hook undefined; this causes a default +definition to be used, whose value is the constant 1 for BLKmode +values, and 0 otherwise. + +

Do not use this hook to indicate that structures and unions should always +be returned in memory. You should instead use DEFAULT_PCC_STRUCT_RETURN +to indicate this. +

+ +
+— Macro: DEFAULT_PCC_STRUCT_RETURN
+

Define this macro to be 1 if all structure and union return values must be +in memory. Since this results in slower code, this should be defined +only if needed for compatibility with other compilers or with an ABI. +If you define this macro to be 0, then the conventions used for structure +and union return values are decided by the TARGET_RETURN_IN_MEMORY +target hook. + +

If not defined, this defaults to the value 1. +

+ +
+— Target Hook: rtx TARGET_STRUCT_VALUE_RTX (tree fndecl, int incoming)
+

This target hook should return the location of the structure value +address (normally a mem or reg), or 0 if the address is +passed as an “invisible” first argument. Note that fndecl may +be NULL, for libcalls. You do not need to define this target +hook if the address is always passed as an “invisible” first +argument. + +

On some architectures the place where the structure value address +is found by the called function is not the same place that the +caller put it. This can be due to register windows, or it could +be because the function prologue moves it to a different place. +incoming is 1 or 2 when the location is needed in +the context of the called function, and 0 in the context of +the caller. + +

If incoming is nonzero and the address is to be found on the +stack, return a mem which refers to the frame pointer. If +incoming is 2, the result is being used to fetch the +structure value address at the beginning of a function. If you need +to emit adjusting code, you should do it at this point. +

+ +
+— Macro: PCC_STATIC_STRUCT_RETURN
+

Define this macro if the usual system convention on the target machine +for returning structures and unions is for the called function to return +the address of a static variable containing the value. + +

Do not define this if the usual system convention is for the caller to +pass an address to the subroutine. + +

This macro has effect in -fpcc-struct-return mode, but it does +nothing when you use -freg-struct-return mode. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Alias-analysis.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Alias-analysis.html new file mode 100644 index 0000000..1b5c5bb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Alias-analysis.html @@ -0,0 +1,276 @@ + + +Alias analysis - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: SSA, +Up: Tree SSA +



+
+ +

10.6 Alias analysis

+ +

+Alias analysis proceeds in 4 main phases: + +

    +
  1. Structural alias analysis. + +

    This phase walks the types for structure variables, and determines which +of the fields can overlap using offset and size of each field. For each +field, a “subvariable” called a “Structure field tag” (SFT) is +created, which represents that field as a separate variable. All +accesses that could possibly overlap with a given field will have +virtual operands for the SFT of that field. + +

              struct foo
    +          {
    +            int a;
    +            int b;
    +          }
    +          struct foo temp;
    +          int bar (void)
    +          {
    +            int tmp1, tmp2, tmp3;
    +            SFT.0_2 = VDEF <SFT.0_1>
    +            temp.a = 5;
    +            SFT.1_4 = VDEF <SFT.1_3>
    +            temp.b = 6;
    +          
    +            VUSE <SFT.1_4>
    +            tmp1_5 = temp.b;
    +            VUSE <SFT.0_2>
    +            tmp2_6 = temp.a;
    +          
    +            tmp3_7 = tmp1_5 + tmp2_6;
    +            return tmp3_7;
    +          }
    +     
    +

    If you copy the symbol tag for a variable for some reason, you probably +also want to copy the subvariables for that variable. + +

  2. Points-to and escape analysis. + +

    This phase walks the use-def chains in the SSA web looking for +three things: + +

    +

      +
    • Assignments of the form P_i = &VAR +
    • Assignments of the form P_i = malloc() +
    • Pointers and ADDR_EXPR that escape the current function. +
    + +

    The concept of `escaping' is the same one used in the Java world. +When a pointer or an ADDR_EXPR escapes, it means that it has been +exposed outside of the current function. So, assignment to +global variables, function arguments and returning a pointer are +all escape sites. + +

    This is where we are currently limited. Since not everything is +renamed into SSA, we lose track of escape properties when a +pointer is stashed inside a field in a structure, for instance. +In those cases, we are assuming that the pointer does escape. + +

    We use escape analysis to determine whether a variable is +call-clobbered. Simply put, if an ADDR_EXPR escapes, then the +variable is call-clobbered. If a pointer P_i escapes, then all +the variables pointed-to by P_i (and its memory tag) also escape. + +

  3. Compute flow-sensitive aliases + +

    We have two classes of memory tags. Memory tags associated with +the pointed-to data type of the pointers in the program. These +tags are called “symbol memory tag” (SMT). The other class are +those associated with SSA_NAMEs, called “name memory tag” (NMT). +The basic idea is that when adding operands for an INDIRECT_REF +*P_i, we will first check whether P_i has a name tag, if it does +we use it, because that will have more precise aliasing +information. Otherwise, we use the standard symbol tag. + +

    In this phase, we go through all the pointers we found in +points-to analysis and create alias sets for the name memory tags +associated with each pointer P_i. If P_i escapes, we mark +call-clobbered the variables it points to and its tag. + +

  4. Compute flow-insensitive aliases + +

    This pass will compare the alias set of every symbol memory tag and +every addressable variable found in the program. Given a symbol +memory tag SMT and an addressable variable V. If the alias sets +of SMT and V conflict (as computed by may_alias_p), then V is +marked as an alias tag and added to the alias set of SMT. + +

    Every language that wishes to perform language-specific alias analysis +should define a function that computes, given a tree +node, an alias set for the node. Nodes in different alias sets are not +allowed to alias. For an example, see the C front-end function +c_get_alias_set. +

+ +

For instance, consider the following function: + +

     foo (int i)
+     {
+       int *p, *q, a, b;
+     
+       if (i > 10)
+         p = &a;
+       else
+         q = &b;
+     
+       *p = 3;
+       *q = 5;
+       a = b + 2;
+       return *p;
+     }
+
+

After aliasing analysis has finished, the symbol memory tag for +pointer p will have two aliases, namely variables a and +b. +Every time pointer p is dereferenced, we want to mark the +operation as a potential reference to a and b. + +

     foo (int i)
+     {
+       int *p, a, b;
+     
+       if (i_2 > 10)
+         p_4 = &a;
+       else
+         p_6 = &b;
+       # p_1 = PHI <p_4(1), p_6(2)>;
+     
+       # a_7 = VDEF <a_3>;
+       # b_8 = VDEF <b_5>;
+       *p_1 = 3;
+     
+       # a_9 = VDEF <a_7>
+       # VUSE <b_8>
+       a_9 = b_8 + 2;
+     
+       # VUSE <a_9>;
+       # VUSE <b_8>;
+       return *p_1;
+     }
+
+

In certain cases, the list of may aliases for a pointer may grow +too large. This may cause an explosion in the number of virtual +operands inserted in the code. Resulting in increased memory +consumption and compilation time. + +

When the number of virtual operands needed to represent aliased +loads and stores grows too large (configurable with --param +max-aliased-vops), alias sets are grouped to avoid severe +compile-time slow downs and memory consumption. The alias +grouping heuristic proceeds as follows: + +

    +
  1. Sort the list of pointers in decreasing number of contributed +virtual operands. + +
  2. Take the first pointer from the list and reverse the role +of the memory tag and its aliases. Usually, whenever an +aliased variable Vi is found to alias with a memory tag +T, we add Vi to the may-aliases set for T. Meaning that +after alias analysis, we will have: + +
              may-aliases(T) = { V1, V2, V3, ..., Vn }
    +     
    +

    This means that every statement that references T, will get +n virtual operands for each of the Vi tags. But, when +alias grouping is enabled, we make T an alias tag and add it +to the alias set of all the Vi variables: + +

              may-aliases(V1) = { T }
    +          may-aliases(V2) = { T }
    +          ...
    +          may-aliases(Vn) = { T }
    +     
    +

    This has two effects: (a) statements referencing T will only get +a single virtual operand, and, (b) all the variables Vi will now +appear to alias each other. So, we lose alias precision to +improve compile time. But, in theory, a program with such a high +level of aliasing should not be very optimizable in the first +place. + +

  3. Since variables may be in the alias set of more than one +memory tag, the grouping done in step (2) needs to be extended +to all the memory tags that have a non-empty intersection with +the may-aliases set of tag T. For instance, if we originally +had these may-aliases sets: + +
              may-aliases(T) = { V1, V2, V3 }
    +          may-aliases(R) = { V2, V4 }
    +     
    +

    In step (2) we would have reverted the aliases for T as: + +

              may-aliases(V1) = { T }
    +          may-aliases(V2) = { T }
    +          may-aliases(V3) = { T }
    +     
    +

    But note that now V2 is no longer aliased with R. We could +add R to may-aliases(V2), but we are in the process of +grouping aliases to reduce virtual operands so what we do is +add V4 to the grouping to obtain: + +

              may-aliases(V1) = { T }
    +          may-aliases(V2) = { T }
    +          may-aliases(V3) = { T }
    +          may-aliases(V4) = { T }
    +     
    +
  4. If the total number of virtual operands due to aliasing is +still above the threshold set by max-alias-vops, go back to (2). +
+ + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Alignment-Output.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Alignment-Output.html new file mode 100644 index 0000000..624e0ff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Alignment-Output.html @@ -0,0 +1,169 @@ + + +Alignment Output - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Exception Region Output, +Up: Assembler Format +



+
+ +

15.21.10 Assembler Commands for Alignment

+ + +

This describes commands for alignment. + +

+— Macro: JUMP_ALIGN (label)
+

The alignment (log base 2) to put in front of label, which is +a common destination of jumps and has no fallthru incoming edge. + +

This macro need not be defined if you don't want any special alignment +to be done at such a time. Most machine descriptions do not currently +define the macro. + +

Unless it's necessary to inspect the label parameter, it is better +to set the variable align_jumps in the target's +OVERRIDE_OPTIONS. Otherwise, you should try to honor the user's +selection in align_jumps in a JUMP_ALIGN implementation. +

+ +
+— Macro: LABEL_ALIGN_AFTER_BARRIER (label)
+

The alignment (log base 2) to put in front of label, which follows +a BARRIER. + +

This macro need not be defined if you don't want any special alignment +to be done at such a time. Most machine descriptions do not currently +define the macro. +

+ +
+— Macro: LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
+

The maximum number of bytes to skip when applying +LABEL_ALIGN_AFTER_BARRIER. This works only if +ASM_OUTPUT_MAX_SKIP_ALIGN is defined. +

+ +
+— Macro: LOOP_ALIGN (label)
+

The alignment (log base 2) to put in front of label, which follows +a NOTE_INSN_LOOP_BEG note. + +

This macro need not be defined if you don't want any special alignment +to be done at such a time. Most machine descriptions do not currently +define the macro. + +

Unless it's necessary to inspect the label parameter, it is better +to set the variable align_loops in the target's +OVERRIDE_OPTIONS. Otherwise, you should try to honor the user's +selection in align_loops in a LOOP_ALIGN implementation. +

+ +
+— Macro: LOOP_ALIGN_MAX_SKIP
+

The maximum number of bytes to skip when applying LOOP_ALIGN. +This works only if ASM_OUTPUT_MAX_SKIP_ALIGN is defined. +

+ +
+— Macro: LABEL_ALIGN (label)
+

The alignment (log base 2) to put in front of label. +If LABEL_ALIGN_AFTER_BARRIER / LOOP_ALIGN specify a different alignment, +the maximum of the specified values is used. + +

Unless it's necessary to inspect the label parameter, it is better +to set the variable align_labels in the target's +OVERRIDE_OPTIONS. Otherwise, you should try to honor the user's +selection in align_labels in a LABEL_ALIGN implementation. +

+ +
+— Macro: LABEL_ALIGN_MAX_SKIP
+

The maximum number of bytes to skip when applying LABEL_ALIGN. +This works only if ASM_OUTPUT_MAX_SKIP_ALIGN is defined. +

+ +
+— Macro: ASM_OUTPUT_SKIP (stream, nbytes)
+

A C statement to output to the stdio stream stream an assembler +instruction to advance the location counter by nbytes bytes. +Those bytes should be zero when loaded. nbytes will be a C +expression of type unsigned HOST_WIDE_INT. +

+ +
+— Macro: ASM_NO_SKIP_IN_TEXT
+

Define this macro if ASM_OUTPUT_SKIP should not be used in the +text section because it fails to put zeros in the bytes that are skipped. +This is true on many Unix systems, where the pseudo–op to skip bytes +produces no-op instructions rather than zeros when used in the text +section. +

+ +
+— Macro: ASM_OUTPUT_ALIGN (stream, power)
+

A C statement to output to the stdio stream stream an assembler +command to advance the location counter to a multiple of 2 to the +power bytes. power will be a C expression of type int. +

+ +
+— Macro: ASM_OUTPUT_ALIGN_WITH_NOP (stream, power)
+

Like ASM_OUTPUT_ALIGN, except that the “nop” instruction is used +for padding, if necessary. +

+ +
+— Macro: ASM_OUTPUT_MAX_SKIP_ALIGN (stream, power, max_skip)
+

A C statement to output to the stdio stream stream an assembler +command to advance the location counter to a multiple of 2 to the +power bytes, but only if max_skip or fewer bytes are needed to +satisfy the alignment request. power and max_skip will be +a C expression of type int. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/All-Debuggers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/All-Debuggers.html new file mode 100644 index 0000000..36904f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/All-Debuggers.html @@ -0,0 +1,117 @@ + + +All Debuggers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Debugging Info +



+
+ +

15.22.1 Macros Affecting All Debugging Formats

+ + +

These macros affect all debugging formats. + +

+— Macro: DBX_REGISTER_NUMBER (regno)
+

A C expression that returns the DBX register number for the compiler +register number regno. In the default macro provided, the value +of this expression will be regno itself. But sometimes there are +some registers that the compiler knows about and DBX does not, or vice +versa. In such cases, some register may need to have one number in the +compiler and another for DBX. + +

If two registers have consecutive numbers inside GCC, and they can be +used as a pair to hold a multiword value, then they must have +consecutive numbers after renumbering with DBX_REGISTER_NUMBER. +Otherwise, debuggers will be unable to access such a pair, because they +expect register pairs to be consecutive in their own numbering scheme. + +

If you find yourself defining DBX_REGISTER_NUMBER in way that +does not preserve register pairs, then what you must do instead is +redefine the actual register numbering scheme. +

+ +
+— Macro: DEBUGGER_AUTO_OFFSET (x)
+

A C expression that returns the integer offset value for an automatic +variable having address x (an RTL expression). The default +computation assumes that x is based on the frame-pointer and +gives the offset from the frame-pointer. This is required for targets +that produce debugging output for DBX or COFF-style debugging output +for SDB and allow the frame-pointer to be eliminated when the +-g options is used. +

+ +
+— Macro: DEBUGGER_ARG_OFFSET (offset, x)
+

A C expression that returns the integer offset value for an argument +having address x (an RTL expression). The nominal offset is +offset. +

+ +
+— Macro: PREFERRED_DEBUGGING_TYPE
+

A C expression that returns the type of debugging output GCC should +produce when the user specifies just -g. Define +this if you have arranged for GCC to support more than one format of +debugging output. Currently, the allowable values are DBX_DEBUG, +SDB_DEBUG, DWARF_DEBUG, DWARF2_DEBUG, +XCOFF_DEBUG, VMS_DEBUG, and VMS_AND_DWARF2_DEBUG. + +

When the user specifies -ggdb, GCC normally also uses the +value of this macro to select the debugging output format, but with two +exceptions. If DWARF2_DEBUGGING_INFO is defined, GCC uses the +value DWARF2_DEBUG. Otherwise, if DBX_DEBUGGING_INFO is +defined, GCC uses DBX_DEBUG. + +

The value of this macro only affects the default debugging output; the +user can always get a specific type of output by using -gstabs, +-gcoff, -gdwarf-2, -gxcoff, or -gvms. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Allocation-Order.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Allocation-Order.html new file mode 100644 index 0000000..b0ac12c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Allocation-Order.html @@ -0,0 +1,93 @@ + + +Allocation Order - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Register Basics, +Up: Registers +



+
+ +

15.7.2 Order of Allocation of Registers

+ +

+ +Registers are allocated in order. + +

+— Macro: REG_ALLOC_ORDER
+

If defined, an initializer for a vector of integers, containing the +numbers of hard registers in the order in which GCC should prefer +to use them (from most preferred to least). + +

If this macro is not defined, registers are used lowest numbered first +(all else being equal). + +

One use of this macro is on machines where the highest numbered +registers must always be saved and the save-multiple-registers +instruction supports only sequences of consecutive registers. On such +machines, define REG_ALLOC_ORDER to be an initializer that lists +the highest numbered allocable register first. +

+ +
+— Macro: ORDER_REGS_FOR_LOCAL_ALLOC
+

A C statement (sans semicolon) to choose the order in which to allocate +hard registers for pseudo-registers local to a basic block. + +

Store the desired register order in the array reg_alloc_order. +Element 0 should be the register to allocate first; element 1, the next +register; and so on. + +

The macro body should not assume anything about the contents of +reg_alloc_order before execution of the macro. + +

On most machines, it is not necessary to define this macro. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Anchored-Addresses.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Anchored-Addresses.html new file mode 100644 index 0000000..26102e6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Anchored-Addresses.html @@ -0,0 +1,124 @@ + + +Anchored Addresses - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Addressing Modes, +Up: Target Macros +



+
+ +

15.15 Anchored Addresses

+ +

+GCC usually addresses every static object as a separate entity. +For example, if we have: + +

     static int a, b, c;
+     int foo (void) { return a + b + c; }
+
+

the code for foo will usually calculate three separate symbolic +addresses: those of a, b and c. On some targets, +it would be better to calculate just one symbolic address and access +the three variables relative to it. The equivalent pseudocode would +be something like: + +

     int foo (void)
+     {
+       register int *xr = &x;
+       return xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
+     }
+
+

(which isn't valid C). We refer to shared addresses like x as +“section anchors”. Their use is controlled by -fsection-anchors. + +

The hooks below describe the target properties that GCC needs to know +in order to make effective use of section anchors. It won't use +section anchors at all unless either TARGET_MIN_ANCHOR_OFFSET +or TARGET_MAX_ANCHOR_OFFSET is set to a nonzero value. + +

+— Variable: Target Hook HOST_WIDE_INT TARGET_MIN_ANCHOR_OFFSET
+

The minimum offset that should be applied to a section anchor. +On most targets, it should be the smallest offset that can be +applied to a base register while still giving a legitimate address +for every mode. The default value is 0. +

+ +
+— Variable: Target Hook HOST_WIDE_INT TARGET_MAX_ANCHOR_OFFSET
+

Like TARGET_MIN_ANCHOR_OFFSET, but the maximum (inclusive) +offset that should be applied to section anchors. The default +value is 0. +

+ +
+— Target Hook: void TARGET_ASM_OUTPUT_ANCHOR (rtx x)
+

Write the assembly code to define section anchor x, which is a +SYMBOL_REF for which SYMBOL_REF_ANCHOR_P (x) is true. +The hook is called with the assembly output position set to the beginning +of SYMBOL_REF_BLOCK (x). + +

If ASM_OUTPUT_DEF is available, the hook's default definition uses +it to define the symbol as . + SYMBOL_REF_BLOCK_OFFSET (x). +If ASM_OUTPUT_DEF is not available, the hook's default definition +is NULL, which disables the use of section anchors altogether. +

+ +
+— Target Hook: bool TARGET_USE_ANCHORS_FOR_SYMBOL_P (rtx x)
+

Return true if GCC should attempt to use anchors to access SYMBOL_REF +x. You can assume SYMBOL_REF_HAS_BLOCK_INFO_P (x) and +!SYMBOL_REF_ANCHOR_P (x). + +

The default version is correct for most targets, but you might need to +intercept this hook to handle things like target-specific attributes +or target-specific sections. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Annotations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Annotations.html new file mode 100644 index 0000000..b2feab3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Annotations.html @@ -0,0 +1,70 @@ + + +Annotations - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: GIMPLE, +Up: Tree SSA +



+
+ +

10.3 Annotations

+ +

+The optimizers need to associate attributes with statements and +variables during the optimization process. For instance, we need to +know what basic block a statement belongs to or whether a variable +has aliases. All these attributes are stored in data structures +called annotations which are then linked to the field ann in +struct tree_common. + +

Presently, we define annotations for statements (stmt_ann_t), +variables (var_ann_t) and SSA names (ssa_name_ann_t). +Annotations are defined and documented in tree-flow.h. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Arithmetic.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Arithmetic.html new file mode 100644 index 0000000..a7eee7a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Arithmetic.html @@ -0,0 +1,261 @@ + + +Arithmetic - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Regs and Memory, +Up: RTL +



+
+ +

12.9 RTL Expressions for Arithmetic

+ +

+Unless otherwise specified, all the operands of arithmetic expressions +must be valid for mode m. An operand is valid for mode m +if it has mode m, or if it is a const_int or +const_double and m is a mode of class MODE_INT. + +

For commutative binary operations, constants should be placed in the +second operand. + + + + + + + + + +

(plus:m x y)
(ss_plus:m x y)
(us_plus:m x y)
+These three expressions all represent the sum of the values +represented by x and y carried out in machine mode +m. They differ in their behavior on overflow of integer modes. +plus wraps round modulo the width of m; ss_plus +saturates at the maximum signed value representable in m; +us_plus saturates at the maximum unsigned value. + + +


(lo_sum:m x y)
+This expression represents the sum of x and the low-order bits +of y. It is used with high (see Constants) to +represent the typical two-instruction sequence used in RISC machines +to reference a global memory location. + +

The number of low order bits is machine-dependent but is +normally the number of bits in a Pmode item minus the number of +bits set by high. + +

m should be Pmode. + +


(minus:m x y)
(ss_minus:m x y)
(us_minus:m x y)
+These three expressions represent the result of subtracting y +from x, carried out in mode M. Behavior on overflow is +the same as for the three variants of plus (see above). + +


(compare:m x y)
Represents the result of subtracting y from x for purposes +of comparison. The result is computed without overflow, as if with +infinite precision. + +

Of course, machines can't really subtract with infinite precision. +However, they can pretend to do so when only the sign of the result will +be used, which is the case when the result is stored in the condition +code. And that is the only way this kind of expression may +validly be used: as a value to be stored in the condition codes, either +(cc0) or a register. See Comparisons. + +

The mode m is not related to the modes of x and y, but +instead is the mode of the condition code value. If (cc0) is +used, it is VOIDmode. Otherwise it is some mode in class +MODE_CC, often CCmode. See Condition Code. If m +is VOIDmode or CCmode, the operation returns sufficient +information (in an unspecified format) so that any comparison operator +can be applied to the result of the COMPARE operation. For other +modes in class MODE_CC, the operation only returns a subset of +this information. + +

Normally, x and y must have the same mode. Otherwise, +compare is valid only if the mode of x is in class +MODE_INT and y is a const_int or +const_double with mode VOIDmode. The mode of x +determines what mode the comparison is to be done in; thus it must not +be VOIDmode. + +

If one of the operands is a constant, it should be placed in the +second operand and the comparison code adjusted as appropriate. + +

A compare specifying two VOIDmode constants is not valid +since there is no way to know in what mode the comparison is to be +performed; the comparison must either be folded during the compilation +or the first operand must be loaded into a register while its mode is +still known. + +


(neg:m x)
(ss_neg:m x)
(us_neg:m x)
These two expressions represent the negation (subtraction from zero) of +the value represented by x, carried out in mode m. They +differ in the behavior on overflow of integer modes. In the case of +neg, the negation of the operand may be a number not representable +in mode m, in which case it is truncated to m. ss_neg +and us_neg ensure that an out-of-bounds result saturates to the +maximum or minimum signed or unsigned value. + +


(mult:m x y)
(ss_mult:m x y)
(us_mult:m x y)
Represents the signed product of the values represented by x and +y carried out in machine mode m. +ss_mult and us_mult ensure that an out-of-bounds result +saturates to the maximum or minimum signed or unsigned value. + +

Some machines support a multiplication that generates a product wider +than the operands. Write the pattern for this as + +

          (mult:m (sign_extend:m x) (sign_extend:m y))
+     
+

where m is wider than the modes of x and y, which need +not be the same. + +

For unsigned widening multiplication, use the same idiom, but with +zero_extend instead of sign_extend. + +


(div:m x y)
(ss_div:m x y)
Represents the quotient in signed division of x by y, +carried out in machine mode m. If m is a floating point +mode, it represents the exact quotient; otherwise, the integerized +quotient. +ss_div ensures that an out-of-bounds result saturates to the maximum +or minimum signed value. + +

Some machines have division instructions in which the operands and +quotient widths are not all the same; you should represent +such instructions using truncate and sign_extend as in, + +

          (truncate:m1 (div:m2 x (sign_extend:m2 y)))
+     
+


(udiv:m x y)
(us_div:m x y)
Like div but represents unsigned division. +us_div ensures that an out-of-bounds result saturates to the maximum +or minimum unsigned value. + +


(mod:m x y)
(umod:m x y)
Like div and udiv but represent the remainder instead of +the quotient. + +


(smin:m x y)
(smax:m x y)
Represents the smaller (for smin) or larger (for smax) of +x and y, interpreted as signed values in mode m. +When used with floating point, if both operands are zeros, or if either +operand is NaN, then it is unspecified which of the two operands +is returned as the result. + +


(umin:m x y)
(umax:m x y)
Like smin and smax, but the values are interpreted as unsigned +integers. + +


(not:m x)
Represents the bitwise complement of the value represented by x, +carried out in mode m, which must be a fixed-point machine mode. + +


(and:m x y)
Represents the bitwise logical-and of the values represented by +x and y, carried out in machine mode m, which must be +a fixed-point machine mode. + +


(ior:m x y)
Represents the bitwise inclusive-or of the values represented by x +and y, carried out in machine mode m, which must be a +fixed-point mode. + +


(xor:m x y)
Represents the bitwise exclusive-or of the values represented by x +and y, carried out in machine mode m, which must be a +fixed-point mode. + +


(ashift:m x c)
(ss_ashift:m x c)
(us_ashift:m x c)
These three expressions represent the result of arithmetically shifting x +left by c places. They differ in their behavior on overflow of integer +modes. An ashift operation is a plain shift with no special behavior +in case of a change in the sign bit; ss_ashift and us_ashift +saturates to the minimum or maximum representable value if any of the bits +shifted out differs from the final sign bit. + +

x have mode m, a fixed-point machine mode. c +be a fixed-point mode or be a constant with mode VOIDmode; which +mode is determined by the mode called for in the machine description +entry for the left-shift instruction. For example, on the VAX, the mode +of c is QImode regardless of m. + +


(lshiftrt:m x c)
(ashiftrt:m x c)
Like ashift but for right shift. Unlike the case for left shift, +these two operations are distinct. + +


(rotate:m x c)
(rotatert:m x c)
Similar but represent left and right rotate. If c is a constant, +use rotate. + +


(abs:m x)
Represents the absolute value of x, computed in mode m. + +


(sqrt:m x)
Represents the square root of x, computed in mode m. +Most often m will be a floating point mode. + +


(ffs:m x)
Represents one plus the index of the least significant 1-bit in +x, represented as an integer of mode m. (The value is +zero if x is zero.) The mode of x need not be m; +depending on the target machine, various mode combinations may be +valid. + +


(clz:m x)
Represents the number of leading 0-bits in x, represented as an +integer of mode m, starting at the most significant bit position. +If x is zero, the value is determined by +CLZ_DEFINED_VALUE_AT_ZERO (see Misc). Note that this is one of +the few expressions that is not invariant under widening. The mode of +x will usually be an integer mode. + +


(ctz:m x)
Represents the number of trailing 0-bits in x, represented as an +integer of mode m, starting at the least significant bit position. +If x is zero, the value is determined by +CTZ_DEFINED_VALUE_AT_ZERO (see Misc). Except for this case, +ctz(x) is equivalent to ffs(x) - 1. The mode of +x will usually be an integer mode. + +


(popcount:m x)
Represents the number of 1-bits in x, represented as an integer of +mode m. The mode of x will usually be an integer mode. + +


(parity:m x)
Represents the number of 1-bits modulo 2 in x, represented as an +integer of mode m. The mode of x will usually be an integer +mode. + +


(bswap:m x)
Represents the value x with the order of bytes reversed, carried out +in mode m, which must be a fixed-point machine mode. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Assembler-Format.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Assembler-Format.html new file mode 100644 index 0000000..b217edf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Assembler-Format.html @@ -0,0 +1,78 @@ + + +Assembler Format - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: PIC, +Up: Target Macros +



+
+ +

15.21 Defining the Output Assembler Language

+ +

This section describes macros whose principal purpose is to describe how +to write instructions in assembler language—rather than what the +instructions do. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Assembler.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Assembler.html new file mode 100644 index 0000000..be99cd1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Assembler.html @@ -0,0 +1,89 @@ + + +Assembler - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Incdec, +Up: RTL +



+
+ +

12.17 Assembler Instructions as Expressions

+ +

+The RTX code asm_operands represents a value produced by a +user-specified assembler instruction. It is used to represent +an asm statement with arguments. An asm statement with +a single output operand, like this: + +

     asm ("foo %1,%2,%0" : "=a" (outputvar) : "g" (x + y), "di" (*z));
+
+

is represented using a single asm_operands RTX which represents +the value that is stored in outputvar: + +

     (set rtx-for-outputvar
+          (asm_operands "foo %1,%2,%0" "a" 0
+                        [rtx-for-addition-result rtx-for-*z]
+                        [(asm_input:m1 "g")
+                         (asm_input:m2 "di")]))
+
+

Here the operands of the asm_operands RTX are the assembler +template string, the output-operand's constraint, the index-number of the +output operand among the output operands specified, a vector of input +operand RTX's, and a vector of input-operand modes and constraints. The +mode m1 is the mode of the sum x+y; m2 is that of +*z. + +

When an asm statement has multiple output values, its insn has +several such set RTX's inside of a parallel. Each set +contains a asm_operands; all of these share the same assembler +template and vectors, but each contains the constraint for the respective +output operand. They are also distinguished by the output-operand index +number, which is 0, 1, ... for successive output operands. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Attr-Example.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Attr-Example.html new file mode 100644 index 0000000..9ed61b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Attr-Example.html @@ -0,0 +1,107 @@ + + +Attr Example - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Tagging Insns, +Up: Insn Attributes +



+
+ +

14.19.4 Example of Attribute Specifications

+ +

+The judicious use of defaulting is important in the efficient use of +insn attributes. Typically, insns are divided into types and an +attribute, customarily called type, is used to represent this +value. This attribute is normally used only to define the default value +for other attributes. An example will clarify this usage. + +

Assume we have a RISC machine with a condition code and in which only +full-word operations are performed in registers. Let us assume that we +can divide all insns into loads, stores, (integer) arithmetic +operations, floating point operations, and branches. + +

Here we will concern ourselves with determining the effect of an insn on +the condition code and will limit ourselves to the following possible +effects: The condition code can be set unpredictably (clobbered), not +be changed, be set to agree with the results of the operation, or only +changed if the item previously set into the condition code has been +modified. + +

Here is part of a sample md file for such a machine: + +

     (define_attr "type" "load,store,arith,fp,branch" (const_string "arith"))
+     
+     (define_attr "cc" "clobber,unchanged,set,change0"
+                  (cond [(eq_attr "type" "load")
+                             (const_string "change0")
+                         (eq_attr "type" "store,branch")
+                             (const_string "unchanged")
+                         (eq_attr "type" "arith")
+                             (if_then_else (match_operand:SI 0 "" "")
+                                           (const_string "set")
+                                           (const_string "clobber"))]
+                        (const_string "clobber")))
+     
+     (define_insn ""
+       [(set (match_operand:SI 0 "general_operand" "=r,r,m")
+             (match_operand:SI 1 "general_operand" "r,m,r"))]
+       ""
+       "@
+        move %0,%1
+        load %0,%1
+        store %0,%1"
+       [(set_attr "type" "arith,load,store")])
+
+

Note that we assume in the above example that arithmetic operations +performed on quantities smaller than a machine word clobber the condition +code since they will set the condition code to a value corresponding to the +full-word result. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Attributes.html new file mode 100644 index 0000000..ed67921 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Attributes.html @@ -0,0 +1,88 @@ + + +Attributes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Declarations, +Up: Trees +



+
+ +

9.7 Attributes in trees

+ +

+Attributes, as specified using the __attribute__ keyword, are +represented internally as a TREE_LIST. The TREE_PURPOSE +is the name of the attribute, as an IDENTIFIER_NODE. The +TREE_VALUE is a TREE_LIST of the arguments of the +attribute, if any, or NULL_TREE if there are no arguments; the +arguments are stored as the TREE_VALUE of successive entries in +the list, and may be identifiers or expressions. The TREE_CHAIN +of the attribute is the next attribute in a list of attributes applying +to the same declaration or type, or NULL_TREE if there are no +further attributes in the list. + +

Attributes may be attached to declarations and to types; these +attributes may be accessed with the following macros. All attributes +are stored in this way, and many also cause other changes to the +declaration or type or to other internal compiler data structures. + +

+— Tree Macro: tree DECL_ATTRIBUTES (tree decl)
+

This macro returns the attributes on the declaration decl. +

+ +
+— Tree Macro: tree TYPE_ATTRIBUTES (tree type)
+

This macro returns the attributes on the type type. +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Back-End.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Back-End.html new file mode 100644 index 0000000..749c8e7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Back-End.html @@ -0,0 +1,119 @@ + + +Back End - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Front End, +Up: gcc Directory +



+
+ +

6.3.9 Anatomy of a Target Back End

+ +

A back end for a target architecture in GCC has the following parts: + +

    +
  • A directory machine under gcc/config, containing a +machine description machine.md file (see Machine Descriptions), header files machine.h and +machine-protos.h and a source file machine.c +(see Target Description Macros and Functions), +possibly a target Makefile fragment t-machine +(see The Target Makefile Fragment), and maybe +some other files. The names of these files may be changed from the +defaults given by explicit specifications in config.gcc. +
  • If necessary, a file machine-modes.def in the +machine directory, containing additional machine modes to +represent condition codes. See Condition Code, for further details. +
  • An optional machine.opt file in the machine +directory, containing a list of target-specific options. You can also +add other option files using the extra_options variable in +config.gcc. See Options. +
  • Entries in config.gcc (see The config.gcc File) for the systems with this target +architecture. +
  • Documentation in gcc/doc/invoke.texi for any command-line +options supported by this target (see Run-time Target Specification). This means both entries in the summary table +of options and details of the individual options. +
  • Documentation in gcc/doc/extend.texi for any target-specific +attributes supported (see Defining target-specific uses of __attribute__), including where the +same attribute is already supported on some targets, which are +enumerated in the manual. +
  • Documentation in gcc/doc/extend.texi for any target-specific +pragmas supported. +
  • Documentation in gcc/doc/extend.texi of any target-specific +built-in functions supported. +
  • Documentation in gcc/doc/extend.texi of any target-specific +format checking styles supported. +
  • Documentation in gcc/doc/md.texi of any target-specific +constraint letters (see Constraints for Particular Machines). +
  • A note in gcc/doc/contrib.texi under the person or people who +contributed the target support. +
  • Entries in gcc/doc/install.texi for all target triplets +supported with this target architecture, giving details of any special +notes about installation for this target, or saying that there are no +special notes if there are none. +
  • Possibly other support outside the gcc directory for runtime +libraries. FIXME: reference docs for this. The libstdc++ porting +manual needs to be installed as info for this to work, or to be a +chapter of this manual. +
+ +

If the back end is added to the official GCC source repository, the +following are also necessary: + +

    +
  • An entry for the target architecture in readings.html on the +GCC web site, with any relevant links. +
  • Details of the properties of the back end and target architecture in +backends.html on the GCC web site. +
  • A news item about the contribution of support for that target +architecture, in index.html on the GCC web site. +
  • Normally, one or more maintainers of that target listed in +MAINTAINERS. Some existing architectures may be unmaintained, +but it would be unusual to add support for a target that does not have +a maintainer when support is added. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Basic-Blocks.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Basic-Blocks.html new file mode 100644 index 0000000..1d6e389 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Basic-Blocks.html @@ -0,0 +1,145 @@ + + +Basic Blocks - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Control Flow +



+
+ +

13.1 Basic Blocks

+ +

A basic block is a straight-line sequence of code with only one entry +point and only one exit. In GCC, basic blocks are represented using +the basic_block data type. + +

Two pointer members of the basic_block structure are the +pointers next_bb and prev_bb. These are used to keep +doubly linked chain of basic blocks in the same order as the +underlying instruction stream. The chain of basic blocks is updated +transparently by the provided API for manipulating the CFG. The macro +FOR_EACH_BB can be used to visit all the basic blocks in +lexicographical order. Dominator traversals are also possible using +walk_dominator_tree. Given two basic blocks A and B, block A +dominates block B if A is always executed before B. + +

The BASIC_BLOCK array contains all basic blocks in an +unspecified order. Each basic_block structure has a field +that holds a unique integer identifier index that is the +index of the block in the BASIC_BLOCK array. +The total number of basic blocks in the function is +n_basic_blocks. Both the basic block indices and +the total number of basic blocks may vary during the compilation +process, as passes reorder, create, duplicate, and destroy basic +blocks. The index for any block should never be greater than +last_basic_block. + +

Special basic blocks represent possible entry and exit points of a +function. These blocks are called ENTRY_BLOCK_PTR and +EXIT_BLOCK_PTR. These blocks do not contain any code, and are +not elements of the BASIC_BLOCK array. Therefore they have +been assigned unique, negative index numbers. + +

Each basic_block also contains pointers to the first +instruction (the head) and the last instruction (the tail) +or end of the instruction stream contained in a basic block. In +fact, since the basic_block data type is used to represent +blocks in both major intermediate representations of GCC (tree +and RTL), there are pointers to the head and end of a basic block for +both representations. + +

For RTL, these pointers are rtx head, end. In the RTL function +representation, the head pointer always points either to a +NOTE_INSN_BASIC_BLOCK or to a CODE_LABEL, if present. +In the RTL representation of a function, the instruction stream +contains not only the “real” instructions, but also notes. +Any function that moves or duplicates the basic blocks needs +to take care of updating of these notes. Many of these notes expect +that the instruction stream consists of linear regions, making such +updates difficult. The NOTE_INSN_BASIC_BLOCK note is the only +kind of note that may appear in the instruction stream contained in a +basic block. The instruction stream of a basic block always follows a +NOTE_INSN_BASIC_BLOCK, but zero or more CODE_LABEL +nodes can precede the block note. A basic block ends by control flow +instruction or last instruction before following CODE_LABEL or +NOTE_INSN_BASIC_BLOCK. A CODE_LABEL cannot appear in +the instruction stream of a basic block. + +

In addition to notes, the jump table vectors are also represented as +“pseudo-instructions” inside the insn stream. These vectors never +appear in the basic block and should always be placed just after the +table jump instructions referencing them. After removing the +table-jump it is often difficult to eliminate the code computing the +address and referencing the vector, so cleaning up these vectors is +postponed until after liveness analysis. Thus the jump table vectors +may appear in the insn stream unreferenced and without any purpose. +Before any edge is made fall-thru, the existence of such +construct in the way needs to be checked by calling +can_fallthru function. + +

For the tree representation, the head and end of the basic block +are being pointed to by the stmt_list field, but this special +tree should never be referenced directly. Instead, at the tree +level abstract containers and iterators are used to access statements +and expressions in basic blocks. These iterators are called +block statement iterators (BSIs). Grep for ^bsi +in the various tree-* files. +The following snippet will pretty-print all the statements of the +program in the GIMPLE representation. + +

     FOR_EACH_BB (bb)
+       {
+          block_stmt_iterator si;
+     
+          for (si = bsi_start (bb); !bsi_end_p (si); bsi_next (&si))
+            {
+               tree stmt = bsi_stmt (si);
+               print_generic_stmt (stderr, stmt, 0);
+            }
+       }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Bit_002dFields.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Bit_002dFields.html new file mode 100644 index 0000000..9879f93 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Bit_002dFields.html @@ -0,0 +1,94 @@ + + +Bit-Fields - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Comparisons, +Up: RTL +



+
+ +

12.11 Bit-Fields

+ +

+Special expression codes exist to represent bit-field instructions. + + + + +

(sign_extract:m loc size pos)
This represents a reference to a sign-extended bit-field contained or +starting in loc (a memory or register reference). The bit-field +is size bits wide and starts at bit pos. The compilation +option BITS_BIG_ENDIAN says which end of the memory unit +pos counts from. + +

If loc is in memory, its mode must be a single-byte integer mode. +If loc is in a register, the mode to use is specified by the +operand of the insv or extv pattern +(see Standard Names) and is usually a full-word integer mode, +which is the default if none is specified. + +

The mode of pos is machine-specific and is also specified +in the insv or extv pattern. + +

The mode m is the same as the mode that would be used for +loc if it were a register. + +

A sign_extract can not appear as an lvalue, or part thereof, +in RTL. + +


(zero_extract:m loc size pos)
Like sign_extract but refers to an unsigned or zero-extended +bit-field. The same sequence of bits are extracted, but they +are filled to an entire word with zeros instead of by sign-extension. + +

Unlike sign_extract, this type of expressions can be lvalues +in RTL; they may appear on the left side of an assignment, indicating +insertion of a value into the specified bit-field. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Blocks.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Blocks.html new file mode 100644 index 0000000..b7cfba2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Blocks.html @@ -0,0 +1,83 @@ + + +Blocks - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Statements +



+
+ +
10.2.4.1 Blocks
+ +

+Block scopes and the variables they declare in GENERIC and GIMPLE are +expressed using the BIND_EXPR code, which in previous versions of +GCC was primarily used for the C statement-expression extension. + +

Variables in a block are collected into BIND_EXPR_VARS in +declaration order. Any runtime initialization is moved out of +DECL_INITIAL and into a statement in the controlled block. When +gimplifying from C or C++, this initialization replaces the +DECL_STMT. + +

Variable-length arrays (VLAs) complicate this process, as their size often +refers to variables initialized earlier in the block. To handle this, we +currently split the block at that point, and move the VLA into a new, inner +BIND_EXPR. This strategy may change in the future. + +

DECL_SAVED_TREE for a GIMPLE function will always be a +BIND_EXPR which contains declarations for the temporary variables +used in the function. + +

A C++ program will usually contain more BIND_EXPRs than there are +syntactic blocks in the source code, since several C++ constructs have +implicit scopes associated with them. On the other hand, although the C++ +front end uses pseudo-scopes to handle cleanups for objects with +destructors, these don't translate into the GIMPLE form; multiple +declarations at the same level use the same BIND_EXPR. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Build.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Build.html new file mode 100644 index 0000000..f413b8a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Build.html @@ -0,0 +1,66 @@ + + +Build - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Configuration, +Up: gcc Directory +



+
+ +

6.3.3 Build System in the gcc Directory

+ +

FIXME: describe the build system, including what is built in what +stages. Also list the various source files that are used in the build +process but aren't source files of GCC itself and so aren't documented +below (see Passes). + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C-Constraint-Interface.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C-Constraint-Interface.html new file mode 100644 index 0000000..dcee049 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C-Constraint-Interface.html @@ -0,0 +1,142 @@ + + +C Constraint Interface - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Define Constraints, +Up: Constraints +



+
+ +

14.8.7 Testing constraints from C

+ +

+It is occasionally useful to test a constraint from C code rather than +implicitly via the constraint string in a match_operand. The +generated file tm_p.h declares a few interfaces for working +with machine-specific constraints. None of these interfaces work with +the generic constraints described in Simple Constraints. This +may change in the future. + +

Warning: tm_p.h may declare other functions that +operate on constraints, besides the ones documented here. Do not use +those functions from machine-dependent code. They exist to implement +the old constraint interface that machine-independent components of +the compiler still expect. They will change or disappear in the +future. + +

Some valid constraint names are not valid C identifiers, so there is a +mangling scheme for referring to them from C. Constraint names that +do not contain angle brackets or underscores are left unchanged. +Underscores are doubled, each < is replaced with _l, and +each > with _g. Here are some examples: + + +

+     

Original Mangled
x x
P42x P42x
P4_x P4__x
P4>x P4_gx
P4>> P4_g_g
P4_g> P4__g_g +
+

+

Throughout this section, the variable c is either a constraint +in the abstract sense, or a constant from enum constraint_num; +the variable m is a mangled constraint name (usually as part of +a larger identifier). + +

+— Enum: constraint_num
+

For each machine-specific constraint, there is a corresponding +enumeration constant: CONSTRAINT_ plus the mangled name of the +constraint. Functions that take an enum constraint_num as an +argument expect one of these constants. + +

Machine-independent constraints do not have associated constants. +This may change in the future. +

+ +
+— Function: inline bool satisfies_constraint_m (rtx exp)
+

For each machine-specific, non-register constraint m, there is +one of these functions; it returns true if exp satisfies the +constraint. These functions are only visible if rtl.h was included +before tm_p.h. +

+ +
+— Function: bool constraint_satisfied_p (rtx exp, enum constraint_num c)
+

Like the satisfies_constraint_m functions, but the +constraint to test is given as an argument, c. If c +specifies a register constraint, this function will always return +false. +

+ +
+— Function: enum reg_class regclass_for_constraint (enum constraint_num c)
+

Returns the register class associated with c. If c is not +a register constraint, or those registers are not available for the +currently selected subtarget, returns NO_REGS. +

+ +

Here is an example use of satisfies_constraint_m. In +peephole optimizations (see Peephole Definitions), operand +constraint strings are ignored, so if there are relevant constraints, +they must be tested in the C condition. In the example, the +optimization is applied if operand 2 does not satisfy the +K constraint. (This is a simplified version of a peephole +definition from the i386 machine description.) + +

     (define_peephole2
+       [(match_scratch:SI 3 "r")
+        (set (match_operand:SI 0 "register_operand" "")
+     	(mult:SI (match_operand:SI 1 "memory_operand" "")
+     		 (match_operand:SI 2 "immediate_operand" "")))]
+     
+       "!satisfies_constraint_K (operands[2])"
+     
+       [(set (match_dup 3) (match_dup 1))
+        (set (match_dup 0) (mult:SI (match_dup 3) (match_dup 2)))]
+     
+       "")
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C-Tests.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C-Tests.html new file mode 100644 index 0000000..fd7772d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C-Tests.html @@ -0,0 +1,134 @@ + + +C Tests - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Ada Tests, +Up: Testsuites +



+
+ +

6.4.4 C Language Testsuites

+ +

GCC contains the following C language testsuites, in the +gcc/testsuite directory: + +

+
gcc.dg
This contains tests of particular features of the C compiler, using the +more modern dg harness. Correctness tests for various compiler +features should go here if possible. + +

Magic comments determine whether the file +is preprocessed, compiled, linked or run. In these tests, error and warning +message texts are compared against expected texts or regular expressions +given in comments. These tests are run with the options -ansi -pedantic +unless other options are given in the test. Except as noted below they +are not run with multiple optimization options. +

gcc.dg/compat
This subdirectory contains tests for binary compatibility using +compat.exp, which in turn uses the language-independent support +(see Support for testing binary compatibility). +
gcc.dg/cpp
This subdirectory contains tests of the preprocessor. +
gcc.dg/debug
This subdirectory contains tests for debug formats. Tests in this +subdirectory are run for each debug format that the compiler supports. +
gcc.dg/format
This subdirectory contains tests of the -Wformat format +checking. Tests in this directory are run with and without +-DWIDE. +
gcc.dg/noncompile
This subdirectory contains tests of code that should not compile and +does not need any special compilation options. They are run with +multiple optimization options, since sometimes invalid code crashes +the compiler with optimization. +
gcc.dg/special
FIXME: describe this. + +
gcc.c-torture
This contains particular code fragments which have historically broken easily. +These tests are run with multiple optimization options, so tests for features +which only break at some optimization levels belong here. This also contains +tests to check that certain optimizations occur. It might be worthwhile to +separate the correctness tests cleanly from the code quality tests, but +it hasn't been done yet. + +
gcc.c-torture/compat
FIXME: describe this. + +

This directory should probably not be used for new tests. +

gcc.c-torture/compile
This testsuite contains test cases that should compile, but do not +need to link or run. These test cases are compiled with several +different combinations of optimization options. All warnings are +disabled for these test cases, so this directory is not suitable if +you wish to test for the presence or absence of compiler warnings. +While special options can be set, and tests disabled on specific +platforms, by the use of .x files, mostly these test cases +should not contain platform dependencies. FIXME: discuss how defines +such as NO_LABEL_VALUES and STACK_SIZE are used. +
gcc.c-torture/execute
This testsuite contains test cases that should compile, link and run; +otherwise the same comments as for gcc.c-torture/compile apply. +
gcc.c-torture/execute/ieee
This contains tests which are specific to IEEE floating point. +
gcc.c-torture/unsorted
FIXME: describe this. + +

This directory should probably not be used for new tests. +

gcc.c-torture/misc-tests
This directory contains C tests that require special handling. Some +of these tests have individual expect files, and others share +special-purpose expect files: + +
+
bprob*.c
Test -fbranch-probabilities using bprob.exp, which +in turn uses the generic, language-independent framework +(see Support for testing profile-directed optimizations). + +
dg-*.c
Test the testsuite itself using dg-test.exp. + +
gcov*.c
Test gcov output using gcov.exp, which in turn uses the +language-independent support (see Support for testing gcov). + +
i386-pf-*.c
Test i386-specific support for data prefetch using i386-prefetch.exp. +
+ +
+ +

FIXME: merge in testsuite/README.gcc and discuss the format of +test cases and magic comments more. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C_002b_002b-ABI.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C_002b_002b-ABI.html new file mode 100644 index 0000000..518b915 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/C_002b_002b-ABI.html @@ -0,0 +1,166 @@ + + +C++ ABI - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: PCH Target, +Up: Target Macros +



+
+ +

15.28 C++ ABI parameters

+ +

+ +

+— Target Hook: tree TARGET_CXX_GUARD_TYPE (void)
+

Define this hook to override the integer type used for guard variables. +These are used to implement one-time construction of static objects. The +default is long_long_integer_type_node. +

+ +
+— Target Hook: bool TARGET_CXX_GUARD_MASK_BIT (void)
+

This hook determines how guard variables are used. It should return +false (the default) if first byte should be used. A return value of +true indicates the least significant bit should be used. +

+ +
+— Target Hook: tree TARGET_CXX_GET_COOKIE_SIZE (tree type)
+

This hook returns the size of the cookie to use when allocating an array +whose elements have the indicated type. Assumes that it is already +known that a cookie is needed. The default is +max(sizeof (size_t), alignof(type)), as defined in section 2.7 of the +IA64/Generic C++ ABI. +

+ +
+— Target Hook: bool TARGET_CXX_COOKIE_HAS_SIZE (void)
+

This hook should return true if the element size should be stored in +array cookies. The default is to return false. +

+ +
+— Target Hook: int TARGET_CXX_IMPORT_EXPORT_CLASS (tree type, int import_export)
+

If defined by a backend this hook allows the decision made to export +class type to be overruled. Upon entry import_export +will contain 1 if the class is going to be exported, −1 if it is going +to be imported and 0 otherwise. This function should return the +modified value and perform any other actions necessary to support the +backend's targeted operating system. +

+ +
+— Target Hook: bool TARGET_CXX_CDTOR_RETURNS_THIS (void)
+

This hook should return true if constructors and destructors return +the address of the object created/destroyed. The default is to return +false. +

+ +
+— Target Hook: bool TARGET_CXX_KEY_METHOD_MAY_BE_INLINE (void)
+

This hook returns true if the key method for a class (i.e., the method +which, if defined in the current translation unit, causes the virtual +table to be emitted) may be an inline function. Under the standard +Itanium C++ ABI the key method may be an inline function so long as +the function is not declared inline in the class definition. Under +some variants of the ABI, an inline function can never be the key +method. The default is to return true. +

+ +
+— Target Hook: void TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY (tree decl)
+

decl is a virtual table, virtual table table, typeinfo object, +or other similar implicit class data object that will be emitted with +external linkage in this translation unit. No ELF visibility has been +explicitly specified. If the target needs to specify a visibility +other than that of the containing class, use this hook to set +DECL_VISIBILITY and DECL_VISIBILITY_SPECIFIED. +

+ +
+— Target Hook: bool TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT (void)
+

This hook returns true (the default) if virtual tables and other +similar implicit class data objects are always COMDAT if they have +external linkage. If this hook returns false, then class data for +classes whose virtual table will be emitted in only one translation +unit will not be COMDAT. +

+ +
+— Target Hook: bool TARGET_CXX_LIBRARY_RTTI_COMDAT (void)
+

This hook returns true (the default) if the RTTI information for +the basic types which is defined in the C++ runtime should always +be COMDAT, false if it should not be COMDAT. +

+ +
+— Target Hook: bool TARGET_CXX_USE_AEABI_ATEXIT (void)
+

This hook returns true if __aeabi_atexit (as defined by the ARM EABI) +should be used to register static destructors when -fuse-cxa-atexit +is in effect. The default is to return false to use __cxa_atexit. +

+ +
+— Target Hook: bool TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT (void)
+

This hook returns true if the target atexit function can be used +in the same manner as __cxa_atexit to register C++ static +destructors. This requires that atexit-registered functions in +shared libraries are run in the correct order when the libraries are +unloaded. The default is to return false. +

+ +
+— Target Hook: void TARGET_CXX_ADJUST_CLASS_AT_DEFINITION (tree type)
+

type is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that has just been +defined. Use this hook to make adjustments to the class (eg, tweak +visibility or perform any other required target modifications). +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Caller-Saves.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Caller-Saves.html new file mode 100644 index 0000000..4dd8cbd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Caller-Saves.html @@ -0,0 +1,82 @@ + + +Caller Saves - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Aggregate Return, +Up: Stack and Calling +



+
+ +

15.10.10 Caller-Saves Register Allocation

+ +

If you enable it, GCC can save registers around function calls. This +makes it possible to use call-clobbered registers to hold variables that +must live across calls. + +

+— Macro: CALLER_SAVE_PROFITABLE (refs, calls)
+

A C expression to determine whether it is worthwhile to consider placing +a pseudo-register in a call-clobbered hard register and saving and +restoring it around each function call. The expression should be 1 when +this is worth doing, and 0 otherwise. + +

If you don't define this macro, a default is used which is good on most +machines: 4 * calls < refs. +

+ +
+— Macro: HARD_REGNO_CALLER_SAVE_MODE (regno, nregs)
+

A C expression specifying which mode is required for saving nregs +of a pseudo-register in call-clobbered hard register regno. If +regno is unsuitable for caller save, VOIDmode should be +returned. For most machines this macro need not be defined since GCC +will select the smallest suitable mode. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Calls.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Calls.html new file mode 100644 index 0000000..bcd8e77 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Calls.html @@ -0,0 +1,112 @@ + + +Calls - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Insns, +Up: RTL +



+
+ +

12.19 RTL Representation of Function-Call Insns

+ +

+Insns that call subroutines have the RTL expression code call_insn. +These insns must satisfy special rules, and their bodies must use a special +RTL expression code, call. + +

A call expression has two operands, as follows: + +

     (call (mem:fm addr) nbytes)
+
+

Here nbytes is an operand that represents the number of bytes of +argument data being passed to the subroutine, fm is a machine mode +(which must equal as the definition of the FUNCTION_MODE macro in +the machine description) and addr represents the address of the +subroutine. + +

For a subroutine that returns no value, the call expression as +shown above is the entire body of the insn, except that the insn might +also contain use or clobber expressions. + +

For a subroutine that returns a value whose mode is not BLKmode, +the value is returned in a hard register. If this register's number is +r, then the body of the call insn looks like this: + +

     (set (reg:m r)
+          (call (mem:fm addr) nbytes))
+
+

This RTL expression makes it clear (to the optimizer passes) that the +appropriate register receives a useful value in this insn. + +

When a subroutine returns a BLKmode value, it is handled by +passing to the subroutine the address of a place to store the value. +So the call insn itself does not “return” any value, and it has the +same RTL form as a call that returns nothing. + +

On some machines, the call instruction itself clobbers some register, +for example to contain the return address. call_insn insns +on these machines should have a body which is a parallel +that contains both the call expression and clobber +expressions that indicate which registers are destroyed. Similarly, +if the call instruction requires some register other than the stack +pointer that is not explicitly mentioned in its RTL, a use +subexpression should mention that register. + +

Functions that are called are assumed to modify all registers listed in +the configuration macro CALL_USED_REGISTERS (see Register Basics) and, with the exception of const functions and library +calls, to modify all of memory. + +

Insns containing just use expressions directly precede the +call_insn insn to indicate which registers contain inputs to the +function. Similarly, if registers other than those in +CALL_USED_REGISTERS are clobbered by the called function, insns +containing a single clobber follow immediately after the call to +indicate which registers. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Class-Preferences.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Class-Preferences.html new file mode 100644 index 0000000..ee4c1ab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Class-Preferences.html @@ -0,0 +1,72 @@ + + +Class Preferences - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Multi-Alternative, +Up: Constraints +



+
+ +

14.8.3 Register Class Preferences

+ +

+The operand constraints have another function: they enable the compiler +to decide which kind of hardware register a pseudo register is best +allocated to. The compiler examines the constraints that apply to the +insns that use the pseudo register, looking for the machine-dependent +letters such as d and a that specify classes of registers. +The pseudo register is put in whichever class gets the most “votes”. +The constraint letters g and r also vote: they vote in +favor of a general register. The machine description says which registers +are considered general. + +

Of course, on some machines all registers are equivalent, and no register +classes are defined. Then none of this complexity is relevant. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Classes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Classes.html new file mode 100644 index 0000000..d2b043f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Classes.html @@ -0,0 +1,158 @@ + + +Classes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Namespaces, +Up: Scopes +



+
+ +

9.4.2 Classes

+ +

+A class type is represented by either a RECORD_TYPE or a +UNION_TYPE. A class declared with the union tag is +represented by a UNION_TYPE, while classes declared with either +the struct or the class tag are represented by +RECORD_TYPEs. You can use the CLASSTYPE_DECLARED_CLASS +macro to discern whether or not a particular type is a class as +opposed to a struct. This macro will be true only for classes +declared with the class tag. + +

Almost all non-function members are available on the TYPE_FIELDS +list. Given one member, the next can be found by following the +TREE_CHAIN. You should not depend in any way on the order in +which fields appear on this list. All nodes on this list will be +DECL nodes. A FIELD_DECL is used to represent a non-static +data member, a VAR_DECL is used to represent a static data +member, and a TYPE_DECL is used to represent a type. Note that +the CONST_DECL for an enumeration constant will appear on this +list, if the enumeration type was declared in the class. (Of course, +the TYPE_DECL for the enumeration type will appear here as well.) +There are no entries for base classes on this list. In particular, +there is no FIELD_DECL for the “base-class portion” of an +object. + +

The TYPE_VFIELD is a compiler-generated field used to point to +virtual function tables. It may or may not appear on the +TYPE_FIELDS list. However, back ends should handle the +TYPE_VFIELD just like all the entries on the TYPE_FIELDS +list. + +

The function members are available on the TYPE_METHODS list. +Again, subsequent members are found by following the TREE_CHAIN +field. If a function is overloaded, each of the overloaded functions +appears; no OVERLOAD nodes appear on the TYPE_METHODS +list. Implicitly declared functions (including default constructors, +copy constructors, assignment operators, and destructors) will appear on +this list as well. + +

Every class has an associated binfo, which can be obtained with +TYPE_BINFO. Binfos are used to represent base-classes. The +binfo given by TYPE_BINFO is the degenerate case, whereby every +class is considered to be its own base-class. The base binfos for a +particular binfo are held in a vector, whose length is obtained with +BINFO_N_BASE_BINFOS. The base binfos themselves are obtained +with BINFO_BASE_BINFO and BINFO_BASE_ITERATE. To add a +new binfo, use BINFO_BASE_APPEND. The vector of base binfos can +be obtained with BINFO_BASE_BINFOS, but normally you do not need +to use that. The class type associated with a binfo is given by +BINFO_TYPE. It is not always the case that BINFO_TYPE +(TYPE_BINFO (x)), because of typedefs and qualified types. Neither is +it the case that TYPE_BINFO (BINFO_TYPE (y)) is the same binfo as +y. The reason is that if y is a binfo representing a +base-class B of a derived class D, then BINFO_TYPE +(y) will be B, and TYPE_BINFO (BINFO_TYPE (y)) will be +B as its own base-class, rather than as a base-class of D. + +

The access to a base type can be found with BINFO_BASE_ACCESS. +This will produce access_public_node, access_private_node +or access_protected_node. If bases are always public, +BINFO_BASE_ACCESSES may be NULL. + +

BINFO_VIRTUAL_P is used to specify whether the binfo is inherited +virtually or not. The other flags, BINFO_MARKED_P and +BINFO_FLAG_1 to BINFO_FLAG_6 can be used for language +specific use. + +

The following macros can be used on a tree node representing a class-type. + +

+
LOCAL_CLASS_P
This predicate holds if the class is local class i.e. declared +inside a function body. + +
TYPE_POLYMORPHIC_P
This predicate holds if the class has at least one virtual function +(declared or inherited). + +
TYPE_HAS_DEFAULT_CONSTRUCTOR
This predicate holds whenever its argument represents a class-type with +default constructor. + +
CLASSTYPE_HAS_MUTABLE
TYPE_HAS_MUTABLE_P
These predicates hold for a class-type having a mutable data member. + +
CLASSTYPE_NON_POD_P
This predicate holds only for class-types that are not PODs. + +
TYPE_HAS_NEW_OPERATOR
This predicate holds for a class-type that defines +operator new. + +
TYPE_HAS_ARRAY_NEW_OPERATOR
This predicate holds for a class-type for which +operator new[] is defined. + +
TYPE_OVERLOADS_CALL_EXPR
This predicate holds for class-type for which the function call +operator() is overloaded. + +
TYPE_OVERLOADS_ARRAY_REF
This predicate holds for a class-type that overloads +operator[] + +
TYPE_OVERLOADS_ARROW
This predicate holds for a class-type for which operator-> is +overloaded. + +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Cleanups.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Cleanups.html new file mode 100644 index 0000000..e8c2a2b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Cleanups.html @@ -0,0 +1,100 @@ + + +Cleanups - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Jumps, +Up: Statements +



+
+ +
10.2.4.7 Cleanups
+ +

+Destructors for local C++ objects and similar dynamic cleanups are +represented in GIMPLE by a TRY_FINALLY_EXPR. +TRY_FINALLY_EXPR has two operands, both of which are a sequence +of statements to execute. The first sequence is executed. When it +completes the second sequence is executed. + +

The first sequence may complete in the following ways: + +

    + +
  1. Execute the last statement in the sequence and fall off the +end. + +
  2. Execute a goto statement (GOTO_EXPR) to an ordinary +label outside the sequence. + +
  3. Execute a return statement (RETURN_EXPR). + +
  4. Throw an exception. This is currently not explicitly represented in +GIMPLE. + +
+ +

The second sequence is not executed if the first sequence completes by +calling setjmp or exit or any other function that does +not return. The second sequence is also not executed if the first +sequence completes via a non-local goto or a computed goto (in general +the compiler does not know whether such a goto statement exits the +first sequence or not, so we assume that it doesn't). + +

After the second sequence is executed, if it completes normally by +falling off the end, execution continues wherever the first sequence +would have continued, by falling off the end, or doing a goto, etc. + +

TRY_FINALLY_EXPR complicates the flow graph, since the cleanup +needs to appear on every edge out of the controlled block; this +reduces the freedom to move code across these edges. Therefore, the +EH lowering pass which runs before most of the optimization passes +eliminates these expressions by explicitly adding the cleanup to each +edge. Rethrowing the exception is represented using RESX_EXPR. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Code-Iterators.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Code-Iterators.html new file mode 100644 index 0000000..7979f78 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Code-Iterators.html @@ -0,0 +1,128 @@ + + +Code Iterators - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Mode Iterators, +Up: Iterators +



+
+ +

14.22.2 Code Iterators

+ +

+Code iterators operate in a similar way to mode iterators. See Mode Iterators. + +

The construct: + +

     (define_code_iterator name [(code1 "cond1") ... (coden "condn")])
+
+

defines a pseudo rtx code name that can be instantiated as +codei if condition condi is true. Each codei +must have the same rtx format. See RTL Classes. + +

As with mode iterators, each pattern that uses name will be +expanded n times, once with all uses of name replaced by +code1, once with all uses replaced by code2, and so on. +See Defining Mode Iterators. + +

It is possible to define attributes for codes as well as for modes. +There are two standard code attributes: code, the name of the +code in lower case, and CODE, the name of the code in upper case. +Other attributes are defined using: + +

     (define_code_attr name [(code1 "value1") ... (coden "valuen")])
+
+

Here's an example of code iterators in action, taken from the MIPS port: + +

     (define_code_iterator any_cond [unordered ordered unlt unge uneq ltgt unle ungt
+                                     eq ne gt ge lt le gtu geu ltu leu])
+     
+     (define_expand "b<code>"
+       [(set (pc)
+             (if_then_else (any_cond:CC (cc0)
+                                        (const_int 0))
+                           (label_ref (match_operand 0 ""))
+                           (pc)))]
+       ""
+     {
+       gen_conditional_branch (operands, <CODE>);
+       DONE;
+     })
+
+

This is equivalent to: + +

     (define_expand "bunordered"
+       [(set (pc)
+             (if_then_else (unordered:CC (cc0)
+                                         (const_int 0))
+                           (label_ref (match_operand 0 ""))
+                           (pc)))]
+       ""
+     {
+       gen_conditional_branch (operands, UNORDERED);
+       DONE;
+     })
+     
+     (define_expand "bordered"
+       [(set (pc)
+             (if_then_else (ordered:CC (cc0)
+                                       (const_int 0))
+                           (label_ref (match_operand 0 ""))
+                           (pc)))]
+       ""
+     {
+       gen_conditional_branch (operands, ORDERED);
+       DONE;
+     })
+     
+     ...
+
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Collect2.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Collect2.html new file mode 100644 index 0000000..a334306 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Collect2.html @@ -0,0 +1,127 @@ + + +Collect2 - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Fragments, +Up: Top +



+
+ +

18 collect2

+ +

GCC uses a utility called collect2 on nearly all systems to arrange +to call various initialization functions at start time. + +

The program collect2 works by linking the program once and +looking through the linker output file for symbols with particular names +indicating they are constructor functions. If it finds any, it +creates a new temporary .c file containing a table of them, +compiles it, and links the program a second time including that file. + +

The actual calls to the constructors are carried out by a subroutine +called __main, which is called (automatically) at the beginning +of the body of main (provided main was compiled with GNU +CC). Calling __main is necessary, even when compiling C code, to +allow linking C and C++ object code together. (If you use +-nostdlib, you get an unresolved reference to __main, +since it's defined in the standard GCC library. Include -lgcc at +the end of your compiler command line to resolve this reference.) + +

The program collect2 is installed as ld in the directory +where the passes of the compiler are installed. When collect2 +needs to find the real ld, it tries the following file +names: + +

    +
  • real-ld in the directories listed in the compiler's search +directories. + +
  • real-ld in the directories listed in the environment variable +PATH. + +
  • The file specified in the REAL_LD_FILE_NAME configuration macro, +if specified. + +
  • ld in the compiler's search directories, except that +collect2 will not execute itself recursively. + +
  • ld in PATH. +
+ +

“The compiler's search directories” means all the directories where +gcc searches for passes of the compiler. This includes +directories that you specify with -B. + +

Cross-compilers search a little differently: + +

    +
  • real-ld in the compiler's search directories. + +
  • target-real-ld in PATH. + +
  • The file specified in the REAL_LD_FILE_NAME configuration macro, +if specified. + +
  • ld in the compiler's search directories. + +
  • target-ld in PATH. +
+ +

collect2 explicitly avoids running ld using the file name +under which collect2 itself was invoked. In fact, it remembers +up a list of such names—in case one copy of collect2 finds +another copy (or version) of collect2 installed as ld in a +second place in the search path. + +

collect2 searches for the utilities nm and strip +using the same algorithm as above for ld. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Comparisons.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Comparisons.html new file mode 100644 index 0000000..1764be4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Comparisons.html @@ -0,0 +1,144 @@ + + +Comparisons - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Arithmetic, +Up: RTL +



+
+ +

12.10 Comparison Operations

+ +

+Comparison operators test a relation on two operands and are considered +to represent a machine-dependent nonzero value described by, but not +necessarily equal to, STORE_FLAG_VALUE (see Misc) +if the relation holds, or zero if it does not, for comparison operators +whose results have a `MODE_INT' mode, +FLOAT_STORE_FLAG_VALUE (see Misc) if the relation holds, or +zero if it does not, for comparison operators that return floating-point +values, and a vector of either VECTOR_STORE_FLAG_VALUE (see Misc) +if the relation holds, or of zeros if it does not, for comparison operators +that return vector results. +The mode of the comparison operation is independent of the mode +of the data being compared. If the comparison operation is being tested +(e.g., the first operand of an if_then_else), the mode must be +VOIDmode. + +

There are two ways that comparison operations may be used. The +comparison operators may be used to compare the condition codes +(cc0) against zero, as in (eq (cc0) (const_int 0)). Such +a construct actually refers to the result of the preceding instruction +in which the condition codes were set. The instruction setting the +condition code must be adjacent to the instruction using the condition +code; only note insns may separate them. + +

Alternatively, a comparison operation may directly compare two data +objects. The mode of the comparison is determined by the operands; they +must both be valid for a common machine mode. A comparison with both +operands constant would be invalid as the machine mode could not be +deduced from it, but such a comparison should never exist in RTL due to +constant folding. + +

In the example above, if (cc0) were last set to +(compare x y), the comparison operation is +identical to (eq x y). Usually only one style +of comparisons is supported on a particular machine, but the combine +pass will try to merge the operations to produce the eq shown +in case it exists in the context of the particular insn involved. + +

Inequality comparisons come in two flavors, signed and unsigned. Thus, +there are distinct expression codes gt and gtu for signed and +unsigned greater-than. These can produce different results for the same +pair of integer values: for example, 1 is signed greater-than −1 but not +unsigned greater-than, because −1 when regarded as unsigned is actually +0xffffffff which is greater than 1. + +

The signed comparisons are also used for floating point values. Floating +point comparisons are distinguished by the machine modes of the operands. + + + + +

(eq:m x y)
STORE_FLAG_VALUE if the values represented by x and y +are equal, otherwise 0. + +


(ne:m x y)
STORE_FLAG_VALUE if the values represented by x and y +are not equal, otherwise 0. + +


(gt:m x y)
STORE_FLAG_VALUE if the x is greater than y. If they +are fixed-point, the comparison is done in a signed sense. + +


(gtu:m x y)
Like gt but does unsigned comparison, on fixed-point numbers only. + +


(lt:m x y)
(ltu:m x y)
Like gt and gtu but test for “less than”. + +


(ge:m x y)
(geu:m x y)
Like gt and gtu but test for “greater than or equal”. + +


(le:m x y)
(leu:m x y)
Like gt and gtu but test for “less than or equal”. + +


(if_then_else cond then else)
This is not a comparison operation but is listed here because it is +always used in conjunction with a comparison operation. To be +precise, cond is a comparison expression. This expression +represents a choice, according to cond, between the value +represented by then and the one represented by else. + +

On most machines, if_then_else expressions are valid only +to express conditional jumps. + +


(cond [test1 value1 test2 value2 ...] default)
Similar to if_then_else, but more general. Each of test1, +test2, ... is performed in turn. The result of this expression is +the value corresponding to the first nonzero test, or default if +none of the tests are nonzero expressions. + +

This is currently not valid for instruction patterns and is supported only +for insn attributes. See Insn Attributes. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Compound-Expressions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Compound-Expressions.html new file mode 100644 index 0000000..5903edd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Compound-Expressions.html @@ -0,0 +1,60 @@ + + +Compound Expressions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: GIMPLE Expressions +



+
+ +
10.2.3.1 Compound Expressions
+ +

+The left-hand side of a C comma expression is simply moved into a separate +statement. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Compound-Lvalues.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Compound-Lvalues.html new file mode 100644 index 0000000..e46fda4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Compound-Lvalues.html @@ -0,0 +1,73 @@ + + +Compound Lvalues - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+ +
10.2.3.2 Compound Lvalues
+ +

+Currently compound lvalues involving array and structure field references +are not broken down; an expression like a.b[2] = 42 is not reduced +any further (though complex array subscripts are). This restriction is a +workaround for limitations in later optimizers; if we were to convert this +to + +

       T1 = &a.b;
+       T1[2] = 42;
+
+

alias analysis would not remember that the reference to T1[2] came +by way of a.b, so it would think that the assignment could alias +another member of a; this broke struct-alias-1.c. Future +optimizer improvements may make this limitation unnecessary. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Concept-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Concept-Index.html new file mode 100644 index 0000000..4204273 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Concept-Index.html @@ -0,0 +1,4392 @@ + + +Concept Index - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + +

+

+Previous: Option Index, +Up: Top +



+
+ +

Concept Index

+ + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Condition-Code.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Condition-Code.html new file mode 100644 index 0000000..0d859fb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Condition-Code.html @@ -0,0 +1,244 @@ + + +Condition Code - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Anchored Addresses, +Up: Target Macros +



+
+ +

15.16 Condition Code Status

+ +

+ +This describes the condition code status. + +

The file conditions.h defines a variable cc_status to +describe how the condition code was computed (in case the interpretation of +the condition code depends on the instruction that it was set by). This +variable contains the RTL expressions on which the condition code is +currently based, and several standard flags. + +

Sometimes additional machine-specific flags must be defined in the machine +description header file. It can also add additional machine-specific +information by defining CC_STATUS_MDEP. + +

+— Macro: CC_STATUS_MDEP
+

C code for a data type which is used for declaring the mdep +component of cc_status. It defaults to int. + +

This macro is not used on machines that do not use cc0. +

+ +
+— Macro: CC_STATUS_MDEP_INIT
+

A C expression to initialize the mdep field to “empty”. +The default definition does nothing, since most machines don't use +the field anyway. If you want to use the field, you should probably +define this macro to initialize it. + +

This macro is not used on machines that do not use cc0. +

+ +
+— Macro: NOTICE_UPDATE_CC (exp, insn)
+

A C compound statement to set the components of cc_status +appropriately for an insn insn whose body is exp. It is +this macro's responsibility to recognize insns that set the condition +code as a byproduct of other activity as well as those that explicitly +set (cc0). + +

This macro is not used on machines that do not use cc0. + +

If there are insns that do not set the condition code but do alter +other machine registers, this macro must check to see whether they +invalidate the expressions that the condition code is recorded as +reflecting. For example, on the 68000, insns that store in address +registers do not set the condition code, which means that usually +NOTICE_UPDATE_CC can leave cc_status unaltered for such +insns. But suppose that the previous insn set the condition code +based on location a4@(102) and the current insn stores a new +value in a4. Although the condition code is not changed by +this, it will no longer be true that it reflects the contents of +a4@(102). Therefore, NOTICE_UPDATE_CC must alter +cc_status in this case to say that nothing is known about the +condition code value. + +

The definition of NOTICE_UPDATE_CC must be prepared to deal +with the results of peephole optimization: insns whose patterns are +parallel RTXs containing various reg, mem or +constants which are just the operands. The RTL structure of these +insns is not sufficient to indicate what the insns actually do. What +NOTICE_UPDATE_CC should do when it sees one is just to run +CC_STATUS_INIT. + +

A possible definition of NOTICE_UPDATE_CC is to call a function +that looks at an attribute (see Insn Attributes) named, for example, +cc. This avoids having detailed information about patterns in +two places, the md file and in NOTICE_UPDATE_CC. +

+ +
+— Macro: SELECT_CC_MODE (op, x, y)
+

Returns a mode from class MODE_CC to be used when comparison +operation code op is applied to rtx x and y. For +example, on the SPARC, SELECT_CC_MODE is defined as (see +see Jump Patterns for a description of the reason for this +definition) + +

          #define SELECT_CC_MODE(OP,X,Y) \
+            (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT          \
+             ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode)    \
+             : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS    \
+                 || GET_CODE (X) == NEG) \
+                ? CC_NOOVmode : CCmode))
+     
+

You should define this macro if and only if you define extra CC modes +in machine-modes.def. +

+ +
+— Macro: CANONICALIZE_COMPARISON (code, op0, op1)
+

On some machines not all possible comparisons are defined, but you can +convert an invalid comparison into a valid one. For example, the Alpha +does not have a GT comparison, but you can use an LT +comparison instead and swap the order of the operands. + +

On such machines, define this macro to be a C statement to do any +required conversions. code is the initial comparison code +and op0 and op1 are the left and right operands of the +comparison, respectively. You should modify code, op0, and +op1 as required. + +

GCC will not assume that the comparison resulting from this macro is +valid but will see if the resulting insn matches a pattern in the +md file. + +

You need not define this macro if it would never change the comparison +code or operands. +

+ +
+— Macro: REVERSIBLE_CC_MODE (mode)
+

A C expression whose value is one if it is always safe to reverse a +comparison whose mode is mode. If SELECT_CC_MODE +can ever return mode for a floating-point inequality comparison, +then REVERSIBLE_CC_MODE (mode) must be zero. + +

You need not define this macro if it would always returns zero or if the +floating-point format is anything other than IEEE_FLOAT_FORMAT. +For example, here is the definition used on the SPARC, where floating-point +inequality comparisons are always given CCFPEmode: + +

          #define REVERSIBLE_CC_MODE(MODE)  ((MODE) != CCFPEmode)
+     
+
+ +
+— Macro: REVERSE_CONDITION (code, mode)
+

A C expression whose value is reversed condition code of the code for +comparison done in CC_MODE mode. The macro is used only in case +REVERSIBLE_CC_MODE (mode) is nonzero. Define this macro in case +machine has some non-standard way how to reverse certain conditionals. For +instance in case all floating point conditions are non-trapping, compiler may +freely convert unordered compares to ordered one. Then definition may look +like: + +

          #define REVERSE_CONDITION(CODE, MODE) \
+             ((MODE) != CCFPmode ? reverse_condition (CODE) \
+              : reverse_condition_maybe_unordered (CODE))
+     
+
+ +
+— Macro: REVERSE_CONDEXEC_PREDICATES_P (op1, op2)
+

A C expression that returns true if the conditional execution predicate +op1, a comparison operation, is the inverse of op2 and vice +versa. Define this to return 0 if the target has conditional execution +predicates that cannot be reversed safely. There is no need to validate +that the arguments of op1 and op2 are the same, this is done separately. +If no expansion is specified, this macro is defined as follows: + +

          #define REVERSE_CONDEXEC_PREDICATES_P (x, y) \
+             (GET_CODE ((x)) == reversed_comparison_code ((y), NULL))
+     
+
+ +
+— Target Hook: bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *, unsigned int *)
+

On targets which do not use (cc0), and which use a hard +register rather than a pseudo-register to hold condition codes, the +regular CSE passes are often not able to identify cases in which the +hard register is set to a common value. Use this hook to enable a +small pass which optimizes such cases. This hook should return true +to enable this pass, and it should set the integers to which its +arguments point to the hard register numbers used for condition codes. +When there is only one such register, as is true on most systems, the +integer pointed to by the second argument should be set to +INVALID_REGNUM. + +

The default version of this hook returns false. +

+ +
+— Target Hook: enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum machine_mode, enum machine_mode)
+

On targets which use multiple condition code modes in class +MODE_CC, it is sometimes the case that a comparison can be +validly done in more than one mode. On such a system, define this +target hook to take two mode arguments and to return a mode in which +both comparisons may be validly done. If there is no such mode, +return VOIDmode. + +

The default version of this hook checks whether the modes are the +same. If they are, it returns that mode. If they are different, it +returns VOIDmode. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conditional-Execution.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conditional-Execution.html new file mode 100644 index 0000000..ffa56b6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conditional-Execution.html @@ -0,0 +1,126 @@ + + +Conditional Execution - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Insn Attributes, +Up: Machine Desc +



+
+ +

14.20 Conditional Execution

+ +

+A number of architectures provide for some form of conditional +execution, or predication. The hallmark of this feature is the +ability to nullify most of the instructions in the instruction set. +When the instruction set is large and not entirely symmetric, it +can be quite tedious to describe these forms directly in the +.md file. An alternative is the define_cond_exec template. + +

+

     (define_cond_exec
+       [predicate-pattern]
+       "condition"
+       "output-template")
+
+

predicate-pattern is the condition that must be true for the +insn to be executed at runtime and should match a relational operator. +One can use match_operator to match several relational operators +at once. Any match_operand operands must have no more than one +alternative. + +

condition is a C expression that must be true for the generated +pattern to match. + +

output-template is a string similar to the define_insn +output template (see Output Template), except that the * +and @ special cases do not apply. This is only useful if the +assembly text for the predicate is a simple prefix to the main insn. +In order to handle the general case, there is a global variable +current_insn_predicate that will contain the entire predicate +if the current insn is predicated, and will otherwise be NULL. + +

When define_cond_exec is used, an implicit reference to +the predicable instruction attribute is made. +See Insn Attributes. This attribute must be boolean (i.e. have +exactly two elements in its list-of-values). Further, it must +not be used with complex expressions. That is, the default and all +uses in the insns must be a simple constant, not dependent on the +alternative or anything else. + +

For each define_insn for which the predicable +attribute is true, a new define_insn pattern will be +generated that matches a predicated version of the instruction. +For example, + +

     (define_insn "addsi"
+       [(set (match_operand:SI 0 "register_operand" "r")
+             (plus:SI (match_operand:SI 1 "register_operand" "r")
+                      (match_operand:SI 2 "register_operand" "r")))]
+       "test1"
+       "add %2,%1,%0")
+     
+     (define_cond_exec
+       [(ne (match_operand:CC 0 "register_operand" "c")
+            (const_int 0))]
+       "test2"
+       "(%0)")
+
+

generates a new pattern + +

     (define_insn ""
+       [(cond_exec
+          (ne (match_operand:CC 3 "register_operand" "c") (const_int 0))
+          (set (match_operand:SI 0 "register_operand" "r")
+               (plus:SI (match_operand:SI 1 "register_operand" "r")
+                        (match_operand:SI 2 "register_operand" "r"))))]
+       "(test2) && (test1)"
+       "(%3) add %2,%1,%0")
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conditional-Expressions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conditional-Expressions.html new file mode 100644 index 0000000..3d54884 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conditional-Expressions.html @@ -0,0 +1,77 @@ + + +Conditional Expressions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Compound Lvalues, +Up: GIMPLE Expressions +



+
+ +
10.2.3.3 Conditional Expressions
+ +

+A C ?: expression is converted into an if statement with +each branch assigning to the same temporary. So, + +

       a = b ? c : d;
+
+

becomes +

       if (b)
+         T1 = c;
+       else
+         T1 = d;
+       a = T1;
+
+

Tree level if-conversion pass re-introduces ?: expression, if appropriate. +It is used to vectorize loops with conditions using vector conditional operations. + +

Note that in GIMPLE, if statements are also represented using +COND_EXPR, as described below. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Config-Fragments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Config-Fragments.html new file mode 100644 index 0000000..273cfc0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Config-Fragments.html @@ -0,0 +1,81 @@ + + +Config Fragments - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: Configuration +



+
+ +
6.3.2.1 Scripts Used by configure
+ +

configure uses some other scripts to help in its work: + +

    +
  • The standard GNU config.sub and config.guess +files, kept in the top level directory, are used. FIXME: when is the +config.guess file in the gcc directory (that just calls +the top level one) used? + +
  • The file config.gcc is used to handle configuration +specific to the particular target machine. The file +config.build is used to handle configuration specific to the +particular build machine. The file config.host is used to handle +configuration specific to the particular host machine. (In general, +these should only be used for features that cannot reasonably be tested in +Autoconf feature tests.) +See The config.build; config.host; and config.gcc Files, for details of the contents of these files. + +
  • Each language subdirectory has a file +language/config-lang.in that is used for +front-end-specific configuration. See The Front End config-lang.in File, for details of this file. + +
  • A helper script configure.frag is used as part of +creating the output of configure. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configuration-Files.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configuration-Files.html new file mode 100644 index 0000000..86855c2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configuration-Files.html @@ -0,0 +1,105 @@ + + +Configuration Files - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: System Config, +Up: Configuration +



+
+ +
6.3.2.3 Files Created by configure
+ +

Here we spell out what files will be set up by configure in the +gcc directory. Some other files are created as temporary files +in the configuration process, and are not used in the subsequent +build; these are not documented. + +

    +
  • Makefile is constructed from Makefile.in, together with +the host and target fragments (see Makefile Fragments) t-target and x-host from +config, if any, and language Makefile fragments +language/Make-lang.in. +
  • auto-host.h contains information about the host machine +determined by configure. If the host machine is different from +the build machine, then auto-build.h is also created, +containing such information about the build machine. +
  • config.status is a script that may be run to recreate the +current configuration. +
  • configargs.h is a header containing details of the arguments +passed to configure to configure GCC, and of the thread model +used. +
  • cstamp-h is used as a timestamp. +
  • fixinc/Makefile is constructed from fixinc/Makefile.in. +
  • gccbug, a script for reporting bugs in GCC, is constructed from +gccbug.in. +
  • intl/Makefile is constructed from intl/Makefile.in. +
  • If a language config-lang.in file (see The Front End config-lang.in File) sets outputs, then +the files listed in outputs there are also generated. +
+ +

The following configuration headers are created from the Makefile, +using mkconfig.sh, rather than directly by configure. +config.h, bconfig.h and tconfig.h all contain the +xm-machine.h header, if any, appropriate to the host, +build and target machines respectively, the configuration headers for +the target, and some definitions; for the host and build machines, +these include the autoconfigured headers generated by +configure. The other configuration headers are determined by +config.gcc. They also contain the typedefs for rtx, +rtvec and tree. + +

    +
  • config.h, for use in programs that run on the host machine. +
  • bconfig.h, for use in programs that run on the build machine. +
  • tconfig.h, for use in programs and libraries for the target +machine. +
  • tm_p.h, which includes the header machine-protos.h +that contains prototypes for functions in the target .c file. +FIXME: why is such a separate header necessary? +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configuration.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configuration.html new file mode 100644 index 0000000..4d988e9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configuration.html @@ -0,0 +1,72 @@ + + +Configuration - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Subdirectories, +Up: gcc Directory +



+
+ +

6.3.2 Configuration in the gcc Directory

+ +

The gcc directory is configured with an Autoconf-generated +script configure. The configure script is generated +from configure.ac and aclocal.m4. From the files +configure.ac and acconfig.h, Autoheader generates the +file config.in. The file cstamp-h.in is used as a +timestamp. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configure-Terms.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configure-Terms.html new file mode 100644 index 0000000..40d9d72 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Configure-Terms.html @@ -0,0 +1,110 @@ + + +Configure Terms - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Source Tree +



+
+ +

6.1 Configure Terms and History

+ +

+The configure and build process has a long and colorful history, and can +be confusing to anyone who doesn't know why things are the way they are. +While there are other documents which describe the configuration process +in detail, here are a few things that everyone working on GCC should +know. + +

There are three system names that the build knows about: the machine you +are building on (build), the machine that you are building for +(host), and the machine that GCC will produce code for +(target). When you configure GCC, you specify these with +--build=, --host=, and --target=. + +

Specifying the host without specifying the build should be avoided, as +configure may (and once did) assume that the host you specify +is also the build, which may not be true. + +

If build, host, and target are all the same, this is called a +native. If build and host are the same but target is different, +this is called a cross. If build, host, and target are all +different this is called a canadian (for obscure reasons dealing +with Canada's political party and the background of the person working +on the build at that time). If host and target are the same, but build +is different, you are using a cross-compiler to build a native for a +different system. Some people call this a host-x-host, +crossed native, or cross-built native. If build and target +are the same, but host is different, you are using a cross compiler to +build a cross compiler that produces code for the machine you're +building on. This is rare, so there is no common way of describing it. +There is a proposal to call this a crossback. + +

If build and host are the same, the GCC you are building will also be +used to build the target libraries (like libstdc++). If build and host +are different, you must have already built and installed a cross +compiler that will be used to build the target libraries (if you +configured with --target=foo-bar, this compiler will be called +foo-bar-gcc). + +

In the case of target libraries, the machine you're building for is the +machine you specified with --target. So, build is the machine +you're building on (no change there), host is the machine you're +building for (the target libraries are built for the target, so host is +the target you specified), and target doesn't apply (because you're not +building a compiler, you're building libraries). The configure/make +process will adjust these variables as needed. It also sets +$with_cross_host to the original --host value in case you +need it. + +

The libiberty support library is built up to three times: once +for the host, once for the target (even if they are the same), and once +for the build if build and host are different. This allows it to be +used by all programs which are generated in the course of the build +process. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constant-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constant-Attributes.html new file mode 100644 index 0000000..4d811d9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constant-Attributes.html @@ -0,0 +1,82 @@ + + +Constant Attributes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Insn Lengths, +Up: Insn Attributes +



+
+ +

14.19.6 Constant Attributes

+ +

+A special form of define_attr, where the expression for the +default value is a const expression, indicates an attribute that +is constant for a given run of the compiler. Constant attributes may be +used to specify which variety of processor is used. For example, + +

     (define_attr "cpu" "m88100,m88110,m88000"
+      (const
+       (cond [(symbol_ref "TARGET_88100") (const_string "m88100")
+              (symbol_ref "TARGET_88110") (const_string "m88110")]
+             (const_string "m88000"))))
+     
+     (define_attr "memory" "fast,slow"
+      (const
+       (if_then_else (symbol_ref "TARGET_FAST_MEM")
+                     (const_string "fast")
+                     (const_string "slow"))))
+
+

The routine generated for constant attributes has no parameters as it +does not depend on any particular insn. RTL expressions used to define +the value of a constant attribute may use the symbol_ref form, +but may not use either the match_operand form or eq_attr +forms involving insn attributes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constant-Definitions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constant-Definitions.html new file mode 100644 index 0000000..f2b60d7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constant-Definitions.html @@ -0,0 +1,102 @@ + + +Constant Definitions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Conditional Execution, +Up: Machine Desc +



+
+ +

14.21 Constant Definitions

+ +

+Using literal constants inside instruction patterns reduces legibility and +can be a maintenance problem. + +

To overcome this problem, you may use the define_constants +expression. It contains a vector of name-value pairs. From that +point on, wherever any of the names appears in the MD file, it is as +if the corresponding value had been written instead. You may use +define_constants multiple times; each appearance adds more +constants to the table. It is an error to redefine a constant with +a different value. + +

To come back to the a29k load multiple example, instead of + +

     (define_insn ""
+       [(match_parallel 0 "load_multiple_operation"
+          [(set (match_operand:SI 1 "gpc_reg_operand" "=r")
+                (match_operand:SI 2 "memory_operand" "m"))
+           (use (reg:SI 179))
+           (clobber (reg:SI 179))])]
+       ""
+       "loadm 0,0,%1,%2")
+
+

You could write: + +

     (define_constants [
+         (R_BP 177)
+         (R_FC 178)
+         (R_CR 179)
+         (R_Q  180)
+     ])
+     
+     (define_insn ""
+       [(match_parallel 0 "load_multiple_operation"
+          [(set (match_operand:SI 1 "gpc_reg_operand" "=r")
+                (match_operand:SI 2 "memory_operand" "m"))
+           (use (reg:SI R_CR))
+           (clobber (reg:SI R_CR))])]
+       ""
+       "loadm 0,0,%1,%2")
+
+

The constants that are defined with a define_constant are also output +in the insn-codes.h header file as #defines. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constants.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constants.html new file mode 100644 index 0000000..bdeea1e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constants.html @@ -0,0 +1,187 @@ + + +Constants - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Machine Modes, +Up: RTL +



+
+ +

12.7 Constant Expression Types

+ +

+The simplest RTL expressions are those that represent constant values. + + + +

(const_int i)
This type of expression represents the integer value i. i +is customarily accessed with the macro INTVAL as in +INTVAL (exp), which is equivalent to XWINT (exp, 0). + +

Constants generated for modes with fewer bits than HOST_WIDE_INT +must be sign extended to full width (e.g., with gen_int_mode). + +

There is only one expression object for the integer value zero; it is +the value of the variable const0_rtx. Likewise, the only +expression for integer value one is found in const1_rtx, the only +expression for integer value two is found in const2_rtx, and the +only expression for integer value negative one is found in +constm1_rtx. Any attempt to create an expression of code +const_int and value zero, one, two or negative one will return +const0_rtx, const1_rtx, const2_rtx or +constm1_rtx as appropriate. + +

Similarly, there is only one object for the integer whose value is +STORE_FLAG_VALUE. It is found in const_true_rtx. If +STORE_FLAG_VALUE is one, const_true_rtx and +const1_rtx will point to the same object. If +STORE_FLAG_VALUE is −1, const_true_rtx and +constm1_rtx will point to the same object. + +


(const_double:m addr i0 i1 ...)
Represents either a floating-point constant of mode m or an +integer constant too large to fit into HOST_BITS_PER_WIDE_INT +bits but small enough to fit within twice that number of bits (GCC +does not provide a mechanism to represent even larger constants). In +the latter case, m will be VOIDmode. + +


(const_fixed:m addr)
Represents a fixed-point constant of mode m. +The data structure, which contains data with the size of two +HOST_BITS_PER_WIDE_INT and the associated fixed-point mode, +is access with the macro CONST_FIXED_VALUE. The high part of data +is accessed with CONST_FIXED_VALUE_HIGH; the low part is accessed +with CONST_FIXED_VALUE_LOW. + +


(const_vector:m [x0 x1 ...])
Represents a vector constant. The square brackets stand for the vector +containing the constant elements. x0, x1 and so on are +the const_int or const_double elements. + +

The number of units in a const_vector is obtained with the macro +CONST_VECTOR_NUNITS as in CONST_VECTOR_NUNITS (v). + +

Individual elements in a vector constant are accessed with the macro +CONST_VECTOR_ELT as in CONST_VECTOR_ELT (v, n) +where v is the vector constant and n is the element +desired. + +

addr is used to contain the mem expression that corresponds +to the location in memory that at which the constant can be found. If +it has not been allocated a memory location, but is on the chain of all +const_double expressions in this compilation (maintained using an +undisplayed field), addr contains const0_rtx. If it is not +on the chain, addr contains cc0_rtx. addr is +customarily accessed with the macro CONST_DOUBLE_MEM and the +chain field via CONST_DOUBLE_CHAIN. + +

If m is VOIDmode, the bits of the value are stored in +i0 and i1. i0 is customarily accessed with the macro +CONST_DOUBLE_LOW and i1 with CONST_DOUBLE_HIGH. + +

If the constant is floating point (regardless of its precision), then +the number of integers used to store the value depends on the size of +REAL_VALUE_TYPE (see Floating Point). The integers +represent a floating point number, but not precisely in the target +machine's or host machine's floating point format. To convert them to +the precise bit pattern used by the target machine, use the macro +REAL_VALUE_TO_TARGET_DOUBLE and friends (see Data Output). + +

The macro CONST0_RTX (mode) refers to an expression with +value 0 in mode mode. If mode mode is of mode class +MODE_INT, it returns const0_rtx. If mode mode is of +mode class MODE_FLOAT, it returns a CONST_DOUBLE +expression in mode mode. Otherwise, it returns a +CONST_VECTOR expression in mode mode. Similarly, the macro +CONST1_RTX (mode) refers to an expression with value 1 in +mode mode and similarly for CONST2_RTX. The +CONST1_RTX and CONST2_RTX macros are undefined +for vector modes. + +


(const_string str)
Represents a constant string with value str. Currently this is +used only for insn attributes (see Insn Attributes) since constant +strings in C are placed in memory. + +


(symbol_ref:mode symbol)
Represents the value of an assembler label for data. symbol is +a string that describes the name of the assembler label. If it starts +with a *, the label is the rest of symbol not including +the *. Otherwise, the label is symbol, usually prefixed +with _. + +

The symbol_ref contains a mode, which is usually Pmode. +Usually that is the only mode for which a symbol is directly valid. + +


(label_ref:mode label)
Represents the value of an assembler label for code. It contains one +operand, an expression, which must be a code_label or a note +of type NOTE_INSN_DELETED_LABEL that appears in the instruction +sequence to identify the place where the label should go. + +

The reason for using a distinct expression type for code label +references is so that jump optimization can distinguish them. + +

The label_ref contains a mode, which is usually Pmode. +Usually that is the only mode for which a label is directly valid. + +

(const:m exp)
Represents a constant that is the result of an assembly-time +arithmetic computation. The operand, exp, is an expression that +contains only constants (const_int, symbol_ref and +label_ref expressions) combined with plus and +minus. However, not all combinations are valid, since the +assembler cannot do arbitrary arithmetic on relocatable symbols. + +

m should be Pmode. + +


(high:m exp)
Represents the high-order bits of exp, usually a +symbol_ref. The number of bits is machine-dependent and is +normally the number of bits specified in an instruction that initializes +the high order bits of a register. It is used with lo_sum to +represent the typical two-instruction sequence used in RISC machines to +reference a global memory location. + +

m should be Pmode. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constraints.html new file mode 100644 index 0000000..51dd7b9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Constraints.html @@ -0,0 +1,80 @@ + + +Constraints - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Predicates, +Up: Machine Desc +



+
+ +

14.8 Operand Constraints

+ +

+Each match_operand in an instruction pattern can specify +constraints for the operands allowed. The constraints allow you to +fine-tune matching within the set of operands allowed by the +predicate. + +

Constraints can say whether +an operand may be in a register, and which kinds of register; whether the +operand can be a memory reference, and which kinds of address; whether the +operand may be an immediate constant, and which possible values it may +have. Constraints can also require two operands to match. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Containers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Containers.html new file mode 100644 index 0000000..cf4b0db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Containers.html @@ -0,0 +1,79 @@ + + +Containers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Identifiers, +Up: Tree overview +



+
+ +

9.2.3 Containers

+ +

+Two common container data structures can be represented directly with +tree nodes. A TREE_LIST is a singly linked list containing two +trees per node. These are the TREE_PURPOSE and TREE_VALUE +of each node. (Often, the TREE_PURPOSE contains some kind of +tag, or additional information, while the TREE_VALUE contains the +majority of the payload. In other cases, the TREE_PURPOSE is +simply NULL_TREE, while in still others both the +TREE_PURPOSE and TREE_VALUE are of equal stature.) Given +one TREE_LIST node, the next node is found by following the +TREE_CHAIN. If the TREE_CHAIN is NULL_TREE, then +you have reached the end of the list. + +

A TREE_VEC is a simple vector. The TREE_VEC_LENGTH is an +integer (not a tree) giving the number of nodes in the vector. The +nodes themselves are accessed using the TREE_VEC_ELT macro, which +takes two arguments. The first is the TREE_VEC in question; the +second is an integer indicating which element in the vector is desired. +The elements are indexed from zero. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Contributing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Contributing.html new file mode 100644 index 0000000..2d84fde --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Contributing.html @@ -0,0 +1,77 @@ + + +Contributing - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

GNU Compiler Collection (GCC) Internals

+
+

+Next: , +Previous: Top, +Up: Top +



+
+ +

1 Contributing to GCC Development

+ +

If you would like to help pretest GCC releases to assure they work well, +current development sources are available by SVN (see +http://gcc.gnu.org/svn.html). Source and binary snapshots are +also available for FTP; see http://gcc.gnu.org/snapshots.html. + +

If you would like to work on improvements to GCC, please read the +advice at these URLs: + +

     http://gcc.gnu.org/contribute.html
+     http://gcc.gnu.org/contributewhy.html
+
+

for information on how to make useful contributions and avoid +duplication of effort. Suggested projects are listed at +http://gcc.gnu.org/projects/. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Contributors.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Contributors.html new file mode 100644 index 0000000..a729418 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Contributors.html @@ -0,0 +1,1210 @@ + + +Contributors - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: GNU Free Documentation License, +Up: Top +



+
+ +

Contributors to GCC

+ +

+The GCC project would like to thank its many contributors. Without them the +project would not have been nearly as successful as it has been. Any omissions +in this list are accidental. Feel free to contact +law@redhat.com or gerald@pfeifer.com if you have been left +out or some of your contributions are not listed. Please keep this list in +alphabetical order. + +

    +
  • Analog Devices helped implement the support for complex data types +and iterators. + +
  • John David Anglin for threading-related fixes and improvements to +libstdc++-v3, and the HP-UX port. + +
  • James van Artsdalen wrote the code that makes efficient use of +the Intel 80387 register stack. + +
  • Abramo and Roberto Bagnara for the SysV68 Motorola 3300 Delta Series +port. + +
  • Alasdair Baird for various bug fixes. + +
  • Giovanni Bajo for analyzing lots of complicated C++ problem reports. + +
  • Peter Barada for his work to improve code generation for new +ColdFire cores. + +
  • Gerald Baumgartner added the signature extension to the C++ front end. + +
  • Godmar Back for his Java improvements and encouragement. + +
  • Scott Bambrough for help porting the Java compiler. + +
  • Wolfgang Bangerth for processing tons of bug reports. + +
  • Jon Beniston for his Microsoft Windows port of Java. + +
  • Daniel Berlin for better DWARF2 support, faster/better optimizations, +improved alias analysis, plus migrating GCC to Bugzilla. + +
  • Geoff Berry for his Java object serialization work and various patches. + +
  • Uros Bizjak for the implementation of x87 math built-in functions and +for various middle end and i386 back end improvements and bug fixes. + +
  • Eric Blake for helping to make GCJ and libgcj conform to the +specifications. + +
  • Janne Blomqvist for contributions to GNU Fortran. + +
  • Segher Boessenkool for various fixes. + +
  • Hans-J. Boehm for his garbage collector, IA-64 libffi port, and other Java work. + +
  • Neil Booth for work on cpplib, lang hooks, debug hooks and other +miscellaneous clean-ups. + +
  • Steven Bosscher for integrating the GNU Fortran front end into GCC and for +contributing to the tree-ssa branch. + +
  • Eric Botcazou for fixing middle- and backend bugs left and right. + +
  • Per Bothner for his direction via the steering committee and various +improvements to the infrastructure for supporting new languages. Chill +front end implementation. Initial implementations of +cpplib, fix-header, config.guess, libio, and past C++ library (libg++) +maintainer. Dreaming up, designing and implementing much of GCJ. + +
  • Devon Bowen helped port GCC to the Tahoe. + +
  • Don Bowman for mips-vxworks contributions. + +
  • Dave Brolley for work on cpplib and Chill. + +
  • Paul Brook for work on the ARM architecture and maintaining GNU Fortran. + +
  • Robert Brown implemented the support for Encore 32000 systems. + +
  • Christian Bruel for improvements to local store elimination. + +
  • Herman A.J. ten Brugge for various fixes. + +
  • Joerg Brunsmann for Java compiler hacking and help with the GCJ FAQ. + +
  • Joe Buck for his direction via the steering committee. + +
  • Craig Burley for leadership of the G77 Fortran effort. + +
  • Stephan Buys for contributing Doxygen notes for libstdc++. + +
  • Paolo Carlini for libstdc++ work: lots of efficiency improvements to +the C++ strings, streambufs and formatted I/O, hard detective work on +the frustrating localization issues, and keeping up with the problem reports. + +
  • John Carr for his alias work, SPARC hacking, infrastructure improvements, +previous contributions to the steering committee, loop optimizations, etc. + +
  • Stephane Carrez for 68HC11 and 68HC12 ports. + +
  • Steve Chamberlain for support for the Renesas SH and H8 processors +and the PicoJava processor, and for GCJ config fixes. + +
  • Glenn Chambers for help with the GCJ FAQ. + +
  • John-Marc Chandonia for various libgcj patches. + +
  • Scott Christley for his Objective-C contributions. + +
  • Eric Christopher for his Java porting help and clean-ups. + +
  • Branko Cibej for more warning contributions. + +
  • The GNU Classpath project +for all of their merged runtime code. + +
  • Nick Clifton for arm, mcore, fr30, v850, m32r work, --help, and +other random hacking. + +
  • Michael Cook for libstdc++ cleanup patches to reduce warnings. + +
  • R. Kelley Cook for making GCC buildable from a read-only directory as +well as other miscellaneous build process and documentation clean-ups. + +
  • Ralf Corsepius for SH testing and minor bug fixing. + +
  • Stan Cox for care and feeding of the x86 port and lots of behind +the scenes hacking. + +
  • Alex Crain provided changes for the 3b1. + +
  • Ian Dall for major improvements to the NS32k port. + +
  • Paul Dale for his work to add uClinux platform support to the +m68k backend. + +
  • Dario Dariol contributed the four varieties of sample programs +that print a copy of their source. + +
  • Russell Davidson for fstream and stringstream fixes in libstdc++. + +
  • Bud Davis for work on the G77 and GNU Fortran compilers. + +
  • Mo DeJong for GCJ and libgcj bug fixes. + +
  • DJ Delorie for the DJGPP port, build and libiberty maintenance, +various bug fixes, and the M32C port. + +
  • Arnaud Desitter for helping to debug GNU Fortran. + +
  • Gabriel Dos Reis for contributions to G++, contributions and +maintenance of GCC diagnostics infrastructure, libstdc++-v3, +including valarray<>, complex<>, maintaining the numerics library +(including that pesky <limits> :-) and keeping up-to-date anything +to do with numbers. + +
  • Ulrich Drepper for his work on glibc, testing of GCC using glibc, ISO C99 +support, CFG dumping support, etc., plus support of the C++ runtime +libraries including for all kinds of C interface issues, contributing and +maintaining complex<>, sanity checking and disbursement, configuration +architecture, libio maintenance, and early math work. + +
  • Zdenek Dvorak for a new loop unroller and various fixes. + +
  • Richard Earnshaw for his ongoing work with the ARM. + +
  • David Edelsohn for his direction via the steering committee, ongoing work +with the RS6000/PowerPC port, help cleaning up Haifa loop changes, +doing the entire AIX port of libstdc++ with his bare hands, and for +ensuring GCC properly keeps working on AIX. + +
  • Kevin Ediger for the floating point formatting of num_put::do_put in +libstdc++. + +
  • Phil Edwards for libstdc++ work including configuration hackery, +documentation maintainer, chief breaker of the web pages, the occasional +iostream bug fix, and work on shared library symbol versioning. + +
  • Paul Eggert for random hacking all over GCC. + +
  • Mark Elbrecht for various DJGPP improvements, and for libstdc++ +configuration support for locales and fstream-related fixes. + +
  • Vadim Egorov for libstdc++ fixes in strings, streambufs, and iostreams. + +
  • Christian Ehrhardt for dealing with bug reports. + +
  • Ben Elliston for his work to move the Objective-C runtime into its +own subdirectory and for his work on autoconf. + +
  • Revital Eres for work on the PowerPC 750CL port. + +
  • Marc Espie for OpenBSD support. + +
  • Doug Evans for much of the global optimization framework, arc, m32r, +and SPARC work. + +
  • Christopher Faylor for his work on the Cygwin port and for caring and +feeding the gcc.gnu.org box and saving its users tons of spam. + +
  • Fred Fish for BeOS support and Ada fixes. + +
  • Ivan Fontes Garcia for the Portuguese translation of the GCJ FAQ. + +
  • Peter Gerwinski for various bug fixes and the Pascal front end. + +
  • Kaveh R. Ghazi for his direction via the steering committee, amazing +work to make -W -Wall -W* -Werror useful, and continuously +testing GCC on a plethora of platforms. Kaveh extends his gratitude to +the CAIP Center at Rutgers +University for providing him with computing resources to work on Free +Software since the late 1980s. + +
  • John Gilmore for a donation to the FSF earmarked improving GNU Java. + +
  • Judy Goldberg for c++ contributions. + +
  • Torbjorn Granlund for various fixes and the c-torture testsuite, +multiply- and divide-by-constant optimization, improved long long +support, improved leaf function register allocation, and his direction +via the steering committee. + +
  • Anthony Green for his -Os contributions and Java front end work. + +
  • Stu Grossman for gdb hacking, allowing GCJ developers to debug Java code. + +
  • Michael K. Gschwind contributed the port to the PDP-11. + +
  • Ron Guilmette implemented the protoize and unprotoize +tools, the support for Dwarf symbolic debugging information, and much of +the support for System V Release 4. He has also worked heavily on the +Intel 386 and 860 support. + +
  • Mostafa Hagog for Swing Modulo Scheduling (SMS) and post reload GCSE. + +
  • Bruno Haible for improvements in the runtime overhead for EH, new +warnings and assorted bug fixes. + +
  • Andrew Haley for his amazing Java compiler and library efforts. + +
  • Chris Hanson assisted in making GCC work on HP-UX for the 9000 series 300. + +
  • Michael Hayes for various thankless work he's done trying to get +the c30/c40 ports functional. Lots of loop and unroll improvements and +fixes. + +
  • Dara Hazeghi for wading through myriads of target-specific bug reports. + +
  • Kate Hedstrom for staking the G77 folks with an initial testsuite. + +
  • Richard Henderson for his ongoing SPARC, alpha, ia32, and ia64 work, loop +opts, and generally fixing lots of old problems we've ignored for +years, flow rewrite and lots of further stuff, including reviewing +tons of patches. + +
  • Aldy Hernandez for working on the PowerPC port, SIMD support, and +various fixes. + +
  • Nobuyuki Hikichi of Software Research Associates, Tokyo, contributed +the support for the Sony NEWS machine. + +
  • Kazu Hirata for caring and feeding the Renesas H8/300 port and various fixes. + +
  • Katherine Holcomb for work on GNU Fortran. + +
  • Manfred Hollstein for his ongoing work to keep the m88k alive, lots +of testing and bug fixing, particularly of GCC configury code. + +
  • Steve Holmgren for MachTen patches. + +
  • Jan Hubicka for his x86 port improvements. + +
  • Falk Hueffner for working on C and optimization bug reports. + +
  • Bernardo Innocenti for his m68k work, including merging of +ColdFire improvements and uClinux support. + +
  • Christian Iseli for various bug fixes. + +
  • Kamil Iskra for general m68k hacking. + +
  • Lee Iverson for random fixes and MIPS testing. + +
  • Andreas Jaeger for testing and benchmarking of GCC and various bug fixes. + +
  • Jakub Jelinek for his SPARC work and sibling call optimizations as well +as lots of bug fixes and test cases, and for improving the Java build +system. + +
  • Janis Johnson for ia64 testing and fixes, her quality improvement +sidetracks, and web page maintenance. + +
  • Kean Johnston for SCO OpenServer support and various fixes. + +
  • Tim Josling for the sample language treelang based originally on Richard +Kenner's “toy” language. + +
  • Nicolai Josuttis for additional libstdc++ documentation. + +
  • Klaus Kaempf for his ongoing work to make alpha-vms a viable target. + +
  • Steven G. Kargl for work on GNU Fortran. + +
  • David Kashtan of SRI adapted GCC to VMS. + +
  • Ryszard Kabatek for many, many libstdc++ bug fixes and optimizations of +strings, especially member functions, and for auto_ptr fixes. + +
  • Geoffrey Keating for his ongoing work to make the PPC work for GNU/Linux +and his automatic regression tester. + +
  • Brendan Kehoe for his ongoing work with G++ and for a lot of early work +in just about every part of libstdc++. + +
  • Oliver M. Kellogg of Deutsche Aerospace contributed the port to the +MIL-STD-1750A. + +
  • Richard Kenner of the New York University Ultracomputer Research +Laboratory wrote the machine descriptions for the AMD 29000, the DEC +Alpha, the IBM RT PC, and the IBM RS/6000 as well as the support for +instruction attributes. He also made changes to better support RISC +processors including changes to common subexpression elimination, +strength reduction, function calling sequence handling, and condition +code support, in addition to generalizing the code for frame pointer +elimination and delay slot scheduling. Richard Kenner was also the +head maintainer of GCC for several years. + +
  • Mumit Khan for various contributions to the Cygwin and Mingw32 ports and +maintaining binary releases for Microsoft Windows hosts, and for massive libstdc++ +porting work to Cygwin/Mingw32. + +
  • Robin Kirkham for cpu32 support. + +
  • Mark Klein for PA improvements. + +
  • Thomas Koenig for various bug fixes. + +
  • Bruce Korb for the new and improved fixincludes code. + +
  • Benjamin Kosnik for his G++ work and for leading the libstdc++-v3 effort. + +
  • Charles LaBrec contributed the support for the Integrated Solutions +68020 system. + +
  • Asher Langton and Mike Kumbera for contributing Cray pointer support +to GNU Fortran, and for other GNU Fortran improvements. + +
  • Jeff Law for his direction via the steering committee, coordinating the +entire egcs project and GCC 2.95, rolling out snapshots and releases, +handling merges from GCC2, reviewing tons of patches that might have +fallen through the cracks else, and random but extensive hacking. + +
  • Marc Lehmann for his direction via the steering committee and helping +with analysis and improvements of x86 performance. + +
  • Victor Leikehman for work on GNU Fortran. + +
  • Ted Lemon wrote parts of the RTL reader and printer. + +
  • Kriang Lerdsuwanakij for C++ improvements including template as template +parameter support, and many C++ fixes. + +
  • Warren Levy for tremendous work on libgcj (Java Runtime Library) and +random work on the Java front end. + +
  • Alain Lichnewsky ported GCC to the MIPS CPU. + +
  • Oskar Liljeblad for hacking on AWT and his many Java bug reports and +patches. + +
  • Robert Lipe for OpenServer support, new testsuites, testing, etc. + +
  • Chen Liqin for various S+core related fixes/improvement, and for +maintaining the S+core port. + +
  • Weiwen Liu for testing and various bug fixes. + +
  • Manuel López-Ibáñez for improving -Wconversion and +many other diagnostics fixes and improvements. + +
  • Dave Love for his ongoing work with the Fortran front end and +runtime libraries. + +
  • Martin von Löwis for internal consistency checking infrastructure, +various C++ improvements including namespace support, and tons of +assistance with libstdc++/compiler merges. + +
  • H.J. Lu for his previous contributions to the steering committee, many x86 +bug reports, prototype patches, and keeping the GNU/Linux ports working. + +
  • Greg McGary for random fixes and (someday) bounded pointers. + +
  • Andrew MacLeod for his ongoing work in building a real EH system, +various code generation improvements, work on the global optimizer, etc. + +
  • Vladimir Makarov for hacking some ugly i960 problems, PowerPC hacking +improvements to compile-time performance, overall knowledge and +direction in the area of instruction scheduling, and design and +implementation of the automaton based instruction scheduler. + +
  • Bob Manson for his behind the scenes work on dejagnu. + +
  • Philip Martin for lots of libstdc++ string and vector iterator fixes and +improvements, and string clean up and testsuites. + +
  • All of the Mauve project +contributors, +for Java test code. + +
  • Bryce McKinlay for numerous GCJ and libgcj fixes and improvements. + +
  • Adam Megacz for his work on the Microsoft Windows port of GCJ. + +
  • Michael Meissner for LRS framework, ia32, m32r, v850, m88k, MIPS, +powerpc, haifa, ECOFF debug support, and other assorted hacking. + +
  • Jason Merrill for his direction via the steering committee and leading +the G++ effort. + +
  • Martin Michlmayr for testing GCC on several architectures using the +entire Debian archive. + +
  • David Miller for his direction via the steering committee, lots of +SPARC work, improvements in jump.c and interfacing with the Linux kernel +developers. + +
  • Gary Miller ported GCC to Charles River Data Systems machines. + +
  • Alfred Minarik for libstdc++ string and ios bug fixes, and turning the +entire libstdc++ testsuite namespace-compatible. + +
  • Mark Mitchell for his direction via the steering committee, mountains of +C++ work, load/store hoisting out of loops, alias analysis improvements, +ISO C restrict support, and serving as release manager for GCC 3.x. + +
  • Alan Modra for various GNU/Linux bits and testing. + +
  • Toon Moene for his direction via the steering committee, Fortran +maintenance, and his ongoing work to make us make Fortran run fast. + +
  • Jason Molenda for major help in the care and feeding of all the services +on the gcc.gnu.org (formerly egcs.cygnus.com) machine—mail, web +services, ftp services, etc etc. Doing all this work on scrap paper and +the backs of envelopes would have been... difficult. + +
  • Catherine Moore for fixing various ugly problems we have sent her +way, including the haifa bug which was killing the Alpha & PowerPC +Linux kernels. + +
  • Mike Moreton for his various Java patches. + +
  • David Mosberger-Tang for various Alpha improvements, and for the initial +IA-64 port. + +
  • Stephen Moshier contributed the floating point emulator that assists in +cross-compilation and permits support for floating point numbers wider +than 64 bits and for ISO C99 support. + +
  • Bill Moyer for his behind the scenes work on various issues. + +
  • Philippe De Muyter for his work on the m68k port. + +
  • Joseph S. Myers for his work on the PDP-11 port, format checking and ISO +C99 support, and continuous emphasis on (and contributions to) documentation. + +
  • Nathan Myers for his work on libstdc++-v3: architecture and authorship +through the first three snapshots, including implementation of locale +infrastructure, string, shadow C headers, and the initial project +documentation (DESIGN, CHECKLIST, and so forth). Later, more work on +MT-safe string and shadow headers. + +
  • Felix Natter for documentation on porting libstdc++. + +
  • Nathanael Nerode for cleaning up the configuration/build process. + +
  • NeXT, Inc. donated the front end that supports the Objective-C +language. + +
  • Hans-Peter Nilsson for the CRIS and MMIX ports, improvements to the search +engine setup, various documentation fixes and other small fixes. + +
  • Geoff Noer for his work on getting cygwin native builds working. + +
  • Diego Novillo for his work on Tree SSA, OpenMP, SPEC performance +tracking web pages and assorted fixes. + +
  • David O'Brien for the FreeBSD/alpha, FreeBSD/AMD x86-64, FreeBSD/ARM, +FreeBSD/PowerPC, and FreeBSD/SPARC64 ports and related infrastructure +improvements. + +
  • Alexandre Oliva for various build infrastructure improvements, scripts and +amazing testing work, including keeping libtool issues sane and happy. + +
  • Stefan Olsson for work on mt_alloc. + +
  • Melissa O'Neill for various NeXT fixes. + +
  • Rainer Orth for random MIPS work, including improvements to GCC's o32 +ABI support, improvements to dejagnu's MIPS support, Java configuration +clean-ups and porting work, etc. + +
  • Hartmut Penner for work on the s390 port. + +
  • Paul Petersen wrote the machine description for the Alliant FX/8. + +
  • Alexandre Petit-Bianco for implementing much of the Java compiler and +continued Java maintainership. + +
  • Matthias Pfaller for major improvements to the NS32k port. + +
  • Gerald Pfeifer for his direction via the steering committee, pointing +out lots of problems we need to solve, maintenance of the web pages, and +taking care of documentation maintenance in general. + +
  • Andrew Pinski for processing bug reports by the dozen. + +
  • Ovidiu Predescu for his work on the Objective-C front end and runtime +libraries. + +
  • Jerry Quinn for major performance improvements in C++ formatted I/O. + +
  • Ken Raeburn for various improvements to checker, MIPS ports and various +cleanups in the compiler. + +
  • Rolf W. Rasmussen for hacking on AWT. + +
  • David Reese of Sun Microsystems contributed to the Solaris on PowerPC +port. + +
  • Volker Reichelt for keeping up with the problem reports. + +
  • Joern Rennecke for maintaining the sh port, loop, regmove & reload +hacking. + +
  • Loren J. Rittle for improvements to libstdc++-v3 including the FreeBSD +port, threading fixes, thread-related configury changes, critical +threading documentation, and solutions to really tricky I/O problems, +as well as keeping GCC properly working on FreeBSD and continuous testing. + +
  • Craig Rodrigues for processing tons of bug reports. + +
  • Ola Rönnerup for work on mt_alloc. + +
  • Gavin Romig-Koch for lots of behind the scenes MIPS work. + +
  • David Ronis inspired and encouraged Craig to rewrite the G77 +documentation in texinfo format by contributing a first pass at a +translation of the old g77-0.5.16/f/DOC file. + +
  • Ken Rose for fixes to GCC's delay slot filling code. + +
  • Paul Rubin wrote most of the preprocessor. + +
  • Pétur Runólfsson for major performance improvements in C++ formatted I/O and +large file support in C++ filebuf. + +
  • Chip Salzenberg for libstdc++ patches and improvements to locales, traits, +Makefiles, libio, libtool hackery, and “long long” support. + +
  • Juha Sarlin for improvements to the H8 code generator. + +
  • Greg Satz assisted in making GCC work on HP-UX for the 9000 series 300. + +
  • Roger Sayle for improvements to constant folding and GCC's RTL optimizers +as well as for fixing numerous bugs. + +
  • Bradley Schatz for his work on the GCJ FAQ. + +
  • Peter Schauer wrote the code to allow debugging to work on the Alpha. + +
  • William Schelter did most of the work on the Intel 80386 support. + +
  • Tobias Schlüter for work on GNU Fortran. + +
  • Bernd Schmidt for various code generation improvements and major +work in the reload pass as well a serving as release manager for +GCC 2.95.3. + +
  • Peter Schmid for constant testing of libstdc++—especially application +testing, going above and beyond what was requested for the release +criteria—and libstdc++ header file tweaks. + +
  • Jason Schroeder for jcf-dump patches. + +
  • Andreas Schwab for his work on the m68k port. + +
  • Lars Segerlund for work on GNU Fortran. + +
  • Joel Sherrill for his direction via the steering committee, RTEMS +contributions and RTEMS testing. + +
  • Nathan Sidwell for many C++ fixes/improvements. + +
  • Jeffrey Siegal for helping RMS with the original design of GCC, some +code which handles the parse tree and RTL data structures, constant +folding and help with the original VAX & m68k ports. + +
  • Kenny Simpson for prompting libstdc++ fixes due to defect reports from +the LWG (thereby keeping GCC in line with updates from the ISO). + +
  • Franz Sirl for his ongoing work with making the PPC port stable +for GNU/Linux. + +
  • Andrey Slepuhin for assorted AIX hacking. + +
  • Trevor Smigiel for contributing the SPU port. + +
  • Christopher Smith did the port for Convex machines. + +
  • Danny Smith for his major efforts on the Mingw (and Cygwin) ports. + +
  • Randy Smith finished the Sun FPA support. + +
  • Scott Snyder for queue, iterator, istream, and string fixes and libstdc++ +testsuite entries. Also for providing the patch to G77 to add +rudimentary support for INTEGER*1, INTEGER*2, and +LOGICAL*1. + +
  • Brad Spencer for contributions to the GLIBCPP_FORCE_NEW technique. + +
  • Richard Stallman, for writing the original GCC and launching the GNU project. + +
  • Jan Stein of the Chalmers Computer Society provided support for +Genix, as well as part of the 32000 machine description. + +
  • Nigel Stephens for various mips16 related fixes/improvements. + +
  • Jonathan Stone wrote the machine description for the Pyramid computer. + +
  • Graham Stott for various infrastructure improvements. + +
  • John Stracke for his Java HTTP protocol fixes. + +
  • Mike Stump for his Elxsi port, G++ contributions over the years and more +recently his vxworks contributions + +
  • Jeff Sturm for Java porting help, bug fixes, and encouragement. + +
  • Shigeya Suzuki for this fixes for the bsdi platforms. + +
  • Ian Lance Taylor for his mips16 work, general configury hacking, +fixincludes, etc. + +
  • Holger Teutsch provided the support for the Clipper CPU. + +
  • Gary Thomas for his ongoing work to make the PPC work for GNU/Linux. + +
  • Philipp Thomas for random bug fixes throughout the compiler + +
  • Jason Thorpe for thread support in libstdc++ on NetBSD. + +
  • Kresten Krab Thorup wrote the run time support for the Objective-C +language and the fantastic Java bytecode interpreter. + +
  • Michael Tiemann for random bug fixes, the first instruction scheduler, +initial C++ support, function integration, NS32k, SPARC and M88k +machine description work, delay slot scheduling. + +
  • Andreas Tobler for his work porting libgcj to Darwin. + +
  • Teemu Torma for thread safe exception handling support. + +
  • Leonard Tower wrote parts of the parser, RTL generator, and RTL +definitions, and of the VAX machine description. + +
  • Tom Tromey for internationalization support and for his many Java +contributions and libgcj maintainership. + +
  • Lassi Tuura for improvements to config.guess to determine HP processor +types. + +
  • Petter Urkedal for libstdc++ CXXFLAGS, math, and algorithms fixes. + +
  • Andy Vaught for the design and initial implementation of the GNU Fortran +front end. + +
  • Brent Verner for work with the libstdc++ cshadow files and their +associated configure steps. + +
  • Todd Vierling for contributions for NetBSD ports. + +
  • Jonathan Wakely for contributing libstdc++ Doxygen notes and XHTML +guidance. + +
  • Dean Wakerley for converting the install documentation from HTML to texinfo +in time for GCC 3.0. + +
  • Krister Walfridsson for random bug fixes. + +
  • Feng Wang for contributions to GNU Fortran. + +
  • Stephen M. Webb for time and effort on making libstdc++ shadow files +work with the tricky Solaris 8+ headers, and for pushing the build-time +header tree. + +
  • John Wehle for various improvements for the x86 code generator, +related infrastructure improvements to help x86 code generation, +value range propagation and other work, WE32k port. + +
  • Ulrich Weigand for work on the s390 port. + +
  • Zack Weinberg for major work on cpplib and various other bug fixes. + +
  • Matt Welsh for help with Linux Threads support in GCJ. + +
  • Urban Widmark for help fixing java.io. + +
  • Mark Wielaard for new Java library code and his work integrating with +Classpath. + +
  • Dale Wiles helped port GCC to the Tahoe. + +
  • Bob Wilson from Tensilica, Inc. for the Xtensa port. + +
  • Jim Wilson for his direction via the steering committee, tackling hard +problems in various places that nobody else wanted to work on, strength +reduction and other loop optimizations. + +
  • Paul Woegerer and Tal Agmon for the CRX port. + +
  • Carlo Wood for various fixes. + +
  • Tom Wood for work on the m88k port. + +
  • Canqun Yang for work on GNU Fortran. + +
  • Masanobu Yuhara of Fujitsu Laboratories implemented the machine +description for the Tron architecture (specifically, the Gmicro). + +
  • Kevin Zachmann helped port GCC to the Tahoe. + +
  • Ayal Zaks for Swing Modulo Scheduling (SMS). + +
  • Xiaoqiang Zhang for work on GNU Fortran. + +
  • Gilles Zunino for help porting Java to Irix. + +
+ +

The following people are recognized for their contributions to GNAT, +the Ada front end of GCC: +

    +
  • Bernard Banner + +
  • Romain Berrendonner + +
  • Geert Bosch + +
  • Emmanuel Briot + +
  • Joel Brobecker + +
  • Ben Brosgol + +
  • Vincent Celier + +
  • Arnaud Charlet + +
  • Chien Chieng + +
  • Cyrille Comar + +
  • Cyrille Crozes + +
  • Robert Dewar + +
  • Gary Dismukes + +
  • Robert Duff + +
  • Ed Falis + +
  • Ramon Fernandez + +
  • Sam Figueroa + +
  • Vasiliy Fofanov + +
  • Michael Friess + +
  • Franco Gasperoni + +
  • Ted Giering + +
  • Matthew Gingell + +
  • Laurent Guerby + +
  • Jerome Guitton + +
  • Olivier Hainque + +
  • Jerome Hugues + +
  • Hristian Kirtchev + +
  • Jerome Lambourg + +
  • Bruno Leclerc + +
  • Albert Lee + +
  • Sean McNeil + +
  • Javier Miranda + +
  • Laurent Nana + +
  • Pascal Obry + +
  • Dong-Ik Oh + +
  • Laurent Pautet + +
  • Brett Porter + +
  • Thomas Quinot + +
  • Nicolas Roche + +
  • Pat Rogers + +
  • Jose Ruiz + +
  • Douglas Rupp + +
  • Sergey Rybin + +
  • Gail Schenker + +
  • Ed Schonberg + +
  • Nicolas Setton + +
  • Samuel Tardieu + +
+ +

The following people are recognized for their contributions of new +features, bug reports, testing and integration of classpath/libgcj for +GCC version 4.1: +

    +
  • Lillian Angel for JTree implementation and lots Free Swing +additions and bug fixes. + +
  • Wolfgang Baer for GapContent bug fixes. + +
  • Anthony Balkissoon for JList, Free Swing 1.5 updates and mouse event +fixes, lots of Free Swing work including JTable editing. + +
  • Stuart Ballard for RMI constant fixes. + +
  • Goffredo Baroncelli for HTTPURLConnection fixes. + +
  • Gary Benson for MessageFormat fixes. + +
  • Daniel Bonniot for Serialization fixes. + +
  • Chris Burdess for lots of gnu.xml and http protocol fixes, StAX +and DOM xml:id support. + +
  • Ka-Hing Cheung for TreePath and TreeSelection fixes. + +
  • Archie Cobbs for build fixes, VM interface updates, +URLClassLoader updates. + +
  • Kelley Cook for build fixes. + +
  • Martin Cordova for Suggestions for better SocketTimeoutException. + +
  • David Daney for BitSet bug fixes, HttpURLConnection +rewrite and improvements. + +
  • Thomas Fitzsimmons for lots of upgrades to the gtk+ AWT and Cairo 2D +support. Lots of imageio framework additions, lots of AWT and Free +Swing bug fixes. + +
  • Jeroen Frijters for ClassLoader and nio cleanups, serialization fixes, +better Proxy support, bug fixes and IKVM integration. + +
  • Santiago Gala for AccessControlContext fixes. + +
  • Nicolas Geoffray for VMClassLoader and AccessController +improvements. + +
  • David Gilbert for basic and metal icon and plaf support +and lots of documenting, Lots of Free Swing and metal theme +additions. MetalIconFactory implementation. + +
  • Anthony Green for MIDI framework, ALSA and DSSI +providers. + +
  • Andrew Haley for Serialization and URLClassLoader fixes, +gcj build speedups. + +
  • Kim Ho for JFileChooser implementation. + +
  • Andrew John Hughes for Locale and net fixes, URI RFC2986 +updates, Serialization fixes, Properties XML support and +generic branch work, VMIntegration guide update. + +
  • Bastiaan Huisman for TimeZone bug fixing. + +
  • Andreas Jaeger for mprec updates. + +
  • Paul Jenner for better -Werror support. + +
  • Ito Kazumitsu for NetworkInterface implementation and updates. + +
  • Roman Kennke for BoxLayout, GrayFilter and +SplitPane, plus bug fixes all over. Lots of Free Swing work +including styled text. + +
  • Simon Kitching for String cleanups and optimization suggestions. + +
  • Michael Koch for configuration fixes, Locale updates, bug and +build fixes. + +
  • Guilhem Lavaux for configuration, thread and channel fixes and Kaffe +integration. JCL native Pointer updates. Logger bug fixes. + +
  • David Lichteblau for JCL support library global/local reference +cleanups. + +
  • Aaron Luchko for JDWP updates and documentation fixes. + +
  • Ziga Mahkovec for Graphics2D upgraded to Cairo 0.5 and new regex +features. + +
  • Sven de Marothy for BMP imageio support, CSS and TextLayout +fixes. GtkImage rewrite, 2D, awt, free swing and date/time fixes and +implementing the Qt4 peers. + +
  • Casey Marshall for crypto algorithm fixes, FileChannel lock, +SystemLogger and FileHandler rotate implementations, NIO +FileChannel.map support, security and policy updates. + +
  • Bryce McKinlay for RMI work. + +
  • Audrius Meskauskas for lots of Free Corba, RMI and HTML work plus +testing and documenting. + +
  • Kalle Olavi Niemitalo for build fixes. + +
  • Rainer Orth for build fixes. + +
  • Andrew Overholt for File locking fixes. + +
  • Ingo Proetel for Image, Logger and URLClassLoader +updates. + +
  • Olga Rodimina for MenuSelectionManager implementation. + +
  • Jan Roehrich for BasicTreeUI and JTree fixes. + +
  • Julian Scheid for documentation updates and gjdoc support. + +
  • Christian Schlichtherle for zip fixes and cleanups. + +
  • Robert Schuster for documentation updates and beans fixes, +TreeNode enumerations and ActionCommand and various +fixes, XML and URL, AWT and Free Swing bug fixes. + +
  • Keith Seitz for lots of JDWP work. + +
  • Christian Thalinger for 64-bit cleanups, Configuration and VM +interface fixes and CACAO integration, fdlibm updates. + +
  • Gael Thomas for VMClassLoader boot packages support suggestions. + +
  • Andreas Tobler for Darwin and Solaris testing and fixing, Qt4 +support for Darwin/OS X, Graphics2D support, gtk+ +updates. + +
  • Dalibor Topic for better DEBUG support, build cleanups and +Kaffe integration. Qt4 build infrastructure, SHA1PRNG +and GdkPixbugDecoder updates. + +
  • Tom Tromey for Eclipse integration, generics work, lots of bug fixes +and gcj integration including coordinating The Big Merge. + +
  • Mark Wielaard for bug fixes, packaging and release management, +Clipboard implementation, system call interrupts and network +timeouts and GdkPixpufDecoder fixes. + +
+ +

In addition to the above, all of which also contributed time and energy in +testing GCC, we would like to thank the following for their contributions +to testing: + +

    +
  • Michael Abd-El-Malek + +
  • Thomas Arend + +
  • Bonzo Armstrong + +
  • Steven Ashe + +
  • Chris Baldwin + +
  • David Billinghurst + +
  • Jim Blandy + +
  • Stephane Bortzmeyer + +
  • Horst von Brand + +
  • Frank Braun + +
  • Rodney Brown + +
  • Sidney Cadot + +
  • Bradford Castalia + +
  • Jonathan Corbet + +
  • Ralph Doncaster + +
  • Richard Emberson + +
  • Levente Farkas + +
  • Graham Fawcett + +
  • Mark Fernyhough + +
  • Robert A. French + +
  • Jörgen Freyh + +
  • Mark K. Gardner + +
  • Charles-Antoine Gauthier + +
  • Yung Shing Gene + +
  • David Gilbert + +
  • Simon Gornall + +
  • Fred Gray + +
  • John Griffin + +
  • Patrik Hagglund + +
  • Phil Hargett + +
  • Amancio Hasty + +
  • Takafumi Hayashi + +
  • Bryan W. Headley + +
  • Kevin B. Hendricks + +
  • Joep Jansen + +
  • Christian Joensson + +
  • Michel Kern + +
  • David Kidd + +
  • Tobias Kuipers + +
  • Anand Krishnaswamy + +
  • A. O. V. Le Blanc + +
  • llewelly + +
  • Damon Love + +
  • Brad Lucier + +
  • Matthias Klose + +
  • Martin Knoblauch + +
  • Rick Lutowski + +
  • Jesse Macnish + +
  • Stefan Morrell + +
  • Anon A. Mous + +
  • Matthias Mueller + +
  • Pekka Nikander + +
  • Rick Niles + +
  • Jon Olson + +
  • Magnus Persson + +
  • Chris Pollard + +
  • Richard Polton + +
  • Derk Reefman + +
  • David Rees + +
  • Paul Reilly + +
  • Tom Reilly + +
  • Torsten Rueger + +
  • Danny Sadinoff + +
  • Marc Schifer + +
  • Erik Schnetter + +
  • Wayne K. Schroll + +
  • David Schuler + +
  • Vin Shelton + +
  • Tim Souder + +
  • Adam Sulmicki + +
  • Bill Thorson + +
  • George Talbot + +
  • Pedro A. M. Vazquez + +
  • Gregory Warnes + +
  • Ian Watson + +
  • David E. Young + +
  • And many others +
+ +

And finally we'd like to thank everyone who uses the compiler, submits bug +reports and generally reminds us why we're doing this work in the first place. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Control-Flow.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Control-Flow.html new file mode 100644 index 0000000..21766e2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Control-Flow.html @@ -0,0 +1,75 @@ + + +Control Flow - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: RTL, +Up: Top +



+
+ +

13 Control Flow Graph

+ +

+A control flow graph (CFG) is a data structure built on top of the +intermediate code representation (the RTL or tree instruction +stream) abstracting the control flow behavior of a function that is +being compiled. The CFG is a directed graph where the vertices +represent basic blocks and edges represent possible transfer of +control flow from one basic block to another. The data structures +used to represent the control flow graph are defined in +basic-block.h. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conversions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conversions.html new file mode 100644 index 0000000..5933225 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Conversions.html @@ -0,0 +1,156 @@ + + +Conversions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Vector Operations, +Up: RTL +



+
+ +

12.13 Conversions

+ +

+All conversions between machine modes must be represented by +explicit conversion operations. For example, an expression +which is the sum of a byte and a full word cannot be written as +(plus:SI (reg:QI 34) (reg:SI 80)) because the plus +operation requires two operands of the same machine mode. +Therefore, the byte-sized operand is enclosed in a conversion +operation, as in + +

     (plus:SI (sign_extend:SI (reg:QI 34)) (reg:SI 80))
+
+

The conversion operation is not a mere placeholder, because there +may be more than one way of converting from a given starting mode +to the desired final mode. The conversion operation code says how +to do it. + +

For all conversion operations, x must not be VOIDmode +because the mode in which to do the conversion would not be known. +The conversion must either be done at compile-time or x +must be placed into a register. + + + +

(sign_extend:m x)
Represents the result of sign-extending the value x +to machine mode m. m must be a fixed-point mode +and x a fixed-point value of a mode narrower than m. + +


(zero_extend:m x)
Represents the result of zero-extending the value x +to machine mode m. m must be a fixed-point mode +and x a fixed-point value of a mode narrower than m. + +


(float_extend:m x)
Represents the result of extending the value x +to machine mode m. m must be a floating point mode +and x a floating point value of a mode narrower than m. + +


(truncate:m x)
Represents the result of truncating the value x +to machine mode m. m must be a fixed-point mode +and x a fixed-point value of a mode wider than m. + +


(ss_truncate:m x)
Represents the result of truncating the value x +to machine mode m, using signed saturation in the case of +overflow. Both m and the mode of x must be fixed-point +modes. + +


(us_truncate:m x)
Represents the result of truncating the value x +to machine mode m, using unsigned saturation in the case of +overflow. Both m and the mode of x must be fixed-point +modes. + +


(float_truncate:m x)
Represents the result of truncating the value x +to machine mode m. m must be a floating point mode +and x a floating point value of a mode wider than m. + +


(float:m x)
Represents the result of converting fixed point value x, +regarded as signed, to floating point mode m. + +


(unsigned_float:m x)
Represents the result of converting fixed point value x, +regarded as unsigned, to floating point mode m. + +


(fix:m x)
When m is a fixed point mode, represents the result of +converting floating point value x to mode m, regarded as +signed. How rounding is done is not specified, so this operation may +be used validly in compiling C code only for integer-valued operands. + +


(unsigned_fix:m x)
Represents the result of converting floating point value x to +fixed point mode m, regarded as unsigned. How rounding is done +is not specified. + +


(fix:m x)
When m is a floating point mode, represents the result of +converting floating point value x (valid for mode m) to an +integer, still represented in floating point mode m, by rounding +towards zero. + +


(fract_convert:m x)
Represents the result of converting fixed-point value x to +fixed-point mode m, signed integer value x to +fixed-point mode m, floating-point value x to +fixed-point mode m, fixed-point value x to integer mode m +regarded as signed, or fixed-point value x to floating-point mode m. +When overflows or underflows happen, the results are undefined. + +


(sat_fract:m x)
Represents the result of converting fixed-point value x to +fixed-point mode m, signed integer value x to +fixed-point mode m, or floating-point value x to +fixed-point mode m. +When overflows or underflows happen, the results are saturated to the +maximum or the minimum. + +


(unsigned_fract_convert:m x)
Represents the result of converting fixed-point value x to +integer mode m regarded as unsigned, or unsigned integer value x to +fixed-point mode m. +When overflows or underflows happen, the results are undefined. + +


(unsigned_sat_fract:m x)
Represents the result of converting unsigned integer value x to +fixed-point mode m. +When overflows or underflows happen, the results are saturated to the +maximum or the minimum. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Copying.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Copying.html new file mode 100644 index 0000000..8bbf4a0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Copying.html @@ -0,0 +1,758 @@ + + +Copying - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: GNU Project, +Up: Top +



+
+ + +

GNU General Public License

+ +
Version 3, 29 June 2007
+ + +
     Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/
+     
+     Everyone is permitted to copy and distribute verbatim copies of this
+     license document, but changing it is not allowed.
+
+

Preamble

+ +

The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +

The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom +to share and change all versions of a program–to make sure it remains +free software for all its users. We, the Free Software Foundation, +use the GNU General Public License for most of our software; it +applies also to any other work released this way by its authors. You +can apply it to your programs, too. + +

When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +

To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you +have certain responsibilities if you distribute copies of the +software, or if you modify it: responsibilities to respect the freedom +of others. + +

For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, +receive or can get the source code. And you must show them these +terms so they know their rights. + +

Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +

For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +

Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the +manufacturer can do so. This is fundamentally incompatible with the +aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for +individuals to use, which is precisely where it is most unacceptable. +Therefore, we have designed this version of the GPL to prohibit the +practice for those products. If such problems arise substantially in +other domains, we stand ready to extend this provision to those +domains in future versions of the GPL, as needed to protect the +freedom of users. + +

Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish +to avoid the special danger that patents applied to a free program +could make it effectively proprietary. To prevent this, the GPL +assures that patents cannot be used to render the program non-free. + +

The precise terms and conditions for copying, distribution and +modification follow. + +

TERMS AND CONDITIONS

+ +
    +
  1. Definitions. + +

    “This License” refers to version 3 of the GNU General Public License. + +

    “Copyright” also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +

    “The Program” refers to any copyrightable work licensed under this +License. Each licensee is addressed as “you”. “Licensees” and +“recipients” may be individuals or organizations. + +

    To “modify” a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a “modified version” of +the earlier work or a work “based on” the earlier work. + +

    A “covered work” means either the unmodified Program or a work based +on the Program. + +

    To “propagate” a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +

    To “convey” a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +

    An interactive user interface displays “Appropriate Legal Notices” to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +

  2. Source Code. + +

    The “source code” for a work means the preferred form of the work for +making modifications to it. “Object code” means any non-source form +of a work. + +

    A “Standard Interface” means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +

    The “System Libraries” of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +“Major Component”, in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +

    The “Corresponding Source” for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +

    The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +

    The Corresponding Source for a work in source code form is that same +work. + +

  3. Basic Permissions. + +

    All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +

    You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +

    Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + +

  4. Protecting Users' Legal Rights From Anti-Circumvention Law. + +

    No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +

    When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +

  5. Conveying Verbatim Copies. + +

    You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +

    You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +

  6. Conveying Modified Source Versions. + +

    You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +

      +
    1. The work must carry prominent notices stating that you modified it, +and giving a relevant date. + +
    2. The work must carry prominent notices stating that it is released +under this License and any conditions added under section 7. This +requirement modifies the requirement in section 4 to “keep intact all +notices”. + +
    3. You must license the entire work, as a whole, under this License to +anyone who comes into possession of a copy. This License will +therefore apply, along with any applicable section 7 additional terms, +to the whole of the work, and all its parts, regardless of how they +are packaged. This License gives no permission to license the work in +any other way, but it does not invalidate such permission if you have +separately received it. + +
    4. If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your work +need not make them do so. +
    + +

    A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +“aggregate” if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +

  7. Conveying Non-Source Forms. + +

    You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +

      +
    1. Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium customarily +used for software interchange. + +
    2. Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a written +offer, valid for at least three years and valid for as long as you +offer spare parts or customer support for that product model, to give +anyone who possesses the object code either (1) a copy of the +Corresponding Source for all the software in the product that is +covered by this License, on a durable physical medium customarily used +for software interchange, for a price no more than your reasonable +cost of physically performing this conveying of source, or (2) access +to copy the Corresponding Source from a network server at no charge. + +
    3. Convey individual copies of the object code with a copy of the written +offer to provide the Corresponding Source. This alternative is +allowed only occasionally and noncommercially, and only if you +received the object code with such an offer, in accord with subsection +6b. + +
    4. Convey the object code by offering access from a designated place +(gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to copy +the object code is a network server, the Corresponding Source may be +on a different server (operated by you or a third party) that supports +equivalent copying facilities, provided you maintain clear directions +next to the object code saying where to find the Corresponding Source. +Regardless of what server hosts the Corresponding Source, you remain +obligated to ensure that it is available for as long as needed to +satisfy these requirements. + +
    5. Convey the object code using peer-to-peer transmission, provided you +inform other peers where the object code and Corresponding Source of +the work are being offered to the general public at no charge under +subsection 6d. + +
    + +

    A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +

    A “User Product” is either (1) a “consumer product”, which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +“normally used” refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +

    “Installation Information” for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +

    If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +

    The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +

    Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +

  8. Additional Terms. + +

    “Additional permissions” are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +

    When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +

    Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +

      +
    1. Disclaiming warranty or limiting liability differently from the terms +of sections 15 and 16 of this License; or + +
    2. Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices +displayed by works containing it; or + +
    3. Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or + +
    4. Limiting the use for publicity purposes of names of licensors or +authors of the material; or + +
    5. Declining to grant rights under trademark law for use of some trade +names, trademarks, or service marks; or + +
    6. Requiring indemnification of licensors and authors of that material by +anyone who conveys the material (or modified versions of it) with +contractual assumptions of liability to the recipient, for any +liability that these contractual assumptions directly impose on those +licensors and authors. +
    + +

    All other non-permissive additional terms are considered “further +restrictions” within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +

    If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +

    Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +

  9. Termination. + +

    You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +

    However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +

    Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +

    Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +

  10. Acceptance Not Required for Having Copies. + +

    You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +

  11. Automatic Licensing of Downstream Recipients. + +

    Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +

    An “entity transaction” is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +

    You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +

  12. Patents. + +

    A “contributor” is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's “contributor version”. + +

    A contributor's “essential patent claims” are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, “control” includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +

    Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +

    In the following three paragraphs, a “patent license” is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To “grant” such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +

    If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. “Knowingly relying” means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +

    If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +

    A patent license is “discriminatory” if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +

    Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +

  13. No Surrender of Others' Freedom. + +

    If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey +a covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree +to terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +

  14. Use with the GNU Affero General Public License. + +

    Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +

  15. Revised Versions of this License. + +

    The Free Software Foundation may publish revised and/or new versions +of the GNU General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +

    Each version is given a distinguishing version number. If the Program +specifies that a certain numbered version of the GNU General Public +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that numbered version or +of any later version published by the Free Software Foundation. If +the Program does not specify a version number of the GNU General +Public License, you may choose any version ever published by the Free +Software Foundation. + +

    If the Program specifies that a proxy can decide which future versions +of the GNU General Public License can be used, that proxy's public +statement of acceptance of a version permanently authorizes you to +choose that version for the Program. + +

    Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +

  16. Disclaimer of Warranty. + +

    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +

  17. Limitation of Liability. + +

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +

  18. Interpretation of Sections 15 and 16. + +

    If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +

+ +

END OF TERMS AND CONDITIONS

+ +

How to Apply These Terms to Your New Programs

+ +

If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +

To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the “copyright” line and a pointer to where the full notice is found. + +

     one line to give the program's name and a brief idea of what it does.
+     Copyright (C) year name of author
+     
+     This program is free software: you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+     the Free Software Foundation, either version 3 of the License, or (at
+     your option) any later version.
+     
+     This program is distributed in the hope that it will be useful, but
+     WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+     General Public License for more details.
+     
+     You should have received a copy of the GNU General Public License
+     along with this program.  If not, see http://www.gnu.org/licenses/.
+
+

Also add information on how to contact you by electronic and paper mail. + +

If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + +

     program Copyright (C) year name of author
+     This program comes with ABSOLUTELY NO WARRANTY; for details type show w.
+     This is free software, and you are welcome to redistribute it
+     under certain conditions; type show c for details.
+
+

The hypothetical commands show w and show c should show +the appropriate parts of the General Public License. Of course, your +program's commands might be different; for a GUI interface, you would +use an “about box”. + +

You should also get your employer (if you work as a programmer) or school, +if any, to sign a “copyright disclaimer” for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +http://www.gnu.org/licenses/. + +

The GNU General Public License does not permit incorporating your +program into proprietary programs. If your program is a subroutine +library, you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use +the GNU Lesser General Public License instead of this License. But +first, please read http://www.gnu.org/philosophy/why-not-lgpl.html. + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Costs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Costs.html new file mode 100644 index 0000000..8970e5f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Costs.html @@ -0,0 +1,361 @@ + + +Costs - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Condition Code, +Up: Target Macros +



+
+ +

15.17 Describing Relative Costs of Operations

+ +

+These macros let you describe the relative speed of various operations +on the target machine. + +

+— Macro: REGISTER_MOVE_COST (mode, from, to)
+

A C expression for the cost of moving data of mode mode from a +register in class from to one in class to. The classes are +expressed using the enumeration values such as GENERAL_REGS. A +value of 2 is the default; other values are interpreted relative to +that. + +

It is not required that the cost always equal 2 when from is the +same as to; on some machines it is expensive to move between +registers if they are not general registers. + +

If reload sees an insn consisting of a single set between two +hard registers, and if REGISTER_MOVE_COST applied to their +classes returns a value of 2, reload does not check to ensure that the +constraints of the insn are met. Setting a cost of other than 2 will +allow reload to verify that the constraints are met. You should do this +if the movm pattern's constraints do not allow such copying. +

+ +
+— Macro: MEMORY_MOVE_COST (mode, class, in)
+

A C expression for the cost of moving data of mode mode between a +register of class class and memory; in is zero if the value +is to be written to memory, nonzero if it is to be read in. This cost +is relative to those in REGISTER_MOVE_COST. If moving between +registers and memory is more expensive than between two registers, you +should define this macro to express the relative cost. + +

If you do not define this macro, GCC uses a default cost of 4 plus +the cost of copying via a secondary reload register, if one is +needed. If your machine requires a secondary reload register to copy +between memory and a register of class but the reload mechanism is +more complex than copying via an intermediate, define this macro to +reflect the actual cost of the move. + +

GCC defines the function memory_move_secondary_cost if +secondary reloads are needed. It computes the costs due to copying via +a secondary register. If your machine copies from memory using a +secondary register in the conventional way but the default base value of +4 is not correct for your machine, define this macro to add some other +value to the result of that function. The arguments to that function +are the same as to this macro. +

+ +
+— Macro: BRANCH_COST
+

A C expression for the cost of a branch instruction. A value of 1 is +the default; other values are interpreted relative to that. +

+ +

Here are additional macros which do not specify precise relative costs, +but only that certain actions are more expensive than GCC would +ordinarily expect. + +

+— Macro: SLOW_BYTE_ACCESS
+

Define this macro as a C expression which is nonzero if accessing less +than a word of memory (i.e. a char or a short) is no +faster than accessing a word of memory, i.e., if such access +require more than one instruction or if there is no difference in cost +between byte and (aligned) word loads. + +

When this macro is not defined, the compiler will access a field by +finding the smallest containing object; when it is defined, a fullword +load will be used if alignment permits. Unless bytes accesses are +faster than word accesses, using word accesses is preferable since it +may eliminate subsequent memory access if subsequent accesses occur to +other fields in the same word of the structure, but to different bytes. +

+ +
+— Macro: SLOW_UNALIGNED_ACCESS (mode, alignment)
+

Define this macro to be the value 1 if memory accesses described by the +mode and alignment parameters have a cost many times greater +than aligned accesses, for example if they are emulated in a trap +handler. + +

When this macro is nonzero, the compiler will act as if +STRICT_ALIGNMENT were nonzero when generating code for block +moves. This can cause significantly more instructions to be produced. +Therefore, do not set this macro nonzero if unaligned accesses only add a +cycle or two to the time for a memory access. + +

If the value of this macro is always zero, it need not be defined. If +this macro is defined, it should produce a nonzero value when +STRICT_ALIGNMENT is nonzero. +

+ +
+— Macro: MOVE_RATIO
+

The threshold of number of scalar memory-to-memory move insns, below +which a sequence of insns should be generated instead of a +string move insn or a library call. Increasing the value will always +make code faster, but eventually incurs high cost in increased code size. + +

Note that on machines where the corresponding move insn is a +define_expand that emits a sequence of insns, this macro counts +the number of such sequences. + +

If you don't define this, a reasonable default is used. +

+ +
+— Macro: MOVE_BY_PIECES_P (size, alignment)
+

A C expression used to determine whether move_by_pieces will be used to +copy a chunk of memory, or whether some other block move mechanism +will be used. Defaults to 1 if move_by_pieces_ninsns returns less +than MOVE_RATIO. +

+ +
+— Macro: MOVE_MAX_PIECES
+

A C expression used by move_by_pieces to determine the largest unit +a load or store used to copy memory is. Defaults to MOVE_MAX. +

+ +
+— Macro: CLEAR_RATIO
+

The threshold of number of scalar move insns, below which a sequence +of insns should be generated to clear memory instead of a string clear insn +or a library call. Increasing the value will always make code faster, but +eventually incurs high cost in increased code size. + +

If you don't define this, a reasonable default is used. +

+ +
+— Macro: CLEAR_BY_PIECES_P (size, alignment)
+

A C expression used to determine whether clear_by_pieces will be used +to clear a chunk of memory, or whether some other block clear mechanism +will be used. Defaults to 1 if move_by_pieces_ninsns returns less +than CLEAR_RATIO. +

+ +
+— Macro: SET_RATIO
+

The threshold of number of scalar move insns, below which a sequence +of insns should be generated to set memory to a constant value, instead of +a block set insn or a library call. +Increasing the value will always make code faster, but +eventually incurs high cost in increased code size. + +

If you don't define this, it defaults to the value of MOVE_RATIO. +

+ +
+— Macro: SET_BY_PIECES_P (size, alignment)
+

A C expression used to determine whether store_by_pieces will be +used to set a chunk of memory to a constant value, or whether some +other mechanism will be used. Used by __builtin_memset when +storing values other than constant zero. +Defaults to 1 if move_by_pieces_ninsns returns less +than SET_RATIO. +

+ +
+— Macro: STORE_BY_PIECES_P (size, alignment)
+

A C expression used to determine whether store_by_pieces will be +used to set a chunk of memory to a constant string value, or whether some +other mechanism will be used. Used by __builtin_strcpy when +called with a constant source string. +Defaults to 1 if move_by_pieces_ninsns returns less +than MOVE_RATIO. +

+ +
+— Macro: USE_LOAD_POST_INCREMENT (mode)
+

A C expression used to determine whether a load postincrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_POST_INCREMENT. +

+ +
+— Macro: USE_LOAD_POST_DECREMENT (mode)
+

A C expression used to determine whether a load postdecrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_POST_DECREMENT. +

+ +
+— Macro: USE_LOAD_PRE_INCREMENT (mode)
+

A C expression used to determine whether a load preincrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_PRE_INCREMENT. +

+ +
+— Macro: USE_LOAD_PRE_DECREMENT (mode)
+

A C expression used to determine whether a load predecrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_PRE_DECREMENT. +

+ +
+— Macro: USE_STORE_POST_INCREMENT (mode)
+

A C expression used to determine whether a store postincrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_POST_INCREMENT. +

+ +
+— Macro: USE_STORE_POST_DECREMENT (mode)
+

A C expression used to determine whether a store postdecrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_POST_DECREMENT. +

+ +
+— Macro: USE_STORE_PRE_INCREMENT (mode)
+

This macro is used to determine whether a store preincrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_PRE_INCREMENT. +

+ +
+— Macro: USE_STORE_PRE_DECREMENT (mode)
+

This macro is used to determine whether a store predecrement is a good +thing to use for a given mode. Defaults to the value of +HAVE_PRE_DECREMENT. +

+ +
+— Macro: NO_FUNCTION_CSE
+

Define this macro if it is as good or better to call a constant +function address than to call an address kept in a register. +

+ +
+— Macro: RANGE_TEST_NON_SHORT_CIRCUIT
+

Define this macro if a non-short-circuit operation produced by +fold_range_test () is optimal. This macro defaults to true if +BRANCH_COST is greater than or equal to the value 2. +

+ +
+— Target Hook: bool TARGET_RTX_COSTS (rtx x, int code, int outer_code, int *total)
+

This target hook describes the relative costs of RTL expressions. + +

The cost may depend on the precise form of the expression, which is +available for examination in x, and the rtx code of the expression +in which it is contained, found in outer_code. code is the +expression code—redundant, since it can be obtained with +GET_CODE (x). + +

In implementing this hook, you can use the construct +COSTS_N_INSNS (n) to specify a cost equal to n fast +instructions. + +

On entry to the hook, *total contains a default estimate +for the cost of the expression. The hook should modify this value as +necessary. Traditionally, the default costs are COSTS_N_INSNS (5) +for multiplications, COSTS_N_INSNS (7) for division and modulus +operations, and COSTS_N_INSNS (1) for all other operations. + +

When optimizing for code size, i.e. when optimize_size is +nonzero, this target hook should be used to estimate the relative +size cost of an expression, again relative to COSTS_N_INSNS. + +

The hook returns true when all subexpressions of x have been +processed, and false when rtx_cost should recurse. +

+ +
+— Target Hook: int TARGET_ADDRESS_COST (rtx address)
+

This hook computes the cost of an addressing mode that contains +address. If not defined, the cost is computed from +the address expression and the TARGET_RTX_COST hook. + +

For most CISC machines, the default cost is a good approximation of the +true cost of the addressing mode. However, on RISC machines, all +instructions normally have the same length and execution time. Hence +all addresses will have equal costs. + +

In cases where more than one form of an address is known, the form with +the lowest cost will be used. If multiple forms have the same, lowest, +cost, the one that is the most complex will be used. + +

For example, suppose an address that is equal to the sum of a register +and a constant is used twice in the same basic block. When this macro +is not defined, the address will be computed in a register and memory +references will be indirect through that register. On machines where +the cost of the addressing mode containing the sum is no higher than +that of a simple indirect reference, this will produce an additional +instruction and possibly require an additional register. Proper +specification of this macro eliminates this overhead for such machines. + +

This hook is never called with an invalid address. + +

On machines where an address involving more than one register is as +cheap as an address computation involving only one register, defining +TARGET_ADDRESS_COST to reflect this can cause two registers to +be live over a region of code where only one would have been if +TARGET_ADDRESS_COST were not defined in that manner. This effect +should be considered in the definition of this macro. Equivalent costs +should probably only be given to addresses with different numbers of +registers on machines with lots of registers. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Current-structure-hierarchy.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Current-structure-hierarchy.html new file mode 100644 index 0000000..f5b77db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Current-structure-hierarchy.html @@ -0,0 +1,100 @@ + + +Current structure hierarchy - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + +
9.5.2.1 Current structure hierarchy
+ +
+
struct tree_decl_minimal
This is the minimal structure to inherit from in order for common +DECL macros to work. The fields it contains are a unique ID, +source location, context, and name. + +
struct tree_decl_common
This structure inherits from struct tree_decl_minimal. It +contains fields that most DECL nodes need, such as a field to +store alignment, machine mode, size, and attributes. + +
struct tree_field_decl
This structure inherits from struct tree_decl_common. It is +used to represent FIELD_DECL. + +
struct tree_label_decl
This structure inherits from struct tree_decl_common. It is +used to represent LABEL_DECL. + +
struct tree_translation_unit_decl
This structure inherits from struct tree_decl_common. It is +used to represent TRANSLATION_UNIT_DECL. + +
struct tree_decl_with_rtl
This structure inherits from struct tree_decl_common. It +contains a field to store the low-level RTL associated with a +DECL node. + +
struct tree_result_decl
This structure inherits from struct tree_decl_with_rtl. It is +used to represent RESULT_DECL. + +
struct tree_const_decl
This structure inherits from struct tree_decl_with_rtl. It is +used to represent CONST_DECL. + +
struct tree_parm_decl
This structure inherits from struct tree_decl_with_rtl. It is +used to represent PARM_DECL. + +
struct tree_decl_with_vis
This structure inherits from struct tree_decl_with_rtl. It +contains fields necessary to store visibility information, as well as +a section name and assembler name. + +
struct tree_var_decl
This structure inherits from struct tree_decl_with_vis. It is +used to represent VAR_DECL. + +
struct tree_function_decl
This structure inherits from struct tree_decl_with_vis. It is +used to represent FUNCTION_DECL. + +
+ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/DBX-Hooks.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/DBX-Hooks.html new file mode 100644 index 0000000..2b540cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/DBX-Hooks.html @@ -0,0 +1,107 @@ + + +DBX Hooks - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: DBX Options, +Up: Debugging Info +



+
+ +

15.22.3 Open-Ended Hooks for DBX Format

+ + +

These are hooks for DBX format. + +

+— Macro: DBX_OUTPUT_LBRAC (stream, name)
+

Define this macro to say how to output to stream the debugging +information for the start of a scope level for variable names. The +argument name is the name of an assembler symbol (for use with +assemble_name) whose value is the address where the scope begins. +

+ +
+— Macro: DBX_OUTPUT_RBRAC (stream, name)
+

Like DBX_OUTPUT_LBRAC, but for the end of a scope level. +

+ +
+— Macro: DBX_OUTPUT_NFUN (stream, lscope_label, decl)
+

Define this macro if the target machine requires special handling to +output an N_FUN entry for the function decl. +

+ +
+— Macro: DBX_OUTPUT_SOURCE_LINE (stream, line, counter)
+

A C statement to output DBX debugging information before code for line +number line of the current source file to the stdio stream +stream. counter is the number of time the macro was +invoked, including the current invocation; it is intended to generate +unique labels in the assembly output. + +

This macro should not be defined if the default output is correct, or +if it can be made correct by defining DBX_LINES_FUNCTION_RELATIVE. +

+ +
+— Macro: NO_DBX_FUNCTION_END
+

Some stabs encapsulation formats (in particular ECOFF), cannot handle the +.stabs "",N_FUN,,0,0,Lscope-function-1 gdb dbx extension construct. +On those machines, define this macro to turn this feature off without +disturbing the rest of the gdb extensions. +

+ +
+— Macro: NO_DBX_BNSYM_ENSYM
+

Some assemblers cannot handle the .stabd BNSYM/ENSYM,0,0 gdb dbx +extension construct. On those machines, define this macro to turn this +feature off without disturbing the rest of the gdb extensions. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/DBX-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/DBX-Options.html new file mode 100644 index 0000000..93769cf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/DBX-Options.html @@ -0,0 +1,208 @@ + + +DBX Options - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: All Debuggers, +Up: Debugging Info +



+
+ +

15.22.2 Specific Options for DBX Output

+ + +

These are specific options for DBX output. + +

+— Macro: DBX_DEBUGGING_INFO
+

Define this macro if GCC should produce debugging output for DBX +in response to the -g option. +

+ +
+— Macro: XCOFF_DEBUGGING_INFO
+

Define this macro if GCC should produce XCOFF format debugging output +in response to the -g option. This is a variant of DBX format. +

+ +
+— Macro: DEFAULT_GDB_EXTENSIONS
+

Define this macro to control whether GCC should by default generate +GDB's extended version of DBX debugging information (assuming DBX-format +debugging information is enabled at all). If you don't define the +macro, the default is 1: always generate the extended information +if there is any occasion to. +

+ +
+— Macro: DEBUG_SYMS_TEXT
+

Define this macro if all .stabs commands should be output while +in the text section. +

+ +
+— Macro: ASM_STABS_OP
+

A C string constant, including spacing, naming the assembler pseudo op to +use instead of "\t.stabs\t" to define an ordinary debugging symbol. +If you don't define this macro, "\t.stabs\t" is used. This macro +applies only to DBX debugging information format. +

+ +
+— Macro: ASM_STABD_OP
+

A C string constant, including spacing, naming the assembler pseudo op to +use instead of "\t.stabd\t" to define a debugging symbol whose +value is the current location. If you don't define this macro, +"\t.stabd\t" is used. This macro applies only to DBX debugging +information format. +

+ +
+— Macro: ASM_STABN_OP
+

A C string constant, including spacing, naming the assembler pseudo op to +use instead of "\t.stabn\t" to define a debugging symbol with no +name. If you don't define this macro, "\t.stabn\t" is used. This +macro applies only to DBX debugging information format. +

+ +
+— Macro: DBX_NO_XREFS
+

Define this macro if DBX on your system does not support the construct +xstagname. On some systems, this construct is used to +describe a forward reference to a structure named tagname. +On other systems, this construct is not supported at all. +

+ +
+— Macro: DBX_CONTIN_LENGTH
+

A symbol name in DBX-format debugging information is normally +continued (split into two separate .stabs directives) when it +exceeds a certain length (by default, 80 characters). On some +operating systems, DBX requires this splitting; on others, splitting +must not be done. You can inhibit splitting by defining this macro +with the value zero. You can override the default splitting-length by +defining this macro as an expression for the length you desire. +

+ +
+— Macro: DBX_CONTIN_CHAR
+

Normally continuation is indicated by adding a \ character to +the end of a .stabs string when a continuation follows. To use +a different character instead, define this macro as a character +constant for the character you want to use. Do not define this macro +if backslash is correct for your system. +

+ +
+— Macro: DBX_STATIC_STAB_DATA_SECTION
+

Define this macro if it is necessary to go to the data section before +outputting the .stabs pseudo-op for a non-global static +variable. +

+ +
+— Macro: DBX_TYPE_DECL_STABS_CODE
+

The value to use in the “code” field of the .stabs directive +for a typedef. The default is N_LSYM. +

+ +
+— Macro: DBX_STATIC_CONST_VAR_CODE
+

The value to use in the “code” field of the .stabs directive +for a static variable located in the text section. DBX format does not +provide any “right” way to do this. The default is N_FUN. +

+ +
+— Macro: DBX_REGPARM_STABS_CODE
+

The value to use in the “code” field of the .stabs directive +for a parameter passed in registers. DBX format does not provide any +“right” way to do this. The default is N_RSYM. +

+ +
+— Macro: DBX_REGPARM_STABS_LETTER
+

The letter to use in DBX symbol data to identify a symbol as a parameter +passed in registers. DBX format does not customarily provide any way to +do this. The default is 'P'. +

+ +
+— Macro: DBX_FUNCTION_FIRST
+

Define this macro if the DBX information for a function and its +arguments should precede the assembler code for the function. Normally, +in DBX format, the debugging information entirely follows the assembler +code. +

+ +
+— Macro: DBX_BLOCKS_FUNCTION_RELATIVE
+

Define this macro, with value 1, if the value of a symbol describing +the scope of a block (N_LBRAC or N_RBRAC) should be +relative to the start of the enclosing function. Normally, GCC uses +an absolute address. +

+ +
+— Macro: DBX_LINES_FUNCTION_RELATIVE
+

Define this macro, with value 1, if the value of a symbol indicating +the current line number (N_SLINE) should be relative to the +start of the enclosing function. Normally, GCC uses an absolute address. +

+ +
+— Macro: DBX_USE_BINCL
+

Define this macro if GCC should generate N_BINCL and +N_EINCL stabs for included header files, as on Sun systems. This +macro also directs GCC to output a type number as a pair of a file +number and a type number within the file. Normally, GCC does not +generate N_BINCL or N_EINCL stabs, and it outputs a single +number for a type number. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Data-Output.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Data-Output.html new file mode 100644 index 0000000..adfe217 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Data-Output.html @@ -0,0 +1,232 @@ + + +Data Output - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: File Framework, +Up: Assembler Format +



+
+ +

15.21.2 Output of Data

+ +
+— Target Hook: const char * TARGET_ASM_BYTE_OP
+— Target Hook: const char * TARGET_ASM_ALIGNED_HI_OP
+— Target Hook: const char * TARGET_ASM_ALIGNED_SI_OP
+— Target Hook: const char * TARGET_ASM_ALIGNED_DI_OP
+— Target Hook: const char * TARGET_ASM_ALIGNED_TI_OP
+— Target Hook: const char * TARGET_ASM_UNALIGNED_HI_OP
+— Target Hook: const char * TARGET_ASM_UNALIGNED_SI_OP
+— Target Hook: const char * TARGET_ASM_UNALIGNED_DI_OP
+— Target Hook: const char * TARGET_ASM_UNALIGNED_TI_OP
+

These hooks specify assembly directives for creating certain kinds +of integer object. The TARGET_ASM_BYTE_OP directive creates a +byte-sized object, the TARGET_ASM_ALIGNED_HI_OP one creates an +aligned two-byte object, and so on. Any of the hooks may be +NULL, indicating that no suitable directive is available. + +

The compiler will print these strings at the start of a new line, +followed immediately by the object's initial value. In most cases, +the string should contain a tab, a pseudo-op, and then another tab. +

+ +
+— Target Hook: bool TARGET_ASM_INTEGER (rtx x, unsigned int size, int aligned_p)
+

The assemble_integer function uses this hook to output an +integer object. x is the object's value, size is its size +in bytes and aligned_p indicates whether it is aligned. The +function should return true if it was able to output the +object. If it returns false, assemble_integer will try to +split the object into smaller parts. + +

The default implementation of this hook will use the +TARGET_ASM_BYTE_OP family of strings, returning false +when the relevant string is NULL. +

+ +
+— Macro: OUTPUT_ADDR_CONST_EXTRA (stream, x, fail)
+

A C statement to recognize rtx patterns that +output_addr_const can't deal with, and output assembly code to +stream corresponding to the pattern x. This may be used to +allow machine-dependent UNSPECs to appear within constants. + +

If OUTPUT_ADDR_CONST_EXTRA fails to recognize a pattern, it must +goto fail, so that a standard error message is printed. If it +prints an error message itself, by calling, for example, +output_operand_lossage, it may just complete normally. +

+ +
+— Macro: ASM_OUTPUT_ASCII (stream, ptr, len)
+

A C statement to output to the stdio stream stream an assembler +instruction to assemble a string constant containing the len +bytes at ptr. ptr will be a C expression of type +char * and len a C expression of type int. + +

If the assembler has a .ascii pseudo-op as found in the +Berkeley Unix assembler, do not define the macro +ASM_OUTPUT_ASCII. +

+ +
+— Macro: ASM_OUTPUT_FDESC (stream, decl, n)
+

A C statement to output word n of a function descriptor for +decl. This must be defined if TARGET_VTABLE_USES_DESCRIPTORS +is defined, and is otherwise unused. +

+ +
+— Macro: CONSTANT_POOL_BEFORE_FUNCTION
+

You may define this macro as a C expression. You should define the +expression to have a nonzero value if GCC should output the constant +pool for a function before the code for the function, or a zero value if +GCC should output the constant pool after the function. If you do +not define this macro, the usual case, GCC will output the constant +pool before the function. +

+ +
+— Macro: ASM_OUTPUT_POOL_PROLOGUE (file, funname, fundecl, size)
+

A C statement to output assembler commands to define the start of the +constant pool for a function. funname is a string giving +the name of the function. Should the return type of the function +be required, it can be obtained via fundecl. size +is the size, in bytes, of the constant pool that will be written +immediately after this call. + +

If no constant-pool prefix is required, the usual case, this macro need +not be defined. +

+ +
+— Macro: ASM_OUTPUT_SPECIAL_POOL_ENTRY (file, x, mode, align, labelno, jumpto)
+

A C statement (with or without semicolon) to output a constant in the +constant pool, if it needs special treatment. (This macro need not do +anything for RTL expressions that can be output normally.) + +

The argument file is the standard I/O stream to output the +assembler code on. x is the RTL expression for the constant to +output, and mode is the machine mode (in case x is a +const_int). align is the required alignment for the value +x; you should output an assembler directive to force this much +alignment. + +

The argument labelno is a number to use in an internal label for +the address of this pool entry. The definition of this macro is +responsible for outputting the label definition at the proper place. +Here is how to do this: + +

          (*targetm.asm_out.internal_label) (file, "LC", labelno);
+     
+

When you output a pool entry specially, you should end with a +goto to the label jumpto. This will prevent the same pool +entry from being output a second time in the usual manner. + +

You need not define this macro if it would do nothing. +

+ +
+— Macro: ASM_OUTPUT_POOL_EPILOGUE (file funname fundecl size)
+

A C statement to output assembler commands to at the end of the constant +pool for a function. funname is a string giving the name of the +function. Should the return type of the function be required, you can +obtain it via fundecl. size is the size, in bytes, of the +constant pool that GCC wrote immediately before this call. + +

If no constant-pool epilogue is required, the usual case, you need not +define this macro. +

+ +
+— Macro: IS_ASM_LOGICAL_LINE_SEPARATOR (C, STR)
+

Define this macro as a C expression which is nonzero if C is +used as a logical line separator by the assembler. STR points +to the position in the string where C was found; this can be used if +a line separator uses multiple characters. + +

If you do not define this macro, the default is that only +the character ; is treated as a logical line separator. +

+ +
+— Target Hook: const char * TARGET_ASM_OPEN_PAREN
+— Target Hook: const char * TARGET_ASM_CLOSE_PAREN
+

These target hooks are C string constants, describing the syntax in the +assembler for grouping arithmetic expressions. If not overridden, they +default to normal parentheses, which is correct for most assemblers. +

+ +

These macros are provided by real.h for writing the definitions +of ASM_OUTPUT_DOUBLE and the like: + +

+— Macro: REAL_VALUE_TO_TARGET_SINGLE (x, l)
+— Macro: REAL_VALUE_TO_TARGET_DOUBLE (x, l)
+— Macro: REAL_VALUE_TO_TARGET_LONG_DOUBLE (x, l)
+— Macro: REAL_VALUE_TO_TARGET_DECIMAL32 (x, l)
+— Macro: REAL_VALUE_TO_TARGET_DECIMAL64 (x, l)
+— Macro: REAL_VALUE_TO_TARGET_DECIMAL128 (x, l)
+

These translate x, of type REAL_VALUE_TYPE, to the +target's floating point representation, and store its bit pattern in +the variable l. For REAL_VALUE_TO_TARGET_SINGLE and +REAL_VALUE_TO_TARGET_DECIMAL32, this variable should be a +simple long int. For the others, it should be an array of +long int. The number of elements in this array is determined +by the size of the desired target floating point data type: 32 bits of +it go in each long int array element. Each array element holds +32 bits of the result, even if long int is wider than 32 bits +on the host machine. + +

The array element values are designed so that you can print them out +using fprintf in the order they should appear in the target +machine's memory. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Debugging-Info.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Debugging-Info.html new file mode 100644 index 0000000..c1b80c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Debugging-Info.html @@ -0,0 +1,70 @@ + + +Debugging Info - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Assembler Format, +Up: Target Macros +



+
+ +

15.22 Controlling Debugging Information Format

+ + +

This describes how to specify debugging information. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Decimal-float-library-routines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Decimal-float-library-routines.html new file mode 100644 index 0000000..6d1dc56 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Decimal-float-library-routines.html @@ -0,0 +1,379 @@ + + +Decimal float library routines - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + + +

4.3 Routines for decimal floating point emulation

+ +

+The software decimal floating point library implements IEEE 754R +decimal floating point arithmetic and is only activated on selected +targets. + +

The software decimal floating point library supports either DPD +(Densely Packed Decimal) or BID (Binary Integer Decimal) encoding +as selected at configure time. + +

4.3.1 Arithmetic functions

+ +
+— Runtime Function: _Decimal32 __dpd_addsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal32 __bid_addsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal64 __dpd_adddd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal64 __bid_adddd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal128 __dpd_addtd3 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: _Decimal128 __bid_addtd3 (_Decimal128 a, _Decimal128 b)
+

These functions return the sum of a and b. +

+ +
+— Runtime Function: _Decimal32 __dpd_subsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal32 __bid_subsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal64 __dpd_subdd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal64 __bid_subdd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal128 __dpd_subtd3 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: _Decimal128 __bid_subtd3 (_Decimal128 a, _Decimal128 b)
+

These functions return the difference between b and a; +that is, a - b. +

+ +
+— Runtime Function: _Decimal32 __dpd_mulsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal32 __bid_mulsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal64 __dpd_muldd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal64 __bid_muldd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal128 __dpd_multd3 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: _Decimal128 __bid_multd3 (_Decimal128 a, _Decimal128 b)
+

These functions return the product of a and b. +

+ +
+— Runtime Function: _Decimal32 __dpd_divsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal32 __bid_divsd3 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: _Decimal64 __dpd_divdd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal64 __bid_divdd3 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: _Decimal128 __dpd_divtd3 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: _Decimal128 __bid_divtd3 (_Decimal128 a, _Decimal128 b)
+

These functions return the quotient of a and b; that is, +a / b. +

+ +
+— Runtime Function: _Decimal32 __dpd_negsd2 (_Decimal32 a)
+— Runtime Function: _Decimal32 __bid_negsd2 (_Decimal32 a)
+— Runtime Function: _Decimal64 __dpd_negdd2 (_Decimal64 a)
+— Runtime Function: _Decimal64 __bid_negdd2 (_Decimal64 a)
+— Runtime Function: _Decimal128 __dpd_negtd2 (_Decimal128 a)
+— Runtime Function: _Decimal128 __bid_negtd2 (_Decimal128 a)
+

These functions return the negation of a. They simply flip the +sign bit, so they can produce negative zero and negative NaN. +

+ +

4.3.2 Conversion functions

+ +
+— Runtime Function: _Decimal64 __dpd_extendsddd2 (_Decimal32 a)
+— Runtime Function: _Decimal64 __bid_extendsddd2 (_Decimal32 a)
+— Runtime Function: _Decimal128 __dpd_extendsdtd2 (_Decimal32 a)
+— Runtime Function: _Decimal128 __bid_extendsdtd2 (_Decimal32 a)
+— Runtime Function: _Decimal128 __dpd_extendddtd2 (_Decimal64 a)
+— Runtime Function: _Decimal128 __bid_extendddtd2 (_Decimal64 a)
+— Runtime Function: _Decimal32 __dpd_truncddsd2 (_Decimal64 a)
+— Runtime Function: _Decimal32 __bid_truncddsd2 (_Decimal64 a)
+— Runtime Function: _Decimal32 __dpd_trunctdsd2 (_Decimal128 a)
+— Runtime Function: _Decimal32 __bid_trunctdsd2 (_Decimal128 a)
+— Runtime Function: _Decimal64 __dpd_trunctddd2 (_Decimal128 a)
+— Runtime Function: _Decimal64 __bid_trunctddd2 (_Decimal128 a)
+

These functions convert the value a from one decimal floating type +to another. +

+ +
+— Runtime Function: _Decimal64 __dpd_extendsfdd (float a)
+— Runtime Function: _Decimal64 __bid_extendsfdd (float a)
+— Runtime Function: _Decimal128 __dpd_extendsftd (float a)
+— Runtime Function: _Decimal128 __bid_extendsftd (float a)
+— Runtime Function: _Decimal128 __dpd_extenddftd (double a)
+— Runtime Function: _Decimal128 __bid_extenddftd (double a)
+— Runtime Function: _Decimal128 __dpd_extendxftd (long double a)
+— Runtime Function: _Decimal128 __bid_extendxftd (long double a)
+— Runtime Function: _Decimal32 __dpd_truncdfsd (double a)
+— Runtime Function: _Decimal32 __bid_truncdfsd (double a)
+— Runtime Function: _Decimal32 __dpd_truncxfsd (long double a)
+— Runtime Function: _Decimal32 __bid_truncxfsd (long double a)
+— Runtime Function: _Decimal32 __dpd_trunctfsd (long double a)
+— Runtime Function: _Decimal32 __bid_trunctfsd (long double a)
+— Runtime Function: _Decimal64 __dpd_truncxfdd (long double a)
+— Runtime Function: _Decimal64 __bid_truncxfdd (long double a)
+— Runtime Function: _Decimal64 __dpd_trunctfdd (long double a)
+— Runtime Function: _Decimal64 __bid_trunctfdd (long double a)
+

These functions convert the value of a from a binary floating type +to a decimal floating type of a different size. +

+ +
+— Runtime Function: float __dpd_truncddsf (_Decimal64 a)
+— Runtime Function: float __bid_truncddsf (_Decimal64 a)
+— Runtime Function: float __dpd_trunctdsf (_Decimal128 a)
+— Runtime Function: float __bid_trunctdsf (_Decimal128 a)
+— Runtime Function: double __dpd_extendsddf (_Decimal32 a)
+— Runtime Function: double __bid_extendsddf (_Decimal32 a)
+— Runtime Function: double __dpd_trunctddf (_Decimal128 a)
+— Runtime Function: double __bid_trunctddf (_Decimal128 a)
+— Runtime Function: long double __dpd_extendsdxf (_Decimal32 a)
+— Runtime Function: long double __bid_extendsdxf (_Decimal32 a)
+— Runtime Function: long double __dpd_extendddxf (_Decimal64 a)
+— Runtime Function: long double __bid_extendddxf (_Decimal64 a)
+— Runtime Function: long double __dpd_trunctdxf (_Decimal128 a)
+— Runtime Function: long double __bid_trunctdxf (_Decimal128 a)
+— Runtime Function: long double __dpd_extendsdtf (_Decimal32 a)
+— Runtime Function: long double __bid_extendsdtf (_Decimal32 a)
+— Runtime Function: long double __dpd_extendddtf (_Decimal64 a)
+— Runtime Function: long double __bid_extendddtf (_Decimal64 a)
+

These functions convert the value of a from a decimal floating type +to a binary floating type of a different size. +

+ +
+— Runtime Function: _Decimal32 __dpd_extendsfsd (float a)
+— Runtime Function: _Decimal32 __bid_extendsfsd (float a)
+— Runtime Function: _Decimal64 __dpd_extenddfdd (double a)
+— Runtime Function: _Decimal64 __bid_extenddfdd (double a)
+— Runtime Function: _Decimal128 __dpd_extendtftd (long double a)
+— Runtime Function: _Decimal128 __bid_extendtftd (long double a)
+— Runtime Function: float __dpd_truncsdsf (_Decimal32 a)
+— Runtime Function: float __bid_truncsdsf (_Decimal32 a)
+— Runtime Function: double __dpd_truncdddf (_Decimal64 a)
+— Runtime Function: double __bid_truncdddf (_Decimal64 a)
+— Runtime Function: long double __dpd_trunctdtf (_Decimal128 a)
+— Runtime Function: long double __bid_trunctdtf (_Decimal128 a)
+

These functions convert the value of a between decimal and +binary floating types of the same size. +

+ +
+— Runtime Function: int __dpd_fixsdsi (_Decimal32 a)
+— Runtime Function: int __bid_fixsdsi (_Decimal32 a)
+— Runtime Function: int __dpd_fixddsi (_Decimal64 a)
+— Runtime Function: int __bid_fixddsi (_Decimal64 a)
+— Runtime Function: int __dpd_fixtdsi (_Decimal128 a)
+— Runtime Function: int __bid_fixtdsi (_Decimal128 a)
+

These functions convert a to a signed integer. +

+ +
+— Runtime Function: long __dpd_fixsddi (_Decimal32 a)
+— Runtime Function: long __bid_fixsddi (_Decimal32 a)
+— Runtime Function: long __dpd_fixdddi (_Decimal64 a)
+— Runtime Function: long __bid_fixdddi (_Decimal64 a)
+— Runtime Function: long __dpd_fixtddi (_Decimal128 a)
+— Runtime Function: long __bid_fixtddi (_Decimal128 a)
+

These functions convert a to a signed long. +

+ +
+— Runtime Function: unsigned int __dpd_fixunssdsi (_Decimal32 a)
+— Runtime Function: unsigned int __bid_fixunssdsi (_Decimal32 a)
+— Runtime Function: unsigned int __dpd_fixunsddsi (_Decimal64 a)
+— Runtime Function: unsigned int __bid_fixunsddsi (_Decimal64 a)
+— Runtime Function: unsigned int __dpd_fixunstdsi (_Decimal128 a)
+— Runtime Function: unsigned int __bid_fixunstdsi (_Decimal128 a)
+

These functions convert a to an unsigned integer. Negative values all become zero. +

+ +
+— Runtime Function: unsigned long __dpd_fixunssddi (_Decimal32 a)
+— Runtime Function: unsigned long __bid_fixunssddi (_Decimal32 a)
+— Runtime Function: unsigned long __dpd_fixunsdddi (_Decimal64 a)
+— Runtime Function: unsigned long __bid_fixunsdddi (_Decimal64 a)
+— Runtime Function: unsigned long __dpd_fixunstddi (_Decimal128 a)
+— Runtime Function: unsigned long __bid_fixunstddi (_Decimal128 a)
+

These functions convert a to an unsigned long. Negative values +all become zero. +

+ +
+— Runtime Function: _Decimal32 __dpd_floatsisd (int i)
+— Runtime Function: _Decimal32 __bid_floatsisd (int i)
+— Runtime Function: _Decimal64 __dpd_floatsidd (int i)
+— Runtime Function: _Decimal64 __bid_floatsidd (int i)
+— Runtime Function: _Decimal128 __dpd_floatsitd (int i)
+— Runtime Function: _Decimal128 __bid_floatsitd (int i)
+

These functions convert i, a signed integer, to decimal floating point. +

+ +
+— Runtime Function: _Decimal32 __dpd_floatdisd (long i)
+— Runtime Function: _Decimal32 __bid_floatdisd (long i)
+— Runtime Function: _Decimal64 __dpd_floatdidd (long i)
+— Runtime Function: _Decimal64 __bid_floatdidd (long i)
+— Runtime Function: _Decimal128 __dpd_floatditd (long i)
+— Runtime Function: _Decimal128 __bid_floatditd (long i)
+

These functions convert i, a signed long, to decimal floating point. +

+ +
+— Runtime Function: _Decimal32 __dpd_floatunssisd (unsigned int i)
+— Runtime Function: _Decimal32 __bid_floatunssisd (unsigned int i)
+— Runtime Function: _Decimal64 __dpd_floatunssidd (unsigned int i)
+— Runtime Function: _Decimal64 __bid_floatunssidd (unsigned int i)
+— Runtime Function: _Decimal128 __dpd_floatunssitd (unsigned int i)
+— Runtime Function: _Decimal128 __bid_floatunssitd (unsigned int i)
+

These functions convert i, an unsigned integer, to decimal floating point. +

+ +
+— Runtime Function: _Decimal32 __dpd_floatunsdisd (unsigned long i)
+— Runtime Function: _Decimal32 __bid_floatunsdisd (unsigned long i)
+— Runtime Function: _Decimal64 __dpd_floatunsdidd (unsigned long i)
+— Runtime Function: _Decimal64 __bid_floatunsdidd (unsigned long i)
+— Runtime Function: _Decimal128 __dpd_floatunsditd (unsigned long i)
+— Runtime Function: _Decimal128 __bid_floatunsditd (unsigned long i)
+

These functions convert i, an unsigned long, to decimal floating point. +

+ +

4.3.3 Comparison functions

+ +
+— Runtime Function: int __dpd_unordsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __bid_unordsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __dpd_unorddd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __bid_unorddd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __dpd_unordtd2 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: int __bid_unordtd2 (_Decimal128 a, _Decimal128 b)
+

These functions return a nonzero value if either argument is NaN, otherwise 0. +

+ +

There is also a complete group of higher level functions which +correspond directly to comparison operators. They implement the ISO C +semantics for floating-point comparisons, taking NaN into account. +Pay careful attention to the return values defined for each set. +Under the hood, all of these routines are implemented as + +

       if (__bid_unordXd2 (a, b))
+         return E;
+       return __bid_cmpXd2 (a, b);
+
+

where E is a constant chosen to give the proper behavior for +NaN. Thus, the meaning of the return value is different for each set. +Do not rely on this implementation; only the semantics documented +below are guaranteed. + +

+— Runtime Function: int __dpd_eqsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __bid_eqsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __dpd_eqdd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __bid_eqdd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __dpd_eqtd2 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: int __bid_eqtd2 (_Decimal128 a, _Decimal128 b)
+

These functions return zero if neither argument is NaN, and a and +b are equal. +

+ +
+— Runtime Function: int __dpd_nesd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __bid_nesd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __dpd_nedd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __bid_nedd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __dpd_netd2 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: int __bid_netd2 (_Decimal128 a, _Decimal128 b)
+

These functions return a nonzero value if either argument is NaN, or +if a and b are unequal. +

+ +
+— Runtime Function: int __dpd_gesd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __bid_gesd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __dpd_gedd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __bid_gedd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __dpd_getd2 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: int __bid_getd2 (_Decimal128 a, _Decimal128 b)
+

These functions return a value greater than or equal to zero if +neither argument is NaN, and a is greater than or equal to +b. +

+ +
+— Runtime Function: int __dpd_ltsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __bid_ltsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __dpd_ltdd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __bid_ltdd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __dpd_lttd2 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: int __bid_lttd2 (_Decimal128 a, _Decimal128 b)
+

These functions return a value less than zero if neither argument is +NaN, and a is strictly less than b. +

+ +
+— Runtime Function: int __dpd_lesd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __bid_lesd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __dpd_ledd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __bid_ledd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __dpd_letd2 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: int __bid_letd2 (_Decimal128 a, _Decimal128 b)
+

These functions return a value less than or equal to zero if neither +argument is NaN, and a is less than or equal to b. +

+ +
+— Runtime Function: int __dpd_gtsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __bid_gtsd2 (_Decimal32 a, _Decimal32 b)
+— Runtime Function: int __dpd_gtdd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __bid_gtdd2 (_Decimal64 a, _Decimal64 b)
+— Runtime Function: int __dpd_gttd2 (_Decimal128 a, _Decimal128 b)
+— Runtime Function: int __bid_gttd2 (_Decimal128 a, _Decimal128 b)
+

These functions return a value greater than zero if neither argument +is NaN, and a is strictly greater than b. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Declarations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Declarations.html new file mode 100644 index 0000000..501e935 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Declarations.html @@ -0,0 +1,70 @@ + + +Declarations - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Functions, +Up: Trees +



+
+ +

9.5 Declarations

+ +

+This section covers the various kinds of declarations that appear in the +internal representation, except for declarations of functions +(represented by FUNCTION_DECL nodes), which are described in +Functions. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Deficiencies.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Deficiencies.html new file mode 100644 index 0000000..724e738 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Deficiencies.html @@ -0,0 +1,62 @@ + + +Deficiencies - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Trees +



+
+ +

9.1 Deficiencies

+ +

There are many places in which this document is incomplet and incorrekt. +It is, as of yet, only preliminary documentation. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Define-Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Define-Constraints.html new file mode 100644 index 0000000..3cbdfa6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Define-Constraints.html @@ -0,0 +1,204 @@ + + +Define Constraints - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Machine Constraints, +Up: Constraints +



+
+ +

14.8.6 Defining Machine-Specific Constraints

+ +

+Machine-specific constraints fall into two categories: register and +non-register constraints. Within the latter category, constraints +which allow subsets of all possible memory or address operands should +be specially marked, to give reload more information. + +

Machine-specific constraints can be given names of arbitrary length, +but they must be entirely composed of letters, digits, underscores +(_), and angle brackets (< >). Like C identifiers, they +must begin with a letter or underscore. + +

In order to avoid ambiguity in operand constraint strings, no +constraint can have a name that begins with any other constraint's +name. For example, if x is defined as a constraint name, +xy may not be, and vice versa. As a consequence of this rule, +no constraint may begin with one of the generic constraint letters: +E F V X g i m n o p r s. + +

Register constraints correspond directly to register classes. +See Register Classes. There is thus not much flexibility in their +definitions. + +

+— MD Expression: define_register_constraint name regclass docstring
+

All three arguments are string constants. +name is the name of the constraint, as it will appear in +match_operand expressions. If name is a multi-letter +constraint its length shall be the same for all constraints starting +with the same letter. regclass can be either the +name of the corresponding register class (see Register Classes), +or a C expression which evaluates to the appropriate register class. +If it is an expression, it must have no side effects, and it cannot +look at the operand. The usual use of expressions is to map some +register constraints to NO_REGS when the register class +is not available on a given subarchitecture. + +

docstring is a sentence documenting the meaning of the +constraint. Docstrings are explained further below. +

+ +

Non-register constraints are more like predicates: the constraint +definition gives a Boolean expression which indicates whether the +constraint matches. + +

+— MD Expression: define_constraint name docstring exp
+

The name and docstring arguments are the same as for +define_register_constraint, but note that the docstring comes +immediately after the name for these expressions. exp is an RTL +expression, obeying the same rules as the RTL expressions in predicate +definitions. See Defining Predicates, for details. If it +evaluates true, the constraint matches; if it evaluates false, it +doesn't. Constraint expressions should indicate which RTL codes they +might match, just like predicate expressions. + +

match_test C expressions have access to the +following variables: + +

+
op
The RTL object defining the operand. +
mode
The machine mode of op. +
ival
INTVAL (op), if op is a const_int. +
hval
CONST_DOUBLE_HIGH (op), if op is an integer +const_double. +
lval
CONST_DOUBLE_LOW (op), if op is an integer +const_double. +
rval
CONST_DOUBLE_REAL_VALUE (op), if op is a floating-point +const_double. +
+ +

The *val variables should only be used once another piece of the +expression has verified that op is the appropriate kind of RTL +object. +

+ +

Most non-register constraints should be defined with +define_constraint. The remaining two definition expressions +are only appropriate for constraints that should be handled specially +by reload if they fail to match. + +

+— MD Expression: define_memory_constraint name docstring exp
+

Use this expression for constraints that match a subset of all memory +operands: that is, reload can make them match by converting the +operand to the form (mem (reg X)), where X is a +base register (from the register class specified by +BASE_REG_CLASS, see Register Classes). + +

For example, on the S/390, some instructions do not accept arbitrary +memory references, but only those that do not make use of an index +register. The constraint letter Q is defined to represent a +memory address of this type. If Q is defined with +define_memory_constraint, a Q constraint can handle any +memory operand, because reload knows it can simply copy the +memory address into a base register if required. This is analogous to +the way a o constraint can handle any memory operand. + +

The syntax and semantics are otherwise identical to +define_constraint. +

+ +
+— MD Expression: define_address_constraint name docstring exp
+

Use this expression for constraints that match a subset of all address +operands: that is, reload can make the constraint match by +converting the operand to the form (reg X), again +with X a base register. + +

Constraints defined with define_address_constraint can only be +used with the address_operand predicate, or machine-specific +predicates that work the same way. They are treated analogously to +the generic p constraint. + +

The syntax and semantics are otherwise identical to +define_constraint. +

+ +

For historical reasons, names beginning with the letters G H +are reserved for constraints that match only const_doubles, and +names beginning with the letters I J K L M N O P are reserved +for constraints that match only const_ints. This may change in +the future. For the time being, constraints with these names must be +written in a stylized form, so that genpreds can tell you did +it correctly: + +

     (define_constraint "[GHIJKLMNOP]..."
+       "doc..."
+       (and (match_code "const_int")  ; const_double for G/H
+            condition...))            ; usually a match_test
+
+ +

It is fine to use names beginning with other letters for constraints +that match const_doubles or const_ints. + +

Each docstring in a constraint definition should be one or more complete +sentences, marked up in Texinfo format. They are currently unused. +In the future they will be copied into the GCC manual, in Machine Constraints, replacing the hand-maintained tables currently found in +that section. Also, in the future the compiler may use this to give +more helpful diagnostics when poor choice of asm constraints +causes a reload failure. + +

If you put the pseudo-Texinfo directive @internal at the +beginning of a docstring, then (in the future) it will appear only in +the internals manual's version of the machine-specific constraint tables. +Use this for constraints that should not appear in asm statements. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Attributes.html new file mode 100644 index 0000000..d846175 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Attributes.html @@ -0,0 +1,104 @@ + + +Defining Attributes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: Insn Attributes +



+
+ +

14.19.1 Defining Attributes and their Values

+ +

+The define_attr expression is used to define each attribute required +by the target machine. It looks like: + +

     (define_attr name list-of-values default)
+
+

name is a string specifying the name of the attribute being defined. + +

list-of-values is either a string that specifies a comma-separated +list of values that can be assigned to the attribute, or a null string to +indicate that the attribute takes numeric values. + +

default is an attribute expression that gives the value of this +attribute for insns that match patterns whose definition does not include +an explicit value for this attribute. See Attr Example, for more +information on the handling of defaults. See Constant Attributes, +for information on attributes that do not depend on any particular insn. + +

For each defined attribute, a number of definitions are written to the +insn-attr.h file. For cases where an explicit set of values is +specified for an attribute, the following are defined: + +

    +
  • A #define is written for the symbol HAVE_ATTR_name. + +
  • An enumerated class is defined for attr_name with +elements of the form upper-name_upper-value where +the attribute name and value are first converted to uppercase. + +
  • A function get_attr_name is defined that is passed an insn and +returns the attribute value for that insn. +
+ +

For example, if the following is present in the md file: + +

     (define_attr "type" "branch,fp,load,store,arith" ...)
+
+

the following lines will be written to the file insn-attr.h. + +

     #define HAVE_ATTR_type
+     enum attr_type {TYPE_BRANCH, TYPE_FP, TYPE_LOAD,
+                      TYPE_STORE, TYPE_ARITH};
+     extern enum attr_type get_attr_type ();
+
+

If the attribute takes numeric values, no enum type will be +defined and the function to obtain the attribute's value will return +int. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Mode-Iterators.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Mode-Iterators.html new file mode 100644 index 0000000..c3bd4f2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Mode-Iterators.html @@ -0,0 +1,91 @@ + + +Defining Mode Iterators - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: Mode Iterators +



+
+ +
14.22.1.1 Defining Mode Iterators
+ +

+The syntax for defining a mode iterator is: + +

     (define_mode_iterator name [(mode1 "cond1") ... (moden "condn")])
+
+

This allows subsequent .md file constructs to use the mode suffix +:name. Every construct that does so will be expanded +n times, once with every use of :name replaced by +:mode1, once with every use replaced by :mode2, +and so on. In the expansion for a particular modei, every +C condition will also require that condi be true. + +

For example: + +

     (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
+
+

defines a new mode suffix :P. Every construct that uses +:P will be expanded twice, once with every :P replaced +by :SI and once with every :P replaced by :DI. +The :SI version will only apply if Pmode == SImode and +the :DI version will only apply if Pmode == DImode. + +

As with other .md conditions, an empty string is treated +as “always true”. (mode "") can also be abbreviated +to mode. For example: + +

     (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
+
+

means that the :DI expansion only applies if TARGET_64BIT +but that the :SI expansion has no such constraint. + +

Iterators are applied in the order they are defined. This can be +significant if two iterators are used in a construct that requires +substitutions. See Substitutions. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Predicates.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Predicates.html new file mode 100644 index 0000000..724657b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Defining-Predicates.html @@ -0,0 +1,180 @@ + + +Defining Predicates - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Machine-Independent Predicates, +Up: Predicates +



+
+ +

14.7.2 Defining Machine-Specific Predicates

+ +

+Many machines have requirements for their operands that cannot be +expressed precisely using the generic predicates. You can define +additional predicates using define_predicate and +define_special_predicate expressions. These expressions have +three operands: + +

    +
  • The name of the predicate, as it will be referred to in +match_operand or match_operator expressions. + +
  • An RTL expression which evaluates to true if the predicate allows the +operand op, false if it does not. This expression can only use +the following RTL codes: + +
    +
    MATCH_OPERAND
    When written inside a predicate expression, a MATCH_OPERAND +expression evaluates to true if the predicate it names would allow +op. The operand number and constraint are ignored. Due to +limitations in genrecog, you can only refer to generic +predicates and predicates that have already been defined. + +
    MATCH_CODE
    This expression evaluates to true if op or a specified +subexpression of op has one of a given list of RTX codes. + +

    The first operand of this expression is a string constant containing a +comma-separated list of RTX code names (in lower case). These are the +codes for which the MATCH_CODE will be true. + +

    The second operand is a string constant which indicates what +subexpression of op to examine. If it is absent or the empty +string, op itself is examined. Otherwise, the string constant +must be a sequence of digits and/or lowercase letters. Each character +indicates a subexpression to extract from the current expression; for +the first character this is op, for the second and subsequent +characters it is the result of the previous character. A digit +n extracts XEXP (en); a letter l +extracts XVECEXP (e, 0, n) where n is the +alphabetic ordinal of l (0 for `a', 1 for 'b', and so on). The +MATCH_CODE then examines the RTX code of the subexpression +extracted by the complete string. It is not possible to extract +components of an rtvec that is not at position 0 within its RTX +object. + +

    MATCH_TEST
    This expression has one operand, a string constant containing a C +expression. The predicate's arguments, op and mode, are +available with those names in the C expression. The MATCH_TEST +evaluates to true if the C expression evaluates to a nonzero value. +MATCH_TEST expressions must not have side effects. + +
    AND
    IOR
    NOT
    IF_THEN_ELSE
    The basic MATCH_ expressions can be combined using these +logical operators, which have the semantics of the C operators +&&, ||, !, and ? : respectively. As +in Common Lisp, you may give an AND or IOR expression an +arbitrary number of arguments; this has exactly the same effect as +writing a chain of two-argument AND or IOR expressions. +
    + +
  • An optional block of C code, which should execute +return true if the predicate is found to match and +return false if it does not. It must not have any side +effects. The predicate arguments, op and mode, are +available with those names. + +

    If a code block is present in a predicate definition, then the RTL +expression must evaluate to true and the code block must +execute return true for the predicate to allow the operand. +The RTL expression is evaluated first; do not re-check anything in the +code block that was checked in the RTL expression. +

+ +

The program genrecog scans define_predicate and +define_special_predicate expressions to determine which RTX +codes are possibly allowed. You should always make this explicit in +the RTL predicate expression, using MATCH_OPERAND and +MATCH_CODE. + +

Here is an example of a simple predicate definition, from the IA64 +machine description: + +

     ;; True if op is a SYMBOL_REF which refers to the sdata section.
+     (define_predicate "small_addr_symbolic_operand"
+       (and (match_code "symbol_ref")
+            (match_test "SYMBOL_REF_SMALL_ADDR_P (op)")))
+
+

And here is another, showing the use of the C block. + +

     ;; True if op is a register operand that is (or could be) a GR reg.
+     (define_predicate "gr_register_operand"
+       (match_operand 0 "register_operand")
+     {
+       unsigned int regno;
+       if (GET_CODE (op) == SUBREG)
+         op = SUBREG_REG (op);
+     
+       regno = REGNO (op);
+       return (regno >= FIRST_PSEUDO_REGISTER || GENERAL_REGNO_P (regno));
+     })
+
+

Predicates written with define_predicate automatically include +a test that mode is VOIDmode, or op has the same +mode as mode, or op is a CONST_INT or +CONST_DOUBLE. They do not check specifically for +integer CONST_DOUBLE, nor do they test that the value of either +kind of constant fits in the requested mode. This is because +target-specific predicates that take constants usually have to do more +stringent value checks anyway. If you need the exact same treatment +of CONST_INT or CONST_DOUBLE that the generic predicates +provide, use a MATCH_OPERAND subexpression to call +const_int_operand, const_double_operand, or +immediate_operand. + +

Predicates written with define_special_predicate do not get any +automatic mode checks, and are treated as having special mode handling +by genrecog. + +

The program genpreds is responsible for generating code to +test predicates. It also writes a header file containing function +declarations for all machine-specific predicates. It is not necessary +to declare these predicates in cpu-protos.h. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Delay-Slots.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Delay-Slots.html new file mode 100644 index 0000000..8e3a1d5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Delay-Slots.html @@ -0,0 +1,123 @@ + + +Delay Slots - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+ +

14.19.7 Delay Slot Scheduling

+ +

+The insn attribute mechanism can be used to specify the requirements for +delay slots, if any, on a target machine. An instruction is said to +require a delay slot if some instructions that are physically +after the instruction are executed as if they were located before it. +Classic examples are branch and call instructions, which often execute +the following instruction before the branch or call is performed. + +

On some machines, conditional branch instructions can optionally +annul instructions in the delay slot. This means that the +instruction will not be executed for certain branch outcomes. Both +instructions that annul if the branch is true and instructions that +annul if the branch is false are supported. + +

Delay slot scheduling differs from instruction scheduling in that +determining whether an instruction needs a delay slot is dependent only +on the type of instruction being generated, not on data flow between the +instructions. See the next section for a discussion of data-dependent +instruction scheduling. + +

The requirement of an insn needing one or more delay slots is indicated +via the define_delay expression. It has the following form: + +

     (define_delay test
+                   [delay-1 annul-true-1 annul-false-1
+                    delay-2 annul-true-2 annul-false-2
+                    ...])
+
+

test is an attribute test that indicates whether this +define_delay applies to a particular insn. If so, the number of +required delay slots is determined by the length of the vector specified +as the second argument. An insn placed in delay slot n must +satisfy attribute test delay-n. annul-true-n is an +attribute test that specifies which insns may be annulled if the branch +is true. Similarly, annul-false-n specifies which insns in the +delay slot may be annulled if the branch is false. If annulling is not +supported for that delay slot, (nil) should be coded. + +

For example, in the common case where branch and call insns require +a single delay slot, which may contain any insn other than a branch or +call, the following would be placed in the md file: + +

     (define_delay (eq_attr "type" "branch,call")
+                   [(eq_attr "type" "!branch,call") (nil) (nil)])
+
+

Multiple define_delay expressions may be specified. In this +case, each such expression specifies different delay slot requirements +and there must be no insn for which tests in two define_delay +expressions are both true. + +

For example, if we have a machine that requires one delay slot for branches +but two for calls, no delay slot can contain a branch or call insn, +and any valid insn in the delay slot for the branch can be annulled if the +branch is true, we might represent this as follows: + +

     (define_delay (eq_attr "type" "branch")
+        [(eq_attr "type" "!branch,call")
+         (eq_attr "type" "!branch,call")
+         (nil)])
+     
+     (define_delay (eq_attr "type" "call")
+                   [(eq_attr "type" "!branch,call") (nil) (nil)
+                    (eq_attr "type" "!branch,call") (nil) (nil)])
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dependency-analysis.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dependency-analysis.html new file mode 100644 index 0000000..2e26abd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dependency-analysis.html @@ -0,0 +1,179 @@ + + +Dependency analysis - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + + +

11.8 Data Dependency Analysis

+ +

+The code for the data dependence analysis can be found in +tree-data-ref.c and its interface and data structures are +described in tree-data-ref.h. The function that computes the +data dependences for all the array and pointer references for a given +loop is compute_data_dependences_for_loop. This function is +currently used by the linear loop transform and the vectorization +passes. Before calling this function, one has to allocate two vectors: +a first vector will contain the set of data references that are +contained in the analyzed loop body, and the second vector will contain +the dependence relations between the data references. Thus if the +vector of data references is of size n, the vector containing the +dependence relations will contain n*n elements. However if the +analyzed loop contains side effects, such as calls that potentially can +interfere with the data references in the current analyzed loop, the +analysis stops while scanning the loop body for data references, and +inserts a single chrec_dont_know in the dependence relation +array. + +

The data references are discovered in a particular order during the +scanning of the loop body: the loop body is analyzed in execution order, +and the data references of each statement are pushed at the end of the +data reference array. Two data references syntactically occur in the +program in the same order as in the array of data references. This +syntactic order is important in some classical data dependence tests, +and mapping this order to the elements of this array avoids costly +queries to the loop body representation. + +

Three types of data references are currently handled: ARRAY_REF, +INDIRECT_REF and COMPONENT_REF. The data structure for the data reference +is data_reference, where data_reference_p is a name of a +pointer to the data reference structure. The structure contains the +following elements: + +

    +
  • base_object_info: Provides information about the base object +of the data reference and its access functions. These access functions +represent the evolution of the data reference in the loop relative to +its base, in keeping with the classical meaning of the data reference +access function for the support of arrays. For example, for a reference +a.b[i][j], the base object is a.b and the access functions, +one for each array subscript, are: +{i_init, + i_step}_1, {j_init, +, j_step}_2. + +
  • first_location_in_loop: Provides information about the first +location accessed by the data reference in the loop and about the access +function used to represent evolution relative to this location. This data +is used to support pointers, and is not used for arrays (for which we +have base objects). Pointer accesses are represented as a one-dimensional +access that starts from the first location accessed in the loop. For +example: + +
                    for1 i
    +                   for2 j
    +                    *((int *)p + i + j) = a[i][j];
    +     
    +

    The access function of the pointer access is {0, + 4B}_for2 +relative to p + i. The access functions of the array are +{i_init, + i_step}_for1 and {j_init, +, j_step}_for2 +relative to a. + +

    Usually, the object the pointer refers to is either unknown, or we can't +prove that the access is confined to the boundaries of a certain object. + +

    Two data references can be compared only if at least one of these two +representations has all its fields filled for both data references. + +

    The current strategy for data dependence tests is as follows: +If both a and b are represented as arrays, compare +a.base_object and b.base_object; +if they are equal, apply dependence tests (use access functions based on +base_objects). +Else if both a and b are represented as pointers, compare +a.first_location and b.first_location; +if they are equal, apply dependence tests (use access functions based on +first location). +However, if a and b are represented differently, only try +to prove that the bases are definitely different. + +

  • Aliasing information. +
  • Alignment information. +
+ +

The structure describing the relation between two data references is +data_dependence_relation and the shorter name for a pointer to +such a structure is ddr_p. This structure contains: + +

    +
  • a pointer to each data reference, +
  • a tree node are_dependent that is set to chrec_known +if the analysis has proved that there is no dependence between these two +data references, chrec_dont_know if the analysis was not able to +determine any useful result and potentially there could exist a +dependence between these data references, and are_dependent is +set to NULL_TREE if there exist a dependence relation between the +data references, and the description of this dependence relation is +given in the subscripts, dir_vects, and dist_vects +arrays, +
  • a boolean that determines whether the dependence relation can be +represented by a classical distance vector, +
  • an array subscripts that contains a description of each +subscript of the data references. Given two array accesses a +subscript is the tuple composed of the access functions for a given +dimension. For example, given A[f1][f2][f3] and +B[g1][g2][g3], there are three subscripts: (f1, g1), (f2, +g2), (f3, g3). +
  • two arrays dir_vects and dist_vects that contain +classical representations of the data dependences under the form of +direction and distance dependence vectors, +
  • an array of loops loop_nest that contains the loops to +which the distance and direction vectors refer to. +
+ +

Several functions for pretty printing the information extracted by the +data dependence analysis are available: dump_ddrs prints with a +maximum verbosity the details of a data dependence relations array, +dump_dist_dir_vectors prints only the classical distance and +direction vectors for a data dependence relations array, and +dump_data_references prints the details of the data references +contained in a data reference array. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dependent-Patterns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dependent-Patterns.html new file mode 100644 index 0000000..ebd433a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dependent-Patterns.html @@ -0,0 +1,123 @@ + + +Dependent Patterns - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Pattern Ordering, +Up: Machine Desc +



+
+ +

14.11 Interdependence of Patterns

+ +

+Every machine description must have a named pattern for each of the +conditional branch names bcond. The recognition template +must always have the form + +

     (set (pc)
+          (if_then_else (cond (cc0) (const_int 0))
+                        (label_ref (match_operand 0 "" ""))
+                        (pc)))
+
+

In addition, every machine description must have an anonymous pattern +for each of the possible reverse-conditional branches. Their templates +look like + +

     (set (pc)
+          (if_then_else (cond (cc0) (const_int 0))
+                        (pc)
+                        (label_ref (match_operand 0 "" ""))))
+
+

They are necessary because jump optimization can turn direct-conditional +branches into reverse-conditional branches. + +

It is often convenient to use the match_operator construct to +reduce the number of patterns that must be specified for branches. For +example, + +

     (define_insn ""
+       [(set (pc)
+             (if_then_else (match_operator 0 "comparison_operator"
+                                           [(cc0) (const_int 0)])
+                           (pc)
+                           (label_ref (match_operand 1 "" ""))))]
+       "condition"
+       "...")
+
+

In some cases machines support instructions identical except for the +machine mode of one or more operands. For example, there may be +“sign-extend halfword” and “sign-extend byte” instructions whose +patterns are + +

     (set (match_operand:SI 0 ...)
+          (extend:SI (match_operand:HI 1 ...)))
+     
+     (set (match_operand:SI 0 ...)
+          (extend:SI (match_operand:QI 1 ...)))
+
+

Constant integers do not specify a machine mode, so an instruction to +extend a constant value could match either pattern. The pattern it +actually will match is the one that appears first in the file. For correct +results, this must be the one for the widest possible mode (HImode, +here). If the pattern matches the QImode instruction, the results +will be incorrect if the constant value does not actually fit that mode. + +

Such instructions to extend constants are rarely generated because they are +optimized away, but they do occasionally happen in nonoptimized +compilations. + +

If a constraint in a pattern allows a constant, the reload pass may +replace a register with a constant permitted by the constraint in some +cases. Similarly for memory references. Because of this substitution, +you should not provide separate patterns for increment and decrement +instructions. Instead, they should be generated from the same pattern +that supports register-register add insns by examining the operands and +generating the appropriate machine instruction. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dispatch-Tables.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dispatch-Tables.html new file mode 100644 index 0000000..d3dc00b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Dispatch-Tables.html @@ -0,0 +1,153 @@ + + +Dispatch Tables - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+ +

15.21.8 Output of Dispatch Tables

+ + +

This concerns dispatch tables. + +

+ +

+— Macro: ASM_OUTPUT_ADDR_DIFF_ELT (stream, body, value, rel)
+

A C statement to output to the stdio stream stream an assembler +pseudo-instruction to generate a difference between two labels. +value and rel are the numbers of two internal labels. The +definitions of these labels are output using +(*targetm.asm_out.internal_label), and they must be printed in the same +way here. For example, + +

          fprintf (stream, "\t.word L%d-L%d\n",
+                   value, rel)
+     
+

You must provide this macro on machines where the addresses in a +dispatch table are relative to the table's own address. If defined, GCC +will also use this macro on all machines when producing PIC. +body is the body of the ADDR_DIFF_VEC; it is provided so that the +mode and flags can be read. +

+ +
+— Macro: ASM_OUTPUT_ADDR_VEC_ELT (stream, value)
+

This macro should be provided on machines where the addresses +in a dispatch table are absolute. + +

The definition should be a C statement to output to the stdio stream +stream an assembler pseudo-instruction to generate a reference to +a label. value is the number of an internal label whose +definition is output using (*targetm.asm_out.internal_label). +For example, + +

          fprintf (stream, "\t.word L%d\n", value)
+     
+
+ +
+— Macro: ASM_OUTPUT_CASE_LABEL (stream, prefix, num, table)
+

Define this if the label before a jump-table needs to be output +specially. The first three arguments are the same as for +(*targetm.asm_out.internal_label); the fourth argument is the +jump-table which follows (a jump_insn containing an +addr_vec or addr_diff_vec). + +

This feature is used on system V to output a swbeg statement +for the table. + +

If this macro is not defined, these labels are output with +(*targetm.asm_out.internal_label). +

+ +
+— Macro: ASM_OUTPUT_CASE_END (stream, num, table)
+

Define this if something special must be output at the end of a +jump-table. The definition should be a C statement to be executed +after the assembler code for the table is written. It should write +the appropriate code to stdio stream stream. The argument +table is the jump-table insn, and num is the label-number +of the preceding label. + +

If this macro is not defined, nothing special is output at the end of +the jump-table. +

+ +
+— Target Hook: void TARGET_ASM_EMIT_UNWIND_LABEL (stream, decl, for_eh, empty)
+

This target hook emits a label at the beginning of each FDE. It +should be defined on targets where FDEs need special labels, and it +should write the appropriate label, for the FDE associated with the +function declaration decl, to the stdio stream stream. +The third argument, for_eh, is a boolean: true if this is for an +exception table. The fourth argument, empty, is a boolean: +true if this is a placeholder label for an omitted FDE. + +

The default is that FDEs are not given nonlocal labels. +

+ +
+— Target Hook: void TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL (stream)
+

This target hook emits a label at the beginning of the exception table. +It should be defined on targets where it is desirable for the table +to be broken up according to function. + +

The default is that no label is emitted. +

+ +
+— Target Hook: void TARGET_UNWIND_EMIT (FILE * stream, rtx insn)
+

This target hook emits and assembly directives required to unwind the +given instruction. This is only used when TARGET_UNWIND_INFO is set. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Documentation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Documentation.html new file mode 100644 index 0000000..1fec922 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Documentation.html @@ -0,0 +1,73 @@ + + +Documentation - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Headers, +Up: gcc Directory +



+
+ +

6.3.7 Building Documentation

+ +

The main GCC documentation is in the form of manuals in Texinfo +format. These are installed in Info format; DVI versions may be +generated by make dvi, PDF versions by make pdf, and +HTML versions by make html. In addition, some man pages are +generated from the Texinfo manuals, there are some other text files +with miscellaneous documentation, and runtime libraries have their own +documentation outside the gcc directory. FIXME: document the +documentation for runtime libraries somewhere. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Driver.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Driver.html new file mode 100644 index 0000000..dfaf1ac --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Driver.html @@ -0,0 +1,671 @@ + + +Driver - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Target Structure, +Up: Target Macros +



+
+ +

15.2 Controlling the Compilation Driver, gcc

+ +

+ +You can control the compilation driver. + +

+— Macro: SWITCH_TAKES_ARG (char)
+

A C expression which determines whether the option -char +takes arguments. The value should be the number of arguments that +option takes–zero, for many options. + +

By default, this macro is defined as +DEFAULT_SWITCH_TAKES_ARG, which handles the standard options +properly. You need not define SWITCH_TAKES_ARG unless you +wish to add additional options which take arguments. Any redefinition +should call DEFAULT_SWITCH_TAKES_ARG and then check for +additional options. +

+ +
+— Macro: WORD_SWITCH_TAKES_ARG (name)
+

A C expression which determines whether the option -name +takes arguments. The value should be the number of arguments that +option takes–zero, for many options. This macro rather than +SWITCH_TAKES_ARG is used for multi-character option names. + +

By default, this macro is defined as +DEFAULT_WORD_SWITCH_TAKES_ARG, which handles the standard options +properly. You need not define WORD_SWITCH_TAKES_ARG unless you +wish to add additional options which take arguments. Any redefinition +should call DEFAULT_WORD_SWITCH_TAKES_ARG and then check for +additional options. +

+ +
+— Macro: SWITCH_CURTAILS_COMPILATION (char)
+

A C expression which determines whether the option -char +stops compilation before the generation of an executable. The value is +boolean, nonzero if the option does stop an executable from being +generated, zero otherwise. + +

By default, this macro is defined as +DEFAULT_SWITCH_CURTAILS_COMPILATION, which handles the standard +options properly. You need not define +SWITCH_CURTAILS_COMPILATION unless you wish to add additional +options which affect the generation of an executable. Any redefinition +should call DEFAULT_SWITCH_CURTAILS_COMPILATION and then check +for additional options. +

+ +
+— Macro: SWITCHES_NEED_SPACES
+

A string-valued C expression which enumerates the options for which +the linker needs a space between the option and its argument. + +

If this macro is not defined, the default value is "". +

+ +
+— Macro: TARGET_OPTION_TRANSLATE_TABLE
+

If defined, a list of pairs of strings, the first of which is a +potential command line target to the gcc driver program, and the +second of which is a space-separated (tabs and other whitespace are not +supported) list of options with which to replace the first option. The +target defining this list is responsible for assuring that the results +are valid. Replacement options may not be the --opt style, they +must be the -opt style. It is the intention of this macro to +provide a mechanism for substitution that affects the multilibs chosen, +such as one option that enables many options, some of which select +multilibs. Example nonsensical definition, where -malt-abi, +-EB, and -mspoo cause different multilibs to be chosen: + +

          #define TARGET_OPTION_TRANSLATE_TABLE \
+          { "-fast",   "-march=fast-foo -malt-abi -I/usr/fast-foo" }, \
+          { "-compat", "-EB -malign=4 -mspoo" }
+     
+
+ +
+— Macro: DRIVER_SELF_SPECS
+

A list of specs for the driver itself. It should be a suitable +initializer for an array of strings, with no surrounding braces. + +

The driver applies these specs to its own command line between loading +default specs files (but not command-line specified ones) and +choosing the multilib directory or running any subcommands. It +applies them in the order given, so each spec can depend on the +options added by earlier ones. It is also possible to remove options +using %<option in the usual way. + +

This macro can be useful when a port has several interdependent target +options. It provides a way of standardizing the command line so +that the other specs are easier to write. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: OPTION_DEFAULT_SPECS
+

A list of specs used to support configure-time default options (i.e. +--with options) in the driver. It should be a suitable initializer +for an array of structures, each containing two strings, without the +outermost pair of surrounding braces. + +

The first item in the pair is the name of the default. This must match +the code in config.gcc for the target. The second item is a spec +to apply if a default with this name was specified. The string +%(VALUE) in the spec will be replaced by the value of the default +everywhere it occurs. + +

The driver will apply these specs to its own command line between loading +default specs files and processing DRIVER_SELF_SPECS, using +the same mechanism as DRIVER_SELF_SPECS. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: CPP_SPEC
+

A C string constant that tells the GCC driver program options to +pass to CPP. It can also specify how to translate options you +give to GCC into options for GCC to pass to the CPP. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: CPLUSPLUS_CPP_SPEC
+

This macro is just like CPP_SPEC, but is used for C++, rather +than C. If you do not define this macro, then the value of +CPP_SPEC (if any) will be used instead. +

+ +
+— Macro: CC1_SPEC
+

A C string constant that tells the GCC driver program options to +pass to cc1, cc1plus, f771, and the other language +front ends. +It can also specify how to translate options you give to GCC into options +for GCC to pass to front ends. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: CC1PLUS_SPEC
+

A C string constant that tells the GCC driver program options to +pass to cc1plus. It can also specify how to translate options you +give to GCC into options for GCC to pass to the cc1plus. + +

Do not define this macro if it does not need to do anything. +Note that everything defined in CC1_SPEC is already passed to +cc1plus so there is no need to duplicate the contents of +CC1_SPEC in CC1PLUS_SPEC. +

+ +
+— Macro: ASM_SPEC
+

A C string constant that tells the GCC driver program options to +pass to the assembler. It can also specify how to translate options +you give to GCC into options for GCC to pass to the assembler. +See the file sun3.h for an example of this. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: ASM_FINAL_SPEC
+

A C string constant that tells the GCC driver program how to +run any programs which cleanup after the normal assembler. +Normally, this is not needed. See the file mips.h for +an example of this. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: AS_NEEDS_DASH_FOR_PIPED_INPUT
+

Define this macro, with no value, if the driver should give the assembler +an argument consisting of a single dash, -, to instruct it to +read from its standard input (which will be a pipe connected to the +output of the compiler proper). This argument is given after any +-o option specifying the name of the output file. + +

If you do not define this macro, the assembler is assumed to read its +standard input if given no non-option arguments. If your assembler +cannot read standard input at all, use a %{pipe:%e} construct; +see mips.h for instance. +

+ +
+— Macro: LINK_SPEC
+

A C string constant that tells the GCC driver program options to +pass to the linker. It can also specify how to translate options you +give to GCC into options for GCC to pass to the linker. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: LIB_SPEC
+

Another C string constant used much like LINK_SPEC. The difference +between the two is that LIB_SPEC is used at the end of the +command given to the linker. + +

If this macro is not defined, a default is provided that +loads the standard C library from the usual place. See gcc.c. +

+ +
+— Macro: LIBGCC_SPEC
+

Another C string constant that tells the GCC driver program +how and when to place a reference to libgcc.a into the +linker command line. This constant is placed both before and after +the value of LIB_SPEC. + +

If this macro is not defined, the GCC driver provides a default that +passes the string -lgcc to the linker. +

+ +
+— Macro: REAL_LIBGCC_SPEC
+

By default, if ENABLE_SHARED_LIBGCC is defined, the +LIBGCC_SPEC is not directly used by the driver program but is +instead modified to refer to different versions of libgcc.a +depending on the values of the command line flags -static, +-shared, -static-libgcc, and -shared-libgcc. On +targets where these modifications are inappropriate, define +REAL_LIBGCC_SPEC instead. REAL_LIBGCC_SPEC tells the +driver how to place a reference to libgcc on the link command +line, but, unlike LIBGCC_SPEC, it is used unmodified. +

+ +
+— Macro: USE_LD_AS_NEEDED
+

A macro that controls the modifications to LIBGCC_SPEC +mentioned in REAL_LIBGCC_SPEC. If nonzero, a spec will be +generated that uses –as-needed and the shared libgcc in place of the +static exception handler library, when linking without any of +-static, -static-libgcc, or -shared-libgcc. +

+ +
+— Macro: LINK_EH_SPEC
+

If defined, this C string constant is added to LINK_SPEC. +When USE_LD_AS_NEEDED is zero or undefined, it also affects +the modifications to LIBGCC_SPEC mentioned in +REAL_LIBGCC_SPEC. +

+ +
+— Macro: STARTFILE_SPEC
+

Another C string constant used much like LINK_SPEC. The +difference between the two is that STARTFILE_SPEC is used at +the very beginning of the command given to the linker. + +

If this macro is not defined, a default is provided that loads the +standard C startup file from the usual place. See gcc.c. +

+ +
+— Macro: ENDFILE_SPEC
+

Another C string constant used much like LINK_SPEC. The +difference between the two is that ENDFILE_SPEC is used at +the very end of the command given to the linker. + +

Do not define this macro if it does not need to do anything. +

+ +
+— Macro: THREAD_MODEL_SPEC
+

GCC -v will print the thread model GCC was configured to use. +However, this doesn't work on platforms that are multilibbed on thread +models, such as AIX 4.3. On such platforms, define +THREAD_MODEL_SPEC such that it evaluates to a string without +blanks that names one of the recognized thread models. %*, the +default value of this macro, will expand to the value of +thread_file set in config.gcc. +

+ +
+— Macro: SYSROOT_SUFFIX_SPEC
+

Define this macro to add a suffix to the target sysroot when GCC is +configured with a sysroot. This will cause GCC to search for usr/lib, +et al, within sysroot+suffix. +

+ +
+— Macro: SYSROOT_HEADERS_SUFFIX_SPEC
+

Define this macro to add a headers_suffix to the target sysroot when +GCC is configured with a sysroot. This will cause GCC to pass the +updated sysroot+headers_suffix to CPP, causing it to search for +usr/include, et al, within sysroot+headers_suffix. +

+ +
+— Macro: EXTRA_SPECS
+

Define this macro to provide additional specifications to put in the +specs file that can be used in various specifications like +CC1_SPEC. + +

The definition should be an initializer for an array of structures, +containing a string constant, that defines the specification name, and a +string constant that provides the specification. + +

Do not define this macro if it does not need to do anything. + +

EXTRA_SPECS is useful when an architecture contains several +related targets, which have various ..._SPECS which are similar +to each other, and the maintainer would like one central place to keep +these definitions. + +

For example, the PowerPC System V.4 targets use EXTRA_SPECS to +define either _CALL_SYSV when the System V calling sequence is +used or _CALL_AIX when the older AIX-based calling sequence is +used. + +

The config/rs6000/rs6000.h target file defines: + +

          #define EXTRA_SPECS \
+            { "cpp_sysv_default", CPP_SYSV_DEFAULT },
+          
+          #define CPP_SYS_DEFAULT ""
+     
+

The config/rs6000/sysv.h target file defines: +

          #undef CPP_SPEC
+          #define CPP_SPEC \
+          "%{posix: -D_POSIX_SOURCE } \
+          %{mcall-sysv: -D_CALL_SYSV } \
+          %{!mcall-sysv: %(cpp_sysv_default) } \
+          %{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT}"
+          
+          #undef CPP_SYSV_DEFAULT
+          #define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
+     
+

while the config/rs6000/eabiaix.h target file defines +CPP_SYSV_DEFAULT as: + +

          #undef CPP_SYSV_DEFAULT
+          #define CPP_SYSV_DEFAULT "-D_CALL_AIX"
+     
+
+ +
+— Macro: LINK_LIBGCC_SPECIAL_1
+

Define this macro if the driver program should find the library +libgcc.a. If you do not define this macro, the driver program will pass +the argument -lgcc to tell the linker to do the search. +

+ +
+— Macro: LINK_GCC_C_SEQUENCE_SPEC
+

The sequence in which libgcc and libc are specified to the linker. +By default this is %G %L %G. +

+ +
+— Macro: LINK_COMMAND_SPEC
+

A C string constant giving the complete command line need to execute the +linker. When you do this, you will need to update your port each time a +change is made to the link command line within gcc.c. Therefore, +define this macro only if you need to completely redefine the command +line for invoking the linker and there is no other way to accomplish +the effect you need. Overriding this macro may be avoidable by overriding +LINK_GCC_C_SEQUENCE_SPEC instead. +

+ +
+— Macro: LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
+

A nonzero value causes collect2 to remove duplicate -Ldirectory search +directories from linking commands. Do not give it a nonzero value if +removing duplicate search directories changes the linker's semantics. +

+ +
+— Macro: MULTILIB_DEFAULTS
+

Define this macro as a C expression for the initializer of an array of +string to tell the driver program which options are defaults for this +target and thus do not need to be handled specially when using +MULTILIB_OPTIONS. + +

Do not define this macro if MULTILIB_OPTIONS is not defined in +the target makefile fragment or if none of the options listed in +MULTILIB_OPTIONS are set by default. +See Target Fragment. +

+ +
+— Macro: RELATIVE_PREFIX_NOT_LINKDIR
+

Define this macro to tell gcc that it should only translate +a -B prefix into a -L linker option if the prefix +indicates an absolute file name. +

+ +
+— Macro: MD_EXEC_PREFIX
+

If defined, this macro is an additional prefix to try after +STANDARD_EXEC_PREFIX. MD_EXEC_PREFIX is not searched +when the -b option is used, or the compiler is built as a cross +compiler. If you define MD_EXEC_PREFIX, then be sure to add it +to the list of directories used to find the assembler in configure.in. +

+ +
+— Macro: STANDARD_STARTFILE_PREFIX
+

Define this macro as a C string constant if you wish to override the +standard choice of libdir as the default prefix to +try when searching for startup files such as crt0.o. +STANDARD_STARTFILE_PREFIX is not searched when the compiler +is built as a cross compiler. +

+ +
+— Macro: STANDARD_STARTFILE_PREFIX_1
+

Define this macro as a C string constant if you wish to override the +standard choice of /lib as a prefix to try after the default prefix +when searching for startup files such as crt0.o. +STANDARD_STARTFILE_PREFIX_1 is not searched when the compiler +is built as a cross compiler. +

+ +
+— Macro: STANDARD_STARTFILE_PREFIX_2
+

Define this macro as a C string constant if you wish to override the +standard choice of /lib as yet another prefix to try after the +default prefix when searching for startup files such as crt0.o. +STANDARD_STARTFILE_PREFIX_2 is not searched when the compiler +is built as a cross compiler. +

+ +
+— Macro: MD_STARTFILE_PREFIX
+

If defined, this macro supplies an additional prefix to try after the +standard prefixes. MD_EXEC_PREFIX is not searched when the +-b option is used, or when the compiler is built as a cross +compiler. +

+ +
+— Macro: MD_STARTFILE_PREFIX_1
+

If defined, this macro supplies yet another prefix to try after the +standard prefixes. It is not searched when the -b option is +used, or when the compiler is built as a cross compiler. +

+ +
+— Macro: INIT_ENVIRONMENT
+

Define this macro as a C string constant if you wish to set environment +variables for programs called by the driver, such as the assembler and +loader. The driver passes the value of this macro to putenv to +initialize the necessary environment variables. +

+ +
+— Macro: LOCAL_INCLUDE_DIR
+

Define this macro as a C string constant if you wish to override the +standard choice of /usr/local/include as the default prefix to +try when searching for local header files. LOCAL_INCLUDE_DIR +comes before SYSTEM_INCLUDE_DIR in the search order. + +

Cross compilers do not search either /usr/local/include or its +replacement. +

+ +
+— Macro: MODIFY_TARGET_NAME
+

Define this macro if you wish to define command-line switches that +modify the default target name. + +

For each switch, you can include a string to be appended to the first +part of the configuration name or a string to be deleted from the +configuration name, if present. The definition should be an initializer +for an array of structures. Each array element should have three +elements: the switch name (a string constant, including the initial +dash), one of the enumeration codes ADD or DELETE to +indicate whether the string should be inserted or deleted, and the string +to be inserted or deleted (a string constant). + +

For example, on a machine where 64 at the end of the +configuration name denotes a 64-bit target and you want the -32 +and -64 switches to select between 32- and 64-bit targets, you would +code + +

          #define MODIFY_TARGET_NAME \
+            { { "-32", DELETE, "64"}, \
+               {"-64", ADD, "64"}}
+     
+
+ +
+— Macro: SYSTEM_INCLUDE_DIR
+

Define this macro as a C string constant if you wish to specify a +system-specific directory to search for header files before the standard +directory. SYSTEM_INCLUDE_DIR comes before +STANDARD_INCLUDE_DIR in the search order. + +

Cross compilers do not use this macro and do not search the directory +specified. +

+ +
+— Macro: STANDARD_INCLUDE_DIR
+

Define this macro as a C string constant if you wish to override the +standard choice of /usr/include as the default prefix to +try when searching for header files. + +

Cross compilers ignore this macro and do not search either +/usr/include or its replacement. +

+ +
+— Macro: STANDARD_INCLUDE_COMPONENT
+

The “component” corresponding to STANDARD_INCLUDE_DIR. +See INCLUDE_DEFAULTS, below, for the description of components. +If you do not define this macro, no component is used. +

+ +
+— Macro: INCLUDE_DEFAULTS
+

Define this macro if you wish to override the entire default search path +for include files. For a native compiler, the default search path +usually consists of GCC_INCLUDE_DIR, LOCAL_INCLUDE_DIR, +SYSTEM_INCLUDE_DIR, GPLUSPLUS_INCLUDE_DIR, and +STANDARD_INCLUDE_DIR. In addition, GPLUSPLUS_INCLUDE_DIR +and GCC_INCLUDE_DIR are defined automatically by Makefile, +and specify private search areas for GCC. The directory +GPLUSPLUS_INCLUDE_DIR is used only for C++ programs. + +

The definition should be an initializer for an array of structures. +Each array element should have four elements: the directory name (a +string constant), the component name (also a string constant), a flag +for C++-only directories, +and a flag showing that the includes in the directory don't need to be +wrapped in extern C when compiling C++. Mark the end of +the array with a null element. + +

The component name denotes what GNU package the include file is part of, +if any, in all uppercase letters. For example, it might be GCC +or BINUTILS. If the package is part of a vendor-supplied +operating system, code the component name as 0. + +

For example, here is the definition used for VAX/VMS: + +

          #define INCLUDE_DEFAULTS \
+          {                                       \
+            { "GNU_GXX_INCLUDE:", "G++", 1, 1},   \
+            { "GNU_CC_INCLUDE:", "GCC", 0, 0},    \
+            { "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0},  \
+            { ".", 0, 0, 0},                      \
+            { 0, 0, 0, 0}                         \
+          }
+     
+
+ +

Here is the order of prefixes tried for exec files: + +

    +
  1. Any prefixes specified by the user with -B. + +
  2. The environment variable GCC_EXEC_PREFIX or, if GCC_EXEC_PREFIX +is not set and the compiler has not been installed in the configure-time +prefix, the location in which the compiler has actually been installed. + +
  3. The directories specified by the environment variable COMPILER_PATH. + +
  4. The macro STANDARD_EXEC_PREFIX, if the compiler has been installed +in the configured-time prefix. + +
  5. The location /usr/libexec/gcc/, but only if this is a native compiler. + +
  6. The location /usr/lib/gcc/, but only if this is a native compiler. + +
  7. The macro MD_EXEC_PREFIX, if defined, but only if this is a native +compiler. +
+ +

Here is the order of prefixes tried for startfiles: + +

    +
  1. Any prefixes specified by the user with -B. + +
  2. The environment variable GCC_EXEC_PREFIX or its automatically determined +value based on the installed toolchain location. + +
  3. The directories specified by the environment variable LIBRARY_PATH +(or port-specific name; native only, cross compilers do not use this). + +
  4. The macro STANDARD_EXEC_PREFIX, but only if the toolchain is installed +in the configured prefix or this is a native compiler. + +
  5. The location /usr/lib/gcc/, but only if this is a native compiler. + +
  6. The macro MD_EXEC_PREFIX, if defined, but only if this is a native +compiler. + +
  7. The macro MD_STARTFILE_PREFIX, if defined, but only if this is a +native compiler, or we have a target system root. + +
  8. The macro MD_STARTFILE_PREFIX_1, if defined, but only if this is a +native compiler, or we have a target system root. + +
  9. The macro STANDARD_STARTFILE_PREFIX, with any sysroot modifications. +If this path is relative it will be prefixed by GCC_EXEC_PREFIX and +the machine suffix or STANDARD_EXEC_PREFIX and the machine suffix. + +
  10. The macro STANDARD_STARTFILE_PREFIX_1, but only if this is a native +compiler, or we have a target system root. The default for this macro is +/lib/. + +
  11. The macro STANDARD_STARTFILE_PREFIX_2, but only if this is a native +compiler, or we have a target system root. The default for this macro is +/usr/lib/. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Edges.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Edges.html new file mode 100644 index 0000000..2be0ccf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Edges.html @@ -0,0 +1,239 @@ + + +Edges - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Basic Blocks, +Up: Control Flow +



+
+ +

13.2 Edges

+ +

Edges represent possible control flow transfers from the end of some +basic block A to the head of another basic block B. We say that A is +a predecessor of B, and B is a successor of A. Edges are represented +in GCC with the edge data type. Each edge acts as a +link between two basic blocks: the src member of an edge +points to the predecessor basic block of the dest basic block. +The members preds and succs of the basic_block data +type point to type-safe vectors of edges to the predecessors and +successors of the block. + +

When walking the edges in an edge vector, edge iterators should +be used. Edge iterators are constructed using the +edge_iterator data structure and several methods are available +to operate on them: + +

+
ei_start
This function initializes an edge_iterator that points to the +first edge in a vector of edges. + +
ei_last
This function initializes an edge_iterator that points to the +last edge in a vector of edges. + +
ei_end_p
This predicate is true if an edge_iterator represents +the last edge in an edge vector. + +
ei_one_before_end_p
This predicate is true if an edge_iterator represents +the second last edge in an edge vector. + +
ei_next
This function takes a pointer to an edge_iterator and makes it +point to the next edge in the sequence. + +
ei_prev
This function takes a pointer to an edge_iterator and makes it +point to the previous edge in the sequence. + +
ei_edge
This function returns the edge currently pointed to by an +edge_iterator. + +
ei_safe_safe
This function returns the edge currently pointed to by an +edge_iterator, but returns NULL if the iterator is +pointing at the end of the sequence. This function has been provided +for existing code makes the assumption that a NULL edge +indicates the end of the sequence. + +
+ +

The convenience macro FOR_EACH_EDGE can be used to visit all of +the edges in a sequence of predecessor or successor edges. It must +not be used when an element might be removed during the traversal, +otherwise elements will be missed. Here is an example of how to use +the macro: + +

     edge e;
+     edge_iterator ei;
+     
+     FOR_EACH_EDGE (e, ei, bb->succs)
+       {
+          if (e->flags & EDGE_FALLTHRU)
+            break;
+       }
+
+

There are various reasons why control flow may transfer from one block +to another. One possibility is that some instruction, for example a +CODE_LABEL, in a linearized instruction stream just always +starts a new basic block. In this case a fall-thru edge links +the basic block to the first following basic block. But there are +several other reasons why edges may be created. The flags +field of the edge data type is used to store information +about the type of edge we are dealing with. Each edge is of one of +the following types: + +

+
jump
No type flags are set for edges corresponding to jump instructions. +These edges are used for unconditional or conditional jumps and in +RTL also for table jumps. They are the easiest to manipulate as they +may be freely redirected when the flow graph is not in SSA form. + +
fall-thru
Fall-thru edges are present in case where the basic block may continue +execution to the following one without branching. These edges have +the EDGE_FALLTHRU flag set. Unlike other types of edges, these +edges must come into the basic block immediately following in the +instruction stream. The function force_nonfallthru is +available to insert an unconditional jump in the case that redirection +is needed. Note that this may require creation of a new basic block. + +
exception handling
Exception handling edges represent possible control transfers from a +trapping instruction to an exception handler. The definition of +“trapping” varies. In C++, only function calls can throw, but for +Java, exceptions like division by zero or segmentation fault are +defined and thus each instruction possibly throwing this kind of +exception needs to be handled as control flow instruction. Exception +edges have the EDGE_ABNORMAL and EDGE_EH flags set. + +

When updating the instruction stream it is easy to change possibly +trapping instruction to non-trapping, by simply removing the exception +edge. The opposite conversion is difficult, but should not happen +anyway. The edges can be eliminated via purge_dead_edges call. + +

In the RTL representation, the destination of an exception edge is +specified by REG_EH_REGION note attached to the insn. +In case of a trapping call the EDGE_ABNORMAL_CALL flag is set +too. In the tree representation, this extra flag is not set. + +

In the RTL representation, the predicate may_trap_p may be used +to check whether instruction still may trap or not. For the tree +representation, the tree_could_trap_p predicate is available, +but this predicate only checks for possible memory traps, as in +dereferencing an invalid pointer location. + +

sibling calls
Sibling calls or tail calls terminate the function in a non-standard +way and thus an edge to the exit must be present. +EDGE_SIBCALL and EDGE_ABNORMAL are set in such case. +These edges only exist in the RTL representation. + +
computed jumps
Computed jumps contain edges to all labels in the function referenced +from the code. All those edges have EDGE_ABNORMAL flag set. +The edges used to represent computed jumps often cause compile time +performance problems, since functions consisting of many taken labels +and many computed jumps may have very dense flow graphs, so +these edges need to be handled with special care. During the earlier +stages of the compilation process, GCC tries to avoid such dense flow +graphs by factoring computed jumps. For example, given the following +series of jumps, + +
            goto *x;
+            [ ... ]
+          
+            goto *x;
+            [ ... ]
+          
+            goto *x;
+            [ ... ]
+     
+

factoring the computed jumps results in the following code sequence +which has a much simpler flow graph: + +

            goto y;
+            [ ... ]
+          
+            goto y;
+            [ ... ]
+          
+            goto y;
+            [ ... ]
+          
+          y:
+            goto *x;
+     
+

However, the classic problem with this transformation is that it has a +runtime cost in there resulting code: An extra jump. Therefore, the +computed jumps are un-factored in the later passes of the compiler. +Be aware of that when you work on passes in that area. There have +been numerous examples already where the compile time for code with +unfactored computed jumps caused some serious headaches. + +

nonlocal goto handlers
GCC allows nested functions to return into caller using a goto +to a label passed to as an argument to the callee. The labels passed +to nested functions contain special code to cleanup after function +call. Such sections of code are referred to as “nonlocal goto +receivers”. If a function contains such nonlocal goto receivers, an +edge from the call to the label is created with the +EDGE_ABNORMAL and EDGE_ABNORMAL_CALL flags set. + +
function entry points
By definition, execution of function starts at basic block 0, so there +is always an edge from the ENTRY_BLOCK_PTR to basic block 0. +There is no tree representation for alternate entry points at +this moment. In RTL, alternate entry points are specified by +CODE_LABEL with LABEL_ALTERNATE_NAME defined. This +feature is currently used for multiple entry point prologues and is +limited to post-reload passes only. This can be used by back-ends to +emit alternate prologues for functions called from different contexts. +In future full support for multiple entry functions defined by Fortran +90 needs to be implemented. + +
function exits
In the pre-reload representation a function terminates after the last +instruction in the insn chain and no explicit return instructions are +used. This corresponds to the fall-thru edge into exit block. After +reload, optimal RTL epilogues are used that use explicit (conditional) +return instructions that are represented by edges with no flags set. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Elimination.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Elimination.html new file mode 100644 index 0000000..995b8a9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Elimination.html @@ -0,0 +1,144 @@ + + +Elimination - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Frame Registers, +Up: Stack and Calling +



+
+ +

15.10.5 Eliminating Frame Pointer and Arg Pointer

+ + +

This is about eliminating the frame pointer and arg pointer. + +

+— Macro: FRAME_POINTER_REQUIRED
+

A C expression which is nonzero if a function must have and use a frame +pointer. This expression is evaluated in the reload pass. If its value is +nonzero the function will have a frame pointer. + +

The expression can in principle examine the current function and decide +according to the facts, but on most machines the constant 0 or the +constant 1 suffices. Use 0 when the machine allows code to be generated +with no frame pointer, and doing so saves some time or space. Use 1 +when there is no possible advantage to avoiding a frame pointer. + +

In certain cases, the compiler does not know how to produce valid code +without a frame pointer. The compiler recognizes those cases and +automatically gives the function a frame pointer regardless of what +FRAME_POINTER_REQUIRED says. You don't need to worry about +them. + +

In a function that does not require a frame pointer, the frame pointer +register can be allocated for ordinary usage, unless you mark it as a +fixed register. See FIXED_REGISTERS for more information. +

+ +

+ +

+— Macro: INITIAL_FRAME_POINTER_OFFSET (depth-var)
+

A C statement to store in the variable depth-var the difference +between the frame pointer and the stack pointer values immediately after +the function prologue. The value would be computed from information +such as the result of get_frame_size () and the tables of +registers regs_ever_live and call_used_regs. + +

If ELIMINABLE_REGS is defined, this macro will be not be used and +need not be defined. Otherwise, it must be defined even if +FRAME_POINTER_REQUIRED is defined to always be true; in that +case, you may set depth-var to anything. +

+ +
+— Macro: ELIMINABLE_REGS
+

If defined, this macro specifies a table of register pairs used to +eliminate unneeded registers that point into the stack frame. If it is not +defined, the only elimination attempted by the compiler is to replace +references to the frame pointer with references to the stack pointer. + +

The definition of this macro is a list of structure initializations, each +of which specifies an original and replacement register. + +

On some machines, the position of the argument pointer is not known until +the compilation is completed. In such a case, a separate hard register +must be used for the argument pointer. This register can be eliminated by +replacing it with either the frame pointer or the argument pointer, +depending on whether or not the frame pointer has been eliminated. + +

In this case, you might specify: +

          #define ELIMINABLE_REGS  \
+          {{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
+           {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
+           {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}}
+     
+

Note that the elimination of the argument pointer with the stack pointer is +specified first since that is the preferred elimination. +

+ +
+— Macro: CAN_ELIMINATE (from-reg, to-reg)
+

A C expression that returns nonzero if the compiler is allowed to try +to replace register number from-reg with register number +to-reg. This macro need only be defined if ELIMINABLE_REGS +is defined, and will usually be the constant 1, since most of the cases +preventing register elimination are things that the compiler already +knows about. +

+ +
+— Macro: INITIAL_ELIMINATION_OFFSET (from-reg, to-reg, offset-var)
+

This macro is similar to INITIAL_FRAME_POINTER_OFFSET. It +specifies the initial difference between the specified pair of +registers. This macro must be defined if ELIMINABLE_REGS is +defined. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Empty-Statements.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Empty-Statements.html new file mode 100644 index 0000000..76fb602 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Empty-Statements.html @@ -0,0 +1,68 @@ + + +Empty Statements - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Statement Sequences, +Up: Statements +



+
+ +
10.2.4.3 Empty Statements
+ +

+Whenever possible, statements with no effect are discarded. But if they +are nested within another construct which cannot be discarded for some +reason, they are instead replaced with an empty statement, generated by +build_empty_stmt. Initially, all empty statements were shared, +after the pattern of the Java front end, but this caused a lot of trouble in +practice. + +

An empty statement is represented as (void)0. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Example.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Example.html new file mode 100644 index 0000000..8f9a6cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Example.html @@ -0,0 +1,97 @@ + + +Example - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Patterns, +Up: Machine Desc +



+
+ +

14.3 Example of define_insn

+ +

+Here is an actual example of an instruction pattern, for the 68000/68020. + +

     (define_insn "tstsi"
+       [(set (cc0)
+             (match_operand:SI 0 "general_operand" "rm"))]
+       ""
+       "*
+     {
+       if (TARGET_68020 || ! ADDRESS_REG_P (operands[0]))
+         return \"tstl %0\";
+       return \"cmpl #0,%0\";
+     }")
+
+

This can also be written using braced strings: + +

     (define_insn "tstsi"
+       [(set (cc0)
+             (match_operand:SI 0 "general_operand" "rm"))]
+       ""
+     {
+       if (TARGET_68020 || ! ADDRESS_REG_P (operands[0]))
+         return "tstl %0";
+       return "cmpl #0,%0";
+     })
+
+

This is an instruction that sets the condition codes based on the value of +a general operand. It has no condition, so any insn whose RTL description +has the form shown may be handled according to this pattern. The name +tstsi means “test a SImode value” and tells the RTL generation +pass that, when it is necessary to test such a value, an insn to do so +can be constructed using this pattern. + +

The output control string is a piece of C code which chooses which +output template to return based on the kind of operand and the specific +type of CPU for which code is being generated. + +

"rm" is an operand constraint. Its meaning is explained below. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Examples.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Examples.html new file mode 100644 index 0000000..04cc82a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Examples.html @@ -0,0 +1,94 @@ + + +Examples - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Substitutions, +Up: Mode Iterators +



+
+ +
14.22.1.3 Mode Iterator Examples
+ +

Here is an example from the MIPS port. It defines the following +modes and attributes (among others): + +

     (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
+     (define_mode_attr d [(SI "") (DI "d")])
+
+

and uses the following template to define both subsi3 +and subdi3: + +

     (define_insn "sub<mode>3"
+       [(set (match_operand:GPR 0 "register_operand" "=d")
+             (minus:GPR (match_operand:GPR 1 "register_operand" "d")
+                        (match_operand:GPR 2 "register_operand" "d")))]
+       ""
+       "<d>subu\t%0,%1,%2"
+       [(set_attr "type" "arith")
+        (set_attr "mode" "<MODE>")])
+
+

This is exactly equivalent to: + +

     (define_insn "subsi3"
+       [(set (match_operand:SI 0 "register_operand" "=d")
+             (minus:SI (match_operand:SI 1 "register_operand" "d")
+                       (match_operand:SI 2 "register_operand" "d")))]
+       ""
+       "subu\t%0,%1,%2"
+       [(set_attr "type" "arith")
+        (set_attr "mode" "SI")])
+     
+     (define_insn "subdi3"
+       [(set (match_operand:DI 0 "register_operand" "=d")
+             (minus:DI (match_operand:DI 1 "register_operand" "d")
+                       (match_operand:DI 2 "register_operand" "d")))]
+       ""
+       "dsubu\t%0,%1,%2"
+       [(set_attr "type" "arith")
+        (set_attr "mode" "DI")])
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-Handling.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-Handling.html new file mode 100644 index 0000000..e6723e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-Handling.html @@ -0,0 +1,201 @@ + + +Exception Handling - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Frame Layout, +Up: Stack and Calling +



+
+ +

15.10.2 Exception Handling Support

+ +

+ +

+— Macro: EH_RETURN_DATA_REGNO (N)
+

A C expression whose value is the Nth register number used for +data by exception handlers, or INVALID_REGNUM if fewer than +N registers are usable. + +

The exception handling library routines communicate with the exception +handlers via a set of agreed upon registers. Ideally these registers +should be call-clobbered; it is possible to use call-saved registers, +but may negatively impact code size. The target must support at least +2 data registers, but should define 4 if there are enough free registers. + +

You must define this macro if you want to support call frame exception +handling like that provided by DWARF 2. +

+ +
+— Macro: EH_RETURN_STACKADJ_RTX
+

A C expression whose value is RTL representing a location in which +to store a stack adjustment to be applied before function return. +This is used to unwind the stack to an exception handler's call frame. +It will be assigned zero on code paths that return normally. + +

Typically this is a call-clobbered hard register that is otherwise +untouched by the epilogue, but could also be a stack slot. + +

Do not define this macro if the stack pointer is saved and restored +by the regular prolog and epilog code in the call frame itself; in +this case, the exception handling library routines will update the +stack location to be restored in place. Otherwise, you must define +this macro if you want to support call frame exception handling like +that provided by DWARF 2. +

+ +
+— Macro: EH_RETURN_HANDLER_RTX
+

A C expression whose value is RTL representing a location in which +to store the address of an exception handler to which we should +return. It will not be assigned on code paths that return normally. + +

Typically this is the location in the call frame at which the normal +return address is stored. For targets that return by popping an +address off the stack, this might be a memory address just below +the target call frame rather than inside the current call +frame. If defined, EH_RETURN_STACKADJ_RTX will have already +been assigned, so it may be used to calculate the location of the +target call frame. + +

Some targets have more complex requirements than storing to an +address calculable during initial code generation. In that case +the eh_return instruction pattern should be used instead. + +

If you want to support call frame exception handling, you must +define either this macro or the eh_return instruction pattern. +

+ +
+— Macro: RETURN_ADDR_OFFSET
+

If defined, an integer-valued C expression for which rtl will be generated +to add it to the exception handler address before it is searched in the +exception handling tables, and to subtract it again from the address before +using it to return to the exception handler. +

+ +
+— Macro: ASM_PREFERRED_EH_DATA_FORMAT (code, global)
+

This macro chooses the encoding of pointers embedded in the exception +handling sections. If at all possible, this should be defined such +that the exception handling section will not require dynamic relocations, +and so may be read-only. + +

code is 0 for data, 1 for code labels, 2 for function pointers. +global is true if the symbol may be affected by dynamic relocations. +The macro should return a combination of the DW_EH_PE_* defines +as found in dwarf2.h. + +

If this macro is not defined, pointers will not be encoded but +represented directly. +

+ +
+— Macro: ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (file, encoding, size, addr, done)
+

This macro allows the target to emit whatever special magic is required +to represent the encoding chosen by ASM_PREFERRED_EH_DATA_FORMAT. +Generic code takes care of pc-relative and indirect encodings; this must +be defined if the target uses text-relative or data-relative encodings. + +

This is a C statement that branches to done if the format was +handled. encoding is the format chosen, size is the number +of bytes that the format occupies, addr is the SYMBOL_REF +to be emitted. +

+ +
+— Macro: MD_UNWIND_SUPPORT
+

A string specifying a file to be #include'd in unwind-dw2.c. The file +so included typically defines MD_FALLBACK_FRAME_STATE_FOR. +

+ +
+— Macro: MD_FALLBACK_FRAME_STATE_FOR (context, fs)
+

This macro allows the target to add CPU and operating system specific +code to the call-frame unwinder for use when there is no unwind data +available. The most common reason to implement this macro is to unwind +through signal frames. + +

This macro is called from uw_frame_state_for in +unwind-dw2.c, unwind-dw2-xtensa.c and +unwind-ia64.c. context is an _Unwind_Context; +fs is an _Unwind_FrameState. Examine context->ra +for the address of the code being executed and context->cfa for +the stack pointer value. If the frame can be decoded, the register +save addresses should be updated in fs and the macro should +evaluate to _URC_NO_REASON. If the frame cannot be decoded, +the macro should evaluate to _URC_END_OF_STACK. + +

For proper signal handling in Java this macro is accompanied by +MAKE_THROW_FRAME, defined in libjava/include/*-signal.h headers. +

+ +
+— Macro: MD_HANDLE_UNWABI (context, fs)
+

This macro allows the target to add operating system specific code to the +call-frame unwinder to handle the IA-64 .unwabi unwinding directive, +usually used for signal or interrupt frames. + +

This macro is called from uw_update_context in unwind-ia64.c. +context is an _Unwind_Context; +fs is an _Unwind_FrameState. Examine fs->unwabi +for the abi and context in the .unwabi directive. If the +.unwabi directive can be handled, the register save addresses should +be updated in fs. +

+ +
+— Macro: TARGET_USES_WEAK_UNWIND_INFO
+

A C expression that evaluates to true if the target requires unwind +info to be given comdat linkage. Define it to be 1 if comdat +linkage is necessary. The default is 0. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-Region-Output.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-Region-Output.html new file mode 100644 index 0000000..9e9ce26 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-Region-Output.html @@ -0,0 +1,197 @@ + + +Exception Region Output - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Dispatch Tables, +Up: Assembler Format +



+
+ +

15.21.9 Assembler Commands for Exception Regions

+ + +

This describes commands marking the start and the end of an exception +region. + +

+— Macro: EH_FRAME_SECTION_NAME
+

If defined, a C string constant for the name of the section containing +exception handling frame unwind information. If not defined, GCC will +provide a default definition if the target supports named sections. +crtstuff.c uses this macro to switch to the appropriate section. + +

You should define this symbol if your target supports DWARF 2 frame +unwind information and the default definition does not work. +

+ +
+— Macro: EH_FRAME_IN_DATA_SECTION
+

If defined, DWARF 2 frame unwind information will be placed in the +data section even though the target supports named sections. This +might be necessary, for instance, if the system linker does garbage +collection and sections cannot be marked as not to be collected. + +

Do not define this macro unless TARGET_ASM_NAMED_SECTION is +also defined. +

+ +
+— Macro: EH_TABLES_CAN_BE_READ_ONLY
+

Define this macro to 1 if your target is such that no frame unwind +information encoding used with non-PIC code will ever require a +runtime relocation, but the linker may not support merging read-only +and read-write sections into a single read-write section. +

+ +
+— Macro: MASK_RETURN_ADDR
+

An rtx used to mask the return address found via RETURN_ADDR_RTX, so +that it does not contain any extraneous set bits in it. +

+ +
+— Macro: DWARF2_UNWIND_INFO
+

Define this macro to 0 if your target supports DWARF 2 frame unwind +information, but it does not yet work with exception handling. +Otherwise, if your target supports this information (if it defines +INCOMING_RETURN_ADDR_RTX and either UNALIGNED_INT_ASM_OP +or OBJECT_FORMAT_ELF), GCC will provide a default definition of 1. + +

If TARGET_UNWIND_INFO is defined, the target specific unwinder +will be used in all cases. Defining this macro will enable the generation +of DWARF 2 frame debugging information. + +

If TARGET_UNWIND_INFO is not defined, and this macro is defined to 1, +the DWARF 2 unwinder will be the default exception handling mechanism; +otherwise, the setjmp/longjmp-based scheme will be used by +default. +

+ +
+— Macro: TARGET_UNWIND_INFO
+

Define this macro if your target has ABI specified unwind tables. Usually +these will be output by TARGET_UNWIND_EMIT. +

+ +
+— Variable: Target Hook bool TARGET_UNWIND_TABLES_DEFAULT
+

This variable should be set to true if the target ABI requires unwinding +tables even when exceptions are not used. +

+ +
+— Macro: MUST_USE_SJLJ_EXCEPTIONS
+

This macro need only be defined if DWARF2_UNWIND_INFO is +runtime-variable. In that case, except.h cannot correctly +determine the corresponding definition of MUST_USE_SJLJ_EXCEPTIONS, +so the target must provide it directly. +

+ +
+— Macro: DONT_USE_BUILTIN_SETJMP
+

Define this macro to 1 if the setjmp/longjmp-based scheme +should use the setjmp/longjmp functions from the C library +instead of the __builtin_setjmp/__builtin_longjmp machinery. +

+ +
+— Macro: DWARF_CIE_DATA_ALIGNMENT
+

This macro need only be defined if the target might save registers in the +function prologue at an offset to the stack pointer that is not aligned to +UNITS_PER_WORD. The definition should be the negative minimum +alignment if STACK_GROWS_DOWNWARD is defined, and the positive +minimum alignment otherwise. See SDB and DWARF. Only applicable if +the target supports DWARF 2 frame unwind information. +

+ +
+— Variable: Target Hook bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
+

Contains the value true if the target should add a zero word onto the +end of a Dwarf-2 frame info section when used for exception handling. +Default value is false if EH_FRAME_SECTION_NAME is defined, and +true otherwise. +

+ +
+— Target Hook: rtx TARGET_DWARF_REGISTER_SPAN (rtx reg)
+

Given a register, this hook should return a parallel of registers to +represent where to find the register pieces. Define this hook if the +register and its mode are represented in Dwarf in non-contiguous +locations, or if the register should be represented in more than one +register in Dwarf. Otherwise, this hook should return NULL_RTX. +If not defined, the default is to return NULL_RTX. +

+ +
+— Target Hook: void TARGET_INIT_DWARF_REG_SIZES_EXTRA (tree address)
+

If some registers are represented in Dwarf-2 unwind information in +multiple pieces, define this hook to fill in information about the +sizes of those pieces in the table used by the unwinder at runtime. +It will be called by expand_builtin_init_dwarf_reg_sizes after +filling in a single size corresponding to each hard register; +address is the address of the table. +

+ +
+— Target Hook: bool TARGET_ASM_TTYPE (rtx sym)
+

This hook is used to output a reference from a frame unwinding table to +the type_info object identified by sym. It should return true +if the reference was output. Returning false will cause the +reference to be output using the normal Dwarf2 routines. +

+ +
+— Target Hook: bool TARGET_ARM_EABI_UNWINDER
+

This hook should be set to true on targets that use an ARM EABI +based unwinding library, and false on other targets. This effects +the format of unwinding tables, and how the unwinder in entered after +running a cleanup. The default is false. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-handling-routines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-handling-routines.html new file mode 100644 index 0000000..829b9f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Exception-handling-routines.html @@ -0,0 +1,89 @@ + + +Exception handling routines - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + + +

4.5 Language-independent routines for exception handling

+ +

document me! + +

       _Unwind_DeleteException
+       _Unwind_Find_FDE
+       _Unwind_ForcedUnwind
+       _Unwind_GetGR
+       _Unwind_GetIP
+       _Unwind_GetLanguageSpecificData
+       _Unwind_GetRegionStart
+       _Unwind_GetTextRelBase
+       _Unwind_GetDataRelBase
+       _Unwind_RaiseException
+       _Unwind_Resume
+       _Unwind_SetGR
+       _Unwind_SetIP
+       _Unwind_FindEnclosingFunction
+       _Unwind_SjLj_Register
+       _Unwind_SjLj_Unregister
+       _Unwind_SjLj_RaiseException
+       _Unwind_SjLj_ForcedUnwind
+       _Unwind_SjLj_Resume
+       __deregister_frame
+       __deregister_frame_info
+       __deregister_frame_info_bases
+       __register_frame
+       __register_frame_info
+       __register_frame_info_bases
+       __register_frame_info_table
+       __register_frame_info_table_bases
+       __register_frame_table
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expander-Definitions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expander-Definitions.html new file mode 100644 index 0000000..5f2c82a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expander-Definitions.html @@ -0,0 +1,238 @@ + + +Expander Definitions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Insn Canonicalizations, +Up: Machine Desc +



+
+ +

14.15 Defining RTL Sequences for Code Generation

+ +

+On some target machines, some standard pattern names for RTL generation +cannot be handled with single insn, but a sequence of RTL insns can +represent them. For these target machines, you can write a +define_expand to specify how to generate the sequence of RTL. + +

A define_expand is an RTL expression that looks almost like a +define_insn; but, unlike the latter, a define_expand is used +only for RTL generation and it can produce more than one RTL insn. + +

A define_expand RTX has four operands: + +

    +
  • The name. Each define_expand must have a name, since the only +use for it is to refer to it by name. + +
  • The RTL template. This is a vector of RTL expressions representing +a sequence of separate instructions. Unlike define_insn, there +is no implicit surrounding PARALLEL. + +
  • The condition, a string containing a C expression. This expression is +used to express how the availability of this pattern depends on +subclasses of target machine, selected by command-line options when GCC +is run. This is just like the condition of a define_insn that +has a standard name. Therefore, the condition (if present) may not +depend on the data in the insn being matched, but only the +target-machine-type flags. The compiler needs to test these conditions +during initialization in order to learn exactly which named instructions +are available in a particular run. + +
  • The preparation statements, a string containing zero or more C +statements which are to be executed before RTL code is generated from +the RTL template. + +

    Usually these statements prepare temporary registers for use as +internal operands in the RTL template, but they can also generate RTL +insns directly by calling routines such as emit_insn, etc. +Any such insns precede the ones that come from the RTL template. +

+ +

Every RTL insn emitted by a define_expand must match some +define_insn in the machine description. Otherwise, the compiler +will crash when trying to generate code for the insn or trying to optimize +it. + +

The RTL template, in addition to controlling generation of RTL insns, +also describes the operands that need to be specified when this pattern +is used. In particular, it gives a predicate for each operand. + +

A true operand, which needs to be specified in order to generate RTL from +the pattern, should be described with a match_operand in its first +occurrence in the RTL template. This enters information on the operand's +predicate into the tables that record such things. GCC uses the +information to preload the operand into a register if that is required for +valid RTL code. If the operand is referred to more than once, subsequent +references should use match_dup. + +

The RTL template may also refer to internal “operands” which are +temporary registers or labels used only within the sequence made by the +define_expand. Internal operands are substituted into the RTL +template with match_dup, never with match_operand. The +values of the internal operands are not passed in as arguments by the +compiler when it requests use of this pattern. Instead, they are computed +within the pattern, in the preparation statements. These statements +compute the values and store them into the appropriate elements of +operands so that match_dup can find them. + +

There are two special macros defined for use in the preparation statements: +DONE and FAIL. Use them with a following semicolon, +as a statement. + + + +

DONE
Use the DONE macro to end RTL generation for the pattern. The +only RTL insns resulting from the pattern on this occasion will be +those already emitted by explicit calls to emit_insn within the +preparation statements; the RTL template will not be generated. + +


FAIL
Make the pattern fail on this occasion. When a pattern fails, it means +that the pattern was not truly available. The calling routines in the +compiler will try other strategies for code generation using other patterns. + +

Failure is currently supported only for binary (addition, multiplication, +shifting, etc.) and bit-field (extv, extzv, and insv) +operations. +

+ +

If the preparation falls through (invokes neither DONE nor +FAIL), then the define_expand acts like a +define_insn in that the RTL template is used to generate the +insn. + +

The RTL template is not used for matching, only for generating the +initial insn list. If the preparation statement always invokes +DONE or FAIL, the RTL template may be reduced to a simple +list of operands, such as this example: + +

     (define_expand "addsi3"
+       [(match_operand:SI 0 "register_operand" "")
+        (match_operand:SI 1 "register_operand" "")
+        (match_operand:SI 2 "register_operand" "")]
+       ""
+       "
+     {
+       handle_add (operands[0], operands[1], operands[2]);
+       DONE;
+     }")
+
+

Here is an example, the definition of left-shift for the SPUR chip: + +

     (define_expand "ashlsi3"
+       [(set (match_operand:SI 0 "register_operand" "")
+             (ashift:SI
+               (match_operand:SI 1 "register_operand" "")
+               (match_operand:SI 2 "nonmemory_operand" "")))]
+       ""
+       "
+
+
     {
+       if (GET_CODE (operands[2]) != CONST_INT
+           || (unsigned) INTVAL (operands[2]) > 3)
+         FAIL;
+     }")
+
+

This example uses define_expand so that it can generate an RTL insn +for shifting when the shift-count is in the supported range of 0 to 3 but +fail in other cases where machine insns aren't available. When it fails, +the compiler tries another strategy using different patterns (such as, a +library call). + +

If the compiler were able to handle nontrivial condition-strings in +patterns with names, then it would be possible to use a +define_insn in that case. Here is another case (zero-extension +on the 68000) which makes more use of the power of define_expand: + +

     (define_expand "zero_extendhisi2"
+       [(set (match_operand:SI 0 "general_operand" "")
+             (const_int 0))
+        (set (strict_low_part
+               (subreg:HI
+                 (match_dup 0)
+                 0))
+             (match_operand:HI 1 "general_operand" ""))]
+       ""
+       "operands[1] = make_safe_from (operands[1], operands[0]);")
+
+

Here two RTL insns are generated, one to clear the entire output operand +and the other to copy the input operand into its low half. This sequence +is incorrect if the input operand refers to [the old value of] the output +operand, so the preparation statement makes sure this isn't so. The +function make_safe_from copies the operands[1] into a +temporary register if it refers to operands[0]. It does this +by emitting another RTL insn. + +

Finally, a third example shows the use of an internal operand. +Zero-extension on the SPUR chip is done by and-ing the result +against a halfword mask. But this mask cannot be represented by a +const_int because the constant value is too large to be legitimate +on this machine. So it must be copied into a register with +force_reg and then the register used in the and. + +

     (define_expand "zero_extendhisi2"
+       [(set (match_operand:SI 0 "register_operand" "")
+             (and:SI (subreg:SI
+                       (match_operand:HI 1 "register_operand" "")
+                       0)
+                     (match_dup 2)))]
+       ""
+       "operands[2]
+          = force_reg (SImode, GEN_INT (65535)); ")
+
+

Note: If the define_expand is used to serve a +standard binary or unary arithmetic operation or a bit-field operation, +then the last insn it generates must not be a code_label, +barrier or note. It must be an insn, +jump_insn or call_insn. If you don't need a real insn +at the end, emit an insn to copy the result of the operation into +itself. Such an insn will generate no code, but it can avoid problems +in the compiler. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expression-trees.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expression-trees.html new file mode 100644 index 0000000..242792a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expression-trees.html @@ -0,0 +1,872 @@ + + +Expression trees - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Attributes, +Up: Trees +



+
+ +

9.8 Expressions

+ +

+The internal representation for expressions is for the most part quite +straightforward. However, there are a few facts that one must bear in +mind. In particular, the expression “tree” is actually a directed +acyclic graph. (For example there may be many references to the integer +constant zero throughout the source program; many of these will be +represented by the same expression node.) You should not rely on +certain kinds of node being shared, nor should you rely on certain kinds of +nodes being unshared. + +

The following macros can be used with all expression nodes: + +

+
TREE_TYPE
Returns the type of the expression. This value may not be precisely the +same type that would be given the expression in the original program. +
+ +

In what follows, some nodes that one might expect to always have type +bool are documented to have either integral or boolean type. At +some point in the future, the C front end may also make use of this same +intermediate representation, and at this point these nodes will +certainly have integral type. The previous sentence is not meant to +imply that the C++ front end does not or will not give these nodes +integral type. + +

Below, we list the various kinds of expression nodes. Except where +noted otherwise, the operands to an expression are accessed using the +TREE_OPERAND macro. For example, to access the first operand to +a binary plus expression expr, use: + +

     TREE_OPERAND (expr, 0)
+
+

As this example indicates, the operands are zero-indexed. + +

All the expressions starting with OMP_ represent directives and +clauses used by the OpenMP API http://www.openmp.org/. + +

The table below begins with constants, moves on to unary expressions, +then proceeds to binary expressions, and concludes with various other +kinds of expressions: + +

+
INTEGER_CST
These nodes represent integer constants. Note that the type of these +constants is obtained with TREE_TYPE; they are not always of type +int. In particular, char constants are represented with +INTEGER_CST nodes. The value of the integer constant e is +given by +
          ((TREE_INT_CST_HIGH (e) << HOST_BITS_PER_WIDE_INT)
+          + TREE_INST_CST_LOW (e))
+     
+

HOST_BITS_PER_WIDE_INT is at least thirty-two on all platforms. Both +TREE_INT_CST_HIGH and TREE_INT_CST_LOW return a +HOST_WIDE_INT. The value of an INTEGER_CST is interpreted +as a signed or unsigned quantity depending on the type of the constant. +In general, the expression given above will overflow, so it should not +be used to calculate the value of the constant. + +

The variable integer_zero_node is an integer constant with value +zero. Similarly, integer_one_node is an integer constant with +value one. The size_zero_node and size_one_node variables +are analogous, but have type size_t rather than int. + +

The function tree_int_cst_lt is a predicate which holds if its +first argument is less than its second. Both constants are assumed to +have the same signedness (i.e., either both should be signed or both +should be unsigned.) The full width of the constant is used when doing +the comparison; the usual rules about promotions and conversions are +ignored. Similarly, tree_int_cst_equal holds if the two +constants are equal. The tree_int_cst_sgn function returns the +sign of a constant. The value is 1, 0, or -1 +according on whether the constant is greater than, equal to, or less +than zero. Again, the signedness of the constant's type is taken into +account; an unsigned constant is never less than zero, no matter what +its bit-pattern. + +

REAL_CST
+FIXME: Talk about how to obtain representations of this constant, do +comparisons, and so forth. + +
FIXED_CST
+These nodes represent fixed-point constants. The type of these constants +is obtained with TREE_TYPE. TREE_FIXED_CST_PTR points to +to struct fixed_value; TREE_FIXED_CST returns the structure itself. +Struct fixed_value contains data with the size of two +HOST_BITS_PER_WIDE_INT and mode as the associated fixed-point +machine mode for data. + +
COMPLEX_CST
These nodes are used to represent complex number constants, that is a +__complex__ whose parts are constant nodes. The +TREE_REALPART and TREE_IMAGPART return the real and the +imaginary parts respectively. + +
VECTOR_CST
These nodes are used to represent vector constants, whose parts are +constant nodes. Each individual constant node is either an integer or a +double constant node. The first operand is a TREE_LIST of the +constant nodes and is accessed through TREE_VECTOR_CST_ELTS. + +
STRING_CST
These nodes represent string-constants. The TREE_STRING_LENGTH +returns the length of the string, as an int. The +TREE_STRING_POINTER is a char* containing the string +itself. The string may not be NUL-terminated, and it may contain +embedded NUL characters. Therefore, the +TREE_STRING_LENGTH includes the trailing NUL if it is +present. + +

For wide string constants, the TREE_STRING_LENGTH is the number +of bytes in the string, and the TREE_STRING_POINTER +points to an array of the bytes of the string, as represented on the +target system (that is, as integers in the target endianness). Wide and +non-wide string constants are distinguished only by the TREE_TYPE +of the STRING_CST. + +

FIXME: The formats of string constants are not well-defined when the +target system bytes are not the same width as host system bytes. + +

PTRMEM_CST
These nodes are used to represent pointer-to-member constants. The +PTRMEM_CST_CLASS is the class type (either a RECORD_TYPE +or UNION_TYPE within which the pointer points), and the +PTRMEM_CST_MEMBER is the declaration for the pointed to object. +Note that the DECL_CONTEXT for the PTRMEM_CST_MEMBER is in +general different from the PTRMEM_CST_CLASS. For example, +given: +
          struct B { int i; };
+          struct D : public B {};
+          int D::*dp = &D::i;
+     
+

The PTRMEM_CST_CLASS for &D::i is D, even though +the DECL_CONTEXT for the PTRMEM_CST_MEMBER is B, +since B::i is a member of B, not D. + +

VAR_DECL
+These nodes represent variables, including static data members. For +more information, see Declarations. + +
NEGATE_EXPR
These nodes represent unary negation of the single operand, for both +integer and floating-point types. The type of negation can be +determined by looking at the type of the expression. + +

The behavior of this operation on signed arithmetic overflow is +controlled by the flag_wrapv and flag_trapv variables. + +

ABS_EXPR
These nodes represent the absolute value of the single operand, for +both integer and floating-point types. This is typically used to +implement the abs, labs and llabs builtins for +integer types, and the fabs, fabsf and fabsl +builtins for floating point types. The type of abs operation can +be determined by looking at the type of the expression. + +

This node is not used for complex types. To represent the modulus +or complex abs of a complex value, use the BUILT_IN_CABS, +BUILT_IN_CABSF or BUILT_IN_CABSL builtins, as used +to implement the C99 cabs, cabsf and cabsl +built-in functions. + +

BIT_NOT_EXPR
These nodes represent bitwise complement, and will always have integral +type. The only operand is the value to be complemented. + +
TRUTH_NOT_EXPR
These nodes represent logical negation, and will always have integral +(or boolean) type. The operand is the value being negated. The type +of the operand and that of the result are always of BOOLEAN_TYPE +or INTEGER_TYPE. + +
PREDECREMENT_EXPR
PREINCREMENT_EXPR
POSTDECREMENT_EXPR
POSTINCREMENT_EXPR
These nodes represent increment and decrement expressions. The value of +the single operand is computed, and the operand incremented or +decremented. In the case of PREDECREMENT_EXPR and +PREINCREMENT_EXPR, the value of the expression is the value +resulting after the increment or decrement; in the case of +POSTDECREMENT_EXPR and POSTINCREMENT_EXPR is the value +before the increment or decrement occurs. The type of the operand, like +that of the result, will be either integral, boolean, or floating-point. + +
ADDR_EXPR
These nodes are used to represent the address of an object. (These +expressions will always have pointer or reference type.) The operand may +be another expression, or it may be a declaration. + +

As an extension, GCC allows users to take the address of a label. In +this case, the operand of the ADDR_EXPR will be a +LABEL_DECL. The type of such an expression is void*. + +

If the object addressed is not an lvalue, a temporary is created, and +the address of the temporary is used. + +

INDIRECT_REF
These nodes are used to represent the object pointed to by a pointer. +The operand is the pointer being dereferenced; it will always have +pointer or reference type. + +
FIX_TRUNC_EXPR
These nodes represent conversion of a floating-point value to an +integer. The single operand will have a floating-point type, while +the complete expression will have an integral (or boolean) type. The +operand is rounded towards zero. + +
FLOAT_EXPR
These nodes represent conversion of an integral (or boolean) value to a +floating-point value. The single operand will have integral type, while +the complete expression will have a floating-point type. + +

FIXME: How is the operand supposed to be rounded? Is this dependent on +-mieee? + +

COMPLEX_EXPR
These nodes are used to represent complex numbers constructed from two +expressions of the same (integer or real) type. The first operand is the +real part and the second operand is the imaginary part. + +
CONJ_EXPR
These nodes represent the conjugate of their operand. + +
REALPART_EXPR
IMAGPART_EXPR
These nodes represent respectively the real and the imaginary parts +of complex numbers (their sole argument). + +
NON_LVALUE_EXPR
These nodes indicate that their one and only operand is not an lvalue. +A back end can treat these identically to the single operand. + +
NOP_EXPR
These nodes are used to represent conversions that do not require any +code-generation. For example, conversion of a char* to an +int* does not require any code be generated; such a conversion is +represented by a NOP_EXPR. The single operand is the expression +to be converted. The conversion from a pointer to a reference is also +represented with a NOP_EXPR. + +
CONVERT_EXPR
These nodes are similar to NOP_EXPRs, but are used in those +situations where code may need to be generated. For example, if an +int* is converted to an int code may need to be generated +on some platforms. These nodes are never used for C++-specific +conversions, like conversions between pointers to different classes in +an inheritance hierarchy. Any adjustments that need to be made in such +cases are always indicated explicitly. Similarly, a user-defined +conversion is never represented by a CONVERT_EXPR; instead, the +function calls are made explicit. + +
FIXED_CONVERT_EXPR
These nodes are used to represent conversions that involve fixed-point +values. For example, from a fixed-point value to another fixed-point value, +from an integer to a fixed-point value, from a fixed-point value to an +integer, from a floating-point value to a fixed-point value, or from +a fixed-point value to a floating-point value. + +
THROW_EXPR
These nodes represent throw expressions. The single operand is +an expression for the code that should be executed to throw the +exception. However, there is one implicit action not represented in +that expression; namely the call to __throw. This function takes +no arguments. If setjmp/longjmp exceptions are used, the +function __sjthrow is called instead. The normal GCC back end +uses the function emit_throw to generate this code; you can +examine this function to see what needs to be done. + +
LSHIFT_EXPR
RSHIFT_EXPR
These nodes represent left and right shifts, respectively. The first +operand is the value to shift; it will always be of integral type. The +second operand is an expression for the number of bits by which to +shift. Right shift should be treated as arithmetic, i.e., the +high-order bits should be zero-filled when the expression has unsigned +type and filled with the sign bit when the expression has signed type. +Note that the result is undefined if the second operand is larger +than or equal to the first operand's type size. + +
BIT_IOR_EXPR
BIT_XOR_EXPR
BIT_AND_EXPR
These nodes represent bitwise inclusive or, bitwise exclusive or, and +bitwise and, respectively. Both operands will always have integral +type. + +
TRUTH_ANDIF_EXPR
TRUTH_ORIF_EXPR
These nodes represent logical “and” and logical “or”, respectively. +These operators are not strict; i.e., the second operand is evaluated +only if the value of the expression is not determined by evaluation of +the first operand. The type of the operands and that of the result are +always of BOOLEAN_TYPE or INTEGER_TYPE. + +
TRUTH_AND_EXPR
TRUTH_OR_EXPR
TRUTH_XOR_EXPR
These nodes represent logical and, logical or, and logical exclusive or. +They are strict; both arguments are always evaluated. There are no +corresponding operators in C or C++, but the front end will sometimes +generate these expressions anyhow, if it can tell that strictness does +not matter. The type of the operands and that of the result are +always of BOOLEAN_TYPE or INTEGER_TYPE. + +
POINTER_PLUS_EXPR
This node represents pointer arithmetic. The first operand is always +a pointer/reference type. The second operand is always an unsigned +integer type compatible with sizetype. This is the only binary +arithmetic operand that can operate on pointer types. + +
PLUS_EXPR
MINUS_EXPR
MULT_EXPR
These nodes represent various binary arithmetic operations. +Respectively, these operations are addition, subtraction (of the second +operand from the first) and multiplication. Their operands may have +either integral or floating type, but there will never be case in which +one operand is of floating type and the other is of integral type. + +

The behavior of these operations on signed arithmetic overflow is +controlled by the flag_wrapv and flag_trapv variables. + +

RDIV_EXPR
This node represents a floating point division operation. + +
TRUNC_DIV_EXPR
FLOOR_DIV_EXPR
CEIL_DIV_EXPR
ROUND_DIV_EXPR
These nodes represent integer division operations that return an integer +result. TRUNC_DIV_EXPR rounds towards zero, FLOOR_DIV_EXPR +rounds towards negative infinity, CEIL_DIV_EXPR rounds towards +positive infinity and ROUND_DIV_EXPR rounds to the closest integer. +Integer division in C and C++ is truncating, i.e. TRUNC_DIV_EXPR. + +

The behavior of these operations on signed arithmetic overflow, when +dividing the minimum signed integer by minus one, is controlled by the +flag_wrapv and flag_trapv variables. + +

TRUNC_MOD_EXPR
FLOOR_MOD_EXPR
CEIL_MOD_EXPR
ROUND_MOD_EXPR
These nodes represent the integer remainder or modulus operation. +The integer modulus of two operands a and b is +defined as a - (a/b)*b where the division calculated using +the corresponding division operator. Hence for TRUNC_MOD_EXPR +this definition assumes division using truncation towards zero, i.e. +TRUNC_DIV_EXPR. Integer remainder in C and C++ uses truncating +division, i.e. TRUNC_MOD_EXPR. + +
EXACT_DIV_EXPR
The EXACT_DIV_EXPR code is used to represent integer divisions where +the numerator is known to be an exact multiple of the denominator. This +allows the backend to choose between the faster of TRUNC_DIV_EXPR, +CEIL_DIV_EXPR and FLOOR_DIV_EXPR for the current target. + +
ARRAY_REF
These nodes represent array accesses. The first operand is the array; +the second is the index. To calculate the address of the memory +accessed, you must scale the index by the size of the type of the array +elements. The type of these expressions must be the type of a component of +the array. The third and fourth operands are used after gimplification +to represent the lower bound and component size but should not be used +directly; call array_ref_low_bound and array_ref_element_size +instead. + +
ARRAY_RANGE_REF
These nodes represent access to a range (or “slice”) of an array. The +operands are the same as that for ARRAY_REF and have the same +meanings. The type of these expressions must be an array whose component +type is the same as that of the first operand. The range of that array +type determines the amount of data these expressions access. + +
TARGET_MEM_REF
These nodes represent memory accesses whose address directly map to +an addressing mode of the target architecture. The first argument +is TMR_SYMBOL and must be a VAR_DECL of an object with +a fixed address. The second argument is TMR_BASE and the +third one is TMR_INDEX. The fourth argument is +TMR_STEP and must be an INTEGER_CST. The fifth +argument is TMR_OFFSET and must be an INTEGER_CST. +Any of the arguments may be NULL if the appropriate component +does not appear in the address. Address of the TARGET_MEM_REF +is determined in the following way. + +
          &TMR_SYMBOL + TMR_BASE + TMR_INDEX * TMR_STEP + TMR_OFFSET
+     
+

The sixth argument is the reference to the original memory access, which +is preserved for the purposes of the RTL alias analysis. The seventh +argument is a tag representing the results of tree level alias analysis. + +

LT_EXPR
LE_EXPR
GT_EXPR
GE_EXPR
EQ_EXPR
NE_EXPR
These nodes represent the less than, less than or equal to, greater +than, greater than or equal to, equal, and not equal comparison +operators. The first and second operand with either be both of integral +type or both of floating type. The result type of these expressions +will always be of integral or boolean type. These operations return +the result type's zero value for false, and the result type's one value +for true. + +

For floating point comparisons, if we honor IEEE NaNs and either operand +is NaN, then NE_EXPR always returns true and the remaining operators +always return false. On some targets, comparisons against an IEEE NaN, +other than equality and inequality, may generate a floating point exception. + +

ORDERED_EXPR
UNORDERED_EXPR
These nodes represent non-trapping ordered and unordered comparison +operators. These operations take two floating point operands and +determine whether they are ordered or unordered relative to each other. +If either operand is an IEEE NaN, their comparison is defined to be +unordered, otherwise the comparison is defined to be ordered. The +result type of these expressions will always be of integral or boolean +type. These operations return the result type's zero value for false, +and the result type's one value for true. + +
UNLT_EXPR
UNLE_EXPR
UNGT_EXPR
UNGE_EXPR
UNEQ_EXPR
LTGT_EXPR
These nodes represent the unordered comparison operators. +These operations take two floating point operands and determine whether +the operands are unordered or are less than, less than or equal to, +greater than, greater than or equal to, or equal respectively. For +example, UNLT_EXPR returns true if either operand is an IEEE +NaN or the first operand is less than the second. With the possible +exception of LTGT_EXPR, all of these operations are guaranteed +not to generate a floating point exception. The result +type of these expressions will always be of integral or boolean type. +These operations return the result type's zero value for false, +and the result type's one value for true. + +
MODIFY_EXPR
These nodes represent assignment. The left-hand side is the first +operand; the right-hand side is the second operand. The left-hand side +will be a VAR_DECL, INDIRECT_REF, COMPONENT_REF, or +other lvalue. + +

These nodes are used to represent not only assignment with = but +also compound assignments (like +=), by reduction to = +assignment. In other words, the representation for i += 3 looks +just like that for i = i + 3. + +

INIT_EXPR
These nodes are just like MODIFY_EXPR, but are used only when a +variable is initialized, rather than assigned to subsequently. This +means that we can assume that the target of the initialization is not +used in computing its own value; any reference to the lhs in computing +the rhs is undefined. + +
COMPONENT_REF
These nodes represent non-static data member accesses. The first +operand is the object (rather than a pointer to it); the second operand +is the FIELD_DECL for the data member. The third operand represents +the byte offset of the field, but should not be used directly; call +component_ref_field_offset instead. + +
COMPOUND_EXPR
These nodes represent comma-expressions. The first operand is an +expression whose value is computed and thrown away prior to the +evaluation of the second operand. The value of the entire expression is +the value of the second operand. + +
COND_EXPR
These nodes represent ?: expressions. The first operand +is of boolean or integral type. If it evaluates to a nonzero value, +the second operand should be evaluated, and returned as the value of the +expression. Otherwise, the third operand is evaluated, and returned as +the value of the expression. + +

The second operand must have the same type as the entire expression, +unless it unconditionally throws an exception or calls a noreturn +function, in which case it should have void type. The same constraints +apply to the third operand. This allows array bounds checks to be +represented conveniently as (i >= 0 && i < 10) ? i : abort(). + +

As a GNU extension, the C language front-ends allow the second +operand of the ?: operator may be omitted in the source. +For example, x ? : 3 is equivalent to x ? x : 3, +assuming that x is an expression without side-effects. +In the tree representation, however, the second operand is always +present, possibly protected by SAVE_EXPR if the first +argument does cause side-effects. + +

CALL_EXPR
These nodes are used to represent calls to functions, including +non-static member functions. CALL_EXPRs are implemented as +expression nodes with a variable number of operands. Rather than using +TREE_OPERAND to extract them, it is preferable to use the +specialized accessor macros and functions that operate specifically on +CALL_EXPR nodes. + +

CALL_EXPR_FN returns a pointer to the +function to call; it is always an expression whose type is a +POINTER_TYPE. + +

The number of arguments to the call is returned by call_expr_nargs, +while the arguments themselves can be accessed with the CALL_EXPR_ARG +macro. The arguments are zero-indexed and numbered left-to-right. +You can iterate over the arguments using FOR_EACH_CALL_EXPR_ARG, as in: + +

          tree call, arg;
+          call_expr_arg_iterator iter;
+          FOR_EACH_CALL_EXPR_ARG (arg, iter, call)
+            /* arg is bound to successive arguments of call.  */
+            ...;
+     
+

For non-static +member functions, there will be an operand corresponding to the +this pointer. There will always be expressions corresponding to +all of the arguments, even if the function is declared with default +arguments and some arguments are not explicitly provided at the call +sites. + +

CALL_EXPRs also have a CALL_EXPR_STATIC_CHAIN operand that +is used to implement nested functions. This operand is otherwise null. + +

STMT_EXPR
These nodes are used to represent GCC's statement-expression extension. +The statement-expression extension allows code like this: +
          int f() { return ({ int j; j = 3; j + 7; }); }
+     
+

In other words, an sequence of statements may occur where a single +expression would normally appear. The STMT_EXPR node represents +such an expression. The STMT_EXPR_STMT gives the statement +contained in the expression. The value of the expression is the value +of the last sub-statement in the body. More precisely, the value is the +value computed by the last statement nested inside BIND_EXPR, +TRY_FINALLY_EXPR, or TRY_CATCH_EXPR. For example, in: +

          ({ 3; })
+     
+

the value is 3 while in: +

          ({ if (x) { 3; } })
+     
+

there is no value. If the STMT_EXPR does not yield a value, +it's type will be void. + +

BIND_EXPR
These nodes represent local blocks. The first operand is a list of +variables, connected via their TREE_CHAIN field. These will +never require cleanups. The scope of these variables is just the body +of the BIND_EXPR. The body of the BIND_EXPR is the +second operand. + +
LOOP_EXPR
These nodes represent “infinite” loops. The LOOP_EXPR_BODY +represents the body of the loop. It should be executed forever, unless +an EXIT_EXPR is encountered. + +
EXIT_EXPR
These nodes represent conditional exits from the nearest enclosing +LOOP_EXPR. The single operand is the condition; if it is +nonzero, then the loop should be exited. An EXIT_EXPR will only +appear within a LOOP_EXPR. + +
CLEANUP_POINT_EXPR
These nodes represent full-expressions. The single operand is an +expression to evaluate. Any destructor calls engendered by the creation +of temporaries during the evaluation of that expression should be +performed immediately after the expression is evaluated. + +
CONSTRUCTOR
These nodes represent the brace-enclosed initializers for a structure or +array. The first operand is reserved for use by the back end. The +second operand is a TREE_LIST. If the TREE_TYPE of the +CONSTRUCTOR is a RECORD_TYPE or UNION_TYPE, then +the TREE_PURPOSE of each node in the TREE_LIST will be a +FIELD_DECL and the TREE_VALUE of each node will be the +expression used to initialize that field. + +

If the TREE_TYPE of the CONSTRUCTOR is an +ARRAY_TYPE, then the TREE_PURPOSE of each element in the +TREE_LIST will be an INTEGER_CST or a RANGE_EXPR of +two INTEGER_CSTs. A single INTEGER_CST indicates which +element of the array (indexed from zero) is being assigned to. A +RANGE_EXPR indicates an inclusive range of elements to +initialize. In both cases the TREE_VALUE is the corresponding +initializer. It is re-evaluated for each element of a +RANGE_EXPR. If the TREE_PURPOSE is NULL_TREE, then +the initializer is for the next available array element. + +

In the front end, you should not depend on the fields appearing in any +particular order. However, in the middle end, fields must appear in +declaration order. You should not assume that all fields will be +represented. Unrepresented fields will be set to zero. + +

COMPOUND_LITERAL_EXPR
These nodes represent ISO C99 compound literals. The +COMPOUND_LITERAL_EXPR_DECL_STMT is a DECL_STMT +containing an anonymous VAR_DECL for +the unnamed object represented by the compound literal; the +DECL_INITIAL of that VAR_DECL is a CONSTRUCTOR +representing the brace-enclosed list of initializers in the compound +literal. That anonymous VAR_DECL can also be accessed directly +by the COMPOUND_LITERAL_EXPR_DECL macro. + +
SAVE_EXPR
+A SAVE_EXPR represents an expression (possibly involving +side-effects) that is used more than once. The side-effects should +occur only the first time the expression is evaluated. Subsequent uses +should just reuse the computed value. The first operand to the +SAVE_EXPR is the expression to evaluate. The side-effects should +be executed where the SAVE_EXPR is first encountered in a +depth-first preorder traversal of the expression tree. + +
TARGET_EXPR
A TARGET_EXPR represents a temporary object. The first operand +is a VAR_DECL for the temporary variable. The second operand is +the initializer for the temporary. The initializer is evaluated and, +if non-void, copied (bitwise) into the temporary. If the initializer +is void, that means that it will perform the initialization itself. + +

Often, a TARGET_EXPR occurs on the right-hand side of an +assignment, or as the second operand to a comma-expression which is +itself the right-hand side of an assignment, etc. In this case, we say +that the TARGET_EXPR is “normal”; otherwise, we say it is +“orphaned”. For a normal TARGET_EXPR the temporary variable +should be treated as an alias for the left-hand side of the assignment, +rather than as a new temporary variable. + +

The third operand to the TARGET_EXPR, if present, is a +cleanup-expression (i.e., destructor call) for the temporary. If this +expression is orphaned, then this expression must be executed when the +statement containing this expression is complete. These cleanups must +always be executed in the order opposite to that in which they were +encountered. Note that if a temporary is created on one branch of a +conditional operator (i.e., in the second or third operand to a +COND_EXPR), the cleanup must be run only if that branch is +actually executed. + +

See STMT_IS_FULL_EXPR_P for more information about running these +cleanups. + +

AGGR_INIT_EXPR
An AGGR_INIT_EXPR represents the initialization as the return +value of a function call, or as the result of a constructor. An +AGGR_INIT_EXPR will only appear as a full-expression, or as the +second operand of a TARGET_EXPR. AGGR_INIT_EXPRs have +a representation similar to that of CALL_EXPRs. You can use +the AGGR_INIT_EXPR_FN and AGGR_INIT_EXPR_ARG macros to access +the function to call and the arguments to pass. + +

If AGGR_INIT_VIA_CTOR_P holds of the AGGR_INIT_EXPR, then +the initialization is via a constructor call. The address of the +AGGR_INIT_EXPR_SLOT operand, which is always a VAR_DECL, +is taken, and this value replaces the first argument in the argument +list. + +

In either case, the expression is void. + +

VA_ARG_EXPR
This node is used to implement support for the C/C++ variable argument-list +mechanism. It represents expressions like va_arg (ap, type). +Its TREE_TYPE yields the tree representation for type and +its sole argument yields the representation for ap. + +
CHANGE_DYNAMIC_TYPE_EXPR
Indicates the special aliasing required by C++ placement new. It has +two operands: a type and a location. It means that the dynamic type +of the location is changing to be the specified type. The alias +analysis code takes this into account when doing type based alias +analysis. + +
OMP_PARALLEL
+Represents #pragma omp parallel [clause1 ... clauseN]. It +has four operands: + +

Operand OMP_PARALLEL_BODY is valid while in GENERIC and +High GIMPLE forms. It contains the body of code to be executed +by all the threads. During GIMPLE lowering, this operand becomes +NULL and the body is emitted linearly after +OMP_PARALLEL. + +

Operand OMP_PARALLEL_CLAUSES is the list of clauses +associated with the directive. + +

Operand OMP_PARALLEL_FN is created by +pass_lower_omp, it contains the FUNCTION_DECL +for the function that will contain the body of the parallel +region. + +

Operand OMP_PARALLEL_DATA_ARG is also created by +pass_lower_omp. If there are shared variables to be +communicated to the children threads, this operand will contain +the VAR_DECL that contains all the shared values and +variables. + +

OMP_FOR
+Represents #pragma omp for [clause1 ... clauseN]. It +has 5 operands: + +

Operand OMP_FOR_BODY contains the loop body. + +

Operand OMP_FOR_CLAUSES is the list of clauses +associated with the directive. + +

Operand OMP_FOR_INIT is the loop initialization code of +the form VAR = N1. + +

Operand OMP_FOR_COND is the loop conditional expression +of the form VAR {<,>,<=,>=} N2. + +

Operand OMP_FOR_INCR is the loop index increment of the +form VAR {+=,-=} INCR. + +

Operand OMP_FOR_PRE_BODY contains side-effect code from +operands OMP_FOR_INIT, OMP_FOR_COND and +OMP_FOR_INC. These side-effects are part of the +OMP_FOR block but must be evaluated before the start of +loop body. + +

The loop index variable VAR must be a signed integer variable, +which is implicitly private to each thread. Bounds +N1 and N2 and the increment expression +INCR are required to be loop invariant integer +expressions that are evaluated without any synchronization. The +evaluation order, frequency of evaluation and side-effects are +unspecified by the standard. + +

OMP_SECTIONS
+Represents #pragma omp sections [clause1 ... clauseN]. + +

Operand OMP_SECTIONS_BODY contains the sections body, +which in turn contains a set of OMP_SECTION nodes for +each of the concurrent sections delimited by #pragma omp +section. + +

Operand OMP_SECTIONS_CLAUSES is the list of clauses +associated with the directive. + +

OMP_SECTION
+Section delimiter for OMP_SECTIONS. + +
OMP_SINGLE
+Represents #pragma omp single. + +

Operand OMP_SINGLE_BODY contains the body of code to be +executed by a single thread. + +

Operand OMP_SINGLE_CLAUSES is the list of clauses +associated with the directive. + +

OMP_MASTER
+Represents #pragma omp master. + +

Operand OMP_MASTER_BODY contains the body of code to be +executed by the master thread. + +

OMP_ORDERED
+Represents #pragma omp ordered. + +

Operand OMP_ORDERED_BODY contains the body of code to be +executed in the sequential order dictated by the loop index +variable. + +

OMP_CRITICAL
+Represents #pragma omp critical [name]. + +

Operand OMP_CRITICAL_BODY is the critical section. + +

Operand OMP_CRITICAL_NAME is an optional identifier to +label the critical section. + +

OMP_RETURN
+This does not represent any OpenMP directive, it is an artificial +marker to indicate the end of the body of an OpenMP. It is used +by the flow graph (tree-cfg.c) and OpenMP region +building code (omp-low.c). + +
OMP_CONTINUE
+Similarly, this instruction does not represent an OpenMP +directive, it is used by OMP_FOR and +OMP_SECTIONS to mark the place where the code needs to +loop to the next iteration (in the case of OMP_FOR) or +the next section (in the case of OMP_SECTIONS). + +

In some cases, OMP_CONTINUE is placed right before +OMP_RETURN. But if there are cleanups that need to +occur right after the looping body, it will be emitted between +OMP_CONTINUE and OMP_RETURN. + +

OMP_ATOMIC
+Represents #pragma omp atomic. + +

Operand 0 is the address at which the atomic operation is to be +performed. + +

Operand 1 is the expression to evaluate. The gimplifier tries +three alternative code generation strategies. Whenever possible, +an atomic update built-in is used. If that fails, a +compare-and-swap loop is attempted. If that also fails, a +regular critical section around the expression is used. + +

OMP_CLAUSE
+Represents clauses associated with one of the OMP_ directives. +Clauses are represented by separate sub-codes defined in +tree.h. Clauses codes can be one of: +OMP_CLAUSE_PRIVATE, OMP_CLAUSE_SHARED, +OMP_CLAUSE_FIRSTPRIVATE, +OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_COPYIN, +OMP_CLAUSE_COPYPRIVATE, OMP_CLAUSE_IF, +OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE, +OMP_CLAUSE_NOWAIT, OMP_CLAUSE_ORDERED, +OMP_CLAUSE_DEFAULT, and OMP_CLAUSE_REDUCTION. Each code +represents the corresponding OpenMP clause. + +

Clauses associated with the same directive are chained together +via OMP_CLAUSE_CHAIN. Those clauses that accept a list +of variables are restricted to exactly one, accessed with +OMP_CLAUSE_VAR. Therefore, multiple variables under the +same clause C need to be represented as multiple C clauses +chained together. This facilitates adding new clauses during +compilation. + +

VEC_LSHIFT_EXPR
VEC_RSHIFT_EXPR
These nodes represent whole vector left and right shifts, respectively. +The first operand is the vector to shift; it will always be of vector type. +The second operand is an expression for the number of bits by which to +shift. Note that the result is undefined if the second operand is larger +than or equal to the first operand's type size. + +
VEC_WIDEN_MULT_HI_EXPR
VEC_WIDEN_MULT_LO_EXPR
These nodes represent widening vector multiplication of the high and low +parts of the two input vectors, respectively. Their operands are vectors +that contain the same number of elements (N) of the same integral type. +The result is a vector that contains half as many elements, of an integral type +whose size is twice as wide. In the case of VEC_WIDEN_MULT_HI_EXPR the +high N/2 elements of the two vector are multiplied to produce the +vector of N/2 products. In the case of VEC_WIDEN_MULT_LO_EXPR the +low N/2 elements of the two vector are multiplied to produce the +vector of N/2 products. + +
VEC_UNPACK_HI_EXPR
VEC_UNPACK_LO_EXPR
These nodes represent unpacking of the high and low parts of the input vector, +respectively. The single operand is a vector that contains N elements +of the same integral or floating point type. The result is a vector +that contains half as many elements, of an integral or floating point type +whose size is twice as wide. In the case of VEC_UNPACK_HI_EXPR the +high N/2 elements of the vector are extracted and widened (promoted). +In the case of VEC_UNPACK_LO_EXPR the low N/2 elements of the +vector are extracted and widened (promoted). + +
VEC_UNPACK_FLOAT_HI_EXPR
VEC_UNPACK_FLOAT_LO_EXPR
These nodes represent unpacking of the high and low parts of the input vector, +where the values are converted from fixed point to floating point. The +single operand is a vector that contains N elements of the same +integral type. The result is a vector that contains half as many elements +of a floating point type whose size is twice as wide. In the case of +VEC_UNPACK_HI_EXPR the high N/2 elements of the vector are +extracted, converted and widened. In the case of VEC_UNPACK_LO_EXPR +the low N/2 elements of the vector are extracted, converted and widened. + +
VEC_PACK_TRUNC_EXPR
This node represents packing of truncated elements of the two input vectors +into the output vector. Input operands are vectors that contain the same +number of elements of the same integral or floating point type. The result +is a vector that contains twice as many elements of an integral or floating +point type whose size is half as wide. The elements of the two vectors are +demoted and merged (concatenated) to form the output vector. + +
VEC_PACK_SAT_EXPR
This node represents packing of elements of the two input vectors into the +output vector using saturation. Input operands are vectors that contain +the same number of elements of the same integral type. The result is a +vector that contains twice as many elements of an integral type whose size +is half as wide. The elements of the two vectors are demoted and merged +(concatenated) to form the output vector. + +
VEC_PACK_FIX_TRUNC_EXPR
This node represents packing of elements of the two input vectors into the +output vector, where the values are converted from floating point +to fixed point. Input operands are vectors that contain the same number +of elements of a floating point type. The result is a vector that contains +twice as many elements of an integral type whose size is half as wide. The +elements of the two vectors are merged (concatenated) to form the output +vector. + +
VEC_EXTRACT_EVEN_EXPR
VEC_EXTRACT_ODD_EXPR
These nodes represent extracting of the even/odd elements of the two input +vectors, respectively. Their operands and result are vectors that contain the +same number of elements of the same type. + +
VEC_INTERLEAVE_HIGH_EXPR
VEC_INTERLEAVE_LOW_EXPR
These nodes represent merging and interleaving of the high/low elements of the +two input vectors, respectively. The operands and the result are vectors that +contain the same number of elements (N) of the same type. +In the case of VEC_INTERLEAVE_HIGH_EXPR, the high N/2 elements of +the first input vector are interleaved with the high N/2 elements of the +second input vector. In the case of VEC_INTERLEAVE_LOW_EXPR, the low +N/2 elements of the first input vector are interleaved with the low +N/2 elements of the second input vector. + +
+ + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expressions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expressions.html new file mode 100644 index 0000000..2caafdb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Expressions.html @@ -0,0 +1,199 @@ + + +Expressions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Defining Attributes, +Up: Insn Attributes +



+
+ +

14.19.2 Attribute Expressions

+ +

+RTL expressions used to define attributes use the codes described above +plus a few specific to attribute definitions, to be discussed below. +Attribute value expressions must have one of the following forms: + + + +

(const_int i)
The integer i specifies the value of a numeric attribute. i +must be non-negative. + +

The value of a numeric attribute can be specified either with a +const_int, or as an integer represented as a string in +const_string, eq_attr (see below), attr, +symbol_ref, simple arithmetic expressions, and set_attr +overrides on specific instructions (see Tagging Insns). + +


(const_string value)
The string value specifies a constant attribute value. +If value is specified as "*", it means that the default value of +the attribute is to be used for the insn containing this expression. +"*" obviously cannot be used in the default expression +of a define_attr. + +

If the attribute whose value is being specified is numeric, value +must be a string containing a non-negative integer (normally +const_int would be used in this case). Otherwise, it must +contain one of the valid values for the attribute. + +


(if_then_else test true-value false-value)
test specifies an attribute test, whose format is defined below. +The value of this expression is true-value if test is true, +otherwise it is false-value. + +


(cond [test1 value1 ...] default)
The first operand of this expression is a vector containing an even +number of expressions and consisting of pairs of test and value +expressions. The value of the cond expression is that of the +value corresponding to the first true test expression. If +none of the test expressions are true, the value of the cond +expression is that of the default expression. +
+ +

test expressions can have one of the following forms: + + + +

(const_int i)
This test is true if i is nonzero and false otherwise. + +


(not test)
(ior test1 test2)
(and test1 test2)
These tests are true if the indicated logical function is true. + +


(match_operand:m n pred constraints)
This test is true if operand n of the insn whose attribute value +is being determined has mode m (this part of the test is ignored +if m is VOIDmode) and the function specified by the string +pred returns a nonzero value when passed operand n and mode +m (this part of the test is ignored if pred is the null +string). + +

The constraints operand is ignored and should be the null string. + +


(le arith1 arith2)
(leu arith1 arith2)
(lt arith1 arith2)
(ltu arith1 arith2)
(gt arith1 arith2)
(gtu arith1 arith2)
(ge arith1 arith2)
(geu arith1 arith2)
(ne arith1 arith2)
(eq arith1 arith2)
These tests are true if the indicated comparison of the two arithmetic +expressions is true. Arithmetic expressions are formed with +plus, minus, mult, div, mod, +abs, neg, and, ior, xor, not, +ashift, lshiftrt, and ashiftrt expressions. + +

const_int and symbol_ref are always valid terms (see Insn Lengths,for additional forms). symbol_ref is a string +denoting a C expression that yields an int when evaluated by the +get_attr_... routine. It should normally be a global +variable. + +


(eq_attr name value)
name is a string specifying the name of an attribute. + +

value is a string that is either a valid value for attribute +name, a comma-separated list of values, or ! followed by a +value or list. If value does not begin with a !, this +test is true if the value of the name attribute of the current +insn is in the list specified by value. If value begins +with a !, this test is true if the attribute's value is +not in the specified list. + +

For example, + +

          (eq_attr "type" "load,store")
+     
+

is equivalent to + +

          (ior (eq_attr "type" "load") (eq_attr "type" "store"))
+     
+

If name specifies an attribute of alternative, it refers to the +value of the compiler variable which_alternative +(see Output Statement) and the values must be small integers. For +example, + +

          (eq_attr "alternative" "2,3")
+     
+

is equivalent to + +

          (ior (eq (symbol_ref "which_alternative") (const_int 2))
+               (eq (symbol_ref "which_alternative") (const_int 3)))
+     
+

Note that, for most attributes, an eq_attr test is simplified in cases +where the value of the attribute being tested is known for all insns matching +a particular pattern. This is by far the most common case. + +


(attr_flag name)
The value of an attr_flag expression is true if the flag +specified by name is true for the insn currently being +scheduled. + +

name is a string specifying one of a fixed set of flags to test. +Test the flags forward and backward to determine the +direction of a conditional branch. Test the flags very_likely, +likely, very_unlikely, and unlikely to determine +if a conditional branch is expected to be taken. + +

If the very_likely flag is true, then the likely flag is also +true. Likewise for the very_unlikely and unlikely flags. + +

This example describes a conditional branch delay slot which +can be nullified for forward branches that are taken (annul-true) or +for backward branches which are not taken (annul-false). + +

          (define_delay (eq_attr "type" "cbranch")
+            [(eq_attr "in_branch_delay" "true")
+             (and (eq_attr "in_branch_delay" "true")
+                  (attr_flag "forward"))
+             (and (eq_attr "in_branch_delay" "true")
+                  (attr_flag "backward"))])
+     
+

The forward and backward flags are false if the current +insn being scheduled is not a conditional branch. + +

The very_likely and likely flags are true if the +insn being scheduled is not a conditional branch. +The very_unlikely and unlikely flags are false if the +insn being scheduled is not a conditional branch. + +

attr_flag is only used during delay slot scheduling and has no +meaning to other passes of the compiler. + +


(attr name)
The value of another attribute is returned. This is most useful +for numeric attributes, as eq_attr and attr_flag +produce more efficient code for non-numeric attributes. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/File-Framework.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/File-Framework.html new file mode 100644 index 0000000..c1db39d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/File-Framework.html @@ -0,0 +1,246 @@ + + +File Framework - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Assembler Format +



+
+ +

15.21.1 The Overall Framework of an Assembler File

+ +

+ +This describes the overall framework of an assembly file. + +

+— Target Hook: void TARGET_ASM_FILE_START ()
+

Output to asm_out_file any text which the assembler expects to +find at the beginning of a file. The default behavior is controlled +by two flags, documented below. Unless your target's assembler is +quite unusual, if you override the default, you should call +default_file_start at some point in your target hook. This +lets other target files rely on these variables. +

+ +
+— Target Hook: bool TARGET_ASM_FILE_START_APP_OFF
+

If this flag is true, the text of the macro ASM_APP_OFF will be +printed as the very first line in the assembly file, unless +-fverbose-asm is in effect. (If that macro has been defined +to the empty string, this variable has no effect.) With the normal +definition of ASM_APP_OFF, the effect is to notify the GNU +assembler that it need not bother stripping comments or extra +whitespace from its input. This allows it to work a bit faster. + +

The default is false. You should not set it to true unless you have +verified that your port does not generate any extra whitespace or +comments that will cause GAS to issue errors in NO_APP mode. +

+ +
+— Target Hook: bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
+

If this flag is true, output_file_directive will be called +for the primary source file, immediately after printing +ASM_APP_OFF (if that is enabled). Most ELF assemblers expect +this to be done. The default is false. +

+ +
+— Target Hook: void TARGET_ASM_FILE_END ()
+

Output to asm_out_file any text which the assembler expects +to find at the end of a file. The default is to output nothing. +

+ +
+— Function: void file_end_indicate_exec_stack ()
+

Some systems use a common convention, the .note.GNU-stack +special section, to indicate whether or not an object file relies on +the stack being executable. If your system uses this convention, you +should define TARGET_ASM_FILE_END to this function. If you +need to do other things in that hook, have your hook function call +this function. +

+ +
+— Macro: ASM_COMMENT_START
+

A C string constant describing how to begin a comment in the target +assembler language. The compiler assumes that the comment will end at +the end of the line. +

+ +
+— Macro: ASM_APP_ON
+

A C string constant for text to be output before each asm +statement or group of consecutive ones. Normally this is +"#APP", which is a comment that has no effect on most +assemblers but tells the GNU assembler that it must check the lines +that follow for all valid assembler constructs. +

+ +
+— Macro: ASM_APP_OFF
+

A C string constant for text to be output after each asm +statement or group of consecutive ones. Normally this is +"#NO_APP", which tells the GNU assembler to resume making the +time-saving assumptions that are valid for ordinary compiler output. +

+ +
+— Macro: ASM_OUTPUT_SOURCE_FILENAME (stream, name)
+

A C statement to output COFF information or DWARF debugging information +which indicates that filename name is the current source file to +the stdio stream stream. + +

This macro need not be defined if the standard form of output +for the file format in use is appropriate. +

+ +
+— Macro: OUTPUT_QUOTED_STRING (stream, string)
+

A C statement to output the string string to the stdio stream +stream. If you do not call the function output_quoted_string +in your config files, GCC will only call it to output filenames to +the assembler source. So you can use it to canonicalize the format +of the filename using this macro. +

+ +
+— Macro: ASM_OUTPUT_IDENT (stream, string)
+

A C statement to output something to the assembler file to handle a +#ident directive containing the text string. If this +macro is not defined, nothing is output for a #ident directive. +

+ +
+— Target Hook: void TARGET_ASM_NAMED_SECTION (const char *name, unsigned int flags, unsigned int align)
+

Output assembly directives to switch to section name. The section +should have attributes as specified by flags, which is a bit mask +of the SECTION_* flags defined in output.h. If align +is nonzero, it contains an alignment in bytes to be used for the section, +otherwise some target default should be used. Only targets that must +specify an alignment within the section directive need pay attention to +align – we will still use ASM_OUTPUT_ALIGN. +

+ +
+— Target Hook: bool TARGET_HAVE_NAMED_SECTIONS
+

This flag is true if the target supports TARGET_ASM_NAMED_SECTION. +

+ +

+ +

+— Target Hook: bool TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
+

This flag is true if we can create zeroed data by switching to a BSS +section and then using ASM_OUTPUT_SKIP to allocate the space. +This is true on most ELF targets. +

+ +
+— Target Hook: unsigned int TARGET_SECTION_TYPE_FLAGS (tree decl, const char *name, int reloc)
+

Choose a set of section attributes for use by TARGET_ASM_NAMED_SECTION +based on a variable or function decl, a section name, and whether or not the +declaration's initializer may contain runtime relocations. decl may be + null, in which case read-write data should be assumed. + +

The default version of this function handles choosing code vs data, +read-only vs read-write data, and flag_pic. You should only +need to override this if your target has special flags that might be +set via __attribute__. +

+ +
+— Target Hook: int TARGET_ASM_RECORD_GCC_SWITCHES (print_switch_type type, const char * text)
+

Provides the target with the ability to record the gcc command line +switches that have been passed to the compiler, and options that are +enabled. The type argument specifies what is being recorded. +It can take the following values: + +

+
SWITCH_TYPE_PASSED
text is a command line switch that has been set by the user. + +
SWITCH_TYPE_ENABLED
text is an option which has been enabled. This might be as a +direct result of a command line switch, or because it is enabled by +default or because it has been enabled as a side effect of a different +command line switch. For example, the -O2 switch enables +various different individual optimization passes. + +
SWITCH_TYPE_DESCRIPTIVE
text is either NULL or some descriptive text which should be +ignored. If text is NULL then it is being used to warn the +target hook that either recording is starting or ending. The first +time type is SWITCH_TYPE_DESCRIPTIVE and text is NULL, the +warning is for start up and the second time the warning is for +wind down. This feature is to allow the target hook to make any +necessary preparations before it starts to record switches and to +perform any necessary tidying up after it has finished recording +switches. + +
SWITCH_TYPE_LINE_START
This option can be ignored by this target hook. + +
SWITCH_TYPE_LINE_END
This option can be ignored by this target hook. +
+ +

The hook's return value must be zero. Other return values may be +supported in the future. + +

By default this hook is set to NULL, but an example implementation is +provided for ELF based targets. Called elf_record_gcc_switches, +it records the switches as ASCII text inside a new, string mergeable +section in the assembler output file. The name of the new section is +provided by the TARGET_ASM_RECORD_GCC_SWITCHES_SECTION target +hook. +

+ +
+— Target Hook: const char * TARGET_ASM_RECORD_GCC_SWITCHES_SECTION
+

This is the name of the section that will be created by the example +ELF implementation of the TARGET_ASM_RECORD_GCC_SWITCHES target +hook. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/File-Names-and-DBX.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/File-Names-and-DBX.html new file mode 100644 index 0000000..6561c1b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/File-Names-and-DBX.html @@ -0,0 +1,110 @@ + + +File Names and DBX - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: DBX Hooks, +Up: Debugging Info +



+
+ +

15.22.4 File Names in DBX Format

+ + +

This describes file names in DBX format. + +

+— Macro: DBX_OUTPUT_MAIN_SOURCE_FILENAME (stream, name)
+

A C statement to output DBX debugging information to the stdio stream +stream, which indicates that file name is the main source +file—the file specified as the input file for compilation. +This macro is called only once, at the beginning of compilation. + +

This macro need not be defined if the standard form of output +for DBX debugging information is appropriate. + +

It may be necessary to refer to a label equal to the beginning of the +text section. You can use assemble_name (stream, ltext_label_name) +to do so. If you do this, you must also set the variable +used_ltext_label_name to true. +

+ +
+— Macro: NO_DBX_MAIN_SOURCE_DIRECTORY
+

Define this macro, with value 1, if GCC should not emit an indication +of the current directory for compilation and current source language at +the beginning of the file. +

+ +
+— Macro: NO_DBX_GCC_MARKER
+

Define this macro, with value 1, if GCC should not emit an indication +that this object file was compiled by GCC. The default is to emit +an N_OPT stab at the beginning of every source file, with +gcc2_compiled. for the string and value 0. +

+ +
+— Macro: DBX_OUTPUT_MAIN_SOURCE_FILE_END (stream, name)
+

A C statement to output DBX debugging information at the end of +compilation of the main source file name. Output should be +written to the stdio stream stream. + +

If you don't define this macro, nothing special is output at the end +of compilation, which is correct for most machines. +

+ +
+— Macro: DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
+

Define this macro instead of defining +DBX_OUTPUT_MAIN_SOURCE_FILE_END, if what needs to be output at +the end of compilation is a N_SO stab with an empty string, +whose value is the highest absolute text address in the file. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Files.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Files.html new file mode 100644 index 0000000..a872045 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Files.html @@ -0,0 +1,106 @@ + + +Files - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: GGC Roots, +Up: Type Information +



+
+ +

20.3 Source Files Containing Type Information

+ +

+Whenever you add GTY markers to a source file that previously +had none, or create a new source file containing GTY markers, +there are three things you need to do: + +

    +
  1. You need to add the file to the list of source files the type +machinery scans. There are four cases: + +
      +
    1. For a back-end file, this is usually done +automatically; if not, you should add it to target_gtfiles in +the appropriate port's entries in config.gcc. + +
    2. For files shared by all front ends, add the filename to the +GTFILES variable in Makefile.in. + +
    3. For files that are part of one front end, add the filename to the +gtfiles variable defined in the appropriate +config-lang.in. For C, the file is c-config-lang.in. + +
    4. For files that are part of some but not all front ends, add the +filename to the gtfiles variable of all the front ends +that use it. +
    + +
  2. If the file was a header file, you'll need to check that it's included +in the right place to be visible to the generated files. For a back-end +header file, this should be done automatically. For a front-end header +file, it needs to be included by the same file that includes +gtype-lang.h. For other header files, it needs to be +included in gtype-desc.c, which is a generated file, so add it to +ifiles in open_base_file in gengtype.c. + +

    For source files that aren't header files, the machinery will generate a +header file that should be included in the source file you just changed. +The file will be called gt-path.h where path is the +pathname relative to the gcc directory with slashes replaced by +-, so for example the header file to be included in +cp/parser.c is called gt-cp-parser.c. The +generated header file should be included after everything else in the +source file. Don't forget to mention this file as a dependency in the +Makefile! + +

+ +

For language frontends, there is another file that needs to be included +somewhere. It will be called gtype-lang.h, where +lang is the name of the subdirectory the language is contained in. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Filesystem.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Filesystem.html new file mode 100644 index 0000000..4c38cf2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Filesystem.html @@ -0,0 +1,133 @@ + + +Filesystem - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Host Common, +Up: Host Config +



+
+ +

16.2 Host Filesystem

+ +

+GCC needs to know a number of things about the semantics of the host +machine's filesystem. Filesystems with Unix and MS-DOS semantics are +automatically detected. For other systems, you can define the +following macros in xm-machine.h. + +

+
HAVE_DOS_BASED_FILE_SYSTEM
This macro is automatically defined by system.h if the host +file system obeys the semantics defined by MS-DOS instead of Unix. +DOS file systems are case insensitive, file specifications may begin +with a drive letter, and both forward slash and backslash (/ +and \) are directory separators. + +
DIR_SEPARATOR
DIR_SEPARATOR_2
If defined, these macros expand to character constants specifying +separators for directory names within a file specification. +system.h will automatically give them appropriate values on +Unix and MS-DOS file systems. If your file system is neither of +these, define one or both appropriately in xm-machine.h. + +

However, operating systems like VMS, where constructing a pathname is +more complicated than just stringing together directory names +separated by a special character, should not define either of these +macros. + +

PATH_SEPARATOR
If defined, this macro should expand to a character constant +specifying the separator for elements of search paths. The default +value is a colon (:). DOS-based systems usually, but not +always, use semicolon (;). + +
VMS
Define this macro if the host system is VMS. + +
HOST_OBJECT_SUFFIX
Define this macro to be a C string representing the suffix for object +files on your host machine. If you do not define this macro, GCC will +use .o as the suffix for object files. + +
HOST_EXECUTABLE_SUFFIX
Define this macro to be a C string representing the suffix for +executable files on your host machine. If you do not define this macro, +GCC will use the null string as the suffix for executable files. + +
HOST_BIT_BUCKET
A pathname defined by the host operating system, which can be opened as +a file and written to, but all the information written is discarded. +This is commonly known as a bit bucket or null device. If +you do not define this macro, GCC will use /dev/null as the bit +bucket. If the host does not support a bit bucket, define this macro to +an invalid filename. + +
UPDATE_PATH_HOST_CANONICALIZE (path)
If defined, a C statement (sans semicolon) that performs host-dependent +canonicalization when a path used in a compilation driver or +preprocessor is canonicalized. path is a malloc-ed path to be +canonicalized. If the C statement does canonicalize path into a +different buffer, the old path should be freed and the new buffer should +have been allocated with malloc. + +
DUMPFILE_FORMAT
Define this macro to be a C string representing the format to use for +constructing the index part of debugging dump file names. The resultant +string must fit in fifteen bytes. The full filename will be the +concatenation of: the prefix of the assembler file name, the string +resulting from applying this format to an index number, and a string +unique to each dump file kind, e.g. rtl. + +

If you do not define this macro, GCC will use .%02d.. You should +define this macro if using the default will create an invalid file name. + +

DELETE_IF_ORDINARY
Define this macro to be a C statement (sans semicolon) that performs +host-dependent removal of ordinary temp files in the compilation driver. + +

If you do not define this macro, GCC will use the default version. You +should define this macro if the default version does not reliably remove +the temp file as, for example, on VMS which allows multiple versions +of a file. + +

HOST_LACKS_INODE_NUMBERS
Define this macro if the host filesystem does not report meaningful inode +numbers in struct stat. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Fixed_002dpoint-fractional-library-routines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Fixed_002dpoint-fractional-library-routines.html new file mode 100644 index 0000000..ea9101a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Fixed_002dpoint-fractional-library-routines.html @@ -0,0 +1,1501 @@ + + +Fixed-point fractional library routines - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + + +

4.4 Routines for fixed-point fractional emulation

+ +

+The software fixed-point library implements fixed-point fractional +arithmetic, and is only activated on selected targets. + +

For ease of comprehension fract is an alias for the +_Fract type, accum an alias for _Accum, and +sat an alias for _Sat. + +

For illustrative purposes, in this section the fixed-point fractional type +short fract is assumed to correspond to machine mode QQmode; +unsigned short fract to UQQmode; +fract to HQmode; +unsigned fract to UHQmode; +long fract to SQmode; +unsigned long fract to USQmode; +long long fract to DQmode; +and unsigned long long fract to UDQmode. +Similarly the fixed-point accumulator type +short accum corresponds to HAmode; +unsigned short accum to UHAmode; +accum to SAmode; +unsigned accum to USAmode; +long accum to DAmode; +unsigned long accum to UDAmode; +long long accum to TAmode; +and unsigned long long accum to UTAmode. + +

4.4.1 Arithmetic functions

+ +
+— Runtime Function: short fract __addqq3 (short fract a, short fract b)
+— Runtime Function: fract __addhq3 (fract a, fract b)
+— Runtime Function: long fract __addsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __adddq3 (long long fract a, long long fract b)
+— Runtime Function: unsigned short fract __adduqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __adduhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __addusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __addudq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: short accum __addha3 (short accum a, short accum b)
+— Runtime Function: accum __addsa3 (accum a, accum b)
+— Runtime Function: long accum __addda3 (long accum a, long accum b)
+— Runtime Function: long long accum __addta3 (long long accum a, long long accum b)
+— Runtime Function: unsigned short accum __adduha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __addusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __adduda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __adduta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the sum of a and b. +

+ +
+— Runtime Function: short fract __ssaddqq3 (short fract a, short fract b)
+— Runtime Function: fract __ssaddhq3 (fract a, fract b)
+— Runtime Function: long fract __ssaddsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __ssadddq3 (long long fract a, long long fract b)
+— Runtime Function: short accum __ssaddha3 (short accum a, short accum b)
+— Runtime Function: accum __ssaddsa3 (accum a, accum b)
+— Runtime Function: long accum __ssaddda3 (long accum a, long accum b)
+— Runtime Function: long long accum __ssaddta3 (long long accum a, long long accum b)
+

These functions return the sum of a and b with signed saturation. +

+ +
+— Runtime Function: unsigned short fract __usadduqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __usadduhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __usaddusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __usaddudq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: unsigned short accum __usadduha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __usaddusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __usadduda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __usadduta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the sum of a and b with unsigned saturation. +

+ +
+— Runtime Function: short fract __subqq3 (short fract a, short fract b)
+— Runtime Function: fract __subhq3 (fract a, fract b)
+— Runtime Function: long fract __subsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __subdq3 (long long fract a, long long fract b)
+— Runtime Function: unsigned short fract __subuqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __subuhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __subusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __subudq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: short accum __subha3 (short accum a, short accum b)
+— Runtime Function: accum __subsa3 (accum a, accum b)
+— Runtime Function: long accum __subda3 (long accum a, long accum b)
+— Runtime Function: long long accum __subta3 (long long accum a, long long accum b)
+— Runtime Function: unsigned short accum __subuha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __subusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __subuda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __subuta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the difference of a and b; +that is, a - b. +

+ +
+— Runtime Function: short fract __sssubqq3 (short fract a, short fract b)
+— Runtime Function: fract __sssubhq3 (fract a, fract b)
+— Runtime Function: long fract __sssubsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __sssubdq3 (long long fract a, long long fract b)
+— Runtime Function: short accum __sssubha3 (short accum a, short accum b)
+— Runtime Function: accum __sssubsa3 (accum a, accum b)
+— Runtime Function: long accum __sssubda3 (long accum a, long accum b)
+— Runtime Function: long long accum __sssubta3 (long long accum a, long long accum b)
+

These functions return the difference of a and b with signed +saturation; that is, a - b. +

+ +
+— Runtime Function: unsigned short fract __ussubuqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __ussubuhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __ussubusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __ussubudq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: unsigned short accum __ussubuha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __ussubusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __ussubuda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __ussubuta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the difference of a and b with unsigned +saturation; that is, a - b. +

+ +
+— Runtime Function: short fract __mulqq3 (short fract a, short fract b)
+— Runtime Function: fract __mulhq3 (fract a, fract b)
+— Runtime Function: long fract __mulsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __muldq3 (long long fract a, long long fract b)
+— Runtime Function: unsigned short fract __muluqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __muluhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __mulusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __muludq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: short accum __mulha3 (short accum a, short accum b)
+— Runtime Function: accum __mulsa3 (accum a, accum b)
+— Runtime Function: long accum __mulda3 (long accum a, long accum b)
+— Runtime Function: long long accum __multa3 (long long accum a, long long accum b)
+— Runtime Function: unsigned short accum __muluha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __mulusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __muluda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __muluta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the product of a and b. +

+ +
+— Runtime Function: short fract __ssmulqq3 (short fract a, short fract b)
+— Runtime Function: fract __ssmulhq3 (fract a, fract b)
+— Runtime Function: long fract __ssmulsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __ssmuldq3 (long long fract a, long long fract b)
+— Runtime Function: short accum __ssmulha3 (short accum a, short accum b)
+— Runtime Function: accum __ssmulsa3 (accum a, accum b)
+— Runtime Function: long accum __ssmulda3 (long accum a, long accum b)
+— Runtime Function: long long accum __ssmulta3 (long long accum a, long long accum b)
+

These functions return the product of a and b with signed +saturation. +

+ +
+— Runtime Function: unsigned short fract __usmuluqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __usmuluhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __usmulusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __usmuludq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: unsigned short accum __usmuluha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __usmulusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __usmuluda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __usmuluta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the product of a and b with unsigned +saturation. +

+ +
+— Runtime Function: short fract __divqq3 (short fract a, short fract b)
+— Runtime Function: fract __divhq3 (fract a, fract b)
+— Runtime Function: long fract __divsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __divdq3 (long long fract a, long long fract b)
+— Runtime Function: short accum __divha3 (short accum a, short accum b)
+— Runtime Function: accum __divsa3 (accum a, accum b)
+— Runtime Function: long accum __divda3 (long accum a, long accum b)
+— Runtime Function: long long accum __divta3 (long long accum a, long long accum b)
+

These functions return the quotient of the signed division of a +and b. +

+ +
+— Runtime Function: unsigned short fract __udivuqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __udivuhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __udivusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __udivudq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: unsigned short accum __udivuha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __udivusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __udivuda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __udivuta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the quotient of the unsigned division of a +and b. +

+ +
+— Runtime Function: short fract __ssdivqq3 (short fract a, short fract b)
+— Runtime Function: fract __ssdivhq3 (fract a, fract b)
+— Runtime Function: long fract __ssdivsq3 (long fract a, long fract b)
+— Runtime Function: long long fract __ssdivdq3 (long long fract a, long long fract b)
+— Runtime Function: short accum __ssdivha3 (short accum a, short accum b)
+— Runtime Function: accum __ssdivsa3 (accum a, accum b)
+— Runtime Function: long accum __ssdivda3 (long accum a, long accum b)
+— Runtime Function: long long accum __ssdivta3 (long long accum a, long long accum b)
+

These functions return the quotient of the signed division of a +and b with signed saturation. +

+ +
+— Runtime Function: unsigned short fract __usdivuqq3 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: unsigned fract __usdivuhq3 (unsigned fract a, unsigned fract b)
+— Runtime Function: unsigned long fract __usdivusq3 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: unsigned long long fract __usdivudq3 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: unsigned short accum __usdivuha3 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: unsigned accum __usdivusa3 (unsigned accum a, unsigned accum b)
+— Runtime Function: unsigned long accum __usdivuda3 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: unsigned long long accum __usdivuta3 (unsigned long long accum a, unsigned long long accum b)
+

These functions return the quotient of the unsigned division of a +and b with unsigned saturation. +

+ +
+— Runtime Function: short fract __negqq2 (short fract a)
+— Runtime Function: fract __neghq2 (fract a)
+— Runtime Function: long fract __negsq2 (long fract a)
+— Runtime Function: long long fract __negdq2 (long long fract a)
+— Runtime Function: unsigned short fract __neguqq2 (unsigned short fract a)
+— Runtime Function: unsigned fract __neguhq2 (unsigned fract a)
+— Runtime Function: unsigned long fract __negusq2 (unsigned long fract a)
+— Runtime Function: unsigned long long fract __negudq2 (unsigned long long fract a)
+— Runtime Function: short accum __negha2 (short accum a)
+— Runtime Function: accum __negsa2 (accum a)
+— Runtime Function: long accum __negda2 (long accum a)
+— Runtime Function: long long accum __negta2 (long long accum a)
+— Runtime Function: unsigned short accum __neguha2 (unsigned short accum a)
+— Runtime Function: unsigned accum __negusa2 (unsigned accum a)
+— Runtime Function: unsigned long accum __neguda2 (unsigned long accum a)
+— Runtime Function: unsigned long long accum __neguta2 (unsigned long long accum a)
+

These functions return the negation of a. +

+ +
+— Runtime Function: short fract __ssnegqq2 (short fract a)
+— Runtime Function: fract __ssneghq2 (fract a)
+— Runtime Function: long fract __ssnegsq2 (long fract a)
+— Runtime Function: long long fract __ssnegdq2 (long long fract a)
+— Runtime Function: short accum __ssnegha2 (short accum a)
+— Runtime Function: accum __ssnegsa2 (accum a)
+— Runtime Function: long accum __ssnegda2 (long accum a)
+— Runtime Function: long long accum __ssnegta2 (long long accum a)
+

These functions return the negation of a with signed saturation. +

+ +
+— Runtime Function: unsigned short fract __usneguqq2 (unsigned short fract a)
+— Runtime Function: unsigned fract __usneguhq2 (unsigned fract a)
+— Runtime Function: unsigned long fract __usnegusq2 (unsigned long fract a)
+— Runtime Function: unsigned long long fract __usnegudq2 (unsigned long long fract a)
+— Runtime Function: unsigned short accum __usneguha2 (unsigned short accum a)
+— Runtime Function: unsigned accum __usnegusa2 (unsigned accum a)
+— Runtime Function: unsigned long accum __usneguda2 (unsigned long accum a)
+— Runtime Function: unsigned long long accum __usneguta2 (unsigned long long accum a)
+

These functions return the negation of a with unsigned saturation. +

+ +
+— Runtime Function: short fract __ashlqq3 (short fract a, int b)
+— Runtime Function: fract __ashlhq3 (fract a, int b)
+— Runtime Function: long fract __ashlsq3 (long fract a, int b)
+— Runtime Function: long long fract __ashldq3 (long long fract a, int b)
+— Runtime Function: unsigned short fract __ashluqq3 (unsigned short fract a, int b)
+— Runtime Function: unsigned fract __ashluhq3 (unsigned fract a, int b)
+— Runtime Function: unsigned long fract __ashlusq3 (unsigned long fract a, int b)
+— Runtime Function: unsigned long long fract __ashludq3 (unsigned long long fract a, int b)
+— Runtime Function: short accum __ashlha3 (short accum a, int b)
+— Runtime Function: accum __ashlsa3 (accum a, int b)
+— Runtime Function: long accum __ashlda3 (long accum a, int b)
+— Runtime Function: long long accum __ashlta3 (long long accum a, int b)
+— Runtime Function: unsigned short accum __ashluha3 (unsigned short accum a, int b)
+— Runtime Function: unsigned accum __ashlusa3 (unsigned accum a, int b)
+— Runtime Function: unsigned long accum __ashluda3 (unsigned long accum a, int b)
+— Runtime Function: unsigned long long accum __ashluta3 (unsigned long long accum a, int b)
+

These functions return the result of shifting a left by b bits. +

+ +
+— Runtime Function: short fract __ashrqq3 (short fract a, int b)
+— Runtime Function: fract __ashrhq3 (fract a, int b)
+— Runtime Function: long fract __ashrsq3 (long fract a, int b)
+— Runtime Function: long long fract __ashrdq3 (long long fract a, int b)
+— Runtime Function: short accum __ashrha3 (short accum a, int b)
+— Runtime Function: accum __ashrsa3 (accum a, int b)
+— Runtime Function: long accum __ashrda3 (long accum a, int b)
+— Runtime Function: long long accum __ashrta3 (long long accum a, int b)
+

These functions return the result of arithmetically shifting a right +by b bits. +

+ +
+— Runtime Function: unsigned short fract __lshruqq3 (unsigned short fract a, int b)
+— Runtime Function: unsigned fract __lshruhq3 (unsigned fract a, int b)
+— Runtime Function: unsigned long fract __lshrusq3 (unsigned long fract a, int b)
+— Runtime Function: unsigned long long fract __lshrudq3 (unsigned long long fract a, int b)
+— Runtime Function: unsigned short accum __lshruha3 (unsigned short accum a, int b)
+— Runtime Function: unsigned accum __lshrusa3 (unsigned accum a, int b)
+— Runtime Function: unsigned long accum __lshruda3 (unsigned long accum a, int b)
+— Runtime Function: unsigned long long accum __lshruta3 (unsigned long long accum a, int b)
+

These functions return the result of logically shifting a right +by b bits. +

+ +
+— Runtime Function: fract __ssashlhq3 (fract a, int b)
+— Runtime Function: long fract __ssashlsq3 (long fract a, int b)
+— Runtime Function: long long fract __ssashldq3 (long long fract a, int b)
+— Runtime Function: short accum __ssashlha3 (short accum a, int b)
+— Runtime Function: accum __ssashlsa3 (accum a, int b)
+— Runtime Function: long accum __ssashlda3 (long accum a, int b)
+— Runtime Function: long long accum __ssashlta3 (long long accum a, int b)
+

These functions return the result of shifting a left by b bits +with signed saturation. +

+ +
+— Runtime Function: unsigned short fract __usashluqq3 (unsigned short fract a, int b)
+— Runtime Function: unsigned fract __usashluhq3 (unsigned fract a, int b)
+— Runtime Function: unsigned long fract __usashlusq3 (unsigned long fract a, int b)
+— Runtime Function: unsigned long long fract __usashludq3 (unsigned long long fract a, int b)
+— Runtime Function: unsigned short accum __usashluha3 (unsigned short accum a, int b)
+— Runtime Function: unsigned accum __usashlusa3 (unsigned accum a, int b)
+— Runtime Function: unsigned long accum __usashluda3 (unsigned long accum a, int b)
+— Runtime Function: unsigned long long accum __usashluta3 (unsigned long long accum a, int b)
+

These functions return the result of shifting a left by b bits +with unsigned saturation. +

+ +

4.4.2 Comparison functions

+ +

The following functions implement fixed-point comparisons. These functions +implement a low-level compare, upon which the higher level comparison +operators (such as less than and greater than or equal to) can be +constructed. The returned values lie in the range zero to two, to allow +the high-level operators to be implemented by testing the returned +result using either signed or unsigned comparison. + +

+— Runtime Function: int __cmpqq2 (short fract a, short fract b)
+— Runtime Function: int __cmphq2 (fract a, fract b)
+— Runtime Function: int __cmpsq2 (long fract a, long fract b)
+— Runtime Function: int __cmpdq2 (long long fract a, long long fract b)
+— Runtime Function: int __cmpuqq2 (unsigned short fract a, unsigned short fract b)
+— Runtime Function: int __cmpuhq2 (unsigned fract a, unsigned fract b)
+— Runtime Function: int __cmpusq2 (unsigned long fract a, unsigned long fract b)
+— Runtime Function: int __cmpudq2 (unsigned long long fract a, unsigned long long fract b)
+— Runtime Function: int __cmpha2 (short accum a, short accum b)
+— Runtime Function: int __cmpsa2 (accum a, accum b)
+— Runtime Function: int __cmpda2 (long accum a, long accum b)
+— Runtime Function: int __cmpta2 (long long accum a, long long accum b)
+— Runtime Function: int __cmpuha2 (unsigned short accum a, unsigned short accum b)
+— Runtime Function: int __cmpusa2 (unsigned accum a, unsigned accum b)
+— Runtime Function: int __cmpuda2 (unsigned long accum a, unsigned long accum b)
+— Runtime Function: int __cmputa2 (unsigned long long accum a, unsigned long long accum b)
+

These functions perform a signed or unsigned comparison of a and +b (depending on the selected machine mode). If a is less +than b, they return 0; if a is greater than b, they +return 2; and if a and b are equal they return 1. +

+ +

4.4.3 Conversion functions

+ +
+— Runtime Function: fract __fractqqhq2 (short fract a)
+— Runtime Function: long fract __fractqqsq2 (short fract a)
+— Runtime Function: long long fract __fractqqdq2 (short fract a)
+— Runtime Function: short accum __fractqqha (short fract a)
+— Runtime Function: accum __fractqqsa (short fract a)
+— Runtime Function: long accum __fractqqda (short fract a)
+— Runtime Function: long long accum __fractqqta (short fract a)
+— Runtime Function: unsigned short fract __fractqquqq (short fract a)
+— Runtime Function: unsigned fract __fractqquhq (short fract a)
+— Runtime Function: unsigned long fract __fractqqusq (short fract a)
+— Runtime Function: unsigned long long fract __fractqqudq (short fract a)
+— Runtime Function: unsigned short accum __fractqquha (short fract a)
+— Runtime Function: unsigned accum __fractqqusa (short fract a)
+— Runtime Function: unsigned long accum __fractqquda (short fract a)
+— Runtime Function: unsigned long long accum __fractqquta (short fract a)
+— Runtime Function: signed char __fractqqqi (short fract a)
+— Runtime Function: short __fractqqhi (short fract a)
+— Runtime Function: int __fractqqsi (short fract a)
+— Runtime Function: long __fractqqdi (short fract a)
+— Runtime Function: long long __fractqqti (short fract a)
+— Runtime Function: float __fractqqsf (short fract a)
+— Runtime Function: double __fractqqdf (short fract a)
+— Runtime Function: short fract __fracthqqq2 (fract a)
+— Runtime Function: long fract __fracthqsq2 (fract a)
+— Runtime Function: long long fract __fracthqdq2 (fract a)
+— Runtime Function: short accum __fracthqha (fract a)
+— Runtime Function: accum __fracthqsa (fract a)
+— Runtime Function: long accum __fracthqda (fract a)
+— Runtime Function: long long accum __fracthqta (fract a)
+— Runtime Function: unsigned short fract __fracthquqq (fract a)
+— Runtime Function: unsigned fract __fracthquhq (fract a)
+— Runtime Function: unsigned long fract __fracthqusq (fract a)
+— Runtime Function: unsigned long long fract __fracthqudq (fract a)
+— Runtime Function: unsigned short accum __fracthquha (fract a)
+— Runtime Function: unsigned accum __fracthqusa (fract a)
+— Runtime Function: unsigned long accum __fracthquda (fract a)
+— Runtime Function: unsigned long long accum __fracthquta (fract a)
+— Runtime Function: signed char __fracthqqi (fract a)
+— Runtime Function: short __fracthqhi (fract a)
+— Runtime Function: int __fracthqsi (fract a)
+— Runtime Function: long __fracthqdi (fract a)
+— Runtime Function: long long __fracthqti (fract a)
+— Runtime Function: float __fracthqsf (fract a)
+— Runtime Function: double __fracthqdf (fract a)
+— Runtime Function: short fract __fractsqqq2 (long fract a)
+— Runtime Function: fract __fractsqhq2 (long fract a)
+— Runtime Function: long long fract __fractsqdq2 (long fract a)
+— Runtime Function: short accum __fractsqha (long fract a)
+— Runtime Function: accum __fractsqsa (long fract a)
+— Runtime Function: long accum __fractsqda (long fract a)
+— Runtime Function: long long accum __fractsqta (long fract a)
+— Runtime Function: unsigned short fract __fractsquqq (long fract a)
+— Runtime Function: unsigned fract __fractsquhq (long fract a)
+— Runtime Function: unsigned long fract __fractsqusq (long fract a)
+— Runtime Function: unsigned long long fract __fractsqudq (long fract a)
+— Runtime Function: unsigned short accum __fractsquha (long fract a)
+— Runtime Function: unsigned accum __fractsqusa (long fract a)
+— Runtime Function: unsigned long accum __fractsquda (long fract a)
+— Runtime Function: unsigned long long accum __fractsquta (long fract a)
+— Runtime Function: signed char __fractsqqi (long fract a)
+— Runtime Function: short __fractsqhi (long fract a)
+— Runtime Function: int __fractsqsi (long fract a)
+— Runtime Function: long __fractsqdi (long fract a)
+— Runtime Function: long long __fractsqti (long fract a)
+— Runtime Function: float __fractsqsf (long fract a)
+— Runtime Function: double __fractsqdf (long fract a)
+— Runtime Function: short fract __fractdqqq2 (long long fract a)
+— Runtime Function: fract __fractdqhq2 (long long fract a)
+— Runtime Function: long fract __fractdqsq2 (long long fract a)
+— Runtime Function: short accum __fractdqha (long long fract a)
+— Runtime Function: accum __fractdqsa (long long fract a)
+— Runtime Function: long accum __fractdqda (long long fract a)
+— Runtime Function: long long accum __fractdqta (long long fract a)
+— Runtime Function: unsigned short fract __fractdquqq (long long fract a)
+— Runtime Function: unsigned fract __fractdquhq (long long fract a)
+— Runtime Function: unsigned long fract __fractdqusq (long long fract a)
+— Runtime Function: unsigned long long fract __fractdqudq (long long fract a)
+— Runtime Function: unsigned short accum __fractdquha (long long fract a)
+— Runtime Function: unsigned accum __fractdqusa (long long fract a)
+— Runtime Function: unsigned long accum __fractdquda (long long fract a)
+— Runtime Function: unsigned long long accum __fractdquta (long long fract a)
+— Runtime Function: signed char __fractdqqi (long long fract a)
+— Runtime Function: short __fractdqhi (long long fract a)
+— Runtime Function: int __fractdqsi (long long fract a)
+— Runtime Function: long __fractdqdi (long long fract a)
+— Runtime Function: long long __fractdqti (long long fract a)
+— Runtime Function: float __fractdqsf (long long fract a)
+— Runtime Function: double __fractdqdf (long long fract a)
+— Runtime Function: short fract __fracthaqq (short accum a)
+— Runtime Function: fract __fracthahq (short accum a)
+— Runtime Function: long fract __fracthasq (short accum a)
+— Runtime Function: long long fract __fracthadq (short accum a)
+— Runtime Function: accum __fracthasa2 (short accum a)
+— Runtime Function: long accum __fracthada2 (short accum a)
+— Runtime Function: long long accum __fracthata2 (short accum a)
+— Runtime Function: unsigned short fract __fracthauqq (short accum a)
+— Runtime Function: unsigned fract __fracthauhq (short accum a)
+— Runtime Function: unsigned long fract __fracthausq (short accum a)
+— Runtime Function: unsigned long long fract __fracthaudq (short accum a)
+— Runtime Function: unsigned short accum __fracthauha (short accum a)
+— Runtime Function: unsigned accum __fracthausa (short accum a)
+— Runtime Function: unsigned long accum __fracthauda (short accum a)
+— Runtime Function: unsigned long long accum __fracthauta (short accum a)
+— Runtime Function: signed char __fracthaqi (short accum a)
+— Runtime Function: short __fracthahi (short accum a)
+— Runtime Function: int __fracthasi (short accum a)
+— Runtime Function: long __fracthadi (short accum a)
+— Runtime Function: long long __fracthati (short accum a)
+— Runtime Function: float __fracthasf (short accum a)
+— Runtime Function: double __fracthadf (short accum a)
+— Runtime Function: short fract __fractsaqq (accum a)
+— Runtime Function: fract __fractsahq (accum a)
+— Runtime Function: long fract __fractsasq (accum a)
+— Runtime Function: long long fract __fractsadq (accum a)
+— Runtime Function: short accum __fractsaha2 (accum a)
+— Runtime Function: long accum __fractsada2 (accum a)
+— Runtime Function: long long accum __fractsata2 (accum a)
+— Runtime Function: unsigned short fract __fractsauqq (accum a)
+— Runtime Function: unsigned fract __fractsauhq (accum a)
+— Runtime Function: unsigned long fract __fractsausq (accum a)
+— Runtime Function: unsigned long long fract __fractsaudq (accum a)
+— Runtime Function: unsigned short accum __fractsauha (accum a)
+— Runtime Function: unsigned accum __fractsausa (accum a)
+— Runtime Function: unsigned long accum __fractsauda (accum a)
+— Runtime Function: unsigned long long accum __fractsauta (accum a)
+— Runtime Function: signed char __fractsaqi (accum a)
+— Runtime Function: short __fractsahi (accum a)
+— Runtime Function: int __fractsasi (accum a)
+— Runtime Function: long __fractsadi (accum a)
+— Runtime Function: long long __fractsati (accum a)
+— Runtime Function: float __fractsasf (accum a)
+— Runtime Function: double __fractsadf (accum a)
+— Runtime Function: short fract __fractdaqq (long accum a)
+— Runtime Function: fract __fractdahq (long accum a)
+— Runtime Function: long fract __fractdasq (long accum a)
+— Runtime Function: long long fract __fractdadq (long accum a)
+— Runtime Function: short accum __fractdaha2 (long accum a)
+— Runtime Function: accum __fractdasa2 (long accum a)
+— Runtime Function: long long accum __fractdata2 (long accum a)
+— Runtime Function: unsigned short fract __fractdauqq (long accum a)
+— Runtime Function: unsigned fract __fractdauhq (long accum a)
+— Runtime Function: unsigned long fract __fractdausq (long accum a)
+— Runtime Function: unsigned long long fract __fractdaudq (long accum a)
+— Runtime Function: unsigned short accum __fractdauha (long accum a)
+— Runtime Function: unsigned accum __fractdausa (long accum a)
+— Runtime Function: unsigned long accum __fractdauda (long accum a)
+— Runtime Function: unsigned long long accum __fractdauta (long accum a)
+— Runtime Function: signed char __fractdaqi (long accum a)
+— Runtime Function: short __fractdahi (long accum a)
+— Runtime Function: int __fractdasi (long accum a)
+— Runtime Function: long __fractdadi (long accum a)
+— Runtime Function: long long __fractdati (long accum a)
+— Runtime Function: float __fractdasf (long accum a)
+— Runtime Function: double __fractdadf (long accum a)
+— Runtime Function: short fract __fracttaqq (long long accum a)
+— Runtime Function: fract __fracttahq (long long accum a)
+— Runtime Function: long fract __fracttasq (long long accum a)
+— Runtime Function: long long fract __fracttadq (long long accum a)
+— Runtime Function: short accum __fracttaha2 (long long accum a)
+— Runtime Function: accum __fracttasa2 (long long accum a)
+— Runtime Function: long accum __fracttada2 (long long accum a)
+— Runtime Function: unsigned short fract __fracttauqq (long long accum a)
+— Runtime Function: unsigned fract __fracttauhq (long long accum a)
+— Runtime Function: unsigned long fract __fracttausq (long long accum a)
+— Runtime Function: unsigned long long fract __fracttaudq (long long accum a)
+— Runtime Function: unsigned short accum __fracttauha (long long accum a)
+— Runtime Function: unsigned accum __fracttausa (long long accum a)
+— Runtime Function: unsigned long accum __fracttauda (long long accum a)
+— Runtime Function: unsigned long long accum __fracttauta (long long accum a)
+— Runtime Function: signed char __fracttaqi (long long accum a)
+— Runtime Function: short __fracttahi (long long accum a)
+— Runtime Function: int __fracttasi (long long accum a)
+— Runtime Function: long __fracttadi (long long accum a)
+— Runtime Function: long long __fracttati (long long accum a)
+— Runtime Function: float __fracttasf (long long accum a)
+— Runtime Function: double __fracttadf (long long accum a)
+— Runtime Function: short fract __fractuqqqq (unsigned short fract a)
+— Runtime Function: fract __fractuqqhq (unsigned short fract a)
+— Runtime Function: long fract __fractuqqsq (unsigned short fract a)
+— Runtime Function: long long fract __fractuqqdq (unsigned short fract a)
+— Runtime Function: short accum __fractuqqha (unsigned short fract a)
+— Runtime Function: accum __fractuqqsa (unsigned short fract a)
+— Runtime Function: long accum __fractuqqda (unsigned short fract a)
+— Runtime Function: long long accum __fractuqqta (unsigned short fract a)
+— Runtime Function: unsigned fract __fractuqquhq2 (unsigned short fract a)
+— Runtime Function: unsigned long fract __fractuqqusq2 (unsigned short fract a)
+— Runtime Function: unsigned long long fract __fractuqqudq2 (unsigned short fract a)
+— Runtime Function: unsigned short accum __fractuqquha (unsigned short fract a)
+— Runtime Function: unsigned accum __fractuqqusa (unsigned short fract a)
+— Runtime Function: unsigned long accum __fractuqquda (unsigned short fract a)
+— Runtime Function: unsigned long long accum __fractuqquta (unsigned short fract a)
+— Runtime Function: signed char __fractuqqqi (unsigned short fract a)
+— Runtime Function: short __fractuqqhi (unsigned short fract a)
+— Runtime Function: int __fractuqqsi (unsigned short fract a)
+— Runtime Function: long __fractuqqdi (unsigned short fract a)
+— Runtime Function: long long __fractuqqti (unsigned short fract a)
+— Runtime Function: float __fractuqqsf (unsigned short fract a)
+— Runtime Function: double __fractuqqdf (unsigned short fract a)
+— Runtime Function: short fract __fractuhqqq (unsigned fract a)
+— Runtime Function: fract __fractuhqhq (unsigned fract a)
+— Runtime Function: long fract __fractuhqsq (unsigned fract a)
+— Runtime Function: long long fract __fractuhqdq (unsigned fract a)
+— Runtime Function: short accum __fractuhqha (unsigned fract a)
+— Runtime Function: accum __fractuhqsa (unsigned fract a)
+— Runtime Function: long accum __fractuhqda (unsigned fract a)
+— Runtime Function: long long accum __fractuhqta (unsigned fract a)
+— Runtime Function: unsigned short fract __fractuhquqq2 (unsigned fract a)
+— Runtime Function: unsigned long fract __fractuhqusq2 (unsigned fract a)
+— Runtime Function: unsigned long long fract __fractuhqudq2 (unsigned fract a)
+— Runtime Function: unsigned short accum __fractuhquha (unsigned fract a)
+— Runtime Function: unsigned accum __fractuhqusa (unsigned fract a)
+— Runtime Function: unsigned long accum __fractuhquda (unsigned fract a)
+— Runtime Function: unsigned long long accum __fractuhquta (unsigned fract a)
+— Runtime Function: signed char __fractuhqqi (unsigned fract a)
+— Runtime Function: short __fractuhqhi (unsigned fract a)
+— Runtime Function: int __fractuhqsi (unsigned fract a)
+— Runtime Function: long __fractuhqdi (unsigned fract a)
+— Runtime Function: long long __fractuhqti (unsigned fract a)
+— Runtime Function: float __fractuhqsf (unsigned fract a)
+— Runtime Function: double __fractuhqdf (unsigned fract a)
+— Runtime Function: short fract __fractusqqq (unsigned long fract a)
+— Runtime Function: fract __fractusqhq (unsigned long fract a)
+— Runtime Function: long fract __fractusqsq (unsigned long fract a)
+— Runtime Function: long long fract __fractusqdq (unsigned long fract a)
+— Runtime Function: short accum __fractusqha (unsigned long fract a)
+— Runtime Function: accum __fractusqsa (unsigned long fract a)
+— Runtime Function: long accum __fractusqda (unsigned long fract a)
+— Runtime Function: long long accum __fractusqta (unsigned long fract a)
+— Runtime Function: unsigned short fract __fractusquqq2 (unsigned long fract a)
+— Runtime Function: unsigned fract __fractusquhq2 (unsigned long fract a)
+— Runtime Function: unsigned long long fract __fractusqudq2 (unsigned long fract a)
+— Runtime Function: unsigned short accum __fractusquha (unsigned long fract a)
+— Runtime Function: unsigned accum __fractusqusa (unsigned long fract a)
+— Runtime Function: unsigned long accum __fractusquda (unsigned long fract a)
+— Runtime Function: unsigned long long accum __fractusquta (unsigned long fract a)
+— Runtime Function: signed char __fractusqqi (unsigned long fract a)
+— Runtime Function: short __fractusqhi (unsigned long fract a)
+— Runtime Function: int __fractusqsi (unsigned long fract a)
+— Runtime Function: long __fractusqdi (unsigned long fract a)
+— Runtime Function: long long __fractusqti (unsigned long fract a)
+— Runtime Function: float __fractusqsf (unsigned long fract a)
+— Runtime Function: double __fractusqdf (unsigned long fract a)
+— Runtime Function: short fract __fractudqqq (unsigned long long fract a)
+— Runtime Function: fract __fractudqhq (unsigned long long fract a)
+— Runtime Function: long fract __fractudqsq (unsigned long long fract a)
+— Runtime Function: long long fract __fractudqdq (unsigned long long fract a)
+— Runtime Function: short accum __fractudqha (unsigned long long fract a)
+— Runtime Function: accum __fractudqsa (unsigned long long fract a)
+— Runtime Function: long accum __fractudqda (unsigned long long fract a)
+— Runtime Function: long long accum __fractudqta (unsigned long long fract a)
+— Runtime Function: unsigned short fract __fractudquqq2 (unsigned long long fract a)
+— Runtime Function: unsigned fract __fractudquhq2 (unsigned long long fract a)
+— Runtime Function: unsigned long fract __fractudqusq2 (unsigned long long fract a)
+— Runtime Function: unsigned short accum __fractudquha (unsigned long long fract a)
+— Runtime Function: unsigned accum __fractudqusa (unsigned long long fract a)
+— Runtime Function: unsigned long accum __fractudquda (unsigned long long fract a)
+— Runtime Function: unsigned long long accum __fractudquta (unsigned long long fract a)
+— Runtime Function: signed char __fractudqqi (unsigned long long fract a)
+— Runtime Function: short __fractudqhi (unsigned long long fract a)
+— Runtime Function: int __fractudqsi (unsigned long long fract a)
+— Runtime Function: long __fractudqdi (unsigned long long fract a)
+— Runtime Function: long long __fractudqti (unsigned long long fract a)
+— Runtime Function: float __fractudqsf (unsigned long long fract a)
+— Runtime Function: double __fractudqdf (unsigned long long fract a)
+— Runtime Function: short fract __fractuhaqq (unsigned short accum a)
+— Runtime Function: fract __fractuhahq (unsigned short accum a)
+— Runtime Function: long fract __fractuhasq (unsigned short accum a)
+— Runtime Function: long long fract __fractuhadq (unsigned short accum a)
+— Runtime Function: short accum __fractuhaha (unsigned short accum a)
+— Runtime Function: accum __fractuhasa (unsigned short accum a)
+— Runtime Function: long accum __fractuhada (unsigned short accum a)
+— Runtime Function: long long accum __fractuhata (unsigned short accum a)
+— Runtime Function: unsigned short fract __fractuhauqq (unsigned short accum a)
+— Runtime Function: unsigned fract __fractuhauhq (unsigned short accum a)
+— Runtime Function: unsigned long fract __fractuhausq (unsigned short accum a)
+— Runtime Function: unsigned long long fract __fractuhaudq (unsigned short accum a)
+— Runtime Function: unsigned accum __fractuhausa2 (unsigned short accum a)
+— Runtime Function: unsigned long accum __fractuhauda2 (unsigned short accum a)
+— Runtime Function: unsigned long long accum __fractuhauta2 (unsigned short accum a)
+— Runtime Function: signed char __fractuhaqi (unsigned short accum a)
+— Runtime Function: short __fractuhahi (unsigned short accum a)
+— Runtime Function: int __fractuhasi (unsigned short accum a)
+— Runtime Function: long __fractuhadi (unsigned short accum a)
+— Runtime Function: long long __fractuhati (unsigned short accum a)
+— Runtime Function: float __fractuhasf (unsigned short accum a)
+— Runtime Function: double __fractuhadf (unsigned short accum a)
+— Runtime Function: short fract __fractusaqq (unsigned accum a)
+— Runtime Function: fract __fractusahq (unsigned accum a)
+— Runtime Function: long fract __fractusasq (unsigned accum a)
+— Runtime Function: long long fract __fractusadq (unsigned accum a)
+— Runtime Function: short accum __fractusaha (unsigned accum a)
+— Runtime Function: accum __fractusasa (unsigned accum a)
+— Runtime Function: long accum __fractusada (unsigned accum a)
+— Runtime Function: long long accum __fractusata (unsigned accum a)
+— Runtime Function: unsigned short fract __fractusauqq (unsigned accum a)
+— Runtime Function: unsigned fract __fractusauhq (unsigned accum a)
+— Runtime Function: unsigned long fract __fractusausq (unsigned accum a)
+— Runtime Function: unsigned long long fract __fractusaudq (unsigned accum a)
+— Runtime Function: unsigned short accum __fractusauha2 (unsigned accum a)
+— Runtime Function: unsigned long accum __fractusauda2 (unsigned accum a)
+— Runtime Function: unsigned long long accum __fractusauta2 (unsigned accum a)
+— Runtime Function: signed char __fractusaqi (unsigned accum a)
+— Runtime Function: short __fractusahi (unsigned accum a)
+— Runtime Function: int __fractusasi (unsigned accum a)
+— Runtime Function: long __fractusadi (unsigned accum a)
+— Runtime Function: long long __fractusati (unsigned accum a)
+— Runtime Function: float __fractusasf (unsigned accum a)
+— Runtime Function: double __fractusadf (unsigned accum a)
+— Runtime Function: short fract __fractudaqq (unsigned long accum a)
+— Runtime Function: fract __fractudahq (unsigned long accum a)
+— Runtime Function: long fract __fractudasq (unsigned long accum a)
+— Runtime Function: long long fract __fractudadq (unsigned long accum a)
+— Runtime Function: short accum __fractudaha (unsigned long accum a)
+— Runtime Function: accum __fractudasa (unsigned long accum a)
+— Runtime Function: long accum __fractudada (unsigned long accum a)
+— Runtime Function: long long accum __fractudata (unsigned long accum a)
+— Runtime Function: unsigned short fract __fractudauqq (unsigned long accum a)
+— Runtime Function: unsigned fract __fractudauhq (unsigned long accum a)
+— Runtime Function: unsigned long fract __fractudausq (unsigned long accum a)
+— Runtime Function: unsigned long long fract __fractudaudq (unsigned long accum a)
+— Runtime Function: unsigned short accum __fractudauha2 (unsigned long accum a)
+— Runtime Function: unsigned accum __fractudausa2 (unsigned long accum a)
+— Runtime Function: unsigned long long accum __fractudauta2 (unsigned long accum a)
+— Runtime Function: signed char __fractudaqi (unsigned long accum a)
+— Runtime Function: short __fractudahi (unsigned long accum a)
+— Runtime Function: int __fractudasi (unsigned long accum a)
+— Runtime Function: long __fractudadi (unsigned long accum a)
+— Runtime Function: long long __fractudati (unsigned long accum a)
+— Runtime Function: float __fractudasf (unsigned long accum a)
+— Runtime Function: double __fractudadf (unsigned long accum a)
+— Runtime Function: short fract __fractutaqq (unsigned long long accum a)
+— Runtime Function: fract __fractutahq (unsigned long long accum a)
+— Runtime Function: long fract __fractutasq (unsigned long long accum a)
+— Runtime Function: long long fract __fractutadq (unsigned long long accum a)
+— Runtime Function: short accum __fractutaha (unsigned long long accum a)
+— Runtime Function: accum __fractutasa (unsigned long long accum a)
+— Runtime Function: long accum __fractutada (unsigned long long accum a)
+— Runtime Function: long long accum __fractutata (unsigned long long accum a)
+— Runtime Function: unsigned short fract __fractutauqq (unsigned long long accum a)
+— Runtime Function: unsigned fract __fractutauhq (unsigned long long accum a)
+— Runtime Function: unsigned long fract __fractutausq (unsigned long long accum a)
+— Runtime Function: unsigned long long fract __fractutaudq (unsigned long long accum a)
+— Runtime Function: unsigned short accum __fractutauha2 (unsigned long long accum a)
+— Runtime Function: unsigned accum __fractutausa2 (unsigned long long accum a)
+— Runtime Function: unsigned long accum __fractutauda2 (unsigned long long accum a)
+— Runtime Function: signed char __fractutaqi (unsigned long long accum a)
+— Runtime Function: short __fractutahi (unsigned long long accum a)
+— Runtime Function: int __fractutasi (unsigned long long accum a)
+— Runtime Function: long __fractutadi (unsigned long long accum a)
+— Runtime Function: long long __fractutati (unsigned long long accum a)
+— Runtime Function: float __fractutasf (unsigned long long accum a)
+— Runtime Function: double __fractutadf (unsigned long long accum a)
+— Runtime Function: short fract __fractqiqq (signed char a)
+— Runtime Function: fract __fractqihq (signed char a)
+— Runtime Function: long fract __fractqisq (signed char a)
+— Runtime Function: long long fract __fractqidq (signed char a)
+— Runtime Function: short accum __fractqiha (signed char a)
+— Runtime Function: accum __fractqisa (signed char a)
+— Runtime Function: long accum __fractqida (signed char a)
+— Runtime Function: long long accum __fractqita (signed char a)
+— Runtime Function: unsigned short fract __fractqiuqq (signed char a)
+— Runtime Function: unsigned fract __fractqiuhq (signed char a)
+— Runtime Function: unsigned long fract __fractqiusq (signed char a)
+— Runtime Function: unsigned long long fract __fractqiudq (signed char a)
+— Runtime Function: unsigned short accum __fractqiuha (signed char a)
+— Runtime Function: unsigned accum __fractqiusa (signed char a)
+— Runtime Function: unsigned long accum __fractqiuda (signed char a)
+— Runtime Function: unsigned long long accum __fractqiuta (signed char a)
+— Runtime Function: short fract __fracthiqq (short a)
+— Runtime Function: fract __fracthihq (short a)
+— Runtime Function: long fract __fracthisq (short a)
+— Runtime Function: long long fract __fracthidq (short a)
+— Runtime Function: short accum __fracthiha (short a)
+— Runtime Function: accum __fracthisa (short a)
+— Runtime Function: long accum __fracthida (short a)
+— Runtime Function: long long accum __fracthita (short a)
+— Runtime Function: unsigned short fract __fracthiuqq (short a)
+— Runtime Function: unsigned fract __fracthiuhq (short a)
+— Runtime Function: unsigned long fract __fracthiusq (short a)
+— Runtime Function: unsigned long long fract __fracthiudq (short a)
+— Runtime Function: unsigned short accum __fracthiuha (short a)
+— Runtime Function: unsigned accum __fracthiusa (short a)
+— Runtime Function: unsigned long accum __fracthiuda (short a)
+— Runtime Function: unsigned long long accum __fracthiuta (short a)
+— Runtime Function: short fract __fractsiqq (int a)
+— Runtime Function: fract __fractsihq (int a)
+— Runtime Function: long fract __fractsisq (int a)
+— Runtime Function: long long fract __fractsidq (int a)
+— Runtime Function: short accum __fractsiha (int a)
+— Runtime Function: accum __fractsisa (int a)
+— Runtime Function: long accum __fractsida (int a)
+— Runtime Function: long long accum __fractsita (int a)
+— Runtime Function: unsigned short fract __fractsiuqq (int a)
+— Runtime Function: unsigned fract __fractsiuhq (int a)
+— Runtime Function: unsigned long fract __fractsiusq (int a)
+— Runtime Function: unsigned long long fract __fractsiudq (int a)
+— Runtime Function: unsigned short accum __fractsiuha (int a)
+— Runtime Function: unsigned accum __fractsiusa (int a)
+— Runtime Function: unsigned long accum __fractsiuda (int a)
+— Runtime Function: unsigned long long accum __fractsiuta (int a)
+— Runtime Function: short fract __fractdiqq (long a)
+— Runtime Function: fract __fractdihq (long a)
+— Runtime Function: long fract __fractdisq (long a)
+— Runtime Function: long long fract __fractdidq (long a)
+— Runtime Function: short accum __fractdiha (long a)
+— Runtime Function: accum __fractdisa (long a)
+— Runtime Function: long accum __fractdida (long a)
+— Runtime Function: long long accum __fractdita (long a)
+— Runtime Function: unsigned short fract __fractdiuqq (long a)
+— Runtime Function: unsigned fract __fractdiuhq (long a)
+— Runtime Function: unsigned long fract __fractdiusq (long a)
+— Runtime Function: unsigned long long fract __fractdiudq (long a)
+— Runtime Function: unsigned short accum __fractdiuha (long a)
+— Runtime Function: unsigned accum __fractdiusa (long a)
+— Runtime Function: unsigned long accum __fractdiuda (long a)
+— Runtime Function: unsigned long long accum __fractdiuta (long a)
+— Runtime Function: short fract __fracttiqq (long long a)
+— Runtime Function: fract __fracttihq (long long a)
+— Runtime Function: long fract __fracttisq (long long a)
+— Runtime Function: long long fract __fracttidq (long long a)
+— Runtime Function: short accum __fracttiha (long long a)
+— Runtime Function: accum __fracttisa (long long a)
+— Runtime Function: long accum __fracttida (long long a)
+— Runtime Function: long long accum __fracttita (long long a)
+— Runtime Function: unsigned short fract __fracttiuqq (long long a)
+— Runtime Function: unsigned fract __fracttiuhq (long long a)
+— Runtime Function: unsigned long fract __fracttiusq (long long a)
+— Runtime Function: unsigned long long fract __fracttiudq (long long a)
+— Runtime Function: unsigned short accum __fracttiuha (long long a)
+— Runtime Function: unsigned accum __fracttiusa (long long a)
+— Runtime Function: unsigned long accum __fracttiuda (long long a)
+— Runtime Function: unsigned long long accum __fracttiuta (long long a)
+— Runtime Function: short fract __fractsfqq (float a)
+— Runtime Function: fract __fractsfhq (float a)
+— Runtime Function: long fract __fractsfsq (float a)
+— Runtime Function: long long fract __fractsfdq (float a)
+— Runtime Function: short accum __fractsfha (float a)
+— Runtime Function: accum __fractsfsa (float a)
+— Runtime Function: long accum __fractsfda (float a)
+— Runtime Function: long long accum __fractsfta (float a)
+— Runtime Function: unsigned short fract __fractsfuqq (float a)
+— Runtime Function: unsigned fract __fractsfuhq (float a)
+— Runtime Function: unsigned long fract __fractsfusq (float a)
+— Runtime Function: unsigned long long fract __fractsfudq (float a)
+— Runtime Function: unsigned short accum __fractsfuha (float a)
+— Runtime Function: unsigned accum __fractsfusa (float a)
+— Runtime Function: unsigned long accum __fractsfuda (float a)
+— Runtime Function: unsigned long long accum __fractsfuta (float a)
+— Runtime Function: short fract __fractdfqq (double a)
+— Runtime Function: fract __fractdfhq (double a)
+— Runtime Function: long fract __fractdfsq (double a)
+— Runtime Function: long long fract __fractdfdq (double a)
+— Runtime Function: short accum __fractdfha (double a)
+— Runtime Function: accum __fractdfsa (double a)
+— Runtime Function: long accum __fractdfda (double a)
+— Runtime Function: long long accum __fractdfta (double a)
+— Runtime Function: unsigned short fract __fractdfuqq (double a)
+— Runtime Function: unsigned fract __fractdfuhq (double a)
+— Runtime Function: unsigned long fract __fractdfusq (double a)
+— Runtime Function: unsigned long long fract __fractdfudq (double a)
+— Runtime Function: unsigned short accum __fractdfuha (double a)
+— Runtime Function: unsigned accum __fractdfusa (double a)
+— Runtime Function: unsigned long accum __fractdfuda (double a)
+— Runtime Function: unsigned long long accum __fractdfuta (double a)
+

These functions convert from fractional and signed non-fractionals to +fractionals and signed non-fractionals, without saturation. +

+ +
+— Runtime Function: fract __satfractqqhq2 (short fract a)
+— Runtime Function: long fract __satfractqqsq2 (short fract a)
+— Runtime Function: long long fract __satfractqqdq2 (short fract a)
+— Runtime Function: short accum __satfractqqha (short fract a)
+— Runtime Function: accum __satfractqqsa (short fract a)
+— Runtime Function: long accum __satfractqqda (short fract a)
+— Runtime Function: long long accum __satfractqqta (short fract a)
+— Runtime Function: unsigned short fract __satfractqquqq (short fract a)
+— Runtime Function: unsigned fract __satfractqquhq (short fract a)
+— Runtime Function: unsigned long fract __satfractqqusq (short fract a)
+— Runtime Function: unsigned long long fract __satfractqqudq (short fract a)
+— Runtime Function: unsigned short accum __satfractqquha (short fract a)
+— Runtime Function: unsigned accum __satfractqqusa (short fract a)
+— Runtime Function: unsigned long accum __satfractqquda (short fract a)
+— Runtime Function: unsigned long long accum __satfractqquta (short fract a)
+— Runtime Function: short fract __satfracthqqq2 (fract a)
+— Runtime Function: long fract __satfracthqsq2 (fract a)
+— Runtime Function: long long fract __satfracthqdq2 (fract a)
+— Runtime Function: short accum __satfracthqha (fract a)
+— Runtime Function: accum __satfracthqsa (fract a)
+— Runtime Function: long accum __satfracthqda (fract a)
+— Runtime Function: long long accum __satfracthqta (fract a)
+— Runtime Function: unsigned short fract __satfracthquqq (fract a)
+— Runtime Function: unsigned fract __satfracthquhq (fract a)
+— Runtime Function: unsigned long fract __satfracthqusq (fract a)
+— Runtime Function: unsigned long long fract __satfracthqudq (fract a)
+— Runtime Function: unsigned short accum __satfracthquha (fract a)
+— Runtime Function: unsigned accum __satfracthqusa (fract a)
+— Runtime Function: unsigned long accum __satfracthquda (fract a)
+— Runtime Function: unsigned long long accum __satfracthquta (fract a)
+— Runtime Function: short fract __satfractsqqq2 (long fract a)
+— Runtime Function: fract __satfractsqhq2 (long fract a)
+— Runtime Function: long long fract __satfractsqdq2 (long fract a)
+— Runtime Function: short accum __satfractsqha (long fract a)
+— Runtime Function: accum __satfractsqsa (long fract a)
+— Runtime Function: long accum __satfractsqda (long fract a)
+— Runtime Function: long long accum __satfractsqta (long fract a)
+— Runtime Function: unsigned short fract __satfractsquqq (long fract a)
+— Runtime Function: unsigned fract __satfractsquhq (long fract a)
+— Runtime Function: unsigned long fract __satfractsqusq (long fract a)
+— Runtime Function: unsigned long long fract __satfractsqudq (long fract a)
+— Runtime Function: unsigned short accum __satfractsquha (long fract a)
+— Runtime Function: unsigned accum __satfractsqusa (long fract a)
+— Runtime Function: unsigned long accum __satfractsquda (long fract a)
+— Runtime Function: unsigned long long accum __satfractsquta (long fract a)
+— Runtime Function: short fract __satfractdqqq2 (long long fract a)
+— Runtime Function: fract __satfractdqhq2 (long long fract a)
+— Runtime Function: long fract __satfractdqsq2 (long long fract a)
+— Runtime Function: short accum __satfractdqha (long long fract a)
+— Runtime Function: accum __satfractdqsa (long long fract a)
+— Runtime Function: long accum __satfractdqda (long long fract a)
+— Runtime Function: long long accum __satfractdqta (long long fract a)
+— Runtime Function: unsigned short fract __satfractdquqq (long long fract a)
+— Runtime Function: unsigned fract __satfractdquhq (long long fract a)
+— Runtime Function: unsigned long fract __satfractdqusq (long long fract a)
+— Runtime Function: unsigned long long fract __satfractdqudq (long long fract a)
+— Runtime Function: unsigned short accum __satfractdquha (long long fract a)
+— Runtime Function: unsigned accum __satfractdqusa (long long fract a)
+— Runtime Function: unsigned long accum __satfractdquda (long long fract a)
+— Runtime Function: unsigned long long accum __satfractdquta (long long fract a)
+— Runtime Function: short fract __satfracthaqq (short accum a)
+— Runtime Function: fract __satfracthahq (short accum a)
+— Runtime Function: long fract __satfracthasq (short accum a)
+— Runtime Function: long long fract __satfracthadq (short accum a)
+— Runtime Function: accum __satfracthasa2 (short accum a)
+— Runtime Function: long accum __satfracthada2 (short accum a)
+— Runtime Function: long long accum __satfracthata2 (short accum a)
+— Runtime Function: unsigned short fract __satfracthauqq (short accum a)
+— Runtime Function: unsigned fract __satfracthauhq (short accum a)
+— Runtime Function: unsigned long fract __satfracthausq (short accum a)
+— Runtime Function: unsigned long long fract __satfracthaudq (short accum a)
+— Runtime Function: unsigned short accum __satfracthauha (short accum a)
+— Runtime Function: unsigned accum __satfracthausa (short accum a)
+— Runtime Function: unsigned long accum __satfracthauda (short accum a)
+— Runtime Function: unsigned long long accum __satfracthauta (short accum a)
+— Runtime Function: short fract __satfractsaqq (accum a)
+— Runtime Function: fract __satfractsahq (accum a)
+— Runtime Function: long fract __satfractsasq (accum a)
+— Runtime Function: long long fract __satfractsadq (accum a)
+— Runtime Function: short accum __satfractsaha2 (accum a)
+— Runtime Function: long accum __satfractsada2 (accum a)
+— Runtime Function: long long accum __satfractsata2 (accum a)
+— Runtime Function: unsigned short fract __satfractsauqq (accum a)
+— Runtime Function: unsigned fract __satfractsauhq (accum a)
+— Runtime Function: unsigned long fract __satfractsausq (accum a)
+— Runtime Function: unsigned long long fract __satfractsaudq (accum a)
+— Runtime Function: unsigned short accum __satfractsauha (accum a)
+— Runtime Function: unsigned accum __satfractsausa (accum a)
+— Runtime Function: unsigned long accum __satfractsauda (accum a)
+— Runtime Function: unsigned long long accum __satfractsauta (accum a)
+— Runtime Function: short fract __satfractdaqq (long accum a)
+— Runtime Function: fract __satfractdahq (long accum a)
+— Runtime Function: long fract __satfractdasq (long accum a)
+— Runtime Function: long long fract __satfractdadq (long accum a)
+— Runtime Function: short accum __satfractdaha2 (long accum a)
+— Runtime Function: accum __satfractdasa2 (long accum a)
+— Runtime Function: long long accum __satfractdata2 (long accum a)
+— Runtime Function: unsigned short fract __satfractdauqq (long accum a)
+— Runtime Function: unsigned fract __satfractdauhq (long accum a)
+— Runtime Function: unsigned long fract __satfractdausq (long accum a)
+— Runtime Function: unsigned long long fract __satfractdaudq (long accum a)
+— Runtime Function: unsigned short accum __satfractdauha (long accum a)
+— Runtime Function: unsigned accum __satfractdausa (long accum a)
+— Runtime Function: unsigned long accum __satfractdauda (long accum a)
+— Runtime Function: unsigned long long accum __satfractdauta (long accum a)
+— Runtime Function: short fract __satfracttaqq (long long accum a)
+— Runtime Function: fract __satfracttahq (long long accum a)
+— Runtime Function: long fract __satfracttasq (long long accum a)
+— Runtime Function: long long fract __satfracttadq (long long accum a)
+— Runtime Function: short accum __satfracttaha2 (long long accum a)
+— Runtime Function: accum __satfracttasa2 (long long accum a)
+— Runtime Function: long accum __satfracttada2 (long long accum a)
+— Runtime Function: unsigned short fract __satfracttauqq (long long accum a)
+— Runtime Function: unsigned fract __satfracttauhq (long long accum a)
+— Runtime Function: unsigned long fract __satfracttausq (long long accum a)
+— Runtime Function: unsigned long long fract __satfracttaudq (long long accum a)
+— Runtime Function: unsigned short accum __satfracttauha (long long accum a)
+— Runtime Function: unsigned accum __satfracttausa (long long accum a)
+— Runtime Function: unsigned long accum __satfracttauda (long long accum a)
+— Runtime Function: unsigned long long accum __satfracttauta (long long accum a)
+— Runtime Function: short fract __satfractuqqqq (unsigned short fract a)
+— Runtime Function: fract __satfractuqqhq (unsigned short fract a)
+— Runtime Function: long fract __satfractuqqsq (unsigned short fract a)
+— Runtime Function: long long fract __satfractuqqdq (unsigned short fract a)
+— Runtime Function: short accum __satfractuqqha (unsigned short fract a)
+— Runtime Function: accum __satfractuqqsa (unsigned short fract a)
+— Runtime Function: long accum __satfractuqqda (unsigned short fract a)
+— Runtime Function: long long accum __satfractuqqta (unsigned short fract a)
+— Runtime Function: unsigned fract __satfractuqquhq2 (unsigned short fract a)
+— Runtime Function: unsigned long fract __satfractuqqusq2 (unsigned short fract a)
+— Runtime Function: unsigned long long fract __satfractuqqudq2 (unsigned short fract a)
+— Runtime Function: unsigned short accum __satfractuqquha (unsigned short fract a)
+— Runtime Function: unsigned accum __satfractuqqusa (unsigned short fract a)
+— Runtime Function: unsigned long accum __satfractuqquda (unsigned short fract a)
+— Runtime Function: unsigned long long accum __satfractuqquta (unsigned short fract a)
+— Runtime Function: short fract __satfractuhqqq (unsigned fract a)
+— Runtime Function: fract __satfractuhqhq (unsigned fract a)
+— Runtime Function: long fract __satfractuhqsq (unsigned fract a)
+— Runtime Function: long long fract __satfractuhqdq (unsigned fract a)
+— Runtime Function: short accum __satfractuhqha (unsigned fract a)
+— Runtime Function: accum __satfractuhqsa (unsigned fract a)
+— Runtime Function: long accum __satfractuhqda (unsigned fract a)
+— Runtime Function: long long accum __satfractuhqta (unsigned fract a)
+— Runtime Function: unsigned short fract __satfractuhquqq2 (unsigned fract a)
+— Runtime Function: unsigned long fract __satfractuhqusq2 (unsigned fract a)
+— Runtime Function: unsigned long long fract __satfractuhqudq2 (unsigned fract a)
+— Runtime Function: unsigned short accum __satfractuhquha (unsigned fract a)
+— Runtime Function: unsigned accum __satfractuhqusa (unsigned fract a)
+— Runtime Function: unsigned long accum __satfractuhquda (unsigned fract a)
+— Runtime Function: unsigned long long accum __satfractuhquta (unsigned fract a)
+— Runtime Function: short fract __satfractusqqq (unsigned long fract a)
+— Runtime Function: fract __satfractusqhq (unsigned long fract a)
+— Runtime Function: long fract __satfractusqsq (unsigned long fract a)
+— Runtime Function: long long fract __satfractusqdq (unsigned long fract a)
+— Runtime Function: short accum __satfractusqha (unsigned long fract a)
+— Runtime Function: accum __satfractusqsa (unsigned long fract a)
+— Runtime Function: long accum __satfractusqda (unsigned long fract a)
+— Runtime Function: long long accum __satfractusqta (unsigned long fract a)
+— Runtime Function: unsigned short fract __satfractusquqq2 (unsigned long fract a)
+— Runtime Function: unsigned fract __satfractusquhq2 (unsigned long fract a)
+— Runtime Function: unsigned long long fract __satfractusqudq2 (unsigned long fract a)
+— Runtime Function: unsigned short accum __satfractusquha (unsigned long fract a)
+— Runtime Function: unsigned accum __satfractusqusa (unsigned long fract a)
+— Runtime Function: unsigned long accum __satfractusquda (unsigned long fract a)
+— Runtime Function: unsigned long long accum __satfractusquta (unsigned long fract a)
+— Runtime Function: short fract __satfractudqqq (unsigned long long fract a)
+— Runtime Function: fract __satfractudqhq (unsigned long long fract a)
+— Runtime Function: long fract __satfractudqsq (unsigned long long fract a)
+— Runtime Function: long long fract __satfractudqdq (unsigned long long fract a)
+— Runtime Function: short accum __satfractudqha (unsigned long long fract a)
+— Runtime Function: accum __satfractudqsa (unsigned long long fract a)
+— Runtime Function: long accum __satfractudqda (unsigned long long fract a)
+— Runtime Function: long long accum __satfractudqta (unsigned long long fract a)
+— Runtime Function: unsigned short fract __satfractudquqq2 (unsigned long long fract a)
+— Runtime Function: unsigned fract __satfractudquhq2 (unsigned long long fract a)
+— Runtime Function: unsigned long fract __satfractudqusq2 (unsigned long long fract a)
+— Runtime Function: unsigned short accum __satfractudquha (unsigned long long fract a)
+— Runtime Function: unsigned accum __satfractudqusa (unsigned long long fract a)
+— Runtime Function: unsigned long accum __satfractudquda (unsigned long long fract a)
+— Runtime Function: unsigned long long accum __satfractudquta (unsigned long long fract a)
+— Runtime Function: short fract __satfractuhaqq (unsigned short accum a)
+— Runtime Function: fract __satfractuhahq (unsigned short accum a)
+— Runtime Function: long fract __satfractuhasq (unsigned short accum a)
+— Runtime Function: long long fract __satfractuhadq (unsigned short accum a)
+— Runtime Function: short accum __satfractuhaha (unsigned short accum a)
+— Runtime Function: accum __satfractuhasa (unsigned short accum a)
+— Runtime Function: long accum __satfractuhada (unsigned short accum a)
+— Runtime Function: long long accum __satfractuhata (unsigned short accum a)
+— Runtime Function: unsigned short fract __satfractuhauqq (unsigned short accum a)
+— Runtime Function: unsigned fract __satfractuhauhq (unsigned short accum a)
+— Runtime Function: unsigned long fract __satfractuhausq (unsigned short accum a)
+— Runtime Function: unsigned long long fract __satfractuhaudq (unsigned short accum a)
+— Runtime Function: unsigned accum __satfractuhausa2 (unsigned short accum a)
+— Runtime Function: unsigned long accum __satfractuhauda2 (unsigned short accum a)
+— Runtime Function: unsigned long long accum __satfractuhauta2 (unsigned short accum a)
+— Runtime Function: short fract __satfractusaqq (unsigned accum a)
+— Runtime Function: fract __satfractusahq (unsigned accum a)
+— Runtime Function: long fract __satfractusasq (unsigned accum a)
+— Runtime Function: long long fract __satfractusadq (unsigned accum a)
+— Runtime Function: short accum __satfractusaha (unsigned accum a)
+— Runtime Function: accum __satfractusasa (unsigned accum a)
+— Runtime Function: long accum __satfractusada (unsigned accum a)
+— Runtime Function: long long accum __satfractusata (unsigned accum a)
+— Runtime Function: unsigned short fract __satfractusauqq (unsigned accum a)
+— Runtime Function: unsigned fract __satfractusauhq (unsigned accum a)
+— Runtime Function: unsigned long fract __satfractusausq (unsigned accum a)
+— Runtime Function: unsigned long long fract __satfractusaudq (unsigned accum a)
+— Runtime Function: unsigned short accum __satfractusauha2 (unsigned accum a)
+— Runtime Function: unsigned long accum __satfractusauda2 (unsigned accum a)
+— Runtime Function: unsigned long long accum __satfractusauta2 (unsigned accum a)
+— Runtime Function: short fract __satfractudaqq (unsigned long accum a)
+— Runtime Function: fract __satfractudahq (unsigned long accum a)
+— Runtime Function: long fract __satfractudasq (unsigned long accum a)
+— Runtime Function: long long fract __satfractudadq (unsigned long accum a)
+— Runtime Function: short accum __satfractudaha (unsigned long accum a)
+— Runtime Function: accum __satfractudasa (unsigned long accum a)
+— Runtime Function: long accum __satfractudada (unsigned long accum a)
+— Runtime Function: long long accum __satfractudata (unsigned long accum a)
+— Runtime Function: unsigned short fract __satfractudauqq (unsigned long accum a)
+— Runtime Function: unsigned fract __satfractudauhq (unsigned long accum a)
+— Runtime Function: unsigned long fract __satfractudausq (unsigned long accum a)
+— Runtime Function: unsigned long long fract __satfractudaudq (unsigned long accum a)
+— Runtime Function: unsigned short accum __satfractudauha2 (unsigned long accum a)
+— Runtime Function: unsigned accum __satfractudausa2 (unsigned long accum a)
+— Runtime Function: unsigned long long accum __satfractudauta2 (unsigned long accum a)
+— Runtime Function: short fract __satfractutaqq (unsigned long long accum a)
+— Runtime Function: fract __satfractutahq (unsigned long long accum a)
+— Runtime Function: long fract __satfractutasq (unsigned long long accum a)
+— Runtime Function: long long fract __satfractutadq (unsigned long long accum a)
+— Runtime Function: short accum __satfractutaha (unsigned long long accum a)
+— Runtime Function: accum __satfractutasa (unsigned long long accum a)
+— Runtime Function: long accum __satfractutada (unsigned long long accum a)
+— Runtime Function: long long accum __satfractutata (unsigned long long accum a)
+— Runtime Function: unsigned short fract __satfractutauqq (unsigned long long accum a)
+— Runtime Function: unsigned fract __satfractutauhq (unsigned long long accum a)
+— Runtime Function: unsigned long fract __satfractutausq (unsigned long long accum a)
+— Runtime Function: unsigned long long fract __satfractutaudq (unsigned long long accum a)
+— Runtime Function: unsigned short accum __satfractutauha2 (unsigned long long accum a)
+— Runtime Function: unsigned accum __satfractutausa2 (unsigned long long accum a)
+— Runtime Function: unsigned long accum __satfractutauda2 (unsigned long long accum a)
+— Runtime Function: short fract __satfractqiqq (signed char a)
+— Runtime Function: fract __satfractqihq (signed char a)
+— Runtime Function: long fract __satfractqisq (signed char a)
+— Runtime Function: long long fract __satfractqidq (signed char a)
+— Runtime Function: short accum __satfractqiha (signed char a)
+— Runtime Function: accum __satfractqisa (signed char a)
+— Runtime Function: long accum __satfractqida (signed char a)
+— Runtime Function: long long accum __satfractqita (signed char a)
+— Runtime Function: unsigned short fract __satfractqiuqq (signed char a)
+— Runtime Function: unsigned fract __satfractqiuhq (signed char a)
+— Runtime Function: unsigned long fract __satfractqiusq (signed char a)
+— Runtime Function: unsigned long long fract __satfractqiudq (signed char a)
+— Runtime Function: unsigned short accum __satfractqiuha (signed char a)
+— Runtime Function: unsigned accum __satfractqiusa (signed char a)
+— Runtime Function: unsigned long accum __satfractqiuda (signed char a)
+— Runtime Function: unsigned long long accum __satfractqiuta (signed char a)
+— Runtime Function: short fract __satfracthiqq (short a)
+— Runtime Function: fract __satfracthihq (short a)
+— Runtime Function: long fract __satfracthisq (short a)
+— Runtime Function: long long fract __satfracthidq (short a)
+— Runtime Function: short accum __satfracthiha (short a)
+— Runtime Function: accum __satfracthisa (short a)
+— Runtime Function: long accum __satfracthida (short a)
+— Runtime Function: long long accum __satfracthita (short a)
+— Runtime Function: unsigned short fract __satfracthiuqq (short a)
+— Runtime Function: unsigned fract __satfracthiuhq (short a)
+— Runtime Function: unsigned long fract __satfracthiusq (short a)
+— Runtime Function: unsigned long long fract __satfracthiudq (short a)
+— Runtime Function: unsigned short accum __satfracthiuha (short a)
+— Runtime Function: unsigned accum __satfracthiusa (short a)
+— Runtime Function: unsigned long accum __satfracthiuda (short a)
+— Runtime Function: unsigned long long accum __satfracthiuta (short a)
+— Runtime Function: short fract __satfractsiqq (int a)
+— Runtime Function: fract __satfractsihq (int a)
+— Runtime Function: long fract __satfractsisq (int a)
+— Runtime Function: long long fract __satfractsidq (int a)
+— Runtime Function: short accum __satfractsiha (int a)
+— Runtime Function: accum __satfractsisa (int a)
+— Runtime Function: long accum __satfractsida (int a)
+— Runtime Function: long long accum __satfractsita (int a)
+— Runtime Function: unsigned short fract __satfractsiuqq (int a)
+— Runtime Function: unsigned fract __satfractsiuhq (int a)
+— Runtime Function: unsigned long fract __satfractsiusq (int a)
+— Runtime Function: unsigned long long fract __satfractsiudq (int a)
+— Runtime Function: unsigned short accum __satfractsiuha (int a)
+— Runtime Function: unsigned accum __satfractsiusa (int a)
+— Runtime Function: unsigned long accum __satfractsiuda (int a)
+— Runtime Function: unsigned long long accum __satfractsiuta (int a)
+— Runtime Function: short fract __satfractdiqq (long a)
+— Runtime Function: fract __satfractdihq (long a)
+— Runtime Function: long fract __satfractdisq (long a)
+— Runtime Function: long long fract __satfractdidq (long a)
+— Runtime Function: short accum __satfractdiha (long a)
+— Runtime Function: accum __satfractdisa (long a)
+— Runtime Function: long accum __satfractdida (long a)
+— Runtime Function: long long accum __satfractdita (long a)
+— Runtime Function: unsigned short fract __satfractdiuqq (long a)
+— Runtime Function: unsigned fract __satfractdiuhq (long a)
+— Runtime Function: unsigned long fract __satfractdiusq (long a)
+— Runtime Function: unsigned long long fract __satfractdiudq (long a)
+— Runtime Function: unsigned short accum __satfractdiuha (long a)
+— Runtime Function: unsigned accum __satfractdiusa (long a)
+— Runtime Function: unsigned long accum __satfractdiuda (long a)
+— Runtime Function: unsigned long long accum __satfractdiuta (long a)
+— Runtime Function: short fract __satfracttiqq (long long a)
+— Runtime Function: fract __satfracttihq (long long a)
+— Runtime Function: long fract __satfracttisq (long long a)
+— Runtime Function: long long fract __satfracttidq (long long a)
+— Runtime Function: short accum __satfracttiha (long long a)
+— Runtime Function: accum __satfracttisa (long long a)
+— Runtime Function: long accum __satfracttida (long long a)
+— Runtime Function: long long accum __satfracttita (long long a)
+— Runtime Function: unsigned short fract __satfracttiuqq (long long a)
+— Runtime Function: unsigned fract __satfracttiuhq (long long a)
+— Runtime Function: unsigned long fract __satfracttiusq (long long a)
+— Runtime Function: unsigned long long fract __satfracttiudq (long long a)
+— Runtime Function: unsigned short accum __satfracttiuha (long long a)
+— Runtime Function: unsigned accum __satfracttiusa (long long a)
+— Runtime Function: unsigned long accum __satfracttiuda (long long a)
+— Runtime Function: unsigned long long accum __satfracttiuta (long long a)
+— Runtime Function: short fract __satfractsfqq (float a)
+— Runtime Function: fract __satfractsfhq (float a)
+— Runtime Function: long fract __satfractsfsq (float a)
+— Runtime Function: long long fract __satfractsfdq (float a)
+— Runtime Function: short accum __satfractsfha (float a)
+— Runtime Function: accum __satfractsfsa (float a)
+— Runtime Function: long accum __satfractsfda (float a)
+— Runtime Function: long long accum __satfractsfta (float a)
+— Runtime Function: unsigned short fract __satfractsfuqq (float a)
+— Runtime Function: unsigned fract __satfractsfuhq (float a)
+— Runtime Function: unsigned long fract __satfractsfusq (float a)
+— Runtime Function: unsigned long long fract __satfractsfudq (float a)
+— Runtime Function: unsigned short accum __satfractsfuha (float a)
+— Runtime Function: unsigned accum __satfractsfusa (float a)
+— Runtime Function: unsigned long accum __satfractsfuda (float a)
+— Runtime Function: unsigned long long accum __satfractsfuta (float a)
+— Runtime Function: short fract __satfractdfqq (double a)
+— Runtime Function: fract __satfractdfhq (double a)
+— Runtime Function: long fract __satfractdfsq (double a)
+— Runtime Function: long long fract __satfractdfdq (double a)
+— Runtime Function: short accum __satfractdfha (double a)
+— Runtime Function: accum __satfractdfsa (double a)
+— Runtime Function: long accum __satfractdfda (double a)
+— Runtime Function: long long accum __satfractdfta (double a)
+— Runtime Function: unsigned short fract __satfractdfuqq (double a)
+— Runtime Function: unsigned fract __satfractdfuhq (double a)
+— Runtime Function: unsigned long fract __satfractdfusq (double a)
+— Runtime Function: unsigned long long fract __satfractdfudq (double a)
+— Runtime Function: unsigned short accum __satfractdfuha (double a)
+— Runtime Function: unsigned accum __satfractdfusa (double a)
+— Runtime Function: unsigned long accum __satfractdfuda (double a)
+— Runtime Function: unsigned long long accum __satfractdfuta (double a)
+

The functions convert from fractional and signed non-fractionals to +fractionals, with saturation. +

+ +
+— Runtime Function: unsigned char __fractunsqqqi (short fract a)
+— Runtime Function: unsigned short __fractunsqqhi (short fract a)
+— Runtime Function: unsigned int __fractunsqqsi (short fract a)
+— Runtime Function: unsigned long __fractunsqqdi (short fract a)
+— Runtime Function: unsigned long long __fractunsqqti (short fract a)
+— Runtime Function: unsigned char __fractunshqqi (fract a)
+— Runtime Function: unsigned short __fractunshqhi (fract a)
+— Runtime Function: unsigned int __fractunshqsi (fract a)
+— Runtime Function: unsigned long __fractunshqdi (fract a)
+— Runtime Function: unsigned long long __fractunshqti (fract a)
+— Runtime Function: unsigned char __fractunssqqi (long fract a)
+— Runtime Function: unsigned short __fractunssqhi (long fract a)
+— Runtime Function: unsigned int __fractunssqsi (long fract a)
+— Runtime Function: unsigned long __fractunssqdi (long fract a)
+— Runtime Function: unsigned long long __fractunssqti (long fract a)
+— Runtime Function: unsigned char __fractunsdqqi (long long fract a)
+— Runtime Function: unsigned short __fractunsdqhi (long long fract a)
+— Runtime Function: unsigned int __fractunsdqsi (long long fract a)
+— Runtime Function: unsigned long __fractunsdqdi (long long fract a)
+— Runtime Function: unsigned long long __fractunsdqti (long long fract a)
+— Runtime Function: unsigned char __fractunshaqi (short accum a)
+— Runtime Function: unsigned short __fractunshahi (short accum a)
+— Runtime Function: unsigned int __fractunshasi (short accum a)
+— Runtime Function: unsigned long __fractunshadi (short accum a)
+— Runtime Function: unsigned long long __fractunshati (short accum a)
+— Runtime Function: unsigned char __fractunssaqi (accum a)
+— Runtime Function: unsigned short __fractunssahi (accum a)
+— Runtime Function: unsigned int __fractunssasi (accum a)
+— Runtime Function: unsigned long __fractunssadi (accum a)
+— Runtime Function: unsigned long long __fractunssati (accum a)
+— Runtime Function: unsigned char __fractunsdaqi (long accum a)
+— Runtime Function: unsigned short __fractunsdahi (long accum a)
+— Runtime Function: unsigned int __fractunsdasi (long accum a)
+— Runtime Function: unsigned long __fractunsdadi (long accum a)
+— Runtime Function: unsigned long long __fractunsdati (long accum a)
+— Runtime Function: unsigned char __fractunstaqi (long long accum a)
+— Runtime Function: unsigned short __fractunstahi (long long accum a)
+— Runtime Function: unsigned int __fractunstasi (long long accum a)
+— Runtime Function: unsigned long __fractunstadi (long long accum a)
+— Runtime Function: unsigned long long __fractunstati (long long accum a)
+— Runtime Function: unsigned char __fractunsuqqqi (unsigned short fract a)
+— Runtime Function: unsigned short __fractunsuqqhi (unsigned short fract a)
+— Runtime Function: unsigned int __fractunsuqqsi (unsigned short fract a)
+— Runtime Function: unsigned long __fractunsuqqdi (unsigned short fract a)
+— Runtime Function: unsigned long long __fractunsuqqti (unsigned short fract a)
+— Runtime Function: unsigned char __fractunsuhqqi (unsigned fract a)
+— Runtime Function: unsigned short __fractunsuhqhi (unsigned fract a)
+— Runtime Function: unsigned int __fractunsuhqsi (unsigned fract a)
+— Runtime Function: unsigned long __fractunsuhqdi (unsigned fract a)
+— Runtime Function: unsigned long long __fractunsuhqti (unsigned fract a)
+— Runtime Function: unsigned char __fractunsusqqi (unsigned long fract a)
+— Runtime Function: unsigned short __fractunsusqhi (unsigned long fract a)
+— Runtime Function: unsigned int __fractunsusqsi (unsigned long fract a)
+— Runtime Function: unsigned long __fractunsusqdi (unsigned long fract a)
+— Runtime Function: unsigned long long __fractunsusqti (unsigned long fract a)
+— Runtime Function: unsigned char __fractunsudqqi (unsigned long long fract a)
+— Runtime Function: unsigned short __fractunsudqhi (unsigned long long fract a)
+— Runtime Function: unsigned int __fractunsudqsi (unsigned long long fract a)
+— Runtime Function: unsigned long __fractunsudqdi (unsigned long long fract a)
+— Runtime Function: unsigned long long __fractunsudqti (unsigned long long fract a)
+— Runtime Function: unsigned char __fractunsuhaqi (unsigned short accum a)
+— Runtime Function: unsigned short __fractunsuhahi (unsigned short accum a)
+— Runtime Function: unsigned int __fractunsuhasi (unsigned short accum a)
+— Runtime Function: unsigned long __fractunsuhadi (unsigned short accum a)
+— Runtime Function: unsigned long long __fractunsuhati (unsigned short accum a)
+— Runtime Function: unsigned char __fractunsusaqi (unsigned accum a)
+— Runtime Function: unsigned short __fractunsusahi (unsigned accum a)
+— Runtime Function: unsigned int __fractunsusasi (unsigned accum a)
+— Runtime Function: unsigned long __fractunsusadi (unsigned accum a)
+— Runtime Function: unsigned long long __fractunsusati (unsigned accum a)
+— Runtime Function: unsigned char __fractunsudaqi (unsigned long accum a)
+— Runtime Function: unsigned short __fractunsudahi (unsigned long accum a)
+— Runtime Function: unsigned int __fractunsudasi (unsigned long accum a)
+— Runtime Function: unsigned long __fractunsudadi (unsigned long accum a)
+— Runtime Function: unsigned long long __fractunsudati (unsigned long accum a)
+— Runtime Function: unsigned char __fractunsutaqi (unsigned long long accum a)
+— Runtime Function: unsigned short __fractunsutahi (unsigned long long accum a)
+— Runtime Function: unsigned int __fractunsutasi (unsigned long long accum a)
+— Runtime Function: unsigned long __fractunsutadi (unsigned long long accum a)
+— Runtime Function: unsigned long long __fractunsutati (unsigned long long accum a)
+— Runtime Function: short fract __fractunsqiqq (unsigned char a)
+— Runtime Function: fract __fractunsqihq (unsigned char a)
+— Runtime Function: long fract __fractunsqisq (unsigned char a)
+— Runtime Function: long long fract __fractunsqidq (unsigned char a)
+— Runtime Function: short accum __fractunsqiha (unsigned char a)
+— Runtime Function: accum __fractunsqisa (unsigned char a)
+— Runtime Function: long accum __fractunsqida (unsigned char a)
+— Runtime Function: long long accum __fractunsqita (unsigned char a)
+— Runtime Function: unsigned short fract __fractunsqiuqq (unsigned char a)
+— Runtime Function: unsigned fract __fractunsqiuhq (unsigned char a)
+— Runtime Function: unsigned long fract __fractunsqiusq (unsigned char a)
+— Runtime Function: unsigned long long fract __fractunsqiudq (unsigned char a)
+— Runtime Function: unsigned short accum __fractunsqiuha (unsigned char a)
+— Runtime Function: unsigned accum __fractunsqiusa (unsigned char a)
+— Runtime Function: unsigned long accum __fractunsqiuda (unsigned char a)
+— Runtime Function: unsigned long long accum __fractunsqiuta (unsigned char a)
+— Runtime Function: short fract __fractunshiqq (unsigned short a)
+— Runtime Function: fract __fractunshihq (unsigned short a)
+— Runtime Function: long fract __fractunshisq (unsigned short a)
+— Runtime Function: long long fract __fractunshidq (unsigned short a)
+— Runtime Function: short accum __fractunshiha (unsigned short a)
+— Runtime Function: accum __fractunshisa (unsigned short a)
+— Runtime Function: long accum __fractunshida (unsigned short a)
+— Runtime Function: long long accum __fractunshita (unsigned short a)
+— Runtime Function: unsigned short fract __fractunshiuqq (unsigned short a)
+— Runtime Function: unsigned fract __fractunshiuhq (unsigned short a)
+— Runtime Function: unsigned long fract __fractunshiusq (unsigned short a)
+— Runtime Function: unsigned long long fract __fractunshiudq (unsigned short a)
+— Runtime Function: unsigned short accum __fractunshiuha (unsigned short a)
+— Runtime Function: unsigned accum __fractunshiusa (unsigned short a)
+— Runtime Function: unsigned long accum __fractunshiuda (unsigned short a)
+— Runtime Function: unsigned long long accum __fractunshiuta (unsigned short a)
+— Runtime Function: short fract __fractunssiqq (unsigned int a)
+— Runtime Function: fract __fractunssihq (unsigned int a)
+— Runtime Function: long fract __fractunssisq (unsigned int a)
+— Runtime Function: long long fract __fractunssidq (unsigned int a)
+— Runtime Function: short accum __fractunssiha (unsigned int a)
+— Runtime Function: accum __fractunssisa (unsigned int a)
+— Runtime Function: long accum __fractunssida (unsigned int a)
+— Runtime Function: long long accum __fractunssita (unsigned int a)
+— Runtime Function: unsigned short fract __fractunssiuqq (unsigned int a)
+— Runtime Function: unsigned fract __fractunssiuhq (unsigned int a)
+— Runtime Function: unsigned long fract __fractunssiusq (unsigned int a)
+— Runtime Function: unsigned long long fract __fractunssiudq (unsigned int a)
+— Runtime Function: unsigned short accum __fractunssiuha (unsigned int a)
+— Runtime Function: unsigned accum __fractunssiusa (unsigned int a)
+— Runtime Function: unsigned long accum __fractunssiuda (unsigned int a)
+— Runtime Function: unsigned long long accum __fractunssiuta (unsigned int a)
+— Runtime Function: short fract __fractunsdiqq (unsigned long a)
+— Runtime Function: fract __fractunsdihq (unsigned long a)
+— Runtime Function: long fract __fractunsdisq (unsigned long a)
+— Runtime Function: long long fract __fractunsdidq (unsigned long a)
+— Runtime Function: short accum __fractunsdiha (unsigned long a)
+— Runtime Function: accum __fractunsdisa (unsigned long a)
+— Runtime Function: long accum __fractunsdida (unsigned long a)
+— Runtime Function: long long accum __fractunsdita (unsigned long a)
+— Runtime Function: unsigned short fract __fractunsdiuqq (unsigned long a)
+— Runtime Function: unsigned fract __fractunsdiuhq (unsigned long a)
+— Runtime Function: unsigned long fract __fractunsdiusq (unsigned long a)
+— Runtime Function: unsigned long long fract __fractunsdiudq (unsigned long a)
+— Runtime Function: unsigned short accum __fractunsdiuha (unsigned long a)
+— Runtime Function: unsigned accum __fractunsdiusa (unsigned long a)
+— Runtime Function: unsigned long accum __fractunsdiuda (unsigned long a)
+— Runtime Function: unsigned long long accum __fractunsdiuta (unsigned long a)
+— Runtime Function: short fract __fractunstiqq (unsigned long long a)
+— Runtime Function: fract __fractunstihq (unsigned long long a)
+— Runtime Function: long fract __fractunstisq (unsigned long long a)
+— Runtime Function: long long fract __fractunstidq (unsigned long long a)
+— Runtime Function: short accum __fractunstiha (unsigned long long a)
+— Runtime Function: accum __fractunstisa (unsigned long long a)
+— Runtime Function: long accum __fractunstida (unsigned long long a)
+— Runtime Function: long long accum __fractunstita (unsigned long long a)
+— Runtime Function: unsigned short fract __fractunstiuqq (unsigned long long a)
+— Runtime Function: unsigned fract __fractunstiuhq (unsigned long long a)
+— Runtime Function: unsigned long fract __fractunstiusq (unsigned long long a)
+— Runtime Function: unsigned long long fract __fractunstiudq (unsigned long long a)
+— Runtime Function: unsigned short accum __fractunstiuha (unsigned long long a)
+— Runtime Function: unsigned accum __fractunstiusa (unsigned long long a)
+— Runtime Function: unsigned long accum __fractunstiuda (unsigned long long a)
+— Runtime Function: unsigned long long accum __fractunstiuta (unsigned long long a)
+

These functions convert from fractionals to unsigned non-fractionals; +and from unsigned non-fractionals to fractionals, without saturation. +

+ +
+— Runtime Function: short fract __satfractunsqiqq (unsigned char a)
+— Runtime Function: fract __satfractunsqihq (unsigned char a)
+— Runtime Function: long fract __satfractunsqisq (unsigned char a)
+— Runtime Function: long long fract __satfractunsqidq (unsigned char a)
+— Runtime Function: short accum __satfractunsqiha (unsigned char a)
+— Runtime Function: accum __satfractunsqisa (unsigned char a)
+— Runtime Function: long accum __satfractunsqida (unsigned char a)
+— Runtime Function: long long accum __satfractunsqita (unsigned char a)
+— Runtime Function: unsigned short fract __satfractunsqiuqq (unsigned char a)
+— Runtime Function: unsigned fract __satfractunsqiuhq (unsigned char a)
+— Runtime Function: unsigned long fract __satfractunsqiusq (unsigned char a)
+— Runtime Function: unsigned long long fract __satfractunsqiudq (unsigned char a)
+— Runtime Function: unsigned short accum __satfractunsqiuha (unsigned char a)
+— Runtime Function: unsigned accum __satfractunsqiusa (unsigned char a)
+— Runtime Function: unsigned long accum __satfractunsqiuda (unsigned char a)
+— Runtime Function: unsigned long long accum __satfractunsqiuta (unsigned char a)
+— Runtime Function: short fract __satfractunshiqq (unsigned short a)
+— Runtime Function: fract __satfractunshihq (unsigned short a)
+— Runtime Function: long fract __satfractunshisq (unsigned short a)
+— Runtime Function: long long fract __satfractunshidq (unsigned short a)
+— Runtime Function: short accum __satfractunshiha (unsigned short a)
+— Runtime Function: accum __satfractunshisa (unsigned short a)
+— Runtime Function: long accum __satfractunshida (unsigned short a)
+— Runtime Function: long long accum __satfractunshita (unsigned short a)
+— Runtime Function: unsigned short fract __satfractunshiuqq (unsigned short a)
+— Runtime Function: unsigned fract __satfractunshiuhq (unsigned short a)
+— Runtime Function: unsigned long fract __satfractunshiusq (unsigned short a)
+— Runtime Function: unsigned long long fract __satfractunshiudq (unsigned short a)
+— Runtime Function: unsigned short accum __satfractunshiuha (unsigned short a)
+— Runtime Function: unsigned accum __satfractunshiusa (unsigned short a)
+— Runtime Function: unsigned long accum __satfractunshiuda (unsigned short a)
+— Runtime Function: unsigned long long accum __satfractunshiuta (unsigned short a)
+— Runtime Function: short fract __satfractunssiqq (unsigned int a)
+— Runtime Function: fract __satfractunssihq (unsigned int a)
+— Runtime Function: long fract __satfractunssisq (unsigned int a)
+— Runtime Function: long long fract __satfractunssidq (unsigned int a)
+— Runtime Function: short accum __satfractunssiha (unsigned int a)
+— Runtime Function: accum __satfractunssisa (unsigned int a)
+— Runtime Function: long accum __satfractunssida (unsigned int a)
+— Runtime Function: long long accum __satfractunssita (unsigned int a)
+— Runtime Function: unsigned short fract __satfractunssiuqq (unsigned int a)
+— Runtime Function: unsigned fract __satfractunssiuhq (unsigned int a)
+— Runtime Function: unsigned long fract __satfractunssiusq (unsigned int a)
+— Runtime Function: unsigned long long fract __satfractunssiudq (unsigned int a)
+— Runtime Function: unsigned short accum __satfractunssiuha (unsigned int a)
+— Runtime Function: unsigned accum __satfractunssiusa (unsigned int a)
+— Runtime Function: unsigned long accum __satfractunssiuda (unsigned int a)
+— Runtime Function: unsigned long long accum __satfractunssiuta (unsigned int a)
+— Runtime Function: short fract __satfractunsdiqq (unsigned long a)
+— Runtime Function: fract __satfractunsdihq (unsigned long a)
+— Runtime Function: long fract __satfractunsdisq (unsigned long a)
+— Runtime Function: long long fract __satfractunsdidq (unsigned long a)
+— Runtime Function: short accum __satfractunsdiha (unsigned long a)
+— Runtime Function: accum __satfractunsdisa (unsigned long a)
+— Runtime Function: long accum __satfractunsdida (unsigned long a)
+— Runtime Function: long long accum __satfractunsdita (unsigned long a)
+— Runtime Function: unsigned short fract __satfractunsdiuqq (unsigned long a)
+— Runtime Function: unsigned fract __satfractunsdiuhq (unsigned long a)
+— Runtime Function: unsigned long fract __satfractunsdiusq (unsigned long a)
+— Runtime Function: unsigned long long fract __satfractunsdiudq (unsigned long a)
+— Runtime Function: unsigned short accum __satfractunsdiuha (unsigned long a)
+— Runtime Function: unsigned accum __satfractunsdiusa (unsigned long a)
+— Runtime Function: unsigned long accum __satfractunsdiuda (unsigned long a)
+— Runtime Function: unsigned long long accum __satfractunsdiuta (unsigned long a)
+— Runtime Function: short fract __satfractunstiqq (unsigned long long a)
+— Runtime Function: fract __satfractunstihq (unsigned long long a)
+— Runtime Function: long fract __satfractunstisq (unsigned long long a)
+— Runtime Function: long long fract __satfractunstidq (unsigned long long a)
+— Runtime Function: short accum __satfractunstiha (unsigned long long a)
+— Runtime Function: accum __satfractunstisa (unsigned long long a)
+— Runtime Function: long accum __satfractunstida (unsigned long long a)
+— Runtime Function: long long accum __satfractunstita (unsigned long long a)
+— Runtime Function: unsigned short fract __satfractunstiuqq (unsigned long long a)
+— Runtime Function: unsigned fract __satfractunstiuhq (unsigned long long a)
+— Runtime Function: unsigned long fract __satfractunstiusq (unsigned long long a)
+— Runtime Function: unsigned long long fract __satfractunstiudq (unsigned long long a)
+— Runtime Function: unsigned short accum __satfractunstiuha (unsigned long long a)
+— Runtime Function: unsigned accum __satfractunstiusa (unsigned long long a)
+— Runtime Function: unsigned long accum __satfractunstiuda (unsigned long long a)
+— Runtime Function: unsigned long long accum __satfractunstiuta (unsigned long long a)
+

These functions convert from unsigned non-fractionals to fractionals, +with saturation. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Flags.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Flags.html new file mode 100644 index 0000000..8a03d97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Flags.html @@ -0,0 +1,375 @@ + + +Flags - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Special Accessors, +Up: RTL +



+
+ +

12.5 Flags in an RTL Expression

+ +

+RTL expressions contain several flags (one-bit bit-fields) +that are used in certain types of expression. Most often they +are accessed with the following macros, which expand into lvalues. + + + + + +

CONSTANT_POOL_ADDRESS_P (x)
Nonzero in a symbol_ref if it refers to part of the current +function's constant pool. For most targets these addresses are in a +.rodata section entirely separate from the function, but for +some targets the addresses are close to the beginning of the function. +In either case GCC assumes these addresses can be addressed directly, +perhaps with the help of base registers. +Stored in the unchanging field and printed as /u. + +


CONST_OR_PURE_CALL_P (x)
In a call_insn, note, or an expr_list for notes, +indicates that the insn represents a call to a const or pure function. +Stored in the unchanging field and printed as /u. + +


INSN_ANNULLED_BRANCH_P (x)
In a jump_insn, call_insn, or insn indicates +that the branch is an annulling one. See the discussion under +sequence below. Stored in the unchanging field and +printed as /u. + +


INSN_DELETED_P (x)
In an insn, call_insn, jump_insn, code_label, +barrier, or note, +nonzero if the insn has been deleted. Stored in the +volatil field and printed as /v. + +


INSN_FROM_TARGET_P (x)
In an insn or jump_insn or call_insn in a delay +slot of a branch, indicates that the insn +is from the target of the branch. If the branch insn has +INSN_ANNULLED_BRANCH_P set, this insn will only be executed if +the branch is taken. For annulled branches with +INSN_FROM_TARGET_P clear, the insn will be executed only if the +branch is not taken. When INSN_ANNULLED_BRANCH_P is not set, +this insn will always be executed. Stored in the in_struct +field and printed as /s. + +


LABEL_PRESERVE_P (x)
In a code_label or note, indicates that the label is referenced by +code or data not visible to the RTL of a given function. +Labels referenced by a non-local goto will have this bit set. Stored +in the in_struct field and printed as /s. + +


LABEL_REF_NONLOCAL_P (x)
In label_ref and reg_label expressions, nonzero if this is +a reference to a non-local label. +Stored in the volatil field and printed as /v. + +


MEM_IN_STRUCT_P (x)
In mem expressions, nonzero for reference to an entire structure, +union or array, or to a component of one. Zero for references to a +scalar variable or through a pointer to a scalar. If both this flag and +MEM_SCALAR_P are clear, then we don't know whether this mem +is in a structure or not. Both flags should never be simultaneously set. +Stored in the in_struct field and printed as /s. + +


MEM_KEEP_ALIAS_SET_P (x)
In mem expressions, 1 if we should keep the alias set for this +mem unchanged when we access a component. Set to 1, for example, when we +are already in a non-addressable component of an aggregate. +Stored in the jump field and printed as /j. + +


MEM_SCALAR_P (x)
In mem expressions, nonzero for reference to a scalar known not +to be a member of a structure, union, or array. Zero for such +references and for indirections through pointers, even pointers pointing +to scalar types. If both this flag and MEM_IN_STRUCT_P are clear, +then we don't know whether this mem is in a structure or not. +Both flags should never be simultaneously set. +Stored in the return_val field and printed as /i. + +


MEM_VOLATILE_P (x)
In mem, asm_operands, and asm_input expressions, +nonzero for volatile memory references. +Stored in the volatil field and printed as /v. + +


MEM_NOTRAP_P (x)
In mem, nonzero for memory references that will not trap. +Stored in the call field and printed as /c. + +


MEM_POINTER (x)
Nonzero in a mem if the memory reference holds a pointer. +Stored in the frame_related field and printed as /f. + +


REG_FUNCTION_VALUE_P (x)
Nonzero in a reg if it is the place in which this function's +value is going to be returned. (This happens only in a hard +register.) Stored in the return_val field and printed as +/i. + +


REG_POINTER (x)
Nonzero in a reg if the register holds a pointer. Stored in the +frame_related field and printed as /f. + +


REG_USERVAR_P (x)
In a reg, nonzero if it corresponds to a variable present in +the user's source code. Zero for temporaries generated internally by +the compiler. Stored in the volatil field and printed as +/v. + +

The same hard register may be used also for collecting the values of +functions called by this one, but REG_FUNCTION_VALUE_P is zero +in this kind of use. + +


RTX_FRAME_RELATED_P (x)
Nonzero in an insn, call_insn, jump_insn, +barrier, or set which is part of a function prologue +and sets the stack pointer, sets the frame pointer, or saves a register. +This flag should also be set on an instruction that sets up a temporary +register to use in place of the frame pointer. +Stored in the frame_related field and printed as /f. + +

In particular, on RISC targets where there are limits on the sizes of +immediate constants, it is sometimes impossible to reach the register +save area directly from the stack pointer. In that case, a temporary +register is used that is near enough to the register save area, and the +Canonical Frame Address, i.e., DWARF2's logical frame pointer, register +must (temporarily) be changed to be this temporary register. So, the +instruction that sets this temporary register must be marked as +RTX_FRAME_RELATED_P. + +

If the marked instruction is overly complex (defined in terms of what +dwarf2out_frame_debug_expr can handle), you will also have to +create a REG_FRAME_RELATED_EXPR note and attach it to the +instruction. This note should contain a simple expression of the +computation performed by this instruction, i.e., one that +dwarf2out_frame_debug_expr can handle. + +

This flag is required for exception handling support on targets with RTL +prologues. + +


MEM_READONLY_P (x)
Nonzero in a mem, if the memory is statically allocated and read-only. + +

Read-only in this context means never modified during the lifetime of the +program, not necessarily in ROM or in write-disabled pages. A common +example of the later is a shared library's global offset table. This +table is initialized by the runtime loader, so the memory is technically +writable, but after control is transfered from the runtime loader to the +application, this memory will never be subsequently modified. + +

Stored in the unchanging field and printed as /u. + +


SCHED_GROUP_P (x)
During instruction scheduling, in an insn, call_insn or +jump_insn, indicates that the +previous insn must be scheduled together with this insn. This is used to +ensure that certain groups of instructions will not be split up by the +instruction scheduling pass, for example, use insns before +a call_insn may not be separated from the call_insn. +Stored in the in_struct field and printed as /s. + +


SET_IS_RETURN_P (x)
For a set, nonzero if it is for a return. +Stored in the jump field and printed as /j. + +


SIBLING_CALL_P (x)
For a call_insn, nonzero if the insn is a sibling call. +Stored in the jump field and printed as /j. + +


STRING_POOL_ADDRESS_P (x)
For a symbol_ref expression, nonzero if it addresses this function's +string constant pool. +Stored in the frame_related field and printed as /f. + +


SUBREG_PROMOTED_UNSIGNED_P (x)
Returns a value greater then zero for a subreg that has +SUBREG_PROMOTED_VAR_P nonzero if the object being referenced is kept +zero-extended, zero if it is kept sign-extended, and less then zero if it is +extended some other way via the ptr_extend instruction. +Stored in the unchanging +field and volatil field, printed as /u and /v. +This macro may only be used to get the value it may not be used to change +the value. Use SUBREG_PROMOTED_UNSIGNED_SET to change the value. + +


SUBREG_PROMOTED_UNSIGNED_SET (x)
Set the unchanging and volatil fields in a subreg +to reflect zero, sign, or other extension. If volatil is +zero, then unchanging as nonzero means zero extension and as +zero means sign extension. If volatil is nonzero then some +other type of extension was done via the ptr_extend instruction. + +


SUBREG_PROMOTED_VAR_P (x)
Nonzero in a subreg if it was made when accessing an object that +was promoted to a wider mode in accord with the PROMOTED_MODE machine +description macro (see Storage Layout). In this case, the mode of +the subreg is the declared mode of the object and the mode of +SUBREG_REG is the mode of the register that holds the object. +Promoted variables are always either sign- or zero-extended to the wider +mode on every assignment. Stored in the in_struct field and +printed as /s. + +


SYMBOL_REF_USED (x)
In a symbol_ref, indicates that x has been used. This is +normally only used to ensure that x is only declared external +once. Stored in the used field. + +


SYMBOL_REF_WEAK (x)
In a symbol_ref, indicates that x has been declared weak. +Stored in the return_val field and printed as /i. + +


SYMBOL_REF_FLAG (x)
In a symbol_ref, this is used as a flag for machine-specific purposes. +Stored in the volatil field and printed as /v. + +

Most uses of SYMBOL_REF_FLAG are historic and may be subsumed +by SYMBOL_REF_FLAGS. Certainly use of SYMBOL_REF_FLAGS +is mandatory if the target requires more than one bit of storage. +

+ +

These are the fields to which the above macros refer: + + + + +

call
In a mem, 1 means that the memory reference will not trap. + +

In an RTL dump, this flag is represented as /c. + +


frame_related
In an insn or set expression, 1 means that it is part of +a function prologue and sets the stack pointer, sets the frame pointer, +saves a register, or sets up a temporary register to use in place of the +frame pointer. + +

In reg expressions, 1 means that the register holds a pointer. + +

In mem expressions, 1 means that the memory reference holds a pointer. + +

In symbol_ref expressions, 1 means that the reference addresses +this function's string constant pool. + +

In an RTL dump, this flag is represented as /f. + +


in_struct
In mem expressions, it is 1 if the memory datum referred to is +all or part of a structure or array; 0 if it is (or might be) a scalar +variable. A reference through a C pointer has 0 because the pointer +might point to a scalar variable. This information allows the compiler +to determine something about possible cases of aliasing. + +

In reg expressions, it is 1 if the register has its entire life +contained within the test expression of some loop. + +

In subreg expressions, 1 means that the subreg is accessing +an object that has had its mode promoted from a wider mode. + +

In label_ref expressions, 1 means that the referenced label is +outside the innermost loop containing the insn in which the label_ref +was found. + +

In code_label expressions, it is 1 if the label may never be deleted. +This is used for labels which are the target of non-local gotos. Such a +label that would have been deleted is replaced with a note of type +NOTE_INSN_DELETED_LABEL. + +

In an insn during dead-code elimination, 1 means that the insn is +dead code. + +

In an insn or jump_insn during reorg for an insn in the +delay slot of a branch, +1 means that this insn is from the target of the branch. + +

In an insn during instruction scheduling, 1 means that this insn +must be scheduled as part of a group together with the previous insn. + +

In an RTL dump, this flag is represented as /s. + +


return_val
In reg expressions, 1 means the register contains +the value to be returned by the current function. On +machines that pass parameters in registers, the same register number +may be used for parameters as well, but this flag is not set on such +uses. + +

In mem expressions, 1 means the memory reference is to a scalar +known not to be a member of a structure, union, or array. + +

In symbol_ref expressions, 1 means the referenced symbol is weak. + +

In an RTL dump, this flag is represented as /i. + +


jump
In a mem expression, 1 means we should keep the alias set for this +mem unchanged when we access a component. + +

In a set, 1 means it is for a return. + +

In a call_insn, 1 means it is a sibling call. + +

In an RTL dump, this flag is represented as /j. + +


unchanging
In reg and mem expressions, 1 means +that the value of the expression never changes. + +

In subreg expressions, it is 1 if the subreg references an +unsigned object whose mode has been promoted to a wider mode. + +

In an insn or jump_insn in the delay slot of a branch +instruction, 1 means an annulling branch should be used. + +

In a symbol_ref expression, 1 means that this symbol addresses +something in the per-function constant pool. + +

In a call_insn, note, or an expr_list of notes, +1 means that this instruction is a call to a const or pure function. + +

In an RTL dump, this flag is represented as /u. + +


used
This flag is used directly (without an access macro) at the end of RTL +generation for a function, to count the number of times an expression +appears in insns. Expressions that appear more than once are copied, +according to the rules for shared structure (see Sharing). + +

For a reg, it is used directly (without an access macro) by the +leaf register renumbering code to ensure that each register is only +renumbered once. + +

In a symbol_ref, it indicates that an external declaration for +the symbol has already been written. + +


volatil
In a mem, asm_operands, or asm_input +expression, it is 1 if the memory +reference is volatile. Volatile memory references may not be deleted, +reordered or combined. + +

In a symbol_ref expression, it is used for machine-specific +purposes. + +

In a reg expression, it is 1 if the value is a user-level variable. +0 indicates an internal compiler temporary. + +

In an insn, 1 means the insn has been deleted. + +

In label_ref and reg_label expressions, 1 means a reference +to a non-local label. + +

In an RTL dump, this flag is represented as /v. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Floating-Point.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Floating-Point.html new file mode 100644 index 0000000..23d1a3e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Floating-Point.html @@ -0,0 +1,181 @@ + + +Floating Point - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Debugging Info, +Up: Target Macros +



+
+ +

15.23 Cross Compilation and Floating Point

+ +

+While all modern machines use twos-complement representation for integers, +there are a variety of representations for floating point numbers. This +means that in a cross-compiler the representation of floating point numbers +in the compiled program may be different from that used in the machine +doing the compilation. + +

Because different representation systems may offer different amounts of +range and precision, all floating point constants must be represented in +the target machine's format. Therefore, the cross compiler cannot +safely use the host machine's floating point arithmetic; it must emulate +the target's arithmetic. To ensure consistency, GCC always uses +emulation to work with floating point values, even when the host and +target floating point formats are identical. + +

The following macros are provided by real.h for the compiler to +use. All parts of the compiler which generate or optimize +floating-point calculations must use these macros. They may evaluate +their operands more than once, so operands must not have side effects. + +

+— Macro: REAL_VALUE_TYPE
+

The C data type to be used to hold a floating point value in the target +machine's format. Typically this is a struct containing an +array of HOST_WIDE_INT, but all code should treat it as an opaque +quantity. +

+ +
+— Macro: int REAL_VALUES_EQUAL (REAL_VALUE_TYPE x, REAL_VALUE_TYPE y)
+

Compares for equality the two values, x and y. If the target +floating point format supports negative zeroes and/or NaNs, +REAL_VALUES_EQUAL (-0.0, 0.0) is true, and +REAL_VALUES_EQUAL (NaN, NaN) is false. +

+ +
+— Macro: int REAL_VALUES_LESS (REAL_VALUE_TYPE x, REAL_VALUE_TYPE y)
+

Tests whether x is less than y. +

+ +
+— Macro: HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE x)
+

Truncates x to a signed integer, rounding toward zero. +

+ +
+— Macro: unsigned HOST_WIDE_INT REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE x)
+

Truncates x to an unsigned integer, rounding toward zero. If +x is negative, returns zero. +

+ +
+— Macro: REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *string, enum machine_mode mode)
+

Converts string into a floating point number in the target machine's +representation for mode mode. This routine can handle both +decimal and hexadecimal floating point constants, using the syntax +defined by the C language for both. +

+ +
+— Macro: int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE x)
+

Returns 1 if x is negative (including negative zero), 0 otherwise. +

+ +
+— Macro: int REAL_VALUE_ISINF (REAL_VALUE_TYPE x)
+

Determines whether x represents infinity (positive or negative). +

+ +
+— Macro: int REAL_VALUE_ISNAN (REAL_VALUE_TYPE x)
+

Determines whether x represents a “NaN” (not-a-number). +

+ +
+— Macro: void REAL_ARITHMETIC (REAL_VALUE_TYPE output, enum tree_code code, REAL_VALUE_TYPE x, REAL_VALUE_TYPE y)
+

Calculates an arithmetic operation on the two floating point values +x and y, storing the result in output (which must be a +variable). + +

The operation to be performed is specified by code. Only the +following codes are supported: PLUS_EXPR, MINUS_EXPR, +MULT_EXPR, RDIV_EXPR, MAX_EXPR, MIN_EXPR. + +

If REAL_ARITHMETIC is asked to evaluate division by zero and the +target's floating point format cannot represent infinity, it will call +abort. Callers should check for this situation first, using +MODE_HAS_INFINITIES. See Storage Layout. +

+ +
+— Macro: REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE x)
+

Returns the negative of the floating point value x. +

+ +
+— Macro: REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE x)
+

Returns the absolute value of x. +

+ +
+— Macro: REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE mode, enum machine_mode x)
+

Truncates the floating point value x to fit in mode. The +return value is still a full-size REAL_VALUE_TYPE, but it has an +appropriate bit pattern to be output as a floating constant whose +precision accords with mode mode. +

+ +
+— Macro: void REAL_VALUE_TO_INT (HOST_WIDE_INT low, HOST_WIDE_INT high, REAL_VALUE_TYPE x)
+

Converts a floating point value x into a double-precision integer +which is then stored into low and high. If the value is not +integral, it is truncated. +

+ +
+— Macro: void REAL_VALUE_FROM_INT (REAL_VALUE_TYPE x, HOST_WIDE_INT low, HOST_WIDE_INT high, enum machine_mode mode)
+

Converts a double-precision integer found in low and high, +into a floating point value which is then stored into x. The +value is truncated to fit in mode mode. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Fragments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Fragments.html new file mode 100644 index 0000000..35c8b74 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Fragments.html @@ -0,0 +1,83 @@ + + +Fragments - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Host Config, +Up: Top +



+
+ +

17 Makefile Fragments

+ +

+When you configure GCC using the configure script, it will +construct the file Makefile from the template file +Makefile.in. When it does this, it can incorporate makefile +fragments from the config directory. These are used to set +Makefile parameters that are not amenable to being calculated by +autoconf. The list of fragments to incorporate is set by +config.gcc (and occasionally config.build +and config.host); See System Config. + +

Fragments are named either t-target or x-host, +depending on whether they are relevant to configuring GCC to produce +code for a particular target, or to configuring GCC to run on a +particular host. Here target and host are mnemonics +which usually have some relationship to the canonical system name, but +no formal connection. + +

If these files do not exist, it means nothing needs to be added for a +given target or host. Most targets need a few t-target +fragments, but needing x-host fragments is rare. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Frame-Layout.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Frame-Layout.html new file mode 100644 index 0000000..e09bd71 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Frame-Layout.html @@ -0,0 +1,327 @@ + + +Frame Layout - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + +

15.10.1 Basic Stack Layout

+ +

+ +Here is the basic stack layout. + +

+— Macro: STACK_GROWS_DOWNWARD
+

Define this macro if pushing a word onto the stack moves the stack +pointer to a smaller address. + +

When we say, “define this macro if ...”, it means that the +compiler checks this macro only with #ifdef so the precise +definition used does not matter. +

+ +
+— Macro: STACK_PUSH_CODE
+

This macro defines the operation used when something is pushed +on the stack. In RTL, a push operation will be +(set (mem (STACK_PUSH_CODE (reg sp))) ...) + +

The choices are PRE_DEC, POST_DEC, PRE_INC, +and POST_INC. Which of these is correct depends on +the stack direction and on whether the stack pointer points +to the last item on the stack or whether it points to the +space for the next item on the stack. + +

The default is PRE_DEC when STACK_GROWS_DOWNWARD is +defined, which is almost always right, and PRE_INC otherwise, +which is often wrong. +

+ +
+— Macro: FRAME_GROWS_DOWNWARD
+

Define this macro to nonzero value if the addresses of local variable slots +are at negative offsets from the frame pointer. +

+ +
+— Macro: ARGS_GROW_DOWNWARD
+

Define this macro if successive arguments to a function occupy decreasing +addresses on the stack. +

+ +
+— Macro: STARTING_FRAME_OFFSET
+

Offset from the frame pointer to the first local variable slot to be allocated. + +

If FRAME_GROWS_DOWNWARD, find the next slot's offset by +subtracting the first slot's length from STARTING_FRAME_OFFSET. +Otherwise, it is found by adding the length of the first slot to the +value STARTING_FRAME_OFFSET. + + +

+ +
+— Macro: STACK_ALIGNMENT_NEEDED
+

Define to zero to disable final alignment of the stack during reload. +The nonzero default for this macro is suitable for most ports. + +

On ports where STARTING_FRAME_OFFSET is nonzero or where there +is a register save block following the local block that doesn't require +alignment to STACK_BOUNDARY, it may be beneficial to disable +stack alignment and do it in the backend. +

+ +
+— Macro: STACK_POINTER_OFFSET
+

Offset from the stack pointer register to the first location at which +outgoing arguments are placed. If not specified, the default value of +zero is used. This is the proper value for most machines. + +

If ARGS_GROW_DOWNWARD, this is the offset to the location above +the first location at which outgoing arguments are placed. +

+ +
+— Macro: FIRST_PARM_OFFSET (fundecl)
+

Offset from the argument pointer register to the first argument's +address. On some machines it may depend on the data type of the +function. + +

If ARGS_GROW_DOWNWARD, this is the offset to the location above +the first argument's address. +

+ +
+— Macro: STACK_DYNAMIC_OFFSET (fundecl)
+

Offset from the stack pointer register to an item dynamically allocated +on the stack, e.g., by alloca. + +

The default value for this macro is STACK_POINTER_OFFSET plus the +length of the outgoing arguments. The default is correct for most +machines. See function.c for details. +

+ +
+— Macro: INITIAL_FRAME_ADDRESS_RTX
+

A C expression whose value is RTL representing the address of the initial +stack frame. This address is passed to RETURN_ADDR_RTX and +DYNAMIC_CHAIN_ADDRESS. If you don't define this macro, a reasonable +default value will be used. Define this macro in order to make frame pointer +elimination work in the presence of __builtin_frame_address (count) and +__builtin_return_address (count) for count not equal to zero. +

+ +
+— Macro: DYNAMIC_CHAIN_ADDRESS (frameaddr)
+

A C expression whose value is RTL representing the address in a stack +frame where the pointer to the caller's frame is stored. Assume that +frameaddr is an RTL expression for the address of the stack frame +itself. + +

If you don't define this macro, the default is to return the value +of frameaddr—that is, the stack frame address is also the +address of the stack word that points to the previous frame. +

+ +
+— Macro: SETUP_FRAME_ADDRESSES
+

If defined, a C expression that produces the machine-specific code to +setup the stack so that arbitrary frames can be accessed. For example, +on the SPARC, we must flush all of the register windows to the stack +before we can access arbitrary stack frames. You will seldom need to +define this macro. +

+ +
+— Target Hook: bool TARGET_BUILTIN_SETJMP_FRAME_VALUE ()
+

This target hook should return an rtx that is used to store +the address of the current frame into the built in setjmp buffer. +The default value, virtual_stack_vars_rtx, is correct for most +machines. One reason you may need to define this target hook is if +hard_frame_pointer_rtx is the appropriate value on your machine. +

+ +
+— Macro: FRAME_ADDR_RTX (frameaddr)
+

A C expression whose value is RTL representing the value of the frame +address for the current frame. frameaddr is the frame pointer +of the current frame. This is used for __builtin_frame_address. +You need only define this macro if the frame address is not the same +as the frame pointer. Most machines do not need to define it. +

+ +
+— Macro: RETURN_ADDR_RTX (count, frameaddr)
+

A C expression whose value is RTL representing the value of the return +address for the frame count steps up from the current frame, after +the prologue. frameaddr is the frame pointer of the count +frame, or the frame pointer of the count − 1 frame if +RETURN_ADDR_IN_PREVIOUS_FRAME is defined. + +

The value of the expression must always be the correct address when +count is zero, but may be NULL_RTX if there is not way to +determine the return address of other frames. +

+ +
+— Macro: RETURN_ADDR_IN_PREVIOUS_FRAME
+

Define this if the return address of a particular stack frame is accessed +from the frame pointer of the previous stack frame. +

+ +
+— Macro: INCOMING_RETURN_ADDR_RTX
+

A C expression whose value is RTL representing the location of the +incoming return address at the beginning of any function, before the +prologue. This RTL is either a REG, indicating that the return +value is saved in REG, or a MEM representing a location in +the stack. + +

You only need to define this macro if you want to support call frame +debugging information like that provided by DWARF 2. + +

If this RTL is a REG, you should also define +DWARF_FRAME_RETURN_COLUMN to DWARF_FRAME_REGNUM (REGNO). +

+ +
+— Macro: DWARF_ALT_FRAME_RETURN_COLUMN
+

A C expression whose value is an integer giving a DWARF 2 column +number that may be used as an alternative return column. The column +must not correspond to any gcc hard register (that is, it must not +be in the range of DWARF_FRAME_REGNUM). + +

This macro can be useful if DWARF_FRAME_RETURN_COLUMN is set to a +general register, but an alternative column needs to be used for signal +frames. Some targets have also used different frame return columns +over time. +

+ +
+— Macro: DWARF_ZERO_REG
+

A C expression whose value is an integer giving a DWARF 2 register +number that is considered to always have the value zero. This should +only be defined if the target has an architected zero register, and +someone decided it was a good idea to use that register number to +terminate the stack backtrace. New ports should avoid this. +

+ +
+— Target Hook: void TARGET_DWARF_HANDLE_FRAME_UNSPEC (const char *label, rtx pattern, int index)
+

This target hook allows the backend to emit frame-related insns that +contain UNSPECs or UNSPEC_VOLATILEs. The DWARF 2 call frame debugging +info engine will invoke it on insns of the form +

          (set (reg) (unspec [...] UNSPEC_INDEX))
+     
+

and +

          (set (reg) (unspec_volatile [...] UNSPECV_INDEX)).
+     
+

to let the backend emit the call frame instructions. label is +the CFI label attached to the insn, pattern is the pattern of +the insn and index is UNSPEC_INDEX or UNSPECV_INDEX. +

+ +
+— Macro: INCOMING_FRAME_SP_OFFSET
+

A C expression whose value is an integer giving the offset, in bytes, +from the value of the stack pointer register to the top of the stack +frame at the beginning of any function, before the prologue. The top of +the frame is defined to be the value of the stack pointer in the +previous frame, just before the call instruction. + +

You only need to define this macro if you want to support call frame +debugging information like that provided by DWARF 2. +

+ +
+— Macro: ARG_POINTER_CFA_OFFSET (fundecl)
+

A C expression whose value is an integer giving the offset, in bytes, +from the argument pointer to the canonical frame address (cfa). The +final value should coincide with that calculated by +INCOMING_FRAME_SP_OFFSET. Which is unfortunately not usable +during virtual register instantiation. + +

The default value for this macro is FIRST_PARM_OFFSET (fundecl), +which is correct for most machines; in general, the arguments are found +immediately before the stack frame. Note that this is not the case on +some targets that save registers into the caller's frame, such as SPARC +and rs6000, and so such targets need to define this macro. + +

You only need to define this macro if the default is incorrect, and you +want to support call frame debugging information like that provided by +DWARF 2. +

+ +
+— Macro: FRAME_POINTER_CFA_OFFSET (fundecl)
+

If defined, a C expression whose value is an integer giving the offset +in bytes from the frame pointer to the canonical frame address (cfa). +The final value should coincide with that calculated by +INCOMING_FRAME_SP_OFFSET. + +

Normally the CFA is calculated as an offset from the argument pointer, +via ARG_POINTER_CFA_OFFSET, but if the argument pointer is +variable due to the ABI, this may not be possible. If this macro is +defined, it implies that the virtual register instantiation should be +based on the frame pointer instead of the argument pointer. Only one +of FRAME_POINTER_CFA_OFFSET and ARG_POINTER_CFA_OFFSET +should be defined. +

+ +
+— Macro: CFA_FRAME_BASE_OFFSET (fundecl)
+

If defined, a C expression whose value is an integer giving the offset +in bytes from the canonical frame address (cfa) to the frame base used +in DWARF 2 debug information. The default is zero. A different value +may reduce the size of debug information on some ports. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Frame-Registers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Frame-Registers.html new file mode 100644 index 0000000..c1ca8ba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Frame-Registers.html @@ -0,0 +1,219 @@ + + +Frame Registers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Stack Checking, +Up: Stack and Calling +



+
+ +

15.10.4 Registers That Address the Stack Frame

+ + +

This discusses registers that address the stack frame. + +

+— Macro: STACK_POINTER_REGNUM
+

The register number of the stack pointer register, which must also be a +fixed register according to FIXED_REGISTERS. On most machines, +the hardware determines which register this is. +

+ +
+— Macro: FRAME_POINTER_REGNUM
+

The register number of the frame pointer register, which is used to +access automatic variables in the stack frame. On some machines, the +hardware determines which register this is. On other machines, you can +choose any register you wish for this purpose. +

+ +
+— Macro: HARD_FRAME_POINTER_REGNUM
+

On some machines the offset between the frame pointer and starting +offset of the automatic variables is not known until after register +allocation has been done (for example, because the saved registers are +between these two locations). On those machines, define +FRAME_POINTER_REGNUM the number of a special, fixed register to +be used internally until the offset is known, and define +HARD_FRAME_POINTER_REGNUM to be the actual hard register number +used for the frame pointer. + +

You should define this macro only in the very rare circumstances when it +is not possible to calculate the offset between the frame pointer and +the automatic variables until after register allocation has been +completed. When this macro is defined, you must also indicate in your +definition of ELIMINABLE_REGS how to eliminate +FRAME_POINTER_REGNUM into either HARD_FRAME_POINTER_REGNUM +or STACK_POINTER_REGNUM. + +

Do not define this macro if it would be the same as +FRAME_POINTER_REGNUM. +

+ +
+— Macro: ARG_POINTER_REGNUM
+

The register number of the arg pointer register, which is used to access +the function's argument list. On some machines, this is the same as the +frame pointer register. On some machines, the hardware determines which +register this is. On other machines, you can choose any register you +wish for this purpose. If this is not the same register as the frame +pointer register, then you must mark it as a fixed register according to +FIXED_REGISTERS, or arrange to be able to eliminate it +(see Elimination). +

+ +
+— Macro: RETURN_ADDRESS_POINTER_REGNUM
+

The register number of the return address pointer register, which is used to +access the current function's return address from the stack. On some +machines, the return address is not at a fixed offset from the frame +pointer or stack pointer or argument pointer. This register can be defined +to point to the return address on the stack, and then be converted by +ELIMINABLE_REGS into either the frame pointer or stack pointer. + +

Do not define this macro unless there is no other way to get the return +address from the stack. +

+ +
+— Macro: STATIC_CHAIN_REGNUM
+— Macro: STATIC_CHAIN_INCOMING_REGNUM
+

Register numbers used for passing a function's static chain pointer. If +register windows are used, the register number as seen by the called +function is STATIC_CHAIN_INCOMING_REGNUM, while the register +number as seen by the calling function is STATIC_CHAIN_REGNUM. If +these registers are the same, STATIC_CHAIN_INCOMING_REGNUM need +not be defined. + +

The static chain register need not be a fixed register. + +

If the static chain is passed in memory, these macros should not be +defined; instead, the next two macros should be defined. +

+ +
+— Macro: STATIC_CHAIN
+— Macro: STATIC_CHAIN_INCOMING
+

If the static chain is passed in memory, these macros provide rtx giving +mem expressions that denote where they are stored. +STATIC_CHAIN and STATIC_CHAIN_INCOMING give the locations +as seen by the calling and called functions, respectively. Often the former +will be at an offset from the stack pointer and the latter at an offset from +the frame pointer. + +

The variables stack_pointer_rtx, frame_pointer_rtx, and +arg_pointer_rtx will have been initialized prior to the use of these +macros and should be used to refer to those items. + +

If the static chain is passed in a register, the two previous macros should +be defined instead. +

+ +
+— Macro: DWARF_FRAME_REGISTERS
+

This macro specifies the maximum number of hard registers that can be +saved in a call frame. This is used to size data structures used in +DWARF2 exception handling. + +

Prior to GCC 3.0, this macro was needed in order to establish a stable +exception handling ABI in the face of adding new hard registers for ISA +extensions. In GCC 3.0 and later, the EH ABI is insulated from changes +in the number of hard registers. Nevertheless, this macro can still be +used to reduce the runtime memory requirements of the exception handling +routines, which can be substantial if the ISA contains a lot of +registers that are not call-saved. + +

If this macro is not defined, it defaults to +FIRST_PSEUDO_REGISTER. +

+ +
+— Macro: PRE_GCC3_DWARF_FRAME_REGISTERS
+
+

This macro is similar to DWARF_FRAME_REGISTERS, but is provided +for backward compatibility in pre GCC 3.0 compiled code. + +

If this macro is not defined, it defaults to +DWARF_FRAME_REGISTERS. +

+ +
+— Macro: DWARF_REG_TO_UNWIND_COLUMN (regno)
+
+

Define this macro if the target's representation for dwarf registers +is different than the internal representation for unwind column. +Given a dwarf register, this macro should return the internal unwind +column number to use instead. + +

See the PowerPC's SPE target for an example. +

+ +
+— Macro: DWARF_FRAME_REGNUM (regno)
+
+

Define this macro if the target's representation for dwarf registers +used in .eh_frame or .debug_frame is different from that used in other +debug info sections. Given a GCC hard register number, this macro +should return the .eh_frame register number. The default is +DBX_REGISTER_NUMBER (regno). + +

+ +
+— Macro: DWARF2_FRAME_REG_OUT (regno, for_eh)
+
+

Define this macro to map register numbers held in the call frame info +that GCC has collected using DWARF_FRAME_REGNUM to those that +should be output in .debug_frame (for_eh is zero) and +.eh_frame (for_eh is nonzero). The default is to +return regno. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End-Config.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End-Config.html new file mode 100644 index 0000000..c5c00d4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End-Config.html @@ -0,0 +1,102 @@ + + +Front End Config - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Front End Directory, +Up: Front End +



+
+ +
6.3.8.2 The Front End config-lang.in File
+ +

Each language subdirectory contains a config-lang.in file. In +addition the main directory contains c-config-lang.in, which +contains limited information for the C language. This file is a shell +script that may define some variables describing the language: + +

+
language
This definition must be present, and gives the name of the language +for some purposes such as arguments to --enable-languages. +
lang_requires
If defined, this variable lists (space-separated) language front ends +other than C that this front end requires to be enabled (with the +names given being their language settings). For example, the +Java front end depends on the C++ front end, so sets +lang_requires=c++. +
subdir_requires
If defined, this variable lists (space-separated) front end directories +other than C that this front end requires to be present. For example, +the Objective-C++ front end uses source files from the C++ and +Objective-C front ends, so sets subdir_requires="cp objc". +
target_libs
If defined, this variable lists (space-separated) targets in the top +level Makefile to build the runtime libraries for this +language, such as target-libobjc. +
lang_dirs
If defined, this variable lists (space-separated) top level +directories (parallel to gcc), apart from the runtime libraries, +that should not be configured if this front end is not built. +
build_by_default
If defined to no, this language front end is not built unless +enabled in a --enable-languages argument. Otherwise, front +ends are built by default, subject to any special logic in +configure.ac (as is present to disable the Ada front end if the +Ada compiler is not already installed). +
boot_language
If defined to yes, this front end is built in stage 1 of the +bootstrap. This is only relevant to front ends written in their own +languages. +
compilers
If defined, a space-separated list of compiler executables that will +be run by the driver. The names here will each end +with \$(exeext). +
outputs
If defined, a space-separated list of files that should be generated +by configure substituting values in them. This mechanism can +be used to create a file language/Makefile from +language/Makefile.in, but this is deprecated, building +everything from the single gcc/Makefile is preferred. +
gtfiles
If defined, a space-separated list of files that should be scanned by +gengtype.c to generate the garbage collection tables and routines for +this language. This excludes the files that are common to all front +ends. See Type Information. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End-Directory.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End-Directory.html new file mode 100644 index 0000000..4b0f289 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End-Directory.html @@ -0,0 +1,132 @@ + + +Front End Directory - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Front End +



+
+ +
6.3.8.1 The Front End language Directory
+ +

A front end language directory contains the source files +of that front end (but not of any runtime libraries, which should be +outside the gcc directory). This includes documentation, and +possibly some subsidiary programs build alongside the front end. +Certain files are special and other parts of the compiler depend on +their names: + +

+
config-lang.in
This file is required in all language subdirectories. See The Front End config-lang.in File, for details of +its contents +
Make-lang.in
This file is required in all language subdirectories. It contains +targets lang.hook (where lang is the +setting of language in config-lang.in) for the following +values of hook, and any other Makefile rules required to +build those targets (which may if necessary use other Makefiles +specified in outputs in config-lang.in, although this is +deprecated). It also adds any testsuite targets that can use the +standard rule in gcc/Makefile.in to the variable +lang_checks. + +
+
all.cross
start.encap
rest.encap
FIXME: exactly what goes in each of these targets? +
tags
Build an etags TAGS file in the language subdirectory +in the source tree. +
info
Build info documentation for the front end, in the build directory. +This target is only called by make bootstrap if a suitable +version of makeinfo is available, so does not need to check +for this, and should fail if an error occurs. +
dvi
Build DVI documentation for the front end, in the build directory. +This should be done using $(TEXI2DVI), with appropriate +-I arguments pointing to directories of included files. +
pdf
Build PDF documentation for the front end, in the build directory. +This should be done using $(TEXI2PDF), with appropriate +-I arguments pointing to directories of included files. +
html
Build HTML documentation for the front end, in the build directory. +
man
Build generated man pages for the front end from Texinfo manuals +(see Man Page Generation), in the build directory. This target +is only called if the necessary tools are available, but should ignore +errors so as not to stop the build if errors occur; man pages are +optional and the tools involved may be installed in a broken way. +
install-common
Install everything that is part of the front end, apart from the +compiler executables listed in compilers in +config-lang.in. +
install-info
Install info documentation for the front end, if it is present in the +source directory. This target should have dependencies on info files +that should be installed. +
install-man
Install man pages for the front end. This target should ignore +errors. +
srcextra
Copies its dependencies into the source directory. This generally should +be used for generated files such as Bison output files which are not +present in CVS, but should be included in any release tarballs. This +target will be executed during a bootstrap if +--enable-generated-files-in-srcdir was specified as a +configure option. +
srcinfo
srcman
Copies its dependencies into the source directory. These targets will be +executed during a bootstrap if --enable-generated-files-in-srcdir +was specified as a configure option. +
uninstall
Uninstall files installed by installing the compiler. This is +currently documented not to be supported, so the hook need not do +anything. +
mostlyclean
clean
distclean
maintainer-clean
The language parts of the standard GNU +*clean targets. See Standard Targets for Users (GNU Coding Standards), for details of the standard +targets. For GCC, maintainer-clean should delete +all generated files in the source directory that are not checked into +CVS, but should not delete anything checked into CVS. +
+ +
lang.opt
This file registers the set of switches that the front end accepts on +the command line, and their --help text. See Options. +
lang-specs.h
This file provides entries for default_compilers in +gcc.c which override the default of giving an error that a +compiler for that language is not installed. +
language-tree.def
This file, which need not exist, defines any language-specific tree +codes. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End.html new file mode 100644 index 0000000..4e90a6f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Front-End.html @@ -0,0 +1,129 @@ + + +Front End - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Documentation, +Up: gcc Directory +



+
+ +

6.3.8 Anatomy of a Language Front End

+ +

A front end for a language in GCC has the following parts: + +

    +
  • A directory language under gcc containing source +files for that front end. See The Front End language Directory, for details. +
  • A mention of the language in the list of supported languages in +gcc/doc/install.texi. +
  • A mention of the name under which the language's runtime library is +recognized by --enable-shared=package in the +documentation of that option in gcc/doc/install.texi. +
  • A mention of any special prerequisites for building the front end in +the documentation of prerequisites in gcc/doc/install.texi. +
  • Details of contributors to that front end in +gcc/doc/contrib.texi. If the details are in that front end's +own manual then there should be a link to that manual's list in +contrib.texi. +
  • Information about support for that language in +gcc/doc/frontends.texi. +
  • Information about standards for that language, and the front end's +support for them, in gcc/doc/standards.texi. This may be a +link to such information in the front end's own manual. +
  • Details of source file suffixes for that language and -x +lang options supported, in gcc/doc/invoke.texi. +
  • Entries in default_compilers in gcc.c for source file +suffixes for that language. +
  • Preferably testsuites, which may be under gcc/testsuite or +runtime library directories. FIXME: document somewhere how to write +testsuite harnesses. +
  • Probably a runtime library for the language, outside the gcc +directory. FIXME: document this further. +
  • Details of the directories of any runtime libraries in +gcc/doc/sourcebuild.texi. +
+ +

If the front end is added to the official GCC source repository, the +following are also necessary: + +

    +
  • At least one Bugzilla component for bugs in that front end and runtime +libraries. This category needs to be mentioned in +gcc/gccbug.in, as well as being added to the Bugzilla database. +
  • Normally, one or more maintainers of that front end listed in +MAINTAINERS. +
  • Mentions on the GCC web site in index.html and +frontends.html, with any relevant links on +readings.html. (Front ends that are not an official part of +GCC may also be listed on frontends.html, with relevant links.) +
  • A news item on index.html, and possibly an announcement on the +gcc-announce@gcc.gnu.org mailing list. +
  • The front end's manuals should be mentioned in +maintainer-scripts/update_web_docs (see Texinfo Manuals) +and the online manuals should be linked to from +onlinedocs/index.html. +
  • Any old releases or CVS repositories of the front end, before its +inclusion in GCC, should be made available on the GCC FTP site +ftp://gcc.gnu.org/pub/gcc/old-releases/. +
  • The release and snapshot script maintainer-scripts/gcc_release +should be updated to generate appropriate tarballs for this front end. +The associated maintainer-scripts/snapshot-README and +maintainer-scripts/snapshot-index.html files should be updated +to list the tarballs and diffs for this front end. +
  • If this front end includes its own version files that include the +current date, maintainer-scripts/update_version should be +updated accordingly. +
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Basics.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Basics.html new file mode 100644 index 0000000..e4f97eb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Basics.html @@ -0,0 +1,208 @@ + + +Function Basics - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Functions +



+
+ +

9.6.1 Function Basics

+ +

+The following macros and functions can be used on a FUNCTION_DECL: +

+
DECL_MAIN_P
This predicate holds for a function that is the program entry point +::code. + +
DECL_NAME
This macro returns the unqualified name of the function, as an +IDENTIFIER_NODE. For an instantiation of a function template, +the DECL_NAME is the unqualified name of the template, not +something like f<int>. The value of DECL_NAME is +undefined when used on a constructor, destructor, overloaded operator, +or type-conversion operator, or any function that is implicitly +generated by the compiler. See below for macros that can be used to +distinguish these cases. + +
DECL_ASSEMBLER_NAME
This macro returns the mangled name of the function, also an +IDENTIFIER_NODE. This name does not contain leading underscores +on systems that prefix all identifiers with underscores. The mangled +name is computed in the same way on all platforms; if special processing +is required to deal with the object file format used on a particular +platform, it is the responsibility of the back end to perform those +modifications. (Of course, the back end should not modify +DECL_ASSEMBLER_NAME itself.) + +

Using DECL_ASSEMBLER_NAME will cause additional memory to be +allocated (for the mangled name of the entity) so it should be used +only when emitting assembly code. It should not be used within the +optimizers to determine whether or not two declarations are the same, +even though some of the existing optimizers do use it in that way. +These uses will be removed over time. + +

DECL_EXTERNAL
This predicate holds if the function is undefined. + +
TREE_PUBLIC
This predicate holds if the function has external linkage. + +
DECL_LOCAL_FUNCTION_P
This predicate holds if the function was declared at block scope, even +though it has a global scope. + +
DECL_ANTICIPATED
This predicate holds if the function is a built-in function but its +prototype is not yet explicitly declared. + +
DECL_EXTERN_C_FUNCTION_P
This predicate holds if the function is declared as an +`extern "C"' function. + +
DECL_LINKONCE_P
This macro holds if multiple copies of this function may be emitted in +various translation units. It is the responsibility of the linker to +merge the various copies. Template instantiations are the most common +example of functions for which DECL_LINKONCE_P holds; G++ +instantiates needed templates in all translation units which require them, +and then relies on the linker to remove duplicate instantiations. + +

FIXME: This macro is not yet implemented. + +

DECL_FUNCTION_MEMBER_P
This macro holds if the function is a member of a class, rather than a +member of a namespace. + +
DECL_STATIC_FUNCTION_P
This predicate holds if the function a static member function. + +
DECL_NONSTATIC_MEMBER_FUNCTION_P
This macro holds for a non-static member function. + +
DECL_CONST_MEMFUNC_P
This predicate holds for a const-member function. + +
DECL_VOLATILE_MEMFUNC_P
This predicate holds for a volatile-member function. + +
DECL_CONSTRUCTOR_P
This macro holds if the function is a constructor. + +
DECL_NONCONVERTING_P
This predicate holds if the constructor is a non-converting constructor. + +
DECL_COMPLETE_CONSTRUCTOR_P
This predicate holds for a function which is a constructor for an object +of a complete type. + +
DECL_BASE_CONSTRUCTOR_P
This predicate holds for a function which is a constructor for a base +class sub-object. + +
DECL_COPY_CONSTRUCTOR_P
This predicate holds for a function which is a copy-constructor. + +
DECL_DESTRUCTOR_P
This macro holds if the function is a destructor. + +
DECL_COMPLETE_DESTRUCTOR_P
This predicate holds if the function is the destructor for an object a +complete type. + +
DECL_OVERLOADED_OPERATOR_P
This macro holds if the function is an overloaded operator. + +
DECL_CONV_FN_P
This macro holds if the function is a type-conversion operator. + +
DECL_GLOBAL_CTOR_P
This predicate holds if the function is a file-scope initialization +function. + +
DECL_GLOBAL_DTOR_P
This predicate holds if the function is a file-scope finalization +function. + +
DECL_THUNK_P
This predicate holds if the function is a thunk. + +

These functions represent stub code that adjusts the this pointer +and then jumps to another function. When the jumped-to function +returns, control is transferred directly to the caller, without +returning to the thunk. The first parameter to the thunk is always the +this pointer; the thunk should add THUNK_DELTA to this +value. (The THUNK_DELTA is an int, not an +INTEGER_CST.) + +

Then, if THUNK_VCALL_OFFSET (an INTEGER_CST) is nonzero +the adjusted this pointer must be adjusted again. The complete +calculation is given by the following pseudo-code: + +

          this += THUNK_DELTA
+          if (THUNK_VCALL_OFFSET)
+            this += (*((ptrdiff_t **) this))[THUNK_VCALL_OFFSET]
+     
+

Finally, the thunk should jump to the location given +by DECL_INITIAL; this will always be an expression for the +address of a function. + +

DECL_NON_THUNK_FUNCTION_P
This predicate holds if the function is not a thunk function. + +
GLOBAL_INIT_PRIORITY
If either DECL_GLOBAL_CTOR_P or DECL_GLOBAL_DTOR_P holds, +then this gives the initialization priority for the function. The +linker will arrange that all functions for which +DECL_GLOBAL_CTOR_P holds are run in increasing order of priority +before main is called. When the program exits, all functions for +which DECL_GLOBAL_DTOR_P holds are run in the reverse order. + +
DECL_ARTIFICIAL
This macro holds if the function was implicitly generated by the +compiler, rather than explicitly declared. In addition to implicitly +generated class member functions, this macro holds for the special +functions created to implement static initialization and destruction, to +compute run-time type information, and so forth. + +
DECL_ARGUMENTS
This macro returns the PARM_DECL for the first argument to the +function. Subsequent PARM_DECL nodes can be obtained by +following the TREE_CHAIN links. + +
DECL_RESULT
This macro returns the RESULT_DECL for the function. + +
TREE_TYPE
This macro returns the FUNCTION_TYPE or METHOD_TYPE for +the function. + +
TYPE_RAISES_EXCEPTIONS
This macro returns the list of exceptions that a (member-)function can +raise. The returned list, if non NULL, is comprised of nodes +whose TREE_VALUE represents a type. + +
TYPE_NOTHROW_P
This predicate holds when the exception-specification of its arguments +if of the form `()'. + +
DECL_ARRAY_DELETE_OPERATOR_P
This predicate holds if the function an overloaded +operator delete[]. + +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Bodies.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Bodies.html new file mode 100644 index 0000000..248976a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Bodies.html @@ -0,0 +1,313 @@ + + +Function Bodies - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Function Basics, +Up: Functions +



+
+ +

9.6.2 Function Bodies

+ +

+A function that has a definition in the current translation unit will +have a non-NULL DECL_INITIAL. However, back ends should not make +use of the particular value given by DECL_INITIAL. + +

The DECL_SAVED_TREE macro will give the complete body of the +function. + +

9.6.2.1 Statements
+ +

There are tree nodes corresponding to all of the source-level +statement constructs, used within the C and C++ frontends. These are +enumerated here, together with a list of the various macros that can +be used to obtain information about them. There are a few macros that +can be used with all statements: + +

+
STMT_IS_FULL_EXPR_P
In C++, statements normally constitute “full expressions”; temporaries +created during a statement are destroyed when the statement is complete. +However, G++ sometimes represents expressions by statements; these +statements will not have STMT_IS_FULL_EXPR_P set. Temporaries +created during such statements should be destroyed when the innermost +enclosing statement with STMT_IS_FULL_EXPR_P set is exited. + +
+ +

Here is the list of the various statement nodes, and the macros used to +access them. This documentation describes the use of these nodes in +non-template functions (including instantiations of template functions). +In template functions, the same nodes are used, but sometimes in +slightly different ways. + +

Many of the statements have substatements. For example, a while +loop will have a body, which is itself a statement. If the substatement +is NULL_TREE, it is considered equivalent to a statement +consisting of a single ;, i.e., an expression statement in which +the expression has been omitted. A substatement may in fact be a list +of statements, connected via their TREE_CHAINs. So, you should +always process the statement tree by looping over substatements, like +this: +

     void process_stmt (stmt)
+          tree stmt;
+     {
+       while (stmt)
+         {
+           switch (TREE_CODE (stmt))
+             {
+             case IF_STMT:
+               process_stmt (THEN_CLAUSE (stmt));
+               /* More processing here.  */
+               break;
+     
+             ...
+             }
+     
+           stmt = TREE_CHAIN (stmt);
+         }
+     }
+
+

In other words, while the then clause of an if statement +in C++ can be only one statement (although that one statement may be a +compound statement), the intermediate representation will sometimes use +several statements chained together. + +

+
ASM_EXPR
+Used to represent an inline assembly statement. For an inline assembly +statement like: +
          asm ("mov x, y");
+     
+

The ASM_STRING macro will return a STRING_CST node for +"mov x, y". If the original statement made use of the +extended-assembly syntax, then ASM_OUTPUTS, +ASM_INPUTS, and ASM_CLOBBERS will be the outputs, inputs, +and clobbers for the statement, represented as STRING_CST nodes. +The extended-assembly syntax looks like: +

          asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
+     
+

The first string is the ASM_STRING, containing the instruction +template. The next two strings are the output and inputs, respectively; +this statement has no clobbers. As this example indicates, “plain” +assembly statements are merely a special case of extended assembly +statements; they have no cv-qualifiers, outputs, inputs, or clobbers. +All of the strings will be NUL-terminated, and will contain no +embedded NUL-characters. + +

If the assembly statement is declared volatile, or if the +statement was not an extended assembly statement, and is therefore +implicitly volatile, then the predicate ASM_VOLATILE_P will hold +of the ASM_EXPR. + +

BREAK_STMT
+Used to represent a break statement. There are no additional +fields. + +
CASE_LABEL_EXPR
+Use to represent a case label, range of case labels, or a +default label. If CASE_LOW is NULL_TREE, then this is a +default label. Otherwise, if CASE_HIGH is NULL_TREE, then +this is an ordinary case label. In this case, CASE_LOW is +an expression giving the value of the label. Both CASE_LOW and +CASE_HIGH are INTEGER_CST nodes. These values will have +the same type as the condition expression in the switch statement. + +

Otherwise, if both CASE_LOW and CASE_HIGH are defined, the +statement is a range of case labels. Such statements originate with the +extension that allows users to write things of the form: +

          case 2 ... 5:
+     
+

The first value will be CASE_LOW, while the second will be +CASE_HIGH. + +

CLEANUP_STMT
+Used to represent an action that should take place upon exit from the +enclosing scope. Typically, these actions are calls to destructors for +local objects, but back ends cannot rely on this fact. If these nodes +are in fact representing such destructors, CLEANUP_DECL will be +the VAR_DECL destroyed. Otherwise, CLEANUP_DECL will be +NULL_TREE. In any case, the CLEANUP_EXPR is the +expression to execute. The cleanups executed on exit from a scope +should be run in the reverse order of the order in which the associated +CLEANUP_STMTs were encountered. + +
CONTINUE_STMT
+Used to represent a continue statement. There are no additional +fields. + +
CTOR_STMT
+Used to mark the beginning (if CTOR_BEGIN_P holds) or end (if +CTOR_END_P holds of the main body of a constructor. See also +SUBOBJECT for more information on how to use these nodes. + +
DECL_STMT
+Used to represent a local declaration. The DECL_STMT_DECL macro +can be used to obtain the entity declared. This declaration may be a +LABEL_DECL, indicating that the label declared is a local label. +(As an extension, GCC allows the declaration of labels with scope.) In +C, this declaration may be a FUNCTION_DECL, indicating the +use of the GCC nested function extension. For more information, +see Functions. + +
DO_STMT
+Used to represent a do loop. The body of the loop is given by +DO_BODY while the termination condition for the loop is given by +DO_COND. The condition for a do-statement is always an +expression. + +
EMPTY_CLASS_EXPR
+Used to represent a temporary object of a class with no data whose +address is never taken. (All such objects are interchangeable.) The +TREE_TYPE represents the type of the object. + +
EXPR_STMT
+Used to represent an expression statement. Use EXPR_STMT_EXPR to +obtain the expression. + +
FOR_STMT
+Used to represent a for statement. The FOR_INIT_STMT is +the initialization statement for the loop. The FOR_COND is the +termination condition. The FOR_EXPR is the expression executed +right before the FOR_COND on each loop iteration; often, this +expression increments a counter. The body of the loop is given by +FOR_BODY. Note that FOR_INIT_STMT and FOR_BODY +return statements, while FOR_COND and FOR_EXPR return +expressions. + +
GOTO_EXPR
+Used to represent a goto statement. The GOTO_DESTINATION will +usually be a LABEL_DECL. However, if the “computed goto” extension +has been used, the GOTO_DESTINATION will be an arbitrary expression +indicating the destination. This expression will always have pointer type. + +
HANDLER
+Used to represent a C++ catch block. The HANDLER_TYPE +is the type of exception that will be caught by this handler; it is +equal (by pointer equality) to NULL if this handler is for all +types. HANDLER_PARMS is the DECL_STMT for the catch +parameter, and HANDLER_BODY is the code for the block itself. + +
IF_STMT
+Used to represent an if statement. The IF_COND is the +expression. + +

If the condition is a TREE_LIST, then the TREE_PURPOSE is +a statement (usually a DECL_STMT). Each time the condition is +evaluated, the statement should be executed. Then, the +TREE_VALUE should be used as the conditional expression itself. +This representation is used to handle C++ code like this: + +

          if (int i = 7) ...
+     
+

where there is a new local variable (or variables) declared within the +condition. + +

The THEN_CLAUSE represents the statement given by the then +condition, while the ELSE_CLAUSE represents the statement given +by the else condition. + +

LABEL_EXPR
+Used to represent a label. The LABEL_DECL declared by this +statement can be obtained with the LABEL_EXPR_LABEL macro. The +IDENTIFIER_NODE giving the name of the label can be obtained from +the LABEL_DECL with DECL_NAME. + +
RETURN_STMT
+Used to represent a return statement. The RETURN_EXPR is +the expression returned; it will be NULL_TREE if the statement +was just +
          return;
+     
+
SUBOBJECT
+In a constructor, these nodes are used to mark the point at which a +subobject of this is fully constructed. If, after this point, an +exception is thrown before a CTOR_STMT with CTOR_END_P set +is encountered, the SUBOBJECT_CLEANUP must be executed. The +cleanups must be executed in the reverse order in which they appear. + +
SWITCH_STMT
+Used to represent a switch statement. The SWITCH_STMT_COND +is the expression on which the switch is occurring. See the documentation +for an IF_STMT for more information on the representation used +for the condition. The SWITCH_STMT_BODY is the body of the switch +statement. The SWITCH_STMT_TYPE is the original type of switch +expression as given in the source, before any compiler conversions. + +
TRY_BLOCK
Used to represent a try block. The body of the try block is +given by TRY_STMTS. Each of the catch blocks is a HANDLER +node. The first handler is given by TRY_HANDLERS. Subsequent +handlers are obtained by following the TREE_CHAIN link from one +handler to the next. The body of the handler is given by +HANDLER_BODY. + +

If CLEANUP_P holds of the TRY_BLOCK, then the +TRY_HANDLERS will not be a HANDLER node. Instead, it will +be an expression that should be executed if an exception is thrown in +the try block. It must rethrow the exception after executing that code. +And, if an exception is thrown while the expression is executing, +terminate must be called. + +

USING_STMT
Used to represent a using directive. The namespace is given by +USING_STMT_NAMESPACE, which will be a NAMESPACE_DECL. This node +is needed inside template functions, to implement using directives +during instantiation. + +
WHILE_STMT
+Used to represent a while loop. The WHILE_COND is the +termination condition for the loop. See the documentation for an +IF_STMT for more information on the representation used for the +condition. + +

The WHILE_BODY is the body of the loop. + +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Entry.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Entry.html new file mode 100644 index 0000000..b0fabd2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Function-Entry.html @@ -0,0 +1,310 @@ + + +Function Entry - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Caller Saves, +Up: Stack and Calling +



+
+ +

15.10.11 Function Entry and Exit

+ +

+This section describes the macros that output function entry +(prologue) and exit (epilogue) code. + +

+— Target Hook: void TARGET_ASM_FUNCTION_PROLOGUE (FILE *file, HOST_WIDE_INT size)
+

If defined, a function that outputs the assembler code for entry to a +function. The prologue is responsible for setting up the stack frame, +initializing the frame pointer register, saving registers that must be +saved, and allocating size additional bytes of storage for the +local variables. size is an integer. file is a stdio +stream to which the assembler code should be output. + +

The label for the beginning of the function need not be output by this +macro. That has already been done when the macro is run. + +

To determine which registers to save, the macro can refer to the array +regs_ever_live: element r is nonzero if hard register +r is used anywhere within the function. This implies the function +prologue should save register r, provided it is not one of the +call-used registers. (TARGET_ASM_FUNCTION_EPILOGUE must likewise use +regs_ever_live.) + +

On machines that have “register windows”, the function entry code does +not save on the stack the registers that are in the windows, even if +they are supposed to be preserved by function calls; instead it takes +appropriate steps to “push” the register stack, if any non-call-used +registers are used in the function. + +

On machines where functions may or may not have frame-pointers, the +function entry code must vary accordingly; it must set up the frame +pointer if one is wanted, and not otherwise. To determine whether a +frame pointer is in wanted, the macro can refer to the variable +frame_pointer_needed. The variable's value will be 1 at run +time in a function that needs a frame pointer. See Elimination. + +

The function entry code is responsible for allocating any stack space +required for the function. This stack space consists of the regions +listed below. In most cases, these regions are allocated in the +order listed, with the last listed region closest to the top of the +stack (the lowest address if STACK_GROWS_DOWNWARD is defined, and +the highest address if it is not defined). You can use a different order +for a machine if doing so is more convenient or required for +compatibility reasons. Except in cases where required by standard +or by a debugger, there is no reason why the stack layout used by GCC +need agree with that used by other compilers for a machine. +

+ +
+— Target Hook: void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *file)
+

If defined, a function that outputs assembler code at the end of a +prologue. This should be used when the function prologue is being +emitted as RTL, and you have some extra assembler that needs to be +emitted. See prologue instruction pattern. +

+ +
+— Target Hook: void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *file)
+

If defined, a function that outputs assembler code at the start of an +epilogue. This should be used when the function epilogue is being +emitted as RTL, and you have some extra assembler that needs to be +emitted. See epilogue instruction pattern. +

+ +
+— Target Hook: void TARGET_ASM_FUNCTION_EPILOGUE (FILE *file, HOST_WIDE_INT size)
+

If defined, a function that outputs the assembler code for exit from a +function. The epilogue is responsible for restoring the saved +registers and stack pointer to their values when the function was +called, and returning control to the caller. This macro takes the +same arguments as the macro TARGET_ASM_FUNCTION_PROLOGUE, and the +registers to restore are determined from regs_ever_live and +CALL_USED_REGISTERS in the same way. + +

On some machines, there is a single instruction that does all the work +of returning from the function. On these machines, give that +instruction the name return and do not define the macro +TARGET_ASM_FUNCTION_EPILOGUE at all. + +

Do not define a pattern named return if you want the +TARGET_ASM_FUNCTION_EPILOGUE to be used. If you want the target +switches to control whether return instructions or epilogues are used, +define a return pattern with a validity condition that tests the +target switches appropriately. If the return pattern's validity +condition is false, epilogues will be used. + +

On machines where functions may or may not have frame-pointers, the +function exit code must vary accordingly. Sometimes the code for these +two cases is completely different. To determine whether a frame pointer +is wanted, the macro can refer to the variable +frame_pointer_needed. The variable's value will be 1 when compiling +a function that needs a frame pointer. + +

Normally, TARGET_ASM_FUNCTION_PROLOGUE and +TARGET_ASM_FUNCTION_EPILOGUE must treat leaf functions specially. +The C variable current_function_is_leaf is nonzero for such a +function. See Leaf Functions. + +

On some machines, some functions pop their arguments on exit while +others leave that for the caller to do. For example, the 68020 when +given -mrtd pops arguments in functions that take a fixed +number of arguments. + +

Your definition of the macro RETURN_POPS_ARGS decides which +functions pop their own arguments. TARGET_ASM_FUNCTION_EPILOGUE +needs to know what was decided. The variable that is called +current_function_pops_args is the number of bytes of its +arguments that a function should pop. See Scalar Return. + + +

+ +
    +
  • A region of current_function_pretend_args_size bytes of +uninitialized space just underneath the first argument arriving on the +stack. (This may not be at the very start of the allocated stack region +if the calling sequence has pushed anything else since pushing the stack +arguments. But usually, on such machines, nothing else has been pushed +yet, because the function prologue itself does all the pushing.) This +region is used on machines where an argument may be passed partly in +registers and partly in memory, and, in some cases to support the +features in <stdarg.h>. + +
  • An area of memory used to save certain registers used by the function. +The size of this area, which may also include space for such things as +the return address and pointers to previous stack frames, is +machine-specific and usually depends on which registers have been used +in the function. Machines with register windows often do not require +a save area. + +
  • A region of at least size bytes, possibly rounded up to an allocation +boundary, to contain the local variables of the function. On some machines, +this region and the save area may occur in the opposite order, with the +save area closer to the top of the stack. + +
  • Optionally, when ACCUMULATE_OUTGOING_ARGS is defined, a region of +current_function_outgoing_args_size bytes to be used for outgoing +argument lists of the function. See Stack Arguments. +
+ +
+— Macro: EXIT_IGNORE_STACK
+

Define this macro as a C expression that is nonzero if the return +instruction or the function epilogue ignores the value of the stack +pointer; in other words, if it is safe to delete an instruction to +adjust the stack pointer before a return from the function. The +default is 0. + +

Note that this macro's value is relevant only for functions for which +frame pointers are maintained. It is never safe to delete a final +stack adjustment in a function that has no frame pointer, and the +compiler knows this regardless of EXIT_IGNORE_STACK. +

+ +
+— Macro: EPILOGUE_USES (regno)
+

Define this macro as a C expression that is nonzero for registers that are +used by the epilogue or the return pattern. The stack and frame +pointer registers are already assumed to be used as needed. +

+ +
+— Macro: EH_USES (regno)
+

Define this macro as a C expression that is nonzero for registers that are +used by the exception handling mechanism, and so should be considered live +on entry to an exception edge. +

+ +
+— Macro: DELAY_SLOTS_FOR_EPILOGUE
+

Define this macro if the function epilogue contains delay slots to which +instructions from the rest of the function can be “moved”. The +definition should be a C expression whose value is an integer +representing the number of delay slots there. +

+ +
+— Macro: ELIGIBLE_FOR_EPILOGUE_DELAY (insn, n)
+

A C expression that returns 1 if insn can be placed in delay +slot number n of the epilogue. + +

The argument n is an integer which identifies the delay slot now +being considered (since different slots may have different rules of +eligibility). It is never negative and is always less than the number +of epilogue delay slots (what DELAY_SLOTS_FOR_EPILOGUE returns). +If you reject a particular insn for a given delay slot, in principle, it +may be reconsidered for a subsequent delay slot. Also, other insns may +(at least in principle) be considered for the so far unfilled delay +slot. + +

The insns accepted to fill the epilogue delay slots are put in an RTL +list made with insn_list objects, stored in the variable +current_function_epilogue_delay_list. The insn for the first +delay slot comes first in the list. Your definition of the macro +TARGET_ASM_FUNCTION_EPILOGUE should fill the delay slots by +outputting the insns in this list, usually by calling +final_scan_insn. + +

You need not define this macro if you did not define +DELAY_SLOTS_FOR_EPILOGUE. +

+ +
+— Target Hook: void TARGET_ASM_OUTPUT_MI_THUNK (FILE *file, tree thunk_fndecl, HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, tree function)
+

A function that outputs the assembler code for a thunk +function, used to implement C++ virtual function calls with multiple +inheritance. The thunk acts as a wrapper around a virtual function, +adjusting the implicit object parameter before handing control off to +the real function. + +

First, emit code to add the integer delta to the location that +contains the incoming first argument. Assume that this argument +contains a pointer, and is the one used to pass the this pointer +in C++. This is the incoming argument before the function prologue, +e.g. %o0 on a sparc. The addition must preserve the values of +all other incoming arguments. + +

Then, if vcall_offset is nonzero, an additional adjustment should be +made after adding delta. In particular, if p is the +adjusted pointer, the following adjustment should be made: + +

          p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
+     
+

After the additions, emit code to jump to function, which is a +FUNCTION_DECL. This is a direct pure jump, not a call, and does +not touch the return address. Hence returning from FUNCTION will +return to whoever called the current thunk. + +

The effect must be as if function had been called directly with +the adjusted first argument. This macro is responsible for emitting all +of the code for a thunk function; TARGET_ASM_FUNCTION_PROLOGUE +and TARGET_ASM_FUNCTION_EPILOGUE are not invoked. + +

The thunk_fndecl is redundant. (delta and function +have already been extracted from it.) It might possibly be useful on +some targets, but probably not. + +

If you do not define this macro, the target-independent code in the C++ +front end will generate a less efficient heavyweight thunk that calls +function instead of jumping to it. The generic approach does +not support varargs. +

+ +
+— Target Hook: bool TARGET_ASM_CAN_OUTPUT_MI_THUNK (tree thunk_fndecl, HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, tree function)
+

A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would be able +to output the assembler code for the thunk function specified by the +arguments it is passed, and false otherwise. In the latter case, the +generic approach will be used by the C++ front end, with the limitations +previously exposed. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Functions.html new file mode 100644 index 0000000..5db0662 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Functions.html @@ -0,0 +1,111 @@ + + +Functions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Scopes, +Up: Trees +



+
+ +

9.6 Functions

+ +

+A function is represented by a FUNCTION_DECL node. A set of +overloaded functions is sometimes represented by a OVERLOAD node. + +

An OVERLOAD node is not a declaration, so none of the +DECL_ macros should be used on an OVERLOAD. An +OVERLOAD node is similar to a TREE_LIST. Use +OVL_CURRENT to get the function associated with an +OVERLOAD node; use OVL_NEXT to get the next +OVERLOAD node in the list of overloaded functions. The macros +OVL_CURRENT and OVL_NEXT are actually polymorphic; you can +use them to work with FUNCTION_DECL nodes as well as with +overloads. In the case of a FUNCTION_DECL, OVL_CURRENT +will always return the function itself, and OVL_NEXT will always +be NULL_TREE. + +

To determine the scope of a function, you can use the +DECL_CONTEXT macro. This macro will return the class +(either a RECORD_TYPE or a UNION_TYPE) or namespace (a +NAMESPACE_DECL) of which the function is a member. For a virtual +function, this macro returns the class in which the function was +actually defined, not the base class in which the virtual declaration +occurred. + +

If a friend function is defined in a class scope, the +DECL_FRIEND_CONTEXT macro can be used to determine the class in +which it was defined. For example, in +

     class C { friend void f() {} };
+
+

the DECL_CONTEXT for f will be the +global_namespace, but the DECL_FRIEND_CONTEXT will be the +RECORD_TYPE for C. + +

In C, the DECL_CONTEXT for a function maybe another function. +This representation indicates that the GNU nested function extension +is in use. For details on the semantics of nested functions, see the +GCC Manual. The nested function can refer to local variables in its +containing function. Such references are not explicitly marked in the +tree structure; back ends must look at the DECL_CONTEXT for the +referenced VAR_DECL. If the DECL_CONTEXT for the +referenced VAR_DECL is not the same as the function currently +being processed, and neither DECL_EXTERNAL nor +DECL_STATIC hold, then the reference is to a local variable in +a containing function, and the back end must take appropriate action. + +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Funding.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Funding.html new file mode 100644 index 0000000..23d5f8a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Funding.html @@ -0,0 +1,108 @@ + + +Funding - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Type Information, +Up: Top +



+
+ + +

Funding Free Software

+ +

If you want to have more free software a few years from now, it makes +sense for you to help encourage people to contribute funds for its +development. The most effective approach known is to encourage +commercial redistributors to donate. + +

Users of free software systems can boost the pace of development by +encouraging for-a-fee distributors to donate part of their selling price +to free software developers—the Free Software Foundation, and others. + +

The way to convince distributors to do this is to demand it and expect +it from them. So when you compare distributors, judge them partly by +how much they give to free software development. Show distributors +they must compete to be the one who gives the most. + +

To make this approach work, you must insist on numbers that you can +compare, such as, “We will donate ten dollars to the Frobnitz project +for each disk sold.” Don't be satisfied with a vague promise, such as +“A portion of the profits are donated,” since it doesn't give a basis +for comparison. + +

Even a precise fraction “of the profits from this disk” is not very +meaningful, since creative accounting and unrelated business decisions +can greatly alter what fraction of the sales price counts as profit. +If the price you pay is $50, ten percent of the profit is probably +less than a dollar; it might be a few cents, or nothing at all. + +

Some redistributors do development work themselves. This is useful too; +but to keep everyone honest, you need to inquire how much they do, and +what kind. Some kinds of development make much more long-term +difference than others. For example, maintaining a separate version of +a program contributes very little; maintaining the standard version of a +program for the whole community contributes much. Easy new ports +contribute little, since someone else would surely do them; difficult +ports such as adding a new CPU to the GNU Compiler Collection contribute more; +major new features or packages contribute the most. + +

By establishing the idea that supporting further development is “the +proper thing to do” when distributing free software for a fee, we can +assure a steady flow of resources into making more free software. + + +

     
+     Copyright © 1994 Free Software Foundation, Inc.
+     Verbatim copying and redistribution of this section is permitted
+     without royalty; alteration is not permitted.
+     
+
+ + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GENERIC.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GENERIC.html new file mode 100644 index 0000000..7e668cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GENERIC.html @@ -0,0 +1,85 @@ + + +GENERIC - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Tree SSA +



+
+ +

10.1 GENERIC

+ +

+The purpose of GENERIC is simply to provide a language-independent way of +representing an entire function in trees. To this end, it was necessary to +add a few new tree codes to the back end, but most everything was already +there. If you can express it with the codes in gcc/tree.def, it's +GENERIC. + +

Early on, there was a great deal of debate about how to think about +statements in a tree IL. In GENERIC, a statement is defined as any +expression whose value, if any, is ignored. A statement will always +have TREE_SIDE_EFFECTS set (or it will be discarded), but a +non-statement expression may also have side effects. A +CALL_EXPR, for instance. + +

It would be possible for some local optimizations to work on the +GENERIC form of a function; indeed, the adapted tree inliner works +fine on GENERIC, but the current compiler performs inlining after +lowering to GIMPLE (a restricted form described in the next section). +Indeed, currently the frontends perform this lowering before handing +off to tree_rest_of_compilation, but this seems inelegant. + +

If necessary, a front end can use some language-dependent tree codes +in its GENERIC representation, so long as it provides a hook for +converting them to GIMPLE and doesn't expect them to work with any +(hypothetical) optimizers that run before the conversion to GIMPLE. +The intermediate representation used while parsing C and C++ looks +very little like GENERIC, but the C and C++ gimplifier hooks are +perfectly happy to take it as input and spit out GIMPLE. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GGC-Roots.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GGC-Roots.html new file mode 100644 index 0000000..10f0c78 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GGC-Roots.html @@ -0,0 +1,76 @@ + + +GGC Roots - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: GTY Options, +Up: Type Information +



+
+ +

20.2 Marking Roots for the Garbage Collector

+ +

+In addition to keeping track of types, the type machinery also locates +the global variables (roots) that the garbage collector starts +at. Roots must be declared using one of the following syntaxes: + +

    +
  • extern GTY(([options])) type name; +
  • static GTY(([options])) type name; +
+ The syntax +
    +
  • GTY(([options])) type name; +
+ is not accepted. There should be an extern declaration +of such a variable in a header somewhere—mark that, not the +definition. Or, if the variable is only used in one file, make it +static. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Example.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Example.html new file mode 100644 index 0000000..09e78cc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Example.html @@ -0,0 +1,132 @@ + + +GIMPLE Example - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Statements, +Up: GIMPLE +



+
+ +

10.2.5 GIMPLE Example

+ +

+

     struct A { A(); ~A(); };
+     
+     int i;
+     int g();
+     void f()
+     {
+       A a;
+       int j = (--i, i ? 0 : 1);
+     
+       for (int x = 42; x > 0; --x)
+         {
+           i += g()*4 + 32;
+         }
+     }
+
+

becomes + +

     void f()
+     {
+       int i.0;
+       int T.1;
+       int iftmp.2;
+       int T.3;
+       int T.4;
+       int T.5;
+       int T.6;
+     
+       {
+         struct A a;
+         int j;
+     
+         __comp_ctor (&a);
+         try
+           {
+             i.0 = i;
+             T.1 = i.0 - 1;
+             i = T.1;
+             i.0 = i;
+             if (i.0 == 0)
+               iftmp.2 = 1;
+             else
+               iftmp.2 = 0;
+             j = iftmp.2;
+             {
+               int x;
+     
+               x = 42;
+               goto test;
+               loop:;
+     
+               T.3 = g ();
+               T.4 = T.3 * 4;
+               i.0 = i;
+               T.5 = T.4 + i.0;
+               T.6 = T.5 + 32;
+               i = T.6;
+               x = x - 1;
+     
+               test:;
+               if (x > 0)
+                 goto loop;
+               else
+                 goto break_;
+               break_:;
+             }
+           }
+         finally
+           {
+             __comp_dtor (&a);
+           }
+       }
+     }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Exception-Handling.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Exception-Handling.html new file mode 100644 index 0000000..44490d5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Exception-Handling.html @@ -0,0 +1,95 @@ + + +GIMPLE Exception Handling - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Cleanups, +Up: Statements +



+
+ +
10.2.4.8 Exception Handling
+ +

+Other exception handling constructs are represented using +TRY_CATCH_EXPR. TRY_CATCH_EXPR has two operands. The +first operand is a sequence of statements to execute. If executing +these statements does not throw an exception, then the second operand +is ignored. Otherwise, if an exception is thrown, then the second +operand of the TRY_CATCH_EXPR is checked. The second operand +may have the following forms: + +

    + +
  1. A sequence of statements to execute. When an exception occurs, +these statements are executed, and then the exception is rethrown. + +
  2. A sequence of CATCH_EXPR expressions. Each CATCH_EXPR +has a list of applicable exception types and handler code. If the +thrown exception matches one of the caught types, the associated +handler code is executed. If the handler code falls off the bottom, +execution continues after the original TRY_CATCH_EXPR. + +
  3. An EH_FILTER_EXPR expression. This has a list of +permitted exception types, and code to handle a match failure. If the +thrown exception does not match one of the allowed types, the +associated match failure code is executed. If the thrown exception +does match, it continues unwinding the stack looking for the next +handler. + +
+ +

Currently throwing an exception is not directly represented in GIMPLE, +since it is implemented by calling a function. At some point in the future +we will want to add some way to express that the call will throw an +exception of a known type. + +

Just before running the optimizers, the compiler lowers the high-level +EH constructs above into a set of gotos, magic labels, and EH +regions. Continuing to unwind at the end of a cleanup is represented +with a RESX_EXPR. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Expressions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Expressions.html new file mode 100644 index 0000000..3631ed6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE-Expressions.html @@ -0,0 +1,82 @@ + + +GIMPLE Expressions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Temporaries, +Up: GIMPLE +



+
+ +

10.2.3 Expressions

+ +

+In general, expressions in GIMPLE consist of an operation and the +appropriate number of simple operands; these operands must either be a +GIMPLE rvalue (is_gimple_val), i.e. a constant or a register +variable. More complex operands are factored out into temporaries, so +that +

       a = b + c + d
+
+

becomes +

       T1 = b + c;
+       a = T1 + d;
+
+

The same rule holds for arguments to a CALL_EXPR. + +

The target of an assignment is usually a variable, but can also be an +INDIRECT_REF or a compound lvalue as described below. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE.html new file mode 100644 index 0000000..8df5243 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GIMPLE.html @@ -0,0 +1,94 @@ + + +GIMPLE - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: GENERIC, +Up: Tree SSA +



+
+ +

10.2 GIMPLE

+ +

+GIMPLE is a simplified subset of GENERIC for use in optimization. The +particular subset chosen (and the name) was heavily influenced by the +SIMPLE IL used by the McCAT compiler project at McGill University, +though we have made some different choices. For one thing, SIMPLE +doesn't support goto; a production compiler can't afford that +kind of restriction. + +

GIMPLE retains much of the structure of the parse trees: lexical +scopes are represented as containers, rather than markers. However, +expressions are broken down into a 3-address form, using temporary +variables to hold intermediate values. Also, control structures are +lowered to gotos. + +

In GIMPLE no container node is ever used for its value; if a +COND_EXPR or BIND_EXPR has a value, it is stored into a +temporary within the controlled blocks, and that temporary is used in +place of the container. + +

The compiler pass which lowers GENERIC to GIMPLE is referred to as the +gimplifier. The gimplifier works recursively, replacing complex +statements with sequences of simple statements. + + + + + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GNU-Free-Documentation-License.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GNU-Free-Documentation-License.html new file mode 100644 index 0000000..84c2901 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GNU-Free-Documentation-License.html @@ -0,0 +1,471 @@ + + +GNU Free Documentation License - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Copying, +Up: Top +



+
+ +

GNU Free Documentation License

+ +

Version 1.2, November 2002
+ +
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+     
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+
    +
  1. PREAMBLE + +

    The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +

    This License is a kind of “copyleft”, which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +

    We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +

  2. APPLICABILITY AND DEFINITIONS + +

    This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The “Document”, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as “you”. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +

    A “Modified Version” of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +

    A “Secondary Section” is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +

    The “Invariant Sections” are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +

    The “Cover Texts” are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +

    A “Transparent” copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not “Transparent” is called “Opaque”. + +

    Examples of suitable formats for Transparent copies include plain +ascii without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. + +

    The “Title Page” means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +

    A section “Entitled XYZ” means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” +of such a section when you modify the Document means that it remains a +section “Entitled XYZ” according to this definition. + +

    The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +

  3. VERBATIM COPYING + +

    You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +

    You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +

  4. COPYING IN QUANTITY + +

    If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +

    If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +

    If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +

    It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +

  5. MODIFICATIONS + +

    You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +

      +
    1. Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +
    2. List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +
    3. State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +
    4. Preserve all the copyright notices of the Document. + +
    5. Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +
    6. Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +
    7. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +
    8. Include an unaltered copy of this License. + +
    9. Preserve the section Entitled “History”, Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled “History” in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +
    10. Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the “History” section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +
    12. Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +
    13. Delete any section Entitled “Endorsements”. Such a section +may not be included in the Modified Version. + +
    14. Do not retitle any existing section to be Entitled “Endorsements” or +to conflict in title with any Invariant Section. + +
    15. Preserve any Warranty Disclaimers. +
    + +

    If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +

    You may add a section Entitled “Endorsements”, provided it contains +nothing but endorsements of your Modified Version by various +parties—for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +

    You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +

    The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +

  6. COMBINING DOCUMENTS + +

    You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +

    The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +

    In the combination, you must combine any sections Entitled “History” +in the various original documents, forming one section Entitled +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” + +

  7. COLLECTIONS OF DOCUMENTS + +

    You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +

    You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +

  8. AGGREGATION WITH INDEPENDENT WORKS + +

    A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an “aggregate” if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +

    If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +

  9. TRANSLATION + +

    Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +

    If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +

  10. TERMINATION + +

    You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +

  11. FUTURE REVISIONS OF THIS LICENSE + +

    The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +

    Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License “or any later version” applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +

+ +

ADDENDUM: How to use this License for your documents

+ +

To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +

       Copyright (C)  year  your name.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.2
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with...Texts.” line with this: + +

         with the Invariant Sections being list their titles, with
+         the Front-Cover Texts being list, and with the Back-Cover Texts
+         being list.
+
+

If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +

If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GNU-Project.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GNU-Project.html new file mode 100644 index 0000000..286b858 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GNU-Project.html @@ -0,0 +1,69 @@ + + +GNU Project - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: Funding, +Up: Top +



+
+ +

The GNU Project and GNU/Linux

+ +

The GNU Project was launched in 1984 to develop a complete Unix-like +operating system which is free software: the GNU system. (GNU is a +recursive acronym for “GNU's Not Unix”; it is pronounced +“guh-NEW”.) Variants of the GNU operating system, which use the +kernel Linux, are now widely used; though these systems are often +referred to as “Linux”, they are more accurately called GNU/Linux +systems. + +

For more information, see: +

     http://www.gnu.org/
+     http://www.gnu.org/gnu/linux-and-gnu.html
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GTY-Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GTY-Options.html new file mode 100644 index 0000000..cb30af2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/GTY-Options.html @@ -0,0 +1,285 @@ + + +GTY Options - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Type Information +



+
+ +

20.1 The Inside of a GTY(())

+ +

Sometimes the C code is not enough to fully describe the type +structure. Extra information can be provided with GTY options +and additional markers. Some options take a parameter, which may be +either a string or a type name, depending on the parameter. If an +option takes no parameter, it is acceptable either to omit the +parameter entirely, or to provide an empty string as a parameter. For +example, GTY ((skip)) and GTY ((skip (""))) are +equivalent. + +

When the parameter is a string, often it is a fragment of C code. Four +special escapes may be used in these strings, to refer to pieces of +the data structure being marked: + +

+

+
%h
The current structure. +
%1
The structure that immediately contains the current structure. +
%0
The outermost structure that contains the current structure. +
%a
A partial expression of the form [i1][i2]... that indexes +the array item currently being marked. +
+ +

For instance, suppose that you have a structure of the form +

     struct A {
+       ...
+     };
+     struct B {
+       struct A foo[12];
+     };
+
+

and b is a variable of type struct B. When marking +b.foo[11], %h would expand to b.foo[11], +%0 and %1 would both expand to b, and %a +would expand to [11]. + +

As in ordinary C, adjacent strings will be concatenated; this is +helpful when you have a complicated expression. +

     GTY ((chain_next ("TREE_CODE (&%h.generic) == INTEGER_TYPE"
+                       " ? TYPE_NEXT_VARIANT (&%h.generic)"
+                       " : TREE_CHAIN (&%h.generic)")))
+
+

The available options are: + + + +

length ("expression")
+There are two places the type machinery will need to be explicitly told +the length of an array. The first case is when a structure ends in a +variable-length array, like this: +
          struct rtvec_def GTY(()) {
+            int num_elem;		/* number of elements */
+            rtx GTY ((length ("%h.num_elem"))) elem[1];
+          };
+     
+

In this case, the length option is used to override the specified +array length (which should usually be 1). The parameter of the +option is a fragment of C code that calculates the length. + +

The second case is when a structure or a global variable contains a +pointer to an array, like this: +

          tree *
+            GTY ((length ("%h.regno_pointer_align_length"))) regno_decl;
+     
+

In this case, regno_decl has been allocated by writing something like +

            x->regno_decl =
+              ggc_alloc (x->regno_pointer_align_length * sizeof (tree));
+     
+

and the length provides the length of the field. + +

This second use of length also works on global variables, like: +

     
+       static GTY((length ("reg_base_value_size")))
+         rtx *reg_base_value;
+
+ +


skip
+If skip is applied to a field, the type machinery will ignore it. +This is somewhat dangerous; the only safe use is in a union when one +field really isn't ever used. + +


desc ("expression")
tag ("constant")
default
+The type machinery needs to be told which field of a union is +currently active. This is done by giving each field a constant +tag value, and then specifying a discriminator using desc. +The value of the expression given by desc is compared against +each tag value, each of which should be different. If no +tag is matched, the field marked with default is used if +there is one, otherwise no field in the union will be marked. + +

In the desc option, the “current structure” is the union that +it discriminates. Use %1 to mean the structure containing it. +There are no escapes available to the tag option, since it is a +constant. + +

For example, +

          struct tree_binding GTY(())
+          {
+            struct tree_common common;
+            union tree_binding_u {
+              tree GTY ((tag ("0"))) scope;
+              struct cp_binding_level * GTY ((tag ("1"))) level;
+            } GTY ((desc ("BINDING_HAS_LEVEL_P ((tree)&%0)"))) xscope;
+            tree value;
+          };
+     
+

In this example, the value of BINDING_HAS_LEVEL_P when applied to a +struct tree_binding * is presumed to be 0 or 1. If 1, the type +mechanism will treat the field level as being present and if 0, +will treat the field scope as being present. + +


param_is (type)
use_param
+Sometimes it's convenient to define some data structure to work on +generic pointers (that is, PTR) and then use it with a specific +type. param_is specifies the real type pointed to, and +use_param says where in the generic data structure that type +should be put. + +

For instance, to have a htab_t that points to trees, one would +write the definition of htab_t like this: +

          typedef struct GTY(()) {
+            ...
+            void ** GTY ((use_param, ...)) entries;
+            ...
+          } htab_t;
+     
+

and then declare variables like this: +

            static htab_t GTY ((param_is (union tree_node))) ict;
+     
+


paramn_is (type)
use_paramn
+In more complicated cases, the data structure might need to work on +several different types, which might not necessarily all be pointers. +For this, param1_is through param9_is may be used to +specify the real type of a field identified by use_param1 through +use_param9. + +


use_params
+When a structure contains another structure that is parameterized, +there's no need to do anything special, the inner structure inherits the +parameters of the outer one. When a structure contains a pointer to a +parameterized structure, the type machinery won't automatically detect +this (it could, it just doesn't yet), so it's necessary to tell it that +the pointed-to structure should use the same parameters as the outer +structure. This is done by marking the pointer with the +use_params option. + +


deletable
+deletable, when applied to a global variable, indicates that when +garbage collection runs, there's no need to mark anything pointed to +by this variable, it can just be set to NULL instead. This is used +to keep a list of free structures around for re-use. + +


if_marked ("expression")
+Suppose you want some kinds of object to be unique, and so you put them +in a hash table. If garbage collection marks the hash table, these +objects will never be freed, even if the last other reference to them +goes away. GGC has special handling to deal with this: if you use the +if_marked option on a global hash table, GGC will call the +routine whose name is the parameter to the option on each hash table +entry. If the routine returns nonzero, the hash table entry will +be marked as usual. If the routine returns zero, the hash table entry +will be deleted. + +

The routine ggc_marked_p can be used to determine if an element +has been marked already; in fact, the usual case is to use +if_marked ("ggc_marked_p"). + +


mark_hook ("hook-routine-name")
+If provided for a structure or union type, the given +hook-routine-name (between double-quotes) is the name of a +routine called when the garbage collector has just marked the data as +reachable. This routine should not change the data, or call any ggc +routine. Its only argument is a pointer to the just marked (const) +structure or union. + +


maybe_undef
+When applied to a field, maybe_undef indicates that it's OK if +the structure that this fields points to is never defined, so long as +this field is always NULL. This is used to avoid requiring +backends to define certain optional structures. It doesn't work with +language frontends. + +


nested_ptr (type, "to expression", "from expression")
+The type machinery expects all pointers to point to the start of an +object. Sometimes for abstraction purposes it's convenient to have +a pointer which points inside an object. So long as it's possible to +convert the original object to and from the pointer, such pointers +can still be used. type is the type of the original object, +the to expression returns the pointer given the original object, +and the from expression returns the original object given +the pointer. The pointer will be available using the %h +escape. + +


chain_next ("expression")
chain_prev ("expression")
chain_circular ("expression")
+It's helpful for the type machinery to know if objects are often +chained together in long lists; this lets it generate code that uses +less stack space by iterating along the list instead of recursing down +it. chain_next is an expression for the next item in the list, +chain_prev is an expression for the previous item. For singly +linked lists, use only chain_next; for doubly linked lists, use +both. The machinery requires that taking the next item of the +previous item gives the original item. chain_circular is similar +to chain_next, but can be used for circular single linked lists. + +


reorder ("function name")
+Some data structures depend on the relative ordering of pointers. If +the precompiled header machinery needs to change that ordering, it +will call the function referenced by the reorder option, before +changing the pointers in the object that's pointed to by the field the +option applies to. The function must take four arguments, with the +signature void *, void *, gt_pointer_operator, void *. +The first parameter is a pointer to the structure that contains the +object being updated, or the object itself if there is no containing +structure. The second parameter is a cookie that should be ignored. +The third parameter is a routine that, given a pointer, will update it +to its correct new value. The fourth parameter is a cookie that must +be passed to the second parameter. + +

PCH cannot handle data structures that depend on the absolute values +of pointers. reorder functions can be expensive. When +possible, it is better to depend on properties of the data, like an ID +number or the hash of a string instead. + +


special ("name")
+The special option is used to mark types that have to be dealt +with by special case machinery. The parameter is the name of the +special case. See gengtype.c for further details. Avoid +adding new special cases unless there is no other alternative. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Gimplification-pass.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Gimplification-pass.html new file mode 100644 index 0000000..836a68d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Gimplification-pass.html @@ -0,0 +1,89 @@ + + +Gimplification pass - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Parsing pass, +Up: Passes +



+
+ +

8.2 Gimplification pass

+ +

Gimplification is a whimsical term for the process of converting +the intermediate representation of a function into the GIMPLE language +(CROSSREF). The term stuck, and so words like “gimplification”, +“gimplify”, “gimplifier” and the like are sprinkled throughout this +section of code. + +

While a front end may certainly choose to generate GIMPLE directly if +it chooses, this can be a moderately complex process unless the +intermediate language used by the front end is already fairly simple. +Usually it is easier to generate GENERIC trees plus extensions +and let the language-independent gimplifier do most of the work. + +

The main entry point to this pass is gimplify_function_tree +located in gimplify.c. From here we process the entire +function gimplifying each statement in turn. The main workhorse +for this pass is gimplify_expr. Approximately everything +passes through here at least once, and it is from here that we +invoke the lang_hooks.gimplify_expr callback. + +

The callback should examine the expression in question and return +GS_UNHANDLED if the expression is not a language specific +construct that requires attention. Otherwise it should alter the +expression in some way to such that forward progress is made toward +producing valid GIMPLE. If the callback is certain that the +transformation is complete and the expression is valid GIMPLE, it +should return GS_ALL_DONE. Otherwise it should return +GS_OK, which will cause the expression to be processed again. +If the callback encounters an error during the transformation (because +the front end is relying on the gimplification process to finish +semantic checks), it should return GS_ERROR. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Header-Dirs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Header-Dirs.html new file mode 100644 index 0000000..2af8173 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Header-Dirs.html @@ -0,0 +1,87 @@ + + +Header Dirs - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: Collect2, +Up: Top +



+
+ +

19 Standard Header File Directories

+ +

GCC_INCLUDE_DIR means the same thing for native and cross. It is +where GCC stores its private include files, and also where GCC +stores the fixed include files. A cross compiled GCC runs +fixincludes on the header files in $(tooldir)/include. +(If the cross compilation header files need to be fixed, they must be +installed before GCC is built. If the cross compilation header files +are already suitable for GCC, nothing special need be done). + +

GPLUSPLUS_INCLUDE_DIR means the same thing for native and cross. It +is where g++ looks first for header files. The C++ library +installs only target independent header files in that directory. + +

LOCAL_INCLUDE_DIR is used only by native compilers. GCC +doesn't install anything there. It is normally +/usr/local/include. This is where local additions to a packaged +system should place header files. + +

CROSS_INCLUDE_DIR is used only by cross compilers. GCC +doesn't install anything there. + +

TOOL_INCLUDE_DIR is used for both native and cross compilers. It +is the place for other packages to install header files that GCC will +use. For a cross-compiler, this is the equivalent of +/usr/include. When you build a cross-compiler, +fixincludes processes any header files in this directory. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Headers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Headers.html new file mode 100644 index 0000000..6961b59 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Headers.html @@ -0,0 +1,98 @@ + + +Headers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Library Files, +Up: gcc Directory +



+
+ +

6.3.6 Headers Installed by GCC

+ +

In general, GCC expects the system C library to provide most of the +headers to be used with it. However, GCC will fix those headers if +necessary to make them work with GCC, and will install some headers +required of freestanding implementations. These headers are installed +in libsubdir/include. Headers for non-C runtime +libraries are also installed by GCC; these are not documented here. +(FIXME: document them somewhere.) + +

Several of the headers GCC installs are in the ginclude +directory. These headers, iso646.h, +stdarg.h, stdbool.h, and stddef.h, +are installed in libsubdir/include, +unless the target Makefile fragment (see Target Fragment) +overrides this by setting USER_H. + +

In addition to these headers and those generated by fixing system +headers to work with GCC, some other headers may also be installed in +libsubdir/include. config.gcc may set +extra_headers; this specifies additional headers under +config to be installed on some systems. + +

GCC installs its own version of <float.h>, from ginclude/float.h. +This is done to cope with command-line options that change the +representation of floating point numbers. + +

GCC also installs its own version of <limits.h>; this is generated +from glimits.h, together with limitx.h and +limity.h if the system also has its own version of +<limits.h>. (GCC provides its own header because it is +required of ISO C freestanding implementations, but needs to include +the system header from its own header as well because other standards +such as POSIX specify additional values to be defined in +<limits.h>.) The system's <limits.h> header is used via +libsubdir/include/syslimits.h, which is copied from +gsyslimits.h if it does not need fixing to work with GCC; if it +needs fixing, syslimits.h is the fixed copy. + +

GCC can also install <tgmath.h>. It will do this when +config.gcc sets use_gcc_tgmath to yes. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Common.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Common.html new file mode 100644 index 0000000..4650ee7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Common.html @@ -0,0 +1,107 @@ + + +Host Common - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: Host Config +



+
+ +

16.1 Host Common

+ +

+Some things are just not portable, even between similar operating systems, +and are too difficult for autoconf to detect. They get implemented using +hook functions in the file specified by the host_hook_obj +variable in config.gcc. + +

+— Host Hook: void HOST_HOOKS_EXTRA_SIGNALS (void)
+

This host hook is used to set up handling for extra signals. The most +common thing to do in this hook is to detect stack overflow. +

+ +
+— Host Hook: void * HOST_HOOKS_GT_PCH_GET_ADDRESS (size_t size, int fd)
+

This host hook returns the address of some space that is likely to be +free in some subsequent invocation of the compiler. We intend to load +the PCH data at this address such that the data need not be relocated. +The area should be able to hold size bytes. If the host uses +mmap, fd is an open file descriptor that can be used for +probing. +

+ +
+— Host Hook: int HOST_HOOKS_GT_PCH_USE_ADDRESS (void * address, size_t size, int fd, size_t offset)
+

This host hook is called when a PCH file is about to be loaded. +We want to load size bytes from fd at offset +into memory at address. The given address will be the result of +a previous invocation of HOST_HOOKS_GT_PCH_GET_ADDRESS. +Return −1 if we couldn't allocate size bytes at address. +Return 0 if the memory is allocated but the data is not loaded. Return 1 +if the hook has performed everything. + +

If the implementation uses reserved address space, free any reserved +space beyond size, regardless of the return value. If no PCH will +be loaded, this hook may be called with size zero, in which case +all reserved address space should be freed. + +

Do not try to handle values of address that could not have been +returned by this executable; just return −1. Such values usually +indicate an out-of-date PCH file (built by some other GCC executable), +and such a PCH file won't work. +

+ +
+— Host Hook: size_t HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY (void);
+

This host hook returns the alignment required for allocating virtual +memory. Usually this is the same as getpagesize, but on some hosts the +alignment for reserving memory differs from the pagesize for committing +memory. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Config.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Config.html new file mode 100644 index 0000000..1e8d5e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Config.html @@ -0,0 +1,78 @@ + + +Host Config - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Target Macros, +Up: Top +



+
+ +

16 Host Configuration

+ +

+Most details about the machine and system on which the compiler is +actually running are detected by the configure script. Some +things are impossible for configure to detect; these are +described in two ways, either by macros defined in a file named +xm-machine.h or by hook functions in the file specified +by the out_host_hook_obj variable in config.gcc. (The +intention is that very few hosts will need a header file but nearly +every fully supported host will need to override some hooks.) + +

If you need to define only a few macros, and they have simple +definitions, consider using the xm_defines variable in your +config.gcc entry instead of creating a host configuration +header. See System Config. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Fragment.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Fragment.html new file mode 100644 index 0000000..7229a10 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Fragment.html @@ -0,0 +1,88 @@ + + +Host Fragment - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Target Fragment, +Up: Fragments +



+
+ +

17.2 Host Makefile Fragments

+ +

+The use of x-host fragments is discouraged. You should do +so only if there is no other mechanism to get the behavior desired. +Host fragments should never forcibly override variables set by the +configure script, as they may have been adjusted by the user. + +

Variables provided for host fragments to set include: + +

+
X_CFLAGS
X_CPPFLAGS
These are extra flags to pass to the C compiler and preprocessor, +respectively. They are used both when building GCC, and when compiling +things with the just-built GCC. + +
XCFLAGS
These are extra flags to use when building the compiler. They are not +used when compiling libgcc.a. However, they are used when +recompiling the compiler with itself in later stages of a bootstrap. + +
BOOT_LDFLAGS
Flags to be passed to the linker when recompiling the compiler with +itself in later stages of a bootstrap. You might need to use this if, +for instance, one of the front ends needs more text space than the +linker provides by default. + +
EXTRA_PROGRAMS
A list of additional programs required to use the compiler on this host, +which should be compiled with GCC and installed alongside the front +ends. If you set this variable, you must also provide rules to build +the extra programs. + +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Misc.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Misc.html new file mode 100644 index 0000000..3611a34 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Host-Misc.html @@ -0,0 +1,100 @@ + + +Host Misc - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Filesystem, +Up: Host Config +



+
+ +

16.3 Host Misc

+ +

+

+
FATAL_EXIT_CODE
A C expression for the status code to be returned when the compiler +exits after serious errors. The default is the system-provided macro +EXIT_FAILURE, or 1 if the system doesn't define that +macro. Define this macro only if these defaults are incorrect. + +
SUCCESS_EXIT_CODE
A C expression for the status code to be returned when the compiler +exits without serious errors. (Warnings are not serious errors.) The +default is the system-provided macro EXIT_SUCCESS, or 0 if +the system doesn't define that macro. Define this macro only if these +defaults are incorrect. + +
USE_C_ALLOCA
Define this macro if GCC should use the C implementation of alloca +provided by libiberty.a. This only affects how some parts of the +compiler itself allocate memory. It does not change code generation. + +

When GCC is built with a compiler other than itself, the C alloca +is always used. This is because most other implementations have serious +bugs. You should define this macro only on a system where no +stack-based alloca can possibly work. For instance, if a system +has a small limit on the size of the stack, GCC's builtin alloca +will not work reliably. + +

COLLECT2_HOST_INITIALIZATION
If defined, a C statement (sans semicolon) that performs host-dependent +initialization when collect2 is being initialized. + +
GCC_DRIVER_HOST_INITIALIZATION
If defined, a C statement (sans semicolon) that performs host-dependent +initialization when a compilation driver is being initialized. + +
HOST_LONG_LONG_FORMAT
If defined, the string used to indicate an argument of type long +long to functions like printf. The default value is +"ll". +
+ +

In addition, if configure generates an incorrect definition of +any of the macros in auto-host.h, you can override that +definition in a host configuration header. If you need to do this, +first see if it is possible to fix configure. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Identifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Identifiers.html new file mode 100644 index 0000000..b99ba94 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Identifiers.html @@ -0,0 +1,94 @@ + + +Identifiers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Macros and Functions, +Up: Tree overview +



+
+ +

9.2.2 Identifiers

+ +

+An IDENTIFIER_NODE represents a slightly more general concept +that the standard C or C++ concept of identifier. In particular, an +IDENTIFIER_NODE may contain a $, or other extraordinary +characters. + +

There are never two distinct IDENTIFIER_NODEs representing the +same identifier. Therefore, you may use pointer equality to compare +IDENTIFIER_NODEs, rather than using a routine like strcmp. + +

You can use the following macros to access identifiers: +

+
IDENTIFIER_POINTER
The string represented by the identifier, represented as a +char*. This string is always NUL-terminated, and contains +no embedded NUL characters. + +
IDENTIFIER_LENGTH
The length of the string returned by IDENTIFIER_POINTER, not +including the trailing NUL. This value of +IDENTIFIER_LENGTH (x) is always the same as strlen +(IDENTIFIER_POINTER (x)). + +
IDENTIFIER_OPNAME_P
This predicate holds if the identifier represents the name of an +overloaded operator. In this case, you should not depend on the +contents of either the IDENTIFIER_POINTER or the +IDENTIFIER_LENGTH. + +
IDENTIFIER_TYPENAME_P
This predicate holds if the identifier represents the name of a +user-defined conversion operator. In this case, the TREE_TYPE of +the IDENTIFIER_NODE holds the type to which the conversion +operator converts. + +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Incdec.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Incdec.html new file mode 100644 index 0000000..04a3266 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Incdec.html @@ -0,0 +1,132 @@ + + +Incdec - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Side Effects, +Up: RTL +



+
+ +

12.16 Embedded Side-Effects on Addresses

+ +

+Six special side-effect expression codes appear as memory addresses. + + + +

(pre_dec:m x)
Represents the side effect of decrementing x by a standard +amount and represents also the value that x has after being +decremented. x must be a reg or mem, but most +machines allow only a reg. m must be the machine mode +for pointers on the machine in use. The amount x is decremented +by is the length in bytes of the machine mode of the containing memory +reference of which this expression serves as the address. Here is an +example of its use: + +
          (mem:DF (pre_dec:SI (reg:SI 39)))
+     
+

This says to decrement pseudo register 39 by the length of a DFmode +value and use the result to address a DFmode value. + +


(pre_inc:m x)
Similar, but specifies incrementing x instead of decrementing it. + +


(post_dec:m x)
Represents the same side effect as pre_dec but a different +value. The value represented here is the value x has before +being decremented. + +


(post_inc:m x)
Similar, but specifies incrementing x instead of decrementing it. + +


(post_modify:m x y)
+Represents the side effect of setting x to y and +represents x before x is modified. x must be a +reg or mem, but most machines allow only a reg. +m must be the machine mode for pointers on the machine in use. + +

The expression y must be one of three forms: +

+(plus:m x z), +(minus:m x z), or +(plus:m x i), +
+ where z is an index register and i is a constant. + +

Here is an example of its use: + +

          (mem:SF (post_modify:SI (reg:SI 42) (plus (reg:SI 42)
+                                                    (reg:SI 48))))
+     
+

This says to modify pseudo register 42 by adding the contents of pseudo +register 48 to it, after the use of what ever 42 points to. + +

(pre_modify:m x expr)
Similar except side effects happen before the use. +
+ +

These embedded side effect expressions must be used with care. Instruction +patterns may not use them. Until the flow pass of the compiler, +they may occur only to represent pushes onto the stack. The flow +pass finds cases where registers are incremented or decremented in one +instruction and used as an address shortly before or after; these cases are +then transformed to use pre- or post-increment or -decrement. + +

If a register used as the operand of these expressions is used in +another address in an insn, the original value of the register is used. +Uses of the register outside of an address are not permitted within the +same insn as a use in an embedded side effect expression because such +insns behave differently on different machines and hence must be treated +as ambiguous and disallowed. + +

An instruction that can be represented with an embedded side effect +could also be represented using parallel containing an additional +set to describe how the address register is altered. This is not +done because machines that allow these operations at all typically +allow them wherever a memory address is called for. Describing them as +additional parallel stores would require doubling the number of entries +in the machine description. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Including-Patterns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Including-Patterns.html new file mode 100644 index 0000000..47bc18b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Including-Patterns.html @@ -0,0 +1,114 @@ + + +Including Patterns - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Insn Splitting, +Up: Machine Desc +



+
+ +

14.17 Including Patterns in Machine Descriptions.

+ +

+The include pattern tells the compiler tools where to +look for patterns that are in files other than in the file +.md. This is used only at build time and there is no preprocessing allowed. + +

It looks like: + +

     
+     (include
+       pathname)
+
+

For example: + +

     
+     (include "filestuff")
+     
+
+

Where pathname is a string that specifies the location of the file, +specifies the include file to be in gcc/config/target/filestuff. The +directory gcc/config/target is regarded as the default directory. + +

Machine descriptions may be split up into smaller more manageable subsections +and placed into subdirectories. + +

By specifying: + +

     
+     (include "BOGUS/filestuff")
+     
+
+

the include file is specified to be in gcc/config/target/BOGUS/filestuff. + +

Specifying an absolute path for the include file such as; +

     
+     (include "/u2/BOGUS/filestuff")
+     
+
+

is permitted but is not encouraged. + +

14.17.1 RTL Generation Tool Options for Directory Search

+ +

+The -Idir option specifies directories to search for machine descriptions. +For example: + +

     
+     genrecog -I/p1/abc/proc1 -I/p2/abcd/pro2 target.md
+     
+
+

Add the directory dir to the head of the list of directories to be +searched for header files. This can be used to override a system machine definition +file, substituting your own version, since these directories are +searched before the default machine description file directories. If you use more than +one -I option, the directories are scanned in left-to-right +order; the standard default directory come after. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Initialization.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Initialization.html new file mode 100644 index 0000000..217d62f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Initialization.html @@ -0,0 +1,166 @@ + + +Initialization - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Label Output, +Up: Assembler Format +



+
+ +

15.21.5 How Initialization Functions Are Handled

+ +

+The compiled code for certain languages includes constructors +(also called initialization routines)—functions to initialize +data in the program when the program is started. These functions need +to be called before the program is “started”—that is to say, before +main is called. + +

Compiling some languages generates destructors (also called +termination routines) that should be called when the program +terminates. + +

To make the initialization and termination functions work, the compiler +must output something in the assembler code to cause those functions to +be called at the appropriate time. When you port the compiler to a new +system, you need to specify how to do this. + +

There are two major ways that GCC currently supports the execution of +initialization and termination functions. Each way has two variants. +Much of the structure is common to all four variations. + +

The linker must build two lists of these functions—a list of +initialization functions, called __CTOR_LIST__, and a list of +termination functions, called __DTOR_LIST__. + +

Each list always begins with an ignored function pointer (which may hold +0, −1, or a count of the function pointers after it, depending on +the environment). This is followed by a series of zero or more function +pointers to constructors (or destructors), followed by a function +pointer containing zero. + +

Depending on the operating system and its executable file format, either +crtstuff.c or libgcc2.c traverses these lists at startup +time and exit time. Constructors are called in reverse order of the +list; destructors in forward order. + +

The best way to handle static constructors works only for object file +formats which provide arbitrarily-named sections. A section is set +aside for a list of constructors, and another for a list of destructors. +Traditionally these are called .ctors and .dtors. Each +object file that defines an initialization function also puts a word in +the constructor section to point to that function. The linker +accumulates all these words into one contiguous .ctors section. +Termination functions are handled similarly. + +

This method will be chosen as the default by target-def.h if +TARGET_ASM_NAMED_SECTION is defined. A target that does not +support arbitrary sections, but does support special designated +constructor and destructor sections may define CTORS_SECTION_ASM_OP +and DTORS_SECTION_ASM_OP to achieve the same effect. + +

When arbitrary sections are available, there are two variants, depending +upon how the code in crtstuff.c is called. On systems that +support a .init section which is executed at program startup, +parts of crtstuff.c are compiled into that section. The +program is linked by the gcc driver like this: + +

     ld -o output_file crti.o crtbegin.o ... -lgcc crtend.o crtn.o
+
+

The prologue of a function (__init) appears in the .init +section of crti.o; the epilogue appears in crtn.o. Likewise +for the function __fini in the .fini section. Normally these +files are provided by the operating system or by the GNU C library, but +are provided by GCC for a few targets. + +

The objects crtbegin.o and crtend.o are (for most targets) +compiled from crtstuff.c. They contain, among other things, code +fragments within the .init and .fini sections that branch +to routines in the .text section. The linker will pull all parts +of a section together, which results in a complete __init function +that invokes the routines we need at startup. + +

To use this variant, you must define the INIT_SECTION_ASM_OP +macro properly. + +

If no init section is available, when GCC compiles any function called +main (or more accurately, any function designated as a program +entry point by the language front end calling expand_main_function), +it inserts a procedure call to __main as the first executable code +after the function prologue. The __main function is defined +in libgcc2.c and runs the global constructors. + +

In file formats that don't support arbitrary sections, there are again +two variants. In the simplest variant, the GNU linker (GNU ld) +and an `a.out' format must be used. In this case, +TARGET_ASM_CONSTRUCTOR is defined to produce a .stabs +entry of type N_SETT, referencing the name __CTOR_LIST__, +and with the address of the void function containing the initialization +code as its value. The GNU linker recognizes this as a request to add +the value to a set; the values are accumulated, and are eventually +placed in the executable as a vector in the format described above, with +a leading (ignored) count and a trailing zero element. +TARGET_ASM_DESTRUCTOR is handled similarly. Since no init +section is available, the absence of INIT_SECTION_ASM_OP causes +the compilation of main to call __main as above, starting +the initialization process. + +

The last variant uses neither arbitrary sections nor the GNU linker. +This is preferable when you want to do dynamic linking and when using +file formats which the GNU linker does not support, such as `ECOFF'. In +this case, TARGET_HAVE_CTORS_DTORS is false, initialization and +termination functions are recognized simply by their names. This requires +an extra program in the linkage step, called collect2. This program +pretends to be the linker, for use with GCC; it does its job by running +the ordinary linker, but also arranges to include the vectors of +initialization and termination functions. These functions are called +via __main as described above. In order to use this method, +use_collect2 must be defined in the target in config.gcc. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Attributes.html new file mode 100644 index 0000000..b4c5019 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Attributes.html @@ -0,0 +1,77 @@ + + +Insn Attributes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Peephole Definitions, +Up: Machine Desc +



+
+ +

14.19 Instruction Attributes

+ +

+In addition to describing the instruction supported by the target machine, +the md file also defines a group of attributes and a set of +values for each. Every generated insn is assigned a value for each attribute. +One possible attribute would be the effect that the insn has on the machine's +condition code. This attribute can then be used by NOTICE_UPDATE_CC +to track the condition codes. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Canonicalizations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Canonicalizations.html new file mode 100644 index 0000000..e8b26f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Canonicalizations.html @@ -0,0 +1,164 @@ + + +Insn Canonicalizations - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Looping Patterns, +Up: Machine Desc +



+
+ +

14.14 Canonicalization of Instructions

+ +

+There are often cases where multiple RTL expressions could represent an +operation performed by a single machine instruction. This situation is +most commonly encountered with logical, branch, and multiply-accumulate +instructions. In such cases, the compiler attempts to convert these +multiple RTL expressions into a single canonical form to reduce the +number of insn patterns required. + +

In addition to algebraic simplifications, following canonicalizations +are performed: + +

    +
  • For commutative and comparison operators, a constant is always made the +second operand. If a machine only supports a constant as the second +operand, only patterns that match a constant in the second operand need +be supplied. + +
  • For associative operators, a sequence of operators will always chain +to the left; for instance, only the left operand of an integer plus +can itself be a plus. and, ior, xor, +plus, mult, smin, smax, umin, and +umax are associative when applied to integers, and sometimes to +floating-point. + +
  • For these operators, if only one operand is a neg, not, +mult, plus, or minus expression, it will be the +first operand. + +
  • In combinations of neg, mult, plus, and +minus, the neg operations (if any) will be moved inside +the operations as far as possible. For instance, +(neg (mult A B)) is canonicalized as (mult (neg A) B), but +(plus (mult (neg A) B) C) is canonicalized as +(minus A (mult B C)). + +

  • For the compare operator, a constant is always the second operand +on machines where cc0 is used (see Jump Patterns). On other +machines, there are rare cases where the compiler might want to construct +a compare with a constant as the first operand. However, these +cases are not common enough for it to be worthwhile to provide a pattern +matching a constant as the first operand unless the machine actually has +such an instruction. + +

    An operand of neg, not, mult, plus, or +minus is made the first operand under the same conditions as +above. + +

  • (ltu (plus a b) b) is converted to +(ltu (plus a b) a). Likewise with geu instead +of ltu. + +
  • (minus x (const_int n)) is converted to +(plus x (const_int -n)). + +
  • Within address computations (i.e., inside mem), a left shift is +converted into the appropriate multiplication by a power of two. + +

  • De Morgan's Law is used to move bitwise negation inside a bitwise +logical-and or logical-or operation. If this results in only one +operand being a not expression, it will be the first one. + +

    A machine that has an instruction that performs a bitwise logical-and of one +operand with the bitwise negation of the other should specify the pattern +for that instruction as + +

              (define_insn ""
    +            [(set (match_operand:m 0 ...)
    +                  (and:m (not:m (match_operand:m 1 ...))
    +                               (match_operand:m 2 ...)))]
    +            "..."
    +            "...")
    +     
    +

    Similarly, a pattern for a “NAND” instruction should be written + +

              (define_insn ""
    +            [(set (match_operand:m 0 ...)
    +                  (ior:m (not:m (match_operand:m 1 ...))
    +                               (not:m (match_operand:m 2 ...))))]
    +            "..."
    +            "...")
    +     
    +

    In both cases, it is not necessary to include patterns for the many +logically equivalent RTL expressions. + +

  • The only possible RTL expressions involving both bitwise exclusive-or +and bitwise negation are (xor:m x y) +and (not:m (xor:m x y)). + +
  • The sum of three items, one of which is a constant, will only appear in +the form + +
              (plus:m (plus:m x y) constant)
    +     
    +
  • On machines that do not use cc0, +(compare x (const_int 0)) will be converted to +x. + +

  • Equality comparisons of a group of bits (usually a single bit) with zero +will be written using zero_extract rather than the equivalent +and or sign_extract operations. + +
+ +

Further canonicalization rules are defined in the function +commutative_operand_precedence in gcc/rtlanal.c. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Lengths.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Lengths.html new file mode 100644 index 0000000..7d3f944 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Lengths.html @@ -0,0 +1,129 @@ + + +Insn Lengths - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Attr Example, +Up: Insn Attributes +



+
+ +

14.19.5 Computing the Length of an Insn

+ +

+For many machines, multiple types of branch instructions are provided, each +for different length branch displacements. In most cases, the assembler +will choose the correct instruction to use. However, when the assembler +cannot do so, GCC can when a special attribute, the length +attribute, is defined. This attribute must be defined to have numeric +values by specifying a null string in its define_attr. + +

In the case of the length attribute, two additional forms of +arithmetic terms are allowed in test expressions: + + + +

(match_dup n)
This refers to the address of operand n of the current insn, which +must be a label_ref. + +


(pc)
This refers to the address of the current insn. It might have +been more consistent with other usage to make this the address of the +next insn but this would be confusing because the length of the +current insn is to be computed. +
+ +

For normal insns, the length will be determined by value of the +length attribute. In the case of addr_vec and +addr_diff_vec insn patterns, the length is computed as +the number of vectors multiplied by the size of each vector. + +

Lengths are measured in addressable storage units (bytes). + +

The following macros can be used to refine the length computation: + + + +

ADJUST_INSN_LENGTH (insn, length)
If defined, modifies the length assigned to instruction insn as a +function of the context in which it is used. length is an lvalue +that contains the initially computed length of the insn and should be +updated with the correct length of the insn. + +

This macro will normally not be required. A case in which it is +required is the ROMP. On this machine, the size of an addr_vec +insn must be increased by two to compensate for the fact that alignment +may be required. +

+ +

The routine that returns get_attr_length (the value of the +length attribute) can be used by the output routine to +determine the form of the branch instruction to be written, as the +example below illustrates. + +

As an example of the specification of variable-length branches, consider +the IBM 360. If we adopt the convention that a register will be set to +the starting address of a function, we can jump to labels within 4k of +the start using a four-byte instruction. Otherwise, we need a six-byte +sequence to load the address from memory and then branch to it. + +

On such a machine, a pattern for a branch instruction might be specified +as follows: + +

     (define_insn "jump"
+       [(set (pc)
+             (label_ref (match_operand 0 "" "")))]
+       ""
+     {
+        return (get_attr_length (insn) == 4
+                ? "b %l0" : "l r15,=a(%l0); br r15");
+     }
+       [(set (attr "length")
+             (if_then_else (lt (match_dup 0) (const_int 4096))
+                           (const_int 4)
+                           (const_int 6)))])
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Splitting.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Splitting.html new file mode 100644 index 0000000..a306e4a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insn-Splitting.html @@ -0,0 +1,271 @@ + + +Insn Splitting - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Expander Definitions, +Up: Machine Desc +



+
+ +

14.16 Defining How to Split Instructions

+ +

+There are two cases where you should specify how to split a pattern +into multiple insns. On machines that have instructions requiring +delay slots (see Delay Slots) or that have instructions whose +output is not available for multiple cycles (see Processor pipeline description), the compiler phases that optimize these cases need to +be able to move insns into one-instruction delay slots. However, some +insns may generate more than one machine instruction. These insns +cannot be placed into a delay slot. + +

Often you can rewrite the single insn as a list of individual insns, +each corresponding to one machine instruction. The disadvantage of +doing so is that it will cause the compilation to be slower and require +more space. If the resulting insns are too complex, it may also +suppress some optimizations. The compiler splits the insn if there is a +reason to believe that it might improve instruction or delay slot +scheduling. + +

The insn combiner phase also splits putative insns. If three insns are +merged into one insn with a complex expression that cannot be matched by +some define_insn pattern, the combiner phase attempts to split +the complex pattern into two insns that are recognized. Usually it can +break the complex pattern into two patterns by splitting out some +subexpression. However, in some other cases, such as performing an +addition of a large constant in two insns on a RISC machine, the way to +split the addition into two insns is machine-dependent. + +

The define_split definition tells the compiler how to split a +complex insn into several simpler insns. It looks like this: + +

     (define_split
+       [insn-pattern]
+       "condition"
+       [new-insn-pattern-1
+        new-insn-pattern-2
+        ...]
+       "preparation-statements")
+
+

insn-pattern is a pattern that needs to be split and +condition is the final condition to be tested, as in a +define_insn. When an insn matching insn-pattern and +satisfying condition is found, it is replaced in the insn list +with the insns given by new-insn-pattern-1, +new-insn-pattern-2, etc. + +

The preparation-statements are similar to those statements that +are specified for define_expand (see Expander Definitions) +and are executed before the new RTL is generated to prepare for the +generated code or emit some insns whose pattern is not fixed. Unlike +those in define_expand, however, these statements must not +generate any new pseudo-registers. Once reload has completed, they also +must not allocate any space in the stack frame. + +

Patterns are matched against insn-pattern in two different +circumstances. If an insn needs to be split for delay slot scheduling +or insn scheduling, the insn is already known to be valid, which means +that it must have been matched by some define_insn and, if +reload_completed is nonzero, is known to satisfy the constraints +of that define_insn. In that case, the new insn patterns must +also be insns that are matched by some define_insn and, if +reload_completed is nonzero, must also satisfy the constraints +of those definitions. + +

As an example of this usage of define_split, consider the following +example from a29k.md, which splits a sign_extend from +HImode to SImode into a pair of shift insns: + +

     (define_split
+       [(set (match_operand:SI 0 "gen_reg_operand" "")
+             (sign_extend:SI (match_operand:HI 1 "gen_reg_operand" "")))]
+       ""
+       [(set (match_dup 0)
+             (ashift:SI (match_dup 1)
+                        (const_int 16)))
+        (set (match_dup 0)
+             (ashiftrt:SI (match_dup 0)
+                          (const_int 16)))]
+       "
+     { operands[1] = gen_lowpart (SImode, operands[1]); }")
+
+

When the combiner phase tries to split an insn pattern, it is always the +case that the pattern is not matched by any define_insn. +The combiner pass first tries to split a single set expression +and then the same set expression inside a parallel, but +followed by a clobber of a pseudo-reg to use as a scratch +register. In these cases, the combiner expects exactly two new insn +patterns to be generated. It will verify that these patterns match some +define_insn definitions, so you need not do this test in the +define_split (of course, there is no point in writing a +define_split that will never produce insns that match). + +

Here is an example of this use of define_split, taken from +rs6000.md: + +

     (define_split
+       [(set (match_operand:SI 0 "gen_reg_operand" "")
+             (plus:SI (match_operand:SI 1 "gen_reg_operand" "")
+                      (match_operand:SI 2 "non_add_cint_operand" "")))]
+       ""
+       [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 3)))
+        (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 4)))]
+     "
+     {
+       int low = INTVAL (operands[2]) & 0xffff;
+       int high = (unsigned) INTVAL (operands[2]) >> 16;
+     
+       if (low & 0x8000)
+         high++, low |= 0xffff0000;
+     
+       operands[3] = GEN_INT (high << 16);
+       operands[4] = GEN_INT (low);
+     }")
+
+

Here the predicate non_add_cint_operand matches any +const_int that is not a valid operand of a single add +insn. The add with the smaller displacement is written so that it +can be substituted into the address of a subsequent operation. + +

An example that uses a scratch register, from the same file, generates +an equality comparison of a register and a large constant: + +

     (define_split
+       [(set (match_operand:CC 0 "cc_reg_operand" "")
+             (compare:CC (match_operand:SI 1 "gen_reg_operand" "")
+                         (match_operand:SI 2 "non_short_cint_operand" "")))
+        (clobber (match_operand:SI 3 "gen_reg_operand" ""))]
+       "find_single_use (operands[0], insn, 0)
+        && (GET_CODE (*find_single_use (operands[0], insn, 0)) == EQ
+            || GET_CODE (*find_single_use (operands[0], insn, 0)) == NE)"
+       [(set (match_dup 3) (xor:SI (match_dup 1) (match_dup 4)))
+        (set (match_dup 0) (compare:CC (match_dup 3) (match_dup 5)))]
+       "
+     {
+       /* Get the constant we are comparing against, C, and see what it
+          looks like sign-extended to 16 bits.  Then see what constant
+          could be XOR'ed with C to get the sign-extended value.  */
+     
+       int c = INTVAL (operands[2]);
+       int sextc = (c << 16) >> 16;
+       int xorv = c ^ sextc;
+     
+       operands[4] = GEN_INT (xorv);
+       operands[5] = GEN_INT (sextc);
+     }")
+
+

To avoid confusion, don't write a single define_split that +accepts some insns that match some define_insn as well as some +insns that don't. Instead, write two separate define_split +definitions, one for the insns that are valid and one for the insns that +are not valid. + +

The splitter is allowed to split jump instructions into sequence of +jumps or create new jumps in while splitting non-jump instructions. As +the central flowgraph and branch prediction information needs to be updated, +several restriction apply. + +

Splitting of jump instruction into sequence that over by another jump +instruction is always valid, as compiler expect identical behavior of new +jump. When new sequence contains multiple jump instructions or new labels, +more assistance is needed. Splitter is required to create only unconditional +jumps, or simple conditional jump instructions. Additionally it must attach a +REG_BR_PROB note to each conditional jump. A global variable +split_branch_probability holds the probability of the original branch in case +it was an simple conditional jump, −1 otherwise. To simplify +recomputing of edge frequencies, the new sequence is required to have only +forward jumps to the newly created labels. + +

For the common case where the pattern of a define_split exactly matches the +pattern of a define_insn, use define_insn_and_split. It looks like +this: + +

     (define_insn_and_split
+       [insn-pattern]
+       "condition"
+       "output-template"
+       "split-condition"
+       [new-insn-pattern-1
+        new-insn-pattern-2
+        ...]
+       "preparation-statements"
+       [insn-attributes])
+     
+
+

insn-pattern, condition, output-template, and +insn-attributes are used as in define_insn. The +new-insn-pattern vector and the preparation-statements are used as +in a define_split. The split-condition is also used as in +define_split, with the additional behavior that if the condition starts +with &&, the condition used for the split will be the constructed as a +logical “and” of the split condition with the insn condition. For example, +from i386.md: + +

     (define_insn_and_split "zero_extendhisi2_and"
+       [(set (match_operand:SI 0 "register_operand" "=r")
+          (zero_extend:SI (match_operand:HI 1 "register_operand" "0")))
+        (clobber (reg:CC 17))]
+       "TARGET_ZERO_EXTEND_WITH_AND && !optimize_size"
+       "#"
+       "&& reload_completed"
+       [(parallel [(set (match_dup 0)
+                        (and:SI (match_dup 0) (const_int 65535)))
+     	      (clobber (reg:CC 17))])]
+       ""
+       [(set_attr "type" "alu1")])
+     
+
+

In this case, the actual split condition will be +TARGET_ZERO_EXTEND_WITH_AND && !optimize_size && reload_completed. + +

The define_insn_and_split construction provides exactly the same +functionality as two separate define_insn and define_split +patterns. It exists for compactness, and as a maintenance tool to prevent +having to ensure the two patterns' templates match. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insns.html new file mode 100644 index 0000000..41a08f2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Insns.html @@ -0,0 +1,584 @@ + + +Insns - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Assembler, +Up: RTL +



+
+ +

12.18 Insns

+ +

+The RTL representation of the code for a function is a doubly-linked +chain of objects called insns. Insns are expressions with +special codes that are used for no other purpose. Some insns are +actual instructions; others represent dispatch tables for switch +statements; others represent labels to jump to or various sorts of +declarative information. + +

In addition to its own specific data, each insn must have a unique +id-number that distinguishes it from all other insns in the current +function (after delayed branch scheduling, copies of an insn with the +same id-number may be present in multiple places in a function, but +these copies will always be identical and will only appear inside a +sequence), and chain pointers to the preceding and following +insns. These three fields occupy the same position in every insn, +independent of the expression code of the insn. They could be accessed +with XEXP and XINT, but instead three special macros are +always used: + + + +

INSN_UID (i)
Accesses the unique id of insn i. + +


PREV_INSN (i)
Accesses the chain pointer to the insn preceding i. +If i is the first insn, this is a null pointer. + +


NEXT_INSN (i)
Accesses the chain pointer to the insn following i. +If i is the last insn, this is a null pointer. +
+ +

The first insn in the chain is obtained by calling get_insns; the +last insn is the result of calling get_last_insn. Within the +chain delimited by these insns, the NEXT_INSN and +PREV_INSN pointers must always correspond: if insn is not +the first insn, + +

     NEXT_INSN (PREV_INSN (insn)) == insn
+
+

is always true and if insn is not the last insn, + +

     PREV_INSN (NEXT_INSN (insn)) == insn
+
+

is always true. + +

After delay slot scheduling, some of the insns in the chain might be +sequence expressions, which contain a vector of insns. The value +of NEXT_INSN in all but the last of these insns is the next insn +in the vector; the value of NEXT_INSN of the last insn in the vector +is the same as the value of NEXT_INSN for the sequence in +which it is contained. Similar rules apply for PREV_INSN. + +

This means that the above invariants are not necessarily true for insns +inside sequence expressions. Specifically, if insn is the +first insn in a sequence, NEXT_INSN (PREV_INSN (insn)) +is the insn containing the sequence expression, as is the value +of PREV_INSN (NEXT_INSN (insn)) if insn is the last +insn in the sequence expression. You can use these expressions +to find the containing sequence expression. + +

Every insn has one of the following six expression codes: + + + +

insn
The expression code insn is used for instructions that do not jump +and do not do function calls. sequence expressions are always +contained in insns with code insn even if one of those insns +should jump or do function calls. + +

Insns with code insn have four additional fields beyond the three +mandatory ones listed above. These four are described in a table below. + +


jump_insn
The expression code jump_insn is used for instructions that may +jump (or, more generally, may contain label_ref expressions to +which pc can be set in that instruction). If there is an +instruction to return from the current function, it is recorded as a +jump_insn. + +

jump_insn insns have the same extra fields as insn insns, +accessed in the same way and in addition contain a field +JUMP_LABEL which is defined once jump optimization has completed. + +

For simple conditional and unconditional jumps, this field contains +the code_label to which this insn will (possibly conditionally) +branch. In a more complex jump, JUMP_LABEL records one of the +labels that the insn refers to; other jump target labels are recorded +as REG_LABEL_TARGET notes. The exception is addr_vec +and addr_diff_vec, where JUMP_LABEL is NULL_RTX +and the only way to find the labels is to scan the entire body of the +insn. + +

Return insns count as jumps, but since they do not refer to any +labels, their JUMP_LABEL is NULL_RTX. + +


call_insn
The expression code call_insn is used for instructions that may do +function calls. It is important to distinguish these instructions because +they imply that certain registers and memory locations may be altered +unpredictably. + +

call_insn insns have the same extra fields as insn insns, +accessed in the same way and in addition contain a field +CALL_INSN_FUNCTION_USAGE, which contains a list (chain of +expr_list expressions) containing use and clobber +expressions that denote hard registers and MEMs used or +clobbered by the called function. + +

A MEM generally points to a stack slots in which arguments passed +to the libcall by reference (see TARGET_PASS_BY_REFERENCE) are stored. If the argument is +caller-copied (see TARGET_CALLEE_COPIES), +the stack slot will be mentioned in CLOBBER and USE +entries; if it's callee-copied, only a USE will appear, and the +MEM may point to addresses that are not stack slots. + +

CLOBBERed registers in this list augment registers specified in +CALL_USED_REGISTERS (see Register Basics). + +


code_label
A code_label insn represents a label that a jump insn can jump +to. It contains two special fields of data in addition to the three +standard ones. CODE_LABEL_NUMBER is used to hold the label +number, a number that identifies this label uniquely among all the +labels in the compilation (not just in the current function). +Ultimately, the label is represented in the assembler output as an +assembler label, usually of the form Ln where n is +the label number. + +

When a code_label appears in an RTL expression, it normally +appears within a label_ref which represents the address of +the label, as a number. + +

Besides as a code_label, a label can also be represented as a +note of type NOTE_INSN_DELETED_LABEL. + +

The field LABEL_NUSES is only defined once the jump optimization +phase is completed. It contains the number of times this label is +referenced in the current function. + +

The field LABEL_KIND differentiates four different types of +labels: LABEL_NORMAL, LABEL_STATIC_ENTRY, +LABEL_GLOBAL_ENTRY, and LABEL_WEAK_ENTRY. The only labels +that do not have type LABEL_NORMAL are alternate entry +points to the current function. These may be static (visible only in +the containing translation unit), global (exposed to all translation +units), or weak (global, but can be overridden by another symbol with the +same name). + +

Much of the compiler treats all four kinds of label identically. Some +of it needs to know whether or not a label is an alternate entry point; +for this purpose, the macro LABEL_ALT_ENTRY_P is provided. It is +equivalent to testing whether LABEL_KIND (label) == LABEL_NORMAL. +The only place that cares about the distinction between static, global, +and weak alternate entry points, besides the front-end code that creates +them, is the function output_alternate_entry_point, in +final.c. + +

To set the kind of a label, use the SET_LABEL_KIND macro. + +


barrier
Barriers are placed in the instruction stream when control cannot flow +past them. They are placed after unconditional jump instructions to +indicate that the jumps are unconditional and after calls to +volatile functions, which do not return (e.g., exit). +They contain no information beyond the three standard fields. + +


note
note insns are used to represent additional debugging and +declarative information. They contain two nonstandard fields, an +integer which is accessed with the macro NOTE_LINE_NUMBER and a +string accessed with NOTE_SOURCE_FILE. + +

If NOTE_LINE_NUMBER is positive, the note represents the +position of a source line and NOTE_SOURCE_FILE is the source file name +that the line came from. These notes control generation of line +number data in the assembler output. + +

Otherwise, NOTE_LINE_NUMBER is not really a line number but a +code with one of the following values (and NOTE_SOURCE_FILE +must contain a null pointer): + + + +

NOTE_INSN_DELETED
Such a note is completely ignorable. Some passes of the compiler +delete insns by altering them into notes of this kind. + +


NOTE_INSN_DELETED_LABEL
This marks what used to be a code_label, but was not used for other +purposes than taking its address and was transformed to mark that no +code jumps to it. + +


NOTE_INSN_BLOCK_BEG
NOTE_INSN_BLOCK_END
These types of notes indicate the position of the beginning and end +of a level of scoping of variable names. They control the output +of debugging information. + +


NOTE_INSN_EH_REGION_BEG
NOTE_INSN_EH_REGION_END
These types of notes indicate the position of the beginning and end of a +level of scoping for exception handling. NOTE_BLOCK_NUMBER +identifies which CODE_LABEL or note of type +NOTE_INSN_DELETED_LABEL is associated with the given region. + +


NOTE_INSN_LOOP_BEG
NOTE_INSN_LOOP_END
These types of notes indicate the position of the beginning and end +of a while or for loop. They enable the loop optimizer +to find loops quickly. + +


NOTE_INSN_LOOP_CONT
Appears at the place in a loop that continue statements jump to. + +


NOTE_INSN_LOOP_VTOP
This note indicates the place in a loop where the exit test begins for +those loops in which the exit test has been duplicated. This position +becomes another virtual start of the loop when considering loop +invariants. + +


NOTE_INSN_FUNCTION_BEG
Appears at the start of the function body, after the function +prologue. + +
+ +

These codes are printed symbolically when they appear in debugging dumps. +

+ +

The machine mode of an insn is normally VOIDmode, but some +phases use the mode for various purposes. + +

The common subexpression elimination pass sets the mode of an insn to +QImode when it is the first insn in a block that has already +been processed. + +

The second Haifa scheduling pass, for targets that can multiple issue, +sets the mode of an insn to TImode when it is believed that the +instruction begins an issue group. That is, when the instruction +cannot issue simultaneously with the previous. This may be relied on +by later passes, in particular machine-dependent reorg. + +

Here is a table of the extra fields of insn, jump_insn +and call_insn insns: + + + +

PATTERN (i)
An expression for the side effect performed by this insn. This must be +one of the following codes: set, call, use, +clobber, return, asm_input, asm_output, +addr_vec, addr_diff_vec, trap_if, unspec, +unspec_volatile, parallel, cond_exec, or sequence. If it is a parallel, +each element of the parallel must be one these codes, except that +parallel expressions cannot be nested and addr_vec and +addr_diff_vec are not permitted inside a parallel expression. + +


INSN_CODE (i)
An integer that says which pattern in the machine description matches +this insn, or −1 if the matching has not yet been attempted. + +

Such matching is never attempted and this field remains −1 on an insn +whose pattern consists of a single use, clobber, +asm_input, addr_vec or addr_diff_vec expression. + +

Matching is also never attempted on insns that result from an asm +statement. These contain at least one asm_operands expression. +The function asm_noperands returns a non-negative value for +such insns. + +

In the debugging output, this field is printed as a number followed by +a symbolic representation that locates the pattern in the md +file as some small positive or negative offset from a named pattern. + +


LOG_LINKS (i)
A list (chain of insn_list expressions) giving information about +dependencies between instructions within a basic block. Neither a jump +nor a label may come between the related insns. These are only used by +the schedulers and by combine. This is a deprecated data structure. +Def-use and use-def chains are now preferred. + +


REG_NOTES (i)
A list (chain of expr_list and insn_list expressions) +giving miscellaneous information about the insn. It is often +information pertaining to the registers used in this insn. +
+ +

The LOG_LINKS field of an insn is a chain of insn_list +expressions. Each of these has two operands: the first is an insn, +and the second is another insn_list expression (the next one in +the chain). The last insn_list in the chain has a null pointer +as second operand. The significant thing about the chain is which +insns appear in it (as first operands of insn_list +expressions). Their order is not significant. + +

This list is originally set up by the flow analysis pass; it is a null +pointer until then. Flow only adds links for those data dependencies +which can be used for instruction combination. For each insn, the flow +analysis pass adds a link to insns which store into registers values +that are used for the first time in this insn. + +

The REG_NOTES field of an insn is a chain similar to the +LOG_LINKS field but it includes expr_list expressions in +addition to insn_list expressions. There are several kinds of +register notes, which are distinguished by the machine mode, which in a +register note is really understood as being an enum reg_note. +The first operand op of the note is data whose meaning depends on +the kind of note. + +

The macro REG_NOTE_KIND (x) returns the kind of +register note. Its counterpart, the macro PUT_REG_NOTE_KIND +(x, newkind) sets the register note type of x to be +newkind. + +

Register notes are of three classes: They may say something about an +input to an insn, they may say something about an output of an insn, or +they may create a linkage between two insns. There are also a set +of values that are only used in LOG_LINKS. + +

These register notes annotate inputs to an insn: + + + +

REG_DEAD
The value in op dies in this insn; that is to say, altering the +value immediately after this insn would not affect the future behavior +of the program. + +

It does not follow that the register op has no useful value after +this insn since op is not necessarily modified by this insn. +Rather, no subsequent instruction uses the contents of op. + +


REG_UNUSED
The register op being set by this insn will not be used in a +subsequent insn. This differs from a REG_DEAD note, which +indicates that the value in an input will not be used subsequently. +These two notes are independent; both may be present for the same +register. + +


REG_INC
The register op is incremented (or decremented; at this level +there is no distinction) by an embedded side effect inside this insn. +This means it appears in a post_inc, pre_inc, +post_dec or pre_dec expression. + +


REG_NONNEG
The register op is known to have a nonnegative value when this +insn is reached. This is used so that decrement and branch until zero +instructions, such as the m68k dbra, can be matched. + +

The REG_NONNEG note is added to insns only if the machine +description has a decrement_and_branch_until_zero pattern. + +


REG_NO_CONFLICT
This insn does not cause a conflict between op and the item +being set by this insn even though it might appear that it does. +In other words, if the destination register and op could +otherwise be assigned the same register, this insn does not +prevent that assignment. + +

Insns with this note are usually part of a block that begins with a +clobber insn specifying a multi-word pseudo register (which will +be the output of the block), a group of insns that each set one word of +the value and have the REG_NO_CONFLICT note attached, and a final +insn that copies the output to itself with an attached REG_EQUAL +note giving the expression being computed. This block is encapsulated +with REG_LIBCALL and REG_RETVAL notes on the first and +last insns, respectively. + +


REG_LABEL_OPERAND
This insn uses op, a code_label or a note of type +NOTE_INSN_DELETED_LABEL, but is not a jump_insn, or it +is a jump_insn that refers to the operand as an ordinary +operand. The label may still eventually be a jump target, but if so +in an indirect jump in a subsequent insn. The presence of this note +allows jump optimization to be aware that op is, in fact, being +used, and flow optimization to build an accurate flow graph. + +


REG_LABEL_TARGET
This insn is a jump_insn but not a addr_vec or +addr_diff_vec. It uses op, a code_label as a +direct or indirect jump target. Its purpose is similar to that of +REG_LABEL_OPERAND. This note is only present if the insn has +multiple targets; the last label in the insn (in the highest numbered +insn-field) goes into the JUMP_LABEL field and does not have a +REG_LABEL_TARGET note. See JUMP_LABEL. + +


REG_CROSSING_JUMP
This insn is an branching instruction (either an unconditional jump or +an indirect jump) which crosses between hot and cold sections, which +could potentially be very far apart in the executable. The presence +of this note indicates to other optimizations that this this branching +instruction should not be “collapsed” into a simpler branching +construct. It is used when the optimization to partition basic blocks +into hot and cold sections is turned on. + +


REG_SETJMP
Appears attached to each CALL_INSN to setjmp or a +related function. +
+ +

The following notes describe attributes of outputs of an insn: + + + + +

REG_EQUIV
REG_EQUAL
This note is only valid on an insn that sets only one register and +indicates that that register will be equal to op at run time; the +scope of this equivalence differs between the two types of notes. The +value which the insn explicitly copies into the register may look +different from op, but they will be equal at run time. If the +output of the single set is a strict_low_part expression, +the note refers to the register that is contained in SUBREG_REG +of the subreg expression. + +

For REG_EQUIV, the register is equivalent to op throughout +the entire function, and could validly be replaced in all its +occurrences by op. (“Validly” here refers to the data flow of +the program; simple replacement may make some insns invalid.) For +example, when a constant is loaded into a register that is never +assigned any other value, this kind of note is used. + +

When a parameter is copied into a pseudo-register at entry to a function, +a note of this kind records that the register is equivalent to the stack +slot where the parameter was passed. Although in this case the register +may be set by other insns, it is still valid to replace the register +by the stack slot throughout the function. + +

A REG_EQUIV note is also used on an instruction which copies a +register parameter into a pseudo-register at entry to a function, if +there is a stack slot where that parameter could be stored. Although +other insns may set the pseudo-register, it is valid for the compiler to +replace the pseudo-register by stack slot throughout the function, +provided the compiler ensures that the stack slot is properly +initialized by making the replacement in the initial copy instruction as +well. This is used on machines for which the calling convention +allocates stack space for register parameters. See +REG_PARM_STACK_SPACE in Stack Arguments. + +

In the case of REG_EQUAL, the register that is set by this insn +will be equal to op at run time at the end of this insn but not +necessarily elsewhere in the function. In this case, op +is typically an arithmetic expression. For example, when a sequence of +insns such as a library call is used to perform an arithmetic operation, +this kind of note is attached to the insn that produces or copies the +final value. + +

These two notes are used in different ways by the compiler passes. +REG_EQUAL is used by passes prior to register allocation (such as +common subexpression elimination and loop optimization) to tell them how +to think of that value. REG_EQUIV notes are used by register +allocation to indicate that there is an available substitute expression +(either a constant or a mem expression for the location of a +parameter on the stack) that may be used in place of a register if +insufficient registers are available. + +

Except for stack homes for parameters, which are indicated by a +REG_EQUIV note and are not useful to the early optimization +passes and pseudo registers that are equivalent to a memory location +throughout their entire life, which is not detected until later in +the compilation, all equivalences are initially indicated by an attached +REG_EQUAL note. In the early stages of register allocation, a +REG_EQUAL note is changed into a REG_EQUIV note if +op is a constant and the insn represents the only set of its +destination register. + +

Thus, compiler passes prior to register allocation need only check for +REG_EQUAL notes and passes subsequent to register allocation +need only check for REG_EQUIV notes. +

+ +

These notes describe linkages between insns. They occur in pairs: one +insn has one of a pair of notes that points to a second insn, which has +the inverse note pointing back to the first insn. + + + +

REG_RETVAL
This insn copies the value of a multi-insn sequence (for example, a +library call), and op is the first insn of the sequence (for a +library call, the first insn that was generated to set up the arguments +for the library call). + +

Loop optimization uses this note to treat such a sequence as a single +operation for code motion purposes and flow analysis uses this note to +delete such sequences whose results are dead. + +

A REG_EQUAL note will also usually be attached to this insn to +provide the expression being computed by the sequence. + +

These notes will be deleted after reload, since they are no longer +accurate or useful. + +


REG_LIBCALL
This is the inverse of REG_RETVAL: it is placed on the first +insn of a multi-insn sequence, and it points to the last one. + +

These notes are deleted after reload, since they are no longer useful or +accurate. + +


REG_CC_SETTER
REG_CC_USER
On machines that use cc0, the insns which set and use cc0 +set and use cc0 are adjacent. However, when branch delay slot +filling is done, this may no longer be true. In this case a +REG_CC_USER note will be placed on the insn setting cc0 to +point to the insn using cc0 and a REG_CC_SETTER note will +be placed on the insn using cc0 to point to the insn setting +cc0. +
+ +

These values are only used in the LOG_LINKS field, and indicate +the type of dependency that each link represents. Links which indicate +a data dependence (a read after write dependence) do not use any code, +they simply have mode VOIDmode, and are printed without any +descriptive text. + + + +

REG_DEP_TRUE
This indicates a true dependence (a read after write dependence). + +


REG_DEP_OUTPUT
This indicates an output dependence (a write after write dependence). + +


REG_DEP_ANTI
This indicates an anti dependence (a write after read dependence). + +
+ +

These notes describe information gathered from gcov profile data. They +are stored in the REG_NOTES field of an insn as an +expr_list. + + + +

REG_BR_PROB
This is used to specify the ratio of branches to non-branches of a +branch insn according to the profile data. The value is stored as a +value between 0 and REG_BR_PROB_BASE; larger values indicate a higher +probability that the branch will be taken. + +


REG_BR_PRED
These notes are found in JUMP insns after delayed branch scheduling +has taken place. They indicate both the direction and the likelihood +of the JUMP. The format is a bitmask of ATTR_FLAG_* values. + +


REG_FRAME_RELATED_EXPR
This is used on an RTX_FRAME_RELATED_P insn wherein the attached expression +is used in place of the actual insn pattern. This is done in cases where +the pattern is either complex or misleading. + +


REG_LIBCALL_ID
This is used to specify that an insn is part of a libcall. Each libcall +in a function has a unique id, and all the insns that are part of that +libcall will have a REG_LIBCALL_ID note attached with the same ID. +
+ +

For convenience, the machine mode in an insn_list or +expr_list is printed using these symbolic codes in debugging dumps. + +

The only difference between the expression codes insn_list and +expr_list is that the first operand of an insn_list is +assumed to be an insn and is printed in debugging dumps as the insn's +unique id; the first operand of an expr_list is printed in the +ordinary way as an expression. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Instruction-Output.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Instruction-Output.html new file mode 100644 index 0000000..d1b15b6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Instruction-Output.html @@ -0,0 +1,268 @@ + + +Instruction Output - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+ +

15.21.7 Output of Assembler Instructions

+ + +

This describes assembler instruction output. + +

+— Macro: REGISTER_NAMES
+

A C initializer containing the assembler's names for the machine +registers, each one as a C string constant. This is what translates +register numbers in the compiler into assembler language. +

+ +
+— Macro: ADDITIONAL_REGISTER_NAMES
+

If defined, a C initializer for an array of structures containing a name +and a register number. This macro defines additional names for hard +registers, thus allowing the asm option in declarations to refer +to registers using alternate names. +

+ +
+— Macro: ASM_OUTPUT_OPCODE (stream, ptr)
+

Define this macro if you are using an unusual assembler that +requires different names for the machine instructions. + +

The definition is a C statement or statements which output an +assembler instruction opcode to the stdio stream stream. The +macro-operand ptr is a variable of type char * which +points to the opcode name in its “internal” form—the form that is +written in the machine description. The definition should output the +opcode name to stream, performing any translation you desire, and +increment the variable ptr to point at the end of the opcode +so that it will not be output twice. + +

In fact, your macro definition may process less than the entire opcode +name, or more than the opcode name; but if you want to process text +that includes %-sequences to substitute operands, you must take +care of the substitution yourself. Just be sure to increment +ptr over whatever text should not be output normally. + +

If you need to look at the operand values, they can be found as the +elements of recog_data.operand. + +

If the macro definition does nothing, the instruction is output +in the usual way. +

+ +
+— Macro: FINAL_PRESCAN_INSN (insn, opvec, noperands)
+

If defined, a C statement to be executed just prior to the output of +assembler code for insn, to modify the extracted operands so +they will be output differently. + +

Here the argument opvec is the vector containing the operands +extracted from insn, and noperands is the number of +elements of the vector which contain meaningful data for this insn. +The contents of this vector are what will be used to convert the insn +template into assembler code, so you can change the assembler output +by changing the contents of the vector. + +

This macro is useful when various assembler syntaxes share a single +file of instruction patterns; by defining this macro differently, you +can cause a large class of instructions to be output differently (such +as with rearranged operands). Naturally, variations in assembler +syntax affecting individual insn patterns ought to be handled by +writing conditional output routines in those patterns. + +

If this macro is not defined, it is equivalent to a null statement. +

+ +
+— Macro: PRINT_OPERAND (stream, x, code)
+

A C compound statement to output to stdio stream stream the +assembler syntax for an instruction operand x. x is an +RTL expression. + +

code is a value that can be used to specify one of several ways +of printing the operand. It is used when identical operands must be +printed differently depending on the context. code comes from +the % specification that was used to request printing of the +operand. If the specification was just %digit then +code is 0; if the specification was %ltr +digit then code is the ASCII code for ltr. + +

If x is a register, this macro should print the register's name. +The names can be found in an array reg_names whose type is +char *[]. reg_names is initialized from +REGISTER_NAMES. + +

When the machine description has a specification %punct +(a % followed by a punctuation character), this macro is called +with a null pointer for x and the punctuation character for +code. +

+ +
+— Macro: PRINT_OPERAND_PUNCT_VALID_P (code)
+

A C expression which evaluates to true if code is a valid +punctuation character for use in the PRINT_OPERAND macro. If +PRINT_OPERAND_PUNCT_VALID_P is not defined, it means that no +punctuation characters (except for the standard one, %) are used +in this way. +

+ +
+— Macro: PRINT_OPERAND_ADDRESS (stream, x)
+

A C compound statement to output to stdio stream stream the +assembler syntax for an instruction operand that is a memory reference +whose address is x. x is an RTL expression. + +

On some machines, the syntax for a symbolic address depends on the +section that the address refers to. On these machines, define the hook +TARGET_ENCODE_SECTION_INFO to store the information into the +symbol_ref, and then check for it here. See Assembler Format. +

+ +

+ +

+— Macro: DBR_OUTPUT_SEQEND (file)
+

A C statement, to be executed after all slot-filler instructions have +been output. If necessary, call dbr_sequence_length to +determine the number of slots filled in a sequence (zero if not +currently outputting a sequence), to decide how many no-ops to output, +or whatever. + +

Don't define this macro if it has nothing to do, but it is helpful in +reading assembly output if the extent of the delay sequence is made +explicit (e.g. with white space). +

+ +

Note that output routines for instructions with delay slots must be +prepared to deal with not being output as part of a sequence +(i.e. when the scheduling pass is not run, or when no slot fillers could be +found.) The variable final_sequence is null when not +processing a sequence, otherwise it contains the sequence rtx +being output. + +

+ +

+— Macro: REGISTER_PREFIX
+— Macro: LOCAL_LABEL_PREFIX
+— Macro: USER_LABEL_PREFIX
+— Macro: IMMEDIATE_PREFIX
+

If defined, C string expressions to be used for the %R, %L, +%U, and %I options of asm_fprintf (see +final.c). These are useful when a single md file must +support multiple assembler formats. In that case, the various tm.h +files can define these macros differently. +

+ +
+— Macro: ASM_FPRINTF_EXTENSIONS (file, argptr, format)
+

If defined this macro should expand to a series of case +statements which will be parsed inside the switch statement of +the asm_fprintf function. This allows targets to define extra +printf formats which may useful when generating their assembler +statements. Note that uppercase letters are reserved for future +generic extensions to asm_fprintf, and so are not available to target +specific code. The output file is given by the parameter file. +The varargs input pointer is argptr and the rest of the format +string, starting the character after the one that is being switched +upon, is pointed to by format. +

+ +
+— Macro: ASSEMBLER_DIALECT
+

If your target supports multiple dialects of assembler language (such as +different opcodes), define this macro as a C expression that gives the +numeric index of the assembler language dialect to use, with zero as the +first variant. + +

If this macro is defined, you may use constructs of the form +

          {option0|option1|option2...}
+     
+

in the output templates of patterns (see Output Template) or in the +first argument of asm_fprintf. This construct outputs +option0, option1, option2, etc., if the value of +ASSEMBLER_DIALECT is zero, one, two, etc. Any special characters +within these strings retain their usual meaning. If there are fewer +alternatives within the braces than the value of +ASSEMBLER_DIALECT, the construct outputs nothing. + +

If you do not define this macro, the characters {, | and +} do not have any special meaning when used in templates or +operands to asm_fprintf. + +

Define the macros REGISTER_PREFIX, LOCAL_LABEL_PREFIX, +USER_LABEL_PREFIX and IMMEDIATE_PREFIX if you can express +the variations in assembler language syntax with that mechanism. Define +ASSEMBLER_DIALECT and use the {option0|option1} syntax +if the syntax variant are larger and involve such things as different +opcodes or operand order. +

+ +
+— Macro: ASM_OUTPUT_REG_PUSH (stream, regno)
+

A C expression to output to stream some assembler code +which will push hard register number regno onto the stack. +The code need not be optimal, since this macro is used only when +profiling. +

+ +
+— Macro: ASM_OUTPUT_REG_POP (stream, regno)
+

A C expression to output to stream some assembler code +which will pop hard register number regno off of the stack. +The code need not be optimal, since this macro is used only when +profiling. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Integer-library-routines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Integer-library-routines.html new file mode 100644 index 0000000..6f0d398 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Integer-library-routines.html @@ -0,0 +1,249 @@ + + +Integer library routines - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Libgcc +



+
+ +

4.1 Routines for integer arithmetic

+ +

The integer arithmetic routines are used on platforms that don't provide +hardware support for arithmetic operations on some modes. + +

4.1.1 Arithmetic functions

+ +
+— Runtime Function: int __ashlsi3 (int a, int b)
+— Runtime Function: long __ashldi3 (long a, int b)
+— Runtime Function: long long __ashlti3 (long long a, int b)
+

These functions return the result of shifting a left by b bits. +

+ +
+— Runtime Function: int __ashrsi3 (int a, int b)
+— Runtime Function: long __ashrdi3 (long a, int b)
+— Runtime Function: long long __ashrti3 (long long a, int b)
+

These functions return the result of arithmetically shifting a right +by b bits. +

+ +
+— Runtime Function: int __divsi3 (int a, int b)
+— Runtime Function: long __divdi3 (long a, long b)
+— Runtime Function: long long __divti3 (long long a, long long b)
+

These functions return the quotient of the signed division of a and +b. +

+ +
+— Runtime Function: int __lshrsi3 (int a, int b)
+— Runtime Function: long __lshrdi3 (long a, int b)
+— Runtime Function: long long __lshrti3 (long long a, int b)
+

These functions return the result of logically shifting a right by +b bits. +

+ +
+— Runtime Function: int __modsi3 (int a, int b)
+— Runtime Function: long __moddi3 (long a, long b)
+— Runtime Function: long long __modti3 (long long a, long long b)
+

These functions return the remainder of the signed division of a +and b. +

+ +
+— Runtime Function: int __mulsi3 (int a, int b)
+— Runtime Function: long __muldi3 (long a, long b)
+— Runtime Function: long long __multi3 (long long a, long long b)
+

These functions return the product of a and b. +

+ +
+— Runtime Function: long __negdi2 (long a)
+— Runtime Function: long long __negti2 (long long a)
+

These functions return the negation of a. +

+ +
+— Runtime Function: unsigned int __udivsi3 (unsigned int a, unsigned int b)
+— Runtime Function: unsigned long __udivdi3 (unsigned long a, unsigned long b)
+— Runtime Function: unsigned long long __udivti3 (unsigned long long a, unsigned long long b)
+

These functions return the quotient of the unsigned division of a +and b. +

+ +
+— Runtime Function: unsigned long __udivmoddi3 (unsigned long a, unsigned long b, unsigned long *c)
+— Runtime Function: unsigned long long __udivti3 (unsigned long long a, unsigned long long b, unsigned long long *c)
+

These functions calculate both the quotient and remainder of the unsigned +division of a and b. The return value is the quotient, and +the remainder is placed in variable pointed to by c. +

+ +
+— Runtime Function: unsigned int __umodsi3 (unsigned int a, unsigned int b)
+— Runtime Function: unsigned long __umoddi3 (unsigned long a, unsigned long b)
+— Runtime Function: unsigned long long __umodti3 (unsigned long long a, unsigned long long b)
+

These functions return the remainder of the unsigned division of a +and b. +

+ +

4.1.2 Comparison functions

+ +

The following functions implement integral comparisons. These functions +implement a low-level compare, upon which the higher level comparison +operators (such as less than and greater than or equal to) can be +constructed. The returned values lie in the range zero to two, to allow +the high-level operators to be implemented by testing the returned +result using either signed or unsigned comparison. + +

+— Runtime Function: int __cmpdi2 (long a, long b)
+— Runtime Function: int __cmpti2 (long long a, long long b)
+

These functions perform a signed comparison of a and b. If +a is less than b, they return 0; if a is greater than +b, they return 2; and if a and b are equal they return 1. +

+ +
+— Runtime Function: int __ucmpdi2 (unsigned long a, unsigned long b)
+— Runtime Function: int __ucmpti2 (unsigned long long a, unsigned long long b)
+

These functions perform an unsigned comparison of a and b. +If a is less than b, they return 0; if a is greater than +b, they return 2; and if a and b are equal they return 1. +

+ +

4.1.3 Trapping arithmetic functions

+ +

The following functions implement trapping arithmetic. These functions +call the libc function abort upon signed arithmetic overflow. + +

+— Runtime Function: int __absvsi2 (int a)
+— Runtime Function: long __absvdi2 (long a)
+

These functions return the absolute value of a. +

+ +
+— Runtime Function: int __addvsi3 (int a, int b)
+— Runtime Function: long __addvdi3 (long a, long b)
+

These functions return the sum of a and b; that is +a + b. +

+ +
+— Runtime Function: int __mulvsi3 (int a, int b)
+— Runtime Function: long __mulvdi3 (long a, long b)
+

The functions return the product of a and b; that is +a * b. +

+ +
+— Runtime Function: int __negvsi2 (int a)
+— Runtime Function: long __negvdi2 (long a)
+

These functions return the negation of a; that is -a. +

+ +
+— Runtime Function: int __subvsi3 (int a, int b)
+— Runtime Function: long __subvdi3 (long a, long b)
+

These functions return the difference between b and a; +that is a - b. +

+ +

4.1.4 Bit operations

+ +
+— Runtime Function: int __clzsi2 (int a)
+— Runtime Function: int __clzdi2 (long a)
+— Runtime Function: int __clzti2 (long long a)
+

These functions return the number of leading 0-bits in a, starting +at the most significant bit position. If a is zero, the result is +undefined. +

+ +
+— Runtime Function: int __ctzsi2 (int a)
+— Runtime Function: int __ctzdi2 (long a)
+— Runtime Function: int __ctzti2 (long long a)
+

These functions return the number of trailing 0-bits in a, starting +at the least significant bit position. If a is zero, the result is +undefined. +

+ +
+— Runtime Function: int __ffsdi2 (long a)
+— Runtime Function: int __ffsti2 (long long a)
+

These functions return the index of the least significant 1-bit in a, +or the value zero if a is zero. The least significant bit is index +one. +

+ +
+— Runtime Function: int __paritysi2 (int a)
+— Runtime Function: int __paritydi2 (long a)
+— Runtime Function: int __parityti2 (long long a)
+

These functions return the value zero if the number of bits set in +a is even, and the value one otherwise. +

+ +
+— Runtime Function: int __popcountsi2 (int a)
+— Runtime Function: int __popcountdi2 (long a)
+— Runtime Function: int __popcountti2 (long long a)
+

These functions return the number of bits set in a. +

+ +
+— Runtime Function: int32_t __bswapsi2 (int32_t a)
+— Runtime Function: int64_t __bswapdi2 (int64_t a)
+

These functions return the a byteswapped. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Interface.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Interface.html new file mode 100644 index 0000000..84bc116 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Interface.html @@ -0,0 +1,116 @@ + + +Interface - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Portability, +Up: Top +



+
+ +

3 Interfacing to GCC Output

+ +

+GCC is normally configured to use the same function calling convention +normally in use on the target system. This is done with the +machine-description macros described (see Target Macros). + +

However, returning of structure and union values is done differently on +some target machines. As a result, functions compiled with PCC +returning such types cannot be called from code compiled with GCC, +and vice versa. This does not cause trouble often because few Unix +library routines return structures or unions. + +

GCC code returns structures and unions that are 1, 2, 4 or 8 bytes +long in the same registers used for int or double return +values. (GCC typically allocates variables of such types in +registers also.) Structures and unions of other sizes are returned by +storing them into an address passed by the caller (usually in a +register). The target hook TARGET_STRUCT_VALUE_RTX +tells GCC where to pass this address. + +

By contrast, PCC on most target machines returns structures and unions +of any size by copying the data into an area of static storage, and then +returning the address of that storage as if it were a pointer value. +The caller must copy the data from that memory area to the place where +the value is wanted. This is slower than the method used by GCC, and +fails to be reentrant. + +

On some target machines, such as RISC machines and the 80386, the +standard system convention is to pass to the subroutine the address of +where to return the value. On these machines, GCC has been +configured to be compatible with the standard compiler, when this method +is used. It may not be compatible for structures of 1, 2, 4 or 8 bytes. + +

GCC uses the system's standard convention for passing arguments. On +some machines, the first few arguments are passed in registers; in +others, all are passed on the stack. It would be possible to use +registers for argument passing on any machine, and this would probably +result in a significant speedup. But the result would be complete +incompatibility with code that follows the standard convention. So this +change is practical only if you are switching to GCC as the sole C +compiler for the system. We may implement register argument passing on +certain machines once we have a complete GNU system so that we can +compile the libraries with GCC. + +

On some machines (particularly the SPARC), certain types of arguments +are passed “by invisible reference”. This means that the value is +stored in memory, and the address of the memory location is passed to +the subroutine. + +

If you use longjmp, beware of automatic variables. ISO C says that +automatic variables that are not declared volatile have undefined +values after a longjmp. And this is all GCC promises to do, +because it is very difficult to restore register variables correctly, and +one of GCC's features is that it can put variables in registers without +your asking it to. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Interfaces.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Interfaces.html new file mode 100644 index 0000000..635eb50 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Interfaces.html @@ -0,0 +1,95 @@ + + +Interfaces - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: GIMPLE +



+
+ +

10.2.1 Interfaces

+ +

+The tree representation of a function is stored in +DECL_SAVED_TREE. It is lowered to GIMPLE by a call to +gimplify_function_tree. + +

If a front end wants to include language-specific tree codes in the tree +representation which it provides to the back end, it must provide a +definition of LANG_HOOKS_GIMPLIFY_EXPR which knows how to +convert the front end trees to GIMPLE. Usually such a hook will involve +much of the same code for expanding front end trees to RTL. This function +can return fully lowered GIMPLE, or it can return GENERIC trees and let the +main gimplifier lower them the rest of the way; this is often simpler. +GIMPLE that is not fully lowered is known as “high GIMPLE” and +consists of the IL before the pass pass_lower_cf. High GIMPLE +still contains lexical scopes and nested expressions, while low GIMPLE +exposes all of the implicit jumps for control expressions like +COND_EXPR. + +

The C and C++ front ends currently convert directly from front end +trees to GIMPLE, and hand that off to the back end rather than first +converting to GENERIC. Their gimplifier hooks know about all the +_STMT nodes and how to convert them to GENERIC forms. There +was some work done on a genericization pass which would run first, but +the existence of STMT_EXPR meant that in order to convert all +of the C statements into GENERIC equivalents would involve walking the +entire tree anyway, so it was simpler to lower all the way. This +might change in the future if someone writes an optimization pass +which would work better with higher-level trees, but currently the +optimizers all expect GIMPLE. + +

A front end which wants to use the tree optimizers (and already has +some sort of whole-function tree representation) only needs to provide +a definition of LANG_HOOKS_GIMPLIFY_EXPR, call +gimplify_function_tree to lower to GIMPLE, and then hand off to +tree_rest_of_compilation to compile and output the function. + +

You can tell the compiler to dump a C-like representation of the GIMPLE +form with the flag -fdump-tree-gimple. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Internal-structure.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Internal-structure.html new file mode 100644 index 0000000..57764e6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Internal-structure.html @@ -0,0 +1,66 @@ + + +Internal structure - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Working with declarations, +Up: Declarations +



+
+ +

9.5.2 Internal structure

+ +

DECL nodes are represented internally as a hierarchy of +structures. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Iterators.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Iterators.html new file mode 100644 index 0000000..12260a5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Iterators.html @@ -0,0 +1,66 @@ + + +Iterators - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Constant Definitions, +Up: Machine Desc +



+
+ +

14.22 Iterators

+ +

+Ports often need to define similar patterns for more than one machine +mode or for more than one rtx code. GCC provides some simple iterator +facilities to make this process easier. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Jump-Patterns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Jump-Patterns.html new file mode 100644 index 0000000..fd2297d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Jump-Patterns.html @@ -0,0 +1,163 @@ + + +Jump Patterns - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Dependent Patterns, +Up: Machine Desc +



+
+ +

14.12 Defining Jump Instruction Patterns

+ +

+For most machines, GCC assumes that the machine has a condition code. +A comparison insn sets the condition code, recording the results of both +signed and unsigned comparison of the given operands. A separate branch +insn tests the condition code and branches or not according its value. +The branch insns come in distinct signed and unsigned flavors. Many +common machines, such as the VAX, the 68000 and the 32000, work this +way. + +

Some machines have distinct signed and unsigned compare instructions, and +only one set of conditional branch instructions. The easiest way to handle +these machines is to treat them just like the others until the final stage +where assembly code is written. At this time, when outputting code for the +compare instruction, peek ahead at the following branch using +next_cc0_user (insn). (The variable insn refers to the insn +being output, in the output-writing code in an instruction pattern.) If +the RTL says that is an unsigned branch, output an unsigned compare; +otherwise output a signed compare. When the branch itself is output, you +can treat signed and unsigned branches identically. + +

The reason you can do this is that GCC always generates a pair of +consecutive RTL insns, possibly separated by note insns, one to +set the condition code and one to test it, and keeps the pair inviolate +until the end. + +

To go with this technique, you must define the machine-description macro +NOTICE_UPDATE_CC to do CC_STATUS_INIT; in other words, no +compare instruction is superfluous. + +

Some machines have compare-and-branch instructions and no condition code. +A similar technique works for them. When it is time to “output” a +compare instruction, record its operands in two static variables. When +outputting the branch-on-condition-code instruction that follows, actually +output a compare-and-branch instruction that uses the remembered operands. + +

It also works to define patterns for compare-and-branch instructions. +In optimizing compilation, the pair of compare and branch instructions +will be combined according to these patterns. But this does not happen +if optimization is not requested. So you must use one of the solutions +above in addition to any special patterns you define. + +

In many RISC machines, most instructions do not affect the condition +code and there may not even be a separate condition code register. On +these machines, the restriction that the definition and use of the +condition code be adjacent insns is not necessary and can prevent +important optimizations. For example, on the IBM RS/6000, there is a +delay for taken branches unless the condition code register is set three +instructions earlier than the conditional branch. The instruction +scheduler cannot perform this optimization if it is not permitted to +separate the definition and use of the condition code register. + +

On these machines, do not use (cc0), but instead use a register +to represent the condition code. If there is a specific condition code +register in the machine, use a hard register. If the condition code or +comparison result can be placed in any general register, or if there are +multiple condition registers, use a pseudo register. + +

On some machines, the type of branch instruction generated may depend on +the way the condition code was produced; for example, on the 68k and +SPARC, setting the condition code directly from an add or subtract +instruction does not clear the overflow bit the way that a test +instruction does, so a different branch instruction must be used for +some conditional branches. For machines that use (cc0), the set +and use of the condition code must be adjacent (separated only by +note insns) allowing flags in cc_status to be used. +(See Condition Code.) Also, the comparison and branch insns can be +located from each other by using the functions prev_cc0_setter +and next_cc0_user. + +

However, this is not true on machines that do not use (cc0). On +those machines, no assumptions can be made about the adjacency of the +compare and branch insns and the above methods cannot be used. Instead, +we use the machine mode of the condition code register to record +different formats of the condition code register. + +

Registers used to store the condition code value should have a mode that +is in class MODE_CC. Normally, it will be CCmode. If +additional modes are required (as for the add example mentioned above in +the SPARC), define them in machine-modes.def +(see Condition Code). Also define SELECT_CC_MODE to choose +a mode given an operand of a compare. + +

If it is known during RTL generation that a different mode will be +required (for example, if the machine has separate compare instructions +for signed and unsigned quantities, like most IBM processors), they can +be specified at that time. + +

If the cases that require different modes would be made by instruction +combination, the macro SELECT_CC_MODE determines which machine +mode should be used for the comparison result. The patterns should be +written using that mode. To support the case of the add on the SPARC +discussed above, we have the pattern + +

     (define_insn ""
+       [(set (reg:CC_NOOV 0)
+             (compare:CC_NOOV
+               (plus:SI (match_operand:SI 0 "register_operand" "%r")
+                        (match_operand:SI 1 "arith_operand" "rI"))
+               (const_int 0)))]
+       ""
+       "...")
+
+

The SELECT_CC_MODE macro on the SPARC returns CC_NOOVmode +for comparisons whose argument is a plus. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Jumps.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Jumps.html new file mode 100644 index 0000000..8f580cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Jumps.html @@ -0,0 +1,71 @@ + + +Jumps - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Selection Statements, +Up: Statements +



+
+ +
10.2.4.6 Jumps
+ +

+Other jumps are expressed by either GOTO_EXPR or RETURN_EXPR. + +

The operand of a GOTO_EXPR must be either a label or a variable +containing the address to jump to. + +

The operand of a RETURN_EXPR is either NULL_TREE, +RESULT_DECL, or a MODIFY_EXPR which sets the return value. It +would be nice to move the MODIFY_EXPR into a separate statement, but the +special return semantics in expand_return make that difficult. It may +still happen in the future, perhaps by moving most of that logic into +expand_assignment. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/LCSSA.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/LCSSA.html new file mode 100644 index 0000000..d76d4b1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/LCSSA.html @@ -0,0 +1,95 @@ + + +LCSSA - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+ +

11.4 Loop-closed SSA form

+ +

+Throughout the loop optimizations on tree level, one extra condition is +enforced on the SSA form: No SSA name is used outside of the loop in +that it is defined. The SSA form satisfying this condition is called +“loop-closed SSA form” – LCSSA. To enforce LCSSA, PHI nodes must be +created at the exits of the loops for the SSA names that are used +outside of them. Only the real operands (not virtual SSA names) are +held in LCSSA, in order to save memory. + +

There are various benefits of LCSSA: + +

    +
  • Many optimizations (value range analysis, final value +replacement) are interested in the values that are defined in the loop +and used outside of it, i.e., exactly those for that we create new PHI +nodes. +
  • In induction variable analysis, it is not necessary to specify the +loop in that the analysis should be performed – the scalar evolution +analysis always returns the results with respect to the loop in that the +SSA name is defined. +
  • It makes updating of SSA form during loop transformations simpler. +Without LCSSA, operations like loop unrolling may force creation of PHI +nodes arbitrarily far from the loop, while in LCSSA, the SSA form can be +updated locally. However, since we only keep real operands in LCSSA, we +cannot use this advantage (we could have local updating of real +operands, but it is not much more efficient than to use generic SSA form +updating for it as well; the amount of changes to SSA is the same). +
+ +

However, it also means LCSSA must be updated. This is usually +straightforward, unless you create a new value in loop and use it +outside, or unless you manipulate loop exit edges (functions are +provided to make these manipulations simple). +rewrite_into_loop_closed_ssa is used to rewrite SSA form to +LCSSA, and verify_loop_closed_ssa to check that the invariant of +LCSSA is preserved. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Label-Output.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Label-Output.html new file mode 100644 index 0000000..d977122 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Label-Output.html @@ -0,0 +1,573 @@ + + +Label Output - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Uninitialized Data, +Up: Assembler Format +



+
+ +

15.21.4 Output and Generation of Labels

+ + +

This is about outputting labels. + +

+ +

+— Macro: ASM_OUTPUT_LABEL (stream, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream the assembler definition of a label named name. +Use the expression assemble_name (stream, name) to +output the name itself; before and after that, output the additional +assembler syntax for defining the name, and a newline. A default +definition of this macro is provided which is correct for most systems. +

+ +

+ +

+— Macro: ASM_OUTPUT_INTERNAL_LABEL (stream, name)
+

Identical to ASM_OUTPUT_LABEL, except that name is known +to refer to a compiler-generated label. The default definition uses +assemble_name_raw, which is like assemble_name except +that it is more efficient. +

+ +
+— Macro: SIZE_ASM_OP
+

A C string containing the appropriate assembler directive to specify the +size of a symbol, without any arguments. On systems that use ELF, the +default (in config/elfos.h) is "\t.size\t"; on other +systems, the default is not to define this macro. + +

Define this macro only if it is correct to use the default definitions +of ASM_OUTPUT_SIZE_DIRECTIVE and ASM_OUTPUT_MEASURED_SIZE +for your system. If you need your own custom definitions of those +macros, or if you do not need explicit symbol sizes at all, do not +define this macro. +

+ +
+— Macro: ASM_OUTPUT_SIZE_DIRECTIVE (stream, name, size)
+

A C statement (sans semicolon) to output to the stdio stream +stream a directive telling the assembler that the size of the +symbol name is size. size is a HOST_WIDE_INT. +If you define SIZE_ASM_OP, a default definition of this macro is +provided. +

+ +
+— Macro: ASM_OUTPUT_MEASURED_SIZE (stream, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream a directive telling the assembler to calculate the size of +the symbol name by subtracting its address from the current +address. + +

If you define SIZE_ASM_OP, a default definition of this macro is +provided. The default assumes that the assembler recognizes a special +. symbol as referring to the current address, and can calculate +the difference between this and another symbol. If your assembler does +not recognize . or cannot do calculations with it, you will need +to redefine ASM_OUTPUT_MEASURED_SIZE to use some other technique. +

+ +
+— Macro: TYPE_ASM_OP
+

A C string containing the appropriate assembler directive to specify the +type of a symbol, without any arguments. On systems that use ELF, the +default (in config/elfos.h) is "\t.type\t"; on other +systems, the default is not to define this macro. + +

Define this macro only if it is correct to use the default definition of +ASM_OUTPUT_TYPE_DIRECTIVE for your system. If you need your own +custom definition of this macro, or if you do not need explicit symbol +types at all, do not define this macro. +

+ +
+— Macro: TYPE_OPERAND_FMT
+

A C string which specifies (using printf syntax) the format of +the second operand to TYPE_ASM_OP. On systems that use ELF, the +default (in config/elfos.h) is "@%s"; on other systems, +the default is not to define this macro. + +

Define this macro only if it is correct to use the default definition of +ASM_OUTPUT_TYPE_DIRECTIVE for your system. If you need your own +custom definition of this macro, or if you do not need explicit symbol +types at all, do not define this macro. +

+ +
+— Macro: ASM_OUTPUT_TYPE_DIRECTIVE (stream, type)
+

A C statement (sans semicolon) to output to the stdio stream +stream a directive telling the assembler that the type of the +symbol name is type. type is a C string; currently, +that string is always either "function" or "object", but +you should not count on this. + +

If you define TYPE_ASM_OP and TYPE_OPERAND_FMT, a default +definition of this macro is provided. +

+ +
+— Macro: ASM_DECLARE_FUNCTION_NAME (stream, name, decl)
+

A C statement (sans semicolon) to output to the stdio stream +stream any text necessary for declaring the name name of a +function which is being defined. This macro is responsible for +outputting the label definition (perhaps using +ASM_OUTPUT_LABEL). The argument decl is the +FUNCTION_DECL tree node representing the function. + +

If this macro is not defined, then the function name is defined in the +usual manner as a label (by means of ASM_OUTPUT_LABEL). + +

You may wish to use ASM_OUTPUT_TYPE_DIRECTIVE in the definition +of this macro. +

+ +
+— Macro: ASM_DECLARE_FUNCTION_SIZE (stream, name, decl)
+

A C statement (sans semicolon) to output to the stdio stream +stream any text necessary for declaring the size of a function +which is being defined. The argument name is the name of the +function. The argument decl is the FUNCTION_DECL tree node +representing the function. + +

If this macro is not defined, then the function size is not defined. + +

You may wish to use ASM_OUTPUT_MEASURED_SIZE in the definition +of this macro. +

+ +
+— Macro: ASM_DECLARE_OBJECT_NAME (stream, name, decl)
+

A C statement (sans semicolon) to output to the stdio stream +stream any text necessary for declaring the name name of an +initialized variable which is being defined. This macro must output the +label definition (perhaps using ASM_OUTPUT_LABEL). The argument +decl is the VAR_DECL tree node representing the variable. + +

If this macro is not defined, then the variable name is defined in the +usual manner as a label (by means of ASM_OUTPUT_LABEL). + +

You may wish to use ASM_OUTPUT_TYPE_DIRECTIVE and/or +ASM_OUTPUT_SIZE_DIRECTIVE in the definition of this macro. +

+ +
+— Macro: ASM_DECLARE_CONSTANT_NAME (stream, name, exp, size)
+

A C statement (sans semicolon) to output to the stdio stream +stream any text necessary for declaring the name name of a +constant which is being defined. This macro is responsible for +outputting the label definition (perhaps using +ASM_OUTPUT_LABEL). The argument exp is the +value of the constant, and size is the size of the constant +in bytes. name will be an internal label. + +

If this macro is not defined, then the name is defined in the +usual manner as a label (by means of ASM_OUTPUT_LABEL). + +

You may wish to use ASM_OUTPUT_TYPE_DIRECTIVE in the definition +of this macro. +

+ +
+— Macro: ASM_DECLARE_REGISTER_GLOBAL (stream, decl, regno, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream any text necessary for claiming a register regno +for a global variable decl with name name. + +

If you don't define this macro, that is equivalent to defining it to do +nothing. +

+ +
+— Macro: ASM_FINISH_DECLARE_OBJECT (stream, decl, toplevel, atend)
+

A C statement (sans semicolon) to finish up declaring a variable name +once the compiler has processed its initializer fully and thus has had a +chance to determine the size of an array when controlled by an +initializer. This is used on systems where it's necessary to declare +something about the size of the object. + +

If you don't define this macro, that is equivalent to defining it to do +nothing. + +

You may wish to use ASM_OUTPUT_SIZE_DIRECTIVE and/or +ASM_OUTPUT_MEASURED_SIZE in the definition of this macro. +

+ +
+— Target Hook: void TARGET_ASM_GLOBALIZE_LABEL (FILE *stream, const char *name)
+

This target hook is a function to output to the stdio stream +stream some commands that will make the label name global; +that is, available for reference from other files. + +

The default implementation relies on a proper definition of +GLOBAL_ASM_OP. +

+ +
+— Target Hook: void TARGET_ASM_GLOBALIZE_DECL_NAME (FILE *stream, tree decl)
+

This target hook is a function to output to the stdio stream +stream some commands that will make the name associated with decl +global; that is, available for reference from other files. + +

The default implementation uses the TARGET_ASM_GLOBALIZE_LABEL target hook. +

+ +
+— Macro: ASM_WEAKEN_LABEL (stream, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream some commands that will make the label name weak; +that is, available for reference from other files but only used if +no other definition is available. Use the expression +assemble_name (stream, name) to output the name +itself; before and after that, output the additional assembler syntax +for making that name weak, and a newline. + +

If you don't define this macro or ASM_WEAKEN_DECL, GCC will not +support weak symbols and you should not define the SUPPORTS_WEAK +macro. +

+ +
+— Macro: ASM_WEAKEN_DECL (stream, decl, name, value)
+

Combines (and replaces) the function of ASM_WEAKEN_LABEL and +ASM_OUTPUT_WEAK_ALIAS, allowing access to the associated function +or variable decl. If value is not NULL, this C statement +should output to the stdio stream stream assembler code which +defines (equates) the weak symbol name to have the value +value. If value is NULL, it should output commands +to make name weak. +

+ +
+— Macro: ASM_OUTPUT_WEAKREF (stream, decl, name, value)
+

Outputs a directive that enables name to be used to refer to +symbol value with weak-symbol semantics. decl is the +declaration of name. +

+ +
+— Macro: SUPPORTS_WEAK
+

A C expression which evaluates to true if the target supports weak symbols. + +

If you don't define this macro, defaults.h provides a default +definition. If either ASM_WEAKEN_LABEL or ASM_WEAKEN_DECL +is defined, the default definition is 1; otherwise, it is +0. Define this macro if you want to control weak symbol support +with a compiler flag such as -melf. +

+ +
+— Macro: MAKE_DECL_ONE_ONLY (decl)
+

A C statement (sans semicolon) to mark decl to be emitted as a +public symbol such that extra copies in multiple translation units will +be discarded by the linker. Define this macro if your object file +format provides support for this concept, such as the COMDAT +section flags in the Microsoft Windows PE/COFF format, and this support +requires changes to decl, such as putting it in a separate section. +

+ +
+— Macro: SUPPORTS_ONE_ONLY
+

A C expression which evaluates to true if the target supports one-only +semantics. + +

If you don't define this macro, varasm.c provides a default +definition. If MAKE_DECL_ONE_ONLY is defined, the default +definition is 1; otherwise, it is 0. Define this macro if +you want to control one-only symbol support with a compiler flag, or if +setting the DECL_ONE_ONLY flag is enough to mark a declaration to +be emitted as one-only. +

+ +
+— Target Hook: void TARGET_ASM_ASSEMBLE_VISIBILITY (tree decl, const char *visibility)
+

This target hook is a function to output to asm_out_file some +commands that will make the symbol(s) associated with decl have +hidden, protected or internal visibility as specified by visibility. +

+ +
+— Macro: TARGET_WEAK_NOT_IN_ARCHIVE_TOC
+

A C expression that evaluates to true if the target's linker expects +that weak symbols do not appear in a static archive's table of contents. +The default is 0. + +

Leaving weak symbols out of an archive's table of contents means that, +if a symbol will only have a definition in one translation unit and +will have undefined references from other translation units, that +symbol should not be weak. Defining this macro to be nonzero will +thus have the effect that certain symbols that would normally be weak +(explicit template instantiations, and vtables for polymorphic classes +with noninline key methods) will instead be nonweak. + +

The C++ ABI requires this macro to be zero. Define this macro for +targets where full C++ ABI compliance is impossible and where linker +restrictions require weak symbols to be left out of a static archive's +table of contents. +

+ +
+— Macro: ASM_OUTPUT_EXTERNAL (stream, decl, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream any text necessary for declaring the name of an external +symbol named name which is referenced in this compilation but +not defined. The value of decl is the tree node for the +declaration. + +

This macro need not be defined if it does not need to output anything. +The GNU assembler and most Unix assemblers don't require anything. +

+ +
+— Target Hook: void TARGET_ASM_EXTERNAL_LIBCALL (rtx symref)
+

This target hook is a function to output to asm_out_file an assembler +pseudo-op to declare a library function name external. The name of the +library function is given by symref, which is a symbol_ref. +

+ +
+— Target Hook: void TARGET_ASM_MARK_DECL_PRESERVED (tree decl)
+

This target hook is a function to output to asm_out_file an assembler +directive to annotate used symbol. Darwin target use .no_dead_code_strip +directive. +

+ +
+— Macro: ASM_OUTPUT_LABELREF (stream, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream a reference in assembler syntax to a label named +name. This should add _ to the front of the name, if that +is customary on your operating system, as it is in most Berkeley Unix +systems. This macro is used in assemble_name. +

+ +
+— Macro: ASM_OUTPUT_SYMBOL_REF (stream, sym)
+

A C statement (sans semicolon) to output a reference to +SYMBOL_REF sym. If not defined, assemble_name +will be used to output the name of the symbol. This macro may be used +to modify the way a symbol is referenced depending on information +encoded by TARGET_ENCODE_SECTION_INFO. +

+ +
+— Macro: ASM_OUTPUT_LABEL_REF (stream, buf)
+

A C statement (sans semicolon) to output a reference to buf, the +result of ASM_GENERATE_INTERNAL_LABEL. If not defined, +assemble_name will be used to output the name of the symbol. +This macro is not used by output_asm_label, or the %l +specifier that calls it; the intention is that this macro should be set +when it is necessary to output a label differently when its address is +being taken. +

+ +
+— Target Hook: void TARGET_ASM_INTERNAL_LABEL (FILE *stream, const char *prefix, unsigned long labelno)
+

A function to output to the stdio stream stream a label whose +name is made from the string prefix and the number labelno. + +

It is absolutely essential that these labels be distinct from the labels +used for user-level functions and variables. Otherwise, certain programs +will have name conflicts with internal labels. + +

It is desirable to exclude internal labels from the symbol table of the +object file. Most assemblers have a naming convention for labels that +should be excluded; on many systems, the letter L at the +beginning of a label has this effect. You should find out what +convention your system uses, and follow it. + +

The default version of this function utilizes ASM_GENERATE_INTERNAL_LABEL. +

+ +
+— Macro: ASM_OUTPUT_DEBUG_LABEL (stream, prefix, num)
+

A C statement to output to the stdio stream stream a debug info +label whose name is made from the string prefix and the number +num. This is useful for VLIW targets, where debug info labels +may need to be treated differently than branch target labels. On some +systems, branch target labels must be at the beginning of instruction +bundles, but debug info labels can occur in the middle of instruction +bundles. + +

If this macro is not defined, then (*targetm.asm_out.internal_label) will be +used. +

+ +
+— Macro: ASM_GENERATE_INTERNAL_LABEL (string, prefix, num)
+

A C statement to store into the string string a label whose name +is made from the string prefix and the number num. + +

This string, when output subsequently by assemble_name, should +produce the output that (*targetm.asm_out.internal_label) would produce +with the same prefix and num. + +

If the string begins with *, then assemble_name will +output the rest of the string unchanged. It is often convenient for +ASM_GENERATE_INTERNAL_LABEL to use * in this way. If the +string doesn't start with *, then ASM_OUTPUT_LABELREF gets +to output the string, and may change it. (Of course, +ASM_OUTPUT_LABELREF is also part of your machine description, so +you should know what it does on your machine.) +

+ +
+— Macro: ASM_FORMAT_PRIVATE_NAME (outvar, name, number)
+

A C expression to assign to outvar (which is a variable of type +char *) a newly allocated string made from the string +name and the number number, with some suitable punctuation +added. Use alloca to get space for the string. + +

The string will be used as an argument to ASM_OUTPUT_LABELREF to +produce an assembler label for an internal static variable whose name is +name. Therefore, the string must be such as to result in valid +assembler code. The argument number is different each time this +macro is executed; it prevents conflicts between similarly-named +internal static variables in different scopes. + +

Ideally this string should not be a valid C identifier, to prevent any +conflict with the user's own symbols. Most assemblers allow periods +or percent signs in assembler symbols; putting at least one of these +between the name and the number will suffice. + +

If this macro is not defined, a default definition will be provided +which is correct for most systems. +

+ +
+— Macro: ASM_OUTPUT_DEF (stream, name, value)
+

A C statement to output to the stdio stream stream assembler code +which defines (equates) the symbol name to have the value value. + +

If SET_ASM_OP is defined, a default definition is provided which is +correct for most systems. +

+ +
+— Macro: ASM_OUTPUT_DEF_FROM_DECLS (stream, decl_of_name, decl_of_value)
+

A C statement to output to the stdio stream stream assembler code +which defines (equates) the symbol whose tree node is decl_of_name +to have the value of the tree node decl_of_value. This macro will +be used in preference to ASM_OUTPUT_DEF if it is defined and if +the tree nodes are available. + +

If SET_ASM_OP is defined, a default definition is provided which is +correct for most systems. +

+ +
+— Macro: TARGET_DEFERRED_OUTPUT_DEFS (decl_of_name, decl_of_value)
+

A C statement that evaluates to true if the assembler code which defines +(equates) the symbol whose tree node is decl_of_name to have the value +of the tree node decl_of_value should be emitted near the end of the +current compilation unit. The default is to not defer output of defines. +This macro affects defines output by ASM_OUTPUT_DEF and +ASM_OUTPUT_DEF_FROM_DECLS. +

+ +
+— Macro: ASM_OUTPUT_WEAK_ALIAS (stream, name, value)
+

A C statement to output to the stdio stream stream assembler code +which defines (equates) the weak symbol name to have the value +value. If value is NULL, it defines name as +an undefined weak symbol. + +

Define this macro if the target only supports weak aliases; define +ASM_OUTPUT_DEF instead if possible. +

+ +
+— Macro: OBJC_GEN_METHOD_LABEL (buf, is_inst, class_name, cat_name, sel_name)
+

Define this macro to override the default assembler names used for +Objective-C methods. + +

The default name is a unique method number followed by the name of the +class (e.g. _1_Foo). For methods in categories, the name of +the category is also included in the assembler name (e.g. +_1_Foo_Bar). + +

These names are safe on most systems, but make debugging difficult since +the method's selector is not present in the name. Therefore, particular +systems define other ways of computing names. + +

buf is an expression of type char * which gives you a +buffer in which to store the name; its length is as long as +class_name, cat_name and sel_name put together, plus +50 characters extra. + +

The argument is_inst specifies whether the method is an instance +method or a class method; class_name is the name of the class; +cat_name is the name of the category (or NULL if the method is not +in a category); and sel_name is the name of the selector. + +

On systems where the assembler can handle quoted names, you can use this +macro to provide more human-readable names. +

+ +
+— Macro: ASM_DECLARE_CLASS_REFERENCE (stream, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream commands to declare that the label name is an +Objective-C class reference. This is only needed for targets whose +linkers have special support for NeXT-style runtimes. +

+ +
+— Macro: ASM_DECLARE_UNRESOLVED_REFERENCE (stream, name)
+

A C statement (sans semicolon) to output to the stdio stream +stream commands to declare that the label name is an +unresolved Objective-C class reference. This is only needed for targets +whose linkers have special support for NeXT-style runtimes. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Lambda.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Lambda.html new file mode 100644 index 0000000..f396124 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Lambda.html @@ -0,0 +1,86 @@ + + +Lambda - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + + +

11.9 Linear loop transformations framework

+ +

+Lambda is a framework that allows transformations of loops using +non-singular matrix based transformations of the iteration space and +loop bounds. This allows compositions of skewing, scaling, interchange, +and reversal transformations. These transformations are often used to +improve cache behavior or remove inner loop dependencies to allow +parallelization and vectorization to take place. + +

To perform these transformations, Lambda requires that the loopnest be +converted into a internal form that can be matrix transformed easily. +To do this conversion, the function +gcc_loopnest_to_lambda_loopnest is provided. If the loop cannot +be transformed using lambda, this function will return NULL. + +

Once a lambda_loopnest is obtained from the conversion function, +it can be transformed by using lambda_loopnest_transform, which +takes a transformation matrix to apply. Note that it is up to the +caller to verify that the transformation matrix is legal to apply to the +loop (dependence respecting, etc). Lambda simply applies whatever +matrix it is told to provide. It can be extended to make legal matrices +out of any non-singular matrix, but this is not currently implemented. +Legality of a matrix for a given loopnest can be verified using +lambda_transform_legal_p. + +

Given a transformed loopnest, conversion back into gcc IR is done by +lambda_loopnest_to_gcc_loopnest. This function will modify the +loops so that they match the transformed loopnest. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Languages.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Languages.html new file mode 100644 index 0000000..0722096 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Languages.html @@ -0,0 +1,91 @@ + + +Languages - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: Libgcc, +Up: Top +



+
+ +

5 Language Front Ends in GCC

+ +

The interface to front ends for languages in GCC, and in particular +the tree structure (see Trees), was initially designed for +C, and many aspects of it are still somewhat biased towards C and +C-like languages. It is, however, reasonably well suited to other +procedural languages, and front ends for many such languages have been +written for GCC. + +

Writing a compiler as a front end for GCC, rather than compiling +directly to assembler or generating C code which is then compiled by +GCC, has several advantages: + +

    +
  • GCC front ends benefit from the support for many different +target machines already present in GCC. +
  • GCC front ends benefit from all the optimizations in GCC. Some +of these, such as alias analysis, may work better when GCC is +compiling directly from source code then when it is compiling from +generated C code. +
  • Better debugging information is generated when compiling +directly from source code than when going via intermediate generated C +code. +
+ +

Because of the advantages of writing a compiler as a GCC front end, +GCC front ends have also been created for languages very different +from those for which GCC was designed, such as the declarative +logic/functional language Mercury. For these reasons, it may also be +useful to implement compilers created for specialized purposes (for +example, as part of a research project) as GCC front ends. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Leaf-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Leaf-Functions.html new file mode 100644 index 0000000..a379217 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Leaf-Functions.html @@ -0,0 +1,120 @@ + + +Leaf Functions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Values in Registers, +Up: Registers +



+
+ +

15.7.4 Handling Leaf Functions

+ +

On some machines, a leaf function (i.e., one which makes no calls) can run +more efficiently if it does not make its own register window. Often this +means it is required to receive its arguments in the registers where they +are passed by the caller, instead of the registers where they would +normally arrive. + +

The special treatment for leaf functions generally applies only when +other conditions are met; for example, often they may use only those +registers for its own variables and temporaries. We use the term “leaf +function” to mean a function that is suitable for this special +handling, so that functions with no calls are not necessarily “leaf +functions”. + +

GCC assigns register numbers before it knows whether the function is +suitable for leaf function treatment. So it needs to renumber the +registers in order to output a leaf function. The following macros +accomplish this. + +

+— Macro: LEAF_REGISTERS
+

Name of a char vector, indexed by hard register number, which +contains 1 for a register that is allowable in a candidate for leaf +function treatment. + +

If leaf function treatment involves renumbering the registers, then the +registers marked here should be the ones before renumbering—those that +GCC would ordinarily allocate. The registers which will actually be +used in the assembler code, after renumbering, should not be marked with 1 +in this vector. + +

Define this macro only if the target machine offers a way to optimize +the treatment of leaf functions. +

+ +
+— Macro: LEAF_REG_REMAP (regno)
+

A C expression whose value is the register number to which regno +should be renumbered, when a function is treated as a leaf function. + +

If regno is a register number which should not appear in a leaf +function before renumbering, then the expression should yield −1, which +will cause the compiler to abort. + +

Define this macro only if the target machine offers a way to optimize the +treatment of leaf functions, and registers need to be renumbered to do +this. +

+ +

TARGET_ASM_FUNCTION_PROLOGUE and +TARGET_ASM_FUNCTION_EPILOGUE must usually treat leaf functions +specially. They can test the C variable current_function_is_leaf +which is nonzero for leaf functions. current_function_is_leaf is +set prior to local register allocation and is valid for the remaining +compiler passes. They can also test the C variable +current_function_uses_only_leaf_regs which is nonzero for leaf +functions which only use leaf registers. +current_function_uses_only_leaf_regs is valid after all passes +that modify the instructions have been run and is only useful if +LEAF_REGISTERS is defined. + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Libgcc.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Libgcc.html new file mode 100644 index 0000000..74a7466 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Libgcc.html @@ -0,0 +1,95 @@ + + +Libgcc - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: Interface, +Up: Top +



+
+ +

4 The GCC low-level runtime library

+ +

GCC provides a low-level runtime library, libgcc.a or +libgcc_s.so.1 on some platforms. GCC generates calls to +routines in this library automatically, whenever it needs to perform +some operation that is too complicated to emit inline code for. + +

Most of the routines in libgcc handle arithmetic operations +that the target processor cannot perform directly. This includes +integer multiply and divide on some machines, and all floating-point +and fixed-point operations on other machines. libgcc also includes +routines for exception handling, and a handful of miscellaneous operations. + +

Some of these routines can be defined in mostly machine-independent C. +Others must be hand-written in assembly language for each processor +that needs them. + +

GCC will also generate calls to C library routines, such as +memcpy and memset, in some cases. The set of routines +that GCC may possibly use is documented in Other Builtins (Using the GNU Compiler Collection (GCC)). + +

These routines take arguments and return values of a specific machine +mode, not a specific C type. See Machine Modes, for an explanation +of this concept. For illustrative purposes, in this chapter the +floating point type float is assumed to correspond to SFmode; +double to DFmode; and long double to both +TFmode and XFmode. Similarly, the integer types int +and unsigned int correspond to SImode; long and +unsigned long to DImode; and long long and +unsigned long long to TImode. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Library-Calls.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Library-Calls.html new file mode 100644 index 0000000..cbdec97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Library-Calls.html @@ -0,0 +1,187 @@ + + +Library Calls - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Trampolines, +Up: Target Macros +



+
+ +

15.13 Implicit Calls to Library Routines

+ +

+ +Here is an explanation of implicit calls to library routines. + +

+— Macro: DECLARE_LIBRARY_RENAMES
+

This macro, if defined, should expand to a piece of C code that will get +expanded when compiling functions for libgcc.a. It can be used to +provide alternate names for GCC's internal library functions if there +are ABI-mandated names that the compiler should provide. +

+ +

+ +

+— Target Hook: void TARGET_INIT_LIBFUNCS (void)
+

This hook should declare additional library routines or rename +existing ones, using the functions set_optab_libfunc and +init_one_libfunc defined in optabs.c. +init_optabs calls this macro after initializing all the normal +library routines. + +

The default is to do nothing. Most ports don't need to define this hook. +

+ +
+— Macro: FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, comparison)
+

This macro should return true if the library routine that +implements the floating point comparison operator comparison in +mode mode will return a boolean, and false if it will +return a tristate. + +

GCC's own floating point libraries return tristates from the +comparison operators, so the default returns false always. Most ports +don't need to define this macro. +

+ +
+— Macro: TARGET_LIB_INT_CMP_BIASED
+

This macro should evaluate to true if the integer comparison +functions (like __cmpdi2) return 0 to indicate that the first +operand is smaller than the second, 1 to indicate that they are equal, +and 2 to indicate that the first operand is greater than the second. +If this macro evaluates to false the comparison functions return +−1, 0, and 1 instead of 0, 1, and 2. If the target uses the routines +in libgcc.a, you do not need to define this macro. +

+ +

+ +

+— Macro: US_SOFTWARE_GOFAST
+

Define this macro if your system C library uses the US Software GOFAST +library to provide floating point emulation. + +

In addition to defining this macro, your architecture must set +TARGET_INIT_LIBFUNCS to gofast_maybe_init_libfuncs, or +else call that function from its version of that hook. It is defined +in config/gofast.h, which must be included by your +architecture's cpu.c file. See sparc/sparc.c for +an example. + +

If this macro is defined, the +TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL target hook must return +false for SFmode and DFmode comparisons. +

+ +

+ +

+— Macro: TARGET_EDOM
+

The value of EDOM on the target machine, as a C integer constant +expression. If you don't define this macro, GCC does not attempt to +deposit the value of EDOM into errno directly. Look in +/usr/include/errno.h to find the value of EDOM on your +system. + +

If you do not define TARGET_EDOM, then compiled code reports +domain errors by calling the library function and letting it report the +error. If mathematical functions on your system use matherr when +there is an error, then you should leave TARGET_EDOM undefined so +that matherr is used normally. +

+ +

+ +

+— Macro: GEN_ERRNO_RTX
+

Define this macro as a C expression to create an rtl expression that +refers to the global “variable” errno. (On certain systems, +errno may not actually be a variable.) If you don't define this +macro, a reasonable default is used. +

+ +

+ +

+— Macro: TARGET_C99_FUNCTIONS
+

When this macro is nonzero, GCC will implicitly optimize sin calls into +sinf and similarly for other functions defined by C99 standard. The +default is nonzero that should be proper value for most modern systems, however +number of existing systems lacks support for these functions in the runtime so +they needs this macro to be redefined to 0. +

+ +

+ +

+— Macro: TARGET_HAS_SINCOS
+

When this macro is nonzero, GCC will implicitly optimize calls to sin +and cos with the same argument to a call to sincos. The +default is zero. The target has to provide the following functions: +

          void sincos(double x, double *sin, double *cos);
+          void sincosf(float x, float *sin, float *cos);
+          void sincosl(long double x, long double *sin, long double *cos);
+     
+
+ +
+— Macro: NEXT_OBJC_RUNTIME
+

Define this macro to generate code for Objective-C message sending using +the calling convention of the NeXT system. This calling convention +involves passing the object, the selector and the method arguments all +at once to the method-lookup library function. + +

The default calling convention passes just the object and the selector +to the lookup function, which returns a pointer to the method. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Library-Files.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Library-Files.html new file mode 100644 index 0000000..d0244b8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Library-Files.html @@ -0,0 +1,64 @@ + + +Library Files - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Makefile, +Up: gcc Directory +



+
+ +

6.3.5 Library Source Files and Headers under the gcc Directory

+ +

FIXME: list here, with explanation, all the C source files and headers +under the gcc directory that aren't built into the GCC +executable but rather are part of runtime libraries and object files, +such as crtstuff.c and unwind-dw2.c. See Headers Installed by GCC, for more information about the +ginclude directory. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Liveness-information.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Liveness-information.html new file mode 100644 index 0000000..42103ec --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Liveness-information.html @@ -0,0 +1,95 @@ + + +Liveness information - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Maintaining the CFG, +Up: Control Flow +



+
+ +

13.5 Liveness information

+ +

Liveness information is useful to determine whether some register is +“live” at given point of program, i.e. that it contains a value that +may be used at a later point in the program. This information is +used, for instance, during register allocation, as the pseudo +registers only need to be assigned to a unique hard register or to a +stack slot if they are live. The hard registers and stack slots may +be freely reused for other values when a register is dead. + +

Liveness information is available in the back end starting with +pass_df_initialize and ending with pass_df_finish. Three +flavors of live analysis are available: With LR, it is possible +to determine at any point P in the function if the register may be +used on some path from P to the end of the function. With +UR, it is possible to determine if there is a path from the +beginning of the function to P that defines the variable. +LIVE is the intersection of the LR and UR and a +variable is live at P if there is both an assignment that reaches +it from the beginning of the function and a uses that can be reached on +some path from P to the end of the function. + +

In general LIVE is the most useful of the three. The macros +DF_[LR,UR,LIVE]_[IN,OUT] can be used to access this information. +The macros take a basic block number and return a bitmap that is indexed +by the register number. This information is only guaranteed to be up to +date after calls are made to df_analyze. See the file +df-core.c for details on using the dataflow. + +

The liveness information is stored partly in the RTL instruction stream +and partly in the flow graph. Local information is stored in the +instruction stream: Each instruction may contain REG_DEAD notes +representing that the value of a given register is no longer needed, or +REG_UNUSED notes representing that the value computed by the +instruction is never used. The second is useful for instructions +computing multiple values at once. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Logical-Operators.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Logical-Operators.html new file mode 100644 index 0000000..f633012 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Logical-Operators.html @@ -0,0 +1,69 @@ + + +Logical Operators - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+ +
10.2.3.4 Logical Operators
+ +

+Except when they appear in the condition operand of a COND_EXPR, +logical `and' and `or' operators are simplified as follows: +a = b && c becomes + +

       T1 = (bool)b;
+       if (T1)
+         T1 = (bool)c;
+       a = T1;
+
+

Note that T1 in this example cannot be an expression temporary, +because it has two different assignments. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-Analysis-and-Representation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-Analysis-and-Representation.html new file mode 100644 index 0000000..b99a85f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-Analysis-and-Representation.html @@ -0,0 +1,76 @@ + + +Loop Analysis and Representation - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: Tree SSA, +Up: Top +



+
+ +

11 Analysis and Representation of Loops

+ +

GCC provides extensive infrastructure for work with natural loops, i.e., +strongly connected components of CFG with only one entry block. This +chapter describes representation of loops in GCC, both on GIMPLE and in +RTL, as well as the interfaces to loop-related analyses (induction +variable analysis and number of iterations analysis). + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-manipulation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-manipulation.html new file mode 100644 index 0000000..8cc06d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-manipulation.html @@ -0,0 +1,106 @@ + + +Loop manipulation - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Loop querying, +Up: Loop Analysis and Representation +



+
+ +

11.3 Loop manipulation

+ +

+The loops tree can be manipulated using the following functions: + +

    +
  • flow_loop_tree_node_add: Adds a node to the tree. +
  • flow_loop_tree_node_remove: Removes a node from the tree. +
  • add_bb_to_loop: Adds a basic block to a loop. +
  • remove_bb_from_loops: Removes a basic block from loops. +
+ +

Most low-level CFG functions update loops automatically. The following +functions handle some more complicated cases of CFG manipulations: + +

    +
  • remove_path: Removes an edge and all blocks it dominates. +
  • split_loop_exit_edge: Splits exit edge of the loop, +ensuring that PHI node arguments remain in the loop (this ensures that +loop-closed SSA form is preserved). Only useful on GIMPLE. +
+ +

Finally, there are some higher-level loop transformations implemented. +While some of them are written so that they should work on non-innermost +loops, they are mostly untested in that case, and at the moment, they +are only reliable for the innermost loops: + +

    +
  • create_iv: Creates a new induction variable. Only works on +GIMPLE. standard_iv_increment_position can be used to find a +suitable place for the iv increment. +
  • duplicate_loop_to_header_edge, +tree_duplicate_loop_to_header_edge: These functions (on RTL and +on GIMPLE) duplicate the body of the loop prescribed number of times on +one of the edges entering loop header, thus performing either loop +unrolling or loop peeling. can_duplicate_loop_p +(can_unroll_loop_p on GIMPLE) must be true for the duplicated +loop. +
  • loop_version, tree_ssa_loop_version: These function +create a copy of a loop, and a branch before them that selects one of +them depending on the prescribed condition. This is useful for +optimizations that need to verify some assumptions in runtime (one of +the copies of the loop is usually left unchanged, while the other one is +transformed in some way). +
  • tree_unroll_loop: Unrolls the loop, including peeling the +extra iterations to make the number of iterations divisible by unroll +factor, updating the exit condition, and removing the exits that now +cannot be taken. Works only on GIMPLE. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-querying.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-querying.html new file mode 100644 index 0000000..9a9b98a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-querying.html @@ -0,0 +1,116 @@ + + +Loop querying - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + + +

11.2 Loop querying

+ +

+The functions to query the information about loops are declared in +cfgloop.h. Some of the information can be taken directly from +the structures. loop_father field of each basic block contains +the innermost loop to that the block belongs. The most useful fields of +loop structure (that are kept up-to-date at all times) are: + +

    +
  • header, latch: Header and latch basic blocks of the +loop. +
  • num_nodes: Number of basic blocks in the loop (including +the basic blocks of the sub-loops). +
  • depth: The depth of the loop in the loops tree, i.e., the +number of super-loops of the loop. +
  • outer, inner, next: The super-loop, the first +sub-loop, and the sibling of the loop in the loops tree. +
+ +

There are other fields in the loop structures, many of them used only by +some of the passes, or not updated during CFG changes; in general, they +should not be accessed directly. + +

The most important functions to query loop structures are: + +

    +
  • flow_loops_dump: Dumps the information about loops to a +file. +
  • verify_loop_structure: Checks consistency of the loop +structures. +
  • loop_latch_edge: Returns the latch edge of a loop. +
  • loop_preheader_edge: If loops have preheaders, returns +the preheader edge of a loop. +
  • flow_loop_nested_p: Tests whether loop is a sub-loop of +another loop. +
  • flow_bb_inside_loop_p: Tests whether a basic block belongs +to a loop (including its sub-loops). +
  • find_common_loop: Finds the common super-loop of two loops. +
  • superloop_at_depth: Returns the super-loop of a loop with +the given depth. +
  • tree_num_loop_insns, num_loop_insns: Estimates the +number of insns in the loop, on GIMPLE and on RTL. +
  • loop_exit_edge_p: Tests whether edge is an exit from a +loop. +
  • mark_loop_exit_edges: Marks all exit edges of all loops +with EDGE_LOOP_EXIT flag. +
  • get_loop_body, get_loop_body_in_dom_order, +get_loop_body_in_bfs_order: Enumerates the basic blocks in the +loop in depth-first search order in reversed CFG, ordered by dominance +relation, and breath-first search order, respectively. +
  • single_exit: Returns the single exit edge of the loop, or +NULL if the loop has more than one exit. You can only use this +function if LOOPS_HAVE_MARKED_SINGLE_EXITS property is used. +
  • get_loop_exit_edges: Enumerates the exit edges of a loop. +
  • just_once_each_iteration_p: Returns true if the basic block +is executed exactly once during each iteration of a loop (that is, it +does not belong to a sub-loop, and it dominates the latch of the loop). +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-representation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-representation.html new file mode 100644 index 0000000..aaeaf45 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loop-representation.html @@ -0,0 +1,172 @@ + + +Loop representation - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + +

11.1 Loop representation

+ +

+This chapter describes the representation of loops in GCC, and functions +that can be used to build, modify and analyze this representation. Most +of the interfaces and data structures are declared in cfgloop.h. +At the moment, loop structures are analyzed and this information is +updated only by the optimization passes that deal with loops, but some +efforts are being made to make it available throughout most of the +optimization passes. + +

In general, a natural loop has one entry block (header) and possibly +several back edges (latches) leading to the header from the inside of +the loop. Loops with several latches may appear if several loops share +a single header, or if there is a branching in the middle of the loop. +The representation of loops in GCC however allows only loops with a +single latch. During loop analysis, headers of such loops are split and +forwarder blocks are created in order to disambiguate their structures. +Heuristic based on profile information and structure of the induction +variables in the loops is used to determine whether the latches +correspond to sub-loops or to control flow in a single loop. This means +that the analysis sometimes changes the CFG, and if you run it in the +middle of an optimization pass, you must be able to deal with the new +blocks. You may avoid CFG changes by passing +LOOPS_MAY_HAVE_MULTIPLE_LATCHES flag to the loop discovery, +note however that most other loop manipulation functions will not work +correctly for loops with multiple latch edges (the functions that only +query membership of blocks to loops and subloop relationships, or +enumerate and test loop exits, can be expected to work). + +

Body of the loop is the set of blocks that are dominated by its header, +and reachable from its latch against the direction of edges in CFG. The +loops are organized in a containment hierarchy (tree) such that all the +loops immediately contained inside loop L are the children of L in the +tree. This tree is represented by the struct loops structure. +The root of this tree is a fake loop that contains all blocks in the +function. Each of the loops is represented in a struct loop +structure. Each loop is assigned an index (num field of the +struct loop structure), and the pointer to the loop is stored in +the corresponding field of the larray vector in the loops +structure. The indices do not have to be continuous, there may be +empty (NULL) entries in the larray created by deleting +loops. Also, there is no guarantee on the relative order of a loop +and its subloops in the numbering. The index of a loop never changes. + +

The entries of the larray field should not be accessed directly. +The function get_loop returns the loop description for a loop with +the given index. number_of_loops function returns number of +loops in the function. To traverse all loops, use FOR_EACH_LOOP +macro. The flags argument of the macro is used to determine +the direction of traversal and the set of loops visited. Each loop is +guaranteed to be visited exactly once, regardless of the changes to the +loop tree, and the loops may be removed during the traversal. The newly +created loops are never traversed, if they need to be visited, this +must be done separately after their creation. The FOR_EACH_LOOP +macro allocates temporary variables. If the FOR_EACH_LOOP loop +were ended using break or goto, they would not be released; +FOR_EACH_LOOP_BREAK macro must be used instead. + +

Each basic block contains the reference to the innermost loop it belongs +to (loop_father). For this reason, it is only possible to have +one struct loops structure initialized at the same time for each +CFG. The global variable current_loops contains the +struct loops structure. Many of the loop manipulation functions +assume that dominance information is up-to-date. + +

The loops are analyzed through loop_optimizer_init function. The +argument of this function is a set of flags represented in an integer +bitmask. These flags specify what other properties of the loop +structures should be calculated/enforced and preserved later: + +

    +
  • LOOPS_MAY_HAVE_MULTIPLE_LATCHES: If this flag is set, no +changes to CFG will be performed in the loop analysis, in particular, +loops with multiple latch edges will not be disambiguated. If a loop +has multiple latches, its latch block is set to NULL. Most of +the loop manipulation functions will not work for loops in this shape. +No other flags that require CFG changes can be passed to +loop_optimizer_init. +
  • LOOPS_HAVE_PREHEADERS: Forwarder blocks are created in such +a way that each loop has only one entry edge, and additionally, the +source block of this entry edge has only one successor. This creates a +natural place where the code can be moved out of the loop, and ensures +that the entry edge of the loop leads from its immediate super-loop. +
  • LOOPS_HAVE_SIMPLE_LATCHES: Forwarder blocks are created to +force the latch block of each loop to have only one successor. This +ensures that the latch of the loop does not belong to any of its +sub-loops, and makes manipulation with the loops significantly easier. +Most of the loop manipulation functions assume that the loops are in +this shape. Note that with this flag, the “normal” loop without any +control flow inside and with one exit consists of two basic blocks. +
  • LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS: Basic blocks and +edges in the strongly connected components that are not natural loops +(have more than one entry block) are marked with +BB_IRREDUCIBLE_LOOP and EDGE_IRREDUCIBLE_LOOP flags. The +flag is not set for blocks and edges that belong to natural loops that +are in such an irreducible region (but it is set for the entry and exit +edges of such a loop, if they lead to/from this region). +
  • LOOPS_HAVE_RECORDED_EXITS: The lists of exits are recorded +and updated for each loop. This makes some functions (e.g., +get_loop_exit_edges) more efficient. Some functions (e.g., +single_exit) can be used only if the lists of exits are +recorded. +
+ +

These properties may also be computed/enforced later, using functions +create_preheaders, force_single_succ_latches, +mark_irreducible_loops and record_loop_exits. + +

The memory occupied by the loops structures should be freed with +loop_optimizer_finalize function. + +

The CFG manipulation functions in general do not update loop structures. +Specialized versions that additionally do so are provided for the most +common tasks. On GIMPLE, cleanup_tree_cfg_loop function can be +used to cleanup CFG while updating the loops structures if +current_loops is set. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Looping-Patterns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Looping-Patterns.html new file mode 100644 index 0000000..dd6dadb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Looping-Patterns.html @@ -0,0 +1,150 @@ + + +Looping Patterns - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Jump Patterns, +Up: Machine Desc +



+
+ +

14.13 Defining Looping Instruction Patterns

+ +

+Some machines have special jump instructions that can be utilized to +make loops more efficient. A common example is the 68000 dbra +instruction which performs a decrement of a register and a branch if the +result was greater than zero. Other machines, in particular digital +signal processors (DSPs), have special block repeat instructions to +provide low-overhead loop support. For example, the TI TMS320C3x/C4x +DSPs have a block repeat instruction that loads special registers to +mark the top and end of a loop and to count the number of loop +iterations. This avoids the need for fetching and executing a +dbra-like instruction and avoids pipeline stalls associated with +the jump. + +

GCC has three special named patterns to support low overhead looping. +They are decrement_and_branch_until_zero, doloop_begin, +and doloop_end. The first pattern, +decrement_and_branch_until_zero, is not emitted during RTL +generation but may be emitted during the instruction combination phase. +This requires the assistance of the loop optimizer, using information +collected during strength reduction, to reverse a loop to count down to +zero. Some targets also require the loop optimizer to add a +REG_NONNEG note to indicate that the iteration count is always +positive. This is needed if the target performs a signed loop +termination test. For example, the 68000 uses a pattern similar to the +following for its dbra instruction: + +

     (define_insn "decrement_and_branch_until_zero"
+       [(set (pc)
+     	(if_then_else
+     	  (ge (plus:SI (match_operand:SI 0 "general_operand" "+d*am")
+     		       (const_int -1))
+     	      (const_int 0))
+     	  (label_ref (match_operand 1 "" ""))
+     	  (pc)))
+        (set (match_dup 0)
+     	(plus:SI (match_dup 0)
+     		 (const_int -1)))]
+       "find_reg_note (insn, REG_NONNEG, 0)"
+       "...")
+
+

Note that since the insn is both a jump insn and has an output, it must +deal with its own reloads, hence the `m' constraints. Also note that +since this insn is generated by the instruction combination phase +combining two sequential insns together into an implicit parallel insn, +the iteration counter needs to be biased by the same amount as the +decrement operation, in this case −1. Note that the following similar +pattern will not be matched by the combiner. + +

     (define_insn "decrement_and_branch_until_zero"
+       [(set (pc)
+     	(if_then_else
+     	  (ge (match_operand:SI 0 "general_operand" "+d*am")
+     	      (const_int 1))
+     	  (label_ref (match_operand 1 "" ""))
+     	  (pc)))
+        (set (match_dup 0)
+     	(plus:SI (match_dup 0)
+     		 (const_int -1)))]
+       "find_reg_note (insn, REG_NONNEG, 0)"
+       "...")
+
+

The other two special looping patterns, doloop_begin and +doloop_end, are emitted by the loop optimizer for certain +well-behaved loops with a finite number of loop iterations using +information collected during strength reduction. + +

The doloop_end pattern describes the actual looping instruction +(or the implicit looping operation) and the doloop_begin pattern +is an optional companion pattern that can be used for initialization +needed for some low-overhead looping instructions. + +

Note that some machines require the actual looping instruction to be +emitted at the top of the loop (e.g., the TMS320C3x/C4x DSPs). Emitting +the true RTL for a looping instruction at the top of the loop can cause +problems with flow analysis. So instead, a dummy doloop insn is +emitted at the end of the loop. The machine dependent reorg pass checks +for the presence of this doloop insn and then searches back to +the top of the loop, where it inserts the true looping insn (provided +there are no instructions in the loop which would cause problems). Any +additional labels can be emitted at this point. In addition, if the +desired special iteration counter register was not allocated, this +machine dependent reorg pass could emit a traditional compare and jump +instruction pair. + +

The essential difference between the +decrement_and_branch_until_zero and the doloop_end +patterns is that the loop optimizer allocates an additional pseudo +register for the latter as an iteration counter. This pseudo register +cannot be used within the loop (i.e., general induction variables cannot +be derived from it), however, in many cases the loop induction variable +may become redundant and removed by the flow pass. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loops.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loops.html new file mode 100644 index 0000000..a99adf2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Loops.html @@ -0,0 +1,62 @@ + + +Loops - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Empty Statements, +Up: Statements +



+
+ +
10.2.4.4 Loops
+ +

+At one time loops were expressed in GIMPLE using LOOP_EXPR, but +now they are lowered to explicit gotos. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/MIPS-Coprocessors.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/MIPS-Coprocessors.html new file mode 100644 index 0000000..dddf3b0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/MIPS-Coprocessors.html @@ -0,0 +1,93 @@ + + +MIPS Coprocessors - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Target Attributes, +Up: Target Macros +



+
+ +

15.26 Defining coprocessor specifics for MIPS targets.

+ +

+The MIPS specification allows MIPS implementations to have as many as 4 +coprocessors, each with as many as 32 private registers. GCC supports +accessing these registers and transferring values between the registers +and memory using asm-ized variables. For example: + +

       register unsigned int cp0count asm ("c0r1");
+       unsigned int d;
+     
+       d = cp0count + 3;
+
+

(“c0r1” is the default name of register 1 in coprocessor 0; alternate +names may be added as described below, or the default names may be +overridden entirely in SUBTARGET_CONDITIONAL_REGISTER_USAGE.) + +

Coprocessor registers are assumed to be epilogue-used; sets to them will +be preserved even if it does not appear that the register is used again +later in the function. + +

Another note: according to the MIPS spec, coprocessor 1 (if present) is +the FPU. One accesses COP1 registers through standard mips +floating-point support; they are not included in this mechanism. + +

There is one macro used in defining the MIPS coprocessor interface which +you may want to override in subtargets; it is described below. + +

+— Macro: ALL_COP_ADDITIONAL_REGISTER_NAMES
+

A comma-separated list (with leading comma) of pairs describing the +alternate names of coprocessor registers. The format of each entry should be +

          { alternatename, register_number}
+     
+

Default: empty. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Constraints.html new file mode 100644 index 0000000..28980ce --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Constraints.html @@ -0,0 +1,1091 @@ + + +Machine Constraints - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Modifiers, +Up: Constraints +



+
+ +

14.8.5 Constraints for Particular Machines

+ +

+Whenever possible, you should use the general-purpose constraint letters +in asm arguments, since they will convey meaning more readily to +people reading your code. Failing that, use the constraint letters +that usually have very similar meanings across architectures. The most +commonly used constraints are m and r (for memory and +general-purpose registers respectively; see Simple Constraints), and +I, usually the letter indicating the most common +immediate-constant format. + +

Each architecture defines additional constraints. These constraints +are used by the compiler itself for instruction generation, as well as +for asm statements; therefore, some of the constraints are not +particularly useful for asm. Here is a summary of some of the +machine-dependent constraints available on some particular machines; +it includes both constraints that are useful for asm and +constraints that aren't. The compiler source file mentioned in the +table heading for each architecture is the definitive reference for +the meanings of that architecture's constraints. + +

+
ARM family—config/arm/arm.h
+
+
f
Floating-point register + +
w
VFP floating-point register + +
F
One of the floating-point constants 0.0, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0 +or 10.0 + +
G
Floating-point constant that would satisfy the constraint F if it +were negated + +
I
Integer that is valid as an immediate operand in a data processing +instruction. That is, an integer in the range 0 to 255 rotated by a +multiple of 2 + +
J
Integer in the range −4095 to 4095 + +
K
Integer that satisfies constraint I when inverted (ones complement) + +
L
Integer that satisfies constraint I when negated (twos complement) + +
M
Integer in the range 0 to 32 + +
Q
A memory reference where the exact address is in a single register +(`m' is preferable for asm statements) + +
R
An item in the constant pool + +
S
A symbol in the text segment of the current file + +
Uv
A memory reference suitable for VFP load/store insns (reg+constant offset) + +
Uy
A memory reference suitable for iWMMXt load/store instructions. + +
Uq
A memory reference suitable for the ARMv4 ldrsb instruction. +
+ +
AVR family—config/avr/constraints.md
+
+
l
Registers from r0 to r15 + +
a
Registers from r16 to r23 + +
d
Registers from r16 to r31 + +
w
Registers from r24 to r31. These registers can be used in adiw command + +
e
Pointer register (r26–r31) + +
b
Base pointer register (r28–r31) + +
q
Stack pointer register (SPH:SPL) + +
t
Temporary register r0 + +
x
Register pair X (r27:r26) + +
y
Register pair Y (r29:r28) + +
z
Register pair Z (r31:r30) + +
I
Constant greater than −1, less than 64 + +
J
Constant greater than −64, less than 1 + +
K
Constant integer 2 + +
L
Constant integer 0 + +
M
Constant that fits in 8 bits + +
N
Constant integer −1 + +
O
Constant integer 8, 16, or 24 + +
P
Constant integer 1 + +
G
A floating point constant 0.0 + +
R
Integer constant in the range -6 ... 5. + +
Q
A memory address based on Y or Z pointer with displacement. +
+ +
CRX Architecture—config/crx/crx.h
+
+
b
Registers from r0 to r14 (registers without stack pointer) + +
l
Register r16 (64-bit accumulator lo register) + +
h
Register r17 (64-bit accumulator hi register) + +
k
Register pair r16-r17. (64-bit accumulator lo-hi pair) + +
I
Constant that fits in 3 bits + +
J
Constant that fits in 4 bits + +
K
Constant that fits in 5 bits + +
L
Constant that is one of -1, 4, -4, 7, 8, 12, 16, 20, 32, 48 + +
G
Floating point constant that is legal for store immediate +
+ +
Hewlett-Packard PA-RISC—config/pa/pa.h
+
+
a
General register 1 + +
f
Floating point register + +
q
Shift amount register + +
x
Floating point register (deprecated) + +
y
Upper floating point register (32-bit), floating point register (64-bit) + +
Z
Any register + +
I
Signed 11-bit integer constant + +
J
Signed 14-bit integer constant + +
K
Integer constant that can be deposited with a zdepi instruction + +
L
Signed 5-bit integer constant + +
M
Integer constant 0 + +
N
Integer constant that can be loaded with a ldil instruction + +
O
Integer constant whose value plus one is a power of 2 + +
P
Integer constant that can be used for and operations in depi +and extru instructions + +
S
Integer constant 31 + +
U
Integer constant 63 + +
G
Floating-point constant 0.0 + +
A
A lo_sum data-linkage-table memory operand + +
Q
A memory operand that can be used as the destination operand of an +integer store instruction + +
R
A scaled or unscaled indexed memory operand + +
T
A memory operand for floating-point loads and stores + +
W
A register indirect memory operand +
+ +
PowerPC and IBM RS6000—config/rs6000/rs6000.h
+
+
b
Address base register + +
f
Floating point register + +
v
Vector register + +
h
MQ, CTR, or LINK register + +
q
MQ register + +
c
CTR register + +
l
LINK register + +
x
CR register (condition register) number 0 + +
y
CR register (condition register) + +
z
FPMEM stack memory for FPR-GPR transfers + +
I
Signed 16-bit constant + +
J
Unsigned 16-bit constant shifted left 16 bits (use L instead for +SImode constants) + +
K
Unsigned 16-bit constant + +
L
Signed 16-bit constant shifted left 16 bits + +
M
Constant larger than 31 + +
N
Exact power of 2 + +
O
Zero + +
P
Constant whose negation is a signed 16-bit constant + +
G
Floating point constant that can be loaded into a register with one +instruction per word + +
H
Integer/Floating point constant that can be loaded into a register using +three instructions + +
Q
Memory operand that is an offset from a register (m is preferable +for asm statements) + +
Z
Memory operand that is an indexed or indirect from a register (m is +preferable for asm statements) + +
R
AIX TOC entry + +
a
Address operand that is an indexed or indirect from a register (p is +preferable for asm statements) + +
S
Constant suitable as a 64-bit mask operand + +
T
Constant suitable as a 32-bit mask operand + +
U
System V Release 4 small data area reference + +
t
AND masks that can be performed by two rldic{l, r} instructions + +
W
Vector constant that does not require memory + +
+ +
MorphoTech family—config/mt/mt.h
+
+
I
Constant for an arithmetic insn (16-bit signed integer). + +
J
The constant 0. + +
K
Constant for a logical insn (16-bit zero-extended integer). + +
L
A constant that can be loaded with lui (i.e. the bottom 16 +bits are zero). + +
M
A constant that takes two words to load (i.e. not matched by +I, K, or L). + +
N
Negative 16-bit constants other than -65536. + +
O
A 15-bit signed integer constant. + +
P
A positive 16-bit constant. +
+ +
Intel 386—config/i386/constraints.md
+
+
R
Legacy register—the eight integer registers available on all +i386 processors (a, b, c, d, +si, di, bp, sp). + +
q
Any register accessible as rl. In 32-bit mode, a, +b, c, and d; in 64-bit mode, any integer register. + +
Q
Any register accessible as rh: a, b, +c, and d. + +
l
Any register that can be used as the index in a base+index memory +access: that is, any general register except the stack pointer. + +
a
The a register. + +
b
The b register. + +
c
The c register. + +
d
The d register. + +
S
The si register. + +
D
The di register. + +
A
The a and d registers, as a pair (for instructions that +return half the result in one and half in the other). + +
f
Any 80387 floating-point (stack) register. + +
t
Top of 80387 floating-point stack (%st(0)). + +
u
Second from top of 80387 floating-point stack (%st(1)). + +
y
Any MMX register. + +
x
Any SSE register. + +
Y
Any SSE2 register. + +
I
Integer constant in the range 0 ... 31, for 32-bit shifts. + +
J
Integer constant in the range 0 ... 63, for 64-bit shifts. + +
K
Signed 8-bit integer constant. + +
L
0xFF or 0xFFFF, for andsi as a zero-extending move. + +
M
0, 1, 2, or 3 (shifts for the lea instruction). + +
N
Unsigned 8-bit integer constant (for in and out +instructions). + +
O
Integer constant in the range 0 ... 127, for 128-bit shifts. + +
G
Standard 80387 floating point constant. + +
C
Standard SSE floating point constant. + +
e
32-bit signed integer constant, or a symbolic reference known +to fit that range (for immediate operands in sign-extending x86-64 +instructions). + +
Z
32-bit unsigned integer constant, or a symbolic reference known +to fit that range (for immediate operands in zero-extending x86-64 +instructions). + +
+ +
Intel IA-64—config/ia64/ia64.h
+
+
a
General register r0 to r3 for addl instruction + +
b
Branch register + +
c
Predicate register (c as in “conditional”) + +
d
Application register residing in M-unit + +
e
Application register residing in I-unit + +
f
Floating-point register + +
m
Memory operand. +Remember that m allows postincrement and postdecrement which +require printing with %Pn on IA-64. +Use S to disallow postincrement and postdecrement. + +
G
Floating-point constant 0.0 or 1.0 + +
I
14-bit signed integer constant + +
J
22-bit signed integer constant + +
K
8-bit signed integer constant for logical instructions + +
L
8-bit adjusted signed integer constant for compare pseudo-ops + +
M
6-bit unsigned integer constant for shift counts + +
N
9-bit signed integer constant for load and store postincrements + +
O
The constant zero + +
P
0 or −1 for dep instruction + +
Q
Non-volatile memory for floating-point loads and stores + +
R
Integer constant in the range 1 to 4 for shladd instruction + +
S
Memory operand except postincrement and postdecrement +
+ +
FRV—config/frv/frv.h
+
+
a
Register in the class ACC_REGS (acc0 to acc7). + +
b
Register in the class EVEN_ACC_REGS (acc0 to acc7). + +
c
Register in the class CC_REGS (fcc0 to fcc3 and +icc0 to icc3). + +
d
Register in the class GPR_REGS (gr0 to gr63). + +
e
Register in the class EVEN_REGS (gr0 to gr63). +Odd registers are excluded not in the class but through the use of a machine +mode larger than 4 bytes. + +
f
Register in the class FPR_REGS (fr0 to fr63). + +
h
Register in the class FEVEN_REGS (fr0 to fr63). +Odd registers are excluded not in the class but through the use of a machine +mode larger than 4 bytes. + +
l
Register in the class LR_REG (the lr register). + +
q
Register in the class QUAD_REGS (gr2 to gr63). +Register numbers not divisible by 4 are excluded not in the class but through +the use of a machine mode larger than 8 bytes. + +
t
Register in the class ICC_REGS (icc0 to icc3). + +
u
Register in the class FCC_REGS (fcc0 to fcc3). + +
v
Register in the class ICR_REGS (cc4 to cc7). + +
w
Register in the class FCR_REGS (cc0 to cc3). + +
x
Register in the class QUAD_FPR_REGS (fr0 to fr63). +Register numbers not divisible by 4 are excluded not in the class but through +the use of a machine mode larger than 8 bytes. + +
z
Register in the class SPR_REGS (lcr and lr). + +
A
Register in the class QUAD_ACC_REGS (acc0 to acc7). + +
B
Register in the class ACCG_REGS (accg0 to accg7). + +
C
Register in the class CR_REGS (cc0 to cc7). + +
G
Floating point constant zero + +
I
6-bit signed integer constant + +
J
10-bit signed integer constant + +
L
16-bit signed integer constant + +
M
16-bit unsigned integer constant + +
N
12-bit signed integer constant that is negative—i.e. in the +range of −2048 to −1 + +
O
Constant zero + +
P
12-bit signed integer constant that is greater than zero—i.e. in the +range of 1 to 2047. + +
+ +
Blackfin family—config/bfin/bfin.h
+
+
a
P register + +
d
D register + +
z
A call clobbered P register. + +
qn
A single register. If n is in the range 0 to 7, the corresponding D +register. If it is A, then the register P0. + +
D
Even-numbered D register + +
W
Odd-numbered D register + +
e
Accumulator register. + +
A
Even-numbered accumulator register. + +
B
Odd-numbered accumulator register. + +
b
I register + +
v
B register + +
f
M register + +
c
Registers used for circular buffering, i.e. I, B, or L registers. + +
C
The CC register. + +
t
LT0 or LT1. + +
k
LC0 or LC1. + +
u
LB0 or LB1. + +
x
Any D, P, B, M, I or L register. + +
y
Additional registers typically used only in prologues and epilogues: RETS, +RETN, RETI, RETX, RETE, ASTAT, SEQSTAT and USP. + +
w
Any register except accumulators or CC. + +
Ksh
Signed 16 bit integer (in the range -32768 to 32767) + +
Kuh
Unsigned 16 bit integer (in the range 0 to 65535) + +
Ks7
Signed 7 bit integer (in the range -64 to 63) + +
Ku7
Unsigned 7 bit integer (in the range 0 to 127) + +
Ku5
Unsigned 5 bit integer (in the range 0 to 31) + +
Ks4
Signed 4 bit integer (in the range -8 to 7) + +
Ks3
Signed 3 bit integer (in the range -3 to 4) + +
Ku3
Unsigned 3 bit integer (in the range 0 to 7) + +
Pn
Constant n, where n is a single-digit constant in the range 0 to 4. + +
PA
An integer equal to one of the MACFLAG_XXX constants that is suitable for +use with either accumulator. + +
PB
An integer equal to one of the MACFLAG_XXX constants that is suitable for +use only with accumulator A1. + +
M1
Constant 255. + +
M2
Constant 65535. + +
J
An integer constant with exactly a single bit set. + +
L
An integer constant with all bits set except exactly one. + +
H +
Q
Any SYMBOL_REF. +
+ +
M32C—config/m32c/m32c.c
+
+
Rsp
Rfb
Rsb
$sp, $fb, $sb. + +
Rcr
Any control register, when they're 16 bits wide (nothing if control +registers are 24 bits wide) + +
Rcl
Any control register, when they're 24 bits wide. + +
R0w
R1w
R2w
R3w
$r0, $r1, $r2, $r3. + +
R02
$r0 or $r2, or $r2r0 for 32 bit values. + +
R13
$r1 or $r3, or $r3r1 for 32 bit values. + +
Rdi
A register that can hold a 64 bit value. + +
Rhl
$r0 or $r1 (registers with addressable high/low bytes) + +
R23
$r2 or $r3 + +
Raa
Address registers + +
Raw
Address registers when they're 16 bits wide. + +
Ral
Address registers when they're 24 bits wide. + +
Rqi
Registers that can hold QI values. + +
Rad
Registers that can be used with displacements ($a0, $a1, $sb). + +
Rsi
Registers that can hold 32 bit values. + +
Rhi
Registers that can hold 16 bit values. + +
Rhc
Registers chat can hold 16 bit values, including all control +registers. + +
Rra
$r0 through R1, plus $a0 and $a1. + +
Rfl
The flags register. + +
Rmm
The memory-based pseudo-registers $mem0 through $mem15. + +
Rpi
Registers that can hold pointers (16 bit registers for r8c, m16c; 24 +bit registers for m32cm, m32c). + +
Rpa
Matches multiple registers in a PARALLEL to form a larger register. +Used to match function return values. + +
Is3
-8 ... 7 + +
IS1
-128 ... 127 + +
IS2
-32768 ... 32767 + +
IU2
0 ... 65535 + +
In4
-8 ... -1 or 1 ... 8 + +
In5
-16 ... -1 or 1 ... 16 + +
In6
-32 ... -1 or 1 ... 32 + +
IM2
-65536 ... -1 + +
Ilb
An 8 bit value with exactly one bit set. + +
Ilw
A 16 bit value with exactly one bit set. + +
Sd
The common src/dest memory addressing modes. + +
Sa
Memory addressed using $a0 or $a1. + +
Si
Memory addressed with immediate addresses. + +
Ss
Memory addressed using the stack pointer ($sp). + +
Sf
Memory addressed using the frame base register ($fb). + +
Ss
Memory addressed using the small base register ($sb). + +
S1
$r1h +
+ +
MIPS—config/mips/constraints.md
+
+
d
An address register. This is equivalent to r unless +generating MIPS16 code. + +
f
A floating-point register (if available). + +
h
The hi register. + +
l
The lo register. + +
x
The hi and lo registers. + +
c
A register suitable for use in an indirect jump. This will always be +$25 for -mabicalls. + +
v
Register $3. Do not use this constraint in new code; +it is retained only for compatibility with glibc. + +
y
Equivalent to r; retained for backwards compatibility. + +
z
A floating-point condition code register. + +
I
A signed 16-bit constant (for arithmetic instructions). + +
J
Integer zero. + +
K
An unsigned 16-bit constant (for logic instructions). + +
L
A signed 32-bit constant in which the lower 16 bits are zero. +Such constants can be loaded using lui. + +
M
A constant that cannot be loaded using lui, addiu +or ori. + +
N
A constant in the range -65535 to -1 (inclusive). + +
O
A signed 15-bit constant. + +
P
A constant in the range 1 to 65535 (inclusive). + +
G
Floating-point zero. + +
R
An address that can be used in a non-macro load or store. +
+ +
Motorola 680x0—config/m68k/constraints.md
+
+
a
Address register + +
d
Data register + +
f
68881 floating-point register, if available + +
I
Integer in the range 1 to 8 + +
J
16-bit signed number + +
K
Signed number whose magnitude is greater than 0x80 + +
L
Integer in the range −8 to −1 + +
M
Signed number whose magnitude is greater than 0x100 + +
N
Range 24 to 31, rotatert:SI 8 to 1 expressed as rotate + +
O
16 (for rotate using swap) + +
P
Range 8 to 15, rotatert:HI 8 to 1 expressed as rotate + +
R
Numbers that mov3q can handle + +
G
Floating point constant that is not a 68881 constant + +
S
Operands that satisfy 'm' when -mpcrel is in effect + +
T
Operands that satisfy 's' when -mpcrel is not in effect + +
Q
Address register indirect addressing mode + +
U
Register offset addressing + +
W
const_call_operand + +
Cs
symbol_ref or const + +
Ci
const_int + +
C0
const_int 0 + +
Cj
Range of signed numbers that don't fit in 16 bits + +
Cmvq
Integers valid for mvq + +
Capsw
Integers valid for a moveq followed by a swap + +
Cmvz
Integers valid for mvz + +
Cmvs
Integers valid for mvs + +
Ap
push_operand + +
Ac
Non-register operands allowed in clr + +
+ +
Motorola 68HC11 & 68HC12 families—config/m68hc11/m68hc11.h
+
+
a
Register `a' + +
b
Register `b' + +
d
Register `d' + +
q
An 8-bit register + +
t
Temporary soft register _.tmp + +
u
A soft register _.d1 to _.d31 + +
w
Stack pointer register + +
x
Register `x' + +
y
Register `y' + +
z
Pseudo register `z' (replaced by `x' or `y' at the end) + +
A
An address register: x, y or z + +
B
An address register: x or y + +
D
Register pair (x:d) to form a 32-bit value + +
L
Constants in the range −65536 to 65535 + +
M
Constants whose 16-bit low part is zero + +
N
Constant integer 1 or −1 + +
O
Constant integer 16 + +
P
Constants in the range −8 to 2 + +
+ +
SPARC—config/sparc/sparc.h
+
+
f
Floating-point register on the SPARC-V8 architecture and +lower floating-point register on the SPARC-V9 architecture. + +
e
Floating-point register. It is equivalent to f on the +SPARC-V8 architecture and contains both lower and upper +floating-point registers on the SPARC-V9 architecture. + +
c
Floating-point condition code register. + +
d
Lower floating-point register. It is only valid on the SPARC-V9 +architecture when the Visual Instruction Set is available. + +
b
Floating-point register. It is only valid on the SPARC-V9 architecture +when the Visual Instruction Set is available. + +
h
64-bit global or out register for the SPARC-V8+ architecture. + +
I
Signed 13-bit constant + +
J
Zero + +
K
32-bit constant with the low 12 bits clear (a constant that can be +loaded with the sethi instruction) + +
L
A constant in the range supported by movcc instructions + +
M
A constant in the range supported by movrcc instructions + +
N
Same as K, except that it verifies that bits that are not in the +lower 32-bit range are all zero. Must be used instead of K for +modes wider than SImode + +
O
The constant 4096 + +
G
Floating-point zero + +
H
Signed 13-bit constant, sign-extended to 32 or 64 bits + +
Q
Floating-point constant whose integral representation can +be moved into an integer register using a single sethi +instruction + +
R
Floating-point constant whose integral representation can +be moved into an integer register using a single mov +instruction + +
S
Floating-point constant whose integral representation can +be moved into an integer register using a high/lo_sum +instruction sequence + +
T
Memory address aligned to an 8-byte boundary + +
U
Even register + +
W
Memory address for e constraint registers + +
Y
Vector zero + +
+ +
SPU—config/spu/spu.h
+
+
a
An immediate which can be loaded with the il/ila/ilh/ilhu instructions. const_int is treated as a 64 bit value. + +
c
An immediate for and/xor/or instructions. const_int is treated as a 64 bit value. + +
d
An immediate for the iohl instruction. const_int is treated as a 64 bit value. + +
f
An immediate which can be loaded with fsmbi. + +
A
An immediate which can be loaded with the il/ila/ilh/ilhu instructions. const_int is treated as a 32 bit value. + +
B
An immediate for most arithmetic instructions. const_int is treated as a 32 bit value. + +
C
An immediate for and/xor/or instructions. const_int is treated as a 32 bit value. + +
D
An immediate for the iohl instruction. const_int is treated as a 32 bit value. + +
I
A constant in the range [-64, 63] for shift/rotate instructions. + +
J
An unsigned 7-bit constant for conversion/nop/channel instructions. + +
K
A signed 10-bit constant for most arithmetic instructions. + +
M
A signed 16 bit immediate for stop. + +
N
An unsigned 16-bit constant for iohl and fsmbi. + +
O
An unsigned 7-bit constant whose 3 least significant bits are 0. + +
P
An unsigned 3-bit constant for 16-byte rotates and shifts + +
R
Call operand, reg, for indirect calls + +
S
Call operand, symbol, for relative calls. + +
T
Call operand, const_int, for absolute calls. + +
U
An immediate which can be loaded with the il/ila/ilh/ilhu instructions. const_int is sign extended to 128 bit. + +
W
An immediate for shift and rotate instructions. const_int is treated as a 32 bit value. + +
Y
An immediate for and/xor/or instructions. const_int is sign extended as a 128 bit. + +
Z
An immediate for the iohl instruction. const_int is sign extended to 128 bit. + +
+ +
S/390 and zSeries—config/s390/s390.h
+
+
a
Address register (general purpose register except r0) + +
c
Condition code register + +
d
Data register (arbitrary general purpose register) + +
f
Floating-point register + +
I
Unsigned 8-bit constant (0–255) + +
J
Unsigned 12-bit constant (0–4095) + +
K
Signed 16-bit constant (−32768–32767) + +
L
Value appropriate as displacement. +
+
(0..4095)
for short displacement +
(-524288..524287)
for long displacement +
+ +
M
Constant integer with a value of 0x7fffffff. + +
N
Multiple letter constraint followed by 4 parameter letters. +
+
0..9:
number of the part counting from most to least significant +
H,Q:
mode of the part +
D,S,H:
mode of the containing operand +
0,F:
value of the other parts (F—all bits set) +
+ The constraint matches if the specified part of a constant +has a value different from its other parts. + +
Q
Memory reference without index register and with short displacement. + +
R
Memory reference with index register and short displacement. + +
S
Memory reference without index register but with long displacement. + +
T
Memory reference with index register and long displacement. + +
U
Pointer with short displacement. + +
W
Pointer with long displacement. + +
Y
Shift count operand. + +
+ +
Score family—config/score/score.h
+
+
d
Registers from r0 to r32. + +
e
Registers from r0 to r16. + +
t
r8—r11 or r22—r27 registers. + +
h
hi register. + +
l
lo register. + +
x
hi + lo register. + +
q
cnt register. + +
y
lcb register. + +
z
scb register. + +
a
cnt + lcb + scb register. + +
c
cr0—cr15 register. + +
b
cp1 registers. + +
f
cp2 registers. + +
i
cp3 registers. + +
j
cp1 + cp2 + cp3 registers. + +
I
High 16-bit constant (32-bit constant with 16 LSBs zero). + +
J
Unsigned 5 bit integer (in the range 0 to 31). + +
K
Unsigned 16 bit integer (in the range 0 to 65535). + +
L
Signed 16 bit integer (in the range −32768 to 32767). + +
M
Unsigned 14 bit integer (in the range 0 to 16383). + +
N
Signed 14 bit integer (in the range −8192 to 8191). + +
Z
Any SYMBOL_REF. +
+ +
Xstormy16—config/stormy16/stormy16.h
+
+
a
Register r0. + +
b
Register r1. + +
c
Register r2. + +
d
Register r8. + +
e
Registers r0 through r7. + +
t
Registers r0 and r1. + +
y
The carry register. + +
z
Registers r8 and r9. + +
I
A constant between 0 and 3 inclusive. + +
J
A constant that has exactly one bit set. + +
K
A constant that has exactly one bit clear. + +
L
A constant between 0 and 255 inclusive. + +
M
A constant between −255 and 0 inclusive. + +
N
A constant between −3 and 0 inclusive. + +
O
A constant between 1 and 4 inclusive. + +
P
A constant between −4 and −1 inclusive. + +
Q
A memory reference that is a stack push. + +
R
A memory reference that is a stack pop. + +
S
A memory reference that refers to a constant address of known value. + +
T
The register indicated by Rx (not implemented yet). + +
U
A constant that is not between 2 and 15 inclusive. + +
Z
The constant 0. + +
+ +
Xtensa—config/xtensa/constraints.md
+
+
a
General-purpose 32-bit register + +
b
One-bit boolean register + +
A
MAC16 40-bit accumulator register + +
I
Signed 12-bit integer constant, for use in MOVI instructions + +
J
Signed 8-bit integer constant, for use in ADDI instructions + +
K
Integer constant valid for BccI instructions + +
L
Unsigned constant valid for BccUI instructions + +
+ +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Desc.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Desc.html new file mode 100644 index 0000000..a679b5b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Desc.html @@ -0,0 +1,100 @@ + + +Machine Desc - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Loop Analysis and Representation, +Up: Top +



+
+ +

14 Machine Descriptions

+ +

+A machine description has two parts: a file of instruction patterns +(.md file) and a C header file of macro definitions. + +

The .md file for a target machine contains a pattern for each +instruction that the target machine supports (or at least each instruction +that is worth telling the compiler about). It may also contain comments. +A semicolon causes the rest of the line to be a comment, unless the semicolon +is inside a quoted string. + +

See the next chapter for information on the C header file. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Modes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Modes.html new file mode 100644 index 0000000..15ae820 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine-Modes.html @@ -0,0 +1,334 @@ + + +Machine Modes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Flags, +Up: RTL +



+
+ +

12.6 Machine Modes

+ +

+A machine mode describes a size of data object and the representation used +for it. In the C code, machine modes are represented by an enumeration +type, enum machine_mode, defined in machmode.def. Each RTL +expression has room for a machine mode and so do certain kinds of tree +expressions (declarations and types, to be precise). + +

In debugging dumps and machine descriptions, the machine mode of an RTL +expression is written after the expression code with a colon to separate +them. The letters mode which appear at the end of each machine mode +name are omitted. For example, (reg:SI 38) is a reg +expression with machine mode SImode. If the mode is +VOIDmode, it is not written at all. + +

Here is a table of machine modes. The term “byte” below refers to an +object of BITS_PER_UNIT bits (see Storage Layout). + + + +

BImode
“Bit” mode represents a single bit, for predicate registers. + +


QImode
“Quarter-Integer” mode represents a single byte treated as an integer. + +


HImode
“Half-Integer” mode represents a two-byte integer. + +


PSImode
“Partial Single Integer” mode represents an integer which occupies +four bytes but which doesn't really use all four. On some machines, +this is the right mode to use for pointers. + +


SImode
“Single Integer” mode represents a four-byte integer. + +


PDImode
“Partial Double Integer” mode represents an integer which occupies +eight bytes but which doesn't really use all eight. On some machines, +this is the right mode to use for certain pointers. + +


DImode
“Double Integer” mode represents an eight-byte integer. + +


TImode
“Tetra Integer” (?) mode represents a sixteen-byte integer. + +


OImode
“Octa Integer” (?) mode represents a thirty-two-byte integer. + +


QFmode
“Quarter-Floating” mode represents a quarter-precision (single byte) +floating point number. + +


HFmode
“Half-Floating” mode represents a half-precision (two byte) floating +point number. + +


TQFmode
“Three-Quarter-Floating” (?) mode represents a three-quarter-precision +(three byte) floating point number. + +


SFmode
“Single Floating” mode represents a four byte floating point number. +In the common case, of a processor with IEEE arithmetic and 8-bit bytes, +this is a single-precision IEEE floating point number; it can also be +used for double-precision (on processors with 16-bit bytes) and +single-precision VAX and IBM types. + +


DFmode
“Double Floating” mode represents an eight byte floating point number. +In the common case, of a processor with IEEE arithmetic and 8-bit bytes, +this is a double-precision IEEE floating point number. + +


XFmode
“Extended Floating” mode represents an IEEE extended floating point +number. This mode only has 80 meaningful bits (ten bytes). Some +processors require such numbers to be padded to twelve bytes, others +to sixteen; this mode is used for either. + +


SDmode
“Single Decimal Floating” mode represents a four byte decimal +floating point number (as distinct from conventional binary floating +point). + +


DDmode
“Double Decimal Floating” mode represents an eight byte decimal +floating point number. + +


TDmode
“Tetra Decimal Floating” mode represents a sixteen byte decimal +floating point number all 128 of whose bits are meaningful. + +


TFmode
“Tetra Floating” mode represents a sixteen byte floating point number +all 128 of whose bits are meaningful. One common use is the +IEEE quad-precision format. + +


QQmode
“Quarter-Fractional” mode represents a single byte treated as a signed +fractional number. The default format is “s.7”. + +


HQmode
“Half-Fractional” mode represents a two-byte signed fractional number. +The default format is “s.15”. + +


SQmode
“Single Fractional” mode represents a four-byte signed fractional number. +The default format is “s.31”. + +


DQmode
“Double Fractional” mode represents an eight-byte signed fractional number. +The default format is “s.63”. + +


TQmode
“Tetra Fractional” mode represents a sixteen-byte signed fractional number. +The default format is “s.127”. + +


UQQmode
“Unsigned Quarter-Fractional” mode represents a single byte treated as an +unsigned fractional number. The default format is “.8”. + +


UHQmode
“Unsigned Half-Fractional” mode represents a two-byte unsigned fractional +number. The default format is “.16”. + +


USQmode
“Unsigned Single Fractional” mode represents a four-byte unsigned fractional +number. The default format is “.32”. + +


UDQmode
“Unsigned Double Fractional” mode represents an eight-byte unsigned +fractional number. The default format is “.64”. + +


UTQmode
“Unsigned Tetra Fractional” mode represents a sixteen-byte unsigned +fractional number. The default format is “.128”. + +


HAmode
“Half-Accumulator” mode represents a two-byte signed accumulator. +The default format is “s8.7”. + +


SAmode
“Single Accumulator” mode represents a four-byte signed accumulator. +The default format is “s16.15”. + +


DAmode
“Double Accumulator” mode represents an eight-byte signed accumulator. +The default format is “s32.31”. + +


TAmode
“Tetra Accumulator” mode represents a sixteen-byte signed accumulator. +The default format is “s64.63”. + +


UHAmode
“Unsigned Half-Accumulator” mode represents a two-byte unsigned accumulator. +The default format is “8.8”. + +


USAmode
“Unsigned Single Accumulator” mode represents a four-byte unsigned +accumulator. The default format is “16.16”. + +


UDAmode
“Unsigned Double Accumulator” mode represents an eight-byte unsigned +accumulator. The default format is “32.32”. + +


UTAmode
“Unsigned Tetra Accumulator” mode represents a sixteen-byte unsigned +accumulator. The default format is “64.64”. + +


CCmode
“Condition Code” mode represents the value of a condition code, which +is a machine-specific set of bits used to represent the result of a +comparison operation. Other machine-specific modes may also be used for +the condition code. These modes are not used on machines that use +cc0 (see see Condition Code). + +


BLKmode
“Block” mode represents values that are aggregates to which none of +the other modes apply. In RTL, only memory references can have this mode, +and only if they appear in string-move or vector instructions. On machines +which have no such instructions, BLKmode will not appear in RTL. + +


VOIDmode
Void mode means the absence of a mode or an unspecified mode. +For example, RTL expressions of code const_int have mode +VOIDmode because they can be taken to have whatever mode the context +requires. In debugging dumps of RTL, VOIDmode is expressed by +the absence of any mode. + +


QCmode, HCmode, SCmode, DCmode, XCmode, TCmode
These modes stand for a complex number represented as a pair of floating +point values. The floating point values are in QFmode, +HFmode, SFmode, DFmode, XFmode, and +TFmode, respectively. + +


CQImode, CHImode, CSImode, CDImode, CTImode, COImode
These modes stand for a complex number represented as a pair of integer +values. The integer values are in QImode, HImode, +SImode, DImode, TImode, and OImode, +respectively. +
+ +

The machine description defines Pmode as a C macro which expands +into the machine mode used for addresses. Normally this is the mode +whose size is BITS_PER_WORD, SImode on 32-bit machines. + +

The only modes which a machine description must support are +QImode, and the modes corresponding to BITS_PER_WORD, +FLOAT_TYPE_SIZE and DOUBLE_TYPE_SIZE. +The compiler will attempt to use DImode for 8-byte structures and +unions, but this can be prevented by overriding the definition of +MAX_FIXED_MODE_SIZE. Alternatively, you can have the compiler +use TImode for 16-byte structures and unions. Likewise, you can +arrange for the C type short int to avoid using HImode. + +

Very few explicit references to machine modes remain in the compiler and +these few references will soon be removed. Instead, the machine modes +are divided into mode classes. These are represented by the enumeration +type enum mode_class defined in machmode.h. The possible +mode classes are: + + + +

MODE_INT
Integer modes. By default these are BImode, QImode, +HImode, SImode, DImode, TImode, and +OImode. + +


MODE_PARTIAL_INT
The “partial integer” modes, PQImode, PHImode, +PSImode and PDImode. + +


MODE_FLOAT
Floating point modes. By default these are QFmode, +HFmode, TQFmode, SFmode, DFmode, +XFmode and TFmode. + +


MODE_DECIMAL_FLOAT
Decimal floating point modes. By default these are SDmode, +DDmode and TDmode. + +


MODE_FRACT
Signed fractional modes. By default these are QQmode, HQmode, +SQmode, DQmode and TQmode. + +


MODE_UFRACT
Unsigned fractional modes. By default these are UQQmode, UHQmode, +USQmode, UDQmode and UTQmode. + +


MODE_ACCUM
Signed accumulator modes. By default these are HAmode, +SAmode, DAmode and TAmode. + +


MODE_UACCUM
Unsigned accumulator modes. By default these are UHAmode, +USAmode, UDAmode and UTAmode. + +


MODE_COMPLEX_INT
Complex integer modes. (These are not currently implemented). + +


MODE_COMPLEX_FLOAT
Complex floating point modes. By default these are QCmode, +HCmode, SCmode, DCmode, XCmode, and +TCmode. + +


MODE_FUNCTION
Algol or Pascal function variables including a static chain. +(These are not currently implemented). + +


MODE_CC
Modes representing condition code values. These are CCmode plus +any CC_MODE modes listed in the machine-modes.def. +See Jump Patterns, +also see Condition Code. + +


MODE_RANDOM
This is a catchall mode class for modes which don't fit into the above +classes. Currently VOIDmode and BLKmode are in +MODE_RANDOM. +
+ +

Here are some C macros that relate to machine modes: + + + +

GET_MODE (x)
Returns the machine mode of the RTX x. + +


PUT_MODE (x, newmode)
Alters the machine mode of the RTX x to be newmode. + +


NUM_MACHINE_MODES
Stands for the number of machine modes available on the target +machine. This is one greater than the largest numeric value of any +machine mode. + +


GET_MODE_NAME (m)
Returns the name of mode m as a string. + +


GET_MODE_CLASS (m)
Returns the mode class of mode m. + +


GET_MODE_WIDER_MODE (m)
Returns the next wider natural mode. For example, the expression +GET_MODE_WIDER_MODE (QImode) returns HImode. + +


GET_MODE_SIZE (m)
Returns the size in bytes of a datum of mode m. + +


GET_MODE_BITSIZE (m)
Returns the size in bits of a datum of mode m. + +


GET_MODE_IBIT (m)
Returns the number of integral bits of a datum of fixed-point mode m. + +


GET_MODE_FBIT (m)
Returns the number of fractional bits of a datum of fixed-point mode m. + +


GET_MODE_MASK (m)
Returns a bitmask containing 1 for all bits in a word that fit within +mode m. This macro can only be used for modes whose bitsize is +less than or equal to HOST_BITS_PER_INT. + +


GET_MODE_ALIGNMENT (m)
Return the required alignment, in bits, for an object of mode m. + +


GET_MODE_UNIT_SIZE (m)
Returns the size in bytes of the subunits of a datum of mode m. +This is the same as GET_MODE_SIZE except in the case of complex +modes. For them, the unit size is the size of the real or imaginary +part. + +


GET_MODE_NUNITS (m)
Returns the number of units contained in a mode, i.e., +GET_MODE_SIZE divided by GET_MODE_UNIT_SIZE. + +


GET_CLASS_NARROWEST_MODE (c)
Returns the narrowest mode in mode class c. +
+ +

The global variables byte_mode and word_mode contain modes +whose classes are MODE_INT and whose bitsizes are either +BITS_PER_UNIT or BITS_PER_WORD, respectively. On 32-bit +machines, these are QImode and SImode, respectively. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine_002dIndependent-Predicates.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine_002dIndependent-Predicates.html new file mode 100644 index 0000000..c5f0fd9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Machine_002dIndependent-Predicates.html @@ -0,0 +1,195 @@ + + +Machine-Independent Predicates - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: Predicates +



+
+ +

14.7.1 Machine-Independent Predicates

+ +

+These are the generic predicates available to all back ends. They are +defined in recog.c. The first category of predicates allow +only constant, or immediate, operands. + +

+— Function: immediate_operand
+

This predicate allows any sort of constant that fits in mode. +It is an appropriate choice for instructions that take operands that +must be constant. +

+ +
+— Function: const_int_operand
+

This predicate allows any CONST_INT expression that fits in +mode. It is an appropriate choice for an immediate operand that +does not allow a symbol or label. +

+ +
+— Function: const_double_operand
+

This predicate accepts any CONST_DOUBLE expression that has +exactly mode. If mode is VOIDmode, it will also +accept CONST_INT. It is intended for immediate floating point +constants. +

+ +

The second category of predicates allow only some kind of machine +register. + +

+— Function: register_operand
+

This predicate allows any REG or SUBREG expression that +is valid for mode. It is often suitable for arithmetic +instruction operands on a RISC machine. +

+ +
+— Function: pmode_register_operand
+

This is a slight variant on register_operand which works around +a limitation in the machine-description reader. + +

          (match_operand n "pmode_register_operand" constraint)
+     
+

means exactly what + +

          (match_operand:P n "register_operand" constraint)
+     
+

would mean, if the machine-description reader accepted :P +mode suffixes. Unfortunately, it cannot, because Pmode is an +alias for some other mode, and might vary with machine-specific +options. See Misc. +

+ +
+— Function: scratch_operand
+

This predicate allows hard registers and SCRATCH expressions, +but not pseudo-registers. It is used internally by match_scratch; +it should not be used directly. +

+ +

The third category of predicates allow only some kind of memory reference. + +

+— Function: memory_operand
+

This predicate allows any valid reference to a quantity of mode +mode in memory, as determined by the weak form of +GO_IF_LEGITIMATE_ADDRESS (see Addressing Modes). +

+ +
+— Function: address_operand
+

This predicate is a little unusual; it allows any operand that is a +valid expression for the address of a quantity of mode +mode, again determined by the weak form of +GO_IF_LEGITIMATE_ADDRESS. To first order, if +(mem:mode (exp)) is acceptable to +memory_operand, then exp is acceptable to +address_operand. Note that exp does not necessarily have +the mode mode. +

+ +
+— Function: indirect_operand
+

This is a stricter form of memory_operand which allows only +memory references with a general_operand as the address +expression. New uses of this predicate are discouraged, because +general_operand is very permissive, so it's hard to tell what +an indirect_operand does or does not allow. If a target has +different requirements for memory operands for different instructions, +it is better to define target-specific predicates which enforce the +hardware's requirements explicitly. +

+ +
+— Function: push_operand
+

This predicate allows a memory reference suitable for pushing a value +onto the stack. This will be a MEM which refers to +stack_pointer_rtx, with a side-effect in its address expression +(see Incdec); which one is determined by the +STACK_PUSH_CODE macro (see Frame Layout). +

+ +
+— Function: pop_operand
+

This predicate allows a memory reference suitable for popping a value +off the stack. Again, this will be a MEM referring to +stack_pointer_rtx, with a side-effect in its address +expression. However, this time STACK_POP_CODE is expected. +

+ +

The fourth category of predicates allow some combination of the above +operands. + +

+— Function: nonmemory_operand
+

This predicate allows any immediate or register operand valid for mode. +

+ +
+— Function: nonimmediate_operand
+

This predicate allows any register or memory operand valid for mode. +

+ +
+— Function: general_operand
+

This predicate allows any immediate, register, or memory operand +valid for mode. +

+ +

Finally, there is one generic operator predicate. + +

+— Function: comparison_operator
+

This predicate matches any expression which performs an arithmetic +comparison in mode; that is, COMPARISON_P is true for the +expression code. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Macros-and-Functions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Macros-and-Functions.html new file mode 100644 index 0000000..b2c6328 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Macros-and-Functions.html @@ -0,0 +1,62 @@ + + +Macros and Functions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Tree overview +



+
+ +

9.2.1 Trees

+ +

+This section is not here yet. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Macros-for-Initialization.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Macros-for-Initialization.html new file mode 100644 index 0000000..72da414 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Macros-for-Initialization.html @@ -0,0 +1,215 @@ + + +Macros for Initialization - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Initialization, +Up: Assembler Format +



+
+ +

15.21.6 Macros Controlling Initialization Routines

+ +

Here are the macros that control how the compiler handles initialization +and termination functions: + +

+— Macro: INIT_SECTION_ASM_OP
+

If defined, a C string constant, including spacing, for the assembler +operation to identify the following data as initialization code. If not +defined, GCC will assume such a section does not exist. When you are +using special sections for initialization and termination functions, this +macro also controls how crtstuff.c and libgcc2.c arrange to +run the initialization functions. +

+ +
+— Macro: HAS_INIT_SECTION
+

If defined, main will not call __main as described above. +This macro should be defined for systems that control start-up code +on a symbol-by-symbol basis, such as OSF/1, and should not +be defined explicitly for systems that support INIT_SECTION_ASM_OP. +

+ +
+— Macro: LD_INIT_SWITCH
+

If defined, a C string constant for a switch that tells the linker that +the following symbol is an initialization routine. +

+ +
+— Macro: LD_FINI_SWITCH
+

If defined, a C string constant for a switch that tells the linker that +the following symbol is a finalization routine. +

+ +
+— Macro: COLLECT_SHARED_INIT_FUNC (stream, func)
+

If defined, a C statement that will write a function that can be +automatically called when a shared library is loaded. The function +should call func, which takes no arguments. If not defined, and +the object format requires an explicit initialization function, then a +function called _GLOBAL__DI will be generated. + +

This function and the following one are used by collect2 when linking a +shared library that needs constructors or destructors, or has DWARF2 +exception tables embedded in the code. +

+ +
+— Macro: COLLECT_SHARED_FINI_FUNC (stream, func)
+

If defined, a C statement that will write a function that can be +automatically called when a shared library is unloaded. The function +should call func, which takes no arguments. If not defined, and +the object format requires an explicit finalization function, then a +function called _GLOBAL__DD will be generated. +

+ +
+— Macro: INVOKE__main
+

If defined, main will call __main despite the presence of +INIT_SECTION_ASM_OP. This macro should be defined for systems +where the init section is not actually run automatically, but is still +useful for collecting the lists of constructors and destructors. +

+ +
+— Macro: SUPPORTS_INIT_PRIORITY
+

If nonzero, the C++ init_priority attribute is supported and the +compiler should emit instructions to control the order of initialization +of objects. If zero, the compiler will issue an error message upon +encountering an init_priority attribute. +

+ +
+— Target Hook: bool TARGET_HAVE_CTORS_DTORS
+

This value is true if the target supports some “native” method of +collecting constructors and destructors to be run at startup and exit. +It is false if we must use collect2. +

+ +
+— Target Hook: void TARGET_ASM_CONSTRUCTOR (rtx symbol, int priority)
+

If defined, a function that outputs assembler code to arrange to call +the function referenced by symbol at initialization time. + +

Assume that symbol is a SYMBOL_REF for a function taking +no arguments and with no return value. If the target supports initialization +priorities, priority is a value between 0 and MAX_INIT_PRIORITY; +otherwise it must be DEFAULT_INIT_PRIORITY. + +

If this macro is not defined by the target, a suitable default will +be chosen if (1) the target supports arbitrary section names, (2) the +target defines CTORS_SECTION_ASM_OP, or (3) USE_COLLECT2 +is not defined. +

+ +
+— Target Hook: void TARGET_ASM_DESTRUCTOR (rtx symbol, int priority)
+

This is like TARGET_ASM_CONSTRUCTOR but used for termination +functions rather than initialization functions. +

+ +

If TARGET_HAVE_CTORS_DTORS is true, the initialization routine +generated for the generated object file will have static linkage. + +

If your system uses collect2 as the means of processing +constructors, then that program normally uses nm to scan +an object file for constructor functions to be called. + +

On certain kinds of systems, you can define this macro to make +collect2 work faster (and, in some cases, make it work at all): + +

+— Macro: OBJECT_FORMAT_COFF
+

Define this macro if the system uses COFF (Common Object File Format) +object files, so that collect2 can assume this format and scan +object files directly for dynamic constructor/destructor functions. + +

This macro is effective only in a native compiler; collect2 as +part of a cross compiler always uses nm for the target machine. +

+ +
+— Macro: REAL_NM_FILE_NAME
+

Define this macro as a C string constant containing the file name to use +to execute nm. The default is to search the path normally for +nm. + +

If your system supports shared libraries and has a program to list the +dynamic dependencies of a given library or executable, you can define +these macros to enable support for running initialization and +termination functions in shared libraries: +

+ +
+— Macro: LDD_SUFFIX
+

Define this macro to a C string constant containing the name of the program +which lists dynamic dependencies, like "ldd" under SunOS 4. +

+ +
+— Macro: PARSE_LDD_OUTPUT (ptr)
+

Define this macro to be C code that extracts filenames from the output +of the program denoted by LDD_SUFFIX. ptr is a variable +of type char * that points to the beginning of a line of output +from LDD_SUFFIX. If the line lists a dynamic dependency, the +code must advance ptr to the beginning of the filename on that +line. Otherwise, it must set ptr to NULL. +

+ +
+— Macro: SHLIB_SUFFIX
+

Define this macro to a C string constant containing the default shared +library extension of the target (e.g., ".so"). collect2 +strips version information after this suffix when generating global +constructor and destructor names. This define is only needed on targets +that use collect2 to process constructors and destructors. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Maintaining-the-CFG.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Maintaining-the-CFG.html new file mode 100644 index 0000000..3925ae5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Maintaining-the-CFG.html @@ -0,0 +1,191 @@ + + +Maintaining the CFG - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Profile information, +Up: Control Flow +



+
+ +

13.4 Maintaining the CFG

+ +

+An important task of each compiler pass is to keep both the control +flow graph and all profile information up-to-date. Reconstruction of +the control flow graph after each pass is not an option, since it may be +very expensive and lost profile information cannot be reconstructed at +all. + +

GCC has two major intermediate representations, and both use the +basic_block and edge data types to represent control +flow. Both representations share as much of the CFG maintenance code +as possible. For each representation, a set of hooks is defined +so that each representation can provide its own implementation of CFG +manipulation routines when necessary. These hooks are defined in +cfghooks.h. There are hooks for almost all common CFG +manipulations, including block splitting and merging, edge redirection +and creating and deleting basic blocks. These hooks should provide +everything you need to maintain and manipulate the CFG in both the RTL +and tree representation. + +

At the moment, the basic block boundaries are maintained transparently +when modifying instructions, so there rarely is a need to move them +manually (such as in case someone wants to output instruction outside +basic block explicitly). +Often the CFG may be better viewed as integral part of instruction +chain, than structure built on the top of it. However, in principle +the control flow graph for the tree representation is +not an integral part of the representation, in that a function +tree may be expanded without first building a flow graph for the +tree representation at all. This happens when compiling +without any tree optimization enabled. When the tree +optimizations are enabled and the instruction stream is rewritten in +SSA form, the CFG is very tightly coupled with the instruction stream. +In particular, statement insertion and removal has to be done with +care. In fact, the whole tree representation can not be easily +used or maintained without proper maintenance of the CFG +simultaneously. + +

In the RTL representation, each instruction has a +BLOCK_FOR_INSN value that represents pointer to the basic block +that contains the instruction. In the tree representation, the +function bb_for_stmt returns a pointer to the basic block +containing the queried statement. + +

When changes need to be applied to a function in its tree +representation, block statement iterators should be used. These +iterators provide an integrated abstraction of the flow graph and the +instruction stream. Block statement iterators iterators are +constructed using the block_stmt_iterator data structure and +several modifier are available, including the following: + +

+
bsi_start
This function initializes a block_stmt_iterator that points to +the first non-empty statement in a basic block. + +
bsi_last
This function initializes a block_stmt_iterator that points to +the last statement in a basic block. + +
bsi_end_p
This predicate is true if a block_stmt_iterator +represents the end of a basic block. + +
bsi_next
This function takes a block_stmt_iterator and makes it point to +its successor. + +
bsi_prev
This function takes a block_stmt_iterator and makes it point to +its predecessor. + +
bsi_insert_after
This function inserts a statement after the block_stmt_iterator +passed in. The final parameter determines whether the statement +iterator is updated to point to the newly inserted statement, or left +pointing to the original statement. + +
bsi_insert_before
This function inserts a statement before the block_stmt_iterator +passed in. The final parameter determines whether the statement +iterator is updated to point to the newly inserted statement, or left +pointing to the original statement. + +
bsi_remove
This function removes the block_stmt_iterator passed in and +rechains the remaining statements in a basic block, if any. +
+ +

In the RTL representation, the macros BB_HEAD and BB_END +may be used to get the head and end rtx of a basic block. No +abstract iterators are defined for traversing the insn chain, but you +can just use NEXT_INSN and PREV_INSN instead. See +See Insns. + +

Usually a code manipulating pass simplifies the instruction stream and +the flow of control, possibly eliminating some edges. This may for +example happen when a conditional jump is replaced with an +unconditional jump, but also when simplifying possibly trapping +instruction to non-trapping while compiling Java. Updating of edges +is not transparent and each optimization pass is required to do so +manually. However only few cases occur in practice. The pass may +call purge_dead_edges on a given basic block to remove +superfluous edges, if any. + +

Another common scenario is redirection of branch instructions, but +this is best modeled as redirection of edges in the control flow graph +and thus use of redirect_edge_and_branch is preferred over more +low level functions, such as redirect_jump that operate on RTL +chain only. The CFG hooks defined in cfghooks.h should provide +the complete API required for manipulating and maintaining the CFG. + +

It is also possible that a pass has to insert control flow instruction +into the middle of a basic block, thus creating an entry point in the +middle of the basic block, which is impossible by definition: The +block must be split to make sure it only has one entry point, i.e. the +head of the basic block. The CFG hook split_block may be used +when an instruction in the middle of a basic block has to become the +target of a jump or branch instruction. + +

For a global optimizer, a common operation is to split edges in the +flow graph and insert instructions on them. In the RTL +representation, this can be easily done using the +insert_insn_on_edge function that emits an instruction +“on the edge”, caching it for a later commit_edge_insertions +call that will take care of moving the inserted instructions off the +edge into the instruction stream contained in a basic block. This +includes the creation of new basic blocks where needed. In the +tree representation, the equivalent functions are +bsi_insert_on_edge which inserts a block statement +iterator on an edge, and bsi_commit_edge_inserts which flushes +the instruction to actual instruction stream. + +

While debugging the optimization pass, an verify_flow_info +function may be useful to find bugs in the control flow graph updating +code. + +

Note that at present, the representation of control flow in the +tree representation is discarded before expanding to RTL. +Long term the CFG should be maintained and “expanded” to the +RTL representation along with the function tree itself. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Makefile.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Makefile.html new file mode 100644 index 0000000..b2eea35 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Makefile.html @@ -0,0 +1,218 @@ + + +Makefile - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Build, +Up: gcc Directory +



+
+ +

6.3.4 Makefile Targets

+ +

+These targets are available from the gcc directory: + +

+
all
This is the default target. Depending on what your build/host/target +configuration is, it coordinates all the things that need to be built. + +
doc
Produce info-formatted documentation and man pages. Essentially it +calls make man and make info. + +
dvi
Produce DVI-formatted documentation. + +
pdf
Produce PDF-formatted documentation. + +
html
Produce HTML-formatted documentation. + +
man
Generate man pages. + +
info
Generate info-formatted pages. + +
mostlyclean
Delete the files made while building the compiler. + +
clean
That, and all the other files built by make all. + +
distclean
That, and all the files created by configure. + +
maintainer-clean
Distclean plus any file that can be generated from other files. Note +that additional tools may be required beyond what is normally needed to +build gcc. + +
srcextra
Generates files in the source directory that do not exist in CVS but +should go into a release tarball. One example is gcc/java/parse.c +which is generated from the CVS source file gcc/java/parse.y. + +
srcinfo
srcman
Copies the info-formatted and manpage documentation into the source +directory usually for the purpose of generating a release tarball. + +
install
Installs gcc. + +
uninstall
Deletes installed files. + +
check
Run the testsuite. This creates a testsuite subdirectory that +has various .sum and .log files containing the results of +the testing. You can run subsets with, for example, make check-gcc. +You can specify specific tests by setting RUNTESTFLAGS to be the name +of the .exp file, optionally followed by (for some tests) an equals +and a file wildcard, like: + +
          make check-gcc RUNTESTFLAGS="execute.exp=19980413-*"
+     
+

Note that running the testsuite may require additional tools be +installed, such as TCL or dejagnu. +

+ +

The toplevel tree from which you start GCC compilation is not +the GCC directory, but rather a complex Makefile that coordinates +the various steps of the build, including bootstrapping the compiler +and using the new compiler to build target libraries. + +

When GCC is configured for a native configuration, the default action +for make is to do a full three-stage bootstrap. This means +that GCC is built three times—once with the native compiler, once with +the native-built compiler it just built, and once with the compiler it +built the second time. In theory, the last two should produce the same +results, which make compare can check. Each stage is configured +separately and compiled into a separate directory, to minimize problems +due to ABI incompatibilities between the native compiler and GCC. + +

If you do a change, rebuilding will also start from the first stage +and “bubble” up the change through the three stages. Each stage +is taken from its build directory (if it had been built previously), +rebuilt, and copied to its subdirectory. This will allow you to, for +example, continue a bootstrap after fixing a bug which causes the +stage2 build to crash. It does not provide as good coverage of the +compiler as bootstrapping from scratch, but it ensures that the new +code is syntactically correct (e.g., that you did not use GCC extensions +by mistake), and avoids spurious bootstrap comparison +failures1. + +

Other targets available from the top level include: + +

+
bootstrap-lean
Like bootstrap, except that the various stages are removed once +they're no longer needed. This saves disk space. + +
bootstrap2
bootstrap2-lean
Performs only the first two stages of bootstrap. Unlike a three-stage +bootstrap, this does not perform a comparison to test that the compiler +is running properly. Note that the disk space required by a “lean” +bootstrap is approximately independent of the number of stages. + +
stageN-bubble (N = 1...4)
Rebuild all the stages up to N, with the appropriate flags, +“bubbling” the changes as described above. + +
all-stageN (N = 1...4)
Assuming that stage N has already been built, rebuild it with the +appropriate flags. This is rarely needed. + +
cleanstrap
Remove everything (make clean) and rebuilds (make bootstrap). + +
compare
Compares the results of stages 2 and 3. This ensures that the compiler +is running properly, since it should produce the same object files +regardless of how it itself was compiled. + +
profiledbootstrap
Builds a compiler with profiling feedback information. For more +information, see +Building with profile feedback (Installing GCC). + +
restrap
Restart a bootstrap, so that everything that was not built with +the system compiler is rebuilt. + +
stageN-start (N = 1...4)
For each package that is bootstrapped, rename directories so that, +for example, gcc points to the stageN GCC, compiled +with the stageN-1 GCC2. + +

You will invoke this target if you need to test or debug the +stageN GCC. If you only need to execute GCC (but you need +not run make either to rebuild it or to run test suites), +you should be able to work directly in the stageN-gcc +directory. This makes it easier to debug multiple stages in +parallel. + +

stage
For each package that is bootstrapped, relocate its build directory +to indicate its stage. For example, if the gcc directory +points to the stage2 GCC, after invoking this target it will be +renamed to stage2-gcc. + +
+ +

If you wish to use non-default GCC flags when compiling the stage2 and +stage3 compilers, set BOOT_CFLAGS on the command line when doing +make. + +

Usually, the first stage only builds the languages that the compiler +is written in: typically, C and maybe Ada. If you are debugging a +miscompilation of a different stage2 front-end (for example, of the +Fortran front-end), you may want to have front-ends for other languages +in the first stage as well. To do so, set STAGE1_LANGUAGES +on the command line when doing make. + +

For example, in the aforementioned scenario of debugging a Fortran +front-end miscompilation caused by the stage1 compiler, you may need a +command like + +

     make stage2-bubble STAGE1_LANGUAGES=c,fortran
+
+

Alternatively, you can use per-language targets to build and test +languages that are not enabled by default in stage1. For example, +make f951 will build a Fortran compiler even in the stage1 +build directory. + +

+
+

Footnotes

[1] Except if the compiler was buggy and miscompiled + some of the files that were not modified. In this case, it's best + to use make restrap.

+ +

[2] Customarily, the system compiler + is also termed the stage0 GCC.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Man-Page-Generation.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Man-Page-Generation.html new file mode 100644 index 0000000..3a95d52 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Man-Page-Generation.html @@ -0,0 +1,95 @@ + + +Man Page Generation - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Texinfo Manuals, +Up: Documentation +



+
+ +
6.3.7.2 Man Page Generation
+ +

Because of user demand, in addition to full Texinfo manuals, man pages +are provided which contain extracts from those manuals. These man +pages are generated from the Texinfo manuals using +contrib/texi2pod.pl and pod2man. (The man page for +g++, cp/g++.1, just contains a .so reference +to gcc.1, but all the other man pages are generated from +Texinfo manuals.) + +

Because many systems may not have the necessary tools installed to +generate the man pages, they are only generated if the +configure script detects that recent enough tools are +installed, and the Makefiles allow generating man pages to fail +without aborting the build. Man pages are also included in release +distributions. They are generated in the source directory. + +

Magic comments in Texinfo files starting @c man control what +parts of a Texinfo file go into a man page. Only a subset of Texinfo +is supported by texi2pod.pl, and it may be necessary to add +support for more Texinfo features to this script when generating new +man pages. To improve the man page output, some special Texinfo +macros are provided in doc/include/gcc-common.texi which +texi2pod.pl understands: + +

+
@gcctabopt
Use in the form @table @gcctabopt for tables of options, +where for printed output the effect of @code is better than +that of @option but for man page output a different effect is +wanted. +
@gccoptlist
Use for summary lists of options in manuals. +
@gol
Use at the end of each line inside @gccoptlist. This is +necessary to avoid problems with differences in how the +@gccoptlist macro is handled by different Texinfo formatters. +
+ +

FIXME: describe the texi2pod.pl input language and magic +comments in more detail. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Misc.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Misc.html new file mode 100644 index 0000000..4d22084 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Misc.html @@ -0,0 +1,1137 @@ + + +Misc - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: C++ ABI, +Up: Target Macros +



+
+ +

15.29 Miscellaneous Parameters

+ +

+ +Here are several miscellaneous parameters. + +

+— Macro: HAS_LONG_COND_BRANCH
+

Define this boolean macro to indicate whether or not your architecture +has conditional branches that can span all of memory. It is used in +conjunction with an optimization that partitions hot and cold basic +blocks into separate sections of the executable. If this macro is +set to false, gcc will convert any conditional branches that attempt +to cross between sections into unconditional branches or indirect jumps. +

+ +
+— Macro: HAS_LONG_UNCOND_BRANCH
+

Define this boolean macro to indicate whether or not your architecture +has unconditional branches that can span all of memory. It is used in +conjunction with an optimization that partitions hot and cold basic +blocks into separate sections of the executable. If this macro is +set to false, gcc will convert any unconditional branches that attempt +to cross between sections into indirect jumps. +

+ +
+— Macro: CASE_VECTOR_MODE
+

An alias for a machine mode name. This is the machine mode that +elements of a jump-table should have. +

+ +
+— Macro: CASE_VECTOR_SHORTEN_MODE (min_offset, max_offset, body)
+

Optional: return the preferred mode for an addr_diff_vec +when the minimum and maximum offset are known. If you define this, +it enables extra code in branch shortening to deal with addr_diff_vec. +To make this work, you also have to define INSN_ALIGN and +make the alignment for addr_diff_vec explicit. +The body argument is provided so that the offset_unsigned and scale +flags can be updated. +

+ +
+— Macro: CASE_VECTOR_PC_RELATIVE
+

Define this macro to be a C expression to indicate when jump-tables +should contain relative addresses. You need not define this macro if +jump-tables never contain relative addresses, or jump-tables should +contain relative addresses only when -fPIC or -fPIC +is in effect. +

+ +
+— Macro: CASE_VALUES_THRESHOLD
+

Define this to be the smallest number of different values for which it +is best to use a jump-table instead of a tree of conditional branches. +The default is four for machines with a casesi instruction and +five otherwise. This is best for most machines. +

+ +
+— Macro: CASE_USE_BIT_TESTS
+

Define this macro to be a C expression to indicate whether C switch +statements may be implemented by a sequence of bit tests. This is +advantageous on processors that can efficiently implement left shift +of 1 by the number of bits held in a register, but inappropriate on +targets that would require a loop. By default, this macro returns +true if the target defines an ashlsi3 pattern, and +false otherwise. +

+ +
+— Macro: WORD_REGISTER_OPERATIONS
+

Define this macro if operations between registers with integral mode +smaller than a word are always performed on the entire register. +Most RISC machines have this property and most CISC machines do not. +

+ +
+— Macro: LOAD_EXTEND_OP (mem_mode)
+

Define this macro to be a C expression indicating when insns that read +memory in mem_mode, an integral mode narrower than a word, set the +bits outside of mem_mode to be either the sign-extension or the +zero-extension of the data read. Return SIGN_EXTEND for values +of mem_mode for which the +insn sign-extends, ZERO_EXTEND for which it zero-extends, and +UNKNOWN for other modes. + +

This macro is not called with mem_mode non-integral or with a width +greater than or equal to BITS_PER_WORD, so you may return any +value in this case. Do not define this macro if it would always return +UNKNOWN. On machines where this macro is defined, you will normally +define it as the constant SIGN_EXTEND or ZERO_EXTEND. + +

You may return a non-UNKNOWN value even if for some hard registers +the sign extension is not performed, if for the REGNO_REG_CLASS +of these hard registers CANNOT_CHANGE_MODE_CLASS returns nonzero +when the from mode is mem_mode and the to mode is any +integral mode larger than this but not larger than word_mode. + +

You must return UNKNOWN if for some hard registers that allow this +mode, CANNOT_CHANGE_MODE_CLASS says that they cannot change to +word_mode, but that they can change to another integral mode that +is larger then mem_mode but still smaller than word_mode. +

+ +
+— Macro: SHORT_IMMEDIATES_SIGN_EXTEND
+

Define this macro if loading short immediate values into registers sign +extends. +

+ +
+— Macro: FIXUNS_TRUNC_LIKE_FIX_TRUNC
+

Define this macro if the same instructions that convert a floating +point number to a signed fixed point number also convert validly to an +unsigned one. +

+ +
+— Target Hook: int TARGET_MIN_DIVISIONS_FOR_RECIP_MUL (enum machine_mode mode)
+

When -ffast-math is in effect, GCC tries to optimize +divisions by the same divisor, by turning them into multiplications by +the reciprocal. This target hook specifies the minimum number of divisions +that should be there for GCC to perform the optimization for a variable +of mode mode. The default implementation returns 3 if the machine +has an instruction for the division, and 2 if it does not. +

+ +
+— Macro: MOVE_MAX
+

The maximum number of bytes that a single instruction can move quickly +between memory and registers or between two memory locations. +

+ +
+— Macro: MAX_MOVE_MAX
+

The maximum number of bytes that a single instruction can move quickly +between memory and registers or between two memory locations. If this +is undefined, the default is MOVE_MAX. Otherwise, it is the +constant value that is the largest value that MOVE_MAX can have +at run-time. +

+ +
+— Macro: SHIFT_COUNT_TRUNCATED
+

A C expression that is nonzero if on this machine the number of bits +actually used for the count of a shift operation is equal to the number +of bits needed to represent the size of the object being shifted. When +this macro is nonzero, the compiler will assume that it is safe to omit +a sign-extend, zero-extend, and certain bitwise `and' instructions that +truncates the count of a shift operation. On machines that have +instructions that act on bit-fields at variable positions, which may +include `bit test' instructions, a nonzero SHIFT_COUNT_TRUNCATED +also enables deletion of truncations of the values that serve as +arguments to bit-field instructions. + +

If both types of instructions truncate the count (for shifts) and +position (for bit-field operations), or if no variable-position bit-field +instructions exist, you should define this macro. + +

However, on some machines, such as the 80386 and the 680x0, truncation +only applies to shift operations and not the (real or pretended) +bit-field operations. Define SHIFT_COUNT_TRUNCATED to be zero on +such machines. Instead, add patterns to the md file that include +the implied truncation of the shift instructions. + +

You need not define this macro if it would always have the value of zero. +

+ +

+ +

+— Target Hook: int TARGET_SHIFT_TRUNCATION_MASK (enum machine_mode mode)
+

This function describes how the standard shift patterns for mode +deal with shifts by negative amounts or by more than the width of the mode. +See shift patterns. + +

On many machines, the shift patterns will apply a mask m to the +shift count, meaning that a fixed-width shift of x by y is +equivalent to an arbitrary-width shift of x by y & m. If +this is true for mode mode, the function should return m, +otherwise it should return 0. A return value of 0 indicates that no +particular behavior is guaranteed. + +

Note that, unlike SHIFT_COUNT_TRUNCATED, this function does +not apply to general shift rtxes; it applies only to instructions +that are generated by the named shift patterns. + +

The default implementation of this function returns +GET_MODE_BITSIZE (mode) - 1 if SHIFT_COUNT_TRUNCATED +and 0 otherwise. This definition is always safe, but if +SHIFT_COUNT_TRUNCATED is false, and some shift patterns +nevertheless truncate the shift count, you may get better code +by overriding it. +

+ +
+— Macro: TRULY_NOOP_TRUNCATION (outprec, inprec)
+

A C expression which is nonzero if on this machine it is safe to +“convert” an integer of inprec bits to one of outprec +bits (where outprec is smaller than inprec) by merely +operating on it as if it had only outprec bits. + +

On many machines, this expression can be 1. + + + +

When TRULY_NOOP_TRUNCATION returns 1 for a pair of sizes for +modes for which MODES_TIEABLE_P is 0, suboptimal code can result. +If this is the case, making TRULY_NOOP_TRUNCATION return 0 in +such cases may improve things. +

+ +
+— Target Hook: int TARGET_MODE_REP_EXTENDED (enum machine_mode mode, enum machine_mode rep_mode)
+

The representation of an integral mode can be such that the values +are always extended to a wider integral mode. Return +SIGN_EXTEND if values of mode are represented in +sign-extended form to rep_mode. Return UNKNOWN +otherwise. (Currently, none of the targets use zero-extended +representation this way so unlike LOAD_EXTEND_OP, +TARGET_MODE_REP_EXTENDED is expected to return either +SIGN_EXTEND or UNKNOWN. Also no target extends +mode to mode_rep so that mode_rep is not the next +widest integral mode and currently we take advantage of this fact.) + +

Similarly to LOAD_EXTEND_OP you may return a non-UNKNOWN +value even if the extension is not performed on certain hard registers +as long as for the REGNO_REG_CLASS of these hard registers +CANNOT_CHANGE_MODE_CLASS returns nonzero. + +

Note that TARGET_MODE_REP_EXTENDED and LOAD_EXTEND_OP +describe two related properties. If you define +TARGET_MODE_REP_EXTENDED (mode, word_mode) you probably also want +to define LOAD_EXTEND_OP (mode) to return the same type of +extension. + +

In order to enforce the representation of mode, +TRULY_NOOP_TRUNCATION should return false when truncating to +mode. +

+ +
+— Macro: STORE_FLAG_VALUE
+

A C expression describing the value returned by a comparison operator +with an integral mode and stored by a store-flag instruction +(scond) when the condition is true. This description must +apply to all the scond patterns and all the +comparison operators whose results have a MODE_INT mode. + +

A value of 1 or −1 means that the instruction implementing the +comparison operator returns exactly 1 or −1 when the comparison is true +and 0 when the comparison is false. Otherwise, the value indicates +which bits of the result are guaranteed to be 1 when the comparison is +true. This value is interpreted in the mode of the comparison +operation, which is given by the mode of the first operand in the +scond pattern. Either the low bit or the sign bit of +STORE_FLAG_VALUE be on. Presently, only those bits are used by +the compiler. + +

If STORE_FLAG_VALUE is neither 1 or −1, the compiler will +generate code that depends only on the specified bits. It can also +replace comparison operators with equivalent operations if they cause +the required bits to be set, even if the remaining bits are undefined. +For example, on a machine whose comparison operators return an +SImode value and where STORE_FLAG_VALUE is defined as +0x80000000, saying that just the sign bit is relevant, the +expression + +

          (ne:SI (and:SI x (const_int power-of-2)) (const_int 0))
+     
+

can be converted to + +

          (ashift:SI x (const_int n))
+     
+

where n is the appropriate shift count to move the bit being +tested into the sign bit. + +

There is no way to describe a machine that always sets the low-order bit +for a true value, but does not guarantee the value of any other bits, +but we do not know of any machine that has such an instruction. If you +are trying to port GCC to such a machine, include an instruction to +perform a logical-and of the result with 1 in the pattern for the +comparison operators and let us know at gcc@gcc.gnu.org. + +

Often, a machine will have multiple instructions that obtain a value +from a comparison (or the condition codes). Here are rules to guide the +choice of value for STORE_FLAG_VALUE, and hence the instructions +to be used: + +

    +
  • Use the shortest sequence that yields a valid definition for +STORE_FLAG_VALUE. It is more efficient for the compiler to +“normalize” the value (convert it to, e.g., 1 or 0) than for the +comparison operators to do so because there may be opportunities to +combine the normalization with other operations. + +
  • For equal-length sequences, use a value of 1 or −1, with −1 being +slightly preferred on machines with expensive jumps and 1 preferred on +other machines. + +
  • As a second choice, choose a value of 0x80000001 if instructions +exist that set both the sign and low-order bits but do not define the +others. + +
  • Otherwise, use a value of 0x80000000. +
+ +

Many machines can produce both the value chosen for +STORE_FLAG_VALUE and its negation in the same number of +instructions. On those machines, you should also define a pattern for +those cases, e.g., one matching + +

          (set A (neg:m (ne:m B C)))
+     
+

Some machines can also perform and or plus operations on +condition code values with less instructions than the corresponding +scond insn followed by and or plus. On those +machines, define the appropriate patterns. Use the names incscc +and decscc, respectively, for the patterns which perform +plus or minus operations on condition code values. See +rs6000.md for some examples. The GNU Superoptizer can be used to +find such instruction sequences on other machines. + +

If this macro is not defined, the default value, 1, is used. You need +not define STORE_FLAG_VALUE if the machine has no store-flag +instructions, or if the value generated by these instructions is 1. +

+ +
+— Macro: FLOAT_STORE_FLAG_VALUE (mode)
+

A C expression that gives a nonzero REAL_VALUE_TYPE value that is +returned when comparison operators with floating-point results are true. +Define this macro on machines that have comparison operations that return +floating-point values. If there are no such operations, do not define +this macro. +

+ +
+— Macro: VECTOR_STORE_FLAG_VALUE (mode)
+

A C expression that gives a rtx representing the nonzero true element +for vector comparisons. The returned rtx should be valid for the inner +mode of mode which is guaranteed to be a vector mode. Define +this macro on machines that have vector comparison operations that +return a vector result. If there are no such operations, do not define +this macro. Typically, this macro is defined as const1_rtx or +constm1_rtx. This macro may return NULL_RTX to prevent +the compiler optimizing such vector comparison operations for the +given mode. +

+ +
+— Macro: CLZ_DEFINED_VALUE_AT_ZERO (mode, value)
+— Macro: CTZ_DEFINED_VALUE_AT_ZERO (mode, value)
+

A C expression that indicates whether the architecture defines a value +for clz or ctz with a zero operand. +A result of 0 indicates the value is undefined. +If the value is defined for only the RTL expression, the macro should +evaluate to 1; if the value applies also to the corresponding optab +entry (which is normally the case if it expands directly into +the corresponding RTL), then the macro should evaluate to 2. +In the cases where the value is defined, value should be set to +this value. + +

If this macro is not defined, the value of clz or +ctz at zero is assumed to be undefined. + +

This macro must be defined if the target's expansion for ffs +relies on a particular value to get correct results. Otherwise it +is not necessary, though it may be used to optimize some corner cases, and +to provide a default expansion for the ffs optab. + +

Note that regardless of this macro the “definedness” of clz +and ctz at zero do not extend to the builtin functions +visible to the user. Thus one may be free to adjust the value at will +to match the target expansion of these operations without fear of +breaking the API. +

+ +
+— Macro: Pmode
+

An alias for the machine mode for pointers. On most machines, define +this to be the integer mode corresponding to the width of a hardware +pointer; SImode on 32-bit machine or DImode on 64-bit machines. +On some machines you must define this to be one of the partial integer +modes, such as PSImode. + +

The width of Pmode must be at least as large as the value of +POINTER_SIZE. If it is not equal, you must define the macro +POINTERS_EXTEND_UNSIGNED to specify how pointers are extended +to Pmode. +

+ +
+— Macro: FUNCTION_MODE
+

An alias for the machine mode used for memory references to functions +being called, in call RTL expressions. On most CISC machines, +where an instruction can begin at any byte address, this should be +QImode. On most RISC machines, where all instructions have fixed +size and alignment, this should be a mode with the same size and alignment +as the machine instruction words - typically SImode or HImode. +

+ +
+— Macro: STDC_0_IN_SYSTEM_HEADERS
+

In normal operation, the preprocessor expands __STDC__ to the +constant 1, to signify that GCC conforms to ISO Standard C. On some +hosts, like Solaris, the system compiler uses a different convention, +where __STDC__ is normally 0, but is 1 if the user specifies +strict conformance to the C Standard. + +

Defining STDC_0_IN_SYSTEM_HEADERS makes GNU CPP follows the host +convention when processing system header files, but when processing user +files __STDC__ will always expand to 1. +

+ +
+— Macro: NO_IMPLICIT_EXTERN_C
+

Define this macro if the system header files support C++ as well as C. +This macro inhibits the usual method of using system header files in +C++, which is to pretend that the file's contents are enclosed in +extern "C" {...}. +

+ +

+ +

+— Macro: REGISTER_TARGET_PRAGMAS ()
+

Define this macro if you want to implement any target-specific pragmas. +If defined, it is a C expression which makes a series of calls to +c_register_pragma or c_register_pragma_with_expansion +for each pragma. The macro may also do any +setup required for the pragmas. + +

The primary reason to define this macro is to provide compatibility with +other compilers for the same target. In general, we discourage +definition of target-specific pragmas for GCC. + +

If the pragma can be implemented by attributes then you should consider +defining the target hook TARGET_INSERT_ATTRIBUTES as well. + +

Preprocessor macros that appear on pragma lines are not expanded. All +#pragma directives that do not match any registered pragma are +silently ignored, unless the user specifies -Wunknown-pragmas. +

+ +
+— Function: void c_register_pragma (const char *space, const char *name, void (*callback) (struct cpp_reader *))
+— Function: void c_register_pragma_with_expansion (const char *space, const char *name, void (*callback) (struct cpp_reader *))
+
+

Each call to c_register_pragma or +c_register_pragma_with_expansion establishes one pragma. The +callback routine will be called when the preprocessor encounters a +pragma of the form + +

          #pragma [space] name ...
+     
+

space is the case-sensitive namespace of the pragma, or +NULL to put the pragma in the global namespace. The callback +routine receives pfile as its first argument, which can be passed +on to cpplib's functions if necessary. You can lex tokens after the +name by calling pragma_lex. Tokens that are not read by the +callback will be silently ignored. The end of the line is indicated by +a token of type CPP_EOF. Macro expansion occurs on the +arguments of pragmas registered with +c_register_pragma_with_expansion but not on the arguments of +pragmas registered with c_register_pragma. + +

Note that the use of pragma_lex is specific to the C and C++ +compilers. It will not work in the Java or Fortran compilers, or any +other language compilers for that matter. Thus if pragma_lex is going +to be called from target-specific code, it must only be done so when +building the C and C++ compilers. This can be done by defining the +variables c_target_objs and cxx_target_objs in the +target entry in the config.gcc file. These variables should name +the target-specific, language-specific object file which contains the +code that uses pragma_lex. Note it will also be necessary to add a +rule to the makefile fragment pointed to by tmake_file that shows +how to build this object file. +

+ +

+ +

+— Macro: HANDLE_SYSV_PRAGMA
+

Define this macro (to a value of 1) if you want the System V style +pragmas #pragma pack(<n>) and #pragma weak <name> +[=<value>] to be supported by gcc. + +

The pack pragma specifies the maximum alignment (in bytes) of fields +within a structure, in much the same way as the __aligned__ and +__packed__ __attribute__s do. A pack value of zero resets +the behavior to the default. + +

A subtlety for Microsoft Visual C/C++ style bit-field packing +(e.g. -mms-bitfields) for targets that support it: +When a bit-field is inserted into a packed record, the whole size +of the underlying type is used by one or more same-size adjacent +bit-fields (that is, if its long:3, 32 bits is used in the record, +and any additional adjacent long bit-fields are packed into the same +chunk of 32 bits. However, if the size changes, a new field of that +size is allocated). + +

If both MS bit-fields and __attribute__((packed)) are used, +the latter will take precedence. If __attribute__((packed)) is +used on a single field when MS bit-fields are in use, it will take +precedence for that field, but the alignment of the rest of the structure +may affect its placement. + +

The weak pragma only works if SUPPORTS_WEAK and +ASM_WEAKEN_LABEL are defined. If enabled it allows the creation +of specifically named weak labels, optionally with a value. +

+ +

+ +

+— Macro: HANDLE_PRAGMA_PACK_PUSH_POP
+

Define this macro (to a value of 1) if you want to support the Win32 +style pragmas #pragma pack(push[,n]) and #pragma +pack(pop). The pack(push,[n]) pragma specifies the maximum +alignment (in bytes) of fields within a structure, in much the same way as +the __aligned__ and __packed__ __attribute__s do. A +pack value of zero resets the behavior to the default. Successive +invocations of this pragma cause the previous values to be stacked, so +that invocations of #pragma pack(pop) will return to the previous +value. +

+ +
+— Macro: HANDLE_PRAGMA_PACK_WITH_EXPANSION
+

Define this macro, as well as +HANDLE_SYSV_PRAGMA, if macros should be expanded in the +arguments of #pragma pack. +

+ +
+— Macro: TARGET_DEFAULT_PACK_STRUCT
+

If your target requires a structure packing default other than 0 (meaning +the machine default), define this macro to the necessary value (in bytes). +This must be a value that would also be valid to use with +#pragma pack() (that is, a small power of two). +

+ +

+ +

+— Macro: HANDLE_PRAGMA_PUSH_POP_MACRO
+

Define this macro if you want to support the Win32 style pragmas +#pragma push_macro(macro-name-as-string) and #pragma +pop_macro(macro-name-as-string). The #pragma push_macro( +macro-name-as-string) pragma saves the named macro and via +#pragma pop_macro(macro-name-as-string) it will return to the +previous value. +

+ +
+— Macro: DOLLARS_IN_IDENTIFIERS
+

Define this macro to control use of the character $ in +identifier names for the C family of languages. 0 means $ is +not allowed by default; 1 means it is allowed. 1 is the default; +there is no need to define this macro in that case. +

+ +
+— Macro: NO_DOLLAR_IN_LABEL
+

Define this macro if the assembler does not accept the character +$ in label names. By default constructors and destructors in +G++ have $ in the identifiers. If this macro is defined, +. is used instead. +

+ +
+— Macro: NO_DOT_IN_LABEL
+

Define this macro if the assembler does not accept the character +. in label names. By default constructors and destructors in G++ +have names that use .. If this macro is defined, these names +are rewritten to avoid .. +

+ +
+— Macro: INSN_SETS_ARE_DELAYED (insn)
+

Define this macro as a C expression that is nonzero if it is safe for the +delay slot scheduler to place instructions in the delay slot of insn, +even if they appear to use a resource set or clobbered in insn. +insn is always a jump_insn or an insn; GCC knows that +every call_insn has this behavior. On machines where some insn +or jump_insn is really a function call and hence has this behavior, +you should define this macro. + +

You need not define this macro if it would always return zero. +

+ +
+— Macro: INSN_REFERENCES_ARE_DELAYED (insn)
+

Define this macro as a C expression that is nonzero if it is safe for the +delay slot scheduler to place instructions in the delay slot of insn, +even if they appear to set or clobber a resource referenced in insn. +insn is always a jump_insn or an insn. On machines where +some insn or jump_insn is really a function call and its operands +are registers whose use is actually in the subroutine it calls, you should +define this macro. Doing so allows the delay slot scheduler to move +instructions which copy arguments into the argument registers into the delay +slot of insn. + +

You need not define this macro if it would always return zero. +

+ +
+— Macro: MULTIPLE_SYMBOL_SPACES
+

Define this macro as a C expression that is nonzero if, in some cases, +global symbols from one translation unit may not be bound to undefined +symbols in another translation unit without user intervention. For +instance, under Microsoft Windows symbols must be explicitly imported +from shared libraries (DLLs). + +

You need not define this macro if it would always evaluate to zero. +

+ +
+— Target Hook: tree TARGET_MD_ASM_CLOBBERS (tree outputs, tree inputs, tree clobbers)
+

This target hook should add to clobbers STRING_CST trees for +any hard regs the port wishes to automatically clobber for an asm. +It should return the result of the last tree_cons used to add a +clobber. The outputs, inputs and clobber lists are the +corresponding parameters to the asm and may be inspected to avoid +clobbering a register that is an input or output of the asm. You can use +tree_overlaps_hard_reg_set, declared in tree.h, to test +for overlap with regards to asm-declared registers. +

+ +
+— Macro: MATH_LIBRARY
+

Define this macro as a C string constant for the linker argument to link +in the system math library, or "" if the target does not have a +separate math library. + +

You need only define this macro if the default of "-lm" is wrong. +

+ +
+— Macro: LIBRARY_PATH_ENV
+

Define this macro as a C string constant for the environment variable that +specifies where the linker should look for libraries. + +

You need only define this macro if the default of "LIBRARY_PATH" +is wrong. +

+ +
+— Macro: TARGET_POSIX_IO
+

Define this macro if the target supports the following POSIX file +functions, access, mkdir and file locking with fcntl / F_SETLKW. +Defining TARGET_POSIX_IO will enable the test coverage code +to use file locking when exiting a program, which avoids race conditions +if the program has forked. It will also create directories at run-time +for cross-profiling. +

+ +
+— Macro: MAX_CONDITIONAL_EXECUTE
+
+

A C expression for the maximum number of instructions to execute via +conditional execution instructions instead of a branch. A value of +BRANCH_COST+1 is the default if the machine does not use cc0, and +1 if it does use cc0. +

+ +
+— Macro: IFCVT_MODIFY_TESTS (ce_info, true_expr, false_expr)
+

Used if the target needs to perform machine-dependent modifications on the +conditionals used for turning basic blocks into conditionally executed code. +ce_info points to a data structure, struct ce_if_block, which +contains information about the currently processed blocks. true_expr +and false_expr are the tests that are used for converting the +then-block and the else-block, respectively. Set either true_expr or +false_expr to a null pointer if the tests cannot be converted. +

+ +
+— Macro: IFCVT_MODIFY_MULTIPLE_TESTS (ce_info, bb, true_expr, false_expr)
+

Like IFCVT_MODIFY_TESTS, but used when converting more complicated +if-statements into conditions combined by and and or operations. +bb contains the basic block that contains the test that is currently +being processed and about to be turned into a condition. +

+ +
+— Macro: IFCVT_MODIFY_INSN (ce_info, pattern, insn)
+

A C expression to modify the PATTERN of an INSN that is to +be converted to conditional execution format. ce_info points to +a data structure, struct ce_if_block, which contains information +about the currently processed blocks. +

+ +
+— Macro: IFCVT_MODIFY_FINAL (ce_info)
+

A C expression to perform any final machine dependent modifications in +converting code to conditional execution. The involved basic blocks +can be found in the struct ce_if_block structure that is pointed +to by ce_info. +

+ +
+— Macro: IFCVT_MODIFY_CANCEL (ce_info)
+

A C expression to cancel any machine dependent modifications in +converting code to conditional execution. The involved basic blocks +can be found in the struct ce_if_block structure that is pointed +to by ce_info. +

+ +
+— Macro: IFCVT_INIT_EXTRA_FIELDS (ce_info)
+

A C expression to initialize any extra fields in a struct ce_if_block +structure, which are defined by the IFCVT_EXTRA_FIELDS macro. +

+ +
+— Macro: IFCVT_EXTRA_FIELDS
+

If defined, it should expand to a set of field declarations that will be +added to the struct ce_if_block structure. These should be initialized +by the IFCVT_INIT_EXTRA_FIELDS macro. +

+ +
+— Target Hook: void TARGET_MACHINE_DEPENDENT_REORG ()
+

If non-null, this hook performs a target-specific pass over the +instruction stream. The compiler will run it at all optimization levels, +just before the point at which it normally does delayed-branch scheduling. + +

The exact purpose of the hook varies from target to target. Some use +it to do transformations that are necessary for correctness, such as +laying out in-function constant pools or avoiding hardware hazards. +Others use it as an opportunity to do some machine-dependent optimizations. + +

You need not implement the hook if it has nothing to do. The default +definition is null. +

+ +
+— Target Hook: void TARGET_INIT_BUILTINS ()
+

Define this hook if you have any machine-specific built-in functions +that need to be defined. It should be a function that performs the +necessary setup. + +

Machine specific built-in functions can be useful to expand special machine +instructions that would otherwise not normally be generated because +they have no equivalent in the source language (for example, SIMD vector +instructions or prefetch instructions). + +

To create a built-in function, call the function +lang_hooks.builtin_function +which is defined by the language front end. You can use any type nodes set +up by build_common_tree_nodes and build_common_tree_nodes_2; +only language front ends that use those two functions will call +TARGET_INIT_BUILTINS. +

+ +
+— Target Hook: rtx TARGET_EXPAND_BUILTIN (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore)
+
+

Expand a call to a machine specific built-in function that was set up by +TARGET_INIT_BUILTINS. exp is the expression for the +function call; the result should go to target if that is +convenient, and have mode mode if that is convenient. +subtarget may be used as the target for computing one of +exp's operands. ignore is nonzero if the value is to be +ignored. This function should return the result of the call to the +built-in function. +

+ +
+— Target Hook: tree TARGET_RESOLVE_OVERLOADED_BUILTIN (tree fndecl, tree arglist)
+
+

Select a replacement for a machine specific built-in function that +was set up by TARGET_INIT_BUILTINS. This is done +before regular type checking, and so allows the target to +implement a crude form of function overloading. fndecl is the +declaration of the built-in function. arglist is the list of +arguments passed to the built-in function. The result is a +complete expression that implements the operation, usually +another CALL_EXPR. +

+ +
+— Target Hook: tree TARGET_FOLD_BUILTIN (tree fndecl, tree arglist, bool ignore)
+
+

Fold a call to a machine specific built-in function that was set up by +TARGET_INIT_BUILTINS. fndecl is the declaration of the +built-in function. arglist is the list of arguments passed to +the built-in function. The result is another tree containing a +simplified expression for the call's result. If ignore is true +the value will be ignored. +

+ +
+— Target Hook: const char * TARGET_INVALID_WITHIN_DOLOOP (rtx insn)
+
+

Take an instruction in insn and return NULL if it is valid within a +low-overhead loop, otherwise return a string why doloop could not be applied. + +

Many targets use special registers for low-overhead looping. For any +instruction that clobbers these this function should return a string indicating +the reason why the doloop could not be applied. +By default, the RTL loop optimizer does not use a present doloop pattern for +loops containing function calls or branch on table instructions. +

+ +
+— Macro: MD_CAN_REDIRECT_BRANCH (branch1, branch2)
+
+

Take a branch insn in branch1 and another in branch2. +Return true if redirecting branch1 to the destination of +branch2 is possible. + +

On some targets, branches may have a limited range. Optimizing the +filling of delay slots can result in branches being redirected, and this +may in turn cause a branch offset to overflow. +

+ +
+— Target Hook: bool TARGET_COMMUTATIVE_P (rtx x, outer_code)
+

This target hook returns true if x is considered to be commutative. +Usually, this is just COMMUTATIVE_P (x), but the HP PA doesn't consider +PLUS to be commutative inside a MEM. outer_code is the rtx code +of the enclosing rtl, if known, otherwise it is UNKNOWN. +

+ +
+— Target Hook: rtx TARGET_ALLOCATE_INITIAL_VALUE (rtx hard_reg)
+
+

When the initial value of a hard register has been copied in a pseudo +register, it is often not necessary to actually allocate another register +to this pseudo register, because the original hard register or a stack slot +it has been saved into can be used. TARGET_ALLOCATE_INITIAL_VALUE +is called at the start of register allocation once for each hard register +that had its initial value copied by using +get_func_hard_reg_initial_val or get_hard_reg_initial_val. +Possible values are NULL_RTX, if you don't want +to do any special allocation, a REG rtx—that would typically be +the hard register itself, if it is known not to be clobbered—or a +MEM. +If you are returning a MEM, this is only a hint for the allocator; +it might decide to use another register anyways. +You may use current_function_leaf_function in the hook, functions +that use REG_N_SETS, to determine if the hard +register in question will not be clobbered. +The default value of this hook is NULL, which disables any special +allocation. +

+ +
+— Target Hook: int TARGET_UNSPEC_MAY_TRAP_P (const_rtx x, unsigned flags)
+

This target hook returns nonzero if x, an unspec or +unspec_volatile operation, might cause a trap. Targets can use +this hook to enhance precision of analysis for unspec and +unspec_volatile operations. You may call may_trap_p_1 +to analyze inner elements of x in which case flags should be +passed along. +

+ +
+— Target Hook: void TARGET_SET_CURRENT_FUNCTION (tree decl)
+

The compiler invokes this hook whenever it changes its current function +context (cfun). You can define this function if +the back end needs to perform any initialization or reset actions on a +per-function basis. For example, it may be used to implement function +attributes that affect register usage or code generation patterns. +The argument decl is the declaration for the new function context, +and may be null to indicate that the compiler has left a function context +and is returning to processing at the top level. +The default hook function does nothing. + +

GCC sets cfun to a dummy function context during initialization of +some parts of the back end. The hook function is not invoked in this +situation; you need not worry about the hook being invoked recursively, +or when the back end is in a partially-initialized state. +

+ +
+— Macro: TARGET_OBJECT_SUFFIX
+

Define this macro to be a C string representing the suffix for object +files on your target machine. If you do not define this macro, GCC will +use .o as the suffix for object files. +

+ +
+— Macro: TARGET_EXECUTABLE_SUFFIX
+

Define this macro to be a C string representing the suffix to be +automatically added to executable files on your target machine. If you +do not define this macro, GCC will use the null string as the suffix for +executable files. +

+ +
+— Macro: COLLECT_EXPORT_LIST
+

If defined, collect2 will scan the individual object files +specified on its command line and create an export list for the linker. +Define this macro for systems like AIX, where the linker discards +object files that are not referenced from main and uses export +lists. +

+ +
+— Macro: MODIFY_JNI_METHOD_CALL (mdecl)
+

Define this macro to a C expression representing a variant of the +method call mdecl, if Java Native Interface (JNI) methods +must be invoked differently from other methods on your target. +For example, on 32-bit Microsoft Windows, JNI methods must be invoked using +the stdcall calling convention and this macro is then +defined as this expression: + +

          build_type_attribute_variant (mdecl,
+                                        build_tree_list
+                                        (get_identifier ("stdcall"),
+                                         NULL))
+     
+
+ +
+— Target Hook: bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
+

This target hook returns true past the point in which new jump +instructions could be created. On machines that require a register for +every jump such as the SHmedia ISA of SH5, this point would typically be +reload, so this target hook should be defined to a function such as: + +

          static bool
+          cannot_modify_jumps_past_reload_p ()
+          {
+            return (reload_completed || reload_in_progress);
+          }
+     
+
+ +
+— Target Hook: int TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
+

This target hook returns a register class for which branch target register +optimizations should be applied. All registers in this class should be +usable interchangeably. After reload, registers in this class will be +re-allocated and loads will be hoisted out of loops and be subjected +to inter-block scheduling. +

+ +
+— Target Hook: bool TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED (bool after_prologue_epilogue_gen)
+

Branch target register optimization will by default exclude callee-saved +registers +that are not already live during the current function; if this target hook +returns true, they will be included. The target code must than make sure +that all target registers in the class returned by +TARGET_BRANCH_TARGET_REGISTER_CLASS that might need saving are +saved. after_prologue_epilogue_gen indicates if prologues and +epilogues have already been generated. Note, even if you only return +true when after_prologue_epilogue_gen is false, you still are likely +to have to make special provisions in INITIAL_ELIMINATION_OFFSET +to reserve space for caller-saved target registers. +

+ +
+— Macro: POWI_MAX_MULTS
+

If defined, this macro is interpreted as a signed integer C expression +that specifies the maximum number of floating point multiplications +that should be emitted when expanding exponentiation by an integer +constant inline. When this value is defined, exponentiation requiring +more than this number of multiplications is implemented by calling the +system library's pow, powf or powl routines. +The default value places no upper bound on the multiplication count. +

+ +
+— Macro: void TARGET_EXTRA_INCLUDES (const char *sysroot, const char *iprefix, int stdinc)
+

This target hook should register any extra include files for the +target. The parameter stdinc indicates if normal include files +are present. The parameter sysroot is the system root directory. +The parameter iprefix is the prefix for the gcc directory. +

+ +
+— Macro: void TARGET_EXTRA_PRE_INCLUDES (const char *sysroot, const char *iprefix, int stdinc)
+

This target hook should register any extra include files for the +target before any standard headers. The parameter stdinc +indicates if normal include files are present. The parameter +sysroot is the system root directory. The parameter +iprefix is the prefix for the gcc directory. +

+ +
+— Macro: void TARGET_OPTF (char *path)
+

This target hook should register special include paths for the target. +The parameter path is the include to register. On Darwin +systems, this is used for Framework includes, which have semantics +that are different from -I. +

+ +
+— Target Hook: bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree fndecl)
+

This target hook returns true if it is safe to use a local alias +for a virtual function fndecl when constructing thunks, +false otherwise. By default, the hook returns true for all +functions, if a target supports aliases (i.e. defines +ASM_OUTPUT_DEF), false otherwise, +

+ +
+— Macro: TARGET_FORMAT_TYPES
+

If defined, this macro is the name of a global variable containing +target-specific format checking information for the -Wformat +option. The default is to have no target-specific format checks. +

+ +
+— Macro: TARGET_N_FORMAT_TYPES
+

If defined, this macro is the number of entries in +TARGET_FORMAT_TYPES. +

+ +
+— Target Hook: bool TARGET_RELAXED_ORDERING
+

If set to true, means that the target's memory model does not +guarantee that loads which do not depend on one another will access +main memory in the order of the instruction stream; if ordering is +important, an explicit memory barrier must be used. This is true of +many recent processors which implement a policy of “relaxed,” +“weak,” or “release” memory consistency, such as Alpha, PowerPC, +and ia64. The default is false. +

+ +
+— Target Hook: const char *TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN (tree typelist, tree funcdecl, tree val)
+

If defined, this macro returns the diagnostic message when it is +illegal to pass argument val to function funcdecl +with prototype typelist. +

+ +
+— Target Hook: const char * TARGET_INVALID_CONVERSION (tree fromtype, tree totype)
+

If defined, this macro returns the diagnostic message when it is +invalid to convert from fromtype to totype, or NULL +if validity should be determined by the front end. +

+ +
+— Target Hook: const char * TARGET_INVALID_UNARY_OP (int op, tree type)
+

If defined, this macro returns the diagnostic message when it is +invalid to apply operation op (where unary plus is denoted by +CONVERT_EXPR) to an operand of type type, or NULL +if validity should be determined by the front end. +

+ +
+— Target Hook: const char * TARGET_INVALID_BINARY_OP (int op, tree type1, tree type2)
+

If defined, this macro returns the diagnostic message when it is +invalid to apply operation op to operands of types type1 +and type2, or NULL if validity should be determined by +the front end. +

+ +
+— Macro: TARGET_USE_JCR_SECTION
+

This macro determines whether to use the JCR section to register Java +classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both +SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true, else 0. +

+ +
+— Macro: OBJC_JBLEN
+

This macro determines the size of the objective C jump buffer for the +NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value. +

+ +
+— Macro: LIBGCC2_UNWIND_ATTRIBUTE
+

Define this macro if any target-specific attributes need to be attached +to the functions in libgcc that provide low-level support for +call stack unwinding. It is used in declarations in unwind-generic.h +and the associated definitions of those functions. +

+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Miscellaneous-Docs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Miscellaneous-Docs.html new file mode 100644 index 0000000..8a5cf9c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Miscellaneous-Docs.html @@ -0,0 +1,78 @@ + + +Miscellaneous Docs - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Man Page Generation, +Up: Documentation +



+
+ +
6.3.7.3 Miscellaneous Documentation
+ +

In addition to the formal documentation that is installed by GCC, +there are several other text files with miscellaneous documentation: + +

+
ABOUT-GCC-NLS
Notes on GCC's Native Language Support. FIXME: this should be part of +this manual rather than a separate file. +
ABOUT-NLS
Notes on the Free Translation Project. +
COPYING
The GNU General Public License. +
COPYING.LIB
The GNU Lesser General Public License. +
*ChangeLog*
*/ChangeLog*
Change log files for various parts of GCC. +
LANGUAGES
Details of a few changes to the GCC front-end interface. FIXME: the +information in this file should be part of general documentation of +the front-end interface in this manual. +
ONEWS
Information about new features in old versions of GCC. (For recent +versions, the information is on the GCC web site.) +
README.Portability
Information about portability issues when writing code in GCC. FIXME: +why isn't this part of this manual or of the GCC Coding Conventions? +
+ +

FIXME: document such files in subdirectories, at least config, +cp, objc, testsuite. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Miscellaneous-routines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Miscellaneous-routines.html new file mode 100644 index 0000000..9decf49 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Miscellaneous-routines.html @@ -0,0 +1,66 @@ + + +Miscellaneous routines - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: Exception handling routines, +Up: Libgcc +



+
+ +

4.6 Miscellaneous runtime library routines

+ +

4.6.1 Cache control functions

+ +
+— Runtime Function: void __clear_cache (char *beg, char *end)
+

This function clears the instruction cache between beg and end. +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Mode-Iterators.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Mode-Iterators.html new file mode 100644 index 0000000..9a65578 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Mode-Iterators.html @@ -0,0 +1,81 @@ + + +Mode Iterators - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Iterators +



+
+ +

14.22.1 Mode Iterators

+ +

+Ports often need to define similar patterns for two or more different modes. +For example: + +

    +
  • If a processor has hardware support for both single and double +floating-point arithmetic, the SFmode patterns tend to be +very similar to the DFmode ones. + +
  • If a port uses SImode pointers in one configuration and +DImode pointers in another, it will usually have very similar +SImode and DImode patterns for manipulating pointers. +
+ +

Mode iterators allow several patterns to be instantiated from one +.md file template. They can be used with any type of +rtx-based construct, such as a define_insn, +define_split, or define_peephole2. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Mode-Switching.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Mode-Switching.html new file mode 100644 index 0000000..a59ff1f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Mode-Switching.html @@ -0,0 +1,146 @@ + + +Mode Switching - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Floating Point, +Up: Target Macros +



+
+ +

15.24 Mode Switching Instructions

+ +

The following macros control mode switching optimizations: + +

+— Macro: OPTIMIZE_MODE_SWITCHING (entity)
+

Define this macro if the port needs extra instructions inserted for mode +switching in an optimizing compilation. + +

For an example, the SH4 can perform both single and double precision +floating point operations, but to perform a single precision operation, +the FPSCR PR bit has to be cleared, while for a double precision +operation, this bit has to be set. Changing the PR bit requires a general +purpose register as a scratch register, hence these FPSCR sets have to +be inserted before reload, i.e. you can't put this into instruction emitting +or TARGET_MACHINE_DEPENDENT_REORG. + +

You can have multiple entities that are mode-switched, and select at run time +which entities actually need it. OPTIMIZE_MODE_SWITCHING should +return nonzero for any entity that needs mode-switching. +If you define this macro, you also have to define +NUM_MODES_FOR_MODE_SWITCHING, MODE_NEEDED, +MODE_PRIORITY_TO_MODE and EMIT_MODE_SET. +MODE_AFTER, MODE_ENTRY, and MODE_EXIT +are optional. +

+ +
+— Macro: NUM_MODES_FOR_MODE_SWITCHING
+

If you define OPTIMIZE_MODE_SWITCHING, you have to define this as +initializer for an array of integers. Each initializer element +N refers to an entity that needs mode switching, and specifies the number +of different modes that might need to be set for this entity. +The position of the initializer in the initializer—starting counting at +zero—determines the integer that is used to refer to the mode-switched +entity in question. +In macros that take mode arguments / yield a mode result, modes are +represented as numbers 0 ... N − 1. N is used to specify that no mode +switch is needed / supplied. +

+ +
+— Macro: MODE_NEEDED (entity, insn)
+

entity is an integer specifying a mode-switched entity. If +OPTIMIZE_MODE_SWITCHING is defined, you must define this macro to +return an integer value not larger than the corresponding element in +NUM_MODES_FOR_MODE_SWITCHING, to denote the mode that entity must +be switched into prior to the execution of insn. +

+ +
+— Macro: MODE_AFTER (mode, insn)
+

If this macro is defined, it is evaluated for every insn during +mode switching. It determines the mode that an insn results in (if +different from the incoming mode). +

+ +
+— Macro: MODE_ENTRY (entity)
+

If this macro is defined, it is evaluated for every entity that needs +mode switching. It should evaluate to an integer, which is a mode that +entity is assumed to be switched to at function entry. If MODE_ENTRY +is defined then MODE_EXIT must be defined. +

+ +
+— Macro: MODE_EXIT (entity)
+

If this macro is defined, it is evaluated for every entity that needs +mode switching. It should evaluate to an integer, which is a mode that +entity is assumed to be switched to at function exit. If MODE_EXIT +is defined then MODE_ENTRY must be defined. +

+ +
+— Macro: MODE_PRIORITY_TO_MODE (entity, n)
+

This macro specifies the order in which modes for entity are processed. +0 is the highest priority, NUM_MODES_FOR_MODE_SWITCHING[entity] - 1 the +lowest. The value of the macro should be an integer designating a mode +for entity. For any fixed entity, mode_priority_to_mode +(entity, n) shall be a bijection in 0 ... +num_modes_for_mode_switching[entity] - 1. +

+ +
+— Macro: EMIT_MODE_SET (entity, mode, hard_regs_live)
+

Generate one or more insns to set entity to mode. +hard_reg_live is the set of hard registers live at the point where +the insn(s) are to be inserted. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Modifiers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Modifiers.html new file mode 100644 index 0000000..ead1802 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Modifiers.html @@ -0,0 +1,145 @@ + + +Modifiers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Class Preferences, +Up: Constraints +



+
+ +

14.8.4 Constraint Modifier Characters

+ +

+ +Here are constraint modifier characters. + + + +

=
Means that this operand is write-only for this instruction: the previous +value is discarded and replaced by output data. + +


+
Means that this operand is both read and written by the instruction. + +

When the compiler fixes up the operands to satisfy the constraints, +it needs to know which operands are inputs to the instruction and +which are outputs from it. = identifies an output; + +identifies an operand that is both input and output; all other operands +are assumed to be input only. + +

If you specify = or + in a constraint, you put it in the +first character of the constraint string. + +


&
Means (in a particular alternative) that this operand is an +earlyclobber operand, which is modified before the instruction is +finished using the input operands. Therefore, this operand may not lie +in a register that is used as an input operand or as part of any memory +address. + +

& applies only to the alternative in which it is written. In +constraints with multiple alternatives, sometimes one alternative +requires & while others do not. See, for example, the +movdf insn of the 68000. + +

An input operand can be tied to an earlyclobber operand if its only +use as an input occurs before the early result is written. Adding +alternatives of this form often allows GCC to produce better code +when only some of the inputs can be affected by the earlyclobber. +See, for example, the mulsi3 insn of the ARM. + +

& does not obviate the need to write =. + +


%
Declares the instruction to be commutative for this operand and the +following operand. This means that the compiler may interchange the +two operands if that is the cheapest way to make all operands fit the +constraints. +This is often used in patterns for addition instructions +that really have only two operands: the result must go in one of the +arguments. Here for example, is how the 68000 halfword-add +instruction is defined: + +
          (define_insn "addhi3"
+            [(set (match_operand:HI 0 "general_operand" "=m,r")
+               (plus:HI (match_operand:HI 1 "general_operand" "%0,0")
+                        (match_operand:HI 2 "general_operand" "di,g")))]
+            ...)
+     
+

GCC can only handle one commutative pair in an asm; if you use more, +the compiler may fail. Note that you need not use the modifier if +the two alternatives are strictly identical; this would only waste +time in the reload pass. The modifier is not operational after +register allocation, so the result of define_peephole2 +and define_splits performed after reload cannot rely on +% to make the intended insn match. + +


#
Says that all following characters, up to the next comma, are to be +ignored as a constraint. They are significant only for choosing +register preferences. + +


*
Says that the following character should be ignored when choosing +register preferences. * has no effect on the meaning of the +constraint as a constraint, and no effect on reloading. + +

Here is an example: the 68000 has an instruction to sign-extend a +halfword in a data register, and can also sign-extend a value by +copying it into an address register. While either kind of register is +acceptable, the constraints on an address-register destination are +less strict, so it is best if register allocation makes an address +register its goal. Therefore, * is used so that the d +constraint letter (for data register) is ignored when computing +register preferences. + +

          (define_insn "extendhisi2"
+            [(set (match_operand:SI 0 "general_operand" "=*d,a")
+                  (sign_extend:SI
+                   (match_operand:HI 1 "general_operand" "0,g")))]
+            ...)
+     
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Multi_002dAlternative.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Multi_002dAlternative.html new file mode 100644 index 0000000..779c2ca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Multi_002dAlternative.html @@ -0,0 +1,113 @@ + + +Multi-Alternative - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Simple Constraints, +Up: Constraints +



+
+ +

14.8.2 Multiple Alternative Constraints

+ +

+Sometimes a single instruction has multiple alternative sets of possible +operands. For example, on the 68000, a logical-or instruction can combine +register or an immediate value into memory, or it can combine any kind of +operand into a register; but it cannot combine one memory location into +another. + +

These constraints are represented as multiple alternatives. An alternative +can be described by a series of letters for each operand. The overall +constraint for an operand is made from the letters for this operand +from the first alternative, a comma, the letters for this operand from +the second alternative, a comma, and so on until the last alternative. +Here is how it is done for fullword logical-or on the 68000: + +

     (define_insn "iorsi3"
+       [(set (match_operand:SI 0 "general_operand" "=m,d")
+             (ior:SI (match_operand:SI 1 "general_operand" "%0,0")
+                     (match_operand:SI 2 "general_operand" "dKs,dmKs")))]
+       ...)
+
+

The first alternative has m (memory) for operand 0, 0 for +operand 1 (meaning it must match operand 0), and dKs for operand +2. The second alternative has d (data register) for operand 0, +0 for operand 1, and dmKs for operand 2. The = and +% in the constraints apply to all the alternatives; their +meaning is explained in the next section (see Class Preferences). + + +

If all the operands fit any one alternative, the instruction is valid. +Otherwise, for each alternative, the compiler counts how many instructions +must be added to copy the operands so that that alternative applies. +The alternative requiring the least copying is chosen. If two alternatives +need the same amount of copying, the one that comes first is chosen. +These choices can be altered with the ? and ! characters: + + + + +

?
Disparage slightly the alternative that the ? appears in, +as a choice when no alternative applies exactly. The compiler regards +this alternative as one unit more costly for each ? that appears +in it. + +


!
Disparage severely the alternative that the ! appears in. +This alternative can still be used if it fits without reloading, +but if reloading is needed, some other alternative will be used. +
+ +

When an insn pattern has multiple alternatives in its constraints, often +the appearance of the assembler code is determined mostly by which +alternative was matched. When this is so, the C code for writing the +assembler code can use the variable which_alternative, which is +the ordinal number of the alternative that was actually satisfied (0 for +the first, 1 for the second alternative, etc.). See Output Statement. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Namespaces.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Namespaces.html new file mode 100644 index 0000000..198a6fe --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Namespaces.html @@ -0,0 +1,119 @@ + + +Namespaces - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: Scopes +



+
+ +

9.4.1 Namespaces

+ +

+A namespace is represented by a NAMESPACE_DECL node. + +

However, except for the fact that it is distinguished as the root of the +representation, the global namespace is no different from any other +namespace. Thus, in what follows, we describe namespaces generally, +rather than the global namespace in particular. + +

The following macros and functions can be used on a NAMESPACE_DECL: + +

+
DECL_NAME
This macro is used to obtain the IDENTIFIER_NODE corresponding to +the unqualified name of the name of the namespace (see Identifiers). +The name of the global namespace is ::, even though in C++ the +global namespace is unnamed. However, you should use comparison with +global_namespace, rather than DECL_NAME to determine +whether or not a namespace is the global one. An unnamed namespace +will have a DECL_NAME equal to anonymous_namespace_name. +Within a single translation unit, all unnamed namespaces will have the +same name. + +
DECL_CONTEXT
This macro returns the enclosing namespace. The DECL_CONTEXT for +the global_namespace is NULL_TREE. + +
DECL_NAMESPACE_ALIAS
If this declaration is for a namespace alias, then +DECL_NAMESPACE_ALIAS is the namespace for which this one is an +alias. + +

Do not attempt to use cp_namespace_decls for a namespace which is +an alias. Instead, follow DECL_NAMESPACE_ALIAS links until you +reach an ordinary, non-alias, namespace, and call +cp_namespace_decls there. + +

DECL_NAMESPACE_STD_P
This predicate holds if the namespace is the special ::std +namespace. + +
cp_namespace_decls
This function will return the declarations contained in the namespace, +including types, overloaded functions, other namespaces, and so forth. +If there are no declarations, this function will return +NULL_TREE. The declarations are connected through their +TREE_CHAIN fields. + +

Although most entries on this list will be declarations, +TREE_LIST nodes may also appear. In this case, the +TREE_VALUE will be an OVERLOAD. The value of the +TREE_PURPOSE is unspecified; back ends should ignore this value. +As with the other kinds of declarations returned by +cp_namespace_decls, the TREE_CHAIN will point to the next +declaration in this list. + +

For more information on the kinds of declarations that can occur on this +list, See Declarations. Some declarations will not appear on this +list. In particular, no FIELD_DECL, LABEL_DECL, or +PARM_DECL nodes will appear here. + +

This function cannot be used with namespaces that have +DECL_NAMESPACE_ALIAS set. + +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Number-of-iterations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Number-of-iterations.html new file mode 100644 index 0000000..daf1011 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Number-of-iterations.html @@ -0,0 +1,107 @@ + + +Number of iterations - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + + +

11.7 Number of iterations analysis

+ +

+Both on GIMPLE and on RTL, there are functions available to determine +the number of iterations of a loop, with a similar interface. The +number of iterations of a loop in GCC is defined as the number of +executions of the loop latch. In many cases, it is not possible to +determine the number of iterations unconditionally – the determined +number is correct only if some assumptions are satisfied. The analysis +tries to verify these conditions using the information contained in the +program; if it fails, the conditions are returned together with the +result. The following information and conditions are provided by the +analysis: + +

    +
  • assumptions: If this condition is false, the rest of +the information is invalid. +
  • noloop_assumptions on RTL, may_be_zero on GIMPLE: If +this condition is true, the loop exits in the first iteration. +
  • infinite: If this condition is true, the loop is infinite. +This condition is only available on RTL. On GIMPLE, conditions for +finiteness of the loop are included in assumptions. +
  • niter_expr on RTL, niter on GIMPLE: The expression +that gives number of iterations. The number of iterations is defined as +the number of executions of the loop latch. +
+ +

Both on GIMPLE and on RTL, it necessary for the induction variable +analysis framework to be initialized (SCEV on GIMPLE, loop-iv on RTL). +On GIMPLE, the results are stored to struct tree_niter_desc +structure. Number of iterations before the loop is exited through a +given exit can be determined using number_of_iterations_exit +function. On RTL, the results are returned in struct niter_desc +structure. The corresponding function is named +check_simple_exit. There are also functions that pass through +all the exits of a loop and try to find one with easy to determine +number of iterations – find_loop_niter on GIMPLE and +find_simple_exit on RTL. Finally, there are functions that +provide the same information, but additionally cache it, so that +repeated calls to number of iterations are not so costly – +number_of_latch_executions on GIMPLE and get_simple_loop_desc +on RTL. + +

Note that some of these functions may behave slightly differently than +others – some of them return only the expression for the number of +iterations, and fail if there are some assumptions. The function +number_of_latch_executions works only for single-exit loops. +The function number_of_cond_exit_executions can be used to +determine number of executions of the exit condition of a single-exit +loop (i.e., the number_of_latch_executions increased by one). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Old-Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Old-Constraints.html new file mode 100644 index 0000000..39472b0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Old-Constraints.html @@ -0,0 +1,211 @@ + + +Old Constraints - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Register Classes, +Up: Target Macros +



+
+ +

15.9 Obsolete Macros for Defining Constraints

+ +

+Machine-specific constraints can be defined with these macros instead +of the machine description constructs described in Define Constraints. This mechanism is obsolete. New ports should not use +it; old ports should convert to the new mechanism. + +

+— Macro: CONSTRAINT_LEN (char, str)
+

For the constraint at the start of str, which starts with the letter +c, return the length. This allows you to have register class / +constant / extra constraints that are longer than a single letter; +you don't need to define this macro if you can do with single-letter +constraints only. The definition of this macro should use +DEFAULT_CONSTRAINT_LEN for all the characters that you don't want +to handle specially. +There are some sanity checks in genoutput.c that check the constraint lengths +for the md file, so you can also use this macro to help you while you are +transitioning from a byzantine single-letter-constraint scheme: when you +return a negative length for a constraint you want to re-use, genoutput +will complain about every instance where it is used in the md file. +

+ +
+— Macro: REG_CLASS_FROM_LETTER (char)
+

A C expression which defines the machine-dependent operand constraint +letters for register classes. If char is such a letter, the +value should be the register class corresponding to it. Otherwise, +the value should be NO_REGS. The register letter r, +corresponding to class GENERAL_REGS, will not be passed +to this macro; you do not need to handle it. +

+ +
+— Macro: REG_CLASS_FROM_CONSTRAINT (char, str)
+

Like REG_CLASS_FROM_LETTER, but you also get the constraint string +passed in str, so that you can use suffixes to distinguish between +different variants. +

+ +
+— Macro: CONST_OK_FOR_LETTER_P (value, c)
+

A C expression that defines the machine-dependent operand constraint +letters (I, J, K, ... P) that specify +particular ranges of integer values. If c is one of those +letters, the expression should check that value, an integer, is in +the appropriate range and return 1 if so, 0 otherwise. If c is +not one of those letters, the value should be 0 regardless of +value. +

+ +
+— Macro: CONST_OK_FOR_CONSTRAINT_P (value, c, str)
+

Like CONST_OK_FOR_LETTER_P, but you also get the constraint +string passed in str, so that you can use suffixes to distinguish +between different variants. +

+ +
+— Macro: CONST_DOUBLE_OK_FOR_LETTER_P (value, c)
+

A C expression that defines the machine-dependent operand constraint +letters that specify particular ranges of const_double values +(G or H). + +

If c is one of those letters, the expression should check that +value, an RTX of code const_double, is in the appropriate +range and return 1 if so, 0 otherwise. If c is not one of those +letters, the value should be 0 regardless of value. + +

const_double is used for all floating-point constants and for +DImode fixed-point constants. A given letter can accept either +or both kinds of values. It can use GET_MODE to distinguish +between these kinds. +

+ +
+— Macro: CONST_DOUBLE_OK_FOR_CONSTRAINT_P (value, c, str)
+

Like CONST_DOUBLE_OK_FOR_LETTER_P, but you also get the constraint +string passed in str, so that you can use suffixes to distinguish +between different variants. +

+ +
+— Macro: EXTRA_CONSTRAINT (value, c)
+

A C expression that defines the optional machine-dependent constraint +letters that can be used to segregate specific types of operands, usually +memory references, for the target machine. Any letter that is not +elsewhere defined and not matched by REG_CLASS_FROM_LETTER / +REG_CLASS_FROM_CONSTRAINT +may be used. Normally this macro will not be defined. + +

If it is required for a particular target machine, it should return 1 +if value corresponds to the operand type represented by the +constraint letter c. If c is not defined as an extra +constraint, the value returned should be 0 regardless of value. + +

For example, on the ROMP, load instructions cannot have their output +in r0 if the memory reference contains a symbolic address. Constraint +letter Q is defined as representing a memory address that does +not contain a symbolic address. An alternative is specified with +a Q constraint on the input and r on the output. The next +alternative specifies m on the input and a register class that +does not include r0 on the output. +

+ +
+— Macro: EXTRA_CONSTRAINT_STR (value, c, str)
+

Like EXTRA_CONSTRAINT, but you also get the constraint string passed +in str, so that you can use suffixes to distinguish between different +variants. +

+ +
+— Macro: EXTRA_MEMORY_CONSTRAINT (c, str)
+

A C expression that defines the optional machine-dependent constraint +letters, amongst those accepted by EXTRA_CONSTRAINT, that should +be treated like memory constraints by the reload pass. + +

It should return 1 if the operand type represented by the constraint +at the start of str, the first letter of which is the letter c, + comprises a subset of all memory references including +all those whose address is simply a base register. This allows the reload +pass to reload an operand, if it does not directly correspond to the operand +type of c, by copying its address into a base register. + +

For example, on the S/390, some instructions do not accept arbitrary +memory references, but only those that do not make use of an index +register. The constraint letter Q is defined via +EXTRA_CONSTRAINT as representing a memory address of this type. +If the letter Q is marked as EXTRA_MEMORY_CONSTRAINT, +a Q constraint can handle any memory operand, because the +reload pass knows it can be reloaded by copying the memory address +into a base register if required. This is analogous to the way +a o constraint can handle any memory operand. +

+ +
+— Macro: EXTRA_ADDRESS_CONSTRAINT (c, str)
+

A C expression that defines the optional machine-dependent constraint +letters, amongst those accepted by EXTRA_CONSTRAINT / +EXTRA_CONSTRAINT_STR, that should +be treated like address constraints by the reload pass. + +

It should return 1 if the operand type represented by the constraint +at the start of str, which starts with the letter c, comprises +a subset of all memory addresses including +all those that consist of just a base register. This allows the reload +pass to reload an operand, if it does not directly correspond to the operand +type of str, by copying it into a base register. + +

Any constraint marked as EXTRA_ADDRESS_CONSTRAINT can only +be used with the address_operand predicate. It is treated +analogously to the p constraint. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Omega.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Omega.html new file mode 100644 index 0000000..416fd5b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Omega.html @@ -0,0 +1,87 @@ + + +Omega - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Lambda, +Up: Loop Analysis and Representation +



+
+ +

11.10 Omega a solver for linear programming problems

+ +

+The data dependence analysis contains several solvers triggered +sequentially from the less complex ones to the more sophisticated. +For ensuring the consistency of the results of these solvers, a data +dependence check pass has been implemented based on two different +solvers. The second method that has been integrated to GCC is based +on the Omega dependence solver, written in the 1990's by William Pugh +and David Wonnacott. Data dependence tests can be formulated using a +subset of the Presburger arithmetics that can be translated to linear +constraint systems. These linear constraint systems can then be +solved using the Omega solver. + +

The Omega solver is using Fourier-Motzkin's algorithm for variable +elimination: a linear constraint system containing n variables +is reduced to a linear constraint system with n-1 variables. +The Omega solver can also be used for solving other problems that can +be expressed under the form of a system of linear equalities and +inequalities. The Omega solver is known to have an exponential worst +case, also known under the name of “omega nightmare” in the +literature, but in practice, the omega test is known to be efficient +for the common data dependence tests. + +

The interface used by the Omega solver for describing the linear +programming problems is described in omega.h, and the solver is +omega_solve_problem. + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-Index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-Index.html new file mode 100644 index 0000000..ebb3279 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-Index.html @@ -0,0 +1,65 @@ + + +Option Index - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: Contributors, +Up: Top +



+
+ +

Option Index

+ +

GCC's command line options are indexed here without any initial - +or --. Where an option has both positive and negative forms +(such as -foption and -fno-option), +relevant entries in the manual are indexed under the most appropriate +form; it may sometimes be useful to look up both forms. + +

+ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-file-format.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-file-format.html new file mode 100644 index 0000000..8f91be5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-file-format.html @@ -0,0 +1,107 @@ + + +Option file format - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Options +



+
+ +

7.1 Option file format

+ +

Option files are a simple list of records in which each field occupies +its own line and in which the records themselves are separated by +blank lines. Comments may appear on their own line anywhere within +the file and are preceded by semicolons. Whitespace is allowed before +the semicolon. + +

The files can contain the following types of record: + +

    +
  • A language definition record.  These records have two fields: the +string Language and the name of the language.  Once a language +has been declared in this way, it can be used as an option property. +See Option properties. + +
  • An option definition record.  These records have the following fields: + +
      +
    1. the name of the option, with the leading “-” removed +
    2. a space-separated list of option properties (see Option properties) +
    3. the help text to use for --help (omitted if the second field +contains the Undocumented property). +
    + +

    By default, all options beginning with “f”, “W” or “m” are +implicitly assumed to take a “no-” form. This form should not be +listed separately. If an option beginning with one of these letters +does not have a “no-” form, you can use the RejectNegative +property to reject it. + +

    The help text is automatically line-wrapped before being displayed. +Normally the name of the option is printed on the left-hand side of +the output and the help text is printed on the right. However, if the +help text contains a tab character, the text to the left of the tab is +used instead of the option's name and the text to the right of the +tab forms the help text. This allows you to elaborate on what type +of argument the option takes. + +

  • A target mask record.  These records have one field of the form +Mask(x).  The options-processing script will automatically +allocate a bit in target_flags (see Run-time Target) for +each mask name x and set the macro MASK_x to the +appropriate bitmask.  It will also declare a TARGET_x +macro that has the value 1 when bit MASK_x is set and +0 otherwise. + +

    They are primarily intended to declare target masks that are not +associated with user options, either because these masks represent +internal switches or because the options are not available on all +configurations and yet the masks always need to be defined. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-properties.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-properties.html new file mode 100644 index 0000000..843e4b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Option-properties.html @@ -0,0 +1,182 @@ + + +Option properties - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Option file format, +Up: Options +



+
+ +

7.2 Option properties

+ +

The second field of an option record can specify the following properties: + +

+
Common
The option is available for all languages and targets. + +
Target
The option is available for all languages but is target-specific. + +
language
The option is available when compiling for the given language. + +

It is possible to specify several different languages for the same +option. Each language must have been declared by an earlier +Language record. See Option file format. + +

RejectNegative
The option does not have a “no-” form. All options beginning with +“f”, “W” or “m” are assumed to have a “no-” form unless this +property is used. + +
Negative(othername)
The option will turn off another option othername, which is the +the option name with the leading “-” removed. This chain action will +propagate through the Negative property of the option to be +turned off. + +
Joined
Separate
The option takes a mandatory argument. Joined indicates +that the option and argument can be included in the same argv +entry (as with -mflush-func=name, for example). +Separate indicates that the option and argument can be +separate argv entries (as with -o). An option is +allowed to have both of these properties. + +
JoinedOrMissing
The option takes an optional argument. If the argument is given, +it will be part of the same argv entry as the option itself. + +

This property cannot be used alongside Joined or Separate. + +

UInteger
The option's argument is a non-negative integer. The option parser +will check and convert the argument before passing it to the relevant +option handler. + +
Var(var)
The state of this option should be stored in variable var. +The way that the state is stored depends on the type of option: + +
    +
  • If the option uses the Mask or InverseMask properties, +var is the integer variable that contains the mask. + +
  • If the option is a normal on/off switch, var is an integer +variable that is nonzero when the option is enabled. The options +parser will set the variable to 1 when the positive form of the +option is used and 0 when the “no-” form is used. + +
  • If the option takes an argument and has the UInteger property, +var is an integer variable that stores the value of the argument. + +
  • Otherwise, if the option takes an argument, var is a pointer to +the argument string. The pointer will be null if the argument is optional +and wasn't given. +
+ +

The option-processing script will usually declare var in +options.c and leave it to be zero-initialized at start-up time. +You can modify this behavior using VarExists and Init. + +

Var(var, set)
The option controls an integer variable var and is active when +var equals set. The option parser will set var to +set when the positive form of the option is used and !set +when the “no-” form is used. + +

var is declared in the same way as for the single-argument form +described above. + +

VarExists
The variable specified by the Var property already exists. +No definition should be added to options.c in response to +this option record. + +

You should use this property only if the variable is declared outside +options.c. + +

Init(value)
The variable specified by the Var property should be statically +initialized to value. + +
Mask(name)
The option is associated with a bit in the target_flags +variable (see Run-time Target) and is active when that bit is set. +You may also specify Var to select a variable other than +target_flags. + +

The options-processing script will automatically allocate a unique bit +for the option. If the option is attached to target_flags, +the script will set the macro MASK_name to the appropriate +bitmask. It will also declare a TARGET_name macro that has +the value 1 when the option is active and 0 otherwise. If you use Var +to attach the option to a different variable, the associated macros are +called OPTION_MASK_name and OPTION_name respectively. + +

You can disable automatic bit allocation using MaskExists. + +

InverseMask(othername)
InverseMask(othername, thisname)
The option is the inverse of another option that has the +Mask(othername) property. If thisname is given, +the options-processing script will declare a TARGET_thisname +macro that is 1 when the option is active and 0 otherwise. + +
MaskExists
The mask specified by the Mask property already exists. +No MASK or TARGET definitions should be added to +options.h in response to this option record. + +

The main purpose of this property is to support synonymous options. +The first option should use Mask(name) and the others +should use Mask(name) MaskExists. + +

Report
The state of the option should be printed by -fverbose-asm. + +
Undocumented
The option is deliberately missing documentation and should not +be included in the --help output. + +
Condition(cond)
The option should only be accepted if preprocessor condition +cond is true. Note that any C declarations associated with the +option will be present even if cond is false; cond simply +controls whether the option is accepted and whether it is printed in +the --help output. +
+ + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Options.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Options.html new file mode 100644 index 0000000..768cc59 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Options.html @@ -0,0 +1,67 @@ + + +Options - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Source Tree, +Up: Top +



+
+ +

7 Option specification files

+ +

+Most GCC command-line options are described by special option +definition files, the names of which conventionally end in +.opt. This chapter describes the format of these files. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Output-Statement.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Output-Statement.html new file mode 100644 index 0000000..dd7e0db --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Output-Statement.html @@ -0,0 +1,144 @@ + + +Output Statement - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Output Template, +Up: Machine Desc +



+
+ +

14.6 C Statements for Assembler Output

+ +

+Often a single fixed template string cannot produce correct and efficient +assembler code for all the cases that are recognized by a single +instruction pattern. For example, the opcodes may depend on the kinds of +operands; or some unfortunate combinations of operands may require extra +machine instructions. + +

If the output control string starts with a @, then it is actually +a series of templates, each on a separate line. (Blank lines and +leading spaces and tabs are ignored.) The templates correspond to the +pattern's constraint alternatives (see Multi-Alternative). For example, +if a target machine has a two-address add instruction addr to add +into a register and another addm to add a register to memory, you +might write this pattern: + +

     (define_insn "addsi3"
+       [(set (match_operand:SI 0 "general_operand" "=r,m")
+             (plus:SI (match_operand:SI 1 "general_operand" "0,0")
+                      (match_operand:SI 2 "general_operand" "g,r")))]
+       ""
+       "@
+        addr %2,%0
+        addm %2,%0")
+
+

If the output control string starts with a *, then it is not an +output template but rather a piece of C program that should compute a +template. It should execute a return statement to return the +template-string you want. Most such templates use C string literals, which +require doublequote characters to delimit them. To include these +doublequote characters in the string, prefix each one with \. + +

If the output control string is written as a brace block instead of a +double-quoted string, it is automatically assumed to be C code. In that +case, it is not necessary to put in a leading asterisk, or to escape the +doublequotes surrounding C string literals. + +

The operands may be found in the array operands, whose C data type +is rtx []. + +

It is very common to select different ways of generating assembler code +based on whether an immediate operand is within a certain range. Be +careful when doing this, because the result of INTVAL is an +integer on the host machine. If the host machine has more bits in an +int than the target machine has in the mode in which the constant +will be used, then some of the bits you get from INTVAL will be +superfluous. For proper results, you must carefully disregard the +values of those bits. + +

It is possible to output an assembler instruction and then go on to output +or compute more of them, using the subroutine output_asm_insn. This +receives two arguments: a template-string and a vector of operands. The +vector may be operands, or it may be another array of rtx +that you declare locally and initialize yourself. + +

When an insn pattern has multiple alternatives in its constraints, often +the appearance of the assembler code is determined mostly by which alternative +was matched. When this is so, the C code can test the variable +which_alternative, which is the ordinal number of the alternative +that was actually satisfied (0 for the first, 1 for the second alternative, +etc.). + +

For example, suppose there are two opcodes for storing zero, clrreg +for registers and clrmem for memory locations. Here is how +a pattern could use which_alternative to choose between them: + +

     (define_insn ""
+       [(set (match_operand:SI 0 "general_operand" "=r,m")
+             (const_int 0))]
+       ""
+       {
+       return (which_alternative == 0
+               ? "clrreg %0" : "clrmem %0");
+       })
+
+

The example above, where the assembler code to generate was +solely determined by the alternative, could also have been specified +as follows, having the output control string start with a @: + +

     (define_insn ""
+       [(set (match_operand:SI 0 "general_operand" "=r,m")
+             (const_int 0))]
+       ""
+       "@
+        clrreg %0
+        clrmem %0")
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Output-Template.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Output-Template.html new file mode 100644 index 0000000..a8c7b79 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Output-Template.html @@ -0,0 +1,136 @@ + + +Output Template - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: RTL Template, +Up: Machine Desc +



+
+ +

14.5 Output Templates and Operand Substitution

+ +

+The output template is a string which specifies how to output the +assembler code for an instruction pattern. Most of the template is a +fixed string which is output literally. The character % is used +to specify where to substitute an operand; it can also be used to +identify places where different variants of the assembler require +different syntax. + +

In the simplest case, a % followed by a digit n says to output +operand n at that point in the string. + +

% followed by a letter and a digit says to output an operand in an +alternate fashion. Four letters have standard, built-in meanings described +below. The machine description macro PRINT_OPERAND can define +additional letters with nonstandard meanings. + +

%cdigit can be used to substitute an operand that is a +constant value without the syntax that normally indicates an immediate +operand. + +

%ndigit is like %cdigit except that the value of +the constant is negated before printing. + +

%adigit can be used to substitute an operand as if it were a +memory reference, with the actual operand treated as the address. This may +be useful when outputting a “load address” instruction, because often the +assembler syntax for such an instruction requires you to write the operand +as if it were a memory reference. + +

%ldigit is used to substitute a label_ref into a jump +instruction. + +

%= outputs a number which is unique to each instruction in the +entire compilation. This is useful for making local labels to be +referred to more than once in a single template that generates multiple +assembler instructions. + +

% followed by a punctuation character specifies a substitution that +does not use an operand. Only one case is standard: %% outputs a +% into the assembler code. Other nonstandard cases can be +defined in the PRINT_OPERAND macro. You must also define +which punctuation characters are valid with the +PRINT_OPERAND_PUNCT_VALID_P macro. + +

The template may generate multiple assembler instructions. Write the text +for the instructions, with \; between them. + +

When the RTL contains two operands which are required by constraint to match +each other, the output template must refer only to the lower-numbered operand. +Matching operands are not always identical, and the rest of the compiler +arranges to put the proper RTL expression for printing into the lower-numbered +operand. + +

One use of nonstandard letters or punctuation following % is to +distinguish between different assembler languages for the same machine; for +example, Motorola syntax versus MIT syntax for the 68000. Motorola syntax +requires periods in most opcode names, while MIT syntax does not. For +example, the opcode movel in MIT syntax is move.l in Motorola +syntax. The same file of patterns is used for both kinds of output syntax, +but the character sequence %. is used in each place where Motorola +syntax wants a period. The PRINT_OPERAND macro for Motorola syntax +defines the sequence to output a period; the macro for MIT syntax defines +it to do nothing. + +

As a special case, a template consisting of the single character # +instructs the compiler to first split the insn, and then output the +resulting instructions separately. This helps eliminate redundancy in the +output templates. If you have a define_insn that needs to emit +multiple assembler instructions, and there is an matching define_split +already defined, then you can simply use # as the output template +instead of writing an output template that emits the multiple assembler +instructions. + +

If the macro ASSEMBLER_DIALECT is defined, you can use construct +of the form {option0|option1|option2} in the templates. These +describe multiple variants of assembler language syntax. +See Instruction Output. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Overview.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Overview.html new file mode 100644 index 0000000..24d6617 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Overview.html @@ -0,0 +1,98 @@ + + +Overview - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Up: Machine Desc +



+
+ +

14.1 Overview of How the Machine Description is Used

+ +

There are three main conversions that happen in the compiler: + +

    + +
  1. The front end reads the source code and builds a parse tree. + +
  2. The parse tree is used to generate an RTL insn list based on named +instruction patterns. + +
  3. The insn list is matched against the RTL templates to produce assembler +code. + +
+ +

For the generate pass, only the names of the insns matter, from either a +named define_insn or a define_expand. The compiler will +choose the pattern with the right name and apply the operands according +to the documentation later in this chapter, without regard for the RTL +template or operand constraints. Note that the names the compiler looks +for are hard-coded in the compiler—it will ignore unnamed patterns and +patterns with names it doesn't know about, but if you don't provide a +named pattern it needs, it will abort. + +

If a define_insn is used, the template given is inserted into the +insn list. If a define_expand is used, one of three things +happens, based on the condition logic. The condition logic may manually +create new insns for the insn list, say via emit_insn(), and +invoke DONE. For certain named patterns, it may invoke FAIL to tell the +compiler to use an alternate way of performing that task. If it invokes +neither DONE nor FAIL, the template given in the pattern +is inserted, as if the define_expand were a define_insn. + +

Once the insn list is generated, various optimization passes convert, +replace, and rearrange the insns in the insn list. This is where the +define_split and define_peephole patterns get used, for +example. + +

Finally, the insn list's RTL is matched up with the RTL templates in the +define_insn patterns, and those patterns are used to emit the +final assembly code. For this purpose, each named define_insn +acts like it's unnamed, since the names are ignored. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/PCH-Target.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/PCH-Target.html new file mode 100644 index 0000000..9d12472 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/PCH-Target.html @@ -0,0 +1,91 @@ + + +PCH Target - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: MIPS Coprocessors, +Up: Target Macros +



+
+ +

15.27 Parameters for Precompiled Header Validity Checking

+ +

+ +

+— Target Hook: void *TARGET_GET_PCH_VALIDITY (size_t *sz)
+

This hook returns the data needed by TARGET_PCH_VALID_P and sets +*sz to the size of the data in bytes. +

+ +
+— Target Hook: const char *TARGET_PCH_VALID_P (const void *data, size_t sz)
+

This hook checks whether the options used to create a PCH file are +compatible with the current settings. It returns NULL +if so and a suitable error message if not. Error messages will +be presented to the user and must be localized using _(msg). + +

data is the data that was returned by TARGET_GET_PCH_VALIDITY +when the PCH file was created and sz is the size of that data in bytes. +It's safe to assume that the data was created by the same version of the +compiler, so no format checking is needed. + +

The default definition of default_pch_valid_p should be +suitable for most targets. +

+ +
+— Target Hook: const char *TARGET_CHECK_PCH_TARGET_FLAGS (int pch_flags)
+

If this hook is nonnull, the default implementation of +TARGET_PCH_VALID_P will use it to check for compatible values +of target_flags. pch_flags specifies the value that +target_flags had when the PCH file was created. The return +value is the same as for TARGET_PCH_VALID_P. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/PIC.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/PIC.html new file mode 100644 index 0000000..50376f0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/PIC.html @@ -0,0 +1,100 @@ + + +PIC - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Sections, +Up: Target Macros +



+
+ +

15.20 Position Independent Code

+ +

+This section describes macros that help implement generation of position +independent code. Simply defining these macros is not enough to +generate valid PIC; you must also add support to the macros +GO_IF_LEGITIMATE_ADDRESS and PRINT_OPERAND_ADDRESS, as +well as LEGITIMIZE_ADDRESS. You must modify the definition of +movsi to do something appropriate when the source operand +contains a symbolic address. You may also need to alter the handling of +switch statements so that they use relative addresses. + + + +

+— Macro: PIC_OFFSET_TABLE_REGNUM
+

The register number of the register used to address a table of static +data addresses in memory. In some cases this register is defined by a +processor's “application binary interface” (ABI). When this macro +is defined, RTL is generated for this register once, as with the stack +pointer and frame pointer registers. If this macro is not defined, it +is up to the machine-dependent files to allocate such a register (if +necessary). Note that this register must be fixed when in use (e.g. +when flag_pic is true). +

+ +
+— Macro: PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
+

Define this macro if the register defined by +PIC_OFFSET_TABLE_REGNUM is clobbered by calls. Do not define +this macro if PIC_OFFSET_TABLE_REGNUM is not defined. +

+ +
+— Macro: LEGITIMATE_PIC_OPERAND_P (x)
+

A C expression that is nonzero if x is a legitimate immediate +operand on the target machine when generating position independent code. +You can assume that x satisfies CONSTANT_P, so you need not +check this. You can also assume flag_pic is true, so you need not +check it either. You need not define this macro if all constants +(including SYMBOL_REF) can be immediate operands when generating +position independent code. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Parsing-pass.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Parsing-pass.html new file mode 100644 index 0000000..d251653 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Parsing-pass.html @@ -0,0 +1,122 @@ + + +Parsing pass - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Passes +



+
+ +

8.1 Parsing pass

+ +

The language front end is invoked only once, via +lang_hooks.parse_file, to parse the entire input. The language +front end may use any intermediate language representation deemed +appropriate. The C front end uses GENERIC trees (CROSSREF), plus +a double handful of language specific tree codes defined in +c-common.def. The Fortran front end uses a completely different +private representation. + +

At some point the front end must translate the representation used in the +front end to a representation understood by the language-independent +portions of the compiler. Current practice takes one of two forms. +The C front end manually invokes the gimplifier (CROSSREF) on each function, +and uses the gimplifier callbacks to convert the language-specific tree +nodes directly to GIMPLE (CROSSREF) before passing the function off to +be compiled. +The Fortran front end converts from a private representation to GENERIC, +which is later lowered to GIMPLE when the function is compiled. Which +route to choose probably depends on how well GENERIC (plus extensions) +can be made to match up with the source language and necessary parsing +data structures. + +

BUG: Gimplification must occur before nested function lowering, +and nested function lowering must be done by the front end before +passing the data off to cgraph. + +

TODO: Cgraph should control nested function lowering. It would +only be invoked when it is certain that the outer-most function +is used. + +

TODO: Cgraph needs a gimplify_function callback. It should be +invoked when (1) it is certain that the function is used, (2) +warning flags specified by the user require some amount of +compilation in order to honor, (3) the language indicates that +semantic analysis is not complete until gimplification occurs. +Hum... this sounds overly complicated. Perhaps we should just +have the front end gimplify always; in most cases it's only one +function call. + +

The front end needs to pass all function definitions and top level +declarations off to the middle-end so that they can be compiled and +emitted to the object file. For a simple procedural language, it is +usually most convenient to do this as each top level declaration or +definition is seen. There is also a distinction to be made between +generating functional code and generating complete debug information. +The only thing that is absolutely required for functional code is that +function and data definitions be passed to the middle-end. For +complete debug information, function, data and type declarations +should all be passed as well. + +

In any case, the front end needs each complete top-level function or +data declaration, and each data definition should be passed to +rest_of_decl_compilation. Each complete type definition should +be passed to rest_of_type_compilation. Each function definition +should be passed to cgraph_finalize_function. + +

TODO: I know rest_of_compilation currently has all sorts of +rtl-generation semantics. I plan to move all code generation +bits (both tree and rtl) to compile_function. Should we hide +cgraph from the front ends and move back to rest_of_compilation +as the official interface? Possibly we should rename all three +interfaces such that the names match in some meaningful way and +that is more descriptive than "rest_of". + +

The middle-end will, at its option, emit the function and data +definitions immediately or queue them for later processing. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Pass-manager.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Pass-manager.html new file mode 100644 index 0000000..bddf5fc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Pass-manager.html @@ -0,0 +1,81 @@ + + +Pass manager - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Gimplification pass, +Up: Passes +



+
+ +

8.3 Pass manager

+ +

The pass manager is located in passes.c, tree-optimize.c +and tree-pass.h. +Its job is to run all of the individual passes in the correct order, +and take care of standard bookkeeping that applies to every pass. + +

The theory of operation is that each pass defines a structure that +represents everything we need to know about that pass—when it +should be run, how it should be run, what intermediate language +form or on-the-side data structures it needs. We register the pass +to be run in some particular order, and the pass manager arranges +for everything to happen in the correct order. + +

The actuality doesn't completely live up to the theory at present. +Command-line switches and timevar_id_t enumerations must still +be defined elsewhere. The pass manager validates constraints but does +not attempt to (re-)generate data structures or lower intermediate +language form based on the requirements of the next pass. Nevertheless, +what is present is useful, and a far sight better than nothing at all. + +

TODO: describe the global variables set up by the pass manager, +and a brief description of how a new pass should use it. +I need to look at what info rtl passes use first.... + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Passes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Passes.html new file mode 100644 index 0000000..dab8a2d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Passes.html @@ -0,0 +1,71 @@ + + +Passes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Next: , +Previous: Options, +Up: Top +



+
+ +

8 Passes and Files of the Compiler

+ +

+This chapter is dedicated to giving an overview of the optimization and +code generation passes of the compiler. In the process, it describes +some of the language front end interface, though this description is no +where near complete. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Pattern-Ordering.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Pattern-Ordering.html new file mode 100644 index 0000000..ca1f1dc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Pattern-Ordering.html @@ -0,0 +1,77 @@ + + +Pattern Ordering - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Standard Names, +Up: Machine Desc +



+
+ +

14.10 When the Order of Patterns Matters

+ +

+Sometimes an insn can match more than one instruction pattern. Then the +pattern that appears first in the machine description is the one used. +Therefore, more specific patterns (patterns that will match fewer things) +and faster instructions (those that will produce better code when they +do match) should usually go first in the description. + +

In some cases the effect of ordering the patterns can be used to hide +a pattern when it is not valid. For example, the 68000 has an +instruction for converting a fullword to floating point and another +for converting a byte to floating point. An instruction converting +an integer to floating point could match either one. We put the +pattern to convert the fullword first to make sure that one will +be used rather than the other. (Otherwise a large integer might +be generated as a single-byte immediate quantity, which would not work.) +Instead of using this pattern ordering it would be possible to make the +pattern for convert-a-byte smart enough to deal properly with any +constant value. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Patterns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Patterns.html new file mode 100644 index 0000000..4b14523 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Patterns.html @@ -0,0 +1,124 @@ + + +Patterns - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Overview, +Up: Machine Desc +



+
+ +

14.2 Everything about Instruction Patterns

+ +

+Each instruction pattern contains an incomplete RTL expression, with pieces +to be filled in later, operand constraints that restrict how the pieces can +be filled in, and an output pattern or C code to generate the assembler +output, all wrapped up in a define_insn expression. + +

A define_insn is an RTL expression containing four or five operands: + +

    +
  1. An optional name. The presence of a name indicate that this instruction +pattern can perform a certain standard job for the RTL-generation +pass of the compiler. This pass knows certain names and will use +the instruction patterns with those names, if the names are defined +in the machine description. + +

    The absence of a name is indicated by writing an empty string +where the name should go. Nameless instruction patterns are never +used for generating RTL code, but they may permit several simpler insns +to be combined later on. + +

    Names that are not thus known and used in RTL-generation have no +effect; they are equivalent to no name at all. + +

    For the purpose of debugging the compiler, you may also specify a +name beginning with the * character. Such a name is used only +for identifying the instruction in RTL dumps; it is entirely equivalent +to having a nameless pattern for all other purposes. + +

  2. The RTL template (see RTL Template) is a vector of incomplete +RTL expressions which show what the instruction should look like. It is +incomplete because it may contain match_operand, +match_operator, and match_dup expressions that stand for +operands of the instruction. + +

    If the vector has only one element, that element is the template for the +instruction pattern. If the vector has multiple elements, then the +instruction pattern is a parallel expression containing the +elements described. + +

  3. A condition. This is a string which contains a C expression that is +the final test to decide whether an insn body matches this pattern. + +

    For a named pattern, the condition (if present) may not depend on +the data in the insn being matched, but only the target-machine-type +flags. The compiler needs to test these conditions during +initialization in order to learn exactly which named instructions are +available in a particular run. + +

    For nameless patterns, the condition is applied only when matching an +individual insn, and only after the insn has matched the pattern's +recognition template. The insn's operands may be found in the vector +operands. For an insn where the condition has once matched, it +can't be used to control register allocation, for example by excluding +certain hard registers or hard register combinations. + +

  4. The output template: a string that says how to output matching +insns as assembler code. % in this string specifies where +to substitute the value of an operand. See Output Template. + +

    When simple substitution isn't general enough, you can specify a piece +of C code to compute the output. See Output Statement. + +

  5. Optionally, a vector containing the values of attributes for insns matching +this pattern. See Insn Attributes. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Peephole-Definitions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Peephole-Definitions.html new file mode 100644 index 0000000..9f8539c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Peephole-Definitions.html @@ -0,0 +1,84 @@ + + +Peephole Definitions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Including Patterns, +Up: Machine Desc +



+
+ +

14.18 Machine-Specific Peephole Optimizers

+ +

+In addition to instruction patterns the md file may contain +definitions of machine-specific peephole optimizations. + +

The combiner does not notice certain peephole optimizations when the data +flow in the program does not suggest that it should try them. For example, +sometimes two consecutive insns related in purpose can be combined even +though the second one does not appear to use a register computed in the +first one. A machine-specific peephole optimizer can detect such +opportunities. + +

There are two forms of peephole definitions that may be used. The +original define_peephole is run at assembly output time to +match insns and substitute assembly text. Use of define_peephole +is deprecated. + +

A newer define_peephole2 matches insns and substitutes new +insns. The peephole2 pass is run after register allocation +but before scheduling, which may result in much better code for +targets that do scheduling. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Per_002dFunction-Data.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Per_002dFunction-Data.html new file mode 100644 index 0000000..3a860d0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Per_002dFunction-Data.html @@ -0,0 +1,112 @@ + + +Per-Function Data - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Run-time Target, +Up: Target Macros +



+
+ +

15.4 Defining data structures for per-function information.

+ +

+If the target needs to store information on a per-function basis, GCC +provides a macro and a couple of variables to allow this. Note, just +using statics to store the information is a bad idea, since GCC supports +nested functions, so you can be halfway through encoding one function +when another one comes along. + +

GCC defines a data structure called struct function which +contains all of the data specific to an individual function. This +structure contains a field called machine whose type is +struct machine_function *, which can be used by targets to point +to their own specific data. + +

If a target needs per-function specific data it should define the type +struct machine_function and also the macro INIT_EXPANDERS. +This macro should be used to initialize the function pointer +init_machine_status. This pointer is explained below. + +

One typical use of per-function, target specific data is to create an +RTX to hold the register containing the function's return address. This +RTX can then be used to implement the __builtin_return_address +function, for level 0. + +

Note—earlier implementations of GCC used a single data area to hold +all of the per-function information. Thus when processing of a nested +function began the old per-function data had to be pushed onto a +stack, and when the processing was finished, it had to be popped off the +stack. GCC used to provide function pointers called +save_machine_status and restore_machine_status to handle +the saving and restoring of the target specific information. Since the +single data area approach is no longer used, these pointers are no +longer supported. + +

+— Macro: INIT_EXPANDERS
+

Macro called to initialize any target specific information. This macro +is called once per function, before generation of any RTL has begun. +The intention of this macro is to allow the initialization of the +function pointer init_machine_status. +

+ +
+— Variable: void (*)(struct function *) init_machine_status
+

If this function pointer is non-NULL it will be called once per +function, before function compilation starts, in order to allow the +target to perform any target specific initialization of the +struct function structure. It is intended that this would be +used to initialize the machine of that structure. + +

struct machine_function structures are expected to be freed by GC. +Generally, any memory that they reference must be allocated by using +ggc_alloc, including the structure itself. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Portability.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Portability.html new file mode 100644 index 0000000..2a06aff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Portability.html @@ -0,0 +1,90 @@ + + +Portability - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Contributing, +Up: Top +



+
+ +

2 GCC and Portability

+ +

+GCC itself aims to be portable to any machine where int is at least +a 32-bit type. It aims to target machines with a flat (non-segmented) byte +addressed data address space (the code address space can be separate). +Target ABIs may have 8, 16, 32 or 64-bit int type. char +can be wider than 8 bits. + +

GCC gets most of the information about the target machine from a machine +description which gives an algebraic formula for each of the machine's +instructions. This is a very clean way to describe the target. But when +the compiler needs information that is difficult to express in this +fashion, ad-hoc parameters have been defined for machine descriptions. +The purpose of portability is to reduce the total work needed on the +compiler; it was not of interest for its own sake. + +

GCC does not contain machine dependent code, but it does contain code +that depends on machine parameters such as endianness (whether the most +significant byte has the highest or lowest address of the bytes in a word) +and the availability of autoincrement addressing. In the RTL-generation +pass, it is often necessary to have multiple strategies for generating code +for a particular kind of syntax tree, strategies that are usable for different +combinations of parameters. Often, not all possible cases have been +addressed, but only the common ones or only the ones that have been +encountered. As a result, a new target may require additional +strategies. You will know +if this happens because the compiler will call abort. Fortunately, +the new strategies can be added in a machine-independent fashion, and will +affect only the target machines that need them. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Predicates.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Predicates.html new file mode 100644 index 0000000..6d5512e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Predicates.html @@ -0,0 +1,115 @@ + + +Predicates - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Output Statement, +Up: Machine Desc +



+
+ +

14.7 Predicates

+ +

+A predicate determines whether a match_operand or +match_operator expression matches, and therefore whether the +surrounding instruction pattern will be used for that combination of +operands. GCC has a number of machine-independent predicates, and you +can define machine-specific predicates as needed. By convention, +predicates used with match_operand have names that end in +_operand, and those used with match_operator have names +that end in _operator. + +

All predicates are Boolean functions (in the mathematical sense) of +two arguments: the RTL expression that is being considered at that +position in the instruction pattern, and the machine mode that the +match_operand or match_operator specifies. In this +section, the first argument is called op and the second argument +mode. Predicates can be called from C as ordinary two-argument +functions; this can be useful in output templates or other +machine-specific code. + +

Operand predicates can allow operands that are not actually acceptable +to the hardware, as long as the constraints give reload the ability to +fix them up (see Constraints). However, GCC will usually generate +better code if the predicates specify the requirements of the machine +instructions as closely as possible. Reload cannot fix up operands +that must be constants (“immediate operands”); you must use a +predicate that allows only constants, or else enforce the requirement +in the extra condition. + +

Most predicates handle their mode argument in a uniform manner. +If mode is VOIDmode (unspecified), then op can have +any mode. If mode is anything else, then op must have the +same mode, unless op is a CONST_INT or integer +CONST_DOUBLE. These RTL expressions always have +VOIDmode, so it would be counterproductive to check that their +mode matches. Instead, predicates that accept CONST_INT and/or +integer CONST_DOUBLE check that the value stored in the +constant will fit in the requested mode. + +

Predicates with this behavior are called normal. +genrecog can optimize the instruction recognizer based on +knowledge of how normal predicates treat modes. It can also diagnose +certain kinds of common errors in the use of normal predicates; for +instance, it is almost always an error to use a normal predicate +without specifying a mode. + +

Predicates that do something different with their mode argument +are called special. The generic predicates +address_operand and pmode_register_operand are special +predicates. genrecog does not do any optimizations or +diagnosis when special predicates are used. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Processor-pipeline-description.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Processor-pipeline-description.html new file mode 100644 index 0000000..d53b169 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Processor-pipeline-description.html @@ -0,0 +1,456 @@ + + +Processor pipeline description - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Delay Slots, +Up: Insn Attributes +



+
+ +

14.19.8 Specifying processor pipeline description

+ +

+To achieve better performance, most modern processors +(super-pipelined, superscalar RISC, and VLIW +processors) have many functional units on which several +instructions can be executed simultaneously. An instruction starts +execution if its issue conditions are satisfied. If not, the +instruction is stalled until its conditions are satisfied. Such +interlock (pipeline) delay causes interruption of the fetching +of successor instructions (or demands nop instructions, e.g. for some +MIPS processors). + +

There are two major kinds of interlock delays in modern processors. +The first one is a data dependence delay determining instruction +latency time. The instruction execution is not started until all +source data have been evaluated by prior instructions (there are more +complex cases when the instruction execution starts even when the data +are not available but will be ready in given time after the +instruction execution start). Taking the data dependence delays into +account is simple. The data dependence (true, output, and +anti-dependence) delay between two instructions is given by a +constant. In most cases this approach is adequate. The second kind +of interlock delays is a reservation delay. The reservation delay +means that two instructions under execution will be in need of shared +processors resources, i.e. buses, internal registers, and/or +functional units, which are reserved for some time. Taking this kind +of delay into account is complex especially for modern RISC +processors. + +

The task of exploiting more processor parallelism is solved by an +instruction scheduler. For a better solution to this problem, the +instruction scheduler has to have an adequate description of the +processor parallelism (or pipeline description). GCC +machine descriptions describe processor parallelism and functional +unit reservations for groups of instructions with the aid of +regular expressions. + +

The GCC instruction scheduler uses a pipeline hazard recognizer to +figure out the possibility of the instruction issue by the processor +on a given simulated processor cycle. The pipeline hazard recognizer is +automatically generated from the processor pipeline description. The +pipeline hazard recognizer generated from the machine description +is based on a deterministic finite state automaton (DFA): +the instruction issue is possible if there is a transition from one +automaton state to another one. This algorithm is very fast, and +furthermore, its speed is not dependent on processor +complexity1. + +

The rest of this section describes the directives that constitute +an automaton-based processor pipeline description. The order of +these constructions within the machine description file is not +important. + +

The following optional construction describes names of automata +generated and used for the pipeline hazards recognition. Sometimes +the generated finite state automaton used by the pipeline hazard +recognizer is large. If we use more than one automaton and bind functional +units to the automata, the total size of the automata is usually +less than the size of the single automaton. If there is no one such +construction, only one finite state automaton is generated. + +

     (define_automaton automata-names)
+
+

automata-names is a string giving names of the automata. The +names are separated by commas. All the automata should have unique names. +The automaton name is used in the constructions define_cpu_unit and +define_query_cpu_unit. + +

Each processor functional unit used in the description of instruction +reservations should be described by the following construction. + +

     (define_cpu_unit unit-names [automaton-name])
+
+

unit-names is a string giving the names of the functional units +separated by commas. Don't use name nothing, it is reserved +for other goals. + +

automaton-name is a string giving the name of the automaton with +which the unit is bound. The automaton should be described in +construction define_automaton. You should give +automaton-name, if there is a defined automaton. + +

The assignment of units to automata are constrained by the uses of the +units in insn reservations. The most important constraint is: if a +unit reservation is present on a particular cycle of an alternative +for an insn reservation, then some unit from the same automaton must +be present on the same cycle for the other alternatives of the insn +reservation. The rest of the constraints are mentioned in the +description of the subsequent constructions. + +

The following construction describes CPU functional units analogously +to define_cpu_unit. The reservation of such units can be +queried for an automaton state. The instruction scheduler never +queries reservation of functional units for given automaton state. So +as a rule, you don't need this construction. This construction could +be used for future code generation goals (e.g. to generate +VLIW insn templates). + +

     (define_query_cpu_unit unit-names [automaton-name])
+
+

unit-names is a string giving names of the functional units +separated by commas. + +

automaton-name is a string giving the name of the automaton with +which the unit is bound. + +

The following construction is the major one to describe pipeline +characteristics of an instruction. + +

     (define_insn_reservation insn-name default_latency
+                              condition regexp)
+
+

default_latency is a number giving latency time of the +instruction. There is an important difference between the old +description and the automaton based pipeline description. The latency +time is used for all dependencies when we use the old description. In +the automaton based pipeline description, the given latency time is only +used for true dependencies. The cost of anti-dependencies is always +zero and the cost of output dependencies is the difference between +latency times of the producing and consuming insns (if the difference +is negative, the cost is considered to be zero). You can always +change the default costs for any description by using the target hook +TARGET_SCHED_ADJUST_COST (see Scheduling). + +

insn-name is a string giving the internal name of the insn. The +internal names are used in constructions define_bypass and in +the automaton description file generated for debugging. The internal +name has nothing in common with the names in define_insn. It is a +good practice to use insn classes described in the processor manual. + +

condition defines what RTL insns are described by this +construction. You should remember that you will be in trouble if +condition for two or more different +define_insn_reservation constructions is TRUE for an insn. In +this case what reservation will be used for the insn is not defined. +Such cases are not checked during generation of the pipeline hazards +recognizer because in general recognizing that two conditions may have +the same value is quite difficult (especially if the conditions +contain symbol_ref). It is also not checked during the +pipeline hazard recognizer work because it would slow down the +recognizer considerably. + +

regexp is a string describing the reservation of the cpu's functional +units by the instruction. The reservations are described by a regular +expression according to the following syntax: + +

            regexp = regexp "," oneof
+                   | oneof
+     
+            oneof = oneof "|" allof
+                  | allof
+     
+            allof = allof "+" repeat
+                  | repeat
+     
+            repeat = element "*" number
+                   | element
+     
+            element = cpu_function_unit_name
+                    | reservation_name
+                    | result_name
+                    | "nothing"
+                    | "(" regexp ")"
+
+
    +
  • , is used for describing the start of the next cycle in +the reservation. + +
  • | is used for describing a reservation described by the first +regular expression or a reservation described by the second +regular expression or etc. + +
  • + is used for describing a reservation described by the first +regular expression and a reservation described by the +second regular expression and etc. + +
  • * is used for convenience and simply means a sequence in which +the regular expression are repeated number times with cycle +advancing (see ,). + +
  • cpu_function_unit_name denotes reservation of the named +functional unit. + +
  • reservation_name — see description of construction +define_reservation. + +
  • nothing denotes no unit reservations. +
+ +

Sometimes unit reservations for different insns contain common parts. +In such case, you can simplify the pipeline description by describing +the common part by the following construction + +

     (define_reservation reservation-name regexp)
+
+

reservation-name is a string giving name of regexp. +Functional unit names and reservation names are in the same name +space. So the reservation names should be different from the +functional unit names and can not be the reserved name nothing. + +

The following construction is used to describe exceptions in the +latency time for given instruction pair. This is so called bypasses. + +

     (define_bypass number out_insn_names in_insn_names
+                    [guard])
+
+

number defines when the result generated by the instructions +given in string out_insn_names will be ready for the +instructions given in string in_insn_names. The instructions in +the string are separated by commas. + +

guard is an optional string giving the name of a C function which +defines an additional guard for the bypass. The function will get the +two insns as parameters. If the function returns zero the bypass will +be ignored for this case. The additional guard is necessary to +recognize complicated bypasses, e.g. when the consumer is only an address +of insn store (not a stored value). + +

The following five constructions are usually used to describe +VLIW processors, or more precisely, to describe a placement +of small instructions into VLIW instruction slots. They +can be used for RISC processors, too. + +

     (exclusion_set unit-names unit-names)
+     (presence_set unit-names patterns)
+     (final_presence_set unit-names patterns)
+     (absence_set unit-names patterns)
+     (final_absence_set unit-names patterns)
+
+

unit-names is a string giving names of functional units +separated by commas. + +

patterns is a string giving patterns of functional units +separated by comma. Currently pattern is one unit or units +separated by white-spaces. + +

The first construction (exclusion_set) means that each +functional unit in the first string can not be reserved simultaneously +with a unit whose name is in the second string and vice versa. For +example, the construction is useful for describing processors +(e.g. some SPARC processors) with a fully pipelined floating point +functional unit which can execute simultaneously only single floating +point insns or only double floating point insns. + +

The second construction (presence_set) means that each +functional unit in the first string can not be reserved unless at +least one of pattern of units whose names are in the second string is +reserved. This is an asymmetric relation. For example, it is useful +for description that VLIW slot1 is reserved after +slot0 reservation. We could describe it by the following +construction + +

     (presence_set "slot1" "slot0")
+
+

Or slot1 is reserved only after slot0 and unit b0 +reservation. In this case we could write + +

     (presence_set "slot1" "slot0 b0")
+
+

The third construction (final_presence_set) is analogous to +presence_set. The difference between them is when checking is +done. When an instruction is issued in given automaton state +reflecting all current and planned unit reservations, the automaton +state is changed. The first state is a source state, the second one +is a result state. Checking for presence_set is done on the +source state reservation, checking for final_presence_set is +done on the result reservation. This construction is useful to +describe a reservation which is actually two subsequent reservations. +For example, if we use + +

     (presence_set "slot1" "slot0")
+
+

the following insn will be never issued (because slot1 requires +slot0 which is absent in the source state). + +

     (define_reservation "insn_and_nop" "slot0 + slot1")
+
+

but it can be issued if we use analogous final_presence_set. + +

The forth construction (absence_set) means that each functional +unit in the first string can be reserved only if each pattern of units +whose names are in the second string is not reserved. This is an +asymmetric relation (actually exclusion_set is analogous to +this one but it is symmetric). For example it might be useful in a +VLIW description to say that slot0 cannot be reserved +after either slot1 or slot2 have been reserved. This +can be described as: + +

     (absence_set "slot0" "slot1, slot2")
+
+

Or slot2 can not be reserved if slot0 and unit b0 +are reserved or slot1 and unit b1 are reserved. In +this case we could write + +

     (absence_set "slot2" "slot0 b0, slot1 b1")
+
+

All functional units mentioned in a set should belong to the same +automaton. + +

The last construction (final_absence_set) is analogous to +absence_set but checking is done on the result (state) +reservation. See comments for final_presence_set. + +

You can control the generator of the pipeline hazard recognizer with +the following construction. + +

     (automata_option options)
+
+

options is a string giving options which affect the generated +code. Currently there are the following options: + +

    +
  • no-minimization makes no minimization of the automaton. This is +only worth to do when we are debugging the description and need to +look more accurately at reservations of states. + +
  • time means printing time statistics about the generation of +automata. + +
  • stats means printing statistics about the generated automata +such as the number of DFA states, NDFA states and arcs. + +
  • v means a generation of the file describing the result automata. +The file has suffix .dfa and can be used for the description +verification and debugging. + +
  • w means a generation of warning instead of error for +non-critical errors. + +
  • ndfa makes nondeterministic finite state automata. This affects +the treatment of operator | in the regular expressions. The +usual treatment of the operator is to try the first alternative and, +if the reservation is not possible, the second alternative. The +nondeterministic treatment means trying all alternatives, some of them +may be rejected by reservations in the subsequent insns. + +
  • progress means output of a progress bar showing how many states +were generated so far for automaton being processed. This is useful +during debugging a DFA description. If you see too many +generated states, you could interrupt the generator of the pipeline +hazard recognizer and try to figure out a reason for generation of the +huge automaton. +
+ +

As an example, consider a superscalar RISC machine which can +issue three insns (two integer insns and one floating point insn) on +the cycle but can finish only two insns. To describe this, we define +the following functional units. + +

     (define_cpu_unit "i0_pipeline, i1_pipeline, f_pipeline")
+     (define_cpu_unit "port0, port1")
+
+

All simple integer insns can be executed in any integer pipeline and +their result is ready in two cycles. The simple integer insns are +issued into the first pipeline unless it is reserved, otherwise they +are issued into the second pipeline. Integer division and +multiplication insns can be executed only in the second integer +pipeline and their results are ready correspondingly in 8 and 4 +cycles. The integer division is not pipelined, i.e. the subsequent +integer division insn can not be issued until the current division +insn finished. Floating point insns are fully pipelined and their +results are ready in 3 cycles. Where the result of a floating point +insn is used by an integer insn, an additional delay of one cycle is +incurred. To describe all of this we could specify + +

     (define_cpu_unit "div")
+     
+     (define_insn_reservation "simple" 2 (eq_attr "type" "int")
+                              "(i0_pipeline | i1_pipeline), (port0 | port1)")
+     
+     (define_insn_reservation "mult" 4 (eq_attr "type" "mult")
+                              "i1_pipeline, nothing*2, (port0 | port1)")
+     
+     (define_insn_reservation "div" 8 (eq_attr "type" "div")
+                              "i1_pipeline, div*7, div + (port0 | port1)")
+     
+     (define_insn_reservation "float" 3 (eq_attr "type" "float")
+                              "f_pipeline, nothing, (port0 | port1))
+     
+     (define_bypass 4 "float" "simple,mult,div")
+
+

To simplify the description we could describe the following reservation + +

     (define_reservation "finish" "port0|port1")
+
+

and use it in all define_insn_reservation as in the following +construction + +

     (define_insn_reservation "simple" 2 (eq_attr "type" "int")
+                              "(i0_pipeline | i1_pipeline), finish")
+
+
+
+

Footnotes

[1] However, the size of the automaton depends on + processor complexity. To limit this effect, machine descriptions + can split orthogonal parts of the machine description among several + automata: but then, since each of these must be stepped independently, + this does cause a small decrease in the algorithm's performance.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Profile-information.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Profile-information.html new file mode 100644 index 0000000..1fbc3ca --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Profile-information.html @@ -0,0 +1,143 @@ + + +Profile information - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Edges, +Up: Control Flow +



+
+ +

13.3 Profile information

+ +

In many cases a compiler must make a choice whether to trade speed in +one part of code for speed in another, or to trade code size for code +speed. In such cases it is useful to know information about how often +some given block will be executed. That is the purpose for +maintaining profile within the flow graph. +GCC can handle profile information obtained through profile +feedback, but it can also estimate branch probabilities based on +statics and heuristics. + +

The feedback based profile is produced by compiling the program with +instrumentation, executing it on a train run and reading the numbers +of executions of basic blocks and edges back to the compiler while +re-compiling the program to produce the final executable. This method +provides very accurate information about where a program spends most +of its time on the train run. Whether it matches the average run of +course depends on the choice of train data set, but several studies +have shown that the behavior of a program usually changes just +marginally over different data sets. + +

When profile feedback is not available, the compiler may be asked to +attempt to predict the behavior of each branch in the program using a +set of heuristics (see predict.def for details) and compute +estimated frequencies of each basic block by propagating the +probabilities over the graph. + +

Each basic_block contains two integer fields to represent +profile information: frequency and count. The +frequency is an estimation how often is basic block executed +within a function. It is represented as an integer scaled in the +range from 0 to BB_FREQ_BASE. The most frequently executed +basic block in function is initially set to BB_FREQ_BASE and +the rest of frequencies are scaled accordingly. During optimization, +the frequency of the most frequent basic block can both decrease (for +instance by loop unrolling) or grow (for instance by cross-jumping +optimization), so scaling sometimes has to be performed multiple +times. + +

The count contains hard-counted numbers of execution measured +during training runs and is nonzero only when profile feedback is +available. This value is represented as the host's widest integer +(typically a 64 bit integer) of the special type gcov_type. + +

Most optimization passes can use only the frequency information of a +basic block, but a few passes may want to know hard execution counts. +The frequencies should always match the counts after scaling, however +during updating of the profile information numerical error may +accumulate into quite large errors. + +

Each edge also contains a branch probability field: an integer in the +range from 0 to REG_BR_PROB_BASE. It represents probability of +passing control from the end of the src basic block to the +dest basic block, i.e. the probability that control will flow +along this edge. The EDGE_FREQUENCY macro is available to +compute how frequently a given edge is taken. There is a count +field for each edge as well, representing same information as for a +basic block. + +

The basic block frequencies are not represented in the instruction +stream, but in the RTL representation the edge frequencies are +represented for conditional jumps (via the REG_BR_PROB +macro) since they are used when instructions are output to the +assembly file and the flow graph is no longer maintained. + +

The probability that control flow arrives via a given edge to its +destination basic block is called reverse probability and is not +directly represented, but it may be easily computed from frequencies +of basic blocks. + +

Updating profile information is a delicate task that can unfortunately +not be easily integrated with the CFG manipulation API. Many of the +functions and hooks to modify the CFG, such as +redirect_edge_and_branch, do not have enough information to +easily update the profile, so updating it is in the majority of cases +left up to the caller. It is difficult to uncover bugs in the profile +updating code, because they manifest themselves only by producing +worse code, and checking profile consistency is not possible because +of numeric error accumulation. Hence special attention needs to be +given to this issue in each pass that modifies the CFG. + +

It is important to point out that REG_BR_PROB_BASE and +BB_FREQ_BASE are both set low enough to be possible to compute +second power of any frequency or probability in the flow graph, it is +not possible to even square the count field, as modern CPUs are +fast enough to execute $2^32$ operations quickly. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Profiling.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Profiling.html new file mode 100644 index 0000000..55b42b5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Profiling.html @@ -0,0 +1,99 @@ + + +Profiling - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Function Entry, +Up: Stack and Calling +



+
+ +

15.10.12 Generating Code for Profiling

+ +

+These macros will help you generate code for profiling. + +

+— Macro: FUNCTION_PROFILER (file, labelno)
+

A C statement or compound statement to output to file some +assembler code to call the profiling subroutine mcount. + +

The details of how mcount expects to be called are determined by +your operating system environment, not by GCC. To figure them out, +compile a small program for profiling using the system's installed C +compiler and look at the assembler code that results. + +

Older implementations of mcount expect the address of a counter +variable to be loaded into some register. The name of this variable is +LP followed by the number labelno, so you would generate +the name using LP%d in a fprintf. +

+ +
+— Macro: PROFILE_HOOK
+

A C statement or compound statement to output to file some assembly +code to call the profiling subroutine mcount even the target does +not support profiling. +

+ +
+— Macro: NO_PROFILE_COUNTERS
+

Define this macro to be an expression with a nonzero value if the +mcount subroutine on your system does not need a counter variable +allocated for each function. This is true for almost all modern +implementations. If you define this macro, you must not use the +labelno argument to FUNCTION_PROFILER. +

+ +
+— Macro: PROFILE_BEFORE_PROLOGUE
+

Define this macro if the code for function profiling should come before +the function prologue. Normally, the profiling code comes after. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Classes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Classes.html new file mode 100644 index 0000000..5b57787 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Classes.html @@ -0,0 +1,188 @@ + + +RTL Classes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: RTL Objects, +Up: RTL +



+
+ +

12.2 RTL Classes and Formats

+ +

+The various expression codes are divided into several classes, +which are represented by single characters. You can determine the class +of an RTX code with the macro GET_RTX_CLASS (code). +Currently, rtl.def defines these classes: + +

+
RTX_OBJ
An RTX code that represents an actual object, such as a register +(REG) or a memory location (MEM, SYMBOL_REF). +LO_SUM) is also included; instead, SUBREG and +STRICT_LOW_PART are not in this class, but in class x. + +
RTX_CONST_OBJ
An RTX code that represents a constant object. HIGH is also +included in this class. + +
RTX_COMPARE
An RTX code for a non-symmetric comparison, such as GEU or +LT. + +
RTX_COMM_COMPARE
An RTX code for a symmetric (commutative) comparison, such as EQ +or ORDERED. + +
RTX_UNARY
An RTX code for a unary arithmetic operation, such as NEG, +NOT, or ABS. This category also includes value extension +(sign or zero) and conversions between integer and floating point. + +
RTX_COMM_ARITH
An RTX code for a commutative binary operation, such as PLUS or +AND. NE and EQ are comparisons, so they have class +<. + +
RTX_BIN_ARITH
An RTX code for a non-commutative binary operation, such as MINUS, +DIV, or ASHIFTRT. + +
RTX_BITFIELD_OPS
An RTX code for a bit-field operation. Currently only +ZERO_EXTRACT and SIGN_EXTRACT. These have three inputs +and are lvalues (so they can be used for insertion as well). +See Bit-Fields. + +
RTX_TERNARY
An RTX code for other three input operations. Currently only +IF_THEN_ELSE and VEC_MERGE. + +
RTX_INSN
An RTX code for an entire instruction: INSN, JUMP_INSN, and +CALL_INSN. See Insns. + +
RTX_MATCH
An RTX code for something that matches in insns, such as +MATCH_DUP. These only occur in machine descriptions. + +
RTX_AUTOINC
An RTX code for an auto-increment addressing mode, such as +POST_INC. + +
RTX_EXTRA
All other RTX codes. This category includes the remaining codes used +only in machine descriptions (DEFINE_*, etc.). It also includes +all the codes describing side effects (SET, USE, +CLOBBER, etc.) and the non-insns that may appear on an insn +chain, such as NOTE, BARRIER, and CODE_LABEL. +SUBREG is also part of this class. +
+ +

For each expression code, rtl.def specifies the number of +contained objects and their kinds using a sequence of characters +called the format of the expression code. For example, +the format of subreg is ei. + +

These are the most commonly used format characters: + +

+
e
An expression (actually a pointer to an expression). + +
i
An integer. + +
w
A wide integer. + +
s
A string. + +
E
A vector of expressions. +
+ +

A few other format characters are used occasionally: + +

+
u
u is equivalent to e except that it is printed differently +in debugging dumps. It is used for pointers to insns. + +
n
n is equivalent to i except that it is printed differently +in debugging dumps. It is used for the line number or code number of a +note insn. + +
S
S indicates a string which is optional. In the RTL objects in +core, S is equivalent to s, but when the object is read, +from an md file, the string value of this operand may be omitted. +An omitted string is taken to be the null string. + +
V
V indicates a vector which is optional. In the RTL objects in +core, V is equivalent to E, but when the object is read +from an md file, the vector value of this operand may be omitted. +An omitted vector is effectively the same as a vector of no elements. + +
B
B indicates a pointer to basic block structure. + +
0
0 means a slot whose contents do not fit any normal category. +0 slots are not printed at all in dumps, and are often used in +special ways by small parts of the compiler. +
+ +

There are macros to get the number of operands and the format +of an expression code: + + + +

GET_RTX_LENGTH (code)
Number of operands of an RTX of code code. + +


GET_RTX_FORMAT (code)
The format of an RTX of code code, as a C string. +
+ +

Some classes of RTX codes always have the same format. For example, it +is safe to assume that all comparison operations have format ee. + +

+
1
All codes of this class have format e. + +
<
c
2
All codes of these classes have format ee. + +
b
3
All codes of these classes have format eee. + +
i
All codes of this class have formats that begin with iuueiee. +See Insns. Note that not all RTL objects linked onto an insn chain +are of class i. + +
o
m
x
You can make no assumptions about the format of these codes. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Declarations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Declarations.html new file mode 100644 index 0000000..941d56f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Declarations.html @@ -0,0 +1,76 @@ + + +RTL Declarations - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Conversions, +Up: RTL +



+
+ +

12.14 Declarations

+ +

+Declaration expression codes do not represent arithmetic operations +but rather state assertions about their operands. + + + + +

(strict_low_part (subreg:m (reg:n r) 0))
This expression code is used in only one context: as the destination operand of a +set expression. In addition, the operand of this expression +must be a non-paradoxical subreg expression. + +

The presence of strict_low_part says that the part of the +register which is meaningful in mode n, but is not part of +mode m, is not to be altered. Normally, an assignment to such +a subreg is allowed to have undefined effects on the rest of the +register when m is less than a word. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Objects.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Objects.html new file mode 100644 index 0000000..704b7de --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Objects.html @@ -0,0 +1,126 @@ + + +RTL Objects - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: RTL +



+
+ +

12.1 RTL Object Types

+ +

+RTL uses five kinds of objects: expressions, integers, wide integers, +strings and vectors. Expressions are the most important ones. An RTL +expression (“RTX”, for short) is a C structure, but it is usually +referred to with a pointer; a type that is given the typedef name +rtx. + +

An integer is simply an int; their written form uses decimal +digits. A wide integer is an integral object whose type is +HOST_WIDE_INT; their written form uses decimal digits. + +

A string is a sequence of characters. In core it is represented as a +char * in usual C fashion, and it is written in C syntax as well. +However, strings in RTL may never be null. If you write an empty string in +a machine description, it is represented in core as a null pointer rather +than as a pointer to a null character. In certain contexts, these null +pointers instead of strings are valid. Within RTL code, strings are most +commonly found inside symbol_ref expressions, but they appear in +other contexts in the RTL expressions that make up machine descriptions. + +

In a machine description, strings are normally written with double +quotes, as you would in C. However, strings in machine descriptions may +extend over many lines, which is invalid C, and adjacent string +constants are not concatenated as they are in C. Any string constant +may be surrounded with a single set of parentheses. Sometimes this +makes the machine description easier to read. + +

There is also a special syntax for strings, which can be useful when C +code is embedded in a machine description. Wherever a string can +appear, it is also valid to write a C-style brace block. The entire +brace block, including the outermost pair of braces, is considered to be +the string constant. Double quote characters inside the braces are not +special. Therefore, if you write string constants in the C code, you +need not escape each quote character with a backslash. + +

A vector contains an arbitrary number of pointers to expressions. The +number of elements in the vector is explicitly present in the vector. +The written form of a vector consists of square brackets +([...]) surrounding the elements, in sequence and with +whitespace separating them. Vectors of length zero are not created; +null pointers are used instead. + +

Expressions are classified by expression codes (also called RTX +codes). The expression code is a name defined in rtl.def, which is +also (in uppercase) a C enumeration constant. The possible expression +codes and their meanings are machine-independent. The code of an RTX can +be extracted with the macro GET_CODE (x) and altered with +PUT_CODE (x, newcode). + +

The expression code determines how many operands the expression contains, +and what kinds of objects they are. In RTL, unlike Lisp, you cannot tell +by looking at an operand what kind of object it is. Instead, you must know +from its context—from the expression code of the containing expression. +For example, in an expression of code subreg, the first operand is +to be regarded as an expression and the second operand as an integer. In +an expression of code plus, there are two operands, both of which +are to be regarded as expressions. In a symbol_ref expression, +there is one operand, which is to be regarded as a string. + +

Expressions are written as parentheses containing the name of the +expression type, its flags and machine mode if any, and then the operands +of the expression (separated by spaces). + +

Expression code names in the md file are written in lowercase, +but when they appear in C code they are written in uppercase. In this +manual, they are shown as follows: const_int. + +

In a few contexts a null pointer is valid where an expression is normally +wanted. The written form of this is (nil). + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Template.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Template.html new file mode 100644 index 0000000..c2d9c16 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-Template.html @@ -0,0 +1,276 @@ + + +RTL Template - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Example, +Up: Machine Desc +



+
+ +

14.4 RTL Template

+ +

+The RTL template is used to define which insns match the particular pattern +and how to find their operands. For named patterns, the RTL template also +says how to construct an insn from specified operands. + +

Construction involves substituting specified operands into a copy of the +template. Matching involves determining the values that serve as the +operands in the insn being matched. Both of these activities are +controlled by special expression types that direct matching and +substitution of the operands. + + + +

(match_operand:m n predicate constraint)
This expression is a placeholder for operand number n of +the insn. When constructing an insn, operand number n +will be substituted at this point. When matching an insn, whatever +appears at this position in the insn will be taken as operand +number n; but it must satisfy predicate or this instruction +pattern will not match at all. + +

Operand numbers must be chosen consecutively counting from zero in +each instruction pattern. There may be only one match_operand +expression in the pattern for each operand number. Usually operands +are numbered in the order of appearance in match_operand +expressions. In the case of a define_expand, any operand numbers +used only in match_dup expressions have higher values than all +other operand numbers. + +

predicate is a string that is the name of a function that +accepts two arguments, an expression and a machine mode. +See Predicates. During matching, the function will be called with +the putative operand as the expression and m as the mode +argument (if m is not specified, VOIDmode will be used, +which normally causes predicate to accept any mode). If it +returns zero, this instruction pattern fails to match. +predicate may be an empty string; then it means no test is to be +done on the operand, so anything which occurs in this position is +valid. + +

Most of the time, predicate will reject modes other than m—but +not always. For example, the predicate address_operand uses +m as the mode of memory ref that the address should be valid for. +Many predicates accept const_int nodes even though their mode is +VOIDmode. + +

constraint controls reloading and the choice of the best register +class to use for a value, as explained later (see Constraints). +If the constraint would be an empty string, it can be omitted. + +

People are often unclear on the difference between the constraint and the +predicate. The predicate helps decide whether a given insn matches the +pattern. The constraint plays no role in this decision; instead, it +controls various decisions in the case of an insn which does match. + +


(match_scratch:m n constraint)
This expression is also a placeholder for operand number n +and indicates that operand must be a scratch or reg +expression. + +

When matching patterns, this is equivalent to + +

          (match_operand:m n "scratch_operand" pred)
+     
+

but, when generating RTL, it produces a (scratch:m) +expression. + +

If the last few expressions in a parallel are clobber +expressions whose operands are either a hard register or +match_scratch, the combiner can add or delete them when +necessary. See Side Effects. + +


(match_dup n)
This expression is also a placeholder for operand number n. +It is used when the operand needs to appear more than once in the +insn. + +

In construction, match_dup acts just like match_operand: +the operand is substituted into the insn being constructed. But in +matching, match_dup behaves differently. It assumes that operand +number n has already been determined by a match_operand +appearing earlier in the recognition template, and it matches only an +identical-looking expression. + +

Note that match_dup should not be used to tell the compiler that +a particular register is being used for two operands (example: +add that adds one register to another; the second register is +both an input operand and the output operand). Use a matching +constraint (see Simple Constraints) for those. match_dup is for the cases where one +operand is used in two places in the template, such as an instruction +that computes both a quotient and a remainder, where the opcode takes +two input operands but the RTL template has to refer to each of those +twice; once for the quotient pattern and once for the remainder pattern. + +


(match_operator:m n predicate [operands...])
This pattern is a kind of placeholder for a variable RTL expression +code. + +

When constructing an insn, it stands for an RTL expression whose +expression code is taken from that of operand n, and whose +operands are constructed from the patterns operands. + +

When matching an expression, it matches an expression if the function +predicate returns nonzero on that expression and the +patterns operands match the operands of the expression. + +

Suppose that the function commutative_operator is defined as +follows, to match any expression whose operator is one of the +commutative arithmetic operators of RTL and whose mode is mode: + +

          int
+          commutative_integer_operator (x, mode)
+               rtx x;
+               enum machine_mode mode;
+          {
+            enum rtx_code code = GET_CODE (x);
+            if (GET_MODE (x) != mode)
+              return 0;
+            return (GET_RTX_CLASS (code) == RTX_COMM_ARITH
+                    || code == EQ || code == NE);
+          }
+     
+

Then the following pattern will match any RTL expression consisting +of a commutative operator applied to two general operands: + +

          (match_operator:SI 3 "commutative_operator"
+            [(match_operand:SI 1 "general_operand" "g")
+             (match_operand:SI 2 "general_operand" "g")])
+     
+

Here the vector [operands...] contains two patterns +because the expressions to be matched all contain two operands. + +

When this pattern does match, the two operands of the commutative +operator are recorded as operands 1 and 2 of the insn. (This is done +by the two instances of match_operand.) Operand 3 of the insn +will be the entire commutative expression: use GET_CODE +(operands[3]) to see which commutative operator was used. + +

The machine mode m of match_operator works like that of +match_operand: it is passed as the second argument to the +predicate function, and that function is solely responsible for +deciding whether the expression to be matched “has” that mode. + +

When constructing an insn, argument 3 of the gen-function will specify +the operation (i.e. the expression code) for the expression to be +made. It should be an RTL expression, whose expression code is copied +into a new expression whose operands are arguments 1 and 2 of the +gen-function. The subexpressions of argument 3 are not used; +only its expression code matters. + +

When match_operator is used in a pattern for matching an insn, +it usually best if the operand number of the match_operator +is higher than that of the actual operands of the insn. This improves +register allocation because the register allocator often looks at +operands 1 and 2 of insns to see if it can do register tying. + +

There is no way to specify constraints in match_operator. The +operand of the insn which corresponds to the match_operator +never has any constraints because it is never reloaded as a whole. +However, if parts of its operands are matched by +match_operand patterns, those parts may have constraints of +their own. + +


(match_op_dup:m n[operands...])
Like match_dup, except that it applies to operators instead of +operands. When constructing an insn, operand number n will be +substituted at this point. But in matching, match_op_dup behaves +differently. It assumes that operand number n has already been +determined by a match_operator appearing earlier in the +recognition template, and it matches only an identical-looking +expression. + +


(match_parallel n predicate [subpat...])
This pattern is a placeholder for an insn that consists of a +parallel expression with a variable number of elements. This +expression should only appear at the top level of an insn pattern. + +

When constructing an insn, operand number n will be substituted at +this point. When matching an insn, it matches if the body of the insn +is a parallel expression with at least as many elements as the +vector of subpat expressions in the match_parallel, if each +subpat matches the corresponding element of the parallel, +and the function predicate returns nonzero on the +parallel that is the body of the insn. It is the responsibility +of the predicate to validate elements of the parallel beyond +those listed in the match_parallel. + +

A typical use of match_parallel is to match load and store +multiple expressions, which can contain a variable number of elements +in a parallel. For example, + +

          (define_insn ""
+            [(match_parallel 0 "load_multiple_operation"
+               [(set (match_operand:SI 1 "gpc_reg_operand" "=r")
+                     (match_operand:SI 2 "memory_operand" "m"))
+                (use (reg:SI 179))
+                (clobber (reg:SI 179))])]
+            ""
+            "loadm 0,0,%1,%2")
+     
+

This example comes from a29k.md. The function +load_multiple_operation is defined in a29k.c and checks +that subsequent elements in the parallel are the same as the +set in the pattern, except that they are referencing subsequent +registers and memory locations. + +

An insn that matches this pattern might look like: + +

          (parallel
+           [(set (reg:SI 20) (mem:SI (reg:SI 100)))
+            (use (reg:SI 179))
+            (clobber (reg:SI 179))
+            (set (reg:SI 21)
+                 (mem:SI (plus:SI (reg:SI 100)
+                                  (const_int 4))))
+            (set (reg:SI 22)
+                 (mem:SI (plus:SI (reg:SI 100)
+                                  (const_int 8))))])
+     
+


(match_par_dup n [subpat...])
Like match_op_dup, but for match_parallel instead of +match_operator. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-passes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-passes.html new file mode 100644 index 0000000..93aaeb7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL-passes.html @@ -0,0 +1,323 @@ + + +RTL passes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Tree-SSA passes, +Up: Passes +



+
+ +

8.5 RTL passes

+ +

The following briefly describes the rtl generation and optimization +passes that are run after tree optimization. + +

    +
  • RTL generation + + +

    The source files for RTL generation include +stmt.c, +calls.c, +expr.c, +explow.c, +expmed.c, +function.c, +optabs.c +and emit-rtl.c. +Also, the file +insn-emit.c, generated from the machine description by the +program genemit, is used in this pass. The header file +expr.h is used for communication within this pass. + +

    The header files insn-flags.h and insn-codes.h, +generated from the machine description by the programs genflags +and gencodes, tell this pass which standard names are available +for use and which patterns correspond to them. + +

  • Generate exception handling landing pads + +

    This pass generates the glue that handles communication between the +exception handling library routines and the exception handlers within +the function. Entry points in the function that are invoked by the +exception handling library are called landing pads. The code +for this pass is located within except.c. + +

  • Cleanup control flow graph + +

    This pass removes unreachable code, simplifies jumps to next, jumps to +jump, jumps across jumps, etc. The pass is run multiple times. +For historical reasons, it is occasionally referred to as the “jump +optimization pass”. The bulk of the code for this pass is in +cfgcleanup.c, and there are support routines in cfgrtl.c +and jump.c. + +

  • Forward propagation of single-def values + +

    This pass attempts to remove redundant computation by substituting +variables that come from a single definition, and +seeing if the result can be simplified. It performs copy propagation +and addressing mode selection. The pass is run twice, with values +being propagated into loops only on the second run. It is located in +fwprop.c. + +

  • Common subexpression elimination + +

    This pass removes redundant computation within basic blocks, and +optimizes addressing modes based on cost. The pass is run twice. +The source is located in cse.c. + +

  • Global common subexpression elimination. + +

    This pass performs two +different types of GCSE depending on whether you are optimizing for +size or not (LCM based GCSE tends to increase code size for a gain in +speed, while Morel-Renvoise based GCSE does not). +When optimizing for size, GCSE is done using Morel-Renvoise Partial +Redundancy Elimination, with the exception that it does not try to move +invariants out of loops—that is left to the loop optimization pass. +If MR PRE GCSE is done, code hoisting (aka unification) is also done, as +well as load motion. +If you are optimizing for speed, LCM (lazy code motion) based GCSE is +done. LCM is based on the work of Knoop, Ruthing, and Steffen. LCM +based GCSE also does loop invariant code motion. We also perform load +and store motion when optimizing for speed. +Regardless of which type of GCSE is used, the GCSE pass also performs +global constant and copy propagation. +The source file for this pass is gcse.c, and the LCM routines +are in lcm.c. + +

  • Loop optimization + +

    This pass performs several loop related optimizations. +The source files cfgloopanal.c and cfgloopmanip.c contain +generic loop analysis and manipulation code. Initialization and finalization +of loop structures is handled by loop-init.c. +A loop invariant motion pass is implemented in loop-invariant.c. +Basic block level optimizations—unrolling, peeling and unswitching loops— +are implemented in loop-unswitch.c and loop-unroll.c. +Replacing of the exit condition of loops by special machine-dependent +instructions is handled by loop-doloop.c. + +

  • Jump bypassing + +

    This pass is an aggressive form of GCSE that transforms the control +flow graph of a function by propagating constants into conditional +branch instructions. The source file for this pass is gcse.c. + +

  • If conversion + +

    This pass attempts to replace conditional branches and surrounding +assignments with arithmetic, boolean value producing comparison +instructions, and conditional move instructions. In the very last +invocation after reload, it will generate predicated instructions +when supported by the target. The pass is located in ifcvt.c. + +

  • Web construction + +

    This pass splits independent uses of each pseudo-register. This can +improve effect of the other transformation, such as CSE or register +allocation. Its source files are web.c. + +

  • Life analysis + +

    This pass computes which pseudo-registers are live at each point in +the program, and makes the first instruction that uses a value point +at the instruction that computed the value. It then deletes +computations whose results are never used, and combines memory +references with add or subtract instructions to make autoincrement or +autodecrement addressing. The pass is located in flow.c. + +

  • Instruction combination + +

    This pass attempts to combine groups of two or three instructions that +are related by data flow into single instructions. It combines the +RTL expressions for the instructions by substitution, simplifies the +result using algebra, and then attempts to match the result against +the machine description. The pass is located in combine.c. + +

  • Register movement + +

    This pass looks for cases where matching constraints would force an +instruction to need a reload, and this reload would be a +register-to-register move. It then attempts to change the registers +used by the instruction to avoid the move instruction. +The pass is located in regmove.c. + +

  • Optimize mode switching + +

    This pass looks for instructions that require the processor to be in a +specific “mode” and minimizes the number of mode changes required to +satisfy all users. What these modes are, and what they apply to are +completely target-specific. +The source is located in mode-switching.c. + +

  • Modulo scheduling + +

    This pass looks at innermost loops and reorders their instructions +by overlapping different iterations. Modulo scheduling is performed +immediately before instruction scheduling. +The pass is located in (modulo-sched.c). + +

  • Instruction scheduling + +

    This pass looks for instructions whose output will not be available by +the time that it is used in subsequent instructions. Memory loads and +floating point instructions often have this behavior on RISC machines. +It re-orders instructions within a basic block to try to separate the +definition and use of items that otherwise would cause pipeline +stalls. This pass is performed twice, before and after register +allocation. The pass is located in haifa-sched.c, +sched-deps.c, sched-ebb.c, sched-rgn.c and +sched-vis.c. + +

  • Register allocation + +

    These passes make sure that all occurrences of pseudo registers are +eliminated, either by allocating them to a hard register, replacing +them by an equivalent expression (e.g. a constant) or by placing +them on the stack. This is done in several subpasses: + +

      +
    • Register class preferencing. The RTL code is scanned to find out +which register class is best for each pseudo register. The source +file is regclass.c. + +
    • Local register allocation. This pass allocates hard registers to +pseudo registers that are used only within one basic block. Because +the basic block is linear, it can use fast and powerful techniques to +do a decent job. The source is located in local-alloc.c. + +
    • Global register allocation. This pass allocates hard registers for +the remaining pseudo registers (those whose life spans are not +contained in one basic block). The pass is located in global.c. + +

    • Reloading. This pass renumbers pseudo registers with the hardware +registers numbers they were allocated. Pseudo registers that did not +get hard registers are replaced with stack slots. Then it finds +instructions that are invalid because a value has failed to end up in +a register, or has ended up in a register of the wrong kind. It fixes +up these instructions by reloading the problematical values +temporarily into registers. Additional instructions are generated to +do the copying. + +

      The reload pass also optionally eliminates the frame pointer and inserts +instructions to save and restore call-clobbered registers around calls. + +

      Source files are reload.c and reload1.c, plus the header +reload.h used for communication between them. +

    + +
  • Basic block reordering + +

    This pass implements profile guided code positioning. If profile +information is not available, various types of static analysis are +performed to make the predictions normally coming from the profile +feedback (IE execution frequency, branch probability, etc). It is +implemented in the file bb-reorder.c, and the various +prediction routines are in predict.c. + +

  • Variable tracking + +

    This pass computes where the variables are stored at each +position in code and generates notes describing the variable locations +to RTL code. The location lists are then generated according to these +notes to debug information if the debugging information format supports +location lists. + +

  • Delayed branch scheduling + +

    This optional pass attempts to find instructions that can go into the +delay slots of other instructions, usually jumps and calls. The +source file name is reorg.c. + +

  • Branch shortening + +

    On many RISC machines, branch instructions have a limited range. +Thus, longer sequences of instructions must be used for long branches. +In this pass, the compiler figures out what how far each instruction +will be from each other instruction, and therefore whether the usual +instructions, or the longer sequences, must be used for each branch. + +

  • Register-to-stack conversion + +

    Conversion from usage of some hard registers to usage of a register +stack may be done at this point. Currently, this is supported only +for the floating-point registers of the Intel 80387 coprocessor. The +source file name is reg-stack.c. + +

  • Final + +

    This pass outputs the assembler code for the function. The source files +are final.c plus insn-output.c; the latter is generated +automatically from the machine description by the tool genoutput. +The header file conditions.h is used for communication between +these files. If mudflap is enabled, the queue of deferred declarations +and any addressed constants (e.g., string literals) is processed by +mudflap_finish_file into a synthetic constructor function +containing calls into the mudflap runtime. + +

  • Debugging information output + +

    This is run after final because it must output the stack slot offsets +for pseudo registers that did not get hard registers. Source files +are dbxout.c for DBX symbol table format, sdbout.c for +SDB symbol table format, dwarfout.c for DWARF symbol table +format, files dwarf2out.c and dwarf2asm.c for DWARF2 +symbol table format, and vmsdbgout.c for VMS debug symbol table +format. + +

+ + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL.html new file mode 100644 index 0000000..86acc90 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/RTL.html @@ -0,0 +1,92 @@ + + +RTL - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Trees, +Up: Top +



+
+ +

12 RTL Representation

+ +

+Most of the work of the compiler is done on an intermediate representation +called register transfer language. In this language, the instructions to be +output are described, pretty much one by one, in an algebraic form that +describes what the instruction does. + +

RTL is inspired by Lisp lists. It has both an internal form, made up of +structures that point at other structures, and a textual form that is used +in the machine description and in printed debugging dumps. The textual +form uses nested parentheses to indicate the pointers in the internal form. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Reading-RTL.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Reading-RTL.html new file mode 100644 index 0000000..5ed59ed --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Reading-RTL.html @@ -0,0 +1,83 @@ + + +Reading RTL - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Sharing, +Up: RTL +



+
+ +

12.21 Reading RTL

+ +

To read an RTL object from a file, call read_rtx. It takes one +argument, a stdio stream, and returns a single RTL object. This routine +is defined in read-rtl.c. It is not available in the compiler +itself, only the various programs that generate the compiler back end +from the machine description. + +

People frequently have the idea of using RTL stored as text in a file as +an interface between a language front end and the bulk of GCC. This +idea is not feasible. + +

GCC was designed to use RTL internally only. Correct RTL for a given +program is very dependent on the particular target machine. And the RTL +does not contain all the information about the program. + +

The proper way to interface GCC to a new language front end is with +the “tree” data structure, described in the files tree.h and +tree.def. The documentation for this structure (see Trees) +is incomplete. + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Arguments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Arguments.html new file mode 100644 index 0000000..6bf8d0b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Arguments.html @@ -0,0 +1,371 @@ + + +Register Arguments - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Stack Arguments, +Up: Stack and Calling +



+
+ +

15.10.7 Passing Arguments in Registers

+ +

+This section describes the macros which let you control how various +types of arguments are passed in registers or how they are arranged in +the stack. + +

+— Macro: FUNCTION_ARG (cum, mode, type, named)
+

A C expression that controls whether a function argument is passed +in a register, and which register. + +

The arguments are cum, which summarizes all the previous +arguments; mode, the machine mode of the argument; type, +the data type of the argument as a tree node or 0 if that is not known +(which happens for C support library functions); and named, +which is 1 for an ordinary argument and 0 for nameless arguments that +correspond to ... in the called function's prototype. +type can be an incomplete type if a syntax error has previously +occurred. + +

The value of the expression is usually either a reg RTX for the +hard register in which to pass the argument, or zero to pass the +argument on the stack. + +

For machines like the VAX and 68000, where normally all arguments are +pushed, zero suffices as a definition. + +

The value of the expression can also be a parallel RTX. This is +used when an argument is passed in multiple locations. The mode of the +parallel should be the mode of the entire argument. The +parallel holds any number of expr_list pairs; each one +describes where part of the argument is passed. In each +expr_list the first operand must be a reg RTX for the hard +register in which to pass this part of the argument, and the mode of the +register RTX indicates how large this part of the argument is. The +second operand of the expr_list is a const_int which gives +the offset in bytes into the entire argument of where this part starts. +As a special exception the first expr_list in the parallel +RTX may have a first operand of zero. This indicates that the entire +argument is also stored on the stack. + +

The last time this macro is called, it is called with MODE == +VOIDmode, and its result is passed to the call or call_value +pattern as operands 2 and 3 respectively. + +

The usual way to make the ISO library stdarg.h work on a machine +where some arguments are usually passed in registers, is to cause +nameless arguments to be passed on the stack instead. This is done +by making FUNCTION_ARG return 0 whenever named is 0. + +

You may use the hook targetm.calls.must_pass_in_stack +in the definition of this macro to determine if this argument is of a +type that must be passed in the stack. If REG_PARM_STACK_SPACE +is not defined and FUNCTION_ARG returns nonzero for such an +argument, the compiler will abort. If REG_PARM_STACK_SPACE is +defined, the argument will be computed in the stack and then loaded into +a register. +

+ +
+— Target Hook: bool TARGET_MUST_PASS_IN_STACK (enum machine_mode mode, tree type)
+

This target hook should return true if we should not pass type +solely in registers. The file expr.h defines a +definition that is usually appropriate, refer to expr.h for additional +documentation. +

+ +
+— Macro: FUNCTION_INCOMING_ARG (cum, mode, type, named)
+

Define this macro if the target machine has “register windows”, so +that the register in which a function sees an arguments is not +necessarily the same as the one in which the caller passed the +argument. + +

For such machines, FUNCTION_ARG computes the register in which +the caller passes the value, and FUNCTION_INCOMING_ARG should +be defined in a similar fashion to tell the function being called +where the arguments will arrive. + +

If FUNCTION_INCOMING_ARG is not defined, FUNCTION_ARG +serves both purposes. +

+ +
+— Target Hook: int TARGET_ARG_PARTIAL_BYTES (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, bool named)
+

This target hook returns the number of bytes at the beginning of an +argument that must be put in registers. The value must be zero for +arguments that are passed entirely in registers or that are entirely +pushed on the stack. + +

On some machines, certain arguments must be passed partially in +registers and partially in memory. On these machines, typically the +first few words of arguments are passed in registers, and the rest +on the stack. If a multi-word argument (a double or a +structure) crosses that boundary, its first few words must be passed +in registers and the rest must be pushed. This macro tells the +compiler when this occurs, and how many bytes should go in registers. + +

FUNCTION_ARG for these arguments should return the first +register to be used by the caller for this argument; likewise +FUNCTION_INCOMING_ARG, for the called function. +

+ +
+— Target Hook: bool TARGET_PASS_BY_REFERENCE (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, bool named)
+

This target hook should return true if an argument at the +position indicated by cum should be passed by reference. This +predicate is queried after target independent reasons for being +passed by reference, such as TREE_ADDRESSABLE (type). + +

If the hook returns true, a copy of that argument is made in memory and a +pointer to the argument is passed instead of the argument itself. +The pointer is passed in whatever way is appropriate for passing a pointer +to that type. +

+ +
+— Target Hook: bool TARGET_CALLEE_COPIES (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, bool named)
+

The function argument described by the parameters to this hook is +known to be passed by reference. The hook should return true if the +function argument should be copied by the callee instead of copied +by the caller. + +

For any argument for which the hook returns true, if it can be +determined that the argument is not modified, then a copy need +not be generated. + +

The default version of this hook always returns false. +

+ +
+— Macro: CUMULATIVE_ARGS
+

A C type for declaring a variable that is used as the first argument of +FUNCTION_ARG and other related values. For some target machines, +the type int suffices and can hold the number of bytes of +argument so far. + +

There is no need to record in CUMULATIVE_ARGS anything about the +arguments that have been passed on the stack. The compiler has other +variables to keep track of that. For target machines on which all +arguments are passed on the stack, there is no need to store anything in +CUMULATIVE_ARGS; however, the data structure must exist and +should not be empty, so use int. +

+ +
+— Macro: INIT_CUMULATIVE_ARGS (cum, fntype, libname, fndecl, n_named_args)
+

A C statement (sans semicolon) for initializing the variable +cum for the state at the beginning of the argument list. The +variable has type CUMULATIVE_ARGS. The value of fntype +is the tree node for the data type of the function which will receive +the args, or 0 if the args are to a compiler support library function. +For direct calls that are not libcalls, fndecl contain the +declaration node of the function. fndecl is also set when +INIT_CUMULATIVE_ARGS is used to find arguments for the function +being compiled. n_named_args is set to the number of named +arguments, including a structure return address if it is passed as a +parameter, when making a call. When processing incoming arguments, +n_named_args is set to −1. + +

When processing a call to a compiler support library function, +libname identifies which one. It is a symbol_ref rtx which +contains the name of the function, as a string. libname is 0 when +an ordinary C function call is being processed. Thus, each time this +macro is called, either libname or fntype is nonzero, but +never both of them at once. +

+ +
+— Macro: INIT_CUMULATIVE_LIBCALL_ARGS (cum, mode, libname)
+

Like INIT_CUMULATIVE_ARGS but only used for outgoing libcalls, +it gets a MODE argument instead of fntype, that would be +NULL. indirect would always be zero, too. If this macro +is not defined, INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, +0) is used instead. +

+ +
+— Macro: INIT_CUMULATIVE_INCOMING_ARGS (cum, fntype, libname)
+

Like INIT_CUMULATIVE_ARGS but overrides it for the purposes of +finding the arguments for the function being compiled. If this macro is +undefined, INIT_CUMULATIVE_ARGS is used instead. + +

The value passed for libname is always 0, since library routines +with special calling conventions are never compiled with GCC. The +argument libname exists for symmetry with +INIT_CUMULATIVE_ARGS. + + +

+ +
+— Macro: FUNCTION_ARG_ADVANCE (cum, mode, type, named)
+

A C statement (sans semicolon) to update the summarizer variable +cum to advance past an argument in the argument list. The +values mode, type and named describe that argument. +Once this is done, the variable cum is suitable for analyzing +the following argument with FUNCTION_ARG, etc. + +

This macro need not do anything if the argument in question was passed +on the stack. The compiler knows how to track the amount of stack space +used for arguments without any special help. +

+ +
+— Macro: FUNCTION_ARG_PADDING (mode, type)
+

If defined, a C expression which determines whether, and in which direction, +to pad out an argument with extra space. The value should be of type +enum direction: either upward to pad above the argument, +downward to pad below, or none to inhibit padding. + +

The amount of padding is always just enough to reach the next +multiple of FUNCTION_ARG_BOUNDARY; this macro does not control +it. + +

This macro has a default definition which is right for most systems. +For little-endian machines, the default is to pad upward. For +big-endian machines, the default is to pad downward for an argument of +constant size shorter than an int, and upward otherwise. +

+ +
+— Macro: PAD_VARARGS_DOWN
+

If defined, a C expression which determines whether the default +implementation of va_arg will attempt to pad down before reading the +next argument, if that argument is smaller than its aligned space as +controlled by PARM_BOUNDARY. If this macro is not defined, all such +arguments are padded down if BYTES_BIG_ENDIAN is true. +

+ +
+— Macro: BLOCK_REG_PADDING (mode, type, first)
+

Specify padding for the last element of a block move between registers and +memory. first is nonzero if this is the only element. Defining this +macro allows better control of register function parameters on big-endian +machines, without using PARALLEL rtl. In particular, +MUST_PASS_IN_STACK need not test padding and mode of types in +registers, as there is no longer a "wrong" part of a register; For example, +a three byte aggregate may be passed in the high part of a register if so +required. +

+ +
+— Macro: FUNCTION_ARG_BOUNDARY (mode, type)
+

If defined, a C expression that gives the alignment boundary, in bits, +of an argument with the specified mode and type. If it is not defined, +PARM_BOUNDARY is used for all arguments. +

+ +
+— Macro: FUNCTION_ARG_REGNO_P (regno)
+

A C expression that is nonzero if regno is the number of a hard +register in which function arguments are sometimes passed. This does +not include implicit arguments such as the static chain and +the structure-value address. On many machines, no registers can be +used for this purpose since all function arguments are pushed on the +stack. +

+ +
+— Target Hook: bool TARGET_SPLIT_COMPLEX_ARG (tree type)
+

This hook should return true if parameter of type type are passed +as two scalar parameters. By default, GCC will attempt to pack complex +arguments into the target's word size. Some ABIs require complex arguments +to be split and treated as their individual components. For example, on +AIX64, complex floats should be passed in a pair of floating point +registers, even though a complex float would fit in one 64-bit floating +point register. + +

The default value of this hook is NULL, which is treated as always +false. +

+ +
+— Target Hook: tree TARGET_BUILD_BUILTIN_VA_LIST (void)
+

This hook returns a type node for va_list for the target. +The default version of the hook returns void*. +

+ +
+— Target Hook: tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree valist, tree type, tree *pre_p, tree *post_p)
+

This hook performs target-specific gimplification of +VA_ARG_EXPR. The first two parameters correspond to the +arguments to va_arg; the latter two are as in +gimplify.c:gimplify_expr. +

+ +
+— Target Hook: bool TARGET_VALID_POINTER_MODE (enum machine_mode mode)
+

Define this to return nonzero if the port can handle pointers +with machine mode mode. The default version of this +hook returns true for both ptr_mode and Pmode. +

+ +
+— Target Hook: bool TARGET_SCALAR_MODE_SUPPORTED_P (enum machine_mode mode)
+

Define this to return nonzero if the port is prepared to handle +insns involving scalar mode mode. For a scalar mode to be +considered supported, all the basic arithmetic and comparisons +must work. + +

The default version of this hook returns true for any mode +required to handle the basic C types (as defined by the port). +Included here are the double-word arithmetic supported by the +code in optabs.c. +

+ +
+— Target Hook: bool TARGET_VECTOR_MODE_SUPPORTED_P (enum machine_mode mode)
+

Define this to return nonzero if the port is prepared to handle +insns involving vector mode mode. At the very least, it +must have move patterns for this mode. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Basics.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Basics.html new file mode 100644 index 0000000..8847ca5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Basics.html @@ -0,0 +1,187 @@ + + +Register Basics - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Registers +



+
+ +

15.7.1 Basic Characteristics of Registers

+ + +

Registers have various characteristics. + +

+— Macro: FIRST_PSEUDO_REGISTER
+

Number of hardware registers known to the compiler. They receive +numbers 0 through FIRST_PSEUDO_REGISTER-1; thus, the first +pseudo register's number really is assigned the number +FIRST_PSEUDO_REGISTER. +

+ +
+— Macro: FIXED_REGISTERS
+

An initializer that says which registers are used for fixed purposes +all throughout the compiled code and are therefore not available for +general allocation. These would include the stack pointer, the frame +pointer (except on machines where that can be used as a general +register when no frame pointer is needed), the program counter on +machines where that is considered one of the addressable registers, +and any other numbered register with a standard use. + +

This information is expressed as a sequence of numbers, separated by +commas and surrounded by braces. The nth number is 1 if +register n is fixed, 0 otherwise. + +

The table initialized from this macro, and the table initialized by +the following one, may be overridden at run time either automatically, +by the actions of the macro CONDITIONAL_REGISTER_USAGE, or by +the user with the command options -ffixed-reg, +-fcall-used-reg and -fcall-saved-reg. +

+ +
+— Macro: CALL_USED_REGISTERS
+

Like FIXED_REGISTERS but has 1 for each register that is +clobbered (in general) by function calls as well as for fixed +registers. This macro therefore identifies the registers that are not +available for general allocation of values that must live across +function calls. + +

If a register has 0 in CALL_USED_REGISTERS, the compiler +automatically saves it on function entry and restores it on function +exit, if the register is used within the function. +

+ +
+— Macro: CALL_REALLY_USED_REGISTERS
+

Like CALL_USED_REGISTERS except this macro doesn't require +that the entire set of FIXED_REGISTERS be included. +(CALL_USED_REGISTERS must be a superset of FIXED_REGISTERS). +This macro is optional. If not specified, it defaults to the value +of CALL_USED_REGISTERS. +

+ +
+— Macro: HARD_REGNO_CALL_PART_CLOBBERED (regno, mode)
+

A C expression that is nonzero if it is not permissible to store a +value of mode mode in hard register number regno across a +call without some part of it being clobbered. For most machines this +macro need not be defined. It is only required for machines that do not +preserve the entire contents of a register across a call. +

+ +

+ +

+— Macro: CONDITIONAL_REGISTER_USAGE
+

Zero or more C statements that may conditionally modify five variables +fixed_regs, call_used_regs, global_regs, +reg_names, and reg_class_contents, to take into account +any dependence of these register sets on target flags. The first three +of these are of type char [] (interpreted as Boolean vectors). +global_regs is a const char *[], and +reg_class_contents is a HARD_REG_SET. Before the macro is +called, fixed_regs, call_used_regs, +reg_class_contents, and reg_names have been initialized +from FIXED_REGISTERS, CALL_USED_REGISTERS, +REG_CLASS_CONTENTS, and REGISTER_NAMES, respectively. +global_regs has been cleared, and any -ffixed-reg, +-fcall-used-reg and -fcall-saved-reg +command options have been applied. + +

You need not define this macro if it has no work to do. + +

If the usage of an entire class of registers depends on the target +flags, you may indicate this to GCC by using this macro to modify +fixed_regs and call_used_regs to 1 for each of the +registers in the classes which should not be used by GCC. Also define +the macro REG_CLASS_FROM_LETTER / REG_CLASS_FROM_CONSTRAINT +to return NO_REGS if it +is called with a letter for a class that shouldn't be used. + +

(However, if this class is not included in GENERAL_REGS and all +of the insn patterns whose constraints permit this class are +controlled by target switches, then GCC will automatically avoid using +these registers when the target switches are opposed to them.) +

+ +
+— Macro: INCOMING_REGNO (out)
+

Define this macro if the target machine has register windows. This C +expression returns the register number as seen by the called function +corresponding to the register number out as seen by the calling +function. Return out if register number out is not an +outbound register. +

+ +
+— Macro: OUTGOING_REGNO (in)
+

Define this macro if the target machine has register windows. This C +expression returns the register number as seen by the calling function +corresponding to the register number in as seen by the called +function. Return in if register number in is not an inbound +register. +

+ +
+— Macro: LOCAL_REGNO (regno)
+

Define this macro if the target machine has register windows. This C +expression returns true if the register is call-saved but is in the +register window. Unlike most call-saved registers, such registers +need not be explicitly restored on function exit or during non-local +gotos. +

+ +
+— Macro: PC_REGNUM
+

If the program counter has a register number, define this as that +register number. Otherwise, do not define it. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Classes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Classes.html new file mode 100644 index 0000000..ad75161 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Register-Classes.html @@ -0,0 +1,599 @@ + + +Register Classes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Registers, +Up: Target Macros +



+
+ +

15.8 Register Classes

+ +

+On many machines, the numbered registers are not all equivalent. +For example, certain registers may not be allowed for indexed addressing; +certain registers may not be allowed in some instructions. These machine +restrictions are described to the compiler using register classes. + +

You define a number of register classes, giving each one a name and saying +which of the registers belong to it. Then you can specify register classes +that are allowed as operands to particular instruction patterns. + +

In general, each register will belong to several classes. In fact, one +class must be named ALL_REGS and contain all the registers. Another +class must be named NO_REGS and contain no registers. Often the +union of two classes will be another class; however, this is not required. + +

One of the classes must be named GENERAL_REGS. There is nothing +terribly special about the name, but the operand constraint letters +r and g specify this class. If GENERAL_REGS is +the same as ALL_REGS, just define it as a macro which expands +to ALL_REGS. + +

Order the classes so that if class x is contained in class y +then x has a lower class number than y. + +

The way classes other than GENERAL_REGS are specified in operand +constraints is through machine-dependent operand constraint letters. +You can define such letters to correspond to various classes, then use +them in operand constraints. + +

You should define a class for the union of two classes whenever some +instruction allows both classes. For example, if an instruction allows +either a floating point (coprocessor) register or a general register for a +certain operand, you should define a class FLOAT_OR_GENERAL_REGS +which includes both of them. Otherwise you will get suboptimal code. + +

You must also specify certain redundant information about the register +classes: for each class, which classes contain it and which ones are +contained in it; for each pair of classes, the largest class contained +in their union. + +

When a value occupying several consecutive registers is expected in a +certain class, all the registers used must belong to that class. +Therefore, register classes cannot be used to enforce a requirement for +a register pair to start with an even-numbered register. The way to +specify this requirement is with HARD_REGNO_MODE_OK. + +

Register classes used for input-operands of bitwise-and or shift +instructions have a special requirement: each such class must have, for +each fixed-point machine mode, a subclass whose registers can transfer that +mode to or from memory. For example, on some machines, the operations for +single-byte values (QImode) are limited to certain registers. When +this is so, each register class that is used in a bitwise-and or shift +instruction must have a subclass consisting of registers from which +single-byte values can be loaded or stored. This is so that +PREFERRED_RELOAD_CLASS can always have a possible value to return. + +

+— Data type: enum reg_class
+

An enumerated type that must be defined with all the register class names +as enumerated values. NO_REGS must be first. ALL_REGS +must be the last register class, followed by one more enumerated value, +LIM_REG_CLASSES, which is not a register class but rather +tells how many classes there are. + +

Each register class has a number, which is the value of casting +the class name to type int. The number serves as an index +in many of the tables described below. +

+ +
+— Macro: N_REG_CLASSES
+

The number of distinct register classes, defined as follows: + +

          #define N_REG_CLASSES (int) LIM_REG_CLASSES
+     
+
+ +
+— Macro: REG_CLASS_NAMES
+

An initializer containing the names of the register classes as C string +constants. These names are used in writing some of the debugging dumps. +

+ +
+— Macro: REG_CLASS_CONTENTS
+

An initializer containing the contents of the register classes, as integers +which are bit masks. The nth integer specifies the contents of class +n. The way the integer mask is interpreted is that +register r is in the class if mask & (1 << r) is 1. + +

When the machine has more than 32 registers, an integer does not suffice. +Then the integers are replaced by sub-initializers, braced groupings containing +several integers. Each sub-initializer must be suitable as an initializer +for the type HARD_REG_SET which is defined in hard-reg-set.h. +In this situation, the first integer in each sub-initializer corresponds to +registers 0 through 31, the second integer to registers 32 through 63, and +so on. +

+ +
+— Macro: REGNO_REG_CLASS (regno)
+

A C expression whose value is a register class containing hard register +regno. In general there is more than one such class; choose a class +which is minimal, meaning that no smaller class also contains the +register. +

+ +
+— Macro: BASE_REG_CLASS
+

A macro whose definition is the name of the class to which a valid +base register must belong. A base register is one used in an address +which is the register value plus a displacement. +

+ +
+— Macro: MODE_BASE_REG_CLASS (mode)
+

This is a variation of the BASE_REG_CLASS macro which allows +the selection of a base register in a mode dependent manner. If +mode is VOIDmode then it should return the same value as +BASE_REG_CLASS. +

+ +
+— Macro: MODE_BASE_REG_REG_CLASS (mode)
+

A C expression whose value is the register class to which a valid +base register must belong in order to be used in a base plus index +register address. You should define this macro if base plus index +addresses have different requirements than other base register uses. +

+ +
+— Macro: MODE_CODE_BASE_REG_CLASS (mode, outer_code, index_code)
+

A C expression whose value is the register class to which a valid +base register must belong. outer_code and index_code define the +context in which the base register occurs. outer_code is the code of +the immediately enclosing expression (MEM for the top level of an +address, ADDRESS for something that occurs in an +address_operand). index_code is the code of the corresponding +index expression if outer_code is PLUS; SCRATCH otherwise. +

+ +
+— Macro: INDEX_REG_CLASS
+

A macro whose definition is the name of the class to which a valid +index register must belong. An index register is one used in an +address where its value is either multiplied by a scale factor or +added to another register (as well as added to a displacement). +

+ +
+— Macro: REGNO_OK_FOR_BASE_P (num)
+

A C expression which is nonzero if register number num is +suitable for use as a base register in operand addresses. It may be +either a suitable hard register or a pseudo register that has been +allocated such a hard register. +

+ +
+— Macro: REGNO_MODE_OK_FOR_BASE_P (num, mode)
+

A C expression that is just like REGNO_OK_FOR_BASE_P, except that +that expression may examine the mode of the memory reference in +mode. You should define this macro if the mode of the memory +reference affects whether a register may be used as a base register. If +you define this macro, the compiler will use it instead of +REGNO_OK_FOR_BASE_P. The mode may be VOIDmode for +addresses that appear outside a MEM, i.e., as an +address_operand. + +

+ +
+— Macro: REGNO_MODE_OK_FOR_REG_BASE_P (num, mode)
+

A C expression which is nonzero if register number num is suitable for +use as a base register in base plus index operand addresses, accessing +memory in mode mode. It may be either a suitable hard register or a +pseudo register that has been allocated such a hard register. You should +define this macro if base plus index addresses have different requirements +than other base register uses. + +

Use of this macro is deprecated; please use the more general +REGNO_MODE_CODE_OK_FOR_BASE_P. +

+ +
+— Macro: REGNO_MODE_CODE_OK_FOR_BASE_P (num, mode, outer_code, index_code)
+

A C expression that is just like REGNO_MODE_OK_FOR_BASE_P, except +that that expression may examine the context in which the register +appears in the memory reference. outer_code is the code of the +immediately enclosing expression (MEM if at the top level of the +address, ADDRESS for something that occurs in an +address_operand). index_code is the code of the +corresponding index expression if outer_code is PLUS; +SCRATCH otherwise. The mode may be VOIDmode for addresses +that appear outside a MEM, i.e., as an address_operand. +

+ +
+— Macro: REGNO_OK_FOR_INDEX_P (num)
+

A C expression which is nonzero if register number num is +suitable for use as an index register in operand addresses. It may be +either a suitable hard register or a pseudo register that has been +allocated such a hard register. + +

The difference between an index register and a base register is that +the index register may be scaled. If an address involves the sum of +two registers, neither one of them scaled, then either one may be +labeled the “base” and the other the “index”; but whichever +labeling is used must fit the machine's constraints of which registers +may serve in each capacity. The compiler will try both labelings, +looking for one that is valid, and will reload one or both registers +only if neither labeling works. +

+ +
+— Macro: PREFERRED_RELOAD_CLASS (x, class)
+

A C expression that places additional restrictions on the register class +to use when it is necessary to copy value x into a register in class +class. The value is a register class; perhaps class, or perhaps +another, smaller class. On many machines, the following definition is +safe: + +

          #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
+     
+

Sometimes returning a more restrictive class makes better code. For +example, on the 68000, when x is an integer constant that is in range +for a moveq instruction, the value of this macro is always +DATA_REGS as long as class includes the data registers. +Requiring a data register guarantees that a moveq will be used. + +

One case where PREFERRED_RELOAD_CLASS must not return +class is if x is a legitimate constant which cannot be +loaded into some register class. By returning NO_REGS you can +force x into a memory location. For example, rs6000 can load +immediate values into general-purpose registers, but does not have an +instruction for loading an immediate value into a floating-point +register, so PREFERRED_RELOAD_CLASS returns NO_REGS when +x is a floating-point constant. If the constant can't be loaded +into any kind of register, code generation will be better if +LEGITIMATE_CONSTANT_P makes the constant illegitimate instead +of using PREFERRED_RELOAD_CLASS. + +

If an insn has pseudos in it after register allocation, reload will go +through the alternatives and call repeatedly PREFERRED_RELOAD_CLASS +to find the best one. Returning NO_REGS, in this case, makes +reload add a ! in front of the constraint: the x86 back-end uses +this feature to discourage usage of 387 registers when math is done in +the SSE registers (and vice versa). +

+ +
+— Macro: PREFERRED_OUTPUT_RELOAD_CLASS (x, class)
+

Like PREFERRED_RELOAD_CLASS, but for output reloads instead of +input reloads. If you don't define this macro, the default is to use +class, unchanged. + +

You can also use PREFERRED_OUTPUT_RELOAD_CLASS to discourage +reload from using some alternatives, like PREFERRED_RELOAD_CLASS. +

+ +
+— Macro: LIMIT_RELOAD_CLASS (mode, class)
+

A C expression that places additional restrictions on the register class +to use when it is necessary to be able to hold a value of mode +mode in a reload register for which class class would +ordinarily be used. + +

Unlike PREFERRED_RELOAD_CLASS, this macro should be used when +there are certain modes that simply can't go in certain reload classes. + +

The value is a register class; perhaps class, or perhaps another, +smaller class. + +

Don't define this macro unless the target machine has limitations which +require the macro to do something nontrivial. +

+ +
+— Target Hook: enum reg_class TARGET_SECONDARY_RELOAD (bool in_p, rtx x, enum reg_class reload_class, enum machine_mode reload_mode, secondary_reload_info *sri)
+

Many machines have some registers that cannot be copied directly to or +from memory or even from other types of registers. An example is the +MQ register, which on most machines, can only be copied to or +from general registers, but not memory. Below, we shall be using the +term 'intermediate register' when a move operation cannot be performed +directly, but has to be done by copying the source into the intermediate +register first, and then copying the intermediate register to the +destination. An intermediate register always has the same mode as +source and destination. Since it holds the actual value being copied, +reload might apply optimizations to re-use an intermediate register +and eliding the copy from the source when it can determine that the +intermediate register still holds the required value. + +

Another kind of secondary reload is required on some machines which +allow copying all registers to and from memory, but require a scratch +register for stores to some memory locations (e.g., those with symbolic +address on the RT, and those with certain symbolic address on the SPARC +when compiling PIC). Scratch registers need not have the same mode +as the value being copied, and usually hold a different value that +that being copied. Special patterns in the md file are needed to +describe how the copy is performed with the help of the scratch register; +these patterns also describe the number, register class(es) and mode(s) +of the scratch register(s). + +

In some cases, both an intermediate and a scratch register are required. + +

For input reloads, this target hook is called with nonzero in_p, +and x is an rtx that needs to be copied to a register of class +reload_class in reload_mode. For output reloads, this target +hook is called with zero in_p, and a register of class reload_class +needs to be copied to rtx x in reload_mode. + +

If copying a register of reload_class from/to x requires +an intermediate register, the hook secondary_reload should +return the register class required for this intermediate register. +If no intermediate register is required, it should return NO_REGS. +If more than one intermediate register is required, describe the one +that is closest in the copy chain to the reload register. + +

If scratch registers are needed, you also have to describe how to +perform the copy from/to the reload register to/from this +closest intermediate register. Or if no intermediate register is +required, but still a scratch register is needed, describe the +copy from/to the reload register to/from the reload operand x. + +

You do this by setting sri->icode to the instruction code of a pattern +in the md file which performs the move. Operands 0 and 1 are the output +and input of this copy, respectively. Operands from operand 2 onward are +for scratch operands. These scratch operands must have a mode, and a +single-register-class + +output constraint. + +

When an intermediate register is used, the secondary_reload +hook will be called again to determine how to copy the intermediate +register to/from the reload operand x, so your hook must also +have code to handle the register class of the intermediate operand. + + + + + + + + + +

x might be a pseudo-register or a subreg of a +pseudo-register, which could either be in a hard register or in memory. +Use true_regnum to find out; it will return −1 if the pseudo is +in memory and the hard register number if it is in a register. + +

Scratch operands in memory (constraint "=m" / "=&m") are +currently not supported. For the time being, you will have to continue +to use SECONDARY_MEMORY_NEEDED for that purpose. + +

copy_cost also uses this target hook to find out how values are +copied. If you want it to include some extra cost for the need to allocate +(a) scratch register(s), set sri->extra_cost to the additional cost. +Or if two dependent moves are supposed to have a lower cost than the sum +of the individual moves due to expected fortuitous scheduling and/or special +forwarding logic, you can set sri->extra_cost to a negative amount. +

+ +
+— Macro: SECONDARY_RELOAD_CLASS (class, mode, x)
+— Macro: SECONDARY_INPUT_RELOAD_CLASS (class, mode, x)
+— Macro: SECONDARY_OUTPUT_RELOAD_CLASS (class, mode, x)
+

These macros are obsolete, new ports should use the target hook +TARGET_SECONDARY_RELOAD instead. + +

These are obsolete macros, replaced by the TARGET_SECONDARY_RELOAD +target hook. Older ports still define these macros to indicate to the +reload phase that it may +need to allocate at least one register for a reload in addition to the +register to contain the data. Specifically, if copying x to a +register class in mode requires an intermediate register, +you were supposed to define SECONDARY_INPUT_RELOAD_CLASS to return the +largest register class all of whose registers can be used as +intermediate registers or scratch registers. + +

If copying a register class in mode to x requires an +intermediate or scratch register, SECONDARY_OUTPUT_RELOAD_CLASS +was supposed to be defined be defined to return the largest register +class required. If the +requirements for input and output reloads were the same, the macro +SECONDARY_RELOAD_CLASS should have been used instead of defining both +macros identically. + +

The values returned by these macros are often GENERAL_REGS. +Return NO_REGS if no spare register is needed; i.e., if x +can be directly copied to or from a register of class in +mode without requiring a scratch register. Do not define this +macro if it would always return NO_REGS. + +

If a scratch register is required (either with or without an +intermediate register), you were supposed to define patterns for +reload_inm or reload_outm, as required +(see Standard Names. These patterns, which were normally +implemented with a define_expand, should be similar to the +movm patterns, except that operand 2 is the scratch +register. + +

These patterns need constraints for the reload register and scratch +register that +contain a single register class. If the original reload register (whose +class is class) can meet the constraint given in the pattern, the +value returned by these macros is used for the class of the scratch +register. Otherwise, two additional reload registers are required. +Their classes are obtained from the constraints in the insn pattern. + +

x might be a pseudo-register or a subreg of a +pseudo-register, which could either be in a hard register or in memory. +Use true_regnum to find out; it will return −1 if the pseudo is +in memory and the hard register number if it is in a register. + +

These macros should not be used in the case where a particular class of +registers can only be copied to memory and not to another class of +registers. In that case, secondary reload registers are not needed and +would not be helpful. Instead, a stack location must be used to perform +the copy and the movm pattern should use memory as an +intermediate storage. This case often occurs between floating-point and +general registers. +

+ +
+— Macro: SECONDARY_MEMORY_NEEDED (class1, class2, m)
+

Certain machines have the property that some registers cannot be copied +to some other registers without using memory. Define this macro on +those machines to be a C expression that is nonzero if objects of mode +m in registers of class1 can only be copied to registers of +class class2 by storing a register of class1 into memory +and loading that memory location into a register of class2. + +

Do not define this macro if its value would always be zero. +

+ +
+— Macro: SECONDARY_MEMORY_NEEDED_RTX (mode)
+

Normally when SECONDARY_MEMORY_NEEDED is defined, the compiler +allocates a stack slot for a memory location needed for register copies. +If this macro is defined, the compiler instead uses the memory location +defined by this macro. + +

Do not define this macro if you do not define +SECONDARY_MEMORY_NEEDED. +

+ +
+— Macro: SECONDARY_MEMORY_NEEDED_MODE (mode)
+

When the compiler needs a secondary memory location to copy between two +registers of mode mode, it normally allocates sufficient memory to +hold a quantity of BITS_PER_WORD bits and performs the store and +load operations in a mode that many bits wide and whose class is the +same as that of mode. + +

This is right thing to do on most machines because it ensures that all +bits of the register are copied and prevents accesses to the registers +in a narrower mode, which some machines prohibit for floating-point +registers. + +

However, this default behavior is not correct on some machines, such as +the DEC Alpha, that store short integers in floating-point registers +differently than in integer registers. On those machines, the default +widening will not work correctly and you must define this macro to +suppress that widening in some cases. See the file alpha.h for +details. + +

Do not define this macro if you do not define +SECONDARY_MEMORY_NEEDED or if widening mode to a mode that +is BITS_PER_WORD bits wide is correct for your machine. +

+ +
+— Macro: SMALL_REGISTER_CLASSES
+

On some machines, it is risky to let hard registers live across arbitrary +insns. Typically, these machines have instructions that require values +to be in specific registers (like an accumulator), and reload will fail +if the required hard register is used for another purpose across such an +insn. + +

Define SMALL_REGISTER_CLASSES to be an expression with a nonzero +value on these machines. When this macro has a nonzero value, the +compiler will try to minimize the lifetime of hard registers. + +

It is always safe to define this macro with a nonzero value, but if you +unnecessarily define it, you will reduce the amount of optimizations +that can be performed in some cases. If you do not define this macro +with a nonzero value when it is required, the compiler will run out of +spill registers and print a fatal error message. For most machines, you +should not define this macro at all. +

+ +
+— Macro: CLASS_LIKELY_SPILLED_P (class)
+

A C expression whose value is nonzero if pseudos that have been assigned +to registers of class class would likely be spilled because +registers of class are needed for spill registers. + +

The default value of this macro returns 1 if class has exactly one +register and zero otherwise. On most machines, this default should be +used. Only define this macro to some other expression if pseudos +allocated by local-alloc.c end up in memory because their hard +registers were needed for spill registers. If this macro returns nonzero +for those classes, those pseudos will only be allocated by +global.c, which knows how to reallocate the pseudo to another +register. If there would not be another register available for +reallocation, you should not change the definition of this macro since +the only effect of such a definition would be to slow down register +allocation. +

+ +
+— Macro: CLASS_MAX_NREGS (class, mode)
+

A C expression for the maximum number of consecutive registers +of class class needed to hold a value of mode mode. + +

This is closely related to the macro HARD_REGNO_NREGS. In fact, +the value of the macro CLASS_MAX_NREGS (class, mode) +should be the maximum value of HARD_REGNO_NREGS (regno, +mode) for all regno values in the class class. + +

This macro helps control the handling of multiple-word values +in the reload pass. +

+ +
+— Macro: CANNOT_CHANGE_MODE_CLASS (from, to, class)
+

If defined, a C expression that returns nonzero for a class for which +a change from mode from to mode to is invalid. + +

For the example, loading 32-bit integer or floating-point objects into +floating-point registers on the Alpha extends them to 64 bits. +Therefore loading a 64-bit object and then storing it as a 32-bit object +does not store the low-order 32 bits, as would be the case for a normal +register. Therefore, alpha.h defines CANNOT_CHANGE_MODE_CLASS +as below: + +

          #define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
+            (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
+             ? reg_classes_intersect_p (FLOAT_REGS, (CLASS)) : 0)
+     
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Registers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Registers.html new file mode 100644 index 0000000..51e3de8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Registers.html @@ -0,0 +1,76 @@ + + +Registers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Type Layout, +Up: Target Macros +



+
+ +

15.7 Register Usage

+ +

+This section explains how to describe what registers the target machine +has, and how (in general) they can be used. + +

The description of which registers a specific instruction can use is +done with register classes; see Register Classes. For information +on using registers to access a stack frame, see Frame Registers. +For passing values in registers, see Register Arguments. +For returning values in registers, see Scalar Return. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Regs-and-Memory.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Regs-and-Memory.html new file mode 100644 index 0000000..36e575b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Regs-and-Memory.html @@ -0,0 +1,316 @@ + + +Regs and Memory - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Constants, +Up: RTL +



+
+ +

12.8 Registers and Memory

+ +

+Here are the RTL expression types for describing access to machine +registers and to main memory. + + + + + +

(reg:m n)
For small values of the integer n (those that are less than +FIRST_PSEUDO_REGISTER), this stands for a reference to machine +register number n: a hard register. For larger values of +n, it stands for a temporary value or pseudo register. +The compiler's strategy is to generate code assuming an unlimited +number of such pseudo registers, and later convert them into hard +registers or into memory references. + +

m is the machine mode of the reference. It is necessary because +machines can generally refer to each register in more than one mode. +For example, a register may contain a full word but there may be +instructions to refer to it as a half word or as a single byte, as +well as instructions to refer to it as a floating point number of +various precisions. + +

Even for a register that the machine can access in only one mode, +the mode must always be specified. + +

The symbol FIRST_PSEUDO_REGISTER is defined by the machine +description, since the number of hard registers on the machine is an +invariant characteristic of the machine. Note, however, that not +all of the machine registers must be general registers. All the +machine registers that can be used for storage of data are given +hard register numbers, even those that can be used only in certain +instructions or can hold only certain types of data. + +

A hard register may be accessed in various modes throughout one +function, but each pseudo register is given a natural mode +and is accessed only in that mode. When it is necessary to describe +an access to a pseudo register using a nonnatural mode, a subreg +expression is used. + +

A reg expression with a machine mode that specifies more than +one word of data may actually stand for several consecutive registers. +If in addition the register number specifies a hardware register, then +it actually represents several consecutive hardware registers starting +with the specified one. + +

Each pseudo register number used in a function's RTL code is +represented by a unique reg expression. + +

Some pseudo register numbers, those within the range of +FIRST_VIRTUAL_REGISTER to LAST_VIRTUAL_REGISTER only +appear during the RTL generation phase and are eliminated before the +optimization phases. These represent locations in the stack frame that +cannot be determined until RTL generation for the function has been +completed. The following virtual register numbers are defined: + + + +

VIRTUAL_INCOMING_ARGS_REGNUM
This points to the first word of the incoming arguments passed on the +stack. Normally these arguments are placed there by the caller, but the +callee may have pushed some arguments that were previously passed in +registers. + +

When RTL generation is complete, this virtual register is replaced +by the sum of the register given by ARG_POINTER_REGNUM and the +value of FIRST_PARM_OFFSET. + +


VIRTUAL_STACK_VARS_REGNUM
If FRAME_GROWS_DOWNWARD is defined to a nonzero value, this points +to immediately above the first variable on the stack. Otherwise, it points +to the first variable on the stack. + +

VIRTUAL_STACK_VARS_REGNUM is replaced with the sum of the +register given by FRAME_POINTER_REGNUM and the value +STARTING_FRAME_OFFSET. + +


VIRTUAL_STACK_DYNAMIC_REGNUM
This points to the location of dynamically allocated memory on the stack +immediately after the stack pointer has been adjusted by the amount of +memory desired. + +

This virtual register is replaced by the sum of the register given by +STACK_POINTER_REGNUM and the value STACK_DYNAMIC_OFFSET. + +


VIRTUAL_OUTGOING_ARGS_REGNUM
This points to the location in the stack at which outgoing arguments +should be written when the stack is pre-pushed (arguments pushed using +push insns should always use STACK_POINTER_REGNUM). + +

This virtual register is replaced by the sum of the register given by +STACK_POINTER_REGNUM and the value STACK_POINTER_OFFSET. +

+ +


(subreg:m reg bytenum)
subreg expressions are used to refer to a register in a machine +mode other than its natural one, or to refer to one register of +a multi-part reg that actually refers to several registers. + +

Each pseudo-register has a natural mode. If it is necessary to +operate on it in a different mode—for example, to perform a fullword +move instruction on a pseudo-register that contains a single +byte—the pseudo-register must be enclosed in a subreg. In +such a case, bytenum is zero. + +

Usually m is at least as narrow as the mode of reg, in which +case it is restricting consideration to only the bits of reg that +are in m. + +

Sometimes m is wider than the mode of reg. These +subreg expressions are often called paradoxical. They are +used in cases where we want to refer to an object in a wider mode but do +not care what value the additional bits have. The reload pass ensures +that paradoxical references are only made to hard registers. + +

The other use of subreg is to extract the individual registers of +a multi-register value. Machine modes such as DImode and +TImode can indicate values longer than a word, values which +usually require two or more consecutive registers. To access one of the +registers, use a subreg with mode SImode and a +bytenum offset that says which register. + +

Storing in a non-paradoxical subreg has undefined results for +bits belonging to the same word as the subreg. This laxity makes +it easier to generate efficient code for such instructions. To +represent an instruction that preserves all the bits outside of those in +the subreg, use strict_low_part around the subreg. + +

The compilation parameter WORDS_BIG_ENDIAN, if set to 1, says +that byte number zero is part of the most significant word; otherwise, +it is part of the least significant word. + +

The compilation parameter BYTES_BIG_ENDIAN, if set to 1, says +that byte number zero is the most significant byte within a word; +otherwise, it is the least significant byte within a word. + +

On a few targets, FLOAT_WORDS_BIG_ENDIAN disagrees with +WORDS_BIG_ENDIAN. +However, most parts of the compiler treat floating point values as if +they had the same endianness as integer values. This works because +they handle them solely as a collection of integer values, with no +particular numerical value. Only real.c and the runtime libraries +care about FLOAT_WORDS_BIG_ENDIAN. + +

Between the combiner pass and the reload pass, it is possible to have a +paradoxical subreg which contains a mem instead of a +reg as its first operand. After the reload pass, it is also +possible to have a non-paradoxical subreg which contains a +mem; this usually occurs when the mem is a stack slot +which replaced a pseudo register. + +

Note that it is not valid to access a DFmode value in SFmode +using a subreg. On some machines the most significant part of a +DFmode value does not have the same format as a single-precision +floating value. + +

It is also not valid to access a single word of a multi-word value in a +hard register when less registers can hold the value than would be +expected from its size. For example, some 32-bit machines have +floating-point registers that can hold an entire DFmode value. +If register 10 were such a register (subreg:SI (reg:DF 10) 4) +would be invalid because there is no way to convert that reference to +a single machine register. The reload pass prevents subreg +expressions such as these from being formed. + +

The first operand of a subreg expression is customarily accessed +with the SUBREG_REG macro and the second operand is customarily +accessed with the SUBREG_BYTE macro. + +


(scratch:m)
This represents a scratch register that will be required for the +execution of a single instruction and not used subsequently. It is +converted into a reg by either the local register allocator or +the reload pass. + +

scratch is usually present inside a clobber operation +(see Side Effects). + +


(cc0)
This refers to the machine's condition code register. It has no +operands and may not have a machine mode. There are two ways to use it: + +
    +
  • To stand for a complete set of condition code flags. This is best on +most machines, where each comparison sets the entire series of flags. + +

    With this technique, (cc0) may be validly used in only two +contexts: as the destination of an assignment (in test and compare +instructions) and in comparison operators comparing against zero +(const_int with value zero; that is to say, const0_rtx). + +

  • To stand for a single flag that is the result of a single condition. +This is useful on machines that have only a single flag bit, and in +which comparison instructions must specify the condition to test. + +

    With this technique, (cc0) may be validly used in only two +contexts: as the destination of an assignment (in test and compare +instructions) where the source is a comparison operator, and as the +first operand of if_then_else (in a conditional branch). +

+ +

There is only one expression object of code cc0; it is the +value of the variable cc0_rtx. Any attempt to create an +expression of code cc0 will return cc0_rtx. + +

Instructions can set the condition code implicitly. On many machines, +nearly all instructions set the condition code based on the value that +they compute or store. It is not necessary to record these actions +explicitly in the RTL because the machine description includes a +prescription for recognizing the instructions that do so (by means of +the macro NOTICE_UPDATE_CC). See Condition Code. Only +instructions whose sole purpose is to set the condition code, and +instructions that use the condition code, need mention (cc0). + +

On some machines, the condition code register is given a register number +and a reg is used instead of (cc0). This is usually the +preferable approach if only a small subset of instructions modify the +condition code. Other machines store condition codes in general +registers; in such cases a pseudo register should be used. + +

Some machines, such as the SPARC and RS/6000, have two sets of +arithmetic instructions, one that sets and one that does not set the +condition code. This is best handled by normally generating the +instruction that does not set the condition code, and making a pattern +that both performs the arithmetic and sets the condition code register +(which would not be (cc0) in this case). For examples, search +for addcc and andcc in sparc.md. + +


(pc)
This represents the machine's program counter. It has no operands and +may not have a machine mode. (pc) may be validly used only in +certain specific contexts in jump instructions. + +

There is only one expression object of code pc; it is the value +of the variable pc_rtx. Any attempt to create an expression of +code pc will return pc_rtx. + +

All instructions that do not jump alter the program counter implicitly +by incrementing it, but there is no need to mention this in the RTL. + +


(mem:m addr alias)
This RTX represents a reference to main memory at an address +represented by the expression addr. m specifies how large +a unit of memory is accessed. alias specifies an alias set for the +reference. In general two items are in different alias sets if they cannot +reference the same memory address. + +

The construct (mem:BLK (scratch)) is considered to alias all +other memories. Thus it may be used as a memory barrier in epilogue +stack deallocation patterns. + +


(addressof:m reg)
This RTX represents a request for the address of register reg. Its mode +is always Pmode. If there are any addressof +expressions left in the function after CSE, reg is forced into the +stack and the addressof expression is replaced with a plus +expression for the address of its stack slot. + +


(concatm rtx rtx)
This RTX represents the concatenation of two other RTXs. This is used +for complex values. It should only appear in the RTL attached to +declarations and during RTL generation. It should not appear in the +ordinary insn chain. + +


(concatnm [rtx ...])
This RTX represents the concatenation of all the rtx to make a +single value. Like concat, this should only appear in +declarations, and not in the insn chain. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Rough-GIMPLE-Grammar.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Rough-GIMPLE-Grammar.html new file mode 100644 index 0000000..a971640 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Rough-GIMPLE-Grammar.html @@ -0,0 +1,217 @@ + + +Rough GIMPLE Grammar - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: GIMPLE Example, +Up: GIMPLE +



+
+ +

10.2.6 Rough GIMPLE Grammar

+ +

+

        function     : FUNCTION_DECL
+                             DECL_SAVED_TREE -> compound-stmt
+     
+        compound-stmt: STATEMENT_LIST
+                             members -> stmt
+     
+        stmt         : block
+                     | if-stmt
+                     | switch-stmt
+                     | goto-stmt
+                     | return-stmt
+                     | resx-stmt
+                     | label-stmt
+                     | try-stmt
+                     | modify-stmt
+                     | call-stmt
+     
+        block        : BIND_EXPR
+                             BIND_EXPR_VARS -> chain of DECLs
+                             BIND_EXPR_BLOCK -> BLOCK
+                             BIND_EXPR_BODY -> compound-stmt
+     
+        if-stmt      : COND_EXPR
+                             op0 -> condition
+                             op1 -> compound-stmt
+                             op2 -> compound-stmt
+     
+        switch-stmt  : SWITCH_EXPR
+                             op0 -> val
+                             op1 -> NULL
+                             op2 -> TREE_VEC of CASE_LABEL_EXPRs
+                                 The CASE_LABEL_EXPRs are sorted by CASE_LOW,
+                                 and default is last.
+     
+        goto-stmt    : GOTO_EXPR
+                             op0 -> LABEL_DECL | val
+     
+        return-stmt  : RETURN_EXPR
+                             op0 -> return-value
+     
+        return-value : NULL
+                     | RESULT_DECL
+                     | MODIFY_EXPR
+                             op0 -> RESULT_DECL
+                             op1 -> lhs
+     
+        resx-stmt    : RESX_EXPR
+     
+        label-stmt   : LABEL_EXPR
+                             op0 -> LABEL_DECL
+     
+        try-stmt     : TRY_CATCH_EXPR
+                             op0 -> compound-stmt
+                             op1 -> handler
+                     | TRY_FINALLY_EXPR
+                             op0 -> compound-stmt
+                             op1 -> compound-stmt
+     
+        handler      : catch-seq
+                     | EH_FILTER_EXPR
+                     | compound-stmt
+     
+        catch-seq    : STATEMENT_LIST
+                             members -> CATCH_EXPR
+     
+        modify-stmt  : MODIFY_EXPR
+                             op0 -> lhs
+                             op1 -> rhs
+     
+        call-stmt    : CALL_EXPR
+                             op0 -> val | OBJ_TYPE_REF
+                             op1 -> call-arg-list
+     
+        call-arg-list: TREE_LIST
+                             members -> lhs | CONST
+     
+        addr-expr-arg: ID
+                     | compref
+     
+        addressable  : addr-expr-arg
+                     | indirectref
+     
+        with-size-arg: addressable
+                     | call-stmt
+     
+        indirectref  : INDIRECT_REF
+                             op0 -> val
+     
+        lhs          : addressable
+                     | bitfieldref
+                     | WITH_SIZE_EXPR
+                             op0 -> with-size-arg
+                             op1 -> val
+     
+        min-lval     : ID
+                     | indirectref
+     
+        bitfieldref  : BIT_FIELD_REF
+                             op0 -> inner-compref
+                             op1 -> CONST
+                             op2 -> val
+     
+        compref      : inner-compref
+                     | TARGET_MEM_REF
+                             op0 -> ID
+                             op1 -> val
+                             op2 -> val
+                             op3 -> CONST
+                             op4 -> CONST
+                     | REALPART_EXPR
+                             op0 -> inner-compref
+                     | IMAGPART_EXPR
+                             op0 -> inner-compref
+     
+        inner-compref: min-lval
+                     | COMPONENT_REF
+                             op0 -> inner-compref
+                             op1 -> FIELD_DECL
+                             op2 -> val
+                     | ARRAY_REF
+                             op0 -> inner-compref
+                             op1 -> val
+                             op2 -> val
+                             op3 -> val
+                     | ARRAY_RANGE_REF
+                             op0 -> inner-compref
+                             op1 -> val
+                             op2 -> val
+                             op3 -> val
+                     | VIEW_CONVERT_EXPR
+                             op0 -> inner-compref
+     
+        condition    : val
+                     | RELOP
+                             op0 -> val
+                             op1 -> val
+     
+        val          : ID
+                     | invariant ADDR_EXPR
+                             op0 -> addr-expr-arg
+                     | CONST
+     
+        rhs          : lhs
+                     | CONST
+                     | call-stmt
+                     | ADDR_EXPR
+                             op0 -> addr-expr-arg
+                     | UNOP
+                             op0 -> val
+                     | BINOP
+                             op0 -> val
+                             op1 -> val
+                     | RELOP
+                             op0 -> val
+                             op1 -> val
+     		| COND_EXPR
+     			op0 -> condition
+     			op1 -> val
+     			op2 -> val
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Run_002dtime-Target.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Run_002dtime-Target.html new file mode 100644 index 0000000..6609c2c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Run_002dtime-Target.html @@ -0,0 +1,233 @@ + + +Run-time Target - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Driver, +Up: Target Macros +



+
+ +

15.3 Run-time Target Specification

+ +

+ +Here are run-time target specifications. + +

+— Macro: TARGET_CPU_CPP_BUILTINS ()
+

This function-like macro expands to a block of code that defines +built-in preprocessor macros and assertions for the target CPU, using +the functions builtin_define, builtin_define_std and +builtin_assert. When the front end +calls this macro it provides a trailing semicolon, and since it has +finished command line option processing your code can use those +results freely. + +

builtin_assert takes a string in the form you pass to the +command-line option -A, such as cpu=mips, and creates +the assertion. builtin_define takes a string in the form +accepted by option -D and unconditionally defines the macro. + +

builtin_define_std takes a string representing the name of an +object-like macro. If it doesn't lie in the user's namespace, +builtin_define_std defines it unconditionally. Otherwise, it +defines a version with two leading underscores, and another version +with two leading and trailing underscores, and defines the original +only if an ISO standard was not requested on the command line. For +example, passing unix defines __unix, __unix__ +and possibly unix; passing _mips defines __mips, +__mips__ and possibly _mips, and passing _ABI64 +defines only _ABI64. + +

You can also test for the C dialect being compiled. The variable +c_language is set to one of clk_c, clk_cplusplus +or clk_objective_c. Note that if we are preprocessing +assembler, this variable will be clk_c but the function-like +macro preprocessing_asm_p() will return true, so you might want +to check for that first. If you need to check for strict ANSI, the +variable flag_iso can be used. The function-like macro +preprocessing_trad_p() can be used to check for traditional +preprocessing. +

+ +
+— Macro: TARGET_OS_CPP_BUILTINS ()
+

Similarly to TARGET_CPU_CPP_BUILTINS but this macro is optional +and is used for the target operating system instead. +

+ +
+— Macro: TARGET_OBJFMT_CPP_BUILTINS ()
+

Similarly to TARGET_CPU_CPP_BUILTINS but this macro is optional +and is used for the target object format. elfos.h uses this +macro to define __ELF__, so you probably do not need to define +it yourself. +

+ +
+— Variable: extern int target_flags
+

This variable is declared in options.h, which is included before +any target-specific headers. +

+ +
+— Variable: Target Hook int TARGET_DEFAULT_TARGET_FLAGS
+

This variable specifies the initial value of target_flags. +Its default setting is 0. +

+ +

+ +

+— Target Hook: bool TARGET_HANDLE_OPTION (size_t code, const char *arg, int value)
+

This hook is called whenever the user specifies one of the +target-specific options described by the .opt definition files +(see Options). It has the opportunity to do some option-specific +processing and should return true if the option is valid. The default +definition does nothing but return true. + +

code specifies the OPT_name enumeration value +associated with the selected option; name is just a rendering of +the option name in which non-alphanumeric characters are replaced by +underscores. arg specifies the string argument and is null if +no argument was given. If the option is flagged as a UInteger +(see Option properties), value is the numeric value of the +argument. Otherwise value is 1 if the positive form of the +option was used and 0 if the “no-” form was. +

+ +
+— Target Hook: bool TARGET_HANDLE_C_OPTION (size_t code, const char *arg, int value)
+

This target hook is called whenever the user specifies one of the +target-specific C language family options described by the .opt +definition files(see Options). It has the opportunity to do some +option-specific processing and should return true if the option is +valid. The default definition does nothing but return false. + +

In general, you should use TARGET_HANDLE_OPTION to handle +options. However, if processing an option requires routines that are +only available in the C (and related language) front ends, then you +should use TARGET_HANDLE_C_OPTION instead. +

+ +
+— Macro: TARGET_VERSION
+

This macro is a C statement to print on stderr a string +describing the particular machine description choice. Every machine +description should define TARGET_VERSION. For example: + +

          #ifdef MOTOROLA
+          #define TARGET_VERSION \
+            fprintf (stderr, " (68k, Motorola syntax)");
+          #else
+          #define TARGET_VERSION \
+            fprintf (stderr, " (68k, MIT syntax)");
+          #endif
+     
+
+ +
+— Macro: OVERRIDE_OPTIONS
+

Sometimes certain combinations of command options do not make sense on +a particular target machine. You can define a macro +OVERRIDE_OPTIONS to take account of this. This macro, if +defined, is executed once just after all the command options have been +parsed. + +

Don't use this macro to turn on various extra optimizations for +-O. That is what OPTIMIZATION_OPTIONS is for. +

+ +
+— Macro: C_COMMON_OVERRIDE_OPTIONS
+

This is similar to OVERRIDE_OPTIONS but is only used in the C +language frontends (C, Objective-C, C++, Objective-C++) and so can be +used to alter option flag variables which only exist in those +frontends. +

+ +
+— Macro: OPTIMIZATION_OPTIONS (level, size)
+

Some machines may desire to change what optimizations are performed for +various optimization levels. This macro, if defined, is executed once +just after the optimization level is determined and before the remainder +of the command options have been parsed. Values set in this macro are +used as the default values for the other command line options. + +

level is the optimization level specified; 2 if -O2 is +specified, 1 if -O is specified, and 0 if neither is specified. + +

size is nonzero if -Os is specified and zero otherwise. + +

You should not use this macro to change options that are not +machine-specific. These should uniformly selected by the same +optimization level on all supported machines. Use this macro to enable +machine-specific optimizations. + +

Do not examine write_symbols in +this macro! The debugging options are not supposed to alter the +generated code. +

+ +
+— Target Hook: bool TARGET_HELP (void)
+

This hook is called in response to the user invoking +--target-help on the command line. It gives the target a +chance to display extra information on the target specific command +line options found in its .opt file. +

+ +
+— Macro: CAN_DEBUG_WITHOUT_FP
+

Define this macro if debugging can be performed even without a frame +pointer. If this macro is defined, GCC will turn on the +-fomit-frame-pointer option whenever -O is specified. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/SDB-and-DWARF.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/SDB-and-DWARF.html new file mode 100644 index 0000000..c46ae22 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/SDB-and-DWARF.html @@ -0,0 +1,165 @@ + + +SDB and DWARF - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: File Names and DBX, +Up: Debugging Info +



+
+ +

15.22.5 Macros for SDB and DWARF Output

+ + +

Here are macros for SDB and DWARF output. + +

+— Macro: SDB_DEBUGGING_INFO
+

Define this macro if GCC should produce COFF-style debugging output +for SDB in response to the -g option. +

+ +
+— Macro: DWARF2_DEBUGGING_INFO
+

Define this macro if GCC should produce dwarf version 2 format +debugging output in response to the -g option. + +

+— Target Hook: int TARGET_DWARF_CALLING_CONVENTION (tree function)
+

Define this to enable the dwarf attribute DW_AT_calling_convention to +be emitted for each function. Instead of an integer return the enum +value for the DW_CC_ tag. +

+ +

To support optional call frame debugging information, you must also +define INCOMING_RETURN_ADDR_RTX and either set +RTX_FRAME_RELATED_P on the prologue insns if you use RTL for the +prologue, or call dwarf2out_def_cfa and dwarf2out_reg_save +as appropriate from TARGET_ASM_FUNCTION_PROLOGUE if you don't. +

+ +
+— Macro: DWARF2_FRAME_INFO
+

Define this macro to a nonzero value if GCC should always output +Dwarf 2 frame information. If DWARF2_UNWIND_INFO +(see Exception Region Output is nonzero, GCC will output this +information not matter how you define DWARF2_FRAME_INFO. +

+ +
+— Macro: DWARF2_ASM_LINE_DEBUG_INFO
+

Define this macro to be a nonzero value if the assembler can generate Dwarf 2 +line debug info sections. This will result in much more compact line number +tables, and hence is desirable if it works. +

+ +
+— Macro: ASM_OUTPUT_DWARF_DELTA (stream, size, label1, label2)
+

A C statement to issue assembly directives that create a difference +lab1 minus lab2, using an integer of the given size. +

+ +
+— Macro: ASM_OUTPUT_DWARF_OFFSET (stream, size, label, section)
+

A C statement to issue assembly directives that create a +section-relative reference to the given label, using an integer of the +given size. The label is known to be defined in the given section. +

+ +
+— Macro: ASM_OUTPUT_DWARF_PCREL (stream, size, label)
+

A C statement to issue assembly directives that create a self-relative +reference to the given label, using an integer of the given size. +

+ +
+— Target Hook: void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *FILE, int size, rtx x)
+

If defined, this target hook is a function which outputs a DTP-relative +reference to the given TLS symbol of the specified size. +

+ +
+— Macro: PUT_SDB_...
+

Define these macros to override the assembler syntax for the special +SDB assembler directives. See sdbout.c for a list of these +macros and their arguments. If the standard syntax is used, you need +not define them yourself. +

+ +
+— Macro: SDB_DELIM
+

Some assemblers do not support a semicolon as a delimiter, even between +SDB assembler directives. In that case, define this macro to be the +delimiter to use (usually \n). It is not necessary to define +a new set of PUT_SDB_op macros if this is the only change +required. +

+ +
+— Macro: SDB_ALLOW_UNKNOWN_REFERENCES
+

Define this macro to allow references to unknown structure, +union, or enumeration tags to be emitted. Standard COFF does not +allow handling of unknown references, MIPS ECOFF has support for +it. +

+ +
+— Macro: SDB_ALLOW_FORWARD_REFERENCES
+

Define this macro to allow references to structure, union, or +enumeration tags that have not yet been seen to be handled. Some +assemblers choke if forward tags are used, while some require it. +

+ +
+— Macro: SDB_OUTPUT_SOURCE_LINE (stream, line)
+

A C statement to output SDB debugging information before code for line +number line of the current source file to the stdio stream +stream. The default is to emit an .ln directive. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/SSA.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/SSA.html new file mode 100644 index 0000000..2e42463 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/SSA.html @@ -0,0 +1,372 @@ + + +SSA - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Statement Operands, +Up: Tree SSA +



+
+ +

10.5 Static Single Assignment

+ +

+Most of the tree optimizers rely on the data flow information provided +by the Static Single Assignment (SSA) form. We implement the SSA form +as described in R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and +K. Zadeck. Efficiently Computing Static Single Assignment Form and the +Control Dependence Graph. ACM Transactions on Programming Languages +and Systems, 13(4):451-490, October 1991. + +

The SSA form is based on the premise that program variables are +assigned in exactly one location in the program. Multiple assignments +to the same variable create new versions of that variable. Naturally, +actual programs are seldom in SSA form initially because variables +tend to be assigned multiple times. The compiler modifies the program +representation so that every time a variable is assigned in the code, +a new version of the variable is created. Different versions of the +same variable are distinguished by subscripting the variable name with +its version number. Variables used in the right-hand side of +expressions are renamed so that their version number matches that of +the most recent assignment. + +

We represent variable versions using SSA_NAME nodes. The +renaming process in tree-ssa.c wraps every real and +virtual operand with an SSA_NAME node which contains +the version number and the statement that created the +SSA_NAME. Only definitions and virtual definitions may +create new SSA_NAME nodes. + +

Sometimes, flow of control makes it impossible to determine the +most recent version of a variable. In these cases, the compiler +inserts an artificial definition for that variable called +PHI function or PHI node. This new definition merges +all the incoming versions of the variable to create a new name +for it. For instance, + +

     if (...)
+       a_1 = 5;
+     else if (...)
+       a_2 = 2;
+     else
+       a_3 = 13;
+     
+     # a_4 = PHI <a_1, a_2, a_3>
+     return a_4;
+
+

Since it is not possible to determine which of the three branches +will be taken at runtime, we don't know which of a_1, +a_2 or a_3 to use at the return statement. So, the +SSA renamer creates a new version a_4 which is assigned +the result of “merging” a_1, a_2 and a_3. +Hence, PHI nodes mean “one of these operands. I don't know +which”. + +

The following macros can be used to examine PHI nodes + +

+— Macro: PHI_RESULT (phi)
+

Returns the SSA_NAME created by PHI node phi (i.e., +phi's LHS). +

+ +
+— Macro: PHI_NUM_ARGS (phi)
+

Returns the number of arguments in phi. This number is exactly +the number of incoming edges to the basic block holding phi. +

+ +
+— Macro: PHI_ARG_ELT (phi, i)
+

Returns a tuple representing the ith argument of phi. +Each element of this tuple contains an SSA_NAME var and +the incoming edge through which var flows. +

+ +
+— Macro: PHI_ARG_EDGE (phi, i)
+

Returns the incoming edge for the ith argument of phi. +

+ +
+— Macro: PHI_ARG_DEF (phi, i)
+

Returns the SSA_NAME for the ith argument of phi. +

+ +

10.5.1 Preserving the SSA form

+ +

Some optimization passes make changes to the function that +invalidate the SSA property. This can happen when a pass has +added new symbols or changed the program so that variables that +were previously aliased aren't anymore. Whenever something like this +happens, the affected symbols must be renamed into SSA form again. +Transformations that emit new code or replicate existing statements +will also need to update the SSA form. + +

Since GCC implements two different SSA forms for register and virtual +variables, keeping the SSA form up to date depends on whether you are +updating register or virtual names. In both cases, the general idea +behind incremental SSA updates is similar: when new SSA names are +created, they typically are meant to replace other existing names in +the program. + +

For instance, given the following code: + +

          1	L0:
+          2	x_1 = PHI (0, x_5)
+          3	if (x_1 < 10)
+          4	  if (x_1 > 7)
+          5	    y_2 = 0
+          6	  else
+          7	    y_3 = x_1 + x_7
+          8	  endif
+          9	  x_5 = x_1 + 1
+          10   goto L0;
+          11	endif
+
+

Suppose that we insert new names x_10 and x_11 (lines +4 and 8). + +

          1	L0:
+          2	x_1 = PHI (0, x_5)
+          3	if (x_1 < 10)
+          4	  x_10 = ...
+          5	  if (x_1 > 7)
+          6	    y_2 = 0
+          7	  else
+          8	    x_11 = ...
+          9	    y_3 = x_1 + x_7
+          10	  endif
+          11	  x_5 = x_1 + 1
+          12	  goto L0;
+          13	endif
+
+

We want to replace all the uses of x_1 with the new definitions +of x_10 and x_11. Note that the only uses that should +be replaced are those at lines 5, 9 and 11. +Also, the use of x_7 at line 9 should not be +replaced (this is why we cannot just mark symbol x for +renaming). + +

Additionally, we may need to insert a PHI node at line 11 +because that is a merge point for x_10 and x_11. So the +use of x_1 at line 11 will be replaced with the new PHI +node. The insertion of PHI nodes is optional. They are not strictly +necessary to preserve the SSA form, and depending on what the caller +inserted, they may not even be useful for the optimizers. + +

Updating the SSA form is a two step process. First, the pass has to +identify which names need to be updated and/or which symbols need to +be renamed into SSA form for the first time. When new names are +introduced to replace existing names in the program, the mapping +between the old and the new names are registered by calling +register_new_name_mapping (note that if your pass creates new +code by duplicating basic blocks, the call to tree_duplicate_bb +will set up the necessary mappings automatically). On the other hand, +if your pass exposes a new symbol that should be put in SSA form for +the first time, the new symbol should be registered with +mark_sym_for_renaming. + +

After the replacement mappings have been registered and new symbols +marked for renaming, a call to update_ssa makes the registered +changes. This can be done with an explicit call or by creating +TODO flags in the tree_opt_pass structure for your pass. +There are several TODO flags that control the behavior of +update_ssa: + +

    +
  • TODO_update_ssa. Update the SSA form inserting PHI nodes + for newly exposed symbols and virtual names marked for updating. + When updating real names, only insert PHI nodes for a real name + O_j in blocks reached by all the new and old definitions for + O_j. If the iterated dominance frontier for O_j + is not pruned, we may end up inserting PHI nodes in blocks that + have one or more edges with no incoming definition for + O_j. This would lead to uninitialized warnings for + O_j's symbol. + +
  • TODO_update_ssa_no_phi. Update the SSA form without + inserting any new PHI nodes at all. This is used by passes that + have either inserted all the PHI nodes themselves or passes that + need only to patch use-def and def-def chains for virtuals + (e.g., DCE). + +
  • TODO_update_ssa_full_phi. Insert PHI nodes everywhere + they are needed. No pruning of the IDF is done. This is used + by passes that need the PHI nodes for O_j even if it + means that some arguments will come from the default definition + of O_j's symbol (e.g., pass_linear_transform). + +

    WARNING: If you need to use this flag, chances are that your + pass may be doing something wrong. Inserting PHI nodes for an + old name where not all edges carry a new replacement may lead to + silent codegen errors or spurious uninitialized warnings. + +

  • TODO_update_ssa_only_virtuals. Passes that update the + SSA form on their own may want to delegate the updating of + virtual names to the generic updater. Since FUD chains are + easier to maintain, this simplifies the work they need to do. + NOTE: If this flag is used, any OLD->NEW mappings for real names + are explicitly destroyed and only the symbols marked for + renaming are processed. +
+ +

10.5.2 Preserving the virtual SSA form

+ +

+The virtual SSA form is harder to preserve than the non-virtual SSA form +mainly because the set of virtual operands for a statement may change at +what some would consider unexpected times. In general, statement +modifications should be bracketed between calls to +push_stmt_changes and pop_stmt_changes. For example, + +

         munge_stmt (tree stmt)
+         {
+            push_stmt_changes (&stmt);
+            ... rewrite STMT ...
+            pop_stmt_changes (&stmt);
+         }
+
+

The call to push_stmt_changes saves the current state of the +statement operands and the call to pop_stmt_changes compares +the saved state with the current one and does the appropriate symbol +marking for the SSA renamer. + +

It is possible to modify several statements at a time, provided that +push_stmt_changes and pop_stmt_changes are called in +LIFO order, as when processing a stack of statements. + +

Additionally, if the pass discovers that it did not need to make +changes to the statement after calling push_stmt_changes, it +can simply discard the topmost change buffer by calling +discard_stmt_changes. This will avoid the expensive operand +re-scan operation and the buffer comparison that determines if symbols +need to be marked for renaming. + +

10.5.3 Examining SSA_NAME nodes

+ +

+The following macros can be used to examine SSA_NAME nodes + +

+— Macro: SSA_NAME_DEF_STMT (var)
+

Returns the statement s that creates the SSA_NAME +var. If s is an empty statement (i.e., IS_EMPTY_STMT +(s) returns true), it means that the first reference to +this variable is a USE or a VUSE. +

+ +
+— Macro: SSA_NAME_VERSION (var)
+

Returns the version number of the SSA_NAME object var. +

+ +

10.5.4 Walking use-def chains

+ +
+— Tree SSA function: void walk_use_def_chains (var, fn, data)
+
+

Walks use-def chains starting at the SSA_NAME node var. +Calls function fn at each reaching definition found. Function +FN takes three arguments: var, its defining statement +(def_stmt) and a generic pointer to whatever state information +that fn may want to maintain (data). Function fn is +able to stop the walk by returning true, otherwise in order to +continue the walk, fn should return false. + +

Note, that if def_stmt is a PHI node, the semantics are +slightly different. For each argument arg of the PHI node, this +function will: + +

    +
  1. Walk the use-def chains for arg. +
  2. Call FN (arg, phi, data). +
+ +

Note how the first argument to fn is no longer the original +variable var, but the PHI argument currently being examined. +If fn wants to get at var, it should call +PHI_RESULT (phi). +

+ +

10.5.5 Walking the dominator tree

+ +
+— Tree SSA function: void walk_dominator_tree (walk_data, bb)
+
+

This function walks the dominator tree for the current CFG calling a +set of callback functions defined in struct dom_walk_data in +domwalk.h. The call back functions you need to define give you +hooks to execute custom code at various points during traversal: + +

    +
  1. Once to initialize any local data needed while processing + bb and its children. This local data is pushed into an + internal stack which is automatically pushed and popped as the + walker traverses the dominator tree. + +
  2. Once before traversing all the statements in the bb. + +
  3. Once for every statement inside bb. + +
  4. Once after traversing all the statements and before recursing + into bb's dominator children. + +
  5. It then recurses into all the dominator children of bb. + +
  6. After recursing into all the dominator children of bb it + can, optionally, traverse every statement in bb again + (i.e., repeating steps 2 and 3). + +
  7. Once after walking the statements in bb and bb's + dominator children. At this stage, the block local data stack + is popped. +
+

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scalar-Return.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scalar-Return.html new file mode 100644 index 0000000..30c0855 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scalar-Return.html @@ -0,0 +1,176 @@ + + +Scalar Return - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Register Arguments, +Up: Stack and Calling +



+
+ +

15.10.8 How Scalar Function Values Are Returned

+ +

+This section discusses the macros that control returning scalars as +values—values that can fit in registers. + +

+— Target Hook: rtx TARGET_FUNCTION_VALUE (tree ret_type, tree fn_decl_or_type, bool outgoing)
+
+

Define this to return an RTX representing the place where a function +returns or receives a value of data type ret_type, a tree node +node representing a data type. fn_decl_or_type is a tree node +representing FUNCTION_DECL or FUNCTION_TYPE of a +function being called. If outgoing is false, the hook should +compute the register in which the caller will see the return value. +Otherwise, the hook should return an RTX representing the place where +a function returns a value. + +

On many machines, only TYPE_MODE (ret_type) is relevant. +(Actually, on most machines, scalar values are returned in the same +place regardless of mode.) The value of the expression is usually a +reg RTX for the hard register where the return value is stored. +The value can also be a parallel RTX, if the return value is in +multiple places. See FUNCTION_ARG for an explanation of the +parallel form. Note that the callee will populate every +location specified in the parallel, but if the first element of +the parallel contains the whole return value, callers will use +that element as the canonical location and ignore the others. The m68k +port uses this type of parallel to return pointers in both +%a0 (the canonical location) and %d0. + +

If TARGET_PROMOTE_FUNCTION_RETURN returns true, you must apply +the same promotion rules specified in PROMOTE_MODE if +valtype is a scalar type. + +

If the precise function being called is known, func is a tree +node (FUNCTION_DECL) for it; otherwise, func is a null +pointer. This makes it possible to use a different value-returning +convention for specific functions when all their calls are +known. + +

Some target machines have “register windows” so that the register in +which a function returns its value is not the same as the one in which +the caller sees the value. For such machines, you should return +different RTX depending on outgoing. + +

TARGET_FUNCTION_VALUE is not used for return values with +aggregate data types, because these are returned in another way. See +TARGET_STRUCT_VALUE_RTX and related macros, below. +

+ +
+— Macro: FUNCTION_VALUE (valtype, func)
+

This macro has been deprecated. Use TARGET_FUNCTION_VALUE for +a new target instead. +

+ +
+— Macro: FUNCTION_OUTGOING_VALUE (valtype, func)
+

This macro has been deprecated. Use TARGET_FUNCTION_VALUE for +a new target instead. +

+ +
+— Macro: LIBCALL_VALUE (mode)
+

A C expression to create an RTX representing the place where a library +function returns a value of mode mode. If the precise function +being called is known, func is a tree node +(FUNCTION_DECL) for it; otherwise, func is a null +pointer. This makes it possible to use a different value-returning +convention for specific functions when all their calls are +known. + +

Note that “library function” in this context means a compiler +support routine, used to perform arithmetic, whose name is known +specially by the compiler and was not mentioned in the C code being +compiled. + +

The definition of LIBRARY_VALUE need not be concerned aggregate +data types, because none of the library functions returns such types. +

+ +
+— Macro: FUNCTION_VALUE_REGNO_P (regno)
+

A C expression that is nonzero if regno is the number of a hard +register in which the values of called function may come back. + +

A register whose use for returning values is limited to serving as the +second of a pair (for a value of type double, say) need not be +recognized by this macro. So for most machines, this definition +suffices: + +

          #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
+     
+

If the machine has register windows, so that the caller and the called +function use different registers for the return value, this macro +should recognize only the caller's register numbers. +

+ +
+— Macro: APPLY_RESULT_SIZE
+

Define this macro if untyped_call and untyped_return +need more space than is implied by FUNCTION_VALUE_REGNO_P for +saving and restoring an arbitrary return value. +

+ +
+— Target Hook: bool TARGET_RETURN_IN_MSB (tree type)
+

This hook should return true if values of type type are returned +at the most significant end of a register (in other words, if they are +padded at the least significant end). You can assume that type +is returned in a register; the caller is required to check this. + +

Note that the register provided by TARGET_FUNCTION_VALUE must +be able to hold the complete return value. For example, if a 1-, 2- +or 3-byte structure is returned at the most significant end of a +4-byte register, TARGET_FUNCTION_VALUE should provide an +SImode rtx. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scalar-evolutions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scalar-evolutions.html new file mode 100644 index 0000000..e12d476 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scalar-evolutions.html @@ -0,0 +1,117 @@ + + +Scalar evolutions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: LCSSA, +Up: Loop Analysis and Representation +



+
+ +

11.5 Scalar evolutions

+ +

+Scalar evolutions (SCEV) are used to represent results of induction +variable analysis on GIMPLE. They enable us to represent variables with +complicated behavior in a simple and consistent way (we only use it to +express values of polynomial induction variables, but it is possible to +extend it). The interfaces to SCEV analysis are declared in +tree-scalar-evolution.h. To use scalar evolutions analysis, +scev_initialize must be used. To stop using SCEV, +scev_finalize should be used. SCEV analysis caches results in +order to save time and memory. This cache however is made invalid by +most of the loop transformations, including removal of code. If such a +transformation is performed, scev_reset must be called to clean +the caches. + +

Given an SSA name, its behavior in loops can be analyzed using the +analyze_scalar_evolution function. The returned SCEV however +does not have to be fully analyzed and it may contain references to +other SSA names defined in the loop. To resolve these (potentially +recursive) references, instantiate_parameters or +resolve_mixers functions must be used. +instantiate_parameters is useful when you use the results of SCEV +only for some analysis, and when you work with whole nest of loops at +once. It will try replacing all SSA names by their SCEV in all loops, +including the super-loops of the current loop, thus providing a complete +information about the behavior of the variable in the loop nest. +resolve_mixers is useful if you work with only one loop at a +time, and if you possibly need to create code based on the value of the +induction variable. It will only resolve the SSA names defined in the +current loop, leaving the SSA names defined outside unchanged, even if +their evolution in the outer loops is known. + +

The SCEV is a normal tree expression, except for the fact that it may +contain several special tree nodes. One of them is +SCEV_NOT_KNOWN, used for SSA names whose value cannot be +expressed. The other one is POLYNOMIAL_CHREC. Polynomial chrec +has three arguments – base, step and loop (both base and step may +contain further polynomial chrecs). Type of the expression and of base +and step must be the same. A variable has evolution +POLYNOMIAL_CHREC(base, step, loop) if it is (in the specified +loop) equivalent to x_1 in the following example + +

     while (...)
+       {
+         x_1 = phi (base, x_2);
+         x_2 = x_1 + step;
+       }
+
+

Note that this includes the language restrictions on the operations. +For example, if we compile C code and x has signed type, then the +overflow in addition would cause undefined behavior, and we may assume +that this does not happen. Hence, the value with this SCEV cannot +overflow (which restricts the number of iterations of such a loop). + +

In many cases, one wants to restrict the attention just to affine +induction variables. In this case, the extra expressive power of SCEV +is not useful, and may complicate the optimizations. In this case, +simple_iv function may be used to analyze a value – the result +is a loop-invariant base and step. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scheduling.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scheduling.html new file mode 100644 index 0000000..8c52a29 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scheduling.html @@ -0,0 +1,388 @@ + + +Scheduling - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Costs, +Up: Target Macros +



+
+ +

15.18 Adjusting the Instruction Scheduler

+ +

The instruction scheduler may need a fair amount of machine-specific +adjustment in order to produce good code. GCC provides several target +hooks for this purpose. It is usually enough to define just a few of +them: try the first ones in this list first. + +

+— Target Hook: int TARGET_SCHED_ISSUE_RATE (void)
+

This hook returns the maximum number of instructions that can ever +issue at the same time on the target machine. The default is one. +Although the insn scheduler can define itself the possibility of issue +an insn on the same cycle, the value can serve as an additional +constraint to issue insns on the same simulated processor cycle (see +hooks TARGET_SCHED_REORDER and TARGET_SCHED_REORDER2). +This value must be constant over the entire compilation. If you need +it to vary depending on what the instructions are, you must use +TARGET_SCHED_VARIABLE_ISSUE. +

+ +
+— Target Hook: int TARGET_SCHED_VARIABLE_ISSUE (FILE *file, int verbose, rtx insn, int more)
+

This hook is executed by the scheduler after it has scheduled an insn +from the ready list. It should return the number of insns which can +still be issued in the current cycle. The default is +more - 1 for insns other than CLOBBER and +USE, which normally are not counted against the issue rate. +You should define this hook if some insns take more machine resources +than others, so that fewer insns can follow them in the same cycle. +file is either a null pointer, or a stdio stream to write any +debug output to. verbose is the verbose level provided by +-fsched-verbose-n. insn is the instruction that +was scheduled. +

+ +
+— Target Hook: int TARGET_SCHED_ADJUST_COST (rtx insn, rtx link, rtx dep_insn, int cost)
+

This function corrects the value of cost based on the +relationship between insn and dep_insn through the +dependence link. It should return the new value. The default +is to make no adjustment to cost. This can be used for example +to specify to the scheduler using the traditional pipeline description +that an output- or anti-dependence does not incur the same cost as a +data-dependence. If the scheduler using the automaton based pipeline +description, the cost of anti-dependence is zero and the cost of +output-dependence is maximum of one and the difference of latency +times of the first and the second insns. If these values are not +acceptable, you could use the hook to modify them too. See also +see Processor pipeline description. +

+ +
+— Target Hook: int TARGET_SCHED_ADJUST_PRIORITY (rtx insn, int priority)
+

This hook adjusts the integer scheduling priority priority of +insn. It should return the new priority. Increase the priority to +execute insn earlier, reduce the priority to execute insn +later. Do not define this hook if you do not need to adjust the +scheduling priorities of insns. +

+ +
+— Target Hook: int TARGET_SCHED_REORDER (FILE *file, int verbose, rtx *ready, int *n_readyp, int clock)
+

This hook is executed by the scheduler after it has scheduled the ready +list, to allow the machine description to reorder it (for example to +combine two small instructions together on VLIW machines). +file is either a null pointer, or a stdio stream to write any +debug output to. verbose is the verbose level provided by +-fsched-verbose-n. ready is a pointer to the ready +list of instructions that are ready to be scheduled. n_readyp is +a pointer to the number of elements in the ready list. The scheduler +reads the ready list in reverse order, starting with +ready[*n_readyp-1] and going to ready[0]. clock +is the timer tick of the scheduler. You may modify the ready list and +the number of ready insns. The return value is the number of insns that +can issue this cycle; normally this is just issue_rate. See also +TARGET_SCHED_REORDER2. +

+ +
+— Target Hook: int TARGET_SCHED_REORDER2 (FILE *file, int verbose, rtx *ready, int *n_ready, clock)
+

Like TARGET_SCHED_REORDER, but called at a different time. That +function is called whenever the scheduler starts a new cycle. This one +is called once per iteration over a cycle, immediately after +TARGET_SCHED_VARIABLE_ISSUE; it can reorder the ready list and +return the number of insns to be scheduled in the same cycle. Defining +this hook can be useful if there are frequent situations where +scheduling one insn causes other insns to become ready in the same +cycle. These other insns can then be taken into account properly. +

+ +
+— Target Hook: void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx head, rtx tail)
+

This hook is called after evaluation forward dependencies of insns in +chain given by two parameter values (head and tail +correspondingly) but before insns scheduling of the insn chain. For +example, it can be used for better insn classification if it requires +analysis of dependencies. This hook can use backward and forward +dependencies of the insn scheduler because they are already +calculated. +

+ +
+— Target Hook: void TARGET_SCHED_INIT (FILE *file, int verbose, int max_ready)
+

This hook is executed by the scheduler at the beginning of each block of +instructions that are to be scheduled. file is either a null +pointer, or a stdio stream to write any debug output to. verbose +is the verbose level provided by -fsched-verbose-n. +max_ready is the maximum number of insns in the current scheduling +region that can be live at the same time. This can be used to allocate +scratch space if it is needed, e.g. by TARGET_SCHED_REORDER. +

+ +
+— Target Hook: void TARGET_SCHED_FINISH (FILE *file, int verbose)
+

This hook is executed by the scheduler at the end of each block of +instructions that are to be scheduled. It can be used to perform +cleanup of any actions done by the other scheduling hooks. file +is either a null pointer, or a stdio stream to write any debug output +to. verbose is the verbose level provided by +-fsched-verbose-n. +

+ +
+— Target Hook: void TARGET_SCHED_INIT_GLOBAL (FILE *file, int verbose, int old_max_uid)
+

This hook is executed by the scheduler after function level initializations. +file is either a null pointer, or a stdio stream to write any debug output to. +verbose is the verbose level provided by -fsched-verbose-n. +old_max_uid is the maximum insn uid when scheduling begins. +

+ +
+— Target Hook: void TARGET_SCHED_FINISH_GLOBAL (FILE *file, int verbose)
+

This is the cleanup hook corresponding to TARGET_SCHED_INIT_GLOBAL. +file is either a null pointer, or a stdio stream to write any debug output to. +verbose is the verbose level provided by -fsched-verbose-n. +

+ +
+— Target Hook: int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
+

The hook returns an RTL insn. The automaton state used in the +pipeline hazard recognizer is changed as if the insn were scheduled +when the new simulated processor cycle starts. Usage of the hook may +simplify the automaton pipeline description for some VLIW +processors. If the hook is defined, it is used only for the automaton +based pipeline description. The default is not to change the state +when the new simulated processor cycle starts. +

+ +
+— Target Hook: void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void)
+

The hook can be used to initialize data used by the previous hook. +

+ +
+— Target Hook: int TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
+

The hook is analogous to TARGET_SCHED_DFA_PRE_CYCLE_INSN but used +to changed the state as if the insn were scheduled when the new +simulated processor cycle finishes. +

+ +
+— Target Hook: void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
+

The hook is analogous to TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN but +used to initialize data used by the previous hook. +

+ +
+— Target Hook: void TARGET_SCHED_DFA_PRE_CYCLE_ADVANCE (void)
+

The hook to notify target that the current simulated cycle is about to finish. +The hook is analogous to TARGET_SCHED_DFA_PRE_CYCLE_INSN but used +to change the state in more complicated situations - e.g., when advancing +state on a single insn is not enough. +

+ +
+— Target Hook: void TARGET_SCHED_DFA_POST_CYCLE_ADVANCE (void)
+

The hook to notify target that new simulated cycle has just started. +The hook is analogous to TARGET_SCHED_DFA_POST_CYCLE_INSN but used +to change the state in more complicated situations - e.g., when advancing +state on a single insn is not enough. +

+ +
+— Target Hook: int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD (void)
+

This hook controls better choosing an insn from the ready insn queue +for the DFA-based insn scheduler. Usually the scheduler +chooses the first insn from the queue. If the hook returns a positive +value, an additional scheduler code tries all permutations of +TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD () +subsequent ready insns to choose an insn whose issue will result in +maximal number of issued insns on the same cycle. For the +VLIW processor, the code could actually solve the problem of +packing simple insns into the VLIW insn. Of course, if the +rules of VLIW packing are described in the automaton. + +

This code also could be used for superscalar RISC +processors. Let us consider a superscalar RISC processor +with 3 pipelines. Some insns can be executed in pipelines A or +B, some insns can be executed only in pipelines B or +C, and one insn can be executed in pipeline B. The +processor may issue the 1st insn into A and the 2nd one into +B. In this case, the 3rd insn will wait for freeing B +until the next cycle. If the scheduler issues the 3rd insn the first, +the processor could issue all 3 insns per cycle. + +

Actually this code demonstrates advantages of the automaton based +pipeline hazard recognizer. We try quickly and easy many insn +schedules to choose the best one. + +

The default is no multipass scheduling. +

+ +
+— Target Hook: int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx)
+
+

This hook controls what insns from the ready insn queue will be +considered for the multipass insn scheduling. If the hook returns +zero for insn passed as the parameter, the insn will be not chosen to +be issued. + +

The default is that any ready insns can be chosen to be issued. +

+ +
+— Target Hook: int TARGET_SCHED_DFA_NEW_CYCLE (FILE *, int, rtx, int, int, int *)
+
+

This hook is called by the insn scheduler before issuing insn passed +as the third parameter on given cycle. If the hook returns nonzero, +the insn is not issued on given processors cycle. Instead of that, +the processor cycle is advanced. If the value passed through the last +parameter is zero, the insn ready queue is not sorted on the new cycle +start as usually. The first parameter passes file for debugging +output. The second one passes the scheduler verbose level of the +debugging output. The forth and the fifth parameter values are +correspondingly processor cycle on which the previous insn has been +issued and the current processor cycle. +

+ +
+— Target Hook: bool TARGET_SCHED_IS_COSTLY_DEPENDENCE (struct dep_def *_dep, int cost, int distance)
+

This hook is used to define which dependences are considered costly by +the target, so costly that it is not advisable to schedule the insns that +are involved in the dependence too close to one another. The parameters +to this hook are as follows: The first parameter _dep is the dependence +being evaluated. The second parameter cost is the cost of the +dependence, and the third +parameter distance is the distance in cycles between the two insns. +The hook returns true if considering the distance between the two +insns the dependence between them is considered costly by the target, +and false otherwise. + +

Defining this hook can be useful in multiple-issue out-of-order machines, +where (a) it's practically hopeless to predict the actual data/resource +delays, however: (b) there's a better chance to predict the actual grouping +that will be formed, and (c) correctly emulating the grouping can be very +important. In such targets one may want to allow issuing dependent insns +closer to one another—i.e., closer than the dependence distance; however, +not in cases of "costly dependences", which this hooks allows to define. +

+ +
+— Target Hook: void TARGET_SCHED_H_I_D_EXTENDED (void)
+

This hook is called by the insn scheduler after emitting a new instruction to +the instruction stream. The hook notifies a target backend to extend its +per instruction data structures. +

+ +
+— Target Hook: int TARGET_SCHED_SPECULATE_INSN (rtx insn, int request, rtx *new_pat)
+

This hook is called by the insn scheduler when insn has only +speculative dependencies and therefore can be scheduled speculatively. +The hook is used to check if the pattern of insn has a speculative +version and, in case of successful check, to generate that speculative +pattern. The hook should return 1, if the instruction has a speculative form, +or -1, if it doesn't. request describes the type of requested +speculation. If the return value equals 1 then new_pat is assigned +the generated speculative pattern. +

+ +
+— Target Hook: int TARGET_SCHED_NEEDS_BLOCK_P (rtx insn)
+

This hook is called by the insn scheduler during generation of recovery code +for insn. It should return nonzero, if the corresponding check +instruction should branch to recovery code, or zero otherwise. +

+ +
+— Target Hook: rtx TARGET_SCHED_GEN_CHECK (rtx insn, rtx label, int mutate_p)
+

This hook is called by the insn scheduler to generate a pattern for recovery +check instruction. If mutate_p is zero, then insn is a +speculative instruction for which the check should be generated. +label is either a label of a basic block, where recovery code should +be emitted, or a null pointer, when requested check doesn't branch to +recovery code (a simple check). If mutate_p is nonzero, then +a pattern for a branchy check corresponding to a simple check denoted by +insn should be generated. In this case label can't be null. +

+ +
+— Target Hook: int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC (rtx insn)
+

This hook is used as a workaround for +TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD not being +called on the first instruction of the ready list. The hook is used to +discard speculative instruction that stand first in the ready list from +being scheduled on the current cycle. For non-speculative instructions, +the hook should always return nonzero. For example, in the ia64 backend +the hook is used to cancel data speculative insns when the ALAT table +is nearly full. +

+ +
+— Target Hook: void TARGET_SCHED_SET_SCHED_FLAGS (unsigned int *flags, spec_info_t spec_info)
+

This hook is used by the insn scheduler to find out what features should be +enabled/used. flags initially may have either the SCHED_RGN or SCHED_EBB +bit set. This denotes the scheduler pass for which the data should be +provided. The target backend should modify flags by modifying +the bits corresponding to the following features: USE_DEPS_LIST, USE_GLAT, +DETACH_LIFE_INFO, and DO_SPECULATION. For the DO_SPECULATION feature +an additional structure spec_info should be filled by the target. +The structure describes speculation types that can be used in the scheduler. +

+ +
+— Target Hook: int TARGET_SCHED_SMS_RES_MII (struct ddg *g)
+

This hook is called by the swing modulo scheduler to calculate a +resource-based lower bound which is based on the resources available in +the machine and the resources required by each instruction. The target +backend can use g to calculate such bound. A very simple lower +bound will be used in case this hook is not implemented: the total number +of instructions divided by the issue rate. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scopes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scopes.html new file mode 100644 index 0000000..aeffbb3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Scopes.html @@ -0,0 +1,78 @@ + + +Scopes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Types, +Up: Trees +



+
+ +

9.4 Scopes

+ +

+The root of the entire intermediate representation is the variable +global_namespace. This is the namespace specified with :: +in C++ source code. All other namespaces, types, variables, functions, +and so forth can be found starting with this namespace. + +

Besides namespaces, the other high-level scoping construct in C++ is the +class. (Throughout this manual the term class is used to mean the +types referred to in the ANSI/ISO C++ Standard as classes; these include +types defined with the class, struct, and union +keywords.) + +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Sections.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Sections.html new file mode 100644 index 0000000..ba5ac73 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Sections.html @@ -0,0 +1,404 @@ + + +Sections - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Scheduling, +Up: Target Macros +



+
+ +

15.19 Dividing the Output into Sections (Texts, Data, ...)

+ + + +

An object file is divided into sections containing different types of +data. In the most common case, there are three sections: the text +section, which holds instructions and read-only data; the data +section, which holds initialized writable data; and the bss +section, which holds uninitialized data. Some systems have other kinds +of sections. + +

varasm.c provides several well-known sections, such as +text_section, data_section and bss_section. +The normal way of controlling a foo_section variable +is to define the associated FOO_SECTION_ASM_OP macro, +as described below. The macros are only read once, when varasm.c +initializes itself, so their values must be run-time constants. +They may however depend on command-line flags. + +

Note: Some run-time files, such crtstuff.c, also make +use of the FOO_SECTION_ASM_OP macros, and expect them +to be string literals. + +

Some assemblers require a different string to be written every time a +section is selected. If your assembler falls into this category, you +should define the TARGET_ASM_INIT_SECTIONS hook and use +get_unnamed_section to set up the sections. + +

You must always create a text_section, either by defining +TEXT_SECTION_ASM_OP or by initializing text_section +in TARGET_ASM_INIT_SECTIONS. The same is true of +data_section and DATA_SECTION_ASM_OP. If you do not +create a distinct readonly_data_section, the default is to +reuse text_section. + +

All the other varasm.c sections are optional, and are null +if the target does not provide them. + +

+— Macro: TEXT_SECTION_ASM_OP
+

A C expression whose value is a string, including spacing, containing the +assembler operation that should precede instructions and read-only data. +Normally "\t.text" is right. +

+ +
+— Macro: HOT_TEXT_SECTION_NAME
+

If defined, a C string constant for the name of the section containing most +frequently executed functions of the program. If not defined, GCC will provide +a default definition if the target supports named sections. +

+ +
+— Macro: UNLIKELY_EXECUTED_TEXT_SECTION_NAME
+

If defined, a C string constant for the name of the section containing unlikely +executed functions in the program. +

+ +
+— Macro: DATA_SECTION_ASM_OP
+

A C expression whose value is a string, including spacing, containing the +assembler operation to identify the following data as writable initialized +data. Normally "\t.data" is right. +

+ +
+— Macro: SDATA_SECTION_ASM_OP
+

If defined, a C expression whose value is a string, including spacing, +containing the assembler operation to identify the following data as +initialized, writable small data. +

+ +
+— Macro: READONLY_DATA_SECTION_ASM_OP
+

A C expression whose value is a string, including spacing, containing the +assembler operation to identify the following data as read-only initialized +data. +

+ +
+— Macro: BSS_SECTION_ASM_OP
+

If defined, a C expression whose value is a string, including spacing, +containing the assembler operation to identify the following data as +uninitialized global data. If not defined, and neither +ASM_OUTPUT_BSS nor ASM_OUTPUT_ALIGNED_BSS are defined, +uninitialized global data will be output in the data section if +-fno-common is passed, otherwise ASM_OUTPUT_COMMON will be +used. +

+ +
+— Macro: SBSS_SECTION_ASM_OP
+

If defined, a C expression whose value is a string, including spacing, +containing the assembler operation to identify the following data as +uninitialized, writable small data. +

+ +
+— Macro: INIT_SECTION_ASM_OP
+

If defined, a C expression whose value is a string, including spacing, +containing the assembler operation to identify the following data as +initialization code. If not defined, GCC will assume such a section does +not exist. This section has no corresponding init_section +variable; it is used entirely in runtime code. +

+ +
+— Macro: FINI_SECTION_ASM_OP
+

If defined, a C expression whose value is a string, including spacing, +containing the assembler operation to identify the following data as +finalization code. If not defined, GCC will assume such a section does +not exist. This section has no corresponding fini_section +variable; it is used entirely in runtime code. +

+ +
+— Macro: INIT_ARRAY_SECTION_ASM_OP
+

If defined, a C expression whose value is a string, including spacing, +containing the assembler operation to identify the following data as +part of the .init_array (or equivalent) section. If not +defined, GCC will assume such a section does not exist. Do not define +both this macro and INIT_SECTION_ASM_OP. +

+ +
+— Macro: FINI_ARRAY_SECTION_ASM_OP
+

If defined, a C expression whose value is a string, including spacing, +containing the assembler operation to identify the following data as +part of the .fini_array (or equivalent) section. If not +defined, GCC will assume such a section does not exist. Do not define +both this macro and FINI_SECTION_ASM_OP. +

+ +
+— Macro: CRT_CALL_STATIC_FUNCTION (section_op, function)
+

If defined, an ASM statement that switches to a different section +via section_op, calls function, and switches back to +the text section. This is used in crtstuff.c if +INIT_SECTION_ASM_OP or FINI_SECTION_ASM_OP to calls +to initialization and finalization functions from the init and fini +sections. By default, this macro uses a simple function call. Some +ports need hand-crafted assembly code to avoid dependencies on +registers initialized in the function prologue or to ensure that +constant pools don't end up too far way in the text section. +

+ +
+— Macro: TARGET_LIBGCC_SDATA_SECTION
+

If defined, a string which names the section into which small +variables defined in crtstuff and libgcc should go. This is useful +when the target has options for optimizing access to small data, and +you want the crtstuff and libgcc routines to be conservative in what +they expect of your application yet liberal in what your application +expects. For example, for targets with a .sdata section (like +MIPS), you could compile crtstuff with -G 0 so that it doesn't +require small data support from your application, but use this macro +to put small data into .sdata so that your application can +access these variables whether it uses small data or not. +

+ +
+— Macro: FORCE_CODE_SECTION_ALIGN
+

If defined, an ASM statement that aligns a code section to some +arbitrary boundary. This is used to force all fragments of the +.init and .fini sections to have to same alignment +and thus prevent the linker from having to add any padding. +

+ +
+— Macro: JUMP_TABLES_IN_TEXT_SECTION
+

Define this macro to be an expression with a nonzero value if jump +tables (for tablejump insns) should be output in the text +section, along with the assembler instructions. Otherwise, the +readonly data section is used. + +

This macro is irrelevant if there is no separate readonly data section. +

+ +
+— Target Hook: void TARGET_ASM_INIT_SECTIONS (void)
+

Define this hook if you need to do something special to set up the +varasm.c sections, or if your target has some special sections +of its own that you need to create. + +

GCC calls this hook after processing the command line, but before writing +any assembly code, and before calling any of the section-returning hooks +described below. +

+ +
+— Target Hook: TARGET_ASM_RELOC_RW_MASK (void)
+

Return a mask describing how relocations should be treated when +selecting sections. Bit 1 should be set if global relocations +should be placed in a read-write section; bit 0 should be set if +local relocations should be placed in a read-write section. + +

The default version of this function returns 3 when -fpic +is in effect, and 0 otherwise. The hook is typically redefined +when the target cannot support (some kinds of) dynamic relocations +in read-only sections even in executables. +

+ +
+— Target Hook: section * TARGET_ASM_SELECT_SECTION (tree exp, int reloc, unsigned HOST_WIDE_INT align)
+

Return the section into which exp should be placed. You can +assume that exp is either a VAR_DECL node or a constant of +some sort. reloc indicates whether the initial value of exp +requires link-time relocations. Bit 0 is set when variable contains +local relocations only, while bit 1 is set for global relocations. +align is the constant alignment in bits. + +

The default version of this function takes care of putting read-only +variables in readonly_data_section. + +

See also USE_SELECT_SECTION_FOR_FUNCTIONS. +

+ +
+— Macro: USE_SELECT_SECTION_FOR_FUNCTIONS
+

Define this macro if you wish TARGET_ASM_SELECT_SECTION to be called +for FUNCTION_DECLs as well as for variables and constants. + +

In the case of a FUNCTION_DECL, reloc will be zero if the +function has been determined to be likely to be called, and nonzero if +it is unlikely to be called. +

+ +
+— Target Hook: void TARGET_ASM_UNIQUE_SECTION (tree decl, int reloc)
+

Build up a unique section name, expressed as a STRING_CST node, +and assign it to DECL_SECTION_NAME (decl). +As with TARGET_ASM_SELECT_SECTION, reloc indicates whether +the initial value of exp requires link-time relocations. + +

The default version of this function appends the symbol name to the +ELF section name that would normally be used for the symbol. For +example, the function foo would be placed in .text.foo. +Whatever the actual target object format, this is often good enough. +

+ +
+— Target Hook: section * TARGET_ASM_FUNCTION_RODATA_SECTION (tree decl)
+

Return the readonly data section associated with +DECL_SECTION_NAME (decl). +The default version of this function selects .gnu.linkonce.r.name if +the function's section is .gnu.linkonce.t.name, .rodata.name +if function is in .text.name, and the normal readonly-data section +otherwise. +

+ +
+— Target Hook: section * TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode mode, rtx x, unsigned HOST_WIDE_INT align)
+

Return the section into which a constant x, of mode mode, +should be placed. You can assume that x is some kind of +constant in RTL. The argument mode is redundant except in the +case of a const_int rtx. align is the constant alignment +in bits. + +

The default version of this function takes care of putting symbolic +constants in flag_pic mode in data_section and everything +else in readonly_data_section. +

+ +
+— Target Hook: void TARGET_MANGLE_DECL_ASSEMBLER_NAME (tree decl, tree id)
+

Define this hook if you need to postprocess the assembler name generated +by target-independent code. The id provided to this hook will be +the computed name (e.g., the macro DECL_NAME of the decl in C, +or the mangled name of the decl in C++). The return value of the +hook is an IDENTIFIER_NODE for the appropriate mangled name on +your target system. The default implementation of this hook just +returns the id provided. +

+ +
+— Target Hook: void TARGET_ENCODE_SECTION_INFO (tree decl, rtx rtl, int new_decl_p)
+

Define this hook if references to a symbol or a constant must be +treated differently depending on something about the variable or +function named by the symbol (such as what section it is in). + +

The hook is executed immediately after rtl has been created for +decl, which may be a variable or function declaration or +an entry in the constant pool. In either case, rtl is the +rtl in question. Do not use DECL_RTL (decl) +in this hook; that field may not have been initialized yet. + +

In the case of a constant, it is safe to assume that the rtl is +a mem whose address is a symbol_ref. Most decls +will also have this form, but that is not guaranteed. Global +register variables, for instance, will have a reg for their +rtl. (Normally the right thing to do with such unusual rtl is +leave it alone.) + +

The new_decl_p argument will be true if this is the first time +that TARGET_ENCODE_SECTION_INFO has been invoked on this decl. It will +be false for subsequent invocations, which will happen for duplicate +declarations. Whether or not anything must be done for the duplicate +declaration depends on whether the hook examines DECL_ATTRIBUTES. +new_decl_p is always true when the hook is called for a constant. + +

The usual thing for this hook to do is to record flags in the +symbol_ref, using SYMBOL_REF_FLAG or SYMBOL_REF_FLAGS. +Historically, the name string was modified if it was necessary to +encode more than one bit of information, but this practice is now +discouraged; use SYMBOL_REF_FLAGS. + +

The default definition of this hook, default_encode_section_info +in varasm.c, sets a number of commonly-useful bits in +SYMBOL_REF_FLAGS. Check whether the default does what you need +before overriding it. +

+ +
+— Target Hook: const char *TARGET_STRIP_NAME_ENCODING (const char *name)
+

Decode name and return the real name part, sans +the characters that TARGET_ENCODE_SECTION_INFO +may have added. +

+ +
+— Target Hook: bool TARGET_IN_SMALL_DATA_P (tree exp)
+

Returns true if exp should be placed into a “small data” section. +The default version of this hook always returns false. +

+ +
+— Variable: Target Hook bool TARGET_HAVE_SRODATA_SECTION
+

Contains the value true if the target places read-only +“small data” into a separate section. The default value is false. +

+ +
+— Target Hook: bool TARGET_BINDS_LOCAL_P (tree exp)
+

Returns true if exp names an object for which name resolution +rules must resolve to the current “module” (dynamic shared library +or executable image). + +

The default version of this hook implements the name resolution rules +for ELF, which has a looser model of global name binding than other +currently supported object file formats. +

+ +
+— Variable: Target Hook bool TARGET_HAVE_TLS
+

Contains the value true if the target supports thread-local storage. +The default value is false. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Selection-Statements.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Selection-Statements.html new file mode 100644 index 0000000..b1cdf77 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Selection-Statements.html @@ -0,0 +1,74 @@ + + +Selection Statements - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Loops, +Up: Statements +



+
+ +
10.2.4.5 Selection Statements
+ +

+A simple selection statement, such as the C if statement, is +expressed in GIMPLE using a void COND_EXPR. If only one branch is +used, the other is filled with an empty statement. + +

Normally, the condition expression is reduced to a simple comparison. If +it is a shortcut (&& or ||) expression, however, we try to +break up the if into multiple ifs so that the implied shortcut +is taken directly, much like the transformation done by do_jump in +the RTL expander. + +

A SWITCH_EXPR in GIMPLE contains the condition and a +TREE_VEC of CASE_LABEL_EXPRs describing the case values +and corresponding LABEL_DECLs to jump to. The body of the +switch is moved after the SWITCH_EXPR. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Sharing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Sharing.html new file mode 100644 index 0000000..8e33794 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Sharing.html @@ -0,0 +1,125 @@ + + +Sharing - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Calls, +Up: RTL +



+
+ +

12.20 Structure Sharing Assumptions

+ +

+The compiler assumes that certain kinds of RTL expressions are unique; +there do not exist two distinct objects representing the same value. +In other cases, it makes an opposite assumption: that no RTL expression +object of a certain kind appears in more than one place in the +containing structure. + +

These assumptions refer to a single function; except for the RTL +objects that describe global variables and external functions, +and a few standard objects such as small integer constants, +no RTL objects are common to two functions. + + + +

  • Each pseudo-register has only a single reg object to represent it, +and therefore only a single machine mode. + +

  • For any symbolic label, there is only one symbol_ref object +referring to it. + +

  • All const_int expressions with equal values are shared. + +

  • There is only one pc expression. + +

  • There is only one cc0 expression. + +

  • There is only one const_double expression with value 0 for +each floating point mode. Likewise for values 1 and 2. + +

  • There is only one const_vector expression with value 0 for +each vector mode, be it an integer or a double constant vector. + +

  • No label_ref or scratch appears in more than one place in +the RTL structure; in other words, it is safe to do a tree-walk of all +the insns in the function and assume that each time a label_ref +or scratch is seen it is distinct from all others that are seen. + +

  • Only one mem object is normally created for each static +variable or stack slot, so these objects are frequently shared in all +the places they appear. However, separate but equal objects for these +variables are occasionally made. + +

  • When a single asm statement has multiple output operands, a +distinct asm_operands expression is made for each output operand. +However, these all share the vector which contains the sequence of input +operands. This sharing is used later on to test whether two +asm_operands expressions come from the same statement, so all +optimizations must carefully preserve the sharing if they copy the +vector at all. + +
  • No RTL object appears in more than one place in the RTL structure +except as described above. Many passes of the compiler rely on this +by assuming that they can modify RTL objects in place without unwanted +side-effects on other insns. + +

  • During initial RTL generation, shared structure is freely introduced. +After all the RTL for a function has been generated, all shared +structure is copied by unshare_all_rtl in emit-rtl.c, +after which the above rules are guaranteed to be followed. + +

  • During the combiner pass, shared structure within an insn can exist +temporarily. However, the shared structure is copied before the +combiner is finished with the insn. This is done by calling +copy_rtx_if_shared, which is a subroutine of +unshare_all_rtl. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Side-Effects.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Side-Effects.html new file mode 100644 index 0000000..3c28a64 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Side-Effects.html @@ -0,0 +1,369 @@ + + +Side Effects - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: RTL Declarations, +Up: RTL +



+
+ +

12.15 Side Effect Expressions

+ +

+The expression codes described so far represent values, not actions. +But machine instructions never produce values; they are meaningful +only for their side effects on the state of the machine. Special +expression codes are used to represent side effects. + +

The body of an instruction is always one of these side effect codes; +the codes described above, which represent values, appear only as +the operands of these. + + + +

(set lval x)
Represents the action of storing the value of x into the place +represented by lval. lval must be an expression +representing a place that can be stored in: reg (or subreg, +strict_low_part or zero_extract), mem, pc, +parallel, or cc0. + +

If lval is a reg, subreg or mem, it has a +machine mode; then x must be valid for that mode. + +

If lval is a reg whose machine mode is less than the full +width of the register, then it means that the part of the register +specified by the machine mode is given the specified value and the +rest of the register receives an undefined value. Likewise, if +lval is a subreg whose machine mode is narrower than +the mode of the register, the rest of the register can be changed in +an undefined way. + +

If lval is a strict_low_part of a subreg, then the part +of the register specified by the machine mode of the subreg is +given the value x and the rest of the register is not changed. + +

If lval is a zero_extract, then the referenced part of +the bit-field (a memory or register reference) specified by the +zero_extract is given the value x and the rest of the +bit-field is not changed. Note that sign_extract can not +appear in lval. + +

If lval is (cc0), it has no machine mode, and x may +be either a compare expression or a value that may have any mode. +The latter case represents a “test” instruction. The expression +(set (cc0) (reg:m n)) is equivalent to +(set (cc0) (compare (reg:m n) (const_int 0))). +Use the former expression to save space during the compilation. + +

If lval is a parallel, it is used to represent the case of +a function returning a structure in multiple registers. Each element +of the parallel is an expr_list whose first operand is a +reg and whose second operand is a const_int representing the +offset (in bytes) into the structure at which the data in that register +corresponds. The first element may be null to indicate that the structure +is also passed partly in memory. + +

If lval is (pc), we have a jump instruction, and the +possibilities for x are very limited. It may be a +label_ref expression (unconditional jump). It may be an +if_then_else (conditional jump), in which case either the +second or the third operand must be (pc) (for the case which +does not jump) and the other of the two must be a label_ref +(for the case which does jump). x may also be a mem or +(plus:SI (pc) y), where y may be a reg or a +mem; these unusual patterns are used to represent jumps through +branch tables. + +

If lval is neither (cc0) nor (pc), the mode of +lval must not be VOIDmode and the mode of x must be +valid for the mode of lval. + +

lval is customarily accessed with the SET_DEST macro and +x with the SET_SRC macro. + +


(return)
As the sole expression in a pattern, represents a return from the +current function, on machines where this can be done with one +instruction, such as VAXen. On machines where a multi-instruction +“epilogue” must be executed in order to return from the function, +returning is done by jumping to a label which precedes the epilogue, and +the return expression code is never used. + +

Inside an if_then_else expression, represents the value to be +placed in pc to return to the caller. + +

Note that an insn pattern of (return) is logically equivalent to +(set (pc) (return)), but the latter form is never used. + +


(call function nargs)
Represents a function call. function is a mem expression +whose address is the address of the function to be called. +nargs is an expression which can be used for two purposes: on +some machines it represents the number of bytes of stack argument; on +others, it represents the number of argument registers. + +

Each machine has a standard machine mode which function must +have. The machine description defines macro FUNCTION_MODE to +expand into the requisite mode name. The purpose of this mode is to +specify what kind of addressing is allowed, on machines where the +allowed kinds of addressing depend on the machine mode being +addressed. + +


(clobber x)
Represents the storing or possible storing of an unpredictable, +undescribed value into x, which must be a reg, +scratch, parallel or mem expression. + +

One place this is used is in string instructions that store standard +values into particular hard registers. It may not be worth the +trouble to describe the values that are stored, but it is essential to +inform the compiler that the registers will be altered, lest it +attempt to keep data in them across the string instruction. + +

If x is (mem:BLK (const_int 0)) or +(mem:BLK (scratch)), it means that all memory +locations must be presumed clobbered. If x is a parallel, +it has the same meaning as a parallel in a set expression. + +

Note that the machine description classifies certain hard registers as +“call-clobbered”. All function call instructions are assumed by +default to clobber these registers, so there is no need to use +clobber expressions to indicate this fact. Also, each function +call is assumed to have the potential to alter any memory location, +unless the function is declared const. + +

If the last group of expressions in a parallel are each a +clobber expression whose arguments are reg or +match_scratch (see RTL Template) expressions, the combiner +phase can add the appropriate clobber expressions to an insn it +has constructed when doing so will cause a pattern to be matched. + +

This feature can be used, for example, on a machine that whose multiply +and add instructions don't use an MQ register but which has an +add-accumulate instruction that does clobber the MQ register. Similarly, +a combined instruction might require a temporary register while the +constituent instructions might not. + +

When a clobber expression for a register appears inside a +parallel with other side effects, the register allocator +guarantees that the register is unoccupied both before and after that +insn. However, the reload phase may allocate a register used for one of +the inputs unless the & constraint is specified for the selected +alternative (see Modifiers). You can clobber either a specific hard +register, a pseudo register, or a scratch expression; in the +latter two cases, GCC will allocate a hard register that is available +there for use as a temporary. + +

For instructions that require a temporary register, you should use +scratch instead of a pseudo-register because this will allow the +combiner phase to add the clobber when required. You do this by +coding (clobber (match_scratch ...)). If you do +clobber a pseudo register, use one which appears nowhere else—generate +a new one each time. Otherwise, you may confuse CSE. + +

There is one other known use for clobbering a pseudo register in a +parallel: when one of the input operands of the insn is also +clobbered by the insn. In this case, using the same pseudo register in +the clobber and elsewhere in the insn produces the expected results. + +


(use x)
Represents the use of the value of x. It indicates that the +value in x at this point in the program is needed, even though +it may not be apparent why this is so. Therefore, the compiler will +not attempt to delete previous instructions whose only effect is to +store a value in x. x must be a reg expression. + +

In some situations, it may be tempting to add a use of a +register in a parallel to describe a situation where the value +of a special register will modify the behavior of the instruction. +An hypothetical example might be a pattern for an addition that can +either wrap around or use saturating addition depending on the value +of a special control register: + +

          (parallel [(set (reg:SI 2) (unspec:SI [(reg:SI 3)
+                                                 (reg:SI 4)] 0))
+                     (use (reg:SI 1))])
+     
+

This will not work, several of the optimizers only look at expressions +locally; it is very likely that if you have multiple insns with +identical inputs to the unspec, they will be optimized away even +if register 1 changes in between. + +

This means that use can only be used to describe +that the register is live. You should think twice before adding +use statements, more often you will want to use unspec +instead. The use RTX is most commonly useful to describe that +a fixed register is implicitly used in an insn. It is also safe to use +in patterns where the compiler knows for other reasons that the result +of the whole pattern is variable, such as movmemm or +call patterns. + +

During the reload phase, an insn that has a use as pattern +can carry a reg_equal note. These use insns will be deleted +before the reload phase exits. + +

During the delayed branch scheduling phase, x may be an insn. +This indicates that x previously was located at this place in the +code and its data dependencies need to be taken into account. These +use insns will be deleted before the delayed branch scheduling +phase exits. + +


(parallel [x0 x1 ...])
Represents several side effects performed in parallel. The square +brackets stand for a vector; the operand of parallel is a +vector of expressions. x0, x1 and so on are individual +side effect expressions—expressions of code set, call, +return, clobber or use. + +

“In parallel” means that first all the values used in the individual +side-effects are computed, and second all the actual side-effects are +performed. For example, + +

          (parallel [(set (reg:SI 1) (mem:SI (reg:SI 1)))
+                     (set (mem:SI (reg:SI 1)) (reg:SI 1))])
+     
+

says unambiguously that the values of hard register 1 and the memory +location addressed by it are interchanged. In both places where +(reg:SI 1) appears as a memory address it refers to the value +in register 1 before the execution of the insn. + +

It follows that it is incorrect to use parallel and +expect the result of one set to be available for the next one. +For example, people sometimes attempt to represent a jump-if-zero +instruction this way: + +

          (parallel [(set (cc0) (reg:SI 34))
+                     (set (pc) (if_then_else
+                                  (eq (cc0) (const_int 0))
+                                  (label_ref ...)
+                                  (pc)))])
+     
+

But this is incorrect, because it says that the jump condition depends +on the condition code value before this instruction, not on the +new value that is set by this instruction. + +

Peephole optimization, which takes place together with final assembly +code output, can produce insns whose patterns consist of a parallel +whose elements are the operands needed to output the resulting +assembler code—often reg, mem or constant expressions. +This would not be well-formed RTL at any other stage in compilation, +but it is ok then because no further optimization remains to be done. +However, the definition of the macro NOTICE_UPDATE_CC, if +any, must deal with such insns if you define any peephole optimizations. + +


(cond_exec [cond expr])
Represents a conditionally executed expression. The expr is +executed only if the cond is nonzero. The cond expression +must not have side-effects, but the expr may very well have +side-effects. + +


(sequence [insns ...])
Represents a sequence of insns. Each of the insns that appears +in the vector is suitable for appearing in the chain of insns, so it +must be an insn, jump_insn, call_insn, +code_label, barrier or note. + +

A sequence RTX is never placed in an actual insn during RTL +generation. It represents the sequence of insns that result from a +define_expand before those insns are passed to +emit_insn to insert them in the chain of insns. When actually +inserted, the individual sub-insns are separated out and the +sequence is forgotten. + +

After delay-slot scheduling is completed, an insn and all the insns that +reside in its delay slots are grouped together into a sequence. +The insn requiring the delay slot is the first insn in the vector; +subsequent insns are to be placed in the delay slot. + +

INSN_ANNULLED_BRANCH_P is set on an insn in a delay slot to +indicate that a branch insn should be used that will conditionally annul +the effect of the insns in the delay slots. In such a case, +INSN_FROM_TARGET_P indicates that the insn is from the target of +the branch and should be executed only if the branch is taken; otherwise +the insn should be executed only if the branch is not taken. +See Delay Slots. +

+ +

These expression codes appear in place of a side effect, as the body of +an insn, though strictly speaking they do not always describe side +effects as such: + + + +

(asm_input s)
Represents literal assembler code as described by the string s. + +


(unspec [operands ...] index)
(unspec_volatile [operands ...] index)
Represents a machine-specific operation on operands. index +selects between multiple machine-specific operations. +unspec_volatile is used for volatile operations and operations +that may trap; unspec is used for other operations. + +

These codes may appear inside a pattern of an +insn, inside a parallel, or inside an expression. + +


(addr_vec:m [lr0 lr1 ...])
Represents a table of jump addresses. The vector elements lr0, +etc., are label_ref expressions. The mode m specifies +how much space is given to each address; normally m would be +Pmode. + +


(addr_diff_vec:m base [lr0 lr1 ...] min max flags)
Represents a table of jump addresses expressed as offsets from +base. The vector elements lr0, etc., are label_ref +expressions and so is base. The mode m specifies how much +space is given to each address-difference. min and max +are set up by branch shortening and hold a label with a minimum and a +maximum address, respectively. flags indicates the relative +position of base, min and max to the containing insn +and of min and max to base. See rtl.def for details. + +


(prefetch:m addr rw locality)
Represents prefetch of memory at address addr. +Operand rw is 1 if the prefetch is for data to be written, 0 otherwise; +targets that do not support write prefetches should treat this as a normal +prefetch. +Operand locality specifies the amount of temporal locality; 0 if there +is none or 1, 2, or 3 for increasing levels of temporal locality; +targets that do not support locality hints should ignore this. + +

This insn is used to minimize cache-miss latency by moving data into a +cache before it is accessed. It should use only non-faulting data prefetch +instructions. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Simple-Constraints.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Simple-Constraints.html new file mode 100644 index 0000000..a28f523 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Simple-Constraints.html @@ -0,0 +1,307 @@ + + +Simple Constraints - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Constraints +



+
+ +

14.8.1 Simple Constraints

+ +

+The simplest kind of constraint is a string full of letters, each of +which describes one kind of operand that is permitted. Here are +the letters that are allowed: + +

+
whitespace
Whitespace characters are ignored and can be inserted at any position +except the first. This enables each alternative for different operands to +be visually aligned in the machine description even if they have different +number of constraints and modifiers. + +


m
A memory operand is allowed, with any kind of address that the machine +supports in general. + +


o
A memory operand is allowed, but only if the address is +offsettable. This means that adding a small integer (actually, +the width in bytes of the operand, as determined by its machine mode) +may be added to the address and the result is also a valid memory +address. + +

For example, an address which is constant is offsettable; so is an +address that is the sum of a register and a constant (as long as a +slightly larger constant is also within the range of address-offsets +supported by the machine); but an autoincrement or autodecrement +address is not offsettable. More complicated indirect/indexed +addresses may or may not be offsettable depending on the other +addressing modes that the machine supports. + +

Note that in an output operand which can be matched by another +operand, the constraint letter o is valid only when accompanied +by both < (if the target machine has predecrement addressing) +and > (if the target machine has preincrement addressing). + +


V
A memory operand that is not offsettable. In other words, anything that +would fit the m constraint but not the o constraint. + +


<
A memory operand with autodecrement addressing (either predecrement or +postdecrement) is allowed. + +


>
A memory operand with autoincrement addressing (either preincrement or +postincrement) is allowed. + +


r
A register operand is allowed provided that it is in a general +register. + +


i
An immediate integer operand (one with constant value) is allowed. +This includes symbolic constants whose values will be known only at +assembly time or later. + +


n
An immediate integer operand with a known numeric value is allowed. +Many systems cannot support assembly-time constants for operands less +than a word wide. Constraints for these operands should use n +rather than i. + +


I, J, K, ... P
Other letters in the range I through P may be defined in +a machine-dependent fashion to permit immediate integer operands with +explicit integer values in specified ranges. For example, on the +68000, I is defined to stand for the range of values 1 to 8. +This is the range permitted as a shift count in the shift +instructions. + +


E
An immediate floating operand (expression code const_double) is +allowed, but only if the target floating point format is the same as +that of the host machine (on which the compiler is running). + +


F
An immediate floating operand (expression code const_double or +const_vector) is allowed. + +


G, H
G and H may be defined in a machine-dependent fashion to +permit immediate floating operands in particular ranges of values. + +


s
An immediate integer operand whose value is not an explicit integer is +allowed. + +

This might appear strange; if an insn allows a constant operand with a +value not known at compile time, it certainly must allow any known +value. So why use s instead of i? Sometimes it allows +better code to be generated. + +

For example, on the 68000 in a fullword instruction it is possible to +use an immediate operand; but if the immediate value is between −128 +and 127, better code results from loading the value into a register and +using the register. This is because the load into the register can be +done with a moveq instruction. We arrange for this to happen +by defining the letter K to mean “any integer outside the +range −128 to 127”, and then specifying Ks in the operand +constraints. + +


g
Any register, memory or immediate integer operand is allowed, except for +registers that are not general registers. + +


X
Any operand whatsoever is allowed, even if it does not satisfy +general_operand. This is normally used in the constraint of +a match_scratch when certain alternatives will not actually +require a scratch register. + +


0, 1, 2, ... 9
An operand that matches the specified operand number is allowed. If a +digit is used together with letters within the same alternative, the +digit should come last. + +

This number is allowed to be more than a single digit. If multiple +digits are encountered consecutively, they are interpreted as a single +decimal integer. There is scant chance for ambiguity, since to-date +it has never been desirable that 10 be interpreted as matching +either operand 1 or operand 0. Should this be desired, one +can use multiple alternatives instead. + +

This is called a matching constraint and what it really means is +that the assembler has only a single operand that fills two roles +considered separate in the RTL insn. For example, an add insn has two +input operands and one output operand in the RTL, but on most CISC +machines an add instruction really has only two operands, one of them an +input-output operand: + +

          addl #35,r12
+     
+

Matching constraints are used in these circumstances. +More precisely, the two operands that match must include one input-only +operand and one output-only operand. Moreover, the digit must be a +smaller number than the number of the operand that uses it in the +constraint. + +

For operands to match in a particular case usually means that they +are identical-looking RTL expressions. But in a few special cases +specific kinds of dissimilarity are allowed. For example, *x +as an input operand will match *x++ as an output operand. +For proper results in such cases, the output template should always +use the output-operand's number when printing the operand. + +


p
An operand that is a valid memory address is allowed. This is +for “load address” and “push address” instructions. + +

p in the constraint must be accompanied by address_operand +as the predicate in the match_operand. This predicate interprets +the mode specified in the match_operand as the mode of the memory +reference for which the address would be valid. + +


other-letters
Other letters can be defined in machine-dependent fashion to stand for +particular classes of registers or other arbitrary operand types. +d, a and f are defined on the 68000/68020 to stand +for data, address and floating point registers. +
+ +

In order to have valid assembler code, each operand must satisfy +its constraint. But a failure to do so does not prevent the pattern +from applying to an insn. Instead, it directs the compiler to modify +the code so that the constraint will be satisfied. Usually this is +done by copying an operand into a register. + +

Contrast, therefore, the two instruction patterns that follow: + +

     (define_insn ""
+       [(set (match_operand:SI 0 "general_operand" "=r")
+             (plus:SI (match_dup 0)
+                      (match_operand:SI 1 "general_operand" "r")))]
+       ""
+       "...")
+
+

which has two operands, one of which must appear in two places, and + +

     (define_insn ""
+       [(set (match_operand:SI 0 "general_operand" "=r")
+             (plus:SI (match_operand:SI 1 "general_operand" "0")
+                      (match_operand:SI 2 "general_operand" "r")))]
+       ""
+       "...")
+
+

which has three operands, two of which are required by a constraint to be +identical. If we are considering an insn of the form + +

     (insn n prev next
+       (set (reg:SI 3)
+            (plus:SI (reg:SI 6) (reg:SI 109)))
+       ...)
+
+

the first pattern would not apply at all, because this insn does not +contain two identical subexpressions in the right place. The pattern would +say, “That does not look like an add instruction; try other patterns”. +The second pattern would say, “Yes, that's an add instruction, but there +is something wrong with it”. It would direct the reload pass of the +compiler to generate additional insns to make the constraint true. The +results might look like this: + +

     (insn n2 prev n
+       (set (reg:SI 3) (reg:SI 6))
+       ...)
+     
+     (insn n n2 next
+       (set (reg:SI 3)
+            (plus:SI (reg:SI 3) (reg:SI 109)))
+       ...)
+
+

It is up to you to make sure that each operand, in each pattern, has +constraints that can handle any RTL expression that could be present for +that operand. (When multiple alternatives are in use, each pattern must, +for each possible combination of operand expressions, have at least one +alternative which can handle that combination of operands.) The +constraints don't need to allow any possible operand—when this is +the case, they do not constrain—but they must at least point the way to +reloading any possible operand so that it will fit. + +

    +
  • If the constraint accepts whatever operands the predicate permits, +there is no problem: reloading is never necessary for this operand. + +

    For example, an operand whose constraints permit everything except +registers is safe provided its predicate rejects registers. + +

    An operand whose predicate accepts only constant values is safe +provided its constraints include the letter i. If any possible +constant value is accepted, then nothing less than i will do; +if the predicate is more selective, then the constraints may also be +more selective. + +

  • Any operand expression can be reloaded by copying it into a register. +So if an operand's constraints allow some kind of register, it is +certain to be safe. It need not permit all classes of registers; the +compiler knows how to copy a register into another register of the +proper class in order to make an instruction valid. + +

  • A nonoffsettable memory reference can be reloaded by copying the +address into a register. So if the constraint uses the letter +o, all memory references are taken care of. + +
  • A constant operand can be reloaded by allocating space in memory to +hold it as preinitialized data. Then the memory reference can be used +in place of the constant. So if the constraint uses the letters +o or m, constant operands are not a problem. + +
  • If the constraint permits a constant and a pseudo register used in an insn +was not allocated to a hard register and is equivalent to a constant, +the register will be replaced with the constant. If the predicate does +not permit a constant and the insn is re-recognized for some reason, the +compiler will crash. Thus the predicate must always recognize any +objects allowed by the constraint. +
+ +

If the operand's predicate can recognize registers, but the constraint does +not permit them, it can make the compiler crash. When this operand happens +to be a register, the reload pass will be stymied, because it does not know +how to copy a register temporarily into memory. + +

If the predicate accepts a unary operator, the constraint applies to the +operand. For example, the MIPS processor at ISA level 3 supports an +instruction which adds two registers in SImode to produce a +DImode result, but only if the registers are correctly sign +extended. This predicate for the input operands accepts a +sign_extend of an SImode register. Write the constraint +to indicate the type of register that is required for the operand of the +sign_extend. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Soft-float-library-routines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Soft-float-library-routines.html new file mode 100644 index 0000000..fdb1e27 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Soft-float-library-routines.html @@ -0,0 +1,353 @@ + + +Soft float library routines - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+ +

4.2 Routines for floating point emulation

+ +

+The software floating point library is used on machines which do not +have hardware support for floating point. It is also used whenever +-msoft-float is used to disable generation of floating point +instructions. (Not all targets support this switch.) + +

For compatibility with other compilers, the floating point emulation +routines can be renamed with the DECLARE_LIBRARY_RENAMES macro +(see Library Calls). In this section, the default names are used. + +

Presently the library does not support XFmode, which is used +for long double on some architectures. + +

4.2.1 Arithmetic functions

+ +
+— Runtime Function: float __addsf3 (float a, float b)
+— Runtime Function: double __adddf3 (double a, double b)
+— Runtime Function: long double __addtf3 (long double a, long double b)
+— Runtime Function: long double __addxf3 (long double a, long double b)
+

These functions return the sum of a and b. +

+ +
+— Runtime Function: float __subsf3 (float a, float b)
+— Runtime Function: double __subdf3 (double a, double b)
+— Runtime Function: long double __subtf3 (long double a, long double b)
+— Runtime Function: long double __subxf3 (long double a, long double b)
+

These functions return the difference between b and a; +that is, a - b. +

+ +
+— Runtime Function: float __mulsf3 (float a, float b)
+— Runtime Function: double __muldf3 (double a, double b)
+— Runtime Function: long double __multf3 (long double a, long double b)
+— Runtime Function: long double __mulxf3 (long double a, long double b)
+

These functions return the product of a and b. +

+ +
+— Runtime Function: float __divsf3 (float a, float b)
+— Runtime Function: double __divdf3 (double a, double b)
+— Runtime Function: long double __divtf3 (long double a, long double b)
+— Runtime Function: long double __divxf3 (long double a, long double b)
+

These functions return the quotient of a and b; that is, +a / b. +

+ +
+— Runtime Function: float __negsf2 (float a)
+— Runtime Function: double __negdf2 (double a)
+— Runtime Function: long double __negtf2 (long double a)
+— Runtime Function: long double __negxf2 (long double a)
+

These functions return the negation of a. They simply flip the +sign bit, so they can produce negative zero and negative NaN. +

+ +

4.2.2 Conversion functions

+ +
+— Runtime Function: double __extendsfdf2 (float a)
+— Runtime Function: long double __extendsftf2 (float a)
+— Runtime Function: long double __extendsfxf2 (float a)
+— Runtime Function: long double __extenddftf2 (double a)
+— Runtime Function: long double __extenddfxf2 (double a)
+

These functions extend a to the wider mode of their return +type. +

+ +
+— Runtime Function: double __truncxfdf2 (long double a)
+— Runtime Function: double __trunctfdf2 (long double a)
+— Runtime Function: float __truncxfsf2 (long double a)
+— Runtime Function: float __trunctfsf2 (long double a)
+— Runtime Function: float __truncdfsf2 (double a)
+

These functions truncate a to the narrower mode of their return +type, rounding toward zero. +

+ +
+— Runtime Function: int __fixsfsi (float a)
+— Runtime Function: int __fixdfsi (double a)
+— Runtime Function: int __fixtfsi (long double a)
+— Runtime Function: int __fixxfsi (long double a)
+

These functions convert a to a signed integer, rounding toward zero. +

+ +
+— Runtime Function: long __fixsfdi (float a)
+— Runtime Function: long __fixdfdi (double a)
+— Runtime Function: long __fixtfdi (long double a)
+— Runtime Function: long __fixxfdi (long double a)
+

These functions convert a to a signed long, rounding toward zero. +

+ +
+— Runtime Function: long long __fixsfti (float a)
+— Runtime Function: long long __fixdfti (double a)
+— Runtime Function: long long __fixtfti (long double a)
+— Runtime Function: long long __fixxfti (long double a)
+

These functions convert a to a signed long long, rounding toward zero. +

+ +
+— Runtime Function: unsigned int __fixunssfsi (float a)
+— Runtime Function: unsigned int __fixunsdfsi (double a)
+— Runtime Function: unsigned int __fixunstfsi (long double a)
+— Runtime Function: unsigned int __fixunsxfsi (long double a)
+

These functions convert a to an unsigned integer, rounding +toward zero. Negative values all become zero. +

+ +
+— Runtime Function: unsigned long __fixunssfdi (float a)
+— Runtime Function: unsigned long __fixunsdfdi (double a)
+— Runtime Function: unsigned long __fixunstfdi (long double a)
+— Runtime Function: unsigned long __fixunsxfdi (long double a)
+

These functions convert a to an unsigned long, rounding +toward zero. Negative values all become zero. +

+ +
+— Runtime Function: unsigned long long __fixunssfti (float a)
+— Runtime Function: unsigned long long __fixunsdfti (double a)
+— Runtime Function: unsigned long long __fixunstfti (long double a)
+— Runtime Function: unsigned long long __fixunsxfti (long double a)
+

These functions convert a to an unsigned long long, rounding +toward zero. Negative values all become zero. +

+ +
+— Runtime Function: float __floatsisf (int i)
+— Runtime Function: double __floatsidf (int i)
+— Runtime Function: long double __floatsitf (int i)
+— Runtime Function: long double __floatsixf (int i)
+

These functions convert i, a signed integer, to floating point. +

+ +
+— Runtime Function: float __floatdisf (long i)
+— Runtime Function: double __floatdidf (long i)
+— Runtime Function: long double __floatditf (long i)
+— Runtime Function: long double __floatdixf (long i)
+

These functions convert i, a signed long, to floating point. +

+ +
+— Runtime Function: float __floattisf (long long i)
+— Runtime Function: double __floattidf (long long i)
+— Runtime Function: long double __floattitf (long long i)
+— Runtime Function: long double __floattixf (long long i)
+

These functions convert i, a signed long long, to floating point. +

+ +
+— Runtime Function: float __floatunsisf (unsigned int i)
+— Runtime Function: double __floatunsidf (unsigned int i)
+— Runtime Function: long double __floatunsitf (unsigned int i)
+— Runtime Function: long double __floatunsixf (unsigned int i)
+

These functions convert i, an unsigned integer, to floating point. +

+ +
+— Runtime Function: float __floatundisf (unsigned long i)
+— Runtime Function: double __floatundidf (unsigned long i)
+— Runtime Function: long double __floatunditf (unsigned long i)
+— Runtime Function: long double __floatundixf (unsigned long i)
+

These functions convert i, an unsigned long, to floating point. +

+ +
+— Runtime Function: float __floatuntisf (unsigned long long i)
+— Runtime Function: double __floatuntidf (unsigned long long i)
+— Runtime Function: long double __floatuntitf (unsigned long long i)
+— Runtime Function: long double __floatuntixf (unsigned long long i)
+

These functions convert i, an unsigned long long, to floating point. +

+ +

4.2.3 Comparison functions

+ +

There are two sets of basic comparison functions. + +

+— Runtime Function: int __cmpsf2 (float a, float b)
+— Runtime Function: int __cmpdf2 (double a, double b)
+— Runtime Function: int __cmptf2 (long double a, long double b)
+

These functions calculate a <=> b. That is, if a is less +than b, they return −1; if a is greater than b, they +return 1; and if a and b are equal they return 0. If +either argument is NaN they return 1, but you should not rely on this; +if NaN is a possibility, use one of the higher-level comparison +functions. +

+ +
+— Runtime Function: int __unordsf2 (float a, float b)
+— Runtime Function: int __unorddf2 (double a, double b)
+— Runtime Function: int __unordtf2 (long double a, long double b)
+

These functions return a nonzero value if either argument is NaN, otherwise 0. +

+ +

There is also a complete group of higher level functions which +correspond directly to comparison operators. They implement the ISO C +semantics for floating-point comparisons, taking NaN into account. +Pay careful attention to the return values defined for each set. +Under the hood, all of these routines are implemented as + +

       if (__unordXf2 (a, b))
+         return E;
+       return __cmpXf2 (a, b);
+
+

where E is a constant chosen to give the proper behavior for +NaN. Thus, the meaning of the return value is different for each set. +Do not rely on this implementation; only the semantics documented +below are guaranteed. + +

+— Runtime Function: int __eqsf2 (float a, float b)
+— Runtime Function: int __eqdf2 (double a, double b)
+— Runtime Function: int __eqtf2 (long double a, long double b)
+

These functions return zero if neither argument is NaN, and a and +b are equal. +

+ +
+— Runtime Function: int __nesf2 (float a, float b)
+— Runtime Function: int __nedf2 (double a, double b)
+— Runtime Function: int __netf2 (long double a, long double b)
+

These functions return a nonzero value if either argument is NaN, or +if a and b are unequal. +

+ +
+— Runtime Function: int __gesf2 (float a, float b)
+— Runtime Function: int __gedf2 (double a, double b)
+— Runtime Function: int __getf2 (long double a, long double b)
+

These functions return a value greater than or equal to zero if +neither argument is NaN, and a is greater than or equal to +b. +

+ +
+— Runtime Function: int __ltsf2 (float a, float b)
+— Runtime Function: int __ltdf2 (double a, double b)
+— Runtime Function: int __lttf2 (long double a, long double b)
+

These functions return a value less than zero if neither argument is +NaN, and a is strictly less than b. +

+ +
+— Runtime Function: int __lesf2 (float a, float b)
+— Runtime Function: int __ledf2 (double a, double b)
+— Runtime Function: int __letf2 (long double a, long double b)
+

These functions return a value less than or equal to zero if neither +argument is NaN, and a is less than or equal to b. +

+ +
+— Runtime Function: int __gtsf2 (float a, float b)
+— Runtime Function: int __gtdf2 (double a, double b)
+— Runtime Function: int __gttf2 (long double a, long double b)
+

These functions return a value greater than zero if neither argument +is NaN, and a is strictly greater than b. +

+ +

4.2.4 Other floating-point functions

+ +
+— Runtime Function: float __powisf2 (float a, int b)
+— Runtime Function: double __powidf2 (double a, int b)
+— Runtime Function: long double __powitf2 (long double a, int b)
+— Runtime Function: long double __powixf2 (long double a, int b)
+

These functions convert raise a to the power b. +

+ +
+— Runtime Function: complex float __mulsc3 (float a, float b, float c, float d)
+— Runtime Function: complex double __muldc3 (double a, double b, double c, double d)
+— Runtime Function: complex long double __multc3 (long double a, long double b, long double c, long double d)
+— Runtime Function: complex long double __mulxc3 (long double a, long double b, long double c, long double d)
+

These functions return the product of a + ib and +c + id, following the rules of C99 Annex G. +

+ +
+— Runtime Function: complex float __divsc3 (float a, float b, float c, float d)
+— Runtime Function: complex double __divdc3 (double a, double b, double c, double d)
+— Runtime Function: complex long double __divtc3 (long double a, long double b, long double c, long double d)
+— Runtime Function: complex long double __divxc3 (long double a, long double b, long double c, long double d)
+

These functions return the quotient of a + ib and +c + id (i.e., (a + ib) / (c ++ id)), following the rules of C99 Annex G. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Source-Tree.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Source-Tree.html new file mode 100644 index 0000000..f848a98 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Source-Tree.html @@ -0,0 +1,72 @@ + + +Source Tree - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Languages, +Up: Top +



+
+ +

6 Source Tree Structure and Build System

+ +

This chapter describes the structure of the GCC source tree, and how +GCC is built. The user documentation for building and installing GCC +is in a separate manual (http://gcc.gnu.org/install/), with +which it is presumed that you are familiar. + +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Special-Accessors.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Special-Accessors.html new file mode 100644 index 0000000..3ef6c88 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Special-Accessors.html @@ -0,0 +1,169 @@ + + +Special Accessors - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Accessors, +Up: RTL +



+
+ +

12.4 Access to Special Operands

+ +

+Some RTL nodes have special annotations associated with them. + +

+
MEM
+ + +
MEM_ALIAS_SET (x)
If 0, x is not in any alias set, and may alias anything. Otherwise, +x can only alias MEMs in a conflicting alias set. This value +is set in a language-dependent manner in the front-end, and should not be +altered in the back-end. In some front-ends, these numbers may correspond +in some way to types, or other language-level entities, but they need not, +and the back-end makes no such assumptions. +These set numbers are tested with alias_sets_conflict_p. + +


MEM_EXPR (x)
If this register is known to hold the value of some user-level +declaration, this is that tree node. It may also be a +COMPONENT_REF, in which case this is some field reference, +and TREE_OPERAND (x, 0) contains the declaration, +or another COMPONENT_REF, or null if there is no compile-time +object associated with the reference. + +


MEM_OFFSET (x)
The offset from the start of MEM_EXPR as a CONST_INT rtx. + +


MEM_SIZE (x)
The size in bytes of the memory reference as a CONST_INT rtx. +This is mostly relevant for BLKmode references as otherwise +the size is implied by the mode. + +


MEM_ALIGN (x)
The known alignment in bits of the memory reference. +
+ +
REG
+ + +
ORIGINAL_REGNO (x)
This field holds the number the register “originally” had; for a +pseudo register turned into a hard reg this will hold the old pseudo +register number. + +


REG_EXPR (x)
If this register is known to hold the value of some user-level +declaration, this is that tree node. + +


REG_OFFSET (x)
If this register is known to hold the value of some user-level +declaration, this is the offset into that logical storage. +
+ +
SYMBOL_REF
+ + +
SYMBOL_REF_DECL (x)
If the symbol_ref x was created for a VAR_DECL or +a FUNCTION_DECL, that tree is recorded here. If this value is +null, then x was created by back end code generation routines, +and there is no associated front end symbol table entry. + +

SYMBOL_REF_DECL may also point to a tree of class 'c', +that is, some sort of constant. In this case, the symbol_ref +is an entry in the per-file constant pool; again, there is no associated +front end symbol table entry. + +


SYMBOL_REF_CONSTANT (x)
If CONSTANT_POOL_ADDRESS_P (x) is true, this is the constant +pool entry for x. It is null otherwise. + +


SYMBOL_REF_DATA (x)
A field of opaque type used to store SYMBOL_REF_DECL or +SYMBOL_REF_CONSTANT. + +


SYMBOL_REF_FLAGS (x)
In a symbol_ref, this is used to communicate various predicates +about the symbol. Some of these are common enough to be computed by +common code, some are specific to the target. The common bits are: + + + + +
SYMBOL_FLAG_FUNCTION
Set if the symbol refers to a function. + +


SYMBOL_FLAG_LOCAL
Set if the symbol is local to this “module”. +See TARGET_BINDS_LOCAL_P. + +


SYMBOL_FLAG_EXTERNAL
Set if this symbol is not defined in this translation unit. +Note that this is not the inverse of SYMBOL_FLAG_LOCAL. + +


SYMBOL_FLAG_SMALL
Set if the symbol is located in the small data section. +See TARGET_IN_SMALL_DATA_P. + +


SYMBOL_REF_TLS_MODEL (x)
This is a multi-bit field accessor that returns the tls_model +to be used for a thread-local storage symbol. It returns zero for +non-thread-local symbols. + +


SYMBOL_FLAG_HAS_BLOCK_INFO
Set if the symbol has SYMBOL_REF_BLOCK and +SYMBOL_REF_BLOCK_OFFSET fields. + +


SYMBOL_FLAG_ANCHOR
Set if the symbol is used as a section anchor. “Section anchors” +are symbols that have a known position within an object_block +and that can be used to access nearby members of that block. +They are used to implement -fsection-anchors. + +

If this flag is set, then SYMBOL_FLAG_HAS_BLOCK_INFO will be too. +

+ +

Bits beginning with SYMBOL_FLAG_MACH_DEP are available for +the target's use. +

+ +


SYMBOL_REF_BLOCK (x)
If SYMBOL_REF_HAS_BLOCK_INFO_P (x), this is the +object_block structure to which the symbol belongs, +or NULL if it has not been assigned a block. + +


SYMBOL_REF_BLOCK_OFFSET (x)
If SYMBOL_REF_HAS_BLOCK_INFO_P (x), this is the offset of x +from the first object in SYMBOL_REF_BLOCK (x). The value is +negative if x has not yet been assigned to a block, or it has not +been given an offset within that block. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Arguments.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Arguments.html new file mode 100644 index 0000000..b408a06 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Arguments.html @@ -0,0 +1,217 @@ + + +Stack Arguments - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Elimination, +Up: Stack and Calling +



+
+ +

15.10.6 Passing Function Arguments on the Stack

+ +

+The macros in this section control how arguments are passed +on the stack. See the following section for other macros that +control passing certain arguments in registers. + +

+— Target Hook: bool TARGET_PROMOTE_PROTOTYPES (tree fntype)
+

This target hook returns true if an argument declared in a +prototype as an integral type smaller than int should actually be +passed as an int. In addition to avoiding errors in certain +cases of mismatch, it also makes for better code on certain machines. +The default is to not promote prototypes. +

+ +
+— Macro: PUSH_ARGS
+

A C expression. If nonzero, push insns will be used to pass +outgoing arguments. +If the target machine does not have a push instruction, set it to zero. +That directs GCC to use an alternate strategy: to +allocate the entire argument block and then store the arguments into +it. When PUSH_ARGS is nonzero, PUSH_ROUNDING must be defined too. +

+ +
+— Macro: PUSH_ARGS_REVERSED
+

A C expression. If nonzero, function arguments will be evaluated from +last to first, rather than from first to last. If this macro is not +defined, it defaults to PUSH_ARGS on targets where the stack +and args grow in opposite directions, and 0 otherwise. +

+ +
+— Macro: PUSH_ROUNDING (npushed)
+

A C expression that is the number of bytes actually pushed onto the +stack when an instruction attempts to push npushed bytes. + +

On some machines, the definition + +

          #define PUSH_ROUNDING(BYTES) (BYTES)
+     
+

will suffice. But on other machines, instructions that appear +to push one byte actually push two bytes in an attempt to maintain +alignment. Then the definition should be + +

          #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
+     
+
+ +

+ +

+— Macro: ACCUMULATE_OUTGOING_ARGS
+

A C expression. If nonzero, the maximum amount of space required for outgoing arguments +will be computed and placed into the variable +current_function_outgoing_args_size. No space will be pushed +onto the stack for each call; instead, the function prologue should +increase the stack frame size by this amount. + +

Setting both PUSH_ARGS and ACCUMULATE_OUTGOING_ARGS +is not proper. +

+ +
+— Macro: REG_PARM_STACK_SPACE (fndecl)
+

Define this macro if functions should assume that stack space has been +allocated for arguments even when their values are passed in +registers. + +

The value of this macro is the size, in bytes, of the area reserved for +arguments passed in registers for the function represented by fndecl, +which can be zero if GCC is calling a library function. + +

This space can be allocated by the caller, or be a part of the +machine-dependent stack frame: OUTGOING_REG_PARM_STACK_SPACE says +which. +

+ + + +
+— Macro: OUTGOING_REG_PARM_STACK_SPACE
+

Define this to a nonzero value if it is the responsibility of the caller +to allocate the area reserved for arguments passed in registers. + +

If ACCUMULATE_OUTGOING_ARGS is defined, this macro controls +whether the space for these arguments counts in the value of +current_function_outgoing_args_size. +

+ +
+— Macro: STACK_PARMS_IN_REG_PARM_AREA
+

Define this macro if REG_PARM_STACK_SPACE is defined, but the +stack parameters don't skip the area specified by it. + + + +

Normally, when a parameter is not passed in registers, it is placed on the +stack beyond the REG_PARM_STACK_SPACE area. Defining this macro +suppresses this behavior and causes the parameter to be passed on the +stack in its natural location. +

+ +
+— Macro: RETURN_POPS_ARGS (fundecl, funtype, stack-size)
+

A C expression that should indicate the number of bytes of its own +arguments that a function pops on returning, or 0 if the +function pops no arguments and the caller must therefore pop them all +after the function returns. + +

fundecl is a C variable whose value is a tree node that describes +the function in question. Normally it is a node of type +FUNCTION_DECL that describes the declaration of the function. +From this you can obtain the DECL_ATTRIBUTES of the function. + +

funtype is a C variable whose value is a tree node that +describes the function in question. Normally it is a node of type +FUNCTION_TYPE that describes the data type of the function. +From this it is possible to obtain the data types of the value and +arguments (if known). + +

When a call to a library function is being considered, fundecl +will contain an identifier node for the library function. Thus, if +you need to distinguish among various library functions, you can do so +by their names. Note that “library function” in this context means +a function used to perform arithmetic, whose name is known specially +in the compiler and was not mentioned in the C code being compiled. + +

stack-size is the number of bytes of arguments passed on the +stack. If a variable number of bytes is passed, it is zero, and +argument popping will always be the responsibility of the calling function. + +

On the VAX, all functions always pop their arguments, so the definition +of this macro is stack-size. On the 68000, using the standard +calling convention, no functions pop their arguments, so the value of +the macro is always 0 in this case. But an alternative calling +convention is available in which functions that take a fixed number of +arguments pop them but other functions (such as printf) pop +nothing (the caller pops all). When this convention is in use, +funtype is examined to determine whether a function takes a fixed +number of arguments. +

+ +
+— Macro: CALL_POPS_ARGS (cum)
+

A C expression that should indicate the number of bytes a call sequence +pops off the stack. It is added to the value of RETURN_POPS_ARGS +when compiling a function call. + +

cum is the variable in which all arguments to the called function +have been accumulated. + +

On certain architectures, such as the SH5, a call trampoline is used +that pops certain registers off the stack, depending on the arguments +that have been passed to the function. Since this is a property of the +call site, not of the called function, RETURN_POPS_ARGS is not +appropriate. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Checking.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Checking.html new file mode 100644 index 0000000..6ea0fe1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Checking.html @@ -0,0 +1,140 @@ + + +Stack Checking - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Exception Handling, +Up: Stack and Calling +



+
+ +

15.10.3 Specifying How Stack Checking is Done

+ +

GCC will check that stack references are within the boundaries of +the stack, if the -fstack-check is specified, in one of three ways: + +

    +
  1. If the value of the STACK_CHECK_BUILTIN macro is nonzero, GCC +will assume that you have arranged for stack checking to be done at +appropriate places in the configuration files, e.g., in +TARGET_ASM_FUNCTION_PROLOGUE. GCC will do not other special +processing. + +
  2. If STACK_CHECK_BUILTIN is zero and you defined a named pattern +called check_stack in your md file, GCC will call that +pattern with one argument which is the address to compare the stack +value against. You must arrange for this pattern to report an error if +the stack pointer is out of range. + +
  3. If neither of the above are true, GCC will generate code to periodically +“probe” the stack pointer using the values of the macros defined below. +
+ +

Normally, you will use the default values of these macros, so GCC +will use the third approach. + +

+— Macro: STACK_CHECK_BUILTIN
+

A nonzero value if stack checking is done by the configuration files in a +machine-dependent manner. You should define this macro if stack checking +is require by the ABI of your machine or if you would like to have to stack +checking in some more efficient way than GCC's portable approach. +The default value of this macro is zero. +

+ +
+— Macro: STACK_CHECK_PROBE_INTERVAL
+

An integer representing the interval at which GCC must generate stack +probe instructions. You will normally define this macro to be no larger +than the size of the “guard pages” at the end of a stack area. The +default value of 4096 is suitable for most systems. +

+ +
+— Macro: STACK_CHECK_PROBE_LOAD
+

A integer which is nonzero if GCC should perform the stack probe +as a load instruction and zero if GCC should use a store instruction. +The default is zero, which is the most efficient choice on most systems. +

+ +
+— Macro: STACK_CHECK_PROTECT
+

The number of bytes of stack needed to recover from a stack overflow, +for languages where such a recovery is supported. The default value of +75 words should be adequate for most machines. +

+ +
+— Macro: STACK_CHECK_MAX_FRAME_SIZE
+

The maximum size of a stack frame, in bytes. GCC will generate probe +instructions in non-leaf functions to ensure at least this many bytes of +stack are available. If a stack frame is larger than this size, stack +checking will not be reliable and GCC will issue a warning. The +default is chosen so that GCC only generates one instruction on most +systems. You should normally not change the default value of this macro. +

+ +
+— Macro: STACK_CHECK_FIXED_FRAME_SIZE
+

GCC uses this value to generate the above warning message. It +represents the amount of fixed frame used by a function, not including +space for any callee-saved registers, temporaries and user variables. +You need only specify an upper bound for this amount and will normally +use the default of four words. +

+ +
+— Macro: STACK_CHECK_MAX_VAR_SIZE
+

The maximum size, in bytes, of an object that GCC will place in the +fixed area of the stack frame when the user specifies +-fstack-check. +GCC computed the default from the values of the above macros and you will +normally not need to override that default. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Registers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Registers.html new file mode 100644 index 0000000..8937015 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Registers.html @@ -0,0 +1,86 @@ + + +Stack Registers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Leaf Functions, +Up: Registers +



+
+ +

15.7.5 Registers That Form a Stack

+ +

There are special features to handle computers where some of the +“registers” form a stack. Stack registers are normally written by +pushing onto the stack, and are numbered relative to the top of the +stack. + +

Currently, GCC can only handle one group of stack-like registers, and +they must be consecutively numbered. Furthermore, the existing +support for stack-like registers is specific to the 80387 floating +point coprocessor. If you have a new architecture that uses +stack-like registers, you will need to do substantial work on +reg-stack.c and write your machine description to cooperate +with it, as well as defining these macros. + +

+— Macro: STACK_REGS
+

Define this if the machine has any stack-like registers. +

+ +
+— Macro: FIRST_STACK_REG
+

The number of the first stack-like register. This one is the top +of the stack. +

+ +
+— Macro: LAST_STACK_REG
+

The number of the last stack-like register. This one is the bottom of +the stack. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Smashing-Protection.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Smashing-Protection.html new file mode 100644 index 0000000..272dcd0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-Smashing-Protection.html @@ -0,0 +1,81 @@ + + +Stack Smashing Protection - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: Tail Calls, +Up: Stack and Calling +



+
+ +

15.10.14 Stack smashing protection

+ +

+ +

+— Target Hook: tree TARGET_STACK_PROTECT_GUARD (void)
+

This hook returns a DECL node for the external variable to use +for the stack protection guard. This variable is initialized by the +runtime to some random value and is used to initialize the guard value +that is placed at the top of the local stack frame. The type of this +variable must be ptr_type_node. + +

The default version of this hook creates a variable called +__stack_chk_guard, which is normally defined in libgcc2.c. +

+ +
+— Target Hook: tree TARGET_STACK_PROTECT_FAIL (void)
+

This hook returns a tree expression that alerts the runtime that the +stack protect guard variable has been modified. This expression should +involve a call to a noreturn function. + +

The default version of this hook invokes a function called +__stack_chk_fail, taking no arguments. This function is +normally defined in libgcc2.c. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-and-Calling.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-and-Calling.html new file mode 100644 index 0000000..c1a4664 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Stack-and-Calling.html @@ -0,0 +1,79 @@ + + +Stack and Calling - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Old Constraints, +Up: Target Macros +



+
+ +

15.10 Stack Layout and Calling Conventions

+ +

+ +This describes the stack layout and calling conventions. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Standard-Names.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Standard-Names.html new file mode 100644 index 0000000..7735074 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Standard-Names.html @@ -0,0 +1,1400 @@ + + +Standard Names - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Constraints, +Up: Machine Desc +



+
+ +

14.9 Standard Pattern Names For Generation

+ +

+Here is a table of the instruction names that are meaningful in the RTL +generation pass of the compiler. Giving one of these names to an +instruction pattern tells the RTL generation pass that it can use the +pattern to accomplish a certain task. + + + +

movm
Here m stands for a two-letter machine mode name, in lowercase. +This instruction pattern moves data with that machine mode from operand +1 to operand 0. For example, movsi moves full-word data. + +

If operand 0 is a subreg with mode m of a register whose +own mode is wider than m, the effect of this instruction is +to store the specified value in the part of the register that corresponds +to mode m. Bits outside of m, but which are within the +same target word as the subreg are undefined. Bits which are +outside the target word are left unchanged. + +

This class of patterns is special in several ways. First of all, each +of these names up to and including full word size must be defined, +because there is no other way to copy a datum from one place to another. +If there are patterns accepting operands in larger modes, +movm must be defined for integer modes of those sizes. + +

Second, these patterns are not used solely in the RTL generation pass. +Even the reload pass can generate move insns to copy values from stack +slots into temporary registers. When it does so, one of the operands is +a hard register and the other is an operand that can need to be reloaded +into a register. + +

Therefore, when given such a pair of operands, the pattern must generate +RTL which needs no reloading and needs no temporary registers—no +registers other than the operands. For example, if you support the +pattern with a define_expand, then in such a case the +define_expand mustn't call force_reg or any other such +function which might generate new pseudo registers. + +

This requirement exists even for subword modes on a RISC machine where +fetching those modes from memory normally requires several insns and +some temporary registers. + +

During reload a memory reference with an invalid address may be passed +as an operand. Such an address will be replaced with a valid address +later in the reload pass. In this case, nothing may be done with the +address except to use it as it stands. If it is copied, it will not be +replaced with a valid address. No attempt should be made to make such +an address into a valid address and no routine (such as +change_address) that will do so may be called. Note that +general_operand will fail when applied to such an address. + +

The global variable reload_in_progress (which must be explicitly +declared if required) can be used to determine whether such special +handling is required. + +

The variety of operands that have reloads depends on the rest of the +machine description, but typically on a RISC machine these can only be +pseudo registers that did not get hard registers, while on other +machines explicit memory references will get optional reloads. + +

If a scratch register is required to move an object to or from memory, +it can be allocated using gen_reg_rtx prior to life analysis. + +

If there are cases which need scratch registers during or after reload, +you must provide an appropriate secondary_reload target hook. + +

The macro can_create_pseudo_p can be used to determine if it +is unsafe to create new pseudo registers. If this variable is nonzero, then +it is unsafe to call gen_reg_rtx to allocate a new pseudo. + +

The constraints on a movm must permit moving any hard +register to any other hard register provided that +HARD_REGNO_MODE_OK permits mode m in both registers and +REGISTER_MOVE_COST applied to their classes returns a value of 2. + +

It is obligatory to support floating point movm +instructions into and out of any registers that can hold fixed point +values, because unions and structures (which have modes SImode or +DImode) can be in those registers and they may have floating +point members. + +

There may also be a need to support fixed point movm +instructions in and out of floating point registers. Unfortunately, I +have forgotten why this was so, and I don't know whether it is still +true. If HARD_REGNO_MODE_OK rejects fixed point values in +floating point registers, then the constraints of the fixed point +movm instructions must be designed to avoid ever trying to +reload into a floating point register. + +


reload_inm
reload_outm
These named patterns have been obsoleted by the target hook +secondary_reload. + +

Like movm, but used when a scratch register is required to +move between operand 0 and operand 1. Operand 2 describes the scratch +register. See the discussion of the SECONDARY_RELOAD_CLASS +macro in see Register Classes. + +

There are special restrictions on the form of the match_operands +used in these patterns. First, only the predicate for the reload +operand is examined, i.e., reload_in examines operand 1, but not +the predicates for operand 0 or 2. Second, there may be only one +alternative in the constraints. Third, only a single register class +letter may be used for the constraint; subsequent constraint letters +are ignored. As a special exception, an empty constraint string +matches the ALL_REGS register class. This may relieve ports +of the burden of defining an ALL_REGS constraint letter just +for these patterns. + +


movstrictm
Like movm except that if operand 0 is a subreg +with mode m of a register whose natural mode is wider, +the movstrictm instruction is guaranteed not to alter +any of the register except the part which belongs to mode m. + +


movmisalignm
This variant of a move pattern is designed to load or store a value +from a memory address that is not naturally aligned for its mode. +For a store, the memory will be in operand 0; for a load, the memory +will be in operand 1. The other operand is guaranteed not to be a +memory, so that it's easy to tell whether this is a load or store. + +

This pattern is used by the autovectorizer, and when expanding a +MISALIGNED_INDIRECT_REF expression. + +


load_multiple
Load several consecutive memory locations into consecutive registers. +Operand 0 is the first of the consecutive registers, operand 1 +is the first memory location, and operand 2 is a constant: the +number of consecutive registers. + +

Define this only if the target machine really has such an instruction; +do not define this if the most efficient way of loading consecutive +registers from memory is to do them one at a time. + +

On some machines, there are restrictions as to which consecutive +registers can be stored into memory, such as particular starting or +ending register numbers or only a range of valid counts. For those +machines, use a define_expand (see Expander Definitions) +and make the pattern fail if the restrictions are not met. + +

Write the generated insn as a parallel with elements being a +set of one register from the appropriate memory location (you may +also need use or clobber elements). Use a +match_parallel (see RTL Template) to recognize the insn. See +rs6000.md for examples of the use of this insn pattern. + +


store_multiple
Similar to load_multiple, but store several consecutive registers +into consecutive memory locations. Operand 0 is the first of the +consecutive memory locations, operand 1 is the first register, and +operand 2 is a constant: the number of consecutive registers. + +


vec_setm
Set given field in the vector value. Operand 0 is the vector to modify, +operand 1 is new value of field and operand 2 specify the field index. + +


vec_extractm
Extract given field from the vector value. Operand 1 is the vector, operand 2 +specify field index and operand 0 place to store value into. + +


vec_extract_evenm
Extract even elements from the input vectors (operand 1 and operand 2). +The even elements of operand 2 are concatenated to the even elements of operand +1 in their original order. The result is stored in operand 0. +The output and input vectors should have the same modes. + +


vec_extract_oddm
Extract odd elements from the input vectors (operand 1 and operand 2). +The odd elements of operand 2 are concatenated to the odd elements of operand +1 in their original order. The result is stored in operand 0. +The output and input vectors should have the same modes. + +


vec_interleave_highm
Merge high elements of the two input vectors into the output vector. The output +and input vectors should have the same modes (N elements). The high +N/2 elements of the first input vector are interleaved with the high +N/2 elements of the second input vector. + +


vec_interleave_lowm
Merge low elements of the two input vectors into the output vector. The output +and input vectors should have the same modes (N elements). The low +N/2 elements of the first input vector are interleaved with the low +N/2 elements of the second input vector. + +


vec_initm
Initialize the vector to given values. Operand 0 is the vector to initialize +and operand 1 is parallel containing values for individual fields. + +


pushm1
Output a push instruction. Operand 0 is value to push. Used only when +PUSH_ROUNDING is defined. For historical reason, this pattern may be +missing and in such case an mov expander is used instead, with a +MEM expression forming the push operation. The mov expander +method is deprecated. + +


addm3
Add operand 2 and operand 1, storing the result in operand 0. All operands +must have mode m. This can be used even on two-address machines, by +means of constraints requiring operands 1 and 0 to be the same location. + +


ssaddm3, usaddm3
subm3, sssubm3, ussubm3
mulm3, ssmulm3, usmulm3
divm3, ssdivm3
udivm3, usdivm3
modm3, umodm3
uminm3, umaxm3
andm3, iorm3, xorm3
Similar, for other arithmetic operations. + +


sminm3, smaxm3
Signed minimum and maximum operations. When used with floating point, +if both operands are zeros, or if either operand is NaN, then +it is unspecified which of the two operands is returned as the result. + +


reduc_smin_m, reduc_smax_m
Find the signed minimum/maximum of the elements of a vector. The vector is +operand 1, and the scalar result is stored in the least significant bits of +operand 0 (also a vector). The output and input vector should have the same +modes. + +


reduc_umin_m, reduc_umax_m
Find the unsigned minimum/maximum of the elements of a vector. The vector is +operand 1, and the scalar result is stored in the least significant bits of +operand 0 (also a vector). The output and input vector should have the same +modes. + +


reduc_splus_m
Compute the sum of the signed elements of a vector. The vector is operand 1, +and the scalar result is stored in the least significant bits of operand 0 +(also a vector). The output and input vector should have the same modes. + +


reduc_uplus_m
Compute the sum of the unsigned elements of a vector. The vector is operand 1, +and the scalar result is stored in the least significant bits of operand 0 +(also a vector). The output and input vector should have the same modes. + +


sdot_prodm

udot_prodm
Compute the sum of the products of two signed/unsigned elements. +Operand 1 and operand 2 are of the same mode. Their product, which is of a +wider mode, is computed and added to operand 3. Operand 3 is of a mode equal or +wider than the mode of the product. The result is placed in operand 0, which +is of the same mode as operand 3. + +


ssum_widenm3

usum_widenm3
Operands 0 and 2 are of the same mode, which is wider than the mode of +operand 1. Add operand 1 to operand 2 and place the widened result in +operand 0. (This is used express accumulation of elements into an accumulator +of a wider mode.) + +


vec_shl_m, vec_shr_m
Whole vector left/right shift in bits. +Operand 1 is a vector to be shifted. +Operand 2 is an integer shift amount in bits. +Operand 0 is where the resulting shifted vector is stored. +The output and input vectors should have the same modes. + +


vec_pack_trunc_m
Narrow (demote) and merge the elements of two vectors. Operands 1 and 2 +are vectors of the same mode having N integral or floating point elements +of size S. Operand 0 is the resulting vector in which 2*N elements of +size N/2 are concatenated after narrowing them down using truncation. + +


vec_pack_ssat_m, vec_pack_usat_m
Narrow (demote) and merge the elements of two vectors. Operands 1 and 2 +are vectors of the same mode having N integral elements of size S. +Operand 0 is the resulting vector in which the elements of the two input +vectors are concatenated after narrowing them down using signed/unsigned +saturating arithmetic. + +


vec_pack_sfix_trunc_m, vec_pack_ufix_trunc_m
Narrow, convert to signed/unsigned integral type and merge the elements +of two vectors. Operands 1 and 2 are vectors of the same mode having N +floating point elements of size S. Operand 0 is the resulting vector +in which 2*N elements of size N/2 are concatenated. + +


vec_unpacks_hi_m, vec_unpacks_lo_m
Extract and widen (promote) the high/low part of a vector of signed +integral or floating point elements. The input vector (operand 1) has N +elements of size S. Widen (promote) the high/low elements of the vector +using signed or floating point extension and place the resulting N/2 +values of size 2*S in the output vector (operand 0). + +


vec_unpacku_hi_m, vec_unpacku_lo_m
Extract and widen (promote) the high/low part of a vector of unsigned +integral elements. The input vector (operand 1) has N elements of size S. +Widen (promote) the high/low elements of the vector using zero extension and +place the resulting N/2 values of size 2*S in the output vector (operand 0). + +


vec_unpacks_float_hi_m, vec_unpacks_float_lo_m
vec_unpacku_float_hi_m, vec_unpacku_float_lo_m
Extract, convert to floating point type and widen the high/low part of a +vector of signed/unsigned integral elements. The input vector (operand 1) +has N elements of size S. Convert the high/low elements of the vector using +floating point conversion and place the resulting N/2 values of size 2*S in +the output vector (operand 0). + +


vec_widen_umult_hi_m, vec_widen_umult_lo_m
vec_widen_smult_hi_m, vec_widen_smult_lo_m
Signed/Unsigned widening multiplication. The two inputs (operands 1 and 2) +are vectors with N signed/unsigned elements of size S. Multiply the high/low +elements of the two vectors, and put the N/2 products of size 2*S in the +output vector (operand 0). + +


mulhisi3
Multiply operands 1 and 2, which have mode HImode, and store +a SImode product in operand 0. + +


mulqihi3, mulsidi3
Similar widening-multiplication instructions of other widths. + +


umulqihi3, umulhisi3, umulsidi3
Similar widening-multiplication instructions that do unsigned +multiplication. + +


usmulqihi3, usmulhisi3, usmulsidi3
Similar widening-multiplication instructions that interpret the first +operand as unsigned and the second operand as signed, then do a signed +multiplication. + +


smulm3_highpart
Perform a signed multiplication of operands 1 and 2, which have mode +m, and store the most significant half of the product in operand 0. +The least significant half of the product is discarded. + +


umulm3_highpart
Similar, but the multiplication is unsigned. + +


maddmn4
Multiply operands 1 and 2, sign-extend them to mode n, add +operand 3, and store the result in operand 0. Operands 1 and 2 +have mode m and operands 0 and 3 have mode n. +Both modes must be integer or fixed-point modes and n must be twice +the size of m. + +

In other words, maddmn4 is like +mulmn3 except that it also adds operand 3. + +

These instructions are not allowed to FAIL. + +


umaddmn4
Like maddmn4, but zero-extend the multiplication +operands instead of sign-extending them. + +


ssmaddmn4
Like maddmn4, but all involved operations must be +signed-saturating. + +


usmaddmn4
Like umaddmn4, but all involved operations must be +unsigned-saturating. + +


msubmn4
Multiply operands 1 and 2, sign-extend them to mode n, subtract the +result from operand 3, and store the result in operand 0. Operands 1 and 2 +have mode m and operands 0 and 3 have mode n. +Both modes must be integer or fixed-point modes and n must be twice +the size of m. + +

In other words, msubmn4 is like +mulmn3 except that it also subtracts the result +from operand 3. + +

These instructions are not allowed to FAIL. + +


umsubmn4
Like msubmn4, but zero-extend the multiplication +operands instead of sign-extending them. + +


ssmsubmn4
Like msubmn4, but all involved operations must be +signed-saturating. + +


usmsubmn4
Like umsubmn4, but all involved operations must be +unsigned-saturating. + +


divmodm4
Signed division that produces both a quotient and a remainder. +Operand 1 is divided by operand 2 to produce a quotient stored +in operand 0 and a remainder stored in operand 3. + +

For machines with an instruction that produces both a quotient and a +remainder, provide a pattern for divmodm4 but do not +provide patterns for divm3 and modm3. This +allows optimization in the relatively common case when both the quotient +and remainder are computed. + +

If an instruction that just produces a quotient or just a remainder +exists and is more efficient than the instruction that produces both, +write the output routine of divmodm4 to call +find_reg_note and look for a REG_UNUSED note on the +quotient or remainder and generate the appropriate instruction. + +


udivmodm4
Similar, but does unsigned division. + +

+

ashlm3, ssashlm3, usashlm3
Arithmetic-shift operand 1 left by a number of bits specified by operand +2, and store the result in operand 0. Here m is the mode of +operand 0 and operand 1; operand 2's mode is specified by the +instruction pattern, and the compiler will convert the operand to that +mode before generating the instruction. The meaning of out-of-range shift +counts can optionally be specified by TARGET_SHIFT_TRUNCATION_MASK. +See TARGET_SHIFT_TRUNCATION_MASK. + +


ashrm3, lshrm3, rotlm3, rotrm3
Other shift and rotate instructions, analogous to the +ashlm3 instructions. + +


negm2, ssnegm2, usnegm2
Negate operand 1 and store the result in operand 0. + +


absm2
Store the absolute value of operand 1 into operand 0. + +


sqrtm2
Store the square root of operand 1 into operand 0. + +

The sqrt built-in function of C always uses the mode which +corresponds to the C data type double and the sqrtf +built-in function uses the mode which corresponds to the C data +type float. + +


fmodm3
Store the remainder of dividing operand 1 by operand 2 into +operand 0, rounded towards zero to an integer. + +

The fmod built-in function of C always uses the mode which +corresponds to the C data type double and the fmodf +built-in function uses the mode which corresponds to the C data +type float. + +


remainderm3
Store the remainder of dividing operand 1 by operand 2 into +operand 0, rounded to the nearest integer. + +

The remainder built-in function of C always uses the mode +which corresponds to the C data type double and the +remainderf built-in function uses the mode which corresponds +to the C data type float. + +


cosm2
Store the cosine of operand 1 into operand 0. + +

The cos built-in function of C always uses the mode which +corresponds to the C data type double and the cosf +built-in function uses the mode which corresponds to the C data +type float. + +


sinm2
Store the sine of operand 1 into operand 0. + +

The sin built-in function of C always uses the mode which +corresponds to the C data type double and the sinf +built-in function uses the mode which corresponds to the C data +type float. + +


expm2
Store the exponential of operand 1 into operand 0. + +

The exp built-in function of C always uses the mode which +corresponds to the C data type double and the expf +built-in function uses the mode which corresponds to the C data +type float. + +


logm2
Store the natural logarithm of operand 1 into operand 0. + +

The log built-in function of C always uses the mode which +corresponds to the C data type double and the logf +built-in function uses the mode which corresponds to the C data +type float. + +


powm3
Store the value of operand 1 raised to the exponent operand 2 +into operand 0. + +

The pow built-in function of C always uses the mode which +corresponds to the C data type double and the powf +built-in function uses the mode which corresponds to the C data +type float. + +


atan2m3
Store the arc tangent (inverse tangent) of operand 1 divided by +operand 2 into operand 0, using the signs of both arguments to +determine the quadrant of the result. + +

The atan2 built-in function of C always uses the mode which +corresponds to the C data type double and the atan2f +built-in function uses the mode which corresponds to the C data +type float. + +


floorm2
Store the largest integral value not greater than argument. + +

The floor built-in function of C always uses the mode which +corresponds to the C data type double and the floorf +built-in function uses the mode which corresponds to the C data +type float. + +


btruncm2
Store the argument rounded to integer towards zero. + +

The trunc built-in function of C always uses the mode which +corresponds to the C data type double and the truncf +built-in function uses the mode which corresponds to the C data +type float. + +


roundm2
Store the argument rounded to integer away from zero. + +

The round built-in function of C always uses the mode which +corresponds to the C data type double and the roundf +built-in function uses the mode which corresponds to the C data +type float. + +


ceilm2
Store the argument rounded to integer away from zero. + +

The ceil built-in function of C always uses the mode which +corresponds to the C data type double and the ceilf +built-in function uses the mode which corresponds to the C data +type float. + +


nearbyintm2
Store the argument rounded according to the default rounding mode + +

The nearbyint built-in function of C always uses the mode which +corresponds to the C data type double and the nearbyintf +built-in function uses the mode which corresponds to the C data +type float. + +


rintm2
Store the argument rounded according to the default rounding mode and +raise the inexact exception when the result differs in value from +the argument + +

The rint built-in function of C always uses the mode which +corresponds to the C data type double and the rintf +built-in function uses the mode which corresponds to the C data +type float. + +


lrintmn2
Convert operand 1 (valid for floating point mode m) to fixed +point mode n as a signed number according to the current +rounding mode and store in operand 0 (which has mode n). + +


lroundm2
Convert operand 1 (valid for floating point mode m) to fixed +point mode n as a signed number rounding to nearest and away +from zero and store in operand 0 (which has mode n). + +


lfloorm2
Convert operand 1 (valid for floating point mode m) to fixed +point mode n as a signed number rounding down and store in +operand 0 (which has mode n). + +


lceilm2
Convert operand 1 (valid for floating point mode m) to fixed +point mode n as a signed number rounding up and store in +operand 0 (which has mode n). + +


copysignm3
Store a value with the magnitude of operand 1 and the sign of operand +2 into operand 0. + +

The copysign built-in function of C always uses the mode which +corresponds to the C data type double and the copysignf +built-in function uses the mode which corresponds to the C data +type float. + +


ffsm2
Store into operand 0 one plus the index of the least significant 1-bit +of operand 1. If operand 1 is zero, store zero. m is the mode +of operand 0; operand 1's mode is specified by the instruction +pattern, and the compiler will convert the operand to that mode before +generating the instruction. + +

The ffs built-in function of C always uses the mode which +corresponds to the C data type int. + +


clzm2
Store into operand 0 the number of leading 0-bits in x, starting +at the most significant bit position. If x is 0, the +CLZ_DEFINED_VALUE_AT_ZERO (see Misc) macro defines if +the result is undefined or has a useful value. +m is the mode of operand 0; operand 1's mode is +specified by the instruction pattern, and the compiler will convert the +operand to that mode before generating the instruction. + +


ctzm2
Store into operand 0 the number of trailing 0-bits in x, starting +at the least significant bit position. If x is 0, the +CTZ_DEFINED_VALUE_AT_ZERO (see Misc) macro defines if +the result is undefined or has a useful value. +m is the mode of operand 0; operand 1's mode is +specified by the instruction pattern, and the compiler will convert the +operand to that mode before generating the instruction. + +


popcountm2
Store into operand 0 the number of 1-bits in x. m is the +mode of operand 0; operand 1's mode is specified by the instruction +pattern, and the compiler will convert the operand to that mode before +generating the instruction. + +


paritym2
Store into operand 0 the parity of x, i.e. the number of 1-bits +in x modulo 2. m is the mode of operand 0; operand 1's mode +is specified by the instruction pattern, and the compiler will convert +the operand to that mode before generating the instruction. + +


one_cmplm2
Store the bitwise-complement of operand 1 into operand 0. + +


cmpm
Compare operand 0 and operand 1, and set the condition codes. +The RTL pattern should look like this: + +
          (set (cc0) (compare (match_operand:m 0 ...)
+                              (match_operand:m 1 ...)))
+     
+


tstm
Compare operand 0 against zero, and set the condition codes. +The RTL pattern should look like this: + +
          (set (cc0) (match_operand:m 0 ...))
+     
+

tstm patterns should not be defined for machines that do +not use (cc0). Doing so would confuse the optimizer since it +would no longer be clear which set operations were comparisons. +The cmpm patterns should be used instead. + +


movmemm
Block move instruction. The destination and source blocks of memory +are the first two operands, and both are mem:BLKs with an +address in mode Pmode. + +

The number of bytes to move is the third operand, in mode m. +Usually, you specify word_mode for m. However, if you can +generate better code knowing the range of valid lengths is smaller than +those representable in a full word, you should provide a pattern with a +mode corresponding to the range of values you can handle efficiently +(e.g., QImode for values in the range 0–127; note we avoid numbers +that appear negative) and also a pattern with word_mode. + +

The fourth operand is the known shared alignment of the source and +destination, in the form of a const_int rtx. Thus, if the +compiler knows that both source and destination are word-aligned, +it may provide the value 4 for this operand. + +

Optional operands 5 and 6 specify expected alignment and size of block +respectively. The expected alignment differs from alignment in operand 4 +in a way that the blocks are not required to be aligned according to it in +all cases. Expected size, when unknown, is set to (const_int -1). + +

Descriptions of multiple movmemm patterns can only be +beneficial if the patterns for smaller modes have fewer restrictions +on their first, second and fourth operands. Note that the mode m +in movmemm does not impose any restriction on the mode of +individually moved data units in the block. + +

These patterns need not give special consideration to the possibility +that the source and destination strings might overlap. + +


movstr
String copy instruction, with stpcpy semantics. Operand 0 is +an output operand in mode Pmode. The addresses of the +destination and source strings are operands 1 and 2, and both are +mem:BLKs with addresses in mode Pmode. The execution of +the expansion of this pattern should store in operand 0 the address in +which the NUL terminator was stored in the destination string. + +


setmemm
Block set instruction. The destination string is the first operand, +given as a mem:BLK whose address is in mode Pmode. The +number of bytes to set is the second operand, in mode m. The value to +initialize the memory with is the third operand. Targets that only support the +clearing of memory should reject any value that is not the constant 0. See +movmemm for a discussion of the choice of mode. + +

The fourth operand is the known alignment of the destination, in the form +of a const_int rtx. Thus, if the compiler knows that the +destination is word-aligned, it may provide the value 4 for this +operand. + +

Optional operands 5 and 6 specify expected alignment and size of block +respectively. The expected alignment differs from alignment in operand 4 +in a way that the blocks are not required to be aligned according to it in +all cases. Expected size, when unknown, is set to (const_int -1). + +

The use for multiple setmemm is as for movmemm. + +


cmpstrnm
String compare instruction, with five operands. Operand 0 is the output; +it has mode m. The remaining four operands are like the operands +of movmemm. The two memory blocks specified are compared +byte by byte in lexicographic order starting at the beginning of each +string. The instruction is not allowed to prefetch more than one byte +at a time since either string may end in the first byte and reading past +that may access an invalid page or segment and cause a fault. The +effect of the instruction is to store a value in operand 0 whose sign +indicates the result of the comparison. + +


cmpstrm
String compare instruction, without known maximum length. Operand 0 is the +output; it has mode m. The second and third operand are the blocks of +memory to be compared; both are mem:BLK with an address in mode +Pmode. + +

The fourth operand is the known shared alignment of the source and +destination, in the form of a const_int rtx. Thus, if the +compiler knows that both source and destination are word-aligned, +it may provide the value 4 for this operand. + +

The two memory blocks specified are compared byte by byte in lexicographic +order starting at the beginning of each string. The instruction is not allowed +to prefetch more than one byte at a time since either string may end in the +first byte and reading past that may access an invalid page or segment and +cause a fault. The effect of the instruction is to store a value in operand 0 +whose sign indicates the result of the comparison. + +


cmpmemm
Block compare instruction, with five operands like the operands +of cmpstrm. The two memory blocks specified are compared +byte by byte in lexicographic order starting at the beginning of each +block. Unlike cmpstrm the instruction can prefetch +any bytes in the two memory blocks. The effect of the instruction is +to store a value in operand 0 whose sign indicates the result of the +comparison. + +


strlenm
Compute the length of a string, with three operands. +Operand 0 is the result (of mode m), operand 1 is +a mem referring to the first character of the string, +operand 2 is the character to search for (normally zero), +and operand 3 is a constant describing the known alignment +of the beginning of the string. + +


floatmn2
Convert signed integer operand 1 (valid for fixed point mode m) to +floating point mode n and store in operand 0 (which has mode +n). + +


floatunsmn2
Convert unsigned integer operand 1 (valid for fixed point mode m) +to floating point mode n and store in operand 0 (which has mode +n). + +


fixmn2
Convert operand 1 (valid for floating point mode m) to fixed +point mode n as a signed number and store in operand 0 (which +has mode n). This instruction's result is defined only when +the value of operand 1 is an integer. + +

If the machine description defines this pattern, it also needs to +define the ftrunc pattern. + +


fixunsmn2
Convert operand 1 (valid for floating point mode m) to fixed +point mode n as an unsigned number and store in operand 0 (which +has mode n). This instruction's result is defined only when the +value of operand 1 is an integer. + +


ftruncm2
Convert operand 1 (valid for floating point mode m) to an +integer value, still represented in floating point mode m, and +store it in operand 0 (valid for floating point mode m). + +


fix_truncmn2
Like fixmn2 but works for any floating point value +of mode m by converting the value to an integer. + +


fixuns_truncmn2
Like fixunsmn2 but works for any floating point +value of mode m by converting the value to an integer. + +


truncmn2
Truncate operand 1 (valid for mode m) to mode n and +store in operand 0 (which has mode n). Both modes must be fixed +point or both floating point. + +


extendmn2
Sign-extend operand 1 (valid for mode m) to mode n and +store in operand 0 (which has mode n). Both modes must be fixed +point or both floating point. + +


zero_extendmn2
Zero-extend operand 1 (valid for mode m) to mode n and +store in operand 0 (which has mode n). Both modes must be fixed +point. + +


fractmn2
Convert operand 1 of mode m to mode n and store in +operand 0 (which has mode n). Mode m and mode n +could be fixed-point to fixed-point, signed integer to fixed-point, +fixed-point to signed integer, floating-point to fixed-point, +or fixed-point to floating-point. +When overflows or underflows happen, the results are undefined. + +


satfractmn2
Convert operand 1 of mode m to mode n and store in +operand 0 (which has mode n). Mode m and mode n +could be fixed-point to fixed-point, signed integer to fixed-point, +or floating-point to fixed-point. +When overflows or underflows happen, the instruction saturates the +results to the maximum or the minimum. + +


fractunsmn2
Convert operand 1 of mode m to mode n and store in +operand 0 (which has mode n). Mode m and mode n +could be unsigned integer to fixed-point, or +fixed-point to unsigned integer. +When overflows or underflows happen, the results are undefined. + +


satfractunsmn2
Convert unsigned integer operand 1 of mode m to fixed-point mode +n and store in operand 0 (which has mode n). +When overflows or underflows happen, the instruction saturates the +results to the maximum or the minimum. + +


extv
Extract a bit-field from operand 1 (a register or memory operand), where +operand 2 specifies the width in bits and operand 3 the starting bit, +and store it in operand 0. Operand 0 must have mode word_mode. +Operand 1 may have mode byte_mode or word_mode; often +word_mode is allowed only for registers. Operands 2 and 3 must +be valid for word_mode. + +

The RTL generation pass generates this instruction only with constants +for operands 2 and 3 and the constant is never zero for operand 2. + +

The bit-field value is sign-extended to a full word integer +before it is stored in operand 0. + +


extzv
Like extv except that the bit-field value is zero-extended. + +


insv
Store operand 3 (which must be valid for word_mode) into a +bit-field in operand 0, where operand 1 specifies the width in bits and +operand 2 the starting bit. Operand 0 may have mode byte_mode or +word_mode; often word_mode is allowed only for registers. +Operands 1 and 2 must be valid for word_mode. + +

The RTL generation pass generates this instruction only with constants +for operands 1 and 2 and the constant is never zero for operand 1. + +


movmodecc
Conditionally move operand 2 or operand 3 into operand 0 according to the +comparison in operand 1. If the comparison is true, operand 2 is moved +into operand 0, otherwise operand 3 is moved. + +

The mode of the operands being compared need not be the same as the operands +being moved. Some machines, sparc64 for example, have instructions that +conditionally move an integer value based on the floating point condition +codes and vice versa. + +

If the machine does not have conditional move instructions, do not +define these patterns. + +


addmodecc
Similar to movmodecc but for conditional addition. Conditionally +move operand 2 or (operands 2 + operand 3) into operand 0 according to the +comparison in operand 1. If the comparison is true, operand 2 is moved into +operand 0, otherwise (operand 2 + operand 3) is moved. + +


scond
Store zero or nonzero in the operand according to the condition codes. +Value stored is nonzero iff the condition cond is true. +cond is the name of a comparison operation expression code, such +as eq, lt or leu. + +

You specify the mode that the operand must have when you write the +match_operand expression. The compiler automatically sees +which mode you have used and supplies an operand of that mode. + +

The value stored for a true condition must have 1 as its low bit, or +else must be negative. Otherwise the instruction is not suitable and +you should omit it from the machine description. You describe to the +compiler exactly which value is stored by defining the macro +STORE_FLAG_VALUE (see Misc). If a description cannot be +found that can be used for all the scond patterns, you +should omit those operations from the machine description. + +

These operations may fail, but should do so only in relatively +uncommon cases; if they would fail for common cases involving +integer comparisons, it is best to omit these patterns. + +

If these operations are omitted, the compiler will usually generate code +that copies the constant one to the target and branches around an +assignment of zero to the target. If this code is more efficient than +the potential instructions used for the scond pattern +followed by those required to convert the result into a 1 or a zero in +SImode, you should omit the scond operations from +the machine description. + +


bcond
Conditional branch instruction. Operand 0 is a label_ref that +refers to the label to jump to. Jump if the condition codes meet +condition cond. + +

Some machines do not follow the model assumed here where a comparison +instruction is followed by a conditional branch instruction. In that +case, the cmpm (and tstm) patterns should +simply store the operands away and generate all the required insns in a +define_expand (see Expander Definitions) for the conditional +branch operations. All calls to expand bcond patterns are +immediately preceded by calls to expand either a cmpm +pattern or a tstm pattern. + +

Machines that use a pseudo register for the condition code value, or +where the mode used for the comparison depends on the condition being +tested, should also use the above mechanism. See Jump Patterns. + +

The above discussion also applies to the movmodecc and +scond patterns. + +


cbranchmode4
Conditional branch instruction combined with a compare instruction. +Operand 0 is a comparison operator. Operand 1 and operand 2 are the +first and second operands of the comparison, respectively. Operand 3 +is a label_ref that refers to the label to jump to. + +


jump
A jump inside a function; an unconditional branch. Operand 0 is the +label_ref of the label to jump to. This pattern name is mandatory +on all machines. + +


call
Subroutine call instruction returning no value. Operand 0 is the +function to call; operand 1 is the number of bytes of arguments pushed +as a const_int; operand 2 is the number of registers used as +operands. + +

On most machines, operand 2 is not actually stored into the RTL +pattern. It is supplied for the sake of some RISC machines which need +to put this information into the assembler code; they can put it in +the RTL instead of operand 1. + +

Operand 0 should be a mem RTX whose address is the address of the +function. Note, however, that this address can be a symbol_ref +expression even if it would not be a legitimate memory address on the +target machine. If it is also not a valid argument for a call +instruction, the pattern for this operation should be a +define_expand (see Expander Definitions) that places the +address into a register and uses that register in the call instruction. + +


call_value
Subroutine call instruction returning a value. Operand 0 is the hard +register in which the value is returned. There are three more +operands, the same as the three operands of the call +instruction (but with numbers increased by one). + +

Subroutines that return BLKmode objects use the call +insn. + +


call_pop, call_value_pop
Similar to call and call_value, except used if defined and +if RETURN_POPS_ARGS is nonzero. They should emit a parallel +that contains both the function call and a set to indicate the +adjustment made to the frame pointer. + +

For machines where RETURN_POPS_ARGS can be nonzero, the use of these +patterns increases the number of functions for which the frame pointer +can be eliminated, if desired. + +


untyped_call
Subroutine call instruction returning a value of any type. Operand 0 is +the function to call; operand 1 is a memory location where the result of +calling the function is to be stored; operand 2 is a parallel +expression where each element is a set expression that indicates +the saving of a function return value into the result block. + +

This instruction pattern should be defined to support +__builtin_apply on machines where special instructions are needed +to call a subroutine with arbitrary arguments or to save the value +returned. This instruction pattern is required on machines that have +multiple registers that can hold a return value +(i.e. FUNCTION_VALUE_REGNO_P is true for more than one register). + +


return
Subroutine return instruction. This instruction pattern name should be +defined only if a single instruction can do all the work of returning +from a function. + +

Like the movm patterns, this pattern is also used after the +RTL generation phase. In this case it is to support machines where +multiple instructions are usually needed to return from a function, but +some class of functions only requires one instruction to implement a +return. Normally, the applicable functions are those which do not need +to save any registers or allocate stack space. + +

For such machines, the condition specified in this pattern should only +be true when reload_completed is nonzero and the function's +epilogue would only be a single instruction. For machines with register +windows, the routine leaf_function_p may be used to determine if +a register window push is required. + +

Machines that have conditional return instructions should define patterns +such as + +

          (define_insn ""
+            [(set (pc)
+                  (if_then_else (match_operator
+                                   0 "comparison_operator"
+                                   [(cc0) (const_int 0)])
+                                (return)
+                                (pc)))]
+            "condition"
+            "...")
+     
+

where condition would normally be the same condition specified on the +named return pattern. + +


untyped_return
Untyped subroutine return instruction. This instruction pattern should +be defined to support __builtin_return on machines where special +instructions are needed to return a value of any type. + +

Operand 0 is a memory location where the result of calling a function +with __builtin_apply is stored; operand 1 is a parallel +expression where each element is a set expression that indicates +the restoring of a function return value from the result block. + +


nop
No-op instruction. This instruction pattern name should always be defined +to output a no-op in assembler code. (const_int 0) will do as an +RTL pattern. + +


indirect_jump
An instruction to jump to an address which is operand zero. +This pattern name is mandatory on all machines. + +


casesi
Instruction to jump through a dispatch table, including bounds checking. +This instruction takes five operands: + +
    +
  1. The index to dispatch on, which has mode SImode. + +
  2. The lower bound for indices in the table, an integer constant. + +
  3. The total range of indices in the table—the largest index +minus the smallest one (both inclusive). + +
  4. A label that precedes the table itself. + +
  5. A label to jump to if the index has a value outside the bounds. +
+ +

The table is a addr_vec or addr_diff_vec inside of a +jump_insn. The number of elements in the table is one plus the +difference between the upper bound and the lower bound. + +


tablejump
Instruction to jump to a variable address. This is a low-level +capability which can be used to implement a dispatch table when there +is no casesi pattern. + +

This pattern requires two operands: the address or offset, and a label +which should immediately precede the jump table. If the macro +CASE_VECTOR_PC_RELATIVE evaluates to a nonzero value then the first +operand is an offset which counts from the address of the table; otherwise, +it is an absolute address to jump to. In either case, the first operand has +mode Pmode. + +

The tablejump insn is always the last insn before the jump +table it uses. Its assembler code normally has no need to use the +second operand, but you should incorporate it in the RTL pattern so +that the jump optimizer will not delete the table as unreachable code. + +


decrement_and_branch_until_zero
Conditional branch instruction that decrements a register and +jumps if the register is nonzero. Operand 0 is the register to +decrement and test; operand 1 is the label to jump to if the +register is nonzero. See Looping Patterns. + +

This optional instruction pattern is only used by the combiner, +typically for loops reversed by the loop optimizer when strength +reduction is enabled. + +


doloop_end
Conditional branch instruction that decrements a register and jumps if +the register is nonzero. This instruction takes five operands: Operand +0 is the register to decrement and test; operand 1 is the number of loop +iterations as a const_int or const0_rtx if this cannot be +determined until run-time; operand 2 is the actual or estimated maximum +number of iterations as a const_int; operand 3 is the number of +enclosed loops as a const_int (an innermost loop has a value of +1); operand 4 is the label to jump to if the register is nonzero. +See Looping Patterns. + +

This optional instruction pattern should be defined for machines with +low-overhead looping instructions as the loop optimizer will try to +modify suitable loops to utilize it. If nested low-overhead looping is +not supported, use a define_expand (see Expander Definitions) +and make the pattern fail if operand 3 is not const1_rtx. +Similarly, if the actual or estimated maximum number of iterations is +too large for this instruction, make it fail. + +


doloop_begin
Companion instruction to doloop_end required for machines that +need to perform some initialization, such as loading special registers +used by a low-overhead looping instruction. If initialization insns do +not always need to be emitted, use a define_expand +(see Expander Definitions) and make it fail. + +


canonicalize_funcptr_for_compare
Canonicalize the function pointer in operand 1 and store the result +into operand 0. + +

Operand 0 is always a reg and has mode Pmode; operand 1 +may be a reg, mem, symbol_ref, const_int, etc +and also has mode Pmode. + +

Canonicalization of a function pointer usually involves computing +the address of the function which would be called if the function +pointer were used in an indirect call. + +

Only define this pattern if function pointers on the target machine +can have different values but still call the same function when +used in an indirect call. + +


save_stack_block
save_stack_function
save_stack_nonlocal
restore_stack_block
restore_stack_function
restore_stack_nonlocal
Most machines save and restore the stack pointer by copying it to or +from an object of mode Pmode. Do not define these patterns on +such machines. + +

Some machines require special handling for stack pointer saves and +restores. On those machines, define the patterns corresponding to the +non-standard cases by using a define_expand (see Expander Definitions) that produces the required insns. The three types of +saves and restores are: + +

    +
  1. save_stack_block saves the stack pointer at the start of a block +that allocates a variable-sized object, and restore_stack_block +restores the stack pointer when the block is exited. + +
  2. save_stack_function and restore_stack_function do a +similar job for the outermost block of a function and are used when the +function allocates variable-sized objects or calls alloca. Only +the epilogue uses the restored stack pointer, allowing a simpler save or +restore sequence on some machines. + +
  3. save_stack_nonlocal is used in functions that contain labels +branched to by nested functions. It saves the stack pointer in such a +way that the inner function can use restore_stack_nonlocal to +restore the stack pointer. The compiler generates code to restore the +frame and argument pointer registers, but some machines require saving +and restoring additional data such as register window information or +stack backchains. Place insns in these patterns to save and restore any +such required data. +
+ +

When saving the stack pointer, operand 0 is the save area and operand 1 +is the stack pointer. The mode used to allocate the save area defaults +to Pmode but you can override that choice by defining the +STACK_SAVEAREA_MODE macro (see Storage Layout). You must +specify an integral mode, or VOIDmode if no save area is needed +for a particular type of save (either because no save is needed or +because a machine-specific save area can be used). Operand 0 is the +stack pointer and operand 1 is the save area for restore operations. If +save_stack_block is defined, operand 0 must not be +VOIDmode since these saves can be arbitrarily nested. + +

A save area is a mem that is at a constant offset from +virtual_stack_vars_rtx when the stack pointer is saved for use by +nonlocal gotos and a reg in the other two cases. + +


allocate_stack
Subtract (or add if STACK_GROWS_DOWNWARD is undefined) operand 1 from +the stack pointer to create space for dynamically allocated data. + +

Store the resultant pointer to this space into operand 0. If you +are allocating space from the main stack, do this by emitting a +move insn to copy virtual_stack_dynamic_rtx to operand 0. +If you are allocating the space elsewhere, generate code to copy the +location of the space to operand 0. In the latter case, you must +ensure this space gets freed when the corresponding space on the main +stack is free. + +

Do not define this pattern if all that must be done is the subtraction. +Some machines require other operations such as stack probes or +maintaining the back chain. Define this pattern to emit those +operations in addition to updating the stack pointer. + +


check_stack
If stack checking cannot be done on your system by probing the stack with +a load or store instruction (see Stack Checking), define this pattern +to perform the needed check and signaling an error if the stack +has overflowed. The single operand is the location in the stack furthest +from the current stack pointer that you need to validate. Normally, +on machines where this pattern is needed, you would obtain the stack +limit from a global or thread-specific variable or register. + +


nonlocal_goto
Emit code to generate a non-local goto, e.g., a jump from one function +to a label in an outer function. This pattern has four arguments, +each representing a value to be used in the jump. The first +argument is to be loaded into the frame pointer, the second is +the address to branch to (code to dispatch to the actual label), +the third is the address of a location where the stack is saved, +and the last is the address of the label, to be placed in the +location for the incoming static chain. + +

On most machines you need not define this pattern, since GCC will +already generate the correct code, which is to load the frame pointer +and static chain, restore the stack (using the +restore_stack_nonlocal pattern, if defined), and jump indirectly +to the dispatcher. You need only define this pattern if this code will +not work on your machine. + +


nonlocal_goto_receiver
This pattern, if defined, contains code needed at the target of a +nonlocal goto after the code already generated by GCC. You will not +normally need to define this pattern. A typical reason why you might +need this pattern is if some value, such as a pointer to a global table, +must be restored when the frame pointer is restored. Note that a nonlocal +goto only occurs within a unit-of-translation, so a global table pointer +that is shared by all functions of a given module need not be restored. +There are no arguments. + +


exception_receiver
This pattern, if defined, contains code needed at the site of an +exception handler that isn't needed at the site of a nonlocal goto. You +will not normally need to define this pattern. A typical reason why you +might need this pattern is if some value, such as a pointer to a global +table, must be restored after control flow is branched to the handler of +an exception. There are no arguments. + +


builtin_setjmp_setup
This pattern, if defined, contains additional code needed to initialize +the jmp_buf. You will not normally need to define this pattern. +A typical reason why you might need this pattern is if some value, such +as a pointer to a global table, must be restored. Though it is +preferred that the pointer value be recalculated if possible (given the +address of a label for instance). The single argument is a pointer to +the jmp_buf. Note that the buffer is five words long and that +the first three are normally used by the generic mechanism. + +


builtin_setjmp_receiver
This pattern, if defined, contains code needed at the site of an +built-in setjmp that isn't needed at the site of a nonlocal goto. You +will not normally need to define this pattern. A typical reason why you +might need this pattern is if some value, such as a pointer to a global +table, must be restored. It takes one argument, which is the label +to which builtin_longjmp transfered control; this pattern may be emitted +at a small offset from that label. + +


builtin_longjmp
This pattern, if defined, performs the entire action of the longjmp. +You will not normally need to define this pattern unless you also define +builtin_setjmp_setup. The single argument is a pointer to the +jmp_buf. + +


eh_return
This pattern, if defined, affects the way __builtin_eh_return, +and thence the call frame exception handling library routines, are +built. It is intended to handle non-trivial actions needed along +the abnormal return path. + +

The address of the exception handler to which the function should return +is passed as operand to this pattern. It will normally need to copied by +the pattern to some special register or memory location. +If the pattern needs to determine the location of the target call +frame in order to do so, it may use EH_RETURN_STACKADJ_RTX, +if defined; it will have already been assigned. + +

If this pattern is not defined, the default action will be to simply +copy the return address to EH_RETURN_HANDLER_RTX. Either +that macro or this pattern needs to be defined if call frame exception +handling is to be used. + +

+

prologue
This pattern, if defined, emits RTL for entry to a function. The function +entry is responsible for setting up the stack frame, initializing the frame +pointer register, saving callee saved registers, etc. + +

Using a prologue pattern is generally preferred over defining +TARGET_ASM_FUNCTION_PROLOGUE to emit assembly code for the prologue. + +

The prologue pattern is particularly useful for targets which perform +instruction scheduling. + +

+

epilogue
This pattern emits RTL for exit from a function. The function +exit is responsible for deallocating the stack frame, restoring callee saved +registers and emitting the return instruction. + +

Using an epilogue pattern is generally preferred over defining +TARGET_ASM_FUNCTION_EPILOGUE to emit assembly code for the epilogue. + +

The epilogue pattern is particularly useful for targets which perform +instruction scheduling or which have delay slots for their return instruction. + +


sibcall_epilogue
This pattern, if defined, emits RTL for exit from a function without the final +branch back to the calling function. This pattern will be emitted before any +sibling call (aka tail call) sites. + +

The sibcall_epilogue pattern must not clobber any arguments used for +parameter passing or any stack slots for arguments passed to the current +function. + +


trap
This pattern, if defined, signals an error, typically by causing some +kind of signal to be raised. Among other places, it is used by the Java +front end to signal `invalid array index' exceptions. + +


conditional_trap
Conditional trap instruction. Operand 0 is a piece of RTL which +performs a comparison. Operand 1 is the trap code, an integer. + +

A typical conditional_trap pattern looks like + +

          (define_insn "conditional_trap"
+            [(trap_if (match_operator 0 "trap_operator"
+                       [(cc0) (const_int 0)])
+                      (match_operand 1 "const_int_operand" "i"))]
+            ""
+            "...")
+     
+


prefetch
+This pattern, if defined, emits code for a non-faulting data prefetch +instruction. Operand 0 is the address of the memory to prefetch. Operand 1 +is a constant 1 if the prefetch is preparing for a write to the memory +address, or a constant 0 otherwise. Operand 2 is the expected degree of +temporal locality of the data and is a value between 0 and 3, inclusive; 0 +means that the data has no temporal locality, so it need not be left in the +cache after the access; 3 means that the data has a high degree of temporal +locality and should be left in all levels of cache possible; 1 and 2 mean, +respectively, a low or moderate degree of temporal locality. + +

Targets that do not support write prefetches or locality hints can ignore +the values of operands 1 and 2. + +


blockage
+This pattern defines a pseudo insn that prevents the instruction +scheduler from moving instructions across the boundary defined by the +blockage insn. Normally an UNSPEC_VOLATILE pattern. + +


memory_barrier
+If the target memory model is not fully synchronous, then this pattern +should be defined to an instruction that orders both loads and stores +before the instruction with respect to loads and stores after the instruction. +This pattern has no operands. + +


sync_compare_and_swapmode
+This pattern, if defined, emits code for an atomic compare-and-swap +operation. Operand 1 is the memory on which the atomic operation is +performed. Operand 2 is the “old” value to be compared against the +current contents of the memory location. Operand 3 is the “new” value +to store in the memory if the compare succeeds. Operand 0 is the result +of the operation; it should contain the contents of the memory +before the operation. If the compare succeeds, this should obviously be +a copy of operand 2. + +

This pattern must show that both operand 0 and operand 1 are modified. + +

This pattern must issue any memory barrier instructions such that all +memory operations before the atomic operation occur before the atomic +operation and all memory operations after the atomic operation occur +after the atomic operation. + +


sync_compare_and_swap_ccmode
+This pattern is just like sync_compare_and_swapmode, except +it should act as if compare part of the compare-and-swap were issued via +cmpm. This comparison will only be used with EQ and +NE branches and setcc operations. + +

Some targets do expose the success or failure of the compare-and-swap +operation via the status flags. Ideally we wouldn't need a separate +named pattern in order to take advantage of this, but the combine pass +does not handle patterns with multiple sets, which is required by +definition for sync_compare_and_swapmode. + +


sync_addmode, sync_submode
sync_iormode, sync_andmode
sync_xormode, sync_nandmode
+These patterns emit code for an atomic operation on memory. +Operand 0 is the memory on which the atomic operation is performed. +Operand 1 is the second operand to the binary operator. + +

The “nand” operation is ~op0 & op1. + +

This pattern must issue any memory barrier instructions such that all +memory operations before the atomic operation occur before the atomic +operation and all memory operations after the atomic operation occur +after the atomic operation. + +

If these patterns are not defined, the operation will be constructed +from a compare-and-swap operation, if defined. + +


sync_old_addmode, sync_old_submode
sync_old_iormode, sync_old_andmode
sync_old_xormode, sync_old_nandmode
+These patterns are emit code for an atomic operation on memory, +and return the value that the memory contained before the operation. +Operand 0 is the result value, operand 1 is the memory on which the +atomic operation is performed, and operand 2 is the second operand +to the binary operator. + +

This pattern must issue any memory barrier instructions such that all +memory operations before the atomic operation occur before the atomic +operation and all memory operations after the atomic operation occur +after the atomic operation. + +

If these patterns are not defined, the operation will be constructed +from a compare-and-swap operation, if defined. + +


sync_new_addmode, sync_new_submode
sync_new_iormode, sync_new_andmode
sync_new_xormode, sync_new_nandmode
+These patterns are like their sync_old_op counterparts, +except that they return the value that exists in the memory location +after the operation, rather than before the operation. + +


sync_lock_test_and_setmode
+This pattern takes two forms, based on the capabilities of the target. +In either case, operand 0 is the result of the operand, operand 1 is +the memory on which the atomic operation is performed, and operand 2 +is the value to set in the lock. + +

In the ideal case, this operation is an atomic exchange operation, in +which the previous value in memory operand is copied into the result +operand, and the value operand is stored in the memory operand. + +

For less capable targets, any value operand that is not the constant 1 +should be rejected with FAIL. In this case the target may use +an atomic test-and-set bit operation. The result operand should contain +1 if the bit was previously set and 0 if the bit was previously clear. +The true contents of the memory operand are implementation defined. + +

This pattern must issue any memory barrier instructions such that the +pattern as a whole acts as an acquire barrier, that is all memory +operations after the pattern do not occur until the lock is acquired. + +

If this pattern is not defined, the operation will be constructed from +a compare-and-swap operation, if defined. + +


sync_lock_releasemode
+This pattern, if defined, releases a lock set by +sync_lock_test_and_setmode. Operand 0 is the memory +that contains the lock; operand 1 is the value to store in the lock. + +

If the target doesn't implement full semantics for +sync_lock_test_and_setmode, any value operand which is not +the constant 0 should be rejected with FAIL, and the true contents +of the memory operand are implementation defined. + +

This pattern must issue any memory barrier instructions such that the +pattern as a whole acts as a release barrier, that is the lock is +released only after all previous memory operations have completed. + +

If this pattern is not defined, then a memory_barrier pattern +will be emitted, followed by a store of the value to the memory operand. + +


stack_protect_set
+This pattern, if defined, moves a Pmode value from the memory +in operand 1 to the memory in operand 0 without leaving the value in +a register afterward. This is to avoid leaking the value some place +that an attacker might use to rewrite the stack guard slot after +having clobbered it. + +

If this pattern is not defined, then a plain move pattern is generated. + +


stack_protect_test
+This pattern, if defined, compares a Pmode value from the +memory in operand 1 with the memory in operand 0 without leaving the +value in a register afterward and branches to operand 2 if the values +weren't equal. + +

If this pattern is not defined, then a plain compare pattern and +conditional branch pattern is used. + +


clear_cache
+This pattern, if defined, flushes the instruction cache for a region of +memory. The region is bounded to by the Pmode pointers in operand 0 +inclusive and operand 1 exclusive. + +

If this pattern is not defined, a call to the library function +__clear_cache is used. + +

+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statement-Operands.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statement-Operands.html new file mode 100644 index 0000000..4957108 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statement-Operands.html @@ -0,0 +1,427 @@ + + +Statement Operands - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Annotations, +Up: Tree SSA +



+
+ +

10.4 Statement Operands

+ +

+Almost every GIMPLE statement will contain a reference to a variable +or memory location. Since statements come in different shapes and +sizes, their operands are going to be located at various spots inside +the statement's tree. To facilitate access to the statement's +operands, they are organized into lists associated inside each +statement's annotation. Each element in an operand list is a pointer +to a VAR_DECL, PARM_DECL or SSA_NAME tree node. +This provides a very convenient way of examining and replacing +operands. + +

Data flow analysis and optimization is done on all tree nodes +representing variables. Any node for which SSA_VAR_P returns +nonzero is considered when scanning statement operands. However, not +all SSA_VAR_P variables are processed in the same way. For the +purposes of optimization, we need to distinguish between references to +local scalar variables and references to globals, statics, structures, +arrays, aliased variables, etc. The reason is simple, the compiler +can gather complete data flow information for a local scalar. On the +other hand, a global variable may be modified by a function call, it +may not be possible to keep track of all the elements of an array or +the fields of a structure, etc. + +

The operand scanner gathers two kinds of operands: real and +virtual. An operand for which is_gimple_reg returns true +is considered real, otherwise it is a virtual operand. We also +distinguish between uses and definitions. An operand is used if its +value is loaded by the statement (e.g., the operand at the RHS of an +assignment). If the statement assigns a new value to the operand, the +operand is considered a definition (e.g., the operand at the LHS of +an assignment). + +

Virtual and real operands also have very different data flow +properties. Real operands are unambiguous references to the +full object that they represent. For instance, given + +

     {
+       int a, b;
+       a = b
+     }
+
+

Since a and b are non-aliased locals, the statement +a = b will have one real definition and one real use because +variable b is completely modified with the contents of +variable a. Real definition are also known as killing +definitions. Similarly, the use of a reads all its bits. + +

In contrast, virtual operands are used with variables that can have +a partial or ambiguous reference. This includes structures, arrays, +globals, and aliased variables. In these cases, we have two types of +definitions. For globals, structures, and arrays, we can determine from +a statement whether a variable of these types has a killing definition. +If the variable does, then the statement is marked as having a +must definition of that variable. However, if a statement is only +defining a part of the variable (i.e. a field in a structure), or if we +know that a statement might define the variable but we cannot say for sure, +then we mark that statement as having a may definition. For +instance, given + +

     {
+       int a, b, *p;
+     
+       if (...)
+         p = &a;
+       else
+         p = &b;
+       *p = 5;
+       return *p;
+     }
+
+

The assignment *p = 5 may be a definition of a or +b. If we cannot determine statically where p is +pointing to at the time of the store operation, we create virtual +definitions to mark that statement as a potential definition site for +a and b. Memory loads are similarly marked with virtual +use operands. Virtual operands are shown in tree dumps right before +the statement that contains them. To request a tree dump with virtual +operands, use the -vops option to -fdump-tree: + +

     {
+       int a, b, *p;
+     
+       if (...)
+         p = &a;
+       else
+         p = &b;
+       # a = VDEF <a>
+       # b = VDEF <b>
+       *p = 5;
+     
+       # VUSE <a>
+       # VUSE <b>
+       return *p;
+     }
+
+

Notice that VDEF operands have two copies of the referenced +variable. This indicates that this is not a killing definition of +that variable. In this case we refer to it as a may definition +or aliased store. The presence of the second copy of the +variable in the VDEF operand will become important when the +function is converted into SSA form. This will be used to link all +the non-killing definitions to prevent optimizations from making +incorrect assumptions about them. + +

Operands are updated as soon as the statement is finished via a call +to update_stmt. If statement elements are changed via +SET_USE or SET_DEF, then no further action is required +(i.e., those macros take care of updating the statement). If changes +are made by manipulating the statement's tree directly, then a call +must be made to update_stmt when complete. Calling one of the +bsi_insert routines or bsi_replace performs an implicit +call to update_stmt. + +

10.4.1 Operand Iterators And Access Routines

+ +

+Operands are collected by tree-ssa-operands.c. They are stored +inside each statement's annotation and can be accessed through either the +operand iterators or an access routine. + +

The following access routines are available for examining operands: + +

    +
  1. SINGLE_SSA_{USE,DEF,TREE}_OPERAND: These accessors will return +NULL unless there is exactly one operand matching the specified flags. If +there is exactly one operand, the operand is returned as either a tree, +def_operand_p, or use_operand_p. + +
              tree t = SINGLE_SSA_TREE_OPERAND (stmt, flags);
    +          use_operand_p u = SINGLE_SSA_USE_OPERAND (stmt, SSA_ALL_VIRTUAL_USES);
    +          def_operand_p d = SINGLE_SSA_DEF_OPERAND (stmt, SSA_OP_ALL_DEFS);
    +     
    +
  2. ZERO_SSA_OPERANDS: This macro returns true if there are no +operands matching the specified flags. + +
              if (ZERO_SSA_OPERANDS (stmt, SSA_OP_ALL_VIRTUALS))
    +            return;
    +     
    +
  3. NUM_SSA_OPERANDS: This macro Returns the number of operands +matching 'flags'. This actually executes a loop to perform the count, so +only use this if it is really needed. + +
              int count = NUM_SSA_OPERANDS (stmt, flags)
    +     
    +
+ +

If you wish to iterate over some or all operands, use the +FOR_EACH_SSA_{USE,DEF,TREE}_OPERAND iterator. For example, to print +all the operands for a statement: + +

     void
+     print_ops (tree stmt)
+     {
+       ssa_op_iter;
+       tree var;
+     
+       FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_ALL_OPERANDS)
+         print_generic_expr (stderr, var, TDF_SLIM);
+     }
+
+

How to choose the appropriate iterator: + +

    +
  1. Determine whether you are need to see the operand pointers, or just the + trees, and choose the appropriate macro: + +
              Need            Macro:
    +          ----            -------
    +          use_operand_p   FOR_EACH_SSA_USE_OPERAND
    +          def_operand_p   FOR_EACH_SSA_DEF_OPERAND
    +          tree            FOR_EACH_SSA_TREE_OPERAND
    +     
    +
  2. You need to declare a variable of the type you are interested + in, and an ssa_op_iter structure which serves as the loop + controlling variable. + +
  3. Determine which operands you wish to use, and specify the flags of + those you are interested in. They are documented in + tree-ssa-operands.h: + +
              #define SSA_OP_USE              0x01    /* Real USE operands.  */
    +          #define SSA_OP_DEF              0x02    /* Real DEF operands.  */
    +          #define SSA_OP_VUSE             0x04    /* VUSE operands.  */
    +          #define SSA_OP_VMAYUSE          0x08    /* USE portion of VDEFS.  */
    +          #define SSA_OP_VDEF             0x10    /* DEF portion of VDEFS.  */
    +          
    +          /* These are commonly grouped operand flags.  */
    +          #define SSA_OP_VIRTUAL_USES     (SSA_OP_VUSE | SSA_OP_VMAYUSE)
    +          #define SSA_OP_VIRTUAL_DEFS     (SSA_OP_VDEF)
    +          #define SSA_OP_ALL_USES         (SSA_OP_VIRTUAL_USES | SSA_OP_USE)
    +          #define SSA_OP_ALL_DEFS         (SSA_OP_VIRTUAL_DEFS | SSA_OP_DEF)
    +          #define SSA_OP_ALL_OPERANDS     (SSA_OP_ALL_USES | SSA_OP_ALL_DEFS)
    +     
    +
+ +

So if you want to look at the use pointers for all the USE and +VUSE operands, you would do something like: + +

       use_operand_p use_p;
+       ssa_op_iter iter;
+     
+       FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, (SSA_OP_USE | SSA_OP_VUSE))
+         {
+           process_use_ptr (use_p);
+         }
+
+

The TREE macro is basically the same as the USE and +DEF macros, only with the use or def dereferenced via +USE_FROM_PTR (use_p) and DEF_FROM_PTR (def_p). Since we +aren't using operand pointers, use and defs flags can be mixed. + +

       tree var;
+       ssa_op_iter iter;
+     
+       FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_VUSE)
+         {
+            print_generic_expr (stderr, var, TDF_SLIM);
+         }
+
+

VDEFs are broken into two flags, one for the +DEF portion (SSA_OP_VDEF) and one for the USE portion +(SSA_OP_VMAYUSE). If all you want to look at are the +VDEFs together, there is a fourth iterator macro for this, +which returns both a def_operand_p and a use_operand_p for each +VDEF in the statement. Note that you don't need any flags for +this one. + +

       use_operand_p use_p;
+       def_operand_p def_p;
+       ssa_op_iter iter;
+     
+       FOR_EACH_SSA_MAYDEF_OPERAND (def_p, use_p, stmt, iter)
+         {
+           my_code;
+         }
+
+

There are many examples in the code as well, as well as the +documentation in tree-ssa-operands.h. + +

There are also a couple of variants on the stmt iterators regarding PHI +nodes. + +

FOR_EACH_PHI_ARG Works exactly like +FOR_EACH_SSA_USE_OPERAND, except it works over PHI arguments +instead of statement operands. + +

     /* Look at every virtual PHI use.  */
+     FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_VIRTUAL_USES)
+     {
+        my_code;
+     }
+     
+     /* Look at every real PHI use.  */
+     FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_USES)
+       my_code;
+     
+     /* Look at every every PHI use.  */
+     FOR_EACH_PHI_ARG (use_p, phi_stmt, iter, SSA_OP_ALL_USES)
+       my_code;
+
+

FOR_EACH_PHI_OR_STMT_{USE,DEF} works exactly like +FOR_EACH_SSA_{USE,DEF}_OPERAND, except it will function on +either a statement or a PHI node. These should be used when it is +appropriate but they are not quite as efficient as the individual +FOR_EACH_PHI and FOR_EACH_SSA routines. + +

     FOR_EACH_PHI_OR_STMT_USE (use_operand_p, stmt, iter, flags)
+       {
+          my_code;
+       }
+     
+     FOR_EACH_PHI_OR_STMT_DEF (def_operand_p, phi, iter, flags)
+       {
+          my_code;
+       }
+
+

10.4.2 Immediate Uses

+ +

+Immediate use information is now always available. Using the immediate use +iterators, you may examine every use of any SSA_NAME. For instance, +to change each use of ssa_var to ssa_var2 and call fold_stmt on +each stmt after that is done: + +

       use_operand_p imm_use_p;
+       imm_use_iterator iterator;
+       tree ssa_var, stmt;
+     
+     
+       FOR_EACH_IMM_USE_STMT (stmt, iterator, ssa_var)
+         {
+           FOR_EACH_IMM_USE_ON_STMT (imm_use_p, iterator)
+             SET_USE (imm_use_p, ssa_var_2);
+           fold_stmt (stmt);
+         }
+
+

There are 2 iterators which can be used. FOR_EACH_IMM_USE_FAST is +used when the immediate uses are not changed, i.e., you are looking at the +uses, but not setting them. + +

If they do get changed, then care must be taken that things are not changed +under the iterators, so use the FOR_EACH_IMM_USE_STMT and +FOR_EACH_IMM_USE_ON_STMT iterators. They attempt to preserve the +sanity of the use list by moving all the uses for a statement into +a controlled position, and then iterating over those uses. Then the +optimization can manipulate the stmt when all the uses have been +processed. This is a little slower than the FAST version since it adds a +placeholder element and must sort through the list a bit for each statement. +This placeholder element must be also be removed if the loop is +terminated early. The macro BREAK_FROM_IMM_USE_SAFE is provided +to do this : + +

       FOR_EACH_IMM_USE_STMT (stmt, iterator, ssa_var)
+         {
+           if (stmt == last_stmt)
+             BREAK_FROM_SAFE_IMM_USE (iter);
+     
+           FOR_EACH_IMM_USE_ON_STMT (imm_use_p, iterator)
+             SET_USE (imm_use_p, ssa_var_2);
+           fold_stmt (stmt);
+         }
+
+

There are checks in verify_ssa which verify that the immediate use list +is up to date, as well as checking that an optimization didn't break from the +loop without using this macro. It is safe to simply 'break'; from a +FOR_EACH_IMM_USE_FAST traverse. + +

Some useful functions and macros: +

    +
  1. has_zero_uses (ssa_var) : Returns true if there are no uses of +ssa_var. +
  2. has_single_use (ssa_var) : Returns true if there is only a +single use of ssa_var. +
  3. single_imm_use (ssa_var, use_operand_p *ptr, tree *stmt) : +Returns true if there is only a single use of ssa_var, and also returns +the use pointer and statement it occurs in in the second and third parameters. +
  4. num_imm_uses (ssa_var) : Returns the number of immediate uses of +ssa_var. It is better not to use this if possible since it simply +utilizes a loop to count the uses. +
  5. PHI_ARG_INDEX_FROM_USE (use_p) : Given a use within a PHI +node, return the index number for the use. An assert is triggered if the use +isn't located in a PHI node. +
  6. USE_STMT (use_p) : Return the statement a use occurs in. +
+ +

Note that uses are not put into an immediate use list until their statement is +actually inserted into the instruction stream via a bsi_* routine. + +

It is also still possible to utilize lazy updating of statements, but this +should be used only when absolutely required. Both alias analysis and the +dominator optimizations currently do this. + +

When lazy updating is being used, the immediate use information is out of date +and cannot be used reliably. Lazy updating is achieved by simply marking +statements modified via calls to mark_stmt_modified instead of +update_stmt. When lazy updating is no longer required, all the +modified statements must have update_stmt called in order to bring them +up to date. This must be done before the optimization is finished, or +verify_ssa will trigger an abort. + +

This is done with a simple loop over the instruction stream: +

       block_stmt_iterator bsi;
+       basic_block bb;
+       FOR_EACH_BB (bb)
+         {
+           for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
+             update_stmt_if_modified (bsi_stmt (bsi));
+         }
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statement-Sequences.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statement-Sequences.html new file mode 100644 index 0000000..b552835 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statement-Sequences.html @@ -0,0 +1,63 @@ + + +Statement Sequences - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Blocks, +Up: Statements +



+
+ +
10.2.4.2 Statement Sequences
+ +

+Multiple statements at the same nesting level are collected into a +STATEMENT_LIST. Statement lists are modified and traversed +using the interface in tree-iterator.h. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statements.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statements.html new file mode 100644 index 0000000..75cb8ff --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Statements.html @@ -0,0 +1,79 @@ + + +Statements - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: GIMPLE Expressions, +Up: GIMPLE +



+
+ +

10.2.4 Statements

+ +

+Most statements will be assignment statements, represented by +MODIFY_EXPR. A CALL_EXPR whose value is ignored can +also be a statement. No other C expressions can appear at statement level; +a reference to a volatile object is converted into a MODIFY_EXPR. +In GIMPLE form, type of MODIFY_EXPR is not meaningful. Instead, use type +of LHS or RHS. + +

There are also several varieties of complex statements. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Storage-Layout.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Storage-Layout.html new file mode 100644 index 0000000..9e3bf8d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Storage-Layout.html @@ -0,0 +1,740 @@ + + +Storage Layout - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Per-Function Data, +Up: Target Macros +



+
+ +

15.5 Storage Layout

+ +

+Note that the definitions of the macros in this table which are sizes or +alignments measured in bits do not need to be constant. They can be C +expressions that refer to static variables, such as the target_flags. +See Run-time Target. + +

+— Macro: BITS_BIG_ENDIAN
+

Define this macro to have the value 1 if the most significant bit in a +byte has the lowest number; otherwise define it to have the value zero. +This means that bit-field instructions count from the most significant +bit. If the machine has no bit-field instructions, then this must still +be defined, but it doesn't matter which value it is defined to. This +macro need not be a constant. + +

This macro does not affect the way structure fields are packed into +bytes or words; that is controlled by BYTES_BIG_ENDIAN. +

+ +
+— Macro: BYTES_BIG_ENDIAN
+

Define this macro to have the value 1 if the most significant byte in a +word has the lowest number. This macro need not be a constant. +

+ +
+— Macro: WORDS_BIG_ENDIAN
+

Define this macro to have the value 1 if, in a multiword object, the +most significant word has the lowest number. This applies to both +memory locations and registers; GCC fundamentally assumes that the +order of words in memory is the same as the order in registers. This +macro need not be a constant. +

+ +
+— Macro: LIBGCC2_WORDS_BIG_ENDIAN
+

Define this macro if WORDS_BIG_ENDIAN is not constant. This must be a +constant value with the same meaning as WORDS_BIG_ENDIAN, which will be +used only when compiling libgcc2.c. Typically the value will be set +based on preprocessor defines. +

+ +
+— Macro: FLOAT_WORDS_BIG_ENDIAN
+

Define this macro to have the value 1 if DFmode, XFmode or +TFmode floating point numbers are stored in memory with the word +containing the sign bit at the lowest address; otherwise define it to +have the value 0. This macro need not be a constant. + +

You need not define this macro if the ordering is the same as for +multi-word integers. +

+ +
+— Macro: BITS_PER_UNIT
+

Define this macro to be the number of bits in an addressable storage +unit (byte). If you do not define this macro the default is 8. +

+ +
+— Macro: BITS_PER_WORD
+

Number of bits in a word. If you do not define this macro, the default +is BITS_PER_UNIT * UNITS_PER_WORD. +

+ +
+— Macro: MAX_BITS_PER_WORD
+

Maximum number of bits in a word. If this is undefined, the default is +BITS_PER_WORD. Otherwise, it is the constant value that is the +largest value that BITS_PER_WORD can have at run-time. +

+ +
+— Macro: UNITS_PER_WORD
+

Number of storage units in a word; normally the size of a general-purpose +register, a power of two from 1 or 8. +

+ +
+— Macro: MIN_UNITS_PER_WORD
+

Minimum number of units in a word. If this is undefined, the default is +UNITS_PER_WORD. Otherwise, it is the constant value that is the +smallest value that UNITS_PER_WORD can have at run-time. +

+ +
+— Macro: UNITS_PER_SIMD_WORD
+

Number of units in the vectors that the vectorizer can produce. +The default is equal to UNITS_PER_WORD, because the vectorizer +can do some transformations even in absence of specialized SIMD +hardware. +

+ +
+— Macro: POINTER_SIZE
+

Width of a pointer, in bits. You must specify a value no wider than the +width of Pmode. If it is not equal to the width of Pmode, +you must define POINTERS_EXTEND_UNSIGNED. If you do not specify +a value the default is BITS_PER_WORD. +

+ +
+— Macro: POINTERS_EXTEND_UNSIGNED
+

A C expression that determines how pointers should be extended from +ptr_mode to either Pmode or word_mode. It is +greater than zero if pointers should be zero-extended, zero if they +should be sign-extended, and negative if some other sort of conversion +is needed. In the last case, the extension is done by the target's +ptr_extend instruction. + +

You need not define this macro if the ptr_mode, Pmode +and word_mode are all the same width. +

+ +
+— Macro: PROMOTE_MODE (m, unsignedp, type)
+

A macro to update m and unsignedp when an object whose type +is type and which has the specified mode and signedness is to be +stored in a register. This macro is only called when type is a +scalar type. + +

On most RISC machines, which only have operations that operate on a full +register, define this macro to set m to word_mode if +m is an integer mode narrower than BITS_PER_WORD. In most +cases, only integer modes should be widened because wider-precision +floating-point operations are usually more expensive than their narrower +counterparts. + +

For most machines, the macro definition does not change unsignedp. +However, some machines, have instructions that preferentially handle +either signed or unsigned quantities of certain modes. For example, on +the DEC Alpha, 32-bit loads from memory and 32-bit add instructions +sign-extend the result to 64 bits. On such machines, set +unsignedp according to which kind of extension is more efficient. + +

Do not define this macro if it would never modify m. +

+ +
+— Macro: PROMOTE_FUNCTION_MODE
+

Like PROMOTE_MODE, but is applied to outgoing function arguments or +function return values, as specified by TARGET_PROMOTE_FUNCTION_ARGS +and TARGET_PROMOTE_FUNCTION_RETURN, respectively. + +

The default is PROMOTE_MODE. +

+ +
+— Target Hook: bool TARGET_PROMOTE_FUNCTION_ARGS (tree fntype)
+

This target hook should return true if the promotion described by +PROMOTE_FUNCTION_MODE should be done for outgoing function +arguments. +

+ +
+— Target Hook: bool TARGET_PROMOTE_FUNCTION_RETURN (tree fntype)
+

This target hook should return true if the promotion described by +PROMOTE_FUNCTION_MODE should be done for the return value of +functions. + +

If this target hook returns true, TARGET_FUNCTION_VALUE +must perform the same promotions done by PROMOTE_FUNCTION_MODE. +

+ +
+— Macro: PARM_BOUNDARY
+

Normal alignment required for function parameters on the stack, in +bits. All stack parameters receive at least this much alignment +regardless of data type. On most machines, this is the same as the +size of an integer. +

+ +
+— Macro: STACK_BOUNDARY
+

Define this macro to the minimum alignment enforced by hardware for the +stack pointer on this machine. The definition is a C expression for the +desired alignment (measured in bits). This value is used as a default +if PREFERRED_STACK_BOUNDARY is not defined. On most machines, +this should be the same as PARM_BOUNDARY. +

+ +
+— Macro: PREFERRED_STACK_BOUNDARY
+

Define this macro if you wish to preserve a certain alignment for the +stack pointer, greater than what the hardware enforces. The definition +is a C expression for the desired alignment (measured in bits). This +macro must evaluate to a value equal to or larger than +STACK_BOUNDARY. +

+ +
+— Macro: FUNCTION_BOUNDARY
+

Alignment required for a function entry point, in bits. +

+ +
+— Macro: BIGGEST_ALIGNMENT
+

Biggest alignment that any data type can require on this machine, in +bits. Note that this is not the biggest alignment that is supported, +just the biggest alignment that, when violated, may cause a fault. +

+ +
+— Macro: MINIMUM_ATOMIC_ALIGNMENT
+

If defined, the smallest alignment, in bits, that can be given to an +object that can be referenced in one operation, without disturbing any +nearby object. Normally, this is BITS_PER_UNIT, but may be larger +on machines that don't have byte or half-word store operations. +

+ +
+— Macro: BIGGEST_FIELD_ALIGNMENT
+

Biggest alignment that any structure or union field can require on this +machine, in bits. If defined, this overrides BIGGEST_ALIGNMENT for +structure and union fields only, unless the field alignment has been set +by the __attribute__ ((aligned (n))) construct. +

+ +
+— Macro: ADJUST_FIELD_ALIGN (field, computed)
+

An expression for the alignment of a structure field field if the +alignment computed in the usual way (including applying of +BIGGEST_ALIGNMENT and BIGGEST_FIELD_ALIGNMENT to the +alignment) is computed. It overrides alignment only if the +field alignment has not been set by the +__attribute__ ((aligned (n))) construct. +

+ +
+— Macro: MAX_OFILE_ALIGNMENT
+

Biggest alignment supported by the object file format of this machine. +Use this macro to limit the alignment which can be specified using the +__attribute__ ((aligned (n))) construct. If not defined, +the default value is BIGGEST_ALIGNMENT. + +

On systems that use ELF, the default (in config/elfos.h) is +the largest supported 32-bit ELF section alignment representable on +a 32-bit host e.g. (((unsigned HOST_WIDEST_INT) 1 << 28) * 8). +On 32-bit ELF the largest supported section alignment in bits is +(0x80000000 * 8), but this is not representable on 32-bit hosts. +

+ +
+— Macro: DATA_ALIGNMENT (type, basic-align)
+

If defined, a C expression to compute the alignment for a variable in +the static store. type is the data type, and basic-align is +the alignment that the object would ordinarily have. The value of this +macro is used instead of that alignment to align the object. + +

If this macro is not defined, then basic-align is used. + +

One use of this macro is to increase alignment of medium-size data to +make it all fit in fewer cache lines. Another is to cause character +arrays to be word-aligned so that strcpy calls that copy +constants to character arrays can be done inline. +

+ +
+— Macro: CONSTANT_ALIGNMENT (constant, basic-align)
+

If defined, a C expression to compute the alignment given to a constant +that is being placed in memory. constant is the constant and +basic-align is the alignment that the object would ordinarily +have. The value of this macro is used instead of that alignment to +align the object. + +

If this macro is not defined, then basic-align is used. + +

The typical use of this macro is to increase alignment for string +constants to be word aligned so that strcpy calls that copy +constants can be done inline. +

+ +
+— Macro: LOCAL_ALIGNMENT (type, basic-align)
+

If defined, a C expression to compute the alignment for a variable in +the local store. type is the data type, and basic-align is +the alignment that the object would ordinarily have. The value of this +macro is used instead of that alignment to align the object. + +

If this macro is not defined, then basic-align is used. + +

One use of this macro is to increase alignment of medium-size data to +make it all fit in fewer cache lines. +

+ +
+— Macro: EMPTY_FIELD_BOUNDARY
+

Alignment in bits to be given to a structure bit-field that follows an +empty field such as int : 0;. + +

If PCC_BITFIELD_TYPE_MATTERS is true, it overrides this macro. +

+ +
+— Macro: STRUCTURE_SIZE_BOUNDARY
+

Number of bits which any structure or union's size must be a multiple of. +Each structure or union's size is rounded up to a multiple of this. + +

If you do not define this macro, the default is the same as +BITS_PER_UNIT. +

+ +
+— Macro: STRICT_ALIGNMENT
+

Define this macro to be the value 1 if instructions will fail to work +if given data not on the nominal alignment. If instructions will merely +go slower in that case, define this macro as 0. +

+ +
+— Macro: PCC_BITFIELD_TYPE_MATTERS
+

Define this if you wish to imitate the way many other C compilers handle +alignment of bit-fields and the structures that contain them. + +

The behavior is that the type written for a named bit-field (int, +short, or other integer type) imposes an alignment for the entire +structure, as if the structure really did contain an ordinary field of +that type. In addition, the bit-field is placed within the structure so +that it would fit within such a field, not crossing a boundary for it. + +

Thus, on most machines, a named bit-field whose type is written as +int would not cross a four-byte boundary, and would force +four-byte alignment for the whole structure. (The alignment used may +not be four bytes; it is controlled by the other alignment parameters.) + +

An unnamed bit-field will not affect the alignment of the containing +structure. + +

If the macro is defined, its definition should be a C expression; +a nonzero value for the expression enables this behavior. + +

Note that if this macro is not defined, or its value is zero, some +bit-fields may cross more than one alignment boundary. The compiler can +support such references if there are insv, extv, and +extzv insns that can directly reference memory. + +

The other known way of making bit-fields work is to define +STRUCTURE_SIZE_BOUNDARY as large as BIGGEST_ALIGNMENT. +Then every structure can be accessed with fullwords. + +

Unless the machine has bit-field instructions or you define +STRUCTURE_SIZE_BOUNDARY that way, you must define +PCC_BITFIELD_TYPE_MATTERS to have a nonzero value. + +

If your aim is to make GCC use the same conventions for laying out +bit-fields as are used by another compiler, here is how to investigate +what the other compiler does. Compile and run this program: + +

          struct foo1
+          {
+            char x;
+            char :0;
+            char y;
+          };
+          
+          struct foo2
+          {
+            char x;
+            int :0;
+            char y;
+          };
+          
+          main ()
+          {
+            printf ("Size of foo1 is %d\n",
+                    sizeof (struct foo1));
+            printf ("Size of foo2 is %d\n",
+                    sizeof (struct foo2));
+            exit (0);
+          }
+     
+

If this prints 2 and 5, then the compiler's behavior is what you would +get from PCC_BITFIELD_TYPE_MATTERS. +

+ +
+— Macro: BITFIELD_NBYTES_LIMITED
+

Like PCC_BITFIELD_TYPE_MATTERS except that its effect is limited +to aligning a bit-field within the structure. +

+ +
+— Target Hook: bool TARGET_ALIGN_ANON_BITFIELDS (void)
+

When PCC_BITFIELD_TYPE_MATTERS is true this hook will determine +whether unnamed bitfields affect the alignment of the containing +structure. The hook should return true if the structure should inherit +the alignment requirements of an unnamed bitfield's type. +

+ +
+— Target Hook: bool TARGET_NARROW_VOLATILE_BITFIELDS (void)
+

This target hook should return true if accesses to volatile bitfields +should use the narrowest mode possible. It should return false if +these accesses should use the bitfield container type. + +

The default is !TARGET_STRICT_ALIGN. +

+ +
+— Macro: MEMBER_TYPE_FORCES_BLK (field, mode)
+

Return 1 if a structure or array containing field should be accessed using +BLKMODE. + +

If field is the only field in the structure, mode is its +mode, otherwise mode is VOIDmode. mode is provided in the +case where structures of one field would require the structure's mode to +retain the field's mode. + +

Normally, this is not needed. +

+ +
+— Macro: ROUND_TYPE_ALIGN (type, computed, specified)
+

Define this macro as an expression for the alignment of a type (given +by type as a tree node) if the alignment computed in the usual +way is computed and the alignment explicitly specified was +specified. + +

The default is to use specified if it is larger; otherwise, use +the smaller of computed and BIGGEST_ALIGNMENT +

+ +
+— Macro: MAX_FIXED_MODE_SIZE
+

An integer expression for the size in bits of the largest integer +machine mode that should actually be used. All integer machine modes of +this size or smaller can be used for structures and unions with the +appropriate sizes. If this macro is undefined, GET_MODE_BITSIZE +(DImode) is assumed. +

+ +
+— Macro: STACK_SAVEAREA_MODE (save_level)
+

If defined, an expression of type enum machine_mode that +specifies the mode of the save area operand of a +save_stack_level named pattern (see Standard Names). +save_level is one of SAVE_BLOCK, SAVE_FUNCTION, or +SAVE_NONLOCAL and selects which of the three named patterns is +having its mode specified. + +

You need not define this macro if it always returns Pmode. You +would most commonly define this macro if the +save_stack_level patterns need to support both a 32- and a +64-bit mode. +

+ +
+— Macro: STACK_SIZE_MODE
+

If defined, an expression of type enum machine_mode that +specifies the mode of the size increment operand of an +allocate_stack named pattern (see Standard Names). + +

You need not define this macro if it always returns word_mode. +You would most commonly define this macro if the allocate_stack +pattern needs to support both a 32- and a 64-bit mode. +

+ +
+— Target Hook: enum machine_mode TARGET_LIBGCC_CMP_RETURN_MODE ()
+

This target hook should return the mode to be used for the return value +of compare instructions expanded to libgcc calls. If not defined +word_mode is returned which is the right choice for a majority of +targets. +

+ +
+— Target Hook: enum machine_mode TARGET_LIBGCC_SHIFT_COUNT_MODE ()
+

This target hook should return the mode to be used for the shift count operand +of shift instructions expanded to libgcc calls. If not defined +word_mode is returned which is the right choice for a majority of +targets. +

+ +
+— Macro: TARGET_FLOAT_FORMAT
+

A code distinguishing the floating point format of the target machine. +There are two defined values: + +

+
IEEE_FLOAT_FORMAT
This code indicates IEEE floating point. It is the default; there is no +need to define TARGET_FLOAT_FORMAT when the format is IEEE. + +
VAX_FLOAT_FORMAT
This code indicates the “F float” (for float) and “D float” +or “G float” formats (for double) used on the VAX and PDP-11. +
+ +

If your target uses a floating point format other than these, you must +define a new name_FLOAT_FORMAT code for it, and add support for +it to real.c. + +

The ordering of the component words of floating point values stored in +memory is controlled by FLOAT_WORDS_BIG_ENDIAN. +

+ +
+— Macro: MODE_HAS_NANS (mode)
+

When defined, this macro should be true if mode has a NaN +representation. The compiler assumes that NaNs are not equal to +anything (including themselves) and that addition, subtraction, +multiplication and division all return NaNs when one operand is +NaN. + +

By default, this macro is true if mode is a floating-point +mode and the target floating-point format is IEEE. +

+ +
+— Macro: MODE_HAS_INFINITIES (mode)
+

This macro should be true if mode can represent infinity. At +present, the compiler uses this macro to decide whether x - x +is always defined. By default, the macro is true when mode +is a floating-point mode and the target format is IEEE. +

+ +
+— Macro: MODE_HAS_SIGNED_ZEROS (mode)
+

True if mode distinguishes between positive and negative zero. +The rules are expected to follow the IEEE standard: + +

    +
  • x + x has the same sign as x. + +
  • If the sum of two values with opposite sign is zero, the result is +positive for all rounding modes expect towards −infinity, for +which it is negative. + +
  • The sign of a product or quotient is negative when exactly one +of the operands is negative. +
+ +

The default definition is true if mode is a floating-point +mode and the target format is IEEE. +

+ +
+— Macro: MODE_HAS_SIGN_DEPENDENT_ROUNDING (mode)
+

If defined, this macro should be true for mode if it has at +least one rounding mode in which x and -x can be +rounded to numbers of different magnitude. Two such modes are +towards −infinity and towards +infinity. + +

The default definition of this macro is true if mode is +a floating-point mode and the target format is IEEE. +

+ +
+— Macro: ROUND_TOWARDS_ZERO
+

If defined, this macro should be true if the prevailing rounding +mode is towards zero. A true value has the following effects: + +

    +
  • MODE_HAS_SIGN_DEPENDENT_ROUNDING will be false for all modes. + +
  • libgcc.a's floating-point emulator will round towards zero +rather than towards nearest. + +
  • The compiler's floating-point emulator will round towards zero after +doing arithmetic, and when converting from the internal float format to +the target format. +
+ +

The macro does not affect the parsing of string literals. When the +primary rounding mode is towards zero, library functions like +strtod might still round towards nearest, and the compiler's +parser should behave like the target's strtod where possible. + +

Not defining this macro is equivalent to returning zero. +

+ +
+— Macro: LARGEST_EXPONENT_IS_NORMAL (size)
+

This macro should return true if floats with size +bits do not have a NaN or infinity representation, but use the largest +exponent for normal numbers instead. + +

Defining this macro to true for size causes MODE_HAS_NANS +and MODE_HAS_INFINITIES to be false for size-bit modes. +It also affects the way libgcc.a and real.c emulate +floating-point arithmetic. + +

The default definition of this macro returns false for all sizes. +

+ +
+— Target Hook: bool TARGET_VECTOR_OPAQUE_P (tree type)
+

This target hook should return true a vector is opaque. That +is, if no cast is needed when copying a vector value of type +type into another vector lvalue of the same size. Vector opaque +types cannot be initialized. The default is that there are no such +types. +

+ +
+— Target Hook: bool TARGET_MS_BITFIELD_LAYOUT_P (tree record_type)
+

This target hook returns true if bit-fields in the given +record_type are to be laid out following the rules of Microsoft +Visual C/C++, namely: (i) a bit-field won't share the same storage +unit with the previous bit-field if their underlying types have +different sizes, and the bit-field will be aligned to the highest +alignment of the underlying types of itself and of the previous +bit-field; (ii) a zero-sized bit-field will affect the alignment of +the whole enclosing structure, even if it is unnamed; except that +(iii) a zero-sized bit-field will be disregarded unless it follows +another bit-field of nonzero size. If this hook returns true, +other macros that control bit-field layout are ignored. + +

When a bit-field is inserted into a packed record, the whole size +of the underlying type is used by one or more same-size adjacent +bit-fields (that is, if its long:3, 32 bits is used in the record, +and any additional adjacent long bit-fields are packed into the same +chunk of 32 bits. However, if the size changes, a new field of that +size is allocated). In an unpacked record, this is the same as using +alignment, but not equivalent when packing. + +

If both MS bit-fields and __attribute__((packed)) are used, +the latter will take precedence. If __attribute__((packed)) is +used on a single field when MS bit-fields are in use, it will take +precedence for that field, but the alignment of the rest of the structure +may affect its placement. +

+ +
+— Target Hook: bool TARGET_DECIMAL_FLOAT_SUPPORTED_P (void)
+

Returns true if the target supports decimal floating point. +

+ +
+— Target Hook: bool TARGET_FIXED_POINT_SUPPORTED_P (void)
+

Returns true if the target supports fixed-point arithmetic. +

+ +
+— Target Hook: void TARGET_EXPAND_TO_RTL_HOOK (void)
+

This hook is called just before expansion into rtl, allowing the target +to perform additional initializations or analysis before the expansion. +For example, the rs6000 port uses it to allocate a scratch stack slot +for use in copying SDmode values between memory and floating point +registers whenever the function being expanded has any SDmode +usage. +

+ +
+— Target Hook: void TARGET_INSTANTIATE_DECLS (void)
+

This hook allows the backend to perform additional instantiations on rtl +that are not actually in any insns yet, but will be later. +

+ +
+— Target Hook: const char * TARGET_MANGLE_TYPE (tree type)
+

If your target defines any fundamental types, or any types your target +uses should be mangled differently from the default, define this hook +to return the appropriate encoding for these types as part of a C++ +mangled name. The type argument is the tree structure representing +the type to be mangled. The hook may be applied to trees which are +not target-specific fundamental types; it should return NULL +for all such types, as well as arguments it does not recognize. If the +return value is not NULL, it must point to a statically-allocated +string constant. + +

Target-specific fundamental types might be new fundamental types or +qualified versions of ordinary fundamental types. Encode new +fundamental types as n name, where name +is the name used for the type in source code, and n is the +length of name in decimal. Encode qualified versions of +ordinary types as n name code, where +name is the name used for the type qualifier in source code, +n is the length of name as above, and code is the +code used to represent the unqualified version of this type. (See +write_builtin_type in cp/mangle.c for the list of +codes.) In both cases the spaces are for clarity; do not include any +spaces in your string. + +

This hook is applied to types prior to typedef resolution. If the mangled +name for a particular type depends only on that type's main variant, you +can perform typedef resolution yourself using TYPE_MAIN_VARIANT +before mangling. + +

The default version of this hook always returns NULL, which is +appropriate for a target that does not define any new fundamental +types. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Subdirectories.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Subdirectories.html new file mode 100644 index 0000000..32ce779 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Subdirectories.html @@ -0,0 +1,101 @@ + + +Subdirectories - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: gcc Directory +



+
+ +

6.3.1 Subdirectories of gcc

+ +

The gcc directory contains the following subdirectories: + +

+
language
Subdirectories for various languages. Directories containing a file +config-lang.in are language subdirectories. The contents of +the subdirectories cp (for C++), objc (for Objective-C) +and objcp (for Objective-C++) are documented in this manual +(see Passes and Files of the Compiler); those for other +languages are not. See Anatomy of a Language Front End, +for details of the files in these directories. + +
config
Configuration files for supported architectures and operating +systems. See Anatomy of a Target Back End, for +details of the files in this directory. + +
doc
Texinfo documentation for GCC, together with automatically generated +man pages and support for converting the installation manual to +HTML. See Documentation. + +
fixinc
The support for fixing system headers to work with GCC. See +fixinc/README for more information. The headers fixed by this +mechanism are installed in libsubdir/include. Along with +those headers, README-fixinc is also installed, as +libsubdir/include/README. + +
ginclude
System headers installed by GCC, mainly those required by the C +standard of freestanding implementations. See Headers Installed by GCC, for details of when these and other headers are +installed. + +
intl
GNU libintl, from GNU gettext, for systems which do not +include it in libc. Properly, this directory should be at top level, +parallel to the gcc directory. + +
po
Message catalogs with translations of messages produced by GCC into +various languages, language.po. This directory also +contains gcc.pot, the template for these message catalogues, +exgettext, a wrapper around gettext to extract the +messages from the GCC sources and create gcc.pot, which is run +by make gcc.pot, and EXCLUDES, a list of files from +which messages should not be extracted. + +
testsuite
The GCC testsuites (except for those for runtime libraries). +See Testsuites. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Substitutions.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Substitutions.html new file mode 100644 index 0000000..795ae77 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Substitutions.html @@ -0,0 +1,113 @@ + + +Substitutions - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Defining Mode Iterators, +Up: Mode Iterators +



+
+ +
14.22.1.2 Substitution in Mode Iterators
+ +

+If an .md file construct uses mode iterators, each version of the +construct will often need slightly different strings or modes. For +example: + +

    +
  • When a define_expand defines several addm3 patterns +(see Standard Names), each expander will need to use the +appropriate mode name for m. + +
  • When a define_insn defines several instruction patterns, +each instruction will often use a different assembler mnemonic. + +
  • When a define_insn requires operands with different modes, +using an iterator for one of the operand modes usually requires a specific +mode for the other operand(s). +
+ +

GCC supports such variations through a system of “mode attributes”. +There are two standard attributes: mode, which is the name of +the mode in lower case, and MODE, which is the same thing in +upper case. You can define other attributes using: + +

     (define_mode_attr name [(mode1 "value1") ... (moden "valuen")])
+
+

where name is the name of the attribute and valuei +is the value associated with modei. + +

When GCC replaces some :iterator with :mode, it will scan +each string and mode in the pattern for sequences of the form +<iterator:attr>, where attr is the name of a +mode attribute. If the attribute is defined for mode, the whole +<...> sequence will be replaced by the appropriate attribute +value. + +

For example, suppose an .md file has: + +

     (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
+     (define_mode_attr load [(SI "lw") (DI "ld")])
+
+

If one of the patterns that uses :P contains the string +"<P:load>\t%0,%1", the SI version of that pattern +will use "lw\t%0,%1" and the DI version will use +"ld\t%0,%1". + +

Here is an example of using an attribute for a mode: + +

     (define_mode_iterator LONG [SI DI])
+     (define_mode_attr SHORT [(SI "HI") (DI "SI")])
+     (define_insn ...
+       (sign_extend:LONG (match_operand:<LONG:SHORT> ...)) ...)
+
+

The iterator: prefix may be omitted, in which case the +substitution will be attempted for every iterator expansion. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/System-Config.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/System-Config.html new file mode 100644 index 0000000..5f7d3b2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/System-Config.html @@ -0,0 +1,78 @@ + + +System Config - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Config Fragments, +Up: Configuration +



+
+ +
6.3.2.2 The config.build; config.host; and config.gcc Files
+ +

The config.build file contains specific rules for particular systems +which GCC is built on. This should be used as rarely as possible, as the +behavior of the build system can always be detected by autoconf. + +

The config.host file contains specific rules for particular systems +which GCC will run on. This is rarely needed. + +

The config.gcc file contains specific rules for particular systems +which GCC will generate code for. This is usually needed. + +

Each file has a list of the shell variables it sets, with descriptions, at the +top of the file. + +

FIXME: document the contents of these files, and what variables should +be set to control build, host and target configuration. + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html new file mode 100644 index 0000000..95ffc05 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/TARGET_005fHAVE_005fSWITCHABLE_005fBSS_005fSECTIONS.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html new file mode 100644 index 0000000..78be342 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/TARGET_005fSHIFT_005fTRUNCATION_005fMASK.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tagging-Insns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tagging-Insns.html new file mode 100644 index 0000000..966aa48 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tagging-Insns.html @@ -0,0 +1,146 @@ + + +Tagging Insns - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Expressions, +Up: Insn Attributes +



+
+ +

14.19.3 Assigning Attribute Values to Insns

+ +

+The value assigned to an attribute of an insn is primarily determined by +which pattern is matched by that insn (or which define_peephole +generated it). Every define_insn and define_peephole can +have an optional last argument to specify the values of attributes for +matching insns. The value of any attribute not specified in a particular +insn is set to the default value for that attribute, as specified in its +define_attr. Extensive use of default values for attributes +permits the specification of the values for only one or two attributes +in the definition of most insn patterns, as seen in the example in the +next section. + +

The optional last argument of define_insn and +define_peephole is a vector of expressions, each of which defines +the value for a single attribute. The most general way of assigning an +attribute's value is to use a set expression whose first operand is an +attr expression giving the name of the attribute being set. The +second operand of the set is an attribute expression +(see Expressions) giving the value of the attribute. + +

When the attribute value depends on the alternative attribute +(i.e., which is the applicable alternative in the constraint of the +insn), the set_attr_alternative expression can be used. It +allows the specification of a vector of attribute expressions, one for +each alternative. + +

When the generality of arbitrary attribute expressions is not required, +the simpler set_attr expression can be used, which allows +specifying a string giving either a single attribute value or a list +of attribute values, one for each alternative. + +

The form of each of the above specifications is shown below. In each case, +name is a string specifying the attribute to be set. + +

+
(set_attr name value-string)
value-string is either a string giving the desired attribute value, +or a string containing a comma-separated list giving the values for +succeeding alternatives. The number of elements must match the number +of alternatives in the constraint of the insn pattern. + +

Note that it may be useful to specify * for some alternative, in +which case the attribute will assume its default value for insns matching +that alternative. + +


(set_attr_alternative name [value1 value2 ...])
Depending on the alternative of the insn, the value will be one of the +specified values. This is a shorthand for using a cond with +tests on the alternative attribute. + +


(set (attr name) value)
The first operand of this set must be the special RTL expression +attr, whose sole operand is a string giving the name of the +attribute being set. value is the value of the attribute. +
+ +

The following shows three different ways of representing the same +attribute value specification: + +

     (set_attr "type" "load,store,arith")
+     
+     (set_attr_alternative "type"
+                           [(const_string "load") (const_string "store")
+                            (const_string "arith")])
+     
+     (set (attr "type")
+          (cond [(eq_attr "alternative" "1") (const_string "load")
+                 (eq_attr "alternative" "2") (const_string "store")]
+                (const_string "arith")))
+
+

The define_asm_attributes expression provides a mechanism to +specify the attributes assigned to insns produced from an asm +statement. It has the form: + +

     (define_asm_attributes [attr-sets])
+
+

where attr-sets is specified the same as for both the +define_insn and the define_peephole expressions. + +

These values will typically be the “worst case” attribute values. For +example, they might indicate that the condition code will be clobbered. + +

A specification for a length attribute is handled specially. The +way to compute the length of an asm insn is to multiply the +length specified in the expression define_asm_attributes by the +number of machine instructions specified in the asm statement, +determined by counting the number of semicolons and newlines in the +string. Therefore, the value of the length attribute specified +in a define_asm_attributes should be the maximum possible length +of a single machine instruction. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tail-Calls.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tail-Calls.html new file mode 100644 index 0000000..c71119c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tail-Calls.html @@ -0,0 +1,84 @@ + + +Tail Calls - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Profiling, +Up: Stack and Calling +



+
+ +

15.10.13 Permitting tail calls

+ +

+ +

+— Target Hook: bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree decl, tree exp)
+

True if it is ok to do sibling call optimization for the specified +call expression exp. decl will be the called function, +or NULL if this is an indirect call. + +

It is not uncommon for limitations of calling conventions to prevent +tail calls to functions outside the current unit of translation, or +during PIC compilation. The hook is used to enforce these restrictions, +as the sibcall md pattern can not fail, or fall over to a +“normal” call. The criteria for successful sibling call optimization +may vary greatly between different architectures. +

+ +
+— Target Hook: void TARGET_EXTRA_LIVE_ON_ENTRY (bitmap *regs)
+

Add any hard registers to regs that are live on entry to the +function. This hook only needs to be defined to provide registers that +cannot be found by examination of FUNCTION_ARG_REGNO_P, the callee saved +registers, STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM, +TARGET_STRUCT_VALUE_RTX, FRAME_POINTER_REGNUM, EH_USES, +FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Attributes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Attributes.html new file mode 100644 index 0000000..0e55d45 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Attributes.html @@ -0,0 +1,158 @@ + + +Target Attributes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Mode Switching, +Up: Target Macros +



+
+ +

15.25 Defining target-specific uses of __attribute__

+ +

+Target-specific attributes may be defined for functions, data and types. +These are described using the following target hooks; they also need to +be documented in extend.texi. + +

+— Target Hook: const struct attribute_spec * TARGET_ATTRIBUTE_TABLE
+

If defined, this target hook points to an array of struct +attribute_spec (defined in tree.h) specifying the machine +specific attributes for this target and some of the restrictions on the +entities to which these attributes are applied and the arguments they +take. +

+ +
+— Target Hook: int TARGET_COMP_TYPE_ATTRIBUTES (tree type1, tree type2)
+

If defined, this target hook is a function which returns zero if the attributes on +type1 and type2 are incompatible, one if they are compatible, +and two if they are nearly compatible (which causes a warning to be +generated). If this is not defined, machine-specific attributes are +supposed always to be compatible. +

+ +
+— Target Hook: void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree type)
+

If defined, this target hook is a function which assigns default attributes to +newly defined type. +

+ +
+— Target Hook: tree TARGET_MERGE_TYPE_ATTRIBUTES (tree type1, tree type2)
+

Define this target hook if the merging of type attributes needs special +handling. If defined, the result is a list of the combined +TYPE_ATTRIBUTES of type1 and type2. It is assumed +that comptypes has already been called and returned 1. This +function may call merge_attributes to handle machine-independent +merging. +

+ +
+— Target Hook: tree TARGET_MERGE_DECL_ATTRIBUTES (tree olddecl, tree newdecl)
+

Define this target hook if the merging of decl attributes needs special +handling. If defined, the result is a list of the combined +DECL_ATTRIBUTES of olddecl and newdecl. +newdecl is a duplicate declaration of olddecl. Examples of +when this is needed are when one attribute overrides another, or when an +attribute is nullified by a subsequent definition. This function may +call merge_attributes to handle machine-independent merging. + +

If the only target-specific handling you require is dllimport +for Microsoft Windows targets, you should define the macro +TARGET_DLLIMPORT_DECL_ATTRIBUTES to 1. The compiler +will then define a function called +merge_dllimport_decl_attributes which can then be defined as +the expansion of TARGET_MERGE_DECL_ATTRIBUTES. You can also +add handle_dll_attribute in the attribute table for your port +to perform initial processing of the dllimport and +dllexport attributes. This is done in i386/cygwin.h and +i386/i386.c, for example. +

+ +
+— Target Hook: bool TARGET_VALID_DLLIMPORT_ATTRIBUTE_P (tree decl)
+

decl is a variable or function with __attribute__((dllimport)) +specified. Use this hook if the target needs to add extra validation +checks to handle_dll_attribute. +

+ +
+— Macro: TARGET_DECLSPEC
+

Define this macro to a nonzero value if you want to treat +__declspec(X) as equivalent to __attribute((X)). By +default, this behavior is enabled only for targets that define +TARGET_DLLIMPORT_DECL_ATTRIBUTES. The current implementation +of __declspec is via a built-in macro, but you should not rely +on this implementation detail. +

+ +
+— Target Hook: void TARGET_INSERT_ATTRIBUTES (tree node, tree *attr_ptr)
+

Define this target hook if you want to be able to add attributes to a decl +when it is being created. This is normally useful for back ends which +wish to implement a pragma by using the attributes which correspond to +the pragma's effect. The node argument is the decl which is being +created. The attr_ptr argument is a pointer to the attribute list +for this decl. The list itself should not be modified, since it may be +shared with other decls, but attributes may be chained on the head of +the list and *attr_ptr modified to point to the new +attributes, or a copy of the list may be made if further changes are +needed. +

+ +
+— Target Hook: bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (tree fndecl)
+

This target hook returns true if it is ok to inline fndecl +into the current function, despite its having target-specific +attributes, false otherwise. By default, if a function has a +target specific attribute attached to it, it will not be inlined. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Fragment.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Fragment.html new file mode 100644 index 0000000..4541228 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Fragment.html @@ -0,0 +1,166 @@ + + +Target Fragment - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Fragments +



+
+ +

17.1 Target Makefile Fragments

+ +

+Target makefile fragments can set these Makefile variables. + + + +

LIBGCC2_CFLAGS
Compiler flags to use when compiling libgcc2.c. + +


LIB2FUNCS_EXTRA
A list of source file names to be compiled or assembled and inserted +into libgcc.a. + +


Floating Point Emulation
To have GCC include software floating point libraries in libgcc.a +define FPBIT and DPBIT along with a few rules as follows: +
          # We want fine grained libraries, so use the new code
+          # to build the floating point emulation libraries.
+          FPBIT = fp-bit.c
+          DPBIT = dp-bit.c
+          
+          
+          fp-bit.c: $(srcdir)/config/fp-bit.c
+                  echo '#define FLOAT' > fp-bit.c
+                  cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+          
+          dp-bit.c: $(srcdir)/config/fp-bit.c
+                  cat $(srcdir)/config/fp-bit.c > dp-bit.c
+     
+

You may need to provide additional #defines at the beginning of fp-bit.c +and dp-bit.c to control target endianness and other options. + +


CRTSTUFF_T_CFLAGS
Special flags used when compiling crtstuff.c. +See Initialization. + +


CRTSTUFF_T_CFLAGS_S
Special flags used when compiling crtstuff.c for shared +linking. Used if you use crtbeginS.o and crtendS.o +in EXTRA-PARTS. +See Initialization. + +


MULTILIB_OPTIONS
For some targets, invoking GCC in different ways produces objects +that can not be linked together. For example, for some targets GCC +produces both big and little endian code. For these targets, you must +arrange for multiple versions of libgcc.a to be compiled, one for +each set of incompatible options. When GCC invokes the linker, it +arranges to link in the right version of libgcc.a, based on +the command line options used. + +

The MULTILIB_OPTIONS macro lists the set of options for which +special versions of libgcc.a must be built. Write options that +are mutually incompatible side by side, separated by a slash. Write +options that may be used together separated by a space. The build +procedure will build all combinations of compatible options. + +

For example, if you set MULTILIB_OPTIONS to m68000/m68020 +msoft-float, Makefile will build special versions of +libgcc.a using the following sets of options: -m68000, +-m68020, -msoft-float, -m68000 -msoft-float, and +-m68020 -msoft-float. + +


MULTILIB_DIRNAMES
If MULTILIB_OPTIONS is used, this variable specifies the +directory names that should be used to hold the various libraries. +Write one element in MULTILIB_DIRNAMES for each element in +MULTILIB_OPTIONS. If MULTILIB_DIRNAMES is not used, the +default value will be MULTILIB_OPTIONS, with all slashes treated +as spaces. + +

For example, if MULTILIB_OPTIONS is set to m68000/m68020 +msoft-float, then the default value of MULTILIB_DIRNAMES is +m68000 m68020 msoft-float. You may specify a different value if +you desire a different set of directory names. + +


MULTILIB_MATCHES
Sometimes the same option may be written in two different ways. If an +option is listed in MULTILIB_OPTIONS, GCC needs to know about +any synonyms. In that case, set MULTILIB_MATCHES to a list of +items of the form option=option to describe all relevant +synonyms. For example, m68000=mc68000 m68020=mc68020. + +


MULTILIB_EXCEPTIONS
Sometimes when there are multiple sets of MULTILIB_OPTIONS being +specified, there are combinations that should not be built. In that +case, set MULTILIB_EXCEPTIONS to be all of the switch exceptions +in shell case syntax that should not be built. + +

For example the ARM processor cannot execute both hardware floating +point instructions and the reduced size THUMB instructions at the same +time, so there is no need to build libraries with both of these +options enabled. Therefore MULTILIB_EXCEPTIONS is set to: +

          *mthumb/*mhard-float*
+     
+


MULTILIB_EXTRA_OPTS
Sometimes it is desirable that when building multiple versions of +libgcc.a certain options should always be passed on to the +compiler. In that case, set MULTILIB_EXTRA_OPTS to be the list +of options to be used for all builds. If you set this, you should +probably set CRTSTUFF_T_CFLAGS to a dash followed by it. + +


NATIVE_SYSTEM_HEADER_DIR
If the default location for system headers is not /usr/include, +you must set this to the directory containing the headers. This value +should match the value of the SYSTEM_INCLUDE_DIR macro. + +


SPECS
Unfortunately, setting MULTILIB_EXTRA_OPTS is not enough, since +it does not affect the build of target libraries, at least not the +build of the default multilib. One possible work-around is to use +DRIVER_SELF_SPECS to bring options from the specs file +as if they had been passed in the compiler driver command line. +However, you don't want to be adding these options after the toolchain +is installed, so you can instead tweak the specs file that will +be used during the toolchain build, while you still install the +original, built-in specs. The trick is to set SPECS to +some other filename (say specs.install), that will then be +created out of the built-in specs, and introduce a Makefile +rule to generate the specs file that's going to be used at +build time out of your specs.install. +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Macros.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Macros.html new file mode 100644 index 0000000..ea2512c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Macros.html @@ -0,0 +1,104 @@ + + +Target Macros - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Machine Desc, +Up: Top +



+
+ +

15 Target Description Macros and Functions

+ +

+In addition to the file machine.md, a machine description +includes a C header file conventionally given the name +machine.h and a C source file named machine.c. +The header file defines numerous macros that convey the information +about the target machine that does not fit into the scheme of the +.md file. The file tm.h should be a link to +machine.h. The header file config.h includes +tm.h and most compiler source files include config.h. The +source file defines a variable targetm, which is a structure +containing pointers to functions and data relating to the target +machine. machine.c should also contain their definitions, +if they are not defined elsewhere in GCC, and other functions called +through the macros defined in the .h file. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Structure.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Structure.html new file mode 100644 index 0000000..7c74243 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Target-Structure.html @@ -0,0 +1,85 @@ + + +Target Structure - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Target Macros +



+
+ +

15.1 The Global targetm Variable

+ +

+ +

+— Variable: struct gcc_target targetm
+

The target .c file must define the global targetm variable +which contains pointers to functions and data relating to the target +machine. The variable is declared in target.h; +target-def.h defines the macro TARGET_INITIALIZER which is +used to initialize the variable, and macros for the default initializers +for elements of the structure. The .c file should override those +macros for which the default definition is inappropriate. For example: +

          #include "target.h"
+          #include "target-def.h"
+          
+          /* Initialize the GCC target structure.  */
+          
+          #undef TARGET_COMP_TYPE_ATTRIBUTES
+          #define TARGET_COMP_TYPE_ATTRIBUTES machine_comp_type_attributes
+          
+          struct gcc_target targetm = TARGET_INITIALIZER;
+     
+
+ +

Where a macro should be defined in the .c file in this manner to +form part of the targetm structure, it is documented below as a +“Target Hook” with a prototype. Many macros will change in future +from being defined in the .h file to being part of the +targetm structure. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Temporaries.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Temporaries.html new file mode 100644 index 0000000..688215f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Temporaries.html @@ -0,0 +1,90 @@ + + +Temporaries - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Interfaces, +Up: GIMPLE +



+
+ +

10.2.2 Temporaries

+ +

+When gimplification encounters a subexpression which is too complex, it +creates a new temporary variable to hold the value of the subexpression, +and adds a new statement to initialize it before the current statement. +These special temporaries are known as expression temporaries, and are +allocated using get_formal_tmp_var. The compiler tries to +always evaluate identical expressions into the same temporary, to simplify +elimination of redundant calculations. + +

We can only use expression temporaries when we know that it will not be +reevaluated before its value is used, and that it will not be otherwise +modified1. +Other temporaries can be allocated using +get_initialized_tmp_var or create_tmp_var. + +

Currently, an expression like a = b + 5 is not reduced any +further. We tried converting it to something like +

       T1 = b + 5;
+       a = T1;
+
+

but this bloated the representation for minimal benefit. However, a +variable which must live in memory cannot appear in an expression; its +value is explicitly loaded into a temporary first. Similarly, storing +the value of an expression to a memory variable goes through a +temporary. + +

+
+

Footnotes

[1] These restrictions are derived from those in Morgan 4.8.

+ +


+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Test-Directives.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Test-Directives.html new file mode 100644 index 0000000..787bf84 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Test-Directives.html @@ -0,0 +1,266 @@ + + +Test Directives - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Test Idioms, +Up: Testsuites +



+
+ +

6.4.2 Directives used within DejaGnu tests

+ +

Test directives appear within comments in a test source file and begin +with dg-. Some of these are defined within DejaGnu and others +are local to the GCC testsuite. + +

The order in which test directives appear in a test can be important: +directives local to GCC sometimes override information used by the +DejaGnu directives, which know nothing about the GCC directives, so the +DejaGnu directives must precede GCC directives. + +

Several test directives include selectors which are usually preceded by +the keyword target or xfail. A selector is: one or more +target triplets, possibly including wildcard characters; a single +effective-target keyword; or a logical expression. Depending on the +context, the selector specifies whether a test is skipped and reported +as unsupported or is expected to fail. Use *-*-* to match any +target. +Effective-target keywords are defined in target-supports.exp in +the GCC testsuite. + +

A selector expression appears within curly braces and uses a single +logical operator: one of !, &&, or ||. An +operand is another selector expression, an effective-target keyword, +a single target triplet, or a list of target triplets within quotes or +curly braces. For example: + +

     { target { ! "hppa*-*-* ia64*-*-*" } }
+     { target { powerpc*-*-* && lp64 } }
+     { xfail { lp64 || vect_no_align } }
+
+
+
{ dg-do do-what-keyword [{ target/xfail selector }] }
do-what-keyword specifies how the test is compiled and whether +it is executed. It is one of: + +
+
preprocess
Compile with -E to run only the preprocessor. +
compile
Compile with -S to produce an assembly code file. +
assemble
Compile with -c to produce a relocatable object file. +
link
Compile, assemble, and link to produce an executable file. +
run
Produce and run an executable file, which is expected to return +an exit code of 0. +
+ +

The default is compile. That can be overridden for a set of +tests by redefining dg-do-what-default within the .exp +file for those tests. + +

If the directive includes the optional { target selector } +then the test is skipped unless the target system is included in the +list of target triplets or matches the effective-target keyword. + +

If do-what-keyword is run and the directive includes +the optional { xfail selector } and the selector is met +then the test is expected to fail. The xfail clause is ignored +for other values of do-what-keyword; those tests can use +directive dg-xfail-if. + +

{ dg-options options [{ target selector }] }
This DejaGnu directive provides a list of compiler options, to be used +if the target system matches selector, that replace the default +options used for this set of tests. + +
{ dg-add-options feature ... }
Add any compiler options that are needed to access certain features. +This directive does nothing on targets that enable the features by +default, or that don't provide them at all. It must come after +all dg-options directives. + +

The supported values of feature are: +

+
c99_runtime
The target's C99 runtime (both headers and libraries). + +
mips16_attribute
mips16 function attributes. Only MIPS targets support this feature, +and only then in certain modes. +
+ +
{ dg-skip-if comment { selector } { include-opts } { exclude-opts } }
Skip the test if the test system is included in selector and if +each of the options in include-opts is in the set of options with +which the test would be compiled and if none of the options in +exclude-opts is in the set of options with which the test would be +compiled. + +

Use "*" for an empty include-opts list and "" for +an empty exclude-opts list. + +

{ dg-xfail-if comment { selector } { include-opts } { exclude-opts } }
Expect the test to fail if the conditions (which are the same as for +dg-skip-if) are met. + +
{ dg-require-support args }
Skip the test if the target does not provide the required support; +see gcc-dg.exp in the GCC testsuite for the actual directives. +These directives must appear after any dg-do directive in the test +and before any dg-additional-sources directive. +They require at least one argument, which can be an empty string if the +specific procedure does not examine the argument. + +
{ dg-require-effective-target keyword }
Skip the test if the test target, including current multilib flags, +is not covered by the effective-target keyword. +This directive must appear after any dg-do directive in the test +and before any dg-additional-sources directive. + +
{ dg-shouldfail comment { selector } { include-opts } { exclude-opts } }
Expect the test executable to return a nonzero exit status if the +conditions (which are the same as for dg-skip-if) are met. + +
{ dg-error regexp [comment [{ target/xfail selector } [line] }]] }
This DejaGnu directive appears on a source line that is expected to get +an error message, or else specifies the source line associated with the +message. If there is no message for that line or if the text of that +message is not matched by regexp then the check fails and +comment is included in the FAIL message. The check does +not look for the string "error" unless it is part of regexp. + +
{ dg-warning regexp [comment [{ target/xfail selector } [line] }]] }
This DejaGnu directive appears on a source line that is expected to get +a warning message, or else specifies the source line associated with the +message. If there is no message for that line or if the text of that +message is not matched by regexp then the check fails and +comment is included in the FAIL message. The check does +not look for the string "warning" unless it is part of regexp. + +
{ dg-message regexp [comment [{ target/xfail selector } [line] }]] }
The line is expected to get a message other than an error or warning. +If there is no message for that line or if the text of that message is +not matched by regexp then the check fails and comment is +included in the FAIL message. + +
{ dg-bogus regexp [comment [{ target/xfail selector } [line] }]] }
This DejaGnu directive appears on a source line that should not get a +message matching regexp, or else specifies the source line +associated with the bogus message. It is usually used with xfail +to indicate that the message is a known problem for a particular set of +targets. + +
{ dg-excess-errors comment [{ target/xfail selector }] }
This DejaGnu directive indicates that the test is expected to fail due +to compiler messages that are not handled by dg-error, +dg-warning or dg-bogus. For this directive xfail +has the same effect as target. + +
{ dg-output regexp [{ target/xfail selector }] }
This DejaGnu directive compares regexp to the combined output +that the test executable writes to stdout and stderr. + +
{ dg-prune-output regexp }
Prune messages matching regexp from test output. + +
{ dg-additional-files "filelist" }
Specify additional files, other than source files, that must be copied +to the system where the compiler runs. + +
{ dg-additional-sources "filelist" }
Specify additional source files to appear in the compile line +following the main test file. + +
{ dg-final { local-directive } }
This DejaGnu directive is placed within a comment anywhere in the +source file and is processed after the test has been compiled and run. +Multiple dg-final commands are processed in the order in which +they appear in the source file. + +

The GCC testsuite defines the following directives to be used within +dg-final. + +

+
cleanup-coverage-files
Removes coverage data files generated for this test. + +
cleanup-repo-files
Removes files generated for this test for -frepo. + +
cleanup-rtl-dump suffix
Removes RTL dump files generated for this test. + +
cleanup-tree-dump suffix
Removes tree dump files matching suffix which were generated for +this test. + +
cleanup-saved-temps
Removes files for the current test which were kept for --save-temps. + +
scan-file filename regexp [{ target/xfail selector }]
Passes if regexp matches text in filename. + +
scan-file-not filename regexp [{ target/xfail selector }]
Passes if regexp does not match text in filename. + +
scan-hidden symbol [{ target/xfail selector }]
Passes if symbol is defined as a hidden symbol in the test's +assembly output. + +
scan-not-hidden symbol [{ target/xfail selector }]
Passes if symbol is not defined as a hidden symbol in the test's +assembly output. + +
scan-assembler-times regex num [{ target/xfail selector }]
Passes if regex is matched exactly num times in the test's +assembler output. + +
scan-assembler regex [{ target/xfail selector }]
Passes if regex matches text in the test's assembler output. + +
scan-assembler-not regex [{ target/xfail selector }]
Passes if regex does not match text in the test's assembler output. + +
scan-assembler-dem regex [{ target/xfail selector }]
Passes if regex matches text in the test's demangled assembler output. + +
scan-assembler-dem-not regex [{ target/xfail selector }]
Passes if regex does not match text in the test's demangled assembler +output. + +
scan-tree-dump-times regex num suffix [{ target/xfail selector }]
Passes if regex is found exactly num times in the dump file +with suffix suffix. + +
scan-tree-dump regex suffix [{ target/xfail selector }]
Passes if regex matches text in the dump file with suffix suffix. + +
scan-tree-dump-not regex suffix [{ target/xfail selector }]
Passes if regex does not match text in the dump file with suffix +suffix. + +
scan-tree-dump-dem regex suffix [{ target/xfail selector }]
Passes if regex matches demangled text in the dump file with +suffix suffix. + +
scan-tree-dump-dem-not regex suffix [{ target/xfail selector }]
Passes if regex does not match demangled text in the dump file with +suffix suffix. + +
output-exists [{ target/xfail selector }]
Passes if compiler output file exists. + +
output-exists-not [{ target/xfail selector }]
Passes if compiler output file does not exist. + +
run-gcov sourcefile
Check line counts in gcov tests. + +
run-gcov [branches] [calls] { opts sourcefile }
Check branch and/or call counts, in addition to line counts, in +gcov tests. +
+
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Test-Idioms.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Test-Idioms.html new file mode 100644 index 0000000..44b0dc4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Test-Idioms.html @@ -0,0 +1,125 @@ + + +Test Idioms - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Testsuites +



+
+ +

6.4.1 Idioms Used in Testsuite Code

+ +

In general, C testcases have a trailing -n.c, starting +with -1.c, in case other testcases with similar names are added +later. If the test is a test of some well-defined feature, it should +have a name referring to that feature such as +feature-1.c. If it does not test a well-defined feature +but just happens to exercise a bug somewhere in the compiler, and a +bug report has been filed for this bug in the GCC bug database, +prbug-number-1.c is the appropriate form of name. +Otherwise (for miscellaneous bugs not filed in the GCC bug database), +and previously more generally, test cases are named after the date on +which they were added. This allows people to tell at a glance whether +a test failure is because of a recently found bug that has not yet +been fixed, or whether it may be a regression, but does not give any +other information about the bug or where discussion of it may be +found. Some other language testsuites follow similar conventions. + +

In the gcc.dg testsuite, it is often necessary to test that an +error is indeed a hard error and not just a warning—for example, +where it is a constraint violation in the C standard, which must +become an error with -pedantic-errors. The following idiom, +where the first line shown is line line of the file and the line +that generates the error, is used for this: + +

     /* { dg-bogus "warning" "warning in place of error" } */
+     /* { dg-error "regexp" "message" { target *-*-* } line } */
+
+

It may be necessary to check that an expression is an integer constant +expression and has a certain value. To check that E has +value V, an idiom similar to the following is used: + +

     char x[((E) == (V) ? 1 : -1)];
+
+

In gcc.dg tests, __typeof__ is sometimes used to make +assertions about the types of expressions. See, for example, +gcc.dg/c99-condexpr-1.c. The more subtle uses depend on the +exact rules for the types of conditional expressions in the C +standard; see, for example, gcc.dg/c99-intconst-1.c. + +

It is useful to be able to test that optimizations are being made +properly. This cannot be done in all cases, but it can be done where +the optimization will lead to code being optimized away (for example, +where flow analysis or alias analysis should show that certain code +cannot be called) or to functions not being called because they have +been expanded as built-in functions. Such tests go in +gcc.c-torture/execute. Where code should be optimized away, a +call to a nonexistent function such as link_failure () may be +inserted; a definition + +

     #ifndef __OPTIMIZE__
+     void
+     link_failure (void)
+     {
+       abort ();
+     }
+     #endif
+
+

will also be needed so that linking still succeeds when the test is +run without optimization. When all calls to a built-in function +should have been optimized and no calls to the non-built-in version of +the function should remain, that function may be defined as +static to call abort () (although redeclaring a function +as static may not work on all targets). + +

All testcases must be portable. Target-specific testcases must have +appropriate code to avoid causing failures on unsupported systems; +unfortunately, the mechanisms for this differ by directory. + +

FIXME: discuss non-C testsuites here. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Testsuites.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Testsuites.html new file mode 100644 index 0000000..ad86d48 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Testsuites.html @@ -0,0 +1,72 @@ + + +Testsuites - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +

+

+Previous: gcc Directory, +Up: Source Tree +



+
+ +

6.4 Testsuites

+ +

GCC contains several testsuites to help maintain compiler quality. +Most of the runtime libraries and language front ends in GCC have +testsuites. Currently only the C language testsuites are documented +here; FIXME: document the others. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Texinfo-Manuals.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Texinfo-Manuals.html new file mode 100644 index 0000000..646eea9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Texinfo-Manuals.html @@ -0,0 +1,101 @@ + + +Texinfo Manuals - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Documentation +



+
+ +
6.3.7.1 Texinfo Manuals
+ +

The manuals for GCC as a whole, and the C and C++ front ends, are in +files doc/*.texi. Other front ends have their own manuals in +files language/*.texi. Common files +doc/include/*.texi are provided which may be included in +multiple manuals; the following files are in doc/include: + +

+
fdl.texi
The GNU Free Documentation License. +
funding.texi
The section “Funding Free Software”. +
gcc-common.texi
Common definitions for manuals. +
gpl.texi
gpl_v3.texi
The GNU General Public License. +
texinfo.tex
A copy of texinfo.tex known to work with the GCC manuals. +
+ +

DVI-formatted manuals are generated by make dvi, which uses +texi2dvi (via the Makefile macro $(TEXI2DVI)). +PDF-formatted manuals are generated by make pdf, which uses +texi2pdf (via the Makefile macro $(TEXI2PDF)). HTML +formatted manuals are generated by make html. Info +manuals are generated by make info (which is run as part of +a bootstrap); this generates the manuals in the source directory, +using makeinfo via the Makefile macro $(MAKEINFO), +and they are included in release distributions. + +

Manuals are also provided on the GCC web site, in both HTML and +PostScript forms. This is done via the script +maintainer-scripts/update_web_docs. Each manual to be +provided online must be listed in the definition of MANUALS in +that file; a file name.texi must only appear once in the +source tree, and the output manual must have the same name as the +source file. (However, other Texinfo files, included in manuals but +not themselves the root files of manuals, may have names that appear +more than once in the source tree.) The manual file +name.texi should only include other files in its own +directory or in doc/include. HTML manuals will be generated by +makeinfo --html, PostScript manuals by texi2dvi +and dvips, and PDF manuals by texi2pdf. +All Texinfo files that are parts of manuals must +be checked into SVN, even if they are generated files, for the +generation of online manuals to work. + +

The installation manual, doc/install.texi, is also provided on +the GCC web site. The HTML version is generated by the script +doc/install.texi2html. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Top-Level.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Top-Level.html new file mode 100644 index 0000000..0022b97 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Top-Level.html @@ -0,0 +1,112 @@ + + +Top Level - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Configure Terms, +Up: Source Tree +



+
+ +

6.2 Top Level Source Directory

+ +

The top level source directory in a GCC distribution contains several +files and directories that are shared with other software +distributions such as that of GNU Binutils. It also contains several +subdirectories that contain parts of GCC and its runtime libraries: + +

+
boehm-gc
The Boehm conservative garbage collector, used as part of the Java +runtime library. + +
contrib
Contributed scripts that may be found useful in conjunction with GCC. +One of these, contrib/texi2pod.pl, is used to generate man +pages from Texinfo manuals as part of the GCC build process. + +
fastjar
An implementation of the jar command, used with the Java +front end. + +
gcc
The main sources of GCC itself (except for runtime libraries), +including optimizers, support for different target architectures, +language front ends, and testsuites. See The gcc Subdirectory, for details. + +
include
Headers for the libiberty library. + +
libada
The Ada runtime library. + +
libcpp
The C preprocessor library. + +
libgfortran
The Fortran runtime library. + +
libffi
The libffi library, used as part of the Java runtime library. + +
libiberty
The libiberty library, used for portability and for some +generally useful data structures and algorithms. See Introduction (gnu libiberty), for more information +about this library. + +
libjava
The Java runtime library. + +
libmudflap
The libmudflap library, used for instrumenting pointer and array +dereferencing operations. + +
libobjc
The Objective-C and Objective-C++ runtime library. + +
libstdc++-v3
The C++ runtime library. + +
maintainer-scripts
Scripts used by the gccadmin account on gcc.gnu.org. + +
zlib
The zlib compression library, used by the Java front end and as +part of the Java runtime library. +
+ +

The build system in the top level directory, including how recursion +into subdirectories works and how building runtime libraries for +multilibs is handled, is documented in a separate manual, included +with GNU Binutils. See GNU configure and build system (The GNU configure and build system), for details. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Trampolines.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Trampolines.html new file mode 100644 index 0000000..a1fc76c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Trampolines.html @@ -0,0 +1,205 @@ + + +Trampolines - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Varargs, +Up: Target Macros +



+
+ +

15.12 Trampolines for Nested Functions

+ +

+A trampoline is a small piece of code that is created at run time +when the address of a nested function is taken. It normally resides on +the stack, in the stack frame of the containing function. These macros +tell GCC how to generate code to allocate and initialize a +trampoline. + +

The instructions in the trampoline must do two things: load a constant +address into the static chain register, and jump to the real address of +the nested function. On CISC machines such as the m68k, this requires +two instructions, a move immediate and a jump. Then the two addresses +exist in the trampoline as word-long immediate operands. On RISC +machines, it is often necessary to load each address into a register in +two parts. Then pieces of each address form separate immediate +operands. + +

The code generated to initialize the trampoline must store the variable +parts—the static chain value and the function address—into the +immediate operands of the instructions. On a CISC machine, this is +simply a matter of copying each address to a memory reference at the +proper offset from the start of the trampoline. On a RISC machine, it +may be necessary to take out pieces of the address and store them +separately. + +

+— Macro: TRAMPOLINE_TEMPLATE (file)
+

A C statement to output, on the stream file, assembler code for a +block of data that contains the constant parts of a trampoline. This +code should not include a label—the label is taken care of +automatically. + +

If you do not define this macro, it means no template is needed +for the target. Do not define this macro on systems where the block move +code to copy the trampoline into place would be larger than the code +to generate it on the spot. +

+ +
+— Macro: TRAMPOLINE_SECTION
+

Return the section into which the trampoline template is to be placed +(see Sections). The default value is readonly_data_section. +

+ +
+— Macro: TRAMPOLINE_SIZE
+

A C expression for the size in bytes of the trampoline, as an integer. +

+ +
+— Macro: TRAMPOLINE_ALIGNMENT
+

Alignment required for trampolines, in bits. + +

If you don't define this macro, the value of BIGGEST_ALIGNMENT +is used for aligning trampolines. +

+ +
+— Macro: INITIALIZE_TRAMPOLINE (addr, fnaddr, static_chain)
+

A C statement to initialize the variable parts of a trampoline. +addr is an RTX for the address of the trampoline; fnaddr is +an RTX for the address of the nested function; static_chain is an +RTX for the static chain value that should be passed to the function +when it is called. +

+ +
+— Macro: TRAMPOLINE_ADJUST_ADDRESS (addr)
+

A C statement that should perform any machine-specific adjustment in +the address of the trampoline. Its argument contains the address that +was passed to INITIALIZE_TRAMPOLINE. In case the address to be +used for a function call should be different from the address in which +the template was stored, the different address should be assigned to +addr. If this macro is not defined, addr will be used for +function calls. + +

If this macro is not defined, by default the trampoline is allocated as +a stack slot. This default is right for most machines. The exceptions +are machines where it is impossible to execute instructions in the stack +area. On such machines, you may have to implement a separate stack, +using this macro in conjunction with TARGET_ASM_FUNCTION_PROLOGUE +and TARGET_ASM_FUNCTION_EPILOGUE. + +

fp points to a data structure, a struct function, which +describes the compilation status of the immediate containing function of +the function which the trampoline is for. The stack slot for the +trampoline is in the stack frame of this containing function. Other +allocation strategies probably must do something analogous with this +information. +

+ +

Implementing trampolines is difficult on many machines because they have +separate instruction and data caches. Writing into a stack location +fails to clear the memory in the instruction cache, so when the program +jumps to that location, it executes the old contents. + +

Here are two possible solutions. One is to clear the relevant parts of +the instruction cache whenever a trampoline is set up. The other is to +make all trampolines identical, by having them jump to a standard +subroutine. The former technique makes trampoline execution faster; the +latter makes initialization faster. + +

To clear the instruction cache when a trampoline is initialized, define +the following macro. + +

+— Macro: CLEAR_INSN_CACHE (beg, end)
+

If defined, expands to a C expression clearing the instruction +cache in the specified interval. The definition of this macro would +typically be a series of asm statements. Both beg and +end are both pointer expressions. +

+ +

The operating system may also require the stack to be made executable +before calling the trampoline. To implement this requirement, define +the following macro. + +

+— Macro: ENABLE_EXECUTE_STACK
+

Define this macro if certain operations must be performed before executing +code located on the stack. The macro should expand to a series of C +file-scope constructs (e.g. functions) and provide a unique entry point +named __enable_execute_stack. The target is responsible for +emitting calls to the entry point in the code, for example from the +INITIALIZE_TRAMPOLINE macro. +

+ +

To use a standard subroutine, define the following macro. In addition, +you must make sure that the instructions in a trampoline fill an entire +cache line with identical instructions, or else ensure that the +beginning of the trampoline code is always aligned at the same point in +its cache line. Look in m68k.h as a guide. + +

+— Macro: TRANSFER_FROM_TRAMPOLINE
+

Define this macro if trampolines need a special subroutine to do their +work. The macro should expand to a series of asm statements +which will be compiled with GCC. They go in a library function named +__transfer_from_trampoline. + +

If you need to avoid executing the ordinary prologue code of a compiled +C function when you jump to the subroutine, you can do so by placing a +special label of your own in the assembler code. Use one asm +statement to generate an assembler label, and another to make the label +global. Then trampolines can use that label to jump directly to your +special assembler code. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree-SSA.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree-SSA.html new file mode 100644 index 0000000..94c2ff4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree-SSA.html @@ -0,0 +1,91 @@ + + +Tree SSA - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Control Flow, +Up: Top +



+
+ +

10 Analysis and Optimization of GIMPLE Trees

+ +

+GCC uses three main intermediate languages to represent the program +during compilation: GENERIC, GIMPLE and RTL. GENERIC is a +language-independent representation generated by each front end. It +is used to serve as an interface between the parser and optimizer. +GENERIC is a common representation that is able to represent programs +written in all the languages supported by GCC. + +

GIMPLE and RTL are used to optimize the program. GIMPLE is used for +target and language independent optimizations (e.g., inlining, +constant propagation, tail call elimination, redundancy elimination, +etc). Much like GENERIC, GIMPLE is a language independent, tree based +representation. However, it differs from GENERIC in that the GIMPLE +grammar is more restrictive: expressions contain no more than 3 +operands (except function calls), it has no control flow structures +and expressions with side-effects are only allowed on the right hand +side of assignments. See the chapter describing GENERIC and GIMPLE +for more details. + +

This chapter describes the data structures and functions used in the +GIMPLE optimizers (also known as “tree optimizers” or “middle +end”). In particular, it focuses on all the macros, data structures, +functions and programming constructs needed to implement optimization +passes for GIMPLE. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree-overview.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree-overview.html new file mode 100644 index 0000000..0942ad0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree-overview.html @@ -0,0 +1,144 @@ + + +Tree overview - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Deficiencies, +Up: Trees +



+
+ +

9.2 Overview

+ +

+The central data structure used by the internal representation is the +tree. These nodes, while all of the C type tree, are of +many varieties. A tree is a pointer type, but the object to +which it points may be of a variety of types. From this point forward, +we will refer to trees in ordinary type, rather than in this +font, except when talking about the actual C type tree. + +

You can tell what kind of node a particular tree is by using the +TREE_CODE macro. Many, many macros take trees as input and +return trees as output. However, most macros require a certain kind of +tree node as input. In other words, there is a type-system for trees, +but it is not reflected in the C type-system. + +

For safety, it is useful to configure GCC with --enable-checking. +Although this results in a significant performance penalty (since all +tree types are checked at run-time), and is therefore inappropriate in a +release version, it is extremely helpful during the development process. + +

Many macros behave as predicates. Many, although not all, of these +predicates end in _P. Do not rely on the result type of these +macros being of any particular type. You may, however, rely on the fact +that the type can be compared to 0, so that statements like +

     if (TEST_P (t) && !TEST_P (y))
+       x = 1;
+
+

and +

     int i = (TEST_P (t) != 0);
+
+

are legal. Macros that return int values now may be changed to +return tree values, or other pointers in the future. Even those +that continue to return int may return multiple nonzero codes +where previously they returned only zero and one. Therefore, you should +not write code like +

     if (TEST_P (t) == 1)
+
+

as this code is not guaranteed to work correctly in the future. + +

You should not take the address of values returned by the macros or +functions described here. In particular, no guarantee is given that the +values are lvalues. + +

In general, the names of macros are all in uppercase, while the names of +functions are entirely in lowercase. There are rare exceptions to this +rule. You should assume that any macro or function whose name is made +up entirely of uppercase letters may evaluate its arguments more than +once. You may assume that a macro or function whose name is made up +entirely of lowercase letters will evaluate its arguments only once. + +

The error_mark_node is a special tree. Its tree code is +ERROR_MARK, but since there is only ever one node with that code, +the usual practice is to compare the tree against +error_mark_node. (This test is just a test for pointer +equality.) If an error has occurred during front-end processing the +flag errorcount will be set. If the front end has encountered +code it cannot handle, it will issue a message to the user and set +sorrycount. When these flags are set, any macro or function +which normally returns a tree of a particular kind may instead return +the error_mark_node. Thus, if you intend to do any processing of +erroneous code, you must be prepared to deal with the +error_mark_node. + +

Occasionally, a particular tree slot (like an operand to an expression, +or a particular field in a declaration) will be referred to as +“reserved for the back end”. These slots are used to store RTL when +the tree is converted to RTL for use by the GCC back end. However, if +that process is not taking place (e.g., if the front end is being hooked +up to an intelligent editor), then those slots may be used by the +back end presently in use. + +

If you encounter situations that do not match this documentation, such +as tree nodes of types not mentioned here, or macros documented to +return entities of a particular kind that instead return entities of +some different kind, you have found a bug, either in the front end or in +the documentation. Please report these bugs as you would any other +bug. + +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree_002dSSA-passes.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree_002dSSA-passes.html new file mode 100644 index 0000000..8990df5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Tree_002dSSA-passes.html @@ -0,0 +1,528 @@ + + +Tree-SSA passes - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Pass manager, +Up: Passes +



+
+ +

8.4 Tree-SSA passes

+ +

The following briefly describes the tree optimization passes that are +run after gimplification and what source files they are located in. + +

    +
  • Remove useless statements + +

    This pass is an extremely simple sweep across the gimple code in which +we identify obviously dead code and remove it. Here we do things like +simplify if statements with constant conditions, remove +exception handling constructs surrounding code that obviously cannot +throw, remove lexical bindings that contain no variables, and other +assorted simplistic cleanups. The idea is to get rid of the obvious +stuff quickly rather than wait until later when it's more work to get +rid of it. This pass is located in tree-cfg.c and described by +pass_remove_useless_stmts. + +

  • Mudflap declaration registration + +

    If mudflap (see -fmudflap -fmudflapth -fmudflapir (Using the GNU Compiler Collection (GCC))) is +enabled, we generate code to register some variable declarations with +the mudflap runtime. Specifically, the runtime tracks the lifetimes of +those variable declarations that have their addresses taken, or whose +bounds are unknown at compile time (extern). This pass generates +new exception handling constructs (try/finally), and so +must run before those are lowered. In addition, the pass enqueues +declarations of static variables whose lifetimes extend to the entire +program. The pass is located in tree-mudflap.c and is described +by pass_mudflap_1. + +

  • OpenMP lowering + +

    If OpenMP generation (-fopenmp) is enabled, this pass lowers +OpenMP constructs into GIMPLE. + +

    Lowering of OpenMP constructs involves creating replacement +expressions for local variables that have been mapped using data +sharing clauses, exposing the control flow of most synchronization +directives and adding region markers to facilitate the creation of the +control flow graph. The pass is located in omp-low.c and is +described by pass_lower_omp. + +

  • OpenMP expansion + +

    If OpenMP generation (-fopenmp) is enabled, this pass expands +parallel regions into their own functions to be invoked by the thread +library. The pass is located in omp-low.c and is described by +pass_expand_omp. + +

  • Lower control flow + +

    This pass flattens if statements (COND_EXPR) +and moves lexical bindings (BIND_EXPR) out of line. After +this pass, all if statements will have exactly two goto +statements in its then and else arms. Lexical binding +information for each statement will be found in TREE_BLOCK rather +than being inferred from its position under a BIND_EXPR. This +pass is found in gimple-low.c and is described by +pass_lower_cf. + +

  • Lower exception handling control flow + +

    This pass decomposes high-level exception handling constructs +(TRY_FINALLY_EXPR and TRY_CATCH_EXPR) into a form +that explicitly represents the control flow involved. After this +pass, lookup_stmt_eh_region will return a non-negative +number for any statement that may have EH control flow semantics; +examine tree_can_throw_internal or tree_can_throw_external +for exact semantics. Exact control flow may be extracted from +foreach_reachable_handler. The EH region nesting tree is defined +in except.h and built in except.c. The lowering pass +itself is in tree-eh.c and is described by pass_lower_eh. + +

  • Build the control flow graph + +

    This pass decomposes a function into basic blocks and creates all of +the edges that connect them. It is located in tree-cfg.c and +is described by pass_build_cfg. + +

  • Find all referenced variables + +

    This pass walks the entire function and collects an array of all +variables referenced in the function, referenced_vars. The +index at which a variable is found in the array is used as a UID +for the variable within this function. This data is needed by the +SSA rewriting routines. The pass is located in tree-dfa.c +and is described by pass_referenced_vars. + +

  • Enter static single assignment form + +

    This pass rewrites the function such that it is in SSA form. After +this pass, all is_gimple_reg variables will be referenced by +SSA_NAME, and all occurrences of other variables will be +annotated with VDEFS and VUSES; PHI nodes will have +been inserted as necessary for each basic block. This pass is +located in tree-ssa.c and is described by pass_build_ssa. + +

  • Warn for uninitialized variables + +

    This pass scans the function for uses of SSA_NAMEs that +are fed by default definition. For non-parameter variables, such +uses are uninitialized. The pass is run twice, before and after +optimization. In the first pass we only warn for uses that are +positively uninitialized; in the second pass we warn for uses that +are possibly uninitialized. The pass is located in tree-ssa.c +and is defined by pass_early_warn_uninitialized and +pass_late_warn_uninitialized. + +

  • Dead code elimination + +

    This pass scans the function for statements without side effects whose +result is unused. It does not do memory life analysis, so any value +that is stored in memory is considered used. The pass is run multiple +times throughout the optimization process. It is located in +tree-ssa-dce.c and is described by pass_dce. + +

  • Dominator optimizations + +

    This pass performs trivial dominator-based copy and constant propagation, +expression simplification, and jump threading. It is run multiple times +throughout the optimization process. It it located in tree-ssa-dom.c +and is described by pass_dominator. + +

  • Forward propagation of single-use variables + +

    This pass attempts to remove redundant computation by substituting +variables that are used once into the expression that uses them and +seeing if the result can be simplified. It is located in +tree-ssa-forwprop.c and is described by pass_forwprop. + +

  • Copy Renaming + +

    This pass attempts to change the name of compiler temporaries involved in +copy operations such that SSA->normal can coalesce the copy away. When compiler +temporaries are copies of user variables, it also renames the compiler +temporary to the user variable resulting in better use of user symbols. It is +located in tree-ssa-copyrename.c and is described by +pass_copyrename. + +

  • PHI node optimizations + +

    This pass recognizes forms of PHI inputs that can be represented as +conditional expressions and rewrites them into straight line code. +It is located in tree-ssa-phiopt.c and is described by +pass_phiopt. + +

  • May-alias optimization + +

    This pass performs a flow sensitive SSA-based points-to analysis. +The resulting may-alias, must-alias, and escape analysis information +is used to promote variables from in-memory addressable objects to +non-aliased variables that can be renamed into SSA form. We also +update the VDEF/VUSE memory tags for non-renameable +aggregates so that we get fewer false kills. The pass is located +in tree-ssa-alias.c and is described by pass_may_alias. + +

    Interprocedural points-to information is located in +tree-ssa-structalias.c and described by pass_ipa_pta. + +

  • Profiling + +

    This pass rewrites the function in order to collect runtime block +and value profiling data. Such data may be fed back into the compiler +on a subsequent run so as to allow optimization based on expected +execution frequencies. The pass is located in predict.c and +is described by pass_profile. + +

  • Lower complex arithmetic + +

    This pass rewrites complex arithmetic operations into their component +scalar arithmetic operations. The pass is located in tree-complex.c +and is described by pass_lower_complex. + +

  • Scalar replacement of aggregates + +

    This pass rewrites suitable non-aliased local aggregate variables into +a set of scalar variables. The resulting scalar variables are +rewritten into SSA form, which allows subsequent optimization passes +to do a significantly better job with them. The pass is located in +tree-sra.c and is described by pass_sra. + +

  • Dead store elimination + +

    This pass eliminates stores to memory that are subsequently overwritten +by another store, without any intervening loads. The pass is located +in tree-ssa-dse.c and is described by pass_dse. + +

  • Tail recursion elimination + +

    This pass transforms tail recursion into a loop. It is located in +tree-tailcall.c and is described by pass_tail_recursion. + +

  • Forward store motion + +

    This pass sinks stores and assignments down the flowgraph closer to their +use point. The pass is located in tree-ssa-sink.c and is +described by pass_sink_code. + +

  • Partial redundancy elimination + +

    This pass eliminates partially redundant computations, as well as +performing load motion. The pass is located in tree-ssa-pre.c +and is described by pass_pre. + +

    Just before partial redundancy elimination, if +-funsafe-math-optimizations is on, GCC tries to convert +divisions to multiplications by the reciprocal. The pass is located +in tree-ssa-math-opts.c and is described by +pass_cse_reciprocal. + +

  • Full redundancy elimination + +

    This is a simpler form of PRE that only eliminates redundancies that +occur an all paths. It is located in tree-ssa-pre.c and +described by pass_fre. + +

  • Loop optimization + +

    The main driver of the pass is placed in tree-ssa-loop.c +and described by pass_loop. + +

    The optimizations performed by this pass are: + +

    Loop invariant motion. This pass moves only invariants that +would be hard to handle on rtl level (function calls, operations that expand to +nontrivial sequences of insns). With -funswitch-loops it also moves +operands of conditions that are invariant out of the loop, so that we can use +just trivial invariantness analysis in loop unswitching. The pass also includes +store motion. The pass is implemented in tree-ssa-loop-im.c. + +

    Canonical induction variable creation. This pass creates a simple counter +for number of iterations of the loop and replaces the exit condition of the +loop using it, in case when a complicated analysis is necessary to determine +the number of iterations. Later optimizations then may determine the number +easily. The pass is implemented in tree-ssa-loop-ivcanon.c. + +

    Induction variable optimizations. This pass performs standard induction +variable optimizations, including strength reduction, induction variable +merging and induction variable elimination. The pass is implemented in +tree-ssa-loop-ivopts.c. + +

    Loop unswitching. This pass moves the conditional jumps that are invariant +out of the loops. To achieve this, a duplicate of the loop is created for +each possible outcome of conditional jump(s). The pass is implemented in +tree-ssa-loop-unswitch.c. This pass should eventually replace the +rtl-level loop unswitching in loop-unswitch.c, but currently +the rtl-level pass is not completely redundant yet due to deficiencies +in tree level alias analysis. + +

    The optimizations also use various utility functions contained in +tree-ssa-loop-manip.c, cfgloop.c, cfgloopanal.c and +cfgloopmanip.c. + +

    Vectorization. This pass transforms loops to operate on vector types +instead of scalar types. Data parallelism across loop iterations is exploited +to group data elements from consecutive iterations into a vector and operate +on them in parallel. Depending on available target support the loop is +conceptually unrolled by a factor VF (vectorization factor), which is +the number of elements operated upon in parallel in each iteration, and the +VF copies of each scalar operation are fused to form a vector operation. +Additional loop transformations such as peeling and versioning may take place +to align the number of iterations, and to align the memory accesses in the loop. +The pass is implemented in tree-vectorizer.c (the main driver and general +utilities), tree-vect-analyze.c and tree-vect-transform.c. +Analysis of data references is in tree-data-ref.c. + +

    Autoparallelization. This pass splits the loop iteration space to run +into several threads. The pass is implemented in tree-parloops.c. + +

  • Tree level if-conversion for vectorizer + +

    This pass applies if-conversion to simple loops to help vectorizer. +We identify if convertible loops, if-convert statements and merge +basic blocks in one big block. The idea is to present loop in such +form so that vectorizer can have one to one mapping between statements +and available vector operations. This patch re-introduces COND_EXPR +at GIMPLE level. This pass is located in tree-if-conv.c and is +described by pass_if_conversion. + +

  • Conditional constant propagation + +

    This pass relaxes a lattice of values in order to identify those +that must be constant even in the presence of conditional branches. +The pass is located in tree-ssa-ccp.c and is described +by pass_ccp. + +

    A related pass that works on memory loads and stores, and not just +register values, is located in tree-ssa-ccp.c and described by +pass_store_ccp. + +

  • Conditional copy propagation + +

    This is similar to constant propagation but the lattice of values is +the “copy-of” relation. It eliminates redundant copies from the +code. The pass is located in tree-ssa-copy.c and described by +pass_copy_prop. + +

    A related pass that works on memory copies, and not just register +copies, is located in tree-ssa-copy.c and described by +pass_store_copy_prop. + +

  • Value range propagation + +

    This transformation is similar to constant propagation but +instead of propagating single constant values, it propagates +known value ranges. The implementation is based on Patterson's +range propagation algorithm (Accurate Static Branch Prediction by +Value Range Propagation, J. R. C. Patterson, PLDI '95). In +contrast to Patterson's algorithm, this implementation does not +propagate branch probabilities nor it uses more than a single +range per SSA name. This means that the current implementation +cannot be used for branch prediction (though adapting it would +not be difficult). The pass is located in tree-vrp.c and is +described by pass_vrp. + +

  • Folding built-in functions + +

    This pass simplifies built-in functions, as applicable, with constant +arguments or with inferable string lengths. It is located in +tree-ssa-ccp.c and is described by pass_fold_builtins. + +

  • Split critical edges + +

    This pass identifies critical edges and inserts empty basic blocks +such that the edge is no longer critical. The pass is located in +tree-cfg.c and is described by pass_split_crit_edges. + +

  • Control dependence dead code elimination + +

    This pass is a stronger form of dead code elimination that can +eliminate unnecessary control flow statements. It is located +in tree-ssa-dce.c and is described by pass_cd_dce. + +

  • Tail call elimination + +

    This pass identifies function calls that may be rewritten into +jumps. No code transformation is actually applied here, but the +data and control flow problem is solved. The code transformation +requires target support, and so is delayed until RTL. In the +meantime CALL_EXPR_TAILCALL is set indicating the possibility. +The pass is located in tree-tailcall.c and is described by +pass_tail_calls. The RTL transformation is handled by +fixup_tail_calls in calls.c. + +

  • Warn for function return without value + +

    For non-void functions, this pass locates return statements that do +not specify a value and issues a warning. Such a statement may have +been injected by falling off the end of the function. This pass is +run last so that we have as much time as possible to prove that the +statement is not reachable. It is located in tree-cfg.c and +is described by pass_warn_function_return. + +

  • Mudflap statement annotation + +

    If mudflap is enabled, we rewrite some memory accesses with code to +validate that the memory access is correct. In particular, expressions +involving pointer dereferences (INDIRECT_REF, ARRAY_REF, +etc.) are replaced by code that checks the selected address range +against the mudflap runtime's database of valid regions. This check +includes an inline lookup into a direct-mapped cache, based on +shift/mask operations of the pointer value, with a fallback function +call into the runtime. The pass is located in tree-mudflap.c and +is described by pass_mudflap_2. + +

  • Leave static single assignment form + +

    This pass rewrites the function such that it is in normal form. At +the same time, we eliminate as many single-use temporaries as possible, +so the intermediate language is no longer GIMPLE, but GENERIC. The +pass is located in tree-outof-ssa.c and is described by +pass_del_ssa. + +

  • Merge PHI nodes that feed into one another + +

    This is part of the CFG cleanup passes. It attempts to join PHI nodes +from a forwarder CFG block into another block with PHI nodes. The +pass is located in tree-cfgcleanup.c and is described by +pass_merge_phi. + +

  • Return value optimization + +

    If a function always returns the same local variable, and that local +variable is an aggregate type, then the variable is replaced with the +return value for the function (i.e., the function's DECL_RESULT). This +is equivalent to the C++ named return value optimization applied to +GIMPLE. The pass is located in tree-nrv.c and is described by +pass_nrv. + +

  • Return slot optimization + +

    If a function returns a memory object and is called as var = +foo(), this pass tries to change the call so that the address of +var is sent to the caller to avoid an extra memory copy. This +pass is located in tree-nrv.c and is described by +pass_return_slot. + +

  • Optimize calls to __builtin_object_size + +

    This is a propagation pass similar to CCP that tries to remove calls +to __builtin_object_size when the size of the object can be +computed at compile-time. This pass is located in +tree-object-size.c and is described by +pass_object_sizes. + +

  • Loop invariant motion + +

    This pass removes expensive loop-invariant computations out of loops. +The pass is located in tree-ssa-loop.c and described by +pass_lim. + +

  • Loop nest optimizations + +

    This is a family of loop transformations that works on loop nests. It +includes loop interchange, scaling, skewing and reversal and they are +all geared to the optimization of data locality in array traversals +and the removal of dependencies that hamper optimizations such as loop +parallelization and vectorization. The pass is located in +tree-loop-linear.c and described by +pass_linear_transform. + +

  • Removal of empty loops + +

    This pass removes loops with no code in them. The pass is located in +tree-ssa-loop-ivcanon.c and described by +pass_empty_loop. + +

  • Unrolling of small loops + +

    This pass completely unrolls loops with few iterations. The pass +is located in tree-ssa-loop-ivcanon.c and described by +pass_complete_unroll. + +

  • Predictive commoning + +

    This pass makes the code reuse the computations from the previous +iterations of the loops, especially loads and stores to memory. +It does so by storing the values of these computations to a bank +of temporary variables that are rotated at the end of loop. To avoid +the need for this rotation, the loop is then unrolled and the copies +of the loop body are rewritten to use the appropriate version of +the temporary variable. This pass is located in tree-predcom.c +and described by pass_predcom. + +

  • Array prefetching + +

    This pass issues prefetch instructions for array references inside +loops. The pass is located in tree-ssa-loop-prefetch.c and +described by pass_loop_prefetch. + +

  • Reassociation + +

    This pass rewrites arithmetic expressions to enable optimizations that +operate on them, like redundancy elimination and vectorization. The +pass is located in tree-ssa-reassoc.c and described by +pass_reassoc. + +

  • Optimization of stdarg functions + +

    This pass tries to avoid the saving of register arguments into the +stack on entry to stdarg functions. If the function doesn't +use any va_start macros, no registers need to be saved. If +va_start macros are used, the va_list variables don't +escape the function, it is only necessary to save registers that will +be used in va_arg macros. For instance, if va_arg is +only used with integral types in the function, floating point +registers don't need to be saved. This pass is located in +tree-stdarg.c and described by pass_stdarg. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Trees.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Trees.html new file mode 100644 index 0000000..a1221ab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Trees.html @@ -0,0 +1,106 @@ + + +Trees - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Passes, +Up: Top +



+
+ +

9 Trees: The intermediate representation used by the C and C++ front ends

+ +

+This chapter documents the internal representation used by GCC to +represent C and C++ source programs. When presented with a C or C++ +source program, GCC parses the program, performs semantic analysis +(including the generation of error messages), and then produces the +internal representation described here. This representation contains a +complete representation for the entire translation unit provided as +input to the front end. This representation is then typically processed +by a code-generator in order to produce machine code, but could also be +used in the creation of source browsers, intelligent editors, automatic +documentation generators, interpreters, and any other programs needing +the ability to process C or C++ code. + +

This chapter explains the internal representation. In particular, it +documents the internal representation for C and C++ source +constructs, and the macros, functions, and variables that can be used to +access these constructs. The C++ representation is largely a superset +of the representation used in the C front end. There is only one +construct used in C that does not appear in the C++ front end and that +is the GNU “nested function” extension. Many of the macros documented +here do not apply in C because the corresponding language constructs do +not appear in C. + +

If you are developing a “back end”, be it is a code-generator or some +other tool, that uses this representation, you may occasionally find +that you need to ask questions not easily answered by the functions and +macros available here. If that situation occurs, it is quite likely +that GCC already supports the functionality you desire, but that the +interface is simply not documented here. In that case, you should ask +the GCC maintainers (via mail to gcc@gcc.gnu.org) about +documenting the functionality you require. Similarly, if you find +yourself writing functions that do not deal directly with your back end, +but instead might be useful to other people using the GCC front end, you +should submit your patches for inclusion in GCC. + +

+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Type-Information.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Type-Information.html new file mode 100644 index 0000000..818c4de --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Type-Information.html @@ -0,0 +1,114 @@ + + +Type Information - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Previous: Header Dirs, +Up: Top +



+
+ +

20 Memory Management and Type Information

+ +

+GCC uses some fairly sophisticated memory management techniques, which +involve determining information about GCC's data structures from GCC's +source code and using this information to perform garbage collection and +implement precompiled headers. + +

A full C parser would be too complicated for this task, so a limited +subset of C is interpreted and special markers are used to determine +what parts of the source to look at. All struct and +union declarations that define data structures that are +allocated under control of the garbage collector must be marked. All +global variables that hold pointers to garbage-collected memory must +also be marked. Finally, all global variables that need to be saved +and restored by a precompiled header must be marked. (The precompiled +header mechanism can only save static variables if they're scalar. +Complex data structures must be allocated in garbage-collected memory +to be saved in a precompiled header.) + +

The full format of a marker is +

     GTY (([option] [(param)], [option] [(param)] ...))
+
+

but in most cases no options are needed. The outer double parentheses +are still necessary, though: GTY(()). Markers can appear: + +

    +
  • In a structure definition, before the open brace; +
  • In a global variable declaration, after the keyword static or +extern; and +
  • In a structure field definition, before the name of the field. +
+ +

Here are some examples of marking simple data structures and globals. + +

     struct tag GTY(())
+     {
+       fields...
+     };
+     
+     typedef struct tag GTY(())
+     {
+       fields...
+     } *typename;
+     
+     static GTY(()) struct tag *list;   /* points to GC memory */
+     static GTY(()) int counter;        /* save counter in a PCH */
+
+

The parser understands simple typedefs such as +typedef struct tag *name; and +typedef int name;. +These don't need to be marked. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Type-Layout.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Type-Layout.html new file mode 100644 index 0000000..fd32884 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Type-Layout.html @@ -0,0 +1,421 @@ + + +Type Layout - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Storage Layout, +Up: Target Macros +



+
+ +

15.6 Layout of Source Language Data Types

+ +

These macros define the sizes and other characteristics of the standard +basic data types used in programs being compiled. Unlike the macros in +the previous section, these apply to specific features of C and related +languages, rather than to fundamental aspects of storage layout. + +

+— Macro: INT_TYPE_SIZE
+

A C expression for the size in bits of the type int on the +target machine. If you don't define this, the default is one word. +

+ +
+— Macro: SHORT_TYPE_SIZE
+

A C expression for the size in bits of the type short on the +target machine. If you don't define this, the default is half a word. +(If this would be less than one storage unit, it is rounded up to one +unit.) +

+ +
+— Macro: LONG_TYPE_SIZE
+

A C expression for the size in bits of the type long on the +target machine. If you don't define this, the default is one word. +

+ +
+— Macro: ADA_LONG_TYPE_SIZE
+

On some machines, the size used for the Ada equivalent of the type +long by a native Ada compiler differs from that used by C. In +that situation, define this macro to be a C expression to be used for +the size of that type. If you don't define this, the default is the +value of LONG_TYPE_SIZE. +

+ +
+— Macro: LONG_LONG_TYPE_SIZE
+

A C expression for the size in bits of the type long long on the +target machine. If you don't define this, the default is two +words. If you want to support GNU Ada on your machine, the value of this +macro must be at least 64. +

+ +
+— Macro: CHAR_TYPE_SIZE
+

A C expression for the size in bits of the type char on the +target machine. If you don't define this, the default is +BITS_PER_UNIT. +

+ +
+— Macro: BOOL_TYPE_SIZE
+

A C expression for the size in bits of the C++ type bool and +C99 type _Bool on the target machine. If you don't define +this, and you probably shouldn't, the default is CHAR_TYPE_SIZE. +

+ +
+— Macro: FLOAT_TYPE_SIZE
+

A C expression for the size in bits of the type float on the +target machine. If you don't define this, the default is one word. +

+ +
+— Macro: DOUBLE_TYPE_SIZE
+

A C expression for the size in bits of the type double on the +target machine. If you don't define this, the default is two +words. +

+ +
+— Macro: LONG_DOUBLE_TYPE_SIZE
+

A C expression for the size in bits of the type long double on +the target machine. If you don't define this, the default is two +words. +

+ +
+— Macro: SHORT_FRACT_TYPE_SIZE
+

A C expression for the size in bits of the type short _Fract on +the target machine. If you don't define this, the default is +BITS_PER_UNIT. +

+ +
+— Macro: FRACT_TYPE_SIZE
+

A C expression for the size in bits of the type _Fract on +the target machine. If you don't define this, the default is +BITS_PER_UNIT * 2. +

+ +
+— Macro: LONG_FRACT_TYPE_SIZE
+

A C expression for the size in bits of the type long _Fract on +the target machine. If you don't define this, the default is +BITS_PER_UNIT * 4. +

+ +
+— Macro: LONG_LONG_FRACT_TYPE_SIZE
+

A C expression for the size in bits of the type long long _Fract on +the target machine. If you don't define this, the default is +BITS_PER_UNIT * 8. +

+ +
+— Macro: SHORT_ACCUM_TYPE_SIZE
+

A C expression for the size in bits of the type short _Accum on +the target machine. If you don't define this, the default is +BITS_PER_UNIT * 2. +

+ +
+— Macro: ACCUM_TYPE_SIZE
+

A C expression for the size in bits of the type _Accum on +the target machine. If you don't define this, the default is +BITS_PER_UNIT * 4. +

+ +
+— Macro: LONG_ACCUM_TYPE_SIZE
+

A C expression for the size in bits of the type long _Accum on +the target machine. If you don't define this, the default is +BITS_PER_UNIT * 8. +

+ +
+— Macro: LONG_LONG_ACCUM_TYPE_SIZE
+

A C expression for the size in bits of the type long long _Accum on +the target machine. If you don't define this, the default is +BITS_PER_UNIT * 16. +

+ +
+— Macro: LIBGCC2_LONG_DOUBLE_TYPE_SIZE
+

Define this macro if LONG_DOUBLE_TYPE_SIZE is not constant or +if you want routines in libgcc2.a for a size other than +LONG_DOUBLE_TYPE_SIZE. If you don't define this, the +default is LONG_DOUBLE_TYPE_SIZE. +

+ +
+— Macro: LIBGCC2_HAS_DF_MODE
+

Define this macro if neither LIBGCC2_DOUBLE_TYPE_SIZE nor +LIBGCC2_LONG_DOUBLE_TYPE_SIZE is +DFmode but you want DFmode routines in libgcc2.a +anyway. If you don't define this and either LIBGCC2_DOUBLE_TYPE_SIZE +or LIBGCC2_LONG_DOUBLE_TYPE_SIZE is 64 then the default is 1, +otherwise it is 0. +

+ +
+— Macro: LIBGCC2_HAS_XF_MODE
+

Define this macro if LIBGCC2_LONG_DOUBLE_TYPE_SIZE is not +XFmode but you want XFmode routines in libgcc2.a +anyway. If you don't define this and LIBGCC2_LONG_DOUBLE_TYPE_SIZE +is 80 then the default is 1, otherwise it is 0. +

+ +
+— Macro: LIBGCC2_HAS_TF_MODE
+

Define this macro if LIBGCC2_LONG_DOUBLE_TYPE_SIZE is not +TFmode but you want TFmode routines in libgcc2.a +anyway. If you don't define this and LIBGCC2_LONG_DOUBLE_TYPE_SIZE +is 128 then the default is 1, otherwise it is 0. +

+ +
+— Macro: SF_SIZE
+— Macro: DF_SIZE
+— Macro: XF_SIZE
+— Macro: TF_SIZE
+

Define these macros to be the size in bits of the mantissa of +SFmode, DFmode, XFmode and TFmode values, +if the defaults in libgcc2.h are inappropriate. By default, +FLT_MANT_DIG is used for SF_SIZE, LDBL_MANT_DIG +for XF_SIZE and TF_SIZE, and DBL_MANT_DIG or +LDBL_MANT_DIG for DF_SIZE according to whether +LIBGCC2_DOUBLE_TYPE_SIZE or +LIBGCC2_LONG_DOUBLE_TYPE_SIZE is 64. +

+ +
+— Macro: TARGET_FLT_EVAL_METHOD
+

A C expression for the value for FLT_EVAL_METHOD in float.h, +assuming, if applicable, that the floating-point control word is in its +default state. If you do not define this macro the value of +FLT_EVAL_METHOD will be zero. +

+ +
+— Macro: WIDEST_HARDWARE_FP_SIZE
+

A C expression for the size in bits of the widest floating-point format +supported by the hardware. If you define this macro, you must specify a +value less than or equal to the value of LONG_DOUBLE_TYPE_SIZE. +If you do not define this macro, the value of LONG_DOUBLE_TYPE_SIZE +is the default. +

+ +
+— Macro: DEFAULT_SIGNED_CHAR
+

An expression whose value is 1 or 0, according to whether the type +char should be signed or unsigned by default. The user can +always override this default with the options -fsigned-char +and -funsigned-char. +

+ +
+— Target Hook: bool TARGET_DEFAULT_SHORT_ENUMS (void)
+

This target hook should return true if the compiler should give an +enum type only as many bytes as it takes to represent the range +of possible values of that type. It should return false if all +enum types should be allocated like int. + +

The default is to return false. +

+ +
+— Macro: SIZE_TYPE
+

A C expression for a string describing the name of the data type to use +for size values. The typedef name size_t is defined using the +contents of the string. + +

The string can contain more than one keyword. If so, separate them with +spaces, and write first any length keyword, then unsigned if +appropriate, and finally int. The string must exactly match one +of the data type names defined in the function +init_decl_processing in the file c-decl.c. You may not +omit int or change the order—that would cause the compiler to +crash on startup. + +

If you don't define this macro, the default is "long unsigned +int". +

+ +
+— Macro: PTRDIFF_TYPE
+

A C expression for a string describing the name of the data type to use +for the result of subtracting two pointers. The typedef name +ptrdiff_t is defined using the contents of the string. See +SIZE_TYPE above for more information. + +

If you don't define this macro, the default is "long int". +

+ +
+— Macro: WCHAR_TYPE
+

A C expression for a string describing the name of the data type to use +for wide characters. The typedef name wchar_t is defined using +the contents of the string. See SIZE_TYPE above for more +information. + +

If you don't define this macro, the default is "int". +

+ +
+— Macro: WCHAR_TYPE_SIZE
+

A C expression for the size in bits of the data type for wide +characters. This is used in cpp, which cannot make use of +WCHAR_TYPE. +

+ +
+— Macro: WINT_TYPE
+

A C expression for a string describing the name of the data type to +use for wide characters passed to printf and returned from +getwc. The typedef name wint_t is defined using the +contents of the string. See SIZE_TYPE above for more +information. + +

If you don't define this macro, the default is "unsigned int". +

+ +
+— Macro: INTMAX_TYPE
+

A C expression for a string describing the name of the data type that +can represent any value of any standard or extended signed integer type. +The typedef name intmax_t is defined using the contents of the +string. See SIZE_TYPE above for more information. + +

If you don't define this macro, the default is the first of +"int", "long int", or "long long int" that has as +much precision as long long int. +

+ +
+— Macro: UINTMAX_TYPE
+

A C expression for a string describing the name of the data type that +can represent any value of any standard or extended unsigned integer +type. The typedef name uintmax_t is defined using the contents +of the string. See SIZE_TYPE above for more information. + +

If you don't define this macro, the default is the first of +"unsigned int", "long unsigned int", or "long long +unsigned int" that has as much precision as long long unsigned +int. +

+ +
+— Macro: TARGET_PTRMEMFUNC_VBIT_LOCATION
+

The C++ compiler represents a pointer-to-member-function with a struct +that looks like: + +

            struct {
+              union {
+                void (*fn)();
+                ptrdiff_t vtable_index;
+              };
+              ptrdiff_t delta;
+            };
+     
+

The C++ compiler must use one bit to indicate whether the function that +will be called through a pointer-to-member-function is virtual. +Normally, we assume that the low-order bit of a function pointer must +always be zero. Then, by ensuring that the vtable_index is odd, we can +distinguish which variant of the union is in use. But, on some +platforms function pointers can be odd, and so this doesn't work. In +that case, we use the low-order bit of the delta field, and shift +the remainder of the delta field to the left. + +

GCC will automatically make the right selection about where to store +this bit using the FUNCTION_BOUNDARY setting for your platform. +However, some platforms such as ARM/Thumb have FUNCTION_BOUNDARY +set such that functions always start at even addresses, but the lowest +bit of pointers to functions indicate whether the function at that +address is in ARM or Thumb mode. If this is the case of your +architecture, you should define this macro to +ptrmemfunc_vbit_in_delta. + +

In general, you should not have to define this macro. On architectures +in which function addresses are always even, according to +FUNCTION_BOUNDARY, GCC will automatically define this macro to +ptrmemfunc_vbit_in_pfn. +

+ +
+— Macro: TARGET_VTABLE_USES_DESCRIPTORS
+

Normally, the C++ compiler uses function pointers in vtables. This +macro allows the target to change to use “function descriptors” +instead. Function descriptors are found on targets for whom a +function pointer is actually a small data structure. Normally the +data structure consists of the actual code address plus a data +pointer to which the function's data is relative. + +

If vtables are used, the value of this macro should be the number +of words that the function descriptor occupies. +

+ +
+— Macro: TARGET_VTABLE_ENTRY_ALIGN
+

By default, the vtable entries are void pointers, the so the alignment +is the same as pointer alignment. The value of this macro specifies +the alignment of the vtable entry in bits. It should be defined only +when special alignment is necessary. */ +

+ +
+— Macro: TARGET_VTABLE_DATA_ENTRY_DISTANCE
+

There are a few non-descriptor entries in the vtable at offsets below +zero. If these entries must be padded (say, to preserve the alignment +specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number +of words in each data entry. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Types.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Types.html new file mode 100644 index 0000000..398795d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Types.html @@ -0,0 +1,362 @@ + + +Types - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Tree overview, +Up: Trees +



+
+ +

9.3 Types

+ +

+All types have corresponding tree nodes. However, you should not assume +that there is exactly one tree node corresponding to each type. There +are often multiple nodes corresponding to the same type. + +

For the most part, different kinds of types have different tree codes. +(For example, pointer types use a POINTER_TYPE code while arrays +use an ARRAY_TYPE code.) However, pointers to member functions +use the RECORD_TYPE code. Therefore, when writing a +switch statement that depends on the code associated with a +particular type, you should take care to handle pointers to member +functions under the RECORD_TYPE case label. + +

In C++, an array type is not qualified; rather the type of the array +elements is qualified. This situation is reflected in the intermediate +representation. The macros described here will always examine the +qualification of the underlying element type when applied to an array +type. (If the element type is itself an array, then the recursion +continues until a non-array type is found, and the qualification of this +type is examined.) So, for example, CP_TYPE_CONST_P will hold of +the type const int ()[7], denoting an array of seven ints. + +

The following functions and macros deal with cv-qualification of types: +

+
CP_TYPE_QUALS
This macro returns the set of type qualifiers applied to this type. +This value is TYPE_UNQUALIFIED if no qualifiers have been +applied. The TYPE_QUAL_CONST bit is set if the type is +const-qualified. The TYPE_QUAL_VOLATILE bit is set if the +type is volatile-qualified. The TYPE_QUAL_RESTRICT bit is +set if the type is restrict-qualified. + +
CP_TYPE_CONST_P
This macro holds if the type is const-qualified. + +
CP_TYPE_VOLATILE_P
This macro holds if the type is volatile-qualified. + +
CP_TYPE_RESTRICT_P
This macro holds if the type is restrict-qualified. + +
CP_TYPE_CONST_NON_VOLATILE_P
This predicate holds for a type that is const-qualified, but +not volatile-qualified; other cv-qualifiers are ignored as +well: only the const-ness is tested. + +
TYPE_MAIN_VARIANT
This macro returns the unqualified version of a type. It may be applied +to an unqualified type, but it is not always the identity function in +that case. +
+ +

A few other macros and functions are usable with all types: +

+
TYPE_SIZE
The number of bits required to represent the type, represented as an +INTEGER_CST. For an incomplete type, TYPE_SIZE will be +NULL_TREE. + +
TYPE_ALIGN
The alignment of the type, in bits, represented as an int. + +
TYPE_NAME
This macro returns a declaration (in the form of a TYPE_DECL) for +the type. (Note this macro does not return a +IDENTIFIER_NODE, as you might expect, given its name!) You can +look at the DECL_NAME of the TYPE_DECL to obtain the +actual name of the type. The TYPE_NAME will be NULL_TREE +for a type that is not a built-in type, the result of a typedef, or a +named class type. + +
CP_INTEGRAL_TYPE
This predicate holds if the type is an integral type. Notice that in +C++, enumerations are not integral types. + +
ARITHMETIC_TYPE_P
This predicate holds if the type is an integral type (in the C++ sense) +or a floating point type. + +
CLASS_TYPE_P
This predicate holds for a class-type. + +
TYPE_BUILT_IN
This predicate holds for a built-in type. + +
TYPE_PTRMEM_P
This predicate holds if the type is a pointer to data member. + +
TYPE_PTR_P
This predicate holds if the type is a pointer type, and the pointee is +not a data member. + +
TYPE_PTRFN_P
This predicate holds for a pointer to function type. + +
TYPE_PTROB_P
This predicate holds for a pointer to object type. Note however that it +does not hold for the generic pointer to object type void *. You +may use TYPE_PTROBV_P to test for a pointer to object type as +well as void *. + +
TYPE_CANONICAL
This macro returns the “canonical” type for the given type +node. Canonical types are used to improve performance in the C++ and +Objective-C++ front ends by allowing efficient comparison between two +type nodes in same_type_p: if the TYPE_CANONICAL values +of the types are equal, the types are equivalent; otherwise, the types +are not equivalent. The notion of equivalence for canonical types is +the same as the notion of type equivalence in the language itself. For +instance, + +

When TYPE_CANONICAL is NULL_TREE, there is no canonical +type for the given type node. In this case, comparison between this +type and any other type requires the compiler to perform a deep, +“structural” comparison to see if the two type nodes have the same +form and properties. + +

The canonical type for a node is always the most fundamental type in +the equivalence class of types. For instance, int is its own +canonical type. A typedef I of int will have int +as its canonical type. Similarly, I* and a typedef IP (defined to I*) will has int* as their canonical +type. When building a new type node, be sure to set +TYPE_CANONICAL to the appropriate canonical type. If the new +type is a compound type (built from other types), and any of those +other types require structural equality, use +SET_TYPE_STRUCTURAL_EQUALITY to ensure that the new type also +requires structural equality. Finally, if for some reason you cannot +guarantee that TYPE_CANONICAL will point to the canonical type, +use SET_TYPE_STRUCTURAL_EQUALITY to make sure that the new +type–and any type constructed based on it–requires structural +equality. If you suspect that the canonical type system is +miscomparing types, pass --param verify-canonical-types=1 to +the compiler or configure with --enable-checking to force the +compiler to verify its canonical-type comparisons against the +structural comparisons; the compiler will then print any warnings if +the canonical types miscompare. + +

TYPE_STRUCTURAL_EQUALITY_P
This predicate holds when the node requires structural equality +checks, e.g., when TYPE_CANONICAL is NULL_TREE. + +
SET_TYPE_STRUCTURAL_EQUALITY
This macro states that the type node it is given requires structural +equality checks, e.g., it sets TYPE_CANONICAL to +NULL_TREE. + +
same_type_p
This predicate takes two types as input, and holds if they are the same +type. For example, if one type is a typedef for the other, or +both are typedefs for the same type. This predicate also holds if +the two trees given as input are simply copies of one another; i.e., +there is no difference between them at the source level, but, for +whatever reason, a duplicate has been made in the representation. You +should never use == (pointer equality) to compare types; always +use same_type_p instead. +
+ +

Detailed below are the various kinds of types, and the macros that can +be used to access them. Although other kinds of types are used +elsewhere in G++, the types described here are the only ones that you +will encounter while examining the intermediate representation. + +

+
VOID_TYPE
Used to represent the void type. + +
INTEGER_TYPE
Used to represent the various integral types, including char, +short, int, long, and long long. This code +is not used for enumeration types, nor for the bool type. +The TYPE_PRECISION is the number of bits used in +the representation, represented as an unsigned int. (Note that +in the general case this is not the same value as TYPE_SIZE; +suppose that there were a 24-bit integer type, but that alignment +requirements for the ABI required 32-bit alignment. Then, +TYPE_SIZE would be an INTEGER_CST for 32, while +TYPE_PRECISION would be 24.) The integer type is unsigned if +TYPE_UNSIGNED holds; otherwise, it is signed. + +

The TYPE_MIN_VALUE is an INTEGER_CST for the smallest +integer that may be represented by this type. Similarly, the +TYPE_MAX_VALUE is an INTEGER_CST for the largest integer +that may be represented by this type. + +

REAL_TYPE
Used to represent the float, double, and long +double types. The number of bits in the floating-point representation +is given by TYPE_PRECISION, as in the INTEGER_TYPE case. + +
FIXED_POINT_TYPE
Used to represent the short _Fract, _Fract, long +_Fract, long long _Fract, short _Accum, _Accum, +long _Accum, and long long _Accum types. The number of bits +in the fixed-point representation is given by TYPE_PRECISION, +as in the INTEGER_TYPE case. There may be padding bits, fractional +bits and integral bits. The number of fractional bits is given by +TYPE_FBIT, and the number of integral bits is given by TYPE_IBIT. +The fixed-point type is unsigned if TYPE_UNSIGNED holds; otherwise, +it is signed. +The fixed-point type is saturating if TYPE_SATURATING holds; otherwise, +it is not saturating. + +
COMPLEX_TYPE
Used to represent GCC built-in __complex__ data types. The +TREE_TYPE is the type of the real and imaginary parts. + +
ENUMERAL_TYPE
Used to represent an enumeration type. The TYPE_PRECISION gives +(as an int), the number of bits used to represent the type. If +there are no negative enumeration constants, TYPE_UNSIGNED will +hold. The minimum and maximum enumeration constants may be obtained +with TYPE_MIN_VALUE and TYPE_MAX_VALUE, respectively; each +of these macros returns an INTEGER_CST. + +

The actual enumeration constants themselves may be obtained by looking +at the TYPE_VALUES. This macro will return a TREE_LIST, +containing the constants. The TREE_PURPOSE of each node will be +an IDENTIFIER_NODE giving the name of the constant; the +TREE_VALUE will be an INTEGER_CST giving the value +assigned to that constant. These constants will appear in the order in +which they were declared. The TREE_TYPE of each of these +constants will be the type of enumeration type itself. + +

BOOLEAN_TYPE
Used to represent the bool type. + +
POINTER_TYPE
Used to represent pointer types, and pointer to data member types. The +TREE_TYPE gives the type to which this type points. If the type +is a pointer to data member type, then TYPE_PTRMEM_P will hold. +For a pointer to data member type of the form T X::*, +TYPE_PTRMEM_CLASS_TYPE will be the type X, while +TYPE_PTRMEM_POINTED_TO_TYPE will be the type T. + +
REFERENCE_TYPE
Used to represent reference types. The TREE_TYPE gives the type +to which this type refers. + +
FUNCTION_TYPE
Used to represent the type of non-member functions and of static member +functions. The TREE_TYPE gives the return type of the function. +The TYPE_ARG_TYPES are a TREE_LIST of the argument types. +The TREE_VALUE of each node in this list is the type of the +corresponding argument; the TREE_PURPOSE is an expression for the +default argument value, if any. If the last node in the list is +void_list_node (a TREE_LIST node whose TREE_VALUE +is the void_type_node), then functions of this type do not take +variable arguments. Otherwise, they do take a variable number of +arguments. + +

Note that in C (but not in C++) a function declared like void f() +is an unprototyped function taking a variable number of arguments; the +TYPE_ARG_TYPES of such a function will be NULL. + +

METHOD_TYPE
Used to represent the type of a non-static member function. Like a +FUNCTION_TYPE, the return type is given by the TREE_TYPE. +The type of *this, i.e., the class of which functions of this +type are a member, is given by the TYPE_METHOD_BASETYPE. The +TYPE_ARG_TYPES is the parameter list, as for a +FUNCTION_TYPE, and includes the this argument. + +
ARRAY_TYPE
Used to represent array types. The TREE_TYPE gives the type of +the elements in the array. If the array-bound is present in the type, +the TYPE_DOMAIN is an INTEGER_TYPE whose +TYPE_MIN_VALUE and TYPE_MAX_VALUE will be the lower and +upper bounds of the array, respectively. The TYPE_MIN_VALUE will +always be an INTEGER_CST for zero, while the +TYPE_MAX_VALUE will be one less than the number of elements in +the array, i.e., the highest value which may be used to index an element +in the array. + +
RECORD_TYPE
Used to represent struct and class types, as well as +pointers to member functions and similar constructs in other languages. +TYPE_FIELDS contains the items contained in this type, each of +which can be a FIELD_DECL, VAR_DECL, CONST_DECL, or +TYPE_DECL. You may not make any assumptions about the ordering +of the fields in the type or whether one or more of them overlap. If +TYPE_PTRMEMFUNC_P holds, then this type is a pointer-to-member +type. In that case, the TYPE_PTRMEMFUNC_FN_TYPE is a +POINTER_TYPE pointing to a METHOD_TYPE. The +METHOD_TYPE is the type of a function pointed to by the +pointer-to-member function. If TYPE_PTRMEMFUNC_P does not hold, +this type is a class type. For more information, see see Classes. + +
UNION_TYPE
Used to represent union types. Similar to RECORD_TYPE +except that all FIELD_DECL nodes in TYPE_FIELD start at +bit position zero. + +
QUAL_UNION_TYPE
Used to represent part of a variant record in Ada. Similar to +UNION_TYPE except that each FIELD_DECL has a +DECL_QUALIFIER field, which contains a boolean expression that +indicates whether the field is present in the object. The type will only +have one field, so each field's DECL_QUALIFIER is only evaluated +if none of the expressions in the previous fields in TYPE_FIELDS +are nonzero. Normally these expressions will reference a field in the +outer object using a PLACEHOLDER_EXPR. + +
UNKNOWN_TYPE
This node is used to represent a type the knowledge of which is +insufficient for a sound processing. + +
OFFSET_TYPE
This node is used to represent a pointer-to-data member. For a data +member X::m the TYPE_OFFSET_BASETYPE is X and the +TREE_TYPE is the type of m. + +
TYPENAME_TYPE
Used to represent a construct of the form typename T::A. The +TYPE_CONTEXT is T; the TYPE_NAME is an +IDENTIFIER_NODE for A. If the type is specified via a +template-id, then TYPENAME_TYPE_FULLNAME yields a +TEMPLATE_ID_EXPR. The TREE_TYPE is non-NULL if the +node is implicitly generated in support for the implicit typename +extension; in which case the TREE_TYPE is a type node for the +base-class. + +
TYPEOF_TYPE
Used to represent the __typeof__ extension. The +TYPE_FIELDS is the expression the type of which is being +represented. +
+ +

There are variables whose values represent some of the basic types. +These include: +

+
void_type_node
A node for void. + +
integer_type_node
A node for int. + +
unsigned_type_node.
A node for unsigned int. + +
char_type_node.
A node for char. +
+ It may sometimes be useful to compare one of these variables with a type +in hand, using same_type_p. + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Uninitialized-Data.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Uninitialized-Data.html new file mode 100644 index 0000000..cc50983 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Uninitialized-Data.html @@ -0,0 +1,167 @@ + + +Uninitialized Data - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Data Output, +Up: Assembler Format +



+
+ +

15.21.3 Output of Uninitialized Variables

+ +

Each of the macros in this section is used to do the whole job of +outputting a single uninitialized variable. + +

+— Macro: ASM_OUTPUT_COMMON (stream, name, size, rounded)
+

A C statement (sans semicolon) to output to the stdio stream +stream the assembler definition of a common-label named +name whose size is size bytes. The variable rounded +is the size rounded up to whatever alignment the caller wants. + +

Use the expression assemble_name (stream, name) to +output the name itself; before and after that, output the additional +assembler syntax for defining the name, and a newline. + +

This macro controls how the assembler definitions of uninitialized +common global variables are output. +

+ +
+— Macro: ASM_OUTPUT_ALIGNED_COMMON (stream, name, size, alignment)
+

Like ASM_OUTPUT_COMMON except takes the required alignment as a +separate, explicit argument. If you define this macro, it is used in +place of ASM_OUTPUT_COMMON, and gives you more flexibility in +handling the required alignment of the variable. The alignment is specified +as the number of bits. +

+ +
+— Macro: ASM_OUTPUT_ALIGNED_DECL_COMMON (stream, decl, name, size, alignment)
+

Like ASM_OUTPUT_ALIGNED_COMMON except that decl of the +variable to be output, if there is one, or NULL_TREE if there +is no corresponding variable. If you define this macro, GCC will use it +in place of both ASM_OUTPUT_COMMON and +ASM_OUTPUT_ALIGNED_COMMON. Define this macro when you need to see +the variable's decl in order to chose what to output. +

+ +
+— Macro: ASM_OUTPUT_BSS (stream, decl, name, size, rounded)
+

A C statement (sans semicolon) to output to the stdio stream +stream the assembler definition of uninitialized global decl named +name whose size is size bytes. The variable rounded +is the size rounded up to whatever alignment the caller wants. + +

Try to use function asm_output_bss defined in varasm.c when +defining this macro. If unable, use the expression +assemble_name (stream, name) to output the name itself; +before and after that, output the additional assembler syntax for defining +the name, and a newline. + +

There are two ways of handling global BSS. One is to define either +this macro or its aligned counterpart, ASM_OUTPUT_ALIGNED_BSS. +The other is to have TARGET_ASM_SELECT_SECTION return a +switchable BSS section (see TARGET_HAVE_SWITCHABLE_BSS_SECTIONS). +You do not need to do both. + +

Some languages do not have common data, and require a +non-common form of global BSS in order to handle uninitialized globals +efficiently. C++ is one example of this. However, if the target does +not support global BSS, the front end may choose to make globals +common in order to save space in the object file. +

+ +
+— Macro: ASM_OUTPUT_ALIGNED_BSS (stream, decl, name, size, alignment)
+

Like ASM_OUTPUT_BSS except takes the required alignment as a +separate, explicit argument. If you define this macro, it is used in +place of ASM_OUTPUT_BSS, and gives you more flexibility in +handling the required alignment of the variable. The alignment is specified +as the number of bits. + +

Try to use function asm_output_aligned_bss defined in file +varasm.c when defining this macro. +

+ +
+— Macro: ASM_OUTPUT_LOCAL (stream, name, size, rounded)
+

A C statement (sans semicolon) to output to the stdio stream +stream the assembler definition of a local-common-label named +name whose size is size bytes. The variable rounded +is the size rounded up to whatever alignment the caller wants. + +

Use the expression assemble_name (stream, name) to +output the name itself; before and after that, output the additional +assembler syntax for defining the name, and a newline. + +

This macro controls how the assembler definitions of uninitialized +static variables are output. +

+ +
+— Macro: ASM_OUTPUT_ALIGNED_LOCAL (stream, name, size, alignment)
+

Like ASM_OUTPUT_LOCAL except takes the required alignment as a +separate, explicit argument. If you define this macro, it is used in +place of ASM_OUTPUT_LOCAL, and gives you more flexibility in +handling the required alignment of the variable. The alignment is specified +as the number of bits. +

+ +
+— Macro: ASM_OUTPUT_ALIGNED_DECL_LOCAL (stream, decl, name, size, alignment)
+

Like ASM_OUTPUT_ALIGNED_DECL except that decl of the +variable to be output, if there is one, or NULL_TREE if there +is no corresponding variable. If you define this macro, GCC will use it +in place of both ASM_OUTPUT_DECL and +ASM_OUTPUT_ALIGNED_DECL. Define this macro when you need to see +the variable's decl in order to chose what to output. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/VMS-Debug.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/VMS-Debug.html new file mode 100644 index 0000000..729da03 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/VMS-Debug.html @@ -0,0 +1,69 @@ + + +VMS Debug - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: SDB and DWARF, +Up: Debugging Info +



+
+ +

15.22.6 Macros for VMS Debug Format

+ + +

Here are macros for VMS debug format. + +

+— Macro: VMS_DEBUGGING_INFO
+

Define this macro if GCC should produce debugging output for VMS +in response to the -g option. The default behavior for VMS +is to generate minimal debug info for a traceback in the absence of +-g unless explicitly overridden with -g0. This +behavior is controlled by OPTIMIZATION_OPTIONS and +OVERRIDE_OPTIONS. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Values-in-Registers.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Values-in-Registers.html new file mode 100644 index 0000000..d642334 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Values-in-Registers.html @@ -0,0 +1,213 @@ + + +Values in Registers - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Allocation Order, +Up: Registers +



+
+ +

15.7.3 How Values Fit in Registers

+ +

This section discusses the macros that describe which kinds of values +(specifically, which machine modes) each register can hold, and how many +consecutive registers are needed for a given mode. + +

+— Macro: HARD_REGNO_NREGS (regno, mode)
+

A C expression for the number of consecutive hard registers, starting +at register number regno, required to hold a value of mode +mode. This macro must never return zero, even if a register +cannot hold the requested mode - indicate that with HARD_REGNO_MODE_OK +and/or CANNOT_CHANGE_MODE_CLASS instead. + +

On a machine where all registers are exactly one word, a suitable +definition of this macro is + +

          #define HARD_REGNO_NREGS(REGNO, MODE)            \
+             ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
+              / UNITS_PER_WORD)
+     
+
+ +
+— Macro: HARD_REGNO_NREGS_HAS_PADDING (regno, mode)
+

A C expression that is nonzero if a value of mode mode, stored +in memory, ends with padding that causes it to take up more space than +in registers starting at register number regno (as determined by +multiplying GCC's notion of the size of the register when containing +this mode by the number of registers returned by +HARD_REGNO_NREGS). By default this is zero. + +

For example, if a floating-point value is stored in three 32-bit +registers but takes up 128 bits in memory, then this would be +nonzero. + +

This macros only needs to be defined if there are cases where +subreg_get_info +would otherwise wrongly determine that a subreg can be +represented by an offset to the register number, when in fact such a +subreg would contain some of the padding not stored in +registers and so not be representable. +

+ +
+— Macro: HARD_REGNO_NREGS_WITH_PADDING (regno, mode)
+

For values of regno and mode for which +HARD_REGNO_NREGS_HAS_PADDING returns nonzero, a C expression +returning the greater number of registers required to hold the value +including any padding. In the example above, the value would be four. +

+ +
+— Macro: REGMODE_NATURAL_SIZE (mode)
+

Define this macro if the natural size of registers that hold values +of mode mode is not the word size. It is a C expression that +should give the natural size in bytes for the specified mode. It is +used by the register allocator to try to optimize its results. This +happens for example on SPARC 64-bit where the natural size of +floating-point registers is still 32-bit. +

+ +
+— Macro: HARD_REGNO_MODE_OK (regno, mode)
+

A C expression that is nonzero if it is permissible to store a value +of mode mode in hard register number regno (or in several +registers starting with that one). For a machine where all registers +are equivalent, a suitable definition is + +

          #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
+     
+

You need not include code to check for the numbers of fixed registers, +because the allocation mechanism considers them to be always occupied. + +

On some machines, double-precision values must be kept in even/odd +register pairs. You can implement that by defining this macro to reject +odd register numbers for such modes. + +

The minimum requirement for a mode to be OK in a register is that the +movmode instruction pattern support moves between the +register and other hard register in the same class and that moving a +value into the register and back out not alter it. + +

Since the same instruction used to move word_mode will work for +all narrower integer modes, it is not necessary on any machine for +HARD_REGNO_MODE_OK to distinguish between these modes, provided +you define patterns movhi, etc., to take advantage of this. This +is useful because of the interaction between HARD_REGNO_MODE_OK +and MODES_TIEABLE_P; it is very desirable for all integer modes +to be tieable. + +

Many machines have special registers for floating point arithmetic. +Often people assume that floating point machine modes are allowed only +in floating point registers. This is not true. Any registers that +can hold integers can safely hold a floating point machine +mode, whether or not floating arithmetic can be done on it in those +registers. Integer move instructions can be used to move the values. + +

On some machines, though, the converse is true: fixed-point machine +modes may not go in floating registers. This is true if the floating +registers normalize any value stored in them, because storing a +non-floating value there would garble it. In this case, +HARD_REGNO_MODE_OK should reject fixed-point machine modes in +floating registers. But if the floating registers do not automatically +normalize, if you can store any bit pattern in one and retrieve it +unchanged without a trap, then any machine mode may go in a floating +register, so you can define this macro to say so. + +

The primary significance of special floating registers is rather that +they are the registers acceptable in floating point arithmetic +instructions. However, this is of no concern to +HARD_REGNO_MODE_OK. You handle it by writing the proper +constraints for those instructions. + +

On some machines, the floating registers are especially slow to access, +so that it is better to store a value in a stack frame than in such a +register if floating point arithmetic is not being done. As long as the +floating registers are not in class GENERAL_REGS, they will not +be used unless some pattern's constraint asks for one. +

+ +
+— Macro: HARD_REGNO_RENAME_OK (from, to)
+

A C expression that is nonzero if it is OK to rename a hard register +from to another hard register to. + +

One common use of this macro is to prevent renaming of a register to +another register that is not saved by a prologue in an interrupt +handler. + +

The default is always nonzero. +

+ +
+— Macro: MODES_TIEABLE_P (mode1, mode2)
+

A C expression that is nonzero if a value of mode +mode1 is accessible in mode mode2 without copying. + +

If HARD_REGNO_MODE_OK (r, mode1) and +HARD_REGNO_MODE_OK (r, mode2) are always the same for +any r, then MODES_TIEABLE_P (mode1, mode2) +should be nonzero. If they differ for any r, you should define +this macro to return zero unless some other mechanism ensures the +accessibility of the value in a narrower mode. + +

You should define this macro to return nonzero in as many cases as +possible since doing so will allow GCC to perform better register +allocation. +

+ +
+— Macro: AVOID_CCMODE_COPIES
+

Define this macro if the compiler should avoid copies to/from CCmode +registers. You should only define this macro if support for copying to/from +CCmode is incomplete. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Varargs.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Varargs.html new file mode 100644 index 0000000..696ea0e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Varargs.html @@ -0,0 +1,222 @@ + + +Varargs - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Stack and Calling, +Up: Target Macros +



+
+ +

15.11 Implementing the Varargs Macros

+ +

+GCC comes with an implementation of <varargs.h> and +<stdarg.h> that work without change on machines that pass arguments +on the stack. Other machines require their own implementations of +varargs, and the two machine independent header files must have +conditionals to include it. + +

ISO <stdarg.h> differs from traditional <varargs.h> mainly in +the calling convention for va_start. The traditional +implementation takes just one argument, which is the variable in which +to store the argument pointer. The ISO implementation of +va_start takes an additional second argument. The user is +supposed to write the last named argument of the function here. + +

However, va_start should not use this argument. The way to find +the end of the named arguments is with the built-in functions described +below. + +

+— Macro: __builtin_saveregs ()
+

Use this built-in function to save the argument registers in memory so +that the varargs mechanism can access them. Both ISO and traditional +versions of va_start must use __builtin_saveregs, unless +you use TARGET_SETUP_INCOMING_VARARGS (see below) instead. + +

On some machines, __builtin_saveregs is open-coded under the +control of the target hook TARGET_EXPAND_BUILTIN_SAVEREGS. On +other machines, it calls a routine written in assembler language, +found in libgcc2.c. + +

Code generated for the call to __builtin_saveregs appears at the +beginning of the function, as opposed to where the call to +__builtin_saveregs is written, regardless of what the code is. +This is because the registers must be saved before the function starts +to use them for its own purposes. + + +

+ +
+— Macro: __builtin_args_info (category)
+

Use this built-in function to find the first anonymous arguments in +registers. + +

In general, a machine may have several categories of registers used for +arguments, each for a particular category of data types. (For example, +on some machines, floating-point registers are used for floating-point +arguments while other arguments are passed in the general registers.) +To make non-varargs functions use the proper calling convention, you +have defined the CUMULATIVE_ARGS data type to record how many +registers in each category have been used so far + +

__builtin_args_info accesses the same data structure of type +CUMULATIVE_ARGS after the ordinary argument layout is finished +with it, with category specifying which word to access. Thus, the +value indicates the first unused register in a given category. + +

Normally, you would use __builtin_args_info in the implementation +of va_start, accessing each category just once and storing the +value in the va_list object. This is because va_list will +have to update the values, and there is no way to alter the +values accessed by __builtin_args_info. +

+ +
+— Macro: __builtin_next_arg (lastarg)
+

This is the equivalent of __builtin_args_info, for stack +arguments. It returns the address of the first anonymous stack +argument, as type void *. If ARGS_GROW_DOWNWARD, it +returns the address of the location above the first anonymous stack +argument. Use it in va_start to initialize the pointer for +fetching arguments from the stack. Also use it in va_start to +verify that the second parameter lastarg is the last named argument +of the current function. +

+ +
+— Macro: __builtin_classify_type (object)
+

Since each machine has its own conventions for which data types are +passed in which kind of register, your implementation of va_arg +has to embody these conventions. The easiest way to categorize the +specified data type is to use __builtin_classify_type together +with sizeof and __alignof__. + +

__builtin_classify_type ignores the value of object, +considering only its data type. It returns an integer describing what +kind of type that is—integer, floating, pointer, structure, and so on. + +

The file typeclass.h defines an enumeration that you can use to +interpret the values of __builtin_classify_type. +

+ +

These machine description macros help implement varargs: + +

+— Target Hook: rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
+

If defined, this hook produces the machine-specific code for a call to +__builtin_saveregs. This code will be moved to the very +beginning of the function, before any parameter access are made. The +return value of this function should be an RTX that contains the value +to use as the return of __builtin_saveregs. +

+ +
+— Target Hook: void TARGET_SETUP_INCOMING_VARARGS (CUMULATIVE_ARGS *args_so_far, enum machine_mode mode, tree type, int *pretend_args_size, int second_time)
+

This target hook offers an alternative to using +__builtin_saveregs and defining the hook +TARGET_EXPAND_BUILTIN_SAVEREGS. Use it to store the anonymous +register arguments into the stack so that all the arguments appear to +have been passed consecutively on the stack. Once this is done, you can +use the standard implementation of varargs that works for machines that +pass all their arguments on the stack. + +

The argument args_so_far points to the CUMULATIVE_ARGS data +structure, containing the values that are obtained after processing the +named arguments. The arguments mode and type describe the +last named argument—its machine mode and its data type as a tree node. + +

The target hook should do two things: first, push onto the stack all the +argument registers not used for the named arguments, and second, +store the size of the data thus pushed into the int-valued +variable pointed to by pretend_args_size. The value that you +store here will serve as additional offset for setting up the stack +frame. + +

Because you must generate code to push the anonymous arguments at +compile time without knowing their data types, +TARGET_SETUP_INCOMING_VARARGS is only useful on machines that +have just a single category of argument register and use it uniformly +for all data types. + +

If the argument second_time is nonzero, it means that the +arguments of the function are being analyzed for the second time. This +happens for an inline function, which is not actually compiled until the +end of the source file. The hook TARGET_SETUP_INCOMING_VARARGS should +not generate any instructions in this case. +

+ +
+— Target Hook: bool TARGET_STRICT_ARGUMENT_NAMING (CUMULATIVE_ARGS *ca)
+

Define this hook to return true if the location where a function +argument is passed depends on whether or not it is a named argument. + +

This hook controls how the named argument to FUNCTION_ARG +is set for varargs and stdarg functions. If this hook returns +true, the named argument is always true for named +arguments, and false for unnamed arguments. If it returns false, +but TARGET_PRETEND_OUTGOING_VARARGS_NAMED returns true, +then all arguments are treated as named. Otherwise, all named arguments +except the last are treated as named. + +

You need not define this hook if it always returns zero. +

+ +
+— Target Hook: bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED
+

If you need to conditionally change ABIs so that one works with +TARGET_SETUP_INCOMING_VARARGS, but the other works like neither +TARGET_SETUP_INCOMING_VARARGS nor TARGET_STRICT_ARGUMENT_NAMING was +defined, then define this hook to return true if +TARGET_SETUP_INCOMING_VARARGS is used, false otherwise. +Otherwise, you should not define this hook. +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Vector-Operations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Vector-Operations.html new file mode 100644 index 0000000..9b96888 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Vector-Operations.html @@ -0,0 +1,89 @@ + + +Vector Operations - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: Bit-Fields, +Up: RTL +



+
+ +

12.12 Vector Operations

+ +

+All normal RTL expressions can be used with vector modes; they are +interpreted as operating on each part of the vector independently. +Additionally, there are a few new expressions to describe specific vector +operations. + + + +

(vec_merge:m vec1 vec2 items)
This describes a merge operation between two vectors. The result is a vector +of mode m; its elements are selected from either vec1 or +vec2. Which elements are selected is described by items, which +is a bit mask represented by a const_int; a zero bit indicates the +corresponding element in the result vector is taken from vec2 while +a set bit indicates it is taken from vec1. + +


(vec_select:m vec1 selection)
This describes an operation that selects parts of a vector. vec1 is +the source vector, selection is a parallel that contains a +const_int for each of the subparts of the result vector, giving the +number of the source subpart that should be stored into it. + +


(vec_concat:m vec1 vec2)
Describes a vector concat operation. The result is a concatenation of the +vectors vec1 and vec2; its length is the sum of the lengths of +the two inputs. + +


(vec_duplicate:m vec)
This operation converts a small vector into a larger one by duplicating the +input values. The output vector mode must have the same submodes as the +input vector mode, and the number of output parts must be an integer multiple +of the number of input parts. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Working-with-declarations.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Working-with-declarations.html new file mode 100644 index 0000000..f237ec1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/Working-with-declarations.html @@ -0,0 +1,187 @@ + + +Working with declarations - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Next: , +Up: Declarations +



+
+ +

9.5.1 Working with declarations

+ +

Some macros can be used with any kind of declaration. These include: +

+
DECL_NAME
This macro returns an IDENTIFIER_NODE giving the name of the +entity. + +
TREE_TYPE
This macro returns the type of the entity declared. + +
TREE_FILENAME
This macro returns the name of the file in which the entity was +declared, as a char*. For an entity declared implicitly by the +compiler (like __builtin_memcpy), this will be the string +"<internal>". + +
TREE_LINENO
This macro returns the line number at which the entity was declared, as +an int. + +
DECL_ARTIFICIAL
This predicate holds if the declaration was implicitly generated by the +compiler. For example, this predicate will hold of an implicitly +declared member function, or of the TYPE_DECL implicitly +generated for a class type. Recall that in C++ code like: +
          struct S {};
+     
+

is roughly equivalent to C code like: +

          struct S {};
+          typedef struct S S;
+     
+

The implicitly generated typedef declaration is represented by a +TYPE_DECL for which DECL_ARTIFICIAL holds. + +

DECL_NAMESPACE_SCOPE_P
This predicate holds if the entity was declared at a namespace scope. + +
DECL_CLASS_SCOPE_P
This predicate holds if the entity was declared at a class scope. + +
DECL_FUNCTION_SCOPE_P
This predicate holds if the entity was declared inside a function +body. + +
+ +

The various kinds of declarations include: +

+
LABEL_DECL
These nodes are used to represent labels in function bodies. For more +information, see Functions. These nodes only appear in block +scopes. + +
CONST_DECL
These nodes are used to represent enumeration constants. The value of +the constant is given by DECL_INITIAL which will be an +INTEGER_CST with the same type as the TREE_TYPE of the +CONST_DECL, i.e., an ENUMERAL_TYPE. + +
RESULT_DECL
These nodes represent the value returned by a function. When a value is +assigned to a RESULT_DECL, that indicates that the value should +be returned, via bitwise copy, by the function. You can use +DECL_SIZE and DECL_ALIGN on a RESULT_DECL, just as +with a VAR_DECL. + +
TYPE_DECL
These nodes represent typedef declarations. The TREE_TYPE +is the type declared to have the name given by DECL_NAME. In +some cases, there is no associated name. + +
VAR_DECL
These nodes represent variables with namespace or block scope, as well +as static data members. The DECL_SIZE and DECL_ALIGN are +analogous to TYPE_SIZE and TYPE_ALIGN. For a declaration, +you should always use the DECL_SIZE and DECL_ALIGN rather +than the TYPE_SIZE and TYPE_ALIGN given by the +TREE_TYPE, since special attributes may have been applied to the +variable to give it a particular size and alignment. You may use the +predicates DECL_THIS_STATIC or DECL_THIS_EXTERN to test +whether the storage class specifiers static or extern were +used to declare a variable. + +

If this variable is initialized (but does not require a constructor), +the DECL_INITIAL will be an expression for the initializer. The +initializer should be evaluated, and a bitwise copy into the variable +performed. If the DECL_INITIAL is the error_mark_node, +there is an initializer, but it is given by an explicit statement later +in the code; no bitwise copy is required. + +

GCC provides an extension that allows either automatic variables, or +global variables, to be placed in particular registers. This extension +is being used for a particular VAR_DECL if DECL_REGISTER +holds for the VAR_DECL, and if DECL_ASSEMBLER_NAME is not +equal to DECL_NAME. In that case, DECL_ASSEMBLER_NAME is +the name of the register into which the variable will be placed. + +

PARM_DECL
Used to represent a parameter to a function. Treat these nodes +similarly to VAR_DECL nodes. These nodes only appear in the +DECL_ARGUMENTS for a FUNCTION_DECL. + +

The DECL_ARG_TYPE for a PARM_DECL is the type that will +actually be used when a value is passed to this function. It may be a +wider type than the TREE_TYPE of the parameter; for example, the +ordinary type might be short while the DECL_ARG_TYPE is +int. + +

FIELD_DECL
These nodes represent non-static data members. The DECL_SIZE and +DECL_ALIGN behave as for VAR_DECL nodes. +The position of the field within the parent record is specified by a +combination of three attributes. DECL_FIELD_OFFSET is the position, +counting in bytes, of the DECL_OFFSET_ALIGN-bit sized word containing +the bit of the field closest to the beginning of the structure. +DECL_FIELD_BIT_OFFSET is the bit offset of the first bit of the field +within this word; this may be nonzero even for fields that are not bit-fields, +since DECL_OFFSET_ALIGN may be greater than the natural alignment +of the field's type. + +

If DECL_C_BIT_FIELD holds, this field is a bit-field. In a bit-field, +DECL_BIT_FIELD_TYPE also contains the type that was originally +specified for it, while DECL_TYPE may be a modified type with lesser precision, +according to the size of the bit field. + +

NAMESPACE_DECL
See Namespaces. + +
TEMPLATE_DECL
+These nodes are used to represent class, function, and variable (static +data member) templates. The DECL_TEMPLATE_SPECIALIZATIONS are a +TREE_LIST. The TREE_VALUE of each node in the list is a +TEMPLATE_DECLs or FUNCTION_DECLs representing +specializations (including instantiations) of this template. Back ends +can safely ignore TEMPLATE_DECLs, but should examine +FUNCTION_DECL nodes on the specializations list just as they +would ordinary FUNCTION_DECL nodes. + +

For a class template, the DECL_TEMPLATE_INSTANTIATIONS list +contains the instantiations. The TREE_VALUE of each node is an +instantiation of the class. The DECL_TEMPLATE_SPECIALIZATIONS +contains partial specializations of the class. + +

USING_DECL
+Back ends can safely ignore these nodes. + +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/compat-Testing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/compat-Testing.html new file mode 100644 index 0000000..96aa5ef --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/compat-Testing.html @@ -0,0 +1,153 @@ + + +compat Testing - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: profopt Testing, +Up: Testsuites +



+
+ +

6.4.8 Support for testing binary compatibility

+ +

The file compat.exp provides language-independent support for +binary compatibility testing. It supports testing interoperability of +two compilers that follow the same ABI, or of multiple sets of +compiler options that should not affect binary compatibility. It is +intended to be used for testsuites that complement ABI testsuites. + +

A test supported by this framework has three parts, each in a +separate source file: a main program and two pieces that interact +with each other to split up the functionality being tested. + +

+
testname_main.suffix
Contains the main program, which calls a function in file +testname_x.suffix. + +
testname_x.suffix
Contains at least one call to a function in +testname_y.suffix. + +
testname_y.suffix
Shares data with, or gets arguments from, +testname_x.suffix. +
+ +

Within each test, the main program and one functional piece are +compiled by the GCC under test. The other piece can be compiled by +an alternate compiler. If no alternate compiler is specified, +then all three source files are all compiled by the GCC under test. +You can specify pairs of sets of compiler options. The first element +of such a pair specifies options used with the GCC under test, and the +second element of the pair specifies options used with the alternate +compiler. Each test is compiled with each pair of options. + +

compat.exp defines default pairs of compiler options. +These can be overridden by defining the environment variable +COMPAT_OPTIONS as: + +

     COMPAT_OPTIONS="[list [list {tst1} {alt1}]
+       ...[list {tstn} {altn}]]"
+
+

where tsti and alti are lists of options, with tsti +used by the compiler under test and alti used by the alternate +compiler. For example, with +[list [list {-g -O0} {-O3}] [list {-fpic} {-fPIC -O2}]], +the test is first built with -g -O0 by the compiler under +test and with -O3 by the alternate compiler. The test is +built a second time using -fpic by the compiler under test +and -fPIC -O2 by the alternate compiler. + +

An alternate compiler is specified by defining an environment +variable to be the full pathname of an installed compiler; for C +define ALT_CC_UNDER_TEST, and for C++ define +ALT_CXX_UNDER_TEST. These will be written to the +site.exp file used by DejaGnu. The default is to build each +test with the compiler under test using the first of each pair of +compiler options from COMPAT_OPTIONS. When +ALT_CC_UNDER_TEST or +ALT_CXX_UNDER_TEST is same, each test is built using +the compiler under test but with combinations of the options from +COMPAT_OPTIONS. + +

To run only the C++ compatibility suite using the compiler under test +and another version of GCC using specific compiler options, do the +following from objdir/gcc: + +

     rm site.exp
+     make -k \
+       ALT_CXX_UNDER_TEST=${alt_prefix}/bin/g++ \
+       COMPAT_OPTIONS="lists as shown above" \
+       check-c++ \
+       RUNTESTFLAGS="compat.exp"
+
+

A test that fails when the source files are compiled with different +compilers, but passes when the files are compiled with the same +compiler, demonstrates incompatibility of the generated code or +runtime support. A test that fails for the alternate compiler but +passes for the compiler under test probably tests for a bug that was +fixed in the compiler under test but is present in the alternate +compiler. + +

The binary compatibility tests support a small number of test framework +commands that appear within comments in a test file. + +

+
dg-require-*
These commands can be used in testname_main.suffix +to skip the test if specific support is not available on the target. + +
dg-options
The specified options are used for compiling this particular source +file, appended to the options from COMPAT_OPTIONS. When this +command appears in testname_main.suffix the options +are also used to link the test program. + +
dg-xfail-if
This command can be used in a secondary source file to specify that +compilation is expected to fail for particular options on particular +targets. +
+ + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/define_005fpeephole.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/define_005fpeephole.html new file mode 100644 index 0000000..1251884 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/define_005fpeephole.html @@ -0,0 +1,208 @@ + + +define_peephole - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + + +

14.18.1 RTL to Text Peephole Optimizers

+ +

+A definition looks like this: + +

     (define_peephole
+       [insn-pattern-1
+        insn-pattern-2
+        ...]
+       "condition"
+       "template"
+       "optional-insn-attributes")
+
+

The last string operand may be omitted if you are not using any +machine-specific information in this machine description. If present, +it must obey the same rules as in a define_insn. + +

In this skeleton, insn-pattern-1 and so on are patterns to match +consecutive insns. The optimization applies to a sequence of insns when +insn-pattern-1 matches the first one, insn-pattern-2 matches +the next, and so on. + +

Each of the insns matched by a peephole must also match a +define_insn. Peepholes are checked only at the last stage just +before code generation, and only optionally. Therefore, any insn which +would match a peephole but no define_insn will cause a crash in code +generation in an unoptimized compilation, or at various optimization +stages. + +

The operands of the insns are matched with match_operands, +match_operator, and match_dup, as usual. What is not +usual is that the operand numbers apply to all the insn patterns in the +definition. So, you can check for identical operands in two insns by +using match_operand in one insn and match_dup in the +other. + +

The operand constraints used in match_operand patterns do not have +any direct effect on the applicability of the peephole, but they will +be validated afterward, so make sure your constraints are general enough +to apply whenever the peephole matches. If the peephole matches +but the constraints are not satisfied, the compiler will crash. + +

It is safe to omit constraints in all the operands of the peephole; or +you can write constraints which serve as a double-check on the criteria +previously tested. + +

Once a sequence of insns matches the patterns, the condition is +checked. This is a C expression which makes the final decision whether to +perform the optimization (we do so if the expression is nonzero). If +condition is omitted (in other words, the string is empty) then the +optimization is applied to every sequence of insns that matches the +patterns. + +

The defined peephole optimizations are applied after register allocation +is complete. Therefore, the peephole definition can check which +operands have ended up in which kinds of registers, just by looking at +the operands. + +

The way to refer to the operands in condition is to write +operands[i] for operand number i (as matched by +(match_operand i ...)). Use the variable insn +to refer to the last of the insns being matched; use +prev_active_insn to find the preceding insns. + +

When optimizing computations with intermediate results, you can use +condition to match only when the intermediate results are not used +elsewhere. Use the C expression dead_or_set_p (insn, +op), where insn is the insn in which you expect the value +to be used for the last time (from the value of insn, together +with use of prev_nonnote_insn), and op is the intermediate +value (from operands[i]). + +

Applying the optimization means replacing the sequence of insns with one +new insn. The template controls ultimate output of assembler code +for this combined insn. It works exactly like the template of a +define_insn. Operand numbers in this template are the same ones +used in matching the original sequence of insns. + +

The result of a defined peephole optimizer does not need to match any of +the insn patterns in the machine description; it does not even have an +opportunity to match them. The peephole optimizer definition itself serves +as the insn pattern to control how the insn is output. + +

Defined peephole optimizers are run as assembler code is being output, +so the insns they produce are never combined or rearranged in any way. + +

Here is an example, taken from the 68000 machine description: + +

     (define_peephole
+       [(set (reg:SI 15) (plus:SI (reg:SI 15) (const_int 4)))
+        (set (match_operand:DF 0 "register_operand" "=f")
+             (match_operand:DF 1 "register_operand" "ad"))]
+       "FP_REG_P (operands[0]) && ! FP_REG_P (operands[1])"
+     {
+       rtx xoperands[2];
+       xoperands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1);
+     #ifdef MOTOROLA
+       output_asm_insn ("move.l %1,(sp)", xoperands);
+       output_asm_insn ("move.l %1,-(sp)", operands);
+       return "fmove.d (sp)+,%0";
+     #else
+       output_asm_insn ("movel %1,sp@", xoperands);
+       output_asm_insn ("movel %1,sp@-", operands);
+       return "fmoved sp@+,%0";
+     #endif
+     })
+
+

The effect of this optimization is to change + +

     jbsr _foobar
+     addql #4,sp
+     movel d1,sp@-
+     movel d0,sp@-
+     fmoved sp@+,fp0
+
+

into + +

     jbsr _foobar
+     movel d1,sp@
+     movel d0,sp@-
+     fmoved sp@+,fp0
+
+

insn-pattern-1 and so on look almost like the second +operand of define_insn. There is one important difference: the +second operand of define_insn consists of one or more RTX's +enclosed in square brackets. Usually, there is only one: then the same +action can be written as an element of a define_peephole. But +when there are multiple actions in a define_insn, they are +implicitly enclosed in a parallel. Then you must explicitly +write the parallel, and the square brackets within it, in the +define_peephole. Thus, if an insn pattern looks like this, + +

     (define_insn "divmodsi4"
+       [(set (match_operand:SI 0 "general_operand" "=d")
+             (div:SI (match_operand:SI 1 "general_operand" "0")
+                     (match_operand:SI 2 "general_operand" "dmsK")))
+        (set (match_operand:SI 3 "general_operand" "=d")
+             (mod:SI (match_dup 1) (match_dup 2)))]
+       "TARGET_68020"
+       "divsl%.l %2,%3:%0")
+
+

then the way to mention this insn in a peephole is as follows: + +

     (define_peephole
+       [...
+        (parallel
+         [(set (match_operand:SI 0 "general_operand" "=d")
+               (div:SI (match_operand:SI 1 "general_operand" "0")
+                       (match_operand:SI 2 "general_operand" "dmsK")))
+          (set (match_operand:SI 3 "general_operand" "=d")
+               (mod:SI (match_dup 1) (match_dup 2)))])
+        ...]
+       ...)
+
+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/define_005fpeephole2.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/define_005fpeephole2.html new file mode 100644 index 0000000..742f381 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/define_005fpeephole2.html @@ -0,0 +1,128 @@ + + +define_peephole2 - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + +
+

+Previous: define_peephole, +Up: Peephole Definitions +



+
+ +

14.18.2 RTL to RTL Peephole Optimizers

+ +

+The define_peephole2 definition tells the compiler how to +substitute one sequence of instructions for another sequence, +what additional scratch registers may be needed and what their +lifetimes must be. + +

     (define_peephole2
+       [insn-pattern-1
+        insn-pattern-2
+        ...]
+       "condition"
+       [new-insn-pattern-1
+        new-insn-pattern-2
+        ...]
+       "preparation-statements")
+
+

The definition is almost identical to define_split +(see Insn Splitting) except that the pattern to match is not a +single instruction, but a sequence of instructions. + +

It is possible to request additional scratch registers for use in the +output template. If appropriate registers are not free, the pattern +will simply not match. + +

Scratch registers are requested with a match_scratch pattern at +the top level of the input pattern. The allocated register (initially) will +be dead at the point requested within the original sequence. If the scratch +is used at more than a single point, a match_dup pattern at the +top level of the input pattern marks the last position in the input sequence +at which the register must be available. + +

Here is an example from the IA-32 machine description: + +

     (define_peephole2
+       [(match_scratch:SI 2 "r")
+        (parallel [(set (match_operand:SI 0 "register_operand" "")
+                        (match_operator:SI 3 "arith_or_logical_operator"
+                          [(match_dup 0)
+                           (match_operand:SI 1 "memory_operand" "")]))
+                   (clobber (reg:CC 17))])]
+       "! optimize_size && ! TARGET_READ_MODIFY"
+       [(set (match_dup 2) (match_dup 1))
+        (parallel [(set (match_dup 0)
+                        (match_op_dup 3 [(match_dup 0) (match_dup 2)]))
+                   (clobber (reg:CC 17))])]
+       "")
+
+

This pattern tries to split a load from its use in the hopes that we'll be +able to schedule around the memory load latency. It allocates a single +SImode register of class GENERAL_REGS ("r") that needs +to be live only at the point just before the arithmetic. + +

A real example requiring extended scratch lifetimes is harder to come by, +so here's a silly made-up example: + +

     (define_peephole2
+       [(match_scratch:SI 4 "r")
+        (set (match_operand:SI 0 "" "") (match_operand:SI 1 "" ""))
+        (set (match_operand:SI 2 "" "") (match_dup 1))
+        (match_dup 4)
+        (set (match_operand:SI 3 "" "") (match_dup 1))]
+       "/* determine 1 does not overlap 0 and 2 */"
+       [(set (match_dup 4) (match_dup 1))
+        (set (match_dup 0) (match_dup 4))
+        (set (match_dup 2) (match_dup 4))]
+        (set (match_dup 3) (match_dup 4))]
+       "")
+
+

If we had not added the (match_dup 4) in the middle of the input +sequence, it might have been the case that the register we chose at the +beginning of the sequence is killed by the first or second set. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/epilogue-instruction-pattern.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/epilogue-instruction-pattern.html new file mode 100644 index 0000000..569279d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/epilogue-instruction-pattern.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/gcc-Directory.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/gcc-Directory.html new file mode 100644 index 0000000..58f171c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/gcc-Directory.html @@ -0,0 +1,76 @@ + + +gcc Directory - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: Top Level, +Up: Source Tree +



+
+ +

6.3 The gcc Subdirectory

+ +

The gcc directory contains many files that are part of the C +sources of GCC, other files used as part of the configuration and +build process, and subdirectories including documentation and a +testsuite. The files that are sources of GCC are documented in a +separate chapter. See Passes and Files of the Compiler. + +

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/gcov-Testing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/gcov-Testing.html new file mode 100644 index 0000000..635888b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/gcov-Testing.html @@ -0,0 +1,115 @@ + + +gcov Testing - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: libgcj Tests, +Up: Testsuites +



+
+ +

6.4.6 Support for testing gcov

+ +

Language-independent support for testing gcov, and for checking +that branch profiling produces expected values, is provided by the +expect file gcov.exp. gcov tests also rely on procedures +in gcc.dg.exp to compile and run the test program. A typical +gcov test contains the following DejaGnu commands within comments: + +

     { dg-options "-fprofile-arcs -ftest-coverage" }
+     { dg-do run { target native } }
+     { dg-final { run-gcov sourcefile } }
+
+

Checks of gcov output can include line counts, branch percentages, +and call return percentages. All of these checks are requested via +commands that appear in comments in the test's source file. +Commands to check line counts are processed by default. +Commands to check branch percentages and call return percentages are +processed if the run-gcov command has arguments branches +or calls, respectively. For example, the following specifies +checking both, as well as passing -b to gcov: + +

     { dg-final { run-gcov branches calls { -b sourcefile } } }
+
+

A line count command appears within a comment on the source line +that is expected to get the specified count and has the form +count(cnt). A test should only check line counts for +lines that will get the same count for any architecture. + +

Commands to check branch percentages (branch) and call +return percentages (returns) are very similar to each other. +A beginning command appears on or before the first of a range of +lines that will report the percentage, and the ending command +follows that range of lines. The beginning command can include a +list of percentages, all of which are expected to be found within +the range. A range is terminated by the next command of the same +kind. A command branch(end) or returns(end) marks +the end of a range without starting a new one. For example: + +

     if (i > 10 && j > i && j < 20)  /* branch(27 50 75) */
+                                     /* branch(end) */
+       foo (i, j);
+
+

For a call return percentage, the value specified is the +percentage of calls reported to return. For a branch percentage, +the value is either the expected percentage or 100 minus that +value, since the direction of a branch can differ depending on the +target or the optimization level. + +

Not all branches and calls need to be checked. A test should not +check for branches that might be optimized away or replaced with +predicated instructions. Don't check for calls inserted by the +compiler or ones that might be inlined or optimized away. + +

A single test can check for combinations of line counts, branch +percentages, and call return percentages. The command to check a +line count must appear on the line that will report that count, but +commands to check branch percentages and call return percentages can +bracket the lines that report them. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/index.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/index.html new file mode 100644 index 0000000..70a28c5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/index.html @@ -0,0 +1,570 @@ + + +GNU Compiler Collection (GCC) Internals + + + + + + + + + + +This file documents the internals of the GNU compilers. +

+
+
+Copyright © 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +2007 Free Software Foundation, Inc. + +

Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with the +Invariant Sections being “GNU General Public License” and “Funding +Free Software”, the Front-Cover texts being (a) (see below), and with +the Back-Cover Texts being (b) (see below). A copy of the license is +included in the section entitled “GNU Free Documentation License”. + +

(a) The FSF's Front-Cover Text is: + +

A GNU Manual + +

(b) The FSF's Back-Cover Text is: + +

You have freedom to copy and modify this GNU Manual, like GNU + software. Copies published by the Free Software Foundation raise + funds for GNU development. +

+
+
+ + + + + +
+

Table of Contents

+ +
+ +
+

+Next: , +Up: (DIR) +



+
+ +

Introduction

+ +

+This manual documents the internals of the GNU compilers, including +how to port them to new targets and some information about how to +write front ends for new languages. It corresponds to the compilers +(WinAVR 20081205) +version 4.3.2. The use of the GNU compilers is documented in a +separate manual. See Introduction (Using the GNU Compiler Collection (GCC)). + +

This manual is mainly a reference manual rather than a tutorial. It +discusses how to contribute to GCC (see Contributing), the +characteristics of the machines supported by GCC as hosts and targets +(see Portability), how GCC relates to the ABIs on such systems +(see Interface), and the characteristics of the languages for +which GCC front ends are written (see Languages). It then +describes the GCC source tree structure and build system, some of the +interfaces to GCC front ends, and how support for a target system is +implemented in GCC. + +

Additional tutorial information is linked to from +http://gcc.gnu.org/readings.html. + +

+ + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/libgcj-Tests.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/libgcj-Tests.html new file mode 100644 index 0000000..a0d6ed8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/libgcj-Tests.html @@ -0,0 +1,78 @@ + + +libgcj Tests - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +
+

+Next: , +Previous: C Tests, +Up: Testsuites +



+
+ +

6.4.5 The Java library testsuites.

+ +

Runtime tests are executed via make check in the +target/libjava/testsuite directory in the build +tree. Additional runtime tests can be checked into this testsuite. + +

Regression testing of the core packages in libgcj is also covered by the +Mauve testsuite. The Mauve Project +develops tests for the Java Class Libraries. These tests are run as part +of libgcj testing by placing the Mauve tree within the libjava testsuite +sources at libjava/testsuite/libjava.mauve/mauve, or by specifying +the location of that tree when invoking make, as in +make MAUVEDIR=~/mauve check. + +

To detect regressions, a mechanism in mauve.exp compares the +failures for a test run against the list of expected failures in +libjava/testsuite/libjava.mauve/xfails from the source hierarchy. +Update this file when adding new failing tests to Mauve, or when fixing +bugs in libgcj that had caused Mauve test failures. + +

We encourage developers to contribute test cases to Mauve. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/loop_002div.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/loop_002div.html new file mode 100644 index 0000000..cf5dc21 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/loop_002div.html @@ -0,0 +1,99 @@ + + +loop-iv - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+ +

11.6 IV analysis on RTL

+ +

+The induction variable on RTL is simple and only allows analysis of +affine induction variables, and only in one loop at once. The interface +is declared in cfgloop.h. Before analyzing induction variables +in a loop L, iv_analysis_loop_init function must be called on L. +After the analysis (possibly calling iv_analysis_loop_init for +several loops) is finished, iv_analysis_done should be called. +The following functions can be used to access the results of the +analysis: + +

    +
  • iv_analyze: Analyzes a single register used in the given +insn. If no use of the register in this insn is found, the following +insns are scanned, so that this function can be called on the insn +returned by get_condition. +
  • iv_analyze_result: Analyzes result of the assignment in the +given insn. +
  • iv_analyze_expr: Analyzes a more complicated expression. +All its operands are analyzed by iv_analyze, and hence they must +be used in the specified insn or one of the following insns. +
+ +

The description of the induction variable is provided in struct +rtx_iv. In order to handle subregs, the representation is a bit +complicated; if the value of the extend field is not +UNKNOWN, the value of the induction variable in the i-th +iteration is + +

     delta + mult * extend_{extend_mode} (subreg_{mode} (base + i * step)),
+
+

with the following exception: if first_special is true, then the +value in the first iteration (when i is zero) is delta + +mult * base. However, if extend is equal to UNKNOWN, +then first_special must be false, delta 0, mult 1 +and the value in the i-th iteration is + +

     subreg_{mode} (base + i * step)
+
+

The function get_iv_value can be used to perform these +calculations. + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/profopt-Testing.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/profopt-Testing.html new file mode 100644 index 0000000..b2c8178 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/profopt-Testing.html @@ -0,0 +1,89 @@ + + +profopt Testing - GNU Compiler Collection (GCC) Internals + + + + + + + + + + + + + +

+

+Next: , +Previous: gcov Testing, +Up: Testsuites +



+
+ +

6.4.7 Support for testing profile-directed optimizations

+ +

The file profopt.exp provides language-independent support for +checking correct execution of a test built with profile-directed +optimization. This testing requires that a test program be built and +executed twice. The first time it is compiled to generate profile +data, and the second time it is compiled to use the data that was +generated during the first execution. The second execution is to +verify that the test produces the expected results. + +

To check that the optimization actually generated better code, a +test can be built and run a third time with normal optimizations to +verify that the performance is better with the profile-directed +optimizations. profopt.exp has the beginnings of this kind +of support. + +

profopt.exp provides generic support for profile-directed +optimizations. Each set of tests that uses it provides information +about a specific optimization: + +

+
tool
tool being tested, e.g., gcc + +
profile_option
options used to generate profile data + +
feedback_option
options used to optimize using that profile data + +
prof_ext
suffix of profile data files + +
PROFOPT_OPTIONS
list of options with which to run each test, similar to the lists for +torture tests +
+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/prologue-instruction-pattern.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/prologue-instruction-pattern.html new file mode 100644 index 0000000..d99c7ad --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/prologue-instruction-pattern.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/shift-patterns.html b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/shift-patterns.html new file mode 100644 index 0000000..fee8376 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gcc/HTML/gcc-4.3.2/gccint/shift-patterns.html @@ -0,0 +1 @@ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/gdb.pdf b/arduino-0018-windows/hardware/tools/avr/doc/gdb/gdb.pdf new file mode 100644 index 0000000..7eddb15 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/gdb/gdb.pdf differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb.html new file mode 100644 index 0000000..8417737 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb.html @@ -0,0 +1,145 @@ + + + + + +Debugging with GDB: Debugging with GDB + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

Debugging with GDB

+ +This file describes GDB, the GNU symbolic debugger. +

+ +This is the Ninth Edition, for GDB Version +6.8. +

+ +Copyright (C) 1988-2006 Free Software Foundation, Inc. +

+ +This edition of the GDB manual is dedicated to the memory of Fred +Fish. Fred was a long-standing contributor to GDB and to Free +software in general. We will miss him. +

+ +

+ + +
Summary of GDB  
1. A Sample GDB Session  A sample GDB session
+ +
+ + + + + + + + + + + +
2. Getting In and Out of GDB  Getting in and out of GDB
3. GDB Commands  GDB commands
4. Running Programs Under GDB  Running programs under GDB
5. Stopping and Continuing  Stopping and continuing
6. Examining the Stack  Examining the stack
7. Examining Source Files  Examining source files
8. Examining Data  Examining data
9. C Preprocessor Macros  Preprocessor Macros
10. Tracepoints  Debugging remote targets non-intrusively
11. Debugging Programs That Use Overlays  Debugging programs that use overlays
+ +
+ + +
12. Using GDB with Different Languages  Using GDB with different languages
+ +
+ + + + + + + + + + + + + + +
13. Examining the Symbol Table  Examining the symbol table
14. Altering Execution  Altering execution
15. GDB Files  GDB files
16. Specifying a Debugging Target  Specifying a debugging target
17. Debugging Remote Programs  Debugging remote programs
18. Configuration-Specific Information  Configuration-specific information
19. Controlling GDB  
20. Canned Sequences of Commands  Canned sequences of commands
21. Command Interpreters  
22. GDB Text User Interface  
23. Using GDB under GNU Emacs  
24. The GDB/MI Interface  GDB's Machine Interface.
25. GDB Annotations  GDB's annotation interface.
+ +
+ + +
26. Reporting Bugs in GDB  Reporting bugs in GDB
+ +
+ + + + + + + + + +
27. Command Line Editing  
28. Using History Interactively  
A. Formatting Documentation  How to format and print GDB documentation
B. Installing GDB  
C. Maintenance Commands  
D. GDB Remote Serial Protocol  
E. The GDB Agent Expression Mechanism  
F. Target Descriptions  How targets can describe themselves to
+                                GDB +
+ + + + +
G. GNU GENERAL PUBLIC LICENSE  GNU General Public License says + how you can copy and share GDB
H. GNU Free Documentation License  The license for this documentation
Index  
+

+ +


+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_1.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_1.html new file mode 100644 index 0000000..9237ea0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_1.html @@ -0,0 +1,516 @@ + + + + + +Debugging with GDB: Summary + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+ +

Summary of GDB

+ +

+ +The purpose of a debugger such as GDB is to allow you to see what is +going on "inside" another program while it executes--or what another +program was doing at the moment it crashed. +

+ +GDB can do four main kinds of things (plus other things in support of +these) to help you catch bugs in the act: +

+ +

    +
  • +Start your program, specifying anything that might affect its behavior. +

    + +

  • +Make your program stop on specified conditions. +

    + +

  • +Examine what has happened, when your program has stopped. +

    + +

  • +Change things in your program, so you can experiment with correcting the +effects of one bug and go on to learn about another. +
+

+ +You can use GDB to debug programs written in C and C++. +For more information, see Supported Languages. +For more information, see C and C++. +

+ + +Support for Modula-2 is partial. For information on Modula-2, see +Modula-2. +

+ + +Debugging Pascal programs which use sets, subranges, file variables, or +nested functions does not currently work. GDB does not support +entering expressions, printing values, or similar features using Pascal +syntax. +

+ + +GDB can be used to debug programs written in Fortran, although +it may be necessary to refer to some variables with a trailing +underscore. +

+ +GDB can be used to debug programs written in Objective-C, +using either the Apple/NeXT or the GNU Objective-C runtime. +

+ +

+ + +
Free Software  Freely redistributable software
Contributors to GDB  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Free Software

+ +

+ +GDB is free software, protected by the GNU +General Public License +(GPL). The GPL gives you the freedom to copy or adapt a licensed +program--but every person getting a copy also gets with it the +freedom to modify that copy (which means that they must get access to +the source code), and the freedom to distribute further copies. +Typical software companies use copyrights to limit your freedoms; the +Free Software Foundation uses the GPL to preserve these freedoms. +

+ +Fundamentally, the General Public License is a license which says that +you have these freedoms and that you cannot take these freedoms away +from anyone else. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Free Software Needs Free Documentation

+ +

+ +The biggest deficiency in the free software community today is not in +the software--it is the lack of good free documentation that we can +include with the free software. Many of our most important +programs do not come with free reference manuals and free introductory +texts. Documentation is an essential part of any software package; +when an important free software package does not come with a free +manual and a free tutorial, that is a major gap. We have many such +gaps today. +

+ +Consider Perl, for instance. The tutorial manuals that people +normally use are non-free. How did this come about? Because the +authors of those manuals published them with restrictive terms--no +copying, no modification, source files not available--which exclude +them from the free software world. +

+ +That wasn't the first time this sort of thing happened, and it was far +from the last. Many times we have heard a GNU user eagerly describe a +manual that he is writing, his intended contribution to the community, +only to learn that he had ruined everything by signing a publication +contract to make it non-free. +

+ +Free documentation, like free software, is a matter of freedom, not +price. The problem with the non-free manual is not that publishers +charge a price for printed copies--that in itself is fine. (The Free +Software Foundation sells printed copies of manuals, too.) The +problem is the restrictions on the use of the manual. Free manuals +are available in source code form, and give you permission to copy and +modify. Non-free manuals do not allow this. +

+ +The criteria of freedom for a free manual are roughly the same as for +free software. Redistribution (including the normal kinds of +commercial redistribution) must be permitted, so that the manual can +accompany every copy of the program, both on-line and on paper. +

+ +Permission for modification of the technical content is crucial too. +When people modify the software, adding or changing features, if they +are conscientious they will change the manual too--so they can +provide accurate and clear documentation for the modified program. A +manual that leaves you no choice but to write a new manual to document +a changed version of the program is not really available to our +community. +

+ +Some kinds of limits on the way modification is handled are +acceptable. For example, requirements to preserve the original +author's copyright notice, the distribution terms, or the list of +authors, are ok. It is also no problem to require modified versions +to include notice that they were modified. Even entire sections that +may not be deleted or changed are acceptable, as long as they deal +with nontechnical topics (like this one). These kinds of restrictions +are acceptable because they don't obstruct the community's normal use +of the manual. +

+ +However, it must be possible to modify all the technical +content of the manual, and then distribute the result in all the usual +media, through all the usual channels. Otherwise, the restrictions +obstruct the use of the manual, it is not free, and we need another +manual to replace it. +

+ +Please spread the word about this issue. Our community continues to +lose manuals to proprietary publishing. If we spread the word that +free software needs free reference manuals and free tutorials, perhaps +the next person who wants to contribute by writing documentation will +realize, before it is too late, that only free manuals contribute to +the free software community. +

+ +If you are writing documentation, please insist on publishing it under +the GNU Free Documentation License or another free documentation +license. Remember that this decision requires your approval--you +don't have to let the publisher decide. Some commercial publishers +will use a free license if you insist, but they will not propose the +option; it is up to you to raise the issue and say firmly that this is +what you want. If the publisher you are dealing with refuses, please +try other publishers. If you're not sure whether a proposed license +is free, write to licensing@gnu.org. +

+ +You can encourage commercial publishers to sell more free, copylefted +manuals and tutorials by buying them, and particularly by buying +copies from the publishers that paid for their writing or for major +improvements. Meanwhile, try to avoid buying non-free documentation +at all. Check the distribution terms of a manual before you buy it, +and insist that whoever seeks your business must respect your freedom. +Check the history of the book, and try to reward the publishers that +have paid or pay the authors to work on it. +

+ +The Free Software Foundation maintains a list of free documentation +published by other publishers, at +http://www.fsf.org/doc/other-free-books.html. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Contributors to GDB

+ +

+ +Richard Stallman was the original author of GDB, and of many +other GNU programs. Many others have contributed to its +development. This section attempts to credit major contributors. One +of the virtues of free software is that everyone is free to contribute +to it; with regret, we cannot actually acknowledge everyone here. The +file `ChangeLog' in the GDB distribution approximates a +blow-by-blow account. +

+ +Changes much prior to version 2.0 are lost in the mists of time. +

+ +

+Plea: Additions to this section are particularly welcome. If you +or your friends (or enemies, to be evenhanded) have been unfairly +omitted from this list, we would like to add your names! +
+

+ +So that they may not regard their many labors as thankless, we +particularly thank those who shepherded GDB through major +releases: +Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0); +Jim Blandy (release 4.18); +Jason Molenda (release 4.17); +Stan Shebs (release 4.14); +Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9); +Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4); +John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9); +Jim Kingdon (releases 3.5, 3.4, and 3.3); +and Randy Smith (releases 3.2, 3.1, and 3.0). +

+ +Richard Stallman, assisted at various times by Peter TerMaat, Chris +Hanson, and Richard Mlynarik, handled releases through 2.8. +

+ +Michael Tiemann is the author of most of the GNU C++ support +in GDB, with significant additional contributions from Per +Bothner and Daniel Berlin. James Clark wrote the GNU C++ +demangler. Early work on C++ was by Peter TerMaat (who also did +much general update work leading to release 3.0). +

+ +GDB uses the BFD subroutine library to examine multiple +object-file formats; BFD was a joint project of David V. +Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore. +

+ +David Johnson wrote the original COFF support; Pace Willison did +the original support for encapsulated COFF. +

+ +Brent Benson of Harris Computer Systems contributed DWARF 2 support. +

+ +Adam de Boor and Bradley Davis contributed the ISI Optimum V support. +Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS +support. +Jean-Daniel Fekete contributed Sun 386i support. +Chris Hanson improved the HP9000 support. +Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support. +David Johnson contributed Encore Umax support. +Jyrki Kuoppala contributed Altos 3068 support. +Jeff Law contributed HP PA and SOM support. +Keith Packard contributed NS32K support. +Doug Rabson contributed Acorn Risc Machine support. +Bob Rusk contributed Harris Nighthawk CX-UX support. +Chris Smith contributed Convex support (and Fortran debugging). +Jonathan Stone contributed Pyramid support. +Michael Tiemann contributed SPARC support. +Tim Tucker contributed support for the Gould NP1 and Gould Powernode. +Pace Willison contributed Intel 386 support. +Jay Vosburgh contributed Symmetry support. +Marko Mlinar contributed OpenRISC 1000 support. +

+ +Andreas Schwab contributed M68K GNU/Linux support. +

+ +Rich Schaefer and Peter Schauer helped with support of SunOS shared +libraries. +

+ +Jay Fenlason and Roland McGrath ensured that GDB and GAS agree +about several machine instruction sets. +

+ +Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop +remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM +contributed remote debugging modules for the i960, VxWorks, A29K UDI, +and RDI targets, respectively. +

+ +Brian Fox is the author of the readline libraries providing +command-line editing and command history. +

+ +Andrew Beers of SUNY Buffalo wrote the language-switching code, the +Modula-2 support, and contributed the Languages chapter of this manual. +

+ +Fred Fish wrote most of the support for Unix System Vr4. +He also enhanced the command-completion support to cover C++ overloaded +symbols. +

+ +Hitachi America (now Renesas America), Ltd. sponsored the support for +H8/300, H8/500, and Super-H processors. +

+ +NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors. +

+ +Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D +processors. +

+ +Toshiba sponsored the support for the TX39 Mips processor. +

+ +Matsushita sponsored the support for the MN10200 and MN10300 processors. +

+ +Fujitsu sponsored the support for SPARClite and FR30 processors. +

+ +Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware +watchpoints. +

+ +Michael Snyder added support for tracepoints. +

+ +Stu Grossman wrote gdbserver. +

+ +Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made +nearly innumerable bug fixes and cleanups throughout GDB. +

+ +The following people at the Hewlett-Packard Company contributed +support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0 +(narrow mode), HP's implementation of kernel threads, HP's aC++ +compiler, and the Text User Interface (nee Terminal User Interface): +Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann, +Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase +provided HP-specific information in this manual. +

+ +DJ Delorie ported GDB to MS-DOS, for the DJGPP project. +Robert Hoehne made significant contributions to the DJGPP port. +

+ +Cygnus Solutions has sponsored GDB maintenance and much of its +development since 1991. Cygnus engineers who have worked on GDB +fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin +Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim +Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler, +Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek +Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In +addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton, +JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug +Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff +Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner, +Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin +Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela +Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David +Zuhn have made contributions both large and small. +

+ +Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for +Cygnus Solutions, implemented the original GDB/MI interface. +

+ +Jim Blandy added support for preprocessor macros, while working for Red +Hat. +

+ +Andrew Cagney designed GDB's architecture vector. Many +people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick +Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei +Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason +Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped +with the migration of old architectures to this new framework. +

+ +Andrew Cagney completely re-designed and re-implemented GDB's +unwinder framework, this consisting of a fresh new design featuring +frame IDs, independent frame sniffers, and the sentinel frame. Mark +Kettenis implemented the DWARF 2 unwinder, Jeff Johnston the +libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and +trad unwinders. The architecture-specific changes, each involving a +complete rewrite of the architecture's frame code, were carried out by +Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane +Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel +Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei +Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich +Weigand. +

+ +Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from +Tensilica, Inc. contributed support for Xtensa processors. Others +who have worked on the Xtensa port of GDB in the past include +Steve Tjiang, John Newlin, and Scott Foehner. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_10.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_10.html new file mode 100644 index 0000000..1fe6ddf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_10.html @@ -0,0 +1,317 @@ + + + + + +Debugging with GDB: Macros + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

9. C Preprocessor Macros

+ +

+ +Some languages, such as C and C++, provide a way to define and invoke +"preprocessor macros" which expand into strings of tokens. +GDB can evaluate expressions containing macro invocations, show +the result of macro expansion, and show a macro's definition, including +where it was defined. +

+ +You may need to compile your program specially to provide GDB +with information about preprocessor macros. Most compilers do not +include macros in their debugging information, even when you compile +with the `-g' flag. See section 4.1 Compiling for Debugging. +

+ +A program may define a macro at one point, remove that definition later, +and then provide a different definition after that. Thus, at different +points in the program, a macro may have different definitions, or have +no definition at all. If there is a current stack frame, GDB +uses the macros in scope at that frame's source code line. Otherwise, +GDB uses the macros in scope at the current listing location; +see 7.1 Printing Source Lines. +

+ +At the moment, GDB does not support the ## +token-splicing operator, the # stringification operator, or +variable-arity macros. +

+ +Whenever GDB evaluates an expression, it always expands any +macro invocations present in the expression. GDB also provides +the following commands for working with macros explicitly. +

+ +

+ + + + + +
macro expand expression +
macro exp expression +
Show the results of expanding all preprocessor macro invocations in +expression. Since GDB simply expands macros, but does +not parse the result, expression need not be a valid expression; +it can be any string of tokens. +

+ + +

macro expand-once expression +
macro exp1 expression +
+(This command is not yet implemented.) Show the results of +expanding those preprocessor macro invocations that appear explicitly in +expression. Macro invocations appearing in that expansion are +left unchanged. This command allows you to see the effect of a +particular macro more clearly, without being confused by further +expansions. Since GDB simply expands macros, but does not +parse the result, expression need not be a valid expression; it +can be any string of tokens. +

+ + + + +

info macro macro +
Show the definition of the macro named macro, and describe the +source location where that definition was established. +

+ + + + + +

macro define macro replacement-list +
macro define macro(arglist) replacement-list +
(This command is not yet implemented.) Introduce a definition for a +preprocessor macro named macro, invocations of which are replaced +by the tokens given in replacement-list. The first form of this +command defines an "object-like" macro, which takes no arguments; the +second form defines a "function-like" macro, which takes the arguments +given in arglist. +

+ +A definition introduced by this command is in scope in every expression +evaluated in GDB, until it is removed with the macro +undef command, described below. The definition overrides all +definitions for macro present in the program being debugged, as +well as any previous user-supplied definition. +

+ + +

macro undef macro +
(This command is not yet implemented.) Remove any user-supplied +definition for the macro named macro. This command only affects +definitions provided with the macro define command, described +above; it cannot remove definitions present in the program being +debugged. +

+ + +

macro list +
(This command is not yet implemented.) List all the macros +defined using the macro define command. +
+

+ + +Here is a transcript showing the above commands in action. First, we +show our source files: +

+ +
 
$ cat sample.c
+#include <stdio.h>
+#include "sample.h"
+
+#define M 42
+#define ADD(x) (M + x)
+
+main ()
+{
+#define N 28
+  printf ("Hello, world!\n");
+#undef N
+  printf ("We're so creative.\n");
+#define N 1729
+  printf ("Goodbye, world!\n");
+}
+$ cat sample.h
+#define Q <
+$
+

+ +Now, we compile the program using the GNU C compiler, GCC. +We pass the `-gdwarf-2' and `-g3' flags to ensure the +compiler includes information about preprocessor macros in the debugging +information. +

+ +
 
$ gcc -gdwarf-2 -g3 sample.c -o sample
+$
+

+ +Now, we start GDB on our sample program: +

+ +
 
$ gdb -nw sample
+GNU gdb 2002-05-06-cvs
+Copyright 2002 Free Software Foundation, Inc.
+GDB is free software, ...
+(gdb)
+

+ +We can expand macros and examine their definitions, even when the +program is not running. GDB uses the current listing position +to decide which macro definitions are in scope: +

+ +
 
(gdb) list main
+3
+4       #define M 42
+5       #define ADD(x) (M + x)
+6
+7       main ()
+8       {
+9       #define N 28
+10        printf ("Hello, world!\n");
+11      #undef N
+12        printf ("We're so creative.\n");
+(gdb) info macro ADD
+Defined at /home/jimb/gdb/macros/play/sample.c:5
+#define ADD(x) (M + x)
+(gdb) info macro Q
+Defined at /home/jimb/gdb/macros/play/sample.h:1
+  included at /home/jimb/gdb/macros/play/sample.c:2
+#define Q <
+(gdb) macro expand ADD(1)
+expands to: (42 + 1)
+(gdb) macro expand-once ADD(1)
+expands to: once (M + 1)
+(gdb)
+

+ +In the example above, note that macro expand-once expands only +the macro invocation explicit in the original text -- the invocation of +ADD -- but does not expand the invocation of the macro M, +which was introduced by ADD. +

+ +Once the program is running, GDB uses the macro definitions in +force at the source line of the current stack frame: +

+ +
 
(gdb) break main
+Breakpoint 1 at 0x8048370: file sample.c, line 10.
+(gdb) run
+Starting program: /home/jimb/gdb/macros/play/sample
+
+Breakpoint 1, main () at sample.c:10
+10        printf ("Hello, world!\n");
+(gdb)
+

+ +At line 10, the definition of the macro N at line 9 is in force: +

+ +
 
(gdb) info macro N
+Defined at /home/jimb/gdb/macros/play/sample.c:9
+#define N 28
+(gdb) macro expand N Q M
+expands to: 28 < 42
+(gdb) print N Q M
+$1 = 1
+(gdb)
+

+ +As we step over directives that remove N's definition, and then +give it a new definition, GDB finds the definition (or lack +thereof) in force at each point: +

+ +
 
(gdb) next
+Hello, world!
+12        printf ("We're so creative.\n");
+(gdb) info macro N
+The symbol `N' has no definition as a C/C++ preprocessor macro
+at /home/jimb/gdb/macros/play/sample.c:12
+(gdb) next
+We're so creative.
+14        printf ("Goodbye, world!\n");
+(gdb) info macro N
+Defined at /home/jimb/gdb/macros/play/sample.c:13
+#define N 1729
+(gdb) macro expand N Q M
+expands to: 1729 < 42
+(gdb) print N Q M
+$2 = 0
+(gdb)
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_11.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_11.html new file mode 100644 index 0000000..43d7dee --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_11.html @@ -0,0 +1,920 @@ + + + + + +Debugging with GDB: Tracepoints + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10. Tracepoints

+ +

+ + +In some applications, it is not feasible for the debugger to interrupt +the program's execution long enough for the developer to learn +anything helpful about its behavior. If the program's correctness +depends on its real-time behavior, delays introduced by a debugger +might cause the program to change its behavior drastically, or perhaps +fail, even when the code itself is correct. It is useful to be able +to observe the program's behavior without interrupting it. +

+ +Using GDB's trace and collect commands, you can +specify locations in the program, called tracepoints, and +arbitrary expressions to evaluate when those tracepoints are reached. +Later, using the tfind command, you can examine the values +those expressions had when the program hit the tracepoints. The +expressions may also denote objects in memory--structures or arrays, +for example--whose values GDB should record; while visiting +a particular tracepoint, you may inspect those objects as if they were +in memory at that moment. However, because GDB records these +values without interacting with you, it can do so quickly and +unobtrusively, hopefully not disturbing the program's behavior. +

+ +The tracepoint facility is currently available only for remote +targets. See section 16. Specifying a Debugging Target. In addition, your remote target must know +how to collect trace data. This functionality is implemented in the +remote stub; however, none of the stubs distributed with GDB +support tracepoints as of this writing. The format of the remote +packets used to implement tracepoints are described in D.6 Tracepoint Packets. +

+ +This chapter describes the tracepoint commands and features. +

+ +

+ + + +
10.1 Commands to Set Tracepoints  
10.2 Using the Collected Data  
10.3 Convenience Variables for Tracepoints  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.1 Commands to Set Tracepoints

+ +

+ +Before running such a trace experiment, an arbitrary number of +tracepoints can be set. Like a breakpoint (see section 5.1.1 Setting Breakpoints), a +tracepoint has a number assigned to it by GDB. Like with +breakpoints, tracepoint numbers are successive integers starting from +one. Many of the commands associated with tracepoints take the +tracepoint number as their argument, to identify which tracepoint to +work on. +

+ +For each tracepoint, you can specify, in advance, some arbitrary set +of data that you want the target to collect in the trace buffer when +it hits that tracepoint. The collected data can include registers, +local variables, or global data. Later, you can use GDB +commands to examine the values these data had at the time the +tracepoint was hit. +

+ +This section describes commands to set tracepoints and associated +conditions and actions. +

+ +

+ + + + + + +
10.1.1 Create and Delete Tracepoints  
10.1.2 Enable and Disable Tracepoints  
10.1.3 Tracepoint Passcounts  
10.1.4 Tracepoint Action Lists  
10.1.5 Listing Tracepoints  
10.1.6 Starting and Stopping Trace Experiments  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.1.1 Create and Delete Tracepoints

+ +

+ +

+ + +
trace +
The trace command is very similar to the break command. +Its argument can be a source line, a function name, or an address in +the target program. See section 5.1.1 Setting Breakpoints. The trace command +defines a tracepoint, which is a point in the target program where the +debugger will briefly stop, collect some data, and then allow the +program to continue. Setting a tracepoint or changing its commands +doesn't take effect until the next tstart command; thus, you +cannot change the tracepoint attributes once a trace experiment is +running. +

+ +Here are some examples of using the trace command: +

+ +
 
(gdb) trace foo.c:121    // a source file and line number
+
+(gdb) trace +2           // 2 lines forward
+
+(gdb) trace my_function  // first source line of function
+
+(gdb) trace *my_function // EXACT start address of function
+
+(gdb) trace *0x2117c4    // an address
+

+ +You can abbreviate trace as tr. +

+ + + + + +The convenience variable $tpnum records the tracepoint number +of the most recently set tracepoint. +

+ + + +

delete tracepoint [num] +
Permanently delete one or more tracepoints. With no argument, the +default is to delete all tracepoints. +

+ +Examples: +

+ +
 
(gdb) delete trace 1 2 3 // remove three tracepoints
+
+(gdb) delete trace       // remove all tracepoints
+

+ +You can abbreviate this command as del tr. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.1.2 Enable and Disable Tracepoints

+ +

+ +

+ +
disable tracepoint [num] +
Disable tracepoint num, or all tracepoints if no argument +num is given. A disabled tracepoint will have no effect during +the next trace experiment, but it is not forgotten. You can re-enable +a disabled tracepoint using the enable tracepoint command. +

+ + +

enable tracepoint [num] +
Enable tracepoint num, or all tracepoints. The enabled +tracepoints will become effective the next time a trace experiment is +run. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.1.3 Tracepoint Passcounts

+ +

+ +

+ + +
passcount [n [num]] +
Set the passcount of a tracepoint. The passcount is a way to +automatically stop a trace experiment. If a tracepoint's passcount is +n, then the trace experiment will be automatically stopped on +the n'th time that tracepoint is hit. If the tracepoint number +num is not specified, the passcount command sets the +passcount of the most recently defined tracepoint. If no passcount is +given, the trace experiment will run until stopped explicitly by the +user. +

+ +Examples: +

+ +
 
(gdb) passcount 5 2 // Stop on the 5th execution of
+                                   // tracepoint 2
+
+(gdb) passcount 12  // Stop on the 12th execution of the
+                                   // most recently defined tracepoint.
+(gdb) trace foo
+(gdb) pass 3
+(gdb) trace bar
+(gdb) pass 2
+(gdb) trace baz
+(gdb) pass 1        // Stop tracing when foo has been
+                                    // executed 3 times OR when bar has
+                                    // been executed 2 times
+                                    // OR when baz has been executed 1 time.
+

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.1.4 Tracepoint Action Lists

+ +

+ +

+ + +
actions [num] +
This command will prompt for a list of actions to be taken when the +tracepoint is hit. If the tracepoint number num is not +specified, this command sets the actions for the one that was most +recently defined (so that you can define a tracepoint and then say +actions without bothering about its number). You specify the +actions themselves on the following lines, one action at a time, and +terminate the actions list with a line containing just end. So +far, the only defined actions are collect and +while-stepping. +

+ + +To remove all actions from a tracepoint, type `actions num' +and follow it immediately with `end'. +

+ +
 
(gdb) collect data // collect some data
+
+(gdb) while-stepping 5 // single-step 5 times, collect data
+
+(gdb) end              // signals the end of actions.
+

+ +In the following example, the action list begins with collect +commands indicating the things to be collected when the tracepoint is +hit. Then, in order to single-step and collect additional data +following the tracepoint, a while-stepping command is used, +followed by the list of things to be collected while stepping. The +while-stepping command is terminated by its own separate +end command. Lastly, the action list is terminated by an +end command. +

+ +
 
(gdb) trace foo
+(gdb) actions
+Enter actions for tracepoint 1, one per line:
+> collect bar,baz
+> collect $regs
+> while-stepping 12
+  > collect $fp, $sp
+  > end
+end
+

+ + +

collect expr1, expr2, ... +
Collect values of the given expressions when the tracepoint is hit. +This command accepts a comma-separated list of any valid expressions. +In addition to global, static, or local variables, the following +special arguments are supported: +

+ +

+
$regs +
collect all registers +

+ +

$args +
collect all function arguments +

+ +

$locals +
collect all local variables. +
+

+ +You can give several consecutive collect commands, each one +with a single argument, or one collect command with several +arguments separated by commas: the effect is the same. +

+ +The command info scope (see section info scope) is +particularly useful for figuring out what data to collect. +

+ + +

while-stepping n +
Perform n single-step traces after the tracepoint, collecting +new data at each step. The while-stepping command is +followed by the list of what to collect while stepping (followed by +its own end command): +

+ +
 
> while-stepping 12
+  > collect $regs, myglobal
+  > end
+>
+

+ +You may abbreviate while-stepping as ws or +stepping. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.1.5 Listing Tracepoints

+ +

+ +

+ + + +
info tracepoints [num] +
Display information about the tracepoint num. If you don't specify +a tracepoint number, displays information about all the tracepoints +defined so far. For each tracepoint, the following information is +shown: +

+ +

    +
  • +its number +
  • +whether it is enabled or disabled +
  • +its address +
  • +its passcount as given by the passcount n command +
  • +its step count as given by the while-stepping n command +
  • +where in the source files is the tracepoint set +
  • +its action list as given by the actions command +
+

+ +
 
(gdb) info trace
+Num Enb Address    PassC StepC What
+1   y   0x002117c4 0     0     <gdb_asm>
+2   y   0x0020dc64 0     0     in g_test at g_test.c:1375
+3   y   0x0020b1f4 0     0     in get_data at ../foo.c:41
+(gdb)
+

+ +This command can be abbreviated info tp. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.1.6 Starting and Stopping Trace Experiments

+ +

+ +

+ + + +
tstart +
This command takes no arguments. It starts the trace experiment, and +begins collecting data. This has the side effect of discarding all +the data collected in the trace buffer during the previous trace +experiment. +

+ + + +

tstop +
This command takes no arguments. It ends the trace experiment, and +stops collecting data. +

+ +Note: a trace experiment and data collection may stop +automatically if any tracepoint's passcount is reached +(see section 10.1.3 Tracepoint Passcounts), or if the trace buffer becomes full. +

+ + + + +

tstatus +
This command displays the status of the current trace data +collection. +
+

+ +Here is an example of the commands we described so far: +

+ +
 
(gdb) trace gdb_c_test
+(gdb) actions
+Enter actions for tracepoint #1, one per line.
+> collect $regs,$locals,$args
+> while-stepping 11
+  > collect $regs
+  > end
+> end
+(gdb) tstart
+	[time passes ...]
+(gdb) tstop
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.2 Using the Collected Data

+ +

+ +After the tracepoint experiment ends, you use GDB commands +for examining the trace data. The basic idea is that each tracepoint +collects a trace snapshot every time it is hit and another +snapshot every time it single-steps. All these snapshots are +consecutively numbered from zero and go into a buffer, and you can +examine them later. The way you examine them is to focus on a +specific trace snapshot. When the remote stub is focused on a trace +snapshot, it will respond to all GDB requests for memory and +registers by reading from the buffer which belongs to that snapshot, +rather than from real memory or registers of the program being +debugged. This means that all GDB commands +(print, info registers, backtrace, etc.) will +behave as if we were currently debugging the program state as it was +when the tracepoint occurred. Any requests for data that are not in +the buffer will fail. +

+ +

+ + + +
10.2.1 tfind n  How to select a trace snapshot
10.2.2 tdump  How to display all data for a snapshot
10.2.3 save-tracepoints filename  How to save tracepoints for a future run
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.2.1 tfind n

+ +

+ + + + +The basic command for selecting a trace snapshot from the buffer is +tfind n, which finds trace snapshot number n, +counting from zero. If no argument n is given, the next +snapshot is selected. +

+ +Here are the various forms of using the tfind command. +

+ +

+
tfind start +
Find the first snapshot in the buffer. This is a synonym for +tfind 0 (since 0 is the number of the first snapshot). +

+ +

tfind none +
Stop debugging trace snapshots, resume live debugging. +

+ +

tfind end +
Same as `tfind none'. +

+ +

tfind +
No argument means find the next trace snapshot. +

+ +

tfind - +
Find the previous trace snapshot before the current one. This permits +retracing earlier steps. +

+ +

tfind tracepoint num +
Find the next snapshot associated with tracepoint num. Search +proceeds forward from the last examined trace snapshot. If no +argument num is given, it means find the next snapshot collected +for the same tracepoint as the current snapshot. +

+ +

tfind pc addr +
Find the next snapshot associated with the value addr of the +program counter. Search proceeds forward from the last examined trace +snapshot. If no argument addr is given, it means find the next +snapshot with the same value of PC as the current snapshot. +

+ +

tfind outside addr1, addr2 +
Find the next snapshot whose PC is outside the given range of +addresses. +

+ +

tfind range addr1, addr2 +
Find the next snapshot whose PC is between addr1 and +addr2. +

+ +

tfind line [file:]n +
Find the next snapshot associated with the source line n. If +the optional argument file is given, refer to line n in +that source file. Search proceeds forward from the last examined +trace snapshot. If no argument n is given, it means find the +next line other than the one currently being examined; thus saying +tfind line repeatedly can appear to have the same effect as +stepping from line to line in a live debugging session. +
+

+ +The default arguments for the tfind commands are specifically +designed to make it easy to scan through the trace buffer. For +instance, tfind with no argument selects the next trace +snapshot, and tfind - with no argument selects the previous +trace snapshot. So, by giving one tfind command, and then +simply hitting RET repeatedly you can examine all the trace +snapshots in order. Or, by saying tfind - and then hitting +RET repeatedly you can examine the snapshots in reverse order. +The tfind line command with no argument selects the snapshot +for the next source line executed. The tfind pc command with +no argument selects the next snapshot with the same program counter +(PC) as the current frame. The tfind tracepoint command with +no argument selects the next trace snapshot collected by the same +tracepoint as the current one. +

+ +In addition to letting you scan through the trace buffer manually, +these commands make it easy to construct GDB scripts that +scan through the trace buffer and print out whatever collected data +you are interested in. Thus, if we want to examine the PC, FP, and SP +registers from each trace frame in the buffer, we can say this: +

+ +
 
(gdb) tfind start
+(gdb) while ($trace_frame != -1)
+> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
+          $trace_frame, $pc, $sp, $fp
+> tfind
+> end
+
+Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
+Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
+Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
+Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
+Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
+Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
+Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
+Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
+Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
+Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
+Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
+

+ +Or, if we want to examine the variable X at each source line in +the buffer: +

+ +
 
(gdb) tfind start
+(gdb) while ($trace_frame != -1)
+> printf "Frame %d, X == %d\n", $trace_frame, X
+> tfind line
+> end
+
+Frame 0, X = 1
+Frame 7, X = 2
+Frame 13, X = 255
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.2.2 tdump

+ +

+ +This command takes no arguments. It prints all the data collected at +the current trace snapshot. +

+ +
 
(gdb) trace 444
+(gdb) actions
+Enter actions for tracepoint #2, one per line:
+> collect $regs, $locals, $args, gdb_long_test
+> end
+
+(gdb) tstart
+
+(gdb) tfind line 444
+#0  gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
+at gdb_test.c:444
+444        printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
+
+(gdb) tdump
+Data collected at tracepoint 2, trace frame 1:
+d0             0xc4aa0085       -995491707
+d1             0x18     24
+d2             0x80     128
+d3             0x33     51
+d4             0x71aea3d        119204413
+d5             0x22     34
+d6             0xe0     224
+d7             0x380035 3670069
+a0             0x19e24a 1696330
+a1             0x3000668        50333288
+a2             0x100    256
+a3             0x322000 3284992
+a4             0x3000698        50333336
+a5             0x1ad3cc 1758156
+fp             0x30bf3c 0x30bf3c
+sp             0x30bf34 0x30bf34
+ps             0x0      0
+pc             0x20b2c8 0x20b2c8
+fpcontrol      0x0      0
+fpstatus       0x0      0
+fpiaddr        0x0      0
+p = 0x20e5b4 "gdb-test"
+p1 = (void *) 0x11
+p2 = (void *) 0x22
+p3 = (void *) 0x33
+p4 = (void *) 0x44
+p5 = (void *) 0x55
+p6 = (void *) 0x66
+gdb_long_test = 17 '\021'
+
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.2.3 save-tracepoints filename

+ +

+ +This command saves all current tracepoint definitions together with +their actions and passcounts, into a file `filename' +suitable for use in a later debugging session. To read the saved +tracepoint definitions, use the source command (see section 20.3 Command Files). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

10.3 Convenience Variables for Tracepoints

+ +

+ +

+ +
(int) $trace_frame +
The current trace snapshot (a.k.a. frame) number, or -1 if no +snapshot is selected. +

+ + +

(int) $tracepoint +
The tracepoint for the current trace snapshot. +

+ + +

(int) $trace_line +
The line number for the current trace snapshot. +

+ + +

(char []) $trace_file +
The source file for the current trace snapshot. +

+ + +

(char []) $trace_func +
The name of the function containing $tracepoint. +
+

+ +Note: $trace_file is not suitable for use in printf, +use output instead. +

+ +Here's a simple example of using these convenience variables for +stepping through all the trace snapshots and printing some of their +data. +

+ +
 
(gdb) tfind start
+
+(gdb) while $trace_frame != -1
+> output $trace_file
+> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
+> tfind
+> end
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_12.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_12.html new file mode 100644 index 0000000..525f0f1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_12.html @@ -0,0 +1,540 @@ + + + + + +Debugging with GDB: Overlays + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

11. Debugging Programs That Use Overlays

+ +

+ +If your program is too large to fit completely in your target system's +memory, you can sometimes use overlays to work around this +problem. GDB provides some support for debugging programs that +use overlays. +

+ +

+ + + + +
11.1 How Overlays Work  A general explanation of overlays.
11.2 Overlay Commands  Managing overlays in GDB.
11.3 Automatic Overlay Debugging  GDB can find out which overlays are + mapped by asking the inferior.
11.4 Overlay Sample Program  A sample program using overlays.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

11.1 How Overlays Work

+ +

+ +Suppose you have a computer whose instruction address space is only 64 +kilobytes long, but which has much more memory which can be accessed by +other means: special instructions, segment registers, or memory +management hardware, for example. Suppose further that you want to +adapt a program which is larger than 64 kilobytes to run on this system. +

+ +One solution is to identify modules of your program which are relatively +independent, and need not call each other directly; call these modules +overlays. Separate the overlays from the main program, and place +their machine code in the larger memory. Place your main program in +instruction memory, but leave at least enough space there to hold the +largest overlay as well. +

+ +Now, to call a function located in an overlay, you must first copy that +overlay's machine code from the large memory into the space set aside +for it in the instruction memory, and then jump to its entry point +there. +

+ +
 
    Data             Instruction            Larger
+Address Space       Address Space        Address Space
++-----------+       +-----------+        +-----------+
+|           |       |           |        |           |
++-----------+       +-----------+        +-----------+<-- overlay 1
+| program   |       |   main    |   .----| overlay 1 | load address
+| variables |       |  program  |   |    +-----------+
+| and heap  |       |           |   |    |           |
++-----------+       |           |   |    +-----------+<-- overlay 2
+|           |       +-----------+   |    |           | load address
++-----------+       |           |   |  .-| overlay 2 |
+                    |           |   |  | |           |
+         mapped --->+-----------+   |  | +-----------+
+         address    |           |   |  | |           |
+                    |  overlay  | <-'  | |           |
+                    |   area    |  <---' +-----------+<-- overlay 3
+                    |           | <---.  |           | load address
+                    +-----------+     `--| overlay 3 |
+                    |           |        |           |
+                    +-----------+        |           |
+                                         +-----------+
+                                         |           |
+                                         +-----------+
+
+
+                    A code overlay
+

+ +The diagram (see A code overlay) shows a system with separate data +and instruction address spaces. To map an overlay, the program copies +its code from the larger address space to the instruction address space. +Since the overlays shown here all use the same mapped address, only one +may be mapped at a time. For a system with a single address space for +data and instructions, the diagram would be similar, except that the +program variables and heap would share an address space with the main +program and the overlay area. +

+ +An overlay loaded into instruction memory and ready for use is called a +mapped overlay; its mapped address is its address in the +instruction memory. An overlay not present (or only partially present) +in instruction memory is called unmapped; its load address +is its address in the larger memory. The mapped address is also called +the virtual memory address, or VMA; the load address is also +called the load memory address, or LMA. +

+ +Unfortunately, overlays are not a completely transparent way to adapt a +program to limited instruction memory. They introduce a new set of +global constraints you must keep in mind as you design your program: +

+ +

    + +
  • +Before calling or returning to a function in an overlay, your program +must make sure that overlay is actually mapped. Otherwise, the call or +return will transfer control to the right address, but in the wrong +overlay, and your program will probably crash. +

    + +

  • +If the process of mapping an overlay is expensive on your system, you +will need to choose your overlays carefully to minimize their effect on +your program's performance. +

    + +

  • +The executable file you load onto your system must contain each +overlay's instructions, appearing at the overlay's load address, not its +mapped address. However, each overlay's instructions must be relocated +and its symbols defined as if the overlay were at its mapped address. +You can use GNU linker scripts to specify different load and relocation +addresses for pieces of your program; see section `Overlay Description' in Using ld: the GNU linker. +

    + +

  • +The procedure for loading executable files onto your system must be able +to load their contents into the larger address space as well as the +instruction and data spaces. +

    + +

+

+ +The overlay system described above is rather simple, and could be +improved in many ways: +

+ +

    + +
  • +If your system has suitable bank switch registers or memory management +hardware, you could use those facilities to make an overlay's load area +contents simply appear at their mapped address in instruction space. +This would probably be faster than copying the overlay to its mapped +area in the usual way. +

    + +

  • +If your overlays are small enough, you could set aside more than one +overlay area, and have more than one overlay mapped at a time. +

    + +

  • +You can use overlays to manage data, as well as instructions. In +general, data overlays are even less transparent to your design than +code overlays: whereas code overlays only require care when you call or +return to functions, data overlays require care every time you access +the data. Also, if you change the contents of a data overlay, you +must copy its contents back out to its load address before you can copy a +different data overlay into the same mapped area. +

    + +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

11.2 Overlay Commands

+ +

+ +To use GDB's overlay support, each overlay in your program must +correspond to a separate section of the executable file. The section's +virtual memory address and load memory address must be the overlay's +mapped and load addresses. Identifying overlays with sections allows +GDB to determine the appropriate address of a function or +variable, depending on whether the overlay is mapped or not. +

+ +GDB's overlay commands all start with the word overlay; +you can abbreviate this as ov or ovly. The commands are: +

+ +

+
overlay off +
+Disable GDB's overlay support. When overlay support is +disabled, GDB assumes that all functions and variables are +always present at their mapped addresses. By default, GDB's +overlay support is disabled. +

+ +

overlay manual +
+Enable manual overlay debugging. In this mode, GDB +relies on you to tell it which overlays are mapped, and which are not, +using the overlay map-overlay and overlay unmap-overlay +commands described below. +

+ +

overlay map-overlay overlay +
overlay map overlay +
+Tell GDB that overlay is now mapped; overlay must +be the name of the object file section containing the overlay. When an +overlay is mapped, GDB assumes it can find the overlay's +functions and variables at their mapped addresses. GDB assumes +that any other overlays whose mapped ranges overlap that of +overlay are now unmapped. +

+ +

overlay unmap-overlay overlay +
overlay unmap overlay +
+Tell GDB that overlay is no longer mapped; overlay +must be the name of the object file section containing the overlay. +When an overlay is unmapped, GDB assumes it can find the +overlay's functions and variables at their load addresses. +

+ +

overlay auto +
Enable automatic overlay debugging. In this mode, GDB +consults a data structure the overlay manager maintains in the inferior +to see which overlays are mapped. For details, see 11.3 Automatic Overlay Debugging. +

+ +

overlay load-target +
overlay load +
+Re-read the overlay table from the inferior. Normally, GDB +re-reads the table GDB automatically each time the inferior +stops, so this command should only be necessary if you have changed the +overlay mapping yourself using GDB. This command is only +useful when using automatic overlay debugging. +

+ +

overlay list-overlays +
overlay list +
+Display a list of the overlays currently mapped, along with their mapped +addresses, load addresses, and sizes. +

+ +

+

+ +Normally, when GDB prints a code address, it includes the name +of the function the address falls in: +

+ +
 
(gdb) print main
+$3 = {int ()} 0x11a0 <main>
+
When overlay debugging is enabled, GDB recognizes code in +unmapped overlays, and prints the names of unmapped functions with +asterisks around them. For example, if foo is a function in an +unmapped overlay, GDB prints it this way: +

+ +
 
(gdb) overlay list
+No sections are mapped.
+(gdb) print foo
+$5 = {int (int)} 0x100000 <*foo*>
+
When foo's overlay is mapped, GDB prints the function's +name normally: +

+ +
 
(gdb) overlay list
+Section .ov.foo.text, loaded at 0x100000 - 0x100034,
+        mapped at 0x1016 - 0x104a
+(gdb) print foo
+$6 = {int (int)} 0x1016 <foo>
+

+ +When overlay debugging is enabled, GDB can find the correct +address for functions and variables in an overlay, whether or not the +overlay is mapped. This allows most GDB commands, like +break and disassemble, to work normally, even on unmapped +code. However, GDB's breakpoint support has some limitations: +

+ +

    +
  • + + +You can set breakpoints in functions in unmapped overlays, as long as +GDB can write to the overlay at its load address. +
  • +GDB can not set hardware or simulator-based breakpoints in +unmapped overlays. However, if you set a breakpoint at the end of your +overlay manager (and tell GDB which overlays are now mapped, if +you are using manual overlay management), GDB will re-set its +breakpoints properly. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

11.3 Automatic Overlay Debugging

+ +

+ +GDB can automatically track which overlays are mapped and which +are not, given some simple co-operation from the overlay manager in the +inferior. If you enable automatic overlay debugging with the +overlay auto command (see section 11.2 Overlay Commands), GDB +looks in the inferior's memory for certain variables describing the +current state of the overlays. +

+ +Here are the variables your overlay manager must define to support +GDB's automatic overlay debugging: +

+ +

+ +
_ovly_table: +
This variable must be an array of the following structures: +

+ +
 
struct
+{
+  /* The overlay's mapped address.  */
+  unsigned long vma;
+
+  /* The size of the overlay, in bytes.  */
+  unsigned long size;
+
+  /* The overlay's load address.  */
+  unsigned long lma;
+
+  /* Non-zero if the overlay is currently mapped;
+     zero otherwise.  */
+  unsigned long mapped;
+}
+

+ +

_novlys: +
This variable must be a four-byte signed integer, holding the total +number of elements in _ovly_table. +

+ +

+

+ +To decide whether a particular overlay is mapped or not, GDB +looks for an entry in _ovly_table whose vma and +lma members equal the VMA and LMA of the overlay's section in the +executable file. When GDB finds a matching entry, it consults +the entry's mapped member to determine whether the overlay is +currently mapped. +

+ +In addition, your overlay manager may define a function called +_ovly_debug_event. If this function is defined, GDB +will silently set a breakpoint there. If the overlay manager then +calls this function whenever it has changed the overlay table, this +will enable GDB to accurately keep track of which overlays +are in program memory, and update any breakpoints that may be set +in overlays. This will allow breakpoints to work even if the +overlays are kept in ROM or other non-writable memory while they +are not being executed. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

11.4 Overlay Sample Program

+ +

+ +When linking a program which uses overlays, you must place the overlays +at their load addresses, while relocating them to run at their mapped +addresses. To do this, you must write a linker script (see section `Overlay Description' in Using ld: the GNU linker). Unfortunately, +since linker scripts are specific to a particular host system, target +architecture, and target memory layout, this manual cannot provide +portable sample code demonstrating GDB's overlay support. +

+ +However, the GDB source distribution does contain an overlaid +program, with linker scripts for a few systems, as part of its test +suite. The program consists of the following files from +`gdb/testsuite/gdb.base': +

+ +

+
`overlays.c' +
The main program file. +
`ovlymgr.c' +
A simple overlay manager, used by `overlays.c'. +
`foo.c' +
`bar.c' +
`baz.c' +
`grbx.c' +
Overlay modules, loaded and used by `overlays.c'. +
`d10v.ld' +
`m32r.ld' +
Linker scripts for linking the test program on the d10v-elf +and m32r-elf targets. +
+

+ +You can build the test program using the d10v-elf GCC +cross-compiler like this: +

+ +
 
$ d10v-elf-gcc -g -c overlays.c
+$ d10v-elf-gcc -g -c ovlymgr.c
+$ d10v-elf-gcc -g -c foo.c
+$ d10v-elf-gcc -g -c bar.c
+$ d10v-elf-gcc -g -c baz.c
+$ d10v-elf-gcc -g -c grbx.c
+$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
+                  baz.o grbx.o -Wl,-Td10v.ld -o overlays
+

+ +The build process is identical for any other architecture, except that +you must substitute the appropriate compiler and linker script for the +target system for d10v-elf-gcc and d10v.ld. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_13.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_13.html new file mode 100644 index 0000000..e1772a3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_13.html @@ -0,0 +1,3063 @@ + + + + + +Debugging with GDB: Languages + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12. Using GDB with Different Languages

+ +

+ +Although programming languages generally have common aspects, they are +rarely expressed in the same manner. For instance, in ANSI C, +dereferencing a pointer p is accomplished by *p, but in +Modula-2, it is accomplished by p^. Values can also be +represented (and displayed) differently. Hex numbers in C appear as +`0x1ae', while in Modula-2 they appear as `1AEH'. +

+ + +Language-specific information is built into GDB for some languages, +allowing you to express operations like the above in your program's +native language, and allowing GDB to output values in a manner +consistent with the syntax of your program's native language. The +language you use to build expressions is called the working +language. +

+ +

+ + + + + +
12.1 Switching Between Source Languages  Switching between source languages
12.2 Displaying the Language  Displaying the language
12.3 Type and Range Checking  Type and range checks
12.4 Supported Languages  Supported languages
12.5 Unsupported Languages  Unsupported languages
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.1 Switching Between Source Languages

+ +

+ +There are two ways to control the working language--either have GDB +set it automatically, or select it manually yourself. You can use the +set language command for either purpose. On startup, GDB +defaults to setting the language automatically. The working language is +used to determine how expressions you type are interpreted, how values +are printed, etc. +

+ +In addition to the working language, every source file that +GDB knows about has its own working language. For some object +file formats, the compiler might indicate which language a particular +source file is in. However, most of the time GDB infers the +language from the name of the file. The language of a source file +controls whether C++ names are demangled--this way backtrace can +show each frame appropriately for its own language. There is no way to +set the language of a source file from within GDB, but you can +set the language associated with a filename extension. See section Displaying the Language. +

+ +This is most commonly a problem when you use a program, such +as cfront or f2c, that generates C but is written in +another language. In that case, make the +program use #line directives in its C output; that way +GDB will know the correct language of the source code of the original +program, and will display that source code, not the generated C code. +

+ +

+ + + +
12.1.1 List of Filename Extensions and Languages  Filename extensions and languages.
12.1.2 Setting the Working Language  Setting the working language manually
12.1.3 Having GDB Infer the Source Language  Having GDB infer the source language
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.1.1 List of Filename Extensions and Languages

+ +

+ +If a source file name ends in one of the following extensions, then +GDB infers that its language is the one indicated. +

+ +

+
`.ada' +
`.ads' +
`.adb' +
`.a' +
Ada source file. +

+ +

`.c' +
C source file +

+ +

`.C' +
`.cc' +
`.cp' +
`.cpp' +
`.cxx' +
`.c++' +
C++ source file +

+ +

`.m' +
Objective-C source file +

+ +

`.f' +
`.F' +
Fortran source file +

+ +

`.mod' +
Modula-2 source file +

+ +

`.s' +
`.S' +
Assembler source file. This actually behaves almost like C, but +GDB does not skip over function prologues when stepping. +
+

+ +In addition, you may set the language associated with a filename +extension. See section Displaying the Language. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.1.2 Setting the Working Language

+ +

+ +If you allow GDB to set the language automatically, +expressions are interpreted the same way in your debugging session and +your program. +

+ + +If you wish, you may set the language manually. To do this, issue the +command `set language lang', where lang is the name of +a language, such as +c or modula-2. +For a list of the supported languages, type `set language'. +

+ +Setting the language manually prevents GDB from updating the working +language automatically. This can lead to confusion if you try +to debug a program when the working language is not the same as the +source language, when an expression is acceptable to both +languages--but means different things. For instance, if the current +source file were written in C, and GDB was parsing Modula-2, a +command such as: +

+ +
 
print a = b + c
+

+ +might not have the effect you intended. In C, this means to add +b and c and place the result in a. The result +printed would be the value of a. In Modula-2, this means to compare +a to the result of b+c, yielding a BOOLEAN value. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.1.3 Having GDB Infer the Source Language

+ +

+ +To have GDB set the working language automatically, use +`set language local' or `set language auto'. GDB +then infers the working language. That is, when your program stops in a +frame (usually by encountering a breakpoint), GDB sets the +working language to the language recorded for the function in that +frame. If the language for a frame is unknown (that is, if the function +or block corresponding to the frame was defined in a source file that +does not have a recognized extension), the current working language is +not changed, and GDB issues a warning. +

+ +This may not seem necessary for most programs, which are written +entirely in one source language. However, program modules and libraries +written in one source language can be used by a main program written in +a different source language. Using `set language auto' in this +case frees you from having to set the working language manually. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.2 Displaying the Language

+ +

+ +The following commands help you find out which language is the +working language, and also what language source files were written in. +

+ +

+
show language +
+Display the current working language. This is the +language you can use with commands such as print to +build and compute expressions that may involve variables in your program. +

+ +

info frame +
+Display the source language for this frame. This language becomes the +working language if you use an identifier from this frame. +See section Information about a Frame, to identify the other +information listed here. +

+ +

info source +
+Display the source language of this source file. +See section Examining the Symbol Table, to identify the other +information listed here. +
+

+ +In unusual circumstances, you may have source files with extensions +not in the standard list. You can then set the extension associated +with a language explicitly: +

+ +

+
set extension-language ext language +
+Tell GDB that source files with extension ext are to be +assumed as written in the source language language. +

+ +

info extensions +
+List all the filename extensions and the associated languages. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.3 Type and Range Checking

+ +

+ +

+Warning: In this release, the GDB commands for type and range +checking are included, but they do not yet have any effect. This +section documents the intended facilities. +
+

+ +Some languages are designed to guard you against making seemingly common +errors through a series of compile- and run-time checks. These include +checking the type of arguments to functions and operators, and making +sure mathematical overflows are caught at run time. Checks such as +these help to ensure a program's correctness once it has been compiled +by eliminating type mismatches, and providing active checks for range +errors when your program is running. +

+ +GDB can check for conditions like the above if you wish. +Although GDB does not check the statements in your program, +it can check expressions entered directly into GDB for +evaluation via the print command, for example. As with the +working language, GDB can also decide whether or not to check +automatically based on your program's source language. +See section Supported Languages, for the default +settings of supported languages. +

+ +

+ + +
12.3.1 An Overview of Type Checking  An overview of type checking
12.3.2 An Overview of Range Checking  An overview of range checking
+

+ + + + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.3.1 An Overview of Type Checking

+ +

+ +Some languages, such as Modula-2, are strongly typed, meaning that the +arguments to operators and functions have to be of the correct type, +otherwise an error occurs. These checks prevent type mismatch +errors from ever causing any run-time problems. For example, +

+ +
 
1 + 2 => 3
+but
+error--> 1 + 2.3
+

+ +The second example fails because the CARDINAL 1 is not +type-compatible with the REAL 2.3. +

+ +For the expressions you use in GDB commands, you can tell the +GDB type checker to skip checking; +to treat any mismatches as errors and abandon the expression; +or to only issue warnings when type mismatches occur, +but evaluate the expression anyway. When you choose the last of +these, GDB evaluates expressions like the second example above, but +also issues a warning. +

+ +Even if you turn type checking off, there may be other reasons +related to type that prevent GDB from evaluating an expression. +For instance, GDB does not know how to add an int and +a struct foo. These particular type errors have nothing to do +with the language in use, and usually arise from expressions, such as +the one described above, which make little sense to evaluate anyway. +

+ +Each language defines to what degree it is strict about type. For +instance, both Modula-2 and C require the arguments to arithmetical +operators to be numbers. In C, enumerated types and pointers can be +represented as numbers, so that they are valid arguments to mathematical +operators. See section Supported Languages, for further +details on specific languages. +

+ +GDB provides some additional commands for controlling the type checker: +

+ + + +

+
set check type auto +
Set type checking on or off based on the current working language. +See section Supported Languages, for the default settings for +each language. +

+ +

set check type on +
set check type off +
Set type checking on or off, overriding the default setting for the +current working language. Issue a warning if the setting does not +match the language default. If any type mismatches occur in +evaluating an expression while type checking is on, GDB prints a +message and aborts evaluation of the expression. +

+ +

set check type warn +
Cause the type checker to issue warnings, but to always attempt to +evaluate the expression. Evaluating the expression may still +be impossible for other reasons. For example, GDB cannot add +numbers and structures. +

+ +

show type +
Show the current setting of the type checker, and whether or not GDB +is setting it automatically. +
+

+ + + + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.3.2 An Overview of Range Checking

+ +

+ +In some languages (such as Modula-2), it is an error to exceed the +bounds of a type; this is enforced with run-time checks. Such range +checking is meant to ensure program correctness by making sure +computations do not overflow, or indices on an array element access do +not exceed the bounds of the array. +

+ +For expressions you use in GDB commands, you can tell +GDB to treat range errors in one of three ways: ignore them, +always treat them as errors and abandon the expression, or issue +warnings but evaluate the expression anyway. +

+ +A range error can result from numerical overflow, from exceeding an +array index bound, or when you type a constant that is not a member +of any type. Some languages, however, do not treat overflows as an +error. In many implementations of C, mathematical overflow causes the +result to "wrap around" to lower values--for example, if m is +the largest integer value, and s is the smallest, then +

+ +
 
m + 1 => s
+

+ +This, too, is specific to individual languages, and in some cases +specific to individual compilers or machines. See section Supported Languages, for further details on specific languages. +

+ +GDB provides some additional commands for controlling the range checker: +

+ + + +

+
set check range auto +
Set range checking on or off based on the current working language. +See section Supported Languages, for the default settings for +each language. +

+ +

set check range on +
set check range off +
Set range checking on or off, overriding the default setting for the +current working language. A warning is issued if the setting does not +match the language default. If a range error occurs and range checking is on, +then a message is printed and evaluation of the expression is aborted. +

+ +

set check range warn +
Output messages when the GDB range checker detects a range error, +but attempt to evaluate the expression anyway. Evaluating the +expression may still be impossible for other reasons, such as accessing +memory that the process does not own (a typical example from many Unix +systems). +

+ +

show range +
Show the current setting of the range checker, and whether or not it is +being set automatically by GDB. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4 Supported Languages

+ +

+ +GDB supports C, C++, Objective-C, Fortran, Java, Pascal, +assembly, Modula-2, and Ada. +Some GDB features may be used in expressions regardless of the +language you use: the GDB @ and :: operators, +and the `{type}addr' construct (see section Expressions) can be used with the constructs of any supported +language. +

+ +The following sections detail to what degree each source language is +supported by GDB. These sections are not meant to be language +tutorials or references, but serve only as a reference guide to what the +GDB expression parser accepts, and what input and output +formats should look like for different languages. There are many good +books written on each of these languages; please look to these for a +language reference or tutorial. +

+ +

+ + + + + + +
12.4.1 C and C++  
12.4.2 Objective-C  
12.4.3 Fortran  
12.4.4 Pascal  
12.4.5 Modula-2  
12.4.6 Ada  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1 C and C++

+ +

+ + + +

+ +Since C and C++ are so closely related, many features of GDB apply +to both languages. Whenever this is the case, we discuss those languages +together. +

+ + + + +The C++ debugging facilities are jointly implemented by the C++ +compiler and GDB. Therefore, to debug your C++ code +effectively, you must compile your C++ programs with a supported +C++ compiler, such as GNU g++, or the HP ANSI C++ +compiler (aCC). +

+ +For best results when using GNU C++, use the DWARF 2 debugging +format; if it doesn't work on your system, try the stabs+ debugging +format. You can select those formats explicitly with the g++ +command-line options `-gdwarf-2' and `-gstabs+'. +See section `Options for Debugging Your Program or GCC' in Using the GNU Compiler Collection (GCC). +

+ +

+ + + + + + + + +
12.4.1.1 C and C++ Operators  C and C++ operators
12.4.1.2 C and C++ Constants  C and C++ constants
12.4.1.3 C++ Expressions  C++ expressions
12.4.1.4 C and C++ Defaults  Default settings for C and C++
12.4.1.5 C and C++ Type and Range Checks  C and C++ type and range checks
12.4.1.6 GDB and C  
12.4.1.7 GDB Features for C++  GDB features for C++
12.4.1.8 Decimal Floating Point format  Numbers in Decimal Floating Point format
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.1 C and C++ Operators

+ +

+ + +

+ +Operators must be defined on values of specific types. For instance, ++ is defined on numbers, but not on structures. Operators are +often defined on groups of types. +

+ +For the purposes of C and C++, the following definitions hold: +

+ +

    + +
  • +Integral types include int with any of its storage-class +specifiers; char; enum; and, for C++, bool. +

    + +

  • +Floating-point types include float, double, and +long double (if supported by the target platform). +

    + +

  • +Pointer types include all types defined as (type *). +

    + +

  • +Scalar types include all of the above. +

    + +

+

+ +The following operators are supported. They are listed here +in order of increasing precedence: +

+ +

+
, +
The comma or sequencing operator. Expressions in a comma-separated list +are evaluated from left to right, with the result of the entire +expression being the last expression evaluated. +

+ +

= +
Assignment. The value of an assignment expression is the value +assigned. Defined on scalar types. +

+ +

op= +
Used in an expression of the form a op= b, +and translated to a = a op b. +op= and = have the same precedence. +op is any one of the operators |, ^, &, +<<, >>, +, -, *, /, %. +

+ +

?: +
The ternary operator. a ? b : c can be thought +of as: if a then b else c. a should be of an +integral type. +

+ +

|| +
Logical OR. Defined on integral types. +

+ +

&& +
Logical AND. Defined on integral types. +

+ +

| +
Bitwise OR. Defined on integral types. +

+ +

^ +
Bitwise exclusive-OR. Defined on integral types. +

+ +

& +
Bitwise AND. Defined on integral types. +

+ +

==, != +
Equality and inequality. Defined on scalar types. The value of these +expressions is 0 for false and non-zero for true. +

+ +

<, >, <=, >= +
Less than, greater than, less than or equal, greater than or equal. +Defined on scalar types. The value of these expressions is 0 for false +and non-zero for true. +

+ +

<<, >> +
left shift, and right shift. Defined on integral types. +

+ +

@ +
The GDB "artificial array" operator (see section Expressions). +

+ +

+, - +
Addition and subtraction. Defined on integral types, floating-point types and +pointer types. +

+ +

*, /, % +
Multiplication, division, and modulus. Multiplication and division are +defined on integral and floating-point types. Modulus is defined on +integral types. +

+ +

++, -- +
Increment and decrement. When appearing before a variable, the +operation is performed before the variable is used in an expression; +when appearing after it, the variable's value is used before the +operation takes place. +

+ +

* +
Pointer dereferencing. Defined on pointer types. Same precedence as +++. +

+ +

& +
Address operator. Defined on variables. Same precedence as ++. +

+ +For debugging C++, GDB implements a use of `&' beyond what is +allowed in the C++ language itself: you can use `&(&ref)' +to examine the address +where a C++ reference variable (declared with `&ref') is +stored. +

+ +

- +
Negative. Defined on integral and floating-point types. Same +precedence as ++. +

+ +

! +
Logical negation. Defined on integral types. Same precedence as +++. +

+ +

~ +
Bitwise complement operator. Defined on integral types. Same precedence as +++. +

+ +

., -> +
Structure member, and pointer-to-structure member. For convenience, +GDB regards the two as equivalent, choosing whether to dereference a +pointer based on the stored type information. +Defined on struct and union data. +

+ +

.*, ->* +
Dereferences of pointers to members. +

+ +

[] +
Array indexing. a[i] is defined as +*(a+i). Same precedence as ->. +

+ +

() +
Function parameter list. Same precedence as ->. +

+ +

:: +
C++ scope resolution operator. Defined on struct, union, +and class types. +

+ +

:: +
Doubled colons also represent the GDB scope operator +(see section Expressions). Same precedence as ::, +above. +
+

+ +If an operator is redefined in the user code, GDB usually +attempts to invoke the redefined version instead of using the operator's +predefined meaning. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.2 C and C++ Constants

+ +

+ + +

+ +GDB allows you to express the constants of C and C++ in the +following ways: +

+ +

    +
  • +Integer constants are a sequence of digits. Octal constants are +specified by a leading `0' (i.e. zero), and hexadecimal constants +by a leading `0x' or `0X'. Constants may also end with a letter +`l', specifying that the constant should be treated as a +long value. +

    + +

  • +Floating point constants are a sequence of digits, followed by a decimal +point, followed by a sequence of digits, and optionally followed by an +exponent. An exponent is of the form: +`e[[+]|-]nnn', where nnn is another +sequence of digits. The `+' is optional for positive exponents. +A floating-point constant may also end with a letter `f' or +`F', specifying that the constant should be treated as being of +the float (as opposed to the default double) type; or with +a letter `l' or `L', which specifies a long double +constant. +

    + +

  • +Enumerated constants consist of enumerated identifiers, or their +integral equivalents. +

    + +

  • +Character constants are a single character surrounded by single quotes +('), or a number--the ordinal value of the corresponding character +(usually its ASCII value). Within quotes, the single character may +be represented by a letter or by escape sequences, which are of +the form `\nnn', where nnn is the octal representation +of the character's ordinal value; or of the form `\x', where +`x' is a predefined special character--for example, +`\n' for newline. +

    + +

  • +String constants are a sequence of character constants surrounded by +double quotes ("). Any valid character constant (as described +above) may appear. Double quotes within the string must be preceded by +a backslash, so for instance `"a\"b'c"' is a string of five +characters. +

    + +

  • +Pointer constants are an integral value. You can also write pointers +to constants using the C operator `&'. +

    + +

  • +Array constants are comma-separated lists surrounded by braces `{' +and `}'; for example, `{1,2,3}' is a three-element array of +integers, `{{1,2}, {3,4}, {5,6}}' is a three-by-two array, +and `{&"hi", &"there", &"fred"}' is a three-element array of pointers. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.3 C++ Expressions

+ +

+ + +GDB expression handling can interpret most C++ expressions. +

+ + + + + +

+Warning: GDB can only debug C++ code if you use the +proper compiler and the proper debug format. Currently, GDB +works best when debugging C++ code that is compiled with +GCC 2.95.3 or with GCC 3.1 or newer, using the options +`-gdwarf-2' or `-gstabs+'. DWARF 2 is preferred over +stabs+. Most configurations of GCC emit either DWARF 2 or +stabs+ as their default debug format, so you usually don't need to +specify a debug format explicitly. Other compilers and/or debug formats +are likely to work badly or not at all when using GDB to debug +C++ code. +
+

+ +

    + + +
  1. +Member function calls are allowed; you can use expressions like +

    + +
     
    count = aml->GetOriginal(x, y)
    +

    + + + +

  2. +While a member function is active (in the selected stack frame), your +expressions have the same namespace available as the member function; +that is, GDB allows implicit references to the class instance +pointer this following the same rules as C++. +

    + + + + +

  3. +You can call overloaded functions; GDB resolves the function +call to the right definition, with some restrictions. GDB does not +perform overload resolution involving user-defined type conversions, +calls to constructors, or instantiations of templates that do not exist +in the program. It also cannot handle ellipsis argument lists or +default arguments. +

    + +It does perform integral conversions and promotions, floating-point +promotions, arithmetic conversions, pointer conversions, conversions of +class objects to base classes, and standard conversions such as those of +functions or arrays to pointers; it requires an exact match on the +number of function arguments. +

    + +Overload resolution is always performed, unless you have specified +set overload-resolution off. See section GDB Features for C++. +

    + +You must specify set overload-resolution off in order to use an +explicit function signature to call an overloaded function, as in +
     
    p 'foo(char,int)'('x', 13)
    +

    + +The GDB command-completion facility can simplify this; +see Command Completion. +

    + + +

  4. +GDB understands variables declared as C++ references; you can use +them in expressions just as you do in C++ source--they are automatically +dereferenced. +

    + +In the parameter list shown when GDB displays a frame, the values of +reference variables are not displayed (unlike other variables); this +avoids clutter, since references are often used for large structures. +The address of a reference variable is always shown, unless +you have specified `set print address off'. +

    + +

  5. +GDB supports the C++ name resolution operator ::---your +expressions can use it just as expressions in your program do. Since +one scope may be defined in another, you can use :: repeatedly if +necessary, for example in an expression like +`scope1::scope2::name'. GDB also allows +resolving name scope by reference to source files, in both C and C++ +debugging (see section Program Variables). +
+

+ +In addition, when used with HP's C++ compiler, GDB supports +calling virtual functions correctly, printing out virtual bases of +objects, calling functions in a base subobject, casting objects, and +invoking user-defined operators. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.4 C and C++ Defaults

+ +

+ + +

+ +If you allow GDB to set type and range checking automatically, they +both default to off whenever the working language changes to +C or C++. This happens regardless of whether you or GDB +selects the working language. +

+ +If you allow GDB to set the language automatically, it +recognizes source files whose names end with `.c', `.C', or +`.cc', etc, and when GDB enters code compiled from one of +these files, it sets the working language to C or C++. +See section Having GDB Infer the Source Language, +for further details. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.5 C and C++ Type and Range Checks

+ +

+ + +

+ +By default, when GDB parses C or C++ expressions, type checking +is not used. However, if you turn type checking on, GDB +considers two variables type equivalent if: +

+ +

    +
  • +The two variables are structured and have the same structure, union, or +enumerated tag. +

    + +

  • +The two variables have the same type name, or types that have been +declared equivalent through typedef. +

    + +

+

+ +Range checking, if turned on, is done on mathematical operations. Array +indices are not checked, since they are often used to index a pointer +that is not itself an array. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.6 GDB and C

+ +

+ +The set print union and show print union commands apply to +the union type. When set to `on', any union that is +inside a struct or class is also printed. Otherwise, it +appears as `{...}'. +

+ +The @ operator aids in the debugging of dynamic arrays, formed +with pointers and a memory allocation function. See section Expressions. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.7 GDB Features for C++

+ +

+ + +

+ +Some GDB commands are particularly useful with C++, and some are +designed specifically for use with C++. Here is a summary: +

+ +

+ +
breakpoint menus +
When you want a breakpoint in a function whose name is overloaded, +GDB breakpoint menus help you specify which function definition +you want. See section Breakpoint Menus. +

+ + +

rbreak regex +
Setting breakpoints using regular expressions is helpful for setting +breakpoints on overloaded functions that are not members of any special +classes. +See section Setting Breakpoints. +

+ + +

catch throw +
catch catch +
Debug C++ exception handling using these commands. See section Setting Catchpoints. +

+ + +

ptype typename +
Print inheritance relationships as well as other information for type +typename. +See section Examining the Symbol Table. +

+ + +

set print demangle +
show print demangle +
set print asm-demangle +
show print asm-demangle +
Control whether C++ symbols display in their source form, both when +displaying code as C++ source and when displaying disassemblies. +See section Print Settings. +

+ +

set print object +
show print object +
Choose whether to print derived (actual) or declared types of objects. +See section Print Settings. +

+ +

set print vtbl +
show print vtbl +
Control the format for printing virtual function tables. +See section Print Settings. +(The vtbl commands do not work on programs compiled with the HP +ANSI C++ compiler (aCC).) +

+ + + +

set overload-resolution on +
Enable overload resolution for C++ expression evaluation. The default +is on. For overloaded functions, GDB evaluates the arguments +and searches for a function whose signature matches the argument types, +using the standard C++ conversion rules (see C++ Expressions, for details). +If it cannot find a match, it emits a message. +

+ +

set overload-resolution off +
Disable overload resolution for C++ expression evaluation. For +overloaded functions that are not class member functions, GDB +chooses the first function of the specified name that it finds in the +symbol table, whether or not its arguments are of the correct type. For +overloaded functions that are class member functions, GDB +searches for a function whose signature exactly matches the +argument types. +

+ + +

show overload-resolution +
Show the current setting of overload resolution. +

+ +

Overloaded symbol names +
You can specify a particular definition of an overloaded symbol, using +the same notation that is used to declare such symbols in C++: type +symbol(types) rather than just symbol. You can +also use the GDB command-line word completion facilities to list the +available choices, or to finish the type list for you. +See section Command Completion, for details on how to do this. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.1.8 Decimal Floating Point format

+ +

+ +GDB can examine, set and perform computations with numbers in +decimal floating point format, which in the C language correspond to the +_Decimal32, _Decimal64 and _Decimal128 types as +specified by the extension to support decimal floating-point arithmetic. +

+ +There are two encodings in use, depending on the architecture: BID (Binary +Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for +PowerPC. GDB will use the appropriate encoding for the configured +target. +

+ +Because of a limitation in `libdecnumber', the library used by GDB +to manipulate decimal floating point numbers, it is not possible to convert +(using a cast, for example) integers wider than 32-bit to decimal float. +

+ +In addition, in order to imitate GDB's behaviour with binary floating +point computations, error checking in decimal float operations ignores +underflow, overflow and divide by zero exceptions. +

+ +In the PowerPC architecture, GDB provides a set of pseudo-registers +to inspect _Decimal128 values stored in floating point registers. See +PowerPC for more details. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.2 Objective-C

+ +

+ + +This section provides information about some commands and command +options that are useful for debugging Objective-C code. See also +info classes, and info selectors, for a +few more commands specific to Objective-C support. +

+ +

+ + +
12.4.2.1 Method Names in Commands  
12.4.2.2 The Print Command With Objective-C  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.2.1 Method Names in Commands

+ +

+ +The following commands have been extended to accept Objective-C method +names as line specifications: +

+ + + + + + +

    +
  • clear +
  • break +
  • info line +
  • jump +
  • list +
+

+ +A fully qualified Objective-C method name is specified as +

+ +
 
-[Class methodName]
+

+ +where the minus sign is used to indicate an instance method and a +plus sign (not shown) is used to indicate a class method. The class +name Class and method name methodName are enclosed in +brackets, similar to the way messages are specified in Objective-C +source code. For example, to set a breakpoint at the create +instance method of class Fruit in the program currently being +debugged, enter: +

+ +
 
break -[Fruit create]
+

+ +To list ten program lines around the initialize class method, +enter: +

+ +
 
list +[NSText initialize]
+

+ +In the current version of GDB, the plus or minus sign is +required. In future versions of GDB, the plus or minus +sign will be optional, but you can use it to narrow the search. It +is also possible to specify just a method name: +

+ +
 
break create
+

+ +You must specify the complete method name, including any colons. If +your program's source files contain more than one create method, +you'll be presented with a numbered list of classes that implement that +method. Indicate your choice by number, or type `0' to exit if +none apply. +

+ +As another example, to clear a breakpoint established at the +makeKeyAndOrderFront: method of the NSWindow class, enter: +

+ +
 
clear -[NSWindow makeKeyAndOrderFront:]
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.2.2 The Print Command With Objective-C

+ +

+ +The print command has also been extended to accept methods. For example: +

+ +
 
print -[object hash]
+

+ + + +will tell GDB to send the hash message to object +and print the result. Also, an additional command has been added, +print-object or po for short, which is meant to print +the description of an object. However, this command may only work +with certain Objective-C libraries that have a particular hook +function, _NSPrintForDebugger, defined. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.3 Fortran

+ +

+ +GDB can be used to debug programs written in Fortran, but it +currently supports only the features of Fortran 77 language. +

+ + +Some Fortran compilers (GNU Fortran 77 and Fortran 95 compilers +among them) append an underscore to the names of variables and +functions. When you debug programs compiled by those compilers, you +will need to refer to variables and functions with a trailing +underscore. +

+ +

+ + + +
12.4.3.1 Fortran Operators and Expressions  Fortran operators and expressions
12.4.3.2 Fortran Defaults  Default settings for Fortran
12.4.3.3 Special Fortran Commands  Special GDB commands for Fortran
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.3.1 Fortran Operators and Expressions

+ +

+ + +

+ +Operators must be defined on values of specific types. For instance, ++ is defined on numbers, but not on characters or other non- +arithmetic types. Operators are often defined on groups of types. +

+ +

+
** +
The exponentiation operator. It raises the first operand to the power +of the second one. +

+ +

: +
The range operator. Normally used in the form of array(low:high) to +represent a section of array. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.3.2 Fortran Defaults

+ +

+ + +

+ +Fortran symbols are usually case-insensitive, so GDB by +default uses case-insensitive matches for Fortran symbols. You can +change that with the `set case-insensitive' command, see +13. Examining the Symbol Table, for the details. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.3.3 Special Fortran Commands

+ +

+ + +

+ +GDB has some commands to support Fortran-specific features, +such as displaying common blocks. +

+ +

+ + +
info common [common-name] +
This command prints the values contained in the Fortran COMMON +block whose name is common-name. With no argument, the names of +all COMMON blocks visible at the current program location are +printed. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.4 Pascal

+ +

+ + +Debugging Pascal programs which use sets, subranges, file variables, or +nested functions does not currently work. GDB does not support +entering expressions, printing values, or similar features using Pascal +syntax. +

+ +The Pascal-specific command set print pascal_static-members +controls whether static members of Pascal objects are displayed. +See section pascal_static-members. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5 Modula-2

+ +

+ + +

+ +The extensions made to GDB to support Modula-2 only support +output from the GNU Modula-2 compiler (which is currently being +developed). Other Modula-2 compilers are not currently supported, and +attempting to debug executables produced by them is most likely +to give an error as GDB reads in the executable's symbol +table. +

+ + +

+ + + + + + + + + +
12.4.5.1 Operators  Built-in operators
12.4.5.2 Built-in Functions and Procedures  Built-in functions and procedures
12.4.5.3 Constants  Modula-2 constants
12.4.5.4 Modula-2 Types  Modula-2 types
12.4.5.5 Modula-2 Defaults  Default settings for Modula-2
12.4.5.6 Deviations from Standard Modula-2  Deviations from standard Modula-2
12.4.5.7 Modula-2 Type and Range Checks  Modula-2 type and range checks
12.4.5.8 The Scope Operators :: and .  The scope operators :: and .
12.4.5.9 GDB and Modula-2  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.1 Operators

+ +

+ +Operators must be defined on values of specific types. For instance, ++ is defined on numbers, but not on structures. Operators are +often defined on groups of types. For the purposes of Modula-2, the +following definitions hold: +

+ +

    + +
  • +Integral types consist of INTEGER, CARDINAL, and +their subranges. +

    + +

  • +Character types consist of CHAR and its subranges. +

    + +

  • +Floating-point types consist of REAL. +

    + +

  • +Pointer types consist of anything declared as POINTER TO +type. +

    + +

  • +Scalar types consist of all of the above. +

    + +

  • +Set types consist of SET and BITSET types. +

    + +

  • +Boolean types consist of BOOLEAN. +
+

+ +The following operators are supported, and appear in order of +increasing precedence: +

+ +

+
, +
Function argument or array index separator. +

+ +

:= +
Assignment. The value of var := value is +value. +

+ +

<, > +
Less than, greater than on integral, floating-point, or enumerated +types. +

+ +

<=, >= +
Less than or equal to, greater than or equal to +on integral, floating-point and enumerated types, or set inclusion on +set types. Same precedence as <. +

+ +

=, <>, # +
Equality and two ways of expressing inequality, valid on scalar types. +Same precedence as <. In GDB scripts, only <> is +available for inequality, since # conflicts with the script +comment character. +

+ +

IN +
Set membership. Defined on set types and the types of their members. +Same precedence as <. +

+ +

OR +
Boolean disjunction. Defined on boolean types. +

+ +

AND, & +
Boolean conjunction. Defined on boolean types. +

+ +

@ +
The GDB "artificial array" operator (see section Expressions). +

+ +

+, - +
Addition and subtraction on integral and floating-point types, or union +and difference on set types. +

+ +

* +
Multiplication on integral and floating-point types, or set intersection +on set types. +

+ +

/ +
Division on floating-point types, or symmetric set difference on set +types. Same precedence as *. +

+ +

DIV, MOD +
Integer division and remainder. Defined on integral types. Same +precedence as *. +

+ +

- +
Negative. Defined on INTEGER and REAL data. +

+ +

^ +
Pointer dereferencing. Defined on pointer types. +

+ +

NOT +
Boolean negation. Defined on boolean types. Same precedence as +^. +

+ +

. +
RECORD field selector. Defined on RECORD data. Same +precedence as ^. +

+ +

[] +
Array indexing. Defined on ARRAY data. Same precedence as ^. +

+ +

() +
Procedure argument list. Defined on PROCEDURE objects. Same precedence +as ^. +

+ +

::, . +
GDB and Modula-2 scope operators. +
+

+ +

+Warning: Set expressions and their operations are not yet supported, so GDB +treats the use of the operator IN, or the use of operators ++, -, *, /, =, , <>, #, +<=, and >= on sets as an error. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.2 Built-in Functions and Procedures

+ +

+ +Modula-2 also makes available several built-in procedures and functions. +In describing these, the following metavariables are used: +

+ +

+ +
a +
represents an ARRAY variable. +

+ +

c +
represents a CHAR constant or variable. +

+ +

i +
represents a variable or constant of integral type. +

+ +

m +
represents an identifier that belongs to a set. Generally used in the +same function with the metavariable s. The type of s should +be SET OF mtype (where mtype is the type of m). +

+ +

n +
represents a variable or constant of integral or floating-point type. +

+ +

r +
represents a variable or constant of floating-point type. +

+ +

t +
represents a type. +

+ +

v +
represents a variable. +

+ +

x +
represents a variable or constant of one of many types. See the +explanation of the function for details. +
+

+ +All Modula-2 built-in procedures also return a result, described below. +

+ +

+
ABS(n) +
Returns the absolute value of n. +

+ +

CAP(c) +
If c is a lower case letter, it returns its upper case +equivalent, otherwise it returns its argument. +

+ +

CHR(i) +
Returns the character whose ordinal value is i. +

+ +

DEC(v) +
Decrements the value in the variable v by one. Returns the new value. +

+ +

DEC(v,i) +
Decrements the value in the variable v by i. Returns the +new value. +

+ +

EXCL(m,s) +
Removes the element m from the set s. Returns the new +set. +

+ +

FLOAT(i) +
Returns the floating point equivalent of the integer i. +

+ +

HIGH(a) +
Returns the index of the last member of a. +

+ +

INC(v) +
Increments the value in the variable v by one. Returns the new value. +

+ +

INC(v,i) +
Increments the value in the variable v by i. Returns the +new value. +

+ +

INCL(m,s) +
Adds the element m to the set s if it is not already +there. Returns the new set. +

+ +

MAX(t) +
Returns the maximum value of the type t. +

+ +

MIN(t) +
Returns the minimum value of the type t. +

+ +

ODD(i) +
Returns boolean TRUE if i is an odd number. +

+ +

ORD(x) +
Returns the ordinal value of its argument. For example, the ordinal +value of a character is its ASCII value (on machines supporting the +ASCII character set). x must be of an ordered type, which include +integral, character and enumerated types. +

+ +

SIZE(x) +
Returns the size of its argument. x can be a variable or a type. +

+ +

TRUNC(r) +
Returns the integral part of r. +

+ +

TSIZE(x) +
Returns the size of its argument. x can be a variable or a type. +

+ +

VAL(t,i) +
Returns the member of the type t whose ordinal value is i. +
+

+ +

+Warning: Sets and their operations are not yet supported, so +GDB treats the use of procedures INCL and EXCL as +an error. +
+

+ + + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.3 Constants

+ +

+ +GDB allows you to express the constants of Modula-2 in the following +ways: +

+ +

    + +
  • +Integer constants are simply a sequence of digits. When used in an +expression, a constant is interpreted to be type-compatible with the +rest of the expression. Hexadecimal integers are specified by a +trailing `H', and octal integers by a trailing `B'. +

    + +

  • +Floating point constants appear as a sequence of digits, followed by a +decimal point and another sequence of digits. An optional exponent can +then be specified, in the form `E[+|-]nnn', where +`[+|-]nnn' is the desired exponent. All of the +digits of the floating point constant must be valid decimal (base 10) +digits. +

    + +

  • +Character constants consist of a single character enclosed by a pair of +like quotes, either single (') or double ("). They may +also be expressed by their ordinal value (their ASCII value, usually) +followed by a `C'. +

    + +

  • +String constants consist of a sequence of characters enclosed by a +pair of like quotes, either single (') or double ("). +Escape sequences in the style of C are also allowed. See section C and C++ Constants, for a brief explanation of escape +sequences. +

    + +

  • +Enumerated constants consist of an enumerated identifier. +

    + +

  • +Boolean constants consist of the identifiers TRUE and +FALSE. +

    + +

  • +Pointer constants consist of integral values only. +

    + +

  • +Set constants are not yet supported. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.4 Modula-2 Types

+ +

+ +Currently GDB can print the following data types in Modula-2 +syntax: array types, record types, set types, pointer types, procedure +types, enumerated types, subrange types and base types. You can also +print the contents of variables declared using these type. +This section gives a number of simple source code examples together with +sample GDB sessions. +

+ +The first example contains the following section of code: +

+ +
 
VAR
+   s: SET OF CHAR ;
+   r: [20..40] ;
+

+ +and you can request GDB to interrogate the type and value of +r and s. +

+ +
 
(gdb) print s
+{'A'..'C', 'Z'}
+(gdb) ptype s
+SET OF CHAR
+(gdb) print r
+21
+(gdb) ptype r
+[20..40]
+

+ +Likewise if your source code declares s as: +

+ +
 
VAR
+   s: SET ['A'..'Z'] ;
+

+ +then you may query the type of s by: +

+ +
 
(gdb) ptype s
+type = SET ['A'..'Z']
+

+ +Note that at present you cannot interactively manipulate set +expressions using the debugger. +

+ +The following example shows how you might declare an array in Modula-2 +and how you can interact with GDB to print its type and contents: +

+ +
 
VAR
+   s: ARRAY [-10..10] OF CHAR ;
+

+ +
 
(gdb) ptype s
+ARRAY [-10..10] OF CHAR
+

+ +Note that the array handling is not yet complete and although the type +is printed correctly, expression handling still assumes that all +arrays have a lower bound of zero and not -10 as in the example +above. +

+ +Here are some more type related Modula-2 examples: +

+ +
 
TYPE
+   colour = (blue, red, yellow, green) ;
+   t = [blue..yellow] ;
+VAR
+   s: t ;
+BEGIN
+   s := blue ;
+

+ +The GDB interaction shows how you can query the data type +and value of a variable. +

+ +
 
(gdb) print s
+$1 = blue
+(gdb) ptype t
+type = [blue..yellow]
+

+ +In this example a Modula-2 array is declared and its contents +displayed. Observe that the contents are written in the same way as +their C counterparts. +

+ +
 
VAR
+   s: ARRAY [1..5] OF CARDINAL ;
+BEGIN
+   s[1] := 1 ;
+

+ +
 
(gdb) print s
+$1 = {1, 0, 0, 0, 0}
+(gdb) ptype s
+type = ARRAY [1..5] OF CARDINAL
+

+ +The Modula-2 language interface to GDB also understands +pointer types as shown in this example: +

+ +
 
VAR
+   s: POINTER TO ARRAY [1..5] OF CARDINAL ;
+BEGIN
+   NEW(s) ;
+   s^[1] := 1 ;
+

+ +and you can request that GDB describes the type of s. +

+ +
 
(gdb) ptype s
+type = POINTER TO ARRAY [1..5] OF CARDINAL
+

+ +GDB handles compound types as we can see in this example. +Here we combine array types, record types, pointer types and subrange +types: +

+ +
 
TYPE
+   foo = RECORD
+            f1: CARDINAL ;
+            f2: CHAR ;
+            f3: myarray ;
+         END ;
+
+   myarray = ARRAY myrange OF CARDINAL ;
+   myrange = [-2..2] ;
+VAR
+   s: POINTER TO ARRAY myrange OF foo ;
+

+ +and you can ask GDB to describe the type of s as shown +below. +

+ +
 
(gdb) ptype s
+type = POINTER TO ARRAY [-2..2] OF foo = RECORD
+    f1 : CARDINAL;
+    f2 : CHAR;
+    f3 : ARRAY [-2..2] OF CARDINAL;
+END 
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.5 Modula-2 Defaults

+ +

+ +If type and range checking are set automatically by GDB, they +both default to on whenever the working language changes to +Modula-2. This happens regardless of whether you or GDB +selected the working language. +

+ +If you allow GDB to set the language automatically, then entering +code compiled from a file whose name ends with `.mod' sets the +working language to Modula-2. See section Having GDB Infer the Source Language, for further details. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.6 Deviations from Standard Modula-2

+ +

+ +A few changes have been made to make Modula-2 programs easier to debug. +This is done primarily via loosening its type strictness: +

+ +

    +
  • +Unlike in standard Modula-2, pointer constants can be formed by +integers. This allows you to modify pointer variables during +debugging. (In standard Modula-2, the actual address contained in a +pointer variable is hidden from you; it can only be modified +through direct assignment to another pointer variable or expression that +returned a pointer.) +

    + +

  • +C escape sequences can be used in strings and characters to represent +non-printable characters. GDB prints out strings with these +escape sequences embedded. Single non-printable characters are +printed using the `CHR(nnn)' format. +

    + +

  • +The assignment operator (:=) returns the value of its right-hand +argument. +

    + +

  • +All built-in procedures both modify and return their argument. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.7 Modula-2 Type and Range Checks

+ +

+ +

+Warning: in this release, GDB does not yet perform type or +range checking. +
+

+ +GDB considers two Modula-2 variables type equivalent if: +

+ +

    +
  • +They are of types that have been declared equivalent via a TYPE +t1 = t2 statement +

    + +

  • +They have been declared on the same line. (Note: This is true of the +GNU Modula-2 compiler, but it may not be true of other compilers.) +
+

+ +As long as type checking is enabled, any attempt to combine variables +whose types are not equivalent is an error. +

+ +Range checking is done on all mathematical operations, assignment, array +index bounds, and all built-in functions and procedures. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.8 The Scope Operators :: and .

+ +

+ +There are a few subtle differences between the Modula-2 scope operator +(.) and the GDB scope operator (::). The two have +similar syntax: +

+ +
 
+module . id
+scope :: id
+

+ +where scope is the name of a module or a procedure, +module the name of a module, and id is any declared +identifier within your program, except another module. +

+ +Using the :: operator makes GDB search the scope +specified by scope for the identifier id. If it is not +found in the specified scope, then GDB searches all scopes +enclosing the one specified by scope. +

+ +Using the . operator makes GDB search the current scope for +the identifier specified by id that was imported from the +definition module specified by module. With this operator, it is +an error if the identifier id was not imported from definition +module module, or if id is not an identifier in +module. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.5.9 GDB and Modula-2

+ +

+ +Some GDB commands have little use when debugging Modula-2 programs. +Five subcommands of set print and show print apply +specifically to C and C++: `vtbl', `demangle', +`asm-demangle', `object', and `union'. The first four +apply to C++, and the last to the C union type, which has no direct +analogue in Modula-2. +

+ +The @ operator (see section Expressions), while available +with any language, is not useful with Modula-2. Its +intent is to aid the debugging of dynamic arrays, which cannot be +created in Modula-2 as they can in C or C++. However, because an +address can be specified by an integral constant, the construct +`{type}adrexp' is still useful. +

+ + +In GDB scripts, the Modula-2 inequality operator # is +interpreted as the beginning of a comment. Use <> instead. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.6 Ada

+ +

+ +The extensions made to GDB for Ada only support +output from the GNU Ada (GNAT) compiler. +Other Ada compilers are not currently supported, and +attempting to debug executables produced by them is most likely +to be difficult. +

+ + +

+ + + + + +
12.4.6.1 Introduction  General remarks on the Ada syntax + and semantics supported by Ada mode + in GDB.
12.4.6.2 Omissions from Ada  Restrictions on the Ada expression syntax.
12.4.6.3 Additions to Ada  Extensions of the Ada expression syntax.
12.4.6.4 Stopping at the Very Beginning  Debugging the program during elaboration.
12.4.6.5 Known Peculiarities of Ada Mode  Known peculiarities of Ada mode.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.6.1 Introduction

+ +

+ +The Ada mode of GDB supports a fairly large subset of Ada expression +syntax, with some extensions. +The philosophy behind the design of this subset is +

+ +

    +
  • +That GDB should provide basic literals and access to operations for +arithmetic, dereferencing, field selection, indexing, and subprogram calls, +leaving more sophisticated computations to subprograms written into the +program (which therefore may be called from GDB). +

    + +

  • +That type safety and strict adherence to Ada language restrictions +are not particularly important to the GDB user. +

    + +

  • +That brevity is important to the GDB user. +
+

+ +Thus, for brevity, the debugger acts as if there were +implicit with and use clauses in effect for all user-written +packages, making it unnecessary to fully qualify most names with +their packages, regardless of context. Where this causes ambiguity, +GDB asks the user's intent. +

+ +The debugger will start in Ada mode if it detects an Ada main program. +As for other languages, it will enter Ada mode when stopped in a program that +was translated from an Ada source file. +

+ +While in Ada mode, you may use `--' for comments. This is useful +mostly for documenting command files. The standard GDB comment +(`#') still works at the beginning of a line in Ada mode, but not in the +middle (to allow based literals). +

+ +The debugger supports limited overloading. Given a subprogram call in which +the function symbol has multiple definitions, it will use the number of +actual parameters and some information about their types to attempt to narrow +the set of definitions. It also makes very limited use of context, preferring +procedures to functions in the context of the call command, and +functions to procedures elsewhere. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.6.2 Omissions from Ada

+ +

+ +Here are the notable omissions from the subset: +

+ +

    +
  • +Only a subset of the attributes are supported: +

    + +

      +
    • +'First, 'Last, and 'Length + on array objects (not on types and subtypes). +

      + +

    • +'Min and 'Max. +

      + +

    • +'Pos and 'Val. +

      + +

    • +'Tag. +

      + +

    • +'Range on array objects (not subtypes), but only as the right +operand of the membership (in) operator. +

      + +

    • +'Access, 'Unchecked_Access, and +'Unrestricted_Access (a GNAT extension). +

      + +

    • +'Address. +
    +

    + +

  • +The names in +Characters.Latin_1 are not available and +concatenation is not implemented. Thus, escape characters in strings are +not currently available. +

    + +

  • +Equality tests (`=' and `/=') on arrays test for bitwise +equality of representations. They will generally work correctly +for strings and arrays whose elements have integer or enumeration types. +They may not work correctly for arrays whose element +types have user-defined equality, for arrays of real values +(in particular, IEEE-conformant floating point, because of negative +zeroes and NaNs), and for arrays whose elements contain unused bits with +indeterminate values. +

    + +

  • +The other component-by-component array operations (and, or, +xor, not, and relational tests other than equality) +are not implemented. +

    + +

  • + + + +There is limited support for array and record aggregates. They are +permitted only on the right sides of assignments, as in these examples: +

    + +
     
    set An_Array := (1, 2, 3, 4, 5, 6)
    +set An_Array := (1, others => 0)
    +set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
    +set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
    +set A_Record := (1, "Peter", True);
    +set A_Record := (Name => "Peter", Id => 1, Alive => True)
    +

    + +Changing a +discriminant's value by assigning an aggregate has an +undefined effect if that discriminant is used within the record. +However, you can first modify discriminants by directly assigning to +them (which normally would not be allowed in Ada), and then performing an +aggregate assignment. For example, given a variable A_Rec +declared to have a type such as: +

    + +
     
    type Rec (Len : Small_Integer := 0) is record
    +    Id : Integer;
    +    Vals : IntArray (1 .. Len);
    +end record;
    +

    + +you can assign a value with a different size of Vals with two +assignments: +

    + +
     
    set A_Rec.Len := 4
    +set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
    +

    + +As this example also illustrates, GDB is very loose about the usual +rules concerning aggregates. You may leave out some of the +components of an array or record aggregate (such as the Len +component in the assignment to A_Rec above); they will retain their +original values upon assignment. You may freely use dynamic values as +indices in component associations. You may even use overlapping or +redundant component associations, although which component values are +assigned in such cases is not defined. +

    + +

  • +Calls to dispatching subprograms are not implemented. +

    + +

  • +The overloading algorithm is much more limited (i.e., less selective) +than that of real Ada. It makes only limited use of the context in +which a subexpression appears to resolve its meaning, and it is much +looser in its rules for allowing type matches. As a result, some +function calls will be ambiguous, and the user will be asked to choose +the proper resolution. +

    + +

  • +The new operator is not implemented. +

    + +

  • +Entry calls are not implemented. +

    + +

  • +Aside from printing, arithmetic operations on the native VAX floating-point +formats are not supported. +

    + +

  • +It is not possible to slice a packed array. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.6.3 Additions to Ada

+ +

+ +As it does for other languages, GDB makes certain generic +extensions to Ada (see section 8.1 Expressions): +

+ +

    +
  • +If the expression E is a variable residing in memory (typically +a local variable or array element) and N is a positive integer, +then E@N displays the values of E and the +N-1 adjacent variables following it in memory as an array. In +Ada, this operator is generally not necessary, since its prime use is +in displaying parts of an array, and slicing will usually do this in +Ada. However, there are occasional uses when debugging programs in +which certain debugging information has been optimized away. +

    + +

  • +B::var means "the variable named var that +appears in function or file B." When B is a file name, +you must typically surround it in single quotes. +

    + +

  • +The expression {type} addr means "the variable of type +type that appears at address addr." +

    + +

  • +A name starting with `$' is a convenience variable +(see section 8.9 Convenience Variables) or a machine register (see section 8.10 Registers). +
+

+ +In addition, GDB provides a few other shortcuts and outright +additions specific to Ada: +

+ +

    +
  • +The assignment statement is allowed as an expression, returning +its right-hand operand as its value. Thus, you may enter +

    + +
     
    set x := y + 3
    +print A(tmp := y + 1)
    +

    + +

  • +The semicolon is allowed as an "operator," returning as its value +the value of its right-hand operand. +This allows, for example, +complex conditional breaks: +

    + +
     
    break f
    +condition 1 (report(i); k += 1; A(k) > 100)
    +

    + +

  • +Rather than use catenation and symbolic character names to introduce special +characters into strings, one may instead use a special bracket notation, +which is also used to print strings. A sequence of characters of the form +`["XX"]' within a string or character literal denotes the +(single) character whose numeric encoding is XX in hexadecimal. The +sequence of characters `["""]' also denotes a single quotation mark +in strings. For example, +
     
       "One line.["0a"]Next line.["0a"]"
    +
    contains an ASCII newline character (Ada.Characters.Latin_1.LF) +after each period. +

    + +

  • +The subtype used as a prefix for the attributes 'Pos, 'Min, and +'Max is optional (and is ignored in any case). For example, it is valid +to write +

    + +
     
    print 'max(x, y)
    +

    + +

  • +When printing arrays, GDB uses positional notation when the +array has a lower bound of 1, and uses a modified named notation otherwise. +For example, a one-dimensional array of three integers with a lower bound +of 3 might print as +

    + +
     
    (3 => 10, 17, 1)
    +

    + +That is, in contrast to valid Ada, only the first component has a => +clause. +

    + +

  • +You may abbreviate attributes in expressions with any unique, +multi-character subsequence of +their names (an exact match gets preference). +For example, you may use a'len, a'gth, or a'lh +in place of a'length. +

    + +

  • + +Since Ada is case-insensitive, the debugger normally maps identifiers you type +to lower case. The GNAT compiler uses upper-case characters for +some of its internal identifiers, which are normally of no interest to users. +For the rare occasions when you actually have to look at them, +enclose them in angle brackets to avoid the lower-case mapping. +For example, +
     
    gdb print <JMPBUF_SAVE>[0]
    +

    + +

  • +Printing an object of class-wide type or dereferencing an +access-to-class-wide value will display all the components of the object's +specific type (as indicated by its run-time tag). Likewise, component +selection on such a value will operate on the specific type of the +object. +

    + +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.6.4 Stopping at the Very Beginning

+ +

+ + +It is sometimes necessary to debug the program during elaboration, and +before reaching the main procedure. +As defined in the Ada Reference +Manual, the elaboration code is invoked from a procedure called +adainit. To run your program up to the beginning of +elaboration, simply use the following two commands: +tbreak adainit and run. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.4.6.5 Known Peculiarities of Ada Mode

+ +

+ +Besides the omissions listed previously (see section 12.4.6.2 Omissions from Ada), +we know of several problems with and limitations of Ada mode in +GDB, +some of which will be fixed with planned future releases of the debugger +and the GNU Ada compiler. +

+ +

    +
  • +Currently, the debugger +has insufficient information to determine whether certain pointers represent +pointers to objects or the objects themselves. +Thus, the user may have to tack an extra .all after an expression +to get it printed properly. +

    + +

  • +Static constants that the compiler chooses not to materialize as objects in +storage are invisible to the debugger. +

    + +

  • +Named parameter associations in function argument lists are ignored (the +argument lists are treated as positional). +

    + +

  • +Many useful library packages are currently invisible to the debugger. +

    + +

  • +Fixed-point arithmetic, conversions, input, and output is carried out using +floating-point arithmetic, and may give results that only approximate those on +the host machine. +

    + +

  • +The type of the 'Address attribute may not be System.Address. +

    + +

  • +The GNAT compiler never generates the prefix Standard for any of +the standard symbols defined by the Ada language. GDB knows about +this: it will strip the prefix from names when you use it, and will never +look for a name you have so qualified among local symbols, nor match against +symbols in other packages or subprograms. If you have +defined entities anywhere in your program other than parameters and +local variables whose simple names match names in Standard, +GNAT's lack of qualification here can cause confusion. When this happens, +you can usually resolve the confusion +by qualifying the problematic names with package +Standard explicitly. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

12.5 Unsupported Languages

+ +

+ + + +In addition to the other fully-supported programming languages, +GDB also provides a pseudo-language, called minimal. +It does not represent a real programming language, but provides a set +of capabilities close to what the C or assembly languages provide. +This should allow most simple operations to be performed while debugging +an application that uses a language currently not supported by GDB. +

+ +If the language is set to auto, GDB will automatically +select this language if the current frame corresponds to an unsupported +language. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_14.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_14.html new file mode 100644 index 0000000..0c22ead --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_14.html @@ -0,0 +1,480 @@ + + + + + +Debugging with GDB: Symbols + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

13. Examining the Symbol Table

+ +

+ +The commands described in this chapter allow you to inquire about the +symbols (names of variables, functions and types) defined in your +program. This information is inherent in the text of your program and +does not change as your program executes. GDB finds it in your +program's symbol table, in the file indicated when you started GDB +(see section Choosing Files), or by one of the +file-management commands (see section Commands to Specify Files). +

+ + + + +Occasionally, you may need to refer to symbols that contain unusual +characters, which GDB ordinarily treats as word delimiters. The +most frequent case is in referring to static variables in other +source files (see section Program Variables). File names +are recorded in object files as debugging symbols, but GDB would +ordinarily parse a typical file name, like `foo.c', as the three words +`foo' `.' `c'. To allow GDB to recognize +`foo.c' as a single symbol, enclose it in single quotes; for example, +

+ +
 
p 'foo.c'::x
+

+ +looks up the value of x in the scope of the file `foo.c'. +

+ +

+ + + +
set case-sensitive on +
set case-sensitive off +
set case-sensitive auto +
Normally, when GDB looks up symbols, it matches their names +with case sensitivity determined by the current source language. +Occasionally, you may wish to control that. The command set +case-sensitive lets you do that by specifying on for +case-sensitive matches or off for case-insensitive ones. If +you specify auto, case sensitivity is reset to the default +suitable for the source language. The default is case-sensitive +matches for all languages except for Fortran, for which the default is +case-insensitive matches. +

+ + +

show case-sensitive +
This command shows the current setting of case sensitivity for symbols +lookups. +

+ + + +

info address symbol +
Describe where the data for symbol is stored. For a register +variable, this says which register it is kept in. For a non-register +local variable, this prints the stack-frame offset at which the variable +is always stored. +

+ +Note the contrast with `print &symbol', which does not work +at all for a register variable, and for a stack local variable prints +the exact address of the current instantiation of the variable. +

+ + + + +

info symbol addr +
Print the name of a symbol which is stored at the address addr. +If no symbol is stored exactly at addr, GDB prints the +nearest symbol and an offset from it: +

+ +
 
(gdb) info symbol 0x54320
+_initialize_vx + 396 in section .text
+

+ +This is the opposite of the info address command. You can use +it to find out the name of a variable or a function given its address. +

+ + +

whatis [arg] +
Print the data type of arg, which can be either an expression or +a data type. With no argument, print the data type of $, the +last value in the value history. If arg is an expression, it is +not actually evaluated, and any side-effecting operations (such as +assignments or function calls) inside it do not take place. If +arg is a type name, it may be the name of a type or typedef, or +for C code it may have the form `class class-name', +`struct struct-tag', `union union-tag' or +`enum enum-tag'. +See section Expressions. +

+ + +

ptype [arg] +
ptype accepts the same arguments as whatis, but prints a +detailed description of the type, instead of just the name of the type. +See section Expressions. +

+ +For example, for this variable declaration: +

+ +
 
struct complex {double real; double imag;} v;
+

+ +the two commands give this output: +

+ +
 
(gdb) whatis v
+type = struct complex
+(gdb) ptype v
+type = struct complex {
+    double real;
+    double imag;
+}
+

+ +As with whatis, using ptype without an argument refers to +the type of $, the last value in the value history. +

+ + +Sometimes, programs use opaque data types or incomplete specifications +of complex data structure. If the debug information included in the +program does not allow GDB to display a full declaration of +the data type, it will say `<incomplete type>'. For example, +given these declarations: +

+ +
 
    struct foo;
+    struct foo *fooptr;
+

+ +but no definition for struct foo itself, GDB will say: +

+ +
 
  (gdb) ptype foo
+  $1 = <incomplete type>
+

+ +"Incomplete type" is C terminology for data types that are not +completely specified. +

+ + +

info types regexp +
info types +
Print a brief description of all types whose names match the regular +expression regexp (or all types in your program, if you supply +no argument). Each complete typename is matched as though it were a +complete line; thus, `i type value' gives information on all +types in your program whose names include the string value, but +`i type ^value$' gives information only on types whose complete +name is value. +

+ +This command differs from ptype in two ways: first, like +whatis, it does not print a detailed description; second, it +lists all source files where a type is defined. +

+ + + +

info scope location +
List all the variables local to a particular scope. This command +accepts a location argument--a function name, a source line, or +an address preceded by a `*', and prints all the variables local +to the scope defined by that location. (See section 7.2 Specifying a Location, for +details about supported forms of location.) For example: +

+ +
 
(gdb) info scope command_line_handler
+Scope for command_line_handler:
+Symbol rl is an argument at stack/frame offset 8, length 4.
+Symbol linebuffer is in static storage at address 0x150a18, length 4.
+Symbol linelength is in static storage at address 0x150a1c, length 4.
+Symbol p is a local variable in register $esi, length 4.
+Symbol p1 is a local variable in register $ebx, length 4.
+Symbol nline is a local variable in register $edx, length 4.
+Symbol repeat is a local variable at frame offset -8, length 4.
+

+ +This command is especially useful for determining what data to collect +during a trace experiment, see collect. +

+ + +

info source +
Show information about the current source file--that is, the source file for +the function containing the current point of execution: +
    +
  • +the name of the source file, and the directory containing it, +
  • +the directory it was compiled in, +
  • +its length, in lines, +
  • +which programming language it is written in, +
  • +whether the executable includes debugging information for that file, and +if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and +
  • +whether the debugging information includes information about +preprocessor macros. +
+

+ + +

info sources +
Print the names of all source files in your program for which there is +debugging information, organized into two lists: files whose symbols +have already been read, and files whose symbols will be read when needed. +

+ + +

info functions +
Print the names and data types of all defined functions. +

+ +

info functions regexp +
Print the names and data types of all defined functions +whose names contain a match for regular expression regexp. +Thus, `info fun step' finds all functions whose names +include step; `info fun ^step' finds those whose names +start with step. If a function name contains characters +that conflict with the regular expression language (e.g. +`operator*()'), they may be quoted with a backslash. +

+ + +

info variables +
Print the names and data types of all variables that are declared +outside of functions (i.e. excluding local variables). +

+ +

info variables regexp +
Print the names and data types of all variables (except for local +variables) whose names contain a match for regular expression +regexp. +

+ + + +

info classes +
info classes regexp +
Display all Objective-C classes in your program, or +(with the regexp argument) all those matching a particular regular +expression. +

+ + +

info selectors +
info selectors regexp +
Display all Objective-C selectors in your program, or +(with the regexp argument) all those matching a particular regular +expression. +

+ + +Some systems allow individual object files that make up your program to +be replaced without stopping and restarting your program. For example, +in VxWorks you can simply recompile a defective object file and keep on +running. If you are running on one of these systems, you can allow +GDB to reload the symbols for automatically relinked modules: +

+ +

+ +
set symbol-reloading on +
Replace symbol definitions for the corresponding source file when an +object file with a particular name is seen again. +

+ +

set symbol-reloading off +
Do not replace symbol definitions when encountering object files of the +same name more than once. This is the default state; if you are not +running on a system that permits automatic relinking of modules, you +should leave symbol-reloading off, since otherwise GDB +may discard symbols when linking large programs, that may contain +several modules (from different directories or libraries) with the same +name. +

+ + +

show symbol-reloading +
Show the current on or off setting. +
+

+ + + +

set opaque-type-resolution on +
Tell GDB to resolve opaque types. An opaque type is a type +declared as a pointer to a struct, class, or +union---for example, struct MyType *---that is used in one +source file although the full declaration of struct MyType is in +another source file. The default is on. +

+ +A change in the setting of this subcommand will not take effect until +the next time symbols for a file are loaded. +

+ +

set opaque-type-resolution off +
Tell GDB not to resolve opaque types. In this case, the type +is printed as follows: +
 
{<no data fields>}
+

+ + +

show opaque-type-resolution +
Show whether opaque types are resolved or not. +

+ + + + + +

maint print symbols filename +
maint print psymbols filename +
maint print msymbols filename +
Write a dump of debugging symbol data into the file filename. +These commands are used to debug the GDB symbol-reading code. Only +symbols with debugging data are included. If you use `maint print +symbols', GDB includes all the symbols for which it has already +collected full details: that is, filename reflects symbols for +only those files whose symbols GDB has read. You can use the +command info sources to find out which files these are. If you +use `maint print psymbols' instead, the dump shows information about +symbols that GDB only knows partially--that is, symbols defined in +files that GDB has skimmed, but not yet read completely. Finally, +`maint print msymbols' dumps just the minimal symbol information +required for each object file from which GDB has read some symbols. +See section Commands to Specify Files, for a discussion of how +GDB reads symbols (in the description of symbol-file). +

+ + + + + + + +

maint info symtabs [ regexp ] +
maint info psymtabs [ regexp ] +

+ +List the struct symtab or struct partial_symtab +structures whose names match regexp. If regexp is not +given, list them all. The output includes expressions which you can +copy into a GDB debugging this one to examine a particular +structure in more detail. For example: +

+ +
 
(gdb) maint info psymtabs dwarf2read
+{ objfile /home/gnu/build/gdb/gdb
+  ((struct objfile *) 0x82e69d0)
+  { psymtab /home/gnu/src/gdb/dwarf2read.c
+    ((struct partial_symtab *) 0x8474b10)
+    readin no
+    fullname (null)
+    text addresses 0x814d3c8 -- 0x8158074
+    globals (* (struct partial_symbol **) 0x8507a08 @ 9)
+    statics (* (struct partial_symbol **) 0x40e95b78 @ 2882)
+    dependencies (none)
+  }
+}
+(gdb) maint info symtabs
+(gdb)
+
We see that there is one partial symbol table whose filename contains +the string `dwarf2read', belonging to the `gdb' executable; +and we see that GDB has not read in any symtabs yet at all. +If we set a breakpoint on a function, that will cause GDB to +read the symtab for the compilation unit containing that function: +

+ +
 
(gdb) break dwarf2_psymtab_to_symtab
+Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
+line 1574.
+(gdb) maint info symtabs
+{ objfile /home/gnu/build/gdb/gdb
+  ((struct objfile *) 0x82e69d0)
+  { symtab /home/gnu/src/gdb/dwarf2read.c
+    ((struct symtab *) 0x86c1f38)
+    dirname (null)
+    fullname (null)
+    blockvector ((struct blockvector *) 0x86c1bd0) (primary)
+    linetable ((struct linetable *) 0x8370fa0)
+    debugformat DWARF 2
+  }
+}
+(gdb)
+

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_15.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_15.html new file mode 100644 index 0000000..d5aa7bc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_15.html @@ -0,0 +1,514 @@ + + + + + +Debugging with GDB: Altering + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

14. Altering Execution

+ +

+ +Once you think you have found an error in your program, you might want to +find out for certain whether correcting the apparent error would lead to +correct results in the rest of the run. You can find the answer by +experiment, using the GDB features for altering execution of the +program. +

+ +For example, you can store new values into variables or memory +locations, give your program a signal, restart it at a different +address, or even return prematurely from a function. +

+ +

+ + + + + + +
14.1 Assignment to Variables  Assignment to variables
14.2 Continuing at a Different Address  Continuing at a different address
14.3 Giving your Program a Signal  Giving your program a signal
14.4 Returning from a Function  Returning from a function
14.5 Calling Program Functions  Calling your program's functions
14.6 Patching Programs  Patching your program
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

14.1 Assignment to Variables

+ +

+ + + +To alter the value of a variable, evaluate an assignment expression. +See section Expressions. For example, +

+ +
 
print x=4
+

+ +stores the value 4 into the variable x, and then prints the +value of the assignment expression (which is 4). +See section Using GDB with Different Languages, for more +information on operators in supported languages. +

+ + + +If you are not interested in seeing the value of the assignment, use the +set command instead of the print command. set is +really the same as print except that the expression's value is +not printed and is not put in the value history (see section Value History). The expression is evaluated only for its effects. +

+ +If the beginning of the argument string of the set command +appears identical to a set subcommand, use the set +variable command instead of just set. This command is identical +to set except for its lack of subcommands. For example, if your +program has a variable width, you get an error if you try to set +a new value with just `set width=13', because GDB has the +command set width: +

+ +
 
(gdb) whatis width
+type = double
+(gdb) p width
+$4 = 13
+(gdb) set width=47
+Invalid syntax in expression.
+

+ +The invalid expression, of course, is `=47'. In +order to actually set the program's variable width, use +

+ +
 
(gdb) set var width=47
+

+ +Because the set command has many subcommands that can conflict +with the names of program variables, it is a good idea to use the +set variable command instead of just set. For example, if +your program has a variable g, you run into problems if you try +to set a new value with just `set g=4', because GDB has +the command set gnutarget, abbreviated set g: +

+ +
 
(gdb) whatis g
+type = double
+(gdb) p g
+$1 = 1
+(gdb) set g=4
+(gdb) p g
+$2 = 1
+(gdb) r
+The program being debugged has been started already.
+Start it from the beginning? (y or n) y
+Starting program: /home/smith/cc_progs/a.out
+"/home/smith/cc_progs/a.out": can't open to read symbols:
+                                 Invalid bfd target.
+(gdb) show g
+The current BFD target is "=4".
+

+ +The program variable g did not change, and you silently set the +gnutarget to an invalid value. In order to set the variable +g, use +

+ +
 
(gdb) set var g=4
+

+ +GDB allows more implicit conversions in assignments than C; you can +freely store an integer value into a pointer variable or vice versa, +and you can convert any structure to any other structure that is the +same length or shorter. +

+ +To store values into arbitrary places in memory, use the `{...}' +construct to generate a value of specified type at a specified address +(see section Expressions). For example, {int}0x83040 refers +to memory location 0x83040 as an integer (which implies a certain size +and representation in memory), and +

+ +
 
set {int}0x83040 = 4
+

+ +stores the value 4 into that memory location. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

14.2 Continuing at a Different Address

+ +

+ +Ordinarily, when you continue your program, you do so at the place where +it stopped, with the continue command. You can instead continue at +an address of your own choosing, with the following commands: +

+ +

+ +
jump linespec +
jump location +
Resume execution at line linespec or at address given by +location. Execution stops again immediately if there is a +breakpoint there. See section 7.2 Specifying a Location, for a description of the +different forms of linespec and location. It is common +practice to use the tbreak command in conjunction with +jump. See section Setting Breakpoints. +

+ +The jump command does not change the current stack frame, or +the stack pointer, or the contents of any memory location or any +register other than the program counter. If line linespec is in +a different function from the one currently executing, the results may +be bizarre if the two functions expect different patterns of arguments or +of local variables. For this reason, the jump command requests +confirmation if the specified line is not in the function currently +executing. However, even bizarre results are predictable if you are +well acquainted with the machine-language code of your program. +

+

+ +On many systems, you can get much the same effect as the jump +command by storing a new value into the register $pc. The +difference is that this does not start your program running; it only +changes the address of where it will run when you continue. For +example, +

+ +
 
set $pc = 0x485
+

+ +makes the next continue command or stepping command execute at +address 0x485, rather than at the address where your program stopped. +See section Continuing and Stepping. +

+ +The most common occasion to use the jump command is to back +up--perhaps with more breakpoints set--over a portion of a program +that has already executed, in order to examine its execution in more +detail. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

14.3 Giving your Program a Signal

+ +

+ +

+ +
signal signal +
Resume execution where your program stopped, but immediately give it the +signal signal. signal can be the name or the number of a +signal. For example, on many systems signal 2 and signal +SIGINT are both ways of sending an interrupt signal. +

+ +Alternatively, if signal is zero, continue execution without +giving a signal. This is useful when your program stopped on account of +a signal and would ordinary see the signal when resumed with the +continue command; `signal 0' causes it to resume without a +signal. +

+ +signal does not repeat when you press RET a second time +after executing the command. +

+

+ +Invoking the signal command is not the same as invoking the +kill utility from the shell. Sending a signal with kill +causes GDB to decide what to do with the signal depending on +the signal handling tables (see section 5.3 Signals). The signal command +passes the signal directly to your program. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

14.4 Returning from a Function

+ +

+ +

+ + +
return +
return expression +
You can cancel execution of a function call with the return +command. If you give an +expression argument, its value is used as the function's return +value. +
+

+ +When you use return, GDB discards the selected stack frame +(and all frames within it). You can think of this as making the +discarded frame return prematurely. If you wish to specify a value to +be returned, give that value as the argument to return. +

+ +This pops the selected stack frame (see section Selecting a Frame), and any other frames inside of it, leaving its caller as the +innermost remaining frame. That frame becomes selected. The +specified value is stored in the registers used for returning values +of functions. +

+ +The return command does not resume execution; it leaves the +program stopped in the state that would exist if the function had just +returned. In contrast, the finish command (see section Continuing and Stepping) resumes execution until the +selected stack frame returns naturally. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

14.5 Calling Program Functions

+ +

+ +

+ + +
print expr +
Evaluate the expression expr and display the resulting value. +expr may include calls to functions in the program being +debugged. +

+ + +

call expr +
Evaluate the expression expr without displaying void +returned values. +

+ +You can use this variant of the print command if you want to +execute a function from your program that does not return anything +(a.k.a. a void function), but without cluttering the output +with void returned values that GDB will otherwise +print. If the result is not void, it is printed and saved in the +value history. +

+

+ +It is possible for the function you call via the print or +call command to generate a signal (e.g., if there's a bug in +the function, or if you passed it incorrect arguments). What happens +in that case is controlled by the set unwindonsignal command. +

+ +

+
set unwindonsignal +
+ + +Set unwinding of the stack if a signal is received while in a function +that GDB called in the program being debugged. If set to on, +GDB unwinds the stack it created for the call and restores +the context to what it was before the call. If set to off (the +default), GDB stops in the frame where the signal was +received. +

+ +

show unwindonsignal +
+Show the current setting of stack unwinding in the functions called by +GDB. +
+

+ + +Sometimes, a function you wish to call is actually a weak alias +for another function. In such case, GDB might not pick up +the type information, including the types of the function arguments, +which causes GDB to call the inferior function incorrectly. +As a result, the called function will function erroneously and may +even crash. A solution to that is to use the name of the aliased +function instead. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

14.6 Patching Programs

+ +

+ + + + +

+ +By default, GDB opens the file containing your program's +executable code (or the corefile) read-only. This prevents accidental +alterations to machine code; but it also prevents you from intentionally +patching your program's binary. +

+ +If you'd like to be able to patch the binary, you can specify that +explicitly with the set write command. For example, you might +want to turn on internal debugging flags, or even to make emergency +repairs. +

+ +

+ +
set write on +
set write off +
If you specify `set write on', GDB opens executable and +core files for both reading and writing; if you specify `set write +off' (the default), GDB opens them read-only. +

+ +If you have already loaded a file, you must load it again (using the +exec-file or core-file command) after changing set +write, for your new setting to take effect. +

+ +

show write +
+Display whether executable files and core files are opened for writing +as well as reading. +
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_16.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_16.html new file mode 100644 index 0000000..bb8d439 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_16.html @@ -0,0 +1,1030 @@ + + + + + +Debugging with GDB: GDB Files + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

15. GDB Files

+ +

+ +GDB needs to know the file name of the program to be debugged, +both in order to read its symbol table and in order to start your +program. To debug a core dump of a previous run, you must also tell +GDB the name of the core dump file. +

+ +

+ + + +
15.1 Commands to Specify Files  Commands to specify files
15.2 Debugging Information in Separate Files  Debugging information in separate files
15.3 Errors Reading Symbol Files  Errors reading symbol files
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

15.1 Commands to Specify Files

+ +

+ + + +

+ +You may want to specify executable and core dump file names. The usual +way to do this is at start-up time, using the arguments to +GDB's start-up commands (see section Getting In and Out of GDB). +

+ +Occasionally it is necessary to change to a different file during a +GDB session. Or you may run GDB and forget to +specify a file you want to use. Or you are debugging a remote target +via gdbserver (see section Using the gdbserver Program). In these situations the GDB commands to specify +new files are useful. +

+ +

+ + +
file filename +
Use filename as the program to be debugged. It is read for its +symbols and for the contents of pure memory. It is also the program +executed when you use the run command. If you do not specify a +directory and the file is not found in the GDB working directory, +GDB uses the environment variable PATH as a list of +directories to search, just as the shell does when looking for a program +to run. You can change the value of this variable, for both GDB +and your program, using the path command. +

+ + + +You can load unlinked object `.o' files into GDB using +the file command. You will not be able to "run" an object +file, but you can disassemble functions and inspect variables. Also, +if the underlying BFD functionality supports it, you could use +gdb -write to patch object files using this technique. Note +that GDB can neither interpret nor modify relocations in this +case, so branches and some initialized variables will appear to go to +the wrong place. But this feature is still handy from time to time. +

+ +

file +
file with no argument makes GDB discard any information it +has on both executable file and the symbol table. +

+ + +

exec-file [ filename ] +
Specify that the program to be run (but not the symbol table) is found +in filename. GDB searches the environment variable PATH +if necessary to locate your program. Omitting filename means to +discard information on the executable file. +

+ + +

symbol-file [ filename ] +
Read symbol table information from file filename. PATH is +searched when necessary. Use the file command to get both symbol +table and program to run from the same file. +

+ +symbol-file with no argument clears out GDB information on your +program's symbol table. +

+ +The symbol-file command causes GDB to forget the contents of +some breakpoints and auto-display expressions. This is because they may +contain pointers to the internal data recording symbols and data types, +which are part of the old symbol table data being discarded inside +GDB. +

+ +symbol-file does not repeat if you press RET again after +executing it once. +

+ +When GDB is configured for a particular environment, it +understands debugging information in whatever format is the standard +generated for that environment; you may use either a GNU compiler, or +other compilers that adhere to the local conventions. +Best results are usually obtained from GNU compilers; for example, +using GCC you can generate debugging information for +optimized code. +

+ +For most kinds of object files, with the exception of old SVR3 systems +using COFF, the symbol-file command does not normally read the +symbol table in full right away. Instead, it scans the symbol table +quickly to find which source files and which symbols are present. The +details are read later, one source file at a time, as they are needed. +

+ +The purpose of this two-stage reading strategy is to make GDB +start up faster. For the most part, it is invisible except for +occasional pauses while the symbol table details for a particular source +file are being read. (The set verbose command can turn these +pauses into messages if desired. See section Optional Warnings and Messages.) +

+ +We have not implemented the two-stage strategy for COFF yet. When the +symbol table is stored in COFF format, symbol-file reads the +symbol table data in full right away. Note that "stabs-in-COFF" +still does the two-stage strategy, since the debug info is actually +in stabs format. +

+ + + + +

symbol-file filename [ -readnow ] +
file filename [ -readnow ] +
You can override the GDB two-stage strategy for reading symbol +tables by using the `-readnow' option with any of the commands that +load symbol table information, if you want to be sure GDB has the +entire symbol table available. +

+ + +

core-file [filename] +
core +
Specify the whereabouts of a core dump file to be used as the "contents +of memory". Traditionally, core files contain only some parts of the +address space of the process that generated them; GDB can access the +executable file itself for other parts. +

+ +core-file with no argument specifies that no core file is +to be used. +

+ +Note that the core file is ignored when your program is actually running +under GDB. So, if you have been running your program and you +wish to debug a core file instead, you must kill the subprocess in which +the program is running. To do this, use the kill command +(see section Killing the Child Process). +

+ + + +

add-symbol-file filename address +
add-symbol-file filename address [ -readnow ] +
add-symbol-file filename -ssection address ... +
The add-symbol-file command reads additional symbol table +information from the file filename. You would use this command +when filename has been dynamically loaded (by some other means) +into the program that is running. address should be the memory +address at which the file has been loaded; GDB cannot figure +this out for itself. You can additionally specify an arbitrary number +of `-ssection address' pairs, to give an explicit +section name and base address for that section. You can specify any +address as an expression. +

+ +The symbol table of the file filename is added to the symbol table +originally read with the symbol-file command. You can use the +add-symbol-file command any number of times; the new symbol data +thus read keeps adding to the old. To discard all old symbol data +instead, use the symbol-file command without any arguments. +

+ + + + + + +Although filename is typically a shared library file, an +executable file, or some other object file which has been fully +relocated for loading into a process, you can also load symbolic +information from relocatable `.o' files, as long as: +

+ +

    +
  • +the file's symbolic information refers only to linker symbols defined in +that file, not to symbols defined by other object files, +
  • +every section the file's symbolic information refers to has actually +been loaded into the inferior, as it appears in the file, and +
  • +you can determine the address at which every section was loaded, and +provide these to the add-symbol-file command. +
+

+ +Some embedded operating systems, like Sun Chorus and VxWorks, can load +relocatable files into an already running program; such systems +typically make the requirements above easy to meet. However, it's +important to recognize that many native systems use complex link +procedures (.linkonce section factoring and C++ constructor table +assembly, for example) that make the requirements difficult to meet. In +general, one cannot assume that using add-symbol-file to read a +relocatable object file's symbolic information will have the same effect +as linking the relocatable object file into the program in the normal +way. +

+ +add-symbol-file does not repeat if you press RET after using it. +

+ + + + +

add-symbol-file-from-memory address +
Load symbols from the given address in a dynamically loaded +object file whose image is mapped directly into the inferior's memory. +For example, the Linux kernel maps a syscall DSO into each +process's address space; this DSO provides kernel-specific code for +some system calls. The argument can be any expression whose +evaluation yields the address of the file's shared object file header. +For this command to work, you must have used symbol-file or +exec-file commands in advance. +

+ + + +

add-shared-symbol-files library-file +
assf library-file +
The add-shared-symbol-files command can currently be used only +in the Cygwin build of GDB on MS-Windows OS, where it is an +alias for the dll-symbols command (see section 18.1.5 Features for Debugging MS Windows PE Executables). +GDB automatically looks for shared libraries, however if +GDB does not find yours, you can invoke +add-shared-symbol-files. It takes one argument: the shared +library's file name. assf is a shorthand alias for +add-shared-symbol-files. +

+ + +

section section addr +
The section command changes the base address of the named +section of the exec file to addr. This can be used if the +exec file does not contain section addresses, (such as in the +a.out format), or when the addresses specified in the file +itself are wrong. Each section must be changed separately. The +info files command, described below, lists all the sections and +their addresses. +

+ + + +

info files +
info target +
info files and info target are synonymous; both print the +current target (see section Specifying a Debugging Target), +including the names of the executable and core dump files currently in +use by GDB, and the files from which symbols were loaded. The +command help target lists all possible targets rather than +current ones. +

+ + +

maint info sections +
Another command that can give you extra information about program sections +is maint info sections. In addition to the section information +displayed by info files, this command displays the flags and file +offset of each section in the executable and core dump files. In addition, +maint info sections provides the following command options (which +may be arbitrarily combined): +

+ +

+
ALLOBJ +
Display sections for all loaded object files, including shared libraries. +
sections +
Display info only for named sections. +
section-flags +
Display info only for sections for which section-flags are true. +The section flags that GDB currently knows about are: +
+
ALLOC +
Section will have space allocated in the process when loaded. +Set for all sections except those containing debug information. +
LOAD +
Section will be loaded from the file into the child process memory. +Set for pre-initialized code and data, clear for .bss sections. +
RELOC +
Section needs to be relocated before loading. +
READONLY +
Section cannot be modified by the child process. +
CODE +
Section contains executable code only. +
DATA +
Section contains data only (no executable code). +
ROM +
Section will reside in ROM. +
CONSTRUCTOR +
Section contains data for constructor/destructor lists. +
HAS_CONTENTS +
Section is not empty. +
NEVER_LOAD +
An instruction to the linker to not output the section. +
COFF_SHARED_LIBRARY +
A notification to the linker that the section contains +COFF shared library information. +
IS_COMMON +
Section contains common symbols. +
+
+ + +
set trust-readonly-sections on +
Tell GDB that readonly sections in your object file +really are read-only (i.e. that their contents will not change). +In that case, GDB can fetch values from these sections +out of the object file, rather than from the target program. +For some targets (notably embedded ones), this can be a significant +enhancement to debugging performance. +

+ +The default is off. +

+ +

set trust-readonly-sections off +
Tell GDB not to trust readonly sections. This means that +the contents of the section might change while the program is running, +and must therefore be fetched from the target when needed. +

+ +

show trust-readonly-sections +
Show the current setting of trusting readonly sections. +
+

+ +All file-specifying commands allow both absolute and relative file names +as arguments. GDB always converts the file name to an absolute file +name and remembers it that way. +

+ + + +GDB supports GNU/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix, +and IBM RS/6000 AIX shared libraries. +

+ +On MS-Windows GDB must be linked with the Expat library to support +shared libraries. See Expat. +

+ +GDB automatically loads symbol definitions from shared libraries +when you use the run command, or when you examine a core file. +(Before you issue the run command, GDB does not understand +references to a function in a shared library, however--unless you are +debugging a core file). +

+ +On HP-UX, if the program loads a library explicitly, GDB +automatically loads the symbols at the time of the shl_load call. +

+ +There are times, however, when you may wish to not automatically load +symbol definitions from shared libraries, such as when they are +particularly large or there are many of them. +

+ +To control the automatic loading of shared library symbols, use the +commands: +

+ +

+ +
set auto-solib-add mode +
If mode is on, symbols from all shared object libraries +will be loaded automatically when the inferior begins execution, you +attach to an independently started inferior, or when the dynamic linker +informs GDB that a new library has been loaded. If mode +is off, symbols must be loaded manually, using the +sharedlibrary command. The default value is on. +

+ + +If your program uses lots of shared libraries with debug info that +takes large amounts of memory, you can decrease the GDB +memory footprint by preventing it from automatically loading the +symbols from shared libraries. To that end, type set +auto-solib-add off before running the inferior, then load each +library whose debug symbols you do need with sharedlibrary +regexp, where regexp is a regular expression that matches +the libraries whose symbols you want to be loaded. +

+ + +

show auto-solib-add +
Display the current autoloading mode. +
+

+ + +To explicitly load shared library symbols, use the sharedlibrary +command: +

+ +

+ + +
info share +
info sharedlibrary +
Print the names of the shared libraries which are currently loaded. +

+ + + +

sharedlibrary regex +
share regex +
Load shared object library symbols for files matching a +Unix regular expression. +As with files loaded automatically, it only loads shared libraries +required by your program for a core file or after typing run. If +regex is omitted all shared libraries required by your program are +loaded. +

+ +

nosharedlibrary +
+ +Unload all shared object library symbols. This discards all symbols +that have been loaded from all shared libraries. Symbols from shared +libraries that were loaded by explicit user requests are not +discarded. +
+

+ +Sometimes you may wish that GDB stops and gives you control +when any of shared library events happen. Use the set +stop-on-solib-events command for this: +

+ +

+
set stop-on-solib-events +
+This command controls whether GDB should give you control +when the dynamic linker notifies it about some shared library event. +The most common event of interest is loading or unloading of a new +shared library. +

+ +

show stop-on-solib-events +
+Show whether GDB stops and gives you control when shared +library events happen. +
+

+ +Shared libraries are also supported in many cross or remote debugging +configurations. A copy of the target's libraries need to be present on the +host system; they need to be the same as the target libraries, although the +copies on the target can be stripped as long as the copies on the host are +not. +

+ + +For remote debugging, you need to tell GDB where the target +libraries are, so that it can load the correct copies--otherwise, it +may try to load the host's libraries. GDB has two variables +to specify the search directories for target libraries. +

+ +

+ + + + +
set sysroot path +
Use path as the system root for the program being debugged. Any +absolute shared library paths will be prefixed with path; many +runtime loaders store the absolute paths to the shared library in the +target program's memory. If you use set sysroot to find shared +libraries, they need to be laid out in the same way that they are on +the target, with e.g. a `/lib' and `/usr/lib' hierarchy +under path. +

+ +The set solib-absolute-prefix command is an alias for set +sysroot. +

+ + + +You can set the default system root by using the configure-time +`--with-sysroot' option. If the system root is inside +GDB's configured binary prefix (set with `--prefix' or +`--exec-prefix'), then the default system root will be updated +automatically if the installed GDB is moved to a new +location. +

+ + +

show sysroot +
Display the current shared library prefix. +

+ + +

set solib-search-path path +
If this variable is set, path is a colon-separated list of +directories to search for shared libraries. `solib-search-path' +is used after `sysroot' fails to locate the library, or if the +path to the library is relative instead of absolute. If you want to +use `solib-search-path' instead of `sysroot', be sure to set +`sysroot' to a nonexistent directory to prevent GDB from +finding your host's libraries. `sysroot' is preferred; setting +it to a nonexistent directory may interfere with automatic loading +of shared library symbols. +

+ + +

show solib-search-path +
Display the current shared library search path. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

15.2 Debugging Information in Separate Files

+ +

+ +GDB allows you to put a program's debugging information in a +file separate from the executable itself, in a way that allows +GDB to find and load the debugging information automatically. +Since debugging information can be very large--sometimes larger +than the executable code itself--some systems distribute debugging +information for their executables in separate files, which users can +install only when they need to debug a problem. +

+ +GDB supports two ways of specifying the separate debug info +file: +

+ +

    +
  • +The executable contains a debug link that specifies the name of +the separate debug info file. The separate debug file's name is +usually `executable.debug', where executable is the +name of the corresponding executable file without leading directories +(e.g., `ls.debug' for `/usr/bin/ls'). In addition, the +debug link specifies a CRC32 checksum for the debug file, which +GDB uses to validate that the executable and the debug file +came from the same build. +

    + +

  • +The executable contains a build ID, a unique bit string that is +also present in the corresponding debug info file. (This is supported +only on some operating systems, notably those which use the ELF format +for binary files and the GNU Binutils.) For more details about +this feature, see the description of the `--build-id' +command-line option in section `Command Line Options' in The GNU Linker. The debug info file's name is not specified +explicitly by the build ID, but can be computed from the build ID, see +below. +
+

+ +Depending on the way the debug info file is specified, GDB +uses two different methods of looking for the debug file: +

+ +

    +
  • +For the "debug link" method, GDB looks up the named file in +the directory of the executable file, then in a subdirectory of that +directory named `.debug', and finally under the global debug +directory, in a subdirectory whose name is identical to the leading +directories of the executable's absolute file name. +

    + +

  • +For the "build ID" method, GDB looks in the +`.build-id' subdirectory of the global debug directory for a file +named `nn/nnnnnnnn.debug', where nn are the +first 2 hex characters of the build ID bit string, and nnnnnnnn +are the rest of the bit string. (Real build ID strings are 32 or more +hex characters, not 10.) +
+

+ +So, for example, suppose you ask GDB to debug +`/usr/bin/ls', which has a debug link that specifies the +file `ls.debug', and a build ID whose value in hex is +abcdef1234. If the global debug directory is +`/usr/lib/debug', then GDB will look for the following +debug information files, in the indicated order: +

+ +

    +
  • +`/usr/lib/debug/.build-id/ab/cdef1234.debug' +
  • +`/usr/bin/ls.debug' +
  • +`/usr/bin/.debug/ls.debug' +
  • +`/usr/lib/debug/usr/bin/ls.debug'. +
+

+ +You can set the global debugging info directory's name, and view the +name GDB is currently using. +

+ +

+ + +
set debug-file-directory directory +
Set the directory which GDB searches for separate debugging +information files to directory. +

+ + +

show debug-file-directory +
Show the directory GDB searches for separate debugging +information files. +

+ +

+

+ + + +A debug link is a special section of the executable file named +.gnu_debuglink. The section must contain: +

+ +

    +
  • +A filename, with any leading directory components removed, followed by +a zero byte, +
  • +zero to three bytes of padding, as needed to reach the next four-byte +boundary within the section, and +
  • +a four-byte CRC checksum, stored in the same endianness used for the +executable file itself. The checksum is computed on the debugging +information file's full contents by the function given below, passing +zero as the crc argument. +
+

+ +Any executable file format can carry a debug link, as long as it can +contain a section named .gnu_debuglink with the contents +described above. +

+ + + +The build ID is a special section in the executable file (and in other +ELF binary files that GDB may consider). This section is +often named .note.gnu.build-id, but that name is not mandatory. +It contains unique identification for the built files--the ID remains +the same across multiple builds of the same build tree. The default +algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the +content for the build ID string. The same section with an identical +value is present in the original built binary with symbols, in its +stripped variant, and in the separate debugging information file. +

+ +The debugging information file itself should be an ordinary +executable, containing a full set of linker symbols, sections, and +debugging information. The sections of the debugging information file +should have the same names, addresses, and sizes as the original file, +but they need not contain any data--much like a .bss section +in an ordinary executable. +

+ +The GNU binary utilities (Binutils) package includes the +`objcopy' utility that can produce +the separated executable / debugging information file pairs using the +following commands: +

+ +
 
objcopy --only-keep-debug foo foo.debug
+strip -g foo
+

+ +These commands remove the debugging +information from the executable file `foo' and place it in the file +`foo.debug'. You can use the first, second or both methods to link the +two files: +

+ +

    +
  • +The debug link method needs the following additional command to also leave +behind a debug link in `foo': +

    + +
     
    objcopy --add-gnu-debuglink=foo.debug foo
    +

    + +Ulrich Drepper's `elfutils' package, starting with version 0.53, contains +a version of the strip command such that the command strip foo -f +foo.debug has the same functionality as the two objcopy commands and +the ln -s command above, together. +

    + +

  • +Build ID gets embedded into the main executable using ld --build-id or +the GCC counterpart gcc -Wl,--build-id. Build ID support plus +compatibility fixes for debug files separation are present in GNU binary +utilities (Binutils) package since version 2.18. +
+

+ +

+ +Since there are many different ways to compute CRC's for the debug +link (different polynomials, reversals, byte ordering, etc.), the +simplest way to describe the CRC used in .gnu_debuglink +sections is to give the complete code for a function that computes it: +

+ + +
 
unsigned long
+gnu_debuglink_crc32 (unsigned long crc,
+                     unsigned char *buf, size_t len)
+{
+  static const unsigned long crc32_table[256] =
+    {
+      0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+      0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+      0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+      0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+      0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+      0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+      0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+      0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+      0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+      0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+      0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+      0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+      0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+      0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+      0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+      0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+      0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+      0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+      0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+      0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+      0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+      0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+      0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+      0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+      0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+      0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+      0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+      0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+      0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+      0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+      0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+      0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+      0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+      0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+      0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+      0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+      0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+      0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+      0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+      0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+      0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+      0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+      0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+      0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+      0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+      0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+      0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+      0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+      0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+      0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+      0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+      0x2d02ef8d
+    };
+  unsigned char *end;
+
+  crc = ~crc & 0xffffffff;
+  for (end = buf + len; buf < end; ++buf)
+    crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
+  return ~crc & 0xffffffff;
+}
+

+ +This computation does not apply to the "build ID" method. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

15.3 Errors Reading Symbol Files

+ +

+ +While reading a symbol file, GDB occasionally encounters problems, +such as symbol types it does not recognize, or known bugs in compiler +output. By default, GDB does not notify you of such problems, since +they are relatively common and primarily of interest to people +debugging compilers. If you are interested in seeing information +about ill-constructed symbol tables, you can either ask GDB to print +only one message about each such type of problem, no matter how many +times the problem occurs; or you can ask GDB to print more messages, +to see how many times the problems occur, with the set +complaints command (see section Optional Warnings and Messages). +

+ +The messages currently printed, and their meanings, include: +

+ +

+
inner block not inside outer block in symbol +

+ +The symbol information shows where symbol scopes begin and end +(such as at the start of a function or a block of statements). This +error indicates that an inner scope block is not fully contained +in its outer scope blocks. +

+ +GDB circumvents the problem by treating the inner block as if it had +the same scope as the outer block. In the error message, symbol +may be shown as "(don't know)" if the outer block is not a +function. +

+ +

block at address out of order +

+ +The symbol information for symbol scope blocks should occur in +order of increasing addresses. This error indicates that it does not +do so. +

+ +GDB does not circumvent this problem, and has trouble +locating symbols in the source file whose symbols it is reading. (You +can often determine what source file is affected by specifying +set verbose on. See section Optional Warnings and Messages.) +

+ +

bad block start address patched +

+ +The symbol information for a symbol scope block has a start address +smaller than the address of the preceding source line. This is known +to occur in the SunOS 4.1.1 (and earlier) C compiler. +

+ +GDB circumvents the problem by treating the symbol scope block as +starting on the previous source line. +

+ +

bad string table offset in symbol n +

+ + +Symbol number n contains a pointer into the string table which is +larger than the size of the string table. +

+ +GDB circumvents the problem by considering the symbol to have the +name foo, which may cause other problems if many symbols end up +with this name. +

+ +

unknown symbol type 0xnn +

+ +The symbol information contains new data types that GDB does +not yet know how to read. 0xnn is the symbol type of the +uncomprehended information, in hexadecimal. +

+ +GDB circumvents the error by ignoring this symbol information. +This usually allows you to debug your program, though certain symbols +are not accessible. If you encounter such a problem and feel like +debugging it, you can debug gdb with itself, breakpoint +on complain, then go up to the function read_dbx_symtab +and examine *bufp to see the symbol. +

+ +

stub type has NULL name +

+ +GDB could not find the full definition for a struct or class. +

+ +

const/volatile indicator missing (ok if using g++ v1.x), got... +
The symbol information for a C++ member function is missing some +information that recent versions of the compiler should have output for +it. +

+ +

info mismatch between compiler and debugger +

+ +GDB could not parse a type specification output by the compiler. +

+ +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_17.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_17.html new file mode 100644 index 0000000..d7dbf01 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_17.html @@ -0,0 +1,451 @@ + + + + + +Debugging with GDB: Targets + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

16. Specifying a Debugging Target

+ +

+ + +A target is the execution environment occupied by your program. +

+ +Often, GDB runs in the same host environment as your program; +in that case, the debugging target is specified as a side effect when +you use the file or core commands. When you need more +flexibility--for example, running GDB on a physically separate +host, or controlling a standalone system over a serial port or a +realtime system over a TCP/IP connection--you can use the target +command to specify one of the target types configured for GDB +(see section Commands for Managing Targets). +

+ + +It is possible to build GDB for several different target +architectures. When GDB is built like that, you can choose +one of the available architectures with the set architecture +command. +

+ +

+ + +
set architecture arch +
This command sets the current target architecture to arch. The +value of arch can be "auto", in addition to one of the +supported architectures. +

+ +

show architecture +
Show the current target architecture. +

+ +

set processor +
processor +
+ +These are alias commands for, respectively, set architecture +and show architecture. +
+

+ +

+ + + +
16.1 Active Targets  Active targets
16.2 Commands for Managing Targets  Commands for managing targets
16.3 Choosing Target Byte Order  Choosing target byte order
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

16.1 Active Targets

+ +

+ + + + +

+ +There are three classes of targets: processes, core files, and +executable files. GDB can work concurrently on up to three +active targets, one in each class. This allows you to (for example) +start a process and inspect its activity without abandoning your work on +a core file. +

+ +For example, if you execute `gdb a.out', then the executable file +a.out is the only active target. If you designate a core file as +well--presumably from a prior run that crashed and coredumped--then +GDB has two active targets and uses them in tandem, looking +first in the corefile target, then in the executable file, to satisfy +requests for memory addresses. (Typically, these two classes of target +are complementary, since core files contain only a program's +read-write memory--variables and so on--plus machine status, while +executable files contain only the program text and initialized data.) +

+ +When you type run, your executable file becomes an active process +target as well. When a process target is active, all GDB +commands requesting memory addresses refer to that target; addresses in +an active core file or executable file target are obscured while the +process target is active. +

+ +Use the core-file and exec-file commands to select a new +core file or executable target (see section Commands to Specify Files). To specify as a target a process that is already running, use +the attach command (see section Debugging an Already-running Process). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

16.2 Commands for Managing Targets

+ +

+ +

+
target type parameters +
Connects the GDB host environment to a target machine or +process. A target is typically a protocol for talking to debugging +facilities. You use the argument type to specify the type or +protocol of the target machine. +

+ +Further parameters are interpreted by the target protocol, but +typically include things like device names or host names to connect +with, process numbers, and baud rates. +

+ +The target command does not repeat if you press RET again +after executing the command. +

+ + +

help target +
Displays the names of all targets available. To display targets +currently selected, use either info target or info files +(see section Commands to Specify Files). +

+ +

help target name +
Describe a particular target, including any parameters necessary to +select it. +

+ + +

set gnutarget args +
GDB uses its own library BFD to read your files. GDB +knows whether it is reading an executable, +a core, or a .o file; however, you can specify the file format +with the set gnutarget command. Unlike most target commands, +with gnutarget the target refers to a program, not a machine. +

+ +

+Warning: To specify a file format with set gnutarget, +you must know the actual BFD name. +
+

+ +See section Commands to Specify Files. +

+ + +

show gnutarget +
Use the show gnutarget command to display what file format +gnutarget is set to read. If you have not set gnutarget, +GDB will determine the file format for each file automatically, +and show gnutarget displays `The current BDF target is "auto"'. +
+

+ + +Here are some common targets (available, or not, depending on the GDB +configuration): +

+ +

+ +
target exec program +
+An executable file. `target exec program' is the same as +`exec-file program'. +

+ +

target core filename +
+A core dump file. `target core filename' is the same as +`core-file filename'. +

+ +

target remote medium +
+A remote system connected to GDB via a serial line or network +connection. This command tells GDB to use its own remote +protocol over medium for debugging. See section 17. Debugging Remote Programs. +

+ +For example, if you have a board connected to `/dev/ttya' on the +machine running GDB, you could say: +

+ +
 
target remote /dev/ttya
+

+ +target remote supports the load command. This is only +useful if you have some other way of getting the stub to the target +system, and you can put it somewhere in memory where it won't get +clobbered by the download. +

+ +

target sim +
+Builtin CPU simulator. GDB includes simulators for most architectures. +In general, +
 
        target sim
+        load
+        run
+
works; however, you cannot assume that a specific memory map, device +drivers, or even basic I/O is available, although some simulators do +provide these. For info about any processor-specific simulator details, +see the appropriate section in Embedded Processors. +

+ +

+

+ +Some configurations may include these targets as well: +

+ +

+ +
target nrom dev +
+NetROM ROM emulator. This target only supports downloading. +

+ +

+

+ +Different targets are available on different configurations of GDB; +your configuration may have more or fewer targets. +

+ +Many remote targets require you to download the executable's code once +you've successfully established a connection. You may wish to control +various aspects of this process. +

+ +

+ +
set hash +
+ +This command controls whether a hash mark `#' is displayed while +downloading a file to the remote monitor. If on, a hash mark is +displayed after each S-record is successfully downloaded to the +monitor. +

+ +

show hash +
+Show the current status of displaying the hash mark. +

+ +

set debug monitor +
+ +Enable or disable display of communications messages between +GDB and the remote monitor. +

+ +

show debug monitor +
+Show the current status of displaying communications between +GDB and the remote monitor. +
+

+ +

+ + +
load filename +
Depending on what remote debugging facilities are configured into +GDB, the load command may be available. Where it exists, it +is meant to make filename (an executable) available for debugging +on the remote system--by downloading, or dynamic linking, for example. +load also records the filename symbol table in GDB, like +the add-symbol-file command. +

+ +If your GDB does not have a load command, attempting to +execute it gets the error message "You can't do that when your +target is ..." +

+ +The file is loaded at whatever address is specified in the executable. +For some object file formats, you can specify the load address when you +link the program; for other formats, like a.out, the object file format +specifies a fixed address. +

+ +Depending on the remote side capabilities, GDB may be able to +load programs into flash memory. +

+ +load does not repeat if you press RET again after using it. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

16.3 Choosing Target Byte Order

+ +

+ + + +

+ +Some types of processors, such as the MIPS, PowerPC, and Renesas SH, +offer the ability to run either big-endian or little-endian byte +orders. Usually the executable or symbol will include a bit to +designate the endian-ness, and you will not need to worry about +which to use. However, you may still find it useful to adjust +GDB's idea of processor endian-ness manually. +

+ +

+ +
set endian big +
Instruct GDB to assume the target is big-endian. +

+ +

set endian little +
Instruct GDB to assume the target is little-endian. +

+ +

set endian auto +
Instruct GDB to use the byte order associated with the +executable. +

+ +

show endian +
Display GDB's current idea of the target byte order. +

+ +

+

+ +Note that these commands merely adjust interpretation of symbolic +data on the host, and that they have absolutely no effect on the +target system. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_18.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_18.html new file mode 100644 index 0000000..888607f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_18.html @@ -0,0 +1,1346 @@ + + + + + +Debugging with GDB: Remote Debugging + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17. Debugging Remote Programs

+ +

+ +If you are trying to debug a program running on a machine that cannot run +GDB in the usual way, it is often useful to use remote debugging. +For example, you might use remote debugging on an operating system kernel, +or on a small system which does not have a general purpose operating system +powerful enough to run a full-featured debugger. +

+ +Some configurations of GDB have special serial or TCP/IP interfaces +to make this work with particular debugging targets. In addition, +GDB comes with a generic serial protocol (specific to GDB, +but not specific to any particular target system) which you can use if you +write the remote stubs--the code that runs on the remote system to +communicate with GDB. +

+ +Other remote targets may be available in your +configuration of GDB; use help target to list them. +

+ +

+ + + + + +
17.1 Connecting to a Remote Target  Connecting to a remote target
17.2 Sending files to a remote system  
17.3 Using the gdbserver Program  Using the gdbserver program
17.4 Remote Configuration  Remote configuration
17.5 Implementing a Remote Stub  Implementing a remote stub
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.1 Connecting to a Remote Target

+ +

+ +On the GDB host machine, you will need an unstripped copy of +your program, since GDB needs symbol and debugging information. +Start up GDB as usual, using the name of the local copy of your +program as the first argument. +

+ + +GDB can communicate with the target over a serial line, or +over an IP network using TCP or UDP. In +each case, GDB uses the same protocol for debugging your +program; only the medium carrying the debugging packets varies. The +target remote command establishes a connection to the target. +Its arguments indicate which medium to use: +

+ +

+ +
target remote serial-device +
+Use serial-device to communicate with the target. For example, +to use a serial line connected to the device named `/dev/ttyb': +

+ +
 
target remote /dev/ttyb
+

+ +If you're using a serial line, you may want to give GDB the +`--baud' option, or use the set remotebaud command +(see section set remotebaud) before the +target command. +

+ +

target remote host:port +
target remote tcp:host:port +
+Debug using a TCP connection to port on host. +The host may be either a host name or a numeric IP +address; port must be a decimal number. The host could be +the target machine itself, if it is directly connected to the net, or +it might be a terminal server which in turn has a serial line to the +target. +

+ +For example, to connect to port 2828 on a terminal server named +manyfarms: +

+ +
 
target remote manyfarms:2828
+

+ +If your remote target is actually running on the same machine as your +debugger session (e.g. a simulator for your target running on the +same host), you can omit the hostname. For example, to connect to +port 1234 on your local machine: +

+ +
 
target remote :1234
+

+ +Note that the colon is still required here. +

+ +

target remote udp:host:port +
+Debug using UDP packets to port on host. For example, to +connect to UDP port 2828 on a terminal server named manyfarms: +

+ +
 
target remote udp:manyfarms:2828
+

+ +When using a UDP connection for remote debugging, you should +keep in mind that the `U' stands for "Unreliable". UDP +can silently drop packets on busy or unreliable networks, which will +cause havoc with your debugging session. +

+ +

target remote | command +
+Run command in the background and communicate with it using a +pipe. The command is a shell command, to be parsed and expanded +by the system's command shell, /bin/sh; it should expect remote +protocol packets on its standard input, and send replies on its +standard output. You could use this to run a stand-alone simulator +that speaks the remote debugging protocol, to make net connections +using programs like ssh, or for other similar tricks. +

+ +If command closes its standard output (perhaps by exiting), +GDB will try to send it a SIGTERM signal. (If the +program has already exited, this will have no effect.) +

+ +

+

+ +Once the connection has been established, you can use all the usual +commands to examine and change data and to step and continue the +remote program. +

+ + + +Whenever GDB is waiting for the remote program, if you type the +interrupt character (often Ctrl-c), GDB attempts to stop the +program. This may or may not succeed, depending in part on the hardware +and the serial drivers the remote system uses. If you type the +interrupt character once again, GDB displays this prompt: +

+ +
 
Interrupted while waiting for the program.
+Give up (and stop debugging it)?  (y or n)
+

+ +If you type y, GDB abandons the remote debugging session. +(If you decide you want to try again later, you can use `target +remote' again to connect once more.) If you type n, GDB +goes back to waiting. +

+ +

+ +
detach +
When you have finished debugging the remote program, you can use the +detach command to release it from GDB control. +Detaching from the target normally resumes its execution, but the results +will depend on your particular remote stub. After the detach +command, GDB is free to connect to another target. +

+ + +

disconnect +
The disconnect command behaves like detach, except that +the target is generally not resumed. It will wait for GDB +(this instance or another one) to connect and continue debugging. After +the disconnect command, GDB is again free to connect to +another target. +

+ + + + + +

monitor cmd +
This command allows you to send arbitrary commands directly to the +remote monitor. Since GDB doesn't care about the commands it +sends like this, this command is the way to extend GDB---you +can add new commands that only the external monitor will understand +and implement. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.2 Sending files to a remote system

+ +

+ +Some remote targets offer the ability to transfer files over the same +connection used to communicate with GDB. This is convenient +for targets accessible through other means, e.g. GNU/Linux systems +running gdbserver over a network interface. For other targets, +e.g. embedded devices with only a single serial port, this may be +the only way to upload or download files. +

+ +Not all remote targets support these commands. +

+ +

+ +
remote put hostfile targetfile +
Copy file hostfile from the host system (the machine running +GDB) to targetfile on the target system. +

+ + +

remote get targetfile hostfile +
Copy file targetfile from the target system to hostfile +on the host system. +

+ + +

remote delete targetfile +
Delete targetfile from the target system. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.3 Using the gdbserver Program

+ +

+ + + +gdbserver is a control program for Unix-like systems, which +allows you to connect your program with a remote GDB via +target remote---but without linking in the usual debugging stub. +

+ +gdbserver is not a complete replacement for the debugging stubs, +because it requires essentially the same operating-system facilities +that GDB itself does. In fact, a system that can run +gdbserver to connect to a remote GDB could also run +GDB locally! gdbserver is sometimes useful nevertheless, +because it is a much smaller program than GDB itself. It is +also easier to port than all of GDB, so you may be able to get +started more quickly on a new system by using gdbserver. +Finally, if you develop code for real-time systems, you may find that +the tradeoffs involved in real-time operation make it more convenient to +do as much development work as possible on another system, for example +by cross-compiling. You can use gdbserver to make a similar +choice for debugging. +

+ +GDB and gdbserver communicate via either a serial line +or a TCP connection, using the standard GDB remote serial +protocol. +

+ +

+Warning: gdbserver does not have any built-in security. +Do not run gdbserver connected to any public network; a +GDB connection to gdbserver provides access to the +target system with the same privileges as the user running +gdbserver. +
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.3.1 Running gdbserver

+ +

+ +Run gdbserver on the target system. You need a copy of the +program you want to debug, including any libraries it requires. +gdbserver does not need your program's symbol table, so you can +strip the program if necessary to save space. GDB on the host +system does all the symbol handling. +

+ +To use the server, you must tell it how to communicate with GDB; +the name of your program; and the arguments for your program. The usual +syntax is: +

+ +
 
target> gdbserver comm program [ args ... ]
+

+ +comm is either a device name (to use a serial line) or a TCP +hostname and portnumber. For example, to debug Emacs with the argument +`foo.txt' and communicate with GDB over the serial port +`/dev/com1': +

+ +
 
target> gdbserver /dev/com1 emacs foo.txt
+

+ +gdbserver waits passively for the host GDB to communicate +with it. +

+ +To use a TCP connection instead of a serial line: +

+ +
 
target> gdbserver host:2345 emacs foo.txt
+

+ +The only difference from the previous example is the first argument, +specifying that you are communicating with the host GDB via +TCP. The `host:2345' argument means that gdbserver is to +expect a TCP connection from machine `host' to local TCP port 2345. +(Currently, the `host' part is ignored.) You can choose any number +you want for the port number as long as it does not conflict with any +TCP ports already in use on the target system (for example, 23 is +reserved for telnet).(7) You must use the same port number with the host GDB +target remote command. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.3.1.1 Attaching to a Running Program

+ +

+ +On some targets, gdbserver can also attach to running programs. +This is accomplished via the --attach argument. The syntax is: +

+ +
 
target> gdbserver --attach comm pid
+

+ +pid is the process ID of a currently running process. It isn't necessary +to point gdbserver at a binary for the running process. +

+ + + +You can debug processes by name instead of process ID if your target has the +pidof utility: +

+ +
 
target> gdbserver --attach comm `pidof program`
+

+ +In case more than one copy of program is running, or program +has multiple threads, most versions of pidof support the +-s option to only return the first process ID. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.3.1.2 Multi-Process Mode for gdbserver

+ +

+ +When you connect to gdbserver using target remote, +gdbserver debugs the specified program only once. When the +program exits, or you detach from it, GDB closes the connection +and gdbserver exits. +

+ +If you connect using target extended-remote, gdbserver +enters multi-process mode. When the debugged program exits, or you +detach from it, GDB stays connected to gdbserver even +though no program is running. The run and attach +commands instruct gdbserver to run or attach to a new program. +The run command uses set remote exec-file (see set remote exec-file) to select the program to run. Command line +arguments are supported, except for wildcard expansion and I/O +redirection (see section 4.3 Your Program's Arguments). +

+ +To start gdbserver without supplying an initial command to run +or process ID to attach, use the `--multi' command line option. +Then you can connect using target extended-remote and start +the program you want to debug. +

+ +gdbserver does not automatically exit in multi-process mode. +You can terminate it by using monitor exit +(see Monitor Commands for gdbserver). +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.3.1.3 Other Command-Line Arguments for gdbserver

+ +

+ +You can include `--debug' on the gdbserver command line. +gdbserver will display extra status information about the debugging +process. This option is intended for gdbserver development and +for bug reports to the developers. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.3.2 Connecting to gdbserver

+ +

+ +Run GDB on the host system. +

+ +First make sure you have the necessary symbol files. Load symbols for +your application using the file command before you connect. Use +set sysroot to locate target libraries (unless your GDB +was compiled with the correct sysroot using --with-sysroot). +

+ +The symbol file and target libraries must exactly match the executable +and libraries on the target, with one exception: the files on the host +system should not be stripped, even if the files on the target system +are. Mismatched or missing files will lead to confusing results +during debugging. On GNU/Linux targets, mismatched or missing +files may also prevent gdbserver from debugging multi-threaded +programs. +

+ +Connect to your target (see section Connecting to a Remote Target). +For TCP connections, you must start up gdbserver prior to using +the target remote command. Otherwise you may get an error whose +text depends on the host system, but which usually looks something like +`Connection refused'. Don't use the load +command in GDB when using gdbserver, since the program is +already on the target. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.3.3 Monitor Commands for gdbserver

+ + +

+ +During a GDB session using gdbserver, you can use the +monitor command to send special requests to gdbserver. +Here are the available commands. +

+ +

+
monitor help +
List the available monitor commands. +

+ +

monitor set debug 0 +
monitor set debug 1 +
Disable or enable general debugging messages. +

+ +

monitor set remote-debug 0 +
monitor set remote-debug 1 +
Disable or enable specific debugging messages associated with the remote +protocol (see section D. GDB Remote Serial Protocol). +

+ +

monitor exit +
Tell gdbserver to exit immediately. This command should be followed by +disconnect to close the debugging session. gdbserver will +detach from any attached processes and kill any processes it created. +Use monitor exit to terminate gdbserver at the end +of a multi-process mode debug session. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.4 Remote Configuration

+ +

+ + + +This section documents the configuration options available when +debugging remote programs. For the options related to the File I/O +extensions of the remote protocol, see system-call-allowed. +

+ +

+
set remoteaddresssize bits +
+ +Set the maximum size of address in a memory packet to the specified +number of bits. GDB will mask off the address bits above +that number, when it passes addresses to the remote target. The +default value is the number of bits in the target's address. +

+ +

show remoteaddresssize +
Show the current value of remote address size in bits. +

+ +

set remotebaud n +
+Set the baud rate for the remote serial I/O to n baud. The +value is used to set the speed of the serial port used for debugging +remote targets. +

+ +

show remotebaud +
Show the current speed of the remote connection. +

+ +

set remotebreak +
+ + +If set to on, GDB sends a BREAK signal to the remote +when you type Ctrl-c to interrupt the program running +on the remote. If set to off, GDB sends the `Ctrl-C' +character instead. The default is off, since most remote systems +expect to see `Ctrl-C' as the interrupt signal. +

+ +

show remotebreak +
Show whether GDB sends BREAK or `Ctrl-C' to +interrupt the remote program. +

+ +

set remoteflow on +
set remoteflow off +
+Enable or disable hardware flow control (RTS/CTS) +on the serial port used to communicate to the remote target. +

+ +

show remoteflow +
+Show the current setting of hardware flow control. +

+ +

set remotelogbase base +
Set the base (a.k.a. radix) of logging serial protocol +communications to base. Supported values of base are: +ascii, octal, and hex. The default is +ascii. +

+ +

show remotelogbase +
Show the current setting of the radix for logging remote serial +protocol. +

+ +

set remotelogfile file +
+Record remote serial communications on the named file. The +default is not to record at all. +

+ +

show remotelogfile. +
Show the current setting of the file name on which to record the +serial communications. +

+ +

set remotetimeout num +
+ +Set the timeout limit to wait for the remote target to respond to +num seconds. The default is 2 seconds. +

+ +

show remotetimeout +
Show the current number of seconds to wait for the remote target +responses. +

+ + + + + +

set remote hardware-watchpoint-limit limit +
set remote hardware-breakpoint-limit limit +
Restrict GDB to using limit remote hardware breakpoint or +watchpoints. A limit of -1, the default, is treated as unlimited. +

+ +

set remote exec-file filename +
show remote exec-file +
+ +Select the file used for run with target +extended-remote. This should be set to a filename valid on the +target system. If it is not set, the target will use a default +filename (e.g. the last program run). +
+

+ + +The GDB remote protocol autodetects the packets supported by +your debugging stub. If you need to override the autodetection, you +can use these commands to enable or disable individual packets. Each +packet can be set to `on' (the remote target supports this +packet), `off' (the remote target does not support this packet), +or `auto' (detect remote target support for this packet). They +all default to `auto'. For more information about each packet, +see D. GDB Remote Serial Protocol. +

+ +During normal use, you should not have to use any of these commands. +If you do, that may be a bug in your remote debugging stub, or a bug +in GDB. You may want to report the problem to the +GDB developers. +

+ +For each packet name, the command to enable or disable the +packet is set remote name-packet. The available settings +are: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Command Name Remote Packet + Related Features + +
fetch-register p + info registers + +
set-register P + set + +
binary-download X + load, set + +
read-aux-vector qXfer:auxv:read + info auxv + +
symbol-lookup qSymbol + Detecting multiple threads + +
attach vAttach + attach + +
verbose-resume vCont + Stepping or resuming multiple threads + +
run vRun + run + +
software-breakpoint Z0 + break + +
hardware-breakpoint Z1 + hbreak + +
write-watchpoint Z2 + watch + +
read-watchpoint Z3 + rwatch + +
access-watchpoint Z4 + awatch + +
target-features qXfer:features:read + set architecture + +
library-info qXfer:libraries:read + info sharedlibrary + +
memory-map qXfer:memory-map:read + info mem + +
read-spu-object qXfer:spu:read + info spu + +
write-spu-object qXfer:spu:write + info spu + +
get-thread-local-
storage-address
qGetTLSAddr + Displaying __thread variables + +
supported-packets qSupported + Remote communications parameters + +
pass-signals QPassSignals + handle signal + +
hostio-close-packet vFile:close + remote get, remote put + +
hostio-open-packet vFile:open + remote get, remote put + +
hostio-pread-packet vFile:pread + remote get, remote put + +
hostio-pwrite-packet vFile:pwrite + remote get, remote put + +
hostio-unlink-packet vFile:unlink + remote delete +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.5 Implementing a Remote Stub

+ +

+ + + + +The stub files provided with GDB implement the target side of the +communication protocol, and the GDB side is implemented in the +GDB source file `remote.c'. Normally, you can simply allow +these subroutines to communicate, and ignore the details. (If you're +implementing your own stub file, you can still ignore the details: start +with one of the existing stub files. `sparc-stub.c' is the best +organized, and therefore the easiest to read.) +

+ + +To debug a program running on another machine (the debugging +target machine), you must first arrange for all the usual +prerequisites for the program to run by itself. For example, for a C +program, you need: +

+ +

    +
  1. +A startup routine to set up the C runtime environment; these usually +have a name like `crt0'. The startup routine may be supplied by +your hardware supplier, or you may have to write your own. +

    + +

  2. +A C subroutine library to support your program's +subroutine calls, notably managing input and output. +

    + +

  3. +A way of getting your program to the other machine--for example, a +download program. These are often supplied by the hardware +manufacturer, but you may have to write your own from hardware +documentation. +
+

+ +The next step is to arrange for your program to use a serial port to +communicate with the machine where GDB is running (the host +machine). In general terms, the scheme looks like this: +

+ +

+
On the host, +
GDB already understands how to use this protocol; when everything +else is set up, you can simply use the `target remote' command +(see section Specifying a Debugging Target). +

+ +

On the target, +
you must link with your program a few special-purpose subroutines that +implement the GDB remote serial protocol. The file containing these +subroutines is called a debugging stub. +

+ +On certain remote targets, you can use an auxiliary program +gdbserver instead of linking a stub into your program. +See section Using the gdbserver Program, for details. +

+

+ +The debugging stub is specific to the architecture of the remote +machine; for example, use `sparc-stub.c' to debug programs on +SPARC boards. +

+ + +These working remote stubs are distributed with GDB: +

+ +

+ +
i386-stub.c +
+ + +For Intel 386 and compatible architectures. +

+ +

m68k-stub.c +
+ + +For Motorola 680x0 architectures. +

+ +

sh-stub.c +
+ + +For Renesas SH architectures. +

+ +

sparc-stub.c +
+ +For SPARC architectures. +

+ +

sparcl-stub.c +
+ + +For Fujitsu SPARCLITE architectures. +

+ +

+

+ +The `README' file in the GDB distribution may list other +recently added stubs. +

+ +

+ + + +
17.5.1 What the Stub Can Do for You  What the stub can do for you
17.5.2 What You Must Do for the Stub  What you must do for the stub
17.5.3 Putting it All Together  Putting it all together
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.5.1 What the Stub Can Do for You

+ +

+ + +The debugging stub for your architecture supplies these three +subroutines: +

+ +

+
set_debug_traps +
+ +This routine arranges for handle_exception to run when your +program stops. You must call this subroutine explicitly near the +beginning of your program. +

+ +

handle_exception +
+ +This is the central workhorse, but your program never calls it +explicitly--the setup code arranges for handle_exception to +run when a trap is triggered. +

+ +handle_exception takes control when your program stops during +execution (for example, on a breakpoint), and mediates communications +with GDB on the host machine. This is where the communications +protocol is implemented; handle_exception acts as the GDB +representative on the target machine. It begins by sending summary +information on the state of your program, then continues to execute, +retrieving and transmitting any information GDB needs, until you +execute a GDB command that makes your program resume; at that point, +handle_exception returns control to your own code on the target +machine. +

+ +

breakpoint +
+Use this auxiliary subroutine to make your program contain a +breakpoint. Depending on the particular situation, this may be the only +way for GDB to get control. For instance, if your target +machine has some sort of interrupt button, you won't need to call this; +pressing the interrupt button transfers control to +handle_exception---in effect, to GDB. On some machines, +simply receiving characters on the serial port may also trigger a trap; +again, in that situation, you don't need to call breakpoint from +your own program--simply running `target remote' from the host +GDB session gets control. +

+ +Call breakpoint if none of these is true, or if you simply want +to make certain your program stops at a predetermined point for the +start of your debugging session. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.5.2 What You Must Do for the Stub

+ +

+ + +The debugging stubs that come with GDB are set up for a particular +chip architecture, but they have no information about the rest of your +debugging target machine. +

+ +First of all you need to tell the stub how to communicate with the +serial port. +

+ +

+
int getDebugChar() +
+Write this subroutine to read a single character from the serial port. +It may be identical to getchar for your target system; a +different name is used to allow you to distinguish the two if you wish. +

+ +

void putDebugChar(int) +
+Write this subroutine to write a single character to the serial port. +It may be identical to putchar for your target system; a +different name is used to allow you to distinguish the two if you wish. +
+

+ + + +If you want GDB to be able to stop your program while it is +running, you need to use an interrupt-driven serial driver, and arrange +for it to stop when it receives a ^C (`\003', the control-C +character). That is the character which GDB uses to tell the +remote system to stop. +

+ +Getting the debugging target to return the proper status to GDB +probably requires changes to the standard stub; one quick and dirty way +is to just execute a breakpoint instruction (the "dirty" part is that +GDB reports a SIGTRAP instead of a SIGINT). +

+ +Other routines you need to supply are: +

+ +

+
void exceptionHandler (int exception_number, void *exception_address) +
+Write this function to install exception_address in the exception +handling tables. You need to do this because the stub does not have any +way of knowing what the exception handling tables on your target system +are like (for example, the processor's table might be in ROM, +containing entries which point to a table in RAM). +exception_number is the exception number which should be changed; +its meaning is architecture-dependent (for example, different numbers +might represent divide by zero, misaligned access, etc). When this +exception occurs, control should be transferred directly to +exception_address, and the processor state (stack, registers, +and so on) should be just as it is when a processor exception occurs. So if +you want to use a jump instruction to reach exception_address, it +should be a simple jump, not a jump to subroutine. +

+ +For the 386, exception_address should be installed as an interrupt +gate so that interrupts are masked while the handler runs. The gate +should be at privilege level 0 (the most privileged level). The +SPARC and 68k stubs are able to mask interrupts themselves without +help from exceptionHandler. +

+ +

void flush_i_cache() +
+On SPARC and SPARCLITE only, write this subroutine to flush the +instruction cache, if any, on your target machine. If there is no +instruction cache, this subroutine may be a no-op. +

+ +On target machines that have instruction caches, GDB requires this +function to make certain that the state of your program is stable. +

+

+ +You must also make sure this library routine is available: +

+ +

+
void *memset(void *, int, int) +
+This is the standard library function memset that sets an area of +memory to a known value. If you have one of the free versions of +libc.a, memset can be found there; otherwise, you must +either obtain it from your hardware manufacturer, or write your own. +
+

+ +If you do not use the GNU C compiler, you may need other standard +library subroutines as well; this varies from one stub to another, +but in general the stubs are likely to use any of the common library +subroutines which GCC generates as inline code. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

17.5.3 Putting it All Together

+ +

+ + +In summary, when your program is ready to debug, you must follow these +steps. +

+ +

    +
  1. +Make sure you have defined the supporting low-level routines +(see section What You Must Do for the Stub): +
     
    getDebugChar, putDebugChar,
    +flush_i_cache, memset, exceptionHandler.
    +

    + +

  2. +Insert these lines near the top of your program: +

    + +
     
    set_debug_traps();
    +breakpoint();
    +

    + +

  3. +For the 680x0 stub only, you need to provide a variable called +exceptionHook. Normally you just use: +

    + +
     
    void (*exceptionHook)() = 0;
    +

    + +but if before calling set_debug_traps, you set it to point to a +function in your program, that function is called when +GDB continues after stopping on a trap (for example, bus +error). The function indicated by exceptionHook is called with +one parameter: an int which is the exception number. +

    + +

  4. +Compile and link together: your program, the GDB debugging stub for +your target architecture, and the supporting subroutines. +

    + +

  5. +Make sure you have a serial connection between your target machine and +the GDB host, and identify the serial port on the host. +

    + +

  6. +Download your program to your target machine (or get it there by +whatever means the manufacturer provides), and start it. +

    + +

  7. +Start GDB on the host, and connect to the target +(see section Connecting to a Remote Target). +

    + +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_19.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_19.html new file mode 100644 index 0000000..356a6c8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_19.html @@ -0,0 +1,3053 @@ + + + + + +Debugging with GDB: Configurations + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18. Configuration-Specific Information

+ +

+ +While nearly all GDB commands are available for all native and +cross versions of the debugger, there are some exceptions. This chapter +describes things that are only available in certain configurations. +

+ +There are three major categories of configurations: native +configurations, where the host and target are the same, embedded +operating system configurations, which are usually the same for several +different processor architectures, and bare embedded processors, which +are quite different from each other. +

+ +

+ + + + +
18.1 Native  
18.2 Embedded Operating Systems  
18.3 Embedded Processors  
18.4 Architectures  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1 Native

+ +

+ +This section describes details specific to particular native +configurations. +

+ +

+ + + + + + + +
18.1.1 HP-UX  
18.1.2 BSD libkvm Interface  Debugging BSD kernel memory images
18.1.3 SVR4 Process Information  SVR4 process information
18.1.4 Features for Debugging DJGPP Programs  Features specific to the DJGPP port
18.1.5 Features for Debugging MS Windows PE Executables  Features specific to the Cygwin port
18.1.6 Commands Specific to GNU Hurd Systems  Features specific to GNU Hurd
18.1.7 QNX Neutrino  Features specific to QNX Neutrino
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.1 HP-UX

+ +

+ +On HP-UX systems, if you refer to a function or variable name that +begins with a dollar sign, GDB searches for a user or system +name first, before it searches for a convenience variable. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.2 BSD libkvm Interface

+ +

+ + + + +

+ +BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory +interface that provides a uniform interface for accessing kernel virtual +memory images, including live systems and crash dumps. GDB +uses this interface to allow you to debug live kernels and kernel crash +dumps on many native BSD configurations. This is implemented as a +special kvm debugging target. For debugging a live system, load +the currently running kernel into GDB and connect to the +kvm target: +

+ +
 
(gdb) target kvm
+

+ +For debugging crash dumps, provide the file name of the crash dump as an +argument: +

+ +
 
(gdb) target kvm /var/crash/bsd.0
+

+ +Once connected to the kvm target, the following commands are +available: +

+ +

+ +
kvm pcb +
Set current context from the Process Control Block (PCB) address. +

+ +

kvm proc +
Set current context from proc address. This command isn't available on +modern FreeBSD systems. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.3 SVR4 Process Information

+ +

+ +Many versions of SVR4 and compatible systems provide a facility called +`/proc' that can be used to examine the image of a running +process using file-system subroutines. If GDB is configured +for an operating system with this facility, the command info +proc is available to report information about the process running +your program, or about any process running on your system. info +proc works only on SVR4 systems that include the procfs code. +This includes, as of this writing, GNU/Linux, OSF/1 (Digital +Unix), Solaris, Irix, and Unixware, but not HP-UX, for example. +

+ +

+ + +
info proc +
info proc process-id +
Summarize available information about any running process. If a +process ID is specified by process-id, display information about +that process; otherwise display information about the program being +debugged. The summary includes the debugged process ID, the command +line used to invoke it, its current working directory, and its +executable file's absolute file name. +

+ +On some systems, process-id can be of the form +`[pid]/tid' which specifies a certain thread ID +within a process. If the optional pid part is missing, it means +a thread from the process being debugged (the leading `/' still +needs to be present, or else GDB will interpret the number as +a process ID rather than a thread ID). +

+ +

info proc mappings +
+Report the memory address space ranges accessible in the program, with +information on whether the process has read, write, or execute access +rights to each range. On GNU/Linux systems, each memory range +includes the object file which is mapped to that range, instead of the +memory access rights to that range. +

+ +

info proc stat +
info proc status +
+These subcommands are specific to GNU/Linux systems. They show +the process-related information, including the user ID and group ID; +how many threads are there in the process; its virtual memory usage; +the signals that are pending, blocked, and ignored; its TTY; its +consumption of system and user time; its stack size; its `nice' +value; etc. For more information, see the `proc' man page +(type man 5 proc from your shell prompt). +

+ +

info proc all +
Show all the information about the process described under all of the +above info proc subcommands. +

+ +

set procfs-trace +
+ +This command enables and disables tracing of procfs API calls. +

+ +

show procfs-trace +
+Show the current state of procfs API call tracing. +

+ +

set procfs-file file +
+Tell GDB to write procfs API trace to the named +file. GDB appends the trace info to the previous +contents of the file. The default is to display the trace on the +standard output. +

+ +

show procfs-file +
+Show the file to which procfs API trace is written. +

+ +

proc-trace-entry +
proc-trace-exit +
proc-untrace-entry +
proc-untrace-exit +
+ + + +These commands enable and disable tracing of entries into and exits +from the syscall interface. +

+ +

info pidlist +
+ +For QNX Neutrino only, this command displays the list of all the +processes and all the threads within each process. +

+ +

info meminfo +
+ +For QNX Neutrino only, this command displays the list of all mapinfos. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.4 Features for Debugging DJGPP Programs

+ +

+ + +DJGPP is a port of the GNU development tools to MS-DOS and +MS-Windows. DJGPP programs are 32-bit protected-mode programs +that use the DPMI (DOS Protected-Mode Interface) API to run on +top of real-mode DOS systems and their emulations. +

+ +GDB supports native debugging of DJGPP programs, and +defines a few commands specific to the DJGPP port. This +subsection describes those commands. +

+ +

+ +
info dos +
This is a prefix of DJGPP-specific commands which print +information about the target system and important OS structures. +

+ + + + +

info dos sysinfo +
This command displays assorted information about the underlying +platform: the CPU type and features, the OS version and flavor, the +DPMI version, and the available conventional and DPMI memory. +

+ + + + + + +

info dos gdt +
info dos ldt +
info dos idt +
These 3 commands display entries from, respectively, Global, Local, +and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor +tables are data structures which store a descriptor for each segment +that is currently in use. The segment's selector is an index into a +descriptor table; the table entry for that index holds the +descriptor's base address and limit, and its attributes and access +rights. +

+ +A typical DJGPP program uses 3 segments: a code segment, a data +segment (used for both data and the stack), and a DOS segment (which +allows access to DOS/BIOS data structures and absolute addresses in +conventional memory). However, the DPMI host will usually define +additional segments in order to support the DPMI environment. +

+ + +These commands allow to display entries from the descriptor tables. +Without an argument, all entries from the specified table are +displayed. An argument, which should be an integer expression, means +display a single entry whose index is given by the argument. For +example, here's a convenient way to display information about the +debugged program's data segment: +

+ +
 
(gdb) info dos ldt $ds
+0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)
+

+ +This comes in handy when you want to see whether a pointer is outside +the data segment's limit (i.e. garbled). +

+ + +

info dos pde +
info dos pte +
These two commands display entries from, respectively, the Page +Directory and the Page Tables. Page Directories and Page Tables are +data structures which control how virtual memory addresses are mapped +into physical addresses. A Page Table includes an entry for every +page of memory that is mapped into the program's address space; there +may be several Page Tables, each one holding up to 4096 entries. A +Page Directory has up to 4096 entries, one each for every Page Table +that is currently in use. +

+ +Without an argument, info dos pde displays the entire Page +Directory, and info dos pte displays all the entries in all of +the Page Tables. An argument, an integer expression, given to the +info dos pde command means display only that entry from the Page +Directory table. An argument given to the info dos pte command +means display entries from a single Page Table, the one pointed to by +the specified entry in the Page Directory. +

+ + +These commands are useful when your program uses DMA (Direct +Memory Access), which needs physical addresses to program the DMA +controller. +

+ +These commands are supported only with some DPMI servers. +

+ + +

info dos address-pte addr +
This command displays the Page Table entry for a specified linear +address. The argument addr is a linear address which should +already have the appropriate segment's base address added to it, +because this command accepts addresses which may belong to any +segment. For example, here's how to display the Page Table entry for +the page where a variable i is stored: +

+ +
 
(gdb) info dos address-pte __djgpp_base_address + (char *)&i
+Page Table entry for address 0x11a00d30:
+Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30
+

+ +This says that i is stored at offset 0xd30 from the page +whose physical base address is 0x02698000, and shows all the +attributes of that page. +

+ +Note that you must cast the addresses of variables to a char *, +since otherwise the value of __djgpp_base_address, the base +address of all variables and functions in a DJGPP program, will +be added using the rules of C pointer arithmetics: if i is +declared an int, GDB will add 4 times the value of +__djgpp_base_address to the address of i. +

+ +Here's another example, it displays the Page Table entry for the +transfer buffer: +

+ +
 
(gdb) info dos address-pte *((unsigned *)&_go32_info_block + 3)
+Page Table entry for address 0x29110:
+Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110
+

+ +(The + 3 offset is because the transfer buffer's address is the +3rd member of the _go32_info_block structure.) The output +clearly shows that this DPMI server maps the addresses in conventional +memory 1:1, i.e. the physical (0x00029000 + 0x110) and +linear (0x29110) addresses are identical. +

+ +This command is supported only with some DPMI servers. +

+

+ + +In addition to native debugging, the DJGPP port supports remote +debugging via a serial data link. The following commands are specific +to remote serial debugging in the DJGPP port of GDB. +

+ +

+ + + + + + + + +
set com1base addr +
This command sets the base I/O port address of the `COM1' serial +port. +

+ +

set com1irq irq +
This command sets the Interrupt Request (IRQ) line to use +for the `COM1' serial port. +

+ +There are similar commands `set com2base', `set com3irq', +etc. for setting the port address and the IRQ lines for the +other 3 COM ports. +

+ + + + + + + + + +The related commands `show com1base', `show com1irq' etc. +display the current settings of the base address and the IRQ +lines used by the COM ports. +

+ +

info serial +
+ +This command prints the status of the 4 DOS serial ports. For each +port, it prints whether it's active or not, its I/O base address and +IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the +counts of various errors encountered so far. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.5 Features for Debugging MS Windows PE Executables

+ +

+ +GDB supports native debugging of MS Windows programs, including +DLLs with and without symbolic debugging information. There are various +additional Cygwin-specific commands, described in this section. +Working with DLLs that have no debugging symbols is described in +18.1.5.1 Support for DLLs without Debugging Symbols. +

+ +

+ +
info w32 +
This is a prefix of MS Windows-specific commands which print +information about the target system and important OS structures. +

+ +

info w32 selector +
This command displays information returned by +the Win32 API GetThreadSelectorEntry function. +It takes an optional argument that is evaluated to +a long value to give the information about this given selector. +Without argument, this command displays information +about the six segment registers. +

+ + +

info dll +
This is a Cygwin-specific alias of info shared. +

+ + +

dll-symbols +
This command loads symbols from a dll similarly to +add-sym command but without the need to specify a base address. +

+ + + + +

set cygwin-exceptions mode +
If mode is on, GDB will break on exceptions that +happen inside the Cygwin DLL. If mode is off, +GDB will delay recognition of exceptions, and may ignore some +exceptions which seem to be caused by internal Cygwin DLL +"bookkeeping". This option is meant primarily for debugging the +Cygwin DLL itself; the default value is off to avoid annoying +GDB users with false SIGSEGV signals. +

+ + +

show cygwin-exceptions +
Displays whether GDB will break on exceptions that happen +inside the Cygwin DLL itself. +

+ + +

set new-console mode +
If mode is on the debuggee will +be started in a new console on next start. +If mode is offi, the debuggee will +be started in the same console as the debugger. +

+ + +

show new-console +
Displays whether a new console is used +when the debuggee is started. +

+ + +

set new-group mode +
This boolean value controls whether the debuggee should +start a new group or stay in the same group as the debugger. +This affects the way the Windows OS handles +`Ctrl-C'. +

+ + +

show new-group +
Displays current value of new-group boolean. +

+ + +

set debugevents +
This boolean value adds debug output concerning kernel events related +to the debuggee seen by the debugger. This includes events that +signal thread and process creation and exit, DLL loading and +unloading, console interrupts, and debugging messages produced by the +Windows OutputDebugString API call. +

+ + +

set debugexec +
This boolean value adds debug output concerning execute events +(such as resume thread) seen by the debugger. +

+ + +

set debugexceptions +
This boolean value adds debug output concerning exceptions in the +debuggee seen by the debugger. +

+ + +

set debugmemory +
This boolean value adds debug output concerning debuggee memory reads +and writes by the debugger. +

+ + +

set shell +
This boolean values specifies whether the debuggee is called +via a shell or directly (default value is on). +

+ + +

show shell +
Displays if the debuggee will be started with a shell. +

+ +

+

+ +

+ +
18.1.5.1 Support for DLLs without Debugging Symbols  Support for DLLs without debugging symbols
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.5.1 Support for DLLs without Debugging Symbols

+ +

+ +Very often on windows, some of the DLLs that your program relies on do +not include symbolic debugging information (for example, +`kernel32.dll'). When GDB doesn't recognize any debugging +symbols in a DLL, it relies on the minimal amount of symbolic +information contained in the DLL's export table. This section +describes working with such symbols, known internally to GDB as +"minimal symbols". +

+ +Note that before the debugged program has started execution, no DLLs +will have been loaded. The easiest way around this problem is simply to +start the program -- either by setting a breakpoint or letting the +program run once to completion. It is also possible to force +GDB to load a particular DLL before starting the executable --- +see the shared library information in 15.1 Commands to Specify Files, or the +dll-symbols command in 18.1.5 Features for Debugging MS Windows PE Executables. Currently, +explicitly loading symbols from a DLL with no debugging information will +cause the symbol names to be duplicated in GDB's lookup table, +which may adversely affect symbol lookup performance. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.5.2 DLL Name Prefixes

+ +

+ +In keeping with the naming conventions used by the Microsoft debugging +tools, DLL export symbols are made available with a prefix based on the +DLL name, for instance KERNEL32!CreateFileA. The plain name is +also entered into the symbol table, so CreateFileA is often +sufficient. In some cases there will be name clashes within a program +(particularly if the executable itself includes full debugging symbols) +necessitating the use of the fully qualified name when referring to the +contents of the DLL. Use single-quotes around the name to avoid the +exclamation mark ("!") being interpreted as a language operator. +

+ +Note that the internal name of the DLL may be all upper-case, even +though the file name of the DLL is lower-case, or vice-versa. Since +symbols within GDB are case-sensitive this may cause +some confusion. If in doubt, try the info functions and +info variables commands or even maint print msymbols +(see section 13. Examining the Symbol Table). Here's an example: +

+ +
 
(gdb) info function CreateFileA
+All functions matching regular expression "CreateFileA":
+
+Non-debugging symbols:
+0x77e885f4  CreateFileA
+0x77e885f4  KERNEL32!CreateFileA
+

+ +
 
(gdb) info function !
+All functions matching regular expression "!":
+
+Non-debugging symbols:
+0x6100114c  cygwin1!__assert
+0x61004034  cygwin1!_dll_crt0@0
+0x61004240  cygwin1!dll_crt0(per_process *)
+[etc...]
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.5.3 Working with Minimal Symbols

+ +

+ +Symbols extracted from a DLL's export table do not contain very much +type information. All that GDB can do is guess whether a symbol +refers to a function or variable depending on the linker section that +contains the symbol. Also note that the actual contents of the memory +contained in a DLL are not available unless the program is running. This +means that you cannot examine the contents of a variable or disassemble +a function within a DLL without a running program. +

+ +Variables are generally treated as pointers and dereferenced +automatically. For this reason, it is often necessary to prefix a +variable name with the address-of operator ("&") and provide explicit +type information in the command. Here's an example of the type of +problem: +

+ +
 
(gdb) print 'cygwin1!__argv'
+$1 = 268572168
+

+ +
 
(gdb) x 'cygwin1!__argv'
+0x10021610:      "\230y\""
+

+ +And two possible solutions: +

+ +
 
(gdb) print ((char **)'cygwin1!__argv')[0]
+$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
+

+ +
 
(gdb) x/2x &'cygwin1!__argv'
+0x610c0aa8 <cygwin1!__argv>:    0x10021608      0x00000000
+(gdb) x/x 0x10021608
+0x10021608:     0x0022fd98
+(gdb) x/s 0x0022fd98
+0x22fd98:        "/cygdrive/c/mydirectory/myprogram"
+

+ +Setting a break point within a DLL is possible even before the program +starts execution. However, under these circumstances, GDB can't +examine the initial instructions of the function in order to skip the +function's frame set-up code. You can work around this by using "*&" +to set the breakpoint at a raw memory address: +

+ +
 
(gdb) break *&'python22!PyOS_Readline'
+Breakpoint 1 at 0x1e04eff0
+

+ +The author of these extensions is not entirely convinced that setting a +break point within a shared DLL like `kernel32.dll' is completely +safe. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.6 Commands Specific to GNU Hurd Systems

+ +

+ +This subsection describes GDB commands specific to the +GNU Hurd native debugging. +

+ +

+
set signals +
set sigs +
+ +This command toggles the state of inferior signal interception by +GDB. Mach exceptions, such as breakpoint traps, are not +affected by this command. sigs is a shorthand alias for +signals. +

+ +

show signals +
show sigs +
+ +Show the current state of intercepting inferior's signals. +

+ +

set signal-thread +
set sigthread +
+ +This command tells GDB which thread is the libc signal +thread. That thread is run when a signal is delivered to a running +process. set sigthread is the shorthand alias of set +signal-thread. +

+ +

show signal-thread +
show sigthread +
+ +These two commands show which thread will run when the inferior is +delivered a signal. +

+ +

set stopped +
+This commands tells GDB that the inferior process is stopped, +as with the SIGSTOP signal. The stopped process can be +continued by delivering a signal to it. +

+ +

show stopped +
+This command shows whether GDB thinks the debuggee is +stopped. +

+ +

set exceptions +
+Use this command to turn off trapping of exceptions in the inferior. +When exception trapping is off, neither breakpoints nor +single-stepping will work. To restore the default, set exception +trapping on. +

+ +

show exceptions +
+Show the current state of trapping exceptions in the inferior. +

+ +

set task pause +
+ + +This command toggles task suspension when GDB has control. +Setting it to on takes effect immediately, and the task is suspended +whenever GDB gets control. Setting it to off will take +effect the next time the inferior is continued. If this option is set +to off, you can use set thread default pause on or set +thread pause on (see below) to pause individual threads. +

+ +

show task pause +
+Show the current state of task suspension. +

+ +

set task detach-suspend-count +
+ +This command sets the suspend count the task will be left with when +GDB detaches from it. +

+ +

show task detach-suspend-count +
Show the suspend count the task will be left with when detaching. +

+ +

set task exception-port +
set task excp +
+This command sets the task exception port to which GDB will +forward exceptions. The argument should be the value of the send +rights of the task. set task excp is a shorthand alias. +

+ +

set noninvasive +
+This command switches GDB to a mode that is the least +invasive as far as interfering with the inferior is concerned. This +is the same as using set task pause, set exceptions, and +set signals to values opposite to the defaults. +

+ +

info send-rights +
info receive-rights +
info port-rights +
info port-sets +
info dead-names +
info ports +
info psets +
+ + + + +These commands display information about, respectively, send rights, +receive rights, port rights, port sets, and dead names of a task. +There are also shorthand aliases: info ports for info +port-rights and info psets for info port-sets. +

+ +

set thread pause +
+ + +This command toggles current thread suspension when GDB has +control. Setting it to on takes effect immediately, and the current +thread is suspended whenever GDB gets control. Setting it to +off will take effect the next time the inferior is continued. +Normally, this command has no effect, since when GDB has +control, the whole task is suspended. However, if you used set +task pause off (see above), this command comes in handy to suspend +only the current thread. +

+ +

show thread pause +
+This command shows the state of current thread suspension. +

+ +

set thread run +
This command sets whether the current thread is allowed to run. +

+ +

show thread run +
Show whether the current thread is allowed to run. +

+ +

set thread detach-suspend-count +
+ +This command sets the suspend count GDB will leave on a +thread when detaching. This number is relative to the suspend count +found by GDB when it notices the thread; use set thread +takeover-suspend-count to force it to an absolute value. +

+ +

show thread detach-suspend-count +
Show the suspend count GDB will leave on the thread when +detaching. +

+ +

set thread exception-port +
set thread excp +
Set the thread exception port to which to forward exceptions. This +overrides the port set by set task exception-port (see above). +set thread excp is the shorthand alias. +

+ +

set thread takeover-suspend-count +
Normally, GDB's thread suspend counts are relative to the +value GDB finds when it notices each thread. This command +changes the suspend counts to be absolute instead. +

+ +

set thread default +
show thread default +
+Each of the above set thread commands has a set thread +default counterpart (e.g., set thread default pause, set +thread default exception-port, etc.). The thread default +variety of commands sets the default thread properties for all +threads; you can then change the properties of individual threads with +the non-default commands. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.1.7 QNX Neutrino

+ +

+ +GDB provides the following commands specific to the QNX +Neutrino target: +

+ +

+
set debug nto-debug +
+When set to on, enables debugging messages specific to the QNX +Neutrino support. +

+ +

show debug nto-debug +
+Show the current state of QNX Neutrino messages. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.2 Embedded Operating Systems

+ +

+ +This section describes configurations involving the debugging of +embedded operating systems that are available for several different +architectures. +

+ +

+ +
18.2.1 Using GDB with VxWorks  
+

+ +GDB includes the ability to debug programs running on +various real-time operating systems. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.2.1 Using GDB with VxWorks

+ +

+ + +

+ +

+ + +
target vxworks machinename +
A VxWorks system, attached via TCP/IP. The argument machinename +is the target system's machine name or IP address. +

+ +

+

+ +On VxWorks, load links filename dynamically on the +current target system as well as adding its symbols in GDB. +

+ +GDB enables developers to spawn and debug tasks running on networked +VxWorks targets from a Unix host. Already-running tasks spawned from +the VxWorks shell can also be debugged. GDB uses code that runs on +both the Unix host and on the VxWorks target. The program +gdb is installed and executed on the Unix host. (It may be +installed with the name vxgdb, to distinguish it from a +GDB for debugging programs on the host itself.) +

+ +

+
VxWorks-timeout args +
+All VxWorks-based targets now support the option vxworks-timeout. +This option is set by the user, and args represents the number of +seconds GDB waits for responses to rpc's. You might use this if +your VxWorks target is a slow software simulator or is on the far side +of a thin network line. +
+

+ +The following information on connecting to VxWorks was current when +this manual was produced; newer releases of VxWorks may use revised +procedures. +

+ + +To use GDB with VxWorks, you must rebuild your VxWorks kernel +to include the remote debugging interface routines in the VxWorks +library `rdb.a'. To do this, define INCLUDE_RDB in the +VxWorks configuration file `configAll.h' and rebuild your VxWorks +kernel. The resulting kernel contains `rdb.a', and spawns the +source debugging task tRdbTask when VxWorks is booted. For more +information on configuring and remaking VxWorks, see the manufacturer's +manual. +

+ +Once you have included `rdb.a' in your VxWorks system image and set +your Unix execution search path to find GDB, you are ready to +run GDB. From your Unix host, run gdb (or +vxgdb, depending on your installation). +

+ +GDB comes up showing the prompt: +

+ +
 
(vxgdb)
+

+ +

+ + + +
18.2.1.1 Connecting to VxWorks  
18.2.1.2 VxWorks Download  VxWorks download
18.2.1.3 Running Tasks  Running tasks
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.2.1.1 Connecting to VxWorks

+ +

+ +The GDB command target lets you connect to a VxWorks target on the +network. To connect to a target whose host name is "tt", type: +

+ +
 
(vxgdb) target vxworks tt
+

+ +GDB displays messages like these: +

+ +
 
Attaching remote machine across net...
+Connected to tt.
+

+ +GDB then attempts to read the symbol tables of any object modules +loaded into the VxWorks target since it was last booted. GDB locates +these files by searching the directories listed in the command search +path (see section Your Program's Environment); if it fails +to find an object file, it displays a message such as: +

+ +
 
prog.o: No such file or directory.
+

+ +When this happens, add the appropriate directory to the search path with +the GDB command path, and execute the target +command again. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.2.1.2 VxWorks Download

+ +

+ + +If you have connected to the VxWorks target and you want to debug an +object that has not yet been loaded, you can use the GDB +load command to download a file from Unix to VxWorks +incrementally. The object file given as an argument to the load +command is actually opened twice: first by the VxWorks target in order +to download the code, then by GDB in order to read the symbol +table. This can lead to problems if the current working directories on +the two systems differ. If both systems have NFS mounted the same +filesystems, you can avoid these problems by using absolute paths. +Otherwise, it is simplest to set the working directory on both systems +to the directory in which the object file resides, and then to reference +the file by its name, without any path. For instance, a program +`prog.o' may reside in `vxpath/vw/demo/rdb' in VxWorks +and in `hostpath/vw/demo/rdb' on the host. To load this +program, type this on VxWorks: +

+ +
 
-> cd "vxpath/vw/demo/rdb"
+

+ +Then, in GDB, type: +

+ +
 
(vxgdb) cd hostpath/vw/demo/rdb
+(vxgdb) load prog.o
+

+ +GDB displays a response similar to this: +

+ +
 
Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
+

+ +You can also use the load command to reload an object module +after editing and recompiling the corresponding source file. Note that +this makes GDB delete all currently-defined breakpoints, +auto-displays, and convenience variables, and to clear the value +history. (This is necessary in order to preserve the integrity of +debugger's data structures that reference the target system's symbol +table.) +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.2.1.3 Running Tasks

+ +

+ + +You can also attach to an existing task using the attach command as +follows: +

+ +
 
(vxgdb) attach task
+

+ +where task is the VxWorks hexadecimal task ID. The task can be running +or suspended when you attach to it. Running tasks are suspended at +the time of attachment. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3 Embedded Processors

+ +

+ +This section goes into details specific to particular embedded +configurations. +

+ + +Whenever a specific embedded processor has a simulator, GDB +allows to send an arbitrary command to the simulator. +

+ +

+
sim command +
+Send an arbitrary command string to the simulator. Consult the +documentation for the specific simulator in use for information about +acceptable commands. +
+

+ +

+ + + + + + + + + + + + + +
18.3.1 ARM  ARM RDI
18.3.2 Renesas M32R/D and M32R/SDI  Renesas M32R/D
18.3.3 M68k  Motorola M68K
18.3.4 MIPS Embedded  
18.3.5 OpenRISC 1000  OpenRisc 1000
18.3.7 HP PA Embedded  
18.3.6 PowerPC Embedded  
18.3.8 Tsqware Sparclet  
18.3.9 Fujitsu Sparclite  
18.3.10 Zilog Z8000  
18.3.11 Atmel AVR  
18.3.12 CRIS  
18.3.13 Renesas Super-H  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.1 ARM

+ +

+ +

+ +
target rdi dev +
ARM Angel monitor, via RDI library interface to ADP protocol. You may +use this target to communicate with both boards running the Angel +monitor, or with the EmbeddedICE JTAG debug device. +

+ + +

target rdp dev +
ARM Demon monitor. +

+ +

+

+ +GDB provides the following ARM-specific commands: +

+ +

+
set arm disassembler +
+This commands selects from a list of disassembly styles. The +"std" style is the standard style. +

+ +

show arm disassembler +
+Show the current disassembly style. +

+ +

set arm apcs32 +
+This command toggles ARM operation mode between 32-bit and 26-bit. +

+ +

show arm apcs32 +
Display the current usage of the ARM 32-bit mode. +

+ +

set arm fpu fputype +
This command sets the ARM floating-point unit (FPU) type. The +argument fputype can be one of these: +

+ +

+
auto +
Determine the FPU type by querying the OS ABI. +
softfpa +
Software FPU, with mixed-endian doubles on little-endian ARM +processors. +
fpa +
GCC-compiled FPA co-processor. +
softvfp +
Software FPU with pure-endian doubles. +
vfp +
VFP co-processor. +
+

+ +

show arm fpu +
Show the current type of the FPU. +

+ +

set arm abi +
This command forces GDB to use the specified ABI. +

+ +

show arm abi +
Show the currently used ABI. +

+ +

set debug arm +
Toggle whether to display ARM-specific debugging messages from the ARM +target support subsystem. +

+ +

show debug arm +
Show whether ARM-specific debugging messages are enabled. +
+

+ +The following commands are available when an ARM target is debugged +using the RDI interface: +

+ +

+
rdilogfile [file] +
+ +Set the filename for the ADP (Angel Debugger Protocol) packet log. +With an argument, sets the log file to the specified file. With +no argument, show the current log file name. The default log file is +`rdi.log'. +

+ +

rdilogenable [arg] +
+Control logging of ADP packets. With an argument of 1 or "yes" +enables logging, with an argument 0 or "no" disables it. With +no arguments displays the current setting. When logging is enabled, +ADP packets exchanged between GDB and the RDI target device +are logged to a file. +

+ +

set rdiromatzero +
+ +Tell GDB whether the target has ROM at address 0. If on, +vector catching is disabled, so that zero address can be used. If off +(the default), vector catching is enabled. For this command to take +effect, it needs to be invoked prior to the target rdi command. +

+ +

show rdiromatzero +
+Show the current setting of ROM at zero address. +

+ +

set rdiheartbeat +
+ +Enable or disable RDI heartbeat packets. It is not recommended to +turn on this option, since it confuses ARM and EPI JTAG interface, as +well as the Angel monitor. +

+ +

show rdiheartbeat +
+Show the setting of RDI heartbeat packets. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.2 Renesas M32R/D and M32R/SDI

+ +

+ +

+ +
target m32r dev +
Renesas M32R/D ROM monitor. +

+ + +

target m32rsdi dev +
Renesas M32R SDI server, connected via parallel port to the board. +
+

+ +The following GDB commands are specific to the M32R monitor: +

+ +

+
set download-path path +
+ +Set the default path for finding downloadable SREC files. +

+ +

show download-path +
+Show the default path for downloadable SREC files. +

+ +

set board-address addr +
+ +Set the IP address for the M32R-EVA target board. +

+ +

show board-address +
+Show the current IP address of the target board. +

+ +

set server-address addr +
+ +Set the IP address for the download server, which is the GDB's +host machine. +

+ +

show server-address +
+Display the IP address of the download server. +

+ +

upload [file] +
+Upload the specified SREC file via the monitor's Ethernet +upload capability. If no file argument is given, the current +executable file is uploaded. +

+ +

tload [file] +
+Test the upload command. +
+

+ +The following commands are available for M32R/SDI: +

+ +

+
sdireset +
+ +This command resets the SDI connection. +

+ +

sdistatus +
+This command shows the SDI connection status. +

+ +

debug_chaos +
+ +Instructs the remote that M32R/Chaos debugging is to be used. +

+ +

use_debug_dma +
+Instructs the remote to use the DEBUG_DMA method of accessing memory. +

+ +

use_mon_code +
+Instructs the remote to use the MON_CODE method of accessing memory. +

+ +

use_ib_break +
+Instructs the remote to set breakpoints by IB break. +

+ +

use_dbt_break +
+Instructs the remote to set breakpoints by DBT. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.3 M68k

+ +

+ +The Motorola m68k configuration includes ColdFire support, and a +target command for the following ROM monitor. +

+ +

+ + +
target dbug dev +
dBUG ROM monitor for Motorola ColdFire. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.4 MIPS Embedded

+ +

+ + +GDB can use the MIPS remote debugging protocol to talk to a +MIPS board attached to a serial line. This is available when +you configure GDB with `--target=mips-idt-ecoff'. +

+ +Use these GDB commands to specify the connection to your target board: +

+ +

+
target mips port +
+To run a program on the board, start up gdb with the +name of your program as the argument. To connect to the board, use the +command `target mips port', where port is the name of +the serial port connected to the board. If the program has not already +been downloaded to the board, you may use the load command to +download it. You can then use all the usual GDB commands. +

+ +For example, this sequence connects to the target board through a serial +port, and loads and runs a program called prog through the +debugger: +

+ +
 
host$ gdb prog
+GDB is free software and ...
+(gdb) target mips /dev/ttyb
+(gdb) load prog
+(gdb) run
+

+ +

target mips hostname:portnumber +
On some GDB host configurations, you can specify a TCP +connection (for instance, to a serial line managed by a terminal +concentrator) instead of a serial port, using the syntax +`hostname:portnumber'. +

+ +

target pmon port +
+PMON ROM monitor. +

+ +

target ddb port +
+NEC's DDB variant of PMON for Vr4300. +

+ +

target lsi port +
+LSI variant of PMON. +

+ + +

target r3900 dev +
Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips. +

+ + +

target array dev +
Array Tech LSI33K RAID controller board. +

+ +

+

+ +GDB also supports these special commands for MIPS targets: +

+ +

+
set mipsfpu double +
set mipsfpu single +
set mipsfpu none +
set mipsfpu auto +
show mipsfpu +
+ + + +If your target board does not support the MIPS floating point +coprocessor, you should use the command `set mipsfpu none' (if you +need this, you may wish to put the command in your GDB init +file). This tells GDB how to find the return value of +functions which return floating point values. It also allows +GDB to avoid saving the floating point registers when calling +functions on the board. If you are using a floating point coprocessor +with only single precision floating point support, as on the R4650 +processor, use the command `set mipsfpu single'. The default +double precision floating point coprocessor may be selected using +`set mipsfpu double'. +

+ +In previous versions the only choices were double precision or no +floating point, so `set mipsfpu on' will select double precision +and `set mipsfpu off' will select no floating point. +

+ +As usual, you can inquire about the mipsfpu variable with +`show mipsfpu'. +

+ +

set timeout seconds +
set retransmit-timeout seconds +
show timeout +
show retransmit-timeout +
+ + + + + +You can control the timeout used while waiting for a packet, in the MIPS +remote protocol, with the set timeout seconds command. The +default is 5 seconds. Similarly, you can control the timeout used while +waiting for an acknowledgement of a packet with the set +retransmit-timeout seconds command. The default is 3 seconds. +You can inspect both values with show timeout and show +retransmit-timeout. (These commands are only available when +GDB is configured for `--target=mips-idt-ecoff'.) +

+ +The timeout set by set timeout does not apply when GDB +is waiting for your program to stop. In that case, GDB waits +forever because it has no way of knowing how long the program is going +to run before stopping. +

+ +

set syn-garbage-limit num +
+ +Limit the maximum number of characters GDB should ignore when +it tries to synchronize with the remote target. The default is 10 +characters. Setting the limit to -1 means there's no limit. +

+ +

show syn-garbage-limit +
+Show the current limit on the number of characters to ignore when +trying to synchronize with the remote system. +

+ +

set monitor-prompt prompt +
+ +Tell GDB to expect the specified prompt string from the +remote monitor. The default depends on the target: +
+
pmon target +
`PMON' +
ddb target +
`NEC010' +
lsi target +
`PMON>' +
+

+ +

show monitor-prompt +
+Show the current strings GDB expects as the prompt from the +remote monitor. +

+ +

set monitor-warnings +
+Enable or disable monitor warnings about hardware breakpoints. This +has effect only for the lsi target. When on, GDB will +display warning messages whose codes are returned by the lsi +PMON monitor for breakpoint commands. +

+ +

show monitor-warnings +
+Show the current setting of printing monitor warnings. +

+ +

pmon command +
+ +This command allows sending an arbitrary command string to the +monitor. The monitor must be in debug mode for this to work. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.5 OpenRISC 1000

+ +

+ + +See OR1k Architecture document (www.opencores.org) for more information +about platform and commands. +

+ +

+ + +
target jtag jtag://host:port +

+ +Connects to remote JTAG server. +JTAG remote server can be either an or1ksim or JTAG server, +connected via parallel port to the board. +

+ +Example: target jtag jtag://localhost:9999 +

+ + +

or1ksim command +
If connected to or1ksim OpenRISC 1000 Architectural +Simulator, proprietary commands can be executed. +

+ + +

info or1k spr +
Displays spr groups. +

+ +

info or1k spr group +
info or1k spr groupno +
Displays register names in selected group. +

+ +

info or1k spr group register +
info or1k spr register +
info or1k spr groupno registerno +
info or1k spr registerno +
Shows information about specified spr register. +

+ + +

spr group register value +
spr register value +
spr groupno registerno value +
spr registerno value +
Writes value to specified spr register. +
+

+ +Some implementations of OpenRISC 1000 Architecture also have hardware trace. +It is very similar to GDB trace, except it does not interfere with normal +program execution and is thus much faster. Hardware breakpoints/watchpoint +triggers can be set using: +

+
$LEA/$LDATA +
Load effective address/data +
$SEA/$SDATA +
Store effective address/data +
$AEA/$ADATA +
Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA) +
$FETCH +
Fetch data +
+

+ +When triggered, it can capture low level data, like: PC, LSEA, +LDATA, SDATA, READSPR, WRITESPR, INSTR. +

+ +htrace commands: + +

+ +
hwatch conditional +
Set hardware watchpoint on combination of Load/Store Effective Address(es) +or Data. For example: +

+ +hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50) +

+ +hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50) +

+ + +

htrace info +
Display information about current HW trace configuration. +

+ +

htrace trigger conditional +
Set starting criteria for HW trace. +

+ +

htrace qualifier conditional +
Set acquisition qualifier for HW trace. +

+ +

htrace stop conditional +
Set HW trace stopping criteria. +

+ +

htrace record [data]* +
Selects the data to be recorded, when qualifier is met and HW trace was +triggered. +

+ +

htrace enable +
htrace disable +
Enables/disables the HW trace. +

+ +

htrace rewind [filename] +
Clears currently recorded trace data. +

+ +If filename is specified, new trace file is made and any newly collected data +will be written there. +

+ +

htrace print [start [len]] +
Prints trace buffer, using current record configuration. +

+ +

htrace mode continuous +
Set continuous trace mode. +

+ +

htrace mode suspend +
Set suspend trace mode. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.6 PowerPC Embedded

+ +

+ +GDB provides the following PowerPC-specific commands: +

+ +

+ +
set powerpc soft-float +
show powerpc soft-float +
Force GDB to use (or not use) a software floating point calling +convention. By default, GDB selects the calling convention based +on the selected architecture and the provided executable file. +

+ +

set powerpc vector-abi +
show powerpc vector-abi +
Force GDB to use the specified calling convention for vector +arguments and return values. The valid options are `auto'; +`generic', to avoid vector registers even if they are present; +`altivec', to use AltiVec registers; and `spe' to use SPE +registers. By default, GDB selects the calling convention +based on the selected architecture and the provided executable file. +

+ + +

target dink32 dev +
DINK32 ROM monitor. +

+ + +

target ppcbug dev +
+
target ppcbug1 dev +
PPCBUG ROM monitor for PowerPC. +

+ + +

target sds dev +
SDS monitor, running on a PowerPC board (such as Motorola's ADS). +
+

+ + +The following commands specific to the SDS protocol are supported +by GDB: +

+ +

+
set sdstimeout nsec +
+Set the timeout for SDS protocol reads to be nsec seconds. The +default is 2 seconds. +

+ +

show sdstimeout +
+Show the current value of the SDS timeout. +

+ +

sds command +
+Send the specified command string to the SDS monitor. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.7 HP PA Embedded

+ +

+ +

+ + +
target op50n dev +
OP50N monitor, running on an OKI HPPA board. +

+ + +

target w89k dev +
W89K monitor, running on a Winbond HPPA board. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.8 Tsqware Sparclet

+ +

+ + +

+ +GDB enables developers to debug tasks running on +Sparclet targets from a Unix host. +GDB uses code that runs on +both the Unix host and on the Sparclet target. The program +gdb is installed and executed on the Unix host. +

+ +

+
remotetimeout args +
+GDB supports the option remotetimeout. +This option is set by the user, and args represents the number of +seconds GDB waits for responses. +
+

+ + +When compiling for debugging, include the options `-g' to get debug +information and `-Ttext' to relocate the program to where you wish to +load it on the target. You may also want to add the options `-n' or +`-N' in order to reduce the size of the sections. Example: +

+ +
 
sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
+

+ +You can use objdump to verify that the addresses are what you intended: +

+ +
 
sparclet-aout-objdump --headers --syms prog
+

+ + +Once you have set +your Unix execution search path to find GDB, you are ready to +run GDB. From your Unix host, run gdb +(or sparclet-aout-gdb, depending on your installation). +

+ +GDB comes up showing the prompt: +

+ +
 
(gdbslet)
+

+ +

+ + + + +
18.3.8.1 Setting File to Debug  Setting the file to debug
18.3.8.2 Connecting to Sparclet  
18.3.8.3 Sparclet Download  Sparclet download
18.3.8.4 Running and Debugging  Running and debugging
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.8.1 Setting File to Debug

+ +

+ +The GDB command file lets you choose with program to debug. +

+ +
 
(gdbslet) file prog
+

+ +GDB then attempts to read the symbol table of `prog'. +GDB locates +the file by searching the directories listed in the command search +path. +If the file was compiled with debug information (option `-g'), source +files will be searched as well. +GDB locates +the source files by searching the directories listed in the directory search +path (see section Your Program's Environment). +If it fails +to find a file, it displays a message such as: +

+ +
 
prog: No such file or directory.
+

+ +When this happens, add the appropriate directories to the search paths with +the GDB commands path and dir, and execute the +target command again. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.8.2 Connecting to Sparclet

+ +

+ +The GDB command target lets you connect to a Sparclet target. +To connect to a target on serial port "ttya", type: +

+ +
 
(gdbslet) target sparclet /dev/ttya
+Remote target sparclet connected to /dev/ttya
+main () at ../prog.c:3
+

+ +GDB displays messages like these: +

+ +
 
Connected to ttya.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.8.3 Sparclet Download

+ +

+ + +Once connected to the Sparclet target, +you can use the GDB +load command to download the file from the host to the target. +The file name and load offset should be given as arguments to the load +command. +Since the file format is aout, the program must be loaded to the starting +address. You can use objdump to find out what this value is. The load +offset is an offset which is added to the VMA (virtual memory address) +of each of the file's sections. +For instance, if the program +`prog' was linked to text address 0x1201000, with data at 0x12010160 +and bss at 0x12010170, in GDB, type: +

+ +
 
(gdbslet) load prog 0x12010000
+Loading section .text, size 0xdb0 vma 0x12010000
+

+ +If the code is loaded at a different address then what the program was linked +to, you may need to use the section and add-symbol-file commands +to tell GDB where to map the symbol table. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.8.4 Running and Debugging

+ +

+ + +You can now begin debugging the task using GDB's execution control +commands, b, step, run, etc. See the GDB +manual for the list of commands. +

+ +
 
(gdbslet) b main
+Breakpoint 1 at 0x12010000: file prog.c, line 3.
+(gdbslet) run
+Starting program: prog
+Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
+3        char *symarg = 0;
+(gdbslet) step
+4        char *execarg = "hello!";
+(gdbslet)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.9 Fujitsu Sparclite

+ +

+ +

+ + +
target sparclite dev +
Fujitsu sparclite boards, used only for the purpose of loading. +You must use an additional command to debug the program. +For example: target remote dev using GDB standard +remote protocol. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.10 Zilog Z8000

+ +

+ + + + +

+ +When configured for debugging Zilog Z8000 targets, GDB includes +a Z8000 simulator. +

+ +For the Z8000 family, `target sim' simulates either the Z8002 (the +unsegmented variant of the Z8000 architecture) or the Z8001 (the +segmented variant). The simulator recognizes which architecture is +appropriate by inspecting the object code. +

+ +

+
target sim args +
+ +Debug programs on a simulated CPU. If the simulator supports setup +options, specify them via args. +
+

+ +After specifying this target, you can debug programs for the simulated +CPU in the same style as programs for your host computer; use the +file command to load a new program image, the run command +to run your program, and so on. +

+ +As well as making available all the usual machine registers +(see section Registers), the Z8000 simulator provides three +additional items of information as specially named registers: +

+ +

+ +
cycles +
Counts clock-ticks in the simulator. +

+ +

insts +
Counts instructions run in the simulator. +

+ +

time +
Execution time in 60ths of a second. +

+ +

+

+ +You can refer to these values in GDB expressions with the usual +conventions; for example, `b fputc if $cycles>5000' sets a +conditional breakpoint that suspends only after at least 5000 +simulated clock ticks. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.11 Atmel AVR

+ +

+ +When configured for debugging the Atmel AVR, GDB supports the +following AVR-specific commands: +

+ +

+
info io_registers +
+ +This command displays information about the AVR I/O registers. For +each register, GDB prints its number and value. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.12 CRIS

+ +

+ +When configured for debugging CRIS, GDB provides the +following CRIS-specific commands: +

+ +

+
set cris-version ver +
+Set the current CRIS version to ver, either `10' or `32'. +The CRIS version affects register names and sizes. This command is useful in +case autodetection of the CRIS version fails. +

+ +

show cris-version +
Show the current CRIS version. +

+ +

set cris-dwarf2-cfi +
+Set the usage of DWARF-2 CFI for CRIS debugging. The default is `on'. +Change to `off' when using gcc-cris whose version is below +R59. +

+ +

show cris-dwarf2-cfi +
Show the current state of using DWARF-2 CFI. +

+ +

set cris-mode mode +
+Set the current CRIS mode to mode. It should only be changed when +debugging in guru mode, in which case it should be set to +`guru' (the default is `normal'). +

+ +

show cris-mode +
Show the current CRIS mode. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.3.13 Renesas Super-H

+ +

+ +For the Renesas Super-H processor, GDB provides these +commands: +

+ +

+
regs +
+Show the values of all Super-H registers. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4 Architectures

+ +

+ +This section describes characteristics of architectures that affect +all uses of GDB with the architecture, both native and cross. +

+ +

+ + + + + + + +
18.4.1 x86 Architecture-specific Issues  
18.4.2 A29K  
18.4.3 Alpha  
18.4.4 MIPS  
18.4.5 HPPA  HP PA architecture
18.4.6 Cell Broadband Engine SPU architecture  
18.4.7 PowerPC  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4.1 x86 Architecture-specific Issues

+ +

+ +

+
set struct-convention mode +
+ + +Set the convention used by the inferior to return structs and +unions from functions to mode. Possible values of +mode are "pcc", "reg", and "default" (the +default). "default" or "pcc" means that structs +are returned on the stack, while "reg" means that a +struct or a union whose size is 1, 2, 4, or 8 bytes will +be returned in a register. +

+ +

show struct-convention +
+Show the current setting of the convention to return structs +from functions. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4.2 A29K

+ +

+ +

+ + + + +
set rstack_high_address address +
On AMD 29000 family processors, registers are saved in a separate +register stack. There is no way for GDB to determine the +extent of this stack. Normally, GDB just assumes that the +stack is "large enough". This may result in GDB referencing +memory locations that do not exist. If necessary, you can get around +this problem by specifying the ending address of the register stack with +the set rstack_high_address command. The argument should be an +address, which you probably want to precede with `0x' to specify in +hexadecimal. +

+ + +

show rstack_high_address +
Display the current limit of the register stack, on AMD 29000 family +processors. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4.3 Alpha

+ +

+ +See the following section. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4.4 MIPS

+ +

+ + + + + +Alpha- and MIPS-based computers use an unusual stack frame, which +sometimes requires GDB to search backward in the object code to +find the beginning of a function. +

+ + +To improve response time (especially for embedded applications, where +GDB may be restricted to a slow serial line for this search) +you may want to limit the size of this search, using one of these +commands: +

+ +

+ +
set heuristic-fence-post limit +
Restrict GDB to examining at most limit bytes in its +search for the beginning of a function. A value of 0 (the +default) means there is no limit. However, except for 0, the +larger the limit the more bytes heuristic-fence-post must search +and therefore the longer it takes to run. You should only need to use +this command when debugging a stripped executable. +

+ +

show heuristic-fence-post +
Display the current limit. +
+

+ +These commands are available only when GDB is configured +for debugging programs on Alpha or MIPS processors. +

+ +Several MIPS-specific commands are available when debugging MIPS +programs: +

+ +

+
set mips abi arg +
+ +Tell GDB which MIPS ABI is used by the inferior. Possible +values of arg are: +

+ +

+
`auto' +
The default ABI associated with the current binary (this is the +default). +
`o32' +
`o64' +
`n32' +
`n64' +
`eabi32' +
`eabi64' +
`auto' +
+

+ +

show mips abi +
+Show the MIPS ABI used by GDB to debug the inferior. +

+ +

set mipsfpu +
show mipsfpu +
See section set mipsfpu. +

+ +

set mips mask-address arg +
+ +This command determines whether the most-significant 32 bits of 64-bit +MIPS addresses are masked off. The argument arg can be +`on', `off', or `auto'. The latter is the default +setting, which lets GDB determine the correct value. +

+ +

show mips mask-address +
+Show whether the upper 32 bits of MIPS addresses are masked off or +not. +

+ +

set remote-mips64-transfers-32bit-regs +
+This command controls compatibility with 64-bit MIPS targets that +transfer data in 32-bit quantities. If you have an old MIPS 64 target +that transfers 32 bits for some registers, like SR and FSR, +and 64 bits for other registers, set this option to `on'. +

+ +

show remote-mips64-transfers-32bit-regs +
+Show the current setting of compatibility with older MIPS 64 targets. +

+ +

set debug mips +
+This command turns on and off debugging messages for the MIPS-specific +target code in GDB. +

+ +

show debug mips +
+Show the current setting of MIPS debugging messages. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4.5 HPPA

+ +

+ +When GDB is debugging the HP PA architecture, it provides the +following special commands: +

+ +

+
set debug hppa +
+This command determines whether HPPA architecture-specific debugging +messages are to be displayed. +

+ +

show debug hppa +
Show whether HPPA debugging messages are displayed. +

+ +

maint print unwind address +
+This command displays the contents of the unwind table entry at the +given address. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4.6 Cell Broadband Engine SPU architecture

+ +

+ +When GDB is debugging the Cell Broadband Engine SPU architecture, +it provides the following special commands: +

+ +

+
info spu event +
+Display SPU event facility status. Shows current event mask +and pending event status. +

+ +

info spu signal +
Display SPU signal notification facility status. Shows pending +signal-control word and signal notification mode of both signal +notification channels. +

+ +

info spu mailbox +
Display SPU mailbox facility status. Shows all pending entries, +in order of processing, in each of the SPU Write Outbound, +SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes. +

+ +

info spu dma +
Display MFC DMA status. Shows all pending commands in the MFC +DMA queue. For each entry, opcode, tag, class IDs, effective +and local store addresses and transfer size are shown. +

+ +

info spu proxydma +
Display MFC Proxy-DMA status. Shows all pending commands in the MFC +Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective +and local store addresses and transfer size are shown. +

+ +

+ + +
+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

18.4.7 PowerPC

+ +

+ +When GDB is debugging the PowerPC architecture, it provides a set of +pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point +numbers stored in the floating point registers. These values must be stored +in two consecutive registers, always starting at an even register like +f0 or f2. +

+ +The pseudo-registers go from $dl0 through $dl15, and are formed +by joining the even/odd register pairs f0 and f1 for $dl0, +f2 and f3 for $dl1 and so on. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_2.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_2.html new file mode 100644 index 0000000..b48573c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_2.html @@ -0,0 +1,321 @@ + + + + + +Debugging with GDB: Sample Session + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

1. A Sample GDB Session

+ +

+ +You can use this manual at your leisure to read all about GDB. +However, a handful of commands are enough to get started using the +debugger. This chapter illustrates those commands. +

+ +One of the preliminary versions of GNU m4 (a generic macro +processor) exhibits the following bug: sometimes, when we change its +quote strings from the default, the commands used to capture one macro +definition within another stop working. In the following short m4 +session, we define a macro foo which expands to 0000; we +then use the m4 built-in defn to define bar as the +same thing. However, when we change the open quote string to +<QUOTE> and the close quote string to <UNQUOTE>, the same +procedure fails to define a new synonym baz: +

+ +
 
$ cd gnu/m4
+$ ./m4
+define(foo,0000)
+
+foo
+0000
+define(bar,defn(`foo'))
+
+bar
+0000
+changequote(<QUOTE>,<UNQUOTE>)
+
+define(baz,defn(<QUOTE>foo<UNQUOTE>))
+baz
+Ctrl-d
+m4: End of input: 0: fatal error: EOF in string
+

+ +Let us use GDB to try to see what is going on. +

+ +
 
$ gdb m4
+GDB is free software and you are welcome to distribute copies
+ of it under certain conditions; type "show copying" to see
+ the conditions.
+There is absolutely no warranty for GDB; type "show warranty"
+ for details.
+
+GDB 6.8, Copyright 1999 Free Software Foundation, Inc...
+(gdb)
+

+ +GDB reads only enough symbol data to know where to find the +rest when needed; as a result, the first prompt comes up very quickly. +We now tell GDB to use a narrower display width than usual, so +that examples fit in this manual. +

+ +
 
(gdb) set width 70
+

+ +We need to see how the m4 built-in changequote works. +Having looked at the source, we know the relevant subroutine is +m4_changequote, so we set a breakpoint there with the GDB +break command. +

+ +
 
(gdb) break m4_changequote
+Breakpoint 1 at 0x62f4: file builtin.c, line 879.
+

+ +Using the run command, we start m4 running under GDB +control; as long as control does not reach the m4_changequote +subroutine, the program runs as usual: +

+ +
 
(gdb) run
+Starting program: /work/Editorial/gdb/gnu/m4/m4
+define(foo,0000)
+
+foo
+0000
+

+ +To trigger the breakpoint, we call changequote. GDB +suspends execution of m4, displaying information about the +context where it stops. +

+ +
 
changequote(<QUOTE>,<UNQUOTE>)
+
+Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
+    at builtin.c:879
+879         if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
+

+ +Now we use the command n (next) to advance execution to +the next line of the current function. +

+ +
 
(gdb) n
+882         set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
+ : nil,
+

+ +set_quotes looks like a promising subroutine. We can go into it +by using the command s (step) instead of next. +step goes to the next line to be executed in any +subroutine, so it steps into set_quotes. +

+ +
 
(gdb) s
+set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "")
+    at input.c:530
+530         if (lquote != def_lquote)
+

+ +The display that shows the subroutine where m4 is now +suspended (and its arguments) is called a stack frame display. It +shows a summary of the stack. We can use the backtrace +command (which can also be spelled bt), to see where we are +in the stack as a whole: the backtrace command displays a +stack frame for each active subroutine. +

+ +
 
(gdb) bt
+#0  set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "")
+    at input.c:530
+#1  0x6344 in m4_changequote (argc=3, argv=0x33c70)
+    at builtin.c:882
+#2  0x8174 in expand_macro (sym=0x33320) at macro.c:242
+#3  0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
+    at macro.c:71
+#4  0x79dc in expand_input () at macro.c:40
+#5  0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
+

+ +We step through a few more lines to see what happens. The first two +times, we can use `s'; the next two times we use n to avoid +falling into the xstrdup subroutine. +

+ +
 
(gdb) s
+0x3b5c  532         if (rquote != def_rquote)
+(gdb) s
+0x3b80  535         lquote = (lq == nil || *lq == '\0') ?  \
+def_lquote : xstrdup(lq);
+(gdb) n
+536         rquote = (rq == nil || *rq == '\0') ? def_rquote\
+ : xstrdup(rq);
+(gdb) n
+538         len_lquote = strlen(rquote);
+

+ +The last line displayed looks a little odd; we can examine the variables +lquote and rquote to see if they are in fact the new left +and right quotes we specified. We use the command p +(print) to see their values. +

+ +
 
(gdb) p lquote
+$1 = 0x35d40 "<QUOTE>"
+(gdb) p rquote
+$2 = 0x35d50 "<UNQUOTE>"
+

+ +lquote and rquote are indeed the new left and right quotes. +To look at some context, we can display ten lines of source +surrounding the current line with the l (list) command. +

+ +
 
(gdb) l
+533             xfree(rquote);
+534
+535         lquote = (lq == nil || *lq == '\0') ? def_lquote\
+ : xstrdup (lq);
+536         rquote = (rq == nil || *rq == '\0') ? def_rquote\
+ : xstrdup (rq);
+537
+538         len_lquote = strlen(rquote);
+539         len_rquote = strlen(lquote);
+540     }
+541
+542     void
+

+ +Let us step past the two lines that set len_lquote and +len_rquote, and then examine the values of those variables. +

+ +
 
(gdb) n
+539         len_rquote = strlen(lquote);
+(gdb) n
+540     }
+(gdb) p len_lquote
+$3 = 9
+(gdb) p len_rquote
+$4 = 7
+

+ +That certainly looks wrong, assuming len_lquote and +len_rquote are meant to be the lengths of lquote and +rquote respectively. We can set them to better values using +the p command, since it can print the value of +any expression--and that expression can include subroutine calls and +assignments. +

+ +
 
(gdb) p len_lquote=strlen(lquote)
+$5 = 7
+(gdb) p len_rquote=strlen(rquote)
+$6 = 9
+

+ +Is that enough to fix the problem of using the new quotes with the +m4 built-in defn? We can allow m4 to continue +executing with the c (continue) command, and then try the +example that caused trouble initially: +

+ +
 
(gdb) c
+Continuing.
+
+define(baz,defn(<QUOTE>foo<UNQUOTE>))
+
+baz
+0000
+

+ +Success! The new quotes now work just as well as the default ones. The +problem seems to have been just the two typos defining the wrong +lengths. We allow m4 exit by giving it an EOF as input: +

+ +
 
Ctrl-d
+Program exited normally.
+

+ +The message `Program exited normally.' is from GDB; it +indicates m4 has finished executing. We can end our GDB +session with the GDB quit command. +

+ +
 
(gdb) quit
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_20.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_20.html new file mode 100644 index 0000000..ff9d293 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_20.html @@ -0,0 +1,875 @@ + + + + + +Debugging with GDB: Controlling GDB + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19. Controlling GDB

+ +

+ +You can alter the way GDB interacts with you by using the +set command. For commands controlling how GDB displays +data, see Print Settings. Other settings are +described here. +

+ +

+ + + + + + + + +
19.1 Prompt  
19.2 Command Editing  Command editing
19.3 Command History  Command history
19.4 Screen Size  Screen size
19.5 Numbers  
19.6 Configuring the Current ABI  Configuring the current ABI
19.7 Optional Warnings and Messages  Optional warnings and messages
19.8 Optional Messages about Internal Happenings  Optional messages about internal happenings
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.1 Prompt

+ +

+ + +

+ +GDB indicates its readiness to read a command by printing a string +called the prompt. This string is normally `(gdb)'. You +can change the prompt string with the set prompt command. For +instance, when debugging GDB with GDB, it is useful to change +the prompt in one of the GDB sessions so that you can always tell +which one you are talking to. +

+ +Note: set prompt does not add a space for you after the +prompt you set. This allows you to set a prompt which ends in a space +or a prompt that does not. +

+ +

+ +
set prompt newprompt +
Directs GDB to use newprompt as its prompt string henceforth. +

+ + +

show prompt +
Prints a line of the form: `Gdb's prompt is: your-prompt' +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.2 Command Editing

+ +

+ +GDB reads its input commands via the Readline interface. This +GNU library provides consistent behavior for programs which provide a +command line interface to the user. Advantages are GNU Emacs-style +or vi-style inline editing of commands, csh-like history +substitution, and a storage and recall of command history across +debugging sessions. +

+ +You may control the behavior of command line editing in GDB with the +command set. +

+ +

+ + +
set editing +
set editing on +
Enable command line editing (enabled by default). +

+ +

set editing off +
Disable command line editing. +

+ + +

show editing +
Show whether command line editing is enabled. +
+

+ +See section 27. Command Line Editing, for more details about the Readline +interface. Users unfamiliar with GNU Emacs or vi are +encouraged to read that chapter. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.3 Command History

+ +

+ +GDB can keep track of the commands you type during your +debugging sessions, so that you can be certain of precisely what +happened. Use these commands to manage the GDB command +history facility. +

+ +GDB uses the GNU History library, a part of the Readline +package, to provide the history facility. See section 28. Using History Interactively, for the detailed description of the History library. +

+ +To issue a command to GDB without affecting certain aspects of +the state which is seen by users, prefix it with `server ' +(see section 25.2 The Server Prefix). This +means that this command will not affect the command history, nor will it +affect GDB's notion of which command to repeat if RET is +pressed on a line by itself. +

+ + +The server prefix does not affect the recording of values into the value +history; to print a value without recording it into the value history, +use the output command instead of the print command. +

+ +Here is the description of GDB commands related to command +history. +

+ +

+ + + + +
set history filename fname +
Set the name of the GDB command history file to fname. +This is the file where GDB reads an initial command history +list, and where it writes the command history from this session when it +exits. You can access this list through history expansion or through +the history command editing characters listed below. This file defaults +to the value of the environment variable GDBHISTFILE, or to +`./.gdb_history' (`./_gdb_history' on MS-DOS) if this variable +is not set. +

+ + + +

set history save +
set history save on +
Record command history in a file, whose name may be specified with the +set history filename command. By default, this option is disabled. +

+ +

set history save off +
Stop recording command history in a file. +

+ + + + +

set history size size +
Set the number of commands which GDB keeps in its history list. +This defaults to the value of the environment variable +HISTSIZE, or to 256 if this variable is not set. +
+

+ +History expansion assigns special meaning to the character !. +See section 28.1.1 Event Designators, for more details. +

+ + +Since ! is also the logical not operator in C, history expansion +is off by default. If you decide to enable history expansion with the +set history expansion on command, you may sometimes need to +follow ! (when it is used as logical not, in an expression) with +a space or a tab to prevent it from being expanded. The readline +history facilities do not attempt substitution on the strings +!= and !(, even when history expansion is enabled. +

+ +The commands to control history expansion are: +

+ +

+
set history expansion on +
set history expansion +
+Enable history expansion. History expansion is off by default. +

+ +

set history expansion off +
Disable history expansion. +

+ + +

show history +
show history filename +
show history save +
show history size +
show history expansion +
These commands display the state of the GDB history parameters. +show history by itself displays all four states. +
+

+ +

+ + + +
show commands +
Display the last ten commands in the command history. +

+ +

show commands n +
Print ten commands centered on command number n. +

+ +

show commands + +
Print ten commands just after the commands last printed. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.4 Screen Size

+ +

+ +Certain commands to GDB may produce large amounts of +information output to the screen. To help you read all of it, +GDB pauses and asks you for input at the end of each page of +output. Type RET when you want to continue the output, or q +to discard the remaining output. Also, the screen width setting +determines when to wrap lines of output. Depending on what is being +printed, GDB tries to break the line at a readable place, +rather than simply letting it overflow onto the following line. +

+ +Normally GDB knows the size of the screen from the terminal +driver software. For example, on Unix GDB uses the termcap data base +together with the value of the TERM environment variable and the +stty rows and stty cols settings. If this is not correct, +you can override it with the set height and set +width commands: +

+ +

+ + + + +
set height lpp +
show height +
set width cpl +
show width +
These set commands specify a screen height of lpp lines and +a screen width of cpl characters. The associated show +commands display the current settings. +

+ +If you specify a height of zero lines, GDB does not pause during +output no matter how long the output is. This is useful if output is to a +file or to an editor buffer. +

+ +Likewise, you can specify `set width 0' to prevent GDB +from wrapping its output. +

+ +

set pagination on +
set pagination off +
+Turn the output pagination on or off; the default is on. Turning +pagination off is the alternative to set height 0. +

+ +

show pagination +
+Show the current pagination mode. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.5 Numbers

+ +

+ +You can always enter numbers in octal, decimal, or hexadecimal in +GDB by the usual conventions: octal numbers begin with +`0', decimal numbers end with `.', and hexadecimal numbers +begin with `0x'. Numbers that neither begin with `0' or +`0x', nor end with a `.' are, by default, entered in base +10; likewise, the default display for numbers--when no particular +format is specified--is base 10. You can change the default base for +both input and output with the commands described below. +

+ +

+ +
set input-radix base +
Set the default base for numeric input. Supported choices +for base are decimal 8, 10, or 16. base must itself be +specified either unambiguously or using the current input radix; for +example, any of +

+ +
 
set input-radix 012
+set input-radix 10.
+set input-radix 0xa
+

+ +sets the input base to decimal. On the other hand, `set input-radix 10' +leaves the input radix unchanged, no matter what it was, since +`10', being without any leading or trailing signs of its base, is +interpreted in the current radix. Thus, if the current radix is 16, +`10' is interpreted in hex, i.e. as 16 decimal, which doesn't +change the radix. +

+ + +

set output-radix base +
Set the default base for numeric display. Supported choices +for base are decimal 8, 10, or 16. base must itself be +specified either unambiguously or using the current input radix. +

+ + +

show input-radix +
Display the current default base for numeric input. +

+ + +

show output-radix +
Display the current default base for numeric display. +

+ +

set radix [base] +
show radix +
+ +These commands set and show the default base for both input and output +of numbers. set radix sets the radix of input and output to +the same base; without an argument, it resets the radix back to its +default value of 10. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.6 Configuring the Current ABI

+ +

+ +GDB can determine the ABI (Application Binary Interface) of your +application automatically. However, sometimes you need to override its +conclusions. Use these commands to manage GDB's view of the +current ABI. +

+ + + + +

+ +One GDB configuration can debug binaries for multiple operating +system targets, either via remote debugging or native emulation. +GDB will autodetect the OS ABI (Operating System ABI) in use, +but you can override its conclusion using the set osabi command. +One example where this is useful is in debugging of binaries which use +an alternate C library (e.g. UCLIBC for GNU/Linux) which does +not have the same identifying marks that the standard C library for your +platform provides. +

+ +

+
show osabi +
Show the OS ABI currently in use. +

+ +

set osabi +
With no argument, show the list of registered available OS ABI's. +

+ +

set osabi abi +
Set the current OS ABI to abi. +
+

+ + +

+ +Generally, the way that an argument of type float is passed to a +function depends on whether the function is prototyped. For a prototyped +(i.e. ANSI/ISO style) function, float arguments are passed unchanged, +according to the architecture's convention for float. For unprototyped +(i.e. K&R style) functions, float arguments are first promoted to type +double and then passed. +

+ +Unfortunately, some forms of debug information do not reliably indicate whether +a function is prototyped. If GDB calls a function that is not marked +as prototyped, it consults set coerce-float-to-double. +

+ +

+ +
set coerce-float-to-double +
set coerce-float-to-double on +
Arguments of type float will be promoted to double when passed +to an unprototyped function. This is the default setting. +

+ +

set coerce-float-to-double off +
Arguments of type float will be passed directly to unprototyped +functions. +

+ + +

show coerce-float-to-double +
Show the current setting of promoting float to double. +
+

+ + + +GDB needs to know the ABI used for your program's C++ +objects. The correct C++ ABI depends on which C++ compiler was +used to build your application. GDB only fully supports +programs with a single C++ ABI; if your program contains code using +multiple C++ ABI's or if GDB can not identify your +program's ABI correctly, you can tell GDB which ABI to use. +Currently supported ABI's include "gnu-v2", for g++ versions +before 3.0, "gnu-v3", for g++ versions 3.0 and later, and +"hpaCC" for the HP ANSI C++ compiler. Other C++ compilers may +use the "gnu-v2" or "gnu-v3" ABI's as well. The default setting is +"auto". +

+ +

+
show cp-abi +
Show the C++ ABI currently in use. +

+ +

set cp-abi +
With no argument, show the list of supported C++ ABI's. +

+ +

set cp-abi abi +
set cp-abi auto +
Set the current C++ ABI to abi, or return to automatic detection. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.7 Optional Warnings and Messages

+ +

+ + + +By default, GDB is silent about its inner workings. If you are +running on a slow machine, you may want to use the set verbose +command. This makes GDB tell you when it does a lengthy +internal operation, so you will not think it has crashed. +

+ +Currently, the messages controlled by set verbose are those +which announce that the symbol table for a source file is being read; +see symbol-file in Commands to Specify Files. +

+ +

+ +
set verbose on +
Enables GDB output of certain informational messages. +

+ +

set verbose off +
Disables GDB output of certain informational messages. +

+ + +

show verbose +
Displays whether set verbose is on or off. +
+

+ +By default, if GDB encounters bugs in the symbol table of an +object file, it is silent; but if you are debugging a compiler, you may +find this information useful (see section Errors Reading Symbol Files). +

+ +

+ + +
set complaints limit +
Permits GDB to output limit complaints about each type of +unusual symbols before becoming silent about the problem. Set +limit to zero to suppress all complaints; set it to a large number +to prevent complaints from being suppressed. +

+ + +

show complaints +
Displays how many symbol complaints GDB is permitted to produce. +

+ +

+

+ +By default, GDB is cautious, and asks what sometimes seems to be a +lot of stupid questions to confirm certain commands. For example, if +you try to run a program which is already running: +

+ +
 
(gdb) run
+The program being debugged has been started already.
+Start it from the beginning? (y or n)
+

+ +If you are willing to unflinchingly face the consequences of your own +commands, you can disable this "feature": +

+ +

+ + + + + +
set confirm off +
Disables confirmation requests. +

+ +

set confirm on +
Enables confirmation requests (the default). +

+ + +

show confirm +
Displays state of confirmation requests. +

+ +

+

+ + +If you need to debug user-defined commands or sourced files you may find it +useful to enable command tracing. In this mode each command will be +printed as it is executed, prefixed with one or more `+' symbols, the +quantity denoting the call depth of each command. +

+ +

+ + +
set trace-commands on +
Enable command tracing. +
set trace-commands off +
Disable command tracing. +
show trace-commands +
Display the current state of command tracing. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

19.8 Optional Messages about Internal Happenings

+ +

+ +GDB has commands that enable optional debugging messages from +various GDB subsystems; normally these commands are of +interest to GDB maintainers, or when reporting a bug. This +section documents those commands. +

+ +

+ +
set exec-done-display +
Turns on or off the notification of asynchronous commands' +completion. When on, GDB will print a message when an +asynchronous command finishes its execution. The default is off. + +
show exec-done-display +
Displays the current setting of asynchronous command completion +notification. + + + +
set debug arch +
Turns on or off display of gdbarch debugging info. The default is off + +
show debug arch +
Displays the current state of displaying gdbarch debugging info. +
set debug aix-thread +
+Display debugging messages about inner workings of the AIX thread +module. +
show debug aix-thread +
Show the current state of AIX thread debugging info display. +
set debug event +
+Turns on or off display of GDB event debugging info. The +default is off. +
show debug event +
Displays the current state of displaying GDB event debugging +info. +
set debug expression +
+Turns on or off display of debugging info about GDB +expression parsing. The default is off. +
show debug expression +
Displays the current state of displaying debugging info about +GDB expression parsing. +
set debug frame +
+Turns on or off display of GDB frame debugging info. The +default is off. +
show debug frame +
Displays the current state of displaying GDB frame debugging +info. +
set debug infrun +
+Turns on or off display of GDB debugging info for running the inferior. +The default is off. `infrun.c' contains GDB's runtime state machine used +for implementing operations such as single-stepping the inferior. +
show debug infrun +
Displays the current state of GDB inferior debugging. +
set debug lin-lwp +
+ +Turns on or off debugging messages from the Linux LWP debug support. +
show debug lin-lwp +
Show the current state of Linux LWP debugging messages. +
set debug observer +
+Turns on or off display of GDB observer debugging. This +includes info such as the notification of observable events. +
show debug observer +
Displays the current state of observer debugging. +
set debug overload +
+Turns on or off display of GDB C++ overload debugging +info. This includes info such as ranking of functions, etc. The default +is off. +
show debug overload +
Displays the current state of displaying GDB C++ overload +debugging info. + + + + + +
set debug remote +
Turns on or off display of reports on all packets sent back and forth across +the serial line to the remote machine. The info is printed on the +GDB standard output stream. The default is off. +
show debug remote +
Displays the state of display of remote packets. +
set debug serial +
Turns on or off display of GDB serial debugging info. The +default is off. +
show debug serial +
Displays the current state of displaying GDB serial debugging +info. +
set debug solib-frv +
+Turns on or off debugging messages for FR-V shared-library code. +
show debug solib-frv +
Display the current state of FR-V shared-library code debugging +messages. +
set debug target +
+Turns on or off display of GDB target debugging info. This info +includes what is going on at the target level of GDB, as it happens. The +default is 0. Set it to 1 to track events, and to 2 to also track the +value of large memory transfers. Changes to this flag do not take effect +until the next time you connect to a target or use the run command. +
show debug target +
Displays the current state of displaying GDB target debugging +info. +
set debugvarobj +
+Turns on or off display of GDB variable object debugging +info. The default is off. +
show debugvarobj +
Displays the current state of displaying GDB variable object +debugging info. +
set debug xml +
+Turns on or off debugging messages for built-in XML parsers. +
show debug xml +
Displays the current state of XML debugging messages. +
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_21.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_21.html new file mode 100644 index 0000000..7da047b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_21.html @@ -0,0 +1,634 @@ + + + + + +Debugging with GDB: Sequences + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

20. Canned Sequences of Commands

+ +

+ +Aside from breakpoint commands (see section Breakpoint Command Lists), GDB provides two ways to store sequences of +commands for execution as a unit: user-defined commands and command +files. +

+ +

+ + + + +
20.1 User-defined Commands  How to define your own commands
20.2 User-defined Command Hooks  Hooks for user-defined commands
20.3 Command Files  How to write scripts of commands to be stored in a file
20.4 Commands for Controlled Output  Commands for controlled output
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

20.1 User-defined Commands

+ +

+ + + +A user-defined command is a sequence of GDB commands to +which you assign a new name as a command. This is done with the +define command. User commands may accept up to 10 arguments +separated by whitespace. Arguments are accessed within the user command +via $arg0...$arg9. A trivial example: +

+ +
 
define adder
+  print $arg0 + $arg1 + $arg2
+end
+

+ +To execute the command use: +

+ +
 
adder 1 2 3
+

+ +This defines the command adder, which prints the sum of +its three arguments. Note the arguments are text substitutions, so they may +reference variables, use complex expressions, or even perform inferior +functions calls. +

+ + + +In addition, $argc may be used to find out how many arguments have +been passed. This expands to a number in the range 0...10. +

+ +
 
define adder
+  if $argc == 2
+    print $arg0 + $arg1
+  end
+  if $argc == 3
+    print $arg0 + $arg1 + $arg2
+  end
+end
+

+ +

+ + +
define commandname +
Define a command named commandname. If there is already a command +by that name, you are asked to confirm that you want to redefine it. +

+ +The definition of the command is made up of other GDB command lines, +which are given following the define command. The end of these +commands is marked by a line containing end. +

+ + + +

document commandname +
Document the user-defined command commandname, so that it can be +accessed by help. The command commandname must already be +defined. This command reads lines of documentation just as define +reads the lines of the command definition, ending with end. +After the document command is finished, help on command +commandname displays the documentation you have written. +

+ +You may use the document command again to change the +documentation of a command. Redefining the command with define +does not change the documentation. +

+ + + +

dont-repeat +
Used inside a user-defined command, this tells GDB that this +command should not be repeated when the user hits RET +(see section repeat last command). +

+ + +

help user-defined +
List all user-defined commands, with the first line of the documentation +(if any) for each. +

+ + +

show user +
show user commandname +
Display the GDB commands used to define commandname (but +not its documentation). If no commandname is given, display the +definitions for all user-defined commands. +

+ + + + +

show max-user-call-depth +
set max-user-call-depth +
The value of max-user-call-depth controls how many recursion +levels are allowed in user-defined commands before GDB suspects an +infinite recursion and aborts the command. +
+

+ +In addition to the above commands, user-defined commands frequently +use control flow commands, described in 20.3 Command Files. +

+ +When user-defined commands are executed, the +commands of the definition are not printed. An error in any command +stops execution of the user-defined command. +

+ +If used interactively, commands that would ask for confirmation proceed +without asking when used inside a user-defined command. Many GDB +commands that normally print messages to say what they are doing omit the +messages when used in a user-defined command. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

20.2 User-defined Command Hooks

+ +

+ + +You may define hooks, which are a special kind of user-defined +command. Whenever you run the command `foo', if the user-defined +command `hook-foo' exists, it is executed (with no arguments) +before that command. +

+ + + +A hook may also be defined which is run after the command you executed. +Whenever you run the command `foo', if the user-defined command +`hookpost-foo' exists, it is executed (with no arguments) after +that command. Post-execution hooks may exist simultaneously with +pre-execution hooks, for the same command. +

+ +It is valid for a hook to call the command which it hooks. If this +occurs, the hook is not re-executed, thereby avoiding infinite recursion. +

+ + +In addition, a pseudo-command, `stop' exists. Defining +(`hook-stop') makes the associated commands execute every time +execution stops in your program: before breakpoint commands are run, +displays are printed, or the stack frame is printed. +

+ +For example, to ignore SIGALRM signals while +single-stepping, but treat them normally during normal execution, +you could define: +

+ +
 
define hook-stop
+handle SIGALRM nopass
+end
+
+define hook-run
+handle SIGALRM pass
+end
+
+define hook-continue
+handle SIGALRM pass
+end
+

+ +As a further example, to hook at the beginning and end of the echo +command, and to add extra text to the beginning and end of the message, +you could define: +

+ +
 
define hook-echo
+echo <<<---
+end
+
+define hookpost-echo
+echo --->>>\n
+end
+
+(gdb) echo Hello World
+<<<---Hello World--->>>
+(gdb)
+
+

+ +You can define a hook for any single-word command in GDB, but +not for command aliases; you should define a hook for the basic command +name, e.g. backtrace rather than bt. +If an error occurs during the execution of your hook, execution of +GDB commands stops and GDB issues a prompt +(before the command that you actually typed had a chance to run). +

+ +If you try to define a hook which does not match any known command, you +get a warning from the define command. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

20.3 Command Files

+ +

+ + + +A command file for GDB is a text file made of lines that are +GDB commands. Comments (lines starting with #) may +also be included. An empty line in a command file does nothing; it +does not mean to repeat the last command, as it would from the +terminal. +

+ +You can request the execution of a command file with the source +command: +

+ +

+ + +
source [-v] filename +
Execute the command file filename. +
+

+ +The lines in a command file are generally executed sequentially, +unless the order of execution is changed by one of the +flow-control commands described below. The commands are not +printed as they are executed. An error in any command terminates +execution of the command file and control is returned to the console. +

+ +GDB searches for filename in the current directory and then +on the search path (specified with the `directory' command). +

+ +If -v, for verbose mode, is given then GDB displays +each command as it is executed. The option must be given before +filename, and is interpreted as part of the filename anywhere else. +

+ +Commands that would ask for confirmation if used interactively proceed +without asking when used in a command file. Many GDB commands that +normally print messages to say what they are doing omit the messages +when called from command files. +

+ +GDB also accepts command input from standard input. In this +mode, normal output goes to standard output and error output goes to +standard error. Errors in a command file supplied on standard input do +not terminate execution of the command file--execution continues with +the next command. +

+ +
 
gdb < cmds > log 2>&1
+

+ +(The syntax above will vary depending on the shell used.) This example +will execute commands from the file `cmds'. All output and errors +would be directed to `log'. +

+ +Since commands stored on command files tend to be more general than +commands typed interactively, they frequently need to deal with +complicated situations, such as different or unexpected values of +variables and symbols, changes in how the program being debugged is +built, etc. GDB provides a set of flow-control commands to +deal with these complexities. Using these commands, you can write +complex scripts that loop over data structures, execute commands +conditionally, etc. +

+ +

+ + +
if +
else +
This command allows to include in your script conditionally executed +commands. The if command takes a single argument, which is an +expression to evaluate. It is followed by a series of commands that +are executed only if the expression is true (its value is nonzero). +There can then optionally be an else line, followed by a series +of commands that are only executed if the expression was false. The +end of the list is marked by a line containing end. +

+ + +

while +
This command allows to write loops. Its syntax is similar to +if: the command takes a single argument, which is an expression +to evaluate, and must be followed by the commands to execute, one per +line, terminated by an end. These commands are called the +body of the loop. The commands in the body of while are +executed repeatedly as long as the expression evaluates to true. +

+ + +

loop_break +
This command exits the while loop in whose body it is included. +Execution of the script continues after that whiles end +line. +

+ + +

loop_continue +
This command skips the execution of the rest of the body of commands +in the while loop in whose body it is included. Execution +branches to the beginning of the while loop, where it evaluates +the controlling expression. +

+ + +

end +
Terminate the block of commands that are the body of if, +else, or while flow-control commands. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

20.4 Commands for Controlled Output

+ +

+ +During the execution of a command file or a user-defined command, normal +GDB output is suppressed; the only output that appears is what is +explicitly printed by the commands in the definition. This section +describes three commands useful for generating exactly the output you +want. +

+ +

+ +
echo text +
Print text. Nonprinting characters can be included in +text using C escape sequences, such as `\n' to print a +newline. No newline is printed unless you specify one. +In addition to the standard C escape sequences, a backslash followed +by a space stands for a space. This is useful for displaying a +string with spaces at the beginning or the end, since leading and +trailing spaces are otherwise trimmed from all arguments. +To print ` and foo = ', use the command +`echo \ and foo = \ '. +

+ +A backslash at the end of text can be used, as in C, to continue +the command onto subsequent lines. For example, +

+ +
 
echo This is some text\n\
+which is continued\n\
+onto several lines.\n
+

+ +produces the same output as +

+ +
 
echo This is some text\n
+echo which is continued\n
+echo onto several lines.\n
+

+ + +

output expression +
Print the value of expression and nothing but that value: no +newlines, no `$nn = '. The value is not entered in the +value history either. See section Expressions, for more information +on expressions. +

+ +

output/fmt expression +
Print the value of expression in format fmt. You can use +the same formats as for print. See section Output Formats, for more information. +

+ + +

printf template, expressions... +
Print the values of one or more expressions under the control of +the string template. To print several values, make +expressions be a comma-separated list of individual expressions, +which may be either numbers or pointers. Their values are printed as +specified by template, exactly as a C program would do by +executing the code below: +

+ +
 
printf (template, expressions...);
+

+ +As in C printf, ordinary characters in template +are printed verbatim, while conversion specification introduced +by the `%' character cause subsequent expressions to be +evaluated, their values converted and formatted according to type and +style information encoded in the conversion specifications, and then +printed. +

+ +For example, you can print two values in hex like this: +

+ +
 
printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
+

+ +printf supports all the standard C conversion +specifications, including the flags and modifiers between the `%' +character and the conversion letter, with the following exceptions: +

+ +

    +
  • +The argument-ordering modifiers, such as `2$', are not supported. +

    + +

  • +The modifier `*' is not supported for specifying precision or +width. +

    + +

  • +The `'' flag (for separation of digits into groups according to +LC_NUMERIC') is not supported. +

    + +

  • +The type modifiers `hh', `j', `t', and `z' are not +supported. +

    + +

  • +The conversion letter `n' (as in `%n') is not supported. +

    + +

  • +The conversion letters `a' and `A' are not supported. +
+

+ +Note that the `ll' type modifier is supported only if the +underlying C implementation used to build GDB supports +the long long int type, and the `L' type modifier is +supported only if long double type is available. +

+ +As in C, printf supports simple backslash-escape +sequences, such as \n, `\t', `\\', `\"', +`\a', and `\f', that consist of backslash followed by a +single character. Octal and hexadecimal escape sequences are not +supported. +

+ +Additionally, printf supports conversion specifications for DFP +(Decimal Floating Point) types using the following length modifiers +together with a floating point specifier. +letters: +

+ +

    +
  • +`H' for printing Decimal32 types. +

    + +

  • +`D' for printing Decimal64 types. +

    + +

  • +`DD' for printing Decimal128 types. +
+

+ +If the underlying C implementation used to build GDB has +support for the three length modifiers for DFP types, other modifiers +such as width and precision will also be available for GDB to use. +

+ +In case there is no such C support, no additional modifiers will be +available and the value will be printed in the standard way. +

+ +Here's an example of printing DFP types using the above conversion letters: +
 
printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
+

+ +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_22.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_22.html new file mode 100644 index 0000000..8e2d828 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_22.html @@ -0,0 +1,147 @@ + + + + + +Debugging with GDB: Interpreters + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

21. Command Interpreters

+ +

+ +GDB supports multiple command interpreters, and some command +infrastructure to allow users or user interface writers to switch +between interpreters or run commands in other interpreters. +

+ +GDB currently supports two command interpreters, the console +interpreter (sometimes called the command-line interpreter or CLI) +and the machine interface interpreter (or GDB/MI). This manual +describes both of these interfaces in great detail. +

+ +By default, GDB will start with the console interpreter. +However, the user may choose to start GDB with another +interpreter by specifying the `-i' or `--interpreter' +startup options. Defined interpreters include: +

+ +

+
console +
+The traditional console or command-line interpreter. This is the most often +used interpreter with GDB. With no interpreter specified at runtime, +GDB will use this interpreter. +

+ +

mi +
+The newest GDB/MI interface (currently mi2). Used primarily +by programs wishing to use GDB as a backend for a debugger GUI +or an IDE. For more information, see The GDB/MI Interface. +

+ +

mi2 +
+The current GDB/MI interface. +

+ +

mi1 +
+The GDB/MI interface included in GDB 5.1, 5.2, and 5.3. +

+ +

+

+ + +The interpreter being used by GDB may not be dynamically +switched at runtime. Although possible, this could lead to a very +precarious situation. Consider an IDE using GDB/MI. If a user +enters the command "interpreter-set console" in a console view, +GDB would switch to using the console interpreter, rendering +the IDE inoperable! +

+ + +Although you may only choose a single interpreter at startup, you may execute +commands in any interpreter from the current interpreter using the appropriate +command. If you are running the console interpreter, simply use the +interpreter-exec command: +

+ +
 
interpreter-exec mi "-data-list-register-names"
+

+ +GDB/MI has a similar command, although it is only available in versions of +GDB which support GDB/MI version 2 (or greater). +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_23.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_23.html new file mode 100644 index 0000000..b361c92 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_23.html @@ -0,0 +1,654 @@ + + + + + +Debugging with GDB: TUI + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

22. GDB Text User Interface

+ +

+ +

+ + + + + +
22.1 TUI Overview  TUI overview
22.2 TUI Key Bindings  TUI key bindings
22.3 TUI Single Key Mode  TUI single key mode
22.4 TUI-specific Commands  TUI-specific commands
22.5 TUI Configuration Variables  TUI configuration variables
+

+ +The GDB Text User Interface (TUI) is a terminal +interface which uses the curses library to show the source +file, the assembly output, the program registers and GDB +commands in separate text windows. The TUI mode is supported only +on platforms where a suitable version of the curses library +is available. +

+ + +The TUI mode is enabled by default when you invoke GDB as +either `gdbtui' or `gdb -tui'. +You can also switch in and out of TUI mode while GDB runs by +using various TUI commands and key bindings, such as C-x C-a. +See section TUI Key Bindings. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

22.1 TUI Overview

+ +

+ +In TUI mode, GDB can display several text windows: +

+ +

+
command +
This window is the GDB command window with the GDB +prompt and the GDB output. The GDB input is still +managed using readline. +

+ +

source +
The source window shows the source file of the program. The current +line and active breakpoints are displayed in this window. +

+ +

assembly +
The assembly window shows the disassembly output of the program. +

+ +

register +
This window shows the processor registers. Registers are highlighted +when their values change. +
+

+ +The source and assembly windows show the current program position +by highlighting the current line and marking it with a `>' marker. +Breakpoints are indicated with two markers. The first marker +indicates the breakpoint type: +

+ +

+
B +
Breakpoint which was hit at least once. +

+ +

b +
Breakpoint which was never hit. +

+ +

H +
Hardware breakpoint which was hit at least once. +

+ +

h +
Hardware breakpoint which was never hit. +
+

+ +The second marker indicates whether the breakpoint is enabled or not: +

+ +

+
+ +
Breakpoint is enabled. +

+ +

- +
Breakpoint is disabled. +
+

+ +The source, assembly and register windows are updated when the current +thread changes, when the frame changes, or when the program counter +changes. +

+ +These windows are not all visible at the same time. The command +window is always visible. The others can be arranged in several +layouts: +

+ +

    +
  • +source only, +

    + +

  • +assembly only, +

    + +

  • +source and assembly, +

    + +

  • +source and registers, or +

    + +

  • +assembly and registers. +
+

+ +A status line above the command window shows the following information: +

+ +

+
target +
Indicates the current GDB target. +(see section Specifying a Debugging Target). +

+ +

process +
Gives the current process or thread number. +When no process is being debugged, this field is set to No process. +

+ +

function +
Gives the current function name for the selected frame. +The name is demangled if demangling is turned on (see section 8.7 Print Settings). +When there is no symbol corresponding to the current program counter, +the string ?? is displayed. +

+ +

line +
Indicates the current line number for the selected frame. +When the current line number is not known, the string ?? is displayed. +

+ +

pc +
Indicates the current program counter address. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

22.2 TUI Key Bindings

+ +

+ +The TUI installs several key bindings in the readline keymaps +(see section 27. Command Line Editing). The following key bindings +are installed for both TUI mode and the GDB standard mode. +

+ +

+ +
C-x C-a +
+
C-x a +
+
C-x A +
Enter or leave the TUI mode. When leaving the TUI mode, +the curses window management stops and GDB operates using +its standard mode, writing on the terminal directly. When reentering +the TUI mode, control is given back to the curses windows. +The screen is then refreshed. +

+ + +

C-x 1 +
Use a TUI layout with only one window. The layout will +either be `source' or `assembly'. When the TUI mode +is not active, it will switch to the TUI mode. +

+ +Think of this key binding as the Emacs C-x 1 binding. +

+ + +

C-x 2 +
Use a TUI layout with at least two windows. When the current +layout already has two windows, the next layout with two windows is used. +When a new layout is chosen, one window will always be common to the +previous layout and the new one. +

+ +Think of it as the Emacs C-x 2 binding. +

+ + +

C-x o +
Change the active window. The TUI associates several key bindings +(like scrolling and arrow keys) with the active window. This command +gives the focus to the next TUI window. +

+ +Think of it as the Emacs C-x o binding. +

+ + +

C-x s +
Switch in and out of the TUI SingleKey mode that binds single +keys to GDB commands (see section 22.3 TUI Single Key Mode). +
+

+ +The following key bindings only work in the TUI mode: +

+ +

+ +
PgUp +
Scroll the active window one page up. +

+ + +

PgDn +
Scroll the active window one page down. +

+ + +

Up +
Scroll the active window one line up. +

+ + +

Down +
Scroll the active window one line down. +

+ + +

Left +
Scroll the active window one column left. +

+ + +

Right +
Scroll the active window one column right. +

+ + +

C-L +
Refresh the screen. +
+

+ +Because the arrow keys scroll the active window in the TUI mode, they +are not available for their normal use by readline unless the command +window has the focus. When another window is active, you must use +other readline key bindings such as C-p, C-n, C-b +and C-f to control the command window. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

22.3 TUI Single Key Mode

+ +

+ +The TUI also provides a SingleKey mode, which binds several +frequently used GDB commands to single keys. Type C-x s to +switch into this mode, where the following key bindings are used: +

+ +

+ +
c +
continue +

+ + +

d +
down +

+ + +

f +
finish +

+ + +

n +
next +

+ + +

q +
exit the SingleKey mode. +

+ + +

r +
run +

+ + +

s +
step +

+ + +

u +
up +

+ + +

v +
info locals +

+ + +

w +
where +
+

+ +Other keys temporarily switch to the GDB command prompt. +The key that was pressed is inserted in the editing buffer so that +it is possible to type most GDB commands without interaction +with the TUI SingleKey mode. Once the command is entered the TUI +SingleKey mode is restored. The only way to permanently leave +this mode is by typing q or C-x s. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

22.4 TUI-specific Commands

+ +

+ +The TUI has specific commands to control the text windows. +These commands are always available, even when GDB is not in +the TUI mode. When GDB is in the standard mode, most +of these commands will automatically switch to the TUI mode. +

+ +

+
info win +
+List and give the size of all displayed windows. +

+ +

layout next +
+Display the next layout. +

+ +

layout prev +
Display the previous layout. +

+ +

layout src +
Display the source window only. +

+ +

layout asm +
Display the assembly window only. +

+ +

layout split +
Display the source and assembly window. +

+ +

layout regs +
Display the register window together with the source or assembly window. +

+ +

focus next +
+Make the next window active for scrolling. +

+ +

focus prev +
Make the previous window active for scrolling. +

+ +

focus src +
Make the source window active for scrolling. +

+ +

focus asm +
Make the assembly window active for scrolling. +

+ +

focus regs +
Make the register window active for scrolling. +

+ +

focus cmd +
Make the command window active for scrolling. +

+ +

refresh +
+Refresh the screen. This is similar to typing C-L. +

+ +

tui reg float +
+Show the floating point registers in the register window. +

+ +

tui reg general +
Show the general registers in the register window. +

+ +

tui reg next +
Show the next register group. The list of register groups as well as +their order is target specific. The predefined register groups are the +following: general, float, system, vector, +all, save, restore. +

+ +

tui reg system +
Show the system registers in the register window. +

+ +

update +
+Update the source window and the current execution point. +

+ +

winheight name +count +
winheight name -count +
+Change the height of the window name by count +lines. Positive counts increase the height, while negative counts +decrease it. +

+ +

tabset nchars +
+Set the width of tab stops to be nchars characters. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

22.5 TUI Configuration Variables

+ +

+ +Several configuration variables control the appearance of TUI windows. +

+ +

+
set tui border-kind kind +
+Select the border appearance for the source, assembly and register windows. +The possible values are the following: +
+
space +
Use a space character to draw the border. +

+ +

ascii +
Use ASCII characters `+', `-' and `|' to draw the border. +

+ +

acs +
Use the Alternate Character Set to draw the border. The border is +drawn using character line graphics if the terminal supports them. +
+

+ +

set tui border-mode mode +
+
set tui active-border-mode mode +
+Select the display attributes for the borders of the inactive windows +or the active window. The mode can be one of the following: +
+
normal +
Use normal attributes to display the border. +

+ +

standout +
Use standout mode. +

+ +

reverse +
Use reverse video mode. +

+ +

half +
Use half bright mode. +

+ +

half-standout +
Use half bright and standout mode. +

+ +

bold +
Use extra bright or bold mode. +

+ +

bold-standout +
Use extra bright or bold and standout mode. +
+
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_24.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_24.html new file mode 100644 index 0000000..b375cc4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_24.html @@ -0,0 +1,241 @@ + + + + + +Debugging with GDB: Emacs + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

23. Using GDB under GNU Emacs

+ +

+ + + +A special interface allows you to use GNU Emacs to view (and +edit) the source files for the program you are debugging with +GDB. +

+ +To use this interface, use the command M-x gdb in Emacs. Give the +executable file you want to debug as an argument. This command starts +GDB as a subprocess of Emacs, with input and output through a newly +created Emacs buffer. +

+ +Running GDB under Emacs can be just like running GDB normally except for two +things: +

+ +

    +
  • +All "terminal" input and output goes through an Emacs buffer, called +the GUD buffer. +

    + +This applies both to GDB commands and their output, and to the input +and output done by the program you are debugging. +

    + +This is useful because it means that you can copy the text of previous +commands and input them again; you can even use parts of the output +in this way. +

    + +All the facilities of Emacs' Shell mode are available for interacting +with your program. In particular, you can send signals the usual +way--for example, C-c C-c for an interrupt, C-c C-z for a +stop. +

    + +

  • +GDB displays source code through Emacs. +

    + +Each time GDB displays a stack frame, Emacs automatically finds the +source file for that frame and puts an arrow (`=>') at the +left margin of the current line. Emacs uses a separate buffer for +source display, and splits the screen to show both your GDB session +and the source. +

    + +Explicit GDB list or search commands still produce output as +usual, but you probably have no reason to use them from Emacs. +

+

+ +We call this text command mode. Emacs 22.1, and later, also uses +a graphical mode, enabled by default, which provides further buffers +that can control the execution and describe the state of your program. +See section `GDB Graphical Interface' in The GNU Emacs Manual. +

+ +If you specify an absolute file name when prompted for the M-x +gdb argument, then Emacs sets your current working directory to where +your program resides. If you only specify the file name, then Emacs +sets your current working directory to to the directory associated +with the previous buffer. In this case, GDB may find your +program by searching your environment's PATH variable, but on +some operating systems it might not find the source. So, although the +GDB input and output session proceeds normally, the auxiliary +buffer does not display the current source and line of execution. +

+ +The initial working directory of GDB is printed on the top +line of the GUD buffer and this serves as a default for the commands +that specify files for GDB to operate on. See section Commands to Specify Files. +

+ +By default, M-x gdb calls the program called `gdb'. If you +need to call GDB by a different name (for example, if you +keep several configurations around, with different names) you can +customize the Emacs variable gud-gdb-command-name to run the +one you want. +

+ +In the GUD buffer, you can use these special Emacs commands in +addition to the standard Shell mode commands: +

+ +

+
C-h m +
Describe the features of Emacs' GUD Mode. +

+ +

C-c C-s +
Execute to another source line, like the GDB step command; also +update the display window to show the current file and location. +

+ +

C-c C-n +
Execute to next source line in this function, skipping all function +calls, like the GDB next command. Then update the display window +to show the current file and location. +

+ +

C-c C-i +
Execute one instruction, like the GDB stepi command; update +display window accordingly. +

+ +

C-c C-f +
Execute until exit from the selected stack frame, like the GDB +finish command. +

+ +

C-c C-r +
Continue execution of your program, like the GDB continue +command. +

+ +

C-c < +
Go up the number of frames indicated by the numeric argument +(see section `Numeric Arguments' in The GNU Emacs Manual), +like the GDB up command. +

+ +

C-c > +
Go down the number of frames indicated by the numeric argument, like the +GDB down command. +
+

+ +In any source file, the Emacs command C-x SPC (gud-break) +tells GDB to set a breakpoint on the source line point is on. +

+ +In text command mode, if you type M-x speedbar, Emacs displays a +separate frame which shows a backtrace when the GUD buffer is current. +Move point to any frame in the stack and type RET to make it +become the current frame and display the associated source in the +source buffer. Alternatively, click Mouse-2 to make the +selected frame become the current one. In graphical mode, the +speedbar displays watch expressions. +

+ +If you accidentally delete the source-display buffer, an easy way to get +it back is to type the command f in the GDB buffer, to +request a frame display; when you run under Emacs, this recreates +the source buffer if necessary to show you the context of the current +frame. +

+ +The source files displayed in Emacs are in ordinary Emacs buffers +which are visiting the source files in the usual way. You can edit +the files with these buffers if you wish; but keep in mind that GDB +communicates with Emacs in terms of line numbers. If you add or +delete lines from the text, the line numbers that GDB knows cease +to correspond properly with the code. +

+ +A more detailed description of Emacs' interaction with GDB is +given in the Emacs manual (see section `Debuggers' in The GNU Emacs Manual). +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_25.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_25.html new file mode 100644 index 0000000..419e968 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_25.html @@ -0,0 +1,5829 @@ + + + + + +Debugging with GDB: GDB/MI + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24. The GDB/MI Interface

+ +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Function and Purpose

+ +

+ + +GDB/MI is a line based machine oriented text interface to +GDB and is activated by specifying using the +`--interpreter' command line option (see section 2.1.2 Choosing Modes). It +is specifically intended to support the development of systems which +use the debugger as just one small component of a larger system. +

+ +This chapter is a specification of the GDB/MI interface. It is written +in the form of a reference manual. +

+ +Note that GDB/MI is still under construction, so some of the +features described below are incomplete and subject to change +(see section GDB/MI Development and Front Ends). +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Notation and Terminology

+ +

+ + +This chapter uses the following notation: +

+ +

    +
  • +| separates two alternatives. +

    + +

  • +[ something ] indicates that something is optional: +it may or may not be given. +

    + +

  • +( group )* means that group inside the parentheses +may repeat zero or more times. +

    + +

  • +( group )+ means that group inside the parentheses +may repeat one or more times. +

    + +

  • +"string" means a literal string. +
+

+ +

+ + + + + + + + + + + + + + + + + + + +
24.1 GDB/MI Command Syntax  
24.2 GDB/MI Compatibility with CLI  
24.3 GDB/MI Development and Front Ends  
24.4 GDB/MI Output Records  
24.5 Simple Examples of GDB/MI Interaction  
24.6 GDB/MI Command Description Format  
24.7 GDB/MI Breakpoint Commands  
24.8 GDB/MI Program Context  
24.9 GDB/MI Thread Commands  
24.10 GDB/MI Program Execution  
24.11 GDB/MI Stack Manipulation Commands  
24.12 GDB/MI Variable Objects  
24.13 GDB/MI Data Manipulation  
24.14 GDB/MI Tracepoint Commands  
24.15 GDB/MI Symbol Query Commands  
24.16 GDB/MI File Commands  
24.17 GDB/MI Target Manipulation Commands  
24.18 GDB/MI File Transfer Commands  
24.19 Miscellaneous GDB/MI Commands  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.1 GDB/MI Command Syntax

+ +

+ +

+ + +
24.1.1 GDB/MI Input Syntax  
24.1.2 GDB/MI Output Syntax  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.1.1 GDB/MI Input Syntax

+ +

+ + + +

+
command ==> +
cli-command | mi-command +

+ +

cli-command ==> +
[ token ] cli-command nl, where +cli-command is any existing GDB CLI command. +

+ +

mi-command ==> +
[ token ] "-" operation ( " " option )* +[ " --" ] ( " " parameter )* nl +

+ +

token ==> +
"any sequence of digits" +

+ +

option ==> +
"-" parameter [ " " parameter ] +

+ +

parameter ==> +
non-blank-sequence | c-string +

+ +

operation ==> +
any of the operations described in this chapter +

+ +

non-blank-sequence ==> +
anything, provided it doesn't contain special characters such as +"-", nl, """ and of course " " +

+ +

c-string ==> +
""" seven-bit-iso-c-string-content """ +

+ +

nl ==> +
CR | CR-LF +
+

+ +Notes: +

+ +

    +
  • +The CLI commands are still handled by the MI interpreter; their +output is described below. +

    + +

  • +The token, when present, is passed back when the command +finishes. +

    + +

  • +Some MI commands accept optional arguments as part of the parameter +list. Each option is identified by a leading `-' (dash) and may be +followed by an optional argument parameter. Options occur first in the +parameter list and can be delimited from normal parameters using +`--' (this is useful when some parameters begin with a dash). +
+

+ +Pragmatics: +

+ +

    +
  • +We want easy access to the existing CLI syntax (for debugging). +

    + +

  • +We want it to be easy to spot a MI operation. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.1.2 GDB/MI Output Syntax

+ +

+ + + +The output from GDB/MI consists of zero or more out-of-band records +followed, optionally, by a single result record. This result record +is for the most recent command. The sequence of output records is +terminated by `(gdb)'. +

+ +If an input command was prefixed with a token then the +corresponding output for that command will also be prefixed by that same +token. +

+ +

+
output ==> +
( out-of-band-record )* [ result-record ] "(gdb)" nl +

+ +

result-record ==> +
[ token ] "^" result-class ( "," result )* nl +

+ +

out-of-band-record ==> +
async-record | stream-record +

+ +

async-record ==> +
exec-async-output | status-async-output | notify-async-output +

+ +

exec-async-output ==> +
[ token ] "*" async-output +

+ +

status-async-output ==> +
[ token ] "+" async-output +

+ +

notify-async-output ==> +
[ token ] "=" async-output +

+ +

async-output ==> +
async-class ( "," result )* nl +

+ +

result-class ==> +
"done" | "running" | "connected" | "error" | "exit" +

+ +

async-class ==> +
"stopped" | others (where others will be added +depending on the needs--this is still in development). +

+ +

result ==> +
variable "=" value +

+ +

variable ==> +
string +

+ +

value ==> +
const | tuple | list +

+ +

const ==> +
c-string +

+ +

tuple ==> +
"{}" | "{" result ( "," result )* "}" +

+ +

list ==> +
"[]" | "[" value ( "," value )* "]" | "[" +result ( "," result )* "]" +

+ +

stream-record ==> +
console-stream-output | target-stream-output | log-stream-output +

+ +

console-stream-output ==> +
"~" c-string +

+ +

target-stream-output ==> +
"@" c-string +

+ +

log-stream-output ==> +
"&" c-string +

+ +

nl ==> +
CR | CR-LF +

+ +

token ==> +
any sequence of digits. +
+

+ +Notes: +

+ +

    +
  • +All output sequences end in a single line containing a period. +

    + +

  • +The token is from the corresponding request. If an execution +command is interrupted by the `-exec-interrupt' command, the +token associated with the `*stopped' message is the one of the +original execution command, not the one of the interrupt command. +

    + +

  • + +status-async-output contains on-going status information about the +progress of a slow operation. It can be discarded. All status output is +prefixed by `+'. +

    + +

  • + +exec-async-output contains asynchronous state change on the target +(stopped, started, disappeared). All async output is prefixed by +`*'. +

    + +

  • + +notify-async-output contains supplementary information that the +client should handle (e.g., a new breakpoint information). All notify +output is prefixed by `='. +

    + +

  • + +console-stream-output is output that should be displayed as is in the +console. It is the textual response to a CLI command. All the console +output is prefixed by `~'. +

    + +

  • + +target-stream-output is the output produced by the target program. +All the target output is prefixed by `@'. +

    + +

  • + +log-stream-output is output text coming from GDB's internals, for +instance messages that should be displayed as part of an error log. All +the log output is prefixed by `&'. +

    + +

  • + +New GDB/MI commands should only output lists containing +values. +

    + +

+

+ +See section GDB/MI Stream Records, for more +details about the various output records. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.2 GDB/MI Compatibility with CLI

+ +

+ + + +

+ +For the developers convenience CLI commands can be entered directly, +but there may be some unexpected behaviour. For example, commands +that query the user will behave as if the user replied yes, breakpoint +command lists are not executed and some CLI commands, such as +if, when and define, prompt for further input with +`>', which is not valid MI output. +

+ +This feature may be removed at some stage in the future and it is +recommended that front ends use the -interpreter-exec command +(see -interpreter-exec). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.3 GDB/MI Development and Front Ends

+ +

+ +The application which takes the MI output and presents the state of the +program being debugged to the user is called a front end. +

+ +Although GDB/MI is still incomplete, it is currently being used +by a variety of front ends to GDB. This makes it difficult +to introduce new functionality without breaking existing usage. This +section tries to minimize the problems by describing how the protocol +might change. +

+ +Some changes in MI need not break a carefully designed front end, and +for these the MI version will remain unchanged. The following is a +list of changes that may occur within one level, so front ends should +parse MI output in a way that can handle them: +

+ +

    +
  • +New MI commands may be added. +

    + +

  • +New fields may be added to the output of any MI command. +

    + +

  • +The range of values for fields with specified values, e.g., +in_scope (see -var-update) may be extended. +

    + +

+

+ +If the changes are likely to break front ends, the MI version level +will be increased by one. This will allow the front end to parse the +output according to the MI version. Apart from mi0, new versions of +GDB will not support old versions of MI and it will be the +responsibility of the front end to work with the new one. +

+ +The best way to avoid unexpected changes in MI that might break your front +end is to make your project known to GDB developers and +follow development on gdb@sourceware.org and +gdb-patches@sourceware.org. There is also the mailing list +dmi-discuss@lists.freestandards.org, hosted by the Free Standards +Group, which has the aim of creating a more general MI protocol +called Debugger Machine Interface (DMI) that will become a standard +for all debuggers, not just GDB. + +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.4 GDB/MI Output Records

+ +

+ +

+ + + +
24.4.1 GDB/MI Result Records  
24.4.2 GDB/MI Stream Records  
24.4.3 GDB/MI Out-of-band Records  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.4.1 GDB/MI Result Records

+ +

+ + + +In addition to a number of out-of-band notifications, the response to a +GDB/MI command includes one of the following result indications: +

+ +

+ +
"^done" [ "," results ] +
The synchronous operation was successful, results are the return +values. +

+ +

"^running" +
+The asynchronous operation was successfully started. The target is +running. +

+ +

"^connected" +
+GDB has connected to a remote target. +

+ +

"^error" "," c-string +
+The operation failed. The c-string contains the corresponding +error message. +

+ +

"^exit" +
+GDB has terminated. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.4.2 GDB/MI Stream Records

+ +

+ + + +GDB internally maintains a number of output streams: the console, the +target, and the log. The output intended for each of these streams is +funneled through the GDB/MI interface using stream records. +

+ +Each stream record begins with a unique prefix character which +identifies its stream (see section GDB/MI Output Syntax). In addition to the prefix, each stream record contains a +string-output. This is either raw text (with an implicit new +line) or a quoted C string (which does not contain an implicit newline). +

+ +

+
"~" string-output +
The console output stream contains text that should be displayed in the +CLI console window. It contains the textual responses to CLI commands. +

+ +

"@" string-output +
The target output stream contains any textual output from the running +target. This is only present when GDB's event loop is truly +asynchronous, which is currently only the case for remote targets. +

+ +

"&" string-output +
The log stream contains debugging messages being produced by GDB's +internals. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.4.3 GDB/MI Out-of-band Records

+ +

+ + + +Out-of-band records are used to notify the GDB/MI client of +additional changes that have occurred. Those changes can either be a +consequence of GDB/MI (e.g., a breakpoint modified) or a result of +target activity (e.g., target stopped). +

+ +The following is a preliminary list of possible out-of-band records. +In particular, the exec-async-output records. +

+ +

+
*stopped,reason="reason" +
+

+ +reason can be one of the following: +

+ +

+
breakpoint-hit +
A breakpoint was reached. +
watchpoint-trigger +
A watchpoint was triggered. +
read-watchpoint-trigger +
A read watchpoint was triggered. +
access-watchpoint-trigger +
An access watchpoint was triggered. +
function-finished +
An -exec-finish or similar CLI command was accomplished. +
location-reached +
An -exec-until or similar CLI command was accomplished. +
watchpoint-scope +
A watchpoint has gone out of scope. +
end-stepping-range +
An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or +similar CLI command was accomplished. +
exited-signalled +
The inferior exited because of a signal. +
exited +
The inferior exited. +
exited-normally +
The inferior exited normally. +
signal-received +
A signal was received by the inferior. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.5 Simple Examples of GDB/MI Interaction

+ +

+ +This subsection presents several simple examples of interaction using +the GDB/MI interface. In these examples, `->' means that the +following line is passed to GDB/MI as input, while `<-' means +the output received from GDB/MI. +

+ +Note the line breaks shown in the examples are here only for +readability, they don't appear in the real output. +

+ + +

Setting a Breakpoint

+ +

+ +Setting a breakpoint generates synchronous output which contains detailed +information of the breakpoint. +

+ +
 
-> -break-insert main
+<- ^done,bkpt={number="1",type="breakpoint",disp="keep",
+    enabled="y",addr="0x08048564",func="main",file="myprog.c",
+    fullname="/home/nickrob/myprog.c",line="68",times="0"}
+<- (gdb)
+

+ + +

Program Execution

+ +

+ +Program execution generates asynchronous records and MI gives the +reason that execution stopped. +

+ +
 
-> -exec-run
+<- ^running
+<- (gdb)
+<- *stopped,reason="breakpoint-hit",bkptno="1",thread-id="0",
+   frame={addr="0x08048564",func="main",
+   args=[{name="argc",value="1"},{name="argv",value="0xbfc4d4d4"}],
+   file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"}
+<- (gdb)
+-> -exec-continue
+<- ^running
+<- (gdb)
+<- *stopped,reason="exited-normally"
+<- (gdb)
+

+ + +

Quitting GDB

+ +

+ +Quitting GDB just prints the result class `^exit'. +

+ +
 
-> (gdb)
+<- -gdb-exit
+<- ^exit
+

+ + +

A Bad Command

+ +

+ +Here's what happens if you pass a non-existent command: +

+ +
 
-> -rubbish
+<- ^error,msg="Undefined MI command: rubbish"
+<- (gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.6 GDB/MI Command Description Format

+ +

+ +The remaining sections describe blocks of commands. Each block of +commands is laid out in a fashion similar to this section. +

+ + +

Motivation

+ +

+ +The motivation for this collection of commands. +

+ + +

Introduction

+ +

+ +A brief introduction to this collection of commands as a whole. +

+ + +

Commands

+ +

+ +For each command in the block, the following is described: +

+ + +

Synopsis

+ +

+ +
 
 -command args...
+

+ + +

Result

+ +

+ + +

GDB Command

+ +

+ +The corresponding GDB CLI command(s), if any. +

+ + +

Example

+ +

+ +Example(s) formatted for readability. Some of the described commands have +not been implemented yet and these are labeled N.A. (not available). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.7 GDB/MI Breakpoint Commands

+ +

+ + + +This section documents GDB/MI commands for manipulating +breakpoints. +

+ + +

The -break-after Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-after number count
+

+ +The breakpoint number number is not in effect until it has been +hit count times. To see how this is reflected in the output of +the `-break-list' command, see the description of the +`-break-list' command below. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `ignore'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-break-insert main
+^done,bkpt={number="1",addr="0x000100d0",file="hello.c",
+fullname="/home/foo/hello.c",line="5",times="0"}
+(gdb)
+-break-after 1 3
+~
+^done
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="1",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
+line="5",times="0",ignore="3"}]}
+(gdb)
+

+ + +

The -break-condition Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-condition number expr
+

+ +Breakpoint number will stop the program only if the condition in +expr is true. The condition becomes part of the +`-break-list' output (see the description of the `-break-list' +command below). +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `condition'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-break-condition 1 1
+^done
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="1",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
+line="5",cond="1",times="0",ignore="3"}]}
+(gdb)
+

+ + +

The -break-delete Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-delete ( breakpoint )+
+

+ +Delete the breakpoint(s) whose number(s) are specified in the argument +list. This is obviously reflected in the breakpoint list. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `delete'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-break-delete 1
+^done
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="0",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[]}
+(gdb)
+

+ + +

The -break-disable Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-disable ( breakpoint )+
+

+ +Disable the named breakpoint(s). The field `enabled' in the +break list is now set to `n' for the named breakpoint(s). +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `disable'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-break-disable 2
+^done
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="1",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="2",type="breakpoint",disp="keep",enabled="n",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
+line="5",times="0"}]}
+(gdb)
+

+ + +

The -break-enable Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-enable ( breakpoint )+
+

+ +Enable (previously disabled) breakpoint(s). +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `enable'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-break-enable 2
+^done
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="1",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="2",type="breakpoint",disp="keep",enabled="y",
+addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
+line="5",times="0"}]}
+(gdb)
+

+ + +

The -break-info Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-info breakpoint
+

+ +Get information about a single breakpoint. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info break breakpoint'. +

+ + +

Example

+ +N.A. +

+ + +

The -break-insert Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-insert [ -t ] [ -h ] [ -f ]
+    [ -c condition ] [ -i ignore-count ]
+    [ -p thread ] [ location ]
+

+ +If specified, location, can be one of: +

+ +

    +
  • function +
  • filename:linenum +
  • filename:function +
  • *address +
+

+ +The possible optional parameters of this command are: +

+ +

+
`-t' +
Insert a temporary breakpoint. +
`-h' +
Insert a hardware breakpoint. +
`-c condition' +
Make the breakpoint conditional on condition. +
`-i ignore-count' +
Initialize the ignore-count. +
`-f' +
If location cannot be parsed (for example if it +refers to unknown files or functions), create a pending +breakpoint. Without this flag, GDB will report +an error, and won't create a breakpoint, if location +cannot be parsed. +
+

+ + +

Result

+ +

+ +The result is in the form: +

+ +
 
^done,bkpt={number="number",type="type",disp="del"|"keep",
+enabled="y"|"n",addr="hex",func="funcname",file="filename",
+fullname="full_filename",line="lineno",[thread="threadno,]
+times="times"}
+

+ +where number is the GDB number for this breakpoint, +funcname is the name of the function where the breakpoint was +inserted, filename is the name of the source file which contains +this function, lineno is the source line number within that file +and times the number of times that the breakpoint has been hit +(always 0 for -break-insert but may be greater for -break-info or -break-list +which use the same output). +

+ +Note: this format is open to change. +

+ + +

GDB Command

+ +

+ +The corresponding GDB commands are `break', `tbreak', +`hbreak', `thbreak', and `rbreak'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-break-insert main
+^done,bkpt={number="1",addr="0x0001072c",file="recursive2.c",
+fullname="/home/foo/recursive2.c,line="4",times="0"}
+(gdb)
+-break-insert -t foo
+^done,bkpt={number="2",addr="0x00010774",file="recursive2.c",
+fullname="/home/foo/recursive2.c,line="11",times="0"}
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="2",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x0001072c", func="main",file="recursive2.c",
+fullname="/home/foo/recursive2.c,"line="4",times="0"},
+bkpt={number="2",type="breakpoint",disp="del",enabled="y",
+addr="0x00010774",func="foo",file="recursive2.c",
+fullname="/home/foo/recursive2.c",line="11",times="0"}]}
+(gdb)
+-break-insert -r foo.*
+~int foo(int, int);
+^done,bkpt={number="3",addr="0x00010774",file="recursive2.c,
+"fullname="/home/foo/recursive2.c",line="11",times="0"}
+(gdb)
+

+ + +

The -break-list Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-list
+

+ +Displays the list of inserted breakpoints, showing the following fields: +

+ +

+
`Number' +
number of the breakpoint +
`Type' +
type of the breakpoint: `breakpoint' or `watchpoint' +
`Disposition' +
should the breakpoint be deleted or disabled when it is hit: `keep' +or `nokeep' +
`Enabled' +
is the breakpoint enabled or no: `y' or `n' +
`Address' +
memory location at which the breakpoint is set +
`What' +
logical location of the breakpoint, expressed by function name, file +name, line number +
`Times' +
number of times the breakpoint has been hit +
+

+ +If there are no breakpoints or watchpoints, the BreakpointTable +body field is an empty list. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info break'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="2",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x000100d0",func="main",file="hello.c",line="5",times="0"},
+bkpt={number="2",type="breakpoint",disp="keep",enabled="y",
+addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
+line="13",times="0"}]}
+(gdb)
+

+ +Here's an example of the result when there are no breakpoints: +

+ +
 
(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="0",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[]}
+(gdb)
+

+ + +

The -break-watch Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -break-watch [ -a | -r ]
+

+ +Create a watchpoint. With the `-a' option it will create an +access watchpoint, i.e., a watchpoint that triggers either on a +read from or on a write to the memory location. With the `-r' +option, the watchpoint created is a read watchpoint, i.e., it will +trigger only when the memory location is accessed for reading. Without +either of the options, the watchpoint created is a regular watchpoint, +i.e., it will trigger when the memory location is accessed for writing. +See section Setting Watchpoints. +

+ +Note that `-break-list' will report a single list of watchpoints and +breakpoints inserted. +

+ + +

GDB Command

+ +

+ +The corresponding GDB commands are `watch', `awatch', and +`rwatch'. +

+ + +

Example

+ +

+ +Setting a watchpoint on a variable in the main function: +

+ +
 
(gdb)
+-break-watch x
+^done,wpt={number="2",exp="x"}
+(gdb)
+-exec-continue
+^running
+(gdb)
+*stopped,reason="watchpoint-trigger",wpt={number="2",exp="x"},
+value={old="-268439212",new="55"},
+frame={func="main",args=[],file="recursive2.c",
+fullname="/home/foo/bar/recursive2.c",line="5"}
+(gdb)
+

+ +Setting a watchpoint on a variable local to a function. GDB will stop +the program execution twice: first for the variable changing value, then +for the watchpoint going out of scope. +

+ +
 
(gdb)
+-break-watch C
+^done,wpt={number="5",exp="C"}
+(gdb)
+-exec-continue
+^running
+(gdb)
+*stopped,reason="watchpoint-trigger",
+wpt={number="5",exp="C"},value={old="-276895068",new="3"},
+frame={func="callee4",args=[],
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"}
+(gdb)
+-exec-continue
+^running
+(gdb)
+*stopped,reason="watchpoint-scope",wpnum="5",
+frame={func="callee3",args=[{name="strarg",
+value="0x11940 \"A string argument.\""}],
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"}
+(gdb)
+

+ +Listing breakpoints and watchpoints, at different points in the program +execution. Note that once the watchpoint goes out of scope, it is +deleted. +

+ +
 
(gdb)
+-break-watch C
+^done,wpt={number="2",exp="C"}
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="2",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x00010734",func="callee4",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"},
+bkpt={number="2",type="watchpoint",disp="keep",
+enabled="y",addr="",what="C",times="0"}]}
+(gdb)
+-exec-continue
+^running
+(gdb)
+*stopped,reason="watchpoint-trigger",wpt={number="2",exp="C"},
+value={old="-276895068",new="3"},
+frame={func="callee4",args=[],
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"}
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="2",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x00010734",func="callee4",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"},
+bkpt={number="2",type="watchpoint",disp="keep",
+enabled="y",addr="",what="C",times="-5"}]}
+(gdb)
+-exec-continue
+^running
+^done,reason="watchpoint-scope",wpnum="2",
+frame={func="callee3",args=[{name="strarg",
+value="0x11940 \"A string argument.\""}],
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"}
+(gdb)
+-break-list
+^done,BreakpointTable={nr_rows="1",nr_cols="6",
+hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},
+{width="14",alignment="-1",col_name="type",colhdr="Type"},
+{width="4",alignment="-1",col_name="disp",colhdr="Disp"},
+{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},
+{width="10",alignment="-1",col_name="addr",colhdr="Address"},
+{width="40",alignment="2",col_name="what",colhdr="What"}],
+body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x00010734",func="callee4",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
+times="1"}]}
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.8 GDB/MI Program Context

+ +

+ + +

The -exec-arguments Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-arguments args
+

+ +Set the inferior program arguments, to be used in the next +`-exec-run'. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `set args'. +

+ + +

Example

+ +

+ +Don't have one around. +

+ + +

The -exec-show-arguments Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-show-arguments
+

+ +Print the arguments of the program. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `show args'. +

+ + +

Example

+ +N.A. +

+ + +

The -environment-cd Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -environment-cd pathdir
+

+ +Set GDB's working directory. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `cd'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
+^done
+(gdb)
+

+ + +

The -environment-directory Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -environment-directory [ -r ] [ pathdir ]+
+

+ +Add directories pathdir to beginning of search path for source files. +If the `-r' option is used, the search path is reset to the default +search path. If directories pathdir are supplied in addition to the +`-r' option, the search path is first reset and then addition +occurs as normal. +Multiple directories may be specified, separated by blanks. Specifying +multiple directories in a single command +results in the directories added to the beginning of the +search path in the same order they were presented in the command. +If blanks are needed as +part of a directory name, double-quotes should be used around +the name. In the command output, the path will show up separated +by the system directory-separator character. The directory-separator +character must not be used +in any directory name. +If no directories are specified, the current search path is displayed. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `dir'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
+^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
+(gdb)
+-environment-directory ""
+^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
+(gdb)
+-environment-directory -r /home/jjohnstn/src/gdb /usr/src
+^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
+(gdb)
+-environment-directory -r
+^done,source-path="$cdir:$cwd"
+(gdb)
+

+ + +

The -environment-path Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -environment-path [ -r ] [ pathdir ]+
+

+ +Add directories pathdir to beginning of search path for object files. +If the `-r' option is used, the search path is reset to the original +search path that existed at gdb start-up. If directories pathdir are +supplied in addition to the +`-r' option, the search path is first reset and then addition +occurs as normal. +Multiple directories may be specified, separated by blanks. Specifying +multiple directories in a single command +results in the directories added to the beginning of the +search path in the same order they were presented in the command. +If blanks are needed as +part of a directory name, double-quotes should be used around +the name. In the command output, the path will show up separated +by the system directory-separator character. The directory-separator +character must not be used +in any directory name. +If no directories are specified, the current path is displayed. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `path'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-environment-path
+^done,path="/usr/bin"
+(gdb)
+-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
+^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
+(gdb)
+-environment-path -r /usr/local/bin
+^done,path="/usr/local/bin:/usr/bin"
+(gdb)
+

+ + +

The -environment-pwd Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -environment-pwd
+

+ +Show the current working directory. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `pwd'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-environment-pwd
+^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.9 GDB/MI Thread Commands

+ +

+ + +

The -thread-info Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -thread-info
+

+ + +

GDB Command

+ +

+ +No equivalent. +

+ + +

Example

+ +N.A. +

+ + +

The -thread-list-all-threads Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -thread-list-all-threads
+

+ + +

GDB Command

+ +

+ +The equivalent GDB command is `info threads'. +

+ + +

Example

+ +N.A. +

+ + +

The -thread-list-ids Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -thread-list-ids
+

+ +Produces a list of the currently known GDB thread ids. At the +end of the list it also prints the total number of such threads. +

+ + +

GDB Command

+ +

+ +Part of `info threads' supplies the same information. +

+ + +

Example

+ +

+ +No threads present, besides the main process: +

+ +
 
(gdb)
+-thread-list-ids
+^done,thread-ids={},number-of-threads="0"
+(gdb)
+

+ +Several threads: +

+ +
 
(gdb)
+-thread-list-ids
+^done,thread-ids={thread-id="3",thread-id="2",thread-id="1"},
+number-of-threads="3"
+(gdb)
+

+ + +

The -thread-select Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -thread-select threadnum
+

+ +Make threadnum the current thread. It prints the number of the new +current thread, and the topmost frame for that thread. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `thread'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-exec-next
+^running
+(gdb)
+*stopped,reason="end-stepping-range",thread-id="2",line="187",
+file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
+(gdb)
+-thread-list-ids
+^done,
+thread-ids={thread-id="3",thread-id="2",thread-id="1"},
+number-of-threads="3"
+(gdb)
+-thread-select 3
+^done,new-thread-id="3",
+frame={level="0",func="vprintf",
+args=[{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""},
+{name="arg",value="0x2"}],file="vprintf.c",line="31"}
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.10 GDB/MI Program Execution

+ +

+ +These are the asynchronous commands which generate the out-of-band +record `*stopped'. Currently GDB only really executes +asynchronously with remote targets and this interaction is mimicked in +other cases. +

+ + +

The -exec-continue Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-continue
+

+ +Resumes the execution of the inferior program until a breakpoint is +encountered, or until the inferior exits. +

+ + +

GDB Command

+ +

+ +The corresponding GDB corresponding is `continue'. +

+ + +

Example

+ +

+ +
 
-exec-continue
+^running
+(gdb)
+@Hello world
+*stopped,reason="breakpoint-hit",bkptno="2",frame={func="foo",args=[],
+file="hello.c",fullname="/home/foo/bar/hello.c",line="13"}
+(gdb)
+

+ + +

The -exec-finish Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-finish
+

+ +Resumes the execution of the inferior program until the current +function is exited. Displays the results returned by the function. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `finish'. +

+ + +

Example

+ +

+ +Function returning void. +

+ +
 
-exec-finish
+^running
+(gdb)
+@hello from foo
+*stopped,reason="function-finished",frame={func="main",args=[],
+file="hello.c",fullname="/home/foo/bar/hello.c",line="7"}
+(gdb)
+

+ +Function returning other than void. The name of the internal +GDB variable storing the result is printed, together with the +value itself. +

+ +
 
-exec-finish
+^running
+(gdb)
+*stopped,reason="function-finished",frame={addr="0x000107b0",func="foo",
+args=[{name="a",value="1"],{name="b",value="9"}},
+file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+gdb-result-var="$1",return-value="0"
+(gdb)
+

+ + +

The -exec-interrupt Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-interrupt
+

+ +Interrupts the background execution of the target. Note how the token +associated with the stop message is the one for the execution command +that has been interrupted. The token for the interrupt itself only +appears in the `^done' output. If the user is trying to +interrupt a non-running program, an error message will be printed. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `interrupt'. +

+ + +

Example

+ +

+ +
 
(gdb)
+111-exec-continue
+111^running
+
+(gdb)
+222-exec-interrupt
+222^done
+(gdb)
+111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
+frame={addr="0x00010140",func="foo",args=[],file="try.c",
+fullname="/home/foo/bar/try.c",line="13"}
+(gdb)
+
+(gdb)
+-exec-interrupt
+^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
+(gdb)
+

+ + +

The -exec-next Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-next
+

+ +Resumes execution of the inferior program, stopping when the beginning +of the next source line is reached. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `next'. +

+ + +

Example

+ +

+ +
 
-exec-next
+^running
+(gdb)
+*stopped,reason="end-stepping-range",line="8",file="hello.c"
+(gdb)
+

+ + +

The -exec-next-instruction Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-next-instruction
+

+ +Executes one machine instruction. If the instruction is a function +call, continues until the function returns. If the program stops at an +instruction in the middle of a source line, the address will be +printed as well. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `nexti'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-exec-next-instruction
+^running
+
+(gdb)
+*stopped,reason="end-stepping-range",
+addr="0x000100d4",line="5",file="hello.c"
+(gdb)
+

+ + +

The -exec-return Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-return
+

+ +Makes current function return immediately. Doesn't execute the inferior. +Displays the new current frame. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `return'. +

+ + +

Example

+ +

+ +
 
(gdb)
+200-break-insert callee4
+200^done,bkpt={number="1",addr="0x00010734",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"}
+(gdb)
+000-exec-run
+000^running
+(gdb)
+000*stopped,reason="breakpoint-hit",bkptno="1",
+frame={func="callee4",args=[],
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"}
+(gdb)
+205-break-delete
+205^done
+(gdb)
+111-exec-return
+111^done,frame={level="0",func="callee3",
+args=[{name="strarg",
+value="0x11940 \"A string argument.\""}],
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"}
+(gdb)
+

+ + +

The -exec-run Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-run
+

+ +Starts execution of the inferior from the beginning. The inferior +executes until either a breakpoint is encountered or the program +exits. In the latter case the output will include an exit code, if +the program has exited exceptionally. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `run'. +

+ + +

Examples

+ +

+ +
 
(gdb)
+-break-insert main
+^done,bkpt={number="1",addr="0x0001072c",file="recursive2.c",line="4"}
+(gdb)
+-exec-run
+^running
+(gdb)
+*stopped,reason="breakpoint-hit",bkptno="1",
+frame={func="main",args=[],file="recursive2.c",
+fullname="/home/foo/bar/recursive2.c",line="4"}
+(gdb)
+

+ +Program exited normally: +

+ +
 
(gdb)
+-exec-run
+^running
+(gdb)
+x = 55
+*stopped,reason="exited-normally"
+(gdb)
+

+ +Program exited exceptionally: +

+ +
 
(gdb)
+-exec-run
+^running
+(gdb)
+x = 55
+*stopped,reason="exited",exit-code="01"
+(gdb)
+

+ +Another way the program can terminate is if it receives a signal such as +SIGINT. In this case, GDB/MI displays this: +

+ +
 
(gdb)
+*stopped,reason="exited-signalled",signal-name="SIGINT",
+signal-meaning="Interrupt"
+

+ + +

The -exec-step Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-step
+

+ +Resumes execution of the inferior program, stopping when the beginning +of the next source line is reached, if the next source line is not a +function call. If it is, stop at the first instruction of the called +function. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `step'. +

+ + +

Example

+ +

+ +Stepping into a function: +

+ +
 
-exec-step
+^running
+(gdb)
+*stopped,reason="end-stepping-range",
+frame={func="foo",args=[{name="a",value="10"},
+{name="b",value="0"}],file="recursive2.c",
+fullname="/home/foo/bar/recursive2.c",line="11"}
+(gdb)
+

+ +Regular stepping: +

+ +
 
-exec-step
+^running
+(gdb)
+*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
+(gdb)
+

+ + +

The -exec-step-instruction Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-step-instruction
+

+ +Resumes the inferior which executes one machine instruction. The +output, once GDB has stopped, will vary depending on whether +we have stopped in the middle of a source line or not. In the former +case, the address at which the program stopped will be printed as +well. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `stepi'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-exec-step-instruction
+^running
+
+(gdb)
+*stopped,reason="end-stepping-range",
+frame={func="foo",args=[],file="try.c",
+fullname="/home/foo/bar/try.c",line="10"}
+(gdb)
+-exec-step-instruction
+^running
+
+(gdb)
+*stopped,reason="end-stepping-range",
+frame={addr="0x000100f4",func="foo",args=[],file="try.c",
+fullname="/home/foo/bar/try.c",line="10"}
+(gdb)
+

+ + +

The -exec-until Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-until [ location ]
+

+ +Executes the inferior until the location specified in the +argument is reached. If there is no argument, the inferior executes +until a source line greater than the current one is reached. The +reason for stopping in this case will be `location-reached'. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `until'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-exec-until recursive2.c:6
+^running
+(gdb)
+x = 55
+*stopped,reason="location-reached",frame={func="main",args=[],
+file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"}
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.11 GDB/MI Stack Manipulation Commands

+ +

+ + +

The -stack-info-frame Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -stack-info-frame
+

+ +Get info on the selected frame. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info frame' or `frame' +(without arguments). +

+ + +

Example

+ +

+ +
 
(gdb)
+-stack-info-frame
+^done,frame={level="1",addr="0x0001076c",func="callee3",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"}
+(gdb)
+

+ + +

The -stack-info-depth Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -stack-info-depth [ max-depth ]
+

+ +Return the depth of the stack. If the integer argument max-depth +is specified, do not count beyond max-depth frames. +

+ + +

GDB Command

+ +

+ +There's no equivalent GDB command. +

+ + +

Example

+ +

+ +For a stack with frame levels 0 through 11: +

+ +
 
(gdb)
+-stack-info-depth
+^done,depth="12"
+(gdb)
+-stack-info-depth 4
+^done,depth="4"
+(gdb)
+-stack-info-depth 12
+^done,depth="12"
+(gdb)
+-stack-info-depth 11
+^done,depth="11"
+(gdb)
+-stack-info-depth 13
+^done,depth="12"
+(gdb)
+

+ + +

The -stack-list-arguments Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -stack-list-arguments show-values
+    [ low-frame high-frame ]
+

+ +Display a list of the arguments for the frames between low-frame +and high-frame (inclusive). If low-frame and +high-frame are not provided, list the arguments for the whole +call stack. If the two arguments are equal, show the single frame +at the corresponding level. It is an error if low-frame is +larger than the actual number of frames. On the other hand, +high-frame may be larger than the actual number of frames, in +which case only existing frames will be returned. +

+ +The show-values argument must have a value of 0 or 1. A value of +0 means that only the names of the arguments are listed, a value of 1 +means that both names and values of the arguments are printed. +

+ + +

GDB Command

+ +

+ +GDB does not have an equivalent command. gdbtk has a +`gdb_get_args' command which partially overlaps with the +functionality of `-stack-list-arguments'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-stack-list-frames
+^done,
+stack=[
+frame={level="0",addr="0x00010734",func="callee4",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"},
+frame={level="1",addr="0x0001076c",func="callee3",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"},
+frame={level="2",addr="0x0001078c",func="callee2",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"},
+frame={level="3",addr="0x000107b4",func="callee1",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"},
+frame={level="4",addr="0x000107e0",func="main",
+file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
+fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"}]
+(gdb)
+-stack-list-arguments 0
+^done,
+stack-args=[
+frame={level="0",args=[]},
+frame={level="1",args=[name="strarg"]},
+frame={level="2",args=[name="intarg",name="strarg"]},
+frame={level="3",args=[name="intarg",name="strarg",name="fltarg"]},
+frame={level="4",args=[]}]
+(gdb)
+-stack-list-arguments 1
+^done,
+stack-args=[
+frame={level="0",args=[]},
+frame={level="1",
+ args=[{name="strarg",value="0x11940 \"A string argument.\""}]},
+frame={level="2",args=[
+{name="intarg",value="2"},
+{name="strarg",value="0x11940 \"A string argument.\""}]},
+{frame={level="3",args=[
+{name="intarg",value="2"},
+{name="strarg",value="0x11940 \"A string argument.\""},
+{name="fltarg",value="3.5"}]},
+frame={level="4",args=[]}]
+(gdb)
+-stack-list-arguments 0 2 2
+^done,stack-args=[frame={level="2",args=[name="intarg",name="strarg"]}]
+(gdb)
+-stack-list-arguments 1 2 2
+^done,stack-args=[frame={level="2",
+args=[{name="intarg",value="2"},
+{name="strarg",value="0x11940 \"A string argument.\""}]}]
+(gdb)
+

+ + +

The -stack-list-frames Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -stack-list-frames [ low-frame high-frame ]
+

+ +List the frames currently on the stack. For each frame it displays the +following info: +

+ +

+
`level' +
The frame number, 0 being the topmost frame, i.e., the innermost function. +
`addr' +
The $pc value for that frame. +
`func' +
Function name. +
`file' +
File name of the source file where the function lives. +
`line' +
Line number corresponding to the $pc. +
+

+ +If invoked without arguments, this command prints a backtrace for the +whole stack. If given two integer arguments, it shows the frames whose +levels are between the two arguments (inclusive). If the two arguments +are equal, it shows the single frame at the corresponding level. It is +an error if low-frame is larger than the actual number of +frames. On the other hand, high-frame may be larger than the +actual number of frames, in which case only existing frames will be returned. +

+ + +

GDB Command

+ +

+ +The corresponding GDB commands are `backtrace' and `where'. +

+ + +

Example

+ +

+ +Full stack backtrace: +

+ +
 
(gdb)
+-stack-list-frames
+^done,stack=
+[frame={level="0",addr="0x0001076c",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"},
+frame={level="1",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="2",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="3",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="4",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="5",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="6",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="7",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="8",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="9",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="10",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="11",addr="0x00010738",func="main",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"}]
+(gdb)
+

+ +Show frames between low_frame and high_frame: +

+ +
 
(gdb)
+-stack-list-frames 3 5
+^done,stack=
+[frame={level="3",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="4",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"},
+frame={level="5",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}]
+(gdb)
+

+ +Show a single frame: +

+ +
 
(gdb)
+-stack-list-frames 3 3
+^done,stack=
+[frame={level="3",addr="0x000107a4",func="foo",
+  file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"}]
+(gdb)
+

+ + +

The -stack-list-locals Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -stack-list-locals print-values
+

+ +Display the local variable names for the selected frame. If +print-values is 0 or --no-values, print only the names of +the variables; if it is 1 or --all-values, print also their +values; and if it is 2 or --simple-values, print the name, +type and value for simple data types and the name and type for arrays, +structures and unions. In this last case, a frontend can immediately +display the value of simple data types and create variable objects for +other data types when the user wishes to explore their values in +more detail. +

+ + +

GDB Command

+ +

+ +`info locals' in GDB, `gdb_get_locals' in gdbtk. +

+ + +

Example

+ +

+ +
 
(gdb)
+-stack-list-locals 0
+^done,locals=[name="A",name="B",name="C"]
+(gdb)
+-stack-list-locals --all-values
+^done,locals=[{name="A",value="1"},{name="B",value="2"},
+  {name="C",value="{1, 2, 3}"}]
+-stack-list-locals --simple-values
+^done,locals=[{name="A",type="int",value="1"},
+  {name="B",type="int",value="2"},{name="C",type="int [3]"}]
+(gdb)
+

+ + +

The -stack-select-frame Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -stack-select-frame framenum
+

+ +Change the selected frame. Select a different frame framenum on +the stack. +

+ + +

GDB Command

+ +

+ +The corresponding GDB commands are `frame', `up', +`down', `select-frame', `up-silent', and `down-silent'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-stack-select-frame 2
+^done
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.12 GDB/MI Variable Objects

+ +

+ + +

Introduction to Variable Objects

+ +

+ + +

+ +Variable objects are "object-oriented" MI interface for examining and +changing values of expressions. Unlike some other MI interfaces that +work with expressions, variable objects are specifically designed for +simple and efficient presentation in the frontend. A variable object +is identified by string name. When a variable object is created, the +frontend specifies the expression for that variable object. The +expression can be a simple variable, or it can be an arbitrary complex +expression, and can even involve CPU registers. After creating a +variable object, the frontend can invoke other variable object +operations--for example to obtain or change the value of a variable +object, or to change display format. +

+ +Variable objects have hierarchical tree structure. Any variable object +that corresponds to a composite type, such as structure in C, has +a number of child variable objects, for example corresponding to each +element of a structure. A child variable object can itself have +children, recursively. Recursion ends when we reach +leaf variable objects, which always have built-in types. Child variable +objects are created only by explicit request, so if a frontend +is not interested in the children of a particular variable object, no +child will be created. +

+ +For a leaf variable object it is possible to obtain its value as a +string, or set the value from a string. String value can be also +obtained for a non-leaf variable object, but it's generally a string +that only indicates the type of the object, and does not list its +contents. Assignment to a non-leaf variable object is not allowed. + +A frontend does not need to read the values of all variable objects each time +the program stops. Instead, MI provides an update command that lists all +variable objects whose values has changed since the last update +operation. This considerably reduces the amount of data that must +be transferred to the frontend. As noted above, children variable +objects are created on demand, and only leaf variable objects have a +real value. As result, gdb will read target memory only for leaf +variables that frontend has created. +

+ +The automatic update is not always desirable. For example, a frontend +might want to keep a value of some expression for future reference, +and never update it. For another example, fetching memory is +relatively slow for embedded targets, so a frontend might want +to disable automatic update for the variables that are either not +visible on the screen, or "closed". This is possible using so +called "frozen variable objects". Such variable objects are never +implicitly updated. +

+ +The following is the complete set of GDB/MI operations defined to +access this functionality: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Operation Description + +
-var-create create a variable object +
-var-delete delete the variable object and/or its children +
-var-set-format set the display format of this variable +
-var-show-format show the display format of this variable +
-var-info-num-children tells how many children this object has +
-var-list-children return a list of the object's children +
-var-info-type show the type of this variable object +
-var-info-expression print parent-relative expression that this variable object represents +
-var-info-path-expression print full expression that this variable object represents +
-var-show-attributes is this variable editable? does it exist here? +
-var-evaluate-expression get the value of this variable +
-var-assign set the value of this variable +
-var-update update the variable and its children +
-var-set-frozen set frozeness attribute +
+

+ +In the next subsection we describe each operation in detail and suggest +how it can be used. +

+ + +

Description And Use of Operations on Variable Objects

+ +

+ + +

The -var-create Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-create {name | "-"}
+    {frame-addr | "*"} expression
+

+ +This operation creates a variable object, which allows the monitoring of +a variable, the result of an expression, a memory cell or a CPU +register. +

+ +The name parameter is the string by which the object can be +referenced. It must be unique. If `-' is specified, the varobj +system will generate a string "varNNNNNN" automatically. It will be +unique provided that one does not specify name on that format. +The command fails if a duplicate name is found. +

+ +The frame under which the expression should be evaluated can be +specified by frame-addr. A `*' indicates that the current +frame should be used. +

+ +expression is any expression valid on the current language set (must not +begin with a `*'), or one of the following: +

+ +

    +
  • +`*addr', where addr is the address of a memory cell +

    + +

  • +`*addr-addr' -- a memory address range (TBD) +

    + +

  • +`$regname' -- a CPU register name +
+

+ + +

Result

+ +

+ +This operation returns the name, number of children and the type of the +object created. Type is returned as a string as the ones generated by +the GDB CLI: +

+ +
 
 name="name",numchild="N",type="type"
+

+ + +

The -var-delete Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-delete [ -c ] name
+

+ +Deletes a previously created variable object and all of its children. +With the `-c' option, just deletes the children. +

+ +Returns an error if the object name is not found. +

+ + +

The -var-set-format Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-set-format name format-spec
+

+ +Sets the output format for the value of the object name to be +format-spec. +

+ +The syntax for the format-spec is as follows: +

+ +
 
 format-spec ==>
+ {binary | decimal | hexadecimal | octal | natural}
+

+ +The natural format is the default format choosen automatically +based on the variable type (like decimal for an int, hex +for pointers, etc.). +

+ +For a variable with children, the format is set only on the +variable itself, and the children are not affected. +

+ + +

The -var-show-format Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-show-format name
+

+ +Returns the format used to display the value of the object name. +

+ +
 
 format ==>
+ format-spec
+

+ + +

The -var-info-num-children Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-info-num-children name
+

+ +Returns the number of children of a variable object name: +

+ +
 
 numchild=n
+

+ + +

The -var-list-children Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-list-children [print-values] name
+
+

+ +Return a list of the children of the specified variable object and +create variable objects for them, if they do not already exist. With +a single argument or if print-values has a value for of 0 or +--no-values, print only the names of the variables; if +print-values is 1 or --all-values, also print their +values; and if it is 2 or --simple-values print the name and +value for simple data types and just the name for arrays, structures +and unions. +

+ + +

Example

+ +

+ +
 
(gdb)
+ -var-list-children n
+ ^done,numchild=n,children=[{name=name,
+ numchild=n,type=type},(repeats N times)]
+(gdb)
+ -var-list-children --all-values n
+ ^done,numchild=n,children=[{name=name,
+ numchild=n,value=value,type=type},(repeats N times)]
+

+ + +

The -var-info-type Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-info-type name
+

+ +Returns the type of the specified variable name. The type is +returned as a string in the same format as it is output by the +GDB CLI: +

+ +
 
 type=typename
+

+ + +

The -var-info-expression Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-info-expression name
+

+ +Returns a string that is suitable for presenting this +variable object in user interface. The string is generally +not valid expression in the current language, and cannot be evaluated. +

+ +For example, if a is an array, and variable object +A was created for a, then we'll get this output: +

+ +
 
(gdb) -var-info-expression A.1
+^done,lang="C",exp="1"
+

+ +Here, the values of lang can be {"C" | "C++" | "Java"}. +

+ +Note that the output of the -var-list-children command also +includes those expressions, so the -var-info-expression command +is of limited use. +

+ + +

The -var-info-path-expression Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-info-path-expression name
+

+ +Returns an expression that can be evaluated in the current +context and will yield the same value that a variable object has. +Compare this with the -var-info-expression command, which +result can be used only for UI presentation. Typical use of +the -var-info-path-expression command is creating a +watchpoint from a variable object. +

+ +For example, suppose C is a C++ class, derived from class +Base, and that the Base class has a member called +m_size. Assume a variable c is has the type of +C and a variable object C was created for variable +c. Then, we'll get this output: +
 
(gdb) -var-info-path-expression C.Base.public.m_size
+^done,path_expr=((Base)c).m_size)
+

+ + +

The -var-show-attributes Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-show-attributes name
+

+ +List attributes of the specified variable object name: +

+ +
 
 status=attr [ ( ,attr )* ]
+

+ +where attr is { { editable | noneditable } | TBD }. +

+ + +

The -var-evaluate-expression Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-evaluate-expression name
+

+ +Evaluates the expression that is represented by the specified variable +object and returns its value as a string. The format of the +string can be changed using the -var-set-format command. +

+ +
 
 value=value
+

+ +Note that one must invoke -var-list-children for a variable +before the value of a child variable can be evaluated. +

+ + +

The -var-assign Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-assign name expression
+

+ +Assigns the value of expression to the variable object specified +by name. The object must be `editable'. If the variable's +value is altered by the assign, the variable will show up in any +subsequent -var-update list. +

+ + +

Example

+ +

+ +
 
(gdb)
+-var-assign var1 3
+^done,value="3"
+(gdb)
+-var-update *
+^done,changelist=[{name="var1",in_scope="true",type_changed="false"}]
+(gdb)
+

+ + +

The -var-update Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -var-update [print-values] {name | "*"}
+

+ +Reevaluate the expressions corresponding to the variable object +name and all its direct and indirect children, and return the +list of variable objects whose values have changed; name must +be a root variable object. Here, "changed" means that the result of +-var-evaluate-expression before and after the +-var-update is different. If `*' is used as the variable +object names, all existing variable objects are updated, except +for frozen ones (see -var-set-frozen). The option +print-values determines whether both names and values, or just +names are printed. The possible values of this options are the same +as for -var-list-children (see -var-list-children). It is +recommended to use the `--all-values' option, to reduce the +number of MI commands needed on each program stop. +

+ + +

Example

+ +

+ +
 
(gdb)
+-var-assign var1 3
+^done,value="3"
+(gdb)
+-var-update --all-values var1
+^done,changelist=[{name="var1",value="3",in_scope="true",
+type_changed="false"}]
+(gdb)
+

+ + +The field in_scope may take three values: +

+ +

+
"true" +
The variable object's current value is valid. +

+ +

"false" +
The variable object does not currently hold a valid value but it may +hold one in the future if its associated expression comes back into +scope. +

+ +

"invalid" +
The variable object no longer holds a valid value. +This can occur when the executable file being debugged has changed, +either through recompilation or by using the GDB file +command. The front end should normally choose to delete these variable +objects. +
+

+ +In the future new values may be added to this list so the front should +be prepared for this possibility. See section GDB/MI Development and Front Ends. +

+ + +

The -var-set-frozen Command

+ + +

+ + +

Synopsis

+ +

+ +
 
 -var-set-frozen name flag
+

+ +Set the frozenness flag on the variable object name. The +flag parameter should be either `1' to make the variable +frozen or `0' to make it unfrozen. If a variable object is +frozen, then neither itself, nor any of its children, are +implicitly updated by -var-update of +a parent variable or by -var-update *. Only +-var-update of the variable itself will update its value and +values of its children. After a variable object is unfrozen, it is +implicitly updated by all subsequent -var-update operations. +Unfreezing a variable does not update it, only subsequent +-var-update does. +

+ + +

Example

+ +

+ +
 
(gdb)
+-var-set-frozen V 1
+^done
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.13 GDB/MI Data Manipulation

+ +

+ + + +This section describes the GDB/MI commands that manipulate data: +examine memory and registers, evaluate expressions, etc. +

+ + +

The -data-disassemble Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -data-disassemble
+    [ -s start-addr -e end-addr ]
+  | [ -f filename -l linenum [ -n lines ] ]
+  -- mode
+

+ +Where: +

+ +

+
`start-addr' +
is the beginning address (or $pc) +
`end-addr' +
is the end address +
`filename' +
is the name of the file to disassemble +
`linenum' +
is the line number to disassemble around +
`lines' +
is the number of disassembly lines to be produced. If it is -1, +the whole function will be disassembled, in case no end-addr is +specified. If end-addr is specified as a non-zero value, and +lines is lower than the number of disassembly lines between +start-addr and end-addr, only lines lines are +displayed; if lines is higher than the number of lines between +start-addr and end-addr, only the lines up to end-addr +are displayed. +
`mode' +
is either 0 (meaning only disassembly) or 1 (meaning mixed source and +disassembly). +
+

+ + +

Result

+ +

+ +The output for each instruction is composed of four fields: +

+ +

    +
  • Address +
  • Func-name +
  • Offset +
  • Instruction +
+

+ +Note that whatever included in the instruction field, is not manipulated +directly by GDB/MI, i.e., it is not possible to adjust its format. +

+ + +

GDB Command

+ +

+ +There's no direct mapping from this command to the CLI. +

+ + +

Example

+ +

+ +Disassemble from the current value of $pc to $pc + 20: +

+ +
 
(gdb)
+-data-disassemble -s $pc -e "$pc + 20" -- 0
+^done,
+asm_insns=[
+{address="0x000107c0",func-name="main",offset="4",
+inst="mov  2, %o0"},
+{address="0x000107c4",func-name="main",offset="8",
+inst="sethi  %hi(0x11800), %o2"},
+{address="0x000107c8",func-name="main",offset="12",
+inst="or  %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"},
+{address="0x000107cc",func-name="main",offset="16",
+inst="sethi  %hi(0x11800), %o2"},
+{address="0x000107d0",func-name="main",offset="20",
+inst="or  %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"}]
+(gdb)
+

+ +Disassemble the whole main function. Line 32 is part of +main. +

+ +
 
-data-disassemble -f basics.c -l 32 -- 0
+^done,asm_insns=[
+{address="0x000107bc",func-name="main",offset="0",
+inst="save  %sp, -112, %sp"},
+{address="0x000107c0",func-name="main",offset="4",
+inst="mov   2, %o0"},
+{address="0x000107c4",func-name="main",offset="8",
+inst="sethi %hi(0x11800), %o2"},
+[...]
+{address="0x0001081c",func-name="main",offset="96",inst="ret "},
+{address="0x00010820",func-name="main",offset="100",inst="restore "}]
+(gdb)
+

+ +Disassemble 3 instructions from the start of main: +

+ +
 
(gdb)
+-data-disassemble -f basics.c -l 32 -n 3 -- 0
+^done,asm_insns=[
+{address="0x000107bc",func-name="main",offset="0",
+inst="save  %sp, -112, %sp"},
+{address="0x000107c0",func-name="main",offset="4",
+inst="mov  2, %o0"},
+{address="0x000107c4",func-name="main",offset="8",
+inst="sethi  %hi(0x11800), %o2"}]
+(gdb)
+

+ +Disassemble 3 instructions from the start of main in mixed mode: +

+ +
 
(gdb)
+-data-disassemble -f basics.c -l 32 -n 3 -- 1
+^done,asm_insns=[
+src_and_asm_line={line="31",
+file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
+  testsuite/gdb.mi/basics.c",line_asm_insn=[
+{address="0x000107bc",func-name="main",offset="0",
+inst="save  %sp, -112, %sp"}]},
+src_and_asm_line={line="32",
+file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
+  testsuite/gdb.mi/basics.c",line_asm_insn=[
+{address="0x000107c0",func-name="main",offset="4",
+inst="mov  2, %o0"},
+{address="0x000107c4",func-name="main",offset="8",
+inst="sethi  %hi(0x11800), %o2"}]}]
+(gdb)
+

+ + +

The -data-evaluate-expression Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -data-evaluate-expression expr
+

+ +Evaluate expr as an expression. The expression could contain an +inferior function call. The function call will execute synchronously. +If the expression contains spaces, it must be enclosed in double quotes. +

+ + +

GDB Command

+ +

+ +The corresponding GDB commands are `print', `output', and +`call'. In gdbtk only, there's a corresponding +`gdb_eval' command. +

+ + +

Example

+ +

+ +In the following example, the numbers that precede the commands are the +tokens described in GDB/MI Command Syntax. Notice how GDB/MI returns the same tokens in its +output. +

+ +
 
211-data-evaluate-expression A
+211^done,value="1"
+(gdb)
+311-data-evaluate-expression &A
+311^done,value="0xefffeb7c"
+(gdb)
+411-data-evaluate-expression A+3
+411^done,value="4"
+(gdb)
+511-data-evaluate-expression "A + 3"
+511^done,value="4"
+(gdb)
+

+ + +

The -data-list-changed-registers Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -data-list-changed-registers
+

+ +Display a list of the registers that have changed. +

+ + +

GDB Command

+ +

+ +GDB doesn't have a direct analog for this command; gdbtk +has the corresponding command `gdb_changed_register_list'. +

+ + +

Example

+ +

+ +On a PPC MBX board: +

+ +
 
(gdb)
+-exec-continue
+^running
+
+(gdb)
+*stopped,reason="breakpoint-hit",bkptno="1",frame={func="main",
+args=[],file="try.c",fullname="/home/foo/bar/try.c",line="5"}
+(gdb)
+-data-list-changed-registers
+^done,changed-registers=["0","1","2","4","5","6","7","8","9",
+"10","11","13","14","15","16","17","18","19","20","21","22","23",
+"24","25","26","27","28","30","31","64","65","66","67","69"]
+(gdb)
+

+ + +

The -data-list-register-names Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -data-list-register-names [ ( regno )+ ]
+

+ +Show a list of register names for the current target. If no arguments +are given, it shows a list of the names of all the registers. If +integer numbers are given as arguments, it will print a list of the +names of the registers corresponding to the arguments. To ensure +consistency between a register name and its number, the output list may +include empty register names. +

+ + +

GDB Command

+ +

+ +GDB does not have a command which corresponds to +`-data-list-register-names'. In gdbtk there is a +corresponding command `gdb_regnames'. +

+ + +

Example

+ +

+ +For the PPC MBX board: +
 
(gdb)
+-data-list-register-names
+^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
+"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
+"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
+"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
+"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
+"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
+"", "pc","ps","cr","lr","ctr","xer"]
+(gdb)
+-data-list-register-names 1 2 3
+^done,register-names=["r1","r2","r3"]
+(gdb)
+

+ + +

The -data-list-register-values Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -data-list-register-values fmt [ ( regno )*]
+

+ +Display the registers' contents. fmt is the format according to +which the registers' contents are to be returned, followed by an optional +list of numbers specifying the registers to display. A missing list of +numbers indicates that the contents of all the registers must be returned. +

+ +Allowed formats for fmt are: +

+ +

+
x +
Hexadecimal +
o +
Octal +
t +
Binary +
d +
Decimal +
r +
Raw +
N +
Natural +
+

+ + +

GDB Command

+ +

+ +The corresponding GDB commands are `info reg', `info +all-reg', and (in gdbtk) `gdb_fetch_registers'. +

+ + +

Example

+ +

+ +For a PPC MBX board (note: line breaks are for readability only, they +don't appear in the actual output): +

+ +
 
(gdb)
+-data-list-register-values r 64 65
+^done,register-values=[{number="64",value="0xfe00a300"},
+{number="65",value="0x00029002"}]
+(gdb)
+-data-list-register-values x
+^done,register-values=[{number="0",value="0xfe0043c8"},
+{number="1",value="0x3fff88"},{number="2",value="0xfffffffe"},
+{number="3",value="0x0"},{number="4",value="0xa"},
+{number="5",value="0x3fff68"},{number="6",value="0x3fff58"},
+{number="7",value="0xfe011e98"},{number="8",value="0x2"},
+{number="9",value="0xfa202820"},{number="10",value="0xfa202808"},
+{number="11",value="0x1"},{number="12",value="0x0"},
+{number="13",value="0x4544"},{number="14",value="0xffdfffff"},
+{number="15",value="0xffffffff"},{number="16",value="0xfffffeff"},
+{number="17",value="0xefffffed"},{number="18",value="0xfffffffe"},
+{number="19",value="0xffffffff"},{number="20",value="0xffffffff"},
+{number="21",value="0xffffffff"},{number="22",value="0xfffffff7"},
+{number="23",value="0xffffffff"},{number="24",value="0xffffffff"},
+{number="25",value="0xffffffff"},{number="26",value="0xfffffffb"},
+{number="27",value="0xffffffff"},{number="28",value="0xf7bfffff"},
+{number="29",value="0x0"},{number="30",value="0xfe010000"},
+{number="31",value="0x0"},{number="32",value="0x0"},
+{number="33",value="0x0"},{number="34",value="0x0"},
+{number="35",value="0x0"},{number="36",value="0x0"},
+{number="37",value="0x0"},{number="38",value="0x0"},
+{number="39",value="0x0"},{number="40",value="0x0"},
+{number="41",value="0x0"},{number="42",value="0x0"},
+{number="43",value="0x0"},{number="44",value="0x0"},
+{number="45",value="0x0"},{number="46",value="0x0"},
+{number="47",value="0x0"},{number="48",value="0x0"},
+{number="49",value="0x0"},{number="50",value="0x0"},
+{number="51",value="0x0"},{number="52",value="0x0"},
+{number="53",value="0x0"},{number="54",value="0x0"},
+{number="55",value="0x0"},{number="56",value="0x0"},
+{number="57",value="0x0"},{number="58",value="0x0"},
+{number="59",value="0x0"},{number="60",value="0x0"},
+{number="61",value="0x0"},{number="62",value="0x0"},
+{number="63",value="0x0"},{number="64",value="0xfe00a300"},
+{number="65",value="0x29002"},{number="66",value="0x202f04b5"},
+{number="67",value="0xfe0043b0"},{number="68",value="0xfe00b3e4"},
+{number="69",value="0x20002b03"}]
+(gdb)
+

+ + +

The -data-read-memory Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -data-read-memory [ -o byte-offset ]
+   address word-format word-size
+   nr-rows nr-cols [ aschar ]
+

+ +where: +

+ +

+
`address' +
An expression specifying the address of the first memory word to be +read. Complex expressions containing embedded white space should be +quoted using the C convention. +

+ +

`word-format' +
The format to be used to print the memory words. The notation is the +same as for GDB's print command (see section Output Formats). +

+ +

`word-size' +
The size of each memory word in bytes. +

+ +

`nr-rows' +
The number of rows in the output table. +

+ +

`nr-cols' +
The number of columns in the output table. +

+ +

`aschar' +
If present, indicates that each row should include an ASCII dump. The +value of aschar is used as a padding character when a byte is not a +member of the printable ASCII character set (printable ASCII +characters are those whose code is between 32 and 126, inclusively). +

+ +

`byte-offset' +
An offset to add to the address before fetching memory. +
+

+ +This command displays memory contents as a table of nr-rows by +nr-cols words, each word being word-size bytes. In total, +nr-rows * nr-cols * word-size bytes are read +(returned as `total-bytes'). Should less than the requested number +of bytes be returned by the target, the missing words are identified +using `N/A'. The number of bytes read from the target is returned +in `nr-bytes' and the starting address used to read memory in +`addr'. +

+ +The address of the next/previous row or page is available in +`next-row' and `prev-row', `next-page' and +`prev-page'. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `x'. gdbtk has +`gdb_get_mem' memory read command. +

+ + +

Example

+ +

+ +Read six bytes of memory starting at bytes+6 but then offset by +-6 bytes. Format as three rows of two columns. One byte per +word. Display each word in hex. +

+ +
 
(gdb)
+9-data-read-memory -o -6 -- bytes+6 x 1 3 2
+9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
+next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
+prev-page="0x0000138a",memory=[
+{addr="0x00001390",data=["0x00","0x01"]},
+{addr="0x00001392",data=["0x02","0x03"]},
+{addr="0x00001394",data=["0x04","0x05"]}]
+(gdb)
+

+ +Read two bytes of memory starting at address shorts + 64 and +display as a single word formatted in decimal. +

+ +
 
(gdb)
+5-data-read-memory shorts+64 d 2 1 1
+5^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
+next-row="0x00001512",prev-row="0x0000150e",
+next-page="0x00001512",prev-page="0x0000150e",memory=[
+{addr="0x00001510",data=["128"]}]
+(gdb)
+

+ +Read thirty two bytes of memory starting at bytes+16 and format +as eight rows of four columns. Include a string encoding with `x' +used as the non-printable character. +

+ +
 
(gdb)
+4-data-read-memory bytes+16 x 1 8 4 x
+4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
+next-row="0x000013c0",prev-row="0x0000139c",
+next-page="0x000013c0",prev-page="0x00001380",memory=[
+{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"},
+{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"},
+{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"},
+{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"},
+{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"},
+{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"},
+{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"},
+{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"}]
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.14 GDB/MI Tracepoint Commands

+ +

+ +The tracepoint commands are not yet implemented. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.15 GDB/MI Symbol Query Commands

+ +

+ + +

The -symbol-info-address Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-info-address symbol
+

+ +Describe where symbol is stored. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info address'. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-info-file Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-info-file
+

+ +Show the file for the symbol. +

+ + +

GDB Command

+ +

+ +There's no equivalent GDB command. gdbtk has +`gdb_find_file'. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-info-function Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-info-function
+

+ +Show which function the symbol lives in. +

+ + +

GDB Command

+ +

+ +`gdb_get_function' in gdbtk. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-info-line Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-info-line
+

+ +Show the core addresses of the code for a source line. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info line'. +gdbtk has the `gdb_get_line' and `gdb_get_file' commands. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-info-symbol Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-info-symbol addr
+

+ +Describe what symbol is at location addr. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info symbol'. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-list-functions Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-list-functions
+

+ +List the functions in the executable. +

+ + +

GDB Command

+ +

+ +`info functions' in GDB, `gdb_listfunc' and +`gdb_search' in gdbtk. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-list-lines Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-list-lines filename
+

+ +Print the list of lines that contain code and their associated program +addresses for the given source filename. The entries are sorted in +ascending PC order. +

+ + +

GDB Command

+ +

+ +There is no corresponding GDB command. +

+ + +

Example

+ +
 
(gdb)
+-symbol-list-lines basics.c
+^done,lines=[{pc="0x08048554",line="7"},{pc="0x0804855a",line="8"}]
+(gdb)
+

+ + +

The -symbol-list-types Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-list-types
+

+ +List all the type names. +

+ + +

GDB Command

+ +

+ +The corresponding commands are `info types' in GDB, +`gdb_search' in gdbtk. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-list-variables Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-list-variables
+

+ +List all the global and static variable names. +

+ + +

GDB Command

+ +

+ +`info variables' in GDB, `gdb_search' in gdbtk. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-locate Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-locate
+

+ + +

GDB Command

+ +

+ +`gdb_loc' in gdbtk. +

+ + +

Example

+ +N.A. +

+ + +

The -symbol-type Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -symbol-type variable
+

+ +Show type of variable. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `ptype', gdbtk has +`gdb_obj_variable'. +

+ + +

Example

+ +N.A. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.16 GDB/MI File Commands

+ +

+ +This section describes the GDB/MI commands to specify executable file names +and to read in and obtain symbol table information. +

+ + +

The -file-exec-and-symbols Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-exec-and-symbols file
+

+ +Specify the executable file to be debugged. This file is the one from +which the symbol table is also read. If no file is specified, the +command clears the executable and symbol information. If breakpoints +are set when using this command with no arguments, GDB will produce +error messages. Otherwise, no output is produced, except a completion +notification. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `file'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
+^done
+(gdb)
+

+ + +

The -file-exec-file Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-exec-file file
+

+ +Specify the executable file to be debugged. Unlike +`-file-exec-and-symbols', the symbol table is not read +from this file. If used without argument, GDB clears the information +about the executable file. No output is produced, except a completion +notification. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `exec-file'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
+^done
+(gdb)
+

+ + +

The -file-list-exec-sections Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-list-exec-sections
+

+ +List the sections of the current executable file. +

+ + +

GDB Command

+ +

+ +The GDB command `info file' shows, among the rest, the same +information as this command. gdbtk has a corresponding command +`gdb_load_info'. +

+ + +

Example

+ +N.A. +

+ + +

The -file-list-exec-source-file Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-list-exec-source-file
+

+ +List the line number, the current source file, and the absolute path +to the current source file for the current executable. The macro +information field has a value of `1' or `0' depending on +whether or not the file includes preprocessor macro information. +

+ + +

GDB Command

+ +

+ +The GDB equivalent is `info source' +

+ + +

Example

+ +

+ +
 
(gdb)
+123-file-list-exec-source-file
+123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
+(gdb)
+

+ + +

The -file-list-exec-source-files Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-list-exec-source-files
+

+ +List the source files for the current executable. +

+ +It will always output the filename, but only when GDB can find +the absolute file name of a source file, will it output the fullname. +

+ + +

GDB Command

+ +

+ +The GDB equivalent is `info sources'. +gdbtk has an analogous command `gdb_listfiles'. +

+ + +

Example

+ +
 
(gdb)
+-file-list-exec-source-files
+^done,files=[
+{file=foo.c,fullname=/home/foo.c},
+{file=/home/bar.c,fullname=/home/bar.c},
+{file=gdb_could_not_find_fullpath.c}]
+(gdb)
+

+ + +

The -file-list-shared-libraries Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-list-shared-libraries
+

+ +List the shared libraries in the program. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info shared'. +

+ + +

Example

+ +N.A. +

+ + +

The -file-list-symbol-files Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-list-symbol-files
+

+ +List symbol files. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `info file' (part of it). +

+ + +

Example

+ +N.A. +

+ + +

The -file-symbol-file Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -file-symbol-file file
+

+ +Read symbol table info from the specified file argument. When +used without arguments, clears GDB's symbol table info. No output is +produced, except for a completion notification. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `symbol-file'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
+^done
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.17 GDB/MI Target Manipulation Commands

+ +

+ + +

The -target-attach Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-attach pid | file
+

+ +Attach to a process pid or a file file outside of GDB. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `attach'. +

+ + +

Example

+ +N.A. +

+ + +

The -target-compare-sections Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-compare-sections [ section ]
+

+ +Compare data of section section on target to the exec file. +Without the argument, all sections are compared. +

+ + +

GDB Command

+ +

+ +The GDB equivalent is `compare-sections'. +

+ + +

Example

+ +N.A. +

+ + +

The -target-detach Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-detach
+

+ +Detach from the remote target which normally resumes its execution. +There's no output. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `detach'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-target-detach
+^done
+(gdb)
+

+ + +

The -target-disconnect Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-disconnect
+

+ +Disconnect from the remote target. There's no output and the target is +generally not resumed. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `disconnect'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-target-disconnect
+^done
+(gdb)
+

+ + +

The -target-download Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-download
+

+ +Loads the executable onto the remote target. +It prints out an update message every half second, which includes the fields: +

+ +

+
`section' +
The name of the section. +
`section-sent' +
The size of what has been sent so far for that section. +
`section-size' +
The size of the section. +
`total-sent' +
The total size of what was sent so far (the current and the previous sections). +
`total-size' +
The size of the overall executable to download. +
+

+ +Each message is sent as status record (see section GDB/MI Output Syntax). +

+ +In addition, it prints the name and size of the sections, as they are +downloaded. These messages include the following fields: +

+ +

+
`section' +
The name of the section. +
`section-size' +
The size of the section. +
`total-size' +
The size of the overall executable to download. +
+

+ +At the end, a summary is printed. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `load'. +

+ + +

Example

+ +

+ +Note: each status message appears on a single line. Here the messages +have been broken down so that they can fit onto a page. +

+ +
 
(gdb)
+-target-download
++download,{section=".text",section-size="6668",total-size="9880"}
++download,{section=".text",section-sent="512",section-size="6668",
+total-sent="512",total-size="9880"}
++download,{section=".text",section-sent="1024",section-size="6668",
+total-sent="1024",total-size="9880"}
++download,{section=".text",section-sent="1536",section-size="6668",
+total-sent="1536",total-size="9880"}
++download,{section=".text",section-sent="2048",section-size="6668",
+total-sent="2048",total-size="9880"}
++download,{section=".text",section-sent="2560",section-size="6668",
+total-sent="2560",total-size="9880"}
++download,{section=".text",section-sent="3072",section-size="6668",
+total-sent="3072",total-size="9880"}
++download,{section=".text",section-sent="3584",section-size="6668",
+total-sent="3584",total-size="9880"}
++download,{section=".text",section-sent="4096",section-size="6668",
+total-sent="4096",total-size="9880"}
++download,{section=".text",section-sent="4608",section-size="6668",
+total-sent="4608",total-size="9880"}
++download,{section=".text",section-sent="5120",section-size="6668",
+total-sent="5120",total-size="9880"}
++download,{section=".text",section-sent="5632",section-size="6668",
+total-sent="5632",total-size="9880"}
++download,{section=".text",section-sent="6144",section-size="6668",
+total-sent="6144",total-size="9880"}
++download,{section=".text",section-sent="6656",section-size="6668",
+total-sent="6656",total-size="9880"}
++download,{section=".init",section-size="28",total-size="9880"}
++download,{section=".fini",section-size="28",total-size="9880"}
++download,{section=".data",section-size="3156",total-size="9880"}
++download,{section=".data",section-sent="512",section-size="3156",
+total-sent="7236",total-size="9880"}
++download,{section=".data",section-sent="1024",section-size="3156",
+total-sent="7748",total-size="9880"}
++download,{section=".data",section-sent="1536",section-size="3156",
+total-sent="8260",total-size="9880"}
++download,{section=".data",section-sent="2048",section-size="3156",
+total-sent="8772",total-size="9880"}
++download,{section=".data",section-sent="2560",section-size="3156",
+total-sent="9284",total-size="9880"}
++download,{section=".data",section-sent="3072",section-size="3156",
+total-sent="9796",total-size="9880"}
+^done,address="0x10004",load-size="9880",transfer-rate="6586",
+write-rate="429"
+(gdb)
+

+ + +

The -target-exec-status Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-exec-status
+

+ +Provide information on the state of the target (whether it is running or +not, for instance). +

+ + +

GDB Command

+ +

+ +There's no equivalent GDB command. +

+ + +

Example

+ +N.A. +

+ + +

The -target-list-available-targets Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-list-available-targets
+

+ +List the possible targets to connect to. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `help target'. +

+ + +

Example

+ +N.A. +

+ + +

The -target-list-current-targets Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-list-current-targets
+

+ +Describe the current target. +

+ + +

GDB Command

+ +

+ +The corresponding information is printed by `info file' (among +other things). +

+ + +

Example

+ +N.A. +

+ + +

The -target-list-parameters Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-list-parameters
+

+ + +

GDB Command

+ +

+ +No equivalent. +

+ + +

Example

+ +N.A. +

+ + +

The -target-select Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-select type parameters ...
+

+ +Connect GDB to the remote target. This command takes two args: +

+ +

+
`type' +
The type of target, for instance `async', `remote', etc. +
`parameters' +
Device names, host names and the like. See section Commands for Managing Targets, for more details. +
+

+ +The output is a connection notification, followed by the address at +which the target program is, in the following form: +

+ +
 
^connected,addr="address",func="function name",
+  args=[arg list]
+

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `target'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-target-select async /dev/ttya
+^connected,addr="0xfe00a300",func="??",args=[]
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.18 GDB/MI File Transfer Commands

+ +

+ + +

The -target-file-put Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-file-put hostfile targetfile
+

+ +Copy file hostfile from the host system (the machine running +GDB) to targetfile on the target system. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `remote put'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-target-file-put localfile remotefile
+^done
+(gdb)
+

+ + +

The -target-file-put Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-file-get targetfile hostfile
+

+ +Copy file targetfile from the target system to hostfile +on the host system. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `remote get'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-target-file-get remotefile localfile
+^done
+(gdb)
+

+ + +

The -target-file-delete Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -target-file-delete targetfile
+

+ +Delete targetfile from the target system. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `remote delete'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-target-file-delete remotefile
+^done
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

24.19 Miscellaneous GDB/MI Commands

+ +

+ + +

The -gdb-exit Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -gdb-exit
+

+ +Exit GDB immediately. +

+ + +

GDB Command

+ +

+ +Approximately corresponds to `quit'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-gdb-exit
+^exit
+

+ + +

The -exec-abort Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -exec-abort
+

+ +Kill the inferior running program. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `kill'. +

+ + +

Example

+ +N.A. +

+ + +

The -gdb-set Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -gdb-set
+

+ +Set an internal GDB variable. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `set'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-gdb-set $foo=3
+^done
+(gdb)
+

+ + +

The -gdb-show Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -gdb-show
+

+ +Show the current value of a GDB variable. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `show'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-gdb-show annotate
+^done,value="0"
+(gdb)
+

+ + +

The -gdb-version Command

+ +

+ + +

Synopsis

+ +

+ +
 
 -gdb-version
+

+ +Show version information for GDB. Used mostly in testing. +

+ + +

GDB Command

+ +

+ +The GDB equivalent is `show version'. GDB by +default shows this information when you start an interactive session. +

+ + +

Example

+ +

+ +
 
(gdb)
+-gdb-version
+~GNU gdb 5.2.1
+~Copyright 2000 Free Software Foundation, Inc.
+~GDB is free software, covered by the GNU General Public License, and
+~you are welcome to change it and/or distribute copies of it under
+~ certain conditions.
+~Type "show copying" to see the conditions.
+~There is absolutely no warranty for GDB.  Type "show warranty" for
+~ details.
+~This GDB was configured as
+ "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
+^done
+(gdb)
+

+ + +

The -list-features Command

+ +

+ +Returns a list of particular features of the MI protocol that +this version of gdb implements. A feature can be a command, +or a new field in an output of some command, or even an +important bugfix. While a frontend can sometimes detect presence +of a feature at runtime, it is easier to perform detection at debugger +startup. +

+ +The command returns a list of strings, with each string naming an +available feature. Each returned string is just a name, it does not +have any internal structure. The list of possible feature names +is given below. +

+ +Example output: +

+ +
 
(gdb) -list-features
+^done,result=["feature1","feature2"]
+

+ +The current list of features is: +

+ +

    +
  • +`frozen-varobjs'---indicates presence of the +-var-set-frozen command, as well as possible presense of the +frozen field in the output of -varobj-create. +
  • +`pending-breakpoints'---indicates presence of the -f +option to the -break-insert command. +

    + +

+

+ + +

The -interpreter-exec Command

+ +

+ + +

Synopsis

+ +

+ +
 
-interpreter-exec interpreter command
+
+

+ +Execute the specified command in the given interpreter. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `interpreter-exec'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-interpreter-exec console "break main"
+&"During symbol reading, couldn't parse type; debugger out of date?.\n"
+&"During symbol reading, bad structure-type format.\n"
+~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
+^done
+(gdb)
+

+ + +

The -inferior-tty-set Command

+ +

+ + +

Synopsis

+ +

+ +
 
-inferior-tty-set /dev/pts/1
+

+ +Set terminal for future runs of the program being debugged. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `set inferior-tty' /dev/pts/1. +

+ + +

Example

+ +

+ +
 
(gdb)
+-inferior-tty-set /dev/pts/1
+^done
+(gdb)
+

+ + +

The -inferior-tty-show Command

+ +

+ + +

Synopsis

+ +

+ +
 
-inferior-tty-show
+

+ +Show terminal for future runs of program being debugged. +

+ + +

GDB Command

+ +

+ +The corresponding GDB command is `show inferior-tty'. +

+ + +

Example

+ +

+ +
 
(gdb)
+-inferior-tty-set /dev/pts/1
+^done
+(gdb)
+-inferior-tty-show
+^done,inferior_tty_terminal="/dev/pts/1"
+(gdb)
+

+ + +

The -enable-timings Command

+ +

+ + +

Synopsis

+ +

+ +
 
-enable-timings [yes | no]
+

+ +Toggle the printing of the wallclock, user and system times for an MI +command as a field in its output. This command is to help frontend +developers optimize the performance of their code. No argument is +equivalent to `yes'. +

+ + +

GDB Command

+ +

+ +No equivalent. +

+ + +

Example

+ +

+ +
 
(gdb)
+-enable-timings
+^done
+(gdb)
+-break-insert main
+^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+addr="0x080484ed",func="main",file="myprog.c",
+fullname="/home/nickrob/myprog.c",line="73",times="0"},
+time={wallclock="0.05185",user="0.00800",system="0.00000"}
+(gdb)
+-enable-timings no
+^done
+(gdb)
+-exec-run
+^running
+(gdb)
+*stopped,reason="breakpoint-hit",bkptno="1",thread-id="0",
+frame={addr="0x080484ed",func="main",args=[{name="argc",value="1"},
+{name="argv",value="0xbfb60364"}],file="myprog.c",
+fullname="/home/nickrob/myprog.c",line="73"}
+(gdb)
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_26.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_26.html new file mode 100644 index 0000000..212aad6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_26.html @@ -0,0 +1,526 @@ + + + + + +Debugging with GDB: Annotations + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25. GDB Annotations

+ +

+ +This chapter describes annotations in GDB. Annotations were +designed to interface GDB to graphical user interfaces or other +similar programs which want to interact with GDB at a +relatively high level. +

+ +The annotation mechanism has largely been superseded by GDB/MI +(see section 24. The GDB/MI Interface). +

+ +

+ + + + + + + +
25.1 What is an Annotation?  What annotations are; the general syntax.
25.2 The Server Prefix  Issuing a command without affecting user state.
25.3 Annotation for GDB Input  Annotations marking GDB's need for input.
25.4 Errors  Annotations for error messages.
25.5 Invalidation Notices  Some annotations describe things now invalid.
25.6 Running the Program  Whether the program is running, how it stopped, etc.
25.7 Displaying Source  Annotations describing source code.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25.1 What is an Annotation?

+ +

+ +Annotations start with a newline character, two `control-z' +characters, and the name of the annotation. If there is no additional +information associated with this annotation, the name of the annotation +is followed immediately by a newline. If there is additional +information, the name of the annotation is followed by a space, the +additional information, and a newline. The additional information +cannot contain newline characters. +

+ +Any output not beginning with a newline and two `control-z' +characters denotes literal output from GDB. Currently there is +no need for GDB to output a newline followed by two +`control-z' characters, but if there was such a need, the +annotations could be extended with an `escape' annotation which +means those three characters as output. +

+ +The annotation level, which is specified using the +`--annotate' command line option (see section 2.1.2 Choosing Modes), controls +how much information GDB prints together with its prompt, +values of expressions, source lines, and other types of output. Level 0 +is for no annotations, level 1 is for use when GDB is run as a +subprocess of GNU Emacs, level 3 is the maximum annotation suitable +for programs that control GDB, and level 2 annotations have +been made obsolete (see section `Limitations of the Annotation Interface' in GDB's Obsolete Annotations). +

+ +

+ +
set annotate level +
The GDB command set annotate sets the level of +annotations to the specified level. +

+ +

show annotate +
+Show the current annotation level. +
+

+ +This chapter describes level 3 annotations. +

+ +A simple example of starting up GDB with annotations is: +

+ +
 
$ gdb --annotate=3
+GNU gdb 6.0
+Copyright 2003 Free Software Foundation, Inc.
+GDB is free software, covered by the GNU General Public License,
+and you are welcome to change it and/or distribute copies of it
+under certain conditions.
+Type "show copying" to see the conditions.
+There is absolutely no warranty for GDB.  Type "show warranty"
+for details.
+This GDB was configured as "i386-pc-linux-gnu"
+
+^Z^Zpre-prompt
+(gdb)
+^Z^Zprompt
+quit
+
+^Z^Zpost-prompt
+$
+

+ +Here `quit' is input to GDB; the rest is output from +GDB. The three lines beginning `^Z^Z' (where `^Z' +denotes a `control-z' character) are annotations; the rest is +output from GDB. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25.2 The Server Prefix

+ +

+ +If you prefix a command with `server ' then it will not affect +the command history, nor will it affect GDB's notion of which +command to repeat if RET is pressed on a line by itself. This +means that commands can be run behind a user's back by a front-end in +a transparent manner. +

+ +The server prefix does not affect the recording of values into the value +history; to print a value without recording it into the value history, +use the output command instead of the print command. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25.3 Annotation for GDB Input

+ +

+ + +When GDB prompts for input, it annotates this fact so it is possible +to know when to send output, when the output from a given command is +over, etc. +

+ +Different kinds of input each have a different input type. Each +input type has three annotations: a pre- annotation, which +denotes the beginning of any prompt which is being output, a plain +annotation, which denotes the end of the prompt, and then a post- +annotation which denotes the end of any echo which may (or may not) be +associated with the input. For example, the prompt input type +features the following annotations: +

+ +
 
^Z^Zpre-prompt
+^Z^Zprompt
+^Z^Zpost-prompt
+

+ +The input types are +

+ +

+ + + +
prompt +
When GDB is prompting for a command (the main GDB prompt). +

+ + + + +

commands +
When GDB prompts for a set of commands, like in the commands +command. The annotations are repeated for each command which is input. +

+ + + + +

overload-choice +
When GDB wants the user to select between various overloaded functions. +

+ + + + +

query +
When GDB wants the user to confirm a potentially dangerous operation. +

+ + + + +

prompt-for-continue +
When GDB is asking the user to press return to continue. Note: Don't +expect this to work well; instead use set height 0 to disable +prompting. This is because the counting of lines is buggy in the +presence of annotations. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25.4 Errors

+ +

+ + +
 
^Z^Zquit
+

+ +This annotation occurs right before GDB responds to an interrupt. +

+ + +
 
^Z^Zerror
+

+ +This annotation occurs right before GDB responds to an error. +

+ +Quit and error annotations indicate that any annotations which GDB was +in the middle of may end abruptly. For example, if a +value-history-begin annotation is followed by a error, one +cannot expect to receive the matching value-history-end. One +cannot expect not to receive it either, however; an error annotation +does not necessarily mean that GDB is immediately returning all the way +to the top level. +

+ + +A quit or error annotation may be preceded by +

+ +
 
^Z^Zerror-begin
+

+ +Any output between that and the quit or error annotation is the error +message. +

+ +Warning messages are not yet annotated. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25.5 Invalidation Notices

+ +

+ + +The following annotations say that certain pieces of state may have +changed. +

+ +

+ +
^Z^Zframes-invalid +

+ +The frames (for example, output from the backtrace command) may +have changed. +

+ + +

^Z^Zbreakpoints-invalid +

+ +The breakpoints may have changed. For example, the user just added or +deleted a breakpoint. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25.6 Running the Program

+ +

+ + + +When the program starts executing due to a GDB command such as +step or continue, +

+ +
 
^Z^Zstarting
+

+ +is output. When the program stops, +

+ +
 
^Z^Zstopped
+

+ +is output. Before the stopped annotation, a variety of +annotations describe how the program stopped. +

+ +

+ +
^Z^Zexited exit-status +
The program exited, and exit-status is the exit status (zero for +successful exit, otherwise nonzero). +

+ + + + + + +

^Z^Zsignalled +
The program exited with a signal. After the ^Z^Zsignalled, the +annotation continues: +

+ +
 
intro-text
+^Z^Zsignal-name
+name
+^Z^Zsignal-name-end
+middle-text
+^Z^Zsignal-string
+string
+^Z^Zsignal-string-end
+end-text
+

+ +where name is the name of the signal, such as SIGILL or +SIGSEGV, and string is the explanation of the signal, such +as Illegal Instruction or Segmentation fault. +intro-text, middle-text, and end-text are for the +user's benefit and have no particular format. +

+ + +

^Z^Zsignal +
The syntax of this annotation is just like signalled, but GDB is +just saying that the program received the signal, not that it was +terminated with it. +

+ + +

^Z^Zbreakpoint number +
The program hit breakpoint number number. +

+ + +

^Z^Zwatchpoint number +
The program hit watchpoint number number. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

25.7 Displaying Source

+ +

+ + +The following annotation is used instead of displaying source code: +

+ +
 
^Z^Zsource filename:line:character:middle:addr
+

+ +where filename is an absolute file name indicating which source +file, line is the line number within that file (where 1 is the +first line in the file), character is the character position +within the file (where 0 is the first character in the file) (for most +debug formats this will necessarily point to the beginning of a line), +middle is `middle' if addr is in the middle of the +line, or `beg' if addr is at the beginning of the line, and +addr is the address in the target program associated with the +source which is being displayed. addr is in the form `0x' +followed by one or more lowercase hex digits (note that this does not +depend on the language). +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_27.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_27.html new file mode 100644 index 0000000..0619d3e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_27.html @@ -0,0 +1,381 @@ + + + + + +Debugging with GDB: GDB Bugs + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

26. Reporting Bugs in GDB

+ +

+ +Your bug reports play an essential role in making GDB reliable. +

+ +Reporting a bug may help you by bringing a solution to your problem, or it +may not. But in any case the principal function of a bug report is to help +the entire community by making the next version of GDB work better. Bug +reports are your contribution to the maintenance of GDB. +

+ +In order for a bug report to serve its purpose, you must include the +information that enables us to fix the bug. +

+ +

+ + +
26.1 Have You Found a Bug?  Have you found a bug?
26.2 How to Report Bugs  How to report bugs
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

26.1 Have You Found a Bug?

+ +

+ +If you are not sure whether you have found a bug, here are some guidelines: +

+ +

    + + + +
  • +If the debugger gets a fatal signal, for any input whatever, that is a +GDB bug. Reliable debuggers never crash. +

    + + +

  • +If GDB produces an error message for valid input, that is a +bug. (Note that if you're cross debugging, the problem may also be +somewhere in the connection to the target.) +

    + + +

  • +If GDB does not produce an error message for invalid input, +that is a bug. However, you should note that your idea of +"invalid input" might be our idea of "an extension" or "support +for traditional practice". +

    + +

  • +If you are an experienced user of debugging tools, your suggestions +for improvement of GDB are welcome in any case. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

26.2 How to Report Bugs

+ +

+ +A number of companies and individuals offer support for GNU products. +If you obtained GDB from a support organization, we recommend you +contact that organization first. +

+ +You can find contact information for many support companies and +individuals in the file `etc/SERVICE' in the GNU Emacs +distribution. +

+ +In any event, we also recommend that you submit bug reports for +GDB. The preferred method is to submit them directly using +GDB's Bugs web +page. Alternatively, the e-mail gateway can +be used. +

+ +Do not send bug reports to `info-gdb', or to +`help-gdb', or to any newsgroups. Most users of GDB do +not want to receive bug reports. Those that do have arranged to receive +`bug-gdb'. +

+ +The mailing list `bug-gdb' has a newsgroup `gnu.gdb.bug' which +serves as a repeater. The mailing list and the newsgroup carry exactly +the same messages. Often people think of posting bug reports to the +newsgroup instead of mailing them. This appears to work, but it has one +problem which can be crucial: a newsgroup posting often lacks a mail +path back to the sender. Thus, if we need to ask for more information, +we may be unable to reach you. For this reason, it is better to send +bug reports to the mailing list. +

+ +The fundamental principle of reporting bugs usefully is this: +report all the facts. If you are not sure whether to state a +fact or leave it out, state it! +

+ +Often people omit facts because they think they know what causes the +problem and assume that some details do not matter. Thus, you might +assume that the name of the variable you use in an example does not matter. +Well, probably it does not, but one cannot be sure. Perhaps the bug is a +stray memory reference which happens to fetch from the location where that +name is stored in memory; perhaps, if the name were different, the contents +of that location would fool the debugger into doing the right thing despite +the bug. Play it safe and give a specific, complete example. That is the +easiest thing for you to do, and the most helpful. +

+ +Keep in mind that the purpose of a bug report is to enable us to fix the +bug. It may be that the bug has been reported previously, but neither +you nor we can know that unless your bug report is complete and +self-contained. +

+ +Sometimes people give a few sketchy facts and ask, "Does this ring a +bell?" Those bug reports are useless, and we urge everyone to +refuse to respond to them except to chide the sender to report +bugs properly. +

+ +To enable us to fix the bug, you should include all these things: +

+ +

    +
  • +The version of GDB. GDB announces it if you start +with no arguments; you can also print it at any time using show +version. +

    + +Without this, we will not know whether there is any point in looking for +the bug in the current version of GDB. +

    + +

  • +The type of machine you are using, and the operating system name and +version number. +

    + +

  • +What compiler (and its version) was used to compile GDB---e.g. +"gcc--2.8.1". +

    + +

  • +What compiler (and its version) was used to compile the program you are +debugging--e.g. "gcc--2.8.1", or "HP92453-01 A.10.32.03 HP +C Compiler". For GCC, you can say gcc --version +to get this information; for other compilers, see the documentation for +those compilers. +

    + +

  • +The command arguments you gave the compiler to compile your example and +observe the bug. For example, did you use `-O'? To guarantee +you will not omit something important, list them all. A copy of the +Makefile (or the output from make) is sufficient. +

    + +If we were to try to guess the arguments, we would probably guess wrong +and then we might not encounter the bug. +

    + +

  • +A complete input script, and all necessary source files, that will +reproduce the bug. +

    + +

  • +A description of what behavior you observe that you believe is +incorrect. For example, "It gets a fatal signal." +

    + +Of course, if the bug is that GDB gets a fatal signal, then we +will certainly notice it. But if the bug is incorrect output, we might +not notice unless it is glaringly wrong. You might as well not give us +a chance to make a mistake. +

    + +Even if the problem you experience is a fatal signal, you should still +say so explicitly. Suppose something strange is going on, such as, your +copy of GDB is out of synch, or you have encountered a bug in +the C library on your system. (This has happened!) Your copy might +crash and ours would not. If you told us to expect a crash, then when +ours fails to crash, we would know that the bug was not happening for +us. If you had not told us to expect a crash, then we would not be able +to draw any conclusion from our observations. +

    + + + +To collect all this information, you can use a session recording program +such as script, which is available on many Unix systems. +Just run your GDB session inside script and then +include the `typescript' file with your bug report. +

    + +Another way to record a GDB session is to run GDB +inside Emacs and then save the entire buffer to a file. +

    + +

  • +If you wish to suggest changes to the GDB source, send us context +diffs. If you even discuss something in the GDB source, refer to +it by context, not by line number. +

    + +The line numbers in our development sources will not match those in your +sources. Your line numbers would convey no useful information to us. +

    + +

+

+ +Here are some things that are not necessary: +

+ +

    +
  • +A description of the envelope of the bug. +

    + +Often people who encounter a bug spend a lot of time investigating +which changes to the input file will make the bug go away and which +changes will not affect it. +

    + +This is often time consuming and not very useful, because the way we +will find the bug is by running a single example under the debugger +with breakpoints, not by pure deduction from a series of examples. +We recommend that you save your time for something else. +

    + +Of course, if you can find a simpler example to report instead +of the original one, that is a convenience for us. Errors in the +output will be easier to spot, running under the debugger will take +less time, and so on. +

    + +However, simplification is not vital; if you do not want to do this, +report the bug anyway and send us the entire test case you used. +

    + +

  • +A patch for the bug. +

    + +A patch for the bug does help us if it is a good one. But do not omit +the necessary information, such as the test case, on the assumption that +a patch is all we need. We might see problems with your patch and decide +to fix the problem another way, or we might not understand it at all. +

    + +Sometimes with a program as complicated as GDB it is very hard to +construct an example that will make the program follow a certain path +through the code. If you do not send us the example, we will not be able +to construct one, so we will not be able to verify that the bug is fixed. +

    + +And if we cannot understand what bug you are trying to fix, or why your +patch should be an improvement, we will not install it. A test case will +help us to understand. +

    + +

  • +A guess about what the bug is or what it depends on. +

    + +Such guesses are usually wrong. Even we cannot guess right about such +things without first using the debugger to find the facts. +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_28.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_28.html new file mode 100644 index 0000000..2230975 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_28.html @@ -0,0 +1,1985 @@ + + + + + +Debugging with GDB: Command Line Editing + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27. Command Line Editing

+ +

+ +This chapter describes the basic features of the GNU +command line editing interface. +

+ +

+ + + + + +
27.1 Introduction to Line Editing  Notation used in this text.
27.2 Readline Interaction  The minimum set of commands for editing a line.
27.3 Readline Init File  Customizing Readline from a user's view.
27.4 Bindable Readline Commands  A description of most of the Readline commands + available for binding
27.5 Readline vi Mode  A short description of how to make Readline + behave like the vi editor.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.1 Introduction to Line Editing

+ +

+ +The following paragraphs describe the notation used to represent +keystrokes. +

+ +The text C-k is read as `Control-K' and describes the character +produced when the k key is pressed while the Control key +is depressed. +

+ +The text M-k is read as `Meta-K' and describes the character +produced when the Meta key (if you have one) is depressed, and the k +key is pressed. +The Meta key is labeled ALT on many keyboards. +On keyboards with two keys labeled ALT (usually to either side of +the space bar), the ALT on the left side is generally set to +work as a Meta key. +The ALT key on the right may also be configured to work as a +Meta key or may be configured as some other modifier, such as a +Compose key for typing accented characters. +

+ +If you do not have a Meta or ALT key, or another key working as +a Meta key, the identical keystroke can be generated by typing ESC +first, and then typing k. +Either process is known as metafying the k key. +

+ +The text M-C-k is read as `Meta-Control-k' and describes the +character produced by metafying C-k. +

+ +In addition, several keys have their own names. Specifically, +DEL, ESC, LFD, SPC, RET, and TAB all +stand for themselves when seen in this text, or in an init file +(see section 27.3 Readline Init File). +If your keyboard lacks a LFD key, typing C-j will +produce the desired character. +The RET key may be labeled Return or Enter on +some keyboards. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.2 Readline Interaction

+ +

+ +Often during an interactive session you type in a long line of text, +only to notice that the first word on the line is misspelled. The +Readline library gives you a set of commands for manipulating the text +as you type it in, allowing you to just fix your typo, and not forcing +you to retype the majority of the line. Using these editing commands, +you move the cursor to the place that needs correction, and delete or +insert the text of the corrections. Then, when you are satisfied with +the line, you simply press RET. You do not have to be at the +end of the line to press RET; the entire line is accepted +regardless of the location of the cursor within the line. +

+ +

+ + + + + +
27.2.1 Readline Bare Essentials  The least you need to know about Readline.
27.2.2 Readline Movement Commands  Moving about the input line.
27.2.3 Readline Killing Commands  How to delete text, and how to get it back!
27.2.4 Readline Arguments  Giving numeric arguments to commands.
27.2.5 Searching for Commands in the History  Searching through previous lines.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.2.1 Readline Bare Essentials

+ +

+ +In order to enter characters into the line, simply type them. The typed +character appears where the cursor was, and then the cursor moves one +space to the right. If you mistype a character, you can use your +erase character to back up and delete the mistyped character. +

+ +Sometimes you may mistype a character, and +not notice the error until you have typed several other characters. In +that case, you can type C-b to move the cursor to the left, and then +correct your mistake. Afterwards, you can move the cursor to the right +with C-f. +

+ +When you add text in the middle of a line, you will notice that characters +to the right of the cursor are `pushed over' to make room for the text +that you have inserted. Likewise, when you delete text behind the cursor, +characters to the right of the cursor are `pulled back' to fill in the +blank space created by the removal of the text. A list of the bare +essentials for editing the text of an input line follows. +

+ +

+
C-b +
Move back one character. +
C-f +
Move forward one character. +
DEL or Backspace +
Delete the character to the left of the cursor. +
C-d +
Delete the character underneath the cursor. +
Printing characters +
Insert the character into the line at the cursor. +
C-_ or C-x C-u +
Undo the last editing command. You can undo all the way back to an +empty line. +
+

+ +(Depending on your configuration, the Backspace key be set to +delete the character to the left of the cursor and the DEL key set +to delete the character underneath the cursor, like C-d, rather +than the character to the left of the cursor.) +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.2.2 Readline Movement Commands

+ +

+ +The above table describes the most basic keystrokes that you need +in order to do editing of the input line. For your convenience, many +other commands have been added in addition to C-b, C-f, +C-d, and DEL. Here are some commands for moving more rapidly +about the line. +

+ +

+
C-a +
Move to the start of the line. +
C-e +
Move to the end of the line. +
M-f +
Move forward a word, where a word is composed of letters and digits. +
M-b +
Move backward a word. +
C-l +
Clear the screen, reprinting the current line at the top. +
+

+ +Notice how C-f moves forward a character, while M-f moves +forward a word. It is a loose convention that control keystrokes +operate on characters while meta keystrokes operate on words. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.2.3 Readline Killing Commands

+ +

+ + + +

+ +Killing text means to delete the text from the line, but to save +it away for later use, usually by yanking (re-inserting) +it back into the line. +(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) +

+ +If the description for a command says that it `kills' text, then you can +be sure that you can get the text back in a different (or the same) +place later. +

+ +When you use a kill command, the text is saved in a kill-ring. +Any number of consecutive kills save all of the killed text together, so +that when you yank it back, you get it all. The kill +ring is not line specific; the text that you killed on a previously +typed line is available to be yanked back later, when you are typing +another line. + +

+ +Here is the list of commands for killing text. +

+ +

+
C-k +
Kill the text from the current cursor position to the end of the line. +

+ +

M-d +
Kill from the cursor to the end of the current word, or, if between +words, to the end of the next word. +Word boundaries are the same as those used by M-f. +

+ +

M-DEL +
Kill from the cursor the start of the current word, or, if between +words, to the start of the previous word. +Word boundaries are the same as those used by M-b. +

+ +

C-w +
Kill from the cursor to the previous whitespace. This is different than +M-DEL because the word boundaries differ. +

+ +

+

+ +Here is how to yank the text back into the line. Yanking +means to copy the most-recently-killed text from the kill buffer. +

+ +

+
C-y +
Yank the most recently killed text back into the buffer at the cursor. +

+ +

M-y +
Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is C-y or M-y. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.2.4 Readline Arguments

+ +

+ +You can pass numeric arguments to Readline commands. Sometimes the +argument acts as a repeat count, other times it is the sign of the +argument that is significant. If you pass a negative argument to a +command which normally acts in a forward direction, that command will +act in a backward direction. For example, to kill text back to the +start of the line, you might type `M-- C-k'. +

+ +The general way to pass numeric arguments to a command is to type meta +digits before the command. If the first `digit' typed is a minus +sign (`-'), then the sign of the argument will be negative. Once +you have typed one meta digit to get the argument started, you can type +the remainder of the digits, and then the command. For example, to give +the C-d command an argument of 10, you could type `M-1 0 C-d', +which will delete the next ten characters on the input line. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.2.5 Searching for Commands in the History

+ +

+ +Readline provides commands for searching through the command history +for lines containing a specified string. +There are two search modes: incremental and non-incremental. +

+ +Incremental searches begin before the user has finished typing the +search string. +As each character of the search string is typed, Readline displays +the next entry from the history matching the string typed so far. +An incremental search requires only as many characters as needed to +find the desired history entry. +To search backward in the history for a particular string, type +C-r. Typing C-s searches forward through the history. +The characters present in the value of the isearch-terminators variable +are used to terminate an incremental search. +If that variable has not been assigned a value, the ESC and +C-J characters will terminate an incremental search. +C-g will abort an incremental search and restore the original line. +When the search is terminated, the history entry containing the +search string becomes the current line. +

+ +To find other matching entries in the history list, type C-r or +C-s as appropriate. +This will search backward or forward in the history for the next +entry matching the search string typed so far. +Any other key sequence bound to a Readline command will terminate +the search and execute that command. +For instance, a RET will terminate the search and accept +the line, thereby executing the command from the history list. +A movement command will terminate the search, make the last line found +the current line, and begin editing. +

+ +Readline remembers the last incremental search string. If two +C-rs are typed without any intervening characters defining a new +search string, any remembered search string is used. +

+ +Non-incremental searches read the entire search string before starting +to search for matching history lines. The search string may be +typed by the user or be part of the contents of the current line. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.3 Readline Init File

+ +

+ +Although the Readline library comes with a set of Emacs-like +keybindings installed by default, it is possible to use a different set +of keybindings. +Any user can customize programs that use Readline by putting +commands in an inputrc file, conventionally in his home directory. +The name of this +file is taken from the value of the environment variable INPUTRC. If +that variable is unset, the default is `~/.inputrc'. +

+ +When a program which uses the Readline library starts up, the +init file is read, and the key bindings are set. +

+ +In addition, the C-x C-r command re-reads this init file, thus +incorporating any changes that you might have made to it. +

+ +

+ +
27.3.1 Readline Init File Syntax  Syntax for the commands in the inputrc file.
+ +
+ + +
27.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.
+ +
+ + +
27.3.3 Sample Init File  An example inputrc file.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.3.1 Readline Init File Syntax

+ +

+ +There are only a few basic constructs allowed in the +Readline init file. Blank lines are ignored. +Lines beginning with a `#' are comments. +Lines beginning with a `$' indicate conditional +constructs (see section 27.3.2 Conditional Init Constructs). Other lines +denote variable settings and key bindings. +

+ +

+
Variable Settings +
You can modify the run-time behavior of Readline by +altering the values of variables in Readline +using the set command within the init file. +The syntax is simple: +

+ +
 
set variable value
+

+ +Here, for example, is how to +change from the default Emacs-like key binding to use +vi line editing commands: +

+ +
 
set editing-mode vi
+

+ +Variable names and values, where appropriate, are recognized without regard +to case. Unrecognized variable names are ignored. +

+ +Boolean variables (those that can be set to on or off) are set to on if +the value is null or empty, on (case-insensitive), or 1. Any other +value results in the variable being set to off. +

+ +A great deal of run-time behavior is changeable with the following +variables. +

+ + +

+ +
bell-style +
+Controls what happens when Readline wants to ring the terminal bell. +If set to `none', Readline never rings the bell. If set to +`visible', Readline uses a visible bell if one is available. +If set to `audible' (the default), Readline attempts to ring +the terminal's bell. +

+ +

bind-tty-special-chars +
+If set to `on', Readline attempts to bind the control characters +treated specially by the kernel's terminal driver to their Readline +equivalents. +

+ +

comment-begin +
+The string to insert at the beginning of the line when the +insert-comment command is executed. The default value +is "#". +

+ +

completion-ignore-case +
If set to `on', Readline performs filename matching and completion +in a case-insensitive fashion. +The default value is `off'. +

+ +

completion-query-items +
+The number of possible completions that determines when the user is +asked whether the list of possibilities should be displayed. +If the number of possible completions is greater than this value, +Readline will ask the user whether or not he wishes to view +them; otherwise, they are simply listed. +This variable must be set to an integer value greater than or equal to 0. +A negative value means Readline should never ask. +The default limit is 100. +

+ +

convert-meta +
+If set to `on', Readline will convert characters with the +eighth bit set to an ASCII key sequence by stripping the eighth +bit and prefixing an ESC character, converting them to a +meta-prefixed key sequence. The default value is `on'. +

+ +

disable-completion +
+If set to `On', Readline will inhibit word completion. +Completion characters will be inserted into the line as if they had +been mapped to self-insert. The default is `off'. +

+ +

editing-mode +
+The editing-mode variable controls which default set of +key bindings is used. By default, Readline starts up in Emacs editing +mode, where the keystrokes are most similar to Emacs. This variable can be +set to either `emacs' or `vi'. +

+ +

enable-keypad +
+When set to `on', Readline will try to enable the application +keypad when it is called. Some systems need this to enable the +arrow keys. The default is `off'. +

+ +

expand-tilde +
+If set to `on', tilde expansion is performed when Readline +attempts word completion. The default is `off'. +

+ +

history-preserve-point +
+If set to `on', the history code attempts to place point at the +same location on each history line retrieved with previous-history +or next-history. The default is `off'. +

+ +

horizontal-scroll-mode +
+This variable can be set to either `on' or `off'. Setting it +to `on' means that the text of the lines being edited will scroll +horizontally on a single screen line when they are longer than the width +of the screen, instead of wrapping onto a new screen line. By default, +this variable is set to `off'. +

+ +

input-meta +
+ +If set to `on', Readline will enable eight-bit input (it +will not clear the eighth bit in the characters it reads), +regardless of what the terminal claims it can support. The +default value is `off'. The name meta-flag is a +synonym for this variable. +

+ +

isearch-terminators +
+The string of characters that should terminate an incremental search without +subsequently executing the character as a command (see section 27.2.5 Searching for Commands in the History). +If this variable has not been given a value, the characters ESC and +C-J will terminate an incremental search. +

+ +

keymap +
+Sets Readline's idea of the current keymap for key binding commands. +Acceptable keymap names are +emacs, +emacs-standard, +emacs-meta, +emacs-ctlx, +vi, +vi-move, +vi-command, and +vi-insert. +vi is equivalent to vi-command; emacs is +equivalent to emacs-standard. The default value is emacs. +The value of the editing-mode variable also affects the +default keymap. +

+ +

mark-directories +
If set to `on', completed directory names have a slash +appended. The default is `on'. +

+ +

mark-modified-lines +
+This variable, when set to `on', causes Readline to display an +asterisk (`*') at the start of history lines which have been modified. +This variable is `off' by default. +

+ +

mark-symlinked-directories +
+If set to `on', completed names which are symbolic links +to directories have a slash appended (subject to the value of +mark-directories). +The default is `off'. +

+ +

match-hidden-files +
+This variable, when set to `on', causes Readline to match files whose +names begin with a `.' (hidden files) when performing filename +completion, unless the leading `.' is +supplied by the user in the filename to be completed. +This variable is `on' by default. +

+ +

output-meta +
+If set to `on', Readline will display characters with the +eighth bit set directly rather than as a meta-prefixed escape +sequence. The default is `off'. +

+ +

page-completions +
+If set to `on', Readline uses an internal more-like pager +to display a screenful of possible completions at a time. +This variable is `on' by default. +

+ +

print-completions-horizontally +
If set to `on', Readline will display completions with matches +sorted horizontally in alphabetical order, rather than down the screen. +The default is `off'. +

+ +

show-all-if-ambiguous +
+This alters the default behavior of the completion functions. If +set to `on', +words which have more than one possible completion cause the +matches to be listed immediately instead of ringing the bell. +The default value is `off'. +

+ +

show-all-if-unmodified +
+This alters the default behavior of the completion functions in +a fashion similar to show-all-if-ambiguous. +If set to `on', +words which have more than one possible completion without any +possible partial completion (the possible completions don't share +a common prefix) cause the matches to be listed immediately instead +of ringing the bell. +The default value is `off'. +

+ +

visible-stats +
+If set to `on', a character denoting a file's type +is appended to the filename when listing possible +completions. The default is `off'. +

+ +

+

+ +

Key Bindings +
The syntax for controlling key bindings in the init file is +simple. First you need to find the name of the command that you +want to change. The following sections contain tables of the command +name, the default keybinding, if any, and a short description of what +the command does. +

+ +Once you know the name of the command, simply place on a line +in the init file the name of the key +you wish to bind the command to, a colon, and then the name of the +command. The name of the key +can be expressed in different ways, depending on what you find most +comfortable. +

+ +In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a macro). +

+ +

+
keyname: function-name or macro +
keyname is the name of a key spelled out in English. For example: +
 
Control-u: universal-argument
+Meta-Rubout: backward-kill-word
+Control-o: "> output"
+

+ +In the above example, C-u is bound to the function +universal-argument, +M-DEL is bound to the function backward-kill-word, and +C-o is bound to run the macro +expressed on the right hand side (that is, to insert the text +`> output' into the line). +

+ +A number of symbolic character names are recognized while +processing this key binding syntax: +DEL, +ESC, +ESCAPE, +LFD, +NEWLINE, +RET, +RETURN, +RUBOUT, +SPACE, +SPC, +and +TAB. +

+ +

"keyseq": function-name or macro +
keyseq differs from keyname above in that strings +denoting an entire key sequence can be specified, by placing +the key sequence in double quotes. Some GNU Emacs style key +escapes can be used, as in the following example, but the +special character names are not recognized. +

+ +
 
"\C-u": universal-argument
+"\C-x\C-r": re-read-init-file
+"\e[11~": "Function Key 1"
+

+ +In the above example, C-u is again bound to the function +universal-argument (just as it was in the first example), +`C-x C-r' is bound to the function re-read-init-file, +and `ESC [ 1 1 ~' is bound to insert +the text `Function Key 1'. +

+ +

+

+ +The following GNU Emacs style escape sequences are available when +specifying key sequences: +

+ +

+
\C- +
control prefix +
\M- +
meta prefix +
\e +
an escape character +
\\ +
backslash +
\" +
", a double quotation mark +
\' +
', a single quote or apostrophe +
+

+ +In addition to the GNU Emacs style escape sequences, a second +set of backslash escapes is available: +

+ +

+
\a +
alert (bell) +
\b +
backspace +
\d +
delete +
\f +
form feed +
\n +
newline +
\r +
carriage return +
\t +
horizontal tab +
\v +
vertical tab +
\nnn +
the eight-bit character whose value is the octal value nnn +(one to three digits) +
\xHH +
the eight-bit character whose value is the hexadecimal value HH +(one or two hex digits) +
+

+ +When entering the text of a macro, single or double quotes must +be used to indicate a macro definition. +Unquoted text is assumed to be a function name. +In the macro body, the backslash escapes described above are expanded. +Backslash will quote any other character in the macro text, +including `"' and `''. +For example, the following binding will make `C-x \' +insert a single `\' into the line: +
 
"\C-x\\": "\\"
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.3.2 Conditional Init Constructs

+ +

+ +Readline implements a facility similar in spirit to the conditional +compilation features of the C preprocessor which allows key +bindings and variable settings to be performed as the result +of tests. There are four parser directives used. +

+ +

+
$if +
The $if construct allows bindings to be made based on the +editing mode, the terminal being used, or the application using +Readline. The text of the test extends to the end of the line; +no characters are required to isolate it. +

+ +

+
mode +
The mode= form of the $if directive is used to test +whether Readline is in emacs or vi mode. +This may be used in conjunction +with the `set keymap' command, for instance, to set bindings in +the emacs-standard and emacs-ctlx keymaps only if +Readline is starting out in emacs mode. +

+ +

term +
The term= form may be used to include terminal-specific +key bindings, perhaps to bind the key sequences output by the +terminal's function keys. The word on the right side of the +`=' is tested against both the full name of the terminal and +the portion of the terminal name before the first `-'. This +allows sun to match both sun and sun-cmd, +for instance. +

+ +

application +
The application construct is used to include +application-specific settings. Each program using the Readline +library sets the application name, and you can test for +a particular value. +This could be used to bind key sequences to functions useful for +a specific program. For instance, the following command adds a +key sequence that quotes the current or previous word in Bash: +
 
$if Bash
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+$endif
+
+

+ +

$endif +
This command, as seen in the previous example, terminates an +$if command. +

+ +

$else +
Commands in this branch of the $if directive are executed if +the test fails. +

+ +

$include +
This directive takes a single filename as an argument and reads commands +and bindings from that file. +For example, the following directive reads from `/etc/inputrc': +
 
$include /etc/inputrc
+
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.3.3 Sample Init File

+ +

+ +Here is an example of an inputrc file. This illustrates key +binding, variable assignment, and conditional syntax. +

+ +
 
# This file controls the behaviour of line input editing for
+# programs that use the GNU Readline library.  Existing
+# programs include FTP, Bash, and GDB.
+#
+# You can re-read the inputrc file with C-x C-r.
+# Lines beginning with '#' are comments.
+#
+# First, include any systemwide bindings and variable
+# assignments from /etc/Inputrc
+$include /etc/Inputrc
+
+#
+# Set various bindings for emacs mode.
+
+set editing-mode emacs 
+
+$if mode=emacs
+
+Meta-Control-h:	backward-kill-word	Text after the function name is ignored
+
+#
+# Arrow keys in keypad mode
+#
+#"\M-OD":        backward-char
+#"\M-OC":        forward-char
+#"\M-OA":        previous-history
+#"\M-OB":        next-history
+#
+# Arrow keys in ANSI mode
+#
+"\M-[D":        backward-char
+"\M-[C":        forward-char
+"\M-[A":        previous-history
+"\M-[B":        next-history
+#
+# Arrow keys in 8 bit keypad mode
+#
+#"\M-\C-OD":       backward-char
+#"\M-\C-OC":       forward-char
+#"\M-\C-OA":       previous-history
+#"\M-\C-OB":       next-history
+#
+# Arrow keys in 8 bit ANSI mode
+#
+#"\M-\C-[D":       backward-char
+#"\M-\C-[C":       forward-char
+#"\M-\C-[A":       previous-history
+#"\M-\C-[B":       next-history
+
+C-q: quoted-insert
+
+$endif
+
+# An old-style binding.  This happens to be the default.
+TAB: complete
+
+# Macros that are convenient for shell interaction
+$if Bash
+# edit the path
+"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
+# prepare to type a quoted word --
+# insert open and close double quotes
+# and move to just after the open quote
+"\C-x\"": "\"\"\C-b"
+# insert a backslash (testing backslash escapes
+# in sequences and macros)
+"\C-x\\": "\\"
+# Quote the current or previous word
+"\C-xq": "\eb\"\ef\""
+# Add a binding to refresh the line, which is unbound
+"\C-xr": redraw-current-line
+# Edit variable on current line.
+"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
+$endif
+
+# use a visible bell if one is available
+set bell-style visible
+
+# don't strip characters to 7 bits when reading
+set input-meta on
+
+# allow iso-latin1 characters to be inserted rather
+# than converted to prefix-meta sequences
+set convert-meta off
+
+# display characters with the eighth bit set directly
+# rather than as meta-prefixed characters
+set output-meta on
+
+# if there are more than 150 possible completions for
+# a word, ask the user if he wants to see all of them
+set completion-query-items 150
+
+# For FTP
+$if Ftp
+"\C-xg": "get \M-?"
+"\C-xt": "put \M-?"
+"\M-.": yank-last-arg
+$endif
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4 Bindable Readline Commands

+ +

+ +

+ + + + + + + + +
27.4.1 Commands For Moving  Moving about the line.
27.4.2 Commands For Manipulating The History  Getting at previous lines.
27.4.3 Commands For Changing Text  Commands for changing text.
27.4.4 Killing And Yanking  Commands for killing and yanking.
27.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
27.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
27.4.7 Keyboard Macros  Saving and re-executing typed characters
27.4.8 Some Miscellaneous Commands  Other miscellaneous commands.
+

+ +This section describes Readline commands that may be bound to key +sequences. +Command names without an accompanying key sequence are unbound by default. +

+ +In the following descriptions, point refers to the current cursor +position, and mark refers to a cursor position saved by the +set-mark command. +The text between the point and mark is referred to as the region. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.1 Commands For Moving

+ +
+ +
beginning-of-line (C-a) +
+Move to the start of the current line. +

+ + +

end-of-line (C-e) +
+Move to the end of the line. +

+ + +

forward-char (C-f) +
+Move forward a character. +

+ + +

backward-char (C-b) +
+Move back a character. +

+ + +

forward-word (M-f) +
+Move forward to the end of the next word. Words are composed of +letters and digits. +

+ + +

backward-word (M-b) +
+Move back to the start of the current or previous word. Words are +composed of letters and digits. +

+ + +

clear-screen (C-l) +
+Clear the screen and redraw the current line, +leaving the current line at the top of the screen. +

+ + +

redraw-current-line () +
+Refresh the current line. By default, this is unbound. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.2 Commands For Manipulating The History

+ +

+ +

+ +
accept-line (Newline or Return) +
+Accept the line regardless of where the cursor is. +If this line is +non-empty, it may be added to the history list for future recall with +add_history(). +If this line is a modified history line, the history line is restored +to its original state. +

+ + +

previous-history (C-p) +
+Move `back' through the history list, fetching the previous command. +

+ + +

next-history (C-n) +
+Move `forward' through the history list, fetching the next command. +

+ + +

beginning-of-history (M-<) +
+Move to the first line in the history. +

+ + +

end-of-history (M->) +
+Move to the end of the input history, i.e., the line currently +being entered. +

+ + +

reverse-search-history (C-r) +
+Search backward starting at the current line and moving `up' through +the history as necessary. This is an incremental search. +

+ + +

forward-search-history (C-s) +
+Search forward starting at the current line and moving `down' through +the the history as necessary. This is an incremental search. +

+ + +

non-incremental-reverse-search-history (M-p) +
+Search backward starting at the current line and moving `up' +through the history as necessary using a non-incremental search +for a string supplied by the user. +

+ + +

non-incremental-forward-search-history (M-n) +
+Search forward starting at the current line and moving `down' +through the the history as necessary using a non-incremental search +for a string supplied by the user. +

+ + +

history-search-forward () +
+Search forward through the history for the string of characters +between the start of the current line and the point. +This is a non-incremental search. +By default, this command is unbound. +

+ + +

history-search-backward () +
+Search backward through the history for the string of characters +between the start of the current line and the point. This +is a non-incremental search. By default, this command is unbound. +

+ + +

yank-nth-arg (M-C-y) +
+Insert the first argument to the previous command (usually +the second word on the previous line) at point. +With an argument n, +insert the nth word from the previous command (the words +in the previous command begin with word 0). A negative argument +inserts the nth word from the end of the previous command. +Once the argument n is computed, the argument is extracted +as if the `!n' history expansion had been specified. +

+ + +

yank-last-arg (M-. or M-_) +
+Insert last argument to the previous command (the last word of the +previous history entry). With an +argument, behave exactly like yank-nth-arg. +Successive calls to yank-last-arg move back through the history +list, inserting the last argument of each line in turn. +The history expansion facilities are used to extract the last argument, +as if the `!$' history expansion had been specified. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.3 Commands For Changing Text

+ +

+ +

+ +
delete-char (C-d) +
+Delete the character at point. If point is at the +beginning of the line, there are no characters in the line, and +the last character typed was not bound to delete-char, then +return EOF. +

+ + +

backward-delete-char (Rubout) +
+Delete the character behind the cursor. A numeric argument means +to kill the characters instead of deleting them. +

+ + +

forward-backward-delete-char () +
+Delete the character under the cursor, unless the cursor is at the +end of the line, in which case the character behind the cursor is +deleted. By default, this is not bound to a key. +

+ + +

quoted-insert (C-q or C-v) +
+Add the next character typed to the line verbatim. This is +how to insert key sequences like C-q, for example. +

+ + +

tab-insert (M-TAB) +
+Insert a tab character. +

+ + +

self-insert (a, b, A, 1, !, ...) +
+Insert yourself. +

+ + +

transpose-chars (C-t) +
+Drag the character before the cursor forward over +the character at the cursor, moving the +cursor forward as well. If the insertion point +is at the end of the line, then this +transposes the last two characters of the line. +Negative arguments have no effect. +

+ + +

transpose-words (M-t) +
+Drag the word before point past the word after point, +moving point past that word as well. +If the insertion point is at the end of the line, this transposes +the last two words on the line. +

+ + +

upcase-word (M-u) +
+Uppercase the current (or following) word. With a negative argument, +uppercase the previous word, but do not move the cursor. +

+ + +

downcase-word (M-l) +
+Lowercase the current (or following) word. With a negative argument, +lowercase the previous word, but do not move the cursor. +

+ + +

capitalize-word (M-c) +
+Capitalize the current (or following) word. With a negative argument, +capitalize the previous word, but do not move the cursor. +

+ + +

overwrite-mode () +
+Toggle overwrite mode. With an explicit positive numeric argument, +switches to overwrite mode. With an explicit non-positive numeric +argument, switches to insert mode. This command affects only +emacs mode; vi mode does overwrite differently. +Each call to readline() starts in insert mode. +

+ +In overwrite mode, characters bound to self-insert replace +the text at point rather than pushing the text to the right. +Characters bound to backward-delete-char replace the character +before point with a space. +

+ +By default, this command is unbound. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.4 Killing And Yanking

+ +

+ +

+ + +
kill-line (C-k) +
+Kill the text from point to the end of the line. +

+ + +

backward-kill-line (C-x Rubout) +
+Kill backward to the beginning of the line. +

+ + +

unix-line-discard (C-u) +
+Kill backward from the cursor to the beginning of the current line. +

+ + +

kill-whole-line () +
+Kill all characters on the current line, no matter where point is. +By default, this is unbound. +

+ + +

kill-word (M-d) +
+Kill from point to the end of the current word, or if between +words, to the end of the next word. +Word boundaries are the same as forward-word. +

+ + +

backward-kill-word (M-DEL) +
+Kill the word behind point. +Word boundaries are the same as backward-word. +

+ + +

unix-word-rubout (C-w) +
+Kill the word behind point, using white space as a word boundary. +The killed text is saved on the kill-ring. +

+ + +

unix-filename-rubout () +
+Kill the word behind point, using white space and the slash character +as the word boundaries. +The killed text is saved on the kill-ring. +

+ + +

delete-horizontal-space () +
+Delete all spaces and tabs around point. By default, this is unbound. +

+ + +

kill-region () +
+Kill the text in the current region. +By default, this command is unbound. +

+ + +

copy-region-as-kill () +
+Copy the text in the region to the kill buffer, so it can be yanked +right away. By default, this command is unbound. +

+ + +

copy-backward-word () +
+Copy the word before point to the kill buffer. +The word boundaries are the same as backward-word. +By default, this command is unbound. +

+ + +

copy-forward-word () +
+Copy the word following point to the kill buffer. +The word boundaries are the same as forward-word. +By default, this command is unbound. +

+ + +

yank (C-y) +
+Yank the top of the kill ring into the buffer at point. +

+ + +

yank-pop (M-y) +
+Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is yank or yank-pop. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.5 Specifying Numeric Arguments

+ +
+ + +
digit-argument (M-0, M-1, ... M--) +
+Add this digit to the argument already accumulating, or start a new +argument. M-- starts a negative argument. +

+ + +

universal-argument () +
+This is another way to specify an argument. +If this command is followed by one or more digits, optionally with a +leading minus sign, those digits define the argument. +If the command is followed by digits, executing universal-argument +again ends the numeric argument, but is otherwise ignored. +As a special case, if this command is immediately followed by a +character that is neither a digit or minus sign, the argument count +for the next command is multiplied by four. +The argument count is initially one, so executing this function the +first time makes the argument count four, a second time makes the +argument count sixteen, and so on. +By default, this is not bound to a key. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.6 Letting Readline Type For You

+ +

+ +

+ +
complete (TAB) +
+Attempt to perform completion on the text before point. +The actual completion performed is application-specific. +The default is filename completion. +

+ + +

possible-completions (M-?) +
+List the possible completions of the text before point. +

+ + +

insert-completions (M-*) +
+Insert all completions of the text before point that would have +been generated by possible-completions. +

+ + +

menu-complete () +
+Similar to complete, but replaces the word to be completed +with a single match from the list of possible completions. +Repeated execution of menu-complete steps through the list +of possible completions, inserting each match in turn. +At the end of the list of completions, the bell is rung +(subject to the setting of bell-style) +and the original text is restored. +An argument of n moves n positions forward in the list +of matches; a negative argument may be used to move backward +through the list. +This command is intended to be bound to TAB, but is unbound +by default. +

+ + +

delete-char-or-list () +
+Deletes the character under the cursor if not at the beginning or +end of the line (like delete-char). +If at the end of the line, behaves identically to +possible-completions. +This command is unbound by default. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.7 Keyboard Macros

+ +
+ + +
start-kbd-macro (C-x () +
+Begin saving the characters typed into the current keyboard macro. +

+ + +

end-kbd-macro (C-x )) +
+Stop saving the characters typed into the current keyboard macro +and save the definition. +

+ + +

call-last-kbd-macro (C-x e) +
+Re-execute the last keyboard macro defined, by making the characters +in the macro appear as if typed at the keyboard. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.4.8 Some Miscellaneous Commands

+ +
+ + +
re-read-init-file (C-x C-r) +
+Read in the contents of the inputrc file, and incorporate +any bindings or variable assignments found there. +

+ + +

abort (C-g) +
+Abort the current editing command and +ring the terminal's bell (subject to the setting of +bell-style). +

+ + +

do-uppercase-version (M-a, M-b, M-x, ...) +
+If the metafied character x is lowercase, run the command +that is bound to the corresponding uppercase character. +

+ + +

prefix-meta (ESC) +
+Metafy the next character typed. This is for keyboards +without a meta key. Typing `ESC f' is equivalent to typing +M-f. +

+ + +

undo (C-_ or C-x C-u) +
+Incremental undo, separately remembered for each line. +

+ + +

revert-line (M-r) +
+Undo all changes made to this line. This is like executing the undo +command enough times to get back to the beginning. +

+ + +

tilde-expand (M-~) +
+Perform tilde expansion on the current word. +

+ + +

set-mark (C-@) +
+Set the mark to the point. If a +numeric argument is supplied, the mark is set to that position. +

+ + +

exchange-point-and-mark (C-x C-x) +
+Swap the point with the mark. The current cursor position is set to +the saved position, and the old cursor position is saved as the mark. +

+ + +

character-search (C-]) +
+A character is read and point is moved to the next occurrence of that +character. A negative count searches for previous occurrences. +

+ + +

character-search-backward (M-C-]) +
+A character is read and point is moved to the previous occurrence +of that character. A negative count searches for subsequent +occurrences. +

+ + +

insert-comment (M-#) +
+Without a numeric argument, the value of the comment-begin +variable is inserted at the beginning of the current line. +If a numeric argument is supplied, this command acts as a toggle: if +the characters at the beginning of the line do not match the value +of comment-begin, the value is inserted, otherwise +the characters in comment-begin are deleted from the beginning of +the line. +In either case, the line is accepted as if a newline had been typed. +

+ + +

dump-functions () +
+Print all of the functions and their key bindings to the +Readline output stream. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an inputrc file. This command is unbound by default. +

+ + +

dump-variables () +
+Print all of the settable variables and their values to the +Readline output stream. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an inputrc file. This command is unbound by default. +

+ + +

dump-macros () +
+Print all of the Readline key sequences bound to macros and the +strings they output. If a numeric argument is supplied, +the output is formatted in such a way that it can be made part +of an inputrc file. This command is unbound by default. +

+ + +

emacs-editing-mode (C-e) +
+When in vi command mode, this causes a switch to emacs +editing mode. +

+ + +

vi-editing-mode (M-C-j) +
+When in emacs editing mode, this causes a switch to vi +editing mode. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

27.5 Readline vi Mode

+ +

+ +While the Readline library does not have a full set of vi +editing functions, it does contain enough to allow simple editing +of the line. The Readline vi mode behaves as specified in +the POSIX 1003.2 standard. +

+ +In order to switch interactively between emacs and vi +editing modes, use the command M-C-j (bound to emacs-editing-mode +when in vi mode and to vi-editing-mode in emacs mode). +The Readline default is emacs mode. +

+ +When you enter a line in vi mode, you are already placed in +`insertion' mode, as if you had typed an `i'. Pressing ESC +switches you into `command' mode, where you can edit the text of the +line with the standard vi movement keys, move to previous +history lines with `k' and subsequent lines with `j', and +so forth. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_29.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_29.html new file mode 100644 index 0000000..501c33d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_29.html @@ -0,0 +1,372 @@ + + + + + +Debugging with GDB: Using History Interactively + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

28. Using History Interactively

+ +

+ +This chapter describes how to use the GNU History Library interactively, +from a user's standpoint. It should be considered a user's guide. +For information on using the GNU History Library in other programs, +see the GNU Readline Library Manual. +

+ +

+ +
28.1 History Expansion  What it feels like using History as a user.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

28.1 History Expansion

+ +

+ +The History library provides a history expansion feature that is similar +to the history expansion provided by csh. This section +describes the syntax used to manipulate the history information. +

+ +History expansions introduce words from the history list into +the input stream, making it easy to repeat commands, insert the +arguments to a previous command into the current input line, or +fix errors in previous commands quickly. +

+ +History expansion takes place in two parts. The first is to determine +which line from the history list should be used during substitution. +The second is to select portions of that line for inclusion into the +current one. The line selected from the history is called the +event, and the portions of that line that are acted upon are +called words. Various modifiers are available to manipulate +the selected words. The line is broken into words in the same fashion +that Bash does, so that several words +surrounded by quotes are considered one word. +History expansions are introduced by the appearance of the +history expansion character, which is `!' by default. +

+ +

+ + + +
28.1.1 Event Designators  How to specify which history line to use.
28.1.2 Word Designators  Specifying which words are of interest.
28.1.3 Modifiers  Modifying the results of substitution.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

28.1.1 Event Designators

+ +

+ +An event designator is a reference to a command line entry in the +history list. + +

+ +

+ +
! +
Start a history substitution, except when followed by a space, tab, +the end of the line, or `='. +

+ +

!n +
Refer to command line n. +

+ +

!-n +
Refer to the command n lines back. +

+ +

!! +
Refer to the previous command. This is a synonym for `!-1'. +

+ +

!string +
Refer to the most recent command starting with string. +

+ +

!?string[?] +
Refer to the most recent command containing string. The trailing +`?' may be omitted if the string is followed immediately by +a newline. +

+ +

^string1^string2^ +
Quick Substitution. Repeat the last command, replacing string1 +with string2. Equivalent to +!!:s/string1/string2/. +

+ +

!# +
The entire command line typed so far. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

28.1.2 Word Designators

+ +

+ +Word designators are used to select desired words from the event. +A `:' separates the event specification from the word designator. It +may be omitted if the word designator begins with a `^', `$', +`*', `-', or `%'. Words are numbered from the beginning +of the line, with the first word being denoted by 0 (zero). Words are +inserted into the current line separated by single spaces. +

+ +For example, +

+ +

+
!! +
designates the preceding command. When you type this, the preceding +command is repeated in toto. +

+ +

!!:$ +
designates the last argument of the preceding command. This may be +shortened to !$. +

+ +

!fi:2 +
designates the second argument of the most recent command starting with +the letters fi. +
+

+ +Here are the word designators: + +

+ +
0 (zero) +
The 0th word. For many applications, this is the command word. +

+ +

n +
The nth word. +

+ +

^ +
The first argument; that is, word 1. +

+ +

$ +
The last argument. +

+ +

% +
The word matched by the most recent `?string?' search. +

+ +

x-y +
A range of words; `-y' abbreviates `0-y'. +

+ +

* +
All of the words, except the 0th. This is a synonym for `1-$'. +It is not an error to use `*' if there is just one word in the event; +the empty string is returned in that case. +

+ +

x* +
Abbreviates `x-$' +

+ +

x- +
Abbreviates `x-$' like `x*', but omits the last word. +

+ +

+

+ +If a word designator is supplied without an event specification, the +previous command is used as the event. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

28.1.3 Modifiers

+ +

+ +After the optional word designator, you can add a sequence of one or more +of the following modifiers, each preceded by a `:'. +

+ +

+ +
h +
Remove a trailing pathname component, leaving only the head. +

+ +

t +
Remove all leading pathname components, leaving the tail. +

+ +

r +
Remove a trailing suffix of the form `.suffix', leaving +the basename. +

+ +

e +
Remove all but the trailing suffix. +

+ +

p +
Print the new command but do not execute it. +

+ +

s/old/new/ +
Substitute new for the first occurrence of old in the +event line. Any delimiter may be used in place of `/'. +The delimiter may be quoted in old and new +with a single backslash. If `&' appears in new, +it is replaced by old. A single backslash will quote +the `&'. The final delimiter is optional if it is the last +character on the input line. +

+ +

& +
Repeat the previous substitution. +

+ +

g +
a +
Cause changes to be applied over the entire event line. Used in +conjunction with `s', as in gs/old/new/, +or with `&'. +

+ +

G +
Apply the following `s' modifier once to each word in the event. +

+ +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_3.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_3.html new file mode 100644 index 0000000..1a5744f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_3.html @@ -0,0 +1,775 @@ + + + + + +Debugging with GDB: Invocation + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2. Getting In and Out of GDB

+ +

+ +This chapter discusses how to start GDB, and how to get out of it. +The essentials are: +

    +
  • +type `gdb' to start GDB. +
  • +type quit or Ctrl-d to exit. +
+

+ +

+ + + + +
2.1 Invoking GDB  How to start GDB
2.2 Quitting GDB  How to quit GDB
2.3 Shell Commands  How to use shell commands inside GDB
2.4 Logging Output  How to log GDB's output to a file
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.1 Invoking GDB

+ +

+ +Invoke GDB by running the program gdb. Once started, +GDB reads commands from the terminal until you tell it to exit. +

+ +You can also run gdb with a variety of arguments and options, +to specify more of your debugging environment at the outset. +

+ +The command-line options described here are designed +to cover a variety of situations; in some environments, some of these +options may effectively be unavailable. +

+ +The most usual way to start GDB is with one argument, +specifying an executable program: +

+ +
 
gdb program
+

+ +You can also start with both an executable program and a core file +specified: +

+ +
 
gdb program core
+

+ +You can, instead, specify a process ID as a second argument, if you want +to debug a running process: +

+ +
 
gdb program 1234
+

+ +would attach GDB to process 1234 (unless you also have a file +named `1234'; GDB does check for a core file first). +

+ +Taking advantage of the second command-line argument requires a fairly +complete operating system; when you use GDB as a remote +debugger attached to a bare board, there may not be any notion of +"process", and there is often no way to get a core dump. GDB +will warn you if it is unable to attach or to read core dumps. +

+ +You can optionally have gdb pass any arguments after the +executable file to the inferior using --args. This option stops +option processing. +
 
gdb --args gcc -O2 -c foo.c
+
This will cause gdb to debug gcc, and to set +gcc's command-line arguments (see section 4.3 Your Program's Arguments) to `-O2 -c foo.c'. +

+ +You can run gdb without printing the front material, which describes +GDB's non-warranty, by specifying -silent: +

+ +
 
gdb -silent
+

+ +You can further control how GDB starts up by using command-line +options. GDB itself can remind you of the options available. +

+ +Type +

+ +
 
gdb -help
+

+ +to display all available options and briefly describe their use +(`gdb -h' is a shorter equivalent). +

+ +All options and command line arguments you give are processed +in sequential order. The order makes a difference when the +`-x' option is used. +

+ +

+ + + +
2.1.1 Choosing Files  Choosing files
2.1.2 Choosing Modes  Choosing modes
2.1.3 What GDB Does During Startup  What GDB does during startup
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.1.1 Choosing Files

+ +

+ +When GDB starts, it reads any arguments other than options as +specifying an executable file and core file (or process ID). This is +the same as if the arguments were specified by the `-se' and +`-c' (or `-p') options respectively. (GDB reads the +first argument that does not have an associated option flag as +equivalent to the `-se' option followed by that argument; and the +second argument that does not have an associated option flag, if any, as +equivalent to the `-c'/`-p' option followed by that argument.) +If the second argument begins with a decimal digit, GDB will +first attempt to attach to it as a process, and if that fails, attempt +to open it as a corefile. If you have a corefile whose name begins with +a digit, you can prevent GDB from treating it as a pid by +prefixing it with `./', e.g. `./12345'. +

+ +If GDB has not been configured to included core file support, +such as for most embedded targets, then it will complain about a second +argument and ignore it. +

+ +Many options have both long and short forms; both are shown in the +following list. GDB also recognizes the long forms if you truncate +them, so long as enough of the option is present to be unambiguous. +(If you prefer, you can flag option arguments with `--' rather +than `-', though we illustrate the more usual convention.) +

+ +

+
-symbols file +
-s file +
+ +Read symbol table from file file. +

+ +

-exec file +
-e file +
+ +Use file file as the executable file to execute when appropriate, +and for examining pure data in conjunction with a core dump. +

+ +

-se file +
+Read symbol table from file file and use it as the executable +file. +

+ +

-core file +
-c file +
+ +Use file file as a core dump to examine. +

+ +

-pid number +
-p number +
+ +Connect to process ID number, as with the attach command. +

+ +

-command file +
-x file +
+ +Execute GDB commands from file file. See section Command files. +

+ +

-eval-command command +
-ex command +
+ +Execute a single GDB command. +

+ +This option may be used multiple times to call multiple commands. It may +also be interleaved with `-command' as required. +

+ +
 
gdb -ex 'target sim' -ex 'load' \
+   -x setbreakpoints -ex 'run' a.out
+

+ +

-directory directory +
-d directory +
+ +Add directory to the path to search for source and script files. +

+ +

-r +
-readnow +
+ +Read each symbol file's entire symbol table immediately, rather than +the default, which is to read it incrementally as it is needed. +This makes startup slower, but makes future operations faster. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.1.2 Choosing Modes

+ +

+ +You can run GDB in various alternative modes--for example, in +batch mode or quiet mode. +

+ +

+
-nx +
-n +
+ +Do not execute commands found in any initialization files. Normally, +GDB executes the commands in these files after all the command +options and arguments have been processed. See section Command Files. +

+ +

-quiet +
-silent +
-q +
+ + +"Quiet". Do not print the introductory and copyright messages. These +messages are also suppressed in batch mode. +

+ +

-batch +
+Run in batch mode. Exit with status 0 after processing all the +command files specified with `-x' (and all commands from +initialization files, if not inhibited with `-n'). Exit with +nonzero status if an error occurs in executing the GDB commands +in the command files. +

+ +Batch mode may be useful for running GDB as a filter, for +example to download and run a program on another computer; in order to +make this more useful, the message +

+ +
 
Program exited normally.
+

+ +(which is ordinarily issued whenever a program running under +GDB control terminates) is not issued when running in batch +mode. +

+ +

-batch-silent +
+Run in batch mode exactly like `-batch', but totally silently. All +GDB output to stdout is prevented (stderr is +unaffected). This is much quieter than `-silent' and would be useless +for an interactive session. +

+ +This is particularly useful when using targets that give `Loading section' +messages, for example. +

+ +Note that targets that give their output via GDB, as opposed to +writing directly to stdout, will also be made silent. +

+ +

-return-child-result +
+The return code from GDB will be the return code from the child +process (the process being debugged), with the following exceptions: +

+ +

    +
  • +GDB exits abnormally. E.g., due to an incorrect argument or an +internal error. In this case the exit code is the same as it would have been +without `-return-child-result'. +
  • +The user quits with an explicit value. E.g., `quit 1'. +
  • +The child process never runs, or is not allowed to terminate, in which case +the exit code will be -1. +
+

+ +This option is useful in conjunction with `-batch' or `-batch-silent', +when GDB is being used as a remote program loader or simulator +interface. +

+ +

-nowindows +
-nw +
+ +"No windows". If GDB comes with a graphical user interface +(GUI) built in, then this option tells GDB to only use the command-line +interface. If no GUI is available, this option has no effect. +

+ +

-windows +
-w +
+ +If GDB includes a GUI, then this option requires it to be +used if possible. +

+ +

-cd directory +
+Run GDB using directory as its working directory, +instead of the current directory. +

+ +

-fullname +
-f +
+ +GNU Emacs sets this option when it runs GDB as a +subprocess. It tells GDB to output the full file name and line +number in a standard, recognizable fashion each time a stack frame is +displayed (which includes each time your program stops). This +recognizable format looks like two `\032' characters, followed by +the file name, line number and character position separated by colons, +and a newline. The Emacs-to-GDB interface program uses the two +`\032' characters as a signal to display the source code for the +frame. +

+ +

-epoch +
+The Epoch Emacs-GDB interface sets this option when it runs +GDB as a subprocess. It tells GDB to modify its print +routines so as to allow Epoch to display values of expressions in a +separate window. +

+ +

-annotate level +
+This option sets the annotation level inside GDB. Its +effect is identical to using `set annotate level' +(see section 25. GDB Annotations). The annotation level controls how much +information GDB prints together with its prompt, values of +expressions, source lines, and other types of output. Level 0 is the +normal, level 1 is for use when GDB is run as a subprocess of +GNU Emacs, level 3 is the maximum annotation suitable for programs +that control GDB, and level 2 has been deprecated. +

+ +The annotation mechanism has largely been superseded by GDB/MI +(see section 24. The GDB/MI Interface). +

+ +

--args +
+Change interpretation of command line so that arguments following the +executable file are passed as command line arguments to the inferior. +This option stops option processing. +

+ +

-baud bps +
-b bps +
+ +Set the line speed (baud rate or bits per second) of any serial +interface used by GDB for remote debugging. +

+ +

-l timeout +
+Set the timeout (in seconds) of any communication used by GDB +for remote debugging. +

+ +

-tty device +
-t device +
+ +Run using device for your program's standard input and output. +

+ +

-tui +
+Activate the Text User Interface when starting. The Text User +Interface manages several text windows on the terminal, showing +source, assembly, registers and GDB command outputs +(see section GDB Text User Interface). Alternatively, the +Text User Interface can be enabled by invoking the program +`gdbtui'. Do not use this option if you run GDB from +Emacs (see section Using GDB under GNU Emacs). +

+ +

-interpreter interp +
+Use the interpreter interp for interface with the controlling +program or device. This option is meant to be set by programs which +communicate with GDB using it as a back end. +See section Command Interpreters. +

+ +`--interpreter=mi' (or `--interpreter=mi2') causes +GDB to use the GDB/MI interface (see section The GDB/MI Interface) included since GDB version 6.0. The +previous GDB/MI interface, included in GDB version 5.3 and +selected with `--interpreter=mi1', is deprecated. Earlier +GDB/MI interfaces are no longer supported. +

+ +

-write +
+Open the executable and core files for both reading and writing. This +is equivalent to the `set write on' command inside GDB +(see section 14.6 Patching Programs). +

+ +

-statistics +
+This option causes GDB to print statistics about time and +memory usage after it completes each command and returns to the prompt. +

+ +

-version +
+This option causes GDB to print its version number and +no-warranty blurb, and exit. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.1.3 What GDB Does During Startup

+ +

+ +Here's the description of what GDB does during session startup: +

+ +

    +
  1. +Sets up the command interpreter as specified by the command line +(see section interpreter). +

    + +

  2. + +Reads the init file (if any) in your home directory(1) and executes all the commands in +that file. +

    + +

  3. +Processes command line options and operands. +

    + +

  4. +Reads and executes the commands from init file (if any) in the current +working directory. This is only done if the current directory is +different from your home directory. Thus, you can have more than one +init file, one generic in your home directory, and another, specific +to the program you are debugging, in the directory where you invoke +GDB. +

    + +

  5. +Reads command files specified by the `-x' option. See section 20.3 Command Files, for more details about GDB command files. +

    + +

  6. +Reads the command history recorded in the history file. +See section 19.3 Command History, for more details about the command history and the +files where GDB records it. +
+

+ +Init files use the same syntax as command files (see section 20.3 Command Files) and are processed by GDB in the same way. The init +file in your home directory can set options (such as `set +complaints') that affect subsequent processing of command line options +and operands. Init files are not executed if you use the `-nx' +option (see section Choosing Modes). +

+ + + + +The GDB init files are normally called `.gdbinit'. +The DJGPP port of GDB uses the name `gdb.ini', due to +the limitations of file names imposed by DOS filesystems. The Windows +ports of GDB use the standard name, but if they find a +`gdb.ini' file, they warn you about that and suggest to rename +the file to the standard name. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.2 Quitting GDB

+ +

+ +

+ + +
quit [expression] +
q +
To exit GDB, use the quit command (abbreviated +q), or type an end-of-file character (usually Ctrl-d). If you +do not supply expression, GDB will terminate normally; +otherwise it will terminate using the result of expression as the +error code. +
+

+ + +An interrupt (often Ctrl-c) does not exit from GDB, but rather +terminates the action of any GDB command that is in progress and +returns to GDB command level. It is safe to type the interrupt +character at any time because GDB does not allow it to take effect +until a time when it is safe. +

+ +If you have been using GDB to control an attached process or +device, you can release it with the detach command +(see section Debugging an Already-running Process). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.3 Shell Commands

+ +

+ +If you need to execute occasional shell commands during your +debugging session, there is no need to leave or suspend GDB; you can +just use the shell command. +

+ +

+ + +
shell command string +
Invoke a standard shell to execute command string. +If it exists, the environment variable SHELL determines which +shell to run. Otherwise GDB uses the default shell +(`/bin/sh' on Unix systems, `COMMAND.COM' on MS-DOS, etc.). +
+

+ +The utility make is often needed in development environments. +You do not have to use the shell command for this purpose in +GDB: +

+ +

+ + +
make make-args +
Execute the make program with the specified +arguments. This is equivalent to `shell make make-args'. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.4 Logging Output

+ +

+ +You may want to save the output of GDB commands to a file. +There are several commands to control GDB's logging. +

+ +

+ +
set logging on +
Enable logging. +
set logging off +
Disable logging. + +
set logging file file +
Change the name of the current logfile. The default logfile is `gdb.txt'. +
set logging overwrite [on|off] +
By default, GDB will append to the logfile. Set overwrite if +you want set logging on to overwrite the logfile instead. +
set logging redirect [on|off] +
By default, GDB output will go to both the terminal and the logfile. +Set redirect if you want output to go only to the log file. + +
show logging +
Show the current values of the logging settings. +
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_30.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_30.html new file mode 100644 index 0000000..59c3ca4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_30.html @@ -0,0 +1,170 @@ + + + + + +Debugging with GDB: Formatting Documentation + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

A. Formatting Documentation

+ +

+ + + +The GDB 4 release includes an already-formatted reference card, ready +for printing with PostScript or Ghostscript, in the `gdb' +subdirectory of the main source directory(8). If you can use PostScript or Ghostscript with your printer, +you can print the reference card immediately with `refcard.ps'. +

+ +The release also includes the source for the reference card. You +can format it, using TeX, by typing: +

+ +
 
make refcard.dvi
+

+ +The GDB reference card is designed to print in landscape +mode on US "letter" size paper; +that is, on a sheet 11 inches wide by 8.5 inches +high. You will need to specify this form of printing as an option to +your DVI output program. +

+ + +

+ +All the documentation for GDB comes as part of the machine-readable +distribution. The documentation is written in Texinfo format, which is +a documentation system that uses a single source file to produce both +on-line information and a printed manual. You can use one of the Info +formatting commands to create the on-line version of the documentation +and TeX (or texi2roff) to typeset the printed version. +

+ +GDB includes an already formatted copy of the on-line Info +version of this manual in the `gdb' subdirectory. The main Info +file is `gdb-6.8/gdb/gdb.info', and it refers to +subordinate files matching `gdb.info*' in the same directory. If +necessary, you can print out these files, or read them with any editor; +but they are easier to read using the info subsystem in GNU +Emacs or the standalone info program, available as part of the +GNU Texinfo distribution. +

+ +If you want to format these Info files yourself, you need one of the +Info formatting programs, such as texinfo-format-buffer or +makeinfo. +

+ +If you have makeinfo installed, and are in the top level +GDB source directory (`gdb-6.8', in the case of +version 6.8), you can make the Info file by typing: +

+ +
 
cd gdb
+make gdb.info
+

+ +If you want to typeset and print copies of this manual, you need TeX, +a program to print its DVI output files, and `texinfo.tex', the +Texinfo definitions file. +

+ +TeX is a typesetting program; it does not print files directly, but +produces output files called DVI files. To print a typeset +document, you need a program to print DVI files. If your system +has TeX installed, chances are it has such a program. The precise +command to use depends on your system; lpr -d is common; another +(for PostScript devices) is dvips. The DVI print command may +require a file name without any extension or a `.dvi' extension. +

+ +TeX also requires a macro definitions file called +`texinfo.tex'. This file tells TeX how to typeset a document +written in Texinfo format. On its own, TeX cannot either read or +typeset a Texinfo file. `texinfo.tex' is distributed with GDB +and is located in the `gdb-version-number/texinfo' +directory. +

+ +If you have TeX and a DVI printer program installed, you can +typeset and print this manual. First switch to the `gdb' +subdirectory of the main source directory (for example, to +`gdb-6.8/gdb') and type: +

+ +
 
make gdb.dvi
+

+ +Then give `gdb.dvi' to your DVI printing program. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_31.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_31.html new file mode 100644 index 0000000..aa670b6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_31.html @@ -0,0 +1,524 @@ + + + + + +Debugging with GDB: Installing GDB + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

B. Installing GDB

+ +

+ +

+ + + + + +
B.1 Requirements for Building GDB  Requirements for building GDB
B.2 Invoking the GDB `configure' Script  Invoking the GDB `configure' script
B.3 Compiling GDB in Another Directory  Compiling GDB in another directory
B.4 Specifying Names for Hosts and Targets  Specifying names for hosts and targets
B.5 `configure' Options  Summary of options for configure
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

B.1 Requirements for Building GDB

+ +

+ +Building GDB requires various tools and packages to be available. +Other packages will be used only if they are found. +

+ + +

Tools/Packages Necessary for Building GDB

+ +
+
ISO C90 compiler +
GDB is written in ISO C90. It should be buildable with any +working C90 compiler, e.g. GCC. +

+ +

+

+ + +

Tools/Packages Optional for Building GDB

+ +
+
Expat +
+GDB can use the Expat XML parsing library. This library may be +included with your operating system distribution; if it is not, you +can get the latest version from http://expat.sourceforge.net. +The `configure' script will search for this library in several +standard locations; if it is installed in an unusual path, you can +use the `--with-libexpat-prefix' option to specify its location. +

+ +Expat is used for: +

+ +

+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

B.2 Invoking the GDB `configure' Script

+ +GDB comes with a `configure' script that automates the process +of preparing GDB for installation; you can then use make to +build the gdb program. +

+ +The GDB distribution includes all the source code you need for +GDB in a single directory, whose name is usually composed by +appending the version number to `gdb'. +

+ +For example, the GDB version 6.8 distribution is in the +`gdb-6.8' directory. That directory contains: +

+ +

+
gdb-6.8/configure (and supporting files) +
script for configuring GDB and all its supporting libraries +

+ +

gdb-6.8/gdb +
the source specific to GDB itself +

+ +

gdb-6.8/bfd +
source for the Binary File Descriptor library +

+ +

gdb-6.8/include +
GNU include files +

+ +

gdb-6.8/libiberty +
source for the `-liberty' free software library +

+ +

gdb-6.8/opcodes +
source for the library of opcode tables and disassemblers +

+ +

gdb-6.8/readline +
source for the GNU command-line interface +

+ +

gdb-6.8/glob +
source for the GNU filename pattern-matching subroutine +

+ +

gdb-6.8/mmalloc +
source for the GNU memory-mapped malloc package +
+

+ +The simplest way to configure and build GDB is to run `configure' +from the `gdb-version-number' source directory, which in +this example is the `gdb-6.8' directory. +

+ +First switch to the `gdb-version-number' source directory +if you are not already in it; then run `configure'. Pass the +identifier for the platform on which GDB will run as an +argument. +

+ +For example: +

+ +
 
cd gdb-6.8
+./configure host
+make
+

+ +where host is an identifier such as `sun4' or +`decstation', that identifies the platform where GDB will run. +(You can often leave off host; `configure' tries to guess the +correct value by examining your system.) +

+ +Running `configure host' and then running make builds the +`bfd', `readline', `mmalloc', and `libiberty' +libraries, then gdb itself. The configured source files, and the +binaries, are left in the corresponding source directories. +

+ +`configure' is a Bourne-shell (/bin/sh) script; if your +system does not recognize this automatically when you run a different +shell, you may need to run sh on it explicitly: +

+ +
 
sh configure host
+

+ +If you run `configure' from a directory that contains source +directories for multiple libraries or programs, such as the +`gdb-6.8' source directory for version 6.8, +`configure' +creates configuration files for every directory level underneath (unless +you tell it not to, with the `--norecursion' option). +

+ +You should run the `configure' script from the top directory in the +source tree, the `gdb-version-number' directory. If you run +`configure' from one of the subdirectories, you will configure only +that subdirectory. That is usually not what you want. In particular, +if you run the first `configure' from the `gdb' subdirectory +of the `gdb-version-number' directory, you will omit the +configuration of `bfd', `readline', and other sibling +directories of the `gdb' subdirectory. This leads to build errors +about missing include files such as `bfd/bfd.h'. +

+ +You can install gdb anywhere; it has no hardwired paths. +However, you should make sure that the shell on your path (named by +the `SHELL' environment variable) is publicly readable. Remember +that GDB uses the shell to start your program--some systems refuse to +let GDB debug child processes whose programs are not readable. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

B.3 Compiling GDB in Another Directory

+ +

+ +If you want to run GDB versions for several host or target machines, +you need a different gdb compiled for each combination of +host and target. `configure' is designed to make this easy by +allowing you to generate each configuration in a separate subdirectory, +rather than in the source directory. If your make program +handles the `VPATH' feature (GNU make does), running +make in each of these directories builds the gdb +program specified there. +

+ +To build gdb in a separate directory, run `configure' +with the `--srcdir' option to specify where to find the source. +(You also need to specify a path to find `configure' +itself from your working directory. If the path to `configure' +would be the same as the argument to `--srcdir', you can leave out +the `--srcdir' option; it is assumed.) +

+ +For example, with version 6.8, you can build GDB in a +separate directory for a Sun 4 like this: +

+ +
 
cd gdb-6.8
+mkdir ../gdb-sun4
+cd ../gdb-sun4
+../gdb-6.8/configure sun4
+make
+

+ +When `configure' builds a configuration using a remote source +directory, it creates a tree for the binaries with the same structure +(and using the same names) as the tree under the source directory. In +the example, you'd find the Sun 4 library `libiberty.a' in the +directory `gdb-sun4/libiberty', and GDB itself in +`gdb-sun4/gdb'. +

+ +Make sure that your path to the `configure' script has just one +instance of `gdb' in it. If your path to `configure' looks +like `../gdb-6.8/gdb/configure', you are configuring only +one subdirectory of GDB, not the whole package. This leads to +build errors about missing include files such as `bfd/bfd.h'. +

+ +One popular reason to build several GDB configurations in separate +directories is to configure GDB for cross-compiling (where +GDB runs on one machine--the host---while debugging +programs that run on another machine--the target). +You specify a cross-debugging target by +giving the `--target=target' option to `configure'. +

+ +When you run make to build a program or library, you must run +it in a configured directory--whatever directory you were in when you +called `configure' (or one of its subdirectories). +

+ +The Makefile that `configure' generates in each source +directory also runs recursively. If you type make in a source +directory such as `gdb-6.8' (or in a separate configured +directory configured with `--srcdir=dirname/gdb-6.8'), you +will build all the required libraries, and then build GDB. +

+ +When you have multiple hosts or targets configured in separate +directories, you can run make on them in parallel (for example, +if they are NFS-mounted on each of the hosts); they will not interfere +with each other. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

B.4 Specifying Names for Hosts and Targets

+ +

+ +The specifications used for hosts and targets in the `configure' +script are based on a three-part naming scheme, but some short predefined +aliases are also supported. The full naming scheme encodes three pieces +of information in the following pattern: +

+ +
 
architecture-vendor-os
+

+ +For example, you can use the alias sun4 as a host argument, +or as the value for target in a --target=target +option. The equivalent full name is `sparc-sun-sunos4'. +

+ +The `configure' script accompanying GDB does not provide +any query facility to list all supported host and target names or +aliases. `configure' calls the Bourne shell script +config.sub to map abbreviations to full names; you can read the +script, if you wish, or you can use it to test your guesses on +abbreviations--for example: +

+ +
 
% sh config.sub i386-linux
+i386-pc-linux-gnu
+% sh config.sub alpha-linux
+alpha-unknown-linux-gnu
+% sh config.sub hp9k700
+hppa1.1-hp-hpux
+% sh config.sub sun4
+sparc-sun-sunos4.1.1
+% sh config.sub sun3
+m68k-sun-sunos4.1.1
+% sh config.sub i986v
+Invalid configuration `i986v': machine `i986v' not recognized
+

+ +config.sub is also distributed in the GDB source +directory (`gdb-6.8', for version 6.8). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

B.5 `configure' Options

+ +

+ +Here is a summary of the `configure' options and arguments that +are most often useful for building GDB. `configure' also has +several other options not listed here. See Info file `configure.info', node `What Configure Does', for a full explanation of `configure'. +

+ +
 
configure [--help]
+          [--prefix=dir]
+          [--exec-prefix=dir]
+          [--srcdir=dirname]
+          [--norecursion] [--rm]
+          [--target=target]
+          host
+

+ +You may introduce options with a single `-' rather than +`--' if you prefer; but you may abbreviate option names if you use +`--'. +

+ +

+
--help +
Display a quick summary of how to invoke `configure'. +

+ +

--prefix=dir +
Configure the source to install programs and files under directory +`dir'. +

+ +

--exec-prefix=dir +
Configure the source to install programs under directory +`dir'. +

+ +

--srcdir=dirname +
Warning: using this option requires GNU make, or another +make that implements the VPATH feature.
+Use this option to make configurations in directories separate from the +GDB source directories. Among other things, you can use this to +build (or maintain) several configurations simultaneously, in separate +directories. `configure' writes configuration-specific files in +the current directory, but arranges for them to use the source in the +directory dirname. `configure' creates directories under +the working directory in parallel to the source directories below +dirname. +

+ +

--norecursion +
Configure only the directory level where `configure' is executed; do not +propagate configuration to subdirectories. +

+ +

--target=target +
Configure GDB for cross-debugging programs running on the specified +target. Without this option, GDB is configured to debug +programs that run on the same machine (host) as GDB itself. +

+ +There is no convenient way to generate a list of all available targets. +

+ +

host ... +
Configure GDB to run on the specified host. +

+ +There is no convenient way to generate a list of all available hosts. +

+

+ +There are many other options available as well, but they are generally +needed for special purposes only. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_32.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_32.html new file mode 100644 index 0000000..ea040b4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_32.html @@ -0,0 +1,447 @@ + + + + + +Debugging with GDB: Maintenance Commands + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

C. Maintenance Commands

+ +

+ +In addition to commands intended for GDB users, GDB +includes a number of commands intended for GDB developers, +that are not documented elsewhere in this manual. These commands are +provided here for reference. (For commands that turn on debugging +messages, see 19.8 Optional Messages about Internal Happenings.) +

+ +

+ +
maint agent expression +
Translate the given expression into remote agent bytecodes. +This command is useful for debugging the Agent Expression mechanism +(see section E. The GDB Agent Expression Mechanism). +

+ + + +

maint info breakpoints +
Using the same format as `info breakpoints', display both the +breakpoints you've set explicitly, and those GDB is using for +internal purposes. Internal breakpoints are shown with negative +breakpoint numbers. The type column identifies what kind of breakpoint +is shown: +

+ +

+
breakpoint +
Normal, explicitly set breakpoint. +

+ +

watchpoint +
Normal, explicitly set watchpoint. +

+ +

longjmp +
Internal breakpoint, used to handle correctly stepping through +longjmp calls. +

+ +

longjmp resume +
Internal breakpoint at the target of a longjmp. +

+ +

until +
Temporary internal breakpoint used by the GDB until command. +

+ +

finish +
Temporary internal breakpoint used by the GDB finish command. +

+ +

shlib events +
Shared library events. +

+ +

+

+ + +

maint check-symtabs +
Check the consistency of psymtabs and symtabs. +

+ + +

maint cplus first_component name +
Print the first C++ class/namespace component of name. +

+ + +

maint cplus namespace +
Print the list of possible C++ namespaces. +

+ + +

maint demangle name +
Demangle a C++ or Objective-C mangled name. +

+ + + + +

maint deprecate command [replacement] +
maint undeprecate command +
Deprecate or undeprecate the named command. Deprecated commands +cause GDB to issue a warning when you use them. The optional +argument replacement says which newer command should be used in +favor of the deprecated one; if it is given, GDB will mention +the replacement as part of the warning. +

+ + +

maint dump-me +
+Cause a fatal signal in the debugger and force it to dump its core. +This is supported only on systems which support aborting a program +with the SIGQUIT signal. +

+ + + +

maint internal-error [message-text] +
maint internal-warning [message-text] +
Cause GDB to call the internal function internal_error +or internal_warning and hence behave as though an internal error +or internal warning has been detected. In addition to reporting the +internal problem, these functions give the user the opportunity to +either quit GDB or create a core file of the current +GDB session. +

+ +These commands take an optional parameter message-text that is +used as the text of the error or warning message. +

+ +Here's an example of using internal-error: +

+ +
 
(gdb) maint internal-error testing, 1, 2
+.../maint.c:121: internal-error: testing, 1, 2
+A problem internal to GDB has been detected.  Further
+debugging may prove unreliable.
+Quit this debugging session? (y or n) n
+Create a core file? (y or n) n
+(gdb)
+

+ + +

maint packet text +
If GDB is talking to an inferior via the serial protocol, +then this command sends the string text to the inferior, and +displays the response packet. GDB supplies the initial +`$' character, the terminating `#' character, and the +checksum. +

+ + +

maint print architecture [file] +
Print the entire architecture configuration. The optional argument +file names the file where the output goes. +

+ + +

maint print c-tdesc +
Print the current target description (see section F. Target Descriptions) as +a C source file. The created source file can be used in GDB +when an XML parser is not available to parse the description. +

+ + +

maint print dummy-frames +
Prints the contents of GDB's internal dummy-frame stack. +

+ +
 
(gdb) b add
+...
+(gdb) print add(2,3)
+Breakpoint 2, add (a=2, b=3) at ...
+58	  return (a + b);
+The program being debugged stopped while in a function called from GDB.
+...
+(gdb) maint print dummy-frames
+0x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
+ top=0x0200bdd4 id={stack=0x200bddc,code=0x101405c}
+ call_lo=0x01014000 call_hi=0x01014001
+(gdb)
+

+ +Takes an optional file parameter. +

+ + + + + +

maint print registers [file] +
maint print raw-registers [file] +
maint print cooked-registers [file] +
maint print register-groups [file] +
Print GDB's internal register data structures. +

+ +The command maint print raw-registers includes the contents of +the raw register cache; the command maint print cooked-registers +includes the (cooked) value of all registers; and the command +maint print register-groups includes the groups that each +register is a member of. See section `Registers' in GDB Internals. +

+ +These commands take an optional parameter, a file name to which to +write the information. +

+ + +

maint print reggroups [file] +
Print GDB's internal register group data structures. The +optional argument file tells to what file to write the +information. +

+ +The register groups info looks like this: +

+ +
 
(gdb) maint print reggroups
+ Group      Type
+ general    user
+ float      user
+ all        user
+ vector     user
+ system     user
+ save       internal
+ restore    internal
+

+ + +

flushregs +
This command forces GDB to flush its internal register cache. +

+ + + +

maint print objfiles +
Print a dump of all known object files. For each object file, this +command prints its name, address in memory, and all of its psymtabs +and symtabs. +

+ + + +

maint print statistics +
This command prints, for each object file in the program, various data +about that object file followed by the byte cache (bcache) +statistics for the object file. The objfile data includes the number +of minimal, partial, full, and stabs symbols, the number of types +defined by the objfile, the number of as yet unexpanded psym tables, +the number of line tables and string tables, and the amount of memory +used by the various tables. The bcache statistics include the counts, +sizes, and counts of duplicates of all and unique objects, max, +average, and median entry size, total memory used and its overhead and +savings, and various measures of the hash table size and chain +lengths. +

+ + + +

maint print target-stack +
A target is an interface between the debugger and a particular +kind of file or process. Targets can be stacked in strata, +so that more than one target can potentially respond to a request. +In particular, memory accesses will walk down the stack of targets +until they find a target that is interested in handling that particular +address. +

+ +This command prints a short description of each layer that was pushed on +the target stack, starting from the top layer down to the bottom one. +

+ + + +

maint print type expr +
Print the type chain for a type specified by expr. The argument +can be either a type name or a symbol. If it is a symbol, the type of +that symbol is described. The type chain produced by this command is +a recursive definition of the data type as stored in GDB's +data structures, including its flags and contained types. +

+ + + +

maint set dwarf2 max-cache-age +
maint show dwarf2 max-cache-age +
Control the DWARF 2 compilation unit cache. +

+ + +In object files with inter-compilation-unit references, such as those +produced by the GCC option `-feliminate-dwarf2-dups', the DWARF 2 +reader needs to frequently refer to previously read compilation units. +This setting controls how long a compilation unit will remain in the +cache if it is not referenced. A higher limit means that cached +compilation units will be stored in memory longer, and more total +memory will be used. Setting it to zero disables caching, which will +slow down GDB startup, but reduce memory consumption. +

+ + + + +

maint set profile +
maint show profile +
Control profiling of GDB. +

+ +Profiling will be disabled until you use the `maint set profile' +command to enable it. When you enable profiling, the system will begin +collecting timing and execution count data; when you disable profiling or +exit GDB, the results will be written to a log file. Remember that +if you use profiling, GDB will overwrite the profiling log file +(often called `gmon.out'). If you have a record of important profiling +data in a `gmon.out' file, be sure to move it to a safe location. +

+ +Configuring with `--enable-profiling' arranges for GDB to be +compiled with the `-pg' compiler option. +

+ + + +

maint show-debug-regs +
Control whether to show variables that mirror the x86 hardware debug +registers. Use ON to enable, OFF to disable. If +enabled, the debug registers values are shown when GDB inserts or +removes a hardware breakpoint or watchpoint, and when the inferior +triggers a hardware-assisted breakpoint or watchpoint. +

+ + + +

maint space +
Control whether to display memory usage for each command. If set to a +nonzero value, GDB will display how much memory each command +took, following the command's own output. This can also be requested +by invoking GDB with the `--statistics' command-line +switch (see section 2.1.2 Choosing Modes). +

+ + + +

maint time +
Control whether to display the execution time for each command. If +set to a nonzero value, GDB will display how much time it +took to execute each command, following the command's own output. +This can also be requested by invoking GDB with the +`--statistics' command-line switch (see section 2.1.2 Choosing Modes). +

+ + +

maint translate-address [section] addr +
Find the symbol stored at the location specified by the address +addr and an optional section name section. If found, +GDB prints the name of the closest symbol and an offset from +the symbol's location to the specified address. This is similar to +the info address command (see section 13. Examining the Symbol Table), except that this +command also allows to find symbols in other sections. +

+ +

+

+ +The following command is useful for non-interactive invocations of +GDB, such as in the test suite. +

+ +

+
set watchdog nsec +
+ + +Set the maximum number of seconds GDB will wait for the +target operation to finish. If this time expires, GDB +reports and error and the command is aborted. +

+ +

show watchdog +
Show the current setting of the target wait timeout. +
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_33.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_33.html new file mode 100644 index 0000000..8f812a8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_33.html @@ -0,0 +1,4270 @@ + + + + + +Debugging with GDB: Remote Protocol + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D. GDB Remote Serial Protocol

+ +

+ +

+ + + + + + + + + + + + +
D.1 Overview  
D.2 Packets  
D.3 Stop Reply Packets  
D.4 General Query Packets  
D.5 Register Packet Format  
D.6 Tracepoint Packets  
D.7 Host I/O Packets  
D.8 Interrupts  
D.9 Examples  
D.10 File-I/O Remote Protocol Extension  
D.11 Library List Format  
D.12 Memory Map Format  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.1 Overview

+ +

+ +There may be occasions when you need to know something about the +protocol--for example, if there is only one serial port to your target +machine, you might want your program to do something special if it +recognizes a packet meant for GDB. +

+ +In the examples below, `->' and `<-' are used to indicate +transmitted and received data, respectively. +

+ + + + +All GDB commands and responses (other than acknowledgments) are +sent as a packet. A packet is introduced with the character +`$', the actual packet-data, and the terminating character +`#' followed by a two-digit checksum: +

+ +
 
$packet-data#checksum
+

+ + +The two-digit checksum is computed as the modulo 256 sum of all +characters between the leading `$' and the trailing `#' (an +eight bit unsigned checksum). +

+ +Implementors should note that prior to GDB 5.0 the protocol +specification also included an optional two-digit sequence-id: +

+ +
 
$sequence-id:packet-data#checksum
+

+ + +That sequence-id was appended to the acknowledgment. GDB +has never output sequence-ids. Stubs that handle packets added +since GDB 5.0 must not accept sequence-id. +

+ + +When either the host or the target machine receives a packet, the first +response expected is an acknowledgment: either `+' (to indicate +the package was received correctly) or `-' (to request +retransmission): +

+ +
 
-> $packet-data#checksum
+<- +
+

+ +The host (GDB) sends commands, and the target (the +debugging stub incorporated in your program) sends a response. In +the case of step and continue commands, the response is only sent +when the operation has completed (the target has again stopped). +

+ +packet-data consists of a sequence of characters with the +exception of `#' and `$' (see `X' packet for additional +exceptions). +

+ + +Fields within the packet should be separated using `,' `;' or +`:'. Except where otherwise noted all numbers are represented in +HEX with leading zeros suppressed. +

+ +Implementors should note that prior to GDB 5.0, the character +`:' could not appear as the third character in a packet (as it +would potentially conflict with the sequence-id). +

+ + + +Binary data in most packets is encoded either as two hexadecimal +digits per byte of binary data. This allowed the traditional remote +protocol to work over connections which were only seven-bit clean. +Some packets designed more recently assume an eight-bit clean +connection, and use a more efficient encoding to send and receive +binary data. +

+ +The binary data representation uses 7d (ASCII `}') +as an escape character. Any escaped byte is transmitted as the escape +character followed by the original character XORed with 0x20. +For example, the byte 0x7d would be transmitted as the two +bytes 0x7d 0x5d. The bytes 0x23 (ASCII `#'), +0x24 (ASCII `$'), and 0x7d (ASCII +`}') must always be escaped. Responses sent by the stub +must also escape 0x2a (ASCII `*'), so that it +is not interpreted as the start of a run-length encoded sequence +(described next). +

+ +Response data can be run-length encoded to save space. +Run-length encoding replaces runs of identical characters with one +instance of the repeated character, followed by a `*' and a +repeat count. The repeat count is itself sent encoded, to avoid +binary characters in data: a value of n is sent as +n+29. For a repeat count greater or equal to 3, this +produces a printable ASCII character, e.g. a space (ASCII +code 32) for a repeat count of 3. (This is because run-length +encoding starts to win for counts 3 or more.) Thus, for example, +`0* ' is a run-length encoding of "0000": the space character +after `*' means repeat the leading 0 32 - 29 = +3 more times. +

+ +The printable characters `#' and `$' or with a numeric value +greater than 126 must not be used. Runs of six repeats (`#') or +seven repeats (`$') can be expanded using a repeat count of only +five (`"'). For example, `00000000' can be encoded as +`0*"00'. +

+ +The error response returned for some packets includes a two character +error number. That number is not well defined. +

+ + +For any command not supported by the stub, an empty response +(`$#00') should be returned. That way it is possible to extend the +protocol. A newer GDB can tell if a packet is supported based +on that response. +

+ +A stub is required to support the `g', `G', `m', `M', +`c', and `s' commands. All other commands are +optional. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.2 Packets

+ +

+ +The following table provides a complete list of all currently defined +commands and their corresponding response data. +See section D.10 File-I/O Remote Protocol Extension, for details about the File +I/O extension of the remote protocol. +

+ +Each packet's description has a template showing the packet's overall +syntax, followed by an explanation of the packet's meaning. We +include spaces in some of the templates for clarity; these are not +part of the packet's syntax. No GDB packet uses spaces to +separate its components. For example, a template like `foo +bar baz' describes a packet beginning with the three ASCII +bytes `foo', followed by a bar, followed directly by a +baz. GDB does not transmit a space character between the +`foo' and the bar, or between the bar and the +baz. +

+ +Note that all packet forms beginning with an upper- or lower-case +letter, other than those described here, are reserved for future use. +

+ +Here are the packet descriptions. +

+ +

+ +
`!' +
+ +Enable extended mode. In extended mode, the remote server is made +persistent. The `R' packet is used to restart the program being +debugged. +

+ +Reply: +

+
`OK' +
The remote target both supports and has enabled extended mode. +
+

+ +

`?' +
+Indicate the reason the target halted. The reply is the same as for +step and continue. +

+ +Reply: +See section D.3 Stop Reply Packets, for the reply specifications. +

+ +

`A arglen,argnum,arg,...' +
+Initialized argv[] array passed into program. arglen +specifies the number of bytes in the hex encoded byte stream +arg. See gdbserver for more details. +

+ +Reply: +

+
`OK' +
The arguments were set. +
`E NN' +
An error occurred. +
+

+ +

`b baud' +
+(Don't use this packet; its behavior is not well-defined.) +Change the serial line speed to baud. +

+ +JTC: When does the transport layer state change? When it's +received, or after the ACK is transmitted. In either case, there are +problems if the command or the acknowledgment packet is dropped. +

+ +Stan: If people really wanted to add something like this, and get +it working for the first time, they ought to modify ser-unix.c to send +some kind of out-of-band message to a specially-setup stub and have the +switch happen "in between" packets, so that from remote protocol's point +of view, nothing actually happened. +

+ +

`B addr,mode' +
+Set (mode is `S') or clear (mode is `C') a +breakpoint at addr. +

+ +Don't use this packet. Use the `Z' and `z' packets instead +(see insert breakpoint or watchpoint packet). +

+ +

`c [addr]' +
+Continue. addr is address to resume. If addr is omitted, +resume at current address. +

+ +Reply: +See section D.3 Stop Reply Packets, for the reply specifications. +

+ +

`C sig[;addr]' +
+Continue with signal sig (hex signal number). If +`;addr' is omitted, resume at same address. +

+ +Reply: +See section D.3 Stop Reply Packets, for the reply specifications. +

+ +

`d' +
+Toggle debug flag. +

+ +Don't use this packet; instead, define a general set packet +(see section D.4 General Query Packets). +

+ +

`D' +
+Detach GDB from the remote system. Sent to the remote target +before GDB disconnects via the detach command. +

+ +Reply: +

+
`OK' +
for success +
`E NN' +
for an error +
+

+ +

`F RC,EE,CF;XX' +
+A reply from GDB to an `F' packet sent by the target. +This is part of the File-I/O protocol extension. See section D.10 File-I/O Remote Protocol Extension, for the specification. +

+ +

`g' +
+ +Read general registers. +

+ +Reply: +

+
`XX...' +
Each byte of register data is described by two hex digits. The bytes +with the register are transmitted in target byte order. The size of +each register and their position within the `g' packet are +determined by the GDB internal gdbarch functions +DEPRECATED_REGISTER_RAW_SIZE and gdbarch_register_name. The +specification of several standard `g' packets is specified below. +
`E NN' +
for an error. +
+

+ +

`G XX...' +
+Write general registers. See read registers packet, for a +description of the XX... data. +

+ +Reply: +

+
`OK' +
for success +
`E NN' +
for an error +
+

+ +

`H c t' +
+Set thread for subsequent operations (`m', `M', `g', +`G', et.al.). c depends on the operation to be performed: it +should be `c' for step and continue operations, `g' for other +operations. The thread designator t may be `-1', meaning all +the threads, a thread number, or `0' which means pick any thread. +

+ +Reply: +

+
`OK' +
for success +
`E NN' +
for an error +
+

+ +

`i [addr[,nnn]]' +
+ +Step the remote target by a single clock cycle. If `,nnn' is +present, cycle step nnn cycles. If addr is present, cycle +step starting at that address. +

+ +

`I' +
+Signal, then cycle step. See step with signal packet. See cycle step packet. +

+ +

`k' +
+Kill request. +

+ +FIXME: There is no description of how to operate when a specific +thread context has been selected (i.e. does 'k' kill only that +thread?). +

+ +

`m addr,length' +
+Read length bytes of memory starting at address addr. +Note that addr may not be aligned to any particular boundary. +

+ +The stub need not use any particular size or alignment when gathering +data from memory for the response; even if addr is word-aligned +and length is a multiple of the word size, the stub is free to +use byte accesses, or not. For this reason, this packet may not be +suitable for accessing memory-mapped I/O devices. + + + +

+ +Reply: +

+
`XX...' +
Memory contents; each byte is transmitted as a two-digit hexadecimal +number. The reply may contain fewer bytes than requested if the +server was able to read only part of the region of memory. +
`E NN' +
NN is errno +
+

+ +

`M addr,length:XX...' +
+Write length bytes of memory starting at address addr. +XX... is the data; each byte is transmitted as a two-digit +hexadecimal number. +

+ +Reply: +

+
`OK' +
for success +
`E NN' +
for an error (this includes the case where only part of the data was +written). +
+

+ +

`p n' +
+Read the value of register n; n is in hex. +See read registers packet, for a description of how the returned +register value is encoded. +

+ +Reply: +

+
`XX...' +
the register's value +
`E NN' +
for an error +
`' +
Indicating an unrecognized query. +
+

+ +

`P n...=r...' +
+ +Write register n... with value r.... The register +number n is in hexadecimal, and r... contains two hex +digits for each byte in the register (target byte order). +

+ +Reply: +

+
`OK' +
for success +
`E NN' +
for an error +
+

+ +

`q name params...' +
`Q name params...' +
+ +General query (`q') and set (`Q'). These packets are +described fully in D.4 General Query Packets. +

+ +

`r' +
+Reset the entire system. +

+ +Don't use this packet; use the `R' packet instead. +

+ +

`R XX' +
+Restart the program being debugged. XX, while needed, is ignored. +This packet is only available in extended mode (see extended mode). +

+ +The `R' packet has no reply. +

+ +

`s [addr]' +
+Single step. addr is the address at which to resume. If +addr is omitted, resume at same address. +

+ +Reply: +See section D.3 Stop Reply Packets, for the reply specifications. +

+ +

`S sig[;addr]' +
+ +Step with signal. This is analogous to the `C' packet, but +requests a single-step, rather than a normal resumption of execution. +

+ +Reply: +See section D.3 Stop Reply Packets, for the reply specifications. +

+ +

`t addr:PP,MM' +
+Search backwards starting at address addr for a match with pattern +PP and mask MM. PP and MM are 4 bytes. +addr must be at least 3 digits. +

+ +

`T XX' +
+Find out if the thread XX is alive. +

+ +Reply: +

+
`OK' +
thread is still alive +
`E NN' +
thread is dead +
+

+ +

`v' +
Packets starting with `v' are identified by a multi-letter name, +up to the first `;' or `?' (or the end of the packet). +

+ +

`vAttach;pid' +
+Attach to a new process with the specified process ID. pid is a +hexadecimal integer identifying the process. The attached process is +stopped. +

+ +This packet is only available in extended mode (see extended mode). +

+ +Reply: +

+
`E nn' +
for an error +
`Any stop packet' +
for success (see section D.3 Stop Reply Packets) +
+

+ +

`vCont[;action[:tid]]...' +
+Resume the inferior, specifying different actions for each thread. +If an action is specified with no tid, then it is applied to any +threads that don't have a specific action specified; if no default action is +specified then other threads should remain stopped. Specifying multiple +default actions is an error; specifying no actions is also an error. +Thread IDs are specified in hexadecimal. Currently supported actions are: +

+ +

+
`c' +
Continue. +
`C sig' +
Continue with signal sig. sig should be two hex digits. +
`s' +
Step. +
`S sig' +
Step with signal sig. sig should be two hex digits. +
+

+ +The optional addr argument normally associated with these packets is +not supported in `vCont'. +

+ +Reply: +See section D.3 Stop Reply Packets, for the reply specifications. +

+ +

`vCont?' +
+Request a list of actions supported by the `vCont' packet. +

+ +Reply: +

+
`vCont[;action...]' +
The `vCont' packet is supported. Each action is a supported +command in the `vCont' packet. +
`' +
The `vCont' packet is not supported. +
+

+ +

`vFile:operation:parameter...' +
+Perform a file operation on the target system. For details, +see D.7 Host I/O Packets. +

+ +

`vFlashErase:addr,length' +
+Direct the stub to erase length bytes of flash starting at +addr. The region may enclose any number of flash blocks, but +its start and end must fall on block boundaries, as indicated by the +flash block size appearing in the memory map (see section D.12 Memory Map Format). GDB groups flash memory programming operations +together, and sends a `vFlashDone' request after each group; the +stub is allowed to delay erase operation until the `vFlashDone' +packet is received. +

+ +Reply: +

+
`OK' +
for success +
`E NN' +
for an error +
+

+ +

`vFlashWrite:addr:XX...' +
+Direct the stub to write data to flash address addr. The data +is passed in binary form using the same encoding as for the `X' +packet (see Binary Data). The memory ranges specified by +`vFlashWrite' packets preceding a `vFlashDone' packet must +not overlap, and must appear in order of increasing addresses +(although `vFlashErase' packets for higher addresses may already +have been received; the ordering is guaranteed only between +`vFlashWrite' packets). If a packet writes to an address that was +neither erased by a preceding `vFlashErase' packet nor by some other +target-specific method, the results are unpredictable. +

+ +Reply: +

+
`OK' +
for success +
`E.memtype' +
for vFlashWrite addressing non-flash memory +
`E NN' +
for an error +
+

+ +

`vFlashDone' +
+Indicate to the stub that flash programming operation is finished. +The stub is permitted to delay or batch the effects of a group of +`vFlashErase' and `vFlashWrite' packets until a +`vFlashDone' packet is received. The contents of the affected +regions of flash memory are unpredictable until the `vFlashDone' +request is completed. +

+ +

`vRun;filename[;argument]...' +
+Run the program filename, passing it each argument on its +command line. The file and arguments are hex-encoded strings. If +filename is an empty string, the stub may use a default program +(e.g. the last program run). The program is created in the stopped +state. +

+ +This packet is only available in extended mode (see extended mode). +

+ +Reply: +

+
`E nn' +
for an error +
`Any stop packet' +
for success (see section D.3 Stop Reply Packets) +
+

+ +

`X addr,length:XX...' +
+ +Write data to memory, where the data is transmitted in binary. +addr is address, length is number of bytes, +`XX...' is binary data (see Binary Data). +

+ +Reply: +

+
`OK' +
for success +
`E NN' +
for an error +
+

+ +

`z type,addr,length' +
`Z type,addr,length' +
+ + +Insert (`Z') or remove (`z') a type breakpoint or +watchpoint starting at address address and covering the next +length bytes. +

+ +Each breakpoint and watchpoint packet type is documented +separately. +

+ +Implementation notes: A remote target shall return an empty string +for an unrecognized breakpoint or watchpoint packet type. A +remote target shall support either both or neither of a given +`Ztype...' and `ztype...' packet pair. To +avoid potential problems with duplicate packets, the operations should +be implemented in an idempotent way. +

+ +

`z0,addr,length' +
`Z0,addr,length' +
+ +Insert (`Z0') or remove (`z0') a memory breakpoint at address +addr of size length. +

+ +A memory breakpoint is implemented by replacing the instruction at +addr with a software breakpoint or trap instruction. The +length is used by targets that indicates the size of the +breakpoint (in bytes) that should be inserted (e.g., the ARM and +MIPS can insert either a 2 or 4 byte breakpoint). +

+ +Implementation note: It is possible for a target to copy or move +code that contains memory breakpoints (e.g., when implementing +overlays). The behavior of this packet, in the presence of such a +target, is not defined. +

+ +Reply: +

+
`OK' +
success +
`' +
not supported +
`E NN' +
for an error +
+

+ +

`z1,addr,length' +
`Z1,addr,length' +
+ +Insert (`Z1') or remove (`z1') a hardware breakpoint at +address addr of size length. +

+ +A hardware breakpoint is implemented using a mechanism that is not +dependant on being able to modify the target's memory. +

+ +Implementation note: A hardware breakpoint is not affected by code +movement. +

+ +Reply: +

+
`OK' +
success +
`' +
not supported +
`E NN' +
for an error +
+

+ +

`z2,addr,length' +
`Z2,addr,length' +
+ +Insert (`Z2') or remove (`z2') a write watchpoint. +

+ +Reply: +

+
`OK' +
success +
`' +
not supported +
`E NN' +
for an error +
+

+ +

`z3,addr,length' +
`Z3,addr,length' +
+ +Insert (`Z3') or remove (`z3') a read watchpoint. +

+ +Reply: +

+
`OK' +
success +
`' +
not supported +
`E NN' +
for an error +
+

+ +

`z4,addr,length' +
`Z4,addr,length' +
+ +Insert (`Z4') or remove (`z4') an access watchpoint. +

+ +Reply: +

+
`OK' +
success +
`' +
not supported +
`E NN' +
for an error +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.3 Stop Reply Packets

+ +

+ +The `C', `c', `S', `s' and `?' packets can +receive any of the below as a reply. In the case of the `C', +`c', `S' and `s' packets, that reply is only returned +when the target halts. In the below the exact meaning of signal +number is defined by the header `include/gdb/signals.h' in the +GDB source code. +

+ +As in the description of request packets, we include spaces in the +reply templates for clarity; these are not part of the reply packet's +syntax. No GDB stop reply packet uses spaces to separate its +components. +

+ +

+ +
`S AA' +
The program received signal number AA (a two-digit hexadecimal +number). This is equivalent to a `T' response with no +n:r pairs. +

+ +

`T AA n1:r1;n2:r2;...' +
+The program received signal number AA (a two-digit hexadecimal +number). This is equivalent to an `S' response, except that the +`n:r' pairs can carry values of important registers +and other information directly in the stop reply packet, reducing +round-trip latency. Single-step and breakpoint traps are reported +this way. Each `n:r' pair is interpreted as follows: +

+ +

    +
  • +If n is a hexadecimal number, it is a register number, and the +corresponding r gives that register's value. r is a +series of bytes in target byte order, with each byte given by a +two-digit hex number. +

    + +

  • +If n is `thread', then r is the thread process ID, in +hex. +

    + +

  • +If n is a recognized stop reason, it describes a more +specific event that stopped the target. The currently defined stop +reasons are listed below. aa should be `05', the trap +signal. At most one stop reason should be present. +

    + +

  • +Otherwise, GDB should ignore this `n:r' pair +and go on to the next; this allows us to extend the protocol in the +future. +
+

+ +The currently defined stop reasons are: +

+ +

+
`watch' +
`rwatch' +
`awatch' +
The packet indicates a watchpoint hit, and r is the data address, in +hex. +

+ + +

`library' +
The packet indicates that the loaded libraries have changed. +GDB should use `qXfer:libraries:read' to fetch a new +list of loaded libraries. r is ignored. +
+

+ +

`W AA' +
The process exited, and AA is the exit status. This is only +applicable to certain targets. +

+ +

`X AA' +
The process terminated with signal AA. +

+ +

`O XX...' +
`XX...' is hex encoding of ASCII data, to be +written as the program's console output. This can happen at any time +while the program is running and the debugger should continue to wait +for `W', `T', etc. +

+ +

`F call-id,parameter...' +
call-id is the identifier which says which host system call should +be called. This is just the name of the function. Translation into the +correct system call is only applicable as it's defined in GDB. +See section D.10 File-I/O Remote Protocol Extension, for a list of implemented +system calls. +

+ +`parameter...' is a list of parameters as defined for +this very system call. +

+ +The target replies with this packet when it expects GDB to +call a host system call on behalf of the target. GDB replies +with an appropriate `F' packet and keeps up waiting for the next +reply packet from the target. The latest `C', `c', `S' +or `s' action is expected to be continued. See section D.10 File-I/O Remote Protocol Extension, for more details. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.4 General Query Packets

+ +

+ +Packets starting with `q' are general query packets; +packets starting with `Q' are general set packets. General +query and set packets are a semi-unified form for retrieving and +sending information to and from the stub. +

+ +The initial letter of a query or set packet is followed by a name +indicating what sort of thing the packet applies to. For example, +GDB may use a `qSymbol' packet to exchange symbol +definitions with the stub. These packet names follow some +conventions: +

+ +

    +
  • +The name must not contain commas, colons or semicolons. +
  • +Most GDB query and set packets have a leading upper case +letter. +
  • +The names of custom vendor packets should use a company prefix, in +lower case, followed by a period. For example, packets designed at +the Acme Corporation might begin with `qacme.foo' (for querying +foos) or `Qacme.bar' (for setting bars). +
+

+ +The name of a query or set packet should be separated from any +parameters by a `:'; the parameters themselves should be +separated by `,' or `;'. Stubs must be careful to match the +full packet name, and check for a separator or the end of the packet, +in case two packet names share a common prefix. New packets should not begin +with `qC', `qP', or `qL'(9). +

+ +Like the descriptions of the other packets, each description here +has a template showing the packet's overall syntax, followed by an +explanation of the packet's meaning. We include spaces in some of the +templates for clarity; these are not part of the packet's syntax. No +GDB packet uses spaces to separate its components. +

+ +Here are the currently defined query and set packets: +

+ +

+ +
`qC' +
+ +Return the current thread id. +

+ +Reply: +

+
`QC pid' +
Where pid is an unsigned hexadecimal process id. +
`(anything else)' +
Any other reply implies the old pid. +
+

+ +

`qCRC:addr,length' +
+ +Compute the CRC checksum of a block of memory. +Reply: +
+
`E NN' +
An error (such as memory fault) +
`C crc32' +
The specified memory region's checksum is crc32. +
+

+ +

`qfThreadInfo' +
`qsThreadInfo' +
+ + +Obtain a list of all active thread ids from the target (OS). Since there +may be too many active threads to fit into one reply packet, this query +works iteratively: it may require more than one query/reply sequence to +obtain the entire list of threads. The first query of the sequence will +be the `qfThreadInfo' query; subsequent queries in the +sequence will be the `qsThreadInfo' query. +

+ +NOTE: This packet replaces the `qL' query (see below). +

+ +Reply: +

+
`m id' +
A single thread id +
`m id,id...' +
a comma-separated list of thread ids +
`l' +
(lower case letter `L') denotes end of list. +
+

+ +In response to each query, the target will reply with a list of one or +more thread ids, in big-endian unsigned hex, separated by commas. +GDB will respond to each reply with a request for more thread +ids (using the `qs' form of the query), until the target responds +with `l' (lower-case el, for last). +

+ +

`qGetTLSAddr:thread-id,offset,lm' +
+ +Fetch the address associated with thread local storage specified +by thread-id, offset, and lm. +

+ +thread-id is the (big endian, hex encoded) thread id associated with the +thread for which to fetch the TLS address. +

+ +offset is the (big endian, hex encoded) offset associated with the +thread local variable. (This offset is obtained from the debug +information associated with the variable.) +

+ +lm is the (big endian, hex encoded) OS/ABI-specific encoding of the +the load module associated with the thread local storage. For example, +a GNU/Linux system will pass the link map address of the shared +object associated with the thread local storage under consideration. +Other operating environments may choose to represent the load module +differently, so the precise meaning of this parameter will vary. +

+ +Reply: +

+
`XX...' +
Hex encoded (big endian) bytes representing the address of the thread +local storage requested. +

+ +

`E nn' +
An error occurred. nn are hex digits. +

+ +

`' +
An empty reply indicates that `qGetTLSAddr' is not supported by the stub. +
+

+ +

`qL startflag threadcount nextthread' +
Obtain thread information from RTOS. Where: startflag (one hex +digit) is one to indicate the first query and zero to indicate a +subsequent query; threadcount (two hex digits) is the maximum +number of threads the response packet can contain; and nextthread +(eight hex digits), for subsequent queries (startflag is zero), is +returned in the response as argthread. +

+ +Don't use this packet; use the `qfThreadInfo' query instead (see above). +

+ +Reply: +

+
`qM count done argthread thread...' +
Where: count (two hex digits) is the number of threads being +returned; done (one hex digit) is zero to indicate more threads +and one indicates no further threads; argthreadid (eight hex +digits) is nextthread from the request packet; thread... +is a sequence of thread IDs from the target. threadid (eight hex +digits). See remote.c:parse_threadlist_response(). +
+

+ +

`qOffsets' +
+ +Get section offsets that the target used when relocating the downloaded +image. +

+ +Reply: +

+
`Text=xxx;Data=yyy[;Bss=zzz]' +
Relocate the Text section by xxx from its original address. +Relocate the Data section by yyy from its original address. +If the object file format provides segment information (e.g. ELF +`PT_LOAD' program headers), GDB will relocate entire +segments by the supplied offsets. +

+ +Note: while a Bss offset may be included in the response, +GDB ignores this and instead applies the Data offset +to the Bss section. +

+ +

`TextSeg=xxx[;DataSeg=yyy]' +
Relocate the first segment of the object file, which conventionally +contains program code, to a starting address of xxx. If +`DataSeg' is specified, relocate the second segment, which +conventionally contains modifiable data, to a starting address of +yyy. GDB will report an error if the object file +does not contain segment information, or does not contain at least +as many segments as mentioned in the reply. Extra segments are +kept at fixed offsets relative to the last relocated segment. +
+

+ +

`qP mode threadid' +
+ +Returns information on threadid. Where: mode is a hex +encoded 32 bit mode; threadid is a hex encoded 64 bit thread ID. +

+ +Don't use this packet; use the `qThreadExtraInfo' query instead +(see below). +

+ +Reply: see remote.c:remote_unpack_thread_info_response(). +

+ +

`QPassSignals: signal [;signal]...' +
+ + +Each listed signal should be passed directly to the inferior process. +Signals are numbered identically to continue packets and stop replies +(see section D.3 Stop Reply Packets). Each signal list item should be +strictly greater than the previous item. These signals do not need to stop +the inferior, or be reported to GDB. All other signals should be +reported to GDB. Multiple `QPassSignals' packets do not +combine; any earlier `QPassSignals' list is completely replaced by the +new list. This packet improves performance when using `handle +signal nostop noprint pass'. +

+ +Reply: +

+
`OK' +
The request succeeded. +

+ +

`E nn' +
An error occurred. nn are hex digits. +

+ +

`' +
An empty reply indicates that `QPassSignals' is not supported by +the stub. +
+

+ +Use of this packet is controlled by the set remote pass-signals +command (see section set remote pass-signals). +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate `qSupported' response (see qSupported). +

+ +

`qRcmd,command' +
+ +command (hex encoded) is passed to the local interpreter for +execution. Invalid commands should be reported using the output +string. Before the final result packet, the target may also respond +with a number of intermediate `Ooutput' console output +packets. Implementors should note that providing access to a +stubs's interpreter may have security implications. +

+ +Reply: +

+
`OK' +
A command response with no output. +
`OUTPUT' +
A command response with the hex encoded output string OUTPUT. +
`E NN' +
Indicate a badly formed request. +
`' +
An empty reply indicates that `qRcmd' is not recognized. +
+

+ +(Note that the qRcmd packet's name is separated from the +command by a `,', not a `:', contrary to the naming +conventions above. Please don't use this packet as a model for new +packets.) +

+ +

`qSupported [:gdbfeature [;gdbfeature]... ]' +
+ + + +Tell the remote stub about features supported by GDB, and +query the stub for features it supports. This packet allows +GDB and the remote stub to take advantage of each others' +features. `qSupported' also consolidates multiple feature probes +at startup, to improve GDB performance--a single larger +packet performs better than multiple smaller probe packets on +high-latency links. Some features may enable behavior which must not +be on by default, e.g. because it would confuse older clients or +stubs. Other features may describe packets which could be +automatically probed for, but are not. These features must be +reported before GDB will use them. This "default +unsupported" behavior is not appropriate for all packets, but it +helps to keep the initial connection time under control with new +versions of GDB which support increasing numbers of packets. +

+ +Reply: +

+
`stubfeature [;stubfeature]...' +
The stub supports or does not support each returned stubfeature, +depending on the form of each stubfeature (see below for the +possible forms). +
`' +
An empty reply indicates that `qSupported' is not recognized, +or that no features needed to be reported to GDB. +
+

+ +The allowed forms for each feature (either a gdbfeature in the +`qSupported' packet, or a stubfeature in the response) +are: +

+ +

+
`name=value' +
The remote protocol feature name is supported, and associated +with the specified value. The format of value depends +on the feature, but it must not include a semicolon. +
`name+' +
The remote protocol feature name is supported, and does not +need an associated value. +
`name-' +
The remote protocol feature name is not supported. +
`name?' +
The remote protocol feature name may be supported, and +GDB should auto-detect support in some other way when it is +needed. This form will not be used for gdbfeature notifications, +but may be used for stubfeature responses. +
+

+ +Whenever the stub receives a `qSupported' request, the +supplied set of GDB features should override any previous +request. This allows GDB to put the stub in a known +state, even if the stub had previously been communicating with +a different version of GDB. +

+ +No values of gdbfeature (for the packet sent by GDB) +are defined yet. Stubs should ignore any unknown values for +gdbfeature. Any GDB which sends a `qSupported' +packet supports receiving packets of unlimited length (earlier +versions of GDB may reject overly long responses). Values +for gdbfeature may be defined in the future to let the stub take +advantage of new features in GDB, e.g. incompatible +improvements in the remote protocol--support for unlimited length +responses would be a gdbfeature example, if it were not implied by +the `qSupported' query. The stub's reply should be independent +of the gdbfeature entries sent by GDB; first GDB +describes all the features it supports, and then the stub replies with +all the features it supports. +

+ +Similarly, GDB will silently ignore unrecognized stub feature +responses, as long as each response uses one of the standard forms. +

+ +Some features are flags. A stub which supports a flag feature +should respond with a `+' form response. Other features +require values, and the stub should respond with an `=' +form response. +

+ +Each feature has a default value, which GDB will use if +`qSupported' is not available or if the feature is not mentioned +in the `qSupported' response. The default values are fixed; a +stub is free to omit any feature responses that match the defaults. +

+ +Not all features can be probed, but for those which can, the probing +mechanism is useful: in some cases, a stub's internal +architecture may not allow the protocol layer to know some information +about the underlying target in advance. This is especially common in +stubs which may be configured for multiple targets. +

+ +These are the currently defined stub features and their properties: +

+ + + + + + + + + + + + + + + + + + + +
Feature Name Value Required + Default + Probe Allowed + +
`PacketSize' Yes + `-' + No + +
`qXfer:auxv:read' No + `-' + Yes + +
`qXfer:features:read' No + `-' + Yes + +
`qXfer:libraries:read' No + `-' + Yes + +
`qXfer:memory-map:read' No + `-' + Yes + +
`qXfer:spu:read' No + `-' + Yes + +
`qXfer:spu:write' No + `-' + Yes + +
`QPassSignals' No + `-' + Yes + +
+

+ +These are the currently defined stub features, in more detail: +

+ +

+ +
`PacketSize=bytes' +
The remote stub can accept packets up to at least bytes in +length. GDB will send packets up to this size for bulk +transfers, and will never send larger packets. This is a limit on the +data characters in the packet, including the frame and checksum. +There is no trailing NUL byte in a remote protocol packet; if the stub +stores packets in a NUL-terminated format, it should allow an extra +byte in its buffer for the NUL. If this stub feature is not supported, +GDB guesses based on the size of the `g' packet response. +

+ +

`qXfer:auxv:read' +
The remote stub understands the `qXfer:auxv:read' packet +(see qXfer auxiliary vector read). +

+ +

`qXfer:features:read' +
The remote stub understands the `qXfer:features:read' packet +(see qXfer target description read). +

+ +

`qXfer:libraries:read' +
The remote stub understands the `qXfer:libraries:read' packet +(see qXfer library list read). +

+ +

`qXfer:memory-map:read' +
The remote stub understands the `qXfer:memory-map:read' packet +(see qXfer memory map read). +

+ +

`qXfer:spu:read' +
The remote stub understands the `qXfer:spu:read' packet +(see qXfer spu read). +

+ +

`qXfer:spu:write' +
The remote stub understands the `qXfer:spu:write' packet +(see qXfer spu write). +

+ +

`QPassSignals' +
The remote stub understands the `QPassSignals' packet +(see QPassSignals). +

+ +

+

+ +

`qSymbol::' +
+ +Notify the target that GDB is prepared to serve symbol lookup +requests. Accept requests from the target for the values of symbols. +

+ +Reply: +

+
`OK' +
The target does not need to look up any (more) symbols. +
`qSymbol:sym_name' +
The target requests the value of symbol sym_name (hex encoded). +GDB may provide the value by using the +`qSymbol:sym_value:sym_name' message, described +below. +
+

+ +

`qSymbol:sym_value:sym_name' +
Set the value of sym_name to sym_value. +

+ +sym_name (hex encoded) is the name of a symbol whose value the +target has previously requested. +

+ +sym_value (hex) is the value for symbol sym_name. If +GDB cannot supply a value for sym_name, then this field +will be empty. +

+ +Reply: +

+
`OK' +
The target does not need to look up any (more) symbols. +
`qSymbol:sym_name' +
The target requests the value of a new symbol sym_name (hex +encoded). GDB will continue to supply the values of symbols +(if available), until the target ceases to request them. +
+

+ +

`QTDP' +
`QTFrame' +
See section D.6 Tracepoint Packets. +

+ +

`qThreadExtraInfo,id' +
+ +Obtain a printable string description of a thread's attributes from +the target OS. id is a thread-id in big-endian hex. This +string may contain anything that the target OS thinks is interesting +for GDB to tell the user about the thread. The string is +displayed in GDB's info threads display. Some +examples of possible thread extra info strings are `Runnable', or +`Blocked on Mutex'. +

+ +Reply: +

+
`XX...' +
Where `XX...' is a hex encoding of ASCII data, +comprising the printable string containing the extra information about +the thread's attributes. +
+

+ +(Note that the qThreadExtraInfo packet's name is separated from +the command by a `,', not a `:', contrary to the naming +conventions above. Please don't use this packet as a model for new +packets.) +

+ +

`QTStart' +
`QTStop' +
`QTinit' +
`QTro' +
`qTStatus' +
See section D.6 Tracepoint Packets. +

+ +

`qXfer:object:read:annex:offset,length' +
+ + +Read uninterpreted bytes from the target's special data area +identified by the keyword object. Request length bytes +starting at offset bytes into the data. The content and +encoding of annex is specific to object; it can supply +additional details about what data to access. +

+ +Here are the specific requests of this form defined so far. All +`qXfer:object:read:...' requests use the same reply +formats, listed below. +

+ +

+
`qXfer:auxv:read::offset,length' +
+Access the target's auxiliary vector. See section auxiliary vector. Note annex must be empty. +

+ +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate `qSupported' response (see qSupported). +

+ +

`qXfer:features:read:annex:offset,length' +
+Access the target description. See section F. Target Descriptions. The +annex specifies which XML document to access. The main description is +always loaded from the `target.xml' annex. +

+ +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate `qSupported' response (see qSupported). +

+ +

`qXfer:libraries:read:annex:offset,length' +
+Access the target's list of loaded libraries. See section D.11 Library List Format. +The annex part of the generic `qXfer' packet must be empty +(see qXfer read). +

+ +Targets which maintain a list of libraries in the program's memory do +not need to implement this packet; it is designed for platforms where +the operating system manages the list of loaded libraries. +

+ +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate `qSupported' response (see qSupported). +

+ +

`qXfer:memory-map:read::offset,length' +
+Access the target's memory-map. See section D.12 Memory Map Format. The +annex part of the generic `qXfer' packet must be empty +(see qXfer read). +

+ +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate `qSupported' response (see qSupported). +

+ +

`qXfer:spu:read:annex:offset,length' +
+Read contents of an spufs file on the target system. The +annex specifies which file to read; it must be of the form +`id/name', where id specifies an SPU context ID +in the target process, and name identifes the spufs file +in that context to be accessed. +

+ +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate `qSupported' response (see qSupported). +

+

+ +Reply: +

+
`m data' +
Data data (see Binary Data) has been read from the +target. There may be more data at a higher address (although +it is permitted to return `m' even for the last valid +block of data, as long as at least one byte of data was read). +data may have fewer bytes than the length in the +request. +

+ +

`l data' +
Data data (see Binary Data) has been read from the target. +There is no more data to be read. data may have fewer bytes +than the length in the request. +

+ +

`l' +
The offset in the request is at the end of the data. +There is no more data to be read. +

+ +

`E00' +
The request was malformed, or annex was invalid. +

+ +

`E nn' +
The offset was invalid, or there was an error encountered reading the data. +nn is a hex-encoded errno value. +

+ +

`' +
An empty reply indicates the object string was not recognized by +the stub, or that the object does not support reading. +
+

+ +

`qXfer:object:write:annex:offset:data...' +
+Write uninterpreted bytes into the target's special data area +identified by the keyword object, starting at offset bytes +into the data. data... is the binary-encoded data +(see Binary Data) to be written. The content and encoding of annex +is specific to object; it can supply additional details about what data +to access. +

+ +Here are the specific requests of this form defined so far. All +`qXfer:object:write:...' requests use the same reply +formats, listed below. +

+ +

+
`qXfer:spu:write:annex:offset:data...' +
+Write data to an spufs file on the target system. The +annex specifies which file to write; it must be of the form +`id/name', where id specifies an SPU context ID +in the target process, and name identifes the spufs file +in that context to be accessed. +

+ +This packet is not probed by default; the remote stub must request it, +by supplying an appropriate `qSupported' response (see qSupported). +

+

+ +Reply: +

+
`nn' +
nn (hex encoded) is the number of bytes written. +This may be fewer bytes than supplied in the request. +

+ +

`E00' +
The request was malformed, or annex was invalid. +

+ +

`E nn' +
The offset was invalid, or there was an error encountered writing the data. +nn is a hex-encoded errno value. +

+ +

`' +
An empty reply indicates the object string was not +recognized by the stub, or that the object does not support writing. +
+

+ +

`qXfer:object:operation:...' +
Requests of this form may be added in the future. When a stub does +not recognize the object keyword, or its support for +object does not recognize the operation keyword, the stub +must respond with an empty packet. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.5 Register Packet Format

+ +

+ +The following g/G packets have previously been defined. +In the below, some thirty-two bit registers are transferred as +sixty-four bits. Those registers should be zero/sign extended (which?) +to fill the space allocated. Register bytes are transferred in target +byte order. The two nibbles within a register byte are transferred +most-significant - least-significant. +

+ +

+ +
MIPS32 +

+ +All registers are transferred as thirty-two bit quantities in the order: +32 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point +registers; fsr; fir; fp. +

+ +

MIPS64 +

+ +All registers are transferred as sixty-four bit quantities (including +thirty-two bit registers such as sr). The ordering is the same +as MIPS32. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.6 Tracepoint Packets

+ +

+ +Here we describe the packets GDB uses to implement +tracepoints (see section 10. Tracepoints). +

+ +

+ +
`QTDP:n:addr:ena:step:pass[-]' +
Create a new tracepoint, number n, at addr. If ena +is `E', then the tracepoint is enabled; if it is `D', then +the tracepoint is disabled. step is the tracepoint's step +count, and pass is its pass count. If the trailing `-' is +present, further `QTDP' packets will follow to specify this +tracepoint's actions. +

+ +Replies: +

+
`OK' +
The packet was understood and carried out. +
`' +
The packet was not recognized. +
+

+ +

`QTDP:-n:addr:[S]action...[-]' +
Define actions to be taken when a tracepoint is hit. n and +addr must be the same as in the initial `QTDP' packet for +this tracepoint. This packet may only be sent immediately after +another `QTDP' packet that ended with a `-'. If the +trailing `-' is present, further `QTDP' packets will follow, +specifying more actions for this tracepoint. +

+ +In the series of action packets for a given tracepoint, at most one +can have an `S' before its first action. If such a packet +is sent, it and the following packets define "while-stepping" +actions. Any prior packets define ordinary actions -- that is, those +taken when the tracepoint is first hit. If no action packet has an +`S', then all the packets in the series specify ordinary +tracepoint actions. +

+ +The `action...' portion of the packet is a series of +actions, concatenated without separators. Each action has one of the +following forms: +

+ +

+ +
`R mask' +
Collect the registers whose bits are set in mask. mask is +a hexadecimal number whose i'th bit is set if register number +i should be collected. (The least significant bit is numbered +zero.) Note that mask may be any number of digits long; it may +not fit in a 32-bit word. +

+ +

`M basereg,offset,len' +
Collect len bytes of memory starting at the address in register +number basereg, plus offset. If basereg is +`-1', then the range has a fixed address: offset is the +address of the lowest byte to collect. The basereg, +offset, and len parameters are all unsigned hexadecimal +values (the `-1' value for basereg is a special case). +

+ +

`X len,expr' +
Evaluate expr, whose length is len, and collect memory as +it directs. expr is an agent expression, as described in +E. The GDB Agent Expression Mechanism. Each byte of the expression is encoded as a +two-digit hex number in the packet; len is the number of bytes +in the expression (and thus one-half the number of hex digits in the +packet). +

+ +

+

+ +Any number of actions may be packed together in a single `QTDP' +packet, as long as the packet does not exceed the maximum packet +length (400 bytes, for many stubs). There may be only one `R' +action per tracepoint, and it must precede any `M' or `X' +actions. Any registers referred to by `M' and `X' actions +must be collected by a preceding `R' action. (The +"while-stepping" actions are treated as if they were attached to a +separate tracepoint, as far as these restrictions are concerned.) +

+ +Replies: +

+
`OK' +
The packet was understood and carried out. +
`' +
The packet was not recognized. +
+

+ +

`QTFrame:n' +
Select the n'th tracepoint frame from the buffer, and use the +register and memory contents recorded there to answer subsequent +request packets from GDB. +

+ +A successful reply from the stub indicates that the stub has found the +requested frame. The response is a series of parts, concatenated +without separators, describing the frame we selected. Each part has +one of the following forms: +

+ +

+
`F f' +
The selected frame is number n in the trace frame buffer; +f is a hexadecimal number. If f is `-1', then there +was no frame matching the criteria in the request packet. +

+ +

`T t' +
The selected trace frame records a hit of tracepoint number t; +t is a hexadecimal number. +

+ +

+

+ +

`QTFrame:pc:addr' +
Like `QTFrame:n', but select the first tracepoint frame after the +currently selected frame whose PC is addr; +addr is a hexadecimal number. +

+ +

`QTFrame:tdp:t' +
Like `QTFrame:n', but select the first tracepoint frame after the +currently selected frame that is a hit of tracepoint t; t +is a hexadecimal number. +

+ +

`QTFrame:range:start:end' +
Like `QTFrame:n', but select the first tracepoint frame after the +currently selected frame whose PC is between start (inclusive) +and end (exclusive); start and end are hexadecimal +numbers. +

+ +

`QTFrame:outside:start:end' +
Like `QTFrame:range:start:end', but select the first +frame outside the given range of addresses. +

+ +

`QTStart' +
Begin the tracepoint experiment. Begin collecting data from tracepoint +hits in the trace frame buffer. +

+ +

`QTStop' +
End the tracepoint experiment. Stop collecting trace frames. +

+ +

`QTinit' +
Clear the table of tracepoints, and empty the trace frame buffer. +

+ +

`QTro:start1,end1:start2,end2:...' +
Establish the given ranges of memory as "transparent". The stub +will answer requests for these ranges from memory's current contents, +if they were not collected as part of the tracepoint hit. +

+ +GDB uses this to mark read-only regions of memory, like those +containing program code. Since these areas never change, they should +still have the same contents they did when the tracepoint was hit, so +there's no reason for the stub to refuse to provide their contents. +

+ +

`qTStatus' +
Ask the stub if there is a trace experiment running right now. +

+ +Replies: +

+
`T0' +
There is no trace experiment running. +
`T1' +
There is a trace experiment running. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.7 Host I/O Packets

+ +

+ +The Host I/O packets allow GDB to perform I/O +operations on the far side of a remote link. For example, Host I/O is +used to upload and download files to a remote target with its own +filesystem. Host I/O uses the same constant values and data structure +layout as the target-initiated File-I/O protocol. However, the +Host I/O packets are structured differently. The target-initiated +protocol relies on target memory to store parameters and buffers. +Host I/O requests are initiated by GDB, and the +target's memory is not involved. See section D.10 File-I/O Remote Protocol Extension, for more details on the target-initiated protocol. +

+ +The Host I/O request packets all encode a single operation along with +its arguments. They have this format: +

+ +

+ +
`vFile:operation: parameter...' +
operation is the name of the particular request; the target +should compare the entire packet name up to the second colon when checking +for a supported operation. The format of parameter depends on +the operation. Numbers are always passed in hexadecimal. Negative +numbers have an explicit minus sign (i.e. two's complement is not +used). Strings (e.g. filenames) are encoded as a series of +hexadecimal bytes. The last argument to a system call may be a +buffer of escaped binary data (see Binary Data). +

+ +

+

+ +The valid responses to Host I/O packets are: +

+ +

+ +
`F result [, errno] [; attachment]' +
result is the integer value returned by this operation, usually +non-negative for success and -1 for errors. If an error has occured, +errno will be included in the result. errno will have a +value defined by the File-I/O protocol (see section Errno Values). For +operations which return data, attachment supplies the data as a +binary buffer. Binary buffers in response packets are escaped in the +normal way (see Binary Data). See the individual packet +documentation for the interpretation of result and +attachment. +

+ +

`' +
An empty response indicates that this operation is not recognized. +

+ +

+

+ +These are the supported Host I/O operations: +

+ +

+
`vFile:open: pathname, flags, mode' +
Open a file at pathname and return a file descriptor for it, or +return -1 if an error occurs. pathname is a string, +flags is an integer indicating a mask of open flags +(see section Open Flags), and mode is an integer indicating a mask +of mode bits to use if the file is created (see section mode_t Values). +See section open, for details of the open flags and mode values. +

+ +

`vFile:close: fd' +
Close the open file corresponding to fd and return 0, or +-1 if an error occurs. +

+ +

`vFile:pread: fd, count, offset' +
Read data from the open file corresponding to fd. Up to +count bytes will be read from the file, starting at offset +relative to the start of the file. The target may read fewer bytes; +common reasons include packet size limits and an end-of-file +condition. The number of bytes read is returned. Zero should only be +returned for a successful read at the end of the file, or if +count was zero. +

+ +The data read should be returned as a binary attachment on success. +If zero bytes were read, the response should include an empty binary +attachment (i.e. a trailing semicolon). The return value is the +number of target bytes read; the binary attachment may be longer if +some characters were escaped. +

+ +

`vFile:pwrite: fd, offset, data' +
Write data (a binary buffer) to the open file corresponding +to fd. Start the write at offset from the start of the +file. Unlike many write system calls, there is no +separate count argument; the length of data in the +packet is used. `vFile:write' returns the number of bytes written, +which may be shorter than the length of data, or -1 if an +error occurred. +

+ +

`vFile:unlink: pathname' +
Delete the file at pathname on the target. Return 0, +or -1 if an error occurs. pathname is a string. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.8 Interrupts

+ +

+ +When a program on the remote target is running, GDB may +attempt to interrupt it by sending a `Ctrl-C' or a BREAK, +control of which is specified via GDB's `remotebreak' +setting (see set remotebreak). +

+ +The precise meaning of BREAK is defined by the transport +mechanism and may, in fact, be undefined. GDB does +not currently define a BREAK mechanism for any of the network +interfaces. +

+ +`Ctrl-C', on the other hand, is defined and implemented for all +transport mechanisms. It is represented by sending the single byte +0x03 without any of the usual packet overhead described in +the Overview section (see section D.1 Overview). When a 0x03 byte is +transmitted as part of a packet, it is considered to be packet data +and does not represent an interrupt. E.g., an `X' packet +(see X packet), used for binary downloads, may include an unescaped +0x03 as part of its packet. +

+ +Stubs are not required to recognize these interrupt mechanisms and the +precise meaning associated with receipt of the interrupt is +implementation defined. If the stub is successful at interrupting the +running program, it is expected that it will send one of the Stop +Reply Packets (see section D.3 Stop Reply Packets) to GDB as a result +of successfully stopping the program. Interrupts received while the +program is stopped will be discarded. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.9 Examples

+ +

+ +Example sequence of a target being re-started. Notice how the restart +does not get any direct output: +

+ +
 
-> R00
+<- +
+target restarts
+-> ?
+<- +
+<- T001:1234123412341234
+-> +
+

+ +Example sequence of a target being stepped by a single instruction: +

+ +
 
-> G1445...
+<- +
+-> s
+<- +
+time passes
+<- T001:1234123412341234
+-> +
+-> g
+<- +
+<- 1455...
+-> +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10 File-I/O Remote Protocol Extension

+ +

+ +

+ + + + + + + + + + +
D.10.1 File-I/O Overview  
D.10.2 Protocol Basics  
D.10.3 The F Request Packet  
D.10.4 The F Reply Packet  
D.10.5 The `Ctrl-C' Message  
D.10.6 Console I/O  
D.10.7 List of Supported Calls  
D.10.8 Protocol-specific Representation of Datatypes  
D.10.9 Constants  
D.10.10 File-I/O Examples  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.1 File-I/O Overview

+ +

+ +The File I/O remote protocol extension (short: File-I/O) allows the +target to use the host's file system and console I/O to perform various +system calls. System calls on the target system are translated into a +remote protocol packet to the host system, which then performs the needed +actions and returns a response packet to the target system. +This simulates file system operations even on targets that lack file systems. +

+ +The protocol is defined to be independent of both the host and target systems. +It uses its own internal representation of datatypes and values. Both +GDB and the target's GDB stub are responsible for +translating the system-dependent value representations into the internal +protocol representations when data is transmitted. +

+ +The communication is synchronous. A system call is possible only when +GDB is waiting for a response from the `C', `c', `S' +or `s' packets. While GDB handles the request for a system call, +the target is stopped to allow deterministic access to the target's +memory. Therefore File-I/O is not interruptible by target signals. On +the other hand, it is possible to interrupt File-I/O by a user interrupt +(`Ctrl-C') within GDB. +

+ +The target's request to perform a host system call does not finish +the latest `C', `c', `S' or `s' action. That means, +after finishing the system call, the target returns to continuing the +previous activity (continue, step). No additional continue or step +request from GDB is required. +

+ +
 
(gdb) continue
+  <- target requests 'system call X'
+  target is stopped, GDB executes system call
+  -> GDB returns result
+  ... target continues, GDB returns to wait for the target
+  <- target hits breakpoint and sends a Txx packet
+

+ +The protocol only supports I/O on the console and to regular files on +the host file system. Character or block special devices, pipes, +named pipes, sockets or any other communication method on the host +system are not supported by this protocol. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.2 Protocol Basics

+ +

+ +The File-I/O protocol uses the F packet as the request as well +as reply packet. Since a File-I/O system call can only occur when +GDB is waiting for a response from the continuing or stepping target, +the File-I/O request is a reply that GDB has to expect as a result +of a previous `C', `c', `S' or `s' packet. +This F packet contains all information needed to allow GDB +to call the appropriate host system call: +

+ +

    +
  • +A unique identifier for the requested system call. +

    + +

  • +All parameters to the system call. Pointers are given as addresses +in the target memory address space. Pointers to strings are given as +pointer/length pair. Numerical values are given as they are. +Numerical control flags are given in a protocol-specific representation. +

    + +

+

+ +At this point, GDB has to perform the following actions. +

+ +

    +
  • +If the parameters include pointer values to data needed as input to a +system call, GDB requests this data from the target with a +standard m packet request. This additional communication has to be +expected by the target implementation and is handled as any other m +packet. +

    + +

  • +GDB translates all value from protocol representation to host +representation as needed. Datatypes are coerced into the host types. +

    + +

  • +GDB calls the system call. +

    + +

  • +It then coerces datatypes back to protocol representation. +

    + +

  • +If the system call is expected to return data in buffer space specified +by pointer parameters to the call, the data is transmitted to the +target using a M or X packet. This packet has to be expected +by the target implementation and is handled as any other M or X +packet. +

    + +

+

+ +Eventually GDB replies with another F packet which contains all +necessary information for the target to continue. This at least contains +

+ +

    +
  • +Return value. +

    + +

  • +errno, if has been changed by the system call. +

    + +

  • +"Ctrl-C" flag. +

    + +

+

+ +After having done the needed type and value coercion, the target continues +the latest continue or step action. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.3 The F Request Packet

+ +

+ +The F request packet has the following format: +

+ +

+
`Fcall-id,parameter...' +

+ +call-id is the identifier to indicate the host system call to be called. +This is just the name of the function. +

+ +parameter... are the parameters to the system call. +Parameters are hexadecimal integer values, either the actual values in case +of scalar datatypes, pointers to target buffer space in case of compound +datatypes and unspecified memory areas, or pointer/length pairs in case +of string parameters. These are appended to the call-id as a +comma-delimited list. All values are transmitted in ASCII +string representation, pointer/length pairs separated by a slash. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.4 The F Reply Packet

+ +

+ +The F reply packet has the following format: +

+ +

+ +
`Fretcode,errno,Ctrl-C flag;call-specific attachment' +

+ +retcode is the return code of the system call as hexadecimal value. +

+ +errno is the errno set by the call, in protocol-specific +representation. +This parameter can be omitted if the call was successful. +

+ +Ctrl-C flag is only sent if the user requested a break. In this +case, errno must be sent as well, even if the call was successful. +The Ctrl-C flag itself consists of the character `C': +

+ +
 
F0,0,C
+

+ +or, if the call was interrupted before the host call has been performed: +

+ +
 
F-1,4,C
+

+ +assuming 4 is the protocol-specific representation of EINTR. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.5 The `Ctrl-C' Message

+ +

+ +If the `Ctrl-C' flag is set in the GDB +reply packet (see section D.10.4 The F Reply Packet), +the target should behave as if it had +gotten a break message. The meaning for the target is "system call +interrupted by SIGINT". Consequentially, the target should actually stop +(as with a break message) and return to GDB with a T02 +packet. +

+ +It's important for the target to know in which +state the system call was interrupted. There are two possible cases: +

+ +

    +
  • +The system call hasn't been performed on the host yet. +

    + +

  • +The system call on the host has been finished. +

    + +

+

+ +These two states can be distinguished by the target by the value of the +returned errno. If it's the protocol representation of EINTR, the system +call hasn't been performed. This is equivalent to the EINTR handling +on POSIX systems. In any other case, the target may presume that the +system call has been finished -- successfully or not -- and should behave +as if the break message arrived right after the system call. +

+ +GDB must behave reliably. If the system call has not been called +yet, GDB may send the F reply immediately, setting EINTR as +errno in the packet. If the system call on the host has been finished +before the user requests a break, the full action must be finished by +GDB. This requires sending M or X packets as necessary. +The F packet may only be sent when either nothing has happened +or the full action has been completed. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.6 Console I/O

+ +

+ +By default and if not explicitly closed by the target system, the file +descriptors 0, 1 and 2 are connected to the GDB console. Output +on the GDB console is handled as any other file output operation +(write(1, ...) or write(2, ...)). Console input is handled +by GDB so that after the target read request from file descriptor +0 all following typing is buffered until either one of the following +conditions is met: +

+ +

    +
  • +The user types Ctrl-c. The behaviour is as explained above, and the +read +system call is treated as finished. +

    + +

  • +The user presses RET. This is treated as end of input with a trailing +newline. +

    + +

  • +The user types Ctrl-d. This is treated as end of input. No trailing +character (neither newline nor `Ctrl-D') is appended to the input. +

    + +

+

+ +If the user has typed more characters than fit in the buffer given to +the read call, the trailing characters are buffered in GDB until +either another read(0, ...) is requested by the target, or debugging +is stopped at the user's request. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.7 List of Supported Calls

+ +

+ +

+ + + + + + + + + + + +
open  
close  
read  
write  
lseek  
rename  
unlink  
stat/fstat  
gettimeofday  
isatty  
system  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

open

+ +

+ +

+
Synopsis: +
 
int open(const char *pathname, int flags);
+int open(const char *pathname, int flags, mode_t mode);
+

+ +

Request: +
`Fopen,pathptr/len,flags,mode' +

+ +flags is the bitwise OR of the following values: +

+ +

+
O_CREAT +
If the file does not exist it will be created. The host +rules apply as far as file ownership and time stamps +are concerned. +

+ +

O_EXCL +
When used with O_CREAT, if the file already exists it is +an error and open() fails. +

+ +

O_TRUNC +
If the file already exists and the open mode allows +writing (O_RDWR or O_WRONLY is given) it will be +truncated to zero length. +

+ +

O_APPEND +
The file is opened in append mode. +

+ +

O_RDONLY +
The file is opened for reading only. +

+ +

O_WRONLY +
The file is opened for writing only. +

+ +

O_RDWR +
The file is opened for reading and writing. +
+

+ +Other bits are silently ignored. +

+ +mode is the bitwise OR of the following values: +

+ +

+
S_IRUSR +
User has read permission. +

+ +

S_IWUSR +
User has write permission. +

+ +

S_IRGRP +
Group has read permission. +

+ +

S_IWGRP +
Group has write permission. +

+ +

S_IROTH +
Others have read permission. +

+ +

S_IWOTH +
Others have write permission. +
+

+ +Other bits are silently ignored. +

+ +

Return value: +
open returns the new file descriptor or -1 if an error +occurred. +

+ +

Errors: +

+ +

+
EEXIST +
pathname already exists and O_CREAT and O_EXCL were used. +

+ +

EISDIR +
pathname refers to a directory. +

+ +

EACCES +
The requested access is not allowed. +

+ +

ENAMETOOLONG +
pathname was too long. +

+ +

ENOENT +
A directory component in pathname does not exist. +

+ +

ENODEV +
pathname refers to a device, pipe, named pipe or socket. +

+ +

EROFS +
pathname refers to a file on a read-only filesystem and +write access was requested. +

+ +

EFAULT +
pathname is an invalid pointer value. +

+ +

ENOSPC +
No space on device to create the file. +

+ +

EMFILE +
The process already has the maximum number of files open. +

+ +

ENFILE +
The limit on the total number of files open on the system +has been reached. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

close

+ +

+ +

+
Synopsis: +
 
int close(int fd);
+

+ +

Request: +
`Fclose,fd' +

+ +

Return value: +
close returns zero on success, or -1 if an error occurred. +

+ +

Errors: +

+ +

+
EBADF +
fd isn't a valid open file descriptor. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

read

+ +

+ +

+
Synopsis: +
 
int read(int fd, void *buf, unsigned int count);
+

+ +

Request: +
`Fread,fd,bufptr,count' +

+ +

Return value: +
On success, the number of bytes read is returned. +Zero indicates end of file. If count is zero, read +returns zero as well. On error, -1 is returned. +

+ +

Errors: +

+ +

+
EBADF +
fd is not a valid file descriptor or is not open for +reading. +

+ +

EFAULT +
bufptr is an invalid pointer value. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

write

+ +

+ +

+
Synopsis: +
 
int write(int fd, const void *buf, unsigned int count);
+

+ +

Request: +
`Fwrite,fd,bufptr,count' +

+ +

Return value: +
On success, the number of bytes written are returned. +Zero indicates nothing was written. On error, -1 +is returned. +

+ +

Errors: +

+ +

+
EBADF +
fd is not a valid file descriptor or is not open for +writing. +

+ +

EFAULT +
bufptr is an invalid pointer value. +

+ +

EFBIG +
An attempt was made to write a file that exceeds the +host-specific maximum file size allowed. +

+ +

ENOSPC +
No space on device to write the data. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

lseek

+ +

+ +

+
Synopsis: +
 
long lseek (int fd, long offset, int flag);
+

+ +

Request: +
`Flseek,fd,offset,flag' +

+ +flag is one of: +

+ +

+
SEEK_SET +
The offset is set to offset bytes. +

+ +

SEEK_CUR +
The offset is set to its current location plus offset +bytes. +

+ +

SEEK_END +
The offset is set to the size of the file plus offset +bytes. +
+

+ +

Return value: +
On success, the resulting unsigned offset in bytes from +the beginning of the file is returned. Otherwise, a +value of -1 is returned. +

+ +

Errors: +

+ +

+
EBADF +
fd is not a valid open file descriptor. +

+ +

ESPIPE +
fd is associated with the GDB console. +

+ +

EINVAL +
flag is not a proper value. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

rename

+ +

+ +

+
Synopsis: +
 
int rename(const char *oldpath, const char *newpath);
+

+ +

Request: +
`Frename,oldpathptr/len,newpathptr/len' +

+ +

Return value: +
On success, zero is returned. On error, -1 is returned. +

+ +

Errors: +

+ +

+
EISDIR +
newpath is an existing directory, but oldpath is not a +directory. +

+ +

EEXIST +
newpath is a non-empty directory. +

+ +

EBUSY +
oldpath or newpath is a directory that is in use by some +process. +

+ +

EINVAL +
An attempt was made to make a directory a subdirectory +of itself. +

+ +

ENOTDIR +
A component used as a directory in oldpath or new +path is not a directory. Or oldpath is a directory +and newpath exists but is not a directory. +

+ +

EFAULT +
oldpathptr or newpathptr are invalid pointer values. +

+ +

EACCES +
No access to the file or the path of the file. +

+ +

ENAMETOOLONG +

+ +oldpath or newpath was too long. +

+ +

ENOENT +
A directory component in oldpath or newpath does not exist. +

+ +

EROFS +
The file is on a read-only filesystem. +

+ +

ENOSPC +
The device containing the file has no room for the new +directory entry. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

unlink

+ +

+ +

+
Synopsis: +
 
int unlink(const char *pathname);
+

+ +

Request: +
`Funlink,pathnameptr/len' +

+ +

Return value: +
On success, zero is returned. On error, -1 is returned. +

+ +

Errors: +

+ +

+
EACCES +
No access to the file or the path of the file. +

+ +

EPERM +
The system does not allow unlinking of directories. +

+ +

EBUSY +
The file pathname cannot be unlinked because it's +being used by another process. +

+ +

EFAULT +
pathnameptr is an invalid pointer value. +

+ +

ENAMETOOLONG +
pathname was too long. +

+ +

ENOENT +
A directory component in pathname does not exist. +

+ +

ENOTDIR +
A component of the path is not a directory. +

+ +

EROFS +
The file is on a read-only filesystem. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

stat/fstat

+ +

+ +

+
Synopsis: +
 
int stat(const char *pathname, struct stat *buf);
+int fstat(int fd, struct stat *buf);
+

+ +

Request: +
`Fstat,pathnameptr/len,bufptr'
+`Ffstat,fd,bufptr' +

+ +

Return value: +
On success, zero is returned. On error, -1 is returned. +

+ +

Errors: +

+ +

+
EBADF +
fd is not a valid open file. +

+ +

ENOENT +
A directory component in pathname does not exist or the +path is an empty string. +

+ +

ENOTDIR +
A component of the path is not a directory. +

+ +

EFAULT +
pathnameptr is an invalid pointer value. +

+ +

EACCES +
No access to the file or the path of the file. +

+ +

ENAMETOOLONG +
pathname was too long. +

+ +

EINTR +
The call was interrupted by the user. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

gettimeofday

+ +

+ +

+
Synopsis: +
 
int gettimeofday(struct timeval *tv, void *tz);
+

+ +

Request: +
`Fgettimeofday,tvptr,tzptr' +

+ +

Return value: +
On success, 0 is returned, -1 otherwise. +

+ +

Errors: +

+ +

+
EINVAL +
tz is a non-NULL pointer. +

+ +

EFAULT +
tvptr and/or tzptr is an invalid pointer value. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

isatty

+ +

+ +

+
Synopsis: +
 
int isatty(int fd);
+

+ +

Request: +
`Fisatty,fd' +

+ +

Return value: +
Returns 1 if fd refers to the GDB console, 0 otherwise. +

+ +

Errors: +

+ +

+
EINTR +
The call was interrupted by the user. +
+

+ +

+

+ +Note that the isatty call is treated as a special case: it returns +1 to the target if the file descriptor is attached +to the GDB console, 0 otherwise. Implementing through system calls +would require implementing ioctl and would be more complex than +needed. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

system

+ +

+ +

+
Synopsis: +
 
int system(const char *command);
+

+ +

Request: +
`Fsystem,commandptr/len' +

+ +

Return value: +
If len is zero, the return value indicates whether a shell is +available. A zero return value indicates a shell is not available. +For non-zero len, the value returned is -1 on error and the +return status of the command otherwise. Only the exit status of the +command is returned, which is extracted from the host's system +return value by calling WEXITSTATUS(retval). In case +`/bin/sh' could not be executed, 127 is returned. +

+ +

Errors: +

+ +

+
EINTR +
The call was interrupted by the user. +
+

+ +

+

+ +GDB takes over the full task of calling the necessary host calls +to perform the system call. The return value of system on +the host is simplified before it's returned +to the target. Any termination signal information from the child process +is discarded, and the return value consists +entirely of the exit status of the called command. +

+ +Due to security concerns, the system call is by default refused +by GDB. The user has to allow this call explicitly with the +set remote system-call-allowed 1 command. +

+ +

+
set remote system-call-allowed +
+Control whether to allow the system calls in the File I/O +protocol for the remote target. The default is zero (disabled). +

+ +

show remote system-call-allowed +
+Show whether the system calls are allowed in the File I/O +protocol. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.8 Protocol-specific Representation of Datatypes

+ +

+ +

+ + + + + +
Integral Datatypes  
Pointer Values  
Memory Transfer  
struct stat  
struct timeval  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Integral Datatypes

+ +

+ +The integral datatypes used in the system calls are int, +unsigned int, long, unsigned long, +mode_t, and time_t. +

+ +int, unsigned int, mode_t and time_t are +implemented as 32 bit values in this protocol. +

+ +long and unsigned long are implemented as 64 bit types. +

+ +See section Limits, for corresponding MIN and MAX values (similar to those +in `limits.h') to allow range checking on host and target. +

+ +time_t datatypes are defined as seconds since the Epoch. +

+ +All integral datatypes transferred as part of a memory read or write of a +structured datatype e.g. a struct stat have to be given in big endian +byte order. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Pointer Values

+ +

+ +Pointers to target data are transmitted as they are. An exception +is made for pointers to buffers for which the length isn't +transmitted as part of the function call, namely strings. Strings +are transmitted as a pointer/length pair, both as hex values, e.g. +

+ +
 
1aaf/12
+

+ +which is a pointer to data of length 18 bytes at position 0x1aaf. +The length is defined as the full string length in bytes, including +the trailing null byte. For example, the string "hello world" +at address 0x123456 is transmitted as +

+ +
 
123456/d
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Memory Transfer

+ +

+ +Structured data which is transferred using a memory read or write (for +example, a struct stat) is expected to be in a protocol-specific format +with all scalar multibyte datatypes being big endian. Translation to +this representation needs to be done both by the target before the F +packet is sent, and by GDB before +it transfers memory to the target. Transferred pointers to structured +data should point to the already-coerced data at any time. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

struct stat

+ +

+ +The buffer of type struct stat used by the target and GDB +is defined as follows: +

+ +
 
struct stat {
+    unsigned int  st_dev;      /* device */
+    unsigned int  st_ino;      /* inode */
+    mode_t        st_mode;     /* protection */
+    unsigned int  st_nlink;    /* number of hard links */
+    unsigned int  st_uid;      /* user ID of owner */
+    unsigned int  st_gid;      /* group ID of owner */
+    unsigned int  st_rdev;     /* device type (if inode device) */
+    unsigned long st_size;     /* total size, in bytes */
+    unsigned long st_blksize;  /* blocksize for filesystem I/O */
+    unsigned long st_blocks;   /* number of blocks allocated */
+    time_t        st_atime;    /* time of last access */
+    time_t        st_mtime;    /* time of last modification */
+    time_t        st_ctime;    /* time of last change */
+};
+

+ +The integral datatypes conform to the definitions given in the +appropriate section (see Integral Datatypes, for details) so this +structure is of size 64 bytes. +

+ +The values of several fields have a restricted meaning and/or +range of values. +

+ +

+ +
st_dev +
A value of 0 represents a file, 1 the console. +

+ +

st_ino +
No valid meaning for the target. Transmitted unchanged. +

+ +

st_mode +
Valid mode bits are described in D.10.9 Constants. Any other +bits have currently no meaning for the target. +

+ +

st_uid +
st_gid +
st_rdev +
No valid meaning for the target. Transmitted unchanged. +

+ +

st_atime +
st_mtime +
st_ctime +
These values have a host and file system dependent +accuracy. Especially on Windows hosts, the file system may not +support exact timing values. +
+

+ +The target gets a struct stat of the above representation and is +responsible for coercing it to the target representation before +continuing. +

+ +Note that due to size differences between the host, target, and protocol +representations of struct stat members, these members could eventually +get truncated on the target. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

struct timeval

+ +

+ +The buffer of type struct timeval used by the File-I/O protocol +is defined as follows: +

+ +
 
struct timeval {
+    time_t tv_sec;  /* second */
+    long   tv_usec; /* microsecond */
+};
+

+ +The integral datatypes conform to the definitions given in the +appropriate section (see Integral Datatypes, for details) so this +structure is of size 8 bytes. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.9 Constants

+ +

+ +The following values are used for the constants inside of the +protocol. GDB and target are responsible for translating these +values before and after the call as needed. +

+ +

+ + + + + +
Open Flags  
mode_t Values  
Errno Values  
Lseek Flags  
Limits  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Open Flags

+ +

+ +All values are given in hexadecimal representation. +

+ +
 
  O_RDONLY        0x0
+  O_WRONLY        0x1
+  O_RDWR          0x2
+  O_APPEND        0x8
+  O_CREAT       0x200
+  O_TRUNC       0x400
+  O_EXCL        0x800
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

mode_t Values

+ +

+ +All values are given in octal representation. +

+ +
 
  S_IFREG       0100000
+  S_IFDIR        040000
+  S_IRUSR          0400
+  S_IWUSR          0200
+  S_IXUSR          0100
+  S_IRGRP           040
+  S_IWGRP           020
+  S_IXGRP           010
+  S_IROTH            04
+  S_IWOTH            02
+  S_IXOTH            01
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Errno Values

+ +

+ +All values are given in decimal representation. +

+ +
 
  EPERM           1
+  ENOENT          2
+  EINTR           4
+  EBADF           9
+  EACCES         13
+  EFAULT         14
+  EBUSY          16
+  EEXIST         17
+  ENODEV         19
+  ENOTDIR        20
+  EISDIR         21
+  EINVAL         22
+  ENFILE         23
+  EMFILE         24
+  EFBIG          27
+  ENOSPC         28
+  ESPIPE         29
+  EROFS          30
+  ENAMETOOLONG   91
+  EUNKNOWN       9999
+

+ + EUNKNOWN is used as a fallback error value if a host system returns + any error value not in the list of supported error numbers. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Lseek Flags

+ +

+ +
 
  SEEK_SET      0
+  SEEK_CUR      1
+  SEEK_END      2
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Limits

+ +

+ +All values are given in decimal representation. +

+ +
 
  INT_MIN       -2147483648
+  INT_MAX        2147483647
+  UINT_MAX       4294967295
+  LONG_MIN      -9223372036854775808
+  LONG_MAX       9223372036854775807
+  ULONG_MAX      18446744073709551615
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.10.10 File-I/O Examples

+ +

+ +Example sequence of a write call, file descriptor 3, buffer is at target +address 0x1234, 6 bytes should be written: +

+ +
 
<- Fwrite,3,1234,6
+request memory read from target
+-> m1234,6
+<- XXXXXX
+return "6 bytes written"
+-> F6
+

+ +Example sequence of a read call, file descriptor 3, buffer is at target +address 0x1234, 6 bytes should be read: +

+ +
 
<- Fread,3,1234,6
+request memory write to target
+-> X1234,6:XXXXXX
+return "6 bytes read"
+-> F6
+

+ +Example sequence of a read call, call fails on the host due to invalid +file descriptor (EBADF): +

+ +
 
<- Fread,3,1234,6
+-> F-1,9
+

+ +Example sequence of a read call, user presses Ctrl-c before syscall on +host is called: +

+ +
 
<- Fread,3,1234,6
+-> F-1,4,C
+<- T02
+

+ +Example sequence of a read call, user presses Ctrl-c after syscall on +host is called: +

+ +
 
<- Fread,3,1234,6
+-> X1234,6:XXXXXX
+<- T02
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.11 Library List Format

+ +

+ +On some platforms, a dynamic loader (e.g. `ld.so') runs in the +same process as your application to manage libraries. In this case, +GDB can use the loader's symbol table and normal memory +operations to maintain a list of shared libraries. On other +platforms, the operating system manages loaded libraries. +GDB can not retrieve the list of currently loaded libraries +through memory operations, so it uses the `qXfer:libraries:read' +packet (see qXfer library list read) instead. The remote stub +queries the target's operating system and reports which libraries +are loaded. +

+ +The `qXfer:libraries:read' packet returns an XML document which +lists loaded libraries and their offsets. Each library has an +associated name and one or more segment base addresses, which report +where the library was loaded in memory. The segment bases are start +addresses, not relocation offsets; they do not depend on the library's +link-time base addresses. +

+ +GDB must be linked with the Expat library to support XML +library lists. See Expat. +

+ +A simple memory map, with one loaded library relocated by a single +offset, looks like this: +

+ +
 
<library-list>
+  <library name="/lib/libc.so.6">
+    <segment address="0x10000000"/>
+  </library>
+</library-list>
+

+ +The format of a library list is described by this DTD: +

+ +
 
<!-- library-list: Root element with versioning -->
+<!ELEMENT library-list  (library)*>
+<!ATTLIST library-list  version CDATA   #FIXED  "1.0">
+<!ELEMENT library       (segment)*>
+<!ATTLIST library       name    CDATA   #REQUIRED>
+<!ELEMENT segment       EMPTY>
+<!ATTLIST segment       address CDATA   #REQUIRED>
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

D.12 Memory Map Format

+ +

+ +To be able to write into flash memory, GDB needs to obtain a +memory map from the target. This section describes the format of the +memory map. +

+ +The memory map is obtained using the `qXfer:memory-map:read' +(see qXfer memory map read) packet and is an XML document that +lists memory regions. +

+ +GDB must be linked with the Expat library to support XML +memory maps. See Expat. +

+ +The top-level structure of the document is shown below: +

+ +
 
<?xml version="1.0"?>
+<!DOCTYPE memory-map
+          PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
+                 "http://sourceware.org/gdb/gdb-memory-map.dtd">
+<memory-map>
+    region...
+</memory-map>
+

+ +Each region can be either: +

+ +

    + +
  • +A region of RAM starting at addr and extending for length +bytes from there: +

    + +
     
    <memory type="ram" start="addr" length="length"/>
    +

    + +

  • +A region of read-only memory: +

    + +
     
    <memory type="rom" start="addr" length="length"/>
    +

    + +

  • +A region of flash memory, with erasure blocks blocksize +bytes in length: +

    + +
     
    <memory type="flash" start="addr" length="length">
    +  <property name="blocksize">blocksize</property>
    +</memory>
    +

    + +

+

+ +Regions must not overlap. GDB assumes that areas of memory not covered +by the memory map are RAM, and uses the ordinary `M' and `X' +packets to write to addresses in such ranges. +

+ +The formal DTD for memory map format is given below: +

+ +
 
<!-- ................................................... -->
+<!-- Memory Map XML DTD ................................ -->
+<!-- File: memory-map.dtd .............................. -->
+<!-- .................................... .............. -->
+<!-- memory-map.dtd -->
+<!-- memory-map: Root element with versioning -->
+<!ELEMENT memory-map (memory | property)>
+<!ATTLIST memory-map    version CDATA   #FIXED  "1.0.0">
+<!ELEMENT memory (property)>
+<!-- memory: Specifies a memory region,
+             and its type, or device. -->
+<!ATTLIST memory        type    CDATA   #REQUIRED
+                        start   CDATA   #REQUIRED
+                        length  CDATA   #REQUIRED
+                        device  CDATA   #IMPLIED>
+<!-- property: Generic attribute tag -->
+<!ELEMENT property (#PCDATA | property)*>
+<!ATTLIST property      name    CDATA   #REQUIRED>
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_34.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_34.html new file mode 100644 index 0000000..7c0addd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_34.html @@ -0,0 +1,1128 @@ + + + + + +Debugging with GDB: Agent Expressions + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

E. The GDB Agent Expression Mechanism

+ +

+ +In some applications, it is not feasible for the debugger to interrupt +the program's execution long enough for the developer to learn anything +helpful about its behavior. If the program's correctness depends on its +real-time behavior, delays introduced by a debugger might cause the +program to fail, even when the code itself is correct. It is useful to +be able to observe the program's behavior without interrupting it. +

+ +Using GDB's trace and collect commands, the user can +specify locations in the program, and arbitrary expressions to evaluate +when those locations are reached. Later, using the tfind +command, she can examine the values those expressions had when the +program hit the trace points. The expressions may also denote objects +in memory -- structures or arrays, for example -- whose values GDB +should record; while visiting a particular tracepoint, the user may +inspect those objects as if they were in memory at that moment. +However, because GDB records these values without interacting with the +user, it can do so quickly and unobtrusively, hopefully not disturbing +the program's behavior. +

+ +When GDB is debugging a remote target, the GDB agent code running +on the target computes the values of the expressions itself. To avoid +having a full symbolic expression evaluator on the agent, GDB translates +expressions in the source language into a simpler bytecode language, and +then sends the bytecode to the agent; the agent then executes the +bytecode, and records the values for GDB to retrieve later. +

+ +The bytecode language is simple; there are forty-odd opcodes, the bulk +of which are the usual vocabulary of C operands (addition, subtraction, +shifts, and so on) and various sizes of literals and memory reference +operations. The bytecode interpreter operates strictly on machine-level +values -- various sizes of integers and floating point numbers -- and +requires no information about types or symbols; thus, the interpreter's +internal data structures are simple, and each bytecode requires only a +few native machine instructions to implement it. The interpreter is +small, and strict limits on the memory and time required to evaluate an +expression are easy to determine, making it suitable for use by the +debugging agent in real-time applications. +

+ +

+ + + + + + +
E.1 General Bytecode Design  Overview of the interpreter.
E.2 Bytecode Descriptions  What each one does.
E.3 Using Agent Expressions  How agent expressions fit into the big picture.
E.4 Varying Target Capabilities  How to discover what the target can do.
E.5 Tracing on Symmetrix  Special info for implementation on EMC's + boxes.
E.6 Rationale  Why we did it this way.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

E.1 General Bytecode Design

+ +

+ +The agent represents bytecode expressions as an array of bytes. Each +instruction is one byte long (thus the term bytecode). Some +instructions are followed by operand bytes; for example, the goto +instruction is followed by a destination for the jump. +

+ +The bytecode interpreter is a stack-based machine; most instructions pop +their operands off the stack, perform some operation, and push the +result back on the stack for the next instruction to consume. Each +element of the stack may contain either a integer or a floating point +value; these values are as many bits wide as the largest integer that +can be directly manipulated in the source language. Stack elements +carry no record of their type; bytecode could push a value as an +integer, then pop it as a floating point value. However, GDB will not +generate code which does this. In C, one might define the type of a +stack element as follows: +
 
union agent_val {
+  LONGEST l;
+  DOUBLEST d;
+};
+
where LONGEST and DOUBLEST are typedef names for +the largest integer and floating point types on the machine. +

+ +By the time the bytecode interpreter reaches the end of the expression, +the value of the expression should be the only value left on the stack. +For tracing applications, trace bytecodes in the expression will +have recorded the necessary data, and the value on the stack may be +discarded. For other applications, like conditional breakpoints, the +value may be useful. +

+ +Separate from the stack, the interpreter has two registers: +

+
pc +
The address of the next bytecode to execute. +

+ +

start +
The address of the start of the bytecode expression, necessary for +interpreting the goto and if_goto instructions. +

+ +

+Neither of these registers is directly visible to the bytecode language +itself, but they are useful for defining the meanings of the bytecode +operations. +

+ +There are no instructions to perform side effects on the running +program, or call the program's functions; we assume that these +expressions are only used for unobtrusive debugging, not for patching +the running code. +

+ +Most bytecode instructions do not distinguish between the various sizes +of values, and operate on full-width values; the upper bits of the +values are simply ignored, since they do not usually make a difference +to the value computed. The exceptions to this rule are: +

+ +
memory reference instructions (refn) +
There are distinct instructions to fetch different word sizes from +memory. Once on the stack, however, the values are treated as full-size +integers. They may need to be sign-extended; the ext instruction +exists for this purpose. +

+ +

the sign-extension instruction (ext n) +
These clearly need to know which portion of their operand is to be +extended to occupy the full length of the word. +

+ +

+

+ +If the interpreter is unable to evaluate an expression completely for +some reason (a memory location is inaccessible, or a divisor is zero, +for example), we say that interpretation "terminates with an error". +This means that the problem is reported back to the interpreter's caller +in some helpful way. In general, code using agent expressions should +assume that they may attempt to divide by zero, fetch arbitrary memory +locations, and misbehave in other ways. +

+ +Even complicated C expressions compile to a few bytecode instructions; +for example, the expression x + y * z would typically produce +code like the following, assuming that x and y live in +registers, and z is a global variable holding a 32-bit +int: +
 
reg 1
+reg 2
+const32 address of z
+ref32
+ext 32
+mul
+add
+end
+

+ +In detail, these mean: +

+ +
reg 1 +
Push the value of register 1 (presumably holding x) onto the +stack. +

+ +

reg 2 +
Push the value of register 2 (holding y). +

+ +

const32 address of z +
Push the address of z onto the stack. +

+ +

ref32 +
Fetch a 32-bit word from the address at the top of the stack; replace +the address on the stack with the value. Thus, we replace the address +of z with z's value. +

+ +

ext 32 +
Sign-extend the value on the top of the stack from 32 bits to full +length. This is necessary because z is a signed integer. +

+ +

mul +
Pop the top two numbers on the stack, multiply them, and push their +product. Now the top of the stack contains the value of the expression +y * z. +

+ +

add +
Pop the top two numbers, add them, and push the sum. Now the top of the +stack contains the value of x + y * z. +

+ +

end +
Stop executing; the value left on the stack top is the value to be +recorded. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

E.2 Bytecode Descriptions

+ +

+ +Each bytecode description has the following form: +

+ +

+ +
add (0x02): a b => a+b +

+ +Pop the top two stack items, a and b, as integers; push +their sum, as an integer. +

+ +

+

+ +In this example, add is the name of the bytecode, and +(0x02) is the one-byte value used to encode the bytecode, in +hexadecimal. The phrase "a b => a+b" shows +the stack before and after the bytecode executes. Beforehand, the stack +must contain at least two values, a and b; since the top of +the stack is to the right, b is on the top of the stack, and +a is underneath it. After execution, the bytecode will have +popped a and b from the stack, and replaced them with a +single value, a+b. There may be other values on the stack below +those shown, but the bytecode affects only those shown. +

+ +Here is another example: +

+ +

+ +
const8 (0x22) n: => n +
Push the 8-bit integer constant n on the stack, without sign +extension. +

+ +

+

+ +In this example, the bytecode const8 takes an operand n +directly from the bytecode stream; the operand follows the const8 +bytecode itself. We write any such operands immediately after the name +of the bytecode, before the colon, and describe the exact encoding of +the operand in the bytecode stream in the body of the bytecode +description. +

+ +For the const8 bytecode, there are no stack items given before +the =>; this simply means that the bytecode consumes no values +from the stack. If a bytecode consumes no values, or produces no +values, the list on either side of the => may be empty. +

+ +If a value is written as a, b, or n, then the bytecode +treats it as an integer. If a value is written is addr, then the +bytecode treats it as an address. +

+ +We do not fully describe the floating point operations here; although +this design can be extended in a clean way to handle floating point +values, they are not of immediate interest to the customer, so we avoid +describing them, to save time. +

+ +

+ +
float (0x01): => +

+ +Prefix for floating-point bytecodes. Not implemented yet. +

+ +

add (0x02): a b => a+b +
Pop two integers from the stack, and push their sum, as an integer. +

+ +

sub (0x03): a b => a-b +
Pop two integers from the stack, subtract the top value from the +next-to-top value, and push the difference. +

+ +

mul (0x04): a b => a*b +
Pop two integers from the stack, multiply them, and push the product on +the stack. Note that, when one multiplies two n-bit numbers +yielding another n-bit number, it is irrelevant whether the +numbers are signed or not; the results are the same. +

+ +

div_signed (0x05): a b => a/b +
Pop two signed integers from the stack; divide the next-to-top value by +the top value, and push the quotient. If the divisor is zero, terminate +with an error. +

+ +

div_unsigned (0x06): a b => a/b +
Pop two unsigned integers from the stack; divide the next-to-top value +by the top value, and push the quotient. If the divisor is zero, +terminate with an error. +

+ +

rem_signed (0x07): a b => a modulo b +
Pop two signed integers from the stack; divide the next-to-top value by +the top value, and push the remainder. If the divisor is zero, +terminate with an error. +

+ +

rem_unsigned (0x08): a b => a modulo b +
Pop two unsigned integers from the stack; divide the next-to-top value +by the top value, and push the remainder. If the divisor is zero, +terminate with an error. +

+ +

lsh (0x09): a b => a<<b +
Pop two integers from the stack; let a be the next-to-top value, +and b be the top value. Shift a left by b bits, and +push the result. +

+ +

rsh_signed (0x0a): a b => (signed)a>>b +
Pop two integers from the stack; let a be the next-to-top value, +and b be the top value. Shift a right by b bits, +inserting copies of the top bit at the high end, and push the result. +

+ +

rsh_unsigned (0x0b): a b => a>>b +
Pop two integers from the stack; let a be the next-to-top value, +and b be the top value. Shift a right by b bits, +inserting zero bits at the high end, and push the result. +

+ +

log_not (0x0e): a => !a +
Pop an integer from the stack; if it is zero, push the value one; +otherwise, push the value zero. +

+ +

bit_and (0x0f): a b => a&b +
Pop two integers from the stack, and push their bitwise and. +

+ +

bit_or (0x10): a b => a|b +
Pop two integers from the stack, and push their bitwise or. +

+ +

bit_xor (0x11): a b => a^b +
Pop two integers from the stack, and push their bitwise +exclusive-or. +

+ +

bit_not (0x12): a => ~a +
Pop an integer from the stack, and push its bitwise complement. +

+ +

equal (0x13): a b => a=b +
Pop two integers from the stack; if they are equal, push the value one; +otherwise, push the value zero. +

+ +

less_signed (0x14): a b => a<b +
Pop two signed integers from the stack; if the next-to-top value is less +than the top value, push the value one; otherwise, push the value zero. +

+ +

less_unsigned (0x15): a b => a<b +
Pop two unsigned integers from the stack; if the next-to-top value is less +than the top value, push the value one; otherwise, push the value zero. +

+ +

ext (0x16) n: a => a, sign-extended from n bits +
Pop an unsigned value from the stack; treating it as an n-bit +twos-complement value, extend it to full length. This means that all +bits to the left of bit n-1 (where the least significant bit is bit +0) are set to the value of bit n-1. Note that n may be +larger than or equal to the width of the stack elements of the bytecode +engine; in this case, the bytecode should have no effect. +

+ +The number of source bits to preserve, n, is encoded as a single +byte unsigned integer following the ext bytecode. +

+ +

zero_ext (0x2a) n: a => a, zero-extended from n bits +
Pop an unsigned value from the stack; zero all but the bottom n +bits. This means that all bits to the left of bit n-1 (where the +least significant bit is bit 0) are set to the value of bit n-1. +

+ +The number of source bits to preserve, n, is encoded as a single +byte unsigned integer following the zero_ext bytecode. +

+ +

ref8 (0x17): addr => a +
ref16 (0x18): addr => a +
ref32 (0x19): addr => a +
ref64 (0x1a): addr => a +
Pop an address addr from the stack. For bytecode +refn, fetch an n-bit value from addr, using the +natural target endianness. Push the fetched value as an unsigned +integer. +

+ +Note that addr may not be aligned in any particular way; the +refn bytecodes should operate correctly for any address. +

+ +If attempting to access memory at addr would cause a processor +exception of some sort, terminate with an error. +

+ +

ref_float (0x1b): addr => d +
ref_double (0x1c): addr => d +
ref_long_double (0x1d): addr => d +
l_to_d (0x1e): a => d +
d_to_l (0x1f): d => a +
Not implemented yet. +

+ +

dup (0x28): a => a a +
Push another copy of the stack's top element. +

+ +

swap (0x2b): a b => b a +
Exchange the top two items on the stack. +

+ +

pop (0x29): a => +
Discard the top value on the stack. +

+ +

if_goto (0x20) offset: a => +
Pop an integer off the stack; if it is non-zero, branch to the given +offset in the bytecode string. Otherwise, continue to the next +instruction in the bytecode stream. In other words, if a is +non-zero, set the pc register to start + offset. +Thus, an offset of zero denotes the beginning of the expression. +

+ +The offset is stored as a sixteen-bit unsigned value, stored +immediately following the if_goto bytecode. It is always stored +most significant byte first, regardless of the target's normal +endianness. The offset is not guaranteed to fall at any particular +alignment within the bytecode stream; thus, on machines where fetching a +16-bit on an unaligned address raises an exception, you should fetch the +offset one byte at a time. +

+ +

goto (0x21) offset: => +
Branch unconditionally to offset; in other words, set the +pc register to start + offset. +

+ +The offset is stored in the same way as for the if_goto bytecode. +

+ +

const8 (0x22) n: => n +
const16 (0x23) n: => n +
const32 (0x24) n: => n +
const64 (0x25) n: => n +
Push the integer constant n on the stack, without sign extension. +To produce a small negative value, push a small twos-complement value, +and then sign-extend it using the ext bytecode. +

+ +The constant n is stored in the appropriate number of bytes +following the constb bytecode. The constant n is +always stored most significant byte first, regardless of the target's +normal endianness. The constant is not guaranteed to fall at any +particular alignment within the bytecode stream; thus, on machines where +fetching a 16-bit on an unaligned address raises an exception, you +should fetch n one byte at a time. +

+ +

reg (0x26) n: => a +
Push the value of register number n, without sign extension. The +registers are numbered following GDB's conventions. +

+ +The register number n is encoded as a 16-bit unsigned integer +immediately following the reg bytecode. It is always stored most +significant byte first, regardless of the target's normal endianness. +The register number is not guaranteed to fall at any particular +alignment within the bytecode stream; thus, on machines where fetching a +16-bit on an unaligned address raises an exception, you should fetch the +register number one byte at a time. +

+ +

trace (0x0c): addr size => +
Record the contents of the size bytes at addr in a trace +buffer, for later retrieval by GDB. +

+ +

trace_quick (0x0d) size: addr => addr +
Record the contents of the size bytes at addr in a trace +buffer, for later retrieval by GDB. size is a single byte +unsigned integer following the trace opcode. +

+ +This bytecode is equivalent to the sequence dup const8 size +trace, but we provide it anyway to save space in bytecode strings. +

+ +

trace16 (0x30) size: addr => addr +
Identical to trace_quick, except that size is a 16-bit big-endian +unsigned integer, not a single byte. This should probably have been +named trace_quick16, for consistency. +

+ +

end (0x27): => +
Stop executing bytecode; the result should be the top element of the +stack. If the purpose of the expression was to compute an lvalue or a +range of memory, then the next-to-top of the stack is the lvalue's +address, and the top of the stack is the lvalue's size, in bytes. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

E.3 Using Agent Expressions

+ +

+ +Here is a sketch of a full non-stop debugging cycle, showing how agent +expressions fit into the process. +

+ +

    + +
  • +The user selects trace points in the program's code at which GDB should +collect data. +

    + +

  • +The user specifies expressions to evaluate at each trace point. These +expressions may denote objects in memory, in which case those objects' +contents are recorded as the program runs, or computed values, in which +case the values themselves are recorded. +

    + +

  • +GDB transmits the tracepoints and their associated expressions to the +GDB agent, running on the debugging target. +

    + +

  • +The agent arranges to be notified when a trace point is hit. Note that, +on some systems, the target operating system is completely responsible +for collecting the data; see E.5 Tracing on Symmetrix. +

    + +

  • +When execution on the target reaches a trace point, the agent evaluates +the expressions associated with that trace point, and records the +resulting values and memory ranges. +

    + +

  • +Later, when the user selects a given trace event and inspects the +objects and expression values recorded, GDB talks to the agent to +retrieve recorded data as necessary to meet the user's requests. If the +user asks to see an object whose contents have not been recorded, GDB +reports an error. +

    + +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

E.4 Varying Target Capabilities

+ +

+ +Some targets don't support floating-point, and some would rather not +have to deal with long long operations. Also, different targets +will have different stack sizes, and different bytecode buffer lengths. +

+ +Thus, GDB needs a way to ask the target about itself. We haven't worked +out the details yet, but in general, GDB should be able to send the +target a packet asking it to describe itself. The reply should be a +packet whose length is explicit, so we can add new information to the +packet in future revisions of the agent, without confusing old versions +of GDB, and it should contain a version number. It should contain at +least the following information: +

+ +

    + +
  • +whether floating point is supported +

    + +

  • +whether long long is supported +

    + +

  • +maximum acceptable size of bytecode stack +

    + +

  • +maximum acceptable length of bytecode expressions +

    + +

  • +which registers are actually available for collection +

    + +

  • +whether the target supports disabled tracepoints +

    + +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

E.5 Tracing on Symmetrix

+ +

+ +This section documents the API used by the GDB agent to collect data on +Symmetrix systems. +

+ +Cygnus originally implemented these tracing features to help EMC +Corporation debug their Symmetrix high-availability disk drives. The +Symmetrix application code already includes substantial tracing +facilities; the GDB agent for the Symmetrix system uses those facilities +for its own data collection, via the API described here. +

+ + +

+
Function: DTC_RESPONSE adbg_find_memory_in_frame (FRAME_DEF *frame, char *address, char **buffer, unsigned int *size) +
Search the trace frame frame for memory saved from address. +If the memory is available, provide the address of the buffer holding +it; otherwise, provide the address of the next saved area. +

+ +

    + +
  • +If the memory at address was saved in frame, set +*buffer to point to the buffer in which that memory was +saved, set *size to the number of bytes from address +that are saved at *buffer, and return +OK_TARGET_RESPONSE. (Clearly, in this case, the function will +always set *size to a value greater than zero.) +

    + +

  • +If frame does not record any memory at address, set +*size to the distance from address to the start of +the saved region with the lowest address higher than address. If +there is no memory saved from any higher address, set *size +to zero. Return NOT_FOUND_TARGET_RESPONSE. +
+

+ +These two possibilities allow the caller to either retrieve the data, or +walk the address space to the next saved area. +

+

+ +This function allows the GDB agent to map the regions of memory saved in +a particular frame, and retrieve their contents efficiently. +

+ +This function also provides a clean interface between the GDB agent and +the Symmetrix tracing structures, making it easier to adapt the GDB +agent to future versions of the Symmetrix system, and vice versa. This +function searches all data saved in frame, whether the data is +there at the request of a bytecode expression, or because it falls in +one of the format's memory ranges, or because it was saved from the top +of the stack. EMC can arbitrarily change and enhance the tracing +mechanism, but as long as this function works properly, all collected +memory is visible to GDB. +

+ +The function itself is straightforward to implement. A single pass over +the trace frame's stack area, memory ranges, and expression blocks can +yield the address of the buffer (if the requested address was saved), +and also note the address of the next higher range of memory, to be +returned when the search fails. +

+ +As an example, suppose the trace frame f has saved sixteen bytes +from address 0x8000 in a buffer at 0x1000, and thirty-two +bytes from address 0xc000 in a buffer at 0x1010. Here are +some sample calls, and the effect each would have: +

+ +

+ +
adbg_find_memory_in_frame (f, (char*) 0x8000, &buffer, &size) +
This would set buffer to 0x1000, set size to +sixteen, and return OK_TARGET_RESPONSE, since f saves +sixteen bytes from 0x8000 at 0x1000. +

+ +

adbg_find_memory_in_frame (f, (char *) 0x8004, &buffer, &size) +
This would set buffer to 0x1004, set size to +twelve, and return OK_TARGET_RESPONSE, since `f' saves the +twelve bytes from 0x8004 starting four bytes into the buffer at +0x1000. This shows that request addresses may fall in the middle +of saved areas; the function should return the address and size of the +remainder of the buffer. +

+ +

adbg_find_memory_in_frame (f, (char *) 0x8100, &buffer, &size) +
This would set size to 0x3f00 and return +NOT_FOUND_TARGET_RESPONSE, since there is no memory saved in +f from the address 0x8100, and the next memory available +is at 0x8100 + 0x3f00, or 0xc000. This shows that request +addresses may fall outside of all saved memory ranges; the function +should indicate the next saved area, if any. +

+ +

adbg_find_memory_in_frame (f, (char *) 0x7000, &buffer, &size) +
This would set size to 0x1000 and return +NOT_FOUND_TARGET_RESPONSE, since the next saved memory is at +0x7000 + 0x1000, or 0x8000. +

+ +

adbg_find_memory_in_frame (f, (char *) 0xf000, &buffer, &size) +
This would set size to zero, and return +NOT_FOUND_TARGET_RESPONSE. This shows how the function tells the +caller that no further memory ranges have been saved. +

+ +

+

+ +As another example, here is a function which will print out the +addresses of all memory saved in the trace frame frame on the +Symmetrix INLINES console: +
 
void
+print_frame_addresses (FRAME_DEF *frame)
+{
+  char *addr;
+  char *buffer;
+  unsigned long size;
+
+  addr = 0;
+  for (;;)
+    {
+      /* Either find out how much memory we have here, or discover
+         where the next saved region is.  */
+      if (adbg_find_memory_in_frame (frame, addr, &buffer, &size)
+          == OK_TARGET_RESPONSE)
+        printp ("saved %x to %x\n", addr, addr + size);
+      if (size == 0)
+        break;
+      addr += size;
+    }
+}
+

+ +Note that there is not necessarily any connection between the order in +which the data is saved in the trace frame, and the order in which +adbg_find_memory_in_frame will return those memory ranges. The +code above will always print the saved memory regions in order of +increasing address, while the underlying frame structure might store the +data in a random order. +

+ +[[This section should cover the rest of the Symmetrix functions the stub +relies upon, too.]] +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

E.6 Rationale

+ +

+ +Some of the design decisions apparent above are arguable. +

+ +

+ +
What about stack overflow/underflow? +
GDB should be able to query the target to discover its stack size. +Given that information, GDB can determine at translation time whether a +given expression will overflow the stack. But this spec isn't about +what kinds of error-checking GDB ought to do. +

+ +

Why are you doing everything in LONGEST? +

+ +Speed isn't important, but agent code size is; using LONGEST brings in a +bunch of support code to do things like division, etc. So this is a +serious concern. +

+ +First, note that you don't need different bytecodes for different +operand sizes. You can generate code without knowing how big the +stack elements actually are on the target. If the target only supports +32-bit ints, and you don't send any 64-bit bytecodes, everything just +works. The observation here is that the MIPS and the Alpha have only +fixed-size registers, and you can still get C's semantics even though +most instructions only operate on full-sized words. You just need to +make sure everything is properly sign-extended at the right times. So +there is no need for 32- and 64-bit variants of the bytecodes. Just +implement everything using the largest size you support. +

+ +GDB should certainly check to see what sizes the target supports, so the +user can get an error earlier, rather than later. But this information +is not necessary for correctness. +

+ +

Why don't you have > or <= operators? +
I want to keep the interpreter small, and we don't need them. We can +combine the less_ opcodes with log_not, and swap the order +of the operands, yielding all four asymmetrical comparison operators. +For example, (x <= y) is ! (x > y), which is ! (y < +x). +

+ +

Why do you have log_not? +
Why do you have ext? +
Why do you have zero_ext? +
These are all easily synthesized from other instructions, but I expect +them to be used frequently, and they're simple, so I include them to +keep bytecode strings short. +

+ +log_not is equivalent to const8 0 equal; it's used in half +the relational operators. +

+ +ext n is equivalent to const8 s-n lsh const8 +s-n rsh_signed, where s is the size of the stack elements; +it follows refm and reg bytecodes when the value +should be signed. See the next bulleted item. +

+ +zero_ext n is equivalent to constm mask +log_and; it's used whenever we push the value of a register, because we +can't assume the upper bits of the register aren't garbage. +

+ +

Why not have sign-extending variants of the ref operators? +
Because that would double the number of ref operators, and we +need the ext bytecode anyway for accessing bitfields. +

+ +

Why not have constant-address variants of the ref operators? +
Because that would double the number of ref operators again, and +const32 address ref32 is only one byte longer. +

+ +

Why do the refn operators have to support unaligned fetches? +
GDB will generate bytecode that fetches multi-byte values at unaligned +addresses whenever the executable's debugging information tells it to. +Furthermore, GDB does not know the value the pointer will have when GDB +generates the bytecode, so it cannot determine whether a particular +fetch will be aligned or not. +

+ +In particular, structure bitfields may be several bytes long, but follow +no alignment rules; members of packed structures are not necessarily +aligned either. +

+ +In general, there are many cases where unaligned references occur in +correct C code, either at the programmer's explicit request, or at the +compiler's discretion. Thus, it is simpler to make the GDB agent +bytecodes work correctly in all circumstances than to make GDB guess in +each case whether the compiler did the usual thing. +

+ +

Why are there no side-effecting operators? +
Because our current client doesn't want them? That's a cheap answer. I +think the real answer is that I'm afraid of implementing function +calls. We should re-visit this issue after the present contract is +delivered. +

+ +

Why aren't the goto ops PC-relative? +
The interpreter has the base address around anyway for PC bounds +checking, and it seemed simpler. +

+ +

Why is there only one offset size for the goto ops? +
Offsets are currently sixteen bits. I'm not happy with this situation +either: +

+ +Suppose we have multiple branch ops with different offset sizes. As I +generate code left-to-right, all my jumps are forward jumps (there are +no loops in expressions), so I never know the target when I emit the +jump opcode. Thus, I have to either always assume the largest offset +size, or do jump relaxation on the code after I generate it, which seems +like a big waste of time. +

+ +I can imagine a reasonable expression being longer than 256 bytes. I +can't imagine one being longer than 64k. Thus, we need 16-bit offsets. +This kind of reasoning is so bogus, but relaxation is pathetic. +

+ +The other approach would be to generate code right-to-left. Then I'd +always know my offset size. That might be fun. +

+ +

Where is the function call bytecode? +

+ +When we add side-effects, we should add this. +

+ +

Why does the reg bytecode take a 16-bit register number? +

+ +Intel's IA-64 architecture has 128 general-purpose registers, +and 128 floating-point registers, and I'm sure it has some random +control registers. +

+ +

Why do we need trace and trace_quick? +
Because GDB needs to record all the memory contents and registers an +expression touches. If the user wants to evaluate an expression +x->y->z, the agent must record the values of x and +x->y as well as the value of x->y->z. +

+ +

Don't the trace bytecodes make the interpreter less general? +
They do mean that the interpreter contains special-purpose code, but +that doesn't mean the interpreter can only be used for that purpose. If +an expression doesn't use the trace bytecodes, they don't get in +its way. +

+ +

Why doesn't trace_quick consume its arguments the way everything else does? +
In general, you do want your operators to consume their arguments; it's +consistent, and generally reduces the amount of stack rearrangement +necessary. However, trace_quick is a kludge to save space; it +only exists so we needn't write dup const8 SIZE trace +before every memory reference. Therefore, it's okay for it not to +consume its arguments; it's meant for a specific context in which we +know exactly what it should do with the stack. If we're going to have a +kludge, it should be an effective kludge. +

+ +

Why does trace16 exist? +
That opcode was added by the customer that contracted Cygnus for the +data tracing work. I personally think it is unnecessary; objects that +large will be quite rare, so it is okay to use dup const16 +size trace in those cases. +

+ +Whatever we decide to do with trace16, we should at least leave +opcode 0x30 reserved, to remain compatible with the customer who added +it. +

+ +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_35.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_35.html new file mode 100644 index 0000000..0109cf5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_35.html @@ -0,0 +1,752 @@ + + + + + +Debugging with GDB: Target Descriptions + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F. Target Descriptions

+ +

+ +Warning: target descriptions are still under active development, +and the contents and format may change between GDB releases. +The format is expected to stabilize in the future. +

+ +One of the challenges of using GDB to debug embedded systems +is that there are so many minor variants of each processor +architecture in use. It is common practice for vendors to start with +a standard processor core -- ARM, PowerPC, or MIPS, for example --- +and then make changes to adapt it to a particular market niche. Some +architectures have hundreds of variants, available from dozens of +vendors. This leads to a number of problems: +

+ +

    +
  • +With so many different customized processors, it is difficult for +the GDB maintainers to keep up with the changes. +
  • +Since individual variants may have short lifetimes or limited +audiences, it may not be worthwhile to carry information about every +variant in the GDB source tree. +
  • +When GDB does support the architecture of the embedded system +at hand, the task of finding the correct architecture name to give the +set architecture command can be error-prone. +
+

+ +To address these problems, the GDB remote protocol allows a +target system to not only identify itself to GDB, but to +actually describe its own features. This lets GDB support +processor variants it has never seen before -- to the extent that the +descriptions are accurate, and that GDB understands them. +

+ +GDB must be linked with the Expat library to support XML +target descriptions. See Expat. +

+ +

+ + + + +
F.1 Retrieving Descriptions  How descriptions are fetched from a target.
F.2 Target Description Format  The contents of a target description.
F.3 Predefined Target Types  Standard types available for target + descriptions.
F.4 Standard Target Features  Features GDB knows about.
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.1 Retrieving Descriptions

+ +

+ +Target descriptions can be read from the target automatically, or +specified by the user manually. The default behavior is to read the +description from the target. GDB retrieves it via the remote +protocol using `qXfer' requests (see section qXfer). The annex in the `qXfer' packet will be +`target.xml'. The contents of the `target.xml' annex are an +XML document, of the form described in F.2 Target Description Format. +

+ +Alternatively, you can specify a file to read for the target description. +If a file is set, the target will not be queried. The commands to +specify a file are: +

+ +

+ +
set tdesc filename path +
Read the target description from path. +

+ + +

unset tdesc filename +
Do not read the XML target description from a file. GDB +will use the description supplied by the current target. +

+ + +

show tdesc filename +
Show the filename to read for a target description, if any. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.2 Target Description Format

+ +

+ +A target description annex is an XML +document which complies with the Document Type Definition provided in +the GDB sources in `gdb/features/gdb-target.dtd'. This +means you can use generally available tools like xmllint to +check that your feature descriptions are well-formed and valid. +However, to help people unfamiliar with XML write descriptions for +their targets, we also describe the grammar here. +

+ +Target descriptions can identify the architecture of the remote target +and (for some architectures) provide information about custom register +sets. GDB can use this information to autoconfigure for your +target, or to warn you if you connect to an unsupported target. +

+ +Here is a simple target description: +

+ +
 
<target version="1.0">
+  <architecture>i386:x86-64</architecture>
+</target>
+

+ +This minimal description only says that the target uses +the x86-64 architecture. +

+ +A target description has the following overall form, with [ ] marking +optional elements and ... marking repeatable elements. The elements +are explained further below. +

+ +
 
<?xml version="1.0"?>
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<target version="1.0">
+  [architecture]
+  [feature...]
+</target>
+

+ +The description is generally insensitive to whitespace and line +breaks, under the usual common-sense rules. The XML version +declaration and document type declaration can generally be omitted +(GDB does not require them), but specifying them may be +useful for XML validation tools. The `version' attribute for +`<target>' may also be omitted, but we recommend +including it; if future versions of GDB use an incompatible +revision of `gdb-target.dtd', they will detect and report +the version mismatch. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.2.1 Inclusion

+ +

+ +It can sometimes be valuable to split a target description up into +several different annexes, either for organizational purposes, or to +share files between different possible target descriptions. You can +divide a description into multiple files by replacing any element of +the target description with an inclusion directive of the form: +

+ +
 
<xi:include href="document"/>
+

+ +When GDB encounters an element of this form, it will retrieve +the named XML document, and replace the inclusion directive with +the contents of that document. If the current description was read +using `qXfer', then so will be the included document; +document will be interpreted as the name of an annex. If the +current description was read from a file, GDB will look for +document as a file in the same directory where it found the +original description. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.2.2 Architecture

+ +

+ +An `<architecture>' element has this form: +

+ +
 
  <architecture>arch</architecture>
+

+ +arch is an architecture name from the same selection +accepted by set architecture (see section Specifying a Debugging Target). +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.2.3 Features

+ +

+ +Each `<feature>' describes some logical portion of the target +system. Features are currently used to describe available CPU +registers and the types of their contents. A `<feature>' element +has this form: +

+ +
 
<feature name="name">
+  [type...]
+  reg...
+</feature>
+

+ +Each feature's name should be unique within the description. The name +of a feature does not matter unless GDB has some special +knowledge of the contents of that feature; if it does, the feature +should have its standard name. See section F.4 Standard Target Features. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.2.4 Types

+ +

+ +Any register's value is a collection of bits which GDB must +interpret. The default interpretation is a two's complement integer, +but other types can be requested by name in the register description. +Some predefined types are provided by GDB (see section F.3 Predefined Target Types), and the description can define additional composite types. +

+ +Each type element must have an `id' attribute, which gives +a unique (within the containing `<feature>') name to the type. +Types must be defined before they are used. +

+ + +Some targets offer vector registers, which can be treated as arrays +of scalar elements. These types are written as `<vector>' elements, +specifying the array element type, type, and the number of elements, +count: +

+ +
 
<vector id="id" type="type" count="count"/>
+

+ + +If a register's value is usefully viewed in multiple ways, define it +with a union type containing the useful representations. The +`<union>' element contains one or more `<field>' elements, +each of which has a name and a type: +

+ +
 
<union id="id">
+  <field name="name" type="type"/>
+  ...
+</union>
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.2.5 Registers

+ +

+ +Each register is represented as an element with this form: +

+ +
 
<reg name="name"
+     bitsize="size"
+     [regnum="num"]
+     [save-restore="save-restore"]
+     [type="type"]
+     [group="group"]/>
+

+ +The components are as follows: +

+ +

+ +
name +
The register's name; it must be unique within the target description. +

+ +

bitsize +
The register's size, in bits. +

+ +

regnum +
The register's number. If omitted, a register's number is one greater +than that of the previous register (either in the current feature or in +a preceeding feature); the first register in the target description +defaults to zero. This register number is used to read or write +the register; e.g. it is used in the remote p and P +packets, and registers appear in the g and G packets +in order of increasing register number. +

+ +

save-restore +
Whether the register should be preserved across inferior function +calls; this must be either yes or no. The default is +yes, which is appropriate for most registers except for +some system control registers; this is not related to the target's +ABI. +

+ +

type +
The type of the register. type may be a predefined type, a type +defined in the current feature, or one of the special types int +and float. int is an integer type of the correct size +for bitsize, and float is a floating point type (in the +architecture's normal floating point format) of the correct size for +bitsize. The default is int. +

+ +

group +
The register group to which this register belongs. group must +be either general, float, or vector. If no +group is specified, GDB will not display the register +in info registers. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.3 Predefined Target Types

+ +

+ +Type definitions in the self-description can build up composite types +from basic building blocks, but can not define fundamental types. Instead, +standard identifiers are provided by GDB for the fundamental +types. The currently supported types are: +

+ +

+ +
int8 +
int16 +
int32 +
int64 +
int128 +
Signed integer types holding the specified number of bits. +

+ +

uint8 +
uint16 +
uint32 +
uint64 +
uint128 +
Unsigned integer types holding the specified number of bits. +

+ +

code_ptr +
data_ptr +
Pointers to unspecified code and data. The program counter and +any dedicated return address register may be marked as code +pointers; printing a code pointer converts it into a symbolic +address. The stack pointer and any dedicated address registers +may be marked as data pointers. +

+ +

ieee_single +
Single precision IEEE floating point. +

+ +

ieee_double +
Double precision IEEE floating point. +

+ +

arm_fpa_ext +
The 12-byte extended precision format used by ARM FPA registers. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.4 Standard Target Features

+ +

+ +A target description must contain either no registers or all the +target's registers. If the description contains no registers, then +GDB will assume a default register layout, selected based on +the architecture. If the description contains any registers, the +default layout will not be used; the standard registers must be +described in the target description, in such a way that GDB +can recognize them. +

+ +This is accomplished by giving specific names to feature elements +which contain standard registers. GDB will look for features +with those names and verify that they contain the expected registers; +if any known feature is missing required registers, or if any required +feature is missing, GDB will reject the target +description. You can add additional registers to any of the +standard features -- GDB will display them just as if +they were added to an unrecognized feature. +

+ +This section lists the known features and their expected contents. +Sample XML documents for these features are included in the +GDB source tree, in the directory `gdb/features'. +

+ +Names recognized by GDB should include the name of the +company or organization which selected the name, and the overall +architecture to which the feature applies; so e.g. the feature +containing ARM core registers is named `org.gnu.gdb.arm.core'. +

+ +The names of registers are not case sensitive for the purpose +of recognizing standard features, but GDB will only display +registers using the capitalization used in the description. +

+ +

+ + + + +
F.4.1 ARM Features  
F.4.2 MIPS Features  
F.4.3 M68K Features  
F.4.4 PowerPC Features  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.4.1 ARM Features

+ +

+ +The `org.gnu.gdb.arm.core' feature is required for ARM targets. +It should contain registers `r0' through `r13', `sp', +`lr', `pc', and `cpsr'. +

+ +The `org.gnu.gdb.arm.fpa' feature is optional. If present, it +should contain registers `f0' through `f7' and `fps'. +

+ +The `org.gnu.gdb.xscale.iwmmxt' feature is optional. If present, +it should contain at least registers `wR0' through `wR15' and +`wCGR0' through `wCGR3'. The `wCID', `wCon', +`wCSSF', and `wCASF' registers are optional. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.4.2 MIPS Features

+ +

+ +The `org.gnu.gdb.mips.cpu' feature is required for MIPS targets. +It should contain registers `r0' through `r31', `lo', +`hi', and `pc'. They may be 32-bit or 64-bit depending +on the target. +

+ +The `org.gnu.gdb.mips.cp0' feature is also required. It should +contain at least the `status', `badvaddr', and `cause' +registers. They may be 32-bit or 64-bit depending on the target. +

+ +The `org.gnu.gdb.mips.fpu' feature is currently required, though +it may be optional in a future version of GDB. It should +contain registers `f0' through `f31', `fcsr', and +`fir'. They may be 32-bit or 64-bit depending on the target. +

+ +The `org.gnu.gdb.mips.linux' feature is optional. It should +contain a single register, `restart', which is used by the +Linux kernel to control restartable syscalls. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.4.3 M68K Features

+ +

+ +

+
`org.gnu.gdb.m68k.core' +
`org.gnu.gdb.coldfire.core' +
`org.gnu.gdb.fido.core' +
One of those features must be always present. +The feature that is present determines which flavor of m86k is +used. The feature that is present should contain registers +`d0' through `d7', `a0' through `a5', `fp', +`sp', `ps' and `pc'. +

+ +

`org.gnu.gdb.coldfire.fp' +
This feature is optional. If present, it should contain registers +`fp0' through `fp7', `fpcontrol', `fpstatus' and +`fpiaddr'. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

F.4.4 PowerPC Features

+ +

+ +The `org.gnu.gdb.power.core' feature is required for PowerPC +targets. It should contain registers `r0' through `r31', +`pc', `msr', `cr', `lr', `ctr', and +`xer'. They may be 32-bit or 64-bit depending on the target. +

+ +The `org.gnu.gdb.power.fpu' feature is optional. It should +contain registers `f0' through `f31' and `fpscr'. +

+ +The `org.gnu.gdb.power.altivec' feature is optional. It should +contain registers `vr0' through `vr31', `vscr', +and `vrsave'. +

+ +The `org.gnu.gdb.power.spe' feature is optional. It should +contain registers `ev0h' through `ev31h', `acc', and +`spefscr'. SPE targets should provide 32-bit registers in +`org.gnu.gdb.power.core' and provide the upper halves in +`ev0h' through `ev31h'. GDB will combine +these to present registers `ev0' through `ev31' to the +user. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_36.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_36.html new file mode 100644 index 0000000..e9ca879 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_36.html @@ -0,0 +1,535 @@ + + + + + +Debugging with GDB: Copying + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

G. GNU GENERAL PUBLIC LICENSE

+ +
+ Version 2, June 1991 +
+

+ +
 
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Preamble

+ +

+ + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. +

+ + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. +

+ + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. +

+ + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. +

+ + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. +

+ + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. +

+ + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. +

+ + The precise terms and conditions for copying, distribution and +modification follow. +

+ +

+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +
+

+ +

    +
  1. +This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". +

    + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. +

    + +

  2. +You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. +

    + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. +

    + +

  3. +You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: +

    + +

      +
    1. +You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. +

      + +

    2. +You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. +

      + +

    3. +If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) +
    +

    + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +

    + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. +

    + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. +

    + +

  4. +You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: +

    + +

      +
    1. +Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, +

      + +

    2. +Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, +

      + +

    3. +Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) +
    +

    + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. +

    + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. +

    + +

  5. +You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. +

    + +

  6. +You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. +

    + +

  7. +Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. +

    + +

  8. +If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. +

    + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. +

    + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. +

    + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. +

    + +

  9. +If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. +

    + +

  10. +The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +

    + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. +

    + +

  11. +If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. +

    + +

    + NO WARRANTY +
    +

    + +

  12. +BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. +

    + +

  13. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. +
+

+ +

+ END OF TERMS AND CONDITIONS +
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

How to Apply These Terms to Your New Programs

+ +

+ + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +

+ + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +

+ +
 
one line to give the program's name and a brief idea of what it does.
+Copyright (C) year  name of author
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.
+

+ +Also add information on how to contact you by electronic and paper mail. +

+ +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: +

+ +
 
Gnomovision version 69, Copyright (C) year name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+

+ +The hypothetical commands `show w' and `show c' should show +the appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and +`show c'; they could even be mouse-clicks or menu items--whatever +suits your program. +

+ +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: +

+ +
 
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
+

+ +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_37.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_37.html new file mode 100644 index 0000000..69ea15f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_37.html @@ -0,0 +1,599 @@ + + + + + +Debugging with GDB: GNU Free Documentation License + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

H. GNU Free Documentation License

+ +

+ + +

+ Version 1.2, November 2002 +
+

+ +
 
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+

+ +

    +
  1. +PREAMBLE +

    + +The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. +

    + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. +

    + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. +

    + +

  2. +APPLICABILITY AND DEFINITIONS +

    + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. +

    + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. +

    + +A "Secondary Section" is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. +

    + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. +

    + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. +

    + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". +

    + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for +output purposes only. +

    + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. +

    + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. +

    + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. +

    + +

  3. +VERBATIM COPYING +

    + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. +

    + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +

    + +

  4. +COPYING IN QUANTITY +

    + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. +

    + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. +

    + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. +

    + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +

    + +

  5. +MODIFICATIONS +

    + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: +

    + +

      +
    1. +Use in the Title Page (and on the covers, if any) a title distinct +from that of the Document, and from those of previous versions +(which should, if there were any, be listed in the History section +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. +

      + +

    2. +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. +

      + +

    3. +State on the Title page the name of the publisher of the +Modified Version, as the publisher. +

      + +

    4. +Preserve all the copyright notices of the Document. +

      + +

    5. +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. +

      + +

    6. +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. +

      + +

    7. +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. +

      + +

    8. +Include an unaltered copy of this License. +

      + +

    9. +Preserve the section Entitled "History", Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled "History" in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. +

      + +

    10. +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the "History" section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. +

      + +

    11. +For any section Entitled "Acknowledgements" or "Dedications", Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. +

      + +

    12. +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. +

      + +

    13. +Delete any section Entitled "Endorsements". Such a section +may not be included in the Modified Version. +

      + +

    14. +Do not retitle any existing section to be Entitled "Endorsements" or +to conflict in title with any Invariant Section. +

      + +

    15. +Preserve any Warranty Disclaimers. +
    +

    + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. +

    + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. +

    + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. +

    + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +

    + +

  6. +COMBINING DOCUMENTS +

    + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. +

    + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. +

    + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all +sections Entitled "Endorsements." +

    + +

  7. +COLLECTIONS OF DOCUMENTS +

    + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. +

    + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +

    + +

  8. +AGGREGATION WITH INDEPENDENT WORKS +

    + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. +

    + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. +

    + +

  9. +TRANSLATION +

    + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. +

    + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. +

    + +

  10. +TERMINATION +

    + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. +

    + +

  11. +FUTURE REVISIONS OF THIS LICENSE +

    + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. +

    + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. +

+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

H.1 ADDENDUM: How to use this License for your documents

+ +

+ +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: +

+ +
 
  Copyright (C)  year  your name.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.2
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
+

+ +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: +

+ +
 
    with the Invariant Sections being list their titles, with
+    the Front-Cover Texts being list, and with the Back-Cover Texts
+    being list.
+

+ +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. +

+ +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_38.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_38.html new file mode 100644 index 0000000..88ad2a0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_38.html @@ -0,0 +1,418 @@ + + + + + +Debugging with GDB: Index + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index

+ +

+ +
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

!
`!' packetD.2 Packets

"
"No symbol "foo" in current context"8.2 Program Variables

#
# (a comment)3.1 Command Syntax
# in Modula-212.4.5.9 GDB and Modula-2

$
$8.8 Value History
$$8.8 Value History
$_ and info breakpoints5.1.1 Setting Breakpoints
$_ and info line7.6 Source and Machine Code
$_, $__, and value history8.5 Examining Memory
$_, convenience variable8.9 Convenience Variables
$__, convenience variable8.9 Convenience Variables
$_exitcode, convenience variable8.9 Convenience Variables
$bpnum, convenience variable5.1.1 Setting Breakpoints
$cdir, convenience variable7.5 Specifying Source Directories
$cwd, convenience variable7.5 Specifying Source Directories
$tpnum10.1.1 Create and Delete Tracepoints
$trace_file10.3 Convenience Variables for Tracepoints
$trace_frame10.3 Convenience Variables for Tracepoints
$trace_func10.3 Convenience Variables for Tracepoints
$trace_line10.3 Convenience Variables for Tracepoints
$tracepoint10.3 Convenience Variables for Tracepoints

-
--annotate2.1.2 Choosing Modes
--args2.1.2 Choosing Modes
--batch2.1.2 Choosing Modes
--batch-silent2.1.2 Choosing Modes
--baud2.1.2 Choosing Modes
--cd2.1.2 Choosing Modes
--command2.1.1 Choosing Files
--core2.1.1 Choosing Files
--directory2.1.1 Choosing Files
--epoch2.1.2 Choosing Modes
--eval-command2.1.1 Choosing Files
--exec2.1.1 Choosing Files
--fullname2.1.2 Choosing Modes
--interpreter2.1.2 Choosing Modes
--nowindows2.1.2 Choosing Modes
--nx2.1.2 Choosing Modes
--pid2.1.1 Choosing Files
--quiet2.1.2 Choosing Modes
--readnow2.1.1 Choosing Files
--return-child-result2.1.2 Choosing Modes
--se2.1.1 Choosing Files
--silent2.1.2 Choosing Modes
--statistics2.1.2 Choosing Modes
--symbols2.1.1 Choosing Files
--tty2.1.2 Choosing Modes
--tui2.1.2 Choosing Modes
--version2.1.2 Choosing Modes
--windows2.1.2 Choosing Modes
`--with-sysroot'15.1 Commands to Specify Files
--write2.1.2 Choosing Modes
-b2.1.2 Choosing Modes
-break-afterThe -break-after Command
-break-conditionThe -break-condition Command
-break-deleteThe -break-delete Command
-break-disableThe -break-disable Command
-break-enableThe -break-enable Command
-break-infoThe -break-info Command
-break-insertThe -break-insert Command
-break-listThe -break-list Command
-break-watchThe -break-watch Command
-c2.1.1 Choosing Files
-d2.1.1 Choosing Files
-data-disassembleThe -data-disassemble Command
-data-evaluate-expressionThe -data-evaluate-expression Command
-data-list-changed-registersThe -data-list-changed-registers Command
-data-list-register-namesThe -data-list-register-names Command
-data-list-register-valuesThe -data-list-register-values Command
-data-read-memoryThe -data-read-memory Command
-e2.1.1 Choosing Files
-enable-timingsThe -enable-timings Command
-environment-cdThe -environment-cd Command
-environment-directoryThe -environment-directory Command
-environment-pathThe -environment-path Command
-environment-pwdThe -environment-pwd Command
-ex2.1.1 Choosing Files
-exec-abortThe -exec-abort Command
-exec-argumentsThe -exec-arguments Command
-exec-continueThe -exec-continue Command
-exec-finishThe -exec-finish Command
-exec-interruptThe -exec-interrupt Command
-exec-nextThe -exec-next Command
-exec-next-instructionThe -exec-next-instruction Command
-exec-returnThe -exec-return Command
-exec-runThe -exec-run Command
-exec-show-argumentsThe -exec-show-arguments Command
-exec-stepThe -exec-step Command
-exec-step-instructionThe -exec-step-instruction Command
-exec-untilThe -exec-until Command
-f2.1.2 Choosing Modes
-file-exec-and-symbolsThe -file-exec-and-symbols Command
-file-exec-fileThe -file-exec-file Command
-file-list-exec-sectionsThe -file-list-exec-sections Command
-file-list-exec-source-fileThe -file-list-exec-source-file Command
-file-list-exec-source-filesThe -file-list-exec-source-files Command
-file-list-shared-librariesThe -file-list-shared-libraries Command
-file-list-symbol-filesThe -file-list-symbol-files Command
-file-symbol-fileThe -file-symbol-file Command
-gdb-exitThe -gdb-exit Command
-gdb-setThe -gdb-set Command
-gdb-showThe -gdb-show Command
-gdb-versionThe -gdb-version Command
-inferior-tty-setThe -inferior-tty-set Command
-inferior-tty-showThe -inferior-tty-show Command
-interpreter-execThe -interpreter-exec Command
-l2.1.2 Choosing Modes
-list-featuresThe -list-features Command
-n2.1.2 Choosing Modes
-nw2.1.2 Choosing Modes
-p2.1.1 Choosing Files
-q2.1.2 Choosing Modes
-r2.1.1 Choosing Files
-s2.1.1 Choosing Files
-stack-info-depthThe -stack-info-depth Command
-stack-info-frameThe -stack-info-frame Command
-stack-list-argumentsThe -stack-list-arguments Command
-stack-list-framesThe -stack-list-frames Command
-stack-list-localsThe -stack-list-locals Command
-stack-select-frameThe -stack-select-frame Command
-symbol-info-addressThe -symbol-info-address Command
-symbol-info-fileThe -symbol-info-file Command
-symbol-info-functionThe -symbol-info-function Command
-symbol-info-lineThe -symbol-info-line Command
-symbol-info-symbolThe -symbol-info-symbol Command
-symbol-list-functionsThe -symbol-list-functions Command
-symbol-list-linesThe -symbol-list-lines Command
-symbol-list-typesThe -symbol-list-types Command
-symbol-list-variablesThe -symbol-list-variables Command
-symbol-locateThe -symbol-locate Command
-symbol-typeThe -symbol-type Command
-t2.1.2 Choosing Modes
-target-attachThe -target-attach Command
-target-compare-sectionsThe -target-compare-sections Command
-target-detachThe -target-detach Command
-target-disconnectThe -target-disconnect Command
-target-downloadThe -target-download Command
-target-exec-statusThe -target-exec-status Command
-target-file-deleteThe -target-file-delete Command
-target-file-getThe -target-file-put Command
-target-file-putThe -target-file-put Command
-target-list-available-targetsThe -target-list-available-targets Command
-target-list-current-targetsThe -target-list-current-targets Command
-target-list-parametersThe -target-list-parameters Command
-target-selectThe -target-select Command
-thread-infoThe -thread-info Command
-thread-list-all-threadsThe -thread-list-all-threads Command
-thread-list-idsThe -thread-list-ids Command
-thread-selectThe -thread-select Command
-var-assignThe -var-assign Command
-var-createThe -var-create Command
-var-deleteThe -var-delete Command
-var-evaluate-expressionThe -var-evaluate-expression Command
-var-info-expressionThe -var-info-expression Command
-var-info-num-childrenThe -var-info-num-children Command
-var-info-path-expressionThe -var-info-path-expression Command
-var-info-typeThe -var-info-type Command
-var-list-childrenThe -var-list-children Command
-var-set-formatThe -var-set-format Command
-var-set-frozenThe -var-set-frozen Command
-var-show-attributesThe -var-show-attributes Command
-var-show-formatThe -var-show-format Command
-var-updateThe -var-update Command
-w2.1.2 Choosing Modes
-x2.1.1 Choosing Files

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_39.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_39.html new file mode 100644 index 0000000..c1ac398 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_39.html @@ -0,0 +1,410 @@ + + + + + +Debugging with GDB: Index: . -- B + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: . -- B

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

.
., Modula-2 scope operator12.4.5.8 The Scope Operators :: and .
`.build-id' directory15.2 Debugging Information in Separate Files
`.debug' subdirectories15.2 Debugging Information in Separate Files
`.gdbinit'2.1.3 What GDB Does During Startup
.gnu_debuglink sections15.2 Debugging Information in Separate Files
.note.gnu.build-id sections15.2 Debugging Information in Separate Files
`.o' files, reading symbols from15.1 Commands to Specify Files

/
/proc18.1.3 SVR4 Process Information

:
::, context for variables/functions8.2 Program Variables

<
<architecture>F.2.2 Architecture
<feature>F.2.3 Features
<reg>F.2.5 Registers
<union>F.2.4 Types
<vector>F.2.4 Types
<xi:include>F.2.1 Inclusion

?
`?' packetD.2 Packets

@
@, referencing memory as an array8.3 Artificial Arrays

^
^connected24.4.1 GDB/MI Result Records
^done24.4.1 GDB/MI Result Records
^error24.4.1 GDB/MI Result Records
^exit24.4.1 GDB/MI Result Records
^running24.4.1 GDB/MI Result Records

_
_NSPrintForDebugger, and printing Objective-C objects12.4.2.2 The Print Command With Objective-C

{
{type}8.1 Expressions

A
`A' packetD.2 Packets
abbreviation3.1 Command Syntax
abort (C-g)27.4.8 Some Miscellaneous Commands
abort (C-g)27.4.8 Some Miscellaneous Commands
accept-line (Newline or Return)27.4.2 Commands For Manipulating The History
accept-line (Newline or Return)27.4.2 Commands For Manipulating The History
acknowledgment, for GDB remoteD.1 Overview
actions10.1.4 Tracepoint Action Lists
active targets16.1 Active Targets
Ada12.4.6 Ada
Ada exception catching5.1.3 Setting Catchpoints
Ada mode, general12.4.6.1 Introduction
Ada, deviations from12.4.6.3 Additions to Ada
Ada, omissions from12.4.6.2 Omissions from Ada
Ada, problems12.4.6.5 Known Peculiarities of Ada Mode
adbg_find_memory_in_frameE.5 Tracing on Symmetrix
add new commands for external monitor17.1 Connecting to a Remote Target
add-shared-symbol-files15.1 Commands to Specify Files
add-symbol-file15.1 Commands to Specify Files
add-symbol-file-from-memory15.1 Commands to Specify Files
address of a symbol13. Examining the Symbol Table
address size for remote targets17.4 Remote Configuration
ADP (Angel Debugger Protocol) logging18.3.1 ARM
advance location5.2 Continuing and Stepping
aggregates (Ada)12.4.6.2 Omissions from Ada
AIX threads19.8 Optional Messages about Internal Happenings
alignment of remote memory accessesD.2 Packets
Alpha stack18.4.4 MIPS
AMD 29K register stack18.4.2 A29K
annotations25.1 What is an Annotation?
annotations for errors, warnings and interrupts25.4 Errors
annotations for invalidation messages25.5 Invalidation Notices
annotations for prompts25.3 Annotation for GDB Input
annotations for running programs25.6 Running the Program
annotations for source display25.7 Displaying Source
append8.15 Copy Between Memory and a File
append data to a file8.15 Copy Between Memory and a File
apply command to several threads4.9 Debugging Programs with Multiple Threads
apropos3.3 Getting Help
architecture debugging info19.8 Optional Messages about Internal Happenings
argument count in user-defined commands20.1 User-defined Commands
arguments (to your program)4.3 Your Program's Arguments
arguments, to gdbserver17.3.1 Running gdbserver
arguments, to user-defined commands20.1 User-defined Commands
ARM 32-bit mode18.3.1 ARM
ARM RDI18.3.1 ARM
array aggregates (Ada)12.4.6.2 Omissions from Ada
arrays8.3 Artificial Arrays
arrays in expressions8.1 Expressions
artificial array8.3 Artificial Arrays
ASCII character set8.17 Character Sets
assembly instructions7.6 Source and Machine Code
assf15.1 Commands to Specify Files
assignment14.1 Assignment to Variables
async output in GDB/MI24.1.2 GDB/MI Output Syntax
AT&T disassembly flavor7.6 Source and Machine Code
attach4.7 Debugging an Already-running Process
attach to a program by name17.3.1.1 Attaching to a Running Program
automatic display8.6 Automatic Display
automatic hardware breakpoints5.1.1 Setting Breakpoints
automatic overlay debugging11.3 Automatic Overlay Debugging
automatic thread selection4.9 Debugging Programs with Multiple Threads
auxiliary vector8.13 Operating System Auxiliary Information
AVR18.3.11 Atmel AVR
awatch5.1.2 Setting Watchpoints

B
b (break)5.1.1 Setting Breakpoints
`B' packetD.2 Packets
`b' packetD.2 Packets
backtrace6.2 Backtraces
backtrace beyond main function6.2 Backtraces
backtrace limit6.2 Backtraces
backward-char (C-b)27.4.1 Commands For Moving
backward-char (C-b)27.4.1 Commands For Moving
backward-delete-char (Rubout)27.4.3 Commands For Changing Text
backward-delete-char (Rubout)27.4.3 Commands For Changing Text
backward-kill-line (C-x Rubout)27.4.4 Killing And Yanking
backward-kill-line (C-x Rubout)27.4.4 Killing And Yanking
backward-kill-word (M-DEL)27.4.4 Killing And Yanking
backward-kill-word (M-DEL)27.4.4 Killing And Yanking
backward-word (M-b)27.4.1 Commands For Moving
backward-word (M-b)27.4.1 Commands For Moving
baud rate for remote targets17.4 Remote Configuration
bcache statisticsC. Maintenance Commands
beginning-of-history (M-&#60;)27.4.2 Commands For Manipulating The History
beginning-of-history (M-&#60;)27.4.2 Commands For Manipulating The History
beginning-of-line (C-a)27.4.1 Commands For Moving
beginning-of-line (C-a)27.4.1 Commands For Moving
bell-style27.3.1 Readline Init File Syntax
bind-tty-special-chars27.3.1 Readline Init File Syntax
bits in remote address17.4 Remote Configuration
bookmark4.11 Setting a Bookmark to Return to Later
break5.1.1 Setting Breakpoints
break ... thread threadno5.4 Stopping and Starting Multi-thread Programs
break in overloaded functions12.4.1.7 GDB Features for C++
break on fork/exec5.1.3 Setting Catchpoints
break on load/unload of shared library5.1.3 Setting Catchpoints
BREAK signal instead of Ctrl-C17.4 Remote Configuration
break, and Objective-C12.4.2.1 Method Names in Commands
breakpoint address adjusted5.1.10 "Breakpoint address adjusted..."
breakpoint annotation25.6 Running the Program
breakpoint commands5.1.7 Breakpoint Command Lists
breakpoint commands for GDB/MI24.7 GDB/MI Breakpoint Commands
breakpoint conditions5.1.6 Break Conditions
breakpoint numbers5.1 Breakpoints, Watchpoints, and Catchpoints
breakpoint on events5.1 Breakpoints, Watchpoints, and Catchpoints
breakpoint on memory address5.1 Breakpoints, Watchpoints, and Catchpoints
breakpoint on variable modification5.1 Breakpoints, Watchpoints, and Catchpoints
breakpoint ranges5.1 Breakpoints, Watchpoints, and Catchpoints
breakpoint subroutine, remote17.5.1 What the Stub Can Do for You
breakpointing Ada elaboration code12.4.6.4 Stopping at the Very Beginning
breakpoints5.1 Breakpoints, Watchpoints, and Catchpoints
breakpoints and threads5.4 Stopping and Starting Multi-thread Programs
breakpoints in functions matching a regexp5.1.1 Setting Breakpoints
breakpoints in overlays11.2 Overlay Commands
breakpoints-invalid annotation25.5 Invalidation Notices
bt (backtrace)6.2 Backtraces
bug criteria26.1 Have You Found a Bug?
bug reports26.2 How to Report Bugs
bugs in GDB26. Reporting Bugs in GDB
build ID sections15.2 Debugging Information in Separate Files
build ID, and separate debugging files15.2 Debugging Information in Separate Files
building GDB, requirements forB.1 Requirements for Building GDB
built-in simulator target16.2 Commands for Managing Targets

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_4.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_4.html new file mode 100644 index 0000000..66847b2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_4.html @@ -0,0 +1,502 @@ + + + + + +Debugging with GDB: Commands + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

3. GDB Commands

+ +

+ +You can abbreviate a GDB command to the first few letters of the command +name, if that abbreviation is unambiguous; and you can repeat certain +GDB commands by typing just RET. You can also use the TAB +key to get GDB to fill out the rest of a word in a command (or to +show you the alternatives available, if there is more than one possibility). +

+ +

+ + + +
3.1 Command Syntax  How to give commands to GDB
3.2 Command Completion  Command completion
3.3 Getting Help  How to ask GDB for help
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

3.1 Command Syntax

+ +

+ +A GDB command is a single line of input. There is no limit on +how long it can be. It starts with a command name, which is followed by +arguments whose meaning depends on the command name. For example, the +command step accepts an argument which is the number of times to +step, as in `step 5'. You can also use the step command +with no arguments. Some commands do not allow any arguments. +

+ + +GDB command names may always be truncated if that abbreviation is +unambiguous. Other possible command abbreviations are listed in the +documentation for individual commands. In some cases, even ambiguous +abbreviations are allowed; for example, s is specially defined as +equivalent to step even though there are other commands whose +names start with s. You can test abbreviations by using them as +arguments to the help command. +

+ + + +A blank line as input to GDB (typing just RET) means to +repeat the previous command. Certain commands (for example, run) +will not repeat this way; these are commands whose unintentional +repetition might cause trouble and which you are unlikely to want to +repeat. User-defined commands can disable this feature; see +dont-repeat. +

+ +The list and x commands, when you repeat them with +RET, construct new arguments rather than repeating +exactly as typed. This permits easy scanning of source or memory. +

+ +GDB can also use RET in another way: to partition lengthy +output, in a way similar to the common utility more +(see section Screen Size). Since it is easy to press one +RET too many in this situation, GDB disables command +repetition after any command that generates this sort of display. +

+ + + +Any text from a # to the end of the line is a comment; it does +nothing. This is useful mainly in command files (see section Command Files). +

+ + + +The Ctrl-o binding is useful for repeating a complex sequence of +commands. This command accepts the current line, like RET, and +then fetches the next line relative to the current line from the history +for editing. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

3.2 Command Completion

+ +

+ + + +GDB can fill in the rest of a word in a command for you, if there is +only one possibility; it can also show you what the valid possibilities +are for the next word in a command, at any time. This works for GDB +commands, GDB subcommands, and the names of symbols in your program. +

+ +Press the TAB key whenever you want GDB to fill out the rest +of a word. If there is only one possibility, GDB fills in the +word, and waits for you to finish the command (or press RET to +enter it). For example, if you type +

+ +
 
(gdb) info bre TAB
+

+ +GDB fills in the rest of the word `breakpoints', since that is +the only info subcommand beginning with `bre': +

+ +
 
(gdb) info breakpoints
+

+ +You can either press RET at this point, to run the info +breakpoints command, or backspace and enter something else, if +`breakpoints' does not look like the command you expected. (If you +were sure you wanted info breakpoints in the first place, you +might as well just type RET immediately after `info bre', +to exploit command abbreviations rather than command completion). +

+ +If there is more than one possibility for the next word when you press +TAB, GDB sounds a bell. You can either supply more +characters and try again, or just press TAB a second time; +GDB displays all the possible completions for that word. For +example, you might want to set a breakpoint on a subroutine whose name +begins with `make_', but when you type b make_TAB GDB +just sounds the bell. Typing TAB again displays all the +function names in your program that begin with those characters, for +example: +

+ +
 
(gdb) b make_ TAB
+GDB sounds bell; press TAB again, to see:
+make_a_section_from_file     make_environ
+make_abs_section             make_function_type
+make_blockvector             make_pointer_type
+make_cleanup                 make_reference_type
+make_command                 make_symbol_completion_list
+(gdb) b make_
+

+ +After displaying the available possibilities, GDB copies your +partial input (`b make_' in the example) so you can finish the +command. +

+ +If you just want to see the list of alternatives in the first place, you +can press M-? rather than pressing TAB twice. M-? +means META ?. You can type this either by holding down a +key designated as the META shift on your keyboard (if there is +one) while typing ?, or as ESC followed by ?. +

+ + + +Sometimes the string you need, while logically a "word", may contain +parentheses or other characters that GDB normally excludes from +its notion of a word. To permit word completion to work in this +situation, you may enclose words in ' (single quote marks) in +GDB commands. +

+ +The most likely situation where you might need this is in typing the +name of a C++ function. This is because C++ allows function +overloading (multiple definitions of the same function, distinguished +by argument type). For example, when you want to set a breakpoint you +may need to distinguish whether you mean the version of name +that takes an int parameter, name(int), or the version +that takes a float parameter, name(float). To use the +word-completion facilities in this situation, type a single quote +' at the beginning of the function name. This alerts +GDB that it may need to consider more information than usual +when you press TAB or M-? to request word completion: +

+ +
 
(gdb) b 'bubble( M-?
+bubble(double,double)    bubble(int,int)
+(gdb) b 'bubble(
+

+ +In some cases, GDB can tell that completing a name requires using +quotes. When this happens, GDB inserts the quote for you (while +completing as much as it can) if you do not type the quote in the first +place: +

+ +
 
(gdb) b bub TAB
+GDB alters your input line to the following, and rings a bell:
+(gdb) b 'bubble(
+

+ +In general, GDB can tell that a quote is needed (and inserts it) if +you have not yet started typing the argument list when you ask for +completion on an overloaded symbol. +

+ +For more information about overloaded functions, see C++ Expressions. You can use the command set +overload-resolution off to disable overload resolution; +see GDB Features for C++. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

3.3 Getting Help

+ +

+ +You can always ask GDB itself for information on its commands, +using the command help. +

+ +

+ +
help +
h +
You can use help (abbreviated h) with no arguments to +display a short list of named classes of commands: +

+ +
 
(gdb) help
+List of classes of commands:
+
+aliases -- Aliases of other commands
+breakpoints -- Making program stop at certain points
+data -- Examining data
+files -- Specifying and examining files
+internals -- Maintenance commands
+obscure -- Obscure features
+running -- Running the program
+stack -- Examining the stack
+status -- Status inquiries
+support -- Support facilities
+tracepoints -- Tracing of program execution without
+               stopping the program
+user-defined -- User-defined commands
+
+Type "help" followed by a class name for a list of
+commands in that class.
+Type "help" followed by command name for full
+documentation.
+Command name abbreviations are allowed if unambiguous.
+(gdb)
+

+ +

help class +
Using one of the general help classes as an argument, you can get a +list of the individual commands in that class. For example, here is the +help display for the class status: +

+ +
 
(gdb) help status
+Status inquiries.
+
+List of commands:
+
+info -- Generic command for showing things
+        about the program being debugged
+show -- Generic command for showing things
+        about the debugger
+
+Type "help" followed by command name for full
+documentation.
+Command name abbreviations are allowed if unambiguous.
+(gdb)
+

+ +

help command +
With a command name as help argument, GDB displays a +short paragraph on how to use that command. +

+ + +

apropos args +
The apropos command searches through all of the GDB +commands, and their documentation, for the regular expression specified in +args. It prints out all matches found. For example: +

+ +
 
apropos reload
+

+ +results in: +

+ +
 
set symbol-reloading -- Set dynamic symbol table reloading
+                        multiple times in one run
+show symbol-reloading -- Show dynamic symbol table reloading
+                        multiple times in one run
+

+ + +

complete args +
The complete args command lists all the possible completions +for the beginning of a command. Use args to specify the beginning of the +command you want completed. For example: +

+ +
 
complete i
+

+ +results in: +

+ +
 
if
+ignore
+info
+inspect
+

+ +This is intended for use by GNU Emacs. +

+

+ +In addition to help, you can use the GDB commands info +and show to inquire about the state of your program, or the state +of GDB itself. Each command supports many topics of inquiry; this +manual introduces each of them in the appropriate context. The listings +under info and under show in the Index point to +all the sub-commands. See section Index. +

+ +

+ + +
info +
This command (abbreviated i) is for describing the state of your +program. For example, you can show the arguments passed to a function +with info args, list the registers currently in use with info +registers, or list the breakpoints you have set with info breakpoints. +You can get a complete list of the info sub-commands with +help info. +

+ + +

set +
You can assign the result of an expression to an environment variable with +set. For example, you can set the GDB prompt to a $-sign with +set prompt $. +

+ + +

show +
In contrast to info, show is for describing the state of +GDB itself. +You can change most of the things you can show, by using the +related command set; for example, you can control what number +system is used for displays with set radix, or simply inquire +which is currently in use with show radix. +

+ + +To display all the settable parameters and their current +values, you can use show with no arguments; you may also use +info set. Both commands produce the same display. +

+

+ +Here are three miscellaneous show subcommands, all of which are +exceptional in lacking corresponding set commands: +

+ +

+ + +
show version +
Show what version of GDB is running. You should include this +information in GDB bug-reports. If multiple versions of +GDB are in use at your site, you may need to determine which +version of GDB you are running; as GDB evolves, new +commands are introduced, and old ones may wither away. Also, many +system vendors ship variant versions of GDB, and there are +variant versions of GDB in GNU/Linux distributions as well. +The version number is the same as the one announced when you start +GDB. +

+ + + + +

show copying +
info copying +
Display information about permission for copying GDB. +

+ + + +

show warranty +
info warranty +
Display the GNU "NO WARRANTY" statement, or a warranty, +if your version of GDB comes with one. +

+ +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_40.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_40.html new file mode 100644 index 0000000..04701f8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_40.html @@ -0,0 +1,382 @@ + + + + + +Debugging with GDB: Index: C + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: C

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

C
c (continue)5.2 Continuing and Stepping
c (SingleKey TUI key)22.3 TUI Single Key Mode
C and C++12.4.1 C and C++
C and C++ checks12.4.1.5 C and C++ Type and Range Checks
C and C++ constants12.4.1.2 C and C++ Constants
C and C++ defaults12.4.1.4 C and C++ Defaults
C and C++ operators12.4.1.1 C and C++ Operators
`C' packetD.2 Packets
`c' packetD.2 Packets
C++12.4.1 C and C++
C++ compilers12.4.1.3 C++ Expressions
C++ exception handling12.4.1.7 GDB Features for C++
C++ overload debugging info19.8 Optional Messages about Internal Happenings
C++ scope resolution8.2 Program Variables
C++ symbol decoding style8.7 Print Settings
C++ symbol display12.4.1.7 GDB Features for C++
C-L22.2 TUI Key Bindings
C-x 122.2 TUI Key Bindings
C-x 222.2 TUI Key Bindings
C-x A22.2 TUI Key Bindings
C-x a22.2 TUI Key Bindings
C-x C-a22.2 TUI Key Bindings
C-x o22.2 TUI Key Bindings
C-x s22.2 TUI Key Bindings
caching data of remote targets8.18 Caching Data of Remote Targets
call14.5 Calling Program Functions
call dummy stack unwinding14.5 Calling Program Functions
call overloaded functions12.4.1.3 C++ Expressions
call stack6. Examining the Stack
call stack traces6.2 Backtraces
call-last-kbd-macro (C-x e)27.4.7 Keyboard Macros
call-last-kbd-macro (C-x e)27.4.7 Keyboard Macros
calling functions14.5 Calling Program Functions
calling make2.3 Shell Commands
capitalize-word (M-c)27.4.3 Commands For Changing Text
capitalize-word (M-c)27.4.3 Commands For Changing Text
case sensitivity in symbol names13. Examining the Symbol Table
case-insensitive symbol names13. Examining the Symbol Table
casts, in expressions8.1 Expressions
casts, to view memory8.1 Expressions
catch5.1.3 Setting Catchpoints
catch Ada exceptions5.1.3 Setting Catchpoints
catch exceptions, list active handlers6.4 Information About a Frame
catchpoints5.1 Breakpoints, Watchpoints, and Catchpoints
catchpoints, setting5.1.3 Setting Catchpoints
cd4.5 Your Program's Working Directory
cdir7.5 Specifying Source Directories
Cell Broadband Engine18.4.6 Cell Broadband Engine SPU architecture
change working directory4.5 Your Program's Working Directory
character sets8.17 Character Sets
character-search (C-])27.4.8 Some Miscellaneous Commands
character-search (C-])27.4.8 Some Miscellaneous Commands
character-search-backward (M-C-])27.4.8 Some Miscellaneous Commands
character-search-backward (M-C-])27.4.8 Some Miscellaneous Commands
charset8.17 Character Sets
checkpoint4.11 Setting a Bookmark to Return to Later
checkpoints and process id4.11 Setting a Bookmark to Return to Later
checks, range12.3.1 An Overview of Type Checking
checks, type12.3 Type and Range Checking
checksum, for GDB remoteD.1 Overview
choosing target byte order16.3 Choosing Target Byte Order
clear5.1.4 Deleting Breakpoints
clear, and Objective-C12.4.2.1 Method Names in Commands
clear-screen (C-l)27.4.1 Commands For Moving
clear-screen (C-l)27.4.1 Commands For Moving
clearing breakpoints, watchpoints, catchpoints5.1.4 Deleting Breakpoints
close, file-i/o system callclose
closest symbol and offset for an address13. Examining the Symbol Table
code address and its source line7.6 Source and Machine Code
collect (tracepoints)10.1.4 Tracepoint Action Lists
collected data discarded10.1.6 Starting and Stopping Trace Experiments
colon, doubled as scope operator12.4.5.8 The Scope Operators :: and .
colon-colon, context for variables/functions8.2 Program Variables
colon-colon, in Modula-212.4.5.8 The Scope Operators :: and .
command editing27.2.1 Readline Bare Essentials
command files20.3 Command Files
command history19.3 Command History
command hooks20.2 User-defined Command Hooks
command interpreters21. Command Interpreters
command line editing19.2 Command Editing
command scripts, debugging19.7 Optional Warnings and Messages
command tracing19.7 Optional Warnings and Messages
commands5.1.7 Breakpoint Command Lists
commands annotation25.3 Annotation for GDB Input
commands for C++12.4.1.7 GDB Features for C++
comment3.1 Command Syntax
comment-begin27.3.1 Readline Init File Syntax
COMMON blocks, Fortran12.4.3.3 Special Fortran Commands
common targets16.2 Commands for Managing Targets
compare-sections8.5 Examining Memory
compatibility, GDB/MI and CLI24.2 GDB/MI Compatibility with CLI
compilation directory7.5 Specifying Source Directories
compiling, on Sparclet18.3.8 Tsqware Sparclet
complete3.3 Getting Help
complete (TAB)27.4.6 Letting Readline Type For You
complete (TAB)27.4.6 Letting Readline Type For You
completion3.2 Command Completion
completion of quoted strings3.2 Command Completion
completion-query-items27.3.1 Readline Init File Syntax
condition5.1.6 Break Conditions
conditional breakpoints5.1.6 Break Conditions
configuring GDBB.2 Invoking the GDB `configure' Script
confirmation19.7 Optional Warnings and Messages
console i/o as part of file-i/oD.10.6 Console I/O
console interpreter21. Command Interpreters
console output in GDB/MI24.1.2 GDB/MI Output Syntax
constants, in file-i/o protocolD.10.9 Constants
continue5.2 Continuing and Stepping
continuing5.2 Continuing and Stepping
continuing threads5.4 Stopping and Starting Multi-thread Programs
control C, and remote debugging17.5.2 What You Must Do for the Stub
controlling terminal4.6 Your Program's Input and Output
convenience variables8.9 Convenience Variables
convenience variables for tracepoints10.3 Convenience Variables for Tracepoints
convenience variables, initializing8.9 Convenience Variables
convert-meta27.3.1 Readline Init File Syntax
copy-backward-word ()27.4.4 Killing And Yanking
copy-backward-word ()27.4.4 Killing And Yanking
copy-forward-word ()27.4.4 Killing And Yanking
copy-forward-word ()27.4.4 Killing And Yanking
copy-region-as-kill ()27.4.4 Killing And Yanking
copy-region-as-kill ()27.4.4 Killing And Yanking
core dump file15.1 Commands to Specify Files
core dump file target16.2 Commands for Managing Targets
core-file15.1 Commands to Specify Files
crash of debugger26.1 Have You Found a Bug?
CRC of memory block, remote requestD.4 General Query Packets
CRIS18.3.12 CRIS
CRIS mode18.3.12 CRIS
CRIS version18.3.12 CRIS
ctrl-c message, in file-i/o protocolD.10.5 The `Ctrl-C' Message
Ctrl-o (operate-and-get-next)3.1 Command Syntax
current directory7.5 Specifying Source Directories
current stack frame6.1 Stack Frames
current thread4.9 Debugging Programs with Multiple Threads
current thread, remote requestD.4 General Query Packets
cwd7.5 Specifying Source Directories
Cygwin DLL, debugging18.1.5 Features for Debugging MS Windows PE Executables
Cygwin-specific commands18.1.5 Features for Debugging MS Windows PE Executables

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_41.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_41.html new file mode 100644 index 0000000..f81b4d7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_41.html @@ -0,0 +1,353 @@ + + + + + +Debugging with GDB: Index: D + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: D

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

D
d (delete)5.1.4 Deleting Breakpoints
d (SingleKey TUI key)22.3 TUI Single Key Mode
`d' packetD.2 Packets
`D' packetD.2 Packets
data breakpoints5.1 Breakpoints, Watchpoints, and Catchpoints
data manipulation, in GDB/MI24.13 GDB/MI Data Manipulation
dead names, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
debug formats and C++12.4.1.3 C++ Expressions
debug link sections15.2 Debugging Information in Separate Files
debug remote protocol19.8 Optional Messages about Internal Happenings
debug_chaos18.3.2 Renesas M32R/D and M32R/SDI
debugger crash26.1 Have You Found a Bug?
debugging C++ programs12.4.1.3 C++ Expressions
debugging information directory, global15.2 Debugging Information in Separate Files
debugging information in separate files15.2 Debugging Information in Separate Files
debugging multiple processes4.10 Debugging Programs with Multiple Processes
debugging multithreaded programs (on HP-UX)4.9 Debugging Programs with Multiple Threads
debugging optimized code4.1 Compiling for Debugging
debugging stub, example17.5 Implementing a Remote Stub
debugging target16. Specifying a Debugging Target
debugging the Cygwin DLL18.1.5 Features for Debugging MS Windows PE Executables
decimal floating point format12.4.1.8 Decimal Floating Point format
default system root15.1 Commands to Specify Files
define20.1 User-defined Commands
defining macros interactively9. C Preprocessor Macros
definition, showing a macro's9. C Preprocessor Macros
delete5.1.4 Deleting Breakpoints
delete breakpoints5.1.4 Deleting Breakpoints
delete checkpoint checkpoint-id4.11 Setting a Bookmark to Return to Later
delete display8.6 Automatic Display
delete fork fork-id4.10 Debugging Programs with Multiple Processes
delete mem8.14 Memory Region Attributes
delete tracepoint10.1.1 Create and Delete Tracepoints
delete-char (C-d)27.4.3 Commands For Changing Text
delete-char (C-d)27.4.3 Commands For Changing Text
delete-char-or-list ()27.4.6 Letting Readline Type For You
delete-char-or-list ()27.4.6 Letting Readline Type For You
delete-horizontal-space ()27.4.4 Killing And Yanking
delete-horizontal-space ()27.4.4 Killing And Yanking
deleting breakpoints, watchpoints, catchpoints5.1.4 Deleting Breakpoints
deliver a signal to a program14.3 Giving your Program a Signal
demangling C++ names8.7 Print Settings
deprecated commandsC. Maintenance Commands
derived type of an object, printing8.7 Print Settings
descriptor tables display18.1.4 Features for Debugging DJGPP Programs
detach4.7 Debugging an Already-running Process
detach (remote)17.1 Connecting to a Remote Target
detach fork fork-id4.10 Debugging Programs with Multiple Processes
detach from task, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
detach from thread, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
digit-argument (M-0, M-1, <small>...</small> M--)27.4.5 Specifying Numeric Arguments
digit-argument (M-0, M-1, <small>...</small> M--)27.4.5 Specifying Numeric Arguments
dir7.5 Specifying Source Directories
direct memory access (DMA) on MS-DOS18.1.4 Features for Debugging DJGPP Programs
directories for source files7.5 Specifying Source Directories
directory7.5 Specifying Source Directories
directory, compilation7.5 Specifying Source Directories
directory, current7.5 Specifying Source Directories
dis (disable)5.1.5 Disabling Breakpoints
disable5.1.5 Disabling Breakpoints
disable display8.6 Automatic Display
disable mem8.14 Memory Region Attributes
disable tracepoint10.1.2 Enable and Disable Tracepoints
disable-completion27.3.1 Readline Init File Syntax
disassemble7.6 Source and Machine Code
disconnect17.1 Connecting to a Remote Target
display8.6 Automatic Display
display command history19.3 Command History
display derived types8.7 Print Settings
display disabled out of scope8.6 Automatic Display
display GDB copyright3.3 Getting Help
display of expressions8.6 Automatic Display
display remote monitor communications16.2 Commands for Managing Targets
display remote packets19.8 Optional Messages about Internal Happenings
DJGPP debugging18.1.4 Features for Debugging DJGPP Programs
dll-symbols18.1.5 Features for Debugging MS Windows PE Executables
DLLs with no debugging symbols18.1.5.1 Support for DLLs without Debugging Symbols
do (down)6.3 Selecting a Frame
do not print frame argument values8.7 Print Settings
do-uppercase-version (M-a, M-b, M-x, <small>...</small>)27.4.8 Some Miscellaneous Commands
do-uppercase-version (M-a, M-b, M-x, <small>...</small>)27.4.8 Some Miscellaneous Commands
document20.1 User-defined Commands
documentationA. Formatting Documentation
don't repeat command20.1 User-defined Commands
dont-repeat20.1 User-defined Commands
DOS serial data link, remote debugging18.1.4 Features for Debugging DJGPP Programs
DOS serial port status18.1.4 Features for Debugging DJGPP Programs
Down22.2 TUI Key Bindings
down6.3 Selecting a Frame
down-silently6.3 Selecting a Frame
downcase-word (M-l)27.4.3 Commands For Changing Text
downcase-word (M-l)27.4.3 Commands For Changing Text
download server address (M32R)18.3.2 Renesas M32R/D and M32R/SDI
download to Sparclet18.3.8.3 Sparclet Download
download to VxWorks18.2.1.2 VxWorks Download
DPMI18.1.4 Features for Debugging DJGPP Programs
dump8.15 Copy Between Memory and a File
dump all data collected at tracepoint10.2.2 tdump
dump core from inferior8.16 How to Produce a Core File from Your Program
dump data to a file8.15 Copy Between Memory and a File
dump-functions ()27.4.8 Some Miscellaneous Commands
dump-functions ()27.4.8 Some Miscellaneous Commands
dump-macros ()27.4.8 Some Miscellaneous Commands
dump-macros ()27.4.8 Some Miscellaneous Commands
dump-variables ()27.4.8 Some Miscellaneous Commands
dump-variables ()27.4.8 Some Miscellaneous Commands
dump/restore files8.15 Copy Between Memory and a File
DWARF 2 compilation units cacheC. Maintenance Commands
DWARF-2 CFI and CRIS18.3.12 CRIS
dynamic linking15.1 Commands to Specify Files

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_42.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_42.html new file mode 100644 index 0000000..ab57226 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_42.html @@ -0,0 +1,375 @@ + + + + + +Debugging with GDB: Index: E -- F + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: E -- F

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

E
e (edit)7.3 Editing Source Files
EBCDIC character set8.17 Character Sets
echo20.4 Commands for Controlled Output
edit7.3 Editing Source Files
editing19.2 Command Editing
editing command lines27.2.1 Readline Bare Essentials
editing source files7.3 Editing Source Files
editing-mode27.3.1 Readline Init File Syntax
eight-bit characters in strings8.7 Print Settings
elaboration phase4.2 Starting your Program
else20.3 Command Files
Emacs23. Using GDB under GNU Emacs
emacs-editing-mode (C-e)27.4.8 Some Miscellaneous Commands
emacs-editing-mode (C-e)27.4.8 Some Miscellaneous Commands
empty response, for unsupported packetsD.1 Overview
enable5.1.5 Disabling Breakpoints
enable display8.6 Automatic Display
enable mem8.14 Memory Region Attributes
enable tracepoint10.1.2 Enable and Disable Tracepoints
enable-keypad27.3.1 Readline Init File Syntax
enable/disable a breakpoint5.1.5 Disabling Breakpoints
end (breakpoint commands)5.1.7 Breakpoint Command Lists
end (if/else/while commands)20.3 Command Files
end (user-defined commands)20.1 User-defined Commands
end-kbd-macro (C-x ))27.4.7 Keyboard Macros
end-kbd-macro (C-x ))27.4.7 Keyboard Macros
end-of-history (M-&#62;)27.4.2 Commands For Manipulating The History
end-of-history (M-&#62;)27.4.2 Commands For Manipulating The History
end-of-line (C-e)27.4.1 Commands For Moving
end-of-line (C-e)27.4.1 Commands For Moving
entering numbers19.5 Numbers
environment (of your program)4.4 Your Program's Environment
errno values, in file-i/o protocolErrno Values
error annotation25.4 Errors
error on valid input26.1 Have You Found a Bug?
error-begin annotation25.4 Errors
event debugging info19.8 Optional Messages about Internal Happenings
event designators28.1.1 Event Designators
event handling5.1.3 Setting Catchpoints
examine process image18.1.3 SVR4 Process Information
examining data8. Examining Data
examining memory8.5 Examining Memory
exception handlers5.1.3 Setting Catchpoints
exception handlers, how to list6.4 Information About a Frame
exceptionHandler17.5.2 What You Must Do for the Stub
exchange-point-and-mark (C-x C-x)27.4.8 Some Miscellaneous Commands
exchange-point-and-mark (C-x C-x)27.4.8 Some Miscellaneous Commands
exec-file15.1 Commands to Specify Files
executable file15.1 Commands to Specify Files
executable file target16.2 Commands for Managing Targets
executable file, for remote target17.4 Remote Configuration
execute commands from a file20.3 Command Files
execute remote command, remote requestD.4 General Query Packets
exited annotation25.6 Running the Program
exiting GDB2.2 Quitting GDB
expand macro once9. C Preprocessor Macros
expand-tilde27.3.1 Readline Init File Syntax
expanding preprocessor macros9. C Preprocessor Macros
expression debugging info19.8 Optional Messages about Internal Happenings
expressions8.1 Expressions
expressions in Ada12.4.6 Ada
expressions in C or C++12.4.1 C and C++
expressions in C++12.4.1.3 C++ Expressions
expressions in Modula-212.4.5 Modula-2
extend GDB for remote targets17.1 Connecting to a Remote Target

F
f (frame)6.3 Selecting a Frame
f (SingleKey TUI key)22.3 TUI Single Key Mode
`F' packetD.2 Packets
F reply packetD.10.4 The F Reply Packet
F request packetD.10.3 The F Request Packet
fatal signal26.1 Have You Found a Bug?
fatal signals5.3 Signals
FDL, GNU Free Documentation LicenseH. GNU Free Documentation License
features of the remote protocolD.4 General Query Packets
fg (resume foreground execution)5.2 Continuing and Stepping
file15.1 Commands to Specify Files
file transfer17.2 Sending files to a remote system
file transfer, remote protocolD.7 Host I/O Packets
file-i/o examplesD.10.10 File-I/O Examples
file-i/o overviewD.10.1 File-I/O Overview
File-I/O remote protocol extensionD.10 File-I/O Remote Protocol Extension
file-i/o reply packetD.10.4 The F Reply Packet
file-i/o request packetD.10.3 The F Request Packet
find downloadable SREC files (M32R)18.3.2 Renesas M32R/D and M32R/SDI
find trace snapshot10.2.1 tfind n
finish5.2 Continuing and Stepping
flinching19.7 Optional Warnings and Messages
float promotion19.6 Configuring the Current ABI
floating point8.11 Floating Point Hardware
floating point registers8.10 Registers
floating point, MIPS remote18.3.4 MIPS Embedded
flush_i_cache17.5.2 What You Must Do for the Stub
flushregsC. Maintenance Commands
focus22.4 TUI-specific Commands
focus of debugging4.9 Debugging Programs with Multiple Threads
foo15.3 Errors Reading Symbol Files
fork fork-id4.10 Debugging Programs with Multiple Processes
fork, debugging programs which call4.10 Debugging Programs with Multiple Processes
format options8.7 Print Settings
formatted output8.4 Output Formats
FortranSummary of GDB
Fortran Defaults12.4.3.2 Fortran Defaults
Fortran operators and expressions12.4.3.1 Fortran Operators and Expressions
Fortran-specific support in GDB12.4.3 Fortran
forward-backward-delete-char ()27.4.3 Commands For Changing Text
forward-backward-delete-char ()27.4.3 Commands For Changing Text
forward-char (C-f)27.4.1 Commands For Moving
forward-char (C-f)27.4.1 Commands For Moving
forward-search7.4 Searching Source Files
forward-search-history (C-s)27.4.2 Commands For Manipulating The History
forward-search-history (C-s)27.4.2 Commands For Manipulating The History
forward-word (M-f)27.4.1 Commands For Moving
forward-word (M-f)27.4.1 Commands For Moving
FR-V shared-library debugging19.8 Optional Messages about Internal Happenings
frame debugging info19.8 Optional Messages about Internal Happenings
frame number6.1 Stack Frames
frame pointer6.1 Stack Frames
frame pointer register8.10 Registers
frame, command6.1 Stack Frames
frame, definition6.1 Stack Frames
frame, selecting6.3 Selecting a Frame
frameless execution6.1 Stack Frames
frames-invalid annotation25.5 Invalidation Notices
free memory information (MS-DOS)18.1.4 Features for Debugging DJGPP Programs
fstat, file-i/o system callstat/fstat
Fujitsu17.5 Implementing a Remote Stub
full symbol tables, listing GDB's internal13. Examining the Symbol Table
function call arguments, optimized out6.2 Backtraces
function entry/exit, wrong values of variables8.2 Program Variables
functions without line info, and stepping5.2 Continuing and Stepping

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_43.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_43.html new file mode 100644 index 0000000..6f6b455 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_43.html @@ -0,0 +1,441 @@ + + + + + +Debugging with GDB: Index: G -- I + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: G -- I

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

G
`g' packetD.2 Packets
`G' packetD.2 Packets
g++, GNU C++ compiler12.4.1 C and C++
garbled pointers18.1.4 Features for Debugging DJGPP Programs
GCC and C++12.4.1.3 C++ Expressions
gcore8.16 How to Produce a Core File from Your Program
GDB bugs, reporting26.2 How to Report Bugs
GDB reference cardA. Formatting Documentation
GDB startup2.1.3 What GDB Does During Startup
GDB version number3.3 Getting Help
`gdb.ini'2.1.3 What GDB Does During Startup
GDB/MI development24.3 GDB/MI Development and Front Ends
GDB/MI, breakpoint commands24.7 GDB/MI Breakpoint Commands
GDB/MI, compatibility with CLI24.2 GDB/MI Compatibility with CLI
GDB/MI, data manipulation24.13 GDB/MI Data Manipulation
GDB/MI, input syntax24.1.1 GDB/MI Input Syntax
GDB/MI, its purposeFunction and Purpose
GDB/MI, out-of-band records24.4.3 GDB/MI Out-of-band Records
GDB/MI, output syntax24.1.2 GDB/MI Output Syntax
GDB/MI, result records24.4.1 GDB/MI Result Records
GDB/MI, simple examples24.5 Simple Examples of GDB/MI Interaction
GDB/MI, stream records24.4.2 GDB/MI Stream Records
gdbarch debugging info19.8 Optional Messages about Internal Happenings
GDBHISTFILE, environment variable19.3 Command History
gdbserver17.3 Using the gdbserver Program
gdbserver, multiple processes17.3.1.2 Multi-Process Mode for gdbserver
GDT18.1.4 Features for Debugging DJGPP Programs
generate-core-file8.16 How to Produce a Core File from Your Program
get thread-local storage address, remote requestD.4 General Query Packets
getDebugChar17.5.2 What You Must Do for the Stub
gettimeofday, file-i/o system callgettimeofday
global debugging information directory15.2 Debugging Information in Separate Files
GNU C++12.4.1 C and C++
GNU Emacs23. Using GDB under GNU Emacs
GNU Hurd debugging18.1.6 Commands Specific to GNU Hurd Systems
GNU/Linux LWP debug messages19.8 Optional Messages about Internal Happenings
gnu_debuglink_crc3215.2 Debugging Information in Separate Files

H
h (help)3.3 Getting Help
`H' packetD.2 Packets
handle5.3 Signals
handle_exception17.5.1 What the Stub Can Do for You
handling signals5.3 Signals
hardware breakpoints5.1.1 Setting Breakpoints
hardware watchpoints5.1.2 Setting Watchpoints
hash mark while downloading16.2 Commands for Managing Targets
hbreak5.1.1 Setting Breakpoints
help3.3 Getting Help
help target16.2 Commands for Managing Targets
help user-defined20.1 User-defined Commands
heuristic-fence-post (Alpha, MIPS)18.4.4 MIPS
history events28.1.1 Event Designators
history expansion28.1 History Expansion
history expansion, turn on/off19.3 Command History
history file19.3 Command History
history number8.8 Value History
history of values printed by GDB8.8 Value History
history size19.3 Command History
history substitution19.3 Command History
history-preserve-point27.3.1 Readline Init File Syntax
history-search-backward ()27.4.2 Commands For Manipulating The History
history-search-backward ()27.4.2 Commands For Manipulating The History
history-search-forward ()27.4.2 Commands For Manipulating The History
history-search-forward ()27.4.2 Commands For Manipulating The History
HISTSIZE, environment variable19.3 Command History
hook20.2 User-defined Command Hooks
hookpost20.2 User-defined Command Hooks
hooks, for commands20.2 User-defined Command Hooks
hooks, post-command20.2 User-defined Command Hooks
hooks, pre-command20.2 User-defined Command Hooks
horizontal-scroll-mode27.3.1 Readline Init File Syntax
host character set8.17 Character Sets
Host I/O, remote protocolD.7 Host I/O Packets
how many arguments (user-defined commands)20.1 User-defined Commands
HPPA support18.4.5 HPPA
htrace18.3.5 OpenRISC 1000
hwatch18.3.5 OpenRISC 1000

I
i (info)3.3 Getting Help
`I' packetD.2 Packets
`i' packetD.2 Packets
i/o4.6 Your Program's Input and Output
I/O registers (Atmel AVR)18.3.11 Atmel AVR
i38617.5 Implementing a Remote Stub
`i386-stub.c'17.5 Implementing a Remote Stub
IBM1047 character set8.17 Character Sets
IDT18.1.4 Features for Debugging DJGPP Programs
if20.3 Command Files
ignore5.1.6 Break Conditions
ignore count (of breakpoint)5.1.6 Break Conditions
INCLUDE_RDB18.2.1 Using GDB with VxWorks
incomplete type13. Examining the Symbol Table
indentation in structure display8.7 Print Settings
inferior debugging info19.8 Optional Messages about Internal Happenings
inferior functions, calling14.5 Calling Program Functions
inferior tty4.6 Your Program's Input and Output
infinite recursion in user-defined commands20.1 User-defined Commands
info3.3 Getting Help
info address13. Examining the Symbol Table
info all-registers8.10 Registers
info args6.4 Information About a Frame
info auxv8.13 Operating System Auxiliary Information
info breakpoints5.1.1 Setting Breakpoints
info catch6.4 Information About a Frame
info checkpoints4.11 Setting a Bookmark to Return to Later
info classes13. Examining the Symbol Table
info common12.4.3.3 Special Fortran Commands
info copying3.3 Getting Help
info dcache8.18 Caching Data of Remote Targets
info display8.6 Automatic Display
info dll18.1.5 Features for Debugging MS Windows PE Executables
info dos18.1.4 Features for Debugging DJGPP Programs
info extensions12.2 Displaying the Language
info f (info frame)6.4 Information About a Frame
info files15.1 Commands to Specify Files
info float8.11 Floating Point Hardware
info for known object filesC. Maintenance Commands
info forks4.10 Debugging Programs with Multiple Processes
info frame6.4 Information About a Frame
info frame, show the source language12.2 Displaying the Language
info functions13. Examining the Symbol Table
info handle5.3 Signals
info io_registers, AVR18.3.11 Atmel AVR
info line7.6 Source and Machine Code
info line, and Objective-C12.4.2.1 Method Names in Commands
info locals6.4 Information About a Frame
info macro9. C Preprocessor Macros
info mem8.14 Memory Region Attributes
info meminfo18.1.3 SVR4 Process Information
info or1k spr18.3.5 OpenRISC 1000
info pidlist18.1.3 SVR4 Process Information
info proc18.1.3 SVR4 Process Information
info program5. Stopping and Continuing
info registers8.10 Registers
info scope13. Examining the Symbol Table
info selectors13. Examining the Symbol Table
info serial18.1.4 Features for Debugging DJGPP Programs
info set3.3 Getting Help
info share15.1 Commands to Specify Files
info sharedlibrary15.1 Commands to Specify Files
info signals5.3 Signals
info source13. Examining the Symbol Table
info source, show the source language12.2 Displaying the Language
info sources13. Examining the Symbol Table
info spu18.4.6 Cell Broadband Engine SPU architecture
info stack6.2 Backtraces
info symbol13. Examining the Symbol Table
info target15.1 Commands to Specify Files
info terminal4.6 Your Program's Input and Output
info threads4.9 Debugging Programs with Multiple Threads
info threads (HP-UX)4.9 Debugging Programs with Multiple Threads
info tp10.1.5 Listing Tracepoints
info tracepoints10.1.5 Listing Tracepoints
info types13. Examining the Symbol Table
info udot8.13 Operating System Auxiliary Information
info variables13. Examining the Symbol Table
info vector8.12 Vector Unit
info w3218.1.5 Features for Debugging MS Windows PE Executables
info warranty3.3 Getting Help
info watchpoints [n]5.1.2 Setting Watchpoints
info win22.4 TUI-specific Commands
information about tracepoints10.1.5 Listing Tracepoints
inheritance12.4.1.7 GDB Features for C++
init file2.1.3 What GDB Does During Startup
init file name2.1.3 What GDB Does During Startup
init-if-undefined8.9 Convenience Variables
initial frame6.1 Stack Frames
initialization file, readline27.3 Readline Init File
innermost frame6.1 Stack Frames
input syntax for GDB/MI24.1.1 GDB/MI Input Syntax
input-meta27.3.1 Readline Init File Syntax
insert-comment (M-#)27.4.8 Some Miscellaneous Commands
insert-comment (M-#)27.4.8 Some Miscellaneous Commands
insert-completions (M-*)27.4.6 Letting Readline Type For You
insert-completions (M-*)27.4.6 Letting Readline Type For You
inspect8. Examining Data
installationB. Installing GDB
instructions, assembly7.6 Source and Machine Code
integral datatypes, in file-i/o protocolIntegral Datatypes
Intel17.5 Implementing a Remote Stub
Intel disassembly flavor7.6 Source and Machine Code
interaction, readline27.2 Readline Interaction
internal commandsC. Maintenance Commands
internal GDB breakpoints5.1.1 Setting Breakpoints
interpreter-exec21. Command Interpreters
interrupt2.2 Quitting GDB
interrupt remote programs17.4 Remote Configuration
interrupting remote programs17.1 Connecting to a Remote Target
interrupting remote targets17.5.2 What You Must Do for the Stub
interrupts (remote protocol)D.8 Interrupts
invalid input26.1 Have You Found a Bug?
invoke another interpreter21. Command Interpreters
isatty, file-i/o system callisatty
isearch-terminators27.3.1 Readline Init File Syntax
ISO 8859-1 character set8.17 Character Sets
ISO Latin 1 character set8.17 Character Sets

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_44.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_44.html new file mode 100644 index 0000000..59d522d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_44.html @@ -0,0 +1,418 @@ + + + + + +Debugging with GDB: Index: J -- M + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: J -- M

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

J
jump14.2 Continuing at a Different Address
jump, and Objective-C12.4.2.1 Method Names in Commands

K
`k' packetD.2 Packets
kernel crash dump18.1.2 BSD libkvm Interface
kernel memory image18.1.2 BSD libkvm Interface
keymap27.3.1 Readline Init File Syntax
kill4.8 Killing the Child Process
kill ring27.2.3 Readline Killing Commands
kill-line (C-k)27.4.4 Killing And Yanking
kill-line (C-k)27.4.4 Killing And Yanking
kill-region ()27.4.4 Killing And Yanking
kill-region ()27.4.4 Killing And Yanking
kill-whole-line ()27.4.4 Killing And Yanking
kill-whole-line ()27.4.4 Killing And Yanking
kill-word (M-d)27.4.4 Killing And Yanking
kill-word (M-d)27.4.4 Killing And Yanking
killing text27.2.3 Readline Killing Commands
kvm18.1.2 BSD libkvm Interface

L
l (list)7.1 Printing Source Lines
languages12. Using GDB with Different Languages
last tracepoint number10.1.1 Create and Delete Tracepoints
latest breakpoint5.1.1 Setting Breakpoints
layout22.4 TUI-specific Commands
LDT18.1.4 Features for Debugging DJGPP Programs
leaving GDB2.2 Quitting GDB
Left22.2 TUI Key Bindings
libkvm18.1.2 BSD libkvm Interface
library list format, remote protocolD.11 Library List Format
limit hardware breakpoints and watchpoints17.4 Remote Configuration
limit on number of printed array elements8.7 Print Settings
limits, in file-i/o protocolLimits
linespec7.2 Specifying a Location
Linux lightweight processes19.8 Optional Messages about Internal Happenings
list7.1 Printing Source Lines
list active threads, remote requestD.4 General Query Packets
list of supported file-i/o callsD.10.7 List of Supported Calls
list output in GDB/MI24.1.2 GDB/MI Output Syntax
list, and Objective-C12.4.2.1 Method Names in Commands
list, how many lines to display7.1 Printing Source Lines
listing GDB's internal symbol tables13. Examining the Symbol Table
listing machine instructions7.6 Source and Machine Code
listing mapped overlays11.2 Overlay Commands
load address, overlay's11.1 How Overlays Work
load filename16.2 Commands for Managing Targets
load shared library15.1 Commands to Specify Files
load symbols from memory15.1 Commands to Specify Files
local variables13. Examining the Symbol Table
locate address8.4 Output Formats
lock scheduler5.4 Stopping and Starting Multi-thread Programs
log output in GDB/MI24.1.2 GDB/MI Output Syntax
logging file name2.4 Logging Output
logging GDB output2.4 Logging Output
loop_break20.3 Command Files
loop_continue20.3 Command Files
lseek flags, in file-i/o protocolLseek Flags
lseek, file-i/o system calllseek

M
`M' packetD.2 Packets
`m' packetD.2 Packets
M32-EVA target board address18.3.2 Renesas M32R/D and M32R/SDI
M32R/Chaos debugging18.3.2 Renesas M32R/D and M32R/SDI
m680x017.5 Implementing a Remote Stub
`m68k-stub.c'17.5 Implementing a Remote Stub
machine instructions7.6 Source and Machine Code
macro define9. C Preprocessor Macros
macro definition, showing9. C Preprocessor Macros
macro exp19. C Preprocessor Macros
macro expand9. C Preprocessor Macros
macro expansion, showing the results of preprocessor9. C Preprocessor Macros
macro list9. C Preprocessor Macros
macro undef9. C Preprocessor Macros
macros, example of debugging with9. C Preprocessor Macros
macros, user-defined9. C Preprocessor Macros
mailing lists24.3 GDB/MI Development and Front Ends
maint agentC. Maintenance Commands
maint check-symtabsC. Maintenance Commands
maint cplus first_componentC. Maintenance Commands
maint cplus namespaceC. Maintenance Commands
maint demangleC. Maintenance Commands
maint deprecateC. Maintenance Commands
maint dump-meC. Maintenance Commands
maint info breakpointsC. Maintenance Commands
maint info psymtabs13. Examining the Symbol Table
maint info sections15.1 Commands to Specify Files
maint info sol-threads4.9 Debugging Programs with Multiple Threads
maint info symtabs13. Examining the Symbol Table
maint internal-errorC. Maintenance Commands
maint internal-warningC. Maintenance Commands
maint packetC. Maintenance Commands
maint print architectureC. Maintenance Commands
maint print c-tdescC. Maintenance Commands
maint print cooked-registersC. Maintenance Commands
maint print dummy-framesC. Maintenance Commands
maint print objfilesC. Maintenance Commands
maint print psymbols13. Examining the Symbol Table
maint print raw-registersC. Maintenance Commands
maint print reggroupsC. Maintenance Commands
maint print register-groupsC. Maintenance Commands
maint print registersC. Maintenance Commands
maint print statisticsC. Maintenance Commands
maint print symbols13. Examining the Symbol Table
maint print target-stackC. Maintenance Commands
maint print typeC. Maintenance Commands
maint print unwind, HPPA18.4.5 HPPA
maint set dwarf2 max-cache-ageC. Maintenance Commands
maint set profileC. Maintenance Commands
maint show dwarf2 max-cache-ageC. Maintenance Commands
maint show profileC. Maintenance Commands
maint show-debug-regsC. Maintenance Commands
maint spaceC. Maintenance Commands
maint timeC. Maintenance Commands
maint translate-addressC. Maintenance Commands
maint undeprecateC. Maintenance Commands
maintenance commandsC. Maintenance Commands
make2.3 Shell Commands
manual overlay debugging11.2 Overlay Commands
map an overlay11.2 Overlay Commands
mapinfo list, QNX Neutrino18.1.3 SVR4 Process Information
mapped address11.1 How Overlays Work
mapped overlays11.1 How Overlays Work
mark-modified-lines27.3.1 Readline Init File Syntax
mark-symlinked-directories27.3.1 Readline Init File Syntax
match-hidden-files27.3.1 Readline Init File Syntax
maximum value for offset of closest symbol8.7 Print Settings
mem8.14 Memory Region Attributes
member functions12.4.1.3 C++ Expressions
memory address space mappings18.1.3 SVR4 Process Information
memory map formatD.12 Memory Map Format
memory region attributes8.14 Memory Region Attributes
memory tracing5.1 Breakpoints, Watchpoints, and Catchpoints
memory transfer, in file-i/o protocolMemory Transfer
memory used by commandsC. Maintenance Commands
memory used for symbol tables15.1 Commands to Specify Files
memory, alignment and size of remote accessesD.2 Packets
memory, viewing as typed object8.1 Expressions
memset17.5.2 What You Must Do for the Stub
menu-complete ()27.4.6 Letting Readline Type For You
menu-complete ()27.4.6 Letting Readline Type For You
meta-flag27.3.1 Readline Init File Syntax
mi interpreter21. Command Interpreters
mi1 interpreter21. Command Interpreters
mi2 interpreter21. Command Interpreters
minimal language12.5 Unsupported Languages
Minimal symbols and DLLs18.1.5.1 Support for DLLs without Debugging Symbols
MIPS addresses, masking18.4.4 MIPS
MIPS boards18.3.4 MIPS Embedded
MIPS remote floating point18.3.4 MIPS Embedded
MIPS stack18.4.4 MIPS
MMX registers (x86)8.10 Registers
mode_t values, in file-i/o protocolmode_t Values
Modula-2Summary of GDB
Modula-2 built-ins12.4.5.2 Built-in Functions and Procedures
Modula-2 checks12.4.5.7 Modula-2 Type and Range Checks
Modula-2 constants12.4.5.2 Built-in Functions and Procedures
Modula-2 defaults12.4.5.5 Modula-2 Defaults
Modula-2 operators12.4.5.1 Operators
Modula-2 types12.4.5.4 Modula-2 Types
Modula-2, deviations from12.4.5.6 Deviations from Standard Modula-2
Modula-2, GDB support12.4.5 Modula-2
monitor17.1 Connecting to a Remote Target
monitor commands, for gdbserver17.3.3 Monitor Commands for gdbserver
Motorola 680x017.5 Implementing a Remote Stub
MS Windows debugging18.1.5 Features for Debugging MS Windows PE Executables
MS-DOS system info18.1.4 Features for Debugging DJGPP Programs
MS-DOS-specific commands18.1.4 Features for Debugging DJGPP Programs
multiple processes4.10 Debugging Programs with Multiple Processes
multiple processes with gdbserver17.3.1.2 Multi-Process Mode for gdbserver
multiple targets16.1 Active Targets
multiple threads4.9 Debugging Programs with Multiple Threads
multiple threads, backtrace6.2 Backtraces

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_45.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_45.html new file mode 100644 index 0000000..4cce3d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_45.html @@ -0,0 +1,408 @@ + + + + + +Debugging with GDB: Index: N -- P + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: N -- P

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

N
n (next)5.2 Continuing and Stepping
n (SingleKey TUI key)22.3 TUI Single Key Mode
names of symbols13. Examining the Symbol Table
namespace in C++12.4.1.3 C++ Expressions
native Cygwin debugging18.1.5 Features for Debugging MS Windows PE Executables
native DJGPP debugging18.1.4 Features for Debugging DJGPP Programs
negative breakpoint numbers5.1.1 Setting Breakpoints
NetROM ROM emulator target16.2 Commands for Managing Targets
New systag message4.9 Debugging Programs with Multiple Threads
New systag message, on HP-UX4.9 Debugging Programs with Multiple Threads
next5.2 Continuing and Stepping
next-history (C-n)27.4.2 Commands For Manipulating The History
next-history (C-n)27.4.2 Commands For Manipulating The History
nexti5.2 Continuing and Stepping
ni (nexti)5.2 Continuing and Stepping
non-incremental-forward-search-history (M-n)27.4.2 Commands For Manipulating The History
non-incremental-forward-search-history (M-n)27.4.2 Commands For Manipulating The History
non-incremental-reverse-search-history (M-p)27.4.2 Commands For Manipulating The History
non-incremental-reverse-search-history (M-p)27.4.2 Commands For Manipulating The History
non-member C++ functions, set breakpoint in5.1.1 Setting Breakpoints
noninvasive task options18.1.6 Commands Specific to GNU Hurd Systems
nosharedlibrary15.1 Commands to Specify Files
notation, readline27.2.1 Readline Bare Essentials
notational conventions, for GDB/MINotation and Terminology
notify output in GDB/MI24.1.2 GDB/MI Output Syntax
NULL elements in arrays8.7 Print Settings
number of array elements to print8.7 Print Settings
number representation19.5 Numbers
numbers for breakpoints5.1 Breakpoints, Watchpoints, and Catchpoints

O
object files, relocatable, reading symbols from15.1 Commands to Specify Files
Objective-C12.4.2 Objective-C
Objective-C, classes and selectors13. Examining the Symbol Table
Objective-C, print objects12.4.2.2 The Print Command With Objective-C
observer debugging info19.8 Optional Messages about Internal Happenings
octal escapes in strings8.7 Print Settings
online documentation3.3 Getting Help
opaque data types13. Examining the Symbol Table
open flags, in file-i/o protocolOpen Flags
open, file-i/o system callopen
OpenRISC 100018.3.5 OpenRISC 1000
OpenRISC 1000 htrace18.3.5 OpenRISC 1000
optimized code, debugging4.1 Compiling for Debugging
optimized code, wrong values of variables8.2 Program Variables
optional debugging messages19.8 Optional Messages about Internal Happenings
optional warnings19.7 Optional Warnings and Messages
or1k boards18.3.5 OpenRISC 1000
or1ksim18.3.5 OpenRISC 1000
OS ABI19.6 Configuring the Current ABI
OS information8.13 Operating System Auxiliary Information
out-of-band records in GDB/MI24.4.3 GDB/MI Out-of-band Records
outermost frame6.1 Stack Frames
output20.4 Commands for Controlled Output
output formats8.4 Output Formats
output syntax of GDB/MI24.1.2 GDB/MI Output Syntax
output-meta27.3.1 Readline Init File Syntax
overlay11.2 Overlay Commands
overlay area11.1 How Overlays Work
overlay example program11.4 Overlay Sample Program
overlays11. Debugging Programs That Use Overlays
overlays, setting breakpoints in11.2 Overlay Commands
overload-choice annotation25.3 Annotation for GDB Input
overloaded functions, calling12.4.1.3 C++ Expressions
overloaded functions, overload resolution12.4.1.7 GDB Features for C++
overloading5.1.8 Breakpoint Menus
overloading in C++12.4.1.7 GDB Features for C++
overwrite-mode ()27.4.3 Commands For Changing Text
overwrite-mode ()27.4.3 Commands For Changing Text

P
`p' packetD.2 Packets
`P' packetD.2 Packets
packet size, remote protocolD.4 General Query Packets
packets, reporting on stdout19.8 Optional Messages about Internal Happenings
packets, tracepointD.6 Tracepoint Packets
page tables display (MS-DOS)18.1.4 Features for Debugging DJGPP Programs
page-completions27.3.1 Readline Init File Syntax
partial symbol dump13. Examining the Symbol Table
partial symbol tables, listing GDB's internal13. Examining the Symbol Table
PascalSummary of GDB
Pascal objects, static members display8.7 Print Settings
Pascal support in GDB, limitations12.4.4 Pascal
pass signals to inferior, remote requestD.4 General Query Packets
passcount10.1.3 Tracepoint Passcounts
patching binaries14.6 Patching Programs
patching object files15.1 Commands to Specify Files
path4.4 Your Program's Environment
pause current task (GNU Hurd)18.1.6 Commands Specific to GNU Hurd Systems
pause current thread (GNU Hurd)18.1.6 Commands Specific to GNU Hurd Systems
pauses in output19.4 Screen Size
pending breakpoints5.1.1 Setting Breakpoints
PgDn22.2 TUI Key Bindings
PgUp22.2 TUI Key Bindings
physical address from linear address18.1.4 Features for Debugging DJGPP Programs
pipe, target remote to17.1 Connecting to a Remote Target
pipes4.2 Starting your Program
pmon, MIPS remote18.3.4 MIPS Embedded
po (print-object)12.4.2.2 The Print Command With Objective-C
pointer values, in file-i/o protocolPointer Values
pointer, finding referent8.7 Print Settings
port rights, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
port sets, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
possible-completions (M-?)27.4.6 Letting Readline Type For You
possible-completions (M-?)27.4.6 Letting Readline Type For You
post-commands annotation25.3 Annotation for GDB Input
post-overload-choice annotation25.3 Annotation for GDB Input
post-prompt annotation25.3 Annotation for GDB Input
post-prompt-for-continue annotation25.3 Annotation for GDB Input
post-query annotation25.3 Annotation for GDB Input
PowerPC architecture18.4.7 PowerPC
pre-commands annotation25.3 Annotation for GDB Input
pre-overload-choice annotation25.3 Annotation for GDB Input
pre-prompt annotation25.3 Annotation for GDB Input
pre-prompt-for-continue annotation25.3 Annotation for GDB Input
pre-query annotation25.3 Annotation for GDB Input
prefix for shared library file names15.1 Commands to Specify Files
prefix-meta (ESC)27.4.8 Some Miscellaneous Commands
prefix-meta (ESC)27.4.8 Some Miscellaneous Commands
premature return from system calls5.4 Stopping and Starting Multi-thread Programs
preprocessor macro expansion, showing the results of9. C Preprocessor Macros
pretty print arrays8.7 Print Settings
pretty print C++ virtual function tables8.7 Print Settings
previous-history (C-p)27.4.2 Commands For Manipulating The History
previous-history (C-p)27.4.2 Commands For Manipulating The History
print8. Examining Data
print all frame argument values8.7 Print Settings
print an Objective-C object description12.4.2.2 The Print Command With Objective-C
print array indexes8.7 Print Settings
print frame argument values for scalars only8.7 Print Settings
print messages on thread start and exit4.9 Debugging Programs with Multiple Threads
print settings8.7 Print Settings
print structures in indented form8.7 Print Settings
print-object12.4.2.2 The Print Command With Objective-C
print/don't print memory addresses8.7 Print Settings
printf20.4 Commands for Controlled Output
printing byte arrays8.4 Output Formats
printing data8. Examining Data
printing frame argument values8.7 Print Settings
printing strings8.4 Output Formats
proc-trace-entry18.1.3 SVR4 Process Information
proc-trace-exit18.1.3 SVR4 Process Information
proc-untrace-entry18.1.3 SVR4 Process Information
proc-untrace-exit18.1.3 SVR4 Process Information
process detailed status information18.1.3 SVR4 Process Information
process ID18.1.3 SVR4 Process Information
process info via `/proc'18.1.3 SVR4 Process Information
process list, QNX Neutrino18.1.3 SVR4 Process Information
process process-id4.10 Debugging Programs with Multiple Processes
process status register8.10 Registers
processes, multiple4.10 Debugging Programs with Multiple Processes
procfs API calls18.1.3 SVR4 Process Information
profiling GDBC. Maintenance Commands
program counter register8.10 Registers
program entry point6.2 Backtraces
prompt19.1 Prompt
prompt annotation25.3 Annotation for GDB Input
prompt-for-continue annotation25.3 Annotation for GDB Input
protocol basics, file-i/oD.10.2 Protocol Basics
protocol, GDB remote serialD.1 Overview
protocol-specific representation of datatypes, in file-i/o protocolD.10.8 Protocol-specific Representation of Datatypes
ptrace system call8.13 Operating System Auxiliary Information
ptype13. Examining the Symbol Table
putDebugChar17.5.2 What You Must Do for the Stub
pwd4.5 Your Program's Working Directory

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_46.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_46.html new file mode 100644 index 0000000..005b2e1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_46.html @@ -0,0 +1,372 @@ + + + + + +Debugging with GDB: Index: Q -- R + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: Q -- R

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

Q
q (quit)2.2 Quitting GDB
q (SingleKey TUI key)22.3 TUI Single Key Mode
`Q' packetD.2 Packets
`q' packetD.2 Packets
`qC' packetD.4 General Query Packets
`qCRC' packetD.4 General Query Packets
`qfThreadInfo' packetD.4 General Query Packets
`qGetTLSAddr' packetD.4 General Query Packets
QNX Neutrino18.1.7 QNX Neutrino
`qOffsets' packetD.4 General Query Packets
`qP' packetD.4 General Query Packets
`QPassSignals' packetD.4 General Query Packets
`qRcmd' packetD.4 General Query Packets
`qsThreadInfo' packetD.4 General Query Packets
`qSupported' packetD.4 General Query Packets
`qSymbol' packetD.4 General Query Packets
`qThreadExtraInfo' packetD.4 General Query Packets
query annotation25.3 Annotation for GDB Input
quit [expression]2.2 Quitting GDB
quit annotation25.4 Errors
quoted-insert (C-q or C-v)27.4.3 Commands For Changing Text
quoted-insert (C-q or C-v)27.4.3 Commands For Changing Text
quotes in commands3.2 Command Completion
quoting Ada internal identifiers12.4.6.3 Additions to Ada
quoting names13. Examining the Symbol Table
`qXfer' packetD.4 General Query Packets

R
r (run)4.2 Starting your Program
r (SingleKey TUI key)22.3 TUI Single Key Mode
`r' packetD.2 Packets
`R' packetD.2 Packets
raise exceptions5.1.3 Setting Catchpoints
range checking12.3.1 An Overview of Type Checking
ranges of breakpoints5.1 Breakpoints, Watchpoints, and Catchpoints
rbreak5.1.1 Setting Breakpoints
RDI heartbeat18.3.1 ARM
rdilogenable18.3.1 ARM
rdilogfile18.3.1 ARM
re-read-init-file (C-x C-r)27.4.8 Some Miscellaneous Commands
re-read-init-file (C-x C-r)27.4.8 Some Miscellaneous Commands
read special object, remote requestD.4 General Query Packets
read, file-i/o system callread
read-only sections15.1 Commands to Specify Files
reading symbols from relocatable object files15.1 Commands to Specify Files
reading symbols immediately15.1 Commands to Specify Files
readline19.2 Command Editing
readnow15.1 Commands to Specify Files
receive rights, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
recent tracepoint number10.1.1 Create and Delete Tracepoints
record aggregates (Ada)12.4.6.2 Omissions from Ada
record serial communications on file17.4 Remote Configuration
recording a session script26.2 How to Report Bugs
redirection4.6 Your Program's Input and Output
redraw-current-line ()27.4.1 Commands For Moving
redraw-current-line ()27.4.1 Commands For Moving
reference cardA. Formatting Documentation
reference declarations12.4.1.3 C++ Expressions
refresh22.4 TUI-specific Commands
register stack, AMD29K18.4.2 A29K
registers8.10 Registers
regs, Super-H18.3.13 Renesas Super-H
regular expression5.1.1 Setting Breakpoints
reloading symbols13. Examining the Symbol Table
reloading the overlay table11.2 Overlay Commands
relocatable object files, reading symbols from15.1 Commands to Specify Files
remote connection without stubs17.3 Using the gdbserver Program
remote debugging17. Debugging Remote Programs
remote delete17.2 Sending files to a remote system
remote get17.2 Sending files to a remote system
remote memory comparison8.5 Examining Memory
remote monitor prompt18.3.4 MIPS Embedded
remote packets, enabling and disabling17.4 Remote Configuration
remote programs, interrupting17.1 Connecting to a Remote Target
remote protocol debugging19.8 Optional Messages about Internal Happenings
remote protocol, binary dataD.1 Overview
remote protocol, field separatorD.1 Overview
remote put17.2 Sending files to a remote system
remote query requestsD.4 General Query Packets
remote serial debugging summary17.5.3 Putting it All Together
remote serial debugging, overview17.5 Implementing a Remote Stub
remote serial protocolD.1 Overview
remote serial stub17.5.1 What the Stub Can Do for You
remote serial stub list17.5 Implementing a Remote Stub
remote serial stub, initialization17.5.1 What the Stub Can Do for You
remote serial stub, main routine17.5.1 What the Stub Can Do for You
remote stub, example17.5 Implementing a Remote Stub
remote stub, support routines17.5.2 What You Must Do for the Stub
remote target16.2 Commands for Managing Targets
remote target, file transfer17.2 Sending files to a remote system
remote target, limit break- and watchpoints17.4 Remote Configuration
remote timeout17.4 Remote Configuration
remotetimeout18.3.8 Tsqware Sparclet
remove actions from a tracepoint10.1.4 Tracepoint Action Lists
rename, file-i/o system callrename
Renesas17.5 Implementing a Remote Stub
repeated array elements8.7 Print Settings
repeating command sequences3.1 Command Syntax
repeating commands3.1 Command Syntax
reporting bugs in GDB26. Reporting Bugs in GDB
reprint the last value8. Examining Data
reset SDI connection, M32R18.3.2 Renesas M32R/D and M32R/SDI
response time, MIPS debugging18.4.4 MIPS
restart4.11 Setting a Bookmark to Return to Later
restart checkpoint-id4.11 Setting a Bookmark to Return to Later
restore8.15 Copy Between Memory and a File
restore data from a file8.15 Copy Between Memory and a File
result records in GDB/MI24.4.1 GDB/MI Result Records
resuming execution5.2 Continuing and Stepping
RET (repeat last command)3.1 Command Syntax
retransmit-timeout, MIPS protocol18.3.4 MIPS Embedded
return14.4 Returning from a Function
returning from a function14.4 Returning from a Function
reverse-search7.4 Searching Source Files
reverse-search-history (C-r)27.4.2 Commands For Manipulating The History
reverse-search-history (C-r)27.4.2 Commands For Manipulating The History
revert-line (M-r)27.4.8 Some Miscellaneous Commands
revert-line (M-r)27.4.8 Some Miscellaneous Commands
rewind program state4.11 Setting a Bookmark to Return to Later
Right22.2 TUI Key Bindings
ROM at zero address, RDI18.3.1 ARM
run4.2 Starting your Program
run to main procedure4.2 Starting your Program
run until specified location5.2 Continuing and Stepping
running4.2 Starting your Program
running and debugging Sparclet programs18.3.8.4 Running and Debugging
running VxWorks tasks18.2.1.3 Running Tasks
running, on Sparclet18.3.8 Tsqware Sparclet
rwatch5.1.2 Setting Watchpoints

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_47.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_47.html new file mode 100644 index 0000000..2845d56 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_47.html @@ -0,0 +1,634 @@ + + + + + +Debugging with GDB: Index: S + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: S

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

S
s (SingleKey TUI key)22.3 TUI Single Key Mode
s (step)5.2 Continuing and Stepping
`S' packetD.2 Packets
`s' packetD.2 Packets
save command history19.3 Command History
save GDB output to a file2.4 Logging Output
save tracepoints for future sessions10.2.3 save-tracepoints filename
save-tracepoints10.2.3 save-tracepoints filename
scheduler locking mode5.4 Stopping and Starting Multi-thread Programs
scope12.4.5.8 The Scope Operators :: and .
scripting commands20.3 Command Files
sdireset18.3.2 Renesas M32R/D and M32R/SDI
sdistatus18.3.2 Renesas M32R/D and M32R/SDI
SDS protocol18.3.6 PowerPC Embedded
sds, a command18.3.6 PowerPC Embedded
search7.4 Searching Source Files
searching source files7.4 Searching Source Files
section15.1 Commands to Specify Files
section offsets, remote requestD.4 General Query Packets
segment descriptor tables18.1.4 Features for Debugging DJGPP Programs
select trace snapshot10.2.1 tfind n
select-frame6.1 Stack Frames
selected frame6. Examining the Stack
selecting frame silently6.1 Stack Frames
self-insert (a, b, A, 1, !, <small>...</small>)27.4.3 Commands For Changing Text
self-insert (a, b, A, 1, !, <small>...</small>)27.4.3 Commands For Changing Text
send command to remote monitor17.1 Connecting to a Remote Target
send command to simulator18.3 Embedded Processors
send PMON command18.3.4 MIPS Embedded
send rights, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
sending files to remote systems17.2 Sending files to a remote system
separate debugging information files15.2 Debugging Information in Separate Files
sequence-id, for GDB remoteD.1 Overview
serial connections, debugging19.8 Optional Messages about Internal Happenings
serial line, target remote17.1 Connecting to a Remote Target
serial protocol, GDB remoteD.1 Overview
server prefix25.2 The Server Prefix
server, command prefix19.3 Command History
set3.3 Getting Help
set ABI for MIPS18.4.4 MIPS
set annotate25.1 What is an Annotation?
set architecture16. Specifying a Debugging Target
set args4.3 Your Program's Arguments
set arm18.3.1 ARM
set auto-solib-add15.1 Commands to Specify Files
set backtrace6.2 Backtraces
set board-address18.3.2 Renesas M32R/D and M32R/SDI
set breakpoint auto-hw5.1.1 Setting Breakpoints
set breakpoint pending5.1.1 Setting Breakpoints
set breakpoints in many functions5.1.1 Setting Breakpoints
set breakpoints on all functions5.1.1 Setting Breakpoints
set can-use-hw-watchpoints5.1.2 Setting Watchpoints
set case-sensitive13. Examining the Symbol Table
set charset8.17 Character Sets
set check range12.3.2 An Overview of Range Checking
set check type12.3.1 An Overview of Type Checking
set coerce-float-to-double19.6 Configuring the Current ABI
set com1base18.1.4 Features for Debugging DJGPP Programs
set com1irq18.1.4 Features for Debugging DJGPP Programs
set com2base18.1.4 Features for Debugging DJGPP Programs
set com2irq18.1.4 Features for Debugging DJGPP Programs
set com3base18.1.4 Features for Debugging DJGPP Programs
set com3irq18.1.4 Features for Debugging DJGPP Programs
set com4base18.1.4 Features for Debugging DJGPP Programs
set com4irq18.1.4 Features for Debugging DJGPP Programs
set complaints19.7 Optional Warnings and Messages
set confirm19.7 Optional Warnings and Messages
set cp-abi19.6 Configuring the Current ABI
set cygwin-exceptions18.1.5 Features for Debugging MS Windows PE Executables
set debug19.8 Optional Messages about Internal Happenings
set debug hppa18.4.5 HPPA
set debug mips18.4.4 MIPS
set debug monitor16.2 Commands for Managing Targets
set debug nto-debug18.1.7 QNX Neutrino
set debug-file-directory15.2 Debugging Information in Separate Files
set debugevents18.1.5 Features for Debugging MS Windows PE Executables
set debugexceptions18.1.5 Features for Debugging MS Windows PE Executables
set debugexec18.1.5 Features for Debugging MS Windows PE Executables
set debugmemory18.1.5 Features for Debugging MS Windows PE Executables
set demangle-style8.7 Print Settings
set detach-on-fork4.10 Debugging Programs with Multiple Processes
set disassembly-flavor7.6 Source and Machine Code
set download-path18.3.2 Renesas M32R/D and M32R/SDI
set editing19.2 Command Editing
set endian16.3 Choosing Target Byte Order
set environment4.4 Your Program's Environment
set exceptions, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
set exec-done-display19.8 Optional Messages about Internal Happenings
set extension-language12.2 Displaying the Language
set follow-fork-mode4.10 Debugging Programs with Multiple Processes
set gnutarget16.2 Commands for Managing Targets
set hash, for remote monitors16.2 Commands for Managing Targets
set height19.4 Screen Size
set history expansion19.3 Command History
set history filename19.3 Command History
set history save19.3 Command History
set history size19.3 Command History
set host-charset8.17 Character Sets
set inferior controlling terminal4.6 Your Program's Input and Output
set inferior-tty4.6 Your Program's Input and Output
set input-radix19.5 Numbers
set language12.1.2 Setting the Working Language
set listsize7.1 Printing Source Lines
set logging2.4 Logging Output
set max-user-call-depth20.1 User-defined Commands
set mem inaccessible-by-default8.14.2 Memory Access Checking
set mips abi18.4.4 MIPS
set mips mask-address18.4.4 MIPS
set mipsfpu18.3.4 MIPS Embedded
set monitor-prompt, MIPS remote18.3.4 MIPS Embedded
set monitor-warnings, MIPS remote18.3.4 MIPS Embedded
set new-console18.1.5 Features for Debugging MS Windows PE Executables
set new-group18.1.5 Features for Debugging MS Windows PE Executables
set opaque-type-resolution13. Examining the Symbol Table
set osabi19.6 Configuring the Current ABI
set output-radix19.5 Numbers
set overload-resolution12.4.1.7 GDB Features for C++
set pagination19.4 Screen Size
set powerpc18.3.6 PowerPC Embedded
set print8.7 Print Settings
set print thread-events4.9 Debugging Programs with Multiple Threads
set processor16. Specifying a Debugging Target
set procfs-file18.1.3 SVR4 Process Information
set procfs-trace18.1.3 SVR4 Process Information
set prompt19.1 Prompt
set radix19.5 Numbers
set rdiheartbeat18.3.1 ARM
set rdiromatzero18.3.1 ARM
set remote17.4 Remote Configuration
set remote system-call-allowedsystem
set remote-mips64-transfers-32bit-regs18.4.4 MIPS
set remotecache8.18 Caching Data of Remote Targets
set remoteflow17.4 Remote Configuration
set retransmit-timeout18.3.4 MIPS Embedded
set rstack_high_address18.4.2 A29K
set sdstimeout18.3.6 PowerPC Embedded
set server-address18.3.2 Renesas M32R/D and M32R/SDI
set shell18.1.5 Features for Debugging MS Windows PE Executables
set signal-thread18.1.6 Commands Specific to GNU Hurd Systems
set signals, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
set sigs, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
set sigthread18.1.6 Commands Specific to GNU Hurd Systems
set solib-absolute-prefix15.1 Commands to Specify Files
set solib-search-path15.1 Commands to Specify Files
set step-mode5.2 Continuing and Stepping
set stop-on-solib-events15.1 Commands to Specify Files
set stopped, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
set struct-convention18.4.1 x86 Architecture-specific Issues
set substitute-path7.5 Specifying Source Directories
set symbol-reloading13. Examining the Symbol Table
set syn-garbage-limit, MIPS remote18.3.4 MIPS Embedded
set sysroot15.1 Commands to Specify Files
set target-charset8.17 Character Sets
set task, Hurd commands18.1.6 Commands Specific to GNU Hurd Systems
set tdesc filenameF.1 Retrieving Descriptions
set thread, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
set timeout18.3.4 MIPS Embedded
set trace-commands19.7 Optional Warnings and Messages
set tracepoint10.1.1 Create and Delete Tracepoints
set trust-readonly-sections15.1 Commands to Specify Files
set tui active-border-mode22.5 TUI Configuration Variables
set tui border-kind22.5 TUI Configuration Variables
set tui border-mode22.5 TUI Configuration Variables
set unwindonsignal14.5 Calling Program Functions
set variable14.1 Assignment to Variables
set verbose19.7 Optional Warnings and Messages
set watchdogC. Maintenance Commands
set width19.4 Screen Size
set write14.6 Patching Programs
set-mark (C-@)27.4.8 Some Miscellaneous Commands
set-mark (C-@)27.4.8 Some Miscellaneous Commands
set_debug_traps17.5.1 What the Stub Can Do for You
setting variables14.1 Assignment to Variables
setting watchpoints5.1.2 Setting Watchpoints
SH17.5 Implementing a Remote Stub
`sh-stub.c'17.5 Implementing a Remote Stub
share15.1 Commands to Specify Files
shared libraries15.1 Commands to Specify Files
shared library events, remote replyD.3 Stop Reply Packets
sharedlibrary15.1 Commands to Specify Files
shell2.3 Shell Commands
shell escape2.3 Shell Commands
show3.3 Getting Help
show all user variables8.9 Convenience Variables
show annotate25.1 What is an Annotation?
show architecture16. Specifying a Debugging Target
show args4.3 Your Program's Arguments
show arm18.3.1 ARM
show auto-solib-add15.1 Commands to Specify Files
show backtrace6.2 Backtraces
show board-address18.3.2 Renesas M32R/D and M32R/SDI
show breakpoint auto-hw5.1.1 Setting Breakpoints
show breakpoint pending5.1.1 Setting Breakpoints
show can-use-hw-watchpoints5.1.2 Setting Watchpoints
show case-sensitive13. Examining the Symbol Table
show charset8.17 Character Sets
show check range12.3.2 An Overview of Range Checking
show check type12.3.1 An Overview of Type Checking
show coerce-float-to-double19.6 Configuring the Current ABI
show com1base18.1.4 Features for Debugging DJGPP Programs
show com1irq18.1.4 Features for Debugging DJGPP Programs
show com2base18.1.4 Features for Debugging DJGPP Programs
show com2irq18.1.4 Features for Debugging DJGPP Programs
show com3base18.1.4 Features for Debugging DJGPP Programs
show com3irq18.1.4 Features for Debugging DJGPP Programs
show com4base18.1.4 Features for Debugging DJGPP Programs
show com4irq18.1.4 Features for Debugging DJGPP Programs
show commands19.3 Command History
show complaints19.7 Optional Warnings and Messages
show confirm19.7 Optional Warnings and Messages
show convenience8.9 Convenience Variables
show copying3.3 Getting Help
show cp-abi19.6 Configuring the Current ABI
show cygwin-exceptions18.1.5 Features for Debugging MS Windows PE Executables
show debug19.8 Optional Messages about Internal Happenings
show debug mips18.4.4 MIPS
show debug monitor16.2 Commands for Managing Targets
show debug nto-debug18.1.7 QNX Neutrino
show debug-file-directory15.2 Debugging Information in Separate Files
show detach-on-fork4.10 Debugging Programs with Multiple Processes
show directories7.5 Specifying Source Directories
show disassembly-flavor7.6 Source and Machine Code
show download-path18.3.2 Renesas M32R/D and M32R/SDI
show editing19.2 Command Editing
show environment4.4 Your Program's Environment
show exceptions, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
show exec-done-display19.8 Optional Messages about Internal Happenings
show follow-fork-mode4.10 Debugging Programs with Multiple Processes
show gnutarget16.2 Commands for Managing Targets
show hash, for remote monitors16.2 Commands for Managing Targets
show height19.4 Screen Size
show history19.3 Command History
show host-charset8.17 Character Sets
show inferior-tty4.6 Your Program's Input and Output
show input-radix19.5 Numbers
show language12.2 Displaying the Language
show last commands19.3 Command History
show listsize7.1 Printing Source Lines
show logging2.4 Logging Output
show max-user-call-depth20.1 User-defined Commands
show mem inaccessible-by-default8.14.2 Memory Access Checking
show mips abi18.4.4 MIPS
show mips mask-address18.4.4 MIPS
show mipsfpu18.3.4 MIPS Embedded
show monitor-prompt, MIPS remote18.3.4 MIPS Embedded
show monitor-warnings, MIPS remote18.3.4 MIPS Embedded
show new-console18.1.5 Features for Debugging MS Windows PE Executables
show new-group18.1.5 Features for Debugging MS Windows PE Executables
show opaque-type-resolution13. Examining the Symbol Table
show osabi19.6 Configuring the Current ABI
show output-radix19.5 Numbers
show overload-resolution12.4.1.7 GDB Features for C++
show pagination19.4 Screen Size
show paths4.4 Your Program's Environment
show print8.7 Print Settings
show print thread-events4.9 Debugging Programs with Multiple Threads
show processor16. Specifying a Debugging Target
show procfs-file18.1.3 SVR4 Process Information
show procfs-trace18.1.3 SVR4 Process Information
show prompt19.1 Prompt
show radix19.5 Numbers
show rdiheartbeat18.3.1 ARM
show rdiromatzero18.3.1 ARM
show remote17.4 Remote Configuration
show remote system-call-allowedsystem
show remote-mips64-transfers-32bit-regs18.4.4 MIPS
show remotecache8.18 Caching Data of Remote Targets
show remoteflow17.4 Remote Configuration
show retransmit-timeout18.3.4 MIPS Embedded
show rstack_high_address18.4.2 A29K
show sdstimeout18.3.6 PowerPC Embedded
show server-address18.3.2 Renesas M32R/D and M32R/SDI
show shell18.1.5 Features for Debugging MS Windows PE Executables
show signal-thread18.1.6 Commands Specific to GNU Hurd Systems
show signals, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
show sigs, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
show sigthread18.1.6 Commands Specific to GNU Hurd Systems
show solib-search-path15.1 Commands to Specify Files
show stop-on-solib-events15.1 Commands to Specify Files
show stopped, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
show struct-convention18.4.1 x86 Architecture-specific Issues
show substitute-path7.5 Specifying Source Directories
show symbol-reloading13. Examining the Symbol Table
show syn-garbage-limit, MIPS remote18.3.4 MIPS Embedded
show sysroot15.1 Commands to Specify Files
show target-charset8.17 Character Sets
show task, Hurd commands18.1.6 Commands Specific to GNU Hurd Systems
show tdesc filenameF.1 Retrieving Descriptions
show thread, Hurd command18.1.6 Commands Specific to GNU Hurd Systems
show timeout18.3.4 MIPS Embedded
show unwindonsignal14.5 Calling Program Functions
show user20.1 User-defined Commands
show values8.8 Value History
show verbose19.7 Optional Warnings and Messages
show version3.3 Getting Help
show warranty3.3 Getting Help
show width19.4 Screen Size
show write14.6 Patching Programs
show-all-if-ambiguous27.3.1 Readline Init File Syntax
show-all-if-unmodified27.3.1 Readline Init File Syntax
si (stepi)5.2 Continuing and Stepping
signal14.3 Giving your Program a Signal
signal annotation25.6 Running the Program
signal-name annotation25.6 Running the Program
signal-name-end annotation25.6 Running the Program
signal-string annotation25.6 Running the Program
signal-string-end annotation25.6 Running the Program
signalled annotation25.6 Running the Program
signals5.3 Signals
SIGQUIT signal, dump core of GDBC. Maintenance Commands
silent5.1.7 Breakpoint Command Lists
sim18.3.10 Zilog Z8000
sim, a command18.3 Embedded Processors
simulator, Z800018.3.10 Zilog Z8000
size of remote memory accessesD.2 Packets
size of screen19.4 Screen Size
snapshot of a process4.11 Setting a Bookmark to Return to Later
software watchpoints5.1.2 Setting Watchpoints
source20.3 Command Files
source annotation25.7 Displaying Source
source file and line of a symbol8.7 Print Settings
source line and its code address7.6 Source and Machine Code
source path7.5 Specifying Source Directories
Sparc17.5 Implementing a Remote Stub
`sparc-stub.c'17.5 Implementing a Remote Stub
`sparcl-stub.c'17.5 Implementing a Remote Stub
Sparclet18.3.8 Tsqware Sparclet
SparcLite17.5 Implementing a Remote Stub
Special Fortran commands12.4.3.3 Special Fortran Commands
specifying location7.2 Specifying a Location
spr18.3.5 OpenRISC 1000
SPU18.4.6 Cell Broadband Engine SPU architecture
SSE registers (x86)8.10 Registers
stack frame6.1 Stack Frames
stack on Alpha18.4.4 MIPS
stack on MIPS18.4.4 MIPS
stack pointer register8.10 Registers
stacking targets16.1 Active Targets
standard registers8.10 Registers
start4.2 Starting your Program
start a new trace experiment10.1.6 Starting and Stopping Trace Experiments
start-kbd-macro (C-x ()27.4.7 Keyboard Macros
start-kbd-macro (C-x ()27.4.7 Keyboard Macros
starting4.2 Starting your Program
starting annotation25.6 Running the Program
startup code, and backtrace6.2 Backtraces
stat, file-i/o system callstat/fstat
static members of C++ objects8.7 Print Settings
static members of Pascal objects8.7 Print Settings
status of trace data collection10.1.6 Starting and Stopping Trace Experiments
status output in GDB/MI24.1.2 GDB/MI Output Syntax
step5.2 Continuing and Stepping
stepi5.2 Continuing and Stepping
stepping5.2 Continuing and Stepping
stepping into functions with no line info5.2 Continuing and Stepping
stop a running trace experiment10.1.6 Starting and Stopping Trace Experiments
stop on C++ exceptions5.1.3 Setting Catchpoints
stop reply packetsD.3 Stop Reply Packets
stop, a pseudo-command20.2 User-defined Command Hooks
stopped threads5.4 Stopping and Starting Multi-thread Programs
stopping annotation25.6 Running the Program
stream records in GDB/MI24.4.2 GDB/MI Stream Records
struct return convention18.4.1 x86 Architecture-specific Issues
struct stat, in file-i/o protocolstruct stat
struct timeval, in file-i/o protocolstruct timeval
struct user contents8.13 Operating System Auxiliary Information
struct/union returned in registers18.4.1 x86 Architecture-specific Issues
stub example, remote debugging17.5 Implementing a Remote Stub
stupid questions19.7 Optional Warnings and Messages
Super-H18.3.13 Renesas Super-H
supported packets, remote queryD.4 General Query Packets
switching threads4.9 Debugging Programs with Multiple Threads
switching threads automatically4.9 Debugging Programs with Multiple Threads
symbol decoding style, C++8.7 Print Settings
symbol dump13. Examining the Symbol Table
symbol from address13. Examining the Symbol Table
symbol lookup, remote requestD.4 General Query Packets
symbol names13. Examining the Symbol Table
symbol overloading5.1.8 Breakpoint Menus
symbol table15.1 Commands to Specify Files
symbol tables, listing GDB's internal13. Examining the Symbol Table
symbol, source file and line8.7 Print Settings
symbol-file15.1 Commands to Specify Files
symbols, reading from relocatable object files15.1 Commands to Specify Files
symbols, reading immediately15.1 Commands to Specify Files
synchronize with remote MIPS target18.3.4 MIPS Embedded
syscall DSO15.1 Commands to Specify Files
sysinfo18.1.4 Features for Debugging DJGPP Programs
system calls and thread breakpoints5.4 Stopping and Starting Multi-thread Programs
system root, alternate15.1 Commands to Specify Files
system, file-i/o system callsystem

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_48.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_48.html new file mode 100644 index 0000000..42cb9f2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_48.html @@ -0,0 +1,356 @@ + + + + + +Debugging with GDB: Index: T + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: T

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

T
`t' packetD.2 Packets
`T' packetD.2 Packets
`T' packet replyD.3 Stop Reply Packets
tab-insert (M-TAB)27.4.3 Commands For Changing Text
tab-insert (M-TAB)27.4.3 Commands For Changing Text
tabset22.4 TUI-specific Commands
target16.2 Commands for Managing Targets
target architecture16. Specifying a Debugging Target
target array18.3.4 MIPS Embedded
target byte order16.3 Choosing Target Byte Order
target character set8.17 Character Sets
target dbug18.3.3 M68k
target ddb port18.3.4 MIPS Embedded
target debugging info19.8 Optional Messages about Internal Happenings
target descriptionsF. Target Descriptions
target descriptions, ARM featuresF.4.1 ARM Features
target descriptions, inclusionF.2.1 Inclusion
target descriptions, M68K featuresF.4.3 M68K Features
target descriptions, MIPS featuresF.4.2 MIPS Features
target descriptions, PowerPC featuresF.4.4 PowerPC Features
target descriptions, predefined typesF.3 Predefined Target Types
target descriptions, standard featuresF.4 Standard Target Features
target descriptions, XML formatF.2 Target Description Format
target dink3218.3.6 PowerPC Embedded
target jtag18.3.5 OpenRISC 1000
target lsi port18.3.4 MIPS Embedded
target m32r18.3.2 Renesas M32R/D and M32R/SDI
target m32rsdi18.3.2 Renesas M32R/D and M32R/SDI
target mips port18.3.4 MIPS Embedded
target op50n18.3.7 HP PA Embedded
target output in GDB/MI24.1.2 GDB/MI Output Syntax
target pmon port18.3.4 MIPS Embedded
target ppcbug18.3.6 PowerPC Embedded
target ppcbug118.3.6 PowerPC Embedded
target r390018.3.4 MIPS Embedded
target rdi18.3.1 ARM
target rdp18.3.1 ARM
target remote17.1 Connecting to a Remote Target
target sds18.3.6 PowerPC Embedded
target sim, with Z800018.3.10 Zilog Z8000
target sparclite18.3.9 Fujitsu Sparclite
target stack descriptionC. Maintenance Commands
target vxworks18.2.1 Using GDB with VxWorks
target w89k18.3.7 HP PA Embedded
task attributes (GNU Hurd)18.1.6 Commands Specific to GNU Hurd Systems
task exception port, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
task suspend count18.1.6 Commands Specific to GNU Hurd Systems
tbreak5.1.1 Setting Breakpoints
TCP port, target remote17.1 Connecting to a Remote Target
tdump10.2.2 tdump
terminal4.6 Your Program's Input and Output
Text User Interface22. GDB Text User Interface
tfind10.2.1 tfind n
thbreak5.1.1 Setting Breakpoints
this, inside C++ member functions12.4.1.3 C++ Expressions
thread apply4.9 Debugging Programs with Multiple Threads
thread attributes info, remote requestD.4 General Query Packets
thread breakpoints5.4 Stopping and Starting Multi-thread Programs
thread breakpoints and system calls5.4 Stopping and Starting Multi-thread Programs
thread default settings, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
thread identifier (GDB)4.9 Debugging Programs with Multiple Threads
thread identifier (GDB), on HP-UX4.9 Debugging Programs with Multiple Threads
thread identifier (system)4.9 Debugging Programs with Multiple Threads
thread identifier (system), on HP-UX4.9 Debugging Programs with Multiple Threads
thread info (Solaris)4.9 Debugging Programs with Multiple Threads
thread information, remote requestD.4 General Query Packets
thread number4.9 Debugging Programs with Multiple Threads
thread properties, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
thread suspend count, GNU Hurd18.1.6 Commands Specific to GNU Hurd Systems
thread threadno4.9 Debugging Programs with Multiple Threads
threads and watchpoints5.1.2 Setting Watchpoints
threads of execution4.9 Debugging Programs with Multiple Threads
threads, automatic switching4.9 Debugging Programs with Multiple Threads
threads, continuing5.4 Stopping and Starting Multi-thread Programs
threads, stopped5.4 Stopping and Starting Multi-thread Programs
tilde-expand (M-~)27.4.8 Some Miscellaneous Commands
tilde-expand (M-~)27.4.8 Some Miscellaneous Commands
time of command executionC. Maintenance Commands
timeout for commandsC. Maintenance Commands
timeout for serial communications17.4 Remote Configuration
timeout, MIPS protocol18.3.4 MIPS Embedded
tload, M32R18.3.2 Renesas M32R/D and M32R/SDI
trace10.1.1 Create and Delete Tracepoints
trace experiment, status of10.1.6 Starting and Stopping Trace Experiments
traceback6.2 Backtraces
tracepoint actions10.1.4 Tracepoint Action Lists
tracepoint data, display10.2.2 tdump
tracepoint deletion10.1.1 Create and Delete Tracepoints
tracepoint number10.1.1 Create and Delete Tracepoints
tracepoint packetsD.6 Tracepoint Packets
tracepoint pass count10.1.3 Tracepoint Passcounts
tracepoint variables10.3 Convenience Variables for Tracepoints
tracepoints10. Tracepoints
trailing underscore, in Fortran symbols12.4.3 Fortran
translating between character sets8.17 Character Sets
transpose-chars (C-t)27.4.3 Commands For Changing Text
transpose-chars (C-t)27.4.3 Commands For Changing Text
transpose-words (M-t)27.4.3 Commands For Changing Text
transpose-words (M-t)27.4.3 Commands For Changing Text
tstart10.1.6 Starting and Stopping Trace Experiments
tstatus10.1.6 Starting and Stopping Trace Experiments
tstop10.1.6 Starting and Stopping Trace Experiments
tty4.6 Your Program's Input and Output
TUI22. GDB Text User Interface
TUI commands22.4 TUI-specific Commands
TUI configuration variables22.5 TUI Configuration Variables
TUI key bindings22.2 TUI Key Bindings
tui reg22.4 TUI-specific Commands
TUI single key mode22.3 TUI Single Key Mode
type casting memory8.1 Expressions
type chain of a data typeC. Maintenance Commands
type checking12.3 Type and Range Checking
type conversions in C++12.4.1.3 C++ Expressions

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_49.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_49.html new file mode 100644 index 0000000..a17d808 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_49.html @@ -0,0 +1,360 @@ + + + + + +Debugging with GDB: Index: U -- Y + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: U -- Y

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

U
u (SingleKey TUI key)22.3 TUI Single Key Mode
u (until)5.2 Continuing and Stepping
UDP port, target remote17.1 Connecting to a Remote Target
undisplay8.6 Automatic Display
undo (C-_ or C-x C-u)27.4.8 Some Miscellaneous Commands
undo (C-_ or C-x C-u)27.4.8 Some Miscellaneous Commands
unions in structures, printing8.7 Print Settings
universal-argument ()27.4.5 Specifying Numeric Arguments
universal-argument ()27.4.5 Specifying Numeric Arguments
unix-filename-rubout ()27.4.4 Killing And Yanking
unix-filename-rubout ()27.4.4 Killing And Yanking
unix-line-discard (C-u)27.4.4 Killing And Yanking
unix-line-discard (C-u)27.4.4 Killing And Yanking
unix-word-rubout (C-w)27.4.4 Killing And Yanking
unix-word-rubout (C-w)27.4.4 Killing And Yanking
unknown address, locating8.4 Output Formats
unlink, file-i/o system callunlink
unlinked object files15.1 Commands to Specify Files
unload symbols from shared libraries15.1 Commands to Specify Files
unmap an overlay11.2 Overlay Commands
unmapped overlays11.1 How Overlays Work
unset environment4.4 Your Program's Environment
unset substitute-path7.5 Specifying Source Directories
unset tdesc filenameF.1 Retrieving Descriptions
unsupported languages12.5 Unsupported Languages
until5.2 Continuing and Stepping
unwind stack in called functions14.5 Calling Program Functions
Up22.2 TUI Key Bindings
up6.3 Selecting a Frame
up-silently6.3 Selecting a Frame
upcase-word (M-u)27.4.3 Commands For Changing Text
upcase-word (M-u)27.4.3 Commands For Changing Text
update22.4 TUI-specific Commands
upload, M32R18.3.2 Renesas M32R/D and M32R/SDI
use only software watchpoints5.1.2 Setting Watchpoints
use_dbt_break18.3.2 Renesas M32R/D and M32R/SDI
use_debug_dma18.3.2 Renesas M32R/D and M32R/SDI
use_ib_break18.3.2 Renesas M32R/D and M32R/SDI
use_mon_code18.3.2 Renesas M32R/D and M32R/SDI
user-defined command20.1 User-defined Commands
user-defined macros9. C Preprocessor Macros
user-defined variables8.9 Convenience Variables

V
v (SingleKey TUI key)22.3 TUI Single Key Mode
value history8.8 Value History
value optimized out, in backtrace6.2 Backtraces
variable name conflict8.2 Program Variables
variable object debugging info19.8 Optional Messages about Internal Happenings
variable objects in GDB/MIIntroduction to Variable Objects
variable values, wrong8.2 Program Variables
variables, readline27.3.1 Readline Init File Syntax
variables, setting14.1 Assignment to Variables
`vAttach' packetD.2 Packets
`vCont' packetD.2 Packets
`vCont?' packetD.2 Packets
vector unit8.12 Vector Unit
vector, auxiliary8.13 Operating System Auxiliary Information
verbose operation19.7 Optional Warnings and Messages
verify remote memory image8.5 Examining Memory
`vFile' packetD.2 Packets
`vFlashDone' packetD.2 Packets
`vFlashErase' packetD.2 Packets
`vFlashWrite' packetD.2 Packets
vi-editing-mode (M-C-j)27.4.8 Some Miscellaneous Commands
vi-editing-mode (M-C-j)27.4.8 Some Miscellaneous Commands
virtual functions (C++) display8.7 Print Settings
visible-stats27.3.1 Readline Init File Syntax
`vRun' packetD.2 Packets
VTBL display8.7 Print Settings
VxWorks18.2.1 Using GDB with VxWorks
vxworks-timeout18.2.1 Using GDB with VxWorks

W
w (SingleKey TUI key)22.3 TUI Single Key Mode
watch5.1.2 Setting Watchpoints
watchdog timerC. Maintenance Commands
watchpoint annotation25.6 Running the Program
watchpoints5.1 Breakpoints, Watchpoints, and Catchpoints
watchpoints and threads5.1.2 Setting Watchpoints
weak alias functions14.5 Calling Program Functions
whatis13. Examining the Symbol Table
where6.2 Backtraces
where to look for shared libraries15.1 Commands to Specify Files
while20.3 Command Files
while-stepping (tracepoints)10.1.4 Tracepoint Action Lists
wild pointer, interpreting8.7 Print Settings
winheight22.4 TUI-specific Commands
word completion3.2 Command Completion
working directory7.5 Specifying Source Directories
working directory (of your program)4.5 Your Program's Working Directory
working language12. Using GDB with Different Languages
write data into object, remote requestD.4 General Query Packets
write, file-i/o system callwrite
writing into corefiles14.6 Patching Programs
writing into executables14.6 Patching Programs
wrong values8.2 Program Variables

X
x (examine memory)8.5 Examining Memory
x command, default address7.6 Source and Machine Code
`X' packetD.2 Packets
x(examine), and info line7.6 Source and Machine Code
x86 hardware debug registersC. Maintenance Commands
XIncludeF.2.1 Inclusion
XML parser debugging19.8 Optional Messages about Internal Happenings

Y
yank (C-y)27.4.4 Killing And Yanking
yank (C-y)27.4.4 Killing And Yanking
yank-last-arg (M-. or M-_)27.4.2 Commands For Manipulating The History
yank-last-arg (M-. or M-_)27.4.2 Commands For Manipulating The History
yank-nth-arg (M-C-y)27.4.2 Commands For Manipulating The History
yank-nth-arg (M-C-y)27.4.2 Commands For Manipulating The History
yank-pop (M-y)27.4.4 Killing And Yanking
yank-pop (M-y)27.4.4 Killing And Yanking
yanking text27.2.3 Readline Killing Commands

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_5.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_5.html new file mode 100644 index 0000000..6603c0d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_5.html @@ -0,0 +1,1380 @@ + + + + + +Debugging with GDB: Running + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4. Running Programs Under GDB

+ +

+ +When you run a program under GDB, you must first generate +debugging information when you compile it. +

+ +You may start GDB with its arguments, if any, in an environment +of your choice. If you are doing native debugging, you may redirect +your program's input and output, debug an already running process, or +kill a child process. +

+ +

+ + + + +
4.1 Compiling for Debugging  Compiling for debugging
4.2 Starting your Program  Starting your program
4.3 Your Program's Arguments  Your program's arguments
4.4 Your Program's Environment  Your program's environment
+ +
+ + + + + +
4.5 Your Program's Working Directory  Your program's working directory
4.6 Your Program's Input and Output  Your program's input and output
4.7 Debugging an Already-running Process  Debugging an already-running process
4.8 Killing the Child Process  Killing the child process
+ +
+ + + + +
4.9 Debugging Programs with Multiple Threads  Debugging programs with multiple threads
4.10 Debugging Programs with Multiple Processes  Debugging programs with multiple processes
4.11 Setting a Bookmark to Return to Later  Setting a bookmark to return to later
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.1 Compiling for Debugging

+ +

+ +In order to debug a program effectively, you need to generate +debugging information when you compile it. This debugging information +is stored in the object file; it describes the data type of each +variable or function and the correspondence between source line numbers +and addresses in the executable code. +

+ +To request debugging information, specify the `-g' option when you run +the compiler. +

+ +Programs that are to be shipped to your customers are compiled with +optimizations, using the `-O' compiler option. However, many +compilers are unable to handle the `-g' and `-O' options +together. Using those compilers, you cannot generate optimized +executables containing debugging information. +

+ +GCC, the GNU C/C++ compiler, supports `-g' with or +without `-O', making it possible to debug optimized code. We +recommend that you always use `-g' whenever you compile a +program. You may think your program is correct, but there is no sense +in pushing your luck. +

+ + + +When you debug a program compiled with `-g -O', remember that the +optimizer is rearranging your code; the debugger shows you what is +really there. Do not be too surprised when the execution path does not +exactly match your source file! An extreme example: if you define a +variable, but never use it, GDB never sees that +variable--because the compiler optimizes it out of existence. +

+ +Some things do not work as well with `-g -O' as with just +`-g', particularly on machines with instruction scheduling. If in +doubt, recompile with `-g' alone, and if this fixes the problem, +please report it to us as a bug (including a test case!). +See section 8.2 Program Variables, for more information about debugging optimized code. +

+ +Older versions of the GNU C compiler permitted a variant option +`-gg' for debugging information. GDB no longer supports this +format; if your GNU C compiler has this option, do not use it. +

+ +GDB knows about preprocessor macros and can show you their +expansion (see section 9. C Preprocessor Macros). Most compilers do not include information +about preprocessor macros in the debugging information if you specify +the `-g' flag alone, because this information is rather large. +Version 3.1 and later of GCC, the GNU C compiler, +provides macro information if you specify the options +`-gdwarf-2' and `-g3'; the former option requests +debugging information in the Dwarf 2 format, and the latter requests +"extra information". In the future, we hope to find more compact +ways to represent macro information, so that it can be included with +`-g' alone. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.2 Starting your Program

+ +

+ +

+ + +
run +
r +
Use the run command to start your program under GDB. +You must first specify the program name (except on VxWorks) with an +argument to GDB (see section Getting In and Out of GDB), or by using the file or exec-file command +(see section Commands to Specify Files). +

+ +

+

+ +If you are running your program in an execution environment that +supports processes, run creates an inferior process and makes +that process run your program. (In environments without processes, +run jumps to the start of your program.) +

+ +The execution of a program is affected by certain information it +receives from its superior. GDB provides ways to specify this +information, which you must do before starting your program. (You +can change it after starting your program, but such changes only affect +your program the next time you start it.) This information may be +divided into four categories: +

+ +

+
The arguments. +
Specify the arguments to give your program as the arguments of the +run command. If a shell is available on your target, the shell +is used to pass the arguments, so that you may use normal conventions +(such as wildcard expansion or variable substitution) in describing +the arguments. +In Unix systems, you can control which shell is used with the +SHELL environment variable. +See section Your Program's Arguments. +

+ +

The environment. +
Your program normally inherits its environment from GDB, but you can +use the GDB commands set environment and unset +environment to change parts of the environment that affect +your program. See section Your Program's Environment. +

+ +

The working directory. +
Your program inherits its working directory from GDB. You can set +the GDB working directory with the cd command in GDB. +See section Your Program's Working Directory. +

+ +

The standard input and output. +
Your program normally uses the same device for standard input and +standard output as GDB is using. You can redirect input and output +in the run command line, or you can use the tty command to +set a different device for your program. +See section Your Program's Input and Output. +

+ + +Warning: While input and output redirection work, you cannot use +pipes to pass the output of the program you are debugging to another +program; if you attempt this, GDB is likely to wind up debugging the +wrong program. +

+

+ +When you issue the run command, your program begins to execute +immediately. See section Stopping and Continuing, for discussion +of how to arrange for your program to stop. Once your program has +stopped, you may call functions in your program, using the print +or call commands. See section Examining Data. +

+ +If the modification time of your symbol file has changed since the last +time GDB read its symbols, GDB discards its symbol +table, and reads it again. When it does this, GDB tries to retain +your current breakpoints. +

+ +

+ +
start +
+The name of the main procedure can vary from language to language. +With C or C++, the main procedure name is always main, but +other languages such as Ada do not require a specific name for their +main procedure. The debugger provides a convenient way to start the +execution of the program and to stop at the beginning of the main +procedure, depending on the language used. +

+ +The `start' command does the equivalent of setting a temporary +breakpoint at the beginning of the main procedure and then invoking +the `run' command. +

+ + +Some programs contain an elaboration phase where some startup code is +executed before the main procedure is called. This depends on the +languages used to write your program. In C++, for instance, +constructors for static and global objects are executed before +main is called. It is therefore possible that the debugger stops +before reaching the main procedure. However, the temporary breakpoint +will remain to halt execution. +

+ +Specify the arguments to give to your program as arguments to the +`start' command. These arguments will be given verbatim to the +underlying `run' command. Note that the same arguments will be +reused if no argument is provided during subsequent calls to +`start' or `run'. +

+ +It is sometimes necessary to debug the program during elaboration. In +these cases, using the start command would stop the execution of +your program too late, as the program would have already completed the +elaboration phase. Under these circumstances, insert breakpoints in your +elaboration code before running your program. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.3 Your Program's Arguments

+ +

+ + +The arguments to your program can be specified by the arguments of the +run command. +They are passed to a shell, which expands wildcard characters and +performs redirection of I/O, and thence to your program. Your +SHELL environment variable (if it exists) specifies what shell +GDB uses. If you do not define SHELL, GDB uses +the default shell (`/bin/sh' on Unix). +

+ +On non-Unix systems, the program is usually invoked directly by +GDB, which emulates I/O redirection via the appropriate system +calls, and the wildcard characters are expanded by the startup code of +the program, not by the shell. +

+ +run with no arguments uses the same arguments used by the previous +run, or those set by the set args command. +

+ +

+ +
set args +
Specify the arguments to be used the next time your program is run. If +set args has no arguments, run executes your program +with no arguments. Once you have run your program with arguments, +using set args before the next run is the only way to run +it again without arguments. +

+ + +

show args +
Show the arguments to give your program when it is started. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.4 Your Program's Environment

+ +

+ + +The environment consists of a set of environment variables and +their values. Environment variables conventionally record such things as +your user name, your home directory, your terminal type, and your search +path for programs to run. Usually you set up environment variables with +the shell and they are inherited by all the other programs you run. When +debugging, it can be useful to try running your program with a modified +environment without having to start GDB over again. +

+ +

+ +
path directory +
Add directory to the front of the PATH environment variable +(the search path for executables) that will be passed to your program. +The value of PATH used by GDB does not change. +You may specify several directory names, separated by whitespace or by a +system-dependent separator character (`:' on Unix, `;' on +MS-DOS and MS-Windows). If directory is already in the path, it +is moved to the front, so it is searched sooner. +

+ +You can use the string `$cwd' to refer to whatever is the current +working directory at the time GDB searches the path. If you +use `.' instead, it refers to the directory where you executed the +path command. GDB replaces `.' in the +directory argument (with the current path) before adding +directory to the search path. +

+ + +

show paths +
Display the list of search paths for executables (the PATH +environment variable). +

+ + +

show environment [varname] +
Print the value of environment variable varname to be given to +your program when it starts. If you do not supply varname, +print the names and values of all environment variables to be given to +your program. You can abbreviate environment as env. +

+ + +

set environment varname [=value] +
Set environment variable varname to value. The value +changes for your program only, not for GDB itself. value may +be any string; the values of environment variables are just strings, and +any interpretation is supplied by your program itself. The value +parameter is optional; if it is eliminated, the variable is set to a +null value. +

+ +For example, this command: +

+ +
 
set env USER = foo
+

+ +tells the debugged program, when subsequently run, that its user is named +`foo'. (The spaces around `=' are used for clarity here; they +are not actually required.) +

+ + +

unset environment varname +
Remove variable varname from the environment to be passed to your +program. This is different from `set env varname ='; +unset environment removes the variable from the environment, +rather than assigning it an empty value. +
+

+ +Warning: On Unix systems, GDB runs your program using +the shell indicated +by your SHELL environment variable if it exists (or +/bin/sh if not). If your SHELL variable names a shell +that runs an initialization file--such as `.cshrc' for C-shell, or +`.bashrc' for BASH--any variables you set in that file affect +your program. You may wish to move setting of environment variables to +files that are only run when you sign on, such as `.login' or +`.profile'. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.5 Your Program's Working Directory

+ +

+ + +Each time you start your program with run, it inherits its +working directory from the current working directory of GDB. +The GDB working directory is initially whatever it inherited +from its parent process (typically the shell), but you can specify a new +working directory in GDB with the cd command. +

+ +The GDB working directory also serves as a default for the commands +that specify files for GDB to operate on. See section Commands to Specify Files. +

+ +

+ + +
cd directory +
Set the GDB working directory to directory. +

+ + +

pwd +
Print the GDB working directory. +
+

+ +It is generally impossible to find the current working directory of +the process being debugged (since a program can change its directory +during its run). If you work on a system where GDB is +configured with the `/proc' support, you can use the info +proc command (see section 18.1.3 SVR4 Process Information) to find out the +current working directory of the debuggee. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.6 Your Program's Input and Output

+ +

+ + + + +By default, the program you run under GDB does input and output to +the same terminal that GDB uses. GDB switches the terminal +to its own terminal modes to interact with you, but it records the terminal +modes your program was using and switches back to them when you continue +running your program. +

+ +

+ +
info terminal +
Displays information recorded by GDB about the terminal modes your +program is using. +
+

+ +You can redirect your program's input and/or output using shell +redirection with the run command. For example, +

+ +
 
run > outfile
+

+ +starts your program, diverting its output to the file `outfile'. +

+ + + +Another way to specify where your program should do input and output is +with the tty command. This command accepts a file name as +argument, and causes this file to be the default for future run +commands. It also resets the controlling terminal for the child +process, for future run commands. For example, +

+ +
 
tty /dev/ttyb
+

+ +directs that processes started with subsequent run commands +default to do input and output on the terminal `/dev/ttyb' and have +that as their controlling terminal. +

+ +An explicit redirection in run overrides the tty command's +effect on the input/output device, but not its effect on the controlling +terminal. +

+ +When you use the tty command or redirect input in the run +command, only the input for your program is affected. The input +for GDB still comes from your terminal. tty is an alias +for set inferior-tty. +

+ + + +You can use the show inferior-tty command to tell GDB to +display the name of the terminal that will be used for future runs of your +program. +

+ +

+
set inferior-tty /dev/ttyb +
+Set the tty for the program being debugged to /dev/ttyb. +

+ +

show inferior-tty +
+Show the current tty for the program being debugged. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.7 Debugging an Already-running Process

+ +

+ +

+
attach process-id +
This command attaches to a running process--one that was started +outside GDB. (info files shows your active +targets.) The command takes as argument a process ID. The usual way to +find out the process-id of a Unix process is with the ps utility, +or with the `jobs -l' shell command. +

+ +attach does not repeat if you press RET a second time after +executing the command. +

+

+ +To use attach, your program must be running in an environment +which supports processes; for example, attach does not work for +programs on bare-board targets that lack an operating system. You must +also have permission to send the process a signal. +

+ +When you use attach, the debugger finds the program running in +the process first by looking in the current working directory, then (if +the program is not found) by using the source file search path +(see section Specifying Source Directories). You can also use +the file command to load the program. See section Commands to Specify Files. +

+ +The first thing GDB does after arranging to debug the specified +process is to stop it. You can examine and modify an attached process +with all the GDB commands that are ordinarily available when +you start processes with run. You can insert breakpoints; you +can step and continue; you can modify storage. If you would rather the +process continue running, you may use the continue command after +attaching GDB to the process. +

+ +

+ +
detach +
When you have finished debugging the attached process, you can use the +detach command to release it from GDB control. Detaching +the process continues its execution. After the detach command, +that process and GDB become completely independent once more, and you +are ready to attach another process or start one with run. +detach does not repeat if you press RET again after +executing the command. +
+

+ +If you exit GDB while you have an attached process, you detach +that process. If you use the run command, you kill that process. +By default, GDB asks for confirmation if you try to do either of these +things; you can control whether or not you need to confirm by using the +set confirm command (see section Optional Warnings and Messages). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.8 Killing the Child Process

+ +

+ +

+ +
kill +
Kill the child process in which your program is running under GDB. +
+

+ +This command is useful if you wish to debug a core dump instead of a +running process. GDB ignores any core dump file while your program +is running. +

+ +On some operating systems, a program cannot be executed outside GDB +while you have breakpoints set on it inside GDB. You can use the +kill command in this situation to permit running your program +outside the debugger. +

+ +The kill command is also useful if you wish to recompile and +relink your program, since on many systems it is impossible to modify an +executable file while it is running in a process. In this case, when you +next type run, GDB notices that the file has changed, and +reads the symbol table again (while trying to preserve your current +breakpoint settings). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.9 Debugging Programs with Multiple Threads

+ +

+ + + + +In some operating systems, such as HP-UX and Solaris, a single program +may have more than one thread of execution. The precise semantics +of threads differ from one operating system to another, but in general +the threads of a single program are akin to multiple processes--except +that they share one address space (that is, they can all examine and +modify the same variables). On the other hand, each thread has its own +registers and execution stack, and perhaps private memory. +

+ +GDB provides these facilities for debugging multi-thread +programs: +

+ +

    +
  • automatic notification of new threads +
  • `thread threadno', a command to switch among threads +
  • `info threads', a command to inquire about existing threads +
  • `thread apply [threadno] [all] args', +a command to apply a command to a list of threads +
  • thread-specific breakpoints +
  • `set print thread-events', which controls printing of +messages on thread start and exit. +
+

+ +

+Warning: These facilities are not yet available on every +GDB configuration where the operating system supports threads. +If your GDB does not support threads, these commands have no +effect. For example, a system without thread support shows no output +from `info threads', and always rejects the thread command, +like this: +

+ +
 
(gdb) info threads
+(gdb) thread 1
+Thread ID 1 not known.  Use the "info threads" command to
+see the IDs of currently known threads.
+

+

+ + + +The GDB thread debugging facility allows you to observe all +threads while your program runs--but whenever GDB takes +control, one thread in particular is always the focus of debugging. +This thread is called the current thread. Debugging commands show +program information from the perspective of the current thread. +

+ + + +Whenever GDB detects a new thread in your program, it displays +the target system's identification for the thread with a message in the +form `[New systag]'. systag is a thread identifier +whose form varies depending on the particular system. For example, on +GNU/Linux, you might see +

+ +
 
[New Thread 46912507313328 (LWP 25582)]
+

+ +when GDB notices a new thread. In contrast, on an SGI system, +the systag is simply something like `process 368', with no +further qualifier. +

+ + + +For debugging purposes, GDB associates its own thread +number--always a single integer--with each thread in your program. +

+ +

+ +
info threads +
Display a summary of all threads currently in your +program. GDB displays for each thread (in this order): +

+ +

    +
  1. +the thread number assigned by GDB +

    + +

  2. +the target system's thread identifier (systag) +

    + +

  3. +the current stack frame summary for that thread +
+

+ +An asterisk `*' to the left of the GDB thread number +indicates the current thread. +

+ +For example, +

+

+ +
 
(gdb) info threads
+  3 process 35 thread 27  0x34e5 in sigpause ()
+  2 process 35 thread 23  0x34e5 in sigpause ()
+* 1 process 35 thread 13  main (argc=1, argv=0x7ffffff8)
+    at threadtest.c:68
+

+ +On HP-UX systems: +

+ + + +For debugging purposes, GDB associates its own thread +number--a small integer assigned in thread-creation order--with each +thread in your program. +

+ + + +Whenever GDB detects a new thread in your program, it displays +both GDB's thread number and the target system's identification for the thread with a message in the +form `[New systag]'. systag is a thread identifier +whose form varies depending on the particular system. For example, on +HP-UX, you see +

+ +
 
[New thread 2 (system thread 26594)]
+

+ +when GDB notices a new thread. +

+ +

+ +
info threads +
Display a summary of all threads currently in your +program. GDB displays for each thread (in this order): +

+ +

    +
  1. the thread number assigned by GDB +

    + +

  2. the target system's thread identifier (systag) +

    + +

  3. the current stack frame summary for that thread +
+

+ +An asterisk `*' to the left of the GDB thread number +indicates the current thread. +

+ +For example, +

+

+ +
 
(gdb) info threads
+    * 3 system thread 26607  worker (wptr=0x7b09c318 "@") \
+ at quicksort.c:137 + 2 system thread 26606 0x7b0030d8 in __ksleep () \
+ from /usr/lib/libc.2 + 1 system thread 27905 0x7b003498 in _brk () \
+ from /usr/lib/libc.2 +

+ +On Solaris, you can display more information about user threads with a +Solaris-specific command: +

+ +

+
maint info sol-threads +
+ +Display info on Solaris user threads. +
+

+ +

+ +
thread threadno +
Make thread number threadno the current thread. The command +argument threadno is the internal GDB thread number, as +shown in the first field of the `info threads' display. +GDB responds by displaying the system identifier of the thread +you selected, and its current stack frame summary: +

+ +
 
(gdb) thread 2
+[Switching to process 35 thread 23]
+0x34e5 in sigpause ()
+

+ +As with the `[New ...]' message, the form of the text after +`Switching to' depends on your system's conventions for identifying +threads. +

+ + + +

thread apply [threadno] [all] command +
The thread apply command allows you to apply the named +command to one or more threads. Specify the numbers of the +threads that you want affected with the command argument +threadno. It can be a single thread number, one of the numbers +shown in the first field of the `info threads' display; or it +could be a range of thread numbers, as in 2-4. To apply a +command to all threads, type thread apply all command. +

+ + + +

set print thread-events +
set print thread-events on +
set print thread-events off +
The set print thread-events command allows you to enable or +disable printing of messages when GDB notices that new threads have +started or that threads have exited. By default, these messages will +be printed if detection of these events is supported by the target. +Note that these messages cannot be disabled on all targets. +

+ + +

show print thread-events +
Show whether messages will be printed when GDB detects that threads +have started and exited. +
+

+ + + + +Whenever GDB stops your program, due to a breakpoint or a +signal, it automatically selects the thread where that breakpoint or +signal happened. GDB alerts you to the context switch with a +message of the form `[Switching to systag]' to identify the +thread. +

+ +See section Stopping and Starting Multi-thread Programs, for +more information about how GDB behaves when you stop and start +programs with multiple threads. +

+ +See section Setting Watchpoints, for information about +watchpoints in programs with multiple threads. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.10 Debugging Programs with Multiple Processes

+ +

+ + + + +On most systems, GDB has no special support for debugging +programs which create additional processes using the fork +function. When a program forks, GDB will continue to debug the +parent process and the child process will run unimpeded. If you have +set a breakpoint in any code which the child then executes, the child +will get a SIGTRAP signal which (unless it catches the signal) +will cause it to terminate. +

+ +However, if you want to debug the child process there is a workaround +which isn't too painful. Put a call to sleep in the code which +the child process executes after the fork. It may be useful to sleep +only if a certain environment variable is set, or a certain file exists, +so that the delay need not occur when you don't want to run GDB +on the child. While the child is sleeping, use the ps program to +get its process ID. Then tell GDB (a new invocation of +GDB if you are also debugging the parent process) to attach to +the child process (see section 4.7 Debugging an Already-running Process). From that point on you can debug +the child process just like any other process which you attached to. +

+ +On some systems, GDB provides support for debugging programs that +create additional processes using the fork or vfork functions. +Currently, the only platforms with this feature are HP-UX (11.x and later +only?) and GNU/Linux (kernel version 2.5.60 and later). +

+ +By default, when a program forks, GDB will continue to debug +the parent process and the child process will run unimpeded. +

+ +If you want to follow the child process instead of the parent process, +use the command set follow-fork-mode. +

+ +

+ +
set follow-fork-mode mode +
Set the debugger response to a program call of fork or +vfork. A call to fork or vfork creates a new +process. The mode argument can be: +

+ +

+
parent +
The original process is debugged after a fork. The child process runs +unimpeded. This is the default. +

+ +

child +
The new process is debugged after a fork. The parent process runs +unimpeded. +

+ +

+

+ + +

show follow-fork-mode +
Display the current debugger response to a fork or vfork call. +
+

+ + +On Linux, if you want to debug both the parent and child processes, use the +command set detach-on-fork. +

+ +

+ +
set detach-on-fork mode +
Tells gdb whether to detach one of the processes after a fork, or +retain debugger control over them both. +

+ +

+
on +
The child process (or parent process, depending on the value of +follow-fork-mode) will be detached and allowed to run +independently. This is the default. +

+ +

off +
Both processes will be held under the control of GDB. +One process (child or parent, depending on the value of +follow-fork-mode) is debugged as usual, while the other +is held suspended. +

+ +

+

+ + +

show detach-on-fork +
Show whether detach-on-fork mode is on/off. +
+

+ +If you choose to set `detach-on-fork' mode off, then +GDB will retain control of all forked processes (including +nested forks). You can list the forked processes under the control of +GDB by using the info forks command, and switch +from one fork to another by using the fork command. +

+ +

+ +
info forks +
Print a list of all forked processes under the control of GDB. +The listing will include a fork id, a process id, and the current +position (program counter) of the process. +

+ + +

fork fork-id +
Make fork number fork-id the current process. The argument +fork-id is the internal fork number assigned by GDB, +as shown in the first field of the `info forks' display. +

+ + +

process process-id +
Make process number process-id the current process. The +argument process-id must be one that is listed in the output of +`info forks'. +

+ +

+

+ +To quit debugging one of the forked processes, you can either detach +from it by using the detach fork command (allowing it to +run independently), or delete (and kill) it using the +delete fork command. +

+ +

+ +
detach fork fork-id +
Detach from the process identified by GDB fork number +fork-id, and remove it from the fork list. The process will be +allowed to run independently. +

+ + +

delete fork fork-id +
Kill the process identified by GDB fork number fork-id, +and remove it from the fork list. +

+ +

+

+ +If you ask to debug a child process and a vfork is followed by an +exec, GDB executes the new target up to the first +breakpoint in the new target. If you have a breakpoint set on +main in your original program, the breakpoint will also be set on +the child process's main. +

+ +When a child process is spawned by vfork, you cannot debug the +child or parent until an exec call completes. +

+ +If you issue a run command to GDB after an exec +call executes, the new target restarts. To restart the parent process, +use the file command with the parent executable name as its +argument. +

+ +You can use the catch command to make GDB stop whenever +a fork, vfork, or exec call is made. See section Setting Catchpoints. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.11 Setting a Bookmark to Return to Later

+ +

+ + + + + + +

+ +On certain operating systems(2), GDB is able to save a snapshot of a +program's state, called a checkpoint, and come back to it +later. +

+ +Returning to a checkpoint effectively undoes everything that has +happened in the program since the checkpoint was saved. This +includes changes in memory, registers, and even (within some limits) +system state. Effectively, it is like going back in time to the +moment when the checkpoint was saved. +

+ +Thus, if you're stepping thru a program and you think you're +getting close to the point where things go wrong, you can save +a checkpoint. Then, if you accidentally go too far and miss +the critical statement, instead of having to restart your program +from the beginning, you can just go back to the checkpoint and +start again from there. +

+ +This can be especially useful if it takes a lot of time or +steps to reach the point where you think the bug occurs. +

+ +To use the checkpoint/restart method of debugging: +

+ +

+ +
checkpoint +
Save a snapshot of the debugged program's current execution state. +The checkpoint command takes no arguments, but each checkpoint +is assigned a small integer id, similar to a breakpoint id. +

+ + +

info checkpoints +
List the checkpoints that have been saved in the current debugging +session. For each checkpoint, the following information will be +listed: +

+ +

+
Checkpoint ID +
Process ID +
Code Address +
Source line, or label +
+

+ + +

restart checkpoint-id +
Restore the program state that was saved as checkpoint number +checkpoint-id. All program variables, registers, stack frames +etc. will be returned to the values that they had when the checkpoint +was saved. In essence, gdb will "wind back the clock" to the point +in time when the checkpoint was saved. +

+ +Note that breakpoints, GDB variables, command history etc. +are not affected by restoring a checkpoint. In general, a checkpoint +only restores things that reside in the program being debugged, not in +the debugger. +

+ + +

delete checkpoint checkpoint-id +
Delete the previously-saved checkpoint identified by checkpoint-id. +

+ +

+

+ +Returning to a previously saved checkpoint will restore the user state +of the program being debugged, plus a significant subset of the system +(OS) state, including file pointers. It won't "un-write" data from +a file, but it will rewind the file pointer to the previous location, +so that the previously written data can be overwritten. For files +opened in read mode, the pointer will also be restored so that the +previously read data can be read again. +

+ +Of course, characters that have been sent to a printer (or other +external device) cannot be "snatched back", and characters received +from eg. a serial device can be removed from internal program buffers, +but they cannot be "pushed back" into the serial pipeline, ready to +be received again. Similarly, the actual contents of files that have +been changed cannot be restored (at this time). +

+ +However, within those constraints, you actually can "rewind" your +program to a previously saved point in time, and begin debugging it +again -- and you can change the course of events so as to debug a +different execution path this time. +

+ + +Finally, there is one bit of internal program state that will be +different when you return to a checkpoint -- the program's process +id. Each checkpoint will have a unique process id (or pid), +and each will be different from the program's original pid. +If your program has saved a local copy of its process id, this could +potentially pose a problem. +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4.11.1 A Non-obvious Benefit of Using Checkpoints

+ +

+ +On some systems such as GNU/Linux, address space randomization +is performed on new processes for security reasons. This makes it +difficult or impossible to set a breakpoint, or watchpoint, on an +absolute address if you have to restart the program, since the +absolute location of a symbol will change from one execution to the +next. +

+ +A checkpoint, however, is an identical copy of a process. +Therefore if you create a checkpoint at (eg.) the start of main, +and simply return to that checkpoint instead of restarting the +process, you can avoid the effects of address randomization and +your symbols will all stay in the same place. +

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_50.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_50.html new file mode 100644 index 0000000..288eb36 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_50.html @@ -0,0 +1,259 @@ + + + + + +Debugging with GDB: Index: Z + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Index: Z

+
Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ + + + + + + + + + + + + + + + + + + +
Index Entry Section

Z
`z' packetD.2 Packets
`Z' packetsD.2 Packets
`z0' packetD.2 Packets
`Z0' packetD.2 Packets
`Z1' packetD.2 Packets
`z1' packetD.2 Packets
`z2' packetD.2 Packets
`Z2' packetD.2 Packets
`Z3' packetD.2 Packets
`z3' packetD.2 Packets
`z4' packetD.2 Packets
`Z4' packetD.2 Packets
Z800018.3.10 Zilog Z8000
Zilog Z8000 simulator18.3.10 Zilog Z8000

Jump to:   ! +   +" +   +# +   +$ +   +- +   +. +   +/ +   +: +   +< +   +? +   +@ +   +^ +   +_ +   +{ +   +
+A +   +B +   +C +   +D +   +E +   +F +   +G +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +U +   +V +   +W +   +X +   +Y +   +Z +   +

+ +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_6.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_6.html new file mode 100644 index 0000000..771442d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_6.html @@ -0,0 +1,2160 @@ + + + + + +Debugging with GDB: Stopping + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5. Stopping and Continuing

+ +

+ +The principal purposes of using a debugger are so that you can stop your +program before it terminates; or so that, if your program runs into +trouble, you can investigate and find out why. +

+ +Inside GDB, your program may stop for any of several reasons, +such as a signal, a breakpoint, or reaching a new line after a +GDB command such as step. You may then examine and +change variables, set new breakpoints or remove old ones, and then +continue execution. Usually, the messages shown by GDB provide +ample explanation of the status of your program--but you can also +explicitly request this information at any time. +

+ +

+ +
info program +
Display information about the status of your program: whether it is +running or not, what process it is, and why it stopped. +
+

+ +

+ + + + +
5.1 Breakpoints, Watchpoints, and Catchpoints  Breakpoints, watchpoints, and catchpoints
5.2 Continuing and Stepping  Resuming execution
5.3 Signals  
5.4 Stopping and Starting Multi-thread Programs  Stopping and starting multi-thread programs
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1 Breakpoints, Watchpoints, and Catchpoints

+ +

+ + +A breakpoint makes your program stop whenever a certain point in +the program is reached. For each breakpoint, you can add conditions to +control in finer detail whether your program stops. You can set +breakpoints with the break command and its variants (see section Setting Breakpoints), to specify the place where your program +should stop by line number, function name or exact address in the +program. +

+ +On some systems, you can set breakpoints in shared libraries before +the executable is run. There is a minor limitation on HP-UX systems: +you must wait until the executable is run in order to set breakpoints +in shared library routines that are not called directly by the program +(for example, routines that are arguments in a pthread_create +call). +

+ + + + + + +A watchpoint is a special breakpoint that stops your program +when the value of an expression changes. The expression may be a value +of a variable, or it could involve values of one or more variables +combined by operators, such as `a + b'. This is sometimes called +data breakpoints. You must use a different command to set +watchpoints (see section Setting Watchpoints), but aside +from that, you can manage a watchpoint like any other breakpoint: you +enable, disable, and delete both breakpoints and watchpoints using the +same commands. +

+ +You can arrange to have values from your program displayed automatically +whenever GDB stops at a breakpoint. See section Automatic Display. +

+ + + +A catchpoint is another special breakpoint that stops your program +when a certain kind of event occurs, such as the throwing of a C++ +exception or the loading of a library. As with watchpoints, you use a +different command to set a catchpoint (see section Setting Catchpoints), but aside from that, you can manage a catchpoint like any +other breakpoint. (To stop when your program receives a signal, use the +handle command; see Signals.) +

+ + + +GDB assigns a number to each breakpoint, watchpoint, or +catchpoint when you create it; these numbers are successive integers +starting with one. In many of the commands for controlling various +features of breakpoints you use the breakpoint number to say which +breakpoint you want to change. Each breakpoint may be enabled or +disabled; if disabled, it has no effect on your program until you +enable it again. +

+ + + +Some GDB commands accept a range of breakpoints on which to +operate. A breakpoint range is either a single breakpoint number, like +`5', or two such numbers, in increasing order, separated by a +hyphen, like `5-7'. When a breakpoint range is given to a command, +all breakpoints in that range are operated on. +

+ +

+ + + + + + + + + + +
5.1.1 Setting Breakpoints  Setting breakpoints
5.1.2 Setting Watchpoints  Setting watchpoints
5.1.3 Setting Catchpoints  Setting catchpoints
5.1.4 Deleting Breakpoints  Deleting breakpoints
5.1.5 Disabling Breakpoints  Disabling breakpoints
5.1.6 Break Conditions  Break conditions
5.1.7 Breakpoint Command Lists  Breakpoint command lists
5.1.8 Breakpoint Menus  Breakpoint menus
5.1.9 "Cannot insert breakpoints"  
5.1.10 "Breakpoint address adjusted..."  
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.1 Setting Breakpoints

+ +

+ + + + + +Breakpoints are set with the break command (abbreviated +b). The debugger convenience variable `$bpnum' records the +number of the breakpoint you've set most recently; see Convenience Variables, for a discussion of what you can do with +convenience variables. +

+ +

+
break location +
Set a breakpoint at the given location, which can specify a +function name, a line number, or an address of an instruction. +(See section 7.2 Specifying a Location, for a list of all the possible ways to +specify a location.) The breakpoint will stop your program just +before it executes any of the code in the specified location. +

+ +When using source languages that permit overloading of symbols, such as +C++, a function name may refer to more than one possible place to break. +See section Breakpoint Menus, for a discussion of that situation. +

+ +

break +
When called without any arguments, break sets a breakpoint at +the next instruction to be executed in the selected stack frame +(see section Examining the Stack). In any selected frame but the +innermost, this makes your program stop as soon as control +returns to that frame. This is similar to the effect of a +finish command in the frame inside the selected frame--except +that finish does not leave an active breakpoint. If you use +break without an argument in the innermost frame, GDB stops +the next time it reaches the current location; this may be useful +inside loops. +

+ +GDB normally ignores breakpoints when it resumes execution, until at +least one instruction has been executed. If it did not do this, you +would be unable to proceed past a breakpoint without first disabling the +breakpoint. This rule applies whether or not the breakpoint already +existed when your program stopped. +

+ +

break ... if cond +
Set a breakpoint with condition cond; evaluate the expression +cond each time the breakpoint is reached, and stop only if the +value is nonzero--that is, if cond evaluates as true. +`...' stands for one of the possible arguments described +above (or no argument) specifying where to break. See section Break Conditions, for more information on breakpoint conditions. +

+ + +

tbreak args +
Set a breakpoint enabled only for one stop. args are the +same as for the break command, and the breakpoint is set in the same +way, but the breakpoint is automatically deleted after the first time your +program stops there. See section Disabling Breakpoints. +

+ + + +

hbreak args +
Set a hardware-assisted breakpoint. args are the same as for the +break command and the breakpoint is set in the same way, but the +breakpoint requires hardware support and some target hardware may not +have this support. The main purpose of this is EPROM/ROM code +debugging, so you can set a breakpoint at an instruction without +changing the instruction. This can be used with the new trap-generation +provided by SPARClite DSU and most x86-based targets. These targets +will generate traps when a program accesses some data or instruction +address that is assigned to the debug registers. However the hardware +breakpoint registers can take a limited number of breakpoints. For +example, on the DSU, only two data breakpoints can be set at a time, and +GDB will reject this command if more than two are used. Delete +or disable unused hardware breakpoints before setting new ones +(see section Disabling Breakpoints). +See section Break Conditions. +For remote targets, you can restrict the number of hardware +breakpoints GDB will use, see set remote hardware-breakpoint-limit. +

+ + +

thbreak args +
Set a hardware-assisted breakpoint enabled only for one stop. args +are the same as for the hbreak command and the breakpoint is set in +the same way. However, like the tbreak command, +the breakpoint is automatically deleted after the +first time your program stops there. Also, like the hbreak +command, the breakpoint requires hardware support and some target hardware +may not have this support. See section Disabling Breakpoints. +See also Break Conditions. +

+ + + + + +

rbreak regex +
Set breakpoints on all functions matching the regular expression +regex. This command sets an unconditional breakpoint on all +matches, printing a list of all breakpoints it set. Once these +breakpoints are set, they are treated just like the breakpoints set with +the break command. You can delete them, disable them, or make +them conditional the same way as any other breakpoint. +

+ +The syntax of the regular expression is the standard one used with tools +like `grep'. Note that this is different from the syntax used by +shells, so for instance foo* matches all functions that include +an fo followed by zero or more os. There is an implicit +.* leading and trailing the regular expression you supply, so to +match only functions that begin with foo, use ^foo. +

+ + +When debugging C++ programs, rbreak is useful for setting +breakpoints on overloaded functions that are not members of any special +classes. +

+ + +The rbreak command can be used to set breakpoints in +all the functions in a program, like this: +

+ +
 
(gdb) rbreak .
+

+ + + +

info breakpoints [n] +
info break [n] +
info watchpoints [n] +
Print a table of all breakpoints, watchpoints, and catchpoints set and +not deleted. Optional argument n means print information only +about the specified breakpoint (or watchpoint or catchpoint). For +each breakpoint, following columns are printed: +

+ +

+
Breakpoint Numbers +
Type +
Breakpoint, watchpoint, or catchpoint. +
Disposition +
Whether the breakpoint is marked to be disabled or deleted when hit. +
Enabled or Disabled +
Enabled breakpoints are marked with `y'. `n' marks breakpoints +that are not enabled. +
Address +
Where the breakpoint is in your program, as a memory address. For a +pending breakpoint whose address is not yet known, this field will +contain `<PENDING>'. Such breakpoint won't fire until a shared +library that has the symbol or line referred by breakpoint is loaded. +See below for details. A breakpoint with several locations will +have `<MULTIPLE>' in this field--see below for details. +
What +
Where the breakpoint is in the source for your program, as a file and +line number. For a pending breakpoint, the original string passed to +the breakpoint command will be listed as it cannot be resolved until +the appropriate shared library is loaded in the future. +
+

+ +If a breakpoint is conditional, info break shows the condition on +the line following the affected breakpoint; breakpoint commands, if any, +are listed after that. A pending breakpoint is allowed to have a condition +specified for it. The condition is not parsed for validity until a shared +library is loaded that allows the pending breakpoint to resolve to a +valid location. +

+ +info break with a breakpoint +number n as argument lists only that breakpoint. The +convenience variable $_ and the default examining-address for +the x command are set to the address of the last breakpoint +listed (see section Examining Memory). +

+ +info break displays a count of the number of times the breakpoint +has been hit. This is especially useful in conjunction with the +ignore command. You can ignore a large number of breakpoint +hits, look at the breakpoint info to see how many times the breakpoint +was hit, and then run again, ignoring one less than that number. This +will get you quickly to the last hit of that breakpoint. +

+

+ +GDB allows you to set any number of breakpoints at the same place in +your program. There is nothing silly or meaningless about this. When +the breakpoints are conditional, this is even useful +(see section Break Conditions). +

+ +It is possible that a breakpoint corresponds to several locations +in your program. Examples of this situation are: +

+ +

    + +
  • +For a C++ constructor, the GCC compiler generates several +instances of the function body, used in different cases. +

    + +

  • +For a C++ template function, a given line in the function can +correspond to any number of instantiations. +

    + +

  • +For an inlined function, a given source line can correspond to +several places where that function is inlined. +

    + +

+

+ +In all those cases, GDB will insert a breakpoint at all +the relevant locations. +

+ +A breakpoint with multiple locations is displayed in the breakpoint +table using several rows--one header row, followed by one row for +each breakpoint location. The header row has `<MULTIPLE>' in the +address column. The rows for individual locations contain the actual +addresses for locations, and show the functions to which those +locations belong. The number column for a location is of the form +breakpoint-number.location-number. +

+ +For example: +

+ +
 
Num     Type           Disp Enb  Address    What
+1       breakpoint     keep y    <MULTIPLE>
+        stop only if i==1
+        breakpoint already hit 1 time
+1.1                         y    0x080486a2 in void foo<int>() at t.cc:8
+1.2                         y    0x080486ca in void foo<double>() at t.cc:8
+

+ +Each location can be individually enabled or disabled by passing +breakpoint-number.location-number as argument to the +enable and disable commands. Note that you cannot +delete the individual locations from the list, you can only delete the +entire list of locations that belong to their parent breakpoint (with +the delete num command, where num is the number of +the parent breakpoint, 1 in the above example). Disabling or enabling +the parent breakpoint (see section 5.1.5 Disabling Breakpoints) affects all of the locations +that belong to that breakpoint. +

+ + +It's quite common to have a breakpoint inside a shared library. +Shared libraries can be loaded and unloaded explicitly, +and possibly repeatedly, as the program is executed. To support +this use case, GDB updates breakpoint locations whenever +any shared library is loaded or unloaded. Typically, you would +set a breakpoint in a shared library at the beginning of your +debugging session, when the library is not loaded, and when the +symbols from the library are not available. When you try to set +breakpoint, GDB will ask you if you want to set +a so called pending breakpoint---breakpoint whose address +is not yet resolved. +

+ +After the program is run, whenever a new shared library is loaded, +GDB reevaluates all the breakpoints. When a newly loaded +shared library contains the symbol or line referred to by some +pending breakpoint, that breakpoint is resolved and becomes an +ordinary breakpoint. When a library is unloaded, all breakpoints +that refer to its symbols or source lines become pending again. +

+ +This logic works for breakpoints with multiple locations, too. For +example, if you have a breakpoint in a C++ template function, and +a newly loaded shared library has an instantiation of that template, +a new location is added to the list of locations for the breakpoint. +

+ +Except for having unresolved address, pending breakpoints do not +differ from regular breakpoints. You can set conditions or commands, +enable and disable them and perform other breakpoint operations. +

+ +GDB provides some additional commands for controlling what +happens when the `break' command cannot resolve breakpoint +address specification to an address: +

+ + + +

+
set breakpoint pending auto +
This is the default behavior. When GDB cannot find the breakpoint +location, it queries you whether a pending breakpoint should be created. +

+ +

set breakpoint pending on +
This indicates that an unrecognized breakpoint location should automatically +result in a pending breakpoint being created. +

+ +

set breakpoint pending off +
This indicates that pending breakpoints are not to be created. Any +unrecognized breakpoint location results in an error. This setting does +not affect any pending breakpoints previously created. +

+ +

show breakpoint pending +
Show the current behavior setting for creating pending breakpoints. +
+

+ +The settings above only affect the break command and its +variants. Once breakpoint is set, it will be automatically updated +as shared libraries are loaded and unloaded. +

+ + +For some targets, GDB can automatically decide if hardware or +software breakpoints should be used, depending on whether the +breakpoint address is read-only or read-write. This applies to +breakpoints set with the break command as well as to internal +breakpoints set by commands like next and finish. For +breakpoints set with hbreak, GDB will always use hardware +breakpoints. +

+ +You can control this automatic behaviour with the following commands:: +

+ + + +

+
set breakpoint auto-hw on +
This is the default behavior. When GDB sets a breakpoint, it +will try to use the target memory map to decide if software or hardware +breakpoint must be used. +

+ +

set breakpoint auto-hw off +
This indicates GDB should not automatically select breakpoint +type. If the target provides a memory map, GDB will warn when +trying to set software breakpoint at a read-only address. +
+

+ + + +GDB itself sometimes sets breakpoints in your program for +special purposes, such as proper handling of longjmp (in C +programs). These internal breakpoints are assigned negative numbers, +starting with -1; `info breakpoints' does not display them. +You can see these breakpoints with the GDB maintenance command +`maint info breakpoints' (see maint info breakpoints). +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.2 Setting Watchpoints

+ +

+ + +You can use a watchpoint to stop execution whenever the value of an +expression changes, without having to predict a particular place where +this may happen. (This is sometimes called a data breakpoint.) +The expression may be as simple as the value of a single variable, or +as complex as many variables combined by operators. Examples include: +

+ +

    +
  • +A reference to the value of a single variable. +

    + +

  • +An address cast to an appropriate data type. For example, +`*(int *)0x12345678' will watch a 4-byte region at the specified +address (assuming an int occupies 4 bytes). +

    + +

  • +An arbitrarily complex expression, such as `a*b + c/d'. The +expression can use any operators valid in the program's native +language (see section 12. Using GDB with Different Languages). +
+

+ + + +Depending on your system, watchpoints may be implemented in software or +hardware. GDB does software watchpointing by single-stepping your +program and testing the variable's value each time, which is hundreds of +times slower than normal execution. (But this may still be worth it, to +catch errors where you have no clue what part of your program is the +culprit.) +

+ +On some systems, such as HP-UX, PowerPC, GNU/Linux and most other +x86-based targets, GDB includes support for hardware +watchpoints, which do not slow down the running of your program. +

+ +

+ +
watch expr [thread threadnum] +
Set a watchpoint for an expression. GDB will break when the +expression expr is written into by the program and its value +changes. The simplest (and the most popular) use of this command is +to watch the value of a single variable: +

+ +
 
(gdb) watch foo
+

+ +If the command includes a [thread threadnum] +clause, GDB breaks only when the thread identified by +threadnum changes the value of expr. If any other threads +change the value of expr, GDB will not break. Note +that watchpoints restricted to a single thread in this way only work +with Hardware Watchpoints. +

+ + +

rwatch expr [thread threadnum] +
Set a watchpoint that will break when the value of expr is read +by the program. +

+ + +

awatch expr [thread threadnum] +
Set a watchpoint that will break when expr is either read from +or written into by the program. +

+ + +

info watchpoints +
This command prints a list of watchpoints, breakpoints, and catchpoints; +it is the same as info break (see section 5.1.1 Setting Breakpoints). +
+

+ +GDB sets a hardware watchpoint if possible. Hardware +watchpoints execute very quickly, and the debugger reports a change in +value at the exact instruction where the change occurs. If GDB +cannot set a hardware watchpoint, it sets a software watchpoint, which +executes more slowly and reports the change in value at the next +statement, not the instruction, after the change occurs. +

+ + +You can force GDB to use only software watchpoints with the +set can-use-hw-watchpoints 0 command. With this variable set to +zero, GDB will never try to use hardware watchpoints, even if +the underlying system supports them. (Note that hardware-assisted +watchpoints that were set before setting +can-use-hw-watchpoints to zero will still use the hardware +mechanism of watching expression values.) +

+ +

+
set can-use-hw-watchpoints +
+Set whether or not to use hardware watchpoints. +

+ +

show can-use-hw-watchpoints +
+Show the current mode of using hardware watchpoints. +
+

+ +For remote targets, you can restrict the number of hardware +watchpoints GDB will use, see set remote hardware-breakpoint-limit. +

+ +When you issue the watch command, GDB reports +

+ +
 
Hardware watchpoint num: expr
+

+ +if it was able to set a hardware watchpoint. +

+ +Currently, the awatch and rwatch commands can only set +hardware watchpoints, because accesses to data that don't change the +value of the watched expression cannot be detected without examining +every instruction as it is being executed, and GDB does not do +that currently. If GDB finds that it is unable to set a +hardware breakpoint with the awatch or rwatch command, it +will print a message like this: +

+ +
 
Expression cannot be implemented with read/access watchpoint.
+

+ +Sometimes, GDB cannot set a hardware watchpoint because the +data type of the watched expression is wider than what a hardware +watchpoint on the target machine can handle. For example, some systems +can only watch regions that are up to 4 bytes wide; on such systems you +cannot set hardware watchpoints for an expression that yields a +double-precision floating-point number (which is typically 8 bytes +wide). As a work-around, it might be possible to break the large region +into a series of smaller ones and watch them with separate watchpoints. +

+ +If you set too many hardware watchpoints, GDB might be unable +to insert all of them when you resume the execution of your program. +Since the precise number of active watchpoints is unknown until such +time as the program is about to be resumed, GDB might not be +able to warn you about this when you set the watchpoints, and the +warning will be printed only when the program is resumed: +

+ +
 
Hardware watchpoint num: Could not insert watchpoint
+

+ +If this happens, delete or disable some of the watchpoints. +

+ +Watching complex expressions that reference many variables can also +exhaust the resources available for hardware-assisted watchpoints. +That's because GDB needs to watch every variable in the +expression with separately allocated resources. +

+ +The SPARClite DSU will generate traps when a program accesses some data +or instruction address that is assigned to the debug registers. For the +data addresses, DSU facilitates the watch command. However the +hardware breakpoint registers can only take two data watchpoints, and +both watchpoints must be the same kind. For example, you can set two +watchpoints with watch commands, two with rwatch commands, +or two with awatch commands, but you cannot set one +watchpoint with one command and the other with a different command. +GDB will reject the command if you try to mix watchpoints. +Delete or disable unused watchpoint commands before setting new ones. +

+ +If you call a function interactively using print or call, +any watchpoints you have set will be inactive until GDB reaches another +kind of breakpoint or the call completes. +

+ +GDB automatically deletes watchpoints that watch local +(automatic) variables, or expressions that involve such variables, when +they go out of scope, that is, when the execution leaves the block in +which these variables were defined. In particular, when the program +being debugged terminates, all local variables go out of scope, +and so only watchpoints that watch global variables remain set. If you +rerun the program, you will need to set all such watchpoints again. One +way of doing that would be to set a code breakpoint at the entry to the +main function and when it breaks, set all the watchpoints. +

+ + + +In multi-threaded programs, watchpoints will detect changes to the +watched expression from every thread. +

+ +

+Warning: In multi-threaded programs, software watchpoints +have only limited usefulness. If GDB creates a software +watchpoint, it can only watch the value of an expression in a +single thread. If you are confident that the expression can only +change due to the current thread's activity (and if you are also +confident that no other thread can become current), then you can use +software watchpoints as usual. However, GDB may not notice +when a non-current thread's activity changes the expression. (Hardware +watchpoints, in contrast, watch an expression in all threads.) +
+

+ +See set remote hardware-watchpoint-limit. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.3 Setting Catchpoints

+ +

+ +You can use catchpoints to cause the debugger to stop for certain +kinds of program events, such as C++ exceptions or the loading of a +shared library. Use the catch command to set a catchpoint. +

+ +

+ +
catch event +
Stop when event occurs. event can be any of the following: +
+
throw +
+The throwing of a C++ exception. +

+ +

catch +
The catching of a C++ exception. +

+ +

exception +
+ +An Ada exception being raised. If an exception name is specified +at the end of the command (eg catch exception Program_Error), +the debugger will stop only when this specific exception is raised. +Otherwise, the debugger stops execution when any Ada exception is raised. +

+ +

exception unhandled +
An exception that was raised but is not handled by the program. +

+ +

assert +
A failed Ada assertion. +

+ +

exec +
+A call to exec. This is currently only available for HP-UX +and GNU/Linux. +

+ +

fork +
A call to fork. This is currently only available for HP-UX +and GNU/Linux. +

+ +

vfork +
A call to vfork. This is currently only available for HP-UX +and GNU/Linux. +

+ +

load +
load libname +
+The dynamic loading of any shared library, or the loading of the library +libname. This is currently only available for HP-UX. +

+ +

unload +
unload libname +
The unloading of any dynamically loaded shared library, or the unloading +of the library libname. This is currently only available for HP-UX. +
+

+ +

tcatch event +
Set a catchpoint that is enabled only for one stop. The catchpoint is +automatically deleted after the first time the event is caught. +

+ +

+

+ +Use the info break command to list the current catchpoints. +

+ +There are currently some limitations to C++ exception handling +(catch throw and catch catch) in GDB: +

+ +

    +
  • +If you call a function interactively, GDB normally returns +control to you when the function has finished executing. If the call +raises an exception, however, the call may bypass the mechanism that +returns control to you and cause your program either to abort or to +simply continue running until it hits a breakpoint, catches a signal +that GDB is listening for, or exits. This is the case even if +you set a catchpoint for the exception; catchpoints on exceptions are +disabled within interactive calls. +

    + +

  • +You cannot raise an exception interactively. +

    + +

  • +You cannot install an exception handler interactively. +
+

+ + +Sometimes catch is not the best way to debug exception handling: +if you need to know exactly where an exception is raised, it is better to +stop before the exception handler is called, since that way you +can see the stack before any unwinding takes place. If you set a +breakpoint in an exception handler instead, it may not be easy to find +out where the exception was raised. +

+ +To stop just before an exception handler is called, you need some +knowledge of the implementation. In the case of GNU C++, exceptions are +raised by calling a library function named __raise_exception +which has the following ANSI C interface: +

+ +
 
    /* addr is where the exception identifier is stored.
+       id is the exception identifier.  */
+    void __raise_exception (void **addr, void *id);
+

+ +To make the debugger catch all exceptions before any stack +unwinding takes place, set a breakpoint on __raise_exception +(see section Breakpoints; Watchpoints; and Exceptions). +

+ +With a conditional breakpoint (see section Break Conditions) +that depends on the value of id, you can stop your program when +a specific exception is raised. You can use multiple conditional +breakpoints to stop your program when any of a number of exceptions are +raised. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.4 Deleting Breakpoints

+ +

+ + + +It is often necessary to eliminate a breakpoint, watchpoint, or +catchpoint once it has done its job and you no longer want your program +to stop there. This is called deleting the breakpoint. A +breakpoint that has been deleted no longer exists; it is forgotten. +

+ +With the clear command you can delete breakpoints according to +where they are in your program. With the delete command you can +delete individual breakpoints, watchpoints, or catchpoints by specifying +their breakpoint numbers. +

+ +It is not necessary to delete a breakpoint to proceed past it. GDB +automatically ignores breakpoints on the first instruction to be executed +when you continue execution without changing the execution address. +

+ +

+ +
clear +
Delete any breakpoints at the next instruction to be executed in the +selected stack frame (see section Selecting a Frame). When +the innermost frame is selected, this is a good way to delete a +breakpoint where your program just stopped. +

+ +

clear location +
Delete any breakpoints set at the specified location. +See section 7.2 Specifying a Location, for the various forms of location; the +most useful ones are listed below: +

+ +

+
clear function +
clear filename:function +
Delete any breakpoints set at entry to the named function. +

+ +

clear linenum +
clear filename:linenum +
Delete any breakpoints set at or within the code of the specified +linenum of the specified filename. +
+

+ + + + +

delete [breakpoints] [range...] +
Delete the breakpoints, watchpoints, or catchpoints of the breakpoint +ranges specified as arguments. If no argument is specified, delete all +breakpoints (GDB asks confirmation, unless you have set +confirm off). You can abbreviate this command as d. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.5 Disabling Breakpoints

+ +

+ + +Rather than deleting a breakpoint, watchpoint, or catchpoint, you might +prefer to disable it. This makes the breakpoint inoperative as if +it had been deleted, but remembers the information on the breakpoint so +that you can enable it again later. +

+ +You disable and enable breakpoints, watchpoints, and catchpoints with +the enable and disable commands, optionally specifying one +or more breakpoint numbers as arguments. Use info break or +info watch to print a list of breakpoints, watchpoints, and +catchpoints if you do not know which numbers to use. +

+ +Disabling and enabling a breakpoint that has multiple locations +affects all of its locations. +

+ +A breakpoint, watchpoint, or catchpoint can have any of four different +states of enablement: +

+ +

    +
  • +Enabled. The breakpoint stops your program. A breakpoint set +with the break command starts out in this state. +
  • +Disabled. The breakpoint has no effect on your program. +
  • +Enabled once. The breakpoint stops your program, but then becomes +disabled. +
  • +Enabled for deletion. The breakpoint stops your program, but +immediately after it does so it is deleted permanently. A breakpoint +set with the tbreak command starts out in this state. +
+

+ +You can use the following commands to enable or disable breakpoints, +watchpoints, and catchpoints: +

+ +

+ + +
disable [breakpoints] [range...] +
Disable the specified breakpoints--or all breakpoints, if none are +listed. A disabled breakpoint has no effect but is not forgotten. All +options such as ignore-counts, conditions and commands are remembered in +case the breakpoint is enabled again later. You may abbreviate +disable as dis. +

+ + +

enable [breakpoints] [range...] +
Enable the specified breakpoints (or all defined breakpoints). They +become effective once again in stopping your program. +

+ +

enable [breakpoints] once range... +
Enable the specified breakpoints temporarily. GDB disables any +of these breakpoints immediately after stopping your program. +

+ +

enable [breakpoints] delete range... +
Enable the specified breakpoints to work once, then die. GDB +deletes any of these breakpoints as soon as your program stops there. +Breakpoints set by the tbreak command start out in this state. +
+

+ +Except for a breakpoint set with tbreak (see section Setting Breakpoints), breakpoints that you set are initially enabled; +subsequently, they become disabled or enabled only when you use one of +the commands above. (The command until can set and delete a +breakpoint of its own, but it does not change the state of your other +breakpoints; see Continuing and Stepping.) +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.6 Break Conditions

+ +

+ +The simplest sort of breakpoint breaks every time your program reaches a +specified place. You can also specify a condition for a +breakpoint. A condition is just a Boolean expression in your +programming language (see section Expressions). A breakpoint with +a condition evaluates the expression each time your program reaches it, +and your program stops only if the condition is true. +

+ +This is the converse of using assertions for program validation; in that +situation, you want to stop when the assertion is violated--that is, +when the condition is false. In C, if you want to test an assertion expressed +by the condition assert, you should set the condition +`! assert' on the appropriate breakpoint. +

+ +Conditions are also accepted for watchpoints; you may not need them, +since a watchpoint is inspecting the value of an expression anyhow--but +it might be simpler, say, to just set a watchpoint on a variable name, +and specify a condition that tests whether the new value is an interesting +one. +

+ +Break conditions can have side effects, and may even call functions in +your program. This can be useful, for example, to activate functions +that log program progress, or to use your own print functions to +format special data structures. The effects are completely predictable +unless there is another enabled breakpoint at the same address. (In +that case, GDB might see the other breakpoint first and stop your +program without checking the condition of this one.) Note that +breakpoint commands are usually more convenient and flexible than break +conditions for the +purpose of performing side effects when a breakpoint is reached +(see section Breakpoint Command Lists). +

+ +Break conditions can be specified when a breakpoint is set, by using +`if' in the arguments to the break command. See section Setting Breakpoints. They can also be changed at any time +with the condition command. +

+ +You can also use the if keyword with the watch command. +The catch command does not recognize the if keyword; +condition is the only way to impose a further condition on a +catchpoint. +

+ +

+ +
condition bnum expression +
Specify expression as the break condition for breakpoint, +watchpoint, or catchpoint number bnum. After you set a condition, +breakpoint bnum stops your program only if the value of +expression is true (nonzero, in C). When you use +condition, GDB checks expression immediately for +syntactic correctness, and to determine whether symbols in it have +referents in the context of your breakpoint. If expression uses +symbols not referenced in the context of the breakpoint, GDB +prints an error message: +

+ +
 
No symbol "foo" in current context.
+

+ +GDB does +not actually evaluate expression at the time the condition +command (or a command that sets a breakpoint with a condition, like +break if ...) is given, however. See section Expressions. +

+ +

condition bnum +
Remove the condition from breakpoint number bnum. It becomes +an ordinary unconditional breakpoint. +
+

+ + +A special case of a breakpoint condition is to stop only when the +breakpoint has been reached a certain number of times. This is so +useful that there is a special way to do it, using the ignore +count of the breakpoint. Every breakpoint has an ignore count, which +is an integer. Most of the time, the ignore count is zero, and +therefore has no effect. But if your program reaches a breakpoint whose +ignore count is positive, then instead of stopping, it just decrements +the ignore count by one and continues. As a result, if the ignore count +value is n, the breakpoint does not stop the next n times +your program reaches it. +

+ +

+ +
ignore bnum count +
Set the ignore count of breakpoint number bnum to count. +The next count times the breakpoint is reached, your program's +execution does not stop; other than to decrement the ignore count, GDB +takes no action. +

+ +To make the breakpoint stop the next time it is reached, specify +a count of zero. +

+ +When you use continue to resume execution of your program from a +breakpoint, you can specify an ignore count directly as an argument to +continue, rather than using ignore. See section Continuing and Stepping. +

+ +If a breakpoint has a positive ignore count and a condition, the +condition is not checked. Once the ignore count reaches zero, +GDB resumes checking the condition. +

+ +You could achieve the effect of the ignore count with a condition such +as `$foo-- <= 0' using a debugger convenience variable that +is decremented each time. See section Convenience Variables. +

+

+ +Ignore counts apply to breakpoints, watchpoints, and catchpoints. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.7 Breakpoint Command Lists

+ +

+ + +You can give any breakpoint (or watchpoint or catchpoint) a series of +commands to execute when your program stops due to that breakpoint. For +example, you might want to print the values of certain expressions, or +enable other breakpoints. +

+ +

+ + +
commands [bnum] +
... command-list ... +
end +
Specify a list of commands for breakpoint number bnum. The commands +themselves appear on the following lines. Type a line containing just +end to terminate the commands. +

+ +To remove all commands from a breakpoint, type commands and +follow it immediately with end; that is, give no commands. +

+ +With no bnum argument, commands refers to the last +breakpoint, watchpoint, or catchpoint set (not to the breakpoint most +recently encountered). +

+

+ +Pressing RET as a means of repeating the last GDB command is +disabled within a command-list. +

+ +You can use breakpoint commands to start your program up again. Simply +use the continue command, or step, or any other command +that resumes execution. +

+ +Any other commands in the command list, after a command that resumes +execution, are ignored. This is because any time you resume execution +(even with a simple next or step), you may encounter +another breakpoint--which could have its own command list, leading to +ambiguities about which list to execute. +

+ + +If the first command you specify in a command list is silent, the +usual message about stopping at a breakpoint is not printed. This may +be desirable for breakpoints that are to print a specific message and +then continue. If none of the remaining commands print anything, you +see no sign that the breakpoint was reached. silent is +meaningful only at the beginning of a breakpoint command list. +

+ +The commands echo, output, and printf allow you to +print precisely controlled output, and are often useful in silent +breakpoints. See section Commands for Controlled Output. +

+ +For example, here is how you could use breakpoint commands to print the +value of x at entry to foo whenever x is positive. +

+ +
 
break foo if x>0
+commands
+silent
+printf "x is %d\n",x
+cont
+end
+

+ +One application for breakpoint commands is to compensate for one bug so +you can test for another. Put a breakpoint just after the erroneous line +of code, give it a condition to detect the case in which something +erroneous has been done, and give it commands to assign correct values +to any variables that need them. End with the continue command +so that your program does not stop, and start with the silent +command so that no output is produced. Here is an example: +

+ +
 
break 403
+commands
+silent
+set x = y + 4
+cont
+end
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.8 Breakpoint Menus

+ +

+ +Some programming languages (notably C++ and Objective-C) permit a +single function name +to be defined several times, for application in different contexts. +This is called overloading. When a function name is overloaded, +`break function' is not enough to tell GDB where you want +a breakpoint. You can use explicit signature of the function, as in +`break function(types)', to specify which +particular version of the function you want. Otherwise, GDB offers +you a menu of numbered choices for different possible breakpoints, and +waits for your selection with the prompt `>'. The first two +options are always `[0] cancel' and `[1] all'. Typing 1 +sets a breakpoint at each definition of function, and typing +0 aborts the break command without setting any new +breakpoints. +

+ +For example, the following session excerpt shows an attempt to set a +breakpoint at the overloaded symbol String::after. +We choose three particular definitions of that function name: +

+ +
 
(gdb) b String::after
+[0] cancel
+[1] all
+[2] file:String.cc; line number:867
+[3] file:String.cc; line number:860
+[4] file:String.cc; line number:875
+[5] file:String.cc; line number:853
+[6] file:String.cc; line number:846
+[7] file:String.cc; line number:735
+> 2 4 6
+Breakpoint 1 at 0xb26c: file String.cc, line 867.
+Breakpoint 2 at 0xb344: file String.cc, line 875.
+Breakpoint 3 at 0xafcc: file String.cc, line 846.
+Multiple breakpoints were set.
+Use the "delete" command to delete unwanted
+ breakpoints.
+(gdb)
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.9 "Cannot insert breakpoints"

+ +Under some operating systems, breakpoints cannot be used in a program if +any other process is running that program. In this situation, +attempting to run or continue a program with a breakpoint causes +GDB to print an error message: +

+ +
 
Cannot insert breakpoints.
+The same program may be running in another process.
+

+ +When this happens, you have three ways to proceed: +

+ +

    +
  1. +Remove or disable the breakpoints, then continue. +

    + +

  2. +Suspend GDB, and copy the file containing your program to a new +name. Resume GDB and use the exec-file command to specify +that GDB should run your program under that name. +Then start your program again. +

    + +

  3. +Relink your program so that the text segment is nonsharable, using the +linker option `-N'. The operating system limitation may not apply +to nonsharable executables. +
+

+ +A similar message can be printed if you request too many active +hardware-assisted breakpoints and watchpoints: +

+ +
 
Stopped; cannot insert breakpoints.
+You may have requested too many hardware breakpoints and watchpoints.
+

+ +This message is printed when you attempt to resume the program, since +only then GDB knows exactly how many hardware breakpoints and +watchpoints it needs to insert. +

+ +When this message is printed, you need to disable or remove some of the +hardware-assisted breakpoints and watchpoints, and then continue. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.1.10 "Breakpoint address adjusted..."

+ +

+ +Some processor architectures place constraints on the addresses at +which breakpoints may be placed. For architectures thus constrained, +GDB will attempt to adjust the breakpoint's address to comply +with the constraints dictated by the architecture. +

+ +One example of such an architecture is the Fujitsu FR-V. The FR-V is +a VLIW architecture in which a number of RISC-like instructions may be +bundled together for parallel execution. The FR-V architecture +constrains the location of a breakpoint instruction within such a +bundle to the instruction with the lowest address. GDB +honors this constraint by adjusting a breakpoint's address to the +first in the bundle. +

+ +It is not uncommon for optimized code to have bundles which contain +instructions from different source statements, thus it may happen that +a breakpoint's address will be adjusted from one source statement to +another. Since this adjustment may significantly alter GDB's +breakpoint related behavior from what the user expects, a warning is +printed when the breakpoint is first set and also when the breakpoint +is hit. +

+ +A warning like the one below is printed when setting a breakpoint +that's been subject to address adjustment: +

+ +
 
warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
+

+ +Such warnings are printed both for user settable and GDB's +internal breakpoints. If you see one of these warnings, you should +verify that a breakpoint set at the adjusted address will have the +desired affect. If not, the breakpoint in question may be removed and +other breakpoints may be set which will have the desired behavior. +E.g., it may be sufficient to place the breakpoint at a later +instruction. A conditional breakpoint may also be useful in some +cases to prevent the breakpoint from triggering too often. +

+ +GDB will also issue a warning when stopping at one of these +adjusted breakpoints: +

+ +
 
warning: Breakpoint 1 address previously adjusted from 0x00010414
+to 0x00010410.
+

+ +When this warning is encountered, it may be too late to take remedial +action except in cases where the breakpoint is hit earlier or more +frequently than expected. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.2 Continuing and Stepping

+ +

+ + + + +Continuing means resuming program execution until your program +completes normally. In contrast, stepping means executing just +one more "step" of your program, where "step" may mean either one +line of source code, or one machine instruction (depending on what +particular command you use). Either when continuing or when stepping, +your program may stop even sooner, due to a breakpoint or a signal. (If +it stops due to a signal, you may want to use handle, or use +`signal 0' to resume execution. See section Signals.) +

+ +

+ + + +
continue [ignore-count] +
c [ignore-count] +
fg [ignore-count] +
Resume program execution, at the address where your program last stopped; +any breakpoints set at that address are bypassed. The optional argument +ignore-count allows you to specify a further number of times to +ignore a breakpoint at this location; its effect is like that of +ignore (see section Break Conditions). +

+ +The argument ignore-count is meaningful only when your program +stopped due to a breakpoint. At other times, the argument to +continue is ignored. +

+ +The synonyms c and fg (for foreground, as the +debugged program is deemed to be the foreground program) are provided +purely for convenience, and have exactly the same behavior as +continue. +

+

+ +To resume execution at a different place, you can use return +(see section Returning from a Function) to go back to the +calling function; or jump (see section Continuing at a Different Address) to go to an arbitrary location in your program. +

+ +A typical technique for using stepping is to set a breakpoint +(see section Breakpoints; Watchpoints; and Catchpoints) at the +beginning of the function or the section of your program where a problem +is believed to lie, run your program until it stops at that breakpoint, +and then step through the suspect area, examining the variables that are +interesting, until you see the problem happen. +

+ +

+ + +
step +
Continue running your program until control reaches a different source +line, then stop it and return control to GDB. This command is +abbreviated s. +

+ +

+Warning: If you use the step command while control is +within a function that was compiled without debugging information, +execution proceeds until control reaches a function that does have +debugging information. Likewise, it will not step into a function which +is compiled without debugging information. To step through functions +without debugging information, use the stepi command, described +below. +
+

+ +The step command only stops at the first instruction of a source +line. This prevents the multiple stops that could otherwise occur in +switch statements, for loops, etc. step continues +to stop if a function that has debugging information is called within +the line. In other words, step steps inside any functions +called within the line. +

+ +Also, the step command only enters a function if there is line +number information for the function. Otherwise it acts like the +next command. This avoids problems when using cc -gl +on MIPS machines. Previously, step entered subroutines if there +was any debugging information about the routine. +

+ +

step count +
Continue running as in step, but do so count times. If a +breakpoint is reached, or a signal not related to stepping occurs before +count steps, stepping stops right away. +

+ + + +

next [count] +
Continue to the next source line in the current (innermost) stack frame. +This is similar to step, but function calls that appear within +the line of code are executed without stopping. Execution stops when +control reaches a different line of code at the original stack level +that was executing when you gave the next command. This command +is abbreviated n. +

+ +An argument count is a repeat count, as for step. +

+ +The next command only stops at the first instruction of a +source line. This prevents multiple stops that could otherwise occur in +switch statements, for loops, etc. +

+ + +

set step-mode +
+ +
set step-mode on +
The set step-mode on command causes the step command to +stop at the first instruction of a function which contains no debug line +information rather than stepping over it. +

+ +This is useful in cases where you may be interested in inspecting the +machine instructions of a function which has no symbolic info and do not +want GDB to automatically skip over this function. +

+ +

set step-mode off +
Causes the step command to step over any functions which contains no +debug information. This is the default. +

+ +

show step-mode +
Show whether GDB will stop in or step over functions without +source line debug information. +

+ + +

finish +
Continue running until just after function in the selected stack frame +returns. Print the returned value (if any). +

+ +Contrast this with the return command (see section Returning from a Function). +

+ + + + +

until +
u +
Continue running until a source line past the current line, in the +current stack frame, is reached. This command is used to avoid single +stepping through a loop more than once. It is like the next +command, except that when until encounters a jump, it +automatically continues execution until the program counter is greater +than the address of the jump. +

+ +This means that when you reach the end of a loop after single stepping +though it, until makes your program continue execution until it +exits the loop. In contrast, a next command at the end of a loop +simply steps back to the beginning of the loop, which forces you to step +through the next iteration. +

+ +until always stops your program if it attempts to exit the current +stack frame. +

+ +until may produce somewhat counterintuitive results if the order +of machine code does not match the order of the source lines. For +example, in the following excerpt from a debugging session, the f +(frame) command shows that execution is stopped at line +206; yet when we use until, we get to line 195: +

+ +
 
(gdb) f
+#0  main (argc=4, argv=0xf7fffae8) at m4.c:206
+206                 expand_input();
+(gdb) until
+195             for ( ; argc > 0; NEXTARG) {
+

+ +This happened because, for execution efficiency, the compiler had +generated code for the loop closure test at the end, rather than the +start, of the loop--even though the test in a C for-loop is +written before the body of the loop. The until command appeared +to step back to the beginning of the loop when it advanced to this +expression; however, it has not really gone to an earlier +statement--not in terms of the actual machine code. +

+ +until with no argument works by means of single +instruction stepping, and hence is slower than until with an +argument. +

+ +

until location +
u location +
Continue running your program until either the specified location is +reached, or the current stack frame returns. location is any of +the forms described in 7.2 Specifying a Location. +This form of the command uses temporary breakpoints, and +hence is quicker than until without an argument. The specified +location is actually reached only if it is in the current frame. This +implies that until can be used to skip over recursive function +invocations. For instance in the code below, if the current location is +line 96, issuing until 99 will execute the program up to +line 99 in the same invocation of factorial, i.e., after the inner +invocations have returned. +

+ +
 
94	int factorial (int value)
+95	{
+96	    if (value > 1) {
+97            value *= factorial (value - 1);
+98	    }
+99	    return (value);
+100     }
+

+ + +

advance location +
Continue running the program up to the given location. An argument is +required, which should be of one of the forms described in +7.2 Specifying a Location. +Execution will also stop upon exit from the current stack +frame. This command is similar to until, but advance will +not skip over recursive function calls, and the target location doesn't +have to be in the same frame as the current one. +

+ + + +

stepi +
stepi arg +
si +
Execute one machine instruction, then stop and return to the debugger. +

+ +It is often useful to do `display/i $pc' when stepping by machine +instructions. This makes GDB automatically display the next +instruction to be executed, each time your program stops. See section Automatic Display. +

+ +An argument is a repeat count, as in step. +

+ + + +

nexti +
nexti arg +
ni +
Execute one machine instruction, but if it is a function call, +proceed until the function returns. +

+ +An argument is a repeat count, as in next. +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.3 Signals

+ +

+ +A signal is an asynchronous event that can happen in a program. The +operating system defines the possible kinds of signals, and gives each +kind a name and a number. For example, in Unix SIGINT is the +signal a program gets when you type an interrupt character (often Ctrl-c); +SIGSEGV is the signal a program gets from referencing a place in +memory far away from all the areas in use; SIGALRM occurs when +the alarm clock timer goes off (which happens only if your program has +requested an alarm). +

+ + +Some signals, including SIGALRM, are a normal part of the +functioning of your program. Others, such as SIGSEGV, indicate +errors; these signals are fatal (they kill your program immediately) if the +program has not specified in advance some other way to handle the signal. +SIGINT does not indicate an error in your program, but it is normally +fatal so it can carry out the purpose of the interrupt: to kill the program. +

+ +GDB has the ability to detect any occurrence of a signal in your +program. You can tell GDB in advance what to do for each kind of +signal. +

+ + +Normally, GDB is set up to let the non-erroneous signals like +SIGALRM be silently passed to your program +(so as not to interfere with their role in the program's functioning) +but to stop your program immediately whenever an error signal happens. +You can change these settings with the handle command. +

+ +

+ + +
info signals +
info handle +
Print a table of all the kinds of signals and how GDB has been told to +handle each one. You can use this to see the signal numbers of all +the defined types of signals. +

+ +

info signals sig +
Similar, but print information only about the specified signal number. +

+ +info handle is an alias for info signals. +

+ + +

handle signal [keywords...] +
Change the way GDB handles signal signal. signal +can be the number of a signal or its name (with or without the +`SIG' at the beginning); a list of signal numbers of the form +`low-high'; or the word `all', meaning all the +known signals. Optional arguments keywords, described below, +say what change to make. +
+

+ +The keywords allowed by the handle command can be abbreviated. +Their full names are: +

+ +

+
nostop +
GDB should not stop your program when this signal happens. It may +still print a message telling you that the signal has come in. +

+ +

stop +
GDB should stop your program when this signal happens. This implies +the print keyword as well. +

+ +

print +
GDB should print a message when this signal happens. +

+ +

noprint +
GDB should not mention the occurrence of the signal at all. This +implies the nostop keyword as well. +

+ +

pass +
noignore +
GDB should allow your program to see this signal; your program +can handle the signal, or else it may terminate if the signal is fatal +and not handled. pass and noignore are synonyms. +

+ +

nopass +
ignore +
GDB should not allow your program to see this signal. +nopass and ignore are synonyms. +
+

+ +When a signal stops your program, the signal is not visible to the +program until you +continue. Your program sees the signal then, if pass is in +effect for the signal in question at that time. In other words, +after GDB reports a signal, you can use the handle +command with pass or nopass to control whether your +program sees that signal when you continue. +

+ +The default is set to nostop, noprint, pass for +non-erroneous signals such as SIGALRM, SIGWINCH and +SIGCHLD, and to stop, print, pass for the +erroneous signals. +

+ +You can also use the signal command to prevent your program from +seeing a signal, or cause it to see a signal it normally would not see, +or to give it any signal at any time. For example, if your program stopped +due to some sort of memory reference error, you might store correct +values into the erroneous variables and continue, hoping to see more +execution; but your program would probably terminate immediately as +a result of the fatal signal once it saw the signal. To prevent this, +you can continue with `signal 0'. See section Giving your Program a Signal. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5.4 Stopping and Starting Multi-thread Programs

+ +

+ +When your program has multiple threads (see section Debugging Programs with Multiple Threads), you can choose whether to set +breakpoints on all threads, or on a particular thread. +

+ +

+ + + +
break linespec thread threadno +
break linespec thread threadno if ... +
linespec specifies source lines; there are several ways of +writing them (see section 7.2 Specifying a Location), but the effect is always to +specify some source line. +

+ +Use the qualifier `thread threadno' with a breakpoint command +to specify that you only want GDB to stop the program when a +particular thread reaches this breakpoint. threadno is one of the +numeric thread identifiers assigned by GDB, shown in the first +column of the `info threads' display. +

+ +If you do not specify `thread threadno' when you set a +breakpoint, the breakpoint applies to all threads of your +program. +

+ +You can use the thread qualifier on conditional breakpoints as +well; in this case, place `thread threadno' before the +breakpoint condition, like this: +

+ +
 
(gdb) break frik.c:13 thread 28 if bartab > lim
+

+ +

+

+ + + +Whenever your program stops under GDB for any reason, +all threads of execution stop, not just the current thread. This +allows you to examine the overall state of the program, including +switching between threads, without worrying that things may change +underfoot. +

+ + + + +There is an unfortunate side effect. If one thread stops for a +breakpoint, or for some other reason, and another thread is blocked in a +system call, then the system call may return prematurely. This is a +consequence of the interaction between multiple threads and the signals +that GDB uses to implement breakpoints and other events that +stop execution. +

+ +To handle this problem, your program should check the return value of +each system call and react appropriately. This is good programming +style anyways. +

+ +For example, do not write code like this: +

+ +
 
  sleep (10);
+

+ +The call to sleep will return early if a different thread stops +at a breakpoint or for some other reason. +

+ +Instead, write this: +

+ +
 
  int unslept = 10;
+  while (unslept > 0)
+    unslept = sleep (unslept);
+

+ +A system call is allowed to return early, so the system is still +conforming to its specification. But GDB does cause your +multi-threaded program to behave differently than it would without +GDB. +

+ +Also, GDB uses internal breakpoints in the thread library to +monitor certain events such as thread creation and thread destruction. +When such an event happens, a system call in another thread may return +prematurely, even though your program does not appear to stop. +

+ + + +Conversely, whenever you restart the program, all threads start +executing. This is true even when single-stepping with commands +like step or next. +

+ +In particular, GDB cannot single-step all threads in lockstep. +Since thread scheduling is up to your debugging target's operating +system (not controlled by GDB), other threads may +execute more than one statement while the current thread completes a +single step. Moreover, in general other threads stop in the middle of a +statement, rather than at a clean statement boundary, when the program +stops. +

+ +You might even find your program stopped in another thread after +continuing or even single-stepping. This happens whenever some other +thread runs into a breakpoint, a signal, or an exception before the +first thread completes whatever you requested. +

+ +On some OSes, you can lock the OS scheduler and thus allow only a single +thread to run. +

+ +

+
set scheduler-locking mode +
+ +Set the scheduler locking mode. If it is off, then there is no +locking and any thread may run at any time. If on, then only the +current thread may run when the inferior is resumed. The step +mode optimizes for single-stepping. It stops other threads from +"seizing the prompt" by preempting the current thread while you are +stepping. Other threads will only rarely (or never) get a chance to run +when you step. They are more likely to run when you `next' over a +function call, and they are completely free to run when you use commands +like `continue', `until', or `finish'. However, unless another +thread hits a breakpoint during its timeslice, they will never steal the +GDB prompt away from the thread that you are debugging. +

+ +

show scheduler-locking +
Display the current scheduler locking mode. +
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_7.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_7.html new file mode 100644 index 0000000..d13cfba --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_7.html @@ -0,0 +1,609 @@ + + + + + +Debugging with GDB: Stack + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

6. Examining the Stack

+ +

+ +When your program has stopped, the first thing you need to know is where it +stopped and how it got there. +

+ + +Each time your program performs a function call, information about the call +is generated. +That information includes the location of the call in your program, +the arguments of the call, +and the local variables of the function being called. +The information is saved in a block of data called a stack frame. +The stack frames are allocated in a region of memory called the call +stack. +

+ +When your program stops, the GDB commands for examining the +stack allow you to see all of this information. +

+ + +One of the stack frames is selected by GDB and many +GDB commands refer implicitly to the selected frame. In +particular, whenever you ask GDB for the value of a variable in +your program, the value is found in the selected frame. There are +special GDB commands to select whichever frame you are +interested in. See section Selecting a Frame. +

+ +When your program stops, GDB automatically selects the +currently executing frame and describes it briefly, similar to the +frame command (see section Information about a Frame). +

+ +

+ + + + +
6.1 Stack Frames  Stack frames
6.2 Backtraces  
6.3 Selecting a Frame  Selecting a frame
6.4 Information About a Frame  Information on a frame
+ +
+
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

6.1 Stack Frames

+ +

+ + + +The call stack is divided up into contiguous pieces called stack +frames, or frames for short; each frame is the data associated +with one call to one function. The frame contains the arguments given +to the function, the function's local variables, and the address at +which the function is executing. +

+ + + + +When your program is started, the stack has only one frame, that of the +function main. This is called the initial frame or the +outermost frame. Each time a function is called, a new frame is +made. Each time a function returns, the frame for that function invocation +is eliminated. If a function is recursive, there can be many frames for +the same function. The frame for the function in which execution is +actually occurring is called the innermost frame. This is the most +recently created of all the stack frames that still exist. +

+ + +Inside your program, stack frames are identified by their addresses. A +stack frame consists of many bytes, each of which has its own address; each +kind of computer has a convention for choosing one byte whose +address serves as the address of the frame. Usually this address is kept +in a register called the frame pointer register +(see section $fp) while execution is going on in that frame. +

+ + +GDB assigns numbers to all existing stack frames, starting with +zero for the innermost frame, one for the frame that called it, +and so on upward. These numbers do not really exist in your program; +they are assigned by GDB to give you a way of designating stack +frames in GDB commands. +

+ + +Some compilers provide a way to compile functions so that they operate +without stack frames. (For example, the GCC option +
 
`-fomit-frame-pointer'
+
generates functions without a frame.) +This is occasionally done with heavily used library functions to save +the frame setup time. GDB has limited facilities for dealing +with these function invocations. If the innermost function invocation +has no stack frame, GDB nevertheless regards it as though +it had a separate frame, which is numbered zero as usual, allowing +correct tracing of the function call chain. However, GDB has +no provision for frameless functions elsewhere in the stack. +

+ +

+ + +
frame args +
The frame command allows you to move from one stack frame to another, +and to print the stack frame you select. args may be either the +address of the frame or the stack frame number. Without an argument, +frame prints the current stack frame. +

+ + + +

select-frame +
The select-frame command allows you to move from one stack frame +to another without printing the frame. This is the silent version of +frame. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

6.2 Backtraces

+ +

+ + + +A backtrace is a summary of how your program got where it is. It shows one +line per frame, for many frames, starting with the currently executing +frame (frame zero), followed by its caller (frame one), and on up the +stack. +

+ +

+ + +
backtrace +
bt +
Print a backtrace of the entire stack: one line per frame for all +frames in the stack. +

+ +You can stop the backtrace at any time by typing the system interrupt +character, normally Ctrl-c. +

+ +

backtrace n +
bt n +
Similar, but print only the innermost n frames. +

+ +

backtrace -n +
bt -n +
Similar, but print only the outermost n frames. +

+ +

backtrace full +
bt full +
bt full n +
bt full -n +
Print the values of the local variables also. n specifies the +number of frames to print, as described above. +
+

+ + + +The names where and info stack (abbreviated info s) +are additional aliases for backtrace. +

+ + +In a multi-threaded program, GDB by default shows the +backtrace only for the current thread. To display the backtrace for +several or all of the threads, use the command thread apply +(see section thread apply). For example, if you type thread +apply all backtrace, GDB will display the backtrace for all +the threads; this is handy when you debug a core dump of a +multi-threaded program. +

+ +Each line in the backtrace shows the frame number and the function name. +The program counter value is also shown--unless you use set +print address off. The backtrace also shows the source file name and +line number, as well as the arguments to the function. The program +counter value is omitted if it is at the beginning of the code for that +line number. +

+ +Here is an example of a backtrace. It was made with the command +`bt 3', so it shows the innermost three frames. +

+ +
 
#0  m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
+    at builtin.c:993
+#1  0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
+#2  0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
+    at macro.c:71
+(More stack frames follow...)
+

+ +The display for frame zero does not begin with a program counter +value, indicating that your program has stopped at the beginning of the +code for line 993 of builtin.c. +

+ + + +If your program was compiled with optimizations, some compilers will +optimize away arguments passed to functions if those arguments are +never used after the call. Such optimizations generate code that +passes arguments through registers, but doesn't store those arguments +in the stack frame. GDB has no way of displaying such +arguments in stack frames other than the innermost one. Here's what +such a backtrace might look like: +

+ +
 
#0  m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
+    at builtin.c:993
+#1  0x6e38 in expand_macro (sym=<value optimized out>) at macro.c:242
+#2  0x6840 in expand_token (obs=0x0, t=<value optimized out>, td=0xf7fffb08)
+    at macro.c:71
+(More stack frames follow...)
+

+ +The values of arguments that were not saved in their stack frames are +shown as `<value optimized out>'. +

+ +If you need to display the values of such optimized-out arguments, +either deduce that from other variables whose values depend on the one +you are interested in, or recompile without optimizations. +

+ + + + +Most programs have a standard user entry point--a place where system +libraries and startup code transition into user code. For C this is +main(3). +When GDB finds the entry function in a backtrace +it will terminate the backtrace, to avoid tracing into highly +system-specific (and generally uninteresting) code. +

+ +If you need to examine the startup code, or limit the number of levels +in a backtrace, you can change this behavior: +

+ +

+
set backtrace past-main +
set backtrace past-main on +
+Backtraces will continue past the user entry point. +

+ +

set backtrace past-main off +
Backtraces will stop when they encounter the user entry point. This is the +default. +

+ +

show backtrace past-main +
+Display the current user entry point backtrace policy. +

+ +

set backtrace past-entry +
set backtrace past-entry on +
Backtraces will continue past the internal entry point of an application. +This entry point is encoded by the linker when the application is built, +and is likely before the user entry point main (or equivalent) is called. +

+ +

set backtrace past-entry off +
Backtraces will stop when they encounter the internal entry point of an +application. This is the default. +

+ +

show backtrace past-entry +
Display the current internal entry point backtrace policy. +

+ +

set backtrace limit n +
set backtrace limit 0 +
+Limit the backtrace to n levels. A value of zero means +unlimited. +

+ +

show backtrace limit +
Display the current limit on backtrace levels. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

6.3 Selecting a Frame

+ +

+ +Most commands for examining the stack and other data in your program work on +whichever stack frame is selected at the moment. Here are the commands for +selecting a stack frame; all of them finish by printing a brief description +of the stack frame just selected. +

+ +

+ + +
frame n +
f n +
Select frame number n. Recall that frame zero is the innermost +(currently executing) frame, frame one is the frame that called the +innermost one, and so on. The highest-numbered frame is the one for +main. +

+ +

frame addr +
f addr +
Select the frame at address addr. This is useful mainly if the +chaining of stack frames has been damaged by a bug, making it +impossible for GDB to assign numbers properly to all frames. In +addition, this can be useful when your program has multiple stacks and +switches between them. +

+ +On the SPARC architecture, frame needs two addresses to +select an arbitrary frame: a frame pointer and a stack pointer. +

+ +On the MIPS and Alpha architecture, it needs two addresses: a stack +pointer and a program counter. +

+ +On the 29k architecture, it needs three addresses: a register stack +pointer, a program counter, and a memory stack pointer. +

+ + +

up n +
Move n frames up the stack. For positive numbers n, this +advances toward the outermost frame, to higher frame numbers, to frames +that have existed longer. n defaults to one. +

+ + + +

down n +
Move n frames down the stack. For positive numbers n, this +advances toward the innermost frame, to lower frame numbers, to frames +that were created more recently. n defaults to one. You may +abbreviate down as do. +
+

+ +All of these commands end by printing two lines of output describing the +frame. The first line shows the frame number, the function name, the +arguments, and the source file and line number of execution in that +frame. The second line shows the text of that source line. +

+ +For example: +

+ +
 
(gdb) up
+#1  0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
+    at env.c:10
+10              read_input_file (argv[i]);
+

+ +After such a printout, the list command with no arguments +prints ten lines centered on the point of execution in the frame. +You can also edit the program at the point of execution with your favorite +editing program by typing edit. +See section Printing Source Lines, +for details. +

+ +

+ + +
up-silently n +
down-silently n +
These two commands are variants of up and down, +respectively; they differ in that they do their work silently, without +causing display of the new frame. They are intended primarily for use +in GDB command scripts, where the output might be unnecessary and +distracting. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

6.4 Information About a Frame

+ +

+ +There are several other commands to print information about the selected +stack frame. +

+ +

+
frame +
f +
When used without any argument, this command does not change which +frame is selected, but prints a brief description of the currently +selected stack frame. It can be abbreviated f. With an +argument, this command is used to select a stack frame. +See section Selecting a Frame. +

+ + + +

info frame +
info f +
This command prints a verbose description of the selected stack frame, +including: +

+ +

    +
  • +the address of the frame +
  • +the address of the next frame down (called by this frame) +
  • +the address of the next frame up (caller of this frame) +
  • +the language in which the source code corresponding to this frame is written +
  • +the address of the frame's arguments +
  • +the address of the frame's local variables +
  • +the program counter saved in it (the address of execution in the caller frame) +
  • +which registers were saved in the frame +
+

+ +The verbose description is useful when +something has gone wrong that has made the stack format fail to fit +the usual conventions. +

+ +

info frame addr +
info f addr +
Print a verbose description of the frame at address addr, without +selecting that frame. The selected frame remains unchanged by this +command. This requires the same kind of address (more than one for some +architectures) that you specify in the frame command. +See section Selecting a Frame. +

+ + +

info args +
Print the arguments of the selected frame, each on a separate line. +

+ +

info locals +
+Print the local variables of the selected frame, each on a separate +line. These are all variables (declared either static or automatic) +accessible at the point of execution of the selected frame. +

+ + + + +

info catch +
Print a list of all the exception handlers that are active in the +current stack frame at the current point of execution. To see other +exception handlers, visit the associated frame (using the up, +down, or frame commands); then type info catch. +See section Setting Catchpoints. +

+ +

+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_8.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_8.html new file mode 100644 index 0000000..3096d87 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_8.html @@ -0,0 +1,813 @@ + + + + + +Debugging with GDB: Source + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7. Examining Source Files

+ +

+ +GDB can print parts of your program's source, since the debugging +information recorded in the program tells GDB what source files were +used to build it. When your program stops, GDB spontaneously prints +the line where it stopped. Likewise, when you select a stack frame +(see section Selecting a Frame), GDB prints the line where +execution in that frame has stopped. You can print other portions of +source files by explicit command. +

+ +If you use GDB through its GNU Emacs interface, you may +prefer to use Emacs facilities to view source; see Using GDB under GNU Emacs. +

+ +

+ + + + + + +
7.1 Printing Source Lines  Printing source lines
7.2 Specifying a Location  How to specify code locations
7.3 Editing Source Files  Editing source files
7.4 Searching Source Files  Searching source files
7.5 Specifying Source Directories  Specifying source directories
7.6 Source and Machine Code  Source and machine code
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7.1 Printing Source Lines

+ +

+ + + +To print lines from a source file, use the list command +(abbreviated l). By default, ten lines are printed. +There are several ways to specify what part of the file you want to +print; see 7.2 Specifying a Location, for the full list. +

+ +Here are the forms of the list command most commonly used: +

+ +

+
list linenum +
Print lines centered around line number linenum in the +current source file. +

+ +

list function +
Print lines centered around the beginning of function +function. +

+ +

list +
Print more lines. If the last lines printed were printed with a +list command, this prints lines following the last lines +printed; however, if the last line printed was a solitary line printed +as part of displaying a stack frame (see section Examining the Stack), this prints lines centered around that line. +

+ +

list - +
Print lines just before the lines last printed. +
+

+ + +By default, GDB prints ten source lines with any of these forms of +the list command. You can change this using set listsize: +

+ +

+ +
set listsize count +
Make the list command display count source lines (unless +the list argument explicitly specifies some other number). +

+ + +

show listsize +
Display the number of lines that list prints. +
+

+ +Repeating a list command with RET discards the argument, +so it is equivalent to typing just list. This is more useful +than listing the same lines again. An exception is made for an +argument of `-'; that argument is preserved in repetition so that +each repetition moves up in the source file. +

+ +In general, the list command expects you to supply zero, one or two +linespecs. Linespecs specify source lines; there are several ways +of writing them (see section 7.2 Specifying a Location), but the effect is always +to specify some source line. +

+ +Here is a complete description of the possible arguments for list: +

+ +

+
list linespec +
Print lines centered around the line specified by linespec. +

+ +

list first,last +
Print lines from first to last. Both arguments are +linespecs. When a list command has two linespecs, and the +source file of the second linespec is omitted, this refers to +the same source file as the first linespec. +

+ +

list ,last +
Print lines ending with last. +

+ +

list first, +
Print lines starting with first. +

+ +

list + +
Print lines just after the lines last printed. +

+ +

list - +
Print lines just before the lines last printed. +

+ +

list +
As described in the preceding table. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7.2 Specifying a Location

+ +

+ +Several GDB commands accept arguments that specify a location +of your program's code. Since GDB is a source-level +debugger, a location usually specifies some line in the source code; +for that reason, locations are also known as linespecs. +

+ +Here are all the different ways of specifying a code location that +GDB understands: +

+ +

+
linenum +
Specifies the line number linenum of the current source file. +

+ +

-offset +
+offset +
Specifies the line offset lines before or after the current +line. For the list command, the current line is the last one +printed; for the breakpoint commands, this is the line at which +execution stopped in the currently selected stack frame +(see section Frames, for a description of stack frames.) When +used as the second of the two linespecs in a list command, +this specifies the line offset lines up or down from the first +linespec. +

+ +

filename:linenum +
Specifies the line linenum in the source file filename. +

+ +

function +
Specifies the line that begins the body of the function function. +For example, in C, this is the line with the open brace. +

+ +

filename:function +
Specifies the line that begins the body of the function function +in the file filename. You only need the file name with a +function name to avoid ambiguity when there are identically named +functions in different source files. +

+ +

*address +
Specifies the program address address. For line-oriented +commands, such as list and edit, this specifies a source +line that contains address. For break and other +breakpoint oriented commands, this can be used to set breakpoints in +parts of your program which do not have debugging information or +source files. +

+ +Here address may be any expression valid in the current working +language (see section working language) that specifies a code +address. In addition, as a convenience, GDB extends the +semantics of expressions used in locations to cover the situations +that frequently happen during debugging. Here are the various forms +of address: +

+ +

+
expression +
Any expression valid in the current working language. +

+ +

funcaddr +
An address of a function or procedure derived from its name. In C, +C++, Java, Objective-C, Fortran, minimal, and assembly, this is +simply the function's name function (and actually a special case +of a valid expression). In Pascal and Modula-2, this is +&function. In Ada, this is function'Address +(although the Pascal form also works). +

+ +This form specifies the address of the function's first instruction, +before the stack frame and arguments have been set up. +

+ +

'filename'::funcaddr +
Like funcaddr above, but also specifies the name of the source +file explicitly. This is useful if the name of the function does not +specify the function unambiguously, e.g., if there are several +functions with identical names in different source files. +
+

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7.3 Editing Source Files

+ +

+ + + +To edit the lines in a source file, use the edit command. +The editing program of your choice +is invoked with the current line set to +the active line in the program. +Alternatively, there are several ways to specify what part of the file you +want to print if you want to see other parts of the program: +

+ +

+
edit location +
Edit the source file specified by location. Editing starts at +that location, e.g., at the specified source line of the +specified file. See section 7.2 Specifying a Location, for all the possible forms +of the location argument; here are the forms of the edit +command most commonly used: +

+ +

+
edit number +
Edit the current source file with number as the active line number. +

+ +

edit function +
Edit the file containing function at the beginning of its definition. +
+

+ +

+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7.3.1 Choosing your Editor

+ +You can customize GDB to use any editor you want +(4). +By default, it is `/bin/ex', but you can change this +by setting the environment variable EDITOR before using +GDB. For example, to configure GDB to use the +vi editor, you could use these commands with the sh shell: +
 
EDITOR=/usr/bin/vi
+export EDITOR
+gdb ...
+
or in the csh shell, +
 
setenv EDITOR /usr/bin/vi
+gdb ...
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7.4 Searching Source Files

+ +

+ +There are two commands for searching through the current source file for a +regular expression. +

+ +

+ + +
forward-search regexp +
search regexp +
The command `forward-search regexp' checks each line, +starting with the one following the last line listed, for a match for +regexp. It lists the line that is found. You can use the +synonym `search regexp' or abbreviate the command name as +fo. +

+ + +

reverse-search regexp +
The command `reverse-search regexp' checks each line, starting +with the one before the last line listed and going backward, for a match +for regexp. It lists the line that is found. You can abbreviate +this command as rev. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7.5 Specifying Source Directories

+ +

+ + + +Executable programs sometimes do not record the directories of the source +files from which they were compiled, just the names. Even when they do, +the directories could be moved between the compilation and your debugging +session. GDB has a list of directories to search for source files; +this is called the source path. Each time GDB wants a source file, +it tries all the directories in the list, in the order they are present +in the list, until it finds a file with the desired name. +

+ +For example, suppose an executable references the file +`/usr/src/foo-1.0/lib/foo.c', and our source path is +`/mnt/cross'. The file is first looked up literally; if this +fails, `/mnt/cross/usr/src/foo-1.0/lib/foo.c' is tried; if this +fails, `/mnt/cross/foo.c' is opened; if this fails, an error +message is printed. GDB does not look up the parts of the +source file name, such as `/mnt/cross/src/foo-1.0/lib/foo.c'. +Likewise, the subdirectories of the source path are not searched: if +the source path is `/mnt/cross', and the binary refers to +`foo.c', GDB would not find it under +`/mnt/cross/usr/src/foo-1.0/lib'. +

+ +Plain file names, relative file names with leading directories, file +names containing dots, etc. are all treated as described above; for +instance, if the source path is `/mnt/cross', and the source file +is recorded as `../lib/foo.c', GDB would first try +`../lib/foo.c', then `/mnt/cross/../lib/foo.c', and after +that---`/mnt/cross/foo.c'. +

+ +Note that the executable search path is not used to locate the +source files. +

+ +Whenever you reset or rearrange the source path, GDB clears out +any information it has cached about where source files are found and where +each line is in the file. +

+ + + +When you start GDB, its source path includes only `cdir' +and `cwd', in that order. +To add other directories, use the directory command. +

+ +The search path is used to find both program source files and GDB +script files (read using the `-command' option and `source' command). +

+ +In addition to the source path, GDB provides a set of commands +that manage a list of source path substitution rules. A substitution +rule specifies how to rewrite source directories stored in the program's +debug information in case the sources were moved to a different +directory between compilation and debugging. A rule is made of +two strings, the first specifying what needs to be rewritten in +the path, and the second specifying how it should be rewritten. +In set substitute-path, we name these two parts from and +to respectively. GDB does a simple string replacement +of from with to at the start of the directory part of the +source file name, and uses that result instead of the original file +name to look up the sources. +

+ +Using the previous example, suppose the `foo-1.0' tree has been +moved from `/usr/src' to `/mnt/cross', then you can tell +GDB to replace `/usr/src' in all source path names with +`/mnt/cross'. The first lookup will then be +`/mnt/cross/foo-1.0/lib/foo.c' in place of the original location +of `/usr/src/foo-1.0/lib/foo.c'. To define a source path +substitution rule, use the set substitute-path command +(see set substitute-path). +

+ +To avoid unexpected substitution results, a rule is applied only if the +from part of the directory name ends at a directory separator. +For instance, a rule substituting `/usr/source' into +`/mnt/cross' will be applied to `/usr/source/foo-1.0' but +not to `/usr/sourceware/foo-2.0'. And because the substitution +is applied only at the beginning of the directory name, this rule will +not be applied to `/root/usr/source/baz.c' either. +

+ +In many cases, you can achieve the same result using the directory +command. However, set substitute-path can be more efficient in +the case where the sources are organized in a complex tree with multiple +subdirectories. With the directory command, you need to add each +subdirectory of your project. If you moved the entire tree while +preserving its internal organization, then set substitute-path +allows you to direct the debugger to all the sources with one single +command. +

+ +set substitute-path is also more than just a shortcut command. +The source path is only used if the file at the original location no +longer exists. On the other hand, set substitute-path modifies +the debugger behavior to look at the rewritten location instead. So, if +for any reason a source file that is not relevant to your executable is +located at the original location, a substitution rule is the only +method available to point GDB at the new location. +

+ +

+
directory dirname ... +
dir dirname ... +
Add directory dirname to the front of the source path. Several +directory names may be given to this command, separated by `:' +(`;' on MS-DOS and MS-Windows, where `:' usually appears as +part of absolute file names) or +whitespace. You may specify a directory that is already in the source +path; this moves it forward, so GDB searches it sooner. +

+ + + + + + + + + + +You can use the string `$cdir' to refer to the compilation +directory (if one is recorded), and `$cwd' to refer to the current +working directory. `$cwd' is not the same as `.'---the former +tracks the current working directory as it changes during your GDB +session, while the latter is immediately expanded to the current +directory at the time you add an entry to the source path. +

+ +

directory +
Reset the source path to its default value (`$cdir:$cwd' on Unix systems). This requires confirmation. +

+ +

show directories +
+Print the source path: show which directories it contains. +

+ + +

set substitute-path from to +
+Define a source path substitution rule, and add it at the end of the +current list of existing substitution rules. If a rule with the same +from was already defined, then the old rule is also deleted. +

+ +For example, if the file `/foo/bar/baz.c' was moved to +`/mnt/cross/baz.c', then the command +

+ +
 
(gdb) set substitute-path /usr/src /mnt/cross
+

+ +will tell GDB to replace `/usr/src' with +`/mnt/cross', which will allow GDB to find the file +`baz.c' even though it was moved. +

+ +In the case when more than one substitution rule have been defined, +the rules are evaluated one by one in the order where they have been +defined. The first one matching, if any, is selected to perform +the substitution. +

+ +For instance, if we had entered the following commands: +

+ +
 
(gdb) set substitute-path /usr/src/include /mnt/include
+(gdb) set substitute-path /usr/src /mnt/src
+

+ +GDB would then rewrite `/usr/src/include/defs.h' into +`/mnt/include/defs.h' by using the first rule. However, it would +use the second rule to rewrite `/usr/src/lib/foo.c' into +`/mnt/src/lib/foo.c'. +

+ +

unset substitute-path [path] +
+If a path is specified, search the current list of substitution rules +for a rule that would rewrite that path. Delete that rule if found. +A warning is emitted by the debugger if no rule could be found. +

+ +If no path is specified, then all substitution rules are deleted. +

+ +

show substitute-path [path] +
+If a path is specified, then print the source path substitution rule +which would rewrite that path, if any. +

+ +If no path is specified, then print all existing source path substitution +rules. +

+ +

+

+ +If your source path is cluttered with directories that are no longer of +interest, GDB may sometimes cause confusion by finding the wrong +versions of source. You can correct the situation as follows: +

+ +

    +
  1. +Use directory with no argument to reset the source path to its default value. +

    + +

  2. +Use directory with suitable arguments to reinstall the +directories you want in the source path. You can add all the +directories in one command. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

7.6 Source and Machine Code

+ +

+ +You can use the command info line to map source lines to program +addresses (and vice versa), and the command disassemble to display +a range of addresses as machine instructions. When run under GNU Emacs +mode, the info line command causes the arrow to point to the +line specified. Also, info line prints addresses in symbolic form as +well as hex. +

+ +

+ +
info line linespec +
Print the starting and ending addresses of the compiled code for +source line linespec. You can specify source lines in any of +the ways documented in 7.2 Specifying a Location. +
+

+ +For example, we can use info line to discover the location of +the object code for the first line of function +m4_changequote: +

+ +
 
(gdb) info line m4_changequote
+Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
+

+ + +We can also inquire (using *addr as the form for +linespec) what source line covers a particular address: +
 
(gdb) info line *0x63ff
+Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
+

+ + + + +After info line, the default address for the x command +is changed to the starting address of the line, so that `x/i' is +sufficient to begin examining the machine code (see section Examining Memory). Also, this address is saved as the value of the +convenience variable $_ (see section Convenience Variables). +

+ +

+ + + + + +
disassemble +
This specialized command dumps a range of memory as machine +instructions. The default memory range is the function surrounding the +program counter of the selected frame. A single argument to this +command is a program counter value; GDB dumps the function +surrounding this value. Two arguments specify a range of addresses +(first inclusive, second exclusive) to dump. +
+

+ +The following example shows the disassembly of a range of addresses of +HP PA-RISC 2.0 code: +

+ +
 
(gdb) disas 0x32c4 0x32e4
+Dump of assembler code from 0x32c4 to 0x32e4:
+0x32c4 <main+204>:      addil 0,dp
+0x32c8 <main+208>:      ldw 0x22c(sr0,r1),r26
+0x32cc <main+212>:      ldil 0x3000,r31
+0x32d0 <main+216>:      ble 0x3f8(sr4,r31)
+0x32d4 <main+220>:      ldo 0(r31),rp
+0x32d8 <main+224>:      addil -0x800,dp
+0x32dc <main+228>:      ldo 0x588(r1),r26
+0x32e0 <main+232>:      ldil 0x3000,r31
+End of assembler dump.
+

+ +Some architectures have more than one commonly-used set of instruction +mnemonics or other syntax. +

+ +For programs that were dynamically linked and use shared libraries, +instructions that call functions or branch to locations in the shared +libraries might show a seemingly bogus location--it's actually a +location of the relocation table. On some architectures, GDB +might be able to resolve these to actual function names. +

+ +

+ + + +
set disassembly-flavor instruction-set +
Select the instruction set to use when disassembling the +program via the disassemble or x/i commands. +

+ +Currently this command is only defined for the Intel x86 family. You +can set instruction-set to either intel or att. +The default is att, the AT&T flavor used by default by Unix +assemblers for x86-based targets. +

+ + +

show disassembly-flavor +
Show the current setting of the disassembly flavor. +
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_9.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_9.html new file mode 100644 index 0000000..9e7b973 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_9.html @@ -0,0 +1,2596 @@ + + + + + +Debugging with GDB: Data + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8. Examining Data

+ +

+ + + + + +The usual way to examine data in your program is with the print +command (abbreviated p), or its synonym inspect. It +evaluates and prints the value of an expression of the language your +program is written in (see section Using GDB with Different Languages). +

+ +

+
print expr +
print /f expr +
expr is an expression (in the source language). By default the +value of expr is printed in a format appropriate to its data type; +you can choose a different format by specifying `/f', where +f is a letter specifying the format; see Output Formats. +

+ +

print +
print /f +
+If you omit expr, GDB displays the last value again (from the +value history; see section Value History). This allows you to +conveniently inspect the same value in an alternative format. +
+

+ +A more low-level way of examining data is with the x command. +It examines data in memory at a specified address and prints it in a +specified format. See section Examining Memory. +

+ +If you are interested in information about types, or about how the +fields of a struct or a class are declared, use the ptype exp +command rather than print. See section Examining the Symbol Table. +

+ +

+ + + + + + + + + + + + + + + + + + +
8.1 Expressions  
8.2 Program Variables  Program variables
8.3 Artificial Arrays  Artificial arrays
8.4 Output Formats  Output formats
8.5 Examining Memory  Examining memory
8.6 Automatic Display  Automatic display
8.7 Print Settings  Print settings
8.8 Value History  Value history
8.9 Convenience Variables  Convenience variables
8.10 Registers  
8.11 Floating Point Hardware  Floating point hardware
8.12 Vector Unit  
8.13 Operating System Auxiliary Information  Auxiliary data provided by operating system
8.14 Memory Region Attributes  Memory region attributes
8.15 Copy Between Memory and a File  Copy between memory and a file
8.16 How to Produce a Core File from Your Program  Cause a program dump its core
8.17 Character Sets  Debugging programs that use a different + character set than GDB does
8.18 Caching Data of Remote Targets  Data caching for remote targets
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.1 Expressions

+ +

+ + +print and many other GDB commands accept an expression and +compute its value. Any kind of constant, variable or operator defined +by the programming language you are using is valid in an expression in +GDB. This includes conditional expressions, function calls, +casts, and string constants. It also includes preprocessor macros, if +you compiled your program to include this information; see +4.1 Compiling for Debugging. +

+ + +GDB supports array constants in expressions input by +the user. The syntax is {element, element...}. For example, +you can use the command print {1, 2, 3} to build up an array in +memory that is malloced in the target program. +

+ +Because C is so widespread, most of the expressions shown in examples in +this manual are in C. See section Using GDB with Different Languages, for information on how to use expressions in other +languages. +

+ +In this section, we discuss operators that you can use in GDB +expressions regardless of your programming language. +

+ + +Casts are supported in all languages, not just in C, because it is so +useful to cast a number into a pointer in order to examine a structure +at that address in memory. +

+ +GDB supports these operators, in addition to those common +to programming languages: +

+ +

+
@ +
`@' is a binary operator for treating parts of memory as arrays. +See section Artificial Arrays, for more information. +

+ +

:: +
`::' allows you to specify a variable in terms of the file or +function where it is defined. See section Program Variables. +

+ + + + + +

{type} addr +
Refers to an object of type type stored at address addr in +memory. addr may be any expression whose value is an integer or +pointer (but parentheses are required around binary operators, just as in +a cast). This construct is allowed regardless of what kind of data is +normally supposed to reside at addr. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.2 Program Variables

+ +

+ +The most common kind of expression to use is the name of a variable +in your program. +

+ +Variables in expressions are understood in the selected stack frame +(see section Selecting a Frame); they must be either: +

+ +

    +
  • +global (or file-static) +
+

+ +or +

+ +

    +
  • +visible according to the scope rules of the +programming language from the point of execution in that frame +
+

+ +This means that in the function +

+ +
 
foo (a)
+     int a;
+{
+  bar (a);
+  {
+    int b = test ();
+    bar (b);
+  }
+}
+

+ +you can examine and use the variable a whenever your program is +executing within the function foo, but you can only use or +examine the variable b while your program is executing inside +the block where b is declared. +

+ + +There is an exception: you can refer to a variable or function whose +scope is a single source file even if the current execution point is not +in this file. But it is possible to have more than one such variable or +function with the same name (in different source files). If that +happens, referring to that name has unpredictable effects. If you wish, +you can specify a static variable in a particular function or file, +using the colon-colon (::) notation: +

+ + + +
 
file::variable
+function::variable
+

+ +Here file or function is the name of the context for the +static variable. In the case of file names, you can use quotes to +make sure GDB parses the file name as a single word--for example, +to print a global value of x defined in `f2.c': +

+ +
 
(gdb) p 'f2.c'::x
+

+ + +This use of `::' is very rarely in conflict with the very similar +use of the same notation in C++. GDB also supports use of the C++ +scope resolution operator in GDB expressions. +

+ + + + + +

+Warning: Occasionally, a local variable may appear to have the +wrong value at certain points in a function--just after entry to a new +scope, and just before exit. +
+You may see this problem when you are stepping by machine instructions. +This is because, on most machines, it takes more than one instruction to +set up a stack frame (including local variable definitions); if you are +stepping by machine instructions, variables may appear to have the wrong +values until the stack frame is completely built. On exit, it usually +also takes more than one machine instruction to destroy a stack frame; +after you begin stepping through that group of instructions, local +variable definitions may be gone. +

+ +This may also happen when the compiler does significant optimizations. +To be sure of always seeing accurate values, turn off all optimization +when compiling. +

+ + +Another possible effect of compiler optimizations is to optimize +unused variables out of existence, or assign variables to registers (as +opposed to memory addresses). Depending on the support for such cases +offered by the debug info format used by the compiler, GDB +might not be able to display values for such local variables. If that +happens, GDB will print a message like this: +

+ +
 
No symbol "foo" in current context.
+

+ +To solve such problems, either recompile without optimizations, or use a +different debug info format, if the compiler supports several such +formats. For example, GCC, the GNU C/C++ compiler, +usually supports the `-gstabs+' option. `-gstabs+' +produces debug info in a format that is superior to formats such as +COFF. You may be able to use DWARF 2 (`-gdwarf-2'), which is also +an effective form for debug info. See section `Options for Debugging Your Program or GCC' in Using the GNU Compiler Collection (GCC). +See section C and C++, for more information about debug info formats +that are best suited to C++ programs. +

+ +If you ask to print an object whose contents are unknown to +GDB, e.g., because its data type is not completely specified +by the debug information, GDB will say `<incomplete +type>'. See section incomplete type, for more about this. +

+ +Strings are identified as arrays of char values without specified +signedness. Arrays of either signed char or unsigned char get +printed as arrays of 1 byte sized integers. -fsigned-char or +-funsigned-char GCC options have no effect as GDB +defines literal string type "char" as char without a sign. +For program code +

+ +
 
char var0[] = "A";
+signed char var1[] = "A";
+

+ +You get during debugging +
 
(gdb) print var0
+$1 = "A"
+(gdb) print var1
+$2 = {65 'A', 0 '\0'}
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.3 Artificial Arrays

+ +

+ + + + +It is often useful to print out several successive objects of the +same type in memory; a section of an array, or an array of +dynamically determined size for which only a pointer exists in the +program. +

+ +You can do this by referring to a contiguous span of memory as an +artificial array, using the binary operator `@'. The left +operand of `@' should be the first element of the desired array +and be an individual object. The right operand should be the desired length +of the array. The result is an array value whose elements are all of +the type of the left argument. The first element is actually the left +argument; the second element comes from bytes of memory immediately +following those that hold the first element, and so on. Here is an +example. If a program says +

+ +
 
int *array = (int *) malloc (len * sizeof (int));
+

+ +you can print the contents of array with +

+ +
 
p *array@len
+

+ +The left operand of `@' must reside in memory. Array values made +with `@' in this way behave just like other arrays in terms of +subscripting, and are coerced to pointers when used in expressions. +Artificial arrays most often appear in expressions via the value history +(see section Value History), after printing one out. +

+ +Another way to create an artificial array is to use a cast. +This re-interprets a value as if it were an array. +The value need not be in memory: +
 
(gdb) p/x (short[2])0x12345678
+$1 = {0x1234, 0x5678}
+

+ +As a convenience, if you leave the array length out (as in +`(type[])value') GDB calculates the size to fill +the value (as `sizeof(value)/sizeof(type)': +
 
(gdb) p/x (short[])0x12345678
+$2 = {0x1234, 0x5678}
+

+ +Sometimes the artificial array mechanism is not quite enough; in +moderately complex data structures, the elements of interest may not +actually be adjacent--for example, if you are interested in the values +of pointers in an array. One useful work-around in this situation is +to use a convenience variable (see section Convenience Variables) as a counter in an expression that prints the first +interesting value, and then repeat that expression via RET. For +instance, suppose you have an array dtab of pointers to +structures, and you are interested in the values of a field fv +in each structure. Here is an example of what you might type: +

+ +
 
set $i = 0
+p dtab[$i++]->fv
+RET
+RET
+...
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.4 Output Formats

+ +

+ + + +By default, GDB prints a value according to its data type. Sometimes +this is not what you want. For example, you might want to print a number +in hex, or a pointer in decimal. Or you might want to view data in memory +at a certain address as a character string or as an instruction. To do +these things, specify an output format when you print a value. +

+ +The simplest use of output formats is to say how to print a value +already computed. This is done by starting the arguments of the +print command with a slash and a format letter. The format +letters supported are: +

+ +

+
x +
Regard the bits of the value as an integer, and print the integer in +hexadecimal. +

+ +

d +
Print as integer in signed decimal. +

+ +

u +
Print as integer in unsigned decimal. +

+ +

o +
Print as integer in octal. +

+ +

t +
Print as integer in binary. The letter `t' stands for "two". +(5) +

+ +

a +
+ +Print as an address, both absolute in hexadecimal and as an offset from +the nearest preceding symbol. You can use this format used to discover +where (in what function) an unknown address is located: +

+ +
 
(gdb) p/a 0x54320
+$3 = 0x54320 <_initialize_vx+396>
+

+ +The command info symbol 0x54320 yields similar results. +See section info symbol. +

+ +

c +
Regard as an integer and print it as a character constant. This +prints both the numerical value and its character representation. The +character representation is replaced with the octal escape `\nnn' +for characters outside the 7-bit ASCII range. +

+ +Without this format, GDB displays char, +unsigned char, and signed char data as character +constants. Single-byte members of vectors are displayed as integer +data. +

+ +

f +
Regard the bits of the value as a floating point number and print +using typical floating point syntax. +

+ +

s +
+ +Regard as a string, if possible. With this format, pointers to single-byte +data are displayed as null-terminated strings and arrays of single-byte data +are displayed as fixed-length strings. Other values are displayed in their +natural types. +

+ +Without this format, GDB displays pointers to and arrays of +char, unsigned char, and signed char as +strings. Single-byte members of a vector are displayed as an integer +array. +

+

+ +For example, to print the program counter in hex (see section 8.10 Registers), type +

+ +
 
p/x $pc
+

+ +Note that no space is required before the slash; this is because command +names in GDB cannot contain a slash. +

+ +To reprint the last value in the value history with a different format, +you can use the print command with just a format and no +expression. For example, `p/x' reprints the last value in hex. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.5 Examining Memory

+ +

+ +You can use the command x (for "examine") to examine memory in +any of several formats, independently of your program's data types. +

+ + +

+ +
x/nfu addr +
x addr +
x +
Use the x command to examine memory. +
+

+ +n, f, and u are all optional parameters that specify how +much memory to display and how to format it; addr is an +expression giving the address where you want to start displaying memory. +If you use defaults for nfu, you need not type the slash `/'. +Several commands set convenient defaults for addr. +

+ +

+
n, the repeat count +
The repeat count is a decimal integer; the default is 1. It specifies +how much memory (counting by units u) to display. +

+ +

f, the display format +
The display format is one of the formats used by print +(`x', `d', `u', `o', `t', `a', `c', +`f', `s'), and in addition `i' (for machine instructions). +The default is `x' (hexadecimal) initially. The default changes +each time you use either x or print. +

+ +

u, the unit size +
The unit size is any of +

+ +

+
b +
Bytes. +
h +
Halfwords (two bytes). +
w +
Words (four bytes). This is the initial default. +
g +
Giant words (eight bytes). +
+

+ +Each time you specify a unit size with x, that size becomes the +default unit the next time you use x. (For the `s' and +`i' formats, the unit size is ignored and is normally not written.) +

+ +

addr, starting display address +
addr is the address where you want GDB to begin displaying +memory. The expression need not have a pointer value (though it may); +it is always interpreted as an integer address of a byte of memory. +See section Expressions, for more information on expressions. The default for +addr is usually just after the last address examined--but several +other commands also set the default address: info breakpoints (to +the address of the last breakpoint listed), info line (to the +starting address of a line), and print (if you use it to display +a value from memory). +
+

+ +For example, `x/3uh 0x54320' is a request to display three halfwords +(h) of memory, formatted as unsigned decimal integers (`u'), +starting at address 0x54320. `x/4xw $sp' prints the four +words (`w') of memory above the stack pointer (here, `$sp'; +see section Registers) in hexadecimal (`x'). +

+ +Since the letters indicating unit sizes are all distinct from the +letters specifying output formats, you do not have to remember whether +unit size or format comes first; either order works. The output +specifications `4xw' and `4wx' mean exactly the same thing. +(However, the count n must come first; `wx4' does not work.) +

+ +Even though the unit size u is ignored for the formats `s' +and `i', you might still want to use a count n; for example, +`3i' specifies that you want to see three machine instructions, +including any operands. For convenience, especially when used with +the display command, the `i' format also prints branch delay +slot instructions, if any, beyond the count specified, which immediately +follow the last instruction that is within the count. The command +disassemble gives an alternative way of inspecting machine +instructions; see Source and Machine Code. +

+ +All the defaults for the arguments to x are designed to make it +easy to continue scanning memory with minimal specifications each time +you use x. For example, after you have inspected three machine +instructions with `x/3i addr', you can inspect the next seven +with just `x/7'. If you use RET to repeat the x command, +the repeat count n is used again; the other arguments default as +for successive uses of x. +

+ + +The addresses and contents printed by the x command are not saved +in the value history because there is often too much of them and they +would get in the way. Instead, GDB makes these values available for +subsequent use in expressions as values of the convenience variables +$_ and $__. After an x command, the last address +examined is available for use in expressions in the convenience variable +$_. The contents of that address, as examined, are available in +the convenience variable $__. +

+ +If the x command has a repeat count, the address and contents saved +are from the last memory unit printed; this is not the same as the last +address printed if several units were printed on the last line of output. +

+ + + +When you are debugging a program running on a remote target machine +(see section 17. Debugging Remote Programs), you may wish to verify the program's image in the +remote machine's memory against the executable file you downloaded to +the target. The compare-sections command is provided for such +situations. +

+ +

+ +
compare-sections [section-name] +
Compare the data of a loadable section section-name in the +executable file of the program being debugged with the same section in +the remote machine's memory, and report any mismatches. With no +arguments, compares all loadable sections. This command's +availability depends on the target's support for the "qCRC" +remote request. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.6 Automatic Display

+ +

+ +If you find that you want to print the value of an expression frequently +(to see how it changes), you might want to add it to the automatic +display list so that GDB prints its value each time your program stops. +Each expression added to the list is given a number to identify it; +to remove an expression from the list, you specify that number. +The automatic display looks like this: +

+ +
 
2: foo = 38
+3: bar[5] = (struct hack *) 0x3804
+

+ +This display shows item numbers, expressions and their current values. As with +displays you request manually using x or print, you can +specify the output format you prefer; in fact, display decides +whether to use print or x depending your format +specification--it uses x if you specify either the `i' +or `s' format, or a unit size; otherwise it uses print. +

+ +

+ +
display expr +
Add the expression expr to the list of expressions to display +each time your program stops. See section Expressions. +

+ +display does not repeat if you press RET again after using it. +

+ +

display/fmt expr +
For fmt specifying only a display format and not a size or +count, add the expression expr to the auto-display list but +arrange to display it each time in the specified format fmt. +See section Output Formats. +

+ +

display/fmt addr +
For fmt `i' or `s', or including a unit-size or a +number of units, add the expression addr as a memory address to +be examined each time your program stops. Examining means in effect +doing `x/fmt addr'. See section Examining Memory. +
+

+ +For example, `display/i $pc' can be helpful, to see the machine +instruction about to be executed each time execution stops (`$pc' +is a common name for the program counter; see section Registers). +

+ +

+ + +
undisplay dnums... +
delete display dnums... +
Remove item numbers dnums from the list of expressions to display. +

+ +undisplay does not repeat if you press RET after using it. +(Otherwise you would just get the error `No display number ...'.) +

+ + +

disable display dnums... +
Disable the display of item numbers dnums. A disabled display +item is not printed automatically, but is not forgotten. It may be +enabled again later. +

+ + +

enable display dnums... +
Enable display of item numbers dnums. It becomes effective once +again in auto display of its expression, until you specify otherwise. +

+ +

display +
Display the current values of the expressions on the list, just as is +done when your program stops. +

+ + +

info display +
Print the list of expressions previously set up to display +automatically, each one with its item number, but without showing the +values. This includes disabled expressions, which are marked as such. +It also includes expressions which would not be displayed right now +because they refer to automatic variables not currently available. +
+

+ + +If a display expression refers to local variables, then it does not make +sense outside the lexical context for which it was set up. Such an +expression is disabled when execution enters a context where one of its +variables is not defined. For example, if you give the command +display last_char while inside a function with an argument +last_char, GDB displays this argument while your program +continues to stop inside that function. When it stops elsewhere--where +there is no variable last_char---the display is disabled +automatically. The next time your program stops where last_char +is meaningful, you can enable the display expression once again. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.7 Print Settings

+ +

+ + + +GDB provides the following ways to control how arrays, structures, +and symbols are printed. +

+ +These settings are useful for debugging programs in any language: +

+ +

+ +
set print address +
set print address on +
+GDB prints memory addresses showing the location of stack +traces, structure values, pointer values, breakpoints, and so forth, +even when it also displays the contents of those addresses. The default +is on. For example, this is what a stack frame display looks like with +set print address on: +

+ +
 
(gdb) f
+#0  set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
+    at input.c:530
+530         if (lquote != def_lquote)
+

+ +

set print address off +
Do not print addresses when displaying their contents. For example, +this is the same stack frame displayed with set print address off: +

+ +
 
(gdb) set print addr off
+(gdb) f
+#0  set_quotes (lq="<<", rq=">>") at input.c:530
+530         if (lquote != def_lquote)
+

+ +You can use `set print address off' to eliminate all machine +dependent displays from the GDB interface. For example, with +print address off, you should get the same text for backtraces on +all machines--whether or not they involve pointer arguments. +

+ + +

show print address +
Show whether or not addresses are to be printed. +
+

+ +When GDB prints a symbolic address, it normally prints the +closest earlier symbol plus an offset. If that symbol does not uniquely +identify the address (for example, it is a name whose scope is a single +source file), you may need to clarify. One way to do this is with +info line, for example `info line *0x4537'. Alternately, +you can set GDB to print the source file and line number when +it prints a symbolic address: +

+ +

+
set print symbol-filename on +
+ +Tell GDB to print the source file name and line number of a +symbol in the symbolic form of an address. +

+ +

set print symbol-filename off +
Do not print source file name and line number of a symbol. This is the +default. +

+ +

show print symbol-filename +
Show whether or not GDB will print the source file name and +line number of a symbol in the symbolic form of an address. +
+

+ +Another situation where it is helpful to show symbol filenames and line +numbers is when disassembling code; GDB shows you the line +number and source file that corresponds to each instruction. +

+ +Also, you may wish to see the symbolic form only if the address being +printed is reasonably close to the closest earlier symbol: +

+ +

+
set print max-symbolic-offset max-offset +
+Tell GDB to only display the symbolic form of an address if the +offset between the closest earlier symbol and the address is less than +max-offset. The default is 0, which tells GDB +to always print the symbolic form of an address if any symbol precedes it. +

+ +

show print max-symbolic-offset +
Ask how large the maximum offset is that GDB prints in a +symbolic address. +
+

+ + + +If you have a pointer and you are not sure where it points, try +`set print symbol-filename on'. Then you can determine the name +and source file location of the variable where it points, using +`p/a pointer'. This interprets the address in symbolic form. +For example, here GDB shows that a variable ptt points +at another variable t, defined in `hi2.c': +

+ +
 
(gdb) set print symbol-filename on
+(gdb) p/a ptt
+$4 = 0xe008 <t in hi2.c>
+

+ +

+Warning: For pointers that point to a local variable, `p/a' +does not show the symbol name and filename of the referent, even with +the appropriate set print options turned on. +
+

+ +Other settings control how different kinds of objects are printed: +

+ +

+
set print array +
set print array on +
+Pretty print arrays. This format is more convenient to read, +but uses more space. The default is off. +

+ +

set print array off +
Return to compressed format for arrays. +

+ +

show print array +
Show whether compressed or pretty format is selected for displaying +arrays. +

+ + +

set print array-indexes +
set print array-indexes on +
Print the index of each element when displaying arrays. May be more +convenient to locate a given element in the array or quickly find the +index of a given element in that printed array. The default is off. +

+ +

set print array-indexes off +
Stop printing element indexes when displaying arrays. +

+ +

show print array-indexes +
Show whether the index of each element is printed when displaying +arrays. +

+ +

set print elements number-of-elements +
+ +Set a limit on how many elements of an array GDB will print. +If GDB is printing a large array, it stops printing after it has +printed the number of elements set by the set print elements command. +This limit also applies to the display of strings. +When GDB starts, this limit is set to 200. +Setting number-of-elements to zero means that the printing is unlimited. +

+ +

show print elements +
Display the number of elements of a large array that GDB will print. +If the number is 0, then the printing is unlimited. +

+ +

set print frame-arguments value +
+ + + +This command allows to control how the values of arguments are printed +when the debugger prints a frame (see section 6.1 Stack Frames). The possible +values are: +

+ +

+
all +
The values of all arguments are printed. This is the default. +

+ +

scalars +
Print the value of an argument only if it is a scalar. The value of more +complex arguments such as arrays, structures, unions, etc, is replaced +by .... Here is an example where only scalar arguments are shown: +

+ +
 
#1  0x08048361 in call_me (i=3, s=..., ss=0xbf8d508c, u=..., e=green)
+  at frame-args.c:23
+

+ +

none +
None of the argument values are printed. Instead, the value of each argument +is replaced by .... In this case, the example above now becomes: +

+ +
 
#1  0x08048361 in call_me (i=..., s=..., ss=..., u=..., e=...)
+  at frame-args.c:23
+

+

+ +By default, all argument values are always printed. But this command +can be useful in several cases. For instance, it can be used to reduce +the amount of information printed in each frame, making the backtrace +more readable. Also, this command can be used to improve performance +when displaying Ada frames, because the computation of large arguments +can sometimes be CPU-intensive, especiallly in large applications. +Setting print frame-arguments to scalars or none +avoids this computation, thus speeding up the display of each Ada frame. +

+ +

show print frame-arguments +
Show how the value of arguments should be displayed when printing a frame. +

+ +

set print repeats +
+Set the threshold for suppressing display of repeated array +elements. When the number of consecutive identical elements of an +array exceeds the threshold, GDB prints the string +"<repeats n times>", where n is the number of +identical repetitions, instead of displaying the identical elements +themselves. Setting the threshold to zero will cause all elements to +be individually printed. The default threshold is 10. +

+ +

show print repeats +
Display the current threshold for printing repeated identical +elements. +

+ +

set print null-stop +
+Cause GDB to stop printing the characters of an array when the first +NULL is encountered. This is useful when large arrays actually +contain only short strings. +The default is off. +

+ +

show print null-stop +
Show whether GDB stops printing an array on the first +NULL character. +

+ +

set print pretty on +
+ +Cause GDB to print structures in an indented format with one member +per line, like this: +

+ +
 
$1 = {
+  next = 0x0,
+  flags = {
+    sweet = 1,
+    sour = 1
+  },
+  meat = 0x54 "Pork"
+}
+

+ +

set print pretty off +
Cause GDB to print structures in a compact format, like this: +

+ +
 
$1 = {next = 0x0, flags = {sweet = 1, sour = 1}, \
+meat = 0x54 "Pork"}
+

+ +This is the default format. +

+ +

show print pretty +
Show which format GDB is using to print structures. +

+ +

set print sevenbit-strings on +
+ +Print using only seven-bit characters; if this option is set, +GDB displays any eight-bit characters (in strings or +character values) using the notation \nnn. This setting is +best if you are working in English (ASCII) and you use the +high-order bit of characters as a marker or "meta" bit. +

+ +

set print sevenbit-strings off +
Print full eight-bit characters. This allows the use of more +international character sets, and is the default. +

+ +

show print sevenbit-strings +
Show whether or not GDB is printing only seven-bit characters. +

+ +

set print union on +
+Tell GDB to print unions which are contained in structures +and other unions. This is the default setting. +

+ +

set print union off +
Tell GDB not to print unions which are contained in +structures and other unions. GDB will print "{...}" +instead. +

+ +

show print union +
Ask GDB whether or not it will print unions which are contained in +structures and other unions. +

+ +For example, given the declarations +

+ +
 
typedef enum {Tree, Bug} Species;
+typedef enum {Big_tree, Acorn, Seedling} Tree_forms;
+typedef enum {Caterpillar, Cocoon, Butterfly}
+              Bug_forms;
+
+struct thing {
+  Species it;
+  union {
+    Tree_forms tree;
+    Bug_forms bug;
+  } form;
+};
+
+struct thing foo = {Tree, {Acorn}};
+

+ +with set print union on in effect `p foo' would print +

+ +
 
$1 = {it = Tree, form = {tree = Acorn, bug = Cocoon}}
+

+ +and with set print union off in effect it would print +

+ +
 
$1 = {it = Tree, form = {...}}
+

+ +set print union affects programs written in C-like languages +and in Pascal. +

+

+ +These settings are of interest when debugging C++ programs: +

+ +

+ +
set print demangle +
set print demangle on +
Print C++ names in their source form rather than in the encoded +("mangled") form passed to the assembler and linker for type-safe +linkage. The default is on. +

+ +

show print demangle +
Show whether C++ names are printed in mangled or demangled form. +

+ +

set print asm-demangle +
set print asm-demangle on +
Print C++ names in their source form rather than their mangled form, even +in assembler code printouts such as instruction disassemblies. +The default is off. +

+ +

show print asm-demangle +
Show whether C++ names in assembly listings are printed in mangled +or demangled form. +

+ + + + +

set demangle-style style +
Choose among several encoding schemes used by different compilers to +represent C++ names. The choices for style are currently: +

+ +

+
auto +
Allow GDB to choose a decoding style by inspecting your program. +

+ +

gnu +
Decode based on the GNU C++ compiler (g++) encoding algorithm. +This is the default. +

+ +

hp +
Decode based on the HP ANSI C++ (aCC) encoding algorithm. +

+ +

lucid +
Decode based on the Lucid C++ compiler (lcc) encoding algorithm. +

+ +

arm +
Decode using the algorithm in the C++ Annotated Reference Manual. +Warning: this setting alone is not sufficient to allow +debugging cfront-generated executables. GDB would +require further enhancement to permit that. +

+ +

+If you omit style, you will see a list of possible formats. +

+ +

show demangle-style +
Display the encoding style currently in use for decoding C++ symbols. +

+ +

set print object +
set print object on +
+ +When displaying a pointer to an object, identify the actual +(derived) type of the object rather than the declared type, using +the virtual function table. +

+ +

set print object off +
Display only the declared type of objects, without reference to the +virtual function table. This is the default setting. +

+ +

show print object +
Show whether actual, or declared, object types are displayed. +

+ +

set print static-members +
set print static-members on +
+Print static members when displaying a C++ object. The default is on. +

+ +

set print static-members off +
Do not print static members when displaying a C++ object. +

+ +

show print static-members +
Show whether C++ static members are printed or not. +

+ +

set print pascal_static-members +
set print pascal_static-members on +
+ +Print static members when displaying a Pascal object. The default is on. +

+ +

set print pascal_static-members off +
Do not print static members when displaying a Pascal object. +

+ +

show print pascal_static-members +
Show whether Pascal static members are printed or not. +

+ +

set print vtbl +
set print vtbl on +
+ + +Pretty print C++ virtual function tables. The default is off. +(The vtbl commands do not work on programs compiled with the HP +ANSI C++ compiler (aCC).) +

+ +

set print vtbl off +
Do not pretty print C++ virtual function tables. +

+ +

show print vtbl +
Show whether C++ virtual function tables are pretty printed, or not. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.8 Value History

+ +

+ + + +Values printed by the print command are saved in the GDB +value history. This allows you to refer to them in other expressions. +Values are kept until the symbol table is re-read or discarded +(for example with the file or symbol-file commands). +When the symbol table changes, the value history is discarded, +since the values may contain pointers back to the types defined in the +symbol table. +

+ + + + +The values printed are given history numbers by which you can +refer to them. These are successive integers starting with one. +print shows you the history number assigned to a value by +printing `$num = ' before the value; here num is the +history number. +

+ +To refer to any previous value, use `$' followed by the value's +history number. The way print labels its output is designed to +remind you of this. Just $ refers to the most recent value in +the history, and $$ refers to the value before that. +$$n refers to the nth value from the end; $$2 +is the value just prior to $$, $$1 is equivalent to +$$, and $$0 is equivalent to $. +

+ +For example, suppose you have just printed a pointer to a structure and +want to see the contents of the structure. It suffices to type +

+ +
 
p *$
+

+ +If you have a chain of structures where the component next points +to the next one, you can print the contents of the next one with this: +

+ +
 
p *$.next
+

+ +You can print successive links in the chain by repeating this +command--which you can do by just typing RET. +

+ +Note that the history records values, not expressions. If the value of +x is 4 and you type these commands: +

+ +
 
print x
+set x=5
+

+ +then the value recorded in the value history by the print command +remains 4 even though the value of x has changed. +

+ +

+ +
show values +
Print the last ten values in the value history, with their item numbers. +This is like `p $$9' repeated ten times, except that show +values does not change the history. +

+ +

show values n +
Print ten history values centered on history item number n. +

+ +

show values + +
Print ten history values just after the values last printed. If no more +values are available, show values + produces no display. +
+

+ +Pressing RET to repeat show values n has exactly the +same effect as `show values +'. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.9 Convenience Variables

+ +

+ + + +GDB provides convenience variables that you can use within +GDB to hold on to a value and refer to it later. These variables +exist entirely within GDB; they are not part of your program, and +setting a convenience variable has no direct effect on further execution +of your program. That is why you can use them freely. +

+ +Convenience variables are prefixed with `$'. Any name preceded by +`$' can be used for a convenience variable, unless it is one of +the predefined machine-specific register names (see section Registers). +(Value history references, in contrast, are numbers preceded +by `$'. See section Value History.) +

+ +You can save a value in a convenience variable with an assignment +expression, just as you would set a variable in your program. +For example: +

+ +
 
set $foo = *object_ptr
+

+ +would save in $foo the value contained in the object pointed to by +object_ptr. +

+ +Using a convenience variable for the first time creates it, but its +value is void until you assign a new value. You can alter the +value with another assignment at any time. +

+ +Convenience variables have no fixed types. You can assign a convenience +variable any type of value, including structures and arrays, even if +that variable already has a value of a different type. The convenience +variable, when used as an expression, has the type of its current value. +

+ +

+ + +
show convenience +
Print a list of convenience variables used so far, and their values. +Abbreviated show conv. +

+ + + +

init-if-undefined $variable = expression +
Set a convenience variable if it has not already been set. This is useful +for user-defined commands that keep some state. It is similar, in concept, +to using local static variables with initializers in C (except that +convenience variables are global). It can also be used to allow users to +override default values used in a command script. +

+ +If the variable is already defined then the expression is not evaluated so +any side-effects do not occur. +

+

+ +One of the ways to use a convenience variable is as a counter to be +incremented or a pointer to be advanced. For example, to print +a field from successive elements of an array of structures: +

+ +
 
set $i = 0
+print bar[$i++]->contents
+

+ +Repeat that command by typing RET. +

+ +Some convenience variables are created automatically by GDB and given +values likely to be useful. +

+ +

+ +
$_ +
The variable $_ is automatically set by the x command to +the last address examined (see section Examining Memory). Other +commands which provide a default address for x to examine also +set $_ to that address; these commands include info line +and info breakpoint. The type of $_ is void * +except when set by the x command, in which case it is a pointer +to the type of $__. +

+ + +

$__ +
The variable $__ is automatically set by the x command +to the value found in the last address examined. Its type is chosen +to match the format in which the data was printed. +

+ +

$_exitcode +
+The variable $_exitcode is automatically set to the exit code when +the program being debugged terminates. +
+

+ +On HP-UX systems, if you refer to a function or variable name that +begins with a dollar sign, GDB searches for a user or system +name first, before it searches for a convenience variable. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.10 Registers

+ +

+ + +You can refer to machine register contents, in expressions, as variables +with names starting with `$'. The names of registers are different +for each machine; use info registers to see the names used on +your machine. +

+ +

+ +
info registers +
Print the names and values of all registers except floating-point +and vector registers (in the selected stack frame). +

+ + + +

info all-registers +
Print the names and values of all registers, including floating-point +and vector registers (in the selected stack frame). +

+ +

info registers regname ... +
Print the relativized value of each specified register regname. +As discussed in detail below, register values are normally relative to +the selected stack frame. regname may be any register name valid on +the machine you are using, with or without the initial `$'. +
+

+ + + + + + +GDB has four "standard" register names that are available (in +expressions) on most machines--whenever they do not conflict with an +architecture's canonical mnemonics for registers. The register names +$pc and $sp are used for the program counter register and +the stack pointer. $fp is used for a register that contains a +pointer to the current stack frame, and $ps is used for a +register that contains the processor status. For example, +you could print the program counter in hex with +

+ +
 
p/x $pc
+

+ +or print the instruction to be executed next with +

+ +
 
x/i $pc
+

+ +or add four to the stack pointer(6) with +

+ +
 
set $sp += 4
+

+ +Whenever possible, these four standard register names are available on +your machine even though the machine has different canonical mnemonics, +so long as there is no conflict. The info registers command +shows the canonical names. For example, on the SPARC, info +registers displays the processor status register as $psr but you +can also refer to it as $ps; and on x86-based machines $ps +is an alias for the EFLAGS register. +

+ +GDB always considers the contents of an ordinary register as an +integer when the register is examined in this way. Some machines have +special registers which can hold nothing but floating point; these +registers are considered to have floating point values. There is no way +to refer to the contents of an ordinary register as floating point value +(although you can print it as a floating point value with +`print/f $regname'). +

+ +Some registers have distinct "raw" and "virtual" data formats. This +means that the data format in which the register contents are saved by +the operating system is not the same one that your program normally +sees. For example, the registers of the 68881 floating point +coprocessor are always saved in "extended" (raw) format, but all C +programs expect to work with "double" (virtual) format. In such +cases, GDB normally works with the virtual format only (the format +that makes sense for your program), but the info registers command +prints the data in both formats. +

+ + + +Some machines have special registers whose contents can be interpreted +in several different ways. For example, modern x86-based machines +have SSE and MMX registers that can hold several values packed +together in several different formats. GDB refers to such +registers in struct notation: +

+ +
 
(gdb) print $xmm1
+$1 = {
+  v4_float = {0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044},
+  v2_double = {9.92129282474342e-303, 2.7585945287983262e-313},
+  v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
+  v8_int16 = {0, 0, 14072, 315, 11, 0, 13, 0},
+  v4_int32 = {0, 20657912, 11, 13},
+  v2_int64 = {88725056443645952, 55834574859},
+  uint128 = 0x0000000d0000000b013b36f800000000
+}
+

+ +To set values of such registers, you need to tell GDB which +view of the register you wish to change, as if you were assigning +value to a struct member: +

+ +
 
 (gdb) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
+

+ +Normally, register values are relative to the selected stack frame +(see section Selecting a Frame). This means that you get the +value that the register would contain if all stack frames farther in +were exited and their saved registers restored. In order to see the +true contents of hardware registers, you must select the innermost +frame (with `frame 0'). +

+ +However, GDB must deduce where registers are saved, from the machine +code generated by your compiler. If some registers are not saved, or if +GDB is unable to locate the saved registers, the selected stack +frame makes no difference. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.11 Floating Point Hardware

+ +

+ +Depending on the configuration, GDB may be able to give +you more information about the status of the floating point hardware. +

+ +

+ +
info float +
Display hardware-dependent information about the floating +point unit. The exact contents and layout vary depending on the +floating point chip. Currently, `info float' is supported on +the ARM and x86 machines. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.12 Vector Unit

+ +

+ +Depending on the configuration, GDB may be able to give you +more information about the status of the vector unit. +

+ +

+ +
info vector +
Display information about the vector unit. The exact contents and +layout vary depending on the hardware. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.13 Operating System Auxiliary Information

+ +

+ +GDB provides interfaces to useful OS facilities that can help +you debug your program. +

+ + + +When GDB runs on a Posix system (such as GNU or Unix +machines), it interfaces with the inferior via the ptrace +system call. The operating system creates a special sata structure, +called struct user, for this interface. You can use the +command info udot to display the contents of this data +structure. +

+ +

+
info udot +
+Display the contents of the struct user maintained by the OS +kernel for the program being debugged. GDB displays the +contents of struct user as a list of hex numbers, similar to +the examine command. +
+

+ + + +Some operating systems supply an auxiliary vector to programs at +startup. This is akin to the arguments and environment that you +specify for a program, but contains a system-dependent variety of +binary values that tell system libraries important details about the +hardware, operating system, and process. Each value's purpose is +identified by an integer tag; the meanings are well-known but system-specific. +Depending on the configuration and operating system facilities, +GDB may be able to show you this information. For remote +targets, this functionality may further depend on the remote stub's +support of the `qXfer:auxv:read' packet, see + qXfer auxiliary vector read. +

+ +

+ +
info auxv +
Display the auxiliary vector of the inferior, which can be either a +live process or a core dump file. GDB prints each tag value +numerically, and also shows names and text descriptions for recognized +tags. Some values in the vector are numbers, some bit masks, and some +pointers to strings or other data. GDB displays each value in the +most appropriate form for a recognized tag, and in hexadecimal for +an unrecognized tag. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.14 Memory Region Attributes

+ +

+ +Memory region attributes allow you to describe special handling +required by regions of your target's memory. GDB uses +attributes to determine whether to allow certain types of memory +accesses; whether to use specific width accesses; and whether to cache +target memory. By default the description of memory regions is +fetched from the target (if the current target supports this), but the +user can override the fetched regions. +

+ +Defined memory regions can be individually enabled and disabled. When a +memory region is disabled, GDB uses the default attributes when +accessing memory in that region. Similarly, if no memory regions have +been defined, GDB uses the default attributes when accessing +all memory. +

+ +When a memory region is defined, it is given a number to identify it; +to enable, disable, or remove a memory region, you specify that number. +

+ +

+ +
mem lower upper attributes... +
Define a memory region bounded by lower and upper with +attributes attributes..., and add it to the list of regions +monitored by GDB. Note that upper == 0 is a special +case: it is treated as the target's maximum memory address. +(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.) +

+ +

mem auto +
Discard any user changes to the memory regions and use target-supplied +regions, if available, or no regions if the target does not support. +

+ + +

delete mem nums... +
Remove memory regions nums... from the list of regions +monitored by GDB. +

+ + +

disable mem nums... +
Disable monitoring of memory regions nums.... +A disabled memory region is not forgotten. +It may be enabled again later. +

+ + +

enable mem nums... +
Enable monitoring of memory regions nums.... +

+ + +

info mem +
Print a table of all defined memory regions, with the following columns +for each region: +

+ +

+
Memory Region Number +
Enabled or Disabled. +
Enabled memory regions are marked with `y'. +Disabled memory regions are marked with `n'. +

+ +

Lo Address +
The address defining the inclusive lower bound of the memory region. +

+ +

Hi Address +
The address defining the exclusive upper bound of the memory region. +

+ +

Attributes +
The list of attributes set for this memory region. +
+
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.14.1 Attributes

+ +

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.14.1.1 Memory Access Mode

+ +The access mode attributes set whether GDB may make read or +write accesses to a memory region. +

+ +While these attributes prevent GDB from performing invalid +memory accesses, they do nothing to prevent the target system, I/O DMA, +etc. from accessing memory. +

+ +

+
ro +
Memory is read only. +
wo +
Memory is write only. +
rw +
Memory is read/write. This is the default. +
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.14.1.2 Memory Access Size

+ +The access size attribute tells GDB to use specific sized +accesses in the memory region. Often memory mapped device registers +require specific sized accesses. If no access size attribute is +specified, GDB may use accesses of any size. +

+ +

+
8 +
Use 8 bit memory accesses. +
16 +
Use 16 bit memory accesses. +
32 +
Use 32 bit memory accesses. +
64 +
Use 64 bit memory accesses. +
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.14.1.3 Data Cache

+ +The data cache attributes set whether GDB will cache target +memory. While this generally improves performance by reducing debug +protocol overhead, it can lead to incorrect results because GDB +does not know about volatile variables or memory mapped device +registers. +

+ +

+
cache +
Enable GDB to cache target memory. +
nocache +
Disable GDB from caching target memory. This is the default. +
+

+ +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.14.2 Memory Access Checking

+ +GDB can be instructed to refuse accesses to memory that is +not explicitly described. This can be useful if accessing such +regions has undesired effects for a specific target, or to provide +better error checking. The following commands control this behaviour. +

+ +

+ +
set mem inaccessible-by-default [on|off] +
If on is specified, make GDB treat memory not +explicitly described by the memory ranges as non-existent and refuse accesses +to such memory. The checks are only performed if there's at least one +memory range defined. If off is specified, make GDB +treat the memory not explicitly described by the memory ranges as RAM. +The default value is on. + +
show mem inaccessible-by-default +
Show the current handling of accesses to unknown memory. +
+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.15 Copy Between Memory and a File

+ +

+ +You can use the commands dump, append, and +restore to copy data between target memory and a file. The +dump and append commands write data to a file, and the +restore command reads data from a file back into the inferior's +memory. Files may be in binary, Motorola S-record, Intel hex, or +Tektronix Hex format; however, GDB can only append to binary +files. +

+ +

+ + +
dump [format] memory filename start_addr end_addr +
dump [format] value filename expr +
Dump the contents of memory from start_addr to end_addr, +or the value of expr, to filename in the given format. +

+ +The format parameter may be any one of: +

+
binary +
Raw binary form. +
ihex +
Intel hex format. +
srec +
Motorola S-record format. +
tekhex +
Tektronix Hex format. +
+

+ +GDB uses the same definitions of these formats as the +GNU binary utilities, like `objdump' and `objcopy'. If +format is omitted, GDB dumps the data in raw binary +form. +

+ + +

append [binary] memory filename start_addr end_addr +
append [binary] value filename expr +
Append the contents of memory from start_addr to end_addr, +or the value of expr, to the file filename, in raw binary form. +(GDB can only append data to files in raw binary form.) +

+ + +

restore filename [binary] bias start end +
Restore the contents of file filename into memory. The +restore command can automatically recognize any known BFD +file format, except for raw binary. To restore a raw binary file you +must specify the optional keyword binary after the filename. +

+ +If bias is non-zero, its value will be added to the addresses +contained in the file. Binary files always start at address zero, so +they will be restored at address bias. Other bfd files have +a built-in location; they will be restored at offset bias +from that location. +

+ +If start and/or end are non-zero, then only data between +file offset start and file offset end will be restored. +These offsets are relative to the addresses in the file, before +the bias argument is applied. +

+ +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.16 How to Produce a Core File from Your Program

+ +

+ +A core file or core dump is a file that records the memory +image of a running process and its process status (register values +etc.). Its primary use is post-mortem debugging of a program that +crashed while it ran outside a debugger. A program that crashes +automatically produces a core file, unless this feature is disabled by +the user. See section 15.1 Commands to Specify Files, for information on invoking GDB in +the post-mortem debugging mode. +

+ +Occasionally, you may wish to produce a core file of the program you +are debugging in order to preserve a snapshot of its state. +GDB has a special command for that. +

+ +

+ + +
generate-core-file [file] +
gcore [file] +
Produce a core dump of the inferior process. The optional argument +file specifies the file name where to put the core dump. If not +specified, the file name defaults to `core.pid', where +pid is the inferior process ID. +

+ +Note that this command is implemented only for some systems (as of +this writing, GNU/Linux, FreeBSD, Solaris, Unixware, and S390). +

+

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.17 Character Sets

+ +

+ +If the program you are debugging uses a different character set to +represent characters and strings than the one GDB uses itself, +GDB can automatically translate between the character sets for +you. The character set GDB uses we call the host +character set; the one the inferior program uses we call the +target character set. +

+ +For example, if you are running GDB on a GNU/Linux system, which +uses the ISO Latin 1 character set, but you are using GDB's +remote protocol (see section 17. Debugging Remote Programs) to debug a program +running on an IBM mainframe, which uses the EBCDIC character set, +then the host character set is Latin-1, and the target character set is +EBCDIC. If you give GDB the command set +target-charset EBCDIC-US, then GDB translates between +EBCDIC and Latin 1 as you print character or string values, or use +character and string literals in expressions. +

+ +GDB has no way to automatically recognize which character set +the inferior program uses; you must tell it, using the set +target-charset command, described below. +

+ +Here are the commands for controlling GDB's character set +support: +

+ +

+
set target-charset charset +
+Set the current target character set to charset. We list the +character set names GDB recognizes below, but if you type +set target-charset followed by TABTAB, GDB will +list the target character sets it supports. +
+

+ +

+
set host-charset charset +
+Set the current host character set to charset. +

+ +By default, GDB uses a host character set appropriate to the +system it is running on; you can override that default using the +set host-charset command. +

+ +GDB can only use certain character sets as its host character +set. We list the character set names GDB recognizes below, and +indicate which can be host character sets, but if you type +set target-charset followed by TABTAB, GDB will +list the host character sets it supports. +

+ +

set charset charset +
+Set the current host and target character sets to charset. As +above, if you type set charset followed by TABTAB, +GDB will list the name of the character sets that can be used +for both host and target. +

+ +

show charset +
+Show the names of the current host and target charsets. +

+ +

show host-charset +
+Show the name of the current host charset. +

+ +

show target-charset +
+Show the name of the current target charset. +

+ +

+

+ +GDB currently includes support for the following character +sets: +

+ +

+ +
ASCII +
+Seven-bit U.S. ASCII. GDB can use this as its host +character set. +

+ +

ISO-8859-1 +
+ +The ISO Latin 1 character set. This extends ASCII with accented +characters needed for French, German, and Spanish. GDB can use +this as its host character set. +

+ +

EBCDIC-US +
IBM1047 +
+ +Variants of the EBCDIC character set, used on some of IBM's +mainframe operating systems. (GNU/Linux on the S/390 uses U.S. ASCII.) +GDB cannot use these as its host character set. +

+ +

+

+ +Note that these are all single-byte character sets. More work inside +GDB is needed to support multi-byte or variable-width character +encodings, like the UTF-8 and UCS-2 encodings of Unicode. +

+ +Here is an example of GDB's character set support in action. +Assume that the following source code has been placed in the file +`charset-test.c': +

+ +
 
#include <stdio.h>
+
+char ascii_hello[]
+  = {72, 101, 108, 108, 111, 44, 32, 119,
+     111, 114, 108, 100, 33, 10, 0};
+char ibm1047_hello[]
+  = {200, 133, 147, 147, 150, 107, 64, 166,
+     150, 153, 147, 132, 90, 37, 0};
+
+main ()
+{
+  printf ("Hello, world!\n");
+}
+

+ +In this program, ascii_hello and ibm1047_hello are arrays +containing the string `Hello, world!' followed by a newline, +encoded in the ASCII and IBM1047 character sets. +

+ +We compile the program, and invoke the debugger on it: +

+ +
 
$ gcc -g charset-test.c -o charset-test
+$ gdb -nw charset-test
+GNU gdb 2001-12-19-cvs
+Copyright 2001 Free Software Foundation, Inc.
+...
+(gdb)
+

+ +We can use the show charset command to see what character sets +GDB is currently using to interpret and display characters and +strings: +

+ +
 
(gdb) show charset
+The current host and target character set is `ISO-8859-1'.
+(gdb)
+

+ +For the sake of printing this manual, let's use ASCII as our +initial character set: +
 
(gdb) set charset ASCII
+(gdb) show charset
+The current host and target character set is `ASCII'.
+(gdb)
+

+ +Let's assume that ASCII is indeed the correct character set for our +host system -- in other words, let's assume that if GDB prints +characters using the ASCII character set, our terminal will display +them properly. Since our current target character set is also +ASCII, the contents of ascii_hello print legibly: +

+ +
 
(gdb) print ascii_hello
+$1 = 0x401698 "Hello, world!\n"
+(gdb) print ascii_hello[0]
+$2 = 72 'H'
+(gdb)
+

+ +GDB uses the target character set for character and string +literals you use in expressions: +

+ +
 
(gdb) print '+'
+$3 = 43 '+'
+(gdb)
+

+ +The ASCII character set uses the number 43 to encode the `+' +character. +

+ +GDB relies on the user to tell it which character set the +target program uses. If we print ibm1047_hello while our target +character set is still ASCII, we get jibberish: +

+ +
 
(gdb) print ibm1047_hello
+$4 = 0x4016a8 "\310\205\223\223\226k@\246\226\231\223\204Z%"
+(gdb) print ibm1047_hello[0]
+$5 = 200 '\310'
+(gdb)
+

+ +If we invoke the set target-charset followed by TABTAB, +GDB tells us the character sets it supports: +

+ +
 
(gdb) set target-charset
+ASCII       EBCDIC-US   IBM1047     ISO-8859-1
+(gdb) set target-charset
+

+ +We can select IBM1047 as our target character set, and examine the +program's strings again. Now the ASCII string is wrong, but +GDB translates the contents of ibm1047_hello from the +target character set, IBM1047, to the host character set, +ASCII, and they display correctly: +

+ +
 
(gdb) set target-charset IBM1047
+(gdb) show charset
+The current host character set is `ASCII'.
+The current target character set is `IBM1047'.
+(gdb) print ascii_hello
+$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
+(gdb) print ascii_hello[0]
+$7 = 72 '\110'
+(gdb) print ibm1047_hello
+$8 = 0x4016a8 "Hello, world!\n"
+(gdb) print ibm1047_hello[0]
+$9 = 200 'H'
+(gdb)
+

+ +As above, GDB uses the target character set for character and +string literals you use in expressions: +

+ +
 
(gdb) print '+'
+$10 = 78 '+'
+(gdb)
+

+ +The IBM1047 character set uses the number 78 to encode the `+' +character. +

+ + +


+ + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

8.18 Caching Data of Remote Targets

+ +

+ +GDB can cache data exchanged between the debugger and a +remote target (see section 17. Debugging Remote Programs). Such caching generally improves +performance, because it reduces the overhead of the remote protocol by +bundling memory reads and writes into large chunks. Unfortunately, +GDB does not currently know anything about volatile +registers, and thus data caching will produce incorrect results when +volatile registers are in use. +

+ +

+ +
set remotecache on +
set remotecache off +
Set caching state for remote targets. When ON, use data +caching. By default, this option is OFF. +

+ + +

show remotecache +
Show the current state of data caching for remote targets. +

+ + +

info dcache +
Print the information about the data cache performance. The +information displayed includes: the dcache width and depth; and for +each cache line, how many times it was referenced, and its data and +state (dirty, bad, ok, etc.). This command is useful for debugging +the data cache operation. +
+

+ + +


+ + + + + + + +
[ << ][ >> ]           [Top][Contents][Index][ ? ]
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_abt.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_abt.html new file mode 100644 index 0000000..f69ac67 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_abt.html @@ -0,0 +1,220 @@ + + + + + +Debugging with GDB: About this document + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

About this document

+ +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated by GDB Administrator on March, 27 2008 +using texi2html +

+The buttons in the navigation panels have the following meaning: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Button Name Go to From 1.2.3 go to
+ [ < ] +Back + +previous section in reading order + +1.2.2 +
+ [ > ] +Forward + +next section in reading order + +1.2.4 +
+ [ << ] +FastBack + +previous or up-and-previous section + +1.1 +
+ [ Up ] +Up + +up section + +1.2 +
+ [ >> ] +FastForward + +next or up-and-next section + +1.3 +
+ [Top] +Top + +cover (top) of document + +   +
+ [Contents] +Contents + +table of contents + +   +
+ [Index] +Index + +concept index + +   +
+ [ ? ] +About + +this page + +   +
+

+where the Example assumes that the current position +is at Subsubsection One-Two-Three of a document of +the following structure: +
    +
  • 1. Section One
  • +
      +
    • 1.1 Subsection One-One
    • +
        +
      • ...
      • +
      +
    • 1.2 Subsection One-Two
    • +
        +
      • 1.2.1 Subsubsection One-Two-One +
      • 1.2.2 Subsubsection One-Two-Two +
      • 1.2.3 Subsubsection One-Two-Three     +<== Current Position +
      • 1.2.4 Subsubsection One-Two-Four +
      +
    • 1.3 Subsection One-Three
    • +
        +
      • ...
      • +
      +
    • 1.4 Subsection One-Four
    • +
    +
+ +
+
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_fot.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_fot.html new file mode 100644 index 0000000..0e301bf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_fot.html @@ -0,0 +1,108 @@ + + + + + +Debugging with GDB: Footnotes + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

Footnotes

+

(1)

+

On +DOS/Windows systems, the home directory is the one pointed to by the +HOME environment variable. +

(2)

+

Currently, only +GNU/Linux. +

(3)

+

+Note that embedded programs (the so-called "free-standing" +environment) are not required to have a main function as the +entry point. They could even have multiple entry points. +

(4)

+

+The only restriction is that your editor (say ex), recognizes the +following command-line syntax: +
 
ex +number file
+
The optional numeric value +number specifies the number of the line in +the file where to start editing. +

(5)

+

`b' cannot be used because these format letters are also +used with the x command, where `b' stands for "byte"; +see Examining Memory. +

(6)

+

This is a way of removing +one word from the stack, on machines where stacks grow downward in +memory (most machines, nowadays). This assumes that the innermost +stack frame is selected; setting $sp is not allowed when other +stack frames are selected. To pop entire frames off the stack, +regardless of machine architecture, use return; +see Returning from a Function. +

(7)

+

If you choose a port number that +conflicts with another service, gdbserver prints an error message +and exits. +

(8)

+

In +`gdb-6.8/gdb/refcard.ps' of the version 6.8 +release. +

(9)

+

The `qP' and `qL' +packets predate these conventions, and have arguments without any terminator +for the packet name; we suspect they are in widespread use in places that +are difficult to upgrade. The `qC' packet has no arguments, but some +existing stubs (e.g. RedBoot) are known to not check for the end of the +packet. +


+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_ovr.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_ovr.html new file mode 100644 index 0000000..c804739 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_ovr.html @@ -0,0 +1,141 @@ + + + + + +Debugging with GDB: Short Table of Contents + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

Short Table of Contents

+
+Summary of GDB +
+1. A Sample GDB Session +
+2. Getting In and Out of GDB +
+3. GDB Commands +
+4. Running Programs Under GDB +
+5. Stopping and Continuing +
+6. Examining the Stack +
+7. Examining Source Files +
+8. Examining Data +
+9. C Preprocessor Macros +
+10. Tracepoints +
+11. Debugging Programs That Use Overlays +
+12. Using GDB with Different Languages +
+13. Examining the Symbol Table +
+14. Altering Execution +
+15. GDB Files +
+16. Specifying a Debugging Target +
+17. Debugging Remote Programs +
+18. Configuration-Specific Information +
+19. Controlling GDB +
+20. Canned Sequences of Commands +
+21. Command Interpreters +
+22. GDB Text User Interface +
+23. Using GDB under GNU Emacs +
+24. The GDB/MI Interface +
+25. GDB Annotations +
+26. Reporting Bugs in GDB +
+27. Command Line Editing +
+28. Using History Interactively +
+A. Formatting Documentation +
+B. Installing GDB +
+C. Maintenance Commands +
+D. GDB Remote Serial Protocol +
+E. The GDB Agent Expression Mechanism +
+F. Target Descriptions +
+G. GNU GENERAL PUBLIC LICENSE +
+H. GNU Free Documentation License +
+Index +
+ +
+
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_toc.html b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_toc.html new file mode 100644 index 0000000..2dbdb23 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/gdb/onlinedocs/gdb_toc.html @@ -0,0 +1,970 @@ + + + + + +Debugging with GDB: Table of Contents + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

Table of Contents

+ +
+
+ + +
+ +

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to +contact the FSF.

+ +

These pages are maintained by the GDB developers.

+ +

Copyright Free Software Foundation, Inc., 59 Temple Place - Suite +330, Boston, MA 02111, USA.

+ +

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ +This document was generated +by GDB Administrator on March, 27 2008 +using texi2html + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/AUTHORS b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/AUTHORS new file mode 100644 index 0000000..6ad35df --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/AUTHORS @@ -0,0 +1,15 @@ +# +# $Id: AUTHORS,v 1.4 2003/07/24 16:42:39 troth Exp $ +# + +Main Developer: + + Theodore A. Roth + +Contributors: + + Ken Restivo + Reinhard Jessich + Josef Angermeier + +See the ChangeLog file for more contributions. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/COPYING b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog new file mode 100644 index 0000000..43ffc9e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog @@ -0,0 +1,409 @@ +2008-03-16 Joerg Wunsch + + * configure.ac: Bump version for 0.1.2.5. + +2008-03-16 Joerg Wunsch + + * src/avrcore.c: Make interrupt slot numbers unsigned int + rather than int, to avoid a GCC 4.x warning. + * src/avrcore.h: (Ditto.) + * src/intvects.h: (Ditto.) + * src/uart.c: (Ditto.) + * src/uart.h: (Ditto.) + +2008-03-09 Joerg Wunsch + + * configure.ac: Bump version date to indicate post-release + 0.1.2.4. + +2008-03-09 Joerg Wunsch + + * src/disp/disp.c (disp_parse_packet): initialize areg to work + around GCC bug 34793. + * configure.ac: Bump version for release 0.1.2.4 + +2008-01-07 Joerg Wunsch + + * configure.ac: Bump version date to indicate post-release + 0.1.2.3. + +2008-01-07 Joerg Wunsch + + * configure.ac: Change version to 0.1.2.3, in preparation of + a new bugfix release. + +2008-01-07 Joerg Wunsch + + Some Cygwin fixes: + * src/gdbserver.c: Partially revert the change from rev 1.51; + allocating a 1 MB buffer off the stack turned out to cause a + Cygwin stack overflow so reduce MAX_BUF to 100000. + * test_c/Makefile.am: use $(EXEEXT) for the default names + of ELF files as generated by the linker. Evaluates to an + empty string under Unix, and to .exe under Cygwin. + +2008-01-07 Joerg Wunsch + + bug #11929: simulavr-disp displays garbage characters after + "Reserved" + * src/disp/disp.c (disp_print_io_reg_name): Correctly delimit the + curses field width for the IO register name display. + +2008-01-07 Joerg Wunsch + + * configure.ac: De-support building the PS documentation. + * configure.ac: Apply quotes to macro TROTH_ENABLE_TESTS to + get rid off an aclocal warning. + * doc/Makefile.am: De-support building the PS documentation, + fix the build sequence for the remaining documentation so + a "make" now correctly builds everything selected, and + "make install" just installs it. Correctly detect the + multitude of options about how different version of + texi2html -split_node could drop their output files, and + act appropriately (heavily borrowed from avrdude). + * src/avrcore.c: Yet another XRAM fix: if no XRAM is present, + set xram_end to sram_end rather than to 0. + +2008-01-06 Joerg Wunsch + + * src/avrcore.c: Replace "static inline" declarations by just + "static" ones, and leave it to the compiler whether it actually + wants to inline them. This avoids compiler warnings depending + on the compiler version, eventually becoming fatal due to the + -Werror suggested. + * src/decoder.c: (Ditto.) + * src/memory.c: (Ditto.) + * src/register.c: (Ditto.) + +2008-01-06 Joerg Wunsch +[Thanks to Peeter Vois] + + patch #4623: making simulavr to compile under Fedora Core 4 + * src/gdbserver.c: Add a couple of (char *) typecasts. + +2008-01-06 Joerg Wunsch +[Thanks to Peeter Vois] + + patch #4624: socket buffer increased from 400 to 1000000 + * src/gdbserver.c: Bump MAX_BUF from 400 to 1000000. + +2008-01-06 Joerg Wunsch +[Thanks to Benjamin Benz ] + + patch #4819: Added ATMega32 + * configure.ac: Bump version date. + * src/Makefile.am: add defn/mega32.h + * src/devsupp.c: add ATmega32 + * src/intvects.c: (Ditto.) + * src/defn/mega32.h: New file. + * simulavr.1.in: Add ATmega32. + +2008-01-06 Joerg Wunsch + + * doc/doxygen.conf.in: update through doxygen -u; enable + LaTeX batchmode. + * doc/texinfo.tex: Update from the teTeX distribution, so the + current (pdf)latex no longer fails to build a DVI file. + +2008-01-05 Joerg Wunsch + + * configure.ac: bump version. + +2008-01-05 Joerg Wunsch + + Fix the external SRAM handling. This finally gets rid of all + the ``Attempt to read invalid mem addr'' warnings during a + memory dump. + * src/avrcore.c: Call mem_new() with the appropriate xram + size rather than assuming it's always present. Attach the + XRAM area (for devices that support it) within + avr_core_construct(). + * src/avrcore.h (struct _AvrCore): Add xram. + * src/devsupp.c: Add size.xram, and dev_supp_get_xram_sz(). + * src/devsupp.h: Add dev_supp_get_xram_sz(). + * src/memory.c (mem_attach): Fix an off-by-one error when + complaining about an address being out of range. + * src/defn/90s4414.h: Add xram. + * src/defn/90s8515.h: (Ditto.) + * src/defn/mega103.h: (Ditto.) + * src/defn/mega128.h: (Ditto.) + +2008-01-05 Joerg Wunsch + + * src/memory.c (mem_sram_dump_core): correctly calculate the + internal and external SRAM sizes when calling mem_sram_display(). + This fixes a segfault resulting from accessing mem->cell[] out + of bounds. + +2008-01-04 Joerg Wunsch + + * src/avrcore.c: set core->eeprom to NULL to indicate there's + no EEPROM (yet). + +2008-01-04 Joerg Wunsch + + * bootstrap: Bump requirements to automake 1.9, and + autoconf 2.59, respectively, as these superseded versions + 1.7 and 2.57 without causing incompatibilities. + +2005-01-13 Klaus Rudolph +[Thanks to Joerg Wunsch] + + * src/avrcore.c bugfix: bugfix: devision by zero + +2004-09-15 Theodore A. Roth +[Thanks to Nils Springob for catching this.] + + * configure.ac (AC_INIT): Bump version. + * src/defn/mega128.h: Fix PORTF addr. + +2004-05-19 Theodore A. Roth +[Contributed by Alexander Stohr ] + + * configure.ac (AC_INIT): Bump version. + + * src/memory.c (mem_read): Increase verbosity of warning. + (mem_write): Ditto. + +2004-04-16 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + + * src/avrcore.c (avr_core_construct): Don't call display_clock since + the display hasn't been opened yet. + * src/main.c (main): Call display_clock to send init cycles to display + after opening the display. + + * src/main.c (parse_cmd_line): Update copyright year for -v option. + + * test_asm/test_8515/Makefile.am (all-local): Fix to allow building + with gcc-3.4/binutils-2.15. + +2004-04-15 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/Makefile.am (simulavr_SOURCES): Remove defn/43usb324.h. + +2004-03-13 Theodore A. Roth +[Contributed by Keith Gudger ] + + * configure.ac (AC_INIT): Bump version. + + * src/adc.c: + * src/adc.h: + * src/spi.c: + * src/spi.h: + * src/timers.c: + * src/timers.h: + * src/uart.c: + * src/uart.h: + * src/usb.c: + * src/usb.h: + * src/defn/43usb320.h: + * src/defn/43usb325.h: + * src/defn/43usb326.h: + * src/defn/43usb351.h: + * src/defn/43usb353.h: + * src/defn/43usb355.h: + Update to new vdev/memory infrastructure. + +2004-03-11 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + + * src/disp-vcd/vcd.c: + * src/disp-vcd/vcd.h: + Don't inline vcd_set_clock. + +2004-02-25 Theodore A. Roth + + * src/decoder.c (avr_op_BREAK): Print out a message whenever a break + point is hit. + * src/disp-vcd/config_scanner.l: Fix flex compile problem. + +2004-02-25 Theodore A. Roth +[Contributed by Keith Gudger ] + + * src/devsupp.c: + * src/intvects.c: + * src/defn/43usb320.h: + * src/defn/43usb324.h: + * src/defn/43usb325.h: + * src/defn/43usb326.h: + * src/defn/43usb351.h: + * src/defn/43usb353.h: + * src/defn/43usb355.h: + Drop support for 324 devices. + Stub out the usb device register names. + +2004-02-13 Theodore A. Roth +[Thanks to John Regehr for reporting this.] + + * src/avrcore.c (avr_run_core): Avoid division by zero when calculating + the executed instructions and clock cycles. + +2004-02-13 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/disp-vcd/config_scanner.l: Disable generation of yyunput() + function by flex. + +2004-02-01 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * misc/gpl_header: Update copyright year. + * misc/gpl_header_c: Ditto. + * misc/gpl_header_h: Ditto. + * misc/gpl_header_py: Ditto. + * misc/defn_tmpl_h: New file. + * src/Makefile.am (simulavr_SOURCES): Add defn dir headers. + * src/devsupp.c (defn_at90s1200): Move def to header. + (defn_at90s2313): Ditto. + (defn_at90s4414): Ditto. + (defn_at90s8515): Ditto. + (defn_atmega8): Ditto. + (defn_atmega16): Ditto. + (defn_atmega103): Ditto. + (defn_atmega128): Ditto. + (defn_at43usb351): Ditto. + (defn_at43usb353): Ditto. + (defn_at43usb355): Ditto. + (defn_at43usb320): Ditto. + (defn_at43usb324): Ditto. + (defn_at43usb325): Ditto. + (defn_at43usb326): Ditto. + * src/defn/43usb320.h: New file. + * src/defn/43usb324.h: New file. + * src/defn/43usb325.h: New file. + * src/defn/43usb326.h: New file. + * src/defn/43usb351.h: New file. + * src/defn/43usb353.h: New file. + * src/defn/43usb355.h: New file. + * src/defn/90s1200.h: New file. + * src/defn/90s2313.h: New file. + * src/defn/90s4414.h: New file. + * src/defn/90s8515.h: New file. + * src/defn/mega103.h: New file. + * src/defn/mega128.h: New file. + * src/defn/mega16.h: New file. + * src/defn/mega8.h: New file. + +2004-01-29 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + + * src/adc.c: + * src/adc.h: + * src/avrcore.c: + * src/avrcore.h: + * src/avrerror.c: + * src/device.c: + * src/devsupp.c: + * src/devsupp.h: + * src/eeprom.c: + * src/main.c: + * src/memory.c: + * src/memory.h: + * src/ports.c: + * src/ports.h: + * src/register.c: + * src/spi.c: + * src/spi.h: + * src/sram.c: + * src/stack.c: + * src/stack.h: + * src/timers.c: + * src/timers.h: + * src/uart.c: + * src/uart.h: + * src/usb.c: + * src/vdevs.h: + Convert Memory from a linked list to an array of memory cells. This + gives a significant improvement in speed (more than 50% when running + the test/deep_frame.c program). + Convert core constructor to use new structures previously committed. + There's still alot of registers vdevs that need updated to work + properly with all this changes. + The ports are now much more generic under the new memory attachment + system and all the specfic ports are gone. + The "find vdev by name" mechanism is gone since it was much too + expensive. + A single VDevice can now be installed at many discontinuous memory + addresses. + +2004-01-28 Theodore A. Roth + + * src/devsupp.c (struct io_reg_defn): Define. + (IO_REG_DEFN_TERMINATOR): Define. + (struct _DevSuppDefn): Add io_reg array field. + (defn_at90s1200): Add io_reg initializer. + (defn_at90s2313): Ditto. + (defn_at90s4414): Ditto. + (defn_at90s8515): Ditto. + (defn_atmega8): Ditto. + (defn_atmega16): Ditto. + (defn_atmega103): Ditto. + (defn_atmega123): Ditto. + (defn_at43usb351): Ditto. + (defn_at43usb353): Ditto. + (defn_at43usb355): Ditto. + (defn_at43usb320): Ditto. + (defn_at43usb324): Ditto. + (defn_at43usb325): Ditto. + (defn_at43usb326): Ditto. + * src/ports.c (port_create): Stub out new function. + * src/register.c (sreg_create): Ditto. + (rampz_create): Ditto. + * src/stack.c (sp_create): Ditto. + * src/ports.h (port_create): Prototype. + * src/register.h (sreg_create): Ditto. + (rampz_create): Ditto. + * src/stack.h (sp_create): Ditto. + * src/vdevs.h (VDevCreate): New typedef. + (VDevFP_AddAddr): Ditto. + +2004-01-28 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * README.mem_vdev: Updated. + * misc/io_gen.py: New file. + * test_c/deep_frame.c: Modified to be a little more useful in testing. + +2004-01-18 Theodore A. Roth + + * Released 0.1.2.1. + +2004-01-18 Theodore A. Roth + + * Makefile.am: Update copyright year. + (EXTRA_DIST): Add ChangeLog-200[123] files. + (install_aux_files): Ditto. + * configure.ac (AC_INIT): Set version to 0.1.2.1. + +2004-01-17 Theodore A. Roth + + * Released 0.1.2. + +2004-01-17 Theodore A. Roth + + * configure.ac: Update copyright year. + (AC_INIT): Set version to 0.1.2. + * doc/simulavr.texi: Update copyright year. + +2004-01-01 Theodore A. Roth +[Contributed by Keith Gudger ] + + * configure.ac (AC_INIT): Bump version. + * src/Makefile.am (simulavr_SOURCES): Add uart.c, uart.h and usb.c. + * src/devsupp.c: Add uart and usb support. + * src/uart.c: New file. + * src/uart.h: New file. + * src/usb.c: New file. + +2004-01-01 Theodore A. Roth + + * ChangeLog: Cycle ChangeLog file. + * ChangeLog-2001: New file. + * ChangeLog-2002: New file. + * ChangeLog-2003: New file. + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2001 b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2001 new file mode 100644 index 0000000..bf9f3f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2001 @@ -0,0 +1,767 @@ +2001-12-31 Theodore A. Roth + + * gdb-patches/README, gdb-patches/patcher.sh: + Updated to refer to gdb-5.1 patches. Removed references to gdb-5.0 + patches. + + * gdb-patches/gdb-5.0-avr-patch-0.1, + gdb-patches/gdb-5.0-avr-troth-patch: + Removed obsolete gdb-5.0 patches. + + * doc/Makefile.am, Makefile.am, Makefile_AVR_Rules: + Fixes to allow building from separate directory. (thanks to + Reinhard Jessich) + +2001-12-30 Theodore A. Roth + + * ChangeLog: Updated. + + * Released version 0.0.12. + + * ChangeLog, configure.in: Set version to 0.0.12 + + * Makefile_AVR_Rules: Added -h and --stabs when generating .lst files. + + * doc/simulavr.texi: + Documented instruction decoder. + Misc cleanups. + + * src/avr.h, src/avrcore.c, src/eeprom.c, src/register.c, + src/timers.c, src/vdevs.h: + Renamed CB_T/CB_FP_T to CallBack/CallBack_FP. Twuz a silly a name. + + * src/disp/disp.c: Fixed bug: sreg bit display was reversed. + +2001-12-29 Theodore A. Roth + + * src/decoder.c: + Fixed bug: some of the LD/LDD cases I thought were undefined, are + defined. + +2001-12-28 Theodore A. Roth + + * src/avrcore.c: When dumping core output, print PC and PC*2. + +2001-12-27 Theodore A. Roth + + * src/decoder.c: Fixed bug in SBIW handler: res was byte, now is word. + +2001-12-22 Theodore A. Roth + + * ChangeLog: Updated. + + * ChangeLog: Tagged and released version 0.0.11. + + * doc/simulavr.texi: Fixed some typos. + + * ProjSummary: Fixed some typos. + + * src/devsupp.c: + Fixed compiler warning about potential uninitialized variables. + + * ChangeLog: Removed duplicate entries. + + * configure.in: Set version to 0.0.11. + + * gdb-patches/README, ChangeLog, TODO: Updated. + +2001-12-21 Theodore A. Roth + + * src/disp/disp.c: + Made pipe fd nonblocking to fix problem with blocking read. + Fixed wrefresh()es so that cursor is always in sram window. + + * src/Makefile.am: Fixed dtest dependencies. + + * src/main.c: + Notify user if they didn't spec a program to run and sim expects one. + + * src/avr.h, src/stack.c: fixed stack pointer display update ommision. + + * src/disp/disp.c: + Changed main loop to use select() for multiplexing the inputs. + +2001-12-20 Theodore A. Roth + + * src/decoder.c: + Changed how sreg is set in opcode handlers so as to only send display + sreg changes once per handler. + + * src/avr.h, src/register.c, src/utils.c: + Moved set_bit_in_byte() to utils.c and made it public. + Add set_bit_in_word(). + + * src/avrcore.c: Print out PC and (PC*2) when -D option is given. + + * src/decoder.c: + Fixed bug: Z flag wasn't using previous value in avr_op_CPC + instruction. + +2001-12-19 Theodore A. Roth + + * src/disp/Makefile.am, src/disp/disp.c, src/Makefile.am, + src/avr.h, src/avrcore.c, src/display.c, src/display.h, + src/dtest.c, src/eeprom.c, src/flash.c, src/main.c, src/memory.c, + src/register.c, src/sram.c, src/vdevs.h, doc/simulavr.texi, + config/enable_curses.m4, TODO, configure.in: + Added curses based register and memory display. + + * ChangeLog: updated + +2001-12-16 Theodore A. Roth + + * misc/gpl_header_h: + Changed multiple inclusion macros to reduce potential for clashes. + + * src/decoder.c: + Fixed a bug in the CP instruction which was clobbering a register. + +2001-12-11 Theodore A. Roth + + * src/avrcore.c, src/memory.c: + Fixed potential memory leaks due to incorrect object referencing. + + * src/avr.h, src/device.c, src/memory.c: + Changed memory vdev list to use DList. + + * src/utils.c: Added dlist_add_head() function. + + * src/vdevs.h: Typedef'd an enum which wasn't. + + * TODO: Updated + + * src/avr.h, src/avrcore.c, src/devsupp.c, src/devsupp.h: + Simplified mechanism for adding support for new microcontroller + devices. + + * src/vdevs.h: Fixed a typo in a comment. + + * Makefile.am: Added ProjSummary to EXTRA_DIST. + + * src/devsupp.c, src/devsupp.h: Added files. + Preparing to rework core-creation design to make adding support for new + devices easier. + + * src/avrcore.c: Moved device creation functions to devsupp.c. + + * src/main.c: Added -L, --list-devices command line option. + Changed to use devsupp.[ch] interface. + + * src/avr.h, src/gdb.h, src/vdevs.h: + Changed multiple inclusion macros to reduce potential for clashes. + + * src/Makefile.am: Added devsupp.h to sources. + + * src/Makefile.am: Added gdb.c to EXTRA_DIST. + Added devsupp.c to sources. + +2001-12-10 Theodore A. Roth + + * ChangeLog: + Converted to format which allows use of emacs to update from cvs logs. + + * ChangeLog, TODO, configure.in: 0.0.11-pre2 + + * Makefile_AVR_Rules: + When generating .lst files for avr, dump .data section too. + + * src/stack.c, src/storage.c, src/timers.c, src/utils.c, + src/avrcore.c, src/avrerror.c, src/avrmalloc.c, src/eeprom.c, + src/flash.c, src/gdb.c, src/gdbserver.c, src/ports.c, + src/register.c: Removed newlines from error message strings (do it + in _avr_error()). + + * src/decoder.c: + Removed newlines from error message strings (do it in _avr_error()). + Fixed lpm/elpm addressing problem. (Is the fix right though?) + + * src/main.c: + Removed newlines from error message strings (do it in _avr_error()). + Dump core to a file instead of stderr. + Dump core whenever avr_errror() is called. + +2001-12-09 Theodore A. Roth + + * ChangeLog, TODO, configure.in: 0.0.11-pre1 + + * test_c/Makefile.am, test_c/deep_frame.c: + Added deep_frame.c test program to project. + + * test_c/big_str.h, test_c/demo.c: + Moved ugly string into big_str.h header. + + * src/avr.h, src/avrcore.c, src/gdbserver.c, src/memory.c: + Added support for gdb querying io registers. + +2001-12-08 Theodore A. Roth + + * src/gdbserver.c: + Added support for writing registers via gdb remote protocol. + +2001-12-07 Theodore A. Roth + + * src/gdbserver.c: + Changed DATA_OFFSET to match what you get from avr-objdump output. + + * src/utils.c: + Fixed: Adding dlist node after head would be immediately unref'd. + +2001-12-06 Theodore A. Roth + + * TODO: Updated. + + * doc/simulavr.texi: Added object examples and discussion. + + * ChangeLog: Updated. + + * src/avrmalloc.c: Added newlines to error message string. + Fixed avr_strdup so that it checks ptr before returning. + + * Makefile.am: Formating cleanup. + + * src/avrclass.c: Added comments for all the functions. + + * doc/simulavr.texi: Updated documentation. + + * doc/Makefile.am: Added html and pdf generation rules. + +2001-12-05 Theodore A. Roth + + * src/avr.h, src/utils.c: Changed some dlist names for consistency + + * test_c/Makefile.am, test_c/demo_kr.c: Added demo_kr.c + + * test_c/demo.c: cond-compile out uglystring. + + * gdb-patches/README: updated + + * gdb-patches/gdb-5.0-avr-troth-patch: + synced up with autogenerated patch + + * gdb-patches/get_gdb_patches.sh: synced up with gdb cvs tree + + * src/avrcore.c: Plugged potential memory leak. + +2001-12-04 Theodore A. Roth + + * src/avr.h, src/avrcore.c, src/utils.c: + Changed callback mechanism to use generic DList linked list. + + * src/avrcore.c, src/utils.c: + Moved str2ffmt() and get_program_time() from avrcore.c to utils.c. + + * src/Makefile.am, src/avr.h, src/avrcore.c, src/utils.c: + Added generic doubly, linked list (DList). + Changed break point list to use DList. + +2001-12-03 Theodore A. Roth + + * gdb-patches/get_gdb_patches.sh: + Corrected comments explaining how to setup my gdb cvs. + +2001-12-02 Theodore A. Roth + + * TODO, INSTALL, README, README.gdb, README.opcodes: Updated. + + * gdb-patches/README, gdb-patches/gdb-5.0-avr-gdbserver-patch, + gdb-patches/gdb-5.0-avr-troth-patch, + gdb-patches/get_gdb_patches.sh, gdb-patches/patcher.sh: Updated to + handled my gdb branching scheme. + + * src/memory.c: + Dumping core now outputs io register info in more readable format. + +2001-11-30 Theodore A. Roth + + * src/gdbserver.c: Really fixed accept(2) failure mode problem. + + * gdb-patches/gdb-5.0-avr-troth-patch: + Renaming of gdb-5.0-avr-gdbserver-patch to gdb-5.0-avr-troth-patch. + + * gdb-patches/get_gdb_patches.sh: + Script for creating patches for gdb-5.0 from my gdb cvs tree. + + * src/Makefile.am: Delete symbolic links on a dist clean. + + * src/gdbserver.c: + Made addrLength volatile so gcc won't compile it away when optimizing. + +2001-11-29 Theodore A. Roth + + * Makefile.am: Moved doc dir to end of subdirs list. + + * src/Makefile.am, src/avr.h, src/avrcore.c, src/avrmalloc.c, + src/gdb.c, src/gdb.h, src/gdbserver.c, src/main.c, src/memory.c: + Deprecate gdb.c in favor of gdbserver.c - adds support for talking + to gdb without the need for gdbserver. Improved breakpoint + support. + +2001-11-25 Theodore A. Roth + + * src/main.c: Made usage message values more concise. + +2001-11-24 Theodore A. Roth + + * src/main.c, ChangeLog: Added -v, -version command line options. + + * ChangeLog, configure.in: Set version to 0.0.10 + + * src/avr.h, config/acconfig.h, Makefile.am, bootstrap, configure.in: + Use acconfig.h to set byte, word, dword and qword sizes. + +2001-11-22 Theodore A. Roth + + * TODO: Formatting and added more ac macro notes. + +2001-11-21 Theodore A. Roth + + * Makefile.am: Added Makefile_AVR_Rules. Fixed typo. + + * Makefile.am: Added patcher.sh to EXTRA_DIST. + + * Makefile.am: Add -p to mkdir on dist-hook. + + * configure.in, test_c/Makefile.am, + test_asm/test_8515/8515def.inc, test_asm/test_8515/Makefile.am, + test_asm/test_8515/test_cntr.asm, test_asm/8515def.inc, + test_asm/Makefile.am, test_asm/test.asm, src/Makefile.am, + config/avr_binutils.m4, config/avr_cc.m4, + config/avr_libc_headers.m4, config/check_gnu_make.m4, + config/enable_tests.m4, ChangeLog, INSTALL, Makefile.am, + Makefile_AVR_Rules, README, TODO: Convertion to autotools for + build system. + + * doc/Makefile.am, doc/simulavr.texi: + Added beginnings of texinfo based documentation. + +2001-11-17 Theodore A. Roth + + * src/avr.h, src/avrcore.c, src/flash.c, src/gdb.c: + Fixed to allow gdb to send odd memaddr or odd len on flash read/writes. + +2001-11-16 Theodore A. Roth + + * bootstrap: Added autotools bootstrap script. + + * test_c/Makefile, test_asm/test_8515/Makefile, test_asm/Makefile, + src/Makefile, Makefile, setup.py, MANIFEST.in: Removed Makefiles + in convertions to gnu autotools. + + * ChangeLog: updated. + + * test_c/demo.c: Added a really long string to test PC wrapping. + + * src/avr.h, src/avrcore.c: + Fixed problem with larger programs in which PC needed to wrap around. + + * misc/gpl_header_c, misc/gpl_header_h: + Added gpl headers for c programs. + +2001-11-14 Theodore A. Roth + + * ChangeLog, MANIFEST.in, setup.py: Updated for version 0.0.8. + + * gdb-patches/gdb-5.0-avr-gdbserver-patch: Fixed stepping bug. + Added version comment to head of file. + + * gdb-patches/README: Added patcher.sh description. + Removed comment about bug in stepping. + + * gdb-patches/patcher.sh: + Simple script to automate patching and installing avr-gdb. + + * src/gdb.c: Commented out some diagnostic messages. + + * Makefile: Added MANIFEST to clean rule. + + * test_c/Makefile: Added *.lst to clean rule. + + * Makefile: Added test_c to sub_dirs. + + * src/gdb.h: Header file for gdb.c. + + * ChangeLog: updated + + * README.gdb: Readme file for controlling simulator with gdb + + * src/gdb.c: + Support for running in gdb mode as an inferior of gdbserver. + + * src/main.c: Added gdb mode. + + * src/avrcore.c, src/avr.h: Added stack constants. + Added BREAK_POINT and INVALID_OPCODE constants. + Added break_pt field. + Added Program Memory Space Access Methods. + Added Break point access methods. + + * src/stack.c: + Use STACK_POINTER_BASE and STACK_POINTER_SIZE instead of hardcoded + values in constructor. + + * src/Makefile: Added gdb.c to main src list. + + * test_c/Makefile: Generated .lst file by default. + + * gdb-patches/README: Updated for first semi working gdb patch. + + * gdb-patches/gdb-5.0-avr-gdbserver-patch: + Updated patch. Seems to be mostly working now. + +2001-11-13 Theodore A. Roth + + * gdb-patches/gdb-5.0-avr-gdbserver-patch: + Updated patch. Mostly works, but still not done. + +2001-11-07 Theodore A. Roth + + * MANIFEST.in, setup.py, test_c/Makefile, test_c/demo.c: + Added a simple avr C program to the project. + + * src/main.c: Changed getopt() to getopt_long. + Added gdbserver mode option. + + * gdb-patches/README, gdb-patches/gdb-5.0-avr-gdbserver-patch, + gdb-patches/gdb-5.0-avr-patch-0.1: Added gdb patches and README. + +2001-11-02 Theodore A. Roth + + * ChangeLog, TODO, harness.py: Updated. + Removed harness.py. + + * src/avrcore.c: Print out how many clock cycles were executed. + + * src/avrcore.c, src/timers.c, src/vdevs.h: + Added TIMSK, TIFR registers via TimerIntr_T class. + Added Timer/Counter 0 support. + Added ability to stop simulator with a Ctrl-C keyboard interrupt. + + * src/main.c: Added -D command line option. + + * src/ports.c: Eliminated possible use of uninitialized variable. + + * src/avr.h: Added global_debug_inst_output. + + * src/register.c: Got rid of a few unnecessary casts. + +2001-11-01 Theodore A. Roth + + * src/vdevs.h, src/register.c: + Added core field to VDevice class and removed core field from any + VDevice derived class. + + * src/eeprom.c: + Added core field to VDevice class and removed core field from any + VDevice derived class. + Fixed contructor to use reset function correctly. + + * src/device.c, src/avrcore.c, src/avr.h: + Added core field to VDevice class and removed core field from any + VDevice derived class. + + * src/avr.h: Added comments to clk_cb and async_cb fields of core. + + * src/avrcore.c: + Move get_program_time() out of avr_core_cb_exec. Now time val is passed + as argument to allow time to either mean clocks or system time. + + * test_asm/test_8515/Makefile, test_asm/test_8515/test_toie0.asm, + test_asm/test_8515/test_toie0_2.asm: Added tests for timer/counter + 0 interrupts. + +2001-10-31 Theodore A. Roth + + * INSTALL, README: Updated. + + * setup.py: Updated version. + Modified so that it knows about move of python scripts into python dir. + + * test_asm/Makefile, Makefile: Added depend rule. + + * src/vdevs.h, src/register.c, src/eeprom.c, src/avrcore.c, src/avr.h: + Added async_cb to core struct: Now there are two callback lists in + the core. The old clk_cb list is only for callbacks that should be + called every clock cycle. The new async_cb list is for callbacks + that are called periodically even if the device is not being clocked. + Changed ClkCB -> CB_T, ClkCB_FP -> CB_FP_T to make the existing + callback code generic. + Removed the callback type field and methods. + Added CK and inst_CKS fields and methods. + Added async_cb methods. + +2001-10-30 Theodore A. Roth + + * src/decoder.c: Added inst_CKS setting to all opcode handlers. + + * src/register.c: + Make sure that an installed toe_cb is removed after a reset. + + * ChangeLog, TODO: Updated. + + * src/vdevs.h: Split TimerIntr class into TIMSK and TIFR. + + * src/timers.c: Code to handle timer/counter functionality. + + * src/register.c: Removed TimerIntr comment. + + * src/avr.h, src/avrcore.c: Added clk_cb type methods. + + * src/Makefile: Added timers.c. + +2001-10-29 Theodore A. Roth + + * src/avr.h, src/avrcore.c, src/eeprom.c, src/register.c: + Added clock callback type distinctions. + + * src/avr.h, src/avrcore.c, src/decoder.c, src/register.c, src/vdevs.h: + Encapsulation cleanups. + Renaming to make some functions more descriptive. + Added code to handle SLEEP modes via MCUCR. + + * src/Makefile: Added NDEBUG to DEBUG_FLAGS. + Compile lib before main. + +2001-10-26 Theodore A. Roth + + * ChangeLog: updated + +2001-10-21 Theodore A. Roth + + * src/avr.h, src/avrcore.c, src/main.c, src/memory.c, src/ports.c, + src/vdevs.h, ChangeLog, TODO: Got io ports as general digital io + working. + + * test_asm/test_8515/test_port.asm: + Rewrote to work correctly after testing on real hardware. + +2001-10-19 Theodore A. Roth + + * src/ports.c, src/vdevs.h: Simplified port code. + + * test_asm/test_8515/test_port.asm: Added port test to project. + + * setup.py: ver to 0.0.5 + + * src/Makefile, src/avrcore.c, src/ports.c, src/vdevs.h: + First cut at IO Ports. + + * src/main.c: Added device type listing to usage function. + +2001-10-18 Theodore A. Roth + + * src/Makefile, src/avr.h, src/avrcore.c, src/intvects.c, src/main.c: + Added support for 2313 device. + + * ChangeLog, TODO: Updated + + * test_asm/test.asm: Removed some commented out code. + + * src/register.c, src/vdevs.h: Starting timer/counter implementation. + +2001-10-16 Theodore A. Roth + + * src/avr.h, src/avrcore.c, src/register.c: + Added irq raise and clear functions. + + * src/register.c: Use interrupts issue the reset. + + * src/avrcore.c: Clear the interrupt flag after handling the interrupt. + + * src/Makefile, src/avr.h, src/avrcore.c, src/intvects.c: + Added interrupt infrastructure. + + * src/avr.h: Removed eeprom property from AvrCore struct. + + * src/eeprom.c: Fixed a typo in a comment. + + * src/avrcore.c, src/register.c, src/vdevs.h: + Renamed ascr -> acsr. That's the way it should have been named. + + * src/eeprom.c: Fixed use of uninitialized local variable. + + * TODO: updated + + * MANIFEST.in: Explicitly added Makefile to test_asm/test_8515. + + * test_asm/Makefile: Added tests to all rule. + + * ChangeLog, setup.py: updated + + * src/eeprom.c: Finished up the eeprom implementation. + + * src/vdevs.h: Finished up eeprom implementation. + + * src/register.c: + Changed clock callback functions to have data be AvrClass. + + * src/avrcore.c: Changed callback result check to be more sane. + Moved debug print statement. + Updated eeprom_new arg lists. + + * src/avr.h: Changed ClkCB_FP typedef args. + + * Makefile: Added realclean rule. + + * test_asm/test_8515/test_eeprom.asm: Program to test the eeprom code. + +2001-10-15 Theodore A. Roth + + * TODO, ChangeLog: updated + + * test_asm/test_8515/test_stack.asm: Improve use of macros. + + * setup.py: Updated version. + + * src/main.c: + Added a global storage for the avrcore as an aid in debugging. + + * src/vdevs.h: Completed wdtcr class. + + * src/stack.c: + Added reset handler for mem based stack pointer virtual device. + + * src/sram.c: Added reset handler. + + * src/register.c: Added reset handlers. + Added wdtcr virtual device. + + * src/memory.c, src/eeprom.c: Added reset handler. + + * src/device.c: Added reset handler to VDevice. + + * src/decoder.c: Completed wdr instruction handler. + Renamed opcode_FP to Opcode_FP. + + * src/avrcore.c: + Improved get_program_time() to safely handle system clock rollovers. + Added state property to avrcore class. + Changed exec_instruction to exec_next_instruction and fixed bug in + which PC/opcode weren't updated in the right order. + Fixed bug in adding new nodes to clk_cb list. + Added wdtcr vdevice to device generators. + + * src/avr.h: Added reset code. + Added watchdog control register based reset. + Reordered some typedefs for predeclarations. + Added state codes to avrcore class. + + * test_asm/test_8515/test_wdr.asm, test_asm/test_8515/test_wdr2.asm: + Test files for wdr instruction and wdtcr functionality. + +2001-10-13 Theodore A. Roth + + * src/avr.h: Added program time to callback system. + + * src/avrcore.c: Added program time to clock callback functions. + +2001-10-12 Theodore A. Roth + + * MANIFEST.in: Added asm include files + + * src/register.c, src/vdevs.h: Added watchdog class. + + * src/avrcore.c, src/avr.h: Added clock callback class. + + * src/avrcore.c: Added ascr. + + * src/register.c: Added ASCR methods. + Fixed mcucr destroy. + + * src/vdevs.h: argument name changes. + + * src/avrcore.c, src/device.c, src/eeprom.c, src/register.c: + * src/vdevs.h: + Got rid of some magic numbers. + Added mcucr vdevice. + + * src/avr.h: Added name field to virtual devices. + Added avr_core_step(), mem_get_vdevice_by_{name,addr}() functions. + + * src/avrcore.c: Added avr_core_step() function. + + * src/eeprom.c: Added name to vdevice. + + * src/memory.c: Added vdev lookup by addr and name functions. + Look up devices for core dump by name instead of address. + + * src/register.c, src/sram.c, src/stack.c: Added name to vdevice. + + * src/device.c: Added name field to vdevice. + + * src/Makefile: Changed dependency generation. + +2001-10-11 Theodore A. Roth + + * src/vdevs.h: Added eecr mask. + Added analog comp device. + + * src/eeprom.c: Added eecr mask. + + * src/avrcore.c: Added eecr_mask. + + * src/vdevs.h: Header for virtual devices. + + * src/avr.h: Moved virtual devices to vdevs.h. + + * src/avr.h, src/decoder.c: Made opcode handlers static. + + * src/Makefile, src/avr.h, src/avrcore.c, src/eeprom.c, + * src/main.c, src/memory.c: + Added eeprom virtual device. + + * src/avr.h, src/avrerror.c: + Modified message functions to output file and line numbers. + + * src/Makefile: + Added conditional rules to allow compiling with or without + optimizations. + + * MANIFEST.in, Makefile, setup.py: Distribution updates. + + * README, TODO, harness.py: Updates. + + * src/Makefile, src/avr.h, src/avrclass.c, src/avrcore.c, + src/avrerror.c, src/avrmalloc.c, src/decoder.c, src/device.c, + src/flash.c, src/main.c, src/memory.c, src/op_names.c, + src/register.c, src/sram.c, src/stack.c, src/storage.c: First + checkin of source for C coded simulator. + + * test_asm/test_8515/test_blink.asm, + test_asm/test_8515/test_stack.asm, test_asm/8515def.inc, + test_asm/Makefile, test_asm/test.asm: Modified to work with avr-as + instead of Atmel's avrasm. + +2001-10-01 Theodore A. Roth + + * TODO: updated + + * Makefile, setup.py, MANIFEST.in: + Updated to use setup.py and MANIFEST.in to build a distribution. + + * ChangeLog, INSTALL: Added. + + * harness.py: updated usage + + * README, README.opcodes, TODO: updated + + * Makefile, README, harness.py, setup.py, test_asm/Makefile: + Added GPL header. + + * AUTHORS, COPYING, misc/gpl_header: Added. + + * harness.py: Added Connections class for handling port connections. + + * TODO, test_asm/test.asm: updated + +2001-09-28 Theodore A. Roth + + * MANIFEST.in, Makefile, README, README.opcodes, TODO, harness.py, + setup.py, test_asm/Makefile, test_asm/test.asm, + test_asm/test_8515/test_blink.asm, + test_asm/test_8515/test_stack.asm: Imported source. + + * MANIFEST.in, Makefile, README, README.opcodes, TODO, harness.py, + setup.py, test_asm/Makefile, test_asm/test.asm, + test_asm/test_8515/test_blink.asm, + test_asm/test_8515/test_stack.asm: New file. + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2002 b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2002 new file mode 100644 index 0000000..67f80f7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2002 @@ -0,0 +1,969 @@ +2002-11-16 Theodore A. Roth + + * configure.in: Bump version. + * src/disp-vcd/config_parser.y: Reformat code. + * src/disp-vcd/config_scanner.l: Reformat code. + * src/disp-vcd/disp.c: Reformat code. Remove dead code. + * src/disp-vcd/vcd.c: Reformat code. + * src/disp-vcd/vcd.h: #define VCD_H. + +2002-11-15 Theodore A. Roth + + * configure.in: Add checks for yacc and lex. + Add creation of src/disp-vcd/Makefile. + * src/Makefile.am: Add disp-vcd subdir. + * src/disp-vcd/Makefile.am: New file. + + Thanks to Carsten Beth for contributing the following files: + + * src/disp-vcd/config_parser.y: New file. + * src/disp-vcd/config_scanner.l: New file. + * src/disp-vcd/disp.c: New file. + * src/disp-vcd/vcd.c: New file. + * src/disp-vcd/vcd.cfg: New file. + * src/disp-vcd/vcd.h: New file. + +2002-11-13 Theodore A. Roth + [Thanks to Carsten Beth for + the display_clock code.] + + * configure.in: Bump version. + * doc/simulavr.texi: Add clock ticks to display protocol. + * src/avrcore.c: Add code for displaying clock ticks. + Fix some minor typos. + * src/display.c: Add display_clock() function. + * src/display.h: Add display_clock() prototype. + * src/flash.c: Fix a comment typo. + +2002-10-28 Theodore A. Roth + + * configure.in: Check for autoconf-2.13. + Bump version. + * config/check_autoconf213.m4: New file. + +2002-10-20 Theodore A. Roth + + * configure.in: Bump version. + * bootstrap: Make compatible with RedHat-8.0 autotools. + +2002-10-15 Theodore A. Roth + + * src/avrcore.c: Add real simulation of rampz register. + * src/avrcore.h: Ditto. + * src/decoder.c: Ditto. + * src/register.c: Ditto. + * src/register.h: Ditto. + +2002-10-15 Theodore A. Roth + + * src/avrcore.c src/avrcore.h src/decoder.c * src/gdb.h + * src/gdbserver.c src/op_names.c src/op_names.h: + Add BREAK insn handling to decoder. + Refactor break point mechanism to use the BREAK instruction. + Remove some dead code. + Remove INVALID_VALID opcode usage. + Streamlining of opcode execution loop. + * configure.in: Bump version. + +2002-10-12 Theodore A. Roth + + * src/gdb.h: Define BREAK_POINT and INVALID_OPCODE. + Use sdword instead of dword in CommFunc*PC typedefs. + * src/gdbserver.c: Remove BREAK_POINT and INVALID_OPCODE enum entries. + (gdb_write_memory): Reply to gdb with error if target can't write + flash. + * src/op_names.h: Define BREAK_POINT and INVALID_OPCODE instead of + enums. + +2002-10-12 Theodore A. Roth + + * Makefile.am: Add man pages. + * configure.in: Add man pages. Bump version. + * simulavr-disp.1.in: New file (Thanks to Shaun Jackman). + * simulavr.1.in: New file (Thanks to Shaun Jackman). + * simulavr.spec.in: Add man pages. + +2002-10-12 Theodore A. Roth + + * src/main.c: Print usage to stdout instead of stderr. + +2002-10-08 Theodore A. Roth + + * src/avrcore.c: Make core PC access methods use signed 32 bit values. + * src/avrcore.h: Ditto. + +2002-10-08 Theodore A. Roth + + * config/avr_doc_pdf.m4: Use '=' instead of '==' in tests. + * config/avr_doc_ps.m4: Ditto. + * config/enable_curses.m4: Ditto. + +2002-09-30 Theodore A. Roth + + * src/avrcore.c, src/eeprom.c, src/eeprom.h, src/main.c: + Add ability to load an eeprom data image into eeprom space. + +2002-09-20 Theodore A. Roth + + * src/avrcore.h: Change PC values to signed (fix rjmp wrap problem). + +2002-09-19 Theodore A. Roth + + * doc/simulavr.texi: Document -X and -C options. Overfill fixups. + * src/main.c: Add -C option so core dumps are only generated at users + request. + +2002-09-15 Theodore A. Roth + + * src/Makefile.am src/disp/Makefile.am: + Add -Wall and -Werror to AM_CFLAGS. + + * src/avrcore.c, src/ports.c, src/disp/disp.c: + Quell warnings. + +2002-09-15 Theodore A. Roth + + * src/avrcore.c, src/decoder.c, src/op_names.h: + Handle unknown opcodes as NOP's. + +2002-09-11 Theodore A. Roth + + * src/gdb.h, src/gdbserver.c, src/main.c: + Make gdbserver.c generic so it can be used by other projects. + +2002-09-09 Theodore A. Roth + + * Tagged for 0.1.1 release. + * configure.in: Set version to 0.1.1. + +2002-09-09 Theodore A. Roth + + * doc/simulavr.texi: + Add note about use of :1212 instead of localhost:1212. + +2002-09-08 Theodore A. Roth + + * src/display.c: Remove display debug output. (speeds things up) + +2002-09-08 Joerg Wunsch + + * src/disp/disp.c: Stop cursor flicker on screen updates. + +2002-09-06 Theodore A. Roth + + * src/disp/disp.c: Indent switch statement. + +2002-09-06 Theodore A. Roth + + * src/disp/disp.c: Finish implementing the 'g' command. + +2002-09-06 Theodore A. Roth + + * src/disp/disp.c: Add floating point register display. + +2002-09-05 Joerg Wunsch + + * src/disp/disp.c: Speed up disp by only refreshing when idle. + +2002-09-05 Theodore A. Roth + + * src/gdbserver.c: Reorder some includes to stop errors on FreeBSD. + +2002-09-05 Theodore A. Roth + + * configure.in: Bump version to 0.1.1pre1. + * simulavr.spec.in: Require avr-gdb >= 5.2.1. Disable pdf dox (temp). + * test_c/deep_frame.c: Update to use latest avr-libc headers. + * test_c/demo.c: Update to use latest avr-libc headers. + * test_c/demo_kr.c: Update to use latest avr-libc headers. + +2002-09-05 Theodore A. Roth + + * bootstrap: Improve checks for correct autotools. (Joerg Wunsch) + * Makefile.am, configure.in, doc/Makefile.am: Allow installation + of docs into a directory without the version number. (Joerg Wunsch) + +2002-09-05 Theodore A. Roth + + * src/disp/Makefile.am: Use supplied gnu_getopt.c/gnu_getopt1.c. + * src/disp/disp.c: Include gnu_getopt.h instead of getopt.h. + +2002-09-04 Theodore A. Roth + + * doc/simulavr.texi, src/avrcore.c, src/avrcore.h, src/display.c, + * src/display.h, src/dtest.c, src/main.c, src/sram.c, src/sram.h, + * src/storage.c, src/storage.h, src/disp/disp.c: + Change way disp co-process is called to include sram start addr. + New keyboard movement commands for simulavr-disp: + - Home key jumps to addr 0x00. + - End key jumps to last sram addr. + - Page Up key moves cursor up a screen of data. + - Page Down key moves cursor down a screen of data. + - 'g' key will allow user to jump (goto) an addr (not fully + implemented, but stubbed out). + +2002-09-04 Theodore A. Roth + + * doc/Makefile.am: s/make -C/${MAKE} -C/ for portability. + * doc/doxygen.config.in: Set USE_PDFLATEX to no. + +2002-09-02 Theodore A. Roth + + * doc/simulavr.texi: Add note about avr support in gdb-5.2.1. + +2002-08-28 Theodore A. Roth + + * src/ports.c: Fix bug when reading io ports. + +2002-08-28 Theodore A. Roth + + * src/devsupp.c, src/intvects.c, src/sram.h: + Add mega103 support. + + * src/decoder.c: + Comment out warning message in avr_op_ELPM_Z_incr(). + +2002-08-27 Theodore A. Roth + + * configure.in: Add AVR_DOC_PS. + * config/avr_doc_ps.m4: New file. + * config/check_doxygen.m4: Inherit from AVR_DOC_P{S,DF}. + * doc/Makefile.am(all-local): ps -> $(TARGET_PS) + +2002-08-09 Theodore A. Roth + + * bootstrap: Check for correct versions of automake/autoconf. + +2002-08-02 Theodore A. Roth + + * src/gdbserver.c: + Fix to stop gdb_write_register() from parsing to many characters when + setting PC. + +2002-07-31 Theodore A. Roth + + * src/gdbserver.c: + Fix 'P' and 'p' packets to write/read PC as 4 bytes. + +2002-07-19 Theodore A. Roth + + * src/intvects.c: + Fix interrupt vector addresses for mega128. + +2002-07-16 Theodore A. Roth + + * src/avrcore.c, src/avrcore.h, src/decoder.c, src/devsupp.c, + src/disp/disp.c, src/intvects.c, src/intvects.h, src/sram.h, + src/utils.c, src/utils.h: + Refactored interrupt internals to improve flexibility. + Added minimal mega128 support. + + * doc/doxygen.config.in: + Config tweaks. + +2002-07-10 Theodore A. Roth + + * src/decoder.c: + Fixed bug in elpm opcodes. + +2002-06-08 Theodore A. Roth + + * src/decoder.c: + Fix fmul* opcodes. Thanks to Jeff Mock. + +2002-05-27 Theodore A. Roth + + * src/display.c, src/display.h, src/dtest.c, src/main.c: + Added -X, --without-xterm command line options. + + * src/register.c: + Fix copy and paste error. D'oh! + +2002-05-26 Theodore A. Roth + + * Makefile.am: + Add removal of CVS control dirs from distribution. + + * src/register.c: + Fix bug in which mcucr and acsr constructors didn't init func_mask. + +2002-04-29 Theodore A. Roth + + * src/avrcore.c: + Fixed typo in comment. + +2002-04-18 Theodore A. Roth + + * README.ext_int: + Added temp file for working out external interface design. + + * doc/simulavr.texi: + Send bug reports to simulavr development mailing list instead of me. + Updated gdb hints section. + +2002-04-17 Theodore A. Roth + + * src/device.c, src/devsupp.c, src/devsupp.h, + src/disp/Makefile.am, src/disp/disp.c, src/display.h, + src/dtest.c, src/eeprom.c, src/flash.c, src/gdb.h, + src/gnu_getopt.c, src/gnu_getopt.h, src/gnu_getopt1.c, + src/intvects.c, src/memory.c, src/op_names.c, src/ports.c, + src/register.c, src/sig.c, src/sig.h, src/sram.c, src/stack.c, + src/storage.c, src/timers.c, src/utils.c, src/vdevs.h, + test_asm/Makefile.am, test_asm/test_8515/Makefile.am, + test_c/Makefile.am, test_c/demo_kr.c, Makefile.am, + Makefile_AVR_Rules, acconfig.h, doc/Makefile.am, + src/Makefile.am, src/avrclass.c, src/avrcore.c, src/avrcore.h, + src/avrerror.c, src/avrmalloc.c, src/decoder.c: + Updated copyright year. + + * doc/simulavr.texi: + Removed unused indices. + Updated copyright year. + +2002-04-15 Theodore A. Roth + + * Released 0.1.0 ("The Tax Man Commeth" release ;-). + + * configure.in: + Bumped version to 0.1.0. + +2002-04-12 Theodore A. Roth + + * INSTALL, README, TODO, regress/test_opcodes/TODO: + Minor documentation cleanups. + + * simulavr.spec.in: + Added avr-gdb >= 5.1.90 as a install requirement. + Added doxygen as a build requirement. + +2002-04-11 Theodore A. Roth + + * README.gdb, gdb-patches/README, regress/modules/gdb_rsp.py, + src/gdbserver.c: + Changed size of PC as passed to and from gdb from 2 to 4 bytes to + sync up with new gdb behaviour. + + * src/avrcore.c, src/avrcore.h: + Changed PC from int to dword to avoid potential problems with + truncation. + + * gdb-patches/patcher.sh, gdb-patches/get_gdb_patches.sh: + Removed obsolete files. + +2002-04-05 Theodore A. Roth + + * configure.in: Bumped version to 0.1.0pre. + + * doc/simulavr.texi: + Moved Internals chapter to doxygen. + + * src/maindoc.c: + Moved Internals documentation from texinfo file to here. + + * src/Makefile.am: + Added maindoc.c to EXTRA_DIST list. + + * src/main.c: + Updated copyright year. + + * regress/modules/base_test.py, regress/test_opcodes/Makefile.am: + * regress/test_opcodes/TODO, regress/test_opcodes/test_CPSE.py: + * regress/test_opcodes/test_LPM.py: + * regress/test_opcodes/test_LPM_Z.py: + * regress/test_opcodes/test_LPM_Z_incr.py: + * regress/test_opcodes/test_SBRC.py: + * regress/test_opcodes/test_SBRS.py: + Added more regression test cases. + + * src/decoder.c: + Removed another check for undefined op which is defined. + Fixed LPM_Z_incr where Z should not be div 2. + +2002-04-04 Theodore A. Roth + + * regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO: + * regress/test_opcodes/test_STD_Y.py: + * regress/test_opcodes/test_STD_Z.py: + * regress/test_opcodes/test_ST_X.py: + * regress/test_opcodes/test_ST_X_decr.py: + * regress/test_opcodes/test_ST_X_incr.py: + * regress/test_opcodes/test_ST_Y_decr.py: + * regress/test_opcodes/test_ST_Y_incr.py: + * regress/test_opcodes/test_ST_Z_decr.py: + * regress/test_opcodes/test_ST_Z_incr.py: + Added more regression test cases. + + * src/decoder.c: + Removed some invalid error checks (operations are not undefined). + + * regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO: + * regress/test_opcodes/test_LDD_Y.py: + * regress/test_opcodes/test_LDD_Z.py: + * regress/test_opcodes/test_LD_X.py: + * regress/test_opcodes/test_LD_X_decr.py: + * regress/test_opcodes/test_LD_X_incr.py: + * regress/test_opcodes/test_LD_Y_decr.py: + * regress/test_opcodes/test_LD_Y_incr.py: + * regress/test_opcodes/test_LD_Z_decr.py: + * regress/test_opcodes/test_LD_Z_incr.py: + Added more regression tests. + + * src/decoder.c: + Make X, Y and Z registers words instead of ints. + +2002-04-03 Theodore A. Roth + + * regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO: + * regress/test_opcodes/test_LDS.py: + * regress/test_opcodes/test_STS.py: + Added new test cases. + + * regress/modules/base_test.py: + Added mem_byte_{read,write}() methods for accessing memory. + +2002-04-02 Theodore A. Roth + + * regress/modules/base_test.py, regress/test_opcodes/Makefile.am: + * regress/test_opcodes/TODO, regress/test_opcodes/test_MUL.py + * regress/test_opcodes/test_MULS.py: + * regress/test_opcodes/test_MULSU.py: + * regress/test_opcodes/test_RET.py: + * regress/test_opcodes/test_RETI.py: + Added more opcode tests (thanks Josef Angermeier). + + * src/decoder.c: + Untabified file (probably shouldn't have though). + Fixed some bugs in avr_op_{MUL,MULS,MULSU}() (thanks Josef Angermeier). + Fixed bug in which MULSU instruction wasn't decoded correctly. + + * acconfig.h: + Added signed versions of byte, word, dword and qword. + + * AUTHORS: + Added Josef Angermeier to contributors. + +2002-04-01 Theodore A. Roth + + * src/disp/disp.c: + Fixed bug in which io reg names were lost if window was resized. + + * src/gdbserver.c: + Disabled attempt to catch zero pointer dereferencing since it's + not working right. + +2002-03-26 Theodore A. Roth + + * src/stack.c: + Updated comments about push/pop. + Fixed bug in which display_io_reg() was called twice. + + * src/display.c: + Catch interrupted write to make sure co-process can be told to quit. + +2002-03-24 Theodore A. Roth + + * src/avrclass.c, src/avrcore.c, src/ports.c: + More documentation updates. + +2002-03-19 Theodore A. Roth + + * src/timers.c, src/utils.c, src/avrcore.c, src/devsupp.c, + src/flash.c, src/memory.c, src/ports.c, src/sig.c, src/stack.c: + More conversion of comments to doxygen documentation. + + * AUTHORS: Updated. + +2002-03-18 Theodore A. Roth + + * misc/gpl_header_h, src/avrclass.h, src/avrcore.h, + src/avrerror.h, src/avrmalloc.h, src/callback.h, src/decoder.h, + src/devsupp.h, src/display.h, src/eeprom.h, src/flash.h, + src/gdb.h, src/intvects.h, src/memory.h, src/op_names.h, + src/ports.h, src/register.h, src/sig.h, src/sram.h, src/stack.h, + src/storage.h, src/timers.h, src/utils.h, src/vdevs.h: + Changed all header protection defines to SIM_xxxx_H to avoid cpp + clashes. + +2002-02-26 Theodore A. Roth + + * doc/simulavr.texi: + Make info dir entry consistent with other avr tool entries. + + * Makefile.am, src/Makefile.am: + Use DIST_SUBDIRS to put files is dist tarball which are + conditionally set. + +2002-02-25 Theodore A. Roth + + * src/display.c, src/sig.c, src/sig.h: + Include signal.h in *.c not *.h. + +2002-02-24 Theodore A. Roth + + * src/callback.c: + New file. + + * configure.in: + Changed init to use avrcore.h instead of avr.h. + + * acconfig.h, src/Makefile.am, src/avr.h, src/avrclass.c, + src/avrclass.h, src/avrcore.c, src/avrcore.h, src/avrerror.c, + src/callback.h, src/decoder.c, src/decoder.h, src/device.c, + src/devsupp.c, src/devsupp.h, src/display.c, src/dtest.c, + src/eeprom.c, src/eeprom.h, src/flash.c, src/flash.h, + src/gdbserver.c, src/intvects.c, src/intvects.h, src/main.c, + src/memory.c, src/memory.h, src/op_names.c, src/op_names.h, + src/ports.c, src/ports.h, src/register.c, src/register.h, + src/sig.c, src/sram.c, src/sram.h, src/stack.c, src/stack.h, + src/storage.c, src/storage.h, src/timers.c, src/timers.h, + src/utils.c, src/utils.h, src/vdevs.h: + Header file reorganization. + + * doc/doxygen.config.in: + Added DOXYGEN to PREDEFINED. + Set ENUM_VALUES_PER_LINE to 1. + +2002-02-23 Theodore A. Roth + + * src/Makefile.am: + Added avrerror.h and avrmalloc.h. + + * src/avr.h, src/vdevs.h: + Moved _VDevice and methods from avr.h to vdevs.h. + + * src/avr.h, src/avrmalloc.c, src/avrmalloc.h, src/avrerror.c: + * src/avrerror.h: + Header file cleanup and documentation update. + + * doc/doxygen.config.in: + Added MACRO_DOCUMENTATION for precompiler parser. + + * regress/test_opcodes/test_INC.py: + Fixed bug in calculation of expect V flag. + + * regress/test_opcodes/test_ADC.py, + regress/test_opcodes/test_ADD.py, + regress/test_opcodes/test_ADIW.py, + regress/test_opcodes/test_AND.py, + regress/test_opcodes/test_ANDI.py, + regress/test_opcodes/test_CPI.py, + regress/test_opcodes/test_DEC.py, + regress/test_opcodes/test_INC.py, + regress/test_opcodes/test_NEG.py, + regress/test_opcodes/test_SBC.py, + regress/test_opcodes/test_SBIW.py: + Fixed a few minor problems. + Added more test values to make sure all sreg bits are exercised. + + * regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO, + regress/test_opcodes/test_DEC.py, + regress/test_opcodes/test_EOR.py, + regress/test_opcodes/test_INC.py, + regress/test_opcodes/test_LDI.py, + regress/test_opcodes/test_LSR.py, + regress/test_opcodes/test_NEG.py, + regress/test_opcodes/test_OR.py, + regress/test_opcodes/test_ORI.py, + regress/test_opcodes/test_RJMP.py, + regress/test_opcodes/test_ROR.py, + regress/test_opcodes/test_SBC.py, + regress/test_opcodes/test_SBCI.py, + regress/test_opcodes/test_SBIW.py, + regress/test_opcodes/test_SUB.py, + regress/test_opcodes/test_SUBI.py: + Added new test cases. + + * regress/test_opcodes/test_ASR.py: + Made expect value calculation more explicit. + +2002-02-22 Theodore A. Roth + + * regress/regress.py.in: + Change to insure that simulator is killed. + + * regress/test_opcodes/test_COM.py: + Added missing underscore. + + * src/decoder.c: + Fixed bug in avr_op_NEG: H flag wasn't set correctly. + + * regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO, + regress/test_opcodes/test_COM.py, + regress/test_opcodes/test_CP.py, + regress/test_opcodes/test_CPC.py, + regress/test_opcodes/test_CPI.py: + Added new test cases. + +2002-02-21 Theodore A. Roth + + * regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO, + regress/test_opcodes/test_ADIW.py, + regress/test_opcodes/test_AND.py, + regress/test_opcodes/test_ANDI.py, + regress/test_opcodes/test_ASR.py: + Added new test cases. + +2002-02-20 Theodore A. Roth + + * regress/regress.py.in: + Changed test case message. + + * regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO, + regress/test_opcodes/test_ADC.py, + regress/test_opcodes/test_ADD.py, + regress/test_opcodes/test_MOV.py, + regress/test_opcodes/test_MOVW.py: + Added new test cases. + + * regress/modules/base_test.py, regress/test_opcodes/Makefile.am, + regress/test_opcodes/test_BCLR.py, regress/test_opcodes/test_BLD.py, + regress/test_opcodes/test_BRBC.py, regress/test_opcodes/test_BRBS.py, + regress/test_opcodes/test_BSET.py, regress/test_opcodes/test_BST.py, + regress/test_opcodes/test_NOP.py, regress/test_opcodes/test_SWAP.py: + Simplified test cases by moving target access and repeated checks + into base_test.py. + + * regress/test_opcodes/TODO: + Fix cvs Id tag. + +2002-02-19 Theodore A. Roth + + * TODO, INSTALL: + Updated regression test suite information. + + * regress/Makefile.am: + Tee regression output to a file. + + * regress/regress.py.in: + Added code to automate spawning an instance of the simulator. + + * regress/regress.py.in: + Reverted threading. With latest change to gdbserver.c, it's faster to + run regression tests from a single thread. + + * src/gdbserver.c: + Fix a problem in which latest cvs gdb would timeout in mid-packet. + As a side effect, gdb-to-simulavr communication is faster. + +2002-02-16 Theodore A. Roth + + * src/gdbserver.c: + Fixed incorrect removal of addr offset bits. + Stubbed out read/write of eeprom space from gdb (`x/b 0x81xxxx`). + +2002-02-15 Theodore A. Roth + + * doc/doxygen.config.in: + Turn on html tree view. + +2002-02-13 Theodore A. Roth + + * src/Makefile.am, src/gdb.c: + Removed src/gdb.c. Old and in the way. + + * src/gdbserver.c: + Renamed gdb_extract_reg_num() to gdb_extract_hex_num() and made it + more general. Code cleanups. Made output for -G more consistent. + + * src/gdbserver.c: + Tell TCP not to delay small packets, this speeds up response. + + * src/main.c: + Issue a warning if user selects unimplemented file format. + + * src/utils.c: + Fix so '-F bin' option works. + +2002-02-12 Theodore A. Roth + + * Released 0.0.14 + + * INSTALL, README, README.gdb, doc/simulavr.texi, + gdb-patches/README, regress/README: + Documentation updates. + + * configure.in: + Set version to 0.0.14. + + * regress/regress.py.in: + Fixed a typo. + + * regress/regress.py.in: + Added threading to speed up running test cases. + Added command line option parser. + + * regress/modules/gdb_rsp.py: + + Fix to only ever recv 1 byte at a time. Threading was causing + recv(2) to only return a single byte. + Added arguments when raising exceptions. + + * src/gdbserver.c: + Added missing cksum output if debug is on. + +2002-02-11 Theodore A. Roth + + * Makefile.am, simulavr.spec.in: + Fix to keep regress in SUBDIRS if python not found. + Sync up what is installed in docdir. + +2002-02-10 Theodore A. Roth + + * Makefile.am: + Fix to get spec file into dist file. + + * simulavr.spec.in: + Moved documentation into simulavr-docs subpackage. + + * config/check_doxygen.m4: + Removed unused AC_SUBST(). + + * Makefile.am, configure.in, doc/Makefile.am: + Remove --with-docdir configure option, install docs relative to + datadir instead. + + * doc/Makefile.am: + Added EXTRA_DIST files. + + * TODO, config/check_doxygen.m4, configure.in, doc/Makefile.am: + Integration of doxygen into build system. + + * doc/doxygen.config.in: + Added custom html files. + Changed directory structure. + Added LaTeX output to get ps/pdf files. + + * doc/dox.css, doc/dox_html_footer, doc/dox_html_header: + Added customized html files. + + * src/display.c: + Fixed doxygen comment. + + * doc/texinfo.tex: + Added to avoid using broken texinfo.tex files for pdf generation. + +2002-02-08 Theodore A. Roth + + * src/avrcore.c, src/device.c, src/flash.c, src/memory.c, + src/ports.c, src/register.c, src/stack.c, src/utils.c: + Removed inline modifiers. Better to let the compiler do it. + + * src/gdb.h, src/gdbserver.c, src/main.c: + Added command line option to turn gdb debug messages on (off by + default). + + * simulavr.spec.in: + Added optimization flags. + + * INSTALL: + Added notes on optimizing and regression tests. + + * Makefile.am, configure.in, simulavr.spec.in: + Added rpm spec file. + + * doc/simulavr.texi: + Added dir.info fragment. Updated description. + + * src/disp/Makefile.am: + Changed disp program name to simulavr-disp. + + * ProjSummary: + Changed URL. + +2002-02-05 Theodore A. Roth + + * config/avr_doc_pdf.m4: + Corrected grammar. + + * regress/test_opcodes/TODO, regress/test_opcodes/test_BST.py, + regress/test_opcodes/Makefile.am: + Added test case for BST. + + * regress/test_opcodes/TODO, regress/test_opcodes/test_BLD.py, + regress/test_opcodes/Makefile.am: + Added test case for BLD. + + * regress/modules/registers.py: + Added SREG class for naming sreg bits. + + * src/decoder.c: + Fixed bug in avr_op_BLD. + + * Makefile.am, config/check_python.m4, configure.in, + misc/gpl_header_py, regress/Makefile.am, regress/README, + regress/modules/Makefile.am, regress/modules/avr_target.py, + regress/modules/base_test.py, regress/modules/gdb_rsp.py, + regress/modules/registers.py, regress/regress.py.in, + regress/test_opcodes/Makefile.am, regress/test_opcodes/TODO, + regress/test_opcodes/test_BCLR.py, + regress/test_opcodes/test_BRBC.py, + regress/test_opcodes/test_BRBS.py, + regress/test_opcodes/test_BSET.py, + regress/test_opcodes/test_NOP.py, + regress/test_opcodes/test_SWAP.py: + Added regression test framework. + +2002-02-02 Theodore A. Roth + + * src/gdbserver.c: + Send 'E' reply when gdb tries to read/write memory in reg range. + +2002-01-31 Theodore A. Roth + + * src/avr.h, src/avrcore.c, src/decoder.c: + Speed optimization for decoder by using a lookup table. + + * src/gdbserver.c: + Perform a reset when gdb sends the kill command. + + * src/decoder.c: + Fixed some comments. + +2002-01-29 Theodore A. Roth + + * src/gdbserver.c: + Fixed read/write of PC reg with 'P' and 'p' packets. + +2002-01-26 Theodore A. Roth + + * src/gdbserver.c: + Added support for 'P' and 'p' packets. + + * src/avrclass.c: + Converted comments to doxygen format. + +2002-01-25 Theodore A. Roth + + * src/Makefile.am, src/gnu_getopt.c, src/gnu_getopt.h, + src/gnu_getopt1.c, src/main.c: + Added gnu getopt files to improve portability of getopt_long. + +2002-01-24 Theodore A. Roth + + * src/gdbserver.c: + Fix to allow interruption of stepping on infinite loop. + +2002-01-09 Theodore A. Roth + + * Released 0.0.13 + + * configure.in: + Updated copyright date and set version to 0.0.13. + + * config/check_texinfo.m4: + Added more program checks. + +2002-01-08 Theodore A. Roth + + * ChangeLog: Updated. + + * doc/doxygen.config.in: + Set BRIEF_MEMBER_DESC to NO. + + * src/display.c, src/gdbserver.c: + Updated comments for doxygen. + + * Makefile.am, config/check_texinfo.m4, configure.in: + Added check for texinfo: if not found, do not build doc dir. + + * doc/doxygen.config.in: + Updated configuration. + + * src/utils.c: + Updated comments for doxygen. + + * config/enable_curses.m4: + Added check for resizeterm function. + Only check for libs if enabled. + + * src/utils.c: + Changed get_program_time() to make it more portable. + + * configure.in: + Bumped version to 13-pre4. + + * misc/gpl_header, misc/gpl_header_c, misc/gpl_header_h: + Updated copyright date. + + * TODO, src/gdbserver.c: + Implemented writing to sram. + +2002-01-07 Theodore A. Roth + + * TODO: Removed disp term resizing. + + * src/decoder.c: + Fixed bug setting carry flag in LSR handler + + * src/disp/disp.c, src/display.c: + Implemented terminal resizing of display. + Removed forking of xterm in psuedo term mode. + +2002-01-06 Theodore A. Roth + + * ChangeLog, TODO: + Updated. + + * src/display.c, src/gdbserver.c: Fixed problem with display zombies. + + * src/register.c: Set all general purpose registers to zero on reset. + + * test_asm/test_8515/Makefile.am: + Fix problem with 'make dist' from directory other than source. + Run elf files through linker to allow source stepping in gdb. + + * Makefile.am: + Fix problem with 'make dist' from directory other than source. + + * config/avr_doc_dirsuffix.m4: Added version to doc install dir. + + * config/avr_binutils.m4: Added check for avr-ld. + + * configure.in: Bumped version to 13-pre3. + + * src/gdbserver.c, doc/simulavr.texi: + Added support for 'C' and 'S' packets (cont/step with signal). + Issuing a 'signal SIGHUP' command from gdb will cause sim to reset. + Documented SIGHUP behaviour. + + * TODO: Updated, added road map. + + * Makefile_AVR_Rules: Added --gstabs when assembling. + +2002-01-05 Theodore A. Roth + + * test_asm/test_8515/test_blink.asm: + Fix to allow avr-ld to create a relocated object. + +2002-01-04 Theodore A. Roth + + * doc/Makefile.am, config/acconfig.h, config/avr_doc_dirsuffix.m4, + config/avr_doc_pdf.m4, Makefile.am, acconfig.h, bootstrap, + configure.in: + Applied Reinhard Jessich's patch for installing docs. + Fixed problem with config.h not getting updated which would break + compiling. + +2002-01-03 Theodore A. Roth + + * src/gdbserver.c: Added documentation comments for doxygen. + Added infinite loop around tcp server. + + * src/gdbserver.c: Removed redundant if clause. + + * src/Makefile.am, src/avr.h, src/avrcore.c, src/gdbserver.c, + src/sig.c, src/sig.h: + Encapsulated signal handling into sig.c. + +2002-01-02 Theodore A. Roth + + * src/gdbserver.c: Correctly handle gdb sending C-c interrupt. + + * src/gdbserver.c: + Modified to allow gdb to send an interrupt while sim is in + continue loop. + + * src/gdbserver.c: + Applied Tor Ringstad's patch to improve SIGINT handling. + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2003 b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2003 new file mode 100644 index 0000000..6987962 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ChangeLog-2003 @@ -0,0 +1,676 @@ +2003-12-03 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/avrcore.c (avr_core_step): Make sure that one instruction is + executed after a RETI (return from interrupt). + +2003-12-02 Theodore A. Roth + + * src/avrcore.c (avr_core_check_interrupts): Don't inline since some + versions of gcc can't inline this function. + +2003-12-02 Theodore A. Roth +[Contributed by Keith Gudger ] + + * configure.ac (AC_INIT): Bump version. + * src/devsupp.c (defn_atmega103): Enable adc support. + * src/intvects.c (vtab_at43usb355): Fix TIMER1_COMPB irq name. + (vtab_at43usb320): Ditto. + (vtab_at43usb325): Ditto. + +2003-12-02 Theodore A. Roth + + * src/avrcore.c: + * src/decoder.c: + * src/decoder.h: + * src/device.c: + * src/flash.c: + * src/flash.h: + * src/storage.c: + * src/storage.h: + * src/vdevs.h: + Make some speed critical functions inlined. + + * src/timers.c (timer0_clk_incr_cb): Eliminate an expensive use of + modulus operation. + (timer16_clk_incr_cb): Ditto. + * src/spi.c: (spi_clk_incr_cb): Ditto. + +2003-12-01 Theodore A. Roth + + * src/devsupp.c: Use .field initialization for device definitions. + Clean up after indent and disable it for the device defns. + +2003-12-01 Theodore A. Roth + + * src/gdb.h: + * src/gdbserver.c: + Rename CommFuncDisableBreakpoints, CommFuncEnableBreakpoints, + enable_breakpoints and disable_breakpoints to allow sorter lines. + * src/main.c (global_gdb_comm): Use .field initialization. + +2003-12-01 Theodore A. Roth + + * src/adc.c: + * src/avrclass.c: + * src/avrcore.c: + * src/avrerror.c: + * src/avrmalloc.c: + * src/callback.c: + * src/decoder.c: + * src/device.c: + * src/devsupp.c: + * src/display.c: + * src/eeprom.c: + * src/flash.c: + * src/gdbserver.c: + * src/intvects.c: + * src/main.c: + * src/memory.c: + * src/op_names.c: + * src/ports.c: + * src/register.c: + * src/sig.c: + * src/spi.c: + * src/sram.c: + * src/stack.c: + * src/storage.c: + * src/timers.c: + * src/utils.c: + Reformat with misc/refmt.sh script. + Update Copyright year. + +2003-12-01 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + + * src/adc.h: + * src/avrclass.h: + * src/avrcore.h: + * src/avrerror.h: + * src/avrmalloc.h: + * src/callback.h: + * src/decoder.h: + * src/devsupp.h: + * src/display.h: + * src/eeprom.h: + * src/flash.h: + * src/gdb.h: + * src/intvects.h: + * src/memory.h: + * src/op_names.h: + * src/ports.h: + * src/register.h: + * src/sig.h: + * src/spi.h: + * src/sram.h: + * src/stack.h: + * src/storage.h: + * src/timers.h: + * src/usb.h: + * src/utils.h: + * src/vdevs.h: + Reformat with misc/refmt.sh script. + Update Copyright year. + +2003-11-30 Theodore A. Roth + + * misc/refmt.sh: Ignore newlines instead of honouring them. + Set the tab size to 1 to avoid comments to the right of code being + pushed farther to the right. + Make grepping for typedefs the default behaviour. + * src/disp/disp.c: Reformat with misc/refmt.sh script. + Wrap long comments. + * src/disp-vcd/disp.c: Ditto. + * src/disp-vcd/vcd.c: Ditto. + +2003-11-30 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + + * src/avrcore.c: + * src/avrcore.h: + * src/decoder.c: + * src/register.c: + * src/register.h: + * src/utils.c: + * src/utils.h: + Inline simple functions to boost performance a bit. + +2003-11-29 Theodore A. Roth +[Contributed by John Regehr ] + + * src/intvects.c: Add enable and flag initializers to all vector + tables. + Change ANA_COMP to USB_HW for usb devices. + * src/intvects.h (struct _IrqCtrlBit): Define. + (struct _IntVect): Add enable and flag fields. + (struct _IntVectTable): Add USB_HW field. + +2003-11-29 Theodore A. Roth + + * src/main.c: Modify handling of --breakpoint option to allow multiple + instances on the command line. + +2003-11-29 Theodore A. Roth + + * src/Makefile.am: Remove vars for dtest. + * src/dtest.c: Remove file. + +2003-11-29 Theodore A. Roth + + * configure.ac: Add check for avr-nm. + + [Contributed by Keith Gudger ] + * src/Makefile.am (simulavr_SOURCES): Add adc.c, adc.h, and usb.h. + * src/devsupp.c: Add adcsr and uier masks. + Install adc vdev. + * src/adc.c: New file. + * src/adc.h: New file. + * src/usb.h: New file. + +2003-11-29 Theodore A. Roth + + * misc/refmt.sh: Add indentation of case labels in switch statements. + Let the user select how to get the type info. + + [Contributed by Keith Gudger ] + * src/Makefile.am (simulavr_SOURCES): Add spi.c and spi.h. + * src/devsupp.c (struct _DevSuppDefn): Add spcr field. + * src/spi.c: New file. + * src/spi.h: New file. + +2003-11-29 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * README.ext_int: Add some new notes. + * misc/gpl_header: Update copyright year. + * misc/gpl_header_c: Update copyright year. + * misc/gpl_header_h: Update copyright year. + * misc/gpl_header_py: Update copyright year. + * misc/irq.py: New file. + * misc/refmt.sh: New file. + * src/avrcore.c: Allow disabling of irq diagnostics at compile time. + * test_asm/test_8515/test_toie0.asm: Exit the idle loop when the + interrupts are done and then go into a done loop. + +2003-11-27 Theodore A. Roth + + * simulavr.1.in: Document new options. + Add new usb support to device list. + * doc/simulavr.texi: Document new options. + * src/main.c: Reorder usage strings to improve readability. + Add stub for --clock-freq option. + Add --breakpoint option and implement it. + +2003-11-27 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/avrcore.c (avr_core_run): Track the run time and print out the + insns/sec and clks/sec when the program is terminated. (avr_core_run) + (avr_core_reset): Don't reset the clock counter since doing so screws + up the clks/sec calculation and the vcd output. + * src/devsupp.c (defn_atmega103): Fix sram size, should be 4000 instead + of 4096. + +2003-11-22 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + If using gcc, enable extra warnings. + + * src/Makefile.am: + * src/disp/Makefile.am: + * src/disp-vcd/Makefile.am: + Update copyright year. + Only add gcc specific warnings if compiling with gcc. + +2003-11-17 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/timers.c: Dox cleanups. + +2003-11-12 Theodore A. Roth +[Thanks to Hermann Krauss for the original patch and +Keith Gudger for revising it and testing with the usb +devices.] + + * configure.ac (AC_INIT): Bump version. + + * src/devsupp.c: + * src/timers.c: + * src/timers.h: + Add support for 16 bit timers 1 and 3. + +2003-11-11 Theodore A. Roth + + * test_c/timer.c: Tweaks to allow compiling for at43usb320. + +2003-11-11 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * doc/main.dox: Clean up some doxygen warnings. + * src/avrclass.c: Clean up some doxygen warnings. + +2003-11-02 Theodore A. Roth + + * src/gdbserver.c (gdb_parse_packet): When gdb sends the 'D' packet, it + actually does expect the "OK" response. That wasn't clear from the gdb + documentation. + +2003-11-02 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/gdbserver.c: Handle 'D' packets (detach request from gdb). When + insight 'disconnects' from the target, it sends a 'D' packet which + caused simulavr to generate a fatal error since gdb closed down the + connection after sending the packet. + +2003-11-01 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/gdb.h: Add irq_raise method. + * src/gdbserver.c (gdb_continue_with_signal): If gdb sends a signal + number greater than 94 (e.g. 'signal SIG80' sends signal number 94), + interpret that as being a request to raise avr interrupt number + signal_num-94. + * src/main.c (global_gdb_comm): Add irq_raise method. + +2003-10-29 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/avrcore.c (avr_core_irq_raise): Display more info about the irq + in the output message. + +2003-10-20 Theodore A. Roth +[Thanks to Keith Gudger ] + + * src/devsupp.c: + * src/intvects.c: + Add support for at43USB355, at43USB320, at43USB324, at43USB325, and + at43USB326. + +2003-10-20 Theodore A. Roth +[Thanks to Keith Gudger ] + + * configure.ac (AC_INIT): Bump version. + * src/devsupp.c (dev_supp_create_core): Extend port width to be from + 1 to 8 bits. + Fix error output to print chars instead of ints. + Add support for ports E and F. + * src/ports.c (name_PIN): Add "PINE" and "PINF". + (name_DDR): Add "DDRE" and "DDRF". + (name_PORT): Add "PORTE" and "PORTF". + (porte_new, porte_construct, porte_destroy): New functions. + (portf_new, portf_construct, portf_destroy): New functions. + * src/ports.h: Add support for port widths of 1-6. + Add prototypes to support ports E and F. + +2003-10-14 Theodore A. Roth + + * src/avrcore.c (avr_core_construct): Cast irq_vtable structure to an + array of IntVect to perform irq indexing. + (avr_core_check_interrupts): Change IRQ_RESET to IRQ_RESET_ADDR to + avoid subtle confusion of array index versus vector address. + + * src/intvects.c: + * src/intvects.h: + Simplify vector table initialization by using a structure for the + interrupt vector table instead of an array. + Define irq_vect_table_index() macro for calculating indices. + Define IRQ_RESET_ADDR. + + * src/register.c (wdtcr_timer_cb): Use irq_vect_table_index() instead + of enum value. + * src/timers.c (timer_intr_cb): Ditto. + +2003-10-14 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/avrcore.c (avr_core_irq_raise): Print out a message when raising + an interrupt. + (avr_core_check_interrupts): Print out a message when vectoring into + the interrupt table. + +2003-10-03 Theodore A. Roth + + * src/avrcore.c (avr_core_run): Add note to comment about keeping + functionality out of the avr_core_run function and todo item about + adding rudimentary breakpoint handling to the loop. + +2003-09-29 Theodore A. Roth + + * src/devsupp.c: + * src/intvects.c: + Revert previous patch. It didn't even compile (my fault for not + checking that before committing it), so I am assuming that it is + not tested and sending it back to the submitter. + +2003-09-26 Theodore A. Roth + [Contributed by Keith Gudger ] + + * src/devsupp.c: + * src/intvects.c: + Add support for at43USB355, at43USB320, at43USB324, at43USB325, and + at43USB326. + +2003-09-26 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * doc/Makefile.am (EXTRA_DIST): Add main.dox. + * doc/doxygen.config.in (INPUT): Add @top_srcdir@/doc to search path. + (FILE_PATTERNS): Add *.dox pattern. + * doc/main.dox: Rename of src/maindoc.c. + * src/Makefile.am (EXTRA_DIST): Remove. + * src/maindoc.c: Rename to doc/main.dox. + +2003-09-19 Theodore A. Roth + + * README.cygwin: Change CFLAGS to LDFLAGS in configure example. + +2003-09-19 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + Add AC_CANONICAL_BUILD, AC_CANONICAL_HOST and AC_CANONICAL_TARGET. + * Makefile.am (EXTRA_DIST): Add README.cygwin. + * README.gdb: Remove references to gdb patches directory. + + [Contributed by Eric Weddingtion ] + * README.cygwin: New file. + +2003-09-15 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + (AC_CONFIG_FILES): Untabify src/getopt/Makefile line. + +2003-09-12 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + * src/avrcore.c: Hide struct bp_enable_data from doxygen. + * src/callback.c: Hide struct _CallBack from doxygen. + * src/devsupp.c: Hide struct _DevSuppDefn from doxygen. + +2003-09-12 Theodore A. Roth + + * configure.ac: Remove typedefs for byte, word, dword, qword, sbyte, + sword, sdword, and sqword. + * src/avrcore.c: Replace byte with uint8_t. + Replace word with uint16_t. + Replace dword with uint32_t. + Replace qword with uint64_t. + Replace sbyte with int8_t. + Replace sword with int16_t. + Replace sdword with int32_t. + Replace sqword with int64_t. + * src/avrcore.h: Ditto. + * src/callback.c: Ditto. + * src/callback.h: Ditto. + * src/decoder.c: Ditto. + * src/decoder.h: Ditto. + * src/device.c: Ditto. + * src/devsupp.c: Ditto. + * src/display.c: Ditto. + * src/display.h: Ditto. + * src/eeprom.c: Ditto. + * src/eeprom.h: Ditto. + * src/flash.c: Ditto. + * src/flash.h: Ditto. + * src/gdb.h: Ditto. + * src/gdbserver.c: Ditto. + * src/intvects.h: Ditto. + * src/main.c: Ditto. + * src/memory.c: Ditto. + * src/memory.h: Ditto. + * src/ports.c: Ditto. + * src/ports.h: Ditto. + * src/register.c: Ditto. + * src/register.h: Ditto. + * src/sram.c: Ditto. + * src/stack.c: Ditto. + * src/stack.h: Ditto. + * src/storage.c: Ditto. + * src/storage.h: Ditto. + * src/timers.c: Ditto. + * src/timers.h: Ditto. + * src/utils.c: Ditto. + * src/utils.h: Ditto. + * src/vdevs.h: Ditto. + +2003-09-09 Theodore A. Roth + [Contributed by Hermann Kraus ] + + * test_c/Makefile.am: Update copyright year. + Add timer program. + Add common.h to all SOURCES variables. + * test_c/common.h: New file. + * test_c/deep_frame.c: Use common.h. + Use 'sfr = val' idiom instead of sbi function. + * test_c/demo.c: Ditto. + * test_c/demo_kr.c: Ditto. + * test_c/timer.c: New file. + +2003-09-09 Theodore A. Roth + [Contributed by Hermann Kraus ] + + * configure.ac (AC_INIT): Bump version. + * src/callback.c (callback_construct): Check data pointer before + passing to class_ref. + (callback_destroy): Check data pointer before passing to class_unref. + +2003-08-29 Theodore A. Roth + [Thanks to Hermann Kraus ] + + * configure.ac (AC_INIT): Bump version. + * simulavr.1.in: Remove '=' from option descriptions since it is + confusing people. + * src/main.c: Diddo. + * doc/simulavr.texi: Diddo. + Update savannah references. + Remove notes about needing to patch gdb for avr. + +2003-08-27 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + Add missing call to CHECK_DOXYGEN. + * simulavr.spec.in: Fix broken rpmbuild on RedHat-9. + +2003-08-26 Theodore A. Roth + + * configure.ac (AC_INIT): Bump version. + (AC_CHECK_HEADERS): Remove check for libintl.h so it doesn't get used + in gnu_getopt.c. + * src/getopt/gnu_getopt.c: Don't allow _ to be defined to gettext(). + +2003-08-18 Theodore A. Roth + + * simulavr.1.in: Add version to output. + Add mega8 and mega16 to supported list. + * src/gdbserver.c: Shorten up some long lines. + +2003-08-18 Theodore A. Roth + + * configure.ac: Bump version. + * src/gdbserver.c (gdb_interact): Set addrLength correctly so source + IP addresses are reported correctly. + +2003-08-13 Theodore A. Roth + + * Makefile.am: Rename @DOC_INST_DIR@ to @ac_doc_inst_dir@. + * configure.ac: Bump version. + Remove --with-docdir option. + Re-instate --enable-versioned-doc option and set ac_doc_inst_dir + relative to $(datadir). + * doc/Makefile.am: Rename @DOC_INST_DIR@ to @ac_doc_inst_dir@. + * test_asm/test_8515/Makefile.am: Add clean-local rule to make sure + final binaries are removed. + +2003-08-13 Theodore A. Roth + + * src/device.c: Update copyright year. + +2003-08-13 Theodore A. Roth + [Thanks to Hermann Kraus ] + + * doc/simulavr.texi: Fix 'target remote' note. + * src/avrcore.c: Wrap some line lines. + Document all functions via doxygen. + * src/device.c: Document all functions via doxygen. + +2003-08-12 Theodore A. Roth + + * Makefile.am: Remove AUX_DIST and AUX_DIST_EXTRA vars. + Remove refs to acconfig.h and config/. + * configure.ac: Add check for RANLIB. + Add src/getopt/Makefile to output. + * src/Makefile.am: Add getopt subdir. + (AM_CFLAGS): Add src/getopt via -I. + (simulavr_LDADD): Define. + (simulavr_SOURCES): Remove gnu_getopt* sources. + * src/disp/Makefile.am: Link to ../getopt/libgnugetopt.a. + * src/disp-vcd/Makefile.am: Link to ../getopt/libgnugetopt.a. + * src/getopt/Makefile.am: New file to build ../getopt/libgnugetopt.a. + * src/gnu_getopt.c, src/getopt/gnu_getopt.c: Move gnu_getopt.c into + src/getopt subdir. + * src/gnu_getopt.h, src/getopt/gnu_getopt.h: Move gnu_getopt.h into + src/getopt subdir. + * src/gnu_getopt1.c, src/getopt/gnu_getopt1.c: Move gnu_getopt1.c into + src/getopt subdir. + +2003-08-12 Theodore A. Roth + + * Makefile.am: Convert to use autoconf-2.57 and automake-1.7.x. + * bootstrap: Convert to use autoconf-2.57 and automake-1.7.x. + * configure.ac: New file. + * acconfig.h: Remove file. + * configure.in: Remove file. + * config/avr_binutils.m4: Remove file. + * config/avr_cc.m4: Remove file. + * config/avr_doc_dirsuffix.m4: Remove file. + * config/avr_doc_pdf.m4: Remove file. + * config/avr_doc_ps.m4: Remove file. + * config/avr_libc_headers.m4: Remove file. + * config/check_autoconf213.m4: Remove file. + * config/check_doxygen.m4: Remove file. + * config/check_gnu_make.m4: Remove file. + * config/check_python.m4: Remove file. + * config/check_texinfo.m4: Remove file. + * config/enable_curses.m4: Remove file. + * config/enable_tests.m4: Remove file. + * config/type_socklen_t.m4: Remove file. + +2003-08-12 Theodore A. Roth + + * simulavr.1.in: Update bug report email address. + +2003-08-12 Theodore A. Roth + + * configure.in: Add more checks as found by autoscan. + +2003-08-08 Theodore A. Roth + + * src/gnu_getopt.h: Define HAVE_DECL_GETOPT to fix declaration clash. + +2003-08-08 Theodore A. Roth + [Contributed by Tuukka Pasanen] + + * src/devsupp.c: + * src/intvects.c: + Add basic support for mega8. + +2003-08-01 Theodore A. Roth + + * acconfig.h: Handle missing socklen_t type. + +2003-08-01 Theodore A. Roth + + * configure.in: Bump version. + Add check to socklen_t. + * config/type_socklen_t.m4: New file. + +2003-07-24 Theodore A. Roth + + * AUTHORS: + * ChangeLog: + * config/avr_binutils.m4: + * config/avr_cc.m4: + * config/avr_libc_headers.m4: + * config/check_doxygen.m4: + * config/check_gnu_make.m4: + * config/check_python.m4: + * config/check_texinfo.m4: + * config/enable_curses.m4: + * config/enable_tests.m4: + Update my email address. + +2003-07-02 Theodore A. Roth + + * configure.in: Bump version. + * src/main.c: Update copyright year for --version output. + +2003-06-20 Theodore A. Roth + + * configure.in: Bump version. + +2003-06-20 Theodore A. Roth + * gdb-patches/README: Remove file. + * simulavr.spec.in: Bump avr-gdb requirement to 5.3. + + * src/avrcore.c: + * src/avrcore.h: + * src/gdb.h: + * src/main.c: + Add enable_breakpoints and disable breakpoints methods. + + * src/gdbserver.c: Ditto. + Disable breakpoints when a break point is hit. This restores the insn + which was previously replaced with a BREAK insn if the break point was + set by gdb. This was needed to get the sim to send the correct insn + back to gdb instead of the BREAK insn. + +2003-06-20 Theodore A. Roth + + * src/gdbserver.c: Fix a bug in handled of 'P' packets causing PC to + be truncated. + +2003-06-20 Theodore A. Roth + + * src/gdbserver.c: Update copyright year. + If-def out use of EEPROM space since gdb handle it. + +2003-04-06 Theodore A. Roth + [Thanks to Hermann Kraus ] + + * src/devsupp.c: + * src/intvects.c: + Added support for the ATMega16 device + +2003-04-04 Theodore A. Roth + + * src/avrcore.c: + * src/decoder.c: + * src/decoder.h: + Speed up the opcode handlers by calculating the argument values at + init time and passing them to the handler when it is called. My tests + show this to be a 1.5 to 3.5 % increase. + +2003-04-04 Theodore A. Roth + + * configure.in: Bump version. + * src/disp/disp.c: Include termios.h to get winsize decl on cygwin. + [Thanks to Slawomir Kawalek ]. + +2003-03-25 Theodore A. Roth + + * regress/regress.py.in: Fix --sim option to take an argument. + +2003-03-04 Theodore A. Roth + + * src/avrcore.c: + * src/gdb.h: + * src/gdbserver.c: + * src/main.c: + Implement the io_fetch method for the gdbserver interface. + +2003-02-22 Theodore A. Roth + + * doc/simulavr.texi: Fix gdb configure target argument. + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/INSTALL b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/INSTALL new file mode 100644 index 0000000..9981de8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/INSTALL @@ -0,0 +1,73 @@ +# +# $Id: INSTALL,v 1.8 2002/04/12 23:12:21 troth Exp $ +# + +This file documents how to build and install simulavr on a unix-like system +using the provided configure script. + +Although it is not required, you should have already built and installed +binutils for avr, avr-gcc, uisp and possibly avr-gdb. In order to build and +use the test programs in test_asm/ and test_c/ directories, you must have +avr gcc and avr binutils properly installed and in your PATH. If you don't +have them installed, you should pass configure the "--disable-tests" option. + +If you want to use simulavr as a backend to gdb, see the README.gdb file in +the simulavr source. + +To build simulavr, run this command in the top level directory: + + $ ./configure + +This will configure simulavr to be installed in the default "/usr/local/" +location. If you wish to install it in another location, use the +"--prefix=" option to configure. It is posible to install in your home +directory if you don't have root access to the "/usr/local/". For instance, I +like to install software like this: + + $ ./configure --prefix=$HOME/local/simulavr + +In this case, if you think that simulavr is crappy software, you can easily +remove it by removing the "$HOME/local/simulavr" directory. If you wish to +keep it, you might need to add "$HOME/local/simulavr/bin" to your PATH +environment variable so that you can run it by just typing `simulavr` instead +of the full path. Theoretically, you should be able to uninstall the installed +files using the 'make uninstall' command. + +If you wish to include more agressive build optimizations, do this: + + $ my_CFLAGS='-g -O2 -Wall -fomit-frame-pointer -finline-functions \ + > -march=i686 -mcpu=i686" + $ CFLAGS=$my_CFLAGS ./configure + +I have seen significant speedups using the above optimizations on my Pentium +Pro development system. You may have better luck with other CFLAGS values. See +`man gcc` for other compiler flags. Of course, if you aren't using gcc, your +CFLAGS choices may be quite different. + +Once you have run the configure script, you can build and install the +simulator. + + $ make + $ make install + +If the build fails while trying to build the programs in the test_c directory +complaining about not being able to find the avr libc header files, you will +have to tell the build system where those files are located. This is done by +passing an option to configure: + + $ ./configure --with-avr-include= + +To view all the available configure options, use the "--help" configure +option: + + $ ./configure --help + +If you wish to verify that your build of the simulator works, run the +regression tests like this: + + $ make check + +This will automatically build simulavr if needed. The regression test engine +automatically starts up an instance of simulavr to run the tests. If any test +fails, I want to hear about it, so send me an email. + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ProjSummary b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ProjSummary new file mode 100644 index 0000000..eb85bd9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/ProjSummary @@ -0,0 +1,27 @@ +The Simulavr project is a simulator for the Atmel AVR family of 8-bit, risc +microcontrollers. Currently supported devices include the at90s1200, +at90s2313, at90s4414 and at90s8515. The simulation of these devices is not +quite complete, but most of the useful functionality is present. + +Support is also present for running the simulator as a remote target of +gdb-5.x. Since gdb does not currently support the AVR micros, a patch is +supplied with simulavr to provide that support with the hopes that the gdb +patch will eventually be integrated into the gdb source tree proper. + +Texinfo based documentation has already been started, but needs much work done +in documenting the internals of the simulator in order to help new developers +learn how to add support for new devices as Atmel introduces them. + +The Simulavr project is expected to progress in the following stages: + + 1. Solidify support for running as a gdb remote target. + 2. Acheive 100% simulation of the existing supported devices. + 3. Design and implement a modular external periheral interface to allow + simulation of peripherals such as LCD displays, ethernet ports, etc. + 4. Add support for all at90sXXXX series devices. + 5. Add support for atMegaXXX series devices. + 6. Add support for atTinyXXX series devices. + 7. ??? + +The project already exists and you can see it at + http://savannah.gnu.org/projects/simulavr/ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README new file mode 100644 index 0000000..bdc61c8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README @@ -0,0 +1,45 @@ +# +# $Id: README,v 1.10 2002/04/12 23:12:21 troth Exp $ +# + +Simulavr: A simulator for the Atmel AVR family of microcontrollers. + +This program is still under development and is not ready for production +use. The simulator is stable enough for rudimentary debugging work in +conjuction with a gdb-5.2 (see README.gdb). + +At this early stage of development, when simulavr enters a failure mode, it +will print an error message and abort, thus generating a core file. This is +actually quite useful, since you can examine the core file and see what caused +simulavr to get confused. This is similar to what happens when a program seg +faults and dumps core, but the error message should at least tell you where to +start looking since it gives the file name and line number where the error +message was generated. As of version 0.0.14, I haven't seen simulavr abort in +quite some time. Take that with a grain of salt. :) + +I've only been testing this with the at90s8515 since that's the only device I +have right now to compare with. + +I am hoping to support all AVR devices, but am not going to work on the TINY's +and MEGA's until I get all the features of the at90s* devices working, and +have solid gdb support. If someone else would like to contribute code for TINY +or MEGA support, that would be greatly appreciated. + +To build the simulator, you need to use gcc for now. There is some gcc +specific code in the source. I'm only doing this for now since it makes +debugging a little bit easier. I'll gladly accept porting feedback if someone +wishes to work on that front. I'm currently only developing using RedHat 7.2. + +Some preliminary porting has been done on NetBSD and FreeBSD. + +To build my test asm and C files, you need to have gcc and binutils build for +avr and installed in your path. + +See the INSTALL file for more information on building and installing the +simulator. + +There is the beginnings of documentation in the doc/ directory. The build +system should automatically build the info, postscript and html formats of the +documentation. If for some reason you have trouble building the documentation +from the texinfo source, check the simulavr web site. I hope to keep the +latest versions of the documenation there. diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README.gdb b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README.gdb new file mode 100644 index 0000000..63fa5d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README.gdb @@ -0,0 +1,34 @@ +## +## $Id: README.gdb,v 1.5 2003/09/19 19:59:20 troth Exp $ +## + +This README file discusses the issues involved with using the simulator +remotely from gdb. + +First off, you will need to compile gdb >= 5.2.1 with the avr target support. + +Once you've built and installed gdb for avr, you need to know how to use it to +debug a remote program. It's an easy, two step process. First, you need to +start up simulavr in gdbserver mode as such: + + $ simulavr --gdbserver [other options] + +Second, just start up avr-gdb with an avr elf program, connect to the remote +target, and load the program into the sim with these commands: + + $ avr-gdb myprog.elf + (gdb) target remote localhost: + (gdb) load + +where is the port number that simulavr is listening on. You need to +have the simulavr running before giving gdb the target command. In most cases, +you'll be running simulavr on the same host as gdb, thus the "localhost" +part. You must use the same port number for simulavr and in the gdb target +command. If you feel the need to run simulavr on another host, just change +localhost to the name of the host that simulavr will be running on. + +After gdb has connected to the remote target, you should be able to use gdb +just as if you were debugging a program natively. + +For more detailed information, see the documentation in the doc subdirectory. + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README.opcodes b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README.opcodes new file mode 100644 index 0000000..a8df635 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/README.opcodes @@ -0,0 +1,247 @@ +# +# $Id: README.opcodes,v 1.3 2001/12/02 21:54:45 troth Exp $ +# +############################################################################## +## +## Most of the information in this file was taken directly from the Atmel +## data sheets and is most likely copyrighted by Atmel. As such, this file +## may need to disappear. +## +############################################################################## + +Instruction Set Nomenclature: + +Status Register (SREG) + +SREG: Status register +C: Carry flag in status register +Z: Zero flag in status register +N: Negative flag in status register +V: Two's complement overflow indicator +S: N A* V, For signed tests +H: Half Carry flag in the status register +T: Transfer bit used by BLD and BST instructions +I: Global interrupt enable/disable flag + +Registers and Operands + +Rd: Destination (and source) register in the register file +Rr: Source register in the register file +R: Result after instruction is executed +K: Constant data +k: Constant address +b: Bit in the register file or I/O register (3 bit) +s: Bit in the status register (3 bit) +X,Y,Z: Indirect address register (X=R27:R26, Y=R29:R28 and Z=R31:R30) +A: I/O location address +q: Displacement for direct addressing (6 bit) + +I/O Registers + +RAMPX, RAMPY, RAMPZ +Registers concatenated with the X, Y and Z registers enabling indirect +addressing of the whole data space on MCUs withmore than 64K bytes data space, +and constant data fetch on MCUs with more than 64K bytes program space. + +RAMPD +Register concatenated with the Z register enabling direct addressing of the +whole data space on MCUs with more than 64Kbytes data space. + +EIND +Register concatenated with the instruction word enabling indirect jump and +call to the whole program space on MCUs withmore than 64K bytes program space. + +Stack +STACK: Stack for return address and pushed registers +SP: Stack Pointer to STACK + +Flags +<=>: Flag affected by instruction +0: Flag cleared by instruction +1: Flag set by instruction +-: Flag not affected by instruction + +Conditional Branch Summary + +Note: 1. Interchange Rd and Rr in the operation before the test. i.e. + CP Rd,Rr -> CP Rr,Rd + +Test Boolean Mnemonic Complementary Boolean Mnemonic Comment +Rd > Rr Z&(N ^ V) = 0 BRLT(1) Rd <= Rr Z+(N ^ V) = 1 BRGE* Signed +Rd >= Rr (N ^ V) = 0 BRGE Rd < Rr (N ^ V) = 1 BRLT Signed +Rd = Rr Z = 1 BREQ Rd != Rr Z = 0 BRNE Signed +Rd <= Rr Z+(N ^ V) = 1 BRGE(1) Rd > Rr Z&(N ^ V) = 0 BRLT* Signed +Rd < Rr (N ^ V) = 1 BRLT Rd >= Rr (N ^ V) = 0 BRGE Signed +Rd > Rr C + Z = 0 BRLO(1) Rd <= Rr C + Z = 1 BRSH* Unsigned +Rd >= Rr C = 0 BRSH/BRCC Rd < Rr C = 1 BRLO/BRCS Unsigned +Rd = Rr Z = 1 BREQ Rd != Rr Z = 0 BRNE Unsigned +Rd <= Rr C + Z = 1 BRSH(1) Rd > Rr C + Z = 0 BRLO* Unsigned +Rd < Rr C = 1 BRLO/BRCS Rd >= Rr C = 0 BRSH/BRCC Unsigned +Carry C = 1 BRCS No carry C = 0 BRCC Simple +Negative N = 1 BRMI Positive N = 0 BRPL Simple +Overflow V = 1 BRVS No overflow V = 0 BRVC Simple +Zero Z = 1 BREQ Not zero Z = 0 BRNE Simple + + +Complete Instruction Set Summary + +Notes: + +1. Not all instructions are available in all devices. Refer to the device + specific instruction summary. + +2. Cycle times for data memory accesses assume internal memory accesses, and + are not valid for accesses via the external RAM interface. For LD, ST, LDS, + STS, PUSH, POP, add one cycle plus one cycle for each wait state. For CALL, + ICALL, EICALL, RCALL, RET, RETI in devices with 16 bit PC, add three cycles + plus two cycles for each wait state. For CALL, ICALL, EICALL, RCALL, RET, + RETI in devices with 22 bit PC, add five cycles plus three cycles for each + wait state. + +Instruction Set Summary + +Arithmetic and Logic Instructions + + | | | | Device Availability| +Mnem | Opcode | Operands | Method Name | 1200 | 4414 | 8515 | +=======|=====================|==========|=============|======|======|======| +ADC | 0001 11rd dddd rrrr | Rd, Rr | ADC | * | * | * | +ADD | 0000 11rd dddd rrrr | Rd, Rr | ADD | * | * | * | +ADIW | 1001 0110 KKdd KKKK | Rd, Rr | ADIW | - | * | * | +AND | 0010 00rd dddd rrrr | Rd, Rr | AND | * | * | * | +ANDI | 0111 KKKK dddd KKKK | Rd, K | ANDI | * | * | * | +ASR | 1001 010d dddd 0101 | Rd | ASR | * | * | * | +BCLR | 1001 0100 1sss 1000 | s | BCLR | * | * | * | +BLD | 1111 100d dddd 0bbb | Rd, b | BLD | * | * | * | +BRBC | 1111 01kk kkkk ksss | s, k | BRCS | * | * | * | +BRBS | 1111 00kk kkkk ksss | s, k | BRBS | * | * | * | +BRCC | 1111 01kk kkkk k000 | k | BRCC | * | * | * | +BRCS | 1111 00kk kkkk k000 | k | BRCS | * | * | * | +BREQ | 1111 00kk kkkk k001 | k | BREQ | * | * | * | +BRGE | 1111 01kk kkkk k100 | k | BRGE | * | * | * | +BRHC | 1111 01kk kkkk k101 | k | BRHC | * | * | * | +BRHS | 1111 00kk kkkk k101 | k | BRHS | * | * | * | +BRID | 1111 01kk kkkk k111 | k | BRID | * | * | * | +BRIE | 1111 00kk kkkk k111 | k | BRIE | * | * | * | +BRLO | 1111 00kk kkkk k000 | k | BRCS | * | * | * | +BRLT | 1111 00kk kkkk k100 | k | BRLT | * | * | * | +BRMI | 1111 00kk kkkk k010 | k | BRMI | * | * | * | +BRNE | 1111 01kk kkkk k001 | k | BRNE | * | * | * | +BRPL | 1111 01kk kkkk k010 | k | BRPL | * | * | * | +BRSH | 1111 01kk kkkk k000 | k | BRCC | * | * | * | +BRTC | 1111 01kk kkkk k110 | k | BRTC | * | * | * | +BRTS | 1111 00kk kkkk k110 | k | BRTS | * | * | * | +BRVC | 1111 01kk kkkk k011 | k | BRVC | * | * | * | +BRVS | 1111 00kk kkkk k011 | k | BRVS | * | * | * | +BSET | 1001 0100 0sss 1000 | s | BSET | * | * | * | +BST | 1111 101d dddd 0bbb | Rr, b | BST | * | * | * | +CALL | 1001 010k kkkk 111k | k | CALL | - | - | - | + | kkkk kkkk kkkk kkkk | | | | | | +CBI | 1001 1000 AAAA Abbb | A, b | CBI | * | * | * | +CBR | 0111 KKKK dddd KKKK | Rd, K | CBR | * | * | * | +CLC | 1001 0100 1000 1000 | | CLC | * | * | * | +CLH | 1001 0100 1101 1000 | | CLH | * | * | * | +CLI | 1001 0100 1111 1000 | | CLI | * | * | * | +CLN | 1001 0100 1010 1000 | | CLN | * | * | * | +CLR | 0010 01dd dddd dddd | Rd | EOR | * | * | * | +CLS | 1001 0100 1100 1000 | | CLS | * | * | * | +CLT | 1001 0100 1110 1000 | | CLT | * | * | * | +CLV | 1001 0100 1011 1000 | | CLV | * | * | * | +CLZ | 1001 0100 1001 1000 | | CLZ | * | * | * | +COM | 1001 010d dddd 0000 | Rd | COM | * | * | * | +CP | 0001 01rd dddd rrrr | Rd, Rr | CP | * | * | * | +CPC | 0000 01rd dddd rrrr | Rd, Rr | CPC | * | * | * | +CPI | 0011 KKKK dddd KKKK | Rd, K | CPI | * | * | * | +CPSE | 0001 00rd dddd rrrr | Rd, Rr | CPSE | * | * | * | +DEC | 1001 010d dddd 1010 | Rd | DEC | * | * | * | +EICALL | 1001 0101 0001 1001 | | EICALL | - | - | - | +EIJMP | 1001 0100 0001 1001 | | EIJMP | - | - | - | +ELPM | 1001 0101 1101 1000 | | ELPM | - | - | - | +ELPM | 1001 000d dddd 0110 | Rd, Z | ELPM_Z | - | - | - | +ELPM | 1001 000d dddd 0111 | Rd, Z+ | ELPM_Z_incr | - | - | - | +EOR | 0010 01rd dddd rrrr | Rd, Rr | EOR | * | * | * | +ESPM | 1001 0101 1111 1000 | | ESPM | - | - | - | +FMUL | 0000 0011 0ddd 1rrr | Rd, Rr | FMUL | - | - | - | +FMULS | 0000 0011 1ddd 0rrr | Rd, Rr | FMULS | - | - | - | +FMULSU | 0000 0011 1ddd 1rrr | Rd, Rr | FMULSU | - | - | - | +ICALL | 1001 0101 0000 1001 | | ICALL | - | * | * | +IJMP | 1001 0100 0000 1001 | | IJMP | - | * | * | +IN | 1011 0AAd dddd AAAA | Rd, A | IN | * | * | * | +INC | 1001 010d dddd 0011 | Rd | INC | * | * | * | +JMP | 1001 010k kkkk 110k | k | JMP | - | - | - | + | kkkk kkkk kkkk kkkk | | | | | | +LD | 1000 000d dddd 1000 | Rd, Y | LDD_Y | - | * | * | +LD | 1001 000d dddd 1001 | Rd, Y+ | LD_Y_incr | - | * | * | +LD | 1000 000d dddd 0000 | Rd, Z | LDD_Z | * | * | * | +LD | 1001 000d dddd 0001 | Rd, Z+ | LD_Z_incr | - | * | * | +LD | 1001 000d dddd 1110 | Rd, -X | LD_X_decr | - | * | * | +LD | 1001 000d dddd 1010 | Rd, -Y | LD_Y_decr | - | * | * | +LD | 1001 000d dddd 0010 | Rd, -Z | LD_Z_decr | - | * | * | +LD | 1001 000d dddd 1100 | Rd, X | LD_X | - | * | * | +LD | 1001 000d dddd 1101 | Rd, X+ | LD_X_incr | - | * | * | +LDD | 10q0 qq0d dddd 1qqq | Rd, Y+q | LDD_Y | - | * | * | +LDD | 10q0 qq0d dddd 0qqq | Rd, Z+q | LDD_Z | - | * | * | +LDI | 1110 KKKK dddd KKKK | Rd, K | LDI | * | * | * | +LDS | 1001 000d dddd 0000 | Rd, k | LDS | - | * | * | + | kkkk kkkk kkkk kkkk | | | | | | +LPM | 1001 0101 1100 1000 | | LPM | - | * | * | +LPM | 1001 000d dddd 0100 | Rd, Z | LPM_Z | - | - | - | +LPM | 1001 000d dddd 0101 | Rd, Z+ | LPM_Z_incr | - | - | - | +LSL | 0000 11dd dddd dddd | Rd | AND | * | * | * | +LSR | 1001 010d dddd 0110 | Rd | LSR | * | * | * | +MOV | 0010 11rd dddd rrrr | Rd, Rr | MOV | * | * | * | +MOVW | 0000 0001 dddd rrrr | Rd, Rr | MOVW | - | - | - | +MUL | 1001 11rd dddd rrrr | Rd, Rr | MUL | - | - | - | +MULS | 0000 0010 dddd rrrr | Rd, Rr | MULS | - | - | - | +MULSU | 0000 0011 dddd rrrr | Rd, Rr | MULSU | - | - | - | +NEG | 1001 010d dddd 0001 | Rd | NEG | * | * | * | +NOP | 0000 0000 0000 0000 | | NOP | * | * | * | +OR | 0010 10rd dddd rrrr | Rd, Rr | OR | * | * | * | +ORI | 0110 KKKK dddd KKKK | Rd, K | ORI | * | * | * | +OUT | 1011 1AAd dddd AAAA | A, Rd | OUT | * | * | * | +POP | 1001 000d dddd 1111 | Rd | POP | - | * | * | +PUSH | 1001 001d dddd 1111 | Rd | PUSH | - | * | * | +RCALL | 1101 kkkk kkkk kkkk | k | RCALL | * | * | * | +RET | 1001 0101 0000 1000 | | RET | * | * | * | +RETI | 1001 0101 0001 1000 | | RETI | * | * | * | +RJMP | 1100 kkkk kkkk kkkk | k | RJMP | * | * | * | +ROL | 0001 11dd dddd dddd | Rd | ADC | * | * | * | +ROR | 1001 010d dddd 0111 | Rd | ROR | * | * | * | +SBC | 0000 10rd dddd rrrr | Rd, Rr | SBC | * | * | * | +SBCI | 0100 KKKK dddd KKKK | Rd, K | SBCI | * | * | * | +SBI | 1001 1010 AAAA Abbb | A, b | SBI | * | * | * | +SBIC | 1001 1001 AAAA Abbb | A, b | SBIC | * | * | * | +SBIS | 1001 1011 AAAA Abbb | A, b | SBIS | * | * | * | +SBIW | 1001 0111 KKdd KKKK | Rd, K | SBIW | - | - | - | +SBR | 0110 KKKK dddd KKKK | Rd, K | SBR | * | * | * | +SBRC | 1111 110d dddd 0bbb | Rd, b | SBRC | * | * | * | +SBRS | 1111 111d dddd 0bbb | Rd, b | SBRS | * | * | * | +SEC | 1001 0100 0000 1000 | | SEC | * | * | * | +SEH | 1001 0100 0101 1000 | | SEH | * | * | * | +SEI | 1001 0100 0111 1000 | | SEI | * | * | * | +SEN | 1001 0100 0010 1000 | | SEN | * | * | * | +SER | 1110 1111 dddd 1111 | Rd | LDI | * | * | * | +SES | 1001 0100 0100 1000 | | SES | * | * | * | +SET | 1001 0100 0110 1000 | | SET | * | * | * | +SEV | 1001 0100 0011 1000 | | SEV | * | * | * | +SEZ | 1001 0100 0001 1000 | | SEZ | * | * | * | +SLEEP | 1001 0101 1000 1000 | | SLEEP | * | * | * | +SPM | 1001 0101 1110 1000 | | SPM | - | - | - | +ST | 1001 001d dddd 1101 | X+, Rd | ST_X_incr | - | * | * | +ST | 1001 001d dddd 1100 | X, Rd | ST_X | - | * | * | +ST | 1001 001d dddd 1001 | Y+, Rd | ST_Y_incr | - | * | * | +ST | 1000 001d dddd 1000 | Y, Rd | STD_Y | - | * | * | +ST | 1001 001d dddd 0001 | Z+, Rd | ST_Z_incr | - | * | * | +ST | 1000 001d dddd 0000 | Z, Rd | STD_Z | * | * | * | +ST | 1001 001d dddd 1110 |-X, Rd | ST_X_decr | - | * | * | +ST | 1001 001d dddd 1010 |-Y, Rd | ST_Y_decr | - | * | * | +ST | 1001 001d dddd 0010 |-Z, Rd | ST_Z_decr | - | * | * | +STD | 10q0 qq1d dddd 1qqq | Y+q, Rd | STD_Y | - | * | * | +STD | 10q0 qq1d dddd 0qqq | Z+q, Rd | STD_Z | - | * | * | +STS | 1001 001d dddd 0000 | k, Rd | STS | - | * | * | + | kkkk kkkk kkkk kkkk | | | | | | +SUB | 0001 10rd dddd rrrr | Rd, Rr | SUB | * | * | * | +SUBI | 0101 KKKK dddd KKKK | Rd, K | SUBI | * | * | * | +SWAP | 1001 010d dddd 0010 | Rd | SWAP | * | * | * | +TST | 0010 00dd dddd dddd | Rd | AND | * | * | * | +WDR | 1001 0101 1010 1000 | | WDR | * | * | * | diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/TODO b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/TODO new file mode 100644 index 0000000..fa7fbc1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/TODO @@ -0,0 +1,66 @@ +During 0.1.x: + + - complete simulation of 8515 device. + + - external peripheral device connection interface. + + - write, read and access watchpoints + + - documentation + +During 0.2.x: + + - add support for all at90s**** devices (Is this too ambitious?) + + - speed improvements (optimization) + +During 0.3.x: + + - add support for megas and tiny's (This might require some redesign + work to get the atmega128 like devices right) + +Misc TODO's: + +The conversion to autoconf/automake configuration is working, but still needs +to have the actual porting issues worked into the project. Also, the autoconf +macros (the config/*.m4 files) could be robustified. For instance, the +TROTH_PROG_AVR_CC macro really should do more than just checking if avr-gcc is +in yout $PATH. It should also make sure that avr-gcc works. Like wise for the +other macros. It's a start at least. + +Build the virtual hardware harness and gui. I'm thinking it be able to plug a +device into something like the Atmel stk200 board thus giving the user LEDs +for visual feed back and push buttons for supplying inputs to the ports. Also, +I'd like to simulate the analog comparators and ADCs if possible. It might +also be interesting to simulate a popular LCD display. More interesting might +be the potential for custom user designed virtual peripherals which could be +plugged into the virtual board. I wonder if I can use the same interface as +gpsim, thus allowing the sharing of modules between the two projects? + +Make a python module out of the library. + +Need to write functions for loading/dumping eeprom from/to files. + +Add support for ihex, srec, elf, and whatever else input file formats. + +The interrupt code looks like it needs a major re-thinking. It doesn't handle +the interrupt flag mechanism and doesn't support automatic vectoring into ISRs +that occurred when the interrupt occured and was disabled either globally or +by the specific control register and then the interrupt was subsequently +enabled. This looks like it might be yucky. I'm seriously thinking that +interrupts need to be handled via some asyncronous mechanism like unix +signals. Also, some way to implement the interrupt response time needs to be +thought out. + +Add code to output number of instructions executed (and per second) and total +number of clocks (and per second). Should go in main.c. + +There's a bunch of FIXME comments in the code in places where someone needs to +give more thought to the logic. + +These io registers still need to be implemented: + GIMSK + GIFR + All the timer/counter 1 stuff. + Lots of others too. + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/index.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/index.html new file mode 100644 index 0000000..b805952 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/index.html @@ -0,0 +1,87 @@ + + + + + +Simulavr: Top + + + + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

Simulavr +

+ + + + + + + + + + + + +
+ + + + + +
[Top][Contents][Index][ ? ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr.html new file mode 100644 index 0000000..b805952 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr.html @@ -0,0 +1,87 @@ + + + + + +Simulavr: Top + + + + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

Simulavr +

+ + + + + + + + + + + + +
+ + + + + +
[Top][Contents][Index][ ? ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_1.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_1.html new file mode 100644 index 0000000..f941d46 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_1.html @@ -0,0 +1,101 @@ + + + + + +Simulavr: 1. Introduction: What is simulavr? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

1. Introduction: What is simulavr?

+ +

It's just a model. +
+— Monty Python +

+
+ +

The Simulavr program is a simulator for the Atmel AVR family of +microcontrollers. Simulavr can be used either standalone or as a remote +target for gdb. When used in gdbserver mode, the simulator is used as a +backend so that gdb can be used as a source level debugger for AVR +programs. +

+

The official website for Simulavr is +http://savannah.nongnu.org/projects/simulavr/. +

+

Because it is protected by the GNU General Public License, users are +free to share and change it. +

+

Simulavr was written by Theodore A. Roth +

+
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_10.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_10.html new file mode 100644 index 0000000..a95bb0f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_10.html @@ -0,0 +1,92 @@ + + + + + +Simulavr: 6. Reporting Bugs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

6. Reporting Bugs

+ +

If you find a bug in simulavr, please send electronic mail to +simulavr-devel@nongnu.org. Include the +version number, which you can find by running ‘simulavr +--version’. Also include in your message the output that simulavr +produced, a simple AVR program which reproduces the bug, and the +output you expected. If you are using avr-gdb also include the +version number reported by ‘avr-gdb --version’. +

+

If you have other questions, comments or suggestions about simulavr, +contact me via electronic mail at the above address. +

+
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_11.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_11.html new file mode 100644 index 0000000..aa3a788 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_11.html @@ -0,0 +1,186 @@ + + + + + +Simulavr: Concept Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

Concept Index

+ +
Jump to:   - +   +
+A +   +B +   +D +   +G +   +I +   +O +   +P +   +R +   +S +   +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index Entry Section

-
--breakpoint2.2 Options
--clock-freq2.2 Options
--core-dump2.2 Options
--debug2.2 Options
--device2.2 Options
--disp-prog2.2 Options
--eeprom-image2.2 Options
--eeprom-type2.2 Options
--flash-type2.2 Options
--gdb-debug2.2 Options
--gdbserver2.2 Options
--help2.2 Options
--list-devices2.2 Options
--port2.2 Options
--version2.2 Options
--without-xterm2.2 Options

A
aliasing2.1 Aliasing
avr-gdb3.2 Building GDB for AVR

B
bugs6. Reporting Bugs

D
developing5. Simulavr Internals
display4. Display Coprocesses
display protocol4. Display Coprocesses

G
gdb3. Using with GDB
gdb, building3.2 Building GDB for AVR
gdb, hints3.1 GDB Hints
gdbserver3. Using with GDB

I
internals5. Simulavr Internals
introduction1. Introduction: What is simulavr?
invoking2. Invoking Simulavr

O
options2.2 Options

P
problems6. Reporting Bugs

R
running2. Invoking Simulavr

S
SIGHUP, from gdb3. Using with GDB
SIM_DISP_PROG4. Display Coprocesses
SIM_PIPE_FD4. Display Coprocesses
symbolic linking2.1 Aliasing

+
Jump to:   - +   +
+A +   +B +   +D +   +G +   +I +   +O +   +P +   +R +   +S +   +
+ +
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_2.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_2.html new file mode 100644 index 0000000..9033a9f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_2.html @@ -0,0 +1,96 @@ + + + + + +Simulavr: 2. Invoking Simulavr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2. Invoking Simulavr

+ +

The format for running the simulavr program is: +

+
 
simulavr options … [flash_image]
+
+ +

If the optional ‘flash_image’ file is supplied, it will be loaded +into the flash program memory space of the virtual device. +

+ + + + + +
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_3.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_3.html new file mode 100644 index 0000000..38e3857 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_3.html @@ -0,0 +1,98 @@ + + + + + +Simulavr: 2.1 Aliasing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.1 Aliasing

+ +

On most systems, if the simulavr executable is renamed to the name of an +available device, it can be started without specifying the device +type. The easiest way to achieve this is to create symbolic links for +all the supported devices which point to the simulavr executable. For +instance, this command will create a sym link for the at90s8515 device +on a Unix system: +

+
 
ln -s simulavr at90s8515
+
+ +

Once the links have been created, the following two commands are +equivalent: +

+
 
simulavr -d at90s8515 myprog.bin
+at90s8515 myprog.bin
+
+ +
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_4.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_4.html new file mode 100644 index 0000000..8dd948f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_4.html @@ -0,0 +1,200 @@ + + + + + +Simulavr: 2.2 Options + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

2.2 Options

+ +

simulavr supports the following options: +

+
+
+
+
--help
+
-h
+

Print an informative help message describing the options and available +device types, then exit. +

+ +
+
--debug
+
-D
+

Print assembly instruction mnemonics and program counter (‘PC’) to +output as device program is running. +

+ +
+
--version
+
-v
+

Print out the version number and exit. +

+ +
+
--gdbserver
+
-g
+

Run as a gdbserver process. +

+ +
+
--gdb-debug
+
-G
+

Print out messages for debugging the gdb remote serial protocol interface. +

+ +
+
--port <port>
+
-p
+

Listen for gdb connection on TCP port. If not specified, a default will +be used. Run ‘simulavr --help’ to see what the default is. This +option is ignored if the ‘--gdbserver’ is not specified. +

+ +
+
--device <dev>
+
-d
+

Specify device type. The device types available for use with a specific +version of simulavr can be obtained using the ‘--list-devices’ option. +

+ +
+
--eeprom-image <img>
+
-e
+

Specify an optional eeprom image file to be loaded into the device's +eeprom memory space. +

+ +
+
--eeprom-type <type>
+
-E
+

Specify the type of the eeprom image file. If not specified, the default +is binary. +

+ +
+
--flash-type <type>
+
-F
+

Specify the type of the flash image file. If not specified, the default +is binary. +

+ +
+
--list-devices
+
-L
+

Prints a list of supported devices to stdout and exits. +

+ +
+
--disp-prog <prog>
+
-P
+

Specify a program to be used to display register and memory information +in real time as a child process. The display program can also be +specified by setting the SIM_DISP_PROG environment variable. +

+ +
+
--without-xterm
+
-X
+

Don't start display coprocess program in an xterm. This is useful if +the display coprocess supplies it's own window for input and output, +such as a process which uses a GUI. +

+ +
+
--core-dump
+
-C
+

Dump a core memory image to file on exit. This isn't as useful as it +sounds. The display coprocess mechanism is much more informative. +

+ +
+
--clock-freq <freq>
+
-c
+

Set the simulated mcu clock freqency in Hz. +

+ +
+
--breakpoint <addr>
+
-B
+

Set a breakpoint at <addr>. Note that the break address is +interpreted as a byte address instead of a word address. This makes +it easier on the user since binutils, gcc and gdb all work in terms of +byte addresses. The address can be specified in any base (decimal, +hexidecimal, octal, etc). +

+
+
+ +
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_5.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_5.html new file mode 100644 index 0000000..33aa4f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_5.html @@ -0,0 +1,169 @@ + + + + + +Simulavr: 3. Using with GDB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

3. Using with GDB

+ +

If you want to use gdb as a source-level debugger with +simulavr running as a remote target, start simulavr with the +‘--gdbserver’ or ‘-g’ option. This will put simulavr +into gdbserver mode. simulavr will then act as a TCP server +program on the localhost listening for a connection from gdb. +

+

Once simulavr has accepted a connection from gdb, the two programs +communicate via gdb's remote serial protocol (see GDB Remote Serial Protocol: (gdb)Top section `Protocol' in Debugging with GDB). +

+

Here's how you would start up simulavr in gdbserver mode: +

+
 
+
$ simulavr -d at90s8515 -g
+
+
+ +

Here's a sample gdb session showing what to do on the gdb +side to get gdb to talk to simulavr: +

+
 
+
This GDB was configured as "--host=i686-pc-linux-gnu --target=avr".
+(gdb) file demo_kr.elf
+Reading symbols from demo_kr.elf...done.
+(gdb) target remote localhost:1212
+Remote debugging using localhost:1212
+0x0 in .__start_of_init__ ()
+(gdb) load
+Loading section .text, size 0x76 lma 0x0
+Start address 0x0 , load size 118
+Transfer rate: 944 bits in <1 sec, 29 bytes/write.
+(gdb) break main
+Breakpoint 1 at 0x6e: file demo_kr.c, line 17.
+(gdb) continue
+Continuing.
+
+Breakpoint 1, main () at demo_kr.c:17
+17          sbi(DDRC, (
+(gdb) quit
+The program is running.  Exit anyway? (y or n) y
+
+
+ +

Notice that simulavr knew nothing about the program to debug when it +was started. Gdb was told which file to debug with the ‘file’ +command. After gdb has read in the program and connected to simulavr, +the program's instructions are downloaded into the simulator via the +‘load’ command. The ‘load’ command is not necessary if +simulavr already has the program loaded into it's flash memory area. It +is ok to issue multiple ‘load’ commands. +

+

Also, notice that no ‘run’ command was given to gdb. Gdb assumes +that the simulator has started and is ready to continue. Giving gdb the +‘run’ command, will cause it to stop the current debug session and +start a new one, which is not likely to be what you want to do. +

+

When specifying the remote target to connect to, it is sufficient to +write “target remote :1212” instead of “target remote localhost:1212”. +

+

Hitting CTRL-c in gdb can be used to interrupt the simulator while it is +processing instructions and return control back to gdb. This is most +useful when gdb is waiting for a response from the simulator and the +program running in the simulator is in an infinite loop. +

+

Issuing a ‘signal SIGxxx’ command from gdb will send the signal to +the simulator via a continue with signal packet. The simulator will +process and interpret the signal, but will not pass it on to the AVR +program running in the simulator since it really makes no sense to do +so. In some circumstances, it may make sense to use the gdb signal +mechanism as a way to initiate some sort of external stimulus to be +passed on to the virtual hardware system of the simulator. Signals from +gdb which are processed have the following meanings: +

+
+
+
+
SIGHUP
+

Initiate a reset of the simulator. (Simulates a hardware reset). +

+
+
+ + + + + + +
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_6.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_6.html new file mode 100644 index 0000000..e70b816 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_6.html @@ -0,0 +1,137 @@ + + + + + +Simulavr: 3.1 GDB Hints + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

3.1 GDB Hints

+ +

Since debugging an AVR program with gdb requires gdb to connect to a +remote target (either simulavr or some other debugging tool, such as +avarice), a series of commands must be issued every time gdb is started. +The easiest way around this is to put the commands into a +‘.gdbinit’ file in the project directory. The following example is +from a ‘.gdbinit’ which I use for many projects. +

+
 
+
+## Print out structures in a sane way
+
+echo (gdb) set print pretty
+set print pretty
+
+## Use this for debugging the remote protocol. (Don't use unless
+## debugging simulavr or avr-gdb)
+
+#echo (gdb) set debug remote 1\n
+#set debug remote 1
+
+## If you don't want specify the program to debug when invoking gdb, 
+## you can tell gdb to read it in here. The file should be an elf file
+## compiled with debugging information (-g for C files and -gstabs for
+## asm files).
+
+#echo (gdb) file myprog.elf\n
+#file myprog.elf
+
+## Connect to the remote target via a TCP socket on host:port.
+
+echo (gdb) target remote localhost:1212\n
+target remote localhost:1212
+
+## If you are using simulavr as the remote target, this will upload
+## the program into flash memory for you.
+
+echo (gdb) load\n
+load
+
+## Set a break point at the beginning of main().
+
+echo (gdb) break main\n
+break main
+
+## Run the program up to the first break point.  Gdb's `run` command
+## does not work when using a remote target, must use continue.
+
+echo (gdb) continue\n
+continue
+
+
+
+ +

As you can see, I echo every command so I can see what gdb has +done when it runs the commands in the ‘.gdbinit’ file. +

+
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_7.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_7.html new file mode 100644 index 0000000..270a9d8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_7.html @@ -0,0 +1,96 @@ + + + + + +Simulavr: 3.2 Building GDB for AVR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

3.2 Building GDB for AVR

+ +

In order to use simulavr as a backend to gdb, you must build a special +AVR version of gdb. All gdb versions starting with gdb-5.2.1 +officially support the AVR target. You can just configure gdb with the +--target=avr option. For example, you can use this procedure +to install avr-gdb in /usr/local/bin: +

+
 
+
$ ./configure --target=avr
+$ make
+$ su
+# make install
+# exit
+
+
+ +
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_8.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_8.html new file mode 100644 index 0000000..255f19b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_8.html @@ -0,0 +1,153 @@ + + + + + +Simulavr: 4. Display Coprocesses + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

4. Display Coprocesses

+ +

This chapter documents the protocol that simulavr uses to pass register +and memory information to a display coprocess. +

+

A display coprocess is a separate program started by simulavr for the +sole purpose of displaying register and memory information while an AVR +program is running in the simulator. Using a separate program and a +standardized communication protocol, keeps the simulavr code simpler and +allows for a variety of display programs to be used. +

+

When the user asks simulavr to display register and memory information +during execution, simulavr will start a coprocess to perform the display +work. A pipe will be opened in simulavr into which the data will be +written using the following commands: +

+ + + + + + + + + + +

q’ +

Quit. +

+

r<reg>:<val>’ +

Set register to val. +

+

p<val>’ +

Set program counter to val. +

+

i<reg>:<val>’ +

Set io register to val. +

+

I<reg>:<name>’ +

Set io register name. +

+

s<addr>,<len>:XX’ +

Set sram addrs to values (one XX pair per addr). +

+

e<addr>,<len>:XX’ +

Set eeprom addrs to values (one XX pair per addr). +

+

f<addr>,<len>:XXXX’ +

Set flash addrs to values (one XXXX quad per addr). +

+

n<clock_ticks>’ +

Update the number of clock ticks. +

+
+ +

All values are hexidecimal numbers, except for <name> which is a string. +

+

In order for the display process to know which pipe to read the +information, it must handle either the ‘--pfd <fd>’ option or check +the SIM_PIPE_FD enviroment variable. The value passed using +either method will be the file descriptor number of the pipe from which +the display prgram will read the informtion. +

+

Simulavr will start all display programs like so (sizes are decimal +numbers of bytes and sram_start is just the decimal address of the +first byte of sram, usually 0x60 [96] or 0x100 [256]): +

+

<prog> --pfd <fd> <flash_size> <sram_size> <sram_start> <eeprom_size>’ +

+

The user can specify the display program to use via the +‘--disp-prog’ option to simulavr or using the SIM_DISP_PROG +environment variable. If both are not specified, then no display will be +used. +

+
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_9.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_9.html new file mode 100644 index 0000000..193a787 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_9.html @@ -0,0 +1,92 @@ + + + + + +Simulavr: 5. Simulavr Internals + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
+

5. Simulavr Internals

+ +

Simulavr internals are documented using the doxygen system to automate +generation of the documentation from the source code comments. The +documentation for the latest release is always available at: +

+

http://savannah.nongnu.org/download/simulavr/doc/internals_html/ +

+

The most up-to-date documents will most likely be those in the source +code itself. If you wish to help develop simulavr, it is highly +recommended that you get the latest source from cvs and consult the +internals documents there. +

+
+ + + + + + + +
[ < ][ > ]   [ << ][ Up ][ >> ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_abt.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_abt.html new file mode 100644 index 0000000..4c66243 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_abt.html @@ -0,0 +1,167 @@ + + + + + +Simulavr: About This Document + + + + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

About This Document

+

+ This document was generated by eweddington on November, 7 2008 using texi2html 1.78. +

+

+ The buttons in the navigation panels have the following meaning: +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Button Name Go to From 1.2.3 go to
[ < ] BackPrevious section in reading order1.2.2
[ > ] ForwardNext section in reading order1.2.4
[ << ] FastBackBeginning of this chapter or previous chapter1
[ Up ] UpUp section1.2
[ >> ] FastForwardNext chapter2
[Top] TopCover (top) of document  
[Contents] ContentsTable of contents  
[Index] IndexIndex  
[ ? ] AboutAbout (help)  
+ +

+ where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure: +

+ +
    +
  • 1. Section One +
      +
    • 1.1 Subsection One-One +
        +
      • ...
      • +
      +
    • +
    • 1.2 Subsection One-Two +
        +
      • 1.2.1 Subsubsection One-Two-One
      • +
      • 1.2.2 Subsubsection One-Two-Two
      • +
      • 1.2.3 Subsubsection One-Two-Three     + <== Current Position
      • +
      • 1.2.4 Subsubsection One-Two-Four
      • +
      +
    • +
    • 1.3 Subsection One-Three +
        +
      • ...
      • +
      +
    • +
    • 1.4 Subsection One-Four
    • +
    +
  • +
+ +
+ + + + + +
[Top][Contents][Index][ ? ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_toc.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_toc.html new file mode 100644 index 0000000..5a27468 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/html/simulavr_toc.html @@ -0,0 +1,87 @@ + + + + + +Simulavr: Table of Contents + + + + + + + + + + + + + + + + + + + + +
[Top][Contents][Index][ ? ]
+

Table of Contents

+ +
+ + + + + +
[Top][Contents][Index][ ? ]
+

+ + This document was generated by eweddington on November, 7 2008 using texi2html 1.78. + +
+ +

+ + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/adc_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/adc_8c-source.html new file mode 100644 index 0000000..6562488 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/adc_8c-source.html @@ -0,0 +1,503 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/adc_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/adc_8c.html new file mode 100644 index 0000000..9c8e27e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/adc_8c.html @@ -0,0 +1,309 @@ + + + + + Main Page + + + + + + +
+

adc.c File Reference

Module to simulate the AVR's ADC module. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + +

Functions

VDevice * adc_int_create (int addr, char *name, int rel_addr, void *data)
+ADCIntr_T * adc_intr_new (int addr, char *name, int rel_addr)
void adc_intr_construct (ADCIntr_T *adc, int addr, char *name, int rel_addr)
void adc_intr_destroy (void *adc)
VDevice * adc_create (int addr, char *name, int rel_addr, void *data)
+ADC_T * adc_new (int addr, char *name, uint8_t uier, int rel_addr)
void adc_construct (ADC_T *adc, int addr, char *name, uint8_t uier, int rel_addr)
void adc_destroy (void *adc)
+uint16_t adc_port_rd (uint8_t mux)
+void adc_port_wr (uint8_t val)
+


Detailed Description

+Module to simulate the AVR's ADC module. +

+ +

Definition in file adc.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* adc_int_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new ADC interrupt. +

+ +

Definition at line 79 of file adc.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void adc_intr_construct (ADCIntr_T *  adc,
int  addr,
char *  name,
int  rel_addr 
)
+
+
+ +

+Constructor for adc interrupt object. +

+ +

Definition at line 99 of file adc.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void adc_intr_destroy (void *  adc  ) 
+
+
+ +

+Destructor for adc interrupt object. +

+ +

Definition at line 138 of file adc.c.

+ +

References vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* adc_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new ADC structure. +

+ +

Definition at line 292 of file adc.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void adc_construct (ADC_T *  adc,
int  addr,
char *  name,
uint8_t  uier,
int  rel_addr 
)
+
+
+ +

+Constructor for ADC object. +

+ +

Definition at line 318 of file adc.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void adc_destroy (void *  adc  ) 
+
+
+ +

+Destructor for ADC object. +

+ +

Definition at line 357 of file adc.c.

+ +

References vdev_destroy().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrclass_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrclass_8c-source.html new file mode 100644 index 0000000..f55b2e4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrclass_8c-source.html @@ -0,0 +1,153 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrclass_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrclass_8c.html new file mode 100644 index 0000000..b0985d4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrclass_8c.html @@ -0,0 +1,228 @@ + + + + + Main Page + + + + + + +
+

avrclass.c File Reference

Methods to provide user interfaces to the AvrClass structure. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + +

Functions

AvrClass * class_new (void)
void class_construct (AvrClass *klass)
void class_destroy (void *klass)
void class_overload_destroy (AvrClass *klass, AvrClassFP_Destroy destroy)
void class_ref (AvrClass *klass)
void class_unref (AvrClass *klass)
+


Detailed Description

+Methods to provide user interfaces to the AvrClass structure. +

+This module provides the basis for simulavr's object mechanism. For a detailed discussion on using simulavr's class mechanism, see the simulavr users manual. FIXME: [TRoth 2002/03/19] move the discussion here. +

Definition in file avrclass.c.

+

Function Documentation

+ +
+
+ + + + + + + + + +
AvrClass* class_new (void   ) 
+
+
+ +

+This function should never be used. +

+The only potential use for it as a template for derived classes. Do Not Use This Function! +

Definition at line 46 of file avrclass.c.

+ +

References avr_new, and class_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void class_construct (AvrClass *  klass  ) 
+
+
+ +

+Initializes the AvrClass data structure. +

+A derived class should call this function from their own <klass>_construct() function. All classes should have their constructor function call their parent's constructor function. +

Definition at line 61 of file avrclass.c.

+ +

References avr_error, class_destroy(), and class_overload_destroy().

+ +

Referenced by class_new(), mem_construct(), stack_construct(), and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void class_destroy (void *  klass  ) 
+
+
+ +

+Releases resources allocated by class's <klass>_new() function. +

+This function should never be called except as the last statement of a directly derived class's destroy method. All classes should have their destroy method call their parent's destroy method. +

Definition at line 78 of file avrclass.c.

+ +

References avr_free().

+ +

Referenced by avr_core_destroy(), class_construct(), mem_destroy(), stack_destroy(), and vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void class_overload_destroy (AvrClass *  klass,
AvrClassFP_Destroy  destroy 
)
+
+
+ +

+Overload the default destroy method. +

+Derived classes will call this to replace class_destroy() with their own destroy method. +

Definition at line 92 of file avrclass.c.

+ +

References avr_error.

+ +

Referenced by avr_core_new(), class_construct(), flash_new(), hwstack_new(), mem_new(), memstack_new(), stack_new(), and vdev_new().

+ +
+

+ +

+
+ + + + + + + + + +
void class_ref (AvrClass *  klass  ) 
+
+
+ +

+Increments the reference count for the klass object. +

+The programmer must call this whenever a reference to an object is stored in more than one place. +

Definition at line 106 of file avrclass.c.

+ +

References avr_error.

+ +

Referenced by mem_attach(), and memstack_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void class_unref (AvrClass *  klass  ) 
+
+
+ +

+Decrements the reference count for the klass object. +

+When the reference count reaches zero, the class's destroy method is called on the object. +

Definition at line 120 of file avrclass.c.

+ +

References avr_error.

+ +

Referenced by avr_core_destroy(), dlist_add(), dlist_delete(), dlist_delete_all(), mem_destroy(), and memstack_destroy().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrcore_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrcore_8c-source.html new file mode 100644 index 0000000..843d37e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrcore_8c-source.html @@ -0,0 +1,1334 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrcore_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrcore_8c.html new file mode 100644 index 0000000..1580dc9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrcore_8c.html @@ -0,0 +1,1590 @@ + + + + + Main Page + + + + + + +
+

avrcore.c File Reference

Module for the core AvrCore object, which is the AVR CPU to be simulated. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

+#define BREAK_OPCODE   0x9598

Functions

void avr_core_dump_core (AvrCore *core, FILE *f_core)
int avr_core_load_program (AvrCore *core, char *file, int format)
int avr_core_load_eeprom (AvrCore *core, char *file, int format)
AvrCore handling methods


AvrCore * avr_core_new (char *dev_name)
void avr_core_destroy (void *core)
void avr_core_get_sizes (AvrCore *core, int *flash, int *sram, int *sram_start, int *eeprom)
void avr_core_attach_vdev (AvrCore *core, uint16_t addr, char *name, VDevice *vdev, int flags, uint8_t reset_value, uint8_t rd_mask, uint8_t wr_mask)
VDevice * avr_core_get_vdev_by_name (AvrCore *core, char *name)
VDevice * avr_core_get_vdev_by_addr (AvrCore *core, int addr)
void avr_core_set_state (AvrCore *core, StateType state)
int avr_core_get_state (AvrCore *core)
void avr_core_set_sleep_mode (AvrCore *core, int sleep_mode)
int avr_core_get_sleep_mode (AvrCore *core)
Program Memory Space Access Methods


Data Memory Space Access Methods


Status Register Access Methods


int avr_core_sreg_get_bit (AvrCore *core, int b)
void avr_core_sreg_set_bit (AvrCore *core, int b, int v)
RAMPZ access methods


uint8_t avr_core_rampz_get (AvrCore *core)
void avr_core_rampz_set (AvrCore *core, uint8_t v)
Direct I/O Register Access Methods
IO Registers are mapped in memory directly after the 32 (0x20) general registers.

void avr_core_io_display_names (AvrCore *core)
uint8_t avr_core_io_read (AvrCore *core, int reg)
void avr_core_io_write (AvrCore *core, int reg, uint8_t val)
Stack Methods


uint32_t avr_core_stack_pop (AvrCore *core, int bytes)
void avr_core_stack_push (AvrCore *core, int bytes, uint32_t val)
Program Counter Methods


int32_t avr_core_PC_size (AvrCore *core)
void avr_core_PC_incr (AvrCore *core, int val)
Methods for accessing CK and instruction Clocks


uint64_t avr_core_CK_get (AvrCore *core)
void avr_core_CK_incr (AvrCore *core)
int avr_core_inst_CKS_get (AvrCore *core)
void avr_core_inst_CKS_set (AvrCore *core, int val)
Interrupt Access Methods.


IntVect * avr_core_irq_get_pending (AvrCore *core)
void avr_core_irq_raise (AvrCore *core, unsigned int irq)
void avr_core_irq_clear (AvrCore *core, IntVect *irq)
void avr_core_irq_clear_all (AvrCore *core)
Break point access methods.


void avr_core_insert_breakpoint (AvrCore *core, int pc)
void avr_core_remove_breakpoint (AvrCore *core, int pc)
void avr_core_disable_breakpoints (AvrCore *core)
void avr_core_enable_breakpoints (AvrCore *core)
Program control methods


int avr_core_step (AvrCore *core)
void avr_core_run (AvrCore *core)
void avr_core_reset (AvrCore *core)
Callback Handling Methods


void avr_core_add_ext_rd_wr (AvrCore *core, int addr, PortFP_ExtRd ext_rd, PortFP_ExtWr ext_wr)
void avr_core_clk_cb_add (AvrCore *core, CallBack *cb)
void avr_core_async_cb_add (AvrCore *core, CallBack *cb)
void avr_core_clk_cb_exec (AvrCore *core)
void avr_core_async_cb_exec (AvrCore *core)

Variables

int global_debug_inst_output = 0
+


Detailed Description

+Module for the core AvrCore object, which is the AVR CPU to be simulated. +

+ +

Definition in file avrcore.c.

+

Function Documentation

+ +
+
+ + + + + + + + + +
AvrCore* avr_core_new (char *  dev_name  ) 
+
+
+ +

+Allocate a new AvrCore object. +

+ +

Definition at line 355 of file avrcore.c.

+ +

References avr_core_destroy(), avr_new, class_overload_destroy(), and dev_supp_lookup_device().

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_destroy (void *  core  ) 
+
+
+ +

+Destructor for the AvrCore class. +

+Not to be called directly, except by a derived class. Called via class_unref. +

Definition at line 539 of file avrcore.c.

+ +

References class_destroy(), class_unref(), and dlist_delete_all().

+ +

Referenced by avr_core_new().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void avr_core_get_sizes (AvrCore *  core,
int *  flash,
int *  sram,
int *  sram_start,
int *  eeprom 
)
+
+
+ +

+Query the sizes of the 3 memory spaces: flash, sram, and eeprom. +

+ +

Definition at line 562 of file avrcore.c.

+ +

References flash_get_size().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void avr_core_attach_vdev (AvrCore *  core,
uint16_t  addr,
char *  name,
VDevice *  vdev,
int  flags,
uint8_t  reset_value,
uint8_t  rd_mask,
uint8_t  wr_mask 
)
+
+
+ +

+Attach a virtual device into the Memory. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VDevice* avr_core_get_vdev_by_name (AvrCore *  core,
char *  name 
)
+
+
+ +

+Returns the VDevice with the name name. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VDevice* avr_core_get_vdev_by_addr (AvrCore *  core,
int  addr 
)
+
+
+ +

+Returns the VDevice which handles the address addr. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_set_state (AvrCore *  core,
StateType  state 
)
+
+
+ +

+Sets the device's state (running, stopped, breakpoint, sleep). +

+ +

+

+ +

+
+ + + + + + + + + +
int avr_core_get_state (AvrCore *  core  ) 
+
+
+ +

+Returns the device's state (running, stopped, breakpoint, sleep). +

+ +

Referenced by avr_core_step().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_set_sleep_mode (AvrCore *  core,
int  sleep_mode 
)
+
+
+ +

+Sets the device to a sleep state. +

+

Parameters:
+ + + +
core Pointer to the core.
sleep_mode The BITNUMBER of the sleepstate.
+
+ +
+

+ +

+
+ + + + + + + + + +
int avr_core_get_sleep_mode (AvrCore *  core  ) 
+
+
+ +

+Return the device's sleepmode. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int avr_core_sreg_get_bit (AvrCore *  core,
int  b 
)
+
+
+ +

+Get the value of bit b of the status register. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void avr_core_sreg_set_bit (AvrCore *  core,
int  b,
int  v 
)
+
+
+ +

+Set the value of bit b of the status register. +

+ +

+

+ +

+
+ + + + + + + + + +
uint8_t avr_core_rampz_get (AvrCore *  core  ) 
+
+
+ +

+Get the value of the rampz register. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_rampz_set (AvrCore *  core,
uint8_t  v 
)
+
+
+ +

+Set the value of the rampz register. +

+ +

+

+ +

+
+ + + + + + + + + +
void avr_core_io_display_names (AvrCore *  core  ) 
+
+
+ +

+Displays all registers. +

+ +

Definition at line 723 of file avrcore.c.

+ +

References display_io_reg_name(), and mem_io_fetch().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
uint8_t avr_core_io_read (AvrCore *  core,
int  reg 
)
+
+
+ +

+Reads the value of a register. +

+

Parameters:
+ + + +
core Pointer to the core.
reg The registers address. This address is counted above the beginning of the registers memory block (0x20).
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void avr_core_io_write (AvrCore *  core,
int  reg,
uint8_t  val 
)
+
+
+ +

+Writes the value of a register. See avr_core_io_read() for a discussion of reg. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
uint32_t avr_core_stack_pop (AvrCore *  core,
int  bytes 
)
+
+
+ +

+Pop 1-4 bytes off of the stack. +

+See stack_pop() for more details. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void avr_core_stack_push (AvrCore *  core,
int  bytes,
uint32_t  val 
)
+
+
+ +

+Push 1-4 bytes onto the stack. +

+See stack_push() for more details. +

+

+ +

+
+ + + + + + + + + +
int32_t avr_core_PC_size (AvrCore *  core  ) 
+
+
+ +

+Returns the size of the Program Counter in bytes. +

+Most devices have a 16-bit PC (2 bytes), but some larger ones (e.g. mega256), have a 22-bit PC (3 bytes). +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_PC_incr (AvrCore *  core,
int  val 
)
+
+
+ +

+Increment the Program Counter by val. +

+val can be either positive or negative.

+If the result of the incrememt is outside the valid range for PC, it is adjusted to fall in the valid range. This allows addresses to wrap around the end of the insn space. +

+

+ +

+
+ + + + + + + + + +
uint64_t avr_core_CK_get (AvrCore *  core  ) 
+
+
+ +

+Get the current clock counter. +

+ +

Referenced by avr_core_run().

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_CK_incr (AvrCore *  core  ) 
+
+
+ +

+Increment the clock counter. +

+ +

Referenced by avr_core_step().

+ +
+

+ +

+
+ + + + + + + + + +
int avr_core_inst_CKS_get (AvrCore *  core  ) 
+
+
+ +

+Get the number of clock cycles remaining for the currently executing instruction. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_inst_CKS_set (AvrCore *  core,
int  val 
)
+
+
+ +

+Set the number of clock cycles for the instruction being executed. +

+ +

Referenced by avr_core_reset().

+ +
+

+ +

+
+ + + + + + + + + +
IntVect* avr_core_irq_get_pending (AvrCore *  core  ) 
+
+
+ +

+Gets the first pending irq. +

+ +

Definition at line 836 of file avrcore.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_irq_raise (AvrCore *  core,
unsigned int  irq 
)
+
+
+ +

+Raises an irq by adding it's data to the irq_pending list. +

+ +

Definition at line 844 of file avrcore.c.

+ +

References avr_message.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_irq_clear (AvrCore *  core,
IntVect *  irq 
)
+
+
+ +

+Calls the interrupt's callback to clear the flag. +

+ +

Definition at line 857 of file avrcore.c.

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_irq_clear_all (AvrCore *  core  ) 
+
+
+ +

+Removes all irqs from the irq_pending list. +

+ +

Referenced by avr_core_reset().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_insert_breakpoint (AvrCore *  core,
int  pc 
)
+
+
+ +

+Inserts a break point. +

+ +

Definition at line 874 of file avrcore.c.

+ +

References flash_read(), and flash_write().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_remove_breakpoint (AvrCore *  core,
int  pc 
)
+
+
+ +

+Removes a break point. +

+ +

Definition at line 888 of file avrcore.c.

+ +

References flash_write().

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_disable_breakpoints (AvrCore *  core  ) 
+
+
+ +

+Disable breakpoints. +

+Disables all breakpoints that where set using avr_core_insert_breakpoint(). The breakpoints are not removed from the breakpoint list. +

Definition at line 945 of file avrcore.c.

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_enable_breakpoints (AvrCore *  core  ) 
+
+
+ +

+Enable breakpoints. +

+Enables all breakpoints that where previous disabled. +

Definition at line 958 of file avrcore.c.

+ +
+

+ +

+
+ + + + + + + + + +
int avr_core_step (AvrCore *  core  ) 
+
+
+ +

+Process a single program instruction, all side effects and peripheral stimulii. +

+Executes instructions, calls callbacks, and checks for interrupts. +

Definition at line 1083 of file avrcore.c.

+ +

References avr_core_async_cb_exec(), avr_core_CK_incr(), avr_core_clk_cb_exec(), and avr_core_get_state().

+ +

Referenced by avr_core_run().

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_run (AvrCore *  core  ) 
+
+
+ +

+Start the processing of instructions by the simulator. +

+The simulated device will run until one of the following occurs:

    +
  • The state of the core is no longer STATE_RUNNING.
  • The simulator receives a SIGINT signal.
  • A breakpoint is reached (currently causes core to stop running).
  • A fatal internal error occurs.
+

+

Note:
When running simulavr in gdb server mode, this function is not used. The avr_core_step() function is called repeatedly in a loop when the continue command is issued from gdb. As such, the functionality in this loop should be kept to a minimum.
+
Todo:
Should add some basic breakpoint handling here. Maybe allow continuing, and simple breakpoint management (disable, delete, set)
+ +

Definition at line 1140 of file avrcore.c.

+ +

References avr_core_CK_get(), avr_core_reset(), avr_core_step(), avr_message, get_program_time(), signal_has_occurred(), signal_watch_start(), and signal_watch_stop().

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_reset (AvrCore *  core  ) 
+
+
+ +

+Sets the simulated CPU back to its initial state. +

+Zeroes out PC, IRQ's, clock, and memory. +

Definition at line 1194 of file avrcore.c.

+ +

References avr_core_inst_CKS_set(), avr_core_irq_clear_all(), display_clock(), and mem_reset().

+ +

Referenced by avr_core_run().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void avr_core_add_ext_rd_wr (AvrCore *  core,
int  addr,
PortFP_ExtRd  ext_rd,
PortFP_ExtWr  ext_wr 
)
+
+
+ +

+For adding external read and write callback functions. +

+rd and wr should come in pairs, but it is safe to add empty function via passing a NULL pointer for either function.

+

Parameters:
+ + + + + +
core A pointer to an AvrCore object.
port_id The ID for handling the simulavr inheritance model.
ext_rd Function for the device core to call when it needs to communicate with the external world via I/O Ports.
ext_wr Function for the device core to call when it needs to communicate with the external world via I/O Ports.
+
+ +

Definition at line 1234 of file avrcore.c.

+ +

References avr_warning, mem_get_vdevice_by_addr(), and port_add_ext_rd_wr().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_clk_cb_add (AvrCore *  core,
CallBack *  cb 
)
+
+
+ +

+Add a new clock callback to list. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_async_cb_add (AvrCore *  core,
CallBack *  cb 
)
+
+
+ +

+Add a new asynchronous callback to list. +

+ +

+

+ +

+
+ + + + + + + + + +
void avr_core_clk_cb_exec (AvrCore *  core  ) 
+
+
+ +

+Run all the callbacks in the list. +

+If a callback returns non-zero (true), then it is done with it's job and wishes to be removed from the list.

+The time argument has dual meaning. If the callback list is for the clock callbacks, time is the value of the CK clock counter. If the callback list is for the asynchronous callback, time is the number of milliseconds from some unknown, arbitrary time on the host system. +

Referenced by avr_core_step().

+ +
+

+ +

+
+ + + + + + + + + +
void avr_core_async_cb_exec (AvrCore *  core  ) 
+
+
+ +

+Run all the asynchronous callbacks. +

+ +

Referenced by avr_core_step().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void avr_core_dump_core (AvrCore *  core,
FILE *  f_core 
)
+
+
+ +

+Dump the contents of the entire CPU core. +

+

Parameters:
+ + + +
core A pointer to an AvrCore object.
f_core An open file descriptor.
+
+ +

Definition at line 1284 of file avrcore.c.

+ +

References flash_dump_core(), and mem_dump_core().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int avr_core_load_program (AvrCore *  core,
char *  file,
int  format 
)
+
+
+ +

+Load a program from an input file. +

+ +

Definition at line 1297 of file avrcore.c.

+ +

References flash_load_from_file().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int avr_core_load_eeprom (AvrCore *  core,
char *  file,
int  format 
)
+
+
+ +

+Load a program from an input file. +

+ +

Definition at line 1304 of file avrcore.c.

+ +

References mem_get_vdevice_by_name().

+ +
+

+


Variable Documentation

+ +
+
+ + + + +
int global_debug_inst_output = 0
+
+
+ +

+Flag for enabling output of instruction debug messages. +

+ +

Definition at line 64 of file avrcore.c.

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrerror_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrerror_8c-source.html new file mode 100644 index 0000000..9b83640 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrerror_8c-source.html @@ -0,0 +1,171 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrerror_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrerror_8c.html new file mode 100644 index 0000000..fd0b97c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrerror_8c.html @@ -0,0 +1,134 @@ + + + + + Main Page + + + + + + +
+

avrerror.c File Reference

Functions for printing messages, warnings and errors. More... +

+ +

+Go to the source code of this file. + + + + + + + + +

Defines

#define avr_message(fmt, args...)   private_avr_message(__FILE__, __LINE__, fmt, ## args)
#define avr_warning(fmt, args...)   private_avr_warning(__FILE__, __LINE__, fmt, ## args)
#define avr_error(fmt, args...)   private_avr_error(__FILE__, __LINE__, fmt, ## args)
+


Detailed Description

+Functions for printing messages, warnings and errors. +

+This module provides output printing facilities. +

Definition in file avrerror.c.

+

Define Documentation

+ +
+
+ + + + + + + + + + + + +
#define avr_message (fmt,
args...   )    private_avr_message(__FILE__, __LINE__, fmt, ## args)
+
+
+ +

+Print an ordinary message to stdout. +

+ +

Definition at line 42 of file avrerror.c.

+ +

Referenced by avr_core_irq_raise(), avr_core_run(), and decode_init_lookup_table().

+ +
+

+ +

+
+ + + + + + + + + + + + +
#define avr_warning (fmt,
args...   )    private_avr_warning(__FILE__, __LINE__, fmt, ## args)
+
+ +

+ +

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrmalloc_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrmalloc_8c-source.html new file mode 100644 index 0000000..5fd4f99 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrmalloc_8c-source.html @@ -0,0 +1,216 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrmalloc_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrmalloc_8c.html new file mode 100644 index 0000000..f8a8a94 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/avrmalloc_8c.html @@ -0,0 +1,315 @@ + + + + + Main Page + + + + + + +
+

avrmalloc.c File Reference

Memory Management Functions. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + +

Defines

#define avr_new(type, count)   ((type *) avr_malloc ((unsigned) sizeof (type) * (count)))
#define avr_new0(type, count)   ((type *) avr_malloc0 ((unsigned) sizeof (type) * (count)))
#define avr_renew(type, mem, count)   ((type *) avr_realloc (mem, (unsigned) sizeof (type) * (count)))

Functions

void * avr_malloc (size_t size)
void * avr_malloc0 (size_t size)
void * avr_realloc (void *ptr, size_t size)
char * avr_strdup (const char *s)
void avr_free (void *ptr)
+


Detailed Description

+Memory Management Functions. +

+This module provides facilities for managing memory.

+There is no need to check the returned values from any of these functions. Any memory allocation failure is considered fatal and the program is terminated.

+We want to wrap all functions that allocate memory. This way we can add secret code to track memory usage and debug memory leaks if we want. Right now, I don't want to ;). +

Definition in file avrmalloc.c.

+

Define Documentation

+ +
+
+ + + + + + + + + + + + +
#define avr_new (type,
count   )    ((type *) avr_malloc ((unsigned) sizeof (type) * (count)))
+
+
+ +

+Macro for allocating memory. +

+

Parameters:
+ + + +
type The C type of the memory to allocate.
count Allocate enough memory hold count types.
+
+This macro is just a wrapper for avr_malloc() and should be used to avoid the repetitive task of casting the returned pointer. +

Definition at line 57 of file avrmalloc.c.

+ +

Referenced by avr_core_new(), class_new(), flash_new(), hwstack_new(), memstack_new(), and stack_new().

+ +
+

+ +

+
+ + + + + + + + + + + + +
#define avr_new0 (type,
count   )    ((type *) avr_malloc0 ((unsigned) sizeof (type) * (count)))
+
+
+ +

+Macro for allocating memory and initializing it to zero. +

+

Parameters:
+ + + +
type The C type of the memory to allocate.
count Allocate enough memory hold count types.
+
+This macro is just a wrapper for avr_malloc0() and should be used to avoid the repetitive task of casting the returned pointer. +

Definition at line 67 of file avrmalloc.c.

+ +

Referenced by decode_init_lookup_table(), display_send_msg(), hwstack_construct(), mem_construct(), mem_new(), and vdev_new().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + +
#define avr_renew (type,
mem,
count   )    ((type *) avr_realloc (mem, (unsigned) sizeof (type) * (count)))
+
+
+ +

+Macro for allocating memory. +

+

Parameters:
+ + + + +
type The C type of the memory to allocate.
mem Pointer to existing memory.
count Allocate enough memory hold count types.
+
+This macro is just a wrapper for avr_malloc() and should be used to avoid the repetitive task of casting the returned pointer. +

Definition at line 78 of file avrmalloc.c.

+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + +
void* avr_malloc (size_t  size  ) 
+
+
+ +

+Allocate memory and initialize to zero. +

+Use the avr_new() macro instead of this function.

+There is no need to check the returned value, since this function will terminate the program if the memory allocation fails.

+No memory is allocated if passed a size of zero. +

Definition at line 93 of file avrmalloc.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + +
void* avr_malloc0 (size_t  size  ) 
+
+
+ +

+Allocate memory and initialize to zero. +

+Use the avr_new0() macro instead of this function.

+There is no need to check the returned value, since this function will terminate the program if the memory allocation fails.

+No memory is allocated if passed a size of zero. +

Definition at line 117 of file avrmalloc.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void* avr_realloc (void *  ptr,
size_t  size 
)
+
+
+ +

+Wrapper for realloc(). x Resizes and possibly allocates more memory for an existing memory block. +

+Use the avr_renew() macro instead of this function.

+There is no need to check the returned value, since this function will terminate the program if the memory allocation fails.

+No memory is allocated if passed a size of zero. +

Definition at line 143 of file avrmalloc.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + +
char* avr_strdup (const char *  s  ) 
+
+
+ +

+Wrapper for strdup(). +

+Returns a copy of the passed in string. The returned copy must be free'd.

+There is no need to check the returned value, since this function will terminate the program if the memory allocation fails.

+It is safe to pass a NULL pointer. No memory is allocated if a NULL is passed. +

Definition at line 168 of file avrmalloc.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + +
void avr_free (void *  ptr  ) 
+
+
+ +

+Free malloc'd memory. +

+It is safe to pass a null pointer to this function. +

Definition at line 187 of file avrmalloc.c.

+ +

Referenced by class_destroy(), display_send_msg(), hwstack_destroy(), and mem_destroy().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/break_watch_pts.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/break_watch_pts.html new file mode 100644 index 0000000..19b2852 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/break_watch_pts.html @@ -0,0 +1,30 @@ + + + + + Main Page + + + + + + +
+

Breakpoints and Watchpoints

+Using gdb, it is possible to set breakpoints.

+Watch points are not currently implemented.

+This is only an idea right now: The way breakpoints are implemented within simulavr, it would be possible at init time to read a file containing breakpoint information. Then, as breakpoints are reached, have something happen which allows the user to check the state of the program. Anyone interested in implementing this, please step forward.

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/callback_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/callback_8c-source.html new file mode 100644 index 0000000..fa470a7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/callback_8c-source.html @@ -0,0 +1,141 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/decoder_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/decoder_8c-source.html new file mode 100644 index 0000000..da58e24 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/decoder_8c-source.html @@ -0,0 +1,3917 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/decoder_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/decoder_8c.html new file mode 100644 index 0000000..82c14c4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/decoder_8c.html @@ -0,0 +1,201 @@ + + + + + Main Page + + + + + + +
+

decoder.c File Reference

Module for handling opcode decoding. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + +

Enumerations

enum  decoder_operand_masks {
+  mask_Rd_2 = 0x0030, +
+  mask_Rd_3 = 0x0070, +
+  mask_Rd_4 = 0x00f0, +
+  mask_Rd_5 = 0x01f0, +
+  mask_Rr_3 = 0x0007, +
+  mask_Rr_4 = 0x000f, +
+  mask_Rr_5 = 0x020f, +
+  mask_K_8 = 0x0F0F, +
+  mask_K_6 = 0x00CF, +
+  mask_k_7 = 0x03F8, +
+  mask_k_12 = 0x0FFF, +
+  mask_k_22 = 0x01F1, +
+  mask_reg_bit = 0x0007, +
+  mask_sreg_bit = 0x0070, +
+  mask_q_displ = 0x2C07, +
+  mask_A_5 = 0x00F8, +
+  mask_A_6 = 0x060F +
+ }

Functions

+int avr_op_UNKNOWN (AvrCore *core, uint16_t opcode, unsigned int arg1, unsigned int arg2)
void decode_init_lookup_table (void)
struct opcode_info * decode_opcode (uint16_t opcode)

Variables

+struct opcode_info * global_opcode_lookup_table
+


Detailed Description

+Module for handling opcode decoding. +

+The heart of the instruction decoder is the decode_opcode() function.

+The decode_opcode() function examines the given opcode to determine which instruction applies and returns a pointer to a function to handler performing the instruction's operation. If the given opcode does not map to an instruction handler, NULL is returned.

+Nearly every instruction in Atmel's Instruction Set Data Sheet will have a handler function defined. Each handler will perform all the operations described in the data sheet for a given instruction. A few instructions have synonyms. For example, CBR is a synonym for ANDI.

+This should all be fairly straight forward. +

Definition in file decoder.c.

+

Enumeration Type Documentation

+ +
+
+ + + + +
enum decoder_operand_masks
+
+
+ +

+Masks to help extracting information from opcodes. +

+

Enumerator:
+ + + + + + + + + + + + + + + + + + +
mask_Rd_2  +2 bit register id ( R24, R26, R28, R30 )
mask_Rd_3  +3 bit register id ( R16 - R23 )
mask_Rd_4  +4 bit register id ( R16 - R31 )
mask_Rd_5  +5 bit register id ( R00 - R31 )
mask_Rr_3  +3 bit register id ( R16 - R23 )
mask_Rr_4  +4 bit register id ( R16 - R31 )
mask_Rr_5  +5 bit register id ( R00 - R31 )
mask_K_8  +for 8 bit constant
mask_K_6  +for 6 bit constant
mask_k_7  +for 7 bit relative address
mask_k_12  +for 12 bit relative address
mask_k_22  +for 22 bit absolute address
mask_reg_bit  +register bit select
mask_sreg_bit  +status register bit select
mask_q_displ  +address displacement (q)
mask_A_5  +5 bit register id ( R00 - R31 )
mask_A_6  +6 bit IO port id
+
+ +

Definition at line 77 of file decoder.c.

+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + +
void decode_init_lookup_table (void   ) 
+
+
+ +

+Initialize the decoder lookup table. +

+This is automatically called by avr_core_construct().

+It is safe to call this function many times, since if will only create the table the first time it is called. +

Definition at line 3869 of file decoder.c.

+ +

References avr_message, and avr_new0.

+ +
+

+ +

+
+ + + + + + + + + +
struct opcode_info* decode_opcode (uint16_t  opcode  )  [read]
+
+
+ +

+Decode an opcode into the opcode handler function. +

+Generates a warning and returns NULL if opcode is invalid.

+Returns a pointer to the function to handle the opcode. +

+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/deprecated.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/deprecated.html new file mode 100644 index 0000000..5f52c39 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/deprecated.html @@ -0,0 +1,31 @@ + + + + + Main Page + + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/device_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/device_8c-source.html new file mode 100644 index 0000000..c797af7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/device_8c-source.html @@ -0,0 +1,259 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/device_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/device_8c.html new file mode 100644 index 0000000..b7ecc0e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/device_8c.html @@ -0,0 +1,460 @@ + + + + + Main Page + + + + + + +
+

device.c File Reference

VDevice methods. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + +

Functions

VDevice * vdev_new (char *name, VDevFP_Read rd, VDevFP_Write wr, VDevFP_Reset reset, VDevFP_AddAddr add_addr)
void vdev_def_AddAddr (VDevice *dev, int addr, char *name, int related_addr, void *data)
void vdev_construct (VDevice *dev, VDevFP_Read rd, VDevFP_Write wr, VDevFP_Reset reset, VDevFP_AddAddr add_addr)
void vdev_destroy (void *dev)
uint8_t vdev_read (VDevice *dev, int addr)
void vdev_write (VDevice *dev, int addr, uint8_t val)
void vdev_reset (VDevice *dev)
void vdev_set_core (VDevice *dev, AvrClass *core)
AvrClass * vdev_get_core (VDevice *dev)
void vdev_add_addr (VDevice *dev, int addr, char *name, int rel_addr, void *data)
+


Detailed Description

+VDevice methods. +

+These functions are the base for all other devices mapped into the device space. +

Definition in file device.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* vdev_new (char *  name,
VDevFP_Read  rd,
VDevFP_Write  wr,
VDevFP_Reset  reset,
VDevFP_AddAddr  add_addr 
)
+
+
+ +

+Create a new VDevice. +

+ +

Definition at line 62 of file device.c.

+ +

References avr_new0, class_overload_destroy(), vdev_construct(), and vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void vdev_def_AddAddr (VDevice *  dev,
int  addr,
char *  name,
int  related_addr,
void *  data 
)
+
+
+ +

+Default AddAddr method. +

+This generate a warning that the should let the developer know that the vdev needs to be updated. +

Definition at line 80 of file device.c.

+ +

References avr_warning.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void vdev_construct (VDevice *  dev,
VDevFP_Read  rd,
VDevFP_Write  wr,
VDevFP_Reset  reset,
VDevFP_AddAddr  add_addr 
)
+
+ +

+ +

+
+ + + + + + + + + +
void vdev_destroy (void *  dev  ) 
+
+ +

+ +

+
+ + + + + + + + + + + + + + + + + + +
uint8_t vdev_read (VDevice *  dev,
int  addr 
)
+
+
+ +

+Reads the device's value in the register at addr. +

+ +

Definition at line 161 of file device.c.

+ +

Referenced by mem_io_fetch(), and mem_read().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void vdev_write (VDevice *  dev,
int  addr,
uint8_t  val 
)
+
+
+ +

+Writes an value to the register at addr. +

+ +

Definition at line 168 of file device.c.

+ +

Referenced by mem_write().

+ +
+

+ +

+
+ + + + + + + + + +
void vdev_reset (VDevice *  dev  ) 
+
+
+ +

+Resets a device. +

+ +

Definition at line 175 of file device.c.

+ +

Referenced by mem_reset().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void vdev_set_core (VDevice *  dev,
AvrClass *  core 
)
+
+
+ +

+Set the core field. +

+ +

Definition at line 182 of file device.c.

+ +
+

+ +

+
+ + + + + + + + + +
AvrClass* vdev_get_core (VDevice *  dev  ) 
+
+
+ +

+Get the core field. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void vdev_add_addr (VDevice *  dev,
int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Inform the vdevice that it needs to handle another address. +

+This is primarily used when creating the core in dev_supp_create_core(). +

Definition at line 195 of file device.c.

+ +

References avr_warning.

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/devsupp_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/devsupp_8c-source.html new file mode 100644 index 0000000..9719844 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/devsupp_8c-source.html @@ -0,0 +1,380 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/devsupp_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/devsupp_8c.html new file mode 100644 index 0000000..05b49bc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/devsupp_8c.html @@ -0,0 +1,120 @@ + + + + + Main Page + + + + + + +
+

devsupp.c File Reference

Contains definitions for device types (i.e. at90s8515, at90s2313, etc.). More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + +

Functions

+int dev_supp_has_ext_io_reg (DevSuppDefn *dev)
+int dev_supp_get_flash_sz (DevSuppDefn *dev)
+int dev_supp_get_PC_sz (DevSuppDefn *dev)
+int dev_supp_get_stack_sz (DevSuppDefn *dev)
+int dev_supp_get_vtab_idx (DevSuppDefn *dev)
+int dev_supp_get_sram_sz (DevSuppDefn *dev)
+int dev_supp_get_xram_sz (DevSuppDefn *dev)
DevSuppDefn * dev_supp_lookup_device (char *dev_name)
void dev_supp_list_devices (FILE *fp)
+void dev_supp_attach_io_regs (AvrCore *core, DevSuppDefn *dev)
+


Detailed Description

+Contains definitions for device types (i.e. at90s8515, at90s2313, etc.). +

+This module is used to define the attributes for each device in the AVR family. A generic constructor is used to create a new AvrCore object with the proper ports, built-in peripherals, memory layout, registers, and interrupt vectors, etc. +

Definition in file devsupp.c.

+

Function Documentation

+ +
+
+ + + + + + + + + +
DevSuppDefn* dev_supp_lookup_device (char *  dev_name  ) 
+
+
+ +

+Look up a device name in support list. +

+

Returns:
An opaque pointer to DevSuppDefn or NULL if not found.
+ +

Definition at line 266 of file devsupp.c.

+ +

Referenced by avr_core_new().

+ +
+

+ +

+
+ + + + + + + + + +
void dev_supp_list_devices (FILE *  fp  ) 
+
+
+ +

+Print a list of supported devices to a file pointer. +

+ +

Definition at line 286 of file devsupp.c.

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/display_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/display_8c-source.html new file mode 100644 index 0000000..715bc36 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/display_8c-source.html @@ -0,0 +1,450 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/display_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/display_8c.html new file mode 100644 index 0000000..9a2c4f3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/display_8c.html @@ -0,0 +1,536 @@ + + + + + Main Page + + + + + + +
+

display.c File Reference

Interface for using display coprocesses. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Enumerations

enum  { MAX_BUF = 1024 + }

Functions

int display_open (char *prog, int no_xterm, int flash_sz, int sram_sz, int sram_start, int eeprom_sz)
void display_close (void)
void display_send_msg (char *msg)
void display_clock (int clock)
void display_pc (int val)
void display_reg (int reg, uint8_t val)
void display_io_reg (int reg, uint8_t val)
void display_io_reg_name (int reg, char *name)
void display_flash (int addr, int len, uint16_t *vals)
void display_sram (int addr, int len, uint8_t *vals)
void display_eeprom (int addr, int len, uint8_t *vals)
+


Detailed Description

+Interface for using display coprocesses. +

+Simulavr has the ability to use a coprocess to display register and memory values in near real time. +

Definition in file display.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int display_open (char *  prog,
int  no_xterm,
int  flash_sz,
int  sram_sz,
int  sram_start,
int  eeprom_sz 
)
+
+
+ +

+Open a display as a coprocess. +

+

Parameters:
+ + + + + + + +
prog The program to use as a display coprocess.
no_xterm If non-zero, don't run the disply in an xterm.
flash_sz The size of the flash memory space in bytes.
sram_sz The size of the sram memory space in bytes.
sram_start The addr of the first byte of sram (usually 0x60 or 0x100).
eeprom_sz The size of the eeprom memory space in bytes.
+
+Try to start up a helper program as a child process for displaying registers and memory. If the prog argument is NULL, don't start up a display.

+Returns an open file descriptor of a pipe used to send data to the helper program.

+Returns -1 if something failed. +

Definition at line 85 of file display.c.

+ +

References avr_warning.

+ +
+

+ +

+
+ + + + + + + + + +
void display_close (void   ) 
+
+
+ +

+Close a display and send coprocess a quit message. +

+ +

Definition at line 181 of file display.c.

+ +

References display_send_msg().

+ +
+

+ +

+
+ + + + + + + + + +
void display_send_msg (char *  msg  ) 
+
+
+ +

+Encode the message and send to display. +

+

Parameters:
+ + +
msg The message string to be sent to the display process.
+
+Encoding is the same as that used by the gdb remote protocol: '$...#CC' where '...' is msg, CC is checksum. There is no newline termination for encoded messages.

+FIXME: TRoth: This should be a private function. It is only public so that dtest.c can be kept simple. dtest.c should be changed to avoid direct use of this function. [dtest.c has served it's purpose and will be retired soon.] +

Definition at line 220 of file display.c.

+ +

References avr_error, avr_free(), avr_new0, and avr_warning.

+ +

Referenced by display_clock(), display_close(), display_eeprom(), display_flash(), display_io_reg(), display_io_reg_name(), display_pc(), display_reg(), and display_sram().

+ +
+

+ +

+
+ + + + + + + + + +
void display_clock (int  clock  ) 
+
+
+ +

+Update the time in the display. +

+

Parameters:
+ + +
clock The new time in number of clocks.
+
+ +

Definition at line 255 of file display.c.

+ +

References display_send_msg().

+ +

Referenced by avr_core_reset().

+ +
+

+ +

+
+ + + + + + + + + +
void display_pc (int  val  ) 
+
+
+ +

+Update the Program Counter in the display. +

+

Parameters:
+ + +
val The new value of the program counter.
+
+ +

Definition at line 269 of file display.c.

+ +

References display_send_msg().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void display_reg (int  reg,
uint8_t  val 
)
+
+
+ +

+Update a register in the display. +

+

Parameters:
+ + + +
reg The register number.
val The new value of the register.
+
+ +

Definition at line 284 of file display.c.

+ +

References display_send_msg().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void display_io_reg (int  reg,
uint8_t  val 
)
+
+
+ +

+Update an IO register in the display. +

+

Parameters:
+ + + +
reg The IO register number.
val The new value of the register.
+
+ +

Definition at line 299 of file display.c.

+ +

References display_send_msg().

+ +

Referenced by mem_write().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void display_io_reg_name (int  reg,
char *  name 
)
+
+
+ +

+Specify a name for an IO register. +

+

Parameters:
+ + + +
reg The IO register number.
name The symbolic name of the register.
+
+Names of IO registers may be different from device to device. +

Definition at line 316 of file display.c.

+ +

References display_send_msg().

+ +

Referenced by avr_core_io_display_names().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void display_flash (int  addr,
int  len,
uint16_t *  vals 
)
+
+
+ +

+Update a block of flash addresses in the display. +

+

Parameters:
+ + + + +
addr Address of beginning of the block.
len Length of the block (number of words).
vals Pointer to an array of len words.
+
+The display will update each addr of the block to the coresponding value in the vals array.

+Each address in the flash references a single 16-bit wide word (or opcode or instruction). Therefore, flash addresses are aligned to 16-bit boundaries. It is simplest to consider the flash an array of 16-bit values indexed by the address. +

Definition at line 340 of file display.c.

+ +

References avr_error, and display_send_msg().

+ +

Referenced by flash_write().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void display_sram (int  addr,
int  len,
uint8_t *  vals 
)
+
+
+ +

+Update a block of sram addresses in the display. +

+

Parameters:
+ + + + +
addr Address of beginning of the block.
len Length of the block (number of bytes).
vals Pointer to an array of len bytes.
+
+The display will update each addr of the block to the coresponding value in the vals array. +

Definition at line 372 of file display.c.

+ +

References avr_error, and display_send_msg().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void display_eeprom (int  addr,
int  len,
uint8_t *  vals 
)
+
+
+ +

+Update a block of eeprom addresses in the display. +

+

Parameters:
+ + + + +
addr Address of beginning of the block.
len Length of the block (number of bytes).
vals Pointer to an array of len bytes.
+
+The display will update each addr of the block to the coresponding value in the vals array. +

Definition at line 404 of file display.c.

+ +

References avr_error, and display_send_msg().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/dox.css b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/dox.css new file mode 100644 index 0000000..c87eb8f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/dox.css @@ -0,0 +1,23 @@ +H1 { text-align: center; } +A.qindex {} +A.qindexRef {} +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code { text-decoration: none; font-weight: normal; color: #4444ee } +A.codeRef { font-weight: normal; color: #4444ee } +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +DIV.fragment { width: 100%; border: none; background-color: #eeeeee } +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #f2f2ff; font-weight: bold; } +TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; } +TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } +DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } +FONT.keyword { color: #008000 } +FONT.keywordtype { color: #604020 } +FONT.keywordflow { color: #e08000 } +FONT.comment { color: #800000 } +FONT.preprocessor { color: #806020 } +FONT.stringliteral { color: #002080 } +FONT.charliteral { color: #008080 } diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/eeprom_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/eeprom_8c-source.html new file mode 100644 index 0000000..662c883 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/eeprom_8c-source.html @@ -0,0 +1,428 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ext_devs.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ext_devs.html new file mode 100644 index 0000000..01c100d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ext_devs.html @@ -0,0 +1,28 @@ + + + + + Main Page + + + + + + +
+

External Devices

+FIXME: empty place holder

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/files.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/files.html new file mode 100644 index 0000000..00b99d4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/files.html @@ -0,0 +1,63 @@ + + + + + Main Page + + + + + + +
+

File List

Here is a list of all documented files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
adc.c [code]Module to simulate the AVR's ADC module
avrclass.c [code]Methods to provide user interfaces to the AvrClass structure
avrcore.c [code]Module for the core AvrCore object, which is the AVR CPU to be simulated
avrerror.c [code]Functions for printing messages, warnings and errors
avrmalloc.c [code]Memory Management Functions
callback.c [code]
decoder.c [code]Module for handling opcode decoding
device.c [code]VDevice methods
devsupp.c [code]Contains definitions for device types (i.e. at90s8515, at90s2313, etc.)
display.c [code]Interface for using display coprocesses
eeprom.c [code]
flash.c [code]Flash memory methods
gdbserver.c [code]Provide an interface to gdb's remote serial protocol
intvects.c [code]
main.c [code]
memory.c [code]Memory access functions
op_names.c [code]
ports.c [code]Module for accessing simulated I/O ports
register.c [code]
sig.c [code]Public interface to signal handlers
spi.c [code]Module to simulate the AVR's SPI module
sram.c [code]
stack.c [code]Module for the definition of the stack
storage.c [code]
timers.c [code]Module to simulate the AVR's on-board timer/counters
uart.c [code]Module to simulate the AVR's uart module
usb.c [code]Module to simulate the AVR's USB module
utils.c [code]Utility functions
+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/flash_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/flash_8c-source.html new file mode 100644 index 0000000..00a6746 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/flash_8c-source.html @@ -0,0 +1,287 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/flash_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/flash_8c.html new file mode 100644 index 0000000..6b0778f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/flash_8c.html @@ -0,0 +1,424 @@ + + + + + Main Page + + + + + + +
+

flash.c File Reference

Flash memory methods. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + +

Functions

uint16_t flash_read (Flash *flash, int addr)
void flash_write (Flash *flash, int addr, uint16_t val)
void flash_write_lo8 (Flash *flash, int addr, uint8_t val)
void flash_write_hi8 (Flash *flash, int addr, uint8_t val)
Flash * flash_new (int size)
void flash_construct (Flash *flash, int size)
void flash_destroy (void *flash)
int flash_load_from_file (Flash *flash, char *file, int format)
int flash_get_size (Flash *flash)
void flash_dump_core (Flash *flash, FILE *f_core)
+


Detailed Description

+Flash memory methods. +

+This module provides functions for reading and writing to flash memory. Flash memory is the program (.text) memory in AVR's Harvard architecture. It is completely separate from RAM, which is simulated in the memory.c file. +

Definition in file flash.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint16_t flash_read (Flash *  flash,
int  addr 
)
+
+
+ +

+Reads a 16-bit word from flash. +

+

Returns:
A word.
+ +

Referenced by avr_core_insert_breakpoint(), and flash_dump_core().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void flash_write (Flash *  flash,
int  addr,
uint16_t  val 
)
+
+
+ +

+Reads a 16-bit word from flash. +

+

Parameters:
+ + + + +
flash A pointer to a flash object.
addr The address to which to write.
val The byte to write there.
+
+ +

Definition at line 86 of file flash.c.

+ +

References display_flash().

+ +

Referenced by avr_core_insert_breakpoint(), and avr_core_remove_breakpoint().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void flash_write_lo8 (Flash *  flash,
int  addr,
uint8_t  val 
)
+
+
+ +

+Write the low-order byte of an address. +

+AVRs are little-endian, so lo8 bits in odd addresses. +

Definition at line 98 of file flash.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void flash_write_hi8 (Flash *  flash,
int  addr,
uint8_t  val 
)
+
+
+ +

+Write the high-order byte of an address. +

+AVRs are little-endian, so hi8 bits in even addresses. +

Definition at line 109 of file flash.c.

+ +
+

+ +

+
+ + + + + + + + + +
Flash* flash_new (int  size  ) 
+
+
+ +

+Allocate a new Flash object. +

+ +

Definition at line 117 of file flash.c.

+ +

References avr_new, class_overload_destroy(), flash_construct(), and flash_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void flash_construct (Flash *  flash,
int  size 
)
+
+
+ +

+Constructor for the flash object. +

+ +

Definition at line 131 of file flash.c.

+ +

References avr_error.

+ +

Referenced by flash_new().

+ +
+

+ +

+
+ + + + + + + + + +
void flash_destroy (void *  flash  ) 
+
+
+ +

+Destructor for the flash class. +

+Not to be called directly, except by a derived class. Called via class_unref. +

Definition at line 153 of file flash.c.

+ +

Referenced by flash_new().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int flash_load_from_file (Flash *  flash,
char *  file,
int  format 
)
+
+
+ +

+Load program data into flash from a file. +

+ +

Definition at line 164 of file flash.c.

+ +

References avr_warning.

+ +

Referenced by avr_core_load_program().

+ +
+

+ +

+
+ + + + + + + + + +
int flash_get_size (Flash *  flash  ) 
+
+
+ +

+Accessor method to get the size of a flash. +

+ +

Definition at line 210 of file flash.c.

+ +

Referenced by avr_core_get_sizes().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void flash_dump_core (Flash *  flash,
FILE *  f_core 
)
+
+
+ +

+Dump the contents of the flash to a file descriptor in text format. +

+

Parameters:
+ + + +
flash A pointer to a flash object.
f_core An open file descriptor.
+
+ +

Definition at line 223 of file flash.c.

+ +

References flash_read().

+ +

Referenced by avr_core_dump_core().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/gdbserver_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/gdbserver_8c-source.html new file mode 100644 index 0000000..e23c9c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/gdbserver_8c-source.html @@ -0,0 +1,1445 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/gdbserver_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/gdbserver_8c.html new file mode 100644 index 0000000..55494fa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/gdbserver_8c.html @@ -0,0 +1,98 @@ + + + + + Main Page + + + + + + +
+

gdbserver.c File Reference

Provide an interface to gdb's remote serial protocol. More... +

+ +

+Go to the source code of this file. + + + + +

Functions

void gdb_interact (GdbComm_T *comm, int port, int debug_on)
+


Detailed Description

+Provide an interface to gdb's remote serial protocol. +

+This module allows a program to be used by gdb as a remote target. The remote target and gdb communicate via gdb's remote serial protocol. The protocol is documented in the gdb manual and will not be repeated here.

+Hitting Ctrl-c in gdb can be used to interrupt the remote target while it is processing instructions and return control back to gdb.

+Issuing a 'signal SIGxxx' command from gdb will send the signal to the remote target via a "continue with signal" packet. The target will process and interpret the signal, but not pass it on to the AVR program running in the target since it really makes no sense to do so. In some circumstances, it may make sense to use the gdb signal mechanism as a way to initiate some sort of external stimulus to be passed on to the virtual hardware system.

+Signals from gdb which are processed have the following meanings:

+

    +
  • SIGHUP Initiate a reset of the target. (Simulates a hardware reset)
  • +
+ +

Definition in file gdbserver.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void gdb_interact (GdbComm_T *  comm,
int  port,
int  debug_on 
)
+
+
+ +

+Start interacting with gdb. +

+

Parameters:
+ + + + +
comm A previously initialized simulator comm
port Port which server will listen for connections on.
debug_on Turn on gdb debug diagnostic messages.
+
+Start a tcp server socket on localhost listening for connections on the given port. Once a connection is established, enter an infinite loop and process command requests from gdb using the remote serial protocol. Only a single connection is allowed at a time. +

Definition at line 1320 of file gdbserver.c.

+ +

References avr_error, signal_has_occurred(), signal_watch_start(), and signal_watch_stop().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals.html new file mode 100644 index 0000000..e3d448a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals.html @@ -0,0 +1,474 @@ + + + + + Main Page + + + + + + +
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: +

+

- a -

+

- c -

+

- d -

+

- f -

+

- g -

+

- h -

+

- m -

+

- o -

+

- p -

+

- s -

+

- t -

+

- u -

    +
  • uart_construct() +: uart.c +
  • uart_create() +: uart.c +
  • uart_destroy() +: uart.c +
  • uart_int_create() +: uart.c +
  • uart_intr_construct() +: uart.c +
  • uart_intr_destroy() +: uart.c +
  • usb_construct() +: usb.c +
  • usb_create() +: usb.c +
  • usb_destroy() +: usb.c +
  • usb_intr_construct() +: usb.c +
  • usb_intr_destroy() +: usb.c +
  • usbi_create() +: usb.c +
+

- v -

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_defs.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_defs.html new file mode 100644 index 0000000..8c4f212 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_defs.html @@ -0,0 +1,59 @@ + + + + + Main Page + + + + + + +
+  +

+

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_enum.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_enum.html new file mode 100644 index 0000000..c92eed5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_enum.html @@ -0,0 +1,49 @@ + + + + + Main Page + + + + + + +
+  +

+

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_eval.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_eval.html new file mode 100644 index 0000000..a7aea60 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_eval.html @@ -0,0 +1,81 @@ + + + + + Main Page + + + + + + +
+  +

+

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_func.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_func.html new file mode 100644 index 0000000..5c764cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_func.html @@ -0,0 +1,424 @@ + + + + + Main Page + + + + + + +
+  +

+

- a -

+

- c -

+

- d -

+

- f -

+

- g -

+

- h -

+

- m -

+

- o -

+

- p -

+

- s -

+

- t -

+

- u -

    +
  • uart_construct() +: uart.c +
  • uart_create() +: uart.c +
  • uart_destroy() +: uart.c +
  • uart_int_create() +: uart.c +
  • uart_intr_construct() +: uart.c +
  • uart_intr_destroy() +: uart.c +
  • usb_construct() +: usb.c +
  • usb_create() +: usb.c +
  • usb_destroy() +: usb.c +
  • usb_intr_construct() +: usb.c +
  • usb_intr_destroy() +: usb.c +
  • usbi_create() +: usb.c +
+

- v -

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_vars.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_vars.html new file mode 100644 index 0000000..a118a29 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/globals_vars.html @@ -0,0 +1,49 @@ + + + + + Main Page + + + + + + +
+  +

+

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/index.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/index.html new file mode 100644 index 0000000..1fe394d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/index.html @@ -0,0 +1,11 @@ + + +Simulavr + + + + + <a href="main.html">Frames are disabled. Click here to go to the main page.</a> + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/insn_decoder.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/insn_decoder.html new file mode 100644 index 0000000..9eb283d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/insn_decoder.html @@ -0,0 +1,32 @@ + + + + + Main Page + + + + + + +
+

Instruction Decoder

+Instruction decoding and processing is implemented in the decode.c file.

+The heart of the instruction decoder is the decode_opcode() function.

+The decode_opcode() function examines the given opcode to determine which instruction applies and returns a pointer to a function to handle performing the instruction's operation. If the given opcode does not map to an instruction handler, NULL is returned indicating an invalid instruction.

+Nearly every instruction in Atmel's Instruction Set Data Sheet will have a handler function defined. Each handler will perform all the operations described in the data sheet for a given instruction. A few instructions have synonyms. For example, CBR is a synonym for ANDI.

+This should all be fairly straight forward.

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/interrupts.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/interrupts.html new file mode 100644 index 0000000..e2cdad2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/interrupts.html @@ -0,0 +1,28 @@ + + + + + Main Page + + + + + + +
+

Interrupts

+FIXME: empty place holder

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/intvects_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/intvects_8c-source.html new file mode 100644 index 0000000..5a9816d --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/intvects_8c-source.html @@ -0,0 +1,554 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/main.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/main.html new file mode 100644 index 0000000..cee0e74 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/main.html @@ -0,0 +1,36 @@ + + + + + Main Page + + + + + + +
+

Simulavr Internals

+

+

0.1.2.5

+Introduction

+

+This chapter documents the internals of simulavr for those wishing to work with the source code to fix bugs, add features, or to just see how it all works. If you only wish to know how to use simulavr, you don't need to read this.

+Internals Topics:

+

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/main_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/main_8c-source.html new file mode 100644 index 0000000..5f4dedc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/main_8c-source.html @@ -0,0 +1,504 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_8c-source.html new file mode 100644 index 0000000..6435235 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_8c-source.html @@ -0,0 +1,514 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_8c.html new file mode 100644 index 0000000..ca29576 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_8c.html @@ -0,0 +1,569 @@ + + + + + Main Page + + + + + + +
+

memory.c File Reference

Memory access functions. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

Memory * mem_new (int gpwr_end, int io_reg_end, int sram_end, int xram_end)
void mem_construct (Memory *mem, int gpwr_end, int io_reg_end, int sram_end, int xram_end)
void mem_destroy (void *mem)
void mem_attach (Memory *mem, int addr, char *name, VDevice *vdev, int flags, uint8_t reset_value, uint8_t rd_mask, uint8_t wr_mask)
VDevice * mem_get_vdevice_by_addr (Memory *mem, int addr)
VDevice * mem_get_vdevice_by_name (Memory *mem, char *name)
+void mem_set_addr_name (Memory *mem, int addr, char *name)
uint8_t mem_read (Memory *mem, int addr)
void mem_write (Memory *mem, int addr, uint8_t val)
void mem_reset (Memory *mem)
void mem_io_fetch (Memory *mem, int addr, uint8_t *val, char *buf, int bufsiz)
void mem_dump_core (Memory *mem, FILE *f_core)
+


Detailed Description

+Memory access functions. +

+This module provides functions for reading and writing to simulated memory. The Memory class is a subclass of AvrClass. +

Definition in file memory.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Memory* mem_new (int  gpwr_end,
int  io_reg_end,
int  sram_end,
int  xram_end 
)
+
+
+ +

+Allocates memory for a new memory object. +

+ +

Definition at line 66 of file memory.c.

+ +

References avr_new0, class_overload_destroy(), mem_construct(), and mem_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mem_construct (Memory *  mem,
int  gpwr_end,
int  io_reg_end,
int  sram_end,
int  xram_end 
)
+
+
+ +

+Constructor for the memory object. +

+ +

Definition at line 80 of file memory.c.

+ +

References avr_error, avr_new0, and class_construct().

+ +

Referenced by mem_new().

+ +
+

+ +

+
+ + + + + + + + + +
void mem_destroy (void *  mem  ) 
+
+
+ +

+Descructor for the memory object. +

+ +

Definition at line 99 of file memory.c.

+ +

References avr_free(), class_destroy(), and class_unref().

+ +

Referenced by mem_new().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mem_attach (Memory *  mem,
int  addr,
char *  name,
VDevice *  vdev,
int  flags,
uint8_t  reset_value,
uint8_t  rd_mask,
uint8_t  wr_mask 
)
+
+
+ +

+Attach a device to the device list. +

+Devices that are accessed more often should be attached last so that they will be at the front of the list.

+A default virtual device can be overridden by attaching a new device ahead of it in the list. +

Definition at line 130 of file memory.c.

+ +

References avr_error, and class_ref().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VDevice* mem_get_vdevice_by_addr (Memory *  mem,
int  addr 
)
+
+
+ +

+Find the VDevice associated with the given address. +

+ +

Definition at line 159 of file memory.c.

+ +

Referenced by avr_core_add_ext_rd_wr(), and memstack_construct().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VDevice* mem_get_vdevice_by_name (Memory *  mem,
char *  name 
)
+
+
+ +

+Find the VDevice associated with the given name. +

+

Deprecated:
+ +

Definition at line 169 of file memory.c.

+ +

References avr_error, and dlist_lookup().

+ +

Referenced by avr_core_load_eeprom().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
uint8_t mem_read (Memory *  mem,
int  addr 
)
+
+
+ +

+Reads byte from memory and sanity-checks for valid address. +

+

Parameters:
+ + + +
mem A pointer to the memory object
addr The address to be read
+
+
Returns:
The byte found at that address addr
+ +

Definition at line 212 of file memory.c.

+ +

References avr_warning, and vdev_read().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void mem_write (Memory *  mem,
int  addr,
uint8_t  val 
)
+
+
+ +

+Writes byte to memory and updates display for io registers. +

+

Parameters:
+ + + + +
mem A pointer to a memory object
addr The address to be written to
val The value to be written there
+
+ +

Definition at line 247 of file memory.c.

+ +

References avr_warning, display_io_reg(), and vdev_write().

+ +
+

+ +

+
+ + + + + + + + + +
void mem_reset (Memory *  mem  ) 
+
+
+ +

+Resets every device in the memory object. +

+

Parameters:
+ + +
mem A pointer to the memory object.
+
+ +

Definition at line 284 of file memory.c.

+ +

References vdev_reset().

+ +

Referenced by avr_core_reset().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void mem_io_fetch (Memory *  mem,
int  addr,
uint8_t *  val,
char *  buf,
int  bufsiz 
)
+
+
+ +

+Fetch the name and value of the io register (addr). +

+

Parameters:
+ + + + + + +
mem A pointer to the memory object.
addr The address to fetch from.
val A pointer where the value of the register is to be copied.
buf A pointer to where the name of the register should be copied.
bufsiz The maximum size of the the buf string.
+
+ +

Definition at line 322 of file memory.c.

+ +

References vdev_read().

+ +

Referenced by avr_core_io_display_names().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void mem_dump_core (Memory *  mem,
FILE *  f_core 
)
+
+
+ +

+Dump all the various memory locations to a file descriptor in text format. +

+

Parameters:
+ + + +
mem A memory object.
f_core An open file descriptor.
+
+ +

Definition at line 483 of file memory.c.

+ +

Referenced by avr_core_dump_core().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_management.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_management.html new file mode 100644 index 0000000..05dbe0e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/memory_management.html @@ -0,0 +1,42 @@ + + + + + Main Page + + + + + + +
+

Memory Management

+Every program ever written has had to deal with memory management. Simulavr is no exception. For portability and to potentially aid in memory debugging, simulavr supplies it's own functions and macros for handling the allocation and releasing of memory resources.

+For memory which could be used by many differing parts of the simulator, an object referencing system has been implemented (see Objects).

+Memory Functions

+

+The following functions provide wrappers for all library functions that return memory which simulavr must manage.

+

+

+All functions which return allocated memory will only return if the allocation was successful. If the allocation failed, an error message is issued and the program is aborted. Thus, the developer does not need write any code to check the returned value.

+Memory Macros

+

+The following C-preprocessor macro definitions are provided for convenience and should be used instead of the underlying functions. These macros relieve the programmer from having to perform manual type-casting thus making the code easier to read.

+

+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/object_system.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/object_system.html new file mode 100644 index 0000000..0d1b0f0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/object_system.html @@ -0,0 +1,199 @@ + + + + + Main Page + + + + + + +
+

Objects

+Simulavr uses a simple object oriented system for handling the data structure creation and destruction. Since simulavr is written in C, a class system must be manually implemented and the basis for this class system is the AvrClass structure. All higher level structures are ultimately based on the AvrClass structure.

+How the AvrClass structure is defined is not as import as how it is used as a base or parent class structure. A concrete example of simulavr's object system will be discussed (see Derived Class Example), but before jumping into the example, the AvrClass method functions will be introduced.

+AvrClass Methods

+The following functions provide the user interfaces to the AvrClass structure.

+

+

+All classes must provide their own creation function, <klass>_new(). The purpose of the creation function is to:

+

    +
  • Allocate memory for the class's data structure.
  • Call class_overload_destroy() to install the class's own destroy method.
  • Call the class's constructor method to fill in the data structure information.
+

+Derived Class Example

+

+Simulavr's inheritance mechanism is a little more complicated than that of C++, but is still relatively easy to use once it is understood. An example should make it clear how the system works.

+First we need to create some objects. Assume that we need to add two new objects to simulavr, foo and bar. To keep things simple, they are both integers. Another requirement is that any time we need to access a foo, we'll also need to access a bar, but sometimes we only need a bar without a foo. Thus, we will have a class hierarchy FooClass->BarClass->AvrClass, or FooClass derives from BarClass which derives from AvrClass. To achieve this, we create the following two data structures:

+

// Define BarClass with AvrClass as parent 
+
+typedef struct _BarClass BarClass;
+struct _BarClass {
+    AvrClass parent;
+    int      bar;
+};
+
+// Define FooClass with BarClass as parent 
+
+typedef struct _FooClass FooClass;
+struct _FooClass {
+    BarClass parent;
+    int      foo;
+};
+

+Notice that in both struct definitions, the parent element is not a pointer. When you allocate memory for a BarClass, you automatically allocate memory for an AvrClass at the same time. It's important that the parent is always the first element of any derived class structure.

+The trick here is that once we have a class object, we can get at any object in it's class hierarchy with a simple type-cast.

+

void func( void )
+{
+    int num;
+    FooClass *Foo = foo_new( 12, 21 );
+
+    // get foo from FooClass 
+    num = Foo->foo;
+
+    // get bar from BarClass 
+    num = ((BarClass *)Foo)->bar;
+
+    class_unref( (AvrClass *)Foo );
+}
+

+Although the example above works, it assumes that the programmer knows what the FooClass and BarClass structures look like. The programmer has broken the encapsulation of both FooClass and BarClass objects. To solve this problem, we need to write method functions for both classes.

+Here's the methods for BarClass:

+

// BarClass allocator 
+BarClass *bar_new( int bar )
+{
+    BarClass *bc;
+
+    bc = avr_new( BarClass, 1 );
+    bar_construct( bc, bar );
+    class_overload_destroy( (AvrClass *)bc, bar_destroy );
+
+    return bc;
+}
+
+// BarClass constructor 
+void bar_construct( BarClass *bc, int bar )
+{
+    class_construct( (AvrClass *)bc );
+    bc->bar = bar;
+}
+
+// BarClass destructor 
+void bar_destroy( void *bc )
+{
+    if (bc == NULL)
+        return;
+
+    class_destroy( bc );
+}
+
+// BarClass public data access methods 
+int  bar_get_bar( BarClass *bc )          { return bc->bar; }
+void bar_set_bar( BarClass *bc, int val ) { bc->bar = val;  }
+

+And here's the methods for FooClass:

+

// FooClass allocator 
+FooClass *foo_new( int foo, int bar )
+{
+    FooClass *fc;
+
+    fc = avr_new( FooClass, 1 );
+    foo_construct( fc, foo, bar );
+    class_overload_destroy( (AvrClass *)fc, foo_destroy );
+
+    return fc;
+}
+
+// FooClass constructor 
+void foo_construct( FooClass *fc, int foo, bar )
+{
+    bar_construct( (BarClass *)fc, bar );
+    fc->foo = foo;
+}
+
+// FooClass destructor 
+void foo_destroy( void *fc )
+{
+    if (fc == NULL)
+        return;
+
+    class_destroy( fc );
+}
+
+// FooClass public data access methods 
+
+int  foo_get_foo( FooClass *fc )          { return fc->foo; }
+void foo_set_foo( FooClass *fc, int val ) { fc->foo = val;  }
+
+int  foo_get_bar( FooClass *fc )
+{
+    return bar_get_bar( (BarClass *)fc );
+}
+
+void foo_set_bar( FooClass *fc, int val )
+{
+    bar_set_bar( (BarClass *)fc, val );
+}
+

+Take a good look at the *_new(), *_construct() and *_destroy() functions in the above examples and make sure you understand what's going on. Of particluar importance is how the constructor and destructor functions are chained up along the various classes. This pattern is used extensively throughout the simulavr source code and once understood, makes some complicated concepts incredibly easy to implement.

+Now that we have the method functions, we can rewrite our original example function without the broken encapsulation.

+

void func( void )
+{
+    int num;
+    FooClass *Foo = foo_new( 12, 21 );
+
+    num = foo_get_foo( Foo );
+    num = foo_get_bar( Foo );
+
+    class_unref( (AvrClass *)Foo );
+}
+

+Now that's better, but you might think that we are breaking encapsulation when we cast Foo to AvrClass. Well, in a way we are, but since all class objects must be derived from AvrClass either directly or indirectly, this is acceptable.

+Object Referencing

+

+You may have noticed by this point that we haven't called avr_free() to free the memory we allocated for our objects. We called class_unref() instead. This mechanism allows us to store many references to a single object without having to keep track of all of them.

+The only thing we must do when we store a reference to an object in a new variable, is call class_ref() on the object. Then, when that stored reference is no longer needed, we simply call class_unref() on the object. Once the reference count reaches zero, the object's destroy method is automatically called for us. The only hard part for us is knowing when to ref and unref the object.

+Here's an example from the simulavr code for callbacks:

+

void callback_construct( CallBack *cb,
+                         CallBack_FP func,
+                         AvrClass *data )
+{
+    if (cb == NULL)
+        avr_error( "passed null ptr");
+
+    class_construct( (AvrClass *)cb );
+
+    cb->func = func;
+
+    cb->data = data;
+    class_ref( data );
+}
+
+void callback_destroy( void *cb )
+{
+    CallBack *_cb = (CallBack *)cb;
+
+    if (cb == NULL)
+        return;
+
+    class_unref( _cb->data );
+
+    class_destroy( cb );
+}
+

+Notice that data is a pointer to AvrClass and thus can be any class defined by simulavr. CallBack is another class which happens to store a reference to data and must therefore call class_ref() on the data object. When the callback is destroyed (because the reference count reached zero), the callback destroy method calls class_unref() on the data object. It is assumed that the original reference to data still exists when the callback is created, but may or may not exist when the callback is destroyed.

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/op__names_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/op__names_8c-source.html new file mode 100644 index 0000000..de1d3e8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/op__names_8c-source.html @@ -0,0 +1,190 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/pages.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/pages.html new file mode 100644 index 0000000..43913b0 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/pages.html @@ -0,0 +1,47 @@ + + + + + Main Page + + + + + + +
+

Related Pages

Here is a list of all related documentation pages: +
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ports_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ports_8c-source.html new file mode 100644 index 0000000..64ea7a2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ports_8c-source.html @@ -0,0 +1,364 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ports_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ports_8c.html new file mode 100644 index 0000000..6121446 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/ports_8c.html @@ -0,0 +1,187 @@ + + + + + Main Page + + + + + + +
+

ports.c File Reference

Module for accessing simulated I/O ports. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + +

Functions

VDevice * port_create (int addr, char *name, int rel_addr, void *data)
void port_ext_disable (Port *p)
void port_ext_enable (Port *p)
void port_add_ext_rd_wr (Port *p, PortFP_ExtRd ext_rd, PortFP_ExtWr ext_wr)
+


Detailed Description

+Module for accessing simulated I/O ports. +

+Defines an abstract Port class as well as subclasses for each individual port.

+

Todo:
Remove the pins argument and the mask field. That's handled at a higher level so is obsolete here now.
+ +

Definition in file ports.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* port_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Create a new Port instance. +

+This should only be used in DevSuppDefn initializers. +

Definition at line 100 of file ports.c.

+ +
+

+ +

+
+ + + + + + + + + +
void port_ext_disable (Port *  p  ) 
+
+
+ +

+Disable external port functionality. +

+This is only used when dumping memory to core file. See mem_io_fetch(). +

Definition at line 200 of file ports.c.

+ +
+

+ +

+
+ + + + + + + + + +
void port_ext_enable (Port *  p  ) 
+
+
+ +

+Enable external port functionality. +

+This is only used when dumping memory to core file. See mem_io_fetch(). +

Definition at line 210 of file ports.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void port_add_ext_rd_wr (Port *  p,
PortFP_ExtRd  ext_rd,
PortFP_ExtWr  ext_wr 
)
+
+
+ +

+Attaches read and write functions to a particular port. +

+I think I may have this backwards. Having the virtual hardware supply functions for the core to call on every io read/write, might cause missed events (like edge triggered). I'm really not too sure how to handle this.

+In the future, it might be better to have the core supply a function for the virtual hardware to call when data is written to the device. The device supplied function could then check if an interrupt should be generated or just simply write to the port data register.

+For now, leave it as is since it's easier to test if you can block when the device is reading from the virtual hardware. +

Definition at line 231 of file ports.c.

+ +

Referenced by avr_core_add_ext_rd_wr().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/register_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/register_8c-source.html new file mode 100644 index 0000000..aad7f60 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/register_8c-source.html @@ -0,0 +1,678 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sig_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sig_8c-source.html new file mode 100644 index 0000000..0c00d5a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sig_8c-source.html @@ -0,0 +1,170 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sig_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sig_8c.html new file mode 100644 index 0000000..b3f220e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sig_8c.html @@ -0,0 +1,162 @@ + + + + + Main Page + + + + + + +
+

sig.c File Reference

Public interface to signal handlers. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + +

Functions

void signal_watch_start (int signo)
void signal_watch_stop (int signo)
int signal_has_occurred (int signo)
void signal_reset (int signo)
+


Detailed Description

+Public interface to signal handlers. +

+This module provides a way for the simulator to process signals generated by the native host system. Note that these signals in this context have nothing to do with signals or interrupts as far as a program running in the simulator is concerned. +

Definition in file sig.c.

+

Function Documentation

+ +
+
+ + + + + + + + + +
void signal_watch_start (int  signo  ) 
+
+
+ +

+Start watching for the occurrance of the given signal. +

+This function will install a signal handler which will set a flag when the signal occurs. Once the watch has been started, periodically call signal_has_occurred() to check if the signal was raised. +

Definition at line 67 of file sig.c.

+ +

References avr_warning.

+ +

Referenced by avr_core_run(), and gdb_interact().

+ +
+

+ +

+
+ + + + + + + + + +
void signal_watch_stop (int  signo  ) 
+
+
+ +

+Stop watching signal. +

+Restores the default signal handler for the given signal and resets the signal flag. +

Definition at line 97 of file sig.c.

+ +

References avr_warning, and signal_reset().

+ +

Referenced by avr_core_run(), and gdb_interact().

+ +
+

+ +

+
+ + + + + + + + + +
int signal_has_occurred (int  signo  ) 
+
+
+ +

+Check to see if a signal has occurred. +

+

Returns:
Non-zero if signal has occurred. The flag will always be reset automatically.
+ +

Definition at line 119 of file sig.c.

+ +

References avr_warning.

+ +

Referenced by avr_core_run(), gdb_interact(), and signal_reset().

+ +
+

+ +

+
+ + + + + + + + + +
void signal_reset (int  signo  ) 
+
+
+ +

+Clear the flag which indicates that a signal has ocurred. +

+Use signal_reset to manually reset (i.e. clear) the flag. +

Definition at line 142 of file sig.c.

+ +

References signal_has_occurred().

+ +

Referenced by signal_watch_stop().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/spi_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/spi_8c-source.html new file mode 100644 index 0000000..90472c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/spi_8c-source.html @@ -0,0 +1,519 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/spi_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/spi_8c.html new file mode 100644 index 0000000..2b3941c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/spi_8c.html @@ -0,0 +1,295 @@ + + + + + Main Page + + + + + + +
+

spi.c File Reference

Module to simulate the AVR's SPI module. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + +

Functions

VDevice * spii_create (int addr, char *name, int rel_addr, void *data)
+SPIIntr_T * spi_intr_new (int addr, char *name)
void spi_intr_construct (SPIIntr_T *spi, int addr, char *name)
void spi_intr_destroy (void *spi)
VDevice * spi_create (int addr, char *name, int rel_addr, void *data)
+SPI_T * spi_new (int addr, char *name, int rel_addr)
void spi_construct (SPI_T *spi, int addr, char *name, int rel_addr)
void spi_destroy (void *spi)
+uint8_t spi_port_rd (int addr)
+void spi_port_wr (uint8_t val)
+


Detailed Description

+Module to simulate the AVR's SPI module. +

+ +

Definition in file spi.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* spii_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new SPI interrupt. +

+ +

Definition at line 78 of file spi.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void spi_intr_construct (SPIIntr_T *  spi,
int  addr,
char *  name 
)
+
+
+ +

+Constructor for spi interrupt object. +

+ +

Definition at line 98 of file spi.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void spi_intr_destroy (void *  spi  ) 
+
+
+ +

+Destructor for spi interrupt object. +

+ +

Definition at line 134 of file spi.c.

+ +

References vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* spi_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new SPI structure. +

+ +

Definition at line 247 of file spi.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void spi_construct (SPI_T *  spi,
int  addr,
char *  name,
int  rel_addr 
)
+
+
+ +

+Constructor for SPI object. +

+ +

Definition at line 267 of file spi.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void spi_destroy (void *  spi  ) 
+
+
+ +

+Destructor for SPI object. +

+ +

Definition at line 300 of file spi.c.

+ +

References vdev_destroy().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sram_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sram_8c-source.html new file mode 100644 index 0000000..28a7687 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/sram_8c-source.html @@ -0,0 +1,153 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/stack_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/stack_8c-source.html new file mode 100644 index 0000000..4f151f6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/stack_8c-source.html @@ -0,0 +1,505 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/stack_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/stack_8c.html new file mode 100644 index 0000000..1820079 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/stack_8c.html @@ -0,0 +1,500 @@ + + + + + Main Page + + + + + + +
+

stack.c File Reference

Module for the definition of the stack. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

Stack * stack_new (StackFP_Pop pop, StackFP_Push push)
void stack_construct (Stack *stack, StackFP_Pop pop, StackFP_Push push)
void stack_destroy (void *stack)
uint32_t stack_pop (Stack *stack, int bytes)
void stack_push (Stack *stack, int bytes, uint32_t val)
HWStack * hwstack_new (int depth)
void hwstack_construct (HWStack *stack, int depth)
void hwstack_destroy (void *stack)
VDevice * sp_create (int addr, char *name, int rel_addr, void *data)
MemStack * memstack_new (Memory *mem, int spl_addr)
void memstack_construct (MemStack *stack, Memory *mem, int spl_addr)
void memstack_destroy (void *stack)
+


Detailed Description

+Module for the definition of the stack. +

+Defines the classes stack, hw_stack, and mem_stack.

+FIXME: Ted, I would really really really love to put in a description of what is the difference between these three classes and how they're used, but I don't understand it myself. +

Definition in file stack.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
Stack* stack_new (StackFP_Pop  pop,
StackFP_Push  push 
)
+
+
+ +

+Allocates memory for a new Stack object. +

+This is a virtual method for higher level stack implementations and as such should not be used directly. +

Definition at line 82 of file stack.c.

+ +

References avr_new, class_overload_destroy(), stack_construct(), and stack_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void stack_construct (Stack *  stack,
StackFP_Pop  pop,
StackFP_Push  push 
)
+
+
+ +

+Constructor for the Stack class. +

+This is a virtual method for higher level stack implementations and as such should not be used directly. +

Definition at line 99 of file stack.c.

+ +

References avr_error, and class_construct().

+ +

Referenced by hwstack_construct(), memstack_construct(), and stack_new().

+ +
+

+ +

+
+ + + + + + + + + +
void stack_destroy (void *  stack  ) 
+
+
+ +

+Destructor for the Stack class. +

+This is a virtual method for higher level stack implementations and as such should not be used directly. +

Definition at line 116 of file stack.c.

+ +

References class_destroy().

+ +

Referenced by hwstack_destroy(), memstack_destroy(), and stack_new().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
uint32_t stack_pop (Stack *  stack,
int  bytes 
)
+
+
+ +

+Pops a byte or a word off the stack and returns it. +

+

Parameters:
+ + + +
stack A pointer to the Stack object from which to pop
bytes Number of bytes to pop off the stack (1 to 4 bytes).
+
+
Returns:
The 1 to 4 bytes value popped from the stack.
+This method provides access to the derived class's pop() method. +

Definition at line 133 of file stack.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void stack_push (Stack *  stack,
int  bytes,
uint32_t  val 
)
+
+
+ +

+Pushes a byte or a word of data onto the stack. +

+

Parameters:
+ + + + +
stack A pointer to the Stack object from which to pop.
bytes Size of the value being pushed onto the stack (1 to 4 bytes).
val The value to be pushed.
+
+This method provides access to the derived class's push() method. +

Definition at line 146 of file stack.c.

+ +
+

+ +

+
+ + + + + + + + + +
HWStack* hwstack_new (int  depth  ) 
+
+
+ +

+Allocate a new HWStack object. +

+This is the stack implementation used by devices which lack SRAM and only have a fixed size hardware stack (e.i., the at90s1200) +

Definition at line 163 of file stack.c.

+ +

References avr_new, class_overload_destroy(), hwstack_construct(), and hwstack_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void hwstack_construct (HWStack *  stack,
int  depth 
)
+
+
+ +

+Constructor for HWStack object. +

+ +

Definition at line 177 of file stack.c.

+ +

References avr_error, avr_new0, and stack_construct().

+ +

Referenced by hwstack_new().

+ +
+

+ +

+
+ + + + + + + + + +
void hwstack_destroy (void *  stack  ) 
+
+
+ +

+Destructor for HWStack object. +

+ +

Definition at line 191 of file stack.c.

+ +

References avr_free(), and stack_destroy().

+ +

Referenced by hwstack_new().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* sp_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Create the Stack Pointer VDevice. +

+This should only be used in the DevSuppDefn io reg init structure. +

Definition at line 272 of file stack.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
MemStack* memstack_new (Memory *  mem,
int  spl_addr 
)
+
+
+ +

+Allocate a new MemStack object. +

+ +

Definition at line 388 of file stack.c.

+ +

References avr_new, class_overload_destroy(), memstack_construct(), and memstack_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void memstack_construct (MemStack *  stack,
Memory *  mem,
int  spl_addr 
)
+
+
+ +

+Constructor for MemStack object. +

+ +

Definition at line 402 of file stack.c.

+ +

References avr_error, class_ref(), mem_get_vdevice_by_addr(), and stack_construct().

+ +

Referenced by memstack_new().

+ +
+

+ +

+
+ + + + + + + + + +
void memstack_destroy (void *  stack  ) 
+
+
+ +

+Destructor for MemStack object. +

+ +

Definition at line 423 of file stack.c.

+ +

References class_unref(), and stack_destroy().

+ +

Referenced by memstack_new().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/storage_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/storage_8c-source.html new file mode 100644 index 0000000..5aeabbe --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/storage_8c-source.html @@ -0,0 +1,152 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/tabs.css b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/tabs.css new file mode 100644 index 0000000..95f00a9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI.current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI.current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.navpath +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/timers_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/timers_8c-source.html new file mode 100644 index 0000000..9cfa46b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/timers_8c-source.html @@ -0,0 +1,1061 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/timers_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/timers_8c.html new file mode 100644 index 0000000..8c4a9a4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/timers_8c.html @@ -0,0 +1,514 @@ + + + + + Main Page + + + + + + +
+

timers.c File Reference

Module to simulate the AVR's on-board timer/counters. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

VDevice * timer_int_create (int addr, char *name, int rel_addr, void *data)
+TimerIntr_T * timer_intr_new (int addr, char *name, uint8_t func_mask)
void timer_intr_construct (TimerIntr_T *ti, int addr, char *name, uint8_t func_mask)
void timer_intr_destroy (void *ti)
VDevice * timer0_create (int addr, char *name, int rel_addr, void *data)
+Timer0_T * timer0_new (int addr, char *name, int rel_addr)
void timer0_construct (Timer0_T *timer, int addr, char *name, int rel_addr)
void timer0_destroy (void *timer)
16 Bit Timer Functions


VDevice * timer16_create (int addr, char *name, int rel_addr, void *data)
+Timer16_T * timer16_new (int addr, char *name, int rel_addr, Timer16Def timerdef)
void timer16_construct (Timer16_T *timer, int addr, char *name, int rel_addr, Timer16Def timerdef)
16 Bit Output Compare Register Functions


VDevice * ocreg16_create (int addr, char *name, int rel_addr, void *data)
+OCReg16_T * ocreg16_new (int addr, char *name, OCReg16Def ocrdef)
void ocreg16_construct (OCReg16_T *ocreg, int addr, char *name, OCReg16Def ocrdef)
+


Detailed Description

+Module to simulate the AVR's on-board timer/counters. +

+This currently only implements the timer/counter 0. +

Definition in file timers.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* timer_int_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new timer interrupt. +

+ +

Definition at line 138 of file timers.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void timer_intr_construct (TimerIntr_T *  ti,
int  addr,
char *  name,
uint8_t  func_mask 
)
+
+
+ +

+Constructor for timer interrupt object. +

+ +

Definition at line 163 of file timers.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void timer_intr_destroy (void *  ti  ) 
+
+
+ +

+Destructor for timer interrupt object. +

+ +

Definition at line 205 of file timers.c.

+ +

References vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* timer0_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new timer/counter 0. +

+ +

Definition at line 350 of file timers.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void timer0_construct (Timer0_T *  timer,
int  addr,
char *  name,
int  rel_addr 
)
+
+
+ +

+Constructor for timer/counter 0 object. +

+ +

Definition at line 370 of file timers.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void timer0_destroy (void *  timer  ) 
+
+
+ +

+Destructor for timer/counter 0 object. +

+ +

Definition at line 387 of file timers.c.

+ +

References vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* timer16_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new 16 bit timer/counter. +

+ +

Definition at line 582 of file timers.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void timer16_construct (Timer16_T *  timer,
int  addr,
char *  name,
int  rel_addr,
Timer16Def  timerdef 
)
+
+
+ +

+Constructor for 16 bit timer/counter object. +

+ +

Definition at line 608 of file timers.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* ocreg16_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new 16 bit Output Compare Register. +

+

Parameters:
+ + +
ocrdef The definition struct for the OCR to be created
+
+ +

Definition at line 909 of file timers.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ocreg16_construct (OCReg16_T *  ocreg,
int  addr,
char *  name,
OCReg16Def  ocrdef 
)
+
+
+ +

+Constructor for 16 bit Output Compare Register object. +

+ +

Definition at line 935 of file timers.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/todo.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/todo.html new file mode 100644 index 0000000..3f953c3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/todo.html @@ -0,0 +1,36 @@ + + + + + Main Page + + + + + + +
+

Todo List

+
Global avr_core_run
+
Should add some basic breakpoint handling here. Maybe allow continuing, and simple breakpoint management (disable, delete, set)
+
+

+

+
File ports.c
+
Remove the pins argument and the mask field. That's handled at a higher level so is obsolete here now.
+
+
+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/tree.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/tree.html new file mode 100644 index 0000000..082b09a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/tree.html @@ -0,0 +1,111 @@ + + + + + + + TreeView + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/uart_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/uart_8c-source.html new file mode 100644 index 0000000..7e353a3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/uart_8c-source.html @@ -0,0 +1,607 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/uart_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/uart_8c.html new file mode 100644 index 0000000..32fa69c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/uart_8c.html @@ -0,0 +1,371 @@ + + + + + Main Page + + + + + + +
+

uart.c File Reference

Module to simulate the AVR's uart module. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

VDevice * uart_int_create (int addr, char *name, int rel_addr, void *data)
+UARTIntr_T * uart_intr_new (int addr, char *name, void *data)
void uart_intr_construct (UARTIntr_T *uart, int addr, char *name)
void uart_intr_destroy (void *uart)
VDevice * uart_create (int addr, char *name, int rel_addr, void *data)
+UART_T * uart_new (int addr, char *name, int rel_addr)
void uart_construct (UART_T *uart, int addr, char *name, int rel_addr)
void uart_destroy (void *uart)
+uint16_t uart_port_rd (int addr)
+void uart_port_wr (uint8_t val)

Variables

unsigned int UART_Int_Table []
unsigned int UART0_Int_Table []
unsigned int UART1_Int_Table []
+


Detailed Description

+Module to simulate the AVR's uart module. +

+ +

Definition in file uart.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* uart_int_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new uart interrupt. +

+ +

Definition at line 95 of file uart.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void uart_intr_construct (UARTIntr_T *  uart,
int  addr,
char *  name 
)
+
+
+ +

+Constructor for uart interrupt object. +

+ +

Definition at line 128 of file uart.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void uart_intr_destroy (void *  uart  ) 
+
+
+ +

+Destructor for uart interrupt object. +

+ +

Definition at line 179 of file uart.c.

+ +

References vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* uart_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new uart structure. +

+ +

Definition at line 335 of file uart.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void uart_construct (UART_T *  uart,
int  addr,
char *  name,
int  rel_addr 
)
+
+
+ +

+Constructor for uart object. +

+ +

Definition at line 356 of file uart.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void uart_destroy (void *  uart  ) 
+
+
+ +

+Destructor for uart object. +

+ +

Definition at line 389 of file uart.c.

+ +

References vdev_destroy().

+ +
+

+


Variable Documentation

+ +
+
+ + + + +
unsigned int UART_Int_Table[]
+
+
+ +

+Initial value:

 {
+    irq_vect_table_index (UART_RX), 
+    irq_vect_table_index (UART_UDRE), 
+    irq_vect_table_index (UART_TX) 
+}
+
+

Definition at line 74 of file uart.c.

+ +
+

+ +

+
+ + + + +
unsigned int UART0_Int_Table[]
+
+
+ +

+Initial value:

 {
+    irq_vect_table_index (USART0_RX), 
+    irq_vect_table_index (USART0_UDRE), 
+    irq_vect_table_index (USART0_TX) 
+}
+
+

Definition at line 80 of file uart.c.

+ +
+

+ +

+
+ + + + +
unsigned int UART1_Int_Table[]
+
+
+ +

+Initial value:

 {
+    irq_vect_table_index (USART1_RX), 
+    irq_vect_table_index (USART1_UDRE), 
+    irq_vect_table_index (USART1_TX) 
+}
+
+

Definition at line 86 of file uart.c.

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/usb_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/usb_8c-source.html new file mode 100644 index 0000000..a3f1afd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/usb_8c-source.html @@ -0,0 +1,968 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/usb_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/usb_8c.html new file mode 100644 index 0000000..64e6032 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/usb_8c.html @@ -0,0 +1,297 @@ + + + + + Main Page + + + + + + +
+

usb.c File Reference

Module to simulate the AVR's USB module. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + +

Functions

+void usb_port_wr (char *name, uint8_t val)
+uint8_t usb_port_rd (char *name)
VDevice * usbi_create (int addr, char *name, int rel_addr, void *data)
+USBInter_T * usb_intr_new (int addr, char *name, uint8_t func_mask)
void usb_intr_construct (USBInter_T *usb, int addr, char *name, uint8_t func_mask)
void usb_intr_destroy (void *usb)
VDevice * usb_create (int addr, char *name, int rel_addr, void *data)
+USB_T * usb_new (int addr, char *name)
void usb_construct (USB_T *usb, int addr, char *name)
void usb_destroy (void *usb)
+


Detailed Description

+Module to simulate the AVR's USB module. +

+ +

Definition in file usb.c.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* usbi_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new USB interrupt. +

+ +

Definition at line 78 of file usb.c.

+ +

References avr_error.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void usb_intr_construct (USBInter_T *  usb,
int  addr,
char *  name,
uint8_t  func_mask 
)
+
+
+ +

+Constructor for usb interrupt object. +

+ +

Definition at line 103 of file usb.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void usb_intr_destroy (void *  usb  ) 
+
+
+ +

+Destructor for usb interrupt object. +

+ +

Definition at line 181 of file usb.c.

+ +

References vdev_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VDevice* usb_create (int  addr,
char *  name,
int  rel_addr,
void *  data 
)
+
+
+ +

+Allocate a new USB structure. +

+ +

Definition at line 301 of file usb.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void usb_construct (USB_T *  usb,
int  addr,
char *  name 
)
+
+
+ +

+Constructor for new USB object. +

+ +

Definition at line 321 of file usb.c.

+ +

References avr_error, and vdev_construct().

+ +
+

+ +

+
+ + + + + + + + + +
void usb_destroy (void *  usb  ) 
+
+
+ +

+Destructor for USB object. +

+ +

Definition at line 480 of file usb.c.

+ +

References vdev_destroy().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/utils_8c-source.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/utils_8c-source.html new file mode 100644 index 0000000..4b98fa7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/utils_8c-source.html @@ -0,0 +1,401 @@ + + + + + Main Page + + + + + + + +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/utils_8c.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/utils_8c.html new file mode 100644 index 0000000..8ac5799 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/utils_8c.html @@ -0,0 +1,469 @@ + + + + + Main Page + + + + + + +
+

utils.c File Reference

Utility functions. More... +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

int str2ffmt (char *str)
uint8_t set_bit_in_byte (uint8_t src, int bit, int val)
uint16_t set_bit_in_word (uint16_t src, int bit, int val)
uint64_t get_program_time (void)
DList * dlist_add (DList *head, AvrClass *data, DListFP_Cmp cmp)
DList * dlist_add_head (DList *head, AvrClass *data)
DList * dlist_delete (DList *head, AvrClass *data, DListFP_Cmp cmp)
void dlist_delete_all (DList *head)
AvrClass * dlist_lookup (DList *head, AvrClass *data, DListFP_Cmp cmp)
AvrClass * dlist_get_head_data (DList *head)
DList * dlist_iterator (DList *head, DListFP_Iter func, void *user_data)
+


Detailed Description

+Utility functions. +

+This module provides general purpose utilities. +

Definition in file utils.c.

+

Function Documentation

+ +
+
+ + + + + + + + + +
int str2ffmt (char *  str  ) 
+
+
+ +

+Utility function to convert a string to a FileFormatType code. +

+ +

Definition at line 50 of file utils.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint8_t set_bit_in_byte (uint8_t  src,
int  bit,
int  val 
)
+
+
+ +

+Set a bit in src to 1 if val != 0, clears bit if val == 0. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t set_bit_in_word (uint16_t  src,
int  bit,
int  val 
)
+
+
+ +

+Set a bit in src to 1 if val != 0, clears bit if val == 0. +

+ +

+

+ +

+
+ + + + + + + + + +
uint64_t get_program_time (void   ) 
+
+
+ +

+Return the number of milliseconds of elapsed program time. +

+

Returns:
an unsigned 64 bit number. Time zero is not well defined, so only time differences should be used.
+ +

Definition at line 76 of file utils.c.

+ +

References avr_error.

+ +

Referenced by avr_core_run().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DList* dlist_add (DList *  head,
AvrClass *  data,
DListFP_Cmp  cmp 
)
+
+
+ +

+Add a new node to the end of the list. +

+If cmp argument is not NULL, use cmp() to see if node already exists and don't add node if it exists.

+It is the responsibility of this function to unref data if not added. +

Definition at line 159 of file utils.c.

+ +

References class_unref().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
DList* dlist_add_head (DList *  head,
AvrClass *  data 
)
+
+
+ +

+Add a new node at the head of the list. +

+ +

Definition at line 196 of file utils.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DList* dlist_delete (DList *  head,
AvrClass *  data,
DListFP_Cmp  cmp 
)
+
+
+ +

+Conditionally delete a node from the list. +

+Delete a node from the list if the node's data matches the specified data. Returns the head of the modified list. +

Definition at line 215 of file utils.c.

+ +

References avr_error, and class_unref().

+ +

Referenced by dlist_iterator().

+ +
+

+ +

+
+ + + + + + + + + +
void dlist_delete_all (DList *  head  ) 
+
+
+ +

+Blow away the entire list. +

+ +

Definition at line 266 of file utils.c.

+ +

References class_unref().

+ +

Referenced by avr_core_destroy().

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
AvrClass* dlist_lookup (DList *  head,
AvrClass *  data,
DListFP_Cmp  cmp 
)
+
+
+ +

+Lookup an item in the list. +

+Walk the list pointed to by head and return a pointer to the data if found. If not found, return NULL.

+

Parameters:
+ + + + +
head The head of the list to be iterated.
data The data to be passed to the func when it is applied.
cmp A function to be used for comparing the items.
+
+
Returns:
A pointer to the data found, or NULL if not found.
+ +

Definition at line 291 of file utils.c.

+ +

References avr_error.

+ +

Referenced by mem_get_vdevice_by_name().

+ +
+

+ +

+
+ + + + + + + + + +
AvrClass* dlist_get_head_data (DList *  head  ) 
+
+
+ +

+Extract the data from the head of the list. +

+Returns the data element for the head of the list. If the list is empty, return a NULL pointer.

+

Parameters:
+ + +
head The head of the list.
+
+
Returns:
A pointer to the data found, or NULL if not found.
+ +

Definition at line 321 of file utils.c.

+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DList* dlist_iterator (DList *  head,
DListFP_Iter  func,
void *  user_data 
)
+
+
+ +

+Iterate over all elements of the list. +

+For each element, call the user supplied iterator function and pass it the node data and the user_data. If the iterator function return non-zero, remove the node from the list.

+

Parameters:
+ + + + +
head The head of the list to be iterated.
func The function to be applied.
user_data The data to be passed to the func when it is applied.
+
+
Returns:
A pointer to the head of the possibly modified list.
+ +

Definition at line 357 of file utils.c.

+ +

References avr_error, and dlist_delete().

+ +
+

+

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/virtual_devs.html b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/virtual_devs.html new file mode 100644 index 0000000..36bba49 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/internals_html/virtual_devs.html @@ -0,0 +1,28 @@ + + + + + Main Page + + + + + + +
+

Virtual Devices

+FIXME: empty place holder

+ +
+

Automatically generated by Doxygen 1.5.5 on 7 Nov 2008.

+ + + diff --git a/arduino-0018-windows/hardware/tools/avr/doc/simulavr/simulavr.pdf b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/simulavr.pdf new file mode 100644 index 0000000..494d048 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/simulavr/simulavr.pdf differ diff --git a/arduino-0018-windows/hardware/tools/avr/doc/srecord/srecord-1.38.pdf b/arduino-0018-windows/hardware/tools/avr/doc/srecord/srecord-1.38.pdf new file mode 100644 index 0000000..3665953 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/doc/srecord/srecord-1.38.pdf differ diff --git a/arduino-0018-windows/hardware/tools/avr/etc/avrdude.conf b/arduino-0018-windows/hardware/tools/avr/etc/avrdude.conf new file mode 100644 index 0000000..dbe4454 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/etc/avrdude.conf @@ -0,0 +1,11915 @@ +# $Id: avrdude.conf.in,v 1.122 2007/05/16 21:29:36 joerg_wunsch Exp $ +# +# AVRDUDE Configuration File +# +# This file contains configuration data used by AVRDUDE which describes +# the programming hardware pinouts and also provides part definitions. +# AVRDUDE's "-C" command line option specifies the location of the +# configuration file. The "-c" option names the programmer configuration +# which must match one of the entry's "id" parameter. The "-p" option +# identifies which part AVRDUDE is going to be programming and must match +# one of the parts' "id" parameter. +# +# Possible entry formats are: +# +# programmer +# id = [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | +# avr910 | butterfly | usbasp | +# jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | +# dragon_dw | dragon_jtag | dragon_isp | dragon_pp | +# dragon_hvsp; # programmer type +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number +# ; +# +# part +# id = ; # quoted string +# desc = ; # quoted string +# has_jtag = ; # part has JTAG i/f +# has_debugwire = ; # part has debugWire i/f +# devicecode = ; # deprecated, use stk500_devcode +# stk500_devcode = ; # numeric +# avr910_devcode = ; # numeric +# signature = ; # signature bytes +# chip_erase_delay = ; # micro-seconds +# reset = dedicated | io; +# retry_pulse = reset | sck; +# pgm_enable = ; +# chip_erase = ; +# chip_erase_delay = ; # chip erase delay (us) +# # STK500 parameters (parallel programming IO lines) +# pagel = ; # pin name in hex, i.e., 0xD7 +# bs2 = ; # pin name in hex, i.e., 0xA0 +# serial = ; # can use serial downloading +# parallel = ; # can use par. programming +# # STK500v2 parameters, to be taken from Atmel's XML files +# timeout = ; +# stabdelay = ; +# cmdexedelay = ; +# synchloops = ; +# bytedelay = ; +# pollvalue = ; +# pollindex = ; +# predelay = ; +# postdelay = ; +# pollmethod = ; +# mode = ; +# delay = ; +# blocksize = ; +# readsize = ; +# hvspcmdexedelay = ; +# # STK500v2 HV programming parameters, from XML +# pp_controlstack = , , ...; # PP only +# hvsp_controlstack = , , ...; # HVSP only +# hventerstabdelay = ; +# progmodedelay = ; # PP only +# latchcycles = ; +# togglevtg = ; +# poweroffdelay = ; +# resetdelayms = ; +# resetdelayus = ; +# hvleavestabdelay = ; +# resetdelay = ; +# synchcycles = ; # HVSP only +# chiperasepulsewidth = ; # PP only +# chiperasepolltimeout = ; +# chiperasetime = ; # HVSP only +# programfusepulsewidth = ; # PP only +# programfusepolltimeout = ; +# programlockpulsewidth = ; # PP only +# programlockpolltimeout = ; +# # JTAG ICE mkII parameters, also from XML files +# allowfullpagebitstream = ; +# enablepageprogramming = ; +# idr = ; # IO addr of IDR (OCD) reg. +# rampz = ; # IO addr of RAMPZ reg. +# spmcr = ; # mem addr of SPMC[S]R reg. +# eecr = ; # mem addr of EECR reg. +# # (only when != 0x3c) +# +# memory +# paged = ; # yes / no +# size = ; # bytes +# page_size = ; # bytes +# num_pages = ; # numeric +# min_write_delay = ; # micro-seconds +# max_write_delay = ; # micro-seconds +# readback_p1 = ; # byte value +# readback_p2 = ; # byte value +# pwroff_after_write = ; # yes / no +# read = ; +# write = ; +# read_lo = ; +# read_hi = ; +# write_lo = ; +# write_hi = ; +# loadpage_lo = ; +# loadpage_hi = ; +# writepage = ; +# ; +# ; +# +# If any of the above parameters are not specified, the default value +# of 0 is used for numerics or the empty string ("") for string +# values. If a required parameter is left empty, AVRDUDE will +# complain. +# +# NOTES: +# * 'devicecode' is the device code used by the STK500 (see codes +# listed below) +# * Not all memory types will implement all instructions. +# * AVR Fuse bits and Lock bits are implemented as a type of memory. +# * Example memory types are: +# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high +# fuse), "signature", "calibration", "lock" +# * The memory type specified on the avrdude command line must match +# one of the memory types defined for the specified chip. +# * The pwroff_after_write flag causes avrdude to attempt to +# power the device off and back on after an unsuccessful write to +# the affected memory area if VCC programmer pins are defined. If +# VCC pins are not defined for the programmer, a message +# indicating that the device needs a power-cycle is printed out. +# This flag was added to work around a problem with the +# at90s4433/2333's; see the at90s4433 errata at: +# +# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# +# INSTRUCTION FORMATS +# +# Instruction formats are specified as a comma seperated list of +# string values containing information (bit specifiers) about each +# of the 32 bits of the instruction. Bit specifiers may be one of +# the following formats: +# +# '1' = the bit is always set on input as well as output +# +# '0' = the bit is always clear on input as well as output +# +# 'x' = the bit is ignored on input and output +# +# 'a' = the bit is an address bit, the bit-number matches this bit +# specifier's position within the current instruction byte +# +# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 +# is address bit 12 on input, a0 is address bit 0. +# +# 'i' = the bit is an input data bit +# +# 'o' = the bit is an output data bit +# +# Each instruction must be composed of 32 bit specifiers. The +# instruction specification closely follows the instruction data +# provided in Atmel's data sheets for their parts. +# +# See below for some examples. +# +# +# The following are STK500 part device codes to use for the +# "devicecode" field of the part. These came from Atmel's software +# section avr061.zip which accompanies the application note +# AVR061 available from: +# +# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# + +#define ATTINY10 0x10 +#define ATTINY11 0x11 +#define ATTINY12 0x12 +#define ATTINY15 0x13 +#define ATTINY13 0x14 + +#define ATTINY22 0x20 +#define ATTINY26 0x21 +#define ATTINY28 0x22 +#define ATTINY2313 0x23 + +#define AT90S1200 0x33 + +#define AT90S2313 0x40 +#define AT90S2323 0x41 +#define AT90S2333 0x42 +#define AT90S2343 0x43 + +#define AT90S4414 0x50 +#define AT90S4433 0x51 +#define AT90S4434 0x52 +#define ATMEGA48 0x59 + +#define AT90S8515 0x60 +#define AT90S8535 0x61 +#define AT90C8534 0x62 +#define ATMEGA8515 0x63 +#define ATMEGA8535 0x64 + +#define ATMEGA8 0x70 +#define ATMEGA88 0x73 +#define ATMEGA168 0x86 + +#define ATMEGA161 0x80 +#define ATMEGA163 0x81 +#define ATMEGA16 0x82 +#define ATMEGA162 0x83 +#define ATMEGA169 0x84 + +#define ATMEGA323 0x90 +#define ATMEGA32 0x91 + +#define ATMEGA64 0xA0 + +#define ATMEGA103 0xB1 +#define ATMEGA128 0xB2 +#define AT90CAN128 0xB3 + +#define AT86RF401 0xD0 + +#define AT89START 0xE0 +#define AT89S51 0xE0 +#define AT89S52 0xE1 + +# The following table lists the devices in the original AVR910 +# appnote: +# |Device |Signature | Code | +# +-------+----------+------+ +# |tiny12 | 1E 90 05 | 0x55 | +# |tiny15 | 1E 90 06 | 0x56 | +# | | | | +# | S1200 | 1E 90 01 | 0x13 | +# | | | | +# | S2313 | 1E 91 01 | 0x20 | +# | S2323 | 1E 91 02 | 0x48 | +# | S2333 | 1E 91 05 | 0x34 | +# | S2343 | 1E 91 03 | 0x4C | +# | | | | +# | S4414 | 1E 92 01 | 0x28 | +# | S4433 | 1E 92 03 | 0x30 | +# | S4434 | 1E 92 02 | 0x6C | +# | | | | +# | S8515 | 1E 93 01 | 0x38 | +# | S8535 | 1E 93 03 | 0x68 | +# | | | | +# |mega32 | 1E 95 01 | 0x72 | +# |mega83 | 1E 93 05 | 0x65 | +# |mega103| 1E 97 01 | 0x41 | +# |mega161| 1E 94 01 | 0x60 | +# |mega163| 1E 94 02 | 0x64 | + +# Appnote AVR109 also has a table of AVR910 device codes, which +# lists: +# dev avr910 signature +# ATmega8 0x77 0x1E 0x93 0x07 +# ATmega8515 0x3B 0x1E 0x93 0x06 +# ATmega8535 0x6A 0x1E 0x93 0x08 +# ATmega16 0x75 0x1E 0x94 0x03 +# ATmega162 0x63 0x1E 0x94 0x04 +# ATmega163 0x66 0x1E 0x94 0x02 +# ATmega169 0x79 0x1E 0x94 0x05 +# ATmega32 0x7F 0x1E 0x95 0x02 +# ATmega323 0x73 0x1E 0x95 0x01 +# ATmega64 0x46 0x1E 0x96 0x02 +# ATmega128 0x44 0x1E 0x97 0x02 +# +# These codes refer to "BOOT" device codes which are apparently +# different than standard device codes, for whatever reasons +# (often one above the standard code). + +# There are several extended versions of AVR910 implementations around +# in the Internet. These add the following codes (only devices that +# actually exist are listed): + +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 + +# +# Overall avrdude defaults +# +default_parallel = "lpt1"; +default_serial = "com1"; + + +# +# PROGRAMMER DEFINITIONS +# + +programmer + id = "avrisp"; + desc = "Atmel AVR ISP"; + type = stk500; +; + +programmer + id = "avrispv2"; + desc = "Atmel AVR ISP V2"; + type = stk500v2; +; + +programmer + id = "avrispmkII"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +programmer + id = "avrisp2"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +# This is supposed to be the "default" STK500 entry. +# Attempts to select the correct firmware version +# by probing for it. Better use one of the entries +# below instead. +programmer + id = "stk500"; + desc = "Atmel STK500"; + type = stk500generic; +; + +programmer + id = "stk500v1"; + desc = "Atmel STK500 Version 1.x firmware"; + type = stk500; +; + +programmer + id = "stk500v2"; + desc = "Atmel STK500 Version 2.x firmware"; + type = stk500v2; +; + +programmer + id = "stk500pp"; + desc = "Atmel STK500 V2 in parallel programming mode"; + type = stk500pp; +; + +programmer + id = "stk500hvsp"; + desc = "Atmel STK500 V2 in high-voltage serial programming mode"; + type = stk500hvsp; +; + +programmer + id = "avr910"; + desc = "Atmel Low Cost Serial Programmer"; + type = avr910; +; + +programmer + id = "usbasp"; + desc = "USBasp, http://www.fischl.de/usbasp/"; + type = usbasp; +; + +programmer + id = "usbtiny"; + desc = "USBtiny simple USB programmer"; + type = usbtiny; +; + +programmer + id = "butterfly"; + desc = "Atmel Butterfly Development Board"; + type = butterfly; +; + +programmer + id = "avr109"; + desc = "Atmel AppNote AVR109 Boot Loader"; + type = butterfly; +; + +programmer + id = "avr911"; + desc = "Atmel AppNote AVR911 AVROSP"; + type = butterfly; +; + +programmer + id = "jtagmkI"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1slow"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 19200; + type = jtagmki; +; + +programmer + id = "jtagmkII"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# easier to type +programmer + id = "jtag2slow"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# JTAG ICE mkII @ 115200 Bd +programmer + id = "jtag2fast"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# make the fast one the default, people will love that +programmer + id = "jtag2"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# JTAG ICE mkII in ISP mode +programmer + id = "jtag2isp"; + desc = "Atmel JTAG ICE mkII in ISP mode"; + baudrate = 115200; + type = jtagmkii_isp; +; + +# JTAG ICE mkII in debugWire mode +programmer + id = "jtag2dw"; + desc = "Atmel JTAG ICE mkII in debugWire mode"; + baudrate = 115200; + type = jtagmkii_dw; +; + +# AVR Dragon in JTAG mode +programmer + id = "dragon_jtag"; + desc = "Atmel AVR Dragon in JTAG mode"; + baudrate = 115200; + type = dragon_jtag; +; + +# AVR Dragon in ISP mode +programmer + id = "dragon_isp"; + desc = "Atmel AVR Dragon in ISP mode"; + baudrate = 115200; + type = dragon_isp; +; + +# AVR Dragon in PP mode +programmer + id = "dragon_pp"; + desc = "Atmel AVR Dragon in PP mode"; + baudrate = 115200; + type = dragon_pp; +; + +# AVR Dragon in HVSP mode +programmer + id = "dragon_hvsp"; + desc = "Atmel AVR Dragon in HVSP mode"; + baudrate = 115200; + type = dragon_hvsp; +; + +# AVR Dragon in debugWire mode +programmer + id = "dragon_dw"; + desc = "Atmel AVR Dragon in debugWire mode"; + baudrate = 115200; + type = dragon_dw; +; + +programmer + id = "pavr"; + desc = "Jason Kyle's pAVR Serial Programmer"; + type = avr910; +; + +# Parallel port programmers. + +programmer + id = "bsd"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + type = par; + vcc = 2, 3, 4, 5; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; +; + +programmer + id = "stk200"; + desc = "STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; +; + +# The programming dongle used by the popular Ponyprog +# utility. It is almost similar to the STK200 one, +# except that there is a LED indicating that the +# programming is currently in progress. + +programmer + id = "pony-stk200"; + desc = "Pony Prog STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + +programmer + id = "dt006"; + desc = "Dontronics DT006"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "bascom"; + desc = "Bascom SAMPLE programming cable"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "alf"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + type = par; + vcc = 2, 3, 4, 5; + buff = 6; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; + errled = 1; + rdyled = 14; + pgmled = 16; + vfyled = 17; +; + +programmer + id = "sp12"; + desc = "Steve Bolt's Programmer"; + type = par; + vcc = 4,5,6,7,8; + reset = 3; + sck = 2; + mosi = 9; + miso = 11; +; + +programmer + id = "picoweb"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + type = par; + reset = 2; + sck = 3; + mosi = 4; + miso = 13; +; + +programmer + id = "abcmini"; + desc = "ABCmini Board, aka Dick Smith HOTCHIP"; + type = par; + reset = 4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "futurlec"; + desc = "Futurlec.com programming cable."; + type = par; + reset = 3; + sck = 2; + mosi = 1; + miso = 10; +; + + +# From the contributor of the "xil" jtag cable: +# The "vcc" definition isn't really vcc (the cable gets its power from +# the programming circuit) but is necessary to switch one of the +# buffer lines (trying to add it to the "buff" lines doesn't work). +# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK +# to SCK (plus vcc/gnd of course) +programmer + id = "xil"; + desc = "Xilinx JTAG cable"; + type = par; + mosi = 2; + sck = 3; + reset = 4; + buff = 5; + miso = 13; + vcc = 6; +; + + +programmer + id = "dapa"; + desc = "Direct AVR Parallel Access cable"; + type = par; + vcc = 3; + reset = 16; + sck = 1; + mosi = 2; + miso = 11; +; + +programmer + id = "atisp"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + type = par; + reset = ~6; + sck = ~8; + mosi = ~7; + miso = ~10; +; + +programmer + id = "ere-isp-avr"; + desc = "ERE ISP-AVR "; + type = par; + reset = ~4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "blaster"; + desc = "Altera ByteBlaster"; + type = par; + sck = 2; + miso = 11; + reset = 3; + mosi = 8; + buff = 14; +; + +# It is almost same as pony-stk200, except vcc on pin 5 to auto +# disconnect port (download on http://electropol.free.fr) +programmer + id = "frank-stk200"; + desc = "Frank STK200"; + type = par; + vcc = 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + + +# +# some ultra cheap programmers use bitbanging on the +# serialport. +# +# PC - DB9 - Pins for RS232: +# +# GND 5 -- |O +# | O| <- 9 RI +# DTR 4 <- |O | +# | O| <- 8 CTS +# TXD 3 <- |O | +# | O| -> 7 RTS +# RXD 2 -> |O | +# | O| <- 6 DSR +# DCD 1 -> |O +# +# Using RXD is currently not supported. +# Using RI is not supported under Win32 but is supported under Posix. + +# serial ponyprog design (dasa2 in uisp) +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "ponyser"; + desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# Same as above, different name +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "siprog"; + desc = "Lancos SI-Prog "; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# unknown (dasa in uisp) +# reset=rts sck=dtr mosi=txd miso=cts + +programmer + id = "dasa"; + desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; + type = serbb; + reset = 7; + sck = 4; + mosi = 3; + miso = 8; +; + +# unknown (dasa3 in uisp) +# reset=!dtr sck=rts mosi=txd miso=cts + +programmer + id = "dasa3"; + desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; + type = serbb; + reset = ~4; + sck = 7; + mosi = 3; + miso = 8; +; + +# +# PART DEFINITIONS +# + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; + + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; + + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + +#------------------------------------------------------------ +# ATtiny12 +#------------------------------------------------------------ + +part + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny13 +#------------------------------------------------------------ + +part + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# AT90s1200 +#------------------------------------------------------------ + +part + id = "1200"; + desc = "AT90S1200"; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4414 +#------------------------------------------------------------ + +part + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2313 +#------------------------------------------------------------ + +part + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2333 +#------------------------------------------------------------ + +part + id = "2333"; +##### WARNING: No XML file for device 'AT90S2333'! ##### + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s2343 (also AT90s2323 and ATtiny22) +#------------------------------------------------------------ + +part + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s4433 +#------------------------------------------------------------ + +part + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4434 +#------------------------------------------------------------ + +part + id = "4434"; +##### WARNING: No XML file for device 'AT90S4434'! ##### + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s8515 +#------------------------------------------------------------ + +part + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s8535 +#------------------------------------------------------------ + +part + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o x x x x x x"; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part + id = "m103"; + desc = "ATMEGA103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part + id = "m64"; + desc = "ATMEGA64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part + id = "m128"; + desc = "ATMEGA128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part + id = "m16"; + desc = "ATMEGA16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +# close to ATmega16 + +part + id = "m164p"; + desc = "ATMEGA164P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +# similar to ATmega164P + +part + id = "m324p"; + desc = "ATMEGA324P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m644"; + desc = "ATMEGA644"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega644P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m644p"; + desc = "ATMEGA644P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part + id = "m162"; + desc = "ATMEGA162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + + ; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; +; + + + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part + id = "m163"; + desc = "ATMEGA163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part + id = "m169"; + desc = "ATMEGA169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part + id = "m329"; + desc = "ATMEGA329"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3290 +#------------------------------------------------------------ + +# identical to ATmega329 + +part + id = "m3290"; + desc = "ATMEGA3290"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a3 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part + id = "m649"; + desc = "ATMEGA649"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +# identical to ATmega649 + +part + id = "m6490"; + desc = "ATMEGA6490"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part + id = "m32"; + desc = "ATMEGA32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega161 +#------------------------------------------------------------ + +part + id = "m161"; + desc = "ATMEGA161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + memory "eeprom" + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; + + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part + id = "m8"; + desc = "ATMEGA8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part + id = "m8515"; + desc = "ATMEGA8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega8535 +#------------------------------------------------------------ + +part + id = "m8535"; + desc = "ATMEGA8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part + id = "t26"; + desc = "ATTINY26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ +# Close to ATtiny26 + +part + id = "t261"; + desc = "ATTINY261"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ +# Close to ATtiny261 + +part + id = "t461"; + desc = "ATTINY461"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ +# Close to ATtiny461 + +part + id = "t861"; + desc = "ATTINY861"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part + id = "m48"; + desc = "ATMEGA48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; +# avr910_devcode = 0x; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +part + id = "m88"; + desc = "ATMEGA88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part + id = "m168"; + desc = "ATMEGA168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part + id = "m328p"; + desc = "ATMEGA328P"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x0F; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATtiny2313 +#------------------------------------------------------------ + +part + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2 +#------------------------------------------------------------ + +part + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part + id = "pwm3"; + desc = "AT90PWM3"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2B +#------------------------------------------------------------ +# Same as AT90PWM2 but different signature. + +part + id = "pwm2b"; + desc = "AT90PWM2B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3B +#------------------------------------------------------------ + +# Completely identical to AT90PWM2B (including the signature!) + +part + id = "pwm3b"; + desc = "AT90PWM3B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ + +part + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny45 +#------------------------------------------------------------ + +part + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny85 +#------------------------------------------------------------ + +part + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part + id = "m640"; + desc = "ATMEGA640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1280 +#------------------------------------------------------------ + +part + id = "m1280"; + desc = "ATMEGA1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part + id = "m1281"; + desc = "ATMEGA1281"; + signature = 0x1e 0x97 0x04; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part + id = "m2560"; + desc = "ATMEGA2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part + id = "m2561"; + desc = "ATMEGA2561"; + signature = 0x1e 0x98 0x02; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB646 +#------------------------------------------------------------ + +part + id = "usb646"; + desc = "AT90USB646"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB647 +#------------------------------------------------------------ +# identical to AT90USB646 + +part + id = "usb647"; + desc = "AT90USB647"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1286 +#------------------------------------------------------------ + +part + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part + id = "m325"; + desc = "ATMEGA325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part + id = "m645"; + desc = "ATMEGA645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part + id = "m3250"; + desc = "ATMEGA3250"; + signature = 0x1E 0x95 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part + id = "m6450"; + desc = "ATMEGA6450"; + signature = 0x1E 0x96 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; diff --git a/arduino-0018-windows/hardware/tools/avr/lib/dde1.2/pkgIndex.tcl b/arduino-0018-windows/hardware/tools/avr/lib/dde1.2/pkgIndex.tcl new file mode 100644 index 0000000..f045ad8 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/dde1.2/pkgIndex.tcl @@ -0,0 +1,6 @@ +if {![package vsatisfies [package provide Tcl] 8]} {return} +if {[info exists tcl_platform(debug)]} { + package ifneeded dde 1.2 [list load [file join $dir tcldde12d.dll] dde] +} else { + package ifneeded dde 1.2 [list load [file join $dir tcldde12.dll] dde] +} diff --git a/arduino-0018-windows/hardware/tools/avr/lib/dde1.2/tcldde12.dll b/arduino-0018-windows/hardware/tools/avr/lib/dde1.2/tcldde12.dll new file mode 100644 index 0000000..2d1ada4 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/dde1.2/tcldde12.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr25/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr25/libgcc.a new file mode 100644 index 0000000..c89440a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr25/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr25/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr25/libgcov.a new file mode 100644 index 0000000..651fec3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr25/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr3/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr3/libgcc.a new file mode 100644 index 0000000..ecaffc2 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr3/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr3/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr3/libgcov.a new file mode 100644 index 0000000..b8f3b28 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr3/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr31/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr31/libgcc.a new file mode 100644 index 0000000..5844149 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr31/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr31/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr31/libgcov.a new file mode 100644 index 0000000..cf2d668 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr31/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr35/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr35/libgcc.a new file mode 100644 index 0000000..4bd01f3 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr35/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr35/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr35/libgcov.a new file mode 100644 index 0000000..cf2d668 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr35/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr4/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr4/libgcc.a new file mode 100644 index 0000000..87cd883 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr4/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr4/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr4/libgcov.a new file mode 100644 index 0000000..fbd5a8e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr4/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr5/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr5/libgcc.a new file mode 100644 index 0000000..b10e33f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr5/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr5/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr5/libgcov.a new file mode 100644 index 0000000..0136e94 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr5/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr51/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr51/libgcc.a new file mode 100644 index 0000000..e4aa458 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr51/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr51/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr51/libgcov.a new file mode 100644 index 0000000..0136e94 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr51/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr6/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr6/libgcc.a new file mode 100644 index 0000000..6ef175a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr6/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr6/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr6/libgcov.a new file mode 100644 index 0000000..c772ff6 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avr6/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega4/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega4/libgcc.a new file mode 100644 index 0000000..8d78d81 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega4/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega4/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega4/libgcov.a new file mode 100644 index 0000000..943cf01 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega4/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega5/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega5/libgcc.a new file mode 100644 index 0000000..ec721e0 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega5/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega5/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega5/libgcov.a new file mode 100644 index 0000000..8d572a6 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega5/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega6/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega6/libgcc.a new file mode 100644 index 0000000..578e813 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega6/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega6/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega6/libgcov.a new file mode 100644 index 0000000..6fd1654 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega6/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega7/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega7/libgcc.a new file mode 100644 index 0000000..fa6488a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega7/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega7/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega7/libgcov.a new file mode 100644 index 0000000..d2d6621 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/avrxmega7/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/README b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/README new file mode 100644 index 0000000..7086a77 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/README @@ -0,0 +1,14 @@ +This README file is copied into the directory for GCC-only header files +when fixincludes is run by the makefile for GCC. + +Many of the files in this directory were automatically edited from the +standard system header files by the fixincludes process. They are +system-specific, and will not work on any other kind of system. They +are also not part of GCC. The reason we have to do this is because +GCC requires ANSI C headers and many vendors supply ANSI-incompatible +headers. + +Because this is an automated process, sometimes headers get "fixed" +that do not, strictly speaking, need a fix. As long as nothing is broken +by the process, it is just an unfortunate collateral inconvenience. +We would like to rectify it, if it is not "too inconvenient". diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/fixed b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/fixed new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/fixed @@ -0,0 +1 @@ +timestamp diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/limits.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/limits.h new file mode 100644 index 0000000..710cbb5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/limits.h @@ -0,0 +1,103 @@ +#ifndef _LIMITS_H___ +#define _LIMITS_H___ + +/* Number of bits in a `char'. */ +#undef CHAR_BIT +#define CHAR_BIT __CHAR_BIT__ + +/* Maximum length of a multibyte character. */ +#ifndef MB_LEN_MAX +#define MB_LEN_MAX 1 +#endif + +/* Minimum and maximum values a `signed char' can hold. */ +#undef SCHAR_MIN +#define SCHAR_MIN (-SCHAR_MAX - 1) +#undef SCHAR_MAX +#define SCHAR_MAX __SCHAR_MAX__ + +/* Maximum value an `unsigned char' can hold. (Minimum is 0). */ +#undef UCHAR_MAX +#if __SCHAR_MAX__ == __INT_MAX__ +# define UCHAR_MAX (SCHAR_MAX * 2U + 1U) +#else +# define UCHAR_MAX (SCHAR_MAX * 2 + 1) +#endif + +/* Minimum and maximum values a `char' can hold. */ +#ifdef __CHAR_UNSIGNED__ +# undef CHAR_MIN +# if __SCHAR_MAX__ == __INT_MAX__ +# define CHAR_MIN 0U +# else +# define CHAR_MIN 0 +# endif +# undef CHAR_MAX +# define CHAR_MAX UCHAR_MAX +#else +# undef CHAR_MIN +# define CHAR_MIN SCHAR_MIN +# undef CHAR_MAX +# define CHAR_MAX SCHAR_MAX +#endif + +/* Minimum and maximum values a `signed short int' can hold. */ +#undef SHRT_MIN +#define SHRT_MIN (-SHRT_MAX - 1) +#undef SHRT_MAX +#define SHRT_MAX __SHRT_MAX__ + +/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ +#undef USHRT_MAX +#if __SHRT_MAX__ == __INT_MAX__ +# define USHRT_MAX (SHRT_MAX * 2U + 1U) +#else +# define USHRT_MAX (SHRT_MAX * 2 + 1) +#endif + +/* Minimum and maximum values a `signed int' can hold. */ +#undef INT_MIN +#define INT_MIN (-INT_MAX - 1) +#undef INT_MAX +#define INT_MAX __INT_MAX__ + +/* Maximum value an `unsigned int' can hold. (Minimum is 0). */ +#undef UINT_MAX +#define UINT_MAX (INT_MAX * 2U + 1U) + +/* Minimum and maximum values a `signed long int' can hold. + (Same as `int'). */ +#undef LONG_MIN +#define LONG_MIN (-LONG_MAX - 1L) +#undef LONG_MAX +#define LONG_MAX __LONG_MAX__ + +/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ +#undef ULONG_MAX +#define ULONG_MAX (LONG_MAX * 2UL + 1UL) + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +/* Minimum and maximum values a `signed long long int' can hold. */ +# undef LLONG_MIN +# define LLONG_MIN (-LLONG_MAX - 1LL) +# undef LLONG_MAX +# define LLONG_MAX __LONG_LONG_MAX__ + +/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ +# undef ULLONG_MAX +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +#endif + +#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) +/* Minimum and maximum values a `signed long long int' can hold. */ +# undef LONG_LONG_MIN +# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) +# undef LONG_LONG_MAX +# define LONG_LONG_MAX __LONG_LONG_MAX__ + +/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ +# undef ULONG_LONG_MAX +# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) +#endif + +#endif /* _LIMITS_H___ */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/syslimits.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/syslimits.h new file mode 100644 index 0000000..a362802 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include-fixed/syslimits.h @@ -0,0 +1,8 @@ +/* syslimits.h stands for the system's own limits.h file. + If we can use it ok unmodified, then we install this text. + If fixincludes fixes it, then the fixed version is installed + instead of this text. */ + +#define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h to recurse */ +#include_next +#undef _GCC_NEXT_LIMITS_H diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/float.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/float.h new file mode 100644 index 0000000..23ce8f4 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/float.h @@ -0,0 +1,241 @@ +/* Copyright (C) 2002, 2007 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 5.2.4.2.2 Characteristics of floating types + */ + +#ifndef _FLOAT_H___ +#define _FLOAT_H___ + +/* Radix of exponent representation, b. */ +#undef FLT_RADIX +#define FLT_RADIX __FLT_RADIX__ + +/* Number of base-FLT_RADIX digits in the significand, p. */ +#undef FLT_MANT_DIG +#undef DBL_MANT_DIG +#undef LDBL_MANT_DIG +#define FLT_MANT_DIG __FLT_MANT_DIG__ +#define DBL_MANT_DIG __DBL_MANT_DIG__ +#define LDBL_MANT_DIG __LDBL_MANT_DIG__ + +/* Number of decimal digits, q, such that any floating-point number with q + decimal digits can be rounded into a floating-point number with p radix b + digits and back again without change to the q decimal digits, + + p * log10(b) if b is a power of 10 + floor((p - 1) * log10(b)) otherwise +*/ +#undef FLT_DIG +#undef DBL_DIG +#undef LDBL_DIG +#define FLT_DIG __FLT_DIG__ +#define DBL_DIG __DBL_DIG__ +#define LDBL_DIG __LDBL_DIG__ + +/* Minimum int x such that FLT_RADIX**(x-1) is a normalized float, emin */ +#undef FLT_MIN_EXP +#undef DBL_MIN_EXP +#undef LDBL_MIN_EXP +#define FLT_MIN_EXP __FLT_MIN_EXP__ +#define DBL_MIN_EXP __DBL_MIN_EXP__ +#define LDBL_MIN_EXP __LDBL_MIN_EXP__ + +/* Minimum negative integer such that 10 raised to that power is in the + range of normalized floating-point numbers, + + ceil(log10(b) * (emin - 1)) +*/ +#undef FLT_MIN_10_EXP +#undef DBL_MIN_10_EXP +#undef LDBL_MIN_10_EXP +#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ +#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ +#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ + +/* Maximum int x such that FLT_RADIX**(x-1) is a representable float, emax. */ +#undef FLT_MAX_EXP +#undef DBL_MAX_EXP +#undef LDBL_MAX_EXP +#define FLT_MAX_EXP __FLT_MAX_EXP__ +#define DBL_MAX_EXP __DBL_MAX_EXP__ +#define LDBL_MAX_EXP __LDBL_MAX_EXP__ + +/* Maximum integer such that 10 raised to that power is in the range of + representable finite floating-point numbers, + + floor(log10((1 - b**-p) * b**emax)) +*/ +#undef FLT_MAX_10_EXP +#undef DBL_MAX_10_EXP +#undef LDBL_MAX_10_EXP +#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ +#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ +#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ + +/* Maximum representable finite floating-point number, + + (1 - b**-p) * b**emax +*/ +#undef FLT_MAX +#undef DBL_MAX +#undef LDBL_MAX +#define FLT_MAX __FLT_MAX__ +#define DBL_MAX __DBL_MAX__ +#define LDBL_MAX __LDBL_MAX__ + +/* The difference between 1 and the least value greater than 1 that is + representable in the given floating point type, b**1-p. */ +#undef FLT_EPSILON +#undef DBL_EPSILON +#undef LDBL_EPSILON +#define FLT_EPSILON __FLT_EPSILON__ +#define DBL_EPSILON __DBL_EPSILON__ +#define LDBL_EPSILON __LDBL_EPSILON__ + +/* Minimum normalized positive floating-point number, b**(emin - 1). */ +#undef FLT_MIN +#undef DBL_MIN +#undef LDBL_MIN +#define FLT_MIN __FLT_MIN__ +#define DBL_MIN __DBL_MIN__ +#define LDBL_MIN __LDBL_MIN__ + +/* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown. */ +/* ??? This is supposed to change with calls to fesetround in . */ +#undef FLT_ROUNDS +#define FLT_ROUNDS 1 + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +/* The floating-point expression evaluation method. + -1 indeterminate + 0 evaluate all operations and constants just to the range and + precision of the type + 1 evaluate operations and constants of type float and double + to the range and precision of the double type, evaluate + long double operations and constants to the range and + precision of the long double type + 2 evaluate all operations and constants to the range and + precision of the long double type + + ??? This ought to change with the setting of the fp control word; + the value provided by the compiler assumes the widest setting. */ +#undef FLT_EVAL_METHOD +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ + +/* Number of decimal digits, n, such that any floating-point number in the + widest supported floating type with pmax radix b digits can be rounded + to a floating-point number with n decimal digits and back again without + change to the value, + + pmax * log10(b) if b is a power of 10 + ceil(1 + pmax * log10(b)) otherwise +*/ +#undef DECIMAL_DIG +#define DECIMAL_DIG __DECIMAL_DIG__ + +#endif /* C99 */ + +#ifdef __STDC_WANT_DEC_FP__ +/* Draft Technical Report 24732, extension for decimal floating-point + arithmetic: Characteristic of decimal floating types . */ + +/* Number of base-FLT_RADIX digits in the significand, p. */ +#undef DEC32_MANT_DIG +#undef DEC64_MANT_DIG +#undef DEC128_MANT_DIG +#define DEC32_MANT_DIG __DEC32_MANT_DIG__ +#define DEC64_MANT_DIG __DEC64_MANT_DIG__ +#define DEC128_MANT_DIG __DEC128_MANT_DIG__ + +/* Minimum exponent. */ +#undef DEC32_MIN_EXP +#undef DEC64_MIN_EXP +#undef DEC128_MIN_EXP +#define DEC32_MIN_EXP __DEC32_MIN_EXP__ +#define DEC64_MIN_EXP __DEC64_MIN_EXP__ +#define DEC128_MIN_EXP __DEC128_MIN_EXP__ + +/* Maximum exponent. */ +#undef DEC32_MAX_EXP +#undef DEC64_MAX_EXP +#undef DEC128_MAX_EXP +#define DEC32_MAX_EXP __DEC32_MAX_EXP__ +#define DEC64_MAX_EXP __DEC64_MAX_EXP__ +#define DEC128_MAX_EXP __DEC128_MAX_EXP__ + +/* Maximum representable finite decimal floating-point number + (there are 6, 15, and 33 9s after the decimal points respectively). */ +#undef DEC32_MAX +#undef DEC64_MAX +#undef DEC128_MAX +#define DEC32_MAX __DEC32_MAX__ +#define DEC64_MAX __DEC64_MAX__ +#define DEC128_MAX __DEC128_MAX__ + +/* The difference between 1 and the least value greater than 1 that is + representable in the given floating point type. */ +#undef DEC32_EPSILON +#undef DEC64_EPSILON +#undef DEC128_EPSILON +#define DEC32_EPSILON __DEC32_EPSILON__ +#define DEC64_EPSILON __DEC64_EPSILON__ +#define DEC128_EPSILON __DEC128_EPSILON__ + +/* Minimum normalized positive floating-point number. */ +#undef DEC32_MIN +#undef DEC64_MIN +#undef DEC128_MIN +#define DEC32_MIN __DEC32_MIN__ +#define DEC64_MIN __DEC64_MIN__ +#define DEC128_MIN __DEC128_MIN__ + +/* Minimum denormalized positive floating-point number. */ +#undef DEC32_DEN +#undef DEC64_DEN +#undef DEC128_DEN +#define DEC32_DEN __DEC32_DEN__ +#define DEC64_DEN __DEC64_DEN__ +#define DEC128_DEN __DEC128_DEN__ + +/* The floating-point expression evaluation method. + -1 indeterminate + 0 evaluate all operations and constants just to the range and + precision of the type + 1 evaluate operations and constants of type _Decimal32 + and _Decimal64 to the range and precision of the _Decimal64 + type, evaluate _Decimal128 operations and constants to the + range and precision of the _Decimal128 type; + 2 evaluate all operations and constants to the range and + precision of the _Decimal128 type. */ + +#undef DECFLT_EVAL_METHOD +#define DECFLT_EVAL_METHOD __DECFLT_EVAL_METHOD__ + +#endif /* __STDC_WANT_DEC_FP__ */ + +#endif /* _FLOAT_H___ */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/iso646.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/iso646.h new file mode 100644 index 0000000..445d372 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/iso646.h @@ -0,0 +1,48 @@ +/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.9 Alternative spellings + */ + +#ifndef _ISO646_H +#define _ISO646_H + +#ifndef __cplusplus +#define and && +#define and_eq &= +#define bitand & +#define bitor | +#define compl ~ +#define not ! +#define not_eq != +#define or || +#define or_eq |= +#define xor ^ +#define xor_eq ^= +#endif + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/NXConstStr.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/NXConstStr.h new file mode 100644 index 0000000..3f408d3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/NXConstStr.h @@ -0,0 +1,52 @@ +/* Interface for the NXConstantString class for Objective-C. + Copyright (C) 1995, 2004 Free Software Foundation, Inc. + Contributed by Pieter J. Schoenmakers + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +GCC is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files + compiled with GCC to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +#ifndef __nxconstantstring_INCLUDE_GNU +#define __nxconstantstring_INCLUDE_GNU + +#include "Object.h" + +#ifdef __cplusplus +extern "C" { +#endif + +@interface NXConstantString: Object +{ + char *c_string; + unsigned int len; +} + +-(const char *) cString; +-(unsigned int) length; + +@end + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/Object.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/Object.h new file mode 100644 index 0000000..7b67f46 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/Object.h @@ -0,0 +1,132 @@ +/* Interface for the Object class for Objective-C. + Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +GCC is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files compiled + with GCC to produce an executable, this does not cause the resulting + executable to be covered by the GNU General Public License. This + exception does not however invalidate any other reasons why the + executable file might be covered by the GNU General Public License. */ + +#ifndef __object_INCLUDE_GNU +#define __object_INCLUDE_GNU + +#include "objc.h" +#include "typedstream.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * All classes are derived from Object. As such, + * this is the overhead tacked onto those objects. + */ +@interface Object +{ + Class isa; /* A pointer to the instance's class structure */ +} + + /* Initializing classes and instances */ ++ initialize; +- init; + + /* Creating, freeing, and copying instances */ ++ new; ++ alloc; +- free; +- copy; +- shallowCopy; +- deepen; +- deepCopy; + + /* Identifying classes */ +- (Class)class; +- (Class)superClass; +- (MetaClass)metaClass; +- (const char *)name; + + /* Identifying and comparing objects */ +- self; +- (unsigned int)hash; +- (BOOL)isEqual:anObject; +- (int)compare:anotherObject; + + /* Testing object type */ +- (BOOL)isMetaClass; +- (BOOL)isClass; +- (BOOL)isInstance; + + /* Testing inheritance relationships */ +- (BOOL)isKindOf:(Class)aClassObject; +- (BOOL)isMemberOf:(Class)aClassObject; +- (BOOL)isKindOfClassNamed:(const char *)aClassName; +- (BOOL)isMemberOfClassNamed:(const char *)aClassName; + + /* Testing class functionality */ ++ (BOOL)instancesRespondTo:(SEL)aSel; +- (BOOL)respondsTo:(SEL)aSel; + + /* Testing protocol conformance */ +- (BOOL)conformsTo:(Protocol*)aProtocol; + + /* Introspection */ ++ (IMP)instanceMethodFor:(SEL)aSel; +- (IMP)methodFor:(SEL)aSel; ++ (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel; +- (struct objc_method_description *)descriptionForMethod:(SEL)aSel; + + /* Sending messages determined at run time */ +- perform:(SEL)aSel; +- perform:(SEL)aSel with:anObject; +- perform:(SEL)aSel with:anObject1 with:anObject2; + + /* Forwarding */ +- (retval_t)forward:(SEL)aSel :(arglist_t)argFrame; +- (retval_t)performv:(SEL)aSel :(arglist_t)argFrame; + + /* Posing */ ++ poseAs:(Class)aClassObject; +- (Class)transmuteClassTo:(Class)aClassObject; + + /* Enforcing intentions */ +- subclassResponsibility:(SEL)aSel; +- notImplemented:(SEL)aSel; +- shouldNotImplement:(SEL)aSel; + + /* Error handling */ +- doesNotRecognize:(SEL)aSel; +- error:(const char *)aString, ...; + + /* Archiving */ ++ (int)version; ++ setVersion:(int)aVersion; ++ (int)streamVersion: (TypedStream*)aStream; + +- read: (TypedStream*)aStream; +- write: (TypedStream*)aStream; +- awake; + +@end + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/Protocol.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/Protocol.h new file mode 100644 index 0000000..fe0f28a --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/Protocol.h @@ -0,0 +1,63 @@ +/* Declare the class Protocol for Objective C programs. + Copyright (C) 1993, 2004 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files + compiled with GCC to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +#ifndef __Protocol_INCLUDE_GNU +#define __Protocol_INCLUDE_GNU + +#include "Object.h" + +#ifdef __cplusplus +extern "C" { +#endif + +@interface Protocol : Object +{ +@private + char *protocol_name; + struct objc_protocol_list *protocol_list; + struct objc_method_description_list *instance_methods, *class_methods; +} + +/* Obtaining attributes intrinsic to the protocol */ + +- (const char *)name; + +/* Testing protocol conformance */ + +- (BOOL) conformsTo: (Protocol *)aProtocolObject; + +/* Looking up information specific to a protocol */ + +- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel; +- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel; + +@end + +#ifdef __cplusplus +} +#endif + +#endif /* not __Protocol_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/encoding.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/encoding.h new file mode 100644 index 0000000..c432ee9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/encoding.h @@ -0,0 +1,107 @@ +/* Encoding of types for Objective C. + Copyright (C) 1993, 1997, 2002, 2004 Free Software Foundation, Inc. + +Author: Kresten Krab Thorup + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files + compiled with GCC to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +#ifndef __encoding_INCLUDE_GNU +#define __encoding_INCLUDE_GNU + +#include "objc-api.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define _C_CONST 'r' +#define _C_IN 'n' +#define _C_INOUT 'N' +#define _C_OUT 'o' +#define _C_BYCOPY 'O' +#define _C_BYREF 'R' +#define _C_ONEWAY 'V' +#define _C_GCINVISIBLE '!' + +#define _F_CONST 0x01 +#define _F_IN 0x01 +#define _F_OUT 0x02 +#define _F_INOUT 0x03 +#define _F_BYCOPY 0x04 +#define _F_BYREF 0x08 +#define _F_ONEWAY 0x10 +#define _F_GCINVISIBLE 0x20 + +int objc_aligned_size (const char *type); +int objc_sizeof_type (const char *type); +int objc_alignof_type (const char *type); +int objc_aligned_size (const char *type); +int objc_promoted_size (const char *type); + +const char *objc_skip_type_qualifiers (const char *type); +const char *objc_skip_typespec (const char *type); +const char *objc_skip_offset (const char *type); +const char *objc_skip_argspec (const char *type); +int method_get_number_of_arguments (struct objc_method *); +int method_get_sizeof_arguments (struct objc_method *); + +char *method_get_first_argument (struct objc_method *, + arglist_t argframe, + const char **type); +char *method_get_next_argument (arglist_t argframe, + const char **type); +char *method_get_nth_argument (struct objc_method *m, + arglist_t argframe, + int arg, + const char **type); + +unsigned objc_get_type_qualifiers (const char *type); + + +struct objc_struct_layout +{ + const char *original_type; + const char *type; + const char *prev_type; + unsigned int record_size; + unsigned int record_align; +}; + +void objc_layout_structure (const char *type, + struct objc_struct_layout *layout); +BOOL objc_layout_structure_next_member (struct objc_struct_layout *layout); +void objc_layout_finish_structure (struct objc_struct_layout *layout, + unsigned int *size, + unsigned int *align); +void objc_layout_structure_get_info (struct objc_struct_layout *layout, + unsigned int *offset, + unsigned int *align, + const char **type); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __encoding_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/hash.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/hash.h new file mode 100644 index 0000000..b1cdd0c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/hash.h @@ -0,0 +1,216 @@ +/* Hash tables for Objective C method dispatch. + Copyright (C) 1993, 1995, 1996, 2004 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files + compiled with GCC to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + + +#ifndef __hash_INCLUDE_GNU +#define __hash_INCLUDE_GNU + +#include +#include +#include "objc.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* + * This data structure is used to hold items + * stored in a hash table. Each node holds + * a key/value pair. + * + * Items in the cache are really of type void *. + */ +typedef struct cache_node +{ + struct cache_node *next; /* Pointer to next entry on the list. + NULL indicates end of list. */ + const void *key; /* Key used to locate the value. Used + to locate value when more than one + key computes the same hash + value. */ + void *value; /* Value stored for the key. */ +} *node_ptr; + + +/* + * This data type is the function that computes a hash code given a key. + * Therefore, the key can be a pointer to anything and the function specific + * to the key type. + * + * Unfortunately there is a mutual data structure reference problem with this + * typedef. Therefore, to remove compiler warnings the functions passed to + * objc_hash_new will have to be casted to this type. + */ +typedef unsigned int (*hash_func_type) (void *, const void *); + +/* + * This data type is the function that compares two hash keys and returns an + * integer greater than, equal to, or less than 0, according as the first + * parameter is lexicographically greater than, equal to, or less than the + * second. + */ + +typedef int (*compare_func_type) (const void *, const void *); + + +/* + * This data structure is the cache. + * + * It must be passed to all of the hashing routines + * (except for new). + */ +typedef struct cache +{ + /* Variables used to implement the hash itself. */ + node_ptr *node_table; /* Pointer to an array of hash nodes. */ + /* Variables used to track the size of the hash table so to determine + when to resize it. */ + unsigned int size; /* Number of buckets allocated for the hash table + (number of array entries allocated for + "node_table"). Must be a power of two. */ + unsigned int used; /* Current number of entries in the hash table. */ + unsigned int mask; /* Precomputed mask. */ + + /* Variables used to implement indexing through the hash table. */ + + unsigned int last_bucket; /* Tracks which entry in the array where + the last value was returned. */ + /* Function used to compute a hash code given a key. + This function is specified when the hash table is created. */ + hash_func_type hash_func; + /* Function used to compare two hash keys to see if they are equal. */ + compare_func_type compare_func; +} *cache_ptr; + + +/* Two important hash tables. */ +extern cache_ptr module_hash_table, class_hash_table; + +/* Allocate and initialize a hash table. */ + +cache_ptr objc_hash_new (unsigned int size, + hash_func_type hash_func, + compare_func_type compare_func); + +/* Deallocate all of the hash nodes and the cache itself. */ + +void objc_hash_delete (cache_ptr cache); + +/* Add the key/value pair to the hash table. If the + hash table reaches a level of fullness then it will be resized. + + assert if the key is already in the hash. */ + +void objc_hash_add (cache_ptr *cachep, const void *key, void *value); + +/* Remove the key/value pair from the hash table. + assert if the key isn't in the table. */ + +void objc_hash_remove (cache_ptr cache, const void *key); + +/* Used to index through the hash table. Start with NULL + to get the first entry. + + Successive calls pass the value returned previously. + ** Don't modify the hash during this operation *** + + Cache nodes are returned such that key or value can + be extracted. */ + +node_ptr objc_hash_next (cache_ptr cache, node_ptr node); + +/* Used to return a value from a hash table using a given key. */ + +void *objc_hash_value_for_key (cache_ptr cache, const void *key); + +/* Used to determine if the given key exists in the hash table */ + +BOOL objc_hash_is_key_in_hash (cache_ptr cache, const void *key); + +/************************************************ + + Useful hashing functions. + + Declared inline for your pleasure. + +************************************************/ + +/* Calculate a hash code by performing some + manipulation of the key pointer. (Use the lowest bits + except for those likely to be 0 due to alignment.) */ + +static inline unsigned int +objc_hash_ptr (cache_ptr cache, const void *key) +{ + return ((size_t)key / sizeof (void *)) & cache->mask; +} + + +/* Calculate a hash code by iterating over a NULL + terminate string. */ +static inline unsigned int +objc_hash_string (cache_ptr cache, const void *key) +{ + unsigned int ret = 0; + unsigned int ctr = 0; + const char *ckey = (const char *) key; + + while (*ckey) { + ret ^= *ckey++ << ctr; + ctr = (ctr + 1) % sizeof (void *); + } + + return ret & cache->mask; +} + + +/* Compare two pointers for equality. */ +static inline int +objc_compare_ptrs (const void *k1, const void *k2) +{ + return (k1 == k2); +} + + +/* Compare two strings. */ +static inline int +objc_compare_strings (const void *k1, const void *k2) +{ + if (k1 == k2) + return 1; + else if (k1 == 0 || k2 == 0) + return 0; + else + return ! strcmp ((const char *) k1, (const char *) k2); +} + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* not __hash_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-api.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-api.h new file mode 100644 index 0000000..8100c6c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-api.h @@ -0,0 +1,619 @@ +/* GNU Objective-C Runtime API. + Copyright (C) 1993, 1995, 1996, 1997, 2002, 2004 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +GCC is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files compiled + with GCC to produce an executable, this does not cause the resulting + executable to be covered by the GNU General Public License. This + exception does not however invalidate any other reasons why the + executable file might be covered by the GNU General Public License. */ + +#ifndef __objc_api_INCLUDE_GNU +#define __objc_api_INCLUDE_GNU + +#include "objc.h" +#include "hash.h" +#include "thr.h" +#include "objc-decls.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* For functions which return Method_t */ +#define METHOD_NULL (Method_t)0 + /* Boolean typedefs */ +/* Method descriptor returned by introspective Object methods. + This is really just the first part of the more complete objc_method + structure defined below and used internally by the runtime. */ +struct objc_method_description +{ + SEL name; /* this is a selector, not a string */ + char *types; /* type encoding */ +}; + +/* Filer types used to describe Ivars and Methods. */ +#define _C_ID '@' +#define _C_CLASS '#' +#define _C_SEL ':' +#define _C_CHR 'c' +#define _C_UCHR 'C' +#define _C_SHT 's' +#define _C_USHT 'S' +#define _C_INT 'i' +#define _C_UINT 'I' +#define _C_LNG 'l' +#define _C_ULNG 'L' +#define _C_LNG_LNG 'q' +#define _C_ULNG_LNG 'Q' +#define _C_FLT 'f' +#define _C_DBL 'd' +#define _C_BFLD 'b' +#define _C_BOOL 'B' +#define _C_VOID 'v' +#define _C_UNDEF '?' +#define _C_PTR '^' +#define _C_CHARPTR '*' +#define _C_ATOM '%' +#define _C_ARY_B '[' +#define _C_ARY_E ']' +#define _C_UNION_B '(' +#define _C_UNION_E ')' +#define _C_STRUCT_B '{' +#define _C_STRUCT_E '}' +#define _C_VECTOR '!' +#define _C_COMPLEX 'j' + + +/* Error handling + + Call objc_error() or objc_verror() to record an error; this error + routine will generally exit the program but not necessarily if the + user has installed his own error handler. + + Call objc_set_error_handler to assign your own function for + handling errors. The function should return YES if it is ok + to continue execution, or return NO or just abort if the + program should be stopped. The default error handler is just to + print a message on stderr. + + The error handler function should be of type objc_error_handler + The first parameter is an object instance of relevance. + The second parameter is an error code. + The third parameter is a format string in the printf style. + The fourth parameter is a variable list of arguments. */ +extern void objc_error(id object, int code, const char* fmt, ...); +extern void objc_verror(id object, int code, const char* fmt, va_list ap); +typedef BOOL (*objc_error_handler)(id, int code, const char *fmt, va_list ap); +extern objc_error_handler objc_set_error_handler(objc_error_handler func); + +/* Error codes + These are used by the runtime library, and your + error handling may use them to determine if the error is + hard or soft thus whether execution can continue or abort. */ +#define OBJC_ERR_UNKNOWN 0 /* Generic error */ + +#define OBJC_ERR_OBJC_VERSION 1 /* Incorrect runtime version */ +#define OBJC_ERR_GCC_VERSION 2 /* Incorrect compiler version */ +#define OBJC_ERR_MODULE_SIZE 3 /* Bad module size */ +#define OBJC_ERR_PROTOCOL_VERSION 4 /* Incorrect protocol version */ + +#define OBJC_ERR_MEMORY 10 /* Out of memory */ + +#define OBJC_ERR_RECURSE_ROOT 20 /* Attempt to archive the root + object more than once. */ +#define OBJC_ERR_BAD_DATA 21 /* Didn't read expected data */ +#define OBJC_ERR_BAD_KEY 22 /* Bad key for object */ +#define OBJC_ERR_BAD_CLASS 23 /* Unknown class */ +#define OBJC_ERR_BAD_TYPE 24 /* Bad type specification */ +#define OBJC_ERR_NO_READ 25 /* Cannot read stream */ +#define OBJC_ERR_NO_WRITE 26 /* Cannot write stream */ +#define OBJC_ERR_STREAM_VERSION 27 /* Incorrect stream version */ +#define OBJC_ERR_BAD_OPCODE 28 /* Bad opcode */ + +#define OBJC_ERR_UNIMPLEMENTED 30 /* Method is not implemented */ + +#define OBJC_ERR_BAD_STATE 40 /* Bad thread state */ + +/* Set this variable nonzero to print a line describing each + message that is sent. (this is currently disabled) */ +extern BOOL objc_trace; + + +/* For every class which happens to have statically allocated instances in + this module, one OBJC_STATIC_INSTANCES is allocated by the compiler. + INSTANCES is NULL terminated and points to all statically allocated + instances of this class. */ +struct objc_static_instances +{ + char *class_name; +#ifdef __cplusplus + id instances[1]; +#else + id instances[0]; +#endif +}; + +/* Whereas a Module (defined further down) is the root (typically) of a file, + a Symtab is the root of the class and category definitions within the + module. + + A Symtab contains a variable length array of pointers to classes and + categories defined in the module. */ +typedef struct objc_symtab { + unsigned long sel_ref_cnt; /* Unknown. */ + SEL refs; /* Unknown. */ + unsigned short cls_def_cnt; /* Number of classes compiled + (defined) in the module. */ + unsigned short cat_def_cnt; /* Number of categories + compiled (defined) in the + module. */ + + void *defs[1]; /* Variable array of pointers. + cls_def_cnt of type Class + followed by cat_def_cnt of + type Category_t, followed + by a NULL terminated array + of objc_static_instances. */ +} Symtab, *Symtab_t; + + +/* +** The compiler generates one of these structures for each module that +** composes the executable (eg main.m). +** +** This data structure is the root of the definition tree for the module. +** +** A collect program runs between ld stages and creates a ObjC ctor array. +** That array holds a pointer to each module structure of the executable. +*/ +typedef struct objc_module { + unsigned long version; /* Compiler revision. */ + unsigned long size; /* sizeof(Module). */ + const char* name; /* Name of the file where the + module was generated. The + name includes the path. */ + + Symtab_t symtab; /* Pointer to the Symtab of + the module. The Symtab + holds an array of + pointers to + the classes and categories + defined in the module. */ +} Module, *Module_t; + + +/* +** The compiler generates one of these structures for a class that has +** instance variables defined in its specification. +*/ +typedef struct objc_ivar { + const char* ivar_name; /* Name of the instance + variable as entered in the + class definition. */ + const char* ivar_type; /* Description of the Ivar's + type. Useful for + debuggers. */ + int ivar_offset; /* Byte offset from the base + address of the instance + structure to the variable. */ +} *Ivar_t; + +typedef struct objc_ivar_list { + int ivar_count; /* Number of structures (Ivar) + contained in the list. One + structure per instance + variable defined in the + class. */ + struct objc_ivar ivar_list[1]; /* Variable length + structure. */ +} IvarList, *IvarList_t; + + +/* +** The compiler generates one (or more) of these structures for a class that +** has methods defined in its specification. +** +** The implementation of a class can be broken into separate pieces in a file +** and categories can break them across modules. To handle this problem is a +** singly linked list of methods. +*/ +typedef struct objc_method { + SEL method_name; /* This variable is the method's + name. It is a char*. + The unique integer passed to + objc_msg_send is a char* too. + It is compared against + method_name using strcmp. */ + const char* method_types; /* Description of the method's + parameter list. Useful for + debuggers. */ + IMP method_imp; /* Address of the method in the + executable. */ +} Method, *Method_t; + +typedef struct objc_method_list { + struct objc_method_list* method_next; /* This variable is used to link + a method list to another. It + is a singly linked list. */ + int method_count; /* Number of methods defined in + this structure. */ + Method method_list[1]; /* Variable length + structure. */ +} MethodList, *MethodList_t; + +struct objc_protocol_list { + struct objc_protocol_list *next; + size_t count; + Protocol *list[1]; +}; + +/* +** This is used to assure consistent access to the info field of +** classes +*/ +#ifndef HOST_BITS_PER_LONG +#define HOST_BITS_PER_LONG (sizeof(long)*8) +#endif + +#define __CLS_INFO(cls) ((cls)->info) +#define __CLS_ISINFO(cls, mask) ((__CLS_INFO(cls)&mask)==mask) +#define __CLS_SETINFO(cls, mask) (__CLS_INFO(cls) |= mask) + +/* The structure is of type MetaClass */ +#define _CLS_META 0x2L +#define CLS_ISMETA(cls) ((cls)&&__CLS_ISINFO(cls, _CLS_META)) + + +/* The structure is of type Class */ +#define _CLS_CLASS 0x1L +#define CLS_ISCLASS(cls) ((cls)&&__CLS_ISINFO(cls, _CLS_CLASS)) + +/* +** The class is initialized within the runtime. This means that +** it has had correct super and sublinks assigned +*/ +#define _CLS_RESOLV 0x8L +#define CLS_ISRESOLV(cls) __CLS_ISINFO(cls, _CLS_RESOLV) +#define CLS_SETRESOLV(cls) __CLS_SETINFO(cls, _CLS_RESOLV) + +/* +** The class has been send a +initialize message or a such is not +** defined for this class +*/ +#define _CLS_INITIALIZED 0x04L +#define CLS_ISINITIALIZED(cls) __CLS_ISINFO(cls, _CLS_INITIALIZED) +#define CLS_SETINITIALIZED(cls) __CLS_SETINFO(cls, _CLS_INITIALIZED) + +/* +** The class number of this class. This must be the same for both the +** class and its meta class object +*/ +#define CLS_GETNUMBER(cls) (__CLS_INFO(cls) >> (HOST_BITS_PER_LONG/2)) +#define CLS_SETNUMBER(cls, num) \ + ({ (cls)->info <<= (HOST_BITS_PER_LONG/2); \ + (cls)->info >>= (HOST_BITS_PER_LONG/2); \ + __CLS_SETINFO(cls, (((unsigned long)num) << (HOST_BITS_PER_LONG/2))); }) + +/* +** The compiler generates one of these structures for each category. A class +** may have many categories and contain both instance and factory methods. +*/ +typedef struct objc_category { + const char* category_name; /* Name of the category. Name + contained in the () of the + category definition. */ + const char* class_name; /* Name of the class to which + the category belongs. */ + MethodList_t instance_methods; /* Linked list of instance + methods defined in the + category. NULL indicates no + instance methods defined. */ + MethodList_t class_methods; /* Linked list of factory + methods defined in the + category. NULL indicates no + class methods defined. */ + struct objc_protocol_list *protocols; /* List of Protocols + conformed to */ +} Category, *Category_t; + +/* +** Structure used when a message is send to a class's super class. The +** compiler generates one of these structures and passes it to +** objc_msg_super. +*/ +typedef struct objc_super { + id self; /* Id of the object sending + the message. */ +#ifdef __cplusplus + Class super_class; +#else + Class class; /* Object's super class. */ +#endif +} Super, *Super_t; + +IMP objc_msg_lookup_super(Super_t super, SEL sel); + +retval_t objc_msg_sendv(id, SEL, arglist_t); + + + +/* +** This is a hook which is called by objc_lookup_class and +** objc_get_class if the runtime is not able to find the class. +** This may e.g. try to load in the class using dynamic loading. +** The function is guaranteed to be passed a non-NULL name string. +*/ +objc_EXPORT Class (*_objc_lookup_class)(const char *name); + +/* +** This is a hook which is called by __objc_exec_class every time a class +** or a category is loaded into the runtime. This may e.g. help a +** dynamic loader determine the classes that have been loaded when +** an object file is dynamically linked in. +*/ +objc_EXPORT void (*_objc_load_callback)(Class _class, Category* category); + +/* +** Hook functions for allocating, copying and disposing of instances +*/ +objc_EXPORT id (*_objc_object_alloc)(Class _class); +objc_EXPORT id (*_objc_object_copy)(id object); +objc_EXPORT id (*_objc_object_dispose)(id object); + +/* +** Standard functions for memory allocation and disposal. +** Users should use these functions in their ObjC programs so +** that they work properly with garbage collectors as well as +** can take advantage of the exception/error handling available. +*/ +void * +objc_malloc(size_t size); + +void * +objc_atomic_malloc(size_t size); + +void * +objc_valloc(size_t size); + +void * +objc_realloc(void *mem, size_t size); + +void * +objc_calloc(size_t nelem, size_t size); + +void +objc_free(void *mem); + +/* +** Hook functions for memory allocation and disposal. +** This makes it easy to substitute garbage collection systems +** such as Boehm's GC by assigning these function pointers +** to the GC's allocation routines. By default these point +** to the ANSI standard malloc, realloc, free, etc. +** +** Users should call the normal objc routines above for +** memory allocation and disposal within their programs. +*/ +objc_EXPORT void *(*_objc_malloc)(size_t); +objc_EXPORT void *(*_objc_atomic_malloc)(size_t); +objc_EXPORT void *(*_objc_valloc)(size_t); +objc_EXPORT void *(*_objc_realloc)(void *, size_t); +objc_EXPORT void *(*_objc_calloc)(size_t, size_t); +objc_EXPORT void (*_objc_free)(void *); + +/* +** Hooks for method forwarding. This makes it easy to substitute a +** library, such as ffcall, that implements closures, thereby avoiding +** gcc's __builtin_apply problems. __objc_msg_forward2's result will +** be preferred over that of __objc_msg_forward if both are set and +** return non-NULL. +*/ +objc_EXPORT IMP (*__objc_msg_forward)(SEL); +objc_EXPORT IMP (*__objc_msg_forward2)(id, SEL); + +Method_t class_get_class_method(MetaClass _class, SEL aSel); + +Method_t class_get_instance_method(Class _class, SEL aSel); + +Class class_pose_as(Class impostor, Class superclass); + +Class objc_get_class(const char *name); + +Class objc_lookup_class(const char *name); + +Class objc_next_class(void **enum_state); + +const char *sel_get_name(SEL selector); + +const char *sel_get_type(SEL selector); + +SEL sel_get_uid(const char *name); + +SEL sel_get_any_uid(const char *name); + +SEL sel_get_any_typed_uid(const char *name); + +SEL sel_get_typed_uid(const char *name, const char*); + +SEL sel_register_name(const char *name); + +SEL sel_register_typed_name(const char *name, const char*type); + + +BOOL sel_is_mapped (SEL aSel); + +extern id class_create_instance(Class _class); + +static inline const char * +class_get_class_name(Class _class) +{ + return CLS_ISCLASS(_class)?_class->name:((_class==Nil)?"Nil":0); +} + +static inline long +class_get_instance_size(Class _class) +{ + return CLS_ISCLASS(_class)?_class->instance_size:0; +} + +static inline MetaClass +class_get_meta_class(Class _class) +{ + return CLS_ISCLASS(_class)?_class->class_pointer:Nil; +} + +static inline Class +class_get_super_class(Class _class) +{ + return CLS_ISCLASS(_class)?_class->super_class:Nil; +} + +static inline int +class_get_version(Class _class) +{ + return CLS_ISCLASS(_class)?_class->version:-1; +} + +static inline BOOL +class_is_class(Class _class) +{ + return CLS_ISCLASS(_class); +} + +static inline BOOL +class_is_meta_class(Class _class) +{ + return CLS_ISMETA(_class); +} + + +static inline void +class_set_version(Class _class, long version) +{ + if (CLS_ISCLASS(_class)) + _class->version = version; +} + +static inline void * +class_get_gc_object_type (Class _class) +{ + return CLS_ISCLASS(_class) ? _class->gc_object_type : NULL; +} + +/* Mark the instance variable as innaccessible to the garbage collector */ +extern void class_ivar_set_gcinvisible (Class _class, + const char* ivarname, + BOOL gcInvisible); + +static inline IMP +method_get_imp(Method_t method) +{ + return (method!=METHOD_NULL)?method->method_imp:(IMP)0; +} + +IMP get_imp (Class _class, SEL sel); + +/* Redefine on NeXTSTEP so as not to conflict with system function */ +#ifdef __NeXT__ +#define object_copy gnu_object_copy +#define object_dispose gnu_object_dispose +#endif + +id object_copy(id object); + +id object_dispose(id object); + +static inline Class +object_get_class(id object) +{ + return ((object!=nil) + ? (CLS_ISCLASS(object->class_pointer) + ? object->class_pointer + : (CLS_ISMETA(object->class_pointer) + ? (Class)object + : Nil)) + : Nil); +} + +static inline const char * +object_get_class_name(id object) +{ + return ((object!=nil)?(CLS_ISCLASS(object->class_pointer) + ?object->class_pointer->name + :((Class)object)->name) + :"Nil"); +} + +static inline MetaClass +object_get_meta_class(id object) +{ + return ((object!=nil)?(CLS_ISCLASS(object->class_pointer) + ?object->class_pointer->class_pointer + :(CLS_ISMETA(object->class_pointer) + ?object->class_pointer + :Nil)) + :Nil); +} + +static inline Class +object_get_super_class +(id object) +{ + return ((object!=nil)?(CLS_ISCLASS(object->class_pointer) + ?object->class_pointer->super_class + :(CLS_ISMETA(object->class_pointer) + ?((Class)object)->super_class + :Nil)) + :Nil); +} + +static inline BOOL +object_is_class (id object) +{ + return ((object != nil) && CLS_ISMETA (object->class_pointer)); +} + +static inline BOOL +object_is_instance (id object) +{ + return ((object != nil) && CLS_ISCLASS (object->class_pointer)); +} + +static inline BOOL +object_is_meta_class (id object) +{ + return ((object != nil) + && !object_is_instance (object) + && !object_is_class (object)); +} + +struct sarray* +objc_get_uninstalled_dtable(void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* not __objc_api_INCLUDE_GNU */ + + + diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-decls.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-decls.h new file mode 100644 index 0000000..52938a2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-decls.h @@ -0,0 +1,47 @@ +/* GNU Objective-C Extern helpers for Win32. + Copyright (C) 2004 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +GCC is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files compiled + with GCC to produce an executable, this does not cause the resulting + executable to be covered by the GNU General Public License. This + exception does not however invalidate any other reasons why the + executable file might be covered by the GNU General Public License. */ + +#ifndef __objc_decls_INCLUDE_GNU +#define __objc_decls_INCLUDE_GNU + +#if defined (_WIN32) || defined (__WIN32__) || defined (WIN32) + +# ifdef DLL_EXPORT /* defined by libtool (if required) */ +# define objc_EXPORT __declspec(dllexport) +# define objc_DECLARE __declspec(dllexport) +#else +# define objc_EXPORT extern __declspec(dllimport) +# define objc_DECLARE extern __declspec(dllimport) +#endif + +#else + +# define objc_EXPORT extern +# define objc_DECLARE + +#endif + +#endif /* __objc_decls_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-list.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-list.h new file mode 100644 index 0000000..8708461 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc-list.h @@ -0,0 +1,156 @@ +/* Generic single linked list to keep various information + Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc. + Contributed by Kresten Krab Thorup. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files compiled with + GCC to produce an executable, this does not cause the resulting executable + to be covered by the GNU General Public License. This exception does not + however invalidate any other reasons why the executable file might be + covered by the GNU General Public License. */ + +#ifndef __GNU_OBJC_LIST_H +#define __GNU_OBJC_LIST_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +struct objc_list { + void *head; + struct objc_list *tail; +}; + +/* Return a cons cell produced from (head . tail) */ + +static inline struct objc_list* +list_cons(void* head, struct objc_list* tail) +{ + struct objc_list* cell; + + cell = (struct objc_list*)objc_malloc(sizeof(struct objc_list)); + cell->head = head; + cell->tail = tail; + return cell; +} + +/* Return the length of a list, list_length(NULL) returns zero */ + +static inline int +list_length(struct objc_list* list) +{ + int i = 0; + while(list) + { + i += 1; + list = list->tail; + } + return i; +} + +/* Return the Nth element of LIST, where N count from zero. If N + larger than the list length, NULL is returned */ + +static inline void* +list_nth(int indx, struct objc_list* list) +{ + while(indx-- != 0) + { + if(list->tail) + list = list->tail; + else + return 0; + } + return list->head; +} + +/* Remove the element at the head by replacing it by its successor */ + +static inline void +list_remove_head(struct objc_list** list) +{ + if ((*list)->tail) + { + struct objc_list* tail = (*list)->tail; /* fetch next */ + *(*list) = *tail; /* copy next to list head */ + objc_free(tail); /* free next */ + } + else /* only one element in list */ + { + objc_free(*list); + (*list) = 0; + } +} + + +/* Remove the element with `car' set to ELEMENT */ + +static inline void +list_remove_elem(struct objc_list** list, void* elem) +{ + while (*list) { + if ((*list)->head == elem) + list_remove_head(list); + list = &((*list)->tail); + } +} + +/* Map FUNCTION over all elements in LIST */ + +static inline void +list_mapcar(struct objc_list* list, void(*function)(void*)) +{ + while(list) + { + (*function)(list->head); + list = list->tail; + } +} + +/* Return element that has ELEM as car */ + +static inline struct objc_list** +list_find(struct objc_list** list, void* elem) +{ + while(*list) + { + if ((*list)->head == elem) + return list; + list = &((*list)->tail); + } + return NULL; +} + +/* Free list (backwards recursive) */ + +static inline void +list_free(struct objc_list* list) +{ + if(list) + { + list_free(list->tail); + objc_free(list); + } +} + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* not __GNU_OBJC_LIST_H */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc.h new file mode 100644 index 0000000..ee7612c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/objc.h @@ -0,0 +1,165 @@ +/* Basic data types for Objective C. + Copyright (C) 1993, 1995, 1996, 2004 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files + compiled with GCC to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +#ifndef __objc_INCLUDE_GNU +#define __objc_INCLUDE_GNU + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* +** Definition of the boolean type. +*/ +#ifdef __vxworks +typedef int BOOL; +#else +typedef unsigned char BOOL; +#endif +#define YES (BOOL)1 +#define NO (BOOL)0 + +/* +** Definition of a selector. Selectors themselves are not unique, but +** the sel_id is a unique identifier. +*/ +typedef const struct objc_selector +{ + void *sel_id; + const char *sel_types; +} *SEL; + +inline static BOOL +sel_eq (SEL s1, SEL s2) +{ + if (s1 == 0 || s2 == 0) + return s1 == s2; + else + return s1->sel_id == s2->sel_id; +} + + +/* +** ObjC uses this typedef for untyped instances. +*/ +typedef struct objc_object { + struct objc_class* class_pointer; +} *id; + +/* +** Definition of method type. When retrieving the implementation of a +** method, this is type of the pointer returned. The idea of the +** definition of IMP is to represent a 'pointer to a general function +** taking an id, a SEL, followed by other unspecified arguments'. You +** must always cast an IMP to a pointer to a function taking the +** appropriate, specific types for that function, before calling it - +** to make sure the appropriate arguments are passed to it. The code +** generated by the compiler to perform method calls automatically +** does this cast inside method calls. +*/ +typedef id (*IMP)(id, SEL, ...); + +/* +** More simple types... +*/ +#define nil (id)0 /* id of Nil instance */ +#define Nil (Class)0 /* id of Nil class */ +typedef char *STR; /* String alias */ + +/* +** The compiler generates one of these structures for each class. +** +** This structure is the definition for classes. +** +** This structure is generated by the compiler in the executable and used by +** the run-time during normal messaging operations. Therefore some members +** change type. The compiler generates "char* const" and places a string in +** the following member variables: super_class. +*/ +typedef struct objc_class *MetaClass; +typedef struct objc_class *Class; +struct objc_class { + MetaClass class_pointer; /* Pointer to the class's + meta class. */ + struct objc_class* super_class; /* Pointer to the super + class. NULL for class + Object. */ + const char* name; /* Name of the class. */ + long version; /* Unknown. */ + unsigned long info; /* Bit mask. See class masks + defined above. */ + long instance_size; /* Size in bytes of the class. + The sum of the class + definition and all super + class definitions. */ + struct objc_ivar_list* ivars; /* Pointer to a structure that + describes the instance + variables in the class + definition. NULL indicates + no instance variables. Does + not include super class + variables. */ + struct objc_method_list* methods; /* Linked list of instance + methods defined for the + class. */ + struct sarray * dtable; /* Pointer to instance + method dispatch table. */ + struct objc_class* subclass_list; /* Subclasses */ + struct objc_class* sibling_class; + + struct objc_protocol_list *protocols; /* Protocols conformed to */ + void* gc_object_type; +}; + +#ifndef __OBJC__ +typedef struct objc_protocol { + struct objc_class* class_pointer; + char *protocol_name; + struct objc_protocol_list *protocol_list; + struct objc_method_description_list *instance_methods, *class_methods; +} Protocol; + +#else /* __OBJC__ */ +@class Protocol; +#endif + +typedef void* retval_t; /* return value */ +typedef void(*apply_t)(void); /* function pointer */ +typedef union arglist { + char *arg_ptr; + char arg_regs[sizeof (char*)]; +} *arglist_t; /* argument frame */ + + +IMP objc_msg_lookup(id receiver, SEL op); + +#ifdef __cplusplus +} +#endif + +#endif /* not __objc_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/sarray.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/sarray.h new file mode 100644 index 0000000..fe66b2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/sarray.h @@ -0,0 +1,244 @@ +/* Sparse Arrays for Objective C dispatch tables + Copyright (C) 1993, 1995, 1996, 2004 Free Software Foundation, Inc. + Contributed by Kresten Krab Thorup. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files + compiled with GCC to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +#ifndef __sarray_INCLUDE_GNU +#define __sarray_INCLUDE_GNU + +#include "thr.h" + +#define OBJC_SPARSE2 /* 2-level sparse array */ +/* #define OBJC_SPARSE3 */ /* 3-level sparse array */ + +#ifdef OBJC_SPARSE2 +extern const char* __objc_sparse2_id; +#endif + +#ifdef OBJC_SPARSE3 +extern const char* __objc_sparse3_id; +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +extern int nbuckets; /* for stats */ +extern int nindices; +extern int narrays; +extern int idxsize; + +/* An unsigned integer of same size as a pointer */ +#define SIZET_BITS (sizeof(size_t)*8) + +#if defined(__sparc__) || defined(OBJC_SPARSE2) +#define PRECOMPUTE_SELECTORS +#endif + +#ifdef OBJC_SPARSE3 + +/* Buckets are 8 words each */ +#define BUCKET_BITS 3 +#define BUCKET_SIZE (1< + indices[x.off.ioffset]-> + buckets[x.off.boffset]-> + elems[x.off.eoffset]; +#else /* OBJC_SPARSE2 */ + return array->buckets[x.off.boffset]->elems[x.off.eoffset]; +#endif /* OBJC_SPARSE2 */ +#else /* not PRECOMPUTE_SELECTORS */ +#ifdef OBJC_SPARSE3 + return array-> + indices[indx/INDEX_CAPACITY]-> + buckets[(indx/BUCKET_SIZE)%INDEX_SIZE]-> + elems[indx%BUCKET_SIZE]; +#else /* OBJC_SPARSE2 */ + return array->buckets[indx/BUCKET_SIZE]->elems[indx%BUCKET_SIZE]; +#endif /* not OBJC_SPARSE3 */ +#endif /* not PRECOMPUTE_SELECTORS */ +} + +static inline void* sarray_get_safe(struct sarray* array, sidx indx) +{ + if(soffset_decode(indx) < array->capacity) + return sarray_get(array, indx); + else + return (array->empty_bucket->elems[0]); +} + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __sarray_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/thr.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/thr.h new file mode 100644 index 0000000..c139926 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/thr.h @@ -0,0 +1,153 @@ +/* Thread and mutex controls for Objective C. + Copyright (C) 1996, 1997, 2002, 2004 Free Software Foundation, Inc. + Contributed by Galen C. Hunt (gchunt@cs.rochester.edu) + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +GCC is free software; you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation; either version 2, or (at your option) any later version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +details. + +You should have received a copy of the GNU General Public License along with +GCC; see the file COPYING. If not, write to the Free Software +Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files + compiled with GCC to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + + +#ifndef __thread_INCLUDE_GNU +#define __thread_INCLUDE_GNU + +#include "objc.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/************************************************************************* + * Universal static variables: + */ +extern int __objc_thread_exit_status; /* Global exit status. */ + +/******** + * Thread safe implementation types and functions. + */ + +/* Thread priorities */ +#define OBJC_THREAD_INTERACTIVE_PRIORITY 2 +#define OBJC_THREAD_BACKGROUND_PRIORITY 1 +#define OBJC_THREAD_LOW_PRIORITY 0 + +/* A thread */ +typedef void * objc_thread_t; + +/* This structure represents a single mutual exclusion lock. */ +struct objc_mutex +{ + volatile objc_thread_t owner; /* Id of thread that owns. */ + volatile int depth; /* # of acquires. */ + void * backend; /* Specific to backend */ +}; +typedef struct objc_mutex *objc_mutex_t; + +/* This structure represents a single condition mutex */ +struct objc_condition +{ + void * backend; /* Specific to backend */ +}; +typedef struct objc_condition *objc_condition_t; + +/* Frontend mutex functions */ +objc_mutex_t objc_mutex_allocate (void); +int objc_mutex_deallocate (objc_mutex_t mutex); +int objc_mutex_lock (objc_mutex_t mutex); +int objc_mutex_unlock (objc_mutex_t mutex); +int objc_mutex_trylock (objc_mutex_t mutex); + +/* Frontend condition mutex functions */ +objc_condition_t objc_condition_allocate (void); +int objc_condition_deallocate (objc_condition_t condition); +int objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex); +int objc_condition_signal (objc_condition_t condition); +int objc_condition_broadcast (objc_condition_t condition); + +/* Frontend thread functions */ +objc_thread_t objc_thread_detach (SEL selector, id object, id argument); +void objc_thread_yield (void); +int objc_thread_exit (void); +int objc_thread_set_priority (int priority); +int objc_thread_get_priority (void); +void * objc_thread_get_data (void); +int objc_thread_set_data (void *value); +objc_thread_t objc_thread_id (void); +void objc_thread_add (void); +void objc_thread_remove (void); + +/* + Use this to set the hook function that will be called when the + runtime initially becomes multi threaded. + The hook function is only called once, meaning only when the + 2nd thread is spawned, not for each and every thread. + + It returns the previous hook function or NULL if there is none. + + A program outside of the runtime could set this to some function so + it can be informed; for example, the GNUstep Base Library sets it + so it can implement the NSBecomingMultiThreaded notification. + */ +typedef void (*objc_thread_callback) (void); +objc_thread_callback objc_set_thread_callback (objc_thread_callback func); + +/* Backend initialization functions */ +int __objc_init_thread_system (void); +int __objc_fini_thread_system (void); + +/* Backend mutex functions */ +int __objc_mutex_allocate (objc_mutex_t mutex); +int __objc_mutex_deallocate (objc_mutex_t mutex); +int __objc_mutex_lock (objc_mutex_t mutex); +int __objc_mutex_trylock (objc_mutex_t mutex); +int __objc_mutex_unlock (objc_mutex_t mutex); + +/* Backend condition mutex functions */ +int __objc_condition_allocate (objc_condition_t condition); +int __objc_condition_deallocate (objc_condition_t condition); +int __objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex); +int __objc_condition_broadcast (objc_condition_t condition); +int __objc_condition_signal (objc_condition_t condition); + +/* Backend thread functions */ +objc_thread_t __objc_thread_detach (void (*func) (void *arg), void *arg); +int __objc_thread_set_priority (int priority); +int __objc_thread_get_priority (void); +void __objc_thread_yield (void); +int __objc_thread_exit (void); +objc_thread_t __objc_thread_id (void); +int __objc_thread_set_data (void *value); +void * __objc_thread_get_data (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* not __thread_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/typedstream.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/typedstream.h new file mode 100644 index 0000000..3a5e0b3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/objc/typedstream.h @@ -0,0 +1,141 @@ +/* GNU Objective-C Typed Streams interface. + Copyright (C) 1993, 1995, 2004 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +GCC is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you link this library with files compiled + with GCC to produce an executable, this does not cause the resulting + executable to be covered by the GNU General Public License. This + exception does not however invalidate any other reasons why the + executable file might be covered by the GNU General Public License. */ + +#ifndef __typedstream_INCLUDE_GNU +#define __typedstream_INCLUDE_GNU + +#include "objc.h" +#include "hash.h" + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef int (*objc_typed_read_func)(void*, char*, int); +typedef int (*objc_typed_write_func)(void*, const char*, int); +typedef int (*objc_typed_flush_func)(void*); +typedef int (*objc_typed_eof_func)(void*); + +#define OBJC_READONLY 0x01 +#define OBJC_WRITEONLY 0x02 + +#define OBJC_MANAGED_STREAM 0x01 +#define OBJC_FILE_STREAM 0x02 +#define OBJC_MEMORY_STREAM 0x04 + +#define OBJC_TYPED_STREAM_VERSION 0x01 + +typedef struct objc_typed_stream { + void* physical; + cache_ptr object_table; /* read/written objects */ + cache_ptr stream_table; /* other read/written but shared things.. */ + cache_ptr class_table; /* class version mapping */ + cache_ptr object_refs; /* forward references */ + int mode; /* OBJC_READONLY or OBJC_WRITEONLY */ + int type; /* MANAGED, FILE, MEMORY etc bit string */ + int version; /* version used when writing */ + int writing_root_p; + objc_typed_read_func read; + objc_typed_write_func write; + objc_typed_eof_func eof; + objc_typed_flush_func flush; +} TypedStream; + +/* opcode masks */ +#define _B_VALUE 0x1fU +#define _B_CODE 0xe0U +#define _B_SIGN 0x10U +#define _B_NUMBER 0x0fU + +/* standard opcodes */ +#define _B_INVALID 0x00U +#define _B_SINT 0x20U +#define _B_NINT 0x40U +#define _B_SSTR 0x60U +#define _B_NSTR 0x80U +#define _B_RCOMM 0xa0U +#define _B_UCOMM 0xc0U +#define _B_EXT 0xe0U + +/* eXtension opcodes */ +#define _BX_OBJECT 0x00U +#define _BX_CLASS 0x01U +#define _BX_SEL 0x02U +#define _BX_OBJREF 0x03U +#define _BX_OBJROOT 0x04U +#define _BX_EXT 0x1fU + +/* +** Read and write objects as specified by TYPE. All the `last' +** arguments are pointers to the objects to read/write. +*/ + +int objc_write_type (TypedStream* stream, const char* type, const void* data); +int objc_read_type (TypedStream* stream, const char* type, void* data); + +int objc_write_types (TypedStream* stream, const char* type, ...); +int objc_read_types (TypedStream* stream, const char* type, ...); + +int objc_write_object_reference (TypedStream* stream, id object); +int objc_write_root_object (TypedStream* stream, id object); + +long objc_get_stream_class_version (TypedStream* stream, Class class_type); + + +/* +** Convenience functions +*/ + +int objc_write_array (TypedStream* stream, const char* type, + int count, const void* data); +int objc_read_array (TypedStream* stream, const char* type, + int count, void* data); + +int objc_write_object (TypedStream* stream, id object); +int objc_read_object (TypedStream* stream, id* object); + + + +/* +** Open a typed stream for reading or writing. MODE may be either of +** OBJC_READONLY or OBJC_WRITEONLY. +*/ + +TypedStream* objc_open_typed_stream (FILE* physical, int mode); +TypedStream* objc_open_typed_stream_for_file (const char* file_name, int mode); + +void objc_close_typed_stream (TypedStream* stream); + +BOOL objc_end_of_typed_stream (TypedStream* stream); +void objc_flush_typed_stream (TypedStream* stream); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* not __typedstream_INCLUDE_GNU */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdarg.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdarg.h new file mode 100644 index 0000000..c9ddd6b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdarg.h @@ -0,0 +1,133 @@ +/* Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.15 Variable arguments + */ + +#ifndef _STDARG_H +#ifndef _ANSI_STDARG_H_ +#ifndef __need___va_list +#define _STDARG_H +#define _ANSI_STDARG_H_ +#endif /* not __need___va_list */ +#undef __need___va_list + +/* Define __gnuc_va_list. */ + +#ifndef __GNUC_VA_LIST +#define __GNUC_VA_LIST +typedef __builtin_va_list __gnuc_va_list; +#endif + +/* Define the standard macros for the user, + if this invocation was from the user program. */ +#ifdef _STDARG_H + +#define va_start(v,l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v,l) __builtin_va_arg(v,l) +#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L +#define va_copy(d,s) __builtin_va_copy(d,s) +#endif +#define __va_copy(d,s) __builtin_va_copy(d,s) + +/* Define va_list, if desired, from __gnuc_va_list. */ +/* We deliberately do not define va_list when called from + stdio.h, because ANSI C says that stdio.h is not supposed to define + va_list. stdio.h needs to have access to that data type, + but must not use that name. It should use the name __gnuc_va_list, + which is safe because it is reserved for the implementation. */ + +#ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ +#undef _VA_LIST +#endif + +#ifdef _BSD_VA_LIST +#undef _BSD_VA_LIST +#endif + +#if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) +/* SVR4.2 uses _VA_LIST for an internal alias for va_list, + so we must avoid testing it and setting it here. + SVR4 uses _VA_LIST as a flag in stdarg.h, but we should + have no conflict with that. */ +#ifndef _VA_LIST_ +#define _VA_LIST_ +#ifdef __i860__ +#ifndef _VA_LIST +#define _VA_LIST va_list +#endif +#endif /* __i860__ */ +typedef __gnuc_va_list va_list; +#ifdef _SCO_DS +#define __VA_LIST +#endif +#endif /* _VA_LIST_ */ +#else /* not __svr4__ || _SCO_DS */ + +/* The macro _VA_LIST_ is the same thing used by this file in Ultrix. + But on BSD NET2 we must not test or define or undef it. + (Note that the comments in NET 2's ansi.h + are incorrect for _VA_LIST_--see stdio.h!) */ +#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) +/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ +#ifndef _VA_LIST_DEFINED +/* The macro _VA_LIST is used in SCO Unix 3.2. */ +#ifndef _VA_LIST +/* The macro _VA_LIST_T_H is used in the Bull dpx2 */ +#ifndef _VA_LIST_T_H +/* The macro __va_list__ is used by BeOS. */ +#ifndef __va_list__ +typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ +#endif /* not _VA_LIST_T_H */ +#endif /* not _VA_LIST */ +#endif /* not _VA_LIST_DEFINED */ +#if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) +#define _VA_LIST_ +#endif +#ifndef _VA_LIST +#define _VA_LIST +#endif +#ifndef _VA_LIST_DEFINED +#define _VA_LIST_DEFINED +#endif +#ifndef _VA_LIST_T_H +#define _VA_LIST_T_H +#endif +#ifndef __va_list__ +#define __va_list__ +#endif + +#endif /* not _VA_LIST_, except on certain systems */ + +#endif /* not __svr4__ */ + +#endif /* _STDARG_H */ + +#endif /* not _ANSI_STDARG_H_ */ +#endif /* not _STDARG_H */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdbool.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdbool.h new file mode 100644 index 0000000..b36e650 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdbool.h @@ -0,0 +1,53 @@ +/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.16 Boolean type and values + */ + +#ifndef _STDBOOL_H +#define _STDBOOL_H + +#ifndef __cplusplus + +#define bool _Bool +#define true 1 +#define false 0 + +#else /* __cplusplus */ + +/* Supporting in C++ is a GCC extension. */ +#define _Bool bool +#define bool bool +#define false false +#define true true + +#endif /* __cplusplus */ + +/* Signal that all the definitions are present. */ +#define __bool_true_false_are_defined 1 + +#endif /* stdbool.h */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stddef.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stddef.h new file mode 100644 index 0000000..7e61795 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stddef.h @@ -0,0 +1,419 @@ +/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002, 2004 + Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.17 Common definitions + */ +#if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \ + && !defined(__STDDEF_H__)) \ + || defined(__need_wchar_t) || defined(__need_size_t) \ + || defined(__need_ptrdiff_t) || defined(__need_NULL) \ + || defined(__need_wint_t) + +/* Any one of these symbols __need_* means that GNU libc + wants us just to define one data type. So don't define + the symbols that indicate this file's entire job has been done. */ +#if (!defined(__need_wchar_t) && !defined(__need_size_t) \ + && !defined(__need_ptrdiff_t) && !defined(__need_NULL) \ + && !defined(__need_wint_t)) +#define _STDDEF_H +#define _STDDEF_H_ +/* snaroff@next.com says the NeXT needs this. */ +#define _ANSI_STDDEF_H +/* Irix 5.1 needs this. */ +#define __STDDEF_H__ +#endif + +#ifndef __sys_stdtypes_h +/* This avoids lossage on SunOS but only if stdtypes.h comes first. + There's no way to win with the other order! Sun lossage. */ + +/* On 4.3bsd-net2, make sure ansi.h is included, so we have + one less case to deal with in the following. */ +#if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__) +#include +#endif +/* On FreeBSD 5, machine/ansi.h does not exist anymore... */ +#if defined (__FreeBSD__) && (__FreeBSD__ >= 5) +#include +#endif + +/* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are + defined if the corresponding type is *not* defined. + FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_ */ +#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) +#if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_) +#define _SIZE_T +#endif +#if !defined(_PTRDIFF_T_) && !defined(_BSD_PTRDIFF_T_) +#define _PTRDIFF_T +#endif +/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_ + instead of _WCHAR_T_. */ +#if !defined(_WCHAR_T_) && !defined(_BSD_WCHAR_T_) +#ifndef _BSD_WCHAR_T_ +#define _WCHAR_T +#endif +#endif +/* Undef _FOO_T_ if we are supposed to define foo_t. */ +#if defined (__need_ptrdiff_t) || defined (_STDDEF_H_) +#undef _PTRDIFF_T_ +#undef _BSD_PTRDIFF_T_ +#endif +#if defined (__need_size_t) || defined (_STDDEF_H_) +#undef _SIZE_T_ +#undef _BSD_SIZE_T_ +#endif +#if defined (__need_wchar_t) || defined (_STDDEF_H_) +#undef _WCHAR_T_ +#undef _BSD_WCHAR_T_ +#endif +#endif /* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) */ + +/* Sequent's header files use _PTRDIFF_T_ in some conflicting way. + Just ignore it. */ +#if defined (__sequent__) && defined (_PTRDIFF_T_) +#undef _PTRDIFF_T_ +#endif + +/* On VxWorks, may have defined macros like + _TYPE_size_t which will typedef size_t. fixincludes patched the + vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is + not defined, and so that defining this macro defines _GCC_SIZE_T. + If we find that the macros are still defined at this point, we must + invoke them so that the type is defined as expected. */ +#if defined (_TYPE_ptrdiff_t) && (defined (__need_ptrdiff_t) || defined (_STDDEF_H_)) +_TYPE_ptrdiff_t; +#undef _TYPE_ptrdiff_t +#endif +#if defined (_TYPE_size_t) && (defined (__need_size_t) || defined (_STDDEF_H_)) +_TYPE_size_t; +#undef _TYPE_size_t +#endif +#if defined (_TYPE_wchar_t) && (defined (__need_wchar_t) || defined (_STDDEF_H_)) +_TYPE_wchar_t; +#undef _TYPE_wchar_t +#endif + +/* In case nobody has defined these types, but we aren't running under + GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and + __WCHAR_TYPE__ have reasonable values. This can happen if the + parts of GCC is compiled by an older compiler, that actually + include gstddef.h, such as collect2. */ + +/* Signed type of difference of two pointers. */ + +/* Define this type if we are doing the whole job, + or if we want this type in particular. */ +#if defined (_STDDEF_H) || defined (__need_ptrdiff_t) +#ifndef _PTRDIFF_T /* in case has defined it. */ +#ifndef _T_PTRDIFF_ +#ifndef _T_PTRDIFF +#ifndef __PTRDIFF_T +#ifndef _PTRDIFF_T_ +#ifndef _BSD_PTRDIFF_T_ +#ifndef ___int_ptrdiff_t_h +#ifndef _GCC_PTRDIFF_T +#define _PTRDIFF_T +#define _T_PTRDIFF_ +#define _T_PTRDIFF +#define __PTRDIFF_T +#define _PTRDIFF_T_ +#define _BSD_PTRDIFF_T_ +#define ___int_ptrdiff_t_h +#define _GCC_PTRDIFF_T +#ifndef __PTRDIFF_TYPE__ +#define __PTRDIFF_TYPE__ long int +#endif +typedef __PTRDIFF_TYPE__ ptrdiff_t; +#endif /* _GCC_PTRDIFF_T */ +#endif /* ___int_ptrdiff_t_h */ +#endif /* _BSD_PTRDIFF_T_ */ +#endif /* _PTRDIFF_T_ */ +#endif /* __PTRDIFF_T */ +#endif /* _T_PTRDIFF */ +#endif /* _T_PTRDIFF_ */ +#endif /* _PTRDIFF_T */ + +/* If this symbol has done its job, get rid of it. */ +#undef __need_ptrdiff_t + +#endif /* _STDDEF_H or __need_ptrdiff_t. */ + +/* Unsigned type of `sizeof' something. */ + +/* Define this type if we are doing the whole job, + or if we want this type in particular. */ +#if defined (_STDDEF_H) || defined (__need_size_t) +#ifndef __size_t__ /* BeOS */ +#ifndef __SIZE_T__ /* Cray Unicos/Mk */ +#ifndef _SIZE_T /* in case has defined it. */ +#ifndef _SYS_SIZE_T_H +#ifndef _T_SIZE_ +#ifndef _T_SIZE +#ifndef __SIZE_T +#ifndef _SIZE_T_ +#ifndef _BSD_SIZE_T_ +#ifndef _SIZE_T_DEFINED_ +#ifndef _SIZE_T_DEFINED +#ifndef _BSD_SIZE_T_DEFINED_ /* Darwin */ +#ifndef _SIZE_T_DECLARED /* FreeBSD 5 */ +#ifndef ___int_size_t_h +#ifndef _GCC_SIZE_T +#ifndef _SIZET_ +#ifndef __size_t +#define __size_t__ /* BeOS */ +#define __SIZE_T__ /* Cray Unicos/Mk */ +#define _SIZE_T +#define _SYS_SIZE_T_H +#define _T_SIZE_ +#define _T_SIZE +#define __SIZE_T +#define _SIZE_T_ +#define _BSD_SIZE_T_ +#define _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED +#define _BSD_SIZE_T_DEFINED_ /* Darwin */ +#define _SIZE_T_DECLARED /* FreeBSD 5 */ +#define ___int_size_t_h +#define _GCC_SIZE_T +#define _SIZET_ +#if defined (__FreeBSD__) && (__FreeBSD__ >= 5) +/* __size_t is a typedef on FreeBSD 5!, must not trash it. */ +#else +#define __size_t +#endif +#ifndef __SIZE_TYPE__ +#define __SIZE_TYPE__ long unsigned int +#endif +#if !(defined (__GNUG__) && defined (size_t)) +typedef __SIZE_TYPE__ size_t; +#ifdef __BEOS__ +typedef long ssize_t; +#endif /* __BEOS__ */ +#endif /* !(defined (__GNUG__) && defined (size_t)) */ +#endif /* __size_t */ +#endif /* _SIZET_ */ +#endif /* _GCC_SIZE_T */ +#endif /* ___int_size_t_h */ +#endif /* _SIZE_T_DECLARED */ +#endif /* _BSD_SIZE_T_DEFINED_ */ +#endif /* _SIZE_T_DEFINED */ +#endif /* _SIZE_T_DEFINED_ */ +#endif /* _BSD_SIZE_T_ */ +#endif /* _SIZE_T_ */ +#endif /* __SIZE_T */ +#endif /* _T_SIZE */ +#endif /* _T_SIZE_ */ +#endif /* _SYS_SIZE_T_H */ +#endif /* _SIZE_T */ +#endif /* __SIZE_T__ */ +#endif /* __size_t__ */ +#undef __need_size_t +#endif /* _STDDEF_H or __need_size_t. */ + + +/* Wide character type. + Locale-writers should change this as necessary to + be big enough to hold unique values not between 0 and 127, + and not (wchar_t) -1, for each defined multibyte character. */ + +/* Define this type if we are doing the whole job, + or if we want this type in particular. */ +#if defined (_STDDEF_H) || defined (__need_wchar_t) +#ifndef __wchar_t__ /* BeOS */ +#ifndef __WCHAR_T__ /* Cray Unicos/Mk */ +#ifndef _WCHAR_T +#ifndef _T_WCHAR_ +#ifndef _T_WCHAR +#ifndef __WCHAR_T +#ifndef _WCHAR_T_ +#ifndef _BSD_WCHAR_T_ +#ifndef _BSD_WCHAR_T_DEFINED_ /* Darwin */ +#ifndef _BSD_RUNE_T_DEFINED_ /* Darwin */ +#ifndef _WCHAR_T_DECLARED /* FreeBSD 5 */ +#ifndef _WCHAR_T_DEFINED_ +#ifndef _WCHAR_T_DEFINED +#ifndef _WCHAR_T_H +#ifndef ___int_wchar_t_h +#ifndef __INT_WCHAR_T_H +#ifndef _GCC_WCHAR_T +#define __wchar_t__ /* BeOS */ +#define __WCHAR_T__ /* Cray Unicos/Mk */ +#define _WCHAR_T +#define _T_WCHAR_ +#define _T_WCHAR +#define __WCHAR_T +#define _WCHAR_T_ +#define _BSD_WCHAR_T_ +#define _WCHAR_T_DEFINED_ +#define _WCHAR_T_DEFINED +#define _WCHAR_T_H +#define ___int_wchar_t_h +#define __INT_WCHAR_T_H +#define _GCC_WCHAR_T +#define _WCHAR_T_DECLARED + +/* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_ + instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other + symbols in the _FOO_T_ family, stays defined even after its + corresponding type is defined). If we define wchar_t, then we + must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if + we undef _WCHAR_T_, then we must also define rune_t, since + headers like runetype.h assume that if machine/ansi.h is included, + and _BSD_WCHAR_T_ is not defined, then rune_t is available. + machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of + the same type." */ +#ifdef _BSD_WCHAR_T_ +#undef _BSD_WCHAR_T_ +#ifdef _BSD_RUNE_T_ +#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE) +typedef _BSD_RUNE_T_ rune_t; +#define _BSD_WCHAR_T_DEFINED_ +#define _BSD_RUNE_T_DEFINED_ /* Darwin */ +#if defined (__FreeBSD__) && (__FreeBSD__ < 5) +/* Why is this file so hard to maintain properly? In contrast to + the comment above regarding BSD/386 1.1, on FreeBSD for as long + as the symbol has existed, _BSD_RUNE_T_ must not stay defined or + redundant typedefs will occur when stdlib.h is included after this file. */ +#undef _BSD_RUNE_T_ +#endif +#endif +#endif +#endif +/* FreeBSD 5 can't be handled well using "traditional" logic above + since it no longer defines _BSD_RUNE_T_ yet still desires to export + rune_t in some cases... */ +#if defined (__FreeBSD__) && (__FreeBSD__ >= 5) +#if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE) +#if __BSD_VISIBLE +#ifndef _RUNE_T_DECLARED +typedef __rune_t rune_t; +#define _RUNE_T_DECLARED +#endif +#endif +#endif +#endif + +#ifndef __WCHAR_TYPE__ +#define __WCHAR_TYPE__ int +#endif +#ifndef __cplusplus +typedef __WCHAR_TYPE__ wchar_t; +#endif +#endif +#endif +#endif +#endif +#endif +#endif +#endif /* _WCHAR_T_DECLARED */ +#endif /* _BSD_RUNE_T_DEFINED_ */ +#endif +#endif +#endif +#endif +#endif +#endif +#endif +#endif /* __WCHAR_T__ */ +#endif /* __wchar_t__ */ +#undef __need_wchar_t +#endif /* _STDDEF_H or __need_wchar_t. */ + +#if defined (__need_wint_t) +#ifndef _WINT_T +#define _WINT_T + +#ifndef __WINT_TYPE__ +#define __WINT_TYPE__ unsigned int +#endif +typedef __WINT_TYPE__ wint_t; +#endif +#undef __need_wint_t +#endif + +/* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc. + are already defined. */ +/* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */ +#if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) +/* The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_ + are probably typos and should be removed before 2.8 is released. */ +#ifdef _GCC_PTRDIFF_T_ +#undef _PTRDIFF_T_ +#undef _BSD_PTRDIFF_T_ +#endif +#ifdef _GCC_SIZE_T_ +#undef _SIZE_T_ +#undef _BSD_SIZE_T_ +#endif +#ifdef _GCC_WCHAR_T_ +#undef _WCHAR_T_ +#undef _BSD_WCHAR_T_ +#endif +/* The following ones are the real ones. */ +#ifdef _GCC_PTRDIFF_T +#undef _PTRDIFF_T_ +#undef _BSD_PTRDIFF_T_ +#endif +#ifdef _GCC_SIZE_T +#undef _SIZE_T_ +#undef _BSD_SIZE_T_ +#endif +#ifdef _GCC_WCHAR_T +#undef _WCHAR_T_ +#undef _BSD_WCHAR_T_ +#endif +#endif /* _ANSI_H_ || _MACHINE_ANSI_H_ */ + +#endif /* __sys_stdtypes_h */ + +/* A null pointer constant. */ + +#if defined (_STDDEF_H) || defined (__need_NULL) +#undef NULL /* in case has defined it. */ +#ifdef __GNUG__ +#define NULL __null +#else /* G++ */ +#ifndef __cplusplus +#define NULL ((void *)0) +#else /* C++ */ +#define NULL 0 +#endif /* C++ */ +#endif /* G++ */ +#endif /* NULL not defined and or need NULL. */ +#undef __need_NULL + +#ifdef _STDDEF_H + +/* Offset of member MEMBER in a struct of type TYPE. */ +#define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER) + +#endif /* _STDDEF_H was defined this time */ + +#endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__ + || __need_XXX was not defined before */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdfix.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdfix.h new file mode 100644 index 0000000..5e7cb2e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/stdfix.h @@ -0,0 +1,207 @@ +/* Copyright (C) 2007 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* ISO/IEC JTC1 SC22 WG14 N1169 + * Date: 2006-04-04 + * ISO/IEC TR 18037 + * Programming languages - C - Extensions to support embedded processors + */ + +#ifndef _STDFIX_H +#define _STDFIX_H + +/* 7.18a.1 Introduction. */ + +#undef fract +#undef accum +#undef sat +#define fract _Fract +#define accum _Accum +#define sat _Sat + +/* 7.18a.3 Precision macros. */ + +#undef SFRACT_FBIT +#undef SFRACT_MIN +#undef SFRACT_MAX +#undef SFRACT_EPSILON +#define SFRACT_FBIT __SFRACT_FBIT__ +#define SFRACT_MIN __SFRACT_MIN__ +#define SFRACT_MAX __SFRACT_MAX__ +#define SFRACT_EPSILON __SFRACT_EPSILON__ + +#undef USFRACT_FBIT +#undef USFRACT_MIN +#undef USFRACT_MAX +#undef USFRACT_EPSILON +#define USFRACT_FBIT __USFRACT_FBIT__ +#define USFRACT_MIN __USFRACT_MIN__ /* GCC extension. */ +#define USFRACT_MAX __USFRACT_MAX__ +#define USFRACT_EPSILON __USFRACT_EPSILON__ + +#undef FRACT_FBIT +#undef FRACT_MIN +#undef FRACT_MAX +#undef FRACT_EPSILON +#define FRACT_FBIT __FRACT_FBIT__ +#define FRACT_MIN __FRACT_MIN__ +#define FRACT_MAX __FRACT_MAX__ +#define FRACT_EPSILON __FRACT_EPSILON__ + +#undef UFRACT_FBIT +#undef UFRACT_MIN +#undef UFRACT_MAX +#undef UFRACT_EPSILON +#define UFRACT_FBIT __UFRACT_FBIT__ +#define UFRACT_MIN __UFRACT_MIN__ /* GCC extension. */ +#define UFRACT_MAX __UFRACT_MAX__ +#define UFRACT_EPSILON __UFRACT_EPSILON__ + +#undef LFRACT_FBIT +#undef LFRACT_MIN +#undef LFRACT_MAX +#undef LFRACT_EPSILON +#define LFRACT_FBIT __LFRACT_FBIT__ +#define LFRACT_MIN __LFRACT_MIN__ +#define LFRACT_MAX __LFRACT_MAX__ +#define LFRACT_EPSILON __LFRACT_EPSILON__ + +#undef ULFRACT_FBIT +#undef ULFRACT_MIN +#undef ULFRACT_MAX +#undef ULFRACT_EPSILON +#define ULFRACT_FBIT __ULFRACT_FBIT__ +#define ULFRACT_MIN __ULFRACT_MIN__ /* GCC extension. */ +#define ULFRACT_MAX __ULFRACT_MAX__ +#define ULFRACT_EPSILON __ULFRACT_EPSILON__ + +#undef LLFRACT_FBIT +#undef LLFRACT_MIN +#undef LLFRACT_MAX +#undef LLFRACT_EPSILON +#define LLFRACT_FBIT __LLFRACT_FBIT__ /* GCC extension. */ +#define LLFRACT_MIN __LLFRACT_MIN__ /* GCC extension. */ +#define LLFRACT_MAX __LLFRACT_MAX__ /* GCC extension. */ +#define LLFRACT_EPSILON __LLFRACT_EPSILON__ /* GCC extension. */ + +#undef ULLFRACT_FBIT +#undef ULLFRACT_MIN +#undef ULLFRACT_MAX +#undef ULLFRACT_EPSILON +#define ULLFRACT_FBIT __ULLFRACT_FBIT__ /* GCC extension. */ +#define ULLFRACT_MIN __ULLFRACT_MIN__ /* GCC extension. */ +#define ULLFRACT_MAX __ULLFRACT_MAX__ /* GCC extension. */ +#define ULLFRACT_EPSILON __ULLFRACT_EPSILON__ /* GCC extension. */ + +#undef SACCUM_FBIT +#undef SACCUM_IBIT +#undef SACCUM_MIN +#undef SACCUM_MAX +#undef SACCUM_EPSILON +#define SACCUM_FBIT __SACCUM_FBIT__ +#define SACCUM_IBIT __SACCUM_IBIT__ +#define SACCUM_MIN __SACCUM_MIN__ +#define SACCUM_MAX __SACCUM_MAX__ +#define SACCUM_EPSILON __SACCUM_EPSILON__ + +#undef USACCUM_FBIT +#undef USACCUM_IBIT +#undef USACCUM_MIN +#undef USACCUM_MAX +#undef USACCUM_EPSILON +#define USACCUM_FBIT __USACCUM_FBIT__ +#define USACCUM_IBIT __USACCUM_IBIT__ +#define USACCUM_MIN __USACCUM_MIN__ /* GCC extension. */ +#define USACCUM_MAX __USACCUM_MAX__ +#define USACCUM_EPSILON __USACCUM_EPSILON__ + +#undef ACCUM_FBIT +#undef ACCUM_IBIT +#undef ACCUM_MIN +#undef ACCUM_MAX +#undef ACCUM_EPSILON +#define ACCUM_FBIT __ACCUM_FBIT__ +#define ACCUM_IBIT __ACCUM_IBIT__ +#define ACCUM_MIN __ACCUM_MIN__ +#define ACCUM_MAX __ACCUM_MAX__ +#define ACCUM_EPSILON __ACCUM_EPSILON__ + +#undef UACCUM_FBIT +#undef UACCUM_IBIT +#undef UACCUM_MIN +#undef UACCUM_MAX +#undef UACCUM_EPSILON +#define UACCUM_FBIT __UACCUM_FBIT__ +#define UACCUM_IBIT __UACCUM_IBIT__ +#define UACCUM_MIN __UACCUM_MIN__ /* GCC extension. */ +#define UACCUM_MAX __UACCUM_MAX__ +#define UACCUM_EPSILON __UACCUM_EPSILON__ + +#undef LACCUM_FBIT +#undef LACCUM_IBIT +#undef LACCUM_MIN +#undef LACCUM_MAX +#undef LACCUM_EPSILON +#define LACCUM_FBIT __LACCUM_FBIT__ +#define LACCUM_IBIT __LACCUM_IBIT__ +#define LACCUM_MIN __LACCUM_MIN__ +#define LACCUM_MAX __LACCUM_MAX__ +#define LACCUM_EPSILON __LACCUM_EPSILON__ + +#undef ULACCUM_FBIT +#undef ULACCUM_IBIT +#undef ULACCUM_MIN +#undef ULACCUM_MAX +#undef ULACCUM_EPSILON +#define ULACCUM_FBIT __ULACCUM_FBIT__ +#define ULACCUM_IBIT __ULACCUM_IBIT__ +#define ULACCUM_MIN __ULACCUM_MIN__ /* GCC extension. */ +#define ULACCUM_MAX __ULACCUM_MAX__ +#define ULACCUM_EPSILON __ULACCUM_EPSILON__ + +#undef LLACCUM_FBIT +#undef LLACCUM_IBIT +#undef LLACCUM_MIN +#undef LLACCUM_MAX +#undef LLACCUM_EPSILON +#define LLACCUM_FBIT __LLACCUM_FBIT__ /* GCC extension. */ +#define LLACCUM_IBIT __LLACCUM_IBIT__ /* GCC extension. */ +#define LLACCUM_MIN __LLACCUM_MIN__ /* GCC extension. */ +#define LLACCUM_MAX __LLACCUM_MAX__ /* GCC extension. */ +#define LLACCUM_EPSILON __LLACCUM_EPSILON__ /* GCC extension. */ + +#undef ULLACCUM_FBIT +#undef ULLACCUM_IBIT +#undef ULLACCUM_MIN +#undef ULLACCUM_MAX +#undef ULLACCUM_EPSILON +#define ULLACCUM_FBIT __ULLACCUM_FBIT__ /* GCC extension. */ +#define ULLACCUM_IBIT __ULLACCUM_IBIT__ /* GCC extension. */ +#define ULLACCUM_MIN __ULLACCUM_MIN__ /* GCC extension. */ +#define ULLACCUM_MAX __ULLACCUM_MAX__ /* GCC extension. */ +#define ULLACCUM_EPSILON __ULLACCUM_EPSILON__ /* GCC extension. */ + +#endif /* _STDFIX_H */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/tgmath.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/tgmath.h new file mode 100644 index 0000000..1c0fb37 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/tgmath.h @@ -0,0 +1,174 @@ +/* Copyright (C) 2004, 2005 Free Software Foundation, Inc. + Contributed by Apple, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* + * ISO C Standard: 7.22 Type-generic math + */ + +#ifndef _TGMATH_H +#define _TGMATH_H + +#include + +#ifndef __cplusplus +#include + +/* Naming convention: generic macros are defining using + __TGMATH_CPLX*, __TGMATH_REAL*, and __TGMATH_CPLX_ONLY. _CPLX + means the generic argument(s) may be real or complex, _REAL means + real only, _CPLX means complex only. If there is no suffix, we are + defining a function of one generic argument. If the suffix is _n + it is a function of n generic arguments. If the suffix is _m_n it + is a function of n arguments, the first m of which are generic. We + only define these macros for values of n and/or m that are needed. */ + +/* The general rules for generic macros are given in 7.22 paragraphs 1 and 2. + If any generic parameter is complex, we use a complex version. Otherwise + we use a real version. If the real part of any generic parameter is long + double, we use the long double version. Otherwise if the real part of any + generic parameter is double or of integer type, we use the double version. + Otherwise we use the float version. */ + +#define __tg_cplx(expr) \ + __builtin_classify_type(expr) == 9 + +#define __tg_ldbl(expr) \ + __builtin_types_compatible_p(__typeof__(expr), long double) + +#define __tg_dbl(expr) \ + (__builtin_types_compatible_p(__typeof__(expr), double) \ + || __builtin_classify_type(expr) == 1) + +#define __tg_choose(x,f,d,l) \ + __builtin_choose_expr(__tg_ldbl(x), l, \ + __builtin_choose_expr(__tg_dbl(x), d, \ + f)) + +#define __tg_choose_2(x,y,f,d,l) \ + __builtin_choose_expr(__tg_ldbl(x) || __tg_ldbl(y), l, \ + __builtin_choose_expr(__tg_dbl(x) || __tg_dbl(y), d, \ + f)) + +#define __tg_choose_3(x,y,z,f,d,l) \ + __builtin_choose_expr(__tg_ldbl(x) || __tg_ldbl(y) || __tg_ldbl(z), l, \ + __builtin_choose_expr(__tg_dbl(x) || __tg_dbl(y) \ + || __tg_dbl(z), d, \ + f)) + +#define __TGMATH_CPLX(z,R,C) \ + __builtin_choose_expr (__tg_cplx(z), \ + __tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)), \ + __tg_choose (z, R##f(z), (R)(z), R##l(z))) + +#define __TGMATH_CPLX_2(z1,z2,R,C) \ + __builtin_choose_expr (__tg_cplx(z1) || __tg_cplx(z2), \ + __tg_choose_2 (__real__(z1), __real__(z2), \ + C##f(z1,z2), (C)(z1,z2), C##l(z1,z2)), \ + __tg_choose_2 (z1, z2, \ + R##f(z1,z2), (R)(z1,z2), R##l(z1,z2))) + +#define __TGMATH_REAL(x,R) \ + __tg_choose (x, R##f(x), (R)(x), R##l(x)) +#define __TGMATH_REAL_2(x,y,R) \ + __tg_choose_2 (x, y, R##f(x,y), (R)(x,y), R##l(x,y)) +#define __TGMATH_REAL_3(x,y,z,R) \ + __tg_choose_3 (x, y, z, R##f(x,y,z), (R)(x,y,z), R##l(x,y,z)) +#define __TGMATH_REAL_1_2(x,y,R) \ + __tg_choose (x, R##f(x,y), (R)(x,y), R##l(x,y)) +#define __TGMATH_REAL_2_3(x,y,z,R) \ + __tg_choose_2 (x, y, R##f(x,y,z), (R)(x,y,z), R##l(x,y,z)) +#define __TGMATH_CPLX_ONLY(z,C) \ + __tg_choose (__real__(z), C##f(z), (C)(z), C##l(z)) + +/* Functions defined in both and (7.22p4) */ +#define acos(z) __TGMATH_CPLX(z, acos, cacos) +#define asin(z) __TGMATH_CPLX(z, asin, casin) +#define atan(z) __TGMATH_CPLX(z, atan, catan) +#define acosh(z) __TGMATH_CPLX(z, acosh, cacosh) +#define asinh(z) __TGMATH_CPLX(z, asinh, casinh) +#define atanh(z) __TGMATH_CPLX(z, atanh, catanh) +#define cos(z) __TGMATH_CPLX(z, cos, ccos) +#define sin(z) __TGMATH_CPLX(z, sin, csin) +#define tan(z) __TGMATH_CPLX(z, tan, ctan) +#define cosh(z) __TGMATH_CPLX(z, cosh, ccosh) +#define sinh(z) __TGMATH_CPLX(z, sinh, csinh) +#define tanh(z) __TGMATH_CPLX(z, tanh, ctanh) +#define exp(z) __TGMATH_CPLX(z, exp, cexp) +#define log(z) __TGMATH_CPLX(z, log, clog) +#define pow(z1,z2) __TGMATH_CPLX_2(z1, z2, pow, cpow) +#define sqrt(z) __TGMATH_CPLX(z, sqrt, csqrt) +#define fabs(z) __TGMATH_CPLX(z, fabs, cabs) + +/* Functions defined in only (7.22p5) */ +#define atan2(x,y) __TGMATH_REAL_2(x, y, atan2) +#define cbrt(x) __TGMATH_REAL(x, cbrt) +#define ceil(x) __TGMATH_REAL(x, ceil) +#define copysign(x,y) __TGMATH_REAL_2(x, y, copysign) +#define erf(x) __TGMATH_REAL(x, erf) +#define erfc(x) __TGMATH_REAL(x, erfc) +#define exp2(x) __TGMATH_REAL(x, exp2) +#define expm1(x) __TGMATH_REAL(x, expm1) +#define fdim(x,y) __TGMATH_REAL_2(x, y, fdim) +#define floor(x) __TGMATH_REAL(x, floor) +#define fma(x,y,z) __TGMATH_REAL_3(x, y, z, fma) +#define fmax(x,y) __TGMATH_REAL_2(x, y, fmax) +#define fmin(x,y) __TGMATH_REAL_2(x, y, fmin) +#define fmod(x,y) __TGMATH_REAL_2(x, y, fmod) +#define frexp(x,y) __TGMATH_REAL_1_2(x, y, frexp) +#define hypot(x,y) __TGMATH_REAL_2(x, y, hypot) +#define ilogb(x) __TGMATH_REAL(x, ilogb) +#define ldexp(x,y) __TGMATH_REAL_1_2(x, y, ldexp) +#define lgamma(x) __TGMATH_REAL(x, lgamma) +#define llrint(x) __TGMATH_REAL(x, llrint) +#define llround(x) __TGMATH_REAL(x, llround) +#define log10(x) __TGMATH_REAL(x, log10) +#define log1p(x) __TGMATH_REAL(x, log1p) +#define log2(x) __TGMATH_REAL(x, log2) +#define logb(x) __TGMATH_REAL(x, logb) +#define lrint(x) __TGMATH_REAL(x, lrint) +#define lround(x) __TGMATH_REAL(x, lround) +#define nearbyint(x) __TGMATH_REAL(x, nearbyint) +#define nextafter(x,y) __TGMATH_REAL_2(x, y, nextafter) +#define nexttoward(x,y) __TGMATH_REAL_1_2(x, y, nexttoward) +#define remainder(x,y) __TGMATH_REAL_2(x, y, remainder) +#define remquo(x,y,z) __TGMATH_REAL_2_3(x, y, z, remquo) +#define rint(x) __TGMATH_REAL(x, rint) +#define round(x) __TGMATH_REAL(x, round) +#define scalbn(x,y) __TGMATH_REAL_1_2(x, y, scalbn) +#define scalbln(x,y) __TGMATH_REAL_1_2(x, y, scalbln) +#define tgamma(x) __TGMATH_REAL(x, tgamma) +#define trunc(x) __TGMATH_REAL(x, trunc) + +/* Functions defined in only (7.22p6) */ +#define carg(z) __TGMATH_CPLX_ONLY(z, carg) +#define cimag(z) __TGMATH_CPLX_ONLY(z, cimag) +#define conj(z) __TGMATH_CPLX_ONLY(z, conj) +#define cproj(z) __TGMATH_CPLX_ONLY(z, cproj) +#define creal(z) __TGMATH_CPLX_ONLY(z, creal) + +#endif /* __cplusplus */ +#endif /* _TGMATH_H */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/unwind.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/unwind.h new file mode 100644 index 0000000..5e0f608 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/unwind.h @@ -0,0 +1,279 @@ +/* Exception handling and frame unwind runtime interface routines. + Copyright (C) 2001, 2003, 2004, 2006 Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING. If not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +/* As a special exception, if you include this header file into source + files compiled by GCC, this header file does not by itself cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General + Public License. */ + +/* This is derived from the C++ ABI for IA-64. Where we diverge + for cross-architecture compatibility are noted with "@@@". */ + +#ifndef _UNWIND_H +#define _UNWIND_H + +#ifndef HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Level 1: Base ABI */ + +/* @@@ The IA-64 ABI uses uint64 throughout. Most places this is + inefficient for 32-bit and smaller machines. */ +typedef unsigned _Unwind_Word __attribute__((__mode__(__unwind_word__))); +typedef signed _Unwind_Sword __attribute__((__mode__(__unwind_word__))); +#if defined(__ia64__) && defined(__hpux__) +typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__))); +#else +typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__))); +#endif +typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__))); + +/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and + consumer of an exception. We'll go along with this for now even on + 32-bit machines. We'll need to provide some other option for + 16-bit machines and for machines with > 8 bits per byte. */ +typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); + +/* The unwind interface uses reason codes in several contexts to + identify the reasons for failures or other actions. */ +typedef enum +{ + _URC_NO_REASON = 0, + _URC_FOREIGN_EXCEPTION_CAUGHT = 1, + _URC_FATAL_PHASE2_ERROR = 2, + _URC_FATAL_PHASE1_ERROR = 3, + _URC_NORMAL_STOP = 4, + _URC_END_OF_STACK = 5, + _URC_HANDLER_FOUND = 6, + _URC_INSTALL_CONTEXT = 7, + _URC_CONTINUE_UNWIND = 8 +} _Unwind_Reason_Code; + + +/* The unwind interface uses a pointer to an exception header object + as its representation of an exception being thrown. In general, the + full representation of an exception object is language- and + implementation-specific, but it will be prefixed by a header + understood by the unwind interface. */ + +struct _Unwind_Exception; + +typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code, + struct _Unwind_Exception *); + +struct _Unwind_Exception +{ + _Unwind_Exception_Class exception_class; + _Unwind_Exception_Cleanup_Fn exception_cleanup; + _Unwind_Word private_1; + _Unwind_Word private_2; + + /* @@@ The IA-64 ABI says that this structure must be double-word aligned. + Taking that literally does not make much sense generically. Instead we + provide the maximum alignment required by any type for the machine. */ +} __attribute__((__aligned__)); + + +/* The ACTIONS argument to the personality routine is a bitwise OR of one + or more of the following constants. */ +typedef int _Unwind_Action; + +#define _UA_SEARCH_PHASE 1 +#define _UA_CLEANUP_PHASE 2 +#define _UA_HANDLER_FRAME 4 +#define _UA_FORCE_UNWIND 8 +#define _UA_END_OF_STACK 16 + +/* The target can override this macro to define any back-end-specific + attributes required for the lowest-level stack frame. */ +#ifndef LIBGCC2_UNWIND_ATTRIBUTE +#define LIBGCC2_UNWIND_ATTRIBUTE +#endif + +/* This is an opaque type used to refer to a system-specific data + structure used by the system unwinder. This context is created and + destroyed by the system, and passed to the personality routine + during unwinding. */ +struct _Unwind_Context; + +/* Raise an exception, passing along the given exception object. */ +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_RaiseException (struct _Unwind_Exception *); + +/* Raise an exception for forced unwinding. */ + +typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) + (int, _Unwind_Action, _Unwind_Exception_Class, + struct _Unwind_Exception *, struct _Unwind_Context *, void *); + +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); + +/* Helper to invoke the exception_cleanup routine. */ +extern void _Unwind_DeleteException (struct _Unwind_Exception *); + +/* Resume propagation of an existing exception. This is used after + e.g. executing cleanup code, and not to implement rethrowing. */ +extern void LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_Resume (struct _Unwind_Exception *); + +/* @@@ Resume propagation of a FORCE_UNWIND exception, or to rethrow + a normal exception that was handled. */ +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_Resume_or_Rethrow (struct _Unwind_Exception *); + +/* @@@ Use unwind data to perform a stack backtrace. The trace callback + is called for every stack frame in the call chain, but no cleanup + actions are performed. */ +typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) + (struct _Unwind_Context *, void *); + +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_Backtrace (_Unwind_Trace_Fn, void *); + +/* These functions are used for communicating information about the unwind + context (i.e. the unwind descriptors and the user register state) between + the unwind library and the personality routine and landing pad. Only + selected registers may be manipulated. */ + +extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int); +extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word); + +extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); +extern _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *); +extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr); + +/* @@@ Retrieve the CFA of the given context. */ +extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *); + +extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *); + +extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *); + + +/* The personality routine is the function in the C++ (or other language) + runtime library which serves as an interface between the system unwind + library and language-specific exception handling semantics. It is + specific to the code fragment described by an unwind info block, and + it is always referenced via the pointer in the unwind info block, and + hence it has no ABI-specified name. + + Note that this implies that two different C++ implementations can + use different names, and have different contents in the language + specific data area. Moreover, that the language specific data + area contains no version info because name of the function invoked + provides more effective versioning by detecting at link time the + lack of code to handle the different data format. */ + +typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn) + (int, _Unwind_Action, _Unwind_Exception_Class, + struct _Unwind_Exception *, struct _Unwind_Context *); + +/* @@@ The following alternate entry points are for setjmp/longjmp + based unwinding. */ + +struct SjLj_Function_Context; +extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *); +extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *); + +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_RaiseException (struct _Unwind_Exception *); +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); +extern void LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_Resume (struct _Unwind_Exception *); +extern _Unwind_Reason_Code LIBGCC2_UNWIND_ATTRIBUTE +_Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *); + +/* @@@ The following provide access to the base addresses for text + and data-relative addressing in the LDSA. In order to stay link + compatible with the standard ABI for IA-64, we inline these. */ + +#ifdef __ia64__ +#include + +static inline _Unwind_Ptr +_Unwind_GetDataRelBase (struct _Unwind_Context *_C) +{ + /* The GP is stored in R1. */ + return _Unwind_GetGR (_C, 1); +} + +static inline _Unwind_Ptr +_Unwind_GetTextRelBase (struct _Unwind_Context *_C __attribute__ ((__unused__))) +{ + abort (); + return 0; +} + +/* @@@ Retrieve the Backing Store Pointer of the given context. */ +extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); +#else +extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); +extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); +#endif + +/* @@@ Given an address, return the entry point of the function that + contains it. */ +extern void * _Unwind_FindEnclosingFunction (void *pc); + +#ifndef __SIZEOF_LONG__ + #error "__SIZEOF_LONG__ macro not defined" +#endif + +#ifndef __SIZEOF_POINTER__ + #error "__SIZEOF_POINTER__ macro not defined" +#endif + + +/* leb128 type numbers have a potentially unlimited size. + The target of the following definitions of _sleb128_t and _uleb128_t + is to have efficient data types large enough to hold the leb128 type + numbers used in the unwind code. + Mostly these types will simply be defined to long and unsigned long + except when a unsigned long data type on the target machine is not + capable of storing a pointer. */ + +#if __SIZEOF_LONG__ >= __SIZEOF_POINTER__ + typedef long _sleb128_t; + typedef unsigned long _uleb128_t; +#elif __SIZEOF_LONG_LONG__ >= __SIZEOF_POINTER__ + typedef long long _sleb128_t; + typedef unsigned long long _uleb128_t; +#else +# error "What type shall we use for _sleb128_t?" +#endif + +#ifdef __cplusplus +} +#endif + +#ifndef HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* unwind.h */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/varargs.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/varargs.h new file mode 100644 index 0000000..4b9803e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/include/varargs.h @@ -0,0 +1,7 @@ +#ifndef _VARARGS_H +#define _VARARGS_H + +#error "GCC no longer implements ." +#error "Revise your code to use ." + +#endif diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/fixinc_list b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/fixinc_list new file mode 100644 index 0000000..092bc2b --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/fixinc_list @@ -0,0 +1 @@ +; diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/gsyslimits.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/gsyslimits.h new file mode 100644 index 0000000..a362802 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/gsyslimits.h @@ -0,0 +1,8 @@ +/* syslimits.h stands for the system's own limits.h file. + If we can use it ok unmodified, then we install this text. + If fixincludes fixes it, then the fixed version is installed + instead of this text. */ + +#define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h to recurse */ +#include_next +#undef _GCC_NEXT_LIMITS_H diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/include/README b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/include/README new file mode 100644 index 0000000..7086a77 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/include/README @@ -0,0 +1,14 @@ +This README file is copied into the directory for GCC-only header files +when fixincludes is run by the makefile for GCC. + +Many of the files in this directory were automatically edited from the +standard system header files by the fixincludes process. They are +system-specific, and will not work on any other kind of system. They +are also not part of GCC. The reason we have to do this is because +GCC requires ANSI C headers and many vendors supply ANSI-incompatible +headers. + +Because this is an automated process, sometimes headers get "fixed" +that do not, strictly speaking, need a fix. As long as nothing is broken +by the process, it is just an unfortunate collateral inconvenience. +We would like to rectify it, if it is not "too inconvenient". diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/include/limits.h b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/include/limits.h new file mode 100644 index 0000000..710cbb5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/include/limits.h @@ -0,0 +1,103 @@ +#ifndef _LIMITS_H___ +#define _LIMITS_H___ + +/* Number of bits in a `char'. */ +#undef CHAR_BIT +#define CHAR_BIT __CHAR_BIT__ + +/* Maximum length of a multibyte character. */ +#ifndef MB_LEN_MAX +#define MB_LEN_MAX 1 +#endif + +/* Minimum and maximum values a `signed char' can hold. */ +#undef SCHAR_MIN +#define SCHAR_MIN (-SCHAR_MAX - 1) +#undef SCHAR_MAX +#define SCHAR_MAX __SCHAR_MAX__ + +/* Maximum value an `unsigned char' can hold. (Minimum is 0). */ +#undef UCHAR_MAX +#if __SCHAR_MAX__ == __INT_MAX__ +# define UCHAR_MAX (SCHAR_MAX * 2U + 1U) +#else +# define UCHAR_MAX (SCHAR_MAX * 2 + 1) +#endif + +/* Minimum and maximum values a `char' can hold. */ +#ifdef __CHAR_UNSIGNED__ +# undef CHAR_MIN +# if __SCHAR_MAX__ == __INT_MAX__ +# define CHAR_MIN 0U +# else +# define CHAR_MIN 0 +# endif +# undef CHAR_MAX +# define CHAR_MAX UCHAR_MAX +#else +# undef CHAR_MIN +# define CHAR_MIN SCHAR_MIN +# undef CHAR_MAX +# define CHAR_MAX SCHAR_MAX +#endif + +/* Minimum and maximum values a `signed short int' can hold. */ +#undef SHRT_MIN +#define SHRT_MIN (-SHRT_MAX - 1) +#undef SHRT_MAX +#define SHRT_MAX __SHRT_MAX__ + +/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ +#undef USHRT_MAX +#if __SHRT_MAX__ == __INT_MAX__ +# define USHRT_MAX (SHRT_MAX * 2U + 1U) +#else +# define USHRT_MAX (SHRT_MAX * 2 + 1) +#endif + +/* Minimum and maximum values a `signed int' can hold. */ +#undef INT_MIN +#define INT_MIN (-INT_MAX - 1) +#undef INT_MAX +#define INT_MAX __INT_MAX__ + +/* Maximum value an `unsigned int' can hold. (Minimum is 0). */ +#undef UINT_MAX +#define UINT_MAX (INT_MAX * 2U + 1U) + +/* Minimum and maximum values a `signed long int' can hold. + (Same as `int'). */ +#undef LONG_MIN +#define LONG_MIN (-LONG_MAX - 1L) +#undef LONG_MAX +#define LONG_MAX __LONG_MAX__ + +/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ +#undef ULONG_MAX +#define ULONG_MAX (LONG_MAX * 2UL + 1UL) + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +/* Minimum and maximum values a `signed long long int' can hold. */ +# undef LLONG_MIN +# define LLONG_MIN (-LLONG_MAX - 1LL) +# undef LLONG_MAX +# define LLONG_MAX __LONG_LONG_MAX__ + +/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ +# undef ULLONG_MAX +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +#endif + +#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) +/* Minimum and maximum values a `signed long long int' can hold. */ +# undef LONG_LONG_MIN +# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) +# undef LONG_LONG_MAX +# define LONG_LONG_MAX __LONG_LONG_MAX__ + +/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ +# undef ULONG_LONG_MAX +# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) +#endif + +#endif /* _LIMITS_H___ */ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/macro_list b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/macro_list new file mode 100644 index 0000000..c3e2b66 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/macro_list @@ -0,0 +1 @@ +AVR diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/mkheaders.conf b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/mkheaders.conf new file mode 100644 index 0000000..f3495a5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/install-tools/mkheaders.conf @@ -0,0 +1,5 @@ +SYSTEM_HEADER_DIR="/c/WinAVR/avr/sys-include" +OTHER_FIXINCLUDES_DIRS="" +FIXPROTO_DEFINES="" +STMP_FIXPROTO="stmp-fixproto" +STMP_FIXINC="stmp-fixinc" diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/libgcc.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/libgcc.a new file mode 100644 index 0000000..912bccb Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/libgcc.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/libgcov.a b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/libgcov.a new file mode 100644 index 0000000..fdfd4ab Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/gcc/avr/4.3.2/libgcov.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/insight1.0/plugins.tcl b/arduino-0018-windows/hardware/tools/avr/lib/insight1.0/plugins.tcl new file mode 100644 index 0000000..b9b1f92 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/insight1.0/plugins.tcl @@ -0,0 +1,30 @@ +# Only load the rhabout plugin if it was installed. +foreach dir $::gdb_plugins { + if {[file exists [file join $dir rhabout]]} { + package require RHABOUT 1.0 + $Menu add command Other "About Red Hat" \ + {ManagedWin::open RHAbout} -underline 0 + + # To activate the PlugIn sample, uncomment the next line + set plugins_available 1 + } +} + +# Only load the Intel Pentium plugin for x86 targets. +if {[string match "i?86-*" $::GDBStartup(target_name)] && ![TargetSelection::native_debugging]} { + package require INTELPENTIUM 1.0 + + # Add a new cascading-style menu to plugin menu + $Menu add cascade intel "Intel Pentium" 0 + + # Add MSR selection dialog menu item. + $Menu add command None "MSR Selection..." \ + {ManagedWin::open_dlg MsrSelDlg} -underline 0 + + # Add CPU info menu item. + $Menu add command None "CPU Information..." \ + display_cpu_info -underline 0 + + # Activate the PlugIn. + set plugins_available 1 +} diff --git a/arduino-0018-windows/hardware/tools/avr/lib/itcl3.2/pkgIndex.tcl b/arduino-0018-windows/hardware/tools/avr/lib/itcl3.2/pkgIndex.tcl new file mode 100644 index 0000000..7a61a50 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/itcl3.2/pkgIndex.tcl @@ -0,0 +1,3 @@ +# Tcl package index file, version 1.0 + +package ifneeded Itcl 3.2 [list load [file join $dir .. .. bin "itcl32.dll"] Itcl] diff --git a/arduino-0018-windows/hardware/tools/avr/lib/itk3.2/pkgIndex.tcl b/arduino-0018-windows/hardware/tools/avr/lib/itk3.2/pkgIndex.tcl new file mode 100644 index 0000000..f4e8d0f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/itk3.2/pkgIndex.tcl @@ -0,0 +1,3 @@ +# Tcl package index file, version 1.0 + +package ifneeded Itk 3.2 [list load [file join $dir .. .. bin "itk32.dll"] Itk] diff --git a/arduino-0018-windows/hardware/tools/avr/lib/libiberty.a b/arduino-0018-windows/hardware/tools/avr/lib/libiberty.a new file mode 100644 index 0000000..ce91d6d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/libiberty.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/libitclstub32.a b/arduino-0018-windows/hardware/tools/avr/lib/libitclstub32.a new file mode 100644 index 0000000..10ada7a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/libitclstub32.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/libitkstub32.a b/arduino-0018-windows/hardware/tools/avr/lib/libitkstub32.a new file mode 100644 index 0000000..5afbd4b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/libitkstub32.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/libtcl84.a b/arduino-0018-windows/hardware/tools/avr/lib/libtcl84.a new file mode 100644 index 0000000..89a357c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/libtcl84.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/libtclstub84.a b/arduino-0018-windows/hardware/tools/avr/lib/libtclstub84.a new file mode 100644 index 0000000..b8f119d Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/libtclstub84.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/libtk84.a b/arduino-0018-windows/hardware/tools/avr/lib/libtk84.a new file mode 100644 index 0000000..03dcdde Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/libtk84.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/libtkstub84.a b/arduino-0018-windows/hardware/tools/avr/lib/libtkstub84.a new file mode 100644 index 0000000..ab95d1b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/libtkstub84.a differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/reg1.1/pkgIndex.tcl b/arduino-0018-windows/hardware/tools/avr/lib/reg1.1/pkgIndex.tcl new file mode 100644 index 0000000..9b2b4f3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/reg1.1/pkgIndex.tcl @@ -0,0 +1,8 @@ +if {![package vsatisfies [package provide Tcl] 8]} {return} +if {[info exists tcl_platform(debug)]} { + package ifneeded registry 1.1 \ + [list load [file join $dir tclreg11d.dll] registry] +} else { + package ifneeded registry 1.1 \ + [list load [file join $dir tclreg11.dll] registry] +} diff --git a/arduino-0018-windows/hardware/tools/avr/lib/reg1.1/tclreg11.dll b/arduino-0018-windows/hardware/tools/avr/lib/reg1.1/tclreg11.dll new file mode 100644 index 0000000..eab5cf7 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/lib/reg1.1/tclreg11.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/lib/tclConfig.sh b/arduino-0018-windows/hardware/tools/avr/lib/tclConfig.sh new file mode 100644 index 0000000..a8fa085 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/tclConfig.sh @@ -0,0 +1,182 @@ +# tclConfig.sh -- +# +# This shell script (for sh) is generated automatically by Tcl's +# configure script. It will create shell variables for most of +# the configuration options discovered by the configure script. +# This script is intended to be included by the configure scripts +# for Tcl extensions so that they don't have to figure this all +# out for themselves. +# +# The information in this file is specific to a single platform. +# +# RCS: @(#) $Id: tclConfig.sh.in,v 1.8 2001/11/08 03:07:22 mdejong Exp $ + +TCL_DLL_FILE="tcl84.dll" + +# Tcl's version number. +TCL_VERSION='8.4' +TCL_MAJOR_VERSION='8' +TCL_MINOR_VERSION='4' +TCL_PATCH_LEVEL='.1' + +# C compiler to use for compilation. +TCL_CC='gcc' + +# -D flags for use with the C compiler. +TCL_DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DHAVE_NO_SEH=1 -DEXCEPTION_DISPOSITION=int -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1' + +# If TCL was built with debugging symbols, generated libraries contain +# this string at the end of the library name (before the extension). +TCL_DBGX= + +# Default flags used in an optimized and debuggable build, respectively. +TCL_CFLAGS_DEBUG='-g' +TCL_CFLAGS_OPTIMIZE='' + +# Default linker flags used in an optimized and debuggable build, respectively. +TCL_LDFLAGS_DEBUG='' +TCL_LDFLAGS_OPTIMIZE='' + +# Flag, 1: we built a shared lib, 0 we didn't +TCL_SHARED_BUILD=1 + +# The name of the Tcl library (may be either a .a file or a shared library): +TCL_LIB_FILE='libtcl84.a' + +# Flag to indicate whether shared libraries need export files. +TCL_NEEDS_EXP_FILE= + +# String that can be evaluated to generate the part of the export file +# name that comes after the "libxxx" (includes version number, if any, +# extension, and anything else needed). May depend on the variables +# VERSION. On most UNIX systems this is ${VERSION}.exp. +TCL_EXPORT_FILE_SUFFIX='${NODOT_VERSION}${DBGX}.a' + +# Additional libraries to use when linking Tcl. +TCL_LIBS='' + +# Top-level directory in which Tcl's platform-independent files are +# installed. +TCL_PREFIX='/c/WinAVR' + +# Top-level directory in which Tcl's platform-specific files (e.g. +# executables) are installed. +TCL_EXEC_PREFIX='/c/WinAVR' + +# Flags to pass to cc when compiling the components of a shared library: +TCL_SHLIB_CFLAGS='' + +# Flags to pass to cc to get warning messages +TCL_CFLAGS_WARNING='-Wall -Wconversion' + +# Extra flags to pass to cc: +TCL_EXTRA_CFLAGS='-mwin32 ' + +# Base command to use for combining object files into a shared library: +TCL_SHLIB_LD='${CC} -shared ${CFLAGS}' + +# Base command to use for combining object files into a static library: +TCL_STLIB_LD='${AR} cr' + +# Either '$LIBS' (if dependent libraries should be included when linking +# shared libraries) or an empty string. See Tcl's configure.in for more +# explanation. +TCL_SHLIB_LD_LIBS='' + +# Suffix to use for the name of a shared library. +TCL_SHLIB_SUFFIX='' + +# Library file(s) to include in tclsh and other base applications +# in order to provide facilities needed by DLOBJ above. +TCL_DL_LIBS='' + +# Flags to pass to the compiler when linking object files into +# an executable tclsh or tcltest binary. +TCL_LD_FLAGS='-static' + +# Flags to pass to ld, such as "-R /usr/local/tcl/lib", that tell the +# run-time dynamic linker where to look for shared libraries such as +# libtcl.so. Used when linking applications. Only works if there +# is a variable "LIB_RUNTIME_DIR" defined in the Makefile. +TCL_LD_SEARCH_FLAGS='' + +# Additional object files linked with Tcl to provide compatibility +# with standard facilities from ANSI C or POSIX. +TCL_COMPAT_OBJS='' + +# Name of the ranlib program to use. +TCL_RANLIB='ranlib' + +# -l flag to pass to the linker to pick up the Tcl library +TCL_LIB_FLAG='' + +# String to pass to linker to pick up the Tcl library from its +# build directory. +TCL_BUILD_LIB_SPEC='-L/c/avrdev/insight/build/tcl/win -ltcl84' + +# String to pass to linker to pick up the Tcl library from its +# installed directory. +TCL_LIB_SPEC='' + +# String to pass to the compiler so that an extension can +# find installed Tcl headers. +TCL_INCLUDE_SPEC='-I/c/WinAVR/include' + +# Indicates whether a version numbers should be used in -l switches +# ("ok" means it's safe to use switches like -ltcl7.5; "nodots" means +# use switches like -ltcl75). SunOS and FreeBSD require "nodots", for +# example. +TCL_LIB_VERSIONS_OK='' + +# String that can be evaluated to generate the part of a shared library +# name that comes after the "libxxx" (includes version number, if any, +# extension, and anything else needed). May depend on the variables +# VERSION and SHLIB_SUFFIX. On most UNIX systems this is +# ${VERSION}${SHLIB_SUFFIX}. +TCL_SHARED_LIB_SUFFIX='${NODOT_VERSION}${DBGX}.dll' + +# String that can be evaluated to generate the part of an unshared library +# name that comes after the "libxxx" (includes version number, if any, +# extension, and anything else needed). May depend on the variable +# VERSION. On most UNIX systems this is ${VERSION}.a. +TCL_UNSHARED_LIB_SUFFIX='${NODOT_VERSION}${DBGX}.a' + +# Location of the top-level source directory from which Tcl was built. +# This is the directory that contains a README file as well as +# subdirectories such as generic, unix, etc. If Tcl was compiled in a +# different place than the directory containing the source files, this +# points to the location of the sources, not the location where Tcl was +# compiled. +TCL_SRC_DIR='/c/avrdev/insight/insight-6.8/tcl' + +# List of standard directories in which to look for packages during +# "package require" commands. Contains the "prefix" directory plus also +# the "exec_prefix" directory, if it is different. +TCL_PACKAGE_PATH='' + +# Tcl supports stub. +TCL_SUPPORTS_STUBS=1 + +# The name of the Tcl stub library (.a): +TCL_STUB_LIB_FILE='libtclstub84.a' + +# -l flag to pass to the linker to pick up the Tcl stub library +TCL_STUB_LIB_FLAG='-ltclstub84' + +# String to pass to linker to pick up the Tcl stub library from its +# build directory. +TCL_BUILD_STUB_LIB_SPEC='-L/c/avrdev/insight/build/tcl/win -ltclstub84' + +# String to pass to linker to pick up the Tcl stub library from its +# installed directory. +TCL_STUB_LIB_SPEC='-L/c/WinAVR/lib -ltclstub84' + +# Path to the Tcl stub library in the build directory. +TCL_BUILD_STUB_LIB_PATH='/c/avrdev/insight/build/tcl/win/libtclstub84.a' + +# Path to the Tcl stub library in the install directory. +TCL_STUB_LIB_PATH='/c/WinAVR/lib/libtclstub84.a' + +# Flag, 1: we built Tcl with threads enables, 0 we didn't +TCL_THREADS=0 + diff --git a/arduino-0018-windows/hardware/tools/avr/lib/tk8.4/pkgIndex.tcl b/arduino-0018-windows/hardware/tools/avr/lib/tk8.4/pkgIndex.tcl new file mode 100644 index 0000000..9cc9fa2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/tk8.4/pkgIndex.tcl @@ -0,0 +1,2 @@ +if {[package vcompare [package provide Tcl] 8.4] != 0} { return } +package ifneeded Tk 8.4 [list load [file join $dir .. .. bin tk84.dll] Tk] diff --git a/arduino-0018-windows/hardware/tools/avr/lib/tkConfig.sh b/arduino-0018-windows/hardware/tools/avr/lib/tkConfig.sh new file mode 100644 index 0000000..3f4d343 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/lib/tkConfig.sh @@ -0,0 +1,90 @@ +# tkConfig.sh -- +# +# This shell script (for sh) is generated automatically by Tk's +# configure script. It will create shell variables for most of +# the configuration options discovered by the configure script. +# This script is intended to be included by the configure scripts +# for Tk extensions so that they don't have to figure this all +# out for themselves. This file does not duplicate information +# already provided by tclConfig.sh, so you may need to use that +# file in addition to this one. +# +# The information in this file is specific to a single platform. +# +# RCS: @(#) $Id: tkConfig.sh.in,v 1.2 2001/10/15 21:19:16 hobbs Exp $ + +# Tk's version number. +TK_VERSION='8.4' +TK_MAJOR_VERSION='8' +TK_MINOR_VERSION='4' +TK_PATCH_LEVEL='.1' + +# -D flags for use with the C compiler. +TK_DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1' + +# Flag, 1: we built a shared lib, 0 we didn't +TK_SHARED_BUILD=1 + +# This indicates if Tk was build with debugging symbols +TK_DBGX= + +# The name of the Tk library (may be either a .a file or a shared library): +TK_LIB_FILE='libtk84.a' + +# Additional libraries to use when linking Tk. +TK_LIBS=' -lgdi32 -lcomdlg32 -limm32 -lcomctl32 -lshell32' + +# Top-level directory in which Tcl's platform-independent files are +# installed. +TK_PREFIX='/c/WinAVR' + +# Top-level directory in which Tcl's platform-specific files (e.g. +# executables) are installed. +TK_EXEC_PREFIX='/c/WinAVR' + +# -I switch(es) to use to make all of the X11 include files accessible: +TK_XINCLUDES='-I"c:/avrdev/insight/insight-6.8/tk/xlib"' + +# -l flag to pass to the linker to pick up the Tcl library +TK_LIB_FLAG='' + +# String to pass to linker to pick up the Tk library from its +# build directory. +TK_BUILD_LIB_SPEC='-L/c/avrdev/insight/build/tk/win -ltk84' + +# String to pass to linker to pick up the Tk library from its +# installed directory. +TK_LIB_SPEC='' + +# Location of the top-level source directory from which Tk was built. +# This is the directory that contains a README file as well as +# subdirectories such as generic, unix, etc. If Tk was compiled in a +# different place than the directory containing the source files, this +# points to the location of the sources, not the location where Tk was +# compiled. +TK_SRC_DIR='/c/avrdev/insight/insight-6.8/tk' + +# Needed if you want to make a 'fat' shared library library +# containing tk objects or link a different wish. +TK_CC_SEARCH_FLAGS='' +TK_LD_SEARCH_FLAGS='' + +# The name of the Tk stub library (.a): +TK_STUB_LIB_FILE='libtkstub84.a' + +# -l flag to pass to the linker to pick up the Tk stub library +TK_STUB_LIB_FLAG='-ltkstub84' + +# String to pass to linker to pick up the Tk stub library from its +# build directory. +TK_BUILD_STUB_LIB_SPEC='-L/c/avrdev/insight/build/tk/win -ltkstub84' + +# String to pass to linker to pick up the Tk stub library from its +# installed directory. +TK_STUB_LIB_SPEC='' + +# Path to the Tk stub library in the build directory. +TK_BUILD_STUB_LIB_PATH='' + +# Path to the Tk stub library in the install directory. +TK_STUB_LIB_PATH='' diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1.exe b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1.exe new file mode 100644 index 0000000..538163c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1obj.exe b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1obj.exe new file mode 100644 index 0000000..f82cf8b Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1obj.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1plus.exe b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1plus.exe new file mode 100644 index 0000000..14f3454 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/cc1plus.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/collect2.exe b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/collect2.exe new file mode 100644 index 0000000..4668714 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/collect2.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fix-header.exe b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fix-header.exe new file mode 100644 index 0000000..055f5f5 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fix-header.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixinc.sh b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixinc.sh new file mode 100644 index 0000000..39a9213 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixinc.sh @@ -0,0 +1,500 @@ +#!/bin/sh +# +# Install modified versions of certain ANSI-incompatible system header +# files which are fixed to work correctly with ANSI C and placed in a +# directory that GCC will search. +# +# See README-fixinc for more information. +# +# fixincludes copyright (c) 1998, 1999, 2000, 2002 +# The Free Software Foundation, Inc. +# +# fixincludes is free software. +# +# You may redistribute it and/or modify it under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 2, or (at your option) any later version. +# +# fixincludes is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fixincludes. See the file "COPYING". If not, +# write to: The Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# # # # # # # # # # # # # # # # # # # # # + +# Usage: fixinc.sh output-dir input-dir +# +# Directory in which to store the results. +# Fail if no arg to specify a directory for the output. +if [ "x$1" = "x" ] +then + echo fixincludes: no output directory specified + exit 1 +fi + +LIB=${1} +shift + +# Make sure it exists. +if [ ! -d $LIB ]; then + mkdir $LIB || { + echo fixincludes: output dir '`'$LIB"' cannot be created" + exit 1 + } +else + ( cd $LIB && touch DONE && rm DONE ) || { + echo fixincludes: output dir '`'$LIB"' is an invalid directory" + exit 1 + } +fi + +if test -z "$VERBOSE" +then + VERBOSE=2 + export VERBOSE +else + case "$VERBOSE" in + [0-9] ) : ;; + * ) VERBOSE=3 ;; + esac +fi + +# Define what target system we're fixing. +# +if test -r ./Makefile; then + target_canonical="`sed -n -e 's,^target[ ]*=[ ]*\(.*\)$,\1,p' < Makefile`" +fi + +# If not from the Makefile, then try config.guess +# +if test -z "${target_canonical}" ; then + if test -x ./config.guess ; then + target_canonical="`config.guess`" ; fi + test -z "${target_canonical}" && target_canonical=unknown +fi +export target_canonical + +# # # # # # # # # # # # # # # # # # # # # +# +# Define PWDCMD as a command to use to get the working dir +# in the form that we want. +PWDCMD=${PWDCMD-pwd} + +case "`$PWDCMD`" in +//*) + # On an Apollo, discard everything before `/usr'. + PWDCMD="eval pwd | sed -e 's,.*/usr/,/usr/,'" + ;; +esac + +# Original directory. +ORIGDIR=`${PWDCMD}` +export ORIGDIR +FIXINCL=`${PWDCMD}`/fixincl +if [ ! -x $FIXINCL ] ; then + echo "Cannot find fixincl" >&2 + exit 1 +fi +export FIXINCL + +# Make LIB absolute only if needed to avoid problems with the amd. +case $LIB in +/*) + ;; +*) + cd $LIB; LIB=`${PWDCMD}` + ;; +esac + +if test $VERBOSE -gt 0 +then echo Fixing headers into ${LIB} for ${target_canonical} target ; fi + +# Determine whether this system has symbolic links. +if test -n "$DJDIR"; then + LINKS=false +elif ln -s X $LIB/ShouldNotExist 2>/dev/null; then + rm -f $LIB/ShouldNotExist + LINKS=true +elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then + rm -f /tmp/ShouldNotExist + LINKS=true +else + LINKS=false +fi + +# # # # # # # # # # # # # # # # # # # # # +# +# In the file macro_list are listed all the predefined +# macros that are not in the C89 reserved namespace (the reserved +# namespace is all identifiers beginnning with two underscores or one +# underscore followed by a capital letter). A regular expression to find +# any of those macros in a header file is written to MN_NAME_PAT. +# +# Note dependency on ASCII. \012 = newline. +# tr ' ' '\n' is, alas, not portable. + +if test -s ${MACRO_LIST} +then + if test $VERBOSE -gt 0; then + echo "Forbidden identifiers: `tr '\012' ' ' < ${MACRO_LIST}`" + fi + MN_NAME_PAT="`sed 's/^/\\\\/; $!s/$/|/' \ + < ${MACRO_LIST} | tr -d '\012'`" + export MN_NAME_PAT +else + if test $VERBOSE -gt 0 + then echo "No forbidden identifiers defined by this target" ; fi +fi + +# # # # # # # # # # # # # # # # # # # # # +# +# Search each input directory for broken header files. +# This loop ends near the end of the file. +# +if test $# -eq 0 +then + INPUTLIST="/usr/include" +else + INPUTLIST="$@" +fi + +for INPUT in ${INPUTLIST} ; do + +cd ${ORIGDIR} + +# Make sure a directory exists before changing into it, +# otherwise Solaris2 will fail-exit the script. +# +if [ ! -d ${INPUT} ]; then + continue +fi +cd ${INPUT} + +INPUT=`${PWDCMD}` +export INPUT + +# +# # # # # # # # # # # # # # # # # # # # # +# +if test $VERBOSE -gt 1 +then echo Finding directories and links to directories ; fi + +# Find all directories and all symlinks that point to directories. +# Put the list in $all_dirs. +# Each time we find a symlink, add it to newdirs +# so that we do another find within the dir the link points to. +# Note that $all_dirs may have duplicates in it; +# later parts of this file are supposed to ignore them. +dirs="." +levels=2 +all_dirs="" +search_dirs="" + +while [ -n "$dirs" ] && [ $levels -gt 0 ] +do + levels=`expr $levels - 1` + newdirs= + for d in $dirs + do + if test $VERBOSE -gt 1 + then echo " Searching $INPUT/$d" ; fi + + # Find all directories under $d, relative to $d, excluding $d itself. + # (The /. is needed after $d in case $d is a symlink.) + all_dirs="$all_dirs `find $d/. -type d -print | \ + sed -e '/\/\.$/d' -e 's@/./@/@g'`" + # Find all links to directories. + # Using `-exec test -d' in find fails on some systems, + # and trying to run test via sh fails on others, + # so this is the simplest alternative left. + # First find all the links, then test each one. + theselinks= + $LINKS && \ + theselinks=`find $d/. -type l -print | sed -e 's@/./@/@g'` + for d1 in $theselinks --dummy-- + do + # If the link points to a directory, + # add that dir to $newdirs + if [ -d $d1 ] + then + all_dirs="$all_dirs $d1" + if [ "`ls -ld $d1 | sed -n 's/.*-> //p'`" != "." ] + then + newdirs="$newdirs $d1" + search_dirs="$search_dirs $d1" + fi + fi + done + done + + dirs="$newdirs" +done + +# # # # # # # # # # # # # # # # # # # # # +# +dirs= +if test $VERBOSE -gt 2 +then echo "All directories (including links to directories):" + echo $all_dirs +fi + +for file in $all_dirs; do + rm -rf $LIB/$file + if [ ! -d $LIB/$file ] + then mkdir $LIB/$file + fi +done +mkdir $LIB/root + +# # # # # # # # # # # # # # # # # # # # # +# +# treetops gets an alternating list +# of old directories to copy +# and the new directories to copy to. +treetops=". ${LIB}" + +if $LINKS; then + if test $VERBOSE -gt 1 + then echo 'Making symbolic directory links' ; fi + cwd=`${PWDCMD}` + + for sym_link in $search_dirs; do + cd ${INPUT} + dest=`ls -ld ${sym_link} | sed -n 's/.*-> //p'` + + # In case $dest is relative, get to ${sym_link}'s dir first. + # + cd ./`echo ${sym_link} | sed 's;/[^/]*$;;'` + + # Check that the target directory exists. + # Redirections changed to avoid bug in sh on Ultrix. + # + (cd $dest) > /dev/null 2>&1 + if [ $? = 0 ]; then + cd $dest + + # full_dest_dir gets the dir that the link actually leads to. + # + full_dest_dir=`${PWDCMD}` + + # Canonicalize ${INPUT} now to minimize the time an + # automounter has to change the result of ${PWDCMD}. + # + cinput=`cd ${INPUT}; ${PWDCMD}` + + # If a link points to ., make a similar link to . + # + if [ ${full_dest_dir} = ${cinput} ]; then + if test $VERBOSE -gt 2 + then echo ${sym_link} '->' . ': Making self link' ; fi + rm -fr ${LIB}/${sym_link} > /dev/null 2>&1 + ln -s . ${LIB}/${sym_link} > /dev/null 2>&1 + + # If link leads back into ${INPUT}, + # make a similar link here. + # + elif expr ${full_dest_dir} : "${cinput}/.*" > /dev/null; then + # Y gets the actual target dir name, relative to ${INPUT}. + y=`echo ${full_dest_dir} | sed -n "s&${cinput}/&&p"` + # DOTS is the relative path from ${LIB}/${sym_link} back to ${LIB}. + dots=`echo "${sym_link}" | + sed -e 's@^./@@' -e 's@/./@/@g' -e 's@[^/][^/]*@..@g' -e 's@..$@@'` + if test $VERBOSE -gt 2 + then echo ${sym_link} '->' $dots$y ': Making local link' ; fi + rm -fr ${LIB}/${sym_link} > /dev/null 2>&1 + ln -s $dots$y ${LIB}/${sym_link} > /dev/null 2>&1 + + else + # If the link is to a dir $target outside ${INPUT}, + # repoint the link at ${INPUT}/root$target + # and process $target into ${INPUT}/root$target + # treat this directory as if it actually contained the files. + # + if test $VERBOSE -gt 2 + then echo ${sym_link} '->' root${full_dest_dir} ': Making rooted link' + fi + if [ -d $LIB/root${full_dest_dir} ] + then true + else + dirname=root${full_dest_dir}/ + dirmade=. + cd $LIB + while [ x$dirname != x ]; do + component=`echo $dirname | sed -e 's|/.*$||'` + mkdir $component >/dev/null 2>&1 + cd $component + dirmade=$dirmade/$component + dirname=`echo $dirname | sed -e 's|[^/]*/||'` + done + fi + + # Duplicate directory structure created in ${LIB}/${sym_link} in new + # root area. + # + for file2 in $all_dirs; do + case $file2 in + ${sym_link}/*) + dupdir=${LIB}/root${full_dest_dir}/`echo $file2 | + sed -n "s|^${sym_link}/||p"` + if test $VERBOSE -gt 2 + then echo "Duplicating ${sym_link}'s ${dupdir}" ; fi + if [ -d ${dupdir} ] + then true + else + mkdir ${dupdir} + fi + ;; + *) + ;; + esac + done + + # Get the path from ${LIB} to ${sym_link}, accounting for symlinks. + # + parent=`echo "${sym_link}" | sed -e 's@/[^/]*$@@'` + libabs=`cd ${LIB}; ${PWDCMD}` + file2=`cd ${LIB}; cd $parent; ${PWDCMD} | sed -e "s@^${libabs}@@"` + + # DOTS is the relative path from ${LIB}/${sym_link} back to ${LIB}. + # + dots=`echo "$file2" | sed -e 's@/[^/]*@../@g'` + rm -fr ${LIB}/${sym_link} > /dev/null 2>&1 + ln -s ${dots}root${full_dest_dir} ${LIB}/${sym_link} > /dev/null 2>&1 + treetops="$treetops ${sym_link} ${LIB}/root${full_dest_dir}" + fi + fi + done +fi + +# # # # # # # # # # # # # # # # # # # # # +# +required= +set x $treetops +shift +while [ $# != 0 ]; do + # $1 is an old directory to copy, and $2 is the new directory to copy to. + # + SRCDIR=`cd ${INPUT} ; cd $1 ; ${PWDCMD}` + export SRCDIR + + FIND_BASE=$1 + export FIND_BASE + shift + + DESTDIR=`cd $1;${PWDCMD}` + export DESTDIR + shift + + # The same dir can appear more than once in treetops. + # There's no need to scan it more than once. + # + if [ -f ${DESTDIR}/DONE ] + then continue ; fi + + touch ${DESTDIR}/DONE + if test $VERBOSE -gt 1 + then echo Fixing directory ${SRCDIR} into ${DESTDIR} ; fi + + # Check files which are symlinks as well as those which are files. + # + cd ${INPUT} + required="$required `if $LINKS; then + find ${FIND_BASE}/. -name '*.h' \( -type f -o -type l \) -print + else + find ${FIND_BASE}/. -name '*.h' -type f -print + fi | \ + sed -e 's;/\./;/;g' -e 's;//*;/;g' | \ + ${FIXINCL}`" +done + +## Make sure that any include files referenced using double quotes +## exist in the fixed directory. This comes last since otherwise +## we might end up deleting some of these files "because they don't +## need any change." +set x `echo $required` +shift +while [ $# != 0 ]; do + newreq= + while [ $# != 0 ]; do + # $1 is the directory to copy from, + # $2 is the unfixed file, + # $3 is the fixed file name. + # + cd ${INPUT} + cd $1 + if [ -f $2 ] ; then + if [ -r $2 ] && [ ! -r $3 ]; then + cp $2 $3 >/dev/null 2>&1 || echo "Can't copy $2" >&2 + chmod +w $3 2>/dev/null + chmod a+r $3 2>/dev/null + if test $VERBOSE -gt 2 + then echo Copied $2 ; fi + for include in `egrep '^[ ]*#[ ]*include[ ]*"[^/]' $3 | + sed -e 's/^[ ]*#[ ]*include[ ]*"\([^"]*\)".*$/\1/'` + do + dir=`echo $2 | sed -e s'|/[^/]*$||'` + dir2=`echo $3 | sed -e s'|/[^/]*$||'` + newreq="$newreq $1 $dir/$include $dir2/$include" + done + fi + fi + shift; shift; shift + done + set x $newreq + shift +done + +if test $VERBOSE -gt 2 +then echo 'Cleaning up DONE files.' ; fi +cd $LIB +# Look for files case-insensitively, for the benefit of +# DOS/Windows filesystems. +find . -name '[Dd][Oo][Nn][Ee]' -exec rm -f '{}' ';' + +if test $VERBOSE -gt 1 +then echo 'Cleaning up unneeded directories:' ; fi +cd $LIB +all_dirs=`find . -type d \! -name '.' -print | sort -r` +for file in $all_dirs; do + if rmdir $LIB/$file > /dev/null + then + test $VERBOSE -gt 3 && echo " removed $file" + fi +done 2> /dev/null + +# On systems which don't support symlinks, `find' may barf +# if called with "-type l" predicate. So only use that if +# we know we should look for symlinks. +if $LINKS; then + test $VERBOSE -gt 2 && echo "Removing unused symlinks" + + all_dirs=`find . -type l -print` + for file in $all_dirs + do + if test ! -d $file + then + rm -f $file + test $VERBOSE -gt 3 && echo " removed $file" + rmdir `dirname $file` > /dev/null && \ + test $VERBOSE -gt 3 && \ + echo " removed `dirname $file`" + fi + done 2> /dev/null +fi + +if test $VERBOSE -gt 0 +then echo fixincludes is done ; fi + +# # # # # # # # # # # # # # # # # # # # # +# +# End of for INPUT directories +# +done +# +# # # # # # # # # # # # # # # # # # # # # diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixincl.exe b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixincl.exe new file mode 100644 index 0000000..e576c6a Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixincl.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixproto b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixproto new file mode 100644 index 0000000..d1a32bd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/fixproto @@ -0,0 +1,340 @@ +#!/bin/sh +# +# SYNOPSIS +# fixproto TARGET-DIR SOURCE-DIR-ALL SOURCE-DIR-STD +# +# COPYRIGHT +# Copyright (C) 1993, 1994, 1997, 1998, 2002, 2003, 2007 +# Free Software Foundation, Inc. +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . +# +# DESCRIPTION +# Adjunct script for GCC to populate a directory with ANSI, +# Posix.1, and C++ compatible header files. +# +# Each file found under SOURCE-DIR-ALL is analyzed and "fixed." +# Only standard ANSI/POSIX files found under SOURCE-DIR-STD +# are analyzed and "fixed." +# The SOURCE-DIRs are searched in order; a file found +# under multiple SOURCE-DIRs is only handled for the first one. +# +# STRATEGY +# Each include file is fed through cpp, and the scan-decls program +# parses it, and emits any found function declarations. +# The fix-header program analyzes the scan-decls output, +# together with the original include file, and writes a "fixed" +# include file, if needed. +# +# The comment at the beginning of fix-header.c lists specifically +# what kind of changes are made. +# +# NOTE +# Some file space will be wasted, because the original header +# files are copied. An earlier version just included the original +# by "reference", using GNU cpp's #include_next mechanism. +# This is currently not done, partly because #include_next is +# fragile (susceptible to version incompatibilities, and depends +# and GCC-specific features), and partly for performance reasons. +# +# AUTHORS +# Ron Guilmette (rfg@netcom.com) (original idea and code) +# Per Bothner (bothner@cygnus.com) (major re-write) + +dirname=`echo "$0" | sed 's,^[^/]*$,.,;s,//*[^/]*$,,'` +progname=`echo "$0" | sed 's,.*/,,'` +original_dir=`${PWDCMD-pwd}` +FIX_HEADER=${FIX_HEADER-$original_dir/fix-header} +DEFINES="-D__STDC__=0 -D__cplusplus ${FIXPROTO_DEFINES}" + +if mkdir -p . 2> /dev/null; then + # Great, mkdir accepts -p + mkinstalldirs="mkdir -p" +else + # We expect mkinstalldirs to be passed in the environment. + # If it is not, assume it is in the directory that contains this script. + mkinstalldirs=${mkinstalldirs-"/bin/sh $dirname/mkinstalldirs"} + if $mkinstalldirs . 2> /dev/null; then + : + else + # But, in case of failure, fallback to plain mkdir, and hope it works + mkinstalldirs=mkdir + fi +fi + +if [ `echo $1 | wc -w` = 0 ] ; then + echo $progname\: usage\: $progname target-dir \[ source-dir \.\.\. \] + exit 1 +fi + +std_files="ctype.h dirent.h errno.h curses.h fcntl.h grp.h locale.h math.h pwd.h setjmp.h signal.h stdio.h stdlib.h string.h sys/socket.h sys/stat.h sys/times.h sys/resource.h sys/utsname.h sys/wait.h tar.h termios.h time.h unistd.h utime.h" + +rel_target_dir=$1 +# All files in $src_dir_all (normally same as $rel_target_dir) are +# processed. +src_dir_all=$2 +# In $src_dir_std (normally same as /usr/include), only the +# "standard" ANSI/POSIX files listed in $std_files are processed. +src_dir_std=$3 + +case $rel_target_dir in + /* | [A-Za-z]:[\\/]*) + abs_target_dir=$rel_target_dir + ;; + *) + abs_target_dir=$original_dir/$rel_target_dir + ;; +esac + +# Determine whether this system has symbolic links. +if ln -s X $rel_target_dir/ShouldNotExist 2>/dev/null; then + rm -f $rel_target_dir/ShouldNotExist + LINKS=true +elif ln -s X /tmp/ShouldNotExist 2>/dev/null; then + rm -f /tmp/ShouldNotExist + LINKS=true +else + LINKS=false +fi + +if [ \! -d $abs_target_dir ] ; then + echo $progname\: creating directory $rel_target_dir + $mkinstalldirs $abs_target_dir +fi + +echo $progname\: populating \`$rel_target_dir\' + +include_path="" + +if [ `echo $* | wc -w` != 0 ] ; then + for rel_source_dir in $src_dir_all $src_dir_std; do + case $rel_source_dir in + /* | [A-Za-z]:[\\/]*) + abs_source_dir=$rel_source_dir + ;; + *) + abs_source_dir=$original_dir/$rel_source_dir + ;; + esac + include_path="$include_path -I$abs_source_dir" + done +fi + +done_dirs="" +subdirs_made="" +echo "" >fixproto.list + +for code in ALL STD ; do + + subdirs="." + + case $code in + ALL) + rel_source_dir=$src_dir_all + + dirs="." + levels=2 + while $LINKS && test -n "$dirs" -a $levels -gt 0 + do + levels=`expr $levels - 1` + newdirs= + for d in $dirs ; do + # Find all directories under $d, relative to $d, excluding $d itself. + # Assume directory names ending in CC or containing ++ are + # for C++, so skip those. + subdirs="$subdirs "`cd $rel_source_dir/$d; find . -type d -print | \ + sed -e '/^\.$/d' -e "s|^\./|${d}/|" -e 's|^\./||' \ + -e '/CC$/d' -e '/[+][+]/d'` + links= + links=`cd $rel_source_dir; find $d/. -type l -print | \ + sed -e "s|$d/./|$d/|" -e 's|^\./||'` + for link in $links --dummy-- ; do + test -d $rel_source_dir/$link/. && newdirs="$newdirs $link" + done + done + dirs="$newdirs" + subdirs="$subdirs $newdirs" + done + ;; + STD) + rel_source_dir=$src_dir_std + ;; + esac + + case $rel_source_dir in + /* | [A-Za-z]:[\\/]*) + abs_source_dir=$rel_source_dir + ;; + *) + abs_source_dir=$original_dir/$rel_source_dir + ;; + esac + + if [ \! -d $abs_source_dir ] ; then + echo $progname\: warning\: no such directory\: \`$rel_source_dir\' + continue + fi + + for rel_source_subdir in $subdirs; do + + abs_target_subdir=${abs_target_dir}/${rel_source_subdir} + if [ \! -d $abs_target_subdir ] ; then + if $mkinstalldirs $abs_target_subdir ; then + subdirs_made="$abs_target_subdir $subdirs_made" + fi + fi + # Append "/"; remove initial "./". Hence "." -> "" and "sys" -> "sys/". + rel_source_prefix=`echo $rel_source_subdir | sed -e 's|$|/|' -e 's|^\./||'` + + case $code in + ALL) + # The 'sed' is in case the *.h matches nothing, which yields "*.h" + # which would then get re-globbed in the current directory. Sigh. + rel_source_files=`cd ${abs_source_dir}/${rel_source_subdir}; echo *.h | sed -e 's|[*].h|NONE|'` + ;; + + STD) + files_to_check="$std_files" + rel_source_files="" + + # Also process files #included by the $std_files. + while [ -n "${files_to_check}" ] + do + new_files_to_check="" + for file in $files_to_check ; do + xxfile=`echo $file | sed -e 's|/\([^/\.][^/\.]*\)/\.\./|/|'` + # Create the dir where this file will go when fixed. + xxdir=`echo ./$file | sed -e 's|/[^/]*$||'` + if [ \! -d $abs_target_subdir/$xxdir ] ; then + if $mkinstalldirs $abs_target_subdir/$xxdir ; then + subdirs_made="$abs_target_subdir/$xxdir $subdirs_made" + fi + fi + # Just in case we have edited out a symbolic link + if [ -f $src_dir_std/$file -a -f $src_dir_std/$xxfile ] ; then + file=$xxfile + fi + case " $rel_source_files " in + *" ${file} "*) + # Already seen $file; nothing to do + ;; + *) + if test -f $src_dir_std/$file ; then + rel_dir=`echo $file | sed -n -e 's|^\(.*/\)[^/]*$|\1|p'` + # For #include "foo.h", that might be either "foo.h" + # or "${rel_dir}foo.h (or something bogus). + new_files_to_check="$new_files_to_check "`sed -n \ + -e 's@ @ @g' \ + -e 's@^ *# *include *<\([^>]*\)>.*$@\1@p' -e \ + 's@^ *# *include *\"\([^\"]*\)\".*$@\1 '$rel_dir'\1@p'\ + <$src_dir_std/$file` + rel_source_files="$rel_source_files $file" + fi + ;; + esac + done + files_to_check="$new_files_to_check" + done + rel_source_files="$rel_source_files" + ;; + esac + + for filename in $rel_source_files ; do + rel_source_file=${rel_source_prefix}${filename} + abs_source_file=$abs_source_dir/$rel_source_file + abs_target_file=$abs_target_dir/$rel_source_file + + if test "$filename" = 'NONE' ; then + echo "(No *.h files in $abs_source_dir/$rel_source_subdir)" + # If target file exists, check if was written while processing one + # of the earlier source directories; if so ignore it. + elif test -f $abs_target_file -a -n "$done_dirs" \ + && grep "$rel_source_file" fixproto.list >/dev/null + then true + else + $FIX_HEADER $rel_source_file $abs_source_file $abs_target_file ${DEFINES} $include_path + if test $? != 0 ; then exit 1 ; fi + echo "${rel_source_file}" >>fixproto.list + fi + done + done + done_dirs="$done_dir $rel_source_dir" +done + +# This might be more cleanly moved into the main loop, by adding +# a source directory at the end. FIXME! + +# All the headers we create define size_t and NULL. +for rel_source_file in unistd.h stdlib.h string.h time.h ; do + if grep "$rel_source_file" fixproto.list >/dev/null ; then + : # It exists, we don't need to make it + else + echo Adding missing $rel_source_file + rel_source_ident=`echo $rel_source_file | tr ./ __` + cat >tmp.h < +EOF + # Insert special stuff for particular files here. + case ${rel_source_file} in + time.h) + # If time.h doesn't exist, find out if sys/time.h does. + if test -f $src_dir_std/sys/time.h \ + || grep "sys/time.h" fixproto.list >/dev/null ; then + # It does; include it and hope it has the needed declarations. + # Some versions require sys/types.h. + cat >>tmp.h < +#include +EOF + else + # It doesn't. Make up plausible definitions for time_t, clock_t. + # Forward-declare struct tm. Hope nobody tries to use it. (Odds + # are they won't.) + cat >>tmp.h <>tmp.h </dev/null + +exit 0 diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/mkheaders b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/mkheaders new file mode 100644 index 0000000..e2ff7ab --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/mkheaders @@ -0,0 +1,110 @@ +#!/bin/sh + +# Copyright (C) 2002, 2007 Free Software Foundation, Inc. + +#This file is part of GCC. + +#GCC is free software; you can redistribute it and/or modify it under +#the terms of the GNU General Public License as published by the Free +#Software Foundation; either version 2, or (at your option) any later +#version. + +#GCC is distributed in the hope that it will be useful, but WITHOUT +#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +#for more details. + +#You should have received a copy of the GNU General Public License +#along with GCC; see the file COPYING. If not, write to the Free +#Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +#02110-1301, USA. + +# Basic information +target=avr-unknown-none +target_noncanonical=avr +version=4.3.2 + +VERBOSE=0 +while [ x$1 = x-v ] ; do + shift + VERBOSE=`expr $VERBOSE + 1` +done +export VERBOSE + +if [ x$1 = x--help ] ; then + echo "Usage: mkheaders [options] [prefix [isysroot]]" + echo "Options:" + echo " -v Print more output (may be repeated for even more output)" + echo " --help This help" + echo " --version Print version information" + exit 0 +fi + +if [ x$1 = x--version ] ; then + echo "mkheaders (GCC) version $version" + echo "Copyright 2002, 2007 Free Software Foundation, Inc." + echo "This program is free software; you may redistribute it under the" + echo "terms of the GNU General Public License. This program has" + echo "absolutely no warranty." + exit 0 +fi + +# Common prefix for installation directories. +if [ x$1 != x ] ; then + prefix=$1 + shift +else + prefix=/c/WinAVR +fi + +# Allow for alternate isysroot in which to find headers +if [ x$1 != x ] ; then + isysroot=$1 + shift +else + isysroot= +fi + +# Directory in which to put host dependent programs and libraries +exec_prefix=${prefix} +# Directory in which to put the directories used by the compiler. +libdir=${exec_prefix}/lib +libexecdir=${exec_prefix}/libexec +# Directory in which the compiler finds libraries, etc. +libsubdir=${libdir}/gcc/${target_noncanonical}/${version} +# Directory in which the compiler finds executables +libexecsubdir=${libexecdir}/gcc/${target_noncanonical}/${version} + +itoolsdir=${libexecsubdir}/install-tools +itoolsdatadir=${libsubdir}/install-tools +incdir=${libsubdir}/include-fixed +mkinstalldirs="/bin/sh ${itoolsdir}/mkinstalldirs" + +cd ${itoolsdir} +rm -rf ${incdir}/* + +for ml in `cat ${itoolsdatadir}/fixinc_list`; do + sysroot_headers_suffix=`echo ${ml} | sed -e 's/;.*$//'` + multi_dir=`echo ${ml} | sed -e 's/^[^;]*;//'` + subincdir=${incdir}${multi_dir} + . ${itoolsdatadir}/mkheaders.conf + if [ x${STMP_FIXINC} != x ] ; then + TARGET_MACHINE="${target}" target_canonical="${target}" \ + MACRO_LIST="${itoolsdatadir}/macro_list" \ + /bin/sh ./fixinc.sh ${subincdir} \ + ${isysroot}${SYSTEM_HEADER_DIR} ${OTHER_FIXINCLUDES_DIRS} + rm -f ${subincdir}/syslimits.h + if [ -f ${subincdir}/limits.h ]; then + mv ${subincdir}/limits.h ${subincdir}/syslimits.h + else + cp ${itoolsdatadir}/gsyslimits.h ${subincdir}/syslimits.h + fi + fi + + cp ${itoolsdatadir}/include${multi_dir}/limits.h ${subincdir} + + if [ x${STMP_FIXPROTO} != x ] ; then + export FIXPROTO_DEFINES mkinstalldirs + /bin/sh fixproto ${subincdir} ${subincdir} ${isysroot}${SYSTEM_HEADER_DIR} || exit 1 + fi +done diff --git a/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/mkinstalldirs b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/mkinstalldirs new file mode 100644 index 0000000..259dbfc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/libexec/gcc/avr/4.3.2/install-tools/mkinstalldirs @@ -0,0 +1,158 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2005-06-29.22 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/arduino-0018-windows/hardware/tools/avr/mfile/README b/arduino-0018-windows/hardware/tools/avr/mfile/README new file mode 100644 index 0000000..8b031dc --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/mfile/README @@ -0,0 +1,115 @@ +# $Id: README,v 2.1 2007/04/12 18:10:13 arcanum Exp $ + +Mfile - a simple Makefile generator for AVR-GCC +================================================ + +[See below for installation instructions] + +General +------- + +The main purpose of this small application is to provide people an +easy way to setup their project's Makefiles for »relatively standard« +projects, so one could start using AVR-GCC without first studying the +AVR's datasheet, plus the avr-libc documentation (really +recommended!), /plus/ the »GNU make« user manual. + +It cannot really release the potential programmer from eventually +studying the »GNU make« manual, but it can help to delay this part a +few months. + +This generator works by using a Makefile template (the one that +currently ships with WinAVR), load it into an editor buffer so the +user can view the file and the changes, and then use a menu-driven +approach to customize that buffer. Eventually, at the user's +discretion, this editor buffer can be saved into a Makefile. +(Optionally, the user can also edit the buffer directly, so it acts as +a simple text editor.) + +While the Programmer's Notepad 2 (PN2) editor that ships with WinAVR +intends to eventually implement this functionality some day, there are +two reasons for this little project: + +. Act as a stop-gap measure so users will get something they can use + right now, without waiting any longer. + +. Since this tool is written in Tcl/Tk, it is also portable to Unix + systems, so Unix users (who'd never benefit from PN2) might use it. + +I do explicitly /not/ intend to make this tool the all-singing +all-dancing scriptable Makefile generator that can emit any Makefile +for any processor and compiler on earth. I really do not want to +spend that many more hours into it, it was intented to be a quick and +(hopefully not so) dirty tool that gets finished within a couple of +evenings, and won't cost me another dozen of hours per months for +supporting it, adding new features etc. If you feel this is worth +porting somewhere else (like for the MSP430-GCC that is probably +fairly close to AVR-GCC in terms of typical use), please pick it up, +extend it, and maintain it separately. As always, I appreciate +feedback, but reserve the right to ignore anything that tries to +extend this tool above the outlined original purpose. + +Note that the Makefile template as shipped requires GNU make for +various things (automagic dependency generation, some inference rules +are written in gmake syntax as well). However, as Mfile only relies +on a few macro names in the template, it should be relatively easy to +modify the template for other »make« dialects. The template (or input +file upon »File -> Open«) will be parsed when reading it, and only +those features actually present will be displayed in the »Makefile« +menu. So if e. g. people don't want to include AVRdude features, they +can delete all related lines from the template. Also if someone (like +Unix users, in particular those not using GNU make) want to modify the +way the dependencies are generated (e. g. by using the traditional +»make depend« approach), this should be completely unrelated. + + +Prerequisites +------------- + +Requires the Tcl and Tk toolkits in recent versions (no exact version +known, probably any 8.x version is OK). + +As an alternative to the standard Tk wish interpreter, the tix +toolkit's tixwish interpreter can be used. Under Unix systems, the +look & feel is then closer to what Tk wish looks like under Windows. + + + +Installation on Unix +-------------------- + +Extract the archive into an arbitrary subdirectory, like + +/usr/local/share/mfile + +If a different directory is chosen, edit the setting of »prefix« on +top of mfile.tcl to match the installation directory, or alternatively +use the environment variable MFILE_HOME to override the default +setting. + +If you prefer, create a symbolic link for convenience (so the +application can be found along your default $PATH setting), like + +ln -s /usr/local/share/mfile/mfile.tcl /usr/local/bin/mfile + +Remember to edit the file makefile_template to suite your needs (e. g. +default settings, adaptation to non-GNU make utilities). + + +Upgrading an Mfile installation on WinAVR +----------------------------------------- + +Starting with WinAVR 20040404, the WinAVR collection is shipping Mfile +pre-installed. (After all, the WinAVR users have once been the +primary reason to develop Mfile at all.) + +In order to upgrade the Mfile files supplied with WinAVR, extract the +archive into some directory, and copy all the files into + +\mfile + +That ought to be all that is to be done. + +---------------------------------------------------------------------- +Dresden, F. R. Germany, $Date: 2007/04/12 18:10:13 $ +Joerg Wunsch diff --git a/arduino-0018-windows/hardware/tools/avr/mfile/help.html b/arduino-0018-windows/hardware/tools/avr/mfile/help.html new file mode 100644 index 0000000..29e1dbf --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/mfile/help.html @@ -0,0 +1,165 @@ + + + + + + + + + +Mfile help + +

Simple Makefile generator for AVR-GCC

+

Copyright © 2003, 2004 Jörg Wunsch

+ +
+

This simple Makefile generator is meant as an aid to quickly +customize the WinAVR Makefile template, producing a file called +Makefile in the current directory as result.

+ +

The application consists of a (scrollable) text editor widget, and +a menu bar.

+ +

The File menu has only two entries:

+ +
    +
  • Save writes the contents of the text editor widget to a + file called Makefile. Should any file by that name + already exist, it will be renamed. Under Unix, a tilde will be + appended to the old name, all other platforms append a .bak + suffix. +
  • Save As opens a filename selection dialog, and allows + the user to select a file to save to. After selecting the file + name, it behaves identical to Save. +
  • Open opens a filename selection dialog, requesting an + existing file to be opened by the user. This file will be loaded + into the editor buffer, and the Makefile menu will be + updated accordingly. +
  • Exit will quit the application. No checks whatsoever + are done to ensure the user has saved his editing work before. +
+ +

The Makefile menu allows customization of the generated +Makefile. Note that the various menu items described below will only +be present if the corresponding feature is present in the parsed +template or input file. This menu is divided into three areas:

+ +
    +
  • Code generation options +
      +
    • The entry Main file name opens a popup window that asks + for the basic name of this + project. This will become the base name for all major output files + (ELF file, MCU output file, several auxiliary files). By default, it + will also serve as the name of the primary C source file, with a + .c suffix appended. The popup will be closed by pressing + in the entry field. +
    • The entries MCU type, Output format, + Optimization level, + and C standard level select possible values out of a + predefined list. When selecting one of these options, the + respective Makefile macro will be modified accordingly, and the + widget will be adjusted so the new values can be seen + immediately. +
    • The entry printf() options works similar, only it does + not modify a Makefile macro of its own but edits the PRINTF_LIB + macro instead. Note that setting this away from + none/standard will cause the generated application to + always include the code for vfprintf() (which is huge), + regardless of whether the application actually uses any member + of the printf() family. See the avr-libc documentation for the + meaning of the different options. +
    • Likewise, changing the scanf() options changes the + macro SCANF_LIB, in the same manner. Note that the + scanf() format %[ (string match out of a set of + characters) will only be present in the floating point version + since it requires a lot of code, as well as using + malloc() (which is otherwise only required for the + floating point version). +
    • The entry C/C++ source file(s) opens a popup that asks + for a list of C (or C++) source files. C source files get the + suffix .c (lower-case letter c), C++ source files get + either of .C (capital c), .cxx, or .cc. + Multiple file names shall be seperated by spaces. A checkbox + indicates whether the primary C source file name derived from + the Main file name setting should be included or not. + The popup will be closed by pressing in the entry + field. +
    • The entry Assembler source file(s) works similar + except there are no default assembler sources to be included. + Note that assembler source files get the suffix .S + (capital letter s) which means they are being pre-processed by + the C preprocessor, so #include etc. will work. A + lower-case letter .s suffix is considered to be a + temporary compiler output file, and should not be used here. +
    • Using External RAM options, several possible variants + to use external RAM can be selected. This is internally handled + by editing the EXTMEMOPTS macro which eventually gets added to + the LDFLAGS during linking. The options are to either use + external RAM for both, variables (i. e. sections .data and .bss) + as well as for the heap (dynamic memory for malloc()), + or to leave variables in internal memory and use the external + RAM only for the heap. In both cases, the stack will always + remain in internal memory; this is the fastest way, and some + AVR MCUs have hardware bugs so they would not work when the + stack is located in external RAM. It can be selected whether + the external RAM should start at the lowest possible memory + location (right behind the internal RAM), or at a different + memory address. Several common memory sizes can be chosen from. + Obviously, these options are only accessible for MCU types that + do have an external memory interface. +
    • The entry Debug format selects one out of the following + options: +
        +
      • ELF/stabs ELF object files with stabs debugging + information are currently the native way to debug under Unix + and/or GDB. This includes any GDB frontend, like Insight or + DDD. +
      • AVR-COFF Selecting this format will internally also + generate an ELF/stabs file, but change the Makefile to + subsequently convert the ELF file into a COFF file that adheres + to the originally Atmel AVR COFF file format specification. + This file format is understood by AVR Studio up to 3.x, and + VMLAB up to 3.9. +
      • AVR-ext-COFF The conversion from internal ELF to + COFF will be tuned to produce a file according to the later + AVR "extended" COFF specification by Atmel, understood by AVR + Studio 4.07 and above, and VMLAB 3.10 and above. +
      • ELF/DWARF-2 Create an ELF standard object file with + DWARF-2 debug information. This is the proposed standard debug + format for ELF. It is currently Beta, the GNU tools are slowly + changing towards that standard (though it is not yet known + whether AVR-GDB will already fully understand the format yet), + and Atmel has released a beta ELF/DWARF-2 parser for their AVR + Studio. +
      +
    +
  • AVRdude options +
      +
    • The entry Programmer allows the selection of + the programming hardware (parallel port "dongle", or serially + connected hardware). +
    • The entry Port selects the serial or parallel + port AVRdude is going to talk across. This menu item might + be missing on some operating systems where no default ports + are known. +
    +
  • Miscellaneous +
      +
    • By default, the editor widget is read-only, and can only be + modified by the menu entries mentioned above. By checking the + Enable Editing of Makefile checkbox, this restriction can be lifted, + and the widget can be used as a simple standard text editor for + the generated Makefile. Note that the menu operations mentioned + above are not guaranteed to work on arbitrary input texts since + they search for certain patterns in order to implement their + functionality, so manual editing should always be used as a last + step before eventually saving the generated Makefile. +
    +
+ + +

+Jörg Wunsch · <j.gnu@uriah.heep.sax.de> · +$Date: 2006/03/21 21:22:12 $
+ diff --git a/arduino-0018-windows/hardware/tools/avr/mfile/htmlview.tcl b/arduino-0018-windows/hardware/tools/avr/mfile/htmlview.tcl new file mode 100644 index 0000000..5513483 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/mfile/htmlview.tcl @@ -0,0 +1,606 @@ +# ---------------------------------------------------------------------------- +# "THE BEER-WARE LICENSE" (Revision 42) (by Poul-Henning Kamp): +# Joerg Wunsch wrote this file. As long as you +# retain this notice you can do whatever you want with this stuff. If we meet +# some day, and you think this stuff is worth it, you can buy me a beer +# in return. +# ---------------------------------------------------------------------------- +# +# $Id: htmlview.tcl,v 2.0 2006/03/21 21:22:15 joerg_wunsch Exp $ +# +# This implements a simple HTML viewer that is just suitable to browse through +# a document generated by latex2html +# + +proc htmlview {file} { + global htmlposx htmlposy + global tcl_platform + global helpicon + global tcl_platform + global bgcolor + + if {$file == ""} { + return + } + + set subtag "" + # determine requested subtag (if any) + if {[regexp "^(\[^\#\]*)\#(.*)" $file dummy match subtag]} { + set file $match + } + + set f "" + catch {set f [open $file]} + if {$f == ""} { + return + } + + set dirname [file dirname $file] + + set ok 0 + while {!$ok} { + set w ".htmlview[expr {int(rand()*30000)}]" + if {![winfo exists $w]} { + set ok 1 + } + } + toplevel $w + if {[info exists htmlposx]} { + set htmlposx [expr $htmlposx + 10] + set htmlposy [expr $htmlposy + 10] + } else { + set htmlposx [expr [winfo x .] + 80] + set htmlposy [expr [winfo y .] + 50] + } + wm geometry $w "+$htmlposx+$htmlposy" + wm positionfrom $w user + + frame $w.f0 + text $w.f0.t1 -wrap word -yscrollcommand "$w.f0.sb1 set" \ + -font {Helvetica -12} -cursor {top_left_arrow} + scrollbar $w.f0.sb1 -command "$w.f0.t1 yview" + frame $w.f1 + button $w.f1.bok -text {Close} -command "destroy $w" + #button $w.f1.closeall -text {Hilfe beenden} -command {destroyhtmlwins} + pack $w.f0.t1 -side left -expand 1 -fill both + pack $w.f0.sb1 -side right -expand 0 -fill y + pack $w.f0 -side top -expand 1 -fill both + pack $w.f1.bok -side left + #pack $w.f1.closeall -side right + pack $w.f1 -side top + + update + set x [winfo width $w] + set y [winfo height $w] + wm minsize $w $x $y + + bind $w "$w.f0.t1 yview scroll -10 units" + bind $w "$w.f0.t1 yview scroll 10 units" + bind $w "$w.f0.t1 yview scroll 10 units" + focus $w + + set bgcolor [$w.f0.t1 cget -background] + + if {$tcl_platform(platform) == "unix" && [file exists $helpicon]} { + wm iconbitmap $w @$helpicon + } + + set buf ""; set head ""; set tail "" + set title "" + set list ""; set lcount {1}; set ullevel 0 + set bold 0; set italic 0; set titlemode 0 + set tagno 0; set attribs {}; set attrib ""; set justify "left" + set paraopen 0 + set lmargin 0; set rmargin 0 + set hrno 0; set bulletno 0; set imgno 0 + set newlineput 0; set anchorhasmodifiedfont 0; set inheadline 0 + + while {1} { + # if $buf starts with a "<", it means we've got an unfinished yet + # tag in there, so we need to read more until the tag is finished + # and can be handled in full + if {$buf == "" || [string index $buf 0] == "<"} { + if {[gets $f lbuf] == -1} { + break + } + if {$lbuf == "" && !$inheadline} { + # single newline only, marks a paragraph break + set lbuf "

" + } + regsub -all {[\t ]+} $lbuf { } lbuf + if {[string index $lbuf end] != " "} { + set lbuf "$lbuf " + } + set buf "$buf$lbuf" + } + if {[set idx [string first "<" $buf]] != -1} { + set head [string range $buf 0 [expr $idx - 1]] + set tail [string range $buf $idx end] + } else { + set head $buf + set tail "" + } + if {[string length $head]} { + set head [untangletext $head] + if {$titlemode} { + set title "$title$head" + } else { + if {$attrib != ""} { + $w.f0.t1 insert end $head $attrib + } else { + $w.f0.t1 insert end $head + } + } + set head "" + } + if {[string length $tail]} { + if {[set idx [string first ">" $tail]] != -1} { + set tag [string range $tail 0 $idx] + set buf [string range $tail [expr $idx + 1] end] + set tag [string range $tag 1 end-1] + set tagname $tag + set remainder "" + regexp {^(/?[A-Za-z0-9]+) *(.*)} $tag dummy tagname remainder + set tagname [string tolower $tagname] + switch $tagname { + "br" { + $w.f0.t1 insert end "\n" + } + "p" { + if {$paraopen && $attrib != ""} { + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + set align "" + while {1} { + set x [parsetag $remainder] + set name [string tolower [lindex $x 0]] + set val [lindex $x 1] + set remainder [lindex $x 2] + + if {$name == ""} { + break + } + if {$name == "align"} { + set align [string tolower $val] + } + } + if {$align != ""} { + set justify "left" + switch $align { + "center" { set justify "center" } + "right" { set justify "right" } + } + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Helvetica -12 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + $w.f0.t1 insert end "\n" + set paraopen 1 + } + "/p" { + set paraopen 0 + if {$attrib != ""} { + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + } + "title" { + set titlemode 1 + set title "" + } + "/title" { + set titlemode 0 + wm title $w $title + } + "b" { + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Helvetica -12 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/b" { + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + "strong" { + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Helvetica -12 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/strong" { + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + "i" { + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Helvetica -12 italic} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/i" { + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + "em" { + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Helvetica -12 italic} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/em" { + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + "tt" { + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Courier -12} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/tt" { + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + "h1" { + incr inheadline + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Times -18 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/h1" { + set inheadline [expr $inheadline - 1] + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + $w.f0.t1 insert end "\n\n" + } + "h2" { + incr inheadline + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Times -16 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/h2" { + set inheadline [expr $inheadline - 1] + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + $w.f0.t1 insert end "\n\n" + } + "h3" { + incr inheadline + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Times -14 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/h3" { + set inheadline [expr $inheadline - 1] + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + $w.f0.t1 insert end "\n\n" + } + "h4" { + incr inheadline + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Times -12 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/h4" { + set inheadline [expr $inheadline - 1] + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + $w.f0.t1 insert end "\n\n" + } + "a" { + set target "" + while {1} { + set x [parsetag $remainder] + set name [string tolower [lindex $x 0]] + set val [lindex $x 1] + set remainder [lindex $x 2] + + if {$name == ""} { + break + } + if {$name == "href"} { + set target $val + } + if {$name == "name" && $subtag == $val} { + # subtag was requested, notice it + set see [$w.f0.t1 index end] + } + } + if {$target != "" && ![regexp {^(http:|ftp:)} $target]} { + switch $tcl_platform(platform) { + "windows" { + if {![regexp {^([A-Za-z]:)?[\\/]} $target]} { + # relative pathname + set target "$dirname/$target" + } + } + "unix" { + if {![regexp {^/} $val]} { + # relative unix pathname + set target "$dirname/$target" + } + } + } + set anchorhasmodifiedfont 1 + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -foreground {blue} + $w.f0.t1 tag configure $attrib -font {Helvetica -12 bold} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + $w.f0.t1 tag bind $attrib "htmlview $target" + } + } + "/a" { + if {$anchorhasmodifiedfont} { + set anchorhasmodifiedfont 0 + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + } + } + "ul" { + set list "ul" + incr ullevel + incr tagno + lappend attribs $attrib + set attrib "attrib$tagno" + set lmargin [expr 40 * $ullevel - 10] + set rmargin [expr 40 * $ullevel] + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Helvetica -12} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + } + "/ul" { + set ullevel [expr $ullevel - 1] + if {$ullevel == 0} { + set list "" + set lmargin 0 + set rmargin 0 + } else { + set lmargin [expr 40 * $ullevel - 10] + set rmargin [expr 40 * $ullevel] + } + set attrib [lindex $attribs end] + set attribs [lrange $attribs 0 end-1] + $w.f0.t1 tag add $attrib end + $w.f0.t1 tag configure $attrib -font {Helvetica -12} + $w.f0.t1 tag configure $attrib -lmargin1 $lmargin -lmargin2 $lmargin \ + -rmargin $rmargin -justify $justify + $w.f0.t1 insert end "\n" + } + "li" { + switch $list { + "ul" { + incr bulletno + canvas $w.bullet$bulletno \ + -width [expr 40 * $ullevel - 15] -height 6 \ + -background $bgcolor -highlightthickness 0 \ + -border 0 + if {$ullevel == 1} { + $w.bullet$bulletno create oval 11 1 14 4 + } else { + $w.bullet$bulletno create rectangle \ + [expr 40 * $ullevel - 29] 1 [expr 40 * $ullevel - 26] 4 + } + $w.f0.t1 insert end "\n" $attrib + $w.f0.t1 window create end -align baseline \ + -window $w.bullet$bulletno + } + } + } + "address" { + set attrib "" + set attribs {} + $w.f0.t1 insert end "\n" + } + "hr" { + update + incr hrno + makehr $w.hr$hrno [expr [winfo width $w.f0.t1] - 10] + $w.f0.t1 insert end "\n" $attrib + $w.f0.t1 window create end -window $w.hr$hrno + } + "img" { + set iwidth 0 + set iheight 0 + set ialign "bottom" + set isrc "" + while {1} { + set x [parsetag $remainder] + set name [string tolower [lindex $x 0]] + set val [lindex $x 1] + set remainder [lindex $x 2] + + if {$name == ""} { + break + } + switch $name { + "width" { set iwidth $val } + "height" { set iheight $val } + "src" { + switch $tcl_platform(platform) { + "windows" { + if {[regexp {^([A-Za-z]:)?[\\/]} $val]} { + # absolute pathname + set isrc $val + } else { + set isrc "$dirname/$val" + } + } + "unix" { + if {[regexp {^/} $val]} { + # absolute unix pathname + set isrc $val + } else { + set isrc "$dirname/$val" + } + } + } + } + "align" { set ialign [string tolower $val] } + } + } + if {$isrc != "" && [file exists $isrc]} { + incr imgno + image create photo htmlview$imgno \ + -width $iwidth -height $iheight \ + -file $isrc + set imgidx [$w.f0.t1 image create end -image htmlview$imgno] + $w.f0.t1 tag add $attrib $imgidx + $w.f0.t1 tag add $attrib end + } + } + } + } else { + # unfinished tag, return to $buf + set buf $tail + } + } else { + set buf "" + } + } + close $f + # prevent users from editing the text widget's contents + $w.f0.t1 configure -state disabled + if {[info exists see]} { + # we have a subtag to display + $w.f0.t1 see $see + } +} + +# parse $str, obtain first name=value pair, return remainder as well +proc parsetag {str} { + # first check for quoted value + if {[regexp {^([A-Za-z0-9_]+) *= *"([^\"]+)" *(.*)} $str dummy name val rem]} { + return [list $name $val $rem] + } + # else check for argument that must not contain a space + if {[regexp {^([A-Za-z0-9_]+) *= *([^ ]+) *(.*)} $str dummy name val rem]} { + return [list $name $val $rem] + } + # else we fail + return [list "" "" ""] +} + +# proc destroyhtmlwins {} { +# global htmlposx htmlposy + +# foreach win [winfo children .] { +# if {[string match {.htmlview[0-9]*} $win]} { +# destroy $win +# } +# } + +# foreach img [image names] { +# if {[string match {htmlview[0-9]+} $img]} { +# image delete $img +# } +# } + +# set htmlposx [expr [winfo x .] + 80] +# set htmlposy [expr [winfo y .] + 50] +# } + +proc makehr {c w} { + global bgcolor + + canvas $c -width $w -height 6 -background $bgcolor \ + -highlightthickness 0 + $c create line 2 2 [expr $w - 2] 2 -width 1 -fill "\#202020" + $c create line 2 2 2 4 -width 1 -fill "\#202020" + $c create line 3 4 [expr $w - 1] 4 -width 1 -fill "\#ffffff" + $c create line [expr $w - 2] 4 [expr $w - 2] 2 -width 1 -fill "\#ffffff" +} + +proc untangletext {t} { + + set result "" + set ok 1 + + while {$ok} { + if {[regexp {^([^&]*)&([^;]+);(.*)} $t dummy left marked right]} { + set result "$result$left" + set t $right + switch -glob $marked { + "Auml" { set result "${result}Ä" } + "Ouml" { set result "${result}Ö" } + "Uuml" { set result "${result}Ü" } + "auml" { set result "${result}ä" } + "ouml" { set result "${result}ö" } + "uuml" { set result "${result}ü" } + "szlig" { set result "${result}ß" } + "nbsp" { set result "${result} " } + "amp" { set result "${result}&" } + "lt" { set result "${result}<" } + "gt" { set result "${result}>" } + "\#[0-9]*" { + regexp {^.(.*)} $marked dummy c + set c [subst "\\[format {%o} $c]"] + set result ${result}$c + } + "*" { + # puts stderr "Warning: unknown html mark $marked" + } + } + } else { + set result "$result$t" + set ok 0 + } + } + + return $result +} diff --git a/arduino-0018-windows/hardware/tools/avr/mfile/htmlview.xbm b/arduino-0018-windows/hardware/tools/avr/mfile/htmlview.xbm new file mode 100644 index 0000000..dc84fcd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/mfile/htmlview.xbm @@ -0,0 +1,15 @@ +/* $Id: htmlview.xbm,v 2.0 2006/03/21 21:22:13 joerg_wunsch Exp $ */ +#define htmlview_width 32 +#define htmlview_height 32 +static unsigned char htmlview_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x42, 0x00, 0x00, 0x60, + 0xc6, 0x00, 0x02, 0x60, 0xc6, 0x00, 0x06, 0x60, 0xc6, 0x00, 0x06, 0x60, + 0xc6, 0x00, 0x06, 0x60, 0xc6, 0x00, 0x06, 0x60, 0xc6, 0x00, 0x06, 0x60, + 0xc6, 0x00, 0x06, 0x60, 0xfe, 0x1c, 0xc6, 0x63, 0xfe, 0x36, 0xc6, 0x67, + 0xc6, 0x66, 0xc6, 0x66, 0xc6, 0x7e, 0xc6, 0x66, 0xc6, 0x7e, 0xc6, 0x66, + 0xc6, 0x06, 0xc6, 0x66, 0xc6, 0x0e, 0xc6, 0x06, 0xc6, 0x3c, 0xce, 0x67, + 0xc6, 0x78, 0xcc, 0x63, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/arduino-0018-windows/hardware/tools/avr/mfile/makefile_template b/arduino-0018-windows/hardware/tools/avr/mfile/makefile_template new file mode 100644 index 0000000..35b1696 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/mfile/makefile_template @@ -0,0 +1,617 @@ +# Hey Emacs, this is a -*- makefile -*- +#---------------------------------------------------------------------------- +# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al. +# +# Released to the Public Domain +# +# Additional material for this makefile was written by: +# Peter Fleury +# Tim Henigan +# Colin O'Flynn +# Reiner Patommel +# Markus Pfaff +# Sander Pool +# Frederik Rouleau +# Carlos Lamas +# +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device, using avrdude. +# Please customize the avrdude settings below first! +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + + +# MCU name +MCU = atmega128 + + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# Typical values are: +# F_CPU = 1000000 +# F_CPU = 1843200 +# F_CPU = 2000000 +# F_CPU = 3686400 +# F_CPU = 4000000 +# F_CPU = 7372800 +# F_CPU = 8000000 +# F_CPU = 11059200 +# F_CPU = 14745600 +# F_CPU = 16000000 +# F_CPU = 18432000 +# F_CPU = 20000000 +F_CPU = 8000000 + + +# Output format. (can be srec, ihex, binary) +FORMAT = ihex + + +# Target file name (without extension). +TARGET = main + + +# Object files directory +# To put object files in current directory, use a dot (.), do NOT make +# this an empty or blank macro! +OBJDIR = . + + +# List C source files here. (C dependencies are automatically generated.) +SRC = $(TARGET).c + + +# List C++ source files here. (C dependencies are automatically generated.) +CPPSRC = + + +# List Assembler source files here. +# Make them always end in a capital .S. Files ending in a lowercase .s +# will not be considered source files but generated files (assembler +# output from the compiler), and will be deleted upon "make clean"! +# Even though the DOS/Win* filesystem matches both .s and .S the same, +# it will preserve the spelling of the filenames, and gcc itself does +# care about how the name is spelled on its command-line. +ASRC = + + +# Optimization level, can be [0, 1, 2, 3, s]. +# 0 = turn off optimization. s = optimize for size. +# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) +OPT = s + + +# Debugging format. +# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. +# AVR Studio 4.10 requires dwarf-2. +# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. +DEBUG = dwarf-2 + + +# List any extra directories to look for include files here. +# Each directory must be seperated by a space. +# Use forward slashes for directory separators. +# For a directory that has spaces, enclose it in quotes. +EXTRAINCDIRS = + + +# Compiler flag to set the C Standard level. +# c89 = "ANSI" C +# gnu89 = c89 plus GCC extensions +# c99 = ISO C99 standard (not yet fully implemented) +# gnu99 = c99 plus GCC extensions +CSTANDARD = -std=gnu99 + + +# Place -D or -U options here for C sources +CDEFS = -DF_CPU=$(F_CPU)UL + + +# Place -D or -U options here for ASM sources +ADEFS = -DF_CPU=$(F_CPU) + + +# Place -D or -U options here for C++ sources +CPPDEFS = -DF_CPU=$(F_CPU)UL +#CPPDEFS += -D__STDC_LIMIT_MACROS +#CPPDEFS += -D__STDC_CONSTANT_MACROS + + + +#---------------- Compiler Options C ---------------- +# -g*: generate debugging information +# -O*: optimization level +# -f...: tuning, see GCC manual and avr-libc documentation +# -Wall...: warning level +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns...: create assembler listing +CFLAGS = -g$(DEBUG) +CFLAGS += $(CDEFS) +CFLAGS += -O$(OPT) +CFLAGS += -funsigned-char +CFLAGS += -funsigned-bitfields +CFLAGS += -fpack-struct +CFLAGS += -fshort-enums +CFLAGS += -Wall +CFLAGS += -Wstrict-prototypes +#CFLAGS += -mshort-calls +#CFLAGS += -fno-unit-at-a-time +#CFLAGS += -Wundef +#CFLAGS += -Wunreachable-code +#CFLAGS += -Wsign-compare +CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst) +CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) +CFLAGS += $(CSTANDARD) + + +#---------------- Compiler Options C++ ---------------- +# -g*: generate debugging information +# -O*: optimization level +# -f...: tuning, see GCC manual and avr-libc documentation +# -Wall...: warning level +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns...: create assembler listing +CPPFLAGS = -g$(DEBUG) +CPPFLAGS += $(CPPDEFS) +CPPFLAGS += -O$(OPT) +CPPFLAGS += -funsigned-char +CPPFLAGS += -funsigned-bitfields +CPPFLAGS += -fpack-struct +CPPFLAGS += -fshort-enums +CPPFLAGS += -fno-exceptions +CPPFLAGS += -Wall +CPPFLAGS += -Wundef +#CPPFLAGS += -mshort-calls +#CPPFLAGS += -fno-unit-at-a-time +#CPPFLAGS += -Wstrict-prototypes +#CPPFLAGS += -Wunreachable-code +#CPPFLAGS += -Wsign-compare +CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst) +CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) +#CPPFLAGS += $(CSTANDARD) + + +#---------------- Assembler Options ---------------- +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns: create listing +# -gstabs: have the assembler create line number information; note that +# for use in COFF files, additional information about filenames +# and function names needs to be present in the assembler source +# files -- see avr-libc docs [FIXME: not yet described there] +# -listing-cont-lines: Sets the maximum number of continuation lines of hex +# dump that will be displayed for a given single line of source input. +ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100 + + +#---------------- Library Options ---------------- +# Minimalistic printf version +PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min + +# Floating point printf version (requires MATH_LIB = -lm below) +PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt + +# If this is left blank, then it will use the Standard printf version. +PRINTF_LIB = +#PRINTF_LIB = $(PRINTF_LIB_MIN) +#PRINTF_LIB = $(PRINTF_LIB_FLOAT) + + +# Minimalistic scanf version +SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min + +# Floating point + %[ scanf version (requires MATH_LIB = -lm below) +SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt + +# If this is left blank, then it will use the Standard scanf version. +SCANF_LIB = +#SCANF_LIB = $(SCANF_LIB_MIN) +#SCANF_LIB = $(SCANF_LIB_FLOAT) + + +MATH_LIB = -lm + + +# List any extra directories to look for libraries here. +# Each directory must be seperated by a space. +# Use forward slashes for directory separators. +# For a directory that has spaces, enclose it in quotes. +EXTRALIBDIRS = + + + +#---------------- External Memory Options ---------------- + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# used for variables (.data/.bss) and heap (malloc()). +#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# only used for heap (malloc()). +#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff + +EXTMEMOPTS = + + + +#---------------- Linker Options ---------------- +# -Wl,...: tell GCC to pass this to linker. +# -Map: create map file +# --cref: add cross reference to map file +LDFLAGS = -Wl,-Map=$(TARGET).map,--cref +LDFLAGS += $(EXTMEMOPTS) +LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) +LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) +#LDFLAGS += -T linker_script.x + + + +#---------------- Programming Options (avrdude) ---------------- + +# Programming hardware +# Type: avrdude -c ? +# to get a full listing. +# +AVRDUDE_PROGRAMMER = stk500v2 + +# com1 = serial port. Use lpt1 to connect to parallel port. +AVRDUDE_PORT = com1 # programmer connected to serial device + +AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex +#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep + + +# Uncomment the following if you want avrdude's erase cycle counter. +# Note that this counter needs to be initialized first using -Yn, +# see avrdude manual. +#AVRDUDE_ERASE_COUNTER = -y + +# Uncomment the following if you do /not/ wish a verification to be +# performed after programming the device. +#AVRDUDE_NO_VERIFY = -V + +# Increase verbosity level. Please use this when submitting bug +# reports about avrdude. See +# to submit bug reports. +#AVRDUDE_VERBOSE = -v -v + +AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) +AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) +AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) + + + +#---------------- Debugging Options ---------------- + +# For simulavr only - target MCU frequency. +DEBUG_MFREQ = $(F_CPU) + +# Set the DEBUG_UI to either gdb or insight. +# DEBUG_UI = gdb +DEBUG_UI = insight + +# Set the debugging back-end to either avarice, simulavr. +DEBUG_BACKEND = avarice +#DEBUG_BACKEND = simulavr + +# GDB Init Filename. +GDBINIT_FILE = __avr_gdbinit + +# When using avarice settings for the JTAG +JTAG_DEV = /dev/com1 + +# Debugging port used to communicate between GDB / avarice / simulavr. +DEBUG_PORT = 4242 + +# Debugging host used to communicate between GDB / avarice / simulavr, normally +# just set to localhost unless doing some sort of crazy debugging when +# avarice is running on a different computer. +DEBUG_HOST = localhost + + + +#============================================================================ + + +# Define programs and commands. +SHELL = sh +CC = avr-gcc +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size +AR = avr-ar rcs +NM = avr-nm +AVRDUDE = avrdude +REMOVE = rm -f +REMOVEDIR = rm -rf +COPY = cp +WINSHELL = cmd + + +# Define Messages +# English +MSG_ERRORS_NONE = Errors: none +MSG_BEGIN = -------- begin -------- +MSG_END = -------- end -------- +MSG_SIZE_BEFORE = Size before: +MSG_SIZE_AFTER = Size after: +MSG_COFF = Converting to AVR COFF: +MSG_EXTENDED_COFF = Converting to AVR Extended COFF: +MSG_FLASH = Creating load file for Flash: +MSG_EEPROM = Creating load file for EEPROM: +MSG_EXTENDED_LISTING = Creating Extended Listing: +MSG_SYMBOL_TABLE = Creating Symbol Table: +MSG_LINKING = Linking: +MSG_COMPILING = Compiling C: +MSG_COMPILING_CPP = Compiling C++: +MSG_ASSEMBLING = Assembling: +MSG_CLEANING = Cleaning project: +MSG_CREATING_LIBRARY = Creating library: + + + + +# Define all object files. +OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) + +# Define all listing files. +LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) + + +# Compiler flags to generate dependency files. +GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d + + +# Combine all necessary flags and optional flags. +# Add target processor to flags. +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) +ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + + + + +# Default target. +all: begin gccversion sizebefore build sizeafter end + +# Change the build target to build a HEX file or a library. +build: elf hex eep lss sym +#build: lib + + +elf: $(TARGET).elf +hex: $(TARGET).hex +eep: $(TARGET).eep +lss: $(TARGET).lss +sym: $(TARGET).sym +LIBNAME=lib$(TARGET).a +lib: $(LIBNAME) + + + +# Eye candy. +# AVR Studio 3.x does not check make's exit code but relies on +# the following magic strings to be generated by the compile job. +begin: + @echo + @echo $(MSG_BEGIN) + +end: + @echo $(MSG_END) + @echo + + +# Display size of file. +HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex +ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf + +sizebefore: + @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \ + 2>/dev/null; echo; fi + +sizeafter: + @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ + 2>/dev/null; echo; fi + + + +# Display compiler version information. +gccversion : + @$(CC) --version + + + +# Program the device. +program: $(TARGET).hex $(TARGET).eep + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) + + +# Generate avr-gdb config/init file which does the following: +# define the reset signal, load the target file, connect to target, and set +# a breakpoint at main(). +gdb-config: + @$(REMOVE) $(GDBINIT_FILE) + @echo define reset >> $(GDBINIT_FILE) + @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) + @echo end >> $(GDBINIT_FILE) + @echo file $(TARGET).elf >> $(GDBINIT_FILE) + @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) +ifeq ($(DEBUG_BACKEND),simulavr) + @echo load >> $(GDBINIT_FILE) +endif + @echo break main >> $(GDBINIT_FILE) + +debug: gdb-config $(TARGET).elf +ifeq ($(DEBUG_BACKEND), avarice) + @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. + @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ + $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) + @$(WINSHELL) /c pause + +else + @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ + $(DEBUG_MFREQ) --port $(DEBUG_PORT) +endif + @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) + + + + +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. +COFFCONVERT = $(OBJCOPY) --debugging +COFFCONVERT += --change-section-address .data-0x800000 +COFFCONVERT += --change-section-address .bss-0x800000 +COFFCONVERT += --change-section-address .noinit-0x800000 +COFFCONVERT += --change-section-address .eeprom-0x810000 + + + +coff: $(TARGET).elf + @echo + @echo $(MSG_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-avr $< $(TARGET).cof + + +extcoff: $(TARGET).elf + @echo + @echo $(MSG_EXTENDED_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof + + + +# Create final output files (.hex, .eep) from ELF output file. +%.hex: %.elf + @echo + @echo $(MSG_FLASH) $@ + $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@ + +%.eep: %.elf + @echo + @echo $(MSG_EEPROM) $@ + -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ + --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0 + +# Create extended listing file from ELF output file. +%.lss: %.elf + @echo + @echo $(MSG_EXTENDED_LISTING) $@ + $(OBJDUMP) -h -S -z $< > $@ + +# Create a symbol table from ELF output file. +%.sym: %.elf + @echo + @echo $(MSG_SYMBOL_TABLE) $@ + $(NM) -n $< > $@ + + + +# Create library from object files. +.SECONDARY : $(TARGET).a +.PRECIOUS : $(OBJ) +%.a: $(OBJ) + @echo + @echo $(MSG_CREATING_LIBRARY) $@ + $(AR) $@ $(OBJ) + + +# Link: create ELF output file from object files. +.SECONDARY : $(TARGET).elf +.PRECIOUS : $(OBJ) +%.elf: $(OBJ) + @echo + @echo $(MSG_LINKING) $@ + $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS) + + +# Compile: create object files from C source files. +$(OBJDIR)/%.o : %.c + @echo + @echo $(MSG_COMPILING) $< + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +# Compile: create object files from C++ source files. +$(OBJDIR)/%.o : %.cpp + @echo + @echo $(MSG_COMPILING_CPP) $< + $(CC) -c $(ALL_CPPFLAGS) $< -o $@ + + +# Compile: create assembler files from C source files. +%.s : %.c + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +# Compile: create assembler files from C++ source files. +%.s : %.cpp + $(CC) -S $(ALL_CPPFLAGS) $< -o $@ + + +# Assemble: create object files from assembler source files. +$(OBJDIR)/%.o : %.S + @echo + @echo $(MSG_ASSEMBLING) $< + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + + +# Create preprocessed source for use in sending a bug report. +%.i : %.c + $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ + + +# Target: clean project. +clean: begin clean_list end + +clean_list : + @echo + @echo $(MSG_CLEANING) + $(REMOVE) $(TARGET).hex + $(REMOVE) $(TARGET).eep + $(REMOVE) $(TARGET).cof + $(REMOVE) $(TARGET).elf + $(REMOVE) $(TARGET).map + $(REMOVE) $(TARGET).sym + $(REMOVE) $(TARGET).lss + $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) + $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) + $(REMOVE) $(SRC:.c=.s) + $(REMOVE) $(SRC:.c=.d) + $(REMOVE) $(SRC:.c=.i) + $(REMOVEDIR) .dep + + +# Create object files directory +$(shell mkdir $(OBJDIR) 2>/dev/null) + + +# Include the dependency files. +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) + + +# Listing of phony targets. +.PHONY : all begin finish end sizebefore sizeafter gccversion \ +build elf hex eep lss sym coff extcoff \ +clean clean_list program debug gdb-config diff --git a/arduino-0018-windows/hardware/tools/avr/mfile/mfile.tcl b/arduino-0018-windows/hardware/tools/avr/mfile/mfile.tcl new file mode 100644 index 0000000..467a509 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/mfile/mfile.tcl @@ -0,0 +1,1643 @@ +#!/usr/bin/wish +# ---------------------------------------------------------------------------- +# "THE BEER-WARE LICENSE" (Revision 42) (by Poul-Henning Kamp): +# Joerg Wunsch wrote this file. As long as you +# retain this notice you can do whatever you want with this stuff. If we meet +# some day, and you think this stuff is worth it, you can buy me a beer +# in return. +# ---------------------------------------------------------------------------- +# +# Simple Makefile generator for AVR-GCC +# +# $Id: mfile.tcl,v 2.12 2008/11/06 03:35:52 arcanum Exp $ + +# Full path name where various files will be found + +if {[info exists env(MFILE_HOME)]} { + set prefix $env(MFILE_HOME) +} else { + if {$tcl_platform(platform) == "unix"} { + set prefix "/usr/local/share/mfile" + } else { + set prefix "." + } +} + +set templatename "$prefix/makefile_template" +set helpfile "$prefix/help.html" +set mainicon "$prefix/mfile.xbm" +set helpicon "$prefix/htmlview.xbm" + +global helpfile mainicon helpicon + +# color to highlight changed items with +global highlight +set highlight "\#ffff80" + +# +# end of configurable section +# + +global devicelist +set devicelist \ + { {at90can32 0x800900} \ + {at90can64 0x801100} \ + {at90can128 0x801100} \ + at90pwm1 \ + at90pwm2 \ + at90pwm216 \ + at90pwm2b \ + at90pwm3 \ + at90pwm316 \ + at90pwm3b \ + at90s1200 \ + at90s2313 \ + at90s2323 \ + at90s2333 \ + at90s2343 \ + {at90s4414 0x800160} \ + at90s4433 \ + at90s4434 \ + {at90s8515 0x800260} \ + at90s8535 \ + at90usb1286 \ + at90usb1287 \ + at90usb162 \ + at90usb646 \ + at90usb647 \ + at90usb82 \ + {atmega103 0x801000} \ + {atmega128 0x801100} \ + {atmega1280 0x802200} \ + {atmega1281 0x802200} \ + atmega1284p \ + atmega16 \ + {atmega161 0x800460} \ + {atmega162 0x800500} \ + atmega163 \ + atmega164p \ + atmega165 \ + atmega165p \ + atmega168 \ + atmega168p \ + atmega169 \ + atmega169p \ + atmega2560 \ + atmega2561 \ + atmega32 \ + atmega323 \ + atmega324p \ + atmega325 \ + atmega325p \ + atmega3250 \ + atmega328p \ + atmega329 \ + atmega329p \ + atmega3290 \ + atmega3290p \ + atmega32c1 \ + atmega32m1 \ + atmega32u4 \ + atmega32u6 \ + atmega406 \ + atmega48 \ + atmega48p \ + {atmega64 0x801100} \ + {atmega640 0x802200} \ + atmega644 \ + atmega644p \ + atmega645 \ + atmega6450 \ + atmega649 \ + atmega6490 \ + atmega8 \ + {atmega8515 0x800260} \ + atmega8535 \ + atmega88 + atmega88p + attiny11 \ + attiny12 \ + attiny13 \ + attiny13a \ + attiny15 \ + attiny167 \ + attiny22 \ + attiny2313 \ + attiny24 \ + attiny25 \ + attiny26 \ + attiny261 \ + attiny28 \ + attiny43u \ + attiny44 \ + attiny45 \ + attiny461 \ + attiny48 \ + attiny84 \ + attiny85 \ + attiny861 \ + attiny88 \ + at94K \ + at76c711 \ + at43usb320 \ + at43usb355 \ + at86rf401 \ + atxmega64a1 \ + atxmega64a3 \ + atxmega128a1 \ + atxmega128a3 \ + atxmega256a3 \ + atxmega256a3b } + +global makefile + +global filename +set filename "Makefile" +global basename +set basename $filename + +global backupsuffix +if {$tcl_platform(platform) == "unix"} { + set backupsuffix "~" +} else { + set backupsuffix ".bak" +} + +global extmemparts +foreach m $devicelist { + if {[llength $m] > 1} { + set extmemparts([lindex $m 0]) [lindex $m 1] + } +} + +global extmemmax memoffset +set extmemmax [expr 0x80ffff] +set memoffset [expr 0x800000] + +proc parsetemplate {fname} { + global makefile + + set fh [open $fname] + set template [read $fh] + close $fh + + global mainfile mcutype oformat optlevel stdlevel src mainfilesrc + global asrc printfopts scanfopts deftarget avrdudeprog avrdudeport + global dformat + global extmemsize extmemstart extmemopts + global extmemmax extmemparts memoffset + + foreach v { mainfile mcutype oformat optlevel stdlevel src \ + mainfilesrc asrc printfopts scanfopts deftarget \ + avrdudeprog avrdudeport dformat \ + extmemsize extmemstart extmemopts} { + if {[info exists $v]} { + unset $v + } + } + + # Now parse what we've got, and allocate our + # internal variables + if {[regexp {(?n)^MCU\s*=\s*(\S+)} $template dummy x]} { + set mcutype $x + } + + if {[regexp {(?n)^TARGET\s*=\s*(\S+)} $template dummy x]} { + set mainfile $x + } + + if {[regexp {(?n)^FORMAT\s*=\s*(\S+)} $template dummy x]} { + set oformat $x + } + + if {[regexp {(?n)^OPT\s*=\s*(\S+)} $template dummy x]} { + set optlevel $x + } + + if {[regexp {(?n)^DEBUG\s*=\s*(\S+)} $template dummy x]} { + set dformat $x + } + + if {[regexp {(?n)^CSTANDARD\s*=\s*-std=(\S+)} $template dummy x]} { + set stdlevel $x + } + + if {[regexp {(?n)^SRC\s*=\s*(.*)$} $template dummy x]} { + if {[regexp {(.*)\$[(]TARGET[)].c(.*)} $x dummy y z]} { + # replace multiple consecutive spaces by just one + regsub -all {\s+} "$y$z" " " y + set src $y + # mainfilesrc == 1 means include $(TARGET).c into SRC + set mainfilesrc 1 + } else { + set src $x + # mainfilesrc == 0 means do not include $(TARGET).c into SRC + set mainfilesrc 0 + } + } + + if {[regexp {(?n)^ASRC\s*=\s*(\S+)} $template dummy x]} { + set asrc "" + } + + if {[regexp {(?n)^PRINTF_LIB\s*=\s*(\S+)} $template dummy x]} { + if {$x == {$(PRINTF_LIB_MIN)}} { + set printfopts "min" + } elseif {$x == {$(PRINTF_LIB_FLOAT)}} { + set printfopts "flt" + } else { + set printfopts "none" + } + } + + if {[regexp {(?n)^SCANF_LIB\s*=\s*(\S+)} $template dummy x]} { + if {$x == {$(SCANF_LIB_MIN)}} { + set scanfopts "min" + } elseif {$x == {$(SCANF_LIB_FLOAT)}} { + set scanfopts "flt" + } else { + set scanfopts "none" + } + } + + if {[regexp {(?n)^EXTMEMOPTS\s*=(.*)$} $template dummy x]} { + if {[regexp -- {--section-start[,=]\.data=([0-9a-fA-Fx]+).*__heap_end=([0-9a-fA-Fx]+)} \ + $x dummy y1 y2]} { + # variables & heap are in external RAM + set extmemopts "vars" + } elseif {[regexp \ + {__heap_start=([0-9a-fA-Fx]+).*__heap_end=([0-9a-fA-Fx]+)} \ + $x dummy y1 y2]} { + # only heap in external RAM + set extmemopts "heap" + } else { + set extmemopts "none" + if {$x != ""} { + complain "Unknown EXTMEMOPTS $x, ignored" + } + } + if {$extmemopts != "none"} { + set extmemstart [expr $y1] + if {[expr $y2 == $extmemmax]} { + set extmemsize [expr $extmemmax + 1] + } else { + set extmemsize [expr $y2 - $y1 + 1] + } + if {[info exists mcutype]} { + if {[info exists extmemparts($mcutype)]} { + if {[expr $extmemparts($mcutype) == $y1]} { + # extmemstart == 0 means "lowest possible value" + set extmemstart 0 + } + } + } + } + } + + if {[regexp {(?n)^build:\s*(.*)$} $template dummy x]} { + if {[regexp {\sextcoff\s*$} $x]} { + set deftarget "extcoff" + } elseif {[regexp {\scoff\s*$} $x]} { + set deftarget "coff" + } else { + set deftarget "none" + } + } + + if {[regexp {(?n)^AVRDUDE_PROGRAMMER\s*=\s*(\S+)} $template dummy x]} { + set avrdudeprog $x + } + + if {[regexp {(?n)^AVRDUDE_PORT\s*=\s*(\S+)} $template dummy x]} { + set avrdudeport $x + } + + set makefile $template +} + +proc makemfilemenu {} { + global tcl_platform + global devicelist xram + global mainfile mcutype oformat optlevel stdlevel src mainfilesrc + global asrc printfopts scanfopts deftarget avrdudeprog avrdudeport + global dformat debugidx + global extmemsize extmemstart extmemopts + global extmemmax extmemparts extmemmentry memoffset + + .f1.f1.mb2.m1 delete 0 last + foreach w [winfo children .f1.f1.mb2.m1] { + destroy $w + } + + .f1.f1.mb2.m1 add command -label {Code generation} -state disabled + if {[info exists mainfile]} { + .f1.f1.mb2.m1 add command -command {setmainfile} \ + -label "Main file name..." -underline 0 + } + if {[info exists mcutype]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c1 \ + -label "MCU type" \ + -underline 2 + } + if {[info exists oformat]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c2 \ + -label "Output format" \ + -underline 7 + } + if {[info exists optlevel]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c3 \ + -label "Optimization level" \ + -underline 0 + } + if {[info exists dformat]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c30 \ + -label "Debug format" \ + -underline 0 + } + if {[info exists stdlevel]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c31 \ + -label "C standard level" \ + -underline 2 + } + if {[info exists src]} { + .f1.f1.mb2.m1 add command -command {asksrc} \ + -label "C/C++ source file(s)..." -underline 0 + } + if {[info exists asrc]} { + .f1.f1.mb2.m1 add command -command {setasrc} \ + -label "Assembler source file(s)..." -underline 0 + } + if {[info exists printfopts]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c4 \ + -label "printf() options" \ + -underline 0 + } + if {[info exists scanfopts]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c41 \ + -label "scanf() options" \ + -underline 3 + } + if {[info exists extmemopts]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c42 \ + -label "External RAM options" \ + -underline 1 -state disabled + set extmemmentry [.f1.f1.mb2.m1 index end] + if {[info exists mcutype]} { + if {[info exists extmemparts($mcutype)]} { + .f1.f1.mb2.m1 entryconfigure $extmemmentry \ + -state normal + } + } + } + if {[info exists deftarget] && ! [info exists dformat]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c5 \ + -label "Default \"make\" target" \ + -underline 15 + } + + .f1.f1.mb2.m1 add separator + .f1.f1.mb2.m1 add command -label {AVRdude} -state disabled + + switch $tcl_platform(platform) { + "windows" { + set portlist {usb com1 com2 com3 com4 lpt1 lpt2 lpt3} + } + "unix" { + switch $tcl_platform(os) { + "Linux" { + set portlist {usb /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3 \ + /dev/parport0 /dev/parport1 /dev/parport2} + } + "FreeBSD" { + set portlist {usb dev/cuaa0 /dev/cuaa1 /dev/cuaa2 /dev/cuaa3 \ + /dev/ppi0 /dev/ppi1 /dev/ppi2} + } + "Solaris" { + set portlist {usb /dev/term/a /dev/term/b /dev/printers/0} + } + } + } + } + + if {[info exists avrdudeprog]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c6 \ + -label {Programmer} \ + -underline 3 + } + if {[info exists portlist] && [info exists avrdudeport]} { + .f1.f1.mb2.m1 add cascade -menu .f1.f1.mb2.m1.c7 \ + -label {Port} \ + -underline 2 + } + + .f1.f1.mb2.m1 add separator + .f1.f1.mb2.m1 add command -label {Miscellaneous} -state disabled + .f1.f1.mb2.m1 add checkbutton -variable editwidget \ + -label "Enable Editing of Makefile" \ + -command changeeditable \ + -onvalue normal -offvalue disabled + + .f1.f1.mb2 configure -menu .f1.f1.mb2.m1 + + if {[info exists mcutype]} { + menu .f1.f1.mb2.m1.c1 -tearoff 0 + .f1.f1.mb2.m1.c1 add cascade -menu .f1.f1.mb2.m1.c1.at90 \ + -label "AT90" -underline 2 + .f1.f1.mb2.m1.c1 add cascade -menu .f1.f1.mb2.m1.c1.atmega \ + -label "ATmega" -underline 2 + .f1.f1.mb2.m1.c1 add cascade -menu .f1.f1.mb2.m1.c1.attiny \ + -label "ATtiny" -underline 2 + .f1.f1.mb2.m1.c1 add cascade -menu .f1.f1.mb2.m1.c1.other \ + -label "Other" -underline 0 + + menu .f1.f1.mb2.m1.c1.at90 -tearoff 0 + menu .f1.f1.mb2.m1.c1.atmega -tearoff 0 + menu .f1.f1.mb2.m1.c1.attiny -tearoff 0 + menu .f1.f1.mb2.m1.c1.other -tearoff 0 + + foreach m $devicelist { + set mcu [lindex $m 0] + if {[llength $mcu] > 1} { + set xram($mcu) [lindex $m 1] + } + switch -glob $mcu { + "at90*" { + .f1.f1.mb2.m1.c1.at90 add radiobutton -variable mcutype \ + -label $mcu -command setmcu + } + "atmega*" { + .f1.f1.mb2.m1.c1.atmega add radiobutton -variable mcutype \ + -label $mcu -command setmcu + } + "attiny*" { + .f1.f1.mb2.m1.c1.attiny add radiobutton -variable mcutype \ + -label $mcu -command setmcu + } + "*" { + .f1.f1.mb2.m1.c1.other add radiobutton -variable mcutype \ + -label $mcu -command setmcu + } + } + } + } + + if {[info exists oformat]} { + menu .f1.f1.mb2.m1.c2 -tearoff 0 + + foreach f {srec ihex binary} { + .f1.f1.mb2.m1.c2 add radiobutton -variable oformat \ + -label $f -command setoformat + } + } + + if {[info exists optlevel]} { + menu .f1.f1.mb2.m1.c3 -tearoff 0 + + foreach f {0 1 s 2 3} { + .f1.f1.mb2.m1.c3 add radiobutton -variable optlevel \ + -label $f -command setoptlevel + } + } + + if {[info exists dformat]} { + menu .f1.f1.mb2.m1.c30 -tearoff 0 + + if {[info exists deftarget]} { + # We've got both, DEBUG and the default target selection. + # Join them into a single menu entry. + if {$dformat == "dwarf-2"} { + set debugidx 3 + } elseif {$deftarget == "none"} { + set debugidx 0 + } elseif {$deftarget == "coff"} { + set debugidx 1 + } elseif {$deftarget == "extcoff"} { + set debugidx 2 + } else { + set debugidx 0 + } + # Note that the order of the setdeftarget and setdformat + # calls below determines which of the edited fields will + # be displayed highlighted to the user. The last one + # wins. Thus, we highlight the stabs vs. dwarf-2 decision + # for the ELF formats, or the default build target for the + # COFF formats. + .f1.f1.mb2.m1.c30 add radiobutton \ + -variable debugidx -value 0 \ + -label "ELF/stabs (GDB/Insight)" \ + -command {set dformat "stabs"; set deftarget "none"; \ + setdeftarget; setdformat } + .f1.f1.mb2.m1.c30 add radiobutton \ + -variable debugidx -value 1 \ + -label {AVR-COFF (AVR Studio 3.x, VMLAB < 3.10 [obsolete])} \ + -command {set dformat "stabs"; set deftarget "coff"; \ + setdformat; setdeftarget } + .f1.f1.mb2.m1.c30 add radiobutton \ + -variable debugidx -value 2 \ + -label {AVR-ext-COFF (AVR Studio 4.07+, VMLAB 3.10+ [obsolete])} \ + -command {set dformat "stabs"; set deftarget "extcoff"; \ + setdformat; setdeftarget } + .f1.f1.mb2.m1.c30 add radiobutton \ + -variable debugidx -value 3 \ + -label {ELF/DWARF-2 (AVR Studio 4.11+)} \ + -command {set dformat "dwarf-2"; set deftarget "none"; \ + setdeftarget; setdformat } + } else { + foreach f {stabs dwarf-2} { + .f1.f1.mb2.m1.c30 add radiobutton -variable dformat \ + -label $f -command setdformat + } + } + } + + if {[info exists stdlevel]} { + menu .f1.f1.mb2.m1.c31 -tearoff 0 + + foreach f {c89 gnu89 c99 gnu99} { + .f1.f1.mb2.m1.c31 add radiobutton -variable stdlevel \ + -label $f -command setstdlevel + } + } + + if {[info exists printfopts]} { + menu .f1.f1.mb2.m1.c4 -tearoff 0 + + .f1.f1.mb2.m1.c4 add radiobutton -variable printfopts \ + -label "none/standard" -underline 0 -value "none" -command setprintfopts + .f1.f1.mb2.m1.c4 add radiobutton -variable printfopts \ + -label "minimalistic" -underline 0 -value "min" -command setprintfopts + .f1.f1.mb2.m1.c4 add radiobutton -variable printfopts \ + -label "floating point" -underline 0 -value "flt" -command setprintfopts + } + + if {[info exists scanfopts]} { + menu .f1.f1.mb2.m1.c41 -tearoff 0 + + .f1.f1.mb2.m1.c41 add radiobutton -variable scanfopts \ + -label "none/standard" -underline 0 -value "none" -command setscanfopts + .f1.f1.mb2.m1.c41 add radiobutton -variable scanfopts \ + -label "minimalistic" -underline 0 -value "min" -command setscanfopts + .f1.f1.mb2.m1.c41 add radiobutton -variable scanfopts \ + -label "floating point + %\[" -underline 0 -value "flt" -command setscanfopts + } + + if {[info exists extmemopts]} { + menu .f1.f1.mb2.m1.c42 -tearoff 0 + + .f1.f1.mb2.m1.c42 add radiobutton -variable extmemopts \ + -label "none" -underline 0 -value "none" -command setextmemopts + .f1.f1.mb2.m1.c42 add radiobutton -variable extmemopts \ + -label "variables & heap" -underline 0 -value "vars" -command setextmemopts + .f1.f1.mb2.m1.c42 add radiobutton -variable extmemopts \ + -label "heap only" -underline 0 -value "heap" -command setextmemopts + .f1.f1.mb2.m1.c42 add cascade -menu .f1.f1.mb2.m1.c42.c1 \ + -label "Ext. memory start" -underline 5 + .f1.f1.mb2.m1.c42 add cascade -menu .f1.f1.mb2.m1.c42.c2 \ + -label "Ext. memory size" -underline 14 + + menu .f1.f1.mb2.m1.c42.c1 -tearoff 0 + foreach m {0 1024 2048 4096 8192 16384 32768} { + if {$m == 0} { + set s "lowest possible" + set v 0 + } else { + set s [format {%d KB} [expr $m / 1024]] + set v [expr $m + $memoffset] + } + .f1.f1.mb2.m1.c42.c1 add radiobutton -variable extmemstart \ + -label $s -value $v \ + -command setextmemopts + } + + menu .f1.f1.mb2.m1.c42.c2 -tearoff 0 + foreach m {1024 2048 4096 8192 16384 32768 65536} { + set s [format {%d KB} [expr $m / 1024]] + .f1.f1.mb2.m1.c42.c2 add radiobutton -variable extmemsize \ + -label $s -value [expr $m] \ + -command setextmemopts + } + } + + if {[info exists deftarget] && ! [info exists dformat]} { + menu .f1.f1.mb2.m1.c5 -tearoff 0 + + .f1.f1.mb2.m1.c5 add radiobutton -variable deftarget \ + -label "standard (ELF + ihex/srec/binary)" -underline 0 \ + -value "none" -command setdeftarget + .f1.f1.mb2.m1.c5 add radiobutton -variable deftarget \ + -label "AVR \"Extended\" COFF (AVR Studio 4.07+, VMLAB 3.10+)" -underline 6 \ + -value "extcoff" -command setdeftarget + .f1.f1.mb2.m1.c5 add radiobutton -variable deftarget -underline 4 \ + -label "AVR COFF (AVR Studio 3.x, VMLAB < 3.10)" \ + -value "coff" -command setdeftarget + } + + if {[info exists avrdudeprog]} { + menu .f1.f1.mb2.m1.c6 -tearoff 0 + + foreach p [lsort {dasa3 dasa ponyser dapa xil futurlec \ + abcmini picoweb sp12 alf bascom dt006 \ + pony-stk200 stk200 pavr jtag2 jtag2fast \ + jtag2slow jtagmkII jtagmkI avr911 avr109 \ + butterfly avr910 stk500v2 stk500 avrisp2 \ + avrispv2 avrisp bsd }] { + .f1.f1.mb2.m1.c6 add radiobutton -variable avrdudeprog \ + -label $p -command setavrdudeprog + } + } + + if {[info exists portlist] && [info exists avrdudeport]} { + menu .f1.f1.mb2.m1.c7 -tearoff 0 + + foreach p $portlist { + .f1.f1.mb2.m1.c7 add radiobutton -variable avrdudeport \ + -label $p -command setavrdudeport + } + } + +} + +proc writefile {fname} { + global backupsuffix makefile modified + + if {[file exists $fname]} { + file rename -force $fname "$fname$backupsuffix" + } + set makefile [.f1.f2.f1.t1 get 1.0 end] + set f [open $fname "w"] + puts $f $makefile + close $f + set modified 0 +} + +proc about {} { + toplevel .about + + set x [winfo pointerx .] + set y [winfo pointery .] + if {$x != -1 && $y != -1} { + wm geometry .about "+[expr $x - 250]+[expr $y - 100]" + } + wm title .about {About Mfile} + wm resizable .about 0 0 + + frame .about.f1 + message .about.f1.m1 \ + -relief sunken \ + -width 500 \ + -text \ +{Mfile - Simple Makefile generator for AVR-GCC + +Copyright © 2003,2004 Jörg Wunsch + +$Revision: 2.12 $ $Date: 2008/11/06 03:35:52 $ + +"THE BEER-WARE LICENSE" (Revision 42) (by Poul-Henning Kamp): +Joerg Wunsch wrote this file. As long as you +retain this notice you can do whatever you want with this stuff. If we meet +some day, and you think this stuff is worth it, you can buy me a beer +in return.} + button .about.f1.ok -command {destroy .about} -text {OK} + + pack configure .about.f1.m1 -side top + pack configure .about.f1.ok -side bottom + pack configure .about.f1 + + tkwait window .about +} + +proc setmcu {} { + global mcutype + global editwidget + global highlight modified + global extmemmentry extmemparts extmemstart extmemopts + + set r1 [.f1.f2.f1.t1 search -regexp "^MCU = " 1.0] + if {$r1 == ""} { + complain "Oops, MCU not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, MCU not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "MCU = $mcutype" + .f1.f2.f1.t1 configure -state $editwidget + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, MCU not found" + return + } + + if {[info exists extmemopts]} { + if {[info exists extmemparts($mcutype)]} { + .f1.f1.mb2.m1 entryconfigure $extmemmentry -state normal + if {$extmemstart == ""} { + set extmemstart 0 + } + if {$extmemstart == 0 || \ + [expr $extmemparts($mcutype) == $extmemstart]} { + # extmemstart == 0 means "lowest possible value" + set extmemstart 0 + setextmemopts + } + } else { + .f1.f1.mb2.m1 entryconfigure $extmemmentry -state disabled + } + } + + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight + .f1.f2.f1.t1 see $r1 +} + +proc setoformat {} { + global oformat + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^FORMAT = " 1.0] + if {$r1 == ""} { + complain "Oops, FORMAT not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, FORMAT not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "FORMAT = $oformat" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, FORMAT not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setoptlevel {} { + global optlevel + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^OPT = " 1.0] + if {$r1 == ""} { + complain "Oops, OPT not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, OPT not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "OPT = $optlevel" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, OPT not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setdformat {} { + global dformat + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^DEBUG = " 1.0] + if {$r1 == ""} { + complain "Oops, DEBUG not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, DEBUG not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "DEBUG = $dformat" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, DEBUG not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setstdlevel {} { + global stdlevel + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^CSTANDARD = " 1.0] + if {$r1 == ""} { + complain "Oops, CSTANDARD not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, CSTANDARD not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "CSTANDARD = -std=$stdlevel" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, CSTANDARD not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setdeftarget {} { + global deftarget + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^build:" 1.0] + if {$r1 == ""} { + complain "Oops, default target not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, default target not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + set line [.f1.f2.f1.t1 get $r1 $r2] + if {[regexp {^(.*) (ext)?coff} $line dummy d]} { + set line $d + } else { + regsub {^(.*)} $line {\1} line + } + switch $deftarget { + "coff" { + set line "$line coff" + } + "extcoff" { + set line "$line extcoff" + } + "none" { + set line "$line" + } + } + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "$line" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, default target not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setprintfopts {} { + global printfopts + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^PRINTF_LIB = " 1.0] + if {$r1 == ""} { + complain "Oops, PRINTF_LIB not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, PRINTF_LIB not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + switch $printfopts { + "none" { + set line "PRINTF_LIB = " + } + "min" { + set line "PRINTF_LIB = \$(PRINTF_LIB_MIN)" + } + "flt" { + set line "PRINTF_LIB = \$(PRINTF_LIB_FLOAT)" + } + } + .f1.f2.f1.t1 insert $r2 "$line" + + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, PRINTF_LIB not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setscanfopts {} { + global scanfopts + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^SCANF_LIB = " 1.0] + if {$r1 == ""} { + complain "Oops, SCANF_LIB not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, SCANF_LIB not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + switch $scanfopts { + "none" { + set line "SCANF_LIB = " + } + "min" { + set line "SCANF_LIB = \$(SCANF_LIB_MIN)" + } + "flt" { + set line "SCANF_LIB = \$(SCANF_LIB_FLOAT)" + } + } + .f1.f2.f1.t1 insert $r2 "$line" + + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, SCANF_LIB not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setextmemopts {} { + global extmemsize extmemstart extmemopts + global extmemmax extmemparts extmemmentry memoffset + global mcutype + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^EXTMEMOPTS *=" 1.0] + if {$r1 == ""} { + complain "Oops, EXTMEMOPTS not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, EXTMEMOPTS not found" + return + } + if {$extmemopts != "none"} { + if {![info exists extmemsize]} { + set extmemsize [expr $extmemmax + 1 - $memoffset] + } elseif {$extmemsize == 0 || $extmemsize == ""} { + set extmemsize [expr $extmemmax + 1 - $memoffset] + } + if {![info exists extmemstart]} { + set extmemstart 0 + } elseif {$extmemstart == 0 || $extmemstart == ""} { + set extmemstart 0 + } + if {[expr $extmemstart] == 0} { + set m $extmemparts($mcutype) + } else { + set m [expr $extmemstart] + } + set xstart [format {0x%x} [expr $m]] + if {[expr $memoffset + $extmemsize] == [expr $extmemmax + 1]} { + set xend [format {0x%x} [expr $extmemmax]] + } else { + set xend [format {0x%x} [expr $m + $extmemsize - 1]] + } + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + switch $extmemopts { + "none" { + set line "EXTMEMOPTS = " + } + "vars" { + set line "EXTMEMOPTS = -Wl,--section-start,.data=$xstart,--defsym=__heap_end=$xend" + } + "heap" { + set line "EXTMEMOPTS = -Wl,--defsym=__heap_start=$xstart,--defsym=__heap_end=$xend" + } + } + .f1.f2.f1.t1 insert $r2 "$line" + + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, EXTMEMOPTS not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setmainfile {} { + global mainfile + global editwidget + global highlight modified + + set mainfile [ask $mainfile "Main file"] + + set r1 [.f1.f2.f1.t1 search -regexp "^TARGET = " 1.0] + if {$r1 == ""} { + complain "Oops, TARGET not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, TARGET not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "TARGET = $mainfile" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, TARGET not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setmakefile {} { + global basename + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^MAKEFILE\\s*=" 1.0] + if {$r1 == ""} { + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, MAKEFILE not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "MAKEFILE = $basename" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, MAKEFILE not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setasrc {} { + global asrc + global editwidget + global highlight modified + + set asrc [ask $asrc "Assembler source file(s)"] + + set r1 [.f1.f2.f1.t1 search -regexp "^ASRC = " 1.0] + if {$r1 == ""} { + complain "Oops, ASRC not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, ASRC not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "ASRC = $asrc" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, ASRC not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setavrdudeprog {} { + global avrdudeprog + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^AVRDUDE_PROGRAMMER = " 1.0] + if {$r1 == ""} { + complain "Oops, AVRDUDE_PROGRAMMER not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, AVRDUDE_PROGRAMMER not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "AVRDUDE_PROGRAMMER = $avrdudeprog" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, AVRDUDE_PROGRAMMER not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc setavrdudeport {} { + global avrdudeport + global editwidget + global highlight modified + + set r1 [.f1.f2.f1.t1 search -regexp "^AVRDUDE_PORT = " 1.0] + if {$r1 == ""} { + complain "Oops, AVRDUDE_PORT not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, AVRDUDE_PORT not found" + return + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "AVRDUDE_PORT = $avrdudeport" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, AVRDUDE_PORT not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc complain {text} { + if {[winfo exists .complain]} { + return + } + toplevel .complain + set x [winfo pointerx .] + set y [winfo pointery .] + if {$x != -1 && $y != -1} { + wm geometry .complain "+$x+$y" + } + wm title .complain {Error} + wm resizable .complain 0 0 + + message .complain.m1 -text $text + button .complain.ok -text {OK} -command {destroy .complain} + + pack .complain.m1 + pack .complain.ok + + tkwait window .complain +} + +proc ask {val text} { + global askval + + if {[winfo exists .ask]} { + return + } + + toplevel .ask + set x [winfo pointerx .] + set y [winfo pointery .] + if {$x != -1 && $y != -1} { + wm geometry .ask "+$x+$y" + } + wm title .ask $text + wm resizable .ask 0 0 + + set askval $val + + frame .ask.f1 + label .ask.f1.l1 -text "$text:" + entry .ask.f1.e1 -width 20 -relief sunken -textvariable askval + + frame .ask.f2 + button .ask.f2.b1 -text {OK} -command {destroy .ask} + + pack configure .ask.f1.l1 -side left + pack configure .ask.f1.e1 -side left + pack configure .ask.f1 + pack configure .ask.f2.b1 -side top + pack configure .ask.f2 + + bind .ask.f1.e1 {destroy .ask} + + tkwait window .ask + + return $askval +} + +proc asksrc {} { + global src mainfilesrc mainfile + global editwidget + global highlight modified + + if {[winfo exists .ask]} { + return + } + + toplevel .ask + set x [winfo pointerx .] + set y [winfo pointery .] + if {$x != -1 && $y != -1} { + wm geometry .ask "+$x+$y" + } + wm title .ask {Source files} + wm resizable .ask 1 0 + + frame .ask.f1 + frame .ask.f1.f1 + label .ask.f1.f1.l1 -text "C/C++ source file(s):" + entry .ask.f1.f1.e1 -width 20 -relief sunken -textvariable src + button .ask.f1.f1.b1 -text "Choose file..." \ + -command { + global src + set x [tk_getOpenFile -filetypes { + {{C source files} {.c}} + {{C++ source files} {.C .cc .cxx}} + {{All files} *} + }] + if {$x != ""} { + set rootname [lindex [file split [pwd]] 0] + if {[string range $x 0 [expr [string length $rootname] - 1]] \ + == $rootname} { + # Try finding common path name components to the + # current working directory. If found, eliminate + # them. + set y [pwd] + set prefix "." + while {[expr [string first $y $x] == -1]} { + set y [file dirname $y] + if {$prefix == "."} { + set prefix ".." + } else { + set prefix "../${prefix}" + } + } + if {$y != $rootname} { + # If more than the root directory name + # remained, replace it. + set commonlen [string length $y] + set x [string range $x $commonlen end] + set x "${prefix}${x}" + } + } + set src "$src $x" + } + focus .ask + wm deiconify .ask + if {[string length $src]} { + # let the entry widget auto-size + .ask.f1.f1.e1 configure -width 0 + } + } + frame .ask.f1.f2 + checkbutton .ask.f1.f2.cb1 -variable mainfilesrc + label .ask.f1.f2.l1 -text "Include ${mainfile}.c" + button .ask.f1.f2.b1 -text {OK} -command {destroy .ask} + + pack configure .ask.f1.f1.l1 -side left + pack configure .ask.f1.f1.e1 -side left -expand y -fill x + pack configure .ask.f1.f1.b1 -side left + pack configure .ask.f1.f1 -side top -anchor nw -expand y -fill x + pack configure .ask.f1.f2.cb1 -side left + pack configure .ask.f1.f2.l1 -side left + pack configure .ask.f1.f2.b1 -side right + pack configure .ask.f1.f2 -side top -anchor nw -expand y -fill x + pack configure .ask.f1 -expand y -fill x + + bind .ask.f1.f1.e1 {destroy .ask} + focus .ask + + tkwait window .ask + + set r1 [.f1.f2.f1.t1 search -regexp "^SRC = " 1.0] + if {$r1 == ""} { + complain "Oops, SRC not found" + return + } + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, SRC not found" + return + } + + if {$mainfilesrc != 0} { + set s "\$(TARGET).c $src" + } else { + set s "$src" + } + set modified 1 + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete $r1 $r2 + .f1.f2.f1.t1 insert $r2 "SRC = $s" + .f1.f2.f1.t1 configure -state $editwidget + .f1.f2.f1.t1 see $r1 + set r2 [.f1.f2.f1.t1 search -regexp {$} $r1] + if {$r2 == ""} { + complain "Oops, SRC not found" + return + } + .f1.f2.f1.t1 tag delete highlight + .f1.f2.f1.t1 tag add highlight $r1 $r2 + .f1.f2.f1.t1 tag configure highlight -background $highlight +} + +proc changeeditable {} { + global editwidget modified + + if {$editwidget == "normal"} { + set modified 1 + } + .f1.f2.f1.t1 configure -state $editwidget +} + +proc openfile {} { + global filename basename + global modified + global asksavereply + global makefile editwidget + + if {$modified} { + if {[winfo exists .asksave]} { + return + } + toplevel .asksave + message .asksave.l1 -width 400 \ + -text "The current buffer has been modified.\n\nDiscard changes?" + frame .asksave.f1 + button .asksave.f1.ok -text {Yes} -command { + global asksavereply + set asksavereply 1 + destroy .asksave + } + button .asksave.f1.cancel -text {No} -command { + global asksavereply + set asksavereply 0 + destroy .asksave + } + + pack configure .asksave.l1 -side top + pack configure .asksave.f1.ok -side left + pack configure .asksave.f1.cancel -side left + pack configure .asksave.f1 -side top + + set x [winfo pointerx .] + set y [winfo pointery .] + if {$x != -1 && $y != -1} { + wm geometry .asksave "+$x+$y" + } + + tkwait window .asksave + + if {$asksavereply == 0} { + return + } + + set modified 0 + } + + set fn [tk_getOpenFile -initialfile $filename] + if {[string length $fn] > 0} { + parsetemplate $fn + makemfilemenu + + set filename $fn + catch "regsub {^.*/} $fn {} basename" + wm title . $basename + + .f1.f2.f1.t1 configure -state normal + .f1.f2.f1.t1 delete 1.0 end + .f1.f2.f1.t1 insert end $makefile + .f1.f2.f1.t1 configure -state $editwidget + + setmakefile + } +} + +proc saveas {} { + global filename basename + set fn [tk_getSaveFile -initialfile $filename] + if {[string length $fn] > 0} { + set filename $fn + catch "regsub {^.*/} $fn {} basename" + wm title . $basename + setmakefile + writefile $fn + } +} + +proc quit {force} { + global modified filename + + if {$modified} { + if {$force} { + # called from WM_SAVE_YOURSELF handler only -- no time + # to ask the luser back + wm protocol . WM_SAVE_YOURSELF {} + set modified 0 + writefile "${filename}.saved" + exit 0 + } + + if {[winfo exists .askquit]} { + return + } + toplevel .askquit + message .askquit.l1 -width 400 \ + -text "The current buffer has been modified.\n\nExit anyway?" + frame .askquit.f1 + button .askquit.f1.ok -text {Yes} -command { + wm protocol . WM_DELETE_WINDOW {} + wm protocol . WM_SAVE_YOURSELF {} + exit 0 + } + button .askquit.f1.cancel -text {No} -command {destroy .askquit} + + pack configure .askquit.l1 -side top + pack configure .askquit.f1.ok -side left + pack configure .askquit.f1.cancel -side left + pack configure .askquit.f1 -side top + + set x [winfo pointerx .] + set y [winfo pointery .] + if {$x != -1 && $y != -1} { + wm geometry .askquit "+$x+$y" + } + + tkwait window .askquit + } else { + exit 0 + } +} + +source "$prefix/htmlview.tcl" + +parsetemplate $templatename + +global editwidget +set editwidget disabled + +global modified +set modified 0 + +frame .f1 + +frame .f1.f1 + +# "File" menu +menubutton .f1.f1.mb1 -text File -underline 0 + +menu .f1.f1.mb1.m1 -tearoff 1 +.f1.f1.mb1.m1 add command -command {writefile $filename} \ + -label Save -underline 0 +.f1.f1.mb1.m1 add command -command {saveas} \ + -label {Save As...} -underline 5 +.f1.f1.mb1.m1 add command -command {openfile} \ + -label {Open...} -underline 0 +.f1.f1.mb1.m1 add separator +.f1.f1.mb1.m1 add command -command {quit 0} -label Exit -underline 1 + +.f1.f1.mb1 configure -menu .f1.f1.mb1.m1 + +# "Help" menu +menubutton .f1.f1.mbH -text Help -underline 0 + +menu .f1.f1.mbH.m1 -tearoff 1 +.f1.f1.mbH.m1 add command -command {htmlview $helpfile} \ + -label "Help..." -underline 0 +.f1.f1.mbH.m1 add separator +.f1.f1.mbH.m1 add command -command {about} -label "About..." -underline 0 + +.f1.f1.mbH configure -menu .f1.f1.mbH.m1 + +# "Makefile" menu +menubutton .f1.f1.mb2 -text Makefile -underline 0 +menu .f1.f1.mb2.m1 -tearoff 1 -disabledforeground blue3 +makemfilemenu + +frame .f1.f2 +frame .f1.f2.f1 +text .f1.f2.f1.t1 -height 25 -width 80 -wrap none \ + -yscrollcommand {.f1.f2.f1.s1 set} \ + -xscrollcommand {.f1.f2.s2 set} \ + -state $editwidget +scrollbar .f1.f2.f1.s1 -command {.f1.f2.f1.t1 yview} +scrollbar .f1.f2.s2 -orient horizontal -command {.f1.f2.f1.t1 xview} + +pack configure .f1.f1.mbH -side right +pack configure .f1.f1.mb1 -side left +pack configure .f1.f1.mb2 -side left +pack configure .f1.f1 -fill x -side top -anchor nw + +pack configure .f1.f2.f1.t1 -side left -expand y -fill both -anchor nw +pack configure .f1.f2.f1.s1 -side left -fill y -anchor nw +pack configure .f1.f2.f1 -side top -expand y -fill both -anchor nw +pack configure .f1.f2.s2 -side left -expand y -fill x -anchor nw +pack configure .f1.f2 -side top -expand y -fill both -anchor nw + +pack configure .f1 -side left -expand y -fill both -anchor nw + +update +set x [winfo width .] +set y [winfo height .] +wm minsize . $x $y + +# XBM icons look fairly stupid on Windows since the background will +# be rendered in black. Rather keep the standar Tk icon there. +if {$tcl_platform(platform) == "unix" && [file exists $mainicon]} { + wm iconbitmap . @$mainicon +} + +.f1.f2.f1.t1 configure -state normal +.f1.f2.f1.t1 insert end $makefile +.f1.f2.f1.t1 configure -state $editwidget + +bind . {htmlview $helpfile} + +# When the text widget is in normal state, and +# already work as expected, but they don't when it is in disabled +# state (since the widget doesn't get any focus then) so we override +# it globally here. While we are at it, bind and +# as well. + +bind . ".f1.f2.f1.t1 yview scroll -10 units" +bind . ".f1.f2.f1.t1 yview scroll 10 units" +bind . ".f1.f2.f1.t1 yview moveto 0" +bind . ".f1.f2.f1.t1 yview moveto 1" + +wm protocol . WM_DELETE_WINDOW {quit 0} +wm protocol . WM_SAVE_YOURSELF {quit 1} diff --git a/arduino-0018-windows/hardware/tools/avr/mfile/mfile.xbm b/arduino-0018-windows/hardware/tools/avr/mfile/mfile.xbm new file mode 100644 index 0000000..90301a1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/mfile/mfile.xbm @@ -0,0 +1,15 @@ +/* $Id: mfile.xbm,v 2.0 2006/03/21 21:22:13 joerg_wunsch Exp $ */ +#define mfile_width 32 +#define mfile_height 32 +static unsigned char mfile_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, + 0xc0, 0x03, 0xfc, 0x0f, 0xf0, 0x87, 0xff, 0x0f, 0xf8, 0xc7, 0xff, 0x00, + 0x3c, 0xee, 0x03, 0x00, 0x1c, 0xfc, 0x00, 0x00, 0x0c, 0x7c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7c, 0x00, 0x00, 0x1c, 0xfc, 0x00, 0x00, + 0x3c, 0xee, 0x03, 0x00, 0xf8, 0xc7, 0xff, 0x00, 0xf0, 0x87, 0xff, 0x0f, + 0xc0, 0x03, 0xfc, 0x0f, 0x00, 0x00, 0xc3, 0x03, 0x00, 0x00, 0x03, 0x00, + 0xda, 0x38, 0x9b, 0x03, 0xb6, 0x65, 0xcf, 0x06, 0xb6, 0x79, 0xc7, 0x07, + 0xb6, 0x6d, 0xcf, 0x00, 0xb6, 0x6d, 0xdb, 0x06, 0xb6, 0xd9, 0xb3, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/arduino-0018-windows/hardware/tools/avr/path1.log b/arduino-0018-windows/hardware/tools/avr/path1.log new file mode 100644 index 0000000..8a83b67 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/path1.log @@ -0,0 +1 @@ +%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/path2.log b/arduino-0018-windows/hardware/tools/avr/path2.log new file mode 100644 index 0000000..f71c358 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/path2.log @@ -0,0 +1 @@ +C:\WinAVR-20081205\utils\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest new file mode 100644 index 0000000..b89cafd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest @@ -0,0 +1,8 @@ + + + + + n9On8FItNsK/DmT8UQxu6jYDtWQ= + 0KJ/VTwP4OUHx98HlIW2AdW1kuY= + YJuB+9Os2oxW4mY+2oC/r8lICZE= + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcm80.dll b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcm80.dll new file mode 100644 index 0000000..c751385 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcm80.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcp80.dll b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcp80.dll new file mode 100644 index 0000000..f0b52eb Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcp80.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcr80.dll b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcr80.dll new file mode 100644 index 0000000..53c005e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/Microsoft.VC80.CRT/msvcr80.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/SciLexer.dll b/arduino-0018-windows/hardware/tools/avr/pn/SciLexer.dll new file mode 100644 index 0000000..cd641ec Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/SciLexer.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/ascii.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/ascii.clips new file mode 100644 index 0000000..e611c94 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/ascii.clips @@ -0,0 +1 @@ +!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/aspnet.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/aspnet.clips new file mode 100644 index 0000000..c888710 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/aspnet.clips @@ -0,0 +1,157 @@ +<%@ Assembly Name="|" %><%@ Control Language="C#" %>|<%@ Control Language="VB" %>|<%@ Implements Interface="|" %><%@ Import Namespace="|" %><%@ OutputCache Duration="100" VaryByParam="none|" %><%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" %>|<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="iso-8859-1" %>|<%@ Reference Control="|.ascx" %><%@ Reference Page="|.aspx" %><%@ Register TagPrefix="|" TagName="" Src="" %><asp:AdRotator id="AdRotator1" + AdvertisementFile="|.xml" + runat="server"/><asp:Button id="Button1" + Text="|" + OnClick="" + runat="server" /><asp:Calendar id="Calendar1" + runat="server"> +</asp:Calendar><asp:CheckBox id="CheckBox1" + Text="|" + runat="server" /><asp:CheckBoxList id="CheckBoxList1" + DataSource='<%# | %>' + DataTextField="" + DataValueField="" + runat="server"> + <asp:ListItem Value="" Selected=""></asp:ListItem> +</asp:CheckBoxList><asp:DataGrid id="DataGrid1" + DataSource='<%# | %>' + runat="server"> +</asp:DataGrid><asp:DataList id="DataList1" + DataKeyField="" + DataSource='<%# | %>' + runat="server"> +</asp:DataList><asp:DropDownList id="DropDownList1" + DataSource='<%# | %>' + DataTextField="" + DataValueField="" + runat="server"> + <asp:ListItem Value="" Selected=""></asp:ListItem> +</asp:DropDownList><asp:HyperLink id="HyperLink1" + Text="|" + ToolTip="" + NavigateUrl="" + runat="server" /><asp:Image id="Image1" + ImageUrl="|" + AlternateText="" + ImageAlign="" + runat="server" /><asp:ImageButton id="ImageButton1" + ImageUrl="|" + OnClick="" + runat="server" /><asp:Label id="Label1" Text="|" runat="server" /><asp:LinkButton id="LinkButton1" + Text="|" + OnClick="" + runat="server" /><asp:ListBox id="ListBox1" + DataSource='<%# | %>' + DataTextField="" + DataValueField="" + runat="server"> + <asp:ListItem Value="" Selected=""></asp:ListItem> +</asp:ListBox><asp:Literal id="Literal1" Text="|" runat="server" /><asp:Panel id="Panel1" runat="server"> +| +</asp:Panel><asp:PlaceHolder id="PlaceHolder1" runat="server" /><asp:RadioButton id="RadioButton1" + Checked="|" + GroupName="" + Text="" + runat="server" /><asp:RadioButtonList id="RadioButtonList1" + DataSource='<%# | %>' + DataTextField="" + DataValueField="" + RepeatColumns="" + RepeatDirection="" + RepeatLayout="" + TextAlign="" + runat="server"> + <asp:ListItem Value="" Selected=""></asp:ListItem> +</asp:RadioButtonList><asp:Repeater id="Repeater1" + DataSource='<%# | %>' + runat="server"> + <HeaderTemplate> + + </HeaderTemplate> + <ItemTemplate> + + </ItemTemplate> + <AlternatingItemTemplate> + + </AlternatingItemTemplate> + <SeparatorTemplate> + + </SeparatorTemplate> + <FooterTemplate> + + </FooterTemplate> +</asp:Repeater><asp:Table id="Table1" + CellSpacing="" + CellPadding="" + GridLines="" + HorizontalAlign="" + runat="server"> + <asp:TableRow> + <asp:TableCell> + | + </asp:TableCell> + </asp:TableRow> +</asp:Table><asp:TableCell id="TableCell1" + ColumnSpan="" + RowSpan="" + HorizontalAlign="" + VerticalAlign="" + Wrap="" + runat="server"> + | +</asp:TableCell><asp:TableRow id="TableRow1" + HorizontalAlign="" + VerticalAlign="" + runat="server"> + <asp:TableCell> + | + </asp:TableCell> +</asp:TableRow><asp:TextBox id="TextBox1" + Columns="" + MaxLength="" + Rows="" + Text="|" + TextMode="" + Wrap="" + runat="server" /><asp:Xml id="Xml1" + Document="" + DocumentContent="" + DocumentSource="" + Transform="" + TransformSource="" + runat="server" /><asp:CompareValidator id="CompareValidator1" + ControlToValidate="|" + ValueToCompare="" + Type="" + Operator="" + ErrorMessage="" + runat="server"> +</asp:CompareValidator><asp:CustomValidator id="CustomValidator1" + runat="server" + ControlToValidate="|" + ClientValidationFunction="" + OnServerValidate="" + ErrorMessage=""> +</asp:CustomValidator><asp:RangeValidator id="RangeValidator1" + ControlToValidate="|" + MinimumValue="" + Type="" + ErrorMessage="" + runat="server"> +</asp:RangeValidator><asp:RegularExpressionValidator id="RegularExpressionValidator1" + ControlToValidate="|" + ValidationExpression="" + ErrorMessage="" + runat="server"> +</asp:RegularExpressionValidator><asp:RequiredFieldValidator id="RequiredFieldValidator1" + ControlToValidate="|" + InitialValue="" + ErrorMessage="" + runat="server"> +</asp:RequiredFieldValidator><asp:ValidationSummary id="ValidationSummary1" + DisplayMode="|" + EnableClientScript="" + ShowSummary="" + ShowMessageBox="" + HeaderText="" + runat="server" /> \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/csharpscheme.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/csharpscheme.clips new file mode 100644 index 0000000..49b10f1 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/csharpscheme.clips @@ -0,0 +1,36 @@ + +/// <summary> +/// +/// </summary> +public class | +{ + +}/// <summary> +/// +/// </summary> +public void |() +{ + +}private | x; + +/// <summary> +/// Gets or sets +/// </summary> +public type X +{ + get { return this.x; } + set { this.x = value; } +}public interface I| +{ + +}if (|) +{ + +}if (|) +{ + +} +else +{ + +} \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/cstandard.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/cstandard.clips new file mode 100644 index 0000000..5607d12 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/cstandard.clips @@ -0,0 +1,89 @@ + + void main(void) + // + { + |; + } + + + void | (void) + // + { + ; + } + + return; +| if (|) {;} + if (|) + { + ; + } + + if (|) {;} else {;} + if (|) + { + ; + } + else + { + ; + } + + if (|) + { + ; + } + else if () + { + ; + } + else if () + { + ; + } + else + { + ; + } + + switch (|) + { + case (): + ; + break; + + case (): + ; + break; + + case (): + ; + break; + + default: + ; + break; + } + + for(|;;) {;} + for(|;;) + { + ; + } + + while(|) {;} + while(|) + { + ; + } + + do {;} while (|); + do + { + ; + } + while (|); + + break; +| continue; +|#define |#include "|"#include <|>/*|*///|//***| \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/docbook.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/docbook.clips new file mode 100644 index 0000000..10734cd --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/docbook.clips @@ -0,0 +1,58 @@ + + <?xml version="1.0"?> + + <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> + + <book> + <title>|</title> + <titleabbrev></titleabbrev> + + <bookinfo> + <legalnotice> + <para> + Copyright (c) Company. 2003-200, see <ulink url="http://www.myurl.com/">www.myurl.com</ulink>. + </para> + </legalnotice> + <author> + <firstname>Joe</firstname> + <surname>Bloggs</surname> + </author> + <copyright> + <year>2003</year> + <year>2004</year> + <holder>Company.</holder> + </copyright> + </bookinfo> + + <preface> + <title>Introduction</title> + <para> + Welcome to the book. + </para> + </preface> + + + <part> + <title>|</title> + <partintro> + <para> + Introduction to this part. + </para> + </partintro> + + </part> + + +<chapter> + <title>|</title> +</chapter> + + <section> + <?dbhh topicname="IDH_project_templates" topicid="13"?> + <title>Creating Project Templates</title> + + <para>This documentation is still to be written, <ulink url="mailto:ss@pnotepad.org?subject=documentation%20help">perhaps you can help?</ulink></para> + </section> + + <link linkend="|"></link><keycombo>|</keycombo><?dbhh topicname="|" topicid="number"?> \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/htmlchars.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/htmlchars.clips new file mode 100644 index 0000000..d559159 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/htmlchars.clips @@ -0,0 +1,103 @@ + + +&nbsp; +&quot; +&amp; +&lt; +&gt; +&copy; +<SUP>&reg;</SUP> +<FONT SIZE="-1"><SUP>TM</SUP></FONT> +&acute; +&laquo; +&raquo; +&iexcl; +&iquest; +&Agrave; +&agrave; +&Aacute; +&aacute; +&Acirc; +&acirc; +&Atilde; +&atilde; +&Auml; +&auml; +&Aring; +&aring; +&AElig; +&aelig; +&Ccedil; +&ccedil; +&ETH; +&eth; +&Egrave; +&egrave; +&Eacute; +&eacute; +&Ecirc; +&ecirc; +&Euml; +&euml; +&Igrave; +&igrave; +&Iacute; +&iacute; +&Icirc; +&icirc; +&Iuml; +&iuml; +&Ntilde; +&ntilde; +&Ograve; +&ograve; +&Oacute; +&oacute; +&Ocirc; +&ocirc; +&Otilde; +&otilde; +&Ouml; +&ouml; +&Oslash; +&oslash; +&Ugrave; +&ugrave; +&Uacute; +&uacute; +&Ucirc; +&ucirc; +&Uuml; +&uuml; +&Yacute; +&yacute; +&yuml; +&THORN; +&thorn; +&szlig; +&sect; +&para; +&micro; +&brvbar; +&plusmn; +&middot; +&uml; +&cedil; +&ordf; +&ordm; +&not; +&shy; +&macr; +&deg; +&sup1; +&sup2; +&sup3; +&frac14; +&frac12; +&frac34; +&times; +&divide; +&cent; +&pound; +&curren; +&yen; \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/java.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/java.clips new file mode 100644 index 0000000..d7203be --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/java.clips @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/nant.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/nant.clips new file mode 100644 index 0000000..0c6c0c6 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/nant.clips @@ -0,0 +1,56 @@ +<?xml version="1.0"?> +<project name="myproject" default="build" basedir="."> + <target name="build"> + | + </target> +</project> + + <target name="|"> + +</target> + + <call target="|"/> + + <echo message="|"/> + + <if test="|"> + +</if> + <ifnot test="|"> + +</ifnot> + + <property name="|" value="" /> + + <exec program="|" workingdir="" commandline='' /> + + <copy file="|" tofile="" /> + + <delete file="|" failonerror="false" /> + + <move file="|" tofile="" /> + + <mkdir dir="|"/> + <copy todir="|"> + <fileset basedir="."> + <include name="*.*"/> + </fileset> +</copy> + <delete> + <fileset> + <include name="|"/> + </fileset> +</delete> + <move todir="|"> + <fileset basedir="."> + <include name="*.*"/> + </fileset> +</move> + <zip zipfile="|"> + <fileset basedir="."> + <include name="**/*"/> + </fileset> +</zip> + + property::exists('|') + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/pascal.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/pascal.clips new file mode 100644 index 0000000..46ea63f --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/pascal.clips @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/phpcontrol.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/phpcontrol.clips new file mode 100644 index 0000000..4db92d5 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/phpcontrol.clips @@ -0,0 +1,52 @@ + +<?php + +| + +?> + +for ( $i = 0; $i <= |; $i++ ) { + + } + +foreach ( $array as $value ) { + | + } + +foreach ( $array as $key => $value ) { + | + } + +while ( | ) { + + } + +do { + | + } while ( expr ); + +if ( | ) { + + } +else if ( expr ) { + + } +else { + + } + +switch ($i) { + case |: + + break; + case value: + + break; + default: + +} + +require( '|' ); + +include( '|' ); + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/pl.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/pl.clips new file mode 100644 index 0000000..fd4e1d7 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/pl.clips @@ -0,0 +1,162 @@ + + + + BEGIN { + + |; + +} + + + END { + + |; + +} + + + + + + + + + unless (|) { + +} + + + SWITCH: { + if (|) { + + last SWITCH; } + if () { + + last SWITCH; } + if () { + + last SWITCH; } +} + + + for(|;;) { + +} + + + foreach $x (|) { + +} + + + while(|) { + +} + + + do { + +} while (); + + + do { + +} until (); + + + until(|) { + +} + + + + open(FILEREAD, "|/path/to/file")|| die "cannot open: $!"; + + open(FILEWRITE, ">|/path/to/file")|| die "cannot open: $!"; + + open(FILEAPPEND, ">>|/path/to/file")|| die "cannot open: $!"; + + ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev, + $size,$atime,$mtime,$ctime,$blksize,$blocks) = stat ("|/path/to/file"); + + + use |; + #!/usr/bin/perl + +| + + #!/usr/bin/perl -w + +| + + =head1 NAME + +|#TODO Insert name of script + +=head1 SYNOPSIS + +#TODO Overview of script + +=head1 DESCRIPTION + +#TODO Write detailed description of script + +=head1 AUTHOR + +#TODO Insert author name + +=head1 REVISION HISTORY + + + +=cut + + + + + + + + + + + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/pythonscheme.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/pythonscheme.clips new file mode 100644 index 0000000..a8440e2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/pythonscheme.clips @@ -0,0 +1,18 @@ + +class |:def |():for x in xrange(|):############################################################################### +## Script description +## By: your name here + +import pn +import scintilla +from pypn.decorators import script + +@script() +def |(): + """ What this does """ + pass@script() +def |(): + """ What this does """ + passeditor = scintilla.Scintilla(pn.CurrentDoc())editor.BeginUndoAction() +| +editor.EndUndoAction()editor.GetText(editor.SelectionStart, editor.SelectionEnd) \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/vb.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/vb.clips new file mode 100644 index 0000000..1ee1a4e --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/vb.clips @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/winavr.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/winavr.clips new file mode 100644 index 0000000..7b74082 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/winavr.clips @@ -0,0 +1,44 @@ + + + + + +static void avr_init(void); + + +int main(void) +{ + avr_init(); + + for(;;) + { + // Tasks here. + + } + + return(0); +} + + + +static void avr_init(void) +{ + // Initialize device here. + | + + return; +} + + ]]> + + + + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/xhtml.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/xhtml.clips new file mode 100644 index 0000000..281bbf3 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/xhtml.clips @@ -0,0 +1,23 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">|<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">|<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">|<a href="|" target=""></a><area shape="" coords="" href="|" alt="" /><abbr>|</abbr><acronym>|</acronym><address>|</address><base href="|" /><bdo dir="ltr">|</bdo><blockquote>|</blockquote><body> +| +</body><br />|<button onclick="|" /><caption>|</caption><cite title="">|</cite><code>|</code><col /><colgroup>|</colgroup><del>|</del><dd>|</dd><dfn>|</dfn><div>|</div><dl>|</dl><dt>|</dt><em>|</em><form action="|" method="post"></form><fieldset>|</fieldset><h1>|</h1><h2>|</h2><h3>|</h3><h4>|</h4><h5>|</h5><h6>|</h6><head> +| +</head><html> +| +</html><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +| +</html><hr /><input type="button" name="|" /><input type="checkbox" name="|" /><input type="file" name="|" /><input type="hidden" name="|" /><input type="image" name="|" /><input type="password" name="|" /><input type="radio" name="|" /><input type="reset" name="|" /><input type="submit" name="|" /><input type="text" name="|" /><img src="|" width="" height="" title="" alt="" /><ins>|</ins><kbd>|</kbd><label>|</label><legend>|</legend><li>|</li><link href="|" rel="" type="" title="" /><link rel="stylesheet" type="text/css" media="screen" href="|" /><map name="" id="|"></map><meta name="|" content="" /><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><noscript>|</noscript><object classid="|"></object><ol>|</ol><optgroup>|</optgroup><option>|</option><p>|</p><param name="" value="">|</param><pre>|</pre><q>|</q><samp>|</samp><script type="text/javascript"> +<!-- +| +//--> +</script><script type="text/javascript" src="|"></script><select name=""> +| +</select><span>|</span><strong>|</strong><style type="text/css"> +<!-- +| +//--> +</style><style type="text/css"> +<!-- + @import "|"; +//--> +</style><table>|</table><tbody>|</tbody><td>|</td><textarea name="" rows="" cols="">|</textarea><tfoot>|</tfoot><th>|</th><thead>|</thead><tr>|</tr><title>|</title><tt>|</tt><ul>|</ul> \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/clips/xmlscheme.clips b/arduino-0018-windows/hardware/tools/avr/pn/clips/xmlscheme.clips new file mode 100644 index 0000000..49c8644 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/clips/xmlscheme.clips @@ -0,0 +1 @@ +<?xml version="1.0" encoding="utf-8"?><!--|--> \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/config.xml b/arduino-0018-windows/hardware/tools/avr/pn/config.xml new file mode 100644 index 0000000..aee32c2 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/config.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/credits.txt b/arduino-0018-windows/hardware/tools/avr/pn/credits.txt new file mode 100644 index 0000000..80b4f01 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/credits.txt @@ -0,0 +1,50 @@ +Author: +------- +Simon Steele + +Code Contributors: +------------------ +Bjoern Graf +Klaus Kurzawa +Mike Ditum +Vassili Bourdo +Oleg Gerasimov +Vambola Kotkas +Manuel Sandoval +James Yoneda +Prafulla Tekawade +Murphy McCauley + +Documentation: +-------------- +F. Mark Schiavone + +Libraries: +---------- +Daniel Bowen (Tabbing Framework) +Sergey Klimov (Docking Framework) +Philip Hazel (PCRE) +Neil Hodgson + Community (Scintilla) + +Artwork: +-------- +Some icons from the famfamfam.com Silk icons set (http://www.famfamfam.com/lab/icons/silk/). + +Schemes: +-------- +Steve Baer (Modula-2) + +Testers: +-------- +Robert Scarborough +Adam Scheinberg +Darren Schroeder +Eric Weddington +David Symons +John Hawkins +Richard Mansfield +Jim Brooks +Harold Krueger VI +Sam Collett +Will McCutchen +Tadas Vizbaras \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/ctags.exe b/arduino-0018-windows/hardware/tools/avr/pn/ctags.exe new file mode 100644 index 0000000..9d79cfe Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/ctags.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/ctags_COPYING b/arduino-0018-windows/hardware/tools/avr/pn/ctags_COPYING new file mode 100644 index 0000000..f89b4fa --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/ctags_COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/arduino-0018-windows/hardware/tools/avr/pn/ctags_README b/arduino-0018-windows/hardware/tools/avr/pn/ctags_README new file mode 100644 index 0000000..eae1399 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/ctags_README @@ -0,0 +1,73 @@ +Exuberant Ctags +=============== +Author: Darren Hiebert + http://ctags.sourceforge.net + Instant Messaging: + Yahoo! ID : dbhiebert + AIM ScreenName: darrenhiebert + +Exuberant Ctags is a multilanguage reimplementation of the much-underused +ctags(1) program and is intended to be the mother of all ctags programs. It +generates indexes of source code definitions which are used by a number of +editors and tools. The motivation which drove the development of Exuberant +Ctags was the need for a ctags program which supported generation of tags +for all possible C language constructs (which no other ctags offers), and +because most were easily fooled by a number of preprocessor contructs. + + +Exuberant Ctags offers the following features: + +1. It supports the following languages: Assembler, AWK, ASP, BETA, + Bourne/Korn/Z Shell, C, C++, C#, COBOL, Eiffel, Erlang, Fortran, Java, Lisp, + Lua, Makefile, Pascal, Perl, PHP, PL/SQL, Python, REXX, Ruby, Scheme, + S-Lang, SML (Standard ML), Tcl, Vera, Verilog, Vim, and YACC. + +2. It is capable of generating tags for virtually all C language constructs. + +3. It is very robust in parsing code. In particular, the C/C++ parser is + far less easily fooled by code containing #if preprocessor conditional + constructs, using a conditional path selection algorithm to resolve + complicated situations, and a fall-back algorithm when this one fails. + +4. Supports output of Emacs-style TAGS files (i.e. "etags"). + +5. User-defined languages, using Posix regular expressions. + +6. Supports UNIX, MSDOS, Windows 95/98/NT/2000/XP, OS/2, QNX, Amiga, QDOS, + RISC OS, VMS, Macintosh, and Cray. Some pre-compiled binaries are + available on the web site. + + +Visit the Exuberant Ctags web site: + + http://ctags.sourceforge.net + + +Which brings us to the most obvious question: + + Q: Why is it called "Exuberant" ctags? + A: Because one of the meanings of the word is: + + exuberant : produced in extreme abundance : PLENTIFUL syn see PROFUSE + +Compare the tag file produced by Exuberant Ctags with that produced by any +other ctags and you will see how appropriate the name is. + + +This source code is distributed according to the terms of the GNU General +Public License. It is provided on an as-is basis and no responsibility is +accepted for its failure to perform as expected. It is worth at least as +much as you paid for it! + +Exuberant Ctags was originally derived from and inspired by the ctags +program by Steve Kirkendall (kirkenda@cs.pdx.edu) that comes with the Elvis +vi clone (though almost none of the original code remains). This, too, is +freely available. + +Please report any problems you find. The two problems I expect to be most +likely are either a tag which you expected but is missing, or a tag created +in error (shouldn't really be a tag). Please include a sample of code (the +definition) for the object which misbehaves. + +-- +vim:tw=76:sw=4:et: diff --git a/arduino-0018-windows/hardware/tools/avr/pn/dbghelp.dll b/arduino-0018-windows/hardware/tools/avr/pn/dbghelp.dll new file mode 100644 index 0000000..ac6f75f Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/dbghelp.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/help/pn2.chm b/arduino-0018-windows/hardware/tools/avr/pn/help/pn2.chm new file mode 100644 index 0000000..51f670e Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/help/pn2.chm differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/history.txt b/arduino-0018-windows/hardware/tools/avr/pn/history.txt new file mode 100644 index 0000000..2919566 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/history.txt @@ -0,0 +1,367 @@ +======================================== +Release Name: 2.0.6.0 +Build: 2.0.6.0, Version Label: ella +======================================== + +What's new? +----------- + +1) Project Properties +2) Editable Magic Folder Properties +3) Ctrl+H for Replace. +4) Right-Click on a file to add to a project. +5) Selected text insertion into find dialog is more selective (no pun intended). +6) Project changed indicator (appends * to name). +7) Project tools. +8) Tab usage option per scheme (SF RFE #1050938). +9) Stack Based Ctrl-Tab Ordering (SF RFE #995790). +10) Browse for folder in find in files dialog. +11) Support for vbc compiler output (SF Bug #1168477). +12) Docbook Scheme +13) Scintilla version 1.6.6 +14) CSS-2 Support in CSS lexer +15) Projects remember folder expansion state. +16) Added Ctrl-W to close the current file (as well as Ctrl-F4) (SF RFE #1169428). +17) New Project dialog. +18) Save project from context menu. +19) Refresh magic folder from context menu. +20) Ctrl+[ jumps to matching or nearest brace. +21) Ruby scheme +22) Better behaviour with files opened using relative paths. +23) Wrap text clips around selected text (SF RFE #1199676). +24) Escape key closes find results if no output windows are open. +25) Optionally save workspace between runs ("Remember open files and projects between sessions" in General options). +26) Open to save workspace files from File menu, opening a .pnws file opens the saved workspace. +27) SmartStart applied to opened files. +28) New Incremental FindBar (Press Ctrl+/ and start typing, escape to cancel). +29) Customisable scheme mappings (choose schemes for file types - Options|Files). +30) Find Previous - Shift+F3 +31) Support for Java properties files (SF RFE #1267017). +32) Find in Files can ignore hidden files. +33) Remember Selected Text Clips Set (SF RFE #1279158). +34) Press Enter to insert a text clip (SF RFE #1259865). +35) Show textclips in tool tip text (SF RFE #1116510). +36) Add Assembly Scheme (SF RFE #1290453). +37) No more default comic sans for comments in web schemes! +38) Support Ctrl+Shift+[X|V] for VNC cut-paste with caps lock support, Ctrl+Shift+C already taken for clipboard swap. + +Bug Fixes: +---------- + +1) Find in Files gets selected text. +2) Find in selection fixed. +3) Find Next and Replace One no longer supported in "in selection" mode. +4) Find Next replaces selection in find text box when text not found. +5) Switching tabs causes "re-maximization" (SF Bug #1169434). +6) Launch Search Dialog With No Document (SF Bug #1168100). +7) "Allow backslash expressions" does not work in search. +8) Crash on Running Find in Files With Operation in Progress (SF Bug #1168101). +9) code-folding works not correct (SF Bug #1050483). +10) HTML export uses wrong CSS syntax (SF Bug #1074120). +11) Normal Search does not work with UTF-8 (Unicode) chars > 127 (SF Bug #1200456). +12) Relative paths don't work from command-line with single-instance PN (SF Bug #1161783). +13) Window Dimensions After Un-Maximizing (SF Bug #1167299). +14) File -> New Broken (SF Bug #1221755). +15) Don't exit if save is cancelled for a previously unsaved item. +16) Selecting the XML lexer after another does not correctly style. +17) No code-folding for XML (SF Bug #1212335). +18) Keyword customisation causes hang (SF Bug #1209962). +19) Delete Line same as Cut Line (SF Bug #1234653). +20) "Search Up" box not visible for replace. +21) Bad coloring in Text Clips combo box with non-white window colors (SF Bug #1065666). +22) Tried to open a file twice when that file was not found. +23) VHDL Syntax file inclusion (SF Bug #1165830). +24) Crash when adding a project tool (SF Bug #1195786). +25) Show Lines Numbers" setting does not affect open files (SF Bug #1212355). +26) Toggling syntax highlighting looses word wrap (SF Bug #1151704). +27) Undo/Redo in folded area does not unfold (SF Bug #1286210). +28) PN2 is confused by relative path names (SF Bug #1232939). +29) Docking windows resize to tiny (SF Bug #1018105). +30) Sub-windows initialization issue (SF Bug #1065665). +31) Fixed a bug with default styles and the Plain Text scheme. + +======================================== +Release Name: 2.0.5.6 +Build: 2.0.5.34, Version Label: +======================================== + +What's new? +----------- + +1) Document Properties Window (hit alt-enter). +2) Editor Defaults options page. +3) Default word-wrap option. +4) Most Recently Used Projects menu. +5) HTML export now names the styles by scheme, allowing you to easily + combine exported code. +6) Look in projects for relative file names in the output window. +7) Look in the current directory for relative file names in the output window. +8) Added current project path to the tool variables. +9) New (fairly empty) confirmations options page. +10) Drag files from explorer onto the projects window. +11) Upgraded to Scintilla 1.60 +12) Project files now written using Genx. +13) Project files keep most unknown XML elements between load and save. +14) Added Duplicate, Copy, Cut and Transpose Line commands. +15) Added Uppercase/Lowercase +16) Bjoern Graf tidied the Options dialog plus some others. +17) Keyboard works in the projects tree (inc. "del" to remove project files). +18) Added error parsing for microsoft error messages. +19) Middle-click mouse on the document tab to close a document. +20) Allow specification of default character set (includes Shift-JIS and UTF-8). +21) Optimised file loading - significantly reduces load time for large files. +22) Drag and drop in the projects window. +23) Folders in project window now remain above files. +24) Drag to re-arrange tabs. +25) Optional new, empty file on startup. +26) Magic Folders in projects - folders that reflect real directory contents. +27) Now open the "open file" dialog in the same directory as the current file. +28) Now shows tool keyboard shortcuts on the tools menu. +19) File association editor. + +Bug Fixes: +---------- + +1) Empty search on google causes crash (SF Bug #870649). +2) Change line endings in Save-As dialog doesn't work (SF Bug #885586). +3) Tools run without capture don't show (SF Bug #896269). +4) Conflict in shortcut assignment (SF Bug #891208). +5) Crash if mouse over 'Recent Files'->(empty) (SF Bug #900929). +6) PN doesn't become active after clicking Output window (SF Bug #760362). +7) HTML export doubles the '&' (SF Bug #899079). +8) HTML export leaves open the last span tag (SF Bug #904149). +9) Fixed HTML export to use full style range (previously stopped at 31). +10) Dropped files always open new windows (SF Bug #873386). +11) Deal with all URL encoded chars in output window, not just %20. +12) Projects window renames too readily. +13) Auto-indent empty line (SF Bug #879950). +14) Can't export a file that isn't saved to disk (SF Bug #911381). +15) Can't bring up project context menus with the keyboard. +16) Changing full path option doesn't affect open files (SF Bug #871628). +17) Update status bar when last file closed (SF Bug #514527). +18) Highlight colors in scheme wrong when choosing defaults (SF Bug #909343). +19) PN loses focus on closing search dialogs (SF Bug #939917). +20) Duplicate brace match colour settings (SF Bug #951146). +21) Esc doesn't close the refresh dialog (SF Bug #939931). +22) Pseudo misspelt in CSS scheme (SF Bug #969586). +23) Regular Expression replace (SF Bug #957788). +24) Global keyboard shortcuts don't work (SF Bug #960000). +25) Fixed file associations case comparison. +26) Text clips line endings (SF Bug #995845). +27) Crash after options dialog (SF Bug #995786). +28) Crash when search string is empty (SF Bug #995783). +29) Fixed infinite loop when working with magic folders containing ".files". +30) Fixed word-wrap default preference. +31) Fixed a problem with checking for updated files with a captured cursor. +32) Fixed a magic folder problem with relative paths. + +======================================== +Release Name: 2.0.5.0 +Build: 2.0.5.18, Version Label: mingus +======================================== + +What's new? +----------- + +1) Scheme-selector toolbar. +2) Find toolbar. +3) Many find improvements (thanks mostly to Bjoern Graf). +4) Tile Vertical / Tile Horizontal. +5) Show path of file to be executed (SF Feature #765270). +6) Visual Help options (highlight current line, long line help). +7) Sanitise file names from output window to better find files. +8) Text clips browser. +9) Projects/Project Groups. +10) Change MRU text length. (SF Feature #760660) +11) Keyboard-shortcuts for Tools. +12) More editor colouring options. +13) Statusbar text on mouse-over MRU items. +14) (X)HTML Export. +15) Added Modula-2 Scheme. +16) Pre-defined toolsets can now be added in the %pn%\tools directory. +17) Updates to the tab and docking frameworks. +18) Added encoding menu. +19) Configurable alternate file switching (use Ctrl-Shift-H to switch). + +Bug Fixes: +---------- + +1) Show Full Path turns off after a revert. (SF Bug #773608) +2) Stop Tools doesn't work. (SF Bug #773294) +3) If you don't update a file when it's changed on disk it is marked as changed. +4) Maximized window state not saved. (SF Bug #770302) +5) Mixed path styles now sanitised in output window. (SF Bug #797397) +6) File opened from the wrong directory from output window. (SF Bug #806343) +7) No way to find out what file you're working on. (SF Bug #783786) +8) NT4 recent files menu disappears. (SF Bug #780828) +9) Edit SmartStart Phrase Dialog no scheme list. (SF Bug #771661) +10) WindowState is not save when close. (SF Bug #770302) +11) Unable to define a shortcut for a custom tool. (SF Bug #753458) +12) Collapse all folds menu item fixed. +13) Italic font customisations not picked up. (SF Bug #834967) +14) Save All only saves unchanged files. (SF Bug #827998) +15) Fixed view->toolbars menu. Now represents correct startup state. +16) Files read as unicode now saved as unicode. +17) Tool Modifies File w/o Capture Output. (SF Bug #799763) +18) Tool Modifies File causes refresh oddness. (SF Bug #800331) +19) Regular Expression loop. (SF Bug #793002) +20) Close when minimized bug. (SF Bug #849572) + + +======================================== +Release Name: 2.0.4.2 +Build: 2.0.4.18, Version Label: (none) +======================================== + +What's new? +----------- + +1) Re-organised general options page to clarify. +2) Show full path in title bar option. +3) Save none / one / all files on running a tool. + +Bug Fixes: +---------- + +1) Global output window not toggled properly by running a tool. +2) SF Bug #763393 - files opened at startup do not get tabs. + +======================================== +Release Name: 2.0.4.1 +Build: 2.0.4.14, Version Label: (none) +======================================== + +Bug Fixes: +---------- + +1) Global output window flickers when text is added (SF Bugs #760349 and #752839). +2) Tool editor dialog output window selector combo fixed (SF Bug #752826). +3) Line Number display related corruption fixed (SF Bugs #752847 and #753457). +4) Minor UI bug in tool editor (SF Bug #760347). +5) Tools order up button doesn't work correctly (SF Bugs #752831 and #752834). +6) click error in output window and PN2 always opens file (SF Bug #760351). + +What's new? +----------- + +1) Select All menu item to show availability (SF RFE #754417). +2) Folding keyboard shortcuts shown in menu (SF Bug #760346). + +======================================== +Release Name: 2.0.4-miles +Build: 2.0.4.14, Version Label: miles +======================================== + +What's new? +----------- + +1) Groups of scheme settings can now be configured using their style group head item. + +example: To change the background for all PHP styles, simply change the background +on the main PHP item that contains the styles below it. This will not override any +custom backgrounds already set on those items - those will need to be reset. + +2) User-Schemes + +Define your own schemes using simple XML - can support a large number of languages. +See the included vhdl.schemedef sample. There will be documentation for this soon. + +3) Tool output parsing for a number of built-in types. +4) Output parsing for user-defined output strings. +5) Matched output jumps to the correct position in the correct file when clicked. +6) Tool editor dialog re-designed (a bit) +7) Docking global output window. +8) Clipboard Swap (Ctrl-Shift-C) + +paste clipboard into selection and place selection on the clipboard. + +9) Options dialog more keyboard accessible. +10) Maximise on opening. +11) PN remembers its window positioning between loads. +12) Perl scheme. +13) Better pascal scheme. +14) Folding keyboard shortcuts: + +Ctrl-Alt-+ Expand All, Ctrl-Alt-- Collapse All, Ctrl+* toggle current fold block + +15) Copy as RTF and export RTF. + +16-ish) A Modula-2 scheme will be released separately in a week or two. Some code changes were made to Scintilla for this. + +======================================== +Release Name: 2.0.3-coltrane +Build: 2.0.3.30, Version Label: coltrane +======================================== + +Breaking Change Notices: +------------------------ +User configuration files have moved from: +%usersettings%\Echo Software\Programmers Notepad\Schemes\ +to: +%usersettings%\Echo Software\PN2\ + +this will lose any scheme colouring changes you have made. +You can simply move all files from the previous version into +the new correct location to fix this. Sorry for any +inconvenience... + +What's new? +----------- + +1) Configurable scheme keywords. +2) Now opens filenames from the command-line (or explorer associations). +3) Tools functionality. Configure from Options->Tools. +4) CSS Scheme now works. +5) Colourised output capturing in tools (configurable in Options->Schemes). +6) C#, JavaScript, Batch, Diff and makefile schemes. +7) Double-click on MDI area to open file. +8) General options page - default editor options. + +====================================== +Release Name: 2.0.2-simba +Build: 2.0.2.27, Version Label: simba +====================================== + +This is the second release of Programmers Notepad 2. + +What's new? +----------- + +1) Options dialog. +2) Printing support. +3) Less bugs. +4) Configurable schemes (through options dialog). +5) Python Scheme + +Printing note: This feature is experimental, and we have experienced the odd problem after printing. Please experiment and let us know how you get on. + +======================================= +Release Name: 2.0.1-poptart +Build: 2.0.1.32, Version Label: poptart +======================================= + +This is the first release of Programmers Notepad 2. Obviously there are a limited number of features at the moment. + +Please don't moan about the following, they are all quite obvious to us already: + +1) No options dialog. +2) Missing schemes from pn1. +3) No options dialog (incase you missed it above). +4) No project management. +5) No tools. +6) No printing. +7) Toolbars aren't dockable. +8) You can't turn the tabs off. + +So what is good? + +1) New editing engine (The excellent Scintilla: http://www.scintilla.org/). +2) Now written in C++ using the Windows Template Library. +3) Fast. Really Fast - compare opening times for large files with PN1. +4) Two (count-em!) toolbars. Obviously this sort of stuff will get better as time goes on. +5) Lovely XP-Style tabs. +6) Save-As dialog contains a "File Format" feature. +7) Support for C++, HTML, XML and Object Pascal. More schemes coming soon. +8) Highly configurable XML backend for scheme configuration, config dialog coming to a release near you soon. +9) The minibar from pn1 is here (see at the bottom of the edit windows). +10) Scoping / Folding / Outlining (Open a C++ or Pascal file to see this, it's lovely). diff --git a/arduino-0018-windows/hardware/tools/avr/pn/libexpat.dll b/arduino-0018-windows/hardware/tools/avr/pn/libexpat.dll new file mode 100644 index 0000000..7e819d0 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/libexpat.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/license.html b/arduino-0018-windows/hardware/tools/avr/pn/license.html new file mode 100644 index 0000000..e83599c --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/license.html @@ -0,0 +1,25 @@ + + + +Programmers Notepad License + + + +Programmer's Notepad 2 is Copyright © 2002-2008 Simon Steele
All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of Simon Steele nor the names of any other contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/arduino-0018-windows/hardware/tools/avr/pn/license.txt b/arduino-0018-windows/hardware/tools/avr/pn/license.txt new file mode 100644 index 0000000..1814488 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/license.txt @@ -0,0 +1,10 @@ +Programmer's Notepad 2 is Copyright (c) 2002-2008 Simon Steele +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +3. Neither the name of Simon Steele nor the names of any other contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/pcre-license.txt b/arduino-0018-windows/hardware/tools/avr/pn/pcre-license.txt new file mode 100644 index 0000000..8d68061 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/pcre-license.txt @@ -0,0 +1,54 @@ +PCRE LICENCE +------------ + +PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + +Written by: Philip Hazel + +University of Cambridge Computing Service, +Cambridge, England. Phone: +44 1223 334714. + +Copyright (c) 1997-2001 University of Cambridge + +Permission is granted to anyone to use this software for any purpose on any +computer system, and to redistribute it freely, subject to the following +restrictions: + +1. This software is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. In practice, this means that if you use + PCRE in software that you distribute to others, commercially or + otherwise, you must put a sentence like this + + Regular expression support is provided by the PCRE library package, + which is open source software, written by Philip Hazel, and copyright + by the University of Cambridge, England. + + somewhere reasonably visible in your documentation and in any relevant + files or online help data or similar. A reference to the ftp site for + the source, that is, to + + ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ + + should also be given in the documentation. However, this condition is not + intended to apply to whole chains of software. If package A includes PCRE, + it must acknowledge it, but if package B is software that includes package + A, the condition is not imposed on package B (unless it uses PCRE + independently). + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. + +4. If PCRE is embedded in any software that is released under the GNU + General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL), + then the terms of that licence shall supersede any condition above with + which it is incompatible. + +The documentation for PCRE, supplied in the "doc" directory, is distributed +under the same terms as the software itself. + +End diff --git a/arduino-0018-windows/hardware/tools/avr/pn/pn.exe b/arduino-0018-windows/hardware/tools/avr/pn/pn.exe new file mode 100644 index 0000000..4aa784c Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/pn.exe differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/pnse.dll b/arduino-0018-windows/hardware/tools/avr/pn/pnse.dll new file mode 100644 index 0000000..a0d2f86 Binary files /dev/null and b/arduino-0018-windows/hardware/tools/avr/pn/pnse.dll differ diff --git a/arduino-0018-windows/hardware/tools/avr/pn/presets/Dark.xml b/arduino-0018-windows/hardware/tools/avr/pn/presets/Dark.xml new file mode 100644 index 0000000..e4454cb --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/presets/Dark.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/presets/Default.xml b/arduino-0018-windows/hardware/tools/avr/pn/presets/Default.xml new file mode 100644 index 0000000..55c9232 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/presets/Default.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/arduino-0018-windows/hardware/tools/avr/pn/schemes/WebFiles.scheme b/arduino-0018-windows/hardware/tools/avr/pn/schemes/WebFiles.scheme new file mode 100644 index 0000000..76fd0f9 --- /dev/null +++ b/arduino-0018-windows/hardware/tools/avr/pn/schemes/WebFiles.scheme @@ -0,0 +1,368 @@ + + + + + + + + + + + + + + a abbr acronym address applet area b base basefont + bdo big blockquote body br button caption center + cite code col colgroup dd del dfn dir div dl dt em + fieldset font form frame frameset h1 h2 h3 h4 h5 h6 + head hr html i iframe img input ins isindex kbd label + legend li link map menu meta noframes noscript + object ol optgroup option p param pre q s samp + script select small span strike strong style sub sup + table tbody td textarea tfoot th thead title tr tt u ul + var xml xmlns + + + abbr accept-charset accept accesskey action align alink + alt archive axis background bgcolor border + cellpadding cellspacing char charoff charset checked cite + class classid clear codebase codetype color cols colspan + compact content coords + data datafld dataformatas datapagesize datasrc datetime + declare defer dir disabled enctype event + face for frame frameborder + headers height href hreflang hspace http-equiv + id ismap label lang language leftmargin link longdesc + marginwidth marginheight maxlength media method multiple + name nohref noresize noshade nowrap + object onblur onchange onclick ondblclick onfocus + onkeydown onkeypress onkeyup onload onmousedown + onmousemove onmouseover onmouseout onmouseup + onreset onselect onsubmit onunload + profile prompt readonly rel rev rows rowspan rules + scheme scope selected shape size span src standby start style + summary tabindex target text title topmargin type usemap + valign value valuetype version vlink vspace width + text password checkbox radio submit reset + file hidden image + + + + + public !doctype + + + ELEMENT DOCTYPE ATTLIST ENTITY NOTATION + + + and argv as argc break case cfunction class continue declare default do + die echo else elseif empty enddeclare endfor endforeach endif endswitch + endwhile e_all e_parse e_error e_warning eval exit extends false for + foreach function global http_cookie_vars http_get_vars http_post_vars + http_post_files http_env_vars http_server_vars if include include_once + list new not null old_function or parent php_os php_self php_version + print require require_once return static switch stdclass this true var + xor virtual while __file__ __line__ __sleep __wakeup + + + font-family font-style font-variant font-weight font-size font + color background-color background-image background-repeat background-attachment background-position background + word-spacing letter-spacing text-decoration vertical-align text-transform text-align text-indent line-height + margin-top margin-right margin-bottom margin-left margin + padding-top padding-right padding-bottom padding-left padding + border-top-width border-right-width border-bottom-width border-left-width border-width + border-top border-right border-bottom border-left border + border-color border-style width height float clear + display white-space list-style-type list-style-image list-style-position list-style + + + auto none normal italic oblique small-caps bold bolder lighter + xx-small x-small small medium large x-large xx-large larger smaller + transparent repeat repeat-x repeat-y no-repeat scroll fixed + top bottom left center right justify both + underline overline line-through blink + baseline sub super text-top middle text-bottom + capitalize uppercase lowercase thin medium thick + dotted dashed solid double groove ridge inset outset + block inline list-item pre no-wrap inside outside + disc circle square decimal lower-roman upper-roman lower-alpha upper-alpha + aqua black blue fuchsia gray green lime maroon navy olive purple red silver teal white yellow + + + first-letter first-line link active visited first-child focus hover lang before after left right first + + + border-top-color border-right-color border-bottom-color border-left-color border-color + border-top-style border-right-style border-bottom-style border-left-style border-style + top right bottom left position z-index direction unicode-bidi + min-width max-width min-height max-height overflow clip visibility content quotes + counter-reset counter-increment marker-offset + size marks page-break-before page-break-after page-break-inside page orphans widows + font-stretch font-size-adjust unicode-range units-per-em src + panose-1 stemv stemh slope cap-height x-height ascent descent widths bbox definition-src + baseline centerline mathline topline text-shadow + caption-side table-layout border-collapse border-spacing empty-cells speak-header + cursor outline outline-width outline-style outline-color + volume speak pause-before pause-after pause cue-before cue-after cue + play-during azimuth elevation speech-rate voice-family pitch pitch-range stress richness + speak-punctuation speak-numeral + + + inherit + run-in compact marker table inline-table table-row-group table-header-group table-footer-group + table-row table-column-group table-column table-cell table-caption + static relative absolute fixed ltr rtl embed bidi-override + visible hidden scroll collapse open-quote close-quote no-open-quote no-close-quote + decimal-leading-zero lower-greek lower-latin upper-latin hebrew armenian georgian + cjk-ideographic hiragana katakana hiragana-iroha katakana-iroha + landscape portrait crop cross always avoid + wider narrower ultra-condensed extra-condensed condensed semi-condensed + semi-expanded expanded extra-expanded ultra-expanded + caption icon menu message-box small-caption status-bar + separate show hide once crosshair default pointer move text wait help + e-resize ne-resize nw-resize n-resize se-resize sw-resize s-resize w-resize + ActiveBorder ActiveCaption AppWorkspace Background ButtonFace ButtonHighlight ButtonShadow + InactiveCaptionText ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder + InactiveCaption InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow + ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText + silent x-soft soft medium loud x-loud spell-out mix + left-side far-left center-left center-right far-right right-side behind leftwards rightwards + below level above higher lower x-slow slow medium fast x-fast faster slower + male female child x-low low high x-high code digits continous + + + + + + + + + + + + + + + + + +